]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'buildman' of git://git.denx.de/u-boot-x86
authorTom Rini <trini@ti.com>
Wed, 14 Jan 2015 16:00:38 +0000 (11:00 -0500)
committerTom Rini <trini@ti.com>
Wed, 14 Jan 2015 16:00:38 +0000 (11:00 -0500)
Conflicts:
tools/buildman/control.py

Signed-off-by: Tom Rini <trini@ti.com>
2445 files changed:
CREDITS [deleted file]
Kconfig
MAINTAINERS
MAKEALL
Makefile
README
arch/arc/Makefile [new file with mode: 0644]
arch/arm/Kconfig
arch/arm/Kconfig.debug [new file with mode: 0644]
arch/arm/Makefile [new file with mode: 0644]
arch/arm/config.mk
arch/arm/cpu/arm1136/Makefile
arch/arm/cpu/arm1176/Makefile
arch/arm/cpu/arm1176/tnetv107x/clock.c
arch/arm/cpu/arm720t/Makefile
arch/arm/cpu/arm920t/Makefile
arch/arm/cpu/arm926ejs/Makefile
arch/arm/cpu/arm926ejs/at91/at91sam9260_devices.c
arch/arm/cpu/arm926ejs/at91/clock.c
arch/arm/cpu/arm926ejs/cache.c
arch/arm/cpu/arm926ejs/mx25/Makefile
arch/arm/cpu/arm926ejs/mx25/generic.c
arch/arm/cpu/arm926ejs/mx25/relocate.S [new file with mode: 0644]
arch/arm/cpu/arm926ejs/mx27/Makefile
arch/arm/cpu/arm926ejs/mx27/relocate.S [new file with mode: 0644]
arch/arm/cpu/arm926ejs/mxs/mxs.c
arch/arm/cpu/arm926ejs/mxs/mxsimage-signed.cfg
arch/arm/cpu/arm926ejs/mxs/mxsimage.mx23.cfg
arch/arm/cpu/arm926ejs/mxs/mxsimage.mx28.cfg
arch/arm/cpu/arm926ejs/mxs/spl_boot.c
arch/arm/cpu/arm926ejs/mxs/spl_power_init.c
arch/arm/cpu/arm926ejs/mxs/timer.c
arch/arm/cpu/arm_intcm/Makefile [deleted file]
arch/arm/cpu/arm_intcm/config.mk [deleted file]
arch/arm/cpu/arm_intcm/cpu.c [deleted file]
arch/arm/cpu/arm_intcm/start.S [deleted file]
arch/arm/cpu/armv7/Kconfig [new file with mode: 0644]
arch/arm/cpu/armv7/Makefile
arch/arm/cpu/armv7/am33xx/board.c
arch/arm/cpu/armv7/am33xx/sys_info.c
arch/arm/cpu/armv7/at91/Makefile
arch/arm/cpu/armv7/at91/clock.c
arch/arm/cpu/armv7/at91/config.mk
arch/arm/cpu/armv7/at91/sama5d4_devices.c [new file with mode: 0644]
arch/arm/cpu/armv7/at91/timer.c
arch/arm/cpu/armv7/bcm281xx/Makefile
arch/arm/cpu/armv7/bcm281xx/clk-bcm281xx.c
arch/arm/cpu/armv7/bcm281xx/clk-core.h
arch/arm/cpu/armv7/bcm281xx/clk-usb-otg.c [new file with mode: 0644]
arch/arm/cpu/armv7/cache_v7.c
arch/arm/cpu/armv7/exynos/Kconfig
arch/arm/cpu/armv7/exynos/clock.c
arch/arm/cpu/armv7/exynos/clock_init_exynos5.c
arch/arm/cpu/armv7/exynos/dmc_init_ddr3.c
arch/arm/cpu/armv7/exynos/pinmux.c
arch/arm/cpu/armv7/exynos/power.c
arch/arm/cpu/armv7/exynos/spl_boot.c
arch/arm/cpu/armv7/keystone/init.c
arch/arm/cpu/armv7/kona-common/clk-stubs.c
arch/arm/cpu/armv7/ls102xa/Makefile
arch/arm/cpu/armv7/ls102xa/cpu.c
arch/arm/cpu/armv7/ls102xa/fdt.c
arch/arm/cpu/armv7/ls102xa/fsl_epu.c [new file with mode: 0644]
arch/arm/cpu/armv7/ls102xa/fsl_epu.h [new file with mode: 0644]
arch/arm/cpu/armv7/ls102xa/spl.c [new file with mode: 0644]
arch/arm/cpu/armv7/mx5/soc.c
arch/arm/cpu/armv7/mx6/clock.c
arch/arm/cpu/armv7/mx6/soc.c
arch/arm/cpu/armv7/nonsec_virt.S
arch/arm/cpu/armv7/omap-common/abb.c
arch/arm/cpu/armv7/omap-common/boot-common.c
arch/arm/cpu/armv7/omap-common/emif-common.c
arch/arm/cpu/armv7/omap-common/sata.c
arch/arm/cpu/armv7/omap-common/timer.c
arch/arm/cpu/armv7/omap3/Kconfig
arch/arm/cpu/armv7/omap4/sdram_elpida.c
arch/arm/cpu/armv7/omap5/Kconfig
arch/arm/cpu/armv7/omap5/hw_data.c
arch/arm/cpu/armv7/omap5/prcm-regs.c
arch/arm/cpu/armv7/omap5/sdram.c
arch/arm/cpu/armv7/rmobile/Kconfig
arch/arm/cpu/armv7/rmobile/Makefile
arch/arm/cpu/armv7/rmobile/cpu_info.c
arch/arm/cpu/armv7/rmobile/lowlevel_init_ca15.S
arch/arm/cpu/armv7/rmobile/pfc-r8a7793.c [new file with mode: 0644]
arch/arm/cpu/armv7/socfpga/clock_manager.c
arch/arm/cpu/armv7/socfpga/freeze_controller.c
arch/arm/cpu/armv7/socfpga/lowlevel_init.S
arch/arm/cpu/armv7/socfpga/misc.c
arch/arm/cpu/armv7/socfpga/reset_manager.c
arch/arm/cpu/armv7/stv0991/Makefile [new file with mode: 0644]
arch/arm/cpu/armv7/stv0991/clock.c [new file with mode: 0644]
arch/arm/cpu/armv7/stv0991/lowlevel.S [new file with mode: 0644]
arch/arm/cpu/armv7/stv0991/pinmux.c [new file with mode: 0644]
arch/arm/cpu/armv7/stv0991/reset.c [new file with mode: 0644]
arch/arm/cpu/armv7/stv0991/timer.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/Makefile
arch/arm/cpu/armv7/sunxi/board.c
arch/arm/cpu/armv7/sunxi/clock_sun4i.c
arch/arm/cpu/armv7/sunxi/clock_sun6i.c
arch/arm/cpu/armv7/sunxi/cpu_info.c
arch/arm/cpu/armv7/sunxi/dram_sun4i.c [moved from arch/arm/cpu/armv7/sunxi/dram.c with 95% similarity]
arch/arm/cpu/armv7/sunxi/dram_sun6i.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/dram_sun8i.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/p2wi.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/pinmux.c
arch/arm/cpu/armv7/sunxi/psci.S
arch/arm/cpu/armv7/sunxi/rsb.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/usbc.c [new file with mode: 0644]
arch/arm/cpu/armv7/tegra-common/Kconfig
arch/arm/cpu/armv7/tegra114/Makefile [deleted file]
arch/arm/cpu/armv7/tegra124/Kconfig
arch/arm/cpu/armv7/tegra20/display.c
arch/arm/cpu/armv7/tegra30/Makefile [deleted file]
arch/arm/cpu/armv7/uniphier/Kconfig
arch/arm/cpu/armv7/uniphier/Makefile
arch/arm/cpu/armv7/uniphier/board_early_init_r.c [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/board_late_init.c
arch/arm/cpu/armv7/uniphier/board_postclk_init.c [moved from arch/arm/cpu/armv7/uniphier/ph1-ld4/board_postclk_init.c with 82% similarity]
arch/arm/cpu/armv7/uniphier/cmd_ddrphy.c [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/cmd_pinmon.c
arch/arm/cpu/armv7/uniphier/ddrphy_training.c [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/dram_init.c
arch/arm/cpu/armv7/uniphier/init_page_table.c
arch/arm/cpu/armv7/uniphier/lowlevel_init.S
arch/arm/cpu/armv7/uniphier/ph1-ld4/Makefile
arch/arm/cpu/armv7/uniphier/ph1-ld4/ddrphy_init.c [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/ph1-ld4/lowlevel_debug.S [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/ph1-ld4/platdevice.c
arch/arm/cpu/armv7/uniphier/ph1-ld4/sbc_init.c
arch/arm/cpu/armv7/uniphier/ph1-ld4/umc_init.c
arch/arm/cpu/armv7/uniphier/ph1-pro4/Makefile
arch/arm/cpu/armv7/uniphier/ph1-pro4/board_postclk_init.c [deleted file]
arch/arm/cpu/armv7/uniphier/ph1-pro4/ddrphy_init.c [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/ph1-pro4/lowlevel_debug.S [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/ph1-pro4/pinctrl.c
arch/arm/cpu/armv7/uniphier/ph1-pro4/platdevice.c
arch/arm/cpu/armv7/uniphier/ph1-pro4/sbc_init.c
arch/arm/cpu/armv7/uniphier/ph1-pro4/umc_init.c
arch/arm/cpu/armv7/uniphier/ph1-sld8/Makefile
arch/arm/cpu/armv7/uniphier/ph1-sld8/board_postclk_init.c [deleted file]
arch/arm/cpu/armv7/uniphier/ph1-sld8/ddrphy_init.c [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/ph1-sld8/lowlevel_debug.S [new file with mode: 0644]
arch/arm/cpu/armv7/uniphier/ph1-sld8/platdevice.c
arch/arm/cpu/armv7/uniphier/ph1-sld8/sbc_init.c
arch/arm/cpu/armv7/uniphier/ph1-sld8/umc_init.c
arch/arm/cpu/armv7/uniphier/reset.c
arch/arm/cpu/armv7/uniphier/support_card.c
arch/arm/cpu/armv7/vf610/generic.c
arch/arm/cpu/armv7/virt-dt.c
arch/arm/cpu/armv7/zynq/Kconfig
arch/arm/cpu/armv7/zynq/ddrc.c
arch/arm/cpu/armv8/Kconfig [deleted file]
arch/arm/cpu/armv8/Makefile
arch/arm/cpu/at91-common/Makefile
arch/arm/cpu/at91-common/mpddrc.c
arch/arm/cpu/at91-common/sdram.c [new file with mode: 0644]
arch/arm/cpu/at91-common/spl.c
arch/arm/cpu/at91-common/spl_at91.c [new file with mode: 0644]
arch/arm/cpu/at91-common/spl_atmel.c [new file with mode: 0644]
arch/arm/cpu/tegra-common/Makefile
arch/arm/cpu/tegra-common/powergate.c [new file with mode: 0644]
arch/arm/cpu/tegra-common/xusb-padctl.c [new file with mode: 0644]
arch/arm/cpu/tegra124-common/Makefile
arch/arm/cpu/tegra124-common/clock.c
arch/arm/cpu/tegra124-common/xusb-padctl.c [new file with mode: 0644]
arch/arm/cpu/tegra20-common/clock.c
arch/arm/cpu/tegra20-common/pmu.c
arch/arm/cpu/tegra30-common/clock.c
arch/arm/cpu/u-boot-spl.lds
arch/arm/dts/Makefile
arch/arm/dts/cros-ec-keyboard.dtsi [new file with mode: 0644]
arch/arm/dts/exynos4412-odroid.dts
arch/arm/dts/exynos5250-snow.dts
arch/arm/dts/exynos5420-peach-pit.dts
arch/arm/dts/exynos5422-odroidxu3.dts [new file with mode: 0644]
arch/arm/dts/exynos5800-peach-pi.dts [new file with mode: 0644]
arch/arm/dts/socfpga.dtsi [new file with mode: 0644]
arch/arm/dts/socfpga_cyclone5.dtsi [new file with mode: 0644]
arch/arm/dts/socfpga_cyclone5_socrates.dts [new file with mode: 0644]
arch/arm/dts/sun7i-a20-pcduino3.dts [new file with mode: 0644]
arch/arm/dts/sun7i-a20.dtsi [new file with mode: 0644]
arch/arm/dts/sunxi-common-regulators.dtsi [new file with mode: 0644]
arch/arm/dts/tegra124-jetson-tk1.dts
arch/arm/dts/tegra124-nyan-big.dts [new file with mode: 0644]
arch/arm/dts/tegra124.dtsi
arch/arm/dts/tegra20-trimslice.dts
arch/arm/dts/tegra20.dtsi
arch/arm/dts/tegra30-beaver.dts
arch/arm/dts/tegra30-cardhu.dts
arch/arm/dts/tegra30-colibri.dts
arch/arm/dts/tegra30-tec-ng.dts
arch/arm/dts/tegra30.dtsi
arch/arm/dts/uniphier-ph1-ld4-ref.dts [new file with mode: 0644]
arch/arm/dts/uniphier-ph1-ld4.dtsi [new file with mode: 0644]
arch/arm/dts/uniphier-ph1-pro4-ref.dts [new file with mode: 0644]
arch/arm/dts/uniphier-ph1-pro4.dtsi [new file with mode: 0644]
arch/arm/dts/uniphier-ph1-sld3-ref.dts [new file with mode: 0644]
arch/arm/dts/uniphier-ph1-sld3.dtsi [new file with mode: 0644]
arch/arm/dts/uniphier-ph1-sld8-ref.dts [new file with mode: 0644]
arch/arm/dts/uniphier-ph1-sld8.dtsi [new file with mode: 0644]
arch/arm/dts/zynq-zybo.dts [new file with mode: 0644]
arch/arm/imx-common/cpu.c
arch/arm/imx-common/i2c-mxv7.c
arch/arm/imx-common/iomux-v3.c
arch/arm/imx-common/spl.c
arch/arm/imx-common/spl_sd.cfg [moved from board/compulab/cm_fx6/imximage.cfg with 88% similarity]
arch/arm/imx-common/timer.c
arch/arm/imx-common/video.c
arch/arm/include/asm/arch-am33xx/spl.h
arch/arm/include/asm/arch-am33xx/sys_proto.h
arch/arm/include/asm/arch-armada100/config.h
arch/arm/include/asm/arch-at91/at91_common.h
arch/arm/include/asm/arch-at91/at91_pmc.h
arch/arm/include/asm/arch-at91/at91_shdwn.h [deleted file]
arch/arm/include/asm/arch-at91/at91rm9200.h
arch/arm/include/asm/arch-at91/at91sam9260.h
arch/arm/include/asm/arch-at91/at91sam9260_matrix.h
arch/arm/include/asm/arch-at91/at91sam9261.h
arch/arm/include/asm/arch-at91/at91sam9263.h
arch/arm/include/asm/arch-at91/at91sam9_sdramc.h
arch/arm/include/asm/arch-at91/at91sam9g45.h
arch/arm/include/asm/arch-at91/at91sam9rl.h
arch/arm/include/asm/arch-at91/at91sam9x5.h
arch/arm/include/asm/arch-at91/atmel_mpddrc.h
arch/arm/include/asm/arch-at91/atmel_serial.h [new file with mode: 0644]
arch/arm/include/asm/arch-at91/clk.h
arch/arm/include/asm/arch-at91/gpio.h
arch/arm/include/asm/arch-at91/hardware.h
arch/arm/include/asm/arch-at91/sama5d3.h
arch/arm/include/asm/arch-at91/sama5d4.h [new file with mode: 0644]
arch/arm/include/asm/arch-bcm281xx/sysmap.h
arch/arm/include/asm/arch-bcm2835/mbox.h
arch/arm/include/asm/arch-exynos/cpu.h
arch/arm/include/asm/arch-exynos/dmc.h
arch/arm/include/asm/arch-exynos/ehci.h
arch/arm/include/asm/arch-exynos/gpio.h
arch/arm/include/asm/arch-exynos/power.h
arch/arm/include/asm/arch-exynos/system.h
arch/arm/include/asm/arch-imx/cpu.h
arch/arm/include/asm/arch-keystone/hardware-k2e.h
arch/arm/include/asm/arch-keystone/hardware-k2hk.h
arch/arm/include/asm/arch-keystone/hardware-k2l.h
arch/arm/include/asm/arch-keystone/hardware.h
arch/arm/include/asm/arch-kirkwood/config.h
arch/arm/include/asm/arch-lpc32xx/config.h
arch/arm/include/asm/arch-ls102xa/config.h
arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h
arch/arm/include/asm/arch-ls102xa/ls102xa_stream_id.h [new file with mode: 0644]
arch/arm/include/asm/arch-ls102xa/ns_access.h [new file with mode: 0644]
arch/arm/include/asm/arch-ls102xa/spl.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx5/imx-regs.h
arch/arm/include/asm/arch-mx6/clock.h
arch/arm/include/asm/arch-mx6/crm_regs.h
arch/arm/include/asm/arch-mx6/imx-regs.h
arch/arm/include/asm/arch-mx6/mx6sl_pins.h
arch/arm/include/asm/arch-mx6/sys_proto.h
arch/arm/include/asm/arch-omap4/sys_proto.h
arch/arm/include/asm/arch-omap5/clock.h
arch/arm/include/asm/arch-omap5/omap.h
arch/arm/include/asm/arch-pantheon/config.h
arch/arm/include/asm/arch-rmobile/gpio.h
arch/arm/include/asm/arch-rmobile/mmc.h [new file with mode: 0644]
arch/arm/include/asm/arch-rmobile/r8a7790.h
arch/arm/include/asm/arch-rmobile/r8a7791.h
arch/arm/include/asm/arch-rmobile/r8a7793-gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-rmobile/r8a7793.h [new file with mode: 0644]
arch/arm/include/asm/arch-rmobile/r8a7794.h
arch/arm/include/asm/arch-rmobile/rcar-base.h
arch/arm/include/asm/arch-rmobile/rcar-mstp.h [new file with mode: 0644]
arch/arm/include/asm/arch-rmobile/rmobile.h
arch/arm/include/asm/arch-s3c24x0/s3c2410.h
arch/arm/include/asm/arch-s3c24x0/s3c2440.h
arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
arch/arm/include/asm/arch-socfpga/clock_manager.h
arch/arm/include/asm/arch-socfpga/freeze_controller.h
arch/arm/include/asm/arch-socfpga/gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-socfpga/reset_manager.h
arch/arm/include/asm/arch-socfpga/scan_manager.h
arch/arm/include/asm/arch-stv0991/gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-stv0991/hardware.h [new file with mode: 0644]
arch/arm/include/asm/arch-stv0991/stv0991_cgu.h [new file with mode: 0644]
arch/arm/include/asm/arch-stv0991/stv0991_creg.h [new file with mode: 0644]
arch/arm/include/asm/arch-stv0991/stv0991_defs.h [new file with mode: 0644]
arch/arm/include/asm/arch-stv0991/stv0991_gpt.h [new file with mode: 0644]
arch/arm/include/asm/arch-stv0991/stv0991_periph.h [new file with mode: 0644]
arch/arm/include/asm/arch-stv0991/stv0991_wdru.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/clock.h
arch/arm/include/asm/arch-sunxi/clock_sun4i.h
arch/arm/include/asm/arch-sunxi/clock_sun6i.h
arch/arm/include/asm/arch-sunxi/cpu.h
arch/arm/include/asm/arch-sunxi/cpucfg_sun6i.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/display.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/dram.h
arch/arm/include/asm/arch-sunxi/dram_sun4i.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/dram_sun6i.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/dram_sun8i.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/gpio.h
arch/arm/include/asm/arch-sunxi/mmc.h
arch/arm/include/asm/arch-sunxi/p2wi.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/prcm.h
arch/arm/include/asm/arch-sunxi/rsb.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/timer.h
arch/arm/include/asm/arch-sunxi/usbc.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/watchdog.h
arch/arm/include/asm/arch-tegra/powergate.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra/tegra_i2c.h
arch/arm/include/asm/arch-tegra/xusb-padctl.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra114/powergate.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra124/clock.h
arch/arm/include/asm/arch-tegra124/powergate.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra20/clock-tables.h
arch/arm/include/asm/arch-tegra20/clock.h
arch/arm/include/asm/arch-tegra20/powergate.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra30/clock.h
arch/arm/include/asm/arch-tegra30/powergate.h [new file with mode: 0644]
arch/arm/include/asm/arch-uniphier/board.h
arch/arm/include/asm/arch-uniphier/ddrphy-regs.h [new file with mode: 0644]
arch/arm/include/asm/arch-uniphier/debug-uart.S [new file with mode: 0644]
arch/arm/include/asm/arch-uniphier/ehci-uniphier.h [new file with mode: 0644]
arch/arm/include/asm/arch-uniphier/gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-uniphier/mio-regs.h [new file with mode: 0644]
arch/arm/include/asm/arch-uniphier/platdevice.h
arch/arm/include/asm/arch-uniphier/sbc-regs.h
arch/arm/include/asm/arch-uniphier/sg-regs.h
arch/arm/include/asm/arch-vf610/imx-regs.h
arch/arm/include/asm/armv7.h
arch/arm/include/asm/assembler.h
arch/arm/include/asm/global_data.h
arch/arm/include/asm/imx-common/iomux-v3.h
arch/arm/include/asm/kona-common/clk.h
arch/arm/include/asm/macro.h
arch/arm/include/asm/omap_common.h
arch/arm/include/asm/pcie_layerscape.h [new file with mode: 0644]
arch/arm/include/asm/semihosting.h
arch/arm/include/asm/system.h
arch/arm/include/debug/8250.S [new file with mode: 0644]
arch/arm/lib/Makefile
arch/arm/lib/bootm.c
arch/arm/lib/cache-cp15.c
arch/arm/lib/cache.c
arch/arm/lib/crt0.S
arch/arm/lib/debug.S [new file with mode: 0644]
arch/arm/lib/memcpy.S
arch/arm/lib/memset.S
arch/arm/lib/relocate.S
arch/arm/lib/semihosting.c
arch/avr32/Makefile [new file with mode: 0644]
arch/avr32/cpu/Makefile
arch/avr32/cpu/at32ap700x/clk.c
arch/blackfin/Makefile [new file with mode: 0644]
arch/blackfin/cpu/initcode.c
arch/blackfin/cpu/jtag-console.c
arch/blackfin/include/asm/config.h
arch/blackfin/include/asm/io.h
arch/blackfin/lib/string.c
arch/m68k/Kconfig
arch/m68k/Makefile [new file with mode: 0644]
arch/microblaze/Makefile [new file with mode: 0644]
arch/mips/Kconfig
arch/mips/Makefile [new file with mode: 0644]
arch/mips/config.mk
arch/mips/cpu/mips32/Makefile
arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c
arch/mips/cpu/mips32/config.mk
arch/mips/cpu/mips32/start.S
arch/mips/cpu/mips64/config.mk
arch/mips/cpu/mips64/start.S
arch/mips/cpu/u-boot.lds
arch/mips/include/asm/unaligned.h
arch/mips/lib/Makefile
arch/mips/lib/board.c [deleted file]
arch/mips/lib/bootm.c
arch/nds32/Makefile [new file with mode: 0644]
arch/nds32/cpu/n1213/Makefile
arch/nios2/Makefile [new file with mode: 0644]
arch/nios2/cpu/fdt.c
arch/openrisc/Makefile [new file with mode: 0644]
arch/powerpc/Kconfig
arch/powerpc/Makefile [new file with mode: 0644]
arch/powerpc/cpu/mpc5xxx/Kconfig
arch/powerpc/cpu/mpc5xxx/ide.c
arch/powerpc/cpu/mpc5xxx/start.S
arch/powerpc/cpu/mpc5xxx/usb_ohci.c
arch/powerpc/cpu/mpc824x/Kconfig [deleted file]
arch/powerpc/cpu/mpc824x/Makefile [deleted file]
arch/powerpc/cpu/mpc824x/config.mk [deleted file]
arch/powerpc/cpu/mpc824x/cpu.c [deleted file]
arch/powerpc/cpu/mpc824x/cpu_init.c [deleted file]
arch/powerpc/cpu/mpc824x/drivers/epic.h [deleted file]
arch/powerpc/cpu/mpc824x/drivers/epic/README [deleted file]
arch/powerpc/cpu/mpc824x/drivers/epic/epic.h [deleted file]
arch/powerpc/cpu/mpc824x/drivers/epic/epic1.c [deleted file]
arch/powerpc/cpu/mpc824x/drivers/epic/epic2.S [deleted file]
arch/powerpc/cpu/mpc824x/drivers/epic/epicutil.S [deleted file]
arch/powerpc/cpu/mpc824x/drivers/errors.h [deleted file]
arch/powerpc/cpu/mpc824x/drivers/i2c/i2c.c [deleted file]
arch/powerpc/cpu/mpc824x/interrupts.c [deleted file]
arch/powerpc/cpu/mpc824x/pci.c [deleted file]
arch/powerpc/cpu/mpc824x/speed.c [deleted file]
arch/powerpc/cpu/mpc824x/start.S [deleted file]
arch/powerpc/cpu/mpc824x/traps.c [deleted file]
arch/powerpc/cpu/mpc824x/u-boot.lds [deleted file]
arch/powerpc/cpu/mpc8260/Kconfig
arch/powerpc/cpu/mpc8260/cpu_init.c
arch/powerpc/cpu/mpc8260/pci.c
arch/powerpc/cpu/mpc8260/start.S
arch/powerpc/cpu/mpc83xx/Kconfig
arch/powerpc/cpu/mpc83xx/start.S
arch/powerpc/cpu/mpc85xx/Kconfig
arch/powerpc/cpu/mpc85xx/Makefile
arch/powerpc/cpu/mpc85xx/b4860_ids.c
arch/powerpc/cpu/mpc85xx/b4860_serdes.c
arch/powerpc/cpu/mpc85xx/cmd_errata.c
arch/powerpc/cpu/mpc85xx/cpu_init_early.c
arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
arch/powerpc/cpu/mpc85xx/p2041_ids.c
arch/powerpc/cpu/mpc85xx/p3041_ids.c
arch/powerpc/cpu/mpc85xx/p4080_ids.c
arch/powerpc/cpu/mpc85xx/p5020_ids.c
arch/powerpc/cpu/mpc85xx/p5040_ids.c
arch/powerpc/cpu/mpc85xx/portals.c
arch/powerpc/cpu/mpc85xx/speed.c
arch/powerpc/cpu/mpc85xx/t1024_ids.c [new file with mode: 0644]
arch/powerpc/cpu/mpc85xx/t1024_serdes.c [new file with mode: 0644]
arch/powerpc/cpu/mpc85xx/t1040_ids.c
arch/powerpc/cpu/mpc85xx/t2080_ids.c
arch/powerpc/cpu/mpc85xx/t2080_serdes.c
arch/powerpc/cpu/mpc85xx/t4240_ids.c
arch/powerpc/cpu/mpc85xx/tlb.c
arch/powerpc/cpu/mpc8xx/Kconfig
arch/powerpc/cpu/mpc8xx/cpu.c
arch/powerpc/cpu/mpc8xx/cpu_init.c
arch/powerpc/cpu/mpc8xx/i2c.c
arch/powerpc/cpu/mpc8xx/scc.c
arch/powerpc/cpu/mpc8xx/serial.c
arch/powerpc/cpu/mpc8xx/video.c
arch/powerpc/cpu/mpc8xxx/cpu.c
arch/powerpc/cpu/mpc8xxx/fdt.c
arch/powerpc/cpu/ppc4xx/44x_spd_ddr2.c
arch/powerpc/cpu/ppc4xx/Kconfig
arch/powerpc/cpu/ppc4xx/cpu_init.c
arch/powerpc/cpu/ppc4xx/fdt.c
arch/powerpc/cpu/ppc4xx/usb_ohci.c
arch/powerpc/include/asm/config_mpc85xx.h
arch/powerpc/include/asm/fsl_errata.h
arch/powerpc/include/asm/fsl_liodn.h
arch/powerpc/include/asm/fsl_memac.h
arch/powerpc/include/asm/fsl_secure_boot.h
arch/powerpc/include/asm/fsl_serdes.h
arch/powerpc/include/asm/global_data.h
arch/powerpc/include/asm/immap_85xx.h
arch/powerpc/include/asm/ppc4xx-i2c.h
arch/powerpc/include/asm/processor.h
arch/powerpc/lib/board.c
arch/powerpc/lib/bootm.c
arch/sandbox/Makefile [new file with mode: 0644]
arch/sandbox/cpu/os.c
arch/sandbox/cpu/start.c
arch/sandbox/cpu/state.c
arch/sandbox/dts/sandbox.dts
arch/sandbox/include/asm/test.h [new file with mode: 0644]
arch/sh/Kconfig
arch/sh/Makefile [new file with mode: 0644]
arch/sh/cpu/sh2/config.mk
arch/sh/cpu/sh3/config.mk
arch/sh/cpu/sh4/config.mk
arch/sh/include/asm/cache.h
arch/sh/include/asm/processor.h
arch/sh/include/asm/unaligned.h
arch/sh/lib/Makefile
arch/sh/lib/zimageboot.c
arch/sparc/Kconfig
arch/sparc/Makefile [new file with mode: 0644]
arch/sparc/config.mk
arch/sparc/cpu/leon2/config.mk [deleted file]
arch/sparc/cpu/leon3/config.mk [deleted file]
arch/x86/Kconfig
arch/x86/Makefile [new file with mode: 0644]
arch/x86/config.mk
arch/x86/cpu/Makefile
arch/x86/cpu/call64.S [new file with mode: 0644]
arch/x86/cpu/config.mk
arch/x86/cpu/coreboot/Kconfig [new file with mode: 0644]
arch/x86/cpu/coreboot/Makefile
arch/x86/cpu/coreboot/coreboot.c
arch/x86/cpu/coreboot/ipchecksum.c
arch/x86/cpu/coreboot/pci.c
arch/x86/cpu/coreboot/sdram.c
arch/x86/cpu/coreboot/tables.c
arch/x86/cpu/coreboot/timestamp.c
arch/x86/cpu/cpu.c
arch/x86/cpu/interrupts.c
arch/x86/cpu/ivybridge/Kconfig [new file with mode: 0644]
arch/x86/cpu/ivybridge/Makefile [new file with mode: 0644]
arch/x86/cpu/ivybridge/bd82x6x.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/car.S [new file with mode: 0644]
arch/x86/cpu/ivybridge/cpu.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/early_init.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/early_me.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/gma.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/gma.h [new file with mode: 0644]
arch/x86/cpu/ivybridge/lpc.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/me_status.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/microcode_intel.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/model_206ax.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/northbridge.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/pch.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/pci.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/report_platform.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/sata.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/sdram.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/usb_ehci.c [new file with mode: 0644]
arch/x86/cpu/ivybridge/usb_xhci.c [new file with mode: 0644]
arch/x86/cpu/lapic.c [new file with mode: 0644]
arch/x86/cpu/mtrr.c [new file with mode: 0644]
arch/x86/cpu/pci.c [new file with mode: 0644]
arch/x86/cpu/queensbay/Kconfig [new file with mode: 0644]
arch/x86/cpu/queensbay/Makefile [new file with mode: 0644]
arch/x86/cpu/queensbay/fsp_configs.c [new file with mode: 0644]
arch/x86/cpu/queensbay/fsp_support.c [new file with mode: 0644]
arch/x86/cpu/queensbay/tnc.c [new file with mode: 0644]
arch/x86/cpu/queensbay/tnc_car.S [new file with mode: 0644]
arch/x86/cpu/queensbay/tnc_dram.c [new file with mode: 0644]
arch/x86/cpu/queensbay/tnc_pci.c [new file with mode: 0644]
arch/x86/cpu/queensbay/topcliff.c [new file with mode: 0644]
arch/x86/cpu/start.S
arch/x86/cpu/start16.S
arch/x86/cpu/turbo.c [new file with mode: 0644]
arch/x86/cpu/u-boot.lds
arch/x86/dts/Makefile
arch/x86/dts/alex.dts [deleted file]
arch/x86/dts/chromebook_link.dts [new file with mode: 0644]
arch/x86/dts/coreboot.dtsi [deleted file]
arch/x86/dts/crownbay.dts [new file with mode: 0644]
arch/x86/dts/link.dts [deleted file]
arch/x86/dts/microcode/m0220661105_cv.dtsi [new file with mode: 0644]
arch/x86/dts/microcode/m12206a7_00000029.dtsi [new file with mode: 0644]
arch/x86/dts/microcode/m12306a9_0000001b.dtsi [new file with mode: 0644]
arch/x86/dts/serial.dtsi [new file with mode: 0644]
arch/x86/include/asm/acpi.h [new file with mode: 0644]
arch/x86/include/asm/arch-coreboot/gpio.h
arch/x86/include/asm/arch-coreboot/sysinfo.h
arch/x86/include/asm/arch-coreboot/tables.h
arch/x86/include/asm/arch-ivybridge/bd82x6x.h [new file with mode: 0644]
arch/x86/include/asm/arch-ivybridge/gpio.h [new file with mode: 0644]
arch/x86/include/asm/arch-ivybridge/me.h [new file with mode: 0644]
arch/x86/include/asm/arch-ivybridge/microcode.h [new file with mode: 0644]
arch/x86/include/asm/arch-ivybridge/model_206ax.h [new file with mode: 0644]
arch/x86/include/asm/arch-ivybridge/pch.h [new file with mode: 0644]
arch/x86/include/asm/arch-ivybridge/pei_data.h [new file with mode: 0644]
arch/x86/include/asm/arch-ivybridge/sandybridge.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_api.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_bootmode.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_ffs.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_fv.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_hob.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_infoheader.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_platform.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_support.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_types.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/fsp/fsp_vpd.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/gpio.h [new file with mode: 0644]
arch/x86/include/asm/arch-queensbay/tnc.h [new file with mode: 0644]
arch/x86/include/asm/bootm.h
arch/x86/include/asm/cpu.h [new file with mode: 0644]
arch/x86/include/asm/global_data.h
arch/x86/include/asm/gpio.h
arch/x86/include/asm/i8254.h
arch/x86/include/asm/i8259.h
arch/x86/include/asm/ibmpc.h
arch/x86/include/asm/init_helpers.h
arch/x86/include/asm/interrupt.h
arch/x86/include/asm/io.h
arch/x86/include/asm/ioapic.h [new file with mode: 0644]
arch/x86/include/asm/lapic.h [new file with mode: 0644]
arch/x86/include/asm/lapic_def.h [new file with mode: 0644]
arch/x86/include/asm/linkage.h [new file with mode: 0644]
arch/x86/include/asm/msr-index.h
arch/x86/include/asm/msr.h
arch/x86/include/asm/mtrr.h [new file with mode: 0644]
arch/x86/include/asm/pci.h
arch/x86/include/asm/pnp_def.h [new file with mode: 0644]
arch/x86/include/asm/post.h [new file with mode: 0644]
arch/x86/include/asm/processor.h
arch/x86/include/asm/speedstep.h [new file with mode: 0644]
arch/x86/include/asm/turbo.h [new file with mode: 0644]
arch/x86/include/asm/u-boot-x86.h
arch/x86/include/asm/zimage.h
arch/x86/lib/Makefile
arch/x86/lib/asm-offsets.c
arch/x86/lib/bios.c [new file with mode: 0644]
arch/x86/lib/bios.h [new file with mode: 0644]
arch/x86/lib/bios_asm.S [new file with mode: 0644]
arch/x86/lib/bios_interrupts.c [new file with mode: 0644]
arch/x86/lib/bootm.c
arch/x86/lib/cmd_hob.c [new file with mode: 0644]
arch/x86/lib/cmd_mtrr.c [new file with mode: 0644]
arch/x86/lib/init_helpers.c
arch/x86/lib/pcat_interrupts.c
arch/x86/lib/physmem.c
arch/x86/lib/ramtest.c [new file with mode: 0644]
arch/x86/lib/relocate.c
arch/x86/lib/string.c
arch/x86/lib/tsc_timer.c
arch/x86/lib/zimage.c
board/LEOX/elpt860/Kconfig [deleted file]
board/LEOX/elpt860/MAINTAINERS [deleted file]
board/LEOX/elpt860/Makefile [deleted file]
board/LEOX/elpt860/README.LEOX [deleted file]
board/LEOX/elpt860/elpt860.c [deleted file]
board/LEOX/elpt860/flash.c [deleted file]
board/LEOX/elpt860/u-boot.lds [deleted file]
board/LEOX/elpt860/u-boot.lds.debug [deleted file]
board/Marvell/db-mv784mp-gp/Kconfig
board/RRvision/Kconfig [deleted file]
board/RRvision/MAINTAINERS [deleted file]
board/RRvision/Makefile [deleted file]
board/RRvision/RRvision.c [deleted file]
board/RRvision/flash.c [deleted file]
board/RRvision/u-boot.lds [deleted file]
board/RRvision/video_ad7179.h [deleted file]
board/a3000/Kconfig [deleted file]
board/a3000/MAINTAINERS [deleted file]
board/a3000/Makefile [deleted file]
board/a3000/README [deleted file]
board/a3000/a3000.c [deleted file]
board/a3000/flash.c [deleted file]
board/a3m071/a3m071.c
board/a4m072/a4m072.c
board/alphaproject/ap_sh4a_4a/Kconfig
board/altera/socfpga/MAINTAINERS
board/altera/socfpga/socfpga_cyclone5.c
board/amcc/canyonlands/canyonlands.c
board/amcc/sequoia/sequoia.c
board/aristainetos/aristainetos.c
board/armltd/vexpress64/MAINTAINERS
board/atc/Kconfig [deleted file]
board/atc/MAINTAINERS [deleted file]
board/atc/Makefile [deleted file]
board/atc/atc.c [deleted file]
board/atc/flash.c [deleted file]
board/atc/ti113x.c [deleted file]
board/atmel/sama5d3xek/sama5d3xek.c
board/atmel/sama5d4_xplained/Kconfig [new file with mode: 0644]
board/atmel/sama5d4_xplained/MAINTAINERS [new file with mode: 0644]
board/atmel/sama5d4_xplained/Makefile [new file with mode: 0644]
board/atmel/sama5d4_xplained/sama5d4_xplained.c [new file with mode: 0644]
board/atmel/sama5d4ek/Kconfig [new file with mode: 0644]
board/atmel/sama5d4ek/MAINTAINERS [new file with mode: 0644]
board/atmel/sama5d4ek/Makefile [new file with mode: 0644]
board/atmel/sama5d4ek/sama5d4ek.c [new file with mode: 0644]
board/avionic-design/common/tamonten-ng.c
board/bachmann/ot1200/ot1200.c
board/bluewater/snapper9260/MAINTAINERS
board/bluewater/snapper9260/snapper9260.c
board/boundary/nitrogen6x/nitrogen6x.c
board/broadcom/bcm11130/MAINTAINERS [new file with mode: 0644]
board/broadcom/bcm11130_nand/MAINTAINERS [new file with mode: 0644]
board/broadcom/bcm911360_entphn-ns/MAINTAINERS [new file with mode: 0644]
board/broadcom/bcm911360_entphn/MAINTAINERS [new file with mode: 0644]
board/broadcom/bcm911360k/MAINTAINERS [new file with mode: 0644]
board/broadcom/bcm958300k-ns/MAINTAINERS [new file with mode: 0644]
board/broadcom/bcm958300k/MAINTAINERS
board/broadcom/bcm958305k/MAINTAINERS [new file with mode: 0644]
board/broadcom/bcm958622hr/MAINTAINERS
board/broadcom/bcm_ep/board.c
board/broadcom/bcmcygnus/Kconfig [moved from board/broadcom/bcm958300k/Kconfig with 88% similarity]
board/broadcom/bcmnsp/Kconfig [moved from board/broadcom/bcm958622hr/Kconfig with 88% similarity]
board/chromebook-x86/coreboot/Kconfig [deleted file]
board/cm5200/cm5200.c
board/cogent/Kconfig [deleted file]
board/cogent/MAINTAINERS [deleted file]
board/cogent/Makefile [deleted file]
board/cogent/README [deleted file]
board/cogent/README.cma286 [deleted file]
board/cogent/dipsw.c [deleted file]
board/cogent/dipsw.h [deleted file]
board/cogent/flash.c [deleted file]
board/cogent/flash.h [deleted file]
board/cogent/kbm.c [deleted file]
board/cogent/lcd.c [deleted file]
board/cogent/lcd.h [deleted file]
board/cogent/mb.c [deleted file]
board/cogent/mb.h [deleted file]
board/cogent/par.c [deleted file]
board/cogent/par.h [deleted file]
board/cogent/pci.c [deleted file]
board/cogent/pci.h [deleted file]
board/cogent/rtc.c [deleted file]
board/cogent/rtc.h [deleted file]
board/cogent/serial.c [deleted file]
board/cogent/serial.h [deleted file]
board/cogent/u-boot.lds [deleted file]
board/cogent/u-boot.lds.debug [deleted file]
board/comelit/dig297/dig297.c
board/compulab/cm_fx6/cm_fx6.c
board/compulab/cm_fx6/spl.c
board/compulab/cm_t35/cm_t35.c
board/compulab/cm_t3517/Kconfig [new file with mode: 0644]
board/compulab/cm_t3517/MAINTAINERS [new file with mode: 0644]
board/compulab/cm_t3517/Makefile [new file with mode: 0644]
board/compulab/cm_t3517/cm_t3517.c [new file with mode: 0644]
board/compulab/cm_t3517/mux.c [new file with mode: 0644]
board/compulab/cm_t54/cm_t54.c
board/compulab/common/Makefile
board/compulab/common/common.c [new file with mode: 0644]
board/compulab/common/common.h [new file with mode: 0644]
board/compulab/common/eeprom.c
board/compulab/common/omap3_smc911x.c [new file with mode: 0644]
board/compulab/common/splash.c [new file with mode: 0644]
board/compulab/trimslice/trimslice.c
board/coreboot/coreboot/Kconfig [new file with mode: 0644]
board/coreboot/coreboot/MAINTAINERS [moved from board/chromebook-x86/coreboot/MAINTAINERS with 59% similarity]
board/coreboot/coreboot/Makefile [moved from board/chromebook-x86/coreboot/Makefile with 100% similarity]
board/coreboot/coreboot/coreboot.c [moved from board/chromebook-x86/coreboot/coreboot.c with 60% similarity]
board/coreboot/coreboot/coreboot_start.S [moved from board/chromebook-x86/coreboot/coreboot_start.S with 100% similarity]
board/corscience/tricorder/tricorder.c
board/cpc45/Kconfig [deleted file]
board/cpc45/MAINTAINERS [deleted file]
board/cpc45/Makefile [deleted file]
board/cpc45/cpc45.c [deleted file]
board/cpc45/flash.c [deleted file]
board/cpc45/ide.c [deleted file]
board/cpc45/pd67290.c [deleted file]
board/cpc45/plx9030.c [deleted file]
board/cpu86/Kconfig [deleted file]
board/cpu86/MAINTAINERS [deleted file]
board/cpu86/Makefile [deleted file]
board/cpu86/cpu86.c [deleted file]
board/cpu86/cpu86.h [deleted file]
board/cpu86/flash.c [deleted file]
board/cpu87/Kconfig [deleted file]
board/cpu87/MAINTAINERS [deleted file]
board/cpu87/Makefile [deleted file]
board/cpu87/cpu87.c [deleted file]
board/cpu87/cpu87.h [deleted file]
board/cpu87/flash.c [deleted file]
board/cu824/Kconfig [deleted file]
board/cu824/MAINTAINERS [deleted file]
board/cu824/Makefile [deleted file]
board/cu824/README [deleted file]
board/cu824/cu824.c [deleted file]
board/cu824/flash.c [deleted file]
board/d-link/dns325/MAINTAINERS
board/d-link/dns325/Makefile
board/d-link/dns325/dns325.c
board/d-link/dns325/dns325.h
board/d-link/dns325/kwbimage.cfg
board/davedenx/aria/aria.c
board/davinci/da8xxevm/u-boot-spl-hawk.lds
board/dbau1x00/Kconfig
board/eXalion/Kconfig [deleted file]
board/eXalion/MAINTAINERS [deleted file]
board/eXalion/Makefile [deleted file]
board/eXalion/eXalion.c [deleted file]
board/eXalion/eXalion.h [deleted file]
board/eXalion/piix_pci.h [deleted file]
board/embest/mx6boards/mx6boards.c
board/ep8260/Kconfig [deleted file]
board/ep8260/MAINTAINERS [deleted file]
board/ep8260/Makefile [deleted file]
board/ep8260/ep8260.c [deleted file]
board/ep8260/ep8260.h [deleted file]
board/ep8260/flash.c [deleted file]
board/ep8260/mii_phy.c [deleted file]
board/ep82xxm/Kconfig [deleted file]
board/ep82xxm/MAINTAINERS [deleted file]
board/ep82xxm/Makefile [deleted file]
board/ep82xxm/ep82xxm.c [deleted file]
board/esd/apc405/Kconfig [deleted file]
board/esd/apc405/MAINTAINERS [deleted file]
board/esd/apc405/Makefile [deleted file]
board/esd/apc405/apc405.c [deleted file]
board/esd/apc405/fpgadata.c [deleted file]
board/esd/apc405/logo_640_480_24bpp.c [deleted file]
board/esd/ar405/Kconfig [deleted file]
board/esd/ar405/MAINTAINERS [deleted file]
board/esd/ar405/Makefile [deleted file]
board/esd/ar405/ar405.c [deleted file]
board/esd/ar405/ar405.h [deleted file]
board/esd/ar405/flash.c [deleted file]
board/esd/ar405/fpgadata.c [deleted file]
board/esd/ar405/fpgadata_xl30.c [deleted file]
board/esd/ash405/Kconfig [deleted file]
board/esd/ash405/MAINTAINERS [deleted file]
board/esd/ash405/Makefile [deleted file]
board/esd/ash405/ash405.c [deleted file]
board/esd/ash405/flash.c [deleted file]
board/esd/ash405/fpgadata.c [deleted file]
board/esd/cms700/Kconfig [deleted file]
board/esd/cms700/MAINTAINERS [deleted file]
board/esd/cms700/Makefile [deleted file]
board/esd/cms700/cms700.c [deleted file]
board/esd/cms700/flash.c [deleted file]
board/esd/common/auto_update.c [deleted file]
board/esd/common/auto_update.h [deleted file]
board/esd/cpci405/Kconfig
board/esd/cpci405/Makefile
board/esd/cpci405/cpci405.c
board/esd/cpci405/fpgadata_cpci405.c [deleted file]
board/esd/cpci405/fpgadata_cpci405ab.c [deleted file]
board/esd/cpciiser4/Kconfig [deleted file]
board/esd/cpciiser4/MAINTAINERS [deleted file]
board/esd/cpciiser4/Makefile [deleted file]
board/esd/cpciiser4/cpciiser4.c [deleted file]
board/esd/cpciiser4/cpciiser4.h [deleted file]
board/esd/cpciiser4/flash.c [deleted file]
board/esd/cpciiser4/fpgadata.c [deleted file]
board/esd/dp405/MAINTAINERS [deleted file]
board/esd/dp405/Makefile [deleted file]
board/esd/dp405/dp405.c [deleted file]
board/esd/dp405/flash.c [deleted file]
board/esd/du405/Kconfig [deleted file]
board/esd/du405/MAINTAINERS [deleted file]
board/esd/du405/Makefile [deleted file]
board/esd/du405/du405.c [deleted file]
board/esd/du405/du405.h [deleted file]
board/esd/du405/flash.c [deleted file]
board/esd/du405/fpgadata.c [deleted file]
board/esd/du440/Kconfig [deleted file]
board/esd/du440/MAINTAINERS [deleted file]
board/esd/du440/Makefile [deleted file]
board/esd/du440/config.mk [deleted file]
board/esd/du440/du440.c [deleted file]
board/esd/du440/du440.h [deleted file]
board/esd/du440/init.S [deleted file]
board/esd/hh405/Kconfig [deleted file]
board/esd/hh405/MAINTAINERS [deleted file]
board/esd/hh405/Makefile [deleted file]
board/esd/hh405/flash.c [deleted file]
board/esd/hh405/fpgadata.c [deleted file]
board/esd/hh405/hh405.c [deleted file]
board/esd/hh405/logo_1024_768_8bpp.c [deleted file]
board/esd/hh405/logo_320_240_4bpp.c [deleted file]
board/esd/hh405/logo_320_240_8bpp.c [deleted file]
board/esd/hh405/logo_640_480_24bpp.c [deleted file]
board/esd/hub405/Kconfig [deleted file]
board/esd/hub405/MAINTAINERS [deleted file]
board/esd/hub405/Makefile [deleted file]
board/esd/hub405/flash.c [deleted file]
board/esd/hub405/hub405.c [deleted file]
board/esd/mecp5123/mecp5123.c
board/esd/ocrtc/Kconfig [deleted file]
board/esd/ocrtc/MAINTAINERS [deleted file]
board/esd/ocrtc/Makefile [deleted file]
board/esd/ocrtc/cmd_ocrtc.c [deleted file]
board/esd/ocrtc/flash.c [deleted file]
board/esd/ocrtc/ocrtc.c [deleted file]
board/esd/ocrtc/ocrtc.h [deleted file]
board/esd/pci405/Kconfig [deleted file]
board/esd/pci405/MAINTAINERS [deleted file]
board/esd/pci405/Makefile [deleted file]
board/esd/pci405/cmd_pci405.c [deleted file]
board/esd/pci405/flash.c [deleted file]
board/esd/pci405/fpgadata.c [deleted file]
board/esd/pci405/pci405.c [deleted file]
board/esd/pci405/pci405.h [deleted file]
board/esd/pci405/writeibm.S [deleted file]
board/esd/pmc405/Kconfig [deleted file]
board/esd/pmc405/MAINTAINERS [deleted file]
board/esd/pmc405/Makefile [deleted file]
board/esd/pmc405/pmc405.c [deleted file]
board/esd/pmc405de/pmc405de.c
board/esd/pmc440/pmc440.c
board/esd/tasreg/Kconfig [deleted file]
board/esd/tasreg/MAINTAINERS [deleted file]
board/esd/tasreg/Makefile [deleted file]
board/esd/tasreg/config.mk [deleted file]
board/esd/tasreg/flash.c [deleted file]
board/esd/tasreg/fpgadata.c [deleted file]
board/esd/tasreg/tasreg.c [deleted file]
board/esd/tasreg/u-boot.lds [deleted file]
board/esd/vme8349/vme8349.c
board/esd/voh405/Kconfig [deleted file]
board/esd/voh405/MAINTAINERS [deleted file]
board/esd/voh405/Makefile [deleted file]
board/esd/voh405/flash.c [deleted file]
board/esd/voh405/fpgadata.c [deleted file]
board/esd/voh405/logo_320_240_4bpp.c [deleted file]
board/esd/voh405/logo_640_480_24bpp.c [deleted file]
board/esd/voh405/voh405.c [deleted file]
board/esd/wuh405/Kconfig [deleted file]
board/esd/wuh405/MAINTAINERS [deleted file]
board/esd/wuh405/Makefile [deleted file]
board/esd/wuh405/flash.c [deleted file]
board/esd/wuh405/fpgadata.c [deleted file]
board/esd/wuh405/wuh405.c [deleted file]
board/espt/Kconfig
board/esteem192e/Kconfig [deleted file]
board/esteem192e/MAINTAINERS [deleted file]
board/esteem192e/Makefile [deleted file]
board/esteem192e/esteem192e.c [deleted file]
board/esteem192e/flash.c [deleted file]
board/esteem192e/u-boot.lds [deleted file]
board/freescale/b4860qds/b4860qds.c
board/freescale/b4860qds/eth_b4860qds.c
board/freescale/b4860qds/law.c
board/freescale/bsc9131rdb/bsc9131rdb.c
board/freescale/bsc9132qds/bsc9132qds.c
board/freescale/c29xpcie/c29xpcie.c
board/freescale/common/Makefile
board/freescale/common/arm_sleep.c [new file with mode: 0644]
board/freescale/common/cds_pci_ft.c
board/freescale/common/ls102xa_stream_id.c [new file with mode: 0644]
board/freescale/common/mpc85xx_sleep.c [new file with mode: 0644]
board/freescale/common/ns_access.c [new file with mode: 0644]
board/freescale/common/pfuze.c [new file with mode: 0644]
board/freescale/common/pfuze.h [new file with mode: 0644]
board/freescale/common/qixis.h
board/freescale/common/sleep.h [new file with mode: 0644]
board/freescale/common/sys_eeprom.c
board/freescale/common/vid.c [new file with mode: 0644]
board/freescale/common/vid.h [new file with mode: 0644]
board/freescale/common/vsc3316_3308.c
board/freescale/common/vsc3316_3308.h
board/freescale/corenet_ds/corenet_ds.c
board/freescale/corenet_ds/eth_hydra.c
board/freescale/ls1021aqds/MAINTAINERS
board/freescale/ls1021aqds/ddr.c
board/freescale/ls1021aqds/ls1021aqds.c
board/freescale/ls1021aqds/ls102xa_pbi.cfg [new file with mode: 0644]
board/freescale/ls1021aqds/ls102xa_rcw_nand.cfg [new file with mode: 0644]
board/freescale/ls1021aqds/ls102xa_rcw_sd.cfg [new file with mode: 0644]
board/freescale/ls1021atwr/MAINTAINERS
board/freescale/ls1021atwr/ls1021atwr.c
board/freescale/ls1021atwr/ls102xa_pbi.cfg [new file with mode: 0644]
board/freescale/ls1021atwr/ls102xa_rcw_sd.cfg [new file with mode: 0644]
board/freescale/ls2085a/ls2085a.c
board/freescale/mpc5121ads/mpc5121ads.c
board/freescale/mpc7448hpc2/mpc7448hpc2.c
board/freescale/mpc8266ads/MAINTAINERS [deleted file]
board/freescale/mpc8266ads/Makefile [deleted file]
board/freescale/mpc8266ads/flash.c [deleted file]
board/freescale/mpc8266ads/mpc8266ads.c [deleted file]
board/freescale/mpc8308rdb/mpc8308rdb.c
board/freescale/mpc8313erdb/mpc8313erdb.c
board/freescale/mpc8315erdb/mpc8315erdb.c
board/freescale/mpc8323erdb/mpc8323erdb.c
board/freescale/mpc832xemds/mpc832xemds.c
board/freescale/mpc8349emds/mpc8349emds.c
board/freescale/mpc8349itx/mpc8349itx.c
board/freescale/mpc8360emds/mpc8360emds.c
board/freescale/mpc8360erdk/mpc8360erdk.c
board/freescale/mpc837xemds/mpc837xemds.c
board/freescale/mpc837xerdb/mpc837xerdb.c
board/freescale/mpc8536ds/mpc8536ds.c
board/freescale/mpc8540ads/mpc8540ads.c
board/freescale/mpc8544ds/mpc8544ds.c
board/freescale/mpc8560ads/mpc8560ads.c
board/freescale/mpc8568mds/mpc8568mds.c
board/freescale/mpc8569mds/mpc8569mds.c
board/freescale/mpc8572ds/mpc8572ds.c
board/freescale/mpc8610hpcd/mpc8610hpcd.c
board/freescale/mpc8641hpcn/mpc8641hpcn.c
board/freescale/mx28evk/README
board/freescale/mx51evk/mx51evk.c
board/freescale/mx53ard/mx53ard.c
board/freescale/mx53evk/mx53evk.c
board/freescale/mx53loco/mx53loco.c
board/freescale/mx53smd/mx53smd.c
board/freescale/mx6qarm2/mx6qarm2.c
board/freescale/mx6qsabreauto/mx6qsabreauto.c
board/freescale/mx6sabresd/MAINTAINERS
board/freescale/mx6sabresd/mx6sabresd.c
board/freescale/mx6slevk/MAINTAINERS
board/freescale/mx6slevk/mx6slevk.c
board/freescale/mx6sxsabresd/mx6sxsabresd.c
board/freescale/p1010rdb/p1010rdb.c
board/freescale/p1022ds/p1022ds.c
board/freescale/p1023rdb/p1023rdb.c
board/freescale/p1_p2_rdb/p1_p2_rdb.c
board/freescale/p1_p2_rdb_pc/p1_p2_rdb_pc.c
board/freescale/p1_twr/p1_twr.c
board/freescale/p2020come/p2020come.c
board/freescale/p2020ds/p2020ds.c
board/freescale/p2041rdb/p2041rdb.c
board/freescale/qemu-ppce500/qemu-ppce500.c
board/freescale/t102xqds/Kconfig [moved from board/freescale/mpc8266ads/Kconfig with 57% similarity]
board/freescale/t102xqds/MAINTAINERS [new file with mode: 0644]
board/freescale/t102xqds/Makefile [new file with mode: 0644]
board/freescale/t102xqds/README [new file with mode: 0644]
board/freescale/t102xqds/ddr.c [new file with mode: 0644]
board/freescale/t102xqds/eth_t102xqds.c [new file with mode: 0644]
board/freescale/t102xqds/law.c [new file with mode: 0644]
board/freescale/t102xqds/pci.c [new file with mode: 0644]
board/freescale/t102xqds/spl.c [new file with mode: 0644]
board/freescale/t102xqds/t1024_pbi.cfg [new file with mode: 0644]
board/freescale/t102xqds/t1024_rcw.cfg [new file with mode: 0644]
board/freescale/t102xqds/t102xqds.c [new file with mode: 0644]
board/freescale/t102xqds/t102xqds.h [new file with mode: 0644]
board/freescale/t102xqds/t102xqds_qixis.h [new file with mode: 0644]
board/freescale/t102xqds/tlb.c [new file with mode: 0644]
board/freescale/t102xrdb/Kconfig [new file with mode: 0644]
board/freescale/t102xrdb/MAINTAINERS [new file with mode: 0644]
board/freescale/t102xrdb/Makefile [new file with mode: 0644]
board/freescale/t102xrdb/README [new file with mode: 0644]
board/freescale/t102xrdb/cpld.c [new file with mode: 0644]
board/freescale/t102xrdb/cpld.h [new file with mode: 0644]
board/freescale/t102xrdb/ddr.c [new file with mode: 0644]
board/freescale/t102xrdb/eth_t102xrdb.c [new file with mode: 0644]
board/freescale/t102xrdb/law.c [new file with mode: 0644]
board/freescale/t102xrdb/pci.c [new file with mode: 0644]
board/freescale/t102xrdb/spl.c [new file with mode: 0644]
board/freescale/t102xrdb/t1024_pbi.cfg [new file with mode: 0644]
board/freescale/t102xrdb/t1024_rcw.cfg [new file with mode: 0644]
board/freescale/t102xrdb/t102xrdb.c [new file with mode: 0644]
board/freescale/t102xrdb/t102xrdb.h [new file with mode: 0644]
board/freescale/t102xrdb/tlb.c [new file with mode: 0644]
board/freescale/t1040qds/t1040qds.c
board/freescale/t104xrdb/ddr.c
board/freescale/t104xrdb/spl.c
board/freescale/t104xrdb/t104x_pbi.cfg
board/freescale/t104xrdb/t104xrdb.c
board/freescale/t208xqds/README [new file with mode: 0755]
board/freescale/t208xqds/ddr.h
board/freescale/t208xqds/eth_t208xqds.c
board/freescale/t208xqds/t2080_rcw.cfg
board/freescale/t208xqds/t208xqds.c
board/freescale/t208xrdb/t2080_rcw.cfg
board/freescale/t208xrdb/t208xrdb.c
board/freescale/t4qds/t4240emu.c
board/freescale/t4qds/t4240qds.c
board/freescale/t4rdb/Makefile
board/freescale/t4rdb/cpld.c [new file with mode: 0644]
board/freescale/t4rdb/cpld.h [new file with mode: 0644]
board/freescale/t4rdb/law.c
board/freescale/t4rdb/t4240rdb.c
board/freescale/t4rdb/tlb.c
board/funkwerk/vovpn-gw/Kconfig [deleted file]
board/funkwerk/vovpn-gw/MAINTAINERS [deleted file]
board/funkwerk/vovpn-gw/Makefile [deleted file]
board/funkwerk/vovpn-gw/flash.c [deleted file]
board/funkwerk/vovpn-gw/m88e6060.c [deleted file]
board/funkwerk/vovpn-gw/m88e6060.h [deleted file]
board/funkwerk/vovpn-gw/vovpn-gw.c [deleted file]
board/g2000/Kconfig [deleted file]
board/g2000/MAINTAINERS [deleted file]
board/g2000/Makefile [deleted file]
board/g2000/g2000.c [deleted file]
board/g2000/strataflash.c [deleted file]
board/gaisler/gr_cpci_ax2000/Kconfig
board/gaisler/gr_cpci_ax2000/config.mk [deleted file]
board/gaisler/gr_ep2s60/Kconfig
board/gaisler/gr_ep2s60/config.mk [deleted file]
board/gaisler/gr_xc3s_1500/Kconfig
board/gaisler/gr_xc3s_1500/config.mk [deleted file]
board/gaisler/grsim/Kconfig
board/gaisler/grsim/config.mk [deleted file]
board/gaisler/grsim_leon2/Kconfig
board/gaisler/grsim_leon2/config.mk [deleted file]
board/galaxy5200/galaxy5200.c
board/gateworks/gw_ventana/clocks.cfg [deleted file]
board/gateworks/gw_ventana/gw_ventana.c
board/gateworks/gw_ventana/gw_ventana.cfg [deleted file]
board/gateworks/gw_ventana/gw_ventana_spl.c
board/gdsys/405ep/iocon.c
board/gdsys/common/Makefile
board/gdsys/common/cmd_ioloop.c [new file with mode: 0644]
board/gdsys/common/ihs_mdio.c [new file with mode: 0644]
board/gdsys/common/ihs_mdio.h [new file with mode: 0644]
board/gdsys/common/osd.c
board/gdsys/common/phy.c [new file with mode: 0644]
board/gdsys/common/phy.h [new file with mode: 0644]
board/gdsys/intip/intip.c
board/gdsys/mpc8308/Kconfig [new file with mode: 0644]
board/gdsys/mpc8308/MAINTAINERS [new file with mode: 0644]
board/gdsys/mpc8308/Makefile [new file with mode: 0644]
board/gdsys/mpc8308/hrcon.c [new file with mode: 0644]
board/gdsys/mpc8308/mpc8308.c [new file with mode: 0644]
board/gdsys/mpc8308/mpc8308.h [new file with mode: 0644]
board/gdsys/mpc8308/sdram.c [new file with mode: 0644]
board/gdsys/p1022/controlcenterd-id.c
board/gdsys/p1022/controlcenterd.c
board/google/chromebook_link/Kconfig [new file with mode: 0644]
board/google/chromebook_link/MAINTAINERS [new file with mode: 0644]
board/google/chromebook_link/Makefile [new file with mode: 0644]
board/google/chromebook_link/link.c [new file with mode: 0644]
board/google/common/Makefile [new file with mode: 0644]
board/google/common/early_init.S [new file with mode: 0644]
board/gw8260/Kconfig [deleted file]
board/gw8260/MAINTAINERS [deleted file]
board/gw8260/Makefile [deleted file]
board/gw8260/flash.c [deleted file]
board/gw8260/gw8260.c [deleted file]
board/hermes/Kconfig [deleted file]
board/hermes/MAINTAINERS [deleted file]
board/hermes/Makefile [deleted file]
board/hermes/flash.c [deleted file]
board/hermes/hermes.c [deleted file]
board/hermes/u-boot.lds [deleted file]
board/hermes/u-boot.lds.debug [deleted file]
board/highbank/highbank.c
board/icecube/icecube.c
board/ids/ids8313/ids8313.c
board/ifm/ac14xx/ac14xx.c
board/ifm/o2dnt2/o2dnt2.c
board/imgtec/malta/Kconfig
board/imgtec/malta/malta.c
board/intel/crownbay/Kconfig [new file with mode: 0644]
board/intel/crownbay/MAINTAINERS [new file with mode: 0644]
board/intel/crownbay/Makefile [new file with mode: 0644]
board/intel/crownbay/crownbay.c [new file with mode: 0644]
board/intel/crownbay/start.S [new file with mode: 0644]
board/intercontrol/digsy_mtc/digsy_mtc.c
board/ip860/Kconfig [deleted file]
board/ip860/MAINTAINERS [deleted file]
board/ip860/Makefile [deleted file]
board/ip860/flash.c [deleted file]
board/ip860/ip860.c [deleted file]
board/ip860/u-boot.lds.debug [deleted file]
board/ipek01/ipek01.c
board/iphase4539/Kconfig [deleted file]
board/iphase4539/MAINTAINERS [deleted file]
board/iphase4539/Makefile [deleted file]
board/iphase4539/README [deleted file]
board/iphase4539/flash.c [deleted file]
board/iphase4539/iphase4539.c [deleted file]
board/isee/igep00x0/igep00x0.c
board/ivm/Kconfig [deleted file]
board/ivm/MAINTAINERS [deleted file]
board/ivm/Makefile [deleted file]
board/ivm/flash.c [deleted file]
board/ivm/ivm.c [deleted file]
board/ivm/u-boot.lds.debug [deleted file]
board/jupiter/jupiter.c
board/keymile/common/common.c
board/keymile/km82xx/km82xx.c
board/keymile/km83xx/km83xx.c
board/keymile/kmp204x/kmp204x.c
board/korat/korat.c
board/kosagi/novena/Kconfig [new file with mode: 0644]
board/kosagi/novena/MAINTAINERS [new file with mode: 0644]
board/kosagi/novena/Makefile [new file with mode: 0644]
board/kosagi/novena/novena.c [new file with mode: 0644]
board/kosagi/novena/novena.h [new file with mode: 0644]
board/kosagi/novena/novena_spl.c [new file with mode: 0644]
board/kosagi/novena/video.c [new file with mode: 0644]
board/kup/common/flash.c [deleted file]
board/kup/common/kup.c [deleted file]
board/kup/common/kup.h [deleted file]
board/kup/common/load_sernum_ethaddr.c [deleted file]
board/kup/common/pcmcia.c [deleted file]
board/kup/kup4k/Kconfig [deleted file]
board/kup/kup4k/MAINTAINERS [deleted file]
board/kup/kup4k/Makefile [deleted file]
board/kup/kup4k/kup4k.c [deleted file]
board/kup/kup4k/u-boot.lds.debug [deleted file]
board/kup/kup4x/Kconfig [deleted file]
board/kup/kup4x/MAINTAINERS [deleted file]
board/kup/kup4x/Makefile [deleted file]
board/kup/kup4x/kup4x.c [deleted file]
board/kup/kup4x/u-boot.lds [deleted file]
board/kup/kup4x/u-boot.lds.debug [deleted file]
board/logicpd/omap3som/omap3logic.c
board/logicpd/zoom1/zoom1.c
board/lwmon/Kconfig [deleted file]
board/lwmon/MAINTAINERS [deleted file]
board/lwmon/Makefile [deleted file]
board/lwmon/README.keybd [deleted file]
board/lwmon/flash.c [deleted file]
board/lwmon/lwmon.c [deleted file]
board/lwmon/pcmcia.c [deleted file]
board/lwmon/u-boot.lds.debug [deleted file]
board/manroland/hmi1001/Kconfig [deleted file]
board/manroland/hmi1001/MAINTAINERS [deleted file]
board/manroland/hmi1001/Makefile [deleted file]
board/manroland/hmi1001/hmi1001.c [deleted file]
board/manroland/mucmc52/Kconfig [deleted file]
board/manroland/mucmc52/MAINTAINERS [deleted file]
board/manroland/mucmc52/Makefile [deleted file]
board/manroland/mucmc52/mucmc52.c [deleted file]
board/manroland/uc100/Kconfig [deleted file]
board/manroland/uc100/MAINTAINERS [deleted file]
board/manroland/uc100/Makefile [deleted file]
board/manroland/uc100/pcmcia.c [deleted file]
board/manroland/uc100/uc100.c [deleted file]
board/manroland/uc101/Kconfig [deleted file]
board/manroland/uc101/MAINTAINERS [deleted file]
board/manroland/uc101/Makefile [deleted file]
board/manroland/uc101/uc101.c [deleted file]
board/matrix_vision/common/Makefile [deleted file]
board/matrix_vision/common/mv_common.c [deleted file]
board/matrix_vision/common/mv_common.h [deleted file]
board/matrix_vision/mvblx/mvblx.c
board/matrix_vision/mvblx/sys_eeprom.c
board/maxbcm/Kconfig
board/mcc200/Kconfig [deleted file]
board/mcc200/MAINTAINERS [deleted file]
board/mcc200/Makefile [deleted file]
board/mcc200/auto_update.c [deleted file]
board/mcc200/lcd.c [deleted file]
board/mcc200/mcc200.c [deleted file]
board/mcc200/mt46v16m16-75.h [deleted file]
board/mcc200/mt48lc16m16a2-75.h [deleted file]
board/mcc200/mt48lc16m32s2-75.h [deleted file]
board/mcc200/mt48lc8m32b2-6-7.h [deleted file]
board/micronas/vct/Kconfig
board/motionpro/motionpro.c
board/mpc8308_p1m/mpc8308_p1m.c
board/mpr2/Kconfig
board/ms7720se/Kconfig
board/ms7722se/Kconfig
board/ms7750se/Kconfig
board/muas3001/Kconfig [deleted file]
board/muas3001/MAINTAINERS [deleted file]
board/muas3001/Makefile [deleted file]
board/muas3001/muas3001.c [deleted file]
board/munices/munices.c
board/musenki/Kconfig [deleted file]
board/musenki/MAINTAINERS [deleted file]
board/musenki/Makefile [deleted file]
board/musenki/README [deleted file]
board/musenki/flash.c [deleted file]
board/musenki/musenki.c [deleted file]
board/mvblue/Kconfig [deleted file]
board/mvblue/MAINTAINERS [deleted file]
board/mvblue/Makefile [deleted file]
board/mvblue/flash.c [deleted file]
board/mvblue/mvblue.c [deleted file]
board/mvblue/u-boot.lds [deleted file]
board/netvia/Kconfig [deleted file]
board/netvia/MAINTAINERS [deleted file]
board/netvia/Makefile [deleted file]
board/netvia/flash.c [deleted file]
board/netvia/netvia.c [deleted file]
board/netvia/u-boot.lds.debug [deleted file]
board/nokia/rx51/rx51.c
board/nvidia/cardhu/cardhu.c
board/nvidia/common/board.c
board/nvidia/dalmore/dalmore.c
board/nvidia/jetson-tk1/jetson-tk1.c
board/nvidia/nyan-big/Kconfig [new file with mode: 0644]
board/nvidia/nyan-big/MAINTAINERS [new file with mode: 0644]
board/nvidia/nyan-big/Makefile [moved from arch/arm/cpu/armv7/tegra124/Makefile with 51% similarity]
board/nvidia/nyan-big/nyan-big.c [new file with mode: 0644]
board/nvidia/nyan-big/pinmux-config-nyan-big.h [new file with mode: 0644]
board/nvidia/venice2/as3722_init.h
board/nvidia/whistler/whistler.c
board/olimex/mx23_olinuxino/mx23_olinuxino.c
board/olimex/mx23_olinuxino/spl_boot.c
board/overo/overo.c
board/pandora/pandora.c
board/pb1x00/Kconfig
board/pdm360ng/pdm360ng.c
board/phytec/pcm030/pcm030.c
board/pm826/Kconfig [deleted file]
board/pm826/MAINTAINERS [deleted file]
board/pm826/Makefile [deleted file]
board/pm826/flash.c [deleted file]
board/pm826/pm826.c [deleted file]
board/pm828/Kconfig [deleted file]
board/pm828/MAINTAINERS [deleted file]
board/pm828/Makefile [deleted file]
board/pm828/flash.c [deleted file]
board/pm828/pm828.c [deleted file]
board/ppmc8260/Kconfig [deleted file]
board/ppmc8260/MAINTAINERS [deleted file]
board/ppmc8260/Makefile [deleted file]
board/ppmc8260/ppmc8260.c [deleted file]
board/qemu-mips/Kconfig
board/r360mpi/Kconfig [deleted file]
board/r360mpi/MAINTAINERS [deleted file]
board/r360mpi/Makefile [deleted file]
board/r360mpi/flash.c [deleted file]
board/r360mpi/pcmcia.c [deleted file]
board/r360mpi/r360mpi.c [deleted file]
board/r360mpi/u-boot.lds [deleted file]
board/raspberrypi/rpi/Kconfig [moved from board/raspberrypi/rpi_b/Kconfig with 71% similarity]
board/raspberrypi/rpi/MAINTAINERS [new file with mode: 0644]
board/raspberrypi/rpi/Makefile [moved from board/raspberrypi/rpi_b/Makefile with 96% similarity]
board/raspberrypi/rpi/rpi.c [moved from board/raspberrypi/rpi_b/rpi_b.c with 56% similarity]
board/raspberrypi/rpi_b/MAINTAINERS [deleted file]
board/renesas/MigoR/Kconfig
board/renesas/alt/Makefile
board/renesas/alt/alt.c
board/renesas/alt/qos.c
board/renesas/ap325rxa/Kconfig
board/renesas/ecovec/Kconfig
board/renesas/ecovec/ecovec.c
board/renesas/gose/Kconfig [moved from board/esd/dp405/Kconfig with 50% similarity]
board/renesas/gose/MAINTAINERS [new file with mode: 0644]
board/renesas/gose/Makefile [new file with mode: 0644]
board/renesas/gose/gose.c [new file with mode: 0644]
board/renesas/gose/qos.c [new file with mode: 0644]
board/renesas/gose/qos.h [new file with mode: 0644]
board/renesas/koelsch/Makefile
board/renesas/koelsch/koelsch.c
board/renesas/koelsch/qos.c
board/renesas/lager/Makefile
board/renesas/lager/lager.c
board/renesas/lager/qos.c
board/renesas/r0p7734/Kconfig
board/renesas/r2dplus/Kconfig
board/renesas/r7780mp/Kconfig
board/renesas/rcar-gen2-common/common.c [new file with mode: 0644]
board/renesas/rsk7203/Kconfig
board/renesas/rsk7264/Kconfig
board/renesas/rsk7269/Kconfig
board/renesas/sh7752evb/Kconfig
board/renesas/sh7753evb/Kconfig
board/renesas/sh7757lcr/Kconfig
board/renesas/sh7763rdp/Kconfig
board/renesas/sh7785lcr/Kconfig
board/sacsng/Kconfig [deleted file]
board/sacsng/MAINTAINERS [deleted file]
board/sacsng/Makefile [deleted file]
board/sacsng/clkinit.c [deleted file]
board/sacsng/clkinit.h [deleted file]
board/sacsng/flash.c [deleted file]
board/sacsng/ioconfig.h [deleted file]
board/sacsng/sacsng.c [deleted file]
board/samsung/odroid/odroid.c
board/samsung/smdk5420/Kconfig
board/samsung/smdk5420/MAINTAINERS
board/samsung/smdk5420/smdk5420.c
board/sandpoint/Kconfig [deleted file]
board/sandpoint/MAINTAINERS [deleted file]
board/sandpoint/Makefile [deleted file]
board/sandpoint/README [deleted file]
board/sandpoint/dinkdl [deleted file]
board/sandpoint/flash.c [deleted file]
board/sandpoint/sandpoint.c [deleted file]
board/sandpoint/u-boot.lds [deleted file]
board/sbc8349/sbc8349.c
board/sbc8548/sbc8548.c
board/sbc8641d/sbc8641d.c
board/scb9328/flash.c
board/shmin/Kconfig
board/siemens/common/board.c
board/siemens/common/factoryset.c
board/siemens/common/factoryset.h
board/siemens/corvus/board.c
board/siemens/draco/board.c
board/siemens/pxm2/board.c
board/siemens/rut/board.c
board/siemens/taurus/taurus.c
board/socrates/socrates.c
board/solidrun/hummingboard/hummingboard.c
board/spd8xx/Kconfig [deleted file]
board/spd8xx/MAINTAINERS [deleted file]
board/spd8xx/Makefile [deleted file]
board/spd8xx/flash.c [deleted file]
board/spd8xx/spd8xx.c [deleted file]
board/spd8xx/u-boot.lds [deleted file]
board/spd8xx/u-boot.lds.debug [deleted file]
board/st/stv0991/Kconfig [new file with mode: 0644]
board/st/stv0991/MAINTAINERS [new file with mode: 0644]
board/st/stv0991/Makefile [new file with mode: 0644]
board/st/stv0991/stv0991.c [new file with mode: 0644]
board/stx/stxssa/stxssa.c
board/sunxi/Kconfig
board/sunxi/MAINTAINERS
board/sunxi/Makefile
board/sunxi/ahci.c
board/sunxi/board.c
board/sunxi/dram_sun4i_408_1024_iow8.c [new file with mode: 0644]
board/sunxi/gmac.c
board/tbs/tbs2910/Kconfig [new file with mode: 0644]
board/tbs/tbs2910/MAINTAINERS [new file with mode: 0644]
board/tbs/tbs2910/Makefile [new file with mode: 0644]
board/tbs/tbs2910/tbs2910.c [new file with mode: 0644]
board/technexion/tao3530/tao3530.c
board/ti/am335x/Kconfig
board/ti/am335x/README
board/ti/beagle/beagle.c
board/ti/beagle_x15/Kconfig [new file with mode: 0644]
board/ti/beagle_x15/MAINTAINERS [new file with mode: 0644]
board/ti/beagle_x15/Makefile [new file with mode: 0644]
board/ti/beagle_x15/board.c [new file with mode: 0644]
board/ti/beagle_x15/mux_data.h [new file with mode: 0644]
board/ti/dra7xx/evm.c
board/ti/dra7xx/mux_data.h
board/ti/evm/evm.c
board/ti/ks2_evm/Kconfig
board/ti/ks2_evm/README
board/ti/ks2_evm/board.c
board/ti/ks2_evm/board_k2l.c
board/ti/panda/panda.c
board/ti/sdp3430/sdp.c
board/timll/devkit8000/devkit8000.c
board/toradex/apalis_t30/apalis_t30.c
board/tqc/tqm5200/tqm5200.c
board/tqc/tqm834x/tqm834x.c
board/tqc/tqm8xx/Kconfig
board/tqc/tqm8xx/MAINTAINERS
board/tqc/tqm8xx/tqm8xx.c
board/tqc/tqma6/tqma6.c
board/tqc/tqma6/tqma6_bb.h
board/tqc/tqma6/tqma6_mba6.c
board/utx8245/Kconfig [deleted file]
board/utx8245/MAINTAINERS [deleted file]
board/utx8245/Makefile [deleted file]
board/utx8245/flash.c [deleted file]
board/utx8245/utx8245.c [deleted file]
board/ve8313/ve8313.c
board/wandboard/wandboard.c
board/xes/xpedite517x/MAINTAINERS
board/xes/xpedite517x/xpedite517x.c
board/xes/xpedite520x/MAINTAINERS
board/xes/xpedite520x/xpedite520x.c
board/xes/xpedite537x/MAINTAINERS
board/xes/xpedite537x/xpedite537x.c
board/xes/xpedite550x/MAINTAINERS
board/xes/xpedite550x/xpedite550x.c
board/xilinx/zynq/.gitignore
board/xilinx/zynq/Makefile
board/xilinx/zynq/legacy.c [new file with mode: 0644]
board/xilinx/zynq/xil_io.h
common/Kconfig
common/Makefile
common/board_f.c
common/board_r.c
common/bootm.c
common/cli_hush.c
common/cmd_bdinfo.c
common/cmd_dfu.c
common/cmd_elf.c
common/cmd_ext4.c
common/cmd_fastboot.c
common/cmd_fat.c
common/cmd_fdt.c
common/cmd_fitupd.c
common/cmd_fpgad.c
common/cmd_fs.c
common/cmd_fs_uuid.c [new file with mode: 0644]
common/cmd_fuse.c
common/cmd_hash.c
common/cmd_i2c.c
common/cmd_md5sum.c
common/cmd_mem.c
common/cmd_mmc.c
common/cmd_pci.c
common/cmd_pcmcia.c
common/cmd_sata.c
common/cmd_sf.c
common/console.c
common/dlmalloc.c
common/edid.c
common/env_fat.c
common/env_nand.c
common/fb_mmc.c
common/fdt_support.c
common/flash.c
common/hash.c
common/image-fdt.c
common/image-fit.c
common/image.c
common/lcd.c
common/malloc_simple.c [new file with mode: 0644]
common/spl/spl.c
common/spl/spl_ext.c
common/spl/spl_mmc.c
common/spl/spl_nand.c
common/spl/spl_sata.c
common/stdio.c
common/usb.c
common/usb_hub.c
common/usb_kbd.c
common/usb_storage.c
configs/A10-OLinuXino-Lime_defconfig
configs/A10s-OLinuXino-M_defconfig
configs/A13-OLinuXinoM_defconfig
configs/A13-OLinuXino_defconfig
configs/A20-OLinuXino-Lime2_defconfig
configs/A20-OLinuXino-Lime_defconfig
configs/A20-OLinuXino_MICRO_defconfig
configs/A3000_defconfig [deleted file]
configs/APC405_defconfig [deleted file]
configs/AR405_defconfig [deleted file]
configs/ASH405_defconfig [deleted file]
configs/Auxtek-T004_defconfig
configs/Bananapi_defconfig
configs/Bananapro_defconfig [new file with mode: 0644]
configs/CMS700_defconfig [deleted file]
configs/CPC45_ROMBOOT_defconfig [deleted file]
configs/CPC45_defconfig [deleted file]
configs/CPCI405AB_defconfig [deleted file]
configs/CPCI405DT_defconfig [deleted file]
configs/CPCI405_defconfig [deleted file]
configs/CPCIISER4_defconfig [deleted file]
configs/CPU86_ROMBOOT_defconfig [deleted file]
configs/CPU86_defconfig [deleted file]
configs/CPU87_ROMBOOT_defconfig [deleted file]
configs/CPU87_defconfig [deleted file]
configs/CSQ_CS908_defconfig [new file with mode: 0644]
configs/CU824_defconfig [deleted file]
configs/Colombus_defconfig
configs/Cubieboard2_FEL_defconfig [deleted file]
configs/Cubieboard2_defconfig
configs/Cubieboard_defconfig
configs/Cubietruck_FEL_defconfig [deleted file]
configs/Cubietruck_defconfig
configs/DP405_defconfig [deleted file]
configs/DU405_defconfig [deleted file]
configs/DU440_defconfig [deleted file]
configs/ELPT860_defconfig [deleted file]
configs/ESTEEM192E_defconfig [deleted file]
configs/FPS850L_defconfig [deleted file]
configs/FPS860L_defconfig [deleted file]
configs/G2000_defconfig [deleted file]
configs/HH405_defconfig [deleted file]
configs/HUB405_defconfig [deleted file]
configs/Hummingbird_A31_defconfig [new file with mode: 0644]
configs/IP860_defconfig [deleted file]
configs/IPHASE4539_defconfig [deleted file]
configs/IVML24_128_defconfig [deleted file]
configs/IVML24_256_defconfig [deleted file]
configs/IVML24_defconfig [deleted file]
configs/IVMS8_128_defconfig [deleted file]
configs/IVMS8_256_defconfig [deleted file]
configs/IVMS8_defconfig [deleted file]
configs/Ippo_q8h_defconfig [deleted file]
configs/Ippo_q8h_v1_2_defconfig [new file with mode: 0644]
configs/Ippo_q8h_v5_defconfig [new file with mode: 0644]
configs/KUP4K_defconfig [deleted file]
configs/KUP4X_defconfig [deleted file]
configs/Linksprite_pcDuino3_defconfig
configs/Linksprite_pcDuino3_fdt_defconfig [new file with mode: 0644]
configs/Linksprite_pcDuino_defconfig [new file with mode: 0644]
configs/MPC8266ADS_defconfig [deleted file]
configs/MSI_Primo73_defconfig [new file with mode: 0644]
configs/MSI_Primo81_defconfig [new file with mode: 0644]
configs/MUSENKI_defconfig [deleted file]
configs/MVBLUE_defconfig [deleted file]
configs/Mele_A1000G_defconfig
configs/Mele_A1000_defconfig
configs/Mele_M3_defconfig
configs/Mele_M9_defconfig [new file with mode: 0644]
configs/Mini-X-1Gb_defconfig
configs/Mini-X_defconfig
configs/NETVIA_V2_defconfig [deleted file]
configs/NETVIA_defconfig [deleted file]
configs/NSCU_defconfig [deleted file]
configs/OCRTC_defconfig [deleted file]
configs/PCI405_defconfig [deleted file]
configs/PM825_BIGFLASH_defconfig [deleted file]
configs/PM825_ROMBOOT_BIGFLASH_defconfig [deleted file]
configs/PM825_ROMBOOT_defconfig [deleted file]
configs/PM825_defconfig [deleted file]
configs/PM826_BIGFLASH_defconfig [deleted file]
configs/PM826_ROMBOOT_BIGFLASH_defconfig [deleted file]
configs/PM826_ROMBOOT_defconfig [deleted file]
configs/PM826_defconfig [deleted file]
configs/PM828_PCI_defconfig [deleted file]
configs/PM828_ROMBOOT_PCI_defconfig [deleted file]
configs/PM828_ROMBOOT_defconfig [deleted file]
configs/PM828_defconfig [deleted file]
configs/PMC405_defconfig [deleted file]
configs/R360MPI_defconfig [deleted file]
configs/RRvision_LCD_defconfig [deleted file]
configs/RRvision_defconfig [deleted file]
configs/SM850_defconfig [deleted file]
configs/SPD823TS_defconfig [deleted file]
configs/Sandpoint8240_defconfig [deleted file]
configs/Sandpoint8245_defconfig [deleted file]
configs/T1024QDS_D4_SECURE_BOOT_defconfig [new file with mode: 0644]
configs/T1024QDS_NAND_defconfig [new file with mode: 0644]
configs/T1024QDS_SDCARD_defconfig [new file with mode: 0644]
configs/T1024QDS_SECURE_BOOT_defconfig [new file with mode: 0644]
configs/T1024QDS_SPIFLASH_defconfig [new file with mode: 0644]
configs/T1024RDB_NAND_defconfig [new file with mode: 0644]
configs/T1024RDB_SDCARD_defconfig [new file with mode: 0644]
configs/T1024RDB_SECURE_BOOT_defconfig [new file with mode: 0644]
configs/T1024RDB_SPIFLASH_defconfig [new file with mode: 0644]
configs/T1024RDB_defconfig [new file with mode: 0644]
configs/TASREG_defconfig [deleted file]
configs/TK885D_defconfig [deleted file]
configs/VOH405_defconfig [deleted file]
configs/VoVPN-GW_66MHz_defconfig [deleted file]
configs/WUH405_defconfig [deleted file]
configs/alt_defconfig
configs/am335x_evm_nor_defconfig
configs/am335x_evm_norboot_defconfig
configs/armadillo-800eva_defconfig
configs/atc_defconfig [deleted file]
configs/ba10_tv_box_defconfig
configs/bcm11130_defconfig [new file with mode: 0644]
configs/bcm11130_nand_defconfig [new file with mode: 0644]
configs/bcm911360_entphn-ns_defconfig [new file with mode: 0644]
configs/bcm911360_entphn_defconfig [new file with mode: 0644]
configs/bcm911360k_defconfig [new file with mode: 0644]
configs/bcm958300k-ns_defconfig [new file with mode: 0644]
configs/bcm958300k_defconfig
configs/bcm958305k_defconfig [new file with mode: 0644]
configs/bcm958622hr_defconfig
configs/beagle_x15_defconfig [new file with mode: 0644]
configs/chromebook_link_defconfig [new file with mode: 0644]
configs/cm_fx6_defconfig
configs/cm_t3517_defconfig [new file with mode: 0644]
configs/cogent_mpc8260_defconfig [deleted file]
configs/cogent_mpc8xx_defconfig [deleted file]
configs/coreboot-x86_defconfig
configs/corvus_defconfig
configs/crownbay_defconfig [new file with mode: 0644]
configs/dbau1000_defconfig
configs/dbau1100_defconfig
configs/dbau1500_defconfig
configs/dbau1550_defconfig
configs/dbau1550_el_defconfig
configs/eXalion_defconfig [deleted file]
configs/ep8260_defconfig [deleted file]
configs/ep82xxm_defconfig [deleted file]
configs/gose_defconfig [new file with mode: 0644]
configs/gr_cpci_ax2000_defconfig
configs/gr_ep2s60_defconfig
configs/gr_xc3s_1500_defconfig
configs/grsim_defconfig
configs/grsim_leon2_defconfig
configs/gw8260_defconfig [deleted file]
configs/gwventana_defconfig
configs/hermes_defconfig [deleted file]
configs/hmi1001_defconfig [deleted file]
configs/hrcon_defconfig [new file with mode: 0644]
configs/i12-tvbox_defconfig
configs/koelsch_defconfig
configs/kzm9g_defconfig
configs/lager_defconfig
configs/ls1021aqds_nand_defconfig [new file with mode: 0644]
configs/ls1021aqds_qspi_defconfig [new file with mode: 0644]
configs/ls1021aqds_sdcard_defconfig [new file with mode: 0644]
configs/ls1021atwr_qspi_defconfig [new file with mode: 0644]
configs/ls1021atwr_sdcard_defconfig [new file with mode: 0644]
configs/lwmon_defconfig [deleted file]
configs/malta_defconfig
configs/maltael_defconfig
configs/mcc200_COM12_SDRAM_defconfig [deleted file]
configs/mcc200_COM12_defconfig [deleted file]
configs/mcc200_COM12_highboot_SDRAM_defconfig [deleted file]
configs/mcc200_COM12_highboot_defconfig [deleted file]
configs/mcc200_SDRAM_defconfig [deleted file]
configs/mcc200_defconfig [deleted file]
configs/mcc200_highboot_SDRAM_defconfig [deleted file]
configs/mcc200_highboot_defconfig [deleted file]
configs/muas3001_defconfig [deleted file]
configs/muas3001_dev_defconfig [deleted file]
configs/mucmc52_defconfig [deleted file]
configs/mx6sabresd_spl_defconfig [new file with mode: 0644]
configs/mx6slevk_spinor_defconfig [new file with mode: 0644]
configs/novena_defconfig [new file with mode: 0644]
configs/nyan-big_defconfig [new file with mode: 0644]
configs/odroid-xu3_defconfig [new file with mode: 0644]
configs/pb1000_defconfig
configs/peach-pi_defconfig [new file with mode: 0644]
configs/ph1_ld4_defconfig
configs/ph1_pro4_defconfig
configs/ph1_sld8_defconfig
configs/ppmc8260_defconfig [deleted file]
configs/prs200_DDR_defconfig [deleted file]
configs/prs200_defconfig [deleted file]
configs/prs200_highboot_DDR_defconfig [deleted file]
configs/prs200_highboot_defconfig [deleted file]
configs/qemu_mips64_defconfig
configs/qemu_mips64el_defconfig
configs/qemu_mips_defconfig
configs/qemu_mipsel_defconfig
configs/qt840a_defconfig
configs/r7-tv-dongle_defconfig
configs/rpi_b_defconfig [deleted file]
configs/rpi_defconfig [new file with mode: 0644]
configs/sacsng_defconfig [deleted file]
configs/sama5d4_xplained_mmc_defconfig [new file with mode: 0644]
configs/sama5d4_xplained_nandflash_defconfig [new file with mode: 0644]
configs/sama5d4_xplained_spiflash_defconfig [new file with mode: 0644]
configs/sama5d4ek_mmc_defconfig [new file with mode: 0644]
configs/sama5d4ek_nandflash_defconfig [new file with mode: 0644]
configs/sama5d4ek_spiflash_defconfig [new file with mode: 0644]
configs/sh7752evb_defconfig
configs/sh7753evb_defconfig
configs/sh7757lcr_defconfig
configs/sh7785lcr_32bit_defconfig
configs/socfpga_socrates_defconfig [new file with mode: 0644]
configs/stv0991_defconfig [new file with mode: 0644]
configs/taurus_defconfig
configs/tbs2910_defconfig [new file with mode: 0644]
configs/uc100_defconfig [deleted file]
configs/uc101_defconfig [deleted file]
configs/utx8245_defconfig [deleted file]
configs/vct_platinum_defconfig
configs/vct_platinum_onenand_defconfig
configs/vct_platinum_onenand_small_defconfig
configs/vct_platinum_small_defconfig
configs/vct_platinumavc_defconfig
configs/vct_platinumavc_onenand_defconfig
configs/vct_platinumavc_onenand_small_defconfig
configs/vct_platinumavc_small_defconfig
configs/vct_premium_defconfig
configs/vct_premium_onenand_defconfig
configs/vct_premium_onenand_small_defconfig
configs/vct_premium_small_defconfig
configs/virtlab2_defconfig [deleted file]
configs/zynq_zybo_defconfig [new file with mode: 0644]
disk/part_efi.c
doc/README.clang
doc/README.fsl-dpaa [new file with mode: 0644]
doc/README.kwbimage
doc/README.mxsimage
doc/README.odroid
doc/README.scrapyard
doc/README.video
doc/README.x86 [new file with mode: 0644]
doc/SPI/README.altera_spi [new file with mode: 0644]
doc/device-tree-bindings/ata/intel-sata.txt [new file with mode: 0644]
doc/device-tree-bindings/input/cros-ec-keyb.txt
doc/device-tree-bindings/misc/intel-lpc.txt [new file with mode: 0644]
doc/device-tree-bindings/video/intel-gma.txt [new file with mode: 0644]
doc/driver-model/README.txt
doc/git-mailrc
doc/mkimage.1
drivers/Makefile
drivers/bios_emulator/Makefile
drivers/bios_emulator/atibios.c
drivers/bios_emulator/besys.c
drivers/bios_emulator/bios.c
drivers/bios_emulator/biosemui.h
drivers/bios_emulator/include/biosemu.h
drivers/bios_emulator/include/x86emu.h
drivers/bios_emulator/include/x86emu/debug.h
drivers/bios_emulator/include/x86emu/regs.h
drivers/bios_emulator/x86emu/debug.c
drivers/bios_emulator/x86emu/decode.c
drivers/bios_emulator/x86emu/ops.c
drivers/bios_emulator/x86emu/ops2.c
drivers/bios_emulator/x86emu/sys.c
drivers/block/ahci.c
drivers/block/ata_piix.c
drivers/block/dwc_ahsata.c
drivers/block/fsl_sata.c
drivers/block/pata_bfin.c
drivers/block/pata_bfin.h
drivers/block/sata_dwc.c
drivers/block/sata_sil.c
drivers/block/sata_sil3114.c
drivers/core/Makefile
drivers/core/device-remove.c [new file with mode: 0644]
drivers/core/device.c
drivers/core/lists.c
drivers/core/root.c
drivers/crypto/fsl/jr.c
drivers/ddr/fsl/arm_ddr_gen3.c
drivers/ddr/fsl/ctrl_regs.c
drivers/ddr/fsl/ddr4_dimm_params.c
drivers/ddr/fsl/fsl_ddr_gen4.c
drivers/ddr/fsl/lc_common_dimm_params.c
drivers/ddr/fsl/main.c
drivers/ddr/fsl/mpc85xx_ddr_gen3.c
drivers/dfu/dfu.c
drivers/dfu/dfu_mmc.c
drivers/dma/keystone_nav.c
drivers/fpga/zynqpl.c
drivers/gpio/at91_gpio.c
drivers/gpio/gpio-uclass.c
drivers/gpio/intel_ich6_gpio.c
drivers/gpio/sunxi_gpio.c
drivers/i2c/Makefile
drivers/i2c/adi_i2c.c [new file with mode: 0644]
drivers/i2c/bfin-twi_i2c.c [deleted file]
drivers/i2c/fsl_i2c.c
drivers/i2c/i2c-emul-uclass.c [new file with mode: 0644]
drivers/i2c/i2c-uclass.c [new file with mode: 0644]
drivers/i2c/i2c_core.c
drivers/i2c/mxc_i2c.c
drivers/i2c/ppc4xx_i2c.c
drivers/i2c/rcar_i2c.c
drivers/i2c/sandbox_i2c.c [new file with mode: 0644]
drivers/i2c/tegra_i2c.c
drivers/input/cros_ec_keyb.c
drivers/misc/Makefile
drivers/misc/cros_ec.c
drivers/misc/cros_ec_spi.c
drivers/misc/i2c_eeprom.c [new file with mode: 0644]
drivers/misc/i2c_eeprom_emul.c [new file with mode: 0644]
drivers/misc/mxc_ocotp.c
drivers/misc/mxs_ocotp.c
drivers/misc/smsc_lpc47m.c [new file with mode: 0644]
drivers/mmc/Makefile
drivers/mmc/dw_mmc.c
drivers/mmc/exynos_dw_mmc.c
drivers/mmc/fsl_esdhc.c
drivers/mmc/mmc.c
drivers/mmc/mvebu_mmc.c
drivers/mmc/omap_hsmmc.c
drivers/mmc/pxa_mmc_gen.c
drivers/mmc/sh_mmcif.c
drivers/mmc/sh_mmcif.h
drivers/mmc/sunxi_mmc.c
drivers/mtd/cfi_mtd.c
drivers/mtd/jedec_flash.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/atmel_nand.c
drivers/mtd/nand/atmel_nand_ecc.h
drivers/mtd/nand/denali.c
drivers/mtd/nand/denali.h
drivers/mtd/nand/denali_spl.c
drivers/mtd/nand/fsl_ifc_nand.c
drivers/mtd/nand/fsl_ifc_spl.c
drivers/mtd/nand/mxs_nand.c
drivers/mtd/nand/nand_base.c
drivers/mtd/nand/nand_util.c
drivers/mtd/nand/omap_gpmc.c
drivers/mtd/nand/s3c2410_nand.c
drivers/mtd/nand/vf610_nfc.c
drivers/mtd/spi/Makefile
drivers/mtd/spi/ramtron.c [deleted file]
drivers/mtd/spi/sandbox.c
drivers/mtd/spi/sf_internal.h
drivers/mtd/spi/sf_ops.c
drivers/mtd/spi/sf_params.c
drivers/mtd/spi/sf_probe.c
drivers/net/fm/Makefile
drivers/net/fm/b4860.c
drivers/net/fm/eth.c
drivers/net/fm/init.c
drivers/net/fm/memac.c
drivers/net/fm/memac_phy.c
drivers/net/fm/t1024.c [new file with mode: 0644]
drivers/net/fm/t1040.c
drivers/net/keystone_net.c
drivers/net/macb.c
drivers/net/mpc5xxx_fec.c
drivers/net/netconsole.c
drivers/net/phy/Makefile
drivers/net/phy/cortina.c [new file with mode: 0644]
drivers/net/phy/marvell.c
drivers/net/phy/phy.c
drivers/net/phy/vitesse.c
drivers/net/rtl8169.c
drivers/net/sh_eth.c
drivers/net/sh_eth.h
drivers/net/smc911x.c
drivers/net/uli526x.c
drivers/pci/Makefile
drivers/pci/pci.c
drivers/pci/pci_auto.c
drivers/pci/pci_rom.c [new file with mode: 0644]
drivers/pci/pci_tegra.c [new file with mode: 0644]
drivers/pci/pcie_layerscape.c [new file with mode: 0644]
drivers/pcmcia/Makefile
drivers/pcmcia/i82365.c [deleted file]
drivers/pcmcia/mpc8xx_pcmcia.c
drivers/pcmcia/tqm8xx_pcmcia.c
drivers/power/Kconfig
drivers/power/Makefile
drivers/power/as3722.c [new file with mode: 0644]
drivers/power/axp209.c
drivers/power/axp221.c [new file with mode: 0644]
drivers/power/palmas.c
drivers/power/pmic/pmic_max77686.c
drivers/power/power_i2c.c
drivers/power/power_spi.c
drivers/power/tps6586x.c
drivers/power/twl4030.c
drivers/qe/Makefile
drivers/qe/fdt.c
drivers/qe/qe.c
drivers/qe/qe.h
drivers/rtc/Makefile
drivers/rtc/bfin_rtc.c
drivers/rtc/ds12887.c [deleted file]
drivers/rtc/mc146818.c
drivers/rtc/mvrtc.h
drivers/serial/Makefile
drivers/serial/atmel_usart.c
drivers/serial/ns16550.c
drivers/serial/serial-uclass.c
drivers/serial/serial.c
drivers/serial/serial_dw.c [moved from drivers/serial/serial_coreboot.c with 64% similarity]
drivers/serial/serial_pl01x.c
drivers/serial/serial_sh.h
drivers/serial/serial_tegra.c
drivers/serial/serial_uniphier.c
drivers/serial/serial_x86.c [new file with mode: 0644]
drivers/serial/usbtty.c
drivers/spi/Makefile
drivers/spi/altera_spi.c
drivers/spi/atmel_spi.h
drivers/spi/cadence_qspi.c [new file with mode: 0644]
drivers/spi/cadence_qspi.h [new file with mode: 0644]
drivers/spi/cadence_qspi_apb.c [new file with mode: 0644]
drivers/spi/designware_spi.c [new file with mode: 0644]
drivers/spi/fsl_espi.c
drivers/spi/fsl_qspi.c
drivers/spi/fsl_qspi.h
drivers/spi/ftssp010_spi.c
drivers/spi/ich.c
drivers/spi/mxc_spi.c
drivers/spi/spi-uclass.c
drivers/spi/ti_qspi.c
drivers/thermal/Makefile [new file with mode: 0644]
drivers/thermal/imx_thermal.c [new file with mode: 0644]
drivers/thermal/thermal-uclass.c [new file with mode: 0644]
drivers/tpm/tpm.c
drivers/tpm/tpm_tis_i2c.c
drivers/tpm/tpm_tis_lpc.c
drivers/usb/Kconfig
drivers/usb/eth/Makefile
drivers/usb/eth/asix88179.c [new file with mode: 0644]
drivers/usb/eth/usb_ether.c
drivers/usb/gadget/Makefile
drivers/usb/gadget/atmel_usba_udc.c
drivers/usb/gadget/composite.c
drivers/usb/gadget/designware_udc.c
drivers/usb/gadget/ether.c
drivers/usb/gadget/f_dfu.c
drivers/usb/gadget/f_fastboot.c
drivers/usb/gadget/f_thor.c
drivers/usb/gadget/g_dnl.c
drivers/usb/gadget/pxa27x_udc.c
drivers/usb/gadget/s3c_udc_otg.c
drivers/usb/gadget/s3c_udc_otg_phy.c [new file with mode: 0644]
drivers/usb/gadget/s3c_udc_otg_xfer_dma.c
drivers/usb/host/Kconfig [new file with mode: 0644]
drivers/usb/host/Makefile
drivers/usb/host/dwc2.c
drivers/usb/host/ehci-exynos.c
drivers/usb/host/ehci-fsl.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-mx6.c
drivers/usb/host/ehci-rmobile.c
drivers/usb/host/ehci-sunxi.c
drivers/usb/host/ehci-uniphier.c [new file with mode: 0644]
drivers/usb/host/ehci.h
drivers/usb/host/isp116x-hcd.c
drivers/usb/host/ohci-hcd.c
drivers/usb/host/ohci-s3c24xx.c
drivers/usb/host/r8a66597-hcd.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.c
drivers/usb/musb/musb_hcd.h
drivers/usb/phy/omap_usb_phy.c
drivers/video/Kconfig
drivers/video/Makefile
drivers/video/ati_radeon_fb.c
drivers/video/cfb_console.c
drivers/video/mpc8xx_lcd.c
drivers/video/smiLynxEM.c
drivers/video/sunxi_display.c [new file with mode: 0644]
drivers/video/videomodes.c
drivers/video/videomodes.h
drivers/video/x86_fb.c [new file with mode: 0644]
examples/standalone/test_burst.c
fs/ext4/dev.c
fs/ext4/ext4_common.c
fs/ext4/ext4_common.h
fs/ext4/ext4_write.c
fs/ext4/ext4fs.c
fs/fat/fat.c
fs/fat/fat_write.c
fs/fat/file.c
fs/fs.c
fs/sandbox/sandboxfs.c
fs/ubifs/ubifs.h
fs/zfs/zfs.c
include/ahci.h
include/asm-generic/global_data.h
include/asm-generic/gpio.h
include/axp209.h
include/axp221.h [new file with mode: 0644]
include/bios_emul.h [new file with mode: 0644]
include/common.h
include/commproc.h
include/config_defaults.h
include/config_fallbacks.h
include/configs/A3000.h [deleted file]
include/configs/APC405.h [deleted file]
include/configs/AR405.h [deleted file]
include/configs/ASH405.h [deleted file]
include/configs/B4860QDS.h
include/configs/BSC9131RDB.h
include/configs/BSC9132QDS.h
include/configs/C29XPCIE.h
include/configs/CMS700.h [deleted file]
include/configs/CPC45.h [deleted file]
include/configs/CPCI2DP.h
include/configs/CPCI405.h [deleted file]
include/configs/CPCI4052.h
include/configs/CPCI405AB.h [deleted file]
include/configs/CPCI405DT.h [deleted file]
include/configs/CPCIISER4.h [deleted file]
include/configs/CPU86.h [deleted file]
include/configs/CPU87.h [deleted file]
include/configs/CU824.h [deleted file]
include/configs/DP405.h [deleted file]
include/configs/DU405.h [deleted file]
include/configs/DU440.h [deleted file]
include/configs/ELPT860.h [deleted file]
include/configs/ESTEEM192E.h [deleted file]
include/configs/FPS850L.h [deleted file]
include/configs/FPS860L.h [deleted file]
include/configs/G2000.h [deleted file]
include/configs/HH405.h [deleted file]
include/configs/HUB405.h [deleted file]
include/configs/IP860.h [deleted file]
include/configs/IPHASE4539.h [deleted file]
include/configs/IVML24.h [deleted file]
include/configs/IVMS8.h [deleted file]
include/configs/KUP4K.h [deleted file]
include/configs/KUP4X.h [deleted file]
include/configs/MPC8266ADS.h [deleted file]
include/configs/MPC837XEMDS.h
include/configs/MPC837XERDB.h
include/configs/MUSENKI.h [deleted file]
include/configs/MVBLUE.h [deleted file]
include/configs/NETVIA.h [deleted file]
include/configs/NSCU.h [deleted file]
include/configs/OCRTC.h [deleted file]
include/configs/P1010RDB.h
include/configs/P1022DS.h
include/configs/P1023RDB.h
include/configs/P2041RDB.h
include/configs/P5040DS.h
include/configs/PCI405.h [deleted file]
include/configs/PLU405.h
include/configs/PM826.h [deleted file]
include/configs/PM828.h [deleted file]
include/configs/PMC405.h [deleted file]
include/configs/PMC405DE.h
include/configs/R360MPI.h [deleted file]
include/configs/RRvision.h [deleted file]
include/configs/SM850.h [deleted file]
include/configs/SPD823TS.h [deleted file]
include/configs/Sandpoint8240.h [deleted file]
include/configs/Sandpoint8245.h [deleted file]
include/configs/T102xQDS.h [new file with mode: 0644]
include/configs/T102xRDB.h [new file with mode: 0644]
include/configs/T1040QDS.h
include/configs/T104xRDB.h
include/configs/T208xQDS.h
include/configs/T208xRDB.h
include/configs/T4240EMU.h
include/configs/T4240QDS.h
include/configs/T4240RDB.h
include/configs/TASREG.h [deleted file]
include/configs/TK885D.h [deleted file]
include/configs/TQM5200.h
include/configs/TQM823L.h
include/configs/TQM823M.h
include/configs/TQM850L.h
include/configs/TQM850M.h
include/configs/TQM855L.h
include/configs/TQM855M.h
include/configs/TQM860L.h
include/configs/TQM860M.h
include/configs/TQM862L.h
include/configs/TQM862M.h
include/configs/TQM866M.h
include/configs/TQM885D.h
include/configs/VCMA9.h
include/configs/VOH405.h [deleted file]
include/configs/VOM405.h
include/configs/VoVPN-GW.h [deleted file]
include/configs/WUH405.h [deleted file]
include/configs/a3m071.h
include/configs/a4m072.h
include/configs/afeb9260.h
include/configs/alt.h
include/configs/am335x_evm.h
include/configs/am3517_crane.h
include/configs/am3517_evm.h
include/configs/am43xx_evm.h
include/configs/apalis_t30.h
include/configs/apf27.h
include/configs/aristainetos.h
include/configs/armadillo-800eva.h
include/configs/arndale.h
include/configs/at91rm9200ek.h
include/configs/at91sam9260ek.h
include/configs/at91sam9261ek.h
include/configs/at91sam9263ek.h
include/configs/at91sam9rlek.h
include/configs/atc.h [deleted file]
include/configs/bcm28155_ap.h
include/configs/bcm_ep_board.h
include/configs/bct-brettl2.h
include/configs/beagle_x15.h [new file with mode: 0644]
include/configs/beaver.h
include/configs/bf518f-ezbrd.h
include/configs/bf526-ezbrd.h
include/configs/bf527-ad7160-eval.h
include/configs/bf527-ezkit.h
include/configs/bf527-sdp.h
include/configs/bf537-minotaur.h
include/configs/bf537-pnav.h
include/configs/bf537-srv1.h
include/configs/bf537-stamp.h
include/configs/bf538f-ezkit.h
include/configs/bf548-ezkit.h
include/configs/bf609-ezkit.h
include/configs/bfin_adi_common.h
include/configs/br4.h
include/configs/calimain.h
include/configs/cam_enc_4xx.h
include/configs/cardhu.h
include/configs/chromebook_link.h [new file with mode: 0644]
include/configs/cm-bf527.h
include/configs/cm-bf537e.h
include/configs/cm-bf537u.h
include/configs/cm-bf548.h
include/configs/cm5200.h
include/configs/cm_t35.h
include/configs/cm_t3517.h [new file with mode: 0644]
include/configs/cm_t54.h
include/configs/cogent_common.h [deleted file]
include/configs/cogent_mpc8260.h [deleted file]
include/configs/cogent_mpc8xx.h [deleted file]
include/configs/colibri_t30.h
include/configs/corenet_ds.h
include/configs/corvus.h
include/configs/cpuat91.h
include/configs/crownbay.h [new file with mode: 0644]
include/configs/da830evm.h
include/configs/da850evm.h
include/configs/dalmore.h
include/configs/davinci_dm355evm.h
include/configs/davinci_dm355leopard.h
include/configs/davinci_dm365evm.h
include/configs/davinci_dm6467evm.h
include/configs/davinci_dvevm.h
include/configs/davinci_schmoogie.h
include/configs/davinci_sffsdr.h
include/configs/davinci_sonata.h
include/configs/dbau1x00.h
include/configs/devkit8000.h
include/configs/dlvision.h
include/configs/dns325.h
include/configs/dra7xx_evm.h
include/configs/eXalion.h [deleted file]
include/configs/ea20.h
include/configs/edb93xx.h
include/configs/edminiv2.h
include/configs/embestmx6boards.h
include/configs/enbw_cmc.h
include/configs/ep8260.h [deleted file]
include/configs/ep82xxm.h [deleted file]
include/configs/ethernut5.h
include/configs/exynos-common.h
include/configs/exynos4-common.h
include/configs/exynos5-common.h
include/configs/exynos5-dt-common.h
include/configs/exynos5250-common.h
include/configs/exynos5420-common.h
include/configs/flea3.h
include/configs/gose.h [new file with mode: 0644]
include/configs/gw8260.h [deleted file]
include/configs/gw_ventana.h
include/configs/hawkboard.h
include/configs/hermes.h [deleted file]
include/configs/hmi1001.h [deleted file]
include/configs/hrcon.h [new file with mode: 0644]
include/configs/ids8313.h
include/configs/imx27lite-common.h
include/configs/imx31_litekit.h
include/configs/imx31_phycore.h
include/configs/imx6_spl.h
include/configs/ipam390.h
include/configs/jadecpu.h
include/configs/jetson-tk1.h
include/configs/k2e_evm.h
include/configs/k2hk_evm.h
include/configs/k2l_evm.h
include/configs/km/km83xx-common.h
include/configs/km/km_arm.h
include/configs/km/kmp204x-common.h
include/configs/km82xx.h
include/configs/koelsch.h
include/configs/ks2_evm.h
include/configs/lager.h
include/configs/ls1021aqds.h
include/configs/ls1021atwr.h
include/configs/lwmon.h [deleted file]
include/configs/lwmon5.h
include/configs/m28evk.h
include/configs/mcc200.h [deleted file]
include/configs/mcx.h
include/configs/meesc.h
include/configs/muas3001.h [deleted file]
include/configs/mucmc52.h [deleted file]
include/configs/mx31ads.h
include/configs/mx31pdk.h
include/configs/mx35pdk.h
include/configs/mx53loco.h
include/configs/mx6_common.h
include/configs/mx6qarm2.h
include/configs/mx6qsabreauto.h
include/configs/mx6sabre_common.h
include/configs/mx6sabresd.h
include/configs/mx6slevk.h
include/configs/mx6sxsabresd.h
include/configs/nhk8815.h
include/configs/novena.h [new file with mode: 0644]
include/configs/nyan-big.h [new file with mode: 0644]
include/configs/o2dnt-common.h
include/configs/odroid.h
include/configs/odroid_xu3.h [new file with mode: 0644]
include/configs/omap3_evm.h
include/configs/omap3_evm_quick_mmc.h
include/configs/omap3_igep00x0.h
include/configs/omap3_mvblx.h
include/configs/omap5_uevm.h
include/configs/origen.h
include/configs/ot1200.h
include/configs/otc570.h
include/configs/p1_p2_rdb_pc.h
include/configs/p1_twr.h
include/configs/pb1x00.h
include/configs/peach-pi.h [new file with mode: 0644]
include/configs/peach-pit.h
include/configs/ph1_ld4.h [deleted file]
include/configs/ph1_pro4.h [deleted file]
include/configs/ph1_sld8.h [deleted file]
include/configs/pm9261.h
include/configs/pm9263.h
include/configs/pm9g45.h
include/configs/ppmc8260.h [deleted file]
include/configs/pr1.h
include/configs/pxm2.h
include/configs/qemu-mips.h
include/configs/qemu-mips64.h
include/configs/qong.h
include/configs/rcar-gen2-common.h [new file with mode: 0644]
include/configs/rpi.h [moved from include/configs/rpi_b.h with 93% similarity]
include/configs/rsk7203.h
include/configs/rsk7264.h
include/configs/rsk7269.h
include/configs/rut.h
include/configs/s5p_goni.h
include/configs/s5pc210_universal.h
include/configs/sacsng.h [deleted file]
include/configs/sama5d3_xplained.h
include/configs/sama5d3xek.h
include/configs/sama5d4_xplained.h [new file with mode: 0644]
include/configs/sama5d4ek.h [new file with mode: 0644]
include/configs/sandbox.h
include/configs/sbc35_a9g20.h
include/configs/sbc8548.h
include/configs/scb9328.h
include/configs/seaboard.h
include/configs/sh7752evb.h
include/configs/sh7753evb.h
include/configs/sh7757lcr.h
include/configs/siemens-am33x-common.h
include/configs/smdk2410.h
include/configs/smdk5420.h
include/configs/smdkv310.h
include/configs/snapper9260.h
include/configs/socfpga_common.h
include/configs/socfpga_cyclone5.h
include/configs/stv0991.h [new file with mode: 0644]
include/configs/sun4i.h
include/configs/sun5i.h
include/configs/sun6i.h
include/configs/sun7i.h
include/configs/sun8i.h
include/configs/sunxi-common.h
include/configs/tao3530.h
include/configs/taurus.h
include/configs/tbs2910.h [new file with mode: 0644]
include/configs/tcm-bf518.h
include/configs/tcm-bf537.h
include/configs/tec-ng.h
include/configs/tegra-common.h
include/configs/tegra114-common.h
include/configs/tegra124-common.h
include/configs/tegra20-common.h
include/configs/tegra30-common.h
include/configs/ti814x_evm.h
include/configs/ti816x_evm.h
include/configs/ti_armv7_common.h
include/configs/ti_omap5_common.h
include/configs/tnetv107x_evm.h
include/configs/tny_a9260.h
include/configs/tqma6.h
include/configs/tricorder.h
include/configs/trimslice.h
include/configs/tt01.h
include/configs/uc100.h [deleted file]
include/configs/uc101.h [deleted file]
include/configs/udoo.h
include/configs/uniphier.h [moved from include/configs/uniphier-common.h with 81% similarity]
include/configs/usb_a9263.h
include/configs/utx8245.h [deleted file]
include/configs/vct.h
include/configs/venice2.h
include/configs/versatile.h
include/configs/vexpress_aemv8a.h
include/configs/vexpress_ca15_tc2.h
include/configs/vf610twr.h
include/configs/virtlab2.h [deleted file]
include/configs/wandboard.h
include/configs/whistler.h
include/configs/woodburn_common.h
include/configs/x86-common.h [moved from include/configs/coreboot.h with 71% similarity]
include/configs/xpedite1000.h
include/configs/xpedite517x.h
include/configs/xpedite520x.h
include/configs/xpedite537x.h
include/configs/xpedite550x.h
include/configs/zmx25.h
include/configs/zynq-common.h
include/configs/zynq_zybo.h [new file with mode: 0644]
include/cortina.h [new file with mode: 0644]
include/dfu.h
include/dm/device-internal.h
include/dm/device.h
include/dm/lists.h
include/dm/uclass-id.h
include/dm/ut.h
include/dm/util.h
include/dt-bindings/clock/tegra20-car.h
include/dt-bindings/clock/tegra30-car.h
include/dt-bindings/input/input.h [new file with mode: 0644]
include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h [new file with mode: 0644]
include/dt-bindings/pinctrl/pinctrl-tegra.h [new file with mode: 0644]
include/dt-bindings/reset/altr,rst-mgr.h [new file with mode: 0644]
include/edid.h
include/errno.h
include/ext4fs.h
include/fat.h
include/fdt_support.h
include/fdtdec.h
include/flash.h
include/fm_eth.h
include/fs.h
include/fsl_ddr_sdram.h
include/fsl_usb.h
include/g_dnl.h
include/gdsys_fpga.h
include/i2c.h
include/i2c_eeprom.h [new file with mode: 0644]
include/image.h
include/imx_thermal.h [new file with mode: 0644]
include/lcd.h
include/linux/compat.h
include/linux/kernel.h [new file with mode: 0644]
include/linux/linkage.h
include/linux/serial_reg.h [new file with mode: 0644]
include/linux/string.h
include/linux/usb/xhci-omap.h
include/malloc.h
include/mmc.h
include/mpc824x.h [deleted file]
include/mvebu_mmc.h
include/nand.h
include/os.h
include/parade.h [new file with mode: 0644]
include/part.h
include/pci.h
include/pci_ids.h
include/pci_rom.h [new file with mode: 0644]
include/pcmcia.h
include/pcmcia/cirrus.h [deleted file]
include/pcmcia/i82365.h [deleted file]
include/pcmcia/ss.h [deleted file]
include/pcmcia/ti113x.h [deleted file]
include/phy.h
include/power/as3722.h [new file with mode: 0644]
include/power/max77686_pmic.h
include/power/pfuze100_pmic.h
include/ppc_asm.tmpl
include/rtc.h
include/sandboxfs.h
include/sata.h
include/serial.h
include/sh_tmu.h
include/smsc_lpc47m.h [new file with mode: 0644]
include/spi.h
include/spl.h
include/status_led.h
include/thermal.h [new file with mode: 0644]
include/tps6586x.h
include/trace.h
include/twl4030.h
include/ubi_uboot.h
include/usb.h
include/usb/ehci-fsl.h
include/usb/omap1510_udc.h [deleted file]
include/usb/s3c_udc.h
include/usb_ether.h
include/vbe.h [new file with mode: 0644]
include/video_ad7176.h [deleted file]
include/video_ad7177.h [deleted file]
include/video_ad7179.h [deleted file]
include/video_fb.h
lib/Makefile
lib/bzip2/Makefile [new file with mode: 0644]
lib/bzip2/bzlib.c [moved from lib/bzlib.c with 100% similarity]
lib/bzip2/bzlib_crctable.c [moved from lib/bzlib_crctable.c with 100% similarity]
lib/bzip2/bzlib_decompress.c [moved from lib/bzlib_decompress.c with 100% similarity]
lib/bzip2/bzlib_huffman.c [moved from lib/bzlib_huffman.c with 100% similarity]
lib/bzip2/bzlib_private.h [moved from lib/bzlib_private.h with 100% similarity]
lib/bzip2/bzlib_randtable.c [moved from lib/bzlib_randtable.c with 100% similarity]
lib/errno_str.c [new file with mode: 0644]
lib/fdtdec.c
lib/initcall.c
lib/libfdt/Makefile
lib/string.c
lib/strmhz.c
lib/vsprintf.c
lib/zlib/zlib.h
net/bootp.c
post/drivers/memory.c
scripts/Kbuild.include
scripts/Makefile.autoconf
scripts/Makefile.build
scripts/Makefile.clean
scripts/Makefile.extrawarn
scripts/Makefile.host
scripts/Makefile.lib
scripts/Makefile.spl
scripts/binutils-version.sh [changed mode: 0644->0755]
scripts/dtc-version.sh [changed mode: 0644->0755]
scripts/fill_scrapyard.py [new file with mode: 0755]
scripts/gcc-stack-usage.sh [changed mode: 0644->0755]
scripts/gcc-version.sh [changed mode: 0644->0755]
scripts/get_maintainer.pl
scripts/kconfig/Makefile
scripts/kconfig/lxdialog/check-lxdialog.sh [changed mode: 0644->0755]
scripts/kconfig/lxdialog/dialog.h
scripts/kconfig/menu.c
scripts/kconfig/streamline_config.pl [changed mode: 0644->0755]
scripts/kernel-doc
scripts/mkmakefile [changed mode: 0644->0755]
scripts/multiconfig.sh [changed mode: 0644->0755]
test/command_ut.c
test/dm/Makefile
test/dm/cmd_dm.c
test/dm/i2c.c [new file with mode: 0644]
test/dm/test.dts
test/fs/fs-test.sh [new file with mode: 0755]
test/ums/ums_gadget_test.sh
tools/.gitignore
tools/Makefile
tools/buildman/README
tools/buildman/builderthread.py
tools/env/fw_env.c
tools/ifdtool.c [new file with mode: 0644]
tools/ifdtool.h [new file with mode: 0644]
tools/imximage.c
tools/kwbimage.c
tools/microcode-tool [new symlink]
tools/microcode-tool.py [new file with mode: 0755]
tools/mkenvimage.c
tools/mxsimage.c
tools/mxsimage.h
tools/pblimage.c

diff --git a/CREDITS b/CREDITS
deleted file mode 100644 (file)
index 43d4764..0000000
--- a/CREDITS
+++ /dev/null
@@ -1,536 +0,0 @@
-#
-#   Parts of the development effort for this project have been
-#   sponsored by SIEMENS AG, Austria. Thanks to SIEMENS for
-#   supporting an Open Source project!
-#
-#
-#   This is at least a partial credits-file of individual people that
-#   have contributed to the U-Boot project. It is sorted by name and
-#   formatted to allow easy grepping and beautification by scripts.
-#   The fields are: name (N), email (E), web-address (W), PGP key ID
-#   and fingerprint (P), description (D), and snail-mail address (S).
-#   Thanks,
-#
-#                       Wolfgang Denk
-#----------
-
-N: Dr. Bruno Achauer
-E: bruno@exet-ag.de
-D: Support for NetBSD (both as host and target system)
-
-N: Guillaume Alexandre
-E: guillaume.alexandre@gespac.ch
-D: Add PCIPPC6 configuration
-
-N: Pantelis Antoniou
-E: panto@intracom.gr
-D: NETVIA & NETPHONE board support, ARTOS support.
-D: Support for Silicon Turnkey eXpress XTc
-
-N: Pierre Aubert
-E: <p.aubert@staubli.com>
-D: Support for RPXClassic board
-
-N: Yuli Barcohen
-E: yuli@arabellasw.com
-D: Unified support for Motorola MPC826xADS/MPC8272ADS/PQ2FADS boards.
-D: Support for Zephyr Engineering ZPC.1900 board.
-D: Support for Interphase iSPAN boards.
-D: Support for Analogue&Micro Adder boards.
-D: Support for Analogue&Micro Rattler boards.
-W: http://www.arabellasw.com
-
-N: Jerry van Baren
-E: <vanbaren@cideas.com>
-D: BedBug port to 603e core (MPC82xx). Code for enhanced memory test.
-
-N: Pavel Bartusek
-E: <pba@sysgo.com>
-D: Reiserfs support
-W: http://www.elinos.com
-
-N: Andre Beaudin
-E: <andre.beaudin@colubris.com>
-D: PCMCIA, Ethernet, TFTP
-
-N: Jon Benediktsson
-E: jonb@marel.is
-D: Support for Marel V37 board
-
-N: Raphael Bossek
-E: raphael.bossek@solutions4linux.de
-D: 8xxrom-0.3.0
-
-N: Cliff Brake
-E: cliff.brake@gmail.com
-D: Port to Vibren PXA255 IDP platform
-W: http://www.vibren.com
-W: http://bec-systems.com
-
-N: Rick Bronson
-E: rick@efn.org
-D: Atmel AT91RM9200DK and NAND support
-
-N: David Brown
-E: DBrown03@harris.com
-D: Extensions to 8xxrom-0.3.0
-
-N: Oliver Brown
-E: obrown@adventnetworks.com
-D: Port to the gw8260 board
-
-N: Jonathan De Bruyne
-E: jonathan.debruyne@siemens.atea.be
-D: Port to Siemens IAD210 board
-
-N: Ken Chou
-E: kchou@ieee.org
-D: Support for A3000 SBC board
-
-N: Conn Clark
-E: clark@esteem.com
-D: ESTEEM192E support
-
-N: Magnus Damm
-E: damm@opensource.se
-D: 8xxrom
-
-N: Richard Danter
-E: richard.danter@windriver.com
-D: Support for Wind River PPMC 7xx/74xx boards
-
-N: George G. Davis
-E: gdavis@mvista.com
-D: Board ports for ADS GraphicsClient+ and Intel Assabet
-
-N: Arun Dharankar
-E: ADharankar@ATTBI.Com
-D: threads / scheduler example code
-
-N: K?ri Dav??sson
-E: kd@flaga.is
-D: FLAGA DM Support
-
-N: Wolfgang Denk
-E: wd@denx.de
-D: U-Boot initial version, continuing maintenance, ARMBoot merge
-W: http://www.denx.de
-
-N: Dan A. Dickey
-E: ddickey@charter.net
-D: FADS Support
-
-N: Mike Dunn
-E: mikedunn@newsguy.com
-D: Palmtreo680 board, docg4 nand flash driver
-
-N: Dave Ellis
-E: DGE@sixnetio.com
-D: EEPROM Speedup
-
-N: Daniel Engstr?m
-E: daniel@omicron.se
-D: x86 port, Support for sc520_cdp board
-
-N: Hayden Fraser
-E: Hayden.Fraser@freescale.com
-D: Support for ColdFire MCF5253
-W: www.freescale.com
-
-N: Dr. Wolfgang Grandegger
-E: wg@denx.de
-D: Support for Interphase 4539 T1/E1/J1 PMC, CCM, SCM boards
-W: www.denx.de
-
-N: Peter Figuli
-E: peposh@etc.sk
-D: Support for WEP EP250 (PXA) board
-
-N: Thomas Frieden
-E: ThomasF@hyperion-entertainment.com
-D: Support for AmigaOne
-
-N: Paul Gortmaker
-E: paul.gortmaker@windriver.com
-D: Support for WRS SBC8347/8349 boards
-
-N: Frank Gottschling
-E: fgottschling@eltec.de
-D: Support for ELTEC MHPC/ELPPC boards, cfb-console, i8042, SMI LynxEM
-W: www.eltec.de
-
-N: Marius Groeger
-E: mgroeger@sysgo.de
-D: MBX Support, board specific function interface, EST SBC8260 support; initial support for StrongARM (LART), ARM720TDMI (implementa A7)
-W: www.elinos.com
-
-N: Kirk Haderlie
-E: khaderlie@vividimage.com
-D: Added TFTP to 8xxrom (-> 0.3.1)
-
-N: Chris Hallinan
-E: clh@net1plus.com
-D: DHCP Support
-
-N: Anne-Sophie Harnois
-E: Anne-Sophie.Harnois@nextream.fr
-D: Port to Walnut405 board
-
-N: Andreas Heppel
-E: aheppel@sysgo.de
-D: CPU Support for MPC 75x
-
-N: Josh Huber
-E: huber@alum.wpi.edu
-D: Port to the Galileo Evaluation Board, and the MPC74xx cpu series.
-W: http://www.mclx.com/
-
-H: Stuart Hughes
-E: stuarth@lineo.com
-D: Port to MPC8260ADS board
-
-H: Rich Ireland
-E: r.ireland@computer.org
-D: FPGA device configuration driver
-
-H: Mark Jackson
-E: mpfj@mimc.co.uk
-D: Port to MIMC200 board
-
-N: Gary Jennejohn
-E: garyj@jennejohn.org
-D: Support for Samsung ARM920T S3C2400X, ARM920T "TRAB"
-W: www.denx.de
-
-N: Murray Jensen
-E: Murray.Jensen@csiro.au
-D: Initial 8260 support; GDB support
-D: Port to Cogent+Hymod boards; Hymod Board Database
-
-N: Yoo. Jonghoon
-E: yooth@ipone.co.kr
-D: Added port to the RPXlite board
-
-N: Mark Jonas
-E: mark.jonas@freescale.com
-D: Support for Freescale Total5200 platform
-W: http://www.mobilegt.com/
-
-N: Mark Jonas
-E: mark.jonas@de.bosch.com
-D: Support for MPR2 board
-
-N: Sam Song
-E: samsongshu@yahoo.com.cn
-D: Port to the RPXlite_DW board
-
-N: Brad Kemp
-E: Brad.Kemp@seranoa.com
-D: Port to Windriver ppmc8260 board
-
-N: Sangmoon Kim
-E: dogoil@etinsys.com
-D: Support for debris board
-D: Support for KVME080 board
-
-N: Frederick W. Klatt
-E: fred.klatt@windriver.com
-D: Support for Wind River SBC8540/SBC8560 boards
-
-N: Thomas Koeller
-E: tkoeller@gmx.net
-D: Port to Motorola Sandpoint 3 (MPC8240)
-
-N: Raghu Krishnaprasad
-E: Raghu.Krishnaprasad@fci.com
-D: Support for Adder-II MPC852T evaluation board
-W: http://www.forcecomputers.com
-
-N: Sergey Kubushyn
-E: ksi@koi8.net
-D: Support for various TI DaVinci based boards.
-
-N: Bernhard Kuhn
-E: bkuhn@metrowerks.com
-D Support for Coldfire CPU; Support for Motorola M5272C3 and M5282EVB boards
-
-N: Prakash Kumar
-E: prakash@embedx.com
-D  Support for Intrinsyc CERF PXA250 board.
-
-N: Thomas Lange
-E: thomas@corelatus.se
-D: Support for GTH, GTH2 and dbau1x00 boards; lots of PCMCIA fixes
-
-N: The LEOX team
-E: team@leox.org
-D: Support for LEOX boards, DS164x RTC
-W: http://www.leox.org
-
-N: TsiChung Liew
-E: Tsi-Chung.Liew@freescale.com
-D: Support for ColdFire MCF523x, MCF532x, MCF5445x, MCF547x_8x
-W: www.freescale.com
-
-N: Leif Lindholm
-E: leif.lindholm@i3micro.com
-D: Support for AMD dbau1550 board.
-
-N: Stephan Linz
-E: linz@li-pro.net
-D: Support for Nios Stratix Development Kit (DK-1S10)
-D: Support for SSV ADNP/ESC1 (Nios Cyclone)
-W: http://www.li-pro.net
-
-N: Dave Liu
-E: daveliu@freescale.com
-D: Support for MPC8315, MPC832x, MPC8360, MPC837x
-W: www.freescale.com
-
-N: Raymond Lo
-E: lo@routefree.com
-D: Support for DOS partitions
-
-N: James MacAulay
-E: james.macaulay@amirix.com
-D: Suppport for Amirix AP1000
-W: www.amirix.com
-
-N: Dan Malek
-E: dan@embeddedalley.com
-D: FADSROM, the grandfather of all of this
-D: Support for Silicon Turnkey eXpress XTc
-
-N: Andrea "llandre" Marson
-E: andrea.marson@dave-tech.it
-D: Port to PPChameleonEVB board
-W: www.dave-tech.it
-
-N: Reinhard Meyer
-E: r.meyer@emk-elektronik.de
-D: Port to EMK TOP860 Module
-
-N: Jay Monkman
-E: jtm@smoothsmoothie.com
-D: EST SBC8260 support
-
-N: Frank Morauf
-E: frank.morauf@salzbrenner.com
-D: Support for Embedded Planet RPX Super Board
-
-N: David M?ller
-E: d.mueller@elsoft.ch
-D: Support for Samsung ARM920T SMDK2410 eval board
-
-N: Scott McNutt
-E: smcnutt@psyent.com
-D: Support for Altera Nios-32 CPU
-D: Support for Altera Nios-II CPU
-D: Support for Nios Cyclone Development Kit (DK-1C20)
-W: http://www.psyent.com
-
-N: Rolf Offermanns
-E: rof@sysgo.de
-D: Initial support for SSV-DNP1110, SMC91111 driver
-W: www.elinos.com
-
-N: John Otken
-E: jotken@softadvances.com
-D: Support for AMCC Luan 440SP board
-
-N: Tolunay Orkun
-E: torkun@nextio.com
-D: Support for Cogent CSB272 & CSB472 boards
-
-N: Keith Outwater
-E: keith_outwater@mvis.com
-D: Support for generic/custom MPC860T boards (GEN860T, GEN860T_SC)
-
-N: Frank Panno
-E: fpanno@delphintech.com
-D: Support for Embedded Planet EP8260 Board
-
-N: Denis Peter
-E: d.peter@mpl.ch
-D: Support for 4xx SCSI, floppy, CDROM, CT69000 video, ...
-D: Support for PIP405 board
-D: Support for MIP405 board
-
-N: Dave Peverley
-E: dpeverley@mpc-data.co.uk
-W: http://www.mpc-data.co.uk
-D: OMAP730 P2 board support
-
-N: Bill Pitts
-E: wlp@mindspring.com
-D: BedBug embedded debugger code
-
-N: Daniel Poirot
-E: dan.poirot@windriver.com
-D: Support for the Wind River sbc405, sbc8240 board
-W: http://www.windriver.com
-
-N: Stelian Pop
-E: stelian@popies.net
-D: Atmel AT91CAP9ADK support
-
-N: Ricardo Ribalda Delgado
-E: ricardo.ribalda@uam.es
-D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460, v5fx30teval
-D: Virtex ppc440 generic architecture
-D: Virtex ppc405 generic architecture
-W: http://www.ii.uam.es/~rribalda
-
-N: Stefan Roese
-E: sr@denx.de
-D: AMCC PPC4xx Support
-W: http://www.denx.de
-
-N: Erwin Rol
-E: erwin@muffin.org
-D: boot support for RTEMS
-
-N: Paul Ruhland
-E: pruhland@rochester.rr.com
-D: Port to Logic Zoom LH7A40x SDK board(s)
-
-N: Neil Russell
-E: caret@c-side.com
-D: Author of LiMon-1.4.2, which contributed some ideas
-
-N: Travis B. Sawyer
-E: travis.sawyer@sandburst.com
-D: Support for AMCC PPC440GX, XES XPedite1000 440GX PrPMC board.  AMCC 440gx Ref Platform (Ocotea)
-
-N: Paolo Scaffardi
-E: arsenio@tin.it
-D: FADS823 configuration, MPC823 video support, I2C, wireless keyboard, lots more
-
-N: Andre Schwarz
-E: andre.schwarz@matrix-vision.de
-D: Support for Matrix Vision boards (MVBLM7/MVBC_P/MVSMR)
-
-N: Robert Schwebel
-E: r.schwebel@pengutronix.de
-D: Support for csb226 and innokom boards (PXA2xx)
-
-N: Aaron Sells
-E: sellsa@embeddedplanet.com
-D: Support for EP82xxM
-
-N: Art Shipkowski
-E: art@videon-central.com
-D: Support for NetSilicon NS7520
-D: Support for ColdFire MCF5275
-
-N: Jeremy C. Andrus
-E: jeremy@jeremya.com
-D: ColdFire MCF5249 initialization code
-W: jeremya.com
-
-N: Michal Simek
-E: monstr@monstr.eu
-D: Support for Microblaze, ML401, XUPV2P board
-W: www.monstr.eu
-
-N: Yasushi Shoji
-E: yashi@atmark-techno.com
-D: Support for Xilinx MicroBlaze, for Atmark Techno SUZAKU FPGA board
-
-N: Kurt Stremerch
-E: kurt@exys.be
-D: Support for Exys XSEngine board
-
-N: Andrea Scian
-E: andrea.scian@dave-tech.it
-D: Port to B2 board
-W: www.dave-tech.it
-
-N: Timur Tabi
-E: timur@freescale.com
-D: Support for MPC8349E-mITX
-W: www.freescale.com
-
-N: Rob Taylor
-E: robt@flyingpig.com
-D: Port to MBX860T and Sandpoint8240
-
-N: Erik Theisen
-E: etheisen@mindspring.com
-D: MBX8xx and many other patches
-
-N: Jim Thompson
-E: jim@musenki.com
-D: Support for MUSENKI board
-
-N: Rune Torgersen
-E: <runet@innovsys.com>
-D: Support for Motorola MPC8266ADS board
-
-N: Greg Ungerer
-E: greg.ungerer@opengear.com
-D: Support for ks8695 CPU, and OpenGear cmXXXX boards
-
-N: David Updegraff
-E: dave@cray.com
-D: Port to Cray L1 board; DHCP vendor extensions
-
-N: Christian Vejlbo
-E: christian.vejlbo@tellabs.com
-D: FADS860T ethernet support
-
-N: Robert Whaley
-E: rwhaley@applieddata.net
-D: Port to ARM PXA27x adsvix SBC
-
-N: Martin Winistoerfer
-E: martinwinistoerfer@gmx.ch
-D: Port to MPC555/556 microcontrollers and support for cmi board
-
-N: David Wu
-E: support@arcturusnetworks.com
-D: Mercury Security EP2500
-W: http://www.arcturusnetworks.com
-
-N: Ming-Len Wu
-E: minglen_wu@techware.com.tw
-D: Motorola MX1ADS board support
-W: http://www.techware.com.tw/
-
-N: Xianghua Xiao
-E: x.xiao@motorola.com
-D: Support for Motorola 85xx(PowerQUICC III) chip, MPC8540ADS and MPC8560ADS boards.
-
-N: John Zhan
-E: zhanz@sinovee.com
-D: Support for SinoVee Microsystems SC8xx SBC
-
-N: Alex Zuepke
-E: azu@sysgo.de
-D: Overall improvements on StrongARM, ARM720TDMI; Support for Tuxscreen; initial PCMCIA support for ARM
-W: www.elinos.com
-
-N: Nobuhiro Iwamatsu
-E: iwamatsu@nigauri.org
-D: Support for SuperH, MS7750SE01 and  MS7722SE01 boards.
-W: http://www.nigauri.org/~iwamatsu/
-
-N: Alan Lu
-E: alnalu001@gmail.com
-D: Support for Artila M-501 starter kit
-W: http://www.artila.com/
-
-N: Kimmo Leppala
-E: kimmo.leppala@sysart.fi
-D: Support for Artila M-501 starter kit
-W: http://www.sysart.fi/
-
-N: Timo Tuunainen
-E: timo.tuunainen@sysart.fi
-D: Support for Artila M-501 starter kit
-W: http://www.sysart.fi/
-
-N: Philip Balister
-E: philip@opensdr.com
-D: Port to Lyrtech SFFSDR development board.
-W: www.opensdr.com
diff --git a/Kconfig b/Kconfig
index 932fc8b12af31a337d13be8eeca669b8826077a7..60cf1dd1c1f2140ce1cda90a554f427b1875d2d2 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -56,6 +56,14 @@ config CC_OPTIMIZE_FOR_SIZE
 
          This option is enabled by default for U-Boot.
 
+menuconfig EXPERT
+        bool "Configure standard U-Boot features (expert users)"
+        help
+          This option allows certain base U-Boot options and settings
+          to be disabled or tweaked. This is for specialized
+          environments which can tolerate a "non-standard" U-Boot.
+          Only use this if you really know what you are doing.
+
 endmenu                # General setup
 
 menu "Boot images"
@@ -93,6 +101,28 @@ config TPL
        help
          If you want to build TPL as well as the normal image and SPL, say Y.
 
+config FIT
+       bool "Support Flattened Image Tree"
+       depends on !SPL_BUILD
+       help
+         This option allows to boot the new uImage structrure,
+         Flattened Image Tree.  FIT is formally a FDT, which can include
+         images of various types (kernel, FDT blob, ramdisk, etc.)
+         in a single blob.  To boot this new uImage structure,
+         pass the the address of the blob to the "bootm" command.
+
+config FIT_VERBOSE
+       bool "Display verbose messages on FIT boot"
+       depends on FIT
+
+config FIT_SIGNATURE
+       bool "Enabel signature verification of FIT uImages"
+       depends on FIT
+       help
+         This option enables signature verification of FIT uImages,
+         using a hash signed and verified using RSA.
+         See doc/uImage.FIT/signature.txt for more details.
+
 config SYS_EXTRA_OPTIONS
        string "Extra Options (DEPRECATED)"
        depends on !SPL_BUILD
@@ -107,6 +137,12 @@ config SYS_EXTRA_OPTIONS
          configuration to Kconfig. Since this option will be removed sometime,
          new boards should not use this option.
 
+config SYS_TEXT_BASE
+       depends on SPARC
+       hex "Text Base"
+       help
+         TODO: Move CONFIG_SYS_TEXT_BASE for all the architecture
+
 endmenu                # Boot images
 
 source "arch/Kconfig"
index fd346c9fca6434ad476a7ce4789d17531202d1ca..701ec337c664dfe916c72b99f4855c3aa8e4c287 100644 (file)
@@ -97,6 +97,7 @@ F:    arch/arm/include/asm/imx-common/
 
 ARM MARVELL KIRKWOOD
 M:     Prafulla Wadaskar <prafulla@marvell.com>
+M:     Luka Perkov <luka.perkov@sartura.hr>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-marvell.git
 F:     arch/arm/cpu/arm926ejs/kirkwood/
@@ -128,6 +129,12 @@ T: git git://git.denx.de/u-boot-stm.git
 F:     arch/arm/cpu/arm926ejs/spear/
 F:     arch/arm/include/asm/arch-spear/
 
+ARM STM STV0991
+M:     Vikas Manocha <vikas.manocha@st.com>
+S:     Maintained
+F:     arch/arm/cpu/armv7/stv0991/
+F:     arch/arm/include/asm/arch-stv0991/
+
 ARM SUNXI
 M:     Ian Campbell <ijc@hellion.org.uk>
 M:     Hans De Goede <hdegoede@redhat.com>
@@ -192,10 +199,12 @@ CFI FLASH
 M:     Stefan Roese <sr@denx.de>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-cfi-flash.git
-F:     drivers/mtd/*
+F:     drivers/mtd/cfi_flash.c
+F:     drivers/mtd/jedec_flash.c
 
 COLDFIRE
-M:     Jason Jin <jason.jin@freescale.com>
+M:     Huan Wang <alison.wang@freescale.com>
+M:     Angelo Dureghello <angelo@sysam.it>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-coldfire.git
 F:     arch/m68k/
@@ -253,7 +262,7 @@ T:  git git://git.denx.de/u-boot-mips.git
 F:     arch/mips/
 
 MMC
-M:     Pantelis Antoniou <panto.antoniou-consulting.com>
+M:     Pantelis Antoniou <panto@antoniou-consulting.com>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-mmc.git
 F:     drivers/mmc/
@@ -389,6 +398,7 @@ T:  git git://git.denx.de/u-boot-tq-group.git
 
 UBI
 M:     Kyungmin Park <kmpark@infradead.org>
+M:     Heiko Schocher <hs@denx.de>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-ubi.git
 F:     drivers/mtd/ubi/
diff --git a/MAKEALL b/MAKEALL
index 7c16319b80bd139ad7cb82dd08f9d15283794260..4d643d194c4b46ac01886385a986eb105f3f0007 100755 (executable)
--- a/MAKEALL
+++ b/MAKEALL
@@ -291,12 +291,6 @@ LIST_8xx="$(targets_by_cpu mpc8xx)"
 
 LIST_4xx="$(targets_by_cpu ppc4xx)"
 
-#########################################################################
-## MPC824x Systems
-#########################################################################
-
-LIST_824x="$(targets_by_cpu mpc824x)"
-
 #########################################################################
 ## MPC8260 Systems (includes 8250, 8255 etc.)
 #########################################################################
index 26dacee98e07d0c203e0156bae557ea95a006d29..36a9a283b051527df532d16c5f4dd69c9be3556c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,5 @@
-#
-# (C) Copyright 2000-2013
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-VERSION = 2014
-PATCHLEVEL = 10
+VERSION = 2015
+PATCHLEVEL = 01
 SUBLEVEL =
 EXTRAVERSION =
 NAME =
@@ -17,11 +10,9 @@ NAME =
 # Comments in this file are targeted only to the developer, do not
 # expect to learn how to build the kernel reading this file.
 
-# Do not:
-# o  use make's built-in rules and variables
-#    (this increases performance and avoids hard-to-debug behaviour);
-# o  print "Entering directory ...";
-MAKEFLAGS += -rR --no-print-directory
+# Do not use make's built-in rules and variables
+# (this increases performance and avoids hard-to-debug behaviour);
+MAKEFLAGS += -rR
 
 # Avoid funny character set dependencies
 unexport LC_ALL
@@ -29,6 +20,9 @@ LC_COLLATE=C
 LC_NUMERIC=C
 export LC_COLLATE LC_NUMERIC
 
+# Avoid interference with shell env settings
+unexport GREP_OPTIONS
+
 # We are using a recursive build, so we need to do a little thinking
 # to get the ordering right.
 #
@@ -45,6 +39,29 @@ export LC_COLLATE LC_NUMERIC
 # descending is started. They are now explicitly listed as the
 # prepare rule.
 
+# Beautify output
+# ---------------------------------------------------------------------------
+#
+# Normally, we echo the whole command before executing it. By making
+# that echo $($(quiet)$(cmd)), we now have the possibility to set
+# $(quiet) to choose other forms of output instead, e.g.
+#
+#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
+#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
+#
+# If $(quiet) is empty, the whole command will be printed.
+# If it is set to "quiet_", only the short version will be printed.
+# If it is set to "silent_", nothing will be printed at all, since
+# the variable $(silent_cmd_cc_o_c) doesn't exist.
+#
+# A simple variant is to prefix commands with $(Q) - that's useful
+# for commands that shall be hidden in non-verbose mode.
+#
+#      $(Q)ln $@ :<
+#
+# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
+# If KBUILD_VERBOSE equals 1 then the above command is displayed.
+#
 # To put more focus on warnings, be less verbose as default
 # Use 'make V=1' to see the full commands
 
@@ -55,33 +72,28 @@ ifndef KBUILD_VERBOSE
   KBUILD_VERBOSE = 0
 endif
 
-# Call a source code checker (by default, "sparse") as part of the
-# C compilation.
-#
-# Use 'make C=1' to enable checking of only re-compiled files.
-# Use 'make C=2' to enable checking of *all* source files, regardless
-# of whether they are re-compiled or not.
-#
-# See the file "Documentation/sparse.txt" for more details, including
-# where to get the "sparse" utility.
+ifeq ($(KBUILD_VERBOSE),1)
+  quiet =
+  Q =
+else
+  quiet=quiet_
+  Q = @
+endif
 
-ifeq ("$(origin C)", "command line")
-  KBUILD_CHECKSRC = $(C)
+# If the user is running make -s (silent mode), suppress echoing of
+# commands
+
+ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
+ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
+  quiet=silent_
 endif
-ifndef KBUILD_CHECKSRC
-  KBUILD_CHECKSRC = 0
+else                                   # make-3.8x
+ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
+  quiet=silent_
 endif
-
-# Use make M=dir to specify directory of external module to build
-# Old syntax make ... SUBDIRS=$PWD is still supported
-# Setting the environment variable KBUILD_EXTMOD take precedence
-ifdef SUBDIRS
-  KBUILD_EXTMOD ?= $(SUBDIRS)
 endif
 
-ifeq ("$(origin M)", "command line")
-  KBUILD_EXTMOD := $(M)
-endif
+export quiet Q KBUILD_VERBOSE
 
 # kbuild supports saving output files in a separate directory.
 # To locate output files in a separate directory two syntaxes are supported.
@@ -98,7 +110,6 @@ endif
 # The O= assignment takes precedence over the KBUILD_OUTPUT environment
 # variable.
 
-
 # KBUILD_SRC is set on invocation of make in OBJ directory
 # KBUILD_SRC is not intended to be used by the regular user (for now)
 ifeq ($(KBUILD_SRC),)
@@ -131,10 +142,8 @@ $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
        @:
 
 sub-make: FORCE
-       $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
-       KBUILD_SRC=$(CURDIR) \
-       KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
-       $(filter-out _all sub-make,$(MAKECMDGOALS))
+       $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \
+       -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS))
 
 # Leave processing to above invocation of make
 skip-makefile := 1
@@ -144,6 +153,39 @@ endif # ifeq ($(KBUILD_SRC),)
 # We process the rest of the Makefile if this is the final invocation of make
 ifeq ($(skip-makefile),)
 
+# Do not print "Entering directory ...",
+# but we want to display it when entering to the output directory
+# so that IDEs/editors are able to understand relative filenames.
+MAKEFLAGS += --no-print-directory
+
+# Call a source code checker (by default, "sparse") as part of the
+# C compilation.
+#
+# Use 'make C=1' to enable checking of only re-compiled files.
+# Use 'make C=2' to enable checking of *all* source files, regardless
+# of whether they are re-compiled or not.
+#
+# See the file "Documentation/sparse.txt" for more details, including
+# where to get the "sparse" utility.
+
+ifeq ("$(origin C)", "command line")
+  KBUILD_CHECKSRC = $(C)
+endif
+ifndef KBUILD_CHECKSRC
+  KBUILD_CHECKSRC = 0
+endif
+
+# Use make M=dir to specify directory of external module to build
+# Old syntax make ... SUBDIRS=$PWD is still supported
+# Setting the environment variable KBUILD_EXTMOD take precedence
+ifdef SUBDIRS
+  KBUILD_EXTMOD ?= $(SUBDIRS)
+endif
+
+ifeq ("$(origin M)", "command line")
+  KBUILD_EXTMOD := $(M)
+endif
+
 # If building an external module we do not care about the all: rule
 # but instead _all depend on modules
 PHONY += all
@@ -153,8 +195,18 @@ else
 _all: modules
 endif
 
-srctree                := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
-objtree                := $(CURDIR)
+ifeq ($(KBUILD_SRC),)
+        # building in the source tree
+        srctree := .
+else
+        ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
+                # building in a subdirectory of the source tree
+                srctree := ..
+        else
+                srctree := $(KBUILD_SRC)
+        endif
+endif
+objtree                := .
 src            := $(srctree)
 obj            := $(objtree)
 
@@ -262,52 +314,6 @@ endif
 export KBUILD_MODULES KBUILD_BUILTIN
 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
 
-# Beautify output
-# ---------------------------------------------------------------------------
-#
-# Normally, we echo the whole command before executing it. By making
-# that echo $($(quiet)$(cmd)), we now have the possibility to set
-# $(quiet) to choose other forms of output instead, e.g.
-#
-#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
-#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
-#
-# If $(quiet) is empty, the whole command will be printed.
-# If it is set to "quiet_", only the short version will be printed.
-# If it is set to "silent_", nothing will be printed at all, since
-# the variable $(silent_cmd_cc_o_c) doesn't exist.
-#
-# A simple variant is to prefix commands with $(Q) - that's useful
-# for commands that shall be hidden in non-verbose mode.
-#
-#      $(Q)ln $@ :<
-#
-# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
-# If KBUILD_VERBOSE equals 1 then the above command is displayed.
-
-ifeq ($(KBUILD_VERBOSE),1)
-  quiet =
-  Q =
-else
-  quiet=quiet_
-  Q = @
-endif
-
-# If the user is running make -s (silent mode), suppress echoing of
-# commands
-
-ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
-ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
-  quiet=silent_
-endif
-else                                   # make-3.8x
-ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
-  quiet=silent_
-endif
-endif
-
-export quiet Q KBUILD_VERBOSE
-
 # Look for make include files relative to root of kernel src
 MAKEFLAGS += --include-dir=$(srctree)
 
@@ -497,6 +503,7 @@ autoconf_is_current := $(if $(wildcard $(KCONFIG_CONFIG)),$(shell find . \
                -path ./include/config/auto.conf -newer $(KCONFIG_CONFIG)))
 ifneq ($(autoconf_is_current),)
 include $(srctree)/config.mk
+include $(srctree)/arch/$(ARCH)/Makefile
 endif
 
 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
@@ -595,20 +602,11 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
 #########################################################################
 # U-Boot objects....order is important (i.e. start must be first)
 
-head-y := $(CPUDIR)/start.o
-head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
-head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
-
 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
 
 libs-y += lib/
 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
-libs-y += $(CPUDIR)/
-ifdef SOC
-libs-y += $(CPUDIR)/$(SOC)/
-endif
 libs-$(CONFIG_OF_EMBED) += dts/
-libs-y += arch/$(ARCH)/lib/
 libs-y += fs/
 libs-y += net/
 libs-y += disk/
@@ -642,23 +640,11 @@ libs-y += drivers/usb/musb-new/
 libs-y += drivers/usb/phy/
 libs-y += drivers/usb/ulpi/
 libs-y += common/
-libs-y += lib/libfdt/
 libs-$(CONFIG_API) += api/
 libs-$(CONFIG_HAS_POST) += post/
 libs-y += test/
 libs-y += test/dm/
 
-ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
-libs-y += arch/$(ARCH)/imx-common/
-endif
-
-ifneq (,$(filter $(SOC), armada-xp kirkwood))
-libs-y += arch/$(ARCH)/mvebu-common/
-endif
-
-libs-$(CONFIG_ARM) += arch/arm/cpu/
-libs-$(CONFIG_PPC) += arch/powerpc/cpu/
-
 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
 
 libs-y := $(sort $(libs-y))
@@ -743,6 +729,9 @@ ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
 endif
 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
 
+# We can't do this yet due to the need for binary blobs
+# ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom
+
 # enable combined SPL/u-boot/dtb rules for tegra
 ifneq ($(CONFIG_TEGRA),)
 ifeq ($(CONFIG_SPL),y)
@@ -780,6 +769,13 @@ quiet_cmd_pad_cat = CAT     $@
 cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
 
 all:           $(ALL-y)
+ifneq ($(CONFIG_SYS_GENERIC_BOARD),y)
+       @echo "===================== WARNING ======================"
+       @echo "Please convert this board to generic board."
+       @echo "Otherwise it will be removed by the end of 2014."
+       @echo "See doc/README.generic-board for further information"
+       @echo "===================================================="
+endif
 
 PHONY += dtbs
 dtbs dts/dt.dtb: checkdtc u-boot
@@ -804,7 +800,8 @@ OBJCOPYFLAGS_u-boot.srec := -O srec
 u-boot.hex u-boot.srec: u-boot FORCE
        $(call if_changed,objcopy)
 
-OBJCOPYFLAGS_u-boot.bin := -O binary
+OBJCOPYFLAGS_u-boot.bin := -O binary \
+               $(if $(CONFIG_X86_RESET_VECTOR),-R .start16 -R .resetvec)
 
 binary_size_check: u-boot.bin FORCE
        @file_size=$(shell wc -c u-boot.bin | awk '{print $$1}') ; \
@@ -827,7 +824,7 @@ u-boot.bin: u-boot FORCE
 
 u-boot.ldr:    u-boot
                $(CREATE_LDR_ENV)
-               $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
+               $(LDR) -T $(CONFIG_CPU) -c $@ $< $(LDR_FLAGS)
                $(BOARD_SIZE_CHECK)
 
 OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
@@ -943,10 +940,60 @@ u-boot-nand.gph: u-boot.bin FORCE
        $(call if_changed,mkimage)
        @dd if=/dev/zero bs=8 count=1 2>/dev/null >> $@
 
+# x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including
+# reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in
+# the middle.
+ifneq ($(CONFIG_X86_RESET_VECTOR),)
+rom: u-boot.rom FORCE
+
+IFDTOOL=$(objtree)/tools/ifdtool
+IFDTOOL_FLAGS  = -f 0:$(objtree)/u-boot.dtb
+IFDTOOL_FLAGS += -m 0x$(shell $(NM) u-boot |grep _dt_ucode_base_size |cut -d' ' -f1)
+IFDTOOL_FLAGS += -U $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot.bin
+IFDTOOL_FLAGS += -w $(CONFIG_SYS_X86_START16):$(objtree)/u-boot-x86-16bit.bin
+
+ifneq ($(CONFIG_HAVE_INTEL_ME),)
+IFDTOOL_ME_FLAGS  = -D $(srctree)/board/$(BOARDDIR)/descriptor.bin
+IFDTOOL_ME_FLAGS += -i ME:$(srctree)/board/$(BOARDDIR)/me.bin
+endif
+
+ifneq ($(CONFIG_HAVE_MRC),)
+IFDTOOL_FLAGS += -w $(CONFIG_X86_MRC_ADDR):$(srctree)/board/$(BOARDDIR)/mrc.bin
+endif
+
+ifneq ($(CONFIG_HAVE_FSP),)
+IFDTOOL_FLAGS += -w $(CONFIG_FSP_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_FSP_FILE)
+endif
+
+ifneq ($(CONFIG_HAVE_CMC),)
+IFDTOOL_FLAGS += -w $(CONFIG_CMC_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_CMC_FILE)
+endif
+
+ifneq ($(CONFIG_X86_OPTION_ROM_ADDR),)
+IFDTOOL_FLAGS += -w $(CONFIG_X86_OPTION_ROM_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_X86_OPTION_ROM_FILE)
+endif
+
+quiet_cmd_ifdtool = IFDTOOL $@
+cmd_ifdtool  = $(IFDTOOL) -c -r $(CONFIG_ROM_SIZE) u-boot.tmp;
+ifneq ($(CONFIG_HAVE_INTEL_ME),)
+cmd_ifdtool += $(IFDTOOL) $(IFDTOOL_ME_FLAGS) u-boot.tmp;
+endif
+cmd_ifdtool += $(IFDTOOL) $(IFDTOOL_FLAGS) u-boot.tmp;
+cmd_ifdtool += mv u-boot.tmp $@
+
+u-boot.rom: u-boot-x86-16bit.bin u-boot-dtb.bin
+       $(call if_changed,ifdtool)
+
+OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec
+u-boot-x86-16bit.bin: u-boot FORCE
+       $(call if_changed,objcopy)
+endif
+
 ifneq ($(CONFIG_SUNXI),)
 OBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \
                                   --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
-u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img FORCE
+u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin \
+                       u-boot$(if $(CONFIG_OF_CONTROL),-dtb,).img FORCE
        $(call if_changed,pad_cat)
 endif
 
@@ -968,15 +1015,22 @@ u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
 #concatenated with u-boot binary. It is need by PowerPC SoC having
 #internal SRAM <= 512KB.
 MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
-               -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
+               -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage \
+               -A $(ARCH) -a $(CONFIG_SPL_TEXT_BASE)
 
 spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
        $(call if_changed,mkimage)
 
+ifeq ($(ARCH),arm)
+UBOOT_BINLOAD := u-boot.img
+else
+UBOOT_BINLOAD := u-boot.bin
+endif
+
 OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
                          --gap-fill=0xff
 
-u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl u-boot.bin FORCE
+u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl $(UBOOT_BINLOAD) FORCE
        $(call if_changed,pad_cat)
 
 # PPC4xx needs the SPL at the end of the image, since the reset vector
@@ -1219,13 +1273,12 @@ include/license.h: tools/bin2header COPYING
 # make distclean Remove editor backup files, patch leftover files and the like
 
 # Directories & files removed with 'make clean'
-CLEAN_DIRS  += $(MODVERDIR)
-CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h
-
-# Directories & files removed with 'make clobber'
-CLOBBER_DIRS  += $(foreach d, spl tpl, $(patsubst %,$d/%, \
+CLEAN_DIRS  += $(MODVERDIR) \
+              $(foreach d, spl tpl, $(patsubst %,$d/%, \
                        $(filter-out include, $(shell ls -1 $d 2>/dev/null))))
-CLOBBER_FILES += u-boot* MLO* SPL System.map
+
+CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
+              u-boot* MLO* SPL System.map
 
 # Directories & files removed with 'make mrproper'
 MRPROPER_DIRS  += include/config include/generated spl tpl \
@@ -1258,17 +1311,6 @@ clean: $(clean-dirs)
                -o -name modules.builtin -o -name '.tmp_*.o.*' \
                -o -name '*.gcno' \) -type f -print | xargs rm -f
 
-# clobber
-#
-clobber: rm-dirs  := $(CLOBBER_DIRS)
-clobber: rm-files := $(CLOBBER_FILES)
-
-PHONY += clobber
-
-clobber: clean
-       $(call cmd,rmdirs)
-       $(call cmd,rmfiles)
-
 # mrproper - Delete all generated files, including .config
 #
 mrproper: rm-dirs  := $(wildcard $(MRPROPER_DIRS))
@@ -1279,7 +1321,7 @@ PHONY += $(mrproper-dirs) mrproper archmrproper
 $(mrproper-dirs):
        $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
 
-mrproper: clobber $(mrproper-dirs)
+mrproper: clean $(mrproper-dirs)
        $(call cmd,rmdirs)
        $(call cmd,rmfiles)
        @rm -f arch/*/include/asm/arch
@@ -1303,9 +1345,7 @@ backup:
 
 help:
        @echo  'Cleaning targets:'
-       @echo  '  clean           - Remove most generated files but keep the config and'
-       @echo  '                    necessities for testing u-boot'
-       @echo  '  clobber         - Remove most generated files but keep the config'
+       @echo  '  clean           - Remove most generated files but keep the config'
        @echo  '  mrproper        - Remove all generated files + config + various backup files'
        @echo  '  distclean       - mrproper + remove editor backup and patch files'
        @echo  ''
@@ -1314,7 +1354,7 @@ help:
        @echo  ''
        @echo  'Other generic targets:'
        @echo  '  all             - Build all necessary images depending on configuration'
-       @echo  '  u-boot          - Build the bare u-boot'
+       @echo  '* u-boot          - Build the bare u-boot'
        @echo  '  dir/            - Build all files in dir and below'
        @echo  '  dir/file.[oisS] - Build specified target only'
        @echo  '  dir/file.lst    - Build specified mixed source/assembly target only'
@@ -1322,8 +1362,8 @@ help:
        @echo  '  tags/ctags      - Generate ctags file for editors'
        @echo  '  etags           - Generate etags file for editors'
        @echo  '  cscope          - Generate cscope index'
-       @echo  '  ubootrelease    - Output the release version string'
-       @echo  '  ubootversion    - Output the version stored in Makefile'
+       @echo  '  ubootrelease    - Output the release version string (use with make -s)'
+       @echo  '  ubootversion    - Output the version stored in Makefile (use with make -s)'
        @echo  ''
        @echo  'Static analysers'
        @echo  '  checkstack      - Generate a list of stack hogs'
@@ -1444,7 +1484,7 @@ endif
 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
 # Usage:
 # $(Q)$(MAKE) $(clean)=dir
-clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
+clean := -f $(srctree)/scripts/Makefile.clean obj
 
 endif  # skip-makefile
 
diff --git a/README b/README
index 7b5538ed3e960000a844fa69af4c0662c4f94bf8..0fec497328bd5fd27df28efda7a14d828a106346 100644 (file)
--- a/README
+++ b/README
@@ -186,7 +186,6 @@ Directory Hierarchy:
       /mpc5xx          Files specific to Freescale MPC5xx CPUs
       /mpc5xxx         Files specific to Freescale MPC5xxx CPUs
       /mpc8xx          Files specific to Freescale MPC8xx CPUs
-      /mpc824x         Files specific to Freescale MPC824x CPUs
       /mpc8260         Files specific to Freescale MPC8260 CPUs
       /mpc85xx         Files specific to Freescale MPC85xx CPUs
       /ppc4xx          Files specific to AMCC PowerPC 4xx CPUs
@@ -326,10 +325,6 @@ The following options need to be configured:
                                          multiple fs option at one time
                                          for marvell soc family
 
-- MPC824X Family Member (if CONFIG_MPC824X is defined)
-               Define exactly one of
-               CONFIG_MPC8240, CONFIG_MPC8245
-
 - 8xx CPU Options: (if using an MPC8xx CPU)
                CONFIG_8xx_GCLK_FREQ    - deprecated: CPU clock if
                                          get_gclk_freq() cannot work
@@ -407,7 +402,11 @@ The following options need to be configured:
 
                CONFIG_A003399_NOR_WORKAROUND
                Enables a workaround for IFC erratum A003399. It is only
-               requred during NOR boot.
+               required during NOR boot.
+
+               CONFIG_A008044_WORKAROUND
+               Enables a workaround for T1040/T1042 erratum A008044. It is only
+               required during NAND boot and valid for Rev 1.0 SoC revision
 
                CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY
 
@@ -439,7 +438,7 @@ The following options need to be configured:
                time of U-boot entry and is required to be re-initialized.
 
                CONFIG_DEEP_SLEEP
-               Inidcates this SoC supports deep sleep feature. If deep sleep is
+               Indicates this SoC supports deep sleep feature. If deep sleep is
                supported, core will start to execute uboot when wakes up.
 
 - Generic CPU options:
@@ -623,6 +622,120 @@ The following options need to be configured:
                exists, unlike the similar options in the Linux kernel. Do not
                set these options unless they apply!
 
+- Driver Model
+               Driver model is a new framework for devices in U-Boot
+               introduced in early 2014. U-Boot is being progressively
+               moved over to this. It offers a consistent device structure,
+               supports grouping devices into classes and has built-in
+               handling of platform data and device tree.
+
+               To enable transition to driver model in a relatively
+               painful fashion, each subsystem can be independently
+               switched between the legacy/ad-hoc approach and the new
+               driver model using the options below. Also, many uclass
+               interfaces include compatibility features which may be
+               removed once the conversion of that subsystem is complete.
+               As a result, the API provided by the subsystem may in fact
+               not change with driver model.
+
+               See doc/driver-model/README.txt for more information.
+
+               CONFIG_DM
+
+               Enable driver model. This brings in the core support,
+               including scanning of platform data on start-up. If
+               CONFIG_OF_CONTROL is enabled, the device tree will be
+               scanned also when available.
+
+               CONFIG_CMD_DM
+
+               Enable driver model test commands. These allow you to print
+               out the driver model tree and the uclasses.
+
+               CONFIG_DM_DEMO
+
+               Enable some demo devices and the 'demo' command. These are
+               really only useful for playing around while trying to
+               understand driver model in sandbox.
+
+               CONFIG_SPL_DM
+
+               Enable driver model in SPL. You will need to provide a
+               suitable malloc() implementation. If you are not using the
+               full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START,
+               consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you
+               must provide CONFIG_SYS_MALLOC_F_LEN to set the size.
+               In most cases driver model will only allocate a few uclasses
+               and devices in SPL, so 1KB should be enable. See
+               CONFIG_SYS_MALLOC_F_LEN for more details on how to enable
+               it.
+
+               CONFIG_DM_SERIAL
+
+               Enable driver model for serial. This replaces
+               drivers/serial/serial.c with the serial uclass, which
+               implements serial_putc() etc. The uclass interface is
+               defined in include/serial.h.
+
+               CONFIG_DM_GPIO
+
+               Enable driver model for GPIO access. The standard GPIO
+               interface (gpio_get_value(), etc.) is then implemented by
+               the GPIO uclass. Drivers provide methods to query the
+               particular GPIOs that they provide. The uclass interface
+               is defined in include/asm-generic/gpio.h.
+
+               CONFIG_DM_SPI
+
+               Enable driver model for SPI. The SPI slave interface
+               (spi_setup_slave(), spi_xfer(), etc.) is then implemented by
+               the SPI uclass. Drivers provide methods to access the SPI
+               buses that they control. The uclass interface is defined in
+               include/spi.h. The existing spi_slave structure is attached
+               as 'parent data' to every slave on each bus. Slaves
+               typically use driver-private data instead of extending the
+               spi_slave structure.
+
+               CONFIG_DM_SPI_FLASH
+
+               Enable driver model for SPI flash. This SPI flash interface
+               (spi_flash_probe(), spi_flash_write(), etc.) is then
+               implemented by the SPI flash uclass. There is one standard
+               SPI flash driver which knows how to probe most chips
+               supported by U-Boot. The uclass interface is defined in
+               include/spi_flash.h, but is currently fully compatible
+               with the old interface to avoid confusion and duplication
+               during the transition parent. SPI and SPI flash must be
+               enabled together (it is not possible to use driver model
+               for one and not the other).
+
+               CONFIG_DM_CROS_EC
+
+               Enable driver model for the Chrome OS EC interface. This
+               allows the cros_ec SPI driver to operate with CONFIG_DM_SPI
+               but otherwise makes few changes. Since cros_ec also supports
+               I2C and LPC (which don't support driver model yet), a full
+               conversion is not yet possible.
+
+
+               ** Code size options: The following options are enabled by
+               default except in SPL. Enable them explicitly to get these
+               features in SPL.
+
+               CONFIG_DM_WARN
+
+               Enable the dm_warn() function. This can use up quite a bit
+               of space for its strings.
+
+               CONFIG_DM_STDIO
+
+               Enable registering a serial device with the stdio library.
+
+               CONFIG_DM_DEVICE_REMOVE
+
+               Enable removing of devices.
+
+
 - Linux Kernel Interface:
                CONFIG_CLOCKS_IN_MHZ
 
@@ -639,7 +752,7 @@ The following options need to be configured:
 
                CONFIG_MEMSIZE_IN_BYTES         [relevant for MIPS only]
 
-               When transferring memsize parameter to linux, some versions
+               When transferring memsize parameter to Linux, some versions
                expect it to be in bytes, others in MB.
                Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes.
 
@@ -669,6 +782,13 @@ The following options need to be configured:
                Board code has addition modification that it wants to make
                to the flat device tree before handing it off to the kernel
 
+               CONFIG_OF_SYSTEM_SETUP
+
+               Other code has addition modification that it wants to make
+               to the flat device tree before handing it off to the kernel.
+               This causes ft_system_setup() to be called before booting
+               the kernel.
+
                CONFIG_OF_BOOT_CPU
 
                This define fills in the correct boot CPU in the boot
@@ -989,6 +1109,7 @@ The following options need to be configured:
                CONFIG_CMD_EXT4         * ext4 command support
                CONFIG_CMD_FS_GENERIC   * filesystem commands (e.g. load, ls)
                                          that work for multiple fs types
+               CONFIG_CMD_FS_UUID      * Look up a filesystem UUID
                CONFIG_CMD_SAVEENV        saveenv
                CONFIG_CMD_FDC          * Floppy Disk Support
                CONFIG_CMD_FAT          * FAT command support
@@ -1647,6 +1768,15 @@ The following options need to be configured:
                regarding the non-volatile storage device. Define this to
                the eMMC device that fastboot should use to store the image.
 
+               CONFIG_FASTBOOT_GPT_NAME
+               The fastboot "flash" command supports writing the downloaded
+               image to the Protective MBR and the Primary GUID Partition
+               Table. (Additionally, this downloaded image is post-processed
+               to generate and write the Backup GUID Partition Table.)
+               This occurs when the specified "partition name" on the
+               "fastboot flash" command line matches this value.
+               Default is GPT_ENTRY_NAME (currently "gpt") if undefined.
+
 - Journaling Flash filesystem support:
                CONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE,
                CONFIG_JFFS2_NAND_DEV
@@ -1832,7 +1962,7 @@ CBFS (Coreboot Filesystem) support
 
                CONFIG_LCD_ALIGNMENT
 
-               Normally the LCD is page-aligned (tyically 4KB). If this is
+               Normally the LCD is page-aligned (typically 4KB). If this is
                defined then the LCD will be aligned to this value instead.
                For ARM it is sometimes useful to use MMU_SECTION_SIZE
                here, since it is cheaper to change data cache settings on
@@ -1908,7 +2038,7 @@ CBFS (Coreboot Filesystem) support
                can be displayed via the splashscreen support or the
                bmp command.
 
-- Do compresssing for memory range:
+- Do compressing for memory range:
                CONFIG_CMD_ZIP
 
                If this option is set, it would use zlib deflate method
@@ -2271,7 +2401,7 @@ CBFS (Coreboot Filesystem) support
                  - define slave for bus 2 with CONFIG_SYS_MXC_I2C2_SLAVE
                  - define speed for bus 3 with CONFIG_SYS_MXC_I2C3_SPEED
                  - define slave for bus 3 with CONFIG_SYS_MXC_I2C3_SLAVE
-               If thoses defines are not set, default value is 100000
+               If those defines are not set, default value is 100000
                for speed, and 0 for slave.
 
                - drivers/i2c/rcar_i2c.c:
@@ -2304,7 +2434,7 @@ CBFS (Coreboot Filesystem) support
                  - CONFIG_SYS_I2C_SH_SPEED4 for for the speed channel 4
                  - CONFIG_SYS_I2C_SH_BASE5 for setting the register channel 5
                  - CONFIG_SYS_I2C_SH_SPEED5 for for the speed channel 5
-                 - CONFIF_SYS_I2C_SH_NUM_CONTROLLERS for nummber of i2c buses
+                 - CONFIG_SYS_I2C_SH_NUM_CONTROLLERS for number of i2c buses
 
                - drivers/i2c/omap24xx_i2c.c
                  - activate this driver with CONFIG_SYS_I2C_OMAP24XX
@@ -2348,7 +2478,7 @@ CBFS (Coreboot Filesystem) support
                additional defines:
 
                CONFIG_SYS_NUM_I2C_BUSES
-               Hold the number of i2c busses you want to use. If you
+               Hold the number of i2c buses you want to use. If you
                don't use/have i2c muxes on your i2c bus, this
                is equal to CONFIG_SYS_NUM_I2C_ADAPTERS, and you can
                omit this define.
@@ -2364,7 +2494,7 @@ CBFS (Coreboot Filesystem) support
                define.
 
                CONFIG_SYS_I2C_BUSES
-               hold a list of busses you want to use, only used if
+               hold a list of buses you want to use, only used if
                CONFIG_SYS_I2C_DIRECT_BUS is not defined, for example
                a board with CONFIG_SYS_I2C_MAX_HOPS = 1 and
                CONFIG_SYS_NUM_I2C_BUSES = 9:
@@ -2702,14 +2832,14 @@ CBFS (Coreboot Filesystem) support
 
                CONFIG_SYS_FPGA_WAIT_INIT
 
-               Maximum time to wait for the INIT_B line to deassert
-               after PROB_B has been deasserted during a Virtex II
+               Maximum time to wait for the INIT_B line to de-assert
+               after PROB_B has been de-asserted during a Virtex II
                FPGA configuration sequence. The default time is 500
                ms.
 
                CONFIG_SYS_FPGA_WAIT_BUSY
 
-               Maximum time to wait for BUSY to deassert during
+               Maximum time to wait for BUSY to de-assert during
                Virtex II FPGA configuration. The default is 5 ms.
 
                CONFIG_SYS_FPGA_WAIT_CONFIG
@@ -2834,18 +2964,6 @@ CBFS (Coreboot Filesystem) support
 
                Enable auto completion of commands using TAB.
 
-               CONFIG_SYS_HUSH_PARSER
-
-               Define this variable to enable the "hush" shell (from
-               Busybox) as command line interpreter, thus enabling
-               powerful command line syntax like
-               if...then...else...fi conditionals or `&&' and '||'
-               constructs ("shell scripts").
-
-               If undefined, you get the old, much simpler behaviour
-               with a somewhat smaller memory footprint.
-
-
                CONFIG_SYS_PROMPT_HUSH_PS2
 
                This defines the secondary prompt string, which is
@@ -2873,11 +2991,11 @@ CBFS (Coreboot Filesystem) support
                of the backslashes before semicolons and special
                symbols.
 
-- Commandline Editing and History:
+- Command Line Editing and History:
                CONFIG_CMDLINE_EDITING
 
                Enable editing and History functions for interactive
-               commandline input operations
+               command line input operations
 
 - Default Environment:
                CONFIG_EXTRA_ENV_SETTINGS
@@ -2928,7 +3046,7 @@ CBFS (Coreboot Filesystem) support
                CONFIG_DELAY_ENVIRONMENT
 
                Normally the environment is loaded when the board is
-               intialised so that it is available to U-Boot. This inhibits
+               initialised so that it is available to U-Boot. This inhibits
                that so that the environment is not available until
                explicitly loaded later by U-Boot code. With CONFIG_OF_CONTROL
                this is instead controlled by the value of
@@ -2974,7 +3092,7 @@ CBFS (Coreboot Filesystem) support
 
                Define this option to use dual flash support where two flash
                memories can be connected with a given cs line.
-               currently Xilinx Zynq qspi support these type of connections.
+               Currently Xilinx Zynq qspi supports these type of connections.
 
                CONFIG_SYS_SPI_ST_ENABLE_WP_PIN
                enable the W#/Vpp signal to disable writing to the status
@@ -3407,7 +3525,7 @@ FIT uImage format:
                to 128 or 256, although it does not have to be power of 2).
 
                default: 4096
-               
+
                CONFIG_MTD_UBI_BEB_LIMIT
                This option specifies the maximum bad physical eraseblocks UBI
                expects on the MTD device (per 1024 eraseblocks). If the
@@ -3547,10 +3665,13 @@ FIT uImage format:
 
                CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR,
                CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS,
-               CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION
-               Address, size and partition on the MMC to load U-Boot from
+               Address and partition on the MMC to load U-Boot from
                when the MMC is being used in raw mode.
 
+               CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
+               Partition on the MMC to load U-Boot from when the MMC is being
+               used in raw mode
+
                CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
                Sector to load kernel uImage from when MMC is being
                used in raw mode (for Falcon mode)
@@ -3561,6 +3682,10 @@ FIT uImage format:
                parameters from when MMC is being used in raw mode
                (for falcon mode)
 
+               CONFIG_SYS_MMCSD_FS_BOOT_PARTITION
+               Partition on the MMC to load U-Boot from when the MMC is being
+               used in fs mode
+
                CONFIG_SPL_FAT_SUPPORT
                Support for fs/fat/libfat.o in SPL binary
 
@@ -3605,6 +3730,10 @@ FIT uImage format:
                Support for the MTD subsystem within SPL.  Useful for
                environment on NAND support within SPL.
 
+               CONFIG_SPL_NAND_RAW_ONLY
+               Support to boot only raw u-boot.bin images. Use this only
+               if you need to save space.
+
                CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
                Set for the SPL on PPC mpc8xxx targets, support for
                drivers/ddr/fsl/libddr.o in SPL binary.
@@ -3638,7 +3767,7 @@ FIT uImage format:
 
                CONFIG_SYS_NAND_HW_ECC_OOBFIRST
                Define this if you need to first read the OOB and then the
-               data. This is used for example on davinci plattforms.
+               data. This is used, for example, on davinci platforms.
 
                CONFIG_SPL_OMAP3_ID_NAND
                Support for an OMAP3-specific set of functions to return the
@@ -3871,12 +4000,36 @@ Configuration Settings:
                This feature allocates regions with increasing addresses
                within the region. calloc() is supported, but realloc()
                is not available. free() is supported but does nothing.
-               The memory will be freed (or in fact just forgotton) when
+               The memory will be freed (or in fact just forgotten) when
                U-Boot relocates itself.
 
                Pre-relocation malloc() is only supported on ARM and sandbox
                at present but is fairly easy to enable for other archs.
 
+- CONFIG_SYS_MALLOC_SIMPLE
+               Provides a simple and small malloc() and calloc() for those
+               boards which do not use the full malloc in SPL (which is
+               enabled with CONFIG_SYS_SPL_MALLOC_START).
+
+- CONFIG_SYS_NONCACHED_MEMORY:
+               Size of non-cached memory area. This area of memory will be
+               typically located right below the malloc() area and mapped
+               uncached in the MMU. This is useful for drivers that would
+               otherwise require a lot of explicit cache maintenance. For
+               some drivers it's also impossible to properly maintain the
+               cache. For example if the regions that need to be flushed
+               are not a multiple of the cache-line size, *and* padding
+               cannot be allocated between the regions to align them (i.e.
+               if the HW requires a contiguous array of regions, and the
+               size of each region is not cache-aligned), then a flush of
+               one region may result in overwriting data that hardware has
+               written to another region in the same cache-line. This can
+               happen for example in network drivers where descriptors for
+               buffers are typically smaller than the CPU cache-line (e.g.
+               16 bytes vs. 32 or 64 bytes).
+
+               Non-cached memory is only supported on 32-bit ARM at present.
+
 - CONFIG_SYS_BOOTM_LEN:
                Normally compressed uImages are limited to an
                uncompressed size of 8 MBytes. If this is not enough,
@@ -4008,8 +4161,8 @@ Configuration Settings:
 
        The format of the list is:
                type_attribute = [s|d|x|b|i|m]
-               access_atribute = [a|r|o|c]
-               attributes = type_attribute[access_atribute]
+               access_attribute = [a|r|o|c]
+               attributes = type_attribute[access_attribute]
                entry = variable_name[:attributes]
                list = entry[,list]
 
@@ -4029,7 +4182,7 @@ Configuration Settings:
 
        - CONFIG_ENV_FLAGS_LIST_DEFAULT
                Define this to a list (string) to define the ".flags"
-               envirnoment variable in the default or embedded environment.
+               environment variable in the default or embedded environment.
 
        - CONFIG_ENV_FLAGS_LIST_STATIC
                Define this to a list (string) to define validation that
@@ -4055,7 +4208,7 @@ Configuration Settings:
 - CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
        This is set by OMAP boards for the max time that reset should
        be asserted. See doc/README.omap-reset-time for details on how
-       the value can be calulated on a given board.
+       the value can be calculated on a given board.
 
 - CONFIG_USE_STDINT
        If stdint.h is available with your toolchain you can define this
@@ -4156,7 +4309,7 @@ accordingly!
          provision.
 
 BE CAREFUL! The first access to the environment happens quite early
-in U-Boot initalization (when we try to get the setting of for the
+in U-Boot initialization (when we try to get the setting of for the
 console baudrate). You *MUST* have mapped your NVRAM area then, or
 U-Boot will hang.
 
@@ -4379,16 +4532,16 @@ but it can not erase, write this NOR flash by SRIO or PCIE interface.
                               table, or the whole device D if has no partition
                               table.
                - "D:auto": first partition in device D with bootable flag set.
-                           If none, first valid paratition in device D. If no
+                           If none, first valid partition in device D. If no
                            partition table then means device D.
 
        - FAT_ENV_FILE:
 
          It's a string of the FAT file name. This file use to store the
-         envrionment.
+         environment.
 
        - CONFIG_FAT_WRITE:
-         This should be defined. Otherwise it cannot save the envrionment file.
+         This should be defined. Otherwise it cannot save the environment file.
 
 - CONFIG_ENV_IS_IN_MMC:
 
@@ -4571,7 +4724,7 @@ Low Level (hardware related) configuration options:
                if CONFIG_SYS_FDC_HW_INIT is defined, then the function
                fdc_hw_init() is called at the beginning of the FDC
                setup. fdc_hw_init() must be provided by the board
-               source code. It is used to make hardware dependant
+               source code. It is used to make hardware-dependent
                initializations.
 
 - CONFIG_IDE_AHB:
@@ -4580,7 +4733,7 @@ Low Level (hardware related) configuration options:
                When software is doing ATA command and data transfer to
                IDE devices through IDE-AHB controller, some additional
                registers accessing to these kind of IDE-AHB controller
-               is requierd.
+               is required.
 
 - CONFIG_SYS_IMMR:     Physical address of the Internal Memory.
                DO NOT CHANGE unless you know exactly what you're
@@ -4693,7 +4846,7 @@ Low Level (hardware related) configuration options:
                required.
 
 - CONFIG_PCI_ENUM_ONLY
-               Only scan through and get the devices on the busses.
+               Only scan through and get the devices on the buses.
                Don't do any setup work, presumably because someone or
                something has already done it, and we don't need to do it
                a second time.  Useful for platforms that are pre-booted
@@ -5012,14 +5165,14 @@ this behavior and build U-Boot to some external directory:
        make O=/tmp/build NAME_defconfig
        make O=/tmp/build all
 
-2. Set environment variable BUILD_DIR to point to the desired location:
+2. Set environment variable KBUILD_OUTPUT to point to the desired location:
 
-       export BUILD_DIR=/tmp/build
+       export KBUILD_OUTPUT=/tmp/build
        make distclean
        make NAME_defconfig
        make all
 
-Note that the command line "O=" setting overrides the BUILD_DIR environment
+Note that the command line "O=" setting overrides the KBUILD_OUTPUT environment
 variable.
 
 
@@ -5315,7 +5468,7 @@ List of environment variables (most likely not complete):
 
   npe_ucode    - set load address for the NPE microcode
 
-  silent_linux  - If set then linux will be told to boot silently, by
+  silent_linux  - If set then Linux will be told to boot silently, by
                  changing the console to be empty. If "yes" it will be
                  made silent. If "no" it will not be made silent. If
                  unset, then it will be made silent if the U-Boot console
@@ -5402,7 +5555,7 @@ Callback functions for environment variables:
 ---------------------------------------------
 
 For some environment variables, the behavior of u-boot needs to change
-when their values are changed.  This functionailty allows functions to
+when their values are changed.  This functionality allows functions to
 be associated with arbitrary variables.  On creation, overwrite, or
 deletion, the callback will provide the opportunity for some side
 effect to happen or for the change to be rejected.
@@ -5425,7 +5578,7 @@ Callbacks can also be associated by defining the ".callbacks" variable
 with the same list format above.  Any association in ".callbacks" will
 override any association in the static list. You can define
 CONFIG_ENV_CALLBACK_LIST_DEFAULT to a list (string) to define the
-".callbacks" envirnoment variable in the default or embedded environment.
+".callbacks" environment variable in the default or embedded environment.
 
 
 Command Line Parsing:
@@ -6190,7 +6343,7 @@ code for the initialization procedures:
 * Initialized global data (data segment) is read-only. Do not attempt
   to write it.
 
-* Do not use any uninitialized global data (or implicitely initialized
+* Do not use any uninitialized global data (or implicitly initialized
   as zero data - BSS segment) at all - this is undefined, initiali-
   zation is performed later (when relocating to RAM).
 
@@ -6198,7 +6351,7 @@ code for the initialization procedures:
   that.
 
 Having only the stack as writable memory limits means we cannot use
-normal global data to share information beween the code. But it
+normal global data to share information between the code. But it
 turned out that the implementation of U-Boot can be greatly
 simplified by making a global data structure (gd_t) available to all
 functions. We could pass a pointer to this data as argument to _all_
@@ -6329,7 +6482,7 @@ System Initialization:
 
 In the reset configuration, U-Boot starts at the reset entry point
 (on most PowerPC systems at address 0x00000100). Because of the reset
-configuration for CS0# this is a mirror of the onboard Flash memory.
+configuration for CS0# this is a mirror of the on board Flash memory.
 To be able to re-map memory U-Boot then jumps to its link address.
 To be able to implement the initialization code in C, a (small!)
 initial stack is set up in the internal Dual Ported RAM (in case CPUs
@@ -6445,7 +6598,7 @@ coding style; see the file "Documentation/CodingStyle" and the script
 
 Source files originating from a different project (for example the
 MTD subsystem) are generally exempt from these guidelines and are not
-reformated to ease subsequent migration to newer versions of those
+reformatted to ease subsequent migration to newer versions of those
 sources.
 
 Please note that U-Boot is implemented in C (and to some small parts in
diff --git a/arch/arc/Makefile b/arch/arc/Makefile
new file mode 100644 (file)
index 0000000..03ea6db
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/arc/cpu/$(CPU)/start.o
+
+libs-y += arch/arc/cpu/$(CPU)/
+libs-y += arch/arc/lib/
+
+# MetaWare debugger doesn't support PIE (position-independent executable)
+# so the only way to load U-Boot in MDB is to fake it by:
+#   1. Reset PIE flag in ELF header
+#   2. Strip all debug information from elf
+ifdef CONFIG_SYS_LITTLE_ENDIAN
+       EXEC_TYPE_OFFSET=16
+else
+       EXEC_TYPE_OFFSET=17
+endif
+
+mdbtrick: u-boot
+       $(Q)printf '\x02' | dd of=u-boot bs=1 seek=$(EXEC_TYPE_OFFSET) count=1 \
+               conv=notrunc &> /dev/null
+       $(Q)$(CROSS_COMPILE)strip -g u-boot
index 171ad03429cb21f7e4aa4e0f2ba17eb352151a2e..5eb1d03cfaafbdb8faf75c01cb5cc5839c0102a1 100644 (file)
@@ -49,6 +49,7 @@ config SYS_CPU
         default "armv7" if CPU_V7
         default "pxa" if CPU_PXA
         default "sa1100" if CPU_SA1100
+       default "armv8" if ARM64
 
 choice
        prompt "Target select"
@@ -177,10 +178,6 @@ config TARGET_ETHERNUT5
        bool "Support ethernut5"
        select CPU_ARM926EJS
 
-config TARGET_TOP9000
-       bool "Support top9000"
-       select CPU_ARM926EJS
-
 config TARGET_MEESC
        bool "Support meesc"
        select CPU_ARM926EJS
@@ -206,10 +203,12 @@ config TARGET_PM9G45
        select CPU_ARM926EJS
 
 config TARGET_CORVUS
+       select SUPPORT_SPL
        bool "Support corvus"
        select CPU_ARM926EJS
 
 config TARGET_TAURUS
+       select SUPPORT_SPL
        bool "Support taurus"
        select CPU_ARM926EJS
 
@@ -229,9 +228,11 @@ config KIRKWOOD
 
 config TARGET_DB_MV784MP_GP
        bool "Support db-mv784mp-gp"
+       select CPU_V7
 
 config TARGET_MAXBCM
        bool "Support maxbcm"
+       select CPU_V7
 
 config TARGET_DEVKIT3250
        bool "Support devkit3250"
@@ -340,6 +341,10 @@ config TARGET_SPEAR600
        bool "Support spear600"
        select CPU_ARM926EJS
 
+config TARGET_STV0991
+       bool "Support stv0991"
+       select CPU_V7
+
 config TARGET_X600
        bool "Support x600"
        select CPU_ARM926EJS
@@ -395,8 +400,8 @@ config TARGET_MX35PDK
        bool "Support mx35pdk"
        select CPU_ARM1136
 
-config TARGET_RPI_B
-       bool "Support rpi_b"
+config TARGET_RPI
+       bool "Support rpi"
        select CPU_ARM1176
 
 config TARGET_TNETV107X_EVM
@@ -414,6 +419,8 @@ config TARGET_INTEGRATORCP_CM946ES
 config TARGET_VEXPRESS_CA15_TC2
        bool "Support vexpress_ca15_tc2"
        select CPU_V7
+       select CPU_V7_HAS_NONSEC
+       select CPU_V7_HAS_VIRT
 
 config TARGET_VEXPRESS_CA5X2
        bool "Support vexpress_ca5x2"
@@ -508,16 +515,24 @@ config TARGET_SAMA5D3XEK
        select CPU_V7
        select SUPPORT_SPL
 
+config TARGET_SAMA5D4_XPLAINED
+       bool "Support sama5d4_xplained"
+       select CPU_V7
+
+config TARGET_SAMA5D4EK
+       bool "Support sama5d4ek"
+       select CPU_V7
+
 config TARGET_BCM28155_AP
        bool "Support bcm28155_ap"
        select CPU_V7
 
-config TARGET_BCM958300K
-       bool "Support bcm958300k"
+config TARGET_BCMCYGNUS
+       bool "Support bcmcygnus"
        select CPU_V7
 
-config TARGET_BCM958622HR
-       bool "Support bcm958622hr"
+config TARGET_BCMNSP
+       bool "Support bcmnsp"
        select CPU_V7
 
 config ARCH_EXYNOS
@@ -613,6 +628,7 @@ config TARGET_MX6QSABREAUTO
 config TARGET_MX6SABRESD
        bool "Support mx6sabresd"
        select CPU_V7
+       select SUPPORT_SPL
 
 config TARGET_MX6SLEVK
        bool "Support mx6slevk"
@@ -631,6 +647,15 @@ config TARGET_HUMMINGBOARD
        bool "Support hummingboard"
        select CPU_V7
 
+config TARGET_KOSAGI_NOVENA
+       bool "Support Kosagi Novena"
+       select CPU_V7
+       select SUPPORT_SPL
+
+config TARGET_TBS2910
+       bool "Support tbs2910"
+       select CPU_V7
+
 config TARGET_TQMA6
        bool "TQ Systems TQMa6 board"
        select CPU_V7
@@ -667,30 +692,8 @@ config TARGET_SOCFPGA_CYCLONE5
        select CPU_V7
        select SUPPORT_SPL
 
-config TARGET_SUN4I
-       bool "Support sun4i"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_SUN5I
-       bool "Support sun5i"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_SUN6I
-       bool "Support sun6i"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_SUN7I
-       bool "Support sun7i"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_SUN8I
-       bool "Support sun8i"
-       select CPU_V7
-       select SUPPORT_SPL
+config ARCH_SUNXI
+       bool "Support sunxi (Allwinner) SoCs"
 
 config TARGET_SNOWBALL
        bool "Support snowball"
@@ -730,12 +733,14 @@ config TARGET_LS2085A_SIMU
        select ARM64
 
 config TARGET_LS1021AQDS
-       bool "Support ls1021aqds_nor"
+       bool "Support ls1021aqds"
        select CPU_V7
+       select SUPPORT_SPL
 
 config TARGET_LS1021ATWR
-       bool "Support ls1021atwr_nor"
+       bool "Support ls1021atwr"
        select CPU_V7
+       select SUPPORT_SPL
 
 config TARGET_BALLOON3
        bool "Support balloon3"
@@ -795,11 +800,11 @@ config ARCH_UNIPHIER
        bool "Panasonic UniPhier platform"
        select CPU_V7
        select SUPPORT_SPL
+       select SPL
+       select OF_CONTROL if !SPL_BUILD
 
 endchoice
 
-source "arch/arm/cpu/armv8/Kconfig"
-
 source "arch/arm/cpu/arm926ejs/davinci/Kconfig"
 
 source "arch/arm/cpu/armv7/exynos/Kconfig"
@@ -832,6 +837,8 @@ source "arch/arm/cpu/arm926ejs/versatile/Kconfig"
 
 source "arch/arm/cpu/armv7/zynq/Kconfig"
 
+source "arch/arm/cpu/armv7/Kconfig"
+
 source "board/aristainetos/Kconfig"
 source "board/BuR/kwb/Kconfig"
 source "board/BuR/tseries/Kconfig"
@@ -858,6 +865,8 @@ source "board/atmel/at91sam9rlek/Kconfig"
 source "board/atmel/at91sam9x5ek/Kconfig"
 source "board/atmel/sama5d3_xplained/Kconfig"
 source "board/atmel/sama5d3xek/Kconfig"
+source "board/atmel/sama5d4_xplained/Kconfig"
+source "board/atmel/sama5d4ek/Kconfig"
 source "board/bachmann/ot1200/Kconfig"
 source "board/balloon3/Kconfig"
 source "board/barco/titanium/Kconfig"
@@ -865,8 +874,8 @@ source "board/bluegiga/apx4devkit/Kconfig"
 source "board/bluewater/snapper9260/Kconfig"
 source "board/boundary/nitrogen6x/Kconfig"
 source "board/broadcom/bcm28155_ap/Kconfig"
-source "board/broadcom/bcm958300k/Kconfig"
-source "board/broadcom/bcm958622hr/Kconfig"
+source "board/broadcom/bcmcygnus/Kconfig"
+source "board/broadcom/bcmnsp/Kconfig"
 source "board/calao/sbc35_a9g20/Kconfig"
 source "board/calao/tny_a9260/Kconfig"
 source "board/calao/usb_a9263/Kconfig"
@@ -918,6 +927,7 @@ source "board/imx31_phycore/Kconfig"
 source "board/isee/igep0033/Kconfig"
 source "board/jornada/Kconfig"
 source "board/karo/tx25/Kconfig"
+source "board/kosagi/novena/Kconfig"
 source "board/logicpd/imx27lite/Kconfig"
 source "board/logicpd/imx31_litekit/Kconfig"
 source "board/maxbcm/Kconfig"
@@ -929,7 +939,7 @@ source "board/palmtreo680/Kconfig"
 source "board/phytec/pcm051/Kconfig"
 source "board/ppcag/bg0900/Kconfig"
 source "board/pxa255_idp/Kconfig"
-source "board/raspberrypi/rpi_b/Kconfig"
+source "board/raspberrypi/rpi/Kconfig"
 source "board/ronetix/pm9261/Kconfig"
 source "board/ronetix/pm9263/Kconfig"
 source "board/ronetix/pm9g45/Kconfig"
@@ -951,10 +961,12 @@ source "board/spear/spear600/Kconfig"
 source "board/spear/x600/Kconfig"
 source "board/st-ericsson/snowball/Kconfig"
 source "board/st-ericsson/u8500/Kconfig"
+source "board/st/stv0991/Kconfig"
 source "board/sunxi/Kconfig"
 source "board/syteco/jadecpu/Kconfig"
 source "board/syteco/zmx25/Kconfig"
 source "board/taskit/stamp9g20/Kconfig"
+source "board/tbs/tbs2910/Kconfig"
 source "board/ti/am335x/Kconfig"
 source "board/ti/am43xx/Kconfig"
 source "board/ti/ti814x/Kconfig"
@@ -972,4 +984,6 @@ source "board/woodburn/Kconfig"
 source "board/xaeniax/Kconfig"
 source "board/zipitz2/Kconfig"
 
+source "arch/arm/Kconfig.debug"
+
 endmenu
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
new file mode 100644 (file)
index 0000000..624bcf4
--- /dev/null
@@ -0,0 +1,64 @@
+menu "ARM debug"
+
+config DEBUG_LL
+       bool "Low-level debugging functions"
+       depends on !ARM64
+       help
+         Say Y here to include definitions of printascii, printch, printhex
+         in U-Boot.  This is helpful if you are debugging code that
+         executes before the console is initialized.
+
+choice
+       prompt "Low-level debugging port"
+       depends on DEBUG_LL
+
+       config DEBUG_LL_UART_8250
+               bool "Low-level debugging via 8250 UART"
+               help
+                 Say Y here if you wish the debug print routes to direct
+                 their output to an 8250 UART.  You can use this option
+                 to provide the parameters for the 8250 UART rather than
+                 selecting one of the platform specific options above if
+                 you know the parameters for the port.
+
+                 This option is preferred over the platform specific
+                 options; the platform specific options are deprecated
+                 and will be soon removed.
+
+endchoice
+
+config DEBUG_LL_INCLUDE
+       string
+       depends on DEBUG_LL
+       default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
+       default "mach/debug-macro.S"
+
+# Compatibility options for 8250
+config DEBUG_UART_8250
+       bool
+
+config DEBUG_UART_PHYS
+       hex "Physical base address of debug UART"
+       depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
+
+# This is not used in U-Boot
+config DEBUG_UART_VIRT
+       hex
+       default DEBUG_UART_PHYS
+       depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
+
+config DEBUG_UART_8250_SHIFT
+       int "Register offset shift for the 8250 debug UART"
+       depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
+       default 2
+
+config DEBUG_UART_8250_WORD
+       bool "Use 32-bit accesses for 8250 UART"
+       depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
+       depends on DEBUG_UART_8250_SHIFT >= 2
+
+config DEBUG_UART_8250_FLOW_CONTROL
+       bool "Enable flow control for 8250 UART"
+       depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
+
+endmenu
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
new file mode 100644 (file)
index 0000000..ebb7dc3
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/arm/cpu/$(CPU)/start.o
+
+ifeq ($(CONFIG_SPL_BUILD),y)
+ifneq ($(CONFIG_SPL_START_S_PATH),)
+head-y := $(CONFIG_SPL_START_S_PATH:"%"=%)/start.o
+endif
+endif
+
+libs-y += arch/arm/cpu/$(CPU)/
+libs-y += arch/arm/cpu/
+libs-y += arch/arm/lib/
+
+ifeq ($(CONFIG_SPL_BUILD),y)
+ifneq (,$(CONFIG_MX23)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
+libs-y += arch/arm/imx-common/
+endif
+else
+ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
+libs-y += arch/arm/imx-common/
+endif
+endif
+
+ifneq (,$(filter $(SOC), armada-xp kirkwood))
+libs-y += arch/arm/mvebu-common/
+endif
index c339e6dc8cfbd683b6dfcef59935048e9282920c..0667984b697d62845cb013ba3376cfc5ca01bbf3 100644 (file)
@@ -26,7 +26,9 @@ PLATFORM_CPPFLAGS += -D__ARM__
 
 # Choose between ARM/Thumb instruction sets
 ifeq ($(CONFIG_SYS_THUMB_BUILD),y)
-PF_CPPFLAGS_ARM := $(call cc-option, -mthumb -mthumb-interwork,\
+AFLAGS_IMPLICIT_IT     := $(call as-option,-Wa$(comma)-mimplicit-it=always)
+PF_CPPFLAGS_ARM                := $(AFLAGS_IMPLICIT_IT) \
+                       $(call cc-option, -mthumb -mthumb-interwork,\
                        $(call cc-option,-marm,)\
                        $(call cc-option,-mno-thumb-interwork,)\
                )
index 3279f125f6534e2c1348c9d0561ee2044ba9ffc0..56a9390b0111856fcb335f858ec5bef5a75b2277 100644 (file)
@@ -7,3 +7,6 @@
 
 extra-y        = start.o
 obj-y  = cpu.o
+
+obj-$(CONFIG_MX31) += mx31/
+obj-$(CONFIG_MX35) += mx35/
index deec4274477551b17b13b8e1b601892246d2641c..ead2303373e58420270fc55ef7f570b71e81f419 100644 (file)
@@ -10,3 +10,6 @@
 
 extra-y        = start.o
 obj-y  = cpu.o
+
+obj-$(CONFIG_BCM2835) += bcm2835/
+obj-$(CONFIG_TNETV107X) += tnetv107x/
index 47c23bb2688f6f9cc5070998db1d7a795eb7c92a..7ba28d329fa8f6dc2766891425e086043a50cb9e 100644 (file)
@@ -16,7 +16,7 @@
 #define BIT(x)                 (1 << (x))
 
 #define MAX_PREDIV             64
-#define MAX_POSTDIV            8
+#define MAX_POSTDIV            8UL
 #define MAX_MULT               512
 #define MAX_DIV                        (MAX_PREDIV * MAX_POSTDIV)
 
@@ -362,7 +362,7 @@ static void init_pll(const struct pll_init_data *data)
        pllctl_reg_write(data->pll, ctl, tmp);
 
        mult = data->pll_freq / fpll;
-       for (mult = max(mult, 1); mult <= MAX_MULT; mult++) {
+       for (mult = max(mult, 1UL); mult <= MAX_MULT; mult++) {
                div = (fpll * mult) / data->pll_freq;
                if (div < 1 || div > MAX_DIV)
                        continue;
index 6badb3bb84b7200d9714c47d7f99ab09fdc11430..9f61ea25167d6bfc98ed01f2176cc628a03b9bf4 100644 (file)
@@ -9,3 +9,7 @@ extra-y = start.o
 obj-y  = interrupts.o cpu.o
 
 obj-$(CONFIG_TEGRA) += tegra-common/
+obj-$(CONFIG_TEGRA20) += tegra20/
+obj-$(CONFIG_TEGRA30) += tegra30/
+obj-$(CONFIG_TEGRA114) += tegra114/
+obj-$(CONFIG_TEGRA124) += tegra124/
index aac8043f6a8d0039ed8298164dfd0d6fc571955d..a72e5de99eb78b81e616b773df017d19657e1987 100644 (file)
@@ -9,3 +9,10 @@ extra-y        = start.o
 
 obj-y  += cpu.o
 obj-$(CONFIG_USE_IRQ)  += interrupts.o
+
+obj-$(if $(filter a320,$(SOC)),y) += a320/
+obj-$(CONFIG_AT91FAMILY) += at91/
+obj-$(CONFIG_EP93XX) += ep93xx/
+obj-$(CONFIG_IMX) += imx/
+obj-$(CONFIG_KS8695) += ks8695/
+obj-$(CONFIG_S3C24X0) += s3c24x0/
index 125299537f4dd60fe85b77ac76d7588f107d9fd5..adcea9f6834c0fbfc15e64ce1f8d084dac7e758f 100644 (file)
@@ -13,3 +13,18 @@ ifdef        CONFIG_SPL_NO_CPU_SUPPORT_CODE
 extra-y        :=
 endif
 endif
+
+obj-$(CONFIG_ARMADA100) += armada100/
+obj-$(CONFIG_AT91FAMILY) += at91/
+obj-$(CONFIG_ARCH_DAVINCI) += davinci/
+obj-$(CONFIG_KIRKWOOD) += kirkwood/
+obj-$(if $(filter lpc32xx,$(SOC)),y) += lpc32xx/
+obj-$(CONFIG_MB86R0x) += mb86r0x/
+obj-$(CONFIG_MX25) += mx25/
+obj-$(CONFIG_MX27) += mx27/
+obj-$(if $(filter mxs,$(SOC)),y) += mxs/
+obj-$(CONFIG_ARCH_NOMADIK) += nomadik/
+obj-$(CONFIG_ORION5X) += orion5x/
+obj-$(CONFIG_PANTHEON) += pantheon/
+obj-$(if $(filter spear,$(SOC)),y) += spear/
+obj-$(CONFIG_ARCH_VERSATILE) += versatile/
index cae4abcdf48fda5314b665a2ab47e5e093ace481..efb53d673f4ee137f68b3edfa94b707de4e1b257 100644 (file)
@@ -7,9 +7,12 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <asm/io.h>
+#include <asm/arch/at91sam9260_matrix.h>
 #include <asm/arch/at91_common.h>
 #include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91sam9_sdramc.h>
 #include <asm/arch/gpio.h>
 
 /*
@@ -207,3 +210,36 @@ void at91_mci_hw_init(void)
 #endif
 }
 #endif
+
+void at91_sdram_hw_init(void)
+{
+       at91_set_a_periph(AT91_PIO_PORTC, 16, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 17, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 18, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 19, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 20, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 21, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 22, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 23, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 24, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 25, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 26, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 27, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 28, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 29, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 30, 0);
+       at91_set_a_periph(AT91_PIO_PORTC, 31, 0);
+}
+
+/* Platform data for the GPIOs */
+static const struct at91_port_platdata at91sam9260_plat[] = {
+       { ATMEL_BASE_PIOA, "PA" },
+       { ATMEL_BASE_PIOB, "PB" },
+       { ATMEL_BASE_PIOC, "PC" },
+};
+
+U_BOOT_DEVICES(at91sam9260_gpios) = {
+       { "gpio_at91", &at91sam9260_plat[0] },
+       { "gpio_at91", &at91sam9260_plat[1] },
+       { "gpio_at91", &at91sam9260_plat[2] },
+};
index 31315b58e44ea77f4eba9991b8ff1db60dd5ea4c..f363982d0350d85dea3eef38be960de5b65a2b6b 100644 (file)
@@ -187,3 +187,63 @@ int at91_clock_init(unsigned long main_clock)
 
        return 0;
 }
+
+#if !defined(AT91_PLL_LOCK_TIMEOUT)
+#define AT91_PLL_LOCK_TIMEOUT  1000000
+#endif
+
+void at91_plla_init(u32 pllar)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       int timeout = AT91_PLL_LOCK_TIMEOUT;
+
+       writel(pllar, &pmc->pllar);
+       while (!(readl(&pmc->sr) & (AT91_PMC_LOCKA | AT91_PMC_MCKRDY))) {
+               timeout--;
+               if (timeout == 0)
+                       break;
+       }
+}
+void at91_pllb_init(u32 pllbr)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       int timeout = AT91_PLL_LOCK_TIMEOUT;
+
+       writel(pllbr, &pmc->pllbr);
+       while (!(readl(&pmc->sr) & (AT91_PMC_LOCKB | AT91_PMC_MCKRDY))) {
+               timeout--;
+               if (timeout == 0)
+                       break;
+       }
+}
+
+void at91_mck_init(u32 mckr)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       int timeout = AT91_PLL_LOCK_TIMEOUT;
+       u32 tmp;
+
+       tmp = readl(&pmc->mckr);
+       tmp &= ~(AT91_PMC_MCKR_PRES_MASK |
+                AT91_PMC_MCKR_MDIV_MASK |
+                AT91_PMC_MCKR_PLLADIV_MASK |
+                AT91_PMC_MCKR_CSS_MASK);
+       tmp |= mckr & (AT91_PMC_MCKR_PRES_MASK |
+                      AT91_PMC_MCKR_MDIV_MASK |
+                      AT91_PMC_MCKR_PLLADIV_MASK |
+                      AT91_PMC_MCKR_CSS_MASK);
+       writel(tmp, &pmc->mckr);
+
+       while (!(readl(&pmc->sr) & AT91_PMC_MCKRDY)) {
+               timeout--;
+               if (timeout == 0)
+                       break;
+       }
+}
+
+void at91_periph_clk_enable(int id)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+       writel(1 << id, &pmc->pcer);
+}
index e86c2edd3bbfa160d22eeb224990b40e4657ae65..8d7873c9af332fc48a2dd511f0df7f7bfcf8e4be 100644 (file)
@@ -99,7 +99,4 @@ void flush_cache(unsigned long start, unsigned long size)
 /*
  * Stub implementations for l2 cache operations
  */
-void __l2_cache_disable(void) {}
-
-void l2_cache_disable(void)
-       __attribute__((weak, alias("__l2_cache_disable")));
+__weak void l2_cache_disable(void) {}
index 134c69d42ddc1ca849fd93ae61e2aeb00d37eab8..ebc0407ef42abd86e7936e34acd1d0ea3470daa4 100644 (file)
@@ -5,3 +5,7 @@
 # SPDX-License-Identifier:     GPL-2.0+
 
 obj-y  = generic.o timer.o reset.o
+
+ifndef CONFIG_SPL_BUILD
+obj-y  += relocate.o
+endif
index 4e9c0b548119d754b0b4b633277ea8e84a62410c..8912098573f4915a341e827dabef8a7a0e28cb2e 100644 (file)
@@ -181,7 +181,7 @@ int print_cpuinfo(void)
                (cpurev & 0xF0) >> 4, (cpurev & 0x0F),
                ((cpurev & 0x8000) ? " unknown" : ""),
                strmhz(buf, imx_get_armclk()));
-       printf("Reset cause: %s\n\n", get_reset_cause());
+       printf("Reset cause: %s\n", get_reset_cause());
        return 0;
 }
 #endif
diff --git a/arch/arm/cpu/arm926ejs/mx25/relocate.S b/arch/arm/cpu/arm926ejs/mx25/relocate.S
new file mode 100644 (file)
index 0000000..8ebb81f
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ *  relocate - i.MX25-specific vector relocation
+ *
+ *  Copyright (c) 2013  Albert ARIBAUD <albert.u.boot@aribaud.net>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/linkage.h>
+
+/*
+ * The i.MX25 SoC is very specific with respect to exceptions: it
+ * does not provide RAM at the high vectors address (0xFFFF0000),
+ * thus only the low address (0x00000000) is useable; but that is
+ * in ROM, so let's avoid relocating the vectors.
+ */
+       .section        .text.relocate_vectors,"ax",%progbits
+
+ENTRY(relocate_vectors)
+
+       bx      lr
+
+ENDPROC(relocate_vectors)
index 4976bbb89b05f240699400e64eefcda1fd3a3196..0edf1445fe364c19e8b00efd0f499783d245b114 100644 (file)
@@ -5,3 +5,7 @@
 # SPDX-License-Identifier:     GPL-2.0+
 
 obj-y  = generic.o reset.o timer.o
+
+ifndef CONFIG_SPL_BUILD
+obj-y  += relocate.o
+endif
diff --git a/arch/arm/cpu/arm926ejs/mx27/relocate.S b/arch/arm/cpu/arm926ejs/mx27/relocate.S
new file mode 100644 (file)
index 0000000..0c4b272
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ *  relocate - i.MX27-specific vector relocation
+ *
+ *  Copyright (c) 2013  Albert ARIBAUD <albert.u.boot@aribaud.net>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm-offsets.h>
+#include <config.h>
+#include <linux/linkage.h>
+
+/*
+ * The i.MX27 SoC is very specific with respect to exceptions: it
+ * does not provide RAM at the high vectors address (0xFFFF0000),
+ * thus only the low address (0x00000000) is useable; but that is
+ * in ROM. Therefore, vectors cannot be changed at all.
+ *
+ * However, these ROM-based vectors actually just perform indirect
+ * calls through pointers located in RAM at SoC-specific addresses,
+ * as follows:
+ *
+ * Offset      Exception              Use by ROM code
+ * 0x00000000  reset                  indirect branch to [0x00000014]
+ * 0x00000004  undefined instruction  indirect branch to [0xfffffef0]
+ * 0x00000008  software interrupt     indirect branch to [0xfffffef4]
+ * 0x0000000c  prefetch abort         indirect branch to [0xfffffef8]
+ * 0x00000010  data abort             indirect branch to [0xfffffefc]
+ * 0x00000014  (reserved in ARMv5)    vector to ROM reset: 0xc0000000
+ * 0x00000018  IRQ                    indirect branch to [0xffffff00]
+ * 0x0000001c  FIQ                    indirect branch to [0xffffff04]
+ *
+ * In order to initialize exceptions on i.MX27, we must copy U-Boot's
+ * indirect (not exception!) vector table into 0xfffffef0..0xffffff04
+ * taking care not to copy vectors number 5 (reserved exception).
+ */
+
+       .section        .text.relocate_vectors,"ax",%progbits
+
+ENTRY(relocate_vectors)
+
+       ldr     r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
+       ldr     r1, =32                 /* size of vector table */
+       add     r0, r0, r1              /* skip to indirect table */
+       ldr     r1, =0xFFFFFEF0         /* i.MX27 indirect table */
+       ldmia   r0!, {r2-r8}            /* load indirect vectors 1..7 */
+       stmia   r1!, {r2-r5, r7,r8}     /* write all but vector 5 */
+
+       bx      lr
+
+ENDPROC(relocate_vectors)
index 365542fe0bb29e1a7c2cc4ff4d35c83adb41d37b..ef130aea426975babb926a48d0da0e863ec65638 100644 (file)
@@ -83,7 +83,9 @@ void mx28_fixup_vt(uint32_t start_addr)
        int i;
 
        for (i = 0; i < 8; i++) {
+               /* cppcheck-suppress nullPointer */
                vt[i] = ldr_pc;
+               /* cppcheck-suppress nullPointer */
                vt[i + 8] = start_addr + (4 * i);
        }
 }
index 1520bba3fbaaff2d5d2690e464b4c8d60cbbadc1..83953daf287819bcfb113fc7d670acb89b2b31d9 100644 (file)
@@ -1,3 +1,4 @@
+DISPLAYPROGRESS
 SECTION 0x0 BOOTABLE
  TAG LAST
  LOAD     0x1000     spl/u-boot-spl.bin
index 55510e9cd8fa18474f57fc823ef759c673799970..e7028092a2c383fc5dc138e90804801c6c7dbea5 100644 (file)
@@ -1,3 +1,4 @@
+DISPLAYPROGRESS
 SECTION 0x0 BOOTABLE
  TAG LAST
  LOAD     0x1000     spl/u-boot-spl.bin
index bb78cb0c84838041a7f5d97ddd7108bb03f3624e..3f7bf59924825e40d5194fa04b1b14071a3a53a9 100644 (file)
@@ -1,3 +1,4 @@
+DISPLAYPROGRESS
 SECTION 0x0 BOOTABLE
  TAG LAST
  LOAD     0x1000     spl/u-boot-spl.bin
index d3e136991ad2035ad187b6ac22095711561bfaa2..d29b9aaf3da576889bfb02620e8e7aeb106b8db7 100644 (file)
@@ -118,6 +118,8 @@ static void mxs_spl_fixup_vectors(void)
         * fine.
         */
        extern uint32_t _start;
+
+       /* cppcheck-suppress nullPointer */
        memcpy(0x0, &_start, 0x60);
 }
 
index d25019a51ef2ab0aa58ac75b923898a885365959..1c54ab7de3bfc3726b1c823e47500a462607b1a4 100644 (file)
@@ -1002,7 +1002,8 @@ static void mxs_power_set_vddx(const struct mxs_vddx_cfg *cfg,
        uint32_t powered_by_linreg = 0;
        int adjust_up, tmp;
 
-       new_brownout = DIV_ROUND(new_target - new_brownout, cfg->step_mV);
+       new_brownout = DIV_ROUND_CLOSEST(new_target - new_brownout,
+                                        cfg->step_mV);
 
        cur_target = readl(cfg->reg);
        cur_target &= cfg->trg_mask;
index 99d3fb8731f3e0b9d2ac6589ae60b3a3086115b0..f2e72257d15b5d77fb7d583152f2b19b1f32a95f 100644 (file)
@@ -91,6 +91,8 @@ unsigned long long get_ticks(void)
                TIMROT_RUNNING_COUNTn_RUNNING_COUNT_OFFSET;
 #elif defined(CONFIG_MX28)
        now = readl(&timrot_regs->hw_timrot_running_count0);
+#else
+#error "Don't know how to read timrot_regs"
 #endif
 
        if (lastdec >= now) {
diff --git a/arch/arm/cpu/arm_intcm/Makefile b/arch/arm/cpu/arm_intcm/Makefile
deleted file mode 100644 (file)
index 3279f12..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-extra-y        = start.o
-obj-y  = cpu.o
diff --git a/arch/arm/cpu/arm_intcm/config.mk b/arch/arm/cpu/arm_intcm/config.mk
deleted file mode 100644 (file)
index 438668d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS +=  -march=armv4
diff --git a/arch/arm/cpu/arm_intcm/cpu.c b/arch/arm/cpu/arm_intcm/cpu.c
deleted file mode 100644 (file)
index 0d00e4b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * CPU specific code for an unknown cpu
- * - hence fairly empty......
- */
-
-#include <common.h>
-#include <command.h>
-
-int cleanup_before_linux (void)
-{
-       /*
-        * this function is called just before we call linux
-        * it prepares the processor for linux
-        *
-        * we turn off caches etc ...
-        */
-
-       disable_interrupts ();
-
-       /* Since the CM has unknown processor we do not support
-        * cache operations
-        */
-
-       return (0);
-}
diff --git a/arch/arm/cpu/arm_intcm/start.S b/arch/arm/cpu/arm_intcm/start.S
deleted file mode 100644 (file)
index c0c07b6..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *  armboot - Startup Code for ARM926EJS CPU-core
- *
- *  Copyright (c) 2003  Texas Instruments
- *
- *  ----- Adapted for OMAP1610 OMAP730 from ARM925t code ------
- *
- *  Copyright (c) 2001 Marius Gröger <mag@sysgo.de>
- *  Copyright (c) 2002 Alex Züpke <azu@sysgo.de>
- *  Copyright (c) 2002 Gary Jennejohn <garyj@denx.de>
- *  Copyright (c) 2003 Richard Woodruff <r-woodruff2@ti.com>
- *  Copyright (c) 2003 Kshitij <kshitij@ti.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <config.h>
-#include <version.h>
-
-/*
- *************************************************************************
- *
- * Startup Code (reset vector)
- *
- * do important init only if we don't start from memory!
- * setup memory and board specific bits prior to relocation.
- * relocate armboot to ram
- * setup stack
- *
- *************************************************************************
- */
-
-       .globl  reset
-
-reset:
-       /*
-        * set the cpu to SVC32 mode
-        */
-       mrs     r0,cpsr
-       bic     r0,r0,#0x1f
-       orr     r0,r0,#0xd3
-       msr     cpsr,r0
-
-       /*
-        * we do sys-critical inits only at reboot,
-        * not when booting from ram!
-        */
-#ifndef CONFIG_SKIP_LOWLEVEL_INIT
-       bl      cpu_init_crit
-#endif
-
-       bl      _main
-
-/*------------------------------------------------------------------------------*/
-
-       .globl  c_runtime_cpu_setup
-c_runtime_cpu_setup:
-
-       mov     pc, lr
-
-/*
- *************************************************************************
- *
- * CPU_init_critical registers
- *
- * setup important registers
- * setup memory timing
- *
- *************************************************************************
- */
-
-#ifndef CONFIG_SKIP_LOWLEVEL_INIT
-cpu_init_crit:
-       /*  arm_int_generic assumes the ARM boot monitor, or user software,
-        * has initialized the platform
-        */
-       mov     pc, lr          /* back to my caller */
-#endif
diff --git a/arch/arm/cpu/armv7/Kconfig b/arch/arm/cpu/armv7/Kconfig
new file mode 100644 (file)
index 0000000..61e7c82
--- /dev/null
@@ -0,0 +1,34 @@
+if CPU_V7
+
+config CPU_V7_HAS_NONSEC
+        bool
+
+config CPU_V7_HAS_VIRT
+        bool
+
+config ARMV7_NONSEC
+       boolean "Enable support for booting in non-secure mode" if EXPERT
+       depends on CPU_V7_HAS_NONSEC
+       default y
+       ---help---
+       Say Y here to enable support for booting in non-secure / SVC mode.
+
+config ARMV7_BOOT_SEC_DEFAULT
+       boolean "Boot in secure mode by default" if EXPERT
+       depends on ARMV7_NONSEC
+       default n
+       ---help---
+       Say Y here to boot in secure mode by default even if non-secure mode
+       is supported. This option is useful to boot kernels which do not
+       suppport booting in non-secure mode. Only set this if you need it.
+       This can be overriden at run-time by setting the bootm_boot_mode env.
+       variable to "sec" or "nonsec".
+
+config ARMV7_VIRT
+       boolean "Enable support for hardware virtualization" if EXPERT
+       depends on CPU_V7_HAS_VIRT && ARMV7_NONSEC
+       default y
+       ---help---
+       Say Y here to boot in hypervisor (HYP) mode when booting non-secure.
+
+endif
index afeed4dad84bdddd4557604d6978549879e2dc59..409e6f5651b67cf2e85fbf63ad284f01ca6b9908 100644 (file)
@@ -37,3 +37,29 @@ obj-$(CONFIG_TEGRA) += tegra-common/
 ifneq (,$(filter s5pc1xx exynos,$(SOC)))
 obj-y += s5p-common/
 endif
+
+obj-$(if $(filter am33xx,$(SOC)),y) += am33xx/
+obj-$(if $(filter armada-xp,$(SOC)),y) += armada-xp/
+obj-$(CONFIG_AT91FAMILY) += at91/
+obj-$(if $(filter bcm281xx,$(SOC)),y) += bcm281xx/
+obj-$(if $(filter bcmcygnus,$(SOC)),y) += bcmcygnus/
+obj-$(if $(filter bcmnsp,$(SOC)),y) += bcmnsp/
+obj-$(CONFIG_ARCH_EXYNOS) += exynos/
+obj-$(CONFIG_ARCH_HIGHBANK) += highbank/
+obj-$(CONFIG_ARCH_KEYSTONE) += keystone/
+obj-$(if $(filter ls102xa,$(SOC)),y) += ls102xa/
+obj-$(if $(filter mx5,$(SOC)),y) += mx5/
+obj-$(CONFIG_MX6) += mx6/
+obj-$(CONFIG_OMAP34XX) += omap3/
+obj-$(CONFIG_OMAP44XX) += omap4/
+obj-$(CONFIG_OMAP54XX) += omap5/
+obj-$(CONFIG_RMOBILE) += rmobile/
+obj-$(CONFIG_ARCH_S5PC1XX) += s5pc1xx/
+obj-$(CONFIG_SOCFPGA) += socfpga/
+obj-$(if $(filter stv0991,$(SOC)),y) += stv0991/
+obj-$(CONFIG_ARCH_SUNXI) += sunxi/
+obj-$(CONFIG_TEGRA20) += tegra20/
+obj-$(CONFIG_U8500) += u8500/
+obj-$(CONFIG_ARCH_UNIPHIER) += uniphier/
+obj-$(CONFIG_VF610) += vf610/
+obj-$(CONFIG_ZYNQ) += zynq/
index 29b1d734382a3c8a83a41cad409a8b5b6e217d7e..eaf09d1a627746e0aea1c1317aa6a8ea390693ad 100644 (file)
@@ -294,7 +294,6 @@ void s_init(void)
        save_omap_boot_params();
 #endif
        watchdog_disable();
-       timer_init();
        set_uart_mux_conf();
        setup_clocks_for_console();
        uart_soft_reset();
index 2ce682f6b1087ba056d2ce627e9745382c0b288d..781d83fc72a400f416d7c23b8f3f32b4b924af3a 100644 (file)
@@ -18,6 +18,7 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/clock.h>
 #include <power/tps65910.h>
+#include <linux/compiler.h>
 
 struct ctrl_stat *cstat = (struct ctrl_stat *)CTRL_BASE;
 
@@ -51,11 +52,11 @@ u32 get_cpu_type(void)
 
 /**
  * get_board_rev() - setup to pass kernel board revision information
- * returns:(bit[0-3] sub version, higher bit[7-4] is higher version)
+ * returns: 0 for the ATAG REVISION tag value.
  */
-u32 get_board_rev(void)
+u32 __weak get_board_rev(void)
 {
-       return BOARD_REV_ID;
+       return 0;
 }
 
 /**
index 0a2e48d0476c2d0c9b768029957d608285c7a032..f4f35a4bc1923ac59b700925b1ac6fcba66050db 100644 (file)
@@ -9,6 +9,7 @@
 #
 
 obj-$(CONFIG_SAMA5D3)  += sama5d3_devices.o
+obj-$(CONFIG_SAMA5D4)  += sama5d4_devices.o
 obj-y += clock.o
 obj-y += cpu.o
 obj-y += reset.o
index 36ed4a639446597085384023e3631eec24d64d00..2cdddb25048964364d1155dc6a76e762890be707 100644 (file)
@@ -111,6 +111,35 @@ int at91_clock_init(unsigned long main_clock)
        return 0;
 }
 
+void at91_plla_init(u32 pllar)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+       writel(pllar, &pmc->pllar);
+       while (!(readl(&pmc->sr) & (AT91_PMC_LOCKA | AT91_PMC_MCKRDY)))
+               ;
+}
+
+void at91_mck_init(u32 mckr)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       u32 tmp;
+
+       tmp = readl(&pmc->mckr);
+       tmp &= ~(AT91_PMC_MCKR_CSS_MASK  |
+                AT91_PMC_MCKR_PRES_MASK |
+                AT91_PMC_MCKR_MDIV_MASK |
+                AT91_PMC_MCKR_PLLADIV_2);
+       tmp |= mckr & (AT91_PMC_MCKR_CSS_MASK  |
+                      AT91_PMC_MCKR_PRES_MASK |
+                      AT91_PMC_MCKR_MDIV_MASK |
+                      AT91_PMC_MCKR_PLLADIV_2);
+       writel(tmp, &pmc->mckr);
+
+       while (!(readl(&pmc->sr) & AT91_PMC_MCKRDY))
+               ;
+}
+
 void at91_periph_clk_enable(int id)
 {
        struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
index 09eab709554486c02d789e3481a8e39914c30a29..db6030880fba2f456661bb74c70157cf88f027d9 100644 (file)
@@ -3,8 +3,6 @@
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
-ifdef CONFIG_SPL_BUILD
-ALL-y  += boot.bin
-else
+ifndef CONFIG_SPL_BUILD
 ALL-y  += u-boot.img
 endif
diff --git a/arch/arm/cpu/armv7/at91/sama5d4_devices.c b/arch/arm/cpu/armv7/at91/sama5d4_devices.c
new file mode 100644 (file)
index 0000000..2708097
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 Atmel
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/sama5d4.h>
+
+char *get_cpu_name()
+{
+       unsigned int extension_id = get_extension_chip_id();
+
+       if (cpu_is_sama5d4())
+               switch (extension_id) {
+               case ARCH_EXID_SAMA5D41:
+                       return "SAMA5D41";
+               case ARCH_EXID_SAMA5D42:
+                       return "SAMA5D42";
+               case ARCH_EXID_SAMA5D43:
+                       return "SAMA5D43";
+               case ARCH_EXID_SAMA5D44:
+                       return "SAMA5D44";
+               default:
+                       return "Unknown CPU type";
+               }
+       else
+               return "Unknown CPU type";
+}
index e3ebfe0c523c45f781cb5725f7ba001749e95926..19bf80ba7eb6195a57b8d91bde9e793567da7fd6 100644 (file)
@@ -65,7 +65,8 @@ int timer_init(void)
        /* Enable PITC */
        writel(TIMER_LOAD_VAL | AT91_PIT_MR_EN , &pit->mr);
 
-       gd->arch.timer_rate_hz = gd->arch.mck_rate_hz / 16;
+       gd->arch.timer_rate_hz = get_pit_clk_rate() / 16;
+
        gd->arch.tbu = 0;
        gd->arch.tbl = 0;
 
index bd867a271802fa32ea00b0836b63949086b4ccd7..f24aeb3826828fdc0d040c27712b099f4477085b 100644 (file)
@@ -10,3 +10,4 @@ obj-y += clk-bcm281xx.o
 obj-y  += clk-sdio.o
 obj-y  += clk-bsc.o
 obj-$(CONFIG_BCM_SF2_ETH) += clk-eth.o
+obj-y  += clk-usb-otg.o
index d16b99fc23bc5ff36b9d291fe2e37813cedc4283..7e25255230abb44508a25380c3dcf346dca451a3 100644 (file)
@@ -209,6 +209,10 @@ static struct peri_clk_data sdio4_sleep_data = {
        .gate           = SW_ONLY_GATE(0x0360, 20, 4),
 };
 
+static struct bus_clk_data usb_otg_ahb_data = {
+       .gate           = HW_SW_GATE_AUTO(0x0348, 16, 0, 1),
+};
+
 static struct bus_clk_data sdio1_ahb_data = {
        .gate           = HW_SW_GATE_AUTO(0x0358, 16, 0, 1),
 };
@@ -331,6 +335,17 @@ static struct ccu_clock esub_ccu_clk = {
  */
 
 /* KPM bus clocks */
+static struct bus_clock usb_otg_ahb_clk = {
+       .clk = {
+               .name = "usb_otg_ahb_clk",
+               .parent = &kpm_ccu_clk.clk,
+               .ops = &bus_clk_ops,
+               .ccu_clk_mgr_base = KONA_MST_CLK_BASE_ADDR,
+       },
+       .freq_tbl = master_ahb_freq_tbl,
+       .data = &usb_otg_ahb_data,
+};
+
 static struct bus_clock sdio1_ahb_clk = {
        .clk = {
                .name = "sdio1_ahb_clk",
@@ -541,6 +556,7 @@ struct clk_lookup arch_clk_tbl[] = {
        CLK_LK(bsc2),
        CLK_LK(bsc3),
        /* Bus clocks */
+       CLK_LK(usb_otg_ahb),
        CLK_LK(sdio1_ahb),
        CLK_LK(sdio2_ahb),
        CLK_LK(sdio3_ahb),
index 882a2977979c7fd87c09fe1866731a38da0a663f..4a694d7fe782267b0cd0b32df4004636827a7b0c 100644 (file)
@@ -73,10 +73,6 @@ struct clk {
 
 struct refclk *refclk_str_to_clk(const char *name);
 
-#define U8_MAX ((u8)~0U)
-#define U32_MAX        ((u32)~0U)
-#define U64_MAX        ((u64)~0U)
-
 /* The common clock framework uses u8 to represent a parent index */
 #define PARENT_COUNT_MAX       ((u32)U8_MAX)
 
diff --git a/arch/arm/cpu/armv7/bcm281xx/clk-usb-otg.c b/arch/arm/cpu/armv7/bcm281xx/clk-usb-otg.c
new file mode 100644 (file)
index 0000000..1d7c5af
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2014 Broadcom Corporation.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/errno.h>
+#include <asm/arch/sysmap.h>
+#include "clk-core.h"
+
+/* Enable appropriate clocks for the USB OTG port */
+int clk_usb_otg_enable(void *base)
+{
+       char *ahbstr;
+
+       switch ((u32) base) {
+       case HSOTG_BASE_ADDR:
+               ahbstr = "usb_otg_ahb_clk";
+               break;
+       default:
+               printf("%s: base 0x%p not found\n", __func__, base);
+               return -EINVAL;
+       }
+
+       return clk_get_and_enable(ahbstr);
+}
index a2c4032fed8c2c8d7719f4be0806319ac077261a..0f9d8377ed5ac568d996257647c9137d6fa60477 100644 (file)
@@ -21,7 +21,8 @@
  * to get size details from Current Cache Size ID Register(CCSIDR)
  */
 static void set_csselr(u32 level, u32 type)
-{      u32 csselr = level << 1 | type;
+{
+       u32 csselr = level << 1 | type;
 
        /* Write to Cache Size Selection Register(CSSELR) */
        asm volatile ("mcr p15, 2, %0, c0, c0, 0" : : "r" (csselr));
@@ -49,7 +50,8 @@ static void v7_inval_dcache_level_setway(u32 level, u32 num_sets,
                                         u32 num_ways, u32 way_shift,
                                         u32 log2_line_len)
 {
-       int way, set, setway;
+       int way, set;
+       u32 setway;
 
        /*
         * For optimal assembly code:
@@ -73,7 +75,8 @@ static void v7_clean_inval_dcache_level_setway(u32 level, u32 num_sets,
                                               u32 num_ways, u32 way_shift,
                                               u32 log2_line_len)
 {
-       int way, set, setway;
+       int way, set;
+       u32 setway;
 
        /*
         * For optimal assembly code:
@@ -134,7 +137,6 @@ static void v7_maint_dcache_level_setway(u32 level, u32 operation)
 static void v7_maint_dcache_all(u32 operation)
 {
        u32 level, cache_type, level_start_bit = 0;
-
        u32 clidr = get_clidr();
 
        for (level = 0; level < 7; level++) {
@@ -147,8 +149,7 @@ static void v7_maint_dcache_all(u32 operation)
        }
 }
 
-static void v7_dcache_clean_inval_range(u32 start,
-                                       u32 stop, u32 line_len)
+static void v7_dcache_clean_inval_range(u32 start, u32 stop, u32 line_len)
 {
        u32 mva;
 
@@ -256,7 +257,6 @@ void flush_dcache_all(void)
  */
 void invalidate_dcache_range(unsigned long start, unsigned long stop)
 {
-
        v7_dcache_maint_range(start, stop, ARMV7_DCACHE_INVAL_RANGE);
 
        v7_outer_cache_inval_range(start, stop);
index 090be9383fc03cf3857d24b860678d01e9103034..7fcb5d2094ec7e51144325085774fca4a00a9256 100644 (file)
@@ -24,8 +24,14 @@ config TARGET_TRATS2
 config TARGET_ODROID
        bool "Exynos4412 Odroid board"
 
+config TARGET_ODROID_XU3
+       bool "Exynos5422 Odroid board"
+       select OF_CONTROL
+
 config TARGET_ARNDALE
        bool "Exynos5250 Arndale board"
+       select CPU_V7_HAS_NONSEC
+       select CPU_V7_HAS_VIRT
        select SUPPORT_SPL
        select OF_CONTROL if !SPL_BUILD
 
@@ -44,11 +50,16 @@ config TARGET_SMDK5420
        select SUPPORT_SPL
        select OF_CONTROL if !SPL_BUILD
 
-config TARGET_PEACH_PIT
+config TARGET_PEACH_PI
        bool "Peach Pi board"
        select SUPPORT_SPL
        select OF_CONTROL if !SPL_BUILD
 
+config TARGET_PEACH_PIT
+       bool "Peach Pit board"
+       select SUPPORT_SPL
+       select OF_CONTROL if !SPL_BUILD
+
 endchoice
 
 config SYS_SOC
index 7558effdb3388b7dce91a5561e7df0a5071fa85c..b31c13b14bfbd1c4d663e4f518bdd486e4736c72 100644 (file)
@@ -118,7 +118,8 @@ static int exynos_get_pll_clk(int pllreg, unsigned int r, unsigned int k)
                        div = PLL_DIV_1024;
                else if (proid_is_exynos4412())
                        div = PLL_DIV_65535;
-               else if (proid_is_exynos5250() || proid_is_exynos5420())
+               else if (proid_is_exynos5250() || proid_is_exynos5420()
+                        || proid_is_exynos5800())
                        div = PLL_DIV_65536;
                else
                        return 0;
@@ -847,6 +848,8 @@ static unsigned long exynos5420_get_mmc_clk(int dev_index)
 
        if (sel == 0x3)
                sclk = get_pll_clk(MPLL);
+       else if (sel == 0x4)
+               sclk = get_pll_clk(SPLL);
        else if (sel == 0x6)
                sclk = get_pll_clk(EPLL);
        else
@@ -1422,8 +1425,8 @@ static int clock_calc_best_scalar(unsigned int main_scaler_bits,
                return 1;
 
        for (i = 1; i <= loops; i++) {
-               const unsigned int effective_div = max(min(input_rate / i /
-                                                       target_rate, cap), 1);
+               const unsigned int effective_div =
+                       max(min(input_rate / i / target_rate, cap), 1U);
                const unsigned int effective_rate = input_rate / i /
                                                        effective_div;
                const int error = target_rate - effective_rate;
@@ -1581,7 +1584,7 @@ static unsigned long exynos4_get_i2c_clk(void)
 unsigned long get_pll_clk(int pllreg)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_get_pll_clk(pllreg);
                return exynos5_get_pll_clk(pllreg);
        } else {
@@ -1617,7 +1620,7 @@ unsigned long get_i2c_clk(void)
 unsigned long get_pwm_clk(void)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_get_pwm_clk();
                return clock_get_periph_rate(PERIPH_ID_PWM0);
        } else {
@@ -1630,7 +1633,7 @@ unsigned long get_pwm_clk(void)
 unsigned long get_uart_clk(int dev_index)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_get_uart_clk(dev_index);
                return exynos5_get_uart_clk(dev_index);
        } else {
@@ -1643,7 +1646,7 @@ unsigned long get_uart_clk(int dev_index)
 unsigned long get_mmc_clk(int dev_index)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_get_mmc_clk(dev_index);
                return exynos5_get_mmc_clk(dev_index);
        } else {
@@ -1654,7 +1657,7 @@ unsigned long get_mmc_clk(int dev_index)
 void set_mmc_clk(int dev_index, unsigned int div)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        exynos5420_set_mmc_clk(dev_index, div);
                else
                        exynos5_set_mmc_clk(dev_index, div);
@@ -1668,7 +1671,7 @@ unsigned long get_lcd_clk(void)
        if (cpu_is_exynos4())
                return exynos4_get_lcd_clk();
        else {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_get_lcd_clk();
                else
                        return exynos5_get_lcd_clk();
@@ -1682,7 +1685,7 @@ void set_lcd_clk(void)
        else {
                if (proid_is_exynos5250())
                        exynos5_set_lcd_clk();
-               else if (proid_is_exynos5420())
+               else if (proid_is_exynos5420() || proid_is_exynos5800())
                        exynos5420_set_lcd_clk();
        }
 }
@@ -1696,7 +1699,7 @@ void set_mipi_clk(void)
 int set_spi_clk(int periph_id, unsigned int rate)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_set_spi_clk(periph_id, rate);
                return exynos5_set_spi_clk(periph_id, rate);
        } else {
index b6a9bc1831e0d5b5fa862dee66d79030a14763b8..0aff3d0d0cf454c25f8e90d8d6f1080dbf3da4c7 100644 (file)
@@ -971,7 +971,7 @@ static void exynos5420_system_clock_init(void)
 
 void system_clock_init(void)
 {
-       if (proid_is_exynos5420())
+       if (proid_is_exynos5420() || proid_is_exynos5800())
                exynos5420_system_clock_init();
        else
                exynos5250_system_clock_init();
index b86dd2d6503b71687cc671caa1018a3c0986ead3..7c0b12ae51addbffee5af54128ddd2f57a539adf 100644 (file)
@@ -464,6 +464,16 @@ int ddr3_mem_ctrl_init(struct mem_timings *mem, int reset)
                                                        + DMC_OFFSET);
        pmu = (struct exynos5_power *)EXYNOS5420_POWER_BASE;
 
+       if (CONFIG_NR_DRAM_BANKS > 4) {
+               /* Need both controllers. */
+               mem->memcontrol |= DMC_MEMCONTROL_NUM_CHIP_2;
+               mem->chips_per_channel = 2;
+               mem->chips_to_configure = 2;
+       } else {
+               /* 2GB requires a single controller */
+               mem->memcontrol |= DMC_MEMCONTROL_NUM_CHIP_1;
+       }
+
        /* Enable PAUSE for DREX */
        setbits_le32(&clk->pause, ENABLE_BIT);
 
@@ -832,6 +842,25 @@ int ddr3_mem_ctrl_init(struct mem_timings *mem, int reset)
        setbits_le32(&drex0->cgcontrol, DMC_INTERNAL_CG);
        setbits_le32(&drex1->cgcontrol, DMC_INTERNAL_CG);
 
+       /*
+        * As per Exynos5800 UM ver 0.00 section 17.13.2.1
+        * CONCONTROL register bit 3 [update_mode], Exynos5800 does not
+        * support the PHY initiated update. And it is recommended to set
+        * this field to 1'b1 during initialization
+        *
+        * When we apply PHY-initiated mode, DLL lock value is determined
+        * once at DMC init time and not updated later when we change the MIF
+        * voltage based on ASV group in kernel. Applying MC-initiated mode
+        * makes sure that DLL tracing is ON so that silicon is able to
+        * compensate the voltage variation.
+        */
+       val = readl(&drex0->concontrol);
+       val |= CONCONTROL_UPDATE_MODE;
+       writel(val , &drex0->concontrol);
+       val = readl(&drex1->concontrol);
+       val |= CONCONTROL_UPDATE_MODE;
+       writel(val , &drex1->concontrol);
+
        return 0;
 }
 #endif
index 3d95dc3339e6ee87859748d529510a7036b6cece..94d02970516e9efce5065852bf73182647dfd9de 100644 (file)
@@ -837,7 +837,7 @@ static int exynos4x12_pinmux_config(int peripheral, int flags)
 int exynos_pinmux_config(int peripheral, int flags)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_pinmux_config(peripheral, flags);
                else if (proid_is_exynos5250())
                        return exynos5_pinmux_config(peripheral, flags);
index e1ab3d6997c813461f8932e4370481f3512213ee..1520d642c5d0d944fac86dbfdf531d97081ce095 100644 (file)
@@ -53,10 +53,37 @@ void exynos5_set_usbhost_phy_ctrl(unsigned int enable)
        }
 }
 
+void exynos4412_set_usbhost_phy_ctrl(unsigned int enable)
+{
+       struct exynos4412_power *power =
+               (struct exynos4412_power *)samsung_get_base_power();
+
+       if (enable) {
+               /* Enabling USBHOST_PHY */
+               setbits_le32(&power->usbhost_phy_control,
+                            POWER_USB_HOST_PHY_CTRL_EN);
+               setbits_le32(&power->hsic1_phy_control,
+                            POWER_USB_HOST_PHY_CTRL_EN);
+               setbits_le32(&power->hsic2_phy_control,
+                            POWER_USB_HOST_PHY_CTRL_EN);
+       } else {
+               /* Disabling USBHOST_PHY */
+               clrbits_le32(&power->usbhost_phy_control,
+                            POWER_USB_HOST_PHY_CTRL_EN);
+               clrbits_le32(&power->hsic1_phy_control,
+                            POWER_USB_HOST_PHY_CTRL_EN);
+               clrbits_le32(&power->hsic2_phy_control,
+                            POWER_USB_HOST_PHY_CTRL_EN);
+       }
+}
+
 void set_usbhost_phy_ctrl(unsigned int enable)
 {
        if (cpu_is_exynos5())
                exynos5_set_usbhost_phy_ctrl(enable);
+       else if (cpu_is_exynos4())
+               if (proid_is_exynos4412())
+                       exynos4412_set_usbhost_phy_ctrl(enable);
 }
 
 static void exynos5_set_usbdrd_phy_ctrl(unsigned int enable)
index 658e4cb715f92647d108780c4c81a70b10295bf0..bc237c969fc9eba89e50fe36eb4164bf283c9a07 100644 (file)
@@ -151,7 +151,7 @@ static void exynos_spi_copy(unsigned int uboot_size, unsigned int uboot_addr)
        }
 
        for (upto = 0, i = 0; upto < uboot_size; upto += todo, i++) {
-               todo = min(uboot_size - upto, (1 << 15));
+               todo = min(uboot_size - upto, (unsigned int)(1 << 15));
                spi_rx_tx(regs, todo, (void *)(uboot_addr),
                          (void *)(SPI_FLASH_UBOOT_POS), i);
        }
@@ -195,10 +195,16 @@ void copy_uboot_to_ram(void)
        void (*end_bootop_from_emmc)(void);
 #endif
 #ifdef CONFIG_USB_BOOTING
-       u32 (*usb_copy)(void);
        int is_cr_z_set;
        unsigned int sec_boot_check;
 
+       /*
+        * Note that older hardware (before Exynos5800) does not expect any
+        * arguments, but it does not hurt to pass them, so a common function
+        * prototype is used.
+        */
+       u32 (*usb_copy)(u32 num_of_block, u32 *dst);
+
        /* Read iRAM location to check for secondary USB boot mode */
        sec_boot_check = readl(EXYNOS_IRAM_SECONDARY_BASE);
        if (sec_boot_check == EXYNOS_USB_SECONDARY_BOOT)
@@ -240,7 +246,7 @@ void copy_uboot_to_ram(void)
                 */
                is_cr_z_set = config_branch_prediction(0);
                usb_copy = get_irom_func(USB_INDEX);
-               usb_copy();
+               usb_copy(0, (u32 *)CONFIG_SYS_TEXT_BASE);
                config_branch_prediction(is_cr_z_set);
                break;
 #endif
index c2b947839d292a14090e15d951703eb99e517f6e..c96845c4e27b93600454daa07d9cc87e483d39a2 100644 (file)
 #include <asm/arch/hardware.h>
 #include <asm/arch/psc_defs.h>
 
+#define MAX_PCI_PORTS          2
+enum pci_mode  {
+       ENDPOINT,
+       LEGACY_ENDPOINT,
+       ROOTCOMPLEX,
+};
+
+#define DEVCFG_MODE_MASK               (BIT(2) | BIT(1))
+#define DEVCFG_MODE_SHIFT              1
+
 void chip_configuration_unlock(void)
 {
        __raw_writel(KS2_KICK0_MAGIC, KS2_KICK0);
@@ -68,6 +78,24 @@ void osr_init(void)
 }
 #endif
 
+/* Function to set up PCIe mode */
+static void config_pcie_mode(int pcie_port,  enum pci_mode mode)
+{
+       u32 val = __raw_readl(KS2_DEVCFG);
+
+       if (pcie_port >= MAX_PCI_PORTS)
+               return;
+
+       /**
+        * each pci port has two bits for mode and it starts at
+        * bit 1. So use port number to get the right bit position.
+        */
+       pcie_port <<= 1;
+       val &= ~(DEVCFG_MODE_MASK << pcie_port);
+       val |= ((mode << DEVCFG_MODE_SHIFT) << pcie_port);
+       __raw_writel(val, KS2_DEVCFG);
+}
+
 int arch_cpu_init(void)
 {
        chip_configuration_unlock();
@@ -77,8 +105,13 @@ int arch_cpu_init(void)
        msmc_share_all_segments(KS2_MSMC_SEGMENT_NETCP);
        msmc_share_all_segments(KS2_MSMC_SEGMENT_QM_PDSP);
        msmc_share_all_segments(KS2_MSMC_SEGMENT_PCIE0);
+
+       /* Initialize the PCIe-0 to work as Root Complex */
+       config_pcie_mode(0, ROOTCOMPLEX);
 #if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
        msmc_share_all_segments(KS2_MSMC_SEGMENT_PCIE1);
+       /* Initialize the PCIe-1 to work as Root Complex */
+       config_pcie_mode(1, ROOTCOMPLEX);
 #endif
 #ifdef CONFIG_SOC_K2L
        osr_init();
index 338e0e4962fb0b996716ed44e99a16fc3c2c0d2f..fa10802620702a12a9367b4f9ff724d38aac1dab 100644 (file)
@@ -19,3 +19,8 @@ int __weak clk_bsc_enable(void *base, u32 rate, u32 *actual_ratep)
 {
        return 0;
 }
+
+int __weak clk_usb_otg_enable(void *base)
+{
+       return 0;
+}
index d82ce8d01430413b371ccd9f30636b5d96706142..2e6a20757f31955c9911eaaf0089cc75668471c5 100644 (file)
@@ -7,6 +7,8 @@
 obj-y  += cpu.o
 obj-y  += clock.o
 obj-y  += timer.o
+obj-y  += fsl_epu.o
 
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 obj-$(CONFIG_SYS_HAS_SERDES) += fsl_ls1_serdes.o ls102xa_serdes.o
+obj-$(CONFIG_SPL) += spl.o
index b7dde45ed38436df934445c8e846b139e0f9fe59..ce2d92f5a66c583a5d9eb219d1779befd93d10c4 100644 (file)
@@ -12,6 +12,8 @@
 #include <netdev.h>
 #include <fsl_esdhc.h>
 
+#include "fsl_epu.h"
+
 DECLARE_GLOBAL_DATA_PTR;
 
 #if defined(CONFIG_DISPLAY_CPUINFO)
@@ -101,3 +103,35 @@ int cpu_eth_init(bd_t *bis)
 
        return 0;
 }
+
+int arch_cpu_init(void)
+{
+       void *epu_base = (void *)(CONFIG_SYS_DCSRBAR + EPU_BLOCK_OFFSET);
+
+       /*
+        * After wakeup from deep sleep, Clear EPU registers
+        * as early as possible to prevent from possible issue.
+        * It's also safe to clear at normal boot.
+        */
+       fsl_epu_clean(epu_base);
+
+       return 0;
+}
+
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
+/* Set the address at which the secondary core starts from.*/
+void smp_set_core_boot_addr(unsigned long addr, int corenr)
+{
+       struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
+
+       out_be32(&gur->scratchrw[0], addr);
+}
+
+/* Release the secondary core from holdoff state and kick it */
+void smp_kick_all_cpus(void)
+{
+       struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
+
+       out_be32(&gur->brrl, 0x2);
+}
+#endif
index 4ce38086f4e96245bdb92b9f7c17e70f50997458..989780d27348d54542a236e095f99a166e47545c 100644 (file)
@@ -91,7 +91,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
        }
 
        do_fixup_by_prop_u32(blob, "device_type", "soc",
-                            4, "bus-frequency", busclk / 2, 1);
+                            4, "bus-frequency", busclk, 1);
 
        ft_fixup_enet_phy_connect_type(blob);
 
diff --git a/arch/arm/cpu/armv7/ls102xa/fsl_epu.c b/arch/arm/cpu/armv7/ls102xa/fsl_epu.c
new file mode 100644 (file)
index 0000000..6212640
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+
+#include "fsl_epu.h"
+
+/**
+ * fsl_epu_clean - Clear EPU registers
+ */
+void fsl_epu_clean(void *epu_base)
+{
+       u32 offset;
+
+       /* follow the exact sequence to clear the registers */
+       /* Clear EPACRn */
+       for (offset = EPACR0; offset <= EPACR15; offset += EPACR_STRIDE)
+               out_be32(epu_base + offset, 0);
+
+       /* Clear EPEVTCRn */
+       for (offset = EPEVTCR0; offset <= EPEVTCR9; offset += EPEVTCR_STRIDE)
+               out_be32(epu_base + offset, 0);
+
+       /* Clear EPGCR */
+       out_be32(epu_base + EPGCR, 0);
+
+       /* Clear EPSMCRn */
+       for (offset = EPSMCR0; offset <= EPSMCR15; offset += EPSMCR_STRIDE)
+               out_be32(epu_base + offset, 0);
+
+       /* Clear EPCCRn */
+       for (offset = EPCCR0; offset <= EPCCR31; offset += EPCCR_STRIDE)
+               out_be32(epu_base + offset, 0);
+
+       /* Clear EPCMPRn */
+       for (offset = EPCMPR0; offset <= EPCMPR31; offset += EPCMPR_STRIDE)
+               out_be32(epu_base + offset, 0);
+
+       /* Clear EPCTRn */
+       for (offset = EPCTR0; offset <= EPCTR31; offset += EPCTR_STRIDE)
+               out_be32(epu_base + offset, 0);
+
+       /* Clear EPIMCRn */
+       for (offset = EPIMCR0; offset <= EPIMCR31; offset += EPIMCR_STRIDE)
+               out_be32(epu_base + offset, 0);
+
+       /* Clear EPXTRIGCRn */
+       out_be32(epu_base + EPXTRIGCR, 0);
+
+       /* Clear EPECRn */
+       for (offset = EPECR0; offset <= EPECR15; offset += EPECR_STRIDE)
+               out_be32(epu_base + offset, 0);
+}
diff --git a/arch/arm/cpu/armv7/ls102xa/fsl_epu.h b/arch/arm/cpu/armv7/ls102xa/fsl_epu.h
new file mode 100644 (file)
index 0000000..d658aad
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __FSL_EPU_H
+#define __FSL_EPU_H
+
+#include <asm/types.h>
+
+#define FSL_STRIDE_4B  4
+#define FSL_STRIDE_8B  8
+
+/* Block offsets */
+#define EPU_BLOCK_OFFSET       0x00000000
+
+/* EPGCR (Event Processor Global Control Register) */
+#define EPGCR          0x000
+
+/* EPEVTCR0-9 (Event Processor EVT Pin Control Registers) */
+#define EPEVTCR0       0x050
+#define EPEVTCR9       0x074
+#define EPEVTCR_STRIDE FSL_STRIDE_4B
+
+/* EPXTRIGCR (Event Processor Crosstrigger Control Register) */
+#define EPXTRIGCR      0x090
+
+/* EPIMCR0-31 (Event Processor Input Mux Control Registers) */
+#define EPIMCR0                0x100
+#define EPIMCR31       0x17C
+#define EPIMCR_STRIDE  FSL_STRIDE_4B
+
+/* EPSMCR0-15 (Event Processor SCU Mux Control Registers) */
+#define EPSMCR0                0x200
+#define EPSMCR15       0x278
+#define EPSMCR_STRIDE  FSL_STRIDE_8B
+
+/* EPECR0-15 (Event Processor Event Control Registers) */
+#define EPECR0         0x300
+#define EPECR15                0x33C
+#define EPECR_STRIDE   FSL_STRIDE_4B
+
+/* EPACR0-15 (Event Processor Action Control Registers) */
+#define EPACR0         0x400
+#define EPACR15                0x43C
+#define EPACR_STRIDE   FSL_STRIDE_4B
+
+/* EPCCRi0-15 (Event Processor Counter Control Registers) */
+#define EPCCR0         0x800
+#define EPCCR15                0x83C
+#define EPCCR31                0x87C
+#define EPCCR_STRIDE   FSL_STRIDE_4B
+
+/* EPCMPR0-15 (Event Processor Counter Compare Registers) */
+#define EPCMPR0                0x900
+#define EPCMPR15       0x93C
+#define EPCMPR31       0x97C
+#define EPCMPR_STRIDE  FSL_STRIDE_4B
+
+/* EPCTR0-31 (Event Processor Counter Register) */
+#define EPCTR0         0xA00
+#define EPCTR31                0xA7C
+#define EPCTR_STRIDE   FSL_STRIDE_4B
+
+void fsl_epu_clean(void *epu_base);
+
+#endif
diff --git a/arch/arm/cpu/armv7/ls102xa/spl.c b/arch/arm/cpu/armv7/ls102xa/spl.c
new file mode 100644 (file)
index 0000000..1dfbf54
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+u32 spl_boot_device(void)
+{
+#ifdef CONFIG_SPL_MMC_SUPPORT
+       return BOOT_DEVICE_MMC1;
+#endif
+       return BOOT_DEVICE_NAND;
+}
+
+u32 spl_boot_mode(void)
+{
+       switch (spl_boot_device()) {
+       case BOOT_DEVICE_MMC1:
+#ifdef CONFIG_SPL_FAT_SUPPORT
+               return MMCSD_MODE_FAT;
+#else
+               return MMCSD_MODE_RAW;
+#endif
+       case BOOT_DEVICE_NAND:
+               return 0;
+       default:
+               puts("spl: error: unsupported device\n");
+               hang();
+       }
+}
index 2d53669c89d58221cc40cf83ff55373345134563..3753c14df3977c7b70459d5db2e3df0a05791f95 100644 (file)
@@ -85,37 +85,6 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
 }
 #endif
 
-void set_chipselect_size(int const cs_size)
-{
-       unsigned int reg;
-       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       reg = readl(&iomuxc_regs->gpr1);
-
-       switch (cs_size) {
-       case CS0_128:
-               reg &= ~0x7;    /* CS0=128MB, CS1=0, CS2=0, CS3=0 */
-               reg |= 0x5;
-               break;
-       case CS0_64M_CS1_64M:
-               reg &= ~0x3F;   /* CS0=64MB, CS1=64MB, CS2=0, CS3=0 */
-               reg |= 0x1B;
-               break;
-       case CS0_64M_CS1_32M_CS2_32M:
-               reg &= ~0x1FF;  /* CS0=64MB, CS1=32MB, CS2=32MB, CS3=0 */
-               reg |= 0x4B;
-               break;
-       case CS0_32M_CS1_32M_CS2_32M_CS3_32M:
-               reg &= ~0xFFF;  /* CS0=32MB, CS1=32MB, CS2=32MB, CS3=32MB */
-               reg |= 0x249;
-               break;
-       default:
-               printf("Unknown chip select size: %d\n", cs_size);
-               break;
-       }
-
-       writel(reg, &iomuxc_regs->gpr1);
-}
-
 #ifdef CONFIG_MX53
 void boot_mode_apply(unsigned cfg_val)
 {
index d200531030e730301574f27943757ec50ab4f763..055f44e8e46c210f3bd94dba47c130185192d3be 100644 (file)
@@ -312,6 +312,10 @@ static u32 get_ipg_per_clk(void)
        u32 reg, perclk_podf;
 
        reg = __raw_readl(&imx_ccm->cscmr1);
+#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX))
+       if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK)
+               return MXC_HCLK; /* OSC 24Mhz */
+#endif
        perclk_podf = reg & MXC_CCM_CSCMR1_PERCLK_PODF_MASK;
 
        return get_ipg_clk() / (perclk_podf + 1);
@@ -430,6 +434,56 @@ static u32 get_mmdc_ch0_clk(void)
 }
 #endif
 
+#ifdef CONFIG_MX6SX
+/* qspi_num can be from 0 - 1 */
+void enable_qspi_clk(int qspi_num)
+{
+       u32 reg = 0;
+       /* Enable QuadSPI clock */
+       switch (qspi_num) {
+       case 0:
+               /* disable the clock gate */
+               clrbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
+
+               /* set 50M  : (50 = 396 / 2 / 4) */
+               reg = readl(&imx_ccm->cscmr1);
+               reg &= ~(MXC_CCM_CSCMR1_QSPI1_PODF_MASK |
+                        MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK);
+               reg |= ((1 << MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET) |
+                       (2 << MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET));
+               writel(reg, &imx_ccm->cscmr1);
+
+               /* enable the clock gate */
+               setbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
+               break;
+       case 1:
+               /*
+                * disable the clock gate
+                * QSPI2 and GPMI_BCH_INPUT_GPMI_IO share the same clock gate,
+                * disable both of them.
+                */
+               clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
+                            MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
+
+               /* set 50M  : (50 = 396 / 2 / 4) */
+               reg = readl(&imx_ccm->cs2cdr);
+               reg &= ~(MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK |
+                        MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK |
+                        MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK);
+               reg |= (MXC_CCM_CS2CDR_QSPI2_CLK_PRED(0x1) |
+                       MXC_CCM_CS2CDR_QSPI2_CLK_SEL(0x3));
+               writel(reg, &imx_ccm->cs2cdr);
+
+               /*enable the clock gate*/
+               setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
+                            MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
+               break;
+       default:
+               break;
+       }
+}
+#endif
+
 #ifdef CONFIG_FEC_MXC
 int enable_fec_anatop_clock(enum enet_freq freq)
 {
@@ -439,7 +493,7 @@ int enable_fec_anatop_clock(enum enet_freq freq)
        struct anatop_regs __iomem *anatop =
                (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
 
-       if (freq < ENET_25MHz || freq > ENET_125MHz)
+       if (freq < ENET_25MHZ || freq > ENET_125MHZ)
                return -EINVAL;
 
        reg = readl(&anatop->pll_enet);
@@ -592,6 +646,14 @@ int enable_sata_clock(void)
        ungate_sata_clock();
        return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA);
 }
+
+void disable_sata_clock(void)
+{
+       struct mxc_ccm_reg *const imx_ccm =
+               (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       clrbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK);
+}
 #endif
 
 int enable_pcie_clock(void)
@@ -669,6 +731,36 @@ void hab_caam_clock_enable(unsigned char enable)
 }
 #endif
 
+static void enable_pll3(void)
+{
+       struct anatop_regs __iomem *anatop =
+               (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
+
+       /* make sure pll3 is enabled */
+       if ((readl(&anatop->usb1_pll_480_ctrl) &
+                       BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0) {
+               /* enable pll's power */
+               writel(BM_ANADIG_USB1_PLL_480_CTRL_POWER,
+                      &anatop->usb1_pll_480_ctrl_set);
+               writel(0x80, &anatop->ana_misc2_clr);
+               /* wait for pll lock */
+               while ((readl(&anatop->usb1_pll_480_ctrl) &
+                       BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0)
+                       ;
+               /* disable bypass */
+               writel(BM_ANADIG_USB1_PLL_480_CTRL_BYPASS,
+                      &anatop->usb1_pll_480_ctrl_clr);
+               /* enable pll output */
+               writel(BM_ANADIG_USB1_PLL_480_CTRL_ENABLE,
+                      &anatop->usb1_pll_480_ctrl_set);
+       }
+}
+
+void enable_thermal_clk(void)
+{
+       enable_pll3();
+}
+
 unsigned int mxc_get_clock(enum mxc_clock clk)
 {
        switch (clk) {
@@ -704,10 +796,11 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
        case MXC_SATA_CLK:
                return get_ahb_clk();
        default:
+               printf("Unsupported MXC CLK: %d\n", clk);
                break;
        }
 
-       return -1;
+       return 0;
 }
 
 /*
index dd5aaa286a68d708fda6814e6d107adba4d70231..5f5f49720107f56717e676eafbfd94983ffee9b4 100644 (file)
@@ -22,6 +22,8 @@
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/crm_regs.h>
 #include <asm/bootm.h>
+#include <dm.h>
+#include <imx_thermal.h>
 
 enum ldo_reg {
        LDO_ARM,
@@ -37,6 +39,19 @@ struct scu_regs {
        u32     fpga_rev;
 };
 
+#if defined(CONFIG_IMX6_THERMAL)
+static const struct imx_thermal_plat imx6_thermal_plat = {
+       .regs = (void *)ANATOP_BASE_ADDR,
+       .fuse_bank = 1,
+       .fuse_word = 6,
+};
+
+U_BOOT_DEVICE(imx6_thermal) = {
+       .name = "imx_thermal",
+       .platdata = &imx6_thermal_plat,
+};
+#endif
+
 u32 get_nr_cpus(void)
 {
        struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR;
@@ -240,6 +255,18 @@ static void clear_mmdc_ch_mask(void)
        writel(0, &mxc_ccm->ccdr);
 }
 
+#ifdef CONFIG_MX6SL
+static void set_preclk_from_osc(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       u32 reg;
+
+       reg = readl(&mxc_ccm->cscmr1);
+       reg |= MXC_CCM_CSCMR1_PER_CLK_SEL_MASK;
+       writel(reg, &mxc_ccm->cscmr1);
+}
+#endif
+
 int arch_cpu_init(void)
 {
        init_aips();
@@ -255,6 +282,11 @@ int arch_cpu_init(void)
        if (mxc_get_clock(MXC_ARM_CLK) == 396000000)
                set_ahb_rate(132000000);
 
+               /* Set perclk to source from OSC 24MHz */
+#if defined(CONFIG_MX6SL)
+       set_preclk_from_osc();
+#endif
+
        imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */
 
 #ifdef CONFIG_APBH_DMA
@@ -333,8 +365,8 @@ void boot_mode_apply(unsigned cfg_val)
 /*
  * cfg_val will be used for
  * Boot_cfg4[7:0]:Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0]
- * After reset, if GPR10[28] is 1, ROM will copy GPR9[25:0]
- * to SBMR1, which will determine the boot device.
+ * After reset, if GPR10[28] is 1, ROM will use GPR9[25:0]
+ * instead of SBMR1 to determine the boot device.
  */
 const struct boot_mode soc_boot_modes[] = {
        {"normal",      MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
index 745670e549d90c0870fbcf05f30ad62ca175a53b..30d81db8b81b398905249b5fff4b0fc218fa6109 100644 (file)
@@ -169,11 +169,11 @@ ENTRY(_nonsec_init)
  * we do this here instead.
  * But first check if we have the generic timer.
  */
-#ifdef CONFIG_SYS_CLK_FREQ
+#ifdef CONFIG_TIMER_CLK_FREQ
        mrc     p15, 0, r0, c0, c1, 1           @ read ID_PFR1
        and     r0, r0, #CPUID_ARM_GENTIMER_MASK        @ mask arch timer bits
        cmp     r0, #(1 << CPUID_ARM_GENTIMER_SHIFT)
-       ldreq   r1, =CONFIG_SYS_CLK_FREQ
+       ldreq   r1, =CONFIG_TIMER_CLK_FREQ
        mcreq   p15, 0, r1, c14, c0, 0          @ write CNTFRQ
 #endif
 
@@ -191,6 +191,9 @@ ENTRY(smp_waitloop)
        wfi
        ldr     r1, =CONFIG_SMP_PEN_ADDR        @ load start address
        ldr     r1, [r1]
+#ifdef CONFIG_PEN_ADDR_BIG_ENDIAN
+       rev     r1, r1
+#endif
        cmp     r0, r1                  @ make sure we dont execute this code
        beq     smp_waitloop            @ again (due to a spurious wakeup)
        mov     r0, r1
index 423aeb980725c1bd700956f6cbfe50f40294e05b..a0add6643e1715a65a3e05a9b38cc7d08b809b41 100644 (file)
@@ -48,9 +48,9 @@ static void abb_setup_timings(u32 setup)
         */
 
        /* calculate SR2_WTCNT_VALUE */
-       sys_rate = DIV_ROUND(V_OSCK, 1000000);
-       clk_cycles = DIV_ROUND(OMAP_ABB_CLOCK_CYCLES * 10, sys_rate);
-       sr2_cnt = DIV_ROUND(OMAP_ABB_SETTLING_TIME * 10, clk_cycles);
+       sys_rate = DIV_ROUND_CLOSEST(V_OSCK, 1000000);
+       clk_cycles = DIV_ROUND_CLOSEST(OMAP_ABB_CLOCK_CYCLES * 10, sys_rate);
+       sr2_cnt = DIV_ROUND_CLOSEST(OMAP_ABB_SETTLING_TIME * 10, clk_cycles);
 
        setbits_le32(setup,
                     sr2_cnt << (ffs(OMAP_ABB_SETUP_SR2_WTCNT_VALUE_MASK) - 1));
index fb535eb9ecc74569579513b5e3ee5df3eec4faf8..00a108212a7294c40e26ee0e12056a19510b3b0c 100644 (file)
@@ -9,12 +9,14 @@
  */
 
 #include <common.h>
+#include <ahci.h>
 #include <spl.h>
 #include <asm/omap_common.h>
 #include <asm/arch/omap.h>
 #include <asm/arch/mmc_host_def.h>
 #include <asm/arch/sys_proto.h>
 #include <watchdog.h>
+#include <scsi.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -33,8 +35,19 @@ void save_omap_boot_params(void)
         * used. But it not correct to assume that romcode structure
         * encoding would be same as u-boot. So use the defined offsets.
         */
-       gd->arch.omap_boot_params.omap_bootdevice = boot_device =
-                                  *((u8 *)(rom_params + BOOT_DEVICE_OFFSET));
+       boot_device = *((u8 *)(rom_params + BOOT_DEVICE_OFFSET));
+
+#if defined(BOOT_DEVICE_NAND_I2C)
+       /*
+        * Re-map NAND&I2C boot-device to the "normal" NAND boot-device.
+        * Otherwise the SPL boot IF can't handle this device correctly.
+        * Somehow booting with Hynix 4GBit NAND H27U4G8 on Siemens
+        * Draco leads to this boot-device passed to SPL from the BootROM.
+        */
+       if (boot_device == BOOT_DEVICE_NAND_I2C)
+               boot_device = BOOT_DEVICE_NAND;
+#endif
+       gd->arch.omap_boot_params.omap_bootdevice = boot_device;
 
        gd->arch.omap_boot_params.ch_flags =
                                *((u8 *)(rom_params + CH_FLAGS_OFFSET));
@@ -57,7 +70,7 @@ void save_omap_boot_params(void)
                }
        }
 
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
        /*
         * We get different values for QSPI_1 and QSPI_4 being used, but
         * don't actually care about this difference.  Rather than
@@ -132,3 +145,10 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
        image_entry((u32 *)&gd->arch.omap_boot_params);
 }
 #endif
+
+#ifdef CONFIG_SCSI_AHCI_PLAT
+void arch_preboot_os(void)
+{
+       ahci_reset(DWC_AHSATA_BASE);
+}
+#endif
index c8e9bc86e588c8dc3e54e255af7cabbabf7b6618..e601ba1886fb82a9b552b099dc1b14a09dfedd3b 100644 (file)
@@ -1226,13 +1226,14 @@ void dmm_init(u32 base)
                        emif1_enabled = 1;
                        emif2_enabled = 1;
                        break;
-               } else if (valid == 1) {
+               }
+
+               if (valid == 1)
                        emif1_enabled = 1;
-               } else if (valid == 2) {
+
+               if (valid == 2)
                        emif2_enabled = 1;
-               }
        }
-
 }
 
 static void do_bug0039_workaround(u32 base)
index 3b4dd3f5d77d22157a425bf7a06ec1ed637eb320..d18bc50c5abd11a3c9b9f38a03978362c0ade127 100644 (file)
@@ -74,9 +74,20 @@ int init_sata(int dev)
        return ret;
 }
 
+int reset_sata(int dev)
+{
+       return 0;
+}
+
 /* On OMAP platforms SATA provides the SCSI subsystem */
 void scsi_init(void)
 {
        init_sata(0);
        scsi_scan(1);
 }
+
+void scsi_bus_reset(void)
+{
+       ahci_reset(DWC_AHSATA_BASE);
+       ahci_init(DWC_AHSATA_BASE);
+}
index 7c9924dc39ce1076a43c6ae620f66c06123ac10f..032bd2c24fdddb95705096ddc94c692f6b2fa735 100644 (file)
@@ -41,11 +41,6 @@ int timer_init(void)
        writel((CONFIG_SYS_PTV << 2) | TCLR_PRE | TCLR_AR | TCLR_ST,
                &timer_base->tclr);
 
-       /* reset time, capture current incrementer value time */
-       gd->arch.lastinc = readl(&timer_base->tcrr) /
-                                       (TIMER_CLOCK / CONFIG_SYS_HZ);
-       gd->arch.tbl = 0;       /* start "advancing" time stamp from 0 */
-
        return 0;
 }
 
index c215404469f3f53a25f735e54b9f4678b519f10b..a029379a4f21b76e769fce7fadfb5bbb531d217a 100644 (file)
@@ -22,6 +22,9 @@ config TARGET_CM_T35
        bool "CompuLab CM-T3530 and CM-T3730 boards"
        select SUPPORT_SPL
 
+config TARGET_CM_T3517
+       bool "CompuLab CM-T3517 boards"
+
 config TARGET_DEVKIT8000
        bool "TimLL OMAP3 Devkit8000"
        select SUPPORT_SPL
@@ -98,6 +101,7 @@ source "board/teejet/mt_ventoux/Kconfig"
 source "board/ti/sdp3430/Kconfig"
 source "board/ti/beagle/Kconfig"
 source "board/compulab/cm_t35/Kconfig"
+source "board/compulab/cm_t3517/Kconfig"
 source "board/timll/devkit8000/Kconfig"
 source "board/ti/evm/Kconfig"
 source "board/isee/igep00x0/Kconfig"
index 6903696e1b90d2deceb8725ac3970a6a7398846c..4462c72c7a5d23e707ee4da33bcf7b0d75e321b5 100644 (file)
@@ -121,8 +121,6 @@ static void emif_get_reg_dump_sdp(u32 emif_nr, const struct emif_regs **regs)
                *regs = &emif_regs_elpida_380_mhz_1cs;
        else if (omap4_rev == OMAP4430_ES2_0)
                *regs = &emif_regs_elpida_200_mhz_2cs;
-       else if (omap4_rev == OMAP4430_ES2_3)
-               *regs = &emif_regs_elpida_400_mhz_1cs;
        else if (omap4_rev < OMAP4470_ES1_0)
                *regs = &emif_regs_elpida_400_mhz_2cs;
        else
@@ -138,8 +136,6 @@ static void emif_get_dmm_regs_sdp(const struct dmm_lisa_map_regs
 
        if (omap_rev == OMAP4430_ES1_0)
                *dmm_lisa_regs = &lisa_map_2G_x_1_x_2;
-       else if (omap_rev == OMAP4430_ES2_3)
-               *dmm_lisa_regs = &lisa_map_2G_x_2_x_2;
        else if (omap_rev < OMAP4460_ES1_0)
                *dmm_lisa_regs = &lisa_map_2G_x_2_x_2;
        else
index 129982cacac3f95a78e521a67430f478f2ccd3c1..aca862d2b28ac523704d615f31d14d6b75b9182d 100644 (file)
@@ -12,6 +12,9 @@ config TARGET_OMAP5_UEVM
 config TARGET_DRA7XX_EVM
        bool "TI DRA7XX"
 
+config TARGET_BEAGLE_X15
+       bool "BeagleBoard X15"
+
 endchoice
 
 config SYS_SOC
@@ -20,5 +23,6 @@ config SYS_SOC
 source "board/compulab/cm_t54/Kconfig"
 source "board/ti/omap5_uevm/Kconfig"
 source "board/ti/dra7xx/Kconfig"
+source "board/ti/beagle_x15/Kconfig"
 
 endif
index 025738302a2878a6bdd59476d67338a532ee2b5c..95f16866e6cbd9e043dcdf969a937e648bbd13a8 100644 (file)
@@ -365,31 +365,31 @@ struct vcores_data dra752_volts = {
        .mpu.value      = VDD_MPU_DRA752,
        .mpu.efuse.reg  = STD_FUSE_OPP_VMIN_MPU_NOM,
        .mpu.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
-       .mpu.addr       = TPS659038_REG_ADDR_SMPS12_MPU,
+       .mpu.addr       = TPS659038_REG_ADDR_SMPS12,
        .mpu.pmic       = &tps659038,
 
        .eve.value      = VDD_EVE_DRA752,
        .eve.efuse.reg  = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
        .eve.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
-       .eve.addr       = TPS659038_REG_ADDR_SMPS45_EVE,
+       .eve.addr       = TPS659038_REG_ADDR_SMPS45,
        .eve.pmic       = &tps659038,
 
        .gpu.value      = VDD_GPU_DRA752,
        .gpu.efuse.reg  = STD_FUSE_OPP_VMIN_GPU_NOM,
        .gpu.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
-       .gpu.addr       = TPS659038_REG_ADDR_SMPS6_GPU,
+       .gpu.addr       = TPS659038_REG_ADDR_SMPS6,
        .gpu.pmic       = &tps659038,
 
        .core.value     = VDD_CORE_DRA752,
        .core.efuse.reg = STD_FUSE_OPP_VMIN_CORE_NOM,
        .core.efuse.reg_bits = DRA752_EFUSE_REGBITS,
-       .core.addr      = TPS659038_REG_ADDR_SMPS7_CORE,
+       .core.addr      = TPS659038_REG_ADDR_SMPS7,
        .core.pmic      = &tps659038,
 
        .iva.value      = VDD_IVA_DRA752,
        .iva.efuse.reg  = STD_FUSE_OPP_VMIN_IVA_NOM,
        .iva.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
-       .iva.addr       = TPS659038_REG_ADDR_SMPS8_IVA,
+       .iva.addr       = TPS659038_REG_ADDR_SMPS8,
        .iva.pmic       = &tps659038,
 };
 
@@ -593,7 +593,7 @@ const struct ctrl_ioregs ioregs_dra72x_es1 = {
        .ctrl_ddr_ctrl_ext_0 = 0xA2000000,
 };
 
-void hw_data_init(void)
+void __weak hw_data_init(void)
 {
        u32 omap_rev = omap_revision();
 
index ff08ef42479400a5697ba210c7b313ae9165a67c..0745d424e2c4803cb1c7db082c1b0983ee004885 100644 (file)
@@ -376,6 +376,7 @@ struct omap_sys_ctrl_regs const omap5_ctrl = {
 
 struct omap_sys_ctrl_regs const dra7xx_ctrl = {
        .control_status                         = 0x4A002134,
+       .control_phy_power_usb                  = 0x4A002370,
        .control_phy_power_sata                 = 0x4A002374,
        .control_core_mac_id_0_lo               = 0x4A002514,
        .control_core_mac_id_0_hi               = 0x4A002518,
@@ -800,6 +801,7 @@ struct prcm_regs const dra7xx_prcm = {
        .cm_clkmode_dpll_dsp                    = 0x4a005234,
        .cm_shadow_freq_config1                 = 0x4a005260,
        .cm_clkmode_dpll_gmac                   = 0x4a0052a8,
+       .cm_coreaon_usb_phy_core_clkctrl        = 0x4a008640,
        .cm_coreaon_usb_phy2_core_clkctrl = 0x4a008688,
 
        /* cm1.mpu */
@@ -906,6 +908,7 @@ struct prcm_regs const dra7xx_prcm = {
        .cm_gmac_gmac_clkctrl                   = 0x4a0093d0,
        .cm_l3init_ocp2scp1_clkctrl             = 0x4a0093e0,
        .cm_l3init_ocp2scp3_clkctrl             = 0x4a0093e8,
+       .cm_l3init_usb_otg_ss_clkctrl           = 0x4a0093f0,
 
        /* cm2.l4per */
        .cm_l4per_clkstctrl                     = 0x4a009700,
index 065199be7671db9276e044906fc270b0038c4075..7d8cec08c2f189283e0a7e170763db98e3a5818b 100644 (file)
@@ -513,7 +513,7 @@ const struct lpddr2_mr_regs mr_regs = {
        .mr16   = MR16_REF_FULL_ARRAY
 };
 
-static void emif_get_ext_phy_ctrl_const_regs(u32 emif_nr,
+void __weak emif_get_ext_phy_ctrl_const_regs(u32 emif_nr,
                                             const u32 **regs,
                                             u32 *size)
 {
index c46a0cc9b8d476089de31698c01cff37fa9f620c..6d94199de854f3f0bec29a5fee642b63a53b5e54 100644 (file)
@@ -6,6 +6,9 @@ choice
 config TARGET_ARMADILLO_800EVA
        bool "armadillo 800 eva board"
 
+config TARGET_GOSE
+       bool "Gose board"
+
 config TARGET_KOELSCH
        bool "Koelsch board"
 
@@ -23,7 +26,13 @@ endchoice
 config SYS_SOC
        default "rmobile"
 
+config RMOBILE_EXTRAM_BOOT
+       bool "Enable boot from RAM"
+       depends on TARGET_ALT || TARGET_KOELSCH || TARGET_LAGER
+       default n
+
 source "board/atmark-techno/armadillo-800eva/Kconfig"
+source "board/renesas/gose/Kconfig"
 source "board/renesas/koelsch/Kconfig"
 source "board/renesas/lager/Kconfig"
 source "board/kmc/kzm9g/Kconfig"
index dd7de41082a21309a68366088c324bddf4b12666..647e426d0b5172571f5b5d5c607d76d0114f529a 100644 (file)
@@ -13,6 +13,7 @@ obj-$(CONFIG_GLOBAL_TIMER) += timer.o
 obj-$(CONFIG_R8A7740) += lowlevel_init.o cpu_info-r8a7740.o pfc-r8a7740.o
 obj-$(CONFIG_R8A7790) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7790.o
 obj-$(CONFIG_R8A7791) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7791.o
+obj-$(CONFIG_R8A7793) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7793.o
 obj-$(CONFIG_R8A7794) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7794.o
 obj-$(CONFIG_SH73A0) += lowlevel_init.o cpu_info-sh73a0.o pfc-sh73a0.o
 obj-$(CONFIG_TMU_TIMER) += ../../../../sh/lib/time.o
index b98137e86aa239794d056995fa3180f5bc50b1bb..d47c47c07eef15f160d5cadd46ed52d278a9ef30 100644 (file)
@@ -53,6 +53,7 @@ static const struct {
        { 0x40, "R8A7740" },
        { 0x45, "R8A7790" },
        { 0x47, "R8A7791" },
+       { 0x4B, "R8A7793" },
        { 0x4C, "R8A7794" },
        { 0x0, "CPU" },
 };
index 879e0e097f19974ae90d4b534372bd20d01708bd..d47546a11d7ad61def4ec26e2ca27171698c71ad 100644 (file)
@@ -60,17 +60,10 @@ do_lowlevel_init:
        cmp r1, #3                      /* has already been set up */
        bicne r0, r0, #0xe7
        orrne r0, r0, #0x83             /* L2CTLR[7:6] + L2CTLR[2:0] */
-
-       ldr     r2, =0xFF000044         /* PRR */
-       ldr     r1, [r2]
-       and     r1, r1, #0x7F00
-       lsrs    r1, r1, #8
-       cmp     r1, #0x45               /* 0x45 is ID of r8a7790 */
-       bne     L2CTLR_5_SKIP
+#if defined(CONFIG_R8A7790)
        orrne r0, r0, #0x20             /* L2CTLR[5] */
-L2CTLR_5_SKIP:
+#endif
        mcrne p15, 1, r0, c9, c0, 2
-
 _exit_init_l2_a15:
        ldr     r3, =(CONFIG_SYS_INIT_SP_ADDR)
        sub     sp, r3, #4
diff --git a/arch/arm/cpu/armv7/rmobile/pfc-r8a7793.c b/arch/arm/cpu/armv7/rmobile/pfc-r8a7793.c
new file mode 100644 (file)
index 0000000..03c27ad
--- /dev/null
@@ -0,0 +1,1926 @@
+/*
+ * arch/arm/cpu/armv7/rmobile/pfc-r8a7793.c
+ *
+ * Copyright (C) 2013 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <sh_pfc.h>
+#include <asm/gpio.h>
+
+#define CPU_32_PORT(fn, pfx, sfx)                              \
+       PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx),        \
+       PORT_10(fn, pfx##2, sfx), PORT_1(fn, pfx##30, sfx),     \
+       PORT_1(fn, pfx##31, sfx)
+
+#define CPU_32_PORT1(fn, pfx, sfx)                             \
+       PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx),        \
+       PORT_1(fn, pfx##20, sfx), PORT_1(fn, pfx##21, sfx),     \
+       PORT_1(fn, pfx##22, sfx), PORT_1(fn, pfx##23, sfx),     \
+       PORT_1(fn, pfx##24, sfx), PORT_1(fn, pfx##25, sfx)
+
+/*
+ * GP_0_0_DATA -> GP_7_25_DATA
+ * (except for GP1[26],GP1[27],GP1[28],GP1[29]),GP1[30]),GP1[31]
+ *  GP7[26],GP7[27],GP7[28],GP7[29]),GP7[30]),GP7[31])
+ */
+#define CPU_ALL_PORT(fn, pfx, sfx)                             \
+       CPU_32_PORT(fn, pfx##_0_, sfx),                         \
+       CPU_32_PORT1(fn, pfx##_1_, sfx),                        \
+       CPU_32_PORT(fn, pfx##_2_, sfx),                 \
+       CPU_32_PORT(fn, pfx##_3_, sfx),                         \
+       CPU_32_PORT(fn, pfx##_4_, sfx),                         \
+       CPU_32_PORT(fn, pfx##_5_, sfx),                 \
+       CPU_32_PORT(fn, pfx##_6_, sfx),                 \
+       CPU_32_PORT1(fn, pfx##_7_, sfx)
+
+#define _GP_GPIO(pfx, sfx) PINMUX_GPIO(GPIO_GP##pfx, GP##pfx##_DATA)
+#define _GP_DATA(pfx, sfx) PINMUX_DATA(GP##pfx##_DATA, GP##pfx##_FN,   \
+                                      GP##pfx##_IN, GP##pfx##_OUT)
+
+#define _GP_INOUTSEL(pfx, sfx) GP##pfx##_IN, GP##pfx##_OUT
+#define _GP_INDT(pfx, sfx) GP##pfx##_DATA
+
+#define GP_ALL(str)    CPU_ALL_PORT(_PORT_ALL, GP, str)
+#define PINMUX_GPIO_GP_ALL()   CPU_ALL_PORT(_GP_GPIO, , unused)
+#define PINMUX_DATA_GP_ALL()   CPU_ALL_PORT(_GP_DATA, , unused)
+
+
+#define PORT_10_REV(fn, pfx, sfx)                              \
+       PORT_1(fn, pfx##9, sfx), PORT_1(fn, pfx##8, sfx),       \
+       PORT_1(fn, pfx##7, sfx), PORT_1(fn, pfx##6, sfx),       \
+       PORT_1(fn, pfx##5, sfx), PORT_1(fn, pfx##4, sfx),       \
+       PORT_1(fn, pfx##3, sfx), PORT_1(fn, pfx##2, sfx),       \
+       PORT_1(fn, pfx##1, sfx), PORT_1(fn, pfx##0, sfx)
+
+#define CPU_32_PORT_REV(fn, pfx, sfx)                                  \
+       PORT_1(fn, pfx##31, sfx), PORT_1(fn, pfx##30, sfx),             \
+       PORT_10_REV(fn, pfx##2, sfx), PORT_10_REV(fn, pfx##1, sfx),     \
+       PORT_10_REV(fn, pfx, sfx)
+
+#define GP_INOUTSEL(bank) CPU_32_PORT_REV(_GP_INOUTSEL, _##bank##_, unused)
+#define GP_INDT(bank) CPU_32_PORT_REV(_GP_INDT, _##bank##_, unused)
+
+#define PINMUX_IPSR_DATA(ipsr, fn) PINMUX_DATA(fn##_MARK, FN_##ipsr, FN_##fn)
+#define PINMUX_IPSR_MODSEL_DATA(ipsr, fn, ms) PINMUX_DATA(fn##_MARK, FN_##ms, \
+                                                         FN_##ipsr, FN_##fn)
+
+enum {
+       PINMUX_RESERVED = 0,
+
+       PINMUX_DATA_BEGIN,
+       GP_ALL(DATA),
+       PINMUX_DATA_END,
+
+       PINMUX_INPUT_BEGIN,
+       GP_ALL(IN),
+       PINMUX_INPUT_END,
+
+       PINMUX_OUTPUT_BEGIN,
+       GP_ALL(OUT),
+       PINMUX_OUTPUT_END,
+
+       PINMUX_FUNCTION_BEGIN,
+       GP_ALL(FN),
+
+       /* GPSR0 */
+       FN_IP0_0, FN_IP0_1, FN_IP0_2, FN_IP0_3, FN_IP0_4, FN_IP0_5,
+       FN_IP0_6, FN_IP0_7, FN_IP0_8, FN_IP0_9, FN_IP0_10, FN_IP0_11,
+       FN_IP0_12, FN_IP0_13, FN_IP0_14, FN_IP0_15, FN_IP0_18_16, FN_IP0_20_19,
+       FN_IP0_22_21, FN_IP0_24_23, FN_IP0_26_25, FN_IP0_28_27, FN_IP0_30_29,
+       FN_IP1_1_0, FN_IP1_3_2, FN_IP1_5_4, FN_IP1_7_6, FN_IP1_10_8,
+       FN_IP1_13_11, FN_IP1_16_14, FN_IP1_19_17, FN_IP1_22_20,
+
+       /* GPSR1 */
+       FN_IP1_25_23, FN_IP1_28_26, FN_IP1_31_29, FN_IP2_2_0, FN_IP2_4_3,
+       FN_IP2_6_5, FN_IP2_9_7, FN_IP2_12_10, FN_IP2_15_13, FN_IP2_18_16,
+       FN_IP2_20_19, FN_IP2_22_21, FN_EX_CS0_N, FN_IP2_24_23, FN_IP2_26_25,
+       FN_IP2_29_27, FN_IP3_2_0, FN_IP3_5_3, FN_IP3_8_6, FN_RD_N,
+       FN_IP3_11_9, FN_IP3_13_12, FN_IP3_15_14 , FN_IP3_17_16 , FN_IP3_19_18,
+       FN_IP3_21_20,
+
+       /* GPSR2 */
+       FN_IP3_27_25, FN_IP3_30_28, FN_IP4_1_0, FN_IP4_4_2, FN_IP4_7_5,
+       FN_IP4_9_8, FN_IP4_12_10, FN_IP4_15_13, FN_IP4_18_16, FN_IP4_19,
+       FN_IP4_20, FN_IP4_21, FN_IP4_23_22, FN_IP4_25_24, FN_IP4_27_26,
+       FN_IP4_30_28, FN_IP5_2_0, FN_IP5_5_3, FN_IP5_8_6, FN_IP5_11_9,
+       FN_IP5_14_12, FN_IP5_16_15, FN_IP5_19_17, FN_IP5_21_20, FN_IP5_23_22,
+       FN_IP5_25_24, FN_IP5_28_26, FN_IP5_31_29, FN_AUDIO_CLKA, FN_IP6_2_0,
+       FN_IP6_5_3, FN_IP6_7_6,
+
+       /* GPSR3 */
+       FN_IP7_5_3, FN_IP7_8_6, FN_IP7_10_9, FN_IP7_12_11, FN_IP7_14_13,
+       FN_IP7_16_15, FN_IP7_18_17, FN_IP7_20_19, FN_IP7_23_21, FN_IP7_26_24,
+       FN_IP7_29_27, FN_IP8_2_0, FN_IP8_5_3, FN_IP8_8_6, FN_IP8_11_9,
+       FN_IP8_14_12, FN_IP8_17_15, FN_IP8_20_18, FN_IP8_23_21, FN_IP8_25_24,
+       FN_IP8_27_26, FN_IP8_30_28, FN_IP9_2_0, FN_IP9_5_3, FN_IP9_6, FN_IP9_7,
+       FN_IP9_10_8, FN_IP9_11, FN_IP9_12, FN_IP9_15_13, FN_IP9_16,
+       FN_IP9_18_17,
+
+       /* GPSR4 */
+       FN_VI0_CLK, FN_IP9_20_19, FN_IP9_22_21, FN_IP9_24_23, FN_IP9_26_25,
+       FN_VI0_DATA0_VI0_B0, FN_VI0_DATA0_VI0_B1, FN_VI0_DATA0_VI0_B2,
+       FN_IP9_28_27, FN_VI0_DATA0_VI0_B4, FN_VI0_DATA0_VI0_B5,
+       FN_VI0_DATA0_VI0_B6, FN_VI0_DATA0_VI0_B7, FN_IP9_31_29, FN_IP10_2_0,
+       FN_IP10_5_3, FN_IP10_8_6, FN_IP10_11_9, FN_IP10_14_12, FN_IP10_16_15,
+       FN_IP10_18_17, FN_IP10_21_19, FN_IP10_24_22, FN_IP10_26_25,
+       FN_IP10_28_27, FN_IP10_31_29, FN_IP11_2_0, FN_IP11_5_3, FN_IP11_8_6,
+       FN_IP15_1_0, FN_IP15_3_2, FN_IP15_5_4,
+
+       /* GPSR5 */
+       FN_IP11_11_9, FN_IP11_14_12, FN_IP11_16_15, FN_IP11_18_17, FN_IP11_19,
+       FN_IP11_20, FN_IP11_21, FN_IP11_22, FN_IP11_23, FN_IP11_24,
+       FN_IP11_25, FN_IP11_26, FN_IP11_27, FN_IP11_29_28, FN_IP11_31_30,
+       FN_IP12_1_0, FN_IP12_3_2, FN_IP12_6_4, FN_IP12_9_7, FN_IP12_12_10,
+       FN_IP12_15_13, FN_IP12_17_16, FN_IP12_19_18, FN_IP12_21_20,
+       FN_IP12_23_22, FN_IP12_26_24, FN_IP12_29_27, FN_IP13_2_0, FN_IP13_4_3,
+       FN_IP13_6_5, FN_IP13_9_7, FN_IP3_24_22,
+
+       /* GPSR6 */
+       FN_IP13_10, FN_IP13_11, FN_IP13_12, FN_IP13_13, FN_IP13_14,
+       FN_IP13_15, FN_IP13_18_16, FN_IP13_21_19, FN_IP13_22, FN_IP13_24_23,
+       FN_IP13_25, FN_IP13_26, FN_IP13_27, FN_IP13_30_28, FN_IP14_1_0,
+       FN_IP14_2, FN_IP14_3, FN_IP14_4, FN_IP14_5, FN_IP14_6, FN_IP14_7,
+       FN_IP14_10_8, FN_IP14_13_11, FN_IP14_16_14, FN_IP14_19_17,
+       FN_IP14_22_20, FN_IP14_25_23, FN_IP14_28_26, FN_IP14_31_29,
+
+       /* GPSR7 */
+       FN_IP15_17_15, FN_IP15_20_18, FN_IP15_23_21, FN_IP15_26_24,
+       FN_IP15_29_27, FN_IP16_2_0, FN_IP16_5_3, FN_IP16_7_6, FN_IP16_9_8,
+       FN_IP16_11_10, FN_IP6_9_8, FN_IP6_11_10, FN_IP6_13_12, FN_IP6_15_14,
+       FN_IP6_18_16, FN_IP6_20_19, FN_IP6_23_21, FN_IP6_26_24, FN_IP6_29_27,
+       FN_IP7_2_0, FN_IP15_8_6, FN_IP15_11_9, FN_IP15_14_12,
+       FN_USB0_PWEN, FN_USB0_OVC, FN_USB1_PWEN,
+
+       /* IPSR 0 -5 */
+
+       /* IPSR6 */
+       FN_AUDIO_CLKB, FN_STP_OPWM_0_B, FN_MSIOF1_SCK_B,
+       FN_SCIF_CLK, FN_BPFCLK_E,
+       FN_AUDIO_CLKC, FN_SCIFB0_SCK_C, FN_MSIOF1_SYNC_B, FN_RX2,
+       FN_SCIFA2_RXD, FN_FMIN_E,
+       FN_AUDIO_CLKOUT, FN_MSIOF1_SS1_B, FN_TX2, FN_SCIFA2_TXD,
+       FN_IRQ0, FN_SCIFB1_RXD_D, FN_INTC_IRQ0_N,
+       FN_IRQ1, FN_SCIFB1_SCK_C, FN_INTC_IRQ1_N,
+       FN_IRQ2, FN_SCIFB1_TXD_D, FN_INTC_IRQ2_N,
+       FN_IRQ3, FN_SCL4_C, FN_MSIOF2_TXD_E, FN_INTC_IRQ3_N,
+       FN_IRQ4, FN_HRX1_C, FN_SDA4_C, FN_MSIOF2_RXD_E, FN_INTC_IRQ4_N,
+       FN_IRQ5, FN_HTX1_C, FN_SCL1_E, FN_MSIOF2_SCK_E,
+       FN_IRQ6, FN_HSCK1_C, FN_MSIOF1_SS2_B, FN_SDA1_E, FN_MSIOF2_SYNC_E,
+       FN_IRQ7, FN_HCTS1_N_C, FN_MSIOF1_TXD_B, FN_GPS_CLK_C, FN_GPS_CLK_D,
+       FN_IRQ8, FN_HRTS1_N_C, FN_MSIOF1_RXD_B, FN_GPS_SIGN_C, FN_GPS_SIGN_D,
+
+       /* IPSR7 - IPSR10 */
+
+       /* IPSR11 */
+       FN_VI0_R5, FN_VI2_DATA6, FN_GLO_SDATA_B, FN_RX0_C, FN_SDA1_D,
+       FN_VI0_R6, FN_VI2_DATA7, FN_GLO_SS_B, FN_TX1_C, FN_SCL4_B,
+       FN_VI0_R7, FN_GLO_RFON_B, FN_RX1_C, FN_CAN0_RX_E,
+       FN_SDA4_B, FN_HRX1_D, FN_SCIFB0_RXD_D,
+       FN_VI1_HSYNC_N, FN_AVB_RXD0, FN_TS_SDATA0_B, FN_TX4_B, FN_SCIFA4_TXD_B,
+       FN_VI1_VSYNC_N, FN_AVB_RXD1, FN_TS_SCK0_B, FN_RX4_B, FN_SCIFA4_RXD_B,
+       FN_VI1_CLKENB, FN_AVB_RXD2, FN_TS_SDEN0_B,
+       FN_VI1_FIELD, FN_AVB_RXD3, FN_TS_SPSYNC0_B,
+       FN_VI1_CLK, FN_AVB_RXD4, FN_VI1_DATA0, FN_AVB_RXD5,
+       FN_VI1_DATA1, FN_AVB_RXD6, FN_VI1_DATA2, FN_AVB_RXD7,
+       FN_VI1_DATA3, FN_AVB_RX_ER, FN_VI1_DATA4, FN_AVB_MDIO,
+       FN_VI1_DATA5, FN_AVB_RX_DV, FN_VI1_DATA6, FN_AVB_MAGIC,
+       FN_VI1_DATA7, FN_AVB_MDC,
+       FN_ETH_MDIO, FN_AVB_RX_CLK, FN_SCL2_C,
+       FN_ETH_CRS_DV, FN_AVB_LINK, FN_SDA2_C,
+
+       /* IPSR12 */
+       FN_ETH_RX_ER, FN_AVB_CRS, FN_SCL3, FN_SCL7,
+       FN_ETH_RXD0, FN_AVB_PHY_INT, FN_SDA3, FN_SDA7,
+       FN_ETH_RXD1, FN_AVB_GTXREFCLK, FN_CAN0_TX_C,
+       FN_SCL2_D, FN_MSIOF1_RXD_E,
+       FN_ETH_LINK, FN_AVB_TXD0, FN_CAN0_RX_C, FN_SDA2_D, FN_MSIOF1_SCK_E,
+       FN_ETH_REFCLK, FN_AVB_TXD1, FN_SCIFA3_RXD_B,
+       FN_CAN1_RX_C, FN_MSIOF1_SYNC_E,
+       FN_ETH_TXD1, FN_AVB_TXD2, FN_SCIFA3_TXD_B,
+       FN_CAN1_TX_C, FN_MSIOF1_TXD_E,
+       FN_ETH_TX_EN, FN_AVB_TXD3, FN_TCLK1_B, FN_CAN_CLK_B,
+       FN_ETH_MAGIC, FN_AVB_TXD4, FN_IETX_C,
+       FN_ETH_TXD0, FN_AVB_TXD5, FN_IECLK_C,
+       FN_ETH_MDC, FN_AVB_TXD6, FN_IERX_C,
+       FN_STP_IVCXO27_0, FN_AVB_TXD7, FN_SCIFB2_TXD_D,
+       FN_ADIDATA_B, FN_MSIOF0_SYNC_C,
+       FN_STP_ISCLK_0, FN_AVB_TX_EN, FN_SCIFB2_RXD_D,
+       FN_ADICS_SAMP_B, FN_MSIOF0_SCK_C,
+
+       /* IPSR13 */
+       FN_STP_ISD_0, FN_AVB_TX_ER, FN_SCIFB2_SCK_C,
+       FN_ADICLK_B, FN_MSIOF0_SS1_C,
+       FN_STP_ISEN_0, FN_AVB_TX_CLK, FN_ADICHS0_B, FN_MSIOF0_SS2_C,
+       FN_STP_ISSYNC_0, FN_AVB_COL, FN_ADICHS1_B, FN_MSIOF0_RXD_C,
+       FN_STP_OPWM_0, FN_AVB_GTX_CLK, FN_PWM0_B,
+       FN_ADICHS2_B, FN_MSIOF0_TXD_C,
+       FN_SD0_CLK, FN_SPCLK_B, FN_SD0_CMD, FN_MOSI_IO0_B,
+       FN_SD0_DATA0, FN_MISO_IO1_B, FN_SD0_DATA1, FN_IO2_B,
+       FN_SD0_DATA2, FN_IO3_B, FN_SD0_DATA3, FN_SSL_B,
+       FN_SD0_CD, FN_MMC_D6_B, FN_SIM0_RST_B, FN_CAN0_RX_F,
+       FN_SCIFA5_TXD_B, FN_TX3_C,
+       FN_SD0_WP, FN_MMC_D7_B, FN_SIM0_D_B, FN_CAN0_TX_F,
+       FN_SCIFA5_RXD_B, FN_RX3_C,
+       FN_SD1_CMD, FN_REMOCON_B, FN_SD1_DATA0, FN_SPEEDIN_B,
+       FN_SD1_DATA1, FN_IETX_B, FN_SD1_DATA2, FN_IECLK_B,
+       FN_SD1_DATA3, FN_IERX_B,
+       FN_SD1_CD, FN_PWM0, FN_TPU_TO0, FN_SCL1_C,
+
+       /* IPSR14 */
+       FN_SD1_WP, FN_PWM1_B, FN_SDA1_C,
+       FN_SD2_CLK, FN_MMC_CLK, FN_SD2_CMD, FN_MMC_CMD,
+       FN_SD2_DATA0, FN_MMC_D0, FN_SD2_DATA1, FN_MMC_D1,
+       FN_SD2_DATA2, FN_MMC_D2, FN_SD2_DATA3, FN_MMC_D3,
+       FN_SD2_CD, FN_MMC_D4, FN_SCL8_C, FN_TX5_B, FN_SCIFA5_TXD_C,
+       FN_SD2_WP, FN_MMC_D5, FN_SDA8_C, FN_RX5_B, FN_SCIFA5_RXD_C,
+       FN_MSIOF0_SCK, FN_RX2_C, FN_ADIDATA, FN_VI1_CLK_C, FN_VI1_G0_B,
+       FN_MSIOF0_SYNC, FN_TX2_C, FN_ADICS_SAMP, FN_VI1_CLKENB_C, FN_VI1_G1_B,
+       FN_MSIOF0_TXD, FN_ADICLK, FN_VI1_FIELD_C, FN_VI1_G2_B,
+       FN_MSIOF0_RXD, FN_ADICHS0, FN_VI1_DATA0_C, FN_VI1_G3_B,
+       FN_MSIOF0_SS1, FN_MMC_D6, FN_ADICHS1, FN_TX0_E,
+       FN_VI1_HSYNC_N_C, FN_SCL7_C, FN_VI1_G4_B,
+       FN_MSIOF0_SS2, FN_MMC_D7, FN_ADICHS2, FN_RX0_E,
+       FN_VI1_VSYNC_N_C, FN_SDA7_C, FN_VI1_G5_B,
+
+       /* IPSR15 */
+       FN_SIM0_RST, FN_IETX, FN_CAN1_TX_D,
+       FN_SIM0_CLK, FN_IECLK, FN_CAN_CLK_C,
+       FN_SIM0_D, FN_IERX, FN_CAN1_RX_D,
+       FN_GPS_CLK, FN_DU1_DOTCLKIN_C, FN_AUDIO_CLKB_B,
+       FN_PWM5_B, FN_SCIFA3_TXD_C,
+       FN_GPS_SIGN, FN_TX4_C, FN_SCIFA4_TXD_C, FN_PWM5,
+       FN_VI1_G6_B, FN_SCIFA3_RXD_C,
+       FN_GPS_MAG, FN_RX4_C, FN_SCIFA4_RXD_C, FN_PWM6,
+       FN_VI1_G7_B, FN_SCIFA3_SCK_C,
+       FN_HCTS0_N, FN_SCIFB0_CTS_N, FN_GLO_I0_C, FN_TCLK1, FN_VI1_DATA1_C,
+       FN_HRTS0_N, FN_SCIFB0_RTS_N, FN_GLO_I1_C, FN_VI1_DATA2_C,
+       FN_HSCK0, FN_SCIFB0_SCK, FN_GLO_Q0_C, FN_CAN_CLK,
+       FN_TCLK2, FN_VI1_DATA3_C,
+       FN_HRX0, FN_SCIFB0_RXD, FN_GLO_Q1_C, FN_CAN0_RX_B, FN_VI1_DATA4_C,
+       FN_HTX0, FN_SCIFB0_TXD, FN_GLO_SCLK_C, FN_CAN0_TX_B, FN_VI1_DATA5_C,
+
+       /* IPSR16 */
+       FN_HRX1, FN_SCIFB1_RXD, FN_VI1_R0_B, FN_GLO_SDATA_C, FN_VI1_DATA6_C,
+       FN_HTX1, FN_SCIFB1_TXD, FN_VI1_R1_B, FN_GLO_SS_C, FN_VI1_DATA7_C,
+       FN_HSCK1, FN_SCIFB1_SCK, FN_MLB_CK, FN_GLO_RFON_C,
+       FN_HCTS1_N, FN_SCIFB1_CTS_N, FN_MLB_SIG, FN_CAN1_TX_B,
+       FN_HRTS1_N, FN_SCIFB1_RTS_N, FN_MLB_DAT, FN_CAN1_RX_B,
+
+       /* MOD_SEL */
+       FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, FN_SEL_SCIF1_3,
+       FN_SEL_SCIFB_0, FN_SEL_SCIFB_1, FN_SEL_SCIFB_2, FN_SEL_SCIFB_3,
+       FN_SEL_SCIFB2_0, FN_SEL_SCIFB2_1, FN_SEL_SCIFB2_2, FN_SEL_SCIFB2_3,
+       FN_SEL_SCIFB1_0, FN_SEL_SCIFB1_1, FN_SEL_SCIFB1_2, FN_SEL_SCIFB1_3,
+       FN_SEL_SCIFA1_0, FN_SEL_SCIFA1_1, FN_SEL_SCIFA1_2,
+       FN_SEL_SSI9_0, FN_SEL_SSI9_1,
+       FN_SEL_SCFA_0, FN_SEL_SCFA_1,
+       FN_SEL_QSP_0, FN_SEL_QSP_1,
+       FN_SEL_SSI7_0, FN_SEL_SSI7_1,
+       FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1, FN_SEL_HSCIF1_2, FN_SEL_HSCIF1_3,
+       FN_SEL_HSCIF1_4,
+       FN_SEL_VI1_0, FN_SEL_VI1_1, FN_SEL_VI1_2,
+       FN_SEL_TMU1_0, FN_SEL_TMU1_1,
+       FN_SEL_LBS_0, FN_SEL_LBS_1, FN_SEL_LBS_2, FN_SEL_LBS_3,
+       FN_SEL_TSIF0_0, FN_SEL_TSIF0_1, FN_SEL_TSIF0_2, FN_SEL_TSIF0_3,
+       FN_SEL_SOF0_0, FN_SEL_SOF0_1, FN_SEL_SOF0_2,
+
+       /* MOD_SEL2 */
+       FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2, FN_SEL_SCIF0_3,
+       FN_SEL_SCIF0_4,
+       FN_SEL_SCIF_0, FN_SEL_SCIF_1,
+       FN_SEL_CAN0_0, FN_SEL_CAN0_1, FN_SEL_CAN0_2, FN_SEL_CAN0_3,
+       FN_SEL_CAN0_4, FN_SEL_CAN0_5,
+       FN_SEL_CAN1_0, FN_SEL_CAN1_1, FN_SEL_CAN1_2, FN_SEL_CAN1_3,
+       FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1,
+       FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2,
+       FN_SEL_ADG_0, FN_SEL_ADG_1,
+       FN_SEL_FM_0, FN_SEL_FM_1, FN_SEL_FM_2, FN_SEL_FM_3, FN_SEL_FM_4,
+       FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1, FN_SEL_SCIFA5_2,
+       FN_SEL_GPS_0, FN_SEL_GPS_1, FN_SEL_GPS_2, FN_SEL_GPS_3,
+       FN_SEL_SCIFA4_0, FN_SEL_SCIFA4_1, FN_SEL_SCIFA4_2,
+       FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1, FN_SEL_SCIFA3_2,
+       FN_SEL_SIM_0, FN_SEL_SIM_1,
+       FN_SEL_SSI8_0, FN_SEL_SSI8_1,
+
+       /* MOD_SEL3 */
+       FN_SEL_HSCIF2_0, FN_SEL_HSCIF2_1, FN_SEL_HSCIF2_2, FN_SEL_HSCIF2_3,
+       FN_SEL_CANCLK_0, FN_SEL_CANCLK_1, FN_SEL_CANCLK_2, FN_SEL_CANCLK_3,
+       FN_SEL_IIC8_0, FN_SEL_IIC8_1, FN_SEL_IIC8_2,
+       FN_SEL_IIC7_0, FN_SEL_IIC7_1, FN_SEL_IIC7_2,
+       FN_SEL_IIC4_0, FN_SEL_IIC4_1, FN_SEL_IIC4_2,
+       FN_SEL_IIC3_0, FN_SEL_IIC3_1, FN_SEL_IIC3_2, FN_SEL_IIC3_3,
+       FN_SEL_SCIF3_0, FN_SEL_SCIF3_1, FN_SEL_SCIF3_2, FN_SEL_SCIF3_3,
+       FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2,
+       FN_SEL_MMC_0, FN_SEL_MMC_1,
+       FN_SEL_SCIF5_0, FN_SEL_SCIF5_1,
+       FN_SEL_IIC2_0, FN_SEL_IIC2_1, FN_SEL_IIC2_2, FN_SEL_IIC2_3,
+       FN_SEL_IIC1_0, FN_SEL_IIC1_1, FN_SEL_IIC1_2, FN_SEL_IIC1_3,
+       FN_SEL_IIC1_4,
+       FN_SEL_IIC0_0, FN_SEL_IIC0_1, FN_SEL_IIC0_2,
+
+       /* MOD_SEL4 */
+       FN_SEL_SOF1_0, FN_SEL_SOF1_1, FN_SEL_SOF1_2, FN_SEL_SOF1_3,
+       FN_SEL_SOF1_4,
+       FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1, FN_SEL_HSCIF0_2,
+       FN_SEL_DIS_0, FN_SEL_DIS_1, FN_SEL_DIS_2,
+       FN_SEL_RAD_0, FN_SEL_RAD_1,
+       FN_SEL_RCN_0, FN_SEL_RCN_1,
+       FN_SEL_RSP_0, FN_SEL_RSP_1,
+       FN_SEL_SCIF2_0, FN_SEL_SCIF2_1, FN_SEL_SCIF2_2, FN_SEL_SCIF2_3,
+       FN_SEL_SCIF2_4,
+       FN_SEL_SOF2_0, FN_SEL_SOF2_1, FN_SEL_SOF2_2, FN_SEL_SOF2_3,
+       FN_SEL_SOF2_4,
+       FN_SEL_SSI1_0, FN_SEL_SSI1_1,
+       FN_SEL_SSI0_0, FN_SEL_SSI0_1,
+       FN_SEL_SSP_0, FN_SEL_SSP_1, FN_SEL_SSP_2,
+       PINMUX_FUNCTION_END,
+
+       PINMUX_MARK_BEGIN,
+
+       EX_CS0_N_MARK, RD_N_MARK,
+
+       AUDIO_CLKA_MARK,
+
+       VI0_CLK_MARK, VI0_DATA0_VI0_B0_MARK, VI0_DATA0_VI0_B1_MARK,
+       VI0_DATA0_VI0_B2_MARK, VI0_DATA0_VI0_B4_MARK, VI0_DATA0_VI0_B5_MARK,
+       VI0_DATA0_VI0_B6_MARK, VI0_DATA0_VI0_B7_MARK,
+
+       USB0_PWEN_MARK, USB0_OVC_MARK, USB1_PWEN_MARK,
+
+       /* IPSR0 - 5 */
+
+       /* IPSR6 */
+       AUDIO_CLKB_MARK, STP_OPWM_0_B_MARK, MSIOF1_SCK_B_MARK,
+       SCIF_CLK_MARK, BPFCLK_E_MARK,
+       AUDIO_CLKC_MARK, SCIFB0_SCK_C_MARK, MSIOF1_SYNC_B_MARK, RX2_MARK,
+       SCIFA2_RXD_MARK, FMIN_E_MARK,
+       AUDIO_CLKOUT_MARK, MSIOF1_SS1_B_MARK, TX2_MARK, SCIFA2_TXD_MARK,
+       IRQ0_MARK, SCIFB1_RXD_D_MARK, INTC_IRQ0_N_MARK,
+       IRQ1_MARK, SCIFB1_SCK_C_MARK, INTC_IRQ1_N_MARK,
+       IRQ2_MARK, SCIFB1_TXD_D_MARK, INTC_IRQ2_N_MARK,
+       IRQ3_MARK, SCL4_C_MARK, MSIOF2_TXD_E_MARK, INTC_IRQ3_N_MARK,
+       IRQ4_MARK, HRX1_C_MARK, SDA4_C_MARK,
+       MSIOF2_RXD_E_MARK, INTC_IRQ4_N_MARK,
+       IRQ5_MARK, HTX1_C_MARK, SCL1_E_MARK, MSIOF2_SCK_E_MARK,
+       IRQ6_MARK, HSCK1_C_MARK, MSIOF1_SS2_B_MARK,
+       SDA1_E_MARK, MSIOF2_SYNC_E_MARK,
+       IRQ7_MARK, HCTS1_N_C_MARK, MSIOF1_TXD_B_MARK,
+       GPS_CLK_C_MARK, GPS_CLK_D_MARK,
+       IRQ8_MARK, HRTS1_N_C_MARK, MSIOF1_RXD_B_MARK,
+       GPS_SIGN_C_MARK, GPS_SIGN_D_MARK,
+
+       /* IPSR7 - 10 */
+
+       /* IPSR11 */
+       VI0_R5_MARK, VI2_DATA6_MARK, GLO_SDATA_B_MARK, RX0_C_MARK, SDA1_D_MARK,
+       VI0_R6_MARK, VI2_DATA7_MARK, GLO_SS_B_MARK, TX1_C_MARK, SCL4_B_MARK,
+       VI0_R7_MARK, GLO_RFON_B_MARK, RX1_C_MARK, CAN0_RX_E_MARK,
+       SDA4_B_MARK, HRX1_D_MARK, SCIFB0_RXD_D_MARK,
+       VI1_HSYNC_N_MARK, AVB_RXD0_MARK, TS_SDATA0_B_MARK,
+       TX4_B_MARK, SCIFA4_TXD_B_MARK,
+       VI1_VSYNC_N_MARK, AVB_RXD1_MARK, TS_SCK0_B_MARK,
+       RX4_B_MARK, SCIFA4_RXD_B_MARK,
+       VI1_CLKENB_MARK, AVB_RXD2_MARK, TS_SDEN0_B_MARK,
+       VI1_FIELD_MARK, AVB_RXD3_MARK, TS_SPSYNC0_B_MARK,
+       VI1_CLK_MARK, AVB_RXD4_MARK, VI1_DATA0_MARK, AVB_RXD5_MARK,
+       VI1_DATA1_MARK, AVB_RXD6_MARK, VI1_DATA2_MARK, AVB_RXD7_MARK,
+       VI1_DATA3_MARK, AVB_RX_ER_MARK, VI1_DATA4_MARK, AVB_MDIO_MARK,
+       VI1_DATA5_MARK, AVB_RX_DV_MARK, VI1_DATA6_MARK, AVB_MAGIC_MARK,
+       VI1_DATA7_MARK, AVB_MDC_MARK,
+       ETH_MDIO_MARK, AVB_RX_CLK_MARK, SCL2_C_MARK,
+       ETH_CRS_DV_MARK, AVB_LINK_MARK, SDA2_C_MARK,
+
+       /* IPSR12 */
+       ETH_RX_ER_MARK, AVB_CRS_MARK, SCL3_MARK, SCL7_MARK,
+       ETH_RXD0_MARK, AVB_PHY_INT_MARK, SDA3_MARK, SDA7_MARK,
+       ETH_RXD1_MARK, AVB_GTXREFCLK_MARK, CAN0_TX_C_MARK,
+       SCL2_D_MARK, MSIOF1_RXD_E_MARK,
+       ETH_LINK_MARK, AVB_TXD0_MARK, CAN0_RX_C_MARK,
+       SDA2_D_MARK, MSIOF1_SCK_E_MARK,
+       ETH_REFCLK_MARK, AVB_TXD1_MARK, SCIFA3_RXD_B_MARK,
+       CAN1_RX_C_MARK, MSIOF1_SYNC_E_MARK,
+       ETH_TXD1_MARK, AVB_TXD2_MARK, SCIFA3_TXD_B_MARK,
+       CAN1_TX_C_MARK, MSIOF1_TXD_E_MARK,
+       ETH_TX_EN_MARK, AVB_TXD3_MARK, TCLK1_B_MARK, CAN_CLK_B_MARK,
+       ETH_MAGIC_MARK, AVB_TXD4_MARK, IETX_C_MARK,
+       ETH_TXD0_MARK, AVB_TXD5_MARK, IECLK_C_MARK,
+       ETH_MDC_MARK, AVB_TXD6_MARK, IERX_C_MARK,
+       STP_IVCXO27_0_MARK, AVB_TXD7_MARK, SCIFB2_TXD_D_MARK,
+       ADIDATA_B_MARK, MSIOF0_SYNC_C_MARK,
+       STP_ISCLK_0_MARK, AVB_TX_EN_MARK, SCIFB2_RXD_D_MARK,
+       ADICS_SAMP_B_MARK, MSIOF0_SCK_C_MARK,
+
+       /* IPSR13 */
+       STP_ISD_0_MARK, AVB_TX_ER_MARK, SCIFB2_SCK_C_MARK,
+       ADICLK_B_MARK, MSIOF0_SS1_C_MARK,
+       STP_ISEN_0_MARK, AVB_TX_CLK_MARK, ADICHS0_B_MARK, MSIOF0_SS2_C_MARK,
+       STP_ISSYNC_0_MARK, AVB_COL_MARK, ADICHS1_B_MARK, MSIOF0_RXD_C_MARK,
+       STP_OPWM_0_MARK, AVB_GTX_CLK_MARK, PWM0_B_MARK,
+       ADICHS2_B_MARK, MSIOF0_TXD_C_MARK,
+       SD0_CLK_MARK, SPCLK_B_MARK, SD0_CMD_MARK, MOSI_IO0_B_MARK,
+       SD0_DATA0_MARK, MISO_IO1_B_MARK, SD0_DATA1_MARK, IO2_B_MARK,
+       SD0_DATA2_MARK, IO3_B_MARK, SD0_DATA3_MARK, SSL_B_MARK,
+       SD0_CD_MARK, MMC_D6_B_MARK, SIM0_RST_B_MARK, CAN0_RX_F_MARK,
+       SCIFA5_TXD_B_MARK, TX3_C_MARK,
+       SD0_WP_MARK, MMC_D7_B_MARK, SIM0_D_B_MARK, CAN0_TX_F_MARK,
+       SCIFA5_RXD_B_MARK, RX3_C_MARK,
+       SD1_CMD_MARK, REMOCON_B_MARK, SD1_DATA0_MARK, SPEEDIN_B_MARK,
+       SD1_DATA1_MARK, IETX_B_MARK, SD1_DATA2_MARK, IECLK_B_MARK,
+       SD1_DATA3_MARK, IERX_B_MARK,
+       SD1_CD_MARK, PWM0_MARK, TPU_TO0_MARK, SCL1_C_MARK,
+
+       /* IPSR14 */
+       SD1_WP_MARK, PWM1_B_MARK, SDA1_C_MARK,
+       SD2_CLK_MARK, MMC_CLK_MARK, SD2_CMD_MARK, MMC_CMD_MARK,
+       SD2_DATA0_MARK, MMC_D0_MARK, SD2_DATA1_MARK, MMC_D1_MARK,
+       SD2_DATA2_MARK, MMC_D2_MARK, SD2_DATA3_MARK, MMC_D3_MARK,
+       SD2_CD_MARK, MMC_D4_MARK, SCL8_C_MARK, TX5_B_MARK, SCIFA5_TXD_C_MARK,
+       SD2_WP_MARK, MMC_D5_MARK, SDA8_C_MARK, RX5_B_MARK, SCIFA5_RXD_C_MARK,
+       MSIOF0_SCK_MARK, RX2_C_MARK, ADIDATA_MARK,
+       VI1_CLK_C_MARK, VI1_G0_B_MARK,
+       MSIOF0_SYNC_MARK, TX2_C_MARK, ADICS_SAMP_MARK,
+       VI1_CLKENB_C_MARK, VI1_G1_B_MARK,
+       MSIOF0_TXD_MARK, ADICLK_MARK, VI1_FIELD_C_MARK, VI1_G2_B_MARK,
+       MSIOF0_RXD_MARK, ADICHS0_MARK, VI1_DATA0_C_MARK, VI1_G3_B_MARK,
+       MSIOF0_SS1_MARK, MMC_D6_MARK, ADICHS1_MARK, TX0_E_MARK,
+       VI1_HSYNC_N_C_MARK, SCL7_C_MARK, VI1_G4_B_MARK,
+       MSIOF0_SS2_MARK, MMC_D7_MARK, ADICHS2_MARK, RX0_E_MARK,
+       VI1_VSYNC_N_C_MARK, SDA7_C_MARK, VI1_G5_B_MARK,
+
+       /* IPSR15 */
+       SIM0_RST_MARK, IETX_MARK, CAN1_TX_D_MARK,
+       SIM0_CLK_MARK, IECLK_MARK, CAN_CLK_C_MARK,
+       SIM0_D_MARK, IERX_MARK, CAN1_RX_D_MARK,
+       GPS_CLK_MARK, DU1_DOTCLKIN_C_MARK, AUDIO_CLKB_B_MARK,
+       PWM5_B_MARK, SCIFA3_TXD_C_MARK,
+       GPS_SIGN_MARK, TX4_C_MARK, SCIFA4_TXD_C_MARK, PWM5_MARK,
+       VI1_G6_B_MARK, SCIFA3_RXD_C_MARK,
+       GPS_MAG_MARK, RX4_C_MARK, SCIFA4_RXD_C_MARK, PWM6_MARK,
+       VI1_G7_B_MARK, SCIFA3_SCK_C_MARK,
+       HCTS0_N_MARK, SCIFB0_CTS_N_MARK, GLO_I0_C_MARK,
+       TCLK1_MARK, VI1_DATA1_C_MARK,
+       HRTS0_N_MARK, SCIFB0_RTS_N_MARK, GLO_I1_C_MARK, VI1_DATA2_C_MARK,
+       HSCK0_MARK, SCIFB0_SCK_MARK, GLO_Q0_C_MARK, CAN_CLK_MARK,
+       TCLK2_MARK, VI1_DATA3_C_MARK,
+       HRX0_MARK, SCIFB0_RXD_MARK, GLO_Q1_C_MARK,
+       CAN0_RX_B_MARK, VI1_DATA4_C_MARK,
+       HTX0_MARK, SCIFB0_TXD_MARK, GLO_SCLK_C_MARK,
+       CAN0_TX_B_MARK, VI1_DATA5_C_MARK,
+
+       /* IPSR16 */
+       HRX1_MARK, SCIFB1_RXD_MARK, VI1_R0_B_MARK,
+       GLO_SDATA_C_MARK, VI1_DATA6_C_MARK,
+       HTX1_MARK, SCIFB1_TXD_MARK, VI1_R1_B_MARK,
+       GLO_SS_C_MARK, VI1_DATA7_C_MARK,
+       HSCK1_MARK, SCIFB1_SCK_MARK, MLB_CK_MARK, GLO_RFON_C_MARK,
+       HCTS1_N_MARK, SCIFB1_CTS_N_MARK, MLB_SIG_MARK, CAN1_TX_B_MARK,
+       HRTS1_N_MARK, SCIFB1_RTS_N_MARK, MLB_DAT_MARK, CAN1_RX_B_MARK,
+       PINMUX_MARK_END,
+};
+
+static pinmux_enum_t pinmux_data[] = {
+       PINMUX_DATA_GP_ALL(), /* PINMUX_DATA(GP_M_N_DATA, GP_M_N_FN...), */
+
+       PINMUX_DATA(EX_CS0_N_MARK, FN_EX_CS0_N),
+       PINMUX_DATA(RD_N_MARK, FN_RD_N),
+       PINMUX_DATA(AUDIO_CLKA_MARK, FN_AUDIO_CLKA),
+       PINMUX_DATA(VI0_CLK_MARK, FN_VI0_CLK),
+       PINMUX_DATA(VI0_DATA0_VI0_B0_MARK, FN_VI0_DATA0_VI0_B0),
+       PINMUX_DATA(VI0_DATA0_VI0_B1_MARK, FN_VI0_DATA0_VI0_B1),
+       PINMUX_DATA(VI0_DATA0_VI0_B2_MARK, FN_VI0_DATA0_VI0_B2),
+       PINMUX_DATA(VI0_DATA0_VI0_B4_MARK, FN_VI0_DATA0_VI0_B4),
+       PINMUX_DATA(VI0_DATA0_VI0_B5_MARK, FN_VI0_DATA0_VI0_B5),
+       PINMUX_DATA(VI0_DATA0_VI0_B6_MARK, FN_VI0_DATA0_VI0_B6),
+       PINMUX_DATA(VI0_DATA0_VI0_B7_MARK, FN_VI0_DATA0_VI0_B7),
+       PINMUX_DATA(USB0_PWEN_MARK, FN_USB0_PWEN),
+       PINMUX_DATA(USB0_OVC_MARK, FN_USB0_OVC),
+       PINMUX_DATA(USB1_PWEN_MARK, FN_USB1_PWEN),
+
+       /* IPSR0 - 5 */
+
+       /* IPSR6 */
+       PINMUX_IPSR_MODSEL_DATA(IP6_2_0, AUDIO_CLKB, SEL_ADG_0),
+       PINMUX_IPSR_MODSEL_DATA(IP6_2_0, STP_OPWM_0_B, SEL_SSP_1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_2_0, MSIOF1_SCK_B, SEL_SOF1_1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_2_0, SCIF_CLK, SEL_SCIF_0),
+       PINMUX_IPSR_MODSEL_DATA(IP6_2_0, BPFCLK_E, SEL_FM_4),
+       PINMUX_IPSR_DATA(IP6_5_3, AUDIO_CLKC),
+       PINMUX_IPSR_MODSEL_DATA(IP6_5_3, SCIFB0_SCK_C, SEL_SCIFB_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_5_3, MSIOF1_SYNC_B, SEL_SOF1_1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_5_3, RX2, SEL_SCIF2_0),
+       PINMUX_IPSR_MODSEL_DATA(IP6_5_3, SCIFA2_RXD, SEL_SCIFA2_0),
+       PINMUX_IPSR_MODSEL_DATA(IP6_5_3, FMIN_E, SEL_FM_4),
+       PINMUX_IPSR_DATA(IP6_7_6, AUDIO_CLKOUT),
+       PINMUX_IPSR_MODSEL_DATA(IP6_7_6, MSIOF1_SS1_B, SEL_SOF1_1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_5_3, TX2, SEL_SCIF2_0),
+       PINMUX_IPSR_MODSEL_DATA(IP6_7_6, SCIFA2_TXD, SEL_SCIFA2_0),
+       PINMUX_IPSR_DATA(IP6_9_8, IRQ0),
+       PINMUX_IPSR_MODSEL_DATA(IP6_9_8, SCIFB1_RXD_D, SEL_SCIFB1_3),
+       PINMUX_IPSR_DATA(IP6_9_8, INTC_IRQ0_N),
+       PINMUX_IPSR_DATA(IP6_11_10, IRQ1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_11_10, SCIFB1_SCK_C, SEL_SCIFB1_2),
+       PINMUX_IPSR_DATA(IP6_11_10, INTC_IRQ1_N),
+       PINMUX_IPSR_DATA(IP6_13_12, IRQ2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_13_12, SCIFB1_TXD_D, SEL_SCIFB1_3),
+       PINMUX_IPSR_DATA(IP6_13_12, INTC_IRQ2_N),
+       PINMUX_IPSR_DATA(IP6_15_14, IRQ3),
+       PINMUX_IPSR_MODSEL_DATA(IP6_15_14, SCL4_C, SEL_IIC4_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_15_14, MSIOF2_TXD_E, SEL_SOF2_4),
+       PINMUX_IPSR_DATA(IP6_15_14, INTC_IRQ4_N),
+       PINMUX_IPSR_DATA(IP6_18_16, IRQ4),
+       PINMUX_IPSR_MODSEL_DATA(IP6_18_16, HRX1_C, SEL_HSCIF1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_18_16, SDA4_C, SEL_IIC4_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_18_16, MSIOF2_RXD_E, SEL_SOF2_4),
+       PINMUX_IPSR_DATA(IP6_18_16, INTC_IRQ4_N),
+       PINMUX_IPSR_DATA(IP6_20_19, IRQ5),
+       PINMUX_IPSR_MODSEL_DATA(IP6_20_19, HTX1_C, SEL_HSCIF1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_20_19, SCL1_E, SEL_IIC1_4),
+       PINMUX_IPSR_MODSEL_DATA(IP6_20_19, MSIOF2_SCK_E, SEL_SOF2_4),
+       PINMUX_IPSR_DATA(IP6_23_21, IRQ6),
+       PINMUX_IPSR_MODSEL_DATA(IP6_23_21, HSCK1_C, SEL_HSCIF1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_23_21, MSIOF1_SS2_B, SEL_SOF1_1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_23_21, SDA1_E, SEL_IIC1_4),
+       PINMUX_IPSR_MODSEL_DATA(IP6_23_21, MSIOF2_SYNC_E, SEL_SOF2_4),
+       PINMUX_IPSR_DATA(IP6_26_24, IRQ7),
+       PINMUX_IPSR_MODSEL_DATA(IP6_26_24, HCTS1_N_C, SEL_HSCIF1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_26_24, MSIOF1_TXD_B, SEL_SOF1_1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_26_24, GPS_CLK_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_26_24, GPS_CLK_D, SEL_GPS_3),
+       PINMUX_IPSR_DATA(IP6_29_27, IRQ8),
+       PINMUX_IPSR_MODSEL_DATA(IP6_29_27, HRTS1_N_C, SEL_HSCIF1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_29_27, MSIOF1_RXD_B, SEL_SOF1_1),
+       PINMUX_IPSR_MODSEL_DATA(IP6_29_27, GPS_SIGN_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP6_29_27, GPS_SIGN_D, SEL_GPS_3),
+
+       /* IPSR7 - 10 */
+
+       /* IPSR11 */
+       PINMUX_IPSR_DATA(IP11_2_0, VI0_R5),
+       PINMUX_IPSR_DATA(IP11_2_0, VI2_DATA6),
+       PINMUX_IPSR_MODSEL_DATA(IP11_2_0, GLO_SDATA_B, SEL_GPS_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_2_0, RX0_C, SEL_SCIF0_2),
+       PINMUX_IPSR_MODSEL_DATA(IP11_2_0, SDA1_D, SEL_IIC1_3),
+       PINMUX_IPSR_DATA(IP11_5_3, VI0_R6),
+       PINMUX_IPSR_DATA(IP11_5_3, VI2_DATA7),
+       PINMUX_IPSR_MODSEL_DATA(IP11_5_3, GLO_SS_B, SEL_GPS_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_5_3, TX1_C, SEL_SCIF1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP11_5_3, SCL4_B, SEL_IIC4_1),
+       PINMUX_IPSR_DATA(IP11_8_6, VI0_R7),
+       PINMUX_IPSR_MODSEL_DATA(IP11_8_6, GLO_RFON_B, SEL_GPS_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_8_6, RX1_C, SEL_SCIF1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP11_8_6, CAN0_RX_E, SEL_CAN0_4),
+       PINMUX_IPSR_MODSEL_DATA(IP11_8_6, SDA4_B, SEL_IIC4_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_8_6, HRX1_D, SEL_HSCIF1_3),
+       PINMUX_IPSR_MODSEL_DATA(IP11_8_6, SCIFB0_RXD_D, SEL_SCIFB_3),
+       PINMUX_IPSR_MODSEL_DATA(IP11_11_9, VI1_HSYNC_N, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_11_9, AVB_RXD0),
+       PINMUX_IPSR_MODSEL_DATA(IP11_11_9, TS_SDATA0_B, SEL_TSIF0_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_11_9, TX4_B, SEL_SCIF4_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_11_9, SCIFA4_TXD_B, SEL_SCIFA4_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_14_12, VI1_VSYNC_N, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_14_12, AVB_RXD1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_14_12, TS_SCK0_B, SEL_TSIF0_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_14_12, RX4_B, SEL_SCIF4_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_14_12, SCIFA4_RXD_B, SEL_SCIFA4_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_16_15, VI1_CLKENB, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_16_15, AVB_RXD2),
+       PINMUX_IPSR_MODSEL_DATA(IP11_16_15, TS_SDEN0_B, SEL_TSIF0_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_18_17, VI1_FIELD, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_18_17, AVB_RXD3),
+       PINMUX_IPSR_MODSEL_DATA(IP11_18_17, TS_SPSYNC0_B, SEL_TSIF0_1),
+       PINMUX_IPSR_MODSEL_DATA(IP11_19, VI1_CLK, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_19, AVB_RXD4),
+       PINMUX_IPSR_MODSEL_DATA(IP11_20, VI1_DATA0, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_20, AVB_RXD5),
+       PINMUX_IPSR_MODSEL_DATA(IP11_21, VI1_DATA1, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_21, AVB_RXD6),
+       PINMUX_IPSR_MODSEL_DATA(IP11_22, VI1_DATA2, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_22, AVB_RXD7),
+       PINMUX_IPSR_MODSEL_DATA(IP11_23, VI1_DATA3, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_23, AVB_RX_ER),
+       PINMUX_IPSR_MODSEL_DATA(IP11_24, VI1_DATA4, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_24, AVB_MDIO),
+       PINMUX_IPSR_MODSEL_DATA(IP11_25, VI1_DATA5, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_25, AVB_RX_DV),
+       PINMUX_IPSR_MODSEL_DATA(IP11_26, VI1_DATA6, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_26, AVB_MAGIC),
+       PINMUX_IPSR_MODSEL_DATA(IP11_27, VI1_DATA7, SEL_VI1_0),
+       PINMUX_IPSR_DATA(IP11_27, AVB_MDC),
+       PINMUX_IPSR_DATA(IP11_29_28, ETH_MDIO),
+       PINMUX_IPSR_DATA(IP11_29_28, AVB_RX_CLK),
+       PINMUX_IPSR_MODSEL_DATA(IP11_29_28, SCL2_C, SEL_IIC2_2),
+       PINMUX_IPSR_DATA(IP11_31_30, ETH_CRS_DV),
+       PINMUX_IPSR_DATA(IP11_31_30, AVB_LINK),
+       PINMUX_IPSR_MODSEL_DATA(IP11_31_30, SDA2_C, SEL_IIC2_2),
+
+       /* IPSR12 */
+       PINMUX_IPSR_DATA(IP12_1_0, ETH_RX_ER),
+       PINMUX_IPSR_DATA(IP12_1_0, AVB_CRS),
+       PINMUX_IPSR_MODSEL_DATA(IP12_1_0, SCL3, SEL_IIC3_0),
+       PINMUX_IPSR_MODSEL_DATA(IP12_1_0, SCL7, SEL_IIC7_0),
+       PINMUX_IPSR_DATA(IP12_3_2, ETH_RXD0),
+       PINMUX_IPSR_DATA(IP12_3_2, AVB_PHY_INT),
+       PINMUX_IPSR_MODSEL_DATA(IP12_3_2, SDA3, SEL_IIC3_0),
+       PINMUX_IPSR_MODSEL_DATA(IP12_3_2, SDA7, SEL_IIC7_0),
+       PINMUX_IPSR_DATA(IP12_6_4, ETH_RXD1),
+       PINMUX_IPSR_DATA(IP12_6_4, AVB_GTXREFCLK),
+       PINMUX_IPSR_MODSEL_DATA(IP12_6_4, CAN0_TX_C, SEL_CAN0_2),
+       PINMUX_IPSR_MODSEL_DATA(IP12_6_4, SCL2_D, SEL_IIC2_3),
+       PINMUX_IPSR_MODSEL_DATA(IP12_6_4, MSIOF1_RXD_E, SEL_SOF1_4),
+       PINMUX_IPSR_DATA(IP12_9_7, ETH_LINK),
+       PINMUX_IPSR_DATA(IP12_9_7, AVB_TXD0),
+       PINMUX_IPSR_MODSEL_DATA(IP12_9_7, CAN0_RX_C, SEL_CAN0_2),
+       PINMUX_IPSR_MODSEL_DATA(IP12_9_7, SDA2_D, SEL_IIC2_3),
+       PINMUX_IPSR_MODSEL_DATA(IP12_9_7, MSIOF1_SCK_E, SEL_SOF1_4),
+       PINMUX_IPSR_DATA(IP12_12_10, ETH_REFCLK),
+       PINMUX_IPSR_DATA(IP12_12_10, AVB_TXD1),
+       PINMUX_IPSR_MODSEL_DATA(IP12_12_10, SCIFA3_RXD_B, SEL_SCIFA3_1),
+       PINMUX_IPSR_MODSEL_DATA(IP12_12_10, CAN1_RX_C, SEL_CAN1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP12_12_10, MSIOF1_SYNC_E, SEL_SOF1_4),
+       PINMUX_IPSR_DATA(IP12_15_13, ETH_TXD1),
+       PINMUX_IPSR_DATA(IP12_15_13, AVB_TXD2),
+       PINMUX_IPSR_MODSEL_DATA(IP12_15_13, SCIFA3_TXD_B, SEL_SCIFA3_1),
+       PINMUX_IPSR_MODSEL_DATA(IP12_15_13, CAN1_TX_C, SEL_CAN1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP12_15_13, MSIOF1_TXD_E, SEL_SOF1_4),
+       PINMUX_IPSR_DATA(IP12_17_16, ETH_TX_EN),
+       PINMUX_IPSR_DATA(IP12_17_16, AVB_TXD3),
+       PINMUX_IPSR_MODSEL_DATA(IP12_17_16, TCLK1_B, SEL_TMU1_0),
+       PINMUX_IPSR_MODSEL_DATA(IP12_17_16, CAN_CLK_B, SEL_CANCLK_1),
+       PINMUX_IPSR_DATA(IP12_19_18, ETH_MAGIC),
+       PINMUX_IPSR_DATA(IP12_19_18, AVB_TXD4),
+       PINMUX_IPSR_MODSEL_DATA(IP12_19_18, IETX_C, SEL_IEB_2),
+       PINMUX_IPSR_DATA(IP12_21_20, ETH_TXD0),
+       PINMUX_IPSR_DATA(IP12_21_20, AVB_TXD5),
+       PINMUX_IPSR_MODSEL_DATA(IP12_21_20, IECLK_C, SEL_IEB_2),
+       PINMUX_IPSR_DATA(IP12_23_22, ETH_MDC),
+       PINMUX_IPSR_DATA(IP12_23_22, AVB_TXD6),
+       PINMUX_IPSR_MODSEL_DATA(IP12_23_22, IERX_C, SEL_IEB_2),
+       PINMUX_IPSR_MODSEL_DATA(IP12_26_24, STP_IVCXO27_0, SEL_SSP_0),
+       PINMUX_IPSR_DATA(IP12_26_24, AVB_TXD7),
+       PINMUX_IPSR_MODSEL_DATA(IP12_26_24, SCIFB2_TXD_D, SEL_SCIFB2_3),
+       PINMUX_IPSR_MODSEL_DATA(IP12_26_24, ADIDATA_B, SEL_RAD_1),
+       PINMUX_IPSR_MODSEL_DATA(IP12_26_24, MSIOF0_SYNC_C, SEL_SOF0_2),
+       PINMUX_IPSR_MODSEL_DATA(IP12_29_27, STP_ISCLK_0, SEL_SSP_0),
+       PINMUX_IPSR_DATA(IP12_29_27, AVB_TX_EN),
+       PINMUX_IPSR_MODSEL_DATA(IP12_29_27, SCIFB2_RXD_D, SEL_SCIFB2_3),
+       PINMUX_IPSR_MODSEL_DATA(IP12_29_27, ADICS_SAMP_B, SEL_RAD_1),
+       PINMUX_IPSR_MODSEL_DATA(IP12_29_27, MSIOF0_SCK_C, SEL_SOF0_2),
+
+       /* IPSR13 */
+       PINMUX_IPSR_MODSEL_DATA(IP13_2_0, STP_ISD_0, SEL_SSP_0),
+       PINMUX_IPSR_DATA(IP13_2_0, AVB_TX_ER),
+       PINMUX_IPSR_MODSEL_DATA(IP13_2_0, SCIFB2_SCK_C, SEL_SCIFB2_2),
+       PINMUX_IPSR_MODSEL_DATA(IP13_2_0, ADICLK_B, SEL_RAD_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_2_0, MSIOF0_SS1_C, SEL_SOF0_2),
+       PINMUX_IPSR_MODSEL_DATA(IP13_4_3, STP_ISEN_0, SEL_SSP_0),
+       PINMUX_IPSR_DATA(IP13_4_3, AVB_TX_CLK),
+       PINMUX_IPSR_MODSEL_DATA(IP13_4_3, ADICHS0_B, SEL_RAD_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_4_3, MSIOF0_SS2_C, SEL_SOF0_2),
+       PINMUX_IPSR_MODSEL_DATA(IP13_6_5, STP_ISSYNC_0, SEL_SSP_0),
+       PINMUX_IPSR_DATA(IP13_6_5, AVB_COL),
+       PINMUX_IPSR_MODSEL_DATA(IP13_6_5, ADICHS1_B, SEL_RAD_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_6_5, MSIOF0_RXD_C, SEL_SOF0_2),
+       PINMUX_IPSR_MODSEL_DATA(IP13_9_7, STP_OPWM_0, SEL_SSP_0),
+       PINMUX_IPSR_DATA(IP13_9_7, AVB_GTX_CLK),
+       PINMUX_IPSR_DATA(IP13_9_7, PWM0_B),
+       PINMUX_IPSR_MODSEL_DATA(IP13_9_7, ADICHS2_B, SEL_RAD_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_9_7, MSIOF0_TXD_C, SEL_SOF0_2),
+       PINMUX_IPSR_DATA(IP13_10, SD0_CLK),
+       PINMUX_IPSR_MODSEL_DATA(IP13_10, SPCLK_B, SEL_QSP_1),
+       PINMUX_IPSR_DATA(IP13_11, SD0_CMD),
+       PINMUX_IPSR_MODSEL_DATA(IP13_11, MOSI_IO0_B, SEL_QSP_1),
+       PINMUX_IPSR_DATA(IP13_12, SD0_DATA0),
+       PINMUX_IPSR_MODSEL_DATA(IP13_12, MISO_IO1_B, SEL_QSP_1),
+       PINMUX_IPSR_DATA(IP13_13, SD0_DATA1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_13, IO2_B, SEL_QSP_1),
+       PINMUX_IPSR_DATA(IP13_14, SD0_DATA2),
+       PINMUX_IPSR_MODSEL_DATA(IP13_14, IO3_B, SEL_QSP_1),
+       PINMUX_IPSR_DATA(IP13_15, SD0_DATA3),
+       PINMUX_IPSR_MODSEL_DATA(IP13_15, SSL_B, SEL_QSP_1),
+       PINMUX_IPSR_DATA(IP13_18_16, SD0_CD),
+       PINMUX_IPSR_MODSEL_DATA(IP13_18_16, MMC_D6_B, SEL_MMC_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_18_16, SIM0_RST_B, SEL_SIM_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_18_16, CAN0_RX_F, SEL_CAN0_5),
+       PINMUX_IPSR_MODSEL_DATA(IP13_18_16, SCIFA5_TXD_B, SEL_SCIFA5_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_18_16, TX3_C, SEL_SCIF3_2),
+       PINMUX_IPSR_DATA(IP13_21_19, SD0_WP),
+       PINMUX_IPSR_MODSEL_DATA(IP13_21_19, MMC_D7_B, SEL_MMC_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_21_19, SIM0_D_B, SEL_SIM_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_21_19, CAN0_TX_F, SEL_CAN0_5),
+       PINMUX_IPSR_MODSEL_DATA(IP13_21_19, SCIFA5_RXD_B, SEL_SCIFA5_1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_21_19, RX3_C, SEL_SCIF3_2),
+       PINMUX_IPSR_DATA(IP13_22, SD1_CMD),
+       PINMUX_IPSR_MODSEL_DATA(IP13_22, REMOCON_B, SEL_RCN_1),
+       PINMUX_IPSR_DATA(IP13_24_23, SD1_DATA0),
+       PINMUX_IPSR_MODSEL_DATA(IP13_24_23, SPEEDIN_B, SEL_RSP_1),
+       PINMUX_IPSR_DATA(IP13_25, SD1_DATA1),
+       PINMUX_IPSR_MODSEL_DATA(IP13_25, IETX_B, SEL_IEB_1),
+       PINMUX_IPSR_DATA(IP13_26, SD1_DATA2),
+       PINMUX_IPSR_MODSEL_DATA(IP13_26, IECLK_B, SEL_IEB_1),
+       PINMUX_IPSR_DATA(IP13_27, SD1_DATA3),
+       PINMUX_IPSR_MODSEL_DATA(IP13_27, IERX_B, SEL_IEB_1),
+       PINMUX_IPSR_DATA(IP13_30_28, SD1_CD),
+       PINMUX_IPSR_DATA(IP13_30_28, PWM0),
+       PINMUX_IPSR_DATA(IP13_30_28, TPU_TO0),
+       PINMUX_IPSR_MODSEL_DATA(IP13_30_28, SCL1_C, SEL_IIC1_2),
+
+       /* IPSR14 */
+       PINMUX_IPSR_DATA(IP14_1_0, SD1_WP),
+       PINMUX_IPSR_DATA(IP14_1_0, PWM1_B),
+       PINMUX_IPSR_MODSEL_DATA(IP14_1_0, SDA1_C, SEL_IIC1_2),
+       PINMUX_IPSR_DATA(IP14_2, SD2_CLK),
+       PINMUX_IPSR_DATA(IP14_2, MMC_CLK),
+       PINMUX_IPSR_DATA(IP14_3, SD2_CMD),
+       PINMUX_IPSR_DATA(IP14_3, MMC_CMD),
+       PINMUX_IPSR_DATA(IP14_4, SD2_DATA0),
+       PINMUX_IPSR_DATA(IP14_4, MMC_D0),
+       PINMUX_IPSR_DATA(IP14_5, SD2_DATA1),
+       PINMUX_IPSR_DATA(IP14_5, MMC_D1),
+       PINMUX_IPSR_DATA(IP14_6, SD2_DATA2),
+       PINMUX_IPSR_DATA(IP14_6, MMC_D2),
+       PINMUX_IPSR_DATA(IP14_7, SD2_DATA3),
+       PINMUX_IPSR_DATA(IP14_7, MMC_D3),
+       PINMUX_IPSR_DATA(IP14_10_8, SD2_CD),
+       PINMUX_IPSR_DATA(IP14_10_8, MMC_D4),
+       PINMUX_IPSR_MODSEL_DATA(IP14_10_8, SCL8_C, SEL_IIC8_2),
+       PINMUX_IPSR_MODSEL_DATA(IP14_10_8, TX5_B, SEL_SCIF5_1),
+       PINMUX_IPSR_MODSEL_DATA(IP14_10_8, SCIFA5_TXD_C, SEL_SCIFA5_2),
+       PINMUX_IPSR_DATA(IP14_13_11, SD2_WP),
+       PINMUX_IPSR_DATA(IP14_13_11, MMC_D5),
+       PINMUX_IPSR_MODSEL_DATA(IP14_13_11, SDA8_C, SEL_IIC8_2),
+       PINMUX_IPSR_MODSEL_DATA(IP14_13_11, RX5_B, SEL_SCIF5_1),
+       PINMUX_IPSR_MODSEL_DATA(IP14_13_11, SCIFA5_RXD_C, SEL_SCIFA5_2),
+       PINMUX_IPSR_MODSEL_DATA(IP14_16_14, MSIOF0_SCK, SEL_SOF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_16_14, RX2_C, SEL_SCIF2_2),
+       PINMUX_IPSR_MODSEL_DATA(IP14_16_14, ADIDATA, SEL_RAD_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_16_14, VI1_CLK_C, SEL_VI1_2),
+       PINMUX_IPSR_DATA(IP14_16_14, VI1_G0_B),
+       PINMUX_IPSR_MODSEL_DATA(IP14_19_17, MSIOF0_SYNC, SEL_SOF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_19_17, TX2_C, SEL_SCIF2_2),
+       PINMUX_IPSR_MODSEL_DATA(IP14_19_17, ADICS_SAMP, SEL_RAD_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_19_17, VI1_CLKENB_C, SEL_VI1_2),
+       PINMUX_IPSR_DATA(IP14_19_17, VI1_G1_B),
+       PINMUX_IPSR_MODSEL_DATA(IP14_22_20, MSIOF0_TXD, SEL_SOF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_22_20, ADICLK, SEL_RAD_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_22_20, VI1_FIELD_C, SEL_VI1_2),
+       PINMUX_IPSR_DATA(IP14_22_20, VI1_G2_B),
+       PINMUX_IPSR_MODSEL_DATA(IP14_25_23, MSIOF0_RXD, SEL_SOF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_25_23, ADICHS0, SEL_RAD_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_25_23, VI1_DATA0_C, SEL_VI1_2),
+       PINMUX_IPSR_DATA(IP14_25_23, VI1_G3_B),
+       PINMUX_IPSR_MODSEL_DATA(IP14_28_26, MSIOF0_SS1, SEL_SOF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_28_26, MMC_D6, SEL_MMC_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_28_26, ADICHS1, SEL_RAD_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_28_26, TX0_E, SEL_SCIF0_4),
+       PINMUX_IPSR_MODSEL_DATA(IP14_28_26, VI1_HSYNC_N_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP14_28_26, SCL7_C, SEL_IIC7_2),
+       PINMUX_IPSR_DATA(IP14_28_26, VI1_G4_B),
+       PINMUX_IPSR_MODSEL_DATA(IP14_31_29, MSIOF0_SS2, SEL_SOF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_31_29, MMC_D7, SEL_MMC_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_31_29, ADICHS2, SEL_RAD_0),
+       PINMUX_IPSR_MODSEL_DATA(IP14_31_29, RX0_E, SEL_SCIF0_4),
+       PINMUX_IPSR_MODSEL_DATA(IP14_31_29, VI1_VSYNC_N_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP14_31_29, SDA7_C, SEL_IIC7_2),
+       PINMUX_IPSR_DATA(IP14_31_29, VI1_G5_B),
+
+       /* IPSR15 */
+       PINMUX_IPSR_MODSEL_DATA(IP15_1_0, SIM0_RST, SEL_SIM_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_1_0, IETX, SEL_IEB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_1_0, CAN1_TX_D, SEL_CAN1_3),
+       PINMUX_IPSR_DATA(IP15_3_2, SIM0_CLK),
+       PINMUX_IPSR_MODSEL_DATA(IP15_3_2, IECLK, SEL_IEB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_3_2, CAN_CLK_C, SEL_CANCLK_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_5_4, SIM0_D, SEL_SIM_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_5_4, IERX, SEL_IEB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_5_4, CAN1_RX_D, SEL_CAN1_3),
+       PINMUX_IPSR_MODSEL_DATA(IP15_8_6, GPS_CLK, SEL_GPS_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_8_6, DU1_DOTCLKIN_C, SEL_DIS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_8_6, AUDIO_CLKB_B, SEL_ADG_1),
+       PINMUX_IPSR_DATA(IP15_8_6, PWM5_B),
+       PINMUX_IPSR_MODSEL_DATA(IP15_8_6, SCIFA3_TXD_C, SEL_SCIFA3_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_11_9, GPS_SIGN, SEL_GPS_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_11_9, TX4_C, SEL_SCIF4_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_11_9, SCIFA4_TXD_C, SEL_SCIFA4_2),
+       PINMUX_IPSR_DATA(IP15_11_9, PWM5),
+       PINMUX_IPSR_DATA(IP15_11_9, VI1_G6_B),
+       PINMUX_IPSR_MODSEL_DATA(IP15_11_9, SCIFA3_RXD_C, SEL_SCIFA3_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_14_12, GPS_MAG, SEL_GPS_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_14_12, RX4_C, SEL_SCIF4_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_14_12, SCIFA4_RXD_C, SEL_SCIFA4_2),
+       PINMUX_IPSR_DATA(IP15_14_12, PWM6),
+       PINMUX_IPSR_DATA(IP15_14_12, VI1_G7_B),
+       PINMUX_IPSR_MODSEL_DATA(IP15_14_12, SCIFA3_SCK_C, SEL_SCIFA3_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_17_15, HCTS0_N, SEL_HSCIF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_17_15, SCIFB0_CTS_N, SEL_SCIFB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_17_15, GLO_I0_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_17_15, TCLK1, SEL_TMU1_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_17_15, VI1_DATA1_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_20_18, HRTS0_N, SEL_HSCIF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_20_18, SCIFB0_RTS_N, SEL_SCIFB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_20_18, GLO_I1_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_20_18, VI1_DATA2_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_23_21, HSCK0, SEL_HSCIF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_23_21, SCIFB0_SCK, SEL_SCIFB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_23_21, GLO_Q0_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_23_21, CAN_CLK, SEL_CANCLK_0),
+       PINMUX_IPSR_DATA(IP15_23_21, TCLK2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_23_21, VI1_DATA3_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_26_24, HRX0, SEL_HSCIF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_26_24, SCIFB0_RXD, SEL_SCIFB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_26_24, GLO_Q1_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_26_24, CAN0_RX_B, SEL_CAN0_1),
+       PINMUX_IPSR_MODSEL_DATA(IP15_26_24, VI1_DATA4_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_29_27, HTX0, SEL_HSCIF0_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_29_27, SCIFB0_TXD, SEL_SCIFB_0),
+       PINMUX_IPSR_MODSEL_DATA(IP15_29_27, GLO_SCLK_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP15_29_27, CAN0_TX_B, SEL_CAN0_1),
+       PINMUX_IPSR_MODSEL_DATA(IP15_29_27, VI1_DATA5_C, SEL_VI1_2),
+
+       /* IPSR16 */
+       PINMUX_IPSR_MODSEL_DATA(IP16_2_0, HRX1, SEL_HSCIF1_0),
+       PINMUX_IPSR_MODSEL_DATA(IP16_2_0, SCIFB1_RXD, SEL_SCIFB1_0),
+       PINMUX_IPSR_DATA(IP16_2_0, VI1_R0_B),
+       PINMUX_IPSR_MODSEL_DATA(IP16_2_0, GLO_SDATA_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP16_2_0, VI1_DATA6_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP16_5_3, HTX1, SEL_HSCIF1_0),
+       PINMUX_IPSR_MODSEL_DATA(IP16_5_3, SCIFB1_TXD, SEL_SCIFB1_0),
+       PINMUX_IPSR_DATA(IP16_5_3, VI1_R1_B),
+       PINMUX_IPSR_MODSEL_DATA(IP16_5_3, GLO_SS_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP16_5_3, VI1_DATA7_C, SEL_VI1_2),
+       PINMUX_IPSR_MODSEL_DATA(IP16_7_6, HSCK1, SEL_HSCIF1_0),
+       PINMUX_IPSR_MODSEL_DATA(IP16_7_6, SCIFB1_SCK, SEL_SCIFB1_0),
+       PINMUX_IPSR_DATA(IP16_7_6, MLB_CK),
+       PINMUX_IPSR_MODSEL_DATA(IP16_7_6, GLO_RFON_C, SEL_GPS_2),
+       PINMUX_IPSR_MODSEL_DATA(IP16_9_8, HCTS1_N, SEL_HSCIF1_0),
+       PINMUX_IPSR_DATA(IP16_9_8, SCIFB1_CTS_N),
+       PINMUX_IPSR_DATA(IP16_9_8, MLB_SIG),
+       PINMUX_IPSR_MODSEL_DATA(IP16_9_8, CAN1_TX_B, SEL_CAN1_1),
+       PINMUX_IPSR_MODSEL_DATA(IP16_11_10, HRTS1_N, SEL_HSCIF1_0),
+       PINMUX_IPSR_DATA(IP16_11_10, SCIFB1_RTS_N),
+       PINMUX_IPSR_DATA(IP16_11_10, MLB_DAT),
+       PINMUX_IPSR_MODSEL_DATA(IP16_11_10, CAN1_RX_B, SEL_CAN1_1),
+};
+
+static struct pinmux_gpio pinmux_gpios[] = {
+       PINMUX_GPIO_GP_ALL(),
+
+       GPIO_FN(EX_CS0_N), GPIO_FN(RD_N), GPIO_FN(AUDIO_CLKA),
+       GPIO_FN(VI0_CLK), GPIO_FN(VI0_DATA0_VI0_B0),
+       GPIO_FN(VI0_DATA0_VI0_B1), GPIO_FN(VI0_DATA0_VI0_B2),
+       GPIO_FN(VI0_DATA0_VI0_B4), GPIO_FN(VI0_DATA0_VI0_B5),
+       GPIO_FN(VI0_DATA0_VI0_B6), GPIO_FN(VI0_DATA0_VI0_B7),
+       GPIO_FN(USB0_PWEN), GPIO_FN(USB0_OVC), GPIO_FN(USB1_PWEN),
+
+       /* IPSR0 - 5 */
+
+       /* IPSR6 */
+       GPIO_FN(AUDIO_CLKB), GPIO_FN(STP_OPWM_0_B), GPIO_FN(MSIOF1_SCK_B),
+       GPIO_FN(SCIF_CLK), GPIO_FN(BPFCLK_E),
+       GPIO_FN(AUDIO_CLKC), GPIO_FN(SCIFB0_SCK_C),
+       GPIO_FN(MSIOF1_SYNC_B), GPIO_FN(RX2),
+       GPIO_FN(SCIFA2_RXD), GPIO_FN(FMIN_E),
+       GPIO_FN(AUDIO_CLKOUT), GPIO_FN(MSIOF1_SS1_B),
+       GPIO_FN(TX2), GPIO_FN(SCIFA2_TXD),
+       GPIO_FN(IRQ0), GPIO_FN(SCIFB1_RXD_D), GPIO_FN(INTC_IRQ0_N),
+       GPIO_FN(IRQ1), GPIO_FN(SCIFB1_SCK_C), GPIO_FN(INTC_IRQ1_N),
+       GPIO_FN(IRQ2), GPIO_FN(SCIFB1_TXD_D), GPIO_FN(INTC_IRQ2_N),
+       GPIO_FN(IRQ3), GPIO_FN(SCL4_C),
+       GPIO_FN(MSIOF2_TXD_E), GPIO_FN(INTC_IRQ3_N),
+       GPIO_FN(IRQ4), GPIO_FN(HRX1_C), GPIO_FN(SDA4_C),
+       GPIO_FN(MSIOF2_RXD_E), GPIO_FN(INTC_IRQ4_N),
+       GPIO_FN(IRQ5), GPIO_FN(HTX1_C), GPIO_FN(SCL1_E), GPIO_FN(MSIOF2_SCK_E),
+       GPIO_FN(IRQ6), GPIO_FN(HSCK1_C), GPIO_FN(MSIOF1_SS2_B),
+       GPIO_FN(SDA1_E), GPIO_FN(MSIOF2_SYNC_E),
+       GPIO_FN(IRQ7), GPIO_FN(HCTS1_N_C), GPIO_FN(MSIOF1_TXD_B),
+       GPIO_FN(GPS_CLK_C), GPIO_FN(GPS_CLK_D),
+       GPIO_FN(IRQ8), GPIO_FN(HRTS1_N_C), GPIO_FN(MSIOF1_RXD_B),
+       GPIO_FN(GPS_SIGN_C), GPIO_FN(GPS_SIGN_D),
+
+       /* IPSR7 - 10 */
+
+       /* IPSR11 */
+       GPIO_FN(VI0_R5), GPIO_FN(VI2_DATA6), GPIO_FN(GLO_SDATA_B),
+       GPIO_FN(RX0_C), GPIO_FN(SDA1_D),
+       GPIO_FN(VI0_R6), GPIO_FN(VI2_DATA7),
+       GPIO_FN(GLO_SS_B), GPIO_FN(TX1_C), GPIO_FN(SCL4_B),
+       GPIO_FN(VI0_R7), GPIO_FN(GLO_RFON_B),
+       GPIO_FN(RX1_C), GPIO_FN(CAN0_RX_E),
+       GPIO_FN(SDA4_B), GPIO_FN(HRX1_D), GPIO_FN(SCIFB0_RXD_D),
+       GPIO_FN(VI1_HSYNC_N), GPIO_FN(AVB_RXD0), GPIO_FN(TS_SDATA0_B),
+       GPIO_FN(TX4_B), GPIO_FN(SCIFA4_TXD_B),
+       GPIO_FN(VI1_VSYNC_N), GPIO_FN(AVB_RXD1), GPIO_FN(TS_SCK0_B),
+       GPIO_FN(RX4_B), GPIO_FN(SCIFA4_RXD_B),
+       GPIO_FN(VI1_CLKENB), GPIO_FN(AVB_RXD2), GPIO_FN(TS_SDEN0_B),
+       GPIO_FN(VI1_FIELD), GPIO_FN(AVB_RXD3), GPIO_FN(TS_SPSYNC0_B),
+       GPIO_FN(VI1_CLK), GPIO_FN(AVB_RXD4),
+       GPIO_FN(VI1_DATA0), GPIO_FN(AVB_RXD5),
+       GPIO_FN(VI1_DATA1), GPIO_FN(AVB_RXD6),
+       GPIO_FN(VI1_DATA2), GPIO_FN(AVB_RXD7),
+       GPIO_FN(VI1_DATA3), GPIO_FN(AVB_RX_ER),
+       GPIO_FN(VI1_DATA4), GPIO_FN(AVB_MDIO),
+       GPIO_FN(VI1_DATA5), GPIO_FN(AVB_RX_DV),
+       GPIO_FN(VI1_DATA6), GPIO_FN(AVB_MAGIC),
+       GPIO_FN(VI1_DATA7), GPIO_FN(AVB_MDC),
+       GPIO_FN(ETH_MDIO), GPIO_FN(AVB_RX_CLK), GPIO_FN(SCL2_C),
+       GPIO_FN(ETH_CRS_DV), GPIO_FN(AVB_LINK), GPIO_FN(SDA2_C),
+
+       /* IPSR12 */
+       GPIO_FN(ETH_RX_ER), GPIO_FN(AVB_CRS), GPIO_FN(SCL3), GPIO_FN(SCL7),
+       GPIO_FN(ETH_RXD0), GPIO_FN(AVB_PHY_INT), GPIO_FN(SDA3), GPIO_FN(SDA7),
+       GPIO_FN(ETH_RXD1), GPIO_FN(AVB_GTXREFCLK), GPIO_FN(CAN0_TX_C),
+       GPIO_FN(SCL2_D), GPIO_FN(MSIOF1_RXD_E),
+       GPIO_FN(ETH_LINK), GPIO_FN(AVB_TXD0), GPIO_FN(CAN0_RX_C),
+       GPIO_FN(SDA2_D), GPIO_FN(MSIOF1_SCK_E),
+       GPIO_FN(ETH_REFCLK), GPIO_FN(AVB_TXD1), GPIO_FN(SCIFA3_RXD_B),
+       GPIO_FN(CAN1_RX_C), GPIO_FN(MSIOF1_SYNC_E),
+       GPIO_FN(ETH_TXD1), GPIO_FN(AVB_TXD2), GPIO_FN(SCIFA3_TXD_B),
+       GPIO_FN(CAN1_TX_C), GPIO_FN(MSIOF1_TXD_E),
+       GPIO_FN(ETH_TX_EN), GPIO_FN(AVB_TXD3),
+       GPIO_FN(TCLK1_B), GPIO_FN(CAN_CLK_B),
+       GPIO_FN(ETH_MAGIC), GPIO_FN(AVB_TXD4), GPIO_FN(IETX_C),
+       GPIO_FN(ETH_TXD0), GPIO_FN(AVB_TXD5), GPIO_FN(IECLK_C),
+       GPIO_FN(ETH_MDC), GPIO_FN(AVB_TXD6), GPIO_FN(IERX_C),
+       GPIO_FN(STP_IVCXO27_0), GPIO_FN(AVB_TXD7), GPIO_FN(SCIFB2_TXD_D),
+       GPIO_FN(ADIDATA_B), GPIO_FN(MSIOF0_SYNC_C),
+       GPIO_FN(STP_ISCLK_0), GPIO_FN(AVB_TX_EN), GPIO_FN(SCIFB2_RXD_D),
+       GPIO_FN(ADICS_SAMP_B), GPIO_FN(MSIOF0_SCK_C),
+
+       /* IPSR13 */
+       GPIO_FN(STP_ISD_0), GPIO_FN(AVB_TX_ER), GPIO_FN(SCIFB2_SCK_C),
+       GPIO_FN(ADICLK_B), GPIO_FN(MSIOF0_SS1_C),
+       GPIO_FN(STP_ISEN_0), GPIO_FN(AVB_TX_CLK),
+       GPIO_FN(ADICHS0_B), GPIO_FN(MSIOF0_SS2_C),
+       GPIO_FN(STP_ISSYNC_0), GPIO_FN(AVB_COL),
+       GPIO_FN(ADICHS1_B), GPIO_FN(MSIOF0_RXD_C),
+       GPIO_FN(STP_OPWM_0), GPIO_FN(AVB_GTX_CLK), GPIO_FN(PWM0_B),
+       GPIO_FN(ADICHS2_B), GPIO_FN(MSIOF0_TXD_C),
+       GPIO_FN(SD0_CLK), GPIO_FN(SPCLK_B),
+       GPIO_FN(SD0_CMD), GPIO_FN(MOSI_IO0_B),
+       GPIO_FN(SD0_DATA0), GPIO_FN(MISO_IO1_B),
+       GPIO_FN(SD0_DATA1), GPIO_FN(IO2_B),
+       GPIO_FN(SD0_DATA2), GPIO_FN(IO3_B), GPIO_FN(SD0_DATA3), GPIO_FN(SSL_B),
+       GPIO_FN(SD0_CD), GPIO_FN(MMC_D6_B),
+       GPIO_FN(SIM0_RST_B), GPIO_FN(CAN0_RX_F),
+       GPIO_FN(SCIFA5_TXD_B), GPIO_FN(TX3_C),
+       GPIO_FN(SD0_WP), GPIO_FN(MMC_D7_B),
+       GPIO_FN(SIM0_D_B), GPIO_FN(CAN0_TX_F),
+       GPIO_FN(SCIFA5_RXD_B), GPIO_FN(RX3_C),
+       GPIO_FN(SD1_CMD), GPIO_FN(REMOCON_B),
+       GPIO_FN(SD1_DATA0), GPIO_FN(SPEEDIN_B),
+       GPIO_FN(SD1_DATA1), GPIO_FN(IETX_B),
+       GPIO_FN(SD1_DATA2), GPIO_FN(IECLK_B),
+       GPIO_FN(SD1_DATA3), GPIO_FN(IERX_B),
+       GPIO_FN(SD1_CD), GPIO_FN(PWM0), GPIO_FN(TPU_TO0), GPIO_FN(SCL1_C),
+
+       /* IPSR14 */
+       GPIO_FN(SD1_WP), GPIO_FN(PWM1_B), GPIO_FN(SDA1_C),
+       GPIO_FN(SD2_CLK), GPIO_FN(MMC_CLK), GPIO_FN(SD2_CMD), GPIO_FN(MMC_CMD),
+       GPIO_FN(SD2_DATA0), GPIO_FN(MMC_D0),
+       GPIO_FN(SD2_DATA1), GPIO_FN(MMC_D1),
+       GPIO_FN(SD2_DATA2), GPIO_FN(MMC_D2),
+       GPIO_FN(SD2_DATA3), GPIO_FN(MMC_D3),
+       GPIO_FN(SD2_CD), GPIO_FN(MMC_D4), GPIO_FN(SCL8_C),
+       GPIO_FN(TX5_B), GPIO_FN(SCIFA5_TXD_C),
+       GPIO_FN(SD2_WP), GPIO_FN(MMC_D5), GPIO_FN(SDA8_C),
+       GPIO_FN(RX5_B), GPIO_FN(SCIFA5_RXD_C),
+       GPIO_FN(MSIOF0_SCK), GPIO_FN(RX2_C), GPIO_FN(ADIDATA),
+       GPIO_FN(VI1_CLK_C), GPIO_FN(VI1_G0_B),
+       GPIO_FN(MSIOF0_SYNC), GPIO_FN(TX2_C), GPIO_FN(ADICS_SAMP),
+       GPIO_FN(VI1_CLKENB_C), GPIO_FN(VI1_G1_B),
+       GPIO_FN(MSIOF0_TXD), GPIO_FN(ADICLK),
+       GPIO_FN(VI1_FIELD_C), GPIO_FN(VI1_G2_B),
+       GPIO_FN(MSIOF0_RXD), GPIO_FN(ADICHS0),
+       GPIO_FN(VI1_DATA0_C), GPIO_FN(VI1_G3_B),
+       GPIO_FN(MSIOF0_SS1), GPIO_FN(MMC_D6), GPIO_FN(ADICHS1), GPIO_FN(TX0_E),
+       GPIO_FN(VI1_HSYNC_N_C), GPIO_FN(SCL7_C), GPIO_FN(VI1_G4_B),
+       GPIO_FN(MSIOF0_SS2), GPIO_FN(MMC_D7), GPIO_FN(ADICHS2), GPIO_FN(RX0_E),
+       GPIO_FN(VI1_VSYNC_N_C), GPIO_FN(SDA7_C), GPIO_FN(VI1_G5_B),
+
+       /* IPSR15 */
+       GPIO_FN(SIM0_RST), GPIO_FN(IETX), GPIO_FN(CAN1_TX_D),
+       GPIO_FN(SIM0_CLK), GPIO_FN(IECLK), GPIO_FN(CAN_CLK_C),
+       GPIO_FN(SIM0_D), GPIO_FN(IERX), GPIO_FN(CAN1_RX_D),
+       GPIO_FN(GPS_CLK), GPIO_FN(DU1_DOTCLKIN_C), GPIO_FN(AUDIO_CLKB_B),
+       GPIO_FN(PWM5_B), GPIO_FN(SCIFA3_TXD_C),
+       GPIO_FN(GPS_SIGN), GPIO_FN(TX4_C),
+       GPIO_FN(SCIFA4_TXD_C), GPIO_FN(PWM5),
+       GPIO_FN(VI1_G6_B), GPIO_FN(SCIFA3_RXD_C),
+       GPIO_FN(GPS_MAG), GPIO_FN(RX4_C), GPIO_FN(SCIFA4_RXD_C), GPIO_FN(PWM6),
+       GPIO_FN(VI1_G7_B), GPIO_FN(SCIFA3_SCK_C),
+       GPIO_FN(HCTS0_N), GPIO_FN(SCIFB0_CTS_N), GPIO_FN(GLO_I0_C),
+       GPIO_FN(TCLK1), GPIO_FN(VI1_DATA1_C),
+       GPIO_FN(HRTS0_N), GPIO_FN(SCIFB0_RTS_N),
+       GPIO_FN(GLO_I1_C), GPIO_FN(VI1_DATA2_C),
+       GPIO_FN(HSCK0), GPIO_FN(SCIFB0_SCK),
+       GPIO_FN(GLO_Q0_C), GPIO_FN(CAN_CLK),
+       GPIO_FN(TCLK2), GPIO_FN(VI1_DATA3_C),
+       GPIO_FN(HRX0), GPIO_FN(SCIFB0_RXD), GPIO_FN(GLO_Q1_C),
+       GPIO_FN(CAN0_RX_B), GPIO_FN(VI1_DATA4_C),
+       GPIO_FN(HTX0), GPIO_FN(SCIFB0_TXD), GPIO_FN(GLO_SCLK_C),
+       GPIO_FN(CAN0_TX_B), GPIO_FN(VI1_DATA5_C),
+
+       /* IPSR16 */
+       GPIO_FN(HRX1), GPIO_FN(SCIFB1_RXD), GPIO_FN(VI1_R0_B),
+       GPIO_FN(GLO_SDATA_C), GPIO_FN(VI1_DATA6_C),
+       GPIO_FN(HTX1), GPIO_FN(SCIFB1_TXD), GPIO_FN(VI1_R1_B),
+       GPIO_FN(GLO_SS_C), GPIO_FN(VI1_DATA7_C),
+       GPIO_FN(HSCK1), GPIO_FN(SCIFB1_SCK),
+       GPIO_FN(MLB_CK), GPIO_FN(GLO_RFON_C),
+       GPIO_FN(HCTS1_N), GPIO_FN(SCIFB1_CTS_N),
+       GPIO_FN(MLB_SIG), GPIO_FN(CAN1_TX_B),
+       GPIO_FN(HRTS1_N), GPIO_FN(SCIFB1_RTS_N),
+       GPIO_FN(MLB_DAT), GPIO_FN(CAN1_RX_B),
+};
+
+static struct pinmux_cfg_reg pinmux_config_regs[] = {
+       { PINMUX_CFG_REG("GPSR0", 0xE6060004, 32, 1) {
+               GP_0_31_FN, FN_IP1_22_20,
+               GP_0_30_FN, FN_IP1_19_17,
+               GP_0_29_FN, FN_IP1_16_14,
+               GP_0_28_FN, FN_IP1_13_11,
+               GP_0_27_FN, FN_IP1_10_8,
+               GP_0_26_FN, FN_IP1_7_6,
+               GP_0_25_FN, FN_IP1_5_4,
+               GP_0_24_FN, FN_IP1_3_2,
+               GP_0_23_FN, FN_IP1_1_0,
+               GP_0_22_FN, FN_IP0_30_29,
+               GP_0_21_FN, FN_IP0_28_27,
+               GP_0_20_FN, FN_IP0_26_25,
+               GP_0_19_FN, FN_IP0_24_23,
+               GP_0_18_FN, FN_IP0_22_21,
+               GP_0_17_FN, FN_IP0_20_19,
+               GP_0_16_FN, FN_IP0_18_16,
+               GP_0_15_FN, FN_IP0_15,
+               GP_0_14_FN, FN_IP0_14,
+               GP_0_13_FN, FN_IP0_13,
+               GP_0_12_FN, FN_IP0_12,
+               GP_0_11_FN, FN_IP0_11,
+               GP_0_10_FN, FN_IP0_10,
+               GP_0_9_FN, FN_IP0_9,
+               GP_0_8_FN, FN_IP0_8,
+               GP_0_7_FN, FN_IP0_7,
+               GP_0_6_FN, FN_IP0_6,
+               GP_0_5_FN, FN_IP0_5,
+               GP_0_4_FN, FN_IP0_4,
+               GP_0_3_FN, FN_IP0_3,
+               GP_0_2_FN, FN_IP0_2,
+               GP_0_1_FN, FN_IP0_1,
+               GP_0_0_FN, FN_IP0_0, }
+       },
+       { PINMUX_CFG_REG("GPSR1", 0xE6060008, 32, 1) {
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               GP_1_25_FN, FN_IP3_21_20,
+               GP_1_24_FN, FN_IP3_19_18,
+               GP_1_23_FN, FN_IP3_17_16,
+               GP_1_22_FN, FN_IP3_15_14,
+               GP_1_21_FN, FN_IP3_13_12,
+               GP_1_20_FN, FN_IP3_11_9,
+               GP_1_19_FN, FN_RD_N,
+               GP_1_18_FN, FN_IP3_8_6,
+               GP_1_17_FN, FN_IP3_5_3,
+               GP_1_16_FN, FN_IP3_2_0,
+               GP_1_15_FN, FN_IP2_29_27,
+               GP_1_14_FN, FN_IP2_26_25,
+               GP_1_13_FN, FN_IP2_24_23,
+               GP_1_12_FN, FN_EX_CS0_N,
+               GP_1_11_FN, FN_IP2_22_21,
+               GP_1_10_FN, FN_IP2_20_19,
+               GP_1_9_FN, FN_IP2_18_16,
+               GP_1_8_FN, FN_IP2_15_13,
+               GP_1_7_FN, FN_IP2_12_10,
+               GP_1_6_FN, FN_IP2_9_7,
+               GP_1_5_FN, FN_IP2_6_5,
+               GP_1_4_FN, FN_IP2_4_3,
+               GP_1_3_FN, FN_IP2_2_0,
+               GP_1_2_FN, FN_IP1_31_29,
+               GP_1_1_FN, FN_IP1_28_26,
+               GP_1_0_FN, FN_IP1_25_23, }
+       },
+       { PINMUX_CFG_REG("GPSR2", 0xE606000C, 32, 1) {
+               GP_2_31_FN, FN_IP6_7_6,
+               GP_2_30_FN, FN_IP6_5_3,
+               GP_2_29_FN, FN_IP6_2_0,
+               GP_2_28_FN, FN_AUDIO_CLKA,
+               GP_2_27_FN, FN_IP5_31_29,
+               GP_2_26_FN, FN_IP5_28_26,
+               GP_2_25_FN, FN_IP5_25_24,
+               GP_2_24_FN, FN_IP5_23_22,
+               GP_2_23_FN, FN_IP5_21_20,
+               GP_2_22_FN, FN_IP5_19_17,
+               GP_2_21_FN, FN_IP5_16_15,
+               GP_2_20_FN, FN_IP5_14_12,
+               GP_2_19_FN, FN_IP5_11_9,
+               GP_2_18_FN, FN_IP5_8_6,
+               GP_2_17_FN, FN_IP5_5_3,
+               GP_2_16_FN, FN_IP5_2_0,
+               GP_2_15_FN, FN_IP4_30_28,
+               GP_2_14_FN, FN_IP4_27_26,
+               GP_2_13_FN, FN_IP4_25_24,
+               GP_2_12_FN, FN_IP4_23_22,
+               GP_2_11_FN, FN_IP4_21,
+               GP_2_10_FN, FN_IP4_20,
+               GP_2_9_FN, FN_IP4_19,
+               GP_2_8_FN, FN_IP4_18_16,
+               GP_2_7_FN, FN_IP4_15_13,
+               GP_2_6_FN, FN_IP4_12_10,
+               GP_2_5_FN, FN_IP4_9_8,
+               GP_2_4_FN, FN_IP4_7_5,
+               GP_2_3_FN, FN_IP4_4_2,
+               GP_2_2_FN, FN_IP4_1_0,
+               GP_2_1_FN, FN_IP3_30_28,
+               GP_2_0_FN, FN_IP3_27_25 }
+       },
+       { PINMUX_CFG_REG("GPSR3", 0xE6060010, 32, 1) {
+               GP_3_31_FN, FN_IP9_18_17,
+               GP_3_30_FN, FN_IP9_16,
+               GP_3_29_FN, FN_IP9_15_13,
+               GP_3_28_FN, FN_IP9_12,
+               GP_3_27_FN, FN_IP9_11,
+               GP_3_26_FN, FN_IP9_10_8,
+               GP_3_25_FN, FN_IP9_7,
+               GP_3_24_FN, FN_IP9_6,
+               GP_3_23_FN, FN_IP9_5_3,
+               GP_3_22_FN, FN_IP9_2_0,
+               GP_3_21_FN, FN_IP8_30_28,
+               GP_3_20_FN, FN_IP8_27_26,
+               GP_3_19_FN, FN_IP8_25_24,
+               GP_3_18_FN, FN_IP8_23_21,
+               GP_3_17_FN, FN_IP8_20_18,
+               GP_3_16_FN, FN_IP8_17_15,
+               GP_3_15_FN, FN_IP8_14_12,
+               GP_3_14_FN, FN_IP8_11_9,
+               GP_3_13_FN, FN_IP8_8_6,
+               GP_3_12_FN, FN_IP8_5_3,
+               GP_3_11_FN, FN_IP8_2_0,
+               GP_3_10_FN, FN_IP7_29_27,
+               GP_3_9_FN, FN_IP7_26_24,
+               GP_3_8_FN, FN_IP7_23_21,
+               GP_3_7_FN, FN_IP7_20_19,
+               GP_3_6_FN, FN_IP7_18_17,
+               GP_3_5_FN, FN_IP7_16_15,
+               GP_3_4_FN, FN_IP7_14_13,
+               GP_3_3_FN, FN_IP7_12_11,
+               GP_3_2_FN, FN_IP7_10_9,
+               GP_3_1_FN, FN_IP7_8_6,
+               GP_3_0_FN, FN_IP7_5_3 }
+       },
+       { PINMUX_CFG_REG("GPSR4", 0xE6060014, 32, 1) {
+               GP_4_31_FN, FN_IP15_5_4,
+               GP_4_30_FN, FN_IP15_3_2,
+               GP_4_29_FN, FN_IP15_1_0,
+               GP_4_28_FN, FN_IP11_8_6,
+               GP_4_27_FN, FN_IP11_5_3,
+               GP_4_26_FN, FN_IP11_2_0,
+               GP_4_25_FN, FN_IP10_31_29,
+               GP_4_24_FN, FN_IP10_28_27,
+               GP_4_23_FN, FN_IP10_26_25,
+               GP_4_22_FN, FN_IP10_24_22,
+               GP_4_21_FN, FN_IP10_21_19,
+               GP_4_20_FN, FN_IP10_18_17,
+               GP_4_19_FN, FN_IP10_16_15,
+               GP_4_18_FN, FN_IP10_14_12,
+               GP_4_17_FN, FN_IP10_11_9,
+               GP_4_16_FN, FN_IP10_8_6,
+               GP_4_15_FN, FN_IP10_5_3,
+               GP_4_14_FN, FN_IP10_2_0,
+               GP_4_13_FN, FN_IP9_31_29,
+               GP_4_12_FN, FN_VI0_DATA0_VI0_B7,
+               GP_4_11_FN, FN_VI0_DATA0_VI0_B6,
+               GP_4_10_FN, FN_VI0_DATA0_VI0_B5,
+               GP_4_9_FN, FN_VI0_DATA0_VI0_B4,
+               GP_4_8_FN, FN_IP9_28_27,
+               GP_4_7_FN, FN_VI0_DATA0_VI0_B2,
+               GP_4_6_FN, FN_VI0_DATA0_VI0_B1,
+               GP_4_5_FN, FN_VI0_DATA0_VI0_B0,
+               GP_4_4_FN, FN_IP9_26_25,
+               GP_4_3_FN, FN_IP9_24_23,
+               GP_4_2_FN, FN_IP9_22_21,
+               GP_4_1_FN, FN_IP9_20_19,
+               GP_4_0_FN, FN_VI0_CLK }
+       },
+       { PINMUX_CFG_REG("GPSR5", 0xE6060018, 32, 1) {
+               GP_5_31_FN, FN_IP3_24_22,
+               GP_5_30_FN, FN_IP13_9_7,
+               GP_5_29_FN, FN_IP13_6_5,
+               GP_5_28_FN, FN_IP13_4_3,
+               GP_5_27_FN, FN_IP13_2_0,
+               GP_5_26_FN, FN_IP12_29_27,
+               GP_5_25_FN, FN_IP12_26_24,
+               GP_5_24_FN, FN_IP12_23_22,
+               GP_5_23_FN, FN_IP12_21_20,
+               GP_5_22_FN, FN_IP12_19_18,
+               GP_5_21_FN, FN_IP12_17_16,
+               GP_5_20_FN, FN_IP12_15_13,
+               GP_5_19_FN, FN_IP12_12_10,
+               GP_5_18_FN, FN_IP12_9_7,
+               GP_5_17_FN, FN_IP12_6_4,
+               GP_5_16_FN, FN_IP12_3_2,
+               GP_5_15_FN, FN_IP12_1_0,
+               GP_5_14_FN, FN_IP11_31_30,
+               GP_5_13_FN, FN_IP11_29_28,
+               GP_5_12_FN, FN_IP11_27,
+               GP_5_11_FN, FN_IP11_26,
+               GP_5_10_FN, FN_IP11_25,
+               GP_5_9_FN, FN_IP11_24,
+               GP_5_8_FN, FN_IP11_23,
+               GP_5_7_FN, FN_IP11_22,
+               GP_5_6_FN, FN_IP11_21,
+               GP_5_5_FN, FN_IP11_20,
+               GP_5_4_FN, FN_IP11_19,
+               GP_5_3_FN, FN_IP11_18_17,
+               GP_5_2_FN, FN_IP11_16_15,
+               GP_5_1_FN, FN_IP11_14_12,
+               GP_5_0_FN, FN_IP11_11_9 }
+       },
+       { PINMUX_CFG_REG("GPSR6", 0xE606001C, 32, 1) {
+               0, 0,
+               0, 0,
+               GP_6_29_FN, FN_IP14_31_29,
+               GP_6_28_FN, FN_IP14_28_26,
+               GP_6_27_FN, FN_IP14_25_23,
+               GP_6_26_FN, FN_IP14_22_20,
+               GP_6_25_FN, FN_IP14_19_17,
+               GP_6_24_FN, FN_IP14_16_14,
+               GP_6_23_FN, FN_IP14_13_11,
+               GP_6_22_FN, FN_IP14_10_8,
+               GP_6_21_FN, FN_IP14_7,
+               GP_6_20_FN, FN_IP14_6,
+               GP_6_19_FN, FN_IP14_5,
+               GP_6_18_FN, FN_IP14_4,
+               GP_6_17_FN, FN_IP14_3,
+               GP_6_16_FN, FN_IP14_2,
+               GP_6_15_FN, FN_IP14_1_0,
+               GP_6_14_FN, FN_IP13_30_28,
+               GP_6_13_FN, FN_IP13_27,
+               GP_6_12_FN, FN_IP13_26,
+               GP_6_11_FN, FN_IP13_25,
+               GP_6_10_FN, FN_IP13_24_23,
+               GP_6_9_FN, FN_IP13_22,
+               0, 0,
+               GP_6_7_FN, FN_IP13_21_19,
+               GP_6_6_FN, FN_IP13_18_16,
+               GP_6_5_FN, FN_IP13_15,
+               GP_6_4_FN, FN_IP13_14,
+               GP_6_3_FN, FN_IP13_13,
+               GP_6_2_FN, FN_IP13_12,
+               GP_6_1_FN, FN_IP13_11,
+               GP_6_0_FN, FN_IP13_10 }
+       },
+       { PINMUX_CFG_REG("GPSR7", 0xE6060074, 32, 1) {
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               GP_7_25_FN, FN_USB1_PWEN,
+               GP_7_24_FN, FN_USB0_OVC,
+               GP_7_23_FN, FN_USB0_PWEN,
+               GP_7_22_FN, FN_IP15_14_12,
+               GP_7_21_FN, FN_IP15_11_9,
+               GP_7_20_FN, FN_IP15_8_6,
+               GP_7_19_FN, FN_IP7_2_0,
+               GP_7_18_FN, FN_IP6_29_27,
+               GP_7_17_FN, FN_IP6_26_24,
+               GP_7_16_FN, FN_IP6_23_21,
+               GP_7_15_FN, FN_IP6_20_19,
+               GP_7_14_FN, FN_IP6_18_16,
+               GP_7_13_FN, FN_IP6_15_14,
+               GP_7_12_FN, FN_IP6_13_12,
+               GP_7_11_FN, FN_IP6_11_10,
+               GP_7_10_FN, FN_IP6_9_8,
+               GP_7_9_FN, FN_IP16_11_10,
+               GP_7_8_FN, FN_IP16_9_8,
+               GP_7_7_FN, FN_IP16_7_6,
+               GP_7_6_FN, FN_IP16_5_3,
+               GP_7_5_FN, FN_IP16_2_0,
+               GP_7_4_FN, FN_IP15_29_27,
+               GP_7_3_FN, FN_IP15_26_24,
+               GP_7_2_FN, FN_IP15_23_21,
+               GP_7_1_FN, FN_IP15_20_18,
+               GP_7_0_FN, FN_IP15_17_15 }
+       },
+
+       /* IPSR0 - 5 */
+
+       { PINMUX_CFG_REG_VAR("IPSR6", 0xE6060038, 32,
+                            2, 3, 3, 3, 2, 3, 2, 2, 2, 2, 2, 3, 3) {
+               /* IP6_31_30 [2] */
+               0, 0, 0, 0,
+               /* IP6_29_27 [3] */
+               FN_IRQ8, FN_HRTS1_N_C, FN_MSIOF1_RXD_B,
+               FN_GPS_SIGN_C, FN_GPS_SIGN_D,
+               0, 0, 0,
+               /* IP6_26_24 [3] */
+               FN_IRQ7, FN_HCTS1_N_C, FN_MSIOF1_TXD_B,
+               FN_GPS_CLK_C, FN_GPS_CLK_D,
+               0, 0, 0,
+               /* IP6_23_21 [3] */
+               FN_IRQ6, FN_HSCK1_C, FN_MSIOF1_SS2_B,
+               FN_SDA1_E, FN_MSIOF2_SYNC_E,
+               0, 0, 0,
+               /* IP6_20_19 [2] */
+               FN_IRQ5, FN_HTX1_C, FN_SCL1_E, FN_MSIOF2_SCK_E,
+               /* IP6_18_16 [3] */
+               FN_IRQ4, FN_HRX1_C, FN_SDA4_C, FN_MSIOF2_RXD_E, FN_INTC_IRQ4_N,
+               0, 0, 0,
+               /* IP6_15_14 [2] */
+               FN_IRQ3, FN_SCL4_C, FN_MSIOF2_TXD_E, FN_INTC_IRQ3_N,
+               /* IP6_13_12 [2] */
+               FN_IRQ2, FN_SCIFB1_TXD_D, FN_INTC_IRQ2_N, 0,
+               /* IP6_11_10 [2] */
+               FN_IRQ1, FN_SCIFB1_SCK_C, FN_INTC_IRQ1_N, 0,
+               /* IP6_9_8 [2] */
+               FN_IRQ0, FN_SCIFB1_RXD_D, FN_INTC_IRQ0_N, 0,
+               /* IP6_7_6 [2] */
+               FN_AUDIO_CLKOUT, FN_MSIOF1_SS1_B, FN_TX2, FN_SCIFA2_TXD,
+               /* IP6_5_3 [3] */
+               FN_AUDIO_CLKC, FN_SCIFB0_SCK_C, FN_MSIOF1_SYNC_B, FN_RX2,
+               FN_SCIFA2_RXD, FN_FMIN_E,
+               0, 0,
+               /* IP6_2_0 [3] */
+               FN_AUDIO_CLKB, FN_STP_OPWM_0_B, FN_MSIOF1_SCK_B,
+               FN_SCIF_CLK, 0, FN_BPFCLK_E,
+               0, 0, }
+       },
+
+       /* IPSR7 - 10 */
+
+       { PINMUX_CFG_REG_VAR("IPSR11", 0xE606004C, 32,
+                            2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
+                            3, 3, 3, 3, 3) {
+               /* IP11_31_30 [2] */
+               FN_ETH_CRS_DV, FN_AVB_LINK, FN_SDA2_C, 0,
+               /* IP11_29_28 [2] */
+               FN_ETH_MDIO, FN_AVB_RX_CLK, FN_SCL2_C, 0,
+               /* IP11_27 [1] */
+               FN_VI1_DATA7, FN_AVB_MDC,
+               /* IP11_26 [1] */
+               FN_VI1_DATA6, FN_AVB_MAGIC,
+               /* IP11_25 [1] */
+               FN_VI1_DATA5, FN_AVB_RX_DV,
+               /* IP11_24 [1] */
+               FN_VI1_DATA4, FN_AVB_MDIO,
+               /* IP11_23 [1] */
+               FN_VI1_DATA3, FN_AVB_RX_ER,
+               /* IP11_22 [1] */
+               FN_VI1_DATA2, FN_AVB_RXD7,
+               /* IP11_21 [1] */
+               FN_VI1_DATA1, FN_AVB_RXD6,
+               /* IP11_20 [1] */
+               FN_VI1_DATA0, FN_AVB_RXD5,
+               /* IP11_19 [1] */
+               FN_VI1_CLK, FN_AVB_RXD4,
+               /* IP11_18_17 [2] */
+               FN_VI1_FIELD, FN_AVB_RXD3, FN_TS_SPSYNC0_B, 0,
+               /* IP11_16_15 [2] */
+               FN_VI1_CLKENB, FN_AVB_RXD2, FN_TS_SDEN0_B, 0,
+               /* IP11_14_12 [3] */
+               FN_VI1_VSYNC_N, FN_AVB_RXD1, FN_TS_SCK0_B,
+               FN_RX4_B, FN_SCIFA4_RXD_B,
+               0, 0, 0,
+               /* IP11_11_9 [3] */
+               FN_VI1_HSYNC_N, FN_AVB_RXD0, FN_TS_SDATA0_B,
+               FN_TX4_B, FN_SCIFA4_TXD_B,
+               0, 0, 0,
+               /* IP11_8_6 [3] */
+               FN_VI0_R7, FN_GLO_RFON_B, FN_RX1_C, FN_CAN0_RX_E,
+               FN_SDA4_B, FN_HRX1_D, FN_SCIFB0_RXD_D, 0,
+               /* IP11_5_3 [3] */
+               FN_VI0_R6, FN_VI2_DATA7, FN_GLO_SS_B, FN_TX1_C, FN_SCL4_B,
+               0, 0, 0,
+               /* IP11_2_0 [3] */
+               FN_VI0_R5, FN_VI2_DATA6, FN_GLO_SDATA_B, FN_RX0_C, FN_SDA1_D,
+               0, 0, 0, }
+       },
+       { PINMUX_CFG_REG_VAR("IPSR12", 0xE6060050, 32,
+                            2, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2) {
+               /* IP12_31_30 [2] */
+               0, 0, 0, 0,
+               /* IP12_29_27 [3] */
+               FN_STP_ISCLK_0, FN_AVB_TX_EN, FN_SCIFB2_RXD_D,
+               FN_ADICS_SAMP_B, FN_MSIOF0_SCK_C,
+               0, 0, 0,
+               /* IP12_26_24 [3] */
+               FN_STP_IVCXO27_0, FN_AVB_TXD7, FN_SCIFB2_TXD_D,
+               FN_ADIDATA_B, FN_MSIOF0_SYNC_C,
+               0, 0, 0,
+               /* IP12_23_22 [2] */
+               FN_ETH_MDC, FN_AVB_TXD6, FN_IERX_C, 0,
+               /* IP12_21_20 [2] */
+               FN_ETH_TXD0, FN_AVB_TXD5, FN_IECLK_C, 0,
+               /* IP12_19_18 [2] */
+               FN_ETH_MAGIC, FN_AVB_TXD4, FN_IETX_C, 0,
+               /* IP12_17_16 [2] */
+               FN_ETH_TX_EN, FN_AVB_TXD3, FN_TCLK1_B, FN_CAN_CLK_B,
+               /* IP12_15_13 [3] */
+               FN_ETH_TXD1, FN_AVB_TXD2, FN_SCIFA3_TXD_B,
+               FN_CAN1_TX_C, FN_MSIOF1_TXD_E,
+               0, 0, 0,
+               /* IP12_12_10 [3] */
+               FN_ETH_REFCLK, FN_AVB_TXD1, FN_SCIFA3_RXD_B,
+               FN_CAN1_RX_C, FN_MSIOF1_SYNC_E,
+               0, 0, 0,
+               /* IP12_9_7 [3] */
+               FN_ETH_LINK, FN_AVB_TXD0, FN_CAN0_RX_C,
+               FN_SDA2_D, FN_MSIOF1_SCK_E,
+               0, 0, 0,
+               /* IP12_6_4 [3] */
+               FN_ETH_RXD1, FN_AVB_GTXREFCLK, FN_CAN0_TX_C,
+               FN_SCL2_D, FN_MSIOF1_RXD_E,
+               0, 0, 0,
+               /* IP12_3_2 [2] */
+               FN_ETH_RXD0, FN_AVB_PHY_INT, FN_SDA3, FN_SDA7,
+               /* IP12_1_0 [2] */
+               FN_ETH_RX_ER, FN_AVB_CRS, FN_SCL3, FN_SCL7, }
+       },
+       { PINMUX_CFG_REG_VAR("IPSR13", 0xE6060054, 32,
+                            1, 3, 1, 1, 1, 2, 1, 3, 3, 1, 1, 1, 1, 1, 1,
+                            3, 2, 2, 3) {
+               /* IP13_31 [1] */
+               0, 0,
+               /* IP13_30_28 [3] */
+               FN_SD1_CD, FN_PWM0, FN_TPU_TO0, FN_SCL1_C,
+               0, 0, 0, 0,
+               /* IP13_27 [1] */
+               FN_SD1_DATA3, FN_IERX_B,
+               /* IP13_26 [1] */
+               FN_SD1_DATA2, FN_IECLK_B,
+               /* IP13_25 [1] */
+               FN_SD1_DATA1, FN_IETX_B,
+               /* IP13_24_23 [2] */
+               FN_SD1_DATA0, FN_SPEEDIN_B, 0, 0,
+               /* IP13_22 [1] */
+               FN_SD1_CMD, FN_REMOCON_B,
+               /* IP13_21_19 [3] */
+               FN_SD0_WP, FN_MMC_D7_B, FN_SIM0_D_B, FN_CAN0_TX_F,
+               FN_SCIFA5_RXD_B, FN_RX3_C,
+               0, 0,
+               /* IP13_18_16 [3] */
+               FN_SD0_CD, FN_MMC_D6_B, FN_SIM0_RST_B, FN_CAN0_RX_F,
+               FN_SCIFA5_TXD_B, FN_TX3_C,
+               0, 0,
+               /* IP13_15 [1] */
+               FN_SD0_DATA3, FN_SSL_B,
+               /* IP13_14 [1] */
+               FN_SD0_DATA2, FN_IO3_B,
+               /* IP13_13 [1] */
+               FN_SD0_DATA1, FN_IO2_B,
+               /* IP13_12 [1] */
+               FN_SD0_DATA0, FN_MISO_IO1_B,
+               /* IP13_11 [1] */
+               FN_SD0_CMD, FN_MOSI_IO0_B,
+               /* IP13_10 [1] */
+               FN_SD0_CLK, FN_SPCLK_B,
+               /* IP13_9_7 [3] */
+               FN_STP_OPWM_0, FN_AVB_GTX_CLK, FN_PWM0_B,
+               FN_ADICHS2_B, FN_MSIOF0_TXD_C,
+               0, 0, 0,
+               /* IP13_6_5 [2] */
+               FN_STP_ISSYNC_0, FN_AVB_COL, FN_ADICHS1_B, FN_MSIOF0_RXD_C,
+               /* IP13_4_3 [2] */
+               FN_STP_ISEN_0, FN_AVB_TX_CLK, FN_ADICHS0_B, FN_MSIOF0_SS2_C,
+               /* IP13_2_0 [3] */
+               FN_STP_ISD_0, FN_AVB_TX_ER, FN_SCIFB2_SCK_C,
+               FN_ADICLK_B, FN_MSIOF0_SS1_C,
+               0, 0, 0, }
+       },
+       { PINMUX_CFG_REG_VAR("IPSR14", 0xE6060058, 32,
+                            3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2) {
+               /* IP14_31_29 [3] */
+               FN_MSIOF0_SS2, FN_MMC_D7, FN_ADICHS2, FN_RX0_E,
+               FN_VI1_VSYNC_N_C, FN_SDA7_C, FN_VI1_G5_B, 0,
+               /* IP14_28_26 [3] */
+               FN_MSIOF0_SS1, FN_MMC_D6, FN_ADICHS1, FN_TX0_E,
+               FN_VI1_HSYNC_N_C, FN_SCL7_C, FN_VI1_G4_B, 0,
+               /* IP14_25_23 [3] */
+               FN_MSIOF0_RXD, FN_ADICHS0, 0, FN_VI1_DATA0_C, FN_VI1_G3_B,
+               0, 0, 0,
+               /* IP14_22_20 [3] */
+               FN_MSIOF0_TXD, FN_ADICLK, 0, FN_VI1_FIELD_C, FN_VI1_G2_B,
+               0, 0, 0,
+               /* IP14_19_17 [3] */
+               FN_MSIOF0_SYNC, FN_TX2_C, FN_ADICS_SAMP, 0,
+               FN_VI1_CLKENB_C, FN_VI1_G1_B,
+               0, 0,
+               /* IP14_16_14 [3] */
+               FN_MSIOF0_SCK, FN_RX2_C, FN_ADIDATA, 0,
+               FN_VI1_CLK_C, FN_VI1_G0_B,
+               0, 0,
+               /* IP14_13_11 [3] */
+               FN_SD2_WP, FN_MMC_D5, FN_SDA8_C, FN_RX5_B, FN_SCIFA5_RXD_C,
+               0, 0, 0,
+               /* IP14_10_8 [3] */
+               FN_SD2_CD, FN_MMC_D4, FN_SCL8_C, FN_TX5_B, FN_SCIFA5_TXD_C,
+               0, 0, 0,
+               /* IP14_7 [1] */
+               FN_SD2_DATA3, FN_MMC_D3,
+               /* IP14_6 [1] */
+               FN_SD2_DATA2, FN_MMC_D2,
+               /* IP14_5 [1] */
+               FN_SD2_DATA1, FN_MMC_D1,
+               /* IP14_4 [1] */
+               FN_SD2_DATA0, FN_MMC_D0,
+               /* IP14_3 [1] */
+               FN_SD2_CMD, FN_MMC_CMD,
+               /* IP14_2 [1] */
+               FN_SD2_CLK, FN_MMC_CLK,
+               /* IP14_1_0 [2] */
+               FN_SD1_WP, FN_PWM1_B, FN_SDA1_C, 0, }
+       },
+       { PINMUX_CFG_REG_VAR("IPSR15", 0xE606005C, 32,
+                            2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2) {
+               /* IP15_31_30 [2] */
+               0, 0, 0, 0,
+               /* IP15_29_27 [3] */
+               FN_HTX0, FN_SCIFB0_TXD, 0, FN_GLO_SCLK_C,
+               FN_CAN0_TX_B, FN_VI1_DATA5_C,
+               0, 0,
+               /* IP15_26_24 [3] */
+               FN_HRX0, FN_SCIFB0_RXD, 0, FN_GLO_Q1_C,
+               FN_CAN0_RX_B, FN_VI1_DATA4_C,
+               0, 0,
+               /* IP15_23_21 [3] */
+               FN_HSCK0, FN_SCIFB0_SCK, 0, FN_GLO_Q0_C, FN_CAN_CLK,
+               FN_TCLK2, FN_VI1_DATA3_C, 0,
+               /* IP15_20_18 [3] */
+               FN_HRTS0_N, FN_SCIFB0_RTS_N, 0, FN_GLO_I1_C, FN_VI1_DATA2_C,
+               0, 0, 0,
+               /* IP15_17_15 [3] */
+               FN_HCTS0_N, FN_SCIFB0_CTS_N, 0, FN_GLO_I0_C,
+               FN_TCLK1, FN_VI1_DATA1_C,
+               0, 0,
+               /* IP15_14_12 [3] */
+               FN_GPS_MAG, FN_RX4_C, FN_SCIFA4_RXD_C, FN_PWM6,
+               FN_VI1_G7_B, FN_SCIFA3_SCK_C,
+               0, 0,
+               /* IP15_11_9 [3] */
+               FN_GPS_SIGN, FN_TX4_C, FN_SCIFA4_TXD_C, FN_PWM5,
+               FN_VI1_G6_B, FN_SCIFA3_RXD_C,
+               0, 0,
+               /* IP15_8_6 [3] */
+               FN_GPS_CLK, FN_DU1_DOTCLKIN_C, FN_AUDIO_CLKB_B,
+               FN_PWM5_B, FN_SCIFA3_TXD_C,
+               0, 0, 0,
+               /* IP15_5_4 [2] */
+               FN_SIM0_D, FN_IERX, FN_CAN1_RX_D, 0,
+               /* IP15_3_2 [2] */
+               FN_SIM0_CLK, FN_IECLK, FN_CAN_CLK_C, 0,
+               /* IP15_1_0 [2] */
+               FN_SIM0_RST, FN_IETX, FN_CAN1_TX_D, 0, }
+       },
+       { PINMUX_CFG_REG_VAR("IPSR16", 0xE6060160, 32,
+                            4, 4, 4, 4, 4, 2, 2, 2, 3, 3) {
+               /* IP16_31_28 [4] */
+               0, 0, 0, 0, 0, 0, 0, 0,
+               0, 0, 0, 0, 0, 0, 0, 0,
+               /* IP16_27_24 [4] */
+               0, 0, 0, 0, 0, 0, 0, 0,
+               0, 0, 0, 0, 0, 0, 0, 0,
+               /* IP16_23_20 [4] */
+               0, 0, 0, 0, 0, 0, 0, 0,
+               0, 0, 0, 0, 0, 0, 0, 0,
+               /* IP16_19_16 [4] */
+               0, 0, 0, 0, 0, 0, 0, 0,
+               0, 0, 0, 0, 0, 0, 0, 0,
+               /* IP16_15_12 [4] */
+               0, 0, 0, 0, 0, 0, 0, 0,
+               0, 0, 0, 0, 0, 0, 0, 0,
+               /* IP16_11_10 [2] */
+               FN_HRTS1_N, FN_SCIFB1_RTS_N, FN_MLB_DAT, FN_CAN1_RX_B,
+               /* IP16_9_8 [2] */
+               FN_HCTS1_N, FN_SCIFB1_CTS_N, FN_MLB_SIG, FN_CAN1_TX_B,
+               /* IP16_7_6 [2] */
+               FN_HSCK1, FN_SCIFB1_SCK, FN_MLB_CK, FN_GLO_RFON_C,
+               /* IP16_5_3 [3] */
+               FN_HTX1, FN_SCIFB1_TXD, FN_VI1_R1_B,
+               FN_GLO_SS_C, FN_VI1_DATA7_C,
+               0, 0, 0,
+               /* IP16_2_0 [3] */
+               FN_HRX1, FN_SCIFB1_RXD, FN_VI1_R0_B,
+               FN_GLO_SDATA_C, FN_VI1_DATA6_C,
+               0, 0, 0, }
+       },
+       { PINMUX_CFG_REG_VAR("MOD_SEL", 0xE6060090, 32,
+                            1, 2, 2, 2, 3, 2, 1, 1, 1, 1,
+                            3, 2, 2, 2, 1, 2, 2, 2) {
+               /* RESEVED [1] */
+               0, 0,
+               /* SEL_SCIF1 [2] */
+               FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, FN_SEL_SCIF1_3,
+               /* SEL_SCIFB [2] */
+               FN_SEL_SCIFB_0, FN_SEL_SCIFB_1, FN_SEL_SCIFB_2, FN_SEL_SCIFB_3,
+               /* SEL_SCIFB2 [2] */
+               FN_SEL_SCIFB2_0, FN_SEL_SCIFB2_1,
+               FN_SEL_SCIFB2_2, FN_SEL_SCIFB2_3,
+               /* SEL_SCIFB1 [3] */
+               FN_SEL_SCIFB1_0, FN_SEL_SCIFB1_1,
+               FN_SEL_SCIFB1_2, FN_SEL_SCIFB1_3,
+               0, 0, 0, 0,
+               /* SEL_SCIFA1 [2] */
+               FN_SEL_SCIFA1_0, FN_SEL_SCIFA1_1, FN_SEL_SCIFA1_2, 0,
+               /* SEL_SSI9 [1] */
+               FN_SEL_SSI9_0, FN_SEL_SSI9_1,
+               /* SEL_SCFA [1] */
+               FN_SEL_SCFA_0, FN_SEL_SCFA_1,
+               /* SEL_QSP [1] */
+               FN_SEL_QSP_0, FN_SEL_QSP_1,
+               /* SEL_SSI7 [1] */
+               FN_SEL_SSI7_0, FN_SEL_SSI7_1,
+               /* SEL_HSCIF1 [3] */
+               FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1, FN_SEL_HSCIF1_2,
+               FN_SEL_HSCIF1_3, FN_SEL_HSCIF1_4,
+               0, 0, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* SEL_VI1 [2] */
+               FN_SEL_VI1_0, FN_SEL_VI1_1, FN_SEL_VI1_2, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* SEL_TMU [1] */
+               FN_SEL_TMU1_0, FN_SEL_TMU1_1,
+               /* SEL_LBS [2] */
+               FN_SEL_LBS_0, FN_SEL_LBS_1, FN_SEL_LBS_2, FN_SEL_LBS_3,
+               /* SEL_TSIF0 [2] */
+               FN_SEL_TSIF0_0, FN_SEL_TSIF0_1, FN_SEL_TSIF0_2, FN_SEL_TSIF0_3,
+               /* SEL_SOF0 [2] */
+               FN_SEL_SOF0_0, FN_SEL_SOF0_1, FN_SEL_SOF0_2, 0, }
+       },
+       { PINMUX_CFG_REG_VAR("MOD_SEL2", 0xE6060094, 32,
+                            3, 1, 1, 3, 2, 1, 1, 2, 2,
+                            1, 3, 2, 1, 2, 2, 2, 1, 1, 1) {
+               /* SEL_SCIF0 [3] */
+               FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2,
+               FN_SEL_SCIF0_3, FN_SEL_SCIF0_4,
+               0, 0, 0,
+               /* RESEVED [1] */
+               0, 0,
+               /* SEL_SCIF [1] */
+               FN_SEL_SCIF_0, FN_SEL_SCIF_1,
+               /* SEL_CAN0 [3] */
+               FN_SEL_CAN0_0, FN_SEL_CAN0_1, FN_SEL_CAN0_2, FN_SEL_CAN0_3,
+               FN_SEL_CAN0_4, FN_SEL_CAN0_5,
+               0, 0,
+               /* SEL_CAN1 [2] */
+               FN_SEL_CAN1_0, FN_SEL_CAN1_1, FN_SEL_CAN1_2, FN_SEL_CAN1_3,
+               /* RESEVED [1] */
+               0, 0,
+               /* SEL_SCIFA2 [1] */
+               FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1,
+               /* SEL_SCIF4 [2] */
+               FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* SEL_ADG [1] */
+               FN_SEL_ADG_0, FN_SEL_ADG_1,
+               /* SEL_FM [3] */
+               FN_SEL_FM_0, FN_SEL_FM_1, FN_SEL_FM_2,
+               FN_SEL_FM_3, FN_SEL_FM_4,
+               0, 0, 0,
+               /* SEL_SCIFA5 [2] */
+               FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1, FN_SEL_SCIFA5_2, 0,
+               /* RESEVED [1] */
+               0, 0,
+               /* SEL_GPS [2] */
+               FN_SEL_GPS_0, FN_SEL_GPS_1, FN_SEL_GPS_2, FN_SEL_GPS_3,
+               /* SEL_SCIFA4 [2] */
+               FN_SEL_SCIFA4_0, FN_SEL_SCIFA4_1, FN_SEL_SCIFA4_2, 0,
+               /* SEL_SCIFA3 [2] */
+               FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1, FN_SEL_SCIFA3_2, 0,
+               /* SEL_SIM [1] */
+               FN_SEL_SIM_0, FN_SEL_SIM_1,
+               /* RESEVED [1] */
+               0, 0,
+               /* SEL_SSI8 [1] */
+               FN_SEL_SSI8_0, FN_SEL_SSI8_1, }
+       },
+       { PINMUX_CFG_REG_VAR("MOD_SEL3", 0xE6060098, 32,
+                            2, 2, 2, 2, 2, 2, 2, 2,
+                            1, 1, 2, 2, 3, 2, 2, 2, 1) {
+               /* SEL_HSCIF2 [2] */
+               FN_SEL_HSCIF2_0, FN_SEL_HSCIF2_1,
+               FN_SEL_HSCIF2_2, FN_SEL_HSCIF2_3,
+               /* SEL_CANCLK [2] */
+               FN_SEL_CANCLK_0, FN_SEL_CANCLK_1,
+               FN_SEL_CANCLK_2, FN_SEL_CANCLK_3,
+               /* SEL_IIC8 [2] */
+               FN_SEL_IIC8_0, FN_SEL_IIC8_1, FN_SEL_IIC8_2, 0,
+               /* SEL_IIC7 [2] */
+               FN_SEL_IIC7_0, FN_SEL_IIC7_1, FN_SEL_IIC7_2, 0,
+               /* SEL_IIC4 [2] */
+               FN_SEL_IIC4_0, FN_SEL_IIC4_1, FN_SEL_IIC4_2, 0,
+               /* SEL_IIC3 [2] */
+               FN_SEL_IIC3_0, FN_SEL_IIC3_1, FN_SEL_IIC3_2, FN_SEL_IIC3_3,
+               /* SEL_SCIF3 [2] */
+               FN_SEL_SCIF3_0, FN_SEL_SCIF3_1, FN_SEL_SCIF3_2, FN_SEL_SCIF3_3,
+               /* SEL_IEB [2] */
+               FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2, 0,
+               /* SEL_MMC [1] */
+               FN_SEL_MMC_0, FN_SEL_MMC_1,
+               /* SEL_SCIF5 [1] */
+               FN_SEL_SCIF5_0, FN_SEL_SCIF5_1,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* SEL_IIC2 [2] */
+               FN_SEL_IIC2_0, FN_SEL_IIC2_1, FN_SEL_IIC2_2, FN_SEL_IIC2_3,
+               /* SEL_IIC1 [3] */
+               FN_SEL_IIC1_0, FN_SEL_IIC1_1, FN_SEL_IIC1_2, FN_SEL_IIC1_3,
+               FN_SEL_IIC1_4,
+               0, 0, 0,
+               /* SEL_IIC0 [2] */
+               FN_SEL_IIC0_0, FN_SEL_IIC0_1, FN_SEL_IIC0_2, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* RESEVED [1] */
+               0, 0, }
+       },
+       { PINMUX_CFG_REG_VAR("MOD_SEL4", 0xE606009C, 32,
+                            3, 2, 2, 1, 1, 1, 1, 3, 2,
+                            2, 3, 1, 1, 1, 2, 2, 2, 2) {
+               /* SEL_SOF1 [3] */
+               FN_SEL_SOF1_0, FN_SEL_SOF1_1, FN_SEL_SOF1_2, FN_SEL_SOF1_3,
+               FN_SEL_SOF1_4,
+               0, 0, 0,
+               /* SEL_HSCIF0 [2] */
+               FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1, FN_SEL_HSCIF0_2, 0,
+               /* SEL_DIS [2] */
+               FN_SEL_DIS_0, FN_SEL_DIS_1, FN_SEL_DIS_2, 0,
+               /* RESEVED [1] */
+               0, 0,
+               /* SEL_RAD [1] */
+               FN_SEL_RAD_0, FN_SEL_RAD_1,
+               /* SEL_RCN [1] */
+               FN_SEL_RCN_0, FN_SEL_RCN_1,
+               /* SEL_RSP [1] */
+               FN_SEL_RSP_0, FN_SEL_RSP_1,
+               /* SEL_SCIF2 [3] */
+               FN_SEL_SCIF2_0, FN_SEL_SCIF2_1, FN_SEL_SCIF2_2,
+               FN_SEL_SCIF2_3, FN_SEL_SCIF2_4,
+               0, 0, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* SEL_SOF2 [3] */
+               FN_SEL_SOF2_0, FN_SEL_SOF2_1, FN_SEL_SOF2_2,
+               FN_SEL_SOF2_3, FN_SEL_SOF2_4,
+               0, 0, 0,
+               /* RESEVED [1] */
+               0, 0,
+               /* SEL_SSI1 [1] */
+               FN_SEL_SSI1_0, FN_SEL_SSI1_1,
+               /* SEL_SSI0 [1] */
+               FN_SEL_SSI0_0, FN_SEL_SSI0_1,
+               /* SEL_SSP [2] */
+               FN_SEL_SSP_0, FN_SEL_SSP_1, FN_SEL_SSP_2, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0,
+               /* RESEVED [2] */
+               0, 0, 0, 0, }
+       },
+       { PINMUX_CFG_REG("INOUTSEL0", 0xE6050004, 32, 1) { GP_INOUTSEL(0) } },
+       { PINMUX_CFG_REG("INOUTSEL1", 0xE6051004, 32, 1) {
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               GP_1_25_IN, GP_1_25_OUT,
+               GP_1_24_IN, GP_1_24_OUT,
+               GP_1_23_IN, GP_1_23_OUT,
+               GP_1_22_IN, GP_1_22_OUT,
+               GP_1_21_IN, GP_1_21_OUT,
+               GP_1_20_IN, GP_1_20_OUT,
+               GP_1_19_IN, GP_1_19_OUT,
+               GP_1_18_IN, GP_1_18_OUT,
+               GP_1_17_IN, GP_1_17_OUT,
+               GP_1_16_IN, GP_1_16_OUT,
+               GP_1_15_IN, GP_1_15_OUT,
+               GP_1_14_IN, GP_1_14_OUT,
+               GP_1_13_IN, GP_1_13_OUT,
+               GP_1_12_IN, GP_1_12_OUT,
+               GP_1_11_IN, GP_1_11_OUT,
+               GP_1_10_IN, GP_1_10_OUT,
+               GP_1_9_IN, GP_1_9_OUT,
+               GP_1_8_IN, GP_1_8_OUT,
+               GP_1_7_IN, GP_1_7_OUT,
+               GP_1_6_IN, GP_1_6_OUT,
+               GP_1_5_IN, GP_1_5_OUT,
+               GP_1_4_IN, GP_1_4_OUT,
+               GP_1_3_IN, GP_1_3_OUT,
+               GP_1_2_IN, GP_1_2_OUT,
+               GP_1_1_IN, GP_1_1_OUT,
+               GP_1_0_IN, GP_1_0_OUT, }
+       },
+       { PINMUX_CFG_REG("INOUTSEL2", 0xE6052004, 32, 1) { GP_INOUTSEL(2) } },
+       { PINMUX_CFG_REG("INOUTSEL3", 0xE6053004, 32, 1) { GP_INOUTSEL(3) } },
+       { PINMUX_CFG_REG("INOUTSEL4", 0xE6054004, 32, 1) { GP_INOUTSEL(4) } },
+       { PINMUX_CFG_REG("INOUTSEL5", 0xE6055004, 32, 1) { GP_INOUTSEL(5) } },
+       { PINMUX_CFG_REG("INOUTSEL6", 0xE6055404, 32, 1) { GP_INOUTSEL(6) } },
+       { PINMUX_CFG_REG("INOUTSEL7", 0xE6055804, 32, 1) {
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               0, 0,
+               GP_7_25_IN, GP_7_25_OUT,
+               GP_7_24_IN, GP_7_24_OUT,
+               GP_7_23_IN, GP_7_23_OUT,
+               GP_7_22_IN, GP_7_22_OUT,
+               GP_7_21_IN, GP_7_21_OUT,
+               GP_7_20_IN, GP_7_20_OUT,
+               GP_7_19_IN, GP_7_19_OUT,
+               GP_7_18_IN, GP_7_18_OUT,
+               GP_7_17_IN, GP_7_17_OUT,
+               GP_7_16_IN, GP_7_16_OUT,
+               GP_7_15_IN, GP_7_15_OUT,
+               GP_7_14_IN, GP_7_14_OUT,
+               GP_7_13_IN, GP_7_13_OUT,
+               GP_7_12_IN, GP_7_12_OUT,
+               GP_7_11_IN, GP_7_11_OUT,
+               GP_7_10_IN, GP_7_10_OUT,
+               GP_7_9_IN, GP_7_9_OUT,
+               GP_7_8_IN, GP_7_8_OUT,
+               GP_7_7_IN, GP_7_7_OUT,
+               GP_7_6_IN, GP_7_6_OUT,
+               GP_7_5_IN, GP_7_5_OUT,
+               GP_7_4_IN, GP_7_4_OUT,
+               GP_7_3_IN, GP_7_3_OUT,
+               GP_7_2_IN, GP_7_2_OUT,
+               GP_7_1_IN, GP_7_1_OUT,
+               GP_7_0_IN, GP_7_0_OUT, }
+       },
+       { },
+};
+
+static struct pinmux_data_reg pinmux_data_regs[] = {
+       { PINMUX_DATA_REG("INDT0", 0xE6050008, 32) { GP_INDT(0) } },
+       { PINMUX_DATA_REG("INDT1", 0xE6051008, 32) {
+               0, 0, 0, 0,
+               0, 0, GP_1_25_DATA, GP_1_24_DATA,
+               GP_1_23_DATA, GP_1_22_DATA, GP_1_21_DATA, GP_1_20_DATA,
+               GP_1_19_DATA, GP_1_18_DATA, GP_1_17_DATA, GP_1_16_DATA,
+               GP_1_15_DATA, GP_1_14_DATA, GP_1_13_DATA, GP_1_12_DATA,
+               GP_1_11_DATA, GP_1_10_DATA, GP_1_9_DATA, GP_1_8_DATA,
+               GP_1_7_DATA, GP_1_6_DATA, GP_1_5_DATA, GP_1_4_DATA,
+               GP_1_3_DATA, GP_1_2_DATA, GP_1_1_DATA, GP_1_0_DATA }
+       },
+       { PINMUX_DATA_REG("INDT2", 0xE6052008, 32) { GP_INDT(2) } },
+       { PINMUX_DATA_REG("INDT3", 0xE6053008, 32) { GP_INDT(3) } },
+       { PINMUX_DATA_REG("INDT4", 0xE6054008, 32) { GP_INDT(4) } },
+       { PINMUX_DATA_REG("INDT5", 0xE6055008, 32) { GP_INDT(5) } },
+       { PINMUX_DATA_REG("INDT6", 0xE6055408, 32) { GP_INDT(6) } },
+       { PINMUX_DATA_REG("INDT7", 0xE6055808, 32) {
+               0, 0, 0, 0,
+               0, 0, GP_7_25_DATA, GP_7_24_DATA,
+               GP_7_23_DATA, GP_7_22_DATA, GP_7_21_DATA, GP_7_20_DATA,
+               GP_7_19_DATA, GP_7_18_DATA, GP_7_17_DATA, GP_7_16_DATA,
+               GP_7_15_DATA, GP_7_14_DATA, GP_7_13_DATA, GP_7_12_DATA,
+               GP_7_11_DATA, GP_7_10_DATA, GP_7_9_DATA, GP_7_8_DATA,
+               GP_7_7_DATA, GP_7_6_DATA, GP_7_5_DATA, GP_7_4_DATA,
+               GP_7_3_DATA, GP_7_2_DATA, GP_7_1_DATA, GP_7_0_DATA }
+       },
+       { },
+};
+
+static struct pinmux_info r8a7793_pinmux_info = {
+       .name = "r8a7793_pfc",
+
+       .unlock_reg = 0xe6060000, /* PMMR */
+
+       .reserved_id = PINMUX_RESERVED,
+       .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
+       .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
+       .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
+       .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
+       .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
+
+       .first_gpio = GPIO_GP_0_0,
+       .last_gpio = GPIO_FN_CAN1_RX_B,
+
+       .gpios = pinmux_gpios,
+       .cfg_regs = pinmux_config_regs,
+       .data_regs = pinmux_data_regs,
+
+       .gpio_data = pinmux_data,
+       .gpio_data_size = ARRAY_SIZE(pinmux_data),
+};
+
+void r8a7793_pinmux_init(void)
+{
+       register_pinmux(&r8a7793_pinmux_info);
+}
index d869f47c88caab3aa3c06c48732f7f6cff5e646b..fa3b93a2572cb841c818337ecbceb4f34f7fd5fd 100644 (file)
@@ -507,6 +507,19 @@ unsigned int cm_get_qspi_controller_clk_hz(void)
        return clock;
 }
 
+unsigned int cm_get_spi_controller_clk_hz(void)
+{
+       uint32_t reg, clock = 0;
+
+       clock = cm_get_per_vco_clk_hz();
+
+       /* get the clock prior L4 SP divider (periph_base_clk) */
+       reg = readl(&clock_manager_base->per_pll.perbaseclk);
+       clock /= (reg + 1);
+
+       return clock;
+}
+
 static void cm_print_clock_quick_summary(void)
 {
        printf("MPU       %10ld kHz\n", cm_get_mpu_clk_hz() / 1000);
@@ -518,6 +531,7 @@ static void cm_print_clock_quick_summary(void)
        printf("MMC         %8d kHz\n", cm_get_mmc_controller_clk_hz() / 1000);
        printf("QSPI        %8d kHz\n", cm_get_qspi_controller_clk_hz() / 1000);
        printf("UART        %8d kHz\n", cm_get_l4_sp_clk_hz() / 1000);
+       printf("SPI         %8d kHz\n", cm_get_spi_controller_clk_hz() / 1000);
 }
 
 int set_cpu_clk_info(void)
index b8c9bce1e03890ff154d0138d0c30c1286317ac1..0be643c817971fce5d7bbc68f0460420cfdecae7 100644 (file)
@@ -38,8 +38,7 @@ void sys_mgr_frzctrl_freeze_req(void)
        /* Freeze channel 0 to 2 */
        for (channel_id = 0; channel_id <= 2; channel_id++) {
                ioctrl_reg_offset = (u32)(
-                       &freeze_controller_base->vioctrl +
-                       (channel_id << SYSMGR_FRZCTRL_VIOCTRL_SHIFT));
+                       &freeze_controller_base->vioctrl + channel_id);
 
                /*
                 * Assert active low enrnsl, plniotri
@@ -120,8 +119,7 @@ void sys_mgr_frzctrl_thaw_req(void)
        /* Thaw channel 0 to 2 */
        for (channel_id = 0; channel_id <= 2; channel_id++) {
                ioctrl_reg_offset
-                       = (u32)(&freeze_controller_base->vioctrl
-                               + (channel_id << SYSMGR_FRZCTRL_VIOCTRL_SHIFT));
+                       = (u32)(&freeze_controller_base->vioctrl + channel_id);
 
                /*
                 * Assert active low bhniotri signal and
index 2f2e9fcc7c89e4809e247bc61bb06bc968dcee35..afed773c63171d49ba4c17275ce1e66845214186 100644 (file)
@@ -7,13 +7,6 @@
 #include <config.h>
 #include <version.h>
 
-/* Save the parameter pass in by previous boot loader */
-.global save_boot_params
-save_boot_params:
-       /* no parameter to save */
-       bx      lr
-
-
 /* Set up the platform, once the cpu has been initialized */
 .globl lowlevel_init
 lowlevel_init:
index 8c3e5f7cd423c608ade2409fc233c0c706251b9d..7873c38e2b1445bb414471cd084b5b2eea60bd4f 100644 (file)
@@ -9,6 +9,7 @@
 #include <altera.h>
 #include <miiphy.h>
 #include <netdev.h>
+#include <watchdog.h>
 #include <asm/arch/reset_manager.h>
 #include <asm/arch/system_manager.h>
 #include <asm/arch/dwmmc.h>
@@ -150,14 +151,23 @@ static inline void socfpga_fpga_add(void) {}
 
 int arch_cpu_init(void)
 {
+#ifdef CONFIG_HW_WATCHDOG
+       /*
+        * In case the watchdog is enabled, make sure to (re-)configure it
+        * so that the defined timeout is valid. Otherwise the SPL (Perloader)
+        * timeout value is still active which might too short for Linux
+        * booting.
+        */
+       hw_watchdog_init();
+#else
        /*
         * If the HW watchdog is NOT enabled, make sure it is not running,
         * for example because it was enabled in the preloader. This might
         * trigger a watchdog-triggered reboot of Linux kernel later.
         */
-#ifndef CONFIG_HW_WATCHDOG
        socfpga_watchdog_reset();
 #endif
+
        return 0;
 }
 
@@ -202,6 +212,12 @@ int arch_early_init_r(void)
 
        /* Add device descriptor to FPGA device table */
        socfpga_fpga_add();
+
+#ifdef CONFIG_DESIGNWARE_SPI
+       /* Get Designware SPI controller out of reset */
+       socfpga_spim_enable();
+#endif
+
        return 0;
 }
 
index 1d3a95d0c8e73cef22666f5f8adf42ba77e4f471..25921e76c4135582025bdcd520a0881758122997 100644 (file)
@@ -104,3 +104,12 @@ void socfpga_emac_reset(int enable)
 #endif
        }
 }
+
+/* SPI Master enable (its held in reset by the preloader) */
+void socfpga_spim_enable(void)
+{
+       const void *reset = &reset_manager_base->per_mod_reset;
+
+       clrbits_le32(reset, (1 << RSTMGR_PERMODRST_SPIM0_LSB) |
+                    (1 << RSTMGR_PERMODRST_SPIM1_LSB));
+}
diff --git a/arch/arm/cpu/armv7/stv0991/Makefile b/arch/arm/cpu/armv7/stv0991/Makefile
new file mode 100644 (file)
index 0000000..95641d3
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# (C) Copyright 2014
+# Vikas Manocha, ST Microelectronics, vikas.manocha@stcom
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := timer.o clock.o pinmux.o reset.o
+obj-y  += lowlevel.o
diff --git a/arch/arm/cpu/armv7/stv0991/clock.c b/arch/arm/cpu/armv7/stv0991/clock.c
new file mode 100644 (file)
index 0000000..70b8a8d
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/io.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/stv0991_cgu.h>
+#include<asm/arch/stv0991_periph.h>
+
+static struct stv0991_cgu_regs *const stv0991_cgu_regs = \
+                               (struct stv0991_cgu_regs *) (CGU_BASE_ADDR);
+
+void enable_pll1(void)
+{
+       /* pll1 already configured for 1000Mhz, just need to enable it */
+       writel(readl(&stv0991_cgu_regs->pll1_ctrl) & ~(0x01),
+                       &stv0991_cgu_regs->pll1_ctrl);
+}
+
+void clock_setup(int peripheral)
+{
+       switch (peripheral) {
+       case UART_CLOCK_CFG:
+               writel(UART_CLK_CFG, &stv0991_cgu_regs->uart_freq);
+               break;
+       case ETH_CLOCK_CFG:
+               enable_pll1();
+               writel(ETH_CLK_CFG, &stv0991_cgu_regs->eth_freq);
+
+               /* Clock selection for ethernet tx_clk & rx_clk*/
+               writel((readl(&stv0991_cgu_regs->eth_ctrl) & ETH_CLK_MASK)
+                               | ETH_CLK_CTRL, &stv0991_cgu_regs->eth_ctrl);
+
+               break;
+       default:
+               break;
+       }
+}
diff --git a/arch/arm/cpu/armv7/stv0991/lowlevel.S b/arch/arm/cpu/armv7/stv0991/lowlevel.S
new file mode 100644 (file)
index 0000000..6dafba3
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * (C) Copyright 2014 stmicroelectronics
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <linux/linkage.h>
+
+ENTRY(lowlevel_init)
+       mov     pc, lr
+ENDPROC(lowlevel_init)
diff --git a/arch/arm/cpu/armv7/stv0991/pinmux.c b/arch/arm/cpu/armv7/stv0991/pinmux.c
new file mode 100644 (file)
index 0000000..1d086a2
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/io.h>
+#include <asm/arch/stv0991_creg.h>
+#include <asm/arch/stv0991_periph.h>
+#include <asm/arch/hardware.h>
+
+static struct stv0991_creg *const stv0991_creg = \
+                       (struct stv0991_creg *)CREG_BASE_ADDR;
+
+int stv0991_pinmux_config(int peripheral)
+{
+       switch (peripheral) {
+       case UART_GPIOC_30_31:
+               /* SSDA/SSCL pad muxing to UART Rx/Dx */
+               writel((readl(&stv0991_creg->mux12) & GPIOC_31_MUX_MASK) |
+                               CFG_GPIOC_31_UART_RX,
+                               &stv0991_creg->mux12);
+               writel((readl(&stv0991_creg->mux12) & GPIOC_30_MUX_MASK) |
+                               CFG_GPIOC_30_UART_TX,
+                               &stv0991_creg->mux12);
+               /* SSDA/SSCL pad config to push pull*/
+               writel((readl(&stv0991_creg->cfg_pad6) & GPIOC_31_MODE_MASK) |
+                               CFG_GPIOC_31_MODE_PP,
+                               &stv0991_creg->cfg_pad6);
+               writel((readl(&stv0991_creg->cfg_pad6) & GPIOC_30_MODE_MASK) |
+                               CFG_GPIOC_30_MODE_HIGH,
+                               &stv0991_creg->cfg_pad6);
+               break;
+       case UART_GPIOB_16_17:
+               /* ethernet rx_6/7 to UART Rx/Dx */
+               writel((readl(&stv0991_creg->mux7) & GPIOB_17_MUX_MASK) |
+                               CFG_GPIOB_17_UART_RX,
+                               &stv0991_creg->mux7);
+               writel((readl(&stv0991_creg->mux7) & GPIOB_16_MUX_MASK) |
+                               CFG_GPIOB_16_UART_TX,
+                               &stv0991_creg->mux7);
+               break;
+       case ETH_GPIOB_10_31_C_0_4:
+               writel(readl(&stv0991_creg->mux6) & 0x000000FF,
+                               &stv0991_creg->mux6);
+               writel(0x00000000, &stv0991_creg->mux7);
+               writel(0x00000000, &stv0991_creg->mux8);
+               writel(readl(&stv0991_creg->mux9) & 0xFFF00000,
+                               &stv0991_creg->mux9);
+               /* Ethernet Voltage configuration to 1.8V*/
+               writel((readl(&stv0991_creg->vdd_pad1) & VDD_ETH_PS_MASK) |
+                               ETH_VDD_CFG, &stv0991_creg->vdd_pad1);
+               writel((readl(&stv0991_creg->vdd_pad1) & VDD_ETH_PS_MASK) |
+                               ETH_M_VDD_CFG, &stv0991_creg->vdd_pad1);
+
+               break;
+       default:
+               break;
+       }
+       return 0;
+}
diff --git a/arch/arm/cpu/armv7/stv0991/reset.c b/arch/arm/cpu/armv7/stv0991/reset.c
new file mode 100644 (file)
index 0000000..3384b32
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/stv0991_wdru.h>
+void reset_cpu(ulong ignored)
+{
+       puts("System is going to reboot ...\n");
+       /*
+        * This 1 second delay will allow the above message
+        * to be printed before reset
+        */
+       udelay((1000 * 1000));
+
+       /* Setting bit 1 of the WDRU unit will reset the SoC */
+       writel(WDRU_RST_SYS, &stv0991_wd_ru_ptr->wdru_ctrl1);
+
+       /* system will restart */
+       while (1)
+               ;
+}
diff --git a/arch/arm/cpu/armv7/stv0991/timer.c b/arch/arm/cpu/armv7/stv0991/timer.c
new file mode 100644 (file)
index 0000000..8654b8b
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch-stv0991/hardware.h>
+#include <asm/arch-stv0991/stv0991_cgu.h>
+#include <asm/arch-stv0991/stv0991_gpt.h>
+
+static struct stv0991_cgu_regs *const stv0991_cgu_regs = \
+                               (struct stv0991_cgu_regs *) (CGU_BASE_ADDR);
+
+#define READ_TIMER()   (readl(&gpt1_regs_ptr->cnt) & GPT_FREE_RUNNING)
+#define GPT_RESOLUTION (CONFIG_STV0991_HZ_CLOCK / CONFIG_STV0991_HZ)
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define timestamp gd->arch.tbl
+#define lastdec gd->arch.lastinc
+
+int timer_init(void)
+{
+       /* Timer1 clock configuration */
+       writel(TIMER1_CLK_CFG, &stv0991_cgu_regs->tim_freq);
+       writel(readl(&stv0991_cgu_regs->cgu_enable_2) |
+                       TIMER1_CLK_EN, &stv0991_cgu_regs->cgu_enable_2);
+
+       /* Stop the timer */
+       writel(readl(&gpt1_regs_ptr->cr1) & ~GPT_CR1_CEN, &gpt1_regs_ptr->cr1);
+       writel(GPT_PRESCALER_128, &gpt1_regs_ptr->psc);
+       /* Configure timer for auto-reload */
+       writel(readl(&gpt1_regs_ptr->cr1) | GPT_MODE_AUTO_RELOAD,
+                       &gpt1_regs_ptr->cr1);
+
+       /* load value for free running */
+       writel(GPT_FREE_RUNNING, &gpt1_regs_ptr->arr);
+
+       /* start timer */
+       writel(readl(&gpt1_regs_ptr->cr1) | GPT_CR1_CEN,
+                       &gpt1_regs_ptr->cr1);
+
+       /* Reset the timer */
+       lastdec = READ_TIMER();
+       timestamp = 0;
+
+       return 0;
+}
+
+/*
+ * timer without interrupts
+ */
+ulong get_timer(ulong base)
+{
+       return (get_timer_masked() / GPT_RESOLUTION) - base;
+}
+
+void __udelay(unsigned long usec)
+{
+       ulong tmo;
+       ulong start = get_timer_masked();
+       ulong tenudelcnt = CONFIG_STV0991_HZ_CLOCK / (1000 * 100);
+       ulong rndoff;
+
+       rndoff = (usec % 10) ? 1 : 0;
+
+       /* tenudelcnt timer tick gives 10 microsecconds delay */
+       tmo = ((usec / 10) + rndoff) * tenudelcnt;
+
+       while ((ulong) (get_timer_masked() - start) < tmo)
+               ;
+}
+
+ulong get_timer_masked(void)
+{
+       ulong now = READ_TIMER();
+
+       if (now >= lastdec) {
+               /* normal mode */
+               timestamp += now - lastdec;
+       } else {
+               /* we have an overflow ... */
+               timestamp += now + GPT_FREE_RUNNING - lastdec;
+       }
+       lastdec = now;
+
+       return timestamp;
+}
+
+void udelay_masked(unsigned long usec)
+{
+       return udelay(usec);
+}
+
+/*
+ * This function is derived from PowerPC code (read timebase as long long).
+ * On ARM it just returns the timer value.
+ */
+unsigned long long get_ticks(void)
+{
+       return get_timer(0);
+}
+
+/*
+ * This function is derived from PowerPC code (timebase clock frequency).
+ * On ARM it returns the number of timer ticks per second.
+ */
+ulong get_tbclk(void)
+{
+       return CONFIG_STV0991_HZ;
+}
index 24f1daee64766d1631122a65dcb13dcb88dbc8ea..1720f7db01ddf7594a53acf43aed660caf178705 100644 (file)
 obj-y  += timer.o
 obj-y  += board.o
 obj-y  += clock.o
+obj-y  += cpu_info.o
 obj-y  += pinmux.o
-obj-$(CONFIG_SUN6I)    += prcm.o
-obj-$(CONFIG_SUN8I)    += prcm.o
-obj-$(CONFIG_SUN4I)    += clock_sun4i.o
-obj-$(CONFIG_SUN5I)    += clock_sun4i.o
-obj-$(CONFIG_SUN6I)    += clock_sun6i.o
-obj-$(CONFIG_SUN7I)    += clock_sun4i.o
-obj-$(CONFIG_SUN8I)    += clock_sun6i.o
+obj-y  += usbc.o
+obj-$(CONFIG_MACH_SUN6I)       += prcm.o
+obj-$(CONFIG_MACH_SUN8I)       += prcm.o
+obj-$(CONFIG_MACH_SUN6I)       += p2wi.o
+obj-$(CONFIG_MACH_SUN8I)       += rsb.o
+obj-$(CONFIG_MACH_SUN4I)       += clock_sun4i.o
+obj-$(CONFIG_MACH_SUN5I)       += clock_sun4i.o
+obj-$(CONFIG_MACH_SUN6I)       += clock_sun6i.o
+obj-$(CONFIG_MACH_SUN7I)       += clock_sun4i.o
+obj-$(CONFIG_MACH_SUN8I)       += clock_sun6i.o
 
 ifndef CONFIG_SPL_BUILD
-obj-y  += cpu_info.o
 ifdef CONFIG_ARMV7_PSCI
 obj-y  += psci.o
 endif
 endif
 
 ifdef CONFIG_SPL_BUILD
-obj-$(CONFIG_SUN4I)    += dram.o
-obj-$(CONFIG_SUN5I)    += dram.o
-obj-$(CONFIG_SUN7I)    += dram.o
+obj-$(CONFIG_MACH_SUN4I)       += dram_sun4i.o
+obj-$(CONFIG_MACH_SUN5I)       += dram_sun4i.o
+obj-$(CONFIG_MACH_SUN6I)       += dram_sun6i.o
+obj-$(CONFIG_MACH_SUN7I)       += dram_sun4i.o
+obj-$(CONFIG_MACH_SUN8I)       += dram_sun8i.o
 ifdef CONFIG_SPL_FEL
 obj-y  += start.o
 endif
index 06eb6768e8f2b58ddbe1b2408157f8e4e89ccaab..bc98c564f9828fe5580a7e39c04b1e57f638f852 100644 (file)
@@ -51,7 +51,7 @@ u32 spl_boot_mode(void)
 int gpio_init(void)
 {
 #if CONFIG_CONS_INDEX == 1 && defined(CONFIG_UART0_PORT_F)
-#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN7I)
        /* disable GPB22,23 as uart0 tx,rx to avoid conflict */
        sunxi_gpio_set_cfgpin(SUNXI_GPB(22), SUNXI_GPIO_INPUT);
        sunxi_gpio_set_cfgpin(SUNXI_GPB(23), SUNXI_GPIO_INPUT);
@@ -59,23 +59,23 @@ int gpio_init(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPF(2), SUNXI_GPF2_UART0_TX);
        sunxi_gpio_set_cfgpin(SUNXI_GPF(4), SUNXI_GPF4_UART0_RX);
        sunxi_gpio_set_pull(SUNXI_GPF(4), 1);
-#elif CONFIG_CONS_INDEX == 1 && (defined(CONFIG_SUN4I) || defined(CONFIG_SUN7I))
+#elif CONFIG_CONS_INDEX == 1 && (defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN7I))
        sunxi_gpio_set_cfgpin(SUNXI_GPB(22), SUN4I_GPB22_UART0_TX);
        sunxi_gpio_set_cfgpin(SUNXI_GPB(23), SUN4I_GPB23_UART0_RX);
        sunxi_gpio_set_pull(SUNXI_GPB(23), SUNXI_GPIO_PULL_UP);
-#elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_SUN5I)
+#elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_MACH_SUN5I)
        sunxi_gpio_set_cfgpin(SUNXI_GPB(19), SUN5I_GPB19_UART0_TX);
        sunxi_gpio_set_cfgpin(SUNXI_GPB(20), SUN5I_GPB20_UART0_RX);
        sunxi_gpio_set_pull(SUNXI_GPB(20), SUNXI_GPIO_PULL_UP);
-#elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_SUN6I)
+#elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_MACH_SUN6I)
        sunxi_gpio_set_cfgpin(SUNXI_GPH(20), SUN6I_GPH20_UART0_TX);
        sunxi_gpio_set_cfgpin(SUNXI_GPH(21), SUN6I_GPH21_UART0_RX);
        sunxi_gpio_set_pull(SUNXI_GPH(21), SUNXI_GPIO_PULL_UP);
-#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_SUN5I)
+#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN5I)
        sunxi_gpio_set_cfgpin(SUNXI_GPG(3), SUN5I_GPG3_UART1_TX);
        sunxi_gpio_set_cfgpin(SUNXI_GPG(4), SUN5I_GPG4_UART1_RX);
        sunxi_gpio_set_pull(SUNXI_GPG(4), SUNXI_GPIO_PULL_UP);
-#elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_SUN8I)
+#elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN8I)
        sunxi_gpio_set_cfgpin(SUNXI_GPL(2), SUN8I_GPL2_R_UART_TX);
        sunxi_gpio_set_cfgpin(SUNXI_GPL(3), SUN8I_GPL3_R_UART_RX);
        sunxi_gpio_set_pull(SUNXI_GPL(3), SUNXI_GPIO_PULL_UP);
@@ -88,7 +88,7 @@ int gpio_init(void)
 
 void reset_cpu(ulong addr)
 {
-#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN5I) || defined(CONFIG_MACH_SUN7I)
        static const struct sunxi_wdog *wdog =
                 &((struct sunxi_timer_reg *)SUNXI_TIMER_BASE)->wdog;
 
@@ -100,7 +100,7 @@ void reset_cpu(ulong addr)
                /* sun5i sometimes gets stuck without this */
                writel(WDT_MODE_RESET_EN | WDT_MODE_EN, &wdog->mode);
        }
-#else /* CONFIG_SUN6I || CONFIG_SUN8I || .. */
+#else /* CONFIG_MACH_SUN6I || CONFIG_MACH_SUN8I || .. */
        static const struct sunxi_wdog *wdog =
                 ((struct sunxi_timer_reg *)SUNXI_TIMER_BASE)->wdog;
 
@@ -114,8 +114,14 @@ void reset_cpu(ulong addr)
 /* do some early init */
 void s_init(void)
 {
-#if !defined CONFIG_SPL_BUILD && (defined CONFIG_SUN7I || \
-               defined CONFIG_SUN6I || defined CONFIG_SUN8I)
+#if defined CONFIG_SPL_BUILD && \
+               (defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I)
+       /* Magic (undocmented) value taken from boot0, without this DRAM
+        * access gets messed up (seems cache related) */
+       setbits_le32(SUNXI_SRAMC_BASE + 0x44, 0x1800);
+#endif
+#if !defined CONFIG_SPL_BUILD && (defined CONFIG_MACH_SUN7I || \
+               defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I)
        /* Enable SMP mode for CPU0, by setting bit 6 of Auxiliary Ctl reg */
        asm volatile(
                "mrc p15, 0, r0, c1, c0, 1\n"
index 4a0d64fb30e64db6b996d35e4134469a0ccfd385..49f4032e9cfda56acab108adf57278c63e5e63a0 100644 (file)
@@ -35,7 +35,7 @@ void clock_init_safe(void)
               APB0_DIV_1 << APB0_DIV_SHIFT |
               CPU_CLK_SRC_PLL1 << CPU_CLK_SRC_SHIFT,
               &ccm->cpu_ahb_apb0_cfg);
-#ifdef CONFIG_SUN7I
+#ifdef CONFIG_MACH_SUN7I
        setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_DMA);
 #endif
        writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg);
@@ -180,6 +180,21 @@ void clock_set_pll1(unsigned int hz)
 }
 #endif
 
+void clock_set_pll3(unsigned int clk)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       if (clk == 0) {
+               clrbits_le32(&ccm->pll3_cfg, CCM_PLL3_CTRL_EN);
+               return;
+       }
+
+       /* PLL3 rate = 3000000 * m */
+       writel(CCM_PLL3_CTRL_EN | CCM_PLL3_CTRL_INTEGER_MODE |
+              CCM_PLL3_CTRL_M(clk / 3000000), &ccm->pll3_cfg);
+}
+
 unsigned int clock_get_pll5p(void)
 {
        struct sunxi_ccm_reg *const ccm =
@@ -200,3 +215,15 @@ unsigned int clock_get_pll6(void)
        int k = ((rval & CCM_PLL6_CTRL_K_MASK) >> CCM_PLL6_CTRL_K_SHIFT) + 1;
        return 24000000 * n * k / 2;
 }
+
+void clock_set_de_mod_clock(u32 *clk_cfg, unsigned int hz)
+{
+       int pll = clock_get_pll5p();
+       int div = 1;
+
+       while ((pll / div) > hz)
+               div++;
+
+       writel(CCM_DE_CTRL_GATE | CCM_DE_CTRL_RST | CCM_DE_CTRL_PLL5P |
+              CCM_DE_CTRL_M(div), clk_cfg);
+}
index 1eae9767d0da4ecad39f70be69727d904a141732..d7a7040b72c70a27948841c038d4312b0cda46d2 100644 (file)
 #include <asm/arch/prcm.h>
 #include <asm/arch/sys_proto.h>
 
+#ifdef CONFIG_SPL_BUILD
+void clock_init_safe(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       struct sunxi_prcm_reg * const prcm =
+               (struct sunxi_prcm_reg *)SUNXI_PRCM_BASE;
+
+       /* Set PLL ldo voltage without this PLL6 does not work properly */
+       clrsetbits_le32(&prcm->pll_ctrl1, PRCM_PLL_CTRL_LDO_KEY_MASK,
+                       PRCM_PLL_CTRL_LDO_KEY);
+       clrsetbits_le32(&prcm->pll_ctrl1, ~PRCM_PLL_CTRL_LDO_KEY_MASK,
+               PRCM_PLL_CTRL_LDO_DIGITAL_EN | PRCM_PLL_CTRL_LDO_ANALOG_EN |
+               PRCM_PLL_CTRL_EXT_OSC_EN | PRCM_PLL_CTRL_LDO_OUT_L(1140));
+       clrbits_le32(&prcm->pll_ctrl1, PRCM_PLL_CTRL_LDO_KEY_MASK);
+
+       clock_set_pll1(408000000);
+
+       writel(AHB1_ABP1_DIV_DEFAULT, &ccm->ahb1_apb1_div);
+
+       writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg);
+
+       writel(MBUS_CLK_DEFAULT, &ccm->mbus0_clk_cfg);
+       writel(MBUS_CLK_DEFAULT, &ccm->mbus1_clk_cfg);
+}
+#endif
+
 void clock_init_uart(void)
 {
        struct sunxi_ccm_reg *const ccm =
@@ -65,6 +92,87 @@ int clock_twi_onoff(int port, int state)
        return 0;
 }
 
+#ifdef CONFIG_SPL_BUILD
+void clock_set_pll1(unsigned int clk)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       const int p = 0;
+       int k = 1;
+       int m = 1;
+
+       if (clk > 1152000000) {
+               k = 2;
+       } else if (clk > 768000000) {
+               k = 3;
+               m = 2;
+       }
+
+       /* Switch to 24MHz clock while changing PLL1 */
+       writel(AXI_DIV_3 << AXI_DIV_SHIFT |
+              ATB_DIV_2 << ATB_DIV_SHIFT |
+              CPU_CLK_SRC_OSC24M << CPU_CLK_SRC_SHIFT,
+              &ccm->cpu_axi_cfg);
+
+       /*
+        * sun6i: PLL1 rate = ((24000000 * n * k) >> 0) / m   (p is ignored)
+        * sun8i: PLL1 rate = ((24000000 * n * k) >> p) / m
+        */
+       writel(CCM_PLL1_CTRL_EN | CCM_PLL1_CTRL_P(p) |
+              CCM_PLL1_CTRL_N(clk / (24000000 * k / m)) |
+              CCM_PLL1_CTRL_K(k) | CCM_PLL1_CTRL_M(m), &ccm->pll1_cfg);
+       sdelay(200);
+
+       /* Switch CPU to PLL1 */
+       writel(AXI_DIV_3 << AXI_DIV_SHIFT |
+              ATB_DIV_2 << ATB_DIV_SHIFT |
+              CPU_CLK_SRC_PLL1 << CPU_CLK_SRC_SHIFT,
+              &ccm->cpu_axi_cfg);
+}
+#endif
+
+void clock_set_pll3(unsigned int clk)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       const int m = 8; /* 3 MHz steps just like sun4i, sun5i and sun7i */
+
+       if (clk == 0) {
+               clrbits_le32(&ccm->pll3_cfg, CCM_PLL3_CTRL_EN);
+               return;
+       }
+
+       /* PLL3 rate = 24000000 * n / m */
+       writel(CCM_PLL3_CTRL_EN | CCM_PLL3_CTRL_INTEGER_MODE |
+              CCM_PLL3_CTRL_N(clk / (24000000 / m)) | CCM_PLL3_CTRL_M(m),
+              &ccm->pll3_cfg);
+}
+
+void clock_set_pll5(unsigned int clk, bool sigma_delta_enable)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       const int max_n = 32;
+       int k = 1, m = 2;
+
+       if (sigma_delta_enable)
+               writel(CCM_PLL5_PATTERN, &ccm->pll5_pattern_cfg);
+
+       /* PLL5 rate = 24000000 * n * k / m */
+       if (clk > 24000000 * k * max_n / m) {
+               m = 1;
+               if (clk > 24000000 * k * max_n / m)
+                       k = 2;
+       }
+       writel(CCM_PLL5_CTRL_EN |
+              (sigma_delta_enable ? CCM_PLL5_CTRL_SIGMA_DELTA_EN : 0) |
+              CCM_PLL5_CTRL_UPD |
+              CCM_PLL5_CTRL_N(clk / (24000000 * k / m)) |
+              CCM_PLL5_CTRL_K(k) | CCM_PLL5_CTRL_M(m), &ccm->pll5_cfg);
+
+       udelay(5500);
+}
+
 unsigned int clock_get_pll6(void)
 {
        struct sunxi_ccm_reg *const ccm =
@@ -74,3 +182,15 @@ unsigned int clock_get_pll6(void)
        int k = ((rval & CCM_PLL6_CTRL_K_MASK) >> CCM_PLL6_CTRL_K_SHIFT) + 1;
        return 24000000 * n * k / 2;
 }
+
+void clock_set_de_mod_clock(u32 *clk_cfg, unsigned int hz)
+{
+       int pll = clock_get_pll6() * 2;
+       int div = 1;
+
+       while ((pll / div) > hz)
+               div++;
+
+       writel(CCM_DE_CTRL_GATE | CCM_DE_CTRL_PLL6_2X | CCM_DE_CTRL_M(div),
+              clk_cfg);
+}
index 4f2a09cd2e28cbd69a498bab61c06341f4235473..b6cb9dea6434e4941527bb2fb363a84feb0f48f4 100644 (file)
@@ -9,13 +9,40 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/cpu.h>
+#include <asm/arch/clock.h>
+#include <axp221.h>
+
+#ifdef CONFIG_MACH_SUN6I
+int sunxi_get_ss_bonding_id(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       static int bonding_id = -1;
+
+       if (bonding_id != -1)
+               return bonding_id;
+
+       /* Enable Security System */
+       setbits_le32(&ccm->ahb_reset0_cfg, 1 << AHB_RESET_OFFSET_SS);
+       setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_SS);
+
+       bonding_id = readl(SUNXI_SS_BASE);
+       bonding_id = (bonding_id >> 16) & 0x7;
+
+       /* Disable Security System again */
+       clrbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_SS);
+       clrbits_le32(&ccm->ahb_reset0_cfg, 1 << AHB_RESET_OFFSET_SS);
+
+       return bonding_id;
+}
+#endif
 
 #ifdef CONFIG_DISPLAY_CPUINFO
 int print_cpuinfo(void)
 {
-#ifdef CONFIG_SUN4I
+#ifdef CONFIG_MACH_SUN4I
        puts("CPU:   Allwinner A10 (SUN4I)\n");
-#elif defined CONFIG_SUN5I
+#elif defined CONFIG_MACH_SUN5I
        u32 val = readl(SUNXI_SID_BASE + 0x08);
        switch ((val >> 12) & 0xf) {
        case 0: puts("CPU:   Allwinner A12 (SUN5I)\n"); break;
@@ -23,11 +50,21 @@ int print_cpuinfo(void)
        case 7: puts("CPU:   Allwinner A10s (SUN5I)\n"); break;
        default: puts("CPU:   Allwinner A1X (SUN5I)\n");
        }
-#elif defined CONFIG_SUN6I
-       puts("CPU:   Allwinner A31 (SUN6I)\n");
-#elif defined CONFIG_SUN7I
+#elif defined CONFIG_MACH_SUN6I
+       switch (sunxi_get_ss_bonding_id()) {
+       case SUNXI_SS_BOND_ID_A31:
+               puts("CPU:   Allwinner A31 (SUN6I)\n");
+               break;
+       case SUNXI_SS_BOND_ID_A31S:
+               puts("CPU:   Allwinner A31s (SUN6I)\n");
+               break;
+       default:
+               printf("CPU:   Allwinner A31? (SUN6I, id: %d)\n",
+                      sunxi_get_ss_bonding_id());
+       }
+#elif defined CONFIG_MACH_SUN7I
        puts("CPU:   Allwinner A20 (SUN7I)\n");
-#elif defined CONFIG_SUN8I
+#elif defined CONFIG_MACH_SUN8I
        puts("CPU:   Allwinner A23 (SUN8I)\n");
 #else
 #warning Please update cpu_info.c with correct CPU information
@@ -36,3 +73,21 @@ int print_cpuinfo(void)
        return 0;
 }
 #endif
+
+int sunxi_get_sid(unsigned int *sid)
+{
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+#ifdef CONFIG_AXP221_POWER
+       return axp221_get_sid(sid);
+#else
+       return -ENODEV;
+#endif
+#else
+       int i;
+
+       for (i = 0; i< 4; i++)
+               sid[i] = readl(SUNXI_SID_BASE + 4 * i);
+
+       return 0;
+#endif
+}
similarity index 95%
rename from arch/arm/cpu/armv7/sunxi/dram.c
rename to arch/arm/cpu/armv7/sunxi/dram_sun4i.c
index 3cf3cbf19adb25fce553a4f88a8d35ca6909999a..c736fa3b474f5bbb3ed704fea566985c6c9b1011 100644 (file)
 #define CPU_CFG_CHIP_REV_C2 0x2
 #define CPU_CFG_CHIP_REV_B 0x3
 
-/*
- * Wait up to 1s for value to be set in given part of reg.
- */
-static void await_completion(u32 *reg, u32 mask, u32 val)
-{
-       unsigned long tmo = timer_get_us() + 1000000;
-
-       while ((readl(reg) & mask) != val) {
-               if (timer_get_us() > tmo)
-                       panic("Timeout initialising DRAM\n");
-       }
-}
-
 /*
  * Wait up to 1s for mask to be clear in given reg.
  */
 static inline void await_bits_clear(u32 *reg, u32 mask)
 {
-       await_completion(reg, mask, 0);
+       mctl_await_completion(reg, mask, 0);
 }
 
 /*
@@ -61,7 +48,7 @@ static inline void await_bits_clear(u32 *reg, u32 mask)
  */
 static inline void await_bits_set(u32 *reg, u32 mask)
 {
-       await_completion(reg, mask, mask);
+       mctl_await_completion(reg, mask, mask);
 }
 
 /*
@@ -74,7 +61,7 @@ static void mctl_ddr3_reset(void)
        struct sunxi_dram_reg *dram =
                        (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
 
-#ifdef CONFIG_SUN4I
+#ifdef CONFIG_MACH_SUN4I
        struct sunxi_timer_reg *timer =
                        (struct sunxi_timer_reg *)SUNXI_TIMER_BASE;
        u32 reg_val;
@@ -113,7 +100,7 @@ static void mctl_set_drive(void)
 {
        struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
 
-#ifdef CONFIG_SUN7I
+#ifdef CONFIG_MACH_SUN7I
        clrsetbits_le32(&dram->mcr, DRAM_MCR_MODE_NORM(0x3) | (0x3 << 28),
 #else
        clrsetbits_le32(&dram->mcr, DRAM_MCR_MODE_NORM(0x3),
@@ -202,7 +189,7 @@ static void mctl_enable_dllx(u32 phase)
 }
 
 static u32 hpcr_value[32] = {
-#ifdef CONFIG_SUN5I
+#ifdef CONFIG_MACH_SUN5I
        0, 0, 0, 0,
        0, 0, 0, 0,
        0, 0, 0, 0,
@@ -212,7 +199,7 @@ static u32 hpcr_value[32] = {
        0x0301, 0x0301, 0x0301, 0x0301,
        0x0301, 0x0301, 0x0301, 0
 #endif
-#ifdef CONFIG_SUN4I
+#ifdef CONFIG_MACH_SUN4I
        0x0301, 0x0301, 0x0301, 0x0301,
        0x0301, 0x0301, 0, 0,
        0, 0, 0, 0,
@@ -222,7 +209,7 @@ static u32 hpcr_value[32] = {
        0x1035, 0x1031, 0x0731, 0x1035,
        0x1031, 0x0301, 0x0301, 0x0731
 #endif
-#ifdef CONFIG_SUN7I
+#ifdef CONFIG_MACH_SUN7I
        0x0301, 0x0301, 0x0301, 0x0301,
        0x0301, 0x0301, 0x0301, 0x0301,
        0, 0, 0, 0,
@@ -304,7 +291,7 @@ static void mctl_setup_dram_clock(u32 clk, u32 mbus_clk)
 
        setbits_le32(&ccm->pll5_cfg, CCM_PLL5_CTRL_DDR_CLK);
 
-#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN7I)
        /* reset GPS */
        clrbits_le32(&ccm->gps_clk_cfg, CCM_GPS_CTRL_RESET | CCM_GPS_CTRL_GATE);
        setbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_GPS);
@@ -318,7 +305,7 @@ static void mctl_setup_dram_clock(u32 clk, u32 mbus_clk)
 
        /* PLL5P and PLL6 are the potential clock sources for MBUS */
        pll6x_clk = clock_get_pll6() / 1000000;
-#ifdef CONFIG_SUN7I
+#ifdef CONFIG_MACH_SUN7I
        pll6x_clk *= 2; /* sun7i uses PLL6*2, sun5i uses just PLL6 */
 #endif
        pll5p_clk = clock_get_pll5p() / 1000000;
@@ -348,7 +335,7 @@ static void mctl_setup_dram_clock(u32 clk, u32 mbus_clk)
         * open DRAMC AHB & DLL register clock
         * close it first
         */
-#if defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN5I) || defined(CONFIG_MACH_SUN7I)
        clrbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM | CCM_AHB_GATE_DLL);
 #else
        clrbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM);
@@ -356,7 +343,7 @@ static void mctl_setup_dram_clock(u32 clk, u32 mbus_clk)
        udelay(22);
 
        /* then open it */
-#if defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN5I) || defined(CONFIG_MACH_SUN7I)
        setbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM | CCM_AHB_GATE_DLL);
 #else
        setbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM);
@@ -417,7 +404,7 @@ static int dramc_scan_readpipe(void)
 
 static void dramc_clock_output_en(u32 on)
 {
-#if defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN5I) || defined(CONFIG_MACH_SUN7I)
        struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
 
        if (on)
@@ -425,12 +412,12 @@ static void dramc_clock_output_en(u32 on)
        else
                clrbits_le32(&dram->mcr, DRAM_MCR_DCLK_OUT);
 #endif
-#ifdef CONFIG_SUN4I
+#ifdef CONFIG_MACH_SUN4I
        struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
        if (on)
-               setbits_le32(&ccm->dram_clk_cfg, CCM_DRAM_CTRL_DCLK_OUT);
+               setbits_le32(&ccm->dram_clk_gate, CCM_DRAM_CTRL_DCLK_OUT);
        else
-               clrbits_le32(&ccm->dram_clk_cfg, CCM_DRAM_CTRL_DCLK_OUT);
+               clrbits_le32(&ccm->dram_clk_gate, CCM_DRAM_CTRL_DCLK_OUT);
 #endif
 }
 
@@ -527,7 +514,7 @@ static void mctl_set_impedance(u32 zq, u32 odt_en)
        u32 reg_val;
        u32 zprog = zq & 0xFF, zdata = (zq >> 8) & 0xFFFFF;
 
-#ifndef CONFIG_SUN7I
+#ifndef CONFIG_MACH_SUN7I
        /* Appears that some kind of automatically initiated default
         * ZQ calibration is already in progress at this point on sun4i/sun5i
         * hardware, but not on sun7i. So it is reasonable to wait for its
@@ -539,7 +526,7 @@ static void mctl_set_impedance(u32 zq, u32 odt_en)
        if (!odt_en)
                return;
 
-#ifdef CONFIG_SUN7I
+#ifdef CONFIG_MACH_SUN7I
        /* Enabling ODT in SDR_IOCR on sun7i hardware results in a deadlock
         * unless bit 24 is set in SDR_ZQCR1. Not much is known about the
         * SDR_ZQCR1 register, but there are hints indicating that it might
@@ -597,7 +584,7 @@ static unsigned long dramc_init_helper(struct dram_para *para)
        /* dram clock off */
        dramc_clock_output_en(0);
 
-#ifdef CONFIG_SUN4I
+#ifdef CONFIG_MACH_SUN4I
        /* select dram controller 1 */
        writel(DRAM_CSEL_MAGIC, &dram->csel);
 #endif
@@ -654,7 +641,7 @@ static unsigned long dramc_init_helper(struct dram_para *para)
        writel(para->tpr2, &dram->tpr2);
 
        reg_val = DRAM_MR_BURST_LENGTH(0x0);
-#if (defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I))
+#if (defined(CONFIG_MACH_SUN5I) || defined(CONFIG_MACH_SUN7I))
        reg_val |= DRAM_MR_POWER_DOWN;
 #endif
        reg_val |= DRAM_MR_CAS_LAT(para->cas - 4);
@@ -668,7 +655,7 @@ static unsigned long dramc_init_helper(struct dram_para *para)
        /* disable drift compensation and set passive DQS window mode */
        clrsetbits_le32(&dram->ccr, DRAM_CCR_DQS_DRIFT_COMP, DRAM_CCR_DQS_GATE);
 
-#ifdef CONFIG_SUN7I
+#ifdef CONFIG_MACH_SUN7I
        /* Command rate timing mode 2T & 1T */
        if (para->tpr4 & 0x1)
                setbits_le32(&dram->ccr, DRAM_CCR_COMMAND_RATE_1T);
@@ -718,7 +705,7 @@ unsigned long dramc_init(struct dram_para *para)
        /* try to autodetect the DRAM bus width and density */
        para->io_width  = 16;
        para->bus_width = 32;
-#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN5I)
+#if defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN5I)
        /* only A0-A14 address lines on A10/A13, limiting max density to 4096 */
        para->density = 4096;
 #else
diff --git a/arch/arm/cpu/armv7/sunxi/dram_sun6i.c b/arch/arm/cpu/armv7/sunxi/dram_sun6i.c
new file mode 100644 (file)
index 0000000..5dbbf61
--- /dev/null
@@ -0,0 +1,411 @@
+/*
+ * Sun6i platform dram controller init.
+ *
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Berg Xing <bergxing@allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <errno.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/dram.h>
+#include <asm/arch/prcm.h>
+
+#define DRAM_CLK (CONFIG_DRAM_CLK * 1000000)
+
+struct dram_sun6i_para {
+       u8 bus_width;
+       u8 chan;
+       u8 rank;
+       u8 rows;
+       u16 page_size;
+};
+
+static void mctl_sys_init(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       const int dram_clk_div = 2;
+
+       clock_set_pll5(DRAM_CLK * dram_clk_div, false);
+
+       clrsetbits_le32(&ccm->dram_clk_cfg, CCM_DRAMCLK_CFG_DIV0_MASK,
+               CCM_DRAMCLK_CFG_DIV0(dram_clk_div) | CCM_DRAMCLK_CFG_RST |
+               CCM_DRAMCLK_CFG_UPD);
+       mctl_await_completion(&ccm->dram_clk_cfg, CCM_DRAMCLK_CFG_UPD, 0);
+
+       writel(MDFS_CLK_DEFAULT, &ccm->mdfs_clk_cfg);
+
+       /* deassert mctl reset */
+       setbits_le32(&ccm->ahb_reset0_cfg, 1 << AHB_RESET_OFFSET_MCTL);
+
+       /* enable mctl clock */
+       setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_MCTL);
+}
+
+static void mctl_dll_init(int ch_index, struct dram_sun6i_para *para)
+{
+       struct sunxi_mctl_phy_reg *mctl_phy;
+
+       if (ch_index == 0)
+               mctl_phy = (struct sunxi_mctl_phy_reg *)SUNXI_DRAM_PHY0_BASE;
+       else
+               mctl_phy = (struct sunxi_mctl_phy_reg *)SUNXI_DRAM_PHY1_BASE;
+
+       /* disable + reset dlls */
+       writel(MCTL_DLLCR_DISABLE, &mctl_phy->acdllcr);
+       writel(MCTL_DLLCR_DISABLE, &mctl_phy->dx0dllcr);
+       writel(MCTL_DLLCR_DISABLE, &mctl_phy->dx1dllcr);
+       if (para->bus_width == 32) {
+               writel(MCTL_DLLCR_DISABLE, &mctl_phy->dx2dllcr);
+               writel(MCTL_DLLCR_DISABLE, &mctl_phy->dx3dllcr);
+       }
+       udelay(2);
+
+       /* enable + reset dlls */
+       writel(0, &mctl_phy->acdllcr);
+       writel(0, &mctl_phy->dx0dllcr);
+       writel(0, &mctl_phy->dx1dllcr);
+       if (para->bus_width == 32) {
+               writel(0, &mctl_phy->dx2dllcr);
+               writel(0, &mctl_phy->dx3dllcr);
+       }
+       udelay(22);
+
+       /* enable and release reset of dlls */
+       writel(MCTL_DLLCR_NRESET, &mctl_phy->acdllcr);
+       writel(MCTL_DLLCR_NRESET, &mctl_phy->dx0dllcr);
+       writel(MCTL_DLLCR_NRESET, &mctl_phy->dx1dllcr);
+       if (para->bus_width == 32) {
+               writel(MCTL_DLLCR_NRESET, &mctl_phy->dx2dllcr);
+               writel(MCTL_DLLCR_NRESET, &mctl_phy->dx3dllcr);
+       }
+       udelay(22);
+}
+
+static bool mctl_rank_detect(u32 *gsr0, int rank)
+{
+       const u32 done = MCTL_DX_GSR0_RANK0_TRAIN_DONE << rank;
+       const u32 err = MCTL_DX_GSR0_RANK0_TRAIN_ERR << rank;
+
+       mctl_await_completion(gsr0, done, done);
+       mctl_await_completion(gsr0 + 0x10, done, done);
+
+       return !(readl(gsr0) & err) && !(readl(gsr0 + 0x10) & err);
+}
+
+static void mctl_channel_init(int ch_index, struct dram_sun6i_para *para)
+{
+       struct sunxi_mctl_com_reg * const mctl_com =
+               (struct sunxi_mctl_com_reg *)SUNXI_DRAM_COM_BASE;
+       struct sunxi_mctl_ctl_reg *mctl_ctl;
+       struct sunxi_mctl_phy_reg *mctl_phy;
+
+       if (ch_index == 0) {
+               mctl_ctl = (struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL0_BASE;
+               mctl_phy = (struct sunxi_mctl_phy_reg *)SUNXI_DRAM_PHY0_BASE;
+       } else {
+               mctl_ctl = (struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL1_BASE;
+               mctl_phy = (struct sunxi_mctl_phy_reg *)SUNXI_DRAM_PHY1_BASE;
+       }
+
+       writel(MCTL_MCMD_NOP, &mctl_ctl->mcmd);
+       mctl_await_completion(&mctl_ctl->mcmd, MCTL_MCMD_BUSY, 0);
+
+       /* PHY initialization */
+       writel(MCTL_PGCR, &mctl_phy->pgcr);
+       writel(MCTL_MR0, &mctl_phy->mr0);
+       writel(MCTL_MR1, &mctl_phy->mr1);
+       writel(MCTL_MR2, &mctl_phy->mr2);
+       writel(MCTL_MR3, &mctl_phy->mr3);
+
+       writel((MCTL_TITMSRST << 18) | (MCTL_TDLLLOCK << 6) | MCTL_TDLLSRST,
+              &mctl_phy->ptr0);
+
+       writel((MCTL_TDINIT1 << 19) | MCTL_TDINIT0, &mctl_phy->ptr1);
+       writel((MCTL_TDINIT3 << 17) | MCTL_TDINIT2, &mctl_phy->ptr2);
+
+       writel((MCTL_TCCD << 31) | (MCTL_TRC << 25) | (MCTL_TRRD << 21) |
+              (MCTL_TRAS << 16) | (MCTL_TRCD << 12) | (MCTL_TRP << 8) |
+              (MCTL_TWTR << 5) | (MCTL_TRTP << 2) | (MCTL_TMRD << 0),
+              &mctl_phy->dtpr0);
+
+       writel((MCTL_TDQSCKMAX << 27) | (MCTL_TDQSCK << 24) |
+              (MCTL_TRFC << 16) | (MCTL_TRTODT << 11) |
+              ((MCTL_TMOD - 12) << 9) | (MCTL_TFAW << 3) | (0 << 2) |
+              (MCTL_TAOND << 0), &mctl_phy->dtpr1);
+
+       writel((MCTL_TDLLK << 19) | (MCTL_TCKE << 15) | (MCTL_TXPDLL << 10) |
+              (MCTL_TEXSR << 0), &mctl_phy->dtpr2);
+
+       writel(1, &mctl_ctl->dfitphyupdtype0);
+       writel(MCTL_DCR_DDR3, &mctl_phy->dcr);
+       writel(MCTL_DSGCR, &mctl_phy->dsgcr);
+       writel(MCTL_DXCCR, &mctl_phy->dxccr);
+       writel(MCTL_DX_GCR | MCTL_DX_GCR_EN, &mctl_phy->dx0gcr);
+       writel(MCTL_DX_GCR | MCTL_DX_GCR_EN, &mctl_phy->dx1gcr);
+       writel(MCTL_DX_GCR | MCTL_DX_GCR_EN, &mctl_phy->dx2gcr);
+       writel(MCTL_DX_GCR | MCTL_DX_GCR_EN, &mctl_phy->dx3gcr);
+
+       mctl_await_completion(&mctl_phy->pgsr, 0x03, 0x03);
+
+       writel(CONFIG_DRAM_ZQ, &mctl_phy->zq0cr1);
+
+       setbits_le32(&mctl_phy->pir, MCTL_PIR_CLEAR_STATUS);
+       writel(MCTL_PIR_STEP1, &mctl_phy->pir);
+       udelay(10);
+       mctl_await_completion(&mctl_phy->pgsr, 0x1f, 0x1f);
+
+       /* rank detect */
+       if (!mctl_rank_detect(&mctl_phy->dx0gsr0, 1)) {
+               para->rank = 1;
+               clrbits_le32(&mctl_phy->pgcr, MCTL_PGCR_RANK);
+       }
+
+       /*
+        * channel detect, check channel 1 dx0 and dx1 have rank 0, if not
+        * assume nothing is connected to channel 1.
+        */
+       if (ch_index == 1 && !mctl_rank_detect(&mctl_phy->dx0gsr0, 0)) {
+               para->chan = 1;
+               clrbits_le32(&mctl_com->ccr, MCTL_CCR_CH1_CLK_EN);
+               return;
+       }
+
+       /* bus width detect, if dx2 and dx3 don't have rank 0, assume 16 bit */
+       if (!mctl_rank_detect(&mctl_phy->dx2gsr0, 0)) {
+               para->bus_width = 16;
+               para->page_size = 2048;
+               setbits_le32(&mctl_phy->dx2dllcr, MCTL_DLLCR_DISABLE);
+               setbits_le32(&mctl_phy->dx3dllcr, MCTL_DLLCR_DISABLE);
+               clrbits_le32(&mctl_phy->dx2gcr, MCTL_DX_GCR_EN);
+               clrbits_le32(&mctl_phy->dx3gcr, MCTL_DX_GCR_EN);
+       }
+
+       setbits_le32(&mctl_phy->pir, MCTL_PIR_CLEAR_STATUS);
+       writel(MCTL_PIR_STEP2, &mctl_phy->pir);
+       udelay(10);
+       mctl_await_completion(&mctl_phy->pgsr, 0x11, 0x11);
+
+       if (readl(&mctl_phy->pgsr) & MCTL_PGSR_TRAIN_ERR_MASK)
+               panic("Training error initialising DRAM\n");
+
+       /* Move to configure state */
+       writel(MCTL_SCTL_CONFIG, &mctl_ctl->sctl);
+       mctl_await_completion(&mctl_ctl->sstat, 0x07, 0x01);
+
+       /* Set number of clks per micro-second */
+       writel(DRAM_CLK / 1000000, &mctl_ctl->togcnt1u);
+       /* Set number of clks per 100 nano-seconds */
+       writel(DRAM_CLK / 10000000, &mctl_ctl->togcnt100n);
+       /* Set memory timing registers */
+       writel(MCTL_TREFI, &mctl_ctl->trefi);
+       writel(MCTL_TMRD, &mctl_ctl->tmrd);
+       writel(MCTL_TRFC, &mctl_ctl->trfc);
+       writel((MCTL_TPREA << 16) | MCTL_TRP, &mctl_ctl->trp);
+       writel(MCTL_TRTW, &mctl_ctl->trtw);
+       writel(MCTL_TAL, &mctl_ctl->tal);
+       writel(MCTL_TCL, &mctl_ctl->tcl);
+       writel(MCTL_TCWL, &mctl_ctl->tcwl);
+       writel(MCTL_TRAS, &mctl_ctl->tras);
+       writel(MCTL_TRC, &mctl_ctl->trc);
+       writel(MCTL_TRCD, &mctl_ctl->trcd);
+       writel(MCTL_TRRD, &mctl_ctl->trrd);
+       writel(MCTL_TRTP, &mctl_ctl->trtp);
+       writel(MCTL_TWR, &mctl_ctl->twr);
+       writel(MCTL_TWTR, &mctl_ctl->twtr);
+       writel(MCTL_TEXSR, &mctl_ctl->texsr);
+       writel(MCTL_TXP, &mctl_ctl->txp);
+       writel(MCTL_TXPDLL, &mctl_ctl->txpdll);
+       writel(MCTL_TZQCS, &mctl_ctl->tzqcs);
+       writel(MCTL_TZQCSI, &mctl_ctl->tzqcsi);
+       writel(MCTL_TDQS, &mctl_ctl->tdqs);
+       writel(MCTL_TCKSRE, &mctl_ctl->tcksre);
+       writel(MCTL_TCKSRX, &mctl_ctl->tcksrx);
+       writel(MCTL_TCKE, &mctl_ctl->tcke);
+       writel(MCTL_TMOD, &mctl_ctl->tmod);
+       writel(MCTL_TRSTL, &mctl_ctl->trstl);
+       writel(MCTL_TZQCL, &mctl_ctl->tzqcl);
+       writel(MCTL_TMRR, &mctl_ctl->tmrr);
+       writel(MCTL_TCKESR, &mctl_ctl->tckesr);
+       writel(MCTL_TDPD, &mctl_ctl->tdpd);
+
+       /* Unknown magic performed by boot0 */
+       setbits_le32(&mctl_ctl->dfiodtcfg, 1 << 3);
+       clrbits_le32(&mctl_ctl->dfiodtcfg1, 0x1f);
+
+       /* Select 16/32-bits mode for MCTL */
+       if (para->bus_width == 16)
+               setbits_le32(&mctl_ctl->ppcfg, 1);
+
+       /* Set DFI timing registers */
+       writel(MCTL_TCWL, &mctl_ctl->dfitphywrl);
+       writel(MCTL_TCL - 1, &mctl_ctl->dfitrdden);
+       writel(MCTL_DFITPHYRDL, &mctl_ctl->dfitphyrdl);
+       writel(MCTL_DFISTCFG0, &mctl_ctl->dfistcfg0);
+
+       writel(MCTL_MCFG_DDR3, &mctl_ctl->mcfg);
+
+       /* DFI update configuration register */
+       writel(MCTL_DFIUPDCFG_UPD, &mctl_ctl->dfiupdcfg);
+
+       /* Move to access state */
+       writel(MCTL_SCTL_ACCESS, &mctl_ctl->sctl);
+       mctl_await_completion(&mctl_ctl->sstat, 0x07, 0x03);
+}
+
+static void mctl_com_init(struct dram_sun6i_para *para)
+{
+       struct sunxi_mctl_com_reg * const mctl_com =
+               (struct sunxi_mctl_com_reg *)SUNXI_DRAM_COM_BASE;
+       struct sunxi_mctl_phy_reg * const mctl_phy1 =
+               (struct sunxi_mctl_phy_reg *)SUNXI_DRAM_PHY1_BASE;
+       struct sunxi_prcm_reg * const prcm =
+               (struct sunxi_prcm_reg *)SUNXI_PRCM_BASE;
+
+       writel(MCTL_CR_UNKNOWN | MCTL_CR_CHANNEL(para->chan) | MCTL_CR_DDR3 |
+              ((para->bus_width == 32) ? MCTL_CR_BUSW32 : MCTL_CR_BUSW16) |
+              MCTL_CR_PAGE_SIZE(para->page_size) | MCTL_CR_ROW(para->rows) |
+              MCTL_CR_BANK(1) | MCTL_CR_RANK(para->rank), &mctl_com->cr);
+
+       /* Unknown magic performed by boot0 */
+       setbits_le32(&mctl_com->dbgcr, (1 << 6));
+
+       if (para->chan == 1) {
+               /* Shutdown channel 1 */
+               setbits_le32(&mctl_phy1->aciocr, MCTL_ACIOCR_DISABLE);
+               setbits_le32(&mctl_phy1->dxccr, MCTL_DXCCR_DISABLE);
+               clrbits_le32(&mctl_phy1->dsgcr, MCTL_DSGCR_ENABLE);
+               /*
+                * CH0 ?? this is what boot0 does. Leave as is until we can
+                * confirm this.
+                */
+               setbits_le32(&prcm->vdd_sys_pwroff,
+                            PRCM_VDD_SYS_DRAM_CH0_PAD_HOLD_PWROFF);
+       }
+}
+
+static void mctl_port_cfg(void)
+{
+       struct sunxi_mctl_com_reg * const mctl_com =
+               (struct sunxi_mctl_com_reg *)SUNXI_DRAM_COM_BASE;
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* enable DRAM AXI clock for CPU access */
+       setbits_le32(&ccm->axi_gate, 1 << AXI_GATE_OFFSET_DRAM);
+
+       /* Bunch of magic writes performed by boot0 */
+       writel(0x00400302, &mctl_com->rmcr[0]);
+       writel(0x01000307, &mctl_com->rmcr[1]);
+       writel(0x00400302, &mctl_com->rmcr[2]);
+       writel(0x01000307, &mctl_com->rmcr[3]);
+       writel(0x01000307, &mctl_com->rmcr[4]);
+       writel(0x01000303, &mctl_com->rmcr[6]);
+       writel(0x01000303, &mctl_com->mmcr[0]);
+       writel(0x00400310, &mctl_com->mmcr[1]);
+       writel(0x01000307, &mctl_com->mmcr[2]);
+       writel(0x01000303, &mctl_com->mmcr[3]);
+       writel(0x01800303, &mctl_com->mmcr[4]);
+       writel(0x01800303, &mctl_com->mmcr[5]);
+       writel(0x01800303, &mctl_com->mmcr[6]);
+       writel(0x01800303, &mctl_com->mmcr[7]);
+       writel(0x01000303, &mctl_com->mmcr[8]);
+       writel(0x00000002, &mctl_com->mmcr[15]);
+       writel(0x00000310, &mctl_com->mbagcr[0]);
+       writel(0x00400310, &mctl_com->mbagcr[1]);
+       writel(0x00400310, &mctl_com->mbagcr[2]);
+       writel(0x00000307, &mctl_com->mbagcr[3]);
+       writel(0x00000317, &mctl_com->mbagcr[4]);
+       writel(0x00000307, &mctl_com->mbagcr[5]);
+}
+
+unsigned long sunxi_dram_init(void)
+{
+       struct sunxi_mctl_com_reg * const mctl_com =
+               (struct sunxi_mctl_com_reg *)SUNXI_DRAM_COM_BASE;
+       u32 offset;
+       int bank, bus, columns;
+
+       /* Set initial parameters, these get modified by the autodetect code */
+       struct dram_sun6i_para para = {
+               .bus_width = 32,
+               .chan = 2,
+               .rank = 2,
+               .page_size = 4096,
+               .rows = 16,
+       };
+
+       /* A31s only has one channel */
+       if (sunxi_get_ss_bonding_id() == SUNXI_SS_BOND_ID_A31S)
+               para.chan = 1;
+
+       mctl_sys_init();
+
+       mctl_dll_init(0, &para);
+       setbits_le32(&mctl_com->ccr, MCTL_CCR_CH0_CLK_EN);
+
+       if (para.chan == 2) {
+               mctl_dll_init(1, &para);
+               setbits_le32(&mctl_com->ccr, MCTL_CCR_CH1_CLK_EN);
+       }
+
+       setbits_le32(&mctl_com->ccr, MCTL_CCR_MASTER_CLK_EN);
+
+       mctl_channel_init(0, &para);
+       if (para.chan == 2)
+               mctl_channel_init(1, &para);
+
+       mctl_com_init(&para);
+       mctl_port_cfg();
+
+       /*
+        * Change to 1 ch / sequence / 8192 byte pages / 16 rows /
+        * 8 bit banks / 1 rank mode.
+        */
+       clrsetbits_le32(&mctl_com->cr,
+               MCTL_CR_CHANNEL_MASK | MCTL_CR_PAGE_SIZE_MASK |
+                   MCTL_CR_ROW_MASK | MCTL_CR_BANK_MASK | MCTL_CR_RANK_MASK,
+               MCTL_CR_CHANNEL(1) | MCTL_CR_SEQUENCE |
+                   MCTL_CR_PAGE_SIZE(8192) | MCTL_CR_ROW(16) |
+                   MCTL_CR_BANK(1) | MCTL_CR_RANK(1));
+
+       /* Detect and set page size */
+       for (columns = 7; columns < 20; columns++) {
+               if (mctl_mem_matches(1 << columns))
+                       break;
+       }
+       bus = (para.bus_width == 32) ? 2 : 1;
+       columns -= bus;
+       para.page_size = (1 << columns) * (bus << 1);
+       clrsetbits_le32(&mctl_com->cr, MCTL_CR_PAGE_SIZE_MASK,
+                       MCTL_CR_PAGE_SIZE(para.page_size));
+
+       /* Detect and set rows */
+       for (para.rows = 11; para.rows < 16; para.rows++) {
+               offset = 1 << (para.rows + columns + bus);
+               if (mctl_mem_matches(offset))
+                       break;
+       }
+       clrsetbits_le32(&mctl_com->cr, MCTL_CR_ROW_MASK,
+                       MCTL_CR_ROW(para.rows));
+
+       /* Detect bank size */
+       offset = 1 << (para.rows + columns + bus + 2);
+       bank = mctl_mem_matches(offset) ? 0 : 1;
+
+       /* Restore interleave, chan and rank values, set bank size */
+       clrsetbits_le32(&mctl_com->cr,
+                       MCTL_CR_CHANNEL_MASK | MCTL_CR_SEQUENCE |
+                           MCTL_CR_BANK_MASK | MCTL_CR_RANK_MASK,
+                       MCTL_CR_CHANNEL(para.chan) | MCTL_CR_BANK(bank) |
+                           MCTL_CR_RANK(para.rank));
+
+       return 1 << (para.rank + para.rows + bank + columns + para.chan + bus);
+}
diff --git a/arch/arm/cpu/armv7/sunxi/dram_sun8i.c b/arch/arm/cpu/armv7/sunxi/dram_sun8i.c
new file mode 100644 (file)
index 0000000..3d7964d
--- /dev/null
@@ -0,0 +1,345 @@
+/*
+ * Sun8i platform dram controller init.
+ *
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * Note this code uses a lot of magic hex values, that is because this code
+ * simply replays the init sequence as done by the Allwinner boot0 code, so
+ * we do not know what these values mean. There are no symbolic constants for
+ * these magic values, since we do not know how to name them and making up
+ * names for them is not useful.
+ *
+ * The register-layout of the sunxi_mctl_phy_reg-s looks a lot like the one
+ * found in the TI Keystone2 documentation:
+ * http://www.ti.com/lit/ug/spruhn7a/spruhn7a.pdf
+ * "Table4-2 DDR3 PHY Registers"
+ * This may be used as a (possible) reference for future work / cleanups.
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/dram.h>
+#include <asm/arch/prcm.h>
+
+static const struct dram_para dram_para = {
+       .clock = CONFIG_DRAM_CLK,
+       .type = 3,
+       .zq = CONFIG_DRAM_ZQ,
+       .odt_en = 1,
+       .para1 = 0, /* not used (only used when tpr13 bit 31 is set */
+       .para2 = 0, /* not used (only used when tpr13 bit 31 is set */
+       .mr0 = 6736,
+       .mr1 = 4,
+       .mr2 = 16,
+       .mr3 = 0,
+       /* tpr0 - 10 contain timing constants or-ed together in u32 vals */
+       .tpr0 = 0x2ab83def,
+       .tpr1 = 0x18082356,
+       .tpr2 = 0x00034156,
+       .tpr3 = 0x448c5533,
+       .tpr4 = 0x08010d00,
+       .tpr5 = 0x0340b20f,
+       .tpr6 = 0x20d118cc,
+       .tpr7 = 0x14062485,
+       .tpr8 = 0x220d1d52,
+       .tpr9 = 0x1e078c22,
+       .tpr10 = 0x3c,
+       .tpr11 = 0, /* not used */
+       .tpr12 = 0, /* not used */
+       .tpr13 = 0x30000,
+};
+
+static void mctl_sys_init(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* enable pll5, note the divide by 2 is deliberate! */
+       clock_set_pll5(dram_para.clock * 1000000 / 2,
+                      dram_para.tpr13 & 0x40000);
+
+       /* deassert ahb mctl reset */
+       setbits_le32(&ccm->ahb_reset0_cfg, 1 << AHB_RESET_OFFSET_MCTL);
+
+       /* enable ahb mctl clock */
+       setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_MCTL);
+}
+
+static void mctl_apply_odt_correction(u32 *reg, int correction)
+{
+       int val;
+
+       val = (readl(reg) >> 8) & 0xff;
+       val += correction;
+
+       /* clamp */
+       if (val < 0)
+               val = 0;
+       else if (val > 255)
+               val = 255;
+
+       clrsetbits_le32(reg, 0xff00, val << 8);
+}
+
+static void mctl_init(u32 *bus_width)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       struct sunxi_mctl_com_reg * const mctl_com =
+               (struct sunxi_mctl_com_reg *)SUNXI_DRAM_COM_BASE;
+       struct sunxi_mctl_ctl_reg * const mctl_ctl =
+               (struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL0_BASE;
+       struct sunxi_mctl_phy_reg * const mctl_phy =
+               (struct sunxi_mctl_phy_reg *)SUNXI_DRAM_PHY0_BASE;
+       int correction;
+
+       if (dram_para.tpr13 & 0x20)
+               writel(0x40b, &mctl_phy->dcr);
+       else
+               writel(0x1000040b, &mctl_phy->dcr);
+
+       if (dram_para.clock >= 480)
+               writel(0x5c000, &mctl_phy->dllgcr);
+       else
+               writel(0xdc000, &mctl_phy->dllgcr);
+
+       writel(0x0a003e3f, &mctl_phy->pgcr0);
+       writel(0x03008421, &mctl_phy->pgcr1);
+
+       writel(dram_para.mr0, &mctl_phy->mr0);
+       writel(dram_para.mr1, &mctl_phy->mr1);
+       writel(dram_para.mr2, &mctl_phy->mr2);
+       writel(dram_para.mr3, &mctl_phy->mr3);
+
+       if (!(dram_para.tpr13 & 0x10000)) {
+               clrsetbits_le32(&mctl_phy->dx0gcr, 0x3800, 0x2000);
+               clrsetbits_le32(&mctl_phy->dx1gcr, 0x3800, 0x2000);
+       }
+
+       /*
+        * All the masking and shifting below converts what I assume are DDR
+        * timing constants from Allwinner dram_para tpr format to the actual
+        * timing registers format.
+        */
+
+       writel((dram_para.tpr0 & 0x000fffff), &mctl_phy->ptr2);
+       writel((dram_para.tpr1 & 0x1fffffff), &mctl_phy->ptr3);
+       writel((dram_para.tpr0 & 0x3ff00000) >> 2 |
+              (dram_para.tpr2 & 0x0003ffff), &mctl_phy->ptr4);
+
+       writel(dram_para.tpr3, &mctl_phy->dtpr0);
+       writel(dram_para.tpr4, &mctl_phy->dtpr2);
+
+       writel(0x01000081, &mctl_phy->dtcr);
+
+       if (dram_para.clock <= 240 || !(dram_para.odt_en & 0x01)) {
+               clrbits_le32(&mctl_phy->dx0gcr, 0x600);
+               clrbits_le32(&mctl_phy->dx1gcr, 0x600);
+       }
+       if (dram_para.clock <= 240) {
+               writel(0, &mctl_phy->odtcr);
+               writel(0, &mctl_ctl->odtmap);
+       }
+
+       writel(((dram_para.tpr5 & 0x0f00) << 12) |
+              ((dram_para.tpr5 & 0x00f8) <<  9) |
+              ((dram_para.tpr5 & 0x0007) <<  8),
+              &mctl_ctl->rfshctl0);
+
+       writel(((dram_para.tpr5 & 0x0003f000) << 12) |
+              ((dram_para.tpr5 & 0x00fc0000) >>  2) |
+              ((dram_para.tpr5 & 0x3f000000) >> 16) |
+              ((dram_para.tpr6 & 0x0000003f) >>  0),
+              &mctl_ctl->dramtmg0);
+
+       writel(((dram_para.tpr6 & 0x000007c0) << 10) |
+              ((dram_para.tpr6 & 0x0000f800) >> 3) |
+              ((dram_para.tpr6 & 0x003f0000) >> 16),
+              &mctl_ctl->dramtmg1);
+
+       writel(((dram_para.tpr6 & 0x0fc00000) << 2) |
+              ((dram_para.tpr7 & 0x0000001f) << 16) |
+              ((dram_para.tpr7 & 0x000003e0) << 3) |
+              ((dram_para.tpr7 & 0x0000fc00) >> 10),
+              &mctl_ctl->dramtmg2);
+
+       writel(((dram_para.tpr7 & 0x03ff0000) >> 16) |
+              ((dram_para.tpr6 & 0xf0000000) >> 16),
+              &mctl_ctl->dramtmg3);
+
+       writel(((dram_para.tpr7 & 0x3c000000) >> 2 ) |
+              ((dram_para.tpr8 & 0x00000007) << 16) |
+              ((dram_para.tpr8 & 0x00000038) << 5) |
+              ((dram_para.tpr8 & 0x000003c0) >> 6),
+              &mctl_ctl->dramtmg4);
+
+       writel(((dram_para.tpr8 & 0x00003c00) << 14) |
+              ((dram_para.tpr8 & 0x0003c000) <<  2) |
+              ((dram_para.tpr8 & 0x00fc0000) >> 10) |
+              ((dram_para.tpr8 & 0x0f000000) >> 24),
+              &mctl_ctl->dramtmg5);
+
+       writel(0x00000008, &mctl_ctl->dramtmg8);
+
+       writel(((dram_para.tpr8 & 0xf0000000) >> 4) |
+              ((dram_para.tpr9 & 0x00007c00) << 6) |
+              ((dram_para.tpr9 & 0x000003e0) << 3) |
+              ((dram_para.tpr9 & 0x0000001f) >> 0),
+              &mctl_ctl->pitmg0);
+
+       setbits_le32(&mctl_ctl->pitmg1, 0x80000);
+
+       writel(((dram_para.tpr9 & 0x003f8000) << 9) | 0x2001,
+              &mctl_ctl->sched);
+
+       writel((dram_para.mr0 << 16) | dram_para.mr1, &mctl_ctl->init3);
+       writel((dram_para.mr2 << 16) | dram_para.mr3, &mctl_ctl->init4);
+
+       writel(0x00000000, &mctl_ctl->pimisc);
+       writel(0x80000000, &mctl_ctl->upd0);
+
+       writel(((dram_para.tpr9  & 0xffc00000) >> 22) |
+              ((dram_para.tpr10 & 0x00000fff) << 16),
+              &mctl_ctl->rfshtmg);
+
+       if (dram_para.tpr13 & 0x20)
+               writel(0x01040001, &mctl_ctl->mstr);
+       else
+               writel(0x01040401, &mctl_ctl->mstr);
+
+       if (!(dram_para.tpr13 & 0x20000)) {
+               writel(0x00000002, &mctl_ctl->pwrctl);
+               writel(0x00008001, &mctl_ctl->pwrtmg);
+       }
+
+       writel(0x00000001, &mctl_ctl->rfshctl3);
+       writel(0x00000001, &mctl_ctl->pimisc);
+
+       /* deassert dram_clk_cfg reset */
+       setbits_le32(&ccm->dram_clk_cfg, CCM_DRAMCLK_CFG_RST);
+
+       setbits_le32(&mctl_com->ccr, 0x80000);
+
+       /* zq stuff */
+       writel((dram_para.zq >> 8) & 0xff, &mctl_phy->zqcr1);
+
+       writel(0x00000003, &mctl_phy->pir);
+       udelay(10);
+       mctl_await_completion(&mctl_phy->pgsr0, 0x09, 0x09);
+
+       writel(readl(&mctl_phy->zqsr0) | 0x10000000, &mctl_phy->zqcr2);
+       writel(dram_para.zq & 0xff, &mctl_phy->zqcr1);
+
+       /* A23-v1.0 SDK uses 0xfdf3, A23-v2.0 SDK uses 0x5f3 */
+       writel(0x000005f3, &mctl_phy->pir);
+       udelay(10);
+       mctl_await_completion(&mctl_phy->pgsr0, 0x03, 0x03);
+
+       if (readl(&mctl_phy->dx1gsr0) & 0x1000000) {
+               *bus_width = 8;
+               writel(0, &mctl_phy->dx1gcr);
+               writel(dram_para.zq & 0xff, &mctl_phy->zqcr1);
+               writel(0x5f3, &mctl_phy->pir);
+               udelay(10000);
+               setbits_le32(&mctl_ctl->mstr, 0x1000);
+       } else
+               *bus_width = 16;
+
+       correction = (dram_para.odt_en >> 8) & 0xff;
+       if (correction) {
+               if (dram_para.odt_en & 0x80000000)
+                       correction = -correction;
+
+               mctl_apply_odt_correction(&mctl_phy->dx0lcdlr1, correction);
+               mctl_apply_odt_correction(&mctl_phy->dx1lcdlr1, correction);
+       }
+
+       mctl_await_completion(&mctl_ctl->statr, 0x01, 0x01);
+
+       writel(0x08003e3f, &mctl_phy->pgcr0);
+       writel(0x00000000, &mctl_ctl->rfshctl3);
+}
+
+unsigned long sunxi_dram_init(void)
+{
+       struct sunxi_mctl_com_reg * const mctl_com =
+               (struct sunxi_mctl_com_reg *)SUNXI_DRAM_COM_BASE;
+       const u32 columns = 13;
+       u32 bus, bus_width, offset, page_size, rows;
+
+       mctl_sys_init();
+       mctl_init(&bus_width);
+
+       if (bus_width == 16) {
+               page_size = 8;
+               bus = 1;
+       } else {
+               page_size = 7;
+               bus = 0;
+       }
+
+       if (!(dram_para.tpr13 & 0x80000000)) {
+               /* Detect and set rows */
+               writel(0x000310f4 | MCTL_CR_PAGE_SIZE(page_size),
+                      &mctl_com->cr);
+               setbits_le32(&mctl_com->swonr, 0x0003ffff);
+               for (rows = 11; rows < 16; rows++) {
+                       offset = 1 << (rows + columns + bus);
+                       if (mctl_mem_matches(offset))
+                               break;
+               }
+               clrsetbits_le32(&mctl_com->cr, MCTL_CR_ROW_MASK,
+                               MCTL_CR_ROW(rows));
+       } else {
+               rows = (dram_para.para1 >> 16) & 0xff;
+               writel(((dram_para.para2 & 0x000000f0) << 11) |
+                      ((rows - 1) << 4) |
+                      ((dram_para.para1 & 0x0f000000) >> 22) |
+                      0x31000 | MCTL_CR_PAGE_SIZE(page_size),
+                      &mctl_com->cr);
+               setbits_le32(&mctl_com->swonr, 0x0003ffff);
+       }
+
+       /* Setup DRAM master priority? If this is left out things still work */
+       writel(0x00000008, &mctl_com->mcr0_0);
+       writel(0x0001000d, &mctl_com->mcr1_0);
+       writel(0x00000004, &mctl_com->mcr0_1);
+       writel(0x00000080, &mctl_com->mcr1_1);
+       writel(0x00000004, &mctl_com->mcr0_2);
+       writel(0x00000019, &mctl_com->mcr1_2);
+       writel(0x00000004, &mctl_com->mcr0_3);
+       writel(0x00000080, &mctl_com->mcr1_3);
+       writel(0x00000004, &mctl_com->mcr0_4);
+       writel(0x01010040, &mctl_com->mcr1_4);
+       writel(0x00000004, &mctl_com->mcr0_5);
+       writel(0x0001002f, &mctl_com->mcr1_5);
+       writel(0x00000004, &mctl_com->mcr0_6);
+       writel(0x00010020, &mctl_com->mcr1_6);
+       writel(0x00000004, &mctl_com->mcr0_7);
+       writel(0x00010020, &mctl_com->mcr1_7);
+       writel(0x00000008, &mctl_com->mcr0_8);
+       writel(0x00000001, &mctl_com->mcr1_8);
+       writel(0x00000008, &mctl_com->mcr0_9);
+       writel(0x00000005, &mctl_com->mcr1_9);
+       writel(0x00000008, &mctl_com->mcr0_10);
+       writel(0x00000003, &mctl_com->mcr1_10);
+       writel(0x00000008, &mctl_com->mcr0_11);
+       writel(0x00000005, &mctl_com->mcr1_11);
+       writel(0x00000008, &mctl_com->mcr0_12);
+       writel(0x00000003, &mctl_com->mcr1_12);
+       writel(0x00000008, &mctl_com->mcr0_13);
+       writel(0x00000004, &mctl_com->mcr1_13);
+       writel(0x00000008, &mctl_com->mcr0_14);
+       writel(0x00000002, &mctl_com->mcr1_14);
+       writel(0x00000008, &mctl_com->mcr0_15);
+       writel(0x00000003, &mctl_com->mcr1_15);
+       writel(0x00010138, &mctl_com->bwcr);
+
+       return 1 << (rows + columns + bus);
+}
diff --git a/arch/arm/cpu/armv7/sunxi/p2wi.c b/arch/arm/cpu/armv7/sunxi/p2wi.c
new file mode 100644 (file)
index 0000000..26a9cfc
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Sunxi A31 Power Management Unit
+ *
+ * (C) Copyright 2013 Oliver Schinagl <oliver@schinagl.nl>
+ * http://linux-sunxi.org
+ *
+ * Based on sun6i sources and earlier U-Boot Allwiner A10 SPL work
+ *
+ * (C) Copyright 2006-2013
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Berg Xing <bergxing@allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <asm/io.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/p2wi.h>
+#include <asm/arch/prcm.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+void p2wi_init(void)
+{
+       struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE;
+
+       /* Enable p2wi and PIO clk, and de-assert their resets */
+       prcm_apb0_enable(PRCM_APB0_GATE_PIO | PRCM_APB0_GATE_P2WI);
+
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(0), SUN6I_GPL0_R_P2WI_SCK);
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(1), SUN6I_GPL1_R_P2WI_SDA);
+
+       /* Reset p2wi controller and set clock to CLKIN(12)/8 = 1.5 MHz */
+       writel(P2WI_CTRL_RESET, &p2wi->ctrl);
+       sdelay(0x100);
+       writel(P2WI_CC_SDA_OUT_DELAY(1) | P2WI_CC_CLK_DIV(8),
+              &p2wi->cc);
+}
+
+int p2wi_change_to_p2wi_mode(u8 slave_addr, u8 ctrl_reg, u8 init_data)
+{
+       struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE;
+       unsigned long tmo = timer_get_us() + 1000000;
+
+       writel(P2WI_PM_DEV_ADDR(slave_addr) |
+              P2WI_PM_CTRL_ADDR(ctrl_reg) |
+              P2WI_PM_INIT_DATA(init_data) |
+              P2WI_PM_INIT_SEND,
+              &p2wi->pm);
+
+       while ((readl(&p2wi->pm) & P2WI_PM_INIT_SEND)) {
+               if (timer_get_us() > tmo)
+                       return -ETIME;
+       }
+
+       return 0;
+}
+
+static int p2wi_await_trans(void)
+{
+       struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE;
+       unsigned long tmo = timer_get_us() + 1000000;
+       int ret;
+       u8 reg;
+
+       while (1) {
+               reg = readl(&p2wi->status);
+               if (reg & P2WI_STAT_TRANS_ERR) {
+                       ret = -EIO;
+                       break;
+               }
+               if (reg & P2WI_STAT_TRANS_DONE) {
+                       ret = 0;
+                       break;
+               }
+               if (timer_get_us() > tmo) {
+                       ret = -ETIME;
+                       break;
+               }
+       }
+       writel(reg, &p2wi->status); /* Clear status bits */
+       return ret;
+}
+
+int p2wi_read(const u8 addr, u8 *data)
+{
+       struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE;
+       int ret;
+
+       writel(P2WI_DATADDR_BYTE_1(addr), &p2wi->dataddr0);
+       writel(P2WI_DATA_NUM_BYTES(1) |
+              P2WI_DATA_NUM_BYTES_READ, &p2wi->numbytes);
+       writel(P2WI_STAT_TRANS_DONE, &p2wi->status);
+       writel(P2WI_CTRL_TRANS_START, &p2wi->ctrl);
+
+       ret = p2wi_await_trans();
+
+       *data = readl(&p2wi->data0) & P2WI_DATA_BYTE_1_MASK;
+       return ret;
+}
+
+int p2wi_write(const u8 addr, u8 data)
+{
+       struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE;
+
+       writel(P2WI_DATADDR_BYTE_1(addr), &p2wi->dataddr0);
+       writel(P2WI_DATA_BYTE_1(data), &p2wi->data0);
+       writel(P2WI_DATA_NUM_BYTES(1), &p2wi->numbytes);
+       writel(P2WI_STAT_TRANS_DONE, &p2wi->status);
+       writel(P2WI_CTRL_TRANS_START, &p2wi->ctrl);
+
+       return p2wi_await_trans();
+}
index 1f2843fcac4577ebcfa45212b27c9238399e7347..b026f78ca50785a198e68295496093d1ab67a06b 100644 (file)
 #include <asm/io.h>
 #include <asm/arch/gpio.h>
 
-int sunxi_gpio_set_cfgpin(u32 pin, u32 val)
+void sunxi_gpio_set_cfgbank(struct sunxi_gpio *pio, int bank_offset, u32 val)
 {
-       u32 bank = GPIO_BANK(pin);
-       u32 index = GPIO_CFG_INDEX(pin);
-       u32 offset = GPIO_CFG_OFFSET(pin);
-       struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+       u32 index = GPIO_CFG_INDEX(bank_offset);
+       u32 offset = GPIO_CFG_OFFSET(bank_offset);
 
        clrsetbits_le32(&pio->cfg[0] + index, 0xf << offset, val << offset);
-
-       return 0;
 }
 
-int sunxi_gpio_get_cfgpin(u32 pin)
+void sunxi_gpio_set_cfgpin(u32 pin, u32 val)
 {
-       u32 cfg;
        u32 bank = GPIO_BANK(pin);
-       u32 index = GPIO_CFG_INDEX(pin);
-       u32 offset = GPIO_CFG_OFFSET(pin);
        struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
 
+       sunxi_gpio_set_cfgbank(pio, pin, val);
+}
+
+int sunxi_gpio_get_cfgbank(struct sunxi_gpio *pio, int bank_offset)
+{
+       u32 index = GPIO_CFG_INDEX(bank_offset);
+       u32 offset = GPIO_CFG_OFFSET(bank_offset);
+       u32 cfg;
+
        cfg = readl(&pio->cfg[0] + index);
        cfg >>= offset;
 
        return cfg & 0xf;
 }
 
+int sunxi_gpio_get_cfgpin(u32 pin)
+{
+       u32 bank = GPIO_BANK(pin);
+       struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+
+       return sunxi_gpio_get_cfgbank(pio, pin);
+}
+
 int sunxi_gpio_set_drv(u32 pin, u32 val)
 {
        u32 bank = GPIO_BANK(pin);
index 0084c811f32e6f71c6b65b5c2a10ca0747302c24..5be497b7be09658be0b5aa062c8e195e0c886268 100644 (file)
@@ -18,6 +18,7 @@
  */
 
 #include <config.h>
+#include <asm/gic.h>
 #include <asm/psci.h>
 #include <asm/arch/cpu.h>
 
@@ -38,6 +39,8 @@
 
 #define        ONE_MS                  (CONFIG_SYS_CLK_FREQ / 1000)
 #define        TEN_MS                  (10 * ONE_MS)
+#define        GICD_BASE               0x1c81000
+#define        GICC_BASE               0x1c82000
 
 .macro timer_wait      reg, ticks
        @ Program CNTP_TVAL
        isb
 .endm
 
-.globl psci_arch_init
-psci_arch_init:
-       mrc     p15, 0, r5, c1, c1, 0   @ Read SCR
-       bic     r5, r5, #1              @ Secure mode
-       mcr     p15, 0, r5, c1, c1, 0   @ Write SCR
+.globl psci_fiq_enter
+psci_fiq_enter:
+       push    {r0-r12}
+
+       @ Switch to secure
+       mrc     p15, 0, r7, c1, c1, 0
+       bic     r8, r7, #1
+       mcr     p15, 0, r8, c1, c1, 0
        isb
 
-       mrc     p15, 0, r4, c0, c0, 5   @ MPIDR
-       and     r4, r4, #3              @ cpu number in cluster
-       mov     r5, #400                @ 1kB of stack per CPU
-       mul     r4, r4, r5
+       @ Validate reason based on IAR and acknowledge
+       movw    r8, #(GICC_BASE & 0xffff)
+       movt    r8, #(GICC_BASE >> 16)
+       ldr     r9, [r8, #GICC_IAR]
+       movw    r10, #0x3ff
+       movt    r10, #0
+       cmp     r9, r10                 @ skip spurious interrupt 1023
+       beq     out
+       movw    r10, #0x3fe             @ ...and 1022
+       cmp     r9, r10
+       beq     out
+       str     r9, [r8, #GICC_EOIR]    @ acknowledge the interrupt
+       dsb
 
-       adr     r5, text_end            @ end of text
-       add     r5, r5, #0x2000         @ Skip two pages
-       lsr     r5, r5, #12             @ Align to start of page
-       lsl     r5, r5, #12
-       sub     sp, r5, r4              @ here's our stack!
+       @ Compute CPU number
+       lsr     r9, r9, #10
+       and     r9, r9, #0xf
 
-       bx      lr
+       movw    r8, #(SUN7I_CPUCFG_BASE & 0xffff)
+       movt    r8, #(SUN7I_CPUCFG_BASE >> 16)
+
+       @ Wait for the core to enter WFI
+       lsl     r11, r9, #6             @ x64
+       add     r11, r11, r8
+
+1:     ldr     r10, [r11, #0x48]
+       tst     r10, #(1 << 2)
+       bne     2f
+       timer_wait r10, ONE_MS
+       b       1b
+
+       @ Reset CPU
+2:     mov     r10, #0
+       str     r10, [r11, #0x40]
+
+       @ Lock CPU
+       mov     r10, #1
+       lsl     r9, r10, r9             @ r9 is now CPU mask
+       ldr     r10, [r8, #0x1e4]
+       bic     r10, r10, r9
+       str     r10, [r8, #0x1e4]
+
+       @ Set power gating
+       ldr     r10, [r8, #0x1b4]
+       orr     r10, r10, #1
+       str     r10, [r8, #0x1b4]
+       timer_wait r10, ONE_MS
+
+       @ Activate power clamp
+       mov     r10, #1
+1:     str     r10, [r8, #0x1b0]
+       lsl     r10, r10, #1
+       orr     r10, r10, #1
+       tst     r10, #0x100
+       beq     1b
+
+       @ Restore security level
+out:   mcr     p15, 0, r7, c1, c1, 0
+
+       pop     {r0-r12}
+       subs    pc, lr, #4
 
        @ r1 = target CPU
        @ r2 = target PC
@@ -87,8 +142,8 @@ psci_cpu_on:
        str     r2, [r0]
        dsb
 
-       movw    r0, #(SUNXI_CPUCFG_BASE & 0xffff)
-       movt    r0, #(SUNXI_CPUCFG_BASE >> 16)
+       movw    r0, #(SUN7I_CPUCFG_BASE & 0xffff)
+       movt    r0, #(SUN7I_CPUCFG_BASE >> 16)
 
        @ CPU mask
        and     r1, r1, #3      @ only care about first cluster
@@ -144,6 +199,53 @@ psci_cpu_on:
 _target_pc:
        .word   0
 
+/* Imported from Linux kernel */
+v7_flush_dcache_all:
+       dmb                                     @ ensure ordering with previous memory accesses
+       mrc     p15, 1, r0, c0, c0, 1           @ read clidr
+       ands    r3, r0, #0x7000000              @ extract loc from clidr
+       mov     r3, r3, lsr #23                 @ left align loc bit field
+       beq     finished                        @ if loc is 0, then no need to clean
+       mov     r10, #0                         @ start clean at cache level 0
+flush_levels:
+       add     r2, r10, r10, lsr #1            @ work out 3x current cache level
+       mov     r1, r0, lsr r2                  @ extract cache type bits from clidr
+       and     r1, r1, #7                      @ mask of the bits for current cache only
+       cmp     r1, #2                          @ see what cache we have at this level
+       blt     skip                            @ skip if no cache, or just i-cache
+       mrs     r9, cpsr                        @ make cssr&csidr read atomic
+       mcr     p15, 2, r10, c0, c0, 0          @ select current cache level in cssr
+       isb                                     @ isb to sych the new cssr&csidr
+       mrc     p15, 1, r1, c0, c0, 0           @ read the new csidr
+       msr     cpsr_c, r9
+       and     r2, r1, #7                      @ extract the length of the cache lines
+       add     r2, r2, #4                      @ add 4 (line length offset)
+       ldr     r4, =0x3ff
+       ands    r4, r4, r1, lsr #3              @ find maximum number on the way size
+       clz     r5, r4                          @ find bit position of way size increment
+       ldr     r7, =0x7fff
+       ands    r7, r7, r1, lsr #13             @ extract max number of the index size
+loop1:
+       mov     r9, r7                          @ create working copy of max index
+loop2:
+       orr     r11, r10, r4, lsl r5            @ factor way and cache number into r11
+       orr     r11, r11, r9, lsl r2            @ factor index number into r11
+       mcr     p15, 0, r11, c7, c14, 2         @ clean & invalidate by set/way
+       subs    r9, r9, #1                      @ decrement the index
+       bge     loop2
+       subs    r4, r4, #1                      @ decrement the way
+       bge     loop1
+skip:
+       add     r10, r10, #2                    @ increment cache number
+       cmp     r3, r10
+       bgt     flush_levels
+finished:
+       mov     r10, #0                         @ swith back to cache level 0
+       mcr     p15, 2, r10, c0, c0, 0          @ select current cache level in cssr
+       dsb     st
+       isb
+       bx      lr
+
 _sunxi_cpu_entry:
        @ Set SMP bit
        mrc     p15, 0, r0, c1, c0, 1
@@ -158,5 +260,74 @@ _sunxi_cpu_entry:
        ldr     r0, [r0]
        b       _do_nonsec_entry
 
+.globl psci_cpu_off
+psci_cpu_off:
+       mrc     p15, 0, r0, c1, c0, 0           @ SCTLR
+       bic     r0, r0, #(1 << 2)               @ Clear C bit
+       mcr     p15, 0, r0, c1, c0, 0           @ SCTLR
+       isb
+       dsb
+
+       bl      v7_flush_dcache_all
+
+       clrex                                   @ Why???
+
+       mrc     p15, 0, r0, c1, c0, 1           @ ACTLR
+       bic     r0, r0, #(1 << 6)               @ Clear SMP bit
+       mcr     p15, 0, r0, c1, c0, 1           @ ACTLR
+       isb
+       dsb
+
+       @ Ask CPU0 to pull the rug...
+       movw    r0, #(GICD_BASE & 0xffff)
+       movt    r0, #(GICD_BASE >> 16)
+       movw    r1, #15                         @ SGI15
+       movt    r1, #1                          @ Target is CPU0
+       str     r1, [r0, #GICD_SGIR]
+       dsb
+
+1:     wfi
+       b       1b
+
+.globl psci_arch_init
+psci_arch_init:
+       movw    r4, #(GICD_BASE & 0xffff)
+       movt    r4, #(GICD_BASE >> 16)
+
+       ldr     r5, [r4, #GICD_IGROUPRn]
+       bic     r5, r5, #(1 << 15)      @ SGI15 as Group-0
+       str     r5, [r4, #GICD_IGROUPRn]
+
+       mov     r5, #0                  @ Set SGI15 priority to 0
+       strb    r5, [r4, #(GICD_IPRIORITYRn + 15)]
+
+       add     r4, r4, #0x1000         @ GICC address
+
+       mov     r5, #0xff
+       str     r5, [r4, #GICC_PMR]     @ Be cool with non-secure
+
+       ldr     r5, [r4, #GICC_CTLR]
+       orr     r5, r5, #(1 << 3)       @ Switch FIQEn on
+       str     r5, [r4, #GICC_CTLR]
+
+       mrc     p15, 0, r5, c1, c1, 0   @ Read SCR
+       orr     r5, r5, #4              @ Enable FIQ in monitor mode
+       bic     r5, r5, #1              @ Secure mode
+       mcr     p15, 0, r5, c1, c1, 0   @ Write SCR
+       isb
+
+       mrc     p15, 0, r4, c0, c0, 5   @ MPIDR
+       and     r4, r4, #3              @ cpu number in cluster
+       mov     r5, #0x400              @ 1kB of stack per CPU
+       mul     r4, r4, r5
+
+       adr     r5, text_end            @ end of text
+       add     r5, r5, #0x2000         @ Skip two pages
+       lsr     r5, r5, #12             @ Align to start of page
+       lsl     r5, r5, #12
+       sub     sp, r5, r4              @ here's our stack!
+
+       bx      lr
+
 text_end:
        .popsection
diff --git a/arch/arm/cpu/armv7/sunxi/rsb.c b/arch/arm/cpu/armv7/sunxi/rsb.c
new file mode 100644 (file)
index 0000000..b72bb9d
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * Based on allwinner u-boot sources rsb code which is:
+ * (C) Copyright 2007-2013
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * lixiang <lixiang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/prcm.h>
+#include <asm/arch/rsb.h>
+
+static void rsb_cfg_io(void)
+{
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(0), SUN8I_GPL0_R_RSB_SCK);
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(1), SUN8I_GPL1_R_RSB_SDA);
+       sunxi_gpio_set_pull(SUNXI_GPL(0), 1);
+       sunxi_gpio_set_pull(SUNXI_GPL(1), 1);
+       sunxi_gpio_set_drv(SUNXI_GPL(0), 2);
+       sunxi_gpio_set_drv(SUNXI_GPL(1), 2);
+}
+
+static void rsb_set_clk(void)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+       u32 div = 0;
+       u32 cd_odly = 0;
+
+       /* Source is Hosc24M, set RSB clk to 3Mhz */
+       div = 24000000 / 3000000 / 2 - 1;
+       cd_odly = div >> 1;
+       if (!cd_odly)
+               cd_odly = 1;
+
+       writel((cd_odly << 8) | div, &rsb->ccr);
+}
+
+void rsb_init(void)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+
+       rsb_cfg_io();
+
+       /* Enable RSB and PIO clk, and de-assert their resets */
+       prcm_apb0_enable(PRCM_APB0_GATE_PIO | PRCM_APB0_GATE_RSB);
+
+       writel(RSB_CTRL_SOFT_RST, &rsb->ctrl);
+       rsb_set_clk();
+}
+
+static int rsb_await_trans(void)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+       unsigned long tmo = timer_get_us() + 1000000;
+       u32 stat;
+       int ret;
+
+       while (1) {
+               stat = readl(&rsb->stat);
+               if (stat & RSB_STAT_LBSY_INT) {
+                       ret = -EBUSY;
+                       break;
+               }
+               if (stat & RSB_STAT_TERR_INT) {
+                       ret = -EIO;
+                       break;
+               }
+               if (stat & RSB_STAT_TOVER_INT) {
+                       ret = 0;
+                       break;
+               }
+               if (timer_get_us() > tmo) {
+                       ret = -ETIME;
+                       break;
+               }
+       }
+       writel(stat, &rsb->stat); /* Clear status bits */
+
+       return ret;
+}
+
+int rsb_set_device_mode(u32 device_mode_data)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+       unsigned long tmo = timer_get_us() + 1000000;
+
+       writel(RSB_DMCR_DEVICE_MODE_START | device_mode_data, &rsb->dmcr);
+
+       while (readl(&rsb->dmcr) & RSB_DMCR_DEVICE_MODE_START) {
+               if (timer_get_us() > tmo)
+                       return -ETIME;
+       }
+
+       return rsb_await_trans();
+}
+
+static int rsb_do_trans(void)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+
+       setbits_le32(&rsb->ctrl, RSB_CTRL_START_TRANS);
+       return rsb_await_trans();
+}
+
+int rsb_set_device_address(u16 device_addr, u16 runtime_addr)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+
+       writel(RSB_DEVADDR_RUNTIME_ADDR(runtime_addr) |
+              RSB_DEVADDR_DEVICE_ADDR(device_addr), &rsb->devaddr);
+       writel(RSB_CMD_SET_RTSADDR, &rsb->cmd);
+
+       return rsb_do_trans();
+}
+
+int rsb_write(const u16 runtime_device_addr, const u8 reg_addr, u8 data)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+
+       writel(RSB_DEVADDR_RUNTIME_ADDR(runtime_device_addr), &rsb->devaddr);
+       writel(reg_addr, &rsb->addr);
+       writel(data, &rsb->data);
+       writel(RSB_CMD_BYTE_WRITE, &rsb->cmd);
+
+       return rsb_do_trans();
+}
+
+int rsb_read(const u16 runtime_device_addr, const u8 reg_addr, u8 *data)
+{
+       struct sunxi_rsb_reg * const rsb =
+               (struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
+       int ret;
+
+       writel(RSB_DEVADDR_RUNTIME_ADDR(runtime_device_addr), &rsb->devaddr);
+       writel(reg_addr, &rsb->addr);
+       writel(RSB_CMD_BYTE_READ, &rsb->cmd);
+
+       ret = rsb_do_trans();
+       if (ret)
+               return ret;
+
+       *data = readl(&rsb->data) & 0xff;
+
+       return 0;
+}
diff --git a/arch/arm/cpu/armv7/sunxi/usbc.c b/arch/arm/cpu/armv7/sunxi/usbc.c
new file mode 100644 (file)
index 0000000..14de9f9
--- /dev/null
@@ -0,0 +1,272 @@
+/*
+ * Sunxi usb-controller code shared between the ehci and musb controllers
+ *
+ * Copyright (C) 2014 Roman Byshko
+ *
+ * Roman Byshko <rbyshko@gmail.com>
+ *
+ * Based on code from
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/usbc.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <common.h>
+#ifdef CONFIG_AXP152_POWER
+#include <axp152.h>
+#endif
+#ifdef CONFIG_AXP209_POWER
+#include <axp209.h>
+#endif
+#ifdef CONFIG_AXP221_POWER
+#include <axp221.h>
+#endif
+
+#define SUNXI_USB_PMU_IRQ_ENABLE       0x800
+#define SUNXI_USB_CSR                  0x404
+#define SUNXI_USB_PASSBY_EN            1
+
+#define SUNXI_EHCI_AHB_ICHR8_EN                (1 << 10)
+#define SUNXI_EHCI_AHB_INCR4_BURST_EN  (1 << 9)
+#define SUNXI_EHCI_AHB_INCRX_ALIGN_EN  (1 << 8)
+#define SUNXI_EHCI_ULPI_BYPASS_EN      (1 << 0)
+
+static struct sunxi_usbc_hcd {
+       struct usb_hcd *hcd;
+       int usb_rst_mask;
+       int ahb_clk_mask;
+       int gpio_vbus;
+       int irq;
+       int id;
+} sunxi_usbc_hcd[] = {
+       {
+               .usb_rst_mask = CCM_USB_CTRL_PHY0_RST | CCM_USB_CTRL_PHY0_CLK,
+               .ahb_clk_mask = 1 << AHB_GATE_OFFSET_USB0,
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+               .irq = 71,
+#else
+               .irq = 38,
+#endif
+               .id = 0,
+       },
+       {
+               .usb_rst_mask = CCM_USB_CTRL_PHY1_RST | CCM_USB_CTRL_PHY1_CLK,
+               .ahb_clk_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0,
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+               .irq = 72,
+#else
+               .irq = 39,
+#endif
+               .id = 1,
+       },
+#if (CONFIG_USB_MAX_CONTROLLER_COUNT > 1)
+       {
+               .usb_rst_mask = CCM_USB_CTRL_PHY2_RST | CCM_USB_CTRL_PHY2_CLK,
+               .ahb_clk_mask = 1 << AHB_GATE_OFFSET_USB_EHCI1,
+#ifdef CONFIG_MACH_SUN6I
+               .irq = 74,
+#else
+               .irq = 40,
+#endif
+               .id = 2,
+       }
+#endif
+};
+
+static int enabled_hcd_count;
+
+static bool use_axp_drivebus(int index)
+{
+       return index == 0 &&
+              strcmp(CONFIG_USB0_VBUS_PIN, "axp_drivebus") == 0;
+}
+
+void *sunxi_usbc_get_io_base(int index)
+{
+       switch (index) {
+       case 0:
+               return (void *)SUNXI_USB0_BASE;
+       case 1:
+               return (void *)SUNXI_USB1_BASE;
+       case 2:
+               return (void *)SUNXI_USB2_BASE;
+       default:
+               return NULL;
+       }
+}
+
+static int get_vbus_gpio(int index)
+{
+       if (use_axp_drivebus(index))
+               return -1;
+
+       switch (index) {
+       case 0: return sunxi_name_to_gpio(CONFIG_USB0_VBUS_PIN);
+       case 1: return sunxi_name_to_gpio(CONFIG_USB1_VBUS_PIN);
+       case 2: return sunxi_name_to_gpio(CONFIG_USB2_VBUS_PIN);
+       }
+       return -1;
+}
+
+static void usb_phy_write(struct sunxi_usbc_hcd *sunxi_usbc, int addr,
+                         int data, int len)
+{
+       int j = 0, usbc_bit = 0;
+       void *dest = sunxi_usbc_get_io_base(0) + SUNXI_USB_CSR;
+
+       usbc_bit = 1 << (sunxi_usbc->id * 2);
+       for (j = 0; j < len; j++) {
+               /* set the bit address to be written */
+               clrbits_le32(dest, 0xff << 8);
+               setbits_le32(dest, (addr + j) << 8);
+
+               clrbits_le32(dest, usbc_bit);
+               /* set data bit */
+               if (data & 0x1)
+                       setbits_le32(dest, 1 << 7);
+               else
+                       clrbits_le32(dest, 1 << 7);
+
+               setbits_le32(dest, usbc_bit);
+
+               clrbits_le32(dest, usbc_bit);
+
+               data >>= 1;
+       }
+}
+
+static void sunxi_usb_phy_init(struct sunxi_usbc_hcd *sunxi_usbc)
+{
+       /* The following comments are machine
+        * translated from Chinese, you have been warned!
+        */
+
+       /* Regulation 45 ohms */
+       if (sunxi_usbc->id == 0)
+               usb_phy_write(sunxi_usbc, 0x0c, 0x01, 1);
+
+       /* adjust PHY's magnitude and rate */
+       usb_phy_write(sunxi_usbc, 0x20, 0x14, 5);
+
+       /* threshold adjustment disconnect */
+#if defined CONFIG_MACH_SUN4I || defined CONFIG_MACH_SUN6I
+       usb_phy_write(sunxi_usbc, 0x2a, 3, 2);
+#else
+       usb_phy_write(sunxi_usbc, 0x2a, 2, 2);
+#endif
+
+       return;
+}
+
+static void sunxi_usb_passby(struct sunxi_usbc_hcd *sunxi_usbc, int enable)
+{
+       unsigned long bits = 0;
+       void *addr = sunxi_usbc_get_io_base(sunxi_usbc->id) +
+                    SUNXI_USB_PMU_IRQ_ENABLE;
+
+       bits = SUNXI_EHCI_AHB_ICHR8_EN |
+               SUNXI_EHCI_AHB_INCR4_BURST_EN |
+               SUNXI_EHCI_AHB_INCRX_ALIGN_EN |
+               SUNXI_EHCI_ULPI_BYPASS_EN;
+
+       if (enable)
+               setbits_le32(addr, bits);
+       else
+               clrbits_le32(addr, bits);
+
+       return;
+}
+
+int sunxi_usbc_request_resources(int index)
+{
+       struct sunxi_usbc_hcd *sunxi_usbc = &sunxi_usbc_hcd[index];
+
+       sunxi_usbc->gpio_vbus = get_vbus_gpio(index);
+       if (sunxi_usbc->gpio_vbus != -1)
+               return gpio_request(sunxi_usbc->gpio_vbus, "usbc_vbus");
+
+       return 0;
+}
+
+int sunxi_usbc_free_resources(int index)
+{
+       struct sunxi_usbc_hcd *sunxi_usbc = &sunxi_usbc_hcd[index];
+
+       if (sunxi_usbc->gpio_vbus != -1)
+               return gpio_free(sunxi_usbc->gpio_vbus);
+
+       return 0;
+}
+
+void sunxi_usbc_enable(int index)
+{
+       struct sunxi_usbc_hcd *sunxi_usbc = &sunxi_usbc_hcd[index];
+       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* enable common PHY only once */
+       if (enabled_hcd_count == 0)
+               setbits_le32(&ccm->usb_clk_cfg, CCM_USB_CTRL_PHYGATE);
+
+       setbits_le32(&ccm->usb_clk_cfg, sunxi_usbc->usb_rst_mask);
+       setbits_le32(&ccm->ahb_gate0, sunxi_usbc->ahb_clk_mask);
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+       setbits_le32(&ccm->ahb_reset0_cfg, sunxi_usbc->ahb_clk_mask);
+#endif
+
+       sunxi_usb_phy_init(sunxi_usbc);
+
+       if (sunxi_usbc->id != 0)
+               sunxi_usb_passby(sunxi_usbc, SUNXI_USB_PASSBY_EN);
+
+       enabled_hcd_count++;
+}
+
+void sunxi_usbc_disable(int index)
+{
+       struct sunxi_usbc_hcd *sunxi_usbc = &sunxi_usbc_hcd[index];
+       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       if (sunxi_usbc->id != 0)
+               sunxi_usb_passby(sunxi_usbc, !SUNXI_USB_PASSBY_EN);
+
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+       clrbits_le32(&ccm->ahb_reset0_cfg, sunxi_usbc->ahb_clk_mask);
+#endif
+       clrbits_le32(&ccm->ahb_gate0, sunxi_usbc->ahb_clk_mask);
+       clrbits_le32(&ccm->usb_clk_cfg, sunxi_usbc->usb_rst_mask);
+
+       /* disable common PHY only once, for the last enabled hcd */
+       if (enabled_hcd_count == 1)
+               clrbits_le32(&ccm->usb_clk_cfg, CCM_USB_CTRL_PHYGATE);
+
+       enabled_hcd_count--;
+}
+
+void sunxi_usbc_vbus_enable(int index)
+{
+       struct sunxi_usbc_hcd *sunxi_usbc = &sunxi_usbc_hcd[index];
+
+#ifdef AXP_DRIVEBUS
+       if (use_axp_drivebus(index))
+               axp_drivebus_enable();
+#endif
+       if (sunxi_usbc->gpio_vbus != -1)
+               gpio_direction_output(sunxi_usbc->gpio_vbus, 1);
+}
+
+void sunxi_usbc_vbus_disable(int index)
+{
+       struct sunxi_usbc_hcd *sunxi_usbc = &sunxi_usbc_hcd[index];
+
+#ifdef AXP_DRIVEBUS
+       if (use_axp_drivebus(index))
+               axp_drivebus_disable();
+#endif
+       if (sunxi_usbc->gpio_vbus != -1)
+               gpio_direction_output(sunxi_usbc->gpio_vbus, 0);
+}
index 3ea6d7651cb7fd87af753248aa91465a8e95863a..1446452c2363f2b3f24039e9b56d5f2041e53b77 100644 (file)
@@ -20,10 +20,6 @@ endchoice
 config USE_PRIVATE_LIBGCC
        default y if SPL_BUILD
 
-config SYS_CPU
-       default "arm720t" if SPL_BUILD
-       default "armv7" if !SPL_BUILD
-
 source "arch/arm/cpu/armv7/tegra20/Kconfig"
 source "arch/arm/cpu/armv7/tegra30/Kconfig"
 source "arch/arm/cpu/armv7/tegra114/Kconfig"
diff --git a/arch/arm/cpu/armv7/tegra114/Makefile b/arch/arm/cpu/armv7/tegra114/Makefile
deleted file mode 100644 (file)
index 77e2319..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright (c) 2010-2013, NVIDIA CORPORATION.  All rights reserved.
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms and conditions of the GNU General Public License,
-# version 2, as published by the Free Software Foundation.
-#
-# This program is distributed in the hope it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-
-# necessary to create built-in.o
-obj- := __dummy__.o
index 6a1c83a27ba65631e3fa01a1fb4b9b06bf667294..88f627c9326cd432d3948bd06d4404e2fe34c670 100644 (file)
@@ -6,6 +6,15 @@ choice
 config TARGET_JETSON_TK1
        bool "NVIDIA Tegra124 Jetson TK1 board"
 
+config TARGET_NYAN_BIG
+       bool "Google/NVIDIA Nyan-big Chrombook"
+       help
+         Nyan Big is a Tegra124 clamshell board that is very similar
+         to venice2, but it has a different panel, the sdcard CD and WP
+         sense are flipped, and it has a different revision of the AS3722
+         PMIC. The retail name is the Acer Chromebook 13 CB5-311-T7NN
+         (13.3-inch HD, NVIDIA Tegra K1, 2GB).
+
 config TARGET_VENICE2
        bool "NVIDIA Tegra124 Venice2"
 
@@ -15,6 +24,7 @@ config SYS_SOC
        default "tegra124"
 
 source "board/nvidia/jetson-tk1/Kconfig"
+source "board/nvidia/nyan-big/Kconfig"
 source "board/nvidia/venice2/Kconfig"
 
 endif
index d98cec90180f5d133432d57c68bf6759649c0c0c..61efed6464455b2e0a85d0efe54835a9fb9a5d0c 100644 (file)
@@ -45,8 +45,8 @@ static void update_window(struct dc_ctlr *dc, struct disp_ctl_win *win)
        writel(0, &dc->win.h_initial_dda);
        writel(0, &dc->win.v_initial_dda);
 
-       h_dda = (win->w * 0x1000) / max(win->out_w - 1, 1);
-       v_dda = (win->h * 0x1000) / max(win->out_h - 1, 1);
+       h_dda = (win->w * 0x1000) / max(win->out_w - 1, 1U);
+       v_dda = (win->h * 0x1000) / max(win->out_h - 1, 1U);
 
        val = h_dda << H_DDA_INC_SHIFT;
        val |= v_dda << V_DDA_INC_SHIFT;
diff --git a/arch/arm/cpu/armv7/tegra30/Makefile b/arch/arm/cpu/armv7/tegra30/Makefile
deleted file mode 100644 (file)
index 413eba1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright (c) 2010-2012, NVIDIA CORPORATION.  All rights reserved.
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms and conditions of the GNU General Public License,
-# version 2, as published by the Free Software Foundation.
-#
-# This program is distributed in the hope it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-
-# necessary to create built-in.o
-obj- := __dummy__.o
index 524b193e58efb94d762b326e814898bc921a2b91..0556e4b3509e6b1e8b50d69bb98add96c1fef4f0 100644 (file)
@@ -5,15 +5,17 @@ config SYS_SOC
        default "uniphier"
 
 config SYS_CONFIG_NAME
-       default "ph1_pro4" if MACH_PH1_PRO4
-       default "ph1_ld4" if MACH_PH1_LD4
-       default "ph1_sld8" if MACH_PH1_SLD8
+       default "uniphier"
+
+config UNIPHIER_SMP
+       bool
 
 choice
        prompt "UniPhier SoC select"
 
 config MACH_PH1_PRO4
        bool "PH1-Pro4"
+       select UNIPHIER_SMP
 
 config MACH_PH1_LD4
        bool "PH1-LD4"
@@ -23,4 +25,70 @@ config MACH_PH1_SLD8
 
 endchoice
 
+choice
+       prompt "UniPhier Support Card select"
+       optional
+
+config PFC_MICRO_SUPPORT_CARD
+       bool "Support card with PFC CPLD"
+       help
+         This option provides support for the expansion board with PFC
+         original address mapping.
+
+         Say Y to use the on-board UART, Ether, LED devices.
+
+config DCC_MICRO_SUPPORT_CARD
+       bool "Support card with DCC CPLD"
+       help
+         This option provides support for the expansion board with DCC-
+         arranged address mapping that is compatible with legacy UniPhier
+         reference boards.
+
+         Say Y to use the on-board UART, Ether, LED devices.
+
+endchoice
+
+config CMD_PINMON
+       bool "Enable boot mode pins monitor command"
+       depends on !SPL_BUILD
+       default y
+       help
+         The command "pinmon" shows the state of the boot mode pins.
+         The boot mode pins are latched when the system reset is deasserted
+         and determine which device the system should load a boot image from.
+
+config SOC_INIT
+       bool
+       default SPL_BUILD
+
+config DRAM_INIT
+       bool
+       default SPL_BUILD
+
+config CMD_DDRPHY_DUMP
+       bool "Enable dump command of DDR PHY parameters"
+       depends on !SPL_BUILD
+       help
+         The command "ddrphy" shows the resulting parameters of DDR PHY
+         training; it is useful for the evaluation of DDR PHY training.
+
+choice
+       prompt "DDR3 Frequency select"
+       depends on DRAM_INIT
+
+config DDR_FREQ_1600
+       bool "DDR3 1600"
+       depends on MACH_PH1_PRO4 || MACH_PH1_LD4
+
+config DDR_FREQ_1333
+       bool "DDR3 1333"
+       depends on MACH_PH1_LD4 || MACH_PH1_SLD8
+
+endchoice
+
+config DDR_FREQ
+       int
+       default 1333 if DDR_FREQ_1333
+       default 1600 if DDR_FREQ_1600
+
 endmenu
index 7cedddaadc7acca7d64f67cf86740398e234f2d1..05462320b58c749125f27945639df9e10ad52808 100644 (file)
@@ -8,11 +8,15 @@ obj-$(CONFIG_SPL_BUILD) += spl.o
 obj-y += timer.o
 obj-y += reset.o
 obj-y += cache_uniphier.o
+obj-$(CONFIG_BOARD_POSTCLK_INIT) += board_postclk_init.o
 obj-y += dram_init.o
+obj-$(CONFIG_DRAM_INIT) += ddrphy_training.o
 obj-$(CONFIG_DISPLAY_CPUINFO) += cpu_info.o
+obj-$(CONFIG_BOARD_EARLY_INIT_R) += board_early_init_r.o
 obj-$(CONFIG_BOARD_LATE_INIT) += board_late_init.o
 obj-$(CONFIG_UNIPHIER_SMP) += smp.o
-obj-$(if $(CONFIG_SPL_BUILD),,y) += cmd_pinmon.o
+obj-$(CONFIG_CMD_PINMON) += cmd_pinmon.o
+obj-$(CONFIG_CMD_DDRPHY_DUMP) += cmd_ddrphy.o
 
 obj-y += board_common.o
 obj-$(CONFIG_PFC_MICRO_SUPPORT_CARD) += support_card.o
diff --git a/arch/arm/cpu/armv7/uniphier/board_early_init_r.c b/arch/arm/cpu/armv7/uniphier/board_early_init_r.c
new file mode 100644 (file)
index 0000000..cb7e04f
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/board.h>
+
+int board_early_init_r(void)
+{
+       uniphier_board_late_init();
+       return 0;
+}
index 37300206f60ab5b9ac0365c63e93d1876c8b0b1e..0622a1e16e0dfc3a63b04fa46f962538958eca66 100644 (file)
@@ -26,42 +26,6 @@ static void nand_denali_wp_disable(void)
 #endif
 }
 
-static void nand_denali_fixup(void)
-{
-#if defined(CONFIG_NAND_DENALI) && \
-       (defined(CONFIG_MACH_PH1_SLD8) || defined(CONFIG_MACH_PH1_PRO4))
-       /*
-        * The Denali NAND controller on some of UniPhier SoCs does not
-        * automatically query the device parameters.  For those SoCs,
-        * some registers must be set after the device is probed.
-        */
-       void __iomem *denali_reg = (void __iomem *)CONFIG_SYS_NAND_REGS_BASE;
-       struct mtd_info *mtd;
-       struct nand_chip *chip;
-
-       if (nand_curr_device < 0 ||
-           nand_curr_device >= CONFIG_SYS_MAX_NAND_DEVICE) {
-               /* NAND was not detected. Just return. */
-               return;
-       }
-
-       mtd = &nand_info[nand_curr_device];
-       chip = mtd->priv;
-
-       writel(mtd->erasesize / mtd->writesize, denali_reg + PAGES_PER_BLOCK);
-       writel(0, denali_reg + DEVICE_WIDTH);
-       writel(mtd->writesize, denali_reg + DEVICE_MAIN_AREA_SIZE);
-       writel(mtd->oobsize, denali_reg + DEVICE_SPARE_AREA_SIZE);
-       writel(1, denali_reg + DEVICES_CONNECTED);
-
-       /*
-        * chip->scan_bbt in nand_scan_tail() has been skipped.
-        * It should be done in here.
-        */
-       chip->scan_bbt(mtd);
-#endif
-}
-
 int board_late_init(void)
 {
        puts("MODE:  ");
@@ -70,7 +34,6 @@ int board_late_init(void)
        case BOOT_DEVICE_MMC1:
                printf("eMMC Boot\n");
                setenv("bootmode", "emmcboot");
-               nand_denali_fixup();
                break;
        case BOOT_DEVICE_NAND:
                printf("NAND Boot\n");
@@ -80,7 +43,6 @@ int board_late_init(void)
        case BOOT_DEVICE_NOR:
                printf("NOR Boot\n");
                setenv("bootmode", "norboot");
-               nand_denali_fixup();
                break;
        default:
                printf("Unsupported Boot Mode\n");
similarity index 82%
rename from arch/arm/cpu/armv7/uniphier/ph1-ld4/board_postclk_init.c
rename to arch/arm/cpu/armv7/uniphier/board_postclk_init.c
index 4302277dfc01f13db6fc879e895fc13f6f1e7103..89e44bb95be9e04cf436fe8fb6ff9f73714238b9 100644 (file)
@@ -5,11 +5,13 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <common.h>
+#include <linux/compiler.h>
 #include <asm/arch/led.h>
 #include <asm/arch/board.h>
 
-void bcu_init(void);
+void __weak bcu_init(void)
+{
+};
 void sbc_init(void);
 void sg_init(void);
 void pll_init(void);
@@ -18,12 +20,15 @@ void clkrst_init(void);
 
 int board_postclk_init(void)
 {
+#ifdef CONFIG_SOC_INIT
        bcu_init();
 
        sbc_init();
 
        sg_init();
 
+       uniphier_board_reset();
+
        pll_init();
 
        uniphier_board_init();
@@ -33,7 +38,7 @@ int board_postclk_init(void)
        clkrst_init();
 
        led_write(B, 2, , );
-
+#endif
        pin_init();
 
        led_write(B, 3, , );
diff --git a/arch/arm/cpu/armv7/uniphier/cmd_ddrphy.c b/arch/arm/cpu/armv7/uniphier/cmd_ddrphy.c
new file mode 100644 (file)
index 0000000..431d901
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/ddrphy-regs.h>
+
+/* Select either decimal or hexadecimal */
+#if 1
+#define PRINTF_FORMAT "%2d"
+#else
+#define PRINTF_FORMAT "%02x"
+#endif
+/* field separator */
+#define FS "   "
+
+static u32 read_bdl(struct ddrphy_datx8 __iomem *dx, int index)
+{
+       return (readl(&dx->bdlr[index / 5]) >> (index % 5 * 6)) & 0x3f;
+}
+
+static void dump_loop(void (*callback)(struct ddrphy_datx8 __iomem *))
+{
+       int ch, p, dx;
+       struct ddrphy __iomem *phy;
+
+       for (ch = 0; ch < NR_DDRCH; ch++) {
+               for (p = 0; p < NR_DDRPHY_PER_CH; p++) {
+                       phy = (struct ddrphy __iomem *)DDRPHY_BASE(ch, p);
+
+                       for (dx = 0; dx < NR_DATX8_PER_DDRPHY; dx++) {
+                               printf("CH%dP%dDX%d:", ch, p, dx);
+                               (*callback)(&phy->dx[dx]);
+                               printf("\n");
+                       }
+               }
+       }
+}
+
+static void __wbdl_dump(struct ddrphy_datx8 __iomem *dx)
+{
+       int i;
+
+       for (i = 0; i < 10; i++)
+               printf(FS PRINTF_FORMAT, read_bdl(dx, i));
+
+       printf(FS "(+" PRINTF_FORMAT ")", readl(&dx->lcdlr[1]) & 0xff);
+}
+
+void wbdl_dump(void)
+{
+       printf("\n--- Write Bit Delay Line ---\n");
+       printf("           DQ0  DQ1  DQ2  DQ3  DQ4  DQ5  DQ6  DQ7   DM  DQS  (WDQD)\n");
+
+       dump_loop(&__wbdl_dump);
+}
+
+static void __rbdl_dump(struct ddrphy_datx8 __iomem *dx)
+{
+       int i;
+
+       for (i = 15; i < 24; i++)
+               printf(FS PRINTF_FORMAT, read_bdl(dx, i));
+
+       printf(FS "(+" PRINTF_FORMAT ")", (readl(&dx->lcdlr[1]) >> 8) & 0xff);
+}
+
+void rbdl_dump(void)
+{
+       printf("\n--- Read Bit Delay Line ---\n");
+       printf("           DQ0  DQ1  DQ2  DQ3  DQ4  DQ5  DQ6  DQ7   DM  (RDQSD)\n");
+
+       dump_loop(&__rbdl_dump);
+}
+
+static void __wld_dump(struct ddrphy_datx8 __iomem *dx)
+{
+       int rank;
+       u32 lcdlr0 = readl(&dx->lcdlr[0]);
+       u32 gtr = readl(&dx->gtr);
+
+       for (rank = 0; rank < 4; rank++) {
+               u32 wld = (lcdlr0 >> (8 * rank)) & 0xff; /* Delay */
+               u32 wlsl = (gtr >> (12 + 2 * rank)) & 0x3; /* System Latency */
+
+               printf(FS PRINTF_FORMAT "%sT", wld,
+                      wlsl == 0 ? "-1" : wlsl == 1 ? "+0" : "+1");
+       }
+}
+
+void wld_dump(void)
+{
+       printf("\n--- Write Leveling Delay ---\n");
+       printf("            Rank0   Rank1   Rank2   Rank3\n");
+
+       dump_loop(&__wld_dump);
+}
+
+static void __dqsgd_dump(struct ddrphy_datx8 __iomem *dx)
+{
+       int rank;
+       u32 lcdlr2 = readl(&dx->lcdlr[2]);
+       u32 gtr = readl(&dx->gtr);
+
+       for (rank = 0; rank < 4; rank++) {
+               u32 dqsgd = (lcdlr2 >> (8 * rank)) & 0xff; /* Delay */
+               u32 dgsl = (gtr >> (3 * rank)) & 0x7; /* System Latency */
+
+               printf(FS PRINTF_FORMAT "+%dT", dqsgd, dgsl);
+       }
+}
+
+void dqsgd_dump(void)
+{
+       printf("\n--- DQS Gating Delay ---\n");
+       printf("            Rank0   Rank1   Rank2   Rank3\n");
+
+       dump_loop(&__dqsgd_dump);
+}
+
+static void __mdl_dump(struct ddrphy_datx8 __iomem *dx)
+{
+       int i;
+       u32 mdl = readl(&dx->mdlr);
+       for (i = 0; i < 3; i++)
+               printf(FS PRINTF_FORMAT, (mdl >> (8 * i)) & 0xff);
+}
+
+void mdl_dump(void)
+{
+       printf("\n--- Master Delay Line ---\n");
+       printf("          IPRD TPRD MDLD\n");
+
+       dump_loop(&__mdl_dump);
+}
+
+#define REG_DUMP(x) \
+       { u32 __iomem *p = &phy->x; printf("%3d: %-10s: %p : %08x\n", \
+                                       p - (u32 *)phy, #x, p, readl(p)); }
+
+void reg_dump(void)
+{
+       int ch, p;
+       struct ddrphy __iomem *phy;
+
+       printf("\n--- DDR PHY registers ---\n");
+
+       for (ch = 0; ch < NR_DDRCH; ch++) {
+               for (p = 0; p < NR_DDRPHY_PER_CH; p++) {
+                       printf("== Ch%d, PHY%d ==\n", ch, p);
+                       printf(" No: Name      : Address  : Data\n");
+
+                       phy = (struct ddrphy __iomem *)DDRPHY_BASE(ch, p);
+
+                       REG_DUMP(ridr);
+                       REG_DUMP(pir);
+                       REG_DUMP(pgcr[0]);
+                       REG_DUMP(pgcr[1]);
+                       REG_DUMP(pgsr[0]);
+                       REG_DUMP(pgsr[1]);
+                       REG_DUMP(pllcr);
+                       REG_DUMP(ptr[0]);
+                       REG_DUMP(ptr[1]);
+                       REG_DUMP(ptr[2]);
+                       REG_DUMP(ptr[3]);
+                       REG_DUMP(ptr[4]);
+                       REG_DUMP(acmdlr);
+                       REG_DUMP(acbdlr);
+                       REG_DUMP(dxccr);
+                       REG_DUMP(dsgcr);
+                       REG_DUMP(dcr);
+                       REG_DUMP(dtpr[0]);
+                       REG_DUMP(dtpr[1]);
+                       REG_DUMP(dtpr[2]);
+                       REG_DUMP(mr0);
+                       REG_DUMP(mr1);
+                       REG_DUMP(mr2);
+                       REG_DUMP(mr3);
+                       REG_DUMP(dx[0].gcr);
+                       REG_DUMP(dx[0].gtr);
+                       REG_DUMP(dx[1].gcr);
+                       REG_DUMP(dx[1].gtr);
+               }
+       }
+}
+
+static int do_ddr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       char *cmd = argv[1];
+
+       if (argc == 1)
+               cmd = "all";
+
+       if (!strcmp(cmd, "wbdl") || !strcmp(cmd, "all"))
+               wbdl_dump();
+
+       if (!strcmp(cmd, "rbdl") || !strcmp(cmd, "all"))
+               rbdl_dump();
+
+       if (!strcmp(cmd, "wld") || !strcmp(cmd, "all"))
+               wld_dump();
+
+       if (!strcmp(cmd, "dqsgd") || !strcmp(cmd, "all"))
+               dqsgd_dump();
+
+       if (!strcmp(cmd, "mdl") || !strcmp(cmd, "all"))
+               mdl_dump();
+
+       if (!strcmp(cmd, "reg") || !strcmp(cmd, "all"))
+               reg_dump();
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       ddr,    2,      1,      do_ddr,
+       "UniPhier DDR PHY parameters dumper",
+       "- dump all of the followings\n"
+       "ddr wbdl - dump Write Bit Delay\n"
+       "ddr rbdl - dump Read Bit Delay\n"
+       "ddr wld - dump Write Leveling\n"
+       "ddr dqsgd - dump DQS Gating Delay\n"
+       "ddr mdl - dump Master Delay Line\n"
+       "ddr reg - dump registers\n"
+);
index eef9f3984079db9a4b4abf7f9433d71d37b78166..3561b40a33196deed9568fcf5fd57ddc1675c07b 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <asm/arch/boot-device.h>
+#include <asm/arch/sbc-regs.h>
 
 static int do_pinmon(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
@@ -15,6 +16,8 @@ static int do_pinmon(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        mode_sel = get_boot_mode_sel();
 
+       printf("Boot Swap: %s\n\n", boot_is_swapped() ? "ON" : "OFF");
+
        puts("Boot Mode Pin:\n");
 
        for (table = boot_device_table; strlen(table->info); table++) {
diff --git a/arch/arm/cpu/armv7/uniphier/ddrphy_training.c b/arch/arm/cpu/armv7/uniphier/ddrphy_training.c
new file mode 100644 (file)
index 0000000..cc8b8ad
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2011-2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/ddrphy-regs.h>
+
+void ddrphy_prepare_training(struct ddrphy __iomem *phy, int rank)
+{
+       int dx;
+       u32 __iomem tmp, *p;
+
+       for (dx = 0; dx < NR_DATX8_PER_DDRPHY; dx++) {
+               p = &phy->dx[dx].gcr;
+
+               tmp = readl(p);
+               /* Specify the rank that should be write leveled */
+               tmp &= ~DXGCR_WLRKEN_MASK;
+               tmp |= (1 << (DXGCR_WLRKEN_SHIFT + rank)) & DXGCR_WLRKEN_MASK;
+               writel(tmp, p);
+       }
+
+       p = &phy->dtcr;
+
+       tmp = readl(p);
+       /* Specify the rank used during data bit deskew and eye centering */
+       tmp &= ~DTCR_DTRANK_MASK;
+       tmp |= (rank << DTCR_DTRANK_SHIFT) & DTCR_DTRANK_MASK;
+       /* Use Multi-Purpose Register for DQS gate training */
+       tmp |= DTCR_DTMPR;
+       /* Specify the rank enabled for data-training */
+       tmp &= ~DTCR_RNKEN_MASK;
+       tmp |= (1 << (DTCR_RNKEN_SHIFT + rank)) & DTCR_RNKEN_MASK;
+       writel(tmp, p);
+}
+
+struct ddrphy_init_sequence {
+       char *description;
+       u32 init_flag;
+       u32 done_flag;
+       u32 err_flag;
+};
+
+static struct ddrphy_init_sequence init_sequence[] = {
+       {
+               "DRAM Initialization",
+               PIR_DRAMRST | PIR_DRAMINIT,
+               PGSR0_DIDONE,
+               PGSR0_DIERR
+       },
+       {
+               "Write Leveling",
+               PIR_WL,
+               PGSR0_WLDONE,
+               PGSR0_WLERR
+       },
+       {
+               "Read DQS Gate Training",
+               PIR_QSGATE,
+               PGSR0_QSGDONE,
+               PGSR0_QSGERR
+       },
+       {
+               "Write Leveling Adjustment",
+               PIR_WLADJ,
+               PGSR0_WLADONE,
+               PGSR0_WLAERR
+       },
+       {
+               "Read Bit Deskew",
+               PIR_RDDSKW,
+               PGSR0_RDDONE,
+               PGSR0_RDERR
+       },
+       {
+               "Write Bit Deskew",
+               PIR_WRDSKW,
+               PGSR0_WDDONE,
+               PGSR0_WDERR
+       },
+       {
+               "Read Eye Training",
+               PIR_RDEYE,
+               PGSR0_REDONE,
+               PGSR0_REERR
+       },
+       {
+               "Write Eye Training",
+               PIR_WREYE,
+               PGSR0_WEDONE,
+               PGSR0_WEERR
+       }
+};
+
+int ddrphy_training(struct ddrphy __iomem *phy)
+{
+       int i;
+       u32 pgsr0;
+       u32 init_flag = PIR_INIT;
+       u32 done_flag = PGSR0_IDONE;
+       int timeout = 50000; /* 50 msec is long enough */
+#ifdef DISPLAY_ELAPSED_TIME
+       ulong start = get_timer(0);
+#endif
+
+       for (i = 0; i < ARRAY_SIZE(init_sequence); i++) {
+               init_flag |= init_sequence[i].init_flag;
+               done_flag |= init_sequence[i].done_flag;
+       }
+
+       writel(init_flag, &phy->pir);
+
+       do {
+               if (--timeout < 0) {
+#ifndef CONFIG_SPL_BUILD
+                       printf("%s: error: timeout during DDR training\n",
+                                                               __func__);
+#endif
+                       return -1;
+               }
+               udelay(1);
+               pgsr0 = readl(&phy->pgsr[0]);
+       } while ((pgsr0 & done_flag) != done_flag);
+
+       for (i = 0; i < ARRAY_SIZE(init_sequence); i++) {
+               if (pgsr0 & init_sequence[i].err_flag) {
+#ifndef CONFIG_SPL_BUILD
+                       printf("%s: error: %s failed\n", __func__,
+                                               init_sequence[i].description);
+#endif
+                       return -1;
+               }
+       }
+
+#ifdef DISPLAY_ELAPSED_TIME
+       printf("%s: info: elapsed time %ld msec\n", get_timer(start));
+#endif
+
+       return 0;
+}
index 5465a0e6bf6bf97d4dbdabc1c7b746b0cffdc510..7de657b7af91d53bddd4639cc77b8603f0548d60 100644 (file)
@@ -16,7 +16,7 @@ int dram_init(void)
        DECLARE_GLOBAL_DATA_PTR;
        gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
 
-#if !defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD)
+#ifdef CONFIG_DRAM_INIT
        led_write(B, 4, , );
 
        {
index d2738350a352e5b75e7a6e5c965ec134f742fe1b..febb3c8e4b967e9fbbdf7255dba357e03c9f0e8c 100644 (file)
 #define REG    DEVICE  /* IO Register: Device */
 #define DDR    DEVICE  /* DDR SDRAM: Device */
 
-#ifdef CONFIG_SPL_BUILD
 #define IS_SPL_TEXT_AREA(x)    ((x) == ((CONFIG_SPL_TEXT_BASE) >> 20))
-#else
-#define IS_SPL_TEXT_AREA(x)    ((x) == ((CONFIG_SYS_TEXT_BASE) >> 20))
-#endif
 
 #define IS_INIT_STACK_AREA(x)  ((x) == ((CONFIG_SYS_INIT_SP_ADDR) >> 20))
 
 #define IS_SSC(x)              ((IS_SPL_TEXT_AREA(x)) || \
                                        (IS_INIT_STACK_AREA(x)))
 #define IS_EXT(x)              ((x) < 0x100)
-#define IS_REG(x)              (0x500 <= (x) && (x) < 0x700)
+
+/* 0x20000000-0x2fffffff, 0xf0000000-0xffffffff are only used by PH1-sLD3 */
+#define IS_REG(x)              (0x200 <= (x) && (x) < 0x300) || \
+                               (0x500 <= (x) && (x) < 0x700) || \
+                               (0xf00 <= (x))
+
 #define IS_DDR(x)              (0x800 <= (x) && (x) < 0xf00)
 
 #define MMU_FLAGS(x)           (IS_SSC(x)) ? SSC : \
index 0ea12d3cfc6ea6ffeb0db2df61397240baf5b87b..c208ab67a180188a0d4f2b46330a1edaa3e0efc2 100644 (file)
@@ -26,6 +26,10 @@ ENTRY(lowlevel_init)
        orr     r0, r0, #(CR_C | CR_M)          @ enable MMU and Dcache
        mcr     p15, 0, r0, c1, c0, 0
 
+#ifdef CONFIG_DEBUG_LL
+       bl      setup_lowlevel_debug
+#endif
+
        /*
         * Now we are using the page table embedded in the Boot ROM.
         * It is not handy since it is not a straight mapped table for sLD3.
index 781b511a97b499090b4485f78a57d60070b10673..07529061213e6be38ca5e7de7fa0ddda86c93c70 100644 (file)
@@ -3,9 +3,10 @@
 #
 
 obj-$(CONFIG_DISPLAY_BOARDINFO) += board_info.o
-obj-y += platdevice.o
+obj-$(if $(CONFIG_OF_CONTROL),,y) += platdevice.o
 obj-y += boot-mode.o
-obj-$(CONFIG_BOARD_POSTCLK_INIT) += board_postclk_init.o bcu_init.o \
-               sbc_init.o sg_init.o pll_init.o clkrst_init.o pinctrl.o
-obj-$(CONFIG_SPL_BUILD) += pll_spectrum.o \
-       umc_init.o
+obj-$(CONFIG_DEBUG_LL) += lowlevel_debug.o
+obj-$(CONFIG_SOC_INIT) += bcu_init.o sbc_init.o sg_init.o pll_init.o \
+                                                               clkrst_init.o
+obj-$(CONFIG_BOARD_POSTCLK_INIT) += pinctrl.o
+obj-$(CONFIG_DRAM_INIT) += pll_spectrum.o umc_init.o ddrphy_init.o
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-ld4/ddrphy_init.c b/arch/arm/cpu/armv7/uniphier/ph1-ld4/ddrphy_init.c
new file mode 100644 (file)
index 0000000..60fc5ad
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/types.h>
+#include <asm/io.h>
+#include <asm/arch/ddrphy-regs.h>
+
+void ddrphy_init(struct ddrphy __iomem *phy, int freq, int size)
+{
+       u32 tmp;
+
+       writel(0x0300c473, &phy->pgcr[1]);
+       if (freq == 1333) {
+               writel(0x0a806844, &phy->ptr[0]);
+               writel(0x208e0124, &phy->ptr[1]);
+       } else {
+               writel(0x0c807d04, &phy->ptr[0]);
+               writel(0x2710015E, &phy->ptr[1]);
+       }
+       writel(0x00083DEF, &phy->ptr[2]);
+       if (freq == 1333) {
+               writel(0x0f051616, &phy->ptr[3]);
+               writel(0x06ae08d6, &phy->ptr[4]);
+       } else {
+               writel(0x12061A80, &phy->ptr[3]);
+               writel(0x08027100, &phy->ptr[4]);
+       }
+       writel(0xF004001A, &phy->dsgcr);
+
+       /* change the value of the on-die pull-up/pull-down registors */
+       tmp = readl(&phy->dxccr);
+       tmp &= ~0x0ee0;
+       tmp |= DXCCR_DQSNRES_688_OHM | DXCCR_DQSRES_688_OHM;
+       writel(tmp, &phy->dxccr);
+
+       writel(0x0000040B, &phy->dcr);
+       if (freq == 1333) {
+               writel(0x85589955, &phy->dtpr[0]);
+               if (size == 1)
+                       writel(0x1a8253c0, &phy->dtpr[1]);
+               else
+                       writel(0x1a8363c0, &phy->dtpr[1]);
+               writel(0x5002c200, &phy->dtpr[2]);
+               writel(0x00000b51, &phy->mr0);
+       } else {
+               writel(0x999cbb66, &phy->dtpr[0]);
+               if (size == 1)
+                       writel(0x1a82dbc0, &phy->dtpr[1]);
+               else
+                       writel(0x1a878400, &phy->dtpr[1]);
+               writel(0xa00214f8, &phy->dtpr[2]);
+               writel(0x00000d71, &phy->mr0);
+       }
+       writel(0x00000006, &phy->mr1);
+       if (freq == 1333)
+               writel(0x00000290, &phy->mr2);
+       else
+               writel(0x00000298, &phy->mr2);
+
+       writel(0x00000800, &phy->mr3);
+
+       while (!(readl(&phy->pgsr[0]) & PGSR0_IDONE))
+               ;
+
+       writel(0x0300C473, &phy->pgcr[1]);
+       writel(0x0000005D, &phy->zq[0].cr[1]);
+}
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-ld4/lowlevel_debug.S b/arch/arm/cpu/armv7/uniphier/ph1-ld4/lowlevel_debug.S
new file mode 100644 (file)
index 0000000..c0778a0
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * On-chip UART initializaion for low-level debugging
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/linkage.h>
+#include <asm/arch/sg-regs.h>
+
+#define UART_CLK               36864000
+#include <asm/arch/debug-uart.S>
+
+ENTRY(setup_lowlevel_debug)
+               init_debug_uart r0, r1, r2
+
+               /* UART Port 0 */
+               set_pinsel      85, 1, r0, r1
+               set_pinsel      88, 1, r0, r1
+
+               ldr             r0, =SG_IECTRL
+               ldr             r1, [r0]
+               orr             r1, r1, #1
+               str             r1, [r0]
+
+               mov             pc, lr
+ENDPROC(setup_lowlevel_debug)
index 0047223181afcfad5e8f96eabfe53b960aad0844..9d51299308764fb02d94c3d7e668d31a122e02ae 100644 (file)
@@ -13,3 +13,15 @@ SERIAL_DEVICE(0, 0x54006800, UART_MASTER_CLK)
 SERIAL_DEVICE(1, 0x54006900, UART_MASTER_CLK)
 SERIAL_DEVICE(2, 0x54006a00, UART_MASTER_CLK)
 SERIAL_DEVICE(3, 0x54006b00, UART_MASTER_CLK)
+
+struct uniphier_ehci_platform_data uniphier_ehci_platdata[] = {
+       {
+               .base = 0x5a800100,
+       },
+       {
+               .base = 0x5a810100,
+       },
+       {
+               .base = 0x5a820100,
+       },
+};
index a37ed1674f0e834af412400ec9ff447fcfe32aa6..4839c943c7f199895f5eeec414ef130eedec16d0 100644 (file)
 
 void sbc_init(void)
 {
+       u32 tmp;
+
+       /* system bus output enable */
+       tmp = readl(PC0CTRL);
+       tmp &= 0xfffffcff;
+       writel(tmp, PC0CTRL);
+
        /* XECS1: sub/boot memory (boot swap = off/on) */
        writel(SBCTRL0_SAVEPIN_MEM_VALUE, SBCTRL10);
        writel(SBCTRL1_SAVEPIN_MEM_VALUE, SBCTRL11);
index 1344ac1caab2576441fa8bd90d17c6d2055d79a7..87889160a7058c39cdd8c32cea9ec8b82eddbe03 100644 (file)
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/umc-regs.h>
+#include <asm/arch/ddrphy-regs.h>
 
 static inline void umc_start_ssif(void __iomem *ssif_base)
 {
@@ -125,6 +126,8 @@ static inline int umc_init_sub(int freq, int size_ch0, int size_ch1)
        void __iomem *ca_base1 = (void __iomem *)UMC_CA_BASE(1);
        void __iomem *dramcont0 = (void __iomem *)UMC_DRAMCONT_BASE(0);
        void __iomem *dramcont1 = (void __iomem *)UMC_DRAMCONT_BASE(1);
+       void __iomem *phy0_0 = (void __iomem *)DDRPHY_BASE(0, 0);
+       void __iomem *phy1_0 = (void __iomem *)DDRPHY_BASE(1, 0);
 
        umc_dram_init_start(dramcont0);
        umc_dram_init_start(dramcont1);
@@ -133,8 +136,18 @@ static inline int umc_init_sub(int freq, int size_ch0, int size_ch1)
 
        writel(0x00000101, dramcont0 + UMC_DIOCTLA);
 
+       ddrphy_init(phy0_0, freq, size_ch0);
+
+       ddrphy_prepare_training(phy0_0, 0);
+       ddrphy_training(phy0_0);
+
        writel(0x00000101, dramcont1 + UMC_DIOCTLA);
 
+       ddrphy_init(phy1_0, freq, size_ch1);
+
+       ddrphy_prepare_training(phy1_0, 1);
+       ddrphy_training(phy1_0);
+
        umc_dramcont_init(dramcont0, ca_base0, size_ch0, freq);
        umc_dramcont_init(dramcont1, ca_base1, size_ch1, freq);
 
@@ -149,10 +162,6 @@ int umc_init(void)
                                        CONFIG_SDRAM1_SIZE / 0x08000000);
 }
 
-#if CONFIG_DDR_FREQ != 1333 && CONFIG_DDR_FREQ != 1600
-#error Unsupported DDR Frequency.
-#endif
-
 #if (CONFIG_SDRAM0_SIZE == 0x08000000 || CONFIG_SDRAM0_SIZE == 0x10000000) && \
     (CONFIG_SDRAM1_SIZE == 0x08000000 || CONFIG_SDRAM1_SIZE == 0x10000000) && \
     CONFIG_DDR_NUM_CH0 == 1 && CONFIG_DDR_NUM_CH1 == 1
index e11f4f6d8b3f36c44d340f5bafdf9d8fd4858b12..8206e2a3542774e0133525825c95e7238f3a1657 100644 (file)
@@ -3,9 +3,9 @@
 #
 
 obj-$(CONFIG_DISPLAY_BOARDINFO) += board_info.o
-obj-y += platdevice.o
+obj-$(if $(CONFIG_OF_CONTROL),,y) += platdevice.o
 obj-y += boot-mode.o
-obj-$(CONFIG_BOARD_POSTCLK_INIT) += board_postclk_init.o sbc_init.o \
-                               sg_init.o pll_init.o clkrst_init.o pinctrl.o
-obj-$(CONFIG_SPL_BUILD) += pll_spectrum.o \
-       umc_init.o
+obj-$(CONFIG_DEBUG_LL) += lowlevel_debug.o
+obj-$(CONFIG_SOC_INIT) += sbc_init.o sg_init.o pll_init.o clkrst_init.o
+obj-$(CONFIG_BOARD_POSTCLK_INIT) += pinctrl.o
+obj-$(CONFIG_DRAM_INIT) += pll_spectrum.o umc_init.o ddrphy_init.o
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-pro4/board_postclk_init.c b/arch/arm/cpu/armv7/uniphier/ph1-pro4/board_postclk_init.c
deleted file mode 100644 (file)
index 7198829..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2012-2014 Panasonic Corporation
- *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/led.h>
-#include <asm/arch/board.h>
-
-void sbc_init(void);
-void sg_init(void);
-void pll_init(void);
-void pin_init(void);
-void clkrst_init(void);
-
-int board_postclk_init(void)
-{
-       sbc_init();
-
-       sg_init();
-
-       pll_init();
-
-       uniphier_board_init();
-
-       led_write(B, 1, , );
-
-       clkrst_init();
-
-       led_write(B, 2, , );
-
-       pin_init();
-
-       led_write(B, 3, , );
-
-       return 0;
-}
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-pro4/ddrphy_init.c b/arch/arm/cpu/armv7/uniphier/ph1-pro4/ddrphy_init.c
new file mode 100644 (file)
index 0000000..c5d1f60
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/types.h>
+#include <asm/io.h>
+#include <asm/arch/ddrphy-regs.h>
+
+void ddrphy_init(struct ddrphy __iomem *phy, int freq, int size)
+{
+       u32 tmp;
+
+       writel(0x0300c473, &phy->pgcr[1]);
+       if (freq == 1333) {
+               writel(0x0a806844, &phy->ptr[0]);
+               writel(0x208e0124, &phy->ptr[1]);
+       } else {
+               writel(0x0c807d04, &phy->ptr[0]);
+               writel(0x2710015E, &phy->ptr[1]);
+       }
+       writel(0x00083DEF, &phy->ptr[2]);
+       if (freq == 1333) {
+               writel(0x0f051616, &phy->ptr[3]);
+               writel(0x06ae08d6, &phy->ptr[4]);
+       } else {
+               writel(0x12061A80, &phy->ptr[3]);
+               writel(0x08027100, &phy->ptr[4]);
+       }
+       writel(0xF004001A, &phy->dsgcr);
+
+       /* change the value of the on-die pull-up/pull-down registors */
+       tmp = readl(&phy->dxccr);
+       tmp &= ~0x0ee0;
+       tmp |= DXCCR_DQSNRES_688_OHM | DXCCR_DQSRES_688_OHM;
+       writel(tmp, &phy->dxccr);
+
+       writel(0x0000040B, &phy->dcr);
+       if (freq == 1333) {
+               writel(0x85589955, &phy->dtpr[0]);
+               if (size == 1)
+                       writel(0x1a8363c0, &phy->dtpr[1]);
+               else
+                       writel(0x1a8363c0, &phy->dtpr[1]);
+               writel(0x5002c200, &phy->dtpr[2]);
+               writel(0x00000b51, &phy->mr0);
+       } else {
+               writel(0x999cbb66, &phy->dtpr[0]);
+               if (size == 1)
+                       writel(0x1a878400, &phy->dtpr[1]);
+               else
+                       writel(0x1a878400, &phy->dtpr[1]);
+               writel(0xa00214f8, &phy->dtpr[2]);
+               writel(0x00000d71, &phy->mr0);
+       }
+       writel(0x00000006, &phy->mr1);
+       if (freq == 1333)
+               writel(0x00000290, &phy->mr2);
+       else
+               writel(0x00000298, &phy->mr2);
+
+       writel(0x00000000, &phy->mr3);
+
+       while (!(readl(&phy->pgsr[0]) & PGSR0_IDONE))
+               ;
+
+       writel(0x0300C473, &phy->pgcr[1]);
+       writel(0x0000005D, &phy->zq[0].cr[1]);
+}
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-pro4/lowlevel_debug.S b/arch/arm/cpu/armv7/uniphier/ph1-pro4/lowlevel_debug.S
new file mode 100644 (file)
index 0000000..a793b7c
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * On-chip UART initializaion for low-level debugging
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/linkage.h>
+#include <asm/arch/sc-regs.h>
+#include <asm/arch/sg-regs.h>
+
+#define UART_CLK               73728000
+#include <asm/arch/debug-uart.S>
+
+ENTRY(setup_lowlevel_debug)
+               ldr             r0, =SC_CLKCTRL
+               ldr             r1, [r0]
+               orr             r1, r1, #SC_CLKCTRL_CLK_PERI
+               str             r1, [r0]
+
+               init_debug_uart r0, r1, r2
+
+               /* UART Port 0 */
+               set_pinsel      127, 0, r0, r1
+               set_pinsel      128, 0, r0, r1
+
+               ldr             r0, =SG_LOADPINCTRL
+               mov             r1, #1
+               str             r1, [r0]
+
+               ldr             r0, =SG_IECTRL
+               ldr             r1, [r0]
+               orr             r1, r1, #1
+               str             r1, [r0]
+
+               mov             pc, lr
+ENDPROC(setup_lowlevel_debug)
index 503c247d6b32abf46b787f3a1088cfba3f9691ec..4e3d47615b64161d7f36797916f3271d223703cd 100644 (file)
@@ -41,5 +41,12 @@ void pin_init(void)
        sg_set_pinsel(54, 0);   /* NRYBY0 -> NRYBY0 */
 #endif
 
+#ifdef CONFIG_USB_EHCI_UNIPHIER
+       sg_set_pinsel(184, 0);  /* USB2VBUS -> USB2VBUS */
+       sg_set_pinsel(185, 0);  /* USB2OD   -> USB2OD */
+       sg_set_pinsel(187, 0);  /* USB3VBUS -> USB3VBUS */
+       sg_set_pinsel(188, 0);  /* USB3OD   -> USB3OD */
+#endif
+
        writel(1, SG_LOADPINCTRL);
 }
index 6da921e92043df9b5d8d2e2dd95497384d771470..31ee2a210002d2c67759191b515e105d90ed8cd8 100644 (file)
@@ -13,3 +13,12 @@ SERIAL_DEVICE(0, 0x54006800, UART_MASTER_CLK)
 SERIAL_DEVICE(1, 0x54006900, UART_MASTER_CLK)
 SERIAL_DEVICE(2, 0x54006a00, UART_MASTER_CLK)
 SERIAL_DEVICE(3, 0x54006b00, UART_MASTER_CLK)
+
+struct uniphier_ehci_platform_data uniphier_ehci_platdata[] = {
+       {
+               .base = 0x5a800100,
+       },
+       {
+               .base = 0x5a810100,
+       },
+};
index f113db54d1eaacd1f810feb76ca2152bb3ef5deb..3c82a1aca4c85369eb1f7712ca6b65337ecd82e0 100644 (file)
@@ -22,16 +22,7 @@ void sbc_init(void)
        writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL12);
        writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL14);
 
-       if (readl(SBBASE0) & 0x1) {
-               /*
-                * Boot Swap Off: boot from mask ROM
-                * 0x00000000-0x01ffffff: mask ROM
-                * 0x02000000-0x3effffff: memory bank (31MB)
-                * 0x03f00000-0x3fffffff: peripherals (1MB)
-                */
-               writel(0x0000be01, SBBASE0); /* dummy */
-               writel(0x0200be01, SBBASE1);
-       } else {
+       if (boot_is_swapped()) {
                /*
                 * Boot Swap On: boot from external NOR/SRAM
                 * 0x02000000-0x03ffffff is a mirror of 0x00000000-0x01ffffff.
@@ -40,6 +31,15 @@ void sbc_init(void)
                 * 0x01f00000-0x01ffffff, 0x03f00000-0x03ffffff: peripherals
                 */
                writel(0x0000bc01, SBBASE0);
+       } else {
+               /*
+                * Boot Swap Off: boot from mask ROM
+                * 0x00000000-0x01ffffff: mask ROM
+                * 0x02000000-0x3effffff: memory bank (31MB)
+                * 0x03f00000-0x3fffffff: peripherals (1MB)
+                */
+               writel(0x0000be01, SBBASE0); /* dummy */
+               writel(0x0200be01, SBBASE1);
        }
 #elif defined(CONFIG_DCC_MICRO_SUPPORT_CARD)
 #if !defined(CONFIG_SPL_BUILD)
index dd462875bb7a51feb72586498b3f8bc7344e7479..1973ab04c25e122dc96a826a4b946a60f1bd02ba 100644 (file)
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/umc-regs.h>
+#include <asm/arch/ddrphy-regs.h>
 
 static inline void umc_start_ssif(void __iomem *ssif_base)
 {
@@ -94,6 +95,10 @@ static inline int umc_init_sub(int freq, int size_ch0, int size_ch1)
        void __iomem *ca_base1 = (void __iomem *)UMC_CA_BASE(1);
        void __iomem *dramcont0 = (void __iomem *)UMC_DRAMCONT_BASE(0);
        void __iomem *dramcont1 = (void __iomem *)UMC_DRAMCONT_BASE(1);
+       void __iomem *phy0_0 = (void __iomem *)DDRPHY_BASE(0, 0);
+       void __iomem *phy0_1 = (void __iomem *)DDRPHY_BASE(0, 1);
+       void __iomem *phy1_0 = (void __iomem *)DDRPHY_BASE(1, 0);
+       void __iomem *phy1_1 = (void __iomem *)DDRPHY_BASE(1, 1);
 
        umc_dram_init_start(dramcont0);
        umc_dram_init_start(dramcont1);
@@ -102,12 +107,32 @@ static inline int umc_init_sub(int freq, int size_ch0, int size_ch1)
 
        writel(0x00000101, dramcont0 + UMC_DIOCTLA);
 
+       ddrphy_init(phy0_0, freq, size_ch0);
+
+       ddrphy_prepare_training(phy0_0, 0);
+       ddrphy_training(phy0_0);
+
        writel(0x00000103, dramcont0 + UMC_DIOCTLA);
 
+       ddrphy_init(phy0_1, freq, size_ch0);
+
+       ddrphy_prepare_training(phy0_1, 1);
+       ddrphy_training(phy0_1);
+
        writel(0x00000101, dramcont1 + UMC_DIOCTLA);
 
+       ddrphy_init(phy1_0, freq, size_ch1);
+
+       ddrphy_prepare_training(phy1_0, 0);
+       ddrphy_training(phy1_0);
+
        writel(0x00000103, dramcont1 + UMC_DIOCTLA);
 
+       ddrphy_init(phy1_1, freq, size_ch1);
+
+       ddrphy_prepare_training(phy1_1, 1);
+       ddrphy_training(phy1_1);
+
        umc_dramcont_init(dramcont0, ca_base0, size_ch0, freq);
        umc_dramcont_init(dramcont1, ca_base1, size_ch1, freq);
 
@@ -122,10 +147,6 @@ int umc_init(void)
                                        CONFIG_SDRAM1_SIZE / 0x08000000);
 }
 
-#if CONFIG_DDR_FREQ != 1600
-#error Unsupported DDR frequency.
-#endif
-
 #if ((CONFIG_SDRAM0_SIZE == 0x20000000 && CONFIG_DDR_NUM_CH0 == 2) || \
      (CONFIG_SDRAM0_SIZE == 0x10000000 && CONFIG_DDR_NUM_CH0 == 1)) && \
     ((CONFIG_SDRAM1_SIZE == 0x20000000 && CONFIG_DDR_NUM_CH1 == 2) || \
index 781b511a97b499090b4485f78a57d60070b10673..07529061213e6be38ca5e7de7fa0ddda86c93c70 100644 (file)
@@ -3,9 +3,10 @@
 #
 
 obj-$(CONFIG_DISPLAY_BOARDINFO) += board_info.o
-obj-y += platdevice.o
+obj-$(if $(CONFIG_OF_CONTROL),,y) += platdevice.o
 obj-y += boot-mode.o
-obj-$(CONFIG_BOARD_POSTCLK_INIT) += board_postclk_init.o bcu_init.o \
-               sbc_init.o sg_init.o pll_init.o clkrst_init.o pinctrl.o
-obj-$(CONFIG_SPL_BUILD) += pll_spectrum.o \
-       umc_init.o
+obj-$(CONFIG_DEBUG_LL) += lowlevel_debug.o
+obj-$(CONFIG_SOC_INIT) += bcu_init.o sbc_init.o sg_init.o pll_init.o \
+                                                               clkrst_init.o
+obj-$(CONFIG_BOARD_POSTCLK_INIT) += pinctrl.o
+obj-$(CONFIG_DRAM_INIT) += pll_spectrum.o umc_init.o ddrphy_init.o
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-sld8/board_postclk_init.c b/arch/arm/cpu/armv7/uniphier/ph1-sld8/board_postclk_init.c
deleted file mode 100644 (file)
index 287b33c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "../ph1-ld4/board_postclk_init.c"
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-sld8/ddrphy_init.c b/arch/arm/cpu/armv7/uniphier/ph1-sld8/ddrphy_init.c
new file mode 100644 (file)
index 0000000..a5eafef
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <linux/types.h>
+#include <asm/io.h>
+#include <asm/arch/ddrphy-regs.h>
+
+void ddrphy_init(struct ddrphy __iomem *phy, int freq, int size)
+{
+       u32 tmp;
+
+       writel(0x0300c473, &phy->pgcr[1]);
+       if (freq == 1333) {
+               writel(0x0a806844, &phy->ptr[0]);
+               writel(0x208e0124, &phy->ptr[1]);
+       } else {
+               writel(0x0c807d04, &phy->ptr[0]);
+               writel(0x2710015E, &phy->ptr[1]);
+       }
+       writel(0x00083DEF, &phy->ptr[2]);
+       if (freq == 1333) {
+               writel(0x0f051616, &phy->ptr[3]);
+               writel(0x06ae08d6, &phy->ptr[4]);
+       } else {
+               writel(0x12061A80, &phy->ptr[3]);
+               writel(0x08027100, &phy->ptr[4]);
+       }
+       writel(0xF004001A, &phy->dsgcr);
+
+       /* change the value of the on-die pull-up/pull-down registors */
+       tmp = readl(&phy->dxccr);
+       tmp &= ~0x0ee0;
+       tmp |= DXCCR_DQSNRES_688_OHM | DXCCR_DQSRES_688_OHM;
+       writel(tmp, &phy->dxccr);
+
+       writel(0x0000040B, &phy->dcr);
+       if (freq == 1333) {
+               writel(0x85589955, &phy->dtpr[0]);
+               if (size == 1)
+                       writel(0x1a8363c0, &phy->dtpr[1]);
+               else
+                       writel(0x1a8363c0, &phy->dtpr[1]);
+               writel(0x5002c200, &phy->dtpr[2]);
+               writel(0x00000b51, &phy->mr0);
+       } else {
+               writel(0x999cbb66, &phy->dtpr[0]);
+               if (size == 1)
+                       writel(0x1a878400, &phy->dtpr[1]);
+               else
+                       writel(0x1a878400, &phy->dtpr[1]);
+               writel(0xa00214f8, &phy->dtpr[2]);
+               writel(0x00000d71, &phy->mr0);
+       }
+       writel(0x00000006, &phy->mr1);
+       if (freq == 1333)
+               writel(0x00000290, &phy->mr2);
+       else
+               writel(0x00000298, &phy->mr2);
+
+#ifdef CONFIG_DDR_STANDARD
+       writel(0x00000000, &phy->mr3);
+#else
+       writel(0x00000800, &phy->mr3);
+#endif
+
+       while (!(readl(&phy->pgsr[0]) & PGSR0_IDONE))
+               ;
+
+       writel(0x0300C473, &phy->pgcr[1]);
+       writel(0x0000005D, &phy->zq[0].cr[1]);
+}
diff --git a/arch/arm/cpu/armv7/uniphier/ph1-sld8/lowlevel_debug.S b/arch/arm/cpu/armv7/uniphier/ph1-sld8/lowlevel_debug.S
new file mode 100644 (file)
index 0000000..a413e5f
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * On-chip UART initializaion for low-level debugging
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/linkage.h>
+#include <asm/arch/sg-regs.h>
+
+#define UART_CLK               80000000
+#include <asm/arch/debug-uart.S>
+
+ENTRY(setup_lowlevel_debug)
+               init_debug_uart r0, r1, r2
+
+               /* UART Port 0 */
+               set_pinsel      70, 3, r0, r1
+               set_pinsel      71, 3, r0, r1
+
+               ldr             r0, =SG_IECTRL
+               ldr             r1, [r0]
+               orr             r1, r1, #1
+               str             r1, [r0]
+
+               mov             pc, lr
+ENDPROC(setup_lowlevel_debug)
index 59d054a31026ebeb354396dd8e69f872d478a8e4..ea0691dd67b9f06ca21d8dbb0ac85fa1df549aad 100644 (file)
@@ -13,3 +13,15 @@ SERIAL_DEVICE(0, 0x54006800, UART_MASTER_CLK)
 SERIAL_DEVICE(1, 0x54006900, UART_MASTER_CLK)
 SERIAL_DEVICE(2, 0x54006a00, UART_MASTER_CLK)
 SERIAL_DEVICE(3, 0x54006b00, UART_MASTER_CLK)
+
+struct uniphier_ehci_platform_data uniphier_ehci_platdata[] = {
+       {
+               .base = 0x5a800100,
+       },
+       {
+               .base = 0x5a810100,
+       },
+       {
+               .base = 0x5a820100,
+       },
+};
index af44dee4f62b05cc111c3a7c530fcfcdb93d6acd..5efee9c505ce9a58c4e1d4da4d55ab30dde8ee80 100644 (file)
 
 void sbc_init(void)
 {
+       u32 tmp;
+
+       /* system bus output enable */
+       tmp = readl(PC0CTRL);
+       tmp &= 0xfffffcff;
+       writel(tmp, PC0CTRL);
+
 #if !defined(CONFIG_SPL_BUILD)
        /* XECS0 : dummy */
        writel(SBCTRL0_SAVEPIN_MEM_VALUE, SBCTRL00);
index ff2dcb1640eef11cf4b215acd25222edc9b10831..2e0f9aeaa5e6300baffdc4ee75252adaf9c1777c 100644 (file)
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/umc-regs.h>
+#include <asm/arch/ddrphy-regs.h>
 
 static inline void umc_start_ssif(void __iomem *ssif_base)
 {
@@ -105,6 +106,8 @@ static inline int umc_init_sub(int freq, int size_ch0, int size_ch1)
        void __iomem *ca_base1 = (void __iomem *)UMC_CA_BASE(1);
        void __iomem *dramcont0 = (void __iomem *)UMC_DRAMCONT_BASE(0);
        void __iomem *dramcont1 = (void __iomem *)UMC_DRAMCONT_BASE(1);
+       void __iomem *phy0_0 = (void __iomem *)DDRPHY_BASE(0, 0);
+       void __iomem *phy1_0 = (void __iomem *)DDRPHY_BASE(1, 0);
 
        umc_dram_init_start(dramcont0);
        umc_dram_init_start(dramcont1);
@@ -113,8 +116,18 @@ static inline int umc_init_sub(int freq, int size_ch0, int size_ch1)
 
        writel(0x00000101, dramcont0 + UMC_DIOCTLA);
 
+       ddrphy_init(phy0_0, freq, size_ch0);
+
+       ddrphy_prepare_training(phy0_0, 0);
+       ddrphy_training(phy0_0);
+
        writel(0x00000101, dramcont1 + UMC_DIOCTLA);
 
+       ddrphy_init(phy1_0, freq, size_ch1);
+
+       ddrphy_prepare_training(phy1_0, 1);
+       ddrphy_training(phy1_0);
+
        umc_dramcont_init(dramcont0, ca_base0, size_ch0, freq);
        umc_dramcont_init(dramcont1, ca_base1, size_ch1, freq);
 
@@ -129,10 +142,6 @@ int umc_init(void)
                                        CONFIG_SDRAM1_SIZE / 0x08000000);
 }
 
-#if CONFIG_DDR_FREQ != 1333
-#error Unsupported DDR frequency.
-#endif
-
 #if (CONFIG_SDRAM0_SIZE == 0x08000000 || CONFIG_SDRAM0_SIZE == 0x10000000) && \
     (CONFIG_SDRAM1_SIZE == 0x08000000 || CONFIG_SDRAM1_SIZE == 0x10000000) && \
     CONFIG_DDR_NUM_CH0 == 1 && CONFIG_DDR_NUM_CH1 == 1
index b0dc9673b470a731e54ddfea4cfeae1a81b4bf8d..50d1fed64798ff8bcb58cc50315de47962d29927 100644 (file)
@@ -8,14 +8,11 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/sc-regs.h>
-#include <asm/arch/board.h>
 
 void reset_cpu(unsigned long ignored)
 {
        u32 tmp;
 
-       uniphier_board_reset();
-
        writel(5, SC_IRQTIMSET); /* default value */
 
        tmp  = readl(SC_SLFRSTSEL);
index 40d49409c27814d7831456dffe4f7c640b9010a9..443224c451b7a1b1603af43ed2cd8219e1bb7bf0 100644 (file)
@@ -83,6 +83,12 @@ static int support_card_show_revision(void)
 }
 #endif
 
+int check_support_card(void)
+{
+       printf("SC:    Micro Support Card ");
+       return support_card_show_revision();
+}
+
 void support_card_init(void)
 {
        /*
@@ -94,12 +100,6 @@ void support_card_init(void)
        support_card_reset_deassert();
 }
 
-int check_support_card(void)
-{
-       printf("SC:    Micro Support Card ");
-       return support_card_show_revision();
-}
-
 #if defined(CONFIG_SMC911X)
 #include <netdev.h>
 
@@ -112,18 +112,14 @@ int board_eth_init(bd_t *bis)
 #if !defined(CONFIG_SYS_NO_FLASH)
 
 #include <mtd/cfi_flash.h>
+#include <asm/arch/sbc-regs.h>
 
-#if CONFIG_SYS_MAX_FLASH_BANKS > 1
-static phys_addr_t flash_banks_list[CONFIG_SYS_MAX_FLASH_BANKS] =
-                                       CONFIG_SYS_FLASH_BANKS_LIST;
+struct memory_bank {
+       phys_addr_t base;
+       unsigned long size;
+};
 
-phys_addr_t cfi_flash_bank_addr(int i)
-{
-       return flash_banks_list[i];
-}
-#endif
-
-int mem_is_flash(phys_addr_t base)
+static int mem_is_flash(const struct memory_bank *mem)
 {
        const int loop = 128;
        u32 *scratch_addr;
@@ -131,8 +127,9 @@ int mem_is_flash(phys_addr_t base)
        int ret = 1;
        int i;
 
-       scratch_addr = map_physmem(base + 0x01e00000,
-                                       sizeof(u32) * loop, MAP_NOCACHE);
+       /* just in case, use the tail of the memory bank */
+       scratch_addr = map_physmem(mem->base + mem->size - sizeof(u32) * loop,
+                                  sizeof(u32) * loop, MAP_NOCACHE);
 
        for (i = 0; i < loop; i++, scratch_addr++) {
                saved_value = readl(scratch_addr);
@@ -150,31 +147,79 @@ int mem_is_flash(phys_addr_t base)
        return ret;
 }
 
-int board_flash_wp_on(void)
+#if defined(CONFIG_PFC_MICRO_SUPPORT_CARD)
+       /* {address, size} */
+static const struct memory_bank memory_banks_boot_swap_off[] = {
+       {0x02000000, 0x01f00000},
+};
+
+static const struct memory_bank memory_banks_boot_swap_on[] = {
+       {0x00000000, 0x01f00000},
+};
+#endif
+
+#if defined(CONFIG_DCC_MICRO_SUPPORT_CARD)
+static const struct memory_bank memory_banks_boot_swap_off[] = {
+       {0x04000000, 0x02000000},
+};
+
+static const struct memory_bank memory_banks_boot_swap_on[] = {
+       {0x00000000, 0x02000000},
+       {0x04000000, 0x02000000},
+};
+#endif
+
+static const struct memory_bank
+*flash_banks_list[CONFIG_SYS_MAX_FLASH_BANKS_DETECT];
+
+phys_addr_t cfi_flash_bank_addr(int i)
 {
-       int i;
-       int ret = 1;
+       return flash_banks_list[i]->base;
+}
 
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-               if (mem_is_flash(cfi_flash_bank_addr(i))) {
-                       /*
-                        * We found at least one flash.
-                        * We need to return 0 and call flash_init().
-                        */
-                       ret = 0;
-               }
-#if CONFIG_SYS_MAX_FLASH_BANKS > 1
-               else {
-                       /*
-                        * We might have a SRAM here.
-                        * To prevent SRAM data from being destroyed,
-                        * we set dummy address (SDRAM).
-                        */
-                       flash_banks_list[i] = 0x80000000 + 0x10000 * i;
+unsigned long cfi_flash_bank_size(int i)
+{
+       return flash_banks_list[i]->size;
+}
+
+static void detect_num_flash_banks(void)
+{
+       const struct memory_bank *memory_bank, *end;
+
+       cfi_flash_num_flash_banks = 0;
+
+       if (boot_is_swapped()) {
+               memory_bank = memory_banks_boot_swap_on;
+               end = memory_bank + ARRAY_SIZE(memory_banks_boot_swap_on);
+       } else {
+               memory_bank = memory_banks_boot_swap_off;
+               end = memory_bank + ARRAY_SIZE(memory_banks_boot_swap_off);
+       }
+
+       for (; memory_bank < end; memory_bank++) {
+               if (cfi_flash_num_flash_banks >=
+                   CONFIG_SYS_MAX_FLASH_BANKS_DETECT)
+                       break;
+
+               if (mem_is_flash(memory_bank)) {
+                       flash_banks_list[cfi_flash_num_flash_banks] =
+                                                               memory_bank;
+
+                       debug("flash bank found: base = 0x%lx, size = 0x%lx\n",
+                             memory_bank->base, memory_bank->size);
+                       cfi_flash_num_flash_banks++;
                }
-#endif
        }
 
-       return ret;
+       debug("number of flash banks: %d\n", cfi_flash_num_flash_banks);
+}
+#else /* ONFIG_SYS_NO_FLASH */
+void detect_num_flash_banks(void)
+{
+};
+#endif /* ONFIG_SYS_NO_FLASH */
+
+void support_card_late_init(void)
+{
+       detect_num_flash_banks();
 }
-#endif
index a26d63ebe0135fca6def324bac919d839fda0a2c..92aaad941548391fbf5ae76bbcab4fb581661d86 100644 (file)
@@ -265,20 +265,21 @@ static char *get_reset_cause(void)
 
        cause = readl(&src_regs->srsr);
        writel(cause, &src_regs->srsr);
-       cause &= 0xff;
 
-       switch (cause) {
-       case 0x08:
-               return "WDOG";
-       case 0x20:
+       if (cause & SRC_SRSR_POR_RST)
+               return "POWER ON RESET";
+       else if (cause & SRC_SRSR_WDOG_A5)
+               return "WDOG A5";
+       else if (cause & SRC_SRSR_WDOG_M4)
+               return "WDOG M4";
+       else if (cause & SRC_SRSR_JTAG_RST)
                return "JTAG HIGH-Z";
-       case 0x80:
+       else if (cause & SRC_SRSR_SW_RST)
+               return "SW RESET";
+       else if (cause & SRC_SRSR_RESETB)
                return "EXTERNAL RESET";
-       case 0xfd:
-               return "POR";
-       default:
+       else
                return "unknown reset";
-       }
 }
 
 int print_cpuinfo(void)
index 0b0d6a76fcc72bfcb2197369fdf985db6b390126..ad19e4c47c2e9947358c1cbcbcd24a5370e94436 100644 (file)
@@ -90,6 +90,8 @@ static int fdt_psci(void *fdt)
 
 int armv7_update_dt(void *fdt)
 {
+       if (!armv7_boot_nonsec())
+               return 0;
 #ifndef CONFIG_ARMV7_SECURE_BASE
        /* secure code lives in RAM, keep it alive */
        fdt_add_mem_rsv(fdt, (unsigned long)__secure_start,
index f418cd6d99e742f717d4d17d57ab14b70746c895..3a52535ce0010d3ef7855e56a1d302fa2d5880ca 100644 (file)
@@ -15,6 +15,9 @@ config TARGET_ZYNQ_ZC70X
 config TARGET_ZYNQ_ZC770
        bool "Zynq ZC770 Board"
 
+config TARGET_ZYNQ_ZYBO
+       bool "Zynq Zybo Board"
+
 endchoice
 
 config SYS_BOARD
@@ -31,5 +34,6 @@ config SYS_CONFIG_NAME
        default "zynq_microzed" if TARGET_ZYNQ_MICROZED
        default "zynq_zc70x" if TARGET_ZYNQ_ZC70X
        default "zynq_zc770" if TARGET_ZYNQ_ZC770
+       default "zynq_zybo" if TARGET_ZYNQ_ZYBO
 
 endif
index 1ea086d520795880cfbc6e63741831be232c9f9a..d74f8dbbc45dfb9f6440ea38fa44552404f436ef 100644 (file)
@@ -40,6 +40,7 @@ void zynq_ddrc_init(void)
                 * first stage bootloader. To get ECC to work all memory has
                 * been initialized by writing any value.
                 */
+               /* cppcheck-suppress nullPointer */
                memset((void *)0, 0, 1 * 1024 * 1024);
        } else {
                puts("ECC disabled ");
diff --git a/arch/arm/cpu/armv8/Kconfig b/arch/arm/cpu/armv8/Kconfig
deleted file mode 100644 (file)
index 3d1655b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-if ARM64
-
-config SYS_CPU
-       default "armv8"
-
-endif
index 7d93f59428ea79e7c7f7ee825376e62b2b598061..0c102230aef40785b12699fb1d4a2c4d5af630b7 100644 (file)
@@ -14,3 +14,5 @@ obj-y += exceptions.o
 obj-y  += cache.o
 obj-y  += tlb.o
 obj-y  += transition.o
+
+obj-$(CONFIG_FSL_LSCH3) += fsl-lsch3/
index 5b978384ebace2096c2e2c42a6398061a65eae42..89e15775fb8efe3addc8ae98edb5d5dd153352a6 100644 (file)
@@ -9,4 +9,9 @@
 #
 
 obj-$(CONFIG_AT91_WANTS_COMMON_PHY) += phy.o
-obj-$(CONFIG_SPL_BUILD) += mpddrc.o spl.o
+ifneq ($(CONFIG_SPL_BUILD),)
+obj-$(CONFIG_AT91SAM9G20) += sdram.o spl_at91.o
+obj-$(CONFIG_AT91SAM9M10G45) += mpddrc.o spl_at91.o
+obj-$(CONFIG_SAMA5D3) += mpddrc.o spl_atmel.o
+obj-y += spl.o
+endif
index 8136396403ca85672a20c3e808b48d7c865930c2..44798e612c3b2e04cb456aa1c85b09429baa8ec9 100644 (file)
@@ -17,6 +17,15 @@ static inline void atmel_mpddr_op(int mode, u32 ram_address)
        writel(0, ram_address);
 }
 
+static int ddr2_decodtype_is_seq(u32 cr)
+{
+#if defined(CONFIG_SAMA5D3)
+       if (cr & ATMEL_MPDDRC_CR_DECOD_INTERLEAVED)
+               return 0;
+#endif
+       return 1;
+}
+
 int ddr2_init(const unsigned int ram_address,
              const struct atmel_mpddr *mpddr_value)
 {
@@ -25,8 +34,8 @@ int ddr2_init(const unsigned int ram_address,
 
        /* Compute bank offset according to NC in configuration register */
        ba_off = (mpddr_value->cr & ATMEL_MPDDRC_CR_NC_MASK) + 9;
-       if (!(mpddr_value->cr & ATMEL_MPDDRC_CR_DECOD_INTERLEAVED))
-               ba_off += ((mpddr->cr & ATMEL_MPDDRC_CR_NR_MASK) >> 2) + 11;
+       if (ddr2_decodtype_is_seq(mpddr_value->cr))
+               ba_off += ((mpddr_value->cr & ATMEL_MPDDRC_CR_NR_MASK) >> 2) + 11;
 
        ba_off += (mpddr_value->md & ATMEL_MPDDRC_MD_DBW_MASK) ? 1 : 2;
 
diff --git a/arch/arm/cpu/at91-common/sdram.c b/arch/arm/cpu/at91-common/sdram.c
new file mode 100644 (file)
index 0000000..5758b06
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * (C) Copyright 2014
+ * Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * Based on:
+ * (C) Copyright 2007-2008
+ * Stelian Pop <stelian@popies.net>
+ * Lead Tech Design <www.leadtechdesign.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91sam9_sdramc.h>
+#include <asm/arch/gpio.h>
+
+int sdramc_initialize(unsigned int sdram_address, const struct sdramc_reg *p)
+{
+       struct sdramc_reg *reg = (struct sdramc_reg *)ATMEL_BASE_SDRAMC;
+       unsigned int i;
+
+       /* SDRAM feature must be in the configuration register */
+       writel(p->cr, &reg->cr);
+
+       /* The SDRAM memory type must be set in the Memory Device Register */
+       writel(p->mdr, &reg->mdr);
+
+       /*
+        * The minimum pause of 200 us is provided to precede any single
+        * toggle
+        */
+       for (i = 0; i < 1000; i++)
+               ;
+
+       /* A NOP command is issued to the SDRAM devices */
+       writel(AT91_SDRAMC_MODE_NOP, &reg->mr);
+       writel(0x00000000, sdram_address);
+
+       /* An All Banks Precharge command is issued to the SDRAM devices */
+       writel(AT91_SDRAMC_MODE_PRECHARGE, &reg->mr);
+       writel(0x00000000, sdram_address);
+
+       for (i = 0; i < 10000; i++)
+               ;
+
+       /* Eight auto-refresh cycles are provided */
+       for (i = 0; i < 8; i++) {
+               writel(AT91_SDRAMC_MODE_REFRESH, &reg->mr);
+               writel(0x00000001 + i, sdram_address + 4 + 4 * i);
+       }
+
+       /*
+        * A Mode Register set (MRS) cyscle is issued to program the
+        * SDRAM parameters(TCSR, PASR, DS)
+        */
+       writel(AT91_SDRAMC_MODE_LMR, &reg->mr);
+       writel(0xcafedede, sdram_address + 0x24);
+
+       /*
+        * The application must go into Normal Mode, setting Mode
+        * to 0 in the Mode Register and perform a write access at
+        * any location in the SDRAM.
+        */
+       writel(AT91_SDRAMC_MODE_NORMAL, &reg->mr);
+       writel(0x00000000, sdram_address);      /* Perform Normal mode */
+
+       /*
+        * Write the refresh rate into the count field in the SDRAMC
+        * Refresh Timer Rgister.
+        */
+       writel(p->tr, &reg->tr);
+
+       return 0;
+}
index 674a47061e73f235ff488eb3ef67f2624bc5df9b..6473320097060c57d08b467c7871fc5bbbbaf9a2 100644 (file)
@@ -8,83 +8,17 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
 #include <asm/arch/at91_wdt.h>
 #include <asm/arch/clk.h>
 #include <spl.h>
 
-static void at91_disable_wdt(void)
+void at91_disable_wdt(void)
 {
        struct at91_wdt *wdt = (struct at91_wdt *)ATMEL_BASE_WDT;
 
        writel(AT91_WDT_MR_WDDIS, &wdt->mr);
 }
 
-static void switch_to_main_crystal_osc(void)
-{
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-       u32 tmp;
-
-       tmp = readl(&pmc->mor);
-       tmp &= ~AT91_PMC_MOR_OSCOUNT(0xff);
-       tmp &= ~AT91_PMC_MOR_KEY(0xff);
-       tmp |= AT91_PMC_MOR_MOSCEN;
-       tmp |= AT91_PMC_MOR_OSCOUNT(8);
-       tmp |= AT91_PMC_MOR_KEY(0x37);
-       writel(tmp, &pmc->mor);
-       while (!(readl(&pmc->sr) & AT91_PMC_IXR_MOSCS))
-               ;
-
-       tmp = readl(&pmc->mor);
-       tmp &= ~AT91_PMC_MOR_OSCBYPASS;
-       tmp &= ~AT91_PMC_MOR_KEY(0xff);
-       tmp |= AT91_PMC_MOR_KEY(0x37);
-       writel(tmp, &pmc->mor);
-
-       tmp = readl(&pmc->mor);
-       tmp |= AT91_PMC_MOR_MOSCSEL;
-       tmp &= ~AT91_PMC_MOR_KEY(0xff);
-       tmp |= AT91_PMC_MOR_KEY(0x37);
-       writel(tmp, &pmc->mor);
-
-       while (!(readl(&pmc->sr) & AT91_PMC_IXR_MOSCSELS))
-               ;
-
-       tmp = readl(&pmc->mor);
-       tmp &= ~AT91_PMC_MOR_MOSCRCEN;
-       tmp &= ~AT91_PMC_MOR_KEY(0xff);
-       tmp |= AT91_PMC_MOR_KEY(0x37);
-       writel(tmp, &pmc->mor);
-}
-
-void at91_plla_init(u32 pllar)
-{
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
-       writel(pllar, &pmc->pllar);
-       while (!(readl(&pmc->sr) & (AT91_PMC_LOCKA | AT91_PMC_MCKRDY)))
-               ;
-}
-
-void at91_mck_init(u32 mckr)
-{
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-       u32 tmp;
-
-       tmp = readl(&pmc->mckr);
-       tmp &= ~(AT91_PMC_MCKR_PRES_MASK |
-                AT91_PMC_MCKR_MDIV_MASK |
-                AT91_PMC_MCKR_PLLADIV_2);
-       tmp |= mckr & (AT91_PMC_MCKR_PRES_MASK |
-                      AT91_PMC_MCKR_MDIV_MASK |
-                      AT91_PMC_MCKR_PLLADIV_2);
-       writel(tmp, &pmc->mckr);
-
-       while (!(readl(&pmc->sr) & AT91_PMC_MCKRDY))
-               ;
-}
-
-
 u32 spl_boot_device(void)
 {
 #ifdef CONFIG_SYS_USE_MMC
@@ -110,24 +44,3 @@ u32 spl_boot_mode(void)
                hang();
        }
 }
-
-void s_init(void)
-{
-       switch_to_main_crystal_osc();
-
-       /* disable watchdog */
-       at91_disable_wdt();
-
-       /* PMC configuration */
-       at91_pmc_init();
-
-       at91_clock_init(CONFIG_SYS_AT91_MAIN_CLOCK);
-
-       timer_init();
-
-       board_early_init_f();
-
-       preloader_console_init();
-
-       mem_init();
-}
diff --git a/arch/arm/cpu/at91-common/spl_at91.c b/arch/arm/cpu/at91-common/spl_at91.c
new file mode 100644 (file)
index 0000000..89f588b
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * (C) Copyright 2014 DENX Software Engineering
+ *     Heiko Schocher <hs@denx.de>
+ *
+ * Based on:
+ * Copyright (C) 2013 Atmel Corporation
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91sam9_matrix.h>
+#include <asm/arch/at91_pit.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_rstc.h>
+#include <asm/arch/at91_wdt.h>
+#include <asm/arch/clk.h>
+#include <spl.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static void enable_ext_reset(void)
+{
+       struct at91_rstc *rstc = (struct at91_rstc *)ATMEL_BASE_RSTC;
+
+       writel(AT91_RSTC_KEY | AT91_RSTC_MR_URSTEN, &rstc->mr);
+}
+
+void lowlevel_clock_init(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+       if (!(readl(&pmc->sr) & AT91_PMC_MOSCS)) {
+               /* Enable Main Oscillator */
+               writel(AT91_PMC_MOSCS | (0x40 << 8), &pmc->mor);
+
+               /* Wait until Main Oscillator is stable */
+               while (!(readl(&pmc->sr) & AT91_PMC_MOSCS))
+                       ;
+       }
+
+       /* After stabilization, switch to Main Oscillator */
+       if ((readl(&pmc->mckr) & AT91_PMC_CSS) == AT91_PMC_CSS_SLOW) {
+               unsigned long tmp;
+
+               tmp = readl(&pmc->mckr);
+               tmp &= ~AT91_PMC_CSS;
+               tmp |= AT91_PMC_CSS_MAIN;
+               writel(tmp, &pmc->mckr);
+               while (!(readl(&pmc->sr) & AT91_PMC_MCKRDY))
+                       ;
+
+               tmp &= ~AT91_PMC_PRES;
+               tmp |= AT91_PMC_PRES_1;
+               writel(tmp, &pmc->mckr);
+               while (!(readl(&pmc->sr) & AT91_PMC_MCKRDY))
+                       ;
+       }
+
+       return;
+}
+
+void __weak matrix_init(void)
+{
+}
+
+void __weak at91_spl_board_init(void)
+{
+}
+
+void spl_board_init(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+       lowlevel_clock_init();
+       at91_disable_wdt();
+
+       /*
+        * At this stage the main oscillator is supposed to be enabled
+        * PCK = MCK = MOSC
+        */
+       writel(0x00, &pmc->pllicpr);
+
+       /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */
+       at91_plla_init(CONFIG_SYS_AT91_PLLA);
+
+       /* PCK = PLLA = 2 * MCK */
+       at91_mck_init(CONFIG_SYS_MCKR);
+
+       /* Switch MCK on PLLA output */
+       at91_mck_init(CONFIG_SYS_MCKR_CSS);
+
+#if defined(CONFIG_SYS_AT91_PLLB)
+       /* Configure PLLB */
+       at91_pllb_init(CONFIG_SYS_AT91_PLLB);
+#endif
+
+       /* Enable External Reset */
+       enable_ext_reset();
+
+       /* Initialize matrix */
+       matrix_init();
+
+       gd->arch.mck_rate_hz = CONFIG_SYS_MASTER_CLOCK;
+       /*
+        * init timer long enough for using in spl.
+        */
+       timer_init();
+
+       /* enable clocks for all PIOs */
+       at91_periph_clk_enable(ATMEL_ID_PIOA);
+       at91_periph_clk_enable(ATMEL_ID_PIOB);
+       at91_periph_clk_enable(ATMEL_ID_PIOC);
+       /* init console */
+       at91_seriald_hw_init();
+       preloader_console_init();
+
+       mem_init();
+
+       at91_spl_board_init();
+}
diff --git a/arch/arm/cpu/at91-common/spl_atmel.c b/arch/arm/cpu/at91-common/spl_atmel.c
new file mode 100644 (file)
index 0000000..7297530
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2013 Atmel Corporation
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91_pit.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_rstc.h>
+#include <asm/arch/at91_wdt.h>
+#include <asm/arch/clk.h>
+#include <spl.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static void switch_to_main_crystal_osc(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       u32 tmp;
+
+       tmp = readl(&pmc->mor);
+       tmp &= ~AT91_PMC_MOR_OSCOUNT(0xff);
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_MOSCEN;
+       tmp |= AT91_PMC_MOR_OSCOUNT(8);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+       while (!(readl(&pmc->sr) & AT91_PMC_IXR_MOSCS))
+               ;
+
+       tmp = readl(&pmc->mor);
+       tmp &= ~AT91_PMC_MOR_OSCBYPASS;
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+
+       tmp = readl(&pmc->mor);
+       tmp |= AT91_PMC_MOR_MOSCSEL;
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+
+       while (!(readl(&pmc->sr) & AT91_PMC_IXR_MOSCSELS))
+               ;
+
+       /* Wait until MAINRDY field is set to make sure main clock is stable */
+       while (!(readl(&pmc->mcfr) & AT91_PMC_MAINRDY))
+               ;
+
+       tmp = readl(&pmc->mor);
+       tmp &= ~AT91_PMC_MOR_MOSCRCEN;
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+}
+
+void s_init(void)
+{
+       switch_to_main_crystal_osc();
+
+       /* disable watchdog */
+       at91_disable_wdt();
+
+       /* PMC configuration */
+       at91_pmc_init();
+
+       at91_clock_init(CONFIG_SYS_AT91_MAIN_CLOCK);
+
+       timer_init();
+
+       board_early_init_f();
+
+       preloader_console_init();
+
+       mem_init();
+}
index a18c318739fa2b6228b182fed24f507dfccfed10..a78869ee2329a6ca5019f91c9168cac83fba61cf 100644 (file)
@@ -13,5 +13,7 @@ obj-y += cache.o
 obj-y += clock.o
 obj-y += lowlevel_init.o
 obj-y += pinmux-common.o
+obj-y += powergate.o
+obj-y += xusb-padctl.o
 obj-$(CONFIG_DISPLAY_CPUINFO) += sys_info.o
 obj-$(CONFIG_TEGRA124) += vpr.o
diff --git a/arch/arm/cpu/tegra-common/powergate.c b/arch/arm/cpu/tegra-common/powergate.c
new file mode 100644 (file)
index 0000000..439cff3
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2014, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <errno.h>
+
+#include <asm/io.h>
+#include <asm/types.h>
+
+#include <asm/arch/powergate.h>
+#include <asm/arch/tegra.h>
+
+#define PWRGATE_TOGGLE 0x30
+#define  PWRGATE_TOGGLE_START (1 << 8)
+
+#define REMOVE_CLAMPING 0x34
+
+#define PWRGATE_STATUS 0x38
+
+static int tegra_powergate_set(enum tegra_powergate id, bool state)
+{
+       u32 value, mask = state ? (1 << id) : 0, old_mask;
+       unsigned long start, timeout = 25;
+
+       value = readl(NV_PA_PMC_BASE + PWRGATE_STATUS);
+       old_mask = value & (1 << id);
+
+       if (mask == old_mask)
+               return 0;
+
+       writel(PWRGATE_TOGGLE_START | id, NV_PA_PMC_BASE + PWRGATE_TOGGLE);
+
+       start = get_timer(0);
+
+       while (get_timer(start) < timeout) {
+               value = readl(NV_PA_PMC_BASE + PWRGATE_STATUS);
+               if ((value & (1 << id)) == mask)
+                       return 0;
+       }
+
+       return -ETIMEDOUT;
+}
+
+static int tegra_powergate_power_on(enum tegra_powergate id)
+{
+       return tegra_powergate_set(id, true);
+}
+
+int tegra_powergate_power_off(enum tegra_powergate id)
+{
+       return tegra_powergate_set(id, false);
+}
+
+static int tegra_powergate_remove_clamping(enum tegra_powergate id)
+{
+       unsigned long value;
+
+       /*
+        * The REMOVE_CLAMPING register has the bits for the PCIE and VDEC
+        * partitions reversed. This was originally introduced on Tegra20 but
+        * has since been carried forward for backwards-compatibility.
+        */
+       if (id == TEGRA_POWERGATE_VDEC)
+               value = 1 << TEGRA_POWERGATE_PCIE;
+       else if (id == TEGRA_POWERGATE_PCIE)
+               value = 1 << TEGRA_POWERGATE_VDEC;
+       else
+               value = 1 << id;
+
+       writel(value, NV_PA_PMC_BASE + REMOVE_CLAMPING);
+
+       return 0;
+}
+
+int tegra_powergate_sequence_power_up(enum tegra_powergate id,
+                                     enum periph_id periph)
+{
+       int err;
+
+       reset_set_enable(periph, 1);
+
+       err = tegra_powergate_power_on(id);
+       if (err < 0)
+               return err;
+
+       clock_enable(periph);
+
+       udelay(10);
+
+       err = tegra_powergate_remove_clamping(id);
+       if (err < 0)
+               return err;
+
+       udelay(10);
+
+       reset_set_enable(periph, 0);
+
+       return 0;
+}
diff --git a/arch/arm/cpu/tegra-common/xusb-padctl.c b/arch/arm/cpu/tegra-common/xusb-padctl.c
new file mode 100644 (file)
index 0000000..65f8d2e
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2014, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <errno.h>
+
+#include <asm/arch-tegra/xusb-padctl.h>
+
+struct tegra_xusb_phy * __weak tegra_xusb_phy_get(unsigned int type)
+{
+       return NULL;
+}
+
+int __weak tegra_xusb_phy_prepare(struct tegra_xusb_phy *phy)
+{
+       return -ENOSYS;
+}
+
+int __weak tegra_xusb_phy_enable(struct tegra_xusb_phy *phy)
+{
+       return -ENOSYS;
+}
+
+int __weak tegra_xusb_phy_disable(struct tegra_xusb_phy *phy)
+{
+       return -ENOSYS;
+}
+
+int __weak tegra_xusb_phy_unprepare(struct tegra_xusb_phy *phy)
+{
+       return -ENOSYS;
+}
+
+void __weak tegra_xusb_padctl_init(const void *fdt)
+{
+}
index ff77992b330cd7d7571be5eff21a89d8519bb67d..7b59fb121614002dd2a48345994a4f8d41754c4a 100644 (file)
@@ -8,3 +8,4 @@
 obj-y  += clock.o
 obj-y  += funcmux.o
 obj-y  += pinmux.o
+obj-y  += xusb-padctl.o
index 739436326ecaf78e1fc39a954ea06611d780ebad..fc8bd194ddc9d7bb29f8c1503939c58f4bf47066 100644 (file)
@@ -824,3 +824,112 @@ void arch_timer_init(void)
        writel(val, &sysctr->cntcr);
        debug("%s: TSC CNTCR = 0x%08X\n", __func__, val);
 }
+
+#define PLLE_SS_CNTL 0x68
+#define  PLLE_SS_CNTL_SSCINCINTR(x) (((x) & 0x3f) << 24)
+#define  PLLE_SS_CNTL_SSCINC(x) (((x) & 0xff) << 16)
+#define  PLLE_SS_CNTL_SSCINVERT (1 << 15)
+#define  PLLE_SS_CNTL_SSCCENTER (1 << 14)
+#define  PLLE_SS_CNTL_SSCBYP (1 << 12)
+#define  PLLE_SS_CNTL_INTERP_RESET (1 << 11)
+#define  PLLE_SS_CNTL_BYPASS_SS (1 << 10)
+#define  PLLE_SS_CNTL_SSCMAX(x) (((x) & 0x1ff) << 0)
+
+#define PLLE_BASE 0x0e8
+#define  PLLE_BASE_ENABLE (1 << 30)
+#define  PLLE_BASE_LOCK_OVERRIDE (1 << 29)
+#define  PLLE_BASE_PLDIV_CML(x) (((x) & 0xf) << 24)
+#define  PLLE_BASE_NDIV(x) (((x) & 0xff) << 8)
+#define  PLLE_BASE_MDIV(x) (((x) & 0xff) << 0)
+
+#define PLLE_MISC 0x0ec
+#define  PLLE_MISC_IDDQ_SWCTL (1 << 14)
+#define  PLLE_MISC_IDDQ_OVERRIDE (1 << 13)
+#define  PLLE_MISC_LOCK_ENABLE (1 << 9)
+#define  PLLE_MISC_PTS (1 << 8)
+#define  PLLE_MISC_VREG_BG_CTRL(x) (((x) & 0x3) << 4)
+#define  PLLE_MISC_VREG_CTRL(x) (((x) & 0x3) << 2)
+
+#define PLLE_AUX 0x48c
+#define  PLLE_AUX_SEQ_ENABLE (1 << 24)
+#define  PLLE_AUX_ENABLE_SWCTL (1 << 4)
+
+int tegra_plle_enable(void)
+{
+       unsigned int m = 1, n = 200, cpcon = 13;
+       u32 value;
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+       value &= ~PLLE_BASE_LOCK_OVERRIDE;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_AUX);
+       value |= PLLE_AUX_ENABLE_SWCTL;
+       value &= ~PLLE_AUX_SEQ_ENABLE;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_AUX);
+
+       udelay(1);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+       value |= PLLE_MISC_IDDQ_SWCTL;
+       value &= ~PLLE_MISC_IDDQ_OVERRIDE;
+       value |= PLLE_MISC_LOCK_ENABLE;
+       value |= PLLE_MISC_PTS;
+       value |= PLLE_MISC_VREG_BG_CTRL(3);
+       value |= PLLE_MISC_VREG_CTRL(2);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_MISC);
+
+       udelay(5);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value |= PLLE_SS_CNTL_SSCBYP | PLLE_SS_CNTL_INTERP_RESET |
+                PLLE_SS_CNTL_BYPASS_SS;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+       value &= ~PLLE_BASE_PLDIV_CML(0xf);
+       value &= ~PLLE_BASE_NDIV(0xff);
+       value &= ~PLLE_BASE_MDIV(0xff);
+       value |= PLLE_BASE_PLDIV_CML(cpcon);
+       value |= PLLE_BASE_NDIV(n);
+       value |= PLLE_BASE_MDIV(m);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       udelay(1);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+       value |= PLLE_BASE_ENABLE;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       /* wait for lock */
+       udelay(300);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value &= ~PLLE_SS_CNTL_SSCINVERT;
+       value &= ~PLLE_SS_CNTL_SSCCENTER;
+
+       value &= ~PLLE_SS_CNTL_SSCINCINTR(0x3f);
+       value &= ~PLLE_SS_CNTL_SSCINC(0xff);
+       value &= ~PLLE_SS_CNTL_SSCMAX(0x1ff);
+
+       value |= PLLE_SS_CNTL_SSCINCINTR(0x20);
+       value |= PLLE_SS_CNTL_SSCINC(0x01);
+       value |= PLLE_SS_CNTL_SSCMAX(0x25);
+
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value &= ~PLLE_SS_CNTL_SSCBYP;
+       value &= ~PLLE_SS_CNTL_BYPASS_SS;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       udelay(1);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value &= ~PLLE_SS_CNTL_INTERP_RESET;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       udelay(1);
+
+       return 0;
+}
diff --git a/arch/arm/cpu/tegra124-common/xusb-padctl.c b/arch/arm/cpu/tegra124-common/xusb-padctl.c
new file mode 100644 (file)
index 0000000..43af883
--- /dev/null
@@ -0,0 +1,716 @@
+/*
+ * Copyright (c) 2014, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#define pr_fmt(fmt) "tegra-xusb-padctl: " fmt
+
+#include <common.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <malloc.h>
+
+#include <asm/io.h>
+
+#include <asm/arch/clock.h>
+#include <asm/arch-tegra/xusb-padctl.h>
+
+#include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
+
+#define XUSB_PADCTL_ELPG_PROGRAM 0x01c
+#define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN (1 << 26)
+#define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY (1 << 25)
+#define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN (1 << 24)
+
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL1 0x040
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL0_LOCKDET (1 << 19)
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_REFCLK_SEL_MASK (0xf << 12)
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL_RST (1 << 1)
+
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL2 0x044
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_REFCLKBUF_EN (1 << 6)
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_EN (1 << 5)
+#define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_SEL (1 << 4)
+
+#define XUSB_PADCTL_IOPHY_PLL_S0_CTL1 0x138
+#define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL1_LOCKDET (1 << 27)
+#define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL1_MODE (1 << 24)
+#define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_PWR_OVRD (1 << 3)
+#define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_RST (1 << 1)
+#define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_IDDQ (1 << 0)
+
+#define XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1 0x148
+#define XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ_OVRD (1 << 1)
+#define XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ (1 << 0)
+
+enum tegra124_function {
+       TEGRA124_FUNC_SNPS,
+       TEGRA124_FUNC_XUSB,
+       TEGRA124_FUNC_UART,
+       TEGRA124_FUNC_PCIE,
+       TEGRA124_FUNC_USB3,
+       TEGRA124_FUNC_SATA,
+       TEGRA124_FUNC_RSVD,
+};
+
+static const char *const tegra124_functions[] = {
+       "snps",
+       "xusb",
+       "uart",
+       "pcie",
+       "usb3",
+       "sata",
+       "rsvd",
+};
+
+static const unsigned int tegra124_otg_functions[] = {
+       TEGRA124_FUNC_SNPS,
+       TEGRA124_FUNC_XUSB,
+       TEGRA124_FUNC_UART,
+       TEGRA124_FUNC_RSVD,
+};
+
+static const unsigned int tegra124_usb_functions[] = {
+       TEGRA124_FUNC_SNPS,
+       TEGRA124_FUNC_XUSB,
+};
+
+static const unsigned int tegra124_pci_functions[] = {
+       TEGRA124_FUNC_PCIE,
+       TEGRA124_FUNC_USB3,
+       TEGRA124_FUNC_SATA,
+       TEGRA124_FUNC_RSVD,
+};
+
+struct tegra_xusb_padctl_lane {
+       const char *name;
+
+       unsigned int offset;
+       unsigned int shift;
+       unsigned int mask;
+       unsigned int iddq;
+
+       const unsigned int *funcs;
+       unsigned int num_funcs;
+};
+
+#define TEGRA124_LANE(_name, _offset, _shift, _mask, _iddq, _funcs)    \
+       {                                                               \
+               .name = _name,                                          \
+               .offset = _offset,                                      \
+               .shift = _shift,                                        \
+               .mask = _mask,                                          \
+               .iddq = _iddq,                                          \
+               .num_funcs = ARRAY_SIZE(tegra124_##_funcs##_functions), \
+               .funcs = tegra124_##_funcs##_functions,                 \
+       }
+
+static const struct tegra_xusb_padctl_lane tegra124_lanes[] = {
+       TEGRA124_LANE("otg-0",  0x004,  0, 0x3, 0, otg),
+       TEGRA124_LANE("otg-1",  0x004,  2, 0x3, 0, otg),
+       TEGRA124_LANE("otg-2",  0x004,  4, 0x3, 0, otg),
+       TEGRA124_LANE("ulpi-0", 0x004, 12, 0x1, 0, usb),
+       TEGRA124_LANE("hsic-0", 0x004, 14, 0x1, 0, usb),
+       TEGRA124_LANE("hsic-1", 0x004, 15, 0x1, 0, usb),
+       TEGRA124_LANE("pcie-0", 0x134, 16, 0x3, 1, pci),
+       TEGRA124_LANE("pcie-1", 0x134, 18, 0x3, 2, pci),
+       TEGRA124_LANE("pcie-2", 0x134, 20, 0x3, 3, pci),
+       TEGRA124_LANE("pcie-3", 0x134, 22, 0x3, 4, pci),
+       TEGRA124_LANE("pcie-4", 0x134, 24, 0x3, 5, pci),
+       TEGRA124_LANE("sata-0", 0x134, 26, 0x3, 6, pci),
+};
+
+struct tegra_xusb_phy_ops {
+       int (*prepare)(struct tegra_xusb_phy *phy);
+       int (*enable)(struct tegra_xusb_phy *phy);
+       int (*disable)(struct tegra_xusb_phy *phy);
+       int (*unprepare)(struct tegra_xusb_phy *phy);
+};
+
+struct tegra_xusb_phy {
+       const struct tegra_xusb_phy_ops *ops;
+
+       struct tegra_xusb_padctl *padctl;
+};
+
+struct tegra_xusb_padctl_pin {
+       const struct tegra_xusb_padctl_lane *lane;
+
+       unsigned int func;
+       int iddq;
+};
+
+#define MAX_GROUPS 3
+#define MAX_PINS 6
+
+struct tegra_xusb_padctl_group {
+       const char *name;
+
+       const char *pins[MAX_PINS];
+       unsigned int num_pins;
+
+       const char *func;
+       int iddq;
+};
+
+struct tegra_xusb_padctl_config {
+       const char *name;
+
+       struct tegra_xusb_padctl_group groups[MAX_GROUPS];
+       unsigned int num_groups;
+};
+
+struct tegra_xusb_padctl {
+       struct fdt_resource regs;
+
+       unsigned int enable;
+
+       struct tegra_xusb_phy phys[2];
+
+       const struct tegra_xusb_padctl_lane *lanes;
+       unsigned int num_lanes;
+
+       const char *const *functions;
+       unsigned int num_functions;
+
+       struct tegra_xusb_padctl_config config;
+};
+
+static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl,
+                              unsigned long offset)
+{
+       return readl(padctl->regs.start + offset);
+}
+
+static inline void padctl_writel(struct tegra_xusb_padctl *padctl,
+                                u32 value, unsigned long offset)
+{
+       writel(value, padctl->regs.start + offset);
+}
+
+static int tegra_xusb_padctl_enable(struct tegra_xusb_padctl *padctl)
+{
+       u32 value;
+
+       if (padctl->enable++ > 0)
+               return 0;
+
+       value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
+       value &= ~XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN;
+       padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
+
+       udelay(100);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
+       value &= ~XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY;
+       padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
+
+       udelay(100);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
+       value &= ~XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN;
+       padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
+
+       return 0;
+}
+
+static int tegra_xusb_padctl_disable(struct tegra_xusb_padctl *padctl)
+{
+       u32 value;
+
+       if (padctl->enable == 0) {
+               error("tegra-xusb-padctl: unbalanced enable/disable");
+               return 0;
+       }
+
+       if (--padctl->enable > 0)
+               return 0;
+
+       value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
+       value |= XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN;
+       padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
+
+       udelay(100);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
+       value |= XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY;
+       padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
+
+       udelay(100);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
+       value |= XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN;
+       padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
+
+       return 0;
+}
+
+static int phy_prepare(struct tegra_xusb_phy *phy)
+{
+       return tegra_xusb_padctl_enable(phy->padctl);
+}
+
+static int phy_unprepare(struct tegra_xusb_phy *phy)
+{
+       return tegra_xusb_padctl_disable(phy->padctl);
+}
+
+static int pcie_phy_enable(struct tegra_xusb_phy *phy)
+{
+       struct tegra_xusb_padctl *padctl = phy->padctl;
+       int err = -ETIMEDOUT;
+       unsigned long start;
+       u32 value;
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1);
+       value &= ~XUSB_PADCTL_IOPHY_PLL_P0_CTL1_REFCLK_SEL_MASK;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL2);
+       value |= XUSB_PADCTL_IOPHY_PLL_P0_CTL2_REFCLKBUF_EN |
+                XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_EN |
+                XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_SEL;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL2);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1);
+       value |= XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL_RST;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1);
+
+       start = get_timer(0);
+
+       while (get_timer(start) < 50) {
+               value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1);
+               if (value & XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL0_LOCKDET) {
+                       err = 0;
+                       break;
+               }
+       }
+
+       return err;
+}
+
+static int pcie_phy_disable(struct tegra_xusb_phy *phy)
+{
+       struct tegra_xusb_padctl *padctl = phy->padctl;
+       u32 value;
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1);
+       value &= ~XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL_RST;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1);
+
+       return 0;
+}
+
+static int sata_phy_enable(struct tegra_xusb_phy *phy)
+{
+       struct tegra_xusb_padctl *padctl = phy->padctl;
+       int err = -ETIMEDOUT;
+       unsigned long start;
+       u32 value;
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1);
+       value &= ~XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ_OVRD;
+       value &= ~XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+       value &= ~XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_PWR_OVRD;
+       value &= ~XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_IDDQ;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+       value |= XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL1_MODE;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+       value |= XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_RST;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+
+       start = get_timer(0);
+
+       while (get_timer(start) < 50) {
+               value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+               if (value & XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL1_LOCKDET) {
+                       err = 0;
+                       break;
+               }
+       }
+
+       return err;
+}
+
+static int sata_phy_disable(struct tegra_xusb_phy *phy)
+{
+       struct tegra_xusb_padctl *padctl = phy->padctl;
+       u32 value;
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+       value &= ~XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_RST;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+       value &= ~XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL1_MODE;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+       value |= XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_PWR_OVRD;
+       value |= XUSB_PADCTL_IOPHY_PLL_S0_CTL1_PLL_IDDQ;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1);
+
+       value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1);
+       value |= ~XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ_OVRD;
+       value |= ~XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ;
+       padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1);
+
+       return 0;
+}
+
+static const struct tegra_xusb_phy_ops pcie_phy_ops = {
+       .prepare = phy_prepare,
+       .enable = pcie_phy_enable,
+       .disable = pcie_phy_disable,
+       .unprepare = phy_unprepare,
+};
+
+static const struct tegra_xusb_phy_ops sata_phy_ops = {
+       .prepare = phy_prepare,
+       .enable = sata_phy_enable,
+       .disable = sata_phy_disable,
+       .unprepare = phy_unprepare,
+};
+
+static struct tegra_xusb_padctl *padctl = &(struct tegra_xusb_padctl) {
+       .phys = {
+               [0] = {
+                       .ops = &pcie_phy_ops,
+               },
+               [1] = {
+                       .ops = &sata_phy_ops,
+               },
+       },
+};
+
+static const struct tegra_xusb_padctl_lane *
+tegra_xusb_padctl_find_lane(struct tegra_xusb_padctl *padctl, const char *name)
+{
+       unsigned int i;
+
+       for (i = 0; i < padctl->num_lanes; i++)
+               if (strcmp(name, padctl->lanes[i].name) == 0)
+                       return &padctl->lanes[i];
+
+       return NULL;
+}
+
+static int
+tegra_xusb_padctl_group_parse_dt(struct tegra_xusb_padctl *padctl,
+                                struct tegra_xusb_padctl_group *group,
+                                const void *fdt, int node)
+{
+       unsigned int i;
+       int len, err;
+
+       group->name = fdt_get_name(fdt, node, &len);
+
+       len = fdt_count_strings(fdt, node, "nvidia,lanes");
+       if (len < 0) {
+               error("tegra-xusb-padctl: failed to parse \"nvidia,lanes\" property");
+               return -EINVAL;
+       }
+
+       group->num_pins = len;
+
+       for (i = 0; i < group->num_pins; i++) {
+               err = fdt_get_string_index(fdt, node, "nvidia,lanes", i,
+                                          &group->pins[i]);
+               if (err < 0) {
+                       error("tegra-xusb-padctl: failed to read string from \"nvidia,lanes\" property");
+                       return -EINVAL;
+               }
+       }
+
+       group->num_pins = len;
+
+       err = fdt_get_string(fdt, node, "nvidia,function", &group->func);
+       if (err < 0) {
+               error("tegra-xusb-padctl: failed to parse \"nvidia,func\" property");
+               return -EINVAL;
+       }
+
+       group->iddq = fdtdec_get_int(fdt, node, "nvidia,iddq", -1);
+
+       return 0;
+}
+
+static int tegra_xusb_padctl_find_function(struct tegra_xusb_padctl *padctl,
+                                          const char *name)
+{
+       unsigned int i;
+
+       for (i = 0; i < padctl->num_functions; i++)
+               if (strcmp(name, padctl->functions[i]) == 0)
+                       return i;
+
+       return -ENOENT;
+}
+
+static int
+tegra_xusb_padctl_lane_find_function(struct tegra_xusb_padctl *padctl,
+                                    const struct tegra_xusb_padctl_lane *lane,
+                                    const char *name)
+{
+       unsigned int i;
+       int func;
+
+       func = tegra_xusb_padctl_find_function(padctl, name);
+       if (func < 0)
+               return func;
+
+       for (i = 0; i < lane->num_funcs; i++)
+               if (lane->funcs[i] == func)
+                       return i;
+
+       return -ENOENT;
+}
+
+static int
+tegra_xusb_padctl_group_apply(struct tegra_xusb_padctl *padctl,
+                             const struct tegra_xusb_padctl_group *group)
+{
+       unsigned int i;
+
+       for (i = 0; i < group->num_pins; i++) {
+               const struct tegra_xusb_padctl_lane *lane;
+               unsigned int func;
+               u32 value;
+
+               lane = tegra_xusb_padctl_find_lane(padctl, group->pins[i]);
+               if (!lane) {
+                       error("tegra-xusb-padctl: no lane for pin %s",
+                             group->pins[i]);
+                       continue;
+               }
+
+               func = tegra_xusb_padctl_lane_find_function(padctl, lane,
+                                                           group->func);
+               if (func < 0) {
+                       error("tegra-xusb-padctl: function %s invalid for lane %s: %d",
+                             group->func, lane->name, func);
+                       continue;
+               }
+
+               value = padctl_readl(padctl, lane->offset);
+
+               /* set pin function */
+               value &= ~(lane->mask << lane->shift);
+               value |= func << lane->shift;
+
+               /*
+                * Set IDDQ if supported on the lane and specified in the
+                * configuration.
+                */
+               if (lane->iddq > 0 && group->iddq >= 0) {
+                       if (group->iddq != 0)
+                               value &= ~(1 << lane->iddq);
+                       else
+                               value |= 1 << lane->iddq;
+               }
+
+               padctl_writel(padctl, value, lane->offset);
+       }
+
+       return 0;
+}
+
+static int
+tegra_xusb_padctl_config_apply(struct tegra_xusb_padctl *padctl,
+                              struct tegra_xusb_padctl_config *config)
+{
+       unsigned int i;
+
+       for (i = 0; i < config->num_groups; i++) {
+               const struct tegra_xusb_padctl_group *group;
+               int err;
+
+               group = &config->groups[i];
+
+               err = tegra_xusb_padctl_group_apply(padctl, group);
+               if (err < 0) {
+                       error("tegra-xusb-padctl: failed to apply group %s: %d",
+                             group->name, err);
+                       continue;
+               }
+       }
+
+       return 0;
+}
+
+static int
+tegra_xusb_padctl_config_parse_dt(struct tegra_xusb_padctl *padctl,
+                                 struct tegra_xusb_padctl_config *config,
+                                 const void *fdt, int node)
+{
+       int subnode;
+
+       config->name = fdt_get_name(fdt, node, NULL);
+
+       fdt_for_each_subnode(fdt, subnode, node) {
+               struct tegra_xusb_padctl_group *group;
+               int err;
+
+               group = &config->groups[config->num_groups];
+
+               err = tegra_xusb_padctl_group_parse_dt(padctl, group, fdt,
+                                                      subnode);
+               if (err < 0) {
+                       error("tegra-xusb-padctl: failed to parse group %s",
+                             group->name);
+                       return err;
+               }
+
+               config->num_groups++;
+       }
+
+       return 0;
+}
+
+static int tegra_xusb_padctl_parse_dt(struct tegra_xusb_padctl *padctl,
+                                     const void *fdt, int node)
+{
+       int subnode, err;
+
+       err = fdt_get_resource(fdt, node, "reg", 0, &padctl->regs);
+       if (err < 0) {
+               error("tegra-xusb-padctl: registers not found");
+               return err;
+       }
+
+       fdt_for_each_subnode(fdt, subnode, node) {
+               struct tegra_xusb_padctl_config *config = &padctl->config;
+
+               err = tegra_xusb_padctl_config_parse_dt(padctl, config, fdt,
+                                                       subnode);
+               if (err < 0) {
+                       error("tegra-xusb-padctl: failed to parse entry %s: %d",
+                             config->name, err);
+                       continue;
+               }
+       }
+
+       return 0;
+}
+
+static int process_nodes(const void *fdt, int nodes[], unsigned int count)
+{
+       unsigned int i;
+
+       for (i = 0; i < count; i++) {
+               enum fdt_compat_id id;
+               int err;
+
+               if (!fdtdec_get_is_enabled(fdt, nodes[i]))
+                       continue;
+
+               id = fdtdec_lookup(fdt, nodes[i]);
+               switch (id) {
+               case COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL:
+                       break;
+
+               default:
+                       error("tegra-xusb-padctl: unsupported compatible: %s",
+                             fdtdec_get_compatible(id));
+                       continue;
+               }
+
+               padctl->num_lanes = ARRAY_SIZE(tegra124_lanes);
+               padctl->lanes = tegra124_lanes;
+
+               padctl->num_functions = ARRAY_SIZE(tegra124_functions);
+               padctl->functions = tegra124_functions;
+
+               err = tegra_xusb_padctl_parse_dt(padctl, fdt, nodes[i]);
+               if (err < 0) {
+                       error("tegra-xusb-padctl: failed to parse DT: %d",
+                             err);
+                       continue;
+               }
+
+               /* deassert XUSB padctl reset */
+               reset_set_enable(PERIPH_ID_XUSB_PADCTL, 0);
+
+               err = tegra_xusb_padctl_config_apply(padctl, &padctl->config);
+               if (err < 0) {
+                       error("tegra-xusb-padctl: failed to apply pinmux: %d",
+                             err);
+                       continue;
+               }
+
+               /* only a single instance is supported */
+               break;
+       }
+
+       return 0;
+}
+
+struct tegra_xusb_phy *tegra_xusb_phy_get(unsigned int type)
+{
+       struct tegra_xusb_phy *phy = NULL;
+
+       switch (type) {
+       case TEGRA_XUSB_PADCTL_PCIE:
+               phy = &padctl->phys[0];
+               phy->padctl = padctl;
+               break;
+
+       case TEGRA_XUSB_PADCTL_SATA:
+               phy = &padctl->phys[1];
+               phy->padctl = padctl;
+               break;
+       }
+
+       return phy;
+}
+
+int tegra_xusb_phy_prepare(struct tegra_xusb_phy *phy)
+{
+       if (phy && phy->ops && phy->ops->prepare)
+               return phy->ops->prepare(phy);
+
+       return phy ? -ENOSYS : -EINVAL;
+}
+
+int tegra_xusb_phy_enable(struct tegra_xusb_phy *phy)
+{
+       if (phy && phy->ops && phy->ops->enable)
+               return phy->ops->enable(phy);
+
+       return phy ? -ENOSYS : -EINVAL;
+}
+
+int tegra_xusb_phy_disable(struct tegra_xusb_phy *phy)
+{
+       if (phy && phy->ops && phy->ops->disable)
+               return phy->ops->disable(phy);
+
+       return phy ? -ENOSYS : -EINVAL;
+}
+
+int tegra_xusb_phy_unprepare(struct tegra_xusb_phy *phy)
+{
+       if (phy && phy->ops && phy->ops->unprepare)
+               return phy->ops->unprepare(phy);
+
+       return phy ? -ENOSYS : -EINVAL;
+}
+
+void tegra_xusb_padctl_init(const void *fdt)
+{
+       int count, nodes[1];
+
+       count = fdtdec_find_aliases_for_id(fdt, "padctl",
+                                          COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL,
+                                          nodes, ARRAY_SIZE(nodes));
+       if (process_nodes(fdt, nodes, count))
+               return;
+}
index 0c4f5fb288a05d47d5ba97cfaae13d17b9f96668..7b9e10cd93ae37e7b42a4f3763a58029a1696767 100644 (file)
@@ -7,6 +7,7 @@
 /* Tegra20 Clock control functions */
 
 #include <common.h>
+#include <errno.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/tegra.h>
@@ -332,7 +333,7 @@ static s8 periph_id_to_internal_id[PERIPH_ID_COUNT] = {
        /* 0x48 */
        NONE(AFI),
        NONE(CORESIGHT),
-       NONE(RESERVED74),
+       NONE(PCIEXCLK),
        NONE(AVPUCQ),
        NONE(RESERVED76),
        NONE(RESERVED77),
@@ -494,7 +495,7 @@ enum periph_id clk_id_to_periph_id(int clk_id)
        case PERIPH_ID_RESERVED30:
        case PERIPH_ID_RESERVED35:
        case PERIPH_ID_RESERVED56:
-       case PERIPH_ID_RESERVED74:
+       case PERIPH_ID_PCIEXCLK:
        case PERIPH_ID_RESERVED76:
        case PERIPH_ID_RESERVED77:
        case PERIPH_ID_RESERVED78:
@@ -548,3 +549,139 @@ void clock_early_init(void)
 void arch_timer_init(void)
 {
 }
+
+#define PMC_SATA_PWRGT 0x1ac
+#define  PMC_SATA_PWRGT_PLLE_IDDQ_OVERRIDE (1 << 5)
+#define  PMC_SATA_PWRGT_PLLE_IDDQ_SWCTL (1 << 4)
+
+#define PLLE_SS_CNTL 0x68
+#define  PLLE_SS_CNTL_SSCINCINTRV(x) (((x) & 0x3f) << 24)
+#define  PLLE_SS_CNTL_SSCINC(x) (((x) & 0xff) << 16)
+#define  PLLE_SS_CNTL_SSCBYP (1 << 12)
+#define  PLLE_SS_CNTL_INTERP_RESET (1 << 11)
+#define  PLLE_SS_CNTL_BYPASS_SS (1 << 10)
+#define  PLLE_SS_CNTL_SSCMAX(x) (((x) & 0x1ff) << 0)
+
+#define PLLE_BASE 0x0e8
+#define  PLLE_BASE_ENABLE_CML (1 << 31)
+#define  PLLE_BASE_ENABLE (1 << 30)
+#define  PLLE_BASE_PLDIV_CML(x) (((x) & 0xf) << 24)
+#define  PLLE_BASE_PLDIV(x) (((x) & 0x3f) << 16)
+#define  PLLE_BASE_NDIV(x) (((x) & 0xff) << 8)
+#define  PLLE_BASE_MDIV(x) (((x) & 0xff) << 0)
+
+#define PLLE_MISC 0x0ec
+#define  PLLE_MISC_SETUP_BASE(x) (((x) & 0xffff) << 16)
+#define  PLLE_MISC_PLL_READY (1 << 15)
+#define  PLLE_MISC_LOCK (1 << 11)
+#define  PLLE_MISC_LOCK_ENABLE (1 << 9)
+#define  PLLE_MISC_SETUP_EXT(x) (((x) & 0x3) << 2)
+
+static int tegra_plle_train(void)
+{
+       unsigned int timeout = 2000;
+       unsigned long value;
+
+       value = readl(NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+       value |= PMC_SATA_PWRGT_PLLE_IDDQ_OVERRIDE;
+       writel(value, NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+
+       value = readl(NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+       value |= PMC_SATA_PWRGT_PLLE_IDDQ_SWCTL;
+       writel(value, NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+
+       value = readl(NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+       value &= ~PMC_SATA_PWRGT_PLLE_IDDQ_OVERRIDE;
+       writel(value, NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+
+       do {
+               value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+               if (value & PLLE_MISC_PLL_READY)
+                       break;
+
+               udelay(100);
+       } while (--timeout);
+
+       if (timeout == 0) {
+               error("timeout waiting for PLLE to become ready");
+               return -ETIMEDOUT;
+       }
+
+       return 0;
+}
+
+int tegra_plle_enable(void)
+{
+       unsigned int timeout = 1000;
+       u32 value;
+       int err;
+
+       /* disable PLLE clock */
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+       value &= ~PLLE_BASE_ENABLE_CML;
+       value &= ~PLLE_BASE_ENABLE;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       /* clear lock enable and setup field */
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+       value &= ~PLLE_MISC_LOCK_ENABLE;
+       value &= ~PLLE_MISC_SETUP_BASE(0xffff);
+       value &= ~PLLE_MISC_SETUP_EXT(0x3);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_MISC);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+       if ((value & PLLE_MISC_PLL_READY) == 0) {
+               err = tegra_plle_train();
+               if (err < 0) {
+                       error("failed to train PLLE: %d", err);
+                       return err;
+               }
+       }
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+       value |= PLLE_MISC_SETUP_BASE(0x7);
+       value |= PLLE_MISC_LOCK_ENABLE;
+       value |= PLLE_MISC_SETUP_EXT(0);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_MISC);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value |= PLLE_SS_CNTL_SSCBYP | PLLE_SS_CNTL_INTERP_RESET |
+                PLLE_SS_CNTL_BYPASS_SS;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+       value |= PLLE_BASE_ENABLE_CML | PLLE_BASE_ENABLE;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       do {
+               value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+               if (value & PLLE_MISC_LOCK)
+                       break;
+
+               udelay(2);
+       } while (--timeout);
+
+       if (timeout == 0) {
+               error("timeout waiting for PLLE to lock");
+               return -ETIMEDOUT;
+       }
+
+       udelay(50);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value &= ~PLLE_SS_CNTL_SSCINCINTRV(0x3f);
+       value |= PLLE_SS_CNTL_SSCINCINTRV(0x18);
+
+       value &= ~PLLE_SS_CNTL_SSCINC(0xff);
+       value |= PLLE_SS_CNTL_SSCINC(0x01);
+
+       value &= ~PLLE_SS_CNTL_SSCBYP;
+       value &= ~PLLE_SS_CNTL_INTERP_RESET;
+       value &= ~PLLE_SS_CNTL_BYPASS_SS;
+
+       value &= ~PLLE_SS_CNTL_SSCMAX(0x1ff);
+       value |= PLLE_SS_CNTL_SSCMAX(0x24);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       return 0;
+}
index c595f70e939931359f08d7b8f0184c054baeab8d..36a76a24d971e7d012570cc7ad7e3c16a2a1a4f5 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <i2c.h>
 #include <tps6586x.h>
 #include <asm/io.h>
 #include <asm/arch/tegra.h>
 #define VDD_TRANSITION_STEP    0x06    /* 150mv */
 #define VDD_TRANSITION_RATE    0x06    /* 3.52mv/us */
 
+#define PMI_I2C_ADDRESS        0x34    /* chip requires this address */
+
 int pmu_set_nominal(void)
 {
-       int core, cpu, bus;
+       struct udevice *bus, *dev;
+       int core, cpu;
+       int ret;
 
        /* by default, the table has been filled with T25 settings */
        switch (tegra_get_chip_sku()) {
@@ -42,12 +47,18 @@ int pmu_set_nominal(void)
                return -1;
        }
 
-       bus = tegra_i2c_get_dvc_bus_num();
-       if (bus == -1) {
+       ret = tegra_i2c_get_dvc_bus(&bus);
+       if (ret) {
                debug("%s: Cannot find DVC I2C bus\n", __func__);
-               return -1;
+               return ret;
        }
-       tps6586x_init(bus);
+       ret = i2c_get_chip(bus, PMI_I2C_ADDRESS, &dev);
+       if (ret) {
+               debug("%s: Cannot find DVC I2C chip\n", __func__);
+               return ret;
+       }
+
+       tps6586x_init(dev);
        tps6586x_set_pwm_mode(TPS6586X_PWM_SM1);
        return tps6586x_adjust_sm0_sm1(core, cpu, VDD_TRANSITION_STEP,
                                VDD_TRANSITION_RATE, VDD_RELATION);
index 80ba2d8c1ca5fa5f315acb3ed593a7aa73b808bd..0eb0f0ade37c518ae27707ba0c433fc4db12da01 100644 (file)
@@ -17,6 +17,7 @@
 /* Tegra30 Clock control functions */
 
 #include <common.h>
+#include <errno.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/tegra.h>
@@ -563,6 +564,7 @@ enum periph_id clk_id_to_periph_id(int clk_id)
        case PERIPH_ID_RESERVED43:
        case PERIPH_ID_RESERVED45:
        case PERIPH_ID_RESERVED56:
+       case PERIPH_ID_PCIEXCLK:
        case PERIPH_ID_RESERVED76:
        case PERIPH_ID_RESERVED77:
        case PERIPH_ID_RESERVED78:
@@ -587,3 +589,156 @@ void clock_early_init(void)
 void arch_timer_init(void)
 {
 }
+
+#define PMC_SATA_PWRGT 0x1ac
+#define  PMC_SATA_PWRGT_PLLE_IDDQ_OVERRIDE (1 << 5)
+#define  PMC_SATA_PWRGT_PLLE_IDDQ_SWCTL (1 << 4)
+
+#define PLLE_SS_CNTL 0x68
+#define  PLLE_SS_CNTL_SSCINCINTRV(x) (((x) & 0x3f) << 24)
+#define  PLLE_SS_CNTL_SSCINC(x) (((x) & 0xff) << 16)
+#define  PLLE_SS_CNTL_SSCBYP (1 << 12)
+#define  PLLE_SS_CNTL_INTERP_RESET (1 << 11)
+#define  PLLE_SS_CNTL_BYPASS_SS (1 << 10)
+#define  PLLE_SS_CNTL_SSCMAX(x) (((x) & 0x1ff) << 0)
+
+#define PLLE_BASE 0x0e8
+#define  PLLE_BASE_ENABLE_CML (1 << 31)
+#define  PLLE_BASE_ENABLE (1 << 30)
+#define  PLLE_BASE_PLDIV_CML(x) (((x) & 0xf) << 24)
+#define  PLLE_BASE_PLDIV(x) (((x) & 0x3f) << 16)
+#define  PLLE_BASE_NDIV(x) (((x) & 0xff) << 8)
+#define  PLLE_BASE_MDIV(x) (((x) & 0xff) << 0)
+
+#define PLLE_MISC 0x0ec
+#define  PLLE_MISC_SETUP_BASE(x) (((x) & 0xffff) << 16)
+#define  PLLE_MISC_PLL_READY (1 << 15)
+#define  PLLE_MISC_LOCK (1 << 11)
+#define  PLLE_MISC_LOCK_ENABLE (1 << 9)
+#define  PLLE_MISC_SETUP_EXT(x) (((x) & 0x3) << 2)
+
+static int tegra_plle_train(void)
+{
+       unsigned int timeout = 2000;
+       unsigned long value;
+
+       value = readl(NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+       value |= PMC_SATA_PWRGT_PLLE_IDDQ_OVERRIDE;
+       writel(value, NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+
+       value = readl(NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+       value |= PMC_SATA_PWRGT_PLLE_IDDQ_SWCTL;
+       writel(value, NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+
+       value = readl(NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+       value &= ~PMC_SATA_PWRGT_PLLE_IDDQ_OVERRIDE;
+       writel(value, NV_PA_PMC_BASE + PMC_SATA_PWRGT);
+
+       do {
+               value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+               if (value & PLLE_MISC_PLL_READY)
+                       break;
+
+               udelay(100);
+       } while (--timeout);
+
+       if (timeout == 0) {
+               error("timeout waiting for PLLE to become ready");
+               return -ETIMEDOUT;
+       }
+
+       return 0;
+}
+
+int tegra_plle_enable(void)
+{
+       unsigned int cpcon = 11, p = 18, n = 150, m = 1, timeout = 1000;
+       u32 value;
+       int err;
+
+       /* disable PLLE clock */
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+       value &= ~PLLE_BASE_ENABLE_CML;
+       value &= ~PLLE_BASE_ENABLE;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       /* clear lock enable and setup field */
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+       value &= ~PLLE_MISC_LOCK_ENABLE;
+       value &= ~PLLE_MISC_SETUP_BASE(0xffff);
+       value &= ~PLLE_MISC_SETUP_EXT(0x3);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_MISC);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+       if ((value & PLLE_MISC_PLL_READY) == 0) {
+               err = tegra_plle_train();
+               if (err < 0) {
+                       error("failed to train PLLE: %d", err);
+                       return err;
+               }
+       }
+
+       /* configure PLLE */
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       value &= ~PLLE_BASE_PLDIV_CML(0x0f);
+       value |= PLLE_BASE_PLDIV_CML(cpcon);
+
+       value &= ~PLLE_BASE_PLDIV(0x3f);
+       value |= PLLE_BASE_PLDIV(p);
+
+       value &= ~PLLE_BASE_NDIV(0xff);
+       value |= PLLE_BASE_NDIV(n);
+
+       value &= ~PLLE_BASE_MDIV(0xff);
+       value |= PLLE_BASE_MDIV(m);
+
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+       value |= PLLE_MISC_SETUP_BASE(0x7);
+       value |= PLLE_MISC_LOCK_ENABLE;
+       value |= PLLE_MISC_SETUP_EXT(0);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_MISC);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value |= PLLE_SS_CNTL_SSCBYP | PLLE_SS_CNTL_INTERP_RESET |
+                PLLE_SS_CNTL_BYPASS_SS;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_BASE);
+       value |= PLLE_BASE_ENABLE_CML | PLLE_BASE_ENABLE;
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_BASE);
+
+       do {
+               value = readl(NV_PA_CLK_RST_BASE + PLLE_MISC);
+               if (value & PLLE_MISC_LOCK)
+                       break;
+
+               udelay(2);
+       } while (--timeout);
+
+       if (timeout == 0) {
+               error("timeout waiting for PLLE to lock");
+               return -ETIMEDOUT;
+       }
+
+       udelay(50);
+
+       value = readl(NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+       value &= ~PLLE_SS_CNTL_SSCINCINTRV(0x3f);
+       value |= PLLE_SS_CNTL_SSCINCINTRV(0x18);
+
+       value &= ~PLLE_SS_CNTL_SSCINC(0xff);
+       value |= PLLE_SS_CNTL_SSCINC(0x01);
+
+       value &= ~PLLE_SS_CNTL_SSCBYP;
+       value &= ~PLLE_SS_CNTL_INTERP_RESET;
+       value &= ~PLLE_SS_CNTL_BYPASS_SS;
+
+       value &= ~PLLE_SS_CNTL_SSCMAX(0x1ff);
+       value |= PLLE_SS_CNTL_SSCMAX(0x24);
+       writel(value, NV_PA_CLK_RST_BASE + PLLE_SS_CNTL);
+
+       return 0;
+}
index 4beddf08e76722251b9d77182c7fc9bef508c314..a8be204038f94a937289f1e433aff5a02d21f293 100644 (file)
@@ -32,8 +32,18 @@ SECTIONS
        }
 
        . = ALIGN(4);
+       .u_boot_list : {
+               KEEP(*(SORT(.u_boot_list*_i2c_*)));
+       }
 
        . = .;
+#ifdef CONFIG_SPL_DM
+       .u_boot_list : {
+               KEEP(*(SORT(.u_boot_list_*_driver_*)));
+               KEEP(*(SORT(.u_boot_list_*_uclass_*)));
+       }
+#endif
+       . = ALIGN(4);
 
        __image_copy_end = .;
 
index c34606334dbea34363aba579097eed3bc8a20200..fac16cc384d37d578ee58085121d619c431a85a1 100644 (file)
@@ -1,3 +1,4 @@
+dtb-$(CONFIG_MACH_SUN7I) +=  sun7i-a20-pcduino3.dtb
 dtb-$(CONFIG_S5PC100) += s5pc1xx-smdkc100.dtb
 dtb-$(CONFIG_S5PC110) += s5pc1xx-goni.dtb
 dtb-$(CONFIG_EXYNOS4) += exynos4210-origen.dtb \
@@ -11,7 +12,9 @@ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
        exynos5250-snow.dtb \
        exynos5250-smdk5250.dtb \
        exynos5420-smdk5420.dtb \
-       exynos5420-peach-pit.dtb
+       exynos5420-peach-pit.dtb \
+       exynos5800-peach-pi.dtb \
+       exynos5422-odroidxu3.dtb
 dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
        tegra20-medcom-wide.dtb \
        tegra20-paz00.dtb \
@@ -29,16 +32,25 @@ dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
        tegra30-tec-ng.dtb \
        tegra114-dalmore.dtb \
        tegra124-jetson-tk1.dtb \
+       tegra124-nyan-big.dtb \
        tegra124-venice2.dtb
+dtb-$(CONFIG_ARCH_UNIPHIER) += \
+       uniphier-ph1-sld3-ref.dtb \
+       uniphier-ph1-pro4-ref.dtb \
+       uniphier-ph1-ld4-ref.dtb \
+       uniphier-ph1-sld8-ref.dtb
 dtb-$(CONFIG_ZYNQ) += zynq-zc702.dtb \
        zynq-zc706.dtb \
        zynq-zed.dtb \
+       zynq-zybo.dtb \
        zynq-microzed.dtb \
        zynq-zc770-xm010.dtb \
        zynq-zc770-xm012.dtb \
        zynq-zc770-xm013.dtb
 dtb-$(CONFIG_AM33XX) += am335x-boneblack.dtb
 
+dtb-$(CONFIG_SOCFPGA) += socfpga_cyclone5_socrates.dtb
+
 targets += $(dtb-y)
 
 DTC_FLAGS += -R 4 -p 0x1000
diff --git a/arch/arm/dts/cros-ec-keyboard.dtsi b/arch/arm/dts/cros-ec-keyboard.dtsi
new file mode 100644 (file)
index 0000000..9c7fb0a
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Keyboard dts fragment for devices that use cros-ec-keyboard
+ *
+ * Copyright (c) 2014 Google, Inc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+#include <dt-bindings/input/input.h>
+
+&cros_ec {
+       keyboard-controller {
+               compatible = "google,cros-ec-keyb";
+               keypad,num-rows = <8>;
+               keypad,num-columns = <13>;
+               google,needs-ghost-filter;
+
+               linux,keymap = <
+                       MATRIX_KEY(0x00, 0x01, KEY_LEFTMETA)
+                       MATRIX_KEY(0x00, 0x02, KEY_F1)
+                       MATRIX_KEY(0x00, 0x03, KEY_B)
+                       MATRIX_KEY(0x00, 0x04, KEY_F10)
+                       MATRIX_KEY(0x00, 0x06, KEY_N)
+                       MATRIX_KEY(0x00, 0x08, KEY_EQUAL)
+                       MATRIX_KEY(0x00, 0x0a, KEY_RIGHTALT)
+
+                       MATRIX_KEY(0x01, 0x01, KEY_ESC)
+                       MATRIX_KEY(0x01, 0x02, KEY_F4)
+                       MATRIX_KEY(0x01, 0x03, KEY_G)
+                       MATRIX_KEY(0x01, 0x04, KEY_F7)
+                       MATRIX_KEY(0x01, 0x06, KEY_H)
+                       MATRIX_KEY(0x01, 0x08, KEY_APOSTROPHE)
+                       MATRIX_KEY(0x01, 0x09, KEY_F9)
+                       MATRIX_KEY(0x01, 0x0b, KEY_BACKSPACE)
+
+                       MATRIX_KEY(0x02, 0x00, KEY_LEFTCTRL)
+                       MATRIX_KEY(0x02, 0x01, KEY_TAB)
+                       MATRIX_KEY(0x02, 0x02, KEY_F3)
+                       MATRIX_KEY(0x02, 0x03, KEY_T)
+                       MATRIX_KEY(0x02, 0x04, KEY_F6)
+                       MATRIX_KEY(0x02, 0x05, KEY_RIGHTBRACE)
+                       MATRIX_KEY(0x02, 0x06, KEY_Y)
+                       MATRIX_KEY(0x02, 0x07, KEY_102ND)
+                       MATRIX_KEY(0x02, 0x08, KEY_LEFTBRACE)
+                       MATRIX_KEY(0x02, 0x09, KEY_F8)
+
+                       MATRIX_KEY(0x03, 0x01, KEY_GRAVE)
+                       MATRIX_KEY(0x03, 0x02, KEY_F2)
+                       MATRIX_KEY(0x03, 0x03, KEY_5)
+                       MATRIX_KEY(0x03, 0x04, KEY_F5)
+                       MATRIX_KEY(0x03, 0x06, KEY_6)
+                       MATRIX_KEY(0x03, 0x08, KEY_MINUS)
+                       MATRIX_KEY(0x03, 0x0b, KEY_BACKSLASH)
+
+                       MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
+                       MATRIX_KEY(0x04, 0x01, KEY_A)
+                       MATRIX_KEY(0x04, 0x02, KEY_D)
+                       MATRIX_KEY(0x04, 0x03, KEY_F)
+                       MATRIX_KEY(0x04, 0x04, KEY_S)
+                       MATRIX_KEY(0x04, 0x05, KEY_K)
+                       MATRIX_KEY(0x04, 0x06, KEY_J)
+                       MATRIX_KEY(0x04, 0x08, KEY_SEMICOLON)
+                       MATRIX_KEY(0x04, 0x09, KEY_L)
+                       MATRIX_KEY(0x04, 0x0a, KEY_BACKSLASH)
+                       MATRIX_KEY(0x04, 0x0b, KEY_ENTER)
+
+                       MATRIX_KEY(0x05, 0x01, KEY_Z)
+                       MATRIX_KEY(0x05, 0x02, KEY_C)
+                       MATRIX_KEY(0x05, 0x03, KEY_V)
+                       MATRIX_KEY(0x05, 0x04, KEY_X)
+                       MATRIX_KEY(0x05, 0x05, KEY_COMMA)
+                       MATRIX_KEY(0x05, 0x06, KEY_M)
+                       MATRIX_KEY(0x05, 0x07, KEY_LEFTSHIFT)
+                       MATRIX_KEY(0x05, 0x08, KEY_SLASH)
+                       MATRIX_KEY(0x05, 0x09, KEY_DOT)
+                       MATRIX_KEY(0x05, 0x0b, KEY_SPACE)
+
+                       MATRIX_KEY(0x06, 0x01, KEY_1)
+                       MATRIX_KEY(0x06, 0x02, KEY_3)
+                       MATRIX_KEY(0x06, 0x03, KEY_4)
+                       MATRIX_KEY(0x06, 0x04, KEY_2)
+                       MATRIX_KEY(0x06, 0x05, KEY_8)
+                       MATRIX_KEY(0x06, 0x06, KEY_7)
+                       MATRIX_KEY(0x06, 0x08, KEY_0)
+                       MATRIX_KEY(0x06, 0x09, KEY_9)
+                       MATRIX_KEY(0x06, 0x0a, KEY_LEFTALT)
+                       MATRIX_KEY(0x06, 0x0b, KEY_DOWN)
+                       MATRIX_KEY(0x06, 0x0c, KEY_RIGHT)
+
+                       MATRIX_KEY(0x07, 0x01, KEY_Q)
+                       MATRIX_KEY(0x07, 0x02, KEY_E)
+                       MATRIX_KEY(0x07, 0x03, KEY_R)
+                       MATRIX_KEY(0x07, 0x04, KEY_W)
+                       MATRIX_KEY(0x07, 0x05, KEY_I)
+                       MATRIX_KEY(0x07, 0x06, KEY_U)
+                       MATRIX_KEY(0x07, 0x07, KEY_RIGHTSHIFT)
+                       MATRIX_KEY(0x07, 0x08, KEY_P)
+                       MATRIX_KEY(0x07, 0x09, KEY_O)
+                       MATRIX_KEY(0x07, 0x0b, KEY_UP)
+                       MATRIX_KEY(0x07, 0x0c, KEY_LEFT)
+               >;
+       };
+};
index 2a1f1dda4e23079a0e8108c9e29418b9eab7272b..c78efec64957ea53e801df849da005f06e56d36c 100644 (file)
                div = <0x3>;
                index = <4>;
        };
+
+       ehci@12580000 {
+               compatible = "samsung,exynos-ehci";
+               reg = <0x12580000 0x100>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               phy {
+                       compatible = "samsung,exynos-usb-phy";
+                       reg = <0x125B0000 0x100>;
+               };
+       };
 };
index 6fd9275c4ef789134344bd4a774de154e18c4c5a..bac501516fd257861f69c2b645553d0f2f920a33 100644 (file)
@@ -64,7 +64,7 @@
        spi@131b0000 {
                spi-max-frequency = <1000000>;
                spi-deactivate-delay = <100>;
-               cros-ec@0 {
+               cros_ec: cros-ec@0 {
                        reg = <0>;
                        compatible = "google,cros-ec";
                        spi-max-frequency = <5000000>;
        };
 
        ehci@12110000 {
-               samsung,vbus-gpio = <&gpio 0x309 0>; /* X11 */
+               samsung,vbus-gpio = <&gpio 0xb1 0>; /* X11 */
        };
 
        xhci@12000000 {
-               samsung,vbus-gpio = <&gpio 0x317 0>; /* X27 */
+               samsung,vbus-gpio = <&gpio 0xbf 0>; /* X27 */
        };
 
        tmu@10060000 {
                samsung,dc-value        = <25>;
        };
 
-       cros-ec-keyb {
-               compatible = "google,cros-ec-keyb";
-               google,key-rows = <8>;
-               google,key-columns = <13>;
-               google,repeat-delay-ms = <240>;
-               google,repeat-rate-ms = <30>;
-               google,ghost-filter;
-               /*
-                * Keymap entries take the form of 0xRRCCKKKK where
-                * RR=Row CC=Column KKKK=Key Code
-                * The values below are for a US keyboard layout and
-                * are taken from the Linux driver. Note that the
-                * 102ND key is not used for US keyboards.
-                */
-               linux,keymap = <
-                       /* CAPSLCK F1         B          F10     */
-                       0x0001003a 0x0002003b 0x00030030 0x00040044
-                       /* N       =          R_ALT      ESC     */
-                       0x00060031 0x0008000d 0x000a0064 0x01010001
-                       /* F4      G          F7         H       */
-                       0x0102003e 0x01030022 0x01040041 0x01060023
-                       /* '       F9         BKSPACE    L_CTRL  */
-                       0x01080028 0x01090043 0x010b000e 0x0200001d
-                       /* TAB     F3         T          F6      */
-                       0x0201000f 0x0202003d 0x02030014 0x02040040
-                       /* ]       Y          102ND      [       */
-                       0x0205001b 0x02060015 0x02070056 0x0208001a
-                       /* F8      GRAVE      F2         5       */
-                       0x02090042 0x03010029 0x0302003c 0x03030006
-                       /* F5      6          -          \       */
-                       0x0304003f 0x03060007 0x0308000c 0x030b002b
-                       /* R_CTRL  A          D          F       */
-                       0x04000061 0x0401001e 0x04020020 0x04030021
-                       /* S       K          J          ;       */
-                       0x0404001f 0x04050025 0x04060024 0x04080027
-                       /* L       ENTER      Z          C       */
-                       0x04090026 0x040b001c 0x0501002c 0x0502002e
-                       /* V       X          ,          M       */
-                       0x0503002f 0x0504002d 0x05050033 0x05060032
-                       /* L_SHIFT /          .          SPACE   */
-                       0x0507002a 0x05080035 0x05090034 0x050B0039
-                       /* 1       3          4          2       */
-                       0x06010002 0x06020004 0x06030005 0x06040003
-                       /* 8       7          0          9       */
-                       0x06050009 0x06060008 0x0608000b 0x0609000a
-                       /* L_ALT   DOWN       RIGHT      Q       */
-                       0x060a0038 0x060b006c 0x060c006a 0x07010010
-                       /* E       R          W          I       */
-                       0x07020012 0x07030013 0x07040011 0x07050017
-                       /* U       R_SHIFT    P          O       */
-                       0x07060016 0x07070036 0x07080019 0x07090018
-                       /* UP      LEFT    */
-                       0x070b0067 0x070c0069>;
-       };
-
        fimd@14400000 {
                samsung,vl-freq = <60>;
                samsung,vl-col = <1366>;
        };
 
 };
+
+#include "cros-ec-keyboard.dtsi"
index fde863de3cf6b00b9b5fbcc3aa7585f3026044fc..d1d87350be306fb48b88e32d6e9ded69b3adef32 100644 (file)
                pmic = "/i2c@12ca0000";
        };
 
-       cros-ec-keyb {
-               compatible = "google,cros-ec-keyb";
-               google,key-rows = <8>;
-               google,key-columns = <13>;
-               google,repeat-delay-ms = <240>;
-               google,repeat-rate-ms = <30>;
-               google,ghost-filter;
-               /*
-                * Keymap entries take the form of 0xRRCCKKKK where
-                * RR=Row CC=Column KKKK=Key Code
-                * The values below are for a US keyboard layout and
-                * are taken from the Linux driver. Note that the
-                * 102ND key is not used for US keyboards.
-                */
-               linux,keymap = <
-                       /* CAPSLCK F1         B          F10     */
-                       0x0001003a 0x0002003b 0x00030030 0x00040044
-                       /* N       =          R_ALT      ESC     */
-                       0x00060031 0x0008000d 0x000a0064 0x01010001
-                       /* F4      G          F7         H       */
-                       0x0102003e 0x01030022 0x01040041 0x01060023
-                       /* '       F9         BKSPACE    L_CTRL  */
-                       0x01080028 0x01090043 0x010b000e 0x0200001d
-                       /* TAB     F3         T          F6      */
-                       0x0201000f 0x0202003d 0x02030014 0x02040040
-                       /* ]       Y          102ND      [       */
-                       0x0205001b 0x02060015 0x02070056 0x0208001a
-                       /* F8      GRAVE      F2         5       */
-                       0x02090042 0x03010029 0x0302003c 0x03030006
-                       /* F5      6          -          \       */
-                       0x0304003f 0x03060007 0x0308000c 0x030b002b
-                       /* R_CTRL  A          D          F       */
-                       0x04000061 0x0401001e 0x04020020 0x04030021
-                       /* S       K          J          ;       */
-                       0x0404001f 0x04050025 0x04060024 0x04080027
-                       /* L       ENTER      Z          C       */
-                       0x04090026 0x040b001c 0x0501002c 0x0502002e
-                       /* V       X          ,          M       */
-                       0x0503002f 0x0504002d 0x05050033 0x05060032
-                       /* L_SHIFT /          .          SPACE   */
-                       0x0507002a 0x05080035 0x05090034 0x050B0039
-                       /* 1       3          4          2       */
-                       0x06010002 0x06020004 0x06030005 0x06040003
-                       /* 8       7          0          9       */
-                       0x06050009 0x06060008 0x0608000b 0x0609000a
-                       /* L_ALT   DOWN       RIGHT      Q       */
-                       0x060a0038 0x060b006c 0x060c006a 0x07010010
-                       /* E       R          W          I       */
-                       0x07020012 0x07030013 0x07040011 0x07050017
-                       /* U       R_SHIFT    P          O       */
-                       0x07060016 0x07070036 0x07080019 0x07090018
-                       /* UP      LEFT    */
-                       0x070b0067 0x070c0069>;
-       };
-
        dmc {
                mem-manuf = "samsung";
                mem-type = "ddr3";
        spi@12d40000 { /* spi2 */
                spi-max-frequency = <4000000>;
                spi-deactivate-delay = <200>;
-               cros-ec@0 {
+               cros_ec: cros-ec@0 {
                        reg = <0>;
                        compatible = "google,cros-ec";
                        spi-half-duplex;
                samsung,dual-lcd-enabled = <0>;
        };
 };
+
+#include "cros-ec-keyboard.dtsi"
diff --git a/arch/arm/dts/exynos5422-odroidxu3.dts b/arch/arm/dts/exynos5422-odroidxu3.dts
new file mode 100644 (file)
index 0000000..79a7acd
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Odroid XU3 device tree source
+ *
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *             http://www.samsung.com
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+#include "exynos54xx.dtsi"
+
+/ {
+       model = "Odroid XU3 based on EXYNOS5422";
+       compatible = "samsung,odroidxu3", "samsung,exynos5";
+
+       aliases {
+               serial0 = "/serial@12C00000";
+               console = "/serial@12C20000";
+       };
+
+       memory {
+               device_type = "memory";
+               reg =  <0x40000000 0x10000000
+                       0x50000000 0x10000000
+                       0x60000000 0x10000000
+                       0x70000000 0x10000000
+                       0x80000000 0x10000000
+                       0x90000000 0x10000000
+                       0xa0000000 0x10000000
+                       0xb0000000 0xea00000>;
+       };
+
+       ehci@12110000 {
+               samsung,vbus-gpio = <&gpio 0x66 0>; /* X26 */
+       };
+
+       serial@12C20000 {
+               status="okay";
+       };
+
+       mmc@12200000 {
+               fifoth_val = <0x201f0020>;
+       };
+
+       mmc@12220000 {
+               fifoth_val = <0x201f0020>;
+       };
+};
diff --git a/arch/arm/dts/exynos5800-peach-pi.dts b/arch/arm/dts/exynos5800-peach-pi.dts
new file mode 100644 (file)
index 0000000..e7c380f
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * SAMSUNG/GOOGLE Peach-Pit board device tree source
+ *
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd.
+ *             http://www.samsung.com
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+#include "exynos54xx.dtsi"
+
+/ {
+       model = "Samsung/Google Peach Pi board based on Exynos5800";
+
+       compatible = "google,pit-rev#", "google,pit",
+               "google,peach", "samsung,exynos5800", "samsung,exynos5";
+
+       config {
+               google,bad-wake-gpios = <&gpio 0x56 0>; /* gpx0-6 */
+               hwid = "PIT TEST A-A 7848";
+               lazy-init = <1>;
+       };
+
+       aliases {
+               serial0 = "/serial@12C30000";
+               console = "/serial@12C30000";
+               pmic = "/i2c@12ca0000";
+       };
+
+       dmc {
+               mem-manuf = "samsung";
+               mem-type = "ddr3";
+               clock-frequency = <800000000>;
+               arm-frequency = <1700000000>;
+       };
+
+       tmu@10060000 {
+               samsung,min-temp        = <25>;
+               samsung,max-temp        = <125>;
+               samsung,start-warning   = <95>;
+               samsung,start-tripping  = <105>;
+               samsung,hw-tripping     = <110>;
+               samsung,efuse-min-value = <40>;
+               samsung,efuse-value     = <55>;
+               samsung,efuse-max-value = <100>;
+               samsung,slope           = <274761730>;
+               samsung,dc-value        = <25>;
+       };
+
+       /* MAX77802 is on i2c bus 4 */
+       i2c@12ca0000 {
+               clock-frequency = <400000>;
+               power-regulator@9 {
+                       compatible = "maxim,max77802-pmic";
+                       reg = <0x9>;
+               };
+       };
+
+       i2c@12cd0000 { /* i2c7 */
+               clock-frequency = <100000>;
+              soundcodec@20 {
+                     reg = <0x20>;
+                     compatible = "maxim,max98090-codec";
+              };
+       };
+
+        sound@3830000 {
+                samsung,codec-type = "max98090";
+        };
+
+       i2c@12e10000 { /* i2c9 */
+               clock-frequency = <400000>;
+                tpm@20 {
+                        compatible = "infineon,slb9645-tpm";
+                        reg = <0x20>;
+               };
+       };
+
+       spi@12d30000 { /* spi1 */
+               spi-max-frequency = <50000000>;
+               firmware_storage_spi: flash@0 {
+                       reg = <0>;
+
+                       /*
+                        * A region for the kernel to store a panic event
+                        * which the firmware will add to the log.
+                       */
+                       elog-panic-event-offset = <0x01e00000 0x100000>;
+
+                       elog-shrink-size = <0x400>;
+                       elog-full-threshold = <0xc00>;
+               };
+       };
+
+       spi@12d40000 { /* spi2 */
+               spi-max-frequency = <4000000>;
+               spi-deactivate-delay = <200>;
+               cros_ec: cros-ec@0 {
+                       reg = <0>;
+                       compatible = "google,cros-ec";
+                       spi-half-duplex;
+                       spi-max-timeout-ms = <1100>;
+                       spi-frame-header = <0xec>;
+                       ec-interrupt = <&gpio 93 1>; /* GPX1_5 */
+
+                       /*
+                        * This describes the flash memory within the EC. Note
+                        * that the STM32L flash erases to 0, not 0xff.
+                        */
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       flash@8000000 {
+                               reg = <0x08000000 0x20000>;
+                               erase-value = <0>;
+                       };
+               };
+       };
+
+       xhci@12000000 {
+               samsung,vbus-gpio = <&gpio 0x40 0>; /* H00 */
+       };
+
+       xhci@12400000 {
+               samsung,vbus-gpio = <&gpio 0x41 0>; /* H01 */
+       };
+
+       fimd@14400000 {
+               samsung,vl-freq = <60>;
+               samsung,vl-col = <1920>;
+               samsung,vl-row = <1080>;
+               samsung,vl-width = <1920>;
+               samsung,vl-height = <1080>;
+
+               samsung,vl-clkp;
+               samsung,vl-dp;
+               samsung,vl-bpix = <4>;
+
+               samsung,vl-hspw = <80>;
+               samsung,vl-hbpd = <172>;
+               samsung,vl-hfpd = <60>;
+               samsung,vl-vspw = <10>;
+               samsung,vl-vbpd = <25>;
+               samsung,vl-vfpd = <10>;
+               samsung,vl-cmd-allow-len = <0xf>;
+
+               samsung,winid = <3>;
+               samsung,interface-mode = <1>;
+               samsung,dp-enabled = <1>;
+               samsung,dual-lcd-enabled = <0>;
+       };
+};
+
+#include "cros-ec-keyboard.dtsi"
diff --git a/arch/arm/dts/socfpga.dtsi b/arch/arm/dts/socfpga.dtsi
new file mode 100644 (file)
index 0000000..bf791c5
--- /dev/null
@@ -0,0 +1,787 @@
+/*
+ *  Copyright (C) 2012 Altera <www.altera.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "skeleton.dtsi"
+#include <dt-bindings/reset/altr,rst-mgr.h>
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       aliases {
+               ethernet0 = &gmac0;
+               ethernet1 = &gmac1;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               timer0 = &timer0;
+               timer1 = &timer1;
+               timer2 = &timer2;
+               timer3 = &timer3;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       compatible = "arm,cortex-a9";
+                       device_type = "cpu";
+                       reg = <0>;
+                       next-level-cache = <&L2>;
+               };
+               cpu@1 {
+                       compatible = "arm,cortex-a9";
+                       device_type = "cpu";
+                       reg = <1>;
+                       next-level-cache = <&L2>;
+               };
+       };
+
+       intc: intc@fffed000 {
+               compatible = "arm,cortex-a9-gic";
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               reg = <0xfffed000 0x1000>,
+                     <0xfffec100 0x100>;
+       };
+
+       soc {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "simple-bus";
+               device_type = "soc";
+               interrupt-parent = <&intc>;
+               ranges;
+
+               amba {
+                       compatible = "arm,amba-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       pdma: pdma@ffe01000 {
+                               compatible = "arm,pl330", "arm,primecell";
+                               reg = <0xffe01000 0x1000>;
+                               interrupts = <0 104 4>,
+                                            <0 105 4>,
+                                            <0 106 4>,
+                                            <0 107 4>,
+                                            <0 108 4>,
+                                            <0 109 4>,
+                                            <0 110 4>,
+                                            <0 111 4>;
+                               #dma-cells = <1>;
+                               #dma-channels = <8>;
+                               #dma-requests = <32>;
+                               clocks = <&l4_main_clk>;
+                               clock-names = "apb_pclk";
+                       };
+               };
+
+               can0: can@ffc00000 {
+                       compatible = "bosch,d_can";
+                       reg = <0xffc00000 0x1000>;
+                       interrupts = <0 131 4>, <0 132 4>, <0 133 4>, <0 134 4>;
+                       clocks = <&can0_clk>;
+                       status = "disabled";
+               };
+
+               can1: can@ffc01000 {
+                       compatible = "bosch,d_can";
+                       reg = <0xffc01000 0x1000>;
+                       interrupts = <0 135 4>, <0 136 4>, <0 137 4>, <0 138 4>;
+                       clocks = <&can1_clk>;
+                       status = "disabled";
+               };
+
+               clkmgr@ffd04000 {
+                               compatible = "altr,clk-mgr";
+                               reg = <0xffd04000 0x1000>;
+
+                               clocks {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       osc1: osc1 {
+                                               #clock-cells = <0>;
+                                               compatible = "fixed-clock";
+                                       };
+
+                                       osc2: osc2 {
+                                               #clock-cells = <0>;
+                                               compatible = "fixed-clock";
+                                       };
+
+                                       f2s_periph_ref_clk: f2s_periph_ref_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "fixed-clock";
+                                       };
+
+                                       f2s_sdram_ref_clk: f2s_sdram_ref_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "fixed-clock";
+                                       };
+
+                                       main_pll: main_pll {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-pll-clock";
+                                               clocks = <&osc1>;
+                                               reg = <0x40>;
+
+                                               mpuclk: mpuclk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&main_pll>;
+                                                       div-reg = <0xe0 0 9>;
+                                                       reg = <0x48>;
+                                               };
+
+                                               mainclk: mainclk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&main_pll>;
+                                                       div-reg = <0xe4 0 9>;
+                                                       reg = <0x4C>;
+                                               };
+
+                                               dbg_base_clk: dbg_base_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&main_pll>;
+                                                       div-reg = <0xe8 0 9>;
+                                                       reg = <0x50>;
+                                               };
+
+                                               main_qspi_clk: main_qspi_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&main_pll>;
+                                                       reg = <0x54>;
+                                               };
+
+                                               main_nand_sdmmc_clk: main_nand_sdmmc_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&main_pll>;
+                                                       reg = <0x58>;
+                                               };
+
+                                               cfg_h2f_usr0_clk: cfg_h2f_usr0_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&main_pll>;
+                                                       reg = <0x5C>;
+                                               };
+                                       };
+
+                                       periph_pll: periph_pll {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-pll-clock";
+                                               clocks = <&osc1>, <&osc2>, <&f2s_periph_ref_clk>;
+                                               reg = <0x80>;
+
+                                               emac0_clk: emac0_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&periph_pll>;
+                                                       reg = <0x88>;
+                                               };
+
+                                               emac1_clk: emac1_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&periph_pll>;
+                                                       reg = <0x8C>;
+                                               };
+
+                                               per_qspi_clk: per_qsi_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&periph_pll>;
+                                                       reg = <0x90>;
+                                               };
+
+                                               per_nand_mmc_clk: per_nand_mmc_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&periph_pll>;
+                                                       reg = <0x94>;
+                                               };
+
+                                               per_base_clk: per_base_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&periph_pll>;
+                                                       reg = <0x98>;
+                                               };
+
+                                               h2f_usr1_clk: h2f_usr1_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&periph_pll>;
+                                                       reg = <0x9C>;
+                                               };
+                                       };
+
+                                       sdram_pll: sdram_pll {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-pll-clock";
+                                               clocks = <&osc1>, <&osc2>, <&f2s_sdram_ref_clk>;
+                                               reg = <0xC0>;
+
+                                               ddr_dqs_clk: ddr_dqs_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&sdram_pll>;
+                                                       reg = <0xC8>;
+                                               };
+
+                                               ddr_2x_dqs_clk: ddr_2x_dqs_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&sdram_pll>;
+                                                       reg = <0xCC>;
+                                               };
+
+                                               ddr_dq_clk: ddr_dq_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&sdram_pll>;
+                                                       reg = <0xD0>;
+                                               };
+
+                                               h2f_usr2_clk: h2f_usr2_clk {
+                                                       #clock-cells = <0>;
+                                                       compatible = "altr,socfpga-perip-clk";
+                                                       clocks = <&sdram_pll>;
+                                                       reg = <0xD4>;
+                                               };
+                                       };
+
+                                       mpu_periph_clk: mpu_periph_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-perip-clk";
+                                               clocks = <&mpuclk>;
+                                               fixed-divider = <4>;
+                                       };
+
+                                       mpu_l2_ram_clk: mpu_l2_ram_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-perip-clk";
+                                               clocks = <&mpuclk>;
+                                               fixed-divider = <2>;
+                                       };
+
+                                       l4_main_clk: l4_main_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>;
+                                               clk-gate = <0x60 0>;
+                                       };
+
+                                       l3_main_clk: l3_main_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-perip-clk";
+                                               clocks = <&mainclk>;
+                                               fixed-divider = <1>;
+                                       };
+
+                                       l3_mp_clk: l3_mp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>;
+                                               div-reg = <0x64 0 2>;
+                                               clk-gate = <0x60 1>;
+                                       };
+
+                                       l3_sp_clk: l3_sp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>;
+                                               div-reg = <0x64 2 2>;
+                                       };
+
+                                       l4_mp_clk: l4_mp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>, <&per_base_clk>;
+                                               div-reg = <0x64 4 3>;
+                                               clk-gate = <0x60 2>;
+                                       };
+
+                                       l4_sp_clk: l4_sp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>, <&per_base_clk>;
+                                               div-reg = <0x64 7 3>;
+                                               clk-gate = <0x60 3>;
+                                       };
+
+                                       dbg_at_clk: dbg_at_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               div-reg = <0x68 0 2>;
+                                               clk-gate = <0x60 4>;
+                                       };
+
+                                       dbg_clk: dbg_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               div-reg = <0x68 2 2>;
+                                               clk-gate = <0x60 5>;
+                                       };
+
+                                       dbg_trace_clk: dbg_trace_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               div-reg = <0x6C 0 3>;
+                                               clk-gate = <0x60 6>;
+                                       };
+
+                                       dbg_timer_clk: dbg_timer_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               clk-gate = <0x60 7>;
+                                       };
+
+                                       cfg_clk: cfg_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&cfg_h2f_usr0_clk>;
+                                               clk-gate = <0x60 8>;
+                                       };
+
+                                       h2f_user0_clk: h2f_user0_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&cfg_h2f_usr0_clk>;
+                                               clk-gate = <0x60 9>;
+                                       };
+
+                                       emac_0_clk: emac_0_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&emac0_clk>;
+                                               clk-gate = <0xa0 0>;
+                                       };
+
+                                       emac_1_clk: emac_1_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&emac1_clk>;
+                                               clk-gate = <0xa0 1>;
+                                       };
+
+                                       usb_mp_clk: usb_mp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 2>;
+                                               div-reg = <0xa4 0 3>;
+                                       };
+
+                                       spi_m_clk: spi_m_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 3>;
+                                               div-reg = <0xa4 3 3>;
+                                       };
+
+                                       can0_clk: can0_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 4>;
+                                               div-reg = <0xa4 6 3>;
+                                       };
+
+                                       can1_clk: can1_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 5>;
+                                               div-reg = <0xa4 9 3>;
+                                       };
+
+                                       gpio_db_clk: gpio_db_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 6>;
+                                               div-reg = <0xa8 0 24>;
+                                       };
+
+                                       h2f_user1_clk: h2f_user1_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&h2f_usr1_clk>;
+                                               clk-gate = <0xa0 7>;
+                                       };
+
+                                       sdmmc_clk: sdmmc_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
+                                               clk-gate = <0xa0 8>;
+                                               clk-phase = <0 135>;
+                                       };
+
+                                       nand_x_clk: nand_x_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
+                                               clk-gate = <0xa0 9>;
+                                       };
+
+                                       nand_clk: nand_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
+                                               clk-gate = <0xa0 10>;
+                                               fixed-divider = <4>;
+                                       };
+
+                                       qspi_clk: qspi_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_qspi_clk>, <&per_qspi_clk>;
+                                               clk-gate = <0xa0 11>;
+                                       };
+                               };
+                       };
+
+               gmac0: ethernet@ff700000 {
+                       compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
+                       altr,sysmgr-syscon = <&sysmgr 0x60 0>;
+                       reg = <0xff700000 0x2000>;
+                       interrupts = <0 115 4>;
+                       interrupt-names = "macirq";
+                       mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
+                       clocks = <&emac0_clk>;
+                       clock-names = "stmmaceth";
+                       resets = <&rst EMAC0_RESET>;
+                       reset-names = "stmmaceth";
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       status = "disabled";
+               };
+
+               gmac1: ethernet@ff702000 {
+                       compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
+                       altr,sysmgr-syscon = <&sysmgr 0x60 2>;
+                       reg = <0xff702000 0x2000>;
+                       interrupts = <0 120 4>;
+                       interrupt-names = "macirq";
+                       mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
+                       clocks = <&emac1_clk>;
+                       clock-names = "stmmaceth";
+                       resets = <&rst EMAC1_RESET>;
+                       reset-names = "stmmaceth";
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       status = "disabled";
+               };
+
+               i2c0: i2c@ffc04000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xffc04000 0x1000>;
+                       clocks = <&l4_sp_clk>;
+                       interrupts = <0 158 0x4>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@ffc05000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xffc05000 0x1000>;
+                       clocks = <&l4_sp_clk>;
+                       interrupts = <0 159 0x4>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@ffc06000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xffc06000 0x1000>;
+                       clocks = <&l4_sp_clk>;
+                       interrupts = <0 160 0x4>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@ffc07000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,designware-i2c";
+                       reg = <0xffc07000 0x1000>;
+                       clocks = <&l4_sp_clk>;
+                       interrupts = <0 161 0x4>;
+                       status = "disabled";
+               };
+
+               gpio0: gpio@ff708000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,dw-apb-gpio";
+                       reg = <0xff708000 0x1000>;
+                       clocks = <&per_base_clk>;
+                       status = "disabled";
+
+                       porta: gpio-controller@0 {
+                               compatible = "snps,dw-apb-gpio-port";
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               snps,nr-gpios = <29>;
+                               reg = <0>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupts = <0 164 4>;
+                       };
+               };
+
+               gpio1: gpio@ff709000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,dw-apb-gpio";
+                       reg = <0xff709000 0x1000>;
+                       clocks = <&per_base_clk>;
+                       status = "disabled";
+
+                       portb: gpio-controller@0 {
+                               compatible = "snps,dw-apb-gpio-port";
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               snps,nr-gpios = <29>;
+                               reg = <0>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupts = <0 165 4>;
+                       };
+               };
+
+               gpio2: gpio@ff70a000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "snps,dw-apb-gpio";
+                       reg = <0xff70a000 0x1000>;
+                       clocks = <&per_base_clk>;
+                       status = "disabled";
+
+                       portc: gpio-controller@0 {
+                               compatible = "snps,dw-apb-gpio-port";
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               snps,nr-gpios = <27>;
+                               reg = <0>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupts = <0 166 4>;
+                       };
+               };
+
+               sdr: sdr@ffc25000 {
+                       compatible = "syscon";
+                       reg = <0xffc25000 0x1000>;
+               };
+
+               sdramedac {
+                       compatible = "altr,sdram-edac";
+                       altr,sdr-syscon = <&sdr>;
+                       interrupts = <0 39 4>;
+               };
+
+               L2: l2-cache@fffef000 {
+                       compatible = "arm,pl310-cache";
+                       reg = <0xfffef000 0x1000>;
+                       interrupts = <0 38 0x04>;
+                       cache-unified;
+                       cache-level = <2>;
+                       arm,tag-latency = <1 1 1>;
+                       arm,data-latency = <2 1 1>;
+               };
+
+               mmc: dwmmc0@ff704000 {
+                       compatible = "altr,socfpga-dw-mshc";
+                       reg = <0xff704000 0x1000>;
+                       interrupts = <0 139 4>;
+                       fifo-depth = <0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&l4_mp_clk>, <&sdmmc_clk>;
+                       clock-names = "biu", "ciu";
+               };
+
+               qspi: spi@ff705000 {
+                       compatible = "cadence,qspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0xff705000 0x1000>,
+                               <0xffa00000 0x1000>;
+                       interrupts = <0 151 4>;
+                       clocks = <&qspi_clk>;
+                       ext-decoder = <0>;  /* external decoder */
+                       num-cs = <4>;
+                       fifo-depth = <128>;
+                       bus-num = <2>;
+                       status = "disabled";
+               };
+
+               spi0: spi@fff00000 {
+                       compatible = "snps,dw-apb-ssi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0xfff00000 0x1000>;
+                       interrupts = <0 154 4>;
+                       num-cs = <4>;
+                       bus-num = <0>;
+                       tx-dma-channel = <&pdma 16>;
+                       rx-dma-channel = <&pdma 17>;
+                       clocks = <&per_base_clk>;
+                       status = "disabled";
+               };
+
+               spi1: spi@fff01000 {
+                       compatible = "snps,dw-apb-ssi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0xfff01000 0x1000>;
+                       interrupts = <0 156 4>;
+                       num-cs = <4>;
+                       bus-num = <1>;
+                       tx-dma-channel = <&pdma 20>;
+                       rx-dma-channel = <&pdma 21>;
+                       clocks = <&per_base_clk>;
+                       status = "disabled";
+               };
+
+               /* Local timer */
+               timer@fffec600 {
+                       compatible = "arm,cortex-a9-twd-timer";
+                       reg = <0xfffec600 0x100>;
+                       interrupts = <1 13 0xf04>;
+                       clocks = <&mpu_periph_clk>;
+               };
+
+               timer0: timer0@ffc08000 {
+                       compatible = "snps,dw-apb-timer";
+                       interrupts = <0 167 4>;
+                       reg = <0xffc08000 0x1000>;
+                       clocks = <&l4_sp_clk>;
+                       clock-names = "timer";
+               };
+
+               timer1: timer1@ffc09000 {
+                       compatible = "snps,dw-apb-timer";
+                       interrupts = <0 168 4>;
+                       reg = <0xffc09000 0x1000>;
+                       clocks = <&l4_sp_clk>;
+                       clock-names = "timer";
+               };
+
+               timer2: timer2@ffd00000 {
+                       compatible = "snps,dw-apb-timer";
+                       interrupts = <0 169 4>;
+                       reg = <0xffd00000 0x1000>;
+                       clocks = <&osc1>;
+                       clock-names = "timer";
+               };
+
+               timer3: timer3@ffd01000 {
+                       compatible = "snps,dw-apb-timer";
+                       interrupts = <0 170 4>;
+                       reg = <0xffd01000 0x1000>;
+                       clocks = <&osc1>;
+                       clock-names = "timer";
+               };
+
+               uart0: serial0@ffc02000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0xffc02000 0x1000>;
+                       interrupts = <0 162 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&l4_sp_clk>;
+               };
+
+               uart1: serial1@ffc03000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0xffc03000 0x1000>;
+                       interrupts = <0 163 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&l4_sp_clk>;
+               };
+
+               rst: rstmgr@ffd05000 {
+                       #reset-cells = <1>;
+                       compatible = "altr,rst-mgr";
+                       reg = <0xffd05000 0x1000>;
+               };
+
+               usbphy0: usbphy@0 {
+                       #phy-cells = <0>;
+                       compatible = "usb-nop-xceiv";
+                       status = "okay";
+               };
+
+               usb0: usb@ffb00000 {
+                       compatible = "snps,dwc2";
+                       reg = <0xffb00000 0xffff>;
+                       interrupts = <0 125 4>;
+                       clocks = <&usb_mp_clk>;
+                       clock-names = "otg";
+                       phys = <&usbphy0>;
+                       phy-names = "usb2-phy";
+                       status = "disabled";
+               };
+
+               usb1: usb@ffb40000 {
+                       compatible = "snps,dwc2";
+                       reg = <0xffb40000 0xffff>;
+                       interrupts = <0 128 4>;
+                       clocks = <&usb_mp_clk>;
+                       clock-names = "otg";
+                       phys = <&usbphy0>;
+                       phy-names = "usb2-phy";
+                       status = "disabled";
+               };
+
+               watchdog0: watchdog@ffd02000 {
+                       compatible = "snps,dw-wdt";
+                       reg = <0xffd02000 0x1000>;
+                       interrupts = <0 171 4>;
+                       clocks = <&osc1>;
+                       status = "disabled";
+               };
+
+               watchdog1: watchdog@ffd03000 {
+                       compatible = "snps,dw-wdt";
+                       reg = <0xffd03000 0x1000>;
+                       interrupts = <0 172 4>;
+                       clocks = <&osc1>;
+                       status = "disabled";
+               };
+
+               sysmgr: sysmgr@ffd08000 {
+                       compatible = "altr,sys-mgr", "syscon";
+                       reg = <0xffd08000 0x4000>;
+               };
+       };
+};
diff --git a/arch/arm/dts/socfpga_cyclone5.dtsi b/arch/arm/dts/socfpga_cyclone5.dtsi
new file mode 100644 (file)
index 0000000..234a901
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ *  Copyright (C) 2012 Altera Corporation <www.altera.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+/* First 4KB has trampoline code for secondary cores. */
+/memreserve/ 0x00000000 0x0001000;
+#include "socfpga.dtsi"
+
+/ {
+       soc {
+               clkmgr@ffd04000 {
+                       clocks {
+                               osc1 {
+                                       clock-frequency = <25000000>;
+                               };
+                       };
+               };
+
+               mmc0: dwmmc0@ff704000 {
+                       num-slots = <1>;
+                       broken-cd;
+                       bus-width = <4>;
+                       cap-mmc-highspeed;
+                       cap-sd-highspeed;
+               };
+
+               ethernet@ff702000 {
+                       phy-mode = "rgmii";
+                       phy-addr = <0xffffffff>; /* probe for phy addr */
+                       status = "okay";
+               };
+
+               sysmgr@ffd08000 {
+                       cpu1-start-addr = <0xffd080c4>;
+               };
+       };
+};
diff --git a/arch/arm/dts/socfpga_cyclone5_socrates.dts b/arch/arm/dts/socfpga_cyclone5_socrates.dts
new file mode 100644 (file)
index 0000000..ea30483
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ *  Copyright (C) 2014 Steffen Trumtrar <s.trumtrar@pengutronix.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "socfpga_cyclone5.dtsi"
+
+/ {
+       model = "EBV SOCrates";
+       compatible = "ebv,socrates", "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       aliases {
+               spi0 = "/spi@ff705000";         /* QSPI */
+               spi1 = "/spi@fff00000";
+               spi2 = "/spi@fff01000";
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+};
+
+&gmac1 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       rtc: rtc@68 {
+               compatible = "stm,m41t82";
+               reg = <0x68>;
+       };
+};
+
+&mmc {
+       status = "okay";
+};
+
+&qspi {
+       status = "okay";
+
+       flash0: n25q00@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "n25q00";
+               reg = <0>;      /* chip select */
+               spi-max-frequency = <50000000>;
+               m25p,fast-read;
+               page-size = <256>;
+               block-size = <16>; /* 2^16, 64KB */
+               read-delay = <4>;  /* delay value in read data capture register */
+               tshsl-ns = <50>;
+               tsd2d-ns = <50>;
+               tchsh-ns = <4>;
+               tslch-ns = <4>;
+       };
+};
diff --git a/arch/arm/dts/sun7i-a20-pcduino3.dts b/arch/arm/dts/sun7i-a20-pcduino3.dts
new file mode 100644 (file)
index 0000000..f7cc8e7
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2014 Zoltan HERPAI
+ * Zoltan HERPAI <wigyori@uid0.hu>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "sun7i-a20.dtsi"
+/include/ "sunxi-common-regulators.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "LinkSprite pcDuino3";
+       compatible = "linksprite,pcduino3", "allwinner,sun7i-a20";
+
+       chosen {
+               stdout-path = &uart0;
+       };
+
+       soc@01c00000 {
+               mmc0: mmc@01c0f000 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
+                       vmmc-supply = <&reg_vcc3v3>;
+                       bus-width = <4>;
+                       cd-gpios = <&pio 7 1 0>; /* PH1 */
+                       cd-inverted;
+                       status = "okay";
+               };
+
+               usbphy: phy@01c13400 {
+                       usb1_vbus-supply = <&reg_usb1_vbus>;
+                       usb2_vbus-supply = <&reg_usb2_vbus>;
+                       status = "okay";
+               };
+
+               ehci0: usb@01c14000 {
+                       status = "okay";
+               };
+
+               ohci0: usb@01c14400 {
+                       status = "okay";
+               };
+
+               ahci: sata@01c18000 {
+                       target-supply = <&reg_ahci_5v>;
+                       status = "okay";
+               };
+
+               ehci1: usb@01c1c000 {
+                       status = "okay";
+               };
+
+               ohci1: usb@01c1c400 {
+                       status = "okay";
+               };
+
+               pinctrl@01c20800 {
+                       ahci_pwr_pin_a: ahci_pwr_pin@0 {
+                               allwinner,pins = "PH2";
+                       };
+
+                       led_pins_pcduino3: led_pins@0 {
+                               allwinner,pins = "PH15", "PH16";
+                               allwinner,function = "gpio_out";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       key_pins_pcduino3: key_pins@0 {
+                               allwinner,pins = "PH17", "PH18", "PH19";
+                               allwinner,function = "gpio_in";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+               };
+
+               ir0: ir@01c21800 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&ir0_pins_a>;
+                       status = "okay";
+               };
+
+               uart0: serial@01c28000 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&uart0_pins_a>;
+                       status = "okay";
+               };
+
+               i2c0: i2c@01c2ac00 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_pins_a>;
+                       status = "okay";
+
+                       axp209: pmic@34 {
+                               compatible = "x-powers,axp209";
+                               reg = <0x34>;
+                               interrupt-parent = <&nmi_intc>;
+                               interrupts = <0 8>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               gmac: ethernet@01c50000 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&gmac_pins_mii_a>;
+                       phy = <&phy1>;
+                       phy-mode = "mii";
+                       status = "okay";
+
+                       phy1: ethernet-phy@1 {
+                               reg = <1>;
+                       };
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins_pcduino3>;
+
+               tx {
+                       label = "pcduino3:green:tx";
+                       gpios = <&pio 7 15 GPIO_ACTIVE_LOW>;
+               };
+
+               rx {
+                       label = "pcduino3:green:rx";
+                       gpios = <&pio 7 16 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&key_pins_pcduino3>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               button@0 {
+                       label = "Key Back";
+                       linux,code = <KEY_BACK>;
+                       gpios = <&pio 7 17 GPIO_ACTIVE_LOW>;
+               };
+               button@1 {
+                       label = "Key Home";
+                       linux,code = <KEY_HOME>;
+                       gpios = <&pio 7 18 GPIO_ACTIVE_LOW>;
+               };
+               button@2 {
+                       label = "Key Menu";
+                       linux,code = <KEY_MENU>;
+                       gpios = <&pio 7 19 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       reg_usb1_vbus: usb1-vbus {
+               status = "okay";
+       };
+
+       reg_usb2_vbus: usb2-vbus {
+               status = "okay";
+       };
+
+       reg_ahci_5v: ahci-5v {
+               gpio = <&pio 7 2 0>;
+               status = "okay";
+       };
+};
diff --git a/arch/arm/dts/sun7i-a20.dtsi b/arch/arm/dts/sun7i-a20.dtsi
new file mode 100644 (file)
index 0000000..4011628
--- /dev/null
@@ -0,0 +1,988 @@
+/*
+ * Copyright 2013 Maxime Ripard
+ *
+ * Maxime Ripard <maxime.ripard@free-electrons.com>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+       interrupt-parent = <&gic>;
+
+       aliases {
+               ethernet0 = &gmac;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+               serial5 = &uart5;
+               serial6 = &uart6;
+               serial7 = &uart7;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       compatible = "arm,cortex-a7";
+                       device_type = "cpu";
+                       reg = <0>;
+               };
+
+               cpu@1 {
+                       compatible = "arm,cortex-a7";
+                       device_type = "cpu";
+                       reg = <1>;
+               };
+       };
+
+       memory {
+               reg = <0x40000000 0x80000000>;
+       };
+
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <1 13 0xf08>,
+                            <1 14 0xf08>,
+                            <1 11 0xf08>,
+                            <1 10 0xf08>;
+       };
+
+       pmu {
+               compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
+               interrupts = <0 120 4>,
+                            <0 121 4>;
+       };
+
+       clocks {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               osc24M: clk@01c20050 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-osc-clk";
+                       reg = <0x01c20050 0x4>;
+                       clock-frequency = <24000000>;
+                       clock-output-names = "osc24M";
+               };
+
+               osc32k: clk@0 {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <32768>;
+                       clock-output-names = "osc32k";
+               };
+
+               pll1: clk@01c20000 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-pll1-clk";
+                       reg = <0x01c20000 0x4>;
+                       clocks = <&osc24M>;
+                       clock-output-names = "pll1";
+               };
+
+               pll4: clk@01c20018 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun7i-a20-pll4-clk";
+                       reg = <0x01c20018 0x4>;
+                       clocks = <&osc24M>;
+                       clock-output-names = "pll4";
+               };
+
+               pll5: clk@01c20020 {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun4i-a10-pll5-clk";
+                       reg = <0x01c20020 0x4>;
+                       clocks = <&osc24M>;
+                       clock-output-names = "pll5_ddr", "pll5_other";
+               };
+
+               pll6: clk@01c20028 {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun4i-a10-pll6-clk";
+                       reg = <0x01c20028 0x4>;
+                       clocks = <&osc24M>;
+                       clock-output-names = "pll6_sata", "pll6_other", "pll6";
+               };
+
+               pll8: clk@01c20040 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun7i-a20-pll4-clk";
+                       reg = <0x01c20040 0x4>;
+                       clocks = <&osc24M>;
+                       clock-output-names = "pll8";
+               };
+
+               cpu: cpu@01c20054 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-cpu-clk";
+                       reg = <0x01c20054 0x4>;
+                       clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll6 1>;
+                       clock-output-names = "cpu";
+               };
+
+               axi: axi@01c20054 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-axi-clk";
+                       reg = <0x01c20054 0x4>;
+                       clocks = <&cpu>;
+                       clock-output-names = "axi";
+               };
+
+               ahb: ahb@01c20054 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-ahb-clk";
+                       reg = <0x01c20054 0x4>;
+                       clocks = <&axi>;
+                       clock-output-names = "ahb";
+               };
+
+               ahb_gates: clk@01c20060 {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun7i-a20-ahb-gates-clk";
+                       reg = <0x01c20060 0x8>;
+                       clocks = <&ahb>;
+                       clock-output-names = "ahb_usb0", "ahb_ehci0",
+                               "ahb_ohci0", "ahb_ehci1", "ahb_ohci1",
+                               "ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
+                               "ahb_mmc1", "ahb_mmc2", "ahb_mmc3", "ahb_ms",
+                               "ahb_nand", "ahb_sdram", "ahb_ace",
+                               "ahb_emac", "ahb_ts", "ahb_spi0", "ahb_spi1",
+                               "ahb_spi2", "ahb_spi3", "ahb_sata",
+                               "ahb_hstimer", "ahb_ve", "ahb_tvd", "ahb_tve0",
+                               "ahb_tve1", "ahb_lcd0", "ahb_lcd1", "ahb_csi0",
+                               "ahb_csi1", "ahb_hdmi1", "ahb_hdmi0",
+                               "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0",
+                               "ahb_de_fe1", "ahb_gmac", "ahb_mp",
+                               "ahb_mali";
+               };
+
+               apb0: apb0@01c20054 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-apb0-clk";
+                       reg = <0x01c20054 0x4>;
+                       clocks = <&ahb>;
+                       clock-output-names = "apb0";
+               };
+
+               apb0_gates: clk@01c20068 {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun7i-a20-apb0-gates-clk";
+                       reg = <0x01c20068 0x4>;
+                       clocks = <&apb0>;
+                       clock-output-names = "apb0_codec", "apb0_spdif",
+                               "apb0_ac97", "apb0_iis0", "apb0_iis1",
+                               "apb0_pio", "apb0_ir0", "apb0_ir1",
+                               "apb0_iis2", "apb0_keypad";
+               };
+
+               apb1_mux: apb1_mux@01c20058 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-apb1-mux-clk";
+                       reg = <0x01c20058 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
+                       clock-output-names = "apb1_mux";
+               };
+
+               apb1: apb1@01c20058 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-apb1-clk";
+                       reg = <0x01c20058 0x4>;
+                       clocks = <&apb1_mux>;
+                       clock-output-names = "apb1";
+               };
+
+               apb1_gates: clk@01c2006c {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun7i-a20-apb1-gates-clk";
+                       reg = <0x01c2006c 0x4>;
+                       clocks = <&apb1>;
+                       clock-output-names = "apb1_i2c0", "apb1_i2c1",
+                               "apb1_i2c2", "apb1_i2c3", "apb1_can",
+                               "apb1_scr", "apb1_ps20", "apb1_ps21",
+                               "apb1_i2c4", "apb1_uart0", "apb1_uart1",
+                               "apb1_uart2", "apb1_uart3", "apb1_uart4",
+                               "apb1_uart5", "apb1_uart6", "apb1_uart7";
+               };
+
+               nand_clk: clk@01c20080 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c20080 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "nand";
+               };
+
+               ms_clk: clk@01c20084 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c20084 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "ms";
+               };
+
+               mmc0_clk: clk@01c20088 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c20088 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "mmc0";
+               };
+
+               mmc1_clk: clk@01c2008c {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c2008c 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "mmc1";
+               };
+
+               mmc2_clk: clk@01c20090 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c20090 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "mmc2";
+               };
+
+               mmc3_clk: clk@01c20094 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c20094 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "mmc3";
+               };
+
+               ts_clk: clk@01c20098 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c20098 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "ts";
+               };
+
+               ss_clk: clk@01c2009c {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c2009c 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "ss";
+               };
+
+               spi0_clk: clk@01c200a0 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c200a0 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "spi0";
+               };
+
+               spi1_clk: clk@01c200a4 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c200a4 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "spi1";
+               };
+
+               spi2_clk: clk@01c200a8 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c200a8 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "spi2";
+               };
+
+               pata_clk: clk@01c200ac {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c200ac 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "pata";
+               };
+
+               ir0_clk: clk@01c200b0 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c200b0 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "ir0";
+               };
+
+               ir1_clk: clk@01c200b4 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c200b4 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "ir1";
+               };
+
+               usb_clk: clk@01c200cc {
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       compatible = "allwinner,sun4i-a10-usb-clk";
+                       reg = <0x01c200cc 0x4>;
+                       clocks = <&pll6 1>;
+                       clock-output-names = "usb_ohci0", "usb_ohci1", "usb_phy";
+               };
+
+               spi3_clk: clk@01c200d4 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c200d4 0x4>;
+                       clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
+                       clock-output-names = "spi3";
+               };
+
+               mbus_clk: clk@01c2015c {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun4i-a10-mod0-clk";
+                       reg = <0x01c2015c 0x4>;
+                       clocks = <&osc24M>, <&pll6 2>, <&pll5 1>;
+                       clock-output-names = "mbus";
+               };
+
+               /*
+                * The following two are dummy clocks, placeholders used in the gmac_tx
+                * clock. The gmac driver will choose one parent depending on the PHY
+                * interface mode, using clk_set_rate auto-reparenting.
+                * The actual TX clock rate is not controlled by the gmac_tx clock.
+                */
+               mii_phy_tx_clk: clk@2 {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <25000000>;
+                       clock-output-names = "mii_phy_tx";
+               };
+
+               gmac_int_tx_clk: clk@3 {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <125000000>;
+                       clock-output-names = "gmac_int_tx";
+               };
+
+               gmac_tx_clk: clk@01c20164 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun7i-a20-gmac-clk";
+                       reg = <0x01c20164 0x4>;
+                       clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
+                       clock-output-names = "gmac_tx";
+               };
+
+               /*
+                * Dummy clock used by output clocks
+                */
+               osc24M_32k: clk@1 {
+                       #clock-cells = <0>;
+                       compatible = "fixed-factor-clock";
+                       clock-div = <750>;
+                       clock-mult = <1>;
+                       clocks = <&osc24M>;
+                       clock-output-names = "osc24M_32k";
+               };
+
+               clk_out_a: clk@01c201f0 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun7i-a20-out-clk";
+                       reg = <0x01c201f0 0x4>;
+                       clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
+                       clock-output-names = "clk_out_a";
+               };
+
+               clk_out_b: clk@01c201f4 {
+                       #clock-cells = <0>;
+                       compatible = "allwinner,sun7i-a20-out-clk";
+                       reg = <0x01c201f4 0x4>;
+                       clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
+                       clock-output-names = "clk_out_b";
+               };
+       };
+
+       soc@01c00000 {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               nmi_intc: interrupt-controller@01c00030 {
+                       compatible = "allwinner,sun7i-a20-sc-nmi";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       reg = <0x01c00030 0x0c>;
+                       interrupts = <0 0 4>;
+               };
+
+               spi0: spi@01c05000 {
+                       compatible = "allwinner,sun4i-a10-spi";
+                       reg = <0x01c05000 0x1000>;
+                       interrupts = <0 10 4>;
+                       clocks = <&ahb_gates 20>, <&spi0_clk>;
+                       clock-names = "ahb", "mod";
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               spi1: spi@01c06000 {
+                       compatible = "allwinner,sun4i-a10-spi";
+                       reg = <0x01c06000 0x1000>;
+                       interrupts = <0 11 4>;
+                       clocks = <&ahb_gates 21>, <&spi1_clk>;
+                       clock-names = "ahb", "mod";
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               emac: ethernet@01c0b000 {
+                       compatible = "allwinner,sun4i-a10-emac";
+                       reg = <0x01c0b000 0x1000>;
+                       interrupts = <0 55 4>;
+                       clocks = <&ahb_gates 17>;
+                       status = "disabled";
+               };
+
+               mdio@01c0b080 {
+                       compatible = "allwinner,sun4i-a10-mdio";
+                       reg = <0x01c0b080 0x14>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               mmc0: mmc@01c0f000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c0f000 0x1000>;
+                       clocks = <&ahb_gates 8>, <&mmc0_clk>;
+                       clock-names = "ahb", "mmc";
+                       interrupts = <0 32 4>;
+                       status = "disabled";
+               };
+
+               mmc1: mmc@01c10000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c10000 0x1000>;
+                       clocks = <&ahb_gates 9>, <&mmc1_clk>;
+                       clock-names = "ahb", "mmc";
+                       interrupts = <0 33 4>;
+                       status = "disabled";
+               };
+
+               mmc2: mmc@01c11000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c11000 0x1000>;
+                       clocks = <&ahb_gates 10>, <&mmc2_clk>;
+                       clock-names = "ahb", "mmc";
+                       interrupts = <0 34 4>;
+                       status = "disabled";
+               };
+
+               mmc3: mmc@01c12000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c12000 0x1000>;
+                       clocks = <&ahb_gates 11>, <&mmc3_clk>;
+                       clock-names = "ahb", "mmc";
+                       interrupts = <0 35 4>;
+                       status = "disabled";
+               };
+
+               usbphy: phy@01c13400 {
+                       #phy-cells = <1>;
+                       compatible = "allwinner,sun7i-a20-usb-phy";
+                       reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
+                       reg-names = "phy_ctrl", "pmu1", "pmu2";
+                       clocks = <&usb_clk 8>;
+                       clock-names = "usb_phy";
+                       resets = <&usb_clk 1>, <&usb_clk 2>;
+                       reset-names = "usb1_reset", "usb2_reset";
+                       status = "disabled";
+               };
+
+               ehci0: usb@01c14000 {
+                       compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
+                       reg = <0x01c14000 0x100>;
+                       interrupts = <0 39 4>;
+                       clocks = <&ahb_gates 1>;
+                       phys = <&usbphy 1>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               ohci0: usb@01c14400 {
+                       compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
+                       reg = <0x01c14400 0x100>;
+                       interrupts = <0 64 4>;
+                       clocks = <&usb_clk 6>, <&ahb_gates 2>;
+                       phys = <&usbphy 1>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               spi2: spi@01c17000 {
+                       compatible = "allwinner,sun4i-a10-spi";
+                       reg = <0x01c17000 0x1000>;
+                       interrupts = <0 12 4>;
+                       clocks = <&ahb_gates 22>, <&spi2_clk>;
+                       clock-names = "ahb", "mod";
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               ahci: sata@01c18000 {
+                       compatible = "allwinner,sun4i-a10-ahci";
+                       reg = <0x01c18000 0x1000>;
+                       interrupts = <0 56 4>;
+                       clocks = <&pll6 0>, <&ahb_gates 25>;
+                       status = "disabled";
+               };
+
+               ehci1: usb@01c1c000 {
+                       compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
+                       reg = <0x01c1c000 0x100>;
+                       interrupts = <0 40 4>;
+                       clocks = <&ahb_gates 3>;
+                       phys = <&usbphy 2>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               ohci1: usb@01c1c400 {
+                       compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
+                       reg = <0x01c1c400 0x100>;
+                       interrupts = <0 65 4>;
+                       clocks = <&usb_clk 7>, <&ahb_gates 4>;
+                       phys = <&usbphy 2>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               spi3: spi@01c1f000 {
+                       compatible = "allwinner,sun4i-a10-spi";
+                       reg = <0x01c1f000 0x1000>;
+                       interrupts = <0 50 4>;
+                       clocks = <&ahb_gates 23>, <&spi3_clk>;
+                       clock-names = "ahb", "mod";
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               pio: pinctrl@01c20800 {
+                       compatible = "allwinner,sun7i-a20-pinctrl";
+                       reg = <0x01c20800 0x400>;
+                       interrupts = <0 28 4>;
+                       clocks = <&apb0_gates 5>;
+                       gpio-controller;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       #size-cells = <0>;
+                       #gpio-cells = <3>;
+
+                       pwm0_pins_a: pwm0@0 {
+                               allwinner,pins = "PB2";
+                               allwinner,function = "pwm";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       pwm1_pins_a: pwm1@0 {
+                               allwinner,pins = "PI3";
+                               allwinner,function = "pwm";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       uart0_pins_a: uart0@0 {
+                               allwinner,pins = "PB22", "PB23";
+                               allwinner,function = "uart0";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       uart2_pins_a: uart2@0 {
+                               allwinner,pins = "PI16", "PI17", "PI18", "PI19";
+                               allwinner,function = "uart2";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       uart6_pins_a: uart6@0 {
+                               allwinner,pins = "PI12", "PI13";
+                               allwinner,function = "uart6";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       uart7_pins_a: uart7@0 {
+                               allwinner,pins = "PI20", "PI21";
+                               allwinner,function = "uart7";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       i2c0_pins_a: i2c0@0 {
+                               allwinner,pins = "PB0", "PB1";
+                               allwinner,function = "i2c0";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       i2c1_pins_a: i2c1@0 {
+                               allwinner,pins = "PB18", "PB19";
+                               allwinner,function = "i2c1";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       i2c2_pins_a: i2c2@0 {
+                               allwinner,pins = "PB20", "PB21";
+                               allwinner,function = "i2c2";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       emac_pins_a: emac0@0 {
+                               allwinner,pins = "PA0", "PA1", "PA2",
+                                               "PA3", "PA4", "PA5", "PA6",
+                                               "PA7", "PA8", "PA9", "PA10",
+                                               "PA11", "PA12", "PA13", "PA14",
+                                               "PA15", "PA16";
+                               allwinner,function = "emac";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       clk_out_a_pins_a: clk_out_a@0 {
+                               allwinner,pins = "PI12";
+                               allwinner,function = "clk_out_a";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       clk_out_b_pins_a: clk_out_b@0 {
+                               allwinner,pins = "PI13";
+                               allwinner,function = "clk_out_b";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       gmac_pins_mii_a: gmac_mii@0 {
+                               allwinner,pins = "PA0", "PA1", "PA2",
+                                               "PA3", "PA4", "PA5", "PA6",
+                                               "PA7", "PA8", "PA9", "PA10",
+                                               "PA11", "PA12", "PA13", "PA14",
+                                               "PA15", "PA16";
+                               allwinner,function = "gmac";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       gmac_pins_rgmii_a: gmac_rgmii@0 {
+                               allwinner,pins = "PA0", "PA1", "PA2",
+                                               "PA3", "PA4", "PA5", "PA6",
+                                               "PA7", "PA8", "PA10",
+                                               "PA11", "PA12", "PA13",
+                                               "PA15", "PA16";
+                               allwinner,function = "gmac";
+                               /*
+                                * data lines in RGMII mode use DDR mode
+                                * and need a higher signal drive strength
+                                */
+                               allwinner,drive = <3>;
+                               allwinner,pull = <0>;
+                       };
+
+                       spi1_pins_a: spi1@0 {
+                               allwinner,pins = "PI16", "PI17", "PI18", "PI19";
+                               allwinner,function = "spi1";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       spi2_pins_a: spi2@0 {
+                               allwinner,pins = "PC19", "PC20", "PC21", "PC22";
+                               allwinner,function = "spi2";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       mmc0_pins_a: mmc0@0 {
+                               allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
+                               allwinner,function = "mmc0";
+                               allwinner,drive = <2>;
+                               allwinner,pull = <0>;
+                       };
+
+                       mmc0_cd_pin_reference_design: mmc0_cd_pin@0 {
+                               allwinner,pins = "PH1";
+                               allwinner,function = "gpio_in";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <1>;
+                       };
+
+                       mmc3_pins_a: mmc3@0 {
+                               allwinner,pins = "PI4","PI5","PI6","PI7","PI8","PI9";
+                               allwinner,function = "mmc3";
+                               allwinner,drive = <2>;
+                               allwinner,pull = <0>;
+                       };
+
+                       ir0_pins_a: ir0@0 {
+                                   allwinner,pins = "PB3","PB4";
+                                   allwinner,function = "ir0";
+                                   allwinner,drive = <0>;
+                                   allwinner,pull = <0>;
+                       };
+
+                       ir1_pins_a: ir1@0 {
+                                   allwinner,pins = "PB22","PB23";
+                                   allwinner,function = "ir1";
+                                   allwinner,drive = <0>;
+                                   allwinner,pull = <0>;
+                       };
+               };
+
+               timer@01c20c00 {
+                       compatible = "allwinner,sun4i-a10-timer";
+                       reg = <0x01c20c00 0x90>;
+                       interrupts = <0 22 4>,
+                                    <0 23 4>,
+                                    <0 24 4>,
+                                    <0 25 4>,
+                                    <0 67 4>,
+                                    <0 68 4>;
+                       clocks = <&osc24M>;
+               };
+
+               wdt: watchdog@01c20c90 {
+                       compatible = "allwinner,sun4i-a10-wdt";
+                       reg = <0x01c20c90 0x10>;
+               };
+
+               rtc: rtc@01c20d00 {
+                       compatible = "allwinner,sun7i-a20-rtc";
+                       reg = <0x01c20d00 0x20>;
+                       interrupts = <0 24 4>;
+               };
+
+               pwm: pwm@01c20e00 {
+                       compatible = "allwinner,sun7i-a20-pwm";
+                       reg = <0x01c20e00 0xc>;
+                       clocks = <&osc24M>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               ir0: ir@01c21800 {
+                       compatible = "allwinner,sun4i-a10-ir";
+                       clocks = <&apb0_gates 6>, <&ir0_clk>;
+                       clock-names = "apb", "ir";
+                       interrupts = <0 5 4>;
+                       reg = <0x01c21800 0x40>;
+                       status = "disabled";
+               };
+
+               ir1: ir@01c21c00 {
+                       compatible = "allwinner,sun4i-a10-ir";
+                       clocks = <&apb0_gates 7>, <&ir1_clk>;
+                       clock-names = "apb", "ir";
+                       interrupts = <0 6 4>;
+                       reg = <0x01c21c00 0x40>;
+                       status = "disabled";
+               };
+
+               sid: eeprom@01c23800 {
+                       compatible = "allwinner,sun7i-a20-sid";
+                       reg = <0x01c23800 0x200>;
+               };
+
+               rtp: rtp@01c25000 {
+                       compatible = "allwinner,sun4i-a10-ts";
+                       reg = <0x01c25000 0x100>;
+                       interrupts = <0 29 4>;
+               };
+
+               uart0: serial@01c28000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c28000 0x400>;
+                       interrupts = <0 1 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 16>;
+                       status = "disabled";
+               };
+
+               uart1: serial@01c28400 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c28400 0x400>;
+                       interrupts = <0 2 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 17>;
+                       status = "disabled";
+               };
+
+               uart2: serial@01c28800 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c28800 0x400>;
+                       interrupts = <0 3 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 18>;
+                       status = "disabled";
+               };
+
+               uart3: serial@01c28c00 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c28c00 0x400>;
+                       interrupts = <0 4 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 19>;
+                       status = "disabled";
+               };
+
+               uart4: serial@01c29000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c29000 0x400>;
+                       interrupts = <0 17 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 20>;
+                       status = "disabled";
+               };
+
+               uart5: serial@01c29400 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c29400 0x400>;
+                       interrupts = <0 18 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 21>;
+                       status = "disabled";
+               };
+
+               uart6: serial@01c29800 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c29800 0x400>;
+                       interrupts = <0 19 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 22>;
+                       status = "disabled";
+               };
+
+               uart7: serial@01c29c00 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x01c29c00 0x400>;
+                       interrupts = <0 20 4>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&apb1_gates 23>;
+                       status = "disabled";
+               };
+
+               i2c0: i2c@01c2ac00 {
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
+                       reg = <0x01c2ac00 0x400>;
+                       interrupts = <0 7 4>;
+                       clocks = <&apb1_gates 0>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c1: i2c@01c2b000 {
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
+                       reg = <0x01c2b000 0x400>;
+                       interrupts = <0 8 4>;
+                       clocks = <&apb1_gates 1>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c2: i2c@01c2b400 {
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
+                       reg = <0x01c2b400 0x400>;
+                       interrupts = <0 9 4>;
+                       clocks = <&apb1_gates 2>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c3: i2c@01c2b800 {
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
+                       reg = <0x01c2b800 0x400>;
+                       interrupts = <0 88 4>;
+                       clocks = <&apb1_gates 3>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c4: i2c@01c2c000 {
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
+                       reg = <0x01c2c000 0x400>;
+                       interrupts = <0 89 4>;
+                       clocks = <&apb1_gates 15>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               gmac: ethernet@01c50000 {
+                       compatible = "allwinner,sun7i-a20-gmac";
+                       reg = <0x01c50000 0x10000>;
+                       interrupts = <0 85 4>;
+                       interrupt-names = "macirq";
+                       clocks = <&ahb_gates 49>, <&gmac_tx_clk>;
+                       clock-names = "stmmaceth", "allwinner_gmac_tx";
+                       snps,pbl = <2>;
+                       snps,fixed-burst;
+                       snps,force_sf_dma_mode;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               hstimer@01c60000 {
+                       compatible = "allwinner,sun7i-a20-hstimer";
+                       reg = <0x01c60000 0x1000>;
+                       interrupts = <0 81 4>,
+                                    <0 82 4>,
+                                    <0 83 4>,
+                                    <0 84 4>;
+                       clocks = <&ahb_gates 28>;
+               };
+
+               gic: interrupt-controller@01c81000 {
+                       compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
+                       reg = <0x01c81000 0x1000>,
+                             <0x01c82000 0x1000>,
+                             <0x01c84000 0x2000>,
+                             <0x01c86000 0x2000>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       interrupts = <1 9 0xf04>;
+               };
+       };
+};
diff --git a/arch/arm/dts/sunxi-common-regulators.dtsi b/arch/arm/dts/sunxi-common-regulators.dtsi
new file mode 100644 (file)
index 0000000..3d021ef
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * sunxi boards common regulator (ahci target power supply, usb-vbus) code
+ *
+ * Copyright 2014 - Hans de Goede <hdegoede@redhat.com>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/ {
+       soc@01c00000 {
+               pio: pinctrl@01c20800 {
+                       ahci_pwr_pin_a: ahci_pwr_pin@0 {
+                               allwinner,pins = "PB8";
+                               allwinner,function = "gpio_out";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       usb1_vbus_pin_a: usb1_vbus_pin@0 {
+                               allwinner,pins = "PH6";
+                               allwinner,function = "gpio_out";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       usb2_vbus_pin_a: usb2_vbus_pin@0 {
+                               allwinner,pins = "PH3";
+                               allwinner,function = "gpio_out";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+               };
+       };
+
+       reg_ahci_5v: ahci-5v {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&ahci_pwr_pin_a>;
+               regulator-name = "ahci-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&pio 1 8 0>;
+               status = "disabled";
+       };
+
+       reg_usb1_vbus: usb1-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb1_vbus_pin_a>;
+               regulator-name = "usb1-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&pio 7 6 0>;
+               status = "disabled";
+       };
+
+       reg_usb2_vbus: usb2-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb2_vbus_pin_a>;
+               regulator-name = "usb2-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&pio 7 3 0>;
+               status = "disabled";
+       };
+
+       reg_vcc3v0: vcc3v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v0";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+       };
+
+       reg_vcc3v3: vcc3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
index ffad1160cd92015bba208aec89d5848b7fa07e8a..51fef54d570e2ebc6fc510cbf86fdab7ed04c3fa 100644 (file)
@@ -16,7 +16,6 @@
                i2c2 = "/i2c@7000c400";
                i2c3 = "/i2c@7000c500";
                i2c4 = "/i2c@7000c700";
-               i2c5 = "/i2c@7000d100";
                sdhci0 = "/sdhci@700b0600";
                sdhci1 = "/sdhci@700b0400";
                spi0 = "/spi@7000d400";
                reg = <0x80000000 0x80000000>;
        };
 
+       pcie-controller@01003000 {
+               status = "okay";
+
+               avddio-pex-supply = <&vdd_1v05_run>;
+               dvddio-pex-supply = <&vdd_1v05_run>;
+               avdd-pex-pll-supply = <&vdd_1v05_run>;
+               hvdd-pex-supply = <&vdd_3v3_lp0>;
+               hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>;
+               vddio-pex-ctl-supply = <&vdd_3v3_lp0>;
+               avdd-pll-erefe-supply = <&avdd_1v05_run>;
+
+               pci@1,0 {
+                       status = "okay";
+               };
+
+               pci@2,0 {
+                       status = "okay";
+               };
+       };
+
        i2c@7000c000 {
                status = "okay";
                clock-frequency = <100000>;
                clock-frequency = <100000>;
        };
 
+       /* Expansion PWR_I2C_*, on-board components */
        i2c@7000d000 {
                status = "okay";
                clock-frequency = <400000>;
+
+               pmic: pmic@40 {
+                       compatible = "ams,as3722";
+                       reg = <0x40>;
+                       interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
+
+                       ams,system-power-controller;
+
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&as3722_default>;
+
+                       as3722_default: pinmux {
+                               gpio0 {
+                                       pins = "gpio0";
+                                       function = "gpio";
+                                       bias-pull-down;
+                               };
+
+                               gpio1_2_4_7 {
+                                       pins = "gpio1", "gpio2", "gpio4", "gpio7";
+                                       function = "gpio";
+                                       bias-pull-up;
+                               };
+
+                               gpio3_5_6 {
+                                       pins = "gpio3", "gpio5", "gpio6";
+                                       bias-high-impedance;
+                               };
+                       };
+
+                       regulators {
+                               vsup-sd2-supply = <&vdd_5v0_sys>;
+                               vsup-sd3-supply = <&vdd_5v0_sys>;
+                               vsup-sd4-supply = <&vdd_5v0_sys>;
+                               vsup-sd5-supply = <&vdd_5v0_sys>;
+                               vin-ldo0-supply = <&vdd_1v35_lp0>;
+                               vin-ldo1-6-supply = <&vdd_3v3_run>;
+                               vin-ldo2-5-7-supply = <&vddio_1v8>;
+                               vin-ldo3-4-supply = <&vdd_3v3_sys>;
+                               vin-ldo9-10-supply = <&vdd_5v0_sys>;
+                               vin-ldo11-supply = <&vdd_3v3_run>;
+
+                               sd0 {
+                                       regulator-name = "+VDD_CPU_AP";
+                                       regulator-min-microvolt = <700000>;
+                                       regulator-max-microvolt = <1400000>;
+                                       regulator-min-microamp = <3500000>;
+                                       regulator-max-microamp = <3500000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                                       ams,ext-control = <2>;
+                               };
+
+                               sd1 {
+                                       regulator-name = "+VDD_CORE";
+                                       regulator-min-microvolt = <700000>;
+                                       regulator-max-microvolt = <1350000>;
+                                       regulator-min-microamp = <2500000>;
+                                       regulator-max-microamp = <2500000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                                       ams,ext-control = <1>;
+                               };
+
+                               vdd_1v35_lp0: sd2 {
+                                       regulator-name = "+1.35V_LP0(sd2)";
+                                       regulator-min-microvolt = <1350000>;
+                                       regulator-max-microvolt = <1350000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               sd3 {
+                                       regulator-name = "+1.35V_LP0(sd3)";
+                                       regulator-min-microvolt = <1350000>;
+                                       regulator-max-microvolt = <1350000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               vdd_1v05_run: sd4 {
+                                       regulator-name = "+1.05V_RUN";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                               };
+
+                               vddio_1v8: sd5 {
+                                       regulator-name = "+1.8V_VDDIO";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-boot-on;
+                                       regulator-always-on;
+                               };
+
+                               vdd_gpu: sd6 {
+                                       regulator-name = "+VDD_GPU_AP";
+                                       regulator-min-microvolt = <650000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-min-microamp = <3500000>;
+                                       regulator-max-microamp = <3500000>;
+                                       regulator-boot-on;
+                                       regulator-always-on;
+                               };
+
+                               avdd_1v05_run: ldo0 {
+                                       regulator-name = "+1.05V_RUN_AVDD";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                                       regulator-boot-on;
+                                       regulator-always-on;
+                                       ams,ext-control = <1>;
+                               };
+
+                               ldo1 {
+                                       regulator-name = "+1.8V_RUN_CAM";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               ldo2 {
+                                       regulator-name = "+1.2V_GEN_AVDD";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-boot-on;
+                                       regulator-always-on;
+                               };
+
+                               ldo3 {
+                                       regulator-name = "+1.05V_LP0_VDD_RTC";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                                       regulator-boot-on;
+                                       regulator-always-on;
+                                       ams,enable-tracking;
+                               };
+
+                               ldo4 {
+                                       regulator-name = "+2.8V_RUN_CAM";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                               };
+
+                               ldo5 {
+                                       regulator-name = "+1.2V_RUN_CAM_FRONT";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               vddio_sdmmc3: ldo6 {
+                                       regulator-name = "+VDDIO_SDMMC3";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo7 {
+                                       regulator-name = "+1.05V_RUN_CAM_REAR";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                               };
+
+                               ldo9 {
+                                       regulator-name = "+3.3V_RUN_TOUCH";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                               };
+
+                               ldo10 {
+                                       regulator-name = "+2.8V_RUN_CAM_AF";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                               };
+
+                               ldo11 {
+                                       regulator-name = "+1.8V_RUN_VPP_FUSE";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+                       };
+               };
        };
 
        i2c@7000d100 {
                spi-max-frequency = <25000000>;
        };
 
+       padctl@7009f000 {
+               pinctrl-0 = <&padctl_default>;
+               pinctrl-names = "default";
+
+               padctl_default: pinmux {
+                       usb3 {
+                               nvidia,lanes = "pcie-0", "pcie-1";
+                               nvidia,function = "usb3";
+                               nvidia,iddq = <0>;
+                       };
+
+                       pcie {
+                               nvidia,lanes = "pcie-2", "pcie-3",
+                                              "pcie-4";
+                               nvidia,function = "pcie";
+                               nvidia,iddq = <0>;
+                       };
+
+                       sata {
+                               nvidia,lanes = "sata-0";
+                               nvidia,function = "sata";
+                               nvidia,iddq = <0>;
+                       };
+               };
+       };
+
        sdhci@700b0400 {
                status = "okay";
                cd-gpios = <&gpio 170 1>; /* gpio PV2 */
                status = "okay";
                nvidia,vbus-gpio = <&gpio 109 0>; /* gpio PN5, USB_VBUS_EN1 */
        };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdd_mux: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "+VDD_MUX";
+                       regulator-min-microvolt = <12000000>;
+                       regulator-max-microvolt = <12000000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+               };
+
+               vdd_5v0_sys: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "+5V_SYS";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       vin-supply = <&vdd_mux>;
+               };
+
+               vdd_3v3_sys: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "+3.3V_SYS";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       vin-supply = <&vdd_mux>;
+               };
+
+               vdd_3v3_run: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "+3.3V_RUN";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       vin-supply = <&vdd_3v3_sys>;
+               };
+
+               vdd_3v3_hdmi: regulator@4 {
+                       compatible = "regulator-fixed";
+                       reg = <4>;
+                       regulator-name = "+3.3V_AVDD_HDMI_AP_GATED";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       vin-supply = <&vdd_3v3_run>;
+               };
+
+               vdd_usb1_vbus: regulator@7 {
+                       compatible = "regulator-fixed";
+                       reg = <7>;
+                       regulator-name = "+USB0_VBUS_SW";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       gpio-open-drain;
+                       vin-supply = <&vdd_5v0_sys>;
+               };
+
+               vdd_usb3_vbus: regulator@8 {
+                       compatible = "regulator-fixed";
+                       reg = <8>;
+                       regulator-name = "+5V_USB_HS";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       gpio-open-drain;
+                       vin-supply = <&vdd_5v0_sys>;
+               };
+
+               vdd_3v3_lp0: regulator@10 {
+                       compatible = "regulator-fixed";
+                       reg = <10>;
+                       regulator-name = "+3.3V_LP0";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&pmic 2 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       vin-supply = <&vdd_3v3_sys>;
+               };
+
+               vdd_hdmi_pll: regulator@11 {
+                       compatible = "regulator-fixed";
+                       reg = <11>;
+                       regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
+                       regulator-min-microvolt = <1050000>;
+                       regulator-max-microvolt = <1050000>;
+                       gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
+                       vin-supply = <&vdd_1v05_run>;
+               };
+
+               vdd_5v0_hdmi: regulator@12 {
+                       compatible = "regulator-fixed";
+                       reg = <12>;
+                       regulator-name = "+5V_HDMI_CON";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       vin-supply = <&vdd_5v0_sys>;
+               };
+
+               /* Molex power connector */
+               vdd_5v0_sata: regulator@13 {
+                       compatible = "regulator-fixed";
+                       reg = <13>;
+                       regulator-name = "+5V_SATA";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio TEGRA_GPIO(EE, 2) GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       vin-supply = <&vdd_5v0_sys>;
+               };
+
+               vdd_12v0_sata: regulator@14 {
+                       compatible = "regulator-fixed";
+                       reg = <14>;
+                       regulator-name = "+12V_SATA";
+                       regulator-min-microvolt = <12000000>;
+                       regulator-max-microvolt = <12000000>;
+                       gpio = <&gpio TEGRA_GPIO(EE, 2) GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       vin-supply = <&vdd_mux>;
+               };
+       };
 };
diff --git a/arch/arm/dts/tegra124-nyan-big.dts b/arch/arm/dts/tegra124-nyan-big.dts
new file mode 100644 (file)
index 0000000..c1f35a0
--- /dev/null
@@ -0,0 +1,365 @@
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include "tegra124.dtsi"
+
+/ {
+       model = "Acer Chromebook 13 CB5-311";
+       compatible = "google,nyan-big", "nvidia,tegra124";
+
+       aliases {
+               console = &uarta;
+               i2c0 = "/i2c@7000d000";
+               i2c1 = "/i2c@7000c000";
+               i2c2 = "/i2c@7000c400";
+               i2c3 = "/i2c@7000c500";
+               i2c4 = "/i2c@7000c700";
+               i2c5 = "/i2c@7000d100";
+               rtc0 = "/i2c@0,7000d000/pmic@40";
+               rtc1 = "/rtc@0,7000e000";
+               sdhci0 = "/sdhci@700b0600";
+               sdhci1 = "/sdhci@700b0400";
+               spi0 = "/spi@7000d400";
+               spi1 = "/spi@7000da00";
+               usb0 = "/usb@7d000000";
+               usb1 = "/usb@7d008000";
+       };
+
+       memory {
+               reg = <0x80000000 0x80000000>;
+       };
+
+       serial@70006000 {
+               /* Debug connector on the bottom of the board near SD card. */
+               status = "okay";
+       };
+
+       pwm@7000a000 {
+               status = "okay";
+       };
+
+       i2c@7000c000 {
+               status = "okay";
+               clock-frequency = <100000>;
+
+               acodec: audio-codec@10 {
+                       compatible = "maxim,max98090";
+                       reg = <0x10>;
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
+               };
+
+               temperature-sensor@4c {
+                       compatible = "ti,tmp451";
+                       reg = <0x4c>;
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
+
+                       #thermal-sensor-cells = <1>;
+               };
+       };
+
+       i2c@7000c400 {
+               status = "okay";
+               clock-frequency = <100000>;
+       };
+
+       i2c@7000c500 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               tpm@20 {
+                       compatible = "infineon,slb9645tt";
+                       reg = <0x20>;
+               };
+       };
+
+       hdmi_ddc: i2c@7000c700 {
+               status = "okay";
+               clock-frequency = <100000>;
+       };
+
+       i2c@7000d000 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               pmic: pmic@40 {
+                       compatible = "ams,as3722";
+                       reg = <0x40>;
+                       interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
+
+                       ams,system-power-controller;
+
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&as3722_default>;
+
+                       as3722_default: pinmux {
+                               gpio0 {
+                                       pins = "gpio0";
+                                       function = "gpio";
+                                       bias-pull-down;
+                               };
+
+                               gpio1 {
+                                       pins = "gpio1";
+                                       function = "gpio";
+                                       bias-pull-up;
+                               };
+
+                               gpio2_4_7 {
+                                       pins = "gpio2", "gpio4", "gpio7";
+                                       function = "gpio";
+                                       bias-pull-up;
+                               };
+
+                               gpio3_6 {
+                                       pins = "gpio3", "gpio6";
+                                       bias-high-impedance;
+                               };
+
+                               gpio5 {
+                                       pins = "gpio5";
+                                       function = "clk32k-out";
+                                       bias-pull-down;
+                               };
+                       };
+               };
+       };
+
+       spi@7000d400 {
+               status = "okay";
+
+               cros_ec: cros-ec@0 {
+                       compatible = "google,cros-ec-spi";
+                       spi-max-frequency = <3000000>;
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
+                       reg = <0>;
+
+                       google,cros-ec-spi-msg-delay = <2000>;
+
+                       i2c-tunnel {
+                               compatible = "google,cros-ec-i2c-tunnel";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               google,remote-bus = <0>;
+
+                               charger: bq24735@9 {
+                                       compatible = "ti,bq24735";
+                                       reg = <0x9>;
+                                       interrupt-parent = <&gpio>;
+                                       interrupts = <TEGRA_GPIO(J, 0)
+                                                       GPIO_ACTIVE_HIGH>;
+                                       ti,ac-detect-gpios = <&gpio
+                                                       TEGRA_GPIO(J, 0)
+                                                       GPIO_ACTIVE_HIGH>;
+                               };
+
+                               battery: sbs-battery@b {
+                                       compatible = "sbs,sbs-battery";
+                                       reg = <0xb>;
+                                       sbs,i2c-retry-count = <2>;
+                                       sbs,poll-retry-count = <10>;
+                                       power-supplies = <&charger>;
+                               };
+                       };
+               };
+       };
+
+       spi@7000da00 {
+               status = "okay";
+               spi-max-frequency = <25000000>;
+
+               flash@0 {
+                       compatible = "winbond,w25q32dw";
+                       reg = <0>;
+               };
+       };
+
+       pmc@7000e400 {
+               nvidia,invert-interrupt;
+               nvidia,suspend-mode = <0>;
+               nvidia,cpu-pwr-good-time = <500>;
+               nvidia,cpu-pwr-off-time = <300>;
+               nvidia,core-pwr-good-time = <641 3845>;
+               nvidia,core-pwr-off-time = <61036>;
+               nvidia,core-power-req-active-high;
+               nvidia,sys-clock-req-active-high;
+       };
+
+       hda@70030000 {
+               status = "okay";
+       };
+
+       sdhci@700b0000 { /* WiFi/BT on this bus */
+               status = "okay";
+               power-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_HIGH>;
+               bus-width = <4>;
+               no-1-8-v;
+               non-removable;
+       };
+
+       sdhci@700b0400 { /* SD Card on this bus */
+               status = "okay";
+               cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
+               power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
+               wp-gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
+               bus-width = <4>;
+               no-1-8-v;
+       };
+
+       sdhci@700b0600 { /* eMMC on this bus */
+               status = "okay";
+               bus-width = <8>;
+               no-1-8-v;
+               non-removable;
+       };
+
+       ahub@70300000 {
+               i2s@70301100 {
+                       status = "okay";
+               };
+       };
+
+       usb@7d000000 { /* Rear external USB port. */
+               status = "okay";
+       };
+
+       usb-phy@7d000000 {
+               status = "okay";
+       };
+
+       usb@7d004000 { /* Internal webcam. */
+               status = "okay";
+       };
+
+       usb-phy@7d004000 {
+               status = "okay";
+       };
+
+       usb@7d008000 { /* Left external USB port. */
+               status = "okay";
+       };
+
+       usb-phy@7d008000 {
+               status = "okay";
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+
+               enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
+               pwms = <&pwm 1 1000000>;
+
+               default-brightness-level = <224>;
+               brightness-levels =
+                       <  0   1   2   3   4   5   6   7
+                          8   9  10  11  12  13  14  15
+                         16  17  18  19  20  21  22  23
+                         24  25  26  27  28  29  30  31
+                         32  33  34  35  36  37  38  39
+                         40  41  42  43  44  45  46  47
+                         48  49  50  51  52  53  54  55
+                         56  57  58  59  60  61  62  63
+                         64  65  66  67  68  69  70  71
+                         72  73  74  75  76  77  78  79
+                         80  81  82  83  84  85  86  87
+                         88  89  90  91  92  93  94  95
+                         96  97  98  99 100 101 102 103
+                        104 105 106 107 108 109 110 111
+                        112 113 114 115 116 117 118 119
+                        120 121 122 123 124 125 126 127
+                        128 129 130 131 132 133 134 135
+                        136 137 138 139 140 141 142 143
+                        144 145 146 147 148 149 150 151
+                        152 153 154 155 156 157 158 159
+                        160 161 162 163 164 165 166 167
+                        168 169 170 171 172 173 174 175
+                        176 177 178 179 180 181 182 183
+                        184 185 186 187 188 189 190 191
+                        192 193 194 195 196 197 198 199
+                        200 201 202 203 204 205 206 207
+                        208 209 210 211 212 213 214 215
+                        216 217 218 219 220 221 222 223
+                        224 225 226 227 228 229 230 231
+                        232 233 234 235 236 237 238 239
+                        240 241 242 243 244 245 246 247
+                        248 249 250 251 252 253 254 255
+                        256>;
+       };
+
+       clocks {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               clk32k_in: clock@0 {
+                       compatible = "fixed-clock";
+                       reg = <0>;
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               lid {
+                       label = "Lid";
+                       gpios = <&gpio TEGRA_GPIO(R, 4) GPIO_ACTIVE_LOW>;
+                       linux,input-type = <5>;
+                       linux,code = <KEY_RESERVED>;
+                       debounce-interval = <1>;
+                       gpio-key,wakeup;
+               };
+
+               power {
+                       label = "Power";
+                       gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <30>;
+                       gpio-key,wakeup;
+               };
+       };
+
+       panel: panel {
+               compatible = "auo,b133xtn01";
+
+               backlight = <&backlight>;
+       };
+
+       sound {
+               compatible = "nvidia,tegra-audio-max98090-nyan-big",
+                            "nvidia,tegra-audio-max98090";
+               nvidia,model = "Acer Chromebook 13";
+
+               nvidia,audio-routing =
+                       "Headphones", "HPR",
+                       "Headphones", "HPL",
+                       "Speakers", "SPKR",
+                       "Speakers", "SPKL",
+                       "Mic Jack", "MICBIAS",
+                       "DMICL", "Int Mic",
+                       "DMICR", "Int Mic",
+                       "IN34", "Mic Jack";
+
+               nvidia,i2s-controller = <&tegra_i2s1>;
+               nvidia,audio-codec = <&acodec>;
+
+               clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
+                        <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
+                        <&tegra_car TEGRA124_CLK_EXTERN1>;
+               clock-names = "pll_a", "pll_a_out0", "mclk";
+
+               nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(I, 7) GPIO_ACTIVE_HIGH>;
+       };
+};
+
+#include "cros-ec-keyboard.dtsi"
index 3288f28daeb069fb9584451aec5449e1fdf6cf5b..9fa141d8fe783fe42eeb538ec1cfb354f346800a 100644 (file)
@@ -1,11 +1,92 @@
 #include <dt-bindings/clock/tegra124-car.h>
 #include <dt-bindings/gpio/tegra-gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-tegra.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
 
 #include "skeleton.dtsi"
 
 / {
        compatible = "nvidia,tegra124";
+       interrupt-parent = <&gic>;
+
+       pcie-controller@01003000 {
+               compatible = "nvidia,tegra124-pcie";
+               device_type = "pci";
+               reg = <0x01003000 0x00000800   /* PADS registers */
+                      0x01003800 0x00000800   /* AFI registers */
+                      0x02000000 0x10000000>; /* configuration space */
+               reg-names = "pads", "afi", "cs";
+               interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
+                            <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
+               interrupt-names = "intr", "msi";
+
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+
+               bus-range = <0x00 0xff>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+
+               ranges = <0x82000000 0 0x01000000 0x01000000 0 0x00001000   /* port 0 configuration space */
+                         0x82000000 0 0x01001000 0x01001000 0 0x00001000   /* port 1 configuration space */
+                         0x81000000 0 0x0        0x12000000 0 0x00010000   /* downstream I/O (64 KiB) */
+                         0x82000000 0 0x13000000 0x13000000 0 0x0d000000   /* non-prefetchable memory (208 MiB) */
+                         0xc2000000 0 0x20000000 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */
+
+               clocks = <&tegra_car TEGRA124_CLK_PCIE>,
+                        <&tegra_car TEGRA124_CLK_AFI>,
+                        <&tegra_car TEGRA124_CLK_PLL_E>,
+                        <&tegra_car TEGRA124_CLK_CML0>;
+               clock-names = "pex", "afi", "pll_e", "cml";
+               resets = <&tegra_car 70>,
+                        <&tegra_car 72>,
+                        <&tegra_car 74>;
+               reset-names = "pex", "afi", "pcie_x";
+               status = "disabled";
+
+               phys = <&padctl TEGRA_XUSB_PADCTL_PCIE>;
+               phy-names = "pcie";
+
+               pci@1,0 {
+                       device_type = "pci";
+                       assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>;
+                       reg = <0x000800 0 0 0 0>;
+                       status = "disabled";
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       nvidia,num-lanes = <2>;
+               };
+
+               pci@2,0 {
+                       device_type = "pci";
+                       assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>;
+                       reg = <0x001000 0 0 0 0>;
+                       status = "disabled";
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       nvidia,num-lanes = <1>;
+               };
+       };
+
+       gic: interrupt-controller@50041000 {
+               compatible = "arm,cortex-a15-gic";
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               reg = <0x50041000 0x1000>,
+                     <0x50042000 0x2000>,
+                     <0x50044000 0x2000>,
+                     <0x50046000 0x2000>;
+               interrupts = <GIC_PPI 9
+                       (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
 
        tegra_car: clock@60006000 {
                compatible = "nvidia,tegra124-car";
                status = "disabled";
        };
 
+       pwm: pwm@7000a000 {
+               compatible = "nvidia,tegra124-pwm", "nvidia,tegra20-pwm";
+               reg = <0x7000a000 0x100>;
+               #pwm-cells = <2>;
+               clocks = <&tegra_car TEGRA124_CLK_PWM>;
+               resets = <&tegra_car 17>;
+               reset-names = "pwm";
+               status = "disabled";
+       };
+
        spi@7000d400 {
                compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
                reg = <0x7000d400 0x200>;
                clocks = <&tegra_car 105>;
        };
 
+       padctl: padctl@7009f000 {
+               compatible = "nvidia,tegra124-xusb-padctl";
+               reg = <0x7009f000 0x1000>;
+               resets = <&tegra_car 142>;
+               reset-names = "padctl";
+
+               #phy-cells = <1>;
+       };
+
        sdhci@700b0000 {
                compatible = "nvidia,tegra124-sdhci";
                reg = <0x700b0000 0x200>;
                status = "disabled";
        };
 
+       ahub@70300000 {
+               compatible = "nvidia,tegra124-ahub";
+               reg = <0x70300000 0x200>,
+                     <0x70300800 0x800>,
+                     <0x70300200 0x600>;
+               interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&tegra_car TEGRA124_CLK_D_AUDIO>,
+                        <&tegra_car TEGRA124_CLK_APBIF>;
+               clock-names = "d_audio", "apbif";
+               resets = <&tegra_car 106>, /* d_audio */
+                        <&tegra_car 107>, /* apbif */
+                        <&tegra_car 30>,  /* i2s0 */
+                        <&tegra_car 11>,  /* i2s1 */
+                        <&tegra_car 18>,  /* i2s2 */
+                        <&tegra_car 101>, /* i2s3 */
+                        <&tegra_car 102>, /* i2s4 */
+                        <&tegra_car 108>, /* dam0 */
+                        <&tegra_car 109>, /* dam1 */
+                        <&tegra_car 110>, /* dam2 */
+                        <&tegra_car 10>,  /* spdif */
+                        <&tegra_car 153>, /* amx */
+                        <&tegra_car 185>, /* amx1 */
+                        <&tegra_car 154>, /* adx */
+                        <&tegra_car 180>, /* adx1 */
+                        <&tegra_car 186>, /* afc0 */
+                        <&tegra_car 187>, /* afc1 */
+                        <&tegra_car 188>, /* afc2 */
+                        <&tegra_car 189>, /* afc3 */
+                        <&tegra_car 190>, /* afc4 */
+                        <&tegra_car 191>; /* afc5 */
+               reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",
+                             "i2s3", "i2s4", "dam0", "dam1", "dam2",
+                             "spdif", "amx", "amx1", "adx", "adx1",
+                             "afc0", "afc1", "afc2", "afc3", "afc4", "afc5";
+               dmas = <&apbdma 1>, <&apbdma 1>,
+                      <&apbdma 2>, <&apbdma 2>,
+                      <&apbdma 3>, <&apbdma 3>,
+                      <&apbdma 4>, <&apbdma 4>,
+                      <&apbdma 6>, <&apbdma 6>,
+                      <&apbdma 7>, <&apbdma 7>,
+                      <&apbdma 12>, <&apbdma 12>,
+                      <&apbdma 13>, <&apbdma 13>,
+                      <&apbdma 14>, <&apbdma 14>,
+                      <&apbdma 29>, <&apbdma 29>;
+               dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2",
+                           "rx3", "tx3", "rx4", "tx4", "rx5", "tx5",
+                           "rx6", "tx6", "rx7", "tx7", "rx8", "tx8",
+                           "rx9", "tx9";
+               ranges;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               tegra_i2s0: i2s@70301000 {
+                       compatible = "nvidia,tegra124-i2s";
+                       reg = <0x70301000 0x100>;
+                       nvidia,ahub-cif-ids = <4 4>;
+                       clocks = <&tegra_car TEGRA124_CLK_I2S0>;
+                       resets = <&tegra_car 30>;
+                       reset-names = "i2s";
+                       status = "disabled";
+               };
+
+               tegra_i2s1: i2s@70301100 {
+                       compatible = "nvidia,tegra124-i2s";
+                       reg = <0x70301100 0x100>;
+                       nvidia,ahub-cif-ids = <5 5>;
+                       clocks = <&tegra_car TEGRA124_CLK_I2S1>;
+                       resets = <&tegra_car 11>;
+                       reset-names = "i2s";
+                       status = "disabled";
+               };
+
+               tegra_i2s2: i2s@70301200 {
+                       compatible = "nvidia,tegra124-i2s";
+                       reg = <0x70301200 0x100>;
+                       nvidia,ahub-cif-ids = <6 6>;
+                       clocks = <&tegra_car TEGRA124_CLK_I2S2>;
+                       resets = <&tegra_car 18>;
+                       reset-names = "i2s";
+                       status = "disabled";
+               };
+
+               tegra_i2s3: i2s@70301300 {
+                       compatible = "nvidia,tegra124-i2s";
+                       reg = <0x70301300 0x100>;
+                       nvidia,ahub-cif-ids = <7 7>;
+                       clocks = <&tegra_car TEGRA124_CLK_I2S3>;
+                       resets = <&tegra_car 101>;
+                       reset-names = "i2s";
+                       status = "disabled";
+               };
+
+               tegra_i2s4: i2s@70301400 {
+                       compatible = "nvidia,tegra124-i2s";
+                       reg = <0x70301400 0x100>;
+                       nvidia,ahub-cif-ids = <8 8>;
+                       clocks = <&tegra_car TEGRA124_CLK_I2S4>;
+                       resets = <&tegra_car 102>;
+                       reset-names = "i2s";
+                       status = "disabled";
+               };
+       };
+
        usb@7d000000 {
                compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
                reg = <0x7d000000 0x4000>;
index 74e8a16280bd85afa150c77ef52861e734272d46..1637cbd58e32ec4e6f7a4eaf526b348d2fc64f45 100644 (file)
                status = "disabled";
        };
 
+       pcie-controller@80003000 {
+               status = "okay";
+
+               avdd-pex-supply = <&pci_vdd_reg>;
+               vdd-pex-supply = <&pci_vdd_reg>;
+               avdd-pex-pll-supply = <&pci_vdd_reg>;
+               avdd-plle-supply = <&pci_vdd_reg>;
+               vddio-pex-clk-supply = <&pci_clk_reg>;
+
+               pci@1,0 {
+                       status = "okay";
+               };
+       };
+
        usb@c5000000 {
                nvidia,vbus-gpio = <&gpio 170 0>; /* PV2 */
        };
                wp-gpios = <&gpio 122 0>; /* gpio PP2 */
                bus-width = <4>;
        };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               hdmi_vdd_reg: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "avdd_hdmi";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+
+               hdmi_pll_reg: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "avdd_hdmi_pll";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-always-on;
+               };
+
+               vbus_reg: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "usb1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(V, 2) 0>;
+                       regulator-always-on;
+                       regulator-boot-on;
+               };
+
+               pci_clk_reg: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "pci_clk";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+
+               pci_vdd_reg: regulator@4 {
+                       compatible = "regulator-fixed";
+                       reg = <4>;
+                       regulator-name = "pci_vdd";
+                       regulator-min-microvolt = <1050000>;
+                       regulator-max-microvolt = <1050000>;
+                       regulator-always-on;
+               };
+       };
+
 };
index 5f927f7e0d4e165babc6b0972140f196a025c60b..b8c8a923017e081dc43f5f8ba7c0b9a70088b059 100644 (file)
                reg = <0x7000f400 0x200>;
        };
 
+       pcie-controller@80003000 {
+               compatible = "nvidia,tegra20-pcie";
+               device_type = "pci";
+               reg = <0x80003000 0x00000800   /* PADS registers */
+                      0x80003800 0x00000200   /* AFI registers */
+                      0x90000000 0x10000000>; /* configuration space */
+               reg-names = "pads", "afi", "cs";
+               interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH   /* controller interrupt */
+                             GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
+               interrupt-names = "intr", "msi";
+
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+
+               bus-range = <0x00 0xff>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+
+               ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000   /* port 0 registers */
+                         0x82000000 0 0x80001000 0x80001000 0 0x00001000   /* port 1 registers */
+                         0x81000000 0 0          0x82000000 0 0x00010000   /* downstream I/O */
+                         0x82000000 0 0xa0000000 0xa0000000 0 0x08000000   /* non-prefetchable memory */
+                         0xc2000000 0 0xa8000000 0xa8000000 0 0x18000000>; /* prefetchable memory */
+
+               clocks = <&tegra_car TEGRA20_CLK_PEX>,
+                        <&tegra_car TEGRA20_CLK_AFI>,
+                        <&tegra_car TEGRA20_CLK_PCIE_XCLK>,
+                        <&tegra_car TEGRA20_CLK_PLL_E>;
+               clock-names = "pex", "afi", "pcie_xclk", "pll_e";
+               status = "disabled";
+
+               pci@1,0 {
+                       device_type = "pci";
+                       assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>;
+                       reg = <0x000800 0 0 0 0>;
+                       status = "disabled";
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       nvidia,num-lanes = <2>;
+               };
+
+               pci@2,0 {
+                       device_type = "pci";
+                       assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>;
+                       reg = <0x001000 0 0 0 0>;
+                       status = "disabled";
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       nvidia,num-lanes = <2>;
+               };
+       };
+
        usb@c5000000 {
                compatible = "nvidia,tegra20-ehci", "usb-ehci";
                reg = <0xc5000000 0x4000>;
index 9acd84d80296fa367f6e1196051cf9f9b200497c..5903af68384b80f6c0f8373a6e3a1b8b420e69fa 100644 (file)
                reg = <0x80000000 0x7ff00000>;
        };
 
+       pcie-controller@00003000 {
+               status = "okay";
+
+               avdd-pexa-supply = <&ldo1_reg>;
+               vdd-pexa-supply = <&ldo1_reg>;
+               avdd-pexb-supply = <&ldo1_reg>;
+               vdd-pexb-supply = <&ldo1_reg>;
+               avdd-pex-pll-supply = <&ldo1_reg>;
+               avdd-plle-supply = <&ldo1_reg>;
+               vddio-pex-ctl-supply = <&sys_3v3_reg>;
+               hvdd-pex-supply = <&sys_3v3_pexs_reg>;
+
+               pci@1,0 {
+                       status = "okay";
+                       nvidia,num-lanes = <2>;
+               };
+
+               pci@2,0 {
+                       nvidia,num-lanes = <2>;
+               };
+
+               pci@3,0 {
+                       status = "okay";
+                       nvidia,num-lanes = <2>;
+               };
+       };
+
        i2c@7000c000 {
                status = "okay";
                clock-frequency = <100000>;
        i2c@7000d000 {
                status = "okay";
                clock-frequency = <100000>;
+
+               pmic: tps65911@2d {
+                       compatible = "ti,tps65911";
+                       reg = <0x2d>;
+
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+
+                       ti,system-power-controller;
+
+                       #gpio-cells = <2>;
+                       gpio-controller;
+
+                       vcc1-supply = <&vdd_5v_in_reg>;
+                       vcc2-supply = <&vdd_5v_in_reg>;
+                       vcc3-supply = <&vio_reg>;
+                       vcc4-supply = <&vdd_5v_in_reg>;
+                       vcc5-supply = <&vdd_5v_in_reg>;
+                       vcc6-supply = <&vdd2_reg>;
+                       vcc7-supply = <&vdd_5v_in_reg>;
+                       vccio-supply = <&vdd_5v_in_reg>;
+
+                       regulators {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               vdd1_reg: vdd1 {
+                                       regulator-name = "vddio_ddr_1v2";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               vdd2_reg: vdd2 {
+                                       regulator-name = "vdd_1v5_gen";
+                                       regulator-min-microvolt = <1500000>;
+                                       regulator-max-microvolt = <1500000>;
+                                       regulator-always-on;
+                               };
+
+                               vddctrl_reg: vddctrl {
+                                       regulator-name = "vdd_cpu,vdd_sys";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                                       regulator-always-on;
+                               };
+
+                               vio_reg: vio {
+                                       regulator-name = "vdd_1v8_gen";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo1_reg: ldo1 {
+                                       regulator-name = "vdd_pexa,vdd_pexb";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                               };
+
+                               ldo2_reg: ldo2 {
+                                       regulator-name = "vdd_sata,avdd_plle";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                               };
+
+                               /* LDO3 is not connected to anything */
+
+                               ldo4_reg: ldo4 {
+                                       regulator-name = "vdd_rtc";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo5_reg: ldo5 {
+                                       regulator-name = "vddio_sdmmc,avdd_vdac";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo6_reg: ldo6 {
+                                       regulator-name = "avdd_dsi_csi,pwrdet_mipi";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               ldo7_reg: ldo7 {
+                                       regulator-name = "vdd_pllm,x,u,a_p_c_s";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo8_reg: ldo8 {
+                                       regulator-name = "vdd_ddr_hs";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                                       regulator-always-on;
+                               };
+                       };
+               };
        };
 
        spi@7000da00 {
                nvidia,vbus-gpio = <&gpio 236 0>; /* PDD4 */
                status = "okay";
        };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdd_5v_in_reg: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "vdd_5v_in";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-always-on;
+               };
+
+               chargepump_5v_reg: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "chargepump_5v";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+                       enable-active-high;
+                       gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               ddr_reg: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "vdd_ddr";
+                       regulator-min-microvolt = <1500000>;
+                       regulator-max-microvolt = <1500000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&pmic 7 GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&vdd_5v_in_reg>;
+               };
+
+               vdd_5v_sata_reg: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "vdd_5v_sata";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(D, 6) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&vdd_5v_in_reg>;
+               };
+
+               usb1_vbus_reg: regulator@4 {
+                       compatible = "regulator-fixed";
+                       reg = <4>;
+                       regulator-name = "usb1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(DD, 6) GPIO_ACTIVE_HIGH>;
+                       gpio-open-drain;
+                       vin-supply = <&vdd_5v_in_reg>;
+               };
+
+               usb3_vbus_reg: regulator@5 {
+                       compatible = "regulator-fixed";
+                       reg = <5>;
+                       regulator-name = "usb3_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(DD, 4) GPIO_ACTIVE_HIGH>;
+                       gpio-open-drain;
+                       vin-supply = <&vdd_5v_in_reg>;
+               };
+
+               sys_3v3_reg: regulator@6 {
+                       compatible = "regulator-fixed";
+                       reg = <6>;
+                       regulator-name = "sys_3v3,vdd_3v3_alw";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&pmic 6 GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&vdd_5v_in_reg>;
+               };
+
+               sys_3v3_pexs_reg: regulator@7 {
+                       compatible = "regulator-fixed";
+                       reg = <7>;
+                       regulator-name = "sys_3v3_pexs";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(L, 7) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_5v0_hdmi: regulator@8 {
+                       compatible = "regulator-fixed";
+                       reg = <8>;
+                       regulator-name = "+VDD_5V_HDMI";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+       };
 };
index 1b8ed737e049707f0cec91f491bdb2e84e3099f0..e13d0fb467137766fcfe5677ca1cf64d889a82de 100644 (file)
                reg = <0x80000000 0x40000000>;
        };
 
+       pcie-controller@00003000 {
+               status = "okay";
+
+               /* AVDD_PEXA and VDD_PEXA inputs are grounded on Cardhu. */
+               avdd-pexb-supply = <&ldo1_reg>;
+               vdd-pexb-supply = <&ldo1_reg>;
+               avdd-pex-pll-supply = <&ldo1_reg>;
+               hvdd-pex-supply = <&pex_hvdd_3v3_reg>;
+               vddio-pex-ctl-supply = <&sys_3v3_reg>;
+               avdd-plle-supply = <&ldo2_reg>;
+
+               pci@1,0 {
+                       nvidia,num-lanes = <4>;
+               };
+
+               pci@2,0 {
+                       nvidia,num-lanes = <1>;
+               };
+
+               pci@3,0 {
+                       status = "okay";
+                       nvidia,num-lanes = <1>;
+               };
+       };
+
        i2c@7000c000 {
                status = "okay";
                clock-frequency = <100000>;
        i2c@7000d000 {
                status = "okay";
                clock-frequency = <100000>;
+
+               pmic: tps65911@2d {
+                       compatible = "ti,tps65911";
+                       reg = <0x2d>;
+
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+
+                       ti,system-power-controller;
+
+                       #gpio-cells = <2>;
+                       gpio-controller;
+
+                       vcc1-supply = <&vdd_ac_bat_reg>;
+                       vcc2-supply = <&vdd_ac_bat_reg>;
+                       vcc3-supply = <&vio_reg>;
+                       vcc4-supply = <&vdd_5v0_reg>;
+                       vcc5-supply = <&vdd_ac_bat_reg>;
+                       vcc6-supply = <&vdd2_reg>;
+                       vcc7-supply = <&vdd_ac_bat_reg>;
+                       vccio-supply = <&vdd_ac_bat_reg>;
+
+                       regulators {
+                               vdd1_reg: vdd1 {
+                                       regulator-name = "vddio_ddr_1v2";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               vdd2_reg: vdd2 {
+                                       regulator-name = "vdd_1v5_gen";
+                                       regulator-min-microvolt = <1500000>;
+                                       regulator-max-microvolt = <1500000>;
+                                       regulator-always-on;
+                               };
+
+                               vddctrl_reg: vddctrl {
+                                       regulator-name = "vdd_cpu,vdd_sys";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                                       regulator-always-on;
+                               };
+
+                               vio_reg: vio {
+                                       regulator-name = "vdd_1v8_gen";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo1_reg: ldo1 {
+                                       regulator-name = "vdd_pexa,vdd_pexb";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                               };
+
+                               ldo2_reg: ldo2 {
+                                       regulator-name = "vdd_sata,avdd_plle";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                               };
+
+                               /* LDO3 is not connected to anything */
+
+                               ldo4_reg: ldo4 {
+                                       regulator-name = "vdd_rtc";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo5_reg: ldo5 {
+                                       regulator-name = "vddio_sdmmc,avdd_vdac";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo6_reg: ldo6 {
+                                       regulator-name = "avdd_dsi_csi,pwrdet_mipi";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               ldo7_reg: ldo7 {
+                                       regulator-name = "vdd_pllm,x,u,a_p_c_s";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo8_reg: ldo8 {
+                                       regulator-name = "vdd_ddr_hs";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                                       regulator-always-on;
+                               };
+                       };
+               };
        };
 
        spi@7000da00 {
                nvidia,vbus-gpio = <&gpio 236 0>;       /* PDD4 */
                status = "okay";
        };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdd_ac_bat_reg: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "vdd_ac_bat";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-always-on;
+               };
+
+               cam_1v8_reg: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "cam_1v8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(BB, 4) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&vio_reg>;
+               };
+
+               cp_5v_reg: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "cp_5v";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+                       enable-active-high;
+                       gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               emmc_3v3_reg: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "emmc_3v3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(D, 1) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               modem_3v3_reg: regulator@4 {
+                       compatible = "regulator-fixed";
+                       reg = <4>;
+                       regulator-name = "modem_3v3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(D, 6) GPIO_ACTIVE_HIGH>;
+               };
+
+               pex_hvdd_3v3_reg: regulator@5 {
+                       compatible = "regulator-fixed";
+                       reg = <5>;
+                       regulator-name = "pex_hvdd_3v3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(L, 7) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_cam1_ldo_reg: regulator@6 {
+                       compatible = "regulator-fixed";
+                       reg = <6>;
+                       regulator-name = "vdd_cam1_ldo";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(R, 6) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_cam2_ldo_reg: regulator@7 {
+                       compatible = "regulator-fixed";
+                       reg = <7>;
+                       regulator-name = "vdd_cam2_ldo";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_cam3_ldo_reg: regulator@8 {
+                       compatible = "regulator-fixed";
+                       reg = <8>;
+                       regulator-name = "vdd_cam3_ldo";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(S, 0) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_com_reg: regulator@9 {
+                       compatible = "regulator-fixed";
+                       reg = <9>;
+                       regulator-name = "vdd_com";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_fuse_3v3_reg: regulator@10 {
+                       compatible = "regulator-fixed";
+                       reg = <10>;
+                       regulator-name = "vdd_fuse_3v3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(L, 6) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_pnl1_reg: regulator@11 {
+                       compatible = "regulator-fixed";
+                       reg = <11>;
+                       regulator-name = "vdd_pnl1";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(L, 4) GPIO_ACTIVE_HIGH>;
+                       vin-supply = <&sys_3v3_reg>;
+               };
+
+               vdd_vid_reg: regulator@12 {
+                       compatible = "regulator-fixed";
+                       reg = <12>;
+                       regulator-name = "vddio_vid";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(T, 0) GPIO_ACTIVE_HIGH>;
+                       gpio-open-drain;
+                       vin-supply = <&vdd_5v0_reg>;
+               };
+
+               ddr_reg: regulator@100 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "ddr";
+                       reg = <100>;
+                       regulator-min-microvolt = <1500000>;
+                       regulator-max-microvolt = <1500000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&pmic 7 GPIO_ACTIVE_HIGH>;
+               };
+
+               sys_3v3_reg: regulator@101 {
+                       compatible = "regulator-fixed";
+                       reg = <101>;
+                       regulator-name = "sys_3v3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&pmic 6 GPIO_ACTIVE_HIGH>;
+               };
+
+               usb1_vbus_reg: regulator@102 {
+                       compatible = "regulator-fixed";
+                       reg = <102>;
+                       regulator-name = "usb1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(DD, 6) GPIO_ACTIVE_HIGH>;
+                       gpio-open-drain;
+                       vin-supply = <&vdd_5v0_reg>;
+               };
+
+               usb3_vbus_reg: regulator@103 {
+                       compatible = "regulator-fixed";
+                       reg = <103>;
+                       regulator-name = "usb3_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(DD, 4) GPIO_ACTIVE_HIGH>;
+                       gpio-open-drain;
+                       vin-supply = <&vdd_5v0_reg>;
+               };
+
+               vdd_5v0_reg: regulator@104 {
+                       compatible = "regulator-fixed";
+                       reg = <104>;
+                       regulator-name = "5v0";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       gpio = <&pmic 8 GPIO_ACTIVE_HIGH>;
+               };
+
+               vdd_bl_reg: regulator@105 {
+                       compatible = "regulator-fixed";
+                       reg = <105>;
+                       regulator-name = "vdd_bl";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(DD, 2) GPIO_ACTIVE_HIGH>;
+               };
+
+               vdd_bl2_reg: regulator@106 {
+                       compatible = "regulator-fixed";
+                       reg = <106>;
+                       regulator-name = "vdd_bl2";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       enable-active-high;
+                       gpio = <&gpio TEGRA_GPIO(DD, 0) GPIO_ACTIVE_HIGH>;
+               };
+       };
 };
index 572520a00ec5e330d5bbacd4b187967d45db8ec8..37b6abd52f05480018af45c46458b56aa4fd664f 100644 (file)
                reg = <0x80000000 0x40000000>;
        };
 
-       /* GEN1_I2C: I2C_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier
-          board) */
+       /*
+        * GEN1_I2C: I2C_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier
+        * board)
+        */
        i2c@7000c000 {
                status = "okay";
                clock-frequency = <100000>;
                clock-frequency = <100000>;
        };
 
-       /* PWR_I2C: power I2C to audio codec, PMIC, temperature sensor and
-          touch screen controller */
+       /*
+        * PWR_I2C: power I2C to audio codec, PMIC, temperature sensor and
+        * touch screen controller
+        */
        i2c@7000d000 {
                status = "okay";
                clock-frequency = <100000>;
index 8a69e818ca35166571c0588232a29732f0410d3d..e924acc35c93f2e6c8df318d0b3a672ce97ee35c 100644 (file)
@@ -6,6 +6,10 @@
        model = "Avionic Design Tamonten™ NG Evaluation Carrier";
        compatible = "ad,tec-ng", "nvidia,tegra30";
 
+       aliases {
+               i2c0 = "/i2c@7000c400";
+       };
+
        /* GEN2 */
        i2c@7000c400 {
                status = "okay";
index fb92a0fef96e0e5c4cfdf5c6f22de68af93ef33c..5ea7e347f3fad4c8acfc6ffc58432659e8093577 100644 (file)
@@ -6,6 +6,89 @@
 
 / {
        compatible = "nvidia,tegra30";
+       interrupt-parent = <&intc>;
+
+       intc: interrupt-controller@50041000 {
+               compatible = "arm,cortex-a9-gic";
+               reg = <0x50041000 0x1000
+                      0x50040100 0x0100>;
+               interrupt-controller;
+               #interrupt-cells = <3>;
+       };
+
+       pcie-controller@00003000 {
+               compatible = "nvidia,tegra30-pcie";
+               device_type = "pci";
+               reg = <0x00003000 0x00000800   /* PADS registers */
+                      0x00003800 0x00000200   /* AFI registers */
+                      0x10000000 0x10000000>; /* configuration space */
+               reg-names = "pads", "afi", "cs";
+               interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH   /* controller interrupt */
+                             GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
+               interrupt-names = "intr", "msi";
+
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+
+               bus-range = <0x00 0xff>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+
+               ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000   /* port 0 configuration space */
+                         0x82000000 0 0x00001000 0x00001000 0 0x00001000   /* port 1 configuration space */
+                         0x82000000 0 0x00004000 0x00004000 0 0x00001000   /* port 2 configuration space */
+                         0x81000000 0 0          0x02000000 0 0x00010000   /* downstream I/O */
+                         0x82000000 0 0x20000000 0x20000000 0 0x10000000   /* non-prefetchable memory */
+                         0xc2000000 0 0x30000000 0x30000000 0 0x10000000>; /* prefetchable memory */
+
+               clocks = <&tegra_car TEGRA30_CLK_PCIE>,
+                        <&tegra_car TEGRA30_CLK_AFI>,
+                        <&tegra_car TEGRA30_CLK_PCIEX>,
+                        <&tegra_car TEGRA30_CLK_PLL_E>,
+                        <&tegra_car TEGRA30_CLK_CML0>;
+               clock-names = "pex", "afi", "pcie_xclk", "pll_e", "cml";
+               status = "disabled";
+
+               pci@1,0 {
+                       device_type = "pci";
+                       assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>;
+                       reg = <0x000800 0 0 0 0>;
+                       status = "disabled";
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       nvidia,num-lanes = <2>;
+               };
+
+               pci@2,0 {
+                       device_type = "pci";
+                       assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>;
+                       reg = <0x001000 0 0 0 0>;
+                       status = "disabled";
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       nvidia,num-lanes = <2>;
+               };
+
+               pci@3,0 {
+                       device_type = "pci";
+                       assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>;
+                       reg = <0x001800 0 0 0 0>;
+                       status = "disabled";
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       nvidia,num-lanes = <2>;
+               };
+       };
 
        tegra_car: clock {
                compatible = "nvidia,tegra30-car";
diff --git a/arch/arm/dts/uniphier-ph1-ld4-ref.dts b/arch/arm/dts/uniphier-ph1-ld4-ref.dts
new file mode 100644 (file)
index 0000000..6855878
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Device Tree Source for UniPhier PH1-LD4 Reference Board
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+/include/ "uniphier-ph1-ld4.dtsi"
+
+/ {
+       model = "Panasonic UniPhier PH1-LD4 Reference Board";
+       compatible = "panasonic,ph1-ld4-ref", "panasonic,ph1-ld4";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyPS0,115200 earlyprintk";
+               stdout-path = &uart0;
+       };
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       eeprom {
+               compatible = "i2c-eeprom";
+               reg = <0x50>;
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
diff --git a/arch/arm/dts/uniphier-ph1-ld4.dtsi b/arch/arm/dts/uniphier-ph1-ld4.dtsi
new file mode 100644 (file)
index 0000000..2a3dd73
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Device Tree Source for UniPhier PH1-LD4 SoC
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+       compatible = "panasonic,ph1-ld4";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <0>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               uart0: serial@54006800 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x20>;
+                       clock-frequency = <36864000>;
+               };
+
+               uart1: serial@54006900 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x20>;
+                       clock-frequency = <36864000>;
+               };
+
+               uart2: serial@54006a00 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x20>;
+                       clock-frequency = <36864000>;
+               };
+
+               uart3: serial@54006b00 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x20>;
+                       clock-frequency = <36864000>;
+               };
+
+               i2c0: i2c@58400000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58400000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@58480000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58480000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@58500000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58500000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@58580000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58580000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               usb0: usb@5a800100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+               };
+
+               usb1: usb@5a810100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+               };
+
+               usb2: usb@5a820100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a820100 0x100>;
+               };
+
+               nand: nand@68000000 {
+                       compatible = "denali,denali-nand-dt";
+                       reg = <0x68000000 0x20>, <0x68100000 0x1000>;
+                       reg-names = "nand_data", "denali_reg";
+               };
+       };
+};
diff --git a/arch/arm/dts/uniphier-ph1-pro4-ref.dts b/arch/arm/dts/uniphier-ph1-pro4-ref.dts
new file mode 100644 (file)
index 0000000..1227b62
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Device Tree Source for UniPhier PH1-Pro4 Reference Board
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+/include/ "uniphier-ph1-pro4.dtsi"
+
+/ {
+       model = "Panasonic UniPhier PH1-Pro4 Reference Board";
+       compatible = "panasonic,ph1-pro4-ref", "panasonic,ph1-pro4";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyPS0,115200 earlyprintk";
+               stdout-path = &uart0;
+       };
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       eeprom {
+               compatible = "i2c-eeprom";
+               reg = <0x50>;
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
diff --git a/arch/arm/dts/uniphier-ph1-pro4.dtsi b/arch/arm/dts/uniphier-ph1-pro4.dtsi
new file mode 100644 (file)
index 0000000..49e375e
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Device Tree Source for UniPhier PH1-Pro4 SoC
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+       compatible = "panasonic,ph1-pro4";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <0>;
+               };
+
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <1>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               uart0: serial@54006800 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x20>;
+                       clock-frequency = <73728000>;
+               };
+
+               uart1: serial@54006900 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x20>;
+                       clock-frequency = <73728000>;
+               };
+
+               uart2: serial@54006a00 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x20>;
+                       clock-frequency = <73728000>;
+               };
+
+               uart3: serial@54006b00 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x20>;
+                       clock-frequency = <73728000>;
+               };
+
+               i2c0: i2c@58780000 {
+                       compatible = "panasonic,uniphier-fi2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58780000 0x80>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@58781000 {
+                       compatible = "panasonic,uniphier-fi2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58781000 0x80>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@58782000 {
+                       compatible = "panasonic,uniphier-fi2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58782000 0x80>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@58783000 {
+                       compatible = "panasonic,uniphier-fi2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58783000 0x80>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               /* i2c4 does not exist */
+
+               i2c5: i2c@58785000 {
+                       compatible = "panasonic,uniphier-fi2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58785000 0x80>;
+                       clock-frequency = <400000>;
+                       status = "ok";
+               };
+
+               i2c6: i2c@58786000 {
+                       compatible = "panasonic,uniphier-fi2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58786000 0x80>;
+                       clock-frequency = <400000>;
+                       status = "ok";
+               };
+
+               usb0: usb@5a800100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+               };
+
+               usb1: usb@5a810100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+               };
+
+               nand: nand@68000000 {
+                       compatible = "denali,denali-nand-dt";
+                       reg = <0x68000000 0x20>, <0x68100000 0x1000>;
+                       reg-names = "nand_data", "denali_reg";
+               };
+       };
+};
diff --git a/arch/arm/dts/uniphier-ph1-sld3-ref.dts b/arch/arm/dts/uniphier-ph1-sld3-ref.dts
new file mode 100644 (file)
index 0000000..fefc592
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Device Tree Source for UniPhier PH1-sLD3 Reference Board
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+/include/ "uniphier-ph1-sld3.dtsi"
+
+/ {
+       model = "Panasonic UniPhier PH1-sLD3 Reference Board";
+       compatible = "panasonic,ph1-sld3-ref", "panasonic,ph1-sld3";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyPS0,115200 earlyprintk";
+               stdout-path = &uart0;
+       };
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       eeprom {
+               compatible = "i2c-eeprom";
+               reg = <0x50>;
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
diff --git a/arch/arm/dts/uniphier-ph1-sld3.dtsi b/arch/arm/dts/uniphier-ph1-sld3.dtsi
new file mode 100644 (file)
index 0000000..f5529d2
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Device Tree Source for UniPhier PH1-sLD3 SoC
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+       compatible = "panasonic,ph1-sld3";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <0>;
+               };
+
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <1>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               uart0: serial@54006800 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x20>;
+                       clock-frequency = <36864000>;
+               };
+
+               uart1: serial@54006900 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x20>;
+                       clock-frequency = <36864000>;
+               };
+
+               uart2: serial@54006a00 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x20>;
+                       clock-frequency = <36864000>;
+               };
+
+               i2c0: i2c@58400000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58400000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@58480000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58480000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@58500000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58500000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@58580000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58580000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               usb0: usb@5a800100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+               };
+
+               usb1: usb@5a810100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+               };
+
+               usb2: usb@5a820100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a820100 0x100>;
+               };
+
+               usb3: usb@5a830100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a830100 0x100>;
+               };
+
+               nand: nand@f8000000 {
+                       compatible = "denali,denali-nand-dt";
+                       reg = <0xf8000000 0x20>, <0xf8100000 0x1000>;
+                       reg-names = "nand_data", "denali_reg";
+               };
+       };
+};
diff --git a/arch/arm/dts/uniphier-ph1-sld8-ref.dts b/arch/arm/dts/uniphier-ph1-sld8-ref.dts
new file mode 100644 (file)
index 0000000..9b6d95c
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Device Tree Source for UniPhier PH1-sLD8 Reference Board
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+/include/ "uniphier-ph1-sld8.dtsi"
+
+/ {
+       model = "Panasonic UniPhier PH1-sLD8 Reference Board";
+       compatible = "panasonic,ph1-sld8-ref", "panasonic,ph1-sld8";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyPS0,115200 earlyprintk";
+               stdout-path = &uart0;
+       };
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       eeprom {
+               compatible = "i2c-eeprom";
+               reg = <0x50>;
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
diff --git a/arch/arm/dts/uniphier-ph1-sld8.dtsi b/arch/arm/dts/uniphier-ph1-sld8.dtsi
new file mode 100644 (file)
index 0000000..0ea76e5
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Device Tree Source for UniPhier PH1-sLD8 SoC
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+       compatible = "panasonic,ph1-sld8";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <0>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               uart0: serial@54006800 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x20>;
+                       clock-frequency = <80000000>;
+               };
+
+               uart1: serial@54006900 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x20>;
+                       clock-frequency = <80000000>;
+               };
+
+               uart2: serial@54006a00 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x20>;
+                       clock-frequency = <80000000>;
+               };
+
+               uart3: serial@54006b00 {
+                       compatible = "panasonic,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x20>;
+                       clock-frequency = <80000000>;
+               };
+
+               i2c0: i2c@58400000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58400000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@58480000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58480000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@58500000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58500000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@58580000 {
+                       compatible = "panasonic,uniphier-i2c";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x58580000 0x40>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               usb0: usb@5a800100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+               };
+
+               usb1: usb@5a810100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+               };
+
+               usb2: usb@5a820100 {
+                       compatible = "panasonic,uniphier-ehci", "usb-ehci";
+                       status = "disabled";
+                       reg = <0x5a820100 0x100>;
+               };
+
+               nand: nand@68000000 {
+                       compatible = "denali,denali-nand-dt";
+                       reg = <0x68000000 0x20>, <0x68100000 0x1000>;
+                       reg-names = "nand_data", "denali_reg";
+               };
+       };
+};
diff --git a/arch/arm/dts/zynq-zybo.dts b/arch/arm/dts/zynq-zybo.dts
new file mode 100644 (file)
index 0000000..20e0386
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Digilent ZYBO board DTS
+ *
+ * Copyright (C) 2013 Xilinx, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+/dts-v1/;
+#include "zynq-7000.dtsi"
+
+/ {
+       model = "Zynq ZYBO Board";
+       compatible = "xlnx,zynq-zybo", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x20000000>;
+       };
+};
index 09fc22760d0c6e973359f121f92c63feed26793d..28ccd29594ed77976f45837039e40618e527a94f 100644 (file)
@@ -17,6 +17,8 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/crm_regs.h>
 #include <ipu_pixfmt.h>
+#include <thermal.h>
+#include <sata.h>
 
 #ifdef CONFIG_FSL_ESDHC
 #include <fsl_esdhc.h>
@@ -134,6 +136,11 @@ int print_cpuinfo(void)
 {
        u32 cpurev;
 
+#if defined(CONFIG_MX6) && defined(CONFIG_IMX6_THERMAL)
+       struct udevice *thermal_dev;
+       int cpu_tmp, ret;
+#endif
+
        cpurev = get_cpu_rev();
 
        printf("CPU:   Freescale i.MX%s rev%d.%d at %d MHz\n",
@@ -141,6 +148,21 @@ int print_cpuinfo(void)
                (cpurev & 0x000F0) >> 4,
                (cpurev & 0x0000F) >> 0,
                mxc_get_clock(MXC_ARM_CLK) / 1000000);
+
+#if defined(CONFIG_MX6) && defined(CONFIG_IMX6_THERMAL)
+       ret = uclass_get_device(UCLASS_THERMAL, 0, &thermal_dev);
+       if (!ret) {
+               ret = thermal_get_temp(thermal_dev, &cpu_tmp);
+
+               if (!ret)
+                       printf("CPU:   Temperature %d C\n", cpu_tmp);
+               else
+                       printf("CPU:   Temperature: invalid sensor data\n");
+       } else {
+               printf("CPU:   Temperature: Can't find sensor device\n");
+       }
+#endif
+
        printf("Reset cause: %s\n", get_reset_cause());
        return 0;
 }
@@ -180,10 +202,47 @@ u32 get_ahb_clk(void)
        return get_periph_clk() / (ahb_podf + 1);
 }
 
-#if defined(CONFIG_VIDEO_IPUV3)
 void arch_preboot_os(void)
 {
+#if defined(CONFIG_CMD_SATA)
+       sata_stop();
+#if defined(CONFIG_MX6)
+       disable_sata_clock();
+#endif
+#endif
+#if defined(CONFIG_VIDEO_IPUV3)
        /* disable video before launching O/S */
        ipuv3_fb_shutdown();
-}
 #endif
+}
+
+void set_chipselect_size(int const cs_size)
+{
+       unsigned int reg;
+       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       reg = readl(&iomuxc_regs->gpr[1]);
+
+       switch (cs_size) {
+       case CS0_128:
+               reg &= ~0x7;    /* CS0=128MB, CS1=0, CS2=0, CS3=0 */
+               reg |= 0x5;
+               break;
+       case CS0_64M_CS1_64M:
+               reg &= ~0x3F;   /* CS0=64MB, CS1=64MB, CS2=0, CS3=0 */
+               reg |= 0x1B;
+               break;
+       case CS0_64M_CS1_32M_CS2_32M:
+               reg &= ~0x1FF;  /* CS0=64MB, CS1=32MB, CS2=32MB, CS3=0 */
+               reg |= 0x4B;
+               break;
+       case CS0_32M_CS1_32M_CS2_32M_CS3_32M:
+               reg &= ~0xFFF;  /* CS0=32MB, CS1=32MB, CS2=32MB, CS3=32MB */
+               reg |= 0x249;
+               break;
+       default:
+               printf("Unknown chip select size: %d\n", cs_size);
+               break;
+       }
+
+       writel(reg, &iomuxc_regs->gpr[1]);
+}
index 34f53872e89b3d0674f9cff2227a8d10ea510c45..1a632e7203269726744c7cccb53f0e29e351672f 100644 (file)
@@ -73,26 +73,21 @@ static void * const i2c_bases[] = {
 int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
              struct i2c_pads_info *p)
 {
-       char *name1, *name2;
+       char name[9];
        int ret;
 
        if (i2c_index >= ARRAY_SIZE(i2c_bases))
                return -EINVAL;
 
-       name1 = malloc(9);
-       name2 = malloc(9);
-       if (!name1 || !name2)
-               return -ENOMEM;
-
-       sprintf(name1, "i2c_sda%d", i2c_index);
-       sprintf(name2, "i2c_scl%d", i2c_index);
-       ret = gpio_request(p->sda.gp, name1);
+       snprintf(name, sizeof(name), "i2c_sda%01d", i2c_index);
+       ret = gpio_request(p->sda.gp, name);
        if (ret)
-               goto err_req1;
+               return ret;
 
-       ret = gpio_request(p->scl.gp, name2);
+       snprintf(name, sizeof(name), "i2c_scl%01d", i2c_index);
+       ret = gpio_request(p->scl.gp, name);
        if (ret)
-               goto err_req2;
+               goto err_req;
 
        /* Enable i2c clock */
        ret = enable_i2c_clk(1, i2c_index);
@@ -112,11 +107,8 @@ int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
 err_idle:
 err_clk:
        gpio_free(p->scl.gp);
-err_req2:
+err_req:
        gpio_free(p->sda.gp);
-err_req1:
-       free(name1);
-       free(name2);
 
        return ret;
 }
index 22cd11aa04867c47c8d7356683889324d8ad6a25..e88e6e2a9881d0dcd00af5477453afe219ed79b1 100644 (file)
@@ -77,3 +77,18 @@ void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
                p += stride;
        }
 }
+
+void imx_iomux_set_gpr_register(int group, int start_bit,
+                                       int num_bits, int value)
+{
+       int i = 0;
+       u32 reg;
+       reg = readl(base + group * 4);
+       while (num_bits) {
+               reg &= ~(1<<(start_bit + i));
+               i++;
+               num_bits--;
+       }
+       reg |= (value << start_bit);
+       writel(reg, base + group * 4);
+}
index 9d3c31ab089a325a38146debb67021f36a4cdd53..ac6e40e83b807bfc29a7979bc15962b982accc87 100644 (file)
 #include <spl.h>
 
 #if defined(CONFIG_MX6)
-/* determine boot device from SRC_SBMR1 register (BOOT_CFG[4:1]) */
+/* determine boot device from SRC_SBMR1 (BOOT_CFG[4:1]) or SRC_GPR9 register */
 u32 spl_boot_device(void)
 {
        struct src *psrc = (struct src *)SRC_BASE_ADDR;
-       unsigned reg = readl(&psrc->sbmr1);
+       unsigned int gpr10_boot = readl(&psrc->gpr10) & (1 << 28);
+       unsigned reg = gpr10_boot ? readl(&psrc->gpr9) : readl(&psrc->sbmr1);
 
        /* BOOT_CFG1[7:4] - see IMX6DQRM Table 8-8 */
        switch ((reg & 0x000000FF) >> 4) {
@@ -67,8 +68,10 @@ u32 spl_boot_mode(void)
        /* for MMC return either RAW or FAT mode */
        case BOOT_DEVICE_MMC1:
        case BOOT_DEVICE_MMC2:
-#ifdef CONFIG_SPL_FAT_SUPPORT
+#if defined(CONFIG_SPL_FAT_SUPPORT)
                return MMCSD_MODE_FS;
+#elif defined(CONFIG_SUPPORT_EMMC_BOOT)
+               return MMCSD_MODE_EMMCBOOT;
 #else
                return MMCSD_MODE_RAW;
 #endif
similarity index 88%
rename from board/compulab/cm_fx6/imximage.cfg
rename to arch/arm/imx-common/spl_sd.cfg
index 420947e9ca710963fc02ceb2a344cb6701192173..5fc3e8af3821b84ca6651f638db3e01718649ae5 100644 (file)
@@ -4,5 +4,5 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-IMAGE_VERSION 2
+IMAGE_VERSION  2
 BOOT_FROM      sd
index c63f78f6823cee5432e395bc8a7550564a6dee58..65ef60bf2edb0a115d7bc48b1eb35dffa0b41901 100644 (file)
@@ -12,6 +12,7 @@
 #include <div64.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
 
 /* General purpose timers registers */
 struct mxc_gpt {
@@ -26,23 +27,59 @@ static struct mxc_gpt *cur_gpt = (struct mxc_gpt *)GPT1_BASE_ADDR;
 
 /* General purpose timers bitfields */
 #define GPTCR_SWR              (1 << 15)       /* Software reset */
+#define GPTCR_24MEN        (1 << 10)   /* Enable 24MHz clock input */
 #define GPTCR_FRR              (1 << 9)        /* Freerun / restart */
-#define GPTCR_CLKSOURCE_32     (4 << 6)        /* Clock source */
+#define GPTCR_CLKSOURCE_32     (4 << 6)        /* Clock source 32khz */
+#define GPTCR_CLKSOURCE_OSC    (5 << 6)        /* Clock source OSC */
+#define GPTCR_CLKSOURCE_PRE    (1 << 6)        /* Clock source PRECLK */
+#define GPTCR_CLKSOURCE_MASK (0x7 << 6)
 #define GPTCR_TEN              1               /* Timer enable */
 
+#define GPTPR_PRESCALER24M_SHIFT 12
+#define GPTPR_PRESCALER24M_MASK (0xF << GPTPR_PRESCALER24M_SHIFT)
+
 DECLARE_GLOBAL_DATA_PTR;
 
+static inline int gpt_has_clk_source_osc(void)
+{
+#if defined(CONFIG_MX6)
+       if (((is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) &&
+            (is_soc_rev(CHIP_REV_1_0) > 0)) || is_cpu_type(MXC_CPU_MX6DL) ||
+             is_cpu_type(MXC_CPU_MX6SOLO) || is_cpu_type(MXC_CPU_MX6SX))
+               return 1;
+
+       return 0;
+#else
+       return 0;
+#endif
+}
+
+static inline ulong gpt_get_clk(void)
+{
+#ifdef CONFIG_MXC_GPT_HCLK
+       if (gpt_has_clk_source_osc())
+               return MXC_HCLK >> 3;
+       else
+               return mxc_get_clock(MXC_IPG_PERCLK);
+#else
+       return MXC_CLK32;
+#endif
+}
 static inline unsigned long long tick_to_time(unsigned long long tick)
 {
+       ulong gpt_clk = gpt_get_clk();
+
        tick *= CONFIG_SYS_HZ;
-       do_div(tick, MXC_CLK32);
+       do_div(tick, gpt_clk);
 
        return tick;
 }
 
 static inline unsigned long long us_to_tick(unsigned long long usec)
 {
-       usec = usec * MXC_CLK32 + 999999;
+       ulong gpt_clk = gpt_get_clk();
+
+       usec = usec * gpt_clk + 999999;
        do_div(usec, 1000000);
 
        return usec;
@@ -59,11 +96,31 @@ int timer_init(void)
        for (i = 0; i < 100; i++)
                __raw_writel(0, &cur_gpt->control);
 
-       __raw_writel(0, &cur_gpt->prescaler); /* 32Khz */
-
-       /* Freerun Mode, PERCLK1 input */
        i = __raw_readl(&cur_gpt->control);
-       __raw_writel(i | GPTCR_CLKSOURCE_32 | GPTCR_TEN, &cur_gpt->control);
+       i &= ~GPTCR_CLKSOURCE_MASK;
+
+#ifdef CONFIG_MXC_GPT_HCLK
+       if (gpt_has_clk_source_osc()) {
+               i |= GPTCR_CLKSOURCE_OSC | GPTCR_TEN;
+
+               /* For DL/S, SX, set 24Mhz OSC Enable bit and prescaler */
+               if (is_cpu_type(MXC_CPU_MX6DL) ||
+                   is_cpu_type(MXC_CPU_MX6SOLO) ||
+                   is_cpu_type(MXC_CPU_MX6SX)) {
+                       i |= GPTCR_24MEN;
+
+                       /* Produce 3Mhz clock */
+                       __raw_writel((7 << GPTPR_PRESCALER24M_SHIFT),
+                                    &cur_gpt->prescaler);
+               }
+       } else {
+               i |= GPTCR_CLKSOURCE_PRE | GPTCR_TEN;
+       }
+#else
+       __raw_writel(0, &cur_gpt->prescaler); /* 32Khz */
+       i |= GPTCR_CLKSOURCE_32 | GPTCR_TEN;
+#endif
+       __raw_writel(i, &cur_gpt->control);
 
        gd->arch.tbl = __raw_readl(&cur_gpt->counter);
        gd->arch.tbu = 0;
@@ -86,7 +143,7 @@ ulong get_timer_masked(void)
 {
        /*
         * get_ticks() returns a long long (64 bit), it wraps in
-        * 2^64 / MXC_CLK32 = 2^64 / 2^15 = 2^49 ~ 5 * 10^14 (s) ~
+        * 2^64 / GPT_CLK = 2^64 / 2^15 = 2^49 ~ 5 * 10^14 (s) ~
         * 5 * 10^9 days... and get_ticks() * CONFIG_SYS_HZ wraps in
         * 5 * 10^6 days - long enough.
         */
@@ -117,5 +174,5 @@ void __udelay(unsigned long usec)
  */
 ulong get_tbclk(void)
 {
-       return MXC_CLK32;
+       return gpt_get_clk();
 }
index 8651b80ce0672f86334b7034fe27b889d30d2080..46f8a1e1dc1f20e99d580d20d2a04c8873c9019d 100644 (file)
@@ -11,6 +11,7 @@ int board_video_skip(void)
        int i;
        int ret;
        char const *panel = getenv("panel");
+
        if (!panel) {
                for (i = 0; i < display_count; i++) {
                        struct display_info_t const *dev = displays+i;
@@ -31,11 +32,14 @@ int board_video_skip(void)
                                break;
                }
        }
+
        if (i < display_count) {
                ret = ipuv3_fb_init(&displays[i].mode, 0,
                                    displays[i].pixfmt);
                if (!ret) {
-                       displays[i].enable(displays+i);
+                       if (displays[i].enable)
+                               displays[i].enable(displays + i);
+
                        printf("Display: %s (%ux%u)\n",
                               displays[i].mode.name,
                               displays[i].mode.xres,
index 8543f4399c856c9a345fd1d94076e3ff59888083..e756418a59d957a3aafdbbe11f3d9ad6e566ad55 100644 (file)
@@ -25,6 +25,7 @@
 #else
 #define BOOT_DEVICE_XIP        2
 #define BOOT_DEVICE_NAND       5
+#define BOOT_DEVICE_NAND_I2C   6
 #if defined(CONFIG_AM33XX)
 #define BOOT_DEVICE_MMC1       8
 #define BOOT_DEVICE_MMC2       9       /* eMMC or daughter card */
index 33a82fca98db67e3c89a5dba552b92d22dd89111..7eacf27a935b640d7b337626bac8796a2ba371ca 100644 (file)
@@ -14,8 +14,6 @@
 #include <asm/ti-common/sys_proto.h>
 #include <asm/arch/cpu.h>
 
-#define BOARD_REV_ID   0x0
-
 u32 get_cpu_rev(void);
 u32 get_sysboot_value(void);
 
index 532411e1c3627b9951e4d4f79dfb650b8ca6d554..e062da18b113b0eff0550881f583da2e843a66f4 100644 (file)
@@ -16,7 +16,6 @@
 #define _ARMD1_CONFIG_H
 
 #include <asm/arch/armada100.h>
-#define CONFIG_ARM926EJS       1       /* Basic Architecture */
 /* default Dcache Line length for armada100 */
 #define CONFIG_SYS_CACHELINE_SIZE       32
 
index 59e2f4391c3508000d70b254beae5229a57ff980..912e55c8deb61ac6ba46f8ba930f40f3f7b0f361 100644 (file)
@@ -23,9 +23,15 @@ void at91_udp_hw_init(void);
 void at91_uhp_hw_init(void);
 void at91_lcd_hw_init(void);
 void at91_plla_init(u32 pllar);
+void at91_pllb_init(u32 pllar);
 void at91_mck_init(u32 mckr);
 void at91_pmc_init(void);
 void mem_init(void);
 void at91_phy_reset(void);
+void at91_sdram_hw_init(void);
+void at91_mck_init(u32 mckr);
+void at91_spl_board_init(void);
+void at91_disable_wdt(void);
+void matrix_init(void);
 
 #endif /* AT91_COMMON_H */
index 27331ff2d1eaaa81432b5a97fbd6e6d60259f5af..53b5b2e0fb9af8a40e35740a3872196ccd768e55 100644 (file)
@@ -78,7 +78,7 @@ typedef struct at91_pmc {
 #define AT91_PMC_PLLXR_DIV(x)          (x & 0xFF)
 #define AT91_PMC_PLLXR_PLLCOUNT(x)     ((x & 0x3F) << 8)
 #define AT91_PMC_PLLXR_OUT(x)          ((x & 0x03) << 14)
-#ifdef CONFIG_SAMA5D3
+#if defined(CONFIG_SAMA5D3) || defined(CONFIG_SAMA5D4)
 #define AT91_PMC_PLLXR_MUL(x)          ((x & 0x7F) << 18)
 #else
 #define AT91_PMC_PLLXR_MUL(x)          ((x & 0x7FF) << 16)
@@ -97,7 +97,7 @@ typedef struct at91_pmc {
 #define AT91_PMC_MCKR_CSS_PLLB         0x00000003
 #define AT91_PMC_MCKR_CSS_MASK         0x00000003
 
-#ifdef CONFIG_SAMA5D3
+#if defined(CONFIG_SAMA5D3) || defined(CONFIG_SAMA5D4)
 #define AT91_PMC_MCKR_PRES_1           0x00000000
 #define AT91_PMC_MCKR_PRES_2           0x00000010
 #define AT91_PMC_MCKR_PRES_4           0x00000020
@@ -126,16 +126,19 @@ typedef struct at91_pmc {
 #else
 #define AT91_PMC_MCKR_MDIV_1           0x00000000
 #define AT91_PMC_MCKR_MDIV_2           0x00000100
-#ifdef CONFIG_SAMA5D3
+#if defined(CONFIG_SAMA5D3) || defined(CONFIG_SAMA5D4)
 #define AT91_PMC_MCKR_MDIV_3           0x00000300
 #endif
 #define AT91_PMC_MCKR_MDIV_4           0x00000200
 #define AT91_PMC_MCKR_MDIV_MASK                0x00000300
 #endif
 
+#define AT91_PMC_MCKR_PLLADIV_MASK     0x00003000
 #define AT91_PMC_MCKR_PLLADIV_1                0x00000000
 #define AT91_PMC_MCKR_PLLADIV_2                0x00001000
 
+#define AT91_PMC_MCKR_H32MXDIV         0x01000000
+
 #define AT91_PMC_IXR_MOSCS             0x00000001
 #define AT91_PMC_IXR_LOCKA             0x00000002
 #define AT91_PMC_IXR_LOCKB             0x00000004
diff --git a/arch/arm/include/asm/arch-at91/at91_shdwn.h b/arch/arm/include/asm/arch-at91/at91_shdwn.h
deleted file mode 100644 (file)
index 18d9ea6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2010
- * Reinhard Meyer, reinhard.meyer@emk-elektronik.de
- *
- * Shutdown Controller
- * Based on AT91SAM9XE datasheet
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef AT91_SHDWN_H
-#define AT91_SHDWN_H
-
-#ifndef __ASSEMBLY__
-
-struct at91_shdwn {
-       u32     cr;     /* Control Rer.    WO */
-       u32     mr;     /* Mode Register   RW 0x00000003 */
-       u32     sr;     /* Status Register RO 0x00000000 */
-};
-
-#endif /* __ASSEMBLY__ */
-
-#define AT91_SHDW_CR_KEY       0xa5000000
-#define AT91_SHDW_CR_SHDW      0x00000001
-
-#define AT91_SHDW_MR_RTTWKEN   0x00010000
-#define AT91_SHDW_MR_CPTWK0    0x000000f0
-#define AT91_SHDW_MR_WKMODE0H2L        0x00000002
-#define AT91_SHDW_MR_WKMODE0L2H        0x00000001
-
-#define AT91_SHDW_SR_RTTWK     0x00010000
-#define AT91_SHDW_SR_WAKEUP0   0x00000001
-
-#endif
index 25bb071e918535009c1b87efdf5dec8871239abf..d177bdcae56cd72565ab057ee12743d1e3891175 100644 (file)
@@ -7,7 +7,6 @@
 #define __AT91RM9200_H__
 
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 family */
-#define CONFIG_ARM920T         /* it's an ARM920T Core */
 #define CONFIG_ARCH_CPU_INIT   /* we need arch_cpu_init() for hw timers */
 #define CONFIG_AT91_GPIO       /* and require always gpio features */
 
index 2e902eef3ec8d3ef418ddceab0bb5532097b57c3..8950d674093a09a1663d8643fec4385dc2b16197 100644 (file)
@@ -21,7 +21,6 @@
 /*
  * defines to be used in other places
  */
-#define CONFIG_ARM926EJS       /* ARM926EJS Core */
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 */
 
 /*
@@ -95,6 +94,7 @@
 #define ATMEL_BASE_SDRAMC      0xffffea00
 #define ATMEL_BASE_SMC         0xffffec00
 #define ATMEL_BASE_MATRIX      0xffffee00
+#define ATMEL_BASE_CCFG         0xffffef14
 #define ATMEL_BASE_AIC         0xfffff000
 #define ATMEL_BASE_DBGU                0xfffff200
 #define ATMEL_BASE_PIOA                0xfffff400
 /*
  * Other misc defines
  */
+#ifndef CONFIG_DM_GPIO
 #define ATMEL_PIO_PORTS                3               /* these SoCs have 3 PIO */
-#define ATMEL_PMC_UHP          AT91SAM926x_PMC_UHP
 #define ATMEL_BASE_PIO         ATMEL_BASE_PIOA
+#endif
+#define ATMEL_PMC_UHP          AT91SAM926x_PMC_UHP
 
 /*
  * SoC specific defines
index 4755fa10bb9698077281184f752ab9b77b99cca6..dc61f48f52e0cfd0927d3475b29b28dd13d7bc5c 100644 (file)
@@ -61,5 +61,10 @@ struct at91_matrix {
 #define AT91_MATRIX_DBPUC              (1 << 8)
 #define AT91_MATRIX_VDDIOMSEL_1_8V     (0 << 16)
 #define AT91_MATRIX_VDDIOMSEL_3_3V     (1 << 16)
+#define AT91_MATRIX_EBI_IOSR_SEL       (1 << 17)
+
+/* Maximum Number of Allowed Cycles for a Burst */
+#define AT91_MATRIX_SLOT_CYCLE         (0xff << 0)
+#define AT91_MATRIX_SLOT_CYCLE_(x)     (x << 0)
 
 #endif
index f7ad11349a787f1770c2686b882af5cc66df5f42..6dfcf4c0c865706205a790245a57b747cb74af07 100644 (file)
@@ -21,7 +21,6 @@
 /*
  * defines to be used in other places
  */
-#define CONFIG_ARM926EJS       /* ARM926EJS Core */
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 */
 
 /*
index 3206af8c3ea2e310d38e68a21b03a274486b426c..64a3888e227cc7bed21f2f3068d2340ab199b91b 100644 (file)
@@ -17,7 +17,6 @@
 /*
  * defines to be used in other places
  */
-#define CONFIG_ARM926EJS       /* ARM926EJS Core */
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 */
 
 /*
index 5c98cc70d3dc32ae5a690b19e5d9b455172690b8..3a076c6b80644a437962fd14d633e0f9ebef7130 100644 (file)
 #define AT91_ASM_SDRAMC_CR     (ATMEL_BASE_SDRAMC + 0x08)
 #define AT91_ASM_SDRAMC_MDR    (ATMEL_BASE_SDRAMC + 0x24)
 
+#else
+struct sdramc_reg {
+       u32     mr;
+       u32     tr;
+       u32     cr;
+       u32     lpr;
+       u32     ier;
+       u32     idr;
+       u32     imr;
+       u32     isr;
+       u32     mdr;
+};
+
+int sdramc_initialize(unsigned int sdram_address,
+                     const struct sdramc_reg *p);
 #endif
 
 /* SDRAM Controller (SDRAMC) registers */
 #define                        AT91_SDRAMC_DBW_32      (0 << 7)
 #define                        AT91_SDRAMC_DBW_16      (1 << 7)
 #define                AT91_SDRAMC_TWR         (0xf <<  8)             /* Write Recovery Delay */
+#define                AT91_SDRAMC_TWR_VAL(x)  (x << 8)
 #define                AT91_SDRAMC_TRC         (0xf << 12)             /* Row Cycle Delay */
+#define                        AT91_SDRAMC_TRC_VAL(x)  (x << 12)
 #define                AT91_SDRAMC_TRP         (0xf << 16)             /* Row Precharge Delay */
+#define                AT91_SDRAMC_TRP_VAL(x)  (x << 16)
 #define                AT91_SDRAMC_TRCD        (0xf << 20)             /* Row to Column Delay */
+#define                        AT91_SDRAMC_TRCD_VAL(x) (x << 20)
 #define                AT91_SDRAMC_TRAS        (0xf << 24)             /* Active to Precharge Delay */
+#define                AT91_SDRAMC_TRAS_VAL(x) (x << 24)
 #define                AT91_SDRAMC_TXSR        (0xf << 28)             /* Exit Self Refresh to Active Delay */
+#define                AT91_SDRAMC_TXSR_VAL(x) (x << 28)
 
 #define AT91_SDRAMC_LPR                (ATMEL_BASE_SDRAMC + 0x10)      /* SDRAM Controller Low Power Register */
 #define                AT91_SDRAMC_LPCB                (3 << 0)        /* Low-power Configurations */
 #define                        AT91_SDRAMC_MD_SDRAM            0
 #define                        AT91_SDRAMC_MD_LOW_POWER_SDRAM  1
 
-
 #endif
index 9cbfc277bd6b0ca459d2fd70cc03af65e37f23e5..6df8cdb56d07bb72501272b45e517976b017c56d 100644 (file)
@@ -15,7 +15,6 @@
 /*
  * defines to be used in other places
  */
-#define CONFIG_ARM926EJS       /* ARM926EJS Core */
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 */
 
 /*
index 00b6aa469fe3a432bf06564c2ab6ac1a64076125..3a8e6d62ce51e351b51c9253109c70278fdc839d 100644 (file)
@@ -17,7 +17,6 @@
 /*
  * defines to be used in other places
  */
-#define CONFIG_ARM926EJS       /* ARM926EJS Core */
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 */
 
 /*
index d49c18480dca68ac56c9eec2aa83ba549e7ee002..36a5cdf476882bb6f4161ef12dd33d625482fbaf 100644 (file)
@@ -12,7 +12,6 @@
 #ifndef __AT91SAM9X5_H__
 #define __AT91SAM9X5_H__
 
-#define CONFIG_ARM926EJS       /* ARM926EJS Core */
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 family */
 
 /*
index 5741f6e94a440635cfcf399a38b5757853a3f856..130a85abeea581eecb60f71defc8cc6fcd4ce494 100644 (file)
@@ -57,6 +57,7 @@ int ddr2_init(const unsigned int ram_address,
 #define ATMEL_MPDDRC_CR_DIC_DS                 (0x1 << 8)
 #define ATMEL_MPDDRC_CR_DIS_DLL                        (0x1 << 9)
 #define ATMEL_MPDDRC_CR_OCD_DEFAULT            (0x7 << 12)
+#define ATMEL_MPDDRC_CR_DQMS_SHARED            (0x1 << 16)
 #define ATMEL_MPDDRC_CR_ENRDM_ON               (0x1 << 17)
 #define ATMEL_MPDDRC_CR_NB_8BANKS              (0x1 << 20)
 #define ATMEL_MPDDRC_CR_NDQS_DISABLED          (0x1 << 21)
diff --git a/arch/arm/include/asm/arch-at91/atmel_serial.h b/arch/arm/include/asm/arch-at91/atmel_serial.h
new file mode 100644 (file)
index 0000000..5bc094b
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef _ATMEL_SERIAL_H
+#define _ATMEL_SERIAL_H
+
+/* Information about a serial port */
+struct atmel_serial_platdata {
+       uint32_t base_addr;
+};
+
+#endif
index 4076a78a86eec34f2e8eb0b877501cea2e92643f..1d45e2dc112deda0f4a3d58745b8f088f22cdee9 100644 (file)
@@ -10,6 +10,7 @@
 #define __ASM_ARM_ARCH_CLK_H__
 
 #include <asm/arch/hardware.h>
+#include <asm/arch/at91_pmc.h>
 #include <asm/global_data.h>
 
 static inline unsigned long get_cpu_clk_rate(void)
@@ -48,14 +49,34 @@ static inline u32 get_pllb_init(void)
        return gd->arch.at91_pllb_usb_init;
 }
 
+#ifdef CPU_HAS_H32MXDIV
+static inline unsigned int get_h32mxdiv(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+       return readl(&pmc->mckr) & AT91_PMC_MCKR_H32MXDIV;
+}
+#else
+static inline unsigned int get_h32mxdiv(void)
+{
+       return 0;
+}
+#endif
+
 static inline unsigned long get_macb_pclk_rate(unsigned int dev_id)
 {
-       return get_mck_clk_rate();
+       if (get_h32mxdiv())
+               return get_mck_clk_rate() / 2;
+       else
+               return get_mck_clk_rate();
 }
 
 static inline unsigned long get_usart_clk_rate(unsigned int dev_id)
 {
-       return get_mck_clk_rate();
+       if (get_h32mxdiv())
+               return get_mck_clk_rate() / 2;
+       else
+               return get_mck_clk_rate();
 }
 
 static inline unsigned long get_lcdc_clk_rate(unsigned int dev_id)
@@ -65,17 +86,34 @@ static inline unsigned long get_lcdc_clk_rate(unsigned int dev_id)
 
 static inline unsigned long get_spi_clk_rate(unsigned int dev_id)
 {
-       return get_mck_clk_rate();
+       if (get_h32mxdiv())
+               return get_mck_clk_rate() / 2;
+       else
+               return get_mck_clk_rate();
 }
 
 static inline unsigned long get_twi_clk_rate(unsigned int dev_id)
 {
-       return get_mck_clk_rate();
+       if (get_h32mxdiv())
+               return get_mck_clk_rate() / 2;
+       else
+               return get_mck_clk_rate();
 }
 
 static inline unsigned long get_mci_clk_rate(void)
 {
-       return get_mck_clk_rate();
+       if (get_h32mxdiv())
+               return get_mck_clk_rate() / 2;
+       else
+               return get_mck_clk_rate();
+}
+
+static inline unsigned long get_pit_clk_rate(void)
+{
+       if (get_h32mxdiv())
+               return get_mck_clk_rate() / 2;
+       else
+               return get_mck_clk_rate();
 }
 
 int at91_clock_init(unsigned long main_clock);
index 71213883d7b7098c52bc22564a41552967932e94..6d2a7b72ff3c98ca0d090569f9707e39f042ecbe 100644 (file)
@@ -253,4 +253,10 @@ static inline unsigned at91_gpio_to_pin(unsigned gpio)
        return gpio % 32;
 }
 
+/* Platform data for each GPIO port */
+struct at91_port_platdata {
+       uint32_t base_addr;
+       const char *bank_name;
+};
+
 #endif /* __ASM_ARCH_AT91_GPIO_H */
index d712a0dc9136c47f52eed8cbed253114163a7952..bf0a1bd6a3c5b093526871b0dd3738419006933e 100644 (file)
@@ -27,6 +27,8 @@
 # include <asm/arch/at91cap9.h>
 #elif defined(CONFIG_SAMA5D3)
 # include <asm/arch/sama5d3.h>
+#elif defined(CONFIG_SAMA5D4)
+# include <asm/arch/sama5d4.h>
 #else
 # error "Unsupported AT91 processor"
 #endif
index f7bc4ad33834b17ff2c610f777886af1f80e8442..227ba8082551b039e8ace1d7ee77ad3e70abd60b 100644 (file)
@@ -16,7 +16,6 @@
 /*
  * defines to be used in other places
  */
-#define CONFIG_ARMV7           /* ARM A5 Core */
 #define CONFIG_AT91FAMILY      /* it's a member of AT91 */
 
 /*
diff --git a/arch/arm/include/asm/arch-at91/sama5d4.h b/arch/arm/include/asm/arch-at91/sama5d4.h
new file mode 100644 (file)
index 0000000..d851568
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+ * Chip-specific header file for the SAMA5D4 SoC
+ *
+ * Copyright (C) 2014 Atmel
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __SAMA5D4_H
+#define __SAMA5D4_H
+
+/*
+ * defines to be used in other places
+ */
+#define CONFIG_AT91FAMILY      /* It's a member of AT91 */
+
+/*
+ * Peripheral identifiers/interrupts.
+ */
+#define ATMEL_ID_FIQ   0       /* FIQ Interrupt */
+#define ATMEL_ID_SYS   1       /* System Controller */
+#define ATMEL_ID_ARM   2       /* Performance Monitor Unit */
+#define ATMEL_ID_PIT   3       /* Periodic Interval Timer */
+#define ATMEL_ID_WDT   4       /* Watchdog timer */
+#define ATMEL_ID_PIOD  5       /* Parallel I/O Controller D */
+#define ATMEL_ID_USART0        6       /* USART 0 */
+#define ATMEL_ID_USART1        7       /* USART 1 */
+#define ATMEL_ID_DMA0  8       /* DMA Controller 0 */
+#define ATMEL_ID_ICM   9       /* Integrity Check Monitor */
+#define ATMEL_ID_PKCC  10      /* Public Key Crypto Controller */
+#define ATMEL_ID_AES   12      /* Advanced Encryption Standard */
+#define ATMEL_ID_AESB  13      /* AES Bridge*/
+#define ATMEL_ID_TDES  14      /* Triple Data Encryption Standard */
+#define ATMEL_ID_SHA    15     /* SHA Signature */
+#define ATMEL_ID_MPDDRC        16      /* MPDDR controller */
+#define ATMEL_ID_MATRIX1       17      /* H32MX, 32-bit AHB Matrix */
+#define ATMEL_ID_MATRIX0       18      /* H64MX, 64-bit AHB Matrix */
+#define ATMEL_ID_VDEC  19      /* Video Decoder */
+#define ATMEL_ID_SBM   20      /* Secure Box Module */
+#define ATMEL_ID_SMC   22      /* Multi-bit ECC interrupt */
+#define ATMEL_ID_PIOA  23      /* Parallel I/O Controller A */
+#define ATMEL_ID_PIOB  24      /* Parallel I/O Controller B */
+#define ATMEL_ID_PIOC  25      /* Parallel I/O Controller C */
+#define ATMEL_ID_PIOE  26      /* Parallel I/O Controller E */
+#define ATMEL_ID_UART0 27      /* UART 0 */
+#define ATMEL_ID_UART1 28      /* UART 1 */
+#define ATMEL_ID_USART2        29      /* USART 2 */
+#define ATMEL_ID_USART3        30      /* USART 3 */
+#define ATMEL_ID_USART4        31      /* USART 4 */
+#define ATMEL_ID_TWI0  32      /* Two-Wire Interface 0 */
+#define ATMEL_ID_TWI1  33      /* Two-Wire Interface 1 */
+#define ATMEL_ID_TWI2  34      /* Two-Wire Interface 2 */
+#define ATMEL_ID_MCI0  35      /* High Speed Multimedia Card Interface 0 */
+#define ATMEL_ID_MCI1  36      /* High Speed Multimedia Card Interface 1 */
+#define ATMEL_ID_SPI0  37      /* Serial Peripheral Interface 0 */
+#define ATMEL_ID_SPI1  38      /* Serial Peripheral Interface 1 */
+#define ATMEL_ID_SPI2  39      /* Serial Peripheral Interface 2 */
+#define ATMEL_ID_TC0   40      /* Timer Counter 0 (ch. 0, 1, 2) */
+#define ATMEL_ID_TC1   41      /* Timer Counter 1 (ch. 3, 4, 5) */
+#define ATMEL_ID_TC2   42      /* Timer Counter 2 (ch. 6, 7, 8) */
+#define ATMEL_ID_PWMC  43      /* Pulse Width Modulation Controller */
+#define ATMEL_ID_ADC   44      /* Touch Screen ADC Controller */
+#define ATMEL_ID_DBGU  45      /* Debug Unit Interrupt */
+#define ATMEL_ID_UHPHS 46      /* USB Host High Speed */
+#define ATMEL_ID_UDPHS 47      /* USB Device High Speed */
+#define ATMEL_ID_SSC0  48      /* Synchronous Serial Controller 0 */
+#define ATMEL_ID_SSC1  49      /* Synchronous Serial Controller 1 */
+#define ATMEL_ID_XDMAC1        50      /* DMA Controller 1 */
+#define ATMEL_ID_LCDC  51      /* LCD Controller */
+#define ATMEL_ID_ISI   52      /* Image Sensor Interface */
+#define ATMEL_ID_TRNG  53      /* True Random Number Generator */
+#define ATMEL_ID_GMAC0 54      /* Ethernet MAC 0 */
+#define ATMEL_ID_GMAC1 55      /* Ethernet MAC 1 */
+#define ATMEL_ID_IRQ   56      /* IRQ Interrupt ID */
+#define ATMEL_ID_SFC   57      /* Fuse Controller */
+#define ATMEL_ID_SECURAM       59      /* Secured RAM */
+#define ATMEL_ID_SMD   61      /* SMD Soft Modem */
+#define ATMEL_ID_TWI3  62      /* Two-Wire Interface 3 */
+#define ATMEL_ID_CATB  63      /* Capacitive Touch Controller */
+#define ATMEL_ID_SFR   64      /* Special Funcion Register */
+#define ATMEL_ID_AIC   65      /* Advanced Interrupt Controller */
+#define ATMEL_ID_SAIC  66      /* Secured Advanced Interrupt Controller */
+#define ATMEL_ID_L2CC  67      /* L2 Cache Controller */
+
+/*
+ * User Peripherals physical base addresses.
+ */
+#define ATMEL_BASE_LCDC                0xf0000000
+#define ATMEL_BASE_DMAC1       0xf0004000
+#define ATMEL_BASE_ISI         0xf0008000
+#define ATMEL_BASE_PKCC                0xf000C000
+#define ATMEL_BASE_MPDDRC      0xf0010000
+#define ATMEL_BASE_DMAC0       0xf0014000
+#define ATMEL_BASE_PMC         0xf0018000
+#define ATMEL_BASE_MATRIX0     0xf001c000
+#define ATMEL_BASE_AESB                0xf0020000
+/* Reserved: 0xf0024000 - 0xf8000000 */
+#define ATMEL_BASE_MCI0                0xf8000000
+#define ATMEL_BASE_UART0       0xf8004000
+#define ATMEL_BASE_SSC0                0xf8008000
+#define ATMEL_BASE_PWMC                0xf800c000
+#define ATMEL_BASE_SPI0                0xf8010000
+#define ATMEL_BASE_TWI0                0xf8014000
+#define ATMEL_BASE_TWI1                0xf8018000
+#define ATMEL_BASE_TC0         0xf801c000
+#define ATMEL_BASE_GMAC0       0xf8020000
+#define ATMEL_BASE_TWI2                0xf8024000
+#define ATMEL_BASE_SFR         0xf8028000
+#define ATMEL_BASE_USART0      0xf802c000
+#define ATMEL_BASE_USART1      0xf8030000
+/* Reserved:   0xf8034000 - 0xfc000000 */
+#define ATMEL_BASE_MCI1                0xfc000000
+#define ATMEL_BASE_UART1       0xfc004000
+#define ATMEL_BASE_USART2      0xfc008000
+#define ATMEL_BASE_USART3      0xfc00c000
+#define ATMEL_BASE_USART4      0xfc010000
+#define ATMEL_BASE_SSC1                0xfc014000
+#define ATMEL_BASE_SPI1                0xfc018000
+#define ATMEL_BASE_SPI2                0xfc01c000
+#define ATMEL_BASE_TC1         0xfc020000
+#define ATMEL_BASE_TC2         0xfc024000
+#define ATMEL_BASE_GMAC1       0xfc028000
+#define ATMEL_BASE_UDPHS       0xfc02c000
+#define ATMEL_BASE_TRNG                0xfc030000
+#define ATMEL_BASE_ADC         0xfc034000
+#define ATMEL_BASE_TWI3                0xfc038000
+
+#define ATMEL_BASE_SMC         0xfc05c000
+#define ATMEL_BASE_PMECC       (ATMEL_BASE_SMC + 0x070)
+#define ATMEL_BASE_PMERRLOC    (ATMEL_BASE_SMC + 0x500)
+
+#define ATMEL_BASE_PIOD                0xfc068000
+#define ATMEL_BASE_RSTC                0xfc068600
+#define ATMEL_BASE_PIT         0xfc068630
+#define ATMEL_BASE_WDT         0xfc068640
+
+#define ATMEL_BASE_DBGU                0xfc069000
+#define ATMEL_BASE_PIOA                0xfc06a000
+#define ATMEL_BASE_PIOB                0xfc06b000
+#define ATMEL_BASE_PIOC                0xfc06c000
+#define ATMEL_BASE_PIOE                0xfc06d000
+#define ATMEL_BASE_AIC         0xfc06e000
+
+/*
+ * Internal Memory.
+ */
+#define ATMEL_BASE_ROM         0x00000000      /* Internal ROM base address */
+#define ATMEL_BASE_NFC         0x00100000      /* NFC SRAM */
+#define ATMEL_BASE_SRAM                0x00200000      /* Internal ROM base address */
+#define ATMEL_BASE_VDEC                0x00300000      /* Video Decoder Controller */
+#define ATMEL_BASE_UDPHS_FIFO  0x00400000      /* USB Device HS controller */
+#define ATMEL_BASE_OHCI                0x00500000      /* USB Host controller (OHCI) */
+#define ATMEL_BASE_EHCI                0x00600000      /* USB Host controller (EHCI) */
+#define ATMEL_BASE_AXI         0x00700000
+#define ATMEL_BASE_DAP         0x00800000
+#define ATMEL_BASE_SMD         0x00900000
+
+/*
+ * External memory
+ */
+#define ATMEL_BASE_CS0         0x10000000
+#define ATMEL_BASE_DDRCS       0x20000000
+#define ATMEL_BASE_CS1         0x60000000
+#define ATMEL_BASE_CS2         0x70000000
+#define ATMEL_BASE_CS3         0x80000000
+
+/*
+ * Other misc defines
+ */
+#define ATMEL_PIO_PORTS                5
+#define CPU_HAS_PIO3
+#define PIO_SCDR_DIV           0x3fff
+#define CPU_HAS_PCR
+#define CPU_HAS_H32MXDIV
+
+/* sama5d4 series chip id definitions */
+#define ARCH_ID_SAMA5D4                0x8a5c07c0
+#define ARCH_EXID_SAMA5D41     0x00000001
+#define ARCH_EXID_SAMA5D42     0x00000002
+#define ARCH_EXID_SAMA5D43     0x00000003
+#define ARCH_EXID_SAMA5D44     0x00000004
+
+#define cpu_is_sama5d4()       (get_chip_id() == ARCH_ID_SAMA5D4)
+#define cpu_is_sama5d41()      (cpu_is_sama5d4() && \
+               (get_extension_chip_id() == ARCH_EXID_SAMA5D41))
+#define cpu_is_sama5d42()      (cpu_is_sama5d4() && \
+               (get_extension_chip_id() == ARCH_EXID_SAMA5D42))
+#define cpu_is_sama5d43()      (cpu_is_sama5d4() && \
+               (get_extension_chip_id() == ARCH_EXID_SAMA5D43))
+#define cpu_is_sama5d44()      (cpu_is_sama5d4() && \
+               (get_extension_chip_id() == ARCH_EXID_SAMA5D44))
+
+/*
+ * No PMECC Galois table in ROM
+ */
+#define NO_GALOIS_TABLE_IN_ROM
+
+#ifndef __ASSEMBLY__
+unsigned int get_chip_id(void);
+unsigned int get_extension_chip_id(void);
+unsigned int has_lcdc(void);
+char *get_cpu_name(void);
+#endif
+
+#endif
index 350e7f6b723059644e1b559db76ab1a4f485a426..93ebf3429a713e24ec58890982c03c8098e01b8b 100644 (file)
@@ -13,6 +13,8 @@
 #define ESUB_CLK_BASE_ADDR     0x38000000
 #define ESW_CONTRL_BASE_ADDR   0x38200000
 #define GPIO2_BASE_ADDR                0x35003000
+#define HSOTG_BASE_ADDR                0x3f120000
+#define HSOTG_CTRL_BASE_ADDR   0x3f130000
 #define KONA_MST_CLK_BASE_ADDR 0x3f001000
 #define KONA_SLV_CLK_BASE_ADDR 0x3e011000
 #define PMU_BSC_BASE_ADDR      0x3500d000
index 61f427d914cd939386806a2c45f263d397a11058..88d2ec11a7c204e9f538f14d24edc60b5aa41fb1 100644 (file)
@@ -119,6 +119,40 @@ struct bcm2835_mbox_tag_hdr {
  * };
  */
 
+#define BCM2835_MBOX_TAG_GET_BOARD_REV 0x00010002
+
+/*
+ * 0x2..0xf from:
+ * http://raspberryalphaomega.org.uk/2013/02/06/automatic-raspberry-pi-board-revision-detection-model-a-b1-and-b2/
+ * http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=32733
+ * 0x10, 0x11 from swarren's testing
+ */
+#define BCM2835_BOARD_REV_B_I2C0_2     0x2
+#define BCM2835_BOARD_REV_B_I2C0_3     0x3
+#define BCM2835_BOARD_REV_B_I2C1_4     0x4
+#define BCM2835_BOARD_REV_B_I2C1_5     0x5
+#define BCM2835_BOARD_REV_B_I2C1_6     0x6
+#define BCM2835_BOARD_REV_A_7          0x7
+#define BCM2835_BOARD_REV_A_8          0x8
+#define BCM2835_BOARD_REV_A_9          0x9
+#define BCM2835_BOARD_REV_B_REV2_d     0xd
+#define BCM2835_BOARD_REV_B_REV2_e     0xe
+#define BCM2835_BOARD_REV_B_REV2_f     0xf
+#define BCM2835_BOARD_REV_B_PLUS       0x10
+#define BCM2835_BOARD_REV_CM           0x11
+#define BCM2835_BOARD_REV_A_PLUS       0x12
+
+struct bcm2835_mbox_tag_get_board_rev {
+       struct bcm2835_mbox_tag_hdr tag_hdr;
+       union {
+               struct {
+               } req;
+               struct {
+                       u32 rev;
+               } resp;
+       } body;
+};
+
 #define BCM2835_MBOX_TAG_GET_MAC_ADDRESS       0x00010003
 
 struct bcm2835_mbox_tag_get_mac_address {
index ba717146f51bf8589f68c5e8ed3ff23675c117b4..29674ad4dadda7942531df19b2495b535b8ec37d 100644 (file)
@@ -29,6 +29,8 @@
 #define EXYNOS4_MIU_BASE               0x10600000
 #define EXYNOS4_ACE_SFR_BASE           0x10830000
 #define EXYNOS4_GPIO_PART2_BASE                0x11000000
+#define EXYNOS4_GPIO_PART2_0           0x11000000 /* GPJ0 */
+#define EXYNOS4_GPIO_PART2_1           0x11000c00 /* GPX0 */
 #define EXYNOS4_GPIO_PART1_BASE                0x11400000
 #define EXYNOS4_FIMD_BASE              0x11C00000
 #define EXYNOS4_MIPI_DSIM_BASE         0x11C80000
 #define EXYNOS4X12_GPIO_PART4_BASE     0x106E0000
 #define EXYNOS4X12_ACE_SFR_BASE                0x10830000
 #define EXYNOS4X12_GPIO_PART2_BASE     0x11000000
+#define EXYNOS4X12_GPIO_PART2_0                0x11000000
+#define EXYNOS4X12_GPIO_PART2_1                0x11000040 /* GPK0 */
+#define EXYNOS4X12_GPIO_PART2_2                0x11000260 /* GPM0 */
+#define EXYNOS4X12_GPIO_PART2_3                0x11000c00 /* GPX0 */
 #define EXYNOS4X12_GPIO_PART1_BASE     0x11400000
+#define EXYNOS4X12_GPIO_PART1_0                0x11400000 /* GPA0 */
+#define EXYNOS4X12_GPIO_PART1_1                0x11400180 /* GPF0 */
+#define EXYNOS4X12_GPIO_PART1_2                0x11400240 /* GPJ0 */
 #define EXYNOS4X12_FIMD_BASE           0x11C00000
 #define EXYNOS4X12_MIPI_DSIM_BASE      0x11C80000
 #define EXYNOS4X12_USBOTG_BASE         0x12480000
@@ -218,6 +227,13 @@ static inline void s5p_set_cpu_id(void)
                /* Exynos5420 */
                s5p_cpu_id = 0x5420;
                break;
+       case 0x422:
+               /*
+                * Exynos5800 is a variant of Exynos5420
+                * and has product id 0x5422
+                */
+               s5p_cpu_id = 0x5800;
+               break;
        }
 }
 
@@ -246,6 +262,7 @@ IS_EXYNOS_TYPE(exynos4210, 0x4210)
 IS_EXYNOS_TYPE(exynos4412, 0x4412)
 IS_EXYNOS_TYPE(exynos5250, 0x5250)
 IS_EXYNOS_TYPE(exynos5420, 0x5420)
+IS_EXYNOS_TYPE(exynos5800, 0x5800)
 
 #define SAMSUNG_BASE(device, base)                             \
 static inline unsigned int __attribute__((no_instrument_function)) \
@@ -256,7 +273,7 @@ static inline unsigned int __attribute__((no_instrument_function)) \
                        return EXYNOS4X12_##base;               \
                return EXYNOS4_##base;                          \
        } else if (cpu_is_exynos5()) {                          \
-               if (proid_is_exynos5420())                      \
+               if (proid_is_exynos5420() || proid_is_exynos5800())     \
                        return EXYNOS5420_##base;               \
                return EXYNOS5_##base;                          \
        }                                                       \
index ec3f9b6ee102aaa46f869ace99b92f0027142f6c..4990a1af39c908cff63ddf4166864de5da78d934 100644 (file)
@@ -450,6 +450,7 @@ enum mem_manuf {
 #define CONCONTROL_RD_FETCH_SHIFT      12
 #define CONCONTROL_RD_FETCH_MASK       (0x7 << CONCONTROL_RD_FETCH_SHIFT)
 #define CONCONTROL_AREF_EN_SHIFT       5
+#define CONCONTROL_UPDATE_MODE         (1 << 3)
 
 /* PRECHCONFIG register field */
 #define PRECHCONFIG_TP_CNT_SHIFT       24
index d2d70bd82be801db6a95dc2319451a2498d32937..3800fa904438dde4e047e264f45561378e8778c5 100644 (file)
 
 #define CLK_24MHZ              5
 
+#define PHYPWR_NORMAL_MASK_PHY0                 (0x39 << 0)
+#define PHYPWR_NORMAL_MASK_PHY1                 (0x7 << 6)
+#define PHYPWR_NORMAL_MASK_HSIC0                (0x7 << 9)
+#define PHYPWR_NORMAL_MASK_HSIC1                (0x7 << 12)
+#define RSTCON_HOSTPHY_SWRST                    (0xf << 3)
+#define RSTCON_SWRST                            (0x1 << 0)
+
 #define HOST_CTRL0_PHYSWRSTALL                 (1 << 31)
 #define HOST_CTRL0_COMMONON_N                  (1 << 9)
 #define HOST_CTRL0_SIDDQ                       (1 << 6)
@@ -61,6 +68,12 @@ struct exynos_usb_phy {
        unsigned int usbotgtune;
 };
 
+struct exynos4412_usb_phy {
+       unsigned int usbphyctrl;
+       unsigned int usbphyclk;
+       unsigned int usbphyrstcon;
+};
+
 /* Switch on the VBUS power. */
 int board_usb_vbus_init(void);
 
index ad2ece64f49b3568e7903541360f89bb1d2e5c63..9699954a7d452c1d0979e8675a9094d658747066 100644 (file)
@@ -284,7 +284,10 @@ enum exynos4_gpio_pin {
        EXYNOS4_GPIO_Y65,
        EXYNOS4_GPIO_Y66,
        EXYNOS4_GPIO_Y67,
-       EXYNOS4_GPIO_X00,               /* 256 0x100 */
+
+       /* GPIO_PART2_1 STARTS */
+       EXYNOS4_GPIO_MAX_PORT_PART_2_0, /* 256 0x100 */
+       EXYNOS4_GPIO_X00 = EXYNOS4_GPIO_MAX_PORT_PART_2_0,
        EXYNOS4_GPIO_X01,
        EXYNOS4_GPIO_X02,
        EXYNOS4_GPIO_X03,
@@ -318,8 +321,8 @@ enum exynos4_gpio_pin {
        EXYNOS4_GPIO_X37,
 
        /* GPIO_PART3_STARTS */
-       EXYNOS4_GPIO_MAX_PORT_PART_2,   /* 288 0x120 */
-       EXYNOS4_GPIO_Z0 = EXYNOS4_GPIO_MAX_PORT_PART_2,
+       EXYNOS4_GPIO_MAX_PORT_PART_2_1, /* 288 0x120 */
+       EXYNOS4_GPIO_Z0 = EXYNOS4_GPIO_MAX_PORT_PART_2_1,
        EXYNOS4_GPIO_Z1,
        EXYNOS4_GPIO_Z2,
        EXYNOS4_GPIO_Z3,
@@ -332,7 +335,7 @@ enum exynos4_gpio_pin {
 };
 
 enum exynos4X12_gpio_pin {
-       /* GPIO_PART1_STARTS */
+       /* EXYNOS4X12_GPIO_PART1_0 starts here */
        EXYNOS4X12_GPIO_A00,            /* 0 */
        EXYNOS4X12_GPIO_A01,
        EXYNOS4X12_GPIO_A02,
@@ -389,7 +392,9 @@ enum exynos4X12_gpio_pin {
        EXYNOS4X12_GPIO_D15,
        EXYNOS4X12_GPIO_D16,
        EXYNOS4X12_GPIO_D17,
-       EXYNOS4X12_GPIO_F00,            /* 56 0x38 */
+       EXYNOS4X12_GPIO_MAX_PORT_PART_1_0, /* 56 0x38 */
+       /* EXYNOS4X12_GPIO_PART1_1 starts here */
+       EXYNOS4X12_GPIO_F00 = EXYNOS4X12_GPIO_MAX_PORT_PART_1_0,
        EXYNOS4X12_GPIO_F01,
        EXYNOS4X12_GPIO_F02,
        EXYNOS4X12_GPIO_F03,
@@ -421,7 +426,9 @@ enum exynos4X12_gpio_pin {
        EXYNOS4X12_GPIO_F35,
        EXYNOS4X12_GPIO_F36,
        EXYNOS4X12_GPIO_F37,
-       EXYNOS4X12_GPIO_J00,            /* 88 0x58 */
+       EXYNOS4X12_GPIO_MAX_PORT_PART_1_1, /* 88 0x58 */
+       /* EXYNOS4X12_GPIO_PART1_2 starts here */
+       EXYNOS4X12_GPIO_J00 = EXYNOS4X12_GPIO_MAX_PORT_PART_1_1,
        EXYNOS4X12_GPIO_J01,
        EXYNOS4X12_GPIO_J02,
        EXYNOS4X12_GPIO_J03,
@@ -438,9 +445,12 @@ enum exynos4X12_gpio_pin {
        EXYNOS4X12_GPIO_J16,
        EXYNOS4X12_GPIO_J17,
 
-       /* GPIO_PART2_STARTS */
-       EXYNOS4X12_GPIO_MAX_PORT_PART_1,/* 104 0x66 */
-       EXYNOS4X12_GPIO_K00 = EXYNOS4X12_GPIO_MAX_PORT_PART_1,
+       /**
+        * EXYNOS4X12_GPIO_PART2_0 is not used
+        * EXYNOS4X12_GPIO_PART2_1 starts here
+        */
+       EXYNOS4X12_GPIO_MAX_PORT_PART_1_2, /* 104 0x66 */
+       EXYNOS4X12_GPIO_K00 = EXYNOS4X12_GPIO_MAX_PORT_PART_1_2,
        EXYNOS4X12_GPIO_K01,
        EXYNOS4X12_GPIO_K02,
        EXYNOS4X12_GPIO_K03,
@@ -552,7 +562,9 @@ enum exynos4X12_gpio_pin {
        EXYNOS4X12_GPIO_Y65,
        EXYNOS4X12_GPIO_Y66,
        EXYNOS4X12_GPIO_Y67,
-       EXYNOS4X12_GPIO_M00,            /* 216 0xd8 */
+       EXYNOS4X12_GPIO_MAX_PORT_PART_2_1, /* 216 0xd8 */
+       /* EXYNOS4X12_GPIO_PART2_2 starts here */
+       EXYNOS4X12_GPIO_M00 = EXYNOS4X12_GPIO_MAX_PORT_PART_2_1,
        EXYNOS4X12_GPIO_M01,
        EXYNOS4X12_GPIO_M02,
        EXYNOS4X12_GPIO_M03,
@@ -592,7 +604,9 @@ enum exynos4X12_gpio_pin {
        EXYNOS4X12_GPIO_M45,
        EXYNOS4X12_GPIO_M46,
        EXYNOS4X12_GPIO_M47,
-       EXYNOS4X12_GPIO_X00,            /* 256 0x100 */
+       EXYNOS4X12_GPIO_MAX_PORT_PART_2_2, /* 256 0x100 */
+       /* EXYNOS4X12_GPIO_PART2_3 starts here */
+       EXYNOS4X12_GPIO_X00 = EXYNOS4X12_GPIO_MAX_PORT_PART_2_2,
        EXYNOS4X12_GPIO_X01,
        EXYNOS4X12_GPIO_X02,
        EXYNOS4X12_GPIO_X03,
@@ -625,9 +639,9 @@ enum exynos4X12_gpio_pin {
        EXYNOS4X12_GPIO_X36,
        EXYNOS4X12_GPIO_X37,
 
-       /* GPIO_PART3_STARTS */
-       EXYNOS4X12_GPIO_MAX_PORT_PART_2,/* 288 0x120 */
-       EXYNOS4X12_GPIO_Z0 = EXYNOS4X12_GPIO_MAX_PORT_PART_2,
+       /* EXYNOS4X12_GPIO_PART3 starts here */
+       EXYNOS4X12_GPIO_MAX_PORT_PART_2_3, /* 288 0x120 */
+       EXYNOS4X12_GPIO_Z0 = EXYNOS4X12_GPIO_MAX_PORT_PART_2_3,
        EXYNOS4X12_GPIO_Z1,
        EXYNOS4X12_GPIO_Z2,
        EXYNOS4X12_GPIO_Z3,
@@ -636,7 +650,7 @@ enum exynos4X12_gpio_pin {
        EXYNOS4X12_GPIO_Z6,
        EXYNOS4X12_GPIO_Z7,
 
-       /* GPIO_PART4_STARTS */
+       /* EXYNOS4X12_GPIO_PART4 starts here */
        EXYNOS4X12_GPIO_MAX_PORT_PART_3,/* 296 0x128 */
        EXYNOS4X12_GPIO_V00 = EXYNOS4X12_GPIO_MAX_PORT_PART_3,
        EXYNOS4X12_GPIO_V01,
@@ -1339,17 +1353,22 @@ struct gpio_info {
        unsigned int max_gpio;  /* Maximum GPIO in this part */
 };
 
-#define EXYNOS4_GPIO_NUM_PARTS 3
+#define EXYNOS4_GPIO_NUM_PARTS 4
 static struct gpio_info exynos4_gpio_data[EXYNOS4_GPIO_NUM_PARTS] = {
        { EXYNOS4_GPIO_PART1_BASE, EXYNOS4_GPIO_MAX_PORT_PART_1 },
-       { EXYNOS4_GPIO_PART2_BASE, EXYNOS4_GPIO_MAX_PORT_PART_2 },
+       { EXYNOS4_GPIO_PART2_0, EXYNOS4_GPIO_MAX_PORT_PART_2_0 },
+       { EXYNOS4_GPIO_PART2_1, EXYNOS4_GPIO_MAX_PORT_PART_2_1 },
        { EXYNOS4_GPIO_PART3_BASE, EXYNOS4_GPIO_MAX_PORT },
 };
 
-#define EXYNOS4X12_GPIO_NUM_PARTS      4
+#define EXYNOS4X12_GPIO_NUM_PARTS      8
 static struct gpio_info exynos4x12_gpio_data[EXYNOS4X12_GPIO_NUM_PARTS] = {
-       { EXYNOS4X12_GPIO_PART1_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_1 },
-       { EXYNOS4X12_GPIO_PART2_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_2 },
+       { EXYNOS4X12_GPIO_PART1_0, EXYNOS4X12_GPIO_MAX_PORT_PART_1_0 },
+       { EXYNOS4X12_GPIO_PART1_1, EXYNOS4X12_GPIO_MAX_PORT_PART_1_1 },
+       { EXYNOS4X12_GPIO_PART1_2, EXYNOS4X12_GPIO_MAX_PORT_PART_1_2 },
+       { EXYNOS4X12_GPIO_PART2_1, EXYNOS4X12_GPIO_MAX_PORT_PART_2_1 },
+       { EXYNOS4X12_GPIO_PART2_2, EXYNOS4X12_GPIO_MAX_PORT_PART_2_2 },
+       { EXYNOS4X12_GPIO_PART2_3, EXYNOS4X12_GPIO_MAX_PORT_PART_2_3 },
        { EXYNOS4X12_GPIO_PART3_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_3 },
        { EXYNOS4X12_GPIO_PART4_BASE, EXYNOS4X12_GPIO_MAX_PORT },
 };
@@ -1379,7 +1398,7 @@ static struct gpio_info exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] = {
 static inline struct gpio_info *get_gpio_data(void)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return exynos5420_gpio_data;
                else
                        return exynos5_gpio_data;
@@ -1396,7 +1415,7 @@ static inline struct gpio_info *get_gpio_data(void)
 static inline unsigned int get_bank_num(void)
 {
        if (cpu_is_exynos5()) {
-               if (proid_is_exynos5420())
+               if (proid_is_exynos5420() || proid_is_exynos5800())
                        return EXYNOS5420_GPIO_NUM_PARTS;
                else
                        return EXYNOS5_GPIO_NUM_PARTS;
index e8a98a54714a2411c49b49e2546d124537d549ff..3f97b31aeada2dcf20554894d338e7be47d77c4a 100644 (file)
@@ -210,6 +210,13 @@ struct exynos4_power {
        unsigned int    gps_alive_option;
 };
 
+struct exynos4412_power {
+       unsigned char   res1[0x0704];
+       unsigned int    usbhost_phy_control;
+       unsigned int    hsic1_phy_control;
+       unsigned int    hsic2_phy_control;
+};
+
 struct exynos5_power {
        unsigned int    om_stat;
        unsigned char   res1[0x18];
index 320763fd8cf1edcc2a00fd5081a20bee09956204..4968d3dd2e6cd732f4f49482a78464bea8c0d50f 100644 (file)
@@ -41,7 +41,4 @@ void set_usbhost_mode(unsigned int mode);
 void set_system_display_ctrl(void);
 int exynos_lcd_early_init(const void *blob);
 
-/* Initialize the Parade dP<->LVDS bridge if present */
-int parade_init(const void *blob);
-
 #endif /* _EXYNOS4_SYSTEM_H */
index a3cc96f39b2e6c3c3409bbf03518957f9fcf38dd..254136e2288323ed436d8ac1a1fa3a09fe7acc9c 100644 (file)
@@ -12,3 +12,8 @@
 #define MXC_CPU_MX6Q           0x63
 #define MXC_CPU_MX6D           0x64
 #define MXC_CPU_MX6SOLO                0x65 /* dummy ID */
+
+#define CS0_128                                        0
+#define CS0_64M_CS1_64M                                1
+#define CS0_64M_CS1_32M_CS2_32M                        2
+#define CS0_32M_CS1_32M_CS2_32M_CS3_32M                3
index 9512756619b3eae14075a9d36b756ac46ae4bdaa..df499957e54df2023606ae8669fb015c5d87340f 100644 (file)
@@ -57,8 +57,6 @@
 #define KS2_NETCP_PDMA_SCHED_BASE      0x24186100
 #define KS2_NETCP_PDMA_RX_FLOW_BASE    0x24189000
 #define KS2_NETCP_PDMA_RX_FLOW_NUM     96
-#define KS2_NETCP_PDMA_RX_FREE_QUEUE   4001
-#define KS2_NETCP_PDMA_RX_RCV_QUEUE    4002
 #define KS2_NETCP_PDMA_TX_SND_QUEUE    896
 
 /* NETCP */
index 5a9ea4fbca56dd089af020ab55a9c91c2c3dd2d2..195c0d300396dbed07898089595e676c761ee791 100644 (file)
@@ -98,8 +98,6 @@
 #define KS2_NETCP_PDMA_SCHED_BASE      0x02004c00
 #define KS2_NETCP_PDMA_RX_FLOW_BASE    0x02005000
 #define KS2_NETCP_PDMA_RX_FLOW_NUM     32
-#define KS2_NETCP_PDMA_RX_FREE_QUEUE   4001
-#define KS2_NETCP_PDMA_RX_RCV_QUEUE    4002
 #define KS2_NETCP_PDMA_TX_SND_QUEUE    648
 
 /* NETCP */
index 05532ada70d0d21d6beaa5c5ca6209b111a00f83..4f1197ea923df01a8a02d0660d81912f83e8d602 100644 (file)
 /* OSR memory size */
 #define KS2_OSR_SIZE                   0x100000
 
+/* SGMII SerDes */
+#define KS2_SGMII_SERDES2_BASE         0x02320000
+#define KS2_LANES_PER_SGMII_SERDES     2
+
 /* Number of DSP cores */
 #define KS2_NUM_DSPS                   4
 
 #define KS2_NETCP_PDMA_RX_FLOW_NUM     96
 #define KS2_NETCP_PDMA_TX_SND_QUEUE    896
 
+/* NETCP */
+#define KS2_NETCP_BASE                 0x26000000
+
 #endif /* __ASM_ARCH_HARDWARE_K2L_H */
index c6a54d8b91bac618df69390599f6af73d44d5fb5..16cbcee12b58534ac93afb3dfd0721ced3192eea 100644 (file)
@@ -122,6 +122,10 @@ typedef volatile unsigned int   *dv_reg_p;
 #define KS2_EDMA_QEESR                 0x108c
 #define KS2_EDMA_PARAM_1(x)            (0x4020 + (4 * x))
 
+/* NETCP pktdma */
+#define KS2_NETCP_PDMA_RX_FREE_QUEUE   4001
+#define KS2_NETCP_PDMA_RX_RCV_QUEUE    4002
+
 /* Chip Interrupt Controller */
 #define KS2_CIC2_BASE                  0x02608000
 
@@ -140,6 +144,7 @@ typedef volatile unsigned int   *dv_reg_p;
 #define KS2_DEVICE_STATE_CTRL_BASE     0x02620000
 #define KS2_JTAG_ID_REG                        (KS2_DEVICE_STATE_CTRL_BASE + 0x18)
 #define KS2_DEVSTAT                    (KS2_DEVICE_STATE_CTRL_BASE + 0x20)
+#define KS2_DEVCFG                     (KS2_DEVICE_STATE_CTRL_BASE + 0x14c)
 
 /* PSC */
 #define KS2_PSC_BASE                   0x02350000
index ccc8e4e7d64b57bc9d1e94587b5e8d0e42d3d690..e77ac400d8d09e819bcfb1aa70143821df3e71e8 100644 (file)
@@ -24,7 +24,6 @@
 #endif /* CONFIG_KW88F6281 */
 
 #include <asm/arch/soc.h>
-#define CONFIG_ARM926EJS       1       /* Basic Architecture */
 #define CONFIG_SYS_CACHELINE_SIZE      32
                                /* default Dcache Line length for kirkwood */
 #define CONFIG_MD5     /* get_random_hex on krikwood needs MD5 support */
index c985401d3c551e486173b62fa894cdd5efae9fb5..8f6426bc1b0184d4c362487ca499268aa7e783f1 100644 (file)
@@ -10,7 +10,6 @@
 #define _LPC32XX_CONFIG_H
 
 /* Basic CPU architecture */
-#define CONFIG_ARM926EJS
 #define CONFIG_ARCH_CPU_INIT
 
 #define CONFIG_NR_DRAM_BANKS_MAX       2
index f2c9687df42cb9da9cc480cc0d35b5255a400c9e..5e934da79738a1b62ff289f81b662b0d9dba77b0 100644 (file)
 
 #define OCRAM_BASE_ADDR                                0x10000000
 #define OCRAM_SIZE                             0x00020000
+#define OCRAM_BASE_S_ADDR                      0x10010000
+#define OCRAM_S_SIZE                           0x00010000
 
 #define CONFIG_SYS_IMMR                                0x01000000
+#define CONFIG_SYS_DCSRBAR                     0x20000000
+
+#define CONFIG_SYS_DCSR_DCFG_ADDR      (CONFIG_SYS_DCSRBAR + 0x00220000)
 
 #define CONFIG_SYS_FSL_DDR_ADDR                        (CONFIG_SYS_IMMR + 0x00080000)
 #define CONFIG_SYS_CCI400_ADDR                 (CONFIG_SYS_IMMR + 0x00180000)
+#define CONFIG_SYS_FSL_CSU_ADDR                 (CONFIG_SYS_IMMR + 0x00510000)
 #define CONFIG_SYS_IFC_ADDR                    (CONFIG_SYS_IMMR + 0x00530000)
 #define CONFIG_SYS_FSL_ESDHC_ADDR              (CONFIG_SYS_IMMR + 0x00560000)
 #define CONFIG_SYS_FSL_SCFG_ADDR               (CONFIG_SYS_IMMR + 0x00570000)
 #define CONFIG_SYS_NS16550_COM1                        (CONFIG_SYS_IMMR + 0x011c0500)
 #define CONFIG_SYS_NS16550_COM2                        (CONFIG_SYS_IMMR + 0x011d0500)
 #define CONFIG_SYS_DCU_ADDR                    (CONFIG_SYS_IMMR + 0x01ce0000)
+#define CONFIG_SYS_LS102XA_USB1_ADDR \
+       (CONFIG_SYS_IMMR + CONFIG_SYS_LS102XA_USB1_OFFSET)
 
+#define CONFIG_SYS_LS102XA_USB1_OFFSET         0x07600000
 #define CONFIG_SYS_TSEC1_OFFSET                        0x01d10000
 #define CONFIG_SYS_TSEC2_OFFSET                        0x01d50000
 #define CONFIG_SYS_TSEC3_OFFSET                        0x01d90000
@@ -49,6 +58,9 @@
 
 #define LPUART_BASE                            (CONFIG_SYS_IMMR + 0x01950000)
 
+#define CONFIG_SYS_PCIE1_ADDR                  (CONFIG_SYS_IMMR + 0x2400000)
+#define CONFIG_SYS_PCIE2_ADDR                  (CONFIG_SYS_IMMR + 0x2500000)
+
 #ifdef CONFIG_DDR_SPD
 #define CONFIG_SYS_FSL_DDR_BE
 #define CONFIG_VERY_BIG_RAM
 
 #define DCU_LAYER_MAX_NUM                      16
 
+#define QE_MURAM_SIZE          0x6000UL
+#define MAX_QE_RISC            1
+#define QE_NUM_OF_SNUM         28
+
 #define CONFIG_SYS_FSL_SRDS_1
 
 #ifdef CONFIG_LS102XA
@@ -80,6 +96,7 @@
 #define CONFIG_NUM_DDR_CONTROLLERS             1
 #define CONFIG_SYS_FSL_DDR_VER                 FSL_DDR_VER_5_0
 #define CONFIG_SYS_FSL_SEC_COMPAT              5
+#define CONFIG_USB_MAX_CONTROLLER_COUNT                1
 #else
 #error SoC not defined
 #endif
index 7995fe262b17c653569a247e617608be83039ce8..697d4ca4894b373d51bc7a44ad73b62402935519 100644 (file)
@@ -17,6 +17,9 @@
 #define SOC_VER_LS1021         0x11
 #define SOC_VER_LS1022         0x12
 
+#define CCSR_BRR_OFFSET                0xe4
+#define CCSR_SCRATCHRW1_OFFSET 0x200
+
 #define RCWSR0_SYS_PLL_RAT_SHIFT       25
 #define RCWSR0_SYS_PLL_RAT_MASK                0x1f
 #define RCWSR0_MEM_PLL_RAT_SHIFT       16
 #define ARCH_TIMER_CTRL_ENABLE         (1 << 0)
 #define SYS_COUNTER_CTRL_ENABLE                (1 << 24)
 
+#define DCFG_CCSR_PORSR1_RCW_MASK      0xff800000
+#define DCFG_CCSR_PORSR1_RCW_SRC_I2C   0x24800000
+
+#define DCFG_DCSR_PORCR1               0
+
 struct sys_info {
        unsigned long freq_processor[CONFIG_MAX_CPUS];
        unsigned long freq_systembus;
@@ -95,11 +103,10 @@ struct ccsr_gur {
        u32     sdhcpcr;
 };
 
-#define SCFG_SCFGREVCR_REV             0xffffffff
-#define SCFG_SCFGREVCR_NOREV           0
 #define SCFG_ETSECDMAMCR_LE_BD_FR      0xf8001a0f
 #define SCFG_ETSECCMCR_GE2_CLK125      0x04000000
 #define SCFG_PIXCLKCR_PXCKEN           0x80000000
+#define SCFG_QSPI_CLKSEL               0xc0100000
 
 /* Supplemental Configuration Unit */
 struct ccsr_scfg {
@@ -182,7 +189,7 @@ struct ccsr_scfg {
        u32 etsecmcr;
        u32 sdhciovserlcr;
        u32 resv14[61];
-       u32 sparecr;
+       u32 sparecr[8];
 };
 
 /* Clocking */
@@ -448,6 +455,7 @@ struct ccsr_ddr {
 
 #define CCI400_CTRLORD_TERM_BARRIER    0x00000008
 #define CCI400_CTRLORD_EN_BARRIER      0
+#define CCI400_SHAORD_NON_SHAREABLE    0x00000002
 
 /* CCI-400 registers */
 struct ccsr_cci400 {
diff --git a/arch/arm/include/asm/arch-ls102xa/ls102xa_stream_id.h b/arch/arm/include/asm/arch-ls102xa/ls102xa_stream_id.h
new file mode 100644 (file)
index 0000000..abd70fc
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __FSL_LS102XA_STREAM_ID_H_
+#define __FSL_LS102XA_STREAM_ID_H_
+
+struct smmu_stream_id {
+       uint16_t offset;
+       uint16_t stream_id;
+       char dev_name[32];
+};
+
+void ls102xa_config_smmu_stream_id(struct smmu_stream_id *id, uint32_t num);
+#endif
diff --git a/arch/arm/include/asm/arch-ls102xa/ns_access.h b/arch/arm/include/asm/arch-ls102xa/ns_access.h
new file mode 100644 (file)
index 0000000..b53f699
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __FSL_NS_ACCESS_H_
+#define __FSL_NS_ACCESS_H_
+
+enum csu_cslx_access {
+       CSU_NS_SUP_R = 0x08,
+       CSU_NS_SUP_W = 0x80,
+       CSU_NS_SUP_RW = 0x88,
+       CSU_NS_USER_R = 0x04,
+       CSU_NS_USER_W = 0x40,
+       CSU_NS_USER_RW = 0x44,
+       CSU_S_SUP_R = 0x02,
+       CSU_S_SUP_W = 0x20,
+       CSU_S_SUP_RW = 0x22,
+       CSU_S_USER_R = 0x01,
+       CSU_S_USER_W = 0x10,
+       CSU_S_USER_RW = 0x11,
+       CSU_ALL_RW = 0xff,
+};
+
+enum csu_cslx_ind {
+       CSU_CSLX_PCIE2_IO = 0,
+       CSU_CSLX_PCIE1_IO,
+       CSU_CSLX_MG2TPR_IP,
+       CSU_CSLX_IFC_MEM,
+       CSU_CSLX_OCRAM,
+       CSU_CSLX_GIC,
+       CSU_CSLX_PCIE1,
+       CSU_CSLX_OCRAM2,
+       CSU_CSLX_QSPI_MEM,
+       CSU_CSLX_PCIE2,
+       CSU_CSLX_SATA,
+       CSU_CSLX_USB3,
+       CSU_CSLX_SERDES = 32,
+       CSU_CSLX_QDMA,
+       CSU_CSLX_LPUART2,
+       CSU_CSLX_LPUART1,
+       CSU_CSLX_LPUART4,
+       CSU_CSLX_LPUART3,
+       CSU_CSLX_LPUART6,
+       CSU_CSLX_LPUART5,
+       CSU_CSLX_DSPI2 = 40,
+       CSU_CSLX_DSPI1,
+       CSU_CSLX_QSPI,
+       CSU_CSLX_ESDHC,
+       CSU_CSLX_2D_ACE,
+       CSU_CSLX_IFC,
+       CSU_CSLX_I2C1,
+       CSU_CSLX_USB2,
+       CSU_CSLX_I2C3,
+       CSU_CSLX_I2C2,
+       CSU_CSLX_DUART2 = 50,
+       CSU_CSLX_DUART1,
+       CSU_CSLX_WDT2,
+       CSU_CSLX_WDT1,
+       CSU_CSLX_EDMA,
+       CSU_CSLX_SYS_CNT,
+       CSU_CSLX_DMA_MUX2,
+       CSU_CSLX_DMA_MUX1,
+       CSU_CSLX_DDR,
+       CSU_CSLX_QUICC,
+       CSU_CSLX_DCFG_CCU_RCPM = 60,
+       CSU_CSLX_SECURE_BOOTROM,
+       CSU_CSLX_SFP,
+       CSU_CSLX_TMU,
+       CSU_CSLX_SECURE_MONITOR,
+       CSU_CSLX_RESERVED0,
+       CSU_CSLX_ETSEC1,
+       CSU_CSLX_SEC5_5,
+       CSU_CSLX_ETSEC3,
+       CSU_CSLX_ETSEC2,
+       CSU_CSLX_GPIO2 = 70,
+       CSU_CSLX_GPIO1,
+       CSU_CSLX_GPIO4,
+       CSU_CSLX_GPIO3,
+       CSU_CSLX_PLATFORM_CONT,
+       CSU_CSLX_CSU,
+       CSU_CSLX_ASRC,
+       CSU_CSLX_SPDIF,
+       CSU_CSLX_FLEXCAN2,
+       CSU_CSLX_FLEXCAN1,
+       CSU_CSLX_FLEXCAN4 = 80,
+       CSU_CSLX_FLEXCAN3,
+       CSU_CSLX_SAI2,
+       CSU_CSLX_SAI1,
+       CSU_CSLX_SAI4,
+       CSU_CSLX_SAI3,
+       CSU_CSLX_FTM2,
+       CSU_CSLX_FTM1,
+       CSU_CSLX_FTM4,
+       CSU_CSLX_FTM3,
+       CSU_CSLX_FTM6 = 90,
+       CSU_CSLX_FTM5,
+       CSU_CSLX_FTM8,
+       CSU_CSLX_FTM7,
+       CSU_CSLX_COP_DCSR,
+       CSU_CSLX_EPU,
+       CSU_CSLX_GDI,
+       CSU_CSLX_DDI,
+       CSU_CSLX_RESERVED1,
+       CSU_CSLX_USB3_PHY = 117,
+       CSU_CSLX_RESERVED2,
+       CSU_CSLX_MAX,
+};
+
+struct csu_ns_dev {
+       unsigned long ind;
+       uint32_t val;
+};
+
+void enable_devices_ns_access(struct csu_ns_dev *ns_dev, uint32_t num);
+
+#endif
diff --git a/arch/arm/include/asm/arch-ls102xa/spl.h b/arch/arm/include/asm/arch-ls102xa/spl.h
new file mode 100644 (file)
index 0000000..26e4ea1
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_SPL_H__
+#define __ASM_ARCH_SPL_H__
+
+#define BOOT_DEVICE_NONE       0
+#define BOOT_DEVICE_XIP                1
+#define BOOT_DEVICE_XIPWAIT    2
+#define BOOT_DEVICE_NAND       3
+#define BOOT_DEVICE_ONENAND    4
+#define BOOT_DEVICE_MMC1       5
+#define BOOT_DEVICE_MMC2       6
+#define BOOT_DEVICE_MMC2_2     7
+#define BOOT_DEVICE_SPI                10
+
+#endif /* __ASM_ARCH_SPL_H__ */
index 054c680a5a14ec40304aef6876d72fd8081ac16d..f059d0f664b35b4f5630347cdffeb60c56194efb 100644 (file)
  */
 #define WBED           1
 
-#define CS0_128                                        0
-#define CS0_64M_CS1_64M                                1
-#define CS0_64M_CS1_32M_CS2_32M                        2
-#define CS0_32M_CS1_32M_CS2_32M_CS3_32M                3
-
 /*
  * CSPI register definitions
  */
@@ -414,8 +409,7 @@ struct weim {
 
 #if defined(CONFIG_MX51)
 struct iomuxc {
-       u32     gpr0;
-       u32     gpr1;
+       u32     gpr[2];
        u32     omux0;
        u32     omux1;
        u32     omux2;
@@ -424,9 +418,7 @@ struct iomuxc {
 };
 #elif defined(CONFIG_MX53)
 struct iomuxc {
-       u32     gpr0;
-       u32     gpr1;
-       u32     gpr2;
+       u32     gpr[3];
        u32     omux0;
        u32     omux1;
        u32     omux2;
index 3c58a0ab6041897794d28ac514dd7ab2fe256949..a6de5ee4bc12623a769b96a8f9bc86dde7b9e47f 100644 (file)
@@ -43,10 +43,10 @@ enum mxc_clock {
 };
 
 enum enet_freq {
-       ENET_25MHz,
-       ENET_50MHz,
-       ENET_100MHz,
-       ENET_125MHz,
+       ENET_25MHZ,
+       ENET_50MHZ,
+       ENET_100MHZ,
+       ENET_125MHZ,
 };
 
 u32 imx_get_uartclk(void);
@@ -60,10 +60,13 @@ void enable_uart_clk(unsigned char enable);
 int enable_cspi_clock(unsigned char enable, unsigned spi_num);
 int enable_usdhc_clk(unsigned char enable, unsigned bus_num);
 int enable_sata_clock(void);
+void disable_sata_clock(void);
 int enable_pcie_clock(void);
 int enable_i2c_clk(unsigned char enable, unsigned i2c_num);
 int enable_spi_clk(unsigned char enable, unsigned spi_num);
 void enable_ipu_clock(void);
 int enable_fec_anatop_clock(enum enet_freq freq);
 void enable_enet_clk(unsigned char enable);
+void enable_qspi_clk(int qspi_num);
+void enable_thermal_clk(void);
 #endif /* __ASM_ARCH_CLOCK_H */
index e67b5b9e7de29628e8e13097d110f0489dca7502..39f3c0707b8ee38eb9eda7e891a64e9f913298cc 100644 (file)
@@ -89,7 +89,7 @@ struct mxc_ccm_reg {
        u32 analog_pll_video_tog;
        u32 analog_pll_video_num;               /* 0x40b0 */
        u32 analog_reserved6[3];
-       u32 analog_pll_vedio_denon;             /* 0x40c0 */
+       u32 analog_pll_video_denom;             /* 0x40c0 */
        u32 analog_reserved7[7];
        u32 analog_pll_enet;                    /* 0x40e0 */
        u32 analog_pll_enet_set;
@@ -228,6 +228,8 @@ struct mxc_ccm_reg {
 #ifdef CONFIG_MX6SX
 #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK              (0x7 << 7)
 #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET            7
+#endif
+#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX))
 #define MXC_CCM_CSCMR1_PER_CLK_SEL_MASK                        (1 << 6)
 #define MXC_CCM_CSCMR1_PER_CLK_SEL_OFFSET              6
 #endif
@@ -931,10 +933,10 @@ struct mxc_ccm_reg {
 #define BF_ANADIG_PLL_VIDEO_RSVD0(v)  \
        (((v) << 22) & BM_ANADIG_PLL_VIDEO_RSVD0)
 #define BM_ANADIG_PLL_VIDEO_SSC_EN 0x00200000
-#define BP_ANADIG_PLL_VIDEO_TEST_DIV_SELECT      19
-#define BM_ANADIG_PLL_VIDEO_TEST_DIV_SELECT 0x00180000
-#define BF_ANADIG_PLL_VIDEO_TEST_DIV_SELECT(v)  \
-       (((v) << 19) & BM_ANADIG_PLL_VIDEO_TEST_DIV_SELECT)
+#define BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT      19
+#define BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT 0x00180000
+#define BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(v)  \
+       (((v) << 19) & BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT)
 #define BM_ANADIG_PLL_VIDEO_PFD_OFFSET_EN 0x00040000
 #define BM_ANADIG_PLL_VIDEO_DITHER_ENABLE 0x00020000
 #define BM_ANADIG_PLL_VIDEO_BYPASS 0x00010000
index a159309bb9fc1b9a8c7ffdb15d39e64517491f8f..c968600b770f397972722e655221a0f834d49d6c 100644 (file)
 #define AIPS3_END_ADDR                 0x022FFFFF
 #define WEIM_ARB_BASE_ADDR              0x50000000
 #define WEIM_ARB_END_ADDR               0x57FFFFFF
-#define QSPI1_ARB_BASE_ADDR             0x60000000
-#define QSPI1_ARB_END_ADDR              0x6FFFFFFF
-#define QSPI2_ARB_BASE_ADDR             0x70000000
-#define QSPI2_ARB_END_ADDR              0x7FFFFFFF
+#define QSPI0_AMBA_BASE                0x60000000
+#define QSPI0_AMBA_END                 0x6FFFFFFF
+#define QSPI1_AMBA_BASE                0x70000000
+#define QSPI1_AMBA_END                 0x7FFFFFFF
 #else
 #define SATA_ARB_BASE_ADDR              0x02200000
 #define SATA_ARB_END_ADDR               0x02203FFF
 #define AUDMUX_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x58000)
 #ifdef CONFIG_MX6SX
 #define SAI2_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x5C000)
-#define QSPI1_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x60000)
-#define QSPI2_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x64000)
+#define QSPI0_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x60000)
+#define QSPI1_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x64000)
 #else
 #define MIPI_CSI2_BASE_ADDR         (AIPS2_OFF_BASE_ADDR + 0x5C000)
 #define MIPI_DSI_BASE_ADDR          (AIPS2_OFF_BASE_ADDR + 0x60000)
@@ -332,6 +332,43 @@ extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac);
 #define SRC_SCR_CORE_3_ENABLE_OFFSET    24
 #define SRC_SCR_CORE_3_ENABLE_MASK      (1<<SRC_SCR_CORE_3_ENABLE_OFFSET)
 
+/* WEIM registers */
+struct weim {
+       u32 cs0gcr1;
+       u32 cs0gcr2;
+       u32 cs0rcr1;
+       u32 cs0rcr2;
+       u32 cs0wcr1;
+       u32 cs0wcr2;
+
+       u32 cs1gcr1;
+       u32 cs1gcr2;
+       u32 cs1rcr1;
+       u32 cs1rcr2;
+       u32 cs1wcr1;
+       u32 cs1wcr2;
+
+       u32 cs2gcr1;
+       u32 cs2gcr2;
+       u32 cs2rcr1;
+       u32 cs2rcr2;
+       u32 cs2wcr1;
+       u32 cs2wcr2;
+
+       u32 cs3gcr1;
+       u32 cs3gcr2;
+       u32 cs3rcr1;
+       u32 cs3rcr2;
+       u32 cs3wcr1;
+       u32 cs3wcr2;
+
+       u32 unused[12];
+
+       u32 wcr;
+       u32 wiar;
+       u32 ear;
+};
+
 /* System Reset Controller (SRC) */
 struct src {
        u32     scr;
index 045ccc4512f3710ad4947f52ac3c904b61ab94eb..9ded3d851cd6648fe967649e3d094d9602313b97 100644 (file)
@@ -14,12 +14,31 @@ enum {
        MX6_PAD_ECSPI1_MOSI__ECSPI_MOSI                         = IOMUX_PAD(0x035C, 0x006C, 0, 0x0688, 0, 0),
        MX6_PAD_ECSPI1_SCLK__ECSPI_SCLK                         = IOMUX_PAD(0x0360, 0x0070, 0, 0x067C, 0, 0),
        MX6_PAD_ECSPI1_SS0__GPIO4_IO11                          = IOMUX_PAD(0x0364, 0x0074, 5, 0x0000, 0, 0),
+       MX6_PAD_SD1_CLK__USDHC1_CLK                                     = IOMUX_PAD(0x0534, 0x022C, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_CMD__USDHC1_CMD                                     = IOMUX_PAD(0x0538, 0x0230, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT0__USDHC1_DAT0                           = IOMUX_PAD(0x053C, 0x0234, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT1__USDHC1_DAT1                           = IOMUX_PAD(0x0540, 0x0238, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT2__USDHC1_DAT2                           = IOMUX_PAD(0x0544, 0x023C, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT3__USDHC1_DAT3                           = IOMUX_PAD(0x0548, 0x0240, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT4__USDHC1_DAT4                           = IOMUX_PAD(0x054C, 0x0244, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT5__USDHC1_DAT5                           = IOMUX_PAD(0x0550, 0x0248, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT6__USDHC1_DAT6                           = IOMUX_PAD(0x0554, 0x024C, 0, 0x0000, 0, 0),
+       MX6_PAD_SD1_DAT7__USDHC1_DAT7                           = IOMUX_PAD(0x0558, 0x0250, 0, 0x0000, 0, 0),
+       MX6_PAD_KEY_ROW7__GPIO_4_7                                      = IOMUX_PAD(0x04B0, 0x01A8, 5, 0x0000, 0, 0),
        MX6_PAD_SD2_CLK__USDHC2_CLK                             = IOMUX_PAD(0x055C, 0x0254, 0, 0x0000, 0, 0),
        MX6_PAD_SD2_CMD__USDHC2_CMD                             = IOMUX_PAD(0x0560, 0x0258, 0, 0x0000, 0, 0),
        MX6_PAD_SD2_DAT0__USDHC2_DAT0                           = IOMUX_PAD(0x0564, 0x025C, 0, 0x0000, 0, 0),
        MX6_PAD_SD2_DAT1__USDHC2_DAT1                           = IOMUX_PAD(0x0568, 0x0260, 0, 0x0000, 0, 0),
        MX6_PAD_SD2_DAT2__USDHC2_DAT2                           = IOMUX_PAD(0x056C, 0x0264, 0, 0x0000, 0, 0),
        MX6_PAD_SD2_DAT3__USDHC2_DAT3                           = IOMUX_PAD(0x0570, 0x0268, 0, 0x0000, 0, 0),
+       MX6_PAD_SD2_DAT7__GPIO_5_0                                      = IOMUX_PAD(0x0580, 0x0278, 5, 0x0000, 0, 0),
+       MX6_PAD_SD3_CLK__USDHC3_CLK                                     = IOMUX_PAD(0x0588, 0x0280, 0, 0x0000, 0, 0),
+       MX6_PAD_SD3_CMD__USDHC3_CMD                                     = IOMUX_PAD(0x058C, 0x0284, 0, 0x0000, 0, 0),
+       MX6_PAD_SD3_DAT0__USDHC3_DAT0                           = IOMUX_PAD(0x0590, 0x0288, 0, 0x0000, 0, 0),
+       MX6_PAD_SD3_DAT1__USDHC3_DAT1                           = IOMUX_PAD(0x0594, 0x028C, 0, 0x0000, 0, 0),
+       MX6_PAD_SD3_DAT2__USDHC3_DAT2                           = IOMUX_PAD(0x0598, 0x0290, 0, 0x0000, 0, 0),
+       MX6_PAD_SD3_DAT3__USDHC3_DAT3                           = IOMUX_PAD(0x059C, 0x0294, 0, 0x0000, 0, 0),
+       MX6_PAD_REF_CLK_32K__GPIO_3_22                          = IOMUX_PAD(0x0530, 0x0228, 5, 0x0000, 0, 0),
        MX6_PAD_UART1_RXD__UART1_RXD                            = IOMUX_PAD(0x05A0, 0x0298, 0, 0x07FC, 0, 0),
        MX6_PAD_UART1_TXD__UART1_TXD                            = IOMUX_PAD(0x05A4, 0x029C, 0, 0x0000, 0, 0),
 
@@ -34,5 +53,10 @@ enum {
        MX6_PAD_FEC_REF_CLK__FEC_REF_OUT                        = IOMUX_PAD(0x424, 0x134, 0x10, 0x000, 0, 0),
        MX6_PAD_FEC_RX_ER__GPIO_4_19                            = IOMUX_PAD(0x0428, 0x0138, 5, 0x0000, 0, 0),
        MX6_PAD_FEC_TX_CLK__GPIO_4_21                           = IOMUX_PAD(0x0434, 0x0144, 5, 0x0000, 0, 0),
+
+       MX6_PAD_EPDC_PWRCOM__ANATOP_USBOTG1_ID                  = IOMUX_PAD(0x03D0, 0x00E0, 4, 0x05DC, 0, 0),
+
+       MX6_PAD_KEY_COL4__USB_USBOTG1_PWR                       = IOMUX_PAD(0x0484, 0x017C, 6, 0x0000, 0, 0),
+       MX6_PAD_KEY_COL5__USB_USBOTG2_PWR                       = IOMUX_PAD(0x0488, 0x0180, 6, 0x0000, 0, 0),
 };
 #endif /* __ASM_ARCH_MX6_MX6SL_PINS_H__ */
index c35a905141a85deed8d328b374e4d7878093bccf..28ba84415f05b667d24dd329f1a1953189e67a53 100644 (file)
@@ -26,6 +26,7 @@ u32 get_cpu_rev(void);
 
 const char *get_imx_type(u32 imxtype);
 unsigned imx_ddr_size(void);
+void set_chipselect_size(int const);
 
 /*
  * Initializes on-chip ethernet controllers.
index 83d858f305c4b5dde57e13aee77cae7252aab786..e19975efaf50f2e84c4e3accdef0fe103af275e6 100644 (file)
@@ -22,6 +22,9 @@ extern const struct emif_regs emif_regs_elpida_200_mhz_2cs;
 extern const struct emif_regs emif_regs_elpida_380_mhz_1cs;
 extern const struct emif_regs emif_regs_elpida_400_mhz_1cs;
 extern const struct emif_regs emif_regs_elpida_400_mhz_2cs;
+extern const struct dmm_lisa_map_regs lisa_map_2G_x_1_x_2;
+extern const struct dmm_lisa_map_regs lisa_map_2G_x_2_x_2;
+extern const struct dmm_lisa_map_regs ma_lisa_map_2G_x_2_x_2;
 struct omap_sysinfo {
        char *board_string;
 };
index 30d9de276492caf863b3d93429cb099bfdb9e0e4..0dc584b8ce68a6d38ba8a711b68fa3bd7842652a 100644 (file)
 
 /* TPS659038 */
 #define TPS659038_I2C_SLAVE_ADDR               0x58
-#define TPS659038_REG_ADDR_SMPS12_MPU          0x23
-#define TPS659038_REG_ADDR_SMPS45_EVE          0x2B
-#define TPS659038_REG_ADDR_SMPS6_GPU           0x2F
-#define TPS659038_REG_ADDR_SMPS7_CORE          0x33
-#define TPS659038_REG_ADDR_SMPS8_IVA           0x37
+#define TPS659038_REG_ADDR_SMPS12              0x23
+#define TPS659038_REG_ADDR_SMPS45              0x2B
+#define TPS659038_REG_ADDR_SMPS6               0x2F
+#define TPS659038_REG_ADDR_SMPS7               0x33
+#define TPS659038_REG_ADDR_SMPS8               0x37
 
 /* TPS */
 #define TPS62361_I2C_SLAVE_ADDR                0x60
  */
 #define CONFIG_DEFAULT_OMAP_RESET_TIME_MAX_USEC        31219
 
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
 #define V_OSCK                 20000000        /* Clock output from T2 */
 #else
 #define V_OSCK                 19200000        /* Clock output from T2 */
index b9600cf42dbc5a03c384b5271e77b301cb3f2618..e2181598d5d8dd0190a764493655594afbfd1219 100644 (file)
@@ -27,7 +27,7 @@
 #define CONTROL_CORE_ID_CODE   0x4A002204
 #define CONTROL_WKUP_ID_CODE   0x4AE0C204
 
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
 #define CONTROL_ID_CODE                CONTROL_WKUP_ID_CODE
 #else
 #define CONTROL_ID_CODE                CONTROL_CORE_ID_CODE
@@ -163,7 +163,7 @@ struct s32ktimer {
  * much larger) and do not, at this time, make use of the additional
  * space.
  */
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
 #define NON_SECURE_SRAM_START  0x40300000
 #define NON_SECURE_SRAM_END    0x40380000      /* Not inclusive */
 #else
index fdccd222dd4e439bc0eae2c8da95e01931b4bf86..1eed7b1d569d2ac51e8cfca0321650547674e56d 100644 (file)
@@ -11,7 +11,6 @@
 
 #include <asm/arch/pantheon.h>
 
-#define CONFIG_ARM926EJS       1       /* Basic Architecture */
 /* default Dcache Line length for pantheon */
 #define CONFIG_SYS_CACHELINE_SIZE      32
 
index d25ea61e263a13ef0de586274982d2cf62b0cd74..93b20af7ea2490734ee54a13277570b8354c12bd 100644 (file)
@@ -13,6 +13,9 @@ void r8a7790_pinmux_init(void);
 #elif defined(CONFIG_R8A7791)
 #include "r8a7791-gpio.h"
 void r8a7791_pinmux_init(void);
+#elif defined(CONFIG_R8A7793)
+#include "r8a7793-gpio.h"
+void r8a7793_pinmux_init(void);
 #elif defined(CONFIG_R8A7794)
 #include "r8a7794-gpio.h"
 void r8a7794_pinmux_init(void);
diff --git a/arch/arm/include/asm/arch-rmobile/mmc.h b/arch/arm/include/asm/arch-rmobile/mmc.h
new file mode 100644 (file)
index 0000000..4e0fef1
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Renesas SuperH MMCIF driver.
+ *
+ * Copyright (C)  2014 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+ * Copyright (C)  2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+#ifndef _RMOBILE_MMC_H_
+#define _RMOBILE_MMC_H_
+
+int mmcif_mmc_init(void);
+
+#endif /* _RMOBILE_MMC_H_ */
index 6ef665d5835e3c3da16b10afc8d2fa9369b14943..132d58c117a7b8af76b216455b4d4ee2e00edb94 100644 (file)
 
 #include "rcar-base.h"
 
+/* SH-I2C */
+#define CONFIG_SYS_I2C_SH_BASE2        0xE6520000
+#define CONFIG_SYS_I2C_SH_BASE3        0xE60B0000
+
+/* Module stop control/status register bits */
+#define MSTP0_BITS     0x00640801
+#define MSTP1_BITS     0xDB6E9BDF
+#define MSTP2_BITS     0x300DA1FC
+#define MSTP3_BITS     0xF08CF831
+#define MSTP4_BITS     0x80000184
+#define MSTP5_BITS     0x44C00046
+#define MSTP7_BITS     0x07F30718
+#define MSTP8_BITS     0x01F0FF84
+#define MSTP9_BITS     0xF5979FCF
+#define MSTP10_BITS    0xFFFEFFE0
+#define MSTP11_BITS    0x00000000
+
 #define R8A7790_CUT_ES2X       2
 #define IS_R8A7790_ES2()       \
        (rmobile_get_cpu_rev_integer() == R8A7790_CUT_ES2X)
index 592c52474fe2d5a486f07060a5776dbca0864dde..d2cbcd761dceee6d459c0a34aefd7afb83b1d299 100644 (file)
 /*
  * R-Car (R8A7791) I/O Addresses
  */
+
+/* SH-I2C */
+#define CONFIG_SYS_I2C_SH_BASE2        0xE60B0000
+
 #define DBSC3_1_QOS_R0_BASE    0xE67A1000
 #define DBSC3_1_QOS_R1_BASE    0xE67A1100
 #define DBSC3_1_QOS_R2_BASE    0xE67A1200
 #define DBSC3_1_QOS_W15_BASE   0xE67A2F00
 #define DBSC3_1_DBADJ2         0xE67A00C8
 
+/* Module stop control/status register bits */
+#define MSTP0_BITS     0x00640801
+#define MSTP1_BITS     0x9B6C9B5A
+#define MSTP2_BITS     0x100D21FC
+#define MSTP3_BITS     0xF08CD810
+#define MSTP4_BITS     0x800001C4
+#define MSTP5_BITS     0x44C00046
+#define MSTP7_BITS     0x05BFE618
+#define MSTP8_BITS     0x40C0FE85
+#define MSTP9_BITS     0xFF979FFF
+#define MSTP10_BITS    0xFFFEFFE0
+#define MSTP11_BITS    0x000001C0
+
 #define R8A7791_CUT_ES2X       2
 #define IS_R8A7791_ES2()       \
        (rmobile_get_cpu_rev_integer() == R8A7791_CUT_ES2X)
diff --git a/arch/arm/include/asm/arch-rmobile/r8a7793-gpio.h b/arch/arm/include/asm/arch-rmobile/r8a7793-gpio.h
new file mode 100644 (file)
index 0000000..f9a29fc
--- /dev/null
@@ -0,0 +1,438 @@
+#ifndef __ASM_R8A7793_H__
+#define __ASM_R8A7793_H__
+
+/* Pin Function Controller:
+ * GPIO_FN_xx - GPIO used to select pin function
+ * GPIO_GP_x_x - GPIO mapped to real I/O pin on CPU
+ */
+enum {
+       GPIO_GP_0_0, GPIO_GP_0_1, GPIO_GP_0_2, GPIO_GP_0_3,
+       GPIO_GP_0_4, GPIO_GP_0_5, GPIO_GP_0_6, GPIO_GP_0_7,
+       GPIO_GP_0_8, GPIO_GP_0_9, GPIO_GP_0_10, GPIO_GP_0_11,
+       GPIO_GP_0_12, GPIO_GP_0_13, GPIO_GP_0_14, GPIO_GP_0_15,
+       GPIO_GP_0_16, GPIO_GP_0_17, GPIO_GP_0_18, GPIO_GP_0_19,
+       GPIO_GP_0_20, GPIO_GP_0_21, GPIO_GP_0_22, GPIO_GP_0_23,
+       GPIO_GP_0_24, GPIO_GP_0_25, GPIO_GP_0_26, GPIO_GP_0_27,
+       GPIO_GP_0_28, GPIO_GP_0_29, GPIO_GP_0_30, GPIO_GP_0_31,
+
+       GPIO_GP_1_0, GPIO_GP_1_1, GPIO_GP_1_2, GPIO_GP_1_3,
+       GPIO_GP_1_4, GPIO_GP_1_5, GPIO_GP_1_6, GPIO_GP_1_7,
+       GPIO_GP_1_8, GPIO_GP_1_9, GPIO_GP_1_10, GPIO_GP_1_11,
+       GPIO_GP_1_12, GPIO_GP_1_13, GPIO_GP_1_14, GPIO_GP_1_15,
+       GPIO_GP_1_16, GPIO_GP_1_17, GPIO_GP_1_18, GPIO_GP_1_19,
+       GPIO_GP_1_20, GPIO_GP_1_21, GPIO_GP_1_22, GPIO_GP_1_23,
+       GPIO_GP_1_24, GPIO_GP_1_25,
+
+       GPIO_GP_2_0, GPIO_GP_2_1, GPIO_GP_2_2, GPIO_GP_2_3,
+       GPIO_GP_2_4, GPIO_GP_2_5, GPIO_GP_2_6, GPIO_GP_2_7,
+       GPIO_GP_2_8, GPIO_GP_2_9, GPIO_GP_2_10, GPIO_GP_2_11,
+       GPIO_GP_2_12, GPIO_GP_2_13, GPIO_GP_2_14, GPIO_GP_2_15,
+       GPIO_GP_2_16, GPIO_GP_2_17, GPIO_GP_2_18, GPIO_GP_2_19,
+       GPIO_GP_2_20, GPIO_GP_2_21, GPIO_GP_2_22, GPIO_GP_2_23,
+       GPIO_GP_2_24, GPIO_GP_2_25, GPIO_GP_2_26, GPIO_GP_2_27,
+       GPIO_GP_2_28, GPIO_GP_2_29, GPIO_GP_2_30, GPIO_GP_2_31,
+
+       GPIO_GP_3_0, GPIO_GP_3_1, GPIO_GP_3_2, GPIO_GP_3_3,
+       GPIO_GP_3_4, GPIO_GP_3_5, GPIO_GP_3_6, GPIO_GP_3_7,
+       GPIO_GP_3_8, GPIO_GP_3_9, GPIO_GP_3_10, GPIO_GP_3_11,
+       GPIO_GP_3_12, GPIO_GP_3_13, GPIO_GP_3_14, GPIO_GP_3_15,
+       GPIO_GP_3_16, GPIO_GP_3_17, GPIO_GP_3_18, GPIO_GP_3_19,
+       GPIO_GP_3_20, GPIO_GP_3_21, GPIO_GP_3_22, GPIO_GP_3_23,
+       GPIO_GP_3_24, GPIO_GP_3_25, GPIO_GP_3_26, GPIO_GP_3_27,
+       GPIO_GP_3_28, GPIO_GP_3_29, GPIO_GP_3_30, GPIO_GP_3_31,
+
+       GPIO_GP_4_0, GPIO_GP_4_1, GPIO_GP_4_2, GPIO_GP_4_3,
+       GPIO_GP_4_4, GPIO_GP_4_5, GPIO_GP_4_6, GPIO_GP_4_7,
+       GPIO_GP_4_8, GPIO_GP_4_9, GPIO_GP_4_10, GPIO_GP_4_11,
+       GPIO_GP_4_12, GPIO_GP_4_13, GPIO_GP_4_14, GPIO_GP_4_15,
+       GPIO_GP_4_16, GPIO_GP_4_17, GPIO_GP_4_18, GPIO_GP_4_19,
+       GPIO_GP_4_20, GPIO_GP_4_21, GPIO_GP_4_22, GPIO_GP_4_23,
+       GPIO_GP_4_24, GPIO_GP_4_25, GPIO_GP_4_26, GPIO_GP_4_27,
+       GPIO_GP_4_28, GPIO_GP_4_29, GPIO_GP_4_30, GPIO_GP_4_31,
+
+       GPIO_GP_5_0, GPIO_GP_5_1, GPIO_GP_5_2, GPIO_GP_5_3,
+       GPIO_GP_5_4, GPIO_GP_5_5, GPIO_GP_5_6, GPIO_GP_5_7,
+       GPIO_GP_5_8, GPIO_GP_5_9, GPIO_GP_5_10, GPIO_GP_5_11,
+       GPIO_GP_5_12, GPIO_GP_5_13, GPIO_GP_5_14, GPIO_GP_5_15,
+       GPIO_GP_5_16, GPIO_GP_5_17, GPIO_GP_5_18, GPIO_GP_5_19,
+       GPIO_GP_5_20, GPIO_GP_5_21, GPIO_GP_5_22, GPIO_GP_5_23,
+       GPIO_GP_5_24, GPIO_GP_5_25, GPIO_GP_5_26, GPIO_GP_5_27,
+       GPIO_GP_5_28, GPIO_GP_5_29, GPIO_GP_5_30, GPIO_GP_5_31,
+
+       GPIO_GP_6_0, GPIO_GP_6_1, GPIO_GP_6_2, GPIO_GP_6_3,
+       GPIO_GP_6_4, GPIO_GP_6_5, GPIO_GP_6_6, GPIO_GP_6_7,
+       GPIO_GP_6_8, GPIO_GP_6_9, GPIO_GP_6_10, GPIO_GP_6_11,
+       GPIO_GP_6_12, GPIO_GP_6_13, GPIO_GP_6_14, GPIO_GP_6_15,
+       GPIO_GP_6_16, GPIO_GP_6_17, GPIO_GP_6_18, GPIO_GP_6_19,
+       GPIO_GP_6_20, GPIO_GP_6_21, GPIO_GP_6_22, GPIO_GP_6_23,
+       GPIO_GP_6_24, GPIO_GP_6_25, GPIO_GP_6_26, GPIO_GP_6_27,
+       GPIO_GP_6_28, GPIO_GP_6_29, GPIO_GP_6_30, GPIO_GP_6_31,
+
+       GPIO_GP_7_0, GPIO_GP_7_1, GPIO_GP_7_2, GPIO_GP_7_3,
+       GPIO_GP_7_4, GPIO_GP_7_5, GPIO_GP_7_6, GPIO_GP_7_7,
+       GPIO_GP_7_8, GPIO_GP_7_9, GPIO_GP_7_10, GPIO_GP_7_11,
+       GPIO_GP_7_12, GPIO_GP_7_13, GPIO_GP_7_14, GPIO_GP_7_15,
+       GPIO_GP_7_16, GPIO_GP_7_17, GPIO_GP_7_18, GPIO_GP_7_19,
+       GPIO_GP_7_20, GPIO_GP_7_21, GPIO_GP_7_22, GPIO_GP_7_23,
+       GPIO_GP_7_24, GPIO_GP_7_25,
+
+       GPIO_FN_EX_CS0_N, GPIO_FN_RD_N, GPIO_FN_AUDIO_CLKA,
+       GPIO_FN_VI0_CLK, GPIO_FN_VI0_DATA0_VI0_B0,
+       GPIO_FN_VI0_DATA0_VI0_B1, GPIO_FN_VI0_DATA0_VI0_B2,
+       GPIO_FN_VI0_DATA0_VI0_B4, GPIO_FN_VI0_DATA0_VI0_B5,
+       GPIO_FN_VI0_DATA0_VI0_B6, GPIO_FN_VI0_DATA0_VI0_B7,
+       GPIO_FN_USB0_PWEN, GPIO_FN_USB0_OVC, GPIO_FN_USB1_PWEN,
+
+       /* IPSR0 */
+       GPIO_FN_D0, GPIO_FN_D1, GPIO_FN_D2, GPIO_FN_D3, GPIO_FN_D4, GPIO_FN_D5,
+       GPIO_FN_D6, GPIO_FN_D7, GPIO_FN_D8, GPIO_FN_D9, GPIO_FN_D10,
+       GPIO_FN_D11, GPIO_FN_D12, GPIO_FN_D13, GPIO_FN_D14, GPIO_FN_D15,
+       GPIO_FN_A0, GPIO_FN_ATAWR0_N_C, GPIO_FN_MSIOF0_SCK_B,
+       GPIO_FN_SCL0_C, GPIO_FN_PWM2_B,
+       GPIO_FN_A1, GPIO_FN_MSIOF0_SYNC_B, GPIO_FN_A2, GPIO_FN_MSIOF0_SS1_B,
+       GPIO_FN_A3, GPIO_FN_MSIOF0_SS2_B, GPIO_FN_A4, GPIO_FN_MSIOF0_TXD_B,
+       GPIO_FN_A5, GPIO_FN_MSIOF0_RXD_B, GPIO_FN_A6, GPIO_FN_MSIOF1_SCK,
+
+       /* IPSR1 */
+       GPIO_FN_A7, GPIO_FN_MSIOF1_SYNC, GPIO_FN_A8,
+       GPIO_FN_MSIOF1_SS1, GPIO_FN_SCL0,
+       GPIO_FN_A9, GPIO_FN_MSIOF1_SS2, GPIO_FN_SDA0,
+       GPIO_FN_A10, GPIO_FN_MSIOF1_TXD, GPIO_FN_MSIOF1_TXD_D,
+       GPIO_FN_A11, GPIO_FN_MSIOF1_RXD, GPIO_FN_SCL3_D, GPIO_FN_MSIOF1_RXD_D,
+       GPIO_FN_A12, GPIO_FN_FMCLK, GPIO_FN_SDA3_D, GPIO_FN_MSIOF1_SCK_D,
+       GPIO_FN_A13, GPIO_FN_ATAG0_N_C, GPIO_FN_BPFCLK, GPIO_FN_MSIOF1_SS1_D,
+       GPIO_FN_A14, GPIO_FN_ATADIR0_N_C, GPIO_FN_FMIN,
+       GPIO_FN_FMIN_C, GPIO_FN_MSIOF1_SYNC_D,
+       GPIO_FN_A15, GPIO_FN_BPFCLK_C,
+       GPIO_FN_A16, GPIO_FN_DREQ2_B, GPIO_FN_FMCLK_C, GPIO_FN_SCIFA1_SCK_B,
+       GPIO_FN_A17, GPIO_FN_DACK2_B, GPIO_FN_SDA0_C,
+       GPIO_FN_A18, GPIO_FN_DREQ1, GPIO_FN_SCIFA1_RXD_C, GPIO_FN_SCIFB1_RXD_C,
+
+       /* IPSR2 */
+       GPIO_FN_A19, GPIO_FN_DACK1, GPIO_FN_SCIFA1_TXD_C,
+       GPIO_FN_SCIFB1_TXD_C, GPIO_FN_SCIFB1_SCK_B,
+       GPIO_FN_A20, GPIO_FN_SPCLK,
+       GPIO_FN_A21, GPIO_FN_ATAWR0_N_B, GPIO_FN_MOSI_IO0,
+       GPIO_FN_A22, GPIO_FN_MISO_IO1, GPIO_FN_FMCLK_B,
+       GPIO_FN_TX0, GPIO_FN_SCIFA0_TXD,
+       GPIO_FN_A23, GPIO_FN_IO2, GPIO_FN_BPFCLK_B,
+       GPIO_FN_RX0, GPIO_FN_SCIFA0_RXD,
+       GPIO_FN_A24, GPIO_FN_DREQ2, GPIO_FN_IO3,
+       GPIO_FN_TX1, GPIO_FN_SCIFA1_TXD,
+       GPIO_FN_A25, GPIO_FN_DACK2, GPIO_FN_SSL, GPIO_FN_DREQ1_C,
+       GPIO_FN_RX1, GPIO_FN_SCIFA1_RXD,
+       GPIO_FN_CS0_N, GPIO_FN_ATAG0_N_B, GPIO_FN_SCL1,
+       GPIO_FN_CS1_N_A26, GPIO_FN_ATADIR0_N_B, GPIO_FN_SDA1,
+       GPIO_FN_EX_CS1_N, GPIO_FN_MSIOF2_SCK,
+       GPIO_FN_EX_CS2_N, GPIO_FN_ATAWR0_N, GPIO_FN_MSIOF2_SYNC,
+       GPIO_FN_EX_CS3_N, GPIO_FN_ATADIR0_N, GPIO_FN_MSIOF2_TXD,
+       GPIO_FN_ATAG0_N, GPIO_FN_EX_WAIT1,
+
+       /* IPSR3 */
+       GPIO_FN_EX_CS4_N, GPIO_FN_ATARD0_N,
+       GPIO_FN_MSIOF2_RXD, GPIO_FN_EX_WAIT2,
+       GPIO_FN_EX_CS5_N, GPIO_FN_ATACS00_N, GPIO_FN_MSIOF2_SS1,
+       GPIO_FN_HRX1_B, GPIO_FN_SCIFB1_RXD_B,
+       GPIO_FN_PWM1, GPIO_FN_TPU_TO1,
+       GPIO_FN_BS_N, GPIO_FN_ATACS10_N, GPIO_FN_MSIOF2_SS2,
+       GPIO_FN_HTX1_B, GPIO_FN_SCIFB1_TXD_B,
+       GPIO_FN_PWM2, GPIO_FN_TPU_TO2,
+       GPIO_FN_RD_WR_N, GPIO_FN_HRX2_B, GPIO_FN_FMIN_B,
+       GPIO_FN_SCIFB0_RXD_B, GPIO_FN_DREQ1_D,
+       GPIO_FN_WE0_N, GPIO_FN_HCTS2_N_B, GPIO_FN_SCIFB0_TXD_B,
+       GPIO_FN_WE1_N, GPIO_FN_ATARD0_N_B,
+       GPIO_FN_HTX2_B, GPIO_FN_SCIFB0_RTS_N_B,
+       GPIO_FN_EX_WAIT0, GPIO_FN_HRTS2_N_B, GPIO_FN_SCIFB0_CTS_N_B,
+       GPIO_FN_DREQ0, GPIO_FN_PWM3, GPIO_FN_TPU_TO3,
+       GPIO_FN_DACK0, GPIO_FN_DRACK0, GPIO_FN_REMOCON,
+       GPIO_FN_SPEEDIN, GPIO_FN_HSCK0_C, GPIO_FN_HSCK2_C,
+       GPIO_FN_SCIFB0_SCK_B, GPIO_FN_SCIFB2_SCK_B,
+       GPIO_FN_DREQ2_C, GPIO_FN_HTX2_D,
+       GPIO_FN_SSI_SCK0129, GPIO_FN_HRX0_C, GPIO_FN_HRX2_C,
+       GPIO_FN_SCIFB0_RXD_C, GPIO_FN_SCIFB2_RXD_C,
+       GPIO_FN_SSI_WS0129, GPIO_FN_HTX0_C, GPIO_FN_HTX2_C,
+       GPIO_FN_SCIFB0_TXD_C, GPIO_FN_SCIFB2_TXD_C,
+
+       /* IPSR4 */
+       GPIO_FN_SSI_SDATA0, GPIO_FN_SCL0_B,
+       GPIO_FN_SCL7_B, GPIO_FN_MSIOF2_SCK_C,
+       GPIO_FN_SSI_SCK1, GPIO_FN_SDA0_B, GPIO_FN_SDA7_B,
+       GPIO_FN_MSIOF2_SYNC_C, GPIO_FN_GLO_I0_D,
+       GPIO_FN_SSI_WS1, GPIO_FN_SCL1_B, GPIO_FN_SCL8_B,
+       GPIO_FN_MSIOF2_TXD_C, GPIO_FN_GLO_I1_D,
+       GPIO_FN_SSI_SDATA1, GPIO_FN_SDA1_B,
+       GPIO_FN_SDA8_B, GPIO_FN_MSIOF2_RXD_C,
+       GPIO_FN_SSI_SCK2, GPIO_FN_SCL2, GPIO_FN_GPS_CLK_B,
+       GPIO_FN_GLO_Q0_D, GPIO_FN_HSCK1_E,
+       GPIO_FN_SSI_WS2, GPIO_FN_SDA2, GPIO_FN_GPS_SIGN_B,
+       GPIO_FN_RX2_E, GPIO_FN_GLO_Q1_D, GPIO_FN_HCTS1_N_E,
+       GPIO_FN_SSI_SDATA2, GPIO_FN_GPS_MAG_B,
+       GPIO_FN_TX2_E, GPIO_FN_HRTS1_N_E,
+       GPIO_FN_SSI_SCK34, GPIO_FN_SSI_WS34, GPIO_FN_SSI_SDATA3,
+       GPIO_FN_SSI_SCK4, GPIO_FN_GLO_SS_D,
+       GPIO_FN_SSI_WS4, GPIO_FN_GLO_RFON_D,
+       GPIO_FN_SSI_SDATA4, GPIO_FN_MSIOF2_SCK_D,
+       GPIO_FN_SSI_SCK5, GPIO_FN_MSIOF1_SCK_C,
+       GPIO_FN_TS_SDATA0, GPIO_FN_GLO_I0,
+       GPIO_FN_MSIOF2_SYNC_D, GPIO_FN_VI1_R2_B,
+
+       /* IPSR5 */
+       GPIO_FN_SSI_WS5, GPIO_FN_MSIOF1_SYNC_C, GPIO_FN_TS_SCK0,
+       GPIO_FN_GLO_I1, GPIO_FN_MSIOF2_TXD_D, GPIO_FN_VI1_R3_B,
+       GPIO_FN_SSI_SDATA5, GPIO_FN_MSIOF1_TXD_C, GPIO_FN_TS_SDEN0,
+       GPIO_FN_GLO_Q0, GPIO_FN_MSIOF2_SS1_D, GPIO_FN_VI1_R4_B,
+       GPIO_FN_SSI_SCK6, GPIO_FN_MSIOF1_RXD_C, GPIO_FN_TS_SPSYNC0,
+       GPIO_FN_GLO_Q1, GPIO_FN_MSIOF2_RXD_D, GPIO_FN_VI1_R5_B,
+       GPIO_FN_SSI_WS6, GPIO_FN_GLO_SCLK,
+       GPIO_FN_MSIOF2_SS2_D, GPIO_FN_VI1_R6_B,
+       GPIO_FN_SSI_SDATA6, GPIO_FN_STP_IVCXO27_0_B,
+       GPIO_FN_GLO_SDATA, GPIO_FN_VI1_R7_B,
+       GPIO_FN_SSI_SCK78, GPIO_FN_STP_ISCLK_0_B, GPIO_FN_GLO_SS,
+       GPIO_FN_SSI_WS78, GPIO_FN_TX0_D, GPIO_FN_STP_ISD_0_B, GPIO_FN_GLO_RFON,
+       GPIO_FN_SSI_SDATA7, GPIO_FN_RX0_D, GPIO_FN_STP_ISEN_0_B,
+       GPIO_FN_SSI_SDATA8, GPIO_FN_TX1_D, GPIO_FN_STP_ISSYNC_0_B,
+       GPIO_FN_SSI_SCK9, GPIO_FN_RX1_D, GPIO_FN_GLO_SCLK_D,
+       GPIO_FN_SSI_WS9, GPIO_FN_TX3_D, GPIO_FN_CAN0_TX_D, GPIO_FN_GLO_SDATA_D,
+       GPIO_FN_SSI_SDATA9, GPIO_FN_RX3_D, GPIO_FN_CAN0_RX_D,
+
+       /* IPSR6 */
+       GPIO_FN_AUDIO_CLKB, GPIO_FN_STP_OPWM_0_B, GPIO_FN_MSIOF1_SCK_B,
+       GPIO_FN_SCIF_CLK, GPIO_FN_BPFCLK_E,
+       GPIO_FN_AUDIO_CLKC, GPIO_FN_SCIFB0_SCK_C, GPIO_FN_MSIOF1_SYNC_B,
+       GPIO_FN_RX2, GPIO_FN_SCIFA2_RXD, GPIO_FN_FMIN_E,
+       GPIO_FN_AUDIO_CLKOUT, GPIO_FN_MSIOF1_SS1_B,
+       GPIO_FN_TX2, GPIO_FN_SCIFA2_TXD,
+       GPIO_FN_IRQ0, GPIO_FN_SCIFB1_RXD_D, GPIO_FN_INTC_IRQ0_N,
+       GPIO_FN_IRQ1, GPIO_FN_SCIFB1_SCK_C, GPIO_FN_INTC_IRQ1_N,
+       GPIO_FN_IRQ2, GPIO_FN_SCIFB1_TXD_D, GPIO_FN_INTC_IRQ2_N,
+       GPIO_FN_IRQ3, GPIO_FN_SCL4_C,
+       GPIO_FN_MSIOF2_TXD_E, GPIO_FN_INTC_IRQ3_N,
+       GPIO_FN_IRQ4, GPIO_FN_HRX1_C, GPIO_FN_SDA4_C,
+       GPIO_FN_MSIOF2_RXD_E, GPIO_FN_INTC_IRQ4_N,
+       GPIO_FN_IRQ5, GPIO_FN_HTX1_C, GPIO_FN_SCL1_E, GPIO_FN_MSIOF2_SCK_E,
+       GPIO_FN_IRQ6, GPIO_FN_HSCK1_C, GPIO_FN_MSIOF1_SS2_B,
+       GPIO_FN_SDA1_E, GPIO_FN_MSIOF2_SYNC_E,
+       GPIO_FN_IRQ7, GPIO_FN_HCTS1_N_C, GPIO_FN_MSIOF1_TXD_B,
+       GPIO_FN_GPS_CLK_C, GPIO_FN_GPS_CLK_D,
+       GPIO_FN_IRQ8, GPIO_FN_HRTS1_N_C, GPIO_FN_MSIOF1_RXD_B,
+       GPIO_FN_GPS_SIGN_C, GPIO_FN_GPS_SIGN_D,
+
+       /* IPSR7 */
+       GPIO_FN_IRQ9, GPIO_FN_DU1_DOTCLKIN_B, GPIO_FN_CAN_CLK_D,
+       GPIO_FN_GPS_MAG_C, GPIO_FN_SCIF_CLK_B, GPIO_FN_GPS_MAG_D,
+       GPIO_FN_DU1_DR0, GPIO_FN_LCDOUT0, GPIO_FN_VI1_DATA0_B, GPIO_FN_TX0_B,
+       GPIO_FN_SCIFA0_TXD_B, GPIO_FN_MSIOF2_SCK_B,
+       GPIO_FN_DU1_DR1, GPIO_FN_LCDOUT1, GPIO_FN_VI1_DATA1_B, GPIO_FN_RX0_B,
+       GPIO_FN_SCIFA0_RXD_B, GPIO_FN_MSIOF2_SYNC_B,
+       GPIO_FN_DU1_DR2, GPIO_FN_LCDOUT2, GPIO_FN_SSI_SCK0129_B,
+       GPIO_FN_DU1_DR3, GPIO_FN_LCDOUT3, GPIO_FN_SSI_WS0129_B,
+       GPIO_FN_DU1_DR4, GPIO_FN_LCDOUT4, GPIO_FN_SSI_SDATA0_B,
+       GPIO_FN_DU1_DR5, GPIO_FN_LCDOUT5, GPIO_FN_SSI_SCK1_B,
+       GPIO_FN_DU1_DR6, GPIO_FN_LCDOUT6, GPIO_FN_SSI_WS1_B,
+       GPIO_FN_DU1_DR7, GPIO_FN_LCDOUT7, GPIO_FN_SSI_SDATA1_B,
+       GPIO_FN_DU1_DG0, GPIO_FN_LCDOUT8, GPIO_FN_VI1_DATA2_B, GPIO_FN_TX1_B,
+       GPIO_FN_SCIFA1_TXD_B, GPIO_FN_MSIOF2_SS1_B,
+       GPIO_FN_DU1_DG1, GPIO_FN_LCDOUT9, GPIO_FN_VI1_DATA3_B, GPIO_FN_RX1_B,
+       GPIO_FN_SCIFA1_RXD_B, GPIO_FN_MSIOF2_SS2_B,
+       GPIO_FN_DU1_DG2, GPIO_FN_LCDOUT10, GPIO_FN_VI1_DATA4_B,
+       GPIO_FN_SCIF1_SCK_B, GPIO_FN_SCIFA1_SCK, GPIO_FN_SSI_SCK78_B,
+
+       /* IPSR8 */
+       GPIO_FN_DU1_DG3, GPIO_FN_LCDOUT11,
+       GPIO_FN_VI1_DATA5_B, GPIO_FN_SSI_WS78_B,
+       GPIO_FN_DU1_DG4, GPIO_FN_LCDOUT12, GPIO_FN_VI1_DATA6_B,
+       GPIO_FN_HRX0_B, GPIO_FN_SCIFB2_RXD_B, GPIO_FN_SSI_SDATA7_B,
+       GPIO_FN_DU1_DG5, GPIO_FN_LCDOUT13, GPIO_FN_VI1_DATA7_B,
+       GPIO_FN_HCTS0_N_B, GPIO_FN_SCIFB2_TXD_B, GPIO_FN_SSI_SDATA8_B,
+       GPIO_FN_DU1_DG6, GPIO_FN_LCDOUT14, GPIO_FN_HRTS0_N_B,
+       GPIO_FN_SCIFB2_CTS_N_B, GPIO_FN_SSI_SCK9_B,
+       GPIO_FN_DU1_DG7, GPIO_FN_LCDOUT15, GPIO_FN_HTX0_B,
+       GPIO_FN_SCIFB2_RTS_N_B, GPIO_FN_SSI_WS9_B,
+       GPIO_FN_DU1_DB0, GPIO_FN_LCDOUT16, GPIO_FN_VI1_CLK_B, GPIO_FN_TX2_B,
+       GPIO_FN_SCIFA2_TXD_B, GPIO_FN_MSIOF2_TXD_B,
+       GPIO_FN_DU1_DB1, GPIO_FN_LCDOUT17, GPIO_FN_VI1_HSYNC_N_B,
+       GPIO_FN_RX2_B, GPIO_FN_SCIFA2_RXD_B, GPIO_FN_MSIOF2_RXD_B,
+       GPIO_FN_DU1_DB2, GPIO_FN_LCDOUT18, GPIO_FN_VI1_VSYNC_N_B,
+       GPIO_FN_SCIF2_SCK_B, GPIO_FN_SCIFA2_SCK, GPIO_FN_SSI_SDATA9_B,
+       GPIO_FN_DU1_DB3, GPIO_FN_LCDOUT19, GPIO_FN_VI1_CLKENB_B,
+       GPIO_FN_DU1_DB4, GPIO_FN_LCDOUT20,
+       GPIO_FN_VI1_FIELD_B, GPIO_FN_CAN1_RX,
+       GPIO_FN_DU1_DB5, GPIO_FN_LCDOUT21, GPIO_FN_TX3,
+       GPIO_FN_SCIFA3_TXD, GPIO_FN_CAN1_TX,
+
+       /* IPSR9 */
+       GPIO_FN_DU1_DB6, GPIO_FN_LCDOUT22, GPIO_FN_SCL3_C,
+       GPIO_FN_RX3, GPIO_FN_SCIFA3_RXD,
+       GPIO_FN_DU1_DB7, GPIO_FN_LCDOUT23, GPIO_FN_SDA3_C,
+       GPIO_FN_SCIF3_SCK, GPIO_FN_SCIFA3_SCK,
+       GPIO_FN_DU1_DOTCLKIN, GPIO_FN_QSTVA_QVS,
+       GPIO_FN_DU1_DOTCLKOUT0, GPIO_FN_QCLK,
+       GPIO_FN_DU1_DOTCLKOUT1, GPIO_FN_QSTVB_QVE, GPIO_FN_CAN0_TX,
+       GPIO_FN_TX3_B, GPIO_FN_SCL2_B, GPIO_FN_PWM4,
+       GPIO_FN_DU1_EXHSYNC_DU1_HSYNC, GPIO_FN_QSTH_QHS,
+       GPIO_FN_DU1_EXVSYNC_DU1_VSYNC, GPIO_FN_QSTB_QHE,
+       GPIO_FN_DU1_EXODDF_DU1_ODDF_DISP_CDE, GPIO_FN_QCPV_QDE,
+       GPIO_FN_CAN0_RX, GPIO_FN_RX3_B, GPIO_FN_SDA2_B,
+       GPIO_FN_DU1_DISP, GPIO_FN_QPOLA,
+       GPIO_FN_DU1_CDE, GPIO_FN_QPOLB, GPIO_FN_PWM4_B,
+       GPIO_FN_VI0_CLKENB, GPIO_FN_TX4,
+       GPIO_FN_SCIFA4_TXD, GPIO_FN_TS_SDATA0_D,
+       GPIO_FN_VI0_FIELD, GPIO_FN_RX4, GPIO_FN_SCIFA4_RXD, GPIO_FN_TS_SCK0_D,
+       GPIO_FN_VI0_HSYNC_N, GPIO_FN_TX5,
+       GPIO_FN_SCIFA5_TXD, GPIO_FN_TS_SDEN0_D,
+       GPIO_FN_VI0_VSYNC_N, GPIO_FN_RX5,
+       GPIO_FN_SCIFA5_RXD, GPIO_FN_TS_SPSYNC0_D,
+       GPIO_FN_VI0_DATA3_VI0_B3, GPIO_FN_SCIF3_SCK_B, GPIO_FN_SCIFA3_SCK_B,
+       GPIO_FN_VI0_G0, GPIO_FN_SCL8, GPIO_FN_STP_IVCXO27_0_C, GPIO_FN_SCL4,
+       GPIO_FN_HCTS2_N, GPIO_FN_SCIFB2_CTS_N, GPIO_FN_ATAWR1_N,
+
+       /* IPSR10 */
+       GPIO_FN_VI0_G1, GPIO_FN_SDA8, GPIO_FN_STP_ISCLK_0_C, GPIO_FN_SDA4,
+       GPIO_FN_HRTS2_N, GPIO_FN_SCIFB2_RTS_N, GPIO_FN_ATADIR1_N,
+       GPIO_FN_VI0_G2, GPIO_FN_VI2_HSYNC_N, GPIO_FN_STP_ISD_0_C,
+       GPIO_FN_SCL3_B, GPIO_FN_HSCK2, GPIO_FN_SCIFB2_SCK, GPIO_FN_ATARD1_N,
+       GPIO_FN_VI0_G3, GPIO_FN_VI2_VSYNC_N, GPIO_FN_STP_ISEN_0_C,
+       GPIO_FN_SDA3_B, GPIO_FN_HRX2, GPIO_FN_SCIFB2_RXD, GPIO_FN_ATACS01_N,
+       GPIO_FN_VI0_G4, GPIO_FN_VI2_CLKENB, GPIO_FN_STP_ISSYNC_0_C,
+       GPIO_FN_HTX2, GPIO_FN_SCIFB2_TXD, GPIO_FN_SCIFB0_SCK_D,
+       GPIO_FN_VI0_G5, GPIO_FN_VI2_FIELD, GPIO_FN_STP_OPWM_0_C,
+       GPIO_FN_FMCLK_D, GPIO_FN_CAN0_TX_E,
+       GPIO_FN_HTX1_D, GPIO_FN_SCIFB0_TXD_D,
+       GPIO_FN_VI0_G6, GPIO_FN_VI2_CLK, GPIO_FN_BPFCLK_D,
+       GPIO_FN_VI0_G7, GPIO_FN_VI2_DATA0, GPIO_FN_FMIN_D,
+       GPIO_FN_VI0_R0, GPIO_FN_VI2_DATA1, GPIO_FN_GLO_I0_B,
+       GPIO_FN_TS_SDATA0_C, GPIO_FN_ATACS11_N,
+       GPIO_FN_VI0_R1, GPIO_FN_VI2_DATA2, GPIO_FN_GLO_I1_B,
+       GPIO_FN_TS_SCK0_C, GPIO_FN_ATAG1_N,
+       GPIO_FN_VI0_R2, GPIO_FN_VI2_DATA3,
+       GPIO_FN_GLO_Q0_B, GPIO_FN_TS_SDEN0_C,
+       GPIO_FN_VI0_R3, GPIO_FN_VI2_DATA4,
+       GPIO_FN_GLO_Q1_B, GPIO_FN_TS_SPSYNC0_C,
+       GPIO_FN_VI0_R4, GPIO_FN_VI2_DATA5, GPIO_FN_GLO_SCLK_B,
+       GPIO_FN_TX0_C, GPIO_FN_SCL1_D,
+
+       /* IPSR11 */
+       GPIO_FN_VI0_R5, GPIO_FN_VI2_DATA6, GPIO_FN_GLO_SDATA_B,
+       GPIO_FN_RX0_C, GPIO_FN_SDA1_D,
+       GPIO_FN_VI0_R6, GPIO_FN_VI2_DATA7, GPIO_FN_GLO_SS_B,
+       GPIO_FN_TX1_C, GPIO_FN_SCL4_B,
+       GPIO_FN_VI0_R7, GPIO_FN_GLO_RFON_B, GPIO_FN_RX1_C, GPIO_FN_CAN0_RX_E,
+       GPIO_FN_SDA4_B, GPIO_FN_HRX1_D, GPIO_FN_SCIFB0_RXD_D,
+       GPIO_FN_VI1_HSYNC_N, GPIO_FN_AVB_RXD0, GPIO_FN_TS_SDATA0_B,
+       GPIO_FN_TX4_B, GPIO_FN_SCIFA4_TXD_B,
+       GPIO_FN_VI1_VSYNC_N, GPIO_FN_AVB_RXD1, GPIO_FN_TS_SCK0_B,
+       GPIO_FN_RX4_B, GPIO_FN_SCIFA4_RXD_B,
+       GPIO_FN_VI1_CLKENB, GPIO_FN_AVB_RXD2, GPIO_FN_TS_SDEN0_B,
+       GPIO_FN_VI1_FIELD, GPIO_FN_AVB_RXD3, GPIO_FN_TS_SPSYNC0_B,
+       GPIO_FN_VI1_CLK, GPIO_FN_AVB_RXD4, GPIO_FN_VI1_DATA0, GPIO_FN_AVB_RXD5,
+       GPIO_FN_VI1_DATA1, GPIO_FN_AVB_RXD6,
+       GPIO_FN_VI1_DATA2, GPIO_FN_AVB_RXD7,
+       GPIO_FN_VI1_DATA3, GPIO_FN_AVB_RX_ER,
+       GPIO_FN_VI1_DATA4, GPIO_FN_AVB_MDIO,
+       GPIO_FN_VI1_DATA5, GPIO_FN_AVB_RX_DV,
+       GPIO_FN_VI1_DATA6, GPIO_FN_AVB_MAGIC,
+       GPIO_FN_VI1_DATA7, GPIO_FN_AVB_MDC,
+       GPIO_FN_ETH_MDIO, GPIO_FN_AVB_RX_CLK, GPIO_FN_SCL2_C,
+       GPIO_FN_ETH_CRS_DV, GPIO_FN_AVB_LINK, GPIO_FN_SDA2_C,
+
+       /* IPSR12 */
+       GPIO_FN_ETH_RX_ER, GPIO_FN_AVB_CRS, GPIO_FN_SCL3, GPIO_FN_SCL7,
+       GPIO_FN_ETH_RXD0, GPIO_FN_AVB_PHY_INT, GPIO_FN_SDA3, GPIO_FN_SDA7,
+       GPIO_FN_ETH_RXD1, GPIO_FN_AVB_GTXREFCLK, GPIO_FN_CAN0_TX_C,
+       GPIO_FN_SCL2_D, GPIO_FN_MSIOF1_RXD_E,
+       GPIO_FN_ETH_LINK, GPIO_FN_AVB_TXD0, GPIO_FN_CAN0_RX_C,
+       GPIO_FN_SDA2_D, GPIO_FN_MSIOF1_SCK_E,
+       GPIO_FN_ETH_REFCLK, GPIO_FN_AVB_TXD1, GPIO_FN_SCIFA3_RXD_B,
+       GPIO_FN_CAN1_RX_C, GPIO_FN_MSIOF1_SYNC_E,
+       GPIO_FN_ETH_TXD1, GPIO_FN_AVB_TXD2, GPIO_FN_SCIFA3_TXD_B,
+       GPIO_FN_CAN1_TX_C, GPIO_FN_MSIOF1_TXD_E,
+       GPIO_FN_ETH_TX_EN, GPIO_FN_AVB_TXD3,
+       GPIO_FN_TCLK1_B, GPIO_FN_CAN_CLK_B,
+       GPIO_FN_ETH_MAGIC, GPIO_FN_AVB_TXD4, GPIO_FN_IETX_C,
+       GPIO_FN_ETH_TXD0, GPIO_FN_AVB_TXD5, GPIO_FN_IECLK_C,
+       GPIO_FN_ETH_MDC, GPIO_FN_AVB_TXD6, GPIO_FN_IERX_C,
+       GPIO_FN_STP_IVCXO27_0, GPIO_FN_AVB_TXD7, GPIO_FN_SCIFB2_TXD_D,
+       GPIO_FN_ADIDATA_B, GPIO_FN_MSIOF0_SYNC_C,
+       GPIO_FN_STP_ISCLK_0, GPIO_FN_AVB_TX_EN, GPIO_FN_SCIFB2_RXD_D,
+       GPIO_FN_ADICS_SAMP_B, GPIO_FN_MSIOF0_SCK_C,
+
+       /* IPSR13 */
+       GPIO_FN_STP_ISD_0, GPIO_FN_AVB_TX_ER, GPIO_FN_SCIFB2_SCK_C,
+       GPIO_FN_ADICLK_B, GPIO_FN_MSIOF0_SS1_C,
+       GPIO_FN_STP_ISEN_0, GPIO_FN_AVB_TX_CLK,
+       GPIO_FN_ADICHS0_B, GPIO_FN_MSIOF0_SS2_C,
+       GPIO_FN_STP_ISSYNC_0, GPIO_FN_AVB_COL,
+       GPIO_FN_ADICHS1_B, GPIO_FN_MSIOF0_RXD_C,
+       GPIO_FN_STP_OPWM_0, GPIO_FN_AVB_GTX_CLK, GPIO_FN_PWM0_B,
+       GPIO_FN_ADICHS2_B, GPIO_FN_MSIOF0_TXD_C,
+       GPIO_FN_SD0_CLK, GPIO_FN_SPCLK_B, GPIO_FN_SD0_CMD, GPIO_FN_MOSI_IO0_B,
+       GPIO_FN_SD0_DATA0, GPIO_FN_MISO_IO1_B,
+       GPIO_FN_SD0_DATA1, GPIO_FN_IO2_B,
+       GPIO_FN_SD0_DATA2, GPIO_FN_IO3_B, GPIO_FN_SD0_DATA3, GPIO_FN_SSL_B,
+       GPIO_FN_SD0_CD, GPIO_FN_MMC_D6_B,
+       GPIO_FN_SIM0_RST_B, GPIO_FN_CAN0_RX_F,
+       GPIO_FN_SCIFA5_TXD_B, GPIO_FN_TX3_C,
+       GPIO_FN_SD0_WP, GPIO_FN_MMC_D7_B, GPIO_FN_SIM0_D_B, GPIO_FN_CAN0_TX_F,
+       GPIO_FN_SCIFA5_RXD_B, GPIO_FN_RX3_C,
+       GPIO_FN_SD1_CMD, GPIO_FN_REMOCON_B,
+       GPIO_FN_SD1_DATA0, GPIO_FN_SPEEDIN_B,
+       GPIO_FN_SD1_DATA1, GPIO_FN_IETX_B, GPIO_FN_SD1_DATA2, GPIO_FN_IECLK_B,
+       GPIO_FN_SD1_DATA3, GPIO_FN_IERX_B,
+       GPIO_FN_SD1_CD, GPIO_FN_PWM0, GPIO_FN_TPU_TO0, GPIO_FN_SCL1_C,
+
+       /* IPSR14 */
+       GPIO_FN_SD1_WP, GPIO_FN_PWM1_B, GPIO_FN_SDA1_C,
+       GPIO_FN_SD2_CLK, GPIO_FN_MMC_CLK, GPIO_FN_SD2_CMD, GPIO_FN_MMC_CMD,
+       GPIO_FN_SD2_DATA0, GPIO_FN_MMC_D0, GPIO_FN_SD2_DATA1, GPIO_FN_MMC_D1,
+       GPIO_FN_SD2_DATA2, GPIO_FN_MMC_D2, GPIO_FN_SD2_DATA3, GPIO_FN_MMC_D3,
+       GPIO_FN_SD2_CD, GPIO_FN_MMC_D4, GPIO_FN_SCL8_C,
+       GPIO_FN_TX5_B, GPIO_FN_SCIFA5_TXD_C,
+       GPIO_FN_SD2_WP, GPIO_FN_MMC_D5, GPIO_FN_SDA8_C,
+       GPIO_FN_RX5_B, GPIO_FN_SCIFA5_RXD_C,
+       GPIO_FN_MSIOF0_SCK, GPIO_FN_RX2_C, GPIO_FN_ADIDATA,
+       GPIO_FN_VI1_CLK_C, GPIO_FN_VI1_G0_B,
+       GPIO_FN_MSIOF0_SYNC, GPIO_FN_TX2_C, GPIO_FN_ADICS_SAMP,
+       GPIO_FN_VI1_CLKENB_C, GPIO_FN_VI1_G1_B,
+       GPIO_FN_MSIOF0_TXD, GPIO_FN_ADICLK,
+       GPIO_FN_VI1_FIELD_C, GPIO_FN_VI1_G2_B,
+       GPIO_FN_MSIOF0_RXD, GPIO_FN_ADICHS0,
+       GPIO_FN_VI1_DATA0_C, GPIO_FN_VI1_G3_B,
+       GPIO_FN_MSIOF0_SS1, GPIO_FN_MMC_D6, GPIO_FN_ADICHS1, GPIO_FN_TX0_E,
+       GPIO_FN_VI1_HSYNC_N_C, GPIO_FN_SCL7_C, GPIO_FN_VI1_G4_B,
+       GPIO_FN_MSIOF0_SS2, GPIO_FN_MMC_D7, GPIO_FN_ADICHS2, GPIO_FN_RX0_E,
+       GPIO_FN_VI1_VSYNC_N_C, GPIO_FN_SDA7_C, GPIO_FN_VI1_G5_B,
+
+       /* IPSR15 */
+       GPIO_FN_SIM0_RST, GPIO_FN_IETX, GPIO_FN_CAN1_TX_D,
+       GPIO_FN_SIM0_CLK, GPIO_FN_IECLK, GPIO_FN_CAN_CLK_C,
+       GPIO_FN_SIM0_D, GPIO_FN_IERX, GPIO_FN_CAN1_RX_D,
+       GPIO_FN_GPS_CLK, GPIO_FN_DU1_DOTCLKIN_C, GPIO_FN_AUDIO_CLKB_B,
+       GPIO_FN_PWM5_B, GPIO_FN_SCIFA3_TXD_C,
+       GPIO_FN_GPS_SIGN, GPIO_FN_TX4_C, GPIO_FN_SCIFA4_TXD_C, GPIO_FN_PWM5,
+       GPIO_FN_VI1_G6_B, GPIO_FN_SCIFA3_RXD_C,
+       GPIO_FN_GPS_MAG, GPIO_FN_RX4_C, GPIO_FN_SCIFA4_RXD_C, GPIO_FN_PWM6,
+       GPIO_FN_VI1_G7_B, GPIO_FN_SCIFA3_SCK_C,
+       GPIO_FN_HCTS0_N, GPIO_FN_SCIFB0_CTS_N, GPIO_FN_GLO_I0_C,
+       GPIO_FN_TCLK1, GPIO_FN_VI1_DATA1_C,
+       GPIO_FN_HRTS0_N, GPIO_FN_SCIFB0_RTS_N,
+       GPIO_FN_GLO_I1_C, GPIO_FN_VI1_DATA2_C,
+       GPIO_FN_HSCK0, GPIO_FN_SCIFB0_SCK, GPIO_FN_GLO_Q0_C, GPIO_FN_CAN_CLK,
+       GPIO_FN_TCLK2, GPIO_FN_VI1_DATA3_C,
+       GPIO_FN_HRX0, GPIO_FN_SCIFB0_RXD, GPIO_FN_GLO_Q1_C,
+       GPIO_FN_CAN0_RX_B, GPIO_FN_VI1_DATA4_C,
+       GPIO_FN_HTX0, GPIO_FN_SCIFB0_TXD, GPIO_FN_GLO_SCLK_C,
+       GPIO_FN_CAN0_TX_B, GPIO_FN_VI1_DATA5_C,
+
+       /* IPSR16 */
+       GPIO_FN_HRX1, GPIO_FN_SCIFB1_RXD, GPIO_FN_VI1_R0_B,
+       GPIO_FN_GLO_SDATA_C, GPIO_FN_VI1_DATA6_C,
+       GPIO_FN_HTX1, GPIO_FN_SCIFB1_TXD, GPIO_FN_VI1_R1_B,
+       GPIO_FN_GLO_SS_C, GPIO_FN_VI1_DATA7_C,
+       GPIO_FN_HSCK1, GPIO_FN_SCIFB1_SCK, GPIO_FN_MLB_CK, GPIO_FN_GLO_RFON_C,
+       GPIO_FN_HCTS1_N, GPIO_FN_SCIFB1_CTS_N,
+       GPIO_FN_MLB_SIG, GPIO_FN_CAN1_TX_B,
+       GPIO_FN_HRTS1_N, GPIO_FN_SCIFB1_RTS_N,
+       GPIO_FN_MLB_DAT, GPIO_FN_CAN1_RX_B,
+};
+
+#endif /* __ASM_R8A7793_H__ */
diff --git a/arch/arm/include/asm/arch-rmobile/r8a7793.h b/arch/arm/include/asm/arch-rmobile/r8a7793.h
new file mode 100644 (file)
index 0000000..1abdeb7
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * arch/arm/include/asm/arch-rmobile/r8a7793.h
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#ifndef __ASM_ARCH_R8A7793_H
+#define __ASM_ARCH_R8A7793_H
+
+#include "rcar-base.h"
+
+/*
+ * R8A7793 I/O Addresses
+ */
+
+/* SH-I2C */
+#define CONFIG_SYS_I2C_SH_BASE2        0xE60B0000
+
+#define DBSC3_1_QOS_R0_BASE    0xE67A1000
+#define DBSC3_1_QOS_R1_BASE    0xE67A1100
+#define DBSC3_1_QOS_R2_BASE    0xE67A1200
+#define DBSC3_1_QOS_R3_BASE    0xE67A1300
+#define DBSC3_1_QOS_R4_BASE    0xE67A1400
+#define DBSC3_1_QOS_R5_BASE    0xE67A1500
+#define DBSC3_1_QOS_R6_BASE    0xE67A1600
+#define DBSC3_1_QOS_R7_BASE    0xE67A1700
+#define DBSC3_1_QOS_R8_BASE    0xE67A1800
+#define DBSC3_1_QOS_R9_BASE    0xE67A1900
+#define DBSC3_1_QOS_R10_BASE   0xE67A1A00
+#define DBSC3_1_QOS_R11_BASE   0xE67A1B00
+#define DBSC3_1_QOS_R12_BASE   0xE67A1C00
+#define DBSC3_1_QOS_R13_BASE   0xE67A1D00
+#define DBSC3_1_QOS_R14_BASE   0xE67A1E00
+#define DBSC3_1_QOS_R15_BASE   0xE67A1F00
+#define DBSC3_1_QOS_W0_BASE    0xE67A2000
+#define DBSC3_1_QOS_W1_BASE    0xE67A2100
+#define DBSC3_1_QOS_W2_BASE    0xE67A2200
+#define DBSC3_1_QOS_W3_BASE    0xE67A2300
+#define DBSC3_1_QOS_W4_BASE    0xE67A2400
+#define DBSC3_1_QOS_W5_BASE    0xE67A2500
+#define DBSC3_1_QOS_W6_BASE    0xE67A2600
+#define DBSC3_1_QOS_W7_BASE    0xE67A2700
+#define DBSC3_1_QOS_W8_BASE    0xE67A2800
+#define DBSC3_1_QOS_W9_BASE    0xE67A2900
+#define DBSC3_1_QOS_W10_BASE   0xE67A2A00
+#define DBSC3_1_QOS_W11_BASE   0xE67A2B00
+#define DBSC3_1_QOS_W12_BASE   0xE67A2C00
+#define DBSC3_1_QOS_W13_BASE   0xE67A2D00
+#define DBSC3_1_QOS_W14_BASE   0xE67A2E00
+#define DBSC3_1_QOS_W15_BASE   0xE67A2F00
+
+#define DBSC3_1_DBADJ2         0xE67A00C8
+
+/*
+ * R8A7793 I/O Product Information
+ */
+
+/* Module stop control/status register bits */
+#define MSTP0_BITS     0x00640801
+#define MSTP1_BITS     0x9B6C9B5A
+#define MSTP2_BITS     0x100D21FC
+#define MSTP3_BITS     0xF08CD810
+#define MSTP4_BITS     0x800001C4
+#define MSTP5_BITS     0x44C00046
+#define MSTP7_BITS     0x05BFE618
+#define MSTP8_BITS     0x40C0FE85
+#define MSTP9_BITS     0xFF979FFF
+#define MSTP10_BITS    0xFFFEFFE0
+#define MSTP11_BITS    0x000001C0
+
+#define R8A7793_CUT_ES2X       2
+#define IS_R8A7793_ES2() \
+       (rmobile_get_cpu_rev_integer() == R8A7793_CUT_ES2X)
+
+#endif /* __ASM_ARCH_R8A7793_H */
index 94276ddc7583aa92ed5989717898c28b0cf6f366..d7c9004772aa1912332e817438b220fe2c13cb01 100644 (file)
 
 #include "rcar-base.h"
 
+/* SH-I2C */
+#define CONFIG_SYS_I2C_SH_BASE2        0xE60B0000
+
+/* Module stop control/status register bits */
+#define MSTP0_BITS     0x00440801
+#define MSTP1_BITS     0x936899DA
+#define MSTP2_BITS     0x100D21FC
+#define MSTP3_BITS     0xE084D810
+#define MSTP4_BITS     0x800001C4
+#define MSTP5_BITS     0x40C00044
+#define MSTP7_BITS     0x013FE618
+#define MSTP8_BITS     0x40803C05
+#define MSTP9_BITS     0xFB879FEE
+#define MSTP10_BITS    0xFFFEFFE0
+#define MSTP11_BITS    0x000001C0
+
 #endif /* __ASM_ARCH_R8A7794_H */
index 027e9b1b1453ea19033a7ee4c814843978d21352..23c4bba6edec412378aabe636f58f1f660fa50a3 100644 (file)
@@ -10,7 +10,7 @@
 #define __ASM_ARCH_RCAR_BASE_H
 
 /*
- * R-Car (R8A7790/R8A7791/R8A7794) I/O Addresses
+ * R-Car (R8A7790/R8A7791/R8A7793/R8A7794) I/O Addresses
  */
 #define RWDT_BASE              0xE6020000
 #define SWDT_BASE              0xE6030000
 #define SCIF4_BASE             0xE6EE0000
 #define SCIF5_BASE             0xE6EE8000
 
+/* Module stop status register */
+#define MSTPSR0                        0xE6150030
+#define MSTPSR1                        0xE6150038
+#define MSTPSR2                        0xE6150040
+#define MSTPSR3                        0xE6150048
+#define MSTPSR4                        0xE615004C
+#define MSTPSR5                        0xE615003C
+#define MSTPSR7                        0xE61501C4
+#define MSTPSR8                        0xE61509A0
+#define MSTPSR9                        0xE61509A4
+#define MSTPSR10               0xE61509A8
+#define MSTPSR11               0xE61509AC
+
+/* Realtime module stop control register */
+#define RMSTPCR0               0xE6150110
+#define RMSTPCR1               0xE6150114
+#define RMSTPCR2               0xE6150118
+#define RMSTPCR3               0xE615011C
+#define RMSTPCR4               0xE6150120
+#define RMSTPCR5               0xE6150124
+#define RMSTPCR7               0xE615012C
+#define RMSTPCR8               0xE6150980
+#define RMSTPCR9               0xE6150984
+#define RMSTPCR10              0xE6150988
+#define RMSTPCR11              0xE615098C
+
+/* System module stop control register */
+#define SMSTPCR0               0xE6150130
+#define SMSTPCR1               0xE6150134
+#define SMSTPCR2               0xE6150138
+#define SMSTPCR3               0xE615013C
+#define SMSTPCR4               0xE6150140
+#define SMSTPCR5               0xE6150144
+#define SMSTPCR7               0xE615014C
+#define SMSTPCR8               0xE6150990
+#define SMSTPCR9               0xE6150994
+#define SMSTPCR10              0xE6150998
+#define SMSTPCR11              0xE615099C
+
+/*
+ * SH-I2C
+ * Ch2 and ch3 are different address. These are defined
+ * in the header of each SoCs.
+ */
+#define CONFIG_SYS_I2C_SH_BASE0        0xE6500000
+#define CONFIG_SYS_I2C_SH_BASE1        0xE6510000
+
+/* RCAR-I2C */
+#define CONFIG_SYS_RCAR_I2C0_BASE      0xE6508000
+#define CONFIG_SYS_RCAR_I2C1_BASE      0xE6518000
+#define CONFIG_SYS_RCAR_I2C2_BASE      0xE6530000
+#define CONFIG_SYS_RCAR_I2C3_BASE      0xE6540000
+
 #define S3C_BASE               0xE6784000
 #define S3C_INT_BASE           0xE6784A00
 #define S3C_MEDIA_BASE         0xE6784B00
 #define PLL0CR                 0xE61500D8
 #define PLL0_STC_MASK          0x7F000000
 #define PLL0_STC_BIT           24
+#define PLLECR                 0xE61500D0
+#define PLL0ST                 0x100
 
 #ifndef __ASSEMBLY__
 #include <asm/types.h>
diff --git a/arch/arm/include/asm/arch-rmobile/rcar-mstp.h b/arch/arm/include/asm/arch-rmobile/rcar-mstp.h
new file mode 100644 (file)
index 0000000..9a564f8
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * arch/arm/include/asm/arch-rmobile/rcar-mstp.h
+ *
+ * Copyright (C) 2013, 2014 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+ * Copyright (C) 2013, 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef __ASM_ARCH_RCAR_MSTP_H
+#define __ASM_ARCH_RCAR_MSTP_H
+
+#define mstp_setbits(type, addr, saddr, set) \
+               out_##type((saddr), in_##type(addr) | (set))
+#define mstp_clrbits(type, addr, saddr, clear) \
+               out_##type((saddr), in_##type(addr) & ~(clear))
+#define mstp_setclrbits(type, addr, set, clear) \
+               out_##type((addr), (in_##type(addr) | (set)) & ~(clear))
+#define mstp_setbits_le32(addr, saddr, set) \
+               mstp_setbits(le32, addr, saddr, set)
+#define mstp_clrbits_le32(addr, saddr, clear) \
+               mstp_clrbits(le32, addr, saddr, clear)
+#define mstp_setclrbits_le32(addr, set, clear) \
+               mstp_setclrbits(le32, addr, set, clear)
+
+#ifndef CONFIG_SMSTP0_ENA
+#define CONFIG_SMSTP0_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP1_ENA
+#define CONFIG_SMSTP1_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP2_ENA
+#define CONFIG_SMSTP2_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP3_ENA
+#define CONFIG_SMSTP3_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP4_ENA
+#define CONFIG_SMSTP4_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP5_ENA
+#define CONFIG_SMSTP5_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP6_ENA
+#define CONFIG_SMSTP6_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP7_ENA
+#define CONFIG_SMSTP7_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP8_ENA
+#define CONFIG_SMSTP8_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP9_ENA
+#define CONFIG_SMSTP9_ENA      0x00
+#endif
+#ifndef CONFIG_SMSTP10_ENA
+#define CONFIG_SMSTP10_ENA     0x00
+#endif
+#ifndef CONFIG_SMSTP11_ENA
+#define CONFIG_SMSTP11_ENA     0x00
+#endif
+
+#ifndef CONFIG_RMSTP0_ENA
+#define CONFIG_RMSTP0_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP1_ENA
+#define CONFIG_RMSTP1_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP2_ENA
+#define CONFIG_RMSTP2_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP3_ENA
+#define CONFIG_RMSTP3_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP4_ENA
+#define CONFIG_RMSTP4_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP5_ENA
+#define CONFIG_RMSTP5_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP6_ENA
+#define CONFIG_RMSTP6_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP7_ENA
+#define CONFIG_RMSTP7_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP8_ENA
+#define CONFIG_RMSTP8_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP9_ENA
+#define CONFIG_RMSTP9_ENA      0x00
+#endif
+#ifndef CONFIG_RMSTP10_ENA
+#define CONFIG_RMSTP10_ENA     0x00
+#endif
+#ifndef CONFIG_RMSTP11_ENA
+#define CONFIG_RMSTP11_ENA     0x00
+#endif
+
+struct mstp_ctl {
+       u32 s_addr;
+       u32 s_dis;
+       u32 s_ena;
+       u32 r_addr;
+       u32 r_dis;
+       u32 r_ena;
+};
+
+#endif /* __ASM_ARCH_RCAR_MSTP_H */
index 2cc38e1b5ba31df9f5be74ca357beb52c94fb2ee..65ee9eb54718e3addb0eaeb3b95c393ed0cea040 100644 (file)
@@ -10,6 +10,8 @@
 #include <asm/arch/r8a7790.h>
 #elif defined(CONFIG_R8A7791)
 #include <asm/arch/r8a7791.h>
+#elif defined(CONFIG_R8A7793)
+#include <asm/arch/r8a7793.h>
 #elif defined(CONFIG_R8A7794)
 #include <asm/arch/r8a7794.h>
 #else
index ce4186fed043d448c411b10d531e87ad2a1e7e97..8773ce30d17241ccb241f0a396af50be901fa577 100644 (file)
@@ -83,9 +83,9 @@ static inline struct s3c24x0_lcd *s3c24x0_get_base_lcd(void)
        return (struct s3c24x0_lcd *)S3C24X0_LCD_BASE;
 }
 
-static inline struct s3c2410_nand *s3c2410_get_base_nand(void)
+static inline struct s3c24x0_nand *s3c24x0_get_base_nand(void)
 {
-       return (struct s3c2410_nand *)S3C2410_NAND_BASE;
+       return (struct s3c24x0_nand *)S3C2410_NAND_BASE;
 }
 
 static inline struct s3c24x0_uart
index 3f44bdc306b5eb29690e88a441fc80496e6d69ff..7a525f281877c2ce808e1bca91dcf8fd642ac6ab 100644 (file)
@@ -81,9 +81,9 @@ static inline struct s3c24x0_lcd *s3c24x0_get_base_lcd(void)
        return (struct s3c24x0_lcd *)S3C24X0_LCD_BASE;
 }
 
-static inline struct s3c2440_nand *s3c2440_get_base_nand(void)
+static inline struct s3c24x0_nand *s3c24x0_get_base_nand(void)
 {
-       return (struct s3c2440_nand *)S3C2440_NAND_BASE;
+       return (struct s3c24x0_nand *)S3C2440_NAND_BASE;
 }
 
 static inline struct s3c24x0_uart
index ed9df34c69082113abaf13ddef8b5027322ac2fe..2dae9fc3d74b0b7bee471a51365ae4bb32230afc 100644 (file)
@@ -135,34 +135,33 @@ struct s3c24x0_lcd {
 };
 
 
-#ifdef CONFIG_S3C2410
-/* NAND FLASH (see S3C2410 manual chapter 6) */
-struct s3c2410_nand {
-       u32     nfconf;
-       u32     nfcmd;
-       u32     nfaddr;
-       u32     nfdata;
-       u32     nfstat;
-       u32     nfecc;
-};
-#endif
-#ifdef CONFIG_S3C2440
-/* NAND FLASH (see S3C2440 manual chapter 6) */
-struct s3c2440_nand {
+/* NAND FLASH (see manual chapter 6) */
+struct s3c24x0_nand {
        u32     nfconf;
+#ifndef CONFIG_S3C2410
        u32     nfcont;
+#endif
        u32     nfcmd;
        u32     nfaddr;
        u32     nfdata;
+#ifndef CONFIG_S3C2410
        u32     nfeccd0;
        u32     nfeccd1;
        u32     nfeccd;
+#endif
        u32     nfstat;
+#ifdef CONFIG_S3C2410
+       u32     nfecc;
+#else
        u32     nfstat0;
        u32     nfstat1;
-};
+       u32     nfmecc0;
+       u32     nfmecc1;
+       u32     nfsecc;
+       u32     nfsblk;
+       u32     nfeblk;
 #endif
-
+};
 
 /* UART (see manual chapter 11) */
 struct s3c24x0_uart {
index fa49f6a998785cd60428a69bd9109d6205dae468..5449726180282e5d3f4b7c3fd5479ab7fe6f2116 100644 (file)
@@ -14,6 +14,7 @@ unsigned long cm_get_sdram_clk_hz(void);
 unsigned int cm_get_l4_sp_clk_hz(void);
 unsigned int cm_get_mmc_controller_clk_hz(void);
 unsigned int cm_get_qspi_controller_clk_hz(void);
+unsigned int cm_get_spi_controller_clk_hz(void);
 #endif
 
 typedef struct {
index 120f20e038fdbd7f69f3cf262e2866b3544bd440..f19ad87717a4496900b17df4028bbd4415c8427f 100644 (file)
@@ -42,7 +42,6 @@ typedef enum {
 #define SYSMGR_FRZCTRL_HWCTRL_VIO1REQ_MASK 0x00000001
 #define SYSMGR_FRZCTRL_HWCTRL_VIO1STATE_ENUM_FROZEN 0x2
 #define SYSMGR_FRZCTRL_HWCTRL_VIO1STATE_ENUM_THAWED 0x1
-#define SYSMGR_FRZCTRL_VIOCTRL_SHIFT 0x2
 
 void sys_mgr_frzctrl_freeze_req(void);
 void sys_mgr_frzctrl_thaw_req(void);
diff --git a/arch/arm/include/asm/arch-socfpga/gpio.h b/arch/arm/include/asm/arch-socfpga/gpio.h
new file mode 100644 (file)
index 0000000..6c61f18
--- /dev/null
@@ -0,0 +1,10 @@
+/*
+ * Copyright (C) 2014 Stefan Roese <sr@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SOCFPGA_GPIO_H
+#define _SOCFPGA_GPIO_H
+
+#endif /* _SOCFPGA_GPIO_H */
index 1857b80b3e44005bfb13b3fb50054d01734fb7ab..034135bff46905ef97c532d0a03be554d12681ce 100644 (file)
@@ -14,6 +14,7 @@ void socfpga_bridges_reset(int enable);
 
 void socfpga_emac_reset(int enable);
 void socfpga_watchdog_reset(void);
+void socfpga_spim_enable(void);
 
 struct socfpga_reset_manager {
        u32     status;
@@ -35,5 +36,7 @@ struct socfpga_reset_manager {
 #define RSTMGR_PERMODRST_EMAC0_LSB     0
 #define RSTMGR_PERMODRST_EMAC1_LSB     1
 #define RSTMGR_PERMODRST_L4WD0_LSB     6
+#define RSTMGR_PERMODRST_SPIM0_LSB     18
+#define RSTMGR_PERMODRST_SPIM1_LSB     19
 
 #endif /* _RESET_MANAGER_H_ */
index b2686d3cdb68f74479dfbb3f68ba1fa6dab5d262..1155fd3decc9b8c4b0161d32c8f05cb3f89c5c43 100644 (file)
@@ -13,6 +13,7 @@ struct socfpga_scan_manager {
        u32     padding[2];
        u32     fifo_single_byte;
        u32     fifo_double_byte;
+       u32     fifo_triple_byte;
        u32     fifo_quad_byte;
 };
 
diff --git a/arch/arm/include/asm/arch-stv0991/gpio.h b/arch/arm/include/asm/arch-stv0991/gpio.h
new file mode 100644 (file)
index 0000000..9131ded
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_STV0991_GPIO_H
+#define __ASM_ARCH_STV0991_GPIO_H
+
+enum gpio_direction {
+       GPIO_DIRECTION_IN,
+       GPIO_DIRECTION_OUT,
+};
+
+struct gpio_regs {
+       u32 data;               /* offset 0x0 */
+       u32 reserved[0xff];     /* 0x4--0x3fc */
+       u32 dir;                /* offset 0x400 */
+};
+
+#endif /* __ASM_ARCH_STV0991_GPIO_H */
diff --git a/arch/arm/include/asm/arch-stv0991/hardware.h b/arch/arm/include/asm/arch-stv0991/hardware.h
new file mode 100644 (file)
index 0000000..3f6bcaf
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, STMicroelectronics, <vikas.manocha@st.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_HARDWARE_H
+#define _ASM_ARCH_HARDWARE_H
+
+/* STV0991 */
+#define SRAM0_BASE_ADDR                          0x00000000UL
+#define SRAM1_BASE_ADDR                          0x00068000UL
+#define SRAM2_BASE_ADDR                          0x000D0000UL
+#define SRAM3_BASE_ADDR                          0x00138000UL
+#define CFS_SRAM0_BASE_ADDR                      0x00198000UL
+#define CFS_SRAM1_BASE_ADDR                      0x001B8000UL
+#define FAST_SRAM_BASE_ADDR                      0x001D8000UL
+#define FLASH_BASE_ADDR                          0x40000000UL
+#define PL310_BASE_ADDR                          0x70000000UL
+#define HSAXIM_BASE_ADDR                         0x70100000UL
+#define IMGSS_BASE_ADDR                          0x70200000UL
+#define ADC_BASE_ADDR                            0x80000000UL
+#define GPIOA_BASE_ADDR                          0x80001000UL
+#define GPIOB_BASE_ADDR                          0x80002000UL
+#define GPIOC_BASE_ADDR                          0x80003000UL
+#define HDM_BASE_ADDR                            0x80004000UL
+#define THSENS_BASE_ADDR                         0x80200000UL
+#define GPTIMER2_BASE_ADDR                       0x80201000UL
+#define GPTIMER1_BASE_ADDR                       0x80202000UL
+#define QSPI_BASE_ADDR                           0x80203000UL
+#define CGU_BASE_ADDR                            0x80204000UL
+#define CREG_BASE_ADDR                           0x80205000UL
+#define PEC_BASE_ADDR                            0x80206000UL
+#define WDRU_BASE_ADDR                           0x80207000UL
+#define BSEC_BASE_ADDR                           0x80208000UL
+#define DAP_ROM_BASE_ADDR                        0x80210000UL
+#define SOC_CTI_BASE_ADDR                        0x80211000UL
+#define TPIU_BASE_ADDR                           0x80212000UL
+#define TMC_ETF_BASE_ADDR                        0x80213000UL
+#define R4_ETM_BASE_ADDR                         0x80214000UL
+#define R4_CTI_BASE_ADDR                         0x80215000UL
+#define R4_DBG_BASE_ADDR                         0x80216000UL
+#define GMAC_BASE_ADDR                           0x80300000UL
+#define RNSS_BASE_ADDR                           0x80302000UL
+#define CRYP_BASE_ADDR                           0x80303000UL
+#define HASH_BASE_ADDR                           0x80304000UL
+#define GPDMA_BASE_ADDR                          0x80305000UL
+#define ISA_BASE_ADDR                            0x8032A000UL
+#define HCI_BASE_ADDR                            0x80400000UL
+#define I2C1_BASE_ADDR                           0x80401000UL
+#define I2C2_BASE_ADDR                           0x80402000UL
+#define SAI_BASE_ADDR                            0x80403000UL
+#define USI_BASE_ADDR                            0x80404000UL
+#define SPI1_BASE_ADDR                           0x80405000UL
+#define UART_BASE_ADDR                           0x80406000UL
+#define SPI2_BASE_ADDR                           0x80500000UL
+#define CAN_BASE_ADDR                            0x80501000UL
+#define USART1_BASE_ADDR                         0x80502000UL
+#define USART2_BASE_ADDR                         0x80503000UL
+#define USART3_BASE_ADDR                         0x80504000UL
+#define USART4_BASE_ADDR                         0x80505000UL
+#define USART5_BASE_ADDR                         0x80506000UL
+#define USART6_BASE_ADDR                         0x80507000UL
+#define SDI2_BASE_ADDR                           0x80600000UL
+#define SDI1_BASE_ADDR                           0x80601000UL
+#define VICA_BASE_ADDR                           0x81000000UL
+#define VICB_BASE_ADDR                           0x81001000UL
+#define STM_CHANNELS_BASE_ADDR                   0x81100000UL
+#define STM_BASE_ADDR                            0x81110000UL
+#define SROM_BASE_ADDR                           0xFFFF0000UL
+
+#endif /* _ASM_ARCH_HARDWARE_H */
diff --git a/arch/arm/include/asm/arch-stv0991/stv0991_cgu.h b/arch/arm/include/asm/arch-stv0991/stv0991_cgu.h
new file mode 100644 (file)
index 0000000..ddcbb57
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _STV0991_CGU_H
+#define _STV0991_CGU_H
+
+struct stv0991_cgu_regs {
+       u32 cpu_freq;           /* offset 0x0 */
+       u32 icn2_freq;          /* offset 0x4 */
+       u32 dma_freq;           /* offset 0x8 */
+       u32 isp_freq;           /* offset 0xc */
+       u32 h264_freq;          /* offset 0x10 */
+       u32 osif_freq;          /* offset 0x14 */
+       u32 ren_freq;           /* offset 0x18 */
+       u32 tim_freq;           /* offset 0x1c */
+       u32 sai_freq;           /* offset 0x20 */
+       u32 eth_freq;           /* offset 0x24 */
+       u32 i2c_freq;           /* offset 0x28 */
+       u32 spi_freq;           /* offset 0x2c */
+       u32 uart_freq;          /* offset 0x30 */
+       u32 qspi_freq;          /* offset 0x34 */
+       u32 sdio_freq;          /* offset 0x38 */
+       u32 usi_freq;           /* offset 0x3c */
+       u32 can_line_freq;      /* offset 0x40 */
+       u32 debug_freq;         /* offset 0x44 */
+       u32 trace_freq;         /* offset 0x48 */
+       u32 stm_freq;           /* offset 0x4c */
+       u32 eth_ctrl;           /* offset 0x50 */
+       u32 reserved[3];        /* offset 0x54 */
+       u32 osc_ctrl;           /* offset 0x60 */
+       u32 pll1_ctrl;          /* offset 0x64 */
+       u32 pll1_freq;          /* offset 0x68 */
+       u32 pll1_fract;         /* offset 0x6c */
+       u32 pll1_spread;        /* offset 0x70 */
+       u32 pll1_status;        /* offset 0x74 */
+       u32 pll2_ctrl;          /* offset 0x78 */
+       u32 pll2_freq;          /* offset 0x7c */
+       u32 pll2_fract;         /* offset 0x80 */
+       u32 pll2_spread;        /* offset 0x84 */
+       u32 pll2_status;        /* offset 0x88 */
+       u32 cgu_enable_1;       /* offset 0x8c */
+       u32 cgu_enable_2;       /* offset 0x90 */
+       u32 cgu_isp_pulse;      /* offset 0x94 */
+       u32 cgu_h264_pulse;     /* offset 0x98 */
+       u32 cgu_osif_pulse;     /* offset 0x9c */
+       u32 cgu_ren_pulse;      /* offset 0xa0 */
+
+};
+
+/* CGU Timer */
+#define CLK_TMR_OSC                    0
+#define CLK_TMR_MCLK                   1
+#define CLK_TMR_PLL1                   2
+#define CLK_TMR_PLL2                   3
+#define MDIV_SHIFT_TMR                 3
+#define DIV_SHIFT_TMR                  6
+
+#define TIMER1_CLK_CFG                 (0 << DIV_SHIFT_TMR \
+                                       | 0 << MDIV_SHIFT_TMR | CLK_TMR_MCLK)
+
+/* Clock Enable/Disable */
+
+#define TIMER1_CLK_EN                  (1 << 15)
+
+/* CGU Uart config */
+#define CLK_UART_MCLK                  0
+#define CLK_UART_PLL1                  1
+#define CLK_UART_PLL2                  2
+
+#define MDIV_SHIFT_UART                        3
+#define DIV_SHIFT_UART                 6
+
+#define UART_CLK_CFG                   (4 << DIV_SHIFT_UART \
+                                       | 1 << MDIV_SHIFT_UART | CLK_UART_MCLK)
+
+/* CGU Ethernet clock config */
+#define CLK_ETH_MCLK                   0
+#define CLK_ETH_PLL1                   1
+#define CLK_ETH_PLL2                   2
+
+#define MDIV_SHIFT_ETH                 3
+#define DIV_SHIFT_ETH                  6
+#define DIV_ETH_125                    9
+#define DIV_ETH_50                     12
+#define DIV_ETH_P2P                    15
+
+#define ETH_CLK_CFG                    (4 << DIV_ETH_P2P | 4 << DIV_ETH_50 \
+                                       | 1 << DIV_ETH_125 \
+                                       | 0 << DIV_SHIFT_ETH \
+                                       | 3 << MDIV_SHIFT_ETH | CLK_ETH_PLL1)
+ /* CGU Ethernet control */
+
+#define ETH_CLK_TX_EXT_PHY             0
+#define ETH_CLK_TX_125M                        1
+#define ETH_CLK_TX_25M                 2
+#define ETH_CLK_TX_2M5                 3
+#define ETH_CLK_TX_DIS                 7
+
+#define ETH_CLK_RX_EXT_PHY             0
+#define ETH_CLK_RX_25M                 1
+#define ETH_CLK_RX_2M5                 2
+#define ETH_CLK_RX_DIS                 3
+#define RX_CLK_SHIFT                   3
+#define ETH_CLK_MASK                   ~(0x1F)
+
+#define ETH_PHY_MODE_GMII              0
+#define ETH_PHY_MODE_RMII              1
+#define ETH_PHY_CLK_DIS                        1
+
+#define ETH_CLK_CTRL                   (ETH_CLK_RX_EXT_PHY << RX_CLK_SHIFT \
+                                       | ETH_CLK_TX_EXT_PHY)
+#endif
diff --git a/arch/arm/include/asm/arch-stv0991/stv0991_creg.h b/arch/arm/include/asm/arch-stv0991/stv0991_creg.h
new file mode 100644 (file)
index 0000000..c804eb5
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _STV0991_CREG_H
+#define _STV0991_CREG_H
+
+struct stv0991_creg {
+       u32 version;            /* offset 0x0 */
+       u32 hdpctl;             /* offset 0x4 */
+       u32 hdpval;             /* offset 0x8 */
+       u32 hdpgposet;          /* offset 0xc */
+       u32 hdpgpoclr;          /* offset 0x10 */
+       u32 hdpgpoval;          /* offset 0x14 */
+       u32 stm_mux;            /* offset 0x18 */
+       u32 sysctrl_1;          /* offset 0x1c */
+       u32 sysctrl_2;          /* offset 0x20 */
+       u32 sysctrl_3;          /* offset 0x24 */
+       u32 sysctrl_4;          /* offset 0x28 */
+       u32 reserved_1[0x35];   /* offset 0x2C-0xFC */
+       u32 mux1;               /* offset 0x100 */
+       u32 mux2;               /* offset 0x104 */
+       u32 mux3;               /* offset 0x108 */
+       u32 mux4;               /* offset 0x10c */
+       u32 mux5;               /* offset 0x110 */
+       u32 mux6;               /* offset 0x114 */
+       u32 mux7;               /* offset 0x118 */
+       u32 mux8;               /* offset 0x11c */
+       u32 mux9;               /* offset 0x120 */
+       u32 mux10;              /* offset 0x124 */
+       u32 mux11;              /* offset 0x128 */
+       u32 mux12;              /* offset 0x12c */
+       u32 mux13;              /* offset 0x130 */
+       u32 reserved_2[0x33];   /* offset 0x134-0x1FC */
+       u32 cfg_pad1;           /* offset 0x200 */
+       u32 cfg_pad2;           /* offset 0x204 */
+       u32 cfg_pad3;           /* offset 0x208 */
+       u32 cfg_pad4;           /* offset 0x20c */
+       u32 cfg_pad5;           /* offset 0x210 */
+       u32 cfg_pad6;           /* offset 0x214 */
+       u32 cfg_pad7;           /* offset 0x218 */
+       u32 reserved_3[0x39];   /* offset 0x21C-0x2FC */
+       u32 vdd_pad1;           /* offset 0x300 */
+       u32 vdd_pad2;           /* offset 0x304 */
+       u32 reserved_4[0x3e];   /* offset 0x308-0x3FC */
+       u32 vdd_comp1;          /* offset 0x400 */
+};
+
+/* CREG MUX 12 register */
+#define GPIOC_30_MUX_SHIFT     24
+#define GPIOC_30_MUX_MASK      ~(1 << GPIOC_30_MUX_SHIFT)
+#define CFG_GPIOC_30_UART_TX   (1 << GPIOC_30_MUX_SHIFT)
+
+#define GPIOC_31_MUX_SHIFT     28
+#define GPIOC_31_MUX_MASK      ~(1 << GPIOC_31_MUX_SHIFT)
+#define CFG_GPIOC_31_UART_RX   (1 << GPIOC_31_MUX_SHIFT)
+
+/* CREG MUX 7 register */
+#define GPIOB_16_MUX_SHIFT     0
+#define GPIOB_16_MUX_MASK      ~(1 << GPIOB_16_MUX_SHIFT)
+#define CFG_GPIOB_16_UART_TX   (1 << GPIOB_16_MUX_SHIFT)
+
+#define GPIOB_17_MUX_SHIFT     4
+#define GPIOB_17_MUX_MASK      ~(1 << GPIOB_17_MUX_SHIFT)
+#define CFG_GPIOB_17_UART_RX   (1 << GPIOB_17_MUX_SHIFT)
+
+/* CREG CFG_PAD6 register */
+
+#define GPIOC_31_MODE_SHIFT    30
+#define GPIOC_31_MODE_MASK     ~(1 << GPIOC_31_MODE_SHIFT)
+#define CFG_GPIOC_31_MODE_OD   (0 << GPIOC_31_MODE_SHIFT)
+#define CFG_GPIOC_31_MODE_PP   (1 << GPIOC_31_MODE_SHIFT)
+
+#define GPIOC_30_MODE_SHIFT    28
+#define GPIOC_30_MODE_MASK     ~(1 << GPIOC_30_MODE_SHIFT)
+#define CFG_GPIOC_30_MODE_LOW  (0 << GPIOC_30_MODE_SHIFT)
+#define CFG_GPIOC_30_MODE_HIGH (1 << GPIOC_30_MODE_SHIFT)
+
+/* CREG Ethernet pad config */
+
+#define VDD_ETH_PS_1V8         0
+#define VDD_ETH_PS_2V5         2
+#define VDD_ETH_PS_3V3         3
+#define VDD_ETH_PS_MASK                0x3
+
+#define VDD_ETH_PS_SHIFT       12
+#define ETH_VDD_CFG            (VDD_ETH_PS_1V8 << VDD_ETH_PS_SHIFT)
+
+#define VDD_ETH_M_PS_SHIFT     28
+#define ETH_M_VDD_CFG          (VDD_ETH_PS_1V8 << VDD_ETH_M_PS_SHIFT)
+
+#endif
diff --git a/arch/arm/include/asm/arch-stv0991/stv0991_defs.h b/arch/arm/include/asm/arch-stv0991/stv0991_defs.h
new file mode 100644 (file)
index 0000000..1151378
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __STV0991_DEFS_H__
+#define __STV0991_DEFS_H__
+#include <asm/arch/stv0991_periph.h>
+
+extern int stv0991_pinmux_config(enum periph_id);
+extern int clock_setup(enum periph_clock);
+
+#endif
+
diff --git a/arch/arm/include/asm/arch-stv0991/stv0991_gpt.h b/arch/arm/include/asm/arch-stv0991/stv0991_gpt.h
new file mode 100644 (file)
index 0000000..abd7257
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _STV0991_GPT_H
+#define _STV0991_GPT_H
+
+#include <asm/arch-stv0991/hardware.h>
+
+struct gpt_regs {
+       u32 cr1;
+       u32 cr2;
+       u32 reserved_1;
+       u32 dier;       /* dma_int_en */
+       u32 sr;         /* status reg */
+       u32 egr;        /* event gen */
+       u32 reserved_2[3];      /* offset 0x18--0x20*/
+       u32 cnt;
+       u32 psc;
+       u32 arr;
+};
+
+struct gpt_regs *const gpt1_regs_ptr =
+       (struct gpt_regs *) GPTIMER1_BASE_ADDR;
+
+/* Timer control1 register  */
+#define GPT_CR1_CEN                    0x0001
+#define GPT_MODE_AUTO_RELOAD           (1 << 7)
+
+/* Timer prescalar reg */
+#define GPT_PRESCALER_128              0x128
+
+/* Auto reload register for free running config */
+#define GPT_FREE_RUNNING               0xFFFF
+
+/* Timer, HZ specific defines */
+#define CONFIG_STV0991_HZ              1000
+#define CONFIG_STV0991_HZ_CLOCK                (27*1000*1000)/GPT_PRESCALER_128
+
+#endif
diff --git a/arch/arm/include/asm/arch-stv0991/stv0991_periph.h b/arch/arm/include/asm/arch-stv0991/stv0991_periph.h
new file mode 100644 (file)
index 0000000..f728c83
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARM_ARCH_PERIPH_H
+#define __ASM_ARM_ARCH_PERIPH_H
+
+/*
+ * Peripherals required for pinmux configuration. List will
+ * grow with support for more devices getting added.
+ * Numbering based on interrupt table.
+ *
+ */
+enum periph_id {
+       UART_GPIOC_30_31 = 0,
+       UART_GPIOB_16_17,
+       ETH_GPIOB_10_31_C_0_4,
+       PERIPH_ID_I2C0,
+       PERIPH_ID_I2C1,
+       PERIPH_ID_I2C2,
+       PERIPH_ID_I2C3,
+       PERIPH_ID_I2C4,
+       PERIPH_ID_I2C5,
+       PERIPH_ID_I2C6,
+       PERIPH_ID_I2C7,
+       PERIPH_ID_SPI0,
+       PERIPH_ID_SPI1,
+       PERIPH_ID_SPI2,
+       PERIPH_ID_SDMMC0,
+       PERIPH_ID_SDMMC1,
+       PERIPH_ID_SDMMC2,
+       PERIPH_ID_SDMMC3,
+       PERIPH_ID_I2S1,
+};
+
+enum periph_clock {
+       UART_CLOCK_CFG = 0,
+       ETH_CLOCK_CFG,
+};
+
+#endif /* __ASM_ARM_ARCH_PERIPH_H */
diff --git a/arch/arm/include/asm/arch-stv0991/stv0991_wdru.h b/arch/arm/include/asm/arch-stv0991/stv0991_wdru.h
new file mode 100644 (file)
index 0000000..7e555a2
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _STV0991_WD_RST_H
+#define _STV0991_WD_RST_H
+#include <asm/arch-stv0991/hardware.h>
+
+struct stv0991_wd_ru {
+       u32 wdru_config;
+       u32 wdru_ctrl1;
+       u32 wdru_ctrl2;
+       u32 wdru_tim;
+       u32 wdru_count;
+       u32 wdru_stat;
+       u32 wdru_wrlock;
+};
+
+struct stv0991_wd_ru *const stv0991_wd_ru_ptr = \
+               (struct stv0991_wd_ru *)WDRU_BASE_ADDR;
+
+/* Watchdog control register */
+#define WDRU_RST_SYS           0x1
+
+#endif
index c562f621c22624ddf8589afb3e2cc3090eac8b1c..505c363e46e1af460837262cff52a8d379f83e1f 100644 (file)
@@ -15,7 +15,7 @@
 #define CLK_GATE_CLOSE                 0x0
 
 /* clock control module regs definition */
-#if defined(CONFIG_SUN6I) || defined(CONFIG_SUN8I)
+#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN8I)
 #include <asm/arch/clock_sun6i.h>
 #else
 #include <asm/arch/clock_sun4i.h>
 int clock_init(void);
 int clock_twi_onoff(int port, int state);
 void clock_set_pll1(unsigned int hz);
+void clock_set_pll3(unsigned int hz);
 unsigned int clock_get_pll5p(void);
 unsigned int clock_get_pll6(void);
+void clock_set_de_mod_clock(u32 *clk_cfg, unsigned int hz);
 void clock_init_safe(void);
 void clock_init_uart(void);
 #endif
index 90af8e250699b835bbf94c080e798d9eaa575121..84a9a2bdbc312e6e97a41887b2a35632ddb23bfe 100644 (file)
@@ -62,7 +62,7 @@ struct sunxi_ccm_reg {
        u32 gps_clk_cfg;        /* 0xd0 */
        u32 spi3_clk_cfg;       /* 0xd4 */
        u8 res5[0x28];
-       u32 dram_clk_cfg;       /* 0x100 */
+       u32 dram_clk_gate;      /* 0x100 */
        u32 be0_clk_cfg;        /* 0x104 */
        u32 be1_clk_cfg;        /* 0x108 */
        u32 fe0_clk_cfg;        /* 0x10c */
@@ -182,16 +182,26 @@ struct sunxi_ccm_reg {
 #define AHB_GATE_OFFSET_USB_EHCI1      3
 #define AHB_GATE_OFFSET_USB_OHCI0      2
 #define AHB_GATE_OFFSET_USB_EHCI0      1
-#define AHB_GATE_OFFSET_USB            0
+#define AHB_GATE_OFFSET_USB0           0
 
 /* ahb clock gate bit offset (second register) */
 #define AHB_GATE_OFFSET_GMAC           17
+#define AHB_GATE_OFFSET_DE_BE0         12
+#define AHB_GATE_OFFSET_HDMI           11
+#define AHB_GATE_OFFSET_LCD1           5
+#define AHB_GATE_OFFSET_LCD0           4
+#define AHB_GATE_OFFSET_TVE1           3
+#define AHB_GATE_OFFSET_TVE0           2
 
 #define CCM_AHB_GATE_GPS (0x1 << 26)
 #define CCM_AHB_GATE_SDRAM (0x1 << 14)
 #define CCM_AHB_GATE_DLL (0x1 << 15)
 #define CCM_AHB_GATE_ACE (0x1 << 16)
 
+#define CCM_PLL3_CTRL_M(n)             (((n) & 0x7f) << 0)
+#define CCM_PLL3_CTRL_INTEGER_MODE     (0x1 << 15)
+#define CCM_PLL3_CTRL_EN               (0x1 << 31)
+
 #define CCM_PLL5_CTRL_M(n) (((n) & 0x3) << 0)
 #define CCM_PLL5_CTRL_M_MASK CCM_PLL5_CTRL_M(0x3)
 #define CCM_PLL5_CTRL_M_X(n) ((n) - 1)
@@ -247,11 +257,44 @@ struct sunxi_ccm_reg {
 #define CCM_MBUS_CTRL_CLK_SRC_PLL5 0x2
 #define CCM_MBUS_CTRL_GATE (0x1 << 31)
 
-#define CCM_MMC_CTRL_OSCM24 (0x0 << 24)
-#define CCM_MMC_CTRL_PLL6   (0x1 << 24)
-#define CCM_MMC_CTRL_PLL5   (0x2 << 24)
+#define CCM_MMC_CTRL_M(x)              ((x) - 1)
+#define CCM_MMC_CTRL_OCLK_DLY(x)       ((x) << 8)
+#define CCM_MMC_CTRL_N(x)              ((x) << 16)
+#define CCM_MMC_CTRL_SCLK_DLY(x)       ((x) << 20)
+#define CCM_MMC_CTRL_OSCM24            (0x0 << 24)
+#define CCM_MMC_CTRL_PLL6              (0x1 << 24)
+#define CCM_MMC_CTRL_PLL5              (0x2 << 24)
+#define CCM_MMC_CTRL_ENABLE            (0x1 << 31)
+
+#define CCM_DRAM_GATE_OFFSET_DE_BE0    26
+
+#define CCM_LCD_CH0_CTRL_PLL3          (0 << 24)
+#define CCM_LCD_CH0_CTRL_PLL7          (1 << 24)
+#define CCM_LCD_CH0_CTRL_PLL3_2X       (2 << 24)
+#define CCM_LCD_CH0_CTRL_PLL7_2X       (3 << 24)
+#define CCM_LCD_CH0_CTRL_RST           (0x1 << 30)
+#define CCM_LCD_CH0_CTRL_GATE          (0x1 << 31)
 
-#define CCM_MMC_CTRL_ENABLE (0x1 << 31)
+#define CCM_LCD_CH1_CTRL_M(n)          ((((n) - 1) & 0xf) << 0)
+/* We leave bit 11 set to 0, so sclk1 == sclk2 */
+#define CCM_LCD_CH1_CTRL_PLL3          (0 << 24)
+#define CCM_LCD_CH1_CTRL_PLL7          (1 << 24)
+#define CCM_LCD_CH1_CTRL_PLL3_2X       (2 << 24)
+#define CCM_LCD_CH1_CTRL_PLL7_2X       (3 << 24)
+/* Enable / disable both ch1 sclk1 and sclk2 at the same time */
+#define CCM_LCD_CH1_CTRL_GATE          (0x1 << 31 | 0x1 << 15)
+
+#define CCM_LVDS_CTRL_RST              (1 << 0)
+
+#define CCM_HDMI_CTRL_M(n)             ((((n) - 1) & 0xf) << 0)
+#define CCM_HDMI_CTRL_PLL_MASK         (3 << 24)
+#define CCM_HDMI_CTRL_PLL3             (0 << 24)
+#define CCM_HDMI_CTRL_PLL7             (1 << 24)
+#define CCM_HDMI_CTRL_PLL3_2X          (2 << 24)
+#define CCM_HDMI_CTRL_PLL7_2X          (3 << 24)
+/* No separate ddc gate on sun4i, sun5i and sun7i */
+#define CCM_HDMI_CTRL_DDC_GATE         0
+#define CCM_HDMI_CTRL_GATE             (0x1 << 31)
 
 #define CCM_GMAC_CTRL_TX_CLK_SRC_MII 0x0
 #define CCM_GMAC_CTRL_TX_CLK_SRC_EXT_RGMII 0x1
@@ -259,8 +302,22 @@ struct sunxi_ccm_reg {
 #define CCM_GMAC_CTRL_GPIT_MII (0x0 << 2)
 #define CCM_GMAC_CTRL_GPIT_RGMII (0x1 << 2)
 
+#define CCM_USB_CTRL_PHY0_RST (0x1 << 0)
 #define CCM_USB_CTRL_PHY1_RST (0x1 << 1)
 #define CCM_USB_CTRL_PHY2_RST (0x1 << 2)
 #define CCM_USB_CTRL_PHYGATE (0x1 << 8)
+/* These 3 are sun6i only, define them as 0 on sun4i */
+#define CCM_USB_CTRL_PHY0_CLK 0
+#define CCM_USB_CTRL_PHY1_CLK 0
+#define CCM_USB_CTRL_PHY2_CLK 0
+
+/* CCM bits common to all Display Engine (and IEP) clock ctrl regs */
+#define CCM_DE_CTRL_M(n)               ((((n) - 1) & 0xf) << 0)
+#define CCM_DE_CTRL_PLL_MASK           (3 << 24)
+#define CCM_DE_CTRL_PLL3               (0 << 24)
+#define CCM_DE_CTRL_PLL7               (1 << 24)
+#define CCM_DE_CTRL_PLL5P              (2 << 24)
+#define CCM_DE_CTRL_RST                        (1 << 30)
+#define CCM_DE_CTRL_GATE               (1 << 31)
 
 #endif /* _SUNXI_CLOCK_SUN4I_H */
index 1397b35889837e7b144f9dc8f1f65a1dce7d7b13..4711260c1eef58196d40c46f856c3805012a2824 100644 (file)
@@ -170,31 +170,138 @@ struct sunxi_ccm_reg {
 #define CPU_CLK_SRC_OSC24M             1
 #define CPU_CLK_SRC_PLL1               2
 
-#define PLL1_CFG_DEFAULT               0x90011b21
+#define CCM_PLL1_CTRL_M(n)             ((((n) - 1) & 0x3) << 0)
+#define CCM_PLL1_CTRL_K(n)             ((((n) - 1) & 0x3) << 4)
+#define CCM_PLL1_CTRL_N(n)             ((((n) - 1) & 0x1f) << 8)
+#define CCM_PLL1_CTRL_P(n)             (((n) & 0x3) << 16)
+#define CCM_PLL1_CTRL_EN               (0x1 << 31)
 
-#define PLL6_CFG_DEFAULT               0x90041811
+#define CCM_PLL3_CTRL_M(n)             ((((n) - 1) & 0xf) << 0)
+#define CCM_PLL3_CTRL_N(n)             ((((n) - 1) & 0x7f) << 8)
+#define CCM_PLL3_CTRL_INTEGER_MODE     (0x1 << 24)
+#define CCM_PLL3_CTRL_EN               (0x1 << 31)
+
+#define CCM_PLL5_CTRL_M(n)             ((((n) - 1) & 0x3) << 0)
+#define CCM_PLL5_CTRL_K(n)             ((((n) - 1) & 0x3) << 4)
+#define CCM_PLL5_CTRL_N(n)             ((((n) - 1) & 0x1f) << 8)
+#define CCM_PLL5_CTRL_UPD              (0x1 << 20)
+#define CCM_PLL5_CTRL_SIGMA_DELTA_EN   (0x1 << 24)
+#define CCM_PLL5_CTRL_EN               (0x1 << 31)
+
+#define PLL6_CFG_DEFAULT               0x90041811 /* 600 MHz */
 
 #define CCM_PLL6_CTRL_N_SHIFT          8
 #define CCM_PLL6_CTRL_N_MASK           (0x1f << CCM_PLL6_CTRL_N_SHIFT)
 #define CCM_PLL6_CTRL_K_SHIFT          4
 #define CCM_PLL6_CTRL_K_MASK           (0x3 << CCM_PLL6_CTRL_K_SHIFT)
 
+#define AHB1_ABP1_DIV_DEFAULT          0x00002020
+
+#define AXI_GATE_OFFSET_DRAM           0
+
+/* ahb_gate0 offsets */
+#define AHB_GATE_OFFSET_USB_OHCI1      30
+#define AHB_GATE_OFFSET_USB_OHCI0      29
+#define AHB_GATE_OFFSET_USB_EHCI1      27
+#define AHB_GATE_OFFSET_USB_EHCI0      26
+#define AHB_GATE_OFFSET_USB0           24
+#define AHB_GATE_OFFSET_MCTL           14
+#define AHB_GATE_OFFSET_GMAC           17
 #define AHB_GATE_OFFSET_MMC3           11
 #define AHB_GATE_OFFSET_MMC2           10
 #define AHB_GATE_OFFSET_MMC1           9
 #define AHB_GATE_OFFSET_MMC0           8
 #define AHB_GATE_OFFSET_MMC(n)         (AHB_GATE_OFFSET_MMC0 + (n))
+#define AHB_GATE_OFFSET_SS             5
+
+/* ahb_gate1 offsets */
+#define AHB_GATE_OFFSET_DRC0           25
+#define AHB_GATE_OFFSET_DE_BE0         12
+#define AHB_GATE_OFFSET_HDMI           11
+#define AHB_GATE_OFFSET_LCD1           5
+#define AHB_GATE_OFFSET_LCD0           4
+
+#define CCM_MMC_CTRL_M(x)              ((x) - 1)
+#define CCM_MMC_CTRL_OCLK_DLY(x)       ((x) << 8)
+#define CCM_MMC_CTRL_N(x)              ((x) << 16)
+#define CCM_MMC_CTRL_SCLK_DLY(x)       ((x) << 20)
+#define CCM_MMC_CTRL_OSCM24            (0x0 << 24)
+#define CCM_MMC_CTRL_PLL6              (0x1 << 24)
+#define CCM_MMC_CTRL_ENABLE            (0x1 << 31)
+
+#define CCM_USB_CTRL_PHY0_RST (0x1 << 0)
+#define CCM_USB_CTRL_PHY1_RST (0x1 << 1)
+#define CCM_USB_CTRL_PHY2_RST (0x1 << 2)
+/* There is no global phy clk gate on sun6i, define as 0 */
+#define CCM_USB_CTRL_PHYGATE 0
+#define CCM_USB_CTRL_PHY0_CLK (0x1 << 8)
+#define CCM_USB_CTRL_PHY1_CLK (0x1 << 9)
+#define CCM_USB_CTRL_PHY2_CLK (0x1 << 10)
+
+#define CCM_GMAC_CTRL_TX_CLK_SRC_MII   0x0
+#define CCM_GMAC_CTRL_TX_CLK_SRC_EXT_RGMII 0x1
+#define CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII 0x2
+#define CCM_GMAC_CTRL_GPIT_MII         (0x0 << 2)
+#define CCM_GMAC_CTRL_GPIT_RGMII       (0x1 << 2)
+
+#define MDFS_CLK_DEFAULT               0x81000002 /* PLL6 / 3 */
 
-#define CCM_MMC_CTRL_OSCM24 (0x0 << 24)
-#define CCM_MMC_CTRL_PLL6   (0x1 << 24)
+#define CCM_DRAMCLK_CFG_DIV0(x)                ((x - 1) << 8)
+#define CCM_DRAMCLK_CFG_DIV0_MASK      (0xf << 8)
+#define CCM_DRAMCLK_CFG_UPD            (0x1 << 16)
+#define CCM_DRAMCLK_CFG_RST            (0x1 << 31)
 
-#define CCM_MMC_CTRL_ENABLE (0x1 << 31)
+#define CCM_DRAM_GATE_OFFSET_DE_BE0    26
 
+#define CCM_LCD_CH0_CTRL_PLL3          (0 << 24)
+#define CCM_LCD_CH0_CTRL_PLL7          (1 << 24)
+#define CCM_LCD_CH0_CTRL_PLL3_2X       (2 << 24)
+#define CCM_LCD_CH0_CTRL_PLL7_2X       (3 << 24)
+#define CCM_LCD_CH0_CTRL_MIPI_PLL      (4 << 24)
+/* No reset bit in ch0_clk_cfg (reset is controlled through ahb_reset1) */
+#define CCM_LCD_CH0_CTRL_RST           0
+#define CCM_LCD_CH0_CTRL_GATE          (0x1 << 31)
+
+#define CCM_LCD_CH1_CTRL_M(n)          ((((n) - 1) & 0xf) << 0)
+#define CCM_LCD_CH1_CTRL_PLL3          (0 << 24)
+#define CCM_LCD_CH1_CTRL_PLL7          (1 << 24)
+#define CCM_LCD_CH1_CTRL_PLL3_2X       (2 << 24)
+#define CCM_LCD_CH1_CTRL_PLL7_2X       (3 << 24)
+#define CCM_LCD_CH1_CTRL_GATE          (0x1 << 31)
+
+#define CCM_HDMI_CTRL_M(n)             ((((n) - 1) & 0xf) << 0)
+#define CCM_HDMI_CTRL_PLL_MASK         (3 << 24)
+#define CCM_HDMI_CTRL_PLL3             (0 << 24)
+#define CCM_HDMI_CTRL_PLL7             (1 << 24)
+#define CCM_HDMI_CTRL_PLL3_2X          (2 << 24)
+#define CCM_HDMI_CTRL_PLL7_2X          (3 << 24)
+#define CCM_HDMI_CTRL_DDC_GATE         (0x1 << 30)
+#define CCM_HDMI_CTRL_GATE             (0x1 << 31)
+
+#ifndef CONFIG_MACH_SUN8I
+#define MBUS_CLK_DEFAULT               0x81000001 /* PLL6 / 2 */
+#else
+#define MBUS_CLK_DEFAULT               0x81000003 /* PLL6 / 4 */
+#endif
+
+#define CCM_PLL5_PATTERN               0xd1303333
+
+/* ahb_reset0 offsets */
+#define AHB_RESET_OFFSET_GMAC          17
+#define AHB_RESET_OFFSET_MCTL          14
 #define AHB_RESET_OFFSET_MMC3          11
 #define AHB_RESET_OFFSET_MMC2          10
 #define AHB_RESET_OFFSET_MMC1          9
 #define AHB_RESET_OFFSET_MMC0          8
 #define AHB_RESET_OFFSET_MMC(n)                (AHB_RESET_OFFSET_MMC0 + (n))
+#define AHB_RESET_OFFSET_SS            5
+
+/* ahb_reset1 offsets */
+#define AHB_RESET_OFFSET_DRC0          25
+#define AHB_RESET_OFFSET_DE_BE0                12
+#define AHB_RESET_OFFSET_HDMI          11
+#define AHB_RESET_OFFSET_LCD1          5
+#define AHB_RESET_OFFSET_LCD0          4
 
 /* apb2 reset */
 #define APB2_RESET_UART_SHIFT          (16)
@@ -202,4 +309,17 @@ struct sunxi_ccm_reg {
 #define APB2_RESET_TWI_SHIFT           (0)
 #define APB2_RESET_TWI_MASK            (0xf << APB2_RESET_TWI_SHIFT)
 
+/* CCM bits common to all Display Engine (and IEP) clock ctrl regs */
+#define CCM_DE_CTRL_M(n)               ((((n) - 1) & 0xf) << 0)
+#define CCM_DE_CTRL_PLL_MASK           (0xf << 24)
+#define CCM_DE_CTRL_PLL3               (0 << 24)
+#define CCM_DE_CTRL_PLL7               (1 << 24)
+#define CCM_DE_CTRL_PLL6_2X            (2 << 24)
+#define CCM_DE_CTRL_PLL8               (3 << 24)
+#define CCM_DE_CTRL_PLL9               (4 << 24)
+#define CCM_DE_CTRL_PLL10              (5 << 24)
+#define CCM_DE_CTRL_GATE               (1 << 31)
+
+void clock_set_pll5(unsigned int clk, bool sigma_delta_enable);
+
 #endif /* _SUNXI_CLOCK_SUN6I_H */
index 0de79a0d50890b8463b59b83169ac0703748aec0..82b3d4676fd7fd51f952882d2c054d53c9e8d87e 100644 (file)
 #define SUNXI_MMC1_BASE                        0x01c10000
 #define SUNXI_MMC2_BASE                        0x01c11000
 #define SUNXI_MMC3_BASE                        0x01c12000
+#if !defined CONFIG_MACH_SUN6I && !defined CONFIG_MACH_SUN8I
 #define SUNXI_USB0_BASE                        0x01c13000
 #define SUNXI_USB1_BASE                        0x01c14000
+#endif
 #define SUNXI_SS_BASE                  0x01c15000
 #define SUNXI_HDMI_BASE                        0x01c16000
 #define SUNXI_SPI2_BASE                        0x01c17000
 #define SUNXI_SATA_BASE                        0x01c18000
+#if !defined CONFIG_MACH_SUN6I && !defined CONFIG_MACH_SUN8I
 #define SUNXI_PATA_BASE                        0x01c19000
 #define SUNXI_ACE_BASE                 0x01c1a000
 #define SUNXI_TVE1_BASE                        0x01c1b000
 #define SUNXI_USB2_BASE                        0x01c1c000
+#else
+#define SUNXI_USB0_BASE                        0x01c19000
+#define SUNXI_USB1_BASE                        0x01c1a000
+#define SUNXI_USB2_BASE                        0x01c1b000
+#endif
 #define SUNXI_CSI1_BASE                        0x01c1d000
 #define SUNXI_TZASC_BASE               0x01c1e000
 #define SUNXI_SPI3_BASE                        0x01c1f000
@@ -70,7 +78,7 @@
 
 #define SUNXI_TP_BASE                  0x01c25000
 #define SUNXI_PMU_BASE                 0x01c25400
-#define SUNXI_CPUCFG_BASE              0x01c25c00
+#define SUN7I_CPUCFG_BASE              0x01c25c00
 
 #define SUNXI_UART0_BASE               0x01c28000
 #define SUNXI_UART1_BASE               0x01c28400
 
 #define SUNXI_SCR_BASE                 0x01c2c400
 
+#ifndef CONFIG_MACH_SUN6I
 #define SUNXI_GPS_BASE                 0x01c30000
 #define SUNXI_MALI400_BASE             0x01c40000
 #define SUNXI_GMAC_BASE                        0x01c50000
+#else
+#define SUNXI_GMAC_BASE                        0x01c30000
+#endif
 
 #define SUNXI_DRAM_COM_BASE            0x01c62000
-#define SUNXI_DRAM_CTL_BASE            0x01c63000
-#define SUNXI_DRAM_PHY_CH1_BASE                0x01c65000
-#define SUNXI_DRAM_PHY_CH2_BASE                0x01c66000
+#define SUNXI_DRAM_CTL0_BASE           0x01c63000
+#define SUNXI_DRAM_CTL1_BASE           0x01c64000
+#define SUNXI_DRAM_PHY0_BASE           0x01c65000
+#define SUNXI_DRAM_PHY1_BASE           0x01c66000
 
 /* module sram */
 #define SUNXI_SRAM_C_BASE              0x01d00000
 #define SUNXI_MP_BASE                  0x01e80000
 #define SUNXI_AVG_BASE                 0x01ea0000
 
+#define SUNXI_RTC_BASE                 0x01f00000
 #define SUNXI_PRCM_BASE                        0x01f01400
+#define SUN6I_CPUCFG_BASE              0x01f01c00
 #define SUNXI_R_UART_BASE              0x01f02800
 #define SUNXI_R_PIO_BASE               0x01f02c00
-#define SUNXI_P2WI_BASE                        0x01f03400
+#define SUN6I_P2WI_BASE                        0x01f03400
+#define SUNXI_RSB_BASE                 0x01f03400
 
 /* CoreSight Debug Module */
 #define SUNXI_CSDM_BASE                        0x3f500000
 
 #define SUNXI_CPU_CFG                  (SUNXI_TIMER_BASE + 0x13c)
 
+/* SS bonding ids used for cpu identification */
+#define SUNXI_SS_BOND_ID_A31           4
+#define SUNXI_SS_BOND_ID_A31S          5
+
 #ifndef __ASSEMBLY__
 void sunxi_board_init(void);
 void sunxi_reset(void);
+int sunxi_get_ss_bonding_id(void);
+int sunxi_get_sid(unsigned int *sid);
 #endif /* __ASSEMBLY__ */
 
 #endif /* _CPU_H */
diff --git a/arch/arm/include/asm/arch-sunxi/cpucfg_sun6i.h b/arch/arm/include/asm/arch-sunxi/cpucfg_sun6i.h
new file mode 100644 (file)
index 0000000..e2a29cb
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Sunxi A31 CPUCFG register definition.
+ *
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_CPUCFG_H
+#define _SUNXI_CPUCFG_H
+
+#ifndef __ASSEMBLY__
+
+struct sunxi_cpucfg_reg {
+       u8 res0[0x40];          /* 0x000 */
+       u32 cpu0_rst;           /* 0x040 */
+       u32 cpu0_ctrl;          /* 0x044 */
+       u32 cpu0_status;        /* 0x048 */
+       u8 res1[0x34];          /* 0x04c */
+       u32 cpu1_rst;           /* 0x080 */
+       u32 cpu1_ctrl;          /* 0x084 */
+       u32 cpu1_status;        /* 0x088 */
+       u8 res2[0x34];          /* 0x08c */
+       u32 cpu2_rst;           /* 0x0c0 */
+       u32 cpu2_ctrl;          /* 0x0c4 */
+       u32 cpu2_status;        /* 0x0c8 */
+       u8 res3[0x34];          /* 0x0cc */
+       u32 cpu3_rst;           /* 0x100 */
+       u32 cpu3_ctrl;          /* 0x104 */
+       u32 cpu3_status;        /* 0x108 */
+       u8 res4[0x78];          /* 0x10c */
+       u32 gen_ctrl;           /* 0x184 */
+       u32 l2_status;          /* 0x188 */
+       u8 res5[0x4];           /* 0x18c */
+       u32 event_in;           /* 0x190 */
+       u8 res6[0xc];           /* 0x194 */
+       u32 super_standy_flag;  /* 0x1a0 */
+       u32 priv0;              /* 0x1a4 */
+       u32 priv1;              /* 0x1a8 */
+       u8 res7[0x54];          /* 0x1ac */
+       u32 idle_cnt0_low;      /* 0x200 */
+       u32 idle_cnt0_high;     /* 0x204 */
+       u32 idle_cnt0_ctrl;     /* 0x208 */
+       u8 res8[0x4];           /* 0x20c */
+       u32 idle_cnt1_low;      /* 0x210 */
+       u32 idle_cnt1_high;     /* 0x214 */
+       u32 idle_cnt1_ctrl;     /* 0x218 */
+       u8 res9[0x4];           /* 0x21c */
+       u32 idle_cnt2_low;      /* 0x220 */
+       u32 idle_cnt2_high;     /* 0x224 */
+       u32 idle_cnt2_ctrl;     /* 0x228 */
+       u8 res10[0x4];          /* 0x22c */
+       u32 idle_cnt3_low;      /* 0x230 */
+       u32 idle_cnt3_high;     /* 0x234 */
+       u32 idle_cnt3_ctrl;     /* 0x238 */
+       u8 res11[0x4];          /* 0x23c */
+       u32 idle_cnt4_low;      /* 0x240 */
+       u32 idle_cnt4_high;     /* 0x244 */
+       u32 idle_cnt4_ctrl;     /* 0x248 */
+       u8 res12[0x34];         /* 0x24c */
+       u32 cnt64_ctrl;         /* 0x280 */
+       u32 cnt64_low;          /* 0x284 */
+       u32 cnt64_high;         /* 0x288 */
+};
+
+#endif /* __ASSEMBLY__ */
+#endif /* _SUNXI_CPUCFG_H */
diff --git a/arch/arm/include/asm/arch-sunxi/display.h b/arch/arm/include/asm/arch-sunxi/display.h
new file mode 100644 (file)
index 0000000..2ac8a87
--- /dev/null
@@ -0,0 +1,392 @@
+/*
+ * Sunxi platform display controller register and constant defines
+ *
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_DISPLAY_H
+#define _SUNXI_DISPLAY_H
+
+struct sunxi_de_be_reg {
+       u8 res0[0x800];                 /* 0x000 */
+       u32 mode;                       /* 0x800 */
+       u32 backcolor;                  /* 0x804 */
+       u32 disp_size;                  /* 0x808 */
+       u8 res1[0x4];                   /* 0x80c */
+       u32 layer0_size;                /* 0x810 */
+       u32 layer1_size;                /* 0x814 */
+       u32 layer2_size;                /* 0x818 */
+       u32 layer3_size;                /* 0x81c */
+       u32 layer0_pos;                 /* 0x820 */
+       u32 layer1_pos;                 /* 0x824 */
+       u32 layer2_pos;                 /* 0x828 */
+       u32 layer3_pos;                 /* 0x82c */
+       u8 res2[0x10];                  /* 0x830 */
+       u32 layer0_stride;              /* 0x840 */
+       u32 layer1_stride;              /* 0x844 */
+       u32 layer2_stride;              /* 0x848 */
+       u32 layer3_stride;              /* 0x84c */
+       u32 layer0_addr_low32b;         /* 0x850 */
+       u32 layer1_addr_low32b;         /* 0x854 */
+       u32 layer2_addr_low32b;         /* 0x858 */
+       u32 layer3_addr_low32b;         /* 0x85c */
+       u32 layer0_addr_high4b;         /* 0x860 */
+       u32 layer1_addr_high4b;         /* 0x864 */
+       u32 layer2_addr_high4b;         /* 0x868 */
+       u32 layer3_addr_high4b;         /* 0x86c */
+       u32 reg_ctrl;                   /* 0x870 */
+       u8 res3[0xc];                   /* 0x874 */
+       u32 color_key_max;              /* 0x880 */
+       u32 color_key_min;              /* 0x884 */
+       u32 color_key_config;           /* 0x888 */
+       u8 res4[0x4];                   /* 0x88c */
+       u32 layer0_attr0_ctrl;          /* 0x890 */
+       u32 layer1_attr0_ctrl;          /* 0x894 */
+       u32 layer2_attr0_ctrl;          /* 0x898 */
+       u32 layer3_attr0_ctrl;          /* 0x89c */
+       u32 layer0_attr1_ctrl;          /* 0x8a0 */
+       u32 layer1_attr1_ctrl;          /* 0x8a4 */
+       u32 layer2_attr1_ctrl;          /* 0x8a8 */
+       u32 layer3_attr1_ctrl;          /* 0x8ac */
+};
+
+struct sunxi_lcdc_reg {
+       u32 ctrl;                       /* 0x00 */
+       u32 int0;                       /* 0x04 */
+       u32 int1;                       /* 0x08 */
+       u8 res0[0x04];                  /* 0x0c */
+       u32 tcon0_frm_ctrl;             /* 0x10 */
+       u32 tcon0_frm_seed[6];          /* 0x14 */
+       u32 tcon0_frm_table[4];         /* 0x2c */
+       u8 res1[4];                     /* 0x3c */
+       u32 tcon0_ctrl;                 /* 0x40 */
+       u32 tcon0_dclk;                 /* 0x44 */
+       u32 tcon0_timing_active;        /* 0x48 */
+       u32 tcon0_timing_h;             /* 0x4c */
+       u32 tcon0_timing_v;             /* 0x50 */
+       u32 tcon0_timing_sync;          /* 0x54 */
+       u32 tcon0_hv_intf;              /* 0x58 */
+       u8 res2[0x04];                  /* 0x5c */
+       u32 tcon0_cpu_intf;             /* 0x60 */
+       u32 tcon0_cpu_wr_dat;           /* 0x64 */
+       u32 tcon0_cpu_rd_dat0;          /* 0x68 */
+       u32 tcon0_cpu_rd_dat1;          /* 0x6c */
+       u32 tcon0_ttl_timing0;          /* 0x70 */
+       u32 tcon0_ttl_timing1;          /* 0x74 */
+       u32 tcon0_ttl_timing2;          /* 0x78 */
+       u32 tcon0_ttl_timing3;          /* 0x7c */
+       u32 tcon0_ttl_timing4;          /* 0x80 */
+       u32 tcon0_lvds_intf;            /* 0x84 */
+       u32 tcon0_io_polarity;          /* 0x88 */
+       u32 tcon0_io_tristate;          /* 0x8c */
+       u32 tcon1_ctrl;                 /* 0x90 */
+       u32 tcon1_timing_source;        /* 0x94 */
+       u32 tcon1_timing_scale;         /* 0x98 */
+       u32 tcon1_timing_out;           /* 0x9c */
+       u32 tcon1_timing_h;             /* 0xa0 */
+       u32 tcon1_timing_v;             /* 0xa4 */
+       u32 tcon1_timing_sync;          /* 0xa8 */
+       u8 res3[0x44];                  /* 0xac */
+       u32 tcon1_io_polarity;          /* 0xf0 */
+       u32 tcon1_io_tristate;          /* 0xf4 */
+       u8 res4[0x128];                 /* 0xf8 */
+       u32 lvds_ana0;                  /* 0x220 */
+       u32 lvds_ana1;                  /* 0x224 */
+};
+
+struct sunxi_hdmi_reg {
+       u32 version_id;                 /* 0x000 */
+       u32 ctrl;                       /* 0x004 */
+       u32 irq;                        /* 0x008 */
+       u32 hpd;                        /* 0x00c */
+       u32 video_ctrl;                 /* 0x010 */
+       u32 video_size;                 /* 0x014 */
+       u32 video_bp;                   /* 0x018 */
+       u32 video_fp;                   /* 0x01c */
+       u32 video_spw;                  /* 0x020 */
+       u32 video_polarity;             /* 0x024 */
+       u8 res0[0x58];                  /* 0x028 */
+       u8 avi_info_frame[0x14];        /* 0x080 */
+       u8 res1[0x4c];                  /* 0x094 */
+       u32 qcp_packet0;                /* 0x0e0 */
+       u32 qcp_packet1;                /* 0x0e4 */
+       u8 res2[0x118];                 /* 0x0e8 */
+       u32 pad_ctrl0;                  /* 0x200 */
+       u32 pad_ctrl1;                  /* 0x204 */
+       u32 pll_ctrl;                   /* 0x208 */
+       u32 pll_dbg0;                   /* 0x20c */
+       u32 pll_dbg1;                   /* 0x210 */
+       u32 hpd_cec;                    /* 0x214 */
+       u8 res3[0x28];                  /* 0x218 */
+       u8 vendor_info_frame[0x14];     /* 0x240 */
+       u8 res4[0x9c];                  /* 0x254 */
+       u32 pkt_ctrl0;                  /* 0x2f0 */
+       u32 pkt_ctrl1;                  /* 0x2f4 */
+       u8 res5[0x8];                   /* 0x2f8 */
+       u32 unknown;                    /* 0x300 */
+       u8 res6[0xc];                   /* 0x304 */
+       u32 audio_sample_count;         /* 0x310 */
+       u8 res7[0xec];                  /* 0x314 */
+       u32 audio_tx_fifo;              /* 0x400 */
+       u8 res8[0xfc];                  /* 0x404 */
+#ifndef CONFIG_MACH_SUN6I
+       u32 ddc_ctrl;                   /* 0x500 */
+       u32 ddc_addr;                   /* 0x504 */
+       u32 ddc_int_mask;               /* 0x508 */
+       u32 ddc_int_status;             /* 0x50c */
+       u32 ddc_fifo_ctrl;              /* 0x510 */
+       u32 ddc_fifo_status;            /* 0x514 */
+       u32 ddc_fifo_data;              /* 0x518 */
+       u32 ddc_byte_count;             /* 0x51c */
+       u32 ddc_cmnd;                   /* 0x520 */
+       u32 ddc_exreg;                  /* 0x524 */
+       u32 ddc_clock;                  /* 0x528 */
+       u8 res9[0x14];                  /* 0x52c */
+       u32 ddc_line_ctrl;              /* 0x540 */
+#else
+       u32 ddc_ctrl;                   /* 0x500 */
+       u32 ddc_exreg;                  /* 0x504 */
+       u32 ddc_cmnd;                   /* 0x508 */
+       u32 ddc_addr;                   /* 0x50c */
+       u32 ddc_int_mask;               /* 0x510 */
+       u32 ddc_int_status;             /* 0x514 */
+       u32 ddc_fifo_ctrl;              /* 0x518 */
+       u32 ddc_fifo_status;            /* 0x51c */
+       u32 ddc_clock;                  /* 0x520 */
+       u32 ddc_timeout;                /* 0x524 */
+       u8 res9[0x18];                  /* 0x528 */
+       u32 ddc_dbg;                    /* 0x540 */
+       u8 res10[0x3c];                 /* 0x544 */
+       u32 ddc_fifo_data;              /* 0x580 */
+#endif
+};
+
+/*
+ * This is based on the A10s User Manual, and the A10s only supports
+ * composite video and not vga like the A10 / A20 does, still other
+ * than the removed vga out capability the tvencoder seems to be the same.
+ * "unknown#" registers are registers which are used in the A10 kernel code,
+ * but not documented in the A10s User Manual.
+ */
+struct sunxi_tve_reg {
+       u32 gctrl;                      /* 0x000 */
+       u32 cfg0;                       /* 0x004 */
+       u32 dac_cfg0;                   /* 0x008 */
+       u32 filter;                     /* 0x00c */
+       u32 chroma_freq;                /* 0x010 */
+       u32 porch_num;                  /* 0x014 */
+       u32 unknown0;                   /* 0x018 */
+       u32 line_num;                   /* 0x01c */
+       u32 blank_black_level;          /* 0x020 */
+       u32 unknown1;                   /* 0x024, seems to be 1 byte per dac */
+       u8 res0[0x08];                  /* 0x028 */
+       u32 auto_detect_en;             /* 0x030 */
+       u32 auto_detect_int_status;     /* 0x034 */
+       u32 auto_detect_status;         /* 0x038 */
+       u32 auto_detect_debounce;       /* 0x03c */
+       u32 csc_reg0;                   /* 0x040 */
+       u32 csc_reg1;                   /* 0x044 */
+       u32 csc_reg2;                   /* 0x048 */
+       u32 csc_reg3;                   /* 0x04c */
+       u8 res1[0xb0];                  /* 0x050 */
+       u32 color_burst;                /* 0x100 */
+       u32 vsync_num;                  /* 0x104 */
+       u32 notch_freq;                 /* 0x108 */
+       u32 cbr_level;                  /* 0x10c */
+       u32 burst_phase;                /* 0x110 */
+       u32 burst_width;                /* 0x114 */
+       u8 res2[0x04];                  /* 0x118 */
+       u32 sync_vbi_level;             /* 0x11c */
+       u32 white_level;                /* 0x120 */
+       u32 active_num;                 /* 0x124 */
+       u32 chroma_bw_gain;             /* 0x128 */
+       u32 notch_width;                /* 0x12c */
+       u32 resync_num;                 /* 0x130 */
+       u32 slave_para;                 /* 0x134 */
+       u32 cfg1;                       /* 0x138 */
+       u32 cfg2;                       /* 0x13c */
+};
+
+/*
+ * DE-BE register constants.
+ */
+#define SUNXI_DE_BE_WIDTH(x)                   (((x) - 1) << 0)
+#define SUNXI_DE_BE_HEIGHT(y)                  (((y) - 1) << 16)
+#define SUNXI_DE_BE_MODE_ENABLE                        (1 << 0)
+#define SUNXI_DE_BE_MODE_START                 (1 << 1)
+#define SUNXI_DE_BE_MODE_LAYER0_ENABLE         (1 << 8)
+#define SUNXI_DE_BE_LAYER_STRIDE(x)            ((x) << 5)
+#define SUNXI_DE_BE_REG_CTRL_LOAD_REGS         (1 << 0)
+#define SUNXI_DE_BE_LAYER_ATTR1_FMT_XRGB8888   (0x09 << 8)
+
+/*
+ * LCDC register constants.
+ */
+#define SUNXI_LCDC_X(x)                                (((x) - 1) << 16)
+#define SUNXI_LCDC_Y(y)                                (((y) - 1) << 0)
+#define SUNXI_LCDC_TCON_VSYNC_MASK             (1 << 24)
+#define SUNXI_LCDC_TCON_HSYNC_MASK             (1 << 25)
+#define SUNXI_LCDC_CTRL_IO_MAP_MASK            (1 << 0)
+#define SUNXI_LCDC_CTRL_IO_MAP_TCON0           (0 << 0)
+#define SUNXI_LCDC_CTRL_IO_MAP_TCON1           (1 << 0)
+#define SUNXI_LCDC_CTRL_TCON_ENABLE            (1 << 31)
+#define SUNXI_LCDC_TCON0_FRM_CTRL_RGB666       ((1 << 31) | (0 << 4))
+#define SUNXI_LCDC_TCON0_FRM_CTRL_RGB565       ((1 << 31) | (5 << 4))
+#define SUNXI_LCDC_TCON0_FRM_SEED              0x11111111
+#define SUNXI_LCDC_TCON0_FRM_TAB0              0x01010000
+#define SUNXI_LCDC_TCON0_FRM_TAB1              0x15151111
+#define SUNXI_LCDC_TCON0_FRM_TAB2              0x57575555
+#define SUNXI_LCDC_TCON0_FRM_TAB3              0x7f7f7777
+#define SUNXI_LCDC_TCON0_CTRL_CLK_DELAY(n)     (((n) & 0x1f) << 4)
+#define SUNXI_LCDC_TCON0_CTRL_ENABLE           (1 << 31)
+#define SUNXI_LCDC_TCON0_DCLK_DIV(n)           ((n) << 0)
+#define SUNXI_LCDC_TCON0_DCLK_ENABLE           (0xf << 28)
+#define SUNXI_LCDC_TCON0_TIMING_H_BP(n)                (((n) - 1) << 0)
+#define SUNXI_LCDC_TCON0_TIMING_H_TOTAL(n)     (((n) - 1) << 16)
+#define SUNXI_LCDC_TCON0_TIMING_V_BP(n)                (((n) - 1) << 0)
+#define SUNXI_LCDC_TCON0_TIMING_V_TOTAL(n)     (((n) * 2) << 16)
+#define SUNXI_LCDC_TCON0_LVDS_INTF_BITWIDTH(n) ((n) << 26)
+#define SUNXI_LCDC_TCON0_LVDS_INTF_ENABLE      (1 << 31)
+#define SUNXI_LCDC_TCON0_IO_POL_DCLK_PHASE0    (0 << 28)
+#define SUNXI_LCDC_TCON0_IO_POL_DCLK_PHASE60   (1 << 28)
+#define SUNXI_LCDC_TCON0_IO_POL_DCLK_PHASE120  (2 << 28)
+#define SUNXI_LCDC_TCON1_CTRL_CLK_DELAY(n)     (((n) & 0x1f) << 4)
+#define SUNXI_LCDC_TCON1_CTRL_ENABLE           (1 << 31)
+#define SUNXI_LCDC_TCON1_TIMING_H_BP(n)                (((n) - 1) << 0)
+#define SUNXI_LCDC_TCON1_TIMING_H_TOTAL(n)     (((n) - 1) << 16)
+#define SUNXI_LCDC_TCON1_TIMING_V_BP(n)                (((n) - 1) << 0)
+#define SUNXI_LCDC_TCON1_TIMING_V_TOTAL(n)     (((n) * 2) << 16)
+#define SUNXI_LCDC_LVDS_ANA0                   0x3f310000
+#define SUNXI_LCDC_LVDS_ANA0_UPDATE            (1 << 22)
+#define SUNXI_LCDC_LVDS_ANA1_INIT1             (0x1f << 26 | 0x1f << 10)
+#define SUNXI_LCDC_LVDS_ANA1_INIT2             (0x1f << 16 | 0x1f << 00)
+
+/*
+ * HDMI register constants.
+ */
+#define SUNXI_HDMI_X(x)                                (((x) - 1) << 0)
+#define SUNXI_HDMI_Y(y)                                (((y) - 1) << 16)
+#define SUNXI_HDMI_CTRL_ENABLE                 (1 << 31)
+#define SUNXI_HDMI_IRQ_STATUS_FIFO_UF          (1 << 0)
+#define SUNXI_HDMI_IRQ_STATUS_FIFO_OF          (1 << 1)
+#define SUNXI_HDMI_IRQ_STATUS_BITS             0x73
+#define SUNXI_HDMI_HPD_DETECT                  (1 << 0)
+#define SUNXI_HDMI_VIDEO_CTRL_ENABLE           (1 << 31)
+#define SUNXI_HDMI_VIDEO_CTRL_HDMI             (1 << 30)
+#define SUNXI_HDMI_VIDEO_POL_HOR               (1 << 0)
+#define SUNXI_HDMI_VIDEO_POL_VER               (1 << 1)
+#define SUNXI_HDMI_VIDEO_POL_TX_CLK            (0x3e0 << 16)
+#define SUNXI_HDMI_QCP_PACKET0                 3
+#define SUNXI_HDMI_QCP_PACKET1                 0
+
+#ifdef CONFIG_MACH_SUN6I
+#define SUNXI_HDMI_PAD_CTRL0_HDP               0x7e80000f
+#define SUNXI_HDMI_PAD_CTRL0_RUN               0x7e8000ff
+#else
+#define SUNXI_HDMI_PAD_CTRL0_HDP               0xfe800000
+#define SUNXI_HDMI_PAD_CTRL0_RUN               0xfe800000
+#endif
+
+#ifdef CONFIG_MACH_SUN4I
+#define SUNXI_HDMI_PAD_CTRL1                   0x00d8c820
+#elif defined CONFIG_MACH_SUN6I
+#define SUNXI_HDMI_PAD_CTRL1                   0x01ded030
+#else
+#define SUNXI_HDMI_PAD_CTRL1                   0x00d8c830
+#endif
+#define SUNXI_HDMI_PAD_CTRL1_HALVE             (1 << 6)
+
+#ifdef CONFIG_MACH_SUN6I
+#define SUNXI_HDMI_PLL_CTRL                    0xba48a308
+#define SUNXI_HDMI_PLL_CTRL_DIV(n)             (((n) - 1) << 4)
+#else
+#define SUNXI_HDMI_PLL_CTRL                    0xfa4ef708
+#define SUNXI_HDMI_PLL_CTRL_DIV(n)             ((n) << 4)
+#endif
+#define SUNXI_HDMI_PLL_CTRL_DIV_MASK           (0xf << 4)
+
+#define SUNXI_HDMI_PLL_DBG0_PLL3               (0 << 21)
+#define SUNXI_HDMI_PLL_DBG0_PLL7               (1 << 21)
+
+#define SUNXI_HDMI_PKT_CTRL0                   0x00000f21
+#define SUNXI_HDMI_PKT_CTRL1                   0x0000000f
+#define SUNXI_HDMI_UNKNOWN_INPUT_SYNC          0x08000000
+
+#ifdef CONFIG_MACH_SUN6I
+#define SUNXI_HMDI_DDC_CTRL_ENABLE             (1 << 0)
+#define SUNXI_HMDI_DDC_CTRL_SCL_ENABLE         (1 << 4)
+#define SUNXI_HMDI_DDC_CTRL_SDA_ENABLE         (1 << 6)
+#define SUNXI_HMDI_DDC_CTRL_START              (1 << 27)
+#define SUNXI_HMDI_DDC_CTRL_RESET              (1 << 31)
+#else
+#define SUNXI_HMDI_DDC_CTRL_RESET              (1 << 0)
+/* sun4i / sun5i / sun7i do not have a separate line_ctrl reg */
+#define SUNXI_HMDI_DDC_CTRL_SDA_ENABLE         0
+#define SUNXI_HMDI_DDC_CTRL_SCL_ENABLE         0
+#define SUNXI_HMDI_DDC_CTRL_START              (1 << 30)
+#define SUNXI_HMDI_DDC_CTRL_ENABLE             (1 << 31)
+#endif
+
+#ifdef CONFIG_MACH_SUN6I
+#define SUNXI_HMDI_DDC_ADDR_SLAVE_ADDR         (0xa0 << 0)
+#else
+#define SUNXI_HMDI_DDC_ADDR_SLAVE_ADDR         (0x50 << 0)
+#endif
+#define SUNXI_HMDI_DDC_ADDR_OFFSET(n)          (((n) & 0xff) << 8)
+#define SUNXI_HMDI_DDC_ADDR_EDDC_ADDR          (0x60 << 16)
+#define SUNXI_HMDI_DDC_ADDR_EDDC_SEGMENT(n)    ((n) << 24)
+
+#ifdef CONFIG_MACH_SUN6I
+#define SUNXI_HDMI_DDC_FIFO_CTRL_CLEAR         (1 << 15)
+#else
+#define SUNXI_HDMI_DDC_FIFO_CTRL_CLEAR         (1 << 31)
+#endif
+
+#define SUNXI_HDMI_DDC_CMND_EXPLICIT_EDDC_READ 6
+#define SUNXI_HDMI_DDC_CMND_IMPLICIT_EDDC_READ 7
+
+#ifdef CONFIG_MACH_SUN6I
+#define SUNXI_HDMI_DDC_CLOCK                   0x61
+#else
+/* N = 5,M=1 Fscl= Ftmds/2/10/2^N/(M+1) */
+#define SUNXI_HDMI_DDC_CLOCK                   0x0d
+#endif
+
+#define SUNXI_HMDI_DDC_LINE_CTRL_SCL_ENABLE    (1 << 8)
+#define SUNXI_HMDI_DDC_LINE_CTRL_SDA_ENABLE    (1 << 9)
+
+/*
+ * TVE register constants.
+ */
+#define SUNXI_TVE_GCTRL_ENABLE                 (1 << 0)
+/*
+ * Select input 0 to disable dac, 1 - 4 to feed dac from tve0, 5 - 8 to feed
+ * dac from tve1. When using tve1 the mux value must be written to both tve0's
+ * and tve1's gctrl reg.
+ */
+#define SUNXI_TVE_GCTRL_DAC_INPUT_MASK(dac)    (0xf << (((dac) + 1) * 4))
+#define SUNXI_TVE_GCTRL_DAC_INPUT(dac, sel)    ((sel) << (((dac) + 1) * 4))
+#define SUNXI_TVE_GCTRL_CFG0_VGA               0x20000000
+#define SUNXI_TVE_GCTRL_DAC_CFG0_VGA           0x403e1ac7
+#define SUNXI_TVE_GCTRL_UNKNOWN1_VGA           0x00000000
+#define SUNXI_TVE_AUTO_DETECT_EN_DET_EN(dac)   (1 << ((dac) + 0))
+#define SUNXI_TVE_AUTO_DETECT_EN_INT_EN(dac)   (1 << ((dac) + 16))
+#define SUNXI_TVE_AUTO_DETECT_INT_STATUS(dac)  (1 << ((dac) + 0))
+#define SUNXI_TVE_AUTO_DETECT_STATUS_SHIFT(dac)        ((dac) * 8)
+#define SUNXI_TVE_AUTO_DETECT_STATUS_MASK(dac) (3 << ((dac) * 8))
+#define SUNXI_TVE_AUTO_DETECT_STATUS_NONE      0
+#define SUNXI_TVE_AUTO_DETECT_STATUS_CONNECTED 1
+#define SUNXI_TVE_AUTO_DETECT_STATUS_SHORT_GND 3
+#define SUNXI_TVE_AUTO_DETECT_DEBOUNCE_SHIFT(d)        ((d) * 8)
+#define SUNXI_TVE_AUTO_DETECT_DEBOUNCE_MASK(d) (0xf << ((d) * 8))
+#define SUNXI_TVE_CSC_REG0_ENABLE              (1 << 31)
+#define SUNXI_TVE_CSC_REG0                     0x08440832
+#define SUNXI_TVE_CSC_REG1                     0x3b6dace1
+#define SUNXI_TVE_CSC_REG2                     0x0e1d13dc
+#define SUNXI_TVE_CSC_REG3                     0x00108080
+
+int sunxi_simplefb_setup(void *blob);
+
+#endif /* _SUNXI_DISPLAY_H */
index 1945f75441f4dce6cb0609527edf028e4512cd15..7ff43e6d3a90fa46c35785a92fce4b1818c8168f 100644 (file)
 #ifndef _SUNXI_DRAM_H
 #define _SUNXI_DRAM_H
 
+#include <asm/io.h>
 #include <linux/types.h>
 
-struct sunxi_dram_reg {
-       u32 ccr;                /* 0x00 controller configuration register */
-       u32 dcr;                /* 0x04 dram configuration register */
-       u32 iocr;               /* 0x08 i/o configuration register */
-       u32 csr;                /* 0x0c controller status register */
-       u32 drr;                /* 0x10 dram refresh register */
-       u32 tpr0;               /* 0x14 dram timing parameters register 0 */
-       u32 tpr1;               /* 0x18 dram timing parameters register 1 */
-       u32 tpr2;               /* 0x1c dram timing parameters register 2 */
-       u32 gdllcr;             /* 0x20 global dll control register */
-       u8 res0[0x28];
-       u32 rslr0;              /* 0x4c rank system latency register */
-       u32 rslr1;              /* 0x50 rank system latency register */
-       u8 res1[0x8];
-       u32 rdgr0;              /* 0x5c rank dqs gating register */
-       u32 rdgr1;              /* 0x60 rank dqs gating register */
-       u8 res2[0x34];
-       u32 odtcr;              /* 0x98 odt configuration register */
-       u32 dtr0;               /* 0x9c data training register 0 */
-       u32 dtr1;               /* 0xa0 data training register 1 */
-       u32 dtar;               /* 0xa4 data training address register */
-       u32 zqcr0;              /* 0xa8 zq control register 0 */
-       u32 zqcr1;              /* 0xac zq control register 1 */
-       u32 zqsr;               /* 0xb0 zq status register */
-       u32 idcr;               /* 0xb4 initializaton delay configure reg */
-       u8 res3[0x138];
-       u32 mr;                 /* 0x1f0 mode register */
-       u32 emr;                /* 0x1f4 extended mode register */
-       u32 emr2;               /* 0x1f8 extended mode register */
-       u32 emr3;               /* 0x1fc extended mode register */
-       u32 dllctr;             /* 0x200 dll control register */
-       u32 dllcr[5];           /* 0x204 dll control register 0(byte 0) */
-       /* 0x208 dll control register 1(byte 1) */
-       /* 0x20c dll control register 2(byte 2) */
-       /* 0x210 dll control register 3(byte 3) */
-       /* 0x214 dll control register 4(byte 4) */
-       u32 dqtr0;              /* 0x218 dq timing register */
-       u32 dqtr1;              /* 0x21c dq timing register */
-       u32 dqtr2;              /* 0x220 dq timing register */
-       u32 dqtr3;              /* 0x224 dq timing register */
-       u32 dqstr;              /* 0x228 dqs timing register */
-       u32 dqsbtr;             /* 0x22c dqsb timing register */
-       u32 mcr;                /* 0x230 mode configure register */
-       u8 res[0x8];
-       u32 ppwrsctl;           /* 0x23c pad power save control */
-       u32 apr;                /* 0x240 arbiter period register */
-       u32 pldtr;              /* 0x244 priority level data threshold reg */
-       u8 res5[0x8];
-       u32 hpcr[32];           /* 0x250 host port configure register */
-       u8 res6[0x10];
-       u32 csel;               /* 0x2e0 controller select register */
-};
+/* dram regs definition */
+#if defined(CONFIG_MACH_SUN6I)
+#include <asm/arch/dram_sun6i.h>
+#elif defined(CONFIG_MACH_SUN8I)
+#include <asm/arch/dram_sun8i.h>
+#else
+#include <asm/arch/dram_sun4i.h>
+#endif
 
-struct dram_para {
-       u32 clock;
-       u32 mbus_clock;
-       u32 type;
-       u32 rank_num;
-       u32 density;
-       u32 io_width;
-       u32 bus_width;
-       u32 cas;
-       u32 zq;
-       u32 odt_en;
-       u32 size;
-       u32 tpr0;
-       u32 tpr1;
-       u32 tpr2;
-       u32 tpr3;
-       u32 tpr4;
-       u32 tpr5;
-       u32 emr1;
-       u32 emr2;
-       u32 emr3;
-       u32 dqs_gating_delay;
-       u32 active_windowing;
-};
-
-#define DRAM_CCR_COMMAND_RATE_1T (0x1 << 5)
-#define DRAM_CCR_DQS_GATE (0x1 << 14)
-#define DRAM_CCR_DQS_DRIFT_COMP (0x1 << 17)
-#define DRAM_CCR_ITM_OFF (0x1 << 28)
-#define DRAM_CCR_DATA_TRAINING (0x1 << 30)
-#define DRAM_CCR_INIT (0x1 << 31)
-
-#define DRAM_MEMORY_TYPE_DDR1 1
-#define DRAM_MEMORY_TYPE_DDR2 2
-#define DRAM_MEMORY_TYPE_DDR3 3
-#define DRAM_MEMORY_TYPE_LPDDR2 4
-#define DRAM_MEMORY_TYPE_LPDDR 5
-#define DRAM_DCR_TYPE (0x1 << 0)
-#define DRAM_DCR_TYPE_DDR2 0x0
-#define DRAM_DCR_TYPE_DDR3 0x1
-#define DRAM_DCR_IO_WIDTH(n) (((n) & 0x3) << 1)
-#define DRAM_DCR_IO_WIDTH_MASK DRAM_DCR_IO_WIDTH(0x3)
-#define DRAM_DCR_IO_WIDTH_8BIT 0x0
-#define DRAM_DCR_IO_WIDTH_16BIT 0x1
-#define DRAM_DCR_CHIP_DENSITY(n) (((n) & 0x7) << 3)
-#define DRAM_DCR_CHIP_DENSITY_MASK DRAM_DCR_CHIP_DENSITY(0x7)
-#define DRAM_DCR_CHIP_DENSITY_256M 0x0
-#define DRAM_DCR_CHIP_DENSITY_512M 0x1
-#define DRAM_DCR_CHIP_DENSITY_1024M 0x2
-#define DRAM_DCR_CHIP_DENSITY_2048M 0x3
-#define DRAM_DCR_CHIP_DENSITY_4096M 0x4
-#define DRAM_DCR_CHIP_DENSITY_8192M 0x5
-#define DRAM_DCR_BUS_WIDTH(n) (((n) & 0x7) << 6)
-#define DRAM_DCR_BUS_WIDTH_MASK DRAM_DCR_BUS_WIDTH(0x7)
-#define DRAM_DCR_BUS_WIDTH_32BIT 0x3
-#define DRAM_DCR_BUS_WIDTH_16BIT 0x1
-#define DRAM_DCR_BUS_WIDTH_8BIT 0x0
-#define DRAM_DCR_RANK_SEL(n) (((n) & 0x3) << 10)
-#define DRAM_DCR_RANK_SEL_MASK DRAM_DCR_CMD_RANK(0x3)
-#define DRAM_DCR_CMD_RANK_ALL (0x1 << 12)
-#define DRAM_DCR_MODE(n) (((n) & 0x3) << 13)
-#define DRAM_DCR_MODE_MASK DRAM_DCR_MODE(0x3)
-#define DRAM_DCR_MODE_SEQ 0x0
-#define DRAM_DCR_MODE_INTERLEAVE 0x1
-
-#define DRAM_CSR_DTERR  (0x1 << 20)
-#define DRAM_CSR_DTIERR (0x1 << 21)
-#define DRAM_CSR_FAILED (DRAM_CSR_DTERR | DRAM_CSR_DTIERR)
-
-#define DRAM_DRR_TRFC(n) ((n) & 0xff)
-#define DRAM_DRR_TREFI(n) (((n) & 0xffff) << 8)
-#define DRAM_DRR_BURST(n) ((((n) - 1) & 0xf) << 24)
-
-#define DRAM_MCR_MODE_NORM(n) (((n) & 0x3) << 0)
-#define DRAM_MCR_MODE_NORM_MASK DRAM_MCR_MOD_NORM(0x3)
-#define DRAM_MCR_MODE_DQ_OUT(n) (((n) & 0x3) << 2)
-#define DRAM_MCR_MODE_DQ_OUT_MASK DRAM_MCR_MODE_DQ_OUT(0x3)
-#define DRAM_MCR_MODE_ADDR_OUT(n) (((n) & 0x3) << 4)
-#define DRAM_MCR_MODE_ADDR_OUT_MASK DRAM_MCR_MODE_ADDR_OUT(0x3)
-#define DRAM_MCR_MODE_DQ_IN_OUT(n) (((n) & 0x3) << 6)
-#define DRAM_MCR_MODE_DQ_IN_OUT_MASK DRAM_MCR_MODE_DQ_IN_OUT(0x3)
-#define DRAM_MCR_MODE_DQ_TURNON_DELAY(n) (((n) & 0x7) << 8)
-#define DRAM_MCR_MODE_DQ_TURNON_DELAY_MASK DRAM_MCR_MODE_DQ_TURNON_DELAY(0x7)
-#define DRAM_MCR_MODE_ADDR_IN (0x1 << 11)
-#define DRAM_MCR_RESET (0x1 << 12)
-#define DRAM_MCR_MODE_EN(n) (((n) & 0x3) << 13)
-#define DRAM_MCR_MODE_EN_MASK DRAM_MCR_MOD_EN(0x3)
-#define DRAM_MCR_DCLK_OUT (0x1 << 16)
-
-#define DRAM_DLLCR_NRESET (0x1 << 30)
-#define DRAM_DLLCR_DISABLE (0x1 << 31)
-
-#define DRAM_ZQCR0_IMP_DIV(n) (((n) & 0xff) << 20)
-#define DRAM_ZQCR0_IMP_DIV_MASK DRAM_ZQCR0_IMP_DIV(0xff)
-#define DRAM_ZQCR0_ZCAL (1 << 31) /* Starts ZQ calibration when set to 1 */
-#define DRAM_ZQCR0_ZDEN (1 << 28) /* Uses ZDATA instead of doing calibration */
-
-#define DRAM_ZQSR_ZDONE (1 << 31) /* ZQ calibration completion flag */
-
-#define DRAM_IOCR_ODT_EN(n) ((((n) & 0x3) << 30) | ((n) & 0x3) << 0)
-#define DRAM_IOCR_ODT_EN_MASK DRAM_IOCR_ODT_EN(0x3)
+unsigned long sunxi_dram_init(void);
 
-#define DRAM_MR_BURST_LENGTH(n) (((n) & 0x7) << 0)
-#define DRAM_MR_BURST_LENGTH_MASK DRAM_MR_BURST_LENGTH(0x7)
-#define DRAM_MR_CAS_LAT(n) (((n) & 0x7) << 4)
-#define DRAM_MR_CAS_LAT_MASK DRAM_MR_CAS_LAT(0x7)
-#define DRAM_MR_WRITE_RECOVERY(n) (((n) & 0x7) << 9)
-#define DRAM_MR_WRITE_RECOVERY_MASK DRAM_MR_WRITE_RECOVERY(0x7)
-#define DRAM_MR_POWER_DOWN (0x1 << 12)
+/*
+ * Wait up to 1s for value to be set in given part of reg.
+ */
+static inline void mctl_await_completion(u32 *reg, u32 mask, u32 val)
+{
+       unsigned long tmo = timer_get_us() + 1000000;
 
-#define DRAM_CSEL_MAGIC 0x16237495
+       while ((readl(reg) & mask) != val) {
+               if (timer_get_us() > tmo)
+                       panic("Timeout initialising DRAM\n");
+       }
+}
 
-unsigned long sunxi_dram_init(void);
-unsigned long dramc_init(struct dram_para *para);
+/*
+ * Test if memory at offset offset matches memory at begin of DRAM
+ */
+static inline bool mctl_mem_matches(u32 offset)
+{
+       /* Try to write different values to RAM at two addresses */
+       writel(0, CONFIG_SYS_SDRAM_BASE);
+       writel(0xaa55aa55, CONFIG_SYS_SDRAM_BASE + offset);
+       /* Check if the same value is actually observed when reading back */
+       return readl(CONFIG_SYS_SDRAM_BASE) ==
+              readl(CONFIG_SYS_SDRAM_BASE + offset);
+}
 
 #endif /* _SUNXI_DRAM_H */
diff --git a/arch/arm/include/asm/arch-sunxi/dram_sun4i.h b/arch/arm/include/asm/arch-sunxi/dram_sun4i.h
new file mode 100644 (file)
index 0000000..6c1ec5b
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Berg Xing <bergxing@allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Sunxi platform dram register definition.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_DRAM_SUN4I_H
+#define _SUNXI_DRAM_SUN4I_H
+
+struct sunxi_dram_reg {
+       u32 ccr;                /* 0x00 controller configuration register */
+       u32 dcr;                /* 0x04 dram configuration register */
+       u32 iocr;               /* 0x08 i/o configuration register */
+       u32 csr;                /* 0x0c controller status register */
+       u32 drr;                /* 0x10 dram refresh register */
+       u32 tpr0;               /* 0x14 dram timing parameters register 0 */
+       u32 tpr1;               /* 0x18 dram timing parameters register 1 */
+       u32 tpr2;               /* 0x1c dram timing parameters register 2 */
+       u32 gdllcr;             /* 0x20 global dll control register */
+       u8 res0[0x28];
+       u32 rslr0;              /* 0x4c rank system latency register */
+       u32 rslr1;              /* 0x50 rank system latency register */
+       u8 res1[0x8];
+       u32 rdgr0;              /* 0x5c rank dqs gating register */
+       u32 rdgr1;              /* 0x60 rank dqs gating register */
+       u8 res2[0x34];
+       u32 odtcr;              /* 0x98 odt configuration register */
+       u32 dtr0;               /* 0x9c data training register 0 */
+       u32 dtr1;               /* 0xa0 data training register 1 */
+       u32 dtar;               /* 0xa4 data training address register */
+       u32 zqcr0;              /* 0xa8 zq control register 0 */
+       u32 zqcr1;              /* 0xac zq control register 1 */
+       u32 zqsr;               /* 0xb0 zq status register */
+       u32 idcr;               /* 0xb4 initializaton delay configure reg */
+       u8 res3[0x138];
+       u32 mr;                 /* 0x1f0 mode register */
+       u32 emr;                /* 0x1f4 extended mode register */
+       u32 emr2;               /* 0x1f8 extended mode register */
+       u32 emr3;               /* 0x1fc extended mode register */
+       u32 dllctr;             /* 0x200 dll control register */
+       u32 dllcr[5];           /* 0x204 dll control register 0(byte 0) */
+       /* 0x208 dll control register 1(byte 1) */
+       /* 0x20c dll control register 2(byte 2) */
+       /* 0x210 dll control register 3(byte 3) */
+       /* 0x214 dll control register 4(byte 4) */
+       u32 dqtr0;              /* 0x218 dq timing register */
+       u32 dqtr1;              /* 0x21c dq timing register */
+       u32 dqtr2;              /* 0x220 dq timing register */
+       u32 dqtr3;              /* 0x224 dq timing register */
+       u32 dqstr;              /* 0x228 dqs timing register */
+       u32 dqsbtr;             /* 0x22c dqsb timing register */
+       u32 mcr;                /* 0x230 mode configure register */
+       u8 res[0x8];
+       u32 ppwrsctl;           /* 0x23c pad power save control */
+       u32 apr;                /* 0x240 arbiter period register */
+       u32 pldtr;              /* 0x244 priority level data threshold reg */
+       u8 res5[0x8];
+       u32 hpcr[32];           /* 0x250 host port configure register */
+       u8 res6[0x10];
+       u32 csel;               /* 0x2e0 controller select register */
+};
+
+struct dram_para {
+       u32 clock;
+       u32 mbus_clock;
+       u32 type;
+       u32 rank_num;
+       u32 density;
+       u32 io_width;
+       u32 bus_width;
+       u32 cas;
+       u32 zq;
+       u32 odt_en;
+       u32 size;
+       u32 tpr0;
+       u32 tpr1;
+       u32 tpr2;
+       u32 tpr3;
+       u32 tpr4;
+       u32 tpr5;
+       u32 emr1;
+       u32 emr2;
+       u32 emr3;
+       u32 dqs_gating_delay;
+       u32 active_windowing;
+};
+
+#define DRAM_CCR_COMMAND_RATE_1T (0x1 << 5)
+#define DRAM_CCR_DQS_GATE (0x1 << 14)
+#define DRAM_CCR_DQS_DRIFT_COMP (0x1 << 17)
+#define DRAM_CCR_ITM_OFF (0x1 << 28)
+#define DRAM_CCR_DATA_TRAINING (0x1 << 30)
+#define DRAM_CCR_INIT (0x1 << 31)
+
+#define DRAM_MEMORY_TYPE_DDR1 1
+#define DRAM_MEMORY_TYPE_DDR2 2
+#define DRAM_MEMORY_TYPE_DDR3 3
+#define DRAM_MEMORY_TYPE_LPDDR2 4
+#define DRAM_MEMORY_TYPE_LPDDR 5
+#define DRAM_DCR_TYPE (0x1 << 0)
+#define DRAM_DCR_TYPE_DDR2 0x0
+#define DRAM_DCR_TYPE_DDR3 0x1
+#define DRAM_DCR_IO_WIDTH(n) (((n) & 0x3) << 1)
+#define DRAM_DCR_IO_WIDTH_MASK DRAM_DCR_IO_WIDTH(0x3)
+#define DRAM_DCR_IO_WIDTH_8BIT 0x0
+#define DRAM_DCR_IO_WIDTH_16BIT 0x1
+#define DRAM_DCR_CHIP_DENSITY(n) (((n) & 0x7) << 3)
+#define DRAM_DCR_CHIP_DENSITY_MASK DRAM_DCR_CHIP_DENSITY(0x7)
+#define DRAM_DCR_CHIP_DENSITY_256M 0x0
+#define DRAM_DCR_CHIP_DENSITY_512M 0x1
+#define DRAM_DCR_CHIP_DENSITY_1024M 0x2
+#define DRAM_DCR_CHIP_DENSITY_2048M 0x3
+#define DRAM_DCR_CHIP_DENSITY_4096M 0x4
+#define DRAM_DCR_CHIP_DENSITY_8192M 0x5
+#define DRAM_DCR_BUS_WIDTH(n) (((n) & 0x7) << 6)
+#define DRAM_DCR_BUS_WIDTH_MASK DRAM_DCR_BUS_WIDTH(0x7)
+#define DRAM_DCR_BUS_WIDTH_32BIT 0x3
+#define DRAM_DCR_BUS_WIDTH_16BIT 0x1
+#define DRAM_DCR_BUS_WIDTH_8BIT 0x0
+#define DRAM_DCR_RANK_SEL(n) (((n) & 0x3) << 10)
+#define DRAM_DCR_RANK_SEL_MASK DRAM_DCR_CMD_RANK(0x3)
+#define DRAM_DCR_CMD_RANK_ALL (0x1 << 12)
+#define DRAM_DCR_MODE(n) (((n) & 0x3) << 13)
+#define DRAM_DCR_MODE_MASK DRAM_DCR_MODE(0x3)
+#define DRAM_DCR_MODE_SEQ 0x0
+#define DRAM_DCR_MODE_INTERLEAVE 0x1
+
+#define DRAM_CSR_DTERR  (0x1 << 20)
+#define DRAM_CSR_DTIERR (0x1 << 21)
+#define DRAM_CSR_FAILED (DRAM_CSR_DTERR | DRAM_CSR_DTIERR)
+
+#define DRAM_DRR_TRFC(n) ((n) & 0xff)
+#define DRAM_DRR_TREFI(n) (((n) & 0xffff) << 8)
+#define DRAM_DRR_BURST(n) ((((n) - 1) & 0xf) << 24)
+
+#define DRAM_MCR_MODE_NORM(n) (((n) & 0x3) << 0)
+#define DRAM_MCR_MODE_NORM_MASK DRAM_MCR_MOD_NORM(0x3)
+#define DRAM_MCR_MODE_DQ_OUT(n) (((n) & 0x3) << 2)
+#define DRAM_MCR_MODE_DQ_OUT_MASK DRAM_MCR_MODE_DQ_OUT(0x3)
+#define DRAM_MCR_MODE_ADDR_OUT(n) (((n) & 0x3) << 4)
+#define DRAM_MCR_MODE_ADDR_OUT_MASK DRAM_MCR_MODE_ADDR_OUT(0x3)
+#define DRAM_MCR_MODE_DQ_IN_OUT(n) (((n) & 0x3) << 6)
+#define DRAM_MCR_MODE_DQ_IN_OUT_MASK DRAM_MCR_MODE_DQ_IN_OUT(0x3)
+#define DRAM_MCR_MODE_DQ_TURNON_DELAY(n) (((n) & 0x7) << 8)
+#define DRAM_MCR_MODE_DQ_TURNON_DELAY_MASK DRAM_MCR_MODE_DQ_TURNON_DELAY(0x7)
+#define DRAM_MCR_MODE_ADDR_IN (0x1 << 11)
+#define DRAM_MCR_RESET (0x1 << 12)
+#define DRAM_MCR_MODE_EN(n) (((n) & 0x3) << 13)
+#define DRAM_MCR_MODE_EN_MASK DRAM_MCR_MOD_EN(0x3)
+#define DRAM_MCR_DCLK_OUT (0x1 << 16)
+
+#define DRAM_DLLCR_NRESET (0x1 << 30)
+#define DRAM_DLLCR_DISABLE (0x1 << 31)
+
+#define DRAM_ZQCR0_IMP_DIV(n) (((n) & 0xff) << 20)
+#define DRAM_ZQCR0_IMP_DIV_MASK DRAM_ZQCR0_IMP_DIV(0xff)
+#define DRAM_ZQCR0_ZCAL (1 << 31) /* Starts ZQ calibration when set to 1 */
+#define DRAM_ZQCR0_ZDEN (1 << 28) /* Uses ZDATA instead of doing calibration */
+
+#define DRAM_ZQSR_ZDONE (1 << 31) /* ZQ calibration completion flag */
+
+#define DRAM_IOCR_ODT_EN(n) ((((n) & 0x3) << 30) | ((n) & 0x3) << 0)
+#define DRAM_IOCR_ODT_EN_MASK DRAM_IOCR_ODT_EN(0x3)
+
+#define DRAM_MR_BURST_LENGTH(n) (((n) & 0x7) << 0)
+#define DRAM_MR_BURST_LENGTH_MASK DRAM_MR_BURST_LENGTH(0x7)
+#define DRAM_MR_CAS_LAT(n) (((n) & 0x7) << 4)
+#define DRAM_MR_CAS_LAT_MASK DRAM_MR_CAS_LAT(0x7)
+#define DRAM_MR_WRITE_RECOVERY(n) (((n) & 0x7) << 9)
+#define DRAM_MR_WRITE_RECOVERY_MASK DRAM_MR_WRITE_RECOVERY(0x7)
+#define DRAM_MR_POWER_DOWN (0x1 << 12)
+
+#define DRAM_CSEL_MAGIC 0x16237495
+
+unsigned long dramc_init(struct dram_para *para);
+
+#endif /* _SUNXI_DRAM_SUN4I_H */
diff --git a/arch/arm/include/asm/arch-sunxi/dram_sun6i.h b/arch/arm/include/asm/arch-sunxi/dram_sun6i.h
new file mode 100644 (file)
index 0000000..9b0b310
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+ * Sun6i platform dram controller register and constant defines
+ *
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Berg Xing <bergxing@allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_DRAM_SUN6I_H
+#define _SUNXI_DRAM_SUN6I_H
+
+struct sunxi_mctl_com_reg {
+       u32 cr;                 /* 0x00 */
+       u32 ccr;                /* 0x04 controller configuration register */
+       u32 dbgcr;              /* 0x08 */
+       u32 dbgcr1;             /* 0x0c */
+       u32 rmcr[8];            /* 0x10 */
+       u32 mmcr[16];           /* 0x30 */
+       u32 mbagcr[6];          /* 0x70 */
+       u32 maer;               /* 0x88 */
+       u8 res0[0x14];          /* 0x8c */
+       u32 mdfscr;             /* 0x100 */
+       u32 mdfsmer;            /* 0x104 */
+       u32 mdfsmrmr;           /* 0x108 */
+       u32 mdfstr0;            /* 0x10c */
+       u32 mdfstr1;            /* 0x110 */
+       u32 mdfstr2;            /* 0x114 */
+       u32 mdfstr3;            /* 0x118 */
+       u32 mdfsgcr;            /* 0x11c */
+       u8 res1[0x1c];          /* 0x120 */
+       u32 mdfsivr;            /* 0x13c */
+       u8 res2[0x0c];          /* 0x140 */
+       u32 mdfstcr;            /* 0x14c */
+};
+
+struct sunxi_mctl_ctl_reg {
+       u8 res0[0x04];          /* 0x00 */
+       u32 sctl;               /* 0x04 */
+       u32 sstat;              /* 0x08 */
+       u8 res1[0x34];          /* 0x0c */
+       u32 mcmd;               /* 0x40 */
+       u8 res2[0x08];          /* 0x44 */
+       u32 cmdstat;            /* 0x4c */
+       u32 cmdstaten;          /* 0x50 */
+       u8 res3[0x0c];          /* 0x54 */
+       u32 mrrcfg0;            /* 0x60 */
+       u32 mrrstat0;           /* 0x64 */
+       u32 mrrstat1;           /* 0x68 */
+       u8 res4[0x10];          /* 0x6c */
+       u32 mcfg1;              /* 0x7c */
+       u32 mcfg;               /* 0x80 */
+       u32 ppcfg;              /* 0x84 */
+       u32 mstat;              /* 0x88 */
+       u32 lp2zqcfg;           /* 0x8c */
+       u8 res5[0x04];          /* 0x90 */
+       u32 dtustat;            /* 0x94 */
+       u32 dtuna;              /* 0x98 */
+       u32 dtune;              /* 0x9c */
+       u32 dtuprd0;            /* 0xa0 */
+       u32 dtuprd1;            /* 0xa4 */
+       u32 dtuprd2;            /* 0xa8 */
+       u32 dtuprd3;            /* 0xac */
+       u32 dtuawdt;            /* 0xb0 */
+       u8 res6[0x0c];          /* 0xb4 */
+       u32 togcnt1u;           /* 0xc0 */
+       u8 res7[0x08];          /* 0xc4 */
+       u32 togcnt100n;         /* 0xcc */
+       u32 trefi;              /* 0xd0 */
+       u32 tmrd;               /* 0xd4 */
+       u32 trfc;               /* 0xd8 */
+       u32 trp;                /* 0xdc */
+       u32 trtw;               /* 0xe0 */
+       u32 tal;                /* 0xe4 */
+       u32 tcl;                /* 0xe8 */
+       u32 tcwl;               /* 0xec */
+       u32 tras;               /* 0xf0 */
+       u32 trc;                /* 0xf4 */
+       u32 trcd;               /* 0xf8 */
+       u32 trrd;               /* 0xfc */
+       u32 trtp;               /* 0x100 */
+       u32 twr;                /* 0x104 */
+       u32 twtr;               /* 0x108 */
+       u32 texsr;              /* 0x10c */
+       u32 txp;                /* 0x110 */
+       u32 txpdll;             /* 0x114 */
+       u32 tzqcs;              /* 0x118 */
+       u32 tzqcsi;             /* 0x11c */
+       u32 tdqs;               /* 0x120 */
+       u32 tcksre;             /* 0x124 */
+       u32 tcksrx;             /* 0x128 */
+       u32 tcke;               /* 0x12c */
+       u32 tmod;               /* 0x130 */
+       u32 trstl;              /* 0x134 */
+       u32 tzqcl;              /* 0x138 */
+       u32 tmrr;               /* 0x13c */
+       u32 tckesr;             /* 0x140 */
+       u32 tdpd;               /* 0x144 */
+       u8 res8[0xb8];          /* 0x148 */
+       u32 dtuwactl;           /* 0x200 */
+       u32 dturactl;           /* 0x204 */
+       u32 dtucfg;             /* 0x208 */
+       u32 dtuectl;            /* 0x20c */
+       u32 dtuwd0;             /* 0x210 */
+       u32 dtuwd1;             /* 0x214 */
+       u32 dtuwd2;             /* 0x218 */
+       u32 dtuwd3;             /* 0x21c */
+       u32 dtuwdm;             /* 0x220 */
+       u32 dturd0;             /* 0x224 */
+       u32 dturd1;             /* 0x228 */
+       u32 dturd2;             /* 0x22c */
+       u32 dturd3;             /* 0x230 */
+       u32 dtulfsrwd;          /* 0x234 */
+       u32 dtulfsrrd;          /* 0x238 */
+       u32 dtueaf;             /* 0x23c */
+       u32 dfitctldly;         /* 0x240 */
+       u32 dfiodtcfg;          /* 0x244 */
+       u32 dfiodtcfg1;         /* 0x248 */
+       u32 dfiodtrmap;         /* 0x24c */
+       u32 dfitphywrd;         /* 0x250 */
+       u32 dfitphywrl;         /* 0x254 */
+       u8 res9[0x08];          /* 0x258 */
+       u32 dfitrdden;          /* 0x260 */
+       u32 dfitphyrdl;         /* 0x264 */
+       u8 res10[0x08];         /* 0x268 */
+       u32 dfitphyupdtype0;    /* 0x270 */
+       u32 dfitphyupdtype1;    /* 0x274 */
+       u32 dfitphyupdtype2;    /* 0x278 */
+       u32 dfitphyupdtype3;    /* 0x27c */
+       u32 dfitctrlupdmin;     /* 0x280 */
+       u32 dfitctrlupdmax;     /* 0x284 */
+       u32 dfitctrlupddly;     /* 0x288 */
+       u8 res11[4];            /* 0x28c */
+       u32 dfiupdcfg;          /* 0x290 */
+       u32 dfitrefmski;        /* 0x294 */
+       u32 dfitcrlupdi;        /* 0x298 */
+       u8 res12[0x10];         /* 0x29c */
+       u32 dfitrcfg0;          /* 0x2ac */
+       u32 dfitrstat0;         /* 0x2b0 */
+       u32 dfitrwrlvlen;       /* 0x2b4 */
+       u32 dfitrrdlvlen;       /* 0x2b8 */
+       u32 dfitrrdlvlgateen;   /* 0x2bc */
+       u8 res13[0x04];         /* 0x2c0 */
+       u32 dfistcfg0;          /* 0x2c4 */
+       u32 dfistcfg1;          /* 0x2c8 */
+       u8 res14[0x04];         /* 0x2cc */
+       u32 dfitdramclken;      /* 0x2d0 */
+       u32 dfitdramclkdis;     /* 0x2d4 */
+       u8 res15[0x18];         /* 0x2d8 */
+       u32 dfilpcfg0;          /* 0x2f0 */
+};
+
+struct sunxi_mctl_phy_reg {
+       u8 res0[0x04];          /* 0x00 */
+       u32 pir;                /* 0x04 */
+       u32 pgcr;               /* 0x08 phy general configuration register */
+       u32 pgsr;               /* 0x0c */
+       u32 dllgcr;             /* 0x10 */
+       u32 acdllcr;            /* 0x14 */
+       u32 ptr0;               /* 0x18 */
+       u32 ptr1;               /* 0x1c */
+       u32 ptr2;               /* 0x20 */
+       u32 aciocr;             /* 0x24 */
+       u32 dxccr;              /* 0x28 DATX8 common configuration register */
+       u32 dsgcr;              /* 0x2c dram system general config register */
+       u32 dcr;                /* 0x30 */
+       u32 dtpr0;              /* 0x34 dram timing parameters register 0 */
+       u32 dtpr1;              /* 0x38 dram timing parameters register 1 */
+       u32 dtpr2;              /* 0x3c dram timing parameters register 2 */
+       u32 mr0;                /* 0x40 mode register 0 */
+       u32 mr1;                /* 0x44 mode register 1 */
+       u32 mr2;                /* 0x48 mode register 2 */
+       u32 mr3;                /* 0x4c mode register 3 */
+       u32 odtcr;              /* 0x50 */
+       u32 dtar;               /* 0x54 data training address register */
+       u32 dtd0;               /* 0x58 */
+       u32 dtd1;               /* 0x5c */
+       u8 res1[0x60];          /* 0x60 */
+       u32 dcuar;              /* 0xc0 */
+       u32 dcudr;              /* 0xc4 */
+       u32 dcurr;              /* 0xc8 */
+       u32 dculr;              /* 0xcc */
+       u32 dcugcr;             /* 0xd0 */
+       u32 dcutpr;             /* 0xd4 */
+       u32 dcusr0;             /* 0xd8 */
+       u32 dcusr1;             /* 0xdc */
+       u8 res2[0x20];          /* 0xe0 */
+       u32 bistrr;             /* 0x100 */
+       u32 bistmskr0;          /* 0x104 */
+       u32 bistmskr1;          /* 0x108 */
+       u32 bistwcr;            /* 0x10c */
+       u32 bistlsr;            /* 0x110 */
+       u32 bistar0;            /* 0x114 */
+       u32 bistar1;            /* 0x118 */
+       u32 bistar2;            /* 0x11c */
+       u32 bistupdr;           /* 0x120 */
+       u32 bistgsr;            /* 0x124 */
+       u32 bistwer;            /* 0x128 */
+       u32 bistber0;           /* 0x12c */
+       u32 bistber1;           /* 0x130 */
+       u32 bistber2;           /* 0x134 */
+       u32 bistwcsr;           /* 0x138 */
+       u32 bistfwr0;           /* 0x13c */
+       u32 bistfwr1;           /* 0x140 */
+       u8 res3[0x3c];          /* 0x144 */
+       u32 zq0cr0;             /* 0x180 zq 0 control register 0 */
+       u32 zq0cr1;             /* 0x184 zq 0 control register 1 */
+       u32 zq0sr0;             /* 0x188 zq 0 status register 0 */
+       u32 zq0sr1;             /* 0x18c zq 0 status register 1 */
+       u8 res4[0x30];          /* 0x190 */
+       u32 dx0gcr;             /* 0x1c0 */
+       u32 dx0gsr0;            /* 0x1c4 */
+       u32 dx0gsr1;            /* 0x1c8 */
+       u32 dx0dllcr;           /* 0x1cc */
+       u32 dx0dqtr;            /* 0x1d0 */
+       u32 dx0dqstr;           /* 0x1d4 */
+       u8 res5[0x28];          /* 0x1d8 */
+       u32 dx1gcr;             /* 0x200 */
+       u32 dx1gsr0;            /* 0x204 */
+       u32 dx1gsr1;            /* 0x208 */
+       u32 dx1dllcr;           /* 0x20c */
+       u32 dx1dqtr;            /* 0x210 */
+       u32 dx1dqstr;           /* 0x214 */
+       u8 res6[0x28];          /* 0x218 */
+       u32 dx2gcr;             /* 0x240 */
+       u32 dx2gsr0;            /* 0x244 */
+       u32 dx2gsr1;            /* 0x248 */
+       u32 dx2dllcr;           /* 0x24c */
+       u32 dx2dqtr;            /* 0x250 */
+       u32 dx2dqstr;           /* 0x254 */
+       u8 res7[0x28];          /* 0x258 */
+       u32 dx3gcr;             /* 0x280 */
+       u32 dx3gsr0;            /* 0x284 */
+       u32 dx3gsr1;            /* 0x288 */
+       u32 dx3dllcr;           /* 0x28c */
+       u32 dx3dqtr;            /* 0x290 */
+       u32 dx3dqstr;           /* 0x294 */
+};
+
+/*
+ * DRAM common (sunxi_mctl_com_reg) register constants.
+ */
+#define MCTL_CR_RANK_MASK              (3 << 0)
+#define MCTL_CR_RANK(x)                        (((x) - 1) << 0)
+#define MCTL_CR_BANK_MASK              (3 << 2)
+#define MCTL_CR_BANK(x)                        ((x) << 2)
+#define MCTL_CR_ROW_MASK               (0xf << 4)
+#define MCTL_CR_ROW(x)                 (((x) - 1) << 4)
+#define MCTL_CR_PAGE_SIZE_MASK         (0xf << 8)
+#define MCTL_CR_PAGE_SIZE(x)           ((fls(x) - 4) << 8)
+#define MCTL_CR_BUSW_MASK              (3 << 12)
+#define MCTL_CR_BUSW16                 (1 << 12)
+#define MCTL_CR_BUSW32                 (3 << 12)
+#define MCTL_CR_SEQUENCE               (1 << 15)
+#define MCTL_CR_DDR3                   (3 << 16)
+#define MCTL_CR_CHANNEL_MASK           (1 << 19)
+#define MCTL_CR_CHANNEL(x)             (((x) - 1) << 19)
+#define MCTL_CR_UNKNOWN                        ((1 << 22) | (1 << 20))
+#define MCTL_CCR_CH0_CLK_EN            (1 << 0)
+#define MCTL_CCR_CH1_CLK_EN            (1 << 1)
+#define MCTL_CCR_MASTER_CLK_EN         (1 << 2)
+
+/*
+ * DRAM control (sunxi_mctl_ctl_reg) register constants.
+ * Note that we use constant values for a lot of the timings, this is what
+ * the original boot0 bootloader does.
+ */
+#define MCTL_SCTL_CONFIG               1
+#define MCTL_SCTL_ACCESS               2
+#define MCTL_MCMD_NOP                  0x88000000
+#define MCTL_MCMD_BUSY                 0x80000000
+#define MCTL_MCFG_DDR3                 0x70061
+#define MCTL_TREFI                     78
+#define MCTL_TMRD                      4
+#define MCTL_TRFC                      115
+#define MCTL_TRP                       9
+#define MCTL_TPREA                     0
+#define MCTL_TRTW                      2
+#define MCTL_TAL                       0
+#define MCTL_TCL                       9
+#define MCTL_TCWL                      8
+#define MCTL_TRAS                      18
+#define MCTL_TRC                       23
+#define MCTL_TRCD                      9
+#define MCTL_TRRD                      4
+#define MCTL_TRTP                      4
+#define MCTL_TWR                       8
+#define MCTL_TWTR                      4
+#define MCTL_TEXSR                     512
+#define MCTL_TXP                       4
+#define MCTL_TXPDLL                    14
+#define MCTL_TZQCS                     64
+#define MCTL_TZQCSI                    0
+#define MCTL_TDQS                      1
+#define MCTL_TCKSRE                    5
+#define MCTL_TCKSRX                    5
+#define MCTL_TCKE                      4
+#define MCTL_TMOD                      12
+#define MCTL_TRSTL                     80
+#define MCTL_TZQCL                     512
+#define MCTL_TMRR                      2
+#define MCTL_TCKESR                    5
+#define MCTL_TDPD                      0
+#define MCTL_DFITPHYRDL                        15
+#define MCTL_DFIUPDCFG_UPD             (1 << 1)
+#define MCTL_DFISTCFG0                 5
+
+/*
+ * DRAM phy (sunxi_mctl_phy_reg) register values / constants.
+ */
+#define MCTL_PIR_CLEAR_STATUS          (1 << 28)
+#define MCTL_PIR_STEP1                 0xe9
+#define MCTL_PIR_STEP2                 0x81
+#define MCTL_PGCR_RANK                 (1 << 19)
+#define MCTL_PGCR                      0x018c0202
+#define MCTL_PGSR_TRAIN_ERR_MASK       (3 << 5)
+/* constants for both acdllcr as well as dx#dllcr */
+#define MCTL_DLLCR_NRESET              (1 << 30)
+#define MCTL_DLLCR_DISABLE             (1 << 31)
+/* ptr constants these are or-ed together to get the final ptr# values */
+#define MCTL_TITMSRST                  10
+#define MCTL_TDLLLOCK                  2250
+#define MCTL_TDLLSRST                  23
+#define MCTL_TDINIT0                   217000
+#define MCTL_TDINIT1                   160
+#define MCTL_TDINIT2                   87000
+#define MCTL_TDINIT3                   433
+/* end ptr constants */
+#define MCTL_ACIOCR_DISABLE            ((3 << 18) | (1 << 8) | (1 << 3))
+#define MCTL_DXCCR_DISABLE             ((1 << 3) | (1 << 2))
+#define MCTL_DXCCR                     0x800
+#define MCTL_DSGCR_ENABLE              (1 << 28)
+#define MCTL_DSGCR                     0xf200001b
+#define MCTL_DCR_DDR3                  0x0b
+/* dtpr constants these are or-ed together to get the final dtpr# values */
+#define MCTL_TCCD                      0
+#define MCTL_TDQSCKMAX                 1
+#define MCTL_TDQSCK                    1
+#define MCTL_TRTODT                    0
+#define MCTL_TFAW                      20
+#define MCTL_TAOND                     0
+#define MCTL_TDLLK                     512
+/* end dtpr constants */
+#define MCTL_MR0                       0x1a50
+#define MCTL_MR1                       0x4
+#define MCTL_MR2                       ((MCTL_TCWL - 5) << 3)
+#define MCTL_MR3                       0x0
+#define MCTL_DX_GCR_EN                 (1 << 0)
+#define MCTL_DX_GCR                    0x880
+#define MCTL_DX_GSR0_RANK0_TRAIN_DONE  (1 << 0)
+#define MCTL_DX_GSR0_RANK1_TRAIN_DONE  (1 << 1)
+#define MCTL_DX_GSR0_RANK0_TRAIN_ERR   (1 << 4)
+#define MCTL_DX_GSR0_RANK1_TRAIN_ERR   (1 << 5)
+
+#endif /* _SUNXI_DRAM_SUN6I_H */
diff --git a/arch/arm/include/asm/arch-sunxi/dram_sun8i.h b/arch/arm/include/asm/arch-sunxi/dram_sun8i.h
new file mode 100644 (file)
index 0000000..06adee2
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+ * Sun8i platform dram controller register and constant defines
+ *
+ * (C) Copyright 2007-2013
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * CPL <cplanxy@allwinnertech.com>
+ * Jerry Wang <wangflord@allwinnertech.com>
+ *
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_DRAM_SUN8I_H
+#define _SUNXI_DRAM_SUN8I_H
+
+struct dram_para {
+       u32 clock;
+       u32 type;
+       u32 zq;
+       u32 odt_en;
+       u32 para1;
+       u32 para2;
+       u32 mr0;
+       u32 mr1;
+       u32 mr2;
+       u32 mr3;
+       u32 tpr0;
+       u32 tpr1;
+       u32 tpr2;
+       u32 tpr3;
+       u32 tpr4;
+       u32 tpr5;
+       u32 tpr6;
+       u32 tpr7;
+       u32 tpr8;
+       u32 tpr9;
+       u32 tpr10;
+       u32 tpr11;
+       u32 tpr12;
+       u32 tpr13;
+};
+
+struct sunxi_mctl_com_reg {
+       u32 cr;                 /* 0x00 */
+       u32 ccr;                /* 0x04 controller configuration register */
+       u32 dbgcr;              /* 0x08 */
+       u8 res0[0x4];           /* 0x0c */
+       u32 mcr0_0;             /* 0x10 */
+       u32 mcr1_0;             /* 0x14 */
+       u32 mcr0_1;             /* 0x18 */
+       u32 mcr1_1;             /* 0x1c */
+       u32 mcr0_2;             /* 0x20 */
+       u32 mcr1_2;             /* 0x24 */
+       u32 mcr0_3;             /* 0x28 */
+       u32 mcr1_3;             /* 0x2c */
+       u32 mcr0_4;             /* 0x30 */
+       u32 mcr1_4;             /* 0x34 */
+       u32 mcr0_5;             /* 0x38 */
+       u32 mcr1_5;             /* 0x3c */
+       u32 mcr0_6;             /* 0x40 */
+       u32 mcr1_6;             /* 0x44 */
+       u32 mcr0_7;             /* 0x48 */
+       u32 mcr1_7;             /* 0x4c */
+       u32 mcr0_8;             /* 0x50 */
+       u32 mcr1_8;             /* 0x54 */
+       u32 mcr0_9;             /* 0x58 */
+       u32 mcr1_9;             /* 0x5c */
+       u32 mcr0_10;            /* 0x60 */
+       u32 mcr1_10;            /* 0x64 */
+       u32 mcr0_11;            /* 0x68 */
+       u32 mcr1_11;            /* 0x6c */
+       u32 mcr0_12;            /* 0x70 */
+       u32 mcr1_12;            /* 0x74 */
+       u32 mcr0_13;            /* 0x78 */
+       u32 mcr1_13;            /* 0x7c */
+       u32 mcr0_14;            /* 0x80 */
+       u32 mcr1_14;            /* 0x84 */
+       u32 mcr0_15;            /* 0x88 */
+       u32 mcr1_15;            /* 0x8c */
+       u32 bwcr;               /* 0x90 */
+       u32 maer;               /* 0x94 */
+       u8 res1[0x4];           /* 0x98 */
+       u32 mcgcr;              /* 0x9c */
+       u32 bwctr;              /* 0xa0 */
+       u8 res2[0x4];           /* 0xa4 */
+       u32 swonr;              /* 0xa8 */
+       u32 swoffr;             /* 0xac */
+};
+
+struct sunxi_mctl_ctl_reg {
+       u32 mstr;               /* 0x00 */
+       u32 statr;              /* 0x04 */
+       u8 res0[0x08];          /* 0x08 */
+       u32 mrctrl0;            /* 0x10 */
+       u32 mrctrl1;            /* 0x14 */
+       u32 mrstatr;            /* 0x18 */
+       u8 res1[0x04];          /* 0x1c */
+       u32 derateen;           /* 0x20 */
+       u32 deratenint;         /* 0x24 */
+       u8 res2[0x08];          /* 0x28 */
+       u32 pwrctl;             /* 0x30 */
+       u32 pwrtmg;             /* 0x34 */
+       u8 res3[0x18];          /* 0x38 */
+       u32 rfshctl0;           /* 0x50 */
+       u32 rfshctl1;           /* 0x54 */
+       u8 res4[0x8];           /* 0x58 */
+       u32 rfshctl3;           /* 0x60 */
+       u32 rfshtmg;            /* 0x64 */
+       u8 res6[0x68];          /* 0x68 */
+       u32 init0;              /* 0xd0 */
+       u32 init1;              /* 0xd4 */
+       u32 init2;              /* 0xd8 */
+       u32 init3;              /* 0xdc */
+       u32 init4;              /* 0xe0 */
+       u32 init5;              /* 0xe4 */
+       u8 res7[0x0c];          /* 0xe8 */
+       u32 rankctl;            /* 0xf4 */
+       u8 res8[0x08];          /* 0xf8 */
+       u32 dramtmg0;           /* 0x100 */
+       u32 dramtmg1;           /* 0x104 */
+       u32 dramtmg2;           /* 0x108 */
+       u32 dramtmg3;           /* 0x10c */
+       u32 dramtmg4;           /* 0x110 */
+       u32 dramtmg5;           /* 0x114 */
+       u32 dramtmg6;           /* 0x118 */
+       u32 dramtmg7;           /* 0x11c */
+       u32 dramtmg8;           /* 0x120 */
+       u8 res9[0x5c];          /* 0x124 */
+       u32 zqctl0;             /* 0x180 */
+       u32 zqctl1;             /* 0x184 */
+       u32 zqctl2;             /* 0x188 */
+       u32 zqstat;             /* 0x18c */
+       u32 pitmg0;             /* 0x190 */
+       u32 pitmg1;             /* 0x194 */
+       u32 plpcfg0;            /* 0x198 */
+       u8 res10[0x04];         /* 0x19c */
+       u32 upd0;               /* 0x1a0 */
+       u32 upd1;               /* 0x1a4 */
+       u32 upd2;               /* 0x1a8 */
+       u32 upd3;               /* 0x1ac */
+       u32 pimisc;             /* 0x1b0 */
+       u8 res11[0x1c];         /* 0x1b4 */
+       u32 trainctl0;          /* 0x1d0 */
+       u32 trainctl1;          /* 0x1d4 */
+       u32 trainctl2;          /* 0x1d8 */
+       u32 trainstat;          /* 0x1dc */
+       u8 res12[0x60];         /* 0x1e0 */
+       u32 odtcfg;             /* 0x240 */
+       u32 odtmap;             /* 0x244 */
+       u8 res13[0x08];         /* 0x248 */
+       u32 sched;              /* 0x250 */
+       u8 res14[0x04];         /* 0x254 */
+       u32 perfshpr0;          /* 0x258 */
+       u32 perfshpr1;          /* 0x25c */
+       u32 perflpr0;           /* 0x260 */
+       u32 perflpr1;           /* 0x264 */
+       u32 perfwr0;            /* 0x268 */
+       u32 perfwr1;            /* 0x26c */
+};
+
+struct sunxi_mctl_phy_reg {
+       u8 res0[0x04];          /* 0x00 */
+       u32 pir;                /* 0x04 */
+       u32 pgcr0;              /* 0x08 phy general configuration register */
+       u32 pgcr1;              /* 0x0c phy general configuration register */
+       u32 pgsr0;              /* 0x10 */
+       u32 pgsr1;              /* 0x14 */
+       u32 dllgcr;             /* 0x18 */
+       u32 ptr0;               /* 0x1c */
+       u32 ptr1;               /* 0x20 */
+       u32 ptr2;               /* 0x24 */
+       u32 ptr3;               /* 0x28 */
+       u32 ptr4;               /* 0x2c */
+       u32 acmdlr;             /* 0x30 */
+       u32 acbdlr;             /* 0x34 */
+       u32 aciocr;             /* 0x38 */
+       u32 dxccr;              /* 0x3c DATX8 common configuration register */
+       u32 dsgcr;              /* 0x40 dram system general config register */
+       u32 dcr;                /* 0x44 */
+       u32 dtpr0;              /* 0x48 dram timing parameters register 0 */
+       u32 dtpr1;              /* 0x4c dram timing parameters register 1 */
+       u32 dtpr2;              /* 0x50 dram timing parameters register 2 */
+       u32 mr0;                /* 0x54 mode register 0 */
+       u32 mr1;                /* 0x58 mode register 1 */
+       u32 mr2;                /* 0x5c mode register 2 */
+       u32 mr3;                /* 0x60 mode register 3 */
+       u32 odtcr;              /* 0x64 */
+       u32 dtcr;               /* 0x68 */
+       u32 dtar0;              /* 0x6c data training address register 0 */
+       u32 dtar1;              /* 0x70 data training address register 1 */
+       u32 dtar2;              /* 0x74 data training address register 2 */
+       u32 dtar3;              /* 0x78 data training address register 3 */
+       u32 dtdr0;              /* 0x7c */
+       u32 dtdr1;              /* 0x80 */
+       u32 dtedr0;             /* 0x84 */
+       u32 dtedr1;             /* 0x88 */
+       u32 pgcr2;              /* 0x8c */
+       u8 res1[0x70];          /* 0x90 */
+       u32 bistrr;             /* 0x100 */
+       u32 bistwcr;            /* 0x104 */
+       u32 bistmskr0;          /* 0x108 */
+       u32 bistmskr1;          /* 0x10c */
+       u32 bistmskr2;          /* 0x110 */
+       u32 bistlsr;            /* 0x114 */
+       u32 bistar0;            /* 0x118 */
+       u32 bistar1;            /* 0x11c */
+       u32 bistar2;            /* 0x120 */
+       u32 bistupdr;           /* 0x124 */
+       u32 bistgsr;            /* 0x128 */
+       u32 bistwer;            /* 0x12c */
+       u32 bistber0;           /* 0x130 */
+       u32 bistber1;           /* 0x134 */
+       u32 bistber2;           /* 0x138 */
+       u32 bistber3;           /* 0x13c */
+       u32 bistwcsr;           /* 0x140 */
+       u32 bistfwr0;           /* 0x144 */
+       u32 bistfwr1;           /* 0x148 */
+       u32 bistfwr2;           /* 0x14c */
+       u8 res2[0x30];          /* 0x150 */
+       u32 zqcr0;              /* 0x180 zq control register 0 */
+       u32 zqcr1;              /* 0x184 zq control register 1 */
+       u32 zqsr0;              /* 0x188 zq status register 0 */
+       u32 zqsr1;              /* 0x18c zq status register 1 */
+       u32 zqcr2;              /* 0x190 zq control register 2 */
+       u8 res3[0x2c];          /* 0x194 */
+       u32 dx0gcr;             /* 0x1c0 */
+       u32 dx0gsr0;            /* 0x1c4 */
+       u32 dx0gsr1;            /* 0x1c8 */
+       u32 dx0bdlr0;           /* 0x1cc */
+       u32 dx0bdlr1;           /* 0x1d0 */
+       u32 dx0bdlr2;           /* 0x1d4 */
+       u32 dx0bdlr3;           /* 0x1d8 */
+       u32 dx0bdlr4;           /* 0x1dc */
+       u32 dx0lcdlr0;          /* 0x1e0 */
+       u32 dx0lcdlr1;          /* 0x1e4 */
+       u32 dx0lcdlr2;          /* 0x1e8 */
+       u32 dx0mdlr;            /* 0x1ec */
+       u32 dx0gtr;             /* 0x1f0 */
+       u32 dx0gsr2;            /* 0x1f4 */
+       u8 res4[0x08];          /* 0x1f8 */
+       u32 dx1gcr;             /* 0x200 */
+       u32 dx1gsr0;            /* 0x204 */
+       u32 dx1gsr1;            /* 0x208 */
+       u32 dx1bdlr0;           /* 0x20c */
+       u32 dx1bdlr1;           /* 0x210 */
+       u32 dx1bdlr2;           /* 0x214 */
+       u32 dx1bdlr3;           /* 0x218 */
+       u32 dx1bdlr4;           /* 0x21c */
+       u32 dx1lcdlr0;          /* 0x220 */
+       u32 dx1lcdlr1;          /* 0x224 */
+       u32 dx1lcdlr2;          /* 0x228 */
+       u32 dx1mdlr;            /* 0x22c */
+       u32 dx1gtr;             /* 0x230 */
+       u32 dx1gsr2;            /* 0x234 */
+};
+
+/*
+ * DRAM common (sunxi_mctl_com_reg) register constants.
+ */
+#define MCTL_CR_ROW_MASK               (0xf << 4)
+#define MCTL_CR_ROW(x)                 (((x) - 1) << 4)
+#define MCTL_CR_PAGE_SIZE_MASK         (0xf << 8)
+#define MCTL_CR_PAGE_SIZE(x)           ((x) << 8)
+
+#endif /* _SUNXI_DRAM_SUN8I_H */
index 7bb649950a982d19d9ea293352a35e82414e06ad..71cc879c2bb0ebf77e2dd7da5b7a6ee3b668ba12 100644 (file)
@@ -114,6 +114,7 @@ enum sunxi_gpio_number {
        SUNXI_GPIO_I_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_H),
        SUNXI_GPIO_L_START = 352,
        SUNXI_GPIO_M_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_L),
+       SUNXI_GPIO_AXP0_START = 1024,
 };
 
 /* SUNXI GPIO number definitions */
@@ -129,11 +130,14 @@ enum sunxi_gpio_number {
 #define SUNXI_GPL(_nr) (SUNXI_GPIO_L_START + (_nr))
 #define SUNXI_GPM(_nr) (SUNXI_GPIO_M_START + (_nr))
 
+#define SUNXI_GPAXP0(_nr)      (SUNXI_GPIO_AXP0_START + (_nr))
+
 /* GPIO pin function config */
 #define SUNXI_GPIO_INPUT       0
 #define SUNXI_GPIO_OUTPUT      1
 
 #define SUNXI_GPA0_EMAC                2
+#define SUN6I_GPA0_GMAC                2
 #define SUN7I_GPA0_GMAC                5
 
 #define SUNXI_GPB0_TWI0                2
@@ -144,18 +148,16 @@ enum sunxi_gpio_number {
 #define SUN5I_GPB19_UART0_TX   2
 #define SUN5I_GPB20_UART0_RX   2
 
-#define SUN5I_GPG3_SDC1                2
-
-#define SUN5I_GPG3_UART1_TX    4
-#define SUN5I_GPG4_UART1_RX    4
-
 #define SUNXI_GPC6_SDC2                3
 
+#define SUNXI_GPD0_LCD0                2
+#define SUNXI_GPD0_LVDS0       3
+
 #define SUNXI_GPF0_SDC0                2
 
 #define SUNXI_GPF2_SDC0                2
 
-#ifdef CONFIG_SUN8I
+#ifdef CONFIG_MACH_SUN8I
 #define SUNXI_GPF2_UART0_TX    3
 #define SUNXI_GPF4_UART0_RX    3
 #else
@@ -165,6 +167,11 @@ enum sunxi_gpio_number {
 
 #define SUN4I_GPG0_SDC1                4
 
+#define SUN5I_GPG3_SDC1                2
+
+#define SUN5I_GPG3_UART1_TX    4
+#define SUN5I_GPG4_UART1_RX    4
+
 #define SUN4I_GPH22_SDC1       5
 
 #define SUN6I_GPH20_UART0_TX   2
@@ -172,6 +179,11 @@ enum sunxi_gpio_number {
 
 #define SUN4I_GPI4_SDC3                2
 
+#define SUN6I_GPL0_R_P2WI_SCK  3
+#define SUN6I_GPL1_R_P2WI_SDA  3
+
+#define SUN8I_GPL0_R_RSB_SCK   2
+#define SUN8I_GPL1_R_RSB_SDA   2
 #define SUN8I_GPL2_R_UART_TX   2
 #define SUN8I_GPL3_R_UART_RX   2
 
@@ -180,7 +192,9 @@ enum sunxi_gpio_number {
 #define SUNXI_GPIO_PULL_UP     1
 #define SUNXI_GPIO_PULL_DOWN   2
 
-int sunxi_gpio_set_cfgpin(u32 pin, u32 val);
+void sunxi_gpio_set_cfgbank(struct sunxi_gpio *pio, int bank_offset, u32 val);
+void sunxi_gpio_set_cfgpin(u32 pin, u32 val);
+int sunxi_gpio_get_cfgbank(struct sunxi_gpio *pio, int bank_offset);
 int sunxi_gpio_get_cfgpin(u32 pin);
 int sunxi_gpio_set_drv(u32 pin, u32 val);
 int sunxi_gpio_set_pull(u32 pin, u32 val);
index 8a216740a722e4471f4f39680634fe9db861b354..537f1455643cc5ffae3d998599f3b941d2244568 100644 (file)
@@ -43,7 +43,7 @@ struct sunxi_mmc {
        u32 chda;               /* 0x90 */
        u32 cbda;               /* 0x94 */
        u32 res1[26];
-#if defined(CONFIG_SUN6I) || defined(CONFIG_SUN8I)
+#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN8I)
        u32 res2[64];
 #endif
        u32 fifo;               /* 0x100 (0x200 on sun6i) FIFO access address */
diff --git a/arch/arm/include/asm/arch-sunxi/p2wi.h b/arch/arm/include/asm/arch-sunxi/p2wi.h
new file mode 100644 (file)
index 0000000..2cf2d51
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Sunxi platform Push-Push i2c register definition.
+ *
+ * (c) Copyright 2013 Oliver Schinagl <oliver@schinagl.nl>
+ * http://linux-sunxi.org
+ *
+ * (c)Copyright 2006-2013
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Berg Xing <bergxing@allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_P2WI_H
+#define _SUNXI_P2WI_H
+
+#include <linux/types.h>
+
+#define P2WI_CTRL_RESET (0x1 << 0)
+#define P2WI_CTRL_IRQ_EN (0x1 << 1)
+#define P2WI_CTRL_TRANS_ABORT (0x1 << 6)
+#define P2WI_CTRL_TRANS_START (0x1 << 7)
+
+#define __P2WI_CC_CLK(n) (((n) & 0xff) << 0)
+#define P2WI_CC_CLK_MASK __P2WI_CC_CLK_DIV(0xff)
+#define __P2WI_CC_CLK_DIV(n) (((n) >> 1) - 1)
+#define P2WI_CC_CLK_DIV(n) \
+       __P2WI_CC_CLK(__P2WI_CC_CLK_DIV(n))
+#define P2WI_CC_SDA_OUT_DELAY(n) (((n) & 0x7) << 8)
+#define P2WI_CC_SDA_OUT_DELAY_MASK P2WI_CC_SDA_OUT_DELAY(0x7)
+
+#define P2WI_IRQ_TRANS_DONE (0x1 << 0)
+#define P2WI_IRQ_TRANS_ERR (0x1 << 1)
+#define P2WI_IRQ_LOAD_BUSY (0x1 << 2)
+
+#define P2WI_STAT_TRANS_DONE (0x1 << 0)
+#define P2WI_STAT_TRANS_ERR (0x1 << 1)
+#define P2WI_STAT_LOAD_BUSY (0x1 << 2)
+#define __P2WI_STAT_TRANS_ERR(n) (((n) & 0xff) << 8)
+#define P2WI_STAT_TRANS_ERR_MASK __P2WI_STAT_TRANS_ERR_ID(0xff)
+#define __P2WI_STAT_TRANS_ERR_BYTE_1 0x01
+#define __P2WI_STAT_TRANS_ERR_BYTE_2 0x02
+#define __P2WI_STAT_TRANS_ERR_BYTE_3 0x04
+#define __P2WI_STAT_TRANS_ERR_BYTE_4 0x08
+#define __P2WI_STAT_TRANS_ERR_BYTE_5 0x10
+#define __P2WI_STAT_TRANS_ERR_BYTE_6 0x20
+#define __P2WI_STAT_TRANS_ERR_BYTE_7 0x40
+#define __P2WI_STAT_TRANS_ERR_BYTE_8 0x80
+#define P2WI_STAT_TRANS_ERR_BYTE_1 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_1)
+#define P2WI_STAT_TRANS_ERR_BYTE_2 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_2)
+#define P2WI_STAT_TRANS_ERR_BYTE_3 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_3)
+#define P2WI_STAT_TRANS_ERR_BYTE_4 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_4)
+#define P2WI_STAT_TRANS_ERR_BYTE_5 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_5)
+#define P2WI_STAT_TRANS_ERR_BYTE_6 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_6)
+#define P2WI_STAT_TRANS_ERR_BYTE_7 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_7)
+#define P2WI_STAT_TRANS_ERR_BYTE_8 \
+       __P2WI_STAT_TRANS_ERR(__P2WI_STAT_TRANS_ERR_BYTE_8)
+
+#define P2WI_DATADDR_BYTE_1(n) (((n) & 0xff) << 0)
+#define P2WI_DATADDR_BYTE_1_MASK P2WI_DATADDR_BYTE_1(0xff)
+#define P2WI_DATADDR_BYTE_2(n) (((n) & 0xff) << 8)
+#define P2WI_DATADDR_BYTE_2_MASK P2WI_DATADDR_BYTE_2(0xff)
+#define P2WI_DATADDR_BYTE_3(n) (((n) & 0xff) << 16)
+#define P2WI_DATADDR_BYTE_3_MASK P2WI_DATADDR_BYTE_3(0xff)
+#define P2WI_DATADDR_BYTE_4(n) (((n) & 0xff) << 24)
+#define P2WI_DATADDR_BYTE_4_MASK P2WI_DATADDR_BYTE_4(0xff)
+#define P2WI_DATADDR_BYTE_5(n) (((n) & 0xff) << 0)
+#define P2WI_DATADDR_BYTE_5_MASK P2WI_DATADDR_BYTE_5(0xff)
+#define P2WI_DATADDR_BYTE_6(n) (((n) & 0xff) << 8)
+#define P2WI_DATADDR_BYTE_6_MASK P2WI_DATADDR_BYTE_6(0xff)
+#define P2WI_DATADDR_BYTE_7(n) (((n) & 0xff) << 16)
+#define P2WI_DATADDR_BYTE_7_MASK P2WI_DATADDR_BYTE_7(0xff)
+#define P2WI_DATADDR_BYTE_8(n) (((n) & 0xff) << 24)
+#define P2WI_DATADDR_BYTE_8_MASK P2WI_DATADDR_BYTE_8(0xff)
+
+#define __P2WI_DATA_NUM_BYTES(n) (((n) & 0x7) << 0)
+#define P2WI_DATA_NUM_BYTES_MASK __P2WI_DATA_NUM_BYTES(0x7)
+#define P2WI_DATA_NUM_BYTES(n) __P2WI_DATA_NUM_BYTES((n) - 1)
+#define P2WI_DATA_NUM_BYTES_READ (0x1 << 4)
+
+#define P2WI_DATA_BYTE_1(n) (((n) & 0xff) << 0)
+#define P2WI_DATA_BYTE_1_MASK P2WI_DATA_BYTE_1(0xff)
+#define P2WI_DATA_BYTE_2(n) (((n) & 0xff) << 8)
+#define P2WI_DATA_BYTE_2_MASK P2WI_DATA_BYTE_2(0xff)
+#define P2WI_DATA_BYTE_3(n) (((n) & 0xff) << 16)
+#define P2WI_DATA_BYTE_3_MASK P2WI_DATA_BYTE_3(0xff)
+#define P2WI_DATA_BYTE_4(n) (((n) & 0xff) << 24)
+#define P2WI_DATA_BYTE_4_MASK P2WI_DATA_BYTE_4(0xff)
+#define P2WI_DATA_BYTE_5(n) (((n) & 0xff) << 0)
+#define P2WI_DATA_BYTE_5_MASK P2WI_DATA_BYTE_5(0xff)
+#define P2WI_DATA_BYTE_6(n) (((n) & 0xff) << 8)
+#define P2WI_DATA_BYTE_6_MASK P2WI_DATA_BYTE_6(0xff)
+#define P2WI_DATA_BYTE_7(n) (((n) & 0xff) << 16)
+#define P2WI_DATA_BYTE_7_MASK P2WI_DATA_BYTE_7(0xff)
+#define P2WI_DATA_BYTE_8(n) (((n) & 0xff) << 24)
+#define P2WI_DATA_BYTE_8_MASK P2WI_DATA_BYTE_8(0xff)
+
+#define P2WI_LINECTRL_SDA_CTRL_EN (0x1 << 0)
+#define P2WI_LINECTRL_SDA_OUT_HIGH (0x1 << 1)
+#define P2WI_LINECTRL_SCL_CTRL_EN (0x1 << 2)
+#define P2WI_LINECTRL_SCL_OUT_HIGH (0x1 << 3)
+#define P2WI_LINECTRL_SDA_STATE_HIGH (0x1 << 4)
+#define P2WI_LINECTRL_SCL_STATE_HIGH (0x1 << 5)
+
+#define P2WI_PM_DEV_ADDR(n) (((n) & 0xff) << 0)
+#define P2WI_PM_DEV_ADDR_MASK P2WI_PM_DEV_ADDR(0xff)
+#define P2WI_PM_CTRL_ADDR(n) (((n) & 0xff) << 8)
+#define P2WI_PM_CTRL_ADDR_MASK P2WI_PM_CTRL_ADDR(0xff)
+#define P2WI_PM_INIT_DATA(n) (((n) & 0xff) << 16)
+#define P2WI_PM_INIT_DATA_MASK P2WI_PM_INIT_DATA(0xff)
+#define P2WI_PM_INIT_SEND (0x1 << 31)
+
+struct sunxi_p2wi_reg {
+       u32 ctrl;       /* 0x00 control */
+       u32 cc;         /* 0x04 clock control */
+       u32 irq;        /* 0x08 interrupt */
+       u32 status;     /* 0x0c status */
+       u32 dataddr0;   /* 0x10 data address 0 */
+       u32 dataddr1;   /* 0x14 data address 1 */
+       u32 numbytes;   /* 0x18 num bytes */
+       u32 data0;      /* 0x1c data buffer 0 */
+       u32 data1;      /* 0x20 data buffer 1 */
+       u32 linectrl;   /* 0x24 line control */
+       u32 pm;         /* 0x28 power management */
+};
+
+void p2wi_init(void);
+int p2wi_change_to_p2wi_mode(u8 slave_addr, u8 ctrl_reg, u8 init_data);
+int p2wi_read(const u8 addr, u8 *data);
+int p2wi_write(const u8 addr, u8 data);
+
+#endif /* _SUNXI_P2WI_H */
index 3d3bfa6cd1b0ccabf23ed0885123e739b9302199..82ed541e91e4789535e236963afd9b2f232daa25 100644 (file)
@@ -50,7 +50,8 @@
 #define PRCM_APB0_GATE_PIO (0x1 << 0)
 #define PRCM_APB0_GATE_IR (0x1 << 1)
 #define PRCM_APB0_GATE_TIMER01 (0x1 << 2)
-#define PRCM_APB0_GATE_P2WI (0x1 << 3)
+#define PRCM_APB0_GATE_P2WI (0x1 << 3)         /* sun6i */
+#define PRCM_APB0_GATE_RSB (0x1 << 3)          /* sun8i */
 #define PRCM_APB0_GATE_UART (0x1 << 4)
 #define PRCM_APB0_GATE_1WIRE (0x1 << 5)
 #define PRCM_APB0_GATE_I2C (0x1 << 6)
 #define PRCM_PLL_CTRL_LDO_OUT_HV(n) \
        __PRCM_PLL_CTRL_VDD_LDO_OUT((((n) & 0x7) * 30) + 1160)
 #define PRCM_PLL_CTRL_LDO_KEY (0xa7 << 24)
+#define PRCM_PLL_CTRL_LDO_KEY_MASK (0xff << 24)
 
 #define PRCM_CLK_1WIRE_GATE (0x1 << 31)
 
diff --git a/arch/arm/include/asm/arch-sunxi/rsb.h b/arch/arm/include/asm/arch-sunxi/rsb.h
new file mode 100644 (file)
index 0000000..95a595a
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * Based on allwinner u-boot sources rsb code which is:
+ * (C) Copyright 2007-2013
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * lixiang <lixiang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __SUNXI_RSB_H
+#define __SUNXI_RSB_H
+
+#include <common.h>
+#include <asm/io.h>
+
+struct sunxi_rsb_reg {
+       u32 ctrl;       /* 0x00 */
+       u32 ccr;        /* 0x04 */
+       u32 inte;       /* 0x08 */
+       u32 stat;       /* 0x0c */
+       u32 addr;       /* 0x10 */
+       u8 res0[8];     /* 0x14 */
+       u32 data;       /* 0x1c */
+       u8 res1[4];     /* 0x20 */
+       u32 lcr;        /* 0x24 */
+       u32 dmcr;       /* 0x28 */
+       u32 cmd;        /* 0x2c */
+       u32 devaddr;    /* 0x30 */
+};
+
+#define RSB_CTRL_SOFT_RST              (1 << 0)
+#define RSB_CTRL_START_TRANS           (1 << 7)
+
+#define RSB_STAT_TOVER_INT             (1 << 0)
+#define RSB_STAT_TERR_INT              (1 << 1)
+#define RSB_STAT_LBSY_INT              (1 << 2)
+
+#define RSB_DMCR_DEVICE_MODE_START     (1 << 31)
+
+#define RSB_CMD_BYTE_WRITE             0x4e
+#define RSB_CMD_BYTE_READ              0x8b
+#define RSB_CMD_SET_RTSADDR            0xe8
+
+#define RSB_DEVADDR_RUNTIME_ADDR(x)    ((x) << 16)
+#define RSB_DEVADDR_DEVICE_ADDR(x)     ((x) << 0)
+
+void rsb_init(void);
+int rsb_set_device_mode(u32 device_mode_data);
+int rsb_set_device_address(u16 device_addr, u16 runtime_addr);
+int rsb_write(const u16 runtime_device_addr, const u8 reg_addr, u8 data);
+int rsb_read(const u16 runtime_device_addr, const u8 reg_addr, u8 *data);
+
+#endif
index 03a0684c797a3c28179886a283ca2382d249b17b..9a5e488a38080f489494fd1f45a987c68142d1b6 100644 (file)
@@ -67,7 +67,7 @@ struct sunxi_timer_reg {
        struct sunxi_timer timer[6];    /* We have 6 timers */
        u8 res2[16];
        struct sunxi_avs avs;
-#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN5I) || defined(CONFIG_MACH_SUN7I)
        struct sunxi_wdog wdog; /* 0x90 */
        /* XXX the following is not accurate for sun5i/sun7i */
        struct sunxi_64cnt cnt64;       /* 0xa0 */
@@ -77,7 +77,7 @@ struct sunxi_timer_reg {
        struct sunxi_tgp tgp[4];
        u8 res5[8];
        u32 cpu_cfg;
-#else /* CONFIG_SUN6I || CONFIG_SUN8I || ... */
+#else /* CONFIG_MACH_SUN6I || CONFIG_MACH_SUN8I || ... */
        u8 res3[16];
        struct sunxi_wdog wdog[5];      /* We have 5 watchdogs */
 #endif
diff --git a/arch/arm/include/asm/arch-sunxi/usbc.h b/arch/arm/include/asm/arch-sunxi/usbc.h
new file mode 100644 (file)
index 0000000..8d20973
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Sunxi usb-controller code shared between the ehci and musb controllers
+ *
+ * Copyright (C) 2014 Roman Byshko
+ *
+ * Roman Byshko <rbyshko@gmail.com>
+ *
+ * Based on code from
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+void *sunxi_usbc_get_io_base(int index);
+int sunxi_usbc_request_resources(int index);
+int sunxi_usbc_free_resources(int index);
+void sunxi_usbc_enable(int index);
+void sunxi_usbc_disable(int index);
+void sunxi_usbc_vbus_enable(int index);
+void sunxi_usbc_vbus_disable(int index);
index ccc8fa32c49df2244e7d6ff67b994824722ec3f4..8108be97bab08ec75128853ca07e4c65253d98f6 100644 (file)
@@ -13,7 +13,7 @@
 #define WDT_CTRL_RESTART       (0x1 << 0)
 #define WDT_CTRL_KEY           (0x0a57 << 1)
 
-#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+#if defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN5I) || defined(CONFIG_MACH_SUN7I)
 
 #define WDT_MODE_EN            (0x1 << 0)
 #define WDT_MODE_RESET_EN      (0x1 << 1)
diff --git a/arch/arm/include/asm/arch-tegra/powergate.h b/arch/arm/include/asm/arch-tegra/powergate.h
new file mode 100644 (file)
index 0000000..130b58b
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _TEGRA_POWERGATE_H_
+#define _TEGRA_POWERGATE_H_
+
+#include <asm/arch/clock.h>
+
+enum tegra_powergate {
+       TEGRA_POWERGATE_CPU,
+       TEGRA_POWERGATE_3D,
+       TEGRA_POWERGATE_VENC,
+       TEGRA_POWERGATE_PCIE,
+       TEGRA_POWERGATE_VDEC,
+       TEGRA_POWERGATE_L2,
+       TEGRA_POWERGATE_MPE,
+       TEGRA_POWERGATE_HEG,
+       TEGRA_POWERGATE_SATA,
+       TEGRA_POWERGATE_CPU1,
+       TEGRA_POWERGATE_CPU2,
+       TEGRA_POWERGATE_CPU3,
+       TEGRA_POWERGATE_CELP,
+       TEGRA_POWERGATE_3D1,
+       TEGRA_POWERGATE_CPU0,
+       TEGRA_POWERGATE_C0NC,
+       TEGRA_POWERGATE_C1NC,
+       TEGRA_POWERGATE_SOR,
+       TEGRA_POWERGATE_DIS,
+       TEGRA_POWERGATE_DISB,
+       TEGRA_POWERGATE_XUSBA,
+       TEGRA_POWERGATE_XUSBB,
+       TEGRA_POWERGATE_XUSBC,
+       TEGRA_POWERGATE_VIC,
+       TEGRA_POWERGATE_IRAM,
+};
+
+int tegra_powergate_sequence_power_up(enum tegra_powergate id,
+                                     enum periph_id periph);
+int tegra_powergate_power_off(enum tegra_powergate id);
+
+#endif
index 7ca690700cb48bb7110ea5c3443f78ba0b2db5cb..eeeb247d5d5836159f99cd3d70254ec41e70c68f 100644 (file)
@@ -167,6 +167,6 @@ struct i2c_ctlr {
  *
  * @return number of bus, or -1 if there is no DVC active
  */
-int tegra_i2c_get_dvc_bus_num(void);
+int tegra_i2c_get_dvc_bus(struct udevice **busp);
 
 #endif /* _TEGRA_I2C_H_ */
diff --git a/arch/arm/include/asm/arch-tegra/xusb-padctl.h b/arch/arm/include/asm/arch-tegra/xusb-padctl.h
new file mode 100644 (file)
index 0000000..b4b4c8b
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef _TEGRA_XUSB_PADCTL_H_
+#define _TEGRA_XUSB_PADCTL_H_
+
+struct tegra_xusb_phy;
+
+/**
+ * tegra_xusb_phy_get() - obtain a reference to a specified padctl PHY
+ * @type: the type of PHY to obtain
+ *
+ * The type of PHY varies between SoC generations. Typically there are XUSB,
+ * PCIe and SATA PHYs, though not all generations support all of them. The
+ * value of type can usually be directly parsed from a device tree.
+ *
+ * Return: a pointer to the PHY or NULL if no such PHY exists
+ */
+struct tegra_xusb_phy *tegra_xusb_phy_get(unsigned int type);
+
+void tegra_xusb_padctl_init(const void *fdt);
+int tegra_xusb_phy_prepare(struct tegra_xusb_phy *phy);
+int tegra_xusb_phy_enable(struct tegra_xusb_phy *phy);
+int tegra_xusb_phy_disable(struct tegra_xusb_phy *phy);
+int tegra_xusb_phy_unprepare(struct tegra_xusb_phy *phy);
+
+#endif
diff --git a/arch/arm/include/asm/arch-tegra114/powergate.h b/arch/arm/include/asm/arch-tegra114/powergate.h
new file mode 100644 (file)
index 0000000..260ea80
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _TEGRA114_POWERGATE_H_
+#define _TEGRA114_POWERGATE_H_
+
+#include <asm/arch-tegra/powergate.h>
+
+#endif /* _TEGRA114_POWERGATE_H_ */
index 8e39d21a7b5e96390f5c892166452aaf115b0dd6..8e650862529e4046227753c4db3548b5c2fc441c 100644 (file)
@@ -16,4 +16,6 @@
 #define OSC_FREQ_SHIFT          28
 #define OSC_FREQ_MASK           (0xF << OSC_FREQ_SHIFT)
 
+int tegra_plle_enable(void);
+
 #endif /* _TEGRA124_CLOCK_H_ */
diff --git a/arch/arm/include/asm/arch-tegra124/powergate.h b/arch/arm/include/asm/arch-tegra124/powergate.h
new file mode 100644 (file)
index 0000000..8a0cfba
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _TEGRA124_POWERGATE_H_
+#define _TEGRA124_POWERGATE_H_
+
+#include <asm/arch-tegra/powergate.h>
+
+#endif /* _TEGRA124_POWERGATE_H_ */
index a09cb01978637e27b486aeca53673238fe8bf097..894be088cde2dcfae35d7593d864491cfd90b86f 100644 (file)
@@ -131,7 +131,7 @@ enum periph_id {
        /* 72 */
        PERIPH_ID_AFI,
        PERIPH_ID_CORESIGHT,
-       PERIPH_ID_RESERVED74,
+       PERIPH_ID_PCIEXCLK,
        PERIPH_ID_AVPUCQ,
        PERIPH_ID_RESERVED76,
        PERIPH_ID_RESERVED77,
index 889c65a16f1f47446813a933179900a47c3c873c..4df8da96e2a3e6f7899aa5eb5e58be91fc760962 100644 (file)
@@ -15,4 +15,6 @@
 #define OSC_FREQ_SHIFT          30
 #define OSC_FREQ_MASK           (3U << OSC_FREQ_SHIFT)
 
+int tegra_plle_enable(void);
+
 #endif /* _TEGRA20_CLOCK_H */
diff --git a/arch/arm/include/asm/arch-tegra20/powergate.h b/arch/arm/include/asm/arch-tegra20/powergate.h
new file mode 100644 (file)
index 0000000..439d88b
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _TEGRA20_POWERGATE_H_
+#define _TEGRA20_POWERGATE_H_
+
+#include <asm/arch-tegra/powergate.h>
+
+#endif /* _TEGRA20_POWERGATE_H_ */
index 2f24a75cc4c324dae76975523b46d8fa1e16f257..410c35289978f28b970745182d832e106bfd752c 100644 (file)
@@ -25,4 +25,6 @@
 #define OSC_FREQ_SHIFT          28
 #define OSC_FREQ_MASK           (0xF << OSC_FREQ_SHIFT)
 
+int tegra_plle_enable(void);
+
 #endif /* _TEGRA30_CLOCK_H_ */
diff --git a/arch/arm/include/asm/arch-tegra30/powergate.h b/arch/arm/include/asm/arch-tegra30/powergate.h
new file mode 100644 (file)
index 0000000..c70e44b
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _TEGRA30_POWERGATE_H_
+#define _TEGRA30_POWERGATE_H_
+
+#include <asm/arch-tegra/powergate.h>
+
+#endif /* _TEGRA30_POWERGATE_H_ */
index e6ba4e4ee4d624abacc5457cadf1d43973d44cc2..e3cba5befe2a8cdd1518caef2d47fe8f6953619b 100644 (file)
        defined(CONFIG_DCC_MICRO_SUPPORT_CARD)
 void support_card_reset(void);
 void support_card_init(void);
+void support_card_late_init(void);
 int check_support_card(void);
 #else
 #define support_card_reset() do {} while (0)
 #define support_card_init()  do {} while (0)
+#define support_card_late_init()  do {} while (0)
 static inline int check_support_card(void)
 {
        return 0;
@@ -32,4 +34,9 @@ static inline void uniphier_board_init(void)
        support_card_init();
 }
 
+static inline void uniphier_board_late_init(void)
+{
+       support_card_late_init();
+}
+
 #endif /* ARCH_BOARD_H */
diff --git a/arch/arm/include/asm/arch-uniphier/ddrphy-regs.h b/arch/arm/include/asm/arch-uniphier/ddrphy-regs.h
new file mode 100644 (file)
index 0000000..484559c
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * UniPhier DDR PHY registers
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef ARCH_DDRPHY_REGS_H
+#define ARCH_DDRPHY_REGS_H
+
+#include <linux/compiler.h>
+
+#ifndef __ASSEMBLY__
+
+struct ddrphy {
+       u32 ridr;               /* Revision Identification Register */
+       u32 pir;                /* PHY Initialixation Register */
+       u32 pgcr[2];            /* PHY General Configuration Register */
+       u32 pgsr[2];            /* PHY General Status Register */
+       u32 pllcr;              /* PLL Control Register */
+       u32 ptr[5];             /* PHY Timing Register */
+       u32 acmdlr;             /* AC Master Delay Line Register */
+       u32 acbdlr;             /* AC Bit Delay Line Register */
+       u32 aciocr;             /* AC I/O Configuration Register */
+       u32 dxccr;              /* DATX8 Common Configuration Register */
+       u32 dsgcr;              /* DDR System General Configuration Register */
+       u32 dcr;                /* DRAM Configuration Register */
+       u32 dtpr[3];            /* DRAM Timing Parameters Register */
+       u32 mr0;                /* Mode Register 0 */
+       u32 mr1;                /* Mode Register 1 */
+       u32 mr2;                /* Mode Register 2 */
+       u32 mr3;                /* Mode Register 3 */
+       u32 odtcr;              /* ODT Configuration Register */
+       u32 dtcr;               /* Data Training Configuration Register */
+       u32 dtar[4];            /* Data Training Address Register */
+       u32 dtdr[2];            /* Data Training Data Register */
+       u32 dtedr[2];           /* Data Training Eye Data Register */
+       u32 rsv0[13];           /* Reserved */
+       u32 dcuar;              /* DCU Address Register */
+       u32 dcudr;              /* DCU Data Register */
+       u32 dcurr;              /* DCU Run Register */
+       u32 dculr;              /* DCU Loop Register */
+       u32 dcugcr;             /* DCU General Configuration Register */
+       u32 dcutpr;             /* DCU Timing Parameters Register */
+       u32 dcusr[2];           /* DCU Status Register */
+       u32 rsv1[8];            /* Reserved */
+       u32 bistrr;             /* BIST Run Register */
+       u32 bistwcr;            /* BIST Word Count Register */
+       u32 bistmskr[3];        /* BIST Mask Register */
+       u32 bistlsr;            /* BIST LFSR Sed Register */
+       u32 bistar[3];          /* BIST Address Register */
+       u32 bistudpr;           /* BIST User Data Pattern Register */
+       u32 bistgsr;            /* BIST General Status Register */
+       u32 bistwer;            /* BIST Word Error Register */
+       u32 bistber[4];         /* BIST Bit Error Register */
+       u32 bistwcsr;           /* BIST Word Count Status Register */
+       u32 bistfwr[3];         /* BIST Fail Word Register */
+       u32 rsv2[10];           /* Reserved */
+       u32 gpr[2];             /* General Purpose Register */
+       struct ddrphy_zq {      /* ZQ */
+               u32 cr[2];      /* Impedance Control Register */
+               u32 sr[2];      /* Impedance Status Register */
+       } zq[4];
+       struct ddrphy_datx8 {   /* DATX8 */
+               u32 gcr;        /* General Configuration Register */
+               u32 gsr[2];     /* General Status Register */
+               u32 bdlr[5];    /* Bit Delay Line Register */
+               u32 lcdlr[3];   /* Local Calibrated Delay Line Register */
+               u32 mdlr;       /* Master Delay Line Register */
+               u32 gtr;        /* General Timing Register */
+               u32 rsv[3];     /* Reserved */
+       } dx[9];
+} __packed;
+
+#endif /* __ASSEMBLY__ */
+
+#define PIR_INIT               (1 <<  0)       /* Initialization Trigger */
+#define PIR_ZCAL               (1 <<  1)       /* Impedance Calibration */
+#define PIR_PLLINIT            (1 <<  4)       /* PLL Initialization */
+#define PIR_DCAL               (1 <<  5)       /* DDL Calibration */
+#define PIR_PHYRST             (1 <<  6)       /* PHY Reset */
+#define PIR_DRAMRST            (1 <<  7)       /* DRAM Reset */
+#define PIR_DRAMINIT           (1 <<  8)       /* DRAM Initialization */
+#define PIR_WL                 (1 <<  9)       /* Write Leveling */
+#define PIR_QSGATE             (1 << 10)       /* Read DQS Gate Training */
+#define PIR_WLADJ              (1 << 11)       /* Write Leveling Adjust */
+#define PIR_RDDSKW             (1 << 12)       /* Read Data Bit Deskew */
+#define PIR_WRDSKW             (1 << 13)       /* Write Data Bit Deskew */
+#define PIR_RDEYE              (1 << 14)       /* Read Data Eye Training */
+#define PIR_WREYE              (1 << 15)       /* Write Data Eye Training */
+#define PIR_LOCKBYP            (1 << 28)       /* PLL Lock Bypass */
+#define PIR_DCALBYP            (1 << 29)       /* DDL Calibration Bypass */
+#define PIR_ZCALBYP            (1 << 30)       /* Impedance Calib Bypass */
+#define PIR_INITBYP            (1 << 31)       /* Initialization Bypass */
+
+#define PGSR0_IDONE            (1 <<  0)       /* Initialization Done */
+#define PGSR0_PLDONE           (1 <<  1)       /* PLL Lock Done */
+#define PGSR0_DCDONE           (1 <<  2)       /* DDL Calibration Done */
+#define PGSR0_ZCDONE           (1 <<  3)       /* Impedance Calibration Done */
+#define PGSR0_DIDONE           (1 <<  4)       /* DRAM Initialization Done */
+#define PGSR0_WLDONE           (1 <<  5)       /* Write Leveling Done */
+#define PGSR0_QSGDONE          (1 <<  6)       /* DQS Gate Training Done */
+#define PGSR0_WLADONE          (1 <<  7)       /* Write Leveling Adjust Done */
+#define PGSR0_RDDONE           (1 <<  8)       /* Read Bit Deskew Done */
+#define PGSR0_WDDONE           (1 <<  9)       /* Write Bit Deskew Done */
+#define PGSR0_REDONE           (1 << 10)       /* Read Eye Training Done */
+#define PGSR0_WEDONE           (1 << 11)       /* Write Eye Training Done */
+#define PGSR0_IERR             (1 << 16)       /* Initialization Error */
+#define PGSR0_PLERR            (1 << 17)       /* PLL Lock Error */
+#define PGSR0_DCERR            (1 << 18)       /* DDL Calibration Error */
+#define PGSR0_ZCERR            (1 << 19)       /* Impedance Calib Error */
+#define PGSR0_DIERR            (1 << 20)       /* DRAM Initialization Error */
+#define PGSR0_WLERR            (1 << 21)       /* Write Leveling Error */
+#define PGSR0_QSGERR           (1 << 22)       /* DQS Gate Training Error */
+#define PGSR0_WLAERR           (1 << 23)       /* Write Leveling Adj Error */
+#define PGSR0_RDERR            (1 << 24)       /* Read Bit Deskew Error */
+#define PGSR0_WDERR            (1 << 25)       /* Write Bit Deskew Error */
+#define PGSR0_REERR            (1 << 26)       /* Read Eye Training Error */
+#define PGSR0_WEERR            (1 << 27)       /* Write Eye Training Error */
+#define PGSR0_DTERR_SHIFT      28              /* Data Training Error Status*/
+#define PGSR0_DTERR            (7 << (PGSR0_DTERR_SHIFT))
+#define PGSR0_APLOCK           (1 << 31)       /* AC PLL Lock */
+
+#define DXCCR_DQSRES_OPEN      (0 << 5)
+#define DXCCR_DQSRES_688_OHM   (1 << 5)
+#define DXCCR_DQSRES_611_OHM   (2 << 5)
+#define DXCCR_DQSRES_550_OHM   (3 << 5)
+#define DXCCR_DQSRES_500_OHM   (4 << 5)
+#define DXCCR_DQSRES_458_OHM   (5 << 5)
+#define DXCCR_DQSRES_393_OHM   (6 << 5)
+#define DXCCR_DQSRES_344_OHM   (7 << 5)
+
+#define DXCCR_DQSNRES_OPEN     (0 << 9)
+#define DXCCR_DQSNRES_688_OHM  (1 << 9)
+#define DXCCR_DQSNRES_611_OHM  (2 << 9)
+#define DXCCR_DQSNRES_550_OHM  (3 << 9)
+#define DXCCR_DQSNRES_500_OHM  (4 << 9)
+#define DXCCR_DQSNRES_458_OHM  (5 << 9)
+#define DXCCR_DQSNRES_393_OHM  (6 << 9)
+#define DXCCR_DQSNRES_344_OHM  (7 << 9)
+
+#define DTCR_DTRANK_SHIFT      4               /* Data Training Rank */
+#define DTCR_DTRANK_MASK       (0x3 << (DTCR_DTRANK_SHIFT))
+#define DTCR_DTMPR             (1 << 6)        /* Data Training using MPR */
+#define DTCR_RNKEN_SHIFT       24              /* Rank Enable */
+#define DTCR_RNKEN_MASK                (0xf << (DTCR_RNKEN_SHIFT))
+
+#define DXGCR_WLRKEN_SHIFT     26              /* Write Level Rank Enable */
+#define DXGCR_WLRKEN_MASK      (0xf << (DXGCR_WLRKEN_SHIFT))
+
+/* SoC-specific parameters */
+#define NR_DATX8_PER_DDRPHY    2
+
+#if defined(CONFIG_MACH_PH1_LD4) || defined(CONFIG_MACH_PH1_SLD8)
+#define NR_DDRPHY_PER_CH               1
+#else
+#define NR_DDRPHY_PER_CH               2
+#endif
+
+#define NR_DDRCH               2
+
+#define DDRPHY_BASE(ch, phy)   (0x5bc01000 + 0x200000 * (ch) + 0x1000 * (phy))
+
+#ifndef __ASSEMBLY__
+void ddrphy_init(struct ddrphy __iomem *phy, int freq, int size);
+void ddrphy_prepare_training(struct ddrphy __iomem *phy, int rank);
+int ddrphy_training(struct ddrphy __iomem *phy);
+#endif
+
+#endif /* ARCH_DDRPHY_REGS_H */
diff --git a/arch/arm/include/asm/arch-uniphier/debug-uart.S b/arch/arm/include/asm/arch-uniphier/debug-uart.S
new file mode 100644 (file)
index 0000000..af55fee
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/serial_reg.h>
+
+#if !defined(CONFIG_DEBUG_SEMIHOSTING)
+#include CONFIG_DEBUG_LL_INCLUDE
+#endif
+
+#define BAUDRATE               115200
+#define DIV_ROUND(x, d)                (((x) + ((d) / 2)) / (d))
+#define DIVISOR                        DIV_ROUND(UART_CLK, 16 * BAUDRATE)
+
+       .macro          init_debug_uart, ra, rb, rc
+       addruart        \ra, \rb, \rc
+       mov             \rb, #UART_LCR_WLEN8
+       strb            \rb, [\ra, #0x11]
+       ldr             \rb, =DIVISOR
+       str             \rb, [\ra, #0x24]
+       .endm
diff --git a/arch/arm/include/asm/arch-uniphier/ehci-uniphier.h b/arch/arm/include/asm/arch-uniphier/ehci-uniphier.h
new file mode 100644 (file)
index 0000000..e9c5fb4
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __PLAT_UNIPHIER_EHCI_H
+#define __PLAT_UNIPHIER_EHCI_H
+
+#include <linux/types.h>
+#include <asm/io.h>
+#include "mio-regs.h"
+
+struct uniphier_ehci_platform_data {
+       unsigned long base;
+};
+
+extern struct uniphier_ehci_platform_data uniphier_ehci_platdata[];
+
+static inline void uniphier_ehci_reset(int index, int on)
+{
+       u32 tmp;
+
+       tmp = readl(MIO_USB_RSTCTRL(index));
+       if (on)
+               tmp &= ~MIO_USB_RSTCTRL_XRST;
+       else
+               tmp |= MIO_USB_RSTCTRL_XRST;
+       writel(tmp, MIO_USB_RSTCTRL(index));
+}
+
+#endif /* __PLAT_UNIPHIER_EHCI_H */
diff --git a/arch/arm/include/asm/arch-uniphier/gpio.h b/arch/arm/include/asm/arch-uniphier/gpio.h
new file mode 100644 (file)
index 0000000..1fc4e19
--- /dev/null
@@ -0,0 +1,6 @@
+/*
+ * Dummy header file to enable CONFIG_OF_CONTROL.
+ * If CONFIG_OF_CONTROL is enabled, lib/fdtdec.c is compiled.
+ * It includes <asm/arch/gpio.h> via <asm/gpio.h>, so those SoCs that enable
+ * OF_CONTROL must have arch/gpio.h even if GPIO is not supported.
+ */
diff --git a/arch/arm/include/asm/arch-uniphier/mio-regs.h b/arch/arm/include/asm/arch-uniphier/mio-regs.h
new file mode 100644 (file)
index 0000000..3306934
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * UniPhier MIO (Media I/O) registers
+ *
+ * Copyright (C) 2014 Panasonic Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef ARCH_MIO_REGS_H
+#define ARCH_MIO_REGS_H
+
+#define MIO_BASE               0x59810000
+
+#define MIO_CLKCTRL(i)         (MIO_BASE + 0x200 * (i) + 0x0020)
+#define MIO_RSTCTRL(i)         (MIO_BASE + 0x200 * (i) + 0x0110)
+#define MIO_USB_RSTCTRL(i)     (MIO_BASE + 0x200 * (i) + 0x0114)
+
+#define MIO_USB_RSTCTRL_XRST   (0x1 << 0)
+
+#endif /* ARCH_MIO_REGS_H */
index cdf7d132d44ad29d87a65d28050fdb4765ed781d..62a512659c3a39af391c9301e6944295178d99a4 100644 (file)
@@ -21,4 +21,6 @@ U_BOOT_DEVICE(serial##n) = {                                          \
        .platdata = &serial_device##n                                   \
 };
 
+#include <asm/arch/ehci-uniphier.h>
+
 #endif /* ARCH_PLATDEVICE_H */
index 8e410788eff0fc08014b379935ca4c1dadc2a7c8..efb68e8564944216b6e1abc5c4935d66f239cd3a 100644 (file)
@@ -95,6 +95,7 @@
 #define SBCTRL1_ADMULTIPLX_MEM_VALUE   0x03005500
 #define SBCTRL2_ADMULTIPLX_MEM_VALUE   0x14000010
 
+#define PC0CTRL                                0x598000c0
 #define ROM_BOOT_ROMRSV2               0x59801208
 
 #ifndef __ASSEMBLY__
index 79d7ec71489f30402df21f7ebe51af71b52b81d3..fa5e6ae0f2d822f3f559dcba42c53ad3282c4ff2 100644 (file)
 #define SG_PINMON0_CLK_MODE_AXOSEL_20480KHZ    (0x2 << 16)
 #define SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A  (0x3 << 16)
 
-#ifndef __ASSEMBLY__
+#ifdef __ASSEMBLY__
+
+       .macro  set_pinsel, n, value, ra, rd
+       ldr     \ra, =SG_PINSEL_ADDR(\n)
+       ldr     \rd, [\ra]
+       and     \rd, \rd, #SG_PINSEL_MASK(\n)
+       orr     \rd, \rd, #SG_PINSEL_MODE(\n, \value)
+       str     \rd, [\ra]
+       .endm
+
+#else
+
 #include <linux/types.h>
 #include <asm/io.h>
 
index 9d797dbe1ff0997bd37a6e77855da16914a9df23..6b10bdf961c695ca5d2826931659c09c799982ec 100644 (file)
 #define DDRMC_CR161_TODTH_RD(v)                                (((v) & 0xf) << 8)
 #define DDRMC_CR161_TODTH_WR(v)                                ((v) & 0xf)
 
+/* System Reset Controller (SRC) */
+#define SRC_SRSR_SW_RST                                        (0x1 << 18)
+#define SRC_SRSR_RESETB                                        (0x1 << 7)
+#define SRC_SRSR_JTAG_RST                              (0x1 << 5)
+#define SRC_SRSR_WDOG_M4                               (0x1 << 4)
+#define SRC_SRSR_WDOG_A5                               (0x1 << 3)
+#define SRC_SRSR_POR_RST                               (0x1 << 0)
+
 #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
 #include <asm/types.h>
 
index 323f282fb7b953ce854ef434328655861ba76c64..a13da23cf1726c6b2c4b4d22b820dd959060dffa 100644 (file)
@@ -80,6 +80,7 @@ void v7_outer_cache_inval_range(u32 start, u32 end);
 
 int armv7_init_nonsec(void);
 int armv7_update_dt(void *fdt);
+bool armv7_boot_nonsec(void);
 
 /* defined in assembly file */
 unsigned int _nonsec_init(void);
index 5e4789b1452079fee12ff63c923ecdf9bcf17115..11b80fb190ce03165ac505bf4412d485a30b4840 100644 (file)
  *  assembler source.
  */
 
+#include <config.h>
+
 /*
  * Endian independent macros for shifting bytes within registers.
  */
 #ifndef __ARMEB__
-#define pull           lsr
-#define push           lsl
+#define lspull         lsr
+#define lspush         lsl
 #define get_byte_0     lsl #0
 #define get_byte_1     lsr #8
 #define get_byte_2     lsr #16
@@ -29,8 +31,8 @@
 #define put_byte_2     lsl #16
 #define put_byte_3     lsl #24
 #else
-#define pull           lsl
-#define push           lsr
+#define lspull         lsl
+#define lspush         lsr
 #define get_byte_0     lsr #24
 #define get_byte_1     lsr #16
 #define get_byte_2     lsr #8
 #define PLD(code...)
 #endif
 
+       .irp    c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo
+       .macro  ret\c, reg
+#if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__)
+       mov\c   pc, \reg
+#else
+       .ifeqs  "\reg", "lr"
+       bx\c    \reg
+       .else
+       mov\c   pc, \reg
+       .endif
+#endif
+       .endm
+       .endr
+
 /*
- * Cache alligned
+ * Cache aligned, used for optimized memcpy/memset
+ * In the kernel this is only enabled for Feroceon CPU's...
+ * We disable it especially for Thumb builds since those instructions
+ * are not made in a Thumb ready way...
  */
+#ifdef CONFIG_SYS_THUMB_BUILD
+#define CALGN(code...)
+#else
 #define CALGN(code...) code
+#endif
index c69d0646f58099caf2e9f664bcaf0ce4cc30fe7e..438f128326a67a6c5237df32a0f392efdabee1c7 100644 (file)
@@ -17,6 +17,14 @@ struct arch_global_data {
 #if defined(CONFIG_FSL_ESDHC)
        u32 sdhc_clk;
 #endif
+
+#if defined(CONFIG_U_QE)
+       u32 qe_clk;
+       u32 brg_clk;
+       uint mp_alloc_base;
+       uint mp_alloc_top;
+#endif /* CONFIG_U_QE */
+
 #ifdef CONFIG_AT91FAMILY
        /* "static data" needed by at91's clock.c */
        unsigned long   cpu_clk_rate_hz;
index a8ca49c343f8984d0b227963f203a2e9acc9ea38..e0a49be4ff79de66abdb22e420a94b354a83e89f 100644 (file)
@@ -182,6 +182,11 @@ typedef u64 iomux_v3_cfg_t;
 void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad);
 void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
                                     unsigned count);
+/*
+* Set bits for general purpose registers
+*/
+void imx_iomux_set_gpr_register(int group, int start_bit,
+                                        int num_bits, int value);
 
 /* macros for declaring and using pinmux array */
 #if defined(CONFIG_MX6QDL)
index 2c7e829994bae4767e6ede46ef43548af85a0aa9..a5e2fd9d6cc307f194b659b844600ac5670bb4dd 100644 (file)
@@ -25,5 +25,6 @@ int clk_set_parent(struct clk *clk, struct clk *parent);
 struct clk *clk_get_parent(struct clk *clk);
 int clk_sdio_enable(void *base, u32 rate, u32 *actual_ratep);
 int clk_bsc_enable(void *base);
+int clk_usb_otg_enable(void *base);
 
 #endif
index 541b4432549bf38b8c99504b6299ee4d87559e98..1c8c4251ee0cedde2a24d459be2109b9a1df749f 100644 (file)
@@ -193,7 +193,7 @@ lr  .req    x30
 0 :    wfi
        ldr     \wreg2, [\xreg1, GICC_AIAR]
        str     \wreg2, [\xreg1, GICC_AEOIR]
-       and     \wreg2, \wreg2, #3ff
+       and     \wreg2, \wreg2, #0x3ff
        cbnz    \wreg2, 0b
 .endm
 #endif
index 183823404d52099561d768fbaa32594edd9583a8..323952f5f1b4f5e77f83d4c2a49190ce1d5a5ec0 100644 (file)
@@ -540,6 +540,7 @@ extern struct prcm_regs const omap5_es2_prcm;
 extern struct prcm_regs const omap4_prcm;
 extern struct prcm_regs const dra7xx_prcm;
 extern struct dplls const **dplls_data;
+extern struct dplls dra7xx_dplls;
 extern struct vcores_data const **omap_vcores;
 extern const u32 sys_clk_array[8];
 extern struct omap_sys_ctrl_regs const **ctrl;
@@ -547,6 +548,8 @@ extern struct omap_sys_ctrl_regs const omap4_ctrl;
 extern struct omap_sys_ctrl_regs const omap5_ctrl;
 extern struct omap_sys_ctrl_regs const dra7xx_ctrl;
 
+extern struct pmic_data tps659038;
+
 void hw_data_init(void);
 
 const struct dpll_params *get_mpu_dpll_params(struct dplls const *);
diff --git a/arch/arm/include/asm/pcie_layerscape.h b/arch/arm/include/asm/pcie_layerscape.h
new file mode 100644 (file)
index 0000000..fb08578
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __PCIE_LAYERSCAPE_H_
+#define __PCIE_LAYERSCAPE_H_
+
+void pci_init_board(void);
+void ft_pcie_setup(void *blob, bd_t *bd);
+
+#endif
index 74111dc359d1a6e06758c6ed08729c54ed402ac1..835ca7e4b683ff18151c07a8f39cc56a12d502f0 100644 (file)
  * code for more information.
  */
 int smh_load(const char *fname, void *memp, int avail, int verbose);
-int smh_read(int fd, void *memp, int len);
-int smh_open(const char *fname, char *modestr);
-int smh_close(int fd);
-int smh_len_fd(int fd);
-int smh_len(const char *fname);
+long smh_len(const char *fname);
 
 #endif /* __SEMIHOSTING_H__ */
index ca2d44faf4e935e7f80f7acff6adb5e96192d5cf..89f22946895301b09a183ead75503ae4dff0f1b2 100644 (file)
@@ -201,7 +201,7 @@ enum {
  * \param size         size of memory region to change
  * \param option       dcache option to select
  */
-void mmu_set_region_dcache_behaviour(u32 start, int size,
+void mmu_set_region_dcache_behaviour(phys_addr_t start, size_t size,
                                     enum dcache_option option);
 
 /**
@@ -212,6 +212,11 @@ void mmu_set_region_dcache_behaviour(u32 start, int size,
  */
 void mmu_page_table_flush(unsigned long start, unsigned long stop);
 
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+void noncached_init(void);
+phys_addr_t noncached_alloc(size_t size, size_t align);
+#endif /* CONFIG_SYS_NONCACHED_MEMORY */
+
 #endif /* __ASSEMBLY__ */
 
 #define arch_align_stack(x) (x)
diff --git a/arch/arm/include/debug/8250.S b/arch/arm/include/debug/8250.S
new file mode 100644 (file)
index 0000000..d47a892
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * arch/arm/include/debug/8250.S
+ *
+ *  Copyright (C) 1994-2013 Russell King
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <linux/serial_reg.h>
+
+               .macro  addruart, rp, rv, tmp
+               ldr     \rp, =CONFIG_DEBUG_UART_PHYS
+               ldr     \rv, =CONFIG_DEBUG_UART_VIRT
+               .endm
+
+#ifdef CONFIG_DEBUG_UART_8250_WORD
+               .macro  store, rd, rx:vararg
+               str     \rd, \rx
+               .endm
+
+               .macro  load, rd, rx:vararg
+               ldr     \rd, \rx
+               .endm
+#else
+               .macro  store, rd, rx:vararg
+               strb    \rd, \rx
+               .endm
+
+               .macro  load, rd, rx:vararg
+               ldrb    \rd, \rx
+               .endm
+#endif
+
+#define UART_SHIFT CONFIG_DEBUG_UART_8250_SHIFT
+
+               .macro  senduart,rd,rx
+               store   \rd, [\rx, #UART_TX << UART_SHIFT]
+               .endm
+
+               .macro  busyuart,rd,rx
+1002:          load    \rd, [\rx, #UART_LSR << UART_SHIFT]
+               and     \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE
+               teq     \rd, #UART_LSR_TEMT | UART_LSR_THRE
+               bne     1002b
+               .endm
+
+               .macro  waituart,rd,rx
+#ifdef CONFIG_DEBUG_UART_8250_FLOW_CONTROL
+1001:          load    \rd, [\rx, #UART_MSR << UART_SHIFT]
+               tst     \rd, #UART_MSR_CTS
+               beq     1001b
+#endif
+               .endm
index 1ef240047f48d067748a42b08ed975ec96966e65..d74e4b8415f152061d50614185617749478a5e41 100644 (file)
@@ -48,6 +48,8 @@ ifndef CONFIG_ARM64
 obj-y  += cache-cp15.o
 endif
 
+obj-$(CONFIG_DEBUG_LL) += debug.o
+
 # For EABI conformant tool chains, provide eabi_compat()
 ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS)))
 extra-y        += eabi_compat.o
index cdb19751058815b19e274ba32c7293690c5ce99f..0c1298a31e733c3e528f7d49a70088f27deece86 100644 (file)
@@ -15,7 +15,6 @@
 #include <common.h>
 #include <command.h>
 #include <image.h>
-#include <vxworks.h>
 #include <u-boot/zlib.h>
 #include <asm/byteorder.h>
 #include <libfdt.h>
@@ -238,6 +237,26 @@ static void boot_prep_linux(bootm_headers_t *images)
        }
 }
 
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
+bool armv7_boot_nonsec(void)
+{
+       char *s = getenv("bootm_boot_mode");
+#ifdef CONFIG_ARMV7_BOOT_SEC_DEFAULT
+       bool nonsec = false;
+#else
+       bool nonsec = true;
+#endif
+
+       if (s && !strcmp(s, "sec"))
+               nonsec = false;
+
+       if (s && !strcmp(s, "nonsec"))
+               nonsec = true;
+
+       return nonsec;
+}
+#endif
+
 /* Subcommand: GO */
 static void boot_jump_linux(bootm_headers_t *images, int flag)
 {
@@ -286,12 +305,13 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
 
        if (!fake) {
 #if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
-               armv7_init_nonsec();
-               secure_ram_addr(_do_nonsec_entry)(kernel_entry,
-                                                 0, machid, r2);
-#else
-               kernel_entry(0, machid, r2);
+               if (armv7_boot_nonsec()) {
+                       armv7_init_nonsec();
+                       secure_ram_addr(_do_nonsec_entry)(kernel_entry,
+                                                         0, machid, r2);
+               } else
 #endif
+                       kernel_entry(0, machid, r2);
        }
 #endif
 }
index 2155fe818717163caaa59428dbd842e0ffd926db..0291afa7bd531088f441808e9f9767cceb4d774b 100644 (file)
@@ -47,15 +47,15 @@ __weak void mmu_page_table_flush(unsigned long start, unsigned long stop)
        debug("%s: Warning: not implemented\n", __func__);
 }
 
-void mmu_set_region_dcache_behaviour(u32 start, int size,
+void mmu_set_region_dcache_behaviour(phys_addr_t start, size_t size,
                                     enum dcache_option option)
 {
        u32 *page_table = (u32 *)gd->arch.tlb_addr;
-       u32 upto, end;
+       unsigned long upto, end;
 
        end = ALIGN(start + size, MMU_SECTION_SIZE) >> MMU_SECTION_SHIFT;
        start = start >> MMU_SECTION_SHIFT;
-       debug("%s: start=%x, size=%x, option=%d\n", __func__, start, size,
+       debug("%s: start=%pa, size=%zu, option=%d\n", __func__, &start, size,
              option);
        for (upto = start; upto < end; upto++)
                set_section_dcache(upto, option);
index 4e597a4c1d16281a7efbaa2f15ca339db0109835..9cedeac6d641eb7b8548fb8571bcd6a261388fdb 100644 (file)
@@ -8,10 +8,11 @@
 /* for now: just dummy functions to satisfy the linker */
 
 #include <common.h>
+#include <malloc.h>
 
 __weak void flush_cache(unsigned long start, unsigned long size)
 {
-#if defined(CONFIG_ARM1136)
+#if defined(CONFIG_CPU_ARM1136)
 
 #if !defined(CONFIG_SYS_ICACHE_OFF)
        asm("mcr p15, 0, r1, c7, c5, 0"); /* invalidate I cache */
@@ -21,14 +22,14 @@ __weak void flush_cache(unsigned long start, unsigned long size)
        asm("mcr p15, 0, r1, c7, c14, 0"); /* Clean+invalidate D cache */
 #endif
 
-#endif /* CONFIG_ARM1136 */
+#endif /* CONFIG_CPU_ARM1136 */
 
-#ifdef CONFIG_ARM926EJS
+#ifdef CONFIG_CPU_ARM926EJS
        /* test and clean, page 2-23 of arm926ejs manual */
        asm("0: mrc p15, 0, r15, c7, c10, 3\n\t" "bne 0b\n" : : : "memory");
        /* disable write buffer as well (page 2-22) */
        asm("mcr p15, 0, %0, c7, c10, 4" : : "r" (0));
-#endif /* CONFIG_ARM926EJS */
+#endif /* CONFIG_CPU_ARM926EJS */
        return;
 }
 
@@ -49,3 +50,46 @@ __weak void enable_caches(void)
 {
        puts("WARNING: Caches not enabled\n");
 }
+
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+/*
+ * Reserve one MMU section worth of address space below the malloc() area that
+ * will be mapped uncached.
+ */
+static unsigned long noncached_start;
+static unsigned long noncached_end;
+static unsigned long noncached_next;
+
+void noncached_init(void)
+{
+       phys_addr_t start, end;
+       size_t size;
+
+       end = ALIGN(mem_malloc_start, MMU_SECTION_SIZE) - MMU_SECTION_SIZE;
+       size = ALIGN(CONFIG_SYS_NONCACHED_MEMORY, MMU_SECTION_SIZE);
+       start = end - size;
+
+       debug("mapping memory %pa-%pa non-cached\n", &start, &end);
+
+       noncached_start = start;
+       noncached_end = end;
+       noncached_next = start;
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+       mmu_set_region_dcache_behaviour(noncached_start, size, DCACHE_OFF);
+#endif
+}
+
+phys_addr_t noncached_alloc(size_t size, size_t align)
+{
+       phys_addr_t next = ALIGN(noncached_next, align);
+
+       if (next >= noncached_end || (noncached_end - next) < size)
+               return 0;
+
+       debug("allocated %zu bytes of uncached memory @%pa\n", size, &next);
+       noncached_next = next + size;
+
+       return next;
+}
+#endif /* CONFIG_SYS_NONCACHED_MEMORY */
index 29cdad0f70716a85e260a124b73f63746b484b80..22df3e5b832c31a86cab5bbd2902b83c34a84033 100644 (file)
@@ -78,7 +78,7 @@ clr_gd:
        strlo   r0, [r1]                /* clear 32-bit GD word */
        addlo   r1, r1, #4              /* move to next */
        blo     clr_gd
-#if defined(CONFIG_SYS_MALLOC_F_LEN) && !defined(CONFIG_SPL_BUILD)
+#if defined(CONFIG_SYS_MALLOC_F_LEN)
        sub     sp, sp, #CONFIG_SYS_MALLOC_F_LEN
        str     sp, [r9, #GD_MALLOC_BASE]
 #endif
@@ -104,6 +104,11 @@ clr_gd:
        ldr     r0, [r9, #GD_RELOCADDR]         /* r0 = gd->relocaddr */
        b       relocate_code
 here:
+/*
+ * now relocate vectors
+ */
+
+       bl      relocate_vectors
 
 /* Set up final (full) environment */
 
diff --git a/arch/arm/lib/debug.S b/arch/arm/lib/debug.S
new file mode 100644 (file)
index 0000000..760ba74
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ *  linux/arch/arm/kernel/debug.S
+ *
+ *  Copyright (C) 1994-1999 Russell King
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ *  32-bit debugging code
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+
+               .text
+
+/*
+ * Some debugging routines (useful if you've got MM problems and
+ * printk isn't working).  For DEBUGGING ONLY!!!  Do not leave
+ * references to these in a production kernel!
+ */
+
+#if !defined(CONFIG_DEBUG_SEMIHOSTING)
+#include CONFIG_DEBUG_LL_INCLUDE
+#endif
+
+#ifdef CONFIG_MMU
+               .macro  addruart_current, rx, tmp1, tmp2
+               addruart        \tmp1, \tmp2, \rx
+               mrc             p15, 0, \rx, c1, c0
+               tst             \rx, #1
+               moveq           \rx, \tmp1
+               movne           \rx, \tmp2
+               .endm
+
+#else /* !CONFIG_MMU */
+               .macro  addruart_current, rx, tmp1, tmp2
+               addruart        \rx, \tmp1, \tmp2
+               .endm
+
+#endif /* CONFIG_MMU */
+
+/*
+ * Useful debugging routines
+ */
+ENTRY(printhex8)
+               mov     r1, #8
+               b       printhex
+ENDPROC(printhex8)
+
+ENTRY(printhex4)
+               mov     r1, #4
+               b       printhex
+ENDPROC(printhex4)
+
+ENTRY(printhex2)
+               mov     r1, #2
+printhex:      adr     r2, hexbuf
+               add     r3, r2, r1
+               mov     r1, #0
+               strb    r1, [r3]
+1:             and     r1, r0, #15
+               mov     r0, r0, lsr #4
+               cmp     r1, #10
+               addlt   r1, r1, #'0'
+               addge   r1, r1, #'a' - 10
+               strb    r1, [r3, #-1]!
+               teq     r3, r2
+               bne     1b
+               mov     r0, r2
+               b       printascii
+ENDPROC(printhex2)
+
+hexbuf:                .space 16
+
+               .ltorg
+
+#ifndef CONFIG_DEBUG_SEMIHOSTING
+
+ENTRY(printascii)
+               addruart_current r3, r1, r2
+               b       2f
+1:             waituart r2, r3
+               senduart r1, r3
+               busyuart r2, r3
+               teq     r1, #'\n'
+               moveq   r1, #'\r'
+               beq     1b
+2:             teq     r0, #0
+               ldrneb  r1, [r0], #1
+               teqne   r1, #0
+               bne     1b
+               mov     pc, lr
+ENDPROC(printascii)
+
+ENTRY(printch)
+               addruart_current r3, r1, r2
+               mov     r1, r0
+               mov     r0, #0
+               b       1b
+ENDPROC(printch)
+
+#ifdef CONFIG_MMU
+ENTRY(debug_ll_addr)
+               addruart r2, r3, ip
+               str     r2, [r0]
+               str     r3, [r1]
+               mov     pc, lr
+ENDPROC(debug_ll_addr)
+#endif
+
+#else
+
+ENTRY(printascii)
+               mov     r1, r0
+               mov     r0, #0x04               @ SYS_WRITE0
+       ARM(    svc     #0x123456       )
+       THUMB(  svc     #0xab           )
+               mov     pc, lr
+ENDPROC(printascii)
+
+ENTRY(printch)
+               adr     r1, hexbuf
+               strb    r0, [r1]
+               mov     r0, #0x03               @ SYS_WRITEC
+       ARM(    svc     #0x123456       )
+       THUMB(  svc     #0xab           )
+               mov     pc, lr
+ENDPROC(printch)
+
+ENTRY(debug_ll_addr)
+               mov     r2, #0
+               str     r2, [r0]
+               str     r2, [r1]
+               mov     pc, lr
+ENDPROC(debug_ll_addr)
+
+#endif
index f655256b5d1514f949b880c322cb225a73cd538b..eeaf0035297efb010dbf14e3848e619f5f2b6d50 100644 (file)
  *  published by the Free Software Foundation.
  */
 
+#include <linux/linkage.h>
 #include <asm/assembler.h>
 
+#ifdef CONFIG_SYS_THUMB_BUILD
+#define W(instr)       instr.w
+#else
 #define W(instr)       instr
+#endif
 
 #define LDR1W_SHIFT    0
 #define STR1W_SHIFT    0
@@ -30,7 +35,7 @@
        .endm
 
        .macro ldr1b ptr reg cond=al abort
-       ldr\cond\()b \reg, [\ptr], #1
+       ldrb\cond\() \reg, [\ptr], #1
        .endm
 
        .macro str1w ptr reg abort
@@ -42,7 +47,7 @@
        .endm
 
        .macro str1b ptr reg cond=al abort
-       str\cond\()b \reg, [\ptr], #1
+       strb\cond\() \reg, [\ptr], #1
        .endm
 
        .macro enter reg1 reg2
        .text
 
 /* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
-
-.globl memcpy
-memcpy:
-
+       .syntax unified
+#ifdef CONFIG_SYS_THUMB_BUILD
+       .thumb
+       .thumb_func
+#endif
+ENTRY(memcpy)
                cmp     r0, r1
                moveq   pc, lr
 
@@ -79,7 +86,7 @@ memcpy:
 
        CALGN(  ands    ip, r0, #31             )
        CALGN(  rsb     r3, ip, #32             )
-       CALGN(  sbcnes  r4, r3, r2              )  @ C is always set here
+       CALGN(  sbcsne  r4, r3, r2              )  @ C is always set here
        CALGN(  bcs     2f                      )
        CALGN(  adr     r4, 6f                  )
        CALGN(  subs    r2, r2, r3              )  @ C gets set
@@ -178,7 +185,7 @@ memcpy:
 
        CALGN(  ands    ip, r0, #31             )
        CALGN(  rsb     ip, ip, #32             )
-       CALGN(  sbcnes  r4, ip, r2              )  @ C is always set here
+       CALGN(  sbcsne  r4, ip, r2              )  @ C is always set here
        CALGN(  subcc   r2, r2, ip              )
        CALGN(  bcc     15f                     )
 
@@ -193,24 +200,24 @@ memcpy:
 
 12:    PLD(    pld     [r1, #124]              )
 13:            ldr4w   r1, r4, r5, r6, r7, abort=19f
-               mov     r3, lr, pull #\pull
+               mov     r3, lr, lspull #\pull
                subs    r2, r2, #32
                ldr4w   r1, r8, r9, ip, lr, abort=19f
-               orr     r3, r3, r4, push #\push
-               mov     r4, r4, pull #\pull
-               orr     r4, r4, r5, push #\push
-               mov     r5, r5, pull #\pull
-               orr     r5, r5, r6, push #\push
-               mov     r6, r6, pull #\pull
-               orr     r6, r6, r7, push #\push
-               mov     r7, r7, pull #\pull
-               orr     r7, r7, r8, push #\push
-               mov     r8, r8, pull #\pull
-               orr     r8, r8, r9, push #\push
-               mov     r9, r9, pull #\pull
-               orr     r9, r9, ip, push #\push
-               mov     ip, ip, pull #\pull
-               orr     ip, ip, lr, push #\push
+               orr     r3, r3, r4, lspush #\push
+               mov     r4, r4, lspull #\pull
+               orr     r4, r4, r5, lspush #\push
+               mov     r5, r5, lspull #\pull
+               orr     r5, r5, r6, lspush #\push
+               mov     r6, r6, lspull #\pull
+               orr     r6, r6, r7, lspush #\push
+               mov     r7, r7, lspull #\pull
+               orr     r7, r7, r8, lspush #\push
+               mov     r8, r8, lspull #\pull
+               orr     r8, r8, r9, lspush #\push
+               mov     r9, r9, lspull #\pull
+               orr     r9, r9, ip, lspush #\push
+               mov     ip, ip, lspull #\pull
+               orr     ip, ip, lr, lspush #\push
                str8w   r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
                bge     12b
        PLD(    cmn     r2, #96                 )
@@ -221,10 +228,10 @@ memcpy:
 14:            ands    ip, r2, #28
                beq     16f
 
-15:            mov     r3, lr, pull #\pull
+15:            mov     r3, lr, lspull #\pull
                ldr1w   r1, lr, abort=21f
                subs    ip, ip, #4
-               orr     r3, r3, lr, push #\push
+               orr     r3, r3, lr, lspush #\push
                str1w   r0, r3, abort=21f
                bgt     15b
        CALGN(  cmp     r2, #0                  )
@@ -241,3 +248,24 @@ memcpy:
 17:            forward_copy_shift      pull=16 push=16
 
 18:            forward_copy_shift      pull=24 push=8
+
+
+/*
+ * Abort preamble and completion macros.
+ * If a fixup handler is required then those macros must surround it.
+ * It is assumed that the fixup code will handle the private part of
+ * the exit macro.
+ */
+
+       .macro  copy_abort_preamble
+19:    ldmfd   sp!, {r5 - r9}
+       b       21f
+20:    ldmfd   sp!, {r5 - r8}
+21:
+       .endm
+
+       .macro  copy_abort_end
+       ldmfd   sp!, {r4, pc}
+       .endm
+
+ENDPROC(memcpy)
index 0cdf89535ae76c18aa33bf799e917024af3289ec..7208f20dda4bc16b7a226a753ab5d4ad17e5eaec 100644 (file)
@@ -9,32 +9,25 @@
  *
  *  ASM optimised string functions
  */
+#include <linux/linkage.h>
 #include <asm/assembler.h>
 
        .text
        .align  5
-       .word   0
 
-1:     subs    r2, r2, #4              @ 1 do we have enough
-       blt     5f                      @ 1 bytes to align with?
-       cmp     r3, #2                  @ 1
-       strltb  r1, [r0], #1            @ 1
-       strleb  r1, [r0], #1            @ 1
-       strb    r1, [r0], #1            @ 1
-       add     r2, r2, r3              @ 1 (r2 = r2 - (4 - r3))
-/*
- * The pointer is now aligned and the length is adjusted.  Try doing the
- * memset again.
- */
-
-.globl memset
-memset:
+       .syntax unified
+#ifdef CONFIG_SYS_THUMB_BUILD
+       .thumb
+       .thumb_func
+#endif
+ENTRY(memset)
        ands    r3, r0, #3              @ 1 unaligned?
-       bne     1b                      @ 1
+       mov     ip, r0                  @ preserve r0 as return value
+       bne     6f                      @ 1
 /*
- * we know that the pointer in r0 is aligned to a word boundary.
+ * we know that the pointer in ip is aligned to a word boundary.
  */
-       orr     r1, r1, r1, lsl #8
+1:     orr     r1, r1, r1, lsl #8
        orr     r1, r1, r1, lsl #16
        mov     r3, r1
        cmp     r2, #16
@@ -43,29 +36,28 @@ memset:
 #if ! CALGN(1)+0
 
 /*
- * We need an extra register for this loop - save the return address and
- * use the LR
+ * We need 2 extra registers for this loop - use r8 and the LR
  */
-       str     lr, [sp, #-4]!
-       mov     ip, r1
+       stmfd   sp!, {r8, lr}
+       mov     r8, r1
        mov     lr, r1
 
 2:     subs    r2, r2, #64
-       stmgeia r0!, {r1, r3, ip, lr}   @ 64 bytes at a time.
-       stmgeia r0!, {r1, r3, ip, lr}
-       stmgeia r0!, {r1, r3, ip, lr}
-       stmgeia r0!, {r1, r3, ip, lr}
+       stmiage ip!, {r1, r3, r8, lr}   @ 64 bytes at a time.
+       stmiage ip!, {r1, r3, r8, lr}
+       stmiage ip!, {r1, r3, r8, lr}
+       stmiage ip!, {r1, r3, r8, lr}
        bgt     2b
-       ldmeqfd sp!, {pc}               @ Now <64 bytes to go.
+       ldmfdeq sp!, {r8, pc}           @ Now <64 bytes to go.
 /*
  * No need to correct the count; we're only testing bits from now on
  */
        tst     r2, #32
-       stmneia r0!, {r1, r3, ip, lr}
-       stmneia r0!, {r1, r3, ip, lr}
+       stmiane ip!, {r1, r3, r8, lr}
+       stmiane ip!, {r1, r3, r8, lr}
        tst     r2, #16
-       stmneia r0!, {r1, r3, ip, lr}
-       ldr     lr, [sp], #4
+       stmiane ip!, {r1, r3, r8, lr}
+       ldmfd   sp!, {r8, lr}
 
 #else
 
@@ -74,53 +66,63 @@ memset:
  * whole cache lines at once.
  */
 
-       stmfd   sp!, {r4-r7, lr}
+       stmfd   sp!, {r4-r8, lr}
        mov     r4, r1
        mov     r5, r1
        mov     r6, r1
        mov     r7, r1
-       mov     ip, r1
+       mov     r8, r1
        mov     lr, r1
 
        cmp     r2, #96
-       tstgt   r0, #31
+       tstgt   ip, #31
        ble     3f
 
-       and     ip, r0, #31
-       rsb     ip, ip, #32
-       sub     r2, r2, ip
-       movs    ip, ip, lsl #(32 - 4)
-       stmcsia r0!, {r4, r5, r6, r7}
-       stmmiia r0!, {r4, r5}
-       tst     ip, #(1 << 30)
-       mov     ip, r1
-       strne   r1, [r0], #4
+       and     r8, ip, #31
+       rsb     r8, r8, #32
+       sub     r2, r2, r8
+       movs    r8, r8, lsl #(32 - 4)
+       stmiacs ip!, {r4, r5, r6, r7}
+       stmiami ip!, {r4, r5}
+       tst     r8, #(1 << 30)
+       mov     r8, r1
+       strne   r1, [ip], #4
 
 3:     subs    r2, r2, #64
-       stmgeia r0!, {r1, r3-r7, ip, lr}
-       stmgeia r0!, {r1, r3-r7, ip, lr}
+       stmiage ip!, {r1, r3-r8, lr}
+       stmiage ip!, {r1, r3-r8, lr}
        bgt     3b
-       ldmeqfd sp!, {r4-r7, pc}
+       ldmfdeq sp!, {r4-r8, pc}
 
        tst     r2, #32
-       stmneia r0!, {r1, r3-r7, ip, lr}
+       stmiane ip!, {r1, r3-r8, lr}
        tst     r2, #16
-       stmneia r0!, {r4-r7}
-       ldmfd   sp!, {r4-r7, lr}
+       stmiane ip!, {r4-r7}
+       ldmfd   sp!, {r4-r8, lr}
 
 #endif
 
 4:     tst     r2, #8
-       stmneia r0!, {r1, r3}
+       stmiane ip!, {r1, r3}
        tst     r2, #4
-       strne   r1, [r0], #4
+       strne   r1, [ip], #4
 /*
  * When we get here, we've got less than 4 bytes to zero.  We
  * may have an unaligned pointer as well.
  */
 5:     tst     r2, #2
-       strneb  r1, [r0], #1
-       strneb  r1, [r0], #1
+       strbne  r1, [ip], #1
+       strbne  r1, [ip], #1
        tst     r2, #1
-       strneb  r1, [r0], #1
-       mov     pc, lr
+       strbne  r1, [ip], #1
+       ret     lr
+
+6:     subs    r2, r2, #4              @ 1 do we have enough
+       blt     5b                      @ 1 bytes to align with?
+       cmp     r3, #2                  @ 1
+       strblt  r1, [ip], #1            @ 1
+       strble  r1, [ip], #1            @ 1
+       strb    r1, [ip], #1            @ 1
+       add     r2, r2, r3              @ 1 (r2 = r2 - (4 - r3))
+       b       1b
+ENDPROC(memset)
index b4a258ce5c7917ca61bbaa5896036e57673f90d2..92f531452d5435c1adbfce9d4bc80a0e572cdb3f 100644 (file)
 #include <config.h>
 #include <linux/linkage.h>
 
+/*
+ * Default/weak exception vectors relocation routine
+ *
+ * This routine covers the standard ARM cases: normal (0x00000000),
+ * high (0xffff0000) and VBAR. SoCs which do not comply with any of
+ * the standard cases must provide their own, strong, version.
+ */
+
+       .section        .text.relocate_vectors,"ax",%progbits
+       .weak           relocate_vectors
+
+ENTRY(relocate_vectors)
+
+#ifdef CONFIG_HAS_VBAR
+       /*
+        * If the ARM processor has the security extensions,
+        * use VBAR to relocate the exception vectors.
+        */
+       ldr     r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
+       mcr     p15, 0, r0, c12, c0, 0  /* Set VBAR */
+#else
+       /*
+        * Copy the relocated exception vectors to the
+        * correct address
+        * CP15 c1 V bit gives us the location of the vectors:
+        * 0x00000000 or 0xFFFF0000.
+        */
+       ldr     r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
+       mrc     p15, 0, r2, c1, c0, 0   /* V bit (bit[13]) in CP15 c1 */
+       ands    r2, r2, #(1 << 13)
+       ldreq   r1, =0x00000000         /* If V=0 */
+       ldrne   r1, =0xFFFF0000         /* If V=1 */
+       ldmia   r0!, {r2-r8,r10}
+       stmia   r1!, {r2-r8,r10}
+       ldmia   r0!, {r2-r8,r10}
+       stmia   r1!, {r2-r8,r10}
+#endif
+       bx      lr
+
+ENDPROC(relocate_vectors)
+
 /*
  * void relocate_code(addr_moni)
  *
@@ -54,34 +95,6 @@ fixnext:
        cmp     r2, r3
        blo     fixloop
 
-       /*
-        * Relocate the exception vectors
-        */
-#ifdef CONFIG_HAS_VBAR
-       /*
-        * If the ARM processor has the security extensions,
-        * use VBAR to relocate the exception vectors.
-        */
-       ldr     r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
-       mcr     p15, 0, r0, c12, c0, 0  /* Set VBAR */
-#else
-       /*
-        * Copy the relocated exception vectors to the
-        * correct address
-        * CP15 c1 V bit gives us the location of the vectors:
-        * 0x00000000 or 0xFFFF0000.
-        */
-       ldr     r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
-       mrc     p15, 0, r2, c1, c0, 0   /* V bit (bit[13]) in CP15 c1 */
-       ands    r2, r2, #(1 << 13)
-       ldreq   r1, =0x00000000         /* If V=0 */
-       ldrne   r1, =0xFFFF0000         /* If V=1 */
-       ldmia   r0!, {r2-r8,r10}
-       stmia   r1!, {r2-r8,r10}
-       ldmia   r0!, {r2-r8,r10}
-       stmia   r1!, {r2-r8,r10}
-#endif
-
 relocate_done:
 
 #ifdef __XSCALE__
@@ -96,9 +109,9 @@ relocate_done:
        /* ARMv4- don't know bx lr but the assembler fails to see that */
 
 #ifdef __ARM_ARCH_4__
-       mov        pc, lr
+       mov     pc, lr
 #else
-       bx        lr
+       bx      lr
 #endif
 
 ENDPROC(relocate_code)
index cb5dc26ac3fa283ab58c27c2876cddedc94b0efc..fd6d8573f560fd1064f43540fea6b43c2a7ebd07 100644 (file)
@@ -26,9 +26,9 @@
 /*
  * Call the handler
  */
-static int smh_trap(unsigned int sysnum, void *addr)
+static long smh_trap(unsigned int sysnum, void *addr)
 {
-       register int result asm("r0");
+       register long result asm("r0");
 #if defined(CONFIG_ARM64)
        asm volatile ("hlt #0xf000" : "=r" (result) : "0"(sysnum), "r"(addr));
 #else
@@ -39,167 +39,164 @@ static int smh_trap(unsigned int sysnum, void *addr)
 }
 
 /*
- * Open, load a file into memory, and close it. Check that the available space
- * is sufficient to store the entire file. Return the bytes actually read from
- * the file as seen by the read function. The verbose flag enables some extra
- * printing of successful read status.
+ * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
+ * descriptor or -1 on error.
  */
-int smh_load(const char *fname, void *memp, int avail, int verbose)
+static long smh_open(const char *fname, char *modestr)
 {
-       int ret, fd, len;
-
-       ret = -1;
-
-       debug("%s: fname \'%s\', avail %u, memp %p\n", __func__, fname,
-             avail, memp);
-
-       /* Open the file */
-       fd = smh_open(fname, "rb");
-       if (fd == -1)
-               return ret;
+       long fd;
+       unsigned long mode;
+       struct smh_open_s {
+               const char *fname;
+               unsigned long mode;
+               size_t len;
+       } open;
 
-       /* Get the file length */
-       ret = smh_len_fd(fd);
-       if (ret == -1) {
-               smh_close(fd);
-               return ret;
-       }
+       debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
 
-       /* Check that the file will fit in the supplied buffer */
-       if (ret > avail) {
-               printf("%s: ERROR ret %d, avail %u\n", __func__, ret,
-                      avail);
-               smh_close(fd);
-               return ret;
+       /* Check the file mode */
+       if (!(strcmp(modestr, "r"))) {
+               mode = MODE_READ;
+       } else if (!(strcmp(modestr, "rb"))) {
+               mode = MODE_READBIN;
+       } else {
+               printf("%s: ERROR mode \'%s\' not supported\n", __func__,
+                      modestr);
+               return -1;
        }
 
-       len = ret;
-
-       /* Read the file into the buffer */
-       ret = smh_read(fd, memp, len);
-       if (ret == 0) {
-               /* Print successful load information if requested */
-               if (verbose) {
-                       printf("\n%s\n", fname);
-                       printf("    0x%8p dest\n", memp);
-                       printf("    0x%08x size\n", len);
-                       printf("    0x%08x avail\n", avail);
-               }
-       }
+       open.fname = fname;
+       open.len = strlen(fname);
+       open.mode = mode;
 
-       /* Close the file */
-       smh_close(fd);
+       /* Open the file on the host */
+       fd = smh_trap(SYSOPEN, &open);
+       if (fd == -1)
+               printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
+                      fname);
 
-       return ret;
+       return fd;
 }
 
 /*
  * Read 'len' bytes of file into 'memp'. Returns 0 on success, else failure
  */
-int smh_read(int fd, void *memp, int len)
+static long smh_read(long fd, void *memp, size_t len)
 {
-       int ret;
+       long ret;
        struct smh_read_s {
-               int fd;
+               long fd;
                void *memp;
-               int len;
+               size_t len;
        } read;
 
-       debug("%s: fd %d, memp %p, len %d\n", __func__, fd, memp, len);
+       debug("%s: fd %ld, memp %p, len %lu\n", __func__, fd, memp, len);
 
        read.fd = fd;
        read.memp = memp;
        read.len = len;
 
        ret = smh_trap(SYSREAD, &read);
-       if (ret == 0) {
-               return 0;
-       } else {
+       if (ret < 0) {
                /*
                 * The ARM handler allows for returning partial lengths,
                 * but in practice this never happens so rather than create
                 * hard to maintain partial read loops and such, just fail
                 * with an error message.
                 */
-               printf("%s: ERROR ret %d, fd %d, len %u memp %p\n",
+               printf("%s: ERROR ret %ld, fd %ld, len %lu memp %p\n",
                       __func__, ret, fd, len, memp);
+               return -1;
        }
-       return ret;
+
+       return 0;
 }
 
 /*
- * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
- * descriptor or -1 on error.
+ * Close the file using the file descriptor
  */
-int smh_open(const char *fname, char *modestr)
+static long smh_close(long fd)
 {
-       int ret, fd, mode;
-       struct smh_open_s {
-               const char *fname;
-               unsigned int mode;
-               unsigned int len;
-       } open;
+       long ret;
 
-       debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
-
-       ret = -1;
+       debug("%s: fd %ld\n", __func__, fd);
 
-       /* Check the file mode */
-       if (!(strcmp(modestr, "r"))) {
-               mode = MODE_READ;
-       } else if (!(strcmp(modestr, "rb"))) {
-               mode = MODE_READBIN;
-       } else {
-               printf("%s: ERROR mode \'%s\' not supported\n", __func__,
-                      modestr);
-               return ret;
-       }
-
-       open.fname = fname;
-       open.len = strlen(fname);
-       open.mode = mode;
-
-       /* Open the file on the host */
-       fd = smh_trap(SYSOPEN, &open);
-       if (fd == -1)
-               printf("%s: ERROR fd %d for file \'%s\'\n", __func__, fd,
-                      fname);
+       ret = smh_trap(SYSCLOSE, &fd);
+       if (ret == -1)
+               printf("%s: ERROR fd %ld\n", __func__, fd);
 
-       return fd;
+       return ret;
 }
 
 /*
- * Close the file using the file descriptor
+ * Get the file length from the file descriptor
  */
-int smh_close(int fd)
+static long smh_len_fd(long fd)
 {
-       int ret;
-       long fdlong;
+       long ret;
 
-       debug("%s: fd %d\n", __func__, fd);
+       debug("%s: fd %ld\n", __func__, fd);
 
-       fdlong = (long)fd;
-       ret = smh_trap(SYSCLOSE, &fdlong);
+       ret = smh_trap(SYSFLEN, &fd);
        if (ret == -1)
-               printf("%s: ERROR fd %d\n", __func__, fd);
+               printf("%s: ERROR ret %ld, fd %ld\n", __func__, ret, fd);
 
        return ret;
 }
 
 /*
- * Get the file length from the file descriptor
+ * Open, load a file into memory, and close it. Check that the available space
+ * is sufficient to store the entire file. Return the bytes actually read from
+ * the file as seen by the read function. The verbose flag enables some extra
+ * printing of successful read status.
  */
-int smh_len_fd(int fd)
+int smh_load(const char *fname, void *memp, int avail, int verbose)
 {
-       int ret;
-       long fdlong;
+       long ret;
+       long fd;
+       size_t len;
 
-       debug("%s: fd %d\n", __func__, fd);
+       ret = -1;
 
-       fdlong = (long)fd;
-       ret = smh_trap(SYSFLEN, &fdlong);
-       if (ret == -1)
-               printf("%s: ERROR ret %d\n", __func__, ret);
+       debug("%s: fname \'%s\', avail %u, memp %p\n", __func__, fname,
+             avail, memp);
+
+       /* Open the file */
+       fd = smh_open(fname, "rb");
+       if (fd == -1)
+               return -1;
+
+       /* Get the file length */
+       ret = smh_len_fd(fd);
+       if (ret == -1) {
+               smh_close(fd);
+               return -1;
+       }
+
+       /* Check that the file will fit in the supplied buffer */
+       if (ret > avail) {
+               printf("%s: ERROR ret %ld, avail %u\n", __func__, ret,
+                      avail);
+               smh_close(fd);
+               return -1;
+       }
+
+       len = ret;
+
+       /* Read the file into the buffer */
+       ret = smh_read(fd, memp, len);
+       if (ret == 0) {
+               /* Print successful load information if requested */
+               if (verbose) {
+                       printf("\n%s\n", fname);
+                       printf("    0x%8p dest\n", memp);
+                       printf("    0x%08lx size\n", len);
+                       printf("    0x%08x avail\n", avail);
+               }
+       }
+
+       /* Close the file */
+       smh_close(fd);
 
        return ret;
 }
@@ -207,26 +204,32 @@ int smh_len_fd(int fd)
 /*
  * Get the file length from the filename
  */
-int smh_len(const char *fname)
+long smh_len(const char *fname)
 {
-       int ret, fd, len;
+       long ret;
+       long fd;
+       long len;
 
        debug("%s: file \'%s\'\n", __func__, fname);
 
        /* Open the file */
        fd = smh_open(fname, "rb");
-       if (fd == -1)
+       if (fd < 0)
                return fd;
 
        /* Get the file length */
        len = smh_len_fd(fd);
+       if (len < 0) {
+               smh_close(fd);
+               return len;
+       }
 
        /* Close the file */
        ret = smh_close(fd);
-       if (ret == -1)
+       if (ret < 0)
                return ret;
 
-       debug("%s: returning len %d\n", __func__, len);
+       debug("%s: returning len %ld\n", __func__, len);
 
        /* Return the file length (or -1 error indication) */
        return len;
diff --git a/arch/avr32/Makefile b/arch/avr32/Makefile
new file mode 100644 (file)
index 0000000..e9b3184
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/avr32/cpu/start.o
+
+libs-y += arch/avr32/cpu/
+libs-y += arch/avr32/lib/
index 5e117212574af315bb3df2b3950271c8ea5bd0ce..00cede3fd981be7be855df45f0a84ef727c4edc1 100644 (file)
@@ -16,3 +16,5 @@ obj-y                 += cache.o
 obj-y                  += interrupts.o
 obj-$(CONFIG_PORTMUX_PIO) += portmux-pio.o
 obj-$(CONFIG_PORTMUX_GPIO) += portmux-gpio.o
+
+obj-$(if $(filter at32ap700x,$(SOC)),y) += at32ap700x/
index d5dbe3b908f9ef08fdaea5b1d213245b4ef044d7..0fc6088e3ee10e23584df8203a92ad39dfd15b33 100644 (file)
@@ -72,7 +72,7 @@ unsigned long __gclk_set_rate(unsigned int id, enum gclk_parent parent,
                sm_writel(PM_GCCTRL(id), parent | SM_BIT(CEN));
                rate = parent_rate;
        } else {
-               divider = min(255, divider / 2 - 1);
+               divider = min(255UL, divider / 2 - 1);
                sm_writel(PM_GCCTRL(id), parent | SM_BIT(CEN) | SM_BIT(DIVEN)
                                | SM_BF(DIV, divider));
                rate = parent_rate / (2 * (divider + 1));
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile
new file mode 100644 (file)
index 0000000..787475e
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/blackfin/cpu/start.o
+
+libs-y += arch/blackfin/cpu/
+libs-y += arch/blackfin/lib/
index 2e640afc453a853b32b6f064a5a4688bbba6a1ff..fde54eaa3e55cefb8858214fcb1c3228fea77c6e 100644 (file)
@@ -955,6 +955,7 @@ check_hibernation(ADI_BOOT_DATA *bs, u16 vr_ctl, bool put_into_srfs)
                uint32_t *hibernate_magic = 0;
 
                SSYNC();
+               /* cppcheck-suppress nullPointer */
                if (hibernate_magic[0] == 0xDEADBEEF) {
                        serial_putc('c');
                        bfin_write_EVT15(hibernate_magic[1]);
index b8be3182a0906ff309ff8cb3ccc744b95fe8d21a..b0abeda90aec71025aa8568426bc93b7620d28bc 100644 (file)
@@ -168,7 +168,7 @@ static int jtag_getc(struct stdio_dev *dev)
                inbound_len = emudat;
        } else {
                /* store the bytes */
-               leftovers_len = min(4, inbound_len);
+               leftovers_len = min((size_t)4, inbound_len);
                inbound_len -= leftovers_len;
                leftovers = emudat;
        }
index 836658a1c4f4a7c07a458aa1dfffe295097ff5fa..73cbfa2cc8bf418da10c0c220b52f5cefdb7d1aa 100644 (file)
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_ARCH_MISC_INIT
 
+#define CONFIG_CPU CONFIG_BFIN_CPU
+
 #endif
index 69f08bc7efb526a85f3edeab3a184944d178cb72..aadb0d2d4ee42ac3a7e494e14670697c006854de 100644 (file)
 
 #ifdef __KERNEL__
 
+#include <linux/compiler.h>
 #include <asm/blackfin.h>
 
-#define __iomem
-
 static inline void sync(void)
 {
        SSYNC();
index f0a061b47ab1ee5555294cc858f4c6e8be415059..211df7b430c246b28b3977d6ecfadced44dac0ef 100644 (file)
@@ -121,7 +121,7 @@ static void dma_calc_size(unsigned long ldst, unsigned long lsrc, size_t count,
        *dshift = WDSIZE_P;
 #endif
 
-       *bpos = min(limit, ffs(ldst | lsrc | count)) - 1;
+       *bpos = min(limit, (unsigned long)ffs(ldst | lsrc | count)) - 1;
 }
 
 /* This version misbehaves for count values of 0 and 2^16+.
@@ -157,7 +157,7 @@ void dma_memcpy_nocache(void *dst, const void *src, size_t count)
 
 #ifdef PSIZE
        /* The max memory DMA peripheral transfer size is 4 bytes. */
-       dsize |= min(2, bpos) << PSIZE_P;
+       dsize |= min(2UL, bpos) << PSIZE_P;
 #endif
 
        /* Copy sram functions from sdram to sram */
index 5374b4d6ebd6deece80c51c9356f51b3ecb4133e..78c98ed2d0cc7ecebfce23fe3bea877ff3871242 100644 (file)
@@ -19,9 +19,6 @@ config TARGET_COBRA5272
 config TARGET_EB_CPU5282
        bool "Support eb_cpu5282"
 
-config TARGET_TASREG
-       bool "Support TASREG"
-
 config TARGET_M5208EVBE
        bool "Support M5208EVBE"
 
@@ -75,7 +72,6 @@ endchoice
 source "board/BuS/eb_cpu5282/Kconfig"
 source "board/astro/mcf5373l/Kconfig"
 source "board/cobra5272/Kconfig"
-source "board/esd/tasreg/Kconfig"
 source "board/freescale/m5208evbe/Kconfig"
 source "board/freescale/m52277evb/Kconfig"
 source "board/freescale/m5235evb/Kconfig"
diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile
new file mode 100644 (file)
index 0000000..aa3d2fa
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/m68k/cpu/$(CPU)/start.o
+
+libs-y += arch/m68k/cpu/$(CPU)/
+libs-y += arch/m68k/lib/
diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
new file mode 100644 (file)
index 0000000..ae4adc2
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/microblaze/cpu/start.o
+
+libs-y += arch/microblaze/cpu/
+libs-y += arch/microblaze/lib/
index 9b72bab56b64884543e1527a2186b388f7d460ca..4991da2226505dd73c18d9df472d3f786e442046 100644 (file)
@@ -4,6 +4,10 @@ menu "MIPS architecture"
 config SYS_ARCH
        default "mips"
 
+config SYS_CPU
+       default "mips32" if CPU_MIPS32_R1 || CPU_MIPS32_R2
+       default "mips64" if CPU_MIPS64_R1 || CPU_MIPS64_R2
+
 config USE_PRIVATE_LIBGCC
        default y
 
@@ -12,21 +16,39 @@ choice
 
 config TARGET_QEMU_MIPS
        bool "Support qemu-mips"
+       select SUPPORTS_BIG_ENDIAN
+       select SUPPORTS_LITTLE_ENDIAN
+       select SUPPORTS_CPU_MIPS32_R1
+       select SUPPORTS_CPU_MIPS32_R2
+       select SUPPORTS_CPU_MIPS64_R1
+       select SUPPORTS_CPU_MIPS64_R2
 
 config TARGET_MALTA
        bool "Support malta"
+       select SUPPORTS_BIG_ENDIAN
+       select SUPPORTS_LITTLE_ENDIAN
+       select SUPPORTS_CPU_MIPS32_R1
+       select SUPPORTS_CPU_MIPS32_R2
 
 config TARGET_VCT
        bool "Support vct"
+       select SUPPORTS_BIG_ENDIAN
+       select SUPPORTS_CPU_MIPS32_R1
+       select SUPPORTS_CPU_MIPS32_R2
 
 config TARGET_DBAU1X00
        bool "Support dbau1x00"
+       select SUPPORTS_BIG_ENDIAN
+       select SUPPORTS_LITTLE_ENDIAN
+       select SUPPORTS_CPU_MIPS32_R1
+       select SUPPORTS_CPU_MIPS32_R2
 
 config TARGET_PB1X00
        bool "Support pb1x00"
+       select SUPPORTS_LITTLE_ENDIAN
+       select SUPPORTS_CPU_MIPS32_R1
+       select SUPPORTS_CPU_MIPS32_R2
 
-config TARGET_QEMU_MIPS64
-       bool "Support qemu-mips64"
 
 endchoice
 
@@ -36,4 +58,88 @@ source "board/micronas/vct/Kconfig"
 source "board/pb1x00/Kconfig"
 source "board/qemu-mips/Kconfig"
 
+if MIPS
+
+choice
+       prompt "Endianness selection"
+       help
+         Some MIPS boards can be configured for either little or big endian
+         byte order. These modes require different U-Boot images. In general there
+         is one preferred byteorder for a particular system but some systems are
+         just as commonly used in the one or the other endianness.
+
+config SYS_BIG_ENDIAN
+       bool "Big endian"
+       depends on SUPPORTS_BIG_ENDIAN
+
+config SYS_LITTLE_ENDIAN
+       bool "Little endian"
+       depends on SUPPORTS_LITTLE_ENDIAN
+
+endchoice
+
+choice
+       prompt "CPU selection"
+       default CPU_MIPS32_R2
+
+config CPU_MIPS32_R1
+       bool "MIPS32 Release 1"
+       depends on SUPPORTS_CPU_MIPS32_R1
+       select 32BIT
+       help
+         Choose this option to build an U-Boot for release 1 or later of the
+         MIPS32 architecture.
+
+config CPU_MIPS32_R2
+       bool "MIPS32 Release 2"
+       depends on SUPPORTS_CPU_MIPS32_R2
+       select 32BIT
+       help
+         Choose this option to build an U-Boot for release 2 or later of the
+         MIPS32 architecture.
+
+config CPU_MIPS64_R1
+       bool "MIPS64 Release 1"
+       depends on SUPPORTS_CPU_MIPS64_R1
+       select 64BIT
+       help
+         Choose this option to build a kernel for release 1 or later of the
+         MIPS64 architecture.
+
+config CPU_MIPS64_R2
+       bool "MIPS64 Release 2"
+       depends on SUPPORTS_CPU_MIPS64_R2
+       select 64BIT
+       help
+         Choose this option to build a kernel for release 2 or later of the
+         MIPS64 architecture.
+
+endchoice
+
+config SUPPORTS_BIG_ENDIAN
+       bool
+
+config SUPPORTS_LITTLE_ENDIAN
+       bool
+
+config SUPPORTS_CPU_MIPS32_R1
+       bool
+
+config SUPPORTS_CPU_MIPS32_R2
+       bool
+
+config SUPPORTS_CPU_MIPS64_R1
+       bool
+
+config SUPPORTS_CPU_MIPS64_R2
+       bool
+
+config 32BIT
+       bool
+
+config 64BIT
+       bool
+
+endif
+
 endmenu
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
new file mode 100644 (file)
index 0000000..1907b57
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/mips/cpu/$(CPU)/start.o
+
+libs-y += arch/mips/cpu/$(CPU)/
+libs-y += arch/mips/lib/
index a2d07aff1b1d5209fbb925b4a4399ee707e365e2..4dc88f4d51f1903cab3658f5a16386be137df6ca 100644 (file)
@@ -5,25 +5,41 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-ifeq ($(CROSS_COMPILE),)
-CROSS_COMPILE := mips_4KC-
+ifdef CONFIG_SYS_BIG_ENDIAN
+32bit-emul             := elf32btsmip
+64bit-emul             := elf64btsmip
+32bit-bfd              := elf32-tradbigmips
+64bit-bfd              := elf64-tradbigmips
+PLATFORM_CPPFLAGS      += -EB
+PLATFORM_LDFLAGS       += -EB
 endif
 
-# Handle special prefix in ELDK 4.0 toolchain
-ifneq (,$(findstring 4KCle,$(CROSS_COMPILE)))
-ENDIANNESS := -EL
+ifdef CONFIG_SYS_LITTLE_ENDIAN
+32bit-emul             := elf32ltsmip
+64bit-emul             := elf64ltsmip
+32bit-bfd              := elf32-tradlittlemips
+64bit-bfd              := elf64-tradlittlemips
+PLATFORM_CPPFLAGS      += -EL
+PLATFORM_LDFLAGS       += -EL
 endif
 
-ifdef CONFIG_SYS_LITTLE_ENDIAN
-ENDIANNESS := -EL
+ifdef CONFIG_32BIT
+PLATFORM_CPPFLAGS      += -mabi=32
+PLATFORM_LDFLAGS       += -m $(32bit-emul)
+OBJCOPYFLAGS           += -O $(32bit-bfd)
 endif
 
-ifdef CONFIG_SYS_BIG_ENDIAN
-ENDIANNESS := -EB
+ifdef CONFIG_64BIT
+PLATFORM_CPPFLAGS      += -mabi=64
+PLATFORM_LDFLAGS       += -m$(64bit-emul)
+OBJCOPYFLAGS           += -O $(64bit-bfd)
 endif
 
-# Default to EB if no endianess is configured
-ENDIANNESS ?= -EB
+cpuflags-$(CONFIG_CPU_MIPS32_R1) += -march=mips32 -Wa,-mips32
+cpuflags-$(CONFIG_CPU_MIPS32_R2) += -march=mips32r2 -Wa,-mips32r2
+cpuflags-$(CONFIG_CPU_MIPS64_R1) += -march=mips64 -Wa,-mips64
+cpuflags-$(CONFIG_CPU_MIPS64_R2) += -march=mips64r2 -Wa,-mips64r2
+PLATFORM_CPPFLAGS += $(cpuflags-y)
 
 PLATFORM_CPPFLAGS += -D__MIPS__
 
@@ -49,10 +65,10 @@ __HAVE_ARCH_GENERIC_BOARD := y
 # On the other hand, we want PIC in the U-Boot code to relocate it from ROM
 # to RAM. $28 is always used as gp.
 #
-PLATFORM_CPPFLAGS              += -G 0 -mabicalls -fpic $(ENDIANNESS)
+PLATFORM_CPPFLAGS              += -G 0 -mabicalls -fpic
 PLATFORM_CPPFLAGS              += -msoft-float
-PLATFORM_LDFLAGS               += -G 0 -static -n -nostdlib $(ENDIANNESS)
+PLATFORM_LDFLAGS               += -G 0 -static -n -nostdlib
 PLATFORM_RELFLAGS              += -ffunction-sections -fdata-sections
 LDFLAGS_FINAL                  += --gc-sections -pie
 OBJCOPYFLAGS                   += -j .text -j .rodata -j .data -j .got
-OBJCOPYFLAGS                   += -j .u_boot_list -j .rel.dyn
+OBJCOPYFLAGS                   += -j .u_boot_list -j .rel.dyn -j .padding
index e0e6309c6f04e44c62825e02c9641c6adf51fb59..fa82dd375f4faa4f0a05867942e98049ee4c0dbf 100644 (file)
@@ -8,3 +8,5 @@
 extra-y        = start.o
 obj-y  = cache.o
 obj-y  += cpu.o interrupts.o time.o
+
+obj-$(CONFIG_SOC_AU1X00) += au1x00/
index a3dac70798d999de87da3d7851fabea03750a449..74bdb773032f10bac9a19d8d649f628436a919b7 100644 (file)
@@ -54,8 +54,6 @@
 #define readl(a)     au_readl((long)(a))
 #define writel(v,a)  au_writel((v),(int)(a))
 
-#define min_t(type,x,y) ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
-
 #define DEBUG
 #ifdef DEBUG
 #define dbg(format, arg...) printf("DEBUG: " format "\n", ## arg)
index 332cd62c74901869009aa40d9c32f30a2fbc93df..4257c56d59e3b104faa7326286efb5408c95ee66 100644 (file)
@@ -5,19 +5,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-#
-# Default optimization level for MIPS32
-#
-# Note: Toolchains with binutils prior to v2.16
-# are no longer supported by U-Boot MIPS tree!
-#
-PLATFORM_CPPFLAGS += -DCONFIG_MIPS32 -march=mips32r2
-PLATFORM_CPPFLAGS += -mabi=32 -DCONFIG_32BIT
-ifdef CONFIG_SYS_BIG_ENDIAN
-PLATFORM_LDFLAGS  += -m elf32btsmip
-else
-PLATFORM_LDFLAGS  += -m elf32ltsmip
-endif
-
 CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 \
                               -T $(srctree)/examples/standalone/mips.lds
index 68e59b596f1146f605a91383c7dd950945fddc2f..384ea26022bcf5b907a8eaf541466bbb56a3612a 100644 (file)
@@ -136,10 +136,11 @@ reset:
 
        /* Set up temporary stack */
        li      sp, CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_INIT_SP_OFFSET
+       move    fp, sp
 
        la      t9, board_init_f
        jr      t9
-        nop
+        move   ra, zero
 
 /*
  * void relocate_code (addr_sp, gd, addr_moni)
@@ -155,6 +156,7 @@ reset:
        .ent    relocate_code
 relocate_code:
        move    sp, a0                  # set new stack pointer
+       move    fp, sp
 
        move    s0, a1                  # save gd in s0
        move    s2, a2                  # save destination address in s2
@@ -260,8 +262,9 @@ in_ram:
         addi   t1, 4
 
        move    a0, s0                  # a0 <-- gd
+       move    a1, s2
        la      t9, board_init_r
        jr      t9
-        move   a1, s2
+        move   ra, zero
 
        .end    relocate_code
index c55eb7f2ee9089e042d566c873b3740370c52332..96eb82948d4a1a53005948c28f0124fac95250ed 100644 (file)
@@ -5,19 +5,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-#
-# Default optimization level for MIPS64
-#
-# Note: Toolchains with binutils prior to v2.16
-# are no longer supported by U-Boot MIPS tree!
-#
-PLATFORM_CPPFLAGS += -DCONFIG_MIPS64 -march=mips64
-PLATFORM_CPPFLAGS += -mabi=64 -DCONFIG_64BIT
-ifdef CONFIG_SYS_BIG_ENDIAN
-PLATFORM_LDFLAGS  += -m elf64btsmip
-else
-PLATFORM_LDFLAGS  += -m elf64ltsmip
-endif
-
 CONFIG_STANDALONE_LOAD_ADDR ?= 0xffffffff80200000 \
                               -T $(srctree)/examples/standalone/mips64.lds
index 92954e1c907bf9dddb64aa433aa6374cd324205a..6ff714e8ed4fa2f177ecdc02d9fa8989dd1fe783 100644 (file)
@@ -130,10 +130,11 @@ reset:
 
        /* Set up temporary stack */
        dli     sp, CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_INIT_SP_OFFSET
+       move    fp, sp
 
        dla     t9, board_init_f
        jr      t9
-        nop
+        move   ra, zero
 
 /*
  * void relocate_code (addr_sp, gd, addr_moni)
@@ -149,6 +150,7 @@ reset:
        .ent    relocate_code
 relocate_code:
        move    sp, a0                  # set new stack pointer
+       move    fp, sp
 
        move    s0, a1                  # save gd in s0
        move    s2, a2                  # save destination address in s2
@@ -254,8 +256,9 @@ in_ram:
         daddi  t1, 8
 
        move    a0, s0                  # a0 <-- gd
+       move    a1, s2
        dla     t9, board_init_r
        jr      t9
-        move   a1, s2
+        move   ra, zero
 
        .end    relocate_code
index e504ea754403a23df0bd81b0079a2f9e40739a56..7d71c11ae4c6cfa5ff1aa22df51a20d4ceb16bc0 100644 (file)
@@ -61,6 +61,24 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
+       .padding : {
+               /*
+                * Workaround for a binutils feature (or bug?).
+                *
+                * The GNU ld from binutils puts the dynamic relocation
+                * entries into the .rel.dyn section. Sometimes it
+                * allocates more dynamic relocation entries than it needs
+                * and the unused slots are set to R_MIPS_NONE entries.
+                *
+                * However the size of the .rel.dyn section in the ELF
+                * section header does not cover the unused entries, so
+                * objcopy removes those during stripping.
+                *
+                * Create a small section here to avoid that.
+                */
+               LONG(0xFFFFFFFF)
+       }
+
        _end = .;
 
        .bss __rel_dyn_start (OVERLAY) : {
index 1d5112ea69f8f10820ab9a2a41f7f8848c60abf1..c25a8462c72e104cb898af9b4f3258a414f0ce9b 100644 (file)
@@ -8,7 +8,7 @@
 #ifndef _ASM_MIPS_UNALIGNED_H
 #define _ASM_MIPS_UNALIGNED_H
 
-#include <compiler.h>
+#include <linux/compiler.h>
 #if defined(__MIPSEB__)
 #define get_unaligned  __get_unaligned_be
 #define put_unaligned  __put_unaligned_be
index e483e86f6b471e69e4b38b190c0c14278294a621..7f9b6536afa84ab8e7ff2947bec24518caae95b5 100644 (file)
@@ -5,9 +5,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-ifndef CONFIG_SYS_GENERIC_BOARD
-obj-y  += board.o
-endif
 obj-y  += io.o
 
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
diff --git a/arch/mips/lib/board.c b/arch/mips/lib/board.c
deleted file mode 100644 (file)
index 3feb020..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <serial.h>
-#include <stdio_dev.h>
-#include <version.h>
-#include <net.h>
-#include <environment.h>
-#include <nand.h>
-#include <onenand_uboot.h>
-#include <spi.h>
-
-#ifdef CONFIG_BITBANGMII
-#include <miiphy.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-ulong monitor_flash_len;
-
-static char *failed = "*** failed ***\n";
-
-int __board_early_init_f(void)
-{
-       /*
-        * Nothing to do in this dummy implementation
-        */
-       return 0;
-}
-int board_early_init_f(void)
-       __attribute__((weak, alias("__board_early_init_f")));
-
-static int init_func_ram(void)
-{
-#ifdef CONFIG_BOARD_TYPES
-       int board_type = gd->board_type;
-#else
-       int board_type = 0;     /* use dummy arg */
-#endif
-       puts("DRAM:  ");
-
-       gd->ram_size = initdram(board_type);
-       if (gd->ram_size > 0) {
-               print_size(gd->ram_size, "\n");
-               return 0;
-       }
-       puts(failed);
-       return 1;
-}
-
-static int display_banner(void)
-{
-
-       printf("\n\n%s\n\n", version_string);
-       return 0;
-}
-
-#ifndef CONFIG_SYS_NO_FLASH
-static void display_flash_config(ulong size)
-{
-       puts("Flash: ");
-       print_size(size, "\n");
-}
-#endif
-
-static int init_baudrate(void)
-{
-       gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
-       return 0;
-}
-
-
-/*
- * Breath some life into the board...
- *
- * The first part of initialization is running from Flash memory;
- * its main purpose is to initialize the RAM so that we
- * can relocate the monitor code to RAM.
- */
-
-/*
- * All attempts to come up with a "common" initialization sequence
- * that works for all boards and architectures failed: some of the
- * requirements are just _too_ different. To get rid of the resulting
- * mess of board dependend #ifdef'ed code we now make the whole
- * initialization sequence configurable to the user.
- *
- * The requirements for any new initalization function is simple: it
- * receives a pointer to the "global data" structure as it's only
- * argument, and returns an integer return code, where 0 means
- * "continue" and != 0 means "fatal error, hang the system".
- */
-typedef int (init_fnc_t)(void);
-
-init_fnc_t *init_sequence[] = {
-       board_early_init_f,
-       timer_init,
-       env_init,               /* initialize environment */
-       init_baudrate,          /* initialize baudrate settings */
-       serial_init,            /* serial communications setup */
-       console_init_f,
-       display_banner,         /* say that we are here */
-       checkboard,
-       init_func_ram,
-       NULL,
-};
-
-
-void board_init_f(ulong bootflag)
-{
-       gd_t gd_data, *id;
-       bd_t *bd;
-       init_fnc_t **init_fnc_ptr;
-       ulong addr, addr_sp, len;
-       ulong *s;
-
-       /* Pointer is writable since we allocated a register for it.
-        */
-       gd = &gd_data;
-       /* compiler optimization barrier needed for GCC >= 3.4 */
-       __asm__ __volatile__("" : : : "memory");
-
-       memset((void *)gd, 0, sizeof(gd_t));
-
-       for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
-               if ((*init_fnc_ptr)() != 0)
-                       hang();
-       }
-
-       /*
-        * Now that we have DRAM mapped and working, we can
-        * relocate the code and continue running from DRAM.
-        */
-       addr = CONFIG_SYS_SDRAM_BASE + gd->ram_size;
-
-       /* We can reserve some RAM "on top" here.
-        */
-
-       /* round down to next 4 kB limit.
-        */
-       addr &= ~(4096 - 1);
-       debug("Top of RAM usable for U-Boot at: %08lx\n", addr);
-
-       /* Reserve memory for U-Boot code, data & bss
-        * round down to next 16 kB limit
-        */
-       len = bss_end() - CONFIG_SYS_MONITOR_BASE;
-       addr -= len;
-       addr &= ~(16 * 1024 - 1);
-
-       debug("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr);
-
-        /* Reserve memory for malloc() arena.
-        */
-       addr_sp = addr - TOTAL_MALLOC_LEN;
-       debug("Reserving %dk for malloc() at: %08lx\n",
-                       TOTAL_MALLOC_LEN >> 10, addr_sp);
-
-       /*
-        * (permanently) allocate a Board Info struct
-        * and a permanent copy of the "global" data
-        */
-       addr_sp -= sizeof(bd_t);
-       bd = (bd_t *)addr_sp;
-       gd->bd = bd;
-       debug("Reserving %zu Bytes for Board Info at: %08lx\n",
-                       sizeof(bd_t), addr_sp);
-
-       addr_sp -= sizeof(gd_t);
-       id = (gd_t *)addr_sp;
-       debug("Reserving %zu Bytes for Global Data at: %08lx\n",
-                       sizeof(gd_t), addr_sp);
-
-       /* Reserve memory for boot params.
-        */
-       addr_sp -= CONFIG_SYS_BOOTPARAMS_LEN;
-       bd->bi_boot_params = addr_sp;
-       debug("Reserving %dk for boot params() at: %08lx\n",
-                       CONFIG_SYS_BOOTPARAMS_LEN >> 10, addr_sp);
-
-       /*
-        * Finally, we set up a new (bigger) stack.
-        *
-        * Leave some safety gap for SP, force alignment on 16 byte boundary
-        * Clear initial stack frame
-        */
-       addr_sp -= 16;
-       addr_sp &= ~0xF;
-       s = (ulong *)addr_sp;
-       *s-- = 0;
-       *s-- = 0;
-       addr_sp = (ulong)s;
-       debug("Stack Pointer at: %08lx\n", addr_sp);
-
-       /*
-        * Save local variables to board info struct
-        */
-       bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;        /* start of DRAM */
-       bd->bi_memsize  = gd->ram_size;         /* size of DRAM in bytes */
-
-       memcpy(id, (void *)gd, sizeof(gd_t));
-
-       relocate_code(addr_sp, id, addr);
-
-       /* NOTREACHED - relocate_code() does not return */
-}
-
-/*
- * This is the next part if the initialization sequence: we are now
- * running from RAM and have a "normal" C environment, i. e. global
- * data can be written, BSS has been cleared, the stack size in not
- * that critical any more, etc.
- */
-
-void board_init_r(gd_t *id, ulong dest_addr)
-{
-#ifndef CONFIG_SYS_NO_FLASH
-       ulong size;
-#endif
-       bd_t *bd;
-
-       gd = id;
-       gd->flags |= GD_FLG_RELOC;      /* tell others: relocation done */
-
-       debug("Now running in RAM - U-Boot at: %08lx\n", dest_addr);
-
-       gd->reloc_off = dest_addr - CONFIG_SYS_MONITOR_BASE;
-
-       monitor_flash_len = image_copy_end() - dest_addr;
-
-       serial_initialize();
-
-       bd = gd->bd;
-
-       /* The Malloc area is immediately below the monitor copy in DRAM */
-       mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
-                       TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN);
-
-#ifndef CONFIG_SYS_NO_FLASH
-       /* configure available FLASH banks */
-       size = flash_init();
-       display_flash_config(size);
-       bd->bi_flashstart = CONFIG_SYS_FLASH_BASE;
-       bd->bi_flashsize = size;
-
-#if CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE
-       bd->bi_flashoffset = monitor_flash_len; /* reserved area for U-Boot */
-#else
-       bd->bi_flashoffset = 0;
-#endif
-#else
-       bd->bi_flashstart = 0;
-       bd->bi_flashsize = 0;
-       bd->bi_flashoffset = 0;
-#endif
-
-#ifdef CONFIG_CMD_NAND
-       puts("NAND:  ");
-       nand_init();            /* go init the NAND */
-#endif
-
-#if defined(CONFIG_CMD_ONENAND)
-       onenand_init();
-#endif
-
-       /* relocate environment function pointers etc. */
-       env_relocate();
-
-#if defined(CONFIG_PCI)
-       /*
-        * Do pci configuration
-        */
-       pci_init();
-#endif
-
-/** leave this here (after malloc(), environment and PCI are working) **/
-       /* Initialize stdio devices */
-       stdio_init();
-
-       jumptable_init();
-
-       /* Initialize the console (after the relocation and devices init) */
-       console_init_r();
-/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/
-
-       /* Initialize from environment */
-       load_addr = getenv_ulong("loadaddr", 16, load_addr);
-
-#ifdef CONFIG_CMD_SPI
-       puts("SPI:   ");
-       spi_init();             /* go init the SPI */
-       puts("ready\n");
-#endif
-
-#if defined(CONFIG_MISC_INIT_R)
-       /* miscellaneous platform dependent initialisations */
-       misc_init_r();
-#endif
-
-#ifdef CONFIG_BITBANGMII
-       bb_miiphy_init();
-#endif
-#if defined(CONFIG_CMD_NET)
-       puts("Net:   ");
-       eth_initialize(gd->bd);
-#endif
-
-       /* main_loop() can return to retry autoboot, if so just run it again. */
-       for (;;)
-               main_loop();
-
-       /* NOTREACHED - no way out of command loop except booting */
-}
index 71bb0d2a199b28512828640352ec547b67cf6ff9..e0722d20d1e876122939117163071e4ecd525b26 100644 (file)
@@ -6,10 +6,7 @@
  */
 
 #include <common.h>
-#include <command.h>
 #include <image.h>
-#include <u-boot/zlib.h>
-#include <asm/byteorder.h>
 #include <asm/addrspace.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -52,6 +49,20 @@ void arch_lmb_reserve(struct lmb *lmb)
        lmb_reserve(lmb, sp, CONFIG_SYS_SDRAM_BASE + gd->ram_size - sp);
 }
 
+static int boot_setup_linux(bootm_headers_t *images)
+{
+       int ret;
+       ulong rd_len;
+
+       rd_len = images->rd_end - images->rd_start;
+       ret = boot_ramdisk_high(&images->lmb, images->rd_start,
+               rd_len, &images->initrd_start, &images->initrd_end);
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
 static void linux_cmdline_init(void)
 {
        linux_argc = 1;
@@ -224,6 +235,8 @@ static void boot_jump_linux(bootm_headers_t *images)
 int do_bootm_linux(int flag, int argc, char * const argv[],
                        bootm_headers_t *images)
 {
+       int ret;
+
        /* No need for those on MIPS */
        if (flag & BOOTM_STATE_OS_BD_T)
                return -1;
@@ -243,6 +256,10 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
                return 0;
        }
 
+       ret = boot_setup_linux(images);
+       if (ret)
+               return ret;
+
        boot_cmdline_linux(images);
        boot_prep_linux(images);
        boot_jump_linux(images);
diff --git a/arch/nds32/Makefile b/arch/nds32/Makefile
new file mode 100644 (file)
index 0000000..e1eccba
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/nds32/cpu/$(CPU)/start.o
+
+libs-y += arch/nds32/cpu/$(CPU)/
+libs-y += arch/nds32/lib/
index 206d304d4c5ff597f41b248c7c2af01c525d93f3..8ab1fcea26d9fe68a6f5ce16a73f6f23211a1874 100644 (file)
@@ -9,7 +9,7 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-# necessary to create built-in.o
-obj- := __dummy__.o
-
 extra-y        = start.o
+
+obj-$(if $(filter ag101,$(SOC)),y) += ag101/
+obj-$(if $(filter ag102,$(SOC)),y) += ag102/
diff --git a/arch/nios2/Makefile b/arch/nios2/Makefile
new file mode 100644 (file)
index 0000000..18685a9
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/nios2/cpu/start.o
+
+libs-y += arch/nios2/cpu/
+libs-y += arch/nios2/lib/
index 4d88f169df7c12c797c4e39b40ac769d0b56e0eb..502468208820a25b9f72905a10a8e49bdf418b9a 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void __ft_board_setup(void *blob, bd_t *bd)
+int __ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
-void ft_board_setup(void *blob, bd_t *bd) \
+int ft_board_setup(void *blob, bd_t *bd)
        __attribute__((weak, alias("__ft_board_setup")));
 
 void ft_cpu_setup(void *blob, bd_t *bd)
@@ -32,5 +34,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
         * Note: aliases in the dts are required for this
         */
        fdt_fixup_ethernet(blob);
+
+       return 0;
 }
 #endif /* CONFIG_OF_LIBFDT && CONFIG_OF_BOARD_SETUP */
diff --git a/arch/openrisc/Makefile b/arch/openrisc/Makefile
new file mode 100644 (file)
index 0000000..c4da3ce
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/openrisc/cpu/start.o
+
+libs-y += arch/openrisc/cpu/
+libs-y += arch/openrisc/lib/
index 6f96c7cc52aa564c5bd8ec89e6feb41dae2b50e1..7a50301f7c200bb7397e81af094a979366a6dcd5 100644 (file)
@@ -19,9 +19,6 @@ config 5xx
 config MPC5xxx
        bool "MPC5xxx"
 
-config MPC824X
-       bool "MPC824X"
-
 config MPC8260
        bool "MPC8260"
 
@@ -46,7 +43,6 @@ source "arch/powerpc/cpu/74xx_7xx/Kconfig"
 source "arch/powerpc/cpu/mpc512x/Kconfig"
 source "arch/powerpc/cpu/mpc5xx/Kconfig"
 source "arch/powerpc/cpu/mpc5xxx/Kconfig"
-source "arch/powerpc/cpu/mpc824x/Kconfig"
 source "arch/powerpc/cpu/mpc8260/Kconfig"
 source "arch/powerpc/cpu/mpc83xx/Kconfig"
 source "arch/powerpc/cpu/mpc85xx/Kconfig"
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
new file mode 100644 (file)
index 0000000..8aa1d60
--- /dev/null
@@ -0,0 +1,11 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/powerpc/cpu/$(CPU)/start.o
+head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
+head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
+
+libs-y += arch/powerpc/cpu/$(CPU)/
+libs-y += arch/powerpc/cpu/
+libs-y += arch/powerpc/lib/
index a1305bc280051eebe75d57732714a0f95d6a7a91..e2e9cb77b0a7bf47cdd665e916de86266365ba1e 100644 (file)
@@ -38,9 +38,6 @@ config TARGET_IPEK01
 config TARGET_JUPITER
        bool "Support jupiter"
 
-config TARGET_MCC200
-       bool "Support mcc200"
-
 config TARGET_MOTIONPRO
        bool "Support motionpro"
 
@@ -56,9 +53,6 @@ config TARGET_TOTAL5200
 config TARGET_V38B
        bool "Support v38b"
 
-config TARGET_TOP5200
-       bool "Support TOP5200"
-
 config TARGET_CPCI5200
        bool "Support cpci5200"
 
@@ -89,15 +83,6 @@ config TARGET_O3DNT
 config TARGET_DIGSY_MTC
        bool "Support digsy_mtc"
 
-config TARGET_HMI1001
-       bool "Support hmi1001"
-
-config TARGET_MUCMC52
-       bool "Support mucmc52"
-
-config TARGET_UC101
-       bool "Support uc101"
-
 config TARGET_PCM030
        bool "Support pcm030"
 
@@ -130,10 +115,6 @@ source "board/inka4x0/Kconfig"
 source "board/intercontrol/digsy_mtc/Kconfig"
 source "board/ipek01/Kconfig"
 source "board/jupiter/Kconfig"
-source "board/manroland/hmi1001/Kconfig"
-source "board/manroland/mucmc52/Kconfig"
-source "board/manroland/uc101/Kconfig"
-source "board/mcc200/Kconfig"
 source "board/motionpro/Kconfig"
 source "board/munices/Kconfig"
 source "board/phytec/pcm030/Kconfig"
index 03cd7fd4e025a803b034701df93453887565a3a2..9003b774ff5026448023f0b52ad9f7a4268144b3 100644 (file)
@@ -41,19 +41,11 @@ int ide_preinit (void)
        /* All sample codes do that... */
        *(vu_long *) MPC5XXX_ATA_SHARE_COUNT = 0;
 
-#if defined(CONFIG_UC101)
-       /* Configure and reset host */
-       *(vu_long *) MPC5XXX_ATA_HOST_CONFIG =
-               MPC5xxx_ATA_HOSTCONF_SMR | MPC5xxx_ATA_HOSTCONF_FR;
-       udelay (10);
-       *(vu_long *) MPC5XXX_ATA_HOST_CONFIG = 0;
-#else
        /* Configure and reset host */
        *(vu_long *) MPC5XXX_ATA_HOST_CONFIG = MPC5xxx_ATA_HOSTCONF_IORDY |
                MPC5xxx_ATA_HOSTCONF_SMR | MPC5xxx_ATA_HOSTCONF_FR;
        udelay (10);
        *(vu_long *) MPC5XXX_ATA_HOST_CONFIG = MPC5xxx_ATA_HOSTCONF_IORDY;
-#endif
 
        /* Disable prefetch on Commbus */
        psdma->PtdCntrl |= 1;
index 02c706ec63d2ea95df5108883fee237c63708f9d..94eb0d3fff881ae251ea7bdbcee9b2a5ab58d68f 100644 (file)
@@ -76,6 +76,21 @@ _start:
         * been done in the SPL u-boot version.
         */
        GET_GOT                 /* initialize GOT access                */
+
+       /*
+        * The GD (global data) struct needs to get cleared. Lets do
+        * this by calling memset().
+        * This function is called when the platform is build with SPL
+        * support from the main (full-blown) U-Boot. And the GD needs
+        * to get cleared (again) so that the following generic
+        * board support code, defined via CONFIG_SYS_GENERIC_BOARD,
+        * initializes all variables correctly.
+        */
+       mr      r3, r2          /* parameter 1:  GD pointer             */
+       li      r4,0            /* parameter 2:  value to fill          */
+       li      r5,GD_SIZE      /* parameter 3:  count                  */
+       bl      memset
+
        bl      board_init_f    /* run 1st part of board init code (in Flash)*/
        /* NOTREACHED - board_init_f() does not return */
 #else
index 3c8b2d904fef6942874551516b385808c8de83f1..b7c1b5594a003a4c7b28f98ec3db67d48d199061 100644 (file)
@@ -42,8 +42,6 @@
 #define readl(a) (*((volatile u32 *)(a)))
 #define writel(a, b) (*((volatile u32 *)(b)) = ((volatile u32)a))
 
-#define min_t(type,x,y) ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
-
 #ifdef DEBUG
 #define dbg(format, arg...) printf("DEBUG: " format "\n", ## arg)
 #else
diff --git a/arch/powerpc/cpu/mpc824x/Kconfig b/arch/powerpc/cpu/mpc824x/Kconfig
deleted file mode 100644 (file)
index 4f98423..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-menu "mpc824x CPU"
-       depends on MPC824X
-
-config SYS_CPU
-       default "mpc824x"
-
-choice
-       prompt "Target select"
-
-config TARGET_A3000
-       bool "Support A3000"
-
-config TARGET_CPC45
-       bool "Support CPC45"
-
-config TARGET_CU824
-       bool "Support CU824"
-
-config TARGET_EXALION
-       bool "Support eXalion"
-
-config TARGET_MUSENKI
-       bool "Support MUSENKI"
-
-config TARGET_MVBLUE
-       bool "Support MVBLUE"
-
-config TARGET_SANDPOINT8240
-       bool "Support Sandpoint8240"
-
-config TARGET_SANDPOINT8245
-       bool "Support Sandpoint8245"
-
-config TARGET_UTX8245
-       bool "Support utx8245"
-
-endchoice
-
-source "board/a3000/Kconfig"
-source "board/cpc45/Kconfig"
-source "board/cu824/Kconfig"
-source "board/eXalion/Kconfig"
-source "board/musenki/Kconfig"
-source "board/mvblue/Kconfig"
-source "board/sandpoint/Kconfig"
-source "board/utx8245/Kconfig"
-
-endmenu
diff --git a/arch/powerpc/cpu/mpc824x/Makefile b/arch/powerpc/cpu/mpc824x/Makefile
deleted file mode 100644 (file)
index 2c8be92..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-extra-y        = start.o
-obj-y  = traps.o cpu.o cpu_init.o interrupts.o speed.o \
-         drivers/epic/epic1.o drivers/i2c/i2c.o pci.o
-obj-y += ../mpc8260/bedbug_603e.o
diff --git a/arch/powerpc/cpu/mpc824x/config.mk b/arch/powerpc/cpu/mpc824x/config.mk
deleted file mode 100644 (file)
index ecfb07e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2010
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -mstring -mcpu=603e -msoft-float
diff --git a/arch/powerpc/cpu/mpc824x/cpu.c b/arch/powerpc/cpu/mpc824x/cpu.c
deleted file mode 100644 (file)
index eaa4e87..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * (C) Copyright 2000 - 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <mpc824x.h>
-#include <common.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int checkcpu (void)
-{
-       unsigned int pvr = get_pvr ();
-       unsigned int version = pvr >> 16;
-       unsigned char revision;
-       ulong clock = gd->cpu_clk;
-       char buf[32];
-
-       puts ("CPU:   ");
-
-       switch (version) {
-       case CPU_TYPE_8240:
-               puts ("MPC8240");
-               break;
-
-       case CPU_TYPE_8245:
-               puts ("MPC8245");
-               break;
-
-       default:
-               return -1;              /*not valid for this source */
-       }
-
-       CONFIG_READ_BYTE (REVID, revision);
-
-       if (revision) {
-               printf (" Revision %d.%d",
-                       (revision & 0xf0) >> 4,
-                       (revision & 0x0f));
-       } else {
-               return -1;              /* no valid CPU revision info */
-       }
-
-       printf(" at %s MHz: ", strmhz(buf, clock));
-
-       print_size(checkicache(), " I-Cache ");
-       print_size(checkdcache(), " D-Cache\n");
-
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-/* L1 i-cache                                                                */
-
-int checkicache (void)
-{
-        /*TODO*/
-        return 128 * 4 * 32;
-};
-
-/* ------------------------------------------------------------------------- */
-/* L1 d-cache                                                                */
-
-int checkdcache (void)
-{
-        /*TODO*/
-        return 128 * 4 * 32;
-
-};
-
-/*------------------------------------------------------------------- */
-
-int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong msr, addr;
-
-       /* Interrupts and MMU off */
-       __asm__ ("mtspr    81, 0");
-
-       /* Interrupts and MMU off */
-       __asm__ __volatile__ ("mfmsr    %0":"=r" (msr):);
-
-       msr &= ~0x1030;
-       __asm__ __volatile__ ("mtmsr    %0"::"r" (msr));
-
-       /*
-        * Trying to execute the next instruction at a non-existing address
-        * should cause a machine check, resulting in reset
-        */
-#ifdef CONFIG_SYS_RESET_ADDRESS
-       addr = CONFIG_SYS_RESET_ADDRESS;
-#else
-       /*
-        * note: when CONFIG_SYS_MONITOR_BASE points to a RAM address,
-        * CONFIG_SYS_MONITOR_BASE - sizeof (ulong) is usually a valid
-        * address. Better pick an address known to be invalid on
-        * your system and assign it to CONFIG_SYS_RESET_ADDRESS.
-        * "(ulong)-1" used to be a good choice for many systems...
-        */
-       addr = CONFIG_SYS_MONITOR_BASE - sizeof (ulong);
-#endif
-       ((void (*)(void)) addr) ();
-       return 1;
-
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Get timebase clock frequency (like cpu_clk in Hz)
- * This is the sys_logic_clk (memory bus) divided by 4
- */
-unsigned long get_tbclk (void)
-{
-       return ((get_bus_freq (0) + 2L) / 4L);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * The MPC824x has an integrated PCI controller known as the MPC107.
- * The following are MPC107 Bridge Controller and PCI Support functions
- *
- */
-
-/*
- *  This procedure reads a 32-bit address MPC107 register, and returns
- *  a 32 bit value.  It swaps the address to little endian before
- *  writing it to config address, and swaps the value to big endian
- *  before returning to the caller.
- */
-unsigned int mpc824x_mpc107_getreg (unsigned int regNum)
-{
-       unsigned int temp;
-
-       /* swap the addr. to little endian */
-       *(volatile unsigned int *) CHRP_REG_ADDR = PCISWAP (regNum);
-       temp = *(volatile unsigned int *) CHRP_REG_DATA;
-       return PCISWAP (temp);          /* swap the data upon return */
-}
-
-/*
- *  This procedure writes a 32-bit address MPC107 register.  It swaps
- *  the address to little endian before writing it to config address.
- */
-
-void mpc824x_mpc107_setreg (unsigned int regNum, unsigned int regVal)
-{
-       /* swap the addr. to little endian */
-       *(volatile unsigned int *) CHRP_REG_ADDR = PCISWAP (regNum);
-       *(volatile unsigned int *) CHRP_REG_DATA = PCISWAP (regVal);
-       return;
-}
-
-
-/*
- *  Write a byte (8 bits) to a memory location.
- */
-void mpc824x_mpc107_write8 (unsigned int addr, unsigned char data)
-{
-       *(unsigned char *) addr = data;
-       __asm__ ("sync");
-}
-
-/*
- *  Write a word (16 bits) to a memory location after the value
- *  has been byte swapped (big to little endian or vice versa)
- */
-
-void mpc824x_mpc107_write16 (unsigned int address, unsigned short data)
-{
-       *(volatile unsigned short *) address = BYTE_SWAP_16_BIT (data);
-       __asm__ ("sync");
-}
-
-/*
- *  Write a long word (32 bits) to a memory location after the value
- *  has been byte swapped (big to little endian or vice versa)
- */
-
-void mpc824x_mpc107_write32 (unsigned int address, unsigned int data)
-{
-       *(volatile unsigned int *) address = LONGSWAP (data);
-       __asm__ ("sync");
-}
-
-/*
- *  Read a byte (8 bits) from a memory location.
- */
-unsigned char mpc824x_mpc107_read8 (unsigned int addr)
-{
-       return *(volatile unsigned char *) addr;
-}
-
-
-/*
- *  Read a word (16 bits) from a memory location, and byte swap the
- *  value before returning to the caller.
- */
-unsigned short mpc824x_mpc107_read16 (unsigned int address)
-{
-       unsigned short retVal;
-
-       retVal = BYTE_SWAP_16_BIT (*(unsigned short *) address);
-       return retVal;
-}
-
-
-/*
- *  Read a long word (32 bits) from a memory location, and byte
- *  swap the value before returning to the caller.
- */
-unsigned int mpc824x_mpc107_read32 (unsigned int address)
-{
-       unsigned int retVal;
-
-       retVal = LONGSWAP (*(unsigned int *) address);
-       return (retVal);
-}
-
-
-/*
- *  Read a register in the Embedded Utilities Memory Block address
- *  space.
- *  Input: regNum - register number + utility base address.  Example,
- *         the base address of EPIC is 0x40000, the register number
- *        being passed is 0x40000+the address of the target register.
- *        (See epic.h for register addresses).
- *  Output:  The 32 bit little endian value of the register.
- */
-
-unsigned int mpc824x_eummbar_read (unsigned int regNum)
-{
-       unsigned int temp;
-
-       temp = *(volatile unsigned int *) (EUMBBAR_VAL + regNum);
-       temp = PCISWAP (temp);
-       return temp;
-}
-
-
-/*
- *  Write a value to a register in the Embedded Utilities Memory
- *  Block address space.
- *  Input: regNum - register number + utility base address.  Example,
- *                  the base address of EPIC is 0x40000, the register
- *                 number is 0x40000+the address of the target register.
- *                 (See epic.h for register addresses).
- *         regVal - value to be written to the register.
- */
-
-void mpc824x_eummbar_write (unsigned int regNum, unsigned int regVal)
-{
-       *(volatile unsigned int *) (EUMBBAR_VAL + regNum) = PCISWAP (regVal);
-       return;
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/arch/powerpc/cpu/mpc824x/cpu_init.c b/arch/powerpc/cpu/mpc824x/cpu_init.c
deleted file mode 100644 (file)
index 68d88e9..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * (C) Copyright 2000
- * Rob Taylor. Flying Pig Systems. robt@flyingpig.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <mpc824x.h>
-
-#ifndef CONFIG_SYS_BANK0_ROW
-#define CONFIG_SYS_BANK0_ROW 0
-#endif
-#ifndef CONFIG_SYS_BANK1_ROW
-#define CONFIG_SYS_BANK1_ROW 0
-#endif
-#ifndef CONFIG_SYS_BANK2_ROW
-#define CONFIG_SYS_BANK2_ROW 0
-#endif
-#ifndef CONFIG_SYS_BANK3_ROW
-#define CONFIG_SYS_BANK3_ROW 0
-#endif
-#ifndef CONFIG_SYS_BANK4_ROW
-#define CONFIG_SYS_BANK4_ROW 0
-#endif
-#ifndef CONFIG_SYS_BANK5_ROW
-#define CONFIG_SYS_BANK5_ROW 0
-#endif
-#ifndef CONFIG_SYS_BANK6_ROW
-#define CONFIG_SYS_BANK6_ROW 0
-#endif
-#ifndef CONFIG_SYS_BANK7_ROW
-#define CONFIG_SYS_BANK7_ROW 0
-#endif
-#ifndef CONFIG_SYS_DBUS_SIZE2
-#define CONFIG_SYS_DBUS_SIZE2 0
-#endif
-
-/*
- * Breath some life into the CPU...
- *
- * Set up the memory map,
- * initialize a bunch of registers,
- */
-void
-cpu_init_f (void)
-{
-    register unsigned long val;
-    CONFIG_WRITE_HALFWORD(PCICR, 0x06); /* Bus Master, respond to PCI memory space acesses*/
-/*    CONFIG_WRITE_HALFWORD(PCISR, 0xffff); */ /*reset PCISR*/
-
-#if defined(CONFIG_MUSENKI)
-/* Why is this here, you ask?  Try, just try setting 0x8000
- * in PCIACR with CONFIG_WRITE_HALFWORD()
- * this one was a stumper, and we are annoyed
- */
-
-#define M_CONFIG_WRITE_HALFWORD( addr, data ) \
-       __asm__ __volatile__("          \
-               stw  %2,0(%0)\n         \
-               sync\n                  \
-               sth  %3,2(%1)\n         \
-               sync\n                  \
-               "                       \
-               : /* no output */       \
-               : "r" (CONFIG_ADDR), "r" (CONFIG_DATA),                 \
-               "r" (PCISWAP(addr & ~3)), "r" (PCISWAP(data << 16))     \
-       );
-
-       M_CONFIG_WRITE_HALFWORD(PCIACR, 0x8000);
-#endif
-
-       CONFIG_WRITE_BYTE(PCLSR, 0x8);  /* set PCI cache line size */
-       CONFIG_WRITE_BYTE (PLTR, 0x40); /* set PCI latency timer */
-       /*
-       * Note that although this bit is cleared after a hard reset, it
-       * must be explicitly set and then cleared by software during
-       * initialization in order to guarantee correct operation of the
-       * DLL and the SDRAM_CLK[0:3] signals (if they are used).
-       */
-       CONFIG_READ_BYTE (AMBOR, val);
-       CONFIG_WRITE_BYTE(AMBOR, val & 0xDF);
-       CONFIG_WRITE_BYTE(AMBOR, val | 0x20);
-       CONFIG_WRITE_BYTE(AMBOR, val & 0xDF);
-#ifdef CONFIG_MPC8245
-       /* silicon bug 28 MPC8245 */
-       CONFIG_READ_BYTE(AMBOR,val);
-       CONFIG_WRITE_BYTE(AMBOR,val|0x1);
-
-#if 0
-       /*
-        * The following bug only affects older (XPC8245) processors.
-        * DMA transfers initiated by external devices get corrupted due
-        * to a hardware scheduling problem.
-        *
-        * The effect is:
-        * when transferring X words, the first 32 words are transferred
-        * OK, the next 3 x 32 words are 'old' data (from previous DMA)
-        * while the rest of the X words is xferred fine.
-        *
-        * Disabling 3 of the 4 32 word hardware buffers solves the problem
-        * with no significant performance loss.
-        */
-
-       CONFIG_READ_BYTE(PCMBCR,val);
-       /* in order not to corrupt data which is being read over the PCI bus
-       * with the PPC as slave, we need to reduce the number of PCMRBs to 1,
-       * 4.11 in the  processor user manual
-       * */
-
-#if 1
-       CONFIG_WRITE_BYTE(PCMBCR,(val|0xC0)); /* 1 PCMRB */
-#else
-       CONFIG_WRITE_BYTE(PCMBCR,(val|0x80)); /* 2 PCMRBs */
-       CONFIG_WRITE_BYTE(PCMBCR,(val|0x40)); /* 3 PCMRBs */
-       /* default, 4 PCMRBs are used */
-#endif
-#endif
-#endif
-
-       CONFIG_READ_WORD(PICR1, val);
-#if defined(CONFIG_MPC8240)
-       CONFIG_WRITE_WORD( PICR1,
-               (val & (PICR1_ADDRESS_MAP | PICR1_RCS0)) |
-                      PIRC1_MSK | PICR1_PROC_TYPE_603E |
-                      PICR1_FLASH_WR_EN | PICR1_MCP_EN |
-                      PICR1_CF_DPARK | PICR1_EN_PCS |
-                      PICR1_CF_APARK );
-#elif defined(CONFIG_MPC8245)
-       CONFIG_WRITE_WORD( PICR1,
-               (val & (PICR1_RCS0)) |
-                      PICR1_PROC_TYPE_603E |
-                      PICR1_FLASH_WR_EN | PICR1_MCP_EN |
-                      PICR1_CF_DPARK | PICR1_NO_BUSW_CK |
-                      PICR1_DEC| PICR1_CF_APARK | 0x10); /* 8245 UM says bit 4 must be set */
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-
-       CONFIG_READ_WORD(PICR2, val);
-       val= val & ~ (PICR2_CF_SNOOP_WS_MASK | PICR2_CF_APHASE_WS_MASK); /*mask off waitstate bits*/
-       val |= PICR2_CF_SNOOP_WS_1WS | PICR2_CF_APHASE_WS_1WS; /*1 wait state*/
-       CONFIG_WRITE_WORD(PICR2, val);
-
-       CONFIG_WRITE_WORD(EUMBBAR, CONFIG_SYS_EUMB_ADDR);
-#ifndef CONFIG_SYS_RAMBOOT
-       CONFIG_WRITE_WORD(MCCR1, (CONFIG_SYS_ROMNAL << MCCR1_ROMNAL_SHIFT) |
-                                (CONFIG_SYS_BANK0_ROW) |
-                                (CONFIG_SYS_BANK1_ROW << MCCR1_BANK1ROW_SHIFT) |
-                                (CONFIG_SYS_BANK2_ROW << MCCR1_BANK2ROW_SHIFT) |
-                                (CONFIG_SYS_BANK3_ROW << MCCR1_BANK3ROW_SHIFT) |
-                                (CONFIG_SYS_BANK4_ROW << MCCR1_BANK4ROW_SHIFT) |
-                                (CONFIG_SYS_BANK5_ROW << MCCR1_BANK5ROW_SHIFT) |
-                                (CONFIG_SYS_BANK6_ROW << MCCR1_BANK6ROW_SHIFT) |
-                                (CONFIG_SYS_BANK7_ROW << MCCR1_BANK7ROW_SHIFT) |
-                                (CONFIG_SYS_ROMFAL << MCCR1_ROMFAL_SHIFT));
-#endif
-
-#if defined(CONFIG_SYS_ASRISE) && defined(CONFIG_SYS_ASFALL)
-       CONFIG_WRITE_WORD(MCCR2, CONFIG_SYS_REFINT << MCCR2_REFINT_SHIFT |
-                                CONFIG_SYS_ASRISE << MCCR2_ASRISE_SHIFT |
-                                CONFIG_SYS_ASFALL << MCCR2_ASFALL_SHIFT);
-#else
-       CONFIG_WRITE_WORD(MCCR2, CONFIG_SYS_REFINT << MCCR2_REFINT_SHIFT);
-#endif
-
-#if defined(CONFIG_MPC8240)
-       CONFIG_WRITE_WORD(MCCR3,
-               (((CONFIG_SYS_BSTOPRE & 0x003c) >> 2) << MCCR3_BSTOPRE2TO5_SHIFT) |
-               (CONFIG_SYS_REFREC << MCCR3_REFREC_SHIFT) |
-               (CONFIG_SYS_RDLAT  << MCCR3_RDLAT_SHIFT));
-#elif defined(CONFIG_MPC8245)
-       CONFIG_WRITE_WORD(MCCR3,
-               (((CONFIG_SYS_BSTOPRE & 0x003c) >> 2) << MCCR3_BSTOPRE2TO5_SHIFT) |
-               (CONFIG_SYS_REFREC << MCCR3_REFREC_SHIFT));
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-
-/* this is gross.  We think these should all be the same, and various boards
- *  should define CONFIG_SYS_ACTORW to 0 if they don't want to set it, or even, if
- *  its not set, we define it to zero in this file
- */
-#if defined(CONFIG_CU824)
-       CONFIG_WRITE_WORD(MCCR4,
-       (CONFIG_SYS_PRETOACT << MCCR4_PRETOACT_SHIFT) |
-       (CONFIG_SYS_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) |
-       MCCR4_BIT21 |
-       (CONFIG_SYS_REGISTERD_TYPE_BUFFER ? MCCR4_REGISTERED: 0) |
-       ((CONFIG_SYS_BSTOPRE & 0x0003) <<MCCR4_BSTOPRE0TO1_SHIFT ) |
-       (((CONFIG_SYS_SDMODE_CAS_LAT <<4) | (CONFIG_SYS_SDMODE_WRAP <<3) |
-                 CONFIG_SYS_SDMODE_BURSTLEN) << MCCR4_SDMODE_SHIFT) |
-       (CONFIG_SYS_ACTORW << MCCR4_ACTTORW_SHIFT) |
-       (((CONFIG_SYS_BSTOPRE & 0x03c0) >> 6) << MCCR4_BSTOPRE6TO9_SHIFT));
-#elif defined(CONFIG_MPC8240)
-       CONFIG_WRITE_WORD(MCCR4,
-       (CONFIG_SYS_PRETOACT << MCCR4_PRETOACT_SHIFT) |
-       (CONFIG_SYS_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) |
-       MCCR4_BIT21 |
-       (CONFIG_SYS_REGISTERD_TYPE_BUFFER ? MCCR4_REGISTERED: 0) |
-       ((CONFIG_SYS_BSTOPRE & 0x0003) <<MCCR4_BSTOPRE0TO1_SHIFT ) |
-       (((CONFIG_SYS_SDMODE_CAS_LAT <<4) | (CONFIG_SYS_SDMODE_WRAP <<3) |
-                 (CONFIG_SYS_SDMODE_BURSTLEN)) <<MCCR4_SDMODE_SHIFT) |
-       (((CONFIG_SYS_BSTOPRE & 0x03c0) >> 6) <<MCCR4_BSTOPRE6TO9_SHIFT ));
-#elif defined(CONFIG_MPC8245)
-       CONFIG_READ_WORD(MCCR1, val);
-       val &= MCCR1_DBUS_SIZE0;    /* test for 64-bit mem bus */
-
-       CONFIG_WRITE_WORD(MCCR4,
-               (CONFIG_SYS_PRETOACT << MCCR4_PRETOACT_SHIFT) |
-               (CONFIG_SYS_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) |
-               (CONFIG_SYS_EXTROM ? MCCR4_EXTROM : 0) |
-               (CONFIG_SYS_REGDIMM ? MCCR4_REGDIMM : 0) |
-               (CONFIG_SYS_REGISTERD_TYPE_BUFFER ? MCCR4_REGISTERED: 0) |
-               ((CONFIG_SYS_BSTOPRE & 0x0003) <<MCCR4_BSTOPRE0TO1_SHIFT ) |
-               (CONFIG_SYS_DBUS_SIZE2 << MCCR4_DBUS_SIZE2_SHIFT) |
-               (((CONFIG_SYS_SDMODE_CAS_LAT <<4) | (CONFIG_SYS_SDMODE_WRAP <<3) |
-                     (val ? 2 : 3)) << MCCR4_SDMODE_SHIFT)  |
-               (CONFIG_SYS_ACTORW << MCCR4_ACTTORW_SHIFT) |
-               (((CONFIG_SYS_BSTOPRE & 0x03c0) >> 6) <<MCCR4_BSTOPRE6TO9_SHIFT ));
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-
-       CONFIG_WRITE_WORD(MSAR1,
-               ( (CONFIG_SYS_BANK0_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) |
-               (((CONFIG_SYS_BANK1_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK2_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK3_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24));
-       CONFIG_WRITE_WORD(EMSAR1,
-               ( (CONFIG_SYS_BANK0_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) |
-               (((CONFIG_SYS_BANK1_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK2_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK3_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24));
-       CONFIG_WRITE_WORD(MSAR2,
-               ( (CONFIG_SYS_BANK4_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) |
-               (((CONFIG_SYS_BANK5_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK6_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK7_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24));
-       CONFIG_WRITE_WORD(EMSAR2,
-               ( (CONFIG_SYS_BANK4_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) |
-               (((CONFIG_SYS_BANK5_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK6_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK7_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24));
-       CONFIG_WRITE_WORD(MEAR1,
-               ( (CONFIG_SYS_BANK0_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) |
-               (((CONFIG_SYS_BANK1_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK2_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK3_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24));
-       CONFIG_WRITE_WORD(EMEAR1,
-               ( (CONFIG_SYS_BANK0_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) |
-               (((CONFIG_SYS_BANK1_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK2_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK3_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24));
-       CONFIG_WRITE_WORD(MEAR2,
-               ( (CONFIG_SYS_BANK4_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) |
-               (((CONFIG_SYS_BANK5_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK6_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK7_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24));
-       CONFIG_WRITE_WORD(EMEAR2,
-               ( (CONFIG_SYS_BANK4_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) |
-               (((CONFIG_SYS_BANK5_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) |
-               (((CONFIG_SYS_BANK6_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) |
-               (((CONFIG_SYS_BANK7_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24));
-
-       CONFIG_WRITE_BYTE(ODCR, CONFIG_SYS_ODCR);
-#ifdef CONFIG_SYS_DLL_MAX_DELAY
-       CONFIG_WRITE_BYTE(MIOCR1, CONFIG_SYS_DLL_MAX_DELAY);    /* needed to make DLL lock */
-#endif
-#if defined(CONFIG_SYS_DLL_EXTEND) && defined(CONFIG_SYS_PCI_HOLD_DEL)
-       CONFIG_WRITE_BYTE(PMCR2, CONFIG_SYS_DLL_EXTEND | CONFIG_SYS_PCI_HOLD_DEL);
-#endif
-#if defined(MIOCR2) && defined(CONFIG_SYS_SDRAM_DSCD)
-       CONFIG_WRITE_BYTE(MIOCR2, CONFIG_SYS_SDRAM_DSCD);       /* change memory input */
-#endif /* setup & hold time */
-
-       CONFIG_WRITE_BYTE(MBER,
-                CONFIG_SYS_BANK0_ENABLE |
-               (CONFIG_SYS_BANK1_ENABLE << 1) |
-               (CONFIG_SYS_BANK2_ENABLE << 2) |
-               (CONFIG_SYS_BANK3_ENABLE << 3) |
-               (CONFIG_SYS_BANK4_ENABLE << 4) |
-               (CONFIG_SYS_BANK5_ENABLE << 5) |
-               (CONFIG_SYS_BANK6_ENABLE << 6) |
-               (CONFIG_SYS_BANK7_ENABLE << 7));
-
-#ifdef CONFIG_SYS_PGMAX
-       CONFIG_WRITE_BYTE(MPMR, CONFIG_SYS_PGMAX);
-#endif
-
-       /* ! Wait 200us before initialize other registers */
-       /*FIXME: write a decent udelay wait */
-       __asm__ __volatile__(
-               " mtctr %0 \n \
-               0: bdnz  0b\n"
-               :
-               : "r" (0x10000));
-
-       CONFIG_READ_WORD(MCCR1, val);
-       CONFIG_WRITE_WORD(MCCR1, val | MCCR1_MEMGO); /* set memory access going */
-       __asm__ __volatile__("eieio");
-}
-
-/*
- * initialize higher level parts of CPU like time base and timers
- */
-int cpu_init_r (void)
-{
-       return (0);
-}
diff --git a/arch/powerpc/cpu/mpc824x/drivers/epic.h b/arch/powerpc/cpu/mpc824x/drivers/epic.h
deleted file mode 100644 (file)
index 2803f63..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "epic/epic.h"
diff --git a/arch/powerpc/cpu/mpc824x/drivers/epic/README b/arch/powerpc/cpu/mpc824x/drivers/epic/README
deleted file mode 100644 (file)
index 5798996..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-CONTENT:
-
-   epic.h
-   epic1.c
-   epic2.s
-
-WHAT ARE THESE FILES:
-
-These files contain MPC8240 (Kahlua) EPIC
-driver routines. The driver routines are not
-written for any specific operating system.
-They serves the purpose of code sample, and
-jump-start for using the MPC8240 EPIC unit.
-
-For the reason of correctness of C language
-syntax, these files are compiled by Metaware
-C compiler and assembler.
-
-ENDIAN NOTATION:
-
-The algorithm is designed for big-endian mode,
-software is responsible for byte swapping.
-
-USAGE:
-
-1. The host system that is running on MPC8240
-   shall link the files listed here. The memory
-   location of driver routines shall take into
-   account of that driver routines need to run
-   in supervisor mode and they process external
-   interrupts.
-
-   The routine epic_exception shall be called by
-   exception vector at location 0x500, i.e.,
-   603e core external exception vector.
-
-2. The host system is responsible for configuring
-   the MPC8240 including Embedded Utilities Memory
-   Block. All EPIC driver functions require the
-   content of Embedded Utilities Memory Block
-   Base Address Register, EUMBBAR, as the first
-   parameter.
-
-3. Before EPIC unit of MPC8240 can be used,
-   initialize EPIC unit by calling epicInit
-   with the corresponding parameters.
-
-   The initialization shall disable the 603e
-   core External Exception by calling CoreExtIntDisable( ).
-   Next, call epicInit( ). Last, enable the 603e core
-   External Exception by calling CoreExtIntEnable( ).
-
-4. After EPIC unit has been successfully initialized,
-   epicIntSourceSet( ) shall be used to register each
-   external interrupt source. Anytime, an external
-   interrupt source can be disabled or enabled by
-   calling corresponding function, epicIntDisable( ),
-   or epicIntEnable( ).
-
-   Global Timers' resource, base count and frequency,
-   can be changed by calling epicTmFrequencySet( )
-   and epicTmBaseSet( ).
-
-   To stop counting a specific global timer, use
-   the function, epicTmInhibit while epicTmEnable
-   can be used to start counting a timer.
-
-5. To mask a set of external interrupts that are
-   are certain level below, epicIntPrioritySet( )
-   can be used. For example, if the processor's
-   current task priority register is set to 0x7,
-   only interrupts of priority 0x8 or higher will
-   be passed to the processor.
-
-   Be careful when using this function. It may
-   corrupt the current interrupt pending, selector,
-   and request registers, resulting an invalid vetor.
-
-   After enabling an interrupt, disable it may also
-   cause an invalid vector. User may consider using
-   the spurious vector interrupt service routine to
-   handle this case.
-
-6. The EPIC driver routines contains a set
-   of utilities, Set and Get, for host system
-   to query and modify the desired EPIC source
-   registers.
-
-7. Each external interrupt source shall register
-   its interrupt service routine. The routine
-   shall contain all interrupt source specific
-   processes and keep as short as possible.
-
-   Special customized end of interrupt routine
-   is optional. If it is needed, it shall contain
-   the external interrupt source specific end of
-   interrupt process.
-
-   External interrupt exception vector at 0x500
-   shall always call the epicEOI just before
-   rfi instruction. Refer to the routine,
-   epic_exception, for a code sample.
diff --git a/arch/powerpc/cpu/mpc824x/drivers/epic/epic.h b/arch/powerpc/cpu/mpc824x/drivers/epic/epic.h
deleted file mode 100644 (file)
index 58f81c5..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/*********************************************************************
- * mpc8240epic.h - EPIC module of the MPC8240 micro-controller
- *
- * Copyrigh 1999  Motorola Inc.
- *
- * Modification History:
- * =====================
- * 01a,04Feb99,My  Created.
- * 15Nov200, robt -modified to use in U-Boot
- *
-*/
-
-#ifndef __INCEPICh
-#define __INCEPICh
-
-#define ULONG unsigned long
-#define MAXVEC             20
-#define MAXIRQ        5 /* IRQs */
-#define EPIC_DIRECT_IRQ     0 /* Direct interrupt type */
-
-/* EPIC register addresses */
-
-#define EPIC_EUMBBAR      0x40000     /* EUMBBAR of EPIC  */
-#define EPIC_FEATURES_REG (EPIC_EUMBBAR + 0x01000)/* Feature reporting */
-#define EPIC_GLOBAL_REG   (EPIC_EUMBBAR + 0x01020)/* Global config.  */
-#define EPIC_INT_CONF_REG (EPIC_EUMBBAR + 0x01030)/* Interrupt config. */
-#define EPIC_VENDOR_ID_REG  (EPIC_EUMBBAR + 0x01080)/* Vendor id */
-#define EPIC_PROC_INIT_REG  (EPIC_EUMBBAR + 0x01090)/* Processor init. */
-#define EPIC_SPUR_VEC_REG (EPIC_EUMBBAR + 0x010e0)/* Spurious vector */
-#define EPIC_TM_FREQ_REG  (EPIC_EUMBBAR + 0x010f0)/* Timer Frequency */
-
-#define EPIC_TM0_CUR_COUNT_REG  (EPIC_EUMBBAR + 0x01100)/* Gbl TM0 Cur. Count*/
-#define EPIC_TM0_BASE_COUNT_REG (EPIC_EUMBBAR + 0x01110)/* Gbl TM0 Base Count*/
-#define EPIC_TM0_VEC_REG  (EPIC_EUMBBAR + 0x01120)/* Gbl TM0 Vector Pri*/
-#define EPIC_TM0_DES_REG  (EPIC_EUMBBAR + 0x01130)/* Gbl TM0 Dest. */
-
-#define EPIC_TM1_CUR_COUNT_REG  (EPIC_EUMBBAR + 0x01140)/* Gbl TM1 Cur. Count*/
-#define EPIC_TM1_BASE_COUNT_REG (EPIC_EUMBBAR + 0x01150)/* Gbl TM1 Base Count*/
-#define EPIC_TM1_VEC_REG  (EPIC_EUMBBAR + 0x01160)/* Gbl TM1 Vector Pri*/
-#define EPIC_TM1_DES_REG  (EPIC_EUMBBAR + 0x01170)/* Gbl TM1 Dest. */
-
-#define EPIC_TM2_CUR_COUNT_REG  (EPIC_EUMBBAR + 0x01180)/* Gbl TM2 Cur. Count*/
-#define EPIC_TM2_BASE_COUNT_REG (EPIC_EUMBBAR + 0x01190)/* Gbl TM2 Base Count*/
-#define EPIC_TM2_VEC_REG  (EPIC_EUMBBAR + 0x011a0)/* Gbl TM2 Vector Pri*/
-#define EPIC_TM2_DES_REG  (EPIC_EUMBBAR + 0x011b0)/* Gbl TM2 Dest */
-
-#define EPIC_TM3_CUR_COUNT_REG  (EPIC_EUMBBAR + 0x011c0)/* Gbl TM3 Cur. Count*/
-#define EPIC_TM3_BASE_COUNT_REG (EPIC_EUMBBAR + 0x011d0)/* Gbl TM3 Base Count*/
-#define EPIC_TM3_VEC_REG  (EPIC_EUMBBAR + 0x011e0)/* Gbl TM3 Vector Pri*/
-#define EPIC_TM3_DES_REG  (EPIC_EUMBBAR + 0x011f0)/* Gbl TM3 Dest. */
-
-#define EPIC_EX_INT0_VEC_REG  (EPIC_EUMBBAR + 0x10200)/* Ext. Int. Sr0 Des */
-#define EPIC_EX_INT0_DES_REG  (EPIC_EUMBBAR + 0x10210)/* Ext. Int. Sr0 Vect*/
-#define EPIC_EX_INT1_VEC_REG  (EPIC_EUMBBAR + 0x10220)/* Ext. Int. Sr1 Des */
-#define EPIC_EX_INT1_DES_REG  (EPIC_EUMBBAR + 0x10230)/* Ext. Int. Sr1 Vect*/
-#define EPIC_EX_INT2_VEC_REG  (EPIC_EUMBBAR + 0x10240)/* Ext. Int. Sr2 Des */
-#define EPIC_EX_INT2_DES_REG  (EPIC_EUMBBAR + 0x10250)/* Ext. Int. Sr2 Vect*/
-#define EPIC_EX_INT3_VEC_REG  (EPIC_EUMBBAR + 0x10260)/* Ext. Int. Sr3 Des */
-#define EPIC_EX_INT3_DES_REG  (EPIC_EUMBBAR + 0x10270)/* Ext. Int. Sr3 Vect*/
-#define EPIC_EX_INT4_VEC_REG  (EPIC_EUMBBAR + 0x10280)/* Ext. Int. Sr4 Des */
-#define EPIC_EX_INT4_DES_REG  (EPIC_EUMBBAR + 0x10290)/* Ext. Int. Sr4 Vect*/
-
-#define EPIC_SR_INT0_VEC_REG  (EPIC_EUMBBAR + 0x10200)/* Sr. Int. Sr0 Des */
-#define EPIC_SR_INT0_DES_REG  (EPIC_EUMBBAR + 0x10210)/* Sr. Int. Sr0 Vect */
-#define EPIC_SR_INT1_VEC_REG  (EPIC_EUMBBAR + 0x10220)/* Sr. Int. Sr1 Des */
-#define EPIC_SR_INT1_DES_REG  (EPIC_EUMBBAR + 0x10230)/* Sr. Int. Sr1 Vect.*/
-#define EPIC_SR_INT2_VEC_REG  (EPIC_EUMBBAR + 0x10240)/* Sr. Int. Sr2 Des */
-#define EPIC_SR_INT2_DES_REG  (EPIC_EUMBBAR + 0x10250)/* Sr. Int. Sr2 Vect.*/
-#define EPIC_SR_INT3_VEC_REG  (EPIC_EUMBBAR + 0x10260)/* Sr. Int. Sr3 Des */
-#define EPIC_SR_INT3_DES_REG  (EPIC_EUMBBAR + 0x10270)/* Sr. Int. Sr3 Vect.*/
-#define EPIC_SR_INT4_VEC_REG  (EPIC_EUMBBAR + 0x10280)/* Sr. Int. Sr4 Des */
-#define EPIC_SR_INT4_DES_REG  (EPIC_EUMBBAR + 0x10290)/* Sr. Int. Sr4 Vect.*/
-
-#define EPIC_SR_INT5_VEC_REG  (EPIC_EUMBBAR + 0x102a0)/* Sr. Int. Sr5 Des */
-#define EPIC_SR_INT5_DES_REG  (EPIC_EUMBBAR + 0x102b0)/* Sr. Int. Sr5 Vect.*/
-#define EPIC_SR_INT6_VEC_REG  (EPIC_EUMBBAR + 0x102c0)/* Sr. Int. Sr6 Des */
-#define EPIC_SR_INT6_DES_REG  (EPIC_EUMBBAR + 0x102d0)/* Sr. Int. Sr6 Vect.*/
-#define EPIC_SR_INT7_VEC_REG  (EPIC_EUMBBAR + 0x102e0)/* Sr. Int. Sr7 Des */
-#define EPIC_SR_INT7_DES_REG  (EPIC_EUMBBAR + 0x102f0)/* Sr. Int. Sr7 Vect.*/
-#define EPIC_SR_INT8_VEC_REG  (EPIC_EUMBBAR + 0x10300)/* Sr. Int. Sr8 Des */
-#define EPIC_SR_INT8_DES_REG  (EPIC_EUMBBAR + 0x10310)/* Sr. Int. Sr8 Vect.*/
-#define EPIC_SR_INT9_VEC_REG  (EPIC_EUMBBAR + 0x10320)/* Sr. Int. Sr9 Des */
-#define EPIC_SR_INT9_DES_REG  (EPIC_EUMBBAR + 0x10330)/* Sr. Int. Sr9 Vect.*/
-
-#define EPIC_SR_INT10_VEC_REG (EPIC_EUMBBAR + 0x10340)/* Sr. Int. Sr10 Des */
-#define EPIC_SR_INT10_DES_REG (EPIC_EUMBBAR + 0x10350)/* Sr. Int. Sr10 Vect*/
-#define EPIC_SR_INT11_VEC_REG (EPIC_EUMBBAR + 0x10360)/* Sr. Int. Sr11 Des */
-#define EPIC_SR_INT11_DES_REG (EPIC_EUMBBAR + 0x10370)/* Sr. Int. Sr11 Vect*/
-#define EPIC_SR_INT12_VEC_REG (EPIC_EUMBBAR + 0x10380)/* Sr. Int. Sr12 Des */
-#define EPIC_SR_INT12_DES_REG (EPIC_EUMBBAR + 0x10390)/* Sr. Int. Sr12 Vect*/
-#define EPIC_SR_INT13_VEC_REG (EPIC_EUMBBAR + 0x103a0)/* Sr. Int. Sr13 Des */
-#define EPIC_SR_INT13_DES_REG (EPIC_EUMBBAR + 0x103b0)/* Sr. Int. Sr13 Vect*/
-#define EPIC_SR_INT14_VEC_REG (EPIC_EUMBBAR + 0x103c0)/* Sr. Int. Sr14 Des */
-#define EPIC_SR_INT14_DES_REG (EPIC_EUMBBAR + 0x103d0)/* Sr. Int. Sr14 Vect*/
-#define EPIC_SR_INT15_VEC_REG (EPIC_EUMBBAR + 0x103e0)/* Sr. Int. Sr15 Des */
-#define EPIC_SR_INT15_DES_REG (EPIC_EUMBBAR + 0x103f0)/* Sr. Int. Sr15 Vect*/
-
-#define EPIC_I2C_INT_VEC_REG  (EPIC_EUMBBAR + 0x11020)/* I2C Int. Vect Pri.*/
-#define EPIC_I2C_INT_DES_REG  (EPIC_EUMBBAR + 0x11030)/* I2C Int. Dest */
-#define EPIC_DMA0_INT_VEC_REG (EPIC_EUMBBAR + 0x11040)/* DMA0 Int. Vect Pri*/
-#define EPIC_DMA0_INT_DES_REG (EPIC_EUMBBAR + 0x11050)/* DMA0 Int. Dest */
-#define EPIC_DMA1_INT_VEC_REG (EPIC_EUMBBAR + 0x11060)/* DMA1 Int. Vect Pri*/
-#define EPIC_DMA1_INT_DES_REG (EPIC_EUMBBAR + 0x11070)/* DMA1 Int. Dest */
-#define EPIC_MSG_INT_VEC_REG  (EPIC_EUMBBAR + 0x110c0)/* Msg Int. Vect Pri*/
-#define EPIC_MSG_INT_DES_REG  (EPIC_EUMBBAR + 0x110d0)/* Msg Int. Dest  */
-
-#define EPIC_PROC_CTASK_PRI_REG (EPIC_EUMBBAR + 0x20080)/* Proc. current task*/
-#define EPIC_PROC_INT_ACK_REG (EPIC_EUMBBAR + 0x200a0)/* Int. acknowledge */
-#define EPIC_PROC_EOI_REG (EPIC_EUMBBAR + 0x200b0)/* End of interrupt */
-
-#define EPIC_VEC_PRI_MASK      0x80000000 /* Mask Interrupt bit in IVPR */
-#define EPIC_VEC_PRI_DFLT_PRI  8          /* Interrupt Priority in IVPR */
-
-/* Error code */
-
-#define OK       0
-#define ERROR    -1
-
-/* function prototypes */
-
-void epicVendorId( unsigned int *step,
-       unsigned int *devId,
-       unsigned int *venId
-     );
-void epicFeatures( unsigned int *noIRQs,
-            unsigned int *noCPUs,
-       unsigned int *VerId );
-extern void epicInit( unsigned int IRQType, unsigned int clkRatio);
-ULONG sysEUMBBARRead ( ULONG regNum );
-void sysEUMBBARWrite ( ULONG regNum, ULONG regVal);
-extern void epicTmFrequencySet( unsigned int frq );
-extern unsigned int epicTmFrequencyGet(void);
-extern unsigned int epicTmBaseSet( ULONG srcAddr,
-                unsigned int cnt,
-                unsigned int inhibit );
-extern unsigned int epicTmBaseGet ( ULONG srcAddr, unsigned int *val );
-extern unsigned int epicTmCountGet( ULONG srcAddr, unsigned int *val );
-extern unsigned int epicTmInhibit( unsigned int timer );
-extern unsigned int epicTmEnable( ULONG srcAdr );
-extern void CoreExtIntEnable(void);  /* Enable 603e external interrupts */
-extern void CoreExtIntDisable(void); /* Disable 603e external interrupts */
-extern unsigned char epicIntTaskGet(void);
-extern void epicIntTaskSet( unsigned char val );
-extern unsigned int epicIntAck(void);
-extern void epicSprSet( unsigned int eumbbar, unsigned char );
-extern void epicConfigGet( unsigned int *clkRatio,
-              unsigned int *serEnable );
-extern void SrcVecTableInit(void);
-extern unsigned int  epicModeGet(void);
-extern void epicIntEnable(int Vect);
-extern void epicIntDisable(int Vect);
-extern int epicIntSourceConfig(int Vect, int Polarity, int Sense, int Prio);
-extern unsigned int epicIntAck(void);
-extern void epicEOI(void);
-extern int epicCurTaskPrioSet(int Vect);
-
-struct SrcVecTable
-    {
-     ULONG srcAddr;
-     char  srcName[40];
-    };
-
-#endif   /*  EPIC_H */
diff --git a/arch/powerpc/cpu/mpc824x/drivers/epic/epic1.c b/arch/powerpc/cpu/mpc824x/drivers/epic/epic1.c
deleted file mode 100644 (file)
index ecbb42d..0000000
+++ /dev/null
@@ -1,517 +0,0 @@
-/**************************************************
- *
- * copyright @ motorola, 1999
- *
- *************************************************/
-#include <mpc824x.h>
-#include <common.h>
-#include "epic.h"
-
-
-#define PRINT(format, args...) printf(format , ## args)
-
-typedef void (*VOIDFUNCPTR)  (void);  /* ptr to function returning void */
-struct SrcVecTable SrcVecTable[MAXVEC] = /* Addr/Vector cross-reference tbl */
-    {
-    { EPIC_EX_INT0_VEC_REG,  "External Direct/Serial Source 0"},
-    { EPIC_EX_INT1_VEC_REG,  "External Direct/Serial Source 1"},
-    { EPIC_EX_INT2_VEC_REG,  "External Direct/Serial Source 2"},
-    { EPIC_EX_INT3_VEC_REG,  "External Direct/Serial Source 3"},
-    { EPIC_EX_INT4_VEC_REG,  "External Direct/Serial Source 4"},
-
-    { EPIC_SR_INT5_VEC_REG,  "External Serial Source 5"},
-    { EPIC_SR_INT6_VEC_REG,  "External Serial Source 6"},
-    { EPIC_SR_INT7_VEC_REG,  "External Serial Source 7"},
-    { EPIC_SR_INT8_VEC_REG,  "External Serial Source 8"},
-    { EPIC_SR_INT9_VEC_REG,  "External Serial Source 9"},
-    { EPIC_SR_INT10_VEC_REG, "External Serial Source 10"},
-    { EPIC_SR_INT11_VEC_REG, "External Serial Source 11"},
-    { EPIC_SR_INT12_VEC_REG, "External Serial Source 12"},
-    { EPIC_SR_INT13_VEC_REG, "External Serial Source 13"},
-    { EPIC_SR_INT14_VEC_REG, "External Serial Source 14"},
-    { EPIC_SR_INT15_VEC_REG, "External Serial Source 15"},
-
-    { EPIC_I2C_INT_VEC_REG,  "Internal I2C Source"},
-    { EPIC_DMA0_INT_VEC_REG, "Internal DMA0 Source"},
-    { EPIC_DMA1_INT_VEC_REG, "Internal DMA1 Source"},
-    { EPIC_MSG_INT_VEC_REG,  "Internal Message Source"},
-    };
-
-VOIDFUNCPTR intVecTbl[MAXVEC];    /* Interrupt vector table */
-
-
-/****************************************************************************
-*  epicInit - Initialize the EPIC registers
-*
-*  This routine resets the Global Configuration Register, thus it:
-*     -  Disables all interrupts
-*     -  Sets epic registers to reset values
-*     -  Sets the value of the Processor Current Task Priority to the
-*        highest priority (0xF).
-*  epicInit then sets the EPIC operation mode to Mixed Mode (vs. Pass
-*  Through or 8259 compatible mode).
-*
-*  If IRQType (input) is Direct IRQs:
-*     - IRQType is written to the SIE bit of the EPIC Interrupt
-*       Configuration register (ICR).
-*     - clkRatio is ignored.
-*  If IRQType is Serial IRQs:
-*     - both IRQType and clkRatio will be written to the ICR register
-*/
-
-void epicInit
-    (
-    unsigned int IRQType,      /* Direct or Serial */
-    unsigned int clkRatio      /* Clk Ratio for Serial IRQs */
-    )
-    {
-    ULONG tmp;
-
-    tmp = sysEUMBBARRead(EPIC_GLOBAL_REG);
-    tmp |= 0xa0000000;                  /* Set the Global Conf. register */
-    sysEUMBBARWrite(EPIC_GLOBAL_REG, tmp);
-       /*
-        * Wait for EPIC to reset - CLH
-        */
-    while( (sysEUMBBARRead(EPIC_GLOBAL_REG) & 0x80000000) == 1);
-    sysEUMBBARWrite(EPIC_GLOBAL_REG, 0x20000000);
-    tmp = sysEUMBBARRead(EPIC_INT_CONF_REG);    /* Read interrupt conf. reg */
-
-    if (IRQType == EPIC_DIRECT_IRQ)             /* direct mode */
-       sysEUMBBARWrite(EPIC_INT_CONF_REG, tmp & 0xf7ffffff);
-    else                                        /* Serial mode */
-       {
-       tmp = (clkRatio << 28) | 0x08000000;    /* Set clock ratio */
-       sysEUMBBARWrite(EPIC_INT_CONF_REG, tmp);
-       }
-
-    while (epicIntAck() != 0xff)       /* Clear all pending interrupts */
-               epicEOI();
-}
-
-/****************************************************************************
- *  epicIntEnable - Enable an interrupt source
- *
- *  This routine clears the mask bit of an external, an internal or
- *  a Timer register to enable the interrupt.
- *
- *  RETURNS:  None
- */
-void epicIntEnable(int intVec)
-{
-    ULONG tmp;
-    ULONG srAddr;
-
-    srAddr = SrcVecTable[intVec].srcAddr;  /* Retrieve src Vec/Prio register */
-    tmp = sysEUMBBARRead(srAddr);
-    tmp &= ~EPIC_VEC_PRI_MASK;             /* Clear the mask bit */
-    tmp |= (EPIC_VEC_PRI_DFLT_PRI << 16);   /* Set priority to Default - CLH */
-    tmp |= intVec;                                        /* Set Vector number */
-    sysEUMBBARWrite(srAddr, tmp);
-
-    return;
-    }
-
-/****************************************************************************
- *  epicIntDisable - Disable an interrupt source
- *
- *  This routine sets the mask bit of an external, an internal or
- *  a Timer register to disable the interrupt.
- *
- *  RETURNS:  OK or ERROR
- *
- */
-
-void epicIntDisable
-    (
-    int intVec        /* Interrupt vector number */
-    )
-    {
-
-    ULONG tmp, srAddr;
-
-    srAddr = SrcVecTable[intVec].srcAddr;
-    tmp = sysEUMBBARRead(srAddr);
-    tmp |= 0x80000000;                      /* Set the mask bit */
-    sysEUMBBARWrite(srAddr, tmp);
-    return;
-    }
-
-/****************************************************************************
- * epicIntSourceConfig - Set properties of an interrupt source
- *
- * This function sets interrupt properites (Polarity, Sense, Interrupt
- * Prority, and Interrupt Vector) of an Interrupt Source.  The properties
- * can be set when the current source is not in-request or in-service,
- * which is determined by the Activity bit.  This routine return ERROR
- * if the the Activity bit is 1 (in-request or in-service).
- *
- * This function assumes that the Source Vector/Priority register (input)
- * is a valid address.
- *
- * RETURNS:  OK or ERROR
- */
-
-int epicIntSourceConfig
-    (
-    int   Vect,                         /* interrupt source vector number */
-    int   Polarity,                     /* interrupt source polarity */
-    int   Sense,                        /* interrupt source Sense */
-    int   Prio                          /* interrupt source priority */
-    )
-
-    {
-    ULONG tmp, newVal;
-    ULONG actBit, srAddr;
-
-    srAddr = SrcVecTable[Vect].srcAddr;
-    tmp = sysEUMBBARRead(srAddr);
-    actBit = (tmp & 40000000) >> 30;    /* retrieve activity bit - bit 30 */
-    if (actBit == 1)
-       return ERROR;
-
-    tmp &= 0xff30ff00;     /* Erase previously set P,S,Prio,Vector bits */
-    newVal = (Polarity << 23) | (Sense << 22) | (Prio << 16) | Vect;
-    sysEUMBBARWrite(srAddr, tmp | newVal );
-    return (OK);
-    }
-
-/****************************************************************************
- * epicIntAck - acknowledge an interrupt
- *
- * This function reads the Interrupt acknowldge register and return
- * the vector number of the highest pending interrupt.
- *
- * RETURNS: Interrupt Vector number.
- */
-
-unsigned int epicIntAck(void)
-{
-    return(sysEUMBBARRead( EPIC_PROC_INT_ACK_REG ));
-}
-
-/****************************************************************************
- * epicEOI - signal an end of interrupt
- *
- * This function writes 0x0 to the EOI register to signal end of interrupt.
- * It is usually called after an interrupt routine is served.
- *
- * RETURNS: None
- */
-
-void epicEOI(void)
-    {
-    sysEUMBBARWrite(EPIC_PROC_EOI_REG, 0x0);
-    }
-
-/****************************************************************************
- *  epicCurTaskPrioSet - sets the priority of the Processor Current Task
- *
- *  This function should be called after epicInit() to lower the priority
- *  of the processor current task.
- *
- *  RETURNS:  OK or ERROR
- */
-
-int epicCurTaskPrioSet
-    (
-    int prioNum                 /* New priority value */
-    )
-    {
-
-    if ( (prioNum < 0) || (prioNum > 0xF))
-       return ERROR;
-    sysEUMBBARWrite(EPIC_PROC_CTASK_PRI_REG, prioNum);
-    return OK;
-    }
-
-
-/************************************************************************
- * function: epicIntTaskGet
- *
- * description: Get value of processor current interrupt task priority register
- *
- * note:
- ***********************************************************************/
-unsigned char epicIntTaskGet()
-{
-  /* get the interrupt task priority register */
-    ULONG reg;
-    unsigned char rec;
-
-    reg = sysEUMBBARRead( EPIC_PROC_CTASK_PRI_REG );
-    rec = ( reg & 0x0F );
-    return rec;
-}
-
-
-/**************************************************************
- * function: epicISR
- *
- * description: EPIC service routine called by the core exception
- *              at 0x500
- *
- * note:
- **************************************************************/
-unsigned int epicISR(void)
-{
-   return 0;
-}
-
-
-/************************************************************
- * function: epicModeGet
- *
- * description: query EPIC mode, return 0 if pass through mode
- *                               return 1 if mixed mode
- *
- * note:
- *************************************************************/
-unsigned int epicModeGet(void)
-{
-    ULONG val;
-
-    val = sysEUMBBARRead( EPIC_GLOBAL_REG );
-    return (( val & 0x20000000 ) >> 29);
-}
-
-
-/*********************************************
- * function: epicConfigGet
- *
- * description: Get the EPIC interrupt Configuration
- *              return 0 if not error, otherwise return 1
- *
- * note:
- ********************************************/
-void epicConfigGet( unsigned int *clkRatio, unsigned int *serEnable)
-{
-    ULONG val;
-
-    val = sysEUMBBARRead( EPIC_INT_CONF_REG );
-    *clkRatio = ( val & 0x70000000 ) >> 28;
-    *serEnable = ( val & 0x8000000 ) >> 27;
-}
-
-
-/*******************************************************************
- *  sysEUMBBARRead - Read a 32-bit EUMBBAR register
- *
- *  This routine reads the content of a register in the Embedded
- *  Utilities Memory Block, and swaps to big endian before returning
- *  the value.
- *
- *  RETURNS:  The content of the specified EUMBBAR register.
- */
-
-ULONG sysEUMBBARRead
-    (
-    ULONG regNum
-    )
-    {
-    ULONG temp;
-
-    temp = *(ULONG *) (CONFIG_SYS_EUMB_ADDR + regNum);
-    return ( LONGSWAP(temp));
-    }
-
-/*******************************************************************
- *  sysEUMBBARWrite - Write a 32-bit EUMBBAR register
- *
- *  This routine swaps the value to little endian then writes it to
- *  a register in the Embedded Utilities Memory Block address space.
- *
- *  RETURNS: N/A
- */
-
-void sysEUMBBARWrite
-    (
-    ULONG regNum,               /* EUMBBAR register address */
-    ULONG regVal                /* Value to be written */
-    )
-    {
-
-    *(ULONG *) (CONFIG_SYS_EUMB_ADDR + regNum) = LONGSWAP(regVal);
-    return ;
-    }
-
-
-/********************************************************
- * function: epicVendorId
- *
- * description: return the EPIC Vendor Identification
- *              register:
- *
- *              siliccon version, device id, and vendor id
- *
- * note:
- ********************************************************/
-void epicVendorId
-   (
-    unsigned int *step,
-    unsigned int *devId,
-    unsigned int *venId
-   )
-   {
-    ULONG val;
-    val = sysEUMBBARRead( EPIC_VENDOR_ID_REG );
-    *step  = ( val & 0x00FF0000 ) >> 16;
-    *devId = ( val & 0x0000FF00 ) >> 8;
-    *venId = ( val & 0x000000FF );
-    }
-
-/**************************************************
- * function: epicFeatures
- *
- * description: return the number of IRQ supported,
- *              number of CPU, and the version of the
- *              OpenEPIC
- *
- * note:
- *************************************************/
-void epicFeatures
-    (
-    unsigned int *noIRQs,
-    unsigned int *noCPUs,
-    unsigned int *verId
-    )
-    {
-    ULONG val;
-
-    val = sysEUMBBARRead( EPIC_FEATURES_REG );
-    *noIRQs  = ( val & 0x07FF0000 ) >> 16;
-    *noCPUs  = ( val & 0x00001F00 ) >> 8;
-    *verId   = ( val & 0x000000FF );
-}
-
-
-/*********************************************************
- * function: epciTmFrequncySet
- *
- * description: Set the timer frequency reporting register
- ********************************************************/
-void epicTmFrequencySet( unsigned int frq )
-{
-    sysEUMBBARWrite(EPIC_TM_FREQ_REG, frq);
-}
-
-/*******************************************************
- * function: epicTmFrequncyGet
- *
- * description: Get the current value of the Timer Frequency
- * Reporting register
- *
- ******************************************************/
-unsigned int epicTmFrequencyGet(void)
-{
-    return( sysEUMBBARRead(EPIC_TM_FREQ_REG)) ;
-}
-
-
-/****************************************************
- * function: epicTmBaseSet
- *
- * description: Set the #n global timer base count register
- *              return 0 if no error, otherwise return 1.
- *
- * note:
- ****************************************************/
-unsigned int epicTmBaseSet
-    (
-    ULONG srcAddr,         /* Address of the Timer Base register */
-    unsigned int cnt,    /* Base count */
-    unsigned int inhibit   /* 1 - count inhibit */
-    )
-{
-
-    unsigned int val = 0x80000000;
-    /* First inhibit counting the timer */
-    sysEUMBBARWrite(srcAddr, val) ;
-
-    /* set the new value */
-    val = (cnt & 0x7fffffff) | ((inhibit & 0x1) << 31);
-    sysEUMBBARWrite(srcAddr, val) ;
-    return 0;
-}
-
-/***********************************************************************
- * function: epicTmBaseGet
- *
- * description: Get the current value of the global timer base count register
- *              return 0 if no error, otherwise return 1.
- *
- * note:
- ***********************************************************************/
-unsigned int epicTmBaseGet( ULONG srcAddr, unsigned int *val )
-{
-    *val = sysEUMBBARRead( srcAddr );
-    *val = *val & 0x7fffffff;
-    return 0;
-}
-
-/***********************************************************
- * function: epicTmCountGet
- *
- * description: Get the value of a given global timer
- *              current count register
- *              return 0 if no error, otherwise return 1
- * note:
- **********************************************************/
-unsigned int epicTmCountGet( ULONG srcAddr, unsigned int *val )
-{
-    *val = sysEUMBBARRead( srcAddr );
-    *val = *val & 0x7fffffff;
-    return 0;
-}
-
-
-/***********************************************************
- * function: epicTmInhibit
- *
- * description: Stop counting of a given global timer
- *              return 0 if no error, otherwise return 1
- *
- * note:
- ***********************************************************/
-unsigned int epicTmInhibit( unsigned int srcAddr )
-{
-    ULONG val;
-
-    val = sysEUMBBARRead( srcAddr );
-    val |= 0x80000000;
-    sysEUMBBARWrite( srcAddr, val );
-    return 0;
-}
-
-/******************************************************************
- * function: epicTmEnable
- *
- * description: Enable counting of a given global timer
- *              return 0 if no error, otherwise return 1
- *
- * note:
- *****************************************************************/
-unsigned int epicTmEnable( ULONG srcAddr )
-{
-    ULONG val;
-
-    val = sysEUMBBARRead( srcAddr );
-    val &= 0x7fffffff;
-    sysEUMBBARWrite( srcAddr, val );
-    return 0;
-}
-
-void epicSourcePrint(int Vect)
-    {
-    ULONG srcVal;
-
-    srcVal = sysEUMBBARRead(SrcVecTable[Vect].srcAddr);
-    PRINT("%s\n", SrcVecTable[Vect].srcName);
-    PRINT("Address   = 0x%lx\n", SrcVecTable[Vect].srcAddr);
-    PRINT("Vector    = %ld\n", (srcVal & 0x000000FF) );
-    PRINT("Mask      = %ld\n", srcVal >> 31);
-    PRINT("Activitiy = %ld\n", (srcVal & 40000000) >> 30);
-    PRINT("Polarity  = %ld\n", (srcVal & 0x00800000) >> 23);
-    PRINT("Sense     = %ld\n", (srcVal & 0x00400000) >> 22);
-    PRINT("Priority  = %ld\n", (srcVal & 0x000F0000) >> 16);
-    }
diff --git a/arch/powerpc/cpu/mpc824x/drivers/epic/epic2.S b/arch/powerpc/cpu/mpc824x/drivers/epic/epic2.S
deleted file mode 100644 (file)
index 52d19aa..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/**************************************
- *
- * copyright @ Motorola, 1999
- *
- **************************************/
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-#include <asm/processor.h>
-
-/*********************************************
- * function: CoreExtIntEnable
- *
- * description: Enable 603e core external interrupt
- *
- * note: mtmsr is context-synchronization
- **********************************************/
-               .text
-               .align 2
-       .global CoreExtIntEnable
-CoreExtIntEnable:
-        mfmsr    r3
-
-        ori      r3,r3,0x8000         /* enable external interrupt */
-        mtmsr    r3
-
-        bclr 20, 0
-
-/*******************************************
- * function: CoreExtIntDisable
- *
- * description: Disable 603e core external interrupt
- *
- * note:
- *******************************************/
-               .text
-               .align 2
-       .global CoreExtIntDisable
-CoreExtIntDisable:
-       mfmsr    r4
-
-       xor     r3,r3,r3
-       or      r3,r3,r4
-
-       andis.  r4,r4,0xffff
-       andi.   r3,r3,0x7fff         /* disable external interrupt */
-
-       or      r3,r3,r4
-       mtmsr    r3
-
-       bclr 20, 0
-
-/*********************************************************
- * function: epicEOI
- *
- * description: signal the EOI and restore machine status
- *       Input: r3 - value of eumbbar
- *       Output: r3 - value of eumbbar
- *               r4 - ISR vector value
- * note:
- ********************************************************/
-               .text
-               .align 2
-       .global epicEOI
-epicEOI:
-       lis     r5,0x0006               /* Build End Of Interrupt Register offset */
-       ori     r5,r5,0x00b0
-       xor     r7,r7,r7                /* Clear r7 */
-       stwbrx  r7,r5,r3            /* Save r7, writing to this register will
-                                            * intidate the end of processing the
-                                            * highest interrupt.
-                            */
-       sync
-
-       /* ---RESTORE MACHINE STATE */
-       mfmsr   r13                     /* Clear Recoverable Interrupt bit in MSR */
-       or      r7,r7,r13
-
-       andis.  r7,r7,0xffff
-       andi.   r13,r13,0x7ffd  /* (and disable interrupts) */
-       or      r13,r13,r7
-       mtmsr   r13
-
-       lwz   r13,0x1c(r1)      /* pull ctr */
-       mtctr r13
-
-       lwz   r13,0x18(r1)      /* pull xer */
-       mtctr r13
-
-       lwz   r13,0x14(r1)      /* pull lr */
-       mtctr r13
-
-       lwz         r13,0x10(r1)        /* Pull SRR1 from stack */
-       mtspr   SRR1,r13            /* Restore SRR1 */
-
-       lwz         r13,0xc(r1)     /* Pull SRR0 from stack */
-       mtspr   SRR0,r13            /* Restore SRR0 */
-
-       lwz         r13,0x8(r1)     /* Pull User stack pointer from stack */
-       mtspr   SPRG1,r13           /* Restore SPRG1 */
-
-       lwz     r4,0x4(r1)          /* vector value */
-       lwz     r3,0x0(r1)          /* eumbbar */
-       sync
-
-       addi    r1,r1,0x20      /* Deallocate stack */
-       mtspr   SPRG0,r1        /* Save updated Supervisor stack pointer */
-       mfspr   r1,SPRG1        /* Restore User stack pointer */
-
-       bclr     20,0
-
-/***********************************************************
- * function: exception routine called by exception vector
- *           at 0x500, external interrupt
- *
- * description: Kahlua EPIC controller
- *
- * input:  r3 - content of eumbbar
- * output: r3 - ISR return value
- *         r4 - Interrupt vector number
- * note:
- ***********************************************************/
-
-       .text
-          .align 2
-       .global epic_exception
-
-epic_exception:
-
-       /*---SAVE MACHINE STATE TO A STACK */
-       mtspr   SPRG1,r1        /* Save User stack pointer to SPRG1 */
-       mfspr   r1,SPRG0        /* Load Supervisor stack pointer into r1 */
-
-       stwu    r3,-0x20(r1)    /* Push the value of eumbbar onto stack */
-
-       mfspr   r3,SPRG1        /* Push User stack pointer onto stack */
-       stw         r3,0x8(r1)
-       mfspr   r3,SRR0     /* Push SRR0 onto stack */
-       stw         r1,0xc(r1)
-       mfspr   r3,SRR1     /* Push SRR1 onto stack */
-       stw         r3,0x10(r1)
-       mflr    r3
-       stw     r3,0x14(r1) /* Push LR */
-       mfxer   r3
-       stw     r3,0x18(r1) /* Push Xer */
-       mfctr   r3
-       stw     r3,0x1c(r1) /* Push CTR */
-
-       mtspr   SPRG0,r1        /* Save updated Supervisor stack pointer
-                                        * value to SPRG0
-                        */
-       mfmsr   r3
-       ori         r3,r3,0x0002        /* Set Recoverable Interrupt bit in MSR */
-       mtmsr   r3
-
-       /* ---READ IN THE EUMBAR REGISTER */
-    lwz     r6,0(r1)       /* this is eumbbar */
-    sync
-
-       /* ---READ EPIC REGISTER:       PROCESSOR INTERRUPT ACKNOWLEDGE REGISTER */
-       lis     r5,0x0006               /* Build Interrupt Acknowledge Register
-                                            * offset
-                            */
-       ori     r5,r5,0x00a0
-       lwbrx   r7,r5,r6    /* Load interrupt vector into r7 */
-       sync
-
-       /* --MASK OFF ALL BITS EXCEPT THE VECTOR */
-       xor     r3,r3,r3
-    xor r4,r4,r4
-       or    r3, r3, r6        /*  eumbbar in r3 */
-       andi. r4,r7,0x00ff      /* Mask off bits, vector in r4 */
-
-    stw     r4,0x04(r1)     /* save the vector value */
-
-    lis     r5,epicISR@ha
-       ori     r5,r5,epicISR@l
-       mtlr    r5
-       blrl
-
-    xor   r30,r30,r30
-       or    r30,r30,r3        /* save the r3 which containts the return value from epicISR */
-
-       /* ---READ IN THE EUMBAR REGISTER */
-    lwz     r3,0(r1)
-    sync
-
-    lis     r5,epicEOI@ha
-       ori     r5,r5,epicEOI@l
-       mtlr    r5
-       blrl
-
-    xor  r3,r3,r3
-       or   r3,r3,r30           /* restore the ISR return value  */
-
-       bclr     20,0
diff --git a/arch/powerpc/cpu/mpc824x/drivers/epic/epicutil.S b/arch/powerpc/cpu/mpc824x/drivers/epic/epicutil.S
deleted file mode 100644 (file)
index 4877050..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/**************************************
- *
- * copyright @ Motorola, 1999
- *
- *
- * This file contains two commonly used
- * lower level utility routines.
- *
- * The utility routines are also in other
- * Kahlua device driver libraries. The
- * need to be linked in only once.
- **************************************/
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-/**********************************************************
- * function: load_runtime_reg
- *
- * input:  r3 - value of eumbbar
- *         r4 - register offset in embedded utility space
- *
- * output: r3 - register content
- **********************************************************/
-      .text
-      .align 2
-      .global load_runtime_reg
-
-load_runtime_reg:
-
-                 xor r5,r5,r5
-         or  r5,r5,r3       /* save eumbbar */
-
-             lwbrx     r3,r4,r5
-             sync
-
-             bclr 20, 0
-
-/****************************************************************
- * function: store_runtime_reg
- *
- * input: r3 - value of eumbbar
- *        r4 - register offset in embedded utility space
- *        r5 - new value to be stored
- *
- ****************************************************************/
-          .text
-          .align 2
-          .global store_runtime_reg
-store_runtime_reg:
-
-                 xor r0,r0,r0
-
-             stwbrx r5,  r4, r3
-             sync
-
-                 bclr   20,0
diff --git a/arch/powerpc/cpu/mpc824x/drivers/errors.h b/arch/powerpc/cpu/mpc824x/drivers/errors.h
deleted file mode 100644 (file)
index 20794a2..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/*     Copyright Motorola, Inc. 1993, 1994
-       ALL RIGHTS RESERVED
-
-       You are hereby granted a copyright license to use, modify, and
-       distribute the SOFTWARE so long as this entire notice is retained
-       without alteration in any modified and/or redistributed versions,
-       and that such modified versions are clearly identified as such.
-       No licenses are granted by implication, estoppel or otherwise under
-       any patents or trademarks of Motorola, Inc.
-
-       The SOFTWARE is provided on an "AS IS" basis and without warranty.
-       To the maximum extent permitted by applicable law, MOTOROLA DISCLAIMS
-       ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING IMPLIED
-       WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
-       PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH
-       REGARD TO THE SOFTWARE (INCLUDING ANY MODIFIED VERSIONS
-       THEREOF) AND ANY ACCOMPANYING WRITTEN MATERIALS.
-
-       To the maximum extent permitted by applicable law, IN NO EVENT SHALL
-       MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
-       (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF
-       BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
-       INFORMATION, OR OTHER PECUNIARY LOSS) ARISING OF THE USE OR
-       INABILITY TO USE THE SOFTWARE.   Motorola assumes no responsibility
-       for the maintenance and support of the SOFTWARE.
-
-*/
-
-
-#include "config.h"
-
-/*
-        1         2         3         4         5         6         7         8
-01234567890123456789012345678901234567890123456789012345678901234567890123456789
-*/
-/* List define statements here */
-
-/* These are for all the toolboxes and functions to use. These will help
-to standardize the error handling in the current project */
-
-                               /* this is the "data type" for the error
-                               messages in the system */
-#define STATUS unsigned int
-
-                               /* this is a success status code */
-#define SUCCESS 1
-
-                               /* likewise this is failure */
-#define FAILURE 0
-
-#define NUM_ERRORS 47
-
-/* This first section of "defines" are for error codes ONLY.  The called
-   routine will return one of these error codes to the caller.  If the final
-   returned code is "VALID", then everything is a-okay.  However, if one
-   of the functions returns a non-valid status, that error code should be
-   propogated back to all the callers.  At the end, the last caller will
-   call an error_processing function, and send in the status which was
-   returned.  It's up to the error_processing function to determine which
-   error occured (as indicated by the status), and print an appropriate
-   message back to the user.
-*/
-/*----------------------------------------------------------------------*/
-/* these are specifically for the parser routines                      */
-
-#define UNKNOWN_COMMAND                0xfb00 /* "unrecognized command " */
-#define UNKNOWN_REGISTER       0xfb01 /* "unknown register "*/
-#define ILLEGAL_RD_STAGE       0xfb02 /* cannot specify reg. family in range*/
-#define ILLEGAL_REG_FAMILY     0xfb03 /* "cannot specify a range of special
-                                       or miscellaneous registers"*/
-#define RANGE_CROSS_FAMILY     0xfb04 /* "cannot specify a range across
-                                       register families" */
-#define UNIMPLEMENTED_STAGE    0xfb05 /* invalid rd or rmm parameter format */
-#define REG_NOT_WRITEABLE      0xfb06 /* "unknown operator in arguements"*/
-#define INVALID_FILENAME       0xfb07 /* "invalid download filename" */
-#define INVALID_BAUD_RATE      0xfb08  /* invalid baud rate from sb command */
-#define UNSUPPORTED_REGISTER   0xfb09  /* Special register is not supported */
-#define FOR_BOARD_ONLY         0xfb0a  /* "Not available for Unix." */
-
-
-/*----------------------------------------------------------------------*/
-/* these are for the error checking toolbox                            */
-
-#define INVALID                        0xfd00 /* NOT valid */
-#define VALID                  0xfd01 /* valid */
-
-                                       /* This error is found in the fcn:
-                                       is_right_size_input() to indicate
-                                       that the input was not 8 characters
-                                       long.  */
-#define INVALID_SIZE           0xfd02
-
-                                       /* This error is found in the fcn:
-                                       is_valid_address_range() to indicate
-                                       that the address given falls outside
-                                       of valid memory defined by MEM_START
-                                       to MEM_END.
-                                       */
-#define OUT_OF_BOUNDS_ADDRESS  0xfd03
-
-                                       /* This error is found in the fcn:
-                                       is_valid_hex_input() to indicate that
-                                       one of more of the characters entered
-                                       are not valid hex characters.  Valid
-                                       hex characters are 0-9, A-F, a-f.
-                                       */
-#define INVALID_HEX_INPUT      0xfd04
-
-                                       /* This error is found in the fcn:
-                                       is_valid_register_number() to indicate
-                                       that a given register does not exist.
-                                       */
-#define REG_NOT_READABLE       0xfd05
-
-                                       /* This error is found in the fcn:
-                                       is_word_aligned_address() to indicate
-                                       that the given address is not word-
-                                       aligned.  A word-aligned address ends
-                                       in 0x0,0x4,0x8,0xc.
-                                       */
-#define        NOT_WORD_ALIGNED        0xfd07
-
-                                       /* This error is found in the fcn:
-                                       is_valid_address_range() to indicate
-                                       that the starting address is greater
-                                       than the ending address.
-                                       */
-#define REVERSED_ADDRESS       0xfd08
-
-                                       /* this error tells us that the address
-                                       specified as the destination is within
-                                       the source addresses  */
-#define RANGE_OVERLAP          0xfd09
-
-
-#define        ERROR                   0xfd0a /* An error occured */
-#define INVALID_PARAM          0xfd0b /* "invalid input parameter " */
-
-
-#define INVALID_FLAG           0xfd0c  /* invalid flag */
-
-/*----------------------------------------------------------------------*/
-/* these are for the getarg toolbox                                    */
-
-#define INVALID_NUMBER_ARGS    0xFE00 /* invalid number of commd arguements */
-#define UNKNOWN_PARAMETER      0xFE01 /* "unknown type of parameter "*/
-
-
-/*----------------------------------------------------------------------*/
-/* these are for the tokenizer toolbox                                 */
-
-#define ILLEGAL_CHARACTER      0xFF00 /* unrecognized char. in input stream*/
-#define TTL_NOT_SORTED         0xFF01 /* token translation list not sorted */
-#define TTL_NOT_DEFINED                0xFF02 /* token translation list not assigned*/
-#define INVALID_STRING         0xFF03 /* unable to extract string from input */
-#define BUFFER_EMPTY           0xFF04 /* "input buffer is empty" */
-#define INVALID_MODE           0xFF05 /* input buf is in an unrecognized mode*/
-#define TOK_INTERNAL_ERROR     0xFF06 /* "internal tokenizer error" */
-#define TOO_MANY_IBS           0xFF07 /* "too many open input buffers" */
-#define NO_OPEN_IBS            0xFF08 /* "no open input buffers" */
-
-
-/* these are for the read from screen toolbox */
-
-#define RESERVED_WORD          0xFC00 /* used a reserved word as an arguement*/
-
-
-/* these are for the breakpoint routines */
-
-#define FULL_BPDS              0xFA00 /* breakpoint data structure is full */
-
-
-/* THESE are for the downloader */
-
-#define NOT_IN_S_RECORD_FORMAT 0xf900 /* "not in S-Record Format" */
-#define UNREC_RECORD_TYPE      0xf901 /* "unrecognized record type" */
-#define CONVERSION_ERROR       0xf902 /* "ascii to int conversion error" */
-#define INVALID_MEMORY         0xf903 /* "bad s-record memory address " */
-
-
-/* these are for the compression and decompression stuff */
-
-#define COMP_UNK_CHARACTER     0xf800 /* "unknown compressed character " */
-
-#define COMP_UNKNOWN_STATE     0xf801 /* "unknown binary state" */
-
-#define NOT_IN_COMPRESSED_FORMAT 0xf802 /* not in compressed S-Record format */
-
-
-/* these are for the DUART handling things */
-
-                                       /* "unrecognized serial port configuration" */
-#define UNKNOWN_PORT_STATE     0xf700
-
-
-/* these are for the register toolbox */
-
-                                       /* "cannot find register in special
-                                        purpose register file " */
-#define SPR_NOT_FOUND          0xf600
-
-
-/* these are for the duart specific stuff */
-
-                                       /* "transparent mode needs access to
-                                               two serial ports" */
-#define TM_NEEDS_BOTH_PORTS    0xf500
-
-
-/*----------------------------------------------------------------------*/
-/* these are specifically for the flash routines                       */
-#define FLASH_ERROR            0xf100          /* general flash error */
diff --git a/arch/powerpc/cpu/mpc824x/drivers/i2c/i2c.c b/arch/powerpc/cpu/mpc824x/drivers/i2c/i2c.c
deleted file mode 100644 (file)
index 3638ab0..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * (C) Copyright 2003
- * Gleb Natapov <gnatapov@mrv.com>
- * Some bits are taken from linux driver writen by adrian@humboldt.co.uk
- *
- * Hardware I2C driver for MPC107 PCI bridge.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-#undef I2CDBG
-
-#ifdef CONFIG_HARD_I2C
-#include <i2c.h>
-
-#define TIMEOUT (CONFIG_SYS_HZ/4)
-
-#define I2C_Addr ((unsigned *)(CONFIG_SYS_EUMB_ADDR + 0x3000))
-
-#define I2CADR &I2C_Addr[0]
-#define I2CFDR  &I2C_Addr[1]
-#define I2CCCR  &I2C_Addr[2]
-#define I2CCSR  &I2C_Addr[3]
-#define I2CCDR  &I2C_Addr[4]
-
-#define MPC107_CCR_MEN  0x80
-#define MPC107_CCR_MIEN 0x40
-#define MPC107_CCR_MSTA 0x20
-#define MPC107_CCR_MTX  0x10
-#define MPC107_CCR_TXAK 0x08
-#define MPC107_CCR_RSTA 0x04
-
-#define MPC107_CSR_MCF  0x80
-#define MPC107_CSR_MAAS 0x40
-#define MPC107_CSR_MBB  0x20
-#define MPC107_CSR_MAL  0x10
-#define MPC107_CSR_SRW  0x04
-#define MPC107_CSR_MIF  0x02
-#define MPC107_CSR_RXAK 0x01
-
-#define I2C_READ  1
-#define I2C_WRITE 0
-
-/* taken from linux include/asm-ppc/io.h */
-inline unsigned in_le32 (volatile unsigned *addr)
-{
-       unsigned ret;
-
-       __asm__ __volatile__ ("lwbrx %0,0,%1;\n"
-                             "twi 0,%0,0;\n"
-                             "isync":"=r" (ret): "r" (addr), "m" (*addr));
-       return ret;
-}
-
-inline void out_le32 (volatile unsigned *addr, int val)
-{
-       __asm__ __volatile__ ("stwbrx %1,0,%2; eieio":"=m" (*addr):"r" (val),
-                             "r" (addr));
-}
-
-#define writel(val, addr) out_le32(addr, val)
-#define readl(addr) in_le32(addr)
-
-void i2c_init (int speed, int slaveadd)
-{
-       /* stop I2C controller */
-       writel (0x0, I2CCCR);
-       /* set clock */
-       writel (0x1020, I2CFDR);
-       /* write slave address */
-       writel (slaveadd, I2CADR);
-       /* clear status register */
-       writel (0x0, I2CCSR);
-       /* start I2C controller */
-       writel (MPC107_CCR_MEN, I2CCCR);
-
-       return;
-}
-
-static __inline__ int i2c_wait4bus (void)
-{
-       ulong timeval = get_timer (0);
-
-       while (readl (I2CCSR) & MPC107_CSR_MBB)
-               if (get_timer (timeval) > TIMEOUT)
-                       return -1;
-
-       return 0;
-}
-
-static __inline__ int i2c_wait (int write)
-{
-       u32 csr;
-       ulong timeval = get_timer (0);
-
-       do {
-               csr = readl (I2CCSR);
-
-               if (!(csr & MPC107_CSR_MIF))
-                       continue;
-
-               writel (0x0, I2CCSR);
-
-               if (csr & MPC107_CSR_MAL) {
-#ifdef I2CDBG
-                       printf ("i2c_wait: MAL\n");
-#endif
-                       return -1;
-               }
-
-               if (!(csr & MPC107_CSR_MCF)) {
-#ifdef I2CDBG
-                       printf ("i2c_wait: unfinished\n");
-#endif
-                       return -1;
-               }
-
-               if (write == I2C_WRITE && (csr & MPC107_CSR_RXAK)) {
-#ifdef I2CDBG
-                       printf ("i2c_wait: No RXACK\n");
-#endif
-                       return -1;
-               }
-
-               return 0;
-       } while (get_timer (timeval) < TIMEOUT);
-
-#ifdef I2CDBG
-       printf ("i2c_wait: timed out\n");
-#endif
-       return -1;
-}
-
-static __inline__ int i2c_write_addr (u8 dev, u8 dir, int rsta)
-{
-       writel (MPC107_CCR_MEN | MPC107_CCR_MSTA | MPC107_CCR_MTX |
-               (rsta ? MPC107_CCR_RSTA : 0), I2CCCR);
-
-       writel ((dev << 1) | dir, I2CCDR);
-
-       if (i2c_wait (I2C_WRITE) < 0)
-               return 0;
-
-       return 1;
-}
-
-static __inline__ int __i2c_write (u8 * data, int length)
-{
-       int i;
-
-       writel (MPC107_CCR_MEN | MPC107_CCR_MSTA | MPC107_CCR_MTX, I2CCCR);
-
-       for (i = 0; i < length; i++) {
-               writel (data[i], I2CCDR);
-
-               if (i2c_wait (I2C_WRITE) < 0)
-                       break;
-       }
-
-       return i;
-}
-
-static __inline__ int __i2c_read (u8 * data, int length)
-{
-       int i;
-
-       writel (MPC107_CCR_MEN | MPC107_CCR_MSTA |
-               ((length == 1) ? MPC107_CCR_TXAK : 0), I2CCCR);
-
-       /* dummy read */
-       readl (I2CCDR);
-
-       for (i = 0; i < length; i++) {
-               if (i2c_wait (I2C_READ) < 0)
-                       break;
-
-               /* Generate ack on last next to last byte */
-               if (i == length - 2)
-                       writel (MPC107_CCR_MEN | MPC107_CCR_MSTA |
-                               MPC107_CCR_TXAK, I2CCCR);
-
-               /* Generate stop on last byte */
-               if (i == length - 1)
-                       writel (MPC107_CCR_MEN | MPC107_CCR_TXAK, I2CCCR);
-
-               data[i] = readl (I2CCDR);
-       }
-
-       return i;
-}
-
-int i2c_read (u8 dev, uint addr, int alen, u8 * data, int length)
-{
-       int i = 0;
-       u8 *a = (u8 *) & addr;
-
-       if (i2c_wait4bus () < 0)
-               goto exit;
-
-       if (i2c_write_addr (dev, I2C_WRITE, 0) == 0)
-               goto exit;
-
-       if (__i2c_write (&a[4 - alen], alen) != alen)
-               goto exit;
-
-       if (i2c_write_addr (dev, I2C_READ, 1) == 0)
-               goto exit;
-
-       i = __i2c_read (data, length);
-
-exit:
-       writel (MPC107_CCR_MEN, I2CCCR);
-
-       return !(i == length);
-}
-
-int i2c_write (u8 dev, uint addr, int alen, u8 * data, int length)
-{
-       int i = 0;
-       u8 *a = (u8 *) & addr;
-
-       if (i2c_wait4bus () < 0)
-               goto exit;
-
-       if (i2c_write_addr (dev, I2C_WRITE, 0) == 0)
-               goto exit;
-
-       if (__i2c_write (&a[4 - alen], alen) != alen)
-               goto exit;
-
-       i = __i2c_write (data, length);
-
-exit:
-       writel (MPC107_CCR_MEN, I2CCCR);
-
-       return !(i == length);
-}
-
-int i2c_probe (uchar chip)
-{
-       int tmp;
-
-       /*
-        * Try to read the first location of the chip.  The underlying
-        * driver doesn't appear to support sending just the chip address
-        * and looking for an <ACK> back.
-        */
-       udelay (10000);
-       return i2c_read (chip, 0, 1, (uchar *) &tmp, 1);
-}
-
-#endif /* CONFIG_HARD_I2C */
diff --git a/arch/powerpc/cpu/mpc824x/interrupts.c b/arch/powerpc/cpu/mpc824x/interrupts.c
deleted file mode 100644 (file)
index fad103f..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * (C) Copyright 2000-2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-#include <commproc.h>
-#include "drivers/epic.h"
-
-int interrupt_init_cpu (unsigned *decrementer_count)
-{
-       *decrementer_count = (get_bus_freq (0) / 4) / CONFIG_SYS_HZ;
-
-       /*
-        * It's all broken at the moment and I currently don't need
-        * interrupts. If you want to fix it, have a look at the epic
-        * drivers in dink32 v12. They do everthing and Motorola said
-        * I could use the dink source in this project as long as
-        * copyright notices remain intact.
-        */
-
-       epicInit (EPIC_DIRECT_IRQ, 0);
-       /* EPIC won't generate INT unless Current Task Pri < 15 */
-       epicCurTaskPrioSet(0);
-
-       return (0);
-}
-
-/****************************************************************************/
-
-/*
- * Handle external interrupts
- */
-void external_interrupt (struct pt_regs *regs)
-{
-       register unsigned long temp;
-
-       pci_readl (CONFIG_SYS_EUMB_ADDR + EPIC_PROC_INT_ACK_REG, temp);
-       sync ();                                        /* i'm not convinced this is needed, but dink source has it */
-       temp &= 0xff;                           /*get vector */
-
-       /*TODO: handle them -... */
-       epicEOI ();
-}
-
-/****************************************************************************/
-
-/*
- * blank int handlers.
- */
-
-void
-irq_install_handler (int vec, interrupt_handler_t * handler, void *arg)
-{
-}
-
-void irq_free_handler (int vec)
-{
-
-}
-
-/*TODO: some handlers for winbond and 87308 interrupts
- and what about generic pci inteerupts?
- vga?
- */
-
-void timer_interrupt_cpu (struct pt_regs *regs)
-{
-       /* nothing to do here */
-       return;
-}
diff --git a/arch/powerpc/cpu/mpc824x/pci.c b/arch/powerpc/cpu/mpc824x/pci.c
deleted file mode 100644 (file)
index 1257b08..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * arch/powerpc/kernel/mpc10x_common.c
- *
- * Common routines for the Motorola SPS MPC106, MPC107 and MPC8240 Host bridge,
- * Mem ctlr, EPIC, etc.
- *
- * Author: Mark A. Greer
- *         mgreer@mvista.com
- *
- * Copyright 2001 MontaVista Software Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-#ifdef CONFIG_PCI
-
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <mpc824x.h>
-
-void pci_mpc824x_init (struct pci_controller *hose)
-{
-       hose->first_busno = 0;
-       hose->last_busno = 0xff;
-
-       /* System memory space */
-       pci_set_region(hose->regions + 0,
-                      CHRP_PCI_MEMORY_BUS,
-                      CHRP_PCI_MEMORY_PHYS,
-                      CHRP_PCI_MEMORY_SIZE,
-                      PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
-
-       /* PCI memory space */
-       pci_set_region(hose->regions + 1,
-                      CHRP_PCI_MEM_BUS,
-                      CHRP_PCI_MEM_PHYS,
-                      CHRP_PCI_MEM_SIZE,
-                      PCI_REGION_MEM);
-
-       /* ISA/PCI memory space */
-       pci_set_region(hose->regions + 2,
-                      CHRP_ISA_MEM_BUS,
-                      CHRP_ISA_MEM_PHYS,
-                      CHRP_ISA_MEM_SIZE,
-                      PCI_REGION_MEM);
-
-       /* PCI I/O space */
-       pci_set_region(hose->regions + 3,
-                      CHRP_PCI_IO_BUS,
-                      CHRP_PCI_IO_PHYS,
-                      CHRP_PCI_IO_SIZE,
-                      PCI_REGION_IO);
-
-       /* ISA/PCI I/O space */
-       pci_set_region(hose->regions + 4,
-                      CHRP_ISA_IO_BUS,
-                      CHRP_ISA_IO_PHYS,
-                      CHRP_ISA_IO_SIZE,
-                      PCI_REGION_IO);
-
-       hose->region_count = 5;
-
-       pci_setup_indirect(hose,
-                          CHRP_REG_ADDR,
-                          CHRP_REG_DATA);
-
-       pci_register_hose(hose);
-
-       hose->last_busno = pci_hose_scan(hose);
-}
-
-#endif
diff --git a/arch/powerpc/cpu/mpc824x/speed.c b/arch/powerpc/cpu/mpc824x/speed.c
deleted file mode 100644 (file)
index e6064a1..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Gregory E. Allen, gallen@arlut.utexas.edu
- * Applied Research Laboratories, The University of Texas at Austin
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-/* NOTE: This describes the proper use of this file.
- *
- * CONFIG_SYS_CLK_FREQ should be defined as the input frequency on
- * PCI_SYNC_IN .
- *
- * CONFIG_PLL_PCI_TO_MEM_MULTIPLIER is only required on MPC8240
- * boards. It should be defined as the PCI to Memory Multiplier as
- * documented in the MPC8240 Hardware Specs.
- *
- * Other mpc824x boards don't need CONFIG_PLL_PCI_TO_MEM_MULTIPLIER
- * because they can determine it from the PCR.
- *
- * Gary Milliorn <gary.milliorn@motorola.com> (who should know since
- * he designed the Sandpoint) told us that the PCR is not in all revs
- * of the MPC8240 CPU, so it's not guaranteeable and we cannot do
- * away with CONFIG_PLL_PCI_TO_MEM_MULTIPLIER altogether.
- */
-/* ------------------------------------------------------------------------- */
-
-/* This gives the PCI to Memory multiplier times 10 */
-/* The index is the value of PLL_CFG[0:4] */
-/* This is documented in the MPC8240/5 Hardware Specs */
-
-short pll_pci_to_mem_multiplier[] = {
-#if defined(CONFIG_MPC8240)
-       30, 30, 10, 10, 20, 10,  0, 10,
-       10,  0, 20,  0, 20,  0, 20,  0,
-       30,  0, 15,  0, 20,  0, 20,  0,
-       25,  0, 10,  0, 15, 15,  0,  0,
-#elif defined(CONFIG_MPC8245)
-       30, 30, 10, 10, 20, 10, 10, 10,
-       10, 20, 20, 15, 20, 15, 20, 30,
-       30, 40, 15, 40, 20, 25, 20, 40,
-       25, 20, 10, 20, 15, 15, 15,  0,
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-};
-
-#define CU824_PLL_STATE_REG    0xFE80002F
-#define PCR                    0x800000E2
-
-/* ------------------------------------------------------------------------- */
-
-/* compute the memory bus clock frequency */
-ulong get_bus_freq (ulong dummy)
-{
-       unsigned char pll_cfg;
-#if defined(CONFIG_MPC8240) && !defined(CONFIG_CU824)
-       return (CONFIG_SYS_CLK_FREQ) * (CONFIG_PLL_PCI_TO_MEM_MULTIPLIER);
-#elif defined(CONFIG_CU824)
-       pll_cfg = *(volatile unsigned char *) (CU824_PLL_STATE_REG);
-       pll_cfg &= 0x1f;
-#else
-       CONFIG_READ_BYTE(PCR, pll_cfg);
-       pll_cfg = (pll_cfg >> 3) & 0x1f;
-#endif
-       return ((CONFIG_SYS_CLK_FREQ) * pll_pci_to_mem_multiplier[pll_cfg] + 5) / 10;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/* This gives the Memory to CPU Core multiplier times 10 */
-/* The index is the value of PLLRATIO in HID1 */
-/* This is documented in the MPC8240 Hardware Specs */
-/* This is not documented for MPC8245 ? FIXME */
-short pllratio_to_factor[] = {
-     0,  0,  0, 10, 20, 20, 25, 45,
-    30,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 10,  0,  0,  0, 45,
-    30,  0, 40,  0,  0,  0, 35,  0,
-};
-
-/* compute the CPU and memory bus clock frequencies */
-int get_clocks (void)
-{
-       uint hid1 = mfspr(HID1);
-       hid1 = (hid1 >> (32-5)) & 0x1f;
-       gd->cpu_clk = (pllratio_to_factor[hid1] * get_bus_freq(0) + 5)
-                         / 10;
-       gd->bus_clk = get_bus_freq(0);
-       return (0);
-}
diff --git a/arch/powerpc/cpu/mpc824x/start.S b/arch/powerpc/cpu/mpc824x/start.S
deleted file mode 100644 (file)
index 55238df..0000000
+++ /dev/null
@@ -1,724 +0,0 @@
-/*
- *  Copyright (C) 1998 Dan Malek <dmalek@jlc.net>
- *  Copyright (C) 1999 Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
- *  Copyright (C) 2000,2001,2002 Wolfgang Denk <wd@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* U-Boot - Startup Code for PowerPC based Embedded Boards
- *
- *
- * The processor starts at 0x00000100 and the code is executed
- * from flash. The code is organized to be at an other address
- * in memory, but as long we don't jump around before relocating.
- * board_init lies at a quite high address and when the cpu has
- * jumped there, everything is ok.
- * This works because the cpu gives the FLASH (CS0) the whole
- * address space at startup, and board_init lies as a echo of
- * the flash somewhere up there in the memorymap.
- *
- * board_init will change CS0 to be positioned at the correct
- * address and (s)dram will be positioned at address 0
- */
-#include <asm-offsets.h>
-#include <config.h>
-#include <mpc824x.h>
-#include <version.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-#include <asm/u-boot.h>
-
-/* We don't want the MMU yet.
-*/
-#undef MSR_KERNEL
-/* FP, Machine Check and Recoverable Interr. */
-#define MSR_KERNEL ( MSR_FP | MSR_ME | MSR_RI )
-
-/*
- * Set up GOT: Global Offset Table
- *
- * Use r12 to access the GOT
- */
-       START_GOT
-       GOT_ENTRY(_GOT2_TABLE_)
-       GOT_ENTRY(_FIXUP_TABLE_)
-
-       GOT_ENTRY(_start)
-       GOT_ENTRY(_start_of_vectors)
-       GOT_ENTRY(_end_of_vectors)
-       GOT_ENTRY(transfer_to_handler)
-
-       GOT_ENTRY(__init_end)
-       GOT_ENTRY(__bss_end)
-       GOT_ENTRY(__bss_start)
-       END_GOT
-
-/*
- * r3 - 1st arg to board_init(): IMMP pointer
- * r4 - 2nd arg to board_init(): boot flag
- */
-       .text
-       .long   0x27051956              /* U-Boot Magic Number                  */
-       .globl  version_string
-version_string:
-       .ascii U_BOOT_VERSION_STRING, "\0"
-
-       . = EXC_OFF_SYS_RESET
-       .globl  _start
-_start:
-       /* Initialize machine status; enable machine check interrupt            */
-       /*----------------------------------------------------------------------*/
-       li      r3, MSR_KERNEL          /* Set FP, ME, RI flags */
-       mtmsr   r3
-       mtspr   SRR1, r3                /* Make SRR1 match MSR */
-
-       addis   r0,0,0x0000             /* lets make sure that r0 is really 0 */
-       mtspr   HID0, r0                /* disable I and D caches */
-
-       mfspr   r3, ICR                 /* clear Interrupt Cause Register */
-
-       mfmsr   r3                      /* turn off address translation */
-       addis   r4,0,0xffff
-       ori     r4,r4,0xffcf
-       and     r3,r3,r4
-       mtmsr   r3
-       isync
-       sync                            /* the MMU should be off... */
-
-
-in_flash:
-       /*
-        * Setup BATs - cannot be done in C since we don't have a stack yet
-        */
-       bl      setup_bats
-
-       /* Enable MMU.
-        */
-       mfmsr   r3
-       ori     r3, r3, (MSR_IR | MSR_DR)
-       mtmsr   r3
-
-       /* Enable and invalidate data cache.
-        */
-       mfspr   r3, HID0
-       mr      r2, r3
-       ori     r3, r3, HID0_DCE | HID0_DCI
-       ori     r2, r2, HID0_DCE
-       sync
-       mtspr   HID0, r3
-       mtspr   HID0, r2
-       sync
-
-       /* Allocate Initial RAM in data cache.
-        */
-       lis     r3, CONFIG_SYS_INIT_RAM_ADDR@h
-       ori     r3, r3, CONFIG_SYS_INIT_RAM_ADDR@l
-       li      r2, 128
-       mtctr   r2
-1:
-       dcbz    r0, r3
-       addi    r3, r3, 32
-       bdnz    1b
-
-       /* Lock way0 in data cache.
-        */
-       mfspr   r3, 1011
-       lis     r2, 0xffff
-       ori     r2, r2, 0xff1f
-       and     r3, r3, r2
-       ori     r3, r3, 0x0080
-       sync
-       mtspr   1011, r3
-
-       /*
-        * Thisk the stack pointer *somewhere* sensible. Doesnt
-        * matter much where as we'll move it when we relocate
-        */
-       lis     r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@h
-       ori     r1, r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@l
-
-       li      r0, 0                   /* Make room for stack frame header and */
-       stwu    r0, -4(r1)              /* clear final stack frame so that      */
-       stwu    r0, -4(r1)              /* stack backtraces terminate cleanly   */
-
-       /* let the C-code set up the rest                                       */
-       /*                                                                      */
-       /* Be careful to keep code relocatable !                                */
-       /*----------------------------------------------------------------------*/
-
-       GET_GOT                 /* initialize GOT access                        */
-
-       /* r3: IMMR */
-       bl      cpu_init_f      /* run low-level CPU init code     (from Flash) */
-
-       bl      board_init_f    /* run 1st part of board init code (from Flash) */
-
-       /* NOTREACHED - board_init_f() does not return */
-
-
-       .globl  _start_of_vectors
-_start_of_vectors:
-
-/* Machine check */
-       STD_EXCEPTION(EXC_OFF_MACH_CHCK, MachineCheck, MachineCheckException)
-
-/* Data Storage exception.  "Never" generated on the 860. */
-       STD_EXCEPTION(EXC_OFF_DATA_STOR, DataStorage, UnknownException)
-
-/* Instruction Storage exception.  "Never" generated on the 860. */
-       STD_EXCEPTION(EXC_OFF_INS_STOR, InstStorage, UnknownException)
-
-/* External Interrupt exception. */
-       STD_EXCEPTION(EXC_OFF_EXTERNAL, ExtInterrupt, external_interrupt)
-
-/* Alignment exception. */
-       . = EXC_OFF_ALIGN
-Alignment:
-       EXCEPTION_PROLOG(SRR0, SRR1)
-       mfspr   r4,DAR
-       stw     r4,_DAR(r21)
-       mfspr   r5,DSISR
-       stw     r5,_DSISR(r21)
-       addi    r3,r1,STACK_FRAME_OVERHEAD
-       EXC_XFER_TEMPLATE(Alignment, AlignmentException, MSR_KERNEL, COPY_EE)
-
-/* Program check exception */
-       . = EXC_OFF_PROGRAM
-ProgramCheck:
-       EXCEPTION_PROLOG(SRR0, SRR1)
-       addi    r3,r1,STACK_FRAME_OVERHEAD
-       EXC_XFER_TEMPLATE(ProgramCheck, ProgramCheckException,
-               MSR_KERNEL, COPY_EE)
-
-       /* No FPU on MPC8xx. This exception is not supposed to happen.
-       */
-       STD_EXCEPTION(EXC_OFF_FPUNAVAIL, FPUnavailable, UnknownException)
-
-       /* I guess we could implement decrementer, and may have
-        * to someday for timekeeping.
-        */
-       STD_EXCEPTION(EXC_OFF_DECR, Decrementer, timer_interrupt)
-       STD_EXCEPTION(0xa00, Trap_0a, UnknownException)
-       STD_EXCEPTION(0xb00, Trap_0b, UnknownException)
-       STD_EXCEPTION(0xc00, SystemCall, UnknownException)
-
-       STD_EXCEPTION(EXC_OFF_TRACE, SingleStep, UnknownException)
-
-       STD_EXCEPTION(EXC_OFF_FPUNASSIST, Trap_0e, UnknownException)
-       STD_EXCEPTION(EXC_OFF_PMI, Trap_0f, UnknownException)
-
-       STD_EXCEPTION(EXC_OFF_ITME, InstructionTransMiss, UnknownException)
-       STD_EXCEPTION(EXC_OFF_DLTME, DataLoadTransMiss, UnknownException)
-       STD_EXCEPTION(EXC_OFF_DSTME, DataStoreTransMiss, UnknownException)
-       STD_EXCEPTION(EXC_OFF_IABE, InstructionBreakpoint, DebugException)
-       STD_EXCEPTION(EXC_OFF_SMIE, SysManageInt, UnknownException)
-       STD_EXCEPTION(0x1500, Reserved5, UnknownException)
-       STD_EXCEPTION(0x1600, Reserved6, UnknownException)
-       STD_EXCEPTION(0x1700, Reserved7, UnknownException)
-       STD_EXCEPTION(0x1800, Reserved8, UnknownException)
-       STD_EXCEPTION(0x1900, Reserved9, UnknownException)
-       STD_EXCEPTION(0x1a00, ReservedA, UnknownException)
-       STD_EXCEPTION(0x1b00, ReservedB, UnknownException)
-       STD_EXCEPTION(0x1c00, ReservedC, UnknownException)
-       STD_EXCEPTION(0x1d00, ReservedD, UnknownException)
-       STD_EXCEPTION(0x1e00, ReservedE, UnknownException)
-       STD_EXCEPTION(0x1f00, ReservedF, UnknownException)
-
-       STD_EXCEPTION(EXC_OFF_RMTE, RunModeTrace, UnknownException)
-
-       .globl  _end_of_vectors
-_end_of_vectors:
-
-
-       . = 0x3000
-
-/*
- * This code finishes saving the registers to the exception frame
- * and jumps to the appropriate handler for the exception.
- * Register r21 is pointer into trap frame, r1 has new stack pointer.
- */
-       .globl  transfer_to_handler
-transfer_to_handler:
-       stw     r22,_NIP(r21)
-       lis     r22,MSR_POW@h
-       andc    r23,r23,r22
-       stw     r23,_MSR(r21)
-       SAVE_GPR(7, r21)
-       SAVE_4GPRS(8, r21)
-       SAVE_8GPRS(12, r21)
-       SAVE_8GPRS(24, r21)
-#if 0
-       andi.   r23,r23,MSR_PR
-       mfspr   r23,SPRG3               /* if from user, fix up tss.regs */
-       beq     2f
-       addi    r24,r1,STACK_FRAME_OVERHEAD
-       stw     r24,PT_REGS(r23)
-2:     addi    r2,r23,-TSS             /* set r2 to current */
-       tovirt(r2,r2,r23)
-#endif
-       mflr    r23
-       andi.   r24,r23,0x3f00          /* get vector offset */
-       stw     r24,TRAP(r21)
-       li      r22,0
-       stw     r22,RESULT(r21)
-       mtspr   SPRG2,r22               /* r1 is now kernel sp */
-#if 0
-       addi    r24,r2,TASK_STRUCT_SIZE /* check for kernel stack overflow */
-       cmplw   0,r1,r2
-       cmplw   1,r1,r24
-       crand   1,1,4
-       bgt     stack_ovf               /* if r2 < r1 < r2+TASK_STRUCT_SIZE */
-#endif
-       lwz     r24,0(r23)              /* virtual address of handler */
-       lwz     r23,4(r23)              /* where to go when done */
-       mtspr   SRR0,r24
-       ori     r20,r20,0x30            /* enable IR, DR */
-       mtspr   SRR1,r20
-       mtlr    r23
-       SYNC
-       rfi                             /* jump to handler, enable MMU */
-
-int_return:
-       mfmsr   r28             /* Disable interrupts */
-       li      r4,0
-       ori     r4,r4,MSR_EE
-       andc    r28,r28,r4
-       SYNC                    /* Some chip revs need this... */
-       mtmsr   r28
-       SYNC
-       lwz     r2,_CTR(r1)
-       lwz     r0,_LINK(r1)
-       mtctr   r2
-       mtlr    r0
-       lwz     r2,_XER(r1)
-       lwz     r0,_CCR(r1)
-       mtspr   XER,r2
-       mtcrf   0xFF,r0
-       REST_10GPRS(3, r1)
-       REST_10GPRS(13, r1)
-       REST_8GPRS(23, r1)
-       REST_GPR(31, r1)
-       lwz     r2,_NIP(r1)     /* Restore environment */
-       lwz     r0,_MSR(r1)
-       mtspr   SRR0,r2
-       mtspr   SRR1,r0
-       lwz     r0,GPR0(r1)
-       lwz     r2,GPR2(r1)
-       lwz     r1,GPR1(r1)
-       SYNC
-       rfi
-
-/* Cache functions.
-*/
-       .globl  icache_enable
-icache_enable:
-       mfspr   r5,HID0         /* turn on the I cache. */
-       ori     r5,r5,0x8800    /* Instruction cache only! */
-       addis   r6,0,0xFFFF
-       ori     r6,r6,0xF7FF
-       and     r6,r5,r6        /* clear the invalidate bit */
-       sync
-       mtspr   HID0,r5
-       mtspr   HID0,r6
-       isync
-       sync
-       blr
-
-       .globl  icache_disable
-icache_disable:
-       mfspr   r5,HID0
-       addis   r6,0,0xFFFF
-       ori     r6,r6,0x7FFF
-       and     r5,r5,r6
-       sync
-       mtspr   HID0,r5
-       isync
-       sync
-       blr
-
-       .globl  icache_status
-icache_status:
-       mfspr   r3, HID0
-       srwi    r3, r3, 15      /* >>15 & 1=> select bit 16 */
-       andi.   r3, r3, 1
-       blr
-
-       .globl  dcache_enable
-dcache_enable:
-       mfspr   r5,HID0         /* turn on the D cache. */
-       ori     r5,r5,0x4400    /* Data cache only! */
-       mfspr   r4, PVR         /* read PVR */
-       srawi   r3, r4, 16      /* shift off the least 16 bits */
-       cmpi    0, 0, r3, 0xC   /* Check for Max pvr */
-       bne     NotMax
-       ori     r5,r5,0x0040    /* setting the DCFA bit, for Max rev 1 errata */
-NotMax:
-       addis   r6,0,0xFFFF
-       ori     r6,r6,0xFBFF
-       and     r6,r5,r6        /* clear the invalidate bit */
-       sync
-       mtspr   HID0,r5
-       mtspr   HID0,r6
-       isync
-       sync
-       blr
-
-       .globl  dcache_disable
-dcache_disable:
-       mfspr   r5,HID0
-       addis   r6,0,0xFFFF
-       ori     r6,r6,0xBFFF
-       and     r5,r5,r6
-       sync
-       mtspr   HID0,r5
-       isync
-       sync
-       blr
-
-       .globl  dcache_status
-dcache_status:
-       mfspr   r3, HID0
-       srwi    r3, r3, 14      /* >>14 & 1=> select bit 17 */
-       andi.   r3, r3, 1
-       blr
-
-       .globl  dc_read
-dc_read:
-/*TODO : who uses this, what should it do?
-*/
-       blr
-
-
-       .globl get_pvr
-get_pvr:
-       mfspr   r3, PVR
-       blr
-
-
-/*------------------------------------------------------------------------------*/
-
-/*
- * void relocate_code (addr_sp, gd, addr_moni)
- *
- * This "function" does not return, instead it continues in RAM
- * after relocating the monitor code.
- *
- * r3 = dest
- * r4 = src
- * r5 = length in bytes
- * r6 = cachelinesize
- */
-       .globl  relocate_code
-relocate_code:
-
-       mr      r1,  r3         /* Set new stack pointer                */
-       mr      r9,  r4         /* Save copy of Global Data pointer     */
-       mr      r10, r5         /* Save copy of Destination Address     */
-
-       GET_GOT
-       mr      r3,  r5                         /* Destination Address  */
-#ifdef CONFIG_SYS_RAMBOOT
-       lis     r4, CONFIG_SYS_SDRAM_BASE@h             /* Source      Address  */
-       ori     r4, r4, CONFIG_SYS_SDRAM_BASE@l
-#else
-       lis     r4, CONFIG_SYS_MONITOR_BASE@h           /* Source      Address  */
-       ori     r4, r4, CONFIG_SYS_MONITOR_BASE@l
-#endif
-       lwz     r5, GOT(__init_end)
-       sub     r5, r5, r4
-       li      r6, CONFIG_SYS_CACHELINE_SIZE           /* Cache Line Size      */
-
-       /*
-        * Fix GOT pointer:
-        *
-        * New GOT-PTR = (old GOT-PTR - CONFIG_SYS_MONITOR_BASE) + Destination Address
-        *
-        * Offset:
-        */
-       sub     r15, r10, r4
-
-       /* First our own GOT */
-       add     r12, r12, r15
-       /* the the one used by the C code */
-       add     r30, r30, r15
-
-       /*
-        * Now relocate code
-        */
-
-       cmplw   cr1,r3,r4
-       addi    r0,r5,3
-       srwi.   r0,r0,2
-       beq     cr1,4f          /* In place copy is not necessary       */
-       beq     7f              /* Protect against 0 count              */
-       mtctr   r0
-       bge     cr1,2f
-
-       la      r8,-4(r4)
-       la      r7,-4(r3)
-1:     lwzu    r0,4(r8)
-       stwu    r0,4(r7)
-       bdnz    1b
-       b       4f
-
-2:     slwi    r0,r0,2
-       add     r8,r4,r0
-       add     r7,r3,r0
-3:     lwzu    r0,-4(r8)
-       stwu    r0,-4(r7)
-       bdnz    3b
-
-4:
-/* Unlock the data cache and invalidate locked area */
-       xor     r0, r0, r0
-       mtspr   1011, r0
-       lis     r4, CONFIG_SYS_INIT_RAM_ADDR@h
-       ori     r4, r4, CONFIG_SYS_INIT_RAM_ADDR@l
-       li      r0, 128
-       mtctr   r0
-41:
-       dcbi    r0, r4
-       addi    r4, r4, 32
-       bdnz    41b
-
-/*
- * Now flush the cache: note that we must start from a cache aligned
- * address. Otherwise we might miss one cache line.
- */
-       cmpwi   r6,0
-       add     r5,r3,r5
-       beq     7f              /* Always flush prefetch queue in any case */
-       subi    r0,r6,1
-       andc    r3,r3,r0
-       mr      r4,r3
-5:     dcbst   0,r4
-       add     r4,r4,r6
-       cmplw   r4,r5
-       blt     5b
-       sync                    /* Wait for all dcbst to complete on bus */
-       mr      r4,r3
-6:     icbi    0,r4
-       add     r4,r4,r6
-       cmplw   r4,r5
-       blt     6b
-7:     sync                    /* Wait for all icbi to complete on bus */
-       isync
-
-/*
- * We are done. Do not return, instead branch to second part of board
- * initialization, now running from RAM.
- */
-
-       addi    r0, r10, in_ram - _start + EXC_OFF_SYS_RESET
-       mtlr    r0
-       blr
-
-in_ram:
-
-       /*
-        * Relocation Function, r12 point to got2+0x8000
-        *
-        * Adjust got2 pointers, no need to check for 0, this code
-        * already puts a few entries in the table.
-        */
-       li      r0,__got2_entries@sectoff@l
-       la      r3,GOT(_GOT2_TABLE_)
-       lwz     r11,GOT(_GOT2_TABLE_)
-       mtctr   r0
-       sub     r11,r3,r11
-       addi    r3,r3,-4
-1:     lwzu    r0,4(r3)
-       cmpwi   r0,0
-       beq-    2f
-       add     r0,r0,r11
-       stw     r0,0(r3)
-2:     bdnz    1b
-
-       /*
-        * Now adjust the fixups and the pointers to the fixups
-        * in case we need to move ourselves again.
-        */
-       li      r0,__fixup_entries@sectoff@l
-       lwz     r3,GOT(_FIXUP_TABLE_)
-       cmpwi   r0,0
-       mtctr   r0
-       addi    r3,r3,-4
-       beq     4f
-3:     lwzu    r4,4(r3)
-       lwzux   r0,r4,r11
-       cmpwi   r0,0
-       add     r0,r0,r11
-       stw     r4,0(r3)
-       beq-    5f
-       stw     r0,0(r4)
-5:     bdnz    3b
-4:
-clear_bss:
-       /*
-        * Now clear BSS segment
-        */
-       lwz     r3,GOT(__bss_start)
-       lwz     r4,GOT(__bss_end)
-
-       cmplw   0, r3, r4
-       beq     6f
-
-       li      r0, 0
-5:
-       stw     r0, 0(r3)
-       addi    r3, r3, 4
-       cmplw   0, r3, r4
-       blt     5b
-6:
-
-       mr      r3, r9          /* Global Data pointer          */
-       mr      r4, r10         /* Destination Address          */
-       bl      board_init_r
-
-       /*
-        * Copy exception vector code to low memory
-        *
-        * r3: dest_addr
-        * r7: source address, r8: end address, r9: target address
-        */
-       .globl  trap_init
-trap_init:
-       mflr    r4                      /* save link register           */
-       GET_GOT
-       lwz     r7, GOT(_start)
-       lwz     r8, GOT(_end_of_vectors)
-
-       li      r9, 0x100               /* reset vector always at 0x100 */
-
-       cmplw   0, r7, r8
-       bgelr                           /* return if r7>=r8 - just in case */
-1:
-       lwz     r0, 0(r7)
-       stw     r0, 0(r9)
-       addi    r7, r7, 4
-       addi    r9, r9, 4
-       cmplw   0, r7, r8
-       bne     1b
-
-       /*
-        * relocate `hdlr' and `int_return' entries
-        */
-       li      r7, .L_MachineCheck - _start + EXC_OFF_SYS_RESET
-       li      r8, Alignment - _start + EXC_OFF_SYS_RESET
-2:
-       bl      trap_reloc
-       addi    r7, r7, 0x100           /* next exception vector        */
-       cmplw   0, r7, r8
-       blt     2b
-
-       li      r7, .L_Alignment - _start + EXC_OFF_SYS_RESET
-       bl      trap_reloc
-
-       li      r7, .L_ProgramCheck - _start + EXC_OFF_SYS_RESET
-       bl      trap_reloc
-
-       li      r7, .L_FPUnavailable - _start + EXC_OFF_SYS_RESET
-       li      r8, SystemCall - _start + EXC_OFF_SYS_RESET
-3:
-       bl      trap_reloc
-       addi    r7, r7, 0x100           /* next exception vector        */
-       cmplw   0, r7, r8
-       blt     3b
-
-       li      r7, .L_SingleStep - _start + EXC_OFF_SYS_RESET
-       li      r8, _end_of_vectors - _start + EXC_OFF_SYS_RESET
-4:
-       bl      trap_reloc
-       addi    r7, r7, 0x100           /* next exception vector        */
-       cmplw   0, r7, r8
-       blt     4b
-
-       mtlr    r4                      /* restore link register        */
-       blr
-
-       /* Setup the BAT registers.
-        */
-setup_bats:
-       lis     r4, CONFIG_SYS_IBAT0L@h
-       ori     r4, r4, CONFIG_SYS_IBAT0L@l
-       lis     r3, CONFIG_SYS_IBAT0U@h
-       ori     r3, r3, CONFIG_SYS_IBAT0U@l
-       mtspr   IBAT0L, r4
-       mtspr   IBAT0U, r3
-       isync
-
-       lis     r4, CONFIG_SYS_DBAT0L@h
-       ori     r4, r4, CONFIG_SYS_DBAT0L@l
-       lis     r3, CONFIG_SYS_DBAT0U@h
-       ori     r3, r3, CONFIG_SYS_DBAT0U@l
-       mtspr   DBAT0L, r4
-       mtspr   DBAT0U, r3
-       isync
-
-       lis     r4, CONFIG_SYS_IBAT1L@h
-       ori     r4, r4, CONFIG_SYS_IBAT1L@l
-       lis     r3, CONFIG_SYS_IBAT1U@h
-       ori     r3, r3, CONFIG_SYS_IBAT1U@l
-       mtspr   IBAT1L, r4
-       mtspr   IBAT1U, r3
-       isync
-
-       lis     r4, CONFIG_SYS_DBAT1L@h
-       ori     r4, r4, CONFIG_SYS_DBAT1L@l
-       lis     r3, CONFIG_SYS_DBAT1U@h
-       ori     r3, r3, CONFIG_SYS_DBAT1U@l
-       mtspr   DBAT1L, r4
-       mtspr   DBAT1U, r3
-       isync
-
-       lis     r4, CONFIG_SYS_IBAT2L@h
-       ori     r4, r4, CONFIG_SYS_IBAT2L@l
-       lis     r3, CONFIG_SYS_IBAT2U@h
-       ori     r3, r3, CONFIG_SYS_IBAT2U@l
-       mtspr   IBAT2L, r4
-       mtspr   IBAT2U, r3
-       isync
-
-       lis     r4, CONFIG_SYS_DBAT2L@h
-       ori     r4, r4, CONFIG_SYS_DBAT2L@l
-       lis     r3, CONFIG_SYS_DBAT2U@h
-       ori     r3, r3, CONFIG_SYS_DBAT2U@l
-       mtspr   DBAT2L, r4
-       mtspr   DBAT2U, r3
-       isync
-
-       lis     r4, CONFIG_SYS_IBAT3L@h
-       ori     r4, r4, CONFIG_SYS_IBAT3L@l
-       lis     r3, CONFIG_SYS_IBAT3U@h
-       ori     r3, r3, CONFIG_SYS_IBAT3U@l
-       mtspr   IBAT3L, r4
-       mtspr   IBAT3U, r3
-       isync
-
-       lis     r4, CONFIG_SYS_DBAT3L@h
-       ori     r4, r4, CONFIG_SYS_DBAT3L@l
-       lis     r3, CONFIG_SYS_DBAT3U@h
-       ori     r3, r3, CONFIG_SYS_DBAT3U@l
-       mtspr   DBAT3L, r4
-       mtspr   DBAT3U, r3
-       isync
-
-       /* Invalidate TLBs.
-        * -> for (val = 0; val < 0x20000; val+=0x1000)
-        * ->   tlbie(val);
-        */
-       lis     r3, 0
-       lis     r5, 2
-
-1:
-       tlbie   r3
-       addi    r3, r3, 0x1000
-       cmp     0, 0, r3, r5
-       blt     1b
-
-       blr
diff --git a/arch/powerpc/cpu/mpc824x/traps.c b/arch/powerpc/cpu/mpc824x/traps.c
deleted file mode 100644 (file)
index 6abf41d..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * linux/arch/powerpc/kernel/traps.c
- *
- * Copyright (C) 1995-1996  Gary Thomas (gdt@linuxppc.org)
- *
- * Modified by Cort Dougan (cort@cs.nmt.edu)
- * and Paul Mackerras (paulus@cs.anu.edu.au)
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * This file handles the architecture-dependent parts of hardware exceptions
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-/* Returns 0 if exception not found and fixup otherwise.  */
-extern unsigned long search_exception_table(unsigned long);
-
-/* THIS NEEDS CHANGING to use the board info structure.
-*/
-#define END_OF_MEM     0x00400000
-
-/*
- * Trap & Exception support
- */
-
-static void print_backtrace(unsigned long *sp)
-{
-       int cnt = 0;
-       unsigned long i;
-
-       printf("Call backtrace: ");
-       while (sp) {
-               if ((uint)sp > END_OF_MEM)
-                       break;
-
-               i = sp[1];
-               if (cnt++ % 7 == 0)
-                       printf("\n");
-               printf("%08lX ", i);
-               if (cnt > 32) break;
-               sp = (unsigned long *)*sp;
-       }
-       printf("\n");
-}
-
-void show_regs(struct pt_regs *regs)
-{
-       int i;
-
-       printf("NIP: %08lX XER: %08lX LR: %08lX REGS: %p TRAP: %04lx DAR: %08lX\n",
-              regs->nip, regs->xer, regs->link, regs, regs->trap, regs->dar);
-       printf("MSR: %08lx EE: %01x PR: %01x FP: %01x ME: %01x IR/DR: %01x%01x\n",
-              regs->msr, regs->msr&MSR_EE ? 1 : 0, regs->msr&MSR_PR ? 1 : 0,
-              regs->msr & MSR_FP ? 1 : 0,regs->msr&MSR_ME ? 1 : 0,
-              regs->msr&MSR_IR ? 1 : 0,
-              regs->msr&MSR_DR ? 1 : 0);
-
-       printf("\n");
-       for (i = 0;  i < 32;  i++) {
-               if ((i % 8) == 0)
-               {
-                       printf("GPR%02d: ", i);
-               }
-
-               printf("%08lX ", regs->gpr[i]);
-               if ((i % 8) == 7)
-               {
-                       printf("\n");
-               }
-       }
-}
-
-
-static void _exception(int signr, struct pt_regs *regs)
-{
-       show_regs(regs);
-       print_backtrace((unsigned long *)regs->gpr[1]);
-       panic("Exception in kernel pc %lx signal %d",regs->nip,signr);
-}
-
-void MachineCheckException(struct pt_regs *regs)
-{
-       unsigned long fixup;
-
-       /* Probing PCI using config cycles cause this exception
-        * when a device is not present.  Catch it and return to
-        * the PCI exception handler.
-        */
-       if ((fixup = search_exception_table(regs->nip)) != 0) {
-               regs->nip = fixup;
-               return;
-       }
-
-       printf("Machine check in kernel mode.\n");
-       printf("Caused by (from msr): ");
-       printf("regs %p ",regs);
-       switch( regs->msr & 0x000F0000) {
-       case (0x80000000>>12):
-               printf("Machine check signal - probably due to mm fault\n"
-                       "with mmu off\n");
-               break;
-       case (0x80000000>>13):
-               printf("Transfer error ack signal\n");
-               break;
-       case (0x80000000>>14):
-               printf("Data parity signal\n");
-               break;
-       case (0x80000000>>15):
-               printf("Address parity signal\n");
-               break;
-       default:
-               printf("Unknown values in msr\n");
-       }
-       show_regs(regs);
-       print_backtrace((unsigned long *)regs->gpr[1]);
-       panic("machine check");
-}
-
-void AlignmentException(struct pt_regs *regs)
-{
-       show_regs(regs);
-       print_backtrace((unsigned long *)regs->gpr[1]);
-       panic("Alignment Exception");
-}
-
-void ProgramCheckException(struct pt_regs *regs)
-{
-       show_regs(regs);
-       print_backtrace((unsigned long *)regs->gpr[1]);
-       panic("Program Check Exception");
-}
-
-void SoftEmuException(struct pt_regs *regs)
-{
-       show_regs(regs);
-       print_backtrace((unsigned long *)regs->gpr[1]);
-       panic("Software Emulation Exception");
-}
-
-
-void UnknownException(struct pt_regs *regs)
-{
-       printf("Bad trap at PC: %lx, SR: %lx, vector=%lx\n",
-              regs->nip, regs->msr, regs->trap);
-       _exception(0, regs);
-}
-
-#if defined(CONFIG_CMD_BEDBUG)
-extern void do_bedbug_breakpoint(struct pt_regs *);
-#endif
-
-void DebugException(struct pt_regs *regs)
-{
-
-  printf("Debugger trap at @ %lx\n", regs->nip );
-  show_regs(regs);
-#if defined(CONFIG_CMD_BEDBUG)
-  do_bedbug_breakpoint( regs );
-#endif
-}
-
-/* Probe an address by reading.  If not present, return -1, otherwise
- * return 0.
- */
-int addr_probe(uint *addr)
-{
-#if 0
-       int     retval;
-
-       __asm__ __volatile__(                   \
-               "1:     lwz %0,0(%1)\n"         \
-               "       eieio\n"                \
-               "       li %0,0\n"              \
-               "2:\n"                          \
-               ".section .fixup,\"ax\"\n"      \
-               "3:     li %0,-1\n"             \
-               "       b 2b\n"                 \
-               ".section __ex_table,\"a\"\n"   \
-               "       .align 2\n"             \
-               "       .long 1b,3b\n"          \
-               ".text"                         \
-               : "=r" (retval) : "r"(addr));
-
-       return (retval);
-#endif
-       return 0;
-}
diff --git a/arch/powerpc/cpu/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds
deleted file mode 100644 (file)
index 04aba84..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * (C) Copyright 2001-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  .text      :
-  {
-    arch/powerpc/cpu/mpc824x/start.o   (.text*)
-    *(.text*)
-    . = ALIGN(16);
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 2541400e727155bbd0c37c810f253a400a94807d..55941c830b0da6868c2115a1b5291ab0b10eb345 100644 (file)
@@ -7,71 +7,11 @@ config SYS_CPU
 choice
        prompt "Target select"
 
-config TARGET_ATC
-       bool "Support atc"
-
-config TARGET_COGENT_MPC8260
-       bool "Support cogent_mpc8260"
-
-config TARGET_CPU86
-       bool "Support CPU86"
-
-config TARGET_CPU87
-       bool "Support CPU87"
-
-config TARGET_EP8260
-       bool "Support ep8260"
-
-config TARGET_EP82XXM
-       bool "Support ep82xxm"
-
-config TARGET_GW8260
-       bool "Support gw8260"
-
-config TARGET_IPHASE4539
-       bool "Support IPHASE4539"
-
-config TARGET_MUAS3001
-       bool "Support muas3001"
-
-config TARGET_PM826
-       bool "Support PM826"
-
-config TARGET_PM828
-       bool "Support PM828"
-
-config TARGET_PPMC8260
-       bool "Support ppmc8260"
-
-config TARGET_SACSNG
-       bool "Support sacsng"
-
-config TARGET_MPC8266ADS
-       bool "Support MPC8266ADS"
-
-config TARGET_VOVPN_GW
-       bool "Support VoVPN-GW"
-
 config TARGET_KM82XX
        bool "Support km82xx"
 
 endchoice
 
-source "board/atc/Kconfig"
-source "board/cogent/Kconfig"
-source "board/cpu86/Kconfig"
-source "board/cpu87/Kconfig"
-source "board/ep8260/Kconfig"
-source "board/ep82xxm/Kconfig"
-source "board/freescale/mpc8266ads/Kconfig"
-source "board/funkwerk/vovpn-gw/Kconfig"
-source "board/gw8260/Kconfig"
-source "board/iphase4539/Kconfig"
 source "board/keymile/km82xx/Kconfig"
-source "board/muas3001/Kconfig"
-source "board/pm826/Kconfig"
-source "board/pm828/Kconfig"
-source "board/ppmc8260/Kconfig"
-source "board/sacsng/Kconfig"
 
 endmenu
index f46a9c0a70837be683b9f87dd41da174a84844a6..a9bb5adeb2095493613da12c449218167279df65 100644 (file)
@@ -88,9 +88,7 @@ static void config_8260_ioports (volatile immap_t * immr)
  */
 void cpu_init_f (volatile immap_t * immr)
 {
-#if !defined(CONFIG_COGENT)            /* done in start.S for the cogent */
        uint sccr;
-#endif
 #if defined(CONFIG_BOARD_GET_CPU_CLK_F)
        unsigned long cpu_clk;
 #endif
@@ -141,13 +139,11 @@ void cpu_init_f (volatile immap_t * immr)
        /* initialize the PIT (4-42) */
        immr->im_sit.sit_piscr = CONFIG_SYS_PISCR;
 
-#if !defined(CONFIG_COGENT)            /* done in start.S for the cogent */
        /* System clock control register (9-8) */
        sccr = immr->im_clkrst.car_sccr &
                (SCCR_PCI_MODE | SCCR_PCI_MODCK | SCCR_PCIDF_MSK);
        immr->im_clkrst.car_sccr = sccr |
                (CONFIG_SYS_SCCR & ~(SCCR_PCI_MODE | SCCR_PCI_MODCK | SCCR_PCIDF_MSK) );
-#endif /* !CONFIG_COGENT */
 
        /*
         * Memory Controller:
index f7bb05d204d8c3a83da26816fc2cebdfbbbd9f34..56f290ca92d682a2adf2f6c5731571ed372aaa54 100644 (file)
 #include <fdt_support.h>
 #endif
 
-#if defined CONFIG_MPC8266ADS || defined CONFIG_MPC8272 || defined CONFIG_PM826
-DECLARE_GLOBAL_DATA_PTR;
-#endif
-
 /*
  *   Local->PCI map (from CPU)                            controlled by
  *   MPC826x master window
@@ -235,34 +231,6 @@ void pci_mpc8250_init (struct pci_controller *hose)
        pci_setup_indirect (hose, CONFIG_SYS_IMMR + PCI_CFG_ADDR_REG,
                            CONFIG_SYS_IMMR + PCI_CFG_DATA_REG);
 
-       /*
-        * Setting required to enable local bus for PCI (SIUMCR [LBPC]).
-        */
-#ifdef CONFIG_MPC8266ADS
-       immap->im_siu_conf.sc_siumcr =
-               (immap->im_siu_conf.sc_siumcr & ~SIUMCR_LBPC11)
-               | SIUMCR_LBPC01;
-#elif defined CONFIG_MPC8272
-       immap->im_siu_conf.sc_siumcr = (immap->im_siu_conf.sc_siumcr &
-                                 ~SIUMCR_BBD &
-                                 ~SIUMCR_ESE &
-                                 ~SIUMCR_PBSE &
-                                 ~SIUMCR_CDIS &
-                                 ~SIUMCR_DPPC11 &
-                                 ~SIUMCR_L2CPC11 &
-                                 ~SIUMCR_LBPC11 &
-                                 ~SIUMCR_APPC11 &
-                                 ~SIUMCR_CS10PC11 &
-                                 ~SIUMCR_BCTLC11 &
-                                 ~SIUMCR_MMR11)
-                                 | SIUMCR_DPPC11
-                                 | SIUMCR_L2CPC01
-                                 | SIUMCR_LBPC00
-                                 | SIUMCR_APPC10
-                                 | SIUMCR_CS10PC00
-                                 | SIUMCR_BCTLC00
-                                 | SIUMCR_MMR11;
-#else
        /*
         * Setting required to enable IRQ1-IRQ7 (SIUMCR [DPPC]),
         * and local bus for PCI (SIUMCR [LBPC]).
@@ -274,7 +242,6 @@ void pci_mpc8250_init (struct pci_controller *hose)
                                        SIUMCR_LBPC01 |
                                        SIUMCR_CS10PC01 |
                                        SIUMCR_APPC10;
-#endif
 
        /* Make PCI lowest priority */
        /* Each 4 bits is a device bus request  and the MS 4bits
@@ -304,24 +271,11 @@ void pci_mpc8250_init (struct pci_controller *hose)
        immap->im_memctl.memc_pcimsk0 = PCIMSK0_MASK;
        immap->im_memctl.memc_pcibr0 = PCI_MSTR0_LOCAL | PCIBR_ENABLE;
 
-#if defined CONFIG_MPC8266ADS || defined CONFIG_MPC8272
-       immap->im_memctl.memc_pcimsk1 = PCIMSK1_MASK;
-       immap->im_memctl.memc_pcibr1 = PCI_MSTR1_LOCAL | PCIBR_ENABLE;
-#endif
-
        /* Release PCI RST (by default the PCI RST signal is held low)  */
        immap->im_pci.pci_gcr = cpu_to_le32 (PCIGCR_PCI_BUS_EN);
 
        /* give it some time */
        {
-#if defined CONFIG_MPC8266ADS || defined CONFIG_MPC8272
-               /* Give the PCI cards more time to initialize before query
-                  This might be good for other boards also
-                */
-               int i;
-
-               for (i = 0; i < 1000; ++i)
-#endif
                        udelay (1000);
        }
 
@@ -358,11 +312,7 @@ void pci_mpc8250_init (struct pci_controller *hose)
        immap->im_pci.pci_picmr0 = cpu_to_le32 (PICMR0_MASK_ATTRIB);    /* Size & attribute */
 
        /* See above for description - puts PCI request as highest priority */
-#ifdef CONFIG_MPC8272
-       immap->im_siu_conf.sc_ppc_alrh = 0x01236745;
-#else
        immap->im_siu_conf.sc_ppc_alrh = 0x03124567;
-#endif
 
        /* Park the bus on the PCI */
        immap->im_siu_conf.sc_ppc_acr = PPC_ACR_BUS_PARK_PCI;
@@ -388,30 +338,16 @@ void pci_mpc8250_init (struct pci_controller *hose)
        hose->last_busno = 0xff;
 
        /* System memory space */
-#if defined CONFIG_MPC8266ADS || defined CONFIG_MPC8272 || defined CONFIG_PM826
-       pci_set_region (hose->regions + 0,
-                       PCI_SLV_MEM_BUS,
-                       PCI_SLV_MEM_LOCAL,
-                       gd->ram_size, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
-#else
        pci_set_region (hose->regions + 0,
                        CONFIG_SYS_SDRAM_BASE,
                        CONFIG_SYS_SDRAM_BASE,
                        0x4000000, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
-#endif
 
        /* PCI memory space */
-#if defined CONFIG_MPC8266ADS || defined CONFIG_MPC8272
-       pci_set_region (hose->regions + 1,
-                       PCI_MSTR_MEMIO_BUS,
-                       PCI_MSTR_MEMIO_LOCAL,
-                       PCI_MSTR_MEMIO_SIZE, PCI_REGION_MEM);
-#else
        pci_set_region (hose->regions + 1,
                        PCI_MSTR_MEM_BUS,
                        PCI_MSTR_MEM_LOCAL,
                        PCI_MSTR_MEM_SIZE, PCI_REGION_MEM);
-#endif
 
        /* PCI I/O space */
        pci_set_region (hose->regions + 2,
index 5f1e174ec822458f08b4684bec4536b540ebc92c..d255bdeeb8a9d715b5a5a6bd7e5af49f6ad9d657 100644 (file)
@@ -136,14 +136,6 @@ _hrcw_table:
 _start:
        mfmsr   r5                      /* save msr contents            */
 
-#if defined(CONFIG_COGENT)
-       /* this is what the cogent EPROM does */
-       li      r0, 0
-       mtmsr   r0
-       isync
-       bl      cogent_init_8260
-#endif /* CONFIG_COGENT */
-
 #if defined(CONFIG_SYS_DEFAULT_IMMR)
        lis     r3, CONFIG_SYS_IMMR@h
        ori     r3, r3, CONFIG_SYS_IMMR@l
@@ -379,57 +371,6 @@ int_return:
        SYNC
        rfi
 
-#if defined(CONFIG_COGENT)
-
-/*
- * This code initialises the MPC8260 processor core
- * (conforms to PowerPC 603e spec)
- */
-
-       .globl  cogent_init_8260
-cogent_init_8260:
-
-       /* Taken from page 14 of CMA282 manual                          */
-       /*--------------------------------------------------------------*/
-
-       lis     r4, (CONFIG_SYS_IMMR+IM_REGBASE)@h
-       lis     r3, CONFIG_SYS_IMMR@h
-       stw     r3, IM_IMMR@l(r4)
-       lwz     r3, IM_IMMR@l(r4)
-       stw     r3, 0(r0)
-       lis     r3, CONFIG_SYS_SYPCR@h
-       ori     r3, r3, CONFIG_SYS_SYPCR@l
-       stw     r3, IM_SYPCR@l(r4)
-       lwz     r3, IM_SYPCR@l(r4)
-       stw     r3, 4(r0)
-       lis     r3, CONFIG_SYS_SCCR@h
-       ori     r3, r3, CONFIG_SYS_SCCR@l
-       stw     r3, IM_SCCR@l(r4)
-       lwz     r3, IM_SCCR@l(r4)
-       stw     r3, 8(r0)
-
-       /* the rest of this was disassembled from the                   */
-       /* EPROM code that came with my CMA282 CPU module               */
-       /*--------------------------------------------------------------*/
-
-       lis     r1, 0x1234
-       ori     r1, r1, 0x5678
-       stw     r1, 0x20(r0)
-       lwz     r1, 0x20(r0)
-       stw     r1, 0x24(r0)
-       lwz     r1, 0x24(r0)
-       lis     r3, 0x0e80
-       ori     r3, r3, 0
-       stw     r1, 4(r3)
-       lwz     r1, 4(r3)
-
-       /* Done!                                                        */
-       /*--------------------------------------------------------------*/
-
-       blr
-
-#endif /* CONFIG_COGENT */
-
 /*
  * This code initialises the MPC8260 processor core
  * (conforms to PowerPC 603e spec)
@@ -456,11 +397,9 @@ init_8260_core:
        /*--------------------------------------------------------------*/
 
        lis     r3, (CONFIG_SYS_IMMR+IM_REGBASE)@h
-#if !defined(CONFIG_COGENT)
        lis     r4, CONFIG_SYS_SYPCR@h
        ori     r4, r4, CONFIG_SYS_SYPCR@l
        stw     r4, IM_SYPCR@l(r3)
-#endif /* !CONFIG_COGENT */
 #if defined(CONFIG_WATCHDOG)
        li      r4, 21868               /* = 0x556c */
        sth     r4, IM_SWSR@l(r3)
index 2a1abe03a9e81b030e6a7e68fb2b4a210bf57b57..69a600cc4237c25e82a34db4955cad385cd70670 100644 (file)
@@ -68,6 +68,9 @@ config TARGET_TUXX1
 config TARGET_TQM834X
        bool "Support TQM834x"
 
+config TARGET_HRCON
+       bool "Support hrcon"
+
 endchoice
 
 source "board/esd/vme8349/Kconfig"
@@ -88,5 +91,6 @@ source "board/mpc8308_p1m/Kconfig"
 source "board/sbc8349/Kconfig"
 source "board/tqc/tqm834x/Kconfig"
 source "board/ve8313/Kconfig"
+source "board/gdsys/mpc8308/Kconfig"
 
 endmenu
index af75c63eb3fe34a90adf1417247bc0c6bb4e2326..9bd86d82d6e8b3ced9a9168b0fb0dede2feeedfb 100644 (file)
@@ -283,6 +283,7 @@ in_flash:
        bl      cpu_init_f
 
        /* run 1st part of board init code (in Flash)*/
+       li      r3, 0           /* clear boot_flag for calling board_init_f */
        bl      board_init_f
 
        /* NOTREACHED - board_init_f() does not return */
index 7b42d06952c4116c09177aea508384e247171308..7501eb4b82c5dff55d1f64b902bcb1c9353d104b 100644 (file)
@@ -110,6 +110,14 @@ config TARGET_P2041RDB
 config TARGET_QEMU_PPCE500
        bool "Support qemu-ppce500"
 
+config TARGET_T102XQDS
+       bool "Support T102xQDS"
+       select SUPPORT_SPL
+
+config TARGET_T102XRDB
+       bool "Support T102xRDB"
+       select SUPPORT_SPL
+
 config TARGET_T1040QDS
        bool "Support T1040QDS"
 
@@ -183,6 +191,8 @@ source "board/freescale/p2020come/Kconfig"
 source "board/freescale/p2020ds/Kconfig"
 source "board/freescale/p2041rdb/Kconfig"
 source "board/freescale/qemu-ppce500/Kconfig"
+source "board/freescale/t102xqds/Kconfig"
+source "board/freescale/t102xrdb/Kconfig"
 source "board/freescale/t1040qds/Kconfig"
 source "board/freescale/t104xrdb/Kconfig"
 source "board/freescale/t208xqds/Kconfig"
index ad26b432f1832ea356907c7bf0923dd23dec0abb..b93158b9ed25490505483566f35215f3d785dfc2 100644 (file)
@@ -51,6 +51,8 @@ obj-$(CONFIG_PPC_T1040) += t1040_ids.o
 obj-$(CONFIG_PPC_T1042)        += t1040_ids.o
 obj-$(CONFIG_PPC_T1020)        += t1040_ids.o
 obj-$(CONFIG_PPC_T1022)        += t1040_ids.o
+obj-$(CONFIG_PPC_T1023) += t1024_ids.o
+obj-$(CONFIG_PPC_T1024) += t1024_ids.o
 obj-$(CONFIG_PPC_T2080) += t2080_ids.o
 obj-$(CONFIG_PPC_T2081) += t2080_ids.o
 
@@ -97,6 +99,8 @@ obj-$(CONFIG_PPC_T1040) += t1040_serdes.o
 obj-$(CONFIG_PPC_T1042)        += t1040_serdes.o
 obj-$(CONFIG_PPC_T1020)        += t1040_serdes.o
 obj-$(CONFIG_PPC_T1022)        += t1040_serdes.o
+obj-$(CONFIG_PPC_T1023) += t1024_serdes.o
+obj-$(CONFIG_PPC_T1024) += t1024_serdes.o
 obj-$(CONFIG_PPC_T2080) += t2080_serdes.o
 obj-$(CONFIG_PPC_T2081) += t2080_serdes.o
 
index 39b8e3ecc2ccc99f99ce8587a0520bf192dd0cdb..598f7bd92ee960c75e62628df52ec51634e79869 100644 (file)
@@ -55,12 +55,12 @@ struct liodn_id_table liodn_tbl[] = {
 
        SET_SDHC_LIODN(1, 552),
 
-       SET_USB_LIODN(1, "fsl-usb2-mph", 553),
+       SET_USB_LIODN(1, "fsl-usb2-dr", 553),
 
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 1, 148),
 
-       SET_DMA_LIODN(1, 147),
-       SET_DMA_LIODN(2, 227),
+       SET_DMA_LIODN(1, "fsl,elo3-dma", 147),
+       SET_DMA_LIODN(2, "fsl,elo3-dma", 227),
 
 #ifndef CONFIG_PPC_B4420
        SET_GUTS_LIODN("fsl,rapidio-delta", 199, rio1liodnr, 0),
index cf18be552864eb011c28d53630c6c2425e11ac35..63172def68f4a1612d23194d9af8f9eb160c44b3 100644 (file)
@@ -18,6 +18,8 @@ struct serdes_config {
 #ifdef CONFIG_PPC_B4860
 static struct serdes_config serdes1_cfg_tbl[] = {
        /* SerDes 1 */
+       {0x01, {AURORA, AURORA, CPRI6, CPRI5,
+               CPRI4, CPRI3, CPRI2, CPRI1} },
        {0x02, {AURORA, AURORA, CPRI6, CPRI5,
                CPRI4, CPRI3, CPRI2, CPRI1} },
        {0x04, {AURORA, AURORA, CPRI6, CPRI5,
@@ -26,6 +28,8 @@ static struct serdes_config serdes1_cfg_tbl[] = {
                CPRI4, CPRI3, CPRI2, CPRI1} },
        {0x06, {AURORA, AURORA, CPRI6, CPRI5,
                CPRI4, CPRI3, CPRI2, CPRI1} },
+       {0x07, {AURORA, AURORA, CPRI6, CPRI5,
+               CPRI4, CPRI3, CPRI2, CPRI1} },
        {0x08, {AURORA, AURORA, CPRI6, CPRI5,
                CPRI4, CPRI3, CPRI2, CPRI1} },
        {0x09, {AURORA, AURORA, CPRI6, CPRI5,
@@ -184,12 +188,17 @@ static struct serdes_config serdes1_cfg_tbl[] = {
                CPRI4, CPRI3, NONE, NONE} },
        {0x0F, {NONE, NONE, CPRI6, CPRI5,
                CPRI4, CPRI3, NONE, NONE} },
+       {0x17, {NONE, NONE,
+               SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,
+               NONE, NONE, NONE, NONE} },
        {0x18, {NONE, NONE,
                SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,
                NONE, NONE, NONE, NONE} },
        {0x1B, {NONE, NONE,
                SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,
                NONE, NONE, NONE, NONE} },
+       {0x1D, {NONE, NONE, AURORA, AURORA,
+               NONE, NONE, NONE, NONE} },
        {0x1E, {NONE, NONE, AURORA, AURORA,
                NONE, NONE, NONE, NONE} },
        {0x21, {NONE, NONE, AURORA, AURORA,
@@ -199,19 +208,29 @@ static struct serdes_config serdes1_cfg_tbl[] = {
        {}
 };
 static struct serdes_config serdes2_cfg_tbl[] = {
+       {0x48, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
+               SGMII_FM1_DTSEC3, AURORA,
+               NONE, NONE, NONE, NONE} },
        {0x49, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
                SGMII_FM1_DTSEC3, AURORA,
                NONE, NONE, NONE, NONE} },
        {0x4A, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
                SGMII_FM1_DTSEC3, AURORA,
                NONE, NONE, NONE, NONE} },
+       {0x6E, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
+               AURORA, AURORA, NONE, NONE, NONE, NONE} },
        {0x6F, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
                AURORA, AURORA, NONE, NONE, NONE, NONE} },
        {0x70, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
                AURORA, AURORA, NONE, NONE, NONE, NONE} },
+       {0x99, {PCIE1, PCIE1,
+               SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,
+               NONE, NONE, NONE, NONE} },
        {0x9A, {PCIE1, PCIE1,
                SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,
                NONE, NONE, NONE, NONE} },
+       {0x9D, {PCIE1, PCIE1, PCIE1, PCIE1,
+               NONE, NONE, NONE, NONE} },
        {0x9E, {PCIE1, PCIE1, PCIE1, PCIE1,
                NONE, NONE, NONE, NONE} },
        {}
index 3a04a893012d2d46ad8160eddea6320d93302402..2d5ddf012b6b3a27c370e0bc3c65ad94c87e77d0 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/compiler.h>
 #include <asm/fsl_errata.h>
 #include <asm/processor.h>
+#include <fsl_usb.h>
 #include "fsl_corenet_serdes.h"
 
 #ifdef CONFIG_SYS_FSL_ERRATUM_A004849
@@ -270,7 +271,8 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        puts("Work-around for Erratum USB14 enabled\n");
 #endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_A007186
-       puts("Work-around for Erratum A007186 enabled\n");
+       if (has_erratum_a007186())
+               puts("Work-around for Erratum A007186 enabled\n");
 #endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_A006593
        puts("Work-around for Erratum A006593 enabled\n");
@@ -293,6 +295,10 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (has_erratum_a007075())
                puts("Work-around for Erratum A007075 enabled\n");
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007798
+       if (has_erratum_a007798())
+               puts("Work-around for Erratum A007798 enabled\n");
+#endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_I2C_A004447
        if ((SVR_SOC_VER(svr) == SVR_8548 && IS_SVR_REV(svr, 3, 1)) ||
            (SVR_REV(svr) <= CONFIG_SYS_FSL_A004447_SVR_REV))
@@ -308,6 +314,14 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #ifdef CONFIG_SYS_FSL_ERRATUM_A005434
        puts("Work-around for Erratum A-005434 enabled\n");
 #endif
+#if defined(CONFIG_SYS_FSL_ERRATUM_A008044) && \
+       defined(CONFIG_A008044_WORKAROUND)
+       if (IS_SVR_REV(svr, 1, 0))
+               puts("Work-around for Erratum A-008044 enabled\n");
+#endif
+#if defined(CONFIG_SYS_FSL_B4860QDS_XFI_ERR) && defined(CONFIG_B4860QDS)
+       puts("Work-around for Erratum XFI on B4860QDS enabled\n");
+#endif
 
        return 0;
 }
index 47b712d56b5595a89d797cb9b868506606ede539..5ca9bf5ff98f53adac99d04c7a6c26fa57fb679f 100644 (file)
@@ -70,9 +70,9 @@ void setup_ifc(void)
 #endif
 
        /* Change flash's physical address */
-       out_be32(&(ifc_regs->cspr_cs[0].cspr), CONFIG_SYS_CSPR0);
-       out_be32(&(ifc_regs->csor_cs[0].csor), CONFIG_SYS_CSOR0);
-       out_be32(&(ifc_regs->amask_cs[0].amask), CONFIG_SYS_AMASK0);
+       ifc_out32(&(ifc_regs->cspr_cs[0].cspr), CONFIG_SYS_CSPR0);
+       ifc_out32(&(ifc_regs->csor_cs[0].csor), CONFIG_SYS_CSOR0);
+       ifc_out32(&(ifc_regs->amask_cs[0].amask), CONFIG_SYS_AMASK0);
 
        return ;
 }
@@ -161,9 +161,12 @@ void cpu_init_early_f(void *fdt)
        setup_ifc_sram = (void *)SRAM_BASE_ADDR;
        dst = (u32 *) SRAM_BASE_ADDR;
        src = (u32 *) setup_ifc;
-       for (i = 0; i < 1024; i++)
+       for (i = 0; i < 1024; i++) {
+               /* cppcheck-suppress nullPointer */
                *dst++ = *src++;
+       }
 
+       /* cppcheck-suppress nullPointer */
        setup_ifc_sram();
 
        /* CLEANUP */
index 8edf5bb20ef79dc834c5ec5467f03f9cce21c155..5cfae470697ea1877f65d5795a5bc0ee892676a1 100644 (file)
@@ -11,6 +11,7 @@
 #include <asm/processor.h>
 #include <asm/fsl_law.h>
 #include <asm/errno.h>
+#include <asm/fsl_errata.h>
 #include "fsl_corenet2_serdes.h"
 
 #ifdef CONFIG_SYS_FSL_SRDS_1
@@ -203,7 +204,7 @@ u64 serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift)
 
        sel = (sfp_spfr0 >> FUSE_VAL_SHIFT) & FUSE_VAL_MASK;
 
-       if (sel == 0x01 || sel == 0x02) {
+       if (has_erratum_a007186() && (sel == 0x01 || sel == 0x02)) {
                for (pll_num = 0; pll_num < SRDS_MAX_BANK; pll_num++) {
                        pll_status = in_be32(&srds_regs->bank[pll_num].pllcr0);
                        debug("A007186: pll_num=%x pllcr0=%x\n",
index 488e078467c2a1925852ebc220fe7e7ba8d9e91d..6e3cdddaed8c4e290c359cc6751932435b774edd 100644 (file)
@@ -50,8 +50,8 @@ struct liodn_id_table liodn_tbl[] = {
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 194),
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 195),
 
-       SET_DMA_LIODN(1, 197),
-       SET_DMA_LIODN(2, 198),
+       SET_DMA_LIODN(1, "fsl,eloplus-dma", 197),
+       SET_DMA_LIODN(2, "fsl,eloplus-dma", 198),
 
        SET_GUTS_LIODN("fsl,rapidio-delta", 199, rio1liodnr, 0),
        SET_GUTS_LIODN(NULL, 200, rio2liodnr, 0),
index 7d98870e3ff2dd9d6ba06017caf619f9a6b0609a..2b57703b2e57190561ff9c0441ce6192e183e526 100644 (file)
@@ -51,8 +51,8 @@ struct liodn_id_table liodn_tbl[] = {
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 195),
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 196),
 
-       SET_DMA_LIODN(1, 197),
-       SET_DMA_LIODN(2, 198),
+       SET_DMA_LIODN(1, "fsl,eloplus-dma", 197),
+       SET_DMA_LIODN(2, "fsl,eloplus-dma", 198),
 
        SET_GUTS_LIODN("fsl,rapidio-delta", 199, rio1liodnr, 0),
        SET_GUTS_LIODN(NULL, 200, rio2liodnr, 0),
index b2a23c0c9ebd775dd499f616866ba631db927984..94a51439a0fcc42b97daff5cefbdc12a2b3ed62a 100644 (file)
@@ -40,8 +40,8 @@ struct liodn_id_table liodn_tbl[] = {
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 194),
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 195),
 
-       SET_DMA_LIODN(1, 196),
-       SET_DMA_LIODN(2, 197),
+       SET_DMA_LIODN(1, "fsl,eloplus-dma", 196),
+       SET_DMA_LIODN(2, "fsl,eloplus-dma", 197),
 
        SET_GUTS_LIODN("fsl,srio-rmu", 200, rmuliodnr, 0xd3000),
 
index b5d787c8e705e271c4b788ddb1fc0a2a6e220268..0f292cf5a8e56d87c27ee2b89343a151d1da1b8e 100644 (file)
@@ -51,8 +51,8 @@ struct liodn_id_table liodn_tbl[] = {
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 195),
        SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 196),
 
-       SET_DMA_LIODN(1, 197),
-       SET_DMA_LIODN(2, 198),
+       SET_DMA_LIODN(1, "fsl,eloplus-dma", 197),
+       SET_DMA_LIODN(2, "fsl,eloplus-dma", 198),
 
        SET_GUTS_LIODN("fsl,rapidio-delta", 199, rio1liodnr, 0),
        SET_GUTS_LIODN(NULL, 200, rio2liodnr, 0),
index 990f1794911a44dd33910cbb95417e2baa6db5d8..98a568fb1017b51d5cde4f7a9516e588a7d6e2ad 100644 (file)
@@ -42,30 +42,30 @@ struct liodn_id_table liodn_tbl[] = {
        SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 196),
        SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 197),
 
-       SET_DMA_LIODN(1, 193),
-       SET_DMA_LIODN(2, 194),
+       SET_DMA_LIODN(1, "fsl,eloplus-dma", 193),
+       SET_DMA_LIODN(2, "fsl,eloplus-dma", 194),
 };
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
 struct liodn_id_table fman1_liodn_tbl[] = {
-       SET_FMAN_RX_1G_LIODN(1, 0, 6),
-       SET_FMAN_RX_1G_LIODN(1, 1, 7),
-       SET_FMAN_RX_1G_LIODN(1, 2, 8),
-       SET_FMAN_RX_1G_LIODN(1, 3, 9),
-       SET_FMAN_RX_1G_LIODN(1, 4, 10),
-       SET_FMAN_RX_10G_LIODN(1, 0, 11),
+       SET_FMAN_RX_1G_LIODN(1, 0, 11),
+       SET_FMAN_RX_1G_LIODN(1, 1, 12),
+       SET_FMAN_RX_1G_LIODN(1, 2, 13),
+       SET_FMAN_RX_1G_LIODN(1, 3, 14),
+       SET_FMAN_RX_1G_LIODN(1, 4, 15),
+       SET_FMAN_RX_10G_LIODN(1, 0, 16),
 };
 int fman1_liodn_tbl_sz = ARRAY_SIZE(fman1_liodn_tbl);
 
 #if (CONFIG_SYS_NUM_FMAN == 2)
 struct liodn_id_table fman2_liodn_tbl[] = {
-       SET_FMAN_RX_1G_LIODN(2, 0, 12),
-       SET_FMAN_RX_1G_LIODN(2, 1, 13),
-       SET_FMAN_RX_1G_LIODN(2, 2, 14),
-       SET_FMAN_RX_1G_LIODN(2, 3, 15),
-       SET_FMAN_RX_1G_LIODN(2, 4, 16),
-       SET_FMAN_RX_10G_LIODN(2, 0, 17),
+       SET_FMAN_RX_1G_LIODN(2, 0, 17),
+       SET_FMAN_RX_1G_LIODN(2, 1, 18),
+       SET_FMAN_RX_1G_LIODN(2, 2, 19),
+       SET_FMAN_RX_1G_LIODN(2, 3, 20),
+       SET_FMAN_RX_1G_LIODN(2, 4, 21),
+       SET_FMAN_RX_10G_LIODN(2, 0, 22),
 };
 int fman2_liodn_tbl_sz = ARRAY_SIZE(fman2_liodn_tbl);
 #endif
index 98815f8e1e9fc9c92a7091f0066ebcdfdd4d464f..ec3b2924b9d87c9651c5b25c9c1c2ca7974fa4c0 100644 (file)
 #include <asm/fsl_portals.h>
 #include <asm/fsl_liodn.h>
 
+#define MAX_BPORTALS (CONFIG_SYS_BMAN_CINH_SIZE / CONFIG_SYS_BMAN_SP_CINH_SIZE)
+#define MAX_QPORTALS (CONFIG_SYS_QMAN_CINH_SIZE / CONFIG_SYS_QMAN_SP_CINH_SIZE)
+static void inhibit_portals(void __iomem *addr, int max_portals,
+                       int arch_max_portals, int portal_cinh_size)
+{
+       uint32_t val;
+       int i;
+
+       /* arch_max_portals is the maximum based on memory size. This includes
+        * the reserved memory in the SoC.  max_portals the number of physical
+        * portals in the SoC */
+       if (max_portals > arch_max_portals) {
+               printf("ERROR: portal config error\n");
+               max_portals = arch_max_portals;
+       }
+
+       for (i = 0; i < max_portals; i++) {
+               out_be32(addr, -1);
+               val = in_be32(addr);
+               if (!val) {
+                       printf("ERROR: Stopped after %d portals\n", i);
+                       goto done;
+               }
+               addr += portal_cinh_size;
+       }
+#ifdef DEBUG
+       printf("Cleared %d portals\n", i);
+#endif
+done:
+
+       return;
+}
+
 void setup_portals(void)
 {
        ccsr_qman_t *qman = (void *)CONFIG_SYS_FSL_QMAN_ADDR;
+       void __iomem *bpaddr = (void *)CONFIG_SYS_BMAN_CINH_BASE +
+                               CONFIG_SYS_BMAN_SWP_ISDR_REG;
+       void __iomem *qpaddr = (void *)CONFIG_SYS_QMAN_CINH_BASE +
+                               CONFIG_SYS_QMAN_SWP_ISDR_REG;
 #ifdef CONFIG_FSL_CORENET
        int i;
 
@@ -38,6 +75,12 @@ void setup_portals(void)
        out_be32(&qman->qcsp_bare, (u32)(CONFIG_SYS_QMAN_MEM_PHYS >> 32));
 #endif
        out_be32(&qman->qcsp_bar, (u32)CONFIG_SYS_QMAN_MEM_PHYS);
+
+       /* Change default state of BMan ISDR portals to all 1s */
+       inhibit_portals(bpaddr, CONFIG_SYS_BMAN_NUM_PORTALS, MAX_BPORTALS,
+                       CONFIG_SYS_BMAN_SP_CINH_SIZE);
+       inhibit_portals(qpaddr, CONFIG_SYS_QMAN_NUM_PORTALS, MAX_QPORTALS,
+                       CONFIG_SYS_QMAN_SP_CINH_SIZE);
 }
 
 /* Update portal containter to match LAW setup of portal in phy map */
index 3236f6a5da6b577af94441996a89127e1ddeac81..7e698730f3d1bfd0b48631b01fa35421e020a575 100644 (file)
@@ -37,6 +37,7 @@ void get_sys_info(sys_info_t *sys_info)
 #ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
        int cc_group[12] = CONFIG_SYS_FSL_CLUSTER_CLOCKS;
 #endif
+       __maybe_unused u32 svr;
 
        const u8 core_cplx_PLL[16] = {
                [ 0] = 0,       /* CC1 PPL / 1 */
@@ -122,11 +123,27 @@ void get_sys_info(sys_info_t *sys_info)
        /* T4240/T4160 Rev2.0 MEM_PLL_RAT uses a value which is half of
         * T4240/T4160 Rev1.0. eg. It's 12 in Rev1.0, however, for Rev2.0
         * it uses 6.
+        * T2080 rev 1.1 and later also use half mem_pll comparing with rev 1.0
         */
 #if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
-       defined(CONFIG_PPC_T4080)
-       if (SVR_MAJ(get_svr()) >= 2)
-               mem_pll_rat *= 2;
+       defined(CONFIG_PPC_T4080) || defined(CONFIG_PPC_T2080)
+       svr = get_svr();
+       switch (SVR_SOC_VER(svr)) {
+       case SVR_T4240:
+       case SVR_T4160:
+       case SVR_T4120:
+       case SVR_T4080:
+               if (SVR_MAJ(svr) >= 2)
+                       mem_pll_rat *= 2;
+               break;
+       case SVR_T2080:
+       case SVR_T2081:
+               if ((SVR_MAJ(svr) > 1) || (SVR_MIN(svr) >= 1))
+                       mem_pll_rat *= 2;
+               break;
+       default:
+               break;
+       }
 #endif
        if (mem_pll_rat > 2)
                sys_info->freq_ddrbus *= mem_pll_rat;
@@ -168,6 +185,9 @@ void get_sys_info(sys_info_t *sys_info)
        defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081)
 #define FM1_CLK_SEL    0xe0000000
 #define FM1_CLK_SHIFT  29
+#elif defined(CONFIG_PPC_T1024) || defined(CONFIG_PPC_T1023)
+#define FM1_CLK_SEL    0x00000007
+#define FM1_CLK_SHIFT  0
 #else
 #define PME_CLK_SEL    0xe0000000
 #define PME_CLK_SHIFT  29
@@ -175,8 +195,12 @@ void get_sys_info(sys_info_t *sys_info)
 #define FM1_CLK_SHIFT  26
 #endif
 #if !defined(CONFIG_FM_PLAT_CLK_DIV) || !defined(CONFIG_PME_PLAT_CLK_DIV)
+#if defined(CONFIG_PPC_T1024) || defined(CONFIG_PPC_T1023)
+       rcw_tmp = in_be32(&gur->rcwsr[15]) - 4;
+#else
        rcw_tmp = in_be32(&gur->rcwsr[7]);
 #endif
+#endif
 
 #ifdef CONFIG_SYS_DPAA_PME
 #ifndef CONFIG_PME_PLAT_CLK_DIV
@@ -213,7 +237,10 @@ void get_sys_info(sys_info_t *sys_info)
 #endif
 
 #ifdef CONFIG_SYS_DPAA_QBMAN
-       sys_info->freq_qman = sys_info->freq_systembus / 2;
+#ifndef CONFIG_QBMAN_CLK_DIV
+#define CONFIG_QBMAN_CLK_DIV   2
+#endif
+       sys_info->freq_qman = sys_info->freq_systembus / CONFIG_QBMAN_CLK_DIV;
 #endif
 
 #ifdef CONFIG_SYS_DPAA_FMAN
@@ -430,7 +457,7 @@ void get_sys_info(sys_info_t *sys_info)
 #endif
 
 #if defined(CONFIG_FSL_IFC)
-       ccr = in_be32(&ifc_regs->ifc_ccr);
+       ccr = ifc_in32(&ifc_regs->ifc_ccr);
        ccr = ((ccr & IFC_CCR_CLK_DIV_MASK) >> IFC_CCR_CLK_DIV_SHIFT) + 1;
 
        sys_info->freq_localbus = sys_info->freq_systembus / ccr;
diff --git a/arch/powerpc/cpu/mpc85xx/t1024_ids.c b/arch/powerpc/cpu/mpc85xx/t1024_ids.c
new file mode 100644 (file)
index 0000000..132689b
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+
+#ifdef CONFIG_SYS_DPAA_QBMAN
+struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
+       /* dqrr liodn, frame data liodn, liodn off, sdest */
+       SET_QP_INFO(1, 27, 1, 0),
+       SET_QP_INFO(2, 28, 1, 0),
+       SET_QP_INFO(3, 29, 1, 1),
+       SET_QP_INFO(4, 30, 1, 1),
+       SET_QP_INFO(5, 31, 1, 2),
+       SET_QP_INFO(6, 32, 1, 2),
+       SET_QP_INFO(7, 33, 1, 3),
+       SET_QP_INFO(8, 34, 1, 3),
+       SET_QP_INFO(9, 35, 1, 0),
+       SET_QP_INFO(10, 36, 1, 0),
+};
+#endif
+
+struct liodn_id_table liodn_tbl[] = {
+#ifdef CONFIG_SYS_DPAA_QBMAN
+       SET_QMAN_LIODN(62),
+       SET_BMAN_LIODN(63),
+#endif
+
+       SET_SDHC_LIODN(1, 552),
+
+       SET_USB_LIODN(1, "fsl-usb2-mph", 553),
+       SET_USB_LIODN(2, "fsl-usb2-dr", 554),
+
+       SET_SATA_LIODN(1, 555),
+
+       SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 1, 148),
+       SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 228),
+       SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 308),
+
+       SET_DMA_LIODN(1, "fsl,elo3-dma", 147),
+       SET_DMA_LIODN(2, "fsl,elo3-dma", 227),
+       /* SET_NEXUS_LIODN(557), -- not yet implemented */
+       SET_QE_LIODN(559),
+       SET_TDM_LIODN(560),
+};
+int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+struct liodn_id_table fman1_liodn_tbl[] = {
+       SET_FMAN_RX_1G_LIODN(1, 0, 88),
+       SET_FMAN_RX_1G_LIODN(1, 1, 89),
+       SET_FMAN_RX_1G_LIODN(1, 2, 90),
+       SET_FMAN_RX_1G_LIODN(1, 3, 91),
+       SET_FMAN_RX_10G_LIODN(1, 0, 94),
+};
+int fman1_liodn_tbl_sz = ARRAY_SIZE(fman1_liodn_tbl);
+#endif
+
+struct liodn_id_table sec_liodn_tbl[] = {
+       SET_SEC_JR_LIODN_ENTRY(0, 454, 458),
+       SET_SEC_JR_LIODN_ENTRY(1, 455, 459),
+       SET_SEC_JR_LIODN_ENTRY(2, 456, 460),
+       SET_SEC_JR_LIODN_ENTRY(3, 457, 461),
+       SET_SEC_RTIC_LIODN_ENTRY(a, 453),
+       SET_SEC_RTIC_LIODN_ENTRY(b, 549),
+       SET_SEC_RTIC_LIODN_ENTRY(c, 550),
+       SET_SEC_RTIC_LIODN_ENTRY(d, 551),
+       SET_SEC_DECO_LIODN_ENTRY(0, 541, 610),
+       SET_SEC_DECO_LIODN_ENTRY(1, 542, 611),
+};
+int sec_liodn_tbl_sz = ARRAY_SIZE(sec_liodn_tbl);
+
+struct liodn_id_table liodn_bases[] = {
+       [FSL_HW_PORTAL_SEC]  = SET_LIODN_BASE_2(462, 558),
+#ifdef CONFIG_SYS_DPAA_FMAN
+       [FSL_HW_PORTAL_FMAN1] = SET_LIODN_BASE_1(973),
+#endif
+};
diff --git a/arch/powerpc/cpu/mpc85xx/t1024_serdes.c b/arch/powerpc/cpu/mpc85xx/t1024_serdes.c
new file mode 100644 (file)
index 0000000..7dc8385
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_serdes.h>
+#include <asm/processor.h>
+#include <asm/io.h>
+
+
+static u8 serdes_cfg_tbl[][4] = {
+       [0xD5] = {QSGMII_FM1_A, PCIE3, PCIE2, PCIE1},
+       [0xD6] = {QSGMII_FM1_A, PCIE3, PCIE2, SATA1},
+       [0x95] = {XFI_FM1_MAC1, PCIE3, PCIE2, PCIE1},
+       [0x99] = {XFI_FM1_MAC1, PCIE3, SGMII_FM1_DTSEC2, PCIE1},
+       [0x46] = {PCIE1, PCIE1, PCIE2, SATA1},
+       [0x47] = {PCIE1, PCIE1, PCIE2, SGMII_FM1_DTSEC1},
+       [0x56] = {PCIE1, PCIE3, PCIE2, SATA1},
+       [0x5A] = {PCIE1, PCIE3, SGMII_FM1_DTSEC2, SATA1},
+       [0x5B] = {PCIE1, PCIE3, SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC1},
+       [0x6A] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC2, SATA1},
+       [0x6B] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC1},
+       [0x6F] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_2500_FM1_DTSEC2,
+                 SGMII_2500_FM1_DTSEC1},
+       [0x77] = {PCIE1, SGMII_2500_FM1_DTSEC3, PCIE2, SGMII_FM1_DTSEC1},
+       [0x7F] = {PCIE1, SGMII_2500_FM1_DTSEC3, SGMII_2500_FM1_DTSEC2,
+                 SGMII_2500_FM1_DTSEC1},
+       [0x119] = {AURORA, PCIE3, SGMII_FM1_DTSEC2, PCIE1},
+       [0x135] = {AURORA, SGMII_2500_FM1_DTSEC3, PCIE2, PCIE1},
+};
+
+enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
+{
+       return serdes_cfg_tbl[cfg][lane];
+}
+
+int is_serdes_prtcl_valid(int serdes, u32 prtcl)
+{
+       int i;
+
+       if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
+               return 0;
+
+       for (i = 0; i < 4; i++) {
+               if (serdes_cfg_tbl[prtcl][i] != NONE)
+                       return 1;
+       }
+
+       return 0;
+}
index a5dfb81781879d54438f9331934e9793096cf2b5..80917224b95eeee49126c9d58d006094aac8ddad 100644 (file)
@@ -24,12 +24,6 @@ struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
 };
 #endif
 
-struct srio_liodn_id_table srio_liodn_tbl[] = {
-       SET_SRIO_LIODN_1(1, 307),
-       SET_SRIO_LIODN_1(2, 387),
-};
-int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl);
-
 struct liodn_id_table liodn_tbl[] = {
 #ifdef CONFIG_SYS_DPAA_QBMAN
        SET_QMAN_LIODN(62),
@@ -38,12 +32,21 @@ struct liodn_id_table liodn_tbl[] = {
 
        SET_SDHC_LIODN(1, 552),
 
+       SET_PME_LIODN(117),
+
        SET_USB_LIODN(1, "fsl-usb2-mph", 553),
+       SET_USB_LIODN(2, "fsl-usb2-dr", 554),
 
-       SET_PCI_LIODN("fsl,qoriq-pcie-v2.2", 1, 148),
+       SET_SATA_LIODN(1, 555),
+       SET_SATA_LIODN(2, 556),
 
-       SET_DMA_LIODN(1, 147),
-       SET_DMA_LIODN(2, 227),
+       SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 1, 148),
+       SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 228),
+       SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 308),
+       SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 388),
+
+       SET_DMA_LIODN(1, "fsl,elo3-dma", 147),
+       SET_DMA_LIODN(2, "fsl,elo3-dma", 227),
 
        /* SET_NEXUS_LIODN(557), -- not yet implemented */
        SET_QE_LIODN(559),
@@ -74,6 +77,12 @@ struct liodn_id_table sec_liodn_tbl[] = {
        SET_SEC_RTIC_LIODN_ENTRY(d, 551),
        SET_SEC_DECO_LIODN_ENTRY(0, 541, 610),
        SET_SEC_DECO_LIODN_ENTRY(1, 542, 611),
+       SET_SEC_DECO_LIODN_ENTRY(2, 543, 612),
+       SET_SEC_DECO_LIODN_ENTRY(3, 544, 613),
+       SET_SEC_DECO_LIODN_ENTRY(4, 545, 614),
+       SET_SEC_DECO_LIODN_ENTRY(5, 546, 615),
+       SET_SEC_DECO_LIODN_ENTRY(6, 547, 616),
+       SET_SEC_DECO_LIODN_ENTRY(7, 548, 617),
 };
 int sec_liodn_tbl_sz = ARRAY_SIZE(sec_liodn_tbl);
 
@@ -82,4 +91,7 @@ struct liodn_id_table liodn_bases[] = {
 #ifdef CONFIG_SYS_DPAA_FMAN
        [FSL_HW_PORTAL_FMAN1] = SET_LIODN_BASE_1(973),
 #endif
+#ifdef CONFIG_SYS_DPAA_PME
+       [FSL_HW_PORTAL_PME]   = SET_LIODN_BASE_2(770, 846),
+#endif
 };
index 0bfd447381cb62ba065aee4510403bea22c9fe75..eda7f59da0fa1c9c1bf738aa2506ebe28f2d59b3 100644 (file)
@@ -63,9 +63,9 @@ struct liodn_id_table liodn_tbl[] = {
        SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 308),
        SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 388),
 
-       SET_DMA_LIODN(1, 147),
-       SET_DMA_LIODN(2, 227),
-       SET_DMA_LIODN(3, 226),
+       SET_DMA_LIODN(1, "fsl,elo3-dma", 147),
+       SET_DMA_LIODN(2, "fsl,elo3-dma", 227),
+       SET_DMA_LIODN(3, "fsl,elo3-dma", 226),
 
        SET_GUTS_LIODN("fsl,rapidio-delta", 199, rio1liodnr, 0),
        SET_GUTS_LIODN(NULL, 200, rio2liodnr, 0),
index 7138bb4ef61cc92d6699d4335cac4ce2af3b37cd..c65f41d0f8e2accf79f3d0f528a0f5923d802948 100644 (file)
@@ -169,6 +169,7 @@ static const struct serdes_config serdes2_cfg_tbl[] = {
        {0x01, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} },
        {0x29, {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1} },
        {0x2D, {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1} },
+       {0x2E, {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1} },
        {0x15, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, SATA1, SATA2} },
        {0x27, {PCIE1, PCIE1, PCIE1, PCIE1, NONE,  NONE,  SATA1, SATA2} },
        {0x18, {PCIE1, PCIE1, PCIE1, PCIE1, AURORA, AURORA, SATA1, SATA2} },
index 1a3cb33987426878d718b24cd1f15bf9fd499dc9..470b0800bf3b80d743192536e13e919d4fcc2043 100644 (file)
@@ -93,8 +93,8 @@ struct liodn_id_table liodn_tbl[] = {
        SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 308),
        SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 388),
 
-       SET_DMA_LIODN(1, 147),
-       SET_DMA_LIODN(2, 227),
+       SET_DMA_LIODN(1, "fsl,elo3-dma", 147),
+       SET_DMA_LIODN(2, "fsl,elo3-dma", 227),
 
        SET_GUTS_LIODN("fsl,rapidio-delta", 199, rio1liodnr, 0),
        SET_GUTS_LIODN(NULL, 200, rio2liodnr, 0),
index 129ec662fe8a84ba289bb914cddd296eb8e08967..8e0508f3625aa9eb4b8163ab8fade7b487a534dd 100644 (file)
@@ -299,12 +299,16 @@ unsigned int setup_ddr_tlbs_phys(phys_addr_t p_addr,
 {
        unsigned int ram_tlb_address = (unsigned int)CONFIG_SYS_DDR_SDRAM_BASE;
        u64 memsize = (u64)memsize_in_meg << 20;
+       u64 size;
 
-       memsize = min(memsize, CONFIG_MAX_MEM_MAPPED);
-       memsize = tlb_map_range(ram_tlb_address, p_addr, memsize, TLB_MAP_RAM);
+       size = min(memsize, (u64)CONFIG_MAX_MEM_MAPPED);
+       size = tlb_map_range(ram_tlb_address, p_addr, size, TLB_MAP_RAM);
 
-       if (memsize)
-               print_size(memsize, " left unmapped\n");
+       if (size || memsize > CONFIG_MAX_MEM_MAPPED) {
+               print_size(memsize > CONFIG_MAX_MEM_MAPPED ?
+                          memsize - CONFIG_MAX_MEM_MAPPED + size : size,
+                          " left unmapped\n");
+       }
 
        return memsize_in_meg;
 }
index 011f4b41a7877868063b696cb70561cacd2fd958..e8bcbe98a140d4e09e6bccee78aeb7c5fc0eb277 100644 (file)
@@ -7,69 +7,6 @@ config SYS_CPU
 choice
        prompt "Target select"
 
-config TARGET_COGENT_MPC8XX
-       bool "Support cogent_mpc8xx"
-
-config TARGET_ESTEEM192E
-       bool "Support ESTEEM192E"
-
-config TARGET_HERMES
-       bool "Support hermes"
-
-config TARGET_IP860
-       bool "Support IP860"
-
-config TARGET_IVML24
-       bool "Support IVML24"
-
-config TARGET_IVMS8
-       bool "Support IVMS8"
-
-config TARGET_LWMON
-       bool "Support lwmon"
-
-config TARGET_NETVIA
-       bool "Support NETVIA"
-
-config TARGET_R360MPI
-       bool "Support R360MPI"
-
-config TARGET_RRVISION
-       bool "Support RRvision"
-
-config TARGET_SPD823TS
-       bool "Support SPD823TS"
-
-config TARGET_TOP860
-       bool "Support TOP860"
-
-config TARGET_KUP4K
-       bool "Support KUP4K"
-
-config TARGET_KUP4X
-       bool "Support KUP4X"
-
-config TARGET_ELPT860
-       bool "Support ELPT860"
-
-config TARGET_UC100
-       bool "Support uc100"
-
-config TARGET_FPS850L
-       bool "Support FPS850L"
-
-config TARGET_FPS860L
-       bool "Support FPS860L"
-
-config TARGET_NSCU
-       bool "Support NSCU"
-
-config TARGET_SM850
-       bool "Support SM850"
-
-config TARGET_TK885D
-       bool "Support TK885D"
-
 config TARGET_TQM823L
        bool "Support TQM823L"
 
@@ -106,25 +43,8 @@ config TARGET_TQM866M
 config TARGET_TQM885D
        bool "Support TQM885D"
 
-config TARGET_VIRTLAB2
-       bool "Support virtlab2"
-
 endchoice
 
-source "board/LEOX/elpt860/Kconfig"
-source "board/RRvision/Kconfig"
-source "board/cogent/Kconfig"
-source "board/esteem192e/Kconfig"
-source "board/hermes/Kconfig"
-source "board/ip860/Kconfig"
-source "board/ivm/Kconfig"
-source "board/kup/kup4k/Kconfig"
-source "board/kup/kup4x/Kconfig"
-source "board/lwmon/Kconfig"
-source "board/manroland/uc100/Kconfig"
-source "board/netvia/Kconfig"
-source "board/r360mpi/Kconfig"
-source "board/spd8xx/Kconfig"
 source "board/tqc/tqm8xx/Kconfig"
 
 endmenu
index eb4432f6d7798be8d7b7ad5daae78810a3181ec6..105be9ccc7e16e7a0b93b51fb199392c4d8b8d87 100644 (file)
@@ -457,8 +457,6 @@ void upmconfig (uint upm, uint * table, uint size)
 
 /* ------------------------------------------------------------------------- */
 
-#ifndef CONFIG_LWMON
-
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        ulong msr, addr;
@@ -493,32 +491,6 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        return 1;
 }
 
-#else  /* CONFIG_LWMON */
-
-/*
- * On the LWMON board, the MCLR reset input of the PIC's on the board
- * uses a 47K/1n RC combination which has a 47us time  constant.  The
- * low  signal on the HRESET pin of the CPU is only 512 clocks = 8 us
- * and thus too short to reset the external hardware. So we  use  the
- * watchdog to reset the board.
- */
-int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       /* prevent triggering the watchdog */
-       disable_interrupts ();
-
-       /* make sure the watchdog is running */
-       reset_8xx_watchdog ((immap_t *) CONFIG_SYS_IMMR);
-
-       /* wait for watchdog reset */
-       while (1) {};
-
-       /* NOTREACHED */
-       return 1;
-}
-
-#endif /* CONFIG_LWMON */
-
 /* ------------------------------------------------------------------------- */
 
 /*
@@ -580,42 +552,15 @@ void watchdog_reset (void)
 }
 #endif /* CONFIG_WATCHDOG */
 
-#if defined(CONFIG_WATCHDOG) || defined(CONFIG_LWMON)
+#if defined(CONFIG_WATCHDOG)
 
 void reset_8xx_watchdog (volatile immap_t * immr)
 {
-# if defined(CONFIG_LWMON)
-       /*
-        * The LWMON board uses a MAX6301 Watchdog
-        * with the trigger pin connected to port PA.7
-        *
-        * (The old board version used a MAX706TESA Watchdog, which
-        * had to be handled exactly the same.)
-        */
-# define WATCHDOG_BIT  0x0100
-       immr->im_ioport.iop_papar &= ~(WATCHDOG_BIT);   /* GPIO     */
-       immr->im_ioport.iop_padir |= WATCHDOG_BIT;      /* Output   */
-       immr->im_ioport.iop_paodr &= ~(WATCHDOG_BIT);   /* active output */
-
-       immr->im_ioport.iop_padat ^= WATCHDOG_BIT;      /* Toggle WDI   */
-# elif defined(CONFIG_KUP4K) || defined(CONFIG_KUP4X)
-       /*
-        * The KUP4 boards uses a TPS3705 Watchdog
-        * with the trigger pin connected to port PA.5
-        */
-# define WATCHDOG_BIT  0x0400
-       immr->im_ioport.iop_papar &= ~(WATCHDOG_BIT);   /* GPIO     */
-       immr->im_ioport.iop_padir |= WATCHDOG_BIT;      /* Output   */
-       immr->im_ioport.iop_paodr &= ~(WATCHDOG_BIT);   /* active output */
-
-       immr->im_ioport.iop_padat ^= WATCHDOG_BIT;      /* Toggle WDI   */
-# else
        /*
         * All other boards use the MPC8xx Internal Watchdog
         */
        immr->im_siu_conf.sc_swsr = 0x556c;     /* write magic1 */
        immr->im_siu_conf.sc_swsr = 0xaa39;     /* write magic2 */
-# endif /* CONFIG_LWMON */
 }
 #endif /* CONFIG_WATCHDOG */
 
index 60c401e311ecddb7fd7b52e76057ddcfb6135365..f621d6285ceb730b0380c1ee8e2988aa0a1214fe 100644 (file)
@@ -125,18 +125,6 @@ void cpu_init_f (volatile immap_t * immr)
         *  I owe him a free beer. - wd]
         */
 
-#if defined(CONFIG_HERMES)     || \
-    defined(CONFIG_IP860)      || \
-    defined(CONFIG_IVML24)     || \
-    defined(CONFIG_IVMS8)      || \
-    defined(CONFIG_LWMON)      || \
-    defined(CONFIG_R360MPI)    || \
-    defined(CONFIG_RMU)                || \
-    defined(CONFIG_SPD823TS)
-
-       memctl->memc_br0 = CONFIG_SYS_BR0_PRELIM;
-#endif
-
 #if defined(CONFIG_SYS_OR0_REMAP)
        memctl->memc_or0 = CONFIG_SYS_OR0_REMAP;
 #endif
@@ -156,10 +144,6 @@ void cpu_init_f (volatile immap_t * immr)
        memctl->memc_br1 = CONFIG_SYS_BR1_PRELIM;
 #endif
 
-#if defined(CONFIG_IP860) /* disable CS0 now that Flash is mapped on CS1 */
-       memctl->memc_br0 = 0;
-#endif
-
 #if defined(CONFIG_SYS_OR2_PRELIM) && defined(CONFIG_SYS_BR2_PRELIM)
        memctl->memc_or2 = CONFIG_SYS_OR2_PRELIM;
        memctl->memc_br2 = CONFIG_SYS_BR2_PRELIM;
index 2f8b1393f232c983012d92478a483f17fe5b0f78..6146de387528259168a9323fd5f84d56b3476203 100644 (file)
@@ -17,9 +17,6 @@
 
 #include <commproc.h>
 #include <i2c.h>
-#ifdef CONFIG_LWMON
-#include <watchdog.h>
-#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -591,10 +588,6 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)
        uchar xaddr[4];
        int rc;
 
-#ifdef CONFIG_LWMON
-       WATCHDOG_RESET();
-#endif
-
        xaddr[0] = (addr >> 24) & 0xFF;
        xaddr[1] = (addr >> 16) & 0xFF;
        xaddr[2] = (addr >> 8) & 0xFF;
index 01029ff68a236c537f1f2b72ba740a5d3102c38a..251966b4a07153ca799c476a07b87cfbf6217d25 100644 (file)
@@ -193,10 +193,6 @@ static int scc_init (struct eth_device *dev, bd_t * bis)
 
        volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
 
-#if defined(CONFIG_LWMON)
-       reset_phy();
-#endif
-
        pram_ptr = (scc_enet_t *) & (immr->im_cpm.cp_dparam[PROFF_ENET]);
 
        rxIdx = 0;
@@ -446,26 +442,6 @@ static int scc_init (struct eth_device *dev, bd_t * bis)
        immr->im_cpm.cp_pbdir |= PB_ENET_TENA;
 #else
 #error Configuration Error: exactly ONE of PB_ENET_TENA, PC_ENET_TENA must be defined
-#endif
-
-#if defined(CONFIG_NETVIA)
-#if defined(PA_ENET_PDN)
-       immr->im_ioport.iop_papar &= ~PA_ENET_PDN;
-       immr->im_ioport.iop_padir |= PA_ENET_PDN;
-       immr->im_ioport.iop_padat |= PA_ENET_PDN;
-#elif defined(PB_ENET_PDN)
-       immr->im_cpm.cp_pbpar &= ~PB_ENET_PDN;
-       immr->im_cpm.cp_pbdir |= PB_ENET_PDN;
-       immr->im_cpm.cp_pbdat |= PB_ENET_PDN;
-#elif defined(PC_ENET_PDN)
-       immr->im_ioport.iop_pcpar &= ~PC_ENET_PDN;
-       immr->im_ioport.iop_pcdir |= PC_ENET_PDN;
-       immr->im_ioport.iop_pcdat |= PC_ENET_PDN;
-#elif defined(PD_ENET_PDN)
-       immr->im_ioport.iop_pdpar &= ~PD_ENET_PDN;
-       immr->im_ioport.iop_pddir |= PD_ENET_PDN;
-       immr->im_ioport.iop_pddat |= PD_ENET_PDN;
-#endif
 #endif
 
        /*
index b1625fba16bdb5ff39bcf410ebc2aacc28c7efe7..af65c969c2f51c3d9a72629d139bc1e2fbfeeb54 100644 (file)
@@ -405,22 +405,6 @@ static int scc_init (void)
        sp = (scc_t *) &(cp->cp_scc[SCC_INDEX]);
        up = (scc_uart_t *) &cp->cp_dparam[PROFF_SCC];
 
-#if defined(CONFIG_LWMON) && defined(CONFIG_8xx_CONS_SCC2)
-    {  /* Disable Ethernet, enable Serial */
-       uchar c;
-
-       c = pic_read  (0x61);
-       c &= ~0x40;     /* enable COM3 */
-       c |=  0x80;     /* disable Ethernet */
-       pic_write (0x61, c);
-
-       /* enable RTS2 */
-       cp->cp_pbpar |=  0x2000;
-       cp->cp_pbdat |=  0x2000;
-       cp->cp_pbdir |=  0x2000;
-    }
-#endif /* CONFIG_LWMON */
-
        /* Disable transmitter/receiver. */
        sp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
 
@@ -432,18 +416,13 @@ static int scc_init (void)
        cp->cp_pbdir &= ~0x06;
        cp->cp_pbodr &= ~0x06;
 
-#elif (SCC_INDEX < 2) || !defined(CONFIG_IP860)
+#elif (SCC_INDEX < 2)
        /*
         * Standard configuration for SCC's is on Part A
         */
        ip->iop_papar |=  ((3 << (2 * SCC_INDEX)));
        ip->iop_padir &= ~((3 << (2 * SCC_INDEX)));
        ip->iop_paodr &= ~((3 << (2 * SCC_INDEX)));
-#else
-       /*
-        * The IP860 has SCC3 and SCC4 on Port D
-        */
-       ip->iop_pdpar |=  ((3 << (2 * SCC_INDEX)));
 #endif
 
        /* Allocate space for two buffer descriptors in the DP ram. */
index 9590bfd3fdbe9e6629620d9eff86ff9aa90a88b3..659e6889bf6cb52821f1a54ab808516b36266be1 100644 (file)
@@ -52,34 +52,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #define VIDEO_INFO_X           VIDEO_LOGO_WIDTH+8
 #define VIDEO_INFO_Y           16
 
-/************************************************************************/
-/* ** VIDEO ENCODER CONSTANTS                                          */
-/************************************************************************/
-
-#ifdef CONFIG_VIDEO_ENCODER_AD7176
-
-#include <video_ad7176.h>      /* Sets encoder data, mode, and visible and active area */
-
-#define VIDEO_I2C              1
-#define VIDEO_I2C_ADDR         CONFIG_VIDEO_ENCODER_AD7176_ADDR
-#endif
-
-#ifdef CONFIG_VIDEO_ENCODER_AD7177
-
-#include <video_ad7177.h>      /* Sets encoder data, mode, and visible and active area */
-
-#define VIDEO_I2C              1
-#define VIDEO_I2C_ADDR         CONFIG_VIDEO_ENCODER_AD7177_ADDR
-#endif
-
-#ifdef CONFIG_VIDEO_ENCODER_AD7179
-
-#include <video_ad7179.h>      /* Sets encoder data, mode, and visible and active area */
-
-#define VIDEO_I2C              1
-#define VIDEO_I2C_ADDR         CONFIG_VIDEO_ENCODER_AD7179_ADDR
-#endif
-
 /************************************************************************/
 /* ** VIDEO MODE CONSTANTS                                             */
 /************************************************************************/
@@ -467,7 +439,6 @@ static inline void video_putstring (int xx, int yy, unsigned char *s)
 /* ** VIDEO CONTROLLER LOW-LEVEL FUNCTIONS                             */
 /************************************************************************/
 
-#if !defined(CONFIG_RRVISION)
 static void video_mode_dupefield (VRAM * source, VRAM * dest, int entries)
 {
        int i;
@@ -480,7 +451,6 @@ static void video_mode_dupefield (VRAM * source, VRAM * dest, int entries)
        dest[0].lcyc++;                 /* Add a cycle to the first entry */
        dest[entries - 1].lst = 1;      /* Set end of ram entries */
 }
-#endif
 
 static void inline video_mode_addentry (VRAM * vr,
        int Hx, int Vx, int Fx, int Bx,
@@ -641,72 +611,6 @@ static int video_mode_generate (void)
 
 #ifdef VIDEO_MODE_PAL
 
-#if defined(CONFIG_RRVISION)
-
-#define HPW   160  /* horizontal pulse width (was 139) */
-#define VPW    2  /* vertical pulse width              */
-#define HBP   104  /* horizontal back porch (was 112)  */
-#define VBP    19  /* vertical back porch (was 19)     */
-#define VID_R 240  /* number of rows                   */
-
-       debug ("[VIDEO CTRL] Starting to add controller entries...");
-/*
- * Even field
- */
-       ADDENTRY (0, 3, 0, 3, 1, 0, 2, 0, 0);
-       ADDENTRY (0, 0, 0, 3, 1, 0, HPW, 0, 0);
-       ADDENTRY (3, 0, 0, 3, 1, 0, HBP + (VIDEO_COLS * 2) + 72, 0, 0);
-
-       ADDENTRY (0, 0, 0, 3, 1, 0, VPW, 1, 0);
-       ADDENTRY (0, 0, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 0, 0, 3, 1, 0, HBP + (VIDEO_COLS * 2) + 72, 1, 0);
-
-       ADDENTRY (0, 3, 0, 3, 1, 0, VBP, 1, 0);
-       ADDENTRY (0, 3, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, HBP + (VIDEO_COLS * 2) + 72, 1, 0);
-/*
- * Active area
- */
-       ADDENTRY (0, 3, 0, 3, 1, 0, VID_R , 1, 0);
-       ADDENTRY (0, 3, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, HBP, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 0, 0, VIDEO_COLS*2, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, 72, 1, 1);
-
-       ADDENTRY (0, 3, 0, 3, 1, 0, 51, 1, 0);
-       ADDENTRY (0, 3, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, HBP +(VIDEO_COLS * 2) + 72 , 1, 0);
-/*
- * Odd field
- */
-       ADDENTRY (0, 3, 0, 3, 1, 0, 2, 0, 0);
-       ADDENTRY (0, 0, 0, 3, 1, 0, HPW, 0, 0);
-       ADDENTRY (3, 0, 0, 3, 1, 0, HBP + (VIDEO_COLS * 2) + 72, 0, 0);
-
-       ADDENTRY (0, 0, 0, 3, 1, 0, VPW+1, 1, 0);
-       ADDENTRY (0, 0, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 0, 0, 3, 1, 0, HBP + (VIDEO_COLS * 2) + 72, 1, 0);
-
-       ADDENTRY (0, 3, 0, 3, 1, 0, VBP, 1, 0);
-       ADDENTRY (0, 3, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, HBP + (VIDEO_COLS * 2) + 72, 1, 0);
-/*
- * Active area
- */
-       ADDENTRY (0, 3, 0, 3, 1, 0, VID_R , 1, 0);
-       ADDENTRY (0, 3, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, HBP, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 0, 0, VIDEO_COLS*2, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, 72, 1, 1);
-
-       ADDENTRY (0, 3, 0, 3, 1, 0, 51, 1, 0);
-       ADDENTRY (0, 3, 0, 3, 1, 0, HPW-1, 0, 0);
-       ADDENTRY (3, 3, 0, 3, 1, 0, HBP +(VIDEO_COLS * 2) + 72 , 1, 0);
-
-       debug ("done\n");
-
-#else  /* !CONFIG_RRVISION */
-
 /*
  *     Hx Vx Fx Bx VDS INT LCYC LP LST
  *
@@ -758,7 +662,6 @@ static int video_mode_generate (void)
  * one more cycle loop and a last identifier)
  */
        video_mode_dupefield (vr, &vr[entry], entry);
-#endif /* CONFIG_RRVISION */
 
 #endif /* VIDEO_MODE_PAL */
 
@@ -787,42 +690,6 @@ static int video_mode_generate (void)
 
 static void video_encoder_init (void)
 {
-#ifdef VIDEO_I2C
-       int rc;
-
-       /* Initialize the I2C */
-       debug ("[VIDEO ENCODER] Initializing I2C bus...\n");
-#ifdef CONFIG_SYS_I2C
-       i2c_init_all();
-#else
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-#endif
-
-       /* Send configuration */
-#ifdef DEBUG
-       {
-               int i;
-
-               puts ("[VIDEO ENCODER] Configuring the encoder...\n");
-
-               printf ("Sending %zu bytes (@ %08lX) to I2C 0x%lX:\n   ",
-                       sizeof(video_encoder_data),
-                       (ulong)video_encoder_data,
-                       (ulong)VIDEO_I2C_ADDR);
-               for (i=0; i<sizeof(video_encoder_data); ++i) {
-                       printf(" %02X", video_encoder_data[i]);
-               }
-               putc ('\n');
-       }
-#endif /* DEBUG */
-
-       if ((rc = i2c_write (VIDEO_I2C_ADDR, 0, 1,
-                        video_encoder_data,
-                        sizeof(video_encoder_data))) != 0) {
-               printf ("i2c_send error: rc=%d\n", rc);
-               return;
-       }
-#endif /* VIDEO_I2C */
        return;
 }
 
@@ -866,21 +733,6 @@ static void video_ctrl_init (void *memptr)
        immap->im_ioport.iop_pdpar = 0x1fff;
        immap->im_ioport.iop_pddir = 0x0000;
 
-#ifdef CONFIG_RRVISION
-       debug ("PC5->Output(1): enable PAL clock");
-       immap->im_ioport.iop_pcpar &= ~(0x0400);
-       immap->im_ioport.iop_pcdir |=   0x0400 ;
-       immap->im_ioport.iop_pcdat |=   0x0400 ;
-       debug ("PDPAR=0x%04X PDDIR=0x%04X PDDAT=0x%04X\n",
-              immap->im_ioport.iop_pdpar,
-              immap->im_ioport.iop_pddir,
-              immap->im_ioport.iop_pddat);
-       debug ("PCPAR=0x%04X PCDIR=0x%04X PCDAT=0x%04X\n",
-              immap->im_ioport.iop_pcpar,
-              immap->im_ioport.iop_pcdir,
-              immap->im_ioport.iop_pcdat);
-#endif /* CONFIG_RRVISION */
-
        /* Blanking the screen. */
        debug ("[VIDEO CTRL] Blanking the screen...\n");
        video_fill (VIDEO_BG_COL);
index 84fec5ed289b03f5574d2fb71f2e147398d3025f..2d28eb26552af73833018bd17660910dd9df1245 100644 (file)
@@ -76,6 +76,10 @@ static struct cpu_type cpu_type_list[] = {
        CPU_TYPE_ENTRY(T1020, T1020, 0),
        CPU_TYPE_ENTRY(T1021, T1021, 0),
        CPU_TYPE_ENTRY(T1022, T1022, 0),
+       CPU_TYPE_ENTRY(T1024, T1024, 0),
+       CPU_TYPE_ENTRY(T1023, T1023, 0),
+       CPU_TYPE_ENTRY(T1014, T1014, 0),
+       CPU_TYPE_ENTRY(T1013, T1013, 0),
        CPU_TYPE_ENTRY(T2080, T2080, 0),
        CPU_TYPE_ENTRY(T2081, T2081, 0),
        CPU_TYPE_ENTRY(BSC9130, 9130, 1),
index c6b4d955496e0c69d2d1179480036f885af909fd..1c63f93f4d45c46c07ea14de0fab61ff141a9e50 100644 (file)
@@ -73,110 +73,6 @@ void ft_fixup_num_cores(void *blob) {
 }
 #endif /* defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) */
 
-#if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB)
-static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
-                               const char *phy_type, int start_offset)
-{
-       const char *compat_dr = "fsl-usb2-dr";
-       const char *compat_mph = "fsl-usb2-mph";
-       const char *prop_mode = "dr_mode";
-       const char *prop_type = "phy_type";
-       const char *node_type = NULL;
-       int node_offset;
-       int err;
-
-       node_offset = fdt_node_offset_by_compatible(blob,
-                       start_offset, compat_mph);
-       if (node_offset < 0) {
-               node_offset = fdt_node_offset_by_compatible(blob,
-                       start_offset, compat_dr);
-               if (node_offset < 0) {
-                       printf("WARNING: could not find compatible"
-                               " node %s or %s: %s.\n", compat_mph,
-                               compat_dr, fdt_strerror(node_offset));
-                       return -1;
-               } else
-                       node_type = compat_dr;
-       } else
-               node_type = compat_mph;
-
-       if (mode) {
-               err = fdt_setprop(blob, node_offset, prop_mode, mode,
-                                 strlen(mode) + 1);
-               if (err < 0)
-                       printf("WARNING: could not set %s for %s: %s.\n",
-                              prop_mode, node_type, fdt_strerror(err));
-       }
-
-       if (phy_type) {
-               err = fdt_setprop(blob, node_offset, prop_type, phy_type,
-                                 strlen(phy_type) + 1);
-               if (err < 0)
-                       printf("WARNING: could not set %s for %s: %s.\n",
-                              prop_type, node_type, fdt_strerror(err));
-       }
-
-       return node_offset;
-}
-
-void fdt_fixup_dr_usb(void *blob, bd_t *bd)
-{
-       const char *modes[] = { "host", "peripheral", "otg" };
-       const char *phys[] = { "ulpi", "utmi" };
-       int usb_mode_off = -1;
-       int usb_phy_off = -1;
-       char str[5];
-       int i, j;
-
-       for (i = 1; i <= CONFIG_USB_MAX_CONTROLLER_COUNT; i++) {
-               const char *dr_mode_type = NULL;
-               const char *dr_phy_type = NULL;
-               int mode_idx = -1, phy_idx = -1;
-               snprintf(str, 5, "%s%d", "usb", i);
-               if (hwconfig(str)) {
-                       for (j = 0; j < ARRAY_SIZE(modes); j++) {
-                               if (hwconfig_subarg_cmp(str, "dr_mode",
-                                               modes[j])) {
-                                       mode_idx = j;
-                                       break;
-                               }
-                       }
-
-                       for (j = 0; j < ARRAY_SIZE(phys); j++) {
-                               if (hwconfig_subarg_cmp(str, "phy_type",
-                                               phys[j])) {
-                                       phy_idx = j;
-                                       break;
-                               }
-                       }
-
-                       if (mode_idx < 0 && phy_idx < 0) {
-                               printf("WARNING: invalid phy or mode\n");
-                               return;
-                       }
-
-                       if (mode_idx > -1)
-                               dr_mode_type = modes[mode_idx];
-
-                       if (phy_idx > -1)
-                               dr_phy_type = phys[phy_idx];
-               }
-
-               usb_mode_off = fdt_fixup_usb_mode_phy_type(blob,
-                       dr_mode_type, NULL, usb_mode_off);
-
-               if (usb_mode_off < 0)
-                       return;
-
-               usb_phy_off = fdt_fixup_usb_mode_phy_type(blob,
-                       NULL, dr_phy_type, usb_phy_off);
-
-               if (usb_phy_off < 0)
-                       return;
-       }
-}
-#endif /* defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) */
-
 /*
  * update crypto node properties to a specified revision of the SEC
  * called with sec_rev == 0 if not on an E processor
index f8d03cba2d6f7a27dd69d3b5a5f793f166e87dcb..71bb9d776fa59c24303d985d21a269e10938a344 100644 (file)
@@ -1661,7 +1661,7 @@ static void program_mode(unsigned long *dimm_populated,
                for (dimm_num = 0; dimm_num < num_dimm_banks; dimm_num++) {
                        /* If a dimm is installed in a particular slot ... */
                        if (dimm_populated[dimm_num] != SDRAM_NONE)
-                               t_wr_ns = max(t_wr_ns,
+                               t_wr_ns = max(t_wr_ns, (unsigned long)
                                              spd_read(iic0_dimm_addr[dimm_num], 36) >> 2);
                }
 
@@ -1838,12 +1838,18 @@ static void program_tr(unsigned long *dimm_populated,
                        else
                                sdram_ddr1 = false;
 
-                       t_rcd_ns = max(t_rcd_ns, spd_read(iic0_dimm_addr[dimm_num], 29) >> 2);
-                       t_rrd_ns = max(t_rrd_ns, spd_read(iic0_dimm_addr[dimm_num], 28) >> 2);
-                       t_rp_ns  = max(t_rp_ns,  spd_read(iic0_dimm_addr[dimm_num], 27) >> 2);
-                       t_ras_ns = max(t_ras_ns, spd_read(iic0_dimm_addr[dimm_num], 30));
-                       t_rc_ns  = max(t_rc_ns,  spd_read(iic0_dimm_addr[dimm_num], 41));
-                       t_rfc_ns = max(t_rfc_ns, spd_read(iic0_dimm_addr[dimm_num], 42));
+                       t_rcd_ns = max(t_rcd_ns,
+                                      (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 29) >> 2);
+                       t_rrd_ns = max(t_rrd_ns,
+                                      (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 28) >> 2);
+                       t_rp_ns  = max(t_rp_ns,
+                                      (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 27) >> 2);
+                       t_ras_ns = max(t_ras_ns,
+                                      (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 30));
+                       t_rc_ns  = max(t_rc_ns,
+                                      (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 41));
+                       t_rfc_ns = max(t_rfc_ns,
+                                      (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 42));
                }
        }
 
@@ -1916,9 +1922,12 @@ static void program_tr(unsigned long *dimm_populated,
                for (dimm_num = 0; dimm_num < num_dimm_banks; dimm_num++) {
                        /* If a dimm is installed in a particular slot ... */
                        if (dimm_populated[dimm_num] != SDRAM_NONE) {
-                               t_wpc_ns = max(t_wtr_ns, spd_read(iic0_dimm_addr[dimm_num], 36) >> 2);
-                               t_wtr_ns = max(t_wtr_ns, spd_read(iic0_dimm_addr[dimm_num], 37) >> 2);
-                               t_rpc_ns = max(t_rpc_ns, spd_read(iic0_dimm_addr[dimm_num], 38) >> 2);
+                               t_wpc_ns = max(t_wtr_ns,
+                                              (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 36) >> 2);
+                               t_wtr_ns = max(t_wtr_ns,
+                                              (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 37) >> 2);
+                               t_rpc_ns = max(t_rpc_ns,
+                                              (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 38) >> 2);
                        }
                }
 
@@ -2314,7 +2323,8 @@ static void program_ecc(unsigned long *dimm_populated,
        for (dimm_num = 0; dimm_num < MAXDIMMS; dimm_num++) {
                /* If a dimm is installed in a particular slot ... */
                if (dimm_populated[dimm_num] != SDRAM_NONE)
-                       ecc = max(ecc, spd_read(iic0_dimm_addr[dimm_num], 11));
+                       ecc = max(ecc,
+                                 (unsigned long)spd_read(iic0_dimm_addr[dimm_num], 11));
        }
        if (ecc == 0)
                return;
index 8f8860163c990189e545e31e0e791608815c440a..a40ae3b38af5d000f713f2c3a17a1ab5bf444eb9 100644 (file)
@@ -13,9 +13,6 @@ config TARGET_CSB272
 config TARGET_CSB472
        bool "Support csb472"
 
-config TARGET_G2000
-       bool "Support G2000"
-
 config TARGET_JSE
        bool "Support JSE"
 
@@ -110,78 +107,24 @@ config TARGET_CATCENTER
 config TARGET_PPCHAMELEONEVB
        bool "Support PPChameleonEVB"
 
-config TARGET_APC405
-       bool "Support APC405"
-
-config TARGET_AR405
-       bool "Support AR405"
-
-config TARGET_ASH405
-       bool "Support ASH405"
-
-config TARGET_CMS700
-       bool "Support CMS700"
-
 config TARGET_CPCI2DP
        bool "Support CPCI2DP"
 
-config TARGET_CPCI405
-       bool "Support CPCI405"
-
 config TARGET_CPCI4052
        bool "Support CPCI4052"
 
-config TARGET_CPCI405AB
-       bool "Support CPCI405AB"
-
-config TARGET_CPCI405DT
-       bool "Support CPCI405DT"
-
-config TARGET_CPCIISER4
-       bool "Support CPCIISER4"
-
-config TARGET_DP405
-       bool "Support DP405"
-
-config TARGET_DU405
-       bool "Support DU405"
-
-config TARGET_DU440
-       bool "Support DU440"
-
-config TARGET_HH405
-       bool "Support HH405"
-
-config TARGET_HUB405
-       bool "Support HUB405"
-
-config TARGET_OCRTC
-       bool "Support OCRTC"
-
-config TARGET_PCI405
-       bool "Support PCI405"
-
 config TARGET_PLU405
        bool "Support PLU405"
 
-config TARGET_PMC405
-       bool "Support PMC405"
-
 config TARGET_PMC405DE
        bool "Support PMC405DE"
 
 config TARGET_PMC440
        bool "Support PMC440"
 
-config TARGET_VOH405
-       bool "Support VOH405"
-
 config TARGET_VOM405
        bool "Support VOM405"
 
-config TARGET_WUH405
-       bool "Support WUH405"
-
 config TARGET_DLVISION_10G
        bool "Support dlvision-10g"
 
@@ -257,28 +200,12 @@ source "board/avnet/v5fx30teval/Kconfig"
 source "board/csb272/Kconfig"
 source "board/csb472/Kconfig"
 source "board/dave/PPChameleonEVB/Kconfig"
-source "board/esd/apc405/Kconfig"
-source "board/esd/ar405/Kconfig"
-source "board/esd/ash405/Kconfig"
-source "board/esd/cms700/Kconfig"
 source "board/esd/cpci2dp/Kconfig"
 source "board/esd/cpci405/Kconfig"
-source "board/esd/cpciiser4/Kconfig"
-source "board/esd/dp405/Kconfig"
-source "board/esd/du405/Kconfig"
-source "board/esd/du440/Kconfig"
-source "board/esd/hh405/Kconfig"
-source "board/esd/hub405/Kconfig"
-source "board/esd/ocrtc/Kconfig"
-source "board/esd/pci405/Kconfig"
 source "board/esd/plu405/Kconfig"
-source "board/esd/pmc405/Kconfig"
 source "board/esd/pmc405de/Kconfig"
 source "board/esd/pmc440/Kconfig"
-source "board/esd/voh405/Kconfig"
 source "board/esd/vom405/Kconfig"
-source "board/esd/wuh405/Kconfig"
-source "board/g2000/Kconfig"
 source "board/gdsys/405ep/Kconfig"
 source "board/gdsys/405ex/Kconfig"
 source "board/gdsys/dlvision/Kconfig"
index 22561231cb8d2d1f18cf39e69d042e7d45b65582..e5a0e21e3696782bdd46f06015d67fe6561862dd 100644 (file)
@@ -451,6 +451,9 @@ cpu_init_f (void)
 #endif /* CONFIG_440SP/SPE || CONFIG_460EX/GT || CONFIG_405EX */
 
        gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
+
+       /* Clear initial global data */
+       memset((void *)gd, 0, sizeof(gd_t));
 }
 
 /*
index bd905d15863b99ca6c0e81f75bf2d5c69dee514b..eef9c5a17fa78cabf27de3d4d834cd9f335b592c 100644 (file)
@@ -18,7 +18,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void __ft_board_setup(void *blob, bd_t *bd)
+int __ft_board_setup(void *blob, bd_t *bd)
 {
        int rc;
        int i;
@@ -60,8 +60,11 @@ void __ft_board_setup(void *blob, bd_t *bd)
                printf("Unable to update property EBC mappings, err=%s\n",
                       fdt_strerror(rc));
        }
+
+       return 0;
 }
-void ft_board_setup(void *blob, bd_t *bd) __attribute__((weak, alias("__ft_board_setup")));
+int ft_board_setup(void *blob, bd_t *bd)
+               __attribute__((weak, alias("__ft_board_setup")));
 
 /*
  * Fixup all PCIe nodes by setting the device_type property
index d1e78f6b0c3c78901d45fe43faef782c604f1d91..65a0675446e5bf41030d80e8dea1c1c2e18f76c5 100644 (file)
@@ -40,8 +40,6 @@
 #define readl(a) (*((volatile u32 *)(a)))
 #define writel(a, b) (*((volatile u32 *)(b)) = ((volatile u32)a))
 
-#define min_t(type,x,y) ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
-
 #ifdef DEBUG
 #define dbg(format, arg...) printf("DEBUG: " format "\n", ## arg)
 #else
index 4c1774f503c834ee26877d58cddbd92a026865e6..01b09058cc3fb8765622e17379765f6d71031435 100644 (file)
 #define CONFIG_SYS_FSL_ERRATUM_A006379
 #define CONFIG_SYS_FSL_ERRATUM_A007186
 #define CONFIG_SYS_FSL_ERRATUM_A006593
+#define CONFIG_SYS_FSL_ERRATUM_A007798
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xfe000000
 #define CONFIG_SYS_FSL_SFP_VER_3_0
 #define CONFIG_SYS_FSL_PCI_VER_3_X
@@ -768,6 +769,7 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #define CONFIG_SYS_PME_CLK             CONFIG_PME_PLAT_CLK_DIV
 #define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_5_0
 #define CONFIG_SYS_FSL_IFC_BANK_COUNT  8
+#define CONFIG_SYS_FSL_ERRATUM_A008044
 #define CONFIG_SYS_FMAN_V3
 #define CONFIG_FM_PLAT_CLK_DIV 1
 #define CONFIG_SYS_FM1_CLK             CONFIG_FM_PLAT_CLK_DIV
@@ -785,6 +787,52 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #define MAX_QE_RISC                    1
 #define QE_NUM_OF_SNUM                 28
 
+#elif defined(CONFIG_PPC_T1024) || defined(CONFIG_PPC_T1023) ||\
+defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
+#define CONFIG_E5500
+#define CONFIG_FSL_CORENET          /* Freescale CoreNet platform */
+#define CONFIG_SYS_FSL_QORIQ_CHASSIS2  /* Freescale Chassis generation 2 */
+#define CONFIG_SYS_FSL_CORES_PER_CLUSTER 1
+#define CONFIG_SYS_FSL_QMAN_V3  /* QMAN version 3 */
+#define CONFIG_SYS_FMAN_V3
+#ifdef CONFIG_SYS_FSL_DDR4
+#define CONFIG_SYS_FSL_DDRC_GEN4
+#endif
+#if defined(CONFIG_PPC_T1024) || defined(CONFIG_PPC_T1023)
+#define CONFIG_MAX_CPUS                        2
+#elif defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
+#define CONFIG_MAX_CPUS                        1
+#endif
+#define CONFIG_SYS_FSL_NUM_CC_PLL      2
+#define CONFIG_SYS_FSL_CLUSTER_CLOCKS  { 1, 1, 1, 1 }
+#define CONFIG_SYS_SDHC_CLOCK          0
+#define CONFIG_SYS_FSL_NUM_LAWS                16
+#define CONFIG_SYS_FSL_SRDS_1
+#define CONFIG_SYS_FSL_SEC_COMPAT      5
+#define CONFIG_SYS_NUM_FMAN            1
+#define CONFIG_SYS_NUM_FM1_DTSEC       4
+#define CONFIG_SYS_NUM_FM1_10GEC       1
+#define CONFIG_FSL_FM_10GEC_REGULAR_NOTATION
+#define CONFIG_NUM_DDR_CONTROLLERS     1
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+#define CONFIG_SYS_FSL_DDR_VER  FSL_DDR_VER_5_0
+#define CONFIG_SYS_FSL_IFC_BANK_COUNT  8
+#define CONFIG_SYS_FM1_CLK             0
+#define CONFIG_QBMAN_CLK_DIV           1
+#define CONFIG_SYS_FM_MURAM_SIZE       0x30000
+#define CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+#define CONFIG_SYS_FSL_TBCLK_DIV       16
+#define CONFIG_SYS_FSL_PCIE_COMPAT     "fsl,qoriq-pcie-v2.4"
+#define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
+#define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
+#define CONFIG_SYS_CCSRBAR_DEFAULT     0xfe000000
+#define CONFIG_SYS_FSL_ERRATUM_ESDHC111
+#define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
+#define QE_MURAM_SIZE                  0x6000UL
+#define MAX_QE_RISC                    1
+#define QE_NUM_OF_SNUM                 28
+#define CONFIG_SYS_FSL_SFP_VER_3_0
+
 #elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081)
 #define CONFIG_E6500
 #define CONFIG_SYS_PPC64               /* 64-bit core */
index 64da4bb3bae185ae180908332f5033b2b2b701ea..61c6d70c4b71556a188048266a22e82c399d12be 100644 (file)
@@ -26,59 +26,28 @@ static inline bool has_erratum_a006379(void)
        return false;
 }
 #endif
+#endif
 
-#ifdef CONFIG_SYS_FSL_ERRATUM_A006261
-static inline bool has_erratum_a006261(void)
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007186
+static inline bool has_erratum_a007186(void)
 {
        u32 svr = get_svr();
        u32 soc = SVR_SOC_VER(svr);
 
        switch (soc) {
-       case SVR_P1010:
-               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
-       case SVR_P2041:
-       case SVR_P2040:
-               return IS_SVR_REV(svr, 1, 0) ||
-                       IS_SVR_REV(svr, 1, 1) || IS_SVR_REV(svr, 2, 1);
-       case SVR_P3041:
-               return IS_SVR_REV(svr, 1, 0) ||
-                       IS_SVR_REV(svr, 1, 1) ||
-                       IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 2, 1);
-       case SVR_P5010:
-       case SVR_P5020:
-       case SVR_P5021:
-               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
        case SVR_T4240:
+               return IS_SVR_REV(svr, 2, 0);
        case SVR_T4160:
-       case SVR_T4080:
-               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
-       case SVR_T1040:
-               return IS_SVR_REV(svr, 1, 0);
-       case SVR_T2080:
-       case SVR_T2081:
-               return IS_SVR_REV(svr, 1, 0);
-       case SVR_P5040:
-               return IS_SVR_REV(svr, 1, 0);
-       }
-
-       return false;
-}
-#endif
-
-static inline bool has_erratum_a007075(void)
-{
-       u32 svr = get_svr();
-       u32 soc = SVR_SOC_VER(svr);
-
-       switch (soc) {
+               return IS_SVR_REV(svr, 2, 0);
        case SVR_B4860:
+               return IS_SVR_REV(svr, 2, 0);
        case SVR_B4420:
-               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
-       case SVR_P1010:
+               return IS_SVR_REV(svr, 2, 0);
+       case SVR_T2081:
+       case SVR_T2080:
                return IS_SVR_REV(svr, 1, 0);
-       case SVR_P4080:
-               return IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 3, 0);
        }
+
        return false;
 }
 #endif
index adfbb66e77cf71e64dd87cc0a625400e05172266..811f0342935998a8fbce02e655b2d07eeb569a60 100644 (file)
@@ -91,8 +91,8 @@ extern void fdt_fixup_liodn(void *blob);
                CONFIG_SYS_MPC85xx_PCIE##pciNum##_OFFSET)
 
 /* reg nodes for DMA start @ 0x300 */
-#define SET_DMA_LIODN(dmaNum, liodn) \
-       SET_GUTS_LIODN("fsl,eloplus-dma", liodn, dma##dmaNum##liodnr,\
+#define SET_DMA_LIODN(dmaNum, compat, liodn) \
+       SET_GUTS_LIODN(compat, liodn, dma##dmaNum##liodnr,\
                CONFIG_SYS_MPC85xx_DMA##dmaNum##_OFFSET + 0x300)
 
 #define SET_SDHC_LIODN(sdhcNum, liodn) \
index 4640e33a5e38b4a51385b98bade9c6c6e4657cca..bed2a40bb274efdd24740209f4fa2fdb1d1db803 100644 (file)
@@ -159,6 +159,7 @@ struct memac {
 #define MEMAC_CMD_CFG_RX_EN            0x00000002 /* MAC Rx path enable */
 #define MEMAC_CMD_CFG_TX_EN            0x00000001 /* MAC Tx path enable */
 #define MEMAC_CMD_CFG_RXTX_EN  (MEMAC_CMD_CFG_RX_EN | MEMAC_CMD_CFG_TX_EN)
+#define MEMAC_CMD_CFG_NO_LEN_CHK 0x20000 /* Payload length check disable */
 
 /* HASHTABLE_CTRL - Hashtable control register */
 #define HASHTABLE_CTRL_MCAST_EN        0x00000200 /* enable mulitcast Rx hash */
@@ -243,6 +244,7 @@ struct memac_mdio_controller {
 #define MDIO_STAT_PRE          (1 << 5)
 #define MDIO_STAT_ENC          (1 << 6)
 #define MDIO_STAT_HOLD_15_CLK  (7 << 2)
+#define MDIO_STAT_NEG          (1 << 23)
 
 #define MDIO_CTL_DEV_ADDR(x)   (x & 0x1f)
 #define MDIO_CTL_PORT_ADDR(x)  ((x & 0x1f) << 5)
index 74c5d8f2d9233e4534ff05e60b44d4bc5e8cf7dd..14c6fc3cfec2eba879a9c0ed3d3b0faa84f92a5e 100644 (file)
@@ -22,7 +22,9 @@
        defined(CONFIG_T2080QDS) || \
        defined(CONFIG_T2080RDB) || \
        defined(CONFIG_T1040QDS) || \
-       defined(CONFIG_T104xRDB)
+       defined(CONFIG_T104xRDB) || \
+       defined(CONFIG_PPC_T1023) || \
+       defined(CONFIG_PPC_T1024)
 #define CONFIG_SYS_CPC_REINIT_F
 #undef CONFIG_SYS_INIT_L3_ADDR
 #define CONFIG_SYS_INIT_L3_ADDR                        0xbff00000
index f60cb0a6de22522cd7265c4d95134a30aacbfbea..8e0e190003872928bc3814e028388a9b6e025029 100644 (file)
@@ -71,6 +71,22 @@ enum srds_prtcl {
        INTERLAKEN,
        QSGMII_SW1_A,           /* Indicates ports on L2 Switch */
        QSGMII_SW1_B,
+       SGMII_2500_FM1_DTSEC1,
+       SGMII_2500_FM1_DTSEC2,
+       SGMII_2500_FM1_DTSEC3,
+       SGMII_2500_FM1_DTSEC4,
+       SGMII_2500_FM1_DTSEC5,
+       SGMII_2500_FM1_DTSEC6,
+       SGMII_2500_FM1_DTSEC9,
+       SGMII_2500_FM1_DTSEC10,
+       SGMII_2500_FM2_DTSEC1,
+       SGMII_2500_FM2_DTSEC2,
+       SGMII_2500_FM2_DTSEC3,
+       SGMII_2500_FM2_DTSEC4,
+       SGMII_2500_FM2_DTSEC5,
+       SGMII_2500_FM2_DTSEC6,
+       SGMII_2500_FM2_DTSEC9,
+       SGMII_2500_FM2_DTSEC10,
 };
 
 enum srds {
index 8e59e8ba74b4073c1e8d17789b6592e25c842145..4430477f9aa6138d1453ff7f162fa087f7d2ca7d 100644 (file)
@@ -109,7 +109,7 @@ struct arch_global_data {
 #if defined(CONFIG_WD_MAX_RATE)
        unsigned long long wdt_last;    /* trace watch-dog triggering rate */
 #endif
-#if defined(CONFIG_LWMON) || defined(CONFIG_LWMON5)
+#if defined(CONFIG_LWMON5)
        unsigned long kbd_status;
 #endif
 };
index 0264523d6402779e094ed5fee993f9fddcc95be0..ace1d120c647c313f237fcb1763b9da6873452b7 100644 (file)
@@ -1626,10 +1626,15 @@ typedef struct ccsr_gur {
 #define FSL_CORENET_DEVDISR2_DTSEC1_6  0x04000000
 #define FSL_CORENET_DEVDISR2_DTSEC1_9  0x00800000
 #define FSL_CORENET_DEVDISR2_DTSEC1_10 0x00400000
+#ifdef CONFIG_FSL_FM_10GEC_REGULAR_NOTATION
+#define FSL_CORENET_DEVDISR2_10GEC1_1   0x80000000
+#define FSL_CORENET_DEVDISR2_10GEC1_2   0x40000000
+#else
 #define FSL_CORENET_DEVDISR2_10GEC1_1  0x00800000
 #define FSL_CORENET_DEVDISR2_10GEC1_2  0x00400000
 #define FSL_CORENET_DEVDISR2_10GEC1_3  0x80000000
 #define FSL_CORENET_DEVDISR2_10GEC1_4  0x40000000
+#endif
 #define FSL_CORENET_DEVDISR2_DTSEC2_1  0x00080000
 #define FSL_CORENET_DEVDISR2_DTSEC2_2  0x00040000
 #define FSL_CORENET_DEVDISR2_DTSEC2_3  0x00020000
@@ -1787,6 +1792,21 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #define PXCKEN_MASK    0x80000000
 #define PXCK_MASK      0x00FF0000
 #define PXCK_BITS_START        16
+#elif defined(CONFIG_PPC_T1024) || defined(CONFIG_PPC_T1023) || \
+       defined(CONFIG_PPC_T1014) || defined(CONFIG_PPC_T1013)
+#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL                0xff800000
+#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT  23
+#define FSL_CORENET_RCWSR6_BOOT_LOC            0x0f800000
+#define FSL_CORENET_RCWSR13_EC1                        0x30000000 /* bits 418..419 */
+#define FSL_CORENET_RCWSR13_EC1_RGMII          0x00000000
+#define FSL_CORENET_RCWSR13_EC1_GPIO           0x10000000
+#define FSL_CORENET_RCWSR13_EC2                        0x0c000000
+#define FSL_CORENET_RCWSR13_EC2_RGMII          0x08000000
+#define CONFIG_SYS_FSL_SCFG_PIXCLKCR_OFFSET    0x28
+#define CONFIG_SYS_FSL_SCFG_IODSECR1_OFFSET    0xd00
+#define PXCKEN_MASK                            0x80000000
+#define PXCK_MASK                              0x00FF0000
+#define PXCK_BITS_START                                16
 #elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081)
 #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL                0xff000000
 #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT  24
@@ -2971,6 +2991,8 @@ struct ccsr_sfp_regs {
        (CONFIG_SYS_CCSRBAR + CONFIG_SYS_FSL_SCFG_OFFSET)
 #define CONFIG_SYS_FSL_SCFG_PIXCLK_ADDR        \
        (CONFIG_SYS_FSL_SCFG_ADDR + CONFIG_SYS_FSL_SCFG_PIXCLKCR_OFFSET)
+#define CONFIG_SYS_FSL_SCFG_IODSECR1_ADDR \
+       (CONFIG_SYS_FSL_SCFG_ADDR + CONFIG_SYS_FSL_SCFG_IODSECR1_OFFSET)
 #define CONFIG_SYS_FSL_QMAN_ADDR \
        (CONFIG_SYS_IMMR + CONFIG_SYS_FSL_QMAN_OFFSET)
 #define CONFIG_SYS_FSL_BMAN_ADDR \
index 09189cf19bc8f7470ee6f70dbfb764018886b4c9..df97f175b3637856da0f91ef8ee8e7da159af7dd 100644 (file)
@@ -72,6 +72,8 @@ struct ppc4xx_i2c {
 #define IIC_EXTSTS_XFRA                0x01
 #define IIC_EXTSTS_ICT         0x02
 #define IIC_EXTSTS_LA          0x04
+#define IIC_EXTSTS_BCS_MASK    0x70
+#define IIC_EXTSTS_BCS_FREE    0x40
 
 /* XTCNTLSS Register Bit definition */
 #define IIC_XTCNTLSS_SRST      0x01
index 1b98e0f8a991f0b329592b0aa7b259988a09115d..db8cc8c4e6fca4ffa068b45b15e5493768e30964 100644 (file)
 #define SVR_T1020      0x852100
 #define SVR_T1021      0x852101
 #define SVR_T1022      0x852102
+#define SVR_T1024      0x854000
+#define SVR_T1023      0x854100
+#define SVR_T1014      0x854400
+#define SVR_T1013      0x854500
 #define SVR_T2080      0x853000
 #define SVR_T2081      0x853100
 
@@ -1356,8 +1360,6 @@ void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
 #elif defined(CONFIG_MPC8260)
 #define _machine _MACH_8260
 #define have_of 0
-#elif defined(CONFIG_SANDPOINT)
-#define _machine _MACH_sandpoint
 #else
 #error "Machine not defined correctly"
 #endif
index 6eaab882437dda464db83c2943669203a26f2998..e6d5355f261fd9b6e4bd521fa141ccd61db22860 100644 (file)
@@ -820,13 +820,6 @@ void board_init_r(gd_t *id, ulong dest_addr)
        mac_read_from_eeprom();
 #endif
 
-#ifdef CONFIG_HERMES
-       if ((gd->board_type >> 16) == 2)
-               bd->bi_ethspeed = gd->board_type & 0xFFFF;
-       else
-               bd->bi_ethspeed = 0xFFFF;
-#endif
-
 #ifdef CONFIG_CMD_NET
        /* kept around for legacy kernels only ... ignore the next section */
        eth_getenv_enetaddr("ethaddr", bd->bi_enetaddr);
@@ -876,11 +869,6 @@ void board_init_r(gd_t *id, ulong dest_addr)
        misc_init_r();
 #endif
 
-#ifdef CONFIG_HERMES
-       if (bd->bi_ethspeed != 0xFFFF)
-               hermes_start_lxt980((int) bd->bi_ethspeed);
-#endif
-
 #if defined(CONFIG_CMD_KGDB)
        WATCHDOG_RESET();
        puts("KGDB:  ");
index 33099a492dbe92ac7b31f20fe26f3b625b22f6f6..ef15e7ac92f292dd482cf65cf7bf9d2c05da91dc 100644 (file)
@@ -126,7 +126,7 @@ void arch_lmb_reserve(struct lmb *lmb)
 #endif
 
        size = min(bootm_size, get_effective_memsize());
-       size = min(size, CONFIG_SYS_LINUX_LOWMEM_MAX_SIZE);
+       size = min(size, (ulong)CONFIG_SYS_LINUX_LOWMEM_MAX_SIZE);
 
        if (size < bootm_size) {
                ulong base = bootmap_base + size;
diff --git a/arch/sandbox/Makefile b/arch/sandbox/Makefile
new file mode 100644 (file)
index 0000000..23fdcdb
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/sandbox/cpu/start.o
+
+libs-y += arch/sandbox/cpu/
+libs-y += arch/sandbox/lib/
index 1c4aa3f9bc4c4d054b7cbcd502163693a44319bc..4d5f8057533e89f2ed6edd0298ac4c69038360eb 100644 (file)
@@ -367,6 +367,7 @@ int os_dirent_ls(const char *dirname, struct os_dirent_node **headp)
 
 done:
        closedir(dir);
+       free(fname);
        return ret;
 }
 
@@ -385,7 +386,7 @@ const char *os_dirent_get_typename(enum os_dirent_t type)
        return os_dirent_typename[OS_FILET_UNKNOWN];
 }
 
-ssize_t os_get_filesize(const char *fname)
+int os_get_filesize(const char *fname, loff_t *size)
 {
        struct stat buf;
        int ret;
@@ -393,7 +394,8 @@ ssize_t os_get_filesize(const char *fname)
        ret = stat(fname, &buf);
        if (ret)
                return ret;
-       return buf.st_size;
+       *size = buf.st_size;
+       return 0;
 }
 
 void os_putc(int ch)
@@ -427,11 +429,11 @@ int os_read_ram_buf(const char *fname)
 {
        struct sandbox_state *state = state_get_current();
        int fd, ret;
-       int size;
+       loff_t size;
 
-       size = os_get_filesize(fname);
-       if (size < 0)
-               return -ENOENT;
+       ret = os_get_filesize(fname, &size);
+       if (ret < 0)
+               return ret;
        if (size != state->ram_size)
                return -ENOSPC;
        fd = open(fname, O_RDONLY);
index b3d70515dc8da0f28ade44c218a45d0fd77dd0df..42353d80a847bc51eade86f414e72238a8a4916f 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <os.h>
+#include <cli.h>
 #include <asm/getopt.h>
 #include <asm/io.h>
 #include <asm/sections.h>
@@ -38,7 +39,7 @@ int sandbox_early_getopt_check(void)
 
        max_arg_len = 0;
        for (i = 0; i < num_options; ++i)
-               max_arg_len = max(strlen(sb_opt[i]->flag), max_arg_len);
+               max_arg_len = max((int)strlen(sb_opt[i]->flag), max_arg_len);
        max_noarg_len = max_arg_len + 7;
 
        for (i = 0; i < num_options; ++i) {
@@ -76,6 +77,8 @@ int sandbox_main_loop_init(void)
 
        /* Execute command if required */
        if (state->cmd) {
+               cli_init();
+
                run_command_list(state->cmd, -1, 0);
                if (!state->interactive)
                        os_exit(state->exit_type);
@@ -127,7 +130,8 @@ static int sandbox_cmdline_cb_memory(struct sandbox_state *state,
        state->write_ram_buf = true;
        state->ram_buf_fname = arg;
 
-       if (os_read_ram_buf(arg)) {
+       err = os_read_ram_buf(arg);
+       if (err) {
                printf("Failed to read RAM buffer\n");
                return err;
        }
index 59adad653c2a9f59741ec0276363ea73eee2a3b2..ba73b7e251040831f45a38d29132479b605c0abc 100644 (file)
@@ -49,14 +49,14 @@ static int state_ensure_space(int extra_size)
 
 static int state_read_file(struct sandbox_state *state, const char *fname)
 {
-       int size;
+       loff_t size;
        int ret;
        int fd;
 
-       size = os_get_filesize(fname);
-       if (size < 0) {
+       ret = os_get_filesize(fname, &size);
+       if (ret < 0) {
                printf("Cannot find sandbox state file '%s'\n", fname);
-               return -ENOENT;
+               return ret;
        }
        state->state_fdt = os_malloc(size);
        if (!state->state_fdt) {
index 76147154c22366b7f70e5a95e83c8ea8ee3dfbe1..11748aec7990e1ff40f9d625842a154d8d278cc1 100644 (file)
                num-gpios = <20>;
        };
 
+       i2c@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+               compatible = "sandbox,i2c";
+               clock-frequency = <400000>;
+               eeprom@2c {
+                       reg = <0x2c>;
+                       compatible = "i2c-eeprom";
+                       emul {
+                               compatible = "sandbox,i2c-eeprom";
+                               sandbox,filename = "i2c.bin";
+                               sandbox,size = <128>;
+                       };
+               };
+       };
+
        spi@0 {
                #address-cells = <1>;
                #size-cells = <0>;
diff --git a/arch/sandbox/include/asm/test.h b/arch/sandbox/include/asm/test.h
new file mode 100644 (file)
index 0000000..25a0c85
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Test-related constants for sandbox
+ *
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_TEST_H
+#define __ASM_TEST_H
+
+/* The sandbox driver always permits an I2C device with this address */
+#define SANDBOX_I2C_TEST_ADDR  0x59
+
+enum sandbox_i2c_eeprom_test_mode {
+       SIE_TEST_MODE_NONE,
+       /* Permits read/write of only one byte per I2C transaction */
+       SIE_TEST_MODE_SINGLE_BYTE,
+};
+
+void sandbox_i2c_eeprom_set_test_mode(struct udevice *dev,
+                                     enum sandbox_i2c_eeprom_test_mode mode);
+
+void sandbox_i2c_eeprom_set_offset_len(struct udevice *dev, int offset_len);
+
+#endif
index 4bf9afc384f6bc80a250b2eac12401b512082f71..ff8f5b5ce8d6887a11f32c5fe4d0fabd7b0fb015 100644 (file)
 menu "SuperH architecture"
        depends on SH
 
-config SYS_ARCH
-       default "sh"
+config CPU_SH2
+       bool
+
+config CPU_SH2A
+       bool
+       select CPU_SH2
+
+config CPU_SH3
+       bool
+
+config CPU_SH4
+       bool
+
+config CPU_SH4A
+       bool
+       select CPU_SH4
+
+config SH_32BIT
+       bool "32bit mode"
+       depends on CPU_SH4A
+       default n
+       help
+         SH4A has 2 physical memory maps. This use 32bit mode.
+         And this is board specific. Please check your board if you
+         want to use this.
 
 choice
        prompt "Target select"
 
 config TARGET_RSK7203
-       bool "Support rsk7203"
+       bool "RSK+ 7203"
+       select CPU_SH2A
 
 config TARGET_RSK7264
-       bool "Support rsk7264"
+       bool "RSK2+SH7264"
+       select CPU_SH2A
 
 config TARGET_RSK7269
-       bool "Support rsk7269"
+       bool "RSK2+SH7269"
+       select CPU_SH2A
 
 config TARGET_MPR2
-       bool "Support mpr2"
+       bool "Magic Panel Release 2 board"
+       select CPU_SH3
 
 config TARGET_MS7720SE
        bool "Support ms7720se"
+       select CPU_SH3
 
 config TARGET_SHMIN
-       bool "Support shmin"
+       bool "SHMIN"
+       select CPU_SH3
 
 config TARGET_ESPT
-       bool "Support espt"
+       bool "Data Technology ESPT-GIGA board"
+       select CPU_SH4
 
 config TARGET_MS7722SE
-       bool "Support ms7722se"
+       bool "SolutionEngine 7722"
+       select CPU_SH4
 
 config TARGET_MS7750SE
-       bool "Support ms7750se"
+       bool "SolutionEngine 7750"
+       select CPU_SH4
 
 config TARGET_AP_SH4A_4A
-       bool "Support ap_sh4a_4a"
+       bool "ALPHAPROJECT AP-SH4A-4A"
+       select CPU_SH4A
 
 config TARGET_AP325RXA
-       bool "Support ap325rxa"
+       bool "Renesas AP-325RXA"
+       select CPU_SH4
 
 config TARGET_ECOVEC
-       bool "Support ecovec"
+       bool "EcoVec"
+       select CPU_SH4A
 
 config TARGET_MIGOR
-       bool "Support MigoR"
+       bool "Migo-R"
+       select CPU_SH4
 
 config TARGET_R0P7734
        bool "Support r0p7734"
+       select CPU_SH4A
 
 config TARGET_R2DPLUS
-       bool "Support r2dplus"
+       bool "Renesas R2D-PLUS"
+       select CPU_SH4
 
 config TARGET_R7780MP
-       bool "Support r7780mp"
+       bool "R7780MP board"
+       select CPU_SH4A
 
 config TARGET_SH7752EVB
-       bool "Support sh7752evb"
+       bool "SH7752EVB"
+       select CPU_SH4A
 
 config TARGET_SH7753EVB
-       bool "Support sh7753evb"
+       bool "SH7753EVB"
+       select CPU_SH4
 
 config TARGET_SH7757LCR
-       bool "Support sh7757lcr"
+       bool "SH7757LCR"
+       select CPU_SH4A
 
 config TARGET_SH7763RDP
-       bool "Support sh7763rdp"
+       bool "SH7763RDP"
+       select CPU_SH4
 
 config TARGET_SH7785LCR
-       bool "Support sh7785lcr"
+       bool "SH7785LCR"
+       select CPU_SH4A
 
 endchoice
 
+config SYS_ARCH
+       default "sh"
+
+config SYS_CPU
+       default "sh2" if CPU_SH2
+       default "sh3" if CPU_SH3
+       default "sh4" if CPU_SH4
+
 source "board/alphaproject/ap_sh4a_4a/Kconfig"
 source "board/espt/Kconfig"
 source "board/mpr2/Kconfig"
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
new file mode 100644 (file)
index 0000000..ca55fac
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/sh/cpu/$(CPU)/start.o
+
+libs-y += arch/sh/cpu/$(CPU)/
+libs-y += arch/sh/lib/
index 4904d76d44bb53672f2222d14855b8f89836467e..12e202d539a01deba8a66e62be9f4adb78c861e0 100644 (file)
@@ -7,11 +7,11 @@
 #
 ENDIANNESS += -EB
 
-ifdef CONFIG_SH2A
+ifdef CONFIG_CPU_SH2A
 PLATFORM_CPPFLAGS += -m2a -m2a-nofpu -mb
 else # SH2
 PLATFORM_CPPFLAGS += -m3e -mb
 endif
-PLATFORM_CPPFLAGS += -DCONFIG_SH2 $(call cc-option,-mno-fdpic)
+PLATFORM_CPPFLAGS += $(call cc-option,-mno-fdpic)
 
 PLATFORM_LDFLAGS += $(ENDIANNESS)
index 24b5c47859df6684f01230ef97ee364e20052857..dcafd19e583a470d3aaa6a3a65477c27e86fd25a 100644 (file)
@@ -11,4 +11,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 #
-PLATFORM_CPPFLAGS += -DCONFIG_SH3 -m3
+PLATFORM_CPPFLAGS += -m3
index 5773d4fec9cf181cc663d900e4737f8434c07cfb..4fb2dc23aaba30a5b3ece308b0440843e84cdedf 100644 (file)
@@ -8,4 +8,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 #
-PLATFORM_CPPFLAGS += -DCONFIG_SH4 -m4-nofpu
+PLATFORM_CPPFLAGS += -m4-nofpu
index 0698a377595df89d71e40ce62f0c1a402a98e49f..abaf4050c39904281fee78091ed20146e49536a0 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef __ASM_SH_CACHE_H
 #define __ASM_SH_CACHE_H
 
-#if defined(CONFIG_SH4)
+#if defined(CONFIG_CPU_SH4)
 
 int cache_control(unsigned int cmd);
 
@@ -18,7 +18,7 @@ struct __large_struct { unsigned long buf[100]; };
  */
 #define ARCH_DMA_MINALIGN      32
 
-#endif /* CONFIG_SH4 */
+#endif /* CONFIG_CPU_SH4 */
 
 /*
  * Use the L1 data cache line size value for the minimum DMA buffer alignment
index b8677da959358992714f9dd5f726630ac829dcf2..b07fe542e362d75cd1ad5d3c190a2dab58f36385 100644 (file)
@@ -1,10 +1,10 @@
 #ifndef _ASM_SH_PROCESSOR_H_
 #define _ASM_SH_PROCESSOR_H_
-#if defined(CONFIG_SH2)
+#if defined(CONFIG_CPU_SH2)
 # include <asm/cpu_sh2.h>
-#elif defined(CONFIG_SH3)
+#elif defined(CONFIG_CPU_SH3)
 # include <asm/cpu_sh3.h>
-#elif defined(CONFIG_SH4)
+#elif defined(CONFIG_CPU_SH4)
 # include <asm/cpu_sh4.h>
 #endif
 #endif
index 2e0d16405024f59a5b62acd7cbf27ae4b0877dd1..06096eeac574bed06e93ea074ed03ca2c6350819 100644 (file)
@@ -8,7 +8,7 @@
 #include <asm/unaligned-sh4a.h>
 #else
 /* Otherwise, SH can't handle unaligned accesses. */
-#include <compiler.h>
+#include <linux/compiler.h>
 #if defined(__BIG_ENDIAN__)
 #define get_unaligned   __get_unaligned_be
 #define put_unaligned   __put_unaligned_be
index 8a84b24af193d771d8dc87139594cfb2aba4a749..1304f4ee93afb3458ed7b84e9764a87100ad4e9a 100644 (file)
@@ -8,7 +8,7 @@
 
 obj-y  += board.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
-ifeq ($(CONFIG_SH2),y)
+ifeq ($(CONFIG_CPU_SH2),y)
 obj-y  += time_sh2.o
 else
 obj-y  += time.o
index 86d39983c8f20e6c88ff86b422ba7266b94adc94..3fea5f5b532108c124123ba32f996118991b5d51 100644 (file)
@@ -45,6 +45,7 @@ int do_sh_zimageboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        bootargs = getenv("bootargs");
 
        /* Clear zero page */
+       /* cppcheck-suppress nullPointer */
        memset(param, 0, 0x1000);
 
        /* Set commandline */
index 733334f93186fc116010cc421ebd1fc47457f122..2df09b2e50e3e18c5dacb9ce09f32f092c5ac54c 100644 (file)
@@ -1,29 +1,56 @@
 menu "SPARC architecture"
        depends on SPARC
 
-config SYS_ARCH
-       default "sparc"
+config LEON
+       bool
+
+config LEON2
+       bool
+       select LEON
+
+config LEON3
+       bool
+       select LEON
 
 choice
-       prompt "Target select"
+       prompt "Board select"
 
 config TARGET_GRSIM_LEON2
-       bool "Support grsim_leon2"
+       bool "GRSIM simulating a LEON2 board"
+       select LEON2
 
 config TARGET_GR_CPCI_AX2000
-       bool "Support gr_cpci_ax2000"
+       bool "Gaisler GR-CPCI-AX2000 board"
+       select LEON3
 
 config TARGET_GR_EP2S60
-       bool "Support gr_ep2s60"
+       bool "Gaisler Template design for Altera NIOS board with Stratix EP2S60"
+       select LEON3
+       help
+         Gaisler Research AB's Template design (GPL Open Source SPARC/LEON3
+         96MHz) for Altera NIOS Development board Stratix II edition,
+         with the FPGA device EP2S60.
 
 config TARGET_GR_XC3S_1500
-       bool "Support gr_xc3s_1500"
+       bool "Gaisler GR-XC3S-1500 spartan board"
+       select LEON3
 
 config TARGET_GRSIM
-       bool "Support grsim"
+       bool "GRSIM simulating a LEON3 GR-XC3S-1500 board"
+       select LEON3
 
 endchoice
 
+config SYS_ARCH
+       default "sparc"
+
+config SYS_CPU
+       default "leon2" if LEON2
+       default "leon3" if LEON3
+
+config SYS_VENDOR
+       default "gaisler"
+
 source "board/gaisler/gr_cpci_ax2000/Kconfig"
 source "board/gaisler/gr_ep2s60/Kconfig"
 source "board/gaisler/gr_xc3s_1500/Kconfig"
diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
new file mode 100644 (file)
index 0000000..2d4c971
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/sparc/cpu/$(CPU)/start.o
+
+libs-y += arch/sparc/cpu/$(CPU)/
+libs-y += arch/sparc/lib/
index 196d28af84eddc41dbb08431595bb748079597c3..d615f294fed48cb60d9141ee338bff1d944214aa 100644 (file)
@@ -15,3 +15,5 @@ CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000 -L $(gcclibdir) \
                               -T $(srctree)/examples/standalone/sparc.lds
 
 PLATFORM_CPPFLAGS += -D__sparc__
+
+PLATFORM_RELFLAGS += -fPIC
diff --git a/arch/sparc/cpu/leon2/config.mk b/arch/sparc/cpu/leon2/config.mk
deleted file mode 100644 (file)
index c44b093..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_RELFLAGS += -fPIC
-
-PLATFORM_CPPFLAGS += -DCONFIG_LEON -DCONFIG_LEON2
diff --git a/arch/sparc/cpu/leon3/config.mk b/arch/sparc/cpu/leon3/config.mk
deleted file mode 100644 (file)
index ca6c9b1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_RELFLAGS += -fPIC
-
-PLATFORM_CPPFLAGS += -DCONFIG_LEON -DCONFIG_LEON3
index 0dba8acbb2b320671541c939c739b98402f100b9..90e828a26ee4b02290724868cceec5b6683a71b3 100644 (file)
@@ -12,9 +12,348 @@ choice
 
 config TARGET_COREBOOT
        bool "Support coreboot"
+       help
+         This target is used for running U-Boot on top of Coreboot. In
+         this case Coreboot does the early inititalisation, and U-Boot
+         takes over once the RAM, video and CPU are fully running.
+         U-Boot is loaded as a fallback payload from Coreboot, in
+         Coreboot terminology. This method was used for the Chromebook
+         Pixel when launched.
+
+config TARGET_CHROMEBOOK_LINK
+       bool "Support Chromebook link"
+       help
+         This is the Chromebook Pixel released in 2013. It uses an Intel
+         i5 Ivybridge which is a die-shrink of Sandybridge, with 4GB of
+         SDRAM. It has a Panther Point platform controller hub, PCIe
+         WiFi and Bluetooth. It also includes a 720p webcam, USB SD
+         reader, microphone and speakers, display port and 32GB SATA
+         solid state drive. There is a Chrome OS EC connected on LPC,
+         and it provides a 2560x1700 high resolution touch-enabled LCD
+         display.
+
+config TARGET_CROWNBAY
+       bool "Support Intel Crown Bay CRB"
+       help
+         This is the Intel Crown Bay Customer Reference Board. It contains
+         the Intel Atom Processor E6xx populated on the COM Express module
+         with 1GB DDR2 soldered down memory and a carrier board with the
+         Intel Platform Controller Hub EG20T, other system components and
+         peripheral connectors for PCIe/SATA/USB/LAN/SD/UART/Audio/LVDS.
 
 endchoice
 
-source "board/chromebook-x86/coreboot/Kconfig"
+config RAMBASE
+       hex
+       default 0x100000
+
+config XIP_ROM_SIZE
+       hex
+       depends on X86_RESET_VECTOR
+       default ROM_SIZE
+
+config CPU_ADDR_BITS
+       int
+       default 36
+
+config HPET_ADDRESS
+       hex
+       default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
+
+config SMM_TSEG
+       bool
+       default n
+
+config SMM_TSEG_SIZE
+       hex
+
+config X86_RESET_VECTOR
+       bool
+       default n
+
+config SYS_X86_START16
+       hex
+       depends on X86_RESET_VECTOR
+       default 0xfffff800
+
+config BOARD_ROMSIZE_KB_512
+       bool
+config BOARD_ROMSIZE_KB_1024
+       bool
+config BOARD_ROMSIZE_KB_2048
+       bool
+config BOARD_ROMSIZE_KB_4096
+       bool
+config BOARD_ROMSIZE_KB_8192
+       bool
+config BOARD_ROMSIZE_KB_16384
+       bool
+
+choice
+       prompt "ROM chip size"
+       depends on X86_RESET_VECTOR
+       default UBOOT_ROMSIZE_KB_512 if BOARD_ROMSIZE_KB_512
+       default UBOOT_ROMSIZE_KB_1024 if BOARD_ROMSIZE_KB_1024
+       default UBOOT_ROMSIZE_KB_2048 if BOARD_ROMSIZE_KB_2048
+       default UBOOT_ROMSIZE_KB_4096 if BOARD_ROMSIZE_KB_4096
+       default UBOOT_ROMSIZE_KB_8192 if BOARD_ROMSIZE_KB_8192
+       default UBOOT_ROMSIZE_KB_16384 if BOARD_ROMSIZE_KB_16384
+       help
+         Select the size of the ROM chip you intend to flash U-Boot on.
+
+         The build system will take care of creating a u-boot.rom file
+         of the matching size.
+
+config UBOOT_ROMSIZE_KB_512
+       bool "512 KB"
+       help
+         Choose this option if you have a 512 KB ROM chip.
+
+config UBOOT_ROMSIZE_KB_1024
+       bool "1024 KB (1 MB)"
+       help
+         Choose this option if you have a 1024 KB (1 MB) ROM chip.
+
+config UBOOT_ROMSIZE_KB_2048
+       bool "2048 KB (2 MB)"
+       help
+         Choose this option if you have a 2048 KB (2 MB) ROM chip.
+
+config UBOOT_ROMSIZE_KB_4096
+       bool "4096 KB (4 MB)"
+       help
+         Choose this option if you have a 4096 KB (4 MB) ROM chip.
+
+config UBOOT_ROMSIZE_KB_8192
+       bool "8192 KB (8 MB)"
+       help
+         Choose this option if you have a 8192 KB (8 MB) ROM chip.
+
+config UBOOT_ROMSIZE_KB_16384
+       bool "16384 KB (16 MB)"
+       help
+         Choose this option if you have a 16384 KB (16 MB) ROM chip.
+
+endchoice
+
+# Map the config names to an integer (KB).
+config UBOOT_ROMSIZE_KB
+       int
+       default 512 if UBOOT_ROMSIZE_KB_512
+       default 1024 if UBOOT_ROMSIZE_KB_1024
+       default 2048 if UBOOT_ROMSIZE_KB_2048
+       default 4096 if UBOOT_ROMSIZE_KB_4096
+       default 8192 if UBOOT_ROMSIZE_KB_8192
+       default 16384 if UBOOT_ROMSIZE_KB_16384
+
+# Map the config names to a hex value (bytes).
+config ROM_SIZE
+       hex
+       default 0x80000 if UBOOT_ROMSIZE_KB_512
+       default 0x100000 if UBOOT_ROMSIZE_KB_1024
+       default 0x200000 if UBOOT_ROMSIZE_KB_2048
+       default 0x400000 if UBOOT_ROMSIZE_KB_4096
+       default 0x800000 if UBOOT_ROMSIZE_KB_8192
+       default 0xc00000 if UBOOT_ROMSIZE_KB_12288
+       default 0x1000000 if UBOOT_ROMSIZE_KB_16384
+
+config HAVE_INTEL_ME
+       bool "Platform requires Intel Management Engine"
+       help
+         Newer higher-end devices have an Intel Management Engine (ME)
+         which is a very large binary blob (typically 1.5MB) which is
+         required for the platform to work. This enforces a particular
+         SPI flash format. You will need to supply the me.bin file in
+         your board directory.
+
+config X86_RAMTEST
+       bool "Perform a simple RAM test after SDRAM initialisation"
+       help
+         If there is something wrong with SDRAM then the platform will
+         often crash within U-Boot or the kernel. This option enables a
+         very simple RAM test that quickly checks whether the SDRAM seems
+         to work correctly. It is not exhaustive but can save time by
+         detecting obvious failures.
+
+config MARK_GRAPHICS_MEM_WRCOMB
+       bool "Mark graphics memory as write-combining."
+       default n
+       help
+        The graphics performance may increase if the graphics
+        memory is set as write-combining cache type. This option
+        enables marking the graphics memory as write-combining.
+
+menu "Display"
+
+config FRAMEBUFFER_SET_VESA_MODE
+       prompt "Set framebuffer graphics resolution"
+       bool
+       help
+         Set VESA/native framebuffer mode (needed for bootsplash and graphical framebuffer console)
+
+choice
+       prompt "framebuffer graphics resolution"
+       default FRAMEBUFFER_VESA_MODE_117
+       depends on FRAMEBUFFER_SET_VESA_MODE
+       help
+         This option sets the resolution used for the coreboot framebuffer (and
+         bootsplash screen).
+
+config FRAMEBUFFER_VESA_MODE_100
+       bool "640x400 256-color"
+
+config FRAMEBUFFER_VESA_MODE_101
+       bool "640x480 256-color"
+
+config FRAMEBUFFER_VESA_MODE_102
+       bool "800x600 16-color"
+
+config FRAMEBUFFER_VESA_MODE_103
+       bool "800x600 256-color"
+
+config FRAMEBUFFER_VESA_MODE_104
+       bool "1024x768 16-color"
+
+config FRAMEBUFFER_VESA_MODE_105
+       bool "1024x7686 256-color"
+
+config FRAMEBUFFER_VESA_MODE_106
+       bool "1280x1024 16-color"
+
+config FRAMEBUFFER_VESA_MODE_107
+       bool "1280x1024 256-color"
+
+config FRAMEBUFFER_VESA_MODE_108
+       bool "80x60 text"
+
+config FRAMEBUFFER_VESA_MODE_109
+       bool "132x25 text"
+
+config FRAMEBUFFER_VESA_MODE_10A
+       bool "132x43 text"
+
+config FRAMEBUFFER_VESA_MODE_10B
+       bool "132x50 text"
+
+config FRAMEBUFFER_VESA_MODE_10C
+       bool "132x60 text"
+
+config FRAMEBUFFER_VESA_MODE_10D
+       bool "320x200 32k-color (1:5:5:5)"
+
+config FRAMEBUFFER_VESA_MODE_10E
+       bool "320x200 64k-color (5:6:5)"
+
+config FRAMEBUFFER_VESA_MODE_10F
+       bool "320x200 16.8M-color (8:8:8)"
+
+config FRAMEBUFFER_VESA_MODE_110
+       bool "640x480 32k-color (1:5:5:5)"
+
+config FRAMEBUFFER_VESA_MODE_111
+       bool "640x480 64k-color (5:6:5)"
+
+config FRAMEBUFFER_VESA_MODE_112
+       bool "640x480 16.8M-color (8:8:8)"
+
+config FRAMEBUFFER_VESA_MODE_113
+       bool "800x600 32k-color (1:5:5:5)"
+
+config FRAMEBUFFER_VESA_MODE_114
+       bool "800x600 64k-color (5:6:5)"
+
+config FRAMEBUFFER_VESA_MODE_115
+       bool "800x600 16.8M-color (8:8:8)"
+
+config FRAMEBUFFER_VESA_MODE_116
+       bool "1024x768 32k-color (1:5:5:5)"
+
+config FRAMEBUFFER_VESA_MODE_117
+       bool "1024x768 64k-color (5:6:5)"
+
+config FRAMEBUFFER_VESA_MODE_118
+       bool "1024x768 16.8M-color (8:8:8)"
+
+config FRAMEBUFFER_VESA_MODE_119
+       bool "1280x1024 32k-color (1:5:5:5)"
+
+config FRAMEBUFFER_VESA_MODE_11A
+       bool "1280x1024 64k-color (5:6:5)"
+
+config FRAMEBUFFER_VESA_MODE_11B
+       bool "1280x1024 16.8M-color (8:8:8)"
+
+config FRAMEBUFFER_VESA_MODE_USER
+       bool "Manually select VESA mode"
+
+endchoice
+
+# Map the config names to an integer (KB).
+config FRAMEBUFFER_VESA_MODE
+       prompt "VESA mode" if FRAMEBUFFER_VESA_MODE_USER
+       hex
+       default 0x100 if FRAMEBUFFER_VESA_MODE_100
+       default 0x101 if FRAMEBUFFER_VESA_MODE_101
+       default 0x102 if FRAMEBUFFER_VESA_MODE_102
+       default 0x103 if FRAMEBUFFER_VESA_MODE_103
+       default 0x104 if FRAMEBUFFER_VESA_MODE_104
+       default 0x105 if FRAMEBUFFER_VESA_MODE_105
+       default 0x106 if FRAMEBUFFER_VESA_MODE_106
+       default 0x107 if FRAMEBUFFER_VESA_MODE_107
+       default 0x108 if FRAMEBUFFER_VESA_MODE_108
+       default 0x109 if FRAMEBUFFER_VESA_MODE_109
+       default 0x10A if FRAMEBUFFER_VESA_MODE_10A
+       default 0x10B if FRAMEBUFFER_VESA_MODE_10B
+       default 0x10C if FRAMEBUFFER_VESA_MODE_10C
+       default 0x10D if FRAMEBUFFER_VESA_MODE_10D
+       default 0x10E if FRAMEBUFFER_VESA_MODE_10E
+       default 0x10F if FRAMEBUFFER_VESA_MODE_10F
+       default 0x110 if FRAMEBUFFER_VESA_MODE_110
+       default 0x111 if FRAMEBUFFER_VESA_MODE_111
+       default 0x112 if FRAMEBUFFER_VESA_MODE_112
+       default 0x113 if FRAMEBUFFER_VESA_MODE_113
+       default 0x114 if FRAMEBUFFER_VESA_MODE_114
+       default 0x115 if FRAMEBUFFER_VESA_MODE_115
+       default 0x116 if FRAMEBUFFER_VESA_MODE_116
+       default 0x117 if FRAMEBUFFER_VESA_MODE_117
+       default 0x118 if FRAMEBUFFER_VESA_MODE_118
+       default 0x119 if FRAMEBUFFER_VESA_MODE_119
+       default 0x11A if FRAMEBUFFER_VESA_MODE_11A
+       default 0x11B if FRAMEBUFFER_VESA_MODE_11B
+       default 0x117 if FRAMEBUFFER_VESA_MODE_USER
+
+endmenu
+
+config TSC_CALIBRATION_BYPASS
+       bool "Bypass Time-Stamp Counter (TSC) calibration"
+       default n
+       help
+         By default U-Boot automatically calibrates Time-Stamp Counter (TSC)
+         running frequency via Model-Specific Register (MSR) and Programmable
+         Interval Timer (PIT). If the calibration does not work on your board,
+         select this option and provide a hardcoded TSC running frequency with
+         CONFIG_TSC_FREQ_IN_MHZ below.
+
+         Normally this option should be turned on in a simulation environment
+         like qemu.
+
+config TSC_FREQ_IN_MHZ
+       int "Time-Stamp Counter (TSC) running frequency in MHz"
+       depends on TSC_CALIBRATION_BYPASS
+       default 1000
+       help
+         The running frequency in MHz of Time-Stamp Counter (TSC).
+
+source "arch/x86/cpu/coreboot/Kconfig"
+
+source "arch/x86/cpu/ivybridge/Kconfig"
+
+source "arch/x86/cpu/queensbay/Kconfig"
+
+source "board/coreboot/coreboot/Kconfig"
+
+source "board/google/chromebook_link/Kconfig"
+
+source "board/intel/crownbay/Kconfig"
 
 endmenu
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
new file mode 100644 (file)
index 0000000..36a6018
--- /dev/null
@@ -0,0 +1,12 @@
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+head-y := arch/x86/cpu/start.o
+ifeq ($(CONFIG_SPL_BUILD),y)
+head-y += arch/x86/cpu/start16.o
+head-y += arch/x86/cpu/resetvec.o
+endif
+
+libs-y += arch/x86/cpu/
+libs-y += arch/x86/lib/
index 3e7fedb913bed80965c0ca4e2765a35aaec98017..bb2da4637e59afa7504f86a65ef5e7c28f0b0cee 100644 (file)
@@ -15,7 +15,6 @@ PF_CPPFLAGS_X86   := $(call cc-option, -fno-toplevel-reorder, \
                     $(call cc-option, -mpreferred-stack-boundary=2)
 PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_X86)
 PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm
-PLATFORM_CPPFLAGS += -DREALMODE_BASE=0x7c0
 PLATFORM_CPPFLAGS += -march=i386 -m32
 
 # Support generic board on x86
index e7bb3e33d5bdd999f246e56e02a2a06775553035..62e43c04e502be12318c5509278c71db3518cb16 100644 (file)
 
 extra-y        = start.o
 obj-$(CONFIG_X86_RESET_VECTOR) += resetvec.o start16.o
-obj-y  += interrupts.o cpu.o
+obj-y  += interrupts.o cpu.o call64.o
+
+obj-$(CONFIG_SYS_COREBOOT) += coreboot/
+obj-$(CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE) += ivybridge/
+obj-$(CONFIG_NORTHBRIDGE_INTEL_IVYBRIDGE) += ivybridge/
+obj-$(CONFIG_INTEL_QUEENSBAY) += queensbay/
+obj-y += lapic.o
+obj-y += mtrr.o
+obj-$(CONFIG_PCI) += pci.o
+obj-y += turbo.o
diff --git a/arch/x86/cpu/call64.S b/arch/x86/cpu/call64.S
new file mode 100644 (file)
index 0000000..74dd5a8
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * (C) Copyright 2014 Google, Inc
+ * Copyright (C) 1991, 1992, 1993  Linus Torvalds
+ *
+ * Parts of this copied from Linux arch/x86/boot/compressed/head_64.S
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/global_data.h>
+#include <asm/msr-index.h>
+#include <asm/processor-flags.h>
+
+.code32
+.globl cpu_call64
+cpu_call64:
+       /*
+        * cpu_call64(ulong pgtable, ulong setup_base, ulong target)
+        *
+        * eax - pgtable
+        * edx - setup_base
+        * ecx - target
+        */
+       cli
+       push    %ecx            /* arg2 = target */
+       push    %edx            /* arg1 = setup_base */
+       mov     %eax, %ebx
+
+       /* Load new GDT with the 64bit segments using 32bit descriptor */
+       leal    gdt, %eax
+       movl    %eax, gdt+2
+       lgdt    gdt
+
+       /* Enable PAE mode */
+       movl    $(X86_CR4_PAE), %eax
+       movl    %eax, %cr4
+
+       /* Enable the boot page tables */
+       leal    (%ebx), %eax
+       movl    %eax, %cr3
+
+       /* Enable Long mode in EFER (Extended Feature Enable Register) */
+       movl    $MSR_EFER, %ecx
+       rdmsr
+       btsl    $_EFER_LME, %eax
+       wrmsr
+
+       /* After gdt is loaded */
+       xorl    %eax, %eax
+       lldt    %ax
+       movl    $0x20, %eax
+       ltr     %ax
+
+       /*
+        * Setup for the jump to 64bit mode
+        *
+        * When the jump is performed we will be in long mode but
+        * in 32bit compatibility mode with EFER.LME = 1, CS.L = 0, CS.D = 1
+        * (and in turn EFER.LMA = 1). To jump into 64bit mode we use
+        * the new gdt/idt that has __KERNEL_CS with CS.L = 1.
+        * We place all of the values on our mini stack so lret can
+        * used to perform that far jump. See the gdt below.
+        */
+       pop     %esi                    /* setup_base */
+
+       pushl   $0x10
+       leal    lret_target, %eax
+       pushl   %eax
+
+       /* Enter paged protected Mode, activating Long Mode */
+       movl    $(X86_CR0_PG | X86_CR0_PE), %eax
+       movl    %eax, %cr0
+
+       /* Jump from 32bit compatibility mode into 64bit mode. */
+       lret
+
+code64:
+lret_target:
+       pop     %eax                    /* target */
+       mov     %eax, %eax              /* Clear bits 63:32 */
+       jmp     *%eax                   /* Jump to the 64-bit target */
+
+       .data
+gdt:
+       .word   gdt_end - gdt
+       .long   gdt
+       .word   0
+       .quad   0x0000000000000000      /* NULL descriptor */
+       .quad   0x00af9a000000ffff      /* __KERNEL_CS */
+       .quad   0x00cf92000000ffff      /* __KERNEL_DS */
+       .quad   0x0080890000000000      /* TS descriptor */
+       .quad   0x0000000000000000      /* TS continued */
+gdt_end:
index f7b01d36e03c958d860d1a0692b9faf59be252dc..84aeaf3edca80fb557b2890a562b362e0850b2d9 100644 (file)
@@ -12,5 +12,6 @@ PLATFORM_CPPFLAGS += -D__I386__ -Werror
 # DO NOT MODIFY THE FOLLOWING UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!
 LDPPFLAGS += -DRESET_SEG_START=0xffff0000
 LDPPFLAGS += -DRESET_SEG_SIZE=0x10000
-LDPPFLAGS += -DRESET_VEC_LOC=0xfff0
-LDPPFLAGS += -DSTART_16=0xf800
+LDPPFLAGS += -DRESET_VEC_LOC=0xfffffff0
+LDPPFLAGS += -DSTART_16=$(CONFIG_SYS_X86_START16)
+LDPPFLAGS += -DRESET_BASE="CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE)"
diff --git a/arch/x86/cpu/coreboot/Kconfig b/arch/x86/cpu/coreboot/Kconfig
new file mode 100644 (file)
index 0000000..e0e3c64
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_COREBOOT
+
+config SYS_COREBOOT
+       bool
+       default y
+
+config CBMEM_CONSOLE
+       bool
+       default y
+
+config VIDEO_COREBOOT
+       bool
+       default y
+
+endif
index cd0bf4ed31608e6efd66cbb5678c4c3c968cf65a..35e6cdd74164fde67a1f95a06a0fe831927842ba 100644 (file)
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_SYS_COREBOOT) += car.o
-obj-$(CONFIG_SYS_COREBOOT) += coreboot.o
-obj-$(CONFIG_SYS_COREBOOT) += tables.o
-obj-$(CONFIG_SYS_COREBOOT) += ipchecksum.o
-obj-$(CONFIG_SYS_COREBOOT) += sdram.o
-obj-$(CONFIG_SYS_COREBOOT) += timestamp.o
+obj-y += car.o
+obj-y += coreboot.o
+obj-y += tables.o
+obj-y += ipchecksum.o
+obj-y += sdram.o
+obj-y += timestamp.o
 obj-$(CONFIG_PCI) += pci.o
index e24f13afaf1efcb8f7579c3763fce4145958583e..6d06d5af19e5f7f38ce19676f97a0ac25d1803cc 100644 (file)
 #include <ns16550.h>
 #include <asm/msr.h>
 #include <asm/cache.h>
+#include <asm/cpu.h>
 #include <asm/io.h>
-#include <asm/arch-coreboot/tables.h>
-#include <asm/arch-coreboot/sysinfo.h>
+#include <asm/mtrr.h>
+#include <asm/arch/tables.h>
+#include <asm/arch/sysinfo.h>
 #include <asm/arch/timestamp.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/*
- * Miscellaneous platform dependent initializations
- */
-int cpu_init_f(void)
+int arch_cpu_init(void)
 {
        int ret = get_coreboot_info(&lib_sysinfo);
-       if (ret != 0)
+       if (ret != 0) {
                printf("Failed to parse coreboot tables.\n");
+               return ret;
+       }
 
        timestamp_init();
 
-       return ret;
+       return x86_cpu_init_f();
 }
 
 int board_early_init_f(void)
@@ -39,38 +40,9 @@ int board_early_init_f(void)
        return 0;
 }
 
-int board_early_init_r(void)
-{
-       /* CPU Speed to 100MHz */
-       gd->cpu_clk = 100000000;
-
-       /* Crystal is 33.000MHz */
-       gd->bus_clk = 33000000;
-
-       return 0;
-}
-
-void show_boot_progress(int val)
+int print_cpuinfo(void)
 {
-#if MIN_PORT80_KCLOCKS_DELAY
-       /*
-        * Scale the time counter reading to avoid using 64 bit arithmetics.
-        * Can't use get_timer() here becuase it could be not yet
-        * initialized or even implemented.
-        */
-       if (!gd->arch.tsc_prev) {
-               gd->arch.tsc_base_kclocks = rdtsc() / 1000;
-               gd->arch.tsc_prev = 0;
-       } else {
-               uint32_t now;
-
-               do {
-                       now = rdtsc() / 1000 - gd->arch.tsc_base_kclocks;
-               } while (now < (gd->arch.tsc_prev + MIN_PORT80_KCLOCKS_DELAY));
-               gd->arch.tsc_prev = now;
-       }
-#endif
-       outb(val, 0x80);
+       return default_print_cpuinfo();
 }
 
 int last_stage_init(void)
@@ -93,12 +65,7 @@ int board_eth_init(bd_t *bis)
        return pci_eth_init(bis);
 }
 
-#define MTRR_TYPE_WP          5
-#define MTRRcap_MSR           0xfe
-#define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
-#define MTRRphysMask_MSR(reg) (0x200 + 2 * (reg) + 1)
-
-int board_final_cleanup(void)
+void board_final_cleanup(void)
 {
        /* Un-cache the ROM so the kernel has one
         * more MTRR available.
@@ -106,22 +73,22 @@ int board_final_cleanup(void)
         * Coreboot should have assigned this to the
         * top available variable MTRR.
         */
-       u8 top_mtrr = (native_read_msr(MTRRcap_MSR) & 0xff) - 1;
-       u8 top_type = native_read_msr(MTRRphysBase_MSR(top_mtrr)) & 0xff;
+       u8 top_mtrr = (native_read_msr(MTRR_CAP_MSR) & 0xff) - 1;
+       u8 top_type = native_read_msr(MTRR_PHYS_BASE_MSR(top_mtrr)) & 0xff;
 
        /* Make sure this MTRR is the correct Write-Protected type */
-       if (top_type == MTRR_TYPE_WP) {
-               disable_caches();
-               wrmsrl(MTRRphysBase_MSR(top_mtrr), 0);
-               wrmsrl(MTRRphysMask_MSR(top_mtrr), 0);
-               enable_caches();
+       if (top_type == MTRR_TYPE_WRPROT) {
+               struct mtrr_state state;
+
+               mtrr_open(&state);
+               wrmsrl(MTRR_PHYS_BASE_MSR(top_mtrr), 0);
+               wrmsrl(MTRR_PHYS_MASK_MSR(top_mtrr), 0);
+               mtrr_close(&state);
        }
 
        /* Issue SMI to Coreboot to lock down ME and registers */
        printf("Finalizing Coreboot\n");
        outb(0xcb, 0xb2);
-
-       return 0;
 }
 
 void panic_puts(const char *str)
index 57733d8f0dd1dbb51c7cee65084702137d5ec2a0..3340872a87cd89913707d20858f7ec9ab80a0ad4 100644 (file)
@@ -29,8 +29,9 @@
  * SUCH DAMAGE.
  */
 
-#include <compiler.h>
-#include <asm/arch-coreboot/ipchecksum.h>
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <asm/arch/ipchecksum.h>
 
 unsigned short ipchksum(const void *vptr, unsigned long nbytes)
 {
index 33f16a3079381e15f694b94418791e5aa96d255a..c9983f15889e4cdab4a55c41973c8aaba530a287 100644 (file)
 #include <pci.h>
 #include <asm/pci.h>
 
-static struct pci_controller coreboot_hose;
+DECLARE_GLOBAL_DATA_PTR;
 
 static void config_pci_bridge(struct pci_controller *hose, pci_dev_t dev,
                              struct pci_config_table *table)
 {
        u8 secondary;
        hose->read_byte(hose, dev, PCI_SECONDARY_BUS, &secondary);
-       hose->last_busno = max(hose->last_busno, secondary);
+       hose->last_busno = max(hose->last_busno, (int)secondary);
        pci_hose_scan_bus(hose, secondary);
 }
 
@@ -31,19 +31,37 @@ static struct pci_config_table pci_coreboot_config_table[] = {
        {}
 };
 
-void pci_init_board(void)
+void board_pci_setup_hose(struct pci_controller *hose)
 {
-       coreboot_hose.config_table = pci_coreboot_config_table;
-       coreboot_hose.first_busno = 0;
-       coreboot_hose.last_busno = 0;
+       hose->config_table = pci_coreboot_config_table;
+       hose->first_busno = 0;
+       hose->last_busno = 0;
 
-       pci_set_region(coreboot_hose.regions + 0, 0x0, 0x0, 0xffffffff,
-               PCI_REGION_MEM);
-       coreboot_hose.region_count = 1;
+       /* PCI memory space */
+       pci_set_region(hose->regions + 0,
+                      CONFIG_PCI_MEM_BUS,
+                      CONFIG_PCI_MEM_PHYS,
+                      CONFIG_PCI_MEM_SIZE,
+                      PCI_REGION_MEM);
 
-       pci_setup_type1(&coreboot_hose);
+       /* PCI IO space */
+       pci_set_region(hose->regions + 1,
+                      CONFIG_PCI_IO_BUS,
+                      CONFIG_PCI_IO_PHYS,
+                      CONFIG_PCI_IO_SIZE,
+                      PCI_REGION_IO);
 
-       pci_register_hose(&coreboot_hose);
+       pci_set_region(hose->regions + 2,
+                      CONFIG_PCI_PREF_BUS,
+                      CONFIG_PCI_PREF_PHYS,
+                      CONFIG_PCI_PREF_SIZE,
+                      PCI_REGION_PREFETCH);
 
-       pci_hose_scan(&coreboot_hose);
+       pci_set_region(hose->regions + 3,
+                      0,
+                      0,
+                      gd->ram_size,
+                      PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
+
+       hose->region_count = 4;
 }
index 959feaaea3407b7c92da443b22c1c795ab4753f9..e98a2302e79d83c51ff63a43a74e206d507b861a 100644 (file)
 #include <asm/e820.h>
 #include <asm/u-boot-x86.h>
 #include <asm/global_data.h>
+#include <asm/init_helpers.h>
 #include <asm/processor.h>
 #include <asm/sections.h>
+#include <asm/zimage.h>
 #include <asm/arch/sysinfo.h>
 #include <asm/arch/tables.h>
 
@@ -22,7 +24,7 @@ unsigned install_e820_map(unsigned max_entries, struct e820entry *entries)
 {
        int i;
 
-       unsigned num_entries = min(lib_sysinfo.n_memranges, max_entries);
+       unsigned num_entries = min((unsigned)lib_sysinfo.n_memranges, max_entries);
        if (num_entries < lib_sysinfo.n_memranges) {
                printf("Warning: Limiting e820 map to %d entries.\n",
                        num_entries);
@@ -79,7 +81,7 @@ ulong board_get_usable_ram_top(ulong total_size)
        return (ulong)dest_addr;
 }
 
-int dram_init_f(void)
+int dram_init(void)
 {
        int i;
        phys_size_t ram_size = 0;
@@ -94,10 +96,11 @@ int dram_init_f(void)
        gd->ram_size = ram_size;
        if (ram_size == 0)
                return -1;
-       return 0;
+
+       return calculate_relocation_address();
 }
 
-int dram_init_banksize(void)
+void dram_init_banksize(void)
 {
        int i, j;
 
@@ -114,10 +117,4 @@ int dram_init_banksize(void)
                        }
                }
        }
-       return 0;
-}
-
-int dram_init(void)
-{
-       return dram_init_banksize();
 }
index 0d91adc5e47b60b84c363f0516af7b64c8336634..92b75286b188f3e9f383582e05efb96cf578cc7c 100644 (file)
@@ -8,9 +8,9 @@
  */
 
 #include <common.h>
-#include <asm/arch-coreboot/ipchecksum.h>
-#include <asm/arch-coreboot/sysinfo.h>
-#include <asm/arch-coreboot/tables.h>
+#include <asm/arch/ipchecksum.h>
+#include <asm/arch/sysinfo.h>
+#include <asm/arch/tables.h>
 
 /*
  * This needs to be in the .data section so that it's copied over during
index bd3558a0214930331b91f423da43e7012768cb50..0edee6bd2c2a16d3bca06e46ff4acb9fedcb882e 100644 (file)
@@ -3,18 +3,7 @@
  *
  * Copyright (C) 2011 The ChromiumOS Authors.  All rights reserved.
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -38,9 +27,27 @@ static struct timestamp_table *ts_table  __attribute__((section(".data")));
 
 void timestamp_init(void)
 {
+#ifdef CONFIG_SYS_X86_TSC_TIMER
+       uint64_t base_time;
+#endif
+
        ts_table = lib_sysinfo.tstamp_table;
 #ifdef CONFIG_SYS_X86_TSC_TIMER
-       timer_set_base(ts_table->base_time);
+       /*
+        * If coreboot is built with CONFIG_COLLECT_TIMESTAMPS, use the value
+        * of base_time in coreboot's timestamp table as our timer base,
+        * otherwise TSC counter value will be used.
+        *
+        * Sometimes even coreboot is built with CONFIG_COLLECT_TIMESTAMPS,
+        * the value of base_time in the timestamp table is still zero, so
+        * we must exclude this case too (this is currently seen on booting
+        * coreboot in qemu)
+        */
+       if (ts_table && ts_table->base_time)
+               base_time = ts_table->base_time;
+       else
+               base_time = rdtsc();
+       timer_set_base(base_time);
 #endif
        timestamp_add_now(TS_U_BOOT_INITTED);
 }
index 623e3af61f032b2b266e15c71c7f2dcf729e8734..30e50696984eb7be9778b571b3c32fc586a2a302 100644 (file)
  * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
  * Alex Zuepke <azu@sysgo.de>
  *
+ * Part of this file is adapted from coreboot
+ * src/arch/x86/lib/cpu.c
+ *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <command.h>
+#include <errno.h>
+#include <malloc.h>
 #include <asm/control_regs.h>
+#include <asm/cpu.h>
+#include <asm/post.h>
 #include <asm/processor.h>
 #include <asm/processor-flags.h>
 #include <asm/interrupt.h>
 #include <linux/compiler.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /*
  * Constructor for a conventional segment GDT (or LDT) entry
  * This is a macro so it can be used in initialisers
@@ -40,6 +49,52 @@ struct gdt_ptr {
        u32 ptr;
 } __packed;
 
+struct cpu_device_id {
+       unsigned vendor;
+       unsigned device;
+};
+
+struct cpuinfo_x86 {
+       uint8_t x86;            /* CPU family */
+       uint8_t x86_vendor;     /* CPU vendor */
+       uint8_t x86_model;
+       uint8_t x86_mask;
+};
+
+/*
+ * List of cpu vendor strings along with their normalized
+ * id values.
+ */
+static struct {
+       int vendor;
+       const char *name;
+} x86_vendors[] = {
+       { X86_VENDOR_INTEL,     "GenuineIntel", },
+       { X86_VENDOR_CYRIX,     "CyrixInstead", },
+       { X86_VENDOR_AMD,       "AuthenticAMD", },
+       { X86_VENDOR_UMC,       "UMC UMC UMC ", },
+       { X86_VENDOR_NEXGEN,    "NexGenDriven", },
+       { X86_VENDOR_CENTAUR,   "CentaurHauls", },
+       { X86_VENDOR_RISE,      "RiseRiseRise", },
+       { X86_VENDOR_TRANSMETA, "GenuineTMx86", },
+       { X86_VENDOR_TRANSMETA, "TransmetaCPU", },
+       { X86_VENDOR_NSC,       "Geode by NSC", },
+       { X86_VENDOR_SIS,       "SiS SiS SiS ", },
+};
+
+static const char *const x86_vendor_name[] = {
+       [X86_VENDOR_INTEL]     = "Intel",
+       [X86_VENDOR_CYRIX]     = "Cyrix",
+       [X86_VENDOR_AMD]       = "AMD",
+       [X86_VENDOR_UMC]       = "UMC",
+       [X86_VENDOR_NEXGEN]    = "NexGen",
+       [X86_VENDOR_CENTAUR]   = "Centaur",
+       [X86_VENDOR_RISE]      = "Rise",
+       [X86_VENDOR_TRANSMETA] = "Transmeta",
+       [X86_VENDOR_NSC]       = "NSC",
+       [X86_VENDOR_SIS]       = "SiS",
+};
+
 static void load_ds(u32 segment)
 {
        asm volatile("movl %0, %%ds" : : "r" (segment * X86_GDT_ENTRY_SIZE));
@@ -69,7 +124,7 @@ static void load_gdt(const u64 *boot_gdt, u16 num_entries)
 {
        struct gdt_ptr gdt;
 
-       gdt.len = (num_entries * 8) - 1;
+       gdt.len = (num_entries * X86_GDT_ENTRY_SIZE) - 1;
        gdt.ptr = (u32)boot_gdt;
 
        asm volatile("lgdtl %0\n" : : "m" (gdt));
@@ -89,10 +144,13 @@ void setup_gdt(gd_t *id, u64 *gdt_addr)
                     (ulong)&id->arch.gd_addr, 0xfffff);
 
        /* 16-bit CS: code, read/execute, 64 kB, base 0 */
-       gdt_addr[X86_GDT_ENTRY_16BIT_CS] = GDT_ENTRY(0x109b, 0, 0x0ffff);
+       gdt_addr[X86_GDT_ENTRY_16BIT_CS] = GDT_ENTRY(0x009b, 0, 0x0ffff);
 
        /* 16-bit DS: data, read/write, 64 kB, base 0 */
-       gdt_addr[X86_GDT_ENTRY_16BIT_DS] = GDT_ENTRY(0x1093, 0, 0x0ffff);
+       gdt_addr[X86_GDT_ENTRY_16BIT_DS] = GDT_ENTRY(0x0093, 0, 0x0ffff);
+
+       gdt_addr[X86_GDT_ENTRY_16BIT_FLAT_CS] = GDT_ENTRY(0x809b, 0, 0xfffff);
+       gdt_addr[X86_GDT_ENTRY_16BIT_FLAT_DS] = GDT_ENTRY(0x8093, 0, 0xfffff);
 
        load_gdt(gdt_addr, X86_GDT_NUM_ENTRIES);
        load_ds(X86_GDT_ENTRY_32BIT_DS);
@@ -112,6 +170,129 @@ int __weak x86_cleanup_before_linux(void)
        return 0;
 }
 
+/*
+ * Cyrix CPUs without cpuid or with cpuid not yet enabled can be detected
+ * by the fact that they preserve the flags across the division of 5/2.
+ * PII and PPro exhibit this behavior too, but they have cpuid available.
+ */
+
+/*
+ * Perform the Cyrix 5/2 test. A Cyrix won't change
+ * the flags, while other 486 chips will.
+ */
+static inline int test_cyrix_52div(void)
+{
+       unsigned int test;
+
+       __asm__ __volatile__(
+            "sahf\n\t"         /* clear flags (%eax = 0x0005) */
+            "div %b2\n\t"      /* divide 5 by 2 */
+            "lahf"             /* store flags into %ah */
+            : "=a" (test)
+            : "0" (5), "q" (2)
+            : "cc");
+
+       /* AH is 0x02 on Cyrix after the divide.. */
+       return (unsigned char) (test >> 8) == 0x02;
+}
+
+/*
+ *     Detect a NexGen CPU running without BIOS hypercode new enough
+ *     to have CPUID. (Thanks to Herbert Oppmann)
+ */
+
+static int deep_magic_nexgen_probe(void)
+{
+       int ret;
+
+       __asm__ __volatile__ (
+               "       movw    $0x5555, %%ax\n"
+               "       xorw    %%dx,%%dx\n"
+               "       movw    $2, %%cx\n"
+               "       divw    %%cx\n"
+               "       movl    $0, %%eax\n"
+               "       jnz     1f\n"
+               "       movl    $1, %%eax\n"
+               "1:\n"
+               : "=a" (ret) : : "cx", "dx");
+       return  ret;
+}
+
+static bool has_cpuid(void)
+{
+       return flag_is_changeable_p(X86_EFLAGS_ID);
+}
+
+static int build_vendor_name(char *vendor_name)
+{
+       struct cpuid_result result;
+       result = cpuid(0x00000000);
+       unsigned int *name_as_ints = (unsigned int *)vendor_name;
+
+       name_as_ints[0] = result.ebx;
+       name_as_ints[1] = result.edx;
+       name_as_ints[2] = result.ecx;
+
+       return result.eax;
+}
+
+static void identify_cpu(struct cpu_device_id *cpu)
+{
+       char vendor_name[16];
+       int i;
+
+       vendor_name[0] = '\0'; /* Unset */
+       cpu->device = 0; /* fix gcc 4.4.4 warning */
+
+       /* Find the id and vendor_name */
+       if (!has_cpuid()) {
+               /* Its a 486 if we can modify the AC flag */
+               if (flag_is_changeable_p(X86_EFLAGS_AC))
+                       cpu->device = 0x00000400; /* 486 */
+               else
+                       cpu->device = 0x00000300; /* 386 */
+               if ((cpu->device == 0x00000400) && test_cyrix_52div()) {
+                       memcpy(vendor_name, "CyrixInstead", 13);
+                       /* If we ever care we can enable cpuid here */
+               }
+               /* Detect NexGen with old hypercode */
+               else if (deep_magic_nexgen_probe())
+                       memcpy(vendor_name, "NexGenDriven", 13);
+       }
+       if (has_cpuid()) {
+               int  cpuid_level;
+
+               cpuid_level = build_vendor_name(vendor_name);
+               vendor_name[12] = '\0';
+
+               /* Intel-defined flags: level 0x00000001 */
+               if (cpuid_level >= 0x00000001) {
+                       cpu->device = cpuid_eax(0x00000001);
+               } else {
+                       /* Have CPUID level 0 only unheard of */
+                       cpu->device = 0x00000400;
+               }
+       }
+       cpu->vendor = X86_VENDOR_UNKNOWN;
+       for (i = 0; i < ARRAY_SIZE(x86_vendors); i++) {
+               if (memcmp(vendor_name, x86_vendors[i].name, 12) == 0) {
+                       cpu->vendor = x86_vendors[i].vendor;
+                       break;
+               }
+       }
+}
+
+static inline void get_fms(struct cpuinfo_x86 *c, uint32_t tfms)
+{
+       c->x86 = (tfms >> 8) & 0xf;
+       c->x86_model = (tfms >> 4) & 0xf;
+       c->x86_mask = tfms & 0xf;
+       if (c->x86 == 0xf)
+               c->x86 += (tfms >> 20) & 0xff;
+       if (c->x86 >= 0x6)
+               c->x86_model += ((tfms >> 16) & 0xF) << 4;
+}
+
 int x86_cpu_init_f(void)
 {
        const u32 em_rst = ~X86_CR0_EM;
@@ -125,17 +306,22 @@ int x86_cpu_init_f(void)
             "movl %%eax, %%cr0\n" \
             : : "i" (em_rst), "i" (mp_ne_set) : "eax");
 
-       return 0;
-}
-int cpu_init_f(void) __attribute__((weak, alias("x86_cpu_init_f")));
+       /* identify CPU via cpuid and store the decoded info into gd->arch */
+       if (has_cpuid()) {
+               struct cpu_device_id cpu;
+               struct cpuinfo_x86 c;
+
+               identify_cpu(&cpu);
+               get_fms(&c, cpu.device);
+               gd->arch.x86 = c.x86;
+               gd->arch.x86_vendor = cpu.vendor;
+               gd->arch.x86_model = c.x86_model;
+               gd->arch.x86_mask = c.x86_mask;
+               gd->arch.x86_device = cpu.device;
+       }
 
-int x86_cpu_init_r(void)
-{
-       /* Initialize core interrupt and exception functionality of CPU */
-       cpu_init_interrupts();
        return 0;
 }
-int cpu_init_r(void) __attribute__((weak, alias("x86_cpu_init_r")));
 
 void x86_enable_caches(void)
 {
@@ -195,14 +381,13 @@ asm(".globl generate_gpf\n"
        "generate_gpf:\n"
        "ljmp   $0x70, $0x47114711\n");
 
-void __reset_cpu(ulong addr)
+__weak void reset_cpu(ulong addr)
 {
        printf("Resetting using x86 Triple Fault\n");
        set_vector(13, generate_gpf);   /* general protection fault handler */
        set_vector(8, generate_gpf);    /* double fault handler */
        generate_gpf();                 /* start the show */
 }
-void reset_cpu(ulong addr) __attribute__((weak, alias("__reset_cpu")));
 
 int dcache_status(void)
 {
@@ -240,3 +425,164 @@ int icache_status(void)
 {
        return 1;
 }
+
+void cpu_enable_paging_pae(ulong cr3)
+{
+       __asm__ __volatile__(
+               /* Load the page table address */
+               "movl   %0, %%cr3\n"
+               /* Enable pae */
+               "movl   %%cr4, %%eax\n"
+               "orl    $0x00000020, %%eax\n"
+               "movl   %%eax, %%cr4\n"
+               /* Enable paging */
+               "movl   %%cr0, %%eax\n"
+               "orl    $0x80000000, %%eax\n"
+               "movl   %%eax, %%cr0\n"
+               :
+               : "r" (cr3)
+               : "eax");
+}
+
+void cpu_disable_paging_pae(void)
+{
+       /* Turn off paging */
+       __asm__ __volatile__ (
+               /* Disable paging */
+               "movl   %%cr0, %%eax\n"
+               "andl   $0x7fffffff, %%eax\n"
+               "movl   %%eax, %%cr0\n"
+               /* Disable pae */
+               "movl   %%cr4, %%eax\n"
+               "andl   $0xffffffdf, %%eax\n"
+               "movl   %%eax, %%cr4\n"
+               :
+               :
+               : "eax");
+}
+
+static bool can_detect_long_mode(void)
+{
+       return cpuid_eax(0x80000000) > 0x80000000UL;
+}
+
+static bool has_long_mode(void)
+{
+       return cpuid_edx(0x80000001) & (1 << 29) ? true : false;
+}
+
+int cpu_has_64bit(void)
+{
+       return has_cpuid() && can_detect_long_mode() &&
+               has_long_mode();
+}
+
+const char *cpu_vendor_name(int vendor)
+{
+       const char *name;
+       name = "<invalid cpu vendor>";
+       if ((vendor < (ARRAY_SIZE(x86_vendor_name))) &&
+           (x86_vendor_name[vendor] != 0))
+               name = x86_vendor_name[vendor];
+
+       return name;
+}
+
+char *cpu_get_name(char *name)
+{
+       unsigned int *name_as_ints = (unsigned int *)name;
+       struct cpuid_result regs;
+       char *ptr;
+       int i;
+
+       /* This bit adds up to 48 bytes */
+       for (i = 0; i < 3; i++) {
+               regs = cpuid(0x80000002 + i);
+               name_as_ints[i * 4 + 0] = regs.eax;
+               name_as_ints[i * 4 + 1] = regs.ebx;
+               name_as_ints[i * 4 + 2] = regs.ecx;
+               name_as_ints[i * 4 + 3] = regs.edx;
+       }
+       name[CPU_MAX_NAME_LEN - 1] = '\0';
+
+       /* Skip leading spaces. */
+       ptr = name;
+       while (*ptr == ' ')
+               ptr++;
+
+       return ptr;
+}
+
+int default_print_cpuinfo(void)
+{
+       printf("CPU: %s, vendor %s, device %xh\n",
+              cpu_has_64bit() ? "x86_64" : "x86",
+              cpu_vendor_name(gd->arch.x86_vendor), gd->arch.x86_device);
+
+       return 0;
+}
+
+#define PAGETABLE_SIZE         (6 * 4096)
+
+/**
+ * build_pagetable() - build a flat 4GiB page table structure for 64-bti mode
+ *
+ * @pgtable: Pointer to a 24iKB block of memory
+ */
+static void build_pagetable(uint32_t *pgtable)
+{
+       uint i;
+
+       memset(pgtable, '\0', PAGETABLE_SIZE);
+
+       /* Level 4 needs a single entry */
+       pgtable[0] = (uint32_t)&pgtable[1024] + 7;
+
+       /* Level 3 has one 64-bit entry for each GiB of memory */
+       for (i = 0; i < 4; i++) {
+               pgtable[1024 + i * 2] = (uint32_t)&pgtable[2048] +
+                                                       0x1000 * i + 7;
+       }
+
+       /* Level 2 has 2048 64-bit entries, each repesenting 2MiB */
+       for (i = 0; i < 2048; i++)
+               pgtable[2048 + i * 2] = 0x183 + (i << 21UL);
+}
+
+int cpu_jump_to_64bit(ulong setup_base, ulong target)
+{
+       uint32_t *pgtable;
+
+       pgtable = memalign(4096, PAGETABLE_SIZE);
+       if (!pgtable)
+               return -ENOMEM;
+
+       build_pagetable(pgtable);
+       cpu_call64((ulong)pgtable, setup_base, target);
+       free(pgtable);
+
+       return -EFAULT;
+}
+
+void show_boot_progress(int val)
+{
+#if MIN_PORT80_KCLOCKS_DELAY
+       /*
+        * Scale the time counter reading to avoid using 64 bit arithmetics.
+        * Can't use get_timer() here becuase it could be not yet
+        * initialized or even implemented.
+        */
+       if (!gd->arch.tsc_prev) {
+               gd->arch.tsc_base_kclocks = rdtsc() / 1000;
+               gd->arch.tsc_prev = 0;
+       } else {
+               uint32_t now;
+
+               do {
+                       now = rdtsc() / 1000 - gd->arch.tsc_base_kclocks;
+               } while (now < (gd->arch.tsc_prev + MIN_PORT80_KCLOCKS_DELAY));
+               gd->arch.tsc_prev = now;
+       }
+#endif
+       outb(val, POST_PORT);
+}
index 6f3d85fab084eea52458dece8e63d5573bd46839..a21d2a6c5000c5d26de5dfd0c43b6dd9c5299c35 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/compiler.h>
 #include <asm/msr.h>
 #include <asm/u-boot-x86.h>
+#include <asm/i8259.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -31,7 +32,7 @@ DECLARE_GLOBAL_DATA_PTR;
        "pushl $"#x"\n" \
        "jmp irq_common_entry\n"
 
-void dump_regs(struct irq_regs *regs)
+static void dump_regs(struct irq_regs *regs)
 {
        unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L;
        unsigned long d0, d1, d2, d3, d6, d7;
@@ -128,9 +129,6 @@ int cpu_init_interrupts(void)
        int irq_entry_size = irq_1 - irq_0;
        void *irq_entry = (void *)irq_0;
 
-       /* Just in case... */
-       disable_interrupts();
-
        /* Setup the IDT */
        for (i = 0; i < 256; i++) {
                idt[i].access = 0x8e;
@@ -146,9 +144,6 @@ int cpu_init_interrupts(void)
 
        load_idt(&idt_ptr);
 
-       /* It is now safe to enable interrupts */
-       enable_interrupts();
-
        return 0;
 }
 
@@ -172,6 +167,25 @@ int disable_interrupts(void)
        return flags & X86_EFLAGS_IF;
 }
 
+int interrupt_init(void)
+{
+       /* Just in case... */
+       disable_interrupts();
+
+#ifdef CONFIG_SYS_PCAT_INTERRUPTS
+       /* Initialize the master/slave i8259 pic */
+       i8259_init();
+#endif
+
+       /* Initialize core interrupt and exception functionality of CPU */
+       cpu_init_interrupts();
+
+       /* It is now safe to enable interrupts */
+       enable_interrupts();
+
+       return 0;
+}
+
 /* IRQ Low-Level Service Routine */
 void irq_llsr(struct irq_regs *regs)
 {
@@ -603,31 +617,3 @@ asm(".globl irq_common_entry\n" \
        DECLARE_INTERRUPT(253) \
        DECLARE_INTERRUPT(254) \
        DECLARE_INTERRUPT(255));
-
-#if defined(CONFIG_INTEL_CORE_ARCH)
-/*
- * Get the number of CPU time counter ticks since it was read first time after
- * restart. This yields a free running counter guaranteed to take almost 6
- * years to wrap around even at 100GHz clock rate.
- */
-u64 get_ticks(void)
-{
-       u64 now_tick = rdtsc();
-
-       if (!gd->arch.tsc_base)
-               gd->arch.tsc_base = now_tick;
-
-       return now_tick - gd->arch.tsc_base;
-}
-
-#define PLATFORM_INFO_MSR 0xce
-
-unsigned long get_tbclk(void)
-{
-       u32 ratio;
-       u64 platform_info = native_read_msr(PLATFORM_INFO_MSR);
-
-       ratio = (platform_info >> 8) & 0xff;
-       return 100 * 1000 * 1000 * ratio; /* 100MHz times Max Non Turbo ratio */
-}
-#endif
diff --git a/arch/x86/cpu/ivybridge/Kconfig b/arch/x86/cpu/ivybridge/Kconfig
new file mode 100644 (file)
index 0000000..afca957
--- /dev/null
@@ -0,0 +1,172 @@
+#
+# From Coreboot src/northbridge/intel/sandybridge/Kconfig
+#
+# Copyright (C) 2010 Google Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0
+
+
+config NORTHBRIDGE_INTEL_SANDYBRIDGE
+       bool
+       select CACHE_MRC_BIN
+       select CPU_INTEL_MODEL_206AX
+
+config NORTHBRIDGE_INTEL_IVYBRIDGE
+       bool
+       select CACHE_MRC_BIN
+       select CPU_INTEL_MODEL_306AX
+
+if NORTHBRIDGE_INTEL_SANDYBRIDGE
+
+config VGA_BIOS_ID
+       string
+       default "8086,0106"
+
+config CACHE_MRC_SIZE_KB
+       int
+       default 256
+
+config MRC_CACHE_BASE
+       hex
+       default 0xff800000
+
+config MRC_CACHE_LOCATION
+       hex
+       depends on !CHROMEOS
+       default 0x1ec000
+
+config MRC_CACHE_SIZE
+       hex
+       depends on !CHROMEOS
+       default 0x10000
+
+config DCACHE_RAM_BASE
+       hex
+       default 0xff7f0000
+
+config DCACHE_RAM_SIZE
+       hex
+       default 0x10000
+
+endif
+
+if NORTHBRIDGE_INTEL_IVYBRIDGE
+
+config VGA_BIOS_ID
+       string
+       default "8086,0166"
+
+config EXTERNAL_MRC_BLOB
+       bool
+       default n
+
+config CACHE_MRC_SIZE_KB
+       int
+       default 512
+
+config MRC_CACHE_BASE
+       hex
+       default 0xff800000
+
+config MRC_CACHE_LOCATION
+       hex
+       depends on !CHROMEOS
+       default 0x370000
+
+config MRC_CACHE_SIZE
+       hex
+       depends on !CHROMEOS
+       default 0x10000
+
+config DCACHE_RAM_BASE
+       hex
+       default 0xff7e0000
+
+config DCACHE_RAM_SIZE
+       hex
+       default 0x20000
+
+endif
+
+if NORTHBRIDGE_INTEL_SANDYBRIDGE || NORTHBRIDGE_INTEL_IVYBRIDGE
+
+config HAVE_MRC
+        bool "Add a System Agent binary"
+        help
+          Select this option to add a System Agent binary to
+          the resulting U-Boot image. MRC stands for Memory Reference Code.
+          It is a binary blob which U-Boot uses to set up SDRAM.
+
+          Note: Without this binary U-Boot will not be able to set up its
+          SDRAM so will not boot.
+
+config DCACHE_RAM_MRC_VAR_SIZE
+       hex
+       default 0x4000
+       help
+         This is the amount of CAR (Cache as RAM) reserved for use by the
+         memory reference code. This should be set to 16KB (0x4000 hex)
+         so that MRC has enough space to run.
+
+config MRC_FILE
+       string "Intel System Agent path and filename"
+       depends on HAVE_MRC
+       default "systemagent-ivybridge.bin" if NORTHBRIDGE_INTEL_IVYBRIDGE
+       default "systemagent-sandybridge.bin" if NORTHBRIDGE_INTEL_SANDYBRIDGE
+       help
+         The path and filename of the file to use as System Agent
+         binary.
+
+config CPU_SPECIFIC_OPTIONS
+       def_bool y
+       select SMM_TSEG
+       select ARCH_BOOTBLOCK_X86_32
+       select ARCH_ROMSTAGE_X86_32
+       select ARCH_RAMSTAGE_X86_32
+       select SMP
+       select SSE2
+       select UDELAY_LAPIC
+       select CPU_MICROCODE_IN_CBFS
+       select TSC_SYNC_MFENCE
+       select HAVE_INTEL_ME
+       select X86_RAMTEST
+
+config SMM_TSEG_SIZE
+       hex
+       default 0x800000
+
+config ENABLE_VMX
+       bool "Enable VMX for virtualization"
+       default n
+       help
+         Virtual Machine Extensions are provided in many x86 CPUs. These
+         provide various facilities for allowing a host OS to provide an
+         environment where potentially several guest OSes have only
+         limited access to the underlying hardware. This is achieved
+         without resorting to software trapping and/or instruction set
+         emulation (which would be very slow).
+
+         Intel's implementation of this is called VT-x. This option enables
+         VT-x this so that the OS that is booted by U-Boot can make use of
+         these facilities. If this option is not enabled, then the host OS
+         will be unable to support virtualisation, or it will run very
+         slowly.
+
+endif
+
+config CPU_INTEL_SOCKET_RPGA989
+       bool
+
+if CPU_INTEL_SOCKET_RPGA989
+
+config SOCKET_SPECIFIC_OPTIONS # dummy
+       def_bool y
+       select MMX
+       select SSE
+       select CACHE_AS_RAM
+
+config CACHE_MRC_BIN
+       bool
+       default n
+
+endif
diff --git a/arch/x86/cpu/ivybridge/Makefile b/arch/x86/cpu/ivybridge/Makefile
new file mode 100644 (file)
index 0000000..0c7efae
--- /dev/null
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2014 Google, Inc
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += bd82x6x.o
+obj-y += car.o
+obj-y += cpu.o
+obj-y += early_init.o
+obj-y += early_me.o
+obj-y += gma.o
+obj-y += lpc.o
+obj-y += me_status.o
+obj-y += model_206ax.o
+obj-y += microcode_intel.o
+obj-y += northbridge.o
+obj-y += pch.o
+obj-y += pci.o
+obj-y += report_platform.o
+obj-y += sata.o
+obj-y += sdram.o
+obj-y += usb_ehci.o
+obj-y += usb_xhci.o
diff --git a/arch/x86/cpu/ivybridge/bd82x6x.c b/arch/x86/cpu/ivybridge/bd82x6x.c
new file mode 100644 (file)
index 0000000..65a17d3
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <malloc.h>
+#include <asm/lapic.h>
+#include <asm/pci.h>
+#include <asm/arch/bd82x6x.h>
+#include <asm/arch/model_206ax.h>
+#include <asm/arch/pch.h>
+#include <asm/arch/sandybridge.h>
+
+void bd82x6x_pci_init(pci_dev_t dev)
+{
+       u16 reg16;
+       u8 reg8;
+
+       debug("bd82x6x PCI init.\n");
+       /* Enable Bus Master */
+       reg16 = pci_read_config16(dev, PCI_COMMAND);
+       reg16 |= PCI_COMMAND_MASTER;
+       pci_write_config16(dev, PCI_COMMAND, reg16);
+
+       /* This device has no interrupt */
+       pci_write_config8(dev, INTR, 0xff);
+
+       /* disable parity error response and SERR */
+       reg16 = pci_read_config16(dev, BCTRL);
+       reg16 &= ~(1 << 0);
+       reg16 &= ~(1 << 1);
+       pci_write_config16(dev, BCTRL, reg16);
+
+       /* Master Latency Count must be set to 0x04! */
+       reg8 = pci_read_config8(dev, SMLT);
+       reg8 &= 0x07;
+       reg8 |= (0x04 << 3);
+       pci_write_config8(dev, SMLT, reg8);
+
+       /* Will this improve throughput of bus masters? */
+       pci_write_config8(dev, PCI_MIN_GNT, 0x06);
+
+       /* Clear errors in status registers */
+       reg16 = pci_read_config16(dev, PSTS);
+       /* reg16 |= 0xf900; */
+       pci_write_config16(dev, PSTS, reg16);
+
+       reg16 = pci_read_config16(dev, SECSTS);
+       /* reg16 |= 0xf900; */
+       pci_write_config16(dev, SECSTS, reg16);
+}
+
+#define PCI_BRIDGE_UPDATE_COMMAND
+void bd82x6x_pci_dev_enable_resources(pci_dev_t dev)
+{
+       uint16_t command;
+
+       command = pci_read_config16(dev, PCI_COMMAND);
+       command |= PCI_COMMAND_IO;
+#ifdef PCI_BRIDGE_UPDATE_COMMAND
+       /*
+        * If we write to PCI_COMMAND, on some systems this will cause the
+        * ROM and APICs to become invisible.
+        */
+       debug("%x cmd <- %02x\n", dev, command);
+       pci_write_config16(dev, PCI_COMMAND, command);
+#else
+       printf("%s cmd <- %02x (NOT WRITTEN!)\n", dev_path(dev), command);
+#endif
+}
+
+void bd82x6x_pci_bus_enable_resources(pci_dev_t dev)
+{
+       uint16_t ctrl;
+
+       ctrl = pci_read_config16(dev, PCI_BRIDGE_CONTROL);
+       ctrl |= PCI_COMMAND_IO;
+       ctrl |= PCI_BRIDGE_CTL_VGA;
+       debug("%x bridge ctrl <- %04x\n", dev, ctrl);
+       pci_write_config16(dev, PCI_BRIDGE_CONTROL, ctrl);
+
+       bd82x6x_pci_dev_enable_resources(dev);
+}
+
+int bd82x6x_init_pci_devices(void)
+{
+       const void *blob = gd->fdt_blob;
+       struct pci_controller *hose;
+       struct x86_cpu_priv *cpu;
+       int sata_node, gma_node;
+       int ret;
+
+       hose = pci_bus_to_hose(0);
+       lpc_enable(PCH_LPC_DEV);
+       lpc_init(hose, PCH_LPC_DEV);
+       sata_node = fdtdec_next_compatible(blob, 0,
+                                          COMPAT_INTEL_PANTHERPOINT_AHCI);
+       if (sata_node < 0) {
+               debug("%s: Cannot find SATA node\n", __func__);
+               return -EINVAL;
+       }
+       bd82x6x_sata_init(PCH_SATA_DEV, blob, sata_node);
+       bd82x6x_usb_ehci_init(PCH_EHCI1_DEV);
+       bd82x6x_usb_ehci_init(PCH_EHCI2_DEV);
+
+       cpu = calloc(1, sizeof(*cpu));
+       if (!cpu)
+               return -ENOMEM;
+       model_206ax_init(cpu);
+
+       gma_node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_GMA);
+       if (gma_node < 0) {
+               debug("%s: Cannot find GMA node\n", __func__);
+               return -EINVAL;
+       }
+       ret = gma_func0_init(PCH_VIDEO_DEV, pci_bus_to_hose(0), blob,
+                            gma_node);
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
+int bd82x6x_init(void)
+{
+       const void *blob = gd->fdt_blob;
+       int sata_node;
+
+       sata_node = fdtdec_next_compatible(blob, 0,
+                                          COMPAT_INTEL_PANTHERPOINT_AHCI);
+       if (sata_node < 0) {
+               debug("%s: Cannot find SATA node\n", __func__);
+               return -EINVAL;
+       }
+
+       bd82x6x_pci_init(PCH_DEV);
+       bd82x6x_sata_enable(PCH_SATA_DEV, blob, sata_node);
+       northbridge_enable(PCH_DEV);
+       northbridge_init(PCH_DEV);
+
+       return 0;
+}
diff --git a/arch/x86/cpu/ivybridge/car.S b/arch/x86/cpu/ivybridge/car.S
new file mode 100644 (file)
index 0000000..9441666
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * From Coreboot file cpu/intel/model_206ax/cache_as_ram.inc
+ *
+ * Copyright (C) 2000,2007 Ronald G. Minnich <rminnich@gmail.com>
+ * Copyright (C) 2005 Tyan (written by Yinghai Lu for Tyan)
+ * Copyright (C) 2007-2008 coresystems GmbH
+ * Copyright (C) 2012 Kyösti Mälkki <kyosti.malkki@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/msr-index.h>
+#include <asm/mtrr.h>
+#include <asm/post.h>
+#include <asm/processor-flags.h>
+#include <asm/arch/microcode.h>
+
+#define MTRR_PHYS_BASE_MSR(reg) (0x200 + 2 * (reg))
+#define MTRR_PHYS_MASK_MSR(reg) (0x200 + 2 * (reg) + 1)
+
+#define CACHE_AS_RAM_SIZE      CONFIG_DCACHE_RAM_SIZE
+#define CACHE_AS_RAM_BASE      CONFIG_DCACHE_RAM_BASE
+
+/* Cache 4GB - MRC_SIZE_KB for MRC */
+#define CACHE_MRC_BYTES        ((CONFIG_CACHE_MRC_SIZE_KB << 10) - 1)
+#define CACHE_MRC_BASE         (0xFFFFFFFF - CACHE_MRC_BYTES)
+#define CACHE_MRC_MASK         (~CACHE_MRC_BYTES)
+
+#define CPU_PHYSMASK_HI        (1 << (CONFIG_CPU_ADDR_BITS - 32) - 1)
+
+#define NOEVICTMOD_MSR 0x2e0
+
+       /*
+        * Note: ebp must not be touched in this code as it holds the BIST
+        * value (built-in self test). We preserve this value until it can
+        * be written to global_data when CAR is ready for use.
+        */
+.globl car_init
+car_init:
+       post_code(POST_CAR_START)
+
+       /* Send INIT IPI to all excluding ourself */
+       movl    $0x000C4500, %eax
+       movl    $0xFEE00300, %esi
+       movl    %eax, (%esi)
+
+       /* TODO: Load microcode later - the 'no eviction' mode breaks this */
+       movl    $MSR_IA32_UCODE_WRITE, %ecx
+       xorl    %edx, %edx
+       movl    $_dt_ucode_base_size, %eax
+       movl    (%eax), %eax
+       addl    $UCODE_HEADER_LEN, %eax
+       wrmsr
+
+       post_code(POST_CAR_SIPI)
+       /* Zero out all fixed range and variable range MTRRs */
+       movl    $mtrr_table, %esi
+       movl    $((mtrr_table_end - mtrr_table) / 2), %edi
+       xorl    %eax, %eax
+       xorl    %edx, %edx
+clear_mtrrs:
+       movw    (%esi), %bx
+       movzx   %bx, %ecx
+       wrmsr
+       add     $2, %esi
+       dec     %edi
+       jnz     clear_mtrrs
+
+       post_code(POST_CAR_MTRR)
+       /* Configure the default memory type to uncacheable */
+       movl    $MTRR_DEF_TYPE_MSR, %ecx
+       rdmsr
+       andl    $(~0x00000cff), %eax
+       wrmsr
+
+       post_code(POST_CAR_UNCACHEABLE)
+       /* Set Cache-as-RAM base address */
+       movl    $(MTRR_PHYS_BASE_MSR(0)), %ecx
+       movl    $(CACHE_AS_RAM_BASE | MTRR_TYPE_WRBACK), %eax
+       xorl    %edx, %edx
+       wrmsr
+
+       post_code(POST_CAR_BASE_ADDRESS)
+       /* Set Cache-as-RAM mask */
+       movl    $(MTRR_PHYS_MASK_MSR(0)), %ecx
+       movl    $(~(CACHE_AS_RAM_SIZE - 1) | MTRR_PHYS_MASK_VALID), %eax
+       movl    $CPU_PHYSMASK_HI, %edx
+       wrmsr
+
+       post_code(POST_CAR_MASK)
+
+       /* Enable MTRR */
+       movl    $MTRR_DEF_TYPE_MSR, %ecx
+       rdmsr
+       orl     $MTRR_DEF_TYPE_EN, %eax
+       wrmsr
+
+       /* Enable cache (CR0.CD = 0, CR0.NW = 0) */
+        movl   %cr0, %eax
+       andl    $(~(X86_CR0_CD | X86_CR0_NW)), %eax
+       invd
+       movl    %eax, %cr0
+
+       /* enable the 'no eviction' mode */
+       movl    $NOEVICTMOD_MSR, %ecx
+       rdmsr
+       orl     $1, %eax
+       andl    $~2, %eax
+       wrmsr
+
+       /* Clear the cache memory region. This will also fill up the cache */
+       movl    $CACHE_AS_RAM_BASE, %esi
+       movl    %esi, %edi
+       movl    $(CACHE_AS_RAM_SIZE / 4), %ecx
+       xorl    %eax, %eax
+       rep     stosl
+
+       /* enable the 'no eviction run' state */
+       movl    $NOEVICTMOD_MSR, %ecx
+       rdmsr
+       orl     $3, %eax
+       wrmsr
+
+       post_code(POST_CAR_FILL)
+       /* Enable Cache-as-RAM mode by disabling cache */
+       movl    %cr0, %eax
+       orl     $X86_CR0_CD, %eax
+       movl    %eax, %cr0
+
+       /* Enable cache for our code in Flash because we do XIP here */
+       movl    $MTRR_PHYS_BASE_MSR(1), %ecx
+       xorl    %edx, %edx
+       movl    $car_init_ret, %eax
+       andl    $(~(CONFIG_XIP_ROM_SIZE - 1)), %eax
+       orl     $MTRR_TYPE_WRPROT, %eax
+       wrmsr
+
+       movl    $MTRR_PHYS_MASK_MSR(1), %ecx
+       movl    $CPU_PHYSMASK_HI, %edx
+       movl    $(~(CONFIG_XIP_ROM_SIZE - 1) | MTRR_PHYS_MASK_VALID), %eax
+       wrmsr
+
+       post_code(POST_CAR_ROM_CACHE)
+#ifdef CONFIG_CACHE_MRC_BIN
+       /* Enable caching for ram init code to run faster */
+       movl    $MTRR_PHYS_BASE_MSR(2), %ecx
+       movl    $(CACHE_MRC_BASE | MTRR_TYPE_WRPROT), %eax
+       xorl    %edx, %edx
+       wrmsr
+       movl    $MTRR_PHYS_MASK_MSR(2), %ecx
+       movl    $(CACHE_MRC_MASK | MTRR_PHYS_MASK_VALID), %eax
+       movl    $CPU_PHYSMASK_HI, %edx
+       wrmsr
+#endif
+
+       post_code(POST_CAR_MRC_CACHE)
+       /* Enable cache */
+       movl    %cr0, %eax
+       andl    $(~(X86_CR0_CD | X86_CR0_NW)), %eax
+       movl    %eax, %cr0
+
+       post_code(POST_CAR_CPU_CACHE)
+
+       /* All CPUs need to be in Wait for SIPI state */
+wait_for_sipi:
+       movl    (%esi), %eax
+       bt      $12, %eax
+       jc      wait_for_sipi
+
+       /* return */
+       jmp     car_init_ret
+
+.globl car_uninit
+car_uninit:
+       /* Disable cache */
+       movl    %cr0, %eax
+       orl     $X86_CR0_CD, %eax
+       movl    %eax, %cr0
+
+       /* Disable MTRRs */
+       movl    $MTRR_DEF_TYPE_MSR, %ecx
+       rdmsr
+       andl    $(~MTRR_DEF_TYPE_EN), %eax
+       wrmsr
+
+       /* Disable the no-eviction run state */
+       movl    NOEVICTMOD_MSR, %ecx
+       rdmsr
+       andl    $~2, %eax
+       wrmsr
+
+       invd
+
+       /* Disable the no-eviction mode */
+       rdmsr
+       andl    $~1, %eax
+       wrmsr
+
+#ifdef CONFIG_CACHE_MRC_BIN
+       /* Clear the MTRR that was used to cache MRC */
+       xorl    %eax, %eax
+       xorl    %edx, %edx
+       movl    $MTRR_PHYS_BASE_MSR(2), %ecx
+       wrmsr
+       movl    $MTRR_PHYS_MASK_MSR(2), %ecx
+       wrmsr
+#endif
+
+       /* Enable MTRRs */
+       movl    $MTRR_DEF_TYPE_MSR, %ecx
+       rdmsr
+       orl     $MTRR_DEF_TYPE_EN, %eax
+       wrmsr
+
+       invd
+
+       ret
+
+mtrr_table:
+       /* Fixed MTRRs */
+       .word 0x250, 0x258, 0x259
+       .word 0x268, 0x269, 0x26A
+       .word 0x26B, 0x26C, 0x26D
+       .word 0x26E, 0x26F
+       /* Variable MTRRs */
+       .word 0x200, 0x201, 0x202, 0x203
+       .word 0x204, 0x205, 0x206, 0x207
+       .word 0x208, 0x209, 0x20A, 0x20B
+       .word 0x20C, 0x20D, 0x20E, 0x20F
+       .word 0x210, 0x211, 0x212, 0x213
+mtrr_table_end:
+
+       .align 4
+_dt_ucode_base_size:
+       /* These next two fields are filled in by ifdtool */
+       .long   0                       /* microcode base */
+       .long   0                       /* microcode size */
diff --git a/arch/x86/cpu/ivybridge/cpu.c b/arch/x86/cpu/ivybridge/cpu.c
new file mode 100644 (file)
index 0000000..e925310
--- /dev/null
@@ -0,0 +1,333 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ * (C) Copyright 2008
+ * Graeme Russ, graeme.russ@gmail.com.
+ *
+ * Some portions from coreboot src/mainboard/google/link/romstage.c
+ * and src/cpu/intel/model_206ax/bootblock.c
+ * Copyright (C) 2007-2010 coresystems GmbH
+ * Copyright (C) 2011 Google Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <asm/cpu.h>
+#include <asm/io.h>
+#include <asm/lapic.h>
+#include <asm/msr.h>
+#include <asm/mtrr.h>
+#include <asm/pci.h>
+#include <asm/post.h>
+#include <asm/processor.h>
+#include <asm/arch/model_206ax.h>
+#include <asm/arch/microcode.h>
+#include <asm/arch/pch.h>
+#include <asm/arch/sandybridge.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static void enable_port80_on_lpc(struct pci_controller *hose, pci_dev_t dev)
+{
+       /* Enable port 80 POST on LPC */
+       pci_hose_write_config_dword(hose, dev, PCH_RCBA_BASE, DEFAULT_RCBA | 1);
+       clrbits_le32(RCB_REG(GCS), 4);
+}
+
+/*
+ * Enable Prefetching and Caching.
+ */
+static void enable_spi_prefetch(struct pci_controller *hose, pci_dev_t dev)
+{
+       u8 reg8;
+
+       pci_hose_read_config_byte(hose, dev, 0xdc, &reg8);
+       reg8 &= ~(3 << 2);
+       reg8 |= (2 << 2); /* Prefetching and Caching Enabled */
+       pci_hose_write_config_byte(hose, dev, 0xdc, reg8);
+}
+
+static int set_flex_ratio_to_tdp_nominal(void)
+{
+       msr_t flex_ratio, msr;
+       u8 nominal_ratio;
+
+       /* Minimum CPU revision for configurable TDP support */
+       if (cpuid_eax(1) < IVB_CONFIG_TDP_MIN_CPUID)
+               return -EINVAL;
+
+       /* Check for Flex Ratio support */
+       flex_ratio = msr_read(MSR_FLEX_RATIO);
+       if (!(flex_ratio.lo & FLEX_RATIO_EN))
+               return -EINVAL;
+
+       /* Check for >0 configurable TDPs */
+       msr = msr_read(MSR_PLATFORM_INFO);
+       if (((msr.hi >> 1) & 3) == 0)
+               return -EINVAL;
+
+       /* Use nominal TDP ratio for flex ratio */
+       msr = msr_read(MSR_CONFIG_TDP_NOMINAL);
+       nominal_ratio = msr.lo & 0xff;
+
+       /* See if flex ratio is already set to nominal TDP ratio */
+       if (((flex_ratio.lo >> 8) & 0xff) == nominal_ratio)
+               return 0;
+
+       /* Set flex ratio to nominal TDP ratio */
+       flex_ratio.lo &= ~0xff00;
+       flex_ratio.lo |= nominal_ratio << 8;
+       flex_ratio.lo |= FLEX_RATIO_LOCK;
+       msr_write(MSR_FLEX_RATIO, flex_ratio);
+
+       /* Set flex ratio in soft reset data register bits 11:6 */
+       clrsetbits_le32(RCB_REG(SOFT_RESET_DATA), 0x3f << 6,
+                       (nominal_ratio & 0x3f) << 6);
+
+       /* Set soft reset control to use register value */
+       setbits_le32(RCB_REG(SOFT_RESET_CTRL), 1);
+
+       /* Issue warm reset, will be "CPU only" due to soft reset data */
+       outb(0x0, PORT_RESET);
+       outb(0x6, PORT_RESET);
+       cpu_hlt();
+
+       /* Not reached */
+       return -EINVAL;
+}
+
+static void set_spi_speed(void)
+{
+       u32 fdod;
+
+       /* Observe SPI Descriptor Component Section 0 */
+       writel(0x1000, RCB_REG(SPI_DESC_COMP0));
+
+       /* Extract the1 Write/Erase SPI Frequency from descriptor */
+       fdod = readl(RCB_REG(SPI_FREQ_WR_ERA));
+       fdod >>= 24;
+       fdod &= 7;
+
+       /* Set Software Sequence frequency to match */
+       clrsetbits_8(RCB_REG(SPI_FREQ_SWSEQ), 7, fdod);
+}
+
+int arch_cpu_init(void)
+{
+       const void *blob = gd->fdt_blob;
+       struct pci_controller *hose;
+       int node;
+       int ret;
+
+       post_code(POST_CPU_INIT);
+       timer_set_base(rdtsc());
+
+       ret = x86_cpu_init_f();
+       if (ret)
+               return ret;
+
+       ret = pci_early_init_hose(&hose);
+       if (ret)
+               return ret;
+
+       node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_LPC);
+       if (node < 0)
+               return -ENOENT;
+       ret = lpc_early_init(gd->fdt_blob, node, PCH_LPC_DEV);
+       if (ret)
+               return ret;
+
+       enable_spi_prefetch(hose, PCH_LPC_DEV);
+
+       /* This is already done in start.S, but let's do it in C */
+       enable_port80_on_lpc(hose, PCH_LPC_DEV);
+
+       set_spi_speed();
+
+       /*
+        * We should do as little as possible before the serial console is
+        * up. Perhaps this should move to later. Our next lot of init
+        * happens in print_cpuinfo() when we have a console
+        */
+       ret = set_flex_ratio_to_tdp_nominal();
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
+static int enable_smbus(void)
+{
+       pci_dev_t dev;
+       uint16_t value;
+
+       /* Set the SMBus device statically. */
+       dev = PCI_BDF(0x0, 0x1f, 0x3);
+
+       /* Check to make sure we've got the right device. */
+       value = pci_read_config16(dev, 0x0);
+       if (value != 0x8086) {
+               printf("SMBus controller not found\n");
+               return -ENOSYS;
+       }
+
+       /* Set SMBus I/O base. */
+       pci_write_config32(dev, SMB_BASE,
+                          SMBUS_IO_BASE | PCI_BASE_ADDRESS_SPACE_IO);
+
+       /* Set SMBus enable. */
+       pci_write_config8(dev, HOSTC, HST_EN);
+
+       /* Set SMBus I/O space enable. */
+       pci_write_config16(dev, PCI_COMMAND, PCI_COMMAND_IO);
+
+       /* Disable interrupt generation. */
+       outb(0, SMBUS_IO_BASE + SMBHSTCTL);
+
+       /* Clear any lingering errors, so transactions can run. */
+       outb(inb(SMBUS_IO_BASE + SMBHSTSTAT), SMBUS_IO_BASE + SMBHSTSTAT);
+       debug("SMBus controller enabled\n");
+
+       return 0;
+}
+
+#define PCH_EHCI0_TEMP_BAR0 0xe8000000
+#define PCH_EHCI1_TEMP_BAR0 0xe8000400
+#define PCH_XHCI_TEMP_BAR0  0xe8001000
+
+/*
+ * Setup USB controller MMIO BAR to prevent the reference code from
+ * resetting the controller.
+ *
+ * The BAR will be re-assigned during device enumeration so these are only
+ * temporary.
+ *
+ * This is used to speed up the resume path.
+ */
+static void enable_usb_bar(void)
+{
+       pci_dev_t usb0 = PCH_EHCI1_DEV;
+       pci_dev_t usb1 = PCH_EHCI2_DEV;
+       pci_dev_t usb3 = PCH_XHCI_DEV;
+       u32 cmd;
+
+       /* USB Controller 1 */
+       pci_write_config32(usb0, PCI_BASE_ADDRESS_0,
+                          PCH_EHCI0_TEMP_BAR0);
+       cmd = pci_read_config32(usb0, PCI_COMMAND);
+       cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+       pci_write_config32(usb0, PCI_COMMAND, cmd);
+
+       /* USB Controller 1 */
+       pci_write_config32(usb1, PCI_BASE_ADDRESS_0,
+                          PCH_EHCI1_TEMP_BAR0);
+       cmd = pci_read_config32(usb1, PCI_COMMAND);
+       cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+       pci_write_config32(usb1, PCI_COMMAND, cmd);
+
+       /* USB3 Controller */
+       pci_write_config32(usb3, PCI_BASE_ADDRESS_0,
+                          PCH_XHCI_TEMP_BAR0);
+       cmd = pci_read_config32(usb3, PCI_COMMAND);
+       cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+       pci_write_config32(usb3, PCI_COMMAND, cmd);
+}
+
+static int report_bist_failure(void)
+{
+       if (gd->arch.bist != 0) {
+               post_code(POST_BIST_FAILURE);
+               printf("BIST failed: %08x\n", gd->arch.bist);
+               return -EFAULT;
+       }
+
+       return 0;
+}
+
+int print_cpuinfo(void)
+{
+       enum pei_boot_mode_t boot_mode = PEI_BOOT_NONE;
+       char processor_name[CPU_MAX_NAME_LEN];
+       const char *name;
+       uint32_t pm1_cnt;
+       uint16_t pm1_sts;
+       int ret;
+
+       /* Halt if there was a built in self test failure */
+       ret = report_bist_failure();
+       if (ret)
+               return ret;
+
+       enable_lapic();
+
+       ret = microcode_update_intel();
+       if (ret)
+               return ret;
+
+       /* Enable upper 128bytes of CMOS */
+       writel(1 << 2, RCB_REG(RC));
+
+       /* TODO: cmos_post_init() */
+       if (readl(MCHBAR_REG(SSKPD)) == 0xCAFE) {
+               debug("soft reset detected\n");
+               boot_mode = PEI_BOOT_SOFT_RESET;
+
+               /* System is not happy after keyboard reset... */
+               debug("Issuing CF9 warm reset\n");
+               outb(0x6, 0xcf9);
+               cpu_hlt();
+       }
+
+       /* Early chipset init required before RAM init can work */
+       sandybridge_early_init(SANDYBRIDGE_MOBILE);
+
+       /* Check PM1_STS[15] to see if we are waking from Sx */
+       pm1_sts = inw(DEFAULT_PMBASE + PM1_STS);
+
+       /* Read PM1_CNT[12:10] to determine which Sx state */
+       pm1_cnt = inl(DEFAULT_PMBASE + PM1_CNT);
+
+       if ((pm1_sts & WAK_STS) && ((pm1_cnt >> 10) & 7) == 5) {
+#if CONFIG_HAVE_ACPI_RESUME
+               debug("Resume from S3 detected.\n");
+               boot_mode = PEI_BOOT_RESUME;
+               /* Clear SLP_TYPE. This will break stage2 but
+                * we care for that when we get there.
+                */
+               outl(pm1_cnt & ~(7 << 10), DEFAULT_PMBASE + PM1_CNT);
+#else
+               debug("Resume from S3 detected, but disabled.\n");
+#endif
+       } else {
+               /*
+                * TODO: An indication of life might be possible here (e.g.
+                * keyboard light)
+                */
+       }
+       post_code(POST_EARLY_INIT);
+
+       /* Enable SPD ROMs and DDR-III DRAM */
+       ret = enable_smbus();
+       if (ret)
+               return ret;
+
+       /* Prepare USB controller early in S3 resume */
+       if (boot_mode == PEI_BOOT_RESUME)
+               enable_usb_bar();
+
+       gd->arch.pei_boot_mode = boot_mode;
+
+       /* TODO: Move this to the board or driver */
+       pci_write_config32(PCH_LPC_DEV, GPIO_BASE, DEFAULT_GPIOBASE | 1);
+       pci_write_config32(PCH_LPC_DEV, GPIO_CNTL, 0x10);
+
+       /* Print processor name */
+       name = cpu_get_name(processor_name);
+       printf("CPU:   %s\n", name);
+
+       post_code(POST_CPU_INFO);
+
+       return 0;
+}
diff --git a/arch/x86/cpu/ivybridge/early_init.c b/arch/x86/cpu/ivybridge/early_init.c
new file mode 100644 (file)
index 0000000..eb8f613
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * From Coreboot
+ *
+ * Copyright (C) 2007-2010 coresystems GmbH
+ * Copyright (C) 2011 Google Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+#include <asm/arch/sandybridge.h>
+
+static void sandybridge_setup_bars(pci_dev_t pch_dev, pci_dev_t lpc_dev)
+{
+       /* Setting up Southbridge. In the northbridge code. */
+       debug("Setting up static southbridge registers\n");
+       pci_write_config32(lpc_dev, PCH_RCBA_BASE, DEFAULT_RCBA | 1);
+
+       pci_write_config32(lpc_dev, PMBASE, DEFAULT_PMBASE | 1);
+       pci_write_config8(lpc_dev, ACPI_CNTL, 0x80); /* Enable ACPI BAR */
+
+       debug("Disabling watchdog reboot\n");
+       setbits_le32(RCB_REG(GCS), 1 >> 5);     /* No reset */
+       outw(1 << 11, DEFAULT_PMBASE | 0x60 | 0x08);    /* halt timer */
+
+       /* Set up all hardcoded northbridge BARs */
+       debug("Setting up static registers\n");
+       pci_write_config32(pch_dev, EPBAR, DEFAULT_EPBAR | 1);
+       pci_write_config32(pch_dev, EPBAR + 4, (0LL + DEFAULT_EPBAR) >> 32);
+       pci_write_config32(pch_dev, MCHBAR, DEFAULT_MCHBAR | 1);
+       pci_write_config32(pch_dev, MCHBAR + 4, (0LL + DEFAULT_MCHBAR) >> 32);
+       /* 64MB - busses 0-63 */
+       pci_write_config32(pch_dev, PCIEXBAR, DEFAULT_PCIEXBAR | 5);
+       pci_write_config32(pch_dev, PCIEXBAR + 4,
+                          (0LL + DEFAULT_PCIEXBAR) >> 32);
+       pci_write_config32(pch_dev, DMIBAR, DEFAULT_DMIBAR | 1);
+       pci_write_config32(pch_dev, DMIBAR + 4, (0LL + DEFAULT_DMIBAR) >> 32);
+
+       /* Set C0000-FFFFF to access RAM on both reads and writes */
+       pci_write_config8(pch_dev, PAM0, 0x30);
+       pci_write_config8(pch_dev, PAM1, 0x33);
+       pci_write_config8(pch_dev, PAM2, 0x33);
+       pci_write_config8(pch_dev, PAM3, 0x33);
+       pci_write_config8(pch_dev, PAM4, 0x33);
+       pci_write_config8(pch_dev, PAM5, 0x33);
+       pci_write_config8(pch_dev, PAM6, 0x33);
+}
+
+static void sandybridge_setup_graphics(pci_dev_t pch_dev, pci_dev_t video_dev)
+{
+       u32 reg32;
+       u16 reg16;
+       u8 reg8;
+
+       reg16 = pci_read_config16(video_dev, PCI_DEVICE_ID);
+       switch (reg16) {
+       case 0x0102: /* GT1 Desktop */
+       case 0x0106: /* GT1 Mobile */
+       case 0x010a: /* GT1 Server */
+       case 0x0112: /* GT2 Desktop */
+       case 0x0116: /* GT2 Mobile */
+       case 0x0122: /* GT2 Desktop >=1.3GHz */
+       case 0x0126: /* GT2 Mobile >=1.3GHz */
+       case 0x0156: /* IvyBridge */
+       case 0x0166: /* IvyBridge */
+               break;
+       default:
+               debug("Graphics not supported by this CPU/chipset\n");
+               return;
+       }
+
+       debug("Initialising Graphics\n");
+
+       /* Setup IGD memory by setting GGC[7:3] = 1 for 32MB */
+       reg16 = pci_read_config16(pch_dev, GGC);
+       reg16 &= ~0x00f8;
+       reg16 |= 1 << 3;
+       /* Program GTT memory by setting GGC[9:8] = 2MB */
+       reg16 &= ~0x0300;
+       reg16 |= 2 << 8;
+       /* Enable VGA decode */
+       reg16 &= ~0x0002;
+       pci_write_config16(pch_dev, GGC, reg16);
+
+       /* Enable 256MB aperture */
+       reg8 = pci_read_config8(video_dev, MSAC);
+       reg8 &= ~0x06;
+       reg8 |= 0x02;
+       pci_write_config8(video_dev, MSAC, reg8);
+
+       /* Erratum workarounds */
+       reg32 = readl(MCHBAR_REG(0x5f00));
+       reg32 |= (1 << 9) | (1 << 10);
+       writel(reg32, MCHBAR_REG(0x5f00));
+
+       /* Enable SA Clock Gating */
+       reg32 = readl(MCHBAR_REG(0x5f00));
+       writel(reg32 | 1, MCHBAR_REG(0x5f00));
+
+       /* GPU RC6 workaround for sighting 366252 */
+       reg32 = readl(MCHBAR_REG(0x5d14));
+       reg32 |= (1 << 31);
+       writel(reg32, MCHBAR_REG(0x5d14));
+
+       /* VLW */
+       reg32 = readl(MCHBAR_REG(0x6120));
+       reg32 &= ~(1 << 0);
+       writel(reg32, MCHBAR_REG(0x6120));
+
+       reg32 = readl(MCHBAR_REG(0x5418));
+       reg32 |= (1 << 4) | (1 << 5);
+       writel(reg32, MCHBAR_REG(0x5418));
+}
+
+void sandybridge_early_init(int chipset_type)
+{
+       pci_dev_t pch_dev = PCH_DEV;
+       pci_dev_t video_dev = PCH_VIDEO_DEV;
+       pci_dev_t lpc_dev = PCH_LPC_DEV;
+       u32 capid0_a;
+       u8 reg8;
+
+       /* Device ID Override Enable should be done very early */
+       capid0_a = pci_read_config32(pch_dev, 0xe4);
+       if (capid0_a & (1 << 10)) {
+               reg8 = pci_read_config8(pch_dev, 0xf3);
+               reg8 &= ~7; /* Clear 2:0 */
+
+               if (chipset_type == SANDYBRIDGE_MOBILE)
+                       reg8 |= 1; /* Set bit 0 */
+
+               pci_write_config8(pch_dev, 0xf3, reg8);
+       }
+
+       /* Setup all BARs required for early PCIe and raminit */
+       sandybridge_setup_bars(pch_dev, lpc_dev);
+
+       /* Device Enable */
+       pci_write_config32(pch_dev, DEVEN, DEVEN_HOST | DEVEN_IGD);
+
+       sandybridge_setup_graphics(pch_dev, video_dev);
+}
diff --git a/arch/x86/cpu/ivybridge/early_me.c b/arch/x86/cpu/ivybridge/early_me.c
new file mode 100644 (file)
index 0000000..b24dea1
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * From Coreboot src/southbridge/intel/bd82x6x/early_me.c
+ *
+ * Copyright (C) 2011 The Chromium OS Authors. All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <asm/pci.h>
+#include <asm/processor.h>
+#include <asm/arch/me.h>
+#include <asm/arch/pch.h>
+#include <asm/io.h>
+
+static const char *const me_ack_values[] = {
+       [ME_HFS_ACK_NO_DID]     = "No DID Ack received",
+       [ME_HFS_ACK_RESET]      = "Non-power cycle reset",
+       [ME_HFS_ACK_PWR_CYCLE]  = "Power cycle reset",
+       [ME_HFS_ACK_S3]         = "Go to S3",
+       [ME_HFS_ACK_S4]         = "Go to S4",
+       [ME_HFS_ACK_S5]         = "Go to S5",
+       [ME_HFS_ACK_GBL_RESET]  = "Global Reset",
+       [ME_HFS_ACK_CONTINUE]   = "Continue to boot"
+};
+
+static inline void pci_read_dword_ptr(void *ptr, int offset)
+{
+       u32 dword;
+
+       dword = pci_read_config32(PCH_ME_DEV, offset);
+       memcpy(ptr, &dword, sizeof(dword));
+}
+
+static inline void pci_write_dword_ptr(void *ptr, int offset)
+{
+       u32 dword = 0;
+       memcpy(&dword, ptr, sizeof(dword));
+       pci_write_config32(PCH_ME_DEV, offset, dword);
+}
+
+void intel_early_me_status(void)
+{
+       struct me_hfs hfs;
+       struct me_gmes gmes;
+
+       pci_read_dword_ptr(&hfs, PCI_ME_HFS);
+       pci_read_dword_ptr(&gmes, PCI_ME_GMES);
+
+       intel_me_status(&hfs, &gmes);
+}
+
+int intel_early_me_init(void)
+{
+       int count;
+       struct me_uma uma;
+       struct me_hfs hfs;
+
+       debug("Intel ME early init\n");
+
+       /* Wait for ME UMA SIZE VALID bit to be set */
+       for (count = ME_RETRY; count > 0; --count) {
+               pci_read_dword_ptr(&uma, PCI_ME_UMA);
+               if (uma.valid)
+                       break;
+               udelay(ME_DELAY);
+       }
+       if (!count) {
+               printf("ERROR: ME is not ready!\n");
+               return -EBUSY;
+       }
+
+       /* Check for valid firmware */
+       pci_read_dword_ptr(&hfs, PCI_ME_HFS);
+       if (hfs.fpt_bad) {
+               printf("WARNING: ME has bad firmware\n");
+               return -EBADF;
+       }
+
+       debug("Intel ME firmware is ready\n");
+
+       return 0;
+}
+
+int intel_early_me_uma_size(void)
+{
+       struct me_uma uma;
+
+       pci_read_dword_ptr(&uma, PCI_ME_UMA);
+       if (uma.valid) {
+               debug("ME: Requested %uMB UMA\n", uma.size);
+               return uma.size;
+       }
+
+       debug("ME: Invalid UMA size\n");
+       return -EINVAL;
+}
+
+static inline void set_global_reset(int enable)
+{
+       u32 etr3;
+
+       etr3 = pci_read_config32(PCH_LPC_DEV, ETR3);
+
+       /* Clear CF9 Without Resume Well Reset Enable */
+       etr3 &= ~ETR3_CWORWRE;
+
+       /* CF9GR indicates a Global Reset */
+       if (enable)
+               etr3 |= ETR3_CF9GR;
+       else
+               etr3 &= ~ETR3_CF9GR;
+
+       pci_write_config32(PCH_LPC_DEV, ETR3, etr3);
+}
+
+int intel_early_me_init_done(u8 status)
+{
+       u8 reset;
+       int count;
+       u32 mebase_l, mebase_h;
+       struct me_hfs hfs;
+       struct me_did did = {
+               .init_done = ME_INIT_DONE,
+               .status = status
+       };
+
+       /* MEBASE from MESEG_BASE[35:20] */
+       mebase_l = pci_read_config32(PCH_DEV, PCI_CPU_MEBASE_L);
+       mebase_h = pci_read_config32(PCH_DEV, PCI_CPU_MEBASE_H);
+       mebase_h &= 0xf;
+       did.uma_base = (mebase_l >> 20) | (mebase_h << 12);
+
+       /* Send message to ME */
+       debug("ME: Sending Init Done with status: %d, UMA base: 0x%04x\n",
+             status, did.uma_base);
+
+       pci_write_dword_ptr(&did, PCI_ME_H_GS);
+
+       /* Must wait for ME acknowledgement */
+       for (count = ME_RETRY; count > 0; --count) {
+               pci_read_dword_ptr(&hfs, PCI_ME_HFS);
+               if (hfs.bios_msg_ack)
+                       break;
+               udelay(ME_DELAY);
+       }
+       if (!count) {
+               printf("ERROR: ME failed to respond\n");
+               return -1;
+       }
+
+       /* Return the requested BIOS action */
+       debug("ME: Requested BIOS Action: %s\n", me_ack_values[hfs.ack_data]);
+
+       /* Check status after acknowledgement */
+       intel_early_me_status();
+
+       reset = 0;
+       switch (hfs.ack_data) {
+       case ME_HFS_ACK_CONTINUE:
+               /* Continue to boot */
+               return 0;
+       case ME_HFS_ACK_RESET:
+               /* Non-power cycle reset */
+               set_global_reset(0);
+               reset = 0x06;
+               break;
+       case ME_HFS_ACK_PWR_CYCLE:
+               /* Power cycle reset */
+               set_global_reset(0);
+               reset = 0x0e;
+               break;
+       case ME_HFS_ACK_GBL_RESET:
+               /* Global reset */
+               set_global_reset(1);
+               reset = 0x0e;
+               break;
+       case ME_HFS_ACK_S3:
+       case ME_HFS_ACK_S4:
+       case ME_HFS_ACK_S5:
+               break;
+       }
+
+       /* Perform the requested reset */
+       if (reset) {
+               outb(reset, 0xcf9);
+               cpu_hlt();
+       }
+       return -1;
+}
diff --git a/arch/x86/cpu/ivybridge/gma.c b/arch/x86/cpu/ivybridge/gma.c
new file mode 100644 (file)
index 0000000..6cf9654
--- /dev/null
@@ -0,0 +1,770 @@
+/*
+ * From Coreboot file of the same name
+ *
+ * Copyright (C) 2011 Chromium OS Authors
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <bios_emul.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <pci_rom.h>
+#include <asm/io.h>
+#include <asm/mtrr.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+#include <asm/arch/sandybridge.h>
+#include <linux/kconfig.h>
+
+struct gt_powermeter {
+       u16 reg;
+       u32 value;
+};
+
+static const struct gt_powermeter snb_pm_gt1[] = {
+       { 0xa200, 0xcc000000 },
+       { 0xa204, 0x07000040 },
+       { 0xa208, 0x0000fe00 },
+       { 0xa20c, 0x00000000 },
+       { 0xa210, 0x17000000 },
+       { 0xa214, 0x00000021 },
+       { 0xa218, 0x0817fe19 },
+       { 0xa21c, 0x00000000 },
+       { 0xa220, 0x00000000 },
+       { 0xa224, 0xcc000000 },
+       { 0xa228, 0x07000040 },
+       { 0xa22c, 0x0000fe00 },
+       { 0xa230, 0x00000000 },
+       { 0xa234, 0x17000000 },
+       { 0xa238, 0x00000021 },
+       { 0xa23c, 0x0817fe19 },
+       { 0xa240, 0x00000000 },
+       { 0xa244, 0x00000000 },
+       { 0xa248, 0x8000421e },
+       { 0 }
+};
+
+static const struct gt_powermeter snb_pm_gt2[] = {
+       { 0xa200, 0x330000a6 },
+       { 0xa204, 0x402d0031 },
+       { 0xa208, 0x00165f83 },
+       { 0xa20c, 0xf1000000 },
+       { 0xa210, 0x00000000 },
+       { 0xa214, 0x00160016 },
+       { 0xa218, 0x002a002b },
+       { 0xa21c, 0x00000000 },
+       { 0xa220, 0x00000000 },
+       { 0xa224, 0x330000a6 },
+       { 0xa228, 0x402d0031 },
+       { 0xa22c, 0x00165f83 },
+       { 0xa230, 0xf1000000 },
+       { 0xa234, 0x00000000 },
+       { 0xa238, 0x00160016 },
+       { 0xa23c, 0x002a002b },
+       { 0xa240, 0x00000000 },
+       { 0xa244, 0x00000000 },
+       { 0xa248, 0x8000421e },
+       { 0 }
+};
+
+static const struct gt_powermeter ivb_pm_gt1[] = {
+       { 0xa800, 0x00000000 },
+       { 0xa804, 0x00021c00 },
+       { 0xa808, 0x00000403 },
+       { 0xa80c, 0x02001700 },
+       { 0xa810, 0x05000200 },
+       { 0xa814, 0x00000000 },
+       { 0xa818, 0x00690500 },
+       { 0xa81c, 0x0000007f },
+       { 0xa820, 0x01002501 },
+       { 0xa824, 0x00000300 },
+       { 0xa828, 0x01000331 },
+       { 0xa82c, 0x0000000c },
+       { 0xa830, 0x00010016 },
+       { 0xa834, 0x01100101 },
+       { 0xa838, 0x00010103 },
+       { 0xa83c, 0x00041300 },
+       { 0xa840, 0x00000b30 },
+       { 0xa844, 0x00000000 },
+       { 0xa848, 0x7f000000 },
+       { 0xa84c, 0x05000008 },
+       { 0xa850, 0x00000001 },
+       { 0xa854, 0x00000004 },
+       { 0xa858, 0x00000007 },
+       { 0xa85c, 0x00000000 },
+       { 0xa860, 0x00010000 },
+       { 0xa248, 0x0000221e },
+       { 0xa900, 0x00000000 },
+       { 0xa904, 0x00001c00 },
+       { 0xa908, 0x00000000 },
+       { 0xa90c, 0x06000000 },
+       { 0xa910, 0x09000200 },
+       { 0xa914, 0x00000000 },
+       { 0xa918, 0x00590000 },
+       { 0xa91c, 0x00000000 },
+       { 0xa920, 0x04002501 },
+       { 0xa924, 0x00000100 },
+       { 0xa928, 0x03000410 },
+       { 0xa92c, 0x00000000 },
+       { 0xa930, 0x00020000 },
+       { 0xa934, 0x02070106 },
+       { 0xa938, 0x00010100 },
+       { 0xa93c, 0x00401c00 },
+       { 0xa940, 0x00000000 },
+       { 0xa944, 0x00000000 },
+       { 0xa948, 0x10000e00 },
+       { 0xa94c, 0x02000004 },
+       { 0xa950, 0x00000001 },
+       { 0xa954, 0x00000004 },
+       { 0xa960, 0x00060000 },
+       { 0xaa3c, 0x00001c00 },
+       { 0xaa54, 0x00000004 },
+       { 0xaa60, 0x00060000 },
+       { 0 }
+};
+
+static const struct gt_powermeter ivb_pm_gt2[] = {
+       { 0xa800, 0x10000000 },
+       { 0xa804, 0x00033800 },
+       { 0xa808, 0x00000902 },
+       { 0xa80c, 0x0c002f00 },
+       { 0xa810, 0x12000400 },
+       { 0xa814, 0x00000000 },
+       { 0xa818, 0x00d20800 },
+       { 0xa81c, 0x00000002 },
+       { 0xa820, 0x03004b02 },
+       { 0xa824, 0x00000600 },
+       { 0xa828, 0x07000773 },
+       { 0xa82c, 0x00000000 },
+       { 0xa830, 0x00010032 },
+       { 0xa834, 0x1520040d },
+       { 0xa838, 0x00020105 },
+       { 0xa83c, 0x00083700 },
+       { 0xa840, 0x0000151d },
+       { 0xa844, 0x00000000 },
+       { 0xa848, 0x20001b00 },
+       { 0xa84c, 0x0a000010 },
+       { 0xa850, 0x00000000 },
+       { 0xa854, 0x00000008 },
+       { 0xa858, 0x00000008 },
+       { 0xa85c, 0x00000000 },
+       { 0xa860, 0x00020000 },
+       { 0xa248, 0x0000221e },
+       { 0xa900, 0x00000000 },
+       { 0xa904, 0x00003500 },
+       { 0xa908, 0x00000000 },
+       { 0xa90c, 0x0c000000 },
+       { 0xa910, 0x12000500 },
+       { 0xa914, 0x00000000 },
+       { 0xa918, 0x00b20000 },
+       { 0xa91c, 0x00000000 },
+       { 0xa920, 0x08004b02 },
+       { 0xa924, 0x00000200 },
+       { 0xa928, 0x07000820 },
+       { 0xa92c, 0x00000000 },
+       { 0xa930, 0x00030000 },
+       { 0xa934, 0x050f020d },
+       { 0xa938, 0x00020300 },
+       { 0xa93c, 0x00903900 },
+       { 0xa940, 0x00000000 },
+       { 0xa944, 0x00000000 },
+       { 0xa948, 0x20001b00 },
+       { 0xa94c, 0x0a000010 },
+       { 0xa950, 0x00000000 },
+       { 0xa954, 0x00000008 },
+       { 0xa960, 0x00110000 },
+       { 0xaa3c, 0x00003900 },
+       { 0xaa54, 0x00000008 },
+       { 0xaa60, 0x00110000 },
+       { 0 }
+};
+
+static const struct gt_powermeter ivb_pm_gt2_17w[] = {
+       { 0xa800, 0x20000000 },
+       { 0xa804, 0x000e3800 },
+       { 0xa808, 0x00000806 },
+       { 0xa80c, 0x0c002f00 },
+       { 0xa810, 0x0c000800 },
+       { 0xa814, 0x00000000 },
+       { 0xa818, 0x00d20d00 },
+       { 0xa81c, 0x000000ff },
+       { 0xa820, 0x03004b02 },
+       { 0xa824, 0x00000600 },
+       { 0xa828, 0x07000773 },
+       { 0xa82c, 0x00000000 },
+       { 0xa830, 0x00020032 },
+       { 0xa834, 0x1520040d },
+       { 0xa838, 0x00020105 },
+       { 0xa83c, 0x00083700 },
+       { 0xa840, 0x000016ff },
+       { 0xa844, 0x00000000 },
+       { 0xa848, 0xff000000 },
+       { 0xa84c, 0x0a000010 },
+       { 0xa850, 0x00000002 },
+       { 0xa854, 0x00000008 },
+       { 0xa858, 0x0000000f },
+       { 0xa85c, 0x00000000 },
+       { 0xa860, 0x00020000 },
+       { 0xa248, 0x0000221e },
+       { 0xa900, 0x00000000 },
+       { 0xa904, 0x00003800 },
+       { 0xa908, 0x00000000 },
+       { 0xa90c, 0x0c000000 },
+       { 0xa910, 0x12000800 },
+       { 0xa914, 0x00000000 },
+       { 0xa918, 0x00b20000 },
+       { 0xa91c, 0x00000000 },
+       { 0xa920, 0x08004b02 },
+       { 0xa924, 0x00000300 },
+       { 0xa928, 0x01000820 },
+       { 0xa92c, 0x00000000 },
+       { 0xa930, 0x00030000 },
+       { 0xa934, 0x15150406 },
+       { 0xa938, 0x00020300 },
+       { 0xa93c, 0x00903900 },
+       { 0xa940, 0x00000000 },
+       { 0xa944, 0x00000000 },
+       { 0xa948, 0x20001b00 },
+       { 0xa94c, 0x0a000010 },
+       { 0xa950, 0x00000000 },
+       { 0xa954, 0x00000008 },
+       { 0xa960, 0x00110000 },
+       { 0xaa3c, 0x00003900 },
+       { 0xaa54, 0x00000008 },
+       { 0xaa60, 0x00110000 },
+       { 0 }
+};
+
+static const struct gt_powermeter ivb_pm_gt2_35w[] = {
+       { 0xa800, 0x00000000 },
+       { 0xa804, 0x00030400 },
+       { 0xa808, 0x00000806 },
+       { 0xa80c, 0x0c002f00 },
+       { 0xa810, 0x0c000300 },
+       { 0xa814, 0x00000000 },
+       { 0xa818, 0x00d20d00 },
+       { 0xa81c, 0x000000ff },
+       { 0xa820, 0x03004b02 },
+       { 0xa824, 0x00000600 },
+       { 0xa828, 0x07000773 },
+       { 0xa82c, 0x00000000 },
+       { 0xa830, 0x00020032 },
+       { 0xa834, 0x1520040d },
+       { 0xa838, 0x00020105 },
+       { 0xa83c, 0x00083700 },
+       { 0xa840, 0x000016ff },
+       { 0xa844, 0x00000000 },
+       { 0xa848, 0xff000000 },
+       { 0xa84c, 0x0a000010 },
+       { 0xa850, 0x00000001 },
+       { 0xa854, 0x00000008 },
+       { 0xa858, 0x00000008 },
+       { 0xa85c, 0x00000000 },
+       { 0xa860, 0x00020000 },
+       { 0xa248, 0x0000221e },
+       { 0xa900, 0x00000000 },
+       { 0xa904, 0x00003800 },
+       { 0xa908, 0x00000000 },
+       { 0xa90c, 0x0c000000 },
+       { 0xa910, 0x12000800 },
+       { 0xa914, 0x00000000 },
+       { 0xa918, 0x00b20000 },
+       { 0xa91c, 0x00000000 },
+       { 0xa920, 0x08004b02 },
+       { 0xa924, 0x00000300 },
+       { 0xa928, 0x01000820 },
+       { 0xa92c, 0x00000000 },
+       { 0xa930, 0x00030000 },
+       { 0xa934, 0x15150406 },
+       { 0xa938, 0x00020300 },
+       { 0xa93c, 0x00903900 },
+       { 0xa940, 0x00000000 },
+       { 0xa944, 0x00000000 },
+       { 0xa948, 0x20001b00 },
+       { 0xa94c, 0x0a000010 },
+       { 0xa950, 0x00000000 },
+       { 0xa954, 0x00000008 },
+       { 0xa960, 0x00110000 },
+       { 0xaa3c, 0x00003900 },
+       { 0xaa54, 0x00000008 },
+       { 0xaa60, 0x00110000 },
+       { 0 }
+};
+
+/*
+ * Some vga option roms are used for several chipsets but they only have one
+ * PCI ID in their header. If we encounter such an option rom, we need to do
+ * the mapping ourselves.
+ */
+
+u32 map_oprom_vendev(u32 vendev)
+{
+       u32 new_vendev = vendev;
+
+       switch (vendev) {
+       case 0x80860102:                /* GT1 Desktop */
+       case 0x8086010a:                /* GT1 Server */
+       case 0x80860112:                /* GT2 Desktop */
+       case 0x80860116:                /* GT2 Mobile */
+       case 0x80860122:                /* GT2 Desktop >=1.3GHz */
+       case 0x80860126:                /* GT2 Mobile >=1.3GHz */
+       case 0x80860156:                /* IVB */
+       case 0x80860166:                /* IVB */
+               /* Set to GT1 Mobile */
+               new_vendev = 0x80860106;
+               break;
+       }
+
+       return new_vendev;
+}
+
+static inline u32 gtt_read(void *bar, u32 reg)
+{
+       return readl(bar + reg);
+}
+
+static inline void gtt_write(void *bar, u32 reg, u32 data)
+{
+       writel(data, bar + reg);
+}
+
+static void gtt_write_powermeter(void *bar, const struct gt_powermeter *pm)
+{
+       for (; pm && pm->reg; pm++)
+               gtt_write(bar, pm->reg, pm->value);
+}
+
+#define GTT_RETRY 1000
+static int gtt_poll(void *bar, u32 reg, u32 mask, u32 value)
+{
+       unsigned try = GTT_RETRY;
+       u32 data;
+
+       while (try--) {
+               data = gtt_read(bar, reg);
+               if ((data & mask) == value)
+                       return 1;
+               udelay(10);
+       }
+
+       printf("GT init timeout\n");
+       return 0;
+}
+
+static int gma_pm_init_pre_vbios(void *gtt_bar)
+{
+       u32 reg32;
+
+       debug("GT Power Management Init, silicon = %#x\n",
+             bridge_silicon_revision());
+
+       if (bridge_silicon_revision() < IVB_STEP_C0) {
+               /* 1: Enable force wake */
+               gtt_write(gtt_bar, 0xa18c, 0x00000001);
+               gtt_poll(gtt_bar, 0x130090, (1 << 0), (1 << 0));
+       } else {
+               gtt_write(gtt_bar, 0xa180, 1 << 5);
+               gtt_write(gtt_bar, 0xa188, 0xffff0001);
+               gtt_poll(gtt_bar, 0x130040, (1 << 0), (1 << 0));
+       }
+
+       if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_SNB) {
+               /* 1d: Set GTT+0x42004 [15:14]=11 (SnB C1+) */
+               reg32 = gtt_read(gtt_bar, 0x42004);
+               reg32 |= (1 << 14) | (1 << 15);
+               gtt_write(gtt_bar, 0x42004, reg32);
+       }
+
+       if (bridge_silicon_revision() >= IVB_STEP_A0) {
+               /* Display Reset Acknowledge Settings */
+               reg32 = gtt_read(gtt_bar, 0x45010);
+               reg32 |= (1 << 1) | (1 << 0);
+               gtt_write(gtt_bar, 0x45010, reg32);
+       }
+
+       /* 2: Get GT SKU from GTT+0x911c[13] */
+       reg32 = gtt_read(gtt_bar, 0x911c);
+       if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_SNB) {
+               if (reg32 & (1 << 13)) {
+                       debug("SNB GT1 Power Meter Weights\n");
+                       gtt_write_powermeter(gtt_bar, snb_pm_gt1);
+               } else {
+                       debug("SNB GT2 Power Meter Weights\n");
+                       gtt_write_powermeter(gtt_bar, snb_pm_gt2);
+               }
+       } else {
+               u32 unit = readl(MCHBAR_REG(0x5938)) & 0xf;
+
+               if (reg32 & (1 << 13)) {
+                       /* GT1 SKU */
+                       debug("IVB GT1 Power Meter Weights\n");
+                       gtt_write_powermeter(gtt_bar, ivb_pm_gt1);
+               } else {
+                       /* GT2 SKU */
+                       u32 tdp = readl(MCHBAR_REG(0x5930)) & 0x7fff;
+                       tdp /= (1 << unit);
+
+                       if (tdp <= 17) {
+                               /* <=17W ULV */
+                               debug("IVB GT2 17W Power Meter Weights\n");
+                               gtt_write_powermeter(gtt_bar, ivb_pm_gt2_17w);
+                       } else if ((tdp >= 25) && (tdp <= 35)) {
+                               /* 25W-35W */
+                               debug("IVB GT2 25W-35W Power Meter Weights\n");
+                               gtt_write_powermeter(gtt_bar, ivb_pm_gt2_35w);
+                       } else {
+                               /* All others */
+                               debug("IVB GT2 35W Power Meter Weights\n");
+                               gtt_write_powermeter(gtt_bar, ivb_pm_gt2_35w);
+                       }
+               }
+       }
+
+       /* 3: Gear ratio map */
+       gtt_write(gtt_bar, 0xa004, 0x00000010);
+
+       /* 4: GFXPAUSE */
+       gtt_write(gtt_bar, 0xa000, 0x00070020);
+
+       /* 5: Dynamic EU trip control */
+       gtt_write(gtt_bar, 0xa080, 0x00000004);
+
+       /* 6: ECO bits */
+       reg32 = gtt_read(gtt_bar, 0xa180);
+       reg32 |= (1 << 26) | (1 << 31);
+       /* (bit 20=1 for SNB step D1+ / IVB A0+) */
+       if (bridge_silicon_revision() >= SNB_STEP_D1)
+               reg32 |= (1 << 20);
+       gtt_write(gtt_bar, 0xa180, reg32);
+
+       /* 6a: for SnB step D2+ only */
+       if (((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_SNB) &&
+           (bridge_silicon_revision() >= SNB_STEP_D2)) {
+               reg32 = gtt_read(gtt_bar, 0x9400);
+               reg32 |= (1 << 7);
+               gtt_write(gtt_bar, 0x9400, reg32);
+
+               reg32 = gtt_read(gtt_bar, 0x941c);
+               reg32 &= 0xf;
+               reg32 |= (1 << 1);
+               gtt_write(gtt_bar, 0x941c, reg32);
+               gtt_poll(gtt_bar, 0x941c, (1 << 1), (0 << 1));
+       }
+
+       if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_IVB) {
+               reg32 = gtt_read(gtt_bar, 0x907c);
+               reg32 |= (1 << 16);
+               gtt_write(gtt_bar, 0x907c, reg32);
+
+               /* 6b: Clocking reset controls */
+               gtt_write(gtt_bar, 0x9424, 0x00000001);
+       } else {
+               /* 6b: Clocking reset controls */
+               gtt_write(gtt_bar, 0x9424, 0x00000000);
+       }
+
+       /* 7 */
+       if (gtt_poll(gtt_bar, 0x138124, (1 << 31), (0 << 31))) {
+               gtt_write(gtt_bar, 0x138128, 0x00000029); /* Mailbox Data */
+               /* Mailbox Cmd for RC6 VID */
+               gtt_write(gtt_bar, 0x138124, 0x80000004);
+               if (gtt_poll(gtt_bar, 0x138124, (1 << 31), (0 << 31)))
+                       gtt_write(gtt_bar, 0x138124, 0x8000000a);
+               gtt_poll(gtt_bar, 0x138124, (1 << 31), (0 << 31));
+       }
+
+       /* 8 */
+       gtt_write(gtt_bar, 0xa090, 0x00000000); /* RC Control */
+       gtt_write(gtt_bar, 0xa098, 0x03e80000); /* RC1e Wake Rate Limit */
+       gtt_write(gtt_bar, 0xa09c, 0x0028001e); /* RC6/6p Wake Rate Limit */
+       gtt_write(gtt_bar, 0xa0a0, 0x0000001e); /* RC6pp Wake Rate Limit */
+       gtt_write(gtt_bar, 0xa0a8, 0x0001e848); /* RC Evaluation Interval */
+       gtt_write(gtt_bar, 0xa0ac, 0x00000019); /* RC Idle Hysteresis */
+
+       /* 9 */
+       gtt_write(gtt_bar, 0x2054, 0x0000000a); /* Render Idle Max Count */
+       gtt_write(gtt_bar, 0x12054, 0x0000000a); /* Video Idle Max Count */
+       gtt_write(gtt_bar, 0x22054, 0x0000000a); /* Blitter Idle Max Count */
+
+       /* 10 */
+       gtt_write(gtt_bar, 0xa0b0, 0x00000000); /* Unblock Ack to Busy */
+       gtt_write(gtt_bar, 0xa0b4, 0x000003e8); /* RC1e Threshold */
+       gtt_write(gtt_bar, 0xa0b8, 0x0000c350); /* RC6 Threshold */
+       gtt_write(gtt_bar, 0xa0bc, 0x000186a0); /* RC6p Threshold */
+       gtt_write(gtt_bar, 0xa0c0, 0x0000fa00); /* RC6pp Threshold */
+
+       /* 11 */
+       gtt_write(gtt_bar, 0xa010, 0x000f4240); /* RP Down Timeout */
+       gtt_write(gtt_bar, 0xa014, 0x12060000); /* RP Interrupt Limits */
+       gtt_write(gtt_bar, 0xa02c, 0x00015f90); /* RP Up Threshold */
+       gtt_write(gtt_bar, 0xa030, 0x000186a0); /* RP Down Threshold */
+       gtt_write(gtt_bar, 0xa068, 0x000186a0); /* RP Up EI */
+       gtt_write(gtt_bar, 0xa06c, 0x000493e0); /* RP Down EI */
+       gtt_write(gtt_bar, 0xa070, 0x0000000a); /* RP Idle Hysteresis */
+
+       /* 11a: Enable Render Standby (RC6) */
+       if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_IVB) {
+               /*
+                * IvyBridge should also support DeepRenderStandby.
+                *
+                * Unfortunately it does not work reliably on all SKUs so
+                * disable it here and it can be enabled by the kernel.
+                */
+               gtt_write(gtt_bar, 0xa090, 0x88040000); /* HW RC Control */
+       } else {
+               gtt_write(gtt_bar, 0xa090, 0x88040000); /* HW RC Control */
+       }
+
+       /* 12: Normal Frequency Request */
+       /* RPNFREQ_VAL comes from MCHBAR 0x5998 23:16 (8 bits!? use 7) */
+       reg32 = readl(MCHBAR_REG(0x5998));
+       reg32 >>= 16;
+       reg32 &= 0xef;
+       reg32 <<= 25;
+       gtt_write(gtt_bar, 0xa008, reg32);
+
+       /* 13: RP Control */
+       gtt_write(gtt_bar, 0xa024, 0x00000592);
+
+       /* 14: Enable PM Interrupts */
+       gtt_write(gtt_bar, 0x4402c, 0x03000076);
+
+       /* Clear 0x6c024 [8:6] */
+       reg32 = gtt_read(gtt_bar, 0x6c024);
+       reg32 &= ~0x000001c0;
+       gtt_write(gtt_bar, 0x6c024, reg32);
+
+       return 0;
+}
+
+int gma_pm_init_post_vbios(void *gtt_bar, const void *blob, int node)
+{
+       u32 reg32, cycle_delay;
+
+       debug("GT Power Management Init (post VBIOS)\n");
+
+       /* 15: Deassert Force Wake */
+       if (bridge_silicon_revision() < IVB_STEP_C0) {
+               gtt_write(gtt_bar, 0xa18c, gtt_read(gtt_bar, 0xa18c) & ~1);
+               gtt_poll(gtt_bar, 0x130090, (1 << 0), (0 << 0));
+       } else {
+               gtt_write(gtt_bar, 0xa188, 0x1fffe);
+               if (gtt_poll(gtt_bar, 0x130040, (1 << 0), (0 << 0))) {
+                       gtt_write(gtt_bar, 0xa188,
+                                 gtt_read(gtt_bar, 0xa188) | 1);
+               }
+       }
+
+       /* 16: SW RC Control */
+       gtt_write(gtt_bar, 0xa094, 0x00060000);
+
+       /* Setup Digital Port Hotplug */
+       reg32 = gtt_read(gtt_bar, 0xc4030);
+       if (!reg32) {
+               u32 dp_hotplug[3];
+
+               if (fdtdec_get_int_array(blob, node, "intel,dp_hotplug",
+                                        dp_hotplug, ARRAY_SIZE(dp_hotplug)))
+                       return -EINVAL;
+
+               reg32 = (dp_hotplug[0] & 0x7) << 2;
+               reg32 |= (dp_hotplug[0] & 0x7) << 10;
+               reg32 |= (dp_hotplug[0] & 0x7) << 18;
+               gtt_write(gtt_bar, 0xc4030, reg32);
+       }
+
+       /* Setup Panel Power On Delays */
+       reg32 = gtt_read(gtt_bar, 0xc7208);
+       if (!reg32) {
+               reg32 = (unsigned)fdtdec_get_int(blob, node,
+                                                "panel-port-select", 0) << 30;
+               reg32 |= fdtdec_get_int(blob, node, "panel-power-up-delay", 0)
+                               << 16;
+               reg32 |= fdtdec_get_int(blob, node,
+                                       "panel-power-backlight-on-delay", 0);
+               gtt_write(gtt_bar, 0xc7208, reg32);
+       }
+
+       /* Setup Panel Power Off Delays */
+       reg32 = gtt_read(gtt_bar, 0xc720c);
+       if (!reg32) {
+               reg32 = fdtdec_get_int(blob, node, "panel-power-down-delay", 0)
+                               << 16;
+               reg32 |= fdtdec_get_int(blob, node,
+                                       "panel-power-backlight-off-delay", 0);
+               gtt_write(gtt_bar, 0xc720c, reg32);
+       }
+
+       /* Setup Panel Power Cycle Delay */
+       cycle_delay = fdtdec_get_int(blob, node,
+                                    "intel,panel-power-cycle-delay", 0);
+       if (cycle_delay) {
+               reg32 = gtt_read(gtt_bar, 0xc7210);
+               reg32 &= ~0xff;
+               reg32 |= cycle_delay;
+               gtt_write(gtt_bar, 0xc7210, reg32);
+       }
+
+       /* Enable Backlight if needed */
+       reg32 = fdtdec_get_int(blob, node, "intel,cpu-backlight", 0);
+       if (reg32) {
+               gtt_write(gtt_bar, 0x48250, (1 << 31));
+               gtt_write(gtt_bar, 0x48254, reg32);
+       }
+       reg32 = fdtdec_get_int(blob, node, "intel,pch-backlight", 0);
+       if (reg32) {
+               gtt_write(gtt_bar, 0xc8250, (1 << 31));
+               gtt_write(gtt_bar, 0xc8254, reg32);
+       }
+
+       return 0;
+}
+
+/*
+ * Some vga option roms are used for several chipsets but they only have one
+ * PCI ID in their header. If we encounter such an option rom, we need to do
+ * the mapping ourselves.
+ */
+
+uint32_t board_map_oprom_vendev(uint32_t vendev)
+{
+       switch (vendev) {
+       case 0x80860102:                /* GT1 Desktop */
+       case 0x8086010a:                /* GT1 Server */
+       case 0x80860112:                /* GT2 Desktop */
+       case 0x80860116:                /* GT2 Mobile */
+       case 0x80860122:                /* GT2 Desktop >=1.3GHz */
+       case 0x80860126:                /* GT2 Mobile >=1.3GHz */
+       case 0x80860156:                /* IVB */
+       case 0x80860166:                /* IVB */
+               return 0x80860106;      /* GT1 Mobile */
+       }
+
+       return vendev;
+}
+
+static int int15_handler(void)
+{
+       int res = 0;
+
+       debug("%s: INT15 function %04x!\n", __func__, M.x86.R_AX);
+
+       switch (M.x86.R_AX) {
+       case 0x5f34:
+               /*
+                * Set Panel Fitting Hook:
+                *  bit 2 = Graphics Stretching
+                *  bit 1 = Text Stretching
+                *  bit 0 = Centering (do not set with bit1 or bit2)
+                *  0     = video bios default
+                */
+               M.x86.R_AX = 0x005f;
+               M.x86.R_CL = 0x00; /* Use video bios default */
+               res = 1;
+               break;
+       case 0x5f35:
+               /*
+                * Boot Display Device Hook:
+                *  bit 0 = CRT
+                *  bit 1 = TV (eDP)
+                *  bit 2 = EFP
+                *  bit 3 = LFP
+                *  bit 4 = CRT2
+                *  bit 5 = TV2 (eDP)
+                *  bit 6 = EFP2
+                *  bit 7 = LFP2
+                */
+               M.x86.R_AX = 0x005f;
+               M.x86.R_CX = 0x0000; /* Use video bios default */
+               res = 1;
+               break;
+       case 0x5f51:
+               /*
+                * Hook to select active LFP configuration:
+                *  00h = No LVDS, VBIOS does not enable LVDS
+                *  01h = Int-LVDS, LFP driven by integrated LVDS decoder
+                *  02h = SVDO-LVDS, LFP driven by SVDO decoder
+                *  03h = eDP, LFP Driven by Int-DisplayPort encoder
+                */
+               M.x86.R_AX = 0x005f;
+               M.x86.R_CX = 0x0003; /* eDP */
+               res = 1;
+               break;
+       case 0x5f70:
+               switch (M.x86.R_CH) {
+               case 0:
+                       /* Get Mux */
+                       M.x86.R_AX = 0x005f;
+                       M.x86.R_CX = 0x0000;
+                       res = 1;
+                       break;
+               case 1:
+                       /* Set Mux */
+                       M.x86.R_AX = 0x005f;
+                       M.x86.R_CX = 0x0000;
+                       res = 1;
+                       break;
+               case 2:
+                       /* Get SG/Non-SG mode */
+                       M.x86.R_AX = 0x005f;
+                       M.x86.R_CX = 0x0000;
+                       res = 1;
+                       break;
+               default:
+                       /* Interrupt was not handled */
+                       debug("Unknown INT15 5f70 function: 0x%02x\n",
+                             M.x86.R_CH);
+                       break;
+               }
+               break;
+       case 0x5fac:
+               res = 1;
+               break;
+       default:
+               debug("Unknown INT15 function %04x!\n", M.x86.R_AX);
+               break;
+       }
+       return res;
+}
+
+int gma_func0_init(pci_dev_t dev, struct pci_controller *hose,
+                  const void *blob, int node)
+{
+#ifdef CONFIG_VIDEO
+       ulong start;
+#endif
+       void *gtt_bar;
+       ulong base;
+       u32 reg32;
+       int ret;
+
+       /* IGD needs to be Bus Master */
+       reg32 = pci_read_config32(dev, PCI_COMMAND);
+       reg32 |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY | PCI_COMMAND_IO;
+       pci_write_config32(dev, PCI_COMMAND, reg32);
+
+       /* Use write-combining for the graphics memory, 256MB */
+       base = pci_read_bar32(hose, dev, 2);
+       mtrr_add_request(MTRR_TYPE_WRCOMB, base, 256 << 20);
+       mtrr_commit(true);
+
+       gtt_bar = (void *)pci_read_bar32(pci_bus_to_hose(0), dev, 0);
+       debug("GT bar %p\n", gtt_bar);
+       ret = gma_pm_init_pre_vbios(gtt_bar);
+       if (ret)
+               return ret;
+
+#ifdef CONFIG_VIDEO
+       start = get_timer(0);
+       ret = pci_run_vga_bios(dev, int15_handler, false);
+       debug("BIOS ran in %lums\n", get_timer(start));
+#endif
+       /* Post VBIOS init */
+       ret = gma_pm_init_post_vbios(gtt_bar, blob, node);
+       if (ret)
+               return ret;
+
+       return 0;
+}
diff --git a/arch/x86/cpu/ivybridge/gma.h b/arch/x86/cpu/ivybridge/gma.h
new file mode 100644 (file)
index 0000000..e7ec649
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ * From Coreboot file of the same name
+ *
+ * Copyright (C) 2012 Chromium OS Authors
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+/* mailbox 0: header */
+__packed struct opregion_header {
+       u8      signature[16];
+       u32     size;
+       u32     version;
+       u8      sbios_version[32];
+       u8      vbios_version[16];
+       u8      driver_version[16];
+       u32     mailboxes;
+       u8      reserved[164];
+};
+
+#define IGD_OPREGION_SIGNATURE "IntelGraphicsMem"
+#define IGD_OPREGION_VERSION  2
+
+#define IGD_MBOX1      (1 << 0)
+#define IGD_MBOX2      (1 << 1)
+#define IGD_MBOX3      (1 << 2)
+#define IGD_MBOX4      (1 << 3)
+#define IGD_MBOX5      (1 << 4)
+
+#define MAILBOXES_MOBILE  (IGD_MBOX1 | IGD_MBOX2 | IGD_MBOX3 | \
+                          IGD_MBOX4 | IGD_MBOX5)
+#define MAILBOXES_DESKTOP (IGD_MBOX2 | IGD_MBOX4)
+
+#define SBIOS_VERSION_SIZE 32
+
+/* mailbox 1: public acpi methods */
+__packed struct opregion_mailbox1 {
+       u32     drdy;
+       u32     csts;
+       u32     cevt;
+       u8      reserved1[20];
+       u32     didl[8];
+       u32     cpdl[8];
+       u32     cadl[8];
+       u32     nadl[8];
+       u32     aslp;
+       u32     tidx;
+       u32     chpd;
+       u32     clid;
+       u32     cdck;
+       u32     sxsw;
+       u32     evts;
+       u32     cnot;
+       u32     nrdy;
+       u8      reserved2[60];
+};
+
+/* mailbox 2: software sci interface */
+__packed struct opregion_mailbox2 {
+       u32     scic;
+       u32     parm;
+       u32     dslp;
+       u8      reserved[244];
+};
+
+/* mailbox 3: power conservation */
+__packed struct opregion_mailbox3 {
+       u32     ardy;
+       u32     aslc;
+       u32     tche;
+       u32     alsi;
+       u32     bclp;
+       u32     pfit;
+       u32     cblv;
+       u16     bclm[20];
+       u32     cpfm;
+       u32     epfm;
+       u8      plut[74];
+       u32     pfmb;
+       u32     ccdv;
+       u32     pcft;
+       u8      reserved[94];
+};
+
+#define IGD_BACKLIGHT_BRIGHTNESS 0xff
+#define IGD_INITIAL_BRIGHTNESS 0x64
+
+#define IGD_FIELD_VALID        (1 << 31)
+#define IGD_WORD_FIELD_VALID (1 << 15)
+#define IGD_PFIT_STRETCH 6
+
+/* mailbox 4: vbt */
+__packed struct {
+       u8 gvd1[7168];
+} opregion_vbt_t;
+
+/* IGD OpRegion */
+__packed struct igd_opregion {
+       opregion_header_t header;
+       opregion_mailbox1_t mailbox1;
+       opregion_mailbox2_t mailbox2;
+       opregion_mailbox3_t mailbox3;
+       opregion_vbt_t vbt;
+};
+
+/* Intel Video BIOS (Option ROM) */
+__packed struct optionrom_header {
+       u16     signature;
+       u8      size;
+       u8      reserved[21];
+       u16     pcir_offset;
+       u16     vbt_offset;
+};
+
+#define OPROM_SIGNATURE 0xaa55
+
+__packed struct optionrom_pcir {
+       u32 signature;
+       u16 vendor;
+       u16 device;
+       u16 reserved1;
+       u16 length;
+       u8  revision;
+       u8  classcode[3];
+       u16 imagelength;
+       u16 coderevision;
+       u8  codetype;
+       u8  indicator;
+       u16 reserved2;
+};
+
+__packed struct optionrom_vbt {
+       u8  hdr_signature[20];
+       u16 hdr_version;
+       u16 hdr_size;
+       u16 hdr_vbt_size;
+       u8  hdr_vbt_checksum;
+       u8  hdr_reserved;
+       u32 hdr_vbt_datablock;
+       u32 hdr_aim[4];
+       u8  datahdr_signature[16];
+       u16 datahdr_version;
+       u16 datahdr_size;
+       u16 datahdr_datablocksize;
+       u8  coreblock_id;
+       u16 coreblock_size;
+       u16 coreblock_biossize;
+       u8  coreblock_biostype;
+       u8  coreblock_releasestatus;
+       u8  coreblock_hwsupported;
+       u8  coreblock_integratedhw;
+       u8  coreblock_biosbuild[4];
+       u8  coreblock_biossignon[155];
+};
+
+#define VBT_SIGNATURE 0x54425624
diff --git a/arch/x86/cpu/ivybridge/lpc.c b/arch/x86/cpu/ivybridge/lpc.c
new file mode 100644 (file)
index 0000000..43fdd31
--- /dev/null
@@ -0,0 +1,569 @@
+/*
+ * From coreboot southbridge/intel/bd82x6x/lpc.c
+ *
+ * Copyright (C) 2008-2009 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <rtc.h>
+#include <pci.h>
+#include <asm/acpi.h>
+#include <asm/interrupt.h>
+#include <asm/io.h>
+#include <asm/ioapic.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+
+#define NMI_OFF                                0
+
+#define ENABLE_ACPI_MODE_IN_COREBOOT   0
+#define TEST_SMM_FLASH_LOCKDOWN                0
+
+static int pch_enable_apic(pci_dev_t dev)
+{
+       u32 reg32;
+       int i;
+
+       /* Enable ACPI I/O and power management. Set SCI IRQ to IRQ9 */
+       pci_write_config8(dev, ACPI_CNTL, 0x80);
+
+       writel(0, IO_APIC_INDEX);
+       writel(1 << 25, IO_APIC_DATA);
+
+       /* affirm full set of redirection table entries ("write once") */
+       writel(1, IO_APIC_INDEX);
+       reg32 = readl(IO_APIC_DATA);
+       writel(1, IO_APIC_INDEX);
+       writel(reg32, IO_APIC_DATA);
+
+       writel(0, IO_APIC_INDEX);
+       reg32 = readl(IO_APIC_DATA);
+       debug("PCH APIC ID = %x\n", (reg32 >> 24) & 0x0f);
+       if (reg32 != (1 << 25)) {
+               printf("APIC Error - cannot write to registers\n");
+               return -EPERM;
+       }
+
+       debug("Dumping IOAPIC registers\n");
+       for (i = 0;  i < 3; i++) {
+               writel(i, IO_APIC_INDEX);
+               debug("  reg 0x%04x:", i);
+               reg32 = readl(IO_APIC_DATA);
+               debug(" 0x%08x\n", reg32);
+       }
+
+       /* Select Boot Configuration register. */
+       writel(3, IO_APIC_INDEX);
+
+       /* Use Processor System Bus to deliver interrupts. */
+       writel(1, IO_APIC_DATA);
+
+       return 0;
+}
+
+static void pch_enable_serial_irqs(pci_dev_t dev)
+{
+       u32 value;
+
+       /* Set packet length and toggle silent mode bit for one frame. */
+       value = (1 << 7) | (1 << 6) | ((21 - 17) << 2) | (0 << 0);
+#ifdef CONFIG_SERIRQ_CONTINUOUS_MODE
+       pci_write_config8(dev, SERIRQ_CNTL, value);
+#else
+       pci_write_config8(dev, SERIRQ_CNTL, value | (1 << 6));
+#endif
+}
+
+static int pch_pirq_init(const void *blob, int node, pci_dev_t dev)
+{
+       uint8_t route[8], *ptr;
+
+       if (fdtdec_get_byte_array(blob, node, "intel,pirq-routing", route,
+                                 sizeof(route)))
+               return -EINVAL;
+       ptr = route;
+       pci_write_config8(dev, PIRQA_ROUT, *ptr++);
+       pci_write_config8(dev, PIRQB_ROUT, *ptr++);
+       pci_write_config8(dev, PIRQC_ROUT, *ptr++);
+       pci_write_config8(dev, PIRQD_ROUT, *ptr++);
+
+       pci_write_config8(dev, PIRQE_ROUT, *ptr++);
+       pci_write_config8(dev, PIRQF_ROUT, *ptr++);
+       pci_write_config8(dev, PIRQG_ROUT, *ptr++);
+       pci_write_config8(dev, PIRQH_ROUT, *ptr++);
+
+       /*
+        * TODO(sjg@chromium.org): U-Boot does not set up the interrupts
+        * here. It's unclear if it is needed
+        */
+       return 0;
+}
+
+static int pch_gpi_routing(const void *blob, int node, pci_dev_t dev)
+{
+       u8 route[16];
+       u32 reg;
+       int gpi;
+
+       if (fdtdec_get_byte_array(blob, node, "intel,gpi-routing", route,
+                                 sizeof(route)))
+               return -EINVAL;
+
+       for (reg = 0, gpi = 0; gpi < ARRAY_SIZE(route); gpi++)
+               reg |= route[gpi] << (gpi * 2);
+
+       pci_write_config32(dev, 0xb8, reg);
+
+       return 0;
+}
+
+static int pch_power_options(const void *blob, int node, pci_dev_t dev)
+{
+       u8 reg8;
+       u16 reg16, pmbase;
+       u32 reg32;
+       const char *state;
+       int pwr_on;
+       int nmi_option;
+       int ret;
+
+       /*
+        * Which state do we want to goto after g3 (power restored)?
+        * 0 == S0 Full On
+        * 1 == S5 Soft Off
+        *
+        * If the option is not existent (Laptops), use Kconfig setting.
+        * TODO(sjg@chromium.org): Make this configurable
+        */
+       pwr_on = MAINBOARD_POWER_ON;
+
+       reg16 = pci_read_config16(dev, GEN_PMCON_3);
+       reg16 &= 0xfffe;
+       switch (pwr_on) {
+       case MAINBOARD_POWER_OFF:
+               reg16 |= 1;
+               state = "off";
+               break;
+       case MAINBOARD_POWER_ON:
+               reg16 &= ~1;
+               state = "on";
+               break;
+       case MAINBOARD_POWER_KEEP:
+               reg16 &= ~1;
+               state = "state keep";
+               break;
+       default:
+               state = "undefined";
+       }
+
+       reg16 &= ~(3 << 4);     /* SLP_S4# Assertion Stretch 4s */
+       reg16 |= (1 << 3);      /* SLP_S4# Assertion Stretch Enable */
+
+       reg16 &= ~(1 << 10);
+       reg16 |= (1 << 11);     /* SLP_S3# Min Assertion Width 50ms */
+
+       reg16 |= (1 << 12);     /* Disable SLP stretch after SUS well */
+
+       pci_write_config16(dev, GEN_PMCON_3, reg16);
+       debug("Set power %s after power failure.\n", state);
+
+       /* Set up NMI on errors. */
+       reg8 = inb(0x61);
+       reg8 &= 0x0f;           /* Higher Nibble must be 0 */
+       reg8 &= ~(1 << 3);      /* IOCHK# NMI Enable */
+       reg8 |= (1 << 2); /* PCI SERR# Disable for now */
+       outb(reg8, 0x61);
+
+       reg8 = inb(0x70);
+       /* TODO(sjg@chromium.org): Make this configurable */
+       nmi_option = NMI_OFF;
+       if (nmi_option) {
+               debug("NMI sources enabled.\n");
+               reg8 &= ~(1 << 7);      /* Set NMI. */
+       } else {
+               debug("NMI sources disabled.\n");
+               /* Can't mask NMI from PCI-E and NMI_NOW */
+               reg8 |= (1 << 7);
+       }
+       outb(reg8, 0x70);
+
+       /* Enable CPU_SLP# and Intel Speedstep, set SMI# rate down */
+       reg16 = pci_read_config16(dev, GEN_PMCON_1);
+       reg16 &= ~(3 << 0);     /* SMI# rate 1 minute */
+       reg16 &= ~(1 << 10);    /* Disable BIOS_PCI_EXP_EN for native PME */
+#if DEBUG_PERIODIC_SMIS
+       /* Set DEBUG_PERIODIC_SMIS in pch.h to debug using periodic SMIs */
+       reg16 |= (3 << 0);      /* Periodic SMI every 8s */
+#endif
+       pci_write_config16(dev, GEN_PMCON_1, reg16);
+
+       /* Set the board's GPI routing. */
+       ret = pch_gpi_routing(blob, node, dev);
+       if (ret)
+               return ret;
+
+       pmbase = pci_read_config16(dev, 0x40) & 0xfffe;
+
+       writel(pmbase + GPE0_EN, fdtdec_get_int(blob, node,
+                                               "intel,gpe0-enable", 0));
+       writew(pmbase + ALT_GP_SMI_EN, fdtdec_get_int(blob, node,
+                                               "intel,alt-gp-smi-enable", 0));
+
+       /* Set up power management block and determine sleep mode */
+       reg32 = inl(pmbase + 0x04); /* PM1_CNT */
+       reg32 &= ~(7 << 10);    /* SLP_TYP */
+       reg32 |= (1 << 0);      /* SCI_EN */
+       outl(reg32, pmbase + 0x04);
+
+       /* Clear magic status bits to prevent unexpected wake */
+       setbits_le32(RCB_REG(0x3310), (1 << 4) | (1 << 5) | (1 << 0));
+       clrbits_le32(RCB_REG(0x3f02), 0xf);
+
+       return 0;
+}
+
+static void pch_rtc_init(pci_dev_t dev)
+{
+       int rtc_failed;
+       u8 reg8;
+
+       reg8 = pci_read_config8(dev, GEN_PMCON_3);
+       rtc_failed = reg8 & RTC_BATTERY_DEAD;
+       if (rtc_failed) {
+               reg8 &= ~RTC_BATTERY_DEAD;
+               pci_write_config8(dev, GEN_PMCON_3, reg8);
+       }
+       debug("rtc_failed = 0x%x\n", rtc_failed);
+
+#if CONFIG_HAVE_ACPI_RESUME
+       /* Avoid clearing pending interrupts and resetting the RTC control
+        * register in the resume path because the Linux kernel relies on
+        * this to know if it should restart the RTC timerqueue if the wake
+        * was due to the RTC alarm.
+        */
+       if (acpi_get_slp_type() == 3)
+               return;
+#endif
+       /* TODO: Handle power failure */
+       if (rtc_failed)
+               printf("RTC power failed\n");
+       rtc_init();
+}
+
+/* CougarPoint PCH Power Management init */
+static void cpt_pm_init(pci_dev_t dev)
+{
+       debug("CougarPoint PM init\n");
+       pci_write_config8(dev, 0xa9, 0x47);
+       setbits_le32(RCB_REG(0x2238), (1 << 6) | (1 << 0));
+
+       setbits_le32(RCB_REG(0x228c), 1 << 0);
+       setbits_le32(RCB_REG(0x1100), (1 << 13) | (1 << 14));
+       setbits_le32(RCB_REG(0x0900), 1 << 14);
+       writel(0xc0388400, RCB_REG(0x2304));
+       setbits_le32(RCB_REG(0x2314), (1 << 5) | (1 << 18));
+       setbits_le32(RCB_REG(0x2320), (1 << 15) | (1 << 1));
+       clrsetbits_le32(RCB_REG(0x3314), ~0x1f, 0xf);
+       writel(0x050f0000, RCB_REG(0x3318));
+       writel(0x04000000, RCB_REG(0x3324));
+       setbits_le32(RCB_REG(0x3340), 0xfffff);
+       setbits_le32(RCB_REG(0x3344), 1 << 1);
+
+       writel(0x0001c000, RCB_REG(0x3360));
+       writel(0x00061100, RCB_REG(0x3368));
+       writel(0x7f8fdfff, RCB_REG(0x3378));
+       writel(0x000003fc, RCB_REG(0x337c));
+       writel(0x00001000, RCB_REG(0x3388));
+       writel(0x0001c000, RCB_REG(0x3390));
+       writel(0x00000800, RCB_REG(0x33a0));
+       writel(0x00001000, RCB_REG(0x33b0));
+       writel(0x00093900, RCB_REG(0x33c0));
+       writel(0x24653002, RCB_REG(0x33cc));
+       writel(0x062108fe, RCB_REG(0x33d0));
+       clrsetbits_le32(RCB_REG(0x33d4), 0x0fff0fff, 0x00670060);
+       writel(0x01010000, RCB_REG(0x3a28));
+       writel(0x01010404, RCB_REG(0x3a2c));
+       writel(0x01041041, RCB_REG(0x3a80));
+       clrsetbits_le32(RCB_REG(0x3a84), 0x0000ffff, 0x00001001);
+       setbits_le32(RCB_REG(0x3a84), 1 << 24); /* SATA 2/3 disabled */
+       setbits_le32(RCB_REG(0x3a88), 1 << 0);  /* SATA 4/5 disabled */
+       writel(0x00000001, RCB_REG(0x3a6c));
+       clrsetbits_le32(RCB_REG(0x2344), ~0x00ffff00, 0xff00000c);
+       clrsetbits_le32(RCB_REG(0x80c), 0xff << 20, 0x11 << 20);
+       writel(0, RCB_REG(0x33c8));
+       setbits_le32(RCB_REG(0x21b0), 0xf);
+}
+
+/* PantherPoint PCH Power Management init */
+static void ppt_pm_init(pci_dev_t dev)
+{
+       debug("PantherPoint PM init\n");
+       pci_write_config8(dev, 0xa9, 0x47);
+       setbits_le32(RCB_REG(0x2238), 1 << 0);
+       setbits_le32(RCB_REG(0x228c), 1 << 0);
+       setbits_le16(RCB_REG(0x1100), (1 << 13) | (1 << 14));
+       setbits_le16(RCB_REG(0x0900), 1 << 14);
+       writel(0xc03b8400, RCB_REG(0x2304));
+       setbits_le32(RCB_REG(0x2314), (1 << 5) | (1 << 18));
+       setbits_le32(RCB_REG(0x2320), (1 << 15) | (1 << 1));
+       clrsetbits_le32(RCB_REG(0x3314), 0x1f, 0xf);
+       writel(0x054f0000, RCB_REG(0x3318));
+       writel(0x04000000, RCB_REG(0x3324));
+       setbits_le32(RCB_REG(0x3340), 0xfffff);
+       setbits_le32(RCB_REG(0x3344), (1 << 1) | (1 << 0));
+       writel(0x0001c000, RCB_REG(0x3360));
+       writel(0x00061100, RCB_REG(0x3368));
+       writel(0x7f8fdfff, RCB_REG(0x3378));
+       writel(0x000003fd, RCB_REG(0x337c));
+       writel(0x00001000, RCB_REG(0x3388));
+       writel(0x0001c000, RCB_REG(0x3390));
+       writel(0x00000800, RCB_REG(0x33a0));
+       writel(0x00001000, RCB_REG(0x33b0));
+       writel(0x00093900, RCB_REG(0x33c0));
+       writel(0x24653002, RCB_REG(0x33cc));
+       writel(0x067388fe, RCB_REG(0x33d0));
+       clrsetbits_le32(RCB_REG(0x33d4), 0x0fff0fff, 0x00670060);
+       writel(0x01010000, RCB_REG(0x3a28));
+       writel(0x01010404, RCB_REG(0x3a2c));
+       writel(0x01040000, RCB_REG(0x3a80));
+       clrsetbits_le32(RCB_REG(0x3a84), 0x0000ffff, 0x00001001);
+       /* SATA 2/3 disabled */
+       setbits_le32(RCB_REG(0x3a84), 1 << 24);
+       /* SATA 4/5 disabled */
+       setbits_le32(RCB_REG(0x3a88), 1 << 0);
+       writel(0x00000001, RCB_REG(0x3a6c));
+       clrsetbits_le32(RCB_REG(0x2344), 0xff0000ff, 0xff00000c);
+       clrsetbits_le32(RCB_REG(0x80c), 0xff << 20, 0x11 << 20);
+       setbits_le32(RCB_REG(0x33a4), (1 << 0));
+       writel(0, RCB_REG(0x33c8));
+       setbits_le32(RCB_REG(0x21b0), 0xf);
+}
+
+static void enable_hpet(void)
+{
+       /* Move HPET to default address 0xfed00000 and enable it */
+       clrsetbits_le32(RCB_REG(HPTC), 3 << 0, 1 << 7);
+}
+
+static void enable_clock_gating(pci_dev_t dev)
+{
+       u32 reg32;
+       u16 reg16;
+
+       setbits_le32(RCB_REG(0x2234), 0xf);
+
+       reg16 = pci_read_config16(dev, GEN_PMCON_1);
+       reg16 |= (1 << 2) | (1 << 11);
+       pci_write_config16(dev, GEN_PMCON_1, reg16);
+
+       pch_iobp_update(0xEB007F07, ~0UL, (1 << 31));
+       pch_iobp_update(0xEB004000, ~0UL, (1 << 7));
+       pch_iobp_update(0xEC007F07, ~0UL, (1 << 31));
+       pch_iobp_update(0xEC004000, ~0UL, (1 << 7));
+
+       reg32 = readl(RCB_REG(CG));
+       reg32 |= (1 << 31);
+       reg32 |= (1 << 29) | (1 << 28);
+       reg32 |= (1 << 27) | (1 << 26) | (1 << 25) | (1 << 24);
+       reg32 |= (1 << 16);
+       reg32 |= (1 << 17);
+       reg32 |= (1 << 18);
+       reg32 |= (1 << 22);
+       reg32 |= (1 << 23);
+       reg32 &= ~(1 << 20);
+       reg32 |= (1 << 19);
+       reg32 |= (1 << 0);
+       reg32 |= (0xf << 1);
+       writel(reg32, RCB_REG(CG));
+
+       setbits_le32(RCB_REG(0x38c0), 0x7);
+       setbits_le32(RCB_REG(0x36d4), 0x6680c004);
+       setbits_le32(RCB_REG(0x3564), 0x3);
+}
+
+#if CONFIG_HAVE_SMI_HANDLER
+static void pch_lock_smm(pci_dev_t dev)
+{
+#if TEST_SMM_FLASH_LOCKDOWN
+       u8 reg8;
+#endif
+
+       if (acpi_slp_type != 3) {
+#if ENABLE_ACPI_MODE_IN_COREBOOT
+               debug("Enabling ACPI via APMC:\n");
+               outb(0xe1, 0xb2); /* Enable ACPI mode */
+               debug("done.\n");
+#else
+               debug("Disabling ACPI via APMC:\n");
+               outb(0x1e, 0xb2); /* Disable ACPI mode */
+               debug("done.\n");
+#endif
+       }
+
+       /* Don't allow evil boot loaders, kernels, or
+        * userspace applications to deceive us:
+        */
+       smm_lock();
+
+#if TEST_SMM_FLASH_LOCKDOWN
+       /* Now try this: */
+       debug("Locking BIOS to RO... ");
+       reg8 = pci_read_config8(dev, 0xdc);     /* BIOS_CNTL */
+       debug(" BLE: %s; BWE: %s\n", (reg8 & 2) ? "on" : "off",
+             (reg8 & 1) ? "rw" : "ro");
+       reg8 &= ~(1 << 0);                      /* clear BIOSWE */
+       pci_write_config8(dev, 0xdc, reg8);
+       reg8 |= (1 << 1);                       /* set BLE */
+       pci_write_config8(dev, 0xdc, reg8);
+       debug("ok.\n");
+       reg8 = pci_read_config8(dev, 0xdc);     /* BIOS_CNTL */
+       debug(" BLE: %s; BWE: %s\n", (reg8 & 2) ? "on" : "off",
+             (reg8 & 1) ? "rw" : "ro");
+
+       debug("Writing:\n");
+       writeb(0, 0xfff00000);
+       debug("Testing:\n");
+       reg8 |= (1 << 0);                       /* set BIOSWE */
+       pci_write_config8(dev, 0xdc, reg8);
+
+       reg8 = pci_read_config8(dev, 0xdc);     /* BIOS_CNTL */
+       debug(" BLE: %s; BWE: %s\n", (reg8 & 2) ? "on" : "off",
+             (reg8 & 1) ? "rw" : "ro");
+       debug("Done.\n");
+#endif
+}
+#endif
+
+static void pch_disable_smm_only_flashing(pci_dev_t dev)
+{
+       u8 reg8;
+
+       debug("Enabling BIOS updates outside of SMM... ");
+       reg8 = pci_read_config8(dev, 0xdc);     /* BIOS_CNTL */
+       reg8 &= ~(1 << 5);
+       pci_write_config8(dev, 0xdc, reg8);
+}
+
+static void pch_fixups(pci_dev_t dev)
+{
+       u8 gen_pmcon_2;
+
+       /* Indicate DRAM init done for MRC S3 to know it can resume */
+       gen_pmcon_2 = pci_read_config8(dev, GEN_PMCON_2);
+       gen_pmcon_2 |= (1 << 7);
+       pci_write_config8(dev, GEN_PMCON_2, gen_pmcon_2);
+
+       /* Enable DMI ASPM in the PCH */
+       clrbits_le32(RCB_REG(0x2304), 1 << 10);
+       setbits_le32(RCB_REG(0x21a4), (1 << 11) | (1 << 10));
+       setbits_le32(RCB_REG(0x21a8), 0x3);
+}
+
+int lpc_early_init(const void *blob, int node, pci_dev_t dev)
+{
+       struct reg_info {
+               u32 base;
+               u32 size;
+       } values[4], *ptr;
+       int count;
+       int i;
+
+       count = fdtdec_get_int_array_count(blob, node, "intel,gen-dec",
+                       (u32 *)values, sizeof(values) / sizeof(u32));
+       if (count < 0)
+               return -EINVAL;
+
+       /* Set COM1/COM2 decode range */
+       pci_write_config16(dev, LPC_IO_DEC, 0x0010);
+
+       /* Enable PS/2 Keyboard/Mouse, EC areas and COM1 */
+       pci_write_config16(dev, LPC_EN, KBC_LPC_EN | MC_LPC_EN |
+                          GAMEL_LPC_EN | COMA_LPC_EN);
+
+       /* Write all registers but use 0 if we run out of data */
+       count = count * sizeof(u32) / sizeof(values[0]);
+       for (i = 0, ptr = values; i < ARRAY_SIZE(values); i++, ptr++) {
+               u32 reg = 0;
+
+               if (i < count)
+                       reg = ptr->base | PCI_COMMAND_IO | (ptr->size << 16);
+               pci_write_config32(dev, LPC_GENX_DEC(i), reg);
+       }
+
+       return 0;
+}
+
+int lpc_init(struct pci_controller *hose, pci_dev_t dev)
+{
+       const void *blob = gd->fdt_blob;
+       int node;
+
+       debug("pch: lpc_init\n");
+       pci_write_bar32(hose, dev, 0, 0);
+       pci_write_bar32(hose, dev, 1, 0xff800000);
+       pci_write_bar32(hose, dev, 2, 0xfec00000);
+       pci_write_bar32(hose, dev, 3, 0x800);
+       pci_write_bar32(hose, dev, 4, 0x900);
+
+       node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_LPC);
+       if (node < 0)
+               return -ENOENT;
+
+       /* Set the value for PCI command register. */
+       pci_write_config16(dev, PCI_COMMAND, 0x000f);
+
+       /* IO APIC initialization. */
+       pch_enable_apic(dev);
+
+       pch_enable_serial_irqs(dev);
+
+       /* Setup the PIRQ. */
+       pch_pirq_init(blob, node, dev);
+
+       /* Setup power options. */
+       pch_power_options(blob, node, dev);
+
+       /* Initialize power management */
+       switch (pch_silicon_type()) {
+       case PCH_TYPE_CPT: /* CougarPoint */
+               cpt_pm_init(dev);
+               break;
+       case PCH_TYPE_PPT: /* PantherPoint */
+               ppt_pm_init(dev);
+               break;
+       default:
+               printf("Unknown Chipset: %#02x.%dx\n", PCI_DEV(dev),
+                      PCI_FUNC(dev));
+               return -ENOSYS;
+       }
+
+       /* Initialize the real time clock. */
+       pch_rtc_init(dev);
+
+       /* Initialize the High Precision Event Timers, if present. */
+       enable_hpet();
+
+       /* Initialize Clock Gating */
+       enable_clock_gating(dev);
+
+       pch_disable_smm_only_flashing(dev);
+
+#if CONFIG_HAVE_SMI_HANDLER
+       pch_lock_smm(dev);
+#endif
+
+       pch_fixups(dev);
+
+       return 0;
+}
+
+void lpc_enable(pci_dev_t dev)
+{
+       /* Enable PCH Display Port */
+       writew(0x0010, RCB_REG(DISPBDF));
+       setbits_le32(RCB_REG(FD2), PCH_ENABLE_DBDF);
+}
diff --git a/arch/x86/cpu/ivybridge/me_status.c b/arch/x86/cpu/ivybridge/me_status.c
new file mode 100644 (file)
index 0000000..15cf69f
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * From Coreboot src/southbridge/intel/bd82x6x/me_status.c
+ *
+ * Copyright (C) 2011 The Chromium OS Authors. All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/arch/me.h>
+
+/* HFS1[3:0] Current Working State Values */
+static const char *const me_cws_values[] = {
+       [ME_HFS_CWS_RESET]      = "Reset",
+       [ME_HFS_CWS_INIT]       = "Initializing",
+       [ME_HFS_CWS_REC]        = "Recovery",
+       [ME_HFS_CWS_NORMAL]     = "Normal",
+       [ME_HFS_CWS_WAIT]       = "Platform Disable Wait",
+       [ME_HFS_CWS_TRANS]      = "OP State Transition",
+       [ME_HFS_CWS_INVALID]    = "Invalid CPU Plugged In"
+};
+
+/* HFS1[8:6] Current Operation State Values */
+static const char *const me_opstate_values[] = {
+       [ME_HFS_STATE_PREBOOT]  = "Preboot",
+       [ME_HFS_STATE_M0_UMA]   = "M0 with UMA",
+       [ME_HFS_STATE_M3]       = "M3 without UMA",
+       [ME_HFS_STATE_M0]       = "M0 without UMA",
+       [ME_HFS_STATE_BRINGUP]  = "Bring up",
+       [ME_HFS_STATE_ERROR]    = "M0 without UMA but with error"
+};
+
+/* HFS[19:16] Current Operation Mode Values */
+static const char *const me_opmode_values[] = {
+       [ME_HFS_MODE_NORMAL]    = "Normal",
+       [ME_HFS_MODE_DEBUG]     = "Debug",
+       [ME_HFS_MODE_DIS]       = "Soft Temporary Disable",
+       [ME_HFS_MODE_OVER_JMPR] = "Security Override via Jumper",
+       [ME_HFS_MODE_OVER_MEI]  = "Security Override via MEI Message"
+};
+
+/* HFS[15:12] Error Code Values */
+static const char *const me_error_values[] = {
+       [ME_HFS_ERROR_NONE]     = "No Error",
+       [ME_HFS_ERROR_UNCAT]    = "Uncategorized Failure",
+       [ME_HFS_ERROR_IMAGE]    = "Image Failure",
+       [ME_HFS_ERROR_DEBUG]    = "Debug Failure"
+};
+
+/* GMES[31:28] ME Progress Code */
+static const char *const me_progress_values[] = {
+       [ME_GMES_PHASE_ROM]     = "ROM Phase",
+       [ME_GMES_PHASE_BUP]     = "BUP Phase",
+       [ME_GMES_PHASE_UKERNEL] = "uKernel Phase",
+       [ME_GMES_PHASE_POLICY]  = "Policy Module",
+       [ME_GMES_PHASE_MODULE]  = "Module Loading",
+       [ME_GMES_PHASE_UNKNOWN] = "Unknown",
+       [ME_GMES_PHASE_HOST]    = "Host Communication"
+};
+
+/* GMES[27:24] Power Management Event */
+static const char *const me_pmevent_values[] = {
+       [0x00] = "Clean Moff->Mx wake",
+       [0x01] = "Moff->Mx wake after an error",
+       [0x02] = "Clean global reset",
+       [0x03] = "Global reset after an error",
+       [0x04] = "Clean Intel ME reset",
+       [0x05] = "Intel ME reset due to exception",
+       [0x06] = "Pseudo-global reset",
+       [0x07] = "S0/M0->Sx/M3",
+       [0x08] = "Sx/M3->S0/M0",
+       [0x09] = "Non-power cycle reset",
+       [0x0a] = "Power cycle reset through M3",
+       [0x0b] = "Power cycle reset through Moff",
+       [0x0c] = "Sx/Mx->Sx/Moff"
+};
+
+/* Progress Code 0 states */
+static const char *const me_progress_rom_values[] = {
+       [0x00] = "BEGIN",
+       [0x06] = "DISABLE"
+};
+
+/* Progress Code 1 states */
+static const char *const me_progress_bup_values[] = {
+       [0x00] = "Initialization starts",
+       [0x01] = "Disable the host wake event",
+       [0x04] = "Flow determination start process",
+       [0x08] = "Error reading/matching the VSCC table in the descriptor",
+       [0x0a] = "Check to see if straps say ME DISABLED",
+       [0x0b] = "Timeout waiting for PWROK",
+       [0x0d] = "Possibly handle BUP manufacturing override strap",
+       [0x11] = "Bringup in M3",
+       [0x12] = "Bringup in M0",
+       [0x13] = "Flow detection error",
+       [0x15] = "M3 clock switching error",
+       [0x18] = "M3 kernel load",
+       [0x1c] = "T34 missing - cannot program ICC",
+       [0x1f] = "Waiting for DID BIOS message",
+       [0x20] = "Waiting for DID BIOS message failure",
+       [0x21] = "DID reported an error",
+       [0x22] = "Enabling UMA",
+       [0x23] = "Enabling UMA error",
+       [0x24] = "Sending DID Ack to BIOS",
+       [0x25] = "Sending DID Ack to BIOS error",
+       [0x26] = "Switching clocks in M0",
+       [0x27] = "Switching clocks in M0 error",
+       [0x28] = "ME in temp disable",
+       [0x32] = "M0 kernel load",
+};
+
+/* Progress Code 3 states */
+static const char *const me_progress_policy_values[] = {
+       [0x00] = "Entery into Policy Module",
+       [0x03] = "Received S3 entry",
+       [0x04] = "Received S4 entry",
+       [0x05] = "Received S5 entry",
+       [0x06] = "Received UPD entry",
+       [0x07] = "Received PCR entry",
+       [0x08] = "Received NPCR entry",
+       [0x09] = "Received host wake",
+       [0x0a] = "Received AC<>DC switch",
+       [0x0b] = "Received DRAM Init Done",
+       [0x0c] = "VSCC Data not found for flash device",
+       [0x0d] = "VSCC Table is not valid",
+       [0x0e] = "Flash Partition Boundary is outside address space",
+       [0x0f] = "ME cannot access the chipset descriptor region",
+       [0x10] = "Required VSCC values for flash parts do not match",
+};
+
+void intel_me_status(struct me_hfs *hfs, struct me_gmes *gmes)
+{
+       /* Check Current States */
+       debug("ME: FW Partition Table      : %s\n",
+             hfs->fpt_bad ? "BAD" : "OK");
+       debug("ME: Bringup Loader Failure  : %s\n",
+             hfs->ft_bup_ld_flr ? "YES" : "NO");
+       debug("ME: Firmware Init Complete  : %s\n",
+             hfs->fw_init_complete ? "YES" : "NO");
+       debug("ME: Manufacturing Mode      : %s\n",
+             hfs->mfg_mode ? "YES" : "NO");
+       debug("ME: Boot Options Present    : %s\n",
+             hfs->boot_options_present ? "YES" : "NO");
+       debug("ME: Update In Progress      : %s\n",
+             hfs->update_in_progress ? "YES" : "NO");
+       debug("ME: Current Working State   : %s\n",
+             me_cws_values[hfs->working_state]);
+       debug("ME: Current Operation State : %s\n",
+             me_opstate_values[hfs->operation_state]);
+       debug("ME: Current Operation Mode  : %s\n",
+             me_opmode_values[hfs->operation_mode]);
+       debug("ME: Error Code              : %s\n",
+             me_error_values[hfs->error_code]);
+       debug("ME: Progress Phase          : %s\n",
+             me_progress_values[gmes->progress_code]);
+       debug("ME: Power Management Event  : %s\n",
+             me_pmevent_values[gmes->current_pmevent]);
+
+       debug("ME: Progress Phase State    : ");
+       switch (gmes->progress_code) {
+       case ME_GMES_PHASE_ROM:         /* ROM Phase */
+               debug("%s", me_progress_rom_values[gmes->current_state]);
+               break;
+
+       case ME_GMES_PHASE_BUP:         /* Bringup Phase */
+               if (gmes->current_state < ARRAY_SIZE(me_progress_bup_values) &&
+                   me_progress_bup_values[gmes->current_state])
+                       debug("%s",
+                             me_progress_bup_values[gmes->current_state]);
+               else
+                       debug("0x%02x", gmes->current_state);
+               break;
+
+       case ME_GMES_PHASE_POLICY:      /* Policy Module Phase */
+               if (gmes->current_state <
+                               ARRAY_SIZE(me_progress_policy_values) &&
+                   me_progress_policy_values[gmes->current_state])
+                       debug("%s",
+                             me_progress_policy_values[gmes->current_state]);
+               else
+                       debug("0x%02x", gmes->current_state);
+               break;
+
+       case ME_GMES_PHASE_HOST:        /* Host Communication Phase */
+               if (!gmes->current_state)
+                       debug("Host communication established");
+               else
+                       debug("0x%02x", gmes->current_state);
+               break;
+
+       default:
+               debug("Unknown 0x%02x", gmes->current_state);
+       }
+       debug("\n");
+}
diff --git a/arch/x86/cpu/ivybridge/microcode_intel.c b/arch/x86/cpu/ivybridge/microcode_intel.c
new file mode 100644 (file)
index 0000000..2440a97
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ * Copyright (C) 2000 Ronald G. Minnich
+ *
+ * Microcode update for Intel PIII and later CPUs
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <libfdt.h>
+#include <asm/cpu.h>
+#include <asm/msr.h>
+#include <asm/msr-index.h>
+#include <asm/processor.h>
+#include <asm/arch/microcode.h>
+
+/**
+ * struct microcode_update - standard microcode header from Intel
+ *
+ * We read this information out of the device tree and use it to determine
+ * whether the update is applicable or not. We also use the same structure
+ * to read information from the CPU.
+ */
+struct microcode_update {
+       uint header_version;
+       uint update_revision;
+       uint date_code;
+       uint processor_signature;
+       uint checksum;
+       uint loader_revision;
+       uint processor_flags;
+       const void *data;
+       int size;
+};
+
+static int microcode_decode_node(const void *blob, int node,
+                                struct microcode_update *update)
+{
+       update->data = fdt_getprop(blob, node, "data", &update->size);
+       if (!update->data)
+               return -EINVAL;
+       update->data += UCODE_HEADER_LEN;
+       update->size -= UCODE_HEADER_LEN;
+
+       update->header_version = fdtdec_get_int(blob, node,
+                                               "intel,header-version", 0);
+       update->update_revision = fdtdec_get_int(blob, node,
+                                                "intel,update-revision", 0);
+       update->date_code = fdtdec_get_int(blob, node,
+                                          "intel,date-code", 0);
+       update->processor_signature = fdtdec_get_int(blob, node,
+                                       "intel,processor-signature", 0);
+       update->checksum = fdtdec_get_int(blob, node, "intel,checksum", 0);
+       update->loader_revision = fdtdec_get_int(blob, node,
+                                                "intel,loader-revision", 0);
+       update->processor_flags = fdtdec_get_int(blob, node,
+                                                "intel,processor-flags", 0);
+
+       return 0;
+}
+
+static inline uint32_t microcode_read_rev(void)
+{
+       /*
+        * Some Intel CPUs can be very finicky about the CPUID sequence used.
+        * So this is implemented in assembly so that it works reliably.
+        */
+       uint32_t low, high;
+
+       asm volatile (
+               "xorl %%eax, %%eax\n"
+               "xorl %%edx, %%edx\n"
+               "movl %2, %%ecx\n"
+               "wrmsr\n"
+               "movl $0x01, %%eax\n"
+               "cpuid\n"
+               "movl %2, %%ecx\n"
+               "rdmsr\n"
+               : /* outputs */
+               "=a" (low), "=d" (high)
+               : /* inputs */
+               "i" (MSR_IA32_UCODE_REV)
+               : /* clobbers */
+                "ebx", "ecx"
+       );
+
+       return high;
+}
+
+static void microcode_read_cpu(struct microcode_update *cpu)
+{
+       /* CPUID sets MSR 0x8B iff a microcode update has been loaded. */
+       unsigned int x86_model, x86_family;
+       struct cpuid_result result;
+       uint32_t low, high;
+
+       wrmsr(MSR_IA32_UCODE_REV, 0, 0);
+       result = cpuid(1);
+       rdmsr(MSR_IA32_UCODE_REV, low, cpu->update_revision);
+       x86_model = (result.eax >> 4) & 0x0f;
+       x86_family = (result.eax >> 8) & 0x0f;
+       cpu->processor_signature = result.eax;
+
+       cpu->processor_flags = 0;
+       if ((x86_model >= 5) || (x86_family > 6)) {
+               rdmsr(0x17, low, high);
+               cpu->processor_flags = 1 << ((high >> 18) & 7);
+       }
+       debug("microcode: sig=%#x pf=%#x revision=%#x\n",
+             cpu->processor_signature, cpu->processor_flags,
+             cpu->update_revision);
+}
+
+/* Get a microcode update from the device tree and apply it */
+int microcode_update_intel(void)
+{
+       struct microcode_update cpu, update;
+       const void *blob = gd->fdt_blob;
+       int skipped;
+       int count;
+       int node;
+       int ret;
+       int rev;
+
+       microcode_read_cpu(&cpu);
+       node = 0;
+       count = 0;
+       skipped = 0;
+       do {
+               node = fdtdec_next_compatible(blob, node,
+                                             COMPAT_INTEL_MICROCODE);
+               if (node < 0) {
+                       debug("%s: Found %d updates\n", __func__, count);
+                       return count ? 0 : skipped ? -EEXIST : -ENOENT;
+               }
+
+               ret = microcode_decode_node(blob, node, &update);
+               if (ret) {
+                       debug("%s: Unable to decode update: %d\n", __func__,
+                             ret);
+                       return ret;
+               }
+               if (!(update.processor_signature == cpu.processor_signature &&
+                     (update.processor_flags & cpu.processor_flags))) {
+                       debug("%s: Skipping non-matching update, sig=%x, pf=%x\n",
+                             __func__, update.processor_signature,
+                             update.processor_flags);
+                       skipped++;
+                       continue;
+               }
+               wrmsr(MSR_IA32_UCODE_WRITE, (ulong)update.data, 0);
+               rev = microcode_read_rev();
+               debug("microcode: updated to revision 0x%x date=%04x-%02x-%02x\n",
+                     rev, update.date_code & 0xffff,
+                     (update.date_code >> 24) & 0xff,
+                     (update.date_code >> 16) & 0xff);
+               if (update.update_revision != rev) {
+                       printf("Microcode update failed\n");
+                       return -EFAULT;
+               }
+               count++;
+       } while (1);
+}
diff --git a/arch/x86/cpu/ivybridge/model_206ax.c b/arch/x86/cpu/ivybridge/model_206ax.c
new file mode 100644 (file)
index 0000000..11dc625
--- /dev/null
@@ -0,0 +1,514 @@
+/*
+ * From Coreboot file of same name
+ *
+ * Copyright (C) 2007-2009 coresystems GmbH
+ * Copyright (C) 2011 The Chromium Authors
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <fdtdec.h>
+#include <malloc.h>
+#include <asm/acpi.h>
+#include <asm/cpu.h>
+#include <asm/lapic.h>
+#include <asm/lapic_def.h>
+#include <asm/msr.h>
+#include <asm/mtrr.h>
+#include <asm/processor.h>
+#include <asm/speedstep.h>
+#include <asm/turbo.h>
+#include <asm/arch/model_206ax.h>
+
+static void enable_vmx(void)
+{
+       struct cpuid_result regs;
+#ifdef CONFIG_ENABLE_VMX
+       int enable = true;
+#else
+       int enable = false;
+#endif
+       msr_t msr;
+
+       regs = cpuid(1);
+       /* Check that the VMX is supported before reading or writing the MSR. */
+       if (!((regs.ecx & CPUID_VMX) || (regs.ecx & CPUID_SMX)))
+               return;
+
+       msr = msr_read(MSR_IA32_FEATURE_CONTROL);
+
+       if (msr.lo & (1 << 0)) {
+               debug("VMX is locked, so %s will do nothing\n", __func__);
+               /* VMX locked. If we set it again we get an illegal
+                * instruction
+                */
+               return;
+       }
+
+       /* The IA32_FEATURE_CONTROL MSR may initialize with random values.
+        * It must be cleared regardless of VMX config setting.
+        */
+       msr.hi = 0;
+       msr.lo = 0;
+
+       debug("%s VMX\n", enable ? "Enabling" : "Disabling");
+
+       /*
+        * Even though the Intel manual says you must set the lock bit in
+        * addition to the VMX bit in order for VMX to work, it is incorrect.
+        * Thus we leave it unlocked for the OS to manage things itself.
+        * This is good for a few reasons:
+        * - No need to reflash the bios just to toggle the lock bit.
+        * - The VMX bits really really should match each other across cores,
+        *   so hard locking it on one while another has the opposite setting
+        *   can easily lead to crashes as code using VMX migrates between
+        *   them.
+        * - Vendors that want to "upsell" from a bios that disables+locks to
+        *   one that doesn't is sleazy.
+        * By leaving this to the OS (e.g. Linux), people can do exactly what
+        * they want on the fly, and do it correctly (e.g. across multiple
+        * cores).
+        */
+       if (enable) {
+               msr.lo |= (1 << 2);
+               if (regs.ecx & CPUID_SMX)
+                       msr.lo |= (1 << 1);
+       }
+
+       msr_write(MSR_IA32_FEATURE_CONTROL, msr);
+}
+
+/* Convert time in seconds to POWER_LIMIT_1_TIME MSR value */
+static const u8 power_limit_time_sec_to_msr[] = {
+       [0]   = 0x00,
+       [1]   = 0x0a,
+       [2]   = 0x0b,
+       [3]   = 0x4b,
+       [4]   = 0x0c,
+       [5]   = 0x2c,
+       [6]   = 0x4c,
+       [7]   = 0x6c,
+       [8]   = 0x0d,
+       [10]  = 0x2d,
+       [12]  = 0x4d,
+       [14]  = 0x6d,
+       [16]  = 0x0e,
+       [20]  = 0x2e,
+       [24]  = 0x4e,
+       [28]  = 0x6e,
+       [32]  = 0x0f,
+       [40]  = 0x2f,
+       [48]  = 0x4f,
+       [56]  = 0x6f,
+       [64]  = 0x10,
+       [80]  = 0x30,
+       [96]  = 0x50,
+       [112] = 0x70,
+       [128] = 0x11,
+};
+
+/* Convert POWER_LIMIT_1_TIME MSR value to seconds */
+static const u8 power_limit_time_msr_to_sec[] = {
+       [0x00] = 0,
+       [0x0a] = 1,
+       [0x0b] = 2,
+       [0x4b] = 3,
+       [0x0c] = 4,
+       [0x2c] = 5,
+       [0x4c] = 6,
+       [0x6c] = 7,
+       [0x0d] = 8,
+       [0x2d] = 10,
+       [0x4d] = 12,
+       [0x6d] = 14,
+       [0x0e] = 16,
+       [0x2e] = 20,
+       [0x4e] = 24,
+       [0x6e] = 28,
+       [0x0f] = 32,
+       [0x2f] = 40,
+       [0x4f] = 48,
+       [0x6f] = 56,
+       [0x10] = 64,
+       [0x30] = 80,
+       [0x50] = 96,
+       [0x70] = 112,
+       [0x11] = 128,
+};
+
+int cpu_config_tdp_levels(void)
+{
+       struct cpuid_result result;
+       msr_t platform_info;
+
+       /* Minimum CPU revision */
+       result = cpuid(1);
+       if (result.eax < IVB_CONFIG_TDP_MIN_CPUID)
+               return 0;
+
+       /* Bits 34:33 indicate how many levels supported */
+       platform_info = msr_read(MSR_PLATFORM_INFO);
+       return (platform_info.hi >> 1) & 3;
+}
+
+/*
+ * Configure processor power limits if possible
+ * This must be done AFTER set of BIOS_RESET_CPL
+ */
+void set_power_limits(u8 power_limit_1_time)
+{
+       msr_t msr = msr_read(MSR_PLATFORM_INFO);
+       msr_t limit;
+       unsigned power_unit;
+       unsigned tdp, min_power, max_power, max_time;
+       u8 power_limit_1_val;
+
+       if (power_limit_1_time > ARRAY_SIZE(power_limit_time_sec_to_msr))
+               return;
+
+       if (!(msr.lo & PLATFORM_INFO_SET_TDP))
+               return;
+
+       /* Get units */
+       msr = msr_read(MSR_PKG_POWER_SKU_UNIT);
+       power_unit = 2 << ((msr.lo & 0xf) - 1);
+
+       /* Get power defaults for this SKU */
+       msr = msr_read(MSR_PKG_POWER_SKU);
+       tdp = msr.lo & 0x7fff;
+       min_power = (msr.lo >> 16) & 0x7fff;
+       max_power = msr.hi & 0x7fff;
+       max_time = (msr.hi >> 16) & 0x7f;
+
+       debug("CPU TDP: %u Watts\n", tdp / power_unit);
+
+       if (power_limit_time_msr_to_sec[max_time] > power_limit_1_time)
+               power_limit_1_time = power_limit_time_msr_to_sec[max_time];
+
+       if (min_power > 0 && tdp < min_power)
+               tdp = min_power;
+
+       if (max_power > 0 && tdp > max_power)
+               tdp = max_power;
+
+       power_limit_1_val = power_limit_time_sec_to_msr[power_limit_1_time];
+
+       /* Set long term power limit to TDP */
+       limit.lo = 0;
+       limit.lo |= tdp & PKG_POWER_LIMIT_MASK;
+       limit.lo |= PKG_POWER_LIMIT_EN;
+       limit.lo |= (power_limit_1_val & PKG_POWER_LIMIT_TIME_MASK) <<
+               PKG_POWER_LIMIT_TIME_SHIFT;
+
+       /* Set short term power limit to 1.25 * TDP */
+       limit.hi = 0;
+       limit.hi |= ((tdp * 125) / 100) & PKG_POWER_LIMIT_MASK;
+       limit.hi |= PKG_POWER_LIMIT_EN;
+       /* Power limit 2 time is only programmable on SNB EP/EX */
+
+       msr_write(MSR_PKG_POWER_LIMIT, limit);
+
+       /* Use nominal TDP values for CPUs with configurable TDP */
+       if (cpu_config_tdp_levels()) {
+               msr = msr_read(MSR_CONFIG_TDP_NOMINAL);
+               limit.hi = 0;
+               limit.lo = msr.lo & 0xff;
+               msr_write(MSR_TURBO_ACTIVATION_RATIO, limit);
+       }
+}
+
+static void configure_c_states(void)
+{
+       struct cpuid_result result;
+       msr_t msr;
+
+       msr = msr_read(MSR_PMG_CST_CONFIG_CTL);
+       msr.lo |= (1 << 28);    /* C1 Auto Undemotion Enable */
+       msr.lo |= (1 << 27);    /* C3 Auto Undemotion Enable */
+       msr.lo |= (1 << 26);    /* C1 Auto Demotion Enable */
+       msr.lo |= (1 << 25);    /* C3 Auto Demotion Enable */
+       msr.lo &= ~(1 << 10);   /* Disable IO MWAIT redirection */
+       msr.lo |= 7;            /* No package C-state limit */
+       msr_write(MSR_PMG_CST_CONFIG_CTL, msr);
+
+       msr = msr_read(MSR_PMG_IO_CAPTURE_ADR);
+       msr.lo &= ~0x7ffff;
+       msr.lo |= (PMB0_BASE + 4);      /* LVL_2 base address */
+       msr.lo |= (2 << 16);            /* CST Range: C7 is max C-state */
+       msr_write(MSR_PMG_IO_CAPTURE_ADR, msr);
+
+       msr = msr_read(MSR_MISC_PWR_MGMT);
+       msr.lo &= ~(1 << 0);    /* Enable P-state HW_ALL coordination */
+       msr_write(MSR_MISC_PWR_MGMT, msr);
+
+       msr = msr_read(MSR_POWER_CTL);
+       msr.lo |= (1 << 18);    /* Enable Energy Perf Bias MSR 0x1b0 */
+       msr.lo |= (1 << 1);     /* C1E Enable */
+       msr.lo |= (1 << 0);     /* Bi-directional PROCHOT# */
+       msr_write(MSR_POWER_CTL, msr);
+
+       /* C3 Interrupt Response Time Limit */
+       msr.hi = 0;
+       msr.lo = IRTL_VALID | IRTL_1024_NS | 0x50;
+       msr_write(MSR_PKGC3_IRTL, msr);
+
+       /* C6 Interrupt Response Time Limit */
+       msr.hi = 0;
+       msr.lo = IRTL_VALID | IRTL_1024_NS | 0x68;
+       msr_write(MSR_PKGC6_IRTL, msr);
+
+       /* C7 Interrupt Response Time Limit */
+       msr.hi = 0;
+       msr.lo = IRTL_VALID | IRTL_1024_NS | 0x6D;
+       msr_write(MSR_PKGC7_IRTL, msr);
+
+       /* Primary Plane Current Limit */
+       msr = msr_read(MSR_PP0_CURRENT_CONFIG);
+       msr.lo &= ~0x1fff;
+       msr.lo |= PP0_CURRENT_LIMIT;
+       msr_write(MSR_PP0_CURRENT_CONFIG, msr);
+
+       /* Secondary Plane Current Limit */
+       msr = msr_read(MSR_PP1_CURRENT_CONFIG);
+       msr.lo &= ~0x1fff;
+       result = cpuid(1);
+       if (result.eax >= 0x30600)
+               msr.lo |= PP1_CURRENT_LIMIT_IVB;
+       else
+               msr.lo |= PP1_CURRENT_LIMIT_SNB;
+       msr_write(MSR_PP1_CURRENT_CONFIG, msr);
+}
+
+static int configure_thermal_target(void)
+{
+       int tcc_offset;
+       msr_t msr;
+       int node;
+
+       /* Find pointer to CPU configuration */
+       node = fdtdec_next_compatible(gd->fdt_blob, 0,
+                                     COMPAT_INTEL_MODEL_206AX);
+       if (node < 0)
+               return -ENOENT;
+       tcc_offset = fdtdec_get_int(gd->fdt_blob, node, "tcc-offset", 0);
+
+       /* Set TCC activaiton offset if supported */
+       msr = msr_read(MSR_PLATFORM_INFO);
+       if ((msr.lo & (1 << 30)) && tcc_offset) {
+               msr = msr_read(MSR_TEMPERATURE_TARGET);
+               msr.lo &= ~(0xf << 24); /* Bits 27:24 */
+               msr.lo |= (tcc_offset & 0xf) << 24;
+               msr_write(MSR_TEMPERATURE_TARGET, msr);
+       }
+
+       return 0;
+}
+
+static void configure_misc(void)
+{
+       msr_t msr;
+
+       msr = msr_read(IA32_MISC_ENABLE);
+       msr.lo |= (1 << 0);       /* Fast String enable */
+       msr.lo |= (1 << 3);       /* TM1/TM2/EMTTM enable */
+       msr.lo |= (1 << 16);      /* Enhanced SpeedStep Enable */
+       msr_write(IA32_MISC_ENABLE, msr);
+
+       /* Disable Thermal interrupts */
+       msr.lo = 0;
+       msr.hi = 0;
+       msr_write(IA32_THERM_INTERRUPT, msr);
+
+       /* Enable package critical interrupt only */
+       msr.lo = 1 << 4;
+       msr.hi = 0;
+       msr_write(IA32_PACKAGE_THERM_INTERRUPT, msr);
+}
+
+static void enable_lapic_tpr(void)
+{
+       msr_t msr;
+
+       msr = msr_read(MSR_PIC_MSG_CONTROL);
+       msr.lo &= ~(1 << 10);   /* Enable APIC TPR updates */
+       msr_write(MSR_PIC_MSG_CONTROL, msr);
+}
+
+static void configure_dca_cap(void)
+{
+       struct cpuid_result cpuid_regs;
+       msr_t msr;
+
+       /* Check feature flag in CPUID.(EAX=1):ECX[18]==1 */
+       cpuid_regs = cpuid(1);
+       if (cpuid_regs.ecx & (1 << 18)) {
+               msr = msr_read(IA32_PLATFORM_DCA_CAP);
+               msr.lo |= 1;
+               msr_write(IA32_PLATFORM_DCA_CAP, msr);
+       }
+}
+
+static void set_max_ratio(void)
+{
+       msr_t msr, perf_ctl;
+
+       perf_ctl.hi = 0;
+
+       /* Check for configurable TDP option */
+       if (cpu_config_tdp_levels()) {
+               /* Set to nominal TDP ratio */
+               msr = msr_read(MSR_CONFIG_TDP_NOMINAL);
+               perf_ctl.lo = (msr.lo & 0xff) << 8;
+       } else {
+               /* Platform Info bits 15:8 give max ratio */
+               msr = msr_read(MSR_PLATFORM_INFO);
+               perf_ctl.lo = msr.lo & 0xff00;
+       }
+       msr_write(IA32_PERF_CTL, perf_ctl);
+
+       debug("model_x06ax: frequency set to %d\n",
+             ((perf_ctl.lo >> 8) & 0xff) * SANDYBRIDGE_BCLK);
+}
+
+static void set_energy_perf_bias(u8 policy)
+{
+       msr_t msr;
+
+       /* Energy Policy is bits 3:0 */
+       msr = msr_read(IA32_ENERGY_PERFORMANCE_BIAS);
+       msr.lo &= ~0xf;
+       msr.lo |= policy & 0xf;
+       msr_write(IA32_ENERGY_PERFORMANCE_BIAS, msr);
+
+       debug("model_x06ax: energy policy set to %u\n", policy);
+}
+
+static void configure_mca(void)
+{
+       msr_t msr;
+       int i;
+
+       msr.lo = 0;
+       msr.hi = 0;
+       /* This should only be done on a cold boot */
+       for (i = 0; i < 7; i++)
+               msr_write(IA32_MC0_STATUS + (i * 4), msr);
+}
+
+#if CONFIG_USBDEBUG
+static unsigned ehci_debug_addr;
+#endif
+
+/*
+ * Initialize any extra cores/threads in this package.
+ */
+static int intel_cores_init(struct x86_cpu_priv *cpu)
+{
+       struct cpuid_result result;
+       unsigned threads_per_package, threads_per_core, i;
+
+       /* Logical processors (threads) per core */
+       result = cpuid_ext(0xb, 0);
+       threads_per_core = result.ebx & 0xffff;
+
+       /* Logical processors (threads) per package */
+       result = cpuid_ext(0xb, 1);
+       threads_per_package = result.ebx & 0xffff;
+
+       debug("CPU: %u has %u cores, %u threads per core\n",
+             cpu->apic_id, threads_per_package / threads_per_core,
+             threads_per_core);
+
+       for (i = 1; i < threads_per_package; ++i) {
+               struct x86_cpu_priv *new_cpu;
+
+               new_cpu = calloc(1, sizeof(*new_cpu));
+               if (!new_cpu)
+                       return -ENOMEM;
+
+               new_cpu->apic_id = cpu->apic_id + i;
+
+               /* Update APIC ID if no hyperthreading */
+               if (threads_per_core == 1)
+                       new_cpu->apic_id <<= 1;
+
+               debug("CPU: %u has core %u\n", cpu->apic_id, new_cpu->apic_id);
+
+#if CONFIG_SMP && CONFIG_MAX_CPUS > 1
+               /* Start the new cpu */
+               if (!start_cpu(new_cpu)) {
+                       /* Record the error in cpu? */
+                       printk(BIOS_ERR, "CPU %u would not start!\n",
+                              new_cpu->apic_id);
+                       new_cpu->start_err = 1;
+               }
+#endif
+       }
+
+       return 0;
+}
+
+int model_206ax_init(struct x86_cpu_priv *cpu)
+{
+       int ret;
+
+       /* Clear out pending MCEs */
+       configure_mca();
+
+#if CONFIG_USBDEBUG
+       /* Is this caution really needed? */
+       if (!ehci_debug_addr)
+               ehci_debug_addr = get_ehci_debug();
+       set_ehci_debug(0);
+#endif
+
+       /* Setup MTRRs based on physical address size */
+#if 0 /* TODO: Implement this */
+       struct cpuid_result cpuid_regs;
+
+       cpuid_regs = cpuid(0x80000008);
+       x86_setup_fixed_mtrrs();
+       x86_setup_var_mtrrs(cpuid_regs.eax & 0xff, 2);
+       x86_mtrr_check();
+#endif
+
+#if CONFIG_USBDEBUG
+       set_ehci_debug(ehci_debug_addr);
+#endif
+
+       /* Enable the local cpu apics */
+       enable_lapic_tpr();
+       lapic_setup();
+
+       /* Enable virtualization if enabled in CMOS */
+       enable_vmx();
+
+       /* Configure C States */
+       configure_c_states();
+
+       /* Configure Enhanced SpeedStep and Thermal Sensors */
+       configure_misc();
+
+       /* Thermal throttle activation offset */
+       ret = configure_thermal_target();
+       if (ret)
+               return ret;
+
+       /* Enable Direct Cache Access */
+       configure_dca_cap();
+
+       /* Set energy policy */
+       set_energy_perf_bias(ENERGY_POLICY_NORMAL);
+
+       /* Set Max Ratio */
+       set_max_ratio();
+
+       /* Enable Turbo */
+       turbo_enable();
+
+       /* Start up extra cores */
+       intel_cores_init(cpu);
+
+       return 0;
+}
diff --git a/arch/x86/cpu/ivybridge/northbridge.c b/arch/x86/cpu/ivybridge/northbridge.c
new file mode 100644 (file)
index 0000000..c50b5de
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * From Coreboot northbridge/intel/sandybridge/northbridge.c
+ *
+ * Copyright (C) 2007-2009 coresystems GmbH
+ * Copyright (C) 2011 The Chromium Authors
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/msr.h>
+#include <asm/acpi.h>
+#include <asm/cpu.h>
+#include <asm/io.h>
+#include <asm/pci.h>
+#include <asm/processor.h>
+#include <asm/arch/pch.h>
+#include <asm/arch/model_206ax.h>
+#include <asm/arch/sandybridge.h>
+
+static int bridge_revision_id = -1;
+
+int bridge_silicon_revision(void)
+{
+       if (bridge_revision_id < 0) {
+               struct cpuid_result result;
+               uint8_t stepping, bridge_id;
+               pci_dev_t dev;
+
+               result = cpuid(1);
+               stepping = result.eax & 0xf;
+               dev = PCI_BDF(0, 0, 0);
+               bridge_id = pci_read_config16(dev, PCI_DEVICE_ID) & 0xf0;
+               bridge_revision_id = bridge_id | stepping;
+       }
+
+       return bridge_revision_id;
+}
+
+/*
+ * Reserve everything between A segment and 1MB:
+ *
+ * 0xa0000 - 0xbffff: legacy VGA
+ * 0xc0000 - 0xcffff: VGA OPROM (needed by kernel)
+ * 0xe0000 - 0xfffff: SeaBIOS, if used, otherwise DMI
+ */
+static const int legacy_hole_base_k = 0xa0000 / 1024;
+static const int legacy_hole_size_k = 384;
+
+static int get_pcie_bar(u32 *base, u32 *len)
+{
+       pci_dev_t dev = PCI_BDF(0, 0, 0);
+       u32 pciexbar_reg;
+
+       *base = 0;
+       *len = 0;
+
+       pciexbar_reg = pci_read_config32(dev, PCIEXBAR);
+
+       if (!(pciexbar_reg & (1 << 0)))
+               return 0;
+
+       switch ((pciexbar_reg >> 1) & 3) {
+       case 0: /* 256MB */
+               *base = pciexbar_reg & ((1 << 31) | (1 << 30) | (1 << 29) |
+                               (1 << 28));
+               *len = 256 * 1024 * 1024;
+               return 1;
+       case 1: /* 128M */
+               *base = pciexbar_reg & ((1 << 31) | (1 << 30) | (1 << 29) |
+                               (1 << 28) | (1 << 27));
+               *len = 128 * 1024 * 1024;
+               return 1;
+       case 2: /* 64M */
+               *base = pciexbar_reg & ((1 << 31) | (1 << 30) | (1 << 29) |
+                               (1 << 28) | (1 << 27) | (1 << 26));
+               *len = 64 * 1024 * 1024;
+               return 1;
+       }
+
+       return 0;
+}
+
+static void add_fixed_resources(pci_dev_t dev, int index)
+{
+       u32 pcie_config_base, pcie_config_size;
+
+       if (get_pcie_bar(&pcie_config_base, &pcie_config_size)) {
+               debug("Adding PCIe config bar base=0x%08x size=0x%x\n",
+                     pcie_config_base, pcie_config_size);
+       }
+}
+
+static void northbridge_dmi_init(pci_dev_t dev)
+{
+       /* Clear error status bits */
+       writel(0xffffffff, DMIBAR_REG(0x1c4));
+       writel(0xffffffff, DMIBAR_REG(0x1d0));
+
+       /* Steps prior to DMI ASPM */
+       if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_SNB) {
+               clrsetbits_le32(DMIBAR_REG(0x250), (1 << 22) | (1 << 20),
+                               1 << 21);
+       }
+
+       setbits_le32(DMIBAR_REG(0x238), 1 << 29);
+
+       if (bridge_silicon_revision() >= SNB_STEP_D0) {
+               setbits_le32(DMIBAR_REG(0x1f8), 1 << 16);
+       } else if (bridge_silicon_revision() >= SNB_STEP_D1) {
+               clrsetbits_le32(DMIBAR_REG(0x1f8), 1 << 26, 1 << 16);
+               setbits_le32(DMIBAR_REG(0x1fc), (1 << 12) | (1 << 23));
+       }
+
+       /* Enable ASPM on SNB link, should happen before PCH link */
+       if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_SNB)
+               setbits_le32(DMIBAR_REG(0xd04), 1 << 4);
+
+       setbits_le32(DMIBAR_REG(0x88), (1 << 1) | (1 << 0));
+}
+
+void northbridge_init(pci_dev_t dev)
+{
+       u32 bridge_type;
+
+       add_fixed_resources(dev, 6);
+       northbridge_dmi_init(dev);
+
+       bridge_type = readl(MCHBAR_REG(0x5f10));
+       bridge_type &= ~0xff;
+
+       if ((bridge_silicon_revision() & BASE_REV_MASK) == BASE_REV_IVB) {
+               /* Enable Power Aware Interrupt Routing - fixed priority */
+               clrsetbits_8(MCHBAR_REG(0x5418), 0xf, 0x4);
+
+               /* 30h for IvyBridge */
+               bridge_type |= 0x30;
+       } else {
+               /* 20h for Sandybridge */
+               bridge_type |= 0x20;
+       }
+       writel(bridge_type, MCHBAR_REG(0x5f10));
+
+       /*
+        * Set bit 0 of BIOS_RESET_CPL to indicate to the CPU
+        * that BIOS has initialized memory and power management
+        */
+       setbits_8(MCHBAR_REG(BIOS_RESET_CPL), 1);
+       debug("Set BIOS_RESET_CPL\n");
+
+       /* Configure turbo power limits 1ms after reset complete bit */
+       mdelay(1);
+       set_power_limits(28);
+
+       /*
+        * CPUs with configurable TDP also need power limits set
+        * in MCHBAR.  Use same values from MSR_PKG_POWER_LIMIT.
+        */
+       if (cpu_config_tdp_levels()) {
+               msr_t msr = msr_read(MSR_PKG_POWER_LIMIT);
+
+               writel(msr.lo, MCHBAR_REG(0x59A0));
+               writel(msr.hi, MCHBAR_REG(0x59A4));
+       }
+
+       /* Set here before graphics PM init */
+       writel(0x00100001, MCHBAR_REG(0x5500));
+}
+
+void northbridge_enable(pci_dev_t dev)
+{
+#if CONFIG_HAVE_ACPI_RESUME
+       switch (pci_read_config32(dev, SKPAD)) {
+       case 0xcafebabe:
+               debug("Normal boot.\n");
+               apci_set_slp_type(0);
+               break;
+       case 0xcafed00d:
+               debug("S3 Resume.\n");
+               apci_set_slp_type(3);
+               break;
+       default:
+               debug("Unknown boot method, assuming normal.\n");
+               apci_set_slp_type(0);
+               break;
+       }
+#endif
+}
diff --git a/arch/x86/cpu/ivybridge/pch.c b/arch/x86/cpu/ivybridge/pch.c
new file mode 100644 (file)
index 0000000..fa04d48
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * From Coreboot
+ * Copyright (C) 2008-2009 coresystems GmbH
+ * Copyright (C) 2012 The Chromium OS Authors.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+
+static int pch_revision_id = -1;
+static int pch_type = -1;
+
+int pch_silicon_revision(void)
+{
+       pci_dev_t dev;
+
+       dev = PCH_LPC_DEV;
+
+       if (pch_revision_id < 0)
+               pch_revision_id = pci_read_config8(dev, PCI_REVISION_ID);
+       return pch_revision_id;
+}
+
+int pch_silicon_type(void)
+{
+       pci_dev_t dev;
+
+       dev = PCH_LPC_DEV;
+
+       if (pch_type < 0)
+               pch_type = pci_read_config8(dev, PCI_DEVICE_ID + 1);
+       return pch_type;
+}
+
+int pch_silicon_supported(int type, int rev)
+{
+       int cur_type = pch_silicon_type();
+       int cur_rev = pch_silicon_revision();
+
+       switch (type) {
+       case PCH_TYPE_CPT:
+               /* CougarPoint minimum revision */
+               if (cur_type == PCH_TYPE_CPT && cur_rev >= rev)
+                       return 1;
+               /* PantherPoint any revision */
+               if (cur_type == PCH_TYPE_PPT)
+                       return 1;
+               break;
+
+       case PCH_TYPE_PPT:
+               /* PantherPoint minimum revision */
+               if (cur_type == PCH_TYPE_PPT && cur_rev >= rev)
+                       return 1;
+               break;
+       }
+
+       return 0;
+}
+
+#define IOBP_RETRY 1000
+static inline int iobp_poll(void)
+{
+       unsigned try = IOBP_RETRY;
+       u32 data;
+
+       while (try--) {
+               data = readl(RCB_REG(IOBPS));
+               if ((data & 1) == 0)
+                       return 1;
+               udelay(10);
+       }
+
+       printf("IOBP timeout\n");
+       return 0;
+}
+
+void pch_iobp_update(u32 address, u32 andvalue, u32 orvalue)
+{
+       u32 data;
+
+       /* Set the address */
+       writel(address, RCB_REG(IOBPIRI));
+
+       /* READ OPCODE */
+       if (pch_silicon_supported(PCH_TYPE_CPT, PCH_STEP_B0))
+               writel(IOBPS_RW_BX, RCB_REG(IOBPS));
+       else
+               writel(IOBPS_READ_AX, RCB_REG(IOBPS));
+       if (!iobp_poll())
+               return;
+
+       /* Read IOBP data */
+       data = readl(RCB_REG(IOBPD));
+       if (!iobp_poll())
+               return;
+
+       /* Check for successful transaction */
+       if ((readl(RCB_REG(IOBPS)) & 0x6) != 0) {
+               printf("IOBP read 0x%08x failed\n", address);
+               return;
+       }
+
+       /* Update the data */
+       data &= andvalue;
+       data |= orvalue;
+
+       /* WRITE OPCODE */
+       if (pch_silicon_supported(PCH_TYPE_CPT, PCH_STEP_B0))
+               writel(IOBPS_RW_BX, RCB_REG(IOBPS));
+       else
+               writel(IOBPS_WRITE_AX, RCB_REG(IOBPS));
+       if (!iobp_poll())
+               return;
+
+       /* Write IOBP data */
+       writel(data, RCB_REG(IOBPD));
+       if (!iobp_poll())
+               return;
+}
diff --git a/arch/x86/cpu/ivybridge/pci.c b/arch/x86/cpu/ivybridge/pci.c
new file mode 100644 (file)
index 0000000..452d1c3
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2008,2009
+ * Graeme Russ, <graeme.russ@gmail.com>
+ *
+ * (C) Copyright 2002
+ * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <pci.h>
+#include <asm/pci.h>
+#include <asm/arch/bd82x6x.h>
+#include <asm/arch/pch.h>
+
+static void config_pci_bridge(struct pci_controller *hose, pci_dev_t dev,
+                             struct pci_config_table *table)
+{
+       u8 secondary;
+
+       hose->read_byte(hose, dev, PCI_SECONDARY_BUS, &secondary);
+       if (secondary != 0)
+               pci_hose_scan_bus(hose, secondary);
+}
+
+static struct pci_config_table pci_ivybridge_config_table[] = {
+       /* vendor, device, class, bus, dev, func */
+       { PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_BRIDGE_PCI,
+               PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, &config_pci_bridge },
+       {}
+};
+
+void board_pci_setup_hose(struct pci_controller *hose)
+{
+       hose->config_table = pci_ivybridge_config_table;
+       hose->first_busno = 0;
+       hose->last_busno = 0;
+
+       /* PCI memory space */
+       pci_set_region(hose->regions + 0,
+                      CONFIG_PCI_MEM_BUS,
+                      CONFIG_PCI_MEM_PHYS,
+                      CONFIG_PCI_MEM_SIZE,
+                      PCI_REGION_MEM);
+
+       /* PCI IO space */
+       pci_set_region(hose->regions + 1,
+                      CONFIG_PCI_IO_BUS,
+                      CONFIG_PCI_IO_PHYS,
+                      CONFIG_PCI_IO_SIZE,
+                      PCI_REGION_IO);
+
+       pci_set_region(hose->regions + 2,
+                      CONFIG_PCI_PREF_BUS,
+                      CONFIG_PCI_PREF_PHYS,
+                      CONFIG_PCI_PREF_SIZE,
+                      PCI_REGION_PREFETCH);
+
+       hose->region_count = 3;
+}
+
+int board_pci_pre_scan(struct pci_controller *hose)
+{
+       pci_dev_t dev;
+       u16 reg16;
+
+       bd82x6x_init();
+
+       reg16 = 0xff;
+       dev = PCH_DEV;
+       reg16 = pci_read_config16(dev, PCI_COMMAND);
+       reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+       pci_write_config16(dev, PCI_COMMAND, reg16);
+
+       /*
+       * Clear non-reserved bits in status register.
+       */
+       pci_hose_write_config_word(hose, dev, PCI_STATUS, 0xffff);
+       pci_hose_write_config_byte(hose, dev, PCI_LATENCY_TIMER, 0x80);
+       pci_hose_write_config_byte(hose, dev, PCI_CACHE_LINE_SIZE, 0x08);
+
+       pci_write_bar32(hose, dev, 0, 0xf0000000);
+
+       return 0;
+}
+
+int board_pci_post_scan(struct pci_controller *hose)
+{
+       int ret;
+
+       ret = bd82x6x_init_pci_devices();
+       if (ret) {
+               printf("bd82x6x_init_pci_devices() failed: %d\n", ret);
+               return ret;
+       }
+
+       return 0;
+}
diff --git a/arch/x86/cpu/ivybridge/report_platform.c b/arch/x86/cpu/ivybridge/report_platform.c
new file mode 100644 (file)
index 0000000..69e31b3
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * From Coreboot src/northbridge/intel/sandybridge/report_platform.c
+ *
+ * Copyright (C) 2012 Google Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/cpu.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+
+static void report_cpu_info(void)
+{
+       char cpu_string[CPU_MAX_NAME_LEN], *cpu_name;
+       const char *mode[] = {"NOT ", ""};
+       struct cpuid_result cpuidr;
+       int vt, txt, aes;
+       u32 index;
+
+       index = 0x80000000;
+       cpuidr = cpuid(index);
+       if (cpuidr.eax < 0x80000004) {
+               strcpy(cpu_string, "Platform info not available");
+               cpu_name = cpu_string;
+       } else {
+               cpu_name = cpu_get_name(cpu_string);
+       }
+
+       cpuidr = cpuid(1);
+       debug("CPU id(%x): %s\n", cpuidr.eax, cpu_name);
+       aes = (cpuidr.ecx & (1 << 25)) ? 1 : 0;
+       txt = (cpuidr.ecx & (1 << 6)) ? 1 : 0;
+       vt = (cpuidr.ecx & (1 << 5)) ? 1 : 0;
+       debug("AES %ssupported, TXT %ssupported, VT %ssupported\n",
+             mode[aes], mode[txt], mode[vt]);
+}
+
+/* The PCI id name match comes from Intel document 472178 */
+static struct {
+       u16 dev_id;
+       const char *dev_name;
+} pch_table[] = {
+       {0x1E41, "Desktop Sample"},
+       {0x1E42, "Mobile Sample"},
+       {0x1E43, "SFF Sample"},
+       {0x1E44, "Z77"},
+       {0x1E45, "H71"},
+       {0x1E46, "Z75"},
+       {0x1E47, "Q77"},
+       {0x1E48, "Q75"},
+       {0x1E49, "B75"},
+       {0x1E4A, "H77"},
+       {0x1E53, "C216"},
+       {0x1E55, "QM77"},
+       {0x1E56, "QS77"},
+       {0x1E58, "UM77"},
+       {0x1E57, "HM77"},
+       {0x1E59, "HM76"},
+       {0x1E5D, "HM75"},
+       {0x1E5E, "HM70"},
+       {0x1E5F, "NM70"},
+};
+
+static void report_pch_info(void)
+{
+       const char *pch_type = "Unknown";
+       int i;
+       u16 dev_id;
+       uint8_t rev_id;
+
+       dev_id = pci_read_config16(PCH_LPC_DEV, 2);
+       for (i = 0; i < ARRAY_SIZE(pch_table); i++) {
+               if (pch_table[i].dev_id == dev_id) {
+                       pch_type = pch_table[i].dev_name;
+                       break;
+               }
+       }
+       rev_id = pci_read_config8(PCH_LPC_DEV, 8);
+       debug("PCH type: %s, device id: %x, rev id %x\n", pch_type, dev_id,
+             rev_id);
+}
+
+void report_platform_info(void)
+{
+       report_cpu_info();
+       report_pch_info();
+}
diff --git a/arch/x86/cpu/ivybridge/sata.c b/arch/x86/cpu/ivybridge/sata.c
new file mode 100644 (file)
index 0000000..bbcd47d
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ * From Coreboot
+ * Copyright (C) 2008-2009 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <fdtdec.h>
+#include <asm/io.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+#include <asm/arch/bd82x6x.h>
+
+static inline u32 sir_read(pci_dev_t dev, int idx)
+{
+       pci_write_config32(dev, SATA_SIRI, idx);
+       return pci_read_config32(dev, SATA_SIRD);
+}
+
+static inline void sir_write(pci_dev_t dev, int idx, u32 value)
+{
+       pci_write_config32(dev, SATA_SIRI, idx);
+       pci_write_config32(dev, SATA_SIRD, value);
+}
+
+static void common_sata_init(pci_dev_t dev, unsigned int port_map)
+{
+       u32 reg32;
+       u16 reg16;
+
+       /* Set IDE I/O Configuration */
+       reg32 = SIG_MODE_PRI_NORMAL | FAST_PCB1 | FAST_PCB0 | PCB1 | PCB0;
+       pci_write_config32(dev, IDE_CONFIG, reg32);
+
+       /* Port enable */
+       reg16 = pci_read_config16(dev, 0x92);
+       reg16 &= ~0x3f;
+       reg16 |= port_map;
+       pci_write_config16(dev, 0x92, reg16);
+
+       /* SATA Initialization register */
+       port_map &= 0xff;
+       pci_write_config32(dev, 0x94, ((port_map ^ 0x3f) << 24) | 0x183);
+}
+
+void bd82x6x_sata_init(pci_dev_t dev, const void *blob, int node)
+{
+       unsigned int port_map, speed_support, port_tx;
+       struct pci_controller *hose = pci_bus_to_hose(0);
+       const char *mode;
+       u32 reg32;
+       u16 reg16;
+
+       debug("SATA: Initializing...\n");
+
+       /* SATA configuration */
+       port_map = fdtdec_get_int(blob, node, "intel,sata-port-map", 0);
+       speed_support = fdtdec_get_int(blob, node,
+                                      "sata_interface_speed_support", 0);
+
+       /* Enable BARs */
+       pci_write_config16(dev, PCI_COMMAND, 0x0007);
+
+       mode = fdt_getprop(blob, node, "intel,sata-mode", NULL);
+       if (!mode || !strcmp(mode, "ahci")) {
+               u32 abar;
+
+               debug("SATA: Controller in AHCI mode\n");
+
+               /* Set Interrupt Line, Interrupt Pin is set by D31IP.PIP */
+               pci_write_config8(dev, INTR_LN, 0x0a);
+
+               /* Set timings */
+               pci_write_config16(dev, IDE_TIM_PRI, IDE_DECODE_ENABLE |
+                               IDE_ISP_3_CLOCKS | IDE_RCT_1_CLOCKS |
+                               IDE_PPE0 | IDE_IE0 | IDE_TIME0);
+               pci_write_config16(dev, IDE_TIM_SEC, IDE_DECODE_ENABLE |
+                               IDE_ISP_5_CLOCKS | IDE_RCT_4_CLOCKS);
+
+               /* Sync DMA */
+               pci_write_config16(dev, IDE_SDMA_CNT, IDE_PSDE0);
+               pci_write_config16(dev, IDE_SDMA_TIM, 0x0001);
+
+               common_sata_init(dev, 0x8000 | port_map);
+
+               /* Initialize AHCI memory-mapped space */
+               abar = pci_read_bar32(hose, dev, 5);
+               debug("ABAR: %08X\n", abar);
+               /* CAP (HBA Capabilities) : enable power management */
+               reg32 = readl(abar + 0x00);
+               reg32 |= 0x0c006000;  /* set PSC+SSC+SALP+SSS */
+               reg32 &= ~0x00020060; /* clear SXS+EMS+PMS */
+               /* Set ISS, if available */
+               if (speed_support) {
+                       reg32 &= ~0x00f00000;
+                       reg32 |= (speed_support & 0x03) << 20;
+               }
+               writel(reg32, abar + 0x00);
+               /* PI (Ports implemented) */
+               writel(port_map, abar + 0x0c);
+               (void) readl(abar + 0x0c); /* Read back 1 */
+               (void) readl(abar + 0x0c); /* Read back 2 */
+               /* CAP2 (HBA Capabilities Extended)*/
+               reg32 = readl(abar + 0x24);
+               reg32 &= ~0x00000002;
+               writel(reg32, abar + 0x24);
+               /* VSP (Vendor Specific Register */
+               reg32 = readl(abar + 0xa0);
+               reg32 &= ~0x00000005;
+               writel(reg32, abar + 0xa0);
+       } else if (!strcmp(mode, "combined")) {
+               debug("SATA: Controller in combined mode\n");
+
+               /* No AHCI: clear AHCI base */
+               pci_write_bar32(hose, dev, 5, 0x00000000);
+               /* And without AHCI BAR no memory decoding */
+               reg16 = pci_read_config16(dev, PCI_COMMAND);
+               reg16 &= ~PCI_COMMAND_MEMORY;
+               pci_write_config16(dev, PCI_COMMAND, reg16);
+
+               pci_write_config8(dev, 0x09, 0x80);
+
+               /* Set timings */
+               pci_write_config16(dev, IDE_TIM_PRI, IDE_DECODE_ENABLE |
+                               IDE_ISP_5_CLOCKS | IDE_RCT_4_CLOCKS);
+               pci_write_config16(dev, IDE_TIM_SEC, IDE_DECODE_ENABLE |
+                               IDE_ISP_3_CLOCKS | IDE_RCT_1_CLOCKS |
+                               IDE_PPE0 | IDE_IE0 | IDE_TIME0);
+
+               /* Sync DMA */
+               pci_write_config16(dev, IDE_SDMA_CNT, IDE_SSDE0);
+               pci_write_config16(dev, IDE_SDMA_TIM, 0x0200);
+
+               common_sata_init(dev, port_map);
+       } else {
+               debug("SATA: Controller in plain-ide mode\n");
+
+               /* No AHCI: clear AHCI base */
+               pci_write_bar32(hose, dev, 5, 0x00000000);
+
+               /* And without AHCI BAR no memory decoding */
+               reg16 = pci_read_config16(dev, PCI_COMMAND);
+               reg16 &= ~PCI_COMMAND_MEMORY;
+               pci_write_config16(dev, PCI_COMMAND, reg16);
+
+               /*
+                * Native mode capable on both primary and secondary (0xa)
+                * OR'ed with enabled (0x50) = 0xf
+                */
+               pci_write_config8(dev, 0x09, 0x8f);
+
+               /* Set Interrupt Line */
+               /* Interrupt Pin is set by D31IP.PIP */
+               pci_write_config8(dev, INTR_LN, 0xff);
+
+               /* Set timings */
+               pci_write_config16(dev, IDE_TIM_PRI, IDE_DECODE_ENABLE |
+                               IDE_ISP_3_CLOCKS | IDE_RCT_1_CLOCKS |
+                               IDE_PPE0 | IDE_IE0 | IDE_TIME0);
+               pci_write_config16(dev, IDE_TIM_SEC, IDE_DECODE_ENABLE |
+                               IDE_SITRE | IDE_ISP_3_CLOCKS |
+                               IDE_RCT_1_CLOCKS | IDE_IE0 | IDE_TIME0);
+
+               /* Sync DMA */
+               pci_write_config16(dev, IDE_SDMA_CNT, IDE_SSDE0 | IDE_PSDE0);
+               pci_write_config16(dev, IDE_SDMA_TIM, 0x0201);
+
+               common_sata_init(dev, port_map);
+       }
+
+       /* Set Gen3 Transmitter settings if needed */
+       port_tx = fdtdec_get_int(blob, node, "intel,sata-port0-gen3-tx", 0);
+       if (port_tx)
+               pch_iobp_update(SATA_IOBP_SP0G3IR, 0, port_tx);
+
+       port_tx = fdtdec_get_int(blob, node, "intel,sata-port1-gen3-tx", 0);
+       if (port_tx)
+               pch_iobp_update(SATA_IOBP_SP1G3IR, 0, port_tx);
+
+       /* Additional Programming Requirements */
+       sir_write(dev, 0x04, 0x00001600);
+       sir_write(dev, 0x28, 0xa0000033);
+       reg32 = sir_read(dev, 0x54);
+       reg32 &= 0xff000000;
+       reg32 |= 0x5555aa;
+       sir_write(dev, 0x54, reg32);
+       sir_write(dev, 0x64, 0xcccc8484);
+       reg32 = sir_read(dev, 0x68);
+       reg32 &= 0xffff0000;
+       reg32 |= 0xcccc;
+       sir_write(dev, 0x68, reg32);
+       reg32 = sir_read(dev, 0x78);
+       reg32 &= 0x0000ffff;
+       reg32 |= 0x88880000;
+       sir_write(dev, 0x78, reg32);
+       sir_write(dev, 0x84, 0x001c7000);
+       sir_write(dev, 0x88, 0x88338822);
+       sir_write(dev, 0xa0, 0x001c7000);
+       sir_write(dev, 0xc4, 0x0c0c0c0c);
+       sir_write(dev, 0xc8, 0x0c0c0c0c);
+       sir_write(dev, 0xd4, 0x10000000);
+
+       pch_iobp_update(0xea004001, 0x3fffffff, 0xc0000000);
+       pch_iobp_update(0xea00408a, 0xfffffcff, 0x00000100);
+}
+
+void bd82x6x_sata_enable(pci_dev_t dev, const void *blob, int node)
+{
+       unsigned port_map;
+       const char *mode;
+       u16 map = 0;
+
+       /*
+        * Set SATA controller mode early so the resource allocator can
+        * properly assign IO/Memory resources for the controller.
+        */
+       mode = fdt_getprop(blob, node, "intel,sata-mode", NULL);
+       if (mode && !strcmp(mode, "ahci"))
+               map = 0x0060;
+       port_map = fdtdec_get_int(blob, node, "intel,sata-port-map", 0);
+
+       map |= (port_map ^ 0x3f) << 8;
+       pci_write_config16(dev, 0x90, map);
+}
diff --git a/arch/x86/cpu/ivybridge/sdram.c b/arch/x86/cpu/ivybridge/sdram.c
new file mode 100644 (file)
index 0000000..9504735
--- /dev/null
@@ -0,0 +1,581 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2010,2011
+ * Graeme Russ, <graeme.russ@gmail.com>
+ *
+ * Portions from Coreboot mainboard/google/link/romstage.c
+ * Copyright (C) 2007-2010 coresystems GmbH
+ * Copyright (C) 2011 Google Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <malloc.h>
+#include <asm/processor.h>
+#include <asm/gpio.h>
+#include <asm/global_data.h>
+#include <asm/mtrr.h>
+#include <asm/pci.h>
+#include <asm/arch/me.h>
+#include <asm/arch/pei_data.h>
+#include <asm/arch/pch.h>
+#include <asm/post.h>
+#include <asm/arch/sandybridge.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * This function looks for the highest region of memory lower than 4GB which
+ * has enough space for U-Boot where U-Boot is aligned on a page boundary.
+ * It overrides the default implementation found elsewhere which simply
+ * picks the end of ram, wherever that may be. The location of the stack,
+ * the relocation address, and how far U-Boot is moved by relocation are
+ * set in the global data structure.
+ */
+ulong board_get_usable_ram_top(ulong total_size)
+{
+       struct memory_info *info = &gd->arch.meminfo;
+       uintptr_t dest_addr = 0;
+       struct memory_area *largest = NULL;
+       int i;
+
+       /* Find largest area of memory below 4GB */
+
+       for (i = 0; i < info->num_areas; i++) {
+               struct memory_area *area = &info->area[i];
+
+               if (area->start >= 1ULL << 32)
+                       continue;
+               if (!largest || area->size > largest->size)
+                       largest = area;
+       }
+
+       /* If no suitable area was found, return an error. */
+       assert(largest);
+       if (!largest || largest->size < (2 << 20))
+               panic("No available memory found for relocation");
+
+       dest_addr = largest->start + largest->size;
+
+       return (ulong)dest_addr;
+}
+
+void dram_init_banksize(void)
+{
+       struct memory_info *info = &gd->arch.meminfo;
+       int num_banks;
+       int i;
+
+       for (i = 0, num_banks = 0; i < info->num_areas; i++) {
+               struct memory_area *area = &info->area[i];
+
+               if (area->start >= 1ULL << 32)
+                       continue;
+               gd->bd->bi_dram[num_banks].start = area->start;
+               gd->bd->bi_dram[num_banks].size = area->size;
+               num_banks++;
+       }
+}
+
+static const char *const ecc_decoder[] = {
+       "inactive",
+       "active on IO",
+       "disabled on IO",
+       "active"
+};
+
+/*
+ * Dump in the log memory controller configuration as read from the memory
+ * controller registers.
+ */
+static void report_memory_config(void)
+{
+       u32 addr_decoder_common, addr_decode_ch[2];
+       int i;
+
+       addr_decoder_common = readl(MCHBAR_REG(0x5000));
+       addr_decode_ch[0] = readl(MCHBAR_REG(0x5004));
+       addr_decode_ch[1] = readl(MCHBAR_REG(0x5008));
+
+       debug("memcfg DDR3 clock %d MHz\n",
+             (readl(MCHBAR_REG(0x5e04)) * 13333 * 2 + 50) / 100);
+       debug("memcfg channel assignment: A: %d, B % d, C % d\n",
+             addr_decoder_common & 3,
+             (addr_decoder_common >> 2) & 3,
+             (addr_decoder_common >> 4) & 3);
+
+       for (i = 0; i < ARRAY_SIZE(addr_decode_ch); i++) {
+               u32 ch_conf = addr_decode_ch[i];
+               debug("memcfg channel[%d] config (%8.8x):\n", i, ch_conf);
+               debug("   ECC %s\n", ecc_decoder[(ch_conf >> 24) & 3]);
+               debug("   enhanced interleave mode %s\n",
+                     ((ch_conf >> 22) & 1) ? "on" : "off");
+               debug("   rank interleave %s\n",
+                     ((ch_conf >> 21) & 1) ? "on" : "off");
+               debug("   DIMMA %d MB width x%d %s rank%s\n",
+                     ((ch_conf >> 0) & 0xff) * 256,
+                     ((ch_conf >> 19) & 1) ? 16 : 8,
+                     ((ch_conf >> 17) & 1) ? "dual" : "single",
+                     ((ch_conf >> 16) & 1) ? "" : ", selected");
+               debug("   DIMMB %d MB width x%d %s rank%s\n",
+                     ((ch_conf >> 8) & 0xff) * 256,
+                     ((ch_conf >> 20) & 1) ? 16 : 8,
+                     ((ch_conf >> 18) & 1) ? "dual" : "single",
+                     ((ch_conf >> 16) & 1) ? ", selected" : "");
+       }
+}
+
+static void post_system_agent_init(struct pei_data *pei_data)
+{
+       /* If PCIe init is skipped, set the PEG clock gating */
+       if (!pei_data->pcie_init)
+               setbits_le32(MCHBAR_REG(0x7010), 1);
+}
+
+static asmlinkage void console_tx_byte(unsigned char byte)
+{
+#ifdef DEBUG
+       putc(byte);
+#endif
+}
+
+/**
+ * Find the PEI executable in the ROM and execute it.
+ *
+ * @param pei_data: configuration data for UEFI PEI reference code
+ */
+int sdram_initialise(struct pei_data *pei_data)
+{
+       unsigned version;
+       const char *data;
+       uint16_t done;
+       int ret;
+
+       report_platform_info();
+
+       /* Wait for ME to be ready */
+       ret = intel_early_me_init();
+       if (ret)
+               return ret;
+       ret = intel_early_me_uma_size();
+       if (ret < 0)
+               return ret;
+
+       debug("Starting UEFI PEI System Agent\n");
+
+       /* If MRC data is not found we cannot continue S3 resume. */
+       if (pei_data->boot_mode == PEI_BOOT_RESUME && !pei_data->mrc_input) {
+               debug("Giving up in sdram_initialize: No MRC data\n");
+               outb(0x6, PORT_RESET);
+               cpu_hlt();
+       }
+
+       /* Pass console handler in pei_data */
+       pei_data->tx_byte = console_tx_byte;
+
+       debug("PEI data at %p, size %x:\n", pei_data, sizeof(*pei_data));
+
+       data = (char *)CONFIG_X86_MRC_ADDR;
+       if (data) {
+               int rv;
+               int (*func)(struct pei_data *);
+
+               debug("Calling MRC at %p\n", data);
+               post_code(POST_PRE_MRC);
+               func = (int (*)(struct pei_data *))data;
+               rv = func(pei_data);
+               post_code(POST_MRC);
+               if (rv) {
+                       switch (rv) {
+                       case -1:
+                               printf("PEI version mismatch.\n");
+                               break;
+                       case -2:
+                               printf("Invalid memory frequency.\n");
+                               break;
+                       default:
+                               printf("MRC returned %x.\n", rv);
+                       }
+                       printf("Nonzero MRC return value.\n");
+                       return -EFAULT;
+               }
+       } else {
+               printf("UEFI PEI System Agent not found.\n");
+               return -ENOSYS;
+       }
+
+#if CONFIG_USBDEBUG
+       /* mrc.bin reconfigures USB, so reinit it to have debug */
+       early_usbdebug_init();
+#endif
+
+       version = readl(MCHBAR_REG(0x5034));
+       debug("System Agent Version %d.%d.%d Build %d\n",
+             version >> 24 , (version >> 16) & 0xff,
+             (version >> 8) & 0xff, version & 0xff);
+
+       /*
+        * Send ME init done for SandyBridge here.  This is done inside the
+        * SystemAgent binary on IvyBridge
+        */
+       done = pci_read_config32(PCH_DEV, PCI_DEVICE_ID);
+       done &= BASE_REV_MASK;
+       if (BASE_REV_SNB == done)
+               intel_early_me_init_done(ME_INIT_STATUS_SUCCESS);
+       else
+               intel_early_me_status();
+
+       post_system_agent_init(pei_data);
+       report_memory_config();
+
+       return 0;
+}
+
+static int copy_spd(struct pei_data *peid)
+{
+       const int gpio_vector[] = {41, 42, 43, 10, -1};
+       int spd_index;
+       const void *blob = gd->fdt_blob;
+       int node, spd_node;
+       int ret, i;
+
+       for (i = 0; ; i++) {
+               if (gpio_vector[i] == -1)
+                       break;
+               ret = gpio_requestf(gpio_vector[i], "spd_id%d", i);
+               if (ret) {
+                       debug("%s: Could not request gpio %d\n", __func__,
+                             gpio_vector[i]);
+                       return ret;
+               }
+       }
+       spd_index = gpio_get_values_as_int(gpio_vector);
+       debug("spd index %d\n", spd_index);
+       node = fdtdec_next_compatible(blob, 0, COMPAT_MEMORY_SPD);
+       if (node < 0) {
+               printf("SPD data not found.\n");
+               return -ENOENT;
+       }
+
+       for (spd_node = fdt_first_subnode(blob, node);
+            spd_node > 0;
+            spd_node = fdt_next_subnode(blob, spd_node)) {
+               const char *data;
+               int len;
+
+               if (fdtdec_get_int(blob, spd_node, "reg", -1) != spd_index)
+                       continue;
+               data = fdt_getprop(blob, spd_node, "data", &len);
+               if (len < sizeof(peid->spd_data[0])) {
+                       printf("Missing SPD data\n");
+                       return -EINVAL;
+               }
+
+               debug("Using SDRAM SPD data for '%s'\n",
+                     fdt_get_name(blob, spd_node, NULL));
+               memcpy(peid->spd_data[0], data, sizeof(peid->spd_data[0]));
+               break;
+       }
+
+       if (spd_node < 0) {
+               printf("No SPD data found for index %d\n", spd_index);
+               return -ENOENT;
+       }
+
+       return 0;
+}
+
+/**
+ * add_memory_area() - Add a new usable memory area to our list
+ *
+ * Note: @start and @end must not span the first 4GB boundary
+ *
+ * @info:      Place to store memory info
+ * @start:     Start of this memory area
+ * @end:       End of this memory area + 1
+ */
+static int add_memory_area(struct memory_info *info,
+                          uint64_t start, uint64_t end)
+{
+       struct memory_area *ptr;
+
+       if (info->num_areas == CONFIG_NR_DRAM_BANKS)
+               return -ENOSPC;
+
+       ptr = &info->area[info->num_areas];
+       ptr->start = start;
+       ptr->size = end - start;
+       info->total_memory += ptr->size;
+       if (ptr->start < (1ULL << 32))
+               info->total_32bit_memory += ptr->size;
+       debug("%d: memory %llx size %llx, total now %llx / %llx\n",
+             info->num_areas, ptr->start, ptr->size,
+             info->total_32bit_memory, info->total_memory);
+       info->num_areas++;
+
+       return 0;
+}
+
+/**
+ * sdram_find() - Find available memory
+ *
+ * This is a bit complicated since on x86 there are system memory holes all
+ * over the place. We create a list of available memory blocks
+ */
+static int sdram_find(pci_dev_t dev)
+{
+       struct memory_info *info = &gd->arch.meminfo;
+       uint32_t tseg_base, uma_size, tolud;
+       uint64_t tom, me_base, touud;
+       uint64_t uma_memory_base = 0;
+       uint64_t uma_memory_size;
+       unsigned long long tomk;
+       uint16_t ggc;
+
+       /* Total Memory 2GB example:
+        *
+        *  00000000  0000MB-1992MB  1992MB  RAM     (writeback)
+        *  7c800000  1992MB-2000MB     8MB  TSEG    (SMRR)
+        *  7d000000  2000MB-2002MB     2MB  GFX GTT (uncached)
+        *  7d200000  2002MB-2034MB    32MB  GFX UMA (uncached)
+        *  7f200000   2034MB TOLUD
+        *  7f800000   2040MB MEBASE
+        *  7f800000  2040MB-2048MB     8MB  ME UMA  (uncached)
+        *  80000000   2048MB TOM
+        * 100000000  4096MB-4102MB     6MB  RAM     (writeback)
+        *
+        * Total Memory 4GB example:
+        *
+        *  00000000  0000MB-2768MB  2768MB  RAM     (writeback)
+        *  ad000000  2768MB-2776MB     8MB  TSEG    (SMRR)
+        *  ad800000  2776MB-2778MB     2MB  GFX GTT (uncached)
+        *  ada00000  2778MB-2810MB    32MB  GFX UMA (uncached)
+        *  afa00000   2810MB TOLUD
+        *  ff800000   4088MB MEBASE
+        *  ff800000  4088MB-4096MB     8MB  ME UMA  (uncached)
+        * 100000000   4096MB TOM
+        * 100000000  4096MB-5374MB  1278MB  RAM     (writeback)
+        * 14fe00000   5368MB TOUUD
+        */
+
+       /* Top of Upper Usable DRAM, including remap */
+       touud = pci_read_config32(dev, TOUUD+4);
+       touud <<= 32;
+       touud |= pci_read_config32(dev, TOUUD);
+
+       /* Top of Lower Usable DRAM */
+       tolud = pci_read_config32(dev, TOLUD);
+
+       /* Top of Memory - does not account for any UMA */
+       tom = pci_read_config32(dev, 0xa4);
+       tom <<= 32;
+       tom |= pci_read_config32(dev, 0xa0);
+
+       debug("TOUUD %llx TOLUD %08x TOM %llx\n", touud, tolud, tom);
+
+       /* ME UMA needs excluding if total memory <4GB */
+       me_base = pci_read_config32(dev, 0x74);
+       me_base <<= 32;
+       me_base |= pci_read_config32(dev, 0x70);
+
+       debug("MEBASE %llx\n", me_base);
+
+       /* TODO: Get rid of all this shifting by 10 bits */
+       tomk = tolud >> 10;
+       if (me_base == tolud) {
+               /* ME is from MEBASE-TOM */
+               uma_size = (tom - me_base) >> 10;
+               /* Increment TOLUD to account for ME as RAM */
+               tolud += uma_size << 10;
+               /* UMA starts at old TOLUD */
+               uma_memory_base = tomk * 1024ULL;
+               uma_memory_size = uma_size * 1024ULL;
+               debug("ME UMA base %llx size %uM\n", me_base, uma_size >> 10);
+       }
+
+       /* Graphics memory comes next */
+       ggc = pci_read_config16(dev, GGC);
+       if (!(ggc & 2)) {
+               debug("IGD decoded, subtracting ");
+
+               /* Graphics memory */
+               uma_size = ((ggc >> 3) & 0x1f) * 32 * 1024ULL;
+               debug("%uM UMA", uma_size >> 10);
+               tomk -= uma_size;
+               uma_memory_base = tomk * 1024ULL;
+               uma_memory_size += uma_size * 1024ULL;
+
+               /* GTT Graphics Stolen Memory Size (GGMS) */
+               uma_size = ((ggc >> 8) & 0x3) * 1024ULL;
+               tomk -= uma_size;
+               uma_memory_base = tomk * 1024ULL;
+               uma_memory_size += uma_size * 1024ULL;
+               debug(" and %uM GTT\n", uma_size >> 10);
+       }
+
+       /* Calculate TSEG size from its base which must be below GTT */
+       tseg_base = pci_read_config32(dev, 0xb8);
+       uma_size = (uma_memory_base - tseg_base) >> 10;
+       tomk -= uma_size;
+       uma_memory_base = tomk * 1024ULL;
+       uma_memory_size += uma_size * 1024ULL;
+       debug("TSEG base 0x%08x size %uM\n", tseg_base, uma_size >> 10);
+
+       debug("Available memory below 4GB: %lluM\n", tomk >> 10);
+
+       /* Report the memory regions */
+       add_memory_area(info, 1 << 20, 2 << 28);
+       add_memory_area(info, (2 << 28) + (2 << 20), 4 << 28);
+       add_memory_area(info, (4 << 28) + (2 << 20), tseg_base);
+       add_memory_area(info, 1ULL << 32, touud);
+
+       /* Add MTRRs for memory */
+       mtrr_add_request(MTRR_TYPE_WRBACK, 0, 2ULL << 30);
+       mtrr_add_request(MTRR_TYPE_WRBACK, 2ULL << 30, 512 << 20);
+       mtrr_add_request(MTRR_TYPE_WRBACK, 0xaULL << 28, 256 << 20);
+       mtrr_add_request(MTRR_TYPE_UNCACHEABLE, tseg_base, 16 << 20);
+       mtrr_add_request(MTRR_TYPE_UNCACHEABLE, tseg_base + (16 << 20),
+                        32 << 20);
+
+       /*
+        * If >= 4GB installed then memory from TOLUD to 4GB
+        * is remapped above TOM, TOUUD will account for both
+        */
+       if (touud > (1ULL << 32ULL)) {
+               debug("Available memory above 4GB: %lluM\n",
+                     (touud >> 20) - 4096);
+       }
+
+       return 0;
+}
+
+static void rcba_config(void)
+{
+       /*
+        *             GFX    INTA -> PIRQA (MSI)
+        * D28IP_P3IP  WLAN   INTA -> PIRQB
+        * D29IP_E1P   EHCI1  INTA -> PIRQD
+        * D26IP_E2P   EHCI2  INTA -> PIRQF
+        * D31IP_SIP   SATA   INTA -> PIRQF (MSI)
+        * D31IP_SMIP  SMBUS  INTB -> PIRQH
+        * D31IP_TTIP  THRT   INTC -> PIRQA
+        * D27IP_ZIP   HDA    INTA -> PIRQA (MSI)
+        *
+        * TRACKPAD                -> PIRQE (Edge Triggered)
+        * TOUCHSCREEN             -> PIRQG (Edge Triggered)
+        */
+
+       /* Device interrupt pin register (board specific) */
+       writel((INTC << D31IP_TTIP) | (NOINT << D31IP_SIP2) |
+              (INTB << D31IP_SMIP) | (INTA << D31IP_SIP), RCB_REG(D31IP));
+       writel(NOINT << D30IP_PIP, RCB_REG(D30IP));
+       writel(INTA << D29IP_E1P, RCB_REG(D29IP));
+       writel(INTA << D28IP_P3IP, RCB_REG(D28IP));
+       writel(INTA << D27IP_ZIP, RCB_REG(D27IP));
+       writel(INTA << D26IP_E2P, RCB_REG(D26IP));
+       writel(NOINT << D25IP_LIP, RCB_REG(D25IP));
+       writel(NOINT << D22IP_MEI1IP, RCB_REG(D22IP));
+
+       /* Device interrupt route registers */
+       writel(DIR_ROUTE(PIRQB, PIRQH, PIRQA, PIRQC), RCB_REG(D31IR));
+       writel(DIR_ROUTE(PIRQD, PIRQE, PIRQF, PIRQG), RCB_REG(D29IR));
+       writel(DIR_ROUTE(PIRQB, PIRQC, PIRQD, PIRQE), RCB_REG(D28IR));
+       writel(DIR_ROUTE(PIRQA, PIRQH, PIRQA, PIRQB), RCB_REG(D27IR));
+       writel(DIR_ROUTE(PIRQF, PIRQE, PIRQG, PIRQH), RCB_REG(D26IR));
+       writel(DIR_ROUTE(PIRQA, PIRQB, PIRQC, PIRQD), RCB_REG(D25IR));
+       writel(DIR_ROUTE(PIRQA, PIRQB, PIRQC, PIRQD), RCB_REG(D22IR));
+
+       /* Enable IOAPIC (generic) */
+       writew(0x0100, RCB_REG(OIC));
+       /* PCH BWG says to read back the IOAPIC enable register */
+       (void)readw(RCB_REG(OIC));
+
+       /* Disable unused devices (board specific) */
+       setbits_le32(RCB_REG(FD), PCH_DISABLE_ALWAYS);
+}
+
+int dram_init(void)
+{
+       struct pei_data pei_data __aligned(8) = {
+               .pei_version = PEI_VERSION,
+               .mchbar = DEFAULT_MCHBAR,
+               .dmibar = DEFAULT_DMIBAR,
+               .epbar = DEFAULT_EPBAR,
+               .pciexbar = CONFIG_MMCONF_BASE_ADDRESS,
+               .smbusbar = SMBUS_IO_BASE,
+               .wdbbar = 0x4000000,
+               .wdbsize = 0x1000,
+               .hpet_address = CONFIG_HPET_ADDRESS,
+               .rcba = DEFAULT_RCBABASE,
+               .pmbase = DEFAULT_PMBASE,
+               .gpiobase = DEFAULT_GPIOBASE,
+               .thermalbase = 0xfed08000,
+               .system_type = 0, /* 0 Mobile, 1 Desktop/Server */
+               .tseg_size = CONFIG_SMM_TSEG_SIZE,
+               .ts_addresses = { 0x00, 0x00, 0x00, 0x00 },
+               .ec_present = 1,
+               .ddr3lv_support = 1,
+               /*
+                * 0 = leave channel enabled
+                * 1 = disable dimm 0 on channel
+                * 2 = disable dimm 1 on channel
+                * 3 = disable dimm 0+1 on channel
+                */
+               .dimm_channel0_disabled = 2,
+               .dimm_channel1_disabled = 2,
+               .max_ddr3_freq = 1600,
+               .usb_port_config = {
+                       /*
+                        * Empty and onboard Ports 0-7, set to un-used pin
+                        * OC3
+                        */
+                       { 0, 3, 0x0000 }, /* P0= Empty */
+                       { 1, 0, 0x0040 }, /* P1= Left USB 1  (OC0) */
+                       { 1, 1, 0x0040 }, /* P2= Left USB 2  (OC1) */
+                       { 1, 3, 0x0040 }, /* P3= SDCARD      (no OC) */
+                       { 0, 3, 0x0000 }, /* P4= Empty */
+                       { 1, 3, 0x0040 }, /* P5= WWAN        (no OC) */
+                       { 0, 3, 0x0000 }, /* P6= Empty */
+                       { 0, 3, 0x0000 }, /* P7= Empty */
+                       /*
+                        * Empty and onboard Ports 8-13, set to un-used pin
+                        * OC4
+                        */
+                       { 1, 4, 0x0040 }, /* P8= Camera      (no OC) */
+                       { 1, 4, 0x0040 }, /* P9= Bluetooth   (no OC) */
+                       { 0, 4, 0x0000 }, /* P10= Empty */
+                       { 0, 4, 0x0000 }, /* P11= Empty */
+                       { 0, 4, 0x0000 }, /* P12= Empty */
+                       { 0, 4, 0x0000 }, /* P13= Empty */
+               },
+       };
+       pci_dev_t dev = PCI_BDF(0, 0, 0);
+       int ret;
+
+       debug("Boot mode %d\n", gd->arch.pei_boot_mode);
+       debug("mcr_input %p\n", pei_data.mrc_input);
+       pei_data.boot_mode = gd->arch.pei_boot_mode;
+       ret = copy_spd(&pei_data);
+       if (!ret)
+               ret = sdram_initialise(&pei_data);
+       if (ret)
+               return ret;
+
+       rcba_config();
+       quick_ram_check();
+
+       writew(0xCAFE, MCHBAR_REG(SSKPD));
+
+       post_code(POST_DRAM);
+
+       ret = sdram_find(dev);
+       if (ret)
+               return ret;
+
+       gd->ram_size = gd->arch.meminfo.total_32bit_memory;
+
+       return 0;
+}
diff --git a/arch/x86/cpu/ivybridge/usb_ehci.c b/arch/x86/cpu/ivybridge/usb_ehci.c
new file mode 100644 (file)
index 0000000..291c971
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * From Coreboot
+ * Copyright (C) 2008-2009 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+
+void bd82x6x_usb_ehci_init(pci_dev_t dev)
+{
+       u32 reg32;
+
+       /* Disable Wake on Disconnect in RMH */
+       reg32 = readl(RCB_REG(0x35b0));
+       reg32 |= 0x22;
+       writel(reg32, RCB_REG(0x35b0));
+
+       debug("EHCI: Setting up controller.. ");
+       reg32 = pci_read_config32(dev, PCI_COMMAND);
+       reg32 |= PCI_COMMAND_MASTER;
+       /* reg32 |= PCI_COMMAND_SERR; */
+       pci_write_config32(dev, PCI_COMMAND, reg32);
+
+       debug("done.\n");
+}
diff --git a/arch/x86/cpu/ivybridge/usb_xhci.c b/arch/x86/cpu/ivybridge/usb_xhci.c
new file mode 100644 (file)
index 0000000..4a32a7e
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * From Coreboot
+ * Copyright (C) 2008-2009 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+
+void bd82x6x_usb_xhci_init(pci_dev_t dev)
+{
+       u32 reg32;
+
+       debug("XHCI: Setting up controller.. ");
+
+       /* lock overcurrent map */
+       reg32 = pci_read_config32(dev, 0x44);
+       reg32 |= 1;
+       pci_write_config32(dev, 0x44, reg32);
+
+       /* Enable clock gating */
+       reg32 = pci_read_config32(dev, 0x40);
+       reg32 &= ~((1 << 20) | (1 << 21));
+       reg32 |= (1 << 19) | (1 << 18) | (1 << 17);
+       reg32 |= (1 << 10) | (1 << 9) | (1 << 8);
+       reg32 |= (1 << 31); /* lock */
+       pci_write_config32(dev, 0x40, reg32);
+
+       debug("done.\n");
+}
diff --git a/arch/x86/cpu/lapic.c b/arch/x86/cpu/lapic.c
new file mode 100644 (file)
index 0000000..4690603
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * From coreboot file of same name
+ *
+ * Copyright (C) 2008-2009 coresystems GmbH
+ * Copyright (C) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/msr.h>
+#include <asm/io.h>
+#include <asm/lapic.h>
+#include <asm/post.h>
+
+void lapic_setup(void)
+{
+#if NEED_LAPIC == 1
+       /* Only Pentium Pro and later have those MSR stuff */
+       debug("Setting up local apic: ");
+
+       /* Enable the local apic */
+       enable_lapic();
+
+       /*
+        * Set Task Priority to 'accept all'.
+        */
+       lapic_write_around(LAPIC_TASKPRI,
+                          lapic_read_around(LAPIC_TASKPRI) & ~LAPIC_TPRI_MASK);
+
+       /* Put the local apic in virtual wire mode */
+       lapic_write_around(LAPIC_SPIV, (lapic_read_around(LAPIC_SPIV) &
+                               ~(LAPIC_VECTOR_MASK)) | LAPIC_SPIV_ENABLE);
+       lapic_write_around(LAPIC_LVT0, (lapic_read_around(LAPIC_LVT0) &
+                       ~(LAPIC_LVT_MASKED | LAPIC_LVT_LEVEL_TRIGGER |
+                         LAPIC_LVT_REMOTE_IRR | LAPIC_INPUT_POLARITY |
+                         LAPIC_SEND_PENDING | LAPIC_LVT_RESERVED_1 |
+                         LAPIC_DELIVERY_MODE_MASK)) |
+                       (LAPIC_LVT_REMOTE_IRR | LAPIC_SEND_PENDING |
+                        LAPIC_DELIVERY_MODE_EXTINT));
+       lapic_write_around(LAPIC_LVT1, (lapic_read_around(LAPIC_LVT1) &
+                       ~(LAPIC_LVT_MASKED | LAPIC_LVT_LEVEL_TRIGGER |
+                         LAPIC_LVT_REMOTE_IRR | LAPIC_INPUT_POLARITY |
+                         LAPIC_SEND_PENDING | LAPIC_LVT_RESERVED_1 |
+                         LAPIC_DELIVERY_MODE_MASK)) |
+               (LAPIC_LVT_REMOTE_IRR | LAPIC_SEND_PENDING |
+                       LAPIC_DELIVERY_MODE_NMI));
+
+       debug("apic_id: 0x%02lx, ", lapicid());
+#else /* !NEED_LLAPIC */
+       /* Only Pentium Pro and later have those MSR stuff */
+       debug("Disabling local apic: ");
+       disable_lapic();
+#endif /* !NEED_LAPIC */
+       debug("done.\n");
+       post_code(POST_LAPIC);
+}
diff --git a/arch/x86/cpu/mtrr.c b/arch/x86/cpu/mtrr.c
new file mode 100644 (file)
index 0000000..d5a825d
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * (C) Copyright 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Memory Type Range Regsters - these are used to tell the CPU whether
+ * memory is cacheable and if so the cache write mode to use.
+ *
+ * These can speed up booting. See the mtrr command.
+ *
+ * Reference: Intel Architecture Software Developer's Manual, Volume 3:
+ * System Programming
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/msr.h>
+#include <asm/mtrr.h>
+
+/* Prepare to adjust MTRRs */
+void mtrr_open(struct mtrr_state *state)
+{
+       state->enable_cache = dcache_status();
+
+       if (state->enable_cache)
+               disable_caches();
+       state->deftype = native_read_msr(MTRR_DEF_TYPE_MSR);
+       wrmsrl(MTRR_DEF_TYPE_MSR, state->deftype & ~MTRR_DEF_TYPE_EN);
+}
+
+/* Clean up after adjusting MTRRs, and enable them */
+void mtrr_close(struct mtrr_state *state)
+{
+       wrmsrl(MTRR_DEF_TYPE_MSR, state->deftype | MTRR_DEF_TYPE_EN);
+       if (state->enable_cache)
+               enable_caches();
+}
+
+int mtrr_commit(bool do_caches)
+{
+       struct mtrr_request *req = gd->arch.mtrr_req;
+       struct mtrr_state state;
+       uint64_t mask;
+       int i;
+
+       mtrr_open(&state);
+       for (i = 0; i < gd->arch.mtrr_req_count; i++, req++) {
+               mask = ~(req->size - 1);
+               mask &= (1ULL << CONFIG_CPU_ADDR_BITS) - 1;
+               wrmsrl(MTRR_PHYS_BASE_MSR(i), req->start | req->type);
+               wrmsrl(MTRR_PHYS_MASK_MSR(i), mask | MTRR_PHYS_MASK_VALID);
+       }
+
+       /* Clear the ones that are unused */
+       for (; i < MTRR_COUNT; i++)
+               wrmsrl(MTRR_PHYS_MASK_MSR(i), 0);
+       mtrr_close(&state);
+
+       return 0;
+}
+
+int mtrr_add_request(int type, uint64_t start, uint64_t size)
+{
+       struct mtrr_request *req;
+       uint64_t mask;
+
+       if (gd->arch.mtrr_req_count == MAX_MTRR_REQUESTS)
+               return -ENOSPC;
+       req = &gd->arch.mtrr_req[gd->arch.mtrr_req_count++];
+       req->type = type;
+       req->start = start;
+       req->size = size;
+       debug("%d: type=%d, %08llx  %08llx\n", gd->arch.mtrr_req_count - 1,
+             req->type, req->start, req->size);
+       mask = ~(req->size - 1);
+       mask &= (1ULL << CONFIG_CPU_ADDR_BITS) - 1;
+       mask |= MTRR_PHYS_MASK_VALID;
+       debug("   %016llx %016llx\n", req->start | req->type, mask);
+
+       return 0;
+}
diff --git a/arch/x86/cpu/pci.c b/arch/x86/cpu/pci.c
new file mode 100644 (file)
index 0000000..ab1aaaa
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2008,2009
+ * Graeme Russ, <graeme.russ@gmail.com>
+ *
+ * (C) Copyright 2002
+ * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <malloc.h>
+#include <pci.h>
+#include <asm/pci.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static struct pci_controller x86_hose;
+
+int pci_early_init_hose(struct pci_controller **hosep)
+{
+       struct pci_controller *hose;
+
+       hose = calloc(1, sizeof(struct pci_controller));
+       if (!hose)
+               return -ENOMEM;
+
+       board_pci_setup_hose(hose);
+       pci_setup_type1(hose);
+       hose->last_busno = pci_hose_scan(hose);
+       gd->hose = hose;
+       *hosep = hose;
+
+       return 0;
+}
+
+__weak int board_pci_pre_scan(struct pci_controller *hose)
+{
+       return 0;
+}
+
+__weak int board_pci_post_scan(struct pci_controller *hose)
+{
+       return 0;
+}
+
+void pci_init_board(void)
+{
+       struct pci_controller *hose = &x86_hose;
+
+       /* Stop using the early hose */
+       gd->hose = NULL;
+
+       board_pci_setup_hose(hose);
+       pci_setup_type1(hose);
+       pci_register_hose(hose);
+
+       board_pci_pre_scan(hose);
+       hose->last_busno = pci_hose_scan(hose);
+       board_pci_post_scan(hose);
+}
+
+static struct pci_controller *get_hose(void)
+{
+       if (gd->hose)
+               return gd->hose;
+
+       return pci_bus_to_hose(0);
+}
+
+unsigned int pci_read_config8(pci_dev_t dev, unsigned where)
+{
+       uint8_t value;
+
+       pci_hose_read_config_byte(get_hose(), dev, where, &value);
+
+       return value;
+}
+
+unsigned int pci_read_config16(pci_dev_t dev, unsigned where)
+{
+       uint16_t value;
+
+       pci_hose_read_config_word(get_hose(), dev, where, &value);
+
+       return value;
+}
+
+unsigned int pci_read_config32(pci_dev_t dev, unsigned where)
+{
+       uint32_t value;
+
+       pci_hose_read_config_dword(get_hose(), dev, where, &value);
+
+       return value;
+}
+
+void pci_write_config8(pci_dev_t dev, unsigned where, unsigned value)
+{
+       pci_hose_write_config_byte(get_hose(), dev, where, value);
+}
+
+void pci_write_config16(pci_dev_t dev, unsigned where, unsigned value)
+{
+       pci_hose_write_config_word(get_hose(), dev, where, value);
+}
+
+void pci_write_config32(pci_dev_t dev, unsigned where, unsigned value)
+{
+       pci_hose_write_config_dword(get_hose(), dev, where, value);
+}
diff --git a/arch/x86/cpu/queensbay/Kconfig b/arch/x86/cpu/queensbay/Kconfig
new file mode 100644 (file)
index 0000000..f6b5201
--- /dev/null
@@ -0,0 +1,79 @@
+#
+# Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+config INTEL_QUEENSBAY
+       bool
+       select HAVE_FSP
+       select HAVE_CMC
+
+if INTEL_QUEENSBAY
+
+config HAVE_FSP
+       bool "Add an Firmware Support Package binary"
+       help
+         Select this option to add an Firmware Support Package binary to
+         the resulting U-Boot image. It is a binary blob which U-Boot uses
+         to set up SDRAM and other chipset specific initialization.
+
+         Note: Without this binary U-Boot will not be able to set up its
+         SDRAM so will not boot.
+
+config FSP_FILE
+       string "Firmware Support Package binary filename"
+       depends on HAVE_FSP
+       default "fsp.bin"
+       help
+         The filename of the file to use as Firmware Support Package binary
+         in the board directory.
+
+config FSP_ADDR
+       hex "Firmware Support Package binary location"
+       depends on HAVE_FSP
+       default 0xfffc0000
+       help
+         FSP is not Position Independent Code (PIC) and the whole FSP has to
+         be rebased if it is placed at a location which is different from the
+         perferred base address specified during the FSP build. Use Intel's
+         Binary Configuration Tool (BCT) to do the rebase.
+
+         The default base address of 0xfffc0000 indicates that the binary must
+         be located at offset 0xc0000 from the beginning of a 1MB flash device.
+
+config FSP_TEMP_RAM_ADDR
+       hex
+       default 0x2000000
+       help
+         Stack top address which is used in FspInit after DRAM is ready and
+         CAR is disabled.
+
+config HAVE_CMC
+       bool "Add a Chipset Micro Code state machine binary"
+       help
+         Select this option to add a Chipset Micro Code state machine binary
+         to the resulting U-Boot image. It is a 64K data block of machine
+         specific code which must be put in the flash for the processor to
+         access when powered up before system BIOS is executed.
+
+config CMC_FILE
+       string "Chipset Micro Code state machine filename"
+       depends on HAVE_CMC
+       default "cmc.bin"
+       help
+         The filename of the file to use as Chipset Micro Code state machine
+         binary in the board directory.
+
+config CMC_ADDR
+       hex "Chipset Micro Code state machine binary location"
+       depends on HAVE_CMC
+       default 0xfffb0000
+       help
+         The location of the CMC binary is determined by a strap. It must be
+         put in flash at a location matching the strap-determined base address.
+
+         The default base address of 0xfffb0000 indicates that the binary must
+         be located at offset 0xb0000 from the beginning of a 1MB flash device.
+
+endif
diff --git a/arch/x86/cpu/queensbay/Makefile b/arch/x86/cpu/queensbay/Makefile
new file mode 100644 (file)
index 0000000..2c2ec01
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += tnc_car.o tnc_dram.o tnc.o topcliff.o
+obj-y += fsp_configs.o fsp_support.o
+obj-$(CONFIG_PCI) += tnc_pci.o
diff --git a/arch/x86/cpu/queensbay/fsp_configs.c b/arch/x86/cpu/queensbay/fsp_configs.c
new file mode 100644 (file)
index 0000000..af28e45
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#include <common.h>
+#include <asm/arch/fsp/fsp_support.h>
+
+void update_fsp_upd(struct upd_region *fsp_upd)
+{
+       /* Override any UPD setting if required */
+
+       /* Uncomment the line below to enable DEBUG message */
+       /* fsp_upd->serial_dbgport_type = 1; */
+
+       /* Examples on how to initialize the pointers in UPD region */
+       /* fsp_upd->pcd_example = (EXAMPLE_DATA *)&example; */
+}
diff --git a/arch/x86/cpu/queensbay/fsp_support.c b/arch/x86/cpu/queensbay/fsp_support.c
new file mode 100644 (file)
index 0000000..aed3e2b
--- /dev/null
@@ -0,0 +1,408 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#include <common.h>
+#include <asm/arch/fsp/fsp_support.h>
+#include <asm/post.h>
+
+/**
+ * Compares two GUIDs
+ *
+ * If the GUIDs are identical then true is returned.
+ * If there are any bit differences in the two GUIDs, then false is returned.
+ *
+ * @guid1:        A pointer to a 128 bit GUID.
+ * @guid2:        A pointer to a 128 bit GUID.
+ *
+ * @retval true:  guid1 and guid2 are identical.
+ * @retval false: guid1 and guid2 are not identical.
+ */
+static bool compare_guid(const struct efi_guid *guid1,
+                        const struct efi_guid *guid2)
+{
+       if (memcmp(guid1, guid2, sizeof(struct efi_guid)) == 0)
+               return true;
+       else
+               return false;
+}
+
+u32 __attribute__((optimize("O0"))) find_fsp_header(void)
+{
+       /*
+        * This function may be called before the a stack is established,
+        * so special care must be taken. First, it cannot declare any local
+        * variable using stack. Only register variable can be used here.
+        * Secondly, some compiler version will add prolog or epilog code
+        * for the C function. If so the function call may not work before
+        * stack is ready.
+        *
+        * GCC 4.8.1 has been verified to be working for the following codes.
+        */
+       volatile register u8 *fsp asm("eax");
+
+       /* Initalize the FSP base */
+       fsp = (u8 *)CONFIG_FSP_ADDR;
+
+       /* Check the FV signature, _FVH */
+       if (((struct fv_header *)fsp)->sign == EFI_FVH_SIGNATURE) {
+               /* Go to the end of the FV header and align the address */
+               fsp += ((struct fv_header *)fsp)->ext_hdr_off;
+               fsp += ((struct fv_ext_header *)fsp)->ext_hdr_size;
+               fsp  = (u8 *)(((u32)fsp + 7) & 0xFFFFFFF8);
+       } else {
+               fsp  = 0;
+       }
+
+       /* Check the FFS GUID */
+       if (fsp &&
+           ((struct ffs_file_header *)fsp)->name.data1 == FSP_GUID_DATA1 &&
+           ((struct ffs_file_header *)fsp)->name.data2 == FSP_GUID_DATA2 &&
+           ((struct ffs_file_header *)fsp)->name.data3 == FSP_GUID_DATA3 &&
+           ((struct ffs_file_header *)fsp)->name.data4[0] == FSP_GUID_DATA4_0 &&
+           ((struct ffs_file_header *)fsp)->name.data4[1] == FSP_GUID_DATA4_1 &&
+           ((struct ffs_file_header *)fsp)->name.data4[2] == FSP_GUID_DATA4_2 &&
+           ((struct ffs_file_header *)fsp)->name.data4[3] == FSP_GUID_DATA4_3 &&
+           ((struct ffs_file_header *)fsp)->name.data4[4] == FSP_GUID_DATA4_4 &&
+           ((struct ffs_file_header *)fsp)->name.data4[5] == FSP_GUID_DATA4_5 &&
+           ((struct ffs_file_header *)fsp)->name.data4[6] == FSP_GUID_DATA4_6 &&
+           ((struct ffs_file_header *)fsp)->name.data4[7] == FSP_GUID_DATA4_7) {
+               /* Add the FFS header size to find the raw section header */
+               fsp += sizeof(struct ffs_file_header);
+       } else {
+               fsp = 0;
+       }
+
+       if (fsp &&
+           ((struct raw_section *)fsp)->type == EFI_SECTION_RAW) {
+               /* Add the raw section header size to find the FSP header */
+               fsp += sizeof(struct raw_section);
+       } else {
+               fsp = 0;
+       }
+
+       return (u32)fsp;
+}
+
+void fsp_continue(struct shared_data *shared_data, u32 status, void *hob_list)
+{
+       u32 stack_len;
+       u32 stack_base;
+       u32 stack_top;
+
+       post_code(POST_MRC);
+
+       assert(status == 0);
+
+       /* Get the migrated stack in normal memory */
+       stack_base = (u32)fsp_get_bootloader_tmp_mem(hob_list, &stack_len);
+       assert(stack_base != 0);
+       stack_top  = stack_base + stack_len - sizeof(u32);
+
+       /*
+        * Old stack base is stored at the very end of the stack top,
+        * use it to calculate the migrated shared data base
+        */
+       shared_data = (struct shared_data *)(stack_base +
+                       ((u32)shared_data - *(u32 *)stack_top));
+
+       /* The boot loader main function entry */
+       fsp_init_done(hob_list);
+}
+
+void fsp_init(u32 stack_top, u32 boot_mode, void *nvs_buf)
+{
+       struct shared_data shared_data;
+       fsp_init_f init;
+       struct fsp_init_params params;
+       struct fspinit_rtbuf rt_buf;
+       struct vpd_region *fsp_vpd;
+       struct fsp_header *fsp_hdr;
+       struct fsp_init_params *params_ptr;
+       struct upd_region *fsp_upd;
+
+       fsp_hdr = (struct fsp_header *)find_fsp_header();
+       if (fsp_hdr == NULL) {
+               /* No valid FSP info header was found */
+               panic("Invalid FSP header");
+       }
+
+       fsp_upd = (struct upd_region *)&shared_data.fsp_upd;
+       memset(&rt_buf, 0, sizeof(struct fspinit_rtbuf));
+
+       /* Reserve a gap in stack top */
+       rt_buf.common.stack_top = (u32 *)stack_top - 32;
+       rt_buf.common.boot_mode = boot_mode;
+       rt_buf.common.upd_data = (struct upd_region *)fsp_upd;
+
+       /* Get VPD region start */
+       fsp_vpd = (struct vpd_region *)(fsp_hdr->img_base +
+                       fsp_hdr->cfg_region_off);
+
+       /* Verifify the VPD data region is valid */
+       assert((fsp_vpd->img_rev == VPD_IMAGE_REV) &&
+              (fsp_vpd->sign == VPD_IMAGE_ID));
+
+       /* Copy default data from Flash */
+       memcpy(fsp_upd, (void *)(fsp_hdr->img_base + fsp_vpd->upd_offset),
+              sizeof(struct upd_region));
+
+       /* Verifify the UPD data region is valid */
+       assert(fsp_upd->terminator == UPD_TERMINATOR);
+
+       /* Override any UPD setting if required */
+       update_fsp_upd(fsp_upd);
+
+       memset(&params, 0, sizeof(struct fsp_init_params));
+       params.nvs_buf = nvs_buf;
+       params.rt_buf = (struct fspinit_rtbuf *)&rt_buf;
+       params.continuation = (fsp_continuation_f)asm_continuation;
+
+       init = (fsp_init_f)(fsp_hdr->img_base + fsp_hdr->fsp_init);
+       params_ptr = &params;
+
+       shared_data.fsp_hdr = fsp_hdr;
+       shared_data.stack_top = (u32 *)stack_top;
+
+       post_code(POST_PRE_MRC);
+
+       /*
+        * Use ASM code to ensure the register value in EAX & ECX
+        * will be passed into BlContinuationFunc
+        */
+       asm volatile (
+               "pushl  %0;"
+               "call   *%%eax;"
+               ".global asm_continuation;"
+               "asm_continuation:;"
+               "movl   %%ebx, %%eax;"          /* shared_data */
+               "movl   4(%%esp), %%edx;"       /* status */
+               "movl   8(%%esp), %%ecx;"       /* hob_list */
+               "jmp    fsp_continue;"
+               : : "m"(params_ptr), "a"(init), "b"(&shared_data)
+       );
+
+       /*
+        * Should never get here.
+        * Control will continue from fsp_continue.
+        * This line below is to prevent the compiler from optimizing
+        * structure intialization.
+        *
+        * DO NOT REMOVE!
+        */
+       init(&params);
+}
+
+u32 fsp_notify(struct fsp_header *fsp_hdr, u32 phase)
+{
+       fsp_notify_f notify;
+       struct fsp_notify_params params;
+       struct fsp_notify_params *params_ptr;
+       u32 status;
+
+       if (!fsp_hdr)
+               fsp_hdr = (struct fsp_header *)find_fsp_header();
+
+       if (fsp_hdr == NULL) {
+               /* No valid FSP info header */
+               panic("Invalid FSP header");
+       }
+
+       notify = (fsp_notify_f)(fsp_hdr->img_base + fsp_hdr->fsp_notify);
+       params.phase = phase;
+       params_ptr = &params;
+
+       /*
+        * Use ASM code to ensure correct parameter is on the stack for
+        * FspNotify as U-Boot is using different ABI from FSP
+        */
+       asm volatile (
+               "pushl  %1;"            /* push notify phase */
+               "call   *%%eax;"        /* call FspNotify */
+               "addl   $4, %%esp;"     /* clean up the stack */
+               : "=a"(status) : "m"(params_ptr), "a"(notify), "m"(*params_ptr)
+       );
+
+       return status;
+}
+
+u32 fsp_get_usable_lowmem_top(const void *hob_list)
+{
+       const struct hob_header *hdr;
+       struct hob_res_desc *res_desc;
+       phys_addr_t phys_start;
+       u32 top;
+
+       /* Get the HOB list for processing */
+       hdr = hob_list;
+
+       /* * Collect memory ranges */
+       top = FSP_LOWMEM_BASE;
+       while (!end_of_hob(hdr)) {
+               if (hdr->type == HOB_TYPE_RES_DESC) {
+                       res_desc = (struct hob_res_desc *)hdr;
+                       if (res_desc->type == RES_SYS_MEM) {
+                               phys_start = res_desc->phys_start;
+                               /* Need memory above 1MB to be collected here */
+                               if (phys_start >= FSP_LOWMEM_BASE &&
+                                   phys_start < (phys_addr_t)FSP_HIGHMEM_BASE)
+                                       top += (u32)(res_desc->len);
+                       }
+               }
+               hdr = get_next_hob(hdr);
+       }
+
+       return top;
+}
+
+u64 fsp_get_usable_highmem_top(const void *hob_list)
+{
+       const struct hob_header *hdr;
+       struct hob_res_desc *res_desc;
+       phys_addr_t phys_start;
+       u64 top;
+
+       /* Get the HOB list for processing */
+       hdr = hob_list;
+
+       /* Collect memory ranges */
+       top = FSP_HIGHMEM_BASE;
+       while (!end_of_hob(hdr)) {
+               if (hdr->type == HOB_TYPE_RES_DESC) {
+                       res_desc = (struct hob_res_desc *)hdr;
+                       if (res_desc->type == RES_SYS_MEM) {
+                               phys_start = res_desc->phys_start;
+                               /* Need memory above 1MB to be collected here */
+                               if (phys_start >= (phys_addr_t)FSP_HIGHMEM_BASE)
+                                       top += (u32)(res_desc->len);
+                       }
+               }
+               hdr = get_next_hob(hdr);
+       }
+
+       return top;
+}
+
+u64 fsp_get_reserved_mem_from_guid(const void *hob_list, u64 *len,
+                                  struct efi_guid *guid)
+{
+       const struct hob_header *hdr;
+       struct hob_res_desc *res_desc;
+
+       /* Get the HOB list for processing */
+       hdr = hob_list;
+
+       /* Collect memory ranges */
+       while (!end_of_hob(hdr)) {
+               if (hdr->type == HOB_TYPE_RES_DESC) {
+                       res_desc = (struct hob_res_desc *)hdr;
+                       if (res_desc->type == RES_MEM_RESERVED) {
+                               if (compare_guid(&res_desc->owner, guid)) {
+                                       if (len)
+                                               *len = (u32)(res_desc->len);
+
+                                       return (u64)(res_desc->phys_start);
+                               }
+                       }
+               }
+               hdr = get_next_hob(hdr);
+       }
+
+       return 0;
+}
+
+u32 fsp_get_fsp_reserved_mem(const void *hob_list, u32 *len)
+{
+       const struct efi_guid guid = FSP_HOB_RESOURCE_OWNER_FSP_GUID;
+       u64 length;
+       u32 base;
+
+       base = (u32)fsp_get_reserved_mem_from_guid(hob_list,
+                       &length, (struct efi_guid *)&guid);
+       if ((len != 0) && (base != 0))
+               *len = (u32)length;
+
+       return base;
+}
+
+u32 fsp_get_tseg_reserved_mem(const void *hob_list, u32 *len)
+{
+       const struct efi_guid guid = FSP_HOB_RESOURCE_OWNER_TSEG_GUID;
+       u64 length;
+       u32 base;
+
+       base = (u32)fsp_get_reserved_mem_from_guid(hob_list,
+                       &length, (struct efi_guid *)&guid);
+       if ((len != 0) && (base != 0))
+               *len = (u32)length;
+
+       return base;
+}
+
+const struct hob_header *fsp_get_next_hob(uint type, const void *hob_list)
+{
+       const struct hob_header *hdr;
+
+       hdr = hob_list;
+
+       /* Parse the HOB list until end of list or matching type is found */
+       while (!end_of_hob(hdr)) {
+               if (hdr->type == type)
+                       return hdr;
+
+               hdr = get_next_hob(hdr);
+       }
+
+       return NULL;
+}
+
+const struct hob_header *fsp_get_next_guid_hob(const struct efi_guid *guid,
+                                              const void *hob_list)
+{
+       const struct hob_header *hdr;
+       struct hob_guid *guid_hob;
+
+       hdr = hob_list;
+       while ((hdr = fsp_get_next_hob(HOB_TYPE_GUID_EXT,
+                       hdr)) != NULL) {
+               guid_hob = (struct hob_guid *)hdr;
+               if (compare_guid(guid, &(guid_hob->name)))
+                       break;
+               hdr = get_next_hob(hdr);
+       }
+
+       return hdr;
+}
+
+void *fsp_get_guid_hob_data(const void *hob_list, u32 *len,
+                           struct efi_guid *guid)
+{
+       const struct hob_header *guid_hob;
+
+       guid_hob = fsp_get_next_guid_hob(guid, hob_list);
+       if (guid_hob == NULL) {
+               return NULL;
+       } else {
+               if (len)
+                       *len = get_guid_hob_data_size(guid_hob);
+
+               return get_guid_hob_data(guid_hob);
+       }
+}
+
+void *fsp_get_nvs_data(const void *hob_list, u32 *len)
+{
+       const struct efi_guid guid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
+
+       return fsp_get_guid_hob_data(hob_list, len, (struct efi_guid *)&guid);
+}
+
+void *fsp_get_bootloader_tmp_mem(const void *hob_list, u32 *len)
+{
+       const struct efi_guid guid = FSP_BOOTLOADER_TEMP_MEM_HOB_GUID;
+
+       return fsp_get_guid_hob_data(hob_list, len, (struct efi_guid *)&guid);
+}
diff --git a/arch/x86/cpu/queensbay/tnc.c b/arch/x86/cpu/queensbay/tnc.c
new file mode 100644 (file)
index 0000000..8637cdc
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/pci.h>
+#include <asm/post.h>
+#include <asm/arch/tnc.h>
+#include <asm/arch/fsp/fsp_support.h>
+#include <asm/processor.h>
+
+static void unprotect_spi_flash(void)
+{
+       u32 bc;
+
+       bc = pci_read_config32(PCH_LPC_DEV, 0xd8);
+       bc |= 0x1;      /* unprotect the flash */
+       pci_write_config32(PCH_LPC_DEV, 0xd8, bc);
+}
+
+int arch_cpu_init(void)
+{
+       struct pci_controller *hose;
+       int ret;
+
+       post_code(POST_CPU_INIT);
+#ifdef CONFIG_SYS_X86_TSC_TIMER
+       timer_set_base(rdtsc());
+#endif
+
+       ret = x86_cpu_init_f();
+       if (ret)
+               return ret;
+
+       ret = pci_early_init_hose(&hose);
+       if (ret)
+               return ret;
+
+       unprotect_spi_flash();
+
+       return 0;
+}
+
+int print_cpuinfo(void)
+{
+       post_code(POST_CPU_INFO);
+       return default_print_cpuinfo();
+}
+
+void reset_cpu(ulong addr)
+{
+       /* cold reset */
+       outb(0x06, PORT_RESET);
+}
+
+void board_final_cleanup(void)
+{
+       u32 status;
+
+       /* call into FspNotify */
+       debug("Calling into FSP (notify phase INIT_PHASE_BOOT): ");
+       status = fsp_notify(NULL, INIT_PHASE_BOOT);
+       if (status != FSP_SUCCESS)
+               debug("fail, error code %x\n", status);
+       else
+               debug("OK\n");
+
+       return;
+}
diff --git a/arch/x86/cpu/queensbay/tnc_car.S b/arch/x86/cpu/queensbay/tnc_car.S
new file mode 100644 (file)
index 0000000..5e09568
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <asm/post.h>
+
+.globl car_init
+car_init:
+       /*
+        * Note: ebp holds the BIST value (built-in self test) so far, but ebp
+        * will be destroyed through the FSP call, thus we have to test the
+        * BIST value here before we call into FSP.
+        */
+       test    %ebp, %ebp
+       jz      car_init_start
+       post_code(POST_BIST_FAILURE)
+       jmp     die
+
+car_init_start:
+       post_code(POST_CAR_START)
+       lea     find_fsp_header_romstack, %esp
+       jmp     find_fsp_header
+
+find_fsp_header_ret:
+       /* EAX points to FSP_INFO_HEADER */
+       mov     %eax, %ebp
+
+       /* sanity test */
+       cmp     $CONFIG_FSP_ADDR, %eax
+       jb      die
+
+       /* calculate TempRamInitEntry address */
+       mov     0x30(%ebp), %eax
+       add     0x1c(%ebp), %eax
+
+       /* call FSP TempRamInitEntry to setup temporary stack */
+       lea     temp_ram_init_romstack, %esp
+       jmp     *%eax
+
+temp_ram_init_ret:
+       addl    $4, %esp
+       cmp     $0, %eax
+       jnz     car_init_fail
+
+       post_code(POST_CAR_CPU_CACHE)
+
+       /*
+        * The FSP TempRamInit initializes the ecx and edx registers to
+        * point to a temporary but writable memory range (Cache-As-RAM).
+        * ecx: the start of this temporary memory range,
+        * edx: the end of this range.
+        */
+
+       /* stack grows down from top of CAR */
+       movl    %edx, %esp
+
+       /*
+        * TODO:
+        *
+        * According to FSP architecture spec, the fsp_init() will not return
+        * to its caller, instead it requires the bootloader to provide a
+        * so-called continuation function to pass into the FSP as a parameter
+        * of fsp_init, and fsp_init() will call that continuation function
+        * directly.
+        *
+        * The call to fsp_init() may need to be moved out of the car_init()
+        * to cpu_init_f() with the help of some inline assembly codes.
+        * Note there is another issue that fsp_init() will setup another stack
+        * using the fsp_init parameter stack_top after DRAM is initialized,
+        * which means any data on the previous stack (on the CAR) gets lost
+        * (ie: U-Boot global_data). FSP is supposed to support such scenario,
+        * however it does not work. This should be revisited in the future.
+        */
+       movl    $CONFIG_FSP_TEMP_RAM_ADDR, %eax
+       xorl    %edx, %edx
+       xorl    %ecx, %ecx
+       call    fsp_init
+
+.global fsp_init_done
+fsp_init_done:
+       /*
+        * We come here from FspInit with eax pointing to the HOB list.
+        * Save eax to esi temporarily.
+        */
+       movl    %eax, %esi
+       /*
+        * Re-initialize the ebp (BIST) to zero, as we already reach here
+        * which means we passed BIST testing before.
+        */
+       xorl    %ebp, %ebp
+       jmp     car_init_ret
+
+car_init_fail:
+       post_code(POST_CAR_FAILURE)
+
+die:
+       hlt
+       jmp     die
+       hlt
+
+       /*
+        * The function call before CAR initialization is tricky. It cannot
+        * be called using the 'call' instruction but only the 'jmp' with
+        * the help of a handcrafted stack in the ROM. The stack needs to
+        * contain the function return address as well as the parameters.
+        */
+       .balign 4
+find_fsp_header_romstack:
+       .long   find_fsp_header_ret
+
+       .balign 4
+temp_ram_init_romstack:
+       .long   temp_ram_init_ret
+       .long   temp_ram_init_params
+temp_ram_init_params:
+_dt_ucode_base_size:
+       /* These next two fields are filled in by ifdtool */
+       .long   0                       /* microcode base */
+       .long   0                       /* microcode size */
+       .long   CONFIG_SYS_MONITOR_BASE /* code region base */
+       .long   CONFIG_SYS_MONITOR_LEN  /* code region size */
diff --git a/arch/x86/cpu/queensbay/tnc_dram.c b/arch/x86/cpu/queensbay/tnc_dram.c
new file mode 100644 (file)
index 0000000..df79a39
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/fsp/fsp_support.h>
+#include <asm/e820.h>
+#include <asm/post.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int dram_init(void)
+{
+       phys_size_t ram_size = 0;
+       const struct hob_header *hdr;
+       struct hob_res_desc *res_desc;
+
+       hdr = gd->arch.hob_list;
+       while (!end_of_hob(hdr)) {
+               if (hdr->type == HOB_TYPE_RES_DESC) {
+                       res_desc = (struct hob_res_desc *)hdr;
+                       if (res_desc->type == RES_SYS_MEM ||
+                           res_desc->type == RES_MEM_RESERVED) {
+                               ram_size += res_desc->len;
+                       }
+               }
+               hdr = get_next_hob(hdr);
+       }
+
+       gd->ram_size = ram_size;
+       post_code(POST_DRAM);
+
+       return 0;
+}
+
+void dram_init_banksize(void)
+{
+       gd->bd->bi_dram[0].start = 0;
+       gd->bd->bi_dram[0].size = gd->ram_size;
+}
+
+/*
+ * This function looks for the highest region of memory lower than 4GB which
+ * has enough space for U-Boot where U-Boot is aligned on a page boundary.
+ * It overrides the default implementation found elsewhere which simply
+ * picks the end of ram, wherever that may be. The location of the stack,
+ * the relocation address, and how far U-Boot is moved by relocation are
+ * set in the global data structure.
+ */
+ulong board_get_usable_ram_top(ulong total_size)
+{
+       return fsp_get_usable_lowmem_top(gd->arch.hob_list);
+}
+
+unsigned install_e820_map(unsigned max_entries, struct e820entry *entries)
+{
+       unsigned num_entries = 0;
+       const struct hob_header *hdr;
+       struct hob_res_desc *res_desc;
+
+       hdr = gd->arch.hob_list;
+
+       while (!end_of_hob(hdr)) {
+               if (hdr->type == HOB_TYPE_RES_DESC) {
+                       res_desc = (struct hob_res_desc *)hdr;
+                       entries[num_entries].addr = res_desc->phys_start;
+                       entries[num_entries].size = res_desc->len;
+
+                       if (res_desc->type == RES_SYS_MEM)
+                               entries[num_entries].type = E820_RAM;
+                       else if (res_desc->type == RES_MEM_RESERVED)
+                               entries[num_entries].type = E820_RESERVED;
+               }
+               hdr = get_next_hob(hdr);
+               num_entries++;
+       }
+
+       return num_entries;
+}
diff --git a/arch/x86/cpu/queensbay/tnc_pci.c b/arch/x86/cpu/queensbay/tnc_pci.c
new file mode 100644 (file)
index 0000000..39bff49
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <pci.h>
+#include <asm/pci.h>
+#include <asm/arch/fsp/fsp_support.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void board_pci_setup_hose(struct pci_controller *hose)
+{
+       hose->first_busno = 0;
+       hose->last_busno = 0;
+
+       /* PCI memory space */
+       pci_set_region(hose->regions + 0,
+                      CONFIG_PCI_MEM_BUS,
+                      CONFIG_PCI_MEM_PHYS,
+                      CONFIG_PCI_MEM_SIZE,
+                      PCI_REGION_MEM);
+
+       /* PCI IO space */
+       pci_set_region(hose->regions + 1,
+                      CONFIG_PCI_IO_BUS,
+                      CONFIG_PCI_IO_PHYS,
+                      CONFIG_PCI_IO_SIZE,
+                      PCI_REGION_IO);
+
+       pci_set_region(hose->regions + 2,
+                      CONFIG_PCI_PREF_BUS,
+                      CONFIG_PCI_PREF_PHYS,
+                      CONFIG_PCI_PREF_SIZE,
+                      PCI_REGION_PREFETCH);
+
+       pci_set_region(hose->regions + 3,
+                      0,
+                      0,
+                      gd->ram_size,
+                      PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
+
+       hose->region_count = 4;
+}
+
+int board_pci_post_scan(struct pci_controller *hose)
+{
+       u32 status;
+
+       /* call into FspNotify */
+       debug("Calling into FSP (notify phase INIT_PHASE_PCI): ");
+       status = fsp_notify(NULL, INIT_PHASE_PCI);
+       if (status != FSP_SUCCESS)
+               debug("fail, error code %x\n", status);
+       else
+               debug("OK\n");
+
+       return 0;
+}
diff --git a/arch/x86/cpu/queensbay/topcliff.c b/arch/x86/cpu/queensbay/topcliff.c
new file mode 100644 (file)
index 0000000..b01422a
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <malloc.h>
+#include <pci.h>
+#include <pci_ids.h>
+#include <sdhci.h>
+
+static struct pci_device_id mmc_supported[] = {
+       { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TCF_SDIO_0 },
+       { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TCF_SDIO_1 },
+       { }
+};
+
+int cpu_mmc_init(bd_t *bis)
+{
+       struct sdhci_host *mmc_host;
+       pci_dev_t devbusfn;
+       u32 iobase;
+       int ret;
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(mmc_supported); i++) {
+               devbusfn =  pci_find_devices(mmc_supported, i);
+               if (devbusfn == -1)
+                       return -ENODEV;
+
+               mmc_host = (struct sdhci_host *)malloc(sizeof(struct sdhci_host));
+               if (!mmc_host)
+                       return -ENOMEM;
+
+               mmc_host->name = "Topcliff SDHCI";
+               pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_0, &iobase);
+               mmc_host->ioaddr = (void *)iobase;
+               mmc_host->quirks = 0;
+               ret = add_sdhci(mmc_host, 0, 0);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
index 338bab19e471fdd3f4ab088aa999afeb2e10145e..f51f1121d0252b3b96f856bac574bc6b19fff6ce 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  U-boot - x86 Startup Code
+ *  U-Boot - x86 Startup Code
  *
  * (C) Copyright 2008-2011
  * Graeme Russ, <graeme.russ@gmail.com>
 #include <config.h>
 #include <version.h>
 #include <asm/global_data.h>
+#include <asm/post.h>
 #include <asm/processor.h>
 #include <asm/processor-flags.h>
 #include <generated/generic-asm-offsets.h>
+#include <generated/asm-offsets.h>
 
 .section .text
 .code32
@@ -49,6 +51,8 @@ _start:
         */
        movw    $GD_FLG_COLD_BOOT, %bx
 1:
+       /* Save BIST */
+       movl    %eax, %ebp
 
        /* Load the segement registes to match the gdt loaded in start16.S */
        movl    $(X86_GDT_ENTRY_32BIT_DS * X86_GDT_ENTRY_SIZE), %eax
@@ -65,25 +69,46 @@ _start:
        jmp     early_board_init
 .globl early_board_init_ret
 early_board_init_ret:
+       post_code(POST_START)
 
        /* Initialise Cache-As-RAM */
        jmp     car_init
 .globl car_init_ret
 car_init_ret:
+#ifndef CONFIG_HAVE_FSP
        /*
         * We now have CONFIG_SYS_CAR_SIZE bytes of Cache-As-RAM (or SRAM,
         * or fully initialised SDRAM - we really don't care which)
         * starting at CONFIG_SYS_CAR_ADDR to be used as a temporary stack
+        * and early malloc area. The MRC requires some space at the top.
+        *
+        * Stack grows down from top of CAR. We have:
+        *
+        * top-> CONFIG_SYS_CAR_ADDR + CONFIG_SYS_CAR_SIZE
+        *      MRC area
+        *      global_data
+        *      x86 global descriptor table
+        *      early malloc area
+        *      stack
+        * bottom-> CONFIG_SYS_CAR_ADDR
         */
-
-       /* Stack grows down from top of CAR */
-       movl    $(CONFIG_SYS_CAR_ADDR + CONFIG_SYS_CAR_SIZE), %esp
+       movl    $(CONFIG_SYS_CAR_ADDR + CONFIG_SYS_CAR_SIZE - 4), %esp
+#ifdef CONFIG_DCACHE_RAM_MRC_VAR_SIZE
+       subl    $CONFIG_DCACHE_RAM_MRC_VAR_SIZE, %esp
+#endif
+#else
+       /*
+        * When we get here after car_init, esp points to a temporary stack
+        * and esi holds the HOB list address returned by the FSP.
+        */
+#endif
 
        /* Reserve space on stack for global data */
        subl    $GENERATED_GBL_DATA_SIZE, %esp
 
        /* Align global data to 16-byte boundary */
        andl    $0xfffffff0, %esp
+       post_code(POST_START_STACK)
 
        /* Zero the global data since it won't happen later */
        xorl    %eax, %eax
@@ -91,31 +116,43 @@ car_init_ret:
        movl    %esp, %edi
        rep     stosb
 
-       /* Setup first parameter to setup_gdt */
+#ifdef CONFIG_HAVE_FSP
+       /* Store HOB list */
+       movl    %esp, %edx
+       addl    $GD_HOB_LIST, %edx
+       movl    %esi, (%edx)
+#endif
+
+       /* Setup first parameter to setup_gdt, pointer to global_data */
        movl    %esp, %eax
 
        /* Reserve space for global descriptor table */
        subl    $X86_GDT_SIZE, %esp
 
+       /* Align temporary global descriptor table to 16-byte boundary */
+       andl    $0xfffffff0, %esp
+       movl    %esp, %ecx
+
 #if defined(CONFIG_SYS_MALLOC_F_LEN)
        subl    $CONFIG_SYS_MALLOC_F_LEN, %esp
        movl    %eax, %edx
        addl    $GD_MALLOC_BASE, %edx
        movl    %esp, (%edx)
 #endif
-
-       /* Align temporary global descriptor table to 16-byte boundary */
-       andl    $0xfffffff0, %esp
+       /* Store BIST */
+       movl    %eax, %edx
+       addl    $GD_BIST, %edx
+       movl    %ebp, (%edx)
 
        /* Set second parameter to setup_gdt */
-       movl    %esp, %edx
+       movl    %ecx, %edx
 
        /* Setup global descriptor table so gd->xyz works */
        call    setup_gdt
 
        /* Set parameter to board_init_f() to boot flags */
+       post_code(POST_START_DONE)
        xorl    %eax, %eax
-       movw    %bx, %ax
 
        /* Enter, U-boot! */
        call    board_init_f
@@ -168,6 +205,14 @@ board_init_f_r_trampoline:
        /* Setup global descriptor table so gd->xyz works */
        call    setup_gdt
 
+       /* Set if we need to disable CAR */
+.weak  car_uninit
+       movl    $car_uninit, %eax
+       cmpl    $0, %eax
+       jz      1f
+
+       call    car_uninit
+1:
        /* Re-enter U-Boot by calling board_init_f_r */
        call    board_init_f_r
 
index 6968fda6494998d1d595c9862e64a10a8082a3e1..9550502e9ae8f58e79f24929945058a006924d4a 100644 (file)
 .code16
 .globl start16
 start16:
+       /* Save BIST */
+       movl    %eax, %ecx
+
        /* Set the Cold Boot / Hard Reset flag */
        movl    $GD_FLG_COLD_BOOT, %ebx
 
-       /*
-        * First we let the BSP do some early initialization
-        * this code have to map the flash to its final position
-        */
-       jmp     board_init16
-.globl board_init16_ret
-board_init16_ret:
+       xorl    %eax, %eax
+       movl    %eax, %cr3    /* Invalidate TLB */
 
-       /* Turn of cache (this might require a 486-class CPU) */
+       /* Turn off cache (this might require a 486-class CPU) */
        movl    %cr0, %eax
        orl     $(X86_CR0_NW | X86_CR0_CD), %eax
        movl    %eax, %cr0
@@ -50,9 +48,11 @@ o32 cs       lgdt    gdt_ptr
        /* Flush the prefetch queue */
        jmp     ff
 ff:
-       /* Finally jump to the 32bit initialization code */
+
+       /* Finally restore BIST and jump to the 32bit initialization code */
        movw    $code32start, %ax
        movw    %ax, %bp
+       movl    %ecx, %eax
 o32 cs ljmp    *(%bp)
 
        /* 48-bit far pointer */
diff --git a/arch/x86/cpu/turbo.c b/arch/x86/cpu/turbo.c
new file mode 100644 (file)
index 0000000..254d0de
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * From Coreboot file of the same name
+ *
+ * Copyright (C) 2011 The Chromium Authors.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/cpu.h>
+#include <asm/msr.h>
+#include <asm/processor.h>
+#include <asm/turbo.h>
+
+#if CONFIG_CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED
+static inline int get_global_turbo_state(void)
+{
+       return TURBO_UNKNOWN;
+}
+
+static inline void set_global_turbo_state(int state)
+{
+}
+#else
+static int g_turbo_state = TURBO_UNKNOWN;
+
+static inline int get_global_turbo_state(void)
+{
+       return g_turbo_state;
+}
+
+static inline void set_global_turbo_state(int state)
+{
+       g_turbo_state = state;
+}
+#endif
+
+static const char *const turbo_state_desc[] = {
+       [TURBO_UNKNOWN]         = "unknown",
+       [TURBO_UNAVAILABLE]     = "unavailable",
+       [TURBO_DISABLED]        = "available but hidden",
+       [TURBO_ENABLED]         = "available and visible"
+};
+
+/*
+ * Determine the current state of Turbo and cache it for later.
+ * Turbo is a package level config so it does not need to be
+ * enabled on every core.
+ */
+int turbo_get_state(void)
+{
+       struct cpuid_result cpuid_regs;
+       int turbo_en, turbo_cap;
+       msr_t msr;
+       int turbo_state = get_global_turbo_state();
+
+       /* Return cached state if available */
+       if (turbo_state != TURBO_UNKNOWN)
+               return turbo_state;
+
+       cpuid_regs = cpuid(CPUID_LEAF_PM);
+       turbo_cap = !!(cpuid_regs.eax & PM_CAP_TURBO_MODE);
+
+       msr = msr_read(MSR_IA32_MISC_ENABLES);
+       turbo_en = !(msr.hi & H_MISC_DISABLE_TURBO);
+
+       if (!turbo_cap && turbo_en) {
+               /* Unavailable */
+               turbo_state = TURBO_UNAVAILABLE;
+       } else if (!turbo_cap && !turbo_en) {
+               /* Available but disabled */
+               turbo_state = TURBO_DISABLED;
+       } else if (turbo_cap && turbo_en) {
+               /* Available */
+               turbo_state = TURBO_ENABLED;
+       }
+
+       set_global_turbo_state(turbo_state);
+       debug("Turbo is %s\n", turbo_state_desc[turbo_state]);
+       return turbo_state;
+}
+
+void turbo_enable(void)
+{
+       msr_t msr;
+
+       /* Only possible if turbo is available but hidden */
+       if (turbo_get_state() == TURBO_DISABLED) {
+               /* Clear Turbo Disable bit in Misc Enables */
+               msr = msr_read(MSR_IA32_MISC_ENABLES);
+               msr.hi &= ~H_MISC_DISABLE_TURBO;
+               msr_write(MSR_IA32_MISC_ENABLES, msr);
+
+               /* Update cached turbo state */
+               set_global_turbo_state(TURBO_ENABLED);
+               debug("Turbo has been enabled\n");
+       }
+}
index f48bff54e10347995a2b48b85b648bdda1790ab9..b0d8531a605743cca554a00bfe6ccc762476e8a4 100644 (file)
@@ -44,7 +44,9 @@ SECTIONS
 
        . = ALIGN(4);
        __rel_dyn_start = .;
-       .rel.dyn : { *(.rel.dyn) }
+       .rel.dyn : {
+               *(.rel*)
+       }
        __rel_dyn_end = .;
        . = ALIGN(4);
        _end = .;
@@ -64,15 +66,19 @@ SECTIONS
        /DISCARD/ : { *(.gnu*) }
 
 #ifdef CONFIG_X86_RESET_VECTOR
-
        /*
         * The following expressions place the 16-bit Real-Mode code and
         * Reset Vector at the end of the Flash ROM
         */
-       . = START_16;
-       .start16 : AT (CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE + START_16)) { KEEP(*(.start16)); }
+       . = START_16 - RESET_SEG_START;
+       .start16 : AT (START_16) {
+               KEEP(*(.start16));
+       }
 
-       . = RESET_VEC_LOC;
-       .resetvec : AT (CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE + RESET_VEC_LOC)) { KEEP(*(.resetvec)); }
+       . = RESET_VEC_LOC - RESET_SEG_START;
+       .resetvec : AT (RESET_VEC_LOC) {
+               KEEP(*(.resetvec));
+       }
 #endif
+
 }
index 48265ef6dd45b6d9af18950a9355fcfd918a2638..97ed8842885ea7da00ab8606b92b6ba2a41eaa4a 100644 (file)
@@ -1,5 +1,5 @@
-dtb-y += link.dtb \
-       alex.dtb
+dtb-y += chromebook_link.dtb \
+       crownbay.dtb
 
 targets += $(dtb-y)
 
diff --git a/arch/x86/dts/alex.dts b/arch/x86/dts/alex.dts
deleted file mode 100644 (file)
index 2f13544..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/dts-v1/;
-
-/include/ "coreboot.dtsi"
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-       model = "Google Alex";
-       compatible = "google,alex", "intel,atom-pineview";
-
-       config {
-              silent_console = <0>;
-       };
-
-       gpio: gpio {};
-
-       serial {
-               reg = <0x3f8 8>;
-               clock-frequency = <115200>;
-       };
-
-       chosen { };
-       memory { device_type = "memory"; reg = <0 0>; };
-};
diff --git a/arch/x86/dts/chromebook_link.dts b/arch/x86/dts/chromebook_link.dts
new file mode 100644 (file)
index 0000000..9490b16
--- /dev/null
@@ -0,0 +1,216 @@
+/dts-v1/;
+
+/include/ "skeleton.dtsi"
+/include/ "serial.dtsi"
+
+/ {
+       model = "Google Link";
+       compatible = "google,link", "intel,celeron-ivybridge";
+
+       config {
+              silent_console = <0>;
+       };
+
+       gpioa {
+               compatible = "intel,ich6-gpio";
+               u-boot,dm-pre-reloc;
+               reg = <0 0x10>;
+               bank-name = "A";
+       };
+
+       gpiob {
+               compatible = "intel,ich6-gpio";
+               u-boot,dm-pre-reloc;
+               reg = <0x30 0x10>;
+               bank-name = "B";
+       };
+
+       gpioc {
+               compatible = "intel,ich6-gpio";
+               u-boot,dm-pre-reloc;
+               reg = <0x40 0x10>;
+               bank-name = "C";
+       };
+
+       chosen {
+               stdout-path = "/serial";
+       };
+
+       spd {
+               compatible = "memory-spd";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               elpida_4Gb_1600_x16 {
+                       reg = <0>;
+                       data = [92 10 0b 03 04 19 02 02
+                               03 52 01 08 0a 00 fe 00
+                               69 78 69 3c 69 11 18 81
+                               20 08 3c 3c 01 40 83 81
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 0f 11 42 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 02 fe 00
+                               11 52 00 00 00 07 7f 37
+                               45 42 4a 32 30 55 47 36
+                               45 42 55 30 2d 47 4e 2d
+                               46 20 30 20 02 fe 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00];
+               };
+               samsung_4Gb_1600_1.35v_x16 {
+                       reg = <1>;
+                       data = [92 11 0b 03 04 19 02 02
+                               03 11 01 08 0a 00 fe 00
+                               69 78 69 3c 69 11 18 81
+                               f0 0a 3c 3c 01 40 83 01
+                               00 80 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 0f 11 02 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 80 ce 01
+                               00 00 00 00 00 00 6a 04
+                               4d 34 37 31 42 35 36 37
+                               34 42 48 30 2d 59 4b 30
+                               20 20 00 00 80 ce 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00];
+                       };
+               micron_4Gb_1600_1.35v_x16 {
+                       reg = <2>;
+                       data = [92 11 0b 03 04 19 02 02
+                               03 11 01 08 0a 00 fe 00
+                               69 78 69 3c 69 11 18 81
+                               20 08 3c 3c 01 40 83 05
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 0f 01 02 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 80 2c 00
+                               00 00 00 00 00 00 ad 75
+                               34 4b 54 46 32 35 36 36
+                               34 48 5a 2d 31 47 36 45
+                               31 20 45 31 80 2c 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               00 00 00 00 00 00 00 00
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff
+                               ff ff ff ff ff ff ff ff];
+               };
+       };
+
+       spi {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "intel,ich9";
+               spi-flash@0 {
+                       reg = <0>;
+                       compatible = "winbond,w25q64", "spi-flash";
+                       memory-map = <0xff800000 0x00800000>;
+               };
+       };
+
+       pci {
+               sata {
+                       compatible = "intel,pantherpoint-ahci";
+                       intel,sata-mode = "ahci";
+                       intel,sata-port-map = <1>;
+                       intel,sata-port0-gen3-tx = <0x00880a7f>;
+               };
+
+               gma {
+                       compatible = "intel,gma";
+                       intel,dp_hotplug = <0 0 0x06>;
+                       intel,panel-port-select = <1>;
+                       intel,panel-power-cycle-delay = <6>;
+                       intel,panel-power-up-delay = <2000>;
+                       intel,panel-power-down-delay = <500>;
+                       intel,panel-power-backlight-on-delay = <2000>;
+                       intel,panel-power-backlight-off-delay = <2000>;
+                       intel,cpu-backlight = <0x00000200>;
+                       intel,pch-backlight = <0x04000000>;
+               };
+
+               lpc {
+                       compatible = "intel,lpc";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       gen-dec = <0x800 0xfc 0x900 0xfc>;
+                       intel,gen-dec = <0x800 0xfc 0x900 0xfc>;
+                       intel,pirq-routing = <0x8b 0x8a 0x8b 0x8b
+                                               0x80 0x80 0x80 0x80>;
+                       intel,gpi-routing = <0 0 0 0 0 0 0 2
+                                               1 0 0 0 0 0 0 0>;
+                       /* Enable EC SMI source */
+                       intel,alt-gp-smi-enable = <0x0100>;
+
+                       cros-ec@200 {
+                               compatible = "google,cros-ec";
+                               reg = <0x204 1 0x200 1 0x880 0x80>;
+
+                               /* Describes the flash memory within the EC */
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               flash@8000000 {
+                                       reg = <0x08000000 0x20000>;
+                                       erase-value = <0xff>;
+                               };
+                       };
+               };
+       };
+
+       microcode {
+               update@0 {
+#include "microcode/m12306a9_0000001b.dtsi"
+               };
+       };
+
+};
diff --git a/arch/x86/dts/coreboot.dtsi b/arch/x86/dts/coreboot.dtsi
deleted file mode 100644 (file)
index c8dc4ce..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/include/ "skeleton.dtsi"
-
-/ {
-       chosen {
-               stdout-path = "/serial";
-       };
-
-       serial {
-               compatible = "coreboot-uart";
-               reg = <0x3f8 0x10>;
-               reg-shift = <0>;
-               io-mapped = <1>;
-               multiplier = <1>;
-               baudrate = <115200>;
-               status = "disabled";
-       };
-};
diff --git a/arch/x86/dts/crownbay.dts b/arch/x86/dts/crownbay.dts
new file mode 100644 (file)
index 0000000..e81054e
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+
+/include/ "skeleton.dtsi"
+/include/ "serial.dtsi"
+
+/ {
+       model = "Intel Crown Bay";
+       compatible = "intel,crownbay", "intel,queensbay";
+
+       config {
+               silent_console = <0>;
+       };
+
+       gpioa {
+               compatible = "intel,ich6-gpio";
+               u-boot,dm-pre-reloc;
+               reg = <0 0x20>;
+               bank-name = "A";
+       };
+
+       gpiob {
+               compatible = "intel,ich6-gpio";
+               u-boot,dm-pre-reloc;
+               reg = <0x20 0x20>;
+               bank-name = "B";
+       };
+
+       chosen {
+               /*
+                * By default the legacy superio serial port is used as the
+                * U-Boot serial console. If we want to use UART from Topcliff
+                * PCH as the console, change this property to &pciuart#.
+                *
+                * For example, stdout-path = &pciuart0 will use the first
+                * UART on Topcliff PCH.
+                */
+               stdout-path = "/serial";
+       };
+
+       spi {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "intel,ich7";
+               spi-flash@0 {
+                       reg = <0>;
+                       compatible = "sst,25vf016b", "spi-flash";
+                       memory-map = <0xffe00000 0x00200000>;
+               };
+       };
+
+       microcode {
+               update@0 {
+#include "microcode/m0220661105_cv.dtsi"
+               };
+       };
+
+       pci {
+               #address-cells = <3>;
+               #size-cells = <2>;
+               compatible = "intel,pci";
+               device_type = "pci";
+
+               pcie@17,0 {
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       compatible = "intel,pci";
+                       device_type = "pci";
+
+                       topcliff@0,0 {
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               compatible = "intel,pci";
+                               device_type = "pci";
+
+                               pciuart0: uart@a,1 {
+                                       compatible = "pci8086,8811.00",
+                                                       "pci8086,8811",
+                                                       "pciclass,070002",
+                                                       "pciclass,0700",
+                                                       "x86-uart";
+                                       reg = <0x00025100 0x0 0x0 0x0 0x0
+                                              0x01025110 0x0 0x0 0x0 0x0>;
+                                       reg-shift = <0>;
+                                       clock-frequency = <1843200>;
+                                       current-speed = <115200>;
+                               };
+
+                               pciuart1: uart@a,2 {
+                                       compatible = "pci8086,8812.00",
+                                                       "pci8086,8812",
+                                                       "pciclass,070002",
+                                                       "pciclass,0700",
+                                                       "x86-uart";
+                                       reg = <0x00025200 0x0 0x0 0x0 0x0
+                                              0x01025210 0x0 0x0 0x0 0x0>;
+                                       reg-shift = <0>;
+                                       clock-frequency = <1843200>;
+                                       current-speed = <115200>;
+                               };
+
+                               pciuart2: uart@a,3 {
+                                       compatible = "pci8086,8813.00",
+                                                       "pci8086,8813",
+                                                       "pciclass,070002",
+                                                       "pciclass,0700",
+                                                       "x86-uart";
+                                       reg = <0x00025300 0x0 0x0 0x0 0x0
+                                              0x01025310 0x0 0x0 0x0 0x0>;
+                                       reg-shift = <0>;
+                                       clock-frequency = <1843200>;
+                                       current-speed = <115200>;
+                               };
+
+                               pciuart3: uart@a,4 {
+                                       compatible = "pci8086,8814.00",
+                                                       "pci8086,8814",
+                                                       "pciclass,070002",
+                                                       "pciclass,0700",
+                                                       "x86-uart";
+                                       reg = <0x00025400 0x0 0x0 0x0 0x0
+                                              0x01025410 0x0 0x0 0x0 0x0>;
+                                       reg-shift = <0>;
+                                       clock-frequency = <1843200>;
+                                       current-speed = <115200>;
+                               };
+                       };
+               };
+       };
+
+};
diff --git a/arch/x86/dts/link.dts b/arch/x86/dts/link.dts
deleted file mode 100644 (file)
index f2fcb39..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/dts-v1/;
-
-/include/ "coreboot.dtsi"
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-       model = "Google Link";
-       compatible = "google,link", "intel,celeron-ivybridge";
-
-       config {
-              silent_console = <0>;
-       };
-
-       gpioa {
-               compatible = "intel,ich6-gpio";
-               reg = <0 0x10>;
-               bank-name = "A";
-       };
-
-       gpiob {
-               compatible = "intel,ich6-gpio";
-               reg = <0x30 0x10>;
-               bank-name = "B";
-       };
-
-       gpioc {
-               compatible = "intel,ich6-gpio";
-               reg = <0x40 0x10>;
-               bank-name = "C";
-       };
-
-       serial {
-               reg = <0x3f8 8>;
-               clock-frequency = <115200>;
-       };
-
-       chosen { };
-       memory { device_type = "memory"; reg = <0 0>; };
-
-       spi {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               compatible = "intel,ich9";
-               spi-flash@0 {
-                       reg = <0>;
-                       compatible = "winbond,w25q64", "spi-flash";
-                       memory-map = <0xff800000 0x00800000>;
-               };
-       };
-
-       lpc {
-               compatible = "intel,lpc";
-               #address-cells = <1>;
-               #size-cells = <1>;
-               cros-ec@200 {
-                       compatible = "google,cros-ec";
-                       reg = <0x204 1 0x200 1 0x880 0x80>;
-
-                       /* This describes the flash memory within the EC */
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       flash@8000000 {
-                               reg = <0x08000000 0x20000>;
-                               erase-value = <0xff>;
-                       };
-               };
-       };
-};
diff --git a/arch/x86/dts/microcode/m0220661105_cv.dtsi b/arch/x86/dts/microcode/m0220661105_cv.dtsi
new file mode 100644 (file)
index 0000000..ada8bfc
--- /dev/null
@@ -0,0 +1,368 @@
+/*
+ * Copyright (c) <1995-2014>, Intel Corporation.
+ * All rights reserved.
+ * Redistribution. Redistribution and use in binary form, without modification, are
+ * permitted provided that the following conditions are met:
+ *     .Redistributions must reproduce the above copyright notice and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *     .Neither the name of Intel Corporation nor the names of its suppliers may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *     .No reverse engineering, decompilation, or disassembly of this software is
+ * permitted.
+ *     ."Binary form" includes any format commonly used for electronic conveyance
+ * which is a reversible, bit-exact translation of binary representation to ASCII or
+ * ISO text, for example, "uuencode."
+ * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+ * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ---
+ * This is a device tree fragment. Use #include to add these properties to a
+ * node.
+ *
+ * Date: Sat Sep 13 22:51:38 CST 2014
+ */
+
+compatible = "intel,microcode";
+intel,header-version = <1>;
+intel,update-revision = <0x105>;
+intel,date-code = <0x7182011>;
+intel,processor-signature = <0x20661>;
+intel,checksum = <0x52558795>;
+intel,loader-revision = <1>;
+intel,processor-flags = <0x2>;
+
+/* The first 48-bytes are the public header which repeats the above data */
+data = <
+       0x01000000      0x05010000      0x11201807      0x61060200
+       0x95875552      0x01000000      0x02000000      0xd0130000
+       0x00140000      0x00000000      0x00000000      0x00000000
+       0x00000000      0xa1000000      0x01000200      0x05010000
+       0x19000000      0x00010500      0x15071120      0x01040000
+       0x01000000      0x61060200      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0x9557a557      0x7d7a0fe3      0x8e2fbe53      0x0db9e346
+       0xd35c00d6      0x21bb34b7      0x662b6406      0xa0425035
+       0x3d028208      0xcb843695      0xee06be0a      0x9817efa7
+       0xb86c0d16      0x45f70c93      0x79fdc3af      0xd5f30da7
+       0x460f62b0      0x238a0470      0xf0ec95bf      0x97b9c176
+       0x6d612851      0x69b9b4b6      0x1df769cc      0xe11674df
+       0x1b579adf      0xc8bcc050      0xcdb3e285      0x327592c1
+       0xbeb6047a      0x977f6be5      0xc4854052      0x27f38b66
+       0x4ca5eab3      0xf806decc      0x2be4b409      0x460a3b03
+       0xde2f6e0f      0x53ce08b3      0x3ef0ef93      0x4e013088
+       0x226f8a5c      0x57f7d291      0x8d640bf7      0x8a998907
+       0x40464dd8      0x804ef3e5      0x647e35f3      0xeabee2d1
+       0x3a5ce9c7      0x4d7ee530      0x564321ec      0x9e85107e
+       0xd595581d      0xcbf6efde      0xed3010ed      0x3d607e82
+       0xe32d4b6b      0xd06fec83      0xf39240a6      0xe487988d
+       0xddbefcbe      0xefaf1121      0x96bf9acb      0xacce795c
+       0x7fa5f89b      0xbe440e5d      0xb6d3a3dc      0xcad17290
+       0x503ae748      0x04c80b8d      0xd394ea6a      0x3e4072c3
+       0x11000000      0x0b0ae65d      0xc6c53cbd      0xd52a6c2d
+       0x84cc192f      0x89498e7d      0x89270686      0xe68105e0
+       0x4073a570      0xd3338d8e      0x51193152      0x7266182f
+       0x980553fa      0x51b89c90      0xd13b6151      0xe6e40a91
+       0x0ab997d8      0x2d0a443b      0x9d3d566d      0x820402d1
+       0xdbe79fcc      0x7c5e0b45      0xaf94216d      0xbf717950
+       0x520b3dd4      0x566a3396      0x0b6f794f      0xc5dfeda5
+       0x71ba0f02      0x4839a5ed      0x39a4e4a6      0xe567c652
+       0x0e044997      0x84a0effd      0x09c67178      0x89a815c8
+       0xac821555      0xd6719303      0x582b964e      0xfe3a53f6
+       0x241b9b8b      0xc6e65457      0x623a4e0a      0x590d7d03
+       0xe50e7ce1      0x4bca4700      0xf24f5eff      0x1f1b20d9
+       0x77e3227e      0x699b5e5d      0x9aa5f621      0xff08bba0
+       0xf17ce716      0x0f5336f5      0xbce055a7      0x8cea9dac
+       0x8e09d26c      0x66c3ddf0      0xbec71660      0x75248cd2
+       0x29afcf8d      0xa5ade5ce      0xf68bace5      0x63b513cd
+       0x4736a842      0x4dbf80df      0x4e85fbdf      0x4dce3d56
+       0xf2150fdc      0xc4232709      0xffdc3e3a      0x92b72a3d
+       0x9ffce715      0x682959d1      0x091ba33c      0x0f1dc729
+       0x2f29a924      0x1df72429      0x19b0365d      0x2d5a3cd8
+       0x20617351      0x109074f9      0xf232874a      0x40d79569
+       0x97dbe4c6      0xa3b66845      0xa04d2faa      0x6dce9a96
+       0xd4963c67      0xd4516f76      0x64a0b04d      0x0b87ddfe
+       0xd8a5305d      0x717ecf67      0x77189035      0x40542ed4
+       0x5a180ff1      0xb2042e2c      0x6639819b      0x0f0756c3
+       0xf939bd70      0x25efe0d6      0x3eb65ae9      0x39a057d2
+       0xb2595655      0xf808b4fd      0xe22d0593      0x76256500
+       0x0eeee6ee      0x6895d1cf      0x9fc117a7      0xd19e5f15
+       0xf677f085      0x1ecdb30d      0x704d0975      0x9099f42e
+       0x421be0b2      0xd02548bd      0x3a16e675      0x7d8b051d
+       0x9d24480f      0xbc006432      0x184da9ec      0xbad7abef
+       0x299f58aa      0xc1a249fa      0x8d9d31f3      0xe73cda17
+       0xf41ac993      0x7b88d3bb      0xf349c676      0xb8341361
+       0x1b69bc01      0x98e0bfd2      0xf31db8d9      0xeb49b275
+       0xabc40133      0xfb7d0701      0xcd5ff353      0x4eaceb8d
+       0x67aac555      0x6d81693b      0xe81c555d      0x5d7f3688
+       0xd4347083      0xcd861b1d      0xd332f2cb      0x43130028
+       0x7f1a1c51      0xe2ce3af2      0xdff5076e      0x6ef21237
+       0xf65fc8c4      0xbd28ff14      0xd70f49a3      0x4f559249
+       0xd6fe7530      0x1fe89b4a      0xc1cc8975      0x2fd705c5
+       0xf2993d77      0x60f2e3da      0xe3ca3c44      0xbd0f70b1
+       0x0d333d10      0xa29a6aa1      0x43b5a6d4      0x30d15a08
+       0x6df9564a      0xea09045d      0x54ca3f5a      0xfbcfa037
+       0x6dd64d1b      0xa4a8995c      0x1f4298f0      0x3f4d9a86
+       0x924ee146      0xc2e3f464      0xc247747f      0x8bf5c7d7
+       0xf8f0b05d      0xf65a115f      0x4b1ae4e5      0xe131e187
+       0xfaf713c1      0x5ff88660      0xcd4916b0      0x448028e0
+       0x140711ca      0xffe77575      0x8b7740bd      0x82b6ed95
+       0xd94d9647      0x2623c011      0xd54fba11      0x30a7050b
+       0x28fe4069      0x70b8bf7d      0xf786eb6d      0xe39db734
+       0xa3290669      0x8747e1d6      0x35804a42      0x1c26ed60
+       0x30a8880f      0x8170a277      0xa1d97657      0x6ebcb3ed
+       0x3bb6ce89      0xff808c1b      0xc919fd1e      0x911d8b14
+       0xcbf41a24      0x82abc738      0xfb5e988e      0x328aa123
+       0xf19146e3      0x587baa80      0xd105e811      0x83b09389
+       0xa29fc554      0xe3831a28      0x183f8de7      0x4ef5656e
+       0xcc940baf      0x938bf4b4      0x90627bae      0x14fc3cdb
+       0x75e45681      0xf912c1b3      0x7a5b8a0f      0x3b970524
+       0x6a74d34a      0xb3da9fe6      0x847a3bd8      0xfc4f7dd6
+       0x88fd7f3b      0xbcd74a15      0x3afed836      0x17e31cd0
+       0x5d866dcb      0x0ab69608      0xe334f0fb      0x7181d4a3
+       0x8dc87560      0xd9c94d6f      0x491c2c91      0xca295ed6
+       0xfb8dcd79      0xeb4d3f89      0xec581071      0x0457ebc6
+       0x6b63590b      0x9dde4b79      0x3dc0a0aa      0x41ec8a1e
+       0xfb2ab80e      0x07adc629      0xb8534a4f      0xd0d23901
+       0xcfd024da      0x47c4163a      0xc89d26bb      0xe5cac48c
+       0x17c7fbba      0xd992f42e      0x466f5e35      0xce48304e
+       0x394683c8      0xef6e6b7a      0xb9d1242d      0xb961debd
+       0x432a3dff      0xa4931ea7      0xd9f03907      0xc29e9ce6
+       0x4fccf4c9      0xbf234555      0x0b6a6771      0xb29f29ef
+       0x7edc4bfd      0x781dcf74      0x4ae31020      0x1ab72d9b
+       0x0ac457e2      0xf9291e09      0xd4084918      0xa540d999
+       0x223408d3      0x0bd039aa      0xaf0dd904      0x9cfd6a01
+       0x826c6bca      0x8e41a96d      0xa56fc4ee      0x6a7509fb
+       0x5cd2e6fc      0xb89aa158      0xb1e5d3f5      0x92ccd05e
+       0x995d5acb      0x5ed1dc08      0x75038dac      0x4377c835
+       0x265d66d8      0x3692096f      0xcd69ee59      0x310df351
+       0x087e3133      0xe89e2d58      0x137fd054      0x00f3562b
+       0x2ae304e5      0x9db0316d      0x6868cec6      0xb249ccec
+       0x9f602c90      0xd3715e7c      0x3fcc8a62      0xa1c1e065
+       0x5b4281d4      0x124dfd7e      0xe9d21462      0x77cbc940
+       0xf915f2a5      0x66df82fc      0xa8c67c56      0xac4d461b
+       0x836deb52      0x95fbb48d      0x3454b6bd      0xd87d7a64
+       0xe64d32b8      0xc44c2aa0      0x3e213c1f      0x4d31b94d
+       0x4640be5e      0xe127234b      0x9ca54856      0xac7d093f
+       0x03d0508b      0x30f5121d      0x6e347d91      0x47772312
+       0x318ea26e      0xad3f6902      0xb5598746      0x8be3b65b
+       0xc8bbd31d      0x24691564      0xee77d2e8      0x3581944e
+       0xeff8eed5      0xa29ea86c      0xc2597492      0x23c1c118
+       0x7810c079      0xb966ee47      0x823e9954      0x9e558c0a
+       0x74759c12      0x193c6b4e      0x7544597d      0x65c9bf8a
+       0x68f5e263      0x718c679b      0xc8dc50ba      0x5f5ab841
+       0xc3eaf579      0xc2072358      0x62481939      0xffe7e686
+       0x201f3215      0x1d88dc8e      0x28fb4002      0x40c56ec5
+       0xb7bcce00      0xd52f5042      0x84498e04      0xcc97fb7d
+       0x64035e93      0xcd3478a4      0x15d63309      0xa9e47b85
+       0xe835e45f      0x9de598b7      0x94f569f7      0x56689b0c
+       0x381f9173      0x708b3e52      0xc81f0649      0x12113041
+       0x4694aae2      0x69040fc0      0xe4ba7bf4      0xfadc5729
+       0xc168381f      0x1985f118      0xab0ca720      0xf0150799
+       0x42690e4a      0x71af3be9      0x9325f3b8      0x36575996
+       0x4dc1dca7      0x7e534c37      0x01830a21      0x221eef4f
+       0x18698322      0x57a80837      0x483ae2d8      0xef905b54
+       0xe01827de      0xae9a8ff1      0x0058be7b      0x052632ad
+       0x9df5c90b      0xb763fc7a      0x5535c95c      0x8eb5916a
+       0x75fde5cc      0x57d8eeab      0x0dcc35c6      0xbf11c88f
+       0x69142118      0x4f35c928      0x7966066c      0xb2d13b4b
+       0xdad06d34      0xb5d8f5c7      0xe0bb11e6      0x8a36325d
+       0xc1122d64      0xcf07a1a5      0xfe7ce9b1      0x176b624b
+       0x4de883fd      0x00a9024b      0x3d3f7271      0x5072895d
+       0x2634e158      0x2f3c9a35      0x95e374d1      0x65e66528
+       0x47766433      0x4cb805ff      0xbc8f0319      0x6d5055a5
+       0x4932e8c2      0xa93fbb4d      0x87f08bd9      0xf5e5706e
+       0x409af40e      0x017edf5c      0xc5394c71      0x6fb97b6d
+       0x7b5ddb6b      0x0256adfe      0x76d337e2      0xa3327113
+       0xfbb4cb29      0xea68ca27      0xa76a865e      0x8cdb2dd3
+       0x902642bd      0x16772269      0xb2341eaf      0x858fa943
+       0xb087fac9      0xd17de85b      0x3d9c248a      0x0bdcf2d0
+       0x874fc03c      0xf19f2591      0x190c06a9      0xc6b5c3ea
+       0x472b6245      0xdb9f8201      0x46d27a0d      0x52218ffe
+       0xece78c44      0x3ef6e38a      0xfcf19b65      0x536c840c
+       0x86d363e8      0xaa852826      0xde17e3ec      0xa9c3b45b
+       0xd322302a      0x48f03728      0x2f60d01a      0x3b356752
+       0x8a869fd4      0x055d04f4      0x765074fb      0xb0b5c2d1
+       0x865ad360      0x0cb6c6e8      0x5de9cf99      0x863938d3
+       0xd4d9aeea      0x0babfa86      0x172cfb57      0x972d8f4f
+       0xe9aeeb95      0x6acbe297      0xf2459e42      0x415fdd12
+       0x84b2e67b      0x47d2d466      0x44bc85a4      0x1a55b957
+       0xe4d01142      0xbf4ea387      0x5651e1a2      0x19124703
+       0x8aaed1b2      0x841f3ecd      0xc6d6cc4f      0x1f2d8565
+       0xba08e74a      0x68e5ecf4      0x07af5ef4      0xdd5a43a9
+       0x6086c705      0x37ced045      0x0fb05ca6      0x35f39f3b
+       0xda1ecbef      0x1daf6d76      0x5481d7ed      0xc51e8385
+       0xa705e11e      0x127d2a7f      0x654d4710      0x1a34370e
+       0xf8496ea4      0x4392b6ec      0x2f209933      0x9c5ab017
+       0xa4f7b837      0x33e0a7d0      0x98fb0635      0xdefc042a
+       0xc7a1f6b5      0x47107766      0xd06acfba      0xb8ac2a93
+       0xe21cca44      0xf0150492      0xd4de2e01      0xe0d6e9a5
+       0xa758b5df      0x2e1c31c0      0xc4794495      0x3d9cc157
+       0xf94aa4f7      0xc2325855      0xcf9ddd12      0xaa70e611
+       0x2b2404b8      0x75d87f38      0xa2a6f772      0x61abfa04
+       0x23b61fb0      0x87f4067f      0x355abf99      0x2c4e6c48
+       0x2dc8a3b2      0x119b08b5      0x3f1f6d09      0x374372f0
+       0x24d79d32      0xef2b58be      0x461ab91c      0x1d31267e
+       0x8b1b2c7e      0x27a4f103      0x1686c7c3      0x55af0d87
+       0x61c2503b      0x9ffcca7f      0xc3cbdd07      0xd49a4f3c
+       0x9ddc2ac9      0x335e1b2a      0xd8dcfc08      0x6e83f11c
+       0x53de9e30      0x7b774670      0x15a97571      0x1ecacf66
+       0x26581520      0xeee3496b      0x1fdf8174      0x4ddd3c61
+       0xaa504fc2      0x0b09792e      0x9b81d1c7      0x10765c95
+       0xd3e7b9d1      0xefdb38f9      0x4c44d38e      0xaaf8fd08
+       0xceb22e7c      0x5ac74242      0x6baee02d      0x5c7eaa5b
+       0x27265dca      0x614c3b5e      0x2994874d      0x486d48a3
+       0x5945c4f9      0xe465f343      0x934e55de      0x633199a2
+       0x147222cc      0x9bbb0c16      0x6a7e7ef1      0xb7bce9b5
+       0x13413d18      0x628231af      0x0fd2d58c      0x4cbafba0
+       0xa930fae6      0x91733823      0xe06f99c3      0xda3b57b7
+       0x04b8a9dd      0x53451e33      0x11fde5fd      0x0e35bcb8
+       0x3a5799d4      0x3893f9c0      0x6b9d0e1d      0xf8d948ce
+       0xa33a6628      0x7d09792d      0xd74b3719      0x0afb4de0
+       0xfaa5a685      0xecf7f8ac      0xcf34b855      0x89453b4d
+       0x12f028c3      0x45edc3fd      0x792c43fc      0x2b054962
+       0xb8799a92      0x0ab38d61      0xa6c6a76d      0x7670cdbd
+       0xf878b511      0x9a3474ba      0x478673f0      0x7398bba8
+       0x4fa10ff5      0xf0a1931c      0xd5938e03      0xe9a23c28
+       0x7bea2a5b      0xf7a8db22      0xb94ae0e3      0x2abe6385
+       0x0ef2cc36      0x6b997544      0x1e8cc4f1      0x69a5b182
+       0x54f9b7c7      0x8fe56cba      0xc7c12fcc      0x8d689865
+       0x2d6ef011      0xc6a1b740      0x66af0a76      0x76018cdd
+       0x30661377      0xcf1fcf93      0x08046423      0xdf9371c8
+       0x1795ec3e      0xf5ea09c6      0xe462de69      0xd7da78a1
+       0xd8bda1eb      0x1179f53a      0x2b394767      0x3ba153a7
+       0xf9c85bd7      0x5700c827      0x8478ac99      0x080a2f52
+       0xdd1c18f1      0x579cea67      0x345c56ce      0x4563f16a
+       0xfa1a5b74      0x0b6e233e      0xadc7bd9a      0xbee6d2f0
+       0xa249f3ef      0xcdea9b77      0xeaaed82e      0xcc4448a7
+       0x34f7cafb      0x7621bb44      0x4965b0eb      0xe6d6b8bf
+       0x3c683b25      0x33bcb5fe      0x3f376249      0x5b40dc67
+       0x658bf6aa      0x7f0c5d0d      0x61514591      0xeb3bb83f
+       0xc2e208dd      0xe82f08f2      0x6ef75ae5      0x9c11bc0d
+       0x289c0553      0x1578ce5d      0xb7f05c0e      0x818c5ebd
+       0xe566ec9b      0xc6995b3f      0x0c02aac3      0x2b4264b3
+       0xf9cad304      0x5b0479fb      0xf8ce8d6f      0xb7d80d8b
+       0x41a0d223      0x71ec8a7a      0xc9d74d41      0x245c5988
+       0xf607fc59      0xf1c7b6ab      0x142ef712      0xbf607800
+       0x281e5911      0xad9a3e63      0x87b59384      0x7ebdc04c
+       0x6f47867b      0xb6a304ac      0x289f65e7      0x335fc866
+       0x77eb11b3      0xb70c25b2      0x70b43d52      0x684d46c0
+       0x0940459b      0xde739ede      0x0b438a29      0xb713e77e
+       0x71f539b7      0x8b2f0f7b      0x8d8ab95d      0x42cde8c9
+       0x08c259d1      0x021eda69      0x2af81ddc      0xc7d13028
+       0x05abfa20      0x6a61008b      0xfc62557f      0xd6d731b2
+       0xb080aca3      0x6acae4a3      0xab33d2bc      0x7983c177
+       0xdf0c357d      0xb8dcb956      0x9c214460      0xfeb75d75
+       0x9b3d468b      0xd2c3106c      0xb1bd118e      0xf26df6a8
+       0x11b9c4d2      0x031357f9      0xf7af8a12      0x70fef26c
+       0xe5d8b8d5      0xf6746fd8      0xd6cc3266      0x4158e59f
+       0xa38fbfcb      0x01c61ff6      0x44c7c4e6      0xf26db3aa
+       0x46bb6d84      0x0a794535      0x1d5eab72      0x42345de7
+       0x0c7e6d47      0x8bacc223      0xb7334b8d      0x3d9d951b
+       0x18f4afc4      0x9c0cb708      0x53b71b82      0x603e8350
+       0x6f2df978      0x0c6f3f0f      0x661ebca9      0x30788bd0
+       0x982959c0      0x50aa1351      0x672297c1      0xa490a756
+       0x21c9e911      0x977e172e      0x0446db50      0x49b711c1
+       0xbc6d54c7      0x0fe0adb4      0xc4ec0fe4      0xae6d09b6
+       0x316cfa53      0xba68cc8b      0x104bdbe9      0xc31639a3
+       0x812a97fb      0xa1c6884b      0xc884d473      0xe3057c15
+       0x5ee879a3      0x5abe8262      0xb906bbde      0xfd98fcbd
+       0x6ae15c96      0x44a17e0e      0x28acfa15      0xb345122c
+       0x6ddc4244      0x005eb369      0x22d038bc      0x0d226e4f
+       0x64c7ed6c      0x7964b8d9      0xbc5d668d      0x99155e56
+       0x9979151c      0x65312a00      0x0271d338      0x64867293
+       0xed0d26fb      0xe69c5f02      0x93fd6871      0xf5702656
+       0x4fad1c2b      0x20f8c272      0x438b964a      0x87ff3fa2
+       0x6706537a      0x437b5709      0x6fb797dd      0x85679fab
+       0x00da6b51      0xeecc5540      0x2998791c      0xc36d40ef
+       0xb545e334      0x9ace5e06      0x8a9e6c54      0xc341d0cd
+       0x1478a2d4      0xb81413bd      0x80601f72      0xa1b250b9
+       0x1cb7f5ce      0xefad630c      0x32325fcc      0x29e3474d
+       0x6a7ae043      0x879ee630      0xdc1e8a55      0x7ae794a8
+       0x4ee38039      0x2ff4947a      0x53bb84b1      0x8f0b077d
+       0xaa4c543b      0x9aa88443      0xeb31a017      0xf3485983
+       0xe53b855c      0x6e17aec6      0x726458a6      0x5acf4345
+       0xa1b95c5a      0x30668c67      0x47fb5dc7      0x8aafbff4
+       0x4b94ef01      0x07bd6231      0x544afcf3      0xfdffca2f
+       0xce847471      0xe90abc6e      0xf05e3cc1      0xf602a9c8
+       0x8f104b51      0x1ae3da07      0xd07dfc04      0x561d9373
+       0x6f6cc833      0xac982489      0x3c0f8afd      0xfab974d0
+       0x397e135e      0x8edb3eb4      0x452b9509      0x3972829d
+       0x639e3981      0x1c758ec1      0x11428fa5      0xe8308fa7
+       0x571d71b9      0x94e40c2b      0x1aaaa397      0xce9283ae
+       0x599bbb93      0x51c04bf7      0x556bc74f      0xf6e6e799
+       0xc34191e0      0x5f06bce6      0x9f63ecd1      0x54437905
+       0xf8f9bd50      0xde82cbf6      0xe11a9949      0x9d312bfa
+       0xe712e3db      0xb57eabc9      0x57682068      0xc91c2e3c
+       0x681e4fbd      0x0ecd3452      0xcc893248      0xf13f0600
+       0x9a8a9194      0xb4c1cd29      0xd504d8f2      0xee6c5b8a
+       0x211c9958      0x7a4f9c30      0x32775708      0xda97bf03
+       0xf7035e57      0xbe77d547      0x37accd1e      0x6c537775
+       0x8d63b752      0x7fec4a3c      0x94211d9e      0x60bfeb2a
+       0xebd47130      0x747d52fc      0x8434f487      0xac9091cc
+       0x8f8b228f      0xb77f96a1      0xc21fede9      0xa9e2678a
+       0xbc815194      0x54d677ac      0x66c11faf      0xfb666595
+       0x01e5e973      0x5c990d0c      0xf2cea425      0x5b516ff8
+       0x8c932784      0xd18feb32      0xb5acd3d3      0x1703b89a
+       0x34fb512c      0x0ac83386      0xd58c5728      0x5c018ed6
+       0xbe0908a0      0xd490b0e9      0x0ec94527      0x2f281499
+       0x471df723      0x03eddc08      0x9b99d975      0x11535b70
+       0x5802288c      0xb3512d42      0x415a9c0d      0x52dbd146
+       0x8b0c59bf      0xd8160cc7      0xe37dee6e      0xfd5211cc
+       0x5635ff4d      0x8d783398      0xc11f5d62      0x54ca73b4
+       0xc3ebdf96      0x835e7883      0x9cd03137      0xe4b4f709
+       0xdbde6d86      0x2b562b2d      0xfecc0df5      0x172a5ec2
+       0x568b52b9      0xf542957c      0xd738b325      0x49c49aaf
+       0x6eb4c9ad      0x363f4978      0xac4b0cb3      0x4ec8dca8
+       0x7a2ec2ba      0x10ff39bc      0x8b8748d5      0x6a86e67b
+       0x0d81e2b6      0xf4bde138      0x02249333      0xab0c7acf
+       0x4ce5e894      0x1656dad7      0x46c59329      0xa849fea0
+       0x3d0400be      0x6898c4f7      0xd866ff9a      0x84a5b170
+       0xc997009e      0x80524f6e      0xc80fb5dd      0x5bde0181
+       0x0bb0c8a8      0xe5a6b9e4      0xd4753f0a      0xda9bf0c6
+       0xd6dd041b      0x4c7338f0      0xa223bd71      0x23b58f4a
+       0xf6e127dc      0x1777033d      0x5b057a0f      0xe08af0bf
+       0x17c07032      0xbbc3f27f      0xac6dc98b      0x921e2f12
+       0xcf32236d      0x6cb700a8      0xa3b4e5cc      0xe9b65d73
+       0xca7d6f44      0x7b5917f6      0x7b80dd21      0x5ee87e45
+       0x86799f71      0x0667e036      0x8f97dcca      0xc4bfd5d9
+       0x90737eed      0x41b5a457      0xc6c96301      0xf8933e95
+       0xe51c2456      0x00c661f4      0x8a0e1aaa      0x92aa4181
+       0x1e3f8638      0xd481a14a      0xaf637189      0x91622fb3
+       0x4450865d      0x4202b431      0x5248342b      0x01ff713b
+       0xe33b5ec5      0x912d6856      0x10deb2ac      0x9072c180
+       0x24d792af      0xa39c5dfd      0xb4c94140      0xfeb32004
+       0xa174dae8      0x49da7dfc      0xa4db1090      0x7d2a998b
+       0xb7eba69b      0x9b824871      0x3557bd1d      0xd3a73d9b
+       0xf225310b      0xad1ffcf6      0x2d5f075b      0x592de6f4
+       0x69e438f4      0x4ed8cac4      0xa79c947f      0xb95f9590
+       0xb8ede5c9      0x0b1c9229      0x85a4b30e      0x65149920
+       0x433461a8      0x186fda4f      0xbaee7097      0xd3cac1bd
+       0x8bc32ca2      0x914f1512      0x9b619478      0x582a53c9
+       0x4e624a00      0x77e445ec      0x6f823159      0xa9c4766b
+       0x0dd6ad28      0xfabdadc5      0x704bfd95      0x08645056
+       0xe1939821      0x76650b62      0x8876941a      0xf812239f
+       0x2869ce13      0xa4d292c7      0xecba40fd      0x83d2fd8f
+       0xdd45ccc0      0x7c12b7cb      0xdc0a20bb      0x0d9be34d
+       0x4dd16a9d      0x25835446      0xb94d8c21      0x97ca8010
+       0xddd09324      0x95ffe31f      0xa86136c9      0x828ac571
+       0x9aa7fc00      0x382cc48c      0x015f7186      0xc3fd040d
+       0x505408e0      0x21cdc34c      0xbd266059      0x6e2f673e
+       0xe4523c1b      0x3ba56bb3      0x1c343938      0xabc0df54
+       0x8ba4f1e8      0xfbd4c592      0xb678c884      0xff3be2f1
+       0xca013570      0xfb0598df      0x3cb9cc1d      0xe3ba8ca3
+       0xc3d7ecee      0x0ae84a0b      0x0d70f0c3      0x963110ff
+       >;
diff --git a/arch/x86/dts/microcode/m12206a7_00000029.dtsi b/arch/x86/dts/microcode/m12206a7_00000029.dtsi
new file mode 100644 (file)
index 0000000..fe888bf
--- /dev/null
@@ -0,0 +1,686 @@
+/*
+ * Copyright (c) <1995-2014>, Intel Corporation.
+ * All rights reserved.
+ * Redistribution. Redistribution and use in binary form, without modification, are
+ * permitted provided that the following conditions are met:
+ *     .Redistributions must reproduce the above copyright notice and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *     .Neither the name of Intel Corporation nor the names of its suppliers may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *     .No reverse engineering, decompilation, or disassembly of this software is
+ * permitted.
+ *     ."Binary form" includes any format commonly used for electronic conveyance
+ * which is a reversible, bit-exact translation of binary representation to ASCII or
+ * ISO text, for example, "uuencode."
+ * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+ * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ---
+ * This is a device tree fragment. Use #include to add these properties to a
+ * node.
+ */
+
+compatible = "intel,microcode";
+intel,header-version = <1>;
+intel,update-revision = <0x29>;
+intel,date-code = <0x6122013>;
+intel,processor-signature = <0x206a7>;
+intel,checksum = <0xc9c91df0>;
+intel,loader-revision = <1>;
+intel,processor-flags = <0x12>;
+
+/* The first 48-bytes are the public header which repeats the above data */
+data = <
+       0x01000000      0x29000000      0x13201206      0xa7060200
+       0xf01dc9c9      0x01000000      0x12000000      0xd0270000
+       0x00280000      0x00000000      0x00000000      0x00000000
+       0x00000000      0xa1000000      0x01000200      0x29000000
+       0x00000000      0x00000000      0x11061320      0xd1090000
+       0x01000000      0xa7060200      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0x00000000      0xd1090000      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0xfd2a2f68      0x82ac7ebb      0xa4916328      0x7480b81b
+       0xd329a777      0x25750339      0x9a8f7a9b      0xf1da9cb8
+       0xb1be7b1a      0x621d5a35      0x94b57e2e      0xa9def809
+       0xe4492a43      0x530252bf      0x1040fada      0x8a853a89
+       0xfb0e6e76      0x6d191ed9      0xefd28b83      0x946414e5
+       0x13f415d5      0x28487029      0xb69855e8      0x516cbedc
+       0xfabbea88      0x9f90e8a1      0x211793d8      0x54653835
+       0xa7789a08      0x754791d9      0x484764d4      0xdca45615
+       0xf64844f4      0xdbd754d0      0x7d2b0ff3      0xd023e25a
+       0xb048bbcb      0x83038b5c      0x57e17d17      0x735f1e9c
+       0x8982c22e      0x6c7b2ad7      0xb26e3b82      0x7121e035
+       0xe4ea8dba      0x68d4f406      0xaaafdb13      0xf119b472
+       0xb5853303      0x20698005      0xcf34604c      0xdc17d19b
+       0x042d6e97      0xf0300325      0xe1b55072      0xc2804918
+       0xd6d7a912      0xf908c81b      0x4f9979ae      0x0179f8c6
+       0x2f13e3c0      0xc5911467      0x39ad6c23      0x9c9d8837
+       0xf3c3f767      0xe56b4a96      0xdad7cebc      0x6eaaee57
+       0x2215ca7b      0x4cee4f65      0xd9a51c2a      0xf33c80a1
+       0x11000000      0x0b468bda      0x0b57c7cb      0x885fad4b
+       0x8a37307a      0x68cc7d5b      0xb6395b55      0x583626b8
+       0x21efe98d      0xa516cc42      0xf5b978b1      0x585d8a11
+       0xdd5f2ee4      0x17b1c7eb      0xb6f005ea      0x9ecc6ac6
+       0x82c0f1b2      0x25a114fb      0xa6086296      0x93da75f4
+       0x0695ff88      0xd413dd65      0xccf7609e      0xb7718aa8
+       0x334406dd      0x28de253f      0xfb43ca83      0xa4674656
+       0x7392e05f      0x9b062c62      0x17571892      0xb5811cbf
+       0x9d64666b      0xa01c1500      0x5893e418      0x07ba6ed1
+       0x0eebedd8      0x299a52bf      0xdfdb6191      0x4e846b26
+       0x298b7431      0x576f4479      0xf5317e04      0xc9492745
+       0x167c42e3      0x0c0cd705      0x82756ce5      0xe81ba860
+       0x536c357c      0xc27433fa      0x41c8078f      0x1ff779d0
+       0x73ddd76d      0xe606c66c      0xe0ad45bf      0xfebdc310
+       0xcb2aa836      0x39903a79      0xe53d5dc1      0x0cb6a1ff
+       0xe6091d08      0xcb2961d8      0xd38987ff      0x2bd624fd
+       0xfb4e484a      0x8c60efbb      0x0ed088b5      0x5a142b04
+       0xa737bab1      0x44da29a2      0xc046ecb1      0xe7ccefdc
+       0x81895d2d      0x41266fa8      0x52a5e25e      0xcfeac133
+       0x252b0737      0xec54b6c8      0xe1c9ebf6      0x25180c1a
+       0xea65b9e2      0x5e9ada96      0x08559e07      0x414fcece
+       0xdb4927f7      0xa229106d      0x6a7db273      0x8ac6a901
+       0x00a87e4d      0x14fd1e2a      0x63a5fa87      0x5ca223c5
+       0xc0c980c1      0x42c447ef      0x5b274187      0x75bd6279
+       0xdb44dae2      0x60856af1      0x777caf5f      0x298e810a
+       0x93f4f418      0x9e1ddf3f      0x6f589046      0x18ea149c
+       0x4a5ce4b0      0x529db285      0x3c2dde59      0x1d680e51
+       0x3a62d819      0xdf4c01d2      0x432a8f06      0x70a37043
+       0x4a0d4baf      0x0d3395be      0xfce0391f      0x5228aac2
+       0x9dd9b00e      0x6149f393      0x6fee1d85      0x1d3628cb
+       0x107076de      0xd99fe940      0xa227eec2      0xc97d8119
+       0xcf2fa8b2      0x821dac93      0x518875f2      0xd18d1d47
+       0x3e27fdcb      0x47823f98      0x20d42c1e      0x9a58812b
+       0xe0987435      0x1426f12f      0x61d6f627      0x5c58d415
+       0xe5ca80de      0x9e11e526      0xbccc0f94      0xb49cec4d
+       0x357f947c      0xbef0e2f2      0x5b9b2596      0xddc87ff7
+       0x5f2705f8      0xa25f2be7      0xbb45a165      0xe49ef6d5
+       0xe76e250a      0x75584c7d      0x7900da7b      0xee0e3360
+       0x6988740c      0x4aa56944      0x2d485383      0xef45f5d5
+       0x0df4b0f7      0x48199182      0x5b33c21c      0x8f2483c1
+       0x8aae6c50      0xaf406ccb      0xb7522bda      0xeafb64de
+       0x9a9b1fd7      0x3ab46c34      0x0ec5f025      0xe5bc9668
+       0xdb108e78      0xd6152ac8      0xc382ec93      0x5abc2565
+       0x4f256030      0x856f6eb5      0xb589dc96      0x3de80942
+       0x49d20a05      0x8e3ac21b      0x0262ecc7      0x5f1bce89
+       0xec50198c      0x0115b078      0xf67d94e3      0x1cc3682b
+       0xfb2d4ab0      0x4d6ce252      0x1d7aace9      0xf7e99257
+       0xc1235e85      0x8129ee72      0xb6cfbb13      0x6b851ab5
+       0x430633d1      0xe9ed33e9      0xfe85a42a      0xb4583c0a
+       0x35a65f5e      0x5fb0bc81      0xe16db440      0x7d022cf2
+       0x8f832920      0x20ed9ad4      0x6a4ace8b      0xf4c85869
+       0xf17dd57b      0x277ae0d5      0xb5f59c50      0x35d099a5
+       0x9ce955ae      0xcb200000      0xcedc4073      0x2a2ba8b2
+       0xa1b53439      0x46ced775      0x59069604      0x6488f5d8
+       0x2bc0af55      0x643178a2      0x36f62be3      0x2606f0a1
+       0x3057cf8a      0xc28f4a3d      0x708e8020      0xb3fccf9a
+       0x29b79fa7      0x35622d93      0x85eb0e68      0x80fa3b59
+       0x143f340f      0x20e17166      0x169fe55d      0x698f3655
+       0x0bc8b45b      0xde3aaf6c      0xbd597266      0x75505401
+       0x44d0095d      0x4c00f346      0xfb9ef2c6      0xee70ef96
+       0xae807621      0xfbbe7490      0x9c0a283e      0x01a8058d
+       0x1be53568      0x0b8dc8a8      0x45afb745      0x3ee1ff58
+       0xe772e14e      0x3ca4e729      0x6973e751      0x764f244e
+       0xca8d1621      0x6c4fb15c      0xae972e6d      0x3d26c6d3
+       0x5ca8f450      0x6328d65c      0x2e7cd88c      0x87dddcc1
+       0xcbbdefc6      0x1ab8c0cc      0xd21e503a      0x20c11d27
+       0x2f0adc1d      0xc24240d2      0xc73aa069      0x99afc53e
+       0xcab27e40      0xbe107ccb      0x8ad5f0ae      0x9024c188
+       0xe02bb39d      0xdb784309      0xf91acb54      0x4d15b75d
+       0xd339c237      0x3b556619      0xf69f91f6      0xca6fcfd4
+       0xb5ddf471      0x0698490e      0xb0855c30      0xe2b34b13
+       0x3c979248      0xc0484a59      0xb4cf9f4f      0x7975f2ac
+       0x602259d3      0x89364c24      0x37f29913      0x0b4c88a0
+       0x23f0b663      0x309c13d2      0x80a3d12c      0x4c866e87
+       0xea7e29c0      0xbc33db6e      0x3c3af584      0x63da0de7
+       0x9bc6bf5f      0x3b948269      0x4d41b09b      0x5724dd20
+       0x4e16618b      0x5917781f      0x4bdec762      0x562cc3fd
+       0x50e59d92      0xb3edea05      0xa6ceaa68      0x60af473d
+       0x78a99aca      0xd60ba313      0xe502992c      0x0c25c2ba
+       0x476eebd4      0xe7e23958      0xc4ac2757      0x0d6695ec
+       0x7664b4f0      0xb87ed0a5      0xdcf23b2a      0x76d38802
+       0x21699284      0x87b80e7c      0xf0e34f45      0x4bb84bc8
+       0x0316744a      0x26de0ed4      0xb25ff5e3      0x31445bb1
+       0xaccc5b87      0x271b976a      0xcdf5663b      0xe142d271
+       0x1af28339      0x7d304ca4      0x11ee6243      0xdf70fbc3
+       0xb8d88f25      0x4c2d9626      0x8eb72c77      0xceee1817
+       0x4e1b35f7      0x6c261f67      0xa32a2801      0x67ace2af
+       0x7c87f8c1      0xca6f2505      0x982269dc      0x137080a9
+       0xe40fa78a      0x3897a66a      0xdc5d0ff7      0x58016e44
+       0x21bcc988      0xf2a4df15      0x9fb021d4      0xca59e882
+       0x3673d08e      0x7cf5d500      0xd41ab9df      0xc17b4a58
+       0x2cb85aa3      0x01103427      0x5a8fac5b      0x7ac856b2
+       0xb1532563      0x1b94b518      0xadea3bfa      0x597109a9
+       0xf28df608      0xc2bf64bf      0xf517bb53      0x61b7d5ad
+       0xa4a38e9d      0xa9fdc597      0xf990f2f1      0x00466640
+       0xcecd06a7      0x5eef09d3      0xb67a08ae      0xd780d8a0
+       0x07641a71      0x9dc9f7b9      0x5f0b5a44      0x94dfe40f
+       0x6db0cf7c      0x3fe72d11      0xb2443ea3      0xe051f336
+       0x4ec8a6a4      0x11201430      0xb44e2b28      0x5bd018b0
+       0x444ba2bf      0xa63031eb      0x147f9826      0x3fc56ac1
+       0xd3a75ad3      0xc3f71815      0x340bd72b      0x3e5a488d
+       0x0cd8fb05      0x17791534      0x68e7321c      0x1489c701
+       0xa39f2d71      0x7cbbd9f9      0x42cba365      0x024f7d9a
+       0x29ef2da1      0x1eb9c4e6      0xc8b24985      0x9c33412c
+       0x5fd3003d      0x7f0793b9      0x497b6ef4      0x3af648f2
+       0x22f4a1db      0xac8500c7      0x3b1a859a      0x57921c78
+       0xb0efd82e      0x8e60452d      0xd86ed85f      0xc1ae73d1
+       0x633d83dd      0x7dbee7f6      0x46ef5590      0x027f2d50
+       0x3c81bcf1      0x37a3940d      0xc92d0a8f      0x270cd02d
+       0xaeed9d1c      0xb6d76bcd      0xda27f251      0x1625a683
+       0xf2d1302d      0x3f95bc0e      0xdb4b36e0      0x96fe1e6e
+       0x1dcbca54      0x57d44867      0x14aada62      0xf20f5444
+       0x9ccf560e      0xb8d178af      0x9affe58e      0x8e3bd741
+       0x7dff29e9      0x3c1998e5      0x9909e1df      0x1bbbd50f
+       0xfda14fdb      0xb66fb65e      0xe646d5f3      0x71f41791
+       0xbca50c12      0x57c6d2a2      0x8f5c750f      0x48f87301
+       0x9103acac      0xef185c41      0x6dbe9524      0x3c040c16
+       0x211dc2ac      0xa61925bb      0x20bfb41a      0x98253e77
+       0x4d5ea3b8      0xc2b11b6d      0x7f072104      0x58340448
+       0x596e3090      0x72484d15      0xf5e5d16b      0xc1b9faca
+       0x5c786fdb      0xdcd97509      0x73d21aa9      0x2a90c7ae
+       0x396ed0b1      0xa23e63da      0xea20cb1b      0xb2bb359b
+       0xb5df6ff5      0xdbc470b4      0xa6fd8d97      0x9458f6d0
+       0x97434866      0x2c9521c4      0xc51f6ad2      0xa33fb3b5
+       0xb26915d7      0x3ef363da      0x9ff9f5c7      0xfa236e60
+       0xa12b879d      0x2f98bd3b      0x95282ca8      0x64f90513
+       0xc03d2962      0xb13b82f8      0xfdc2eb41      0xc39dcf3b
+       0x95a409af      0xbaba6e7e      0x0d028543      0xc5b9426b
+       0x35f5727b      0x8f3b9f8c      0x6e7b85d8      0x2cfa9b2e
+       0x2a7117cb      0xa41f3fe5      0xbe17ff18      0x0f4a8be4
+       0x20b9003a      0xebce04ff      0xd6f276d6      0x9fc66d07
+       0x83f40250      0x560eaffe      0x92be2ddd      0xdb0ff83e
+       0x424f0605      0xb3cf76a4      0x167725c5      0xe3b513e2
+       0xc31a1a72      0x9f7161a4      0x25707dd1      0xdb5f2a91
+       0x85db06af      0x78443bf6      0xebbd8e7d      0x7909e5fe
+       0x618237a6      0xe6dea70c      0xcd3299c2      0x7736d40a
+       0x044cda94      0x6cec190e      0xb9652583      0x51946c01
+       0xcba67203      0x0dae0f1d      0x6d0dff0d      0x85756bf7
+       0x1db9e08a      0x88977944      0xa6252c60      0x06ff1a07
+       0x1b8d319f      0x884f10eb      0xbdeb7feb      0xe1681bb9
+       0xb5f0cefc      0x5359534d      0x6de87cf9      0x94a78727
+       0x15c17557      0x398876df      0x2f85f258      0xa0284d4b
+       0x4879ca57      0xb5ab7844      0xb402fde8      0xd520cb53
+       0x8a601365      0x8853b510      0x1e0538f6      0x0135f899
+       0xa78c7bba      0xa33c8ccc      0x6cf0da00      0xa5f96757
+       0x94714373      0x79413ed2      0x27c7b9cd      0xda172153
+       0xeeeee91b      0x959d8437      0x660efcda      0x2a6ab94a
+       0x8913d65f      0x24246350      0xf6c85ab5      0xf6b696f7
+       0xd75840c8      0x046b7435      0xb55474fc      0xd8d8bab0
+       0x265e79e0      0x0dd030b3      0x826a182c      0x38f1121b
+       0xeb33b5cb      0xe3ca835b      0xe8850761      0x25955d7a
+       0xbb6b7fb4      0xbc02ca0f      0x1b03bd1f      0xdd1a59d6
+       0x5d48f10b      0x35e35688      0x1411d34a      0x6131c664
+       0xc1b8b277      0x1bc8afd3      0x886f0c09      0xc1b6b517
+       0x74ec9ecb      0xee2d43a5      0xbc0f122a      0xd1911c88
+       0xc7e39b2e      0xa60c39b0      0x942fce7e      0xc8c2a2b6
+       0x51978cc2      0xad8d9ed2      0xcc2b0c3d      0xf6aff0f7
+       0xbfb3920a      0xd25aa79c      0x67d87d44      0xf612df60
+       0xf06dbe9f      0xd4ab61da      0xd96c6b1b      0xb39ab4b7
+       0x3368a90d      0x39c8bd81      0xf4ba5ead      0x6fe656ad
+       0x93b946dc      0x2181219e      0x7b98805d      0x675af3fd
+       0x59760289      0x934b4803      0x4189f27d      0x9503a5fd
+       0x42aaa076      0x6b4bd024      0x86c826e9      0xe0370ff4
+       0x1bfdf980      0xc487f797      0xd4754c3b      0x1098b2e8
+       0x05753a1c      0x3833ede3      0x5f1065ec      0x40cb562e
+       0x8d4fc418      0x392290d2      0x622d2e29      0x55df1f46
+       0x4ae0893e      0x24ddf8a9      0x302a64dc      0xc93f7504
+       0xde8e1674      0x033acbcd      0xc9732a64      0x6f7a7da3
+       0x72b7c43a      0xb5110e6a      0x00865c19      0xaf5e00f7
+       0x0a80b55d      0x6e638c0c      0x3771d602      0xb4a95ae7
+       0x01ba3cff      0x42e350eb      0xedb1d897      0x82f0cfff
+       0x98e79055      0x6b0cc62e      0x8ce1735b      0x62645395
+       0xd99fc208      0x86ee3066      0xc8f13758      0x2378d582
+       0xad41c218      0xc3954b87      0x47acab9a      0x69126227
+       0xbf778357      0xc5a7b76c      0xb96894c4      0x89e2dd88
+       0x27cc53b7      0x2187116c      0xd397c13b      0x578a6686
+       0xe3e58b11      0xdc3e4d40      0x69f064f5      0xdfb64348
+       0x42291e77      0xacc21c46      0x5444d976      0x616bcdc1
+       0x01ffb3bd      0x5cb926e5      0xbd763a24      0xbf224c70
+       0xdeca1d57      0xded1cc56      0x9b6cbcd2      0xee6efaf4
+       0x44d634ff      0xf33334c6      0xd275d66b      0x6a1a4c9d
+       0xbd675ae0      0x6289d1c1      0x053aeaf0      0x8a170aa1
+       0xe12cfbb9      0x0ae15a94      0x1dab08f3      0x9a2657ab
+       0x8348417f      0x9572e6dc      0x9c69e518      0x5397dfa1
+       0xe46120cd      0xad4457fa      0x0106a79d      0x40b191be
+       0xbb64bccb      0x9dda8fb0      0xc74fe994      0x64ac0ef1
+       0x3a57986c      0x86e8dc78      0xbb055d88      0x7a1243da
+       0x585cafe1      0x8968ad92      0x5b73bf26      0xccf77edc
+       0x10ac1643      0x5738ba43      0x3d39ecee      0x57fd555b
+       0x36ee9d5b      0xec9115fb      0x4250e03f      0x9e4fd6a6
+       0xc547b01e      0x9c84f42a      0x37756616      0x217cb517
+       0x33da3c5e      0xa0a7ae6f      0x8ddb7b99      0xbd84ac35
+       0x644ec4e0      0xaa62a7ac      0x71795f77      0xd5f67163
+       0x77dcc227      0x59f09342      0xf6666ce4      0x1e164a0c
+       0x011e205b      0xc4a80a0c      0x7fd31f1d      0x05ccae4c
+       0x39b6abfb      0xf4b7ac82      0x39d38e89      0x14c1e7f3
+       0xdb3bb53b      0x02577ec5      0x7bc12087      0x65ccc2bd
+       0x72492c6e      0xa6ae0062      0x965946ea      0x58e5f31a
+       0xfdfd7770      0x052afb9c      0x889b8358      0x2dd65c3e
+       0x55418587      0x445af0e9      0x43fe6671      0xae45e776
+       0x2c25d02c      0x44805865      0xaa3a70c5      0x7dd55d11
+       0x3499f5d7      0xc12e4a51      0x9ef98a38      0x5462e98c
+       0x0f73c72f      0xd0481aa2      0x56bccd0e      0x64143a1a
+       0xa7913ef6      0x0ca932ae      0x3739ec96      0xac5d38d5
+       0xe9c8c754      0xd56e855b      0x950cadcc      0x91cb2e5e
+       0x6e170c11      0x1eb66637      0xf641b0ae      0x8ba43c21
+       0x3f43b8af      0x8f1596e7      0xb614d1ae      0xac99c14c
+       0xe7beddce      0x5757f98b      0xfec1cf89      0x19608162
+       0x96479a49      0x1f089d9e      0xc2e4ac47      0x1cdea563
+       0x027f57a7      0xc0ba57c6      0x6eb2faa1      0x8e85c333
+       0xc391dfd2      0xe2c0bcbf      0xc1f87d66      0xb597d958
+       0x3655d5a3      0x2d9adaaf      0x8efd0aa0      0x05d65caf
+       0xa28991d9      0x28b6d7cf      0xdcb48013      0x65e75783
+       0x8b8b77ed      0xa4b36df8      0xa8ccfb9d      0xd0a1734c
+       0x2dc97601      0x35d81082      0x2e6d26f8      0xf3baf2c5
+       0x416084dc      0xd8b84ad5      0xa06b9edb      0x45c2b0b6
+       0x553c973a      0xbbcda1bf      0xca154d25      0x7a781012
+       0x4864ea32      0x0784f663      0x27656507      0xb359d4dd
+       0x43d4c165      0x69b844c7      0x31b1b9e2      0x0f3420f8
+       0x3cd2e455      0x201920cb      0x93018659      0x5c4a08f0
+       0x3a0d094b      0x5448c1ed      0xc888d1a2      0x4826cb64
+       0x625da2c7      0x12110d40      0x5cd8e76b      0x26e09eb5
+       0x8c6aab45      0x6dd192c6      0x937f1252      0xc927efc5
+       0x4c5bf11c      0xdd62c6fa      0xeef59620      0xbffc2d5b
+       0xb90299f0      0xb24df71b      0x76656678      0x550b3228
+       0x01536098      0x4fbfe03c      0xa82d0c31      0x2eec9bb6
+       0x752e6720      0x26322556      0x5d94bd64      0xa2e1122a
+       0x25899986      0xb63d5cc2      0x9222b055      0xbf4f0bcf
+       0x3d182483      0xc7bb9999      0x97ffc8c1      0xa6500a8b
+       0xb8b97382      0x3f6f39b0      0xcaca9f6c      0x7b67941d
+       0x7875ea1e      0x3ff25c0d      0x4cff1a40      0xb5a351ef
+       0x556a59e5      0x011e995f      0x25a7a5e9      0xedc8707a
+       0x42b4ddfa      0xa51a3ddd      0x9c9f1d73      0xc8f24ef3
+       0xfcd73118      0x1a61c16f      0x1e2fa7c7      0x1f49826a
+       0xd8418fe9      0x726358a8      0x6a0857fa      0x6804ccc1
+       0x78a55fa0      0xc3e41419      0x60416b10      0x2afe46d8
+       0x0c0ba2f7      0xd3dfa8ca      0xfa474ea2      0x8e763446
+       0x1f664c64      0x6a8d06cf      0x1b891114      0xa27c1a28
+       0x98ddd324      0x26cc9fb8      0x544078da      0x03acbeee
+       0xc3f3b761      0x56797b83      0xf04ac5a1      0x8603b17f
+       0xb8989b96      0x28c7be17      0xb750b4a6      0x84b2f7f8
+       0x32138f9b      0x7661c86b      0xb7517518      0xf2a961c6
+       0x240a0100      0x100c5b96      0xa1931730      0x18513938
+       0xdf2baa73      0xd6b55cce      0xf89cab59      0x238c90c3
+       0x4799f50d      0x29cd7942      0x62677a47      0x7261f326
+       0x4ff7da96      0x294ba5e9      0xb6474251      0x96de1b44
+       0x9d84552f      0x1103468f      0xcfd063af      0x5d8a0b6c
+       0x172670ac      0xc1a9b97f      0x0a278773      0x08b48bb5
+       0x392b3563      0x8f65e926      0x4be71f10      0x7615e05e
+       0x98b0c931      0x50bf9779      0x5baa97aa      0xb6e26fe4
+       0x2c40971a      0xe5d739f0      0xa7e30500      0xc724895c
+       0xc7a3f44a      0x5b381b1b      0xa7a478c7      0x219f567c
+       0x42d7a960      0xaae6780f      0xa96c56d1      0xe3787bf4
+       0x743f3a5e      0x6b99c9e1      0x36cf72b0      0x784ab5c2
+       0x5113773d      0x625393af      0x62c4da61      0x05422921
+       0x339711f3      0x3ee04f5e      0xf3a778b9      0x55e1bcf7
+       0xe49e5a9f      0x5f0935f6      0xa13e17f5      0x3028d23b
+       0xac9a6fd9      0x14006013      0xbf1b3fb2      0xce785f7b
+       0x83942244      0xd299d59b      0xf8c0593b      0x71c74beb
+       0x7561a1f5      0xb133ace7      0x15d5d4c1      0x21c3bb29
+       0x6ab1c2c7      0xee20d3dd      0xcfd62c54      0xedf9a43e
+       0x0e23222c      0x5eef5bc2      0xe7426bd0      0x42db58e9
+       0x62ffe203      0xd63163c5      0x8dbbcb48      0x9e16d9c7
+       0xb6d51e39      0xbee5a6c4      0x5d0bd775      0xeded86db
+       0x9eb1454f      0x6217eb64      0xa4b76ae7      0xe3481698
+       0x6d576cec      0xe751f610      0x1473bd83      0x4aaead8c
+       0xff4a602b      0x01ed092b      0x310f16cb      0x2e199177
+       0x693a8ad1      0xf5e520d1      0x1713d604      0xfff1225c
+       0x644c81b8      0x1adf5032      0x79058d81      0x7aafda08
+       0x80b6c9df      0x6f927c46      0x307bcaa6      0x0a1aac12
+       0x7d20bdae      0xd0e9c9a7      0x4530bebc      0xf1dbac36
+       0xdee3e8a9      0xa96d2aca      0x291c6944      0x436cfac8
+       0x9dd501c3      0x696e0c6b      0xa85d7036      0xca1c1321
+       0xcb802235      0xae614fec      0x4f0cf745      0x08604468
+       0x93bd00f3      0xf39eb605      0x89a8f420      0x18a7f61a
+       0xa0aebc3b      0x723e6ba9      0xed00f2a0      0x231b43d5
+       0x37c81702      0x891ffeb9      0x122de4f5      0x90f16757
+       0x1eb06046      0x21d5cdd1      0x75fd0e6f      0x7d595ae9
+       0xeb8ed50e      0x7bfd8696      0x3b91f3e4      0xd629e74a
+       0x1650dfcd      0xda48163d      0x2f8f5aba      0xbc40ee60
+       0x5291b6b0      0xb059d788      0x1ed5f092      0x65b7a885
+       0x44503d18      0x3a2893c8      0xaf3dab25      0x8ee0a8e5
+       0xf82f0696      0xf4fe9322      0x863feff8      0x2cfee629
+       0xacd8bcbc      0xb3791232      0xdd694c06      0x2a606479
+       0xaed9bc38      0x49a126fd      0x2a9c7581      0xaf43095c
+       0xb97acc90      0xca7a25b6      0x06adceb3      0xc8bf7269
+       0x6eeb0c59      0xa953657b      0x8e175c3a      0x9facc87c
+       0x4c143d0b      0xb4467fe4      0x372b6cbf      0x2099b361
+       0xb8ac2cfe      0xb9a798d0      0x15b8b336      0xdab5d568
+       0xb53a4dda      0x00ce1ef7      0xefef7644      0x41823aa2
+       0xcb8d307d      0x3baf1baa      0x7124a219      0x8d2820df
+       0xf3b8cfed      0x95e55a1b      0x8199fa40      0x631042fc
+       0xf7886353      0x3592b875      0x3b516841      0xac7aa00a
+       0x3dbfec52      0x9b91e8d6      0x0a8ffce6      0xd11429db
+       0x92392bec      0xe194095b      0x253d7425      0x6b55919c
+       0x4c11de8c      0x10b46ae6      0x5902c153      0x9509ace0
+       0xbb65fc04      0x648a35e0      0xab728bec      0x738effb4
+       0x416f95fd      0xee30a0da      0xcbaf3cb4      0x312fdeda
+       0xcdb5aaf3      0xcc631b82      0xe3bf4d97      0x37e2a1b5
+       0x2920c6b2      0x0d995ad3      0x11af607c      0xcacf31d6
+       0x781496f2      0x9e478c0e      0xc4c14545      0x89ba2ab0
+       0xdb1a8262      0xbb924c65      0xad836a24      0x4374fbd6
+       0xd45a10df      0xd4158c0f      0xd4e88c1a      0xee8b8e23
+       0x3472ee5c      0xc0a0de0c      0xb1ba04dd      0x7be6532b
+       0x0101669b      0x2a56f032      0x12879eef      0xa600458f
+       0x20a96992      0xa2e7910d      0x13235ef1      0xb1185320
+       0x418ffba7      0xc0ba01af      0x27571c7a      0xde5b661f
+       0xdd359089      0x6ae76b8d      0x095784d0      0x400a29fd
+       0x5b3276cc      0x774c4e38      0x6a85e14f      0x37d8d1bd
+       0x2007cea4      0x3e6942be      0x1a49828d      0xea4d84ff
+       0x681b5a30      0xd8ff8440      0xac19844b      0x7553a6d0
+       0x389fb0a2      0x1b0526fc      0xa193b9e0      0xb9987cb7
+       0x6f14d980      0x0507f958      0xf6a1354f      0xcb9e49d8
+       0x5a4e1d3f      0x10d8c348      0xb77cf166      0x5097503d
+       0xf0e17ed5      0x72a2e029      0xddc756b8      0x0a0e30e8
+       0xf12c6bc7      0x809db2c5      0x243fee9c      0xd2b57957
+       0xc1b19244      0x8d59262c      0xff94c28e      0x2050edc2
+       0xa4806d15      0x02026bf6      0x2d95c9d1      0xeb336e65
+       0x84bcf6ac      0xe53b97b7      0x954eedc9      0xf22209fe
+       0xf4771bc0      0x1e405f04      0x1d0ec592      0xcd479333
+       0xdfeb3738      0x0ae23cb7      0x03d509c5      0x837a5e1a
+       0x634a4467      0x7ee22185      0x102f5326      0x5d002daf
+       0xea4e31ce      0x1d2be82e      0x5ebe1ad6      0x354259bd
+       0xdaed312d      0x1e598ea0      0xd6a2b9af      0x76eb9bbb
+       0x338645d3      0x4d3236f8      0x777011eb      0x0221d076
+       0x22dee347      0x1e35037e      0x2f34d4c5      0xdda03e2e
+       0xa541311d      0x3acf0087      0xb435b17c      0x08b8210e
+       0x7c77f156      0xe20025f2      0xea0e32a9      0xbf766fd1
+       0x8b6c4f43      0xf6ca80f1      0x07d1d342      0x272b865d
+       0x8261aed7      0xf3bbe9cf      0x5835370f      0xfaaf4623
+       0x8cb5a665      0xe6c92e5f      0x22ce69f6      0x61e16f89
+       0xf15ec311      0xbacaf7b4      0x1317e388      0xa1869c49
+       0x328da67f      0xd818a8fb      0x6f4c7613      0xcc13480c
+       0x06789788      0xa7b4e1a8      0x0d8fed7b      0x48308fe3
+       0xbe5ff9e2      0x7e7a74ee      0x4ffbb70c      0x551895c8
+       0x734ffc0e      0x82b8b8d6      0xdf710f9c      0xc3df529d
+       0xf175e377      0xcec6194f      0xc3443fb1      0x52655208
+       0x94be229e      0x3279939e      0x771647a1      0x34c9a15a
+       0xaae80baa      0x0b32ec13      0x6d59b440      0x50ddd10b
+       0x98c166cd      0xfd465f40      0x74eabbc2      0x6dcb95c0
+       0xddef6f85      0x54348377      0x905f31bd      0xbde86f48
+       0x1322356f      0x90f3d5f2      0x5d2d4de3      0x2d5253a5
+       0x729b8879      0x41839289      0x845f8061      0xf5ffcf8b
+       0xf25ec4d7      0x30570dda      0xcc69f64b      0xeb024bde
+       0xc847bf80      0xeb8c5624      0x4e4d28eb      0x43f6cc1e
+       0x8c201bfb      0x1475f9cc      0xde13b005      0x11fd9342
+       0x07617ac9      0x2fec6867      0x5b30a62e      0x5a8c91f7
+       0x47208b6f      0x680a22af      0x60fd0ebd      0x229ebe44
+       0x568c37d6      0xa3eb78b7      0x6f06f502      0x1b183db2
+       0xd48e4d35      0x4fb23b3d      0x57d7dc0b      0x3d34b427
+       0x0415552f      0x1bbe91d1      0x74e7ecf8      0xb1fdc30e
+       0x466a69f5      0xfddf86b3      0xfb61fd48      0xae250961
+       0x6a99bcec      0x2142c5c8      0x1c08d4ea      0xe8f849c2
+       0xa3cb1614      0x43ac8702      0x22b50659      0x92dc3644
+       0x7a40a305      0x4a1e0780      0xfb638be0      0xb0912795
+       0x522a688e      0x1133c55d      0x0544a27b      0x3c56a574
+       0x748502e1      0xaee58228      0x30ae0736      0x41a029ad
+       0xa1e3d0e1      0xa9b66582      0x6ec07231      0xda4dba0d
+       0x41db8fa0      0x731529eb      0x87f679d3      0x593d1579
+       0x10935a3c      0x793d7b44      0xac680a86      0x1d01ec27
+       0x6d669681      0xef056753      0x96aab271      0xae070e5f
+       0x3321dc26      0xa5ea33a2      0xf8f14406      0xdc755c9d
+       0x7f8e3210      0xc2fd90cd      0x34c102d7      0xe1c744a7
+       0xa79f623f      0x07507959      0x34d28c67      0x26cbff85
+       0xfa24075b      0x618dcdfc      0x64d52c6e      0xce650b7d
+       0xcc414394      0xadc52ceb      0x43667ed0      0xa04f518d
+       0xe52196a2      0xbcb7e578      0x2ed0486e      0x4d669b00
+       0xf765e153      0xd2f097df      0x4ef97542      0xfa31d688
+       0x1698d42e      0x3d828d65      0x222355aa      0xf2c37eb2
+       0x3da4052b      0x198577ae      0x819590ff      0x5ab919a5
+       0x673d5552      0xd2fa9d52      0xb711b72c      0xabd9c188
+       0xb73a4ce5      0x2d20447b      0x3d19d4c4      0x4bbe86d0
+       0xd205021c      0xe9875ec2      0x8dcb01f3      0x6e109fec
+       0x60a3a693      0x2fb6b975      0x0ed26de1      0x7487f920
+       0x83092880      0x4d5fcb5d      0x72b047d0      0xa256dcdd
+       0xfef28251      0x41e36ee6      0xd91e2c20      0x7698357b
+       0xb3684b1a      0x272311be      0x32860f75      0x44a6cc61
+       0x63e3f66f      0x5a1497b7      0xeddf5a57      0xcdd4577c
+       0x3cc63cd3      0xf7e72773      0x3fc9bb40      0x97ce4118
+       0x1438da68      0x7a32210b      0x2aa07598      0x04e858ca
+       0x850e0082      0x0b0f78d1      0xb178c391      0x9a2e231e
+       0xa8f3b67b      0x2a08ea99      0x340d101b      0x42973ffa
+       0x755ae5cf      0x201213c4      0x445e44f7      0x15a872c8
+       0x857b94f3      0x24c023ab      0xb203df2a      0xc4711de8
+       0xd1faaeea      0x1eb857b6      0x8c1b712b      0x11ad0f2a
+       0xc64cf474      0xff6c128c      0xff13eac3      0xc4952e8f
+       0xacdac9d1      0xb8c2f092      0x38d50a33      0xaeec4534
+       0xa661a7ee      0x4d19a2bd      0x0f2d95e4      0x9a221827
+       0xc9fe071f      0xe53486d7      0x1dc5426c      0x848eea4c
+       0x607f616b      0x41a301f6      0xeadc389c      0x1f109048
+       0x249f14da      0x2a20d362      0x7c93cd00      0x7ca633e8
+       0xe50fb5a4      0xace8f92f      0x49638c89      0x478b4371
+       0x60d70e8b      0x0bfb8bfb      0x6cac803d      0x702996e4
+       0x15a35d2c      0xd68a2d93      0xe025d5ee      0xd8ca8c86
+       0x295393d3      0xce1be3f8      0x0ee6bd15      0xd6735f38
+       0x311495e6      0x7eb8bc83      0xea53551f      0x4fa9a90d
+       0xe16a9ea0      0x651eb233      0x95f0afec      0xc687ed29
+       0x0cd3abc8      0x132bb8b4      0xd70dadd3      0x538e630a
+       0x98481e4c      0x0d7e6f1b      0x3986b2de      0xbe0924dd
+       0x1d14608e      0x189f553e      0x7a6b7786      0x48bae520
+       0xed56a3cf      0x795b4c6f      0x8670597a      0x40eb02ab
+       0xf9b0b287      0xec9f86c3      0xe9a8c3a1      0xe6860542
+       0x387ad930      0x8676e402      0x633f0709      0xd661d134
+       0x011c1396      0xabf1f3f5      0x3fd76128      0x7be75289
+       0xa6046e69      0xf3713680      0xa2ed30c5      0x893df28d
+       0x197b8543      0x9860bef6      0xf6930c5c      0x6c0c379b
+       0x0b0026e1      0x3ca86896      0xa7ea0bdc      0xca94413f
+       0x6cbe8d16      0xd3e4edf9      0xb06efcef      0x3a8934c6
+       0x00195592      0xa978bf0c      0x7435b0d1      0x3b17d97c
+       0x0438684e      0x576ced8e      0x648683fc      0x362a8a87
+       0x493fd86f      0x6bbe0476      0x16f74de4      0xbfeaaba8
+       0xe6b90728      0xdc252878      0xe0b72eac      0x0872f52c
+       0x2bab1521      0xa6c0d894      0x9f2b3726      0xd392e334
+       0x785f82ce      0x15bba4af      0xb55cd743      0x6e8e9cf8
+       0x047fd2e7      0x1fdfe424      0x8d4820e5      0xce7dd8c3
+       0x88c82282      0x31ef9a76      0x1881fc38      0x3932a9da
+       0x65bbfefb      0xe00f33b6      0xdd0754aa      0x1f596051
+       0x704dfd7b      0x2604be1b      0x08b6c4f5      0x3f244085
+       0xd89c65e3      0xcc4cdb71      0x143a2681      0x1bd3d004
+       0x009460ff      0x86e314a5      0xb1aff86f      0xaa2599df
+       0xbf68de69      0x355c8267      0x9588dbed      0xe47edd9b
+       0x266b2ddd      0x129b0b01      0x6e6622a6      0xb3ea4a00
+       0x802abd6b      0x7a268c1d      0x9f5a7b41      0x6f4aba0e
+       0xe279b988      0x660ef08f      0xf4207beb      0xfa0168f6
+       0x93266ea0      0xedfef092      0x302b5e5f      0x7278d2be
+       0x58a494ab      0x8f53a302      0xf5e766de      0x1ef717bf
+       0x45e2d6fd      0xf593b066      0xaea0f1e1      0x1bd1e027
+       0xf853ba21      0x1127c5c4      0x8aa43b18      0xf1fba0b8
+       0xe1cfb0b8      0xa9f9fef6      0x1320f1ab      0x5f7dfc74
+       0x30f11ab4      0xaf47a3cc      0x9c190830      0xac085edb
+       0x8b4db7c8      0x771ec065      0x6d5f3c3f      0xb8815437
+       0x20d3c99c      0x00823c74      0x24d63cae      0x7587e453
+       0x1a3fd67b      0xa5b361cd      0x789d168b      0x98a93943
+       0xd7505c0a      0xa923b38d      0x46097a4f      0x814e41dc
+       0x0f50f2de      0xbb548368      0xc48273d4      0xf27b6798
+       0x9a6b5231      0x68491e7b      0x3f482179      0x89ea3b35
+       0xa7525ffd      0xf8f1f616      0x07859572      0x738cb4b3
+       0x8937c6dd      0xf5988c71      0x4874905e      0x677a8c17
+       0xd58df987      0xc4210078      0xe6b1c480      0x7a91e14d
+       0xa1228a7a      0x09057467      0x6cd59ec7      0x6ba93248
+       0xb8e263cb      0xd3305730      0xaec36ee6      0xc773d0b5
+       0x2895f8ec      0x6c9f5fb5      0xd32a21a5      0xcea9d058
+       0xfa97282f      0x5559ceb4      0x5a0bf57c      0xf3cd99b5
+       0x2771f6c4      0xfcc9a35d      0x5143417e      0x7c6f9db7
+       0xb47cb7df      0xe7dde37b      0x70a07531      0xe25e06a2
+       0x3bbb7d30      0xaf41b085      0xe664f973      0xee2c7ab7
+       0xef8eb1b5      0xfba67f7d      0xd71568dc      0xbbff3339
+       0xdf49725d      0xbc0e7edc      0x5361e6d3      0xb0978c73
+       0x1320540a      0xa9843a06      0x34099c74      0x4bdddd23
+       0x18680496      0x44f9cc19      0x6de71a34      0xe4eae858
+       0x3349a819      0x28400571      0x10a55fe9      0x05672399
+       0xb376eadd      0xed4b1a35      0xe79d0a4f      0xca8d0601
+       0x78a7b066      0x8ea59a40      0x7be112a2      0xe99ea438
+       0x44bd9efa      0x6e5227a1      0x70325aef      0x777282e9
+       0xb579c189      0x4ee92bc9      0x0d0236dd      0xb57cf232
+       0xb815e184      0xd05823e4      0x0c9490b8      0x70a5fa56
+       0xdf0f178a      0x99d27374      0x1aba9e05      0x18378c3d
+       0x86991118      0x3a199a70      0x90b2a2cf      0x67a6923b
+       0x0975e5f2      0xf50fb0a3      0xbffbd67a      0xce6371e7
+       0x203564ef      0xb1d7a395      0x201cb1c4      0x30085e3c
+       0xfb2c66b4      0xf80ae969      0x1d407625      0x0bca1a0f
+       0xb62c078f      0x83efbf38      0xbd7b0a69      0x7d9bb66a
+       0x46b5c885      0xb256d753      0x0b5d008e      0x1756d5bf
+       0xa9ffdaf6      0x01231fcb      0x8c69e461      0xbb2ad661
+       0x29dee8f7      0xf1f23d56      0xd5e90ffa      0x48d9d93e
+       0x77b26e95      0x49c47953      0x7565da8e      0x41a6124a
+       0xfce69643      0x55f99554      0xa5501d6e      0x5738b726
+       0x4c989c96      0x93cbe27e      0x20ff3d38      0xf4787a09
+       0xfa3520e4      0x26b2dc11      0xb701c94b      0xcd8857ee
+       0xb4b07229      0x0bbcf1a7      0x3d31cd32      0x08ced413
+       0x3da04c1d      0x7bdf1787      0x344f510d      0x53a02e8e
+       0x7e295418      0xa5ed24b3      0x3a5a2c98      0x34947e44
+       0xb398bfcb      0x7c0ea498      0x18db3289      0xec646beb
+       0x2e8ed766      0x5aff9ee3      0x497dc7fa      0xa70c3be4
+       0xfc9306c4      0x729f532c      0xd87d61d0      0x635fadbd
+       0x1efb1234      0x66fdb543      0xf5b86d07      0x3a4836fd
+       0x9caf7dd3      0x8a9d9e5b      0x179529ac      0xa9a3fee8
+       0x4cfa4495      0x791b8b7a      0xc503fc2b      0x1e07d0e5
+       0x0561cfae      0xb5e7c403      0x0809744a      0xea84c654
+       0x23614fd6      0x23ae773f      0x545be2c5      0x3585b8b4
+       0xcad8b6ed      0x088a56c0      0x81054caf      0xecb13d9f
+       0x44bd49f7      0x90a3da4a      0xf4b04300      0x32a2b69f
+       0x44bed501      0x85cb54ef      0x85dde589      0xe410132b
+       0x1c2e41c7      0x3d28cc9b      0x4df948de      0xaa058c37
+       0xb82cf615      0xfa0574f8      0xd0391f5d      0xfb2b98b3
+       0x3ce5585d      0x80ca4d6a      0x4b138f75      0x721ccc65
+       0x496a3e37      0x4a8dd025      0x2d77b3db      0x65800ff3
+       0x1d2df03e      0xb4b12a59      0x4c6a5b9b      0x17413fda
+       0x4e938a09      0x7e3aa03a      0xf86cc8f3      0x972cd7b7
+       0x871849b1      0x0c0879d2      0xc7c652a9      0xe9531ae1
+       0x541142d9      0x4f731afa      0x9c43e538      0x866b695d
+       0x4a4c4076      0x1e8aa293      0x51bc1eaa      0x5f57d28a
+       0x142eb7f5      0x14096954      0xae0e9eb3      0xef732983
+       0x70187474      0x3569b88a      0xfd3a3c61      0x54f0e2d0
+       0x7afff032      0xa89cd23d      0x658114ec      0x434ccbc9
+       0xc25f33c7      0x1b6e9a7a      0xd97bd017      0x3b7489d7
+       0x67129c97      0x333ee180      0x04bf73ae      0x4731105f
+       0x09d589f9      0x7d5a67a3      0x3e8fcb8c      0x2090c536
+       0x14a623c0      0x21a247fb      0xe117bbe6      0xe98bbd1c
+       0x09e23674      0x02f09f22      0xba7f9f45      0xd18573b6
+       0xa6eb18fb      0xe01a7904      0xa8869f58      0x82ec81ee
+       0xf4549f1a      0xfa0f6085      0x1cf809e9      0xe603d078
+       0x13525306      0xd5611c7a      0x2c92b32b      0x5fdc0c0a
+       0x0b3aaced      0xa40059b7      0x27c42499      0xcc619db5
+       0x9f9b7841      0xfdca5eb2      0x2d3e833a      0x2830a6a0
+       0x4c81f3b0      0x3ec8a8bd      0x50b95605      0x33a9d515
+       0x7fe14795      0x4ff1d83d      0xef92fbfe      0x87f4faed
+       0x35d5fc69      0xd8764a49      0xec81abfe      0x634a2ed8
+       0x9635825a      0x0943624c      0x5eea8464      0x578e2344
+       0x551bd5af      0xca02915b      0xea419d8c      0x9d0fa00e
+       0xf3633f48      0xc6ad62ae      0x1eeef6ab      0x21ab106a
+       0xe325954d      0x60457916      0x6ac9168c      0xea8a9d6f
+       0x14772361      0x7630452f      0x8795e1de      0x21144d8d
+       0xe7996dd2      0x45aff64a      0xfa62c37f      0x3f5a04cf
+       0x250f988b      0x7985d243      0x1f717008      0x7908d22f
+       0x4fc0d5d5      0x856d9819      0xccfab84e      0x3fec2a74
+       0xe75c1af6      0xe2682ac3      0x2f08e560      0x7133d2a0
+       0x63e5fcca      0x3a17438f      0x9cb826c8      0x06a2f3cd
+       0x4bac2001      0x50596ba4      0xe74758d4      0x64d17e0a
+       0x08fc5b67      0xb0d62f6e      0x95eb8e15      0xd51bfa64
+       0x421c68b9      0xdd1526a8      0xfb7ea10e      0xab21193a
+       0x4b1186dc      0x77bbfd82      0x1ab08e9f      0x871659a5
+       0x1658fd5f      0xa04f322d      0xf50ed273      0xb8d411a7
+       0x8056489c      0xfbd858ae      0xd70f7d88      0x3c5cbc78
+       0xf53ec2be      0x1d2228e2      0x8b53aace      0x212454d9
+       0x76ea1d2e      0x9ca66373      0x9f6679c2      0x51c48b56
+       0x47348811      0x8abc0a27      0x60050980      0x5d290483
+       0x7ea8504f      0xde186466      0x91219d4c      0xa73144ed
+       0xb5f36fa4      0xa37912b8      0x02625bd3      0x3bc2d9ed
+       0x2e623844      0xa9a751af      0xf0ba18af      0x4433e06e
+       0xca7cda24      0x686c9163      0x86a437c1      0xf8c17120
+       0xed50542e      0x62b61fa1      0x600e47b6      0xdff86df8
+       0x77502dd5      0xea5d75ac      0x095a06e4      0xa18efafd
+       0xfbd01eaa      0x27a1cb0a      0x3dfcab8e      0x07be7250
+       0x086cb680      0x2c1ddcf4      0x6fa79784      0xcd874edb
+       0xa383d520      0xa5c0d1cd      0x2e09cd9a      0x34d645c4
+       0xf6b9b98d      0xe8e80ab0      0x39b78c60      0x6098b6f2
+       0xc3c13e53      0x88c9fd83      0x60c9e766      0xf49c4c2d
+       0x79e3d3d3      0xbfade7d5      0x6ba57dc1      0x3069e3ad
+       0x59632e2b      0xb86e871e      0x2dd63287      0x9704b283
+       0x343a6cb3      0x37d7950d      0x283f262d      0xd49d5f75
+       0xdacc49b7      0x5952e045      0xc0fefa19      0x69effce3
+       0x5b2a3c0b      0x3757339f      0x18584f8a      0x77a80760
+       0x5fcdadc0      0xc9b4df80      0xfa521be0      0xbcfc8ecb
+       0xfd3f8eb8      0xbee4739a      0x139caf94      0xbdea1cd7
+       0xab158240      0x233fd8dc      0x8ec63274      0x34eee6d8
+       0x4603b2f8      0xae544fc5      0xcd444551      0x2b2b349a
+       0x0a562524      0xb2e02518      0x577b1125      0x8b3c1ff9
+       0xfd27d88c      0x2ad77d04      0x1f82a54e      0x20254fdc
+       0xee8e63cf      0x8df3fa2f      0x9ffc7c43      0x421ae12f
+       0x9b166441      0xb74a5a4f      0xdad0511e      0x0a8ee5e9
+       0x8fe86041      0x37ef90ea      0x3fcf8380      0x87288691
+       0x384b8b8a      0x98d8a45f      0x995443d7      0x6c617236
+       0x9a40f76f      0x9f30733f      0xfdbf3927      0x7b4c0281
+       0x9e87e64f      0x9802938c      0x65f9de31      0x829c3eda
+       0x0a1d2f4a      0x22e0e854      0x30045b70      0xbf84a44f
+       0xc2c30b57      0x47c5ff90      0xaea87e93      0x99c69ae5
+       0x1080e89f      0xc2896e80      0x09ba0cb2      0xd16ee263
+       0xe05337b0      0xef1d8359      0xc1d4b102      0x08620117
+       0x2e4ab2bf      0x05dc3af8      0xc7ab866b      0xeee05983
+       0xd0a00c19      0x96996791      0x75ac6042      0x29001ada
+       0x13440a23      0x2b1eca42      0x4cddfd68      0x81a98384
+       0x6bcda226      0xa8594443      0x92f26e53      0x434de4ec
+       0x07596ee2      0x4c8ea6ed      0x5596054d      0xaffe0ef4
+       0x6dc1ab64      0x20bc006b      0xad4e3933      0xe6df0d3f
+       0xfb3ca9ee      0xc2895a4e      0x8fed0d43      0xa5ed7985
+       0xc364f083      0xc397a806      0x7b651ff9      0x1d7e22e5
+       0xfd02f57d      0x5f16a429      0x8612177a      0xd36b8983
+       0xd87b0303      0xeaa632b0      0x57dff2b2      0x19772dd0
+       0x51317bfc      0x28404b1f      0x9e35d818      0x9c771bb7
+       0x6d42a5c1      0xa6030578      0x9c844d5f      0x95d5eb7f
+       0xdf15f5ec      0xf0f8c86e      0xf8ebfd20      0xae32d9b5
+       0x4ce2b066      0x776f0149      0xda8a429f      0x0e895a79
+       0xbe62c881      0xf9c051d8      0xcaa48f97      0x9e8dcb1b
+       0x69cafc21      0x411f1bff      0x4f4d71dd      0x102cf709
+       0x974ebe53      0x7373aea6      0xef2a7ec1      0xedabaccc
+       0xdac969c4      0xe010b562      0xb6880570      0xa7a7f5d4
+       0x3c6464f2      0x96dea774      0x1614a588      0x06074080
+       0xb37304f0      0x99da7dda      0xd3e36214      0xb27b7cae
+       0xb4cef0b3      0xa435dc77      0x9d1c1a15      0x616993f4
+       0xb8a5ec8f      0xdce1ff5a      0xaaea14c4      0xa5d2172f
+       0x90c8c636      0x49c0b81e      0xff9db895      0x4252b336
+       0xd420b5ce      0x87b35be4      0xae32bda2      0x441092d9
+       0x321e8583      0x7d863719      0x3c888147      0x3f2bb9f6
+       0xd1daf5f1      0x682f2ffe      0xae62e280      0xcf8f928a
+       0x4a7237f5      0x6f3a55af      0xb91dba98      0x9b83b723
+       0x0e857ed8      0xd5ac567d      0xaf8bf791      0x23f8269a
+       0xe369638f      0x6a88edb1      0x5ff0be07      0x5c02b513
+       0x7d22f89e      0x2f865c08      0x9cc0d56e      0x31c87205
+       0x420508f2      0x95a21602      0x04d838e3      0x353353e8
+       0x7ca1feb6      0x61c6f7dc      0xf78a68eb      0x918f2ac1
+       0x413037a4      0x09692d1c      0xc8eceb54      0xb1bf975a
+       0x2ab63552      0x467bceeb      0x408bf024      0xeaed2b31
+       0x3255158b      0x8d9c6617      0xe450350f      0x615cf5f3
+       0x1a7fd744      0x27a0da59      0x43298211      0x77392298
+       0x9511e81a      0x08a2c2dc      0x3d6f1113      0x967e6586
+       0xd1726b35      0xb9292da6      0xaa6f8ad4      0x0f13b47f
+       0x34b96cea      0xebd9487d      0xfe533d60      0x41bcdc60
+       0x364c8c79      0x32be8bb8      0x1395ead9      0x9e85e474
+       0x146b6fbc      0xc93267cf      0xcdda98d4      0xccfb2835
+       0xe779dbd5      0xf9288237      0x2073e129      0x16fe4ab8
+       0x34ca576d      0xac313eb7      0x5deb3b4d      0x1727510b
+       0xc168a414      0x332cd921      0xe38e8123      0x9a2c1aef
+       0x80f5d1d9      0x7c88c923      0x8af17577      0x59ae1408
+       0xffa5e565      0xb418ab13      0xdd6376aa      0x45cd70d9
+       0x3c3a06a2      0xbc555669      0x34d1fc08      0xc2aa934a
+       0x385416e2      0x91ceeadb      0xe06c9cef      0x0394dbd4
+       0x43e7c657      0x296d7621      0x55dafcba      0x808b836b
+       0x61c41f0c      0xd9689bc5      0x3a531ffd      0x8417ed30
+       0x3f3f8616      0x641eb4a9      0x24964006      0xe8d2612a
+       0x3b916d7c      0x5603319f      0x29007523      0xc9c7dc1c
+       0xd1f7212e      0x22ac1932      0x05c39a5a      0xd55081ce
+       0x589ae996      0xa998fcbe      0xd8df5512      0xef7d7a01
+       >;
diff --git a/arch/x86/dts/microcode/m12306a9_0000001b.dtsi b/arch/x86/dts/microcode/m12306a9_0000001b.dtsi
new file mode 100644 (file)
index 0000000..53417c2
--- /dev/null
@@ -0,0 +1,814 @@
+/*
+ * Copyright (c) <1995-2014>, Intel Corporation.
+ * All rights reserved.
+ * Redistribution. Redistribution and use in binary form, without modification, are
+ * permitted provided that the following conditions are met:
+ *     .Redistributions must reproduce the above copyright notice and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *     .Neither the name of Intel Corporation nor the names of its suppliers may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *     .No reverse engineering, decompilation, or disassembly of this software is
+ * permitted.
+ *     ."Binary form" includes any format commonly used for electronic conveyance
+ * which is a reversible, bit-exact translation of binary representation to ASCII or
+ * ISO text, for example, "uuencode."
+ * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+ * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ---
+ * This is a device tree fragment. Use #include to add these properties to a
+ * node.
+ */
+
+compatible = "intel,microcode";
+intel,header-version = <1>;
+intel,update-revision = <0x1b>;
+intel,date-code = <0x5292014>;
+intel,processor-signature = <0x306a9>;
+intel,checksum = <0x579ae07a>;
+intel,loader-revision = <1>;
+intel,processor-flags = <0x12>;
+
+/* The first 48-bytes are the public header which repeats the above data */
+data = <
+       0x01000000      0x1b000000      0x14202905      0xa9060300
+       0x7ae09a57      0x01000000      0x12000000      0xd02f0000
+       0x00300000      0x00000000      0x00000000      0x00000000
+       0x00000000      0xa1000000      0x01000200      0x1b000000
+       0x00000000      0x00000000      0x16051420      0x610b0000
+       0x01000000      0xa9060300      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0x00000000      0x00000000      0x00000000      0x00000000
+       0xc2b13ad8      0x6ce74fea      0xd364ad12      0xf6404a69
+       0xc89041e4      0x217fa2f6      0x6ff6e43f      0x79cde4eb
+       0xdb01345a      0xceecca42      0x5ee7d8b4      0x24afdbe6
+       0x5fb36178      0xbc17d76b      0x31b7b923      0xc81aec82
+       0x647b3320      0xf1db9653      0xff3b9759      0xe9c74b72
+       0x3b193752      0xc147860b      0x160e0d6a      0x5bdb9dbf
+       0x1ccce2ac      0x387670ad      0x2f106f05      0xf8607ea3
+       0x42562576      0x30e086fb      0x409a06b8      0xf1957736
+       0x5eb03f65      0xad147fab      0xe1a8e8b6      0x208d59d2
+       0x683fba2e      0xf172b378      0xf8138dba      0x61e81d1f
+       0xd551f997      0x28c79780      0x04f9db27      0xa80679b9
+       0xaca4e7ff      0x6876944b      0x26d7dbc1      0x77f7dc2a
+       0xf0bcb163      0x1b2a8e81      0x7b90aa49      0x8d5eaf2f
+       0x522384ae      0xae7f7082      0x412ba10a      0x1ce1baa0
+       0x478c29b4      0x9c09b4d2      0xf225f64f      0xd43026cd
+       0x81098579      0x7df5db05      0xa5815bb0      0xc73ee756
+       0x9738cb95      0xa5bd62e2      0x88e2c6b2      0x778e7fcb
+       0xd3bdb872      0x9404403f      0x5be6ad63      0x71dc4abc
+       0x11000000      0xd350099c      0x242d0996      0x1a4ddff8
+       0xd7f1f03b      0x77590eb8      0x45c3ad79      0x3b714d23
+       0xa85ba322      0x31851c5a      0x540fe0ce      0x38692bd6
+       0xe3d9927b      0xb33428b5      0xcf0ac8d2      0xd3646604
+       0xca88adc7      0x8afc41c8      0x721432b3      0x8fd19454
+       0x26344e0d      0x3acf6c28      0xbda18c21      0x526d52ac
+       0xf8d37e15      0x09305e37      0xf6907871      0xdb56cc21
+       0x6802cccc      0x6693c8a3      0x0f4dbe32      0x0d924103
+       0xee9242a7      0x5f867a13      0x2f65a246      0x6b35ad05
+       0x39fb7da1      0xd69cb7d8      0x45869424      0x4768b466
+       0xe3ace365      0xa85eea7c      0xa59939d9      0x2ae32fb9
+       0xa20b1559      0x8865f3d3      0xbe02e023      0x4199575b
+       0x0c43089a      0x0d57b287      0xd37544ad      0xcd4573b4
+       0xa96b7485      0x05b67259      0x117414ca      0x2ba24577
+       0x439db14d      0xf82c5833      0x54ec9806      0xf8282306
+       0x1de7d3cf      0xf7a76dc2      0xcd897f60      0x0bb1decd
+       0xae58efb0      0x743c07af      0x48adffb5      0x262260e7
+       0xaa9fa071      0x9a9ef7c0      0x98e861eb      0x14a48871
+       0x0b4c3292      0xad851820      0xe0f7f45c      0xd71366c5
+       0xc63a2f01      0xd02f23c6      0x49645eb3      0x2365fe48
+       0x44817f1f      0x576ee68e      0x396b6134      0xd9fc4857
+       0x9a771368      0xda5f2693      0x6ad30ec2      0xc8d08171
+       0xe40bcd42      0xf82291a8      0x3094a8b1      0xd3edffa3
+       0x5d5fb5e6      0x93802a7e      0xdf0ff376      0x09ebeae6
+       0x35091690      0xe938ec68      0xd203065b      0xcf2e8172
+       0x85282b27      0xe59fb64d      0x4b2ad981      0xeb5dde75
+       0xc07eac26      0xa78c969e      0x74165d84      0x61c4cfc8
+       0x740452f3      0xe5f6435e      0xb712e157      0xac49215d
+       0x5be5e61b      0x09f46a94      0xde5cd48d      0xe3ed6b11
+       0x2e8173de      0xabb6759b      0x46ffc47e      0x0cd84607
+       0x6046c26d      0x19356116      0xe1da098e      0x8e1bbe9f
+       0x5c8d6c20      0xa17cfe55      0x101a1f91      0xd64aef70
+       0xef2e7b34      0xbb428dc4      0xf2252a3d      0x8ab3f6c0
+       0x161db4ef      0xfdbf4f9c      0xb5bf9f19      0x414ea8b5
+       0xc3db5422      0xfc3934f2      0x635a8253      0x86260b8c
+       0xa4c0e59a      0xa45d24cd      0x4a25da59      0x7a568be1
+       0x4ae3587e      0xbc77a3e8      0x70723657      0x9abcabaf
+       0xe0a95d4e      0x25519f22      0x3ee1d340      0x2ddc2ca8
+       0x04ae20c3      0xc143f7c1      0x4a79e4d6      0x19377b64
+       0x2ab0d3f5      0xd3f19f6d      0xc8dc880e      0xf577dab6
+       0x69b6ac46      0x37d4af3b      0x0999bc85      0x3d9fbbf5
+       0xb9387ac9      0xc148824f      0x4d11f5f7      0x1ff4594b
+       0x59beb5b7      0x29474f52      0x68e6b2b9      0x4b60966e
+       0x5e40a736      0xdeff5ef2      0xe623bbc1      0x50407021
+       0x34ec34ec      0x131b3d57      0x628bda97      0x58152b10
+       0xdd830410      0xf953e469      0xea4c8d25      0xd79d7ba0
+       0x7a4da4f4      0x887d6841      0x7ff1e41f      0xdeffc5dd
+       0x8354cb26      0xb133716f      0xae73deaa      0x292e200b
+       0x9a9400f9      0x7a5d21c3      0x590d4799      0x1333b4a3
+       0x782bbe3f      0x314fcb2c      0x475a1cca      0x4cd07c7f
+       0x7a69a5fe      0xaef5a52a      0x0e9957f3      0xf7d86f6b
+       0xd0983d0b      0xdffd48b9      0xbeea1e9c      0x19de4c7a
+       0x46487695      0x5719e4e5      0x6dab39ac      0x856bf2bb
+       0xc0644339      0xe60e92ee      0xc328b5e5      0x2d0c31e9
+       0xeb73f1f4      0x7b577248      0x361159ba      0xd0f7002b
+       0x5fa816ae      0x11ace78c      0xab62e0da      0xc924891a
+       0x1d5800e7      0x4f90e04a      0x21374c9b      0xa3350e64
+       0xcb9c1901      0xcc350b3d      0x5c3e5932      0x3cc6261d
+       0xc3b54acc      0x849cf200      0x1425fad1      0xb3a479d9
+       0xfd4dfda8      0x62973133      0xdd528736      0xd7e62e0e
+       0x6921e1d6      0x7e41d7f0      0x74397b86      0xf739079a
+       0x4ff82d1b      0x38b6fcdc      0xb20e36bb      0x0cef9b7d
+       0xa737fdf3      0x1d18ef1a      0xc2c5dda1      0xdb16c5e7
+       0xbfa99b2a      0xf83f2c10      0x883c8183      0xad10014d
+       0xcf9f6321      0x5e0c079c      0x3ddd3d29      0x306325e0
+       0xebdaff05      0xa88741be      0x181fbf20      0xa58a3a1c
+       0x1f7c7165      0x7f5f5141      0x12576e50      0x9db22976
+       0xd1fbe204      0x6ca2025a      0x10c15009      0x920649fa
+       0xf42d3035      0x79efbc73      0xad2bde6c      0xb4e317ab
+       0x1f7358be      0x447d850f      0x9bb2d1ee      0x3545cea3
+       0x78eff6bc      0xaa86e51f      0x6383ada5      0x0c969d05
+       0xadd720e6      0x92f77e04      0xda58e24d      0x401bd323
+       0xdac090fd      0x9dc372b2      0x86726956      0xc508fde7
+       0x20ec1cf1      0x29fdb66a      0xa3f7e3b2      0x5ffa58ac
+       0x653c0106      0xf0d01026      0x55feffa1      0x661399b6
+       0x5b23998d      0x91add159      0xbf917f02      0x87ef6fee
+       0x64c4d653      0xbfadf48f      0x23f3ebcd      0x67869030
+       0x3b90b7ae      0x19efc2a4      0x26596a35      0xaaa5fcf9
+       0x5a14fd14      0xebeb9c9f      0x72224625      0x3a2c0009
+       0xbe5a09af      0x5aad7b74      0x7d92261a      0x8bd722bb
+       0xfff48488      0x0379b991      0x750cdaf8      0x83d3ec67
+       0x2f582115      0xfdeca132      0x889817f9      0x2bcccbb5
+       0x58107ba4      0xb57e016c      0xbbc45c80      0x5f14439f
+       0x6e71c73c      0x5e18e93f      0x43c07fca      0x6d49bc66
+       0x6641a788      0x234f48cc      0x9e18222c      0x86efa566
+       0x450ad39c      0xbc3ef112      0x98e7d17c      0x5334659e
+       0x9919cb9c      0x9fb4f0c5      0x2ea90893      0xc70453a6
+       0xe83cc486      0x454da884      0x4cba0511      0xfb83f2aa
+       0x0cf7ec27      0x20ef41bb      0x08355d0e      0x732798dc
+       0x1689d337      0x61bf955b      0xa10d3f79      0x05fe9c6a
+       0x1cbbc776      0x42e00326      0xf92509f4      0x71488be8
+       0x3d92da26      0x839acf18      0x6dae5781      0xeecfcc85
+       0xc63c0f72      0xcd79f887      0x677dd4c5      0x167c779a
+       0x3359b45d      0x48f974f6      0xbd7debdb      0xd57d5935
+       0x41beb132      0x1574e273      0x417a8fb4      0x46ca9d85
+       0x859f3434      0x7cd1675e      0x1fb4e8b2      0xc55de45b
+       0x4be8afa5      0x193c1260      0xd4225590      0x255fb988
+       0xde63caee      0x96108c66      0xacc2b48a      0xad2992d2
+       0xdd4cf4ad      0x0f6f5246      0xaf20d77d      0xf1c81d1f
+       0x0db57bac      0xbb39c168      0xb78944a1      0x4ea55714
+       0x0bb537be      0x5824ab81      0xdb9345fe      0xab0606d4
+       0x12a8b9c2      0x90001c30      0x12c7197e      0x603cae66
+       0xe2cb6b47      0xab0f94ba      0x28091fbd      0xb79d112d
+       0xc53a69b4      0x7de8c3bd      0x4aee880f      0x5a5dd399
+       0x850105e4      0x366d8714      0x4da7971b      0xc3a0013f
+       0xfbc2461e      0x65954a32      0x4c8f348e      0x3ddf0054
+       0xc615725a      0x3021e167      0x4a88ec0c      0xd69c44b1
+       0xb21cd2b1      0x08e16586      0x90f02d12      0x554afff3
+       0x65067d72      0x8c310d6a      0xd62ab40d      0x443bda33
+       0xb6eac5c1      0xd0cd461e      0xaf200f23      0x41fd1b8e
+       0x84e74a66      0x15b0bc4a      0x13fb1a4e      0xb36bf139
+       0xeeaa0c1c      0xa91d6fab      0x64c99859      0xc049d5ae
+       0x38921c4f      0x92b2f269      0x5c867fd7      0x41bd4d62
+       0x70009a4c      0x85a37897      0xe228af8e      0x9ef4f31e
+       0x891bbb42      0x3c09f291      0x32c29325      0x88f9ee6c
+       0x81a0bc38      0xfef31889      0x8d2e3f79      0xc5e405f7
+       0xb78e4127      0x3d61f392      0x3427d259      0x9f0bb662
+       0xfe6ffb44      0x57e1e8c2      0xd4abd164      0xd0449914
+       0x5bd5fe60      0x873601a5      0x0b07ae28      0xf4aac893
+       0xb9c8f9f5      0xe3a514ed      0x9da193c2      0x55ebeca0
+       0xa9d8f9bd      0x0a37dcc7      0x3f1d9f15      0x0bc645d8
+       0xb808085a      0xc79b0f4e      0x0286eafc      0xefc87a56
+       0xf1225ab8      0x58ac6a9c      0x9227ea3c      0x82deed0f
+       0xff0f8edb      0x3c29a1b6      0x6d777dae      0xbeeee7d2
+       0x0bdca157      0xf8d9d18d      0x52fda265      0x630da310
+       0x4f660e86      0x1c985fc0      0x68f1c993      0xf4ae63bf
+       0x3ec5373e      0xf6a10f89      0x2b19bd61      0x8aab04b4
+       0x75653336      0x4be6689f      0xc2631812      0xc6d386f4
+       0x93a6268a      0x4e5851ad      0xc2b47fdd      0x5acbd226
+       0xd2aaf25f      0xbe83081c      0xe57eb32e      0x00debc3c
+       0xcd8d7dbe      0x7cf67994      0xba17c779      0x34c19529
+       0x5cf29a31      0xe10b7d8e      0x7b116896      0xf702de15
+       0x6ee2e8cd      0x2f3a12d0      0x0e2a4666      0xbc1333e7
+       0x2b653c7f      0x36e282a5      0x0ca0544a      0x2255b148
+       0x5e413d5b      0x0fc88547      0x81e3073f      0xbcef6576
+       0x12b29e93      0x233bef85      0xd41790ed      0x4f4dbf15
+       0x20dea3d6      0x25f86504      0xb13177fb      0xee626fbb
+       0x2f7529e3      0x6157578f      0xeee068f6      0xc97c5909
+       0x053c28cb      0x6f540d47      0x692bb599      0x7004243d
+       0x1c5620cd      0x0ca53749      0x9d7d6a4b      0xb8e504f7
+       0xdd138f32      0x4d2fd525      0x676904b1      0x67b90411
+       0x6777ede4      0xc1fbe02f      0xd7eb61fe      0x1c62f909
+       0x91cfdb29      0x293a8d72      0x4475e4dc      0xba9d955f
+       0x5413cb0b      0x952694f7      0x3b8eede3      0x33f1f6cc
+       0x61c2604a      0x244f8403      0x862316a5      0x2e0387fc
+       0xb3b3c699      0x418f5b0b      0x89a49abb      0x6c325320
+       0xa952f0c0      0x72454ccd      0xaa272d96      0xf05e80d4
+       0x1dceb03a      0xdb00d312      0x96cbcca4      0xc87c31f7
+       0x96b17422      0xdba12c7d      0xedaac717      0x99b1da89
+       0x48f3e07e      0xbace3088      0x71937740      0xd754a585
+       0x31784510      0x36d08e4c      0x4e8e2396      0x081fe566
+       0x0cd2092c      0xec932481      0xfae11d02      0xcb3b8609
+       0xe20559f2      0xa2330b46      0x2beec857      0x86911540
+       0x5e8e1895      0x4f42f3cf      0x8e32bede      0x78285f4c
+       0xaf267610      0x9dc86091      0x6adf9b99      0xfc91da24
+       0xc987356d      0x78f260f0      0x9cc6f796      0x1d6aa013
+       0x5f1922de      0x54d065e8      0x8a7c3cea      0x13768df3
+       0x4e8858b2      0x712b5b8d      0x0b64c3be      0x3845ef6a
+       0xff77b842      0x83a497a5      0x77f15aaf      0xccfc6df7
+       0x20084d31      0xaacdde0d      0x4059b446      0xb940b3a7
+       0x3fa88d6f      0x3162ec66      0x43cc767b      0x2a2a6916
+       0xd0dea02d      0x5b9f11a1      0xec36c7a9      0x6d7eb6ce
+       0x4506fc1a      0x1c3e362e      0x9e2b0f99      0x547e6ba7
+       0x6b8169ea      0xbd89401a      0x2cf5ea6a      0x100e6249
+       0x47ef40de      0x063a0b33      0xb1f49499      0x3026e75d
+       0x3b6d951b      0x6212fd9a      0x5073aa23      0x9bd609b2
+       0x760cf7bf      0xe6766d03      0xff811dac      0xa461d069
+       0xf40e74b3      0xec113577      0xa2cf15e0      0x6f43a20a
+       0x43f52321      0x96896eb8      0x480c1129      0x35190a4d
+       0x29a80a08      0x8ce4dd2c      0xf4b40d21      0x2324ef9a
+       0xf3f2b54d      0x7a0cc79e      0x3e9d973e      0x2d28dd0a
+       0x1a5e9aae      0x5abb6fab      0x215bade0      0x39e678c3
+       0xd6543c64      0x1652e0d4      0xca2f5303      0x0a6879bf
+       0x24841561      0x05c559e7      0xa1ac6c48      0x3fc52191
+       0x29527695      0xb977ce60      0x04589311      0xaff7180b
+       0xdeb08866      0xd62d8f6a      0xa6f62306      0xfdef1235
+       0x1946ad8d      0x1d49fa21      0xac486c1e      0x3ca80491
+       0xba8c2a76      0x06ce9ac6      0xcbfbc465      0x675c4ada
+       0x1eb6b108      0x27d03a7a      0x606144e6      0x2eedb163
+       0x64d8d1b7      0xe7695fde      0x75d593a5      0xe7f00f68
+       0xc3c45a5a      0x522c4164      0x37833c3d      0xddfda19e
+       0xd7b9f984      0x77e6ea85      0xd148df03      0x89989155
+       0x80fd8f07      0x3adafce3      0xf4e07aa6      0x6ea417b4
+       0xd1732fad      0xd13cba8a      0x01729b17      0xb9e666be
+       0x48addea4      0xffb3a560      0x4a96d730      0x0349777c
+       0xbf355e6a      0xb5055554      0x22442c5e      0xd8bda1b4
+       0xb0a088ab      0xef18b9a6      0x11ecc51d      0xd59247f1
+       0xf86fe339      0x17752dba      0x0bfacac1      0xdef25155
+       0x035b4275      0x02a3f293      0x8466a5bc      0xf376864f
+       0x04265d7d      0xc6fc5aa3      0x36adf7ec      0x4e16af5b
+       0xe3b28d5a      0xa49c6535      0x2b05f03b      0x46d5d914
+       0xfcae58a0      0xda644349      0x656d72c0      0x75d47095
+       0x302a9fad      0x4e245aaf      0xe2a3e852      0xa9b73076
+       0x8d9a2469      0xe7c05607      0x1c17b4b3      0xc2e63302
+       0x49fa365d      0xabf1f5dd      0xc850b090      0xdced47ac
+       0xd60b15d7      0xb25efb14      0x33f9a3af      0xd011cc8f
+       0xf0414eaf      0xff212e84      0x9e2fbd61      0xf6636285
+       0xd892696a      0x6d9ffc34      0x253ad380      0xffb7ed45
+       0xaae31520      0xadba81d1      0x7f1e41bf      0xcd7e1eb7
+       0x9dabd0e9      0x5de91eeb      0xe9fa68ed      0x3fae0c6a
+       0x6da21b40      0xac743c3a      0x19228523      0xf5098069
+       0xf647fe8d      0x95666621      0xa2a3613d      0xe6278031
+       0x6901cfe4      0x3bf132be      0xc3314ee8      0x5b8261b8
+       0x9b724149      0xd0838d83      0xb0d05c76      0x57295707
+       0xcb11fd8f      0xfdce9b20      0x346449b6      0xe8b44745
+       0xc0784ff6      0xe6083a3f      0xb0b87142      0xd2df2210
+       0x7b9dc719      0x961585df      0x359390ec      0x0d40e1f0
+       0x56436a52      0x8ccb0d80      0x78066e70      0xcfd04ac4
+       0xd850a6a2      0x00612831      0x19e74acb      0x5a80989e
+       0x0d7b151c      0xca9bee4e      0x2fea9d99      0xfdd7ec3c
+       0x3a73b4e7      0xa70068d1      0x38aff576      0x4c861c14
+       0x2e23b093      0x0e429806      0x8cce23dd      0xb0ce104f
+       0x1684bf8d      0xb2756213      0xa64c594a      0xdd8ee144
+       0xda5316cc      0x76dc877f      0xa1c5fe35      0xb5e04383
+       0xc9e10000      0x8ac58408      0xf6d7e781      0xbda6cdc5
+       0x81517c56      0xdee2ba90      0x3cbfc247      0x4c84887c
+       0xa722c632      0x4767a4b3      0xe83b79a3      0x7f100150
+       0x1074198a      0x220260db      0x1c940f4a      0x92c42619
+       0x56dc9f64      0x1c0f7eef      0x3694f4e8      0x5b4b63d0
+       0xe784afaf      0xcdcdb039      0xf7040a88      0x47f2d84b
+       0x143a94b5      0xf68f4fab      0xf6640462      0x3cd6b1c1
+       0x7fbe0e60      0x700ee673      0x030e877f      0x60779cb8
+       0xddb6933d      0xe46f377f      0x9f9c43c9      0xce0f0d58
+       0xe6bf42a4      0xae09f51b      0x295e8cf0      0x140df2b9
+       0xfb04c209      0xb6d46f7b      0xa86e0c91      0x64fc624d
+       0xa7a8760d      0xdac844b4      0xbe1491b0      0xad480684
+       0xea874ca4      0x3535e483      0xd49365c9      0x83f2c050
+       0x05ec206f      0x7fe3b010      0xb72aadbf      0x40b3a286
+       0xafe395a8      0x3506d4af      0x9c4e33e7      0x0259eba9
+       0x0daecf5c      0x264c008c      0x898bdada      0x0f3ac833
+       0x7ef5f3f8      0x41934050      0xc3bda261      0xab624dd0
+       0x5d93609b      0x495a5f1f      0x34119efb      0x3bfd15fd
+       0x49255da9      0x3ab2d260      0x15ce2006      0xd466d454
+       0x3d052ca5      0x567977cc      0x7f8b8657      0xd9b34f42
+       0x36c65ff5      0x5f96bffb      0x2d32daf1      0xb301cf05
+       0x933435e1      0x316fb1ae      0x48be2982      0x657c3286
+       0x1916c189      0xa3a030b5      0xe4c7bce9      0x6a762931
+       0x1e90df3b      0xe9084ef0      0x1236cfe1      0x7239326c
+       0x29bd4dfe      0xaa01cc46      0x93e514ef      0x4e376f6d
+       0x14087975      0x9cdad6f9      0x86b31bd6      0x2c206281
+       0xe178b367      0x4943f013      0x9f97c9dd      0xe848fb0d
+       0x7d19e49e      0xde4d9b1c      0xee7f552b      0xadea7634
+       0x605ab7c5      0xef66b062      0xaf369aec      0x39a96463
+       0xb39ed4e0      0xf4c38bbd      0x48565c84      0xcb4ccad7
+       0x37b656c4      0xa5291b2c      0xba05d037      0x0027ff97
+       0xec2034c9      0xa19abaff      0x99dd50bb      0x44bd5f0b
+       0x8cc4193d      0xe1dca3f4      0xae2896c9      0x992105a5
+       0x46b04aed      0x3ca454cd      0x9a0e86a3      0xfdb3702e
+       0xf2ddfd7c      0x6b7ca41e      0xe49f2227      0x4839351f
+       0x201f1173      0xc9af9d40      0x7942ef65      0xf35e5867
+       0xe5358390      0x0beff1a6      0xd057a81e      0x89830387
+       0xe496a246      0x45007e0b      0x62c34ed5      0xc2170342
+       0xa095780e      0x00682a8d      0xfab7e24d      0x207cb6f9
+       0x7d5c8058      0xb0164454      0xee8b6d44      0x0aa01190
+       0x70637e84      0x1268c1cb      0xf7a1eb80      0xbe90b153
+       0xcdc765f5      0x5841d605      0x00141f5d      0x475f8d3a
+       0xff60a6f1      0x5f7a2e3a      0x30d3f150      0xd9a22f7e
+       0xdded3241      0xfb05ea5e      0x4093fd88      0xb11f5a9e
+       0xf1b36594      0xc7579059      0x7f66c5e6      0x8fdb1095
+       0x46ff7f62      0x70925647      0x207287e3      0x6bddfe5d
+       0x240fb596      0xc91784fd      0x28acd7f8      0x7cfbc9da
+       0x2d6b3cc8      0xf8e9aaf5      0x489616b8      0x9ed70056
+       0x586bca94      0x6a95971e      0xa2238b5e      0xc9a06325
+       0xb90882a9      0xb5b3ffab      0xae4b2beb      0x5aa0ee34
+       0x52e23123      0x9a019e1c      0x84b0f00c      0xba2cf495
+       0xca4108dc      0x9272b0e7      0x760b209d      0x3e294274
+       0xb8f0316a      0xb666af5b      0xcf436e91      0x365dd253
+       0xbf11262e      0xdfa3f8ee      0xd6e0ab96      0xd8a639f8
+       0xcba8b31f      0x58940e1a      0xa4bf5e3a      0x7f8cec5e
+       0xb5ec87d4      0xb7924503      0xe2bff3a9      0xc7ec4445
+       0x1e94324c      0xccf28ba8      0x2294b594      0xad297087
+       0x18624369      0xa017851f      0xc635302f      0x802becac
+       0xe631eaeb      0x386589dc      0x780823c4      0x7b989c1d
+       0x94554d93      0xfc22d343      0xb8edbd0e      0x8bc08005
+       0x998a234e      0x507d3976      0xf1f9833c      0x522a2971
+       0x2765433f      0xe1ef356f      0xd45d5fd5      0x8d3294d3
+       0xabcffdba      0x9b7a6338      0x2f261e1f      0x891fdbd0
+       0x67008f6c      0x23d96866      0x057410ec      0x2f360684
+       0x8380c618      0xc968f3ae      0x91ac868d      0xdb5cc503
+       0xf092b320      0x73ef35c1      0x0fada995      0x56316744
+       0xde2290fc      0x7070dee5      0xcf1cd6ab      0xf1a47253
+       0x2c53b495      0x8952b433      0xa5b47637      0x9dfe09ae
+       0x2fb36206      0xcb1dec3f      0xec188994      0x10407824
+       0x91f27ffe      0xd461edb0      0xc3779ae4      0xe3f9bede
+       0x183a107a      0x0122654f      0xe319bba5      0xe75c33cc
+       0xc657ea24      0xe5490f98      0x653d01c7      0xce09c546
+       0x631ea29b      0x81278443      0x0cd4dd3c      0x6b7da4ff
+       0xacf1363c      0x563ed879      0xe8420e5b      0x43adcc25
+       0xc6ff7dd8      0x21e26910      0xa4b4f3be      0xaea31be5
+       0xc241c837      0x07178d5d      0x2b69f8b3      0x3bc0b4e6
+       0x429c50c1      0xe493ba56      0x5933b099      0x237b2036
+       0x0e807425      0xe450e510      0xd72a6007      0xc1459771
+       0xe9b22ad9      0xb25e452b      0xeda83668      0xb00e8d93
+       0x12b8f351      0x703ed783      0x901c6109      0x72b3e601
+       0x099cfb54      0x7fc68f6b      0xda7f436b      0x1dd70c40
+       0x5a57914c      0xddc3fe51      0xf1b692dc      0xe8b066bd
+       0xaa7b0d19      0x4a593520      0xd3bb712f      0x1e1b4c0e
+       0xe651f456      0x4fd0e108      0xdef8932f      0x3de33c3a
+       0x4c189801      0x62c607ea      0x708e8086      0xf1b9d204
+       0x19656d6f      0x216430e3      0xc8bab24c      0x4ea84e4f
+       0x659f0cea      0x4e7bad1d      0x7f4d77d5      0xf6d114a2
+       0x6d8038b8      0x8d56f1fb      0x2f015191      0x0b3770bf
+       0xd81e40db      0xfe66c348      0xffd1d3bf      0x07021042
+       0x8ce5e26a      0xcdaa21ca      0x1bd4b85d      0xfabd423f
+       0xba6814e4      0xaa5fe624      0xb2591597      0x81e601e5
+       0xf3601f5f      0xf4dbb30a      0x0950789f      0xbe9b1f70
+       0x35faf9cf      0x9f27e299      0xf9c1075e      0x09b04ac9
+       0x2bb3cb1e      0x8c197668      0x8dffa14f      0xda4a57de
+       0x5e0f0a9a      0xd1521120      0x31c26430      0x46a75d9c
+       0x6c7e1a50      0xda1db6de      0xaef50782      0xd32d301c
+       0xa4688102      0x77c6bc1a      0x3c7e2525      0xcbd4284f
+       0x5f493a22      0xb35abf25      0xc996f4ff      0x009f0c05
+       0x6143581f      0x7a864557      0xd0e1d52f      0x0725f9fa
+       0xdcc0b294      0xc3609ee2      0x75373ce8      0x1ffd4ead
+       0x331b82b2      0xfa833542      0x43c00611      0x7ab1215a
+       0x099bb7f3      0x1c95dc3b      0xbbfb8231      0xf62659ba
+       0xf9cc6fbc      0x030b6f56      0x793603cb      0xe7c48d71
+       0x9754aa20      0x41710095      0x35b92718      0xf464fca0
+       0x4ad77ab4      0xd5582574      0xe0552ad4      0x7393e896
+       0x34920ff9      0xd0a44180      0x2e523669      0x81d5573c
+       0x1959ad82      0xfb153a03      0x1cfa615f      0x8b302a87
+       0x4e4eea7e      0x21ca24c2      0x5a971dcd      0x788e063e
+       0x2c9beb8d      0xb3b98af9      0x24079012      0xbdec8a61
+       0xc41752df      0x8d2c0a3d      0xe960ac61      0x658cae63
+       0x891956fa      0xd0d1a216      0xbc37b8fb      0x5e2c3009
+       0xd600a7ad      0x47c7c30c      0x8fbd13f4      0xbae4d97c
+       0xdd15d643      0x71440bb6      0x3fccfa22      0x1ef82308
+       0x2c48907e      0xf6ad303e      0xc1ed250f      0x6f9204f8
+       0x19062b0a      0xfe8ab325      0x379e8b1b      0x8116d220
+       0xc6d4d8cc      0x624098ee      0x3e6aad4d      0xbce3ace2
+       0xba349982      0x7439dd11      0x6ac6d240      0x9f2cf9c6
+       0x3dff687d      0xe5b6f2c9      0xbe1645a3      0x39a39bfb
+       0x7956d69e      0x50d22da6      0xb7e32b7a      0xf4144b4e
+       0xb94151a5      0xee36b1b1      0xc8cd8d65      0x5e571859
+       0x0db49c4b      0xd9d71cd9      0x4bc017ca      0xc81d5130
+       0x0c9660c7      0xe4b12b28      0x5549e753      0x97a9fa4a
+       0x0dac4813      0x7854b977      0x7c8cc619      0xe4166449
+       0x020ae016      0x02448146      0xa3924345      0x1542cba9
+       0x461583ad      0x7bf66ddd      0xaff59684      0x398b370c
+       0x5ffbd30c      0x87900806      0x0891afff      0x7aa84ad3
+       0x62e35158      0x995e545a      0x6ff3779d      0xa05bdc9b
+       0x777a7e83      0x53643dc4      0xd77d4704      0x422ec993
+       0xabd03cd1      0xcb6ad4b7      0xa94c512d      0x6562975c
+       0x63b27747      0xecc0955d      0xd965b2b6      0xc67b64c5
+       0xfd69b042      0xfe7314c4      0x9f807bbe      0xafaba4d7
+       0xbd63eb72      0x811a8901      0x7ea1be4d      0x7316f0fa
+       0xa6cf004c      0xc17d9363      0xe3fe88d2      0xe60faddc
+       0x5d3a1b02      0x8a9f1ed3      0xebfb9234      0xbc453cf2
+       0x190085ca      0x369a1df9      0x55721790      0xb071a9f3
+       0x0697bfc2      0x65753b76      0x177d720f      0x1563979f
+       0x970c4dd8      0x511aec5d      0x19878647      0xc17280ee
+       0xe61c4188      0x7a4c0756      0xdb49157b      0x0d461f37
+       0xcf0bc73b      0x1c6e7ac1      0x683a9e1e      0x0dd9ae7c
+       0x72be0902      0x85a22cd8      0x8b98d2dc      0x2f3a9ff1
+       0x4540314d      0x3a4e344f      0x3ada6bee      0x3408b829
+       0x711ba0cb      0x0c92ae4a      0x621bc5f1      0x908043da
+       0x8f8ac31f      0xed15f127      0x731dc6d9      0xdc6eb058
+       0x6815eb3e      0xaca3d9e0      0xef7b5c61      0xfea2a032
+       0xd3c76315      0x0f88f4c8      0x291b8710      0xa5ef8346
+       0xcab00448      0x78ef9fb3      0xebf0388d      0x33f2a5da
+       0xc41190f2      0x0cb6bcf7      0x0afe5680      0xef88d3ea
+       0xc0e10f4d      0x7e028bfb      0x933657d9      0x6f61fcd0
+       0x7e03e392      0x23258472      0xfb16ab16      0xfaf74a5b
+       0x7ab0a634      0x8346df0a      0xc3c93451      0xdff93a32
+       0x3920a816      0xc3331312      0xa6a2270c      0x10025010
+       0xa8f4d842      0x36b96367      0x77a30dad      0xe1bd6d0c
+       0xf3ddb722      0x9412e861      0x4e7cd927      0xef243451
+       0x41d7258f      0x6eb34be2      0x026ef296      0x46112337
+       0x656c8c07      0x18deff2a      0x5be15cbb      0xbaed3a53
+       0xc795a134      0xdcb1350b      0x758b6482      0xc6cd0e88
+       0x9be9d4f6      0x1ec7c2da      0xc5c1fe49      0x3e86e8f1
+       0x09126f9e      0x96772352      0xa4d5c70b      0xc6f1f2d6
+       0x3c22e595      0xd5ccf006      0x48f6167e      0x415dfe21
+       0xf49891e0      0xab4c4a7c      0xcd9b336f      0x5777d2af
+       0x6a8ad930      0x3f47c079      0x72286c81      0x44b565fc
+       0x5ff87a6d      0x6aad7ebe      0x66535422      0x4dfcef23
+       0xc0ffcc8b      0x6e2cfe00      0xf1e7e1f4      0x06e46379
+       0xce1bf7c8      0x70fec576      0xe9d0014a      0x844f7b07
+       0xb7a27720      0x4a62dde1      0x39207994      0xe12e7ef1
+       0x75f2152c      0xec05cfff      0xac67a90a      0xbb9f0c88
+       0x8fe2e008      0x58e15130      0xd54c4808      0x71fc616c
+       0x02564be1      0xf3d121e1      0x904f4a7e      0x7eaa8b70
+       0x893d8579      0xeb94b6a0      0x4c84f056      0xebf49f0a
+       0x2b2fb4cc      0xb6014008      0x1fe0a076      0x9e7af7eb
+       0xc168be50      0x61653283      0x2016760c      0x57c36535
+       0x720405de      0xb4924329      0xb1189d2c      0x9dd8f5c0
+       0x2a5f1ab8      0x49580b2e      0xacbbd3d3      0x3261e254
+       0x7a827ba0      0xfc91f0bc      0x2b02ba34      0x96edf03b
+       0xfd7fd36a      0x24edb430      0xafc7e2cb      0x0a8cd505
+       0x22ed5205      0xb42ca58f      0x24fc4009      0xf064cb61
+       0xa564a202      0xe42a9b54      0xd2a28338      0xca1f1a5a
+       0xbe51905d      0x9a960bd5      0x4238b656      0xfb08649e
+       0x76c93495      0xaccc0877      0xc465148e      0xa2bc11d6
+       0x84a54419      0x2a2ddd16      0xd9e1d2e4      0x622bbcfb
+       0xcf0608d2      0x93a26458      0x2b666698      0x0645f585
+       0xed3df83d      0xf6e81a41      0xce11e962      0x93c27f84
+       0x30f41197      0x659aba68      0x57c01eea      0x2a4cc4de
+       0xecf2f07d      0x3340329a      0x1084f771      0x9d4c351c
+       0x32d28528      0xa3b947ae      0x78fce7f7      0x14d0290c
+       0x7b7ac82e      0x7de381ad      0xa907d620      0xc31ae25b
+       0x513a2723      0xd8cc3457      0x8fe676a6      0x04039d12
+       0xdce5a5ff      0xcc0af574      0x1406d489      0x3393d517
+       0x004cfc81      0xeffe2eba      0xf2ee0c96      0xacac4889
+       0x6484e7d3      0xdecdce02      0x029dacc5      0x95c52292
+       0x0dfaa257      0x7150527a      0x0b59ab84      0x3a915b26
+       0x2624fe20      0x46309564      0x704261ba      0xdf434f92
+       0x2eb248c1      0x26d555d7      0xc75d81f5      0xbd0185b8
+       0xf53b1298      0x059b9353      0x7821a25e      0x4d7fe1cc
+       0x811b5179      0xe42e22a9      0x4fb78808      0xd6841c31
+       0xd9edb88a      0x9b433474      0x1c54ca12      0x4887f63d
+       0xf1b21006      0x8f7761fe      0x62a15331      0x6b35788c
+       0x4a5a9edf      0xfdee39c8      0xed95d818      0xe087b392
+       0xcdc89907      0x5ee58605      0xd4d7290b      0x46f8d2ce
+       0x6c9c3f65      0xd129f26e      0xd8cd5b87      0x2bc19529
+       0x7ab5b036      0xc44a6fbf      0x76fb68b1      0x6bffe654
+       0x482067f6      0xf8ed9d43      0xdad6bd63      0xa9ac77a2
+       0x76e6c089      0xe24ba46c      0x420ccbe3      0xfb09b718
+       0x83ec3694      0xf76e47d9      0x5f3a8859      0xe85f7fcd
+       0x61f1d09a      0x35065817      0x88bf5c6b      0xfbb9f76d
+       0x8b68fca3      0xed95dcb5      0xc2ff7cf1      0x855a2958
+       0xf7d28d92      0xb61802f7      0xf9814028      0xac8703c5
+       0x4ce8c7cd      0x1876cfe3      0x851c045a      0x56b3d146
+       0xe7abf1e7      0xdc46d720      0xd1e35c3a      0x2243ff60
+       0xc257c828      0x16513009      0xcb797d5d      0xe0f2cb11
+       0xf7e40b66      0x721e0495      0xce72e9b7      0x32eeedcf
+       0xf5dc5e01      0x355de93e      0xc20ad627      0x95aa436a
+       0xe69cab2b      0x511fef1c      0x18522a80      0x203e240f
+       0x882fb1f6      0xfed4db9a      0xa4bf7193      0x420df144
+       0x84791341      0xdb4767a1      0x8c0b40fb      0xcfa5c5d2
+       0x2783cad4      0xcf8dd48c      0x051037a0      0xc2994140
+       0xaf2a0a2e      0x29619774      0xffd83edd      0x1e346b24
+       0xb058a539      0x8118011a      0xb1722fcf      0x4f89c7b1
+       0x0e6f2f4b      0xdb155d1d      0x21d21cf9      0x25ba315b
+       0x7a17b541      0x3f23c32b      0x301e0881      0x9b0ad7f7
+       0x8adfccee      0x6c2f2975      0xbc9c318d      0x8d220d3b
+       0x33d2d0c1      0x5bc2dbf5      0xe0290856      0xedd38c75
+       0x56642fea      0xf7f5609b      0x5bdb0058      0x511dfc07
+       0xc6b0b515      0xeac6f4af      0x7da3a898      0x50452011
+       0x4668042b      0x4055890e      0x7bd41459      0x9b98f96a
+       0xc516cb64      0x15313f77      0x04f6816a      0xd622931a
+       0xbe2be61e      0xd549a421      0x380373c2      0xabb7123d
+       0xc54b9d3b      0x5a130630      0xafff90c4      0x50f5b4ce
+       0x75b0ecf0      0x16078950      0x44d547f1      0x8353af66
+       0x587bb496      0xf8f3c68a      0xd3b06119      0xef05594d
+       0xd403c928      0xf12b06bf      0x2b78eb2d      0x7de9106d
+       0x4966726e      0xa8b5ef1a      0x1c42a3f6      0xd55aa69b
+       0xe409c51f      0x93533259      0xc6d9dbf5      0xb4d63a17
+       0xaaf73aaa      0xe485f5d5      0x753f0d34      0x1a3e6dde
+       0x41183e36      0x2ec20e27      0x6b66bead      0xfc5f1d42
+       0xfecdf91f      0xb7066b78      0x8ed6da1c      0xbbeb87d7
+       0x8a72de9b      0x1e0e2f97      0xc377f532      0xedbdeb81
+       0x0f5b9e33      0x6ae7ebf2      0xca7440df      0xe9c3eefd
+       0x4bd50433      0xc25a6b95      0x9d2bd1e2      0x70709639
+       0x9050c202      0x7cbd2f1d      0x41443fa5      0x63dd89b1
+       0xb2607a0e      0x88c1417d      0x1631dbb0      0x13508ae3
+       0x4e78d90c      0x19811ae0      0x4bc827fb      0x459a55aa
+       0x52c0fd8d      0x8359500c      0x6a886312      0xbe704e33
+       0x441b7c24      0x5121c79c      0x86066830      0x1a0d013f
+       0xe78bfa0b      0x3f9e3ffc      0x7b3abb16      0xfc24b9ee
+       0x4f543a26      0x0619ad49      0x6a20077e      0xc8191371
+       0xd1d2876f      0x8b83645d      0x48330de1      0xe132ea1a
+       0xdc077f5a      0xfd14dd79      0xf606c198      0xec47c478
+       0x17c3f14f      0x334fd708      0xe39cf072      0x39f543c2
+       0xebab93a2      0xf7febed4      0x79971f6b      0x888858d4
+       0xdfd11199      0xafe72dfa      0x13f30ff8      0x6141ada3
+       0x5fe75eb0      0x75dcecd6      0x70fb1b33      0x073f9823
+       0x7afb726d      0x04b10ea5      0x6c881a5b      0x945a5c69
+       0x2ecb950a      0xb384f045      0xe5eb9ac8      0xa46dfd3b
+       0xb8185584      0xc095b417      0x86173c80      0x6a509180
+       0x4eddcc32      0xf408ac80      0x0833ae99      0x58ca79b2
+       0x2eac5d79      0x85c2deb7      0x400e6a01      0xdc6caa56
+       0x706176e7      0xa5dadc8f      0x0d4969de      0x259553d9
+       0x52425195      0x7d074da3      0x784ef596      0x8580e28c
+       0xbaa52874      0x71abf00e      0x8434cb32      0xc3a8ffe2
+       0x6ec52581      0xa4cd744f      0xd5820757      0x7e257e4d
+       0xb7428f60      0xb55fd824      0xd454c529      0x8de72e07
+       0xf84abcb4      0x30b7c926      0x5140a1d2      0x4e9550c6
+       0x18826ed6      0xf561a8eb      0x28c7cde6      0xe91022ea
+       0x73cdc0ef      0x32bea752      0xc7a0138d      0xa0af6cd3
+       0x52c4736d      0x0b459241      0x2156a8d8      0x0d32a2ad
+       0x49bb6600      0x8752c2bd      0x45d0a0ec      0xc89f9bc3
+       0x76d775a6      0x963f0a6b      0xb5d100fc      0x2731528b
+       0x2719d1a1      0x2b201af5      0xc337ea7b      0x70ce1c8f
+       0x8cb21437      0x9869038c      0x53e9458e      0x624904e5
+       0xcb7cdad7      0x13b9bba7      0xc66ec1ae      0x86bbb14d
+       0x018c25ad      0x88573452      0x4165b4bd      0xa719f640
+       0xd4b8227a      0xdace857f      0x701c449e      0xa835c09e
+       0xef8e4608      0x72ec0d91      0xe88703ac      0xb6470c3d
+       0x0cae0aff      0xae650f6c      0x384c382e      0x5d4b6275
+       0x6691c449      0xfba67785      0xe3a5b7b7      0xfb72c85e
+       0x09056be6      0x15e28bd0      0xb6be7e9e      0xd97fac13
+       0x1e6023bc      0x0f28cfbd      0x840eeee5      0xd208ac51
+       0x12b36d98      0xd28885de      0x108c3e86      0xff2ae965
+       0x09b446c4      0xe453ba28      0x42c997ac      0x880e22f3
+       0x0eeee913      0x5a0c9803      0xf080f33c      0x47e99f76
+       0xa62e02f6      0x38283513      0x5ecad92f      0xaef2a1eb
+       0xa5cdc2c5      0xd5e6ae58      0x03dbffd9      0xc24ddb4f
+       0xaaeecc9d      0xdbeb2dfc      0xfda7e5a0      0x8e537029
+       0x8ae38058      0xfce24682      0xcdd46b74      0x0cc2b384
+       0x89cd2e8b      0xe955abd6      0x82c64f39      0x716c7713
+       0x70dbaa6c      0x271b7a9c      0x332e6234      0x8d081fed
+       0xb47ac8d3      0x818af259      0x6d97d09f      0x7aaca213
+       0x2124cd22      0x70fc4cbc      0x02988745      0x29e28390
+       0x2b11e888      0xe62b3826      0x8c6260e9      0x2b2d9036
+       0xc3cd85c3      0x3a08e1a7      0xf406364f      0x6ff5f0d9
+       0xc0c2a847      0x076cac4b      0x85eea1ab      0xbe6d6dbc
+       0xdffbd36d      0xf1bb8934      0xae696cac      0xfe51475b
+       0x6bce710a      0x83d6ff0d      0x44cb120f      0xd0c01d5a
+       0x997f8469      0xdaad8626      0xdff160f7      0xf2954b72
+       0xd4efa312      0x07035ee6      0x03e8dbb0      0x5a33d382
+       0xc6527dc6      0x0b7391a3      0xfe568e01      0x24c28c70
+       0x76e65ea0      0xeafaf171      0x1ab4ebfa      0x4ff66462
+       0xc9949824      0x776d25fe      0x3689d8f9      0x1ec65a2c
+       0x746581f5      0x227209d2      0xbff7bc69      0x91b4c927
+       0x171c5962      0xb4dd5f85      0x72e4917a      0xd01ff1af
+       0x9c6ba703      0xdb9d9be6      0xae1cf2c5      0x48b85c21
+       0x9628b693      0xa8d2e2f7      0x856584db      0x1b33821e
+       0xff5de311      0x4126d04c      0xf00ac027      0x54bdaa98
+       0xa3dd5b0a      0xce2b2558      0xea5f50d8      0xb2e88f18
+       0x19590981      0x6dae2c0a      0xbfd758bc      0x2897e93c
+       0x3ba5d054      0x2d809b4c      0x3de6aa52      0xea171509
+       0x7d8b7b44      0x19a1ad1c      0xe99b2657      0x98ac56e9
+       0xc2150187      0x63a12506      0x4ffc1739      0x50e2ca6c
+       0x4f2ff10c      0xb7323ff6      0x81d9f57a      0x5146beee
+       0xa1f45456      0xf6ce5d75      0xdff7be9a      0x75ab2dc9
+       0x5ff2901a      0xec756ab3      0x8a5e0299      0xc4e248ce
+       0x248502e8      0xd8c62cf1      0xc7001b23      0xf7c636d2
+       0xefbb67e1      0xec507025      0x1820ac19      0x39e1624c
+       0x4ee603b2      0xb70e1c67      0xaf9376fc      0x371af05b
+       0xa19209fe      0x8ecdf499      0x9a607cb2      0xcbe61a2c
+       0x9f4e950c      0xb9a1546f      0xe718f140      0xc75d5d02
+       0xabe66af2      0xecc54d7b      0xb4373489      0x22254496
+       0x4b4b7f7c      0x40dde60e      0xfe621a3e      0xa6605c67
+       0x5cf6a3a2      0x75df88a3      0xbf0749b0      0x705a0a04
+       0xf3cae078      0x392bdebd      0x98878e65      0x0f5a2be5
+       0xec172835      0xf610cc90      0xac6ff369      0x0a71c173
+       0x8eae2d62      0x2ccbb630      0xd3b702ea      0x1626bfff
+       0xdb4a6975      0xd2a936f7      0x0bb63194      0x5d9120dd
+       0x5860e04e      0x3baeca91      0x95a621db      0xa6d23aaf
+       0xfebcfa2d      0xa5ed89cf      0x2192280a      0x72322cb8
+       0xd79e14d2      0x0528ce06      0x1c6a8f9c      0x6703407c
+       0x93819694      0x6c554390      0x7875452a      0xf45d2757
+       0xe0458d1d      0x335f6179      0x48989cc9      0xdc16cec8
+       0x9e2c0ee5      0x78daabe2      0x2069e8eb      0x0e87f238
+       0x0a928dda      0xc66e14b3      0x2a6c4031      0x73821630
+       0x8b8c4a40      0x243702b7      0xded80901      0x5de34802
+       0xea029b73      0x59a47771      0xe747d796      0xe80aea8d
+       0x0bd01815      0x76fe1f68      0xa345fc34      0x73737383
+       0x76753b6c      0x57dcba56      0xb11d6b21      0x81dc371e
+       0x311f4ea0      0x3b4b2522      0xe8a66ef4      0x1932df0c
+       0x9f3790d6      0x0d0478a3      0x7dd0a24b      0xeb581381
+       0x6fe8ff06      0xe34c2d69      0x26842e15      0xe9a39562
+       0x78f2d7d1      0x79ab33f5      0x197df69c      0x38a9a004
+       0x9391dba9      0xfbb4b7c5      0xa97bb70f      0x0720b57b
+       0xd9b26325      0x3ed1a3fc      0x11f5aba0      0x6e6a53ef
+       0xe2ce236e      0x30994468      0x9d4369cd      0xcb6b5b5c
+       0x61a0945c      0x090e7dea      0x5d9b676a      0xd474cb52
+       0x8ebf1af3      0x35f2a70b      0x417d48a0      0x45062dcc
+       0x841d8d90      0x30f8e590      0x1c935ad3      0x29313e0c
+       0x46ecf673      0x4998b596      0x95f23529      0xf31bd581
+       0x1b32045a      0x90432d28      0xa2a6c268      0xbf40fcae
+       0x4104b314      0x02677221      0xa99231ac      0xe28abada
+       0xd7d72a73      0xf1b2ce4c      0xf753f8be      0x9d7fc1c7
+       0x9a0e7a7a      0xf04ccf32      0x58433f5f      0xab9a6d51
+       0x71262b1c      0x48f84d91      0x897670bb      0x47dd10cb
+       0xac7ef74d      0x78dc3e54      0x30b17eaa      0xc8f46618
+       0xc636fe3b      0x86ac06e3      0xfb8edd16      0xed357170
+       0xbfd34bf8      0xaeb9571a      0x4eec6a50      0xe881a1b7
+       0x8a1cbbde      0xc6c077b6      0xaeda1441      0xf990296a
+       0xc91e87d6      0xad0ca921      0x855537b6      0xfc0da57d
+       0xf8427d87      0x9ece7413      0xc5d4b4c9      0x2fca7822
+       0xa1888443      0xd3bf617e      0xab21ce7d      0xe63b5f53
+       0x828501c5      0x81a39da9      0xb8cfb4c6      0x6b23b8dc
+       0x853fe425      0xba262321      0x34f11b05      0x8044aea4
+       0x67a3f99d      0x51e8afb7      0x04efcf27      0x7773f9ff
+       0x8abceec1      0xd75d87a2      0x7e30d774      0xdd7a42f2
+       0x2ca6ad73      0x27d4e62f      0xbc228d26      0x035a7713
+       0x5dbcc13a      0x792a97da      0x56cf9fc2      0x5906fa3e
+       0x97a3147c      0x85e59863      0x19ad1f49      0x1af659a8
+       0xddc6a273      0xd254a195      0x44d83a00      0x3b7c5fa7
+       0xcaf756aa      0x68ad08b9      0xfc57da12      0x3b278f24
+       0xbd165574      0x3cf597ca      0xdeb872ba      0x543eb2f5
+       0xfabc0d4f      0x0799c544      0x3d71181d      0x22c8a598
+       0xb82840fc      0x1a198d19      0xf529a0ea      0x2f65bc24
+       0xe979f99d      0xff8617b4      0x376e5abb      0xb095a03e
+       0xa36b1107      0x2dacf004      0xe4c565e1      0xc96463cd
+       0x3b495e2d      0x4a2c2cd7      0xa0053fc2      0x6c82a085
+       0x6b801c45      0xc1481d77      0x6d95dc15      0x44dc8bf6
+       0x3eed7d25      0x901a6b49      0x2797e953      0x502ad2c3
+       0x8491c3f2      0x3ce059eb      0x992c1a76      0x6c56d2a2
+       0xcf1878a7      0x10574487      0x5a2f85e6      0xf94e418e
+       0x4c149aed      0x9381b5a3      0x79c90da4      0x635e696e
+       0x243073ba      0x67504105      0xe82ac957      0xaccda7b3
+       0x29bdd624      0xd0c1533c      0xbc080065      0x8d617329
+       0x27e6f74a      0x31e87692      0x50a3857d      0xc5b1ec3f
+       0x4f03be5f      0xa35fde17      0x537a59bb      0x793d1eb5
+       0xc11a0588      0x067e5593      0x102532c3      0x4024b312
+       0x32504cf4      0x4ddc0e9a      0xad5b1d24      0x41081874
+       0xf94fced4      0x16f39da6      0x9bdfbe58      0xc5615db4
+       0x1fdd769d      0x4278b52e      0x4525b8b6      0x7feed258
+       0xe0b4348b      0xb4925ccc      0x5547cc88      0x3f7f5443
+       0x5b8cc6d3      0xbe6a15cf      0x7308c088      0xde4219df
+       0x4685593c      0xc4ae83a3      0xaea72ff0      0x403b0c08
+       0xe533a9aa      0xed46be76      0x4390bcd0      0x683a9f3f
+       0x338b5cd3      0x7cd59689      0x2eb11aec      0x74e91cfd
+       0x7ae588aa      0x0eadf94e      0x30a6b42f      0x1965f165
+       0xd96de54b      0x06c85abf      0x1bbc0ab8      0x79f3ddd0
+       0x871fd58d      0x498dd69d      0x9197dd0e      0x6cbb3a4f
+       0x8a1f2a01      0x0d9cf747      0x80e66655      0x770d2b25
+       0x567bd3eb      0x59583c5a      0x58afeddd      0x9296d0e3
+       0xcf5af62c      0xf48b4c78      0x746f657e      0xe543b903
+       0x24603809      0xd1bceeea      0x16d04950      0x2a7c754b
+       0x4ea8bb99      0x9daecb97      0x3045b9a9      0x4a3e84d9
+       0x5487e79f      0xd6145e57      0xc3b17f6f      0x14448bb6
+       0x8e8529f5      0xf895acb9      0x6605c0f0      0x52d00ca9
+       0xabf6e3e9      0x8f36e307      0xa7a15442      0x55144801
+       0x69b028b2      0x8ab3b912      0xb493f80e      0x2dc9fdfa
+       0x1b091fbf      0x1bce6b31      0x79eb414e      0xe5f86ea0
+       0x39ef7dbd      0x2f86faf0      0xec366923      0xe770c7be
+       0x74e4aa61      0xef3b9da0      0xd77bd8be      0xfd13d3cb
+       0x4e8023c6      0x3d993904      0xfcb2f700      0xa14b753b
+       0xde16c1c3      0x983c5a86      0x52ba5e61      0x1d67b044
+       0x0f9a302d      0x2f13b653      0x769cbb97      0xea3e1cbd
+       0x5791778c      0x540fcff1      0x5e6c53f2      0xc9cbac0f
+       0x40ceadf0      0x648713d3      0xb5347ada      0xfe280079
+       0xb8389f3f      0x5a6be26a      0x8e683d28      0x6a3e8e3a
+       0x97ecac7a      0x70b648f1      0xe4eca20e      0x088cd0b4
+       0xbad30405      0x0f77e382      0x673cdf65      0x438af1f0
+       0x0b4f4eea      0xf0cc34e9      0x374a3c04      0x4370d27d
+       0xc3e1e84d      0x141205c2      0xfa831e8d      0x32f2f10a
+       0x77899366      0xc9d07590      0x9b6f2286      0xcac96a03
+       0xf822808b      0x265606cd      0xbeef275d      0x73415b15
+       0x4c87250e      0xf95a8c8a      0xdc8d6166      0x68522e63
+       0xb9becc14      0x7b5f20be      0x3d158dab      0xa73b1716
+       0x3b2cac15      0xf0498939      0xb60653bf      0x33fafc0e
+       0x3b416955      0x3addca50      0x16ab21cf      0xd18cbdb6
+       0x3b29b87b      0xa6fb7e4b      0x6634147f      0x44283b1e
+       0x430ae726      0xa907ab82      0x2baa6706      0x621d2390
+       0x15944559      0x2516c807      0x7d1eeb61      0xe2714121
+       0x288d3998      0x47713cbb      0xa1ce3c1e      0x0c29b6dd
+       0x9923131c      0x2dd19cfa      0x83d0ece5      0x78474c7b
+       0x92dee4f0      0xba5cb0f7      0x780c1d41      0x50da5a89
+       0xe303cebb      0xe8d5a2bd      0x7d6269a9      0xb75484f1
+       0x33ee8186      0x085b7657      0x7b1c7863      0xdb1a43ce
+       0x3d0c4bf0      0x302c1292      0x81e42216      0xee1f2c9d
+       0x822451ab      0xcefd8067      0x8330dc41      0x14492542
+       0xf038f54d      0x90a1abf9      0xc3067a77      0x40d9a42c
+       0x127285c1      0x80ad15ff      0xaf4854e2      0xa47874f4
+       0x2ed59760      0x67252c6a      0xe2830f38      0x8150c00c
+       0x16f61cca      0x1331f815      0x2d832d17      0x163c6010
+       0x69464e2f      0x99940411      0xbce5e85f      0x43d39ef2
+       0x9b7224dc      0x28652b6d      0x331a7632      0x127f669e
+       0x44a034ad      0xe95d2cec      0x3d83fefb      0xfa6d40a2
+       0x9b535bf4      0xc83411ce      0xd661655b      0x64bcd8d2
+       0xd99e1570      0x7dc4d877      0x9756b210      0x7623dc0d
+       0x484dd33f      0xe7bca204      0xa06efbc5      0xa358c03f
+       0x362cb282      0xe40e6d04      0x17ab9f5e      0x79a71a09
+       0x804bf1a9      0x6bca7d73      0x5504a4ff      0xd3946f75
+       0x18b0b9d4      0xd85993cc      0x94d000a5      0x8dda1609
+       0x30afb8f6      0xb3c99c3c      0x7686d59d      0x68b719db
+       0xdc7b3edb      0xedb76012      0xbfa0ba3b      0x280b829d
+       0x72fcf1aa      0xe3d8f83c      0x088a57cf      0x95156217
+       0x3306eb47      0x1d09cf54      0x1391876f      0x5b15ecde
+       0xb46104e1      0x8d8f2593      0x90ee50cc      0x78dad4b2
+       0xfd96daee      0xdbf15e95      0xfc859faa      0xdb4422a5
+       0xa00eeab6      0x525232c6      0x9b665668      0x8a70518b
+       0xbb27f7ac      0xb066b096      0x25754db6      0xe8c7d748
+       0xd4e8d361      0x380dd246      0x9bdf15e6      0x6823c660
+       0x5d408fe7      0xe59a5a89      0x1eb7523b      0x4997158e
+       0xfa6214d2      0x03b35025      0x9aeff33c      0x20a38aad
+       0x522f79cd      0x4141f19c      0xc58cd2bd      0xc816da37
+       0x62c6f8d9      0xc15ea9f4      0x138d1f45      0xd36cef03
+       0x88183bd6      0xe0de9036      0xefcbe8fc      0x5ebdce26
+       0x9e83b01b      0xd35f6747      0x552951f1      0x4e20dd66
+       0x419702b1      0x45446e7c      0x7ce5616b      0x6152e3a8
+       0xffd572e1      0x4fab25b0      0x07563b80      0x98720ee7
+       0x176d29bf      0x21cbd730      0xbde74431      0x09a8cce2
+       0xc15e548e      0xe6a92b4b      0x14f17e74      0x75f7817b
+       0x592143e8      0x113dbd25      0x5f7d7160      0xbdd8b1e0
+       0x6ce045e5      0x53b27b2d      0x371c8aa8      0xa4da8be0
+       0xf1f6df4e      0x9519bac4      0x6d6169cf      0x7846253f
+       0xccb95d95      0x6ad11a98      0x4a3bd21d      0x5389f44c
+       0x7c07ef3a      0xb983ca57      0xcf7f290d      0x4ec516f1
+       0xa7711e70      0x818d45a9      0x49db6441      0xd032fc2a
+       0x657df4d3      0xe37e6809      0x459a22da      0x41df8aa5
+       0x462108a6      0x65177d27      0x1ddffa9f      0x7fa6631b
+       0xdd7a414c      0x6351f0d1      0x1b38a419      0x6b529c8e
+       0x167745e4      0xcac35897      0x3d7bf419      0xd59ed67a
+       0x6486b2c9      0x9ae4fc90      0x8f608920      0xd35335c0
+       0x8f113cba      0x0fcc11a1      0xdc180fbf      0x57a99319
+       0x2c54185f      0x764c18d0      0x4f84b111      0x30a11040
+       0xd15620af      0x496af145      0x263b2de2      0x3ff103dd
+       0x38484dac      0xf143a3bc      0xb62c0de6      0xb122c545
+       0x72f10466      0x63728442      0xee0117c9      0x2309f14b
+       0x4ccdd5de      0x37ae022d      0x2ee7f050      0xf2aa9af6
+       0xcd314a20      0x86954941      0x97215303      0xcd7e1687
+       0x1dab6672      0x1c920209      0x41102dae      0x8b21c8ab
+       0x6f70b04b      0x2988b209      0x86e6f033      0x5eb91718
+       0x925b3c40      0xdcad0288      0x0ee98331      0xc3096ceb
+       0x9fa04740      0x3ce3fb23      0x90d75cbd      0xeab21768
+       0xaca5db0a      0x1c440578      0x762cb728      0x315a699f
+       0xcd2b6490      0x11e3e267      0xa10d1bbc      0x23ac26d3
+       0xc0c7c268      0x37ecf7ac      0x28de6fe5      0x6fb8e3e8
+       0x583d1131      0x8370812a      0x3afd5d58      0x4569a06e
+       0xf27ad86f      0x0db6a631      0x9add5128      0x1748c9fd
+       0xc46e3c57      0x4c0df93e      0xc595c544      0x397f7e7e
+       0x241f4086      0x7d7ed51b      0x56027473      0x656a6110
+       0x970a8011      0xf9c7beb5      0xc6cb9957      0xb7426461
+       0x62d3d89d      0xf99d48ca      0x3e4d4a88      0x9f751b71
+       0xfa020205      0xa3124337      0x59935869      0x98c58314
+       0xff7c4385      0x69191265      0xaf85ebb9      0xe434cda2
+       0xb1ad3e0e      0x221d32e1      0x022d73a0      0xd676ce06
+       0xab7f0c21      0x915c2444      0xf5bdaba2      0x74e4e789
+       0x11ff0d95      0x58c53feb      0xa54eb847      0x9af982ae
+       0x8d721596      0x73510fe4      0x95e3bd19      0xd82f8359
+       0xc09cdd5b      0xc07f57a4      0xbece605b      0xa8a43c5b
+       0x0acbeb6d      0x3c5cd8ce      0xb631050d      0xd558c921
+       0xcb5054c2      0xefb06252      0x40d2e2cc      0x14ffe6ff
+       0x761001a9      0xad64e7a5      0xb55618b4      0x2a40a1fc
+       0x2cbe6d40      0x2bc18fc1      0x196e7092      0x3c137791
+       0xa799eb23      0x1156feb9      0xd55d7ed1      0x0149c315
+       0xae77081f      0xfe724690      0x55ed2fd7      0x04b18cd7
+       0x691583f4      0xb1be4fde      0x19ae1cf7      0x3250140b
+       0x35daeeb2      0xc9459a84      0xea2c19e1      0x57f8c9cb
+       0xe05e07a4      0xcc77a363      0x43afd702      0x48305862
+       0x6c4b459f      0x66ed6178      0x26be9f81      0xeac41ee5
+       0xbe5e2e6b      0x177f9068      0xede56c48      0x438b3811
+       0xd5bd7ee4      0xc027d1a8      0xc1c0f725      0x48d4d4eb
+       0x6ffa28d5      0xbd6ac9eb      0xd497781d      0x24d3a154
+       0x409bb5c0      0x8079bf76      0x90a522dc      0x19bf7033
+       0x1a529b6e      0xe5207e4d      0x3d49b7bc      0x3eca6d54
+       0xa37681a6      0xaa9a62e4      0xe54aa1e1      0xb91e7157
+       0x8cce8f65      0xbcbbd62c      0x7fa477b5      0x44f46b50
+       0x54263fcf      0x529cbb5d      0x8923e390      0x0778d6d7
+       0x0cc0503f      0x02c374ce      0xb89c3e5c      0x25b1b353
+       0xb227cb2d      0x44108698      0x5e5968c2      0x82c48632
+       0x0b8f4209      0x1a241879      0x9edca6f1      0xa1fa51ab
+       0x206db0c6      0xbfbbbe98      0xa71c91f6      0xa1b28056
+       0xb8bfaaa9      0xa5914f75      0x77d26574      0xacfd459d
+       0x77f7cab2      0x249ebf26      0xef902bdd      0x77f6e48d
+       0x82497035      0x93333a9d      0x34ea9953      0x8f08d41c
+       >;
diff --git a/arch/x86/dts/serial.dtsi b/arch/x86/dts/serial.dtsi
new file mode 100644 (file)
index 0000000..9b097f4
--- /dev/null
@@ -0,0 +1,9 @@
+/ {
+       serial {
+               compatible = "x86-uart";
+               reg = <0x3f8 8>;
+               reg-shift = <0>;
+               clock-frequency = <1843200>;
+               current-speed = <115200>;
+       };
+};
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
new file mode 100644 (file)
index 0000000..4872b92
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * From coreboot
+ *
+ * Copyright (C) 2004 SUSE LINUX AG
+ * Copyright (C) 2004 Nick Barker
+ * Copyright (C) 2008-2009 coresystems GmbH
+ * (Written by Stefan Reinauer <stepan@coresystems.de>)
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef __ASM_ACPI_H
+#define __ASM_ACPI_H
+
+#define RSDP_SIG               "RSD PTR "  /* RSDT pointer signature */
+#define ACPI_TABLE_CREATOR     "U-BootAC"  /* Must be exactly 8 bytes long! */
+#define OEM_ID                 "U-Boot"    /* Must be exactly 6 bytes long! */
+#define ASLC                   "U-Bo"      /* Must be exactly 4 bytes long! */
+
+/* 0 = S0, 1 = S1 ...*/
+int acpi_get_slp_type(void);
+void apci_set_slp_type(int type);
+
+#endif
index 3ec18168339a4650ae48ce1ba28b8f01889c53e1..31edef96238bf9586bbc06b86904ef9a02db9842 100644 (file)
@@ -7,9 +7,7 @@
 #ifndef _X86_ARCH_GPIO_H_
 #define _X86_ARCH_GPIO_H_
 
-struct ich6_bank_platdata {
-       uint32_t base_addr;
-       const char *bank_name;
-};
+/* Where in config space is the register that points to the GPIO registers? */
+#define PCI_CFG_GPIOBASE 0x48
 
 #endif /* _X86_ARCH_GPIO_H_ */
index 8e4a61de7d07cf73dba726f0de80794a2d9a0d89..832c50aa63886e5e96c3cb852cf0746e02271afa 100644 (file)
@@ -10,7 +10,7 @@
 #define _COREBOOT_SYSINFO_H
 
 #include <common.h>
-#include <compiler.h>
+#include <linux/compiler.h>
 #include <libfdt.h>
 #include <asm/arch/tables.h>
 
index 0d02fe0592eed1775e251ad23838ab92319a4aca..e254484e75ae958ddec32a541d3943ef22852ffc 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef _COREBOOT_TABLES_H
 #define _COREBOOT_TABLES_H
 
-#include <compiler.h>
+#include <linux/compiler.h>
 
 struct cbuint64 {
        u32 lo;
diff --git a/arch/x86/include/asm/arch-ivybridge/bd82x6x.h b/arch/x86/include/asm/arch-ivybridge/bd82x6x.h
new file mode 100644 (file)
index 0000000..e1d9a9b
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_BD82X6X_H
+#define _ASM_ARCH_BD82X6X_H
+
+void bd82x6x_sata_init(pci_dev_t dev, const void *blob, int node);
+void bd82x6x_sata_enable(pci_dev_t dev, const void *blob, int node);
+void bd82x6x_pci_init(pci_dev_t dev);
+void bd82x6x_usb_ehci_init(pci_dev_t dev);
+void bd82x6x_usb_xhci_init(pci_dev_t dev);
+int bd82x6x_init_pci_devices(void);
+int gma_func0_init(pci_dev_t dev, struct pci_controller *hose,
+                  const void *blob, int node);
+int bd82x6x_init(void);
+
+struct x86_cpu_priv;
+int model_206ax_init(struct x86_cpu_priv *cpu);
+
+#endif
diff --git a/arch/x86/include/asm/arch-ivybridge/gpio.h b/arch/x86/include/asm/arch-ivybridge/gpio.h
new file mode 100644 (file)
index 0000000..31edef9
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2014, Google Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _X86_ARCH_GPIO_H_
+#define _X86_ARCH_GPIO_H_
+
+/* Where in config space is the register that points to the GPIO registers? */
+#define PCI_CFG_GPIOBASE 0x48
+
+#endif /* _X86_ARCH_GPIO_H_ */
diff --git a/arch/x86/include/asm/arch-ivybridge/me.h b/arch/x86/include/asm/arch-ivybridge/me.h
new file mode 100644 (file)
index 0000000..3a0809d
--- /dev/null
@@ -0,0 +1,356 @@
+/*
+ * From Coreboot src/southbridge/intel/bd82x6x/me.h
+ *
+ * Copyright (C) 2011 The Chromium OS Authors. All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_INTEL_ME_H
+#define _ASM_INTEL_ME_H
+
+#include <linux/compiler.h>
+#include <linux/types.h>
+
+#define ME_RETRY               100000  /* 1 second */
+#define ME_DELAY               10      /* 10 us */
+
+/*
+ * Management Engine PCI registers
+ */
+
+#define PCI_CPU_MEBASE_L       0x70    /* Set by MRC */
+#define PCI_CPU_MEBASE_H       0x74    /* Set by MRC */
+
+#define PCI_ME_HFS             0x40
+#define  ME_HFS_CWS_RESET      0
+#define  ME_HFS_CWS_INIT       1
+#define  ME_HFS_CWS_REC                2
+#define  ME_HFS_CWS_NORMAL     5
+#define  ME_HFS_CWS_WAIT       6
+#define  ME_HFS_CWS_TRANS      7
+#define  ME_HFS_CWS_INVALID    8
+#define  ME_HFS_STATE_PREBOOT  0
+#define  ME_HFS_STATE_M0_UMA   1
+#define  ME_HFS_STATE_M3       4
+#define  ME_HFS_STATE_M0       5
+#define  ME_HFS_STATE_BRINGUP  6
+#define  ME_HFS_STATE_ERROR    7
+#define  ME_HFS_ERROR_NONE     0
+#define  ME_HFS_ERROR_UNCAT    1
+#define  ME_HFS_ERROR_IMAGE    3
+#define  ME_HFS_ERROR_DEBUG    4
+#define  ME_HFS_MODE_NORMAL    0
+#define  ME_HFS_MODE_DEBUG     2
+#define  ME_HFS_MODE_DIS       3
+#define  ME_HFS_MODE_OVER_JMPR 4
+#define  ME_HFS_MODE_OVER_MEI  5
+#define  ME_HFS_BIOS_DRAM_ACK  1
+#define  ME_HFS_ACK_NO_DID     0
+#define  ME_HFS_ACK_RESET      1
+#define  ME_HFS_ACK_PWR_CYCLE  2
+#define  ME_HFS_ACK_S3         3
+#define  ME_HFS_ACK_S4         4
+#define  ME_HFS_ACK_S5         5
+#define  ME_HFS_ACK_GBL_RESET  6
+#define  ME_HFS_ACK_CONTINUE   7
+
+struct me_hfs {
+       u32 working_state:4;
+       u32 mfg_mode:1;
+       u32 fpt_bad:1;
+       u32 operation_state:3;
+       u32 fw_init_complete:1;
+       u32 ft_bup_ld_flr:1;
+       u32 update_in_progress:1;
+       u32 error_code:4;
+       u32 operation_mode:4;
+       u32 reserved:4;
+       u32 boot_options_present:1;
+       u32 ack_data:3;
+       u32 bios_msg_ack:4;
+} __packed;
+
+#define PCI_ME_UMA             0x44
+
+struct me_uma {
+       u32 size:6;
+       u32 reserved_1:10;
+       u32 valid:1;
+       u32 reserved_0:14;
+       u32 set_to_one:1;
+} __packed;
+
+#define PCI_ME_H_GS            0x4c
+#define  ME_INIT_DONE          1
+#define  ME_INIT_STATUS_SUCCESS        0
+#define  ME_INIT_STATUS_NOMEM  1
+#define  ME_INIT_STATUS_ERROR  2
+
+struct me_did {
+       u32 uma_base:16;
+       u32 reserved:8;
+       u32 status:4;
+       u32 init_done:4;
+} __packed;
+
+#define PCI_ME_GMES            0x48
+#define  ME_GMES_PHASE_ROM     0
+#define  ME_GMES_PHASE_BUP     1
+#define  ME_GMES_PHASE_UKERNEL 2
+#define  ME_GMES_PHASE_POLICY  3
+#define  ME_GMES_PHASE_MODULE  4
+#define  ME_GMES_PHASE_UNKNOWN 5
+#define  ME_GMES_PHASE_HOST    6
+
+struct me_gmes {
+       u32 bist_in_prog:1;
+       u32 icc_prog_sts:2;
+       u32 invoke_mebx:1;
+       u32 cpu_replaced_sts:1;
+       u32 mbp_rdy:1;
+       u32 mfs_failure:1;
+       u32 warm_rst_req_for_df:1;
+       u32 cpu_replaced_valid:1;
+       u32 reserved_1:2;
+       u32 fw_upd_ipu:1;
+       u32 reserved_2:4;
+       u32 current_state:8;
+       u32 current_pmevent:4;
+       u32 progress_code:4;
+} __packed;
+
+#define PCI_ME_HERES           0xbc
+#define  PCI_ME_EXT_SHA1       0x00
+#define  PCI_ME_EXT_SHA256     0x02
+#define PCI_ME_HER(x)          (0xc0+(4*(x)))
+
+struct me_heres {
+       u32 extend_reg_algorithm:4;
+       u32 reserved:26;
+       u32 extend_feature_present:1;
+       u32 extend_reg_valid:1;
+} __packed;
+
+/*
+ * Management Engine MEI registers
+ */
+
+#define MEI_H_CB_WW            0x00
+#define MEI_H_CSR              0x04
+#define MEI_ME_CB_RW           0x08
+#define MEI_ME_CSR_HA          0x0c
+
+struct mei_csr {
+       u32 interrupt_enable:1;
+       u32 interrupt_status:1;
+       u32 interrupt_generate:1;
+       u32 ready:1;
+       u32 reset:1;
+       u32 reserved:3;
+       u32 buffer_read_ptr:8;
+       u32 buffer_write_ptr:8;
+       u32 buffer_depth:8;
+} __packed;
+
+#define MEI_ADDRESS_CORE       0x01
+#define MEI_ADDRESS_AMT                0x02
+#define MEI_ADDRESS_RESERVED   0x03
+#define MEI_ADDRESS_WDT                0x04
+#define MEI_ADDRESS_MKHI       0x07
+#define MEI_ADDRESS_ICC                0x08
+#define MEI_ADDRESS_THERMAL    0x09
+
+#define MEI_HOST_ADDRESS       0
+
+struct mei_header {
+       u32 client_address:8;
+       u32 host_address:8;
+       u32 length:9;
+       u32 reserved:6;
+       u32 is_complete:1;
+} __packed;
+
+#define MKHI_GROUP_ID_CBM      0x00
+#define MKHI_GROUP_ID_FWCAPS   0x03
+#define MKHI_GROUP_ID_MDES     0x08
+#define MKHI_GROUP_ID_GEN      0xff
+
+#define MKHI_GLOBAL_RESET      0x0b
+
+#define MKHI_FWCAPS_GET_RULE   0x02
+
+#define MKHI_MDES_ENABLE       0x09
+
+#define MKHI_GET_FW_VERSION    0x02
+#define MKHI_END_OF_POST       0x0c
+#define MKHI_FEATURE_OVERRIDE  0x14
+
+struct mkhi_header {
+       u32 group_id:8;
+       u32 command:7;
+       u32 is_response:1;
+       u32 reserved:8;
+       u32 result:8;
+} __packed;
+
+struct me_fw_version {
+       u16 code_minor;
+       u16 code_major;
+       u16 code_build_number;
+       u16 code_hot_fix;
+       u16 recovery_minor;
+       u16 recovery_major;
+       u16 recovery_build_number;
+       u16 recovery_hot_fix;
+} __packed;
+
+
+#define HECI_EOP_STATUS_SUCCESS       0x0
+#define HECI_EOP_PERFORM_GLOBAL_RESET 0x1
+
+#define CBM_RR_GLOBAL_RESET    0x01
+
+#define GLOBAL_RESET_BIOS_MRC  0x01
+#define GLOBAL_RESET_BIOS_POST 0x02
+#define GLOBAL_RESET_MEBX      0x03
+
+struct me_global_reset {
+       u8 request_origin;
+       u8 reset_type;
+} __packed;
+
+enum me_bios_path {
+       ME_NORMAL_BIOS_PATH,
+       ME_S3WAKE_BIOS_PATH,
+       ME_ERROR_BIOS_PATH,
+       ME_RECOVERY_BIOS_PATH,
+       ME_DISABLE_BIOS_PATH,
+       ME_FIRMWARE_UPDATE_BIOS_PATH,
+};
+
+struct __packed mbp_fw_version_name {
+       u32 major_version:16;
+       u32 minor_version:16;
+       u32 hotfix_version:16;
+       u32 build_version:16;
+};
+
+struct __packed mbp_icc_profile {
+       u8 num_icc_profiles;
+       u8 icc_profile_soft_strap;
+       u8 icc_profile_index;
+       u8 reserved;
+       u32 register_lock_mask[3];
+};
+
+struct __packed mefwcaps_sku {
+       u32 full_net:1;
+       u32 std_net:1;
+       u32 manageability:1;
+       u32 small_business:1;
+       u32 l3manageability:1;
+       u32 intel_at:1;
+       u32 intel_cls:1;
+       u32 reserved:3;
+       u32 intel_mpc:1;
+       u32 icc_over_clocking:1;
+       u32 pavp:1;
+       u32 reserved_1:4;
+       u32 ipv6:1;
+       u32 kvm:1;
+       u32 och:1;
+       u32 vlan:1;
+       u32 tls:1;
+       u32 reserved_4:1;
+       u32 wlan:1;
+       u32 reserved_5:8;
+};
+
+struct __packed tdt_state_flag {
+       u16 lock_state:1;
+       u16 authenticate_module:1;
+       u16 s3authentication:1;
+       u16 flash_wear_out:1;
+       u16 flash_variable_security:1;
+       u16 wwan3gpresent:1;
+       u16 wwan3goob:1;
+       u16 reserved:9;
+};
+
+struct __packed tdt_state_info {
+       u8 state;
+       u8 last_theft_trigger;
+       struct tdt_state_flag flags;
+};
+
+struct __packed platform_type_rule_data {
+       u32 platform_target_usage_type:4;
+       u32 platform_target_market_type:2;
+       u32 super_sku:1;
+       u32 reserved:1;
+       u32 intel_me_fw_image_type:4;
+       u32 platform_brand:4;
+       u32 reserved_1:16;
+};
+
+struct __packed mbp_fw_caps {
+       struct mefwcaps_sku fw_capabilities;
+       u8 available;
+};
+
+struct __packed mbp_rom_bist_data {
+       u16 device_id;
+       u16 fuse_test_flags;
+       u32 umchid[4];
+};
+
+struct __packed mbp_platform_key {
+       u32 key[8];
+};
+
+struct __packed mbp_plat_type {
+       struct platform_type_rule_data rule_data;
+       u8 available;
+};
+
+struct __packed me_bios_payload {
+       struct mbp_fw_version_name fw_version_name;
+       struct mbp_fw_caps fw_caps_sku;
+       struct mbp_rom_bist_data rom_bist_data;
+       struct mbp_platform_key platform_key;
+       struct mbp_plat_type fw_plat_type;
+       struct mbp_icc_profile icc_profile;
+       struct tdt_state_info at_state;
+       u32 mfsintegrity;
+};
+
+struct __packed mbp_header {
+       u32 mbp_size:8;
+       u32 num_entries:8;
+       u32 rsvd:16;
+};
+
+struct __packed mbp_item_header {
+       u32 app_id:8;
+       u32 item_id:8;
+       u32 length:8;
+       u32 rsvd:8;
+};
+
+struct __packed me_fwcaps {
+       u32 id;
+       u8 length;
+       struct mefwcaps_sku caps_sku;
+       u8 reserved[3];
+};
+
+/* Defined in me_status.c for both romstage and ramstage */
+void intel_me_status(struct me_hfs *hfs, struct me_gmes *gmes);
+
+void intel_early_me_status(void);
+int intel_early_me_init(void);
+int intel_early_me_uma_size(void);
+int intel_early_me_init_done(u8 status);
+
+#endif
diff --git a/arch/x86/include/asm/arch-ivybridge/microcode.h b/arch/x86/include/asm/arch-ivybridge/microcode.h
new file mode 100644 (file)
index 0000000..b868283
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_MICROCODE_H
+#define __ASM_ARCH_MICROCODE_H
+
+/* Length of the public header on Intel microcode blobs */
+#define UCODE_HEADER_LEN       0x30
+
+#ifndef __ASSEMBLY__
+
+/**
+ * microcode_update_intel() - Apply microcode updates
+ *
+ * Applies any microcode updates in the device tree.
+ *
+ * @return 0 if OK, -EEXIST if the updates were already applied, -ENOENT if
+ * not updates were found, -EINVAL if an update was invalid
+ */
+int microcode_update_intel(void);
+#endif /* __ASSEMBLY__ */
+
+#endif
diff --git a/arch/x86/include/asm/arch-ivybridge/model_206ax.h b/arch/x86/include/asm/arch-ivybridge/model_206ax.h
new file mode 100644 (file)
index 0000000..7b4f2e7
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * From Coreboot file of the same name
+ *
+ * Copyright (C) 2011 The ChromiumOS Authors.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_ARCH_MODEL_206AX_H
+#define _ASM_ARCH_MODEL_206AX_H
+
+/* SandyBridge/IvyBridge bus clock is fixed at 100MHz */
+#define SANDYBRIDGE_BCLK               100
+
+#define  CPUID_VMX                     (1 << 5)
+#define  CPUID_SMX                     (1 << 6)
+#define MSR_FEATURE_CONFIG             0x13c
+#define MSR_FLEX_RATIO                 0x194
+#define  FLEX_RATIO_LOCK               (1 << 20)
+#define  FLEX_RATIO_EN                 (1 << 16)
+#define IA32_PLATFORM_DCA_CAP          0x1f8
+#define IA32_MISC_ENABLE               0x1a0
+#define MSR_TEMPERATURE_TARGET         0x1a2
+#define IA32_PERF_CTL                  0x199
+#define IA32_THERM_INTERRUPT           0x19b
+#define IA32_ENERGY_PERFORMANCE_BIAS   0x1b0
+#define  ENERGY_POLICY_PERFORMANCE     0
+#define  ENERGY_POLICY_NORMAL          6
+#define  ENERGY_POLICY_POWERSAVE       15
+#define IA32_PACKAGE_THERM_INTERRUPT   0x1b2
+#define MSR_LT_LOCK_MEMORY             0x2e7
+#define IA32_MC0_STATUS                0x401
+
+#define MSR_PIC_MSG_CONTROL            0x2e
+#define  PLATFORM_INFO_SET_TDP         (1 << 29)
+
+#define MSR_MISC_PWR_MGMT              0x1aa
+#define  MISC_PWR_MGMT_EIST_HW_DIS     (1 << 0)
+#define MSR_TURBO_RATIO_LIMIT          0x1ad
+#define MSR_POWER_CTL                  0x1fc
+
+#define MSR_PKGC3_IRTL                 0x60a
+#define MSR_PKGC6_IRTL                 0x60b
+#define MSR_PKGC7_IRTL                 0x60c
+#define  IRTL_VALID                    (1 << 15)
+#define  IRTL_1_NS                     (0 << 10)
+#define  IRTL_32_NS                    (1 << 10)
+#define  IRTL_1024_NS                  (2 << 10)
+#define  IRTL_32768_NS                 (3 << 10)
+#define  IRTL_1048576_NS               (4 << 10)
+#define  IRTL_33554432_NS              (5 << 10)
+#define  IRTL_RESPONSE_MASK            (0x3ff)
+
+/* long duration in low dword, short duration in high dword */
+#define  PKG_POWER_LIMIT_MASK          0x7fff
+#define  PKG_POWER_LIMIT_EN            (1 << 15)
+#define  PKG_POWER_LIMIT_CLAMP         (1 << 16)
+#define  PKG_POWER_LIMIT_TIME_SHIFT    17
+#define  PKG_POWER_LIMIT_TIME_MASK     0x7f
+
+#define MSR_PP0_CURRENT_CONFIG         0x601
+#define  PP0_CURRENT_LIMIT             (112 << 3) /* 112 A */
+#define MSR_PP1_CURRENT_CONFIG         0x602
+#define  PP1_CURRENT_LIMIT_SNB         (35 << 3) /* 35 A */
+#define  PP1_CURRENT_LIMIT_IVB         (50 << 3) /* 50 A */
+#define MSR_PKG_POWER_SKU_UNIT         0x606
+#define MSR_PKG_POWER_SKU              0x614
+
+#define IVB_CONFIG_TDP_MIN_CPUID       0x306a2
+#define MSR_CONFIG_TDP_NOMINAL         0x648
+#define MSR_CONFIG_TDP_LEVEL1          0x649
+#define MSR_CONFIG_TDP_LEVEL2          0x64a
+#define MSR_CONFIG_TDP_CONTROL         0x64b
+#define MSR_TURBO_ACTIVATION_RATIO     0x64c
+
+/* P-state configuration */
+#define PSS_MAX_ENTRIES                        8
+#define PSS_RATIO_STEP                 2
+#define PSS_LATENCY_TRANSITION         10
+#define PSS_LATENCY_BUSMASTER          10
+
+/* Configure power limits for turbo mode */
+void set_power_limits(u8 power_limit_1_time);
+int cpu_config_tdp_levels(void);
+
+#endif
diff --git a/arch/x86/include/asm/arch-ivybridge/pch.h b/arch/x86/include/asm/arch-ivybridge/pch.h
new file mode 100644 (file)
index 0000000..21df083
--- /dev/null
@@ -0,0 +1,476 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * From Coreboot src/southbridge/intel/bd82x6x/pch.h
+ *
+ * Copyright (C) 2008-2009 coresystems GmbH
+ * Copyright (C) 2012 The Chromium OS Authors.  All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_ARCH_PCH_H
+#define _ASM_ARCH_PCH_H
+
+#include <pci.h>
+
+/* PCH types */
+#define PCH_TYPE_CPT   0x1c /* CougarPoint */
+#define PCH_TYPE_PPT   0x1e /* IvyBridge */
+
+/* PCH stepping values for LPC device */
+#define PCH_STEP_A0    0
+#define PCH_STEP_A1    1
+#define PCH_STEP_B0    2
+#define PCH_STEP_B1    3
+#define PCH_STEP_B2    4
+#define PCH_STEP_B3    5
+#define DEFAULT_GPIOBASE       0x0480
+#define DEFAULT_PMBASE         0x0500
+
+#define SMBUS_IO_BASE          0x0400
+
+int pch_silicon_revision(void);
+int pch_silicon_type(void);
+int pch_silicon_supported(int type, int rev);
+void pch_iobp_update(u32 address, u32 andvalue, u32 orvalue);
+
+#define MAINBOARD_POWER_OFF    0
+#define MAINBOARD_POWER_ON     1
+#define MAINBOARD_POWER_KEEP   2
+
+/* PCI Configuration Space (D30:F0): PCI2PCI */
+#define PSTS   0x06
+#define SMLT   0x1b
+#define SECSTS 0x1e
+#define INTR   0x3c
+#define BCTRL  0x3e
+#define   SBR  (1 << 6)
+#define   SEE  (1 << 1)
+#define   PERE (1 << 0)
+
+#define PCH_EHCI1_DEV          PCI_BDF(0, 0x1d, 0)
+#define PCH_EHCI2_DEV          PCI_BDF(0, 0x1a, 0)
+#define PCH_XHCI_DEV           PCI_BDF(0, 0x14, 0)
+#define PCH_ME_DEV             PCI_BDF(0, 0x16, 0)
+#define PCH_PCIE_DEV_SLOT      28
+
+#define PCH_DEV                        PCI_BDF(0, 0, 0)
+#define PCH_VIDEO_DEV          PCI_BDF(0, 2, 0)
+
+/* PCI Configuration Space (D31:F0): LPC */
+#define PCH_LPC_DEV            PCI_BDF(0, 0x1f, 0)
+#define SERIRQ_CNTL            0x64
+
+#define GEN_PMCON_1            0xa0
+#define GEN_PMCON_2            0xa2
+#define GEN_PMCON_3            0xa4
+#define ETR3                   0xac
+#define  ETR3_CWORWRE          (1 << 18)
+#define  ETR3_CF9GR            (1 << 20)
+
+/* GEN_PMCON_3 bits */
+#define RTC_BATTERY_DEAD       (1 << 2)
+#define RTC_POWER_FAILED       (1 << 1)
+#define SLEEP_AFTER_POWER_FAIL (1 << 0)
+
+#define PMBASE                 0x40
+#define ACPI_CNTL              0x44
+#define BIOS_CNTL              0xDC
+#define GPIO_BASE              0x48 /* LPC GPIO Base Address Register */
+#define GPIO_CNTL              0x4C /* LPC GPIO Control Register */
+#define GPIO_ROUT              0xb8
+
+#define PIRQA_ROUT             0x60
+#define PIRQB_ROUT             0x61
+#define PIRQC_ROUT             0x62
+#define PIRQD_ROUT             0x63
+#define PIRQE_ROUT             0x68
+#define PIRQF_ROUT             0x69
+#define PIRQG_ROUT             0x6A
+#define PIRQH_ROUT             0x6B
+
+#define GEN_PMCON_1            0xa0
+#define GEN_PMCON_2            0xa2
+#define GEN_PMCON_3            0xa4
+#define ETR3                   0xac
+#define  ETR3_CWORWRE          (1 << 18)
+#define  ETR3_CF9GR            (1 << 20)
+
+#define PMBASE                 0x40
+#define ACPI_CNTL              0x44
+#define BIOS_CNTL              0xDC
+#define GPIO_BASE              0x48 /* LPC GPIO Base Address Register */
+#define GPIO_CNTL              0x4C /* LPC GPIO Control Register */
+#define GPIO_ROUT              0xb8
+
+#define LPC_IO_DEC             0x80 /* IO Decode Ranges Register */
+#define LPC_EN                 0x82 /* LPC IF Enables Register */
+#define  CNF2_LPC_EN           (1 << 13) /* 0x4e/0x4f */
+#define  CNF1_LPC_EN           (1 << 12) /* 0x2e/0x2f */
+#define  MC_LPC_EN             (1 << 11) /* 0x62/0x66 */
+#define  KBC_LPC_EN            (1 << 10) /* 0x60/0x64 */
+#define  GAMEH_LPC_EN          (1 << 9)  /* 0x208/0x20f */
+#define  GAMEL_LPC_EN          (1 << 8)  /* 0x200/0x207 */
+#define  FDD_LPC_EN            (1 << 3)  /* LPC_IO_DEC[12] */
+#define  LPT_LPC_EN            (1 << 2)  /* LPC_IO_DEC[9:8] */
+#define  COMB_LPC_EN           (1 << 1)  /* LPC_IO_DEC[6:4] */
+#define  COMA_LPC_EN           (1 << 0)  /* LPC_IO_DEC[3:2] */
+#define LPC_GEN1_DEC           0x84 /* LPC IF Generic Decode Range 1 */
+#define LPC_GEN2_DEC           0x88 /* LPC IF Generic Decode Range 2 */
+#define LPC_GEN3_DEC           0x8c /* LPC IF Generic Decode Range 3 */
+#define LPC_GEN4_DEC           0x90 /* LPC IF Generic Decode Range 4 */
+#define LPC_GENX_DEC(x)                (0x84 + 4 * (x))
+
+/* PCI Configuration Space (D31:F1): IDE */
+#define PCH_IDE_DEV            PCI_BDF(0, 0x1f, 1)
+#define PCH_SATA_DEV           PCI_BDF(0, 0x1f, 2)
+#define PCH_SATA2_DEV          PCI_BDF(0, 0x1f, 5)
+
+#define INTR_LN                        0x3c
+#define IDE_TIM_PRI            0x40    /* IDE timings, primary */
+#define   IDE_DECODE_ENABLE    (1 << 15)
+#define   IDE_SITRE            (1 << 14)
+#define   IDE_ISP_5_CLOCKS     (0 << 12)
+#define   IDE_ISP_4_CLOCKS     (1 << 12)
+#define   IDE_ISP_3_CLOCKS     (2 << 12)
+#define   IDE_RCT_4_CLOCKS     (0 <<  8)
+#define   IDE_RCT_3_CLOCKS     (1 <<  8)
+#define   IDE_RCT_2_CLOCKS     (2 <<  8)
+#define   IDE_RCT_1_CLOCKS     (3 <<  8)
+#define   IDE_DTE1             (1 <<  7)
+#define   IDE_PPE1             (1 <<  6)
+#define   IDE_IE1              (1 <<  5)
+#define   IDE_TIME1            (1 <<  4)
+#define   IDE_DTE0             (1 <<  3)
+#define   IDE_PPE0             (1 <<  2)
+#define   IDE_IE0              (1 <<  1)
+#define   IDE_TIME0            (1 <<  0)
+#define IDE_TIM_SEC            0x42    /* IDE timings, secondary */
+
+#define IDE_SDMA_CNT           0x48    /* Synchronous DMA control */
+#define   IDE_SSDE1            (1 <<  3)
+#define   IDE_SSDE0            (1 <<  2)
+#define   IDE_PSDE1            (1 <<  1)
+#define   IDE_PSDE0            (1 <<  0)
+
+#define IDE_SDMA_TIM           0x4a
+
+#define IDE_CONFIG             0x54    /* IDE I/O Configuration Register */
+#define   SIG_MODE_SEC_NORMAL  (0 << 18)
+#define   SIG_MODE_SEC_TRISTATE        (1 << 18)
+#define   SIG_MODE_SEC_DRIVELOW        (2 << 18)
+#define   SIG_MODE_PRI_NORMAL  (0 << 16)
+#define   SIG_MODE_PRI_TRISTATE        (1 << 16)
+#define   SIG_MODE_PRI_DRIVELOW        (2 << 16)
+#define   FAST_SCB1            (1 << 15)
+#define   FAST_SCB0            (1 << 14)
+#define   FAST_PCB1            (1 << 13)
+#define   FAST_PCB0            (1 << 12)
+#define   SCB1                 (1 <<  3)
+#define   SCB0                 (1 <<  2)
+#define   PCB1                 (1 <<  1)
+#define   PCB0                 (1 <<  0)
+
+#define SATA_SIRI              0xa0 /* SATA Indexed Register Index */
+#define SATA_SIRD              0xa4 /* SATA Indexed Register Data */
+#define SATA_SP                        0xd0 /* Scratchpad */
+
+/* SATA IOBP Registers */
+#define SATA_IOBP_SP0G3IR      0xea000151
+#define SATA_IOBP_SP1G3IR      0xea000051
+
+/* PCI Configuration Space (D31:F3): SMBus */
+#define PCH_SMBUS_DEV          PCI_BDF(0, 0x1f, 3)
+#define SMB_BASE               0x20
+#define HOSTC                  0x40
+#define SMB_RCV_SLVA           0x09
+
+/* HOSTC bits */
+#define I2C_EN                 (1 << 2)
+#define SMB_SMI_EN             (1 << 1)
+#define HST_EN                 (1 << 0)
+
+/* SMBus I/O bits. */
+#define SMBHSTSTAT             0x0
+#define SMBHSTCTL              0x2
+#define SMBHSTCMD              0x3
+#define SMBXMITADD             0x4
+#define SMBHSTDAT0             0x5
+#define SMBHSTDAT1             0x6
+#define SMBBLKDAT              0x7
+#define SMBTRNSADD             0x9
+#define SMBSLVDATA             0xa
+#define SMLINK_PIN_CTL         0xe
+#define SMBUS_PIN_CTL          0xf
+
+#define SMBUS_TIMEOUT          (10 * 1000 * 100)
+
+
+/* Root Complex Register Block */
+#define DEFAULT_RCBA           0xfed1c000
+#define RCB_REG(reg)           (DEFAULT_RCBA + (reg))
+
+#define PCH_RCBA_BASE          0xf0
+
+#define VCH            0x0000  /* 32bit */
+#define VCAP1          0x0004  /* 32bit */
+#define VCAP2          0x0008  /* 32bit */
+#define PVC            0x000c  /* 16bit */
+#define PVS            0x000e  /* 16bit */
+
+#define V0CAP          0x0010  /* 32bit */
+#define V0CTL          0x0014  /* 32bit */
+#define V0STS          0x001a  /* 16bit */
+
+#define V1CAP          0x001c  /* 32bit */
+#define V1CTL          0x0020  /* 32bit */
+#define V1STS          0x0026  /* 16bit */
+
+#define RCTCL          0x0100  /* 32bit */
+#define ESD            0x0104  /* 32bit */
+#define ULD            0x0110  /* 32bit */
+#define ULBA           0x0118  /* 64bit */
+
+#define RP1D           0x0120  /* 32bit */
+#define RP1BA          0x0128  /* 64bit */
+#define RP2D           0x0130  /* 32bit */
+#define RP2BA          0x0138  /* 64bit */
+#define RP3D           0x0140  /* 32bit */
+#define RP3BA          0x0148  /* 64bit */
+#define RP4D           0x0150  /* 32bit */
+#define RP4BA          0x0158  /* 64bit */
+#define HDD            0x0160  /* 32bit */
+#define HDBA           0x0168  /* 64bit */
+#define RP5D           0x0170  /* 32bit */
+#define RP5BA          0x0178  /* 64bit */
+#define RP6D           0x0180  /* 32bit */
+#define RP6BA          0x0188  /* 64bit */
+
+#define RPC            0x0400  /* 32bit */
+#define RPFN           0x0404  /* 32bit */
+
+#define TRSR           0x1e00  /*  8bit */
+#define TRCR           0x1e10  /* 64bit */
+#define TWDR           0x1e18  /* 64bit */
+
+#define IOTR0          0x1e80  /* 64bit */
+#define IOTR1          0x1e88  /* 64bit */
+#define IOTR2          0x1e90  /* 64bit */
+#define IOTR3          0x1e98  /* 64bit */
+
+#define TCTL           0x3000  /*  8bit */
+
+#define NOINT          0
+#define INTA           1
+#define INTB           2
+#define INTC           3
+#define INTD           4
+
+#define DIR_IDR                12      /* Interrupt D Pin Offset */
+#define DIR_ICR                8       /* Interrupt C Pin Offset */
+#define DIR_IBR                4       /* Interrupt B Pin Offset */
+#define DIR_IAR                0       /* Interrupt A Pin Offset */
+
+#define PIRQA          0
+#define PIRQB          1
+#define PIRQC          2
+#define PIRQD          3
+#define PIRQE          4
+#define PIRQF          5
+#define PIRQG          6
+#define PIRQH          7
+
+/* IO Buffer Programming */
+#define IOBPIRI                0x2330
+#define IOBPD          0x2334
+#define IOBPS          0x2338
+#define  IOBPS_RW_BX    ((1 << 9)|(1 << 10))
+#define  IOBPS_WRITE_AX        ((1 << 9)|(1 << 10))
+#define  IOBPS_READ_AX ((1 << 8)|(1 << 9)|(1 << 10))
+
+#define D31IP          0x3100  /* 32bit */
+#define D31IP_TTIP     24      /* Thermal Throttle Pin */
+#define D31IP_SIP2     20      /* SATA Pin 2 */
+#define D31IP_SMIP     12      /* SMBUS Pin */
+#define D31IP_SIP      8       /* SATA Pin */
+#define D30IP          0x3104  /* 32bit */
+#define D30IP_PIP      0       /* PCI Bridge Pin */
+#define D29IP          0x3108  /* 32bit */
+#define D29IP_E1P      0       /* EHCI #1 Pin */
+#define D28IP          0x310c  /* 32bit */
+#define D28IP_P8IP     28      /* PCI Express Port 8 */
+#define D28IP_P7IP     24      /* PCI Express Port 7 */
+#define D28IP_P6IP     20      /* PCI Express Port 6 */
+#define D28IP_P5IP     16      /* PCI Express Port 5 */
+#define D28IP_P4IP     12      /* PCI Express Port 4 */
+#define D28IP_P3IP     8       /* PCI Express Port 3 */
+#define D28IP_P2IP     4       /* PCI Express Port 2 */
+#define D28IP_P1IP     0       /* PCI Express Port 1 */
+#define D27IP          0x3110  /* 32bit */
+#define D27IP_ZIP      0       /* HD Audio Pin */
+#define D26IP          0x3114  /* 32bit */
+#define D26IP_E2P      0       /* EHCI #2 Pin */
+#define D25IP          0x3118  /* 32bit */
+#define D25IP_LIP      0       /* GbE LAN Pin */
+#define D22IP          0x3124  /* 32bit */
+#define D22IP_KTIP     12      /* KT Pin */
+#define D22IP_IDERIP   8       /* IDE-R Pin */
+#define D22IP_MEI2IP   4       /* MEI #2 Pin */
+#define D22IP_MEI1IP   0       /* MEI #1 Pin */
+#define D20IP          0x3128  /* 32bit */
+#define D20IP_XHCIIP   0
+#define D31IR          0x3140  /* 16bit */
+#define D30IR          0x3142  /* 16bit */
+#define D29IR          0x3144  /* 16bit */
+#define D28IR          0x3146  /* 16bit */
+#define D27IR          0x3148  /* 16bit */
+#define D26IR          0x314c  /* 16bit */
+#define D25IR          0x3150  /* 16bit */
+#define D22IR          0x315c  /* 16bit */
+#define D20IR          0x3160  /* 16bit */
+#define OIC            0x31fe  /* 16bit */
+
+#define SPI_FREQ_SWSEQ 0x3893
+#define SPI_DESC_COMP0 0x38b0
+#define SPI_FREQ_WR_ERA        0x38b4
+#define SOFT_RESET_CTRL 0x38f4
+#define SOFT_RESET_DATA 0x38f8
+
+#define DIR_ROUTE(a, b, c, d) \
+               (((d) << DIR_IDR) | ((c) << DIR_ICR) | \
+                       ((b) << DIR_IBR) | ((a) << DIR_IAR))
+
+#define RC             0x3400  /* 32bit */
+#define HPTC           0x3404  /* 32bit */
+#define GCS            0x3410  /* 32bit */
+#define BUC            0x3414  /* 32bit */
+#define PCH_DISABLE_GBE                (1 << 5)
+#define FD             0x3418  /* 32bit */
+#define DISPBDF                0x3424  /* 16bit */
+#define FD2            0x3428  /* 32bit */
+#define CG             0x341c  /* 32bit */
+
+/* Function Disable 1 RCBA 0x3418 */
+#define PCH_DISABLE_ALWAYS     ((1 << 0)|(1 << 26))
+#define PCH_DISABLE_P2P                (1 << 1)
+#define PCH_DISABLE_SATA1      (1 << 2)
+#define PCH_DISABLE_SMBUS      (1 << 3)
+#define PCH_DISABLE_HD_AUDIO   (1 << 4)
+#define PCH_DISABLE_EHCI2      (1 << 13)
+#define PCH_DISABLE_LPC                (1 << 14)
+#define PCH_DISABLE_EHCI1      (1 << 15)
+#define PCH_DISABLE_PCIE(x)    (1 << (16 + x))
+#define PCH_DISABLE_THERMAL    (1 << 24)
+#define PCH_DISABLE_SATA2      (1 << 25)
+#define PCH_DISABLE_XHCI       (1 << 27)
+
+/* Function Disable 2 RCBA 0x3428 */
+#define PCH_DISABLE_KT         (1 << 4)
+#define PCH_DISABLE_IDER       (1 << 3)
+#define PCH_DISABLE_MEI2       (1 << 2)
+#define PCH_DISABLE_MEI1       (1 << 1)
+#define PCH_ENABLE_DBDF                (1 << 0)
+
+/* ICH7 GPIOBASE */
+#define GPIO_USE_SEL   0x00
+#define GP_IO_SEL      0x04
+#define GP_LVL         0x0c
+#define GPO_BLINK      0x18
+#define GPI_INV                0x2c
+#define GPIO_USE_SEL2  0x30
+#define GP_IO_SEL2     0x34
+#define GP_LVL2                0x38
+#define GPIO_USE_SEL3  0x40
+#define GP_IO_SEL3     0x44
+#define GP_LVL3                0x48
+#define GP_RST_SEL1    0x60
+#define GP_RST_SEL2    0x64
+#define GP_RST_SEL3    0x68
+
+/* ICH7 PMBASE */
+#define PM1_STS                0x00
+#define   WAK_STS      (1 << 15)
+#define   PCIEXPWAK_STS        (1 << 14)
+#define   PRBTNOR_STS  (1 << 11)
+#define   RTC_STS      (1 << 10)
+#define   PWRBTN_STS   (1 << 8)
+#define   GBL_STS      (1 << 5)
+#define   BM_STS       (1 << 4)
+#define   TMROF_STS    (1 << 0)
+#define PM1_EN         0x02
+#define   PCIEXPWAK_DIS        (1 << 14)
+#define   RTC_EN       (1 << 10)
+#define   PWRBTN_EN    (1 << 8)
+#define   GBL_EN       (1 << 5)
+#define   TMROF_EN     (1 << 0)
+#define PM1_CNT                0x04
+#define   SLP_EN       (1 << 13)
+#define   SLP_TYP      (7 << 10)
+#define    SLP_TYP_S0  0
+#define    SLP_TYP_S1  1
+#define    SLP_TYP_S3  5
+#define    SLP_TYP_S4  6
+#define    SLP_TYP_S5  7
+#define   GBL_RLS      (1 << 2)
+#define   BM_RLD       (1 << 1)
+#define   SCI_EN       (1 << 0)
+#define PM1_TMR                0x08
+#define PROC_CNT       0x10
+#define LV2            0x14
+#define LV3            0x15
+#define LV4            0x16
+#define PM2_CNT                0x50 /* mobile only */
+#define GPE0_STS       0x20
+#define   PME_B0_STS   (1 << 13)
+#define   PME_STS      (1 << 11)
+#define   BATLOW_STS   (1 << 10)
+#define   PCI_EXP_STS  (1 << 9)
+#define   RI_STS       (1 << 8)
+#define   SMB_WAK_STS  (1 << 7)
+#define   TCOSCI_STS   (1 << 6)
+#define   SWGPE_STS    (1 << 2)
+#define   HOT_PLUG_STS (1 << 1)
+#define GPE0_EN                0x28
+#define   PME_B0_EN    (1 << 13)
+#define   PME_EN       (1 << 11)
+#define   TCOSCI_EN    (1 << 6)
+#define SMI_EN         0x30
+#define   INTEL_USB2_EN         (1 << 18) /* Intel-Specific USB2 SMI logic */
+#define   LEGACY_USB2_EN (1 << 17) /* Legacy USB2 SMI logic */
+#define   PERIODIC_EN   (1 << 14) /* SMI on PERIODIC_STS in SMI_STS */
+#define   TCO_EN        (1 << 13) /* Enable TCO Logic (BIOSWE et al) */
+#define   MCSMI_EN      (1 << 11) /* Trap microcontroller range access */
+#define   BIOS_RLS      (1 <<  7) /* asserts SCI on bit set */
+#define   SWSMI_TMR_EN  (1 <<  6) /* start software smi timer on bit set */
+#define   APMC_EN       (1 <<  5) /* Writes to APM_CNT cause SMI# */
+#define   SLP_SMI_EN    (1 <<  4) /* Write SLP_EN in PM1_CNT asserts SMI# */
+#define   LEGACY_USB_EN  (1 <<  3) /* Legacy USB circuit SMI logic */
+#define   BIOS_EN       (1 <<  2) /* Assert SMI# on setting GBL_RLS bit */
+#define   EOS           (1 <<  1) /* End of SMI (deassert SMI#) */
+#define   GBL_SMI_EN    (1 <<  0) /* SMI# generation at all? */
+#define SMI_STS                0x34
+#define ALT_GP_SMI_EN  0x38
+#define ALT_GP_SMI_STS 0x3a
+#define GPE_CNTL       0x42
+#define DEVACT_STS     0x44
+#define SS_CNT         0x50
+#define C3_RES         0x54
+#define TCO1_STS       0x64
+#define   DMISCI_STS   (1 << 9)
+#define TCO2_STS       0x66
+
+int lpc_init(struct pci_controller *hose, pci_dev_t dev);
+void lpc_enable(pci_dev_t dev);
+
+/**
+ * lpc_early_init() - set up LPC serial ports and other early things
+ *
+ * @blob:      Device tree blob
+ * @node:      Offset of LPC node
+ * @dev:       PCH PCI device containing the LPC
+ * @return 0 if OK, -ve on error
+ */
+int lpc_early_init(const void *blob, int node, pci_dev_t dev);
+
+#endif
diff --git a/arch/x86/include/asm/arch-ivybridge/pei_data.h b/arch/x86/include/asm/arch-ivybridge/pei_data.h
new file mode 100644 (file)
index 0000000..9453336
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2011, Google Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef ASM_ARCH_PEI_DATA_H
+#define ASM_ARCH_PEI_DATA_H
+
+#include <linux/linkage.h>
+
+struct pch_usb3_controller_settings {
+       /* 0: Disable, 1: Enable, 2: Auto, 3: Smart Auto */
+       uint16_t mode;
+       /* 4 bit mask, 1: switchable, 0: not switchable */
+       uint16_t hs_port_switch_mask;
+       /* 0: No xHCI preOS driver, 1: xHCI preOS driver */
+       uint16_t preboot_support;
+       /* 0: Disable, 1: Enable */
+       uint16_t xhci_streams;
+};
+
+typedef asmlinkage void (*tx_byte_func)(unsigned char byte);
+
+#define PEI_VERSION 6
+
+struct __packed pei_data {
+       uint32_t pei_version;
+       uint32_t mchbar;
+       uint32_t dmibar;
+       uint32_t epbar;
+       uint32_t pciexbar;
+       uint16_t smbusbar;
+       uint32_t wdbbar;
+       uint32_t wdbsize;
+       uint32_t hpet_address;
+       uint32_t rcba;
+       uint32_t pmbase;
+       uint32_t gpiobase;
+       uint32_t thermalbase;
+       uint32_t system_type; /* 0 Mobile, 1 Desktop/Server */
+       uint32_t tseg_size;
+       uint8_t spd_addresses[4];
+       uint8_t ts_addresses[4];
+       int boot_mode;
+       int ec_present;
+       int gbe_enable;
+       /*
+        * 0 = leave channel enabled
+        * 1 = disable dimm 0 on channel
+        * 2 = disable dimm 1 on channel
+        * 3 = disable dimm 0+1 on channel
+        */
+       int dimm_channel0_disabled;
+       int dimm_channel1_disabled;
+       /* Seed values saved in CMOS */
+       uint32_t scrambler_seed;
+       uint32_t scrambler_seed_s3;
+       /* Data read from flash and passed into MRC */
+       unsigned char *mrc_input;
+       unsigned int mrc_input_len;
+       /* Data from MRC that should be saved to flash */
+       unsigned char *mrc_output;
+       unsigned int mrc_output_len;
+       /*
+        * Max frequency DDR3 could be ran at. Could be one of four values:
+        * 800, 1067, 1333, 1600
+        */
+       uint32_t max_ddr3_freq;
+       /*
+        * USB Port Configuration:
+        *  [0] = enable
+        *  [1] = overcurrent pin
+        *  [2] = length
+        *
+        * Ports 0-7 can be mapped to OC0-OC3
+        * Ports 8-13 can be mapped to OC4-OC7
+        *
+        * Port Length
+        *  MOBILE:
+        *   < 0x050 = Setting 1 (back panel, 1-5in, lowest tx amplitude)
+        *   < 0x140 = Setting 2 (back panel, 5-14in, highest tx amplitude)
+        *  DESKTOP:
+        *   < 0x080 = Setting 1 (front/back panel, <8in, lowest tx amplitude)
+        *   < 0x130 = Setting 2 (back panel, 8-13in, higher tx amplitude)
+        *   < 0x150 = Setting 3 (back panel, 13-15in, higest tx amplitude)
+        */
+       uint16_t usb_port_config[16][3];
+       /* See the usb3 struct above for details */
+       struct pch_usb3_controller_settings usb3;
+       /*
+        * SPD data array for onboard RAM. Specify address 0xf0,
+        * 0xf1, 0xf2, 0xf3 to index one of the 4 slots in
+        * spd_address for a given "DIMM".
+        */
+       uint8_t spd_data[4][256];
+       tx_byte_func tx_byte;
+       int ddr3lv_support;
+       /*
+        * pcie_init needs to be set to 1 to have the system agent initialise
+        * PCIe. Note: This should only be required if your system has Gen3
+        * devices and it will increase your boot time by at least 100ms.
+        */
+       int pcie_init;
+       /*
+        * N mode functionality. Leave this setting at 0.
+        * 0 Auto
+        * 1 1N
+        * 2 2N
+        */
+       int nmode;
+       /*
+        * DDR refresh rate config. JEDEC Standard No.21-C Annex K allows
+        * for DIMM SPD data to specify whether double-rate is required for
+        * extended operating temperature range.
+        * 0 Enable double rate based upon temperature thresholds
+        * 1 Normal rate
+        * 2 Always enable double rate
+        */
+       int ddr_refresh_rate_config;
+};
+
+#endif
diff --git a/arch/x86/include/asm/arch-ivybridge/sandybridge.h b/arch/x86/include/asm/arch-ivybridge/sandybridge.h
new file mode 100644 (file)
index 0000000..cf7457f
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * From Coreboot file of the same name
+ *
+ * Copyright (C) 2007-2008 coresystems GmbH
+ * Copyright (C) 2011 Google Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ACH_ASM_SANDYBRIDGE_H
+#define _ACH_ASM_SANDYBRIDGE_H
+
+/* Chipset types */
+#define SANDYBRIDGE_MOBILE     0
+#define SANDYBRIDGE_DESKTOP    1
+#define SANDYBRIDGE_SERVER     2
+
+/* Device ID for SandyBridge and IvyBridge */
+#define BASE_REV_SNB   0x00
+#define BASE_REV_IVB   0x50
+#define BASE_REV_MASK  0x50
+
+/* SandyBridge CPU stepping */
+#define SNB_STEP_D0    (BASE_REV_SNB + 5) /* Also J0 */
+#define SNB_STEP_D1    (BASE_REV_SNB + 6)
+#define SNB_STEP_D2    (BASE_REV_SNB + 7) /* Also J1/Q0 */
+
+/* IvyBridge CPU stepping */
+#define IVB_STEP_A0    (BASE_REV_IVB + 0)
+#define IVB_STEP_B0    (BASE_REV_IVB + 2)
+#define IVB_STEP_C0    (BASE_REV_IVB + 4)
+#define IVB_STEP_K0    (BASE_REV_IVB + 5)
+#define IVB_STEP_D0    (BASE_REV_IVB + 6)
+
+/* Intel Enhanced Debug region must be 4MB */
+#define IED_SIZE       0x400000
+
+/* Northbridge BARs */
+#define DEFAULT_MCHBAR         0xfed10000      /* 16 KB */
+#define DEFAULT_DMIBAR         0xfed18000      /* 4 KB */
+#define DEFAULT_EPBAR          0xfed19000      /* 4 KB */
+#define DEFAULT_RCBABASE       0xfed1c000
+/* 4 KB per PCIe device */
+#define DEFAULT_PCIEXBAR       CONFIG_MMCONF_BASE_ADDRESS
+
+/* Device 0:0.0 PCI configuration space (Host Bridge) */
+#define EPBAR          0x40
+#define MCHBAR         0x48
+#define PCIEXBAR       0x60
+#define DMIBAR         0x68
+#define X60BAR         0x60
+
+#define GGC            0x50                    /* GMCH Graphics Control */
+
+#define DEVEN          0x54                    /* Device Enable */
+#define  DEVEN_PEG60   (1 << 13)
+#define  DEVEN_IGD     (1 << 4)
+#define  DEVEN_PEG10   (1 << 3)
+#define  DEVEN_PEG11   (1 << 2)
+#define  DEVEN_PEG12   (1 << 1)
+#define  DEVEN_HOST    (1 << 0)
+
+#define PAM0           0x80
+#define PAM1           0x81
+#define PAM2           0x82
+#define PAM3           0x83
+#define PAM4           0x84
+#define PAM5           0x85
+#define PAM6           0x86
+
+#define LAC            0x87    /* Legacy Access Control */
+#define SMRAM          0x88    /* System Management RAM Control */
+#define  D_OPEN                (1 << 6)
+#define  D_CLS         (1 << 5)
+#define  D_LCK         (1 << 4)
+#define  G_SMRAME      (1 << 3)
+#define  C_BASE_SEG    ((0 << 2) | (1 << 1) | (0 << 0))
+
+#define TOM            0xa0
+#define TOUUD          0xa8    /* Top of Upper Usable DRAM */
+#define TSEG           0xb8    /* TSEG base */
+#define TOLUD          0xbc    /* Top of Low Used Memory */
+
+#define SKPAD          0xdc    /* Scratchpad Data */
+
+/* Device 0:1.0 PCI configuration space (PCI Express) */
+#define BCTRL1         0x3e    /* 16bit */
+
+/* Device 0:2.0 PCI configuration space (Graphics Device) */
+
+#define MSAC           0x62    /* Multi Size Aperture Control */
+#define SWSCI          0xe8    /* SWSCI  enable */
+#define ASLS           0xfc    /* OpRegion Base */
+
+/*
+ * MCHBAR
+ */
+#define MCHBAR_REG(reg)                (DEFAULT_MCHBAR + (reg))
+
+#define SSKPD          0x5d14  /* 16bit (scratchpad) */
+#define BIOS_RESET_CPL 0x5da8  /* 8bit */
+
+/*
+ * DMIBAR
+ */
+
+#define DMIBAR_REG(x)  (DEFAULT_DMIBAR + x)
+
+int bridge_silicon_revision(void);
+
+void northbridge_enable(pci_dev_t dev);
+void northbridge_init(pci_dev_t dev);
+
+void report_platform_info(void);
+
+void sandybridge_early_init(int chipset_type);
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_api.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_api.h
new file mode 100644 (file)
index 0000000..a9d7156
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_API_H__
+#define __FSP_API_H__
+
+/*
+ * FspInit continuation function prototype.
+ * Control will be returned to this callback function after FspInit API call.
+ */
+typedef void (*fsp_continuation_f)(u32 status, void *hob_list);
+
+struct fsp_init_params {
+       /* Non-volatile storage buffer pointer */
+       void                    *nvs_buf;
+       /* Runtime buffer pointer */
+       void                    *rt_buf;
+       /* Continuation function address */
+       fsp_continuation_f      continuation;
+};
+
+struct common_buf {
+       /*
+        * Stack top pointer used by the bootloader. The new stack frame will be
+        * set up at this location after FspInit API call.
+        */
+       u32     *stack_top;
+       u32     boot_mode;      /* Current system boot mode */
+       void    *upd_data;      /* User platform configuraiton data region */
+       u32     reserved[7];    /* Reserved */
+};
+
+enum fsp_phase {
+       /* Notification code for post PCI enuermation */
+       INIT_PHASE_PCI  = 0x20,
+       /* Notification code before transfering control to the payload */
+       INIT_PHASE_BOOT = 0x40
+};
+
+struct fsp_notify_params {
+       /* Notification phase used for NotifyPhase API */
+       enum fsp_phase  phase;
+};
+
+/* FspInit API function prototype */
+typedef u32 (*fsp_init_f)(struct fsp_init_params *params);
+
+/* FspNotify API function prototype */
+typedef u32 (*fsp_notify_f)(struct fsp_notify_params *params);
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_bootmode.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_bootmode.h
new file mode 100644 (file)
index 0000000..c3f8b49
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_BOOT_MODE_H__
+#define __FSP_BOOT_MODE_H__
+
+/* 0x21 - 0xf..f are reserved */
+#define BOOT_FULL_CONFIG               0x00
+#define BOOT_MINIMAL_CONFIG            0x01
+#define BOOT_NO_CONFIG_CHANGES         0x02
+#define BOOT_FULL_CONFIG_PLUS_DIAG     0x03
+#define BOOT_DEFAULT_SETTINGS          0x04
+#define BOOT_ON_S4_RESUME              0x05
+#define BOOT_ON_S5_RESUME              0x06
+#define BOOT_ON_S2_RESUME              0x10
+#define BOOT_ON_S3_RESUME              0x11
+#define BOOT_ON_FLASH_UPDATE           0x12
+#define BOOT_IN_RECOVERY_MODE          0x20
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_ffs.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_ffs.h
new file mode 100644 (file)
index 0000000..eaec2b4
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_FFS_H__
+#define __FSP_FFS_H__
+
+/* Used to verify the integrity of the file */
+union __packed ffs_integrity {
+       struct {
+               /*
+                * The IntegrityCheck.checksum.header field is an 8-bit
+                * checksum of the file header. The State and
+                * IntegrityCheck.checksum.file fields are assumed to be zero
+                * and the checksum is calculated such that the entire header
+                * sums to zero.
+                */
+               u8      header;
+               /*
+                * If the FFS_ATTRIB_CHECKSUM (see definition below) bit of
+                * the Attributes field is set to one, the
+                * IntegrityCheck.checksum.file field is an 8-bit checksum of
+                * the file data. If the FFS_ATTRIB_CHECKSUM bit of the
+                * Attributes field is cleared to zero, the
+                * IntegrityCheck.checksum.file field must be initialized with
+                * a value of 0xAA. The IntegrityCheck.checksum.file field is
+                * valid any time the EFI_FILE_DATA_VALID bit is set in the
+                * State field.
+                */
+               u8      file;
+       } checksum;
+
+       /* This is the full 16 bits of the IntegrityCheck field */
+       u16     checksum16;
+};
+
+/*
+ * Each file begins with the header that describe the
+ * contents and state of the files.
+ */
+struct __packed ffs_file_header {
+       /*
+        * This GUID is the file name.
+        * It is used to uniquely identify the file.
+        */
+       struct efi_guid         name;
+       /* Used to verify the integrity of the file */
+       union ffs_integrity     integrity;
+       /* Identifies the type of file */
+       u8                      type;
+       /* Declares various file attribute bits */
+       u8                      attr;
+       /* The length of the file in bytes, including the FFS header */
+       u8                      size[3];
+       /*
+        * Used to track the state of the file throughout the life of
+        * the file from creation to deletion.
+        */
+       u8                      state;
+};
+
+struct __packed ffs_file_header2 {
+       /*
+        * This GUID is the file name. It is used to uniquely identify the file.
+        * There may be only one instance of a file with the file name GUID of
+        * Name in any given firmware volume, except if the file type is
+        * EFI_FV_FILE_TYPE_FFS_PAD.
+        */
+       struct efi_guid         name;
+       /* Used to verify the integrity of the file */
+       union ffs_integrity     integrity;
+       /* Identifies the type of file */
+       u8                      type;
+       /* Declares various file attribute bits */
+       u8                      attr;
+       /*
+        * The length of the file in bytes, including the FFS header.
+        * The length of the file data is either
+        * (size - sizeof(struct ffs_file_header)). This calculation means a
+        * zero-length file has a size of 24 bytes, which is
+        * sizeof(struct ffs_file_header). Size is not required to be a
+        * multiple of 8 bytes. Given a file F, the next file header is located
+        * at the next 8-byte aligned firmware volume offset following the last
+        * byte of the file F.
+        */
+       u8                      size[3];
+       /*
+        * Used to track the state of the file throughout the life of
+        * the file from creation to deletion.
+        */
+       u8                      state;
+       /*
+        * If FFS_ATTRIB_LARGE_FILE is set in attr, then ext_size exists
+        * and size must be set to zero.
+        * If FFS_ATTRIB_LARGE_FILE is not set then
+        * struct ffs_file_header is used.
+        */
+       u32                     ext_size;
+};
+
+/*
+ * Pseudo type. It is used as a wild card when retrieving sections.
+ * The section type EFI_SECTION_ALL matches all section types.
+ */
+#define EFI_SECTION_ALL                                0x00
+
+/* Encapsulation section Type values */
+#define EFI_SECTION_COMPRESSION                        0x01
+#define EFI_SECTION_GUID_DEFINED               0x02
+#define EFI_SECTION_DISPOSABLE                 0x03
+
+/* Leaf section Type values */
+#define EFI_SECTION_PE32                       0x10
+#define EFI_SECTION_PIC                                0x11
+#define EFI_SECTION_TE                         0x12
+#define EFI_SECTION_DXE_DEPEX                  0x13
+#define EFI_SECTION_VERSION                    0x14
+#define EFI_SECTION_USER_INTERFACE             0x15
+#define EFI_SECTION_COMPATIBILITY16            0x16
+#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE      0x17
+#define EFI_SECTION_FREEFORM_SUBTYPE_GUID      0x18
+#define EFI_SECTION_RAW                                0x19
+#define EFI_SECTION_PEI_DEPEX                  0x1B
+#define EFI_SECTION_SMM_DEPEX                  0x1C
+
+/* Common section header */
+struct __packed raw_section {
+       /*
+        * A 24-bit unsigned integer that contains the total size of
+        * the section in bytes, including the EFI_COMMON_SECTION_HEADER.
+        */
+       u8      size[3];
+       u8      type;
+};
+
+struct __packed raw_section2 {
+       /*
+        * A 24-bit unsigned integer that contains the total size of
+        * the section in bytes, including the EFI_COMMON_SECTION_HEADER.
+        */
+       u8      size[3];
+       u8      type;
+       /*
+        * If size is 0xFFFFFF, then ext_size contains the size of
+        * the section. If size is not equal to 0xFFFFFF, then this
+        * field does not exist.
+        */
+       u32     ext_size;
+};
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_fv.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_fv.h
new file mode 100644 (file)
index 0000000..a024451
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_FV___
+#define __FSP_FV___
+
+/* Value of EFI_FV_FILE_ATTRIBUTES */
+#define EFI_FV_FILE_ATTR_ALIGNMENT     0x0000001F
+#define EFI_FV_FILE_ATTR_FIXED         0x00000100
+#define EFI_FV_FILE_ATTR_MEMORY_MAPPED 0x00000200
+
+/* Attributes bit definitions */
+#define EFI_FVB2_READ_DISABLED_CAP     0x00000001
+#define EFI_FVB2_READ_ENABLED_CAP      0x00000002
+#define EFI_FVB2_READ_STATUS           0x00000004
+#define EFI_FVB2_WRITE_DISABLED_CAP    0x00000008
+#define EFI_FVB2_WRITE_ENABLED_CAP     0x00000010
+#define EFI_FVB2_WRITE_STATUS          0x00000020
+#define EFI_FVB2_LOCK_CAP              0x00000040
+#define EFI_FVB2_LOCK_STATUS           0x00000080
+#define EFI_FVB2_STICKY_WRITE          0x00000200
+#define EFI_FVB2_MEMORY_MAPPED         0x00000400
+#define EFI_FVB2_ERASE_POLARITY                0x00000800
+#define EFI_FVB2_READ_LOCK_CAP         0x00001000
+#define EFI_FVB2_READ_LOCK_STATUS      0x00002000
+#define EFI_FVB2_WRITE_LOCK_CAP                0x00004000
+#define EFI_FVB2_WRITE_LOCK_STATUS     0x00008000
+#define EFI_FVB2_ALIGNMENT             0x001F0000
+#define EFI_FVB2_ALIGNMENT_1           0x00000000
+#define EFI_FVB2_ALIGNMENT_2           0x00010000
+#define EFI_FVB2_ALIGNMENT_4           0x00020000
+#define EFI_FVB2_ALIGNMENT_8           0x00030000
+#define EFI_FVB2_ALIGNMENT_16          0x00040000
+#define EFI_FVB2_ALIGNMENT_32          0x00050000
+#define EFI_FVB2_ALIGNMENT_64          0x00060000
+#define EFI_FVB2_ALIGNMENT_128         0x00070000
+#define EFI_FVB2_ALIGNMENT_256         0x00080000
+#define EFI_FVB2_ALIGNMENT_512         0x00090000
+#define EFI_FVB2_ALIGNMENT_1K          0x000A0000
+#define EFI_FVB2_ALIGNMENT_2K          0x000B0000
+#define EFI_FVB2_ALIGNMENT_4K          0x000C0000
+#define EFI_FVB2_ALIGNMENT_8K          0x000D0000
+#define EFI_FVB2_ALIGNMENT_16K         0x000E0000
+#define EFI_FVB2_ALIGNMENT_32K         0x000F0000
+#define EFI_FVB2_ALIGNMENT_64K         0x00100000
+#define EFI_FVB2_ALIGNMENT_128K                0x00110000
+#define EFI_FVB2_ALIGNMENT_256K                0x00120000
+#define EFI_FVB2_ALIGNMENT_512K                0x00130000
+#define EFI_FVB2_ALIGNMENT_1M          0x00140000
+#define EFI_FVB2_ALIGNMENT_2M          0x00150000
+#define EFI_FVB2_ALIGNMENT_4M          0x00160000
+#define EFI_FVB2_ALIGNMENT_8M          0x00170000
+#define EFI_FVB2_ALIGNMENT_16M         0x00180000
+#define EFI_FVB2_ALIGNMENT_32M         0x00190000
+#define EFI_FVB2_ALIGNMENT_64M         0x001A0000
+#define EFI_FVB2_ALIGNMENT_128M                0x001B0000
+#define EFI_FVB2_ALIGNMENT_256M                0x001C0000
+#define EFI_FVB2_ALIGNMENT_512M                0x001D0000
+#define EFI_FVB2_ALIGNMENT_1G          0x001E0000
+#define EFI_FVB2_ALIGNMENT_2G          0x001F0000
+
+struct fv_blkmap_entry {
+       /* The number of sequential blocks which are of the same size */
+       u32     num_blocks;
+       /* The size of the blocks */
+       u32     length;
+};
+
+/* Describes the features and layout of the firmware volume */
+struct fv_header {
+       /*
+        * The first 16 bytes are reserved to allow for the reset vector of
+        * processors whose reset vector is at address 0.
+        */
+       u8                      zero_vec[16];
+       /*
+        * Declares the file system with which the firmware volume
+        * is formatted.
+        */
+       struct efi_guid         fs_guid;
+       /*
+        * Length in bytes of the complete firmware volume, including
+        * the header.
+        */
+       u64                     fv_len;
+       /* Set to EFI_FVH_SIGNATURE */
+       u32                     sign;
+       /*
+        * Declares capabilities and power-on defaults for the firmware
+        * volume.
+        */
+       u32                     attr;
+       /* Length in bytes of the complete firmware volume header */
+       u16                     hdr_len;
+       /*
+        * A 16-bit checksum of the firmware volume header.
+        * A valid header sums to zero.
+        */
+       u16                     checksum;
+       /*
+        * Offset, relative to the start of the header, of the extended
+        * header (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is
+        * no extended header.
+        */
+       u16                     ext_hdr_off;
+       /* This field must always be set to zero */
+       u8                      reserved[1];
+       /*
+        * Set to 2. Future versions of this specification may define new
+        * header fields and will increment the Revision field accordingly.
+        */
+       u8                      rev;
+       /*
+        * An array of run-length encoded FvBlockMapEntry structures.
+        * The array is terminated with an entry of {0,0}.
+        */
+       struct fv_blkmap_entry  block_map[1];
+};
+
+#define EFI_FVH_SIGNATURE      SIGNATURE_32('_', 'F', 'V', 'H')
+
+/* Firmware Volume Header Revision definition */
+#define EFI_FVH_REVISION       0x02
+
+/* Extension header pointed by ExtHeaderOffset of volume header */
+struct fv_ext_header {
+       /* firmware volume name */
+       struct efi_guid         fv_name;
+       /* Size of the rest of the extension header including this structure */
+       u32                     ext_hdr_size;
+};
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_hob.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_hob.h
new file mode 100644 (file)
index 0000000..6cca7f5
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_HOB_H__
+#define __FSP_HOB_H__
+
+/* Type of HOB Header */
+#define HOB_TYPE_MEM_ALLOC     0x0002
+#define HOB_TYPE_RES_DESC      0x0003
+#define HOB_TYPE_GUID_EXT      0x0004
+#define HOB_TYPE_UNUSED                0xFFFE
+#define HOB_TYPE_EOH           0xFFFF
+
+/*
+ * Describes the format and size of the data inside the HOB.
+ * All HOBs must contain this generic HOB header.
+ */
+struct hob_header {
+       u16     type;           /* HOB type */
+       u16     len;            /* HOB length */
+       u32     reserved;       /* always zero */
+};
+
+/* Enumeration of memory types introduced in UEFI */
+enum efi_mem_type {
+       EFI_RESERVED_MEMORY_TYPE,
+       /*
+        * The code portions of a loaded application.
+        * (Note that UEFI OS loaders are UEFI applications.)
+        */
+       EFI_LOADER_CODE,
+       /*
+        * The data portions of a loaded application and
+        * the default data allocation type used by an application
+        * to allocate pool memory.
+        */
+       EFI_LOADER_DATA,
+       /* The code portions of a loaded Boot Services Driver */
+       EFI_BOOT_SERVICES_CODE,
+       /*
+        * The data portions of a loaded Boot Serves Driver and
+        * the default data allocation type used by a Boot Services
+        * Driver to allocate pool memory.
+        */
+       EFI_BOOT_SERVICES_DATA,
+       /* The code portions of a loaded Runtime Services Driver */
+       EFI_RUNTIME_SERVICES_CODE,
+       /*
+        * The data portions of a loaded Runtime Services Driver and
+        * the default data allocation type used by a Runtime Services
+        * Driver to allocate pool memory.
+        */
+       EFI_RUNTIME_SERVICES_DATA,
+       /* Free (unallocated) memory */
+       EFI_CONVENTIONAL_MEMORY,
+       /* Memory in which errors have been detected */
+       EFI_UNUSABLE_MEMORY,
+       /* Memory that holds the ACPI tables */
+       EFI_ACPI_RECLAIM_MEMORY,
+       /* Address space reserved for use by the firmware */
+       EFI_ACPI_MEMORY_NVS,
+       /*
+        * Used by system firmware to request that a memory-mapped IO region
+        * be mapped by the OS to a virtual address so it can be accessed by
+        * EFI runtime services.
+        */
+       EFI_MMAP_IO,
+       /*
+        * System memory-mapped IO region that is used to translate
+        * memory cycles to IO cycles by the processor.
+        */
+       EFI_MMAP_IO_PORT,
+       /*
+        * Address space reserved by the firmware for code that is
+        * part of the processor.
+        */
+       EFI_PAL_CODE,
+       EFI_MAX_MEMORY_TYPE
+};
+
+/*
+ * Describes all memory ranges used during the HOB producer phase that
+ * exist outside the HOB list. This HOB type describes how memory is used,
+ * not the physical attributes of memory.
+ */
+struct hob_mem_alloc {
+       struct hob_header       hdr;
+       /*
+        * A GUID that defines the memory allocation region's type and purpose,
+        * as well as other fields within the memory allocation HOB. This GUID
+        * is used to define the additional data within the HOB that may be
+        * present for the memory allocation HOB. Type efi_guid is defined in
+        * InstallProtocolInterface() in the UEFI 2.0 specification.
+        */
+       struct efi_guid         name;
+       /*
+        * The base address of memory allocated by this HOB.
+        * Type phys_addr_t is defined in AllocatePages() in the UEFI 2.0
+        * specification.
+        */
+       phys_addr_t             mem_base;
+       /* The length in bytes of memory allocated by this HOB */
+       phys_size_t             mem_len;
+       /*
+        * Defines the type of memory allocated by this HOB.
+        * The memory type definition follows the EFI_MEMORY_TYPE definition.
+        * Type EFI_MEMORY_TYPE is defined in AllocatePages() in the UEFI 2.0
+        * specification.
+        */
+       enum efi_mem_type       mem_type;
+       /* padding */
+       u8                      reserved[4];
+};
+
+/* Value of ResourceType in HOB_RES_DESC */
+#define RES_SYS_MEM            0x00000000
+#define RES_MMAP_IO            0x00000001
+#define RES_IO                 0x00000002
+#define RES_FW_DEVICE          0x00000003
+#define RES_MMAP_IO_PORT       0x00000004
+#define RES_MEM_RESERVED       0x00000005
+#define RES_IO_RESERVED                0x00000006
+#define RES_MAX_MEM_TYPE       0x00000007
+
+/*
+ * These types can be ORed together as needed.
+ *
+ * The first three enumerations describe settings
+ * The rest of the settings describe capabilities
+ */
+#define RES_ATTR_PRESENT                       0x00000001
+#define RES_ATTR_INITIALIZED                   0x00000002
+#define RES_ATTR_TESTED                                0x00000004
+#define RES_ATTR_SINGLE_BIT_ECC                        0x00000008
+#define RES_ATTR_MULTIPLE_BIT_ECC              0x00000010
+#define RES_ATTR_ECC_RESERVED_1                        0x00000020
+#define RES_ATTR_ECC_RESERVED_2                        0x00000040
+#define RES_ATTR_READ_PROTECTED                        0x00000080
+#define RES_ATTR_WRITE_PROTECTED               0x00000100
+#define RES_ATTR_EXECUTION_PROTECTED           0x00000200
+#define RES_ATTR_UNCACHEABLE                   0x00000400
+#define RES_ATTR_WRITE_COMBINEABLE             0x00000800
+#define RES_ATTR_WRITE_THROUGH_CACHEABLE       0x00001000
+#define RES_ATTR_WRITE_BACK_CACHEABLE          0x00002000
+#define RES_ATTR_16_BIT_IO                     0x00004000
+#define RES_ATTR_32_BIT_IO                     0x00008000
+#define RES_ATTR_64_BIT_IO                     0x00010000
+#define RES_ATTR_UNCACHED_EXPORTED             0x00020000
+
+/*
+ * Describes the resource properties of all fixed, nonrelocatable resource
+ * ranges found on the processor host bus during the HOB producer phase.
+ */
+struct hob_res_desc {
+       struct hob_header       hdr;
+       /*
+        * A GUID representing the owner of the resource. This GUID is
+        * used by HOB consumer phase components to correlate device
+        * ownership of a resource.
+        */
+       struct efi_guid         owner;
+       u32                     type;
+       u32                     attr;
+       /* The physical start address of the resource region */
+       phys_addr_t             phys_start;
+       /* The number of bytes of the resource region */
+       phys_size_t             len;
+};
+
+/*
+ * Allows writers of executable content in the HOB producer phase to
+ * maintain and manage HOBs with specific GUID.
+ */
+struct hob_guid {
+       struct hob_header       hdr;
+       /* A GUID that defines the contents of this HOB */
+       struct efi_guid         name;
+       /* GUID specific data goes here */
+};
+
+/**
+ * get_next_hob() - return a pointer to the next HOB in the HOB list
+ *
+ * This macro returns a pointer to HOB that follows the HOB specified by hob
+ * in the HOB List.
+ *
+ * @hdr:    A pointer to a HOB.
+ *
+ * @return: A pointer to the next HOB in the HOB list.
+ */
+static inline const struct hob_header *get_next_hob(const struct hob_header *hdr)
+{
+       return (const struct hob_header *)((u32)hdr + hdr->len);
+}
+
+/**
+ * end_of_hob() - determine if a HOB is the last HOB in the HOB list
+ *
+ * This macro determine if the HOB specified by hob is the last HOB in the
+ * HOB list.  If hob is last HOB in the HOB list, then true is returned.
+ * Otherwise, false is returned.
+ *
+ * @hdr:          A pointer to a HOB.
+ *
+ * @retval true:  The HOB specified by hdr is the last HOB in the HOB list.
+ * @retval false: The HOB specified by hdr is not the last HOB in the HOB list.
+ */
+static inline bool end_of_hob(const struct hob_header *hdr)
+{
+       return hdr->type == HOB_TYPE_EOH;
+}
+
+/**
+ * get_guid_hob_data() - return a pointer to data buffer from a HOB of
+ *                       type HOB_TYPE_GUID_EXT
+ *
+ * This macro returns a pointer to the data buffer in a HOB specified by hob.
+ * hob is assumed to be a HOB of type HOB_TYPE_GUID_EXT.
+ *
+ * @hdr:    A pointer to a HOB.
+ *
+ * @return: A pointer to the data buffer in a HOB.
+ */
+static inline void *get_guid_hob_data(const struct hob_header *hdr)
+{
+       return (void *)((u32)hdr + sizeof(struct hob_guid));
+}
+
+/**
+ * get_guid_hob_data_size() - return the size of the data buffer from a HOB
+ *                            of type HOB_TYPE_GUID_EXT
+ *
+ * This macro returns the size, in bytes, of the data buffer in a HOB
+ * specified by hob. hob is assumed to be a HOB of type HOB_TYPE_GUID_EXT.
+ *
+ * @hdr:    A pointer to a HOB.
+ *
+ * @return: The size of the data buffer.
+ */
+static inline u16 get_guid_hob_data_size(const struct hob_header *hdr)
+{
+       return hdr->len - sizeof(struct hob_guid);
+}
+
+/* FSP specific GUID HOB definitions */
+#define FSP_GUID_DATA1         0x912740be
+#define FSP_GUID_DATA2         0x2284
+#define FSP_GUID_DATA3         0x4734
+#define FSP_GUID_DATA4_0       0xb9
+#define FSP_GUID_DATA4_1       0x71
+#define FSP_GUID_DATA4_2       0x84
+#define FSP_GUID_DATA4_3       0xb0
+#define FSP_GUID_DATA4_4       0x27
+#define FSP_GUID_DATA4_5       0x35
+#define FSP_GUID_DATA4_6       0x3f
+#define FSP_GUID_DATA4_7       0x0c
+
+#define FSP_HEADER_GUID \
+       { \
+       FSP_GUID_DATA1, FSP_GUID_DATA2, FSP_GUID_DATA3, \
+       { FSP_GUID_DATA4_0, FSP_GUID_DATA4_1, FSP_GUID_DATA4_2, \
+         FSP_GUID_DATA4_3, FSP_GUID_DATA4_4, FSP_GUID_DATA4_5, \
+         FSP_GUID_DATA4_6, FSP_GUID_DATA4_7 } \
+       }
+
+#define FSP_NON_VOLATILE_STORAGE_HOB_GUID \
+       { \
+       0x721acf02, 0x4d77, 0x4c2a, \
+       { 0xb3, 0xdc, 0x27, 0xb, 0x7b, 0xa9, 0xe4, 0xb0 } \
+       }
+
+#define FSP_BOOTLOADER_TEMP_MEM_HOB_GUID \
+       { \
+       0xbbcff46c, 0xc8d3, 0x4113, \
+       { 0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e } \
+       }
+
+#define FSP_HOB_RESOURCE_OWNER_FSP_GUID \
+       { \
+       0x69a79759, 0x1373, 0x4367, \
+       { 0xa6, 0xc4, 0xc7, 0xf5, 0x9e, 0xfd, 0x98, 0x6e } \
+       }
+
+#define FSP_HOB_RESOURCE_OWNER_TSEG_GUID \
+       { \
+       0xd038747c, 0xd00c, 0x4980, \
+       { 0xb3, 0x19, 0x49, 0x01, 0x99, 0xa4, 0x7d, 0x55 } \
+       }
+
+#define FSP_HOB_RESOURCE_OWNER_GRAPHICS_GUID \
+       { \
+       0x9c7c3aa7, 0x5332, 0x4917, \
+       { 0x82, 0xb9, 0x56, 0xa5, 0xf3, 0xe6, 0x2a, 0x07 } \
+       }
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_infoheader.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_infoheader.h
new file mode 100644 (file)
index 0000000..4a4d627
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef _FSP_HEADER_H_
+#define _FSP_HEADER_H_
+
+#define FSP_HEADER_OFF 0x94    /* Fixed FSP header offset in the FSP image */
+
+struct __packed fsp_header {
+       u32     sign;                   /* 'FSPH' */
+       u32     hdr_len;                /* header length */
+       u8      reserved1[3];
+       u8      hdr_rev;                /* header rev */
+       u32     img_rev;                /* image rev */
+       char    img_id[8];              /* signature string */
+       u32     img_size;               /* image size */
+       u32     img_base;               /* image base */
+       u32     img_attr;               /* image attribute */
+       u32     cfg_region_off;         /* configuration region offset */
+       u32     cfg_region_size;        /* configuration region size */
+       u32     api_num;                /* number of API entries */
+       u32     fsp_tempram_init;       /* tempram_init offset */
+       u32     fsp_init;               /* fsp_init offset */
+       u32     fsp_notify;             /* fsp_notify offset */
+       u32     reserved2;
+};
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_platform.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_platform.h
new file mode 100644 (file)
index 0000000..61286ce
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_PLATFORM_H__
+#define __FSP_PLATFORM_H__
+
+struct fspinit_rtbuf {
+       struct common_buf       common; /* FSP common runtime data structure */
+};
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_support.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_support.h
new file mode 100644 (file)
index 0000000..ebdbd03
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_SUPPORT_H__
+#define __FSP_SUPPORT_H__
+
+#include "fsp_types.h"
+#include "fsp_fv.h"
+#include "fsp_ffs.h"
+#include "fsp_api.h"
+#include "fsp_hob.h"
+#include "fsp_platform.h"
+#include "fsp_infoheader.h"
+#include "fsp_bootmode.h"
+#include "fsp_vpd.h"
+
+struct shared_data {
+       struct fsp_header       *fsp_hdr;
+       u32                     *stack_top;
+       struct upd_region       fsp_upd;
+};
+
+#define FSP_LOWMEM_BASE                0x100000UL
+#define FSP_HIGHMEM_BASE       0x100000000ULL
+
+/**
+ * FSP Continuation assembly helper routine
+ *
+ * This routine jumps to the C version of FSP continuation function
+ */
+void asm_continuation(void);
+
+/**
+ * FSP initialization complete
+ *
+ * This is the function that indicates FSP initialization is complete and jumps
+ * back to the bootloader with HOB list pointer as the parameter.
+ *
+ * @hob_list:    HOB list pointer
+ */
+void fsp_init_done(void *hob_list);
+
+/**
+ * FSP Continuation function
+ *
+ * @shared_data: Shared data base before stack migration
+ * @status:      Always 0
+ * @hob_list:    HOB list pointer
+ *
+ * @retval:      Never returns
+ */
+void fsp_continue(struct shared_data *shared_data, u32 status,
+                 void *hob_list);
+
+/**
+ * Find FSP header offset in FSP image
+ *
+ * @retval: the offset of FSP header. If signature is invalid, returns 0.
+ */
+u32 find_fsp_header(void);
+
+/**
+ * FSP initialization wrapper function.
+ *
+ * @stack_top: bootloader stack top address
+ * @boot_mode: boot mode defined in fsp_bootmode.h
+ * @nvs_buf:   Non-volatile memory buffer pointer
+ */
+void fsp_init(u32 stack_top, u32 boot_mode, void *nvs_buf);
+
+/**
+ * FSP notification wrapper function
+ *
+ * @fsp_hdr: Pointer to FSP information header
+ * @phase:   FSP initialization phase defined in enum fsp_phase
+ *
+ * @retval:  compatible status code with EFI_STATUS defined in PI spec
+ */
+u32 fsp_notify(struct fsp_header *fsp_hdr, u32 phase);
+
+/**
+ * This function retrieves the top of usable low memory.
+ *
+ * @hob_list: A HOB list pointer.
+ *
+ * @retval:   Usable low memory top.
+ */
+u32 fsp_get_usable_lowmem_top(const void *hob_list);
+
+/**
+ * This function retrieves the top of usable high memory.
+ *
+ * @hob_list: A HOB list pointer.
+ *
+ * @retval:   Usable high memory top.
+ */
+u64 fsp_get_usable_highmem_top(const void *hob_list);
+
+/**
+ * This function retrieves a special reserved memory region.
+ *
+ * @hob_list: A HOB list pointer.
+ * @len:      A pointer to the GUID HOB data buffer length.
+ *            If the GUID HOB is located, the length will be updated.
+ * @guid:     A pointer to the owner guild.
+ *
+ * @retval:   Reserved region start address.
+ *            0 if this region does not exist.
+ */
+u64 fsp_get_reserved_mem_from_guid(const void *hob_list,
+                                  u64 *len, struct efi_guid *guid);
+
+/**
+ * This function retrieves the FSP reserved normal memory.
+ *
+ * @hob_list: A HOB list pointer.
+ * @len:      A pointer to the FSP reserved memory length buffer.
+ *            If the GUID HOB is located, the length will be updated.
+ * @retval:   FSP reserved memory base
+ *            0 if this region does not exist.
+ */
+u32 fsp_get_fsp_reserved_mem(const void *hob_list, u32 *len);
+
+/**
+ * This function retrieves the TSEG reserved normal memory.
+ *
+ * @hob_list:      A HOB list pointer.
+ * @len:           A pointer to the TSEG reserved memory length buffer.
+ *                 If the GUID HOB is located, the length will be updated.
+ *
+ * @retval NULL:   Failed to find the TSEG reserved memory.
+ * @retval others: TSEG reserved memory base.
+ */
+u32 fsp_get_tseg_reserved_mem(const void *hob_list, u32 *len);
+
+/**
+ * Returns the next instance of a HOB type from the starting HOB.
+ *
+ * @type:     HOB type to search
+ * @hob_list: A pointer to the HOB list
+ *
+ * @retval:   A HOB object with matching type; Otherwise NULL.
+ */
+const struct hob_header *fsp_get_next_hob(uint type, const void *hob_list);
+
+/**
+ * Returns the next instance of the matched GUID HOB from the starting HOB.
+ *
+ * @guid:     GUID to search
+ * @hob_list: A pointer to the HOB list
+ *
+ * @retval:   A HOB object with matching GUID; Otherwise NULL.
+ */
+const struct hob_header *fsp_get_next_guid_hob(const struct efi_guid *guid,
+                                              const void *hob_list);
+
+/**
+ * This function retrieves a GUID HOB data buffer and size.
+ *
+ * @hob_list:      A HOB list pointer.
+ * @len:           A pointer to the GUID HOB data buffer length.
+ *                 If the GUID HOB is located, the length will be updated.
+ * @guid           A pointer to HOB GUID.
+ *
+ * @retval NULL:   Failed to find the GUID HOB.
+ * @retval others: GUID HOB data buffer pointer.
+ */
+void *fsp_get_guid_hob_data(const void *hob_list, u32 *len,
+                           struct efi_guid *guid);
+
+/**
+ * This function retrieves FSP Non-volatile Storage HOB buffer and size.
+ *
+ * @hob_list:      A HOB list pointer.
+ * @len:           A pointer to the NVS data buffer length.
+ *                 If the HOB is located, the length will be updated.
+ *
+ * @retval NULL:   Failed to find the NVS HOB.
+ * @retval others: FSP NVS data buffer pointer.
+ */
+void *fsp_get_nvs_data(const void *hob_list, u32 *len);
+
+/**
+ * This function retrieves Bootloader temporary stack buffer and size.
+ *
+ * @hob_list:      A HOB list pointer.
+ * @len:           A pointer to the bootloader temporary stack length.
+ *                 If the HOB is located, the length will be updated.
+ *
+ * @retval NULL:   Failed to find the bootloader temporary stack HOB.
+ * @retval others: Bootloader temporary stackbuffer pointer.
+ */
+void *fsp_get_bootloader_tmp_mem(const void *hob_list, u32 *len);
+
+/**
+ * This function overrides the default configurations in the UPD data region.
+ *
+ * @fsp_upd: A pointer to the upd_region data strcture
+ *
+ * @return:  None
+ */
+void update_fsp_upd(struct upd_region *fsp_upd);
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_types.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_types.h
new file mode 100644 (file)
index 0000000..f32d827
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __FSP_TYPES_H__
+#define __FSP_TYPES_H__
+
+/* 128 bit buffer containing a unique identifier value */
+struct efi_guid {
+       u32     data1;
+       u16     data2;
+       u16     data3;
+       u8      data4[8];
+};
+
+/**
+ * Returns a 16-bit signature built from 2 ASCII characters.
+ *
+ * This macro returns a 16-bit value built from the two ASCII characters
+ * specified by A and B.
+ *
+ * @A: The first ASCII character.
+ * @B: The second ASCII character.
+ *
+ * @return: A 16-bit value built from the two ASCII characters specified by
+ *          A and B.
+ */
+#define SIGNATURE_16(A, B)     ((A) | (B << 8))
+
+/**
+ * Returns a 32-bit signature built from 4 ASCII characters.
+ *
+ * This macro returns a 32-bit value built from the four ASCII characters
+ * specified by A, B, C, and D.
+ *
+ * @A: The first ASCII character.
+ * @B: The second ASCII character.
+ * @C: The third ASCII character.
+ * @D: The fourth ASCII character.
+ *
+ * @return: A 32-bit value built from the two ASCII characters specified by
+ *          A, B, C and D.
+ */
+#define SIGNATURE_32(A, B, C, D)       \
+       (SIGNATURE_16(A, B) | (SIGNATURE_16(C, D) << 16))
+
+/**
+ * Returns a 64-bit signature built from 8 ASCII characters.
+ *
+ * This macro returns a 64-bit value built from the eight ASCII characters
+ * specified by A, B, C, D, E, F, G,and H.
+ *
+ * @A: The first ASCII character.
+ * @B: The second ASCII character.
+ * @C: The third ASCII character.
+ * @D: The fourth ASCII character.
+ * @E: The fifth ASCII character.
+ * @F: The sixth ASCII character.
+ * @G: The seventh ASCII character.
+ * @H: The eighth ASCII character.
+ *
+ * @return: A 64-bit value built from the two ASCII characters specified by
+ *          A, B, C, D, E, F, G and H.
+ */
+#define SIGNATURE_64(A, B, C, D, E, F, G, H)   \
+       (SIGNATURE_32(A, B, C, D) | ((u64)(SIGNATURE_32(E, F, G, H)) << 32))
+
+/*
+ * Define FSP API return status code.
+ * Compatiable with EFI_STATUS defined in PI Spec.
+ */
+#define FSP_SUCCESS            0
+#define FSP_INVALID_PARAM      0x80000002
+#define FSP_UNSUPPORTED                0x80000003
+#define FSP_DEVICE_ERROR       0x80000007
+#define FSP_NOT_FOUND          0x8000000E
+#define FSP_ALREADY_STARTED    0x80000014
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/fsp/fsp_vpd.h b/arch/x86/include/asm/arch-queensbay/fsp/fsp_vpd.h
new file mode 100644 (file)
index 0000000..bce58b1
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013, Intel Corporation
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * This file is automatically generated. Please do NOT modify !!!
+ *
+ * SPDX-License-Identifier:    Intel
+ */
+
+#ifndef __VPDHEADER_H__
+#define __VPDHEADER_H__
+
+#define UPD_TERMINATOR 0x55AA
+
+struct __packed upd_region {
+       u64     sign;                   /* Offset 0x0000 */
+       u64     reserved;               /* Offset 0x0008 */
+       u8      dummy[240];             /* Offset 0x0010 */
+       u8      hda_verb_header[12];    /* Offset 0x0100 */
+       u32     hda_verb_length;        /* Offset 0x010C */
+       u8      hda_verb_data0[16];     /* Offset 0x0110 */
+       u8      hda_verb_data1[16];     /* Offset 0x0120 */
+       u8      hda_verb_data2[16];     /* Offset 0x0130 */
+       u8      hda_verb_data3[16];     /* Offset 0x0140 */
+       u8      hda_verb_data4[16];     /* Offset 0x0150 */
+       u8      hda_verb_data5[16];     /* Offset 0x0160 */
+       u8      hda_verb_data6[16];     /* Offset 0x0170 */
+       u8      hda_verb_data7[16];     /* Offset 0x0180 */
+       u8      hda_verb_data8[16];     /* Offset 0x0190 */
+       u8      hda_verb_data9[16];     /* Offset 0x01A0 */
+       u8      hda_verb_data10[16];    /* Offset 0x01B0 */
+       u8      hda_verb_data11[16];    /* Offset 0x01C0 */
+       u8      hda_verb_data12[16];    /* Offset 0x01D0 */
+       u8      hda_verb_data13[16];    /* Offset 0x01E0 */
+       u8      hda_verb_pad[47];       /* Offset 0x01F0 */
+       u16     terminator;             /* Offset 0x021F */
+};
+
+#define VPD_IMAGE_ID   0x445056574F4E4E4D      /* 'MNNOWVPD' */
+#define VPD_IMAGE_REV  0x00000301
+
+struct __packed vpd_region {
+       u64     sign;                   /* Offset 0x0000 */
+       u32     img_rev;                /* Offset 0x0008 */
+       u32     upd_offset;             /* Offset 0x000C */
+       u8      unused[16];             /* Offset 0x0010 */
+       u32     fsp_res_memlen;         /* Offset 0x0020 */
+       u8      disable_pcie1;          /* Offset 0x0024 */
+       u8      disable_pcie2;          /* Offset 0x0025 */
+       u8      disable_pcie3;          /* Offset 0x0026 */
+       u8      enable_azalia;          /* Offset 0x0027 */
+       u8      legacy_seg_decode;      /* Offset 0x0028 */
+       u8      pcie_port_ioh;          /* Offset 0x0029 */
+};
+
+#endif
diff --git a/arch/x86/include/asm/arch-queensbay/gpio.h b/arch/x86/include/asm/arch-queensbay/gpio.h
new file mode 100644 (file)
index 0000000..ab4e059
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _X86_ARCH_GPIO_H_
+#define _X86_ARCH_GPIO_H_
+
+/* Where in config space is the register that points to the GPIO registers? */
+#define PCI_CFG_GPIOBASE 0x44
+
+#endif /* _X86_ARCH_GPIO_H_ */
diff --git a/arch/x86/include/asm/arch-queensbay/tnc.h b/arch/x86/include/asm/arch-queensbay/tnc.h
new file mode 100644 (file)
index 0000000..67c5e05
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _X86_ARCH_TNC_H_
+#define _X86_ARCH_TNC_H_
+
+#include <pci.h>
+
+/* PCI Configuration Space (D31:F0): LPC */
+#define PCH_LPC_DEV    PCI_BDF(0, 0x1f, 0)
+
+#endif /* _X86_ARCH_TNC_H_ */
index 033ab79516d1bdc262015479727a5944b0524098..f6a64ce2c9198ad70d93ec11f072477eef847d2b 100644 (file)
@@ -9,4 +9,20 @@
 
 void bootm_announce_and_cleanup(void);
 
+/**
+ * boot_linux_kernel() - boot a linux kernel
+ *
+ * This boots a kernel image, either 32-bit or 64-bit. It will also work with
+ * a self-extracting kernel, if you set @image_64bit to false.
+ *
+ * @setup_base:                Pointer to the setup.bin information for the kernel
+ * @load_address:      Pointer to the start of the kernel image
+ * @image_64bit:       true if the image is a raw 64-bit kernel, false if it
+ *                     is raw 32-bit or any type of self-extracting kernel
+ *                     such as a bzImage.
+ * @return -ve error code. This function does not return if the kernel was
+ * booted successfully.
+ */
+int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit);
+
 #endif
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h
new file mode 100644 (file)
index 0000000..c839291
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 2014 The Chromium OS Authors.
+ *
+ * Part of this file is adapted from coreboot
+ * src/arch/x86/include/arch/cpu.h and
+ * src/arch/x86/lib/cpu.c
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_CPU_H
+#define _ASM_CPU_H
+
+enum {
+       X86_VENDOR_INVALID = 0,
+       X86_VENDOR_INTEL,
+       X86_VENDOR_CYRIX,
+       X86_VENDOR_AMD,
+       X86_VENDOR_UMC,
+       X86_VENDOR_NEXGEN,
+       X86_VENDOR_CENTAUR,
+       X86_VENDOR_RISE,
+       X86_VENDOR_TRANSMETA,
+       X86_VENDOR_NSC,
+       X86_VENDOR_SIS,
+       X86_VENDOR_ANY = 0xfe,
+       X86_VENDOR_UNKNOWN = 0xff
+};
+
+struct cpuid_result {
+       uint32_t eax;
+       uint32_t ebx;
+       uint32_t ecx;
+       uint32_t edx;
+};
+
+/*
+ * Generic CPUID function
+ */
+static inline struct cpuid_result cpuid(int op)
+{
+       struct cpuid_result result;
+       asm volatile(
+               "mov %%ebx, %%edi;"
+               "cpuid;"
+               "mov %%ebx, %%esi;"
+               "mov %%edi, %%ebx;"
+               : "=a" (result.eax),
+                 "=S" (result.ebx),
+                 "=c" (result.ecx),
+                 "=d" (result.edx)
+               : "0" (op)
+               : "edi");
+       return result;
+}
+
+/*
+ * Generic Extended CPUID function
+ */
+static inline struct cpuid_result cpuid_ext(int op, unsigned ecx)
+{
+       struct cpuid_result result;
+       asm volatile(
+               "mov %%ebx, %%edi;"
+               "cpuid;"
+               "mov %%ebx, %%esi;"
+               "mov %%edi, %%ebx;"
+               : "=a" (result.eax),
+                 "=S" (result.ebx),
+                 "=c" (result.ecx),
+                 "=d" (result.edx)
+               : "0" (op), "2" (ecx)
+               : "edi");
+       return result;
+}
+
+/*
+ * CPUID functions returning a single datum
+ */
+static inline unsigned int cpuid_eax(unsigned int op)
+{
+       unsigned int eax;
+
+       __asm__("mov %%ebx, %%edi;"
+               "cpuid;"
+               "mov %%edi, %%ebx;"
+               : "=a" (eax)
+               : "0" (op)
+               : "ecx", "edx", "edi");
+       return eax;
+}
+
+static inline unsigned int cpuid_ebx(unsigned int op)
+{
+       unsigned int eax, ebx;
+
+       __asm__("mov %%ebx, %%edi;"
+               "cpuid;"
+               "mov %%ebx, %%esi;"
+               "mov %%edi, %%ebx;"
+               : "=a" (eax), "=S" (ebx)
+               : "0" (op)
+               : "ecx", "edx", "edi");
+       return ebx;
+}
+
+static inline unsigned int cpuid_ecx(unsigned int op)
+{
+       unsigned int eax, ecx;
+
+       __asm__("mov %%ebx, %%edi;"
+               "cpuid;"
+               "mov %%edi, %%ebx;"
+               : "=a" (eax), "=c" (ecx)
+               : "0" (op)
+               : "edx", "edi");
+       return ecx;
+}
+
+static inline unsigned int cpuid_edx(unsigned int op)
+{
+       unsigned int eax, edx;
+
+       __asm__("mov %%ebx, %%edi;"
+               "cpuid;"
+               "mov %%edi, %%ebx;"
+               : "=a" (eax), "=d" (edx)
+               : "0" (op)
+               : "ecx", "edi");
+       return edx;
+}
+
+/* Standard macro to see if a specific flag is changeable */
+static inline int flag_is_changeable_p(uint32_t flag)
+{
+       uint32_t f1, f2;
+
+       asm(
+               "pushfl\n\t"
+               "pushfl\n\t"
+               "popl %0\n\t"
+               "movl %0,%1\n\t"
+               "xorl %2,%0\n\t"
+               "pushl %0\n\t"
+               "popfl\n\t"
+               "pushfl\n\t"
+               "popl %0\n\t"
+               "popfl\n\t"
+               : "=&r" (f1), "=&r" (f2)
+               : "ir" (flag));
+       return ((f1^f2) & flag) != 0;
+}
+
+/**
+ * cpu_enable_paging_pae() - Enable PAE-paging
+ *
+ * @cr3:       Value to set in cr3 (PDPT or PML4T)
+ */
+void cpu_enable_paging_pae(ulong cr3);
+
+/**
+ * cpu_disable_paging_pae() - Disable paging and PAE
+ */
+void cpu_disable_paging_pae(void);
+
+/**
+ * cpu_has_64bit() - Check if the CPU has 64-bit support
+ *
+ * @return 1 if this CPU supports long mode (64-bit), 0 if not
+ */
+int cpu_has_64bit(void);
+
+/**
+ * cpu_vendor_name() - Get CPU vendor name
+ *
+ * @vendor:    CPU vendor enumeration number
+ *
+ * @return:    Address to hold the CPU vendor name string
+ */
+const char *cpu_vendor_name(int vendor);
+
+#define CPU_MAX_NAME_LEN       49
+
+/**
+ * cpu_get_name() - Get the name of the current cpu
+ *
+ * @name: Place to put name, which must be CPU_MAX_NAME_LEN bytes including
+ * @return pointer to name, which will likely be a few bytes after the start
+ * of @name
+ * \0 terminator
+ */
+char *cpu_get_name(char *name);
+
+/**
+ * cpu_call64() - Jump to a 64-bit Linux kernel (internal function)
+ *
+ * The kernel is uncompressed and the 64-bit entry point is expected to be
+ * at @target.
+ *
+ * This function is used internally - see cpu_jump_to_64bit() for a more
+ * useful function.
+ *
+ * @pgtable:   Address of 24KB area containing the page table
+ * @setup_base:        Pointer to the setup.bin information for the kernel
+ * @target:    Pointer to the start of the kernel image
+ */
+void cpu_call64(ulong pgtable, ulong setup_base, ulong target);
+
+/**
+ * cpu_jump_to_64bit() - Jump to a 64-bit Linux kernel
+ *
+ * The kernel is uncompressed and the 64-bit entry point is expected to be
+ * at @target.
+ *
+ * @setup_base:        Pointer to the setup.bin information for the kernel
+ * @target:    Pointer to the start of the kernel image
+ */
+int cpu_jump_to_64bit(ulong setup_base, ulong target);
+
+#endif
index 3e8e2cdb9ebdd65f304848678f7038250db72c8d..24e305239b2164c5a91cdbd73b8bbadd655557f3 100644 (file)
 
 #ifndef __ASSEMBLY__
 
+enum pei_boot_mode_t {
+       PEI_BOOT_NONE = 0,
+       PEI_BOOT_SOFT_RESET,
+       PEI_BOOT_RESUME,
+
+};
+
+struct memory_area {
+       uint64_t start;
+       uint64_t size;
+};
+
+struct memory_info {
+       int num_areas;
+       uint64_t total_memory;
+       uint64_t total_32bit_memory;
+       struct memory_area area[CONFIG_NR_DRAM_BANKS];
+};
+
+#define MAX_MTRR_REQUESTS      8
+
+/**
+ * A request for a memory region to be set up in a particular way. These
+ * requests are processed before board_init_r() is called. They are generally
+ * optional and can be ignored with some performance impact.
+ */
+struct mtrr_request {
+       int type;               /* MTRR_TYPE_... */
+       uint64_t start;
+       uint64_t size;
+};
+
 /* Architecture-specific global data */
 struct arch_global_data {
        struct global_data *gd_addr;            /* Location of Global Data */
+       uint8_t  x86;                   /* CPU family */
+       uint8_t  x86_vendor;            /* CPU vendor */
+       uint8_t  x86_model;
+       uint8_t  x86_mask;
+       uint32_t x86_device;
        uint64_t tsc_base;              /* Initial value returned by rdtsc() */
        uint32_t tsc_base_kclocks;      /* Initial tsc as a kclocks value */
        uint32_t tsc_prev;              /* For show_boot_progress() */
+       uint32_t tsc_mhz;               /* TSC frequency in MHz */
        void *new_fdt;                  /* Relocated FDT */
+       uint32_t bist;                  /* Built-in self test value */
+       enum pei_boot_mode_t pei_boot_mode;
+       const struct pch_gpio_map *gpio_map;    /* board GPIO map */
+       struct memory_info meminfo;     /* Memory information */
+#ifdef CONFIG_HAVE_FSP
+       void    *hob_list;              /* FSP HOB list */
+#endif
+       struct mtrr_request mtrr_req[MAX_MTRR_REQUESTS];
+       int mtrr_req_count;
 };
 
 #endif
index 8bda414dbd73bdef24c93a816b39a1eb8a6129e6..10994273881254ccc6a087816642656b5e38caf8 100644 (file)
 /*
  * Copyright (c) 2012, Google Inc. All rights reserved.
- * SPDX-License-Identifier:    GPL-2.0+
+ * SPDX-License-Identifier:    GPL-2.0
  */
 
 #ifndef _X86_GPIO_H_
 #define _X86_GPIO_H_
 
+#include <linux/compiler.h>
 #include <asm/arch/gpio.h>
 #include <asm-generic/gpio.h>
 
+struct ich6_bank_platdata {
+       uint16_t base_addr;
+       const char *bank_name;
+};
+
+#define GPIO_MODE_NATIVE       0
+#define GPIO_MODE_GPIO         1
+#define GPIO_MODE_NONE         1
+
+#define GPIO_DIR_OUTPUT                0
+#define GPIO_DIR_INPUT         1
+
+#define GPIO_NO_INVERT         0
+#define GPIO_INVERT            1
+
+#define GPIO_LEVEL_LOW         0
+#define GPIO_LEVEL_HIGH                1
+
+#define GPIO_NO_BLINK          0
+#define GPIO_BLINK             1
+
+#define GPIO_RESET_PWROK       0
+#define GPIO_RESET_RSMRST      1
+
+struct pch_gpio_set1 {
+       u32 gpio0:1;
+       u32 gpio1:1;
+       u32 gpio2:1;
+       u32 gpio3:1;
+       u32 gpio4:1;
+       u32 gpio5:1;
+       u32 gpio6:1;
+       u32 gpio7:1;
+       u32 gpio8:1;
+       u32 gpio9:1;
+       u32 gpio10:1;
+       u32 gpio11:1;
+       u32 gpio12:1;
+       u32 gpio13:1;
+       u32 gpio14:1;
+       u32 gpio15:1;
+       u32 gpio16:1;
+       u32 gpio17:1;
+       u32 gpio18:1;
+       u32 gpio19:1;
+       u32 gpio20:1;
+       u32 gpio21:1;
+       u32 gpio22:1;
+       u32 gpio23:1;
+       u32 gpio24:1;
+       u32 gpio25:1;
+       u32 gpio26:1;
+       u32 gpio27:1;
+       u32 gpio28:1;
+       u32 gpio29:1;
+       u32 gpio30:1;
+       u32 gpio31:1;
+} __packed;
+
+struct pch_gpio_set2 {
+       u32 gpio32:1;
+       u32 gpio33:1;
+       u32 gpio34:1;
+       u32 gpio35:1;
+       u32 gpio36:1;
+       u32 gpio37:1;
+       u32 gpio38:1;
+       u32 gpio39:1;
+       u32 gpio40:1;
+       u32 gpio41:1;
+       u32 gpio42:1;
+       u32 gpio43:1;
+       u32 gpio44:1;
+       u32 gpio45:1;
+       u32 gpio46:1;
+       u32 gpio47:1;
+       u32 gpio48:1;
+       u32 gpio49:1;
+       u32 gpio50:1;
+       u32 gpio51:1;
+       u32 gpio52:1;
+       u32 gpio53:1;
+       u32 gpio54:1;
+       u32 gpio55:1;
+       u32 gpio56:1;
+       u32 gpio57:1;
+       u32 gpio58:1;
+       u32 gpio59:1;
+       u32 gpio60:1;
+       u32 gpio61:1;
+       u32 gpio62:1;
+       u32 gpio63:1;
+} __packed;
+
+struct pch_gpio_set3 {
+       u32 gpio64:1;
+       u32 gpio65:1;
+       u32 gpio66:1;
+       u32 gpio67:1;
+       u32 gpio68:1;
+       u32 gpio69:1;
+       u32 gpio70:1;
+       u32 gpio71:1;
+       u32 gpio72:1;
+       u32 gpio73:1;
+       u32 gpio74:1;
+       u32 gpio75:1;
+} __packed;
+
+/*
+ * This hilariously complex structure came from Coreboot. The
+ * setup_pch_gpios() function uses it. It could be move to device tree, or
+ * adjust to use masks instead of bitfields.
+ */
+struct pch_gpio_map {
+       struct {
+               const struct pch_gpio_set1 *mode;
+               const struct pch_gpio_set1 *direction;
+               const struct pch_gpio_set1 *level;
+               const struct pch_gpio_set1 *reset;
+               const struct pch_gpio_set1 *invert;
+               const struct pch_gpio_set1 *blink;
+       } set1;
+       struct {
+               const struct pch_gpio_set2 *mode;
+               const struct pch_gpio_set2 *direction;
+               const struct pch_gpio_set2 *level;
+               const struct pch_gpio_set2 *reset;
+       } set2;
+       struct {
+               const struct pch_gpio_set3 *mode;
+               const struct pch_gpio_set3 *direction;
+               const struct pch_gpio_set3 *level;
+               const struct pch_gpio_set3 *reset;
+       } set3;
+};
+
+void setup_pch_gpios(u16 gpiobase, const struct pch_gpio_map *gpio);
+void ich_gpio_set_gpio_map(const struct pch_gpio_map *map);
+
 #endif /* _X86_GPIO_H_ */
index c3ccd4f9064b83ce5d3e6208bfb29d47ea6dc8dd..4116de1f076bc6db13f2c6a60aca5aa7f9159fb9 100644 (file)
@@ -36,4 +36,7 @@
 #define PIT_CMD_MODE4  0x08            /* Select mode 4 */
 #define PIT_CMD_MODE5  0x0A            /* Select mode 5 */
 
+/* The clock frequency of the i8253/i8254 PIT */
+#define PIT_TICK_RATE  1193182ul
+
 #endif
index 73113f90a8567f72738c285fc0c06567fdc1867c..bc4033bed2f1d212645aed5475a945293fa6d34a 100644 (file)
@@ -69,4 +69,6 @@
 #define        ICW4_AEOI       0x02    /* Automatic EOI Mode */
 #define ICW4_PM                0x01    /* Microprocessor Mode */
 
+int i8259_init(void);
+
 #endif
index e6d183b4796bc8ac951d68d3a9f4a9fdfcccfec5..c3b5187c2242dbadd99bc91a91747e4b4ab82a59 100644 (file)
@@ -18,4 +18,7 @@
 #define SYSCTLA         0x92
 #define SLAVE_PIC       0xa0
 
+#define UART0_BASE     0x3f8
+#define UART1_BASE     0x2f8
+
 #endif
index b07887eadcf587245333ec50308185a938cbf70a..8cbe08eb5655dff8c5da840646cf1a370918a5cd 100644 (file)
@@ -13,7 +13,5 @@ int calculate_relocation_address(void);
 int init_cache_f_r(void);
 int init_bd_struct_r(void);
 int init_func_spi(void);
-int find_fdt(void);
-int prepare_fdt(void);
 
 #endif /* !_INIT_HELPERS_H_ */
index 3f46e0920a8646bea0b044ac2509a3b2346b3277..25abde7be6ebf1c3027b181a6e2025d8b0d70701 100644 (file)
@@ -27,4 +27,15 @@ void specific_eoi(int irq);
 
 extern char exception_stack[];
 
+/**
+ * configure_irq_trigger() - Configure IRQ triggering
+ *
+ * Switch the given interrupt to be level / edge triggered
+ *
+ * @param int_num legacy interrupt number (3-7, 9-15)
+ * @param is_level_triggered true for level triggered interrupt, false for
+ *     edge triggered interrupt
+ */
+void configure_irq_trigger(int int_num, bool is_level_triggered);
+
 #endif
index 86bac90e8e882650829b7ce9177e5198339237a5..e0b25619cd50e8f2877e774dc5c1f2bf5be01b4d 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef _ASM_IO_H
 #define _ASM_IO_H
 
-#include <compiler.h>
+#include <linux/compiler.h>
 
 /*
  * This file contains the definitions for the x86 IO instructions
 #define memcpy_fromio(a,b,c)   memcpy((a),(b),(c))
 #define memcpy_toio(a,b,c)     memcpy((a),(b),(c))
 
+#define write_arch(type, endian, a, v) __raw_write##type(cpu_to_##endian(v), a)
+#define read_arch(type, endian, a) endian##_to_cpu(__raw_read##type(a))
+
+#define write_le64(a, v)       write_arch(q, le64, a, v)
+#define write_le32(a, v)       write_arch(l, le32, a, v)
+#define write_le16(a, v)       write_arch(w, le16, a, v)
+
+#define read_le64(a)   read_arch(q, le64, a)
+#define read_le32(a)   read_arch(l, le32, a)
+#define read_le16(a)   read_arch(w, le16, a)
+
+#define write_be32(a, v)       write_arch(l, be32, a, v)
+#define write_be16(a, v)       write_arch(w, be16, a, v)
+
+#define read_be32(a)   read_arch(l, be32, a)
+#define read_be16(a)   read_arch(w, be16, a)
+
+#define write_8(a, v)  __raw_writeb(v, a)
+#define read_8(a)      __raw_readb(a)
+
+#define clrbits(type, addr, clear) \
+       write_##type((addr), read_##type(addr) & ~(clear))
+
+#define setbits(type, addr, set) \
+       write_##type((addr), read_##type(addr) | (set))
+
+#define clrsetbits(type, addr, clear, set) \
+       write_##type((addr), (read_##type(addr) & ~(clear)) | (set))
+
+#define clrbits_be32(addr, clear) clrbits(be32, addr, clear)
+#define setbits_be32(addr, set) setbits(be32, addr, set)
+#define clrsetbits_be32(addr, clear, set) clrsetbits(be32, addr, clear, set)
+
+#define clrbits_le32(addr, clear) clrbits(le32, addr, clear)
+#define setbits_le32(addr, set) setbits(le32, addr, set)
+#define clrsetbits_le32(addr, clear, set) clrsetbits(le32, addr, clear, set)
+
+#define clrbits_be16(addr, clear) clrbits(be16, addr, clear)
+#define setbits_be16(addr, set) setbits(be16, addr, set)
+#define clrsetbits_be16(addr, clear, set) clrsetbits(be16, addr, clear, set)
+
+#define clrbits_le16(addr, clear) clrbits(le16, addr, clear)
+#define setbits_le16(addr, set) setbits(le16, addr, set)
+#define clrsetbits_le16(addr, clear, set) clrsetbits(le16, addr, clear, set)
+
+#define clrbits_8(addr, clear) clrbits(8, addr, clear)
+#define setbits_8(addr, set) setbits(8, addr, set)
+#define clrsetbits_8(addr, clear, set) clrsetbits(8, addr, clear, set)
+
 /*
  * ISA space is 'always mapped' on a typical x86 system, no need to
  * explicitly ioremap() it. The fact that the ISA IO space is mapped
diff --git a/arch/x86/include/asm/ioapic.h b/arch/x86/include/asm/ioapic.h
new file mode 100644 (file)
index 0000000..699160f
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * From coreboot file of the same name
+ *
+ * Copyright (C) 2010 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef __ASM_IOAPIC_H
+#define __ASM_IOAPIC_H
+
+#define IO_APIC_ADDR           0xfec00000
+#define IO_APIC_INDEX          IO_APIC_ADDR
+#define IO_APIC_DATA           (IO_APIC_ADDR + 0x10)
+#define IO_APIC_INTERRUPTS     24
+
+#define ALL            (0xff << 24)
+#define NONE           0
+#define DISABLED       (1 << 16)
+#define ENABLED                (0 << 16)
+#define TRIGGER_EDGE   (0 << 15)
+#define TRIGGER_LEVEL  (1 << 15)
+#define POLARITY_HIGH  (0 << 13)
+#define POLARITY_LOW   (1 << 13)
+#define PHYSICAL_DEST  (0 << 11)
+#define LOGICAL_DEST   (1 << 11)
+#define ExtINT         (7 << 8)
+#define NMI            (4 << 8)
+#define SMI            (2 << 8)
+#define INT            (1 << 8)
+
+u32 io_apic_read(u32 ioapic_base, u32 reg);
+void io_apic_write(u32 ioapic_base, u32 reg, u32 value);
+void set_ioapic_id(u32 ioapic_base, u8 ioapic_id);
+void setup_ioapic(u32 ioapic_base, u8 ioapic_id);
+void clear_ioapic(u32 ioapic_base);
+
+#endif
diff --git a/arch/x86/include/asm/lapic.h b/arch/x86/include/asm/lapic.h
new file mode 100644 (file)
index 0000000..0a7f443
--- /dev/null
@@ -0,0 +1,179 @@
+/*
+ * From Coreboot file of same name
+ *
+ * Copyright (C) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ARCH_ASM_LAPIC_H
+#define _ARCH_ASM_LAPIC_H
+
+#include <asm/io.h>
+#include <asm/lapic_def.h>
+#include <asm/msr.h>
+#include <asm/processor.h>
+
+/* See if I need to initialize the local apic */
+#if CONFIG_SMP || CONFIG_IOAPIC
+#  define NEED_LAPIC 1
+#else
+#  define NEED_LAPIC 0
+#endif
+
+static inline __attribute__((always_inline))
+               unsigned long lapic_read(unsigned long reg)
+{
+       return readl(LAPIC_DEFAULT_BASE + reg);
+}
+
+static inline __attribute__((always_inline))
+               void lapic_write(unsigned long reg, unsigned long val)
+{
+       writel(val, LAPIC_DEFAULT_BASE + reg);
+}
+
+static inline __attribute__((always_inline)) void lapic_wait_icr_idle(void)
+{
+       do { } while (lapic_read(LAPIC_ICR) & LAPIC_ICR_BUSY);
+}
+
+static inline void enable_lapic(void)
+{
+       msr_t msr;
+
+       msr = msr_read(LAPIC_BASE_MSR);
+       msr.hi &= 0xffffff00;
+       msr.lo |= LAPIC_BASE_MSR_ENABLE;
+       msr.lo &= ~LAPIC_BASE_MSR_ADDR_MASK;
+       msr.lo |= LAPIC_DEFAULT_BASE;
+       msr_write(LAPIC_BASE_MSR, msr);
+}
+
+static inline void disable_lapic(void)
+{
+       msr_t msr;
+
+       msr = msr_read(LAPIC_BASE_MSR);
+       msr.lo &= ~(1 << 11);
+       msr_write(LAPIC_BASE_MSR, msr);
+}
+
+static inline __attribute__((always_inline)) unsigned long lapicid(void)
+{
+       return lapic_read(LAPIC_ID) >> 24;
+}
+
+#if !CONFIG_AP_IN_SIPI_WAIT
+/* If we need to go back to sipi wait, we use the long non-inlined version of
+ * this function in lapic_cpu_init.c
+ */
+static inline __attribute__((always_inline)) void stop_this_cpu(void)
+{
+       /* Called by an AP when it is ready to halt and wait for a new task */
+       for (;;)
+               cpu_hlt();
+}
+#else
+void stop_this_cpu(void);
+#endif
+
+#define xchg(ptr, v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v), (ptr), \
+                                                       sizeof(*(ptr))))
+
+struct __xchg_dummy { unsigned long a[100]; };
+#define __xg(x) ((struct __xchg_dummy *)(x))
+
+/*
+ * Note: no "lock" prefix even on SMP: xchg always implies lock anyway
+ * Note 2: xchg has side effect, so that attribute volatile is necessary,
+ *       but generally the primitive is invalid, *ptr is output argument. --ANK
+ */
+static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
+                                  int size)
+{
+       switch (size) {
+       case 1:
+               __asm__ __volatile__("xchgb %b0,%1"
+                       : "=q" (x)
+                       : "m" (*__xg(ptr)), "0" (x)
+                       : "memory");
+               break;
+       case 2:
+               __asm__ __volatile__("xchgw %w0,%1"
+                       : "=r" (x)
+                       : "m" (*__xg(ptr)), "0" (x)
+                       : "memory");
+               break;
+       case 4:
+               __asm__ __volatile__("xchgl %0,%1"
+                       : "=r" (x)
+                       : "m" (*__xg(ptr)), "0" (x)
+                       : "memory");
+               break;
+       }
+
+       return x;
+}
+
+static inline void lapic_write_atomic(unsigned long reg, unsigned long v)
+{
+       (void)xchg((volatile unsigned long *)(LAPIC_DEFAULT_BASE + reg), v);
+}
+
+
+#ifdef X86_GOOD_APIC
+# define FORCE_READ_AROUND_WRITE 0
+# define lapic_read_around(x) lapic_read(x)
+# define lapic_write_around(x, y) lapic_write((x), (y))
+#else
+# define FORCE_READ_AROUND_WRITE 1
+# define lapic_read_around(x) lapic_read(x)
+# define lapic_write_around(x, y) lapic_write_atomic((x), (y))
+#endif
+
+static inline int lapic_remote_read(int apicid, int reg, unsigned long *pvalue)
+{
+       int timeout;
+       unsigned long status;
+       int result;
+       lapic_wait_icr_idle();
+       lapic_write_around(LAPIC_ICR2, SET_LAPIC_DEST_FIELD(apicid));
+       lapic_write_around(LAPIC_ICR, LAPIC_DM_REMRD | (reg >> 4));
+       timeout = 0;
+       do {
+               status = lapic_read(LAPIC_ICR) & LAPIC_ICR_RR_MASK;
+       } while (status == LAPIC_ICR_RR_INPROG && timeout++ < 1000);
+
+       result = -1;
+       if (status == LAPIC_ICR_RR_VALID) {
+               *pvalue = lapic_read(LAPIC_RRR);
+               result = 0;
+       }
+       return result;
+}
+
+
+void lapic_setup(void);
+
+#if CONFIG_SMP
+struct device;
+int start_cpu(struct device *cpu);
+#endif /* CONFIG_SMP */
+
+int boot_cpu(void);
+
+/**
+ * struct x86_cpu_priv - Information about a single CPU
+ *
+ * @apic_id: Advanced Programmable Interrupt Controller Identifier, which is
+ * just a number representing the CPU core
+ *
+ * TODO: Move this to driver model once lifecycle is understood
+ */
+struct x86_cpu_priv {
+       int apic_id;
+       int start_err;
+};
+
+#endif
diff --git a/arch/x86/include/asm/lapic_def.h b/arch/x86/include/asm/lapic_def.h
new file mode 100644 (file)
index 0000000..722cead
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Taken from the Coreboot file of the same name
+ *
+ * (C) Copyright 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_LAPIC_DEF_H
+#define _ASM_LAPIC_DEF_H
+
+#define LAPIC_BASE_MSR                 0x1B
+#define LAPIC_BASE_MSR_BOOTSTRAP_PROCESSOR     (1 << 8)
+#define LAPIC_BASE_MSR_ENABLE          (1 << 11)
+#define LAPIC_BASE_MSR_ADDR_MASK       0xFFFFF000
+
+#define LOCAL_APIC_ADDR                        0xfee00000
+#define LAPIC_DEFAULT_BASE             LOCAL_APIC_ADDR
+
+#define LAPIC_ID                       0x020
+#define LAPIC_LVR                      0x030
+#define LAPIC_TASKPRI                  0x80
+#define LAPIC_TPRI_MASK                        0xFF
+#define LAPIC_ARBID                    0x090
+#define LAPIC_RRR                      0x0C0
+#define LAPIC_SVR                      0x0f0
+#define LAPIC_SPIV                     0x0f0
+#define LAPIC_SPIV_ENABLE              0x100
+#define LAPIC_ESR                      0x280
+#define LAPIC_ESR_SEND_CS              0x00001
+#define LAPIC_ESR_RECV_CS              0x00002
+#define LAPIC_ESR_SEND_ACC             0x00004
+#define LAPIC_ESR_RECV_ACC             0x00008
+#define LAPIC_ESR_SENDILL              0x00020
+#define LAPIC_ESR_RECVILL              0x00040
+#define LAPIC_ESR_ILLREGA              0x00080
+#define LAPIC_ICR                      0x300
+#define LAPIC_DEST_SELF                        0x40000
+#define LAPIC_DEST_ALLINC              0x80000
+#define LAPIC_DEST_ALLBUT              0xC0000
+#define LAPIC_ICR_RR_MASK              0x30000
+#define LAPIC_ICR_RR_INVALID           0x00000
+#define LAPIC_ICR_RR_INPROG            0x10000
+#define LAPIC_ICR_RR_VALID             0x20000
+#define LAPIC_INT_LEVELTRIG            0x08000
+#define LAPIC_INT_ASSERT               0x04000
+#define LAPIC_ICR_BUSY                 0x01000
+#define LAPIC_DEST_LOGICAL             0x00800
+#define LAPIC_DM_FIXED                 0x00000
+#define LAPIC_DM_LOWEST                        0x00100
+#define LAPIC_DM_SMI                   0x00200
+#define LAPIC_DM_REMRD                 0x00300
+#define LAPIC_DM_NMI                   0x00400
+#define LAPIC_DM_INIT                  0x00500
+#define LAPIC_DM_STARTUP               0x00600
+#define LAPIC_DM_EXTINT                        0x00700
+#define LAPIC_VECTOR_MASK              0x000FF
+#define LAPIC_ICR2                     0x310
+#define GET_LAPIC_DEST_FIELD(x)                (((x) >> 24) & 0xFF)
+#define SET_LAPIC_DEST_FIELD(x)                ((x) << 24)
+#define LAPIC_LVTT                     0x320
+#define LAPIC_LVTPC                    0x340
+#define LAPIC_LVT0                     0x350
+#define LAPIC_LVT_TIMER_BASE_MASK      (0x3 << 18)
+#define GET_LAPIC_TIMER_BASE(x)                (((x) >> 18) & 0x3)
+#define SET_LAPIC_TIMER_BASE(x)                (((x) << 18))
+#define LAPIC_TIMER_BASE_CLKIN         0x0
+#define LAPIC_TIMER_BASE_TMBASE                0x1
+#define LAPIC_TIMER_BASE_DIV           0x2
+#define LAPIC_LVT_TIMER_PERIODIC       (1 << 17)
+#define LAPIC_LVT_MASKED               (1 << 16)
+#define LAPIC_LVT_LEVEL_TRIGGER                (1 << 15)
+#define LAPIC_LVT_REMOTE_IRR           (1 << 14)
+#define LAPIC_INPUT_POLARITY           (1 << 13)
+#define LAPIC_SEND_PENDING             (1 << 12)
+#define LAPIC_LVT_RESERVED_1           (1 << 11)
+#define LAPIC_DELIVERY_MODE_MASK       (7 << 8)
+#define LAPIC_DELIVERY_MODE_FIXED      (0 << 8)
+#define LAPIC_DELIVERY_MODE_NMI                (4 << 8)
+#define LAPIC_DELIVERY_MODE_EXTINT     (7 << 8)
+#define GET_LAPIC_DELIVERY_MODE(x)     (((x) >> 8) & 0x7)
+#define SET_LAPIC_DELIVERY_MODE(x, y)  (((x) & ~0x700)|((y) << 8))
+#define LAPIC_MODE_FIXED               0x0
+#define LAPIC_MODE_NMI                 0x4
+#define LAPIC_MODE_EXINT               0x7
+#define LAPIC_LVT1                     0x360
+#define LAPIC_LVTERR                   0x370
+#define LAPIC_TMICT                    0x380
+#define LAPIC_TMCCT                    0x390
+#define LAPIC_TDCR                     0x3E0
+#define LAPIC_TDR_DIV_TMBASE           (1 << 2)
+#define LAPIC_TDR_DIV_1                        0xB
+#define LAPIC_TDR_DIV_2                        0x0
+#define LAPIC_TDR_DIV_4                        0x1
+#define LAPIC_TDR_DIV_8                        0x2
+#define LAPIC_TDR_DIV_16               0x3
+#define LAPIC_TDR_DIV_32               0x8
+#define LAPIC_TDR_DIV_64               0x9
+#define LAPIC_TDR_DIV_128              0xA
+
+#endif
diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
new file mode 100644 (file)
index 0000000..bdca72e
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_X86_LINKAGE_H
+#define _ASM_X86_LINKAGE_H
+
+#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
+
+#endif /* _ASM_X86_LINKAGE_H */
index 0a36e178f57ac21b2b4b9b59a3f7b72a0478f125..2cbb270089a7a0378461e8ac937f5e191d3a8322 100644 (file)
 #define MSR_IA32_PERFCTR0              0x000000c1
 #define MSR_IA32_PERFCTR1              0x000000c2
 #define MSR_FSB_FREQ                   0x000000cd
+#define MSR_NHM_PLATFORM_INFO          0x000000ce
 
 #define MSR_NHM_SNB_PKG_CST_CFG_CTL    0x000000e2
 #define NHM_C3_AUTO_DEMOTE             (1UL << 25)
 #define NHM_C1_AUTO_DEMOTE             (1UL << 26)
 #define ATM_LNC_C6_AUTO_DEMOTE         (1UL << 25)
+#define SNB_C1_AUTO_UNDEMOTE           (1UL << 27)
+#define SNB_C3_AUTO_UNDEMOTE           (1UL << 28)
 
+#define MSR_PLATFORM_INFO              0x000000ce
 #define MSR_MTRRcap                    0x000000fe
 #define MSR_IA32_BBL_CR_CTL            0x00000119
 #define MSR_IA32_BBL_CR_CTL3           0x0000011e
 
 #define MSR_OFFCORE_RSP_0              0x000001a6
 #define MSR_OFFCORE_RSP_1              0x000001a7
+#define MSR_NHM_TURBO_RATIO_LIMIT      0x000001ad
+#define MSR_IVT_TURBO_RATIO_LIMIT      0x000001ae
+
+#define MSR_LBR_SELECT                 0x000001c8
+#define MSR_LBR_TOS                    0x000001c9
+#define MSR_LBR_NHM_FROM               0x00000680
+#define MSR_LBR_NHM_TO                 0x000006c0
+#define MSR_LBR_CORE_FROM              0x00000040
+#define MSR_LBR_CORE_TO                        0x00000060
 
 #define MSR_IA32_PEBS_ENABLE           0x000003f1
 #define MSR_IA32_DS_AREA               0x00000600
 #define MSR_IA32_PERF_CAPABILITIES     0x00000345
+#define MSR_PEBS_LD_LAT_THRESHOLD      0x000003f6
 
 #define MSR_MTRRfix64K_00000           0x00000250
 #define MSR_MTRRfix16K_80000           0x00000258
 #define MSR_IA32_LASTINTTOIP           0x000001de
 
 /* DEBUGCTLMSR bits (others vary by model): */
-#define DEBUGCTLMSR_LBR                        (1UL <<  0)
+#define DEBUGCTLMSR_LBR                        (1UL <<  0) /* last branch recording */
+/* single-step on branches */
 #define DEBUGCTLMSR_BTF                        (1UL <<  1)
 #define DEBUGCTLMSR_TR                 (1UL <<  6)
 #define DEBUGCTLMSR_BTS                        (1UL <<  7)
 #define DEBUGCTLMSR_BTS_OFF_USR                (1UL << 10)
 #define DEBUGCTLMSR_FREEZE_LBRS_ON_PMI (1UL << 11)
 
+#define MSR_IA32_POWER_CTL             0x000001fc
+
 #define MSR_IA32_MC0_CTL               0x00000400
 #define MSR_IA32_MC0_STATUS            0x00000401
 #define MSR_IA32_MC0_ADDR              0x00000402
 #define MSR_IA32_MC0_MISC              0x00000403
 
+/* C-state Residency Counters */
+#define MSR_PKG_C3_RESIDENCY           0x000003f8
+#define MSR_PKG_C6_RESIDENCY           0x000003f9
+#define MSR_PKG_C7_RESIDENCY           0x000003fa
+#define MSR_CORE_C3_RESIDENCY          0x000003fc
+#define MSR_CORE_C6_RESIDENCY          0x000003fd
+#define MSR_CORE_C7_RESIDENCY          0x000003fe
+#define MSR_PKG_C2_RESIDENCY           0x0000060d
+#define MSR_PKG_C8_RESIDENCY           0x00000630
+#define MSR_PKG_C9_RESIDENCY           0x00000631
+#define MSR_PKG_C10_RESIDENCY          0x00000632
+
+/* Run Time Average Power Limiting (RAPL) Interface */
+
+#define MSR_RAPL_POWER_UNIT            0x00000606
+
+#define MSR_PKG_POWER_LIMIT            0x00000610
+#define MSR_PKG_ENERGY_STATUS          0x00000611
+#define MSR_PKG_PERF_STATUS            0x00000613
+#define MSR_PKG_POWER_INFO             0x00000614
+
+#define MSR_DRAM_POWER_LIMIT           0x00000618
+#define MSR_DRAM_ENERGY_STATUS         0x00000619
+#define MSR_DRAM_PERF_STATUS           0x0000061b
+#define MSR_DRAM_POWER_INFO            0x0000061c
+
+#define MSR_PP0_POWER_LIMIT            0x00000638
+#define MSR_PP0_ENERGY_STATUS          0x00000639
+#define MSR_PP0_POLICY                 0x0000063a
+#define MSR_PP0_PERF_STATUS            0x0000063b
+
+#define MSR_PP1_POWER_LIMIT            0x00000640
+#define MSR_PP1_ENERGY_STATUS          0x00000641
+#define MSR_PP1_POLICY                 0x00000642
+
+#define MSR_CORE_C1_RES                        0x00000660
+
 #define MSR_AMD64_MC0_MASK             0xc0010044
 
 #define MSR_IA32_MCx_CTL(x)            (MSR_IA32_MC0_CTL + 4*(x))
 #define MSR_P6_EVNTSEL0                        0x00000186
 #define MSR_P6_EVNTSEL1                        0x00000187
 
+#define MSR_KNC_PERFCTR0               0x00000020
+#define MSR_KNC_PERFCTR1               0x00000021
+#define MSR_KNC_EVNTSEL0               0x00000028
+#define MSR_KNC_EVNTSEL1               0x00000029
+
+/* Alternative perfctr range with full access. */
+#define MSR_IA32_PMC0                  0x000004c1
+
 /* AMD64 MSRs. Not complete. See the architecture manual for a more
    complete list. */
 
 #define MSR_AMD64_PATCH_LEVEL          0x0000008b
+#define MSR_AMD64_TSC_RATIO            0xc0000104
 #define MSR_AMD64_NB_CFG               0xc001001f
 #define MSR_AMD64_PATCH_LOADER         0xc0010020
 #define MSR_AMD64_OSVW_ID_LENGTH       0xc0010140
 #define MSR_AMD64_OSVW_STATUS          0xc0010141
+#define MSR_AMD64_LS_CFG               0xc0011020
 #define MSR_AMD64_DC_CFG               0xc0011022
+#define MSR_AMD64_BU_CFG2              0xc001102a
 #define MSR_AMD64_IBSFETCHCTL          0xc0011030
 #define MSR_AMD64_IBSFETCHLINAD                0xc0011031
 #define MSR_AMD64_IBSFETCHPHYSAD       0xc0011032
+#define MSR_AMD64_IBSFETCH_REG_COUNT   3
+#define MSR_AMD64_IBSFETCH_REG_MASK    ((1UL<<MSR_AMD64_IBSFETCH_REG_COUNT)-1)
 #define MSR_AMD64_IBSOPCTL             0xc0011033
 #define MSR_AMD64_IBSOPRIP             0xc0011034
 #define MSR_AMD64_IBSOPDATA            0xc0011035
 #define MSR_AMD64_IBSOPDATA3           0xc0011037
 #define MSR_AMD64_IBSDCLINAD           0xc0011038
 #define MSR_AMD64_IBSDCPHYSAD          0xc0011039
+#define MSR_AMD64_IBSOP_REG_COUNT      7
+#define MSR_AMD64_IBSOP_REG_MASK       ((1UL<<MSR_AMD64_IBSOP_REG_COUNT)-1)
 #define MSR_AMD64_IBSCTL               0xc001103a
 #define MSR_AMD64_IBSBRTARGET          0xc001103b
+#define MSR_AMD64_IBS_REG_COUNT_MAX    8 /* includes MSR_AMD64_IBSBRTARGET */
+
+/* Fam 16h MSRs */
+#define MSR_F16H_L2I_PERF_CTL          0xc0010230
+#define MSR_F16H_L2I_PERF_CTR          0xc0010231
 
 /* Fam 15h MSRs */
 #define MSR_F15H_PERF_CTL              0xc0010200
 #define MSR_F15H_PERF_CTR              0xc0010201
+#define MSR_F15H_NB_PERF_CTL           0xc0010240
+#define MSR_F15H_NB_PERF_CTR           0xc0010241
 
 /* Fam 10h MSRs */
 #define MSR_FAM10H_MMIO_CONF_BASE      0xc0010058
 #define MSR_IA32_PLATFORM_ID           0x00000017
 #define MSR_IA32_EBL_CR_POWERON                0x0000002a
 #define MSR_EBC_FREQUENCY_ID           0x0000002c
+#define MSR_SMI_COUNT                  0x00000034
 #define MSR_IA32_FEATURE_CONTROL        0x0000003a
+#define MSR_IA32_TSC_ADJUST             0x0000003b
 
 #define FEATURE_CONTROL_LOCKED                         (1<<0)
 #define FEATURE_CONTROL_VMXON_ENABLED_INSIDE_SMX       (1<<1)
 #define MSR_IA32_APICBASE_ENABLE       (1<<11)
 #define MSR_IA32_APICBASE_BASE         (0xfffff<<12)
 
+#define MSR_IA32_TSCDEADLINE           0x000006e0
+
 #define MSR_IA32_UCODE_WRITE           0x00000079
 #define MSR_IA32_UCODE_REV             0x0000008b
 
 #define MSR_IA32_PERF_STATUS           0x00000198
 #define MSR_IA32_PERF_CTL              0x00000199
+#define MSR_AMD_PSTATE_DEF_BASE                0xc0010064
+#define MSR_AMD_PERF_STATUS            0xc0010063
+#define MSR_AMD_PERF_CTL               0xc0010062
 
+#define MSR_PMG_CST_CONFIG_CTL         0x000000e2
+#define MSR_PMG_IO_CAPTURE_ADR         0x000000e4
 #define MSR_IA32_MPERF                 0x000000e7
 #define MSR_IA32_APERF                 0x000000e8
 
 #define MSR_IA32_TEMPERATURE_TARGET    0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS      0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE   0
+#define ENERGY_PERF_BIAS_NORMAL                6
+#define ENERGY_PERF_BIAS_POWERSAVE     15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS          0x000001b1
 
 #define MSR_IA32_MISC_ENABLE_TURBO_DISABLE     (1ULL << 38)
 #define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE   (1ULL << 39)
 
+#define MSR_IA32_TSC_DEADLINE          0x000006E0
+
 /* P4/Xeon+ specific */
 #define MSR_IA32_MCG_EAX               0x00000180
 #define MSR_IA32_MCG_EBX               0x00000181
 #define MSR_IA32_VMX_VMCS_ENUM          0x0000048a
 #define MSR_IA32_VMX_PROCBASED_CTLS2    0x0000048b
 #define MSR_IA32_VMX_EPT_VPID_CAP       0x0000048c
-
+#define MSR_IA32_VMX_TRUE_PINBASED_CTLS  0x0000048d
+#define MSR_IA32_VMX_TRUE_PROCBASED_CTLS 0x0000048e
+#define MSR_IA32_VMX_TRUE_EXIT_CTLS      0x0000048f
+#define MSR_IA32_VMX_TRUE_ENTRY_CTLS     0x00000490
+#define MSR_IA32_VMX_VMFUNC             0x00000491
+
+/* VMX_BASIC bits and bitmasks */
+#define VMX_BASIC_VMCS_SIZE_SHIFT      32
+#define VMX_BASIC_64           0x0001000000000000LLU
+#define VMX_BASIC_MEM_TYPE_SHIFT       50
+#define VMX_BASIC_MEM_TYPE_MASK        0x003c000000000000LLU
+#define VMX_BASIC_MEM_TYPE_WB  6LLU
+#define VMX_BASIC_INOUT                0x0040000000000000LLU
+
+/* MSR_IA32_VMX_MISC bits */
+#define MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS (1ULL << 29)
+#define MSR_IA32_VMX_MISC_PREEMPTION_TIMER_SCALE   0x1F
 /* AMD-V MSRs */
 
 #define MSR_VM_CR                       0xc0010114
index 3b5915d5e26a871b828677b3f92bb8914fe7ff8e..1955a752b910c3dfdf987c75948c20f1f686587b 100644 (file)
@@ -175,6 +175,25 @@ static inline int wrmsr_safe_regs(u32 regs[8])
        return native_wrmsr_safe_regs(regs);
 }
 
+typedef struct msr_t {
+       uint32_t lo;
+       uint32_t hi;
+} msr_t;
+
+static inline struct msr_t msr_read(unsigned msr_num)
+{
+       struct msr_t msr;
+
+       rdmsr(msr_num, msr.lo, msr.hi);
+
+       return msr;
+}
+
+static inline void msr_write(unsigned msr_num, msr_t msr)
+{
+       wrmsr(msr_num, msr.lo, msr.hi);
+}
+
 #define rdtscl(low)                                            \
        ((low) = (u32)__native_read_tsc())
 
@@ -210,17 +229,6 @@ do {                                                            \
 struct msr *msrs_alloc(void);
 void msrs_free(struct msr *msrs);
 
-#ifdef CONFIG_SMP
-int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
-int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
-void rdmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs);
-void wrmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs);
-int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
-int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
-int rdmsr_safe_regs_on_cpu(unsigned int cpu, u32 regs[8]);
-int wrmsr_safe_regs_on_cpu(unsigned int cpu, u32 regs[8]);
-
-#endif  /* CONFIG_SMP */
 #endif /* __KERNEL__ */
 #endif /* __ASSEMBLY__ */
 #endif /* _ASM_X86_MSR_H */
diff --git a/arch/x86/include/asm/mtrr.h b/arch/x86/include/asm/mtrr.h
new file mode 100644 (file)
index 0000000..3c11740
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * From Coreboot file of the same name
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_MTRR_H
+#define _ASM_MTRR_H
+
+/* MTRR region types */
+#define MTRR_TYPE_UNCACHEABLE  0
+#define MTRR_TYPE_WRCOMB       1
+#define MTRR_TYPE_WRTHROUGH    4
+#define MTRR_TYPE_WRPROT       5
+#define MTRR_TYPE_WRBACK       6
+
+#define MTRR_TYPE_COUNT                7
+
+#define MTRR_CAP_MSR           0x0fe
+#define MTRR_DEF_TYPE_MSR      0x2ff
+
+#define MTRR_DEF_TYPE_EN       (1 << 11)
+#define MTRR_DEF_TYPE_FIX_EN   (1 << 10)
+
+#define MTRR_PHYS_BASE_MSR(reg)        (0x200 + 2 * (reg))
+#define MTRR_PHYS_MASK_MSR(reg)        (0x200 + 2 * (reg) + 1)
+
+#define MTRR_PHYS_MASK_VALID   (1 << 11)
+
+#define MTRR_BASE_TYPE_MASK    0x7
+
+/* Number of MTRRs supported */
+#define MTRR_COUNT             8
+
+#if !defined(__ASSEMBLER__)
+
+/**
+ * Information about the previous MTRR state, set up by mtrr_open()
+ *
+ * @deftype:           Previous value of MTRR_DEF_TYPE_MSR
+ * @enable_cache:      true if cache was enabled
+ */
+struct mtrr_state {
+       uint64_t deftype;
+       bool enable_cache;
+};
+
+/**
+ * mtrr_open() - Prepare to adjust MTRRs
+ *
+ * Use mtrr_open() passing in a structure - this function will init it. Then
+ * when done, pass the same structure to mtrr_close() to re-enable MTRRs and
+ * possibly the cache.
+ *
+ * @state:     Empty structure to pass in to hold settings
+ */
+void mtrr_open(struct mtrr_state *state);
+
+/**
+ * mtrr_open() - Clean up after adjusting MTRRs, and enable them
+ *
+ * This uses the structure containing information returned from mtrr_open().
+ *
+ * @state:     Structure from mtrr_open()
+ */
+/*  */
+void mtrr_close(struct mtrr_state *state);
+
+/**
+ * mtrr_add_request() - Add a new MTRR request
+ *
+ * This adds a request for a memory region to be set up in a particular way.
+ *
+ * @type:      Requested type (MTRR_TYPE_)
+ * @start:     Start address
+ * @size:      Size
+ */
+int mtrr_add_request(int type, uint64_t start, uint64_t size);
+
+/**
+ * mtrr_commit() - set up the MTRR registers based on current requests
+ *
+ * This sets up MTRRs for the available DRAM and the requests received so far.
+ * It must be called with caches disabled.
+ *
+ * @do_caches: true if caches are currently on
+ */
+int mtrr_commit(bool do_caches);
+
+#endif
+
+#if ((CONFIG_XIP_ROM_SIZE & (CONFIG_XIP_ROM_SIZE - 1)) != 0)
+# error "CONFIG_XIP_ROM_SIZE is not a power of 2"
+#endif
+
+#if ((CONFIG_CACHE_ROM_SIZE & (CONFIG_CACHE_ROM_SIZE - 1)) != 0)
+# error "CONFIG_CACHE_ROM_SIZE is not a power of 2"
+#endif
+
+#define CACHE_ROM_BASE (((1 << 20) - (CONFIG_CACHE_ROM_SIZE >> 12)) << 12)
+
+#endif
index 6b161881e74513aa6169673266dd66ac6de11808..c30dd4c218a43d2968b3210d8c828c3bb6cc0c57 100644 (file)
 #define DEFINE_PCI_DEVICE_TABLE(_table) \
        const struct pci_device_id _table[]
 
+struct pci_controller;
+
 void pci_setup_type1(struct pci_controller *hose);
+
+/**
+ * board_pci_setup_hose() - Set up the PCI hose
+ *
+ * This is called by the common x86 PCI code to set up the PCI controller
+ * hose. It may be called when no memory/BSS is available so should just
+ * store things in 'hose' and not in BSS variables.
+ */
+void board_pci_setup_hose(struct pci_controller *hose);
+
+/**
+ * pci_early_init_hose() - Set up PCI host before relocation
+ *
+ * This allocates memory for, sets up and returns the PCI hose. It can be
+ * called before relocation. The hose will be stored in gd->hose for
+ * later use, but will become invalid one DRAM is available.
+ */
+int pci_early_init_hose(struct pci_controller **hosep);
+
+int board_pci_pre_scan(struct pci_controller *hose);
+int board_pci_post_scan(struct pci_controller *hose);
+
+/*
+ * Simple PCI access routines - these work from either the early PCI hose
+ * or the 'real' one, created after U-Boot has memory available
+ */
+unsigned int pci_read_config8(pci_dev_t dev, unsigned where);
+unsigned int pci_read_config16(pci_dev_t dev, unsigned where);
+unsigned int pci_read_config32(pci_dev_t dev, unsigned where);
+
+void pci_write_config8(pci_dev_t dev, unsigned where, unsigned value);
+void pci_write_config16(pci_dev_t dev, unsigned where, unsigned value);
+void pci_write_config32(pci_dev_t dev, unsigned where, unsigned value);
+
 #endif
diff --git a/arch/x86/include/asm/pnp_def.h b/arch/x86/include/asm/pnp_def.h
new file mode 100644 (file)
index 0000000..24b038d
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * Adapted from coreboot src/include/device/pnp_def.h
+ * and arch/x86/include/arch/io.h
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_PNP_DEF_H_
+#define _ASM_PNP_DEF_H_
+
+#include <asm/io.h>
+
+#define PNP_IDX_EN   0x30
+#define PNP_IDX_IO0  0x60
+#define PNP_IDX_IO1  0x62
+#define PNP_IDX_IO2  0x64
+#define PNP_IDX_IO3  0x66
+#define PNP_IDX_IRQ0 0x70
+#define PNP_IDX_IRQ1 0x72
+#define PNP_IDX_DRQ0 0x74
+#define PNP_IDX_DRQ1 0x75
+#define PNP_IDX_MSC0 0xf0
+#define PNP_IDX_MSC1 0xf1
+
+/* Generic functions for pnp devices */
+
+/*
+ * pnp device is a 16-bit integer composed of its i/o port address at high byte
+ * and logic function number at low byte.
+ */
+#define PNP_DEV(PORT, FUNC) (((PORT) << 8) | (FUNC))
+
+static inline void pnp_write_config(uint16_t dev, uint8_t reg, uint8_t value)
+{
+       uint8_t port = dev >> 8;
+
+       outb(reg, port);
+       outb(value, port + 1);
+}
+
+static inline uint8_t pnp_read_config(uint16_t dev, uint8_t reg)
+{
+       uint8_t port = dev >> 8;
+
+       outb(reg, port);
+       return inb(port + 1);
+}
+
+static inline void pnp_set_logical_device(uint16_t dev)
+{
+       uint8_t device = dev & 0xff;
+
+       pnp_write_config(dev, 0x07, device);
+}
+
+static inline void pnp_set_enable(uint16_t dev, int enable)
+{
+       pnp_write_config(dev, PNP_IDX_EN, enable ? 1 : 0);
+}
+
+static inline int pnp_read_enable(uint16_t dev)
+{
+       return !!pnp_read_config(dev, PNP_IDX_EN);
+}
+
+static inline void pnp_set_iobase(uint16_t dev, uint8_t index, uint16_t iobase)
+{
+       pnp_write_config(dev, index + 0, (iobase >> 8) & 0xff);
+       pnp_write_config(dev, index + 1, iobase & 0xff);
+}
+
+static inline uint16_t pnp_read_iobase(uint16_t dev, uint8_t index)
+{
+       return ((uint16_t)(pnp_read_config(dev, index)) << 8) |
+               pnp_read_config(dev, index + 1);
+}
+
+static inline void pnp_set_irq(uint16_t dev, uint8_t index, unsigned irq)
+{
+       pnp_write_config(dev, index, irq);
+}
+
+static inline void pnp_set_drq(uint16_t dev, uint8_t index, unsigned drq)
+{
+       pnp_write_config(dev, index, drq & 0xff);
+}
+
+#endif /* _ASM_PNP_DEF_H_ */
diff --git a/arch/x86/include/asm/post.h b/arch/x86/include/asm/post.h
new file mode 100644 (file)
index 0000000..f49ce99
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _post_h
+#define _post_h
+
+/* port to use for post codes */
+#define POST_PORT              0x80
+
+/* post codes which represent various stages of init */
+#define POST_START             0x1e
+#define POST_CAR_START         0x1f
+#define POST_CAR_SIPI          0x20
+#define POST_CAR_MTRR          0x21
+#define POST_CAR_UNCACHEABLE   0x22
+#define POST_CAR_BASE_ADDRESS  0x23
+#define POST_CAR_MASK          0x24
+#define POST_CAR_FILL          0x25
+#define POST_CAR_ROM_CACHE     0x26
+#define POST_CAR_MRC_CACHE     0x27
+#define POST_CAR_CPU_CACHE     0x28
+#define POST_START_STACK       0x29
+#define POST_START_DONE                0x2a
+#define POST_CPU_INIT          0x2b
+#define POST_EARLY_INIT                0x2c
+#define POST_CPU_INFO          0x2d
+#define POST_PRE_MRC           0x2e
+#define POST_MRC               0x2f
+#define POST_DRAM              0x2f
+#define POST_LAPIC             0x30
+
+#define POST_RAM_FAILURE       0xea
+#define POST_BIST_FAILURE      0xeb
+#define POST_CAR_FAILURE       0xec
+
+/* Output a post code using al - value must be 0 to 0xff */
+#ifdef __ASSEMBLY__
+#define post_code(value) \
+       movb    $value, %al; \
+       outb    %al, $POST_PORT
+#else
+#include <asm/io.h>
+
+static inline void post_code(int code)
+{
+       outb(code, POST_PORT);
+}
+#endif
+
+#endif
index bb3172ff91a447e5103d066c825495914b788d2d..3e26202aa545504ac86f9c6278c66c9f8dd87482 100644 (file)
@@ -8,26 +8,40 @@
 #ifndef __ASM_PROCESSOR_H_
 #define __ASM_PROCESSOR_H_ 1
 
-#define X86_GDT_ENTRY_SIZE     8
+#define X86_GDT_ENTRY_SIZE             8
+
+#define X86_GDT_ENTRY_NULL             0
+#define X86_GDT_ENTRY_UNUSED           1
+#define X86_GDT_ENTRY_32BIT_CS         2
+#define X86_GDT_ENTRY_32BIT_DS         3
+#define X86_GDT_ENTRY_32BIT_FS         4
+#define X86_GDT_ENTRY_16BIT_CS         5
+#define X86_GDT_ENTRY_16BIT_DS         6
+#define X86_GDT_ENTRY_16BIT_FLAT_CS    7
+#define X86_GDT_ENTRY_16BIT_FLAT_DS    8
+#define X86_GDT_NUM_ENTRIES            9
+
+#define X86_GDT_SIZE           (X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE)
 
 #ifndef __ASSEMBLY__
 
-enum {
-       X86_GDT_ENTRY_NULL = 0,
-       X86_GDT_ENTRY_UNUSED,
-       X86_GDT_ENTRY_32BIT_CS,
-       X86_GDT_ENTRY_32BIT_DS,
-       X86_GDT_ENTRY_32BIT_FS,
-       X86_GDT_ENTRY_16BIT_CS,
-       X86_GDT_ENTRY_16BIT_DS,
-       X86_GDT_NUM_ENTRIES
-};
-#else
-/* NOTE: If the above enum is modified, this define must be checked */
-#define X86_GDT_ENTRY_32BIT_DS 3
-#define X86_GDT_NUM_ENTRIES    7
-#endif
+#define PORT_RESET             0xcf9
 
-#define X86_GDT_SIZE           (X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE)
+static inline __attribute__((always_inline)) void cpu_hlt(void)
+{
+       asm("hlt");
+}
+
+static inline ulong cpu_get_sp(void)
+{
+       ulong result;
+
+       asm volatile(
+               "mov %%esp, %%eax"
+               : "=a" (result));
+       return result;
+}
+
+#endif /* __ASSEMBLY__ */
 
 #endif
diff --git a/arch/x86/include/asm/speedstep.h b/arch/x86/include/asm/speedstep.h
new file mode 100644 (file)
index 0000000..b938b86
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * From Coreboot file of same name
+ *
+ * Copyright (C) 2007-2009 coresystems GmbH
+ *               2012 secunet Security Networks AG
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_SPEEDSTEP_H
+#define _ASM_SPEEDSTEP_H
+
+/* Magic value used to locate speedstep configuration in the device tree */
+#define SPEEDSTEP_APIC_MAGIC 0xACAC
+
+/* MWAIT coordination I/O base address. This must match
+ * the \_PR_.CPU0 PM base address.
+ */
+#define PMB0_BASE 0x510
+
+/* PMB1: I/O port that triggers SMI once cores are in the same state.
+ * See CSM Trigger, at PMG_CST_CONFIG_CONTROL[6:4]
+ */
+#define PMB1_BASE 0x800
+
+struct sst_state {
+       uint8_t dynfsb:1; /* whether this is SLFM */
+       uint8_t nonint:1; /* add .5 to ratio */
+       uint8_t ratio:6;
+       uint8_t vid;
+       uint8_t is_turbo;
+       uint8_t is_slfm;
+       uint32_t power;
+};
+#define SPEEDSTEP_RATIO_SHIFT          8
+#define SPEEDSTEP_RATIO_DYNFSB_SHIFT   (7 + SPEEDSTEP_RATIO_SHIFT)
+#define SPEEDSTEP_RATIO_DYNFSB         (1 << SPEEDSTEP_RATIO_DYNFSB_SHIFT)
+#define SPEEDSTEP_RATIO_NONINT_SHIFT   (6 + SPEEDSTEP_RATIO_SHIFT)
+#define SPEEDSTEP_RATIO_NONINT         (1 << SPEEDSTEP_RATIO_NONINT_SHIFT)
+#define SPEEDSTEP_RATIO_VALUE_MASK     (0x1f << SPEEDSTEP_RATIO_SHIFT)
+#define SPEEDSTEP_VID_MASK             0x3f
+#define SPEEDSTEP_STATE_FROM_MSR(val, mask) ((struct sst_state){       \
+               0, /* dynfsb won't be read. */                          \
+               ((val & mask) & SPEEDSTEP_RATIO_NONINT) ? 1 : 0,        \
+               (((val & mask) & SPEEDSTEP_RATIO_VALUE_MASK)            \
+                                       >> SPEEDSTEP_RATIO_SHIFT),      \
+               (val & mask) & SPEEDSTEP_VID_MASK,                      \
+               0, /* not turbo by default */                           \
+               0, /* not slfm by default */                            \
+               0  /* power is hardcoded in software. */                \
+       })
+#define SPEEDSTEP_ENCODE_STATE(state)  (                               \
+       ((uint16_t)(state).dynfsb << SPEEDSTEP_RATIO_DYNFSB_SHIFT) |    \
+       ((uint16_t)(state).nonint << SPEEDSTEP_RATIO_NONINT_SHIFT) |    \
+       ((uint16_t)(state).ratio << SPEEDSTEP_RATIO_SHIFT) |            \
+       ((uint16_t)(state).vid & SPEEDSTEP_VID_MASK))
+#define SPEEDSTEP_DOUBLE_RATIO(state)  (                               \
+       ((uint8_t)(state).ratio * 2) + (state).nonint)
+
+struct sst_params {
+       struct sst_state slfm;
+       struct sst_state min;
+       struct sst_state max;
+       struct sst_state turbo;
+};
+
+/* Looking at core2's spec, the highest normal bus ratio for an eist enabled
+   processor is 14, the lowest is always 6. This makes 5 states with the
+   minimal step width of 2. With turbo mode and super LFM we have at most 7. */
+#define SPEEDSTEP_MAX_NORMAL_STATES    5
+#define SPEEDSTEP_MAX_STATES           (SPEEDSTEP_MAX_NORMAL_STATES + 2)
+struct sst_table {
+       /* Table of p-states for EMTTM and ACPI by decreasing performance. */
+       struct sst_state states[SPEEDSTEP_MAX_STATES];
+       int num_states;
+};
+
+void speedstep_gen_pstates(struct sst_table *);
+
+#define SPEEDSTEP_MAX_POWER_YONAH      31000
+#define SPEEDSTEP_MIN_POWER_YONAH      13100
+#define SPEEDSTEP_MAX_POWER_MEROM      35000
+#define SPEEDSTEP_MIN_POWER_MEROM      25000
+#define SPEEDSTEP_SLFM_POWER_MEROM     12000
+#define SPEEDSTEP_MAX_POWER_PENRYN     35000
+#define SPEEDSTEP_MIN_POWER_PENRYN     15000
+#define SPEEDSTEP_SLFM_POWER_PENRYN    12000
+
+#endif
diff --git a/arch/x86/include/asm/turbo.h b/arch/x86/include/asm/turbo.h
new file mode 100644 (file)
index 0000000..bb0d4b4
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * From coreboot file of the same name
+ *
+ * Copyright (C) 2011 The ChromiumOS Authors. All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_TURBO_H
+#define _ASM_TURBO_H
+
+#define CPUID_LEAF_PM          6
+#define PM_CAP_TURBO_MODE      (1 << 1)
+
+#define MSR_IA32_MISC_ENABLES  0x1a0
+#define H_MISC_DISABLE_TURBO   (1 << 6)
+
+enum {
+       TURBO_UNKNOWN,
+       TURBO_UNAVAILABLE,
+       TURBO_DISABLED,
+       TURBO_ENABLED,
+};
+
+/* Return current turbo state */
+int turbo_get_state(void);
+
+/* Enable turbo */
+void turbo_enable(void);
+
+#endif
index 9e525dd7820b7f4ef7e77d25cdfafad83d784df3..36145cb0a81552fe78aa5409100b22d93d097cb1 100644 (file)
@@ -9,8 +9,7 @@
 #define _U_BOOT_I386_H_        1
 
 /* cpu/.../cpu.c */
-int x86_cpu_init_r(void);
-int cpu_init_r(void);
+int arch_cpu_init(void);
 int x86_cpu_init_f(void);
 int cpu_init_f(void);
 void init_gd(gd_t *id, u64 *gdt_addr);
@@ -27,8 +26,8 @@ unsigned long get_tbclk_mhz(void);
 void timer_set_base(uint64_t base);
 int pcat_timer_init(void);
 
-/* Architecture specific - can be in arch/x86/cpu/, arch/x86/lib/, or $(BOARD)/ */
-int dram_init_f(void);
+/* Architecture specific DRAM init */
+int dram_init(void);
 
 /* cpu/.../interrupts.c */
 int cpu_init_interrupts(void);
@@ -36,6 +35,16 @@ int cpu_init_interrupts(void);
 /* board/.../... */
 int dram_init(void);
 
+int cleanup_before_linux(void);
+int x86_cleanup_before_linux(void);
+void x86_enable_caches(void);
+void x86_disable_caches(void);
+int x86_init_cache(void);
+void reset_cpu(ulong addr);
+ulong board_get_usable_ram_top(ulong total_size);
+void dram_init_banksize(void);
+int default_print_cpuinfo(void);
+
 void setup_pcat_compatibility(void);
 
 void isa_unmap_rom(u32 addr);
@@ -59,4 +68,6 @@ static inline __attribute__((no_instrument_function)) uint64_t rdtsc(void)
 void timer_set_tsc_base(uint64_t new_base);
 uint64_t timer_get_tsc(void);
 
+void quick_ram_check(void);
+
 #endif /* _U_BOOT_I386_H_ */
index 0f366626880a701ccdc066d58e819e2317ac91c7..8e7dd424ca5fdcff015ac2e305ab5ff63e7afa3e 100644 (file)
 unsigned install_e820_map(unsigned max_entries, struct e820entry *);
 
 struct boot_params *load_zimage(char *image, unsigned long kernel_size,
-                               void **load_address);
+                               ulong *load_addressp);
 int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
                 unsigned long initrd_addr, unsigned long initrd_size);
 
-void boot_zimage(void *setup_base, void *load_address);
-
 #endif
index 25b672a0c13d831f0ddf1df0f4c17717dab8c863..32d7b98fa675095a2adea573300c1227542bd648 100644 (file)
@@ -5,16 +5,22 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+obj-y += bios.o
+obj-y += bios_asm.o
+obj-y += bios_interrupts.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 obj-y  += cmd_boot.o
+obj-$(CONFIG_HAVE_FSP) += cmd_hob.o
 obj-y  += gcc.o
 obj-y  += init_helpers.o
 obj-y  += interrupts.o
+obj-y += cmd_mtrr.o
 obj-$(CONFIG_SYS_PCAT_INTERRUPTS) += pcat_interrupts.o
 obj-$(CONFIG_SYS_PCAT_TIMER) += pcat_timer.o
 obj-$(CONFIG_PCI) += pci_type1.o
 obj-y  += relocate.o
 obj-y += physmem.o
+obj-$(CONFIG_X86_RAMTEST) += ramtest.o
 obj-y  += string.o
 obj-$(CONFIG_SYS_X86_TSC_TIMER)        += tsc_timer.o
 obj-$(CONFIG_VIDEO_VGA)        += video.o
index d65c6ab1b0d173f46fd4a333809ed8adf1684640..70ccf1b0b041cb2afd17adce8bfc7beab8501629 100644 (file)
@@ -17,6 +17,9 @@
 
 int main(void)
 {
-       DEFINE(GENERATED_GD_RELOC_OFF, offsetof(gd_t, reloc_off));
+       DEFINE(GD_BIST, offsetof(gd_t, arch.bist));
+#ifdef CONFIG_HAVE_FSP
+       DEFINE(GD_HOB_LIST, offsetof(gd_t, arch.hob_list));
+#endif
        return 0;
 }
diff --git a/arch/x86/lib/bios.c b/arch/x86/lib/bios.c
new file mode 100644 (file)
index 0000000..1d75cfc
--- /dev/null
@@ -0,0 +1,350 @@
+/*
+ * From Coreboot file device/oprom/realmode/x86.c
+ *
+ * Copyright (C) 2007 Advanced Micro Devices, Inc.
+ * Copyright (C) 2009-2010 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+#include <common.h>
+#include <bios_emul.h>
+#include <vbe.h>
+#include <linux/linkage.h>
+#include <asm/cache.h>
+#include <asm/processor.h>
+#include <asm/i8259.h>
+#include <asm/io.h>
+#include <asm/post.h>
+#include "bios.h"
+
+/* Interrupt handlers for each interrupt the ROM can call */
+static int (*int_handler[256])(void);
+
+/* to have a common register file for interrupt handlers */
+X86EMU_sysEnv _X86EMU_env;
+
+asmlinkage void (*realmode_call)(u32 addr, u32 eax, u32 ebx, u32 ecx, u32 edx,
+                                u32 esi, u32 edi);
+
+asmlinkage void (*realmode_interrupt)(u32 intno, u32 eax, u32 ebx, u32 ecx,
+                                     u32 edx, u32 esi, u32 edi);
+
+static void setup_realmode_code(void)
+{
+       memcpy((void *)REALMODE_BASE, &asm_realmode_code,
+              asm_realmode_code_size);
+
+       /* Ensure the global pointers are relocated properly. */
+       realmode_call = PTR_TO_REAL_MODE(asm_realmode_call);
+       realmode_interrupt = PTR_TO_REAL_MODE(__realmode_interrupt);
+
+       debug("Real mode stub @%x: %d bytes\n", REALMODE_BASE,
+             asm_realmode_code_size);
+}
+
+static void setup_rombios(void)
+{
+       const char date[] = "06/11/99";
+       memcpy((void *)0xffff5, &date, 8);
+
+       const char ident[] = "PCI_ISA";
+       memcpy((void *)0xfffd9, &ident, 7);
+
+       /* system model: IBM-AT */
+       writeb(0xfc, 0xffffe);
+}
+
+static int int_exception_handler(void)
+{
+       /* compatibility shim */
+       struct eregs reg_info = {
+               .eax = M.x86.R_EAX,
+               .ecx = M.x86.R_ECX,
+               .edx = M.x86.R_EDX,
+               .ebx = M.x86.R_EBX,
+               .esp = M.x86.R_ESP,
+               .ebp = M.x86.R_EBP,
+               .esi = M.x86.R_ESI,
+               .edi = M.x86.R_EDI,
+               .vector = M.x86.intno,
+               .error_code = 0,
+               .eip = M.x86.R_EIP,
+               .cs = M.x86.R_CS,
+               .eflags = M.x86.R_EFLG
+       };
+       struct eregs *regs = &reg_info;
+
+       debug("Oops, exception %d while executing option rom\n", regs->vector);
+       cpu_hlt();
+
+       return 0;
+}
+
+static int int_unknown_handler(void)
+{
+       debug("Unsupported software interrupt #0x%x eax 0x%x\n",
+             M.x86.intno, M.x86.R_EAX);
+
+       return -1;
+}
+
+/* setup interrupt handlers for mainboard */
+void bios_set_interrupt_handler(int intnum, int (*int_func)(void))
+{
+       int_handler[intnum] = int_func;
+}
+
+static void setup_interrupt_handlers(void)
+{
+       int i;
+
+       /*
+        * The first 16 int_handler functions are not BIOS services,
+        * but the CPU-generated exceptions ("hardware interrupts")
+        */
+       for (i = 0; i < 0x10; i++)
+               int_handler[i] = &int_exception_handler;
+
+       /* Mark all other int_handler calls as unknown first */
+       for (i = 0x10; i < 0x100; i++) {
+               /* Skip if bios_set_interrupt_handler() isn't called first */
+               if (int_handler[i])
+                       continue;
+
+                /*
+                 * Now set the default functions that are actually needed
+                 * to initialize the option roms. The board may override
+                 * these with bios_set_interrupt_handler()
+                */
+               switch (i) {
+               case 0x10:
+                       int_handler[0x10] = &int10_handler;
+                       break;
+               case 0x12:
+                       int_handler[0x12] = &int12_handler;
+                       break;
+               case 0x16:
+                       int_handler[0x16] = &int16_handler;
+                       break;
+               case 0x1a:
+                       int_handler[0x1a] = &int1a_handler;
+                       break;
+               default:
+                       int_handler[i] = &int_unknown_handler;
+                       break;
+               }
+       }
+}
+
+static void write_idt_stub(void *target, u8 intnum)
+{
+       unsigned char *codeptr;
+
+       codeptr = (unsigned char *)target;
+       memcpy(codeptr, &__idt_handler, __idt_handler_size);
+       codeptr[3] = intnum; /* modify int# in the code stub. */
+}
+
+static void setup_realmode_idt(void)
+{
+       struct realmode_idt *idts = NULL;
+       int i;
+
+       /*
+        * Copy IDT stub code for each interrupt. This might seem wasteful
+        * but it is really simple
+        */
+        for (i = 0; i < 256; i++) {
+               idts[i].cs = 0;
+               idts[i].offset = 0x1000 + (i * __idt_handler_size);
+               write_idt_stub((void *)((u32)idts[i].offset), i);
+       }
+
+       /*
+        * Many option ROMs use the hard coded interrupt entry points in the
+        * system bios. So install them at the known locations.
+        */
+
+       /* int42 is the relocated int10 */
+       write_idt_stub((void *)0xff065, 0x42);
+       /* BIOS Int 11 Handler F000:F84D */
+       write_idt_stub((void *)0xff84d, 0x11);
+       /* BIOS Int 12 Handler F000:F841 */
+       write_idt_stub((void *)0xff841, 0x12);
+       /* BIOS Int 13 Handler F000:EC59 */
+       write_idt_stub((void *)0xfec59, 0x13);
+       /* BIOS Int 14 Handler F000:E739 */
+       write_idt_stub((void *)0xfe739, 0x14);
+       /* BIOS Int 15 Handler F000:F859 */
+       write_idt_stub((void *)0xff859, 0x15);
+       /* BIOS Int 16 Handler F000:E82E */
+       write_idt_stub((void *)0xfe82e, 0x16);
+       /* BIOS Int 17 Handler F000:EFD2 */
+       write_idt_stub((void *)0xfefd2, 0x17);
+       /* ROM BIOS Int 1A Handler F000:FE6E */
+       write_idt_stub((void *)0xffe6e, 0x1a);
+}
+
+static u8 vbe_get_mode_info(struct vbe_mode_info *mi)
+{
+       u16 buffer_seg;
+       u16 buffer_adr;
+       char *buffer;
+
+       debug("VBE: Getting information about VESA mode %04x\n",
+             mi->video_mode);
+       buffer = PTR_TO_REAL_MODE(asm_realmode_buffer);
+       buffer_seg = (((unsigned long)buffer) >> 4) & 0xff00;
+       buffer_adr = ((unsigned long)buffer) & 0xffff;
+
+       realmode_interrupt(0x10, VESA_GET_MODE_INFO, 0x0000, mi->video_mode,
+                          0x0000, buffer_seg, buffer_adr);
+       memcpy(mi->mode_info_block, buffer, sizeof(struct vbe_mode_info));
+       mi->valid = true;
+
+       return 0;
+}
+
+static u8 vbe_set_mode(struct vbe_mode_info *mi)
+{
+       int video_mode = mi->video_mode;
+
+       debug("VBE: Setting VESA mode %#04x\n", video_mode);
+       /* request linear framebuffer mode */
+       video_mode |= (1 << 14);
+       /* don't clear the framebuffer, we do that later */
+       video_mode |= (1 << 15);
+       realmode_interrupt(0x10, VESA_SET_MODE, video_mode,
+                          0x0000, 0x0000, 0x0000, 0x0000);
+
+       return 0;
+}
+
+static void vbe_set_graphics(int vesa_mode, struct vbe_mode_info *mode_info)
+{
+       unsigned char *framebuffer;
+
+       mode_info->video_mode = (1 << 14) | vesa_mode;
+       vbe_get_mode_info(mode_info);
+
+       framebuffer = (unsigned char *)mode_info->vesa.phys_base_ptr;
+       debug("VBE: resolution:  %dx%d@%d\n",
+             le16_to_cpu(mode_info->vesa.x_resolution),
+             le16_to_cpu(mode_info->vesa.y_resolution),
+             mode_info->vesa.bits_per_pixel);
+       debug("VBE: framebuffer: %p\n", framebuffer);
+       if (!framebuffer) {
+               debug("VBE: Mode does not support linear framebuffer\n");
+               return;
+       }
+
+       mode_info->video_mode &= 0x3ff;
+       vbe_set_mode(mode_info);
+}
+
+void bios_run_on_x86(pci_dev_t pcidev, unsigned long addr, int vesa_mode,
+                    struct vbe_mode_info *mode_info)
+{
+       u32 num_dev;
+
+       num_dev = PCI_BUS(pcidev) << 8 | PCI_DEV(pcidev) << 3 |
+                       PCI_FUNC(pcidev);
+
+       /* Needed to avoid exceptions in some ROMs */
+       interrupt_init();
+
+       /* Set up some legacy information in the F segment */
+       setup_rombios();
+
+       /* Set up C interrupt handlers */
+       setup_interrupt_handlers();
+
+       /* Set up real-mode IDT */
+       setup_realmode_idt();
+
+       /* Make sure the code is placed. */
+       setup_realmode_code();
+
+       debug("Calling Option ROM at %lx, pci device %#x...", addr, num_dev);
+
+       /* Option ROM entry point is at OPROM start + 3 */
+       realmode_call(addr + 0x0003, num_dev, 0xffff, 0x0000, 0xffff, 0x0,
+                     0x0);
+       debug("done\n");
+
+       if (vesa_mode != -1)
+               vbe_set_graphics(vesa_mode, mode_info);
+}
+
+asmlinkage int interrupt_handler(u32 intnumber, u32 gsfs, u32 dses,
+                                u32 edi, u32 esi, u32 ebp, u32 esp,
+                                u32 ebx, u32 edx, u32 ecx, u32 eax,
+                                u32 cs_ip, u16 stackflags)
+{
+       u32 ip;
+       u32 cs;
+       u32 flags;
+       int ret = 0;
+
+       ip = cs_ip & 0xffff;
+       cs = cs_ip >> 16;
+       flags = stackflags;
+
+#ifdef CONFIG_REALMODE_DEBUG
+       debug("oprom: INT# 0x%x\n", intnumber);
+       debug("oprom: eax: %08x ebx: %08x ecx: %08x edx: %08x\n",
+             eax, ebx, ecx, edx);
+       debug("oprom: ebp: %08x esp: %08x edi: %08x esi: %08x\n",
+             ebp, esp, edi, esi);
+       debug("oprom:  ip: %04x      cs: %04x   flags: %08x\n",
+             ip, cs, flags);
+       debug("oprom: stackflags = %04x\n", stackflags);
+#endif
+
+       /*
+        * Fetch arguments from the stack and put them to a place
+        * suitable for the interrupt handlers
+        */
+       M.x86.R_EAX = eax;
+       M.x86.R_ECX = ecx;
+       M.x86.R_EDX = edx;
+       M.x86.R_EBX = ebx;
+       M.x86.R_ESP = esp;
+       M.x86.R_EBP = ebp;
+       M.x86.R_ESI = esi;
+       M.x86.R_EDI = edi;
+       M.x86.intno = intnumber;
+       M.x86.R_EIP = ip;
+       M.x86.R_CS = cs;
+       M.x86.R_EFLG = flags;
+
+       /* Call the interrupt handler for this interrupt number */
+       ret = int_handler[intnumber]();
+
+       /*
+        * This code is quite strange...
+        *
+        * Put registers back on the stack. The assembler code will pop them
+        * later. We force (volatile!) changing the values of the parameters
+        * of this function. We know that they stay alive on the stack after
+        * we leave this function.
+        */
+       *(volatile u32 *)&eax = M.x86.R_EAX;
+       *(volatile u32 *)&ecx = M.x86.R_ECX;
+       *(volatile u32 *)&edx = M.x86.R_EDX;
+       *(volatile u32 *)&ebx = M.x86.R_EBX;
+       *(volatile u32 *)&esi = M.x86.R_ESI;
+       *(volatile u32 *)&edi = M.x86.R_EDI;
+       flags = M.x86.R_EFLG;
+
+       /* Pass success or error back to our caller via the CARRY flag */
+       if (ret) {
+               flags &= ~1; /* no error: clear carry */
+       } else {
+               debug("int%02x call returned error\n", intnumber);
+               flags |= 1;  /* error: set carry */
+       }
+       *(volatile u16 *)&stackflags = flags;
+
+       return ret;
+}
diff --git a/arch/x86/lib/bios.h b/arch/x86/lib/bios.h
new file mode 100644 (file)
index 0000000..668f4b5
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * From Coreboot file device/oprom/realmode/x86.h
+ *
+ * Copyright (C) 2007 Advanced Micro Devices, Inc.
+ * Copyright (C) 2009-2010 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _X86_LIB_BIOS_H
+#define _X86_LIB_BIOS_H
+
+#include <linux/linkage.h>
+
+#define REALMODE_BASE          0x600
+
+#ifdef __ASSEMBLY__
+
+#define PTR_TO_REAL_MODE(x)    (x - asm_realmode_code + REALMODE_BASE)
+
+#else
+
+/* Convert a symbol address to our real mode area */
+#define PTR_TO_REAL_MODE(sym)\
+       (void *)(REALMODE_BASE + ((char *)&(sym) - (char *)&asm_realmode_code))
+
+/*
+ * The following symbols cannot be used directly. They need to be fixed up
+ * to point to the correct address location after the code has been copied
+ * to REALMODE_BASE. Absolute symbols are not used because those symbols are
+ * relocated by U-Boot.
+ */
+extern unsigned char asm_realmode_call, __realmode_interrupt;
+extern unsigned char asm_realmode_buffer;
+
+#define DOWNTO8(A) \
+       union { \
+               struct { \
+                       union { \
+                               struct { \
+                                       uint8_t A##l; \
+                                       uint8_t A##h; \
+                               } __packed; \
+                               uint16_t A##x; \
+                       } __packed; \
+                       uint16_t h##A##x; \
+               } __packed; \
+               uint32_t e##A##x; \
+       } __packed;
+
+#define DOWNTO16(A) \
+       union { \
+               struct { \
+                       uint16_t A; \
+                       uint16_t h##A; \
+               } __packed; \
+               uint32_t e##A; \
+       } __packed;
+
+struct eregs {
+       DOWNTO8(a);
+       DOWNTO8(c);
+       DOWNTO8(d);
+       DOWNTO8(b);
+       DOWNTO16(sp);
+       DOWNTO16(bp);
+       DOWNTO16(si);
+       DOWNTO16(di);
+       uint32_t vector;
+       uint32_t error_code;
+       uint32_t eip;
+       uint32_t cs;
+       uint32_t eflags;
+};
+
+struct realmode_idt {
+       u16 offset, cs;
+};
+
+void x86_exception(struct eregs *info);
+
+/* From x86_asm.S */
+extern unsigned char __idt_handler;
+extern unsigned int __idt_handler_size;
+extern unsigned char asm_realmode_code;
+extern unsigned int asm_realmode_code_size;
+
+asmlinkage void (*realmode_call)(u32 addr, u32 eax, u32 ebx, u32 ecx, u32 edx,
+                                u32 esi, u32 edi);
+
+asmlinkage void (*realmode_interrupt)(u32 intno, u32 eax, u32 ebx, u32 ecx,
+                                     u32 edx, u32 esi, u32 edi);
+
+int int10_handler(void);
+int int12_handler(void);
+int int16_handler(void);
+int int1a_handler(void);
+#endif /*__ASSEMBLY__ */
+
+#endif
diff --git a/arch/x86/lib/bios_asm.S b/arch/x86/lib/bios_asm.S
new file mode 100644 (file)
index 0000000..4faa70e
--- /dev/null
@@ -0,0 +1,281 @@
+/*
+ * From coreboot x86_asm.S, cleaned up substantially
+ *
+ * Copyright (C) 2009-2010 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <asm/processor.h>
+#include <asm/processor-flags.h>
+#include "bios.h"
+
+#define SEG(segment)   $segment * X86_GDT_ENTRY_SIZE
+
+/*
+ * This is the interrupt handler stub code. It gets copied to the IDT and
+ * to some fixed addresses in the F segment. Before the code can used,
+ * it gets patched up by the C function copying it: byte 3 (the $0 in
+ * movb $0, %al) is overwritten with the interrupt numbers.
+ */
+
+       .code16
+       .globl __idt_handler
+__idt_handler:
+       pushal
+       movb    $0, %al /* This instruction gets modified */
+       ljmp    $0, $__interrupt_handler_16bit
+       .globl __idt_handler_size
+__idt_handler_size:
+       .long  . - __idt_handler
+
+.macro setup_registers
+       /* initial register values */
+       movl    44(%ebp), %eax
+       movl    %eax, __registers +  0 /* eax */
+       movl    48(%ebp), %eax
+       movl    %eax, __registers +  4 /* ebx */
+       movl    52(%ebp), %eax
+       movl    %eax, __registers +  8 /* ecx */
+       movl    56(%ebp), %eax
+       movl    %eax, __registers + 12 /* edx */
+       movl    60(%ebp), %eax
+       movl    %eax, __registers + 16 /* esi */
+       movl    64(%ebp), %eax
+       movl    %eax, __registers + 20 /* edi */
+.endm
+
+.macro enter_real_mode
+       /* Activate the right segment descriptor real mode. */
+       ljmp    SEG(X86_GDT_ENTRY_16BIT_CS), $PTR_TO_REAL_MODE(1f)
+1:
+.code16
+       /*
+        * Load the segment registers with properly configured segment
+        * descriptors. They will retain these configurations (limits,
+        * writability, etc.) once protected mode is turned off.
+        */
+       mov     SEG(X86_GDT_ENTRY_16BIT_DS), %ax
+       mov     %ax, %ds
+       mov     %ax, %es
+       mov     %ax, %fs
+       mov     %ax, %gs
+       mov     %ax, %ss
+
+       /* Turn off protection */
+       movl    %cr0, %eax
+       andl    $~X86_CR0_PE, %eax
+       movl    %eax, %cr0
+
+       /* Now really going into real mode */
+       ljmp    $0, $PTR_TO_REAL_MODE(1f)
+1:
+       /*
+        * Set up a stack: Put the stack at the end of page zero. That way
+        * we can easily share it between real and protected, since the
+        * 16-bit ESP at segment 0 will work for any case.
+        */
+       mov     $0x0, %ax
+       mov     %ax, %ss
+
+       /* Load 16 bit IDT */
+       xor     %ax, %ax
+       mov     %ax, %ds
+       lidt    __realmode_idt
+
+.endm
+
+.macro prepare_for_irom
+       movl    $0x1000, %eax
+       movl    %eax, %esp
+
+       /* Initialise registers for option rom lcall */
+       movl    __registers +  0, %eax
+       movl    __registers +  4, %ebx
+       movl    __registers +  8, %ecx
+       movl    __registers + 12, %edx
+       movl    __registers + 16, %esi
+       movl    __registers + 20, %edi
+
+       /* Set all segments to 0x0000, ds to 0x0040 */
+       push    %ax
+       xor     %ax, %ax
+       mov     %ax, %es
+       mov     %ax, %fs
+       mov     %ax, %gs
+       mov     SEG(X86_GDT_ENTRY_16BIT_FLAT_DS), %ax
+       mov     %ax, %ds
+       pop     %ax
+
+.endm
+
+.macro enter_protected_mode
+       /* Go back to protected mode */
+       movl    %cr0, %eax
+       orl     $X86_CR0_PE, %eax
+       movl    %eax, %cr0
+
+       /* Now that we are in protected mode jump to a 32 bit code segment */
+       data32  ljmp    SEG(X86_GDT_ENTRY_32BIT_CS), $PTR_TO_REAL_MODE(1f)
+1:
+       .code32
+       mov     SEG(X86_GDT_ENTRY_32BIT_DS), %ax
+       mov     %ax, %ds
+       mov     %ax, %es
+       mov     %ax, %gs
+       mov     %ax, %ss
+       mov     SEG(X86_GDT_ENTRY_32BIT_FS), %ax
+       mov     %ax, %fs
+
+       /* restore proper idt */
+       lidt    idt_ptr
+.endm
+
+/*
+ * In order to be independent of U-Boot's position in RAM we relocate a part
+ * of the code to the first megabyte of RAM, so the CPU can use it in
+ * real-mode. This code lives at asm_realmode_code.
+ */
+       .globl asm_realmode_code
+asm_realmode_code:
+
+/* Realmode IDT pointer structure. */
+__realmode_idt = PTR_TO_REAL_MODE(.)
+       .word 1023      /* 16 bit limit */
+       .long 0         /* 24 bit base */
+       .word 0
+
+/* Preserve old stack */
+__stack = PTR_TO_REAL_MODE(.)
+       .long 0
+
+/* Register store for realmode_call and realmode_interrupt */
+__registers = PTR_TO_REAL_MODE(.)
+       .long 0 /*  0 - EAX */
+       .long 0 /*  4 - EBX */
+       .long 0 /*  8 - ECX */
+       .long 0 /* 12 - EDX */
+       .long 0 /* 16 - ESI */
+       .long 0 /* 20 - EDI */
+
+/* 256 byte buffer, used by int10 */
+       .globl asm_realmode_buffer
+asm_realmode_buffer:
+       .skip 256
+
+       .code32
+       .globl asm_realmode_call
+asm_realmode_call:
+       /* save all registers to the stack */
+       pusha
+       pushf
+       movl    %esp, __stack
+       movl    %esp, %ebp
+
+       /*
+        * This function is called with regparm=0 and we have to skip the
+        * 36 bytes from pushf+pusha. Hence start at 40.
+        * Set up our call instruction.
+        */
+       movl    40(%ebp), %eax
+       mov     %ax, __lcall_instr + 1
+       andl    $0xffff0000, %eax
+       shrl    $4, %eax
+       mov     %ax, __lcall_instr + 3
+
+       wbinvd
+
+       setup_registers
+       enter_real_mode
+       prepare_for_irom
+
+__lcall_instr = PTR_TO_REAL_MODE(.)
+       .byte 0x9a
+       .word 0x0000, 0x0000
+
+       enter_protected_mode
+
+       /* restore stack pointer, eflags and register values and exit */
+       movl    __stack, %esp
+       popf
+       popa
+       ret
+
+       .globl __realmode_interrupt
+__realmode_interrupt:
+       /* save all registers to the stack and store the stack pointer */
+       pusha
+       pushf
+       movl    %esp, __stack
+       movl    %esp, %ebp
+
+       /*
+        * This function is called with regparm=0 and we have to skip the
+        * 36 bytes from pushf+pusha. Hence start at 40.
+        * Prepare interrupt calling code.
+        */
+       movl    40(%ebp), %eax
+       movb    %al, __intXX_instr + 1 /* intno */
+
+       setup_registers
+       enter_real_mode
+       prepare_for_irom
+
+__intXX_instr = PTR_TO_REAL_MODE(.)
+       .byte 0xcd, 0x00 /* This becomes intXX */
+
+       enter_protected_mode
+
+       /* restore stack pointer, eflags and register values and exit */
+       movl    __stack, %esp
+       popf
+       popa
+       ret
+
+/*
+ * This is the 16-bit interrupt entry point called by the IDT stub code.
+ *
+ * Before this code code is called, %eax is pushed to the stack, and the
+ * interrupt number is loaded into %al. On return this function cleans up
+ * for its caller.
+ */
+       .code16
+__interrupt_handler_16bit = PTR_TO_REAL_MODE(.)
+       push    %ds
+       push    %es
+       push    %fs
+       push    %gs
+
+       /* Clear DF to not break ABI assumptions */
+       cld
+
+       /*
+        * Clean up the interrupt number. We could do this in the stub, but
+        * it would cost two more bytes per stub entry.
+        */
+       andl    $0xff, %eax
+       pushl   %eax            /* ... and make it the first parameter */
+
+       enter_protected_mode
+
+       /* Call the C interrupt handler */
+       movl    $interrupt_handler, %eax
+       call    *%eax
+
+       enter_real_mode
+
+       /*
+        * Restore all registers, including those manipulated by the C
+        * handler
+        */
+       popl    %eax
+       pop     %gs
+       pop     %fs
+       pop     %es
+       pop     %ds
+       popal
+       iret
+
+       .globl asm_realmode_code_size
+asm_realmode_code_size:
+       .long  . - asm_realmode_code
diff --git a/arch/x86/lib/bios_interrupts.c b/arch/x86/lib/bios_interrupts.c
new file mode 100644 (file)
index 0000000..b0e2ecb
--- /dev/null
@@ -0,0 +1,217 @@
+/*
+ * From Coreboot
+ *
+ * Copyright (C) 2001 Ronald G. Minnich
+ * Copyright (C) 2005 Nick.Barker9@btinternet.com
+ * Copyright (C) 2007-2009 coresystems GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/pci.h>
+#include "bios_emul.h"
+
+/* errors go in AH. Just set these up so that word assigns will work */
+enum {
+       PCIBIOS_SUCCESSFUL = 0x0000,
+       PCIBIOS_UNSUPPORTED = 0x8100,
+       PCIBIOS_BADVENDOR = 0x8300,
+       PCIBIOS_NODEV = 0x8600,
+       PCIBIOS_BADREG = 0x8700
+};
+
+int int10_handler(void)
+{
+       static u8 cursor_row, cursor_col;
+       int res = 0;
+
+       switch ((M.x86.R_EAX & 0xff00) >> 8) {
+       case 0x01: /* Set cursor shape */
+               res = 1;
+               break;
+       case 0x02: /* Set cursor position */
+               if (cursor_row != ((M.x86.R_EDX >> 8) & 0xff) ||
+                   cursor_col >= (M.x86.R_EDX & 0xff)) {
+                       debug("\n");
+               }
+               cursor_row = (M.x86.R_EDX >> 8) & 0xff;
+               cursor_col = M.x86.R_EDX & 0xff;
+               res = 1;
+               break;
+       case 0x03: /* Get cursor position */
+               M.x86.R_EAX &= 0x00ff;
+               M.x86.R_ECX = 0x0607;
+               M.x86.R_EDX = (cursor_row << 8) | cursor_col;
+               res = 1;
+               break;
+       case 0x06: /* Scroll up */
+               debug("\n");
+               res = 1;
+               break;
+       case 0x08: /* Get Character and Mode at Cursor Position */
+               M.x86.R_EAX = 0x0f00 | 'A'; /* White on black 'A' */
+               res = 1;
+               break;
+       case 0x09: /* Write Character and attribute */
+       case 0x0e: /* Write Character */
+               debug("%c", M.x86.R_EAX & 0xff);
+               res = 1;
+               break;
+       case 0x0f: /* Get video mode */
+               M.x86.R_EAX = 0x5002; /*80 x 25 */
+               M.x86.R_EBX &= 0x00ff;
+               res = 1;
+               break;
+       default:
+               printf("Unknown INT10 function %04x\n", M.x86.R_EAX & 0xffff);
+               break;
+       }
+       return res;
+}
+
+int int12_handler(void)
+{
+       M.x86.R_EAX = 64 * 1024;
+       return 1;
+}
+
+int int16_handler(void)
+{
+       int res = 0;
+
+       switch ((M.x86.R_EAX & 0xff00) >> 8) {
+       case 0x00: /* Check for Keystroke */
+               M.x86.R_EAX = 0x6120; /* Space Bar, Space */
+               res = 1;
+               break;
+       case 0x01: /* Check for Keystroke */
+               M.x86.R_EFLG |= 1 << 6; /* Zero Flag set (no key available) */
+               res = 1;
+               break;
+       default:
+               printf("Unknown INT16 function %04x\n", M.x86.R_EAX & 0xffff);
+
+break;
+       }
+       return res;
+}
+
+#define PCI_CONFIG_SPACE_TYPE1 (1 << 0)
+#define PCI_SPECIAL_CYCLE_TYPE1        (1 << 4)
+
+int int1a_handler(void)
+{
+       unsigned short func = (unsigned short)M.x86.R_EAX;
+       int retval = 1;
+       unsigned short devid, vendorid, devfn;
+       /* Use short to get rid of gabage in upper half of 32-bit register */
+       short devindex;
+       unsigned char bus;
+       pci_dev_t dev;
+       u32 dword;
+       u16 word;
+       u8 byte, reg;
+
+       switch (func) {
+       case 0xb101: /* PCIBIOS Check */
+               M.x86.R_EDX = 0x20494350;       /* ' ICP' */
+               M.x86.R_EAX &= 0xffff0000; /* Clear AH / AL */
+               M.x86.R_EAX |= PCI_CONFIG_SPACE_TYPE1 |
+                               PCI_SPECIAL_CYCLE_TYPE1;
+               /*
+                * last bus in the system. Hard code to 255 for now.
+                * dev_enumerate() does not seem to tell us (publically)
+                */
+               M.x86.R_ECX = 0xff;
+               M.x86.R_EDI = 0x00000000;       /* protected mode entry */
+               retval = 1;
+               break;
+       case 0xb102: /* Find Device */
+               devid = M.x86.R_ECX;
+               vendorid = M.x86.R_EDX;
+               devindex = M.x86.R_ESI;
+               dev = pci_find_device(vendorid, devid, devindex);
+               if (dev != -1) {
+                       unsigned short busdevfn;
+                       M.x86.R_EAX &= 0xffff00ff; /* Clear AH */
+                       M.x86.R_EAX |= PCIBIOS_SUCCESSFUL;
+                       /*
+                        * busnum is an unsigned char;
+                        * devfn is an int, so we mask it off.
+                        */
+                       busdevfn = (PCI_BUS(dev) << 8) | PCI_DEV(dev) << 3 |
+                               PCI_FUNC(dev);
+                       debug("0x%x: return 0x%x\n", func, busdevfn);
+                       M.x86.R_EBX = busdevfn;
+                       retval = 1;
+               } else {
+                       M.x86.R_EAX &= 0xffff00ff; /* Clear AH */
+                       M.x86.R_EAX |= PCIBIOS_NODEV;
+                       retval = 0;
+               }
+               break;
+       case 0xb10a: /* Read Config Dword */
+       case 0xb109: /* Read Config Word */
+       case 0xb108: /* Read Config Byte */
+       case 0xb10d: /* Write Config Dword */
+       case 0xb10c: /* Write Config Word */
+       case 0xb10b: /* Write Config Byte */
+               devfn = M.x86.R_EBX & 0xff;
+               bus = M.x86.R_EBX >> 8;
+               reg = M.x86.R_EDI;
+               dev = PCI_BDF(bus, devfn >> 3, devfn & 7);
+               if (!dev) {
+                       debug("0x%x: BAD DEVICE bus %d devfn 0x%x\n", func,
+                             bus, devfn);
+                       /* Or are we supposed to return PCIBIOS_NODEV? */
+                       M.x86.R_EAX &= 0xffff00ff; /* Clear AH */
+                       M.x86.R_EAX |= PCIBIOS_BADREG;
+                       retval = 0;
+                       return retval;
+               }
+               switch (func) {
+               case 0xb108: /* Read Config Byte */
+                       byte = pci_read_config8(dev, reg);
+                       M.x86.R_ECX = byte;
+                       break;
+               case 0xb109: /* Read Config Word */
+                       word = pci_read_config16(dev, reg);
+                       M.x86.R_ECX = word;
+                       break;
+               case 0xb10a: /* Read Config Dword */
+                       dword = pci_read_config32(dev, reg);
+                       M.x86.R_ECX = dword;
+                       break;
+               case 0xb10b: /* Write Config Byte */
+                       byte = M.x86.R_ECX;
+                       pci_write_config8(dev, reg, byte);
+                       break;
+               case 0xb10c: /* Write Config Word */
+                       word = M.x86.R_ECX;
+                       pci_write_config16(dev, reg, word);
+                       break;
+               case 0xb10d: /* Write Config Dword */
+                       dword = M.x86.R_ECX;
+                       pci_write_config32(dev, reg, dword);
+                       break;
+               }
+
+#ifdef CONFIG_REALMODE_DEBUG
+               debug("0x%x: bus %d devfn 0x%x reg 0x%x val 0x%x\n", func,
+                     bus, devfn, reg, M.x86.R_ECX);
+#endif
+               M.x86.R_EAX &= 0xffff00ff; /* Clear AH */
+               M.x86.R_EAX |= PCIBIOS_SUCCESSFUL;
+               retval = 1;
+               break;
+       default:
+               printf("UNSUPPORTED PCIBIOS FUNCTION 0x%x\n", func);
+               M.x86.R_EAX &= 0xffff00ff; /* Clear AH */
+               M.x86.R_EAX |= PCIBIOS_UNSUPPORTED;
+               retval = 0;
+               break;
+       }
+
+       return retval;
+}
index 4c5c7f5aa796bc679cf2bb91f6f16f64de128098..86030cf52aab1c3994d805d47d16c17e27178f05 100644 (file)
 
 #include <common.h>
 #include <command.h>
+#include <errno.h>
 #include <fdt_support.h>
 #include <image.h>
 #include <u-boot/zlib.h>
 #include <asm/bootparam.h>
+#include <asm/cpu.h>
 #include <asm/byteorder.h>
 #include <asm/zimage.h>
 #ifdef CONFIG_SYS_COREBOOT
@@ -109,17 +111,17 @@ static int boot_prep_linux(bootm_headers_t *images)
        }
 
        if (is_zimage) {
-               void *load_address;
+               ulong load_address;
                char *base_ptr;
 
                base_ptr = (char *)load_zimage(data, len, &load_address);
-               images->os.load = (ulong)load_address;
+               images->os.load = load_address;
                cmd_line_dest = base_ptr + COMMAND_LINE_OFFSET;
                images->ep = (ulong)base_ptr;
        } else if (images->ep) {
                cmd_line_dest = (void *)images->ep + COMMAND_LINE_OFFSET;
        } else {
-               printf("## Kernel loading failed (no setup) ...\n");
+               printf("## Kernel loading failed (missing x86 kernel setup) ...\n");
                goto error;
        }
 
@@ -139,16 +141,50 @@ error:
        return 1;
 }
 
+int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit)
+{
+       bootm_announce_and_cleanup();
+
+#ifdef CONFIG_SYS_COREBOOT
+       timestamp_add_now(TS_U_BOOT_START_KERNEL);
+#endif
+       if (image_64bit) {
+               if (!cpu_has_64bit()) {
+                       puts("Cannot boot 64-bit kernel on 32-bit machine\n");
+                       return -EFAULT;
+               }
+               return cpu_jump_to_64bit(setup_base, load_address);
+       } else {
+               /*
+               * Set %ebx, %ebp, and %edi to 0, %esi to point to the
+               * boot_params structure, and then jump to the kernel. We
+               * assume that %cs is 0x10, 4GB flat, and read/execute, and
+               * the data segments are 0x18, 4GB flat, and read/write.
+               * U-boot is setting them up that way for itself in
+               * arch/i386/cpu/cpu.c.
+               */
+               __asm__ __volatile__ (
+               "movl $0, %%ebp\n"
+               "cli\n"
+               "jmp *%[kernel_entry]\n"
+               :: [kernel_entry]"a"(load_address),
+               [boot_params] "S"(setup_base),
+               "b"(0), "D"(0)
+               );
+       }
+
+       /* We can't get to here */
+       return -EFAULT;
+}
+
 /* Subcommand: GO */
 static int boot_jump_linux(bootm_headers_t *images)
 {
        debug("## Transferring control to Linux (at address %08lx, kernel %08lx) ...\n",
              images->ep, images->os.load);
 
-       boot_zimage((struct boot_params *)images->ep, (void *)images->os.load);
-       /* does not return */
-
-       return 1;
+       return boot_linux_kernel(images->ep, images->os.load,
+                                images->os.arch == IH_ARCH_X86_64);
 }
 
 int do_bootm_linux(int flag, int argc, char * const argv[],
@@ -161,10 +197,8 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
        if (flag & BOOTM_STATE_OS_PREP)
                return boot_prep_linux(images);
 
-       if (flag & BOOTM_STATE_OS_GO) {
-               boot_jump_linux(images);
-               return 0;
-       }
+       if (flag & BOOTM_STATE_OS_GO)
+               return boot_jump_linux(images);
 
        return boot_jump_linux(images);
 }
diff --git a/arch/x86/lib/cmd_hob.c b/arch/x86/lib/cmd_hob.c
new file mode 100644 (file)
index 0000000..a0ef037
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <linux/compiler.h>
+#include <asm/arch/fsp/fsp_support.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static char *hob_type[] = {
+       "reserved",
+       "Hand-off",
+       "Memory Allocation",
+       "Resource Descriptor",
+       "GUID Extension",
+       "Firmware Volume",
+       "CPU",
+       "Memory Pool",
+       "reserved",
+       "Firmware Volume 2",
+       "Load PEIM Unused",
+       "UEFI Capsule",
+};
+
+int do_hob(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       const struct hob_header *hdr;
+       uint type;
+       char *desc;
+       int i = 0;
+
+       hdr = gd->arch.hob_list;
+
+       printf("HOB list address: 0x%08x\n\n", (unsigned int)hdr);
+
+       printf("No. | Address  | Type                | Length in Bytes\n");
+       printf("----|----------|---------------------|----------------\n");
+       while (!end_of_hob(hdr)) {
+               printf("%-3d | %08x | ", i, (unsigned int)hdr);
+               type = hdr->type;
+               if (type == HOB_TYPE_UNUSED)
+                       desc = "*Unused*";
+               else if (type == HOB_TYPE_EOH)
+                       desc = "*END OF HOB*";
+               else if (type >= 0 && type <= ARRAY_SIZE(hob_type))
+                       desc = hob_type[type];
+               else
+                       desc = "*Invalid Type*";
+               printf("%-19s | %-15d\n", desc, hdr->len);
+               hdr = get_next_hob(hdr);
+               i++;
+       }
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       hob,    1,      1,      do_hob,
+       "print Firmware Support Package (FSP) Hand-Off Block information",
+       ""
+);
diff --git a/arch/x86/lib/cmd_mtrr.c b/arch/x86/lib/cmd_mtrr.c
new file mode 100644 (file)
index 0000000..7e0506b
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * (C) Copyright 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/msr.h>
+#include <asm/mtrr.h>
+
+static const char *const mtrr_type_name[MTRR_TYPE_COUNT] = {
+       "Uncacheable",
+       "Combine",
+       "2",
+       "3",
+       "Through",
+       "Protect",
+       "Back",
+};
+
+static int do_mtrr_list(void)
+{
+       int i;
+
+       printf("Reg Valid Write-type   %-16s %-16s %-16s\n", "Base   ||",
+              "Mask   ||", "Size   ||");
+       for (i = 0; i < MTRR_COUNT; i++) {
+               const char *type = "Invalid";
+               uint64_t base, mask, size;
+               bool valid;
+
+               base = native_read_msr(MTRR_PHYS_BASE_MSR(i));
+               mask = native_read_msr(MTRR_PHYS_MASK_MSR(i));
+               size = ~mask & ((1ULL << CONFIG_CPU_ADDR_BITS) - 1);
+               size |= (1 << 12) - 1;
+               size += 1;
+               valid = mask & MTRR_PHYS_MASK_VALID;
+               type = mtrr_type_name[base & MTRR_BASE_TYPE_MASK];
+               printf("%d   %-5s %-12s %016llx %016llx %016llx\n", i,
+                      valid ? "Y" : "N", type, base, mask, size);
+       }
+
+       return 0;
+}
+
+static int do_mtrr_set(uint reg, int argc, char * const argv[])
+{
+       const char *typename = argv[0];
+       struct mtrr_state state;
+       uint32_t start, size;
+       uint64_t base, mask;
+       int i, type = -1;
+       bool valid;
+
+       if (argc < 3)
+               return CMD_RET_USAGE;
+       for (i = 0; i < MTRR_TYPE_COUNT; i++) {
+               if (*typename == *mtrr_type_name[i])
+                       type = i;
+       }
+       if (type == -1) {
+               printf("Invalid type name %s\n", typename);
+               return CMD_RET_USAGE;
+       }
+       start = simple_strtoul(argv[1], NULL, 16);
+       size = simple_strtoul(argv[2], NULL, 16);
+
+       base = start | type;
+       valid = native_read_msr(MTRR_PHYS_MASK_MSR(reg)) & MTRR_PHYS_MASK_VALID;
+       mask = ~((uint64_t)size - 1);
+       mask &= (1ULL << CONFIG_CPU_ADDR_BITS) - 1;
+       if (valid)
+               mask |= MTRR_PHYS_MASK_VALID;
+
+       printf("base=%llx, mask=%llx\n", base, mask);
+       mtrr_open(&state);
+       wrmsrl(MTRR_PHYS_BASE_MSR(reg), base);
+       wrmsrl(MTRR_PHYS_MASK_MSR(reg), mask);
+       mtrr_close(&state);
+
+       return 0;
+}
+
+static int mtrr_set_valid(int reg, bool valid)
+{
+       struct mtrr_state state;
+       uint64_t mask;
+
+       mtrr_open(&state);
+       mask = native_read_msr(MTRR_PHYS_MASK_MSR(reg));
+       if (valid)
+               mask |= MTRR_PHYS_MASK_VALID;
+       else
+               mask &= ~MTRR_PHYS_MASK_VALID;
+       wrmsrl(MTRR_PHYS_MASK_MSR(reg), mask);
+       mtrr_close(&state);
+
+       return 0;
+}
+
+static int do_mtrr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       const char *cmd;
+       uint reg;
+
+       cmd = argv[1];
+       if (argc < 2 || *cmd == 'l')
+               return do_mtrr_list();
+       argc -= 2;
+       argv += 2;
+       if (argc <= 0)
+               return CMD_RET_USAGE;
+       reg = simple_strtoul(argv[0], NULL, 16);
+       if (reg >= MTRR_COUNT) {
+               printf("Invalid register number\n");
+               return CMD_RET_USAGE;
+       }
+       if (*cmd == 'e')
+               return mtrr_set_valid(reg, true);
+       else if (*cmd == 'd')
+               return mtrr_set_valid(reg, false);
+       else if (*cmd == 's')
+               return do_mtrr_set(reg, argc - 1, argv + 1);
+       else
+               return CMD_RET_USAGE;
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       mtrr,   6,      1,      do_mtrr,
+       "Use x86 memory type range registers (32-bit only)",
+       "[list]        - list current registers\n"
+       "set <reg> <type> <start> <size>   - set a register\n"
+       "\t<type> is Uncacheable, Combine, Through, Protect, Back\n"
+       "disable <reg>      - disable a register\n"
+       "ensable <reg>      - enable a register"
+);
index b5d937feb3a5a10c9ed04e83c4f0718de602c16c..fc211d9d5c4924e6ed924154777e534c60177322 100644 (file)
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <fdtdec.h>
 #include <spi.h>
+#include <asm/mtrr.h>
 #include <asm/sections.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -66,6 +67,13 @@ int calculate_relocation_address(void)
 
 int init_cache_f_r(void)
 {
+#if defined(CONFIG_X86_RESET_VECTOR) & !defined(CONFIG_HAVE_FSP)
+       int ret;
+
+       ret = mtrr_commit(false);
+       if (ret)
+               return ret;
+#endif
        /* Initialise the CPU cache(s) */
        return init_cache();
 }
@@ -87,30 +95,3 @@ int init_func_spi(void)
        puts("ready\n");
        return 0;
 }
-
-int find_fdt(void)
-{
-#ifdef CONFIG_OF_EMBED
-       /* Get a pointer to the FDT */
-       gd->fdt_blob = __dtb_dt_begin;
-#elif defined CONFIG_OF_SEPARATE
-       /* FDT is at end of image */
-       gd->fdt_blob = (ulong *)&_end;
-#endif
-       /* Allow the early environment to override the fdt address */
-       gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16,
-                                               (uintptr_t)gd->fdt_blob);
-
-       return 0;
-}
-
-int prepare_fdt(void)
-{
-       /* For now, put this check after the console is ready */
-       if (fdtdec_prepare_fdt()) {
-               panic("** CONFIG_OF_CONTROL defined but no FDT - please see "
-                       "doc/README.fdt-control");
-       }
-
-       return 0;
-}
index 4c86f7fc6a85ae2910c8b6d1e8f3b047fb42fbe5..a9af87e4ce418f64b26b7b20f54fd9e62fccd851 100644 (file)
 #error "CONFIG_SYS_NUM_IRQS must equal 16 if CONFIG_SYS_NUM_IRQS is defined"
 #endif
 
-int interrupt_init(void)
+int i8259_init(void)
 {
        u8 i;
 
-       disable_interrupts();
-
        /* Mask all interrupts */
        outb(0xff, MASTER_PIC + IMR);
        outb(0xff, SLAVE_PIC + IMR);
@@ -62,7 +60,8 @@ int interrupt_init(void)
         */
        unmask_irq(2);
 
-       enable_interrupts();
+       /* Interrupt 9 should be level triggered (SCI). The OS might do this */
+       configure_irq_trigger(9, true);
 
        return 0;
 }
@@ -114,3 +113,38 @@ void specific_eoi(int irq)
 
        outb(OCW2_SEOI | irq, MASTER_PIC + OCW2);
 }
+
+#define ELCR1                  0x4d0
+#define ELCR2                  0x4d1
+
+void configure_irq_trigger(int int_num, bool is_level_triggered)
+{
+       u16 int_bits = inb(ELCR1) | (((u16)inb(ELCR2)) << 8);
+
+       debug("%s: current interrupts are 0x%x\n", __func__, int_bits);
+       if (is_level_triggered)
+               int_bits |= (1 << int_num);
+       else
+               int_bits &= ~(1 << int_num);
+
+       /* Write new values */
+       debug("%s: try to set interrupts 0x%x\n", __func__, int_bits);
+       outb((u8)(int_bits & 0xff), ELCR1);
+       outb((u8)(int_bits >> 8), ELCR2);
+
+#ifdef PARANOID_IRQ_TRIGGERS
+       /*
+        * Try reading back the new values. This seems like an error but is
+        * not
+        */
+       if (inb(ELCR1) != (int_bits & 0xff)) {
+               printf("%s: lower order bits are wrong: want 0x%x, got 0x%x\n",
+                      __func__, (int_bits & 0xff), inb(ELCR1));
+       }
+
+       if (inb(ELCR2) != (int_bits >> 8)) {
+               printf("%s: higher order bits are wrong: want 0x%x, got 0x%x\n",
+                      __func__, (int_bits>>8), inb(ELCR2));
+       }
+#endif
+}
index b57b2c30fe333ba6ac1cfc44a6689ff440b94294..c3c709ec072aa2fe2e9963040fb3dd8fefd948be 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <common.h>
 #include <physmem.h>
+#include <asm/cpu.h>
 #include <linux/compiler.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -112,41 +113,13 @@ static void x86_phys_enter_paging(void)
                x86_phys_map_page(page_addr, page_addr, 0);
        }
 
-       /* Turn on paging */
-       __asm__ __volatile__(
-               /* Load the page table address */
-               "movl   %0, %%cr3\n\t"
-               /* Enable pae */
-               "movl   %%cr4, %%eax\n\t"
-               "orl    $0x00000020, %%eax\n\t"
-               "movl   %%eax, %%cr4\n\t"
-               /* Enable paging */
-               "movl   %%cr0, %%eax\n\t"
-               "orl    $0x80000000, %%eax\n\t"
-               "movl   %%eax, %%cr0\n\t"
-               :
-               : "r" (pdpt)
-               : "eax"
-       );
+       cpu_enable_paging_pae((ulong)pdpt);
 }
 
 /* Disable paging and PAE mode. */
 static void x86_phys_exit_paging(void)
 {
-       /* Turn off paging */
-       __asm__ __volatile__ (
-               /* Disable paging */
-               "movl   %%cr0, %%eax\n\t"
-               "andl   $0x7fffffff, %%eax\n\t"
-               "movl   %%eax, %%cr0\n\t"
-               /* Disable pae */
-               "movl   %%cr4, %%eax\n\t"
-               "andl   $0xffffffdf, %%eax\n\t"
-               "movl   %%eax, %%cr4\n\t"
-               :
-               :
-               : "eax"
-       );
+       cpu_disable_paging_pae();
 }
 
 /*
diff --git a/arch/x86/lib/ramtest.c b/arch/x86/lib/ramtest.c
new file mode 100644 (file)
index 0000000..c21be03
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * From Coreboot src/lib/ramtest.c
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/post.h>
+
+static void write_phys(unsigned long addr, u32 value)
+{
+#if CONFIG_SSE2
+       asm volatile(
+               "movnti %1, (%0)"
+               : /* outputs */
+               : "r" (addr), "r" (value) /* inputs */
+               : /* clobbers */
+               );
+#else
+       writel(value, addr);
+#endif
+}
+
+static u32 read_phys(unsigned long addr)
+{
+       return readl(addr);
+}
+
+static void phys_memory_barrier(void)
+{
+#if CONFIG_SSE2
+       /* Needed for movnti */
+       asm volatile(
+               "sfence"
+               :
+               :
+               : "memory"
+       );
+#else
+       asm volatile(""
+               :
+               :
+               : "memory");
+#endif
+}
+
+void quick_ram_check(void)
+{
+       int fail = 0;
+       u32 backup;
+
+       backup = read_phys(CONFIG_RAMBASE);
+       write_phys(CONFIG_RAMBASE, 0x55555555);
+       phys_memory_barrier();
+       if (read_phys(CONFIG_RAMBASE) != 0x55555555)
+               fail = 1;
+       write_phys(CONFIG_RAMBASE, 0xaaaaaaaa);
+       phys_memory_barrier();
+       if (read_phys(CONFIG_RAMBASE) != 0xaaaaaaaa)
+               fail = 1;
+       write_phys(CONFIG_RAMBASE, 0x00000000);
+       phys_memory_barrier();
+       if (read_phys(CONFIG_RAMBASE) != 0x00000000)
+               fail = 1;
+       write_phys(CONFIG_RAMBASE, 0xffffffff);
+       phys_memory_barrier();
+       if (read_phys(CONFIG_RAMBASE) != 0xffffffff)
+               fail = 1;
+
+       write_phys(CONFIG_RAMBASE, backup);
+       if (fail) {
+               post_code(POST_RAM_FAILURE);
+               panic("RAM INIT FAILURE!\n");
+       }
+       phys_memory_barrier();
+}
index faca38fff4b0c9fc67f7cfaeaab6682b6340f81f..b33586b54c0311a9b596cbcca23ed357ab78b3e0 100644 (file)
@@ -76,6 +76,9 @@ int do_elf_reloc_fixups(void)
        /* The size of the region of u-boot that runs out of RAM. */
        uintptr_t size = (uintptr_t)&__bss_end - (uintptr_t)&__text_start;
 
+       if (re_src == re_end)
+               panic("No relocation data");
+
        do {
                /* Get the location from the relocation entry */
                offset_ptr_rom = (Elf32_Addr *)re_src->r_offset;
index a1656ccfe7d82480031789ec987781a9a094d2b3..6c66431ed93b3d4943954f0e07a04a0acf665c77 100644 (file)
@@ -8,9 +8,9 @@
 
 /* From glibc-2.14, sysdeps/i386/memset.c */
 
-#include <compiler.h>
-#include <asm/string.h>
 #include <linux/types.h>
+#include <linux/compiler.h>
+#include <asm/string.h>
 
 typedef uint32_t op_t;
 
index 8b38702ef56c779f70a3a8dbacb4b079158691c4..7f5ba2ca6f1dd69f2d461723fec4536fc92a4523 100644 (file)
@@ -1,6 +1,9 @@
 /*
  * Copyright (c) 2012 The Chromium OS Authors.
  *
+ * TSC calibration codes are adapted from Linux kernel
+ * arch/x86/kernel/tsc_msr.c and arch/x86/kernel/tsc.c
+ *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <asm/msr.h>
 #include <asm/u-boot-x86.h>
 
+/* CPU reference clock frequency: in KHz */
+#define FREQ_83                83200
+#define FREQ_100       99840
+#define FREQ_133       133200
+#define FREQ_166       166400
+
+#define MAX_NUM_FREQS  8
+
 DECLARE_GLOBAL_DATA_PTR;
 
+/*
+ * According to Intel 64 and IA-32 System Programming Guide,
+ * if MSR_PERF_STAT[31] is set, the maximum resolved bus ratio can be
+ * read in MSR_PLATFORM_ID[12:8], otherwise in MSR_PERF_STAT[44:40].
+ * Unfortunately some Intel Atom SoCs aren't quite compliant to this,
+ * so we need manually differentiate SoC families. This is what the
+ * field msr_plat does.
+ */
+struct freq_desc {
+       u8 x86_family;  /* CPU family */
+       u8 x86_model;   /* model */
+       /* 2: use 100MHz, 1: use MSR_PLATFORM_INFO, 0: MSR_IA32_PERF_STATUS */
+       u8 msr_plat;
+       u32 freqs[MAX_NUM_FREQS];
+};
+
+static struct freq_desc freq_desc_tables[] = {
+       /* PNW */
+       { 6, 0x27, 0, { 0, 0, 0, 0, 0, FREQ_100, 0, FREQ_83 } },
+       /* CLV+ */
+       { 6, 0x35, 0, { 0, FREQ_133, 0, 0, 0, FREQ_100, 0, FREQ_83 } },
+       /* TNG */
+       { 6, 0x4a, 1, { 0, FREQ_100, FREQ_133, 0, 0, 0, 0, 0 } },
+       /* VLV2 */
+       { 6, 0x37, 1, { FREQ_83, FREQ_100, FREQ_133, FREQ_166, 0, 0, 0, 0 } },
+       /* Ivybridge */
+       { 6, 0x3a, 2, { 0, 0, 0, 0, 0, 0, 0, 0 } },
+       /* ANN */
+       { 6, 0x5a, 1, { FREQ_83, FREQ_100, FREQ_133, FREQ_100, 0, 0, 0, 0 } },
+};
+
+static int match_cpu(u8 family, u8 model)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(freq_desc_tables); i++) {
+               if ((family == freq_desc_tables[i].x86_family) &&
+                   (model == freq_desc_tables[i].x86_model))
+                       return i;
+       }
+
+       return -1;
+}
+
+/* Map CPU reference clock freq ID(0-7) to CPU reference clock freq(KHz) */
+#define id_to_freq(cpu_index, freq_id) \
+       (freq_desc_tables[cpu_index].freqs[freq_id])
+
+/*
+ * Do MSR calibration only for known/supported CPUs.
+ *
+ * Returns the calibration value or 0 if MSR calibration failed.
+ */
+static unsigned long __maybe_unused try_msr_calibrate_tsc(void)
+{
+       u32 lo, hi, ratio, freq_id, freq;
+       unsigned long res;
+       int cpu_index;
+
+       cpu_index = match_cpu(gd->arch.x86, gd->arch.x86_model);
+       if (cpu_index < 0)
+               return 0;
+
+       if (freq_desc_tables[cpu_index].msr_plat) {
+               rdmsr(MSR_PLATFORM_INFO, lo, hi);
+               ratio = (lo >> 8) & 0x1f;
+       } else {
+               rdmsr(MSR_IA32_PERF_STATUS, lo, hi);
+               ratio = (hi >> 8) & 0x1f;
+       }
+       debug("Maximum core-clock to bus-clock ratio: 0x%x\n", ratio);
+
+       if (!ratio)
+               goto fail;
+
+       if (freq_desc_tables[cpu_index].msr_plat == 2) {
+               /* TODO: Figure out how best to deal with this */
+               freq = FREQ_100;
+               debug("Using frequency: %u KHz\n", freq);
+       } else {
+               /* Get FSB FREQ ID */
+               rdmsr(MSR_FSB_FREQ, lo, hi);
+               freq_id = lo & 0x7;
+               freq = id_to_freq(cpu_index, freq_id);
+               debug("Resolved frequency ID: %u, frequency: %u KHz\n",
+                     freq_id, freq);
+       }
+       if (!freq)
+               goto fail;
+
+       /* TSC frequency = maximum resolved freq * maximum resolved bus ratio */
+       res = freq * ratio / 1000;
+       debug("TSC runs at %lu MHz\n", res);
+
+       return res;
+
+fail:
+       debug("Fast TSC calibration using MSR failed\n");
+       return 0;
+}
+
+/*
+ * This reads the current MSB of the PIT counter, and
+ * checks if we are running on sufficiently fast and
+ * non-virtualized hardware.
+ *
+ * Our expectations are:
+ *
+ *  - the PIT is running at roughly 1.19MHz
+ *
+ *  - each IO is going to take about 1us on real hardware,
+ *    but we allow it to be much faster (by a factor of 10) or
+ *    _slightly_ slower (ie we allow up to a 2us read+counter
+ *    update - anything else implies a unacceptably slow CPU
+ *    or PIT for the fast calibration to work.
+ *
+ *  - with 256 PIT ticks to read the value, we have 214us to
+ *    see the same MSB (and overhead like doing a single TSC
+ *    read per MSB value etc).
+ *
+ *  - We're doing 2 reads per loop (LSB, MSB), and we expect
+ *    them each to take about a microsecond on real hardware.
+ *    So we expect a count value of around 100. But we'll be
+ *    generous, and accept anything over 50.
+ *
+ *  - if the PIT is stuck, and we see *many* more reads, we
+ *    return early (and the next caller of pit_expect_msb()
+ *    then consider it a failure when they don't see the
+ *    next expected value).
+ *
+ * These expectations mean that we know that we have seen the
+ * transition from one expected value to another with a fairly
+ * high accuracy, and we didn't miss any events. We can thus
+ * use the TSC value at the transitions to calculate a pretty
+ * good value for the TSC frequencty.
+ */
+static inline int pit_verify_msb(unsigned char val)
+{
+       /* Ignore LSB */
+       inb(0x42);
+       return inb(0x42) == val;
+}
+
+static inline int pit_expect_msb(unsigned char val, u64 *tscp,
+                                unsigned long *deltap)
+{
+       int count;
+       u64 tsc = 0, prev_tsc = 0;
+
+       for (count = 0; count < 50000; count++) {
+               if (!pit_verify_msb(val))
+                       break;
+               prev_tsc = tsc;
+               tsc = rdtsc();
+       }
+       *deltap = rdtsc() - prev_tsc;
+       *tscp = tsc;
+
+       /*
+        * We require _some_ success, but the quality control
+        * will be based on the error terms on the TSC values.
+        */
+       return count > 5;
+}
+
+/*
+ * How many MSB values do we want to see? We aim for
+ * a maximum error rate of 500ppm (in practice the
+ * real error is much smaller), but refuse to spend
+ * more than 50ms on it.
+ */
+#define MAX_QUICK_PIT_MS 50
+#define MAX_QUICK_PIT_ITERATIONS (MAX_QUICK_PIT_MS * PIT_TICK_RATE / 1000 / 256)
+
+static unsigned long __maybe_unused quick_pit_calibrate(void)
+{
+       int i;
+       u64 tsc, delta;
+       unsigned long d1, d2;
+
+       /* Set the Gate high, disable speaker */
+       outb((inb(0x61) & ~0x02) | 0x01, 0x61);
+
+       /*
+        * Counter 2, mode 0 (one-shot), binary count
+        *
+        * NOTE! Mode 2 decrements by two (and then the
+        * output is flipped each time, giving the same
+        * final output frequency as a decrement-by-one),
+        * so mode 0 is much better when looking at the
+        * individual counts.
+        */
+       outb(0xb0, 0x43);
+
+       /* Start at 0xffff */
+       outb(0xff, 0x42);
+       outb(0xff, 0x42);
+
+       /*
+        * The PIT starts counting at the next edge, so we
+        * need to delay for a microsecond. The easiest way
+        * to do that is to just read back the 16-bit counter
+        * once from the PIT.
+        */
+       pit_verify_msb(0);
+
+       if (pit_expect_msb(0xff, &tsc, &d1)) {
+               for (i = 1; i <= MAX_QUICK_PIT_ITERATIONS; i++) {
+                       if (!pit_expect_msb(0xff-i, &delta, &d2))
+                               break;
+
+                       /*
+                        * Iterate until the error is less than 500 ppm
+                        */
+                       delta -= tsc;
+                       if (d1+d2 >= delta >> 11)
+                               continue;
+
+                       /*
+                        * Check the PIT one more time to verify that
+                        * all TSC reads were stable wrt the PIT.
+                        *
+                        * This also guarantees serialization of the
+                        * last cycle read ('d2') in pit_expect_msb.
+                        */
+                       if (!pit_verify_msb(0xfe - i))
+                               break;
+                       goto success;
+               }
+       }
+       debug("Fast TSC calibration failed\n");
+       return 0;
+
+success:
+       /*
+        * Ok, if we get here, then we've seen the
+        * MSB of the PIT decrement 'i' times, and the
+        * error has shrunk to less than 500 ppm.
+        *
+        * As a result, we can depend on there not being
+        * any odd delays anywhere, and the TSC reads are
+        * reliable (within the error).
+        *
+        * kHz = ticks / time-in-seconds / 1000;
+        * kHz = (t2 - t1) / (I * 256 / PIT_TICK_RATE) / 1000
+        * kHz = ((t2 - t1) * PIT_TICK_RATE) / (I * 256 * 1000)
+        */
+       delta *= PIT_TICK_RATE;
+       delta /= (i*256*1000);
+       debug("Fast TSC calibration using PIT\n");
+       return delta / 1000;
+}
+
 void timer_set_base(u64 base)
 {
        gd->arch.tsc_base = base;
@@ -34,17 +298,28 @@ u64 __attribute__((no_instrument_function)) get_ticks(void)
        return now_tick - gd->arch.tsc_base;
 }
 
-#define PLATFORM_INFO_MSR 0xce
-
 /* Get the speed of the TSC timer in MHz */
 unsigned __attribute__((no_instrument_function)) long get_tbclk_mhz(void)
 {
-       u32 ratio;
-       u64 platform_info = native_read_msr(PLATFORM_INFO_MSR);
+       unsigned long fast_calibrate;
+
+       if (gd->arch.tsc_mhz)
+               return gd->arch.tsc_mhz;
+
+#ifdef CONFIG_TSC_CALIBRATION_BYPASS
+       fast_calibrate = CONFIG_TSC_FREQ_IN_MHZ;
+#else
+       fast_calibrate = try_msr_calibrate_tsc();
+       if (!fast_calibrate) {
+
+               fast_calibrate = quick_pit_calibrate();
+               if (!fast_calibrate)
+                       panic("TSC frequency is ZERO");
+       }
+#endif
 
-       /* 100MHz times Max Non Turbo ratio */
-       ratio = (platform_info >> 8) & 0xff;
-       return 100 * ratio;
+       gd->arch.tsc_mhz = fast_calibrate;
+       return fast_calibrate;
 }
 
 unsigned long get_tbclk(void)
index b1902834e8a9514e5bdcce56b2bccbb03fdc7f7c..566b048c88f73c71e9b0ac83fd4ea9028aefb72c 100644 (file)
@@ -103,7 +103,7 @@ static int get_boot_protocol(struct setup_header *hdr)
 }
 
 struct boot_params *load_zimage(char *image, unsigned long kernel_size,
-                               void **load_address)
+                               ulong *load_addressp)
 {
        struct boot_params *setup_base;
        int setup_size;
@@ -155,9 +155,9 @@ struct boot_params *load_zimage(char *image, unsigned long kernel_size,
 
        /* Determine load address */
        if (big_image)
-               *load_address = (void *)BZIMAGE_LOAD_ADDR;
+               *load_addressp = BZIMAGE_LOAD_ADDR;
        else
-               *load_address = (void *)ZIMAGE_LOAD_ADDR;
+               *load_addressp = ZIMAGE_LOAD_ADDR;
 
        printf("Building boot_params at 0x%8.8lx\n", (ulong)setup_base);
        memset(setup_base, 0, sizeof(*setup_base));
@@ -204,10 +204,10 @@ struct boot_params *load_zimage(char *image, unsigned long kernel_size,
                return 0;
        }
 
-       printf("Loading %s at address %p (%ld bytes)\n",
-               big_image ? "bzImage" : "zImage", *load_address, kernel_size);
+       printf("Loading %s at address %lx (%ld bytes)\n",
+              big_image ? "bzImage" : "zImage", *load_addressp, kernel_size);
 
-       memmove(*load_address, image + setup_size, kernel_size);
+       memmove((void *)*load_addressp, image + setup_size, kernel_size);
 
        return setup_base;
 }
@@ -261,30 +261,6 @@ int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
        return 0;
 }
 
-void boot_zimage(void *setup_base, void *load_address)
-{
-       bootm_announce_and_cleanup();
-
-#ifdef CONFIG_SYS_COREBOOT
-       timestamp_add_now(TS_U_BOOT_START_KERNEL);
-#endif
-       /*
-        * Set %ebx, %ebp, and %edi to 0, %esi to point to the boot_params
-        * structure, and then jump to the kernel. We assume that %cs is
-        * 0x10, 4GB flat, and read/execute, and the data segments are 0x18,
-        * 4GB flat, and read/write. U-boot is setting them up that way for
-        * itself in arch/i386/cpu/cpu.c.
-        */
-       __asm__ __volatile__ (
-       "movl $0, %%ebp\n"
-       "cli\n"
-       "jmp *%[kernel_entry]\n"
-       :: [kernel_entry]"a"(load_address),
-          [boot_params] "S"(setup_base),
-          "b"(0), "D"(0)
-       );
-}
-
 void setup_pcat_compatibility(void)
        __attribute__((weak, alias("__setup_pcat_compatibility")));
 
@@ -296,7 +272,7 @@ int do_zboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 {
        struct boot_params *base_ptr;
        void *bzImage_addr = NULL;
-       void *load_address;
+       ulong load_address;
        char *s;
        ulong bzImage_size = 0;
        ulong initrd_addr = 0;
@@ -331,20 +307,17 @@ int do_zboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
        base_ptr = load_zimage(bzImage_addr, bzImage_size, &load_address);
 
        if (!base_ptr) {
-               printf("## Kernel loading failed ...\n");
+               puts("## Kernel loading failed ...\n");
                return -1;
        }
        if (setup_zimage(base_ptr, (char *)base_ptr + COMMAND_LINE_OFFSET,
                        0, initrd_addr, initrd_size)) {
-               printf("Setting up boot parameters failed ...\n");
+               puts("Setting up boot parameters failed ...\n");
                return -1;
        }
 
        /* we assume that the kernel is in place */
-       boot_zimage(base_ptr, load_address);
-       /* does not return */
-
-       return -1;
+       return boot_linux_kernel((ulong)base_ptr, load_address, false);
 }
 
 U_BOOT_CMD(
diff --git a/board/LEOX/elpt860/Kconfig b/board/LEOX/elpt860/Kconfig
deleted file mode 100644 (file)
index ed74956..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_ELPT860
-
-config SYS_BOARD
-       default "elpt860"
-
-config SYS_VENDOR
-       default "LEOX"
-
-config SYS_CONFIG_NAME
-       default "ELPT860"
-
-endif
diff --git a/board/LEOX/elpt860/MAINTAINERS b/board/LEOX/elpt860/MAINTAINERS
deleted file mode 100644 (file)
index 8f8a199..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ELPT860 BOARD
-M:     The LEOX team <team@leox.org>
-S:     Maintained
-F:     board/LEOX/elpt860/
-F:     include/configs/ELPT860.h
-F:     configs/ELPT860_defconfig
diff --git a/board/LEOX/elpt860/Makefile b/board/LEOX/elpt860/Makefile
deleted file mode 100644 (file)
index b811adb..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#######################################################################
-#
-# Copyright (C) 2000, 2001, 2002, 2003
-# The LEOX team <team@leox.org>, http://www.leox.org
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# LEOX.org is about the development of free hardware and software resources
-#   for system on chip.
-#
-# Description: U-Boot port on the LEOX's ELPT860 CPU board
-# ~~~~~~~~~~~
-#
-#######################################################################
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-#######################################################################
-
-obj-y  = elpt860.o flash.o
diff --git a/board/LEOX/elpt860/README.LEOX b/board/LEOX/elpt860/README.LEOX
deleted file mode 100644 (file)
index aa41ff8..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-=============================================================================
-
-            U-Boot port on the LEOX's ELPT860 CPU board
-            -------------------------------------------
-
-LEOX.org is about the development of free hardware and software resources
-        for system on chip.
-
-For more information, contact The LEOX team <team@leox.org>
-
-References:
-~~~~~~~~~~
-    1) Get the last stable release from denx.de:
-          o ftp://ftp.denx.de/pub/u-boot/u-boot-0.2.0.tar.bz2
-    2) Get the current CVS snapshot:
-          o cvs -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot login
-          o cvs -z6 -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot co -P u-boot
-
-=============================================================================
-
-The ELPT860 CPU board has the following features:
-
-Processor:     - MPC860T @ 50MHz
-               - PowerPC Core
-               - 65 MIPS
-               - Caches: D->4KB, I->4KB
-               - CPM: 4 SCCs, 2 SMCs
-               - Ethernet 10/100
-               - SPI, I2C, PCMCIA, Parallel
-
-CPU board:     - DRAM:   16 MB
-               - FLASH: 512 KB + (2 * 4 MB)
-               - NVRAM: 128 KB
-               - 1 Serial link
-               - 2 Ethernet 10 BaseT Channels
-
-On power-up the processor jumps to the address of 0x02000100
-
-Thus, U-Boot is configured to reside in flash starting at the address of
-0x02001000.  The environment space is located in NVRAM separately from
-U-Boot, at the address of 0x03000000.
-
-=============================================================================
-
-                       U-Boot test results
-
-=============================================================================
-
-##################################################
-# Operation on the serial console (SMC1)
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU:   XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
-        *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM:  16 MB
-FLASH: 512 kB
-In:    serial
-Out:   serial
-Err:   serial
-Net:   SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot:  0
-LEOX_elpt860: help
-askenv  - get environment variables from stdin
-base    - print or set address offset
-bdinfo  - print Board Info structure
-bootm   - boot application image from memory
-bootp   - boot image via network using BootP/TFTP protocol
-bootd   - boot default, i.e., run 'bootcmd'
-cmp     - memory compare
-coninfo - print console devices and informations
-cp      - memory copy
-crc32   - checksum calculation
-echo    - echo args to console
-erase   - erase FLASH memory
-flinfo  - print FLASH memory information
-go      - start application at address 'addr'
-help    - print online help
-iminfo  - print header information for application image
-loadb   - load binary file over serial line (kermit mode)
-loads   - load S-Record file over serial line
-loop    - infinite loop on address range
-md      - memory display
-mm      - memory modify (auto-incrementing)
-mtest   - simple RAM test
-mw      - memory write (fill)
-nm      - memory modify (constant address)
-printenv- print environment variables
-protect - enable or disable FLASH write protection
-rarpboot- boot image via network using RARP/TFTP protocol
-reset   - Perform RESET of the CPU
-run     - run commands in an environment variable
-saveenv - save environment variables to persistent storage
-setenv  - set environment variables
-sleep   - delay execution for some time
-source  - run script from memory
-tftpboot- boot image via network using TFTP protocol
-              and env variables ipaddr and serverip
-version - print monitor version
-?       - alias for 'help'
-
-##################################################
-# Environment Variables (CONFIG_ENV_IS_IN_NVRAM)
-##############################
-
-LEOX_elpt860: printenv
-bootdelay=5
-loads_echo=1
-baudrate=9600
-stdin=serial
-stdout=serial
-stderr=serial
-ethaddr=00:03:ca:00:64:df
-ipaddr=192.168.0.30
-netmask=255.255.255.0
-serverip=192.168.0.1
-nfsserverip=192.168.0.1
-preboot=echo;echo Type "run nfsboot" to mount root filesystem over NFS;echo
-gatewayip=192.168.0.1
-ramargs=setenv bootargs root=/dev/ram rw
-rootargs=setenv rootpath /tftp/${ipaddr}
-nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${nfsserverip}:${rootpath}
-addip=setenv bootargs ${bootargs} ip=${ipaddr}:${nfsserverip}:${gatewayip}:${netmask}:${hostname}:eth0:
-ramboot=tftp 400000 /home/leox/pMulti;run ramargs;bootm
-nfsboot=tftp 400000 /home/leox/uImage;run rootargs;run nfsargs;run addip;bootm
-bootcmd=run ramboot
-clocks_in_mhz=1
-
-Environment size: 730/16380 bytes
-
-##################################################
-# Flash Memory Information
-##############################
-
-LEOX_elpt860: flinfo
-
-Bank # 1: AMD AM29F040   (4 Mbits)
-  Size: 512 KB in 8 Sectors
-  Sector Start Addresses:
-    02000000 (RO) 02010000 (RO) 02020000 (RO) 02030000 (RO) 02040000
-    02050000      02060000      02070000
-
-##################################################
-# Board Information Structure
-##############################
-
-LEOX_elpt860: bdinfo
-memstart    = 0x00000000
-memsize     = 0x01000000
-flashstart  = 0x02000000
-flashsize   = 0x00080000
-flashoffset = 0x00030000
-sramstart   = 0x00000000
-sramsize    = 0x00000000
-immr_base   = 0xFF000000
-bootflags   = 0x00000001
-intfreq     =     50 MHz
-busfreq     =     50 MHz
-ethaddr     = 00:03:ca:00:64:df
-IP addr     = 192.168.0.30
-baudrate    =   9600 bps
-
-##################################################
-# Image Download and run over serial port
-#    hello_world (S-Record image)
-#    ===> 1) Enter "loads" command into U-Boot monitor
-#    ===> 2) From TeraTerm's bar menu, Select 'File/Send file...'
-#            Then select 'hello_world.srec' with the file browser
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU:   XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
-        *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM:  16 MB
-FLASH: 512 kB
-In:    serial
-Out:   serial
-Err:   serial
-Net:   SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot:  0
-LEOX_elpt860: loads
-## Ready for S-Record download ...
-S804040004F3050154000501709905014C000501388D
-## First Load Addr = 0x00040000
-## Last  Load Addr = 0x0005018B
-## Total Size      = 0x0001018C = 65932 Bytes
-## Start Addr      = 0x00040004
-LEOX_elpt860: go 40004 This is a test !!!
-## Starting application at 0x00040004 ...
-Hello World
-argc = 6
-argv[0] = "40004"
-argv[1] = "This"
-argv[2] = "is"
-argv[3] = "a"
-argv[4] = "test"
-argv[5] = "!!!"
-argv[6] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-
-##################################################
-# Image download and run over ethernet interface
-#    Linux-2.4.4 (uImage) + Root filesystem mounted over NFS
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU:   XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
-        *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM:  16 MB
-FLASH: 512 kB
-In:    serial
-Out:   serial
-Err:   serial
-Net:   SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot:  0
-LEOX_elpt860: run nfsboot
-ARP broadcast 1
-TFTP from server 192.168.0.1; our IP address is 192.168.0.30
-Filename '/home/leox/uImage'.
-Load address: 0x400000
-Loading: #################################################################
-        #############################
-done
-Bytes transferred = 477294 (7486e hex)
-## Booting image at 00400000 ...
-   Image Name:   Linux-2.4.4
-   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
-   Data Size:    477230 Bytes = 466 kB = 0 MB
-   Load Address: 00000000
-   Entry Point:  00000000
-   Verifying Checksum ... OK
-   Uncompressing Kernel Image ... OK
-Linux version 2.4.4-rthal5 (leox@p5ak6650) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Wed Jul 3 10:23:53 CEST 2002
-On node 0 totalpages: 4096
-zone(0): 4096 pages.
-zone(1): 0 pages.
-zone(2): 0 pages.
-Kernel command line: root=/dev/nfs rw nfsroot=192.168.0.1:/tftp/192.168.0.30 ip=192.168.0.30:192.168.0.1:192.168.0.1:255.255.255.0::eth0:
-rtsched version <20010618.1050.24>
-Decrementer Frequency: 3125000
-Warning: real time clock seems stuck!
-Calibrating delay loop... 49.76 BogoMIPS
-Memory: 14720k available (928k kernel code, 384k data, 44k init, 0k highmem)
-Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
-Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
-Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
-Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
-POSIX conformance testing by UNIFIX
-Linux NET4.0 for Linux 2.4
-Based upon Swansea University Computer Society NET3.039
-Starting kswapd v1.8
-CPM UART driver version 0.03
-ttyS0 on SMC1 at 0x0280, BRG1
-block: queued sectors max/low 9701kB/3233kB, 64 slots per queue
-RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
-eth0: CPM ENET Version 0.2 on SCC1, 00:03:ca:00:64:df
-NET4: Linux TCP/IP 1.0 for NET4.0
-IP Protocols: ICMP, UDP, TCP
-IP: routing cache hash table of 512 buckets, 4Kbytes
-TCP: Hash tables configured (established 1024 bind 1024)
-NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
-Looking up port of RPC 100003/2 on 192.168.0.1
-Looking up port of RPC 100005/2 on 192.168.0.1
-VFS: Mounted root (nfs filesystem).
-Freeing unused kernel memory: 44k init
-INIT: version 2.78 booting
-               Welcome to DENX Embedded Linux Environment
-               Press 'I' to enter interactive startup.
-Mounting proc filesystem:  [  OK  ]
-Configuring kernel parameters:  [  OK  ]
-Cannot access the Hardware Clock via any known method.
-Use the --debug option to see the details of our search for an access method.
-Setting clock : Wed Dec 31 19:00:11 EST 1969 [  OK  ]
-Activating swap partitions:  [  OK  ]
-Setting hostname 192.168.0.30:  [  OK  ]
-Finding module dependencies:
-[  OK  ]
-Checking filesystems
-Checking all file systems.
-[  OK  ]
-Mounting local filesystems:  [  OK  ]
-Enabling swap space:  [  OK  ]
-INIT: Entering runlevel: 3
-Entering non-interactive startup
-Starting system logger: [  OK  ]
-Starting kernel logger: [  OK  ]
-Starting xinetd: [  OK  ]
-
-192 login: root
-Last login: Wed Dec 31 19:00:41 on ttyS0
-bash-2.04#
-
-##################################################
-# Image download and run over ethernet interface
-#    Linux-2.4.4 + Root filesystem mounted from RAM (pMulti)
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU:   XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
-        *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM:  16 MB
-FLASH: 512 kB
-In:    serial
-Out:   serial
-Err:   serial
-Net:   SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot:  0
-LEOX_elpt860: run ramboot
-ARP broadcast 1
-TFTP from server 192.168.0.1; our IP address is 192.168.0.30
-Filename '/home/leox/pMulti'.
-Load address: 0x400000
-Loading: #################################################################
-        #################################################################
-        #################################################################
-        #################################################################
-        #################################################################
-        ########################################################
-done
-Bytes transferred = 1947816 (1db8a8 hex)
-## Booting image at 00400000 ...
-   Image Name:   linux-2.4.4-2002-03-21 Multiboot
-   Image Type:   PowerPC Linux Multi-File Image (gzip compressed)
-   Data Size:    1947752 Bytes = 1902 kB = 1 MB
-   Load Address: 00000000
-   Entry Point:  00000000
-   Contents:
-   Image 0:   477230 Bytes = 466 kB = 0 MB
-   Image 1:  1470508 Bytes = 1436 kB = 1 MB
-   Verifying Checksum ... OK
-   Uncompressing Multi-File Image ... OK
-   Loading Ramdisk to 00e44000, end 00fab02c ... OK
-Linux version 2.4.4-rthal5 (leox@p5ak6650) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Wed Jul 3 10:23:53 CEST 2002
-On node 0 totalpages: 4096
-zone(0): 4096 pages.
-zone(1): 0 pages.
-zone(2): 0 pages.
-Kernel command line: root=/dev/ram rw
-rtsched version <20010618.1050.24>
-Decrementer Frequency: 3125000
-Warning: real time clock seems stuck!
-Calibrating delay loop... 49.76 BogoMIPS
-Memory: 13280k available (928k kernel code, 384k data, 44k init, 0k highmem)
-Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
-Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
-Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
-Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
-POSIX conformance testing by UNIFIX
-Linux NET4.0 for Linux 2.4
-Based upon Swansea University Computer Society NET3.039
-Starting kswapd v1.8
-CPM UART driver version 0.03
-ttyS0 on SMC1 at 0x0280, BRG1
-block: queued sectors max/low 8741kB/2913kB, 64 slots per queue
-RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
-eth0: CPM ENET Version 0.2 on SCC1, 00:03:ca:00:64:df
-RAMDISK: Compressed image found at block 0
-Freeing initrd memory: 1436k freed
-NET4: Linux TCP/IP 1.0 for NET4.0
-IP Protocols: ICMP, UDP, TCP
-IP: routing cache hash table of 512 buckets, 4Kbytes
-TCP: Hash tables configured (established 1024 bind 1024)
-IP-Config: Incomplete network configuration information.
-NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
-VFS: Mounted root (ext2 filesystem).
-Freeing unused kernel memory: 44k init
-init started:  BusyBox v0.60.2 (2002.07.01-12:06+0000) multi-call Configuring hostname
-Configuring lo...
-Configuring eth0...
-Configuring Gateway...
-
-Please press Enter to activate this console.
-
-ELPT860 login: root
-Password:
-Welcome to Linux-2.4.4 for ELPT CPU board (MPC860T @ 50MHz)
-
-                                             a8888b.
-                                            d888888b.
-                                            8P"YP"Y88
-     _      _                                8|o||o|88
-    | |    |_|                               8'    .88
-    | |     _ ____  _   _  _  _              8`._.' Y8.
-    | |    | |  _ \| | | |\ \/ /            d/      `8b.
-    | |___ | | | | | |_| |/    \          .dP   .     Y8b.
-    |_____||_|_| |_|\____|\_/\_/         d8:'   "   `::88b.
-                                       d8"           `Y88b
-                                      :8P     '       :888
-                                       8a.    :      _a88P
-                                     ._/"Yaa_ :    .| 88P|
-                                     \    YP"      `| 8P  `.
-                                     /     \._____.d|    .'
-                                     `--..__)888888P`._.'
-login[21]: root login  on `ttyS0'
-
-
-
-BusyBox v0.60.3 (2002.07.20-10:39+0000) Built-in shell (ash)
-Enter 'help' for a list of built-in commands.
-
-root@ELPT860:~ #
diff --git a/board/LEOX/elpt860/elpt860.c b/board/LEOX/elpt860/elpt860.c
deleted file mode 100644 (file)
index 81820cb..0000000
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-**   for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
- * SPDX-License-Identifier:    GPL-2.0+
-**
-**=====================================================================
-*/
-
-/*
-** Note 1: In this file, you have to provide the following functions:
-** ------
-**              int             board_early_init_f(void)
-**              int             checkboard(void)
-**              phys_size_t     initdram(int board_type)
-** called from 'board_init_f()' into 'common/board.c'
-**
-**              void            reset_phy(void)
-** called from 'board_init_r()' into 'common/board.c'
-*/
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint init_sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x0FFCCC04, 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04,
-       0xFFFFFC04,             /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04,     /* last */
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, /* last */
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04,
-       0xFFFFFC04, 0xFFFFFC04, 0x0FFFFC04, 0xFFFFFC04, /* last */
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC34, 0x0FAC0C34,
-       0xFFFFFC05, 0xFFFFFC04, 0x0FFCFC04, 0xFFFFFC05, /* last */
-};
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF3C04,
-       0xFF0FFC00,             /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0x0FFCCC04, 0xFFAFFC05, 0xFFAFFC05,     /* last */
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF3C04,
-       0xF00FFC00, 0xF00FFC00, 0xF00FFC00, 0xFF0FFC00,
-       0x0FFCCC04, 0xFFAFFC05, 0xFFAFFC04, 0xFFAFFC04,
-       0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF0C00,
-       0xFF0FFC04, 0x0FFCCC04, 0xFFAFFC05,     /* last */
-       _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC00, 0x00AF0C00,
-       0xF00FFC00, 0xF00FFC00, 0xF00FFC04, 0x0FFCCC04,
-       0xFFAFFC04, 0xFFAFFC05, 0xFFAFFC04, 0xFFAFFC04,
-       0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC05, 0xFFFFFC04, 0xFFFFFC05, _NOT_USED_,
-       0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x0FFFFC34, 0x0FAC0C34, 0xFFFFFC05, 0xFFAFFC04, /* last */
-};
-
-/* ------------------------------------------------------------------------- */
-
-#define CONFIG_SYS_PC4    0x0800
-
-#define CONFIG_SYS_DS1    CONFIG_SYS_PC4
-
-/*
- * Very early board init code (fpga boot, etc.)
- */
-int board_early_init_f (void)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-
-       /*
-        * Light up the red led on ELPT860 pcb (DS1) (PCDAT)
-        */
-       immr->im_ioport.iop_pcdat &= ~CONFIG_SYS_DS1;   /* PCDAT (DS1 = 0)                */
-       immr->im_ioport.iop_pcpar &= ~CONFIG_SYS_DS1;   /* PCPAR (0=general purpose I/O)  */
-       immr->im_ioport.iop_pcdir |= CONFIG_SYS_DS1;    /* PCDIR (I/O: 0=input, 1=output) */
-
-       return (0);             /* success */
-}
-
-/*
- * Check Board Identity:
- *
- * Test ELPT860 ID string
- *
- * Return 1 if no second DRAM bank, otherwise returns 0
- */
-
-int checkboard (void)
-{
-       char buf[64];
-       int i = getenv_f("serial#", buf, sizeof(buf));
-
-       if ((i < 0) || strncmp(buf, "ELPT860", 7))
-               printf ("### No HW ID - assuming ELPT860\n");
-
-       return (0);             /* success */
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size8, size9;
-       long int size_b0 = 0;
-
-       /*
-        * This sequence initializes SDRAM chips on ELPT860 board
-        */
-       upmconfig (UPMA, (uint *) init_sdram_table,
-                  sizeof (init_sdram_table) / sizeof (uint));
-
-       memctl->memc_mptpr = 0x0200;
-       memctl->memc_mamr = 0x18002111;
-
-       memctl->memc_mar = 0x00000088;
-       memctl->memc_mcr = 0x80002000;  /* CS1: SDRAM bank 0 */
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       /*
-        * Preliminary prescaler for refresh (depends on number of
-        * banks): This value is selected for four cycles every 62.4 us
-        * with two SDRAM banks or four cycles every 31.2 us with one
-        * bank. It will be adjusted after memory sizing.
-        */
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_8K;
-
-       /*
-        * The following value is used as an address (i.e. opcode) for
-        * the LOAD MODE REGISTER COMMAND during SDRAM initialisation. If
-        * the port size is 32bit the SDRAM does NOT "see" the lower two
-        * address lines, i.e. mar=0x00000088 -> opcode=0x00000022 for
-        * MICRON SDRAMs:
-        * ->    0 00 010 0 010
-        *       |  |   | |   +- Burst Length = 4
-        *       |  |   | +----- Burst Type   = Sequential
-        *       |  |   +------- CAS Latency  = 2
-        *       |  +----------- Operating Mode = Standard
-        *       +-------------- Write Burst Mode = Programmed Burst Length
-        */
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
-        * preliminary addresses - these have to be modified after the
-        * SDRAM size has been determined.
-        */
-       memctl->memc_or1 = CONFIG_SYS_OR1_PRELIM;
-       memctl->memc_br1 = CONFIG_SYS_BR1_PRELIM;
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_8COL & (~(MAMR_PTAE));      /* no refresh yet */
-
-       udelay (200);
-
-       /* perform SDRAM initializsation sequence */
-
-       memctl->memc_mcr = 0x80002105;  /* CS1: SDRAM bank 0 */
-       udelay (1);
-       memctl->memc_mcr = 0x80002230;  /* CS1: SDRAM bank 0 - execute twice */
-       udelay (1);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
-       udelay (1000);
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        *
-        * try 8 column mode
-        */
-       size8 = dram_size (CONFIG_SYS_MAMR_8COL,
-                          SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
-
-       udelay (1000);
-
-       /*
-        * try 9 column mode
-        */
-       size9 = dram_size (CONFIG_SYS_MAMR_9COL,
-                          SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
-
-       if (size8 < size9) {    /* leave configuration at 9 columns       */
-               size_b0 = size9;
-               /* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
-       } else {                /* back to 8 columns                      */
-
-               size_b0 = size8;
-               memctl->memc_mamr = CONFIG_SYS_MAMR_8COL;
-               udelay (500);
-               /* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
-       }
-
-       udelay (1000);
-
-       /*
-        * Adjust refresh rate depending on SDRAM type, both banks
-        * For types > 128 MBit leave it at the current (fast) rate
-        */
-       if (size_b0 < 0x02000000) {
-               /* reduce to 15.6 us (62.4 us / quad) */
-               memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_4K;
-               udelay (1000);
-       }
-
-       /*
-        * Final mapping: map bigger bank first
-        */
-       memctl->memc_or1 = ((-size_b0) & 0xFFFF0000) | CONFIG_SYS_OR_TIMING_SDRAM;
-       memctl->memc_br1 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
-       {
-               unsigned long reg;
-
-               /* adjust refresh rate depending on SDRAM type, one bank */
-               reg = memctl->memc_mptpr;
-               reg >>= 1;      /* reduce to CONFIG_SYS_MPTPR_1BK_8K / _4K */
-               memctl->memc_mptpr = reg;
-       }
-
-       udelay (10000);
-
-       return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int
-dram_size (long int mamr_value, long int *base, long int maxsize)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       memctl->memc_mamr = mamr_value;
-
-       return (get_ram_size (base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#define CONFIG_SYS_PA1     0x4000
-#define CONFIG_SYS_PA2     0x2000
-
-#define CONFIG_SYS_LBKs    (CONFIG_SYS_PA2 | CONFIG_SYS_PA1)
-
-void reset_phy (void)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-
-       /*
-        * Ensure LBK LXT901 ethernet 1 & 2 = 0 ... for normal loopback in effect
-        *                                          and no AUI loopback
-        */
-       immr->im_ioport.iop_padat &= ~CONFIG_SYS_LBKs;  /* PADAT (LBK eth 1&2 = 0)        */
-       immr->im_ioport.iop_papar &= ~CONFIG_SYS_LBKs;  /* PAPAR (0=general purpose I/O)  */
-       immr->im_ioport.iop_padir |= CONFIG_SYS_LBKs;   /* PADIR (I/O: 0=input, 1=output) */
-}
diff --git a/board/LEOX/elpt860/flash.c b/board/LEOX/elpt860/flash.c
deleted file mode 100644 (file)
index 0377c89..0000000
+++ /dev/null
@@ -1,602 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-**   for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
- * SPDX-License-Identifier:    GPL-2.0+
-**
-**=====================================================================
-*/
-
-/*
-** Note 1: In this file, you have to provide the following variable:
-** ------
-**              flash_info_t    flash_info[CONFIG_SYS_MAX_FLASH_BANKS]
-** 'flash_info_t' structure is defined into 'include/flash.h'
-** and defined as extern into 'common/cmd_flash.c'
-**
-** Note 2: In this file, you have to provide the following functions:
-** ------
-**              unsigned long   flash_init(void)
-** called from 'board_init_r()' into 'common/board.c'
-**
-**              void            flash_print_info(flash_info_t *info)
-** called from 'do_flinfo()' into 'common/cmd_flash.c'
-**
-**              int             flash_erase(flash_info_t *info,
-**                                          int           s_first,
-**                                          int           s_last)
-** called from 'do_flerase()' & 'flash_sect_erase()' into 'common/cmd_flash.c'
-**
-**              int             write_buff (flash_info_t *info,
-**                                          uchar        *src,
-**                                          ulong         addr,
-**                                          ulong         cnt)
-** called from 'flash_write()' into 'common/cmd_flash.c'
-*/
-
-#include <common.h>
-#include <mpc8xx.h>
-
-
-#ifndef        CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-#endif
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Internal Functions
- */
-static void   flash_get_offsets (ulong base, flash_info_t *info);
-static ulong  flash_get_size (volatile unsigned char *addr, flash_info_t *info);
-
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long
-flash_init (void)
-{
-  volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-  volatile memctl8xx_t *memctl = &immap->im_memctl;
-  unsigned long         size_b0;
-  int i;
-
-  /* Init: no FLASHes known */
-  for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i)
-    {
-      flash_info[i].flash_id = FLASH_UNKNOWN;
-    }
-
-  /* Static FLASH Bank configuration here - FIXME XXX */
-
-  size_b0 = flash_get_size ((volatile unsigned char *)FLASH_BASE0_PRELIM,
-                           &flash_info[0]);
-
-  if ( flash_info[0].flash_id == FLASH_UNKNOWN )
-    {
-      printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-             size_b0, size_b0<<20);
-    }
-
-  /* Remap FLASH according to real size */
-  memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
-  memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_PS_8 | BR_V;
-
-  /* Re-do sizing to get full correct info */
-  size_b0 = flash_get_size ((volatile unsigned char *)CONFIG_SYS_FLASH_BASE,
-                           &flash_info[0]);
-
-  flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-  /* monitor protection ON by default */
-  flash_protect (FLAG_PROTECT_SET,
-                CONFIG_SYS_MONITOR_BASE,
-                CONFIG_SYS_MONITOR_BASE + monitor_flash_len-1,
-                &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-  /* ENV protection ON by default */
-  flash_protect(FLAG_PROTECT_SET,
-               CONFIG_ENV_ADDR,
-               CONFIG_ENV_ADDR + CONFIG_ENV_SIZE-1,
-               &flash_info[0]);
-#endif
-
-  flash_info[0].size = size_b0;
-
-  return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void
-flash_get_offsets (ulong          base,
-                  flash_info_t  *info)
-{
-  int i;
-
-#define SECTOR_64KB    0x00010000
-
-  /* set up sector start adress table */
-  for (i = 0; i < info->sector_count; i++)
-    {
-      info->start[i] = base + (i * SECTOR_64KB);
-    }
-}
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info (flash_info_t *info)
-{
-  int i;
-
-  if ( info->flash_id == FLASH_UNKNOWN )
-    {
-      printf ("missing or unknown FLASH type\n");
-      return;
-    }
-
-  switch ( info->flash_id & FLASH_VENDMASK )
-    {
-    case FLASH_MAN_AMD:        printf ("AMD ");                break;
-    case FLASH_MAN_FUJ:        printf ("FUJITSU ");            break;
-    case FLASH_MAN_STM: printf ("STM (Thomson) ");      break;
-    default:           printf ("Unknown Vendor ");     break;
-    }
-
-  switch ( info->flash_id & FLASH_TYPEMASK )
-    {
-    case FLASH_AM040:   printf ("AM29F040   (4 Mbits)\n");
-      break;
-    default:           printf ("Unknown Chip Type\n");
-      break;
-    }
-
-  printf ("  Size: %ld KB in %d Sectors\n",
-         info->size >> 10, info->sector_count);
-
-  printf ("  Sector Start Addresses:");
-  for (i=0; i<info->sector_count; ++i)
-    {
-      if ((i % 5) == 0)
-       printf ("\n   ");
-      printf (" %08lX%s",
-             info->start[i],
-             info->protect[i] ? " (RO)" : "     "
-             );
-    }
-  printf ("\n");
-
-  return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong
-flash_get_size (volatile unsigned char *addr,
-               flash_info_t           *info)
-{
-  short i;
-  uchar value;
-  ulong base = (ulong)addr;
-
-  /* Write auto select command: read Manufacturer ID */
-  addr[0x0555] = 0xAA;
-  addr[0x02AA] = 0x55;
-  addr[0x0555] = 0x90;
-
-  value = addr[0];
-
-  switch ( value )
-    {
-      /*    case AMD_MANUFACT: */
-    case 0x01:
-      info->flash_id = FLASH_MAN_AMD;
-      break;
-      /*    case FUJ_MANUFACT: */
-    case 0x04:
-      info->flash_id = FLASH_MAN_FUJ;
-      break;
-      /*    case STM_MANUFACT: */
-    case 0x20:
-      info->flash_id = FLASH_MAN_STM;
-      break;
-
-    default:
-      info->flash_id = FLASH_UNKNOWN;
-      info->sector_count = 0;
-      info->size = 0;
-      return (0);                      /* no or unknown flash  */
-    }
-
-  value = addr[1];                     /* device ID            */
-
-  switch ( value )
-    {
-    case STM_ID_F040B:
-    case AMD_ID_F040B:
-      info->flash_id += FLASH_AM040;    /* 4 Mbits = 512k * 8  */
-      info->sector_count = 8;
-      info->size = 0x00080000;
-      break;
-
-    default:
-      info->flash_id = FLASH_UNKNOWN;
-      return (0);                      /* => no or unknown flash */
-    }
-
-  /* set up sector start adress table */
-  for (i = 0; i < info->sector_count; i++)
-    {
-      info->start[i] = base + (i * 0x00010000);
-    }
-
-  /* check for protected sectors */
-  for (i = 0; i < info->sector_count; i++)
-    {
-      /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-      /* D0 = 1 if protected */
-      addr = (volatile unsigned char *)(info->start[i]);
-      info->protect[i] = addr[2] & 1;
-    }
-
-  /*
-   * Prevent writes to uninitialized FLASH.
-   */
-  if ( info->flash_id != FLASH_UNKNOWN )
-    {
-      addr = (volatile unsigned char *)info->start[0];
-
-      *addr = 0xF0;    /* reset bank */
-    }
-
-  return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int
-flash_erase (flash_info_t  *info,
-            int            s_first,
-            int            s_last)
-{
-  volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
-  int flag, prot, sect, l_sect;
-  ulong start, now, last;
-
-  if ( (s_first < 0) || (s_first > s_last) )
-    {
-      if ( info->flash_id == FLASH_UNKNOWN )
-       {
-         printf ("- missing\n");
-       }
-      else
-       {
-         printf ("- no sectors to erase\n");
-       }
-      return ( 1 );
-    }
-
-  if ( (info->flash_id == FLASH_UNKNOWN) ||
-       (info->flash_id > FLASH_AMD_COMP) )
-    {
-      printf ("Can't erase unknown flash type %08lx - aborted\n",
-             info->flash_id);
-      return ( 1 );
-    }
-
-  prot = 0;
-  for (sect=s_first; sect<=s_last; ++sect)
-    {
-      if ( info->protect[sect] )
-       {
-         prot++;
-       }
-    }
-
-  if ( prot )
-    {
-      printf ("- Warning: %d protected sectors will not be erased!\n", prot);
-    }
-  else
-    {
-      printf ("\n");
-    }
-
-  l_sect = -1;
-
-  /* Disable interrupts which might cause a timeout here */
-  flag = disable_interrupts();
-
-  addr[0x0555] = 0xAA;
-  addr[0x02AA] = 0x55;
-  addr[0x0555] = 0x80;
-  addr[0x0555] = 0xAA;
-  addr[0x02AA] = 0x55;
-
-  /* Start erase on unprotected sectors */
-  for (sect = s_first; sect<=s_last; sect++)
-    {
-      if (info->protect[sect] == 0)    /* not protected */
-       {
-         addr = (volatile unsigned char *)(info->start[sect]);
-         addr[0] = 0x30;
-         l_sect = sect;
-       }
-    }
-
-  /* re-enable interrupts if necessary */
-  if ( flag )
-    enable_interrupts();
-
-  /* wait at least 80us - let's wait 1 ms */
-  udelay (1000);
-
-  /*
-   * We wait for the last triggered sector
-   */
-  if ( l_sect < 0 )
-    goto DONE;
-
-  start = get_timer (0);
-  last  = start;
-  addr = (volatile unsigned char *)(info->start[l_sect]);
-  while ( (addr[0] & 0x80) != 0x80 )
-    {
-      if ( (now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT )
-       {
-         printf ("Timeout\n");
-         return ( 1 );
-       }
-      /* show that we're waiting */
-      if ( (now - last) > 1000 )     /* every second */
-       {
-         putc ('.');
-         last = now;
-       }
-    }
-
-DONE:
-  /* reset to read mode */
-  addr = (volatile unsigned char *)info->start[0];
-  addr[0] = 0xF0;      /* reset bank */
-
-  printf (" done\n");
-
-  return ( 0 );
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int
-write_buff (flash_info_t  *info,
-           uchar         *src,
-           ulong          addr,
-           ulong          cnt)
-{
-  ulong cp, wp, data;
-  uchar bdata;
-  int i, l, rc;
-
-  if ( (info->flash_id & FLASH_TYPEMASK) == FLASH_AM040 )
-    {
-      /* Width of the data bus: 8 bits */
-
-      wp = addr;
-
-      while ( cnt )
-       {
-         bdata = *src++;
-
-         if ( (rc = write_byte(info, wp, bdata)) != 0 )
-           {
-             return (rc);
-           }
-
-         ++wp;
-         --cnt;
-       }
-
-      return ( 0 );
-    }
-  else
-    {
-      /* Width of the data bus: 32 bits */
-
-      wp = (addr & ~3);        /* get lower word aligned address */
-
-      /*
-       * handle unaligned start bytes
-       */
-      if ( (l = addr - wp) != 0 )
-       {
-         data = 0;
-         for (i=0, cp=wp; i<l; ++i, ++cp)
-           {
-             data = (data << 8) | (*(uchar *)cp);
-           }
-         for (; i<4 && cnt>0; ++i)
-           {
-             data = (data << 8) | *src++;
-             --cnt;
-             ++cp;
-           }
-         for (; cnt==0 && i<4; ++i, ++cp)
-           {
-             data = (data << 8) | (*(uchar *)cp);
-           }
-
-         if ( (rc = write_word(info, wp, data)) != 0 )
-           {
-             return (rc);
-           }
-         wp += 4;
-       }
-
-      /*
-       * handle word aligned part
-       */
-      while ( cnt >= 4 )
-       {
-         data = 0;
-         for (i=0; i<4; ++i)
-           {
-             data = (data << 8) | *src++;
-           }
-         if ( (rc = write_word(info, wp, data)) != 0 )
-           {
-             return (rc);
-           }
-         wp  += 4;
-         cnt -= 4;
-       }
-
-      if ( cnt == 0 )
-       {
-         return (0);
-       }
-
-      /*
-       * handle unaligned tail bytes
-       */
-      data = 0;
-      for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp)
-       {
-         data = (data << 8) | *src++;
-         --cnt;
-       }
-      for (; i<4; ++i, ++cp)
-       {
-         data = (data << 8) | (*(uchar *)cp);
-       }
-
-      return (write_word(info, wp, data));
-    }
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_word (flash_info_t  *info,
-           ulong          dest,
-           ulong          data)
-{
-  vu_long *addr = (vu_long*)(info->start[0]);
-  ulong start;
-  int flag;
-
-  /* Check if Flash is (sufficiently) erased */
-  if ( (*((vu_long *)dest) & data) != data )
-    {
-      return (2);
-    }
-  /* Disable interrupts which might cause a timeout here */
-  flag = disable_interrupts();
-
-  addr[0x0555] = 0x00AA00AA;
-  addr[0x02AA] = 0x00550055;
-  addr[0x0555] = 0x00A000A0;
-
-  *((vu_long *)dest) = data;
-
-  /* re-enable interrupts if necessary */
-  if ( flag )
-    enable_interrupts();
-
-  /* data polling for D7 */
-  start = get_timer (0);
-  while ( (*((vu_long *)dest) & 0x00800080) != (data & 0x00800080) )
-    {
-      if ( get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT )
-       {
-         return (1);
-       }
-    }
-
-  return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_byte (flash_info_t  *info,
-           ulong          dest,
-           uchar          data)
-{
-  volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
-  ulong  start;
-  int    flag;
-
-  /* Check if Flash is (sufficiently) erased */
-  if ( (*((volatile unsigned char *)dest) & data) != data )
-    {
-      return (2);
-    }
-  /* Disable interrupts which might cause a timeout here */
-  flag = disable_interrupts();
-
-  addr[0x0555] = 0xAA;
-  addr[0x02AA] = 0x55;
-  addr[0x0555] = 0xA0;
-
-  *((volatile unsigned char *)dest) = data;
-
-  /* re-enable interrupts if necessary */
-  if ( flag )
-    enable_interrupts();
-
-  /* data polling for D7 */
-  start = get_timer (0);
-  while ( (*((volatile unsigned char *)dest) & 0x80) != (data & 0x80) )
-    {
-      if ( get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT )
-       {
-         return (1);
-       }
-    }
-
-  return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds
deleted file mode 100644 (file)
index c5e57ec..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-**   for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
- * SPDX-License-Identifier:    GPL-2.0+
-**
-**=====================================================================
-*/
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-    common/built-in.o                  (.text*)
-    arch/powerpc/cpu/mpc8xx/built-in.o (.text*)
-    board/LEOX/elpt860/built-in.o      (.text*)
-    arch/powerpc/lib/built-in.o                (.text*)
-
-    . = env_offset;
-    common/env_embedded.o              (.text*)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/LEOX/elpt860/u-boot.lds.debug b/board/LEOX/elpt860/u-boot.lds.debug
deleted file mode 100644 (file)
index ce81046..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-**   for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
- * SPDX-License-Identifier:    GPL-2.0+
-**
-**=====================================================================
-*/
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o            (.text)
-    common/dlmalloc.o          (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-
-    . = env_offset;
-    common/env_embedded.o      (.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index f94a444cf23259394e11ef485d8d2af476d13a4e..98aa10ade0be58523537a43dd34e13452e2851ea 100644 (file)
@@ -1,23 +1,15 @@
 if TARGET_DB_MV784MP_GP
 
-config SYS_CPU
-       string
-       default "armv7"
-
 config SYS_BOARD
-       string
        default "db-mv784mp-gp"
 
 config SYS_VENDOR
-       string
        default "Marvell"
 
 config SYS_SOC
-       string
        default "armada-xp"
 
 config SYS_CONFIG_NAME
-       string
        default "db-mv784mp-gp"
 
 endif
diff --git a/board/RRvision/Kconfig b/board/RRvision/Kconfig
deleted file mode 100644 (file)
index 7c8a6f6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_RRVISION
-
-config SYS_BOARD
-       default "RRvision"
-
-config SYS_CONFIG_NAME
-       default "RRvision"
-
-endif
diff --git a/board/RRvision/MAINTAINERS b/board/RRvision/MAINTAINERS
deleted file mode 100644 (file)
index 59b5c5f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-RRVISION BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/RRvision/
-F:     include/configs/RRvision.h
-F:     configs/RRvision_defconfig
-F:     configs/RRvision_LCD_defconfig
diff --git a/board/RRvision/Makefile b/board/RRvision/Makefile
deleted file mode 100644 (file)
index 908e8f8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = RRvision.o flash.o
diff --git a/board/RRvision/RRvision.c b/board/RRvision/RRvision.c
deleted file mode 100644 (file)
index d94e238..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * (C) Copyright 2001-2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] =
-{
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
-       0x1FF77C47, /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-                   0x1FF77C34, 0xEFEABC34, 0x1FB57C35, /* last */
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
-       0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
-       0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47, /* last */
-                                           _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07, /* last */
-                               _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x7FFFFC07, /* last */
-                   _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Always return 1 (no second DRAM bank).
- */
-
-int checkboard (void)
-{
-       char buf[64];
-       int i;
-       int l = getenv_f("serial#", buf, sizeof(buf));
-
-       puts ("Board: RRvision ");
-
-       for (i=0; i < l; ++i) {
-               if (buf[i] == ' ')
-                       break;
-               putc (buf[i]);
-       }
-
-       putc ('\n');
-
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long reg;
-       long int size8, size9;
-       long int size = 0;
-
-       upmconfig (UPMA, (uint *)sdram_table, sizeof(sdram_table) / sizeof(uint));
-
-       /*
-        * Preliminary prescaler for refresh (depends on number of
-        * banks): This value is selected for four cycles every 62.4 us
-        * with two SDRAM banks or four cycles every 31.2 us with one
-        * bank. It will be adjusted after memory sizing.
-        */
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_8K;
-
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller bank 1 the SDRAM bank 2 at physical address 0.
-        */
-       memctl->memc_or1 = CONFIG_SYS_OR2_PRELIM;
-       memctl->memc_br1 = CONFIG_SYS_BR2_PRELIM;
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_8COL & (~(MAMR_PTAE));      /* no refresh yet */
-
-       udelay (200);
-
-       /* perform SDRAM initializsation sequence */
-
-       memctl->memc_mcr = 0x80002105;  /* SDRAM bank 0 */
-       udelay (1);
-       memctl->memc_mcr = 0x80002230;  /* SDRAM bank 0 - execute twice */
-       udelay (1);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
-       udelay (1000);
-
-       /*
-        * Check Bank 0 Memory Size
-        *
-        * try 8 column mode
-        */
-       size8 = dram_size (CONFIG_SYS_MAMR_8COL,
-                          SDRAM_BASE2_PRELIM,
-                          SDRAM_MAX_SIZE);
-
-       udelay (1000);
-
-       /*
-        * try 9 column mode
-        */
-       size9 = dram_size (CONFIG_SYS_MAMR_9COL,
-                          SDRAM_BASE2_PRELIM,
-                          SDRAM_MAX_SIZE);
-
-       if (size8 < size9) {            /* leave configuration at 9 columns */
-               size = size9;
-/*             debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20);  */
-       } else {                        /* back to 8 columns            */
-               size = size8;
-               memctl->memc_mamr = CONFIG_SYS_MAMR_8COL;
-               udelay (500);
-/*             debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20);  */
-       }
-
-       udelay (1000);
-
-       /*
-        * Adjust refresh rate depending on SDRAM type
-        * For types > 128 MBit leave it at the current (fast) rate
-        */
-       if (size < 0x02000000) {
-               /* reduce to 15.6 us (62.4 us / quad) */
-               memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_4K;
-               udelay (1000);
-       }
-
-       /*
-        * Final mapping
-        */
-       memctl->memc_or1 = ((-size) & 0xFFFF0000) | CONFIG_SYS_OR_TIMING_SDRAM;
-       memctl->memc_br1 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
-       /*
-        * No bank 1
-        *
-        * invalidate bank
-        */
-       memctl->memc_br3 = 0;
-
-       /* adjust refresh rate depending on SDRAM type, one bank */
-       reg = memctl->memc_mptpr;
-       reg >>= 1;                      /* reduce to CONFIG_SYS_MPTPR_1BK_8K / _4K */
-       memctl->memc_mptpr = reg;
-
-       udelay (10000);
-
-       return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
-                                                  long int maxsize)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       memctl->memc_mamr = mamr_value;
-
-       return (get_ram_size(base, maxsize));
-}
diff --git a/board/RRvision/flash.c b/board/RRvision/flash.c
deleted file mode 100644 (file)
index 146a923..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * (C) Copyright 2000-2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define DEBUG
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#ifndef        CONFIG_ENV_ADDR
-#define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-#endif
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size, size<<20);
-       }
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size & OR_AM_MSK);
-       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
-       /* Re-do sizing to get full correct info */
-       size = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       flash_info[0].size = size;
-
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               puts ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     puts ("AMD ");                  break;
-       case FLASH_MAN_FUJ:     puts ("FUJITSU ");              break;
-       default:                puts ("Unknown Vendor ");       break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM400B:      puts ("AM29LV400B (4 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM400T:      puts ("AM29LV400T (4 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM800B:      puts ("AM29LV800B (8 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM800T:      puts ("AM29LV800T (8 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM160B:      puts ("AM29LV160B (16 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM160T:      puts ("AM29LV160T (16 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM320B:      puts ("AM29LV320B (32 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM320T:      puts ("AM29LV320T (32 Mbit, top boot sector)\n");
-                               break;
-       default:                puts ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       puts ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       puts ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       puts ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       short i;
-       ulong value;
-       ulong base = (ulong)addr;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x0555] = 0x00AA00AA;
-       addr[0x02AA] = 0x00550055;
-       addr[0x0555] = 0x00900090;
-
-       value = addr[0];
-
-       switch (value) {
-       case AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case FUJ_MANUFACT:
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];                        /* device ID            */
-
-       switch (value) {
-       case AMD_ID_LV400T:
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case AMD_ID_LV400B:
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case AMD_ID_LV800T:
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case AMD_ID_LV800B:
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case AMD_ID_LV160T:
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB              */
-
-       case AMD_ID_LV160B:
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB              */
-       case AMD_ID_LV320T:
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 71;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-
-       case AMD_ID_LV320B:
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 71;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-       }
-
-       /* set up sector start address table */
-       switch (value) {
-       case AMD_ID_LV400B:
-       case AMD_ID_LV800B:
-       case AMD_ID_LV160B:
-               /* set sector offsets for bottom boot block type        */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00008000;
-               info->start[2] = base + 0x0000C000;
-               info->start[3] = base + 0x00010000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00020000) - 0x00060000;
-               }
-               break;
-       case AMD_ID_LV400T:
-       case AMD_ID_LV800T:
-       case AMD_ID_LV160T:
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00008000;
-               info->start[i--] = base + info->size - 0x0000C000;
-               info->start[i--] = base + info->size - 0x00010000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00020000;
-               }
-               break;
-       case AMD_ID_LV320B:
-               for (i = 0; i < info->sector_count; i++) {
-                       info->start[i] = base;
-                       /*
-                        * The first 8 sectors are 8 kB,
-                        * all the other ones  are 64 kB
-                        */
-                       base += (i < 8)
-                               ?  2 * ( 8 << 10)
-                               :  2 * (64 << 10);
-               }
-               break;
-       case AMD_ID_LV320T:
-               for (i = 0; i < info->sector_count; i++) {
-                       info->start[i] = base;
-                       /*
-                        * The last 8 sectors are 8 kB,
-                        * all the other ones  are 64 kB
-                        */
-                       base += (i < (info->sector_count - 8))
-                               ?  2 * (64 << 10)
-                               :  2 * ( 8 << 10);
-               }
-               break;
-       default:
-               return (0);
-               break;
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               addr = (volatile unsigned long *)(info->start[i]);
-               info->protect[i] = addr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (volatile unsigned long *)info->start[0];
-
-               *addr = 0x00F000F0;     /* reset bank */
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       vu_long *addr = (vu_long*)(info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       puts ("- missing\n");
-               } else {
-                       puts ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) ||
-           (info->flash_id > FLASH_AMD_COMP)) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               puts ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0555] = 0x00AA00AA;
-       addr[0x02AA] = 0x00550055;
-       addr[0x0555] = 0x00800080;
-       addr[0x0555] = 0x00AA00AA;
-       addr[0x02AA] = 0x00550055;
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr = (vu_long*)(info->start[sect]);
-                       addr[0] = 0x00300030;
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last  = start;
-       addr = (vu_long*)(info->start[l_sect]);
-       while ((addr[0] & 0x00800080) != 0x00800080) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       puts ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (volatile unsigned long *)info->start[0];
-       addr[0] = 0x00F000F0;   /* reset bank */
-
-       puts (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_long *addr = (vu_long*)(info->start[0]);
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_long *)dest) & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0555] = 0x00AA00AA;
-       addr[0x02AA] = 0x00550055;
-       addr[0x0555] = 0x00A000A0;
-
-       *((vu_long *)dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds
deleted file mode 100644 (file)
index 9470a24..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-
-    . = env_offset;
-    common/env_embedded.o      (.ppcenv)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/RRvision/video_ad7179.h b/board/RRvision/video_ad7179.h
deleted file mode 100644 (file)
index 1fc1ef4..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * (C) Copyright 2003 Wolfgang Grandegger <wg@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define VIDEO_ENCODER_NAME     "Analog Devices AD7179"
-
-#define VIDEO_ENCODER_I2C_RATE 100000  /* Max rate is 100Khz   */
-#define VIDEO_ENCODER_CB_Y_CR_Y                /* Use CB Y CR Y format...      */
-
-#define VIDEO_MODE_YUYV                /* The only mode supported by this encoder      */
-#undef VIDEO_MODE_RGB
-#define VIDEO_MODE_BPP         16
-
-#ifdef VIDEO_MODE_PAL
-#define VIDEO_ACTIVE_COLS      720
-#define VIDEO_ACTIVE_ROWS      576
-#define VIDEO_VISIBLE_COLS     640
-#define VIDEO_VISIBLE_ROWS     480
-#else
-#error "NTSC mode is not supported"
-#endif
-
-static unsigned char video_encoder_data[] = {
-                               0x05, /* Mode Register 0 */
-                               0x11, /* Mode Register 1 */
-                               0x20, /* Mode Register 2 */
-                               0x0C, /* Mode Register 3 */
-                               0x01, /* Mode Register 4 */
-                               0x00, /* Reserved */
-                               0x00, /* Reserved */
-                               0x04, /* Timing Register 0 */
-                               0x00, /* Timing Register 1 */
-                               0xCB, /* Subcarrier Frequency Register 0 */
-                               0x0A, /* Subcarrier Frequency Register 1 */
-                               0x09, /* Subcarrier Frequency Register 2 */
-                               0x2A, /* Subcarrier Frequency Register 3 */
-                               0x00, /* Subcarrier Phase */
-                               0x00, /* Closed Captioning Ext Reg 0 */
-                               0x00, /* Closed Captioning Ext Reg 1 */
-                               0x00, /* Closed Captioning Reg 0 */
-                               0x00, /* Closed Captioning Reg 1 */
-                               0x00, /* Pedestal Control Reg 0 */
-                               0x00, /* Pedestal Control Reg 1 */
-                               0x00, /* Pedestal Control Reg 2 */
-                               0x00, /* Pedestal Control Reg 3 */
-                               0x00, /* CGMS_WSS Reg 0 */
-                               0x00, /* CGMS_WSS Reg 0 */
-                               0x00, /* CGMS_WSS Reg 0 */
-                               0x00  /* Teletext Req. Control Reg */
-} ;
diff --git a/board/a3000/Kconfig b/board/a3000/Kconfig
deleted file mode 100644 (file)
index 21a9e48..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_A3000
-
-config SYS_BOARD
-       default "a3000"
-
-config SYS_CONFIG_NAME
-       default "A3000"
-
-endif
diff --git a/board/a3000/MAINTAINERS b/board/a3000/MAINTAINERS
deleted file mode 100644 (file)
index 303e5fd..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-A3000 BOARD
-#M:    -
-S:     Maintained
-F:     board/a3000/
-F:     include/configs/A3000.h
-F:     configs/A3000_defconfig
diff --git a/board/a3000/Makefile b/board/a3000/Makefile
deleted file mode 100644 (file)
index 9b9b048..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = a3000.o flash.o
diff --git a/board/a3000/README b/board/a3000/README
deleted file mode 100644 (file)
index f0e92c5..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-U-Boot for Artis SBC-A3000
----------------------------
-
-Artis SBC-A3000 has one flash socket that the user uses Intel 28F128J3A (16MB)
-or 28F064J3A (8MB) chips.
-
-In board's notation, bank 0 is the one at the address of 0xFF000000.
-bank 1 is the one at the address of 0xFF800000
-
-On power-up the processor jumps to the address of 0xFFF00100, the last
-megabyte of the bank 0 of flash.
-
-Thus, U-Boot is configured to reside in flash starting at the address of
-0xFFF00000.  The environment space is located in flash separately from
-U-Boot, at the address of 0xFFFE0000.
-
-There is a National ns83815 10/100M ethernet controller on-board.
diff --git a/board/a3000/a3000.c b/board/a3000/a3000.c
deleted file mode 100644 (file)
index 3e2f6b0..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * Modified during 2003 by
- * Ken Chou, kchou@ieee.org
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-#include <netdev.h>
-
-int checkboard (void)
-{
-       ulong busfreq  = get_bus_freq(0);
-       char  buf[32];
-
-       printf("Board: A3000 Local Bus at %s MHz\n", strmhz(buf, busfreq));
-       return 0;
-
-}
-
-phys_size_t initdram (int board_type)
-{
-       long size;
-       long new_bank0_end;
-       long mear1;
-       long emear1;
-
-       size = get_ram_size(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       new_bank0_end = size - 1;
-       mear1 = mpc824x_mpc107_getreg(MEAR1);
-       emear1 = mpc824x_mpc107_getreg(EMEAR1);
-       mear1 = (mear1  & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
-       emear1 = (emear1 & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
-       mpc824x_mpc107_setreg(MEAR1, mear1);
-       mpc824x_mpc107_setreg(EMEAR1, emear1);
-
-       return (size);
-}
-
-/*
- * Initialize PCI Devices
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_a3000_config_table[] = {
-       /* vendor, device, class */
-       /* bus, dev, func */
-       { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_83815, PCI_ANY_ID,
-         PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,   /* dp83815 eth0 divice */
-         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                      PCI_ENET0_MEMADDR,
-                                      PCI_COMMAND_IO |
-                                      PCI_COMMAND_MEMORY |
-                                      PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-         PCI_ANY_ID, 0x14, PCI_ANY_ID,         /* PCI slot1 */
-         pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
-                                      PCI_ENET1_MEMADDR,
-                                      PCI_COMMAND_IO |
-                                      PCI_COMMAND_MEMORY |
-                                      PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-         PCI_ANY_ID, 0x15, PCI_ANY_ID,         /* PCI slot2 */
-         pci_cfgfunc_config_device, { PCI_ENET2_IOADDR,
-                                      PCI_ENET2_MEMADDR,
-                                      PCI_COMMAND_IO |
-                                      PCI_COMMAND_MEMORY |
-                                      PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-         PCI_ANY_ID, 0x16, PCI_ANY_ID,         /* PCI slot3 */
-         pci_cfgfunc_config_device, { PCI_ENET3_IOADDR,
-                                      PCI_ENET3_MEMADDR,
-                                      PCI_COMMAND_IO |
-                                      PCI_COMMAND_MEMORY |
-                                      PCI_COMMAND_MASTER }},
-       { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_a3000_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
-       pci_mpc824x_init(&hose);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/a3000/flash.c b/board/a3000/flash.c
deleted file mode 100644 (file)
index f2dd3c2..0000000
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-#include <mpc824x.h>
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR  (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE  CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-
-/*---------------------------------------------------------------------*/
-#define DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, uchar *dest, uchar data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-#define BS(b)     (b)
-#define BYTEME(x) ((x) & 0xFF)
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long flash_banks[CONFIG_SYS_MAX_FLASH_BANKS] = CONFIG_SYS_FLASH_BANKS;
-       unsigned long size, size_b[CONFIG_SYS_MAX_FLASH_BANKS];
-
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i)
-       {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-
-               DEBUGF("Get flash bank %d @ 0x%08lx\n", i, flash_banks[i]);
-/*
-               size_b[i] = flash_get_size((vu_char *)flash_banks[i], &flash_info[i]);
-*/
-               size_b[i] = flash_get_size((vu_char *) 0xff800000 , &flash_info[i]);
-
-               if (flash_info[i].flash_id == FLASH_UNKNOWN)
-               {
-                       printf ("## Unknown FLASH on Bank %d: "
-                               "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
-                               i, flash_info[i].flash_id,
-                               size_b[i], size_b[i]<<20);
-               }
-               else
-               {
-                       DEBUGF("## Flash bank %d at 0x%08lx sizes: 0x%08lx \n",
-                               i, flash_banks[i], size_b[i]);
-
-                       flash_get_offsets (flash_banks[i], &flash_info[i]);
-                       flash_info[i].size = size_b[i];
-               }
-       }
-
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       DEBUGF("protect monitor %x @ %x\n", CONFIG_SYS_MONITOR_BASE, CONFIG_SYS_MONITOR_LEN);
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+CONFIG_SYS_MONITOR_LEN-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       DEBUGF("protect environtment %x @ %x\n", CONFIG_ENV_ADDR, CONFIG_ENV_SECT_SIZE);
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       size = 0;
-       DEBUGF("## Final Flash bank sizes: ");
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i)
-       {
-               DEBUGF("%08lx ", size_b[i]);
-               size += size_b[i];
-       }
-       DEBUGF("\n");
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-               case FLASH_MAN_INTEL:
-                   for (i = 0; i < info->sector_count; i++) {
-                               info->start[i] = base;
-                               base += 0x00020000;             /* 128k per bank */
-                   }
-                   return;
-
-               default:
-                   printf ("Don't know sector ofsets for flash type 0x%lx\n", info->flash_id);
-                   return;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("Fujitsu ");            break;
-       case FLASH_MAN_SST:     printf ("SST ");                break;
-       case FLASH_MAN_STM:     printf ("STM ");                break;
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       case FLASH_MAN_MT:      printf ("MT ");                 break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F320J3A:
-                       printf ("28F320J3A (32Mbit = 128K x 32)\n");
-                       break;
-       case FLASH_28F640J3A:
-                       printf ("28F640J3A (64Mbit = 128K x 64)\n");
-                       break;
-       case FLASH_28F128J3A:
-                       printf ("28F128J3A (128Mbit = 128K x 128)\n");
-                       break;
-       default:
-                       printf ("Unknown Chip Type\n");
-                       break;
-       }
-
-#if 1
-       if (info->size >= (1 << 20)) {
-               i = 20;
-       } else {
-               i = 10;
-       }
-       printf ("  Size: %ld %cB in %d Sectors\n",
-               info->size >> i,
-               (i == 20) ? 'M' : 'k',
-               info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-#endif
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info)
-{
-       vu_char manuf, device;
-
-       addr[0] = BS(0x90);
-       manuf = BS(addr[0]);
-       DEBUGF("Manuf. ID @ 0x%08lx: 0x%08x\n", (ulong)addr, manuf);
-
-       switch (manuf) {
-       case BYTEME(AMD_MANUFACT):
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case BYTEME(FUJ_MANUFACT):
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case BYTEME(SST_MANUFACT):
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case BYTEME(STM_MANUFACT):
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case BYTEME(INTEL_MANUFACT):
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               addr[0] = BS(0xFF);             /* restore read mode, (yes, BS is a NOP) */
-               return 0;                       /* no or unknown flash  */
-       }
-
-       device = BS(addr[2]);                   /* device ID            */
-
-       DEBUGF("Device ID @ 0x%08lx: 0x%08x\n", (ulong)(&addr[1]), device);
-
-       switch (device) {
-       case BYTEME(INTEL_ID_28F320J3A):
-               info->flash_id += FLASH_28F320J3A;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               break;                          /* =>  4 MB             */
-
-       case BYTEME(INTEL_ID_28F640J3A):
-               info->flash_id += FLASH_28F640J3A;
-               info->sector_count = 64;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-
-       case BYTEME(INTEL_ID_28F128J3A):
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x01000000;
-               break;                          /* => 16 MB             */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               addr[0] = BS(0xFF);             /* restore read mode (yes, a NOP) */
-               return 0;                       /* => no or unknown flash */
-
-       }
-
-       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
-               printf ("** ERROR: sector count %d > max (%d) **\n",
-                       info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
-               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       }
-
-       addr[0] = BS(0xFF);             /* restore read mode */
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
-               printf ("Can erase only Intel flash types - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n", prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_char *addr = (vu_char *)(info->start[sect]);
-                       unsigned long status;
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-                       *addr = BS(0x50);       /* clear status register */
-                       *addr = BS(0x20);       /* erase setup */
-                       *addr = BS(0xD0);       /* erase confirm */
-
-                       /* re-enable interrupts if necessary */
-                       if (flag) {
-                               enable_interrupts();
-                       }
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = BS(0xB0); /* suspend erase        */
-                                       *addr = BS(0xFF); /* reset to read mode */
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       *addr = BS(0xFF);       /* reset to read mode */
-               }
-       }
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define        FLASH_WIDTH     1       /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       uchar *wp = (uchar *)addr;
-       int rc;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-
-       while (cnt > 0) {
-               if ((rc = write_data(info, wp, *src)) != 0) {
-                       return rc;
-               }
-               wp++;
-               src++;
-               cnt--;
-       }
-
-       return cnt;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, uchar *dest, uchar data)
-{
-       vu_char *addr = (vu_char *)dest;
-       ulong status;
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((BS(*addr) & data) != data) {
-               return 2;
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       *addr = BS(0x40);               /* write setup */
-       *addr = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag) {
-               enable_interrupts();
-       }
-
-       start = get_timer (0);
-
-       while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *addr = BS(0xFF);       /* restore read mode */
-                       return 1;
-               }
-       }
-
-       *addr = BS(0xFF);       /* restore read mode */
-
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
index b96ba811fa2823f7ac6e021597cb3ccf06995c94..ee1681b5db18ca08d6126bb6c042f5d7e71b79e1 100644 (file)
@@ -392,9 +392,11 @@ int misc_init_r(void)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t * bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP) */
 
index d3d4c181afad83d3b3dd8d43b449ce90b7d6ff58..c5d161bca3bcc6df2fb228d380e0e2482c2e5d90 100644 (file)
@@ -171,10 +171,11 @@ void pci_init_board(void)
 #endif
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
 
index 2352e6680692c279ba50f4b621e94ec93ca4b59f..4692851b268fb18a453b78e066e22a5e4d6d8ce7 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_AP_SH4A_4A
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "ap_sh4a_4a"
 
index 626c0f7a8d3432f5d5e3eb233503f373dd385a76..0482581921fcfbf51d9b1c6ace839c462cec7522 100644 (file)
@@ -5,3 +5,8 @@ S:      Maintained
 F:     board/altera/socfpga/
 F:     include/configs/socfpga_cyclone5.h
 F:     configs/socfpga_cyclone5_defconfig
+
+SOCRATES BOARD
+M:     Stefan Roese <sr@denx.de>
+S:     Maintained
+F:     configs/socfpga_socrates_defconfig
index 0f81d899a6cf873f37b952bedfb79130752084a9..459d82f351093664c118c52b0dc95a2db0480c71 100644 (file)
@@ -8,7 +8,13 @@
 #include <asm/arch/reset_manager.h>
 #include <asm/io.h>
 
+#include <usb.h>
+#include <usb/s3c_udc.h>
+#include <usb_mass_storage.h>
+
+#include <micrel.h>
 #include <netdev.h>
+#include <phy.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -39,3 +45,56 @@ int board_init(void)
 
        return 0;
 }
+
+/*
+ * PHY configuration
+ */
+#ifdef CONFIG_PHY_MICREL_KSZ9021
+int board_phy_config(struct phy_device *phydev)
+{
+       int ret;
+       /*
+        * These skew settings for the KSZ9021 ethernet phy is required for ethernet
+        * to work reliably on most flavors of cyclone5 boards.
+        */
+       ret = ksz9021_phy_extended_write(phydev,
+                                        MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW,
+                                        0x0);
+       if (ret)
+               return ret;
+
+       ret = ksz9021_phy_extended_write(phydev,
+                                        MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW,
+                                        0x0);
+       if (ret)
+               return ret;
+
+       ret = ksz9021_phy_extended_write(phydev,
+                                        MII_KSZ9021_EXT_RGMII_CLOCK_SKEW,
+                                        0xf0f0);
+       if (ret)
+               return ret;
+
+       if (phydev->drv->config)
+               return phydev->drv->config(phydev);
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_USB_GADGET
+struct s3c_plat_otg_data socfpga_otg_data = {
+       .regs_otg       = CONFIG_USB_DWC2_REG_ADDR,
+       .usb_gusbcfg    = 0x1417,
+};
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+       return s3c_udc_probe(&socfpga_otg_data);
+}
+
+int g_dnl_board_usb_cable_connected(void)
+{
+       return 1;
+}
+#endif
index 79d4babe067146fac76fa18a6ed11c8400389000..c5cc4ffa690d9c69f595525b6d9ccc9988f6eb92 100644 (file)
@@ -490,9 +490,9 @@ int misc_init_r(void)
 #endif /* !defined(CONFIG_ARCHES) */
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-extern void __ft_board_setup(void *blob, bd_t *bd);
+extern int __ft_board_setup(void *blob, bd_t *bd);
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        __ft_board_setup(blob, bd);
 
@@ -515,5 +515,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                fdt_find_and_setprop(blob, "/plb/sata@bffd1000", "status",
                                     "disabled", sizeof("disabled"), 1);
        }
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
index 53f9b3419faa4961d3eb10a60471ae69edd4cdc4..91c6cbf7aa80d95e2d351940774e9df9f03b7187 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include <common.h>
+#include <errno.h>
 #include <libfdt.h>
 #include <fdt_support.h>
 #include <asm/ppc4xx.h>
@@ -363,7 +364,7 @@ void board_pci_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
  * On NAND-booting sequoia, we need to patch the chips select numbers
  * in the dtb (CS0 - NAND, CS3 - NOR)
  */
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int rc;
        int len;
@@ -381,15 +382,14 @@ void ft_board_setup(void *blob, bd_t *bd)
        prop = fdt_get_property_w(blob, nodeoffset, "reg", &len);
        if (prop == NULL) {
                printf("Unable to update NOR chip select for NAND booting\n");
-               return;
+               return -FDT_ERR_NOTFOUND;
        }
        reg = (u32 *)&prop->data[0];
        reg[0] = 3;
        rc = fdt_find_and_setprop(blob, path, "reg", reg, 3 * sizeof(u32), 1);
        if (rc) {
-               printf("Unable to update property NOR mappings, err=%s\n",
-                      fdt_strerror(rc));
-               return;
+               printf("Unable to update property NOR mappings\n");
+               return rc;
        }
 
        /* And now configure NAND chip select to 0 instead of 3 */
@@ -398,15 +398,16 @@ void ft_board_setup(void *blob, bd_t *bd)
        prop = fdt_get_property_w(blob, nodeoffset, "reg", &len);
        if (prop == NULL) {
                printf("Unable to update NDFC chip select for NAND booting\n");
-               return;
+               return len;
        }
        reg = (u32 *)&prop->data[0];
        reg[0] = 0;
        rc = fdt_find_and_setprop(blob, path, "reg", reg, 3 * sizeof(u32), 1);
        if (rc) {
-               printf("Unable to update property NDFC mappings, err=%s\n",
-                      fdt_strerror(rc));
-               return;
+               printf("Unable to update property NDFC mapping\n");
+               return rc;
        }
+
+       return 0;
 }
 #endif /* CONFIG_SYS_RAMBOOT */
index 3bfcf5b0da1d98b9b831fbc8bc755472da47ffcc..67ac260055233eb8bfa4a5060e3a7035026602a2 100644 (file)
@@ -230,6 +230,12 @@ static iomux_v3_cfg_t const backlight_pads[] = {
        MX6_PAD_GPIO_2__GPIO1_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
+int board_spi_cs_gpio(unsigned bus, unsigned cs)
+{
+       return (bus == CONFIG_SF_DEFAULT_BUS && cs == CONFIG_SF_DEFAULT_CS)
+               ? (IMX_GPIO_NR(3, 20)) : -1;
+}
+
 static void setup_spi(void)
 {
        int i;
@@ -295,7 +301,7 @@ int board_eth_init(bd_t *bis)
        /* clear gpr1[14], gpr1[18:17] to select anatop clock */
        clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC_MASK, 0);
 
-       ret = enable_fec_anatop_clock(ENET_50MHz);
+       ret = enable_fec_anatop_clock(ENET_50MHZ);
        if (ret)
                return ret;
 
index 97c4b0e574b116ecc2234eb1e087df7ab0718cc5..66c8dffa163420a647a5c65ae2f3d9817039a196 100644 (file)
@@ -6,6 +6,6 @@ F:      include/configs/vexpress_aemv8a.h
 F:     configs/vexpress_aemv8a_defconfig
 
 VEXPRESS_AEMV8A_SEMI BOARD
-M:     Steve Rae <srae@broadcom.com>
+M:     Linus Walleij <linus.walleij@linaro.org>
 S:     Maintained
 F:     configs/vexpress_aemv8a_semi_defconfig
diff --git a/board/atc/Kconfig b/board/atc/Kconfig
deleted file mode 100644 (file)
index 9b336ca..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_ATC
-
-config SYS_BOARD
-       default "atc"
-
-config SYS_CONFIG_NAME
-       default "atc"
-
-endif
diff --git a/board/atc/MAINTAINERS b/board/atc/MAINTAINERS
deleted file mode 100644 (file)
index 1c5d61e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ATC BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/atc/
-F:     include/configs/atc.h
-F:     configs/atc_defconfig
diff --git a/board/atc/Makefile b/board/atc/Makefile
deleted file mode 100644 (file)
index 3a163c4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = atc.o flash.o ti113x.o
diff --git a/board/atc/atc.c b/board/atc/atc.c
deleted file mode 100644 (file)
index 0038561..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <pci.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII COL */
-       /* PA30 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII CRS */
-       /* PA29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_ER */
-       /* PA28 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_EN */
-       /* PA27 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_DV */
-       /* PA26 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_ER */
-       /* PA25 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDIO */
-       /* PA24 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDC */
-       /* PA23 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDIO */
-       /* PA22 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDC */
-       /* PA21 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[3] */
-       /* PA20 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[2] */
-       /* PA19 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[1] */
-       /* PA18 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[0] */
-       /* PA17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[0] */
-       /* PA16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[1] */
-       /* PA15 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[2] */
-       /* PA14 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[3] */
-       /* PA13 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII TXSL1 */
-       /* PA12 */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII TXSL0 */
-       /* PA11 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII TXSL1 */
-       /* PA10 */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII TXSL0 */
-#if 1
-       /* PA9  */ {   0,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
-       /* PA8  */ {   0,   1,   0,   0,   0,   0   }, /* SMC2 RXD */
-#else
-       /* PA9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
-       /* PA8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC2 RXD */
-#endif
-       /* PA7  */ {   0,   0,   0,   0,   0,   0   }, /* PA7 */
-       /* PA6  */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII PAUSE */
-       /* PA5  */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII PAUSE */
-       /* PA4  */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII PWRDN */
-       /* PA3  */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII PWRDN */
-       /* PA2  */ {   0,   0,   0,   0,   0,   0   }, /* PA2 */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* FCC2 MII MDINT */
-       /* PA0  */ {   1,   0,   0,   1,   0,   0   }  /* FCC1 MII MDINT */
-    },
-
-    /* Port B configuration */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
-       /* PB17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_DV */
-       /* PB16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_ER */
-       /* PB15 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TX_ER */
-       /* PB14 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TX_EN */
-       /* PB13 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII COL */
-       /* PB12 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII CRS */
-       /* PB11 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
-       /* PB10 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
-       /* PB9  */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
-       /* PB8  */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
-       /* PB7  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
-       /* PB6  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
-       /* PB5  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
-       /* PB4  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* PB3 */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* PB2 */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* PB1 */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* PB0 */
-    },
-
-    /* Port C */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   0,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   0,   0,   0   }, /* PC30 */
-       /* PC29 */ {   1,   0,   0,   0,   0,   0   }, /* SCC1 CTS */
-       /* PC28 */ {   1,   0,   0,   0,   0,   0   }, /* SCC2 CTS */
-       /* PC27 */ {   0,   0,   0,   0,   0,   0   }, /* PC27 */
-       /* PC26 */ {   0,   0,   0,   0,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   0,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   0,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DACFD */
-       /* PC22 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DNFD */
-       /* PC21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RX_CLK */
-       /* PC20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII TX_CLK */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII TX_CLK */
-       /* PC17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_CLK */
-       /* PC16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII TX_CLK */
-#if 0
-       /* PC15 */ {   0,   0,   0,   0,   0,   0   }, /* PC15 */
-#else
-       /* PC15 */ {   1,   1,   0,   1,   0,   0   }, /* PC15 */
-#endif
-       /* PC14 */ {   0,   0,   0,   0,   0,   0   }, /* PC14 */
-       /* PC13 */ {   0,   0,   0,   0,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   0,   0,   0,   0,   0   }, /* PC12 */
-       /* PC11 */ {   0,   0,   0,   0,   0,   0   }, /* PC11 */
-       /* PC10 */ {   0,   0,   0,   0,   0,   0   }, /* PC10 */
-       /* PC9  */ {   0,   0,   0,   0,   0,   0   }, /* FC9 */
-       /* PC8  */ {   0,   0,   0,   0,   0,   0   }, /* PC8 */
-       /* PC7  */ {   0,   0,   0,   0,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   0,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   0,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   0,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   0,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   0,   0,   0   }, /* PC2 */
-       /* PC1  */ {   0,   0,   0,   0,   0,   0   }, /* PC1 */
-       /* PC0  */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DRQFD */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 RXD */
-       /* PD30 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 TXD */
-       /* PD29 */ {   1,   0,   0,   1,   0,   0   }, /* SCC1 RTS */
-       /* PD28 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RXD */
-       /* PD27 */ {   1,   1,   0,   1,   0,   0   }, /* SCC2 TXD */
-       /* PD26 */ {   1,   0,   0,   1,   0,   0   }, /* SCC2 RTS */
-       /* PD25 */ {   0,   0,   0,   0,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   0,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   0,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   0,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   0,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   0,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   0,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   0,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   0,   0,   0,   0,   0   }, /* PD17 */
-       /* PD16 */ {   0,   0,   0,   0,   0,   0   }, /* PD16 */
-#if defined(CONFIG_SYS_I2C_SOFT)
-       /* PD15 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SDA */
-       /* PD14 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#else /* normal I/O port pins */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#endif
-#endif
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
-       /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
-       /* PD7  */ {   0,   0,   0,   0,   0,   0   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   0,   0,   0   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   0,   0,   0   }, /* PD5 */
-#if 0
-       /* PD4  */ {   0,   0,   0,   0,   0,   0   }, /* PD4 */
-#else
-       /* PD4  */ {   1,   1,   1,   0,   0,   0   }, /* PD4 */
-#endif
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* PD3 */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* PD2 */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* PD1 */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* PD0 */
-    }
-};
-
-/*
- * UPMB initialization table
- */
-#define        _NOT_USED_      0xFFFFFFFF
-
-static const uint rtc_table[] =
-{
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0xfffec00, 0xfffac00, 0xfff2d00, 0xfef2800,
-       0xfaf2080, 0xfaf2080, 0xfff2400, 0x1fff6c05, /* last */
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0xfffec00, 0xfffac00, 0xfff2d00, 0xfef2800,
-       0xfaf2080, 0xfaf2080, 0xfaf2400, 0x1fbf6c05, /* last */
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
-       printf ("Board: ATC\n");
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
-                         ulong orx, volatile uchar * base)
-{
-       volatile uchar c = 0xff;
-       volatile uint *sdmr_ptr;
-       volatile uint *orx_ptr;
-       ulong maxsize, size;
-       int i;
-
-       /* We must be able to test a location outsize the maximum legal size
-        * to find out THAT we are outside; but this address still has to be
-        * mapped by the controller. That means, that the initial mapping has
-        * to be (at least) twice as large as the maximum expected size.
-        */
-       maxsize = (1 + (~orx | 0x7fff)) / 2;
-
-       /* Since CONFIG_SYS_SDRAM_BASE is always 0 (??), we assume that
-        * we are configuring CS1 if base != 0
-        */
-       sdmr_ptr = &memctl->memc_psdmr;
-       orx_ptr = &memctl->memc_or2;
-
-       *orx_ptr = orx;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_PREA;
-       *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_MRW;
-       *(base + CONFIG_SYS_MRS_OFFS) = c;      /* setting MR on address lines */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *base = c;
-
-       size = get_ram_size((long *)base, maxsize);
-
-       *orx_ptr = orx | ~(size - 1);
-
-       return (size);
-}
-
-int misc_init_r(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-
-       upmconfig(UPMA, (uint *)rtc_table, sizeof(rtc_table) / sizeof(uint));
-       memctl->memc_mamr = MxMR_RLFx_6X | MxMR_WLFx_6X | MxMR_OP_NORM;
-
-       return (0);
-}
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong size8, size9;
-#endif
-       long psize;
-
-       psize = 8 * 1024 * 1024;
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       /* 60x SDRAM setup:
-        */
-       size8 = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-       size9 = try_init (memctl, CONFIG_SYS_PSDMR_9COL, CONFIG_SYS_OR2_9COL,
-                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-
-       if (size8 < size9) {
-               psize = size9;
-               printf ("(60x:9COL) ");
-       } else {
-               psize = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-               printf ("(60x:8COL) ");
-       }
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-       icache_enable ();
-
-       return (psize);
-}
-
-#if defined(CONFIG_CMD_DOC)
-void doc_init (void)
-{
-       doc_probe (CONFIG_SYS_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/atc/flash.c b/board/atc/flash.c
deleted file mode 100644 (file)
index 5a9c510..0000000
+++ /dev/null
@@ -1,647 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- *        has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-#define        FLASH_ID_MASK   0xFFFF
-#else
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-#define        FLASH_ID_MASK   0xFFFFFFFF
-#endif
-
-#define FPW    FLASH_PORT_WIDTH
-#define FPWV   FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-#define FLASH_CYCLE1   0x0555
-#define FLASH_CYCLE2   0x02aa
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_intel(flash_info_t *info, FPWV *dest, FPW data);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-static void flash_get_offsets(ulong base, flash_info_t *info);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
-       unsigned long size = 0;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-#if 0
-               ulong flashbase = (i == 0) ? PHYS_FLASH_1 : PHYS_FLASH_2;
-#else
-               ulong flashbase = CONFIG_SYS_FLASH_BASE;
-#endif
-
-               memset(&flash_info[i], 0, sizeof(flash_info_t));
-
-               flash_info[i].size =
-                       flash_get_size((FPW *)flashbase, &flash_info[i]);
-
-               if (flash_info[i].flash_id == FLASH_UNKNOWN) {
-                       printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx\n",
-                       i, flash_info[i].size);
-               }
-
-               size += flash_info[i].size;
-       }
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     flash_get_info(CONFIG_SYS_MONITOR_BASE));
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1,
-                     flash_get_info(CONFIG_ENV_ADDR));
-#endif
-
-
-       return size ? size : 1;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
-       FPWV *base = (FPWV *)(info->start[0]);
-
-       /* Put FLASH back in read mode */
-       if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
-               *base = (FPW)0x00FF00FF;        /* Intel Read Mode */
-       else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
-               *base = (FPW)0x00F000F0;        /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       /* set up sector start address table */
-       if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL
-           && (info->flash_id & FLASH_BTYPE)) {
-               int bootsect_size;      /* number of bytes/boot sector  */
-               int sect_size;          /* number of bytes/regular sector */
-
-               bootsect_size = 0x00002000 * (sizeof(FPW)/2);
-               sect_size =     0x00010000 * (sizeof(FPW)/2);
-
-               /* set sector offsets for bottom boot block type        */
-               for (i = 0; i < 8; ++i) {
-                       info->start[i] = base + (i * bootsect_size);
-               }
-               for (i = 8; i < info->sector_count; i++) {
-                       info->start[i] = base + ((i - 7) * sect_size);
-               }
-       }
-       else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
-                && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U) {
-
-               int sect_size;          /* number of bytes/sector */
-
-               sect_size = 0x00010000 * (sizeof(FPW)/2);
-
-               /* set up sector start address table (uniform sector type) */
-               for( i = 0; i < info->sector_count; i++ )
-                       info->start[i] = base + (i * sect_size);
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
-       int i;
-       flash_info_t * info;
-
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i ++) {
-               info = & flash_info[i];
-               if (info->start[0] <= base && base < info->start[0] + info->size)
-                       break;
-       }
-
-       return i == CONFIG_SYS_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
-       int i;
-       uchar *boottype;
-       uchar *bootletter;
-       char *fmt;
-       uchar botbootletter[] = "B";
-       uchar topbootletter[] = "T";
-       uchar botboottype[] = "bottom boot sector";
-       uchar topboottype[] = "top boot sector";
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_BM:      printf ("BRIGHT MICRO ");       break;
-       case FLASH_MAN_FUJ:     printf ("FUJITSU ");            break;
-       case FLASH_MAN_SST:     printf ("SST ");                break;
-       case FLASH_MAN_STM:     printf ("STM ");                break;
-       case FLASH_MAN_INTEL:   printf ("INTEL ");              break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       /* check for top or bottom boot, if it applies */
-       if (info->flash_id & FLASH_BTYPE) {
-               boottype = botboottype;
-               bootletter = botbootletter;
-       }
-       else {
-               boottype = topboottype;
-               bootletter = topbootletter;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM640U:
-               fmt = "29LV641D (64 Mbit, uniform sectors)\n";
-               break;
-       case FLASH_28F800C3B:
-       case FLASH_28F800C3T:
-               fmt = "28F800C3%s (8 Mbit, %s)\n";
-               break;
-       case FLASH_INTEL800B:
-       case FLASH_INTEL800T:
-               fmt = "28F800B3%s (8 Mbit, %s)\n";
-               break;
-       case FLASH_28F160C3B:
-       case FLASH_28F160C3T:
-               fmt = "28F160C3%s (16 Mbit, %s)\n";
-               break;
-       case FLASH_INTEL160B:
-       case FLASH_INTEL160T:
-               fmt = "28F160B3%s (16 Mbit, %s)\n";
-               break;
-       case FLASH_28F320C3B:
-       case FLASH_28F320C3T:
-               fmt = "28F320C3%s (32 Mbit, %s)\n";
-               break;
-       case FLASH_INTEL320B:
-       case FLASH_INTEL320T:
-               fmt = "28F320B3%s (32 Mbit, %s)\n";
-               break;
-       case FLASH_28F640C3B:
-       case FLASH_28F640C3T:
-               fmt = "28F640C3%s (64 Mbit, %s)\n";
-               break;
-       case FLASH_INTEL640B:
-       case FLASH_INTEL640T:
-               fmt = "28F640B3%s (64 Mbit, %s)\n";
-               break;
-       default:
-               fmt = "Unknown Chip Type\n";
-               break;
-       }
-
-       printf (fmt, bootletter, boottype);
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20,
-               info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0) {
-                       printf ("\n   ");
-               }
-
-               printf (" %08lX%s", info->start[i],
-                       info->protect[i] ? " (RO)" : "     ");
-       }
-
-       printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
-       /* Write auto select command: read Manufacturer ID */
-
-       /* Write auto select command sequence and test FLASH answer */
-       addr[FLASH_CYCLE1] = (FPW)0x00AA00AA;   /* for AMD, Intel ignores this */
-       addr[FLASH_CYCLE2] = (FPW)0x00550055;   /* for AMD, Intel ignores this */
-       addr[FLASH_CYCLE1] = (FPW)0x00900090;   /* selects Intel or AMD */
-
-       /* The manufacturer codes are only 1 byte, so just use 1 byte.
-        * This works for any bus width and any FLASH device width.
-        */
-       udelay(100);
-       switch (addr[0] & 0xff) {
-
-       case (uchar)AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-
-       case (uchar)INTEL_MANUFACT:
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               break;
-       }
-
-       /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
-       if (info->flash_id != FLASH_UNKNOWN) switch (addr[1]) {
-
-       case (FPW)AMD_ID_LV640U:        /* 29LV640 and 29LV641 have same ID */
-               info->flash_id += FLASH_AM640U;
-               info->sector_count = 128;
-               info->size = 0x00800000 * (sizeof(FPW)/2);
-               break;                          /* => 8 or 16 MB        */
-
-       case (FPW)INTEL_ID_28F800C3B:
-               info->flash_id += FLASH_28F800C3B;
-               info->sector_count = 23;
-               info->size = 0x00100000 * (sizeof(FPW)/2);
-               break;                          /* => 1 or 2 MB         */
-
-       case (FPW)INTEL_ID_28F800B3B:
-               info->flash_id += FLASH_INTEL800B;
-               info->sector_count = 23;
-               info->size = 0x00100000 * (sizeof(FPW)/2);
-               break;                          /* => 1 or 2 MB         */
-
-       case (FPW)INTEL_ID_28F160C3B:
-               info->flash_id += FLASH_28F160C3B;
-               info->sector_count = 39;
-               info->size = 0x00200000 * (sizeof(FPW)/2);
-               break;                          /* => 2 or 4 MB         */
-
-       case (FPW)INTEL_ID_28F160B3B:
-               info->flash_id += FLASH_INTEL160B;
-               info->sector_count = 39;
-               info->size = 0x00200000 * (sizeof(FPW)/2);
-               break;                          /* => 2 or 4 MB         */
-
-       case (FPW)INTEL_ID_28F320C3B:
-               info->flash_id += FLASH_28F320C3B;
-               info->sector_count = 71;
-               info->size = 0x00400000 * (sizeof(FPW)/2);
-               break;                          /* => 4 or 8 MB         */
-
-       case (FPW)INTEL_ID_28F320B3B:
-               info->flash_id += FLASH_INTEL320B;
-               info->sector_count = 71;
-               info->size = 0x00400000 * (sizeof(FPW)/2);
-               break;                          /* => 4 or 8 MB         */
-
-       case (FPW)INTEL_ID_28F640C3B:
-               info->flash_id += FLASH_28F640C3B;
-               info->sector_count = 135;
-               info->size = 0x00800000 * (sizeof(FPW)/2);
-               break;                          /* => 8 or 16 MB        */
-
-       case (FPW)INTEL_ID_28F640B3B:
-               info->flash_id += FLASH_INTEL640B;
-               info->sector_count = 135;
-               info->size = 0x00800000 * (sizeof(FPW)/2);
-               break;                          /* => 8 or 16 MB        */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* => no or unknown flash */
-       }
-
-       flash_get_offsets((ulong)addr, info);
-
-       /* Put FLASH back in read mode */
-       flash_reset(info);
-
-       return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       FPWV *addr;
-       int flag, prot, sect;
-       int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
-       ulong start, now, last;
-       int rcode = 0;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_INTEL800B:
-       case FLASH_INTEL160B:
-       case FLASH_INTEL320B:
-       case FLASH_INTEL640B:
-       case FLASH_28F800C3B:
-       case FLASH_28F160C3B:
-       case FLASH_28F320C3B:
-       case FLASH_28F640C3B:
-       case FLASH_AM640U:
-               break;
-       case FLASH_UNKNOWN:
-       default:
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       last  = get_timer(0);
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
-               if (info->protect[sect] != 0)   /* protected, skip it */
-                       continue;
-
-               /* Disable interrupts which might cause a timeout here */
-               flag = disable_interrupts();
-
-               addr = (FPWV *)(info->start[sect]);
-               if (intel) {
-                       *addr = (FPW)0x00500050; /* clear status register */
-                       *addr = (FPW)0x00200020; /* erase setup */
-                       *addr = (FPW)0x00D000D0; /* erase confirm */
-               }
-               else {
-                       /* must be AMD style if not Intel */
-                       FPWV *base;             /* first address in bank */
-
-                       base = (FPWV *)(info->start[0]);
-                       base[FLASH_CYCLE1] = (FPW)0x00AA00AA;   /* unlock */
-                       base[FLASH_CYCLE2] = (FPW)0x00550055;   /* unlock */
-                       base[FLASH_CYCLE1] = (FPW)0x00800080;   /* erase mode */
-                       base[FLASH_CYCLE1] = (FPW)0x00AA00AA;   /* unlock */
-                       base[FLASH_CYCLE2] = (FPW)0x00550055;   /* unlock */
-                       *addr = (FPW)0x00300030;        /* erase sector */
-               }
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts();
-
-               start = get_timer(0);
-
-               /* wait at least 50us for AMD, 80us for Intel.
-                * Let's wait 1 ms.
-                */
-               udelay (1000);
-
-               while ((*addr & (FPW)0x00800080) != (FPW)0x00800080) {
-                       if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                               printf ("Timeout\n");
-
-                               if (intel) {
-                                       /* suspend erase        */
-                                       *addr = (FPW)0x00B000B0;
-                               }
-
-                               flash_reset(info);      /* reset to read mode */
-                               rcode = 1;              /* failed */
-                               break;
-                       }
-
-                       /* show that we're waiting */
-                       if ((get_timer(last)) > CONFIG_SYS_HZ) {/* every second */
-                               putc ('.');
-                               last = get_timer(0);
-                       }
-               }
-
-               /* show that we're waiting */
-               if ((get_timer(last)) > CONFIG_SYS_HZ) {        /* every second */
-                       putc ('.');
-                       last = get_timer(0);
-               }
-
-               flash_reset(info);      /* reset to read mode   */
-       }
-
-       printf (" done\n");
-       return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
-       int bytes;        /* number of bytes to program in current word         */
-       int left;         /* number of bytes left to program                    */
-       int i, res;
-
-       for (left = cnt, res = 0;
-                left > 0 && res == 0;
-                addr += sizeof(data), left -= sizeof(data) - bytes) {
-
-               bytes = addr & (sizeof(data) - 1);
-               addr &= ~(sizeof(data) - 1);
-
-               /* combine source and destination data so can program
-                * an entire word of 16 or 32 bits
-                */
-               for (i = 0; i < sizeof(data); i++) {
-                       data <<= 8;
-                       if (i < bytes || i - bytes >= left )
-                               data += *((uchar *)addr + i);
-                       else
-                               data += *src++;
-               }
-
-               /* write one word to the flash */
-               switch (info->flash_id & FLASH_VENDMASK) {
-               case FLASH_MAN_AMD:
-                       res = write_word_amd(info, (FPWV *)addr, data);
-                       break;
-               case FLASH_MAN_INTEL:
-                       res = write_word_intel(info, (FPWV *)addr, data);
-                       break;
-               default:
-                       /* unknown flash type, error! */
-                       printf ("missing or unknown FLASH type\n");
-                       res = 1;        /* not really a timeout, but gives error */
-                       break;
-               }
-       }
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
-       ulong start;
-       int flag;
-       int res = 0;    /* result, assume success       */
-       FPWV *base;             /* first address in flash bank  */
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*dest & data) != data) {
-               return (2);
-       }
-
-
-       base = (FPWV *)(info->start[0]);
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       base[FLASH_CYCLE1] = (FPW)0x00AA00AA;   /* unlock */
-       base[FLASH_CYCLE2] = (FPW)0x00550055;   /* unlock */
-       base[FLASH_CYCLE1] = (FPW)0x00A000A0;   /* selects program mode */
-
-       *dest = data;           /* start programming the data   */
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       start = get_timer (0);
-
-       /* data polling for D7 */
-       while (res == 0 && (*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *dest = (FPW)0x00F000F0;        /* reset bank */
-                       res = 1;
-               }
-       }
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for Intel FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_intel (flash_info_t *info, FPWV *dest, FPW data)
-{
-       ulong start;
-       int flag;
-       int res = 0;    /* result, assume success       */
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*dest & data) != data) {
-               return (2);
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       *dest = (FPW)0x00500050;        /* clear status register        */
-       *dest = (FPW)0x00FF00FF;        /* make sure in read mode       */
-       *dest = (FPW)0x00400040;        /* program setup                */
-
-       *dest = data;           /* start programming the data   */
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       start = get_timer (0);
-
-       while (res == 0 && (*dest & (FPW)0x00800080) != (FPW)0x00800080) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *dest = (FPW)0x00B000B0;        /* Suspend program      */
-                       res = 1;
-               }
-       }
-
-       if (res == 0 && (*dest & (FPW)0x00100010))
-               res = 1;        /* write failed, time out error is close enough */
-
-       *dest = (FPW)0x00500050;        /* clear status register        */
-       *dest = (FPW)0x00FF00FF;        /* make sure in read mode       */
-
-       return (res);
-}
diff --git a/board/atc/ti113x.c b/board/atc/ti113x.c
deleted file mode 100644 (file)
index c7c502c..0000000
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- ********************************************************************
- *
- * Lots of code copied from:
- *
- * i82365.c 1.352 - Linux driver for Intel 82365 and compatible
- * PC Card controllers, and Yenta-compatible PCI-to-CardBus controllers.
- * (C) 1999 David A. Hinds <dahinds@users.sourceforge.net>
- */
-
-#include <common.h>
-
-#ifdef CONFIG_I82365
-
-#include <command.h>
-#include <pci.h>
-#include <pcmcia.h>
-#include <asm/io.h>
-
-#include <pcmcia/ss.h>
-#include <pcmcia/i82365.h>
-#include <pcmcia/yenta.h>
-#include <pcmcia/ti113x.h>
-
-static struct pci_device_id supported[] = {
-       {PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1510},
-       {0, 0}
-};
-
-#define CYCLE_TIME     120
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev);
-#endif
-
-typedef struct socket_info_t {
-       pci_dev_t       dev;
-       u_short         bcr;
-       u_char          pci_lat, cb_lat, sub_bus, cache;
-       u_int           cb_phys;
-
-       socket_cap_t    cap;
-       u_short         type;
-       u_int           flags;
-       ti113x_state_t  state;
-} socket_info_t;
-
-static socket_info_t socket;
-static socket_state_t state;
-static struct pccard_mem_map mem;
-static struct pccard_io_map io;
-
-/*====================================================================*/
-
-/* Some PCI shortcuts */
-
-static int pci_readb (socket_info_t * s, int r, u_char * v)
-{
-       return pci_read_config_byte (s->dev, r, v);
-}
-static int pci_writeb (socket_info_t * s, int r, u_char v)
-{
-       return pci_write_config_byte (s->dev, r, v);
-}
-static int pci_readw (socket_info_t * s, int r, u_short * v)
-{
-       return pci_read_config_word (s->dev, r, v);
-}
-static int pci_writew (socket_info_t * s, int r, u_short v)
-{
-       return pci_write_config_word (s->dev, r, v);
-}
-static int pci_readl (socket_info_t * s, int r, u_int * v)
-{
-       return pci_read_config_dword (s->dev, r, v);
-}
-static int pci_writel (socket_info_t * s, int r, u_int v)
-{
-       return pci_write_config_dword (s->dev, r, v);
-}
-
-/*====================================================================*/
-
-#define cb_readb(s, r)         readb((s)->cb_phys + (r))
-#define cb_readl(s, r)         readl((s)->cb_phys + (r))
-#define cb_writeb(s, r, v)     writeb(v, (s)->cb_phys + (r))
-#define cb_writel(s, r, v)     writel(v, (s)->cb_phys + (r))
-
-static u_char i365_get (socket_info_t * s, u_short reg)
-{
-       return cb_readb (s, 0x0800 + reg);
-}
-
-static void i365_set (socket_info_t * s, u_short reg, u_char data)
-{
-       cb_writeb (s, 0x0800 + reg, data);
-}
-
-static void i365_bset (socket_info_t * s, u_short reg, u_char mask)
-{
-       i365_set (s, reg, i365_get (s, reg) | mask);
-}
-
-static void i365_bclr (socket_info_t * s, u_short reg, u_char mask)
-{
-       i365_set (s, reg, i365_get (s, reg) & ~mask);
-}
-
-#if 0  /* not used */
-static void i365_bflip (socket_info_t * s, u_short reg, u_char mask, int b)
-{
-       u_char d = i365_get (s, reg);
-
-       i365_set (s, reg, (b) ? (d | mask) : (d & ~mask));
-}
-
-static u_short i365_get_pair (socket_info_t * s, u_short reg)
-{
-       return (i365_get (s, reg) + (i365_get (s, reg + 1) << 8));
-}
-#endif /* not used */
-
-static void i365_set_pair (socket_info_t * s, u_short reg, u_short data)
-{
-       i365_set (s, reg, data & 0xff);
-       i365_set (s, reg + 1, data >> 8);
-}
-
-/*======================================================================
-
-    Code to save and restore global state information for TI 1130 and
-    TI 1131 controllers, and to set and report global configuration
-    options.
-
-======================================================================*/
-
-static void ti113x_get_state (socket_info_t * s)
-{
-       ti113x_state_t *p = &s->state;
-
-       pci_readl (s, TI113X_SYSTEM_CONTROL, &p->sysctl);
-       pci_readb (s, TI113X_CARD_CONTROL, &p->cardctl);
-       pci_readb (s, TI113X_DEVICE_CONTROL, &p->devctl);
-       pci_readb (s, TI1250_DIAGNOSTIC, &p->diag);
-       pci_readl (s, TI12XX_IRQMUX, &p->irqmux);
-}
-
-static void ti113x_set_state (socket_info_t * s)
-{
-       ti113x_state_t *p = &s->state;
-
-       pci_writel (s, TI113X_SYSTEM_CONTROL, p->sysctl);
-       pci_writeb (s, TI113X_CARD_CONTROL, p->cardctl);
-       pci_writeb (s, TI113X_DEVICE_CONTROL, p->devctl);
-       pci_writeb (s, TI1250_MULTIMEDIA_CTL, 0);
-       pci_writeb (s, TI1250_DIAGNOSTIC, p->diag);
-       pci_writel (s, TI12XX_IRQMUX, p->irqmux);
-       i365_set_pair (s, TI113X_IO_OFFSET (0), 0);
-       i365_set_pair (s, TI113X_IO_OFFSET (1), 0);
-}
-
-static u_int ti113x_set_opts (socket_info_t * s)
-{
-       ti113x_state_t *p = &s->state;
-       u_int mask = 0xffff;
-
-       p->cardctl &= ~TI113X_CCR_ZVENABLE;
-       p->cardctl |= TI113X_CCR_SPKROUTEN;
-
-       return mask;
-}
-
-/*======================================================================
-
-    Routines to handle common CardBus options
-
-======================================================================*/
-
-/* Default settings for PCI command configuration register */
-#define CMD_DFLT (PCI_COMMAND_IO|PCI_COMMAND_MEMORY| \
-                 PCI_COMMAND_MASTER|PCI_COMMAND_WAIT)
-
-static void cb_get_state (socket_info_t * s)
-{
-       pci_readb (s, PCI_CACHE_LINE_SIZE, &s->cache);
-       pci_readb (s, PCI_LATENCY_TIMER, &s->pci_lat);
-       pci_readb (s, CB_LATENCY_TIMER, &s->cb_lat);
-       pci_readb (s, CB_CARDBUS_BUS, &s->cap.cardbus);
-       pci_readb (s, CB_SUBORD_BUS, &s->sub_bus);
-       pci_readw (s, CB_BRIDGE_CONTROL, &s->bcr);
-}
-
-static void cb_set_state (socket_info_t * s)
-{
-       pci_writel (s, CB_LEGACY_MODE_BASE, 0);
-       pci_writel (s, PCI_BASE_ADDRESS_0, s->cb_phys);
-       pci_writew (s, PCI_COMMAND, CMD_DFLT);
-       pci_writeb (s, PCI_CACHE_LINE_SIZE, s->cache);
-       pci_writeb (s, PCI_LATENCY_TIMER, s->pci_lat);
-       pci_writeb (s, CB_LATENCY_TIMER, s->cb_lat);
-       pci_writeb (s, CB_CARDBUS_BUS, s->cap.cardbus);
-       pci_writeb (s, CB_SUBORD_BUS, s->sub_bus);
-       pci_writew (s, CB_BRIDGE_CONTROL, s->bcr);
-}
-
-static void cb_set_opts (socket_info_t * s)
-{
-       if (s->cache == 0)
-               s->cache = 8;
-       if (s->pci_lat == 0)
-               s->pci_lat = 0xa8;
-       if (s->cb_lat == 0)
-               s->cb_lat = 0xb0;
-}
-
-/*======================================================================
-
-    Power control for Cardbus controllers: used both for 16-bit and
-    Cardbus cards.
-
-======================================================================*/
-
-static int cb_set_power (socket_info_t * s, socket_state_t * state)
-{
-       u_int reg = 0;
-
-       /* restart card voltage detection if it seems appropriate */
-       if ((state->Vcc == 0) && (state->Vpp == 0) &&
-          !(cb_readl (s, CB_SOCKET_STATE) & CB_SS_VSENSE))
-               cb_writel (s, CB_SOCKET_FORCE, CB_SF_CVSTEST);
-       switch (state->Vcc) {
-       case 0:
-               reg = 0;
-               break;
-       case 33:
-               reg = CB_SC_VCC_3V;
-               break;
-       case 50:
-               reg = CB_SC_VCC_5V;
-               break;
-       default:
-               return -1;
-       }
-       switch (state->Vpp) {
-       case 0:
-               break;
-       case 33:
-               reg |= CB_SC_VPP_3V;
-               break;
-       case 50:
-               reg |= CB_SC_VPP_5V;
-               break;
-       case 120:
-               reg |= CB_SC_VPP_12V;
-               break;
-       default:
-               return -1;
-       }
-       if (reg != cb_readl (s, CB_SOCKET_CONTROL))
-               cb_writel (s, CB_SOCKET_CONTROL, reg);
-
-       return 0;
-}
-
-/*======================================================================
-
-    Generic routines to get and set controller options
-
-======================================================================*/
-
-static void get_bridge_state (socket_info_t * s)
-{
-       ti113x_get_state (s);
-       cb_get_state (s);
-}
-
-static void set_bridge_state (socket_info_t * s)
-{
-       cb_set_state (s);
-       i365_set (s, I365_GBLCTL, 0x00);
-       i365_set (s, I365_GENCTL, 0x00);
-       ti113x_set_state (s);
-}
-
-static void set_bridge_opts (socket_info_t * s)
-{
-       ti113x_set_opts (s);
-       cb_set_opts (s);
-}
-
-/*====================================================================*/
-#define PD67_EXT_INDEX         0x2e    /* Extension index */
-#define PD67_EXT_DATA          0x2f    /* Extension data */
-#define PD67_EXD_VS1(s)                (0x01 << ((s)<<1))
-
-#define pd67_ext_get(s, r) \
-    (i365_set(s, PD67_EXT_INDEX, r), i365_get(s, PD67_EXT_DATA))
-
-static int i365_get_status (socket_info_t * s, u_int * value)
-{
-       u_int status;
-
-       status = i365_get (s, I365_IDENT);
-       status = i365_get (s, I365_STATUS);
-       *value = ((status & I365_CS_DETECT) == I365_CS_DETECT) ? SS_DETECT : 0;
-       if (i365_get (s, I365_INTCTL) & I365_PC_IOCARD) {
-               *value |= (status & I365_CS_STSCHG) ? 0 : SS_STSCHG;
-       } else {
-               *value |= (status & I365_CS_BVD1) ? 0 : SS_BATDEAD;
-               *value |= (status & I365_CS_BVD2) ? 0 : SS_BATWARN;
-       }
-       *value |= (status & I365_CS_WRPROT) ? SS_WRPROT : 0;
-       *value |= (status & I365_CS_READY) ? SS_READY : 0;
-       *value |= (status & I365_CS_POWERON) ? SS_POWERON : 0;
-
-       status = cb_readl (s, CB_SOCKET_STATE);
-       *value |= (status & CB_SS_32BIT) ? SS_CARDBUS : 0;
-       *value |= (status & CB_SS_3VCARD) ? SS_3VCARD : 0;
-       *value |= (status & CB_SS_XVCARD) ? SS_XVCARD : 0;
-       *value |= (status & CB_SS_VSENSE) ? 0 : SS_PENDING;
-       /* For now, ignore cards with unsupported voltage keys */
-       if (*value & SS_XVCARD)
-               *value &= ~(SS_DETECT | SS_3VCARD | SS_XVCARD);
-
-       return 0;
-}      /* i365_get_status */
-
-static int i365_set_socket (socket_info_t * s, socket_state_t * state)
-{
-       u_char reg;
-
-       set_bridge_state (s);
-
-       /* IO card, RESET flag */
-       reg = 0;
-       reg |= (state->flags & SS_RESET) ? 0 : I365_PC_RESET;
-       reg |= (state->flags & SS_IOCARD) ? I365_PC_IOCARD : 0;
-       i365_set (s, I365_INTCTL, reg);
-
-       reg = I365_PWR_NORESET;
-       if (state->flags & SS_PWR_AUTO)
-               reg |= I365_PWR_AUTO;
-       if (state->flags & SS_OUTPUT_ENA)
-               reg |= I365_PWR_OUT;
-
-       cb_set_power (s, state);
-       reg |= i365_get (s, I365_POWER) & (I365_VCC_MASK | I365_VPP1_MASK);
-
-       if (reg != i365_get (s, I365_POWER))
-               i365_set (s, I365_POWER, reg);
-
-       return 0;
-}      /* i365_set_socket */
-
-/*====================================================================*/
-
-static int i365_set_mem_map (socket_info_t * s, struct pccard_mem_map *mem)
-{
-       u_short base, i;
-       u_char map;
-
-       debug ("i82365: SetMemMap(%d, %#2.2x, %d ns, %#5.5lx-%#5.5lx, %#5.5x)\n",
-               mem->map, mem->flags, mem->speed,
-               mem->sys_start, mem->sys_stop, mem->card_start);
-
-       map = mem->map;
-       if ((map > 4) ||
-           (mem->card_start > 0x3ffffff) ||
-           (mem->sys_start > mem->sys_stop) ||
-           (mem->speed > 1000)) {
-               return -1;
-       }
-
-       /* Turn off the window before changing anything */
-       if (i365_get (s, I365_ADDRWIN) & I365_ENA_MEM (map))
-               i365_bclr (s, I365_ADDRWIN, I365_ENA_MEM (map));
-
-       /* Take care of high byte, for PCI controllers */
-       i365_set (s, CB_MEM_PAGE (map), mem->sys_start >> 24);
-
-       base = I365_MEM (map);
-       i = (mem->sys_start >> 12) & 0x0fff;
-       if (mem->flags & MAP_16BIT)
-               i |= I365_MEM_16BIT;
-       if (mem->flags & MAP_0WS)
-               i |= I365_MEM_0WS;
-       i365_set_pair (s, base + I365_W_START, i);
-
-       i = (mem->sys_stop >> 12) & 0x0fff;
-       switch (mem->speed / CYCLE_TIME) {
-       case 0:
-               break;
-       case 1:
-               i |= I365_MEM_WS0;
-               break;
-       case 2:
-               i |= I365_MEM_WS1;
-               break;
-       default:
-               i |= I365_MEM_WS1 | I365_MEM_WS0;
-               break;
-       }
-       i365_set_pair (s, base + I365_W_STOP, i);
-
-       i = ((mem->card_start - mem->sys_start) >> 12) & 0x3fff;
-       if (mem->flags & MAP_WRPROT)
-               i |= I365_MEM_WRPROT;
-       if (mem->flags & MAP_ATTRIB)
-               i |= I365_MEM_REG;
-       i365_set_pair (s, base + I365_W_OFF, i);
-
-       /* Turn on the window if necessary */
-       if (mem->flags & MAP_ACTIVE)
-               i365_bset (s, I365_ADDRWIN, I365_ENA_MEM (map));
-       return 0;
-}      /* i365_set_mem_map */
-
-static int i365_set_io_map (socket_info_t * s, struct pccard_io_map *io)
-{
-       u_char map, ioctl;
-
-       map = io->map;
-       /* comment out: comparison is always false due to limited range of data type */
-       if ((map > 1) || /* (io->start > 0xffff) || (io->stop > 0xffff) || */
-           (io->stop < io->start))
-               return -1;
-       /* Turn off the window before changing anything */
-       if (i365_get (s, I365_ADDRWIN) & I365_ENA_IO (map))
-               i365_bclr (s, I365_ADDRWIN, I365_ENA_IO (map));
-       i365_set_pair (s, I365_IO (map) + I365_W_START, io->start);
-       i365_set_pair (s, I365_IO (map) + I365_W_STOP, io->stop);
-       ioctl = i365_get (s, I365_IOCTL) & ~I365_IOCTL_MASK (map);
-       if (io->speed)
-               ioctl |= I365_IOCTL_WAIT (map);
-       if (io->flags & MAP_0WS)
-               ioctl |= I365_IOCTL_0WS (map);
-       if (io->flags & MAP_16BIT)
-               ioctl |= I365_IOCTL_16BIT (map);
-       if (io->flags & MAP_AUTOSZ)
-               ioctl |= I365_IOCTL_IOCS16 (map);
-       i365_set (s, I365_IOCTL, ioctl);
-       /* Turn on the window if necessary */
-       if (io->flags & MAP_ACTIVE)
-               i365_bset (s, I365_ADDRWIN, I365_ENA_IO (map));
-       return 0;
-}      /* i365_set_io_map */
-
-/*====================================================================*/
-
-static int i82365_init (void)
-{
-       u_int val;
-       int i;
-
-       if ((socket.dev = pci_find_devices (supported, 0)) < 0) {
-               /* Controller not found */
-               return 1;
-       }
-       debug ("i82365 Device Found!\n");
-
-       pci_read_config_dword (socket.dev, PCI_BASE_ADDRESS_0, &socket.cb_phys);
-       socket.cb_phys &= ~0xf;
-
-       get_bridge_state (&socket);
-       set_bridge_opts (&socket);
-
-       i = i365_get_status (&socket, &val);
-
-       if (val & SS_DETECT) {
-               if (val & SS_3VCARD) {
-                       state.Vcc = state.Vpp = 33;
-                       puts (" 3.3V card found: ");
-               } else if (!(val & SS_XVCARD)) {
-                       state.Vcc = state.Vpp = 50;
-                       puts (" 5.0V card found: ");
-               } else {
-                       puts ("i82365: unsupported voltage key\n");
-                       state.Vcc = state.Vpp = 0;
-               }
-       } else {
-               /* No card inserted */
-               puts ("No card\n");
-               return 1;
-       }
-
-       state.flags = SS_IOCARD | SS_OUTPUT_ENA;
-       state.csc_mask = 0;
-       state.io_irq = 0;
-
-       i365_set_socket (&socket, &state);
-
-       for (i = 500; i; i--) {
-               if ((i365_get (&socket, I365_STATUS) & I365_CS_READY))
-                       break;
-               udelay (1000);
-       }
-
-       if (i == 0) {
-               /* PC Card not ready for data transfer */
-               puts ("i82365 PC Card not ready for data transfer\n");
-               return 1;
-       }
-       debug (" PC Card ready for data transfer: ");
-
-       mem.map = 0;
-       mem.flags = MAP_ATTRIB | MAP_ACTIVE;
-       mem.speed = 300;
-       mem.sys_start = CONFIG_SYS_PCMCIA_MEM_ADDR;
-       mem.sys_stop = CONFIG_SYS_PCMCIA_MEM_ADDR + CONFIG_SYS_PCMCIA_MEM_SIZE - 1;
-       mem.card_start = 0;
-       i365_set_mem_map (&socket, &mem);
-
-       io.map = 0;
-       io.flags = MAP_AUTOSZ | MAP_ACTIVE;
-       io.speed = 0;
-       io.start = 0x0100;
-       io.stop = 0x010F;
-       i365_set_io_map (&socket, &io);
-
-#ifdef DEBUG
-       i82365_dump_regions (socket.dev);
-#endif
-
-       return 0;
-}
-
-static void i82365_exit (void)
-{
-       io.map = 0;
-       io.flags = 0;
-       io.speed = 0;
-       io.start = 0;
-       io.stop = 0x1;
-
-       i365_set_io_map (&socket, &io);
-
-       mem.map = 0;
-       mem.flags = 0;
-       mem.speed = 0;
-       mem.sys_start = 0;
-       mem.sys_stop = 0x1000;
-       mem.card_start = 0;
-
-       i365_set_mem_map (&socket, &mem);
-
-       socket.state.sysctl &= 0xFFFF00FF;
-
-       state.Vcc = state.Vpp = 0;
-
-       i365_set_socket (&socket, &state);
-}
-
-int pcmcia_on (void)
-{
-       u_int rc;
-
-       debug ("Enable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
-       rc = i82365_init();
-       if (rc)
-               goto exit;
-
-       rc = check_ide_device(0);
-       if (rc == 0)
-               goto exit;
-
-       i82365_exit();
-
-exit:
-       return rc;
-}
-
-#if defined(CONFIG_CMD_PCMCIA)
-int pcmcia_off (void)
-{
-       printf ("Disable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
-       i82365_exit();
-
-       return 0;
-}
-#endif
-
-/*======================================================================
-
-    Debug stuff
-
-======================================================================*/
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev)
-{
-       u_int tmp[2];
-       u_int *mem = (void *) socket.cb_phys;
-       u_char *cis = (void *) CONFIG_SYS_PCMCIA_MEM_ADDR;
-       u_char *ide = (void *) (CONFIG_SYS_ATA_BASE_ADDR + CONFIG_SYS_ATA_REG_OFFSET);
-
-       pci_read_config_dword (dev, 0x00, tmp + 0);
-       pci_read_config_dword (dev, 0x80, tmp + 1);
-
-       printf ("PCI CONF: %08X ... %08X\n",
-               tmp[0], tmp[1]);
-       printf ("PCI MEM:  ... %08X ... %08X\n",
-               mem[0x8 / 4], mem[0x800 / 4]);
-       printf ("CIS:      ...%c%c%c%c%c%c%c%c...\n",
-               cis[0x38], cis[0x3a], cis[0x3c], cis[0x3e],
-               cis[0x40], cis[0x42], cis[0x44], cis[0x48]);
-       printf ("CIS CONF: %02X %02X %02X ...\n",
-               cis[0x200], cis[0x202], cis[0x204]);
-       printf ("IDE:      %02X %02X %02X %02X %02X %02X %02X %02X\n",
-               ide[0], ide[1], ide[2], ide[3],
-               ide[4], ide[5], ide[6], ide[7]);
-}
-#endif /* DEBUG */
-
-#endif /* CONFIG_I82365 */
index ca4f79ddc1f6feb708424032864e40e8271ff4b0..cf6ed8b94c303d203ad53667ab6716496a481e8b 100644 (file)
@@ -15,7 +15,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/clk.h>
 #include <lcd.h>
-#include <atmel_lcdc.h>
+#include <atmel_hlcdc.h>
 #include <atmel_mci.h>
 #include <phy.h>
 #include <micrel.h>
@@ -146,7 +146,6 @@ vidinfo_t panel_info = {
        .vl_col = 800,
        .vl_row = 480,
        .vl_clk = 24000000,
-       .vl_sync = ATMEL_LCDC_INVLINE_NORMAL | ATMEL_LCDC_INVFRAME_NORMAL,
        .vl_bpix = LCD_BPP,
        .vl_tft = 1,
        .vl_hsync_len = 128,
diff --git a/board/atmel/sama5d4_xplained/Kconfig b/board/atmel/sama5d4_xplained/Kconfig
new file mode 100644 (file)
index 0000000..f320a68
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_SAMA5D4_XPLAINED
+
+config SYS_BOARD
+       default "sama5d4_xplained"
+
+config SYS_VENDOR
+       default "atmel"
+
+config SYS_SOC
+       default "at91"
+
+config SYS_CONFIG_NAME
+       default "sama5d4_xplained"
+
+endif
diff --git a/board/atmel/sama5d4_xplained/MAINTAINERS b/board/atmel/sama5d4_xplained/MAINTAINERS
new file mode 100644 (file)
index 0000000..035f64c
--- /dev/null
@@ -0,0 +1,8 @@
+SAMA5D4 XPLAINED ULTRA BOARD
+M:     Bo Shen <voice.shen@atmel.com>
+S:     Maintained
+F:     board/atmel/sama5d4_xplained/
+F:     include/configs/sama5d4_xplained.h
+F:     configs/sama5d4_xplained_mmc_defconfig
+F:     configs/sama5d4_xplained_nandflash_defconfig
+F:     configs/sama5d4_xplained_spiflash_defconfig
diff --git a/board/atmel/sama5d4_xplained/Makefile b/board/atmel/sama5d4_xplained/Makefile
new file mode 100644 (file)
index 0000000..c59b12d
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# Copyright (C) 2014 Atmel
+#                   Bo Shen <voice.shen@atmel.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += sama5d4_xplained.o
diff --git a/board/atmel/sama5d4_xplained/sama5d4_xplained.c b/board/atmel/sama5d4_xplained/sama5d4_xplained.c
new file mode 100644 (file)
index 0000000..2758c5c
--- /dev/null
@@ -0,0 +1,317 @@
+/*
+ * Copyright (C) 2014 Atmel
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_rstc.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/clk.h>
+#include <asm/arch/sama5d3_smc.h>
+#include <asm/arch/sama5d4.h>
+#include <atmel_hlcdc.h>
+#include <atmel_mci.h>
+#include <lcd.h>
+#include <mmc.h>
+#include <net.h>
+#include <netdev.h>
+#include <nand.h>
+#include <spi.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_ATMEL_SPI
+int spi_cs_is_valid(unsigned int bus, unsigned int cs)
+{
+       return bus == 0 && cs == 0;
+}
+
+void spi_cs_activate(struct spi_slave *slave)
+{
+       at91_set_pio_output(AT91_PIO_PORTC, 3, 0);
+}
+
+void spi_cs_deactivate(struct spi_slave *slave)
+{
+       at91_set_pio_output(AT91_PIO_PORTC, 3, 1);
+}
+
+static void sama5d4_xplained_spi0_hw_init(void)
+{
+       at91_set_a_periph(AT91_PIO_PORTC, 0, 0);        /* SPI0_MISO */
+       at91_set_a_periph(AT91_PIO_PORTC, 1, 0);        /* SPI0_MOSI */
+       at91_set_a_periph(AT91_PIO_PORTC, 2, 0);        /* SPI0_SPCK */
+
+       at91_set_pio_output(AT91_PIO_PORTC, 3, 1);      /* SPI0_CS0 */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_SPI0);
+}
+#endif /* CONFIG_ATMEL_SPI */
+
+#ifdef CONFIG_NAND_ATMEL
+static void sama5d4_xplained_nand_hw_init(void)
+{
+       struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
+
+       at91_periph_clk_enable(ATMEL_ID_SMC);
+
+       /* Configure SMC CS3 for NAND */
+       writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(1) |
+              AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(1),
+              &smc->cs[3].setup);
+       writel(AT91_SMC_PULSE_NWE(2) | AT91_SMC_PULSE_NCS_WR(3) |
+              AT91_SMC_PULSE_NRD(2) | AT91_SMC_PULSE_NCS_RD(3),
+              &smc->cs[3].pulse);
+       writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
+              &smc->cs[3].cycle);
+       writel(AT91_SMC_TIMINGS_TCLR(2) | AT91_SMC_TIMINGS_TADL(7) |
+              AT91_SMC_TIMINGS_TAR(2)  | AT91_SMC_TIMINGS_TRR(3)   |
+              AT91_SMC_TIMINGS_TWB(7)  | AT91_SMC_TIMINGS_RBNSEL(3)|
+              AT91_SMC_TIMINGS_NFSEL(1), &smc->cs[3].timings);
+       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+              AT91_SMC_MODE_EXNW_DISABLE |
+              AT91_SMC_MODE_DBW_8 |
+              AT91_SMC_MODE_TDF_CYCLE(3),
+              &smc->cs[3].mode);
+
+       at91_set_a_periph(AT91_PIO_PORTC, 5, 0);        /* D0 */
+       at91_set_a_periph(AT91_PIO_PORTC, 6, 0);        /* D1 */
+       at91_set_a_periph(AT91_PIO_PORTC, 7, 0);        /* D2 */
+       at91_set_a_periph(AT91_PIO_PORTC, 8, 0);        /* D3 */
+       at91_set_a_periph(AT91_PIO_PORTC, 9, 0);        /* D4 */
+       at91_set_a_periph(AT91_PIO_PORTC, 10, 0);       /* D5 */
+       at91_set_a_periph(AT91_PIO_PORTC, 11, 0);       /* D6 */
+       at91_set_a_periph(AT91_PIO_PORTC, 12, 0);       /* D7 */
+       at91_set_a_periph(AT91_PIO_PORTC, 13, 0);       /* RE */
+       at91_set_a_periph(AT91_PIO_PORTC, 14, 0);       /* WE */
+       at91_set_a_periph(AT91_PIO_PORTC, 15, 1);       /* NCS */
+       at91_set_a_periph(AT91_PIO_PORTC, 16, 1);       /* RDY */
+       at91_set_a_periph(AT91_PIO_PORTC, 17, 1);       /* ALE */
+       at91_set_a_periph(AT91_PIO_PORTC, 18, 1);       /* CLE */
+}
+#endif
+
+#ifdef CONFIG_CMD_USB
+static void sama5d4_xplained_usb_hw_init(void)
+{
+       at91_set_pio_output(AT91_PIO_PORTE, 11, 1);
+       at91_set_pio_output(AT91_PIO_PORTE, 14, 1);
+}
+#endif
+
+#ifdef CONFIG_LCD
+vidinfo_t panel_info = {
+       .vl_col = 480,
+       .vl_row = 272,
+       .vl_clk = 9000000,
+       .vl_bpix = LCD_BPP,
+       .vl_tft = 1,
+       .vl_hsync_len = 41,
+       .vl_left_margin = 2,
+       .vl_right_margin = 2,
+       .vl_vsync_len = 11,
+       .vl_upper_margin = 2,
+       .vl_lower_margin = 2,
+       .mmio = ATMEL_BASE_LCDC,
+};
+
+/* No power up/down pin for the LCD pannel */
+void lcd_enable(void)  { /* Empty! */ }
+void lcd_disable(void) { /* Empty! */ }
+
+unsigned int has_lcdc(void)
+{
+       return 1;
+}
+
+static void sama5d4_xplained_lcd_hw_init(void)
+{
+       at91_set_a_periph(AT91_PIO_PORTA, 24, 0);       /* LCDPWM */
+       at91_set_a_periph(AT91_PIO_PORTA, 25, 0);       /* LCDDISP */
+       at91_set_a_periph(AT91_PIO_PORTA, 26, 0);       /* LCDVSYNC */
+       at91_set_a_periph(AT91_PIO_PORTA, 27, 0);       /* LCDHSYNC */
+       at91_set_a_periph(AT91_PIO_PORTA, 28, 0);       /* LCDDOTCK */
+       at91_set_a_periph(AT91_PIO_PORTA, 29, 0);       /* LCDDEN */
+
+       at91_set_a_periph(AT91_PIO_PORTA,  0, 0);       /* LCDD0 */
+       at91_set_a_periph(AT91_PIO_PORTA,  1, 0);       /* LCDD1 */
+       at91_set_a_periph(AT91_PIO_PORTA,  2, 0);       /* LCDD2 */
+       at91_set_a_periph(AT91_PIO_PORTA,  3, 0);       /* LCDD3 */
+       at91_set_a_periph(AT91_PIO_PORTA,  4, 0);       /* LCDD4 */
+       at91_set_a_periph(AT91_PIO_PORTA,  5, 0);       /* LCDD5 */
+       at91_set_a_periph(AT91_PIO_PORTA,  6, 0);       /* LCDD6 */
+       at91_set_a_periph(AT91_PIO_PORTA,  7, 0);       /* LCDD7 */
+
+       at91_set_a_periph(AT91_PIO_PORTA,  8, 0);       /* LCDD9 */
+       at91_set_a_periph(AT91_PIO_PORTA,  9, 0);       /* LCDD8 */
+       at91_set_a_periph(AT91_PIO_PORTA, 10, 0);       /* LCDD10 */
+       at91_set_a_periph(AT91_PIO_PORTA, 11, 0);       /* LCDD11 */
+       at91_set_a_periph(AT91_PIO_PORTA, 12, 0);       /* LCDD12 */
+       at91_set_a_periph(AT91_PIO_PORTA, 13, 0);       /* LCDD13 */
+       at91_set_a_periph(AT91_PIO_PORTA, 14, 0);       /* LCDD14 */
+       at91_set_a_periph(AT91_PIO_PORTA, 15, 0);       /* LCDD15 */
+
+       at91_set_a_periph(AT91_PIO_PORTA, 16, 0);       /* LCDD16 */
+       at91_set_a_periph(AT91_PIO_PORTA, 17, 0);       /* LCDD17 */
+       at91_set_a_periph(AT91_PIO_PORTA, 18, 0);       /* LCDD18 */
+       at91_set_a_periph(AT91_PIO_PORTA, 19, 0);       /* LCDD19 */
+       at91_set_a_periph(AT91_PIO_PORTA, 20, 0);       /* LCDD20 */
+       at91_set_a_periph(AT91_PIO_PORTA, 21, 0);       /* LCDD21 */
+       at91_set_a_periph(AT91_PIO_PORTA, 22, 0);       /* LCDD22 */
+       at91_set_a_periph(AT91_PIO_PORTA, 23, 0);       /* LCDD23 */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_LCDC);
+}
+
+#ifdef CONFIG_LCD_INFO
+void lcd_show_board_info(void)
+{
+       ulong dram_size, nand_size;
+       int i;
+       char temp[32];
+
+       lcd_printf("2014 ATMEL Corp\n");
+       lcd_printf("%s CPU at %s MHz\n", get_cpu_name(),
+                  strmhz(temp, get_cpu_clk_rate()));
+
+       dram_size = 0;
+       for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
+               dram_size += gd->bd->bi_dram[i].size;
+
+       nand_size = 0;
+#ifdef CONFIG_NAND_ATMEL
+       for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
+               nand_size += nand_info[i].size;
+#endif
+       lcd_printf("%ld MB SDRAM, %ld MB NAND\n",
+                  dram_size >> 20, nand_size >> 20);
+}
+#endif /* CONFIG_LCD_INFO */
+
+#endif /* CONFIG_LCD */
+
+#ifdef CONFIG_GENERIC_ATMEL_MCI
+void sama5d4_xplained_mci1_hw_init(void)
+{
+       at91_set_c_periph(AT91_PIO_PORTE, 19, 1);       /* MCI1 CDA */
+       at91_set_c_periph(AT91_PIO_PORTE, 20, 1);       /* MCI1 DA0 */
+       at91_set_c_periph(AT91_PIO_PORTE, 21, 1);       /* MCI1 DA1 */
+       at91_set_c_periph(AT91_PIO_PORTE, 22, 1);       /* MCI1 DA2 */
+       at91_set_c_periph(AT91_PIO_PORTE, 23, 1);       /* MCI1 DA3 */
+       at91_set_c_periph(AT91_PIO_PORTE, 18, 0);       /* MCI1 CLK */
+
+       /*
+        * As the mci io internal pull down is too strong, so if the io needs
+        * external pull up, the pull up resistor will be very small, if so
+        * the power consumption will increase, so disable the interanl pull
+        * down to save the power.
+        */
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 18, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 19, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 20, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 21, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 22, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 23, 0);
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_MCI1);
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       return atmel_mci_init((void *)ATMEL_BASE_MCI1);
+}
+#endif /* CONFIG_GENERIC_ATMEL_MCI */
+
+#ifdef CONFIG_MACB
+void sama5d4_xplained_macb0_hw_init(void)
+{
+       at91_set_a_periph(AT91_PIO_PORTB, 0, 0);        /* ETXCK_EREFCK */
+       at91_set_a_periph(AT91_PIO_PORTB, 6, 0);        /* ERXDV */
+       at91_set_a_periph(AT91_PIO_PORTB, 8, 0);        /* ERX0 */
+       at91_set_a_periph(AT91_PIO_PORTB, 9, 0);        /* ERX1 */
+       at91_set_a_periph(AT91_PIO_PORTB, 7, 0);        /* ERXER */
+       at91_set_a_periph(AT91_PIO_PORTB, 2, 0);        /* ETXEN */
+       at91_set_a_periph(AT91_PIO_PORTB, 12, 0);       /* ETX0 */
+       at91_set_a_periph(AT91_PIO_PORTB, 13, 0);       /* ETX1 */
+       at91_set_a_periph(AT91_PIO_PORTB, 17, 0);       /* EMDIO */
+       at91_set_a_periph(AT91_PIO_PORTB, 16, 0);       /* EMDC */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_GMAC0);
+}
+#endif
+
+static void sama5d4_xplained_serial3_hw_init(void)
+{
+       at91_set_b_periph(AT91_PIO_PORTE, 17, 1);       /* TXD3 */
+       at91_set_b_periph(AT91_PIO_PORTE, 16, 0);       /* RXD3 */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_USART3);
+}
+
+int board_early_init_f(void)
+{
+       at91_periph_clk_enable(ATMEL_ID_PIOA);
+       at91_periph_clk_enable(ATMEL_ID_PIOB);
+       at91_periph_clk_enable(ATMEL_ID_PIOC);
+       at91_periph_clk_enable(ATMEL_ID_PIOD);
+       at91_periph_clk_enable(ATMEL_ID_PIOE);
+
+       sama5d4_xplained_serial3_hw_init();
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* adress of boot parameters */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+#ifdef CONFIG_ATMEL_SPI
+       sama5d4_xplained_spi0_hw_init();
+#endif
+#ifdef CONFIG_NAND_ATMEL
+       sama5d4_xplained_nand_hw_init();
+#endif
+#ifdef CONFIG_GENERIC_ATMEL_MCI
+       sama5d4_xplained_mci1_hw_init();
+#endif
+#ifdef CONFIG_MACB
+       sama5d4_xplained_macb0_hw_init();
+#endif
+#ifdef CONFIG_LCD
+       sama5d4_xplained_lcd_hw_init();
+#endif
+#ifdef CONFIG_CMD_USB
+       sama5d4_xplained_usb_hw_init();
+#endif
+
+       return 0;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
+                                   CONFIG_SYS_SDRAM_SIZE);
+       return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       int rc = 0;
+
+#ifdef CONFIG_MACB
+       rc = macb_eth_initialize(0, (void *)ATMEL_BASE_GMAC0, 0x00);
+#endif
+
+       return rc;
+}
diff --git a/board/atmel/sama5d4ek/Kconfig b/board/atmel/sama5d4ek/Kconfig
new file mode 100644 (file)
index 0000000..7dc569c
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_SAMA5D4EK
+
+config SYS_BOARD
+       default "sama5d4ek"
+
+config SYS_VENDOR
+       default "atmel"
+
+config SYS_SOC
+       default "at91"
+
+config SYS_CONFIG_NAME
+       default "sama5d4ek"
+
+endif
diff --git a/board/atmel/sama5d4ek/MAINTAINERS b/board/atmel/sama5d4ek/MAINTAINERS
new file mode 100644 (file)
index 0000000..afe88dd
--- /dev/null
@@ -0,0 +1,8 @@
+SAMA5D4EK BOARD
+M:     Bo Shen <voice.shen@atmel.com>
+S:     Maintained
+F:     board/atmel/sama5d4ek/
+F:     include/configs/sama5d4ek.h
+F:     configs/sama5d4ek_mmc_defconfig
+F:     configs/sama5d4ek_nandflash_defconfig
+F:     configs/sama5d4ek_spiflash_defconfig
diff --git a/board/atmel/sama5d4ek/Makefile b/board/atmel/sama5d4ek/Makefile
new file mode 100644 (file)
index 0000000..55823ba
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# Copyright (C) 2014 Atmel
+#                   Bo Shen <voice.shen@atmel.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += sama5d4ek.o
diff --git a/board/atmel/sama5d4ek/sama5d4ek.c b/board/atmel/sama5d4ek/sama5d4ek.c
new file mode 100644 (file)
index 0000000..d3039c0
--- /dev/null
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2014 Atmel
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_rstc.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/clk.h>
+#include <asm/arch/sama5d3_smc.h>
+#include <asm/arch/sama5d4.h>
+#include <atmel_hlcdc.h>
+#include <atmel_mci.h>
+#include <lcd.h>
+#include <mmc.h>
+#include <net.h>
+#include <netdev.h>
+#include <nand.h>
+#include <spi.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_ATMEL_SPI
+int spi_cs_is_valid(unsigned int bus, unsigned int cs)
+{
+       return bus == 0 && cs == 0;
+}
+
+void spi_cs_activate(struct spi_slave *slave)
+{
+       at91_set_pio_output(AT91_PIO_PORTC, 3, 0);
+}
+
+void spi_cs_deactivate(struct spi_slave *slave)
+{
+       at91_set_pio_output(AT91_PIO_PORTC, 3, 1);
+}
+
+static void sama5d4ek_spi0_hw_init(void)
+{
+       at91_set_a_periph(AT91_PIO_PORTC, 0, 0);        /* SPI0_MISO */
+       at91_set_a_periph(AT91_PIO_PORTC, 1, 0);        /* SPI0_MOSI */
+       at91_set_a_periph(AT91_PIO_PORTC, 2, 0);        /* SPI0_SPCK */
+
+       at91_set_pio_output(AT91_PIO_PORTC, 3, 1);      /* SPI0_CS0 */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_SPI0);
+}
+#endif /* CONFIG_ATMEL_SPI */
+
+#ifdef CONFIG_NAND_ATMEL
+static void sama5d4ek_nand_hw_init(void)
+{
+       struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
+
+       at91_periph_clk_enable(ATMEL_ID_SMC);
+
+       /* Configure SMC CS3 for NAND */
+       writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(1) |
+              AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(1),
+              &smc->cs[3].setup);
+       writel(AT91_SMC_PULSE_NWE(2) | AT91_SMC_PULSE_NCS_WR(3) |
+              AT91_SMC_PULSE_NRD(2) | AT91_SMC_PULSE_NCS_RD(3),
+              &smc->cs[3].pulse);
+       writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
+              &smc->cs[3].cycle);
+       writel(AT91_SMC_TIMINGS_TCLR(2) | AT91_SMC_TIMINGS_TADL(7) |
+              AT91_SMC_TIMINGS_TAR(2)  | AT91_SMC_TIMINGS_TRR(3)   |
+              AT91_SMC_TIMINGS_TWB(7)  | AT91_SMC_TIMINGS_RBNSEL(3)|
+              AT91_SMC_TIMINGS_NFSEL(1), &smc->cs[3].timings);
+       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+              AT91_SMC_MODE_EXNW_DISABLE |
+              AT91_SMC_MODE_DBW_8 |
+              AT91_SMC_MODE_TDF_CYCLE(3),
+              &smc->cs[3].mode);
+
+       at91_set_a_periph(AT91_PIO_PORTC, 5, 0);        /* D0 */
+       at91_set_a_periph(AT91_PIO_PORTC, 6, 0);        /* D1 */
+       at91_set_a_periph(AT91_PIO_PORTC, 7, 0);        /* D2 */
+       at91_set_a_periph(AT91_PIO_PORTC, 8, 0);        /* D3 */
+       at91_set_a_periph(AT91_PIO_PORTC, 9, 0);        /* D4 */
+       at91_set_a_periph(AT91_PIO_PORTC, 10, 0);       /* D5 */
+       at91_set_a_periph(AT91_PIO_PORTC, 11, 0);       /* D6 */
+       at91_set_a_periph(AT91_PIO_PORTC, 12, 0);       /* D7 */
+       at91_set_a_periph(AT91_PIO_PORTC, 13, 0);       /* RE */
+       at91_set_a_periph(AT91_PIO_PORTC, 14, 0);       /* WE */
+       at91_set_a_periph(AT91_PIO_PORTC, 15, 1);       /* NCS */
+       at91_set_a_periph(AT91_PIO_PORTC, 16, 1);       /* RDY */
+       at91_set_a_periph(AT91_PIO_PORTC, 17, 1);       /* ALE */
+       at91_set_a_periph(AT91_PIO_PORTC, 18, 1);       /* CLE */
+}
+#endif
+
+#ifdef CONFIG_CMD_USB
+static void sama5d4ek_usb_hw_init(void)
+{
+       at91_set_pio_output(AT91_PIO_PORTE, 11, 0);
+       at91_set_pio_output(AT91_PIO_PORTE, 12, 0);
+       at91_set_pio_output(AT91_PIO_PORTE, 10, 0);
+}
+#endif
+
+#ifdef CONFIG_LCD
+vidinfo_t panel_info = {
+       .vl_col = 800,
+       .vl_row = 480,
+       .vl_clk = 33260000,
+       .vl_bpix = LCD_BPP,
+       .vl_tft = 1,
+       .vl_hsync_len = 5,
+       .vl_left_margin = 128,
+       .vl_right_margin = 0,
+       .vl_vsync_len = 5,
+       .vl_upper_margin = 23,
+       .vl_lower_margin = 22,
+       .mmio = ATMEL_BASE_LCDC,
+};
+
+/* No power up/down pin for the LCD pannel */
+void lcd_enable(void)  { /* Empty! */ }
+void lcd_disable(void) { /* Empty! */ }
+
+unsigned int has_lcdc(void)
+{
+       return 1;
+}
+
+static void sama5d4ek_lcd_hw_init(void)
+{
+       at91_set_a_periph(AT91_PIO_PORTA, 24, 0);       /* LCDPWM */
+       at91_set_a_periph(AT91_PIO_PORTA, 25, 0);       /* LCDDISP */
+       at91_set_a_periph(AT91_PIO_PORTA, 26, 0);       /* LCDVSYNC */
+       at91_set_a_periph(AT91_PIO_PORTA, 27, 0);       /* LCDHSYNC */
+       at91_set_a_periph(AT91_PIO_PORTA, 28, 0);       /* LCDDOTCK */
+       at91_set_a_periph(AT91_PIO_PORTA, 29, 0);       /* LCDDEN */
+
+       at91_set_a_periph(AT91_PIO_PORTA,  2, 0);       /* LCDD2 */
+       at91_set_a_periph(AT91_PIO_PORTA,  3, 0);       /* LCDD3 */
+       at91_set_a_periph(AT91_PIO_PORTA,  4, 0);       /* LCDD4 */
+       at91_set_a_periph(AT91_PIO_PORTA,  5, 0);       /* LCDD5 */
+       at91_set_a_periph(AT91_PIO_PORTA,  6, 0);       /* LCDD6 */
+       at91_set_a_periph(AT91_PIO_PORTA,  7, 0);       /* LCDD7 */
+
+       at91_set_a_periph(AT91_PIO_PORTA, 10, 0);       /* LCDD10 */
+       at91_set_a_periph(AT91_PIO_PORTA, 11, 0);       /* LCDD11 */
+       at91_set_a_periph(AT91_PIO_PORTA, 12, 0);       /* LCDD12 */
+       at91_set_a_periph(AT91_PIO_PORTA, 13, 0);       /* LCDD13 */
+       at91_set_a_periph(AT91_PIO_PORTA, 14, 0);       /* LCDD14 */
+       at91_set_a_periph(AT91_PIO_PORTA, 15, 0);       /* LCDD15 */
+
+       at91_set_a_periph(AT91_PIO_PORTA, 18, 0);       /* LCDD18 */
+       at91_set_a_periph(AT91_PIO_PORTA, 19, 0);       /* LCDD19 */
+       at91_set_a_periph(AT91_PIO_PORTA, 20, 0);       /* LCDD20 */
+       at91_set_a_periph(AT91_PIO_PORTA, 21, 0);       /* LCDD21 */
+       at91_set_a_periph(AT91_PIO_PORTA, 22, 0);       /* LCDD22 */
+       at91_set_a_periph(AT91_PIO_PORTA, 23, 0);       /* LCDD23 */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_LCDC);
+}
+
+#ifdef CONFIG_LCD_INFO
+void lcd_show_board_info(void)
+{
+       ulong dram_size, nand_size;
+       int i;
+       char temp[32];
+
+       lcd_printf("2014 ATMEL Corp\n");
+       lcd_printf("at91@atmel.com\n");
+       lcd_printf("%s CPU at %s MHz\n", get_cpu_name(),
+                  strmhz(temp, get_cpu_clk_rate()));
+
+       dram_size = 0;
+       for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
+               dram_size += gd->bd->bi_dram[i].size;
+
+       nand_size = 0;
+#ifdef CONFIG_NAND_ATMEL
+       for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
+               nand_size += nand_info[i].size;
+#endif
+       lcd_printf("%ld MB SDRAM, %ld MB NAND\n",
+                  dram_size >> 20, nand_size >> 20);
+}
+#endif /* CONFIG_LCD_INFO */
+
+#endif /* CONFIG_LCD */
+
+#ifdef CONFIG_GENERIC_ATMEL_MCI
+void sama5d4ek_mci1_hw_init(void)
+{
+       at91_set_c_periph(AT91_PIO_PORTE, 19, 1);       /* MCI1 CDA */
+       at91_set_c_periph(AT91_PIO_PORTE, 20, 1);       /* MCI1 DA0 */
+       at91_set_c_periph(AT91_PIO_PORTE, 21, 1);       /* MCI1 DA1 */
+       at91_set_c_periph(AT91_PIO_PORTE, 22, 1);       /* MCI1 DA2 */
+       at91_set_c_periph(AT91_PIO_PORTE, 23, 1);       /* MCI1 DA3 */
+       at91_set_c_periph(AT91_PIO_PORTE, 18, 0);       /* MCI1 CLK */
+
+       /*
+        * As the mci io internal pull down is too strong, so if the io needs
+        * external pull up, the pull up resistor will be very small, if so
+        * the power consumption will increase, so disable the interanl pull
+        * down to save the power.
+        */
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 18, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 19, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 20, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 21, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 22, 0);
+       at91_set_pio_pulldown(AT91_PIO_PORTE, 23, 0);
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_MCI1);
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       /* Enable power for MCI1 interface */
+       at91_set_pio_output(AT91_PIO_PORTE, 15, 0);
+
+       return atmel_mci_init((void *)ATMEL_BASE_MCI1);
+}
+#endif /* CONFIG_GENERIC_ATMEL_MCI */
+
+#ifdef CONFIG_MACB
+void sama5d4ek_macb0_hw_init(void)
+{
+       at91_set_a_periph(AT91_PIO_PORTB, 0, 0);        /* ETXCK_EREFCK */
+       at91_set_a_periph(AT91_PIO_PORTB, 6, 0);        /* ERXDV */
+       at91_set_a_periph(AT91_PIO_PORTB, 8, 0);        /* ERX0 */
+       at91_set_a_periph(AT91_PIO_PORTB, 9, 0);        /* ERX1 */
+       at91_set_a_periph(AT91_PIO_PORTB, 7, 0);        /* ERXER */
+       at91_set_a_periph(AT91_PIO_PORTB, 2, 0);        /* ETXEN */
+       at91_set_a_periph(AT91_PIO_PORTB, 12, 0);       /* ETX0 */
+       at91_set_a_periph(AT91_PIO_PORTB, 13, 0);       /* ETX1 */
+       at91_set_a_periph(AT91_PIO_PORTB, 17, 0);       /* EMDIO */
+       at91_set_a_periph(AT91_PIO_PORTB, 16, 0);       /* EMDC */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_GMAC0);
+}
+#endif
+
+static void sama5d4ek_serial3_hw_init(void)
+{
+       at91_set_b_periph(AT91_PIO_PORTE, 17, 1);       /* TXD3 */
+       at91_set_b_periph(AT91_PIO_PORTE, 16, 0);       /* RXD3 */
+
+       /* Enable clock */
+       at91_periph_clk_enable(ATMEL_ID_USART3);
+}
+
+int board_early_init_f(void)
+{
+       at91_periph_clk_enable(ATMEL_ID_PIOA);
+       at91_periph_clk_enable(ATMEL_ID_PIOB);
+       at91_periph_clk_enable(ATMEL_ID_PIOC);
+       at91_periph_clk_enable(ATMEL_ID_PIOD);
+       at91_periph_clk_enable(ATMEL_ID_PIOE);
+
+       sama5d4ek_serial3_hw_init();
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* adress of boot parameters */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+#ifdef CONFIG_ATMEL_SPI
+       sama5d4ek_spi0_hw_init();
+#endif
+#ifdef CONFIG_NAND_ATMEL
+       sama5d4ek_nand_hw_init();
+#endif
+#ifdef CONFIG_GENERIC_ATMEL_MCI
+       sama5d4ek_mci1_hw_init();
+#endif
+#ifdef CONFIG_MACB
+       sama5d4ek_macb0_hw_init();
+#endif
+#ifdef CONFIG_LCD
+       sama5d4ek_lcd_hw_init();
+#endif
+#ifdef CONFIG_CMD_USB
+       sama5d4ek_usb_hw_init();
+#endif
+
+       return 0;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
+                                   CONFIG_SYS_SDRAM_SIZE);
+       return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       int rc = 0;
+
+#ifdef CONFIG_MACB
+       rc = macb_eth_initialize(0, (void *)ATMEL_BASE_GMAC0, 0x00);
+#endif
+
+       return rc;
+}
index 5870b95afbf861c07475afc5faae6f73faac7589..86a0844273d64a28bb361709ed1107871c9d6c99 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/gp_padctrl.h>
 #include <asm/arch/gpio.h>
@@ -51,8 +52,15 @@ void gpio_early_init(void)
 
 void pmu_write(uchar reg, uchar data)
 {
-       i2c_set_bus_num(4);     /* PMU is on bus 4 */
-       i2c_write(PMU_I2C_ADDRESS, reg, 1, &data, 1);
+       struct udevice *dev;
+       int ret;
+
+       ret = i2c_get_chip_for_busnum(4, PMU_I2C_ADDRESS, &dev);
+       if (ret) {
+               debug("%s: Cannot find PMIC I2C chip\n", __func__);
+               return;
+       }
+       i2c_write(dev, reg, &data, 1);
 }
 
 /*
index acf95cb372ac2a48c574bce6005c3bce4575f4c4..93f3d651764b9a4c0aaa00fd7e815062155eb976 100644 (file)
@@ -104,10 +104,25 @@ int board_spi_cs_gpio(unsigned bus, unsigned cs)
        return (bus == 2 && cs == 0) ? (IMX_GPIO_NR(1, 3)) : -1;
 }
 
+static iomux_v3_cfg_t const feature_pads[] = {
+       /* SD card detect */
+       MX6_PAD_GPIO_4__GPIO1_IO04 | MUX_PAD_CTRL(PAD_CTL_PUS_100K_DOWN),
+
+       /* eMMC soldered? */
+       MX6_PAD_GPIO_19__GPIO4_IO05 | MUX_PAD_CTRL(PAD_CTL_PUS_100K_UP),
+};
+
+static void setup_iomux_features(void)
+{
+       imx_iomux_v3_setup_multiple_pads(feature_pads,
+               ARRAY_SIZE(feature_pads));
+}
+
 int board_early_init_f(void)
 {
        setup_iomux_uart();
        setup_iomux_spi();
+       setup_iomux_features();
 
        return 0;
 }
@@ -126,23 +141,70 @@ static iomux_v3_cfg_t const usdhc3_pads[] = {
        MX6_PAD_SD3_RST__SD3_RESET | MUX_PAD_CTRL(USDHC_PAD_CTRL),
 };
 
+iomux_v3_cfg_t const usdhc4_pads[] = {
+       MX6_PAD_SD4_CLK__SD4_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_CMD__SD4_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT0__SD4_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT1__SD4_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT2__SD4_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT3__SD4_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
 int board_mmc_getcd(struct mmc *mmc)
 {
-       return 1;
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+       int ret;
+
+       if (cfg->esdhc_base == USDHC3_BASE_ADDR) {
+               gpio_direction_input(IMX_GPIO_NR(4, 5));
+               ret = gpio_get_value(IMX_GPIO_NR(4, 5));
+       } else {
+               gpio_direction_input(IMX_GPIO_NR(1, 5));
+               ret = !gpio_get_value(IMX_GPIO_NR(1, 5));
+       }
+
+       return ret;
 }
 
-struct fsl_esdhc_cfg usdhc_cfg[] = {
+struct fsl_esdhc_cfg usdhc_cfg[2] = {
        {USDHC3_BASE_ADDR},
+       {USDHC4_BASE_ADDR},
 };
 
 int board_mmc_init(bd_t *bis)
 {
+       int ret;
+       u32 index = 0;
+
        usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
-       usdhc_cfg[0].max_bus_width = 8;
+       usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
 
-       imx_iomux_v3_setup_multiple_pads(usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+       usdhc_cfg[0].max_bus_width = 8;
+       usdhc_cfg[1].max_bus_width = 4;
+
+       for (index = 0; index < CONFIG_SYS_FSL_USDHC_NUM; ++index) {
+               switch (index) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                               "(%d) then supported by the board (%d)\n",
+                               index + 1, CONFIG_SYS_FSL_USDHC_NUM);
+                       return -EINVAL;
+               }
+
+               ret = fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               if (ret)
+                       return ret;
+       }
 
-       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+       return 0;
 }
 
 #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
index ff1e9972cbdbfd89ccea533b5818b4d0db5d7b8e..1f8f4d6988f540c62ae3db875e81c3ee460a5cc4 100644 (file)
@@ -1,5 +1,5 @@
 SNAPPER9260 BOARD
-M:     Ryan Mallon <ryan@bluewatersys.com>
+M:     Simon Glass <sjg@chromium.org>
 S:     Maintained
 F:     board/bluewater/snapper9260/
 F:     include/configs/snapper9260.h
index bfde1291a59c8138740a76ae2c6b21e949b6a23e..95633b0d2e87074fd07d6f3ddb09852ac93622c5 100644 (file)
@@ -9,12 +9,15 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <asm/io.h>
+#include <asm/gpio.h>
 #include <asm/arch/at91sam9260_matrix.h>
 #include <asm/arch/at91sam9_smc.h>
 #include <asm/arch/at91_common.h>
 #include <asm/arch/at91_pmc.h>
 #include <asm/arch/gpio.h>
+#include <asm/arch/atmel_serial.h>
 #include <net.h>
 #include <netdev.h>
 #include <i2c.h>
@@ -95,10 +98,12 @@ static void nand_hw_init(void)
               &smc->cs[3].mode);
 
        /* Configure RDY/BSY */
-       at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+       gpio_request(CONFIG_SYS_NAND_READY_PIN, "nand_rdy");
+       gpio_direction_input(CONFIG_SYS_NAND_READY_PIN);
 
        /* Enable NandFlash */
-       at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+       gpio_request(CONFIG_SYS_NAND_ENABLE_PIN, "nand_ce");
+       gpio_direction_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
 }
 
 int board_init(void)
@@ -140,3 +145,12 @@ int dram_init(void)
 void reset_phy(void)
 {
 }
+
+static struct atmel_serial_platdata at91sam9260_serial_plat = {
+       .base_addr = ATMEL_BASE_DBGU,
+};
+
+U_BOOT_DEVICE(at91sam9260_serial) = {
+       .name   = "serial_atmel",
+       .platdata = &at91sam9260_serial_plat,
+};
index fcd4d82c4e7ed8c19a50d11e1468935b42d7d867..e8ea256be0c5c8d94198a15d4ed5e0da1cfead06 100644 (file)
@@ -302,7 +302,7 @@ int board_mmc_getcd(struct mmc *mmc)
 
 int board_mmc_init(bd_t *bis)
 {
-       s32 status = 0;
+       int ret;
        u32 index = 0;
 
        usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
@@ -325,13 +325,15 @@ int board_mmc_init(bd_t *bis)
                       printf("Warning: you configured more USDHC controllers"
                               "(%d) then supported by the board (%d)\n",
                               index + 1, CONFIG_SYS_FSL_USDHC_NUM);
-                      return status;
+                      return -EINVAL;
                }
 
-               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 #endif
 
diff --git a/board/broadcom/bcm11130/MAINTAINERS b/board/broadcom/bcm11130/MAINTAINERS
new file mode 100644 (file)
index 0000000..b22e86f
--- /dev/null
@@ -0,0 +1,6 @@
+BCM11130 BOARD
+M:     Steve Rae <srae@broadcom.com>
+S:     Maintained
+F:     board/broadcom/bcm28155_ap/
+F:     include/configs/bcm_ep_board.h
+F:     configs/bcm11130_defconfig
diff --git a/board/broadcom/bcm11130_nand/MAINTAINERS b/board/broadcom/bcm11130_nand/MAINTAINERS
new file mode 100644 (file)
index 0000000..881db5b
--- /dev/null
@@ -0,0 +1,6 @@
+BCM11130_NAND BOARD
+M:     Steve Rae <srae@broadcom.com>
+S:     Maintained
+F:     board/broadcom/bcm28155_ap/
+F:     include/configs/bcm_ep_board.h
+F:     configs/bcm11130_nand_defconfig
diff --git a/board/broadcom/bcm911360_entphn-ns/MAINTAINERS b/board/broadcom/bcm911360_entphn-ns/MAINTAINERS
new file mode 100644 (file)
index 0000000..b5f0207
--- /dev/null
@@ -0,0 +1,6 @@
+BCM911360_ENTPHN-NS BOARD
+M:     Steve Rae <srae@broadcom.com>
+S:     Maintained
+F:     board/broadcom/bcmcygnus/
+F:     include/configs/bcm_ep_board.h
+F:     configs/bcm911360_entphn-ns_defconfig
diff --git a/board/broadcom/bcm911360_entphn/MAINTAINERS b/board/broadcom/bcm911360_entphn/MAINTAINERS
new file mode 100644 (file)
index 0000000..fb7ee2b
--- /dev/null
@@ -0,0 +1,6 @@
+BCM911360_ENTPHN BOARD
+M:     Steve Rae <srae@broadcom.com>
+S:     Maintained
+F:     board/broadcom/bcmcygnus/
+F:     include/configs/bcm_ep_board.h
+F:     configs/bcm911360_entphn_defconfig
diff --git a/board/broadcom/bcm911360k/MAINTAINERS b/board/broadcom/bcm911360k/MAINTAINERS
new file mode 100644 (file)
index 0000000..754a15f
--- /dev/null
@@ -0,0 +1,6 @@
+BCM911360K BOARD
+M:     Steve Rae <srae@broadcom.com>
+S:     Maintained
+F:     board/broadcom/bcmcygnus/
+F:     include/configs/bcm_ep_board.h
+F:     configs/bcm911360k_defconfig
diff --git a/board/broadcom/bcm958300k-ns/MAINTAINERS b/board/broadcom/bcm958300k-ns/MAINTAINERS
new file mode 100644 (file)
index 0000000..763401a
--- /dev/null
@@ -0,0 +1,6 @@
+BCM958300K-NS BOARD
+M:     Steve Rae <srae@broadcom.com>
+S:     Maintained
+F:     board/broadcom/bcmcygnus/
+F:     include/configs/bcm_ep_board.h
+F:     configs/bcm958300k-ns_defconfig
index f75ee6e73c0fae484d65cffc9256a56866a85ebe..8afc728a25a8dc72304f7c91bde742dfae73f8d1 100644 (file)
@@ -1,6 +1,6 @@
-Broadcom: Cygnus
+BCM958300K BOARD
 M:     Steve Rae <srae@broadcom.com>
 S:     Maintained
-F:     board/broadcom/bcm958300k/
+F:     board/broadcom/bcmcygnus/
 F:     include/configs/bcm_ep_board.h
 F:     configs/bcm958300k_defconfig
diff --git a/board/broadcom/bcm958305k/MAINTAINERS b/board/broadcom/bcm958305k/MAINTAINERS
new file mode 100644 (file)
index 0000000..179fd4e
--- /dev/null
@@ -0,0 +1,6 @@
+BCM958305K BOARD
+M:     Steve Rae <srae@broadcom.com>
+S:     Maintained
+F:     board/broadcom/bcmcygnus/
+F:     include/configs/bcm_ep_board.h
+F:     configs/bcm958305k_defconfig
index c34272f70db4b14f8074782cfff955972074ae3b..d08aded83f2df279b7ab951b2135b22aabd80aab 100644 (file)
@@ -1,6 +1,6 @@
-Broadcom: Northstar Plus
+BCM958622HR BOARD
 M:     Steve Rae <srae@broadcom.com>
 S:     Maintained
-F:     board/broadcom/bcm958622hr/
+F:     board/broadcom/bcmnsp/
 F:     include/configs/bcm_ep_board.h
 F:     configs/bcm958622hr_defconfig
index e48cd3f76735cc7456a9c4da672cafe2bb279856..6a70a2e3056007a38958e0df03d63e75a6c9879b 100644 (file)
@@ -53,3 +53,17 @@ int board_early_init_f(void)
 
        return status;
 }
+
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
+void smp_set_core_boot_addr(unsigned long addr, int corenr)
+{
+}
+
+void smp_kick_all_cpus(void)
+{
+}
+
+void smp_waitloop(unsigned previous_address)
+{
+}
+#endif
similarity index 88%
rename from board/broadcom/bcm958300k/Kconfig
rename to board/broadcom/bcmcygnus/Kconfig
index 92892881afef5a34ebf74163a6b933e07add3554..faba4cf82b1f01e8e7c840e58dab80604add720c 100644 (file)
@@ -1,4 +1,4 @@
-if TARGET_BCM958300K
+if TARGET_BCMCYGNUS
 
 config SYS_BOARD
        default "bcm_ep"
similarity index 88%
rename from board/broadcom/bcm958622hr/Kconfig
rename to board/broadcom/bcmnsp/Kconfig
index 861c55909bf34fae0aebb0a0276bfbb6f8c15992..a975082355a43e477d7f3598337a8818da5edf9c 100644 (file)
@@ -1,4 +1,4 @@
-if TARGET_BCM958622HR
+if TARGET_BCMNSP
 
 config SYS_BOARD
        default "bcm_ep"
diff --git a/board/chromebook-x86/coreboot/Kconfig b/board/chromebook-x86/coreboot/Kconfig
deleted file mode 100644 (file)
index 83385c7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_COREBOOT
-
-config SYS_BOARD
-       default "coreboot"
-
-config SYS_VENDOR
-       default "chromebook-x86"
-
-config SYS_SOC
-       default "coreboot"
-
-config SYS_CONFIG_NAME
-       default "coreboot"
-
-endif
index 048aa6c2e914aa806d52d03e7c8b53d0922ab54b..5276907b45ca249ad46f71c13aea47ae5dd4c316 100644 (file)
@@ -359,9 +359,11 @@ int last_stage_init(void)
 
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
        ft_blob_update(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/cogent/Kconfig b/board/cogent/Kconfig
deleted file mode 100644 (file)
index 7f34a14..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-if TARGET_COGENT_MPC8260
-
-config SYS_BOARD
-       default "cogent"
-
-config SYS_CONFIG_NAME
-       default "cogent_mpc8260"
-
-endif
-
-if TARGET_COGENT_MPC8XX
-
-config SYS_BOARD
-       default "cogent"
-
-config SYS_CONFIG_NAME
-       default "cogent_mpc8xx"
-
-endif
diff --git a/board/cogent/MAINTAINERS b/board/cogent/MAINTAINERS
deleted file mode 100644 (file)
index 7126015..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-COGENT BOARD
-M:     Murray Jensen <Murray.Jensen@csiro.au>
-S:     Maintained
-F:     board/cogent/
-F:     include/configs/cogent_mpc8260.h
-F:     configs/cogent_mpc8260_defconfig
-F:     include/configs/cogent_mpc8xx.h
-F:     configs/cogent_mpc8xx_defconfig
diff --git a/board/cogent/Makefile b/board/cogent/Makefile
deleted file mode 100644 (file)
index 30fe98d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := mb.o flash.o dipsw.o lcd.o serial.o # pci.o rtc.o par.o kbm.o
diff --git a/board/cogent/README b/board/cogent/README
deleted file mode 100644 (file)
index 4343f73..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-Cogent Modular Architecture configuration
------------------------------------------
-
-As the name suggests, the Cogent platform is a modular system where
-you have a motherboard into which plugs a cpu module and one or more
-i/o modules. This provides very nice flexibility, but makes the
-configuration task somewhat harder.
-
-The possible Cogent motherboards are:
-
-Code           Config Variable         Description
-----           ---------------         -----------
-
-CMA101         CONFIG_CMA101           32MB ram, 2 ser, 1 par, rtc, dipsw,
-                                       2x16 lcd, eth(?)
-CMA102         CONFIG_CMA102           32MB ram, 2 ser, 1 par, rtc, dipsw,
-                                       2x16 lcd
-CMA111         CONFIG_CMA111           32MB ram, 1MB flash, 4 ser, 1 par,
-                                       rtc, ps/2 kbd/mse, 2x16 lcd, 2xPCI,
-                                       10/100TP eth
-CMA120         CONFIG_CMA120           32MB ram, 1MB flash, 4 ser, 1 par,
-                                       rtc, ps/2 kbd/mse, 2x16 lcd, 2xPCI,
-                                       10/100TP eth, 2xPCMCIA, video/lcd-panel
-CMA150         CONFIG_CMA150           8MB ram, 1MB flash, 2 ser, 1 par, rtc,
-                                       ps/2 kbd/mse, 2x16 lcd
-
-The possible Cogent PowerPC CPU modules are:
-
-Code           Config Variable         Description
-----           ---------------         -----------
-
-CMA278-603EV   CONFIG_CMA278_603EV     PPC603ev CPU, 66MHz clock, 512K EPROM,
-                                       JTAG/COP
-CMA278-603ER   CONFIG_CMA278_603ER     PPC603er CPU, 66MHz clock, 512K EPROM,
-                                       JTAG/COP
-CMA278-740     CONFIG_CMA278_740       PPC740 CPU, 66MHz clock, 512K EPROM,
-                                       JTAG/COP
-CMA280-509     CONFIG_CMA280_509       MPC505/509 CPU, 50MHz clock,
-                                       512K EPROM, BDM
-CMA282         CONFIG_CMA282           MPC8260 CPU, 66MHz clock, 512K EPROM,
-                                       JTAG, 16M RAM, 1 x ser (SMC2),
-                                       1 x 10baseT PHY (SCC4), 1 x 10/100 TP
-                                       PHY (FCC1), 2 x 48pin DIN (FCC2 + TDM1)
-CMA285         CONFIG_CMA285           MPC801 CPU, 33MHz clock, 512K EPROM,
-                                       BDM
-CMA286-21      CONFIG_CMA286_21        MPC821 CPU, 66MHz clock, 512K EPROM,
-                                       BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
-                                       1 x 10baseT PHY (SCC2)
-CMA286-60-OLD  CONFIG_CMA286_60_OLD    MPC860 CPU, 33MHz clock, 128K EPROM,
-                                       BDM
-CMA286-60      CONFIG_CMA286_60        MPC860 CPU, 66MHz clock, 512K EPROM,
-                                       BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
-                                       1 x 10baseT PHY (SCC2)
-CMA286-60P     CONFIG_CMA286_60P       MPC860P CPU, 66MHz clock, 512K EPROM,
-                                       BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
-                                       1 x 10baseT PHY (SCC2)
-CMA287-23      CONFIG_CMA287_23        MPC823 CPU, 33MHz clock, 512K EPROM,
-                                       BDM
-CMA287-50      CONFIG_CMA287_50        MPC850 CPU, 33MHz clock, 512K EPROM,
-                                       BDM
-
-(there are a lot of other cpu modules with ARM, MIPS and M-CORE CPUs,
-but we'll worry about those later).
-
-The possible Cogent CMA I/O Modules are:
-
-Code           Config Variable         Description
-----           ---------------         -----------
-
-CMA302         CONFIG_CMA302           up to 16M flash, ps/2 keyboard/mouse
-CMA352         CONFIG_CMA352           CMAbus <=> PCI
-
-Currently supported:
-
-       Motherboards:   CMA102
-       CPU Modules:    CMA286-60-OLD
-       I/O Modules:    CMA302 I/O module
-
-To configure, perform the usual U-Boot configuration task of editing
-"include/config_cogent_mpc8xx.h" and reviewing all the options and
-settings in there. In particular, check the chip select values
-installed into the memory controller's various option and base
-registers - these are set by the defines CONFIG_SYS_CMA_CSn_{BASE,SIZE} and
-CONFIG_SYS_{B,O}Rn_PRELIM. Also be careful of the clock settings installed
-into the SCCR - via the define CONFIG_SYS_SCCR. Finally, decide whether you
-want the serial console on motherboard serial port A or on one of the
-8xx SMC ports, and set CONFIG_8xx_CONS_{SMC1,SMC2,NONE} accordingly
-(NONE means use Cogent motherboard serial port A).
-
-Then edit the file "cogent/config.mk". Firstly, set CONFIG_SYS_TEXT_BASE to be
-the base address of the EPROM for the CPU module. This should be the
-same as the value selected for CONFIG_SYS_MONITOR_BASE in
-"include/config_cogent_*.h" (in fact, I have made this automatic via
-the -CONFIG_SYS_TEXT_BASE=... option in CPPFLAGS).
-
-Finally, set the values of the make variables $(CMA_MB) and $(CMA_IOMS).
-
-$(CMA_MB) is the name of the directory that contains support for your
-motherboard. At this stage, only "cma10x" exists, which supports the
-CMA101 and CMA102 motherboards - but only selected devices, namely
-serial, lcd and dipsw.
-
-$(CMA_IOMS) is a list of zero or more directories that contain
-support for the i/o modules you have installed. At this stage, only
-"cma302" exists, which supports the CMA302 flash i/o module - but
-only the flash part, not the ps/2 keyboard and mouse interfaces.
-
-There should be a make variable for each of the above directories,
-which is the directory name with "_O" appended. This make variable is
-a list of object files to compile from that directory and include in
-the library.
-
-       e.g. cma10x_O = serial.o ...
-
-That's it. Good Luck.
-
-Murray.Jensen@cmst.csiro.au
-August 31, 2000.
diff --git a/board/cogent/README.cma286 b/board/cogent/README.cma286
deleted file mode 100644 (file)
index 0345fea..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-CPU module revisions
---------------------
-
-My cpu module has the model number "CMA286-60-990526-01". My motherboard
-has the model number "CMA102-32M-990526-01". These are both fairly old,
-and may not reflect current design. In particular, I can see from the
-Cogent web site that the CMA286 has been significantly redesigned - it
-now has on board RAM (4M), ethernet 10baseT PHY (on SCC2), 2 serial ports
-(SMC1 and SMC2), and 48pin DIN for the FEC (if present i.e. MPC860T), and
-also the EPROM is 512K.
-
-My CMA286-60 has none of this, and only 128K EPROM. In addition, the CPU
-clock is listed as 66MHz, whereas mine is 33.333MHz.
-
-Clocks
-------
-
-Quote from my "CMA286 MPC860/821 User's Manual":
-
-"When setting up the Periodic Interrupt Timer (PIT), be aware that the
-CMA286 places the MPC860/821 in PLL X1 Mode. This means that we feed
-a 25MHz clock directly into the MPC860/821. This mode sets the divisor
-for the PIT to be 512. In addition, the Time Base Register (TMB)
-divisor is set to 16."
-
-I interpreted this information to mean that EXTCLK is 25MHz and that at
-power on reset, MODCK1=1 and MODCK2=0, which selects EXTCLK as the
-source for OSCCLK and PITRTCLK, sets RTDIV to 512 and sets MF (the
-multiplication factor) to 1 (I assume this is what they mean by X1
-mode above). MF=1 means the cpus internal clock runs at the same
-rate as EXTCLK i.e. 25MHz.
-
-Furthermore, since SCCR[TBS] (the Time Base Source selector bit in the
-System Clock and Reset Control register) is set in the cpu initialisation
-code, the TMBCLK source is forced to be GCLK2 and the TMBCLK prescale is
-forced to be 16. This results in TMBCLK=1562500.
-
-One problem - since PITRTCLK source is EXTCLK (25Mhz) and RTDIV is 512,
-PITRTCLK will be 48828.125 (huh?). Another quote from the MPC860 Users
-Manual:
-
-"When used by the real-time clock (RTC), the PITRTCLK source is first
-divided as determined by RTDIV, and then divided in the RTC circuits by
-either 8192 or 9600. Therefore, in order for the RTC to count in
-seconds, the clock source must satisfy:
-
-       (EXTCLK or OSCM) / [(4 or 512) x (8192 or 9600)] = 1
-
-The RTC will operate with other frequencies, but it will not count in
-units of seconds."
-
-Therefore, the internal RTC of the MPC860 is not going to count in
-seconds, so we must use the motherboard RTC (if we need a RTC).
-
-I presume this means that they do not provide a fixed oscillator for
-OSCM. The code in get_gclk_freq() assumes PITRTCLK source is OSCM,
-RTDIV is 4, and that OSCM/4 is 8192 (i.e. a ~32KHz oscillator). Since
-the CMA286-60 doesn't have this (at least mine doesn't) we can't use
-the code in get_gclk_freq().
-
-Finally, it appears that the internal clock in my CMA286-60 is actually
-33.333MHz. Which makes TMBCLK=2083312.5 (another huh?) and
-PITRTCLK=65103.515625 (bloody hell!).
-
-If anyone finds anything wrong with the stuff above, I would appreciate
-an email about it.
-
-Murray Jensen <Murray.Jensen@csiro.au>
-21-Aug-00
diff --git a/board/cogent/dipsw.c b/board/cogent/dipsw.c
deleted file mode 100644 (file)
index ecfbc25..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <common.h>
-#include "dipsw.h"
-
-unsigned char
-dipsw_raw(void)
-{
-    return cma_mb_reg_read(&((cma_mb_dipsw *)CMA_MB_DIPSW_BASE)->dip_val);
-}
-
-unsigned char
-dipsw_cooked(void)
-{
-    unsigned char val1, val2, mask1, mask2;
-
-    val1 = dipsw_raw();
-
-    /*
-     * we want to mirror the bits because the low bit is switch 1 and high
-     * bit is switch 8 and also invert them because 1=off and 0=on, according
-     * to manual.
-     *
-     * this makes the value more intuitive i.e.
-     * - left most, or high, or top, bit is left most switch (1);
-     * - right most, or low, or bottom, bit is right most switch (8)
-     * - a set bit means "on" and a clear bit means "off"
-     */
-
-    val2 = 0;
-    for (mask1 = 1 << 7, mask2 = 1; mask1 > 0; mask1 >>= 1, mask2 <<= 1)
-       if ((val1 & mask1) == 0)
-           val2 |= mask2;
-
-    return (val2);
-}
-
-void
-dipsw_init(void)
-{
-    unsigned char val, mask;
-
-    val = dipsw_cooked();
-
-    printf("|");
-    for (mask = 1 << 7; mask > 0; mask >>= 1)
-       if (val & mask)
-           printf("on |");
-       else
-           printf("off|");
-    printf("\n");
-}
diff --git a/board/cogent/dipsw.h b/board/cogent/dipsw.h
deleted file mode 100644 (file)
index 4f52fd4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-extern unsigned char dipsw_raw(void);
-extern unsigned char dipsw_cooked(void);
-extern void dipsw_init(void);
diff --git a/board/cogent/flash.c b/board/cogent/flash.c
deleted file mode 100644 (file)
index 1da8f10..0000000
+++ /dev/null
@@ -1,633 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include "flash.h"
-#include <linux/compiler.h>
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-
-#if defined(CONFIG_CMA302)
-
-/*
- * probe for the existence of flash at address "addr"
- * 0 = yes, 1 = bad Manufacturer's Id, 2 = bad Device Id
- */
-static int
-c302f_probe_word(c302f_addr_t addr)
-{
-       /* reset the flash */
-       *addr = C302F_BNK_CMD_RST;
-
-       /* check the manufacturer id */
-       *addr = C302F_BNK_CMD_RD_ID;
-       if (*C302F_BNK_ADDR_MAN(addr) != C302F_BNK_RD_ID_MAN)
-               return 1;
-
-       /* check the device id */
-       *addr = C302F_BNK_CMD_RD_ID;
-       if (*C302F_BNK_ADDR_DEV(addr) != C302F_BNK_RD_ID_DEV)
-               return 2;
-
-#ifdef FLASH_DEBUG
-       {
-               int i;
-
-               printf("\nMaster Lock Config = 0x%08lx\n",
-                       *C302F_BNK_ADDR_CFGM(addr));
-               for (i = 0; i < C302F_BNK_NBLOCKS; i++)
-                       printf("Block %2d Lock Config = 0x%08lx\n",
-                               i, *C302F_BNK_ADDR_CFG(i, addr));
-       }
-#endif
-
-       /* reset the flash again */
-       *addr = C302F_BNK_CMD_RST;
-
-       return 0;
-}
-
-/*
- * probe for Cogent CMA302 flash module at address "base" and store
- * info for any found into flash_info entry "fip". Must find at least
- * one bank.
- */
-static void
-c302f_probe(flash_info_t *fip, c302f_addr_t base)
-{
-       c302f_addr_t addr, eaddr;
-       int nbanks;
-
-       fip->size = 0L;
-       fip->sector_count = 0;
-
-       addr = base;
-       eaddr = C302F_BNK_ADDR_BASE(addr, C302F_MAX_BANKS);
-       nbanks = 0;
-
-       while (addr < eaddr) {
-               c302f_addr_t addrw, eaddrw, addrb;
-               int i, osc, nsc;
-
-               addrw = addr;
-               eaddrw = C302F_BNK_ADDR_NEXT_WORD(addrw);
-
-               while (addrw < eaddrw)
-                       if (c302f_probe_word(addrw++) != 0)
-                               goto out;
-
-               /* bank exists - append info for this bank to *fip */
-               fip->flash_id = FLASH_MAN_INTEL|FLASH_28F008S5;
-               fip->size += C302F_BNK_SIZE;
-               osc = fip->sector_count;
-               fip->sector_count += C302F_BNK_NBLOCKS;
-               if ((nsc = fip->sector_count) >= CONFIG_SYS_MAX_FLASH_SECT)
-                       panic("Too many sectors in flash at address 0x%08lx\n",
-                               (unsigned long)base);
-
-               addrb = addr;
-               for (i = osc; i < nsc; i++) {
-                       fip->start[i] = (ulong)addrb;
-                       fip->protect[i] = 0;
-                       addrb = C302F_BNK_ADDR_NEXT_BLK(addrb);
-               }
-
-               addr = C302F_BNK_ADDR_NEXT_BNK(addr);
-               nbanks++;
-       }
-
-out:
-       if (nbanks == 0)
-               panic("ERROR: no flash found at address 0x%08lx\n",
-                       (unsigned long)base);
-}
-
-static void
-c302f_reset(flash_info_t *info, int sect)
-{
-       c302f_addr_t addrw, eaddrw;
-
-       addrw = (c302f_addr_t)info->start[sect];
-       eaddrw = C302F_BNK_ADDR_NEXT_WORD(addrw);
-
-       while (addrw < eaddrw) {
-#ifdef FLASH_DEBUG
-               printf("  writing reset cmd to addr 0x%08lx\n",
-                       (unsigned long)addrw);
-#endif
-               *addrw = C302F_BNK_CMD_RST;
-               addrw++;
-       }
-}
-
-static void
-c302f_erase_init(flash_info_t *info, int sect)
-{
-       c302f_addr_t addrw, saddrw, eaddrw;
-       int flag;
-
-#ifdef FLASH_DEBUG
-       printf("0x%08lx C302F_BNK_CMD_PROG\n", C302F_BNK_CMD_PROG);
-       printf("0x%08lx C302F_BNK_CMD_ERASE1\n", C302F_BNK_CMD_ERASE1);
-       printf("0x%08lx C302F_BNK_CMD_ERASE2\n", C302F_BNK_CMD_ERASE2);
-       printf("0x%08lx C302F_BNK_CMD_CLR_STAT\n", C302F_BNK_CMD_CLR_STAT);
-       printf("0x%08lx C302F_BNK_CMD_RST\n", C302F_BNK_CMD_RST);
-       printf("0x%08lx C302F_BNK_STAT_RDY\n", C302F_BNK_STAT_RDY);
-       printf("0x%08lx C302F_BNK_STAT_ERR\n", C302F_BNK_STAT_ERR);
-#endif
-
-       saddrw = (c302f_addr_t)info->start[sect];
-       eaddrw = C302F_BNK_ADDR_NEXT_WORD(saddrw);
-
-#ifdef FLASH_DEBUG
-       printf("erasing sector %d, start addr = 0x%08lx "
-               "(bank next word addr = 0x%08lx)\n", sect,
-               (unsigned long)saddrw, (unsigned long)eaddrw);
-#endif
-
-       /* Disable intrs which might cause a timeout here */
-       flag = disable_interrupts();
-
-       for (addrw = saddrw; addrw < eaddrw; addrw++) {
-#ifdef FLASH_DEBUG
-               printf("  writing erase cmd to addr 0x%08lx\n",
-                       (unsigned long)addrw);
-#endif
-               *addrw = C302F_BNK_CMD_ERASE1;
-               *addrw = C302F_BNK_CMD_ERASE2;
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-}
-
-static int
-c302f_erase_poll(flash_info_t *info, int sect)
-{
-       c302f_addr_t addrw, saddrw, eaddrw;
-       int sectdone, haderr;
-
-       saddrw = (c302f_addr_t)info->start[sect];
-       eaddrw = C302F_BNK_ADDR_NEXT_WORD(saddrw);
-
-       sectdone = 1;
-       haderr = 0;
-
-       for (addrw = saddrw; addrw < eaddrw; addrw++) {
-               c302f_word_t stat = *addrw;
-
-#ifdef FLASH_DEBUG
-               printf("  checking status at addr "
-                       "0x%08lx [0x%08lx]\n",
-                       (unsigned long)addrw, stat);
-#endif
-               if ((stat & C302F_BNK_STAT_RDY) != C302F_BNK_STAT_RDY)
-                       sectdone = 0;
-               else if ((stat & C302F_BNK_STAT_ERR) != 0) {
-                       printf(" failed on sector %d "
-                               "(stat = 0x%08lx) at "
-                               "address 0x%08lx\n",
-                               sect, stat,
-                               (unsigned long)addrw);
-                       *addrw = C302F_BNK_CMD_CLR_STAT;
-                       haderr = 1;
-               }
-       }
-
-       if (haderr)
-               return (-1);
-       else
-               return (sectdone);
-}
-
-static int
-c302f_write_word(c302f_addr_t addr, c302f_word_t value)
-{
-       c302f_word_t stat;
-       ulong start;
-       int flag, retval;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       *addr = C302F_BNK_CMD_PROG;
-
-       *addr = value;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       retval = 0;
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       do {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       retval = 1;
-                       goto done;
-               }
-               stat = *addr;
-       } while ((stat & C302F_BNK_STAT_RDY) != C302F_BNK_STAT_RDY);
-
-       if ((stat & C302F_BNK_STAT_ERR) != 0) {
-               printf("flash program failed (stat = 0x%08lx) "
-                       "at address 0x%08lx\n", (ulong)stat, (ulong)addr);
-               *addr = C302F_BNK_CMD_CLR_STAT;
-               retval = 3;
-       }
-
-done:
-       /* reset to read mode */
-       *addr = C302F_BNK_CMD_RST;
-
-       return (retval);
-}
-
-#endif /* CONFIG_CMA302 */
-
-unsigned long
-flash_init(void)
-{
-       unsigned long total;
-       int i;
-       __maybe_unused flash_info_t *fip;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       fip = &flash_info[0];
-       total = 0L;
-
-#if defined(CONFIG_CMA302)
-       c302f_probe(fip, (c302f_addr_t)CONFIG_SYS_FLASH_BASE);
-       total += fip->size;
-       fip++;
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-       /* not yet ...
-       cmbf_probe(fip, (cmbf_addr_t)CMA_MB_FLASH_BASE);
-       total += fip->size;
-       fip++;
-       */
-#endif
-
-       /*
-        * protect monitor and environment sectors
-        */
-
-#if CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-       return total;
-}
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info(flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:   printf ("INTEL ");              break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F008S5:    printf ("28F008S5\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 4) == 0)
-                       printf ("\n   ");
-               printf (" %2d - %08lX%s", i,
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-int
-flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-       int prot, sect, haderr;
-       ulong start, now, last;
-       void (*erase_init)(flash_info_t *, int);
-       int (*erase_poll)(flash_info_t *, int);
-       void (*reset)(flash_info_t *, int);
-       int rcode = 0;
-
-#ifdef FLASH_DEBUG
-       printf("\nflash_erase: erase %d sectors (%d to %d incl.) from\n"
-               "  Bank # %d: ", s_last - s_first + 1, s_first, s_last,
-               (info - flash_info) + 1);
-       flash_print_info(info);
-#endif
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       switch (info->flash_id) {
-
-#if defined(CONFIG_CMA302)
-       case FLASH_MAN_INTEL|FLASH_28F008S5:
-               erase_init = c302f_erase_init;
-               erase_poll = c302f_erase_poll;
-               reset = c302f_reset;
-               break;
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-       case FLASH_MAN_INTEL|FLASH_28F800_B:
-       case FLASH_MAN_AMD|FLASH_AM29F800B:
-               /* not yet ...
-               erase_init = cmbf_erase_init;
-               erase_poll = cmbf_erase_poll;
-               reset = cmbf_reset;
-               break;
-               */
-#endif
-
-       default:
-               printf ("Flash type %08lx not supported - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf("- Warning: %d protected sector%s will not be erased!\n",
-                       prot, (prot > 1 ? "s" : ""));
-       }
-
-       start = get_timer (0);
-       last = 0;
-       haderr = 0;
-
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       ulong estart;
-                       int sectdone;
-
-                       (*erase_init)(info, sect);
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       estart = get_timer(start);
-
-                       do {
-                               now = get_timer(start);
-
-                               if (now - estart > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout (sect %d)\n", sect);
-                                       haderr = 1;
-                                       break;
-                               }
-
-#ifndef FLASH_DEBUG
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) { /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-#endif
-
-                               sectdone = (*erase_poll)(info, sect);
-
-                               if (sectdone < 0) {
-                                       haderr = 1;
-                                       break;
-                               }
-
-                       } while (!sectdone);
-
-                       if (haderr)
-                               break;
-               }
-       }
-
-       if (haderr > 0) {
-               printf (" failed\n");
-               rcode = 1;
-       }
-       else
-               printf (" done\n");
-
-       /* reset to read mode */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       (*reset)(info, sect);
-               }
-       }
-       return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - write error
- */
-
-int
-write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-       ulong start, now, last;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       start = get_timer (0);
-       last = 0;
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-
-               /* show that we're waiting */
-               now = get_timer(start);
-               if ((now - last) > 1000) {      /* every second */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - write error
- */
-static int
-write_word(flash_info_t *info, ulong dest, ulong data)
-{
-       int retval;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*(ulong *)dest & data) != data) {
-               return (2);
-       }
-
-       switch (info->flash_id) {
-
-#if defined(CONFIG_CMA302)
-       case FLASH_MAN_INTEL|FLASH_28F008S5:
-               retval = c302f_write_word((c302f_addr_t)dest, (c302f_word_t)data);
-               break;
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-       case FLASH_MAN_INTEL|FLASH_28F800_B:
-       case FLASH_MAN_AMD|FLASH_AM29F800B:
-               /* not yet ...
-               retval = cmbf_write_word((cmbf_addr_t)dest, (cmbf_word_t)data);
-               */
-               retval = 3;
-               break;
-#endif
-
-       default:
-               printf ("Flash type %08lx not supported - aborted\n",
-                       info->flash_id);
-               retval = 3;
-               break;
-       }
-
-       return (retval);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/cogent/flash.h b/board/cogent/flash.h
deleted file mode 100644 (file)
index 0b8d6aa..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/**************** DEFINES for Intel 28F008S5 FLASH chip **********************/
-
-/* register addresses, valid only following a I8S5_CMD_RD_ID command */
-#define I8S5_ADDR_MAN  0x00000 /* manufacturer's id */
-#define I8S5_ADDR_DEV  0x00001 /* device id */
-#define I8S5_ADDR_CFGM 0x00003 /* master lock configuration */
-#define I8S5_ADDR_CFG(b) (((b)<<16)|2) /* block lock configuration */
-
-/* Commands */
-#define I8S5_CMD_RST   0xFF    /* reset flash */
-#define I8S5_CMD_RD_ID 0x90    /* read the id and lock bits */
-#define I8S5_CMD_RD_STAT 0x70  /* read the status register */
-#define I8S5_CMD_CLR_STAT 0x50 /* clear the staus register */
-#define I8S5_CMD_ERASE1        0x20    /* first word for block erase */
-#define I8S5_CMD_ERASE2        0xD0    /* second word for block erase */
-#define I8S5_CMD_PROG  0x40    /* program word command */
-#define I8S5_CMD_LOCK  0x60    /* first word for all lock commands */
-#define I8S5_CMD_SET_LOCK_BLK 0x01 /* 2nd word for set block lock bit */
-#define I8S5_CMD_SET_LOCK_MSTR 0xF1 /* 2nd word for set master lock bit */
-#define I8S5_CMD_CLR_LOCK_BLK 0xD0 /* 2nd word for clear block lock bit */
-
-/* status register bits */
-#define I8S5_STAT_DPS  0x02    /* Device Protect Status */
-#define I8S5_STAT_PSS  0x04    /* Program Suspend Status */
-#define I8S5_STAT_VPPS 0x08    /* VPP Status */
-#define I8S5_STAT_PSLBS        0x10    /* Program and Set Lock Bit Status */
-#define I8S5_STAT_ECLBS        0x20    /* Erase and Clear Lock Bit Status */
-#define I8S5_STAT_ESS  0x40    /* Erase Suspend Status */
-#define I8S5_STAT_RDY  0x80    /* Write State Machine Status, 1=rdy */
-
-#define I8S5_STAT_ERR  (I8S5_STAT_VPPS | I8S5_STAT_DPS | \
-                           I8S5_STAT_ECLBS | I8S5_STAT_PSLBS)
-
-/* ID and Lock Configuration */
-#define I8S5_RD_ID_LOCK        0x01    /* Bit 0 of each byte */
-#define I8S5_RD_ID_MAN 0x89    /* Manufacturer code = 0x89 */
-#define I8S5_RD_ID_DEV 0xA6    /* Device code = 0xA6, 28F008S5 */
-
-/* dimensions */
-#define I8S5_NBLOCKS   16              /* a 28F008S5 consists of 16 blocks */
-#define I8S5_BLKSZ     (64*1024)       /* of 64Kbyte each */
-#define I8S5_SIZE      (I8S5_BLKSZ * I8S5_NBLOCKS)
-
-/**************** DEFINES for Intel 28F800B5 FLASH chip **********************/
-
-/* register addresses, valid only following a I8S5_CMD_RD_ID command */
-#define I8B5_ADDR_MAN  0x00000 /* manufacturer's id */
-#define I8B5_ADDR_DEV  0x00001 /* device id */
-
-/* Commands */
-#define I8B5_CMD_RST   0xFF    /* reset flash */
-#define I8B5_CMD_RD_ID 0x90    /* read the id and lock bits */
-#define I8B5_CMD_RD_STAT 0x70  /* read the status register */
-#define I8B5_CMD_CLR_STAT 0x50 /* clear the staus register */
-#define I8B5_CMD_ERASE1        0x20    /* first word for block erase */
-#define I8B5_CMD_ERASE2        0xD0    /* second word for block erase */
-#define I8B5_CMD_PROG  0x40    /* program word command */
-
-/* status register bits */
-#define I8B5_STAT_VPPS 0x08    /* VPP Status */
-#define I8B5_STAT_DWS  0x10    /* Program and Set Lock Bit Status */
-#define I8B5_STAT_ES   0x20    /* Erase and Clear Lock Bit Status */
-#define I8B5_STAT_ESS  0x40    /* Erase Suspend Status */
-#define I8B5_STAT_RDY  0x80    /* Write State Machine Status, 1=rdy */
-
-#define I8B5_STAT_ERR  (I8B5_STAT_VPPS | I8B5_STAT_DWS | I8B5_STAT_ES)
-
-/* ID Configuration */
-#define I8B5_RD_ID_MAN 0x89    /* Manufacturer code = 0x89 */
-#define I8B5_RD_ID_DEV1        0x889D  /* Device code = 0x889D, 28F800B5 */
-
-/* dimensions */
-#define I8B5_NBLOCKS   8               /* a 28F008S5 consists of 16 blocks */
-#define I8B5_BLKSZ     (128*1024)      /* of 64Kbyte each */
-#define I8B5_SIZE      (I8B5_BLKSZ * I8B5_NBLOCKS)
-
-/****************** DEFINES for Cogent CMA302 Flash **************************/
-
-/*
- * Quoted from the CMA302 manual:
- *
- * Although the CMA302 supports 64-bit reads, all writes must be done with
- * word size only. When programming the CMA302, the FLASH devices appear as 2
- * banks of interleaved, 32-bit wide FLASH. Each 32-bit word consists of four
- * 28F008S5 devices. The first bank is accessed when the word address is even,
- * while the second bank is accessed when the word address is odd. This must
- * be taken into account when programming the desired word. Also, when locking
- * blocks, software must lock both banks. The CMA302 does not directly support
- * byte writing.  Programming and/or erasing individual bytes is done with
- * selective use of the Write Command.  By not placing the Write Command value
- * on a particular byte lane, that byte will not be written with the following
- * Write Data. Also, remember that within a byte lane (i.e. D0-7), there are
- * two 28F008S5 devices, one for each bank or every other word.
- *
- * End quote.
- *
- * Each 28F008S5 is 8Mbit, with 8 bit wide data. i.e. each is 1Mbyte. The
- * chips are arranged on the CMA302 in multiples of two banks, each bank having
- * 4 chips. Each bank must be accessed as a single 32 bit wide device (i.e.
- * aligned on a 32 bit boundary), with each byte lane within the 32 bits (0-3)
- * going to each of the 4 chips and the word address selecting the bank, even
- * being the low bank and odd the high bank. For 64bit reads, both banks are
- * read simultaneously with the second bank on byte lanes 4-7. Each 28F008S5
- * consists of 16 64Kbyte "block"s. Before programming a byte, the block that
- * the byte resides within must be erased. So if you want to program contiguous
- * memory locations, you must erase all 8 chips at the same time. i.e. the
- * flash on the CMA302 can be viewed as a number of 512Kbyte blocks.
- *
- * Note: I am going to treat banks as 8 Mbytes (1Meg of 64bit words), whereas
- * the example code treats them as a pair of interleaved 1 Mbyte x 32bit banks.
- */
-
-typedef unsigned long c302f_word_t;    /* 32 or 64 bit unsigned integer */
-typedef volatile c302f_word_t *c302f_addr_t;
-typedef unsigned long c302f_size_t;    /* want this big - at least 32 bit */
-
-/* layout of banks on cma302 board */
-#define C302F_BNK_WIDTH                8       /* each bank is 8 chips wide */
-#define C302F_BNK_WSHIFT       3       /* log base 2 of C302F_BNK_WIDTH */
-#define C302F_BNK_NBLOCKS      I8S5_NBLOCKS
-#define C302F_BNK_BLKSZ                (I8S5_BLKSZ * C302F_BNK_WIDTH)
-#define C302F_BNK_SIZE         (I8S5_SIZE * C302F_BNK_WIDTH)
-
-#define C302F_MAX_BANKS                2       /* up to 2 banks (8M each) on CMA302 */
-
-/* align addresses and sizes to bank boundaries */
-#define C302F_BNK_ADDR_ALIGN(a)        ((c302f_addr_t)((c302f_size_t)(a) \
-                                   & ~(C302F_BNK_WIDTH - 1)))
-#define C302F_BNK_SIZE_ALIGN(s)        ((c302f_size_t)C302F_BNK_ADDR_ALIGN( \
-                                   (c302f_size_t)(s) + (C302F_BNK_WIDTH - 1)))
-
-/* align addresses and sizes to block boundaries */
-#define C302F_BLK_ADDR_ALIGN(a)        ((c302f_addr_t)((c302f_size_t)(a) \
-                                   & ~(C302F_BNK_BLKSZ - 1)))
-#define C302F_BLK_SIZE_ALIGN(s)        ((c302f_size_t)C302F_BLK_ADDR_ALIGN( \
-                                   (c302f_size_t)(s) + (C302F_BNK_BLKSZ - 1)))
-
-/* add a byte offset to a flash address */
-#define C302F_ADDR_ADD_BYTEOFF(a,o) \
-                               (c302f_addr_t)((c302f_size_t)(a) + (o))
-
-/* get base address of bank b, given flash base address a */
-#define C302F_BNK_ADDR_BASE(a,b) \
-                               C302F_ADDR_ADD_BYTEOFF((a), \
-                                   (c302f_size_t)(b) * C302F_BNK_SIZE)
-
-/* adjust an address a (within a bank) to next word, block or bank */
-#define C302F_BNK_ADDR_NEXT_WORD(a) \
-                               C302F_ADDR_ADD_BYTEOFF((a), C302F_BNK_WIDTH)
-#define C302F_BNK_ADDR_NEXT_BLK(a) \
-                               C302F_ADDR_ADD_BYTEOFF((a), C302F_BNK_BLKSZ)
-#define C302F_BNK_ADDR_NEXT_BNK(a) \
-                               C302F_ADDR_ADD_BYTEOFF((a), C302F_BNK_SIZE)
-
-/* get bank address of chip register r given a bank base address a */
-#define C302F_BNK_ADDR_I8S5REG(a,r) \
-                               C302F_ADDR_ADD_BYTEOFF((a), \
-                                   (r) << C302F_BNK_WSHIFT)
-
-/* make a bank representation for each chip address */
-
-#define C302F_BNK_ADDR_MAN(a)  C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_MAN)
-#define C302F_BNK_ADDR_DEV(a)  C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_DEV)
-#define C302F_BNK_ADDR_CFGM(a) C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_CFGM)
-#define C302F_BNK_ADDR_CFG(b,a)        C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_CFG(b))
-
-/*
- * replicate a chip cmd/stat/rd value into each byte position within a word
- * so that multiple chips are accessed in a single word i/o operation
- *
- * this must be as wide as the c302f_word_t type
- */
-#define C302F_FILL_WORD(o)     (((unsigned long)(o) << 24) | \
-                                   ((unsigned long)(o) << 16) | \
-                                   ((unsigned long)(o) << 8) | \
-                                   (unsigned long)(o))
-
-/* make a bank representation for each chip cmd/stat/rd value */
-
-/* Commands */
-#define C302F_BNK_CMD_RST      C302F_FILL_WORD(I8S5_CMD_RST)
-#define C302F_BNK_CMD_RD_ID    C302F_FILL_WORD(I8S5_CMD_RD_ID)
-#define C302F_BNK_CMD_RD_STAT  C302F_FILL_WORD(I8S5_CMD_RD_STAT)
-#define C302F_BNK_CMD_CLR_STAT C302F_FILL_WORD(I8S5_CMD_CLR_STAT)
-#define C302F_BNK_CMD_ERASE1   C302F_FILL_WORD(I8S5_CMD_ERASE1)
-#define C302F_BNK_CMD_ERASE2   C302F_FILL_WORD(I8S5_CMD_ERASE2)
-#define C302F_BNK_CMD_PROG     C302F_FILL_WORD(I8S5_CMD_PROG)
-#define C302F_BNK_CMD_LOCK     C302F_FILL_WORD(I8S5_CMD_LOCK)
-#define C302F_BNK_CMD_SET_LOCK_BLK C302F_FILL_WORD(I8S5_CMD_SET_LOCK_BLK)
-#define C302F_BNK_CMD_SET_LOCK_MSTR C302F_FILL_WORD(I8S5_CMD_SET_LOCK_MSTR)
-#define C302F_BNK_CMD_CLR_LOCK_BLK C302F_FILL_WORD(I8S5_CMD_CLR_LOCK_BLK)
-
-/* status register bits */
-#define C302F_BNK_STAT_DPS     C302F_FILL_WORD(I8S5_STAT_DPS)
-#define C302F_BNK_STAT_PSS     C302F_FILL_WORD(I8S5_STAT_PSS)
-#define C302F_BNK_STAT_VPPS    C302F_FILL_WORD(I8S5_STAT_VPPS)
-#define C302F_BNK_STAT_PSLBS   C302F_FILL_WORD(I8S5_STAT_PSLBS)
-#define C302F_BNK_STAT_ECLBS   C302F_FILL_WORD(I8S5_STAT_ECLBS)
-#define C302F_BNK_STAT_ESS     C302F_FILL_WORD(I8S5_STAT_ESS)
-#define C302F_BNK_STAT_RDY     C302F_FILL_WORD(I8S5_STAT_RDY)
-
-#define C302F_BNK_STAT_ERR     C302F_FILL_WORD(I8S5_STAT_ERR)
-
-/* ID and Lock Configuration */
-#define C302F_BNK_RD_ID_LOCK   C302F_FILL_WORD(I8S5_RD_ID_LOCK)
-#define C302F_BNK_RD_ID_MAN    C302F_FILL_WORD(I8S5_RD_ID_MAN)
-#define C302F_BNK_RD_ID_DEV    C302F_FILL_WORD(I8S5_RD_ID_DEV)
-
-/*************** DEFINES for Cogent Motherboard Flash ************************/
-
-typedef unsigned short cmbf_word_t;    /* 16 bit unsigned integer */
-typedef volatile cmbf_word_t *cmbf_addr_t;
-typedef unsigned long cmbf_size_t;     /* want this big - at least 32 bit */
-
-/* layout of banks on cogent motherboard - only 1 bank, 16 bit wide */
-#define CMBF_BNK_WIDTH         1       /* each bank is one chip wide */
-#define CMBF_BNK_WSHIFT        0       /* log base 2 of CMBF_BNK_WIDTH */
-#define CMBF_BNK_NBLOCKS       I8B5_NBLOCKS
-#define CMBF_BNK_BLKSZ         (I8B5_BLKSZ * CMBF_BNK_WIDTH)
-#define CMBF_BNK_SIZE          (I8B5_SIZE * CMBF_BNK_WIDTH)
-
-#define CMBF_MAX_BANKS         1       /* only 1 x 1Mbyte bank on cogent m/b */
-
-/* align addresses and sizes to bank boundaries */
-#define CMBF_BNK_ADDR_ALIGN(a) ((c302f_addr_t)((c302f_size_t)(a) \
-                                   & ~(CMBF_BNK_WIDTH - 1)))
-#define CMBF_BNK_SIZE_ALIGN(s) ((c302f_size_t)CMBF_BNK_ADDR_ALIGN( \
-                                   (c302f_size_t)(s) + (CMBF_BNK_WIDTH - 1)))
-
-/* align addresses and sizes to block boundaries */
-#define CMBF_BLK_ADDR_ALIGN(a) ((c302f_addr_t)((c302f_size_t)(a) \
-                                   & ~(CMBF_BNK_BLKSZ - 1)))
-#define CMBF_BLK_SIZE_ALIGN(s) ((c302f_size_t)CMBF_BLK_ADDR_ALIGN( \
-                                   (c302f_size_t)(s) + (CMBF_BNK_BLKSZ - 1)))
-
-/* add a byte offset to a flash address */
-#define CMBF_ADDR_ADD_BYTEOFF(a,o) \
-                               (c302f_addr_t)((c302f_size_t)(a) + (o))
-
-/* get base address of bank b, given flash base address a */
-#define CMBF_BNK_ADDR_BASE(a,b) \
-                               CMBF_ADDR_ADD_BYTEOFF((a), \
-                                   (c302f_size_t)(b) * CMBF_BNK_SIZE)
-
-/* adjust an address a (within a bank) to next word, block or bank */
-#define CMBF_BNK_ADDR_NEXT_WORD(a) \
-                               CMBF_ADDR_ADD_BYTEOFF((a), CMBF_BNK_WIDTH)
-#define CMBF_BNK_ADDR_NEXT_BLK(a) \
-                               CMBF_ADDR_ADD_BYTEOFF((a), CMBF_BNK_BLKSZ)
-#define CMBF_BNK_ADDR_NEXT_BNK(a) \
-                               CMBF_ADDR_ADD_BYTEOFF((a), CMBF_BNK_SIZE)
-
-/* get bank address of chip register r given a bank base address a */
-#define CMBF_BNK_ADDR_I8B5REG(a,r) \
-                               CMBF_ADDR_ADD_BYTEOFF((a), \
-                                   (r) << CMBF_BNK_WSHIFT)
-
-/* make a bank representation for each chip address */
-
-#define CMBF_BNK_ADDR_MAN(a)   CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_MAN)
-#define CMBF_BNK_ADDR_DEV(a)   CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_DEV)
-#define CMBF_BNK_ADDR_CFGM(a)  CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_CFGM)
-#define CMBF_BNK_ADDR_CFG(b,a) CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_CFG(b))
-
-/*
- * replicate a chip cmd/stat/rd value into each byte position within a word
- * so that multiple chips are accessed in a single word i/o operation
- *
- * this must be as wide as the c302f_word_t type
- */
-#define CMBF_FILL_WORD(o)      (((unsigned long)(o) << 24) | \
-                                   ((unsigned long)(o) << 16) | \
-                                   ((unsigned long)(o) << 8) | \
-                                   (unsigned long)(o))
-
-/* make a bank representation for each chip cmd/stat/rd value */
-
-/* Commands */
-#define CMBF_BNK_CMD_RST       CMBF_FILL_WORD(I8B5_CMD_RST)
-#define CMBF_BNK_CMD_RD_ID     CMBF_FILL_WORD(I8B5_CMD_RD_ID)
-#define CMBF_BNK_CMD_RD_STAT   CMBF_FILL_WORD(I8B5_CMD_RD_STAT)
-#define CMBF_BNK_CMD_CLR_STAT  CMBF_FILL_WORD(I8B5_CMD_CLR_STAT)
-#define CMBF_BNK_CMD_ERASE1    CMBF_FILL_WORD(I8B5_CMD_ERASE1)
-#define CMBF_BNK_CMD_ERASE2    CMBF_FILL_WORD(I8B5_CMD_ERASE2)
-#define CMBF_BNK_CMD_PROG      CMBF_FILL_WORD(I8B5_CMD_PROG)
-#define CMBF_BNK_CMD_LOCK      CMBF_FILL_WORD(I8B5_CMD_LOCK)
-#define CMBF_BNK_CMD_SET_LOCK_BLK CMBF_FILL_WORD(I8B5_CMD_SET_LOCK_BLK)
-#define CMBF_BNK_CMD_SET_LOCK_MSTR CMBF_FILL_WORD(I8B5_CMD_SET_LOCK_MSTR)
-#define CMBF_BNK_CMD_CLR_LOCK_BLK CMBF_FILL_WORD(I8B5_CMD_CLR_LOCK_BLK)
-
-/* status register bits */
-#define CMBF_BNK_STAT_DPS      CMBF_FILL_WORD(I8B5_STAT_DPS)
-#define CMBF_BNK_STAT_PSS      CMBF_FILL_WORD(I8B5_STAT_PSS)
-#define CMBF_BNK_STAT_VPPS     CMBF_FILL_WORD(I8B5_STAT_VPPS)
-#define CMBF_BNK_STAT_PSLBS    CMBF_FILL_WORD(I8B5_STAT_PSLBS)
-#define CMBF_BNK_STAT_ECLBS    CMBF_FILL_WORD(I8B5_STAT_ECLBS)
-#define CMBF_BNK_STAT_ESS      CMBF_FILL_WORD(I8B5_STAT_ESS)
-#define CMBF_BNK_STAT_RDY      CMBF_FILL_WORD(I8B5_STAT_RDY)
-
-#define CMBF_BNK_STAT_ERR      CMBF_FILL_WORD(I8B5_STAT_ERR)
-
-/* ID and Lock Configuration */
-#define CMBF_BNK_RD_ID_LOCK    CMBF_FILL_WORD(I8B5_RD_ID_LOCK)
-#define CMBF_BNK_RD_ID_MAN     CMBF_FILL_WORD(I8B5_RD_ID_MAN)
-#define CMBF_BNK_RD_ID_DEV     CMBF_FILL_WORD(I8B5_RD_ID_DEV)
diff --git a/board/cogent/kbm.c b/board/cogent/kbm.c
deleted file mode 100644 (file)
index 8496402..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* keyboard/mouse not implemented yet */
-
-int cma_kbm_not_implemented = 1;
diff --git a/board/cogent/lcd.c b/board/cogent/lcd.c
deleted file mode 100644 (file)
index 8e90f98..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-/* most of this is taken from the file */
-/* hal/powerpc/cogent/current/src/hal_diag.c in the */
-/* Cygnus eCos source. Here is the copyright notice: */
-/* */
-/*============================================================================= */
-/* */
-/*      hal_diag.c */
-/* */
-/*      HAL diagnostic output code */
-/* */
-/*============================================================================= */
-/*####COPYRIGHTBEGIN#### */
-/* */
-/* ------------------------------------------- */
-/* The contents of this file are subject to the Cygnus eCos Public License */
-/* Version 1.0 (the "License"); you may not use this file except in */
-/* compliance with the License.  You may obtain a copy of the License at */
-/* http://sourceware.cygnus.com/ecos */
-/* */
-/* Software distributed under the License is distributed on an "AS IS" */
-/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the */
-/* License for the specific language governing rights and limitations under */
-/* the License. */
-/* */
-/* The Original Code is eCos - Embedded Cygnus Operating System, released */
-/* September 30, 1998. */
-/* */
-/* The Initial Developer of the Original Code is Cygnus.  Portions created */
-/* by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved. */
-/* ------------------------------------------- */
-/* */
-/*####COPYRIGHTEND#### */
-/*============================================================================= */
-/*#####DESCRIPTIONBEGIN#### */
-/* */
-/* Author(s):    nickg, jskov */
-/* Contributors: nickg, jskov */
-/* Date:         1999-03-23 */
-/* Purpose:      HAL diagnostic output */
-/* Description:  Implementations of HAL diagnostic output support. */
-/* */
-/*####DESCRIPTIONEND#### */
-/* */
-/*============================================================================= */
-
-/*----------------------------------------------------------------------------- */
-/* Cogent board specific LCD code */
-
-#include <common.h>
-#include <stdarg.h>
-#include "lcd.h"
-
-static char lines[2][LCD_LINE_LENGTH+1];
-static int curline;
-static int linepos;
-static int heartbeat_active;
-/* make the next two strings exactly LCD_LINE_LENGTH (16) chars long */
-/* pad to the right with spaces if necessary */
-static char init_line0[LCD_LINE_LENGTH+1] = "U-Boot Cogent  ";
-static char init_line1[LCD_LINE_LENGTH+1] = "mjj, 11 Aug 2000";
-
-static inline unsigned char
-lcd_read_status(cma_mb_lcd *clp)
-{
-    /* read the Busy Status Register */
-    return (cma_mb_reg_read(&clp->lcd_bsr));
-}
-
-static inline void
-lcd_wait_not_busy(cma_mb_lcd *clp)
-{
-    /*
-     * wait for not busy
-     * Note: It seems that the LCD isn't quite ready to process commands
-     * when it clears the BUSY flag. Reading the status address an extra
-     * time seems to give it enough breathing room.
-     */
-
-    while (lcd_read_status(clp) & LCD_STAT_BUSY)
-       ;
-
-    (void)lcd_read_status(clp);
-}
-
-static inline void
-lcd_write_command(cma_mb_lcd *clp, unsigned char cmd)
-{
-    lcd_wait_not_busy(clp);
-
-    /* write the Command Register */
-    cma_mb_reg_write(&clp->lcd_cmd, cmd);
-}
-
-static inline void
-lcd_write_data(cma_mb_lcd *clp, unsigned char data)
-{
-    lcd_wait_not_busy(clp);
-
-    /* write the Current Character Register */
-    cma_mb_reg_write(&clp->lcd_ccr, data);
-}
-
-static inline void
-lcd_dis(int addr, char *string)
-{
-    cma_mb_lcd *clp = (cma_mb_lcd *)CMA_MB_LCD_BASE;
-    int pos, linelen;
-
-    linelen = LCD_LINE_LENGTH;
-    if (heartbeat_active && addr == LCD_LINE0)
-       linelen--;
-
-    lcd_write_command(clp, LCD_CMD_ADD + addr);
-    for (pos = 0; *string != '\0' && pos < linelen; pos++)
-       lcd_write_data(clp, *string++);
-}
-
-void
-lcd_init(void)
-{
-    cma_mb_lcd *clp = (cma_mb_lcd *)CMA_MB_LCD_BASE;
-    int i;
-
-    /* configure the lcd for 8 bits/char, 2 lines and 5x7 dot matrix */
-    lcd_write_command(clp, LCD_CMD_MODE);
-
-    /* turn the LCD display on */
-    lcd_write_command(clp, LCD_CMD_DON);
-
-    curline = 0;
-    linepos = 0;
-
-    for (i = 0; i < LCD_LINE_LENGTH; i++) {
-       lines[0][i] = init_line0[i];
-       lines[1][i] = init_line1[i];
-    }
-
-    lines[0][LCD_LINE_LENGTH] = lines[1][LCD_LINE_LENGTH] = 0;
-
-    lcd_dis(LCD_LINE0, lines[0]);
-    lcd_dis(LCD_LINE1, lines[1]);
-
-    printf("HD44780 2 line x %d char display\n", LCD_LINE_LENGTH);
-}
-
-void
-lcd_write_char(const char c)
-{
-    int i, linelen;
-
-    /* ignore CR */
-    if (c == '\r')
-       return;
-
-    linelen = LCD_LINE_LENGTH;
-    if (heartbeat_active && curline == 0)
-       linelen--;
-
-    if (c == '\n') {
-       lcd_dis(LCD_LINE0, &lines[curline^1][0]);
-       lcd_dis(LCD_LINE1, &lines[curline][0]);
-
-       /* Do a line feed */
-       curline ^= 1;
-       linelen = LCD_LINE_LENGTH;
-       if (heartbeat_active && curline == 0)
-           linelen--;
-       linepos = 0;
-
-       for (i = 0; i < linelen; i++)
-           lines[curline][i] = ' ';
-
-       return;
-    }
-
-    /* Only allow to be output if there is room on the LCD line */
-    if (linepos < linelen)
-       lines[curline][linepos++] = c;
-}
-
-void
-lcd_flush(void)
-{
-    lcd_dis(LCD_LINE1, &lines[curline][0]);
-}
-
-void
-lcd_write_string(const char *s)
-{
-    char *p;
-
-    for (p = (char *)s; *p != '\0'; p++)
-       lcd_write_char(*p);
-}
-
-void
-lcd_printf(const char *fmt, ...)
-{
-    va_list args;
-    char buf[CONFIG_SYS_PBSIZE];
-
-    va_start(args, fmt);
-    (void)vsprintf(buf, fmt, args);
-    va_end(args);
-
-    lcd_write_string(buf);
-}
-
-void
-lcd_heartbeat(void)
-{
-    cma_mb_lcd *clp = (cma_mb_lcd *)CMA_MB_LCD_BASE;
-#if 0
-    static char rotchars[] = { '|', '/', '-', '\\' };
-#else
-    /* HD44780 Rom Code A00 has no backslash */
-    static char rotchars[] = { '|', '/', '-', '\315' };
-#endif
-    static int rotator_index = 0;
-
-    heartbeat_active = 1;
-
-    /* write the address */
-    lcd_write_command(clp, LCD_CMD_ADD + LCD_LINE0 + (LCD_LINE_LENGTH - 1));
-
-    /* write the next char in the sequence */
-    lcd_write_data(clp, rotchars[rotator_index]);
-
-    if (++rotator_index >= (sizeof rotchars / sizeof rotchars[0]))
-       rotator_index = 0;
-}
-
-#ifdef CONFIG_SHOW_ACTIVITY
-void board_show_activity (ulong timestamp)
-{
-#ifdef CONFIG_STATUS_LED
-       if ((timestamp % (CONFIG_SYS_HZ / 2) == 0)
-               lcd_heartbeat ();
-#endif
-}
-
-void show_activity(int arg)
-{
-}
-#endif
diff --git a/board/cogent/lcd.h b/board/cogent/lcd.h
deleted file mode 100644 (file)
index 9e6157e..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/* most of this is taken from the file */
-/* hal/powerpc/cogent/current/src/hal_diag.c in the */
-/* Cygnus eCos source. Here is the copyright notice: */
-/* */
-/*============================================================================= */
-/* */
-/*      hal_diag.c */
-/* */
-/*      HAL diagnostic output code */
-/* */
-/*============================================================================= */
-/*####COPYRIGHTBEGIN#### */
-/* */
-/* ------------------------------------------- */
-/* The contents of this file are subject to the Cygnus eCos Public License */
-/* Version 1.0 (the "License"); you may not use this file except in */
-/* compliance with the License.  You may obtain a copy of the License at */
-/* http://sourceware.cygnus.com/ecos */
-/* */
-/* Software distributed under the License is distributed on an "AS IS" */
-/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the */
-/* License for the specific language governing rights and limitations under */
-/* the License. */
-/* */
-/* The Original Code is eCos - Embedded Cygnus Operating System, released */
-/* September 30, 1998. */
-/* */
-/* The Initial Developer of the Original Code is Cygnus.  Portions created */
-/* by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved. */
-/* ------------------------------------------- */
-/* */
-/*####COPYRIGHTEND#### */
-/*============================================================================= */
-/*#####DESCRIPTIONBEGIN#### */
-/* */
-/* Author(s):    nickg, jskov */
-/* Contributors: nickg, jskov */
-/* Date:         1999-03-23 */
-/* Purpose:      HAL diagnostic output */
-/* Description:  Implementations of HAL diagnostic output support. */
-/* */
-/*####DESCRIPTIONEND#### */
-/* */
-/*============================================================================= */
-
-/* FEMA 162B 16 character x 2 line LCD */
-
-/* status register bit definitions */
-#define LCD_STAT_BUSY  0x80    /* 1 = display busy */
-#define LCD_STAT_ADD   0x7F    /* bits 0-6 return current display address */
-
-/* command register definitions */
-#define LCD_CMD_RST    0x01    /* clear entire display and reset display addr */
-#define LCD_CMD_HOME   0x02    /* reset display address and reset any shifting */
-#define LCD_CMD_ECL    0x04    /* move cursor left one pos on next data write */
-#define LCD_CMD_ESL    0x05    /* shift display left one pos on next data write */
-#define LCD_CMD_ECR    0x06    /* move cursor right one pos on next data write */
-#define LCD_CMD_ESR    0x07    /* shift disp right one pos on next data write */
-#define LCD_CMD_DOFF   0x08    /* display off, cursor off, blinking off */
-#define LCD_CMD_BL     0x09    /* blink character at current cursor position */
-#define LCD_CMD_CUR    0x0A    /* enable cursor on */
-#define LCD_CMD_DON    0x0C    /* turn display on */
-#define LCD_CMD_CL     0x10    /* move cursor left one position */
-#define LCD_CMD_SL     0x14    /* shift display left one position */
-#define LCD_CMD_CR     0x18    /* move cursor right one position */
-#define LCD_CMD_SR     0x1C    /* shift display right one position */
-#define LCD_CMD_MODE   0x38    /* sets 8 bits, 2 lines, 5x7 characters */
-#define LCD_CMD_ACG    0x40    /* bits 0-5 sets character generator address */
-#define LCD_CMD_ADD    0x80    /* bits 0-6 sets display data addr to line 1 + */
-
-/* LCD status values */
-#define LCD_OK         0x00
-#define LCD_ERR                0x01
-
-#define LCD_LINE0      0x00
-#define LCD_LINE1      0x40
-
-#define LCD_LINE_LENGTH        16
-
-extern void lcd_init(void);
-extern void lcd_write_char(const char);
-extern void lcd_flush(void);
-extern void lcd_write_string(const char *);
-extern void lcd_printf(const char *, ...);
diff --git a/board/cogent/mb.c b/board/cogent/mb.c
deleted file mode 100644 (file)
index c025643..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include "dipsw.h"
-#include "lcd.h"
-#include "rtc.h"
-#include "par.h"
-#include "pci.h"
-
-/* ------------------------------------------------------------------------- */
-
-#if defined(CONFIG_MPC8260)
-
-#include <ioports.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-       /* Port A configuration */
-       {                       /*            conf ppar psor pdir podr pdat */
-        /* PA31 */ {0, 0, 0, 0, 0, 0},
-        /* PA30 */ {0, 0, 0, 0, 0, 0},
-        /* PA29 */ {0, 0, 0, 0, 0, 0},
-        /* PA28 */ {0, 0, 0, 0, 0, 0},
-        /* PA27 */ {0, 0, 0, 0, 0, 0},
-        /* PA26 */ {0, 0, 0, 0, 0, 0},
-        /* PA25 */ {0, 0, 0, 0, 0, 0},
-        /* PA24 */ {0, 0, 0, 0, 0, 0},
-        /* PA23 */ {0, 0, 0, 0, 0, 0},
-        /* PA22 */ {0, 0, 0, 0, 0, 0},
-        /* PA21 */ {0, 0, 0, 0, 0, 0},
-        /* PA20 */ {0, 0, 0, 0, 0, 0},
-        /* PA19 */ {0, 0, 0, 0, 0, 0},
-        /* PA18 */ {0, 0, 0, 0, 0, 0},
-        /* PA17 */ {0, 0, 0, 0, 0, 0},
-        /* PA16 */ {0, 0, 0, 0, 0, 0},
-        /* PA15 */ {0, 0, 0, 0, 0, 0},
-        /* PA14 */ {0, 0, 0, 0, 0, 0},
-        /* PA13 */ {0, 0, 0, 0, 0, 0},
-        /* PA12 */ {0, 0, 0, 0, 0, 0},
-        /* PA11 */ {0, 0, 0, 0, 0, 0},
-        /* PA10 */ {0, 0, 0, 0, 0, 0},
-                                       /* PA9  */ {1, 1, 0, 1, 0, 0},
-                                       /* SMC2 TXD */
-                                       /* PA8  */ {1, 1, 0, 0, 0, 0},
-                                       /* SMC2 RXD */
-        /* PA7  */ {0, 0, 0, 0, 0, 0},
-        /* PA6  */ {0, 0, 0, 0, 0, 0},
-        /* PA5  */ {0, 0, 0, 0, 0, 0},
-        /* PA4  */ {0, 0, 0, 0, 0, 0},
-        /* PA3  */ {0, 0, 0, 0, 0, 0},
-        /* PA2  */ {0, 0, 0, 0, 0, 0},
-        /* PA1  */ {0, 0, 0, 0, 0, 0},
-        /* PA0  */ {0, 0, 0, 0, 0, 0}
-        },
-
-
-       {                       /*            conf ppar psor pdir podr pdat */
-        /* PB31 */ {0, 0, 0, 0, 0, 0},
-        /* PB30 */ {0, 0, 0, 0, 0, 0},
-        /* PB29 */ {0, 0, 0, 0, 0, 0},
-        /* PB28 */ {0, 0, 0, 0, 0, 0},
-        /* PB27 */ {0, 0, 0, 0, 0, 0},
-        /* PB26 */ {0, 0, 0, 0, 0, 0},
-        /* PB25 */ {0, 0, 0, 0, 0, 0},
-        /* PB24 */ {0, 0, 0, 0, 0, 0},
-        /* PB23 */ {0, 0, 0, 0, 0, 0},
-        /* PB22 */ {0, 0, 0, 0, 0, 0},
-        /* PB21 */ {0, 0, 0, 0, 0, 0},
-        /* PB20 */ {0, 0, 0, 0, 0, 0},
-        /* PB19 */ {0, 0, 0, 0, 0, 0},
-        /* PB18 */ {0, 0, 0, 0, 0, 0},
-        /* PB17 */ {0, 0, 0, 0, 0, 0},
-        /* PB16 */ {0, 0, 0, 0, 0, 0},
-        /* PB15 */ {0, 0, 0, 0, 0, 0},
-        /* PB14 */ {0, 0, 0, 0, 0, 0},
-        /* PB13 */ {0, 0, 0, 0, 0, 0},
-        /* PB12 */ {0, 0, 0, 0, 0, 0},
-        /* PB11 */ {0, 0, 0, 0, 0, 0},
-        /* PB10 */ {0, 0, 0, 0, 0, 0},
-        /* PB9  */ {0, 0, 0, 0, 0, 0},
-        /* PB8  */ {0, 0, 0, 0, 0, 0},
-        /* PB7  */ {0, 0, 0, 0, 0, 0},
-        /* PB6  */ {0, 0, 0, 0, 0, 0},
-        /* PB5  */ {0, 0, 0, 0, 0, 0},
-        /* PB4  */ {0, 0, 0, 0, 0, 0},
-                                       /* PB3  */ {0, 0, 0, 0, 0, 0},
-                                       /* pin doesn't exist */
-                                       /* PB2  */ {0, 0, 0, 0, 0, 0},
-                                       /* pin doesn't exist */
-                                       /* PB1  */ {0, 0, 0, 0, 0, 0},
-                                       /* pin doesn't exist */
-                                       /* PB0  */ {0, 0, 0, 0, 0, 0}
-                                       /* pin doesn't exist */
-        },
-
-
-       {                       /*            conf ppar psor pdir podr pdat */
-        /* PC31 */ {0, 0, 0, 0, 0, 0},
-        /* PC30 */ {0, 0, 0, 0, 0, 0},
-        /* PC29 */ {0, 0, 0, 0, 0, 0},
-        /* PC28 */ {0, 0, 0, 0, 0, 0},
-        /* PC27 */ {0, 0, 0, 0, 0, 0},
-        /* PC26 */ {0, 0, 0, 0, 0, 0},
-        /* PC25 */ {0, 0, 0, 0, 0, 0},
-        /* PC24 */ {0, 0, 0, 0, 0, 0},
-        /* PC23 */ {0, 0, 0, 0, 0, 0},
-        /* PC22 */ {0, 0, 0, 0, 0, 0},
-        /* PC21 */ {0, 0, 0, 0, 0, 0},
-        /* PC20 */ {0, 0, 0, 0, 0, 0},
-        /* PC19 */ {0, 0, 0, 0, 0, 0},
-        /* PC18 */ {0, 0, 0, 0, 0, 0},
-        /* PC17 */ {0, 0, 0, 0, 0, 0},
-        /* PC16 */ {0, 0, 0, 0, 0, 0},
-        /* PC15 */ {0, 0, 0, 0, 0, 0},
-        /* PC14 */ {0, 0, 0, 0, 0, 0},
-        /* PC13 */ {0, 0, 0, 0, 0, 0},
-        /* PC12 */ {0, 0, 0, 0, 0, 0},
-        /* PC11 */ {0, 0, 0, 0, 0, 0},
-        /* PC10 */ {0, 0, 0, 0, 0, 0},
-        /* PC9  */ {0, 0, 0, 0, 0, 0},
-        /* PC8  */ {0, 0, 0, 0, 0, 0},
-        /* PC7  */ {0, 0, 0, 0, 0, 0},
-        /* PC6  */ {0, 0, 0, 0, 0, 0},
-        /* PC5  */ {0, 0, 0, 0, 0, 0},
-        /* PC4  */ {0, 0, 0, 0, 0, 0},
-        /* PC3  */ {0, 0, 0, 0, 0, 0},
-        /* PC2  */ {0, 0, 0, 0, 0, 0},
-        /* PC1  */ {0, 0, 0, 0, 0, 0},
-        /* PC0  */ {0, 0, 0, 0, 0, 0}
-        },
-
-
-       {                       /*            conf ppar psor pdir podr pdat */
-        /* PD31 */ {0, 0, 0, 0, 0, 0},
-        /* PD30 */ {0, 0, 0, 0, 0, 0},
-        /* PD29 */ {0, 0, 0, 0, 0, 0},
-        /* PD28 */ {0, 0, 0, 0, 0, 0},
-        /* PD27 */ {0, 0, 0, 0, 0, 0},
-        /* PD26 */ {0, 0, 0, 0, 0, 0},
-        /* PD25 */ {0, 0, 0, 0, 0, 0},
-        /* PD24 */ {0, 0, 0, 0, 0, 0},
-        /* PD23 */ {0, 0, 0, 0, 0, 0},
-        /* PD22 */ {0, 0, 0, 0, 0, 0},
-        /* PD21 */ {0, 0, 0, 0, 0, 0},
-        /* PD20 */ {0, 0, 0, 0, 0, 0},
-        /* PD19 */ {0, 0, 0, 0, 0, 0},
-        /* PD18 */ {0, 0, 0, 0, 0, 0},
-        /* PD17 */ {0, 0, 0, 0, 0, 0},
-        /* PD16 */ {0, 0, 0, 0, 0, 0},
-                                       /* PD15 */ {1, 1, 1, 0, 0, 0},
-                                       /* I2C SDA */
-                                       /* PD14 */ {1, 1, 1, 0, 0, 0},
-                                       /* I2C SCL */
-        /* PD13 */ {0, 0, 0, 0, 0, 0},
-        /* PD12 */ {0, 0, 0, 0, 0, 0},
-        /* PD11 */ {0, 0, 0, 0, 0, 0},
-        /* PD10 */ {0, 0, 0, 0, 0, 0},
-                                       /* PD9  */ {1, 1, 0, 1, 0, 0},
-                                       /* SMC1 TXD */
-                                       /* PD8  */ {1, 1, 0, 0, 0, 0},
-                                       /* SMC1 RXD */
-        /* PD7  */ {0, 0, 0, 0, 0, 0},
-        /* PD6  */ {0, 0, 0, 0, 0, 0},
-        /* PD5  */ {0, 0, 0, 0, 0, 0},
-        /* PD4  */ {0, 0, 0, 0, 0, 0},
-                                       /* PD3  */ {0, 0, 0, 0, 0, 0},
-                                       /* pin doesn't exist */
-                                       /* PD2  */ {0, 0, 0, 0, 0, 0},
-                                       /* pin doesn't exist */
-                                       /* PD1  */ {0, 0, 0, 0, 0, 0},
-                                       /* pin doesn't exist */
-                                       /* PD0  */ {0, 0, 0, 0, 0, 0}
-                                       /* pin doesn't exist */
-        }
-};
-
-#endif /* CONFIG_MPC8260 */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       puts ("Board: Cogent " COGENT_MOTHERBOARD " motherboard with a "
-             COGENT_CPU_MODULE " CPU Module\n");
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations while still
- * running in flash
- */
-
-int misc_init_f (void)
-{
-       printf ("DIPSW: ");
-       dipsw_init ();
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-#ifdef CONFIG_CMA111
-       return (32L * 1024L * 1024L);
-#else
-       unsigned char dipsw_val;
-       int dual, size0, size1;
-       long int memsize;
-
-       dipsw_val = dipsw_cooked ();
-
-       dual = dipsw_val & 0x01;
-       size0 = (dipsw_val & 0x08) >> 3;
-       size1 = (dipsw_val & 0x04) >> 2;
-
-       if (size0)
-               if (size1)
-                       memsize = 16L * 1024L * 1024L;
-               else
-                       memsize = 1L * 1024L * 1024L;
-       else if (size1)
-               memsize = 4L * 1024L * 1024L;
-       else {
-               printf ("[Illegal dip switch settings - assuming 16Mbyte SIMMs] ");
-               memsize = 16L * 1024L * 1024L;  /* shouldn't happen - guess 16M */
-       }
-
-       if (dual)
-               memsize *= 2L;
-
-       return (memsize);
-#endif
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations after monitor
- * has been relocated into ram
- */
-
-int misc_init_r (void)
-{
-       printf ("LCD:   ");
-       lcd_init ();
-
-#if 0
-       printf ("RTC:   ");
-       rtc_init ();
-
-       printf ("PAR:   ");
-       par_init ();
-
-       printf ("KBM:   ");
-       kbm_init ();
-
-       printf ("PCI:   ");
-       pci_init ();
-#endif
-       return (0);
-}
diff --git a/board/cogent/mb.h b/board/cogent/mb.h
deleted file mode 100644 (file)
index 1db516f..0000000
+++ /dev/null
@@ -1,513 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * defines for Cogent Motherboards
- */
-
-#ifndef _COGENT_MB_H
-#define _COGENT_MB_H
-
-/*
- * Cogent Motherboard Address Map
- *
- * The size of a Cogent motherboard address space is 256 Mbytes (i.e. 28 bits).
- *
- * The first 32 Mbyte (0x0000000-0x1FFFFFF) is usually RAM. The following
- * 3 x 32 Mbyte areas (0x2000000-0x3FFFFFF, 0x4000000-0x5FFFFFF and
- * 0x6000000-0x7FFFFFF) are general I/O "slots" (slots 1, 2 and 3).
- * Most other motherboard devices have registers mapped into the area
- * 0xE000000-0xFFFFFFF (Motherboard I/O slot?). The area 0x8000000-0xDFFFFFF
- * is free for whatever.
- *
- * The location of the motherboard address space in the physical address space
- * of the cpu is given by CMA_MB_BASE. This value is determined by the cpu
- * module plugged into the motherboard and is configured above.
- *
- * Motherboard I/O devices mapped into the area (0xE000000-0xFFFFFFF)
- * generally only use byte lane 0 (D0-7) for their transfers, i.e. only
- * 8 bit, or 1 byte, transfers can take place, so all the registers are
- * only 8 bits wide. The exceptions are the motherboard flash, which uses
- * byte lanes 0 and 1 (i.e. 16 bits), and the mapped PCI address space.
- *
- * I/O registers within the mapped motherboard devices are 64 bit aligned
- * i.e. they are 8 bytes apart. For big endian addressing, the 8 bit register
- * will be at byte 7 (the address + 7). For little endian addressing, the
- * register will be at byte 0 (the address + 0). To learn the endianess
- * we must include <endian.h>
- *
- * Take the CMA102 and CMA111 motherboards as examples...
- *
- * The CMA102 has three CMABus I/O Expansion slots and no PCI bridge. The 3
- * CMABus slots are each mapped directly onto the three general I/O slots.
- *
- * The CMA111 has only one CMABus I/O Expansion slot, but has a V360EPC PCI
- * bridge. The CMABus slot is mapped onto general I/O slot 1. The standard
- * PCI Bus space is mapped onto general I/O slot 2, with a small area at the
- * top reserved for access to the V360EPC registers (0x5FF0000-0x5FFFFFF).
- * I/O slot 3 is unused. The extended PCI Bus space is mapped onto the area
- * 0xA000000-0xDFFFFFF.
- */
-
-#define CMA_MB_RAM_BASE                (CONFIG_SYS_CMA_MB_BASE+0x0000000)
-#define CMA_MB_RAM_SIZE                0x2000000       /* dip sws set actual size */
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT1)
-#define CMA_MB_SLOT1_BASE      (CONFIG_SYS_CMA_MB_BASE+0x2000000)
-#define CMA_MB_SLOT1_SIZE      0x2000000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
-#define CMA_MB_SLOT2_BASE      (CONFIG_SYS_CMA_MB_BASE+0x4000000)
-#define CMA_MB_SLOT2_SIZE      0x2000000
-#endif
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-#define CMA_MB_STDPCI_BASE     (CONFIG_SYS_CMA_MB_BASE+0x4000000)
-#define CMA_MB_STDPCI_SIZE     0x1ff0000
-#define CMA_MB_V360EPC_BASE    (CONFIG_SYS_CMA_MB_BASE+0x5ff0000)
-#define CMA_MB_V360EPC_SIZE    0x10000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
-#define CMA_MB_SLOT3_BASE      (CONFIG_SYS_CMA_MB_BASE+0x6000000)
-#define CMA_MB_SLOT3_SIZE      0x2000000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI_EXT)
-#define CMA_MB_EXTPCI_BASE     (CONFIG_SYS_CMA_MB_BASE+0xa000000)
-#define CMA_MB_EXTPCI_SIZE     0x4000000
-#endif
-
-#define CMA_MB_ROMLOW_BASE     (CONFIG_SYS_CMA_MB_BASE+0xe000000)
-#define CMA_MB_ROMLOW_SIZE     0x800000
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-#define CMA_MB_FLLOW_EXEC_BASE (CONFIG_SYS_CMA_MB_BASE+0xe000000)
-#define CMA_MB_FLLOW_EXEC_SIZE 0x100000
-#define CMA_MB_FLLOW_RDWR_BASE (CONFIG_SYS_CMA_MB_BASE+0xe400000)
-#define CMA_MB_FLLOW_RDWR_SIZE 0x400000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
-#define CMA_MB_RTC_BASE                (CONFIG_SYS_CMA_MB_BASE+0xe800000)
-#define CMA_MB_RTC_SIZE                0x4000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
-#define CMA_MB_SERPAR_BASE     (CONFIG_SYS_CMA_MB_BASE+0xe900000)
-#define   CMA_MB_SERIALB_BASE    (CMA_MB_SERPAR_BASE+0x00)
-#define   CMA_MB_SERIALA_BASE    (CMA_MB_SERPAR_BASE+0x40)
-#define   CMA_MB_PARALLEL_BASE   (CMA_MB_SERPAR_BASE+0x80)
-#define CMA_MB_SERPAR_SIZE     0xa0
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_KBM)
-#define CMA_MB_PKBM_BASE       (CONFIG_SYS_CMA_MB_BASE+0xe900100)
-#define CMA_MB_PKBM_SIZE       0x10
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
-#define CMA_MB_LCD_BASE                (CONFIG_SYS_CMA_MB_BASE+0xeb00000)
-#define CMA_MB_LCD_SIZE                0x10
-#endif
-
-#define CMA_MB_DIPSW_BASE      (CONFIG_SYS_CMA_MB_BASE+0xec00000)
-#define CMA_MB_DIPSW_SIZE      0x10
-
-#if (CMA_MB_CAPS & (CMA_MB_CAP_SLOT1|CMA_MB_CAP_SER2|CMA_MB_CAP_KBM))
-#define CMA_MB_SLOT1CFG_BASE   (CONFIG_SYS_CMA_MB_BASE+0xf100000)
-#if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define   CMA_MB_SER2_BASE       (CMA_MB_SLOT1CFG_BASE+0x80)
-#define     CMA_MB_SER2B_BASE      (CMA_MB_SER2_BASE+0x00)
-#define     CMA_MB_SER2A_BASE      (CMA_MB_SER2_BASE+0x40)
-#endif
-#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT1)
-#define   CMA_MB_S1KBM_BASE      (CMA_MB_SLOT1CFG_BASE+0x200)
-#endif
-#if (CMA_MB_CAPS & CMA_MB_CAP_KBM) && !defined(COGENT_CMA150)
-#define   CMA_MB_IREQ1STAT_BASE          (CMA_MB_SLOT1CFG_BASE+0x100)
-#define   CMA_MB_AKBM_BASE       (CMA_MB_SLOT1CFG_BASE+0x200)
-#define   CMA_MB_IREQ1MASK_BASE          (CMA_MB_SLOT1CFG_BASE+0x300)
-#endif
-#define CMA_MB_SLOT1CFG_SIZE   0x400
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
-#define CMA_MB_SLOT2CFG_BASE   (CONFIG_SYS_CMA_MB_BASE+0xf200000)
-#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT2)
-#define   CMA_MB_S2KBM_BASE      (CMA_MB_SLOT2CFG_BASE+0x200)
-#endif
-#define CMA_MB_SLOT2CFG_SIZE   0x400
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-#define CMA_MB_PCICTL_BASE     (CONFIG_SYS_CMA_MB_BASE+0xf200000)
-#define   CMA_MB_PCI_V3CTL_BASE          (CMA_MB_PCICTL_BASE+0x100)
-#define   CMA_MB_PCI_IDSEL_BASE          (CMA_MB_PCICTL_BASE+0x200)
-#define   CMA_MB_PCI_IMASK_BASE          (CMA_MB_PCICTL_BASE+0x300)
-#define   CMA_MB_PCI_ISTAT_BASE          (CMA_MB_PCICTL_BASE+0x400)
-#define   CMA_MB_PCI_MBID_BASE   (CMA_MB_PCICTL_BASE+0x500)
-#define   CMA_MB_PCI_MBREV_BASE          (CMA_MB_PCICTL_BASE+0x600)
-#define CMA_MB_PCICTL_SIZE     0x700
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
-#define CMA_MB_SLOT3CFG_BASE   (CONFIG_SYS_CMA_MB_BASE+0xf300000)
-#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT3)
-#define   CMA_MB_S3KBM_BASE      (CMA_MB_SLOT3CFG_BASE+0x200)
-#endif
-#define CMA_MB_SLOT3CFG_SIZE   0x400
-#endif
-
-#define CMA_MB_ROMHIGH_BASE    (CONFIG_SYS_CMA_MB_BASE+0xf800000)
-#define CMA_MB_ROMHIGH_SIZE    0x800000
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-#define CMA_MB_FLHIGH_EXEC_BASE        (CONFIG_SYS_CMA_MB_BASE+0xf800000)
-#define CMA_MB_FLHIGH_EXEC_SIZE        0x100000
-#define CMA_MB_FLHIGH_RDWR_BASE        (CONFIG_SYS_CMA_MB_BASE+0xfc00000)
-#define CMA_MB_FLHIGH_RDWR_SIZE        0x400000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-
-/* PCI Control Register bits */
-
-/* V360EPC Control register bits */
-#define CMA_MB_PCI_V3CTL_RESET 0x01
-#define CMA_MB_PCI_V3CTL_EXTADD        0x08
-
-/* PCI ID Select register bits */
-#define CMA_MB_PCI_IDSEL_SLOTA 0x01
-#define CMA_MB_PCI_IDSEL_SLOTB 0x02
-#define CMA_MB_PCI_IDSEL_GD82559 0x04
-#define CMA_MB_PCI_IDSEL_B69000        0x08
-#define CMA_MB_PCI_IDSEL_PD6832        0x10
-
-/* PCI Interrupt Mask/Status register bits */
-#define CMA_MB_PCI_IMS_INTA    0x01
-#define CMA_MB_PCI_IMS_INTB    0x02
-#define CMA_MB_PCI_IMS_INTC    0x04
-#define CMA_MB_PCI_IMS_INTD    0x08
-#define CMA_MB_PCI_IMS_CBINT   0x10
-#define CMA_MB_PCI_IMS_V3LINT  0x80
-
-#endif
-
-#if (CMA_MB_CAPS & (CMA_MB_CAP_KBM|CMA_MB_CAP_SER2)) && !defined(COGENT_CMA150)
-
-/*
- * IREQ1 Interrupt Mask/Status register bits
- * (Note: not available on CMA150 - must poll HT6542B interrupt register)
- */
-
-#define IREQ1_MINT     0x01
-#define IREQ1_KINT     0x02
-#if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define IREQ1_SINT2    0x04
-#define IREQ1_SINT3    0x08
-#endif
-
-#endif
-
-#ifndef __ASSEMBLY__
-
-#ifdef USE_HOSTCC
-#include <endian.h>            /* avoid using private kernel header files */
-#else
-#include <asm/byteorder.h>     /* use U-Boot provided headers */
-#endif
-
-/* a single CMA10x motherboard i/o register */
-typedef
-    struct {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-       unsigned char value;
-#endif
-       unsigned char filler[7];
-#if __BYTE_ORDER == __BIG_ENDIAN
-       unsigned char value;
-#endif
-    }
-cma_mb_reg;
-
-extern __inline__ unsigned char
-cma_mb_reg_read(volatile cma_mb_reg *reg)
-{
-    unsigned char data = reg->value;
-    __asm__ __volatile__ ("eieio" : : : "memory");
-    return data;
-}
-
-extern __inline__ void
-cma_mb_reg_write(volatile cma_mb_reg *reg, unsigned char data)
-{
-    reg->value = data;
-    __asm__ __volatile__ ("eieio" : : : "memory");
-}
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
-
-/* MK48T02 RTC registers */
-typedef
-    struct {
-       cma_mb_reg sram[2040];/* Battery-Backed SRAM */
-       cma_mb_reg clk_ctl;     /* Clock Control Register */
-       cma_mb_reg clk_sec;     /* Clock Seconds Register */
-       cma_mb_reg clk_min;     /* Clock Minutes Register */
-       cma_mb_reg clk_hour;    /* Clock Hour Register */
-       cma_mb_reg clk_day;     /* Clock Day Register */
-       cma_mb_reg clk_date;    /* Clock Date Register */
-       cma_mb_reg clk_month;   /* Clock Month Register */
-       cma_mb_reg clk_year;    /* Clock Year Register */
-    }
-cma_mb_rtc;
-
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
-
-/* ST16C522 Serial I/O */
-typedef
-    struct {
-       cma_mb_reg ser_rhr;     /* Receive Holding Register (R, DLAB=0) */
-       cma_mb_reg ser_ier;     /* Interrupt Enable Register (R/W, DLAB=0) */
-       cma_mb_reg ser_isr;     /* Interrupt Status Register (R) */
-       cma_mb_reg ser_lcr;     /* Line Control Register (R/W) */
-       cma_mb_reg ser_mcr;     /* Modem Control Register (R/W) */
-       cma_mb_reg ser_lsr;     /* Line Status Register (R) */
-       cma_mb_reg ser_msr;     /* Modem Status Register (R/W) */
-       cma_mb_reg ser_spr;     /* Scratch Pad Register (R/W) */
-    }
-cma_mb_serial;
-
-#define ser_thr        ser_rhr         /* Transmit Holding Register (W, DLAB=0) */
-#define ser_brl        ser_rhr         /* Baud Rate Divisor Low Byte (R/W, DLAB=1) */
-#define ser_brh        ser_ier         /* Baud Rate Divisor High Byte (R/W, DLAB=1) */
-#define ser_fcr        ser_isr         /* FIFO Control Register (W) */
-#define ser_nop        ser_lsr         /* No Operation (W) */
-
-/* ST16C522 Parallel I/O */
-typedef
-    struct {
-       cma_mb_reg par_rdr;     /* Port Read Data Register (R) */
-       cma_mb_reg par_sr;      /* Status Register (R) */
-       cma_mb_reg par_cmd;     /* Command Register (R) */
-    }
-cma_mb_parallel;
-
-#define par_wdr        par_rdr         /* Port Write Data Register (W) */
-#define par_ios        par_sr          /* I/O Select Register (W) */
-#define par_ctl        par_cmd         /* Control Register (W) */
-
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_KBM) || defined(CONFIG_CMA302)
-
-/* HT6542B PS/2 Keyboard/Mouse Controller */
-typedef
-    struct {
-       cma_mb_reg kbm_rdr;     /* Read Data Register (R) */
-       cma_mb_reg kbm_sr;      /* Status Register (R) */
-    }
-cma_mb_kbm;
-
-#define kbm_wdr        kbm_rdr         /* Write Data Register (W) */
-#define kbm_cmd        kbm_sr          /* Command Register (W) */
-
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
-
-/* HD44780 LCD Display */
-typedef
-    struct {
-       cma_mb_reg lcd_ccr;     /* Current Character Register (R/W) */
-       cma_mb_reg lcd_bsr;     /* Busy Status Register (R) */
-    }
-cma_mb_lcd;
-
-#define lcd_cmd        lcd_bsr         /* Command Register (W) */
-
-#endif
-
-/* 8-Position Configuration Switch */
-typedef
-    struct {
-       cma_mb_reg dip_val;     /* Dip Switch value (R) */
-    }
-cma_mb_dipsw;
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-
-/* V360EPC PCI Bridge */
-typedef
-    struct {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-       unsigned short v3_pci_vendor;           /* 0x00 */
-       unsigned short v3_pci_device;
-       unsigned short v3_pci_cmd;              /* 0x04 */
-       unsigned short v3_pci_stat;
-       unsigned long  v3_pci_cc_rev;           /* 0x08 */
-       unsigned long  v3_pci_hdr_cfg;          /* 0x0c */
-       unsigned long  v3_pci_io_base;          /* 0x10 */
-       unsigned long  v3_pci_base0;            /* 0x14 */
-       unsigned long  v3_pci_base1;            /* 0x18 */
-       unsigned long  reserved1[4];            /* 0x1c */
-       unsigned short v3_pci_sub_vendor;       /* 0x2c */
-       unsigned short v3_pci_sub_id;
-       unsigned long  v3_pci_rom;              /* 0x30 */
-       unsigned long  reserved2[2];            /* 0x34 */
-       unsigned long  v3_pci_bparam;           /* 0x3c */
-       unsigned long  v3_pci_map0;             /* 0x40 */
-       unsigned long  v3_pci_map1;             /* 0x44 */
-       unsigned long  v3_pci_int_stat;         /* 0x48 */
-       unsigned long  v3_pci_int_cfg;          /* 0x4c */
-       unsigned long  reserved3[1];            /* 0x50 */
-       unsigned long  v3_lb_base0;             /* 0x54 */
-       unsigned long  v3_lb_base1;             /* 0x58 */
-       unsigned short reserved4;               /* 0x5c */
-       unsigned short v3_lb_map0;
-       unsigned short reserved5;               /* 0x60 */
-       unsigned short v3_lb_map1;
-       unsigned short v3_lb_base2;             /* 0x64 */
-       unsigned short v3_lb_map2;
-       unsigned long  v3_lb_size;              /* 0x68 */
-       unsigned short reserved6;               /* 0x6c */
-       unsigned short v3_lb_io_base;
-       unsigned short v3_fifo_cfg;             /* 0x70 */
-       unsigned short v3_fifo_priority;
-       unsigned short v3_fifo_stat;            /* 0x74 */
-       unsigned char  v3_lb_istat;
-       unsigned char  v3_lb_imask;
-       unsigned short v3_system;               /* 0x78 */
-       unsigned short v3_lb_cfg;
-       unsigned short v3_pci_cfg;              /* 0x7c */
-       unsigned short reserved7;
-       unsigned long  v3_dma_pci_addr0;        /* 0x80 */
-       unsigned long  v3_dma_local_addr0;      /* 0x84 */
-       unsigned long  v3_dma_length0:24;       /* 0x88 */
-       unsigned long  v3_dma_csr0:8;
-       unsigned long  v3_dma_ctlb_adr0;        /* 0x8c */
-       unsigned long  v3_dma_pci_addr1;        /* 0x90 */
-       unsigned long  v3_dma_local_addr1;      /* 0x94 */
-       unsigned long  v3_dma_length1:24;       /* 0x98 */
-       unsigned long  v3_dma_csr1:8;
-       unsigned long  v3_dma_ctlb_adr1;        /* 0x9c */
-       unsigned long  v3_i20_mups[8];          /* 0xa0 */
-       unsigned char  v3_mail_data0;           /* 0xc0 */
-       unsigned char  v3_mail_data1;
-       unsigned char  v3_mail_data2;
-       unsigned char  v3_mail_data3;
-       unsigned char  v3_mail_data4;           /* 0xc4 */
-       unsigned char  v3_mail_data5;
-       unsigned char  v3_mail_data6;
-       unsigned char  v3_mail_data7;
-       unsigned char  v3_mail_data8;           /* 0xc8 */
-       unsigned char  v3_mail_data9;
-       unsigned char  v3_mail_data10;
-       unsigned char  v3_mail_data11;
-       unsigned char  v3_mail_data12;          /* 0xcc */
-       unsigned char  v3_mail_data13;
-       unsigned char  v3_mail_data14;
-       unsigned char  v3_mail_data15;
-       unsigned short v3_pci_mail_iewr;        /* 0xd0 */
-       unsigned short v3_pci_mail_ierd;
-       unsigned short v3_lb_mail_iewr;         /* 0xd4 */
-       unsigned short v3_lb_mail_ierd;
-       unsigned short v3_mail_wr_stat;         /* 0xd8 */
-       unsigned short v3_mail_rd_stat;
-       unsigned long  v3_qba_map;              /* 0xdc */
-       unsigned long  v3_dma_delay:8;          /* 0xe0 */
-       unsigned long  reserved8:24;
-       unsigned long  reserved9[7];            /* 0xe4 */
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-       unsigned short v3_pci_device;           /* 0x00 */
-       unsigned short v3_pci_vendor;
-       unsigned short v3_pci_stat;             /* 0x04 */
-       unsigned short v3_pci_cmd;
-       unsigned long  v3_pci_cc_rev;           /* 0x08 */
-       unsigned long  v3_pci_hdr_cfg;          /* 0x0c */
-       unsigned long  v3_pci_io_base;          /* 0x10 */
-       unsigned long  v3_pci_base0;            /* 0x14 */
-       unsigned long  v3_pci_base1;            /* 0x18 */
-       unsigned long  reserved1[4];            /* 0x1c */
-       unsigned short v3_pci_sub_id;           /* 0x2c */
-       unsigned short v3_pci_sub_vendor;
-       unsigned long  v3_pci_rom;              /* 0x30 */
-       unsigned long  reserved2[2];            /* 0x34 */
-       unsigned long  v3_pci_bparam;           /* 0x3c */
-       unsigned long  v3_pci_map0;             /* 0x40 */
-       unsigned long  v3_pci_map1;             /* 0x44 */
-       unsigned long  v3_pci_int_stat;         /* 0x48 */
-       unsigned long  v3_pci_int_cfg;          /* 0x4c */
-       unsigned long  reserved3;               /* 0x50 */
-       unsigned long  v3_lb_base0;             /* 0x54 */
-       unsigned long  v3_lb_base1;             /* 0x58 */
-       unsigned short v3_lb_map0;              /* 0x5c */
-       unsigned short reserved4;
-       unsigned short v3_lb_map1;              /* 0x60 */
-       unsigned short reserved5;
-       unsigned short v3_lb_map2;              /* 0x64 */
-       unsigned short v3_lb_base2;
-       unsigned long  v3_lb_size;              /* 0x68 */
-       unsigned short v3_lb_io_base;           /* 0x6c */
-       unsigned short reserved6;
-       unsigned short v3_fifo_priority;        /* 0x70 */
-       unsigned short v3_fifo_cfg;
-       unsigned char  v3_lb_imask;             /* 0x74 */
-       unsigned char  v3_lb_istat;
-       unsigned short v3_fifo_stat;
-       unsigned short v3_lb_cfg;               /* 0x78 */
-       unsigned short v3_system;
-       unsigned short reserved7;               /* 0x7c */
-       unsigned short v3_pci_cfg;
-       unsigned long  v3_dma_pci_addr0;        /* 0x80 */
-       unsigned long  v3_dma_local_addr0;      /* 0x84 */
-       unsigned long  v3_dma_csr0:8;           /* 0x88 */
-       unsigned long  v3_dma_length0:24;
-       unsigned long  v3_dma_ctlb_adr0;        /* 0x8c */
-       unsigned long  v3_dma_pci_addr1;        /* 0x90 */
-       unsigned long  v3_dma_local_addr1;      /* 0x94 */
-       unsigned long  v3_dma_csr1:8;           /* 0x98 */
-       unsigned long  v3_dma_length1:24;
-       unsigned long  v3_dma_ctlb_adr1;        /* 0x9c */
-       unsigned long  v3_i20_mups[8];          /* 0xa0 */
-       unsigned char  v3_mail_data3;           /* 0xc0 */
-       unsigned char  v3_mail_data2;
-       unsigned char  v3_mail_data1;
-       unsigned char  v3_mail_data0;
-       unsigned char  v3_mail_data7;           /* 0xc4 */
-       unsigned char  v3_mail_data6;
-       unsigned char  v3_mail_data5;
-       unsigned char  v3_mail_data4;
-       unsigned char  v3_mail_data11;          /* 0xc8 */
-       unsigned char  v3_mail_data10;
-       unsigned char  v3_mail_data9;
-       unsigned char  v3_mail_data8;
-       unsigned char  v3_mail_data15;          /* 0xcc */
-       unsigned char  v3_mail_data14;
-       unsigned char  v3_mail_data13;
-       unsigned char  v3_mail_data12;
-       unsigned short v3_pci_mail_ierd;        /* 0xd0 */
-       unsigned short v3_pci_mail_iewr;
-       unsigned short v3_lb_mail_ierd;         /* 0xd4 */
-       unsigned short v3_lb_mail_iewr;
-       unsigned short v3_mail_rd_stat;         /* 0xd8 */
-       unsigned short v3_mail_wr_stat;
-       unsigned long  v3_qba_map;              /* 0xdc */
-       unsigned long  reserved8:24;            /* 0xe0 */
-       unsigned long  v3_dma_delay:8;
-       unsigned long  reserved9[7];            /* 0xe4 */
-#endif
-    }                                          /* 0x100 */
-cma_mb_v360epc;
-
-#endif
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _COGENT_MB_H */
diff --git a/board/cogent/par.c b/board/cogent/par.c
deleted file mode 100644 (file)
index a03c0f1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* parallel not implemented yet */
-
-int cma_parallel_not_implemented = 1;
diff --git a/board/cogent/par.h b/board/cogent/par.h
deleted file mode 100644 (file)
index 664ae4a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* parallel not implemented yet */
-
-extern int cma_parallel_not_implemented;
diff --git a/board/cogent/pci.c b/board/cogent/pci.c
deleted file mode 100644 (file)
index 0a57c0c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* pci not implemented yet */
-
-int cma_pci_not_implemented = 1;
diff --git a/board/cogent/pci.h b/board/cogent/pci.h
deleted file mode 100644 (file)
index 35aa354..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* pci not implemented yet */
-
-extern int cma_pci_not_implemented;
diff --git a/board/cogent/rtc.c b/board/cogent/rtc.c
deleted file mode 100644 (file)
index ace9193..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* rtc not implemented yet */
-
-int cma_rtc_not_implemented = 1;
diff --git a/board/cogent/rtc.h b/board/cogent/rtc.h
deleted file mode 100644 (file)
index 4b55bd2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* rtc not implemented yet */
-
-extern int cma_rtc_not_implemented;
diff --git a/board/cogent/serial.c b/board/cogent/serial.c
deleted file mode 100644 (file)
index 95c8120..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Simple serial driver for Cogent motherboard serial ports
- * for use during boot
- */
-
-#include <common.h>
-#include "serial.h"
-#include <serial.h>
-#include <linux/compiler.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
-
-#if (defined(CONFIG_8xx) && defined(CONFIG_8xx_CONS_NONE)) || \
-       (defined(CONFIG_MPC8260) && defined(CONFIG_CONS_NONE))
-
-#if CONFIG_CONS_INDEX == 1
-#define CMA_MB_SERIAL_BASE     CMA_MB_SERIALA_BASE
-#elif CONFIG_CONS_INDEX == 2
-#define CMA_MB_SERIAL_BASE     CMA_MB_SERIALB_BASE
-#elif CONFIG_CONS_INDEX == 3 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_SERIAL_BASE     CMA_MB_SER2A_BASE
-#elif CONFIG_CONS_INDEX == 4 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_SERIAL_BASE     CMA_MB_SER2B_BASE
-#else
-#error CONFIG_CONS_INDEX must be configured for Cogent motherboard serial
-#endif
-
-static int cogent_serial_init(void)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
-       cma_mb_reg_write (&mbsp->ser_ier, 0x00);        /* turn off interrupts */
-       serial_setbrg ();
-       cma_mb_reg_write (&mbsp->ser_lcr, 0x03);        /* 8 data, 1 stop, no parity */
-       cma_mb_reg_write (&mbsp->ser_mcr, 0x03);        /* RTS/DTR */
-       cma_mb_reg_write (&mbsp->ser_fcr, 0x07);        /* Clear & enable FIFOs */
-
-       return (0);
-}
-
-static void cogent_serial_setbrg(void)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-       unsigned int divisor;
-       unsigned char lcr;
-
-       if ((divisor = br_to_div (gd->baudrate)) == 0)
-               divisor = DEFDIV;
-
-       lcr = cma_mb_reg_read (&mbsp->ser_lcr);
-       cma_mb_reg_write (&mbsp->ser_lcr, lcr | 0x80);  /* Access baud rate(set DLAB) */
-       cma_mb_reg_write (&mbsp->ser_brl, divisor & 0xff);
-       cma_mb_reg_write (&mbsp->ser_brh, (divisor >> 8) & 0xff);
-       cma_mb_reg_write (&mbsp->ser_lcr, lcr); /* unset DLAB */
-}
-
-static void cogent_serial_putc(const char c)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
-       if (c == '\n')
-               serial_putc ('\r');
-
-       while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_THRE) == 0);
-
-       cma_mb_reg_write (&mbsp->ser_thr, c);
-}
-
-static int cogent_serial_getc(void)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
-       while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_DR) == 0);
-
-       return ((int) cma_mb_reg_read (&mbsp->ser_rhr) & 0x7f);
-}
-
-static int cogent_serial_tstc(void)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
-       return ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_DR) != 0);
-}
-
-static struct serial_device cogent_serial_drv = {
-       .name   = "cogent_serial",
-       .start  = cogent_serial_init,
-       .stop   = NULL,
-       .setbrg = cogent_serial_setbrg,
-       .putc   = cogent_serial_putc,
-       .puts   = default_serial_puts,
-       .getc   = cogent_serial_getc,
-       .tstc   = cogent_serial_tstc,
-};
-
-void cogent_serial_initialize(void)
-{
-       serial_register(&cogent_serial_drv);
-}
-
-__weak struct serial_device *default_serial_console(void)
-{
-       return &cogent_serial_drv;
-}
-#endif /* CONS_NONE */
-
-#if defined(CONFIG_CMD_KGDB) && \
-    defined(CONFIG_KGDB_NONE)
-
-#if CONFIG_KGDB_INDEX == CONFIG_CONS_INDEX
-#error Console and kgdb are on the same serial port - this is not supported
-#endif
-
-#if CONFIG_KGDB_INDEX == 1
-#define CMA_MB_KGDB_SER_BASE   CMA_MB_SERIALA_BASE
-#elif CONFIG_KGDB_INDEX == 2
-#define CMA_MB_KGDB_SER_BASE   CMA_MB_SERIALB_BASE
-#elif CONFIG_KGDB_INDEX == 3 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_KGDB_SER_BASE   CMA_MB_SER2A_BASE
-#elif CONFIG_KGDB_INDEX == 4 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_KGDB_SER_BASE   CMA_MB_SER2B_BASE
-#else
-#error CONFIG_KGDB_INDEX must be configured for Cogent motherboard serial
-#endif
-
-void kgdb_serial_init (void)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
-       unsigned int divisor;
-
-       if ((divisor = br_to_div (CONFIG_KGDB_BAUDRATE)) == 0)
-               divisor = DEFDIV;
-
-       cma_mb_reg_write (&mbsp->ser_ier, 0x00);        /* turn off interrupts */
-       cma_mb_reg_write (&mbsp->ser_lcr, 0x80);        /* Access baud rate(set DLAB) */
-       cma_mb_reg_write (&mbsp->ser_brl, divisor & 0xff);
-       cma_mb_reg_write (&mbsp->ser_brh, (divisor >> 8) & 0xff);
-       cma_mb_reg_write (&mbsp->ser_lcr, 0x03);        /* 8 data, 1 stop, no parity */
-       cma_mb_reg_write (&mbsp->ser_mcr, 0x03);        /* RTS/DTR */
-       cma_mb_reg_write (&mbsp->ser_fcr, 0x07);        /* Clear & enable FIFOs */
-
-       printf ("[on cma10x serial port B] ");
-}
-
-void putDebugChar (int c)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
-
-       while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_THRE) == 0);
-
-       cma_mb_reg_write (&mbsp->ser_thr, c & 0xff);
-}
-
-void putDebugStr (const char *str)
-{
-       while (*str != '\0') {
-               if (*str == '\n')
-                       putDebugChar ('\r');
-               putDebugChar (*str++);
-       }
-}
-
-int getDebugChar (void)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
-
-       while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_DR) == 0);
-
-       return ((int) cma_mb_reg_read (&mbsp->ser_rhr) & 0x7f);
-}
-
-void kgdb_interruptible (int yes)
-{
-       cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
-
-       if (yes == 1) {
-               printf ("kgdb: turning serial ints on\n");
-               cma_mb_reg_write (&mbsp->ser_ier, 0xf);
-       } else {
-               printf ("kgdb: turning serial ints off\n");
-               cma_mb_reg_write (&mbsp->ser_ier, 0x0);
-       }
-}
-
-#endif /* KGDB && KGDB_NONE */
-
-#endif /* CAPS & SERPAR */
diff --git a/board/cogent/serial.h b/board/cogent/serial.h
deleted file mode 100644 (file)
index 89962d8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Line Status Register bits */
-#define LSR_DR         0x01    /* Data ready */
-#define LSR_OE         0x02    /* Overrun */
-#define LSR_PE         0x04    /* Parity error */
-#define LSR_FE         0x08    /* Framing error */
-#define LSR_BI         0x10    /* Break */
-#define LSR_THRE       0x20    /* Xmit holding register empty */
-#define LSR_TEMT       0x40    /* Xmitter empty */
-#define LSR_ERR                0x80    /* Error */
-
-#define CLKRATE                3686400 /* cogent motherboard serial clk = 3.6864MHz */
-#define DEFDIV         1       /* default to 230400 bps */
-
-#define br_to_div(br)  (CLKRATE / (16 * (br)))
-#define div_to_br(div) (CLKRATE / (16 * (div)))
diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds
deleted file mode 100644 (file)
index 4c63ff2..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-#ifdef CONFIG_MPC8260
-    arch/powerpc/cpu/mpc8260/start.o   (.text*)
-#else
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-#endif
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/cogent/u-boot.lds.debug b/board/cogent/u-boot.lds.debug
deleted file mode 100644 (file)
index b9c84c7..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    common/dlmalloc.o  (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 2b826dffc5598d491efab6d7b2ce5fb9555d8462..9d4c41b00b34b524471b18c7c59d62a59e2d8b50 100644 (file)
@@ -133,6 +133,11 @@ int board_mmc_init(bd_t *bis)
 {
        return omap_mmc_init(0, 0, 0, -1, -1);
 }
+
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
 #endif
 
 #ifdef CONFIG_CMD_NET
index 82681b10eb8cef4d92f80a751ad99a2360271a37..84e36439fa18ddf10040043f63abd2fba478562f 100644 (file)
@@ -31,12 +31,12 @@ DECLARE_GLOBAL_DATA_PTR;
 #ifdef CONFIG_DWC_AHSATA
 static int cm_fx6_issd_gpios[] = {
        /* The order of the GPIOs in the array is important! */
+       CM_FX6_SATA_LDO_EN,
        CM_FX6_SATA_PHY_SLP,
        CM_FX6_SATA_NRSTDLY,
        CM_FX6_SATA_PWREN,
        CM_FX6_SATA_NSTANDBY1,
        CM_FX6_SATA_NSTANDBY2,
-       CM_FX6_SATA_LDO_EN,
 };
 
 static void cm_fx6_sata_power(int on)
@@ -98,9 +98,6 @@ int sata_initialize(void)
        /* Make sure this gpio has logical 0 value */
        gpio_direction_output(CM_FX6_SATA_PWLOSS_INT, 0);
        udelay(100);
-
-       cm_fx6_sata_power(0);
-       mdelay(250);
        cm_fx6_sata_power(1);
 
        for (i = 0; i < CM_FX6_SATA_INIT_RETRIES; i++) {
@@ -125,6 +122,15 @@ int sata_initialize(void)
 
        return err;
 }
+
+int sata_stop(void)
+{
+       __sata_stop();
+       cm_fx6_sata_power(0);
+       mdelay(250);
+
+       return 0;
+}
 #else
 static int cm_fx6_setup_issd(void) { return 0; }
 #endif
@@ -452,7 +458,7 @@ int cm_fx6_setup_ecspi(void) { return 0; }
 #endif
 
 #ifdef CONFIG_OF_BOARD_SETUP
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        uint8_t enetaddr[6];
 
@@ -461,6 +467,8 @@ void ft_board_setup(void *blob, bd_t *bd)
                fdt_find_and_setprop(blob, "/fec", "local-mac-address",
                                     enetaddr, 6, 1);
        }
+
+       return 0;
 }
 #endif
 
index 3948ba23ae9e4267bfaa7b3d6f59aeb5b894c1ac..6fe937b4180fba98add32988d9820cc73d96680f 100644 (file)
@@ -235,10 +235,11 @@ static int cm_fx6_spl_dram_init(void)
 
                spl_mx6s_dram_init(DDR_32BIT_1GB, false);
                bank1_size = get_ram_size((long int *)PHYS_SDRAM_1, 0x80000000);
-               if (bank1_size == 0x40000000)
-                       return 0;
-
+               bank2_size = get_ram_size((long int *)PHYS_SDRAM_2, 0x80000000);
                if (bank1_size == 0x20000000) {
+                       if (bank2_size == 0x20000000)
+                               return 0;
+
                        spl_mx6s_dram_init(DDR_32BIT_512MB, true);
                        return 0;
                }
index d0b0930f423ad633cce8aee1cd05a5ee032de64c..43463d5b4701cf0220049e3f82e34f47d40e608e 100644 (file)
 #include <i2c.h>
 #include <usb.h>
 #include <mmc.h>
-#include <nand.h>
 #include <twl4030.h>
-#include <bmp_layout.h>
 #include <linux/compiler.h>
 
 #include <asm/io.h>
+#include <asm/errno.h>
 #include <asm/arch/mem.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/mmc_host_def.h>
@@ -33,6 +32,7 @@
 #include <asm/ehci-omap.h>
 #include <asm/gpio.h>
 
+#include "../common/common.h"
 #include "../common/eeprom.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -43,58 +43,6 @@ const omap3_sysinfo sysinfo = {
        "NAND",
 };
 
-static u32 gpmc_net_config[GPMC_MAX_REG] = {
-       NET_GPMC_CONFIG1,
-       NET_GPMC_CONFIG2,
-       NET_GPMC_CONFIG3,
-       NET_GPMC_CONFIG4,
-       NET_GPMC_CONFIG5,
-       NET_GPMC_CONFIG6,
-       0
-};
-
-#ifdef CONFIG_LCD
-#ifdef CONFIG_CMD_NAND
-static int splash_load_from_nand(u32 bmp_load_addr)
-{
-       struct bmp_header *bmp_hdr;
-       int res, splash_screen_nand_offset = 0x100000;
-       size_t bmp_size, bmp_header_size = sizeof(struct bmp_header);
-
-       if (bmp_load_addr + bmp_header_size >= gd->start_addr_sp)
-               goto splash_address_too_high;
-
-       res = nand_read_skip_bad(&nand_info[nand_curr_device],
-                       splash_screen_nand_offset, &bmp_header_size,
-                       NULL, nand_info[nand_curr_device].size,
-                       (u_char *)bmp_load_addr);
-       if (res < 0)
-               return res;
-
-       bmp_hdr = (struct bmp_header *)bmp_load_addr;
-       bmp_size = le32_to_cpu(bmp_hdr->file_size);
-
-       if (bmp_load_addr + bmp_size >= gd->start_addr_sp)
-               goto splash_address_too_high;
-
-       return nand_read_skip_bad(&nand_info[nand_curr_device],
-                       splash_screen_nand_offset, &bmp_size,
-                       NULL, nand_info[nand_curr_device].size,
-                       (u_char *)bmp_load_addr);
-
-splash_address_too_high:
-       printf("Error: splashimage address too high. Data overwrites U-Boot "
-               "and/or placed beyond DRAM boundaries.\n");
-
-       return -1;
-}
-#else
-static inline int splash_load_from_nand(void)
-{
-       return -1;
-}
-#endif /* CONFIG_CMD_NAND */
-
 #ifdef CONFIG_SPL_BUILD
 /*
  * Routine: get_board_mem_timings
@@ -111,24 +59,12 @@ void get_board_mem_timings(struct board_sdrc_timings *timings)
 }
 #endif
 
+#define CM_T35_SPLASH_NAND_OFFSET 0x100000
+
 int splash_screen_prepare(void)
 {
-       char *env_splashimage_value;
-       u32 bmp_load_addr;
-
-       env_splashimage_value = getenv("splashimage");
-       if (env_splashimage_value == NULL)
-               return -1;
-
-       bmp_load_addr = simple_strtoul(env_splashimage_value, 0, 16);
-       if (bmp_load_addr == 0) {
-               printf("Error: bad splashimage address specified\n");
-               return -1;
-       }
-
-       return splash_load_from_nand(bmp_load_addr);
+       return cl_splash_screen_prepare(CM_T35_SPLASH_NAND_OFFSET);
 }
-#endif /* CONFIG_LCD */
 
 /*
  * Routine: board_init
@@ -154,34 +90,18 @@ int board_init(void)
        return 0;
 }
 
-static u32 cm_t3x_rev;
-
 /*
  * Routine: get_board_rev
  * Description: read system revision
  */
 u32 get_board_rev(void)
 {
-       if (!cm_t3x_rev)
-               cm_t3x_rev = cl_eeprom_get_board_rev();
-
-       return cm_t3x_rev;
+       return cl_eeprom_get_board_rev();
 };
 
-/*
- * Routine: misc_init_r
- * Description: display die ID
- */
 int misc_init_r(void)
 {
-       u32 board_rev = get_board_rev();
-       u32 rev_major = board_rev / 100;
-       u32 rev_minor = board_rev - (rev_major * 100);
-
-       if ((rev_minor / 10) * 10 == rev_minor)
-               rev_minor = rev_minor / 10;
-
-       printf("PCB:   %u.%u\n", rev_major, rev_minor);
+       cl_print_pcb_info();
        dieid_num_r();
 
        return 0;
@@ -462,37 +382,19 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
-/*
- * Routine: setup_net_chip_gmpc
- * Description: Setting up the configuration GPMC registers specific to the
- *             Ethernet hardware.
- */
-static void setup_net_chip_gmpc(void)
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
 {
-       struct ctrl *ctrl_base = (struct ctrl *)OMAP34XX_CTRL_BASE;
-
-       enable_gpmc_cs_config(gpmc_net_config, &gpmc_cfg->cs[5],
-                             CM_T3X_SMC911X_BASE, GPMC_SIZE_16M);
-       enable_gpmc_cs_config(gpmc_net_config, &gpmc_cfg->cs[4],
-                             SB_T35_SMC911X_BASE, GPMC_SIZE_16M);
-
-       /* Enable off mode for NWE in PADCONF_GPMC_NWE register */
-       writew(readw(&ctrl_base->gpmc_nwe) | 0x0E00, &ctrl_base->gpmc_nwe);
-
-       /* Enable off mode for NOE in PADCONF_GPMC_NADV_ALE register */
-       writew(readw(&ctrl_base->gpmc_noe) | 0x0E00, &ctrl_base->gpmc_noe);
-
-       /* Enable off mode for ALE in PADCONF_GPMC_NADV_ALE register */
-       writew(readw(&ctrl_base->gpmc_nadv_ale) | 0x0E00,
-               &ctrl_base->gpmc_nadv_ale);
+       twl4030_power_mmc_init(0);
 }
+#endif
 
 #ifdef CONFIG_SYS_I2C_OMAP34XX
 /*
  * Routine: reset_net_chip
  * Description: reset the Ethernet controller via TPS65930 GPIO
  */
-static void reset_net_chip(void)
+static int cm_t3x_reset_net_chip(int gpio)
 {
        /* Set GPIO1 of TPS65930 as output */
        twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, TWL4030_BASEADD_GPIO + 0x03,
@@ -507,9 +409,10 @@ static void reset_net_chip(void)
        twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, TWL4030_BASEADD_GPIO + 0x0C,
                             0x02);
        mdelay(1);
+       return 0;
 }
 #else
-static inline void reset_net_chip(void) {}
+static inline int cm_t3x_reset_net_chip(int gpio) { return 0; }
 #endif
 
 #ifdef CONFIG_SMC911X
@@ -536,7 +439,6 @@ static int handle_mac_address(void)
        return eth_setenv_enetaddr("ethaddr", enetaddr);
 }
 
-
 /*
  * Routine: board_eth_init
  * Description: initialize module and base-board Ethernet chips
@@ -545,18 +447,16 @@ int board_eth_init(bd_t *bis)
 {
        int rc = 0, rc1 = 0;
 
-       setup_net_chip_gmpc();
-       reset_net_chip();
-
        rc1 = handle_mac_address();
        if (rc1)
                printf("No MAC address found! ");
 
-       rc1 = smc911x_initialize(0, CM_T3X_SMC911X_BASE);
+       rc1 = cl_omap3_smc911x_init(0, 5, CM_T3X_SMC911X_BASE,
+                                   cm_t3x_reset_net_chip, -EINVAL);
        if (rc1 > 0)
                rc++;
 
-       rc1 = smc911x_initialize(1, SB_T35_SMC911X_BASE);
+       rc1 = cl_omap3_smc911x_init(1, 4, SB_T35_SMC911X_BASE, NULL, -EINVAL);
        if (rc1 > 0)
                rc++;
 
@@ -564,16 +464,6 @@ int board_eth_init(bd_t *bis)
 }
 #endif
 
-void __weak get_board_serial(struct tag_serialnr *serialnr)
-{
-       /*
-        * This corresponds to what happens when we can communicate with the
-        * eeprom but don't get a valid board serial value.
-        */
-       serialnr->low = 0;
-       serialnr->high = 0;
-};
-
 #ifdef CONFIG_USB_EHCI_OMAP
 struct omap_usbhs_board_data usbhs_bdata = {
        .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
@@ -583,21 +473,12 @@ struct omap_usbhs_board_data usbhs_bdata = {
 
 #define SB_T35_USB_HUB_RESET_GPIO      167
 int ehci_hcd_init(int index, enum usb_init_type init,
-               struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+                 struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 {
        u8 val;
        int offset;
 
-       if (gpio_request(SB_T35_USB_HUB_RESET_GPIO, "SB-T35 usb hub reset")) {
-               printf("Error: can't obtain GPIO %d for SB-T35 usb hub reset",
-                               SB_T35_USB_HUB_RESET_GPIO);
-               return -1;
-       }
-
-       gpio_direction_output(SB_T35_USB_HUB_RESET_GPIO, 0);
-       udelay(10);
-       gpio_set_value(SB_T35_USB_HUB_RESET_GPIO, 1);
-       udelay(1000);
+       cl_usb_hub_init(SB_T35_USB_HUB_RESET_GPIO, "sb-t35 hub rst");
 
        offset = TWL4030_BASEADD_GPIO + TWL4030_GPIO_GPIODATADIR1;
        twl4030_i2c_read_u8(TWL4030_CHIP_GPIO, offset, &val);
@@ -614,6 +495,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 
 int ehci_hcd_stop(void)
 {
+       cl_usb_hub_deinit(SB_T35_USB_HUB_RESET_GPIO);
        return omap_ehci_hcd_stop();
 }
 #endif /* CONFIG_USB_EHCI_OMAP */
diff --git a/board/compulab/cm_t3517/Kconfig b/board/compulab/cm_t3517/Kconfig
new file mode 100644 (file)
index 0000000..2f5473d
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_CM_T3517
+
+config SYS_BOARD
+       default "cm_t3517"
+
+config SYS_VENDOR
+       default "compulab"
+
+config SYS_CONFIG_NAME
+       default "cm_t3517"
+
+endif
diff --git a/board/compulab/cm_t3517/MAINTAINERS b/board/compulab/cm_t3517/MAINTAINERS
new file mode 100644 (file)
index 0000000..fbb6882
--- /dev/null
@@ -0,0 +1,6 @@
+CM_T3517 BOARD
+M:     Igor Grinberg <grinberg@compulab.co.il>
+S:     Maintained
+F:     board/compulab/cm_t3517/
+F:     include/configs/cm_t3517.h
+F:     configs/cm_t3517_defconfig
diff --git a/board/compulab/cm_t3517/Makefile b/board/compulab/cm_t3517/Makefile
new file mode 100644 (file)
index 0000000..4f0db01
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+#
+# Authors: Igor Grinberg <grinberg@compulab.co.il>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += cm_t3517.o mux.o
diff --git a/board/compulab/cm_t3517/cm_t3517.c b/board/compulab/cm_t3517/cm_t3517.c
new file mode 100644 (file)
index 0000000..cac1ad9
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <status_led.h>
+#include <net.h>
+#include <netdev.h>
+#include <usb.h>
+#include <mmc.h>
+#include <linux/compiler.h>
+#include <linux/usb/musb.h>
+
+#include <asm/io.h>
+#include <asm/arch/mem.h>
+#include <asm/arch/am35x_def.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/musb.h>
+#include <asm/omap_musb.h>
+#include <asm/ehci-omap.h>
+
+#include "../common/common.h"
+#include "../common/eeprom.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+const omap3_sysinfo sysinfo = {
+       DDR_DISCRETE,
+       "CM-T3517 board",
+       "NAND 128/512M",
+};
+
+#ifdef CONFIG_USB_MUSB_AM35X
+static struct musb_hdrc_config cm_t3517_musb_config = {
+       .multipoint     = 1,
+       .dyn_fifo       = 1,
+       .num_eps        = 16,
+       .ram_bits       = 12,
+};
+
+static struct omap_musb_board_data cm_t3517_musb_board_data = {
+       .set_phy_power          = am35x_musb_phy_power,
+       .clear_irq              = am35x_musb_clear_irq,
+       .reset                  = am35x_musb_reset,
+};
+
+static struct musb_hdrc_platform_data cm_t3517_musb_pdata = {
+#if defined(CONFIG_MUSB_HOST)
+       .mode           = MUSB_HOST,
+#elif defined(CONFIG_MUSB_GADGET)
+       .mode           = MUSB_PERIPHERAL,
+#else
+#error "Please define either CONFIG_MUSB_HOST or CONFIG_MUSB_GADGET"
+#endif
+       .config         = &cm_t3517_musb_config,
+       .power          = 250,
+       .platform_ops   = &am35x_ops,
+       .board_data     = &cm_t3517_musb_board_data,
+};
+
+static void cm_t3517_musb_init(void)
+{
+       /*
+        * Set up USB clock/mode in the DEVCONF2 register.
+        * USB2.0 PHY reference clock is 13 MHz
+        */
+       clrsetbits_le32(&am35x_scm_general_regs->devconf2,
+                       CONF2_REFFREQ | CONF2_OTGMODE | CONF2_PHY_GPIOMODE,
+                       CONF2_REFFREQ_13MHZ | CONF2_SESENDEN |
+                       CONF2_VBDTCTEN | CONF2_DATPOL);
+
+       if (musb_register(&cm_t3517_musb_pdata, &cm_t3517_musb_board_data,
+                         (void *)AM35XX_IPSS_USBOTGSS_BASE))
+               printf("Failed initializing AM35x MUSB!\n");
+}
+#else
+static inline void am3517_evm_musb_init(void) {}
+#endif
+
+int board_init(void)
+{
+       gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
+
+       /* boot param addr */
+       gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
+
+#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
+       status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
+#endif
+
+       cm_t3517_musb_init();
+
+       return 0;
+}
+
+int misc_init_r(void)
+{
+       cl_print_pcb_info();
+       dieid_num_r();
+
+       return 0;
+}
+
+#if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD)
+#define SB_T35_CD_GPIO 144
+#define SB_T35_WP_GPIO 59
+
+int board_mmc_init(bd_t *bis)
+{
+       return omap_mmc_init(0, 0, 0, SB_T35_CD_GPIO, SB_T35_WP_GPIO);
+}
+#endif
+
+#ifdef CONFIG_DRIVER_TI_EMAC
+#define CONTROL_EFUSE_EMAC_LSB  0x48002380
+#define CONTROL_EFUSE_EMAC_MSB  0x48002384
+
+static int am3517_get_efuse_enetaddr(u8 *enetaddr)
+{
+       u32 lsb = __raw_readl(CONTROL_EFUSE_EMAC_LSB);
+       u32 msb = __raw_readl(CONTROL_EFUSE_EMAC_MSB);
+
+       enetaddr[0] = (u8)((msb >> 16) & 0xff);
+       enetaddr[1] = (u8)((msb >> 8)  & 0xff);
+       enetaddr[2] = (u8)(msb & 0xff);
+       enetaddr[3] = (u8)((lsb >> 16) & 0xff);
+       enetaddr[4] = (u8)((lsb >> 8)  & 0xff);
+       enetaddr[5] = (u8)(lsb & 0xff);
+
+       return is_valid_ether_addr(enetaddr);
+}
+
+static inline int cm_t3517_init_emac(bd_t *bis)
+{
+       int ret = cpu_eth_init(bis);
+
+       if (ret > 0)
+               return ret;
+
+       printf("Failed initializing EMAC! ");
+       return 0;
+}
+#else /* !CONFIG_DRIVER_TI_EMAC */
+static inline int am3517_get_efuse_enetaddr(u8 *enetaddr) { return 1; }
+static inline int cm_t3517_init_emac(bd_t *bis) { return 0; }
+#endif /* CONFIG_DRIVER_TI_EMAC */
+
+/*
+ * Routine: handle_mac_address
+ * Description: prepare MAC address for on-board Ethernet.
+ */
+static int cm_t3517_handle_mac_address(void)
+{
+       unsigned char enetaddr[6];
+       int ret;
+
+       ret = eth_getenv_enetaddr("ethaddr", enetaddr);
+       if (ret)
+               return 0;
+
+       ret = cl_eeprom_read_mac_addr(enetaddr);
+       if (ret) {
+               ret = am3517_get_efuse_enetaddr(enetaddr);
+               if (ret)
+                       return ret;
+       }
+
+       if (!is_valid_ether_addr(enetaddr))
+               return -1;
+
+       return eth_setenv_enetaddr("ethaddr", enetaddr);
+}
+
+#define SB_T35_ETH_RST_GPIO 164
+
+/*
+ * Routine: board_eth_init
+ * Description: initialize module and base-board Ethernet chips
+ */
+int board_eth_init(bd_t *bis)
+{
+       int rc = 0, rc1 = 0;
+
+       rc1 = cm_t3517_handle_mac_address();
+       if (rc1)
+               printf("No MAC address found! ");
+
+       rc1 = cm_t3517_init_emac(bis);
+       if (rc1 > 0)
+               rc++;
+
+       rc1 = cl_omap3_smc911x_init(0, 4, CONFIG_SMC911X_BASE,
+                                   NULL, SB_T35_ETH_RST_GPIO);
+       if (rc1 > 0)
+               rc++;
+
+       return rc;
+}
+
+#ifdef CONFIG_USB_EHCI_OMAP
+static struct omap_usbhs_board_data cm_t3517_usbhs_bdata = {
+       .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
+       .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
+       .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
+};
+
+#define CM_T3517_USB_HUB_RESET_GPIO    152
+#define SB_T35_USB_HUB_RESET_GPIO      98
+
+int ehci_hcd_init(int index, enum usb_init_type init,
+                       struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+{
+       cl_usb_hub_init(CM_T3517_USB_HUB_RESET_GPIO, "cm-t3517 hub rst");
+       cl_usb_hub_init(SB_T35_USB_HUB_RESET_GPIO, "sb-t35 hub rst");
+
+       return omap_ehci_hcd_init(index, &cm_t3517_usbhs_bdata, hccr, hcor);
+}
+
+int ehci_hcd_stop(void)
+{
+       cl_usb_hub_deinit(CM_T3517_USB_HUB_RESET_GPIO);
+       cl_usb_hub_deinit(SB_T35_USB_HUB_RESET_GPIO);
+
+       return omap_ehci_hcd_stop();
+}
+#endif /* CONFIG_USB_EHCI_OMAP */
diff --git a/board/compulab/cm_t3517/mux.c b/board/compulab/cm_t3517/mux.c
new file mode 100644 (file)
index 0000000..88ce2cc
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/mux.h>
+#include <asm/io.h>
+
+void set_muxconf_regs(void)
+{
+       /* SDRC */
+       MUX_VAL(CP(SDRC_D0),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D1),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D2),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D3),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D4),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D5),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D6),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D7),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D8),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D9),            (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D10),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D11),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D12),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D13),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D14),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D15),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D16),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D17),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D18),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D19),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D20),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D21),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D22),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D23),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D24),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D25),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D26),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D27),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D28),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D29),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D30),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_D31),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_CLK),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_DQS0),          (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_DQS1),          (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_DQS2),          (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_DQS3),          (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(SDRC_CKE0),          (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(SDRC_CKE1),          (IDIS | PTD | DIS | M7));
+
+       /* GPMC */
+       MUX_VAL(CP(GPMC_A1),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A2),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A3),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A4),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A5),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A6),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A7),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A8),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A9),            (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_A10),           (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D0),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D1),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D2),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D3),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D4),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D5),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D6),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D7),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D8),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D9),            (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D10),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D11),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D12),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D13),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D14),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_D15),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(GPMC_NCS0),          (IDIS | PTU | EN  | M0));
+
+       /* SB-T35 Ethernet */
+       MUX_VAL(CP(GPMC_NCS4),          (IEN  | PTU | EN  | M0));
+       /* DVI enable */
+       MUX_VAL(CP(GPMC_NCS3),          (IDIS | PTU | DIS  | M4));/*GPIO_54*/
+       /* DataImage backlight */
+       MUX_VAL(CP(GPMC_NCS7),          (IDIS | PTU | DIS  | M4));/*GPIO_58*/
+
+       /* SB-T35 SD/MMC WP GPIO59 */
+       MUX_VAL(CP(GPMC_CLK),           (IEN  | PTU | EN  | M4)); /*GPIO_59*/
+       MUX_VAL(CP(GPMC_NWE),           (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(GPMC_NOE),           (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(GPMC_NADV_ALE),      (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(GPMC_NBE0_CLE),      (IDIS | PTU | EN  | M0));
+       /* SB-T35 Audio Enable GPIO61 */
+       MUX_VAL(CP(GPMC_NBE1),          (IDIS | PTU | EN  | M4)); /*GPIO_61*/
+       MUX_VAL(CP(GPMC_NWP),           (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(GPMC_WAIT0),         (IEN  | PTU | EN  | M0));
+       /* SB-T35 Ethernet IRQ GPIO65 */
+       MUX_VAL(CP(GPMC_WAIT3),         (IEN  | PTU | EN  | M4)); /*GPIO_65*/
+
+       /* UART3 Console */
+       MUX_VAL(CP(UART3_RX_IRRX),      (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(UART3_TX_IRTX),      (IDIS | PTD | DIS | M0));
+       /* RTC V3020 nCS GPIO163 */
+       MUX_VAL(CP(UART3_CTS_RCTX),     (IEN  | PTU | EN  | M4)); /*GPIO_163*/
+       /* SB-T35 Ethernet nRESET GPIO164 */
+       MUX_VAL(CP(UART3_RTS_SD),       (IDIS | PTU | EN  | M4)); /*GPIO_164*/
+
+       /* SB-T35 SD/MMC CD GPIO144 */
+       MUX_VAL(CP(UART2_CTS),          (IEN  | PTU | EN  | M4)); /*GPIO_144*/
+       /* WIFI nRESET GPIO145 */
+       MUX_VAL(CP(UART2_RTS),          (IEN  | PTD | EN  | M4)); /*GPIO_145*/
+       /* USB1 PHY Reset GPIO 146 */
+       MUX_VAL(CP(UART2_TX),           (IEN  | PTD | EN  | M4)); /*GPIO_146*/
+       /* USB2 PHY Reset GPIO 147 */
+       MUX_VAL(CP(UART2_RX),           (IEN  | PTD | EN  | M4)); /*GPIO_147*/
+
+       /* MMC1 */
+       MUX_VAL(CP(MMC1_CLK),           (IDIS | PTU | EN  | M0));
+       MUX_VAL(CP(MMC1_CMD),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(MMC1_DAT0),          (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(MMC1_DAT1),          (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(MMC1_DAT2),          (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(MMC1_DAT3),          (IEN  | PTU | EN  | M0));
+
+       /* DSS */
+       MUX_VAL(CP(DSS_PCLK),           (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_HSYNC),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_VSYNC),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_ACBIAS),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA0),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA1),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA2),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA3),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA4),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA5),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA6),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA7),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA8),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA9),          (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA10),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA11),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA12),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA13),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA14),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA15),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA16),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA17),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA18),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA19),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA20),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA21),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA22),         (IDIS | PTD | DIS | M0));
+       MUX_VAL(CP(DSS_DATA23),         (IDIS | PTD | DIS | M0));
+
+       /* I2C */
+       MUX_VAL(CP(I2C1_SCL),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(I2C1_SDA),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(I2C3_SCL),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(I2C3_SDA),           (IEN  | PTU | EN  | M0));
+
+       /* SB-T35 USB HUB Reset GPIO98 */
+       MUX_VAL(CP(CCDC_WEN),           (IDIS | PTU | EN  | M4)); /*GPIO_98*/
+       /* CM-T3517 USB HUB Reset GPIO152 */
+       MUX_VAL(CP(MCBSP4_CLKX),        (IDIS | PTD | DIS | M4)); /*GPIO_152*/
+
+       /* RMII */
+       MUX_VAL(CP(RMII_MDIO_DATA),     (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(RMII_MDIO_CLK),      (M0));
+       MUX_VAL(CP(RMII_RXD0),          (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(RMII_RXD1),          (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(RMII_CRS_DV),        (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(RMII_RXER),          (IEN  | PTD | DIS | M0));
+       MUX_VAL(CP(RMII_TXD0),          (IDIS | M0));
+       MUX_VAL(CP(RMII_TXD1),          (IDIS | M0));
+       MUX_VAL(CP(RMII_TXEN),          (IDIS | M0));
+       MUX_VAL(CP(RMII_50MHZ_CLK),     (IEN  | PTU | DIS | M0));
+
+       /* Green LED GPIO186 */
+       MUX_VAL(CP(SYS_CLKOUT2),        (IDIS | PTU | DIS | M4)); /*GPIO_186*/
+
+       /* SPI */
+       MUX_VAL(CP(MCBSP1_CLKR),        (IEN | PTD | DIS | M1)); /*MCSPI4_CLK*/
+       MUX_VAL(CP(MCBSP1_DX),          (IEN | PTD | DIS | M1)); /*MCSPI4_SIMO*/
+       MUX_VAL(CP(MCBSP1_DR),          (IEN | PTD | DIS | M1)); /*MCSPI4_SOMI*/
+       MUX_VAL(CP(MCBSP1_FSX),         (IEN | PTU | EN  | M1)); /*MCSPI4_CS0*/
+       /* LCD reset GPIO157 */
+       MUX_VAL(CP(MCBSP1_FSR),         (IDIS | PTU | DIS | M4)); /*GPIO_157*/
+
+       /* RTC V3020 CS Enable GPIO160 */
+       MUX_VAL(CP(MCBSP_CLKS),         (IEN  | PTD | EN  | M4)); /*GPIO_160*/
+       /* SB-T35 LVDS Transmitter SHDN GPIO162 */
+       MUX_VAL(CP(MCBSP1_CLKX),        (IEN  | PTU | DIS | M4)); /*GPIO_162*/
+
+       /* USB0 - mUSB */
+       MUX_VAL(CP(USB0_DRVBUS),        (IEN  | PTD | EN  | M0));
+       /* USB1 EHCI */
+       MUX_VAL(CP(ETK_D0_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT0*/
+       MUX_VAL(CP(ETK_D1_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT1*/
+       MUX_VAL(CP(ETK_D2_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT2*/
+       MUX_VAL(CP(ETK_D7_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT3*/
+       MUX_VAL(CP(ETK_D4_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT4*/
+       MUX_VAL(CP(ETK_D5_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT5*/
+       MUX_VAL(CP(ETK_D6_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT6*/
+       MUX_VAL(CP(ETK_D3_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DT7*/
+       MUX_VAL(CP(ETK_D8_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_DIR*/
+       MUX_VAL(CP(ETK_D9_ES2),         (IEN  | PTD | EN  | M3)); /*HSUSB1_NXT*/
+       MUX_VAL(CP(ETK_CTL_ES2),        (IDIS | PTD | DIS | M3)); /*HSUSB1_CLK*/
+       MUX_VAL(CP(ETK_CLK_ES2),        (IDIS | PTU | DIS | M3)); /*HSUSB1_STP*/
+       /* USB2 EHCI */
+       MUX_VAL(CP(ETK_D14_ES2),        (IEN  | PTD | EN  | M3)); /*HSUSB2_DT0*/
+       MUX_VAL(CP(ETK_D15_ES2),        (IEN  | PTD | EN  | M3)); /*HSUSB2_DT1*/
+       MUX_VAL(CP(MCSPI1_CS3),         (IEN  | PTD | EN  | M3)); /*HSUSB2_DT2*/
+       MUX_VAL(CP(MCSPI2_CS1),         (IEN  | PTD | EN  | M3)); /*HSUSB2_DT3*/
+       MUX_VAL(CP(MCSPI2_SIMO),        (IEN  | PTD | EN  | M3)); /*HSUSB2_DT4*/
+       MUX_VAL(CP(MCSPI2_SOMI),        (IEN  | PTD | EN  | M3)); /*HSUSB2_DT5*/
+       MUX_VAL(CP(MCSPI2_CS0),         (IEN  | PTD | EN  | M3)); /*HSUSB2_DT6*/
+       MUX_VAL(CP(MCSPI2_CLK),         (IEN  | PTD | EN  | M3)); /*HSUSB2_DT7*/
+       MUX_VAL(CP(ETK_D12_ES2),        (IEN  | PTD | EN  | M3)); /*HSUSB2_DIR*/
+       MUX_VAL(CP(ETK_D13_ES2),        (IEN  | PTD | EN  | M3)); /*HSUSB2_NXT*/
+       MUX_VAL(CP(ETK_D10_ES2),        (IDIS | PTD | DIS | M3)); /*HSUSB2_CLK*/
+       MUX_VAL(CP(ETK_D11_ES2),        (IDIS | PTU | DIS | M3)); /*HSUSB2_STP*/
+
+       /* SYS_BOOT */
+       MUX_VAL(CP(SYS_BOOT0),          (IEN  | PTU | DIS | M4)); /*GPIO_2*/
+       MUX_VAL(CP(SYS_BOOT1),          (IEN  | PTU | DIS | M4)); /*GPIO_3*/
+       MUX_VAL(CP(SYS_BOOT2),          (IEN  | PTU | DIS | M4)); /*GPIO_4*/
+       MUX_VAL(CP(SYS_BOOT3),          (IEN  | PTU | DIS | M4)); /*GPIO_5*/
+       MUX_VAL(CP(SYS_BOOT4),          (IEN  | PTU | DIS | M4)); /*GPIO_6*/
+       MUX_VAL(CP(SYS_BOOT5),          (IEN  | PTU | DIS | M4)); /*GPIO_7*/
+}
index 944b7234d63eade73441918c8f8d910f4c5fa6e5..2c2530ab3fd1e6ce5c3e200276bebaac51daea43 100644 (file)
@@ -100,16 +100,11 @@ uint mmc_get_env_part(struct mmc *mmc)
 #define SB_T54_CD_GPIO 228
 #define SB_T54_WP_GPIO 229
 
-int board_mmc_getcd(struct mmc *mmc)
-{
-       return !gpio_get_value(SB_T54_CD_GPIO);
-}
-
 int board_mmc_init(bd_t *bis)
 {
        int ret0, ret1;
 
-       ret0 = omap_mmc_init(0, 0, 0, -1, SB_T54_WP_GPIO);
+       ret0 = omap_mmc_init(0, 0, 0, SB_T54_CD_GPIO, SB_T54_WP_GPIO);
        if (ret0)
                printf("cm_t54: failed to initialize mmc0\n");
 
@@ -126,7 +121,7 @@ int board_mmc_init(bd_t *bis)
 
 #ifdef CONFIG_USB_HOST_ETHER
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        uint8_t enetaddr[6];
 
@@ -135,6 +130,8 @@ void ft_board_setup(void *blob, bd_t *bd)
                fdt_find_and_setprop(blob, "/smsc95xx@0", "mac-address",
                                     enetaddr, 6, 1);
        }
+
+       return 0;
 }
 
 static void generate_mac_addr(uint8_t *enetaddr)
index 4044ac9d626185d584fc99726117d68aa3a1c0eb..dbf0009652a69263b48a15e19c8dc338f3068102 100644 (file)
@@ -6,5 +6,8 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_SYS_I2C) += eeprom.o
-obj-$(CONFIG_LCD) += omap3_display.o
+obj-y                          += common.o
+obj-$(CONFIG_SYS_I2C)          += eeprom.o
+obj-$(CONFIG_LCD)              += omap3_display.o
+obj-$(CONFIG_SPLASH_SCREEN)    += splash.o
+obj-$(CONFIG_SMC911X)          += omap3_smc911x.o
diff --git a/board/compulab/common/common.c b/board/compulab/common/common.c
new file mode 100644 (file)
index 0000000..b25d9a2
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/bootm.h>
+#include <asm/gpio.h>
+
+#include "common.h"
+#include "eeprom.h"
+
+void cl_print_pcb_info(void)
+{
+       u32 board_rev = get_board_rev();
+       u32 rev_major = board_rev / 100;
+       u32 rev_minor = board_rev - (rev_major * 100);
+
+       if ((rev_minor / 10) * 10 == rev_minor)
+               rev_minor = rev_minor / 10;
+
+       printf("PCB:   %u.%u\n", rev_major, rev_minor);
+}
+
+#ifdef CONFIG_SERIAL_TAG
+void __weak get_board_serial(struct tag_serialnr *serialnr)
+{
+       /*
+        * This corresponds to what happens when we can communicate with the
+        * eeprom but don't get a valid board serial value.
+        */
+       serialnr->low = 0;
+       serialnr->high = 0;
+};
+#endif
+
+#ifdef CONFIG_CMD_USB
+int cl_usb_hub_init(int gpio, const char *label)
+{
+       if (gpio_request(gpio, label)) {
+               printf("Error: can't obtain GPIO%d for %s", gpio, label);
+               return -1;
+       }
+
+       gpio_direction_output(gpio, 0);
+       udelay(10);
+       gpio_set_value(gpio, 1);
+       udelay(1000);
+       return 0;
+}
+
+void cl_usb_hub_deinit(int gpio)
+{
+       gpio_free(gpio);
+}
+#endif
diff --git a/board/compulab/common/common.h b/board/compulab/common/common.h
new file mode 100644 (file)
index 0000000..68ffb11
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _CL_COMMON_
+#define _CL_COMMON_
+
+#include <asm/errno.h>
+
+void cl_print_pcb_info(void);
+
+#ifdef CONFIG_CMD_USB
+int cl_usb_hub_init(int gpio, const char *label);
+void cl_usb_hub_deinit(int gpio);
+#else /* !CONFIG_CMD_USB */
+static inline int cl_usb_hub_init(int gpio, const char *label)
+{
+       return -ENOSYS;
+}
+static inline void cl_usb_hub_deinit(int gpio) {}
+#endif /* CONFIG_CMD_USB */
+
+#ifdef CONFIG_SPLASH_SCREEN
+int cl_splash_screen_prepare(int nand_offset);
+#else /* !CONFIG_SPLASH_SCREEN */
+static inline int cl_splash_screen_prepare(int nand_offset)
+{
+       return -ENOSYS;
+}
+#endif /* CONFIG_SPLASH_SCREEN */
+
+#ifdef CONFIG_SMC911X
+int cl_omap3_smc911x_init(int id, int cs, u32 base_addr,
+                         int (*reset)(int), int rst_gpio);
+#else /* !CONFIG_SMC911X */
+static inline int cl_omap3_smc911x_init(int id, int cs, u32 base_addr,
+                                       int (*reset)(int), int rst_gpio)
+{
+       return -ENOSYS;
+}
+#endif /* CONFIG_SMC911X */
+
+#endif /* _CL_COMMON_ */
index 2df3adabf8b3dd097fcfcb6006b7d6baa10bbafe..a45e7be11f76a0ba2f3548bef62f41198c641974 100644 (file)
@@ -109,23 +109,27 @@ int cl_eeprom_read_mac_addr(uchar *buf)
        return cl_eeprom_read(offset, buf, 6);
 }
 
+static u32 board_rev;
+
 /*
  * Routine: cl_eeprom_get_board_rev
  * Description: read system revision from eeprom
  */
 u32 cl_eeprom_get_board_rev(void)
 {
-       u32 rev = 0;
        char str[5]; /* Legacy representation can contain at most 4 digits */
        uint offset = BOARD_REV_OFFSET_LEGACY;
 
+       if (board_rev)
+               return board_rev;
+
        if (cl_eeprom_setup_layout())
                return 0;
 
        if (cl_eeprom_layout != LAYOUT_LEGACY)
                offset = BOARD_REV_OFFSET;
 
-       if (cl_eeprom_read(offset, (uchar *)&rev, BOARD_REV_SIZE))
+       if (cl_eeprom_read(offset, (uchar *)&board_rev, BOARD_REV_SIZE))
                return 0;
 
        /*
@@ -133,9 +137,9 @@ u32 cl_eeprom_get_board_rev(void)
         * representation. i.e. for rev 1.00: 0x100 --> 0x64
         */
        if (cl_eeprom_layout == LAYOUT_LEGACY) {
-               sprintf(str, "%x", rev);
-               rev = simple_strtoul(str, NULL, 10);
+               sprintf(str, "%x", board_rev);
+               board_rev = simple_strtoul(str, NULL, 10);
        }
 
-       return rev;
+       return board_rev;
 };
diff --git a/board/compulab/common/omap3_smc911x.c b/board/compulab/common/omap3_smc911x.c
new file mode 100644 (file)
index 0000000..4561661
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <netdev.h>
+
+#include <asm/io.h>
+#include <asm/errno.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/mem.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/gpio.h>
+
+#include "common.h"
+
+static u32 cl_omap3_smc911x_gpmc_net_config[GPMC_MAX_REG] = {
+       NET_GPMC_CONFIG1,
+       NET_GPMC_CONFIG2,
+       NET_GPMC_CONFIG3,
+       NET_GPMC_CONFIG4,
+       NET_GPMC_CONFIG5,
+       NET_GPMC_CONFIG6,
+       0
+};
+
+static void cl_omap3_smc911x_setup_net_chip_gmpc(int cs, u32 base_addr)
+{
+       struct ctrl *ctrl_base = (struct ctrl *)OMAP34XX_CTRL_BASE;
+
+       enable_gpmc_cs_config(cl_omap3_smc911x_gpmc_net_config,
+                             &gpmc_cfg->cs[cs], base_addr, GPMC_SIZE_16M);
+
+       /* Enable off mode for NWE in PADCONF_GPMC_NWE register */
+       writew(readw(&ctrl_base->gpmc_nwe) | 0x0E00, &ctrl_base->gpmc_nwe);
+
+       /* Enable off mode for NOE in PADCONF_GPMC_NADV_ALE register */
+       writew(readw(&ctrl_base->gpmc_noe) | 0x0E00, &ctrl_base->gpmc_noe);
+
+       /* Enable off mode for ALE in PADCONF_GPMC_NADV_ALE register */
+       writew(readw(&ctrl_base->gpmc_nadv_ale) | 0x0E00,
+              &ctrl_base->gpmc_nadv_ale);
+}
+
+#ifdef CONFIG_OMAP_GPIO
+static int cl_omap3_smc911x_reset_net_chip(int gpio)
+{
+       int err;
+
+       if (!gpio_is_valid(gpio))
+               return -EINVAL;
+
+       err = gpio_request(gpio, "eth rst");
+       if (err)
+               return err;
+
+       /* Set gpio as output and send a pulse */
+       gpio_direction_output(gpio, 1);
+       udelay(1);
+       gpio_set_value(gpio, 0);
+       mdelay(40);
+       gpio_set_value(gpio, 1);
+       mdelay(1);
+
+       return 0;
+}
+#else /* !CONFIG_OMAP_GPIO */
+static inline int cl_omap3_smc911x_reset_net_chip(int gpio) { return 0; }
+#endif /* CONFIG_OMAP_GPIO */
+
+int cl_omap3_smc911x_init(int id, int cs, u32 base_addr,
+                         int (*reset)(int), int rst_gpio)
+{
+       int ret;
+
+       cl_omap3_smc911x_setup_net_chip_gmpc(cs, base_addr);
+
+       if (reset)
+               reset(rst_gpio);
+       else
+               cl_omap3_smc911x_reset_net_chip(rst_gpio);
+
+       ret = smc911x_initialize(id, base_addr);
+       if (ret > 0)
+               return ret;
+
+       printf("Failed initializing SMC911x! ");
+       return 0;
+}
diff --git a/board/compulab/common/splash.c b/board/compulab/common/splash.c
new file mode 100644 (file)
index 0000000..49ed49b
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <nand.h>
+#include <bmp_layout.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_CMD_NAND
+static int splash_load_from_nand(u32 bmp_load_addr, int nand_offset)
+{
+       struct bmp_header *bmp_hdr;
+       int res;
+       size_t bmp_size, bmp_header_size = sizeof(struct bmp_header);
+
+       if (bmp_load_addr + bmp_header_size >= gd->start_addr_sp)
+               goto splash_address_too_high;
+
+       res = nand_read_skip_bad(&nand_info[nand_curr_device],
+                       nand_offset, &bmp_header_size,
+                       NULL, nand_info[nand_curr_device].size,
+                       (u_char *)bmp_load_addr);
+       if (res < 0)
+               return res;
+
+       bmp_hdr = (struct bmp_header *)bmp_load_addr;
+       bmp_size = le32_to_cpu(bmp_hdr->file_size);
+
+       if (bmp_load_addr + bmp_size >= gd->start_addr_sp)
+               goto splash_address_too_high;
+
+       return nand_read_skip_bad(&nand_info[nand_curr_device],
+                       nand_offset, &bmp_size,
+                       NULL, nand_info[nand_curr_device].size,
+                       (u_char *)bmp_load_addr);
+
+splash_address_too_high:
+       printf("Error: splashimage address too high. Data overwrites U-Boot "
+               "and/or placed beyond DRAM boundaries.\n");
+
+       return -1;
+}
+#else
+static inline int splash_load_from_nand(u32 bmp_load_addr, int nand_offset)
+{
+       return -1;
+}
+#endif /* CONFIG_CMD_NAND */
+
+int cl_splash_screen_prepare(int nand_offset)
+{
+       char *env_splashimage_value;
+       u32 bmp_load_addr;
+
+       env_splashimage_value = getenv("splashimage");
+       if (env_splashimage_value == NULL)
+               return -1;
+
+       bmp_load_addr = simple_strtoul(env_splashimage_value, 0, 16);
+       if (bmp_load_addr == 0) {
+               printf("Error: bad splashimage address specified\n");
+               return -1;
+       }
+
+       return splash_load_from_nand(bmp_load_addr, nand_offset);
+}
index 723293fef35af7aa3f35588a7d54694da732d1ba..c9da80d5eb1c31cd55909cb7cf0da1e11cb7b17f 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/arch/pinmux.h>
 #include <asm/gpio.h>
 #include <i2c.h>
+#include <netdev.h>
 
 void pin_mux_usb(void)
 {
@@ -40,3 +41,10 @@ void pin_mux_mmc(void)
        /* For CD GPIO PP1 */
        pinmux_tristate_disable(PMUX_PINGRP_DAP3);
 }
+
+#ifdef CONFIG_PCI
+int board_eth_init(bd_t *bis)
+{
+       return pci_eth_init(bis);
+}
+#endif
diff --git a/board/coreboot/coreboot/Kconfig b/board/coreboot/coreboot/Kconfig
new file mode 100644 (file)
index 0000000..981de1f
--- /dev/null
@@ -0,0 +1,40 @@
+if TARGET_COREBOOT
+
+config SYS_BOARD
+       default "coreboot"
+
+config SYS_VENDOR
+       default "coreboot"
+
+config SYS_SOC
+       default "coreboot"
+
+comment "coreboot-specific options"
+
+config SYS_CONFIG_NAME
+       string "Board configuration file"
+       default "chromebook_link"
+       help
+         This option selects the board configuration file in include/configs/
+         directory to be used to build U-Boot for coreboot.
+
+config DEFAULT_DEVICE_TREE
+       string "Board Device Tree Source (dts) file"
+       default "chromebook_link"
+       help
+         This option selects the board Device Tree Source (dts) file in
+         arch/x86/dts/ directory to be used to build U-Boot for coreboot.
+
+config SYS_CAR_ADDR
+       hex "Board specific Cache-As-RAM (CAR) address"
+       default 0x19200000
+       help
+         This option specifies the board specific Cache-As-RAM (CAR) address.
+
+config SYS_CAR_SIZE
+       hex "Board specific Cache-As-RAM (CAR) size"
+       default 0x4000
+       help
+         This option specifies the board specific Cache-As-RAM (CAR) size.
+
+endif
similarity index 59%
rename from board/chromebook-x86/coreboot/MAINTAINERS
rename to board/coreboot/coreboot/MAINTAINERS
index 3b2fb52266df1465ec2aa9f581bbfa9e2cc5b272..2736aa028268cf1cc28bcbdc3a1f6f9804bdcae9 100644 (file)
@@ -1,6 +1,6 @@
 COREBOOT BOARD
 M:     Simon Glass <sjg@chromium.org>
 S:     Maintained
-F:     board/chromebook-x86/coreboot/
-F:     include/configs/coreboot.h
+F:     board/coreboot/coreboot/
+F:     include/configs/chromebook_link.h
 F:     configs/coreboot-x86_defconfig
similarity index 60%
rename from board/chromebook-x86/coreboot/coreboot.c
rename to board/coreboot/coreboot/coreboot.c
index 0240c345810f2fdb038dcffc34657857038bcba1..e076ea69cfa159d5a378bf8f1b1dfc20f1dca8e0 100644 (file)
@@ -6,11 +6,19 @@
 
 #include <common.h>
 #include <cros_ec.h>
+#include <asm/gpio.h>
 
 int arch_early_init_r(void)
 {
+#ifdef CONFIG_CROS_EC
        if (cros_ec_board_init())
                return -1;
+#endif
 
        return 0;
 }
+
+void setup_pch_gpios(u16 gpiobase, const struct pch_gpio_map *gpio)
+{
+       return;
+}
index 9e81bf3f3f94f645ac70563ad2c7563744b9d2b7..0fddf4551e7c64329bae1a45f38a9eb0f8c0e31e 100644 (file)
@@ -147,6 +147,13 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
+
 /*
  * Routine: get_board_mem_timings
  * Description: If we use SPL then there is no x-loader nor config header
diff --git a/board/cpc45/Kconfig b/board/cpc45/Kconfig
deleted file mode 100644 (file)
index c564caf..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_CPC45
-
-config SYS_BOARD
-       default "cpc45"
-
-config SYS_CONFIG_NAME
-       default "CPC45"
-
-endif
diff --git a/board/cpc45/MAINTAINERS b/board/cpc45/MAINTAINERS
deleted file mode 100644 (file)
index 163e09c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CPC45 BOARD
-M:     Josef Wagner <Wagner@Microsys.de>
-S:     Maintained
-F:     board/cpc45/
-F:     include/configs/CPC45.h
-F:     configs/CPC45_defconfig
-F:     configs/CPC45_ROMBOOT_defconfig
diff --git a/board/cpc45/Makefile b/board/cpc45/Makefile
deleted file mode 100644 (file)
index 1310f93..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = cpc45.o flash.o plx9030.o pd67290.o ide.o
diff --git a/board/cpc45/cpc45.c b/board/cpc45/cpc45.c
deleted file mode 100644 (file)
index f182e79..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <i2c.h>
-#include <netdev.h>
-
-int sysControlDisplay(int digit, uchar ascii_code);
-extern void Plx9030Init(void);
-extern void SPD67290Init(void);
-
-       /* We have to clear the initial data area here. Couldn't have done it
-        * earlier because DRAM had not been initialized.
-        */
-int board_early_init_f(void)
-{
-
-       /* enable DUAL UART Mode on CPC45 */
-       *(uchar*)DUART_DCR |= 0x1;      /* set DCM bit */
-
-       return 0;
-}
-
-int checkboard(void)
-{
-/*
-       char  revision = BOARD_REV;
-*/
-       ulong busfreq  = get_bus_freq(0);
-       char  buf[32];
-
-       puts ("CPC45  ");
-/*
-       printf("Revision %d ", revision);
-*/
-       printf("Local Bus at %s MHz\n", strmhz(buf, busfreq));
-
-       return 0;
-}
-
-phys_size_t initdram (int board_type)
-{
-       int m, row, col, bank, i, ref;
-       unsigned long start, end;
-       uint32_t mccr1, mccr2;
-       uint32_t mear1 = 0, emear1 = 0, msar1 = 0, emsar1 = 0;
-       uint32_t mear2 = 0, emear2 = 0, msar2 = 0, emsar2 = 0;
-       uint8_t mber = 0;
-       unsigned int tmp;
-
-       i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-
-       if (i2c_reg_read (0x50, 2) != 0x04)
-               return 0;       /* Memory type */
-
-       m = i2c_reg_read (0x50, 5);     /* # of physical banks */
-       row = i2c_reg_read (0x50, 3);   /* # of rows */
-       col = i2c_reg_read (0x50, 4);   /* # of columns */
-       bank = i2c_reg_read (0x50, 17); /* # of logical banks */
-       ref  = i2c_reg_read (0x50, 12); /* refresh rate / type */
-
-       CONFIG_READ_WORD(MCCR1, mccr1);
-       mccr1 &= 0xffff0000;
-
-       CONFIG_READ_WORD(MCCR2, mccr2);
-       mccr2 &= 0xffff0000;
-
-       start = CONFIG_SYS_SDRAM_BASE;
-       end = start + (1 << (col + row + 3) ) * bank - 1;
-
-       for (i = 0; i < m; i++) {
-               mccr1 |= ((row == 13)? 2 : (bank == 4)? 0 : 3) << i * 2;
-               if (i < 4) {
-                       msar1  |= ((start >> 20) & 0xff) << i * 8;
-                       emsar1 |= ((start >> 28) & 0xff) << i * 8;
-                       mear1  |= ((end >> 20) & 0xff) << i * 8;
-                       emear1 |= ((end >> 28) & 0xff) << i * 8;
-               } else {
-                       msar2  |= ((start >> 20) & 0xff) << (i-4) * 8;
-                       emsar2 |= ((start >> 28) & 0xff) << (i-4) * 8;
-                       mear2  |= ((end >> 20) & 0xff) << (i-4) * 8;
-                       emear2 |= ((end >> 28) & 0xff) << (i-4) * 8;
-               }
-               mber |= 1 << i;
-               start += (1 << (col + row + 3) ) * bank;
-               end += (1 << (col + row + 3) ) * bank;
-       }
-       for (; i < 8; i++) {
-               if (i < 4) {
-                       msar1  |= 0xff << i * 8;
-                       emsar1 |= 0x30 << i * 8;
-                       mear1  |= 0xff << i * 8;
-                       emear1 |= 0x30 << i * 8;
-               } else {
-                       msar2  |= 0xff << (i-4) * 8;
-                       emsar2 |= 0x30 << (i-4) * 8;
-                       mear2  |= 0xff << (i-4) * 8;
-                       emear2 |= 0x30 << (i-4) * 8;
-               }
-       }
-
-       switch(ref) {
-               case 0x00:
-               case 0x80:
-                       tmp = get_bus_freq(0) / 1000000 * 15625 / 1000 - 22;
-                       break;
-               case 0x01:
-               case 0x81:
-                       tmp = get_bus_freq(0) / 1000000 * 3900 / 1000 - 22;
-                       break;
-               case 0x02:
-               case 0x82:
-                       tmp = get_bus_freq(0) / 1000000 * 7800 / 1000 - 22;
-                       break;
-               case 0x03:
-               case 0x83:
-                       tmp = get_bus_freq(0) / 1000000 * 31300 / 1000 - 22;
-                       break;
-               case 0x04:
-               case 0x84:
-                       tmp = get_bus_freq(0) / 1000000 * 62500 / 1000 - 22;
-                       break;
-               case 0x05:
-               case 0x85:
-                       tmp = get_bus_freq(0) / 1000000 * 125000 / 1000 - 22;
-                       break;
-               default:
-                       tmp = 0x512;
-                       break;
-       }
-
-       CONFIG_WRITE_WORD(MCCR1, mccr1);
-       CONFIG_WRITE_WORD(MCCR2, tmp << MCCR2_REFINT_SHIFT);
-       CONFIG_WRITE_WORD(MSAR1, msar1);
-       CONFIG_WRITE_WORD(EMSAR1, emsar1);
-       CONFIG_WRITE_WORD(MEAR1, mear1);
-       CONFIG_WRITE_WORD(EMEAR1, emear1);
-       CONFIG_WRITE_WORD(MSAR2, msar2);
-       CONFIG_WRITE_WORD(EMSAR2, emsar2);
-       CONFIG_WRITE_WORD(MEAR2, mear2);
-       CONFIG_WRITE_WORD(EMEAR2, emear2);
-       CONFIG_WRITE_BYTE(MBER, mber);
-
-       return (1 << (col + row + 3) ) * bank * m;
-}
-
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-static struct pci_config_table pci_cpc45_config_table[] = {
-#ifndef CONFIG_PCI_PNP
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0F, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                      PCI_ENET0_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0D, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_PLX9030_IOADDR,
-                                      PCI_PLX9030_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0E, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCMCIA_IO_BASE,
-                                      PCMCIA_IO_BASE,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_IO }},
-#endif /*CONFIG_PCI_PNP*/
-       { }
-};
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_cpc45_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
-       pci_mpc824x_init(&hose);
-
-       /* init PCI_to_LOCAL Bus BRIDGE */
-       Plx9030Init();
-
-       /* Clear Display */
-       DISP_CWORD = 0x0;
-
-       sysControlDisplay(0,' ');
-       sysControlDisplay(1,'C');
-       sysControlDisplay(2,'P');
-       sysControlDisplay(3,'C');
-       sysControlDisplay(4,' ');
-       sysControlDisplay(5,'4');
-       sysControlDisplay(6,'5');
-       sysControlDisplay(7,' ');
-
-}
-
-/**************************************************************************
-*
-* sysControlDisplay - controls one of the Alphanum. Display digits.
-*
-* This routine will write an ASCII character to the display digit requested.
-*
-* SEE ALSO:
-*
-* RETURNS: NA
-*/
-
-int sysControlDisplay (int digit,      /* number of digit 0..7 */
-                      uchar ascii_code /* ASCII code */
-                     )
-{
-       if ((digit < 0) || (digit > 7))
-               return (-1);
-
-       *((volatile uchar *) (DISP_CHR_RAM + digit)) = ascii_code;
-
-       return (0);
-}
-
-#if defined(CONFIG_CMD_PCMCIA)
-
-#ifdef CONFIG_SYS_PCMCIA_MEM_ADDR
-volatile unsigned char *pcmcia_mem = (unsigned char*)CONFIG_SYS_PCMCIA_MEM_ADDR;
-#endif
-
-int pcmcia_init(void)
-{
-       u_int rc;
-
-       debug ("Enable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
-       rc = i82365_init();
-
-       return rc;
-}
-
-#endif
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/cpc45/flash.c b/board/cpc45/flash.c
deleted file mode 100644 (file)
index 917db34..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-#define FLASH_BANK_SIZE 0x800000
-#define MAIN_SECT_SIZE  0x40000
-#define PARAM_SECT_SIZE 0x8000
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-static int write_data (flash_info_t * info, ulong dest, ulong * data);
-static void write_via_fpu (vu_long * addr, ulong * data);
-static __inline__ unsigned long get_msr (void);
-static __inline__ void set_msr (unsigned long msr);
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-/*---------------------------------------------------------------------*/
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       int i, j;
-       ulong size = 0;
-       uchar tempChar;
-       vu_long *tmpaddr;
-
-       /* Enable flash writes on CPC45 */
-
-       tempChar = BOARD_CTRL;
-
-       tempChar |= (B_CTRL_FWPT_1 | B_CTRL_FWRE_1);
-
-       tempChar &= ~(B_CTRL_FWPT_0 | B_CTRL_FWRE_0);
-
-       BOARD_CTRL = tempChar;
-
-       __asm__ volatile ("sync\n eieio");
-
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-               vu_long *addr = (vu_long *) (CONFIG_SYS_FLASH_BASE + i * FLASH_BANK_SIZE);
-
-               addr[0] = 0x00900090;
-
-               __asm__ volatile ("sync\n eieio");
-
-               udelay (100);
-
-               DEBUGF ("Flash bank # %d:\n"
-                       "\tManuf. ID @ 0x%08lX: 0x%08lX\n"
-                       "\tDevice ID @ 0x%08lX: 0x%08lX\n",
-                       i,
-                       (ulong) (&addr[0]), addr[0],
-                       (ulong) (&addr[2]), addr[2]);
-
-
-               if ((addr[0] == addr[1]) && (addr[0] == INTEL_MANUFACT) &&
-                   (addr[2] == addr[3]) && (addr[2] == INTEL_ID_28F160F3T)) {
-
-                       flash_info[i].flash_id =
-                               (FLASH_MAN_INTEL & FLASH_VENDMASK) |
-                               (INTEL_ID_28F160F3T & FLASH_TYPEMASK);
-
-               } else if ((addr[0] == addr[1]) && (addr[0] == INTEL_MANUFACT)
-                        && (addr[2] == addr[3])
-                        && (addr[2] == INTEL_ID_28F160C3T)) {
-
-                       flash_info[i].flash_id =
-                               (FLASH_MAN_INTEL & FLASH_VENDMASK) |
-                               (INTEL_ID_28F160C3T & FLASH_TYPEMASK);
-
-               } else {
-                       flash_info[i].flash_id = FLASH_UNKNOWN;
-                       addr[0] = 0xFFFFFFFF;
-                       goto Done;
-               }
-
-               DEBUGF ("flash_id = 0x%08lX\n", flash_info[i].flash_id);
-
-               addr[0] = 0xFFFFFFFF;
-
-               flash_info[i].size = FLASH_BANK_SIZE;
-               flash_info[i].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-               memset (flash_info[i].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
-               for (j = 0; j < flash_info[i].sector_count; j++) {
-                       if (j > 30) {
-                               flash_info[i].start[j] = CONFIG_SYS_FLASH_BASE +
-                                       i * FLASH_BANK_SIZE +
-                                       (MAIN_SECT_SIZE * 31) + (j -
-                                                                31) *
-                                       PARAM_SECT_SIZE;
-                       } else {
-                               flash_info[i].start[j] = CONFIG_SYS_FLASH_BASE +
-                                       i * FLASH_BANK_SIZE +
-                                       j * MAIN_SECT_SIZE;
-                       }
-               }
-
-               /* unlock sectors, if 160C3T */
-
-               for (j = 0; j < flash_info[i].sector_count; j++) {
-                       tmpaddr = (vu_long *) flash_info[i].start[j];
-
-                       if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
-                           (INTEL_ID_28F160C3T & FLASH_TYPEMASK)) {
-                               tmpaddr[0] = 0x00600060;
-                               tmpaddr[0] = 0x00D000D0;
-                               tmpaddr[1] = 0x00600060;
-                               tmpaddr[1] = 0x00D000D0;
-                       }
-               }
-
-               size += flash_info[i].size;
-
-               addr[0] = 0x00FF00FF;
-               addr[1] = 0x00FF00FF;
-       }
-
-       /* Protect monitor and environment sectors
-        */
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE + FLASH_BANK_SIZE
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_SYS_MONITOR_BASE,
-                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                      &flash_info[1]);
-#else
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_SYS_MONITOR_BASE,
-                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                      &flash_info[0]);
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-#if CONFIG_ENV_ADDR >= CONFIG_SYS_FLASH_BASE + FLASH_BANK_SIZE
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR,
-                      CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[1]);
-#else
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR,
-                      CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-#endif
-
-Done:
-       return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       switch ((i = info->flash_id & FLASH_VENDMASK)) {
-       case (FLASH_MAN_INTEL & FLASH_VENDMASK):
-               printf ("Intel: ");
-               break;
-       default:
-               printf ("Unknown Vendor 0x%04x ", i);
-               break;
-       }
-
-       switch ((i = info->flash_id & FLASH_TYPEMASK)) {
-       case (INTEL_ID_28F160F3T & FLASH_TYPEMASK):
-               printf ("28F160F3T (16Mbit)\n");
-               break;
-
-       case (INTEL_ID_28F160C3T & FLASH_TYPEMASK):
-               printf ("28F160C3T (16Mbit)\n");
-               break;
-
-       default:
-               printf ("Unknown Chip Type 0x%04x\n", i);
-               goto Done;
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; i++) {
-               if ((i % 5) == 0) {
-                       printf ("\n   ");
-               }
-               printf (" %08lX%s", info->start[i],
-                       info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-
-Done:
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       DEBUGF ("Erase flash bank %d sect %d ... %d\n",
-               info - &flash_info[0], s_first, s_last);
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) !=
-           (FLASH_MAN_INTEL & FLASH_VENDMASK)) {
-               printf ("Can erase only Intel flash types - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n", prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_long *addr = (vu_long *) (info->start[sect]);
-
-                       DEBUGF ("Erase sect %d @ 0x%08lX\n",
-                               sect, (ulong) addr);
-
-                       /* Disable interrupts which might cause a timeout
-                        * here.
-                        */
-                       flag = disable_interrupts ();
-
-                       addr[0] = 0x00500050;   /* clear status register */
-                       addr[0] = 0x00200020;   /* erase setup */
-                       addr[0] = 0x00D000D0;   /* erase confirm */
-
-                       addr[1] = 0x00500050;   /* clear status register */
-                       addr[1] = 0x00200020;   /* erase setup */
-                       addr[1] = 0x00D000D0;   /* erase confirm */
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts ();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((addr[0] & 0x00800080) != 0x00800080) ||
-                              ((addr[1] & 0x00800080) != 0x00800080)) {
-                               if ((now = get_timer (start)) >
-                                   CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       addr[0] = 0x00B000B0;   /* suspend erase */
-                                       addr[0] = 0x00FF00FF;   /* to read mode  */
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second  */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       addr[0] = 0x00FF00FF;
-               }
-       }
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define        FLASH_WIDTH     8       /* flash bus width in bytes */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong wp, cp, msr;
-       int l, rc, i;
-       ulong data[2];
-       ulong *datah = &data[0];
-       ulong *datal = &data[1];
-
-       DEBUGF ("Flash write_buff: @ 0x%08lx, src 0x%08lx len %ld\n",
-               addr, (ulong) src, cnt);
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-
-       msr = get_msr ();
-       set_msr (msr | MSR_FP);
-
-       wp = (addr & ~(FLASH_WIDTH - 1));       /* get lower aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               *datah = *datal = 0;
-
-               for (i = 0, cp = wp; i < l; i++, cp++) {
-                       if (i >= 4) {
-                               *datah = (*datah << 8) |
-                                       ((*datal & 0xFF000000) >> 24);
-                       }
-
-                       *datal = (*datal << 8) | (*(uchar *) cp);
-               }
-               for (; i < FLASH_WIDTH && cnt > 0; ++i) {
-                       char tmp = *src++;
-
-                       if (i >= 4) {
-                               *datah = (*datah << 8) |
-                                       ((*datal & 0xFF000000) >> 24);
-                       }
-
-                       *datal = (*datal << 8) | tmp;
-                       --cnt;
-                       ++cp;
-               }
-
-               for (; cnt == 0 && i < FLASH_WIDTH; ++i, ++cp) {
-                       if (i >= 4) {
-                               *datah = (*datah << 8) |
-                                       ((*datal & 0xFF000000) >> 24);
-                       }
-
-                       *datal = (*datah << 8) | (*(uchar *) cp);
-               }
-
-               if ((rc = write_data (info, wp, data)) != 0) {
-                       set_msr (msr);
-                       return (rc);
-               }
-
-               wp += FLASH_WIDTH;
-       }
-
-       /*
-        * handle FLASH_WIDTH aligned part
-        */
-       while (cnt >= FLASH_WIDTH) {
-               *datah = *(ulong *) src;
-               *datal = *(ulong *) (src + 4);
-               if ((rc = write_data (info, wp, data)) != 0) {
-                       set_msr (msr);
-                       return (rc);
-               }
-               wp += FLASH_WIDTH;
-               cnt -= FLASH_WIDTH;
-               src += FLASH_WIDTH;
-       }
-
-       if (cnt == 0) {
-               set_msr (msr);
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       *datah = *datal = 0;
-       for (i = 0, cp = wp; i < FLASH_WIDTH && cnt > 0; ++i, ++cp) {
-               char tmp = *src++;
-
-               if (i >= 4) {
-                       *datah = (*datah << 8) | ((*datal & 0xFF000000) >>
-                                                 24);
-               }
-
-               *datal = (*datal << 8) | tmp;
-               --cnt;
-       }
-
-       for (; i < FLASH_WIDTH; ++i, ++cp) {
-               if (i >= 4) {
-                       *datah = (*datah << 8) | ((*datal & 0xFF000000) >>
-                                                 24);
-               }
-
-               *datal = (*datal << 8) | (*(uchar *) cp);
-       }
-
-       rc = write_data (info, wp, data);
-       set_msr (msr);
-
-       return (rc);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, ulong * data)
-{
-       vu_long *addr = (vu_long *) dest;
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if (((addr[0] & data[0]) != data[0]) ||
-           ((addr[1] & data[1]) != data[1])) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts ();
-
-       addr[0] = 0x00400040;   /* write setup */
-       write_via_fpu (addr, data);
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts ();
-
-       start = get_timer (0);
-
-       while (((addr[0] & 0x00800080) != 0x00800080) ||
-              ((addr[1] & 0x00800080) != 0x00800080)) {
-               if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       addr[0] = 0x00FF00FF;   /* restore read mode */
-                       return (1);
-               }
-       }
-
-       addr[0] = 0x00FF00FF;   /* restore read mode */
-
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void write_via_fpu (vu_long * addr, ulong * data)
-{
-       __asm__ __volatile__ ("lfd  1, 0(%0)"::"r" (data));
-       __asm__ __volatile__ ("stfd 1, 0(%0)"::"r" (addr));
-}
-
-/*-----------------------------------------------------------------------
- */
-static __inline__ unsigned long get_msr (void)
-{
-       unsigned long msr;
-
-       __asm__ __volatile__ ("mfmsr %0":"=r" (msr):);
-
-       return msr;
-}
-
-static __inline__ void set_msr (unsigned long msr)
-{
-       __asm__ __volatile__ ("mtmsr %0"::"r" (msr));
-}
diff --git a/board/cpc45/ide.c b/board/cpc45/ide.c
deleted file mode 100644 (file)
index 1944e36..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * (C) Copyright 2000-2011
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ide.h>
-#include <ata.h>
-#include <asm/io.h>
-
-#define EIEIO          __asm__ volatile ("eieio")
-#define SYNC           __asm__ volatile ("sync")
-
-void ide_input_swap_data(int dev, ulong *sect_buf, int words)
-{
-       uchar i;
-       volatile uchar *pbuf_even =
-               (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
-       volatile uchar *pbuf_odd =
-               (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
-       ushort *dbuf = (ushort *) sect_buf;
-
-       while (words--) {
-               for (i = 0; i < 2; i++) {
-                       *(((uchar *) (dbuf)) + 1) = *pbuf_even;
-                       *(uchar *) dbuf = *pbuf_odd;
-                       dbuf += 1;
-               }
-       }
-}
-
-void ide_input_data(int dev, ulong *sect_buf, int words)
-{
-       uchar *dbuf;
-       volatile uchar *pbuf_even;
-       volatile uchar *pbuf_odd;
-
-       pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
-       pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
-       dbuf = (uchar *) sect_buf;
-       while (words--) {
-               *dbuf++ = *pbuf_even;
-               EIEIO;
-               SYNC;
-               *dbuf++ = *pbuf_odd;
-               EIEIO;
-               SYNC;
-               *dbuf++ = *pbuf_even;
-               EIEIO;
-               SYNC;
-               *dbuf++ = *pbuf_odd;
-               EIEIO;
-               SYNC;
-       }
-}
-
-void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts)
-{
-       uchar *dbuf;
-       volatile uchar *pbuf_even;
-       volatile uchar *pbuf_odd;
-
-       pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
-       pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
-       dbuf = (uchar *) sect_buf;
-       while (shorts--) {
-               EIEIO;
-               *dbuf++ = *pbuf_even;
-               EIEIO;
-               *dbuf++ = *pbuf_odd;
-       }
-}
-
-void ide_output_data(int dev, const ulong *sect_buf, int words)
-{
-       uchar *dbuf;
-       volatile uchar *pbuf_even;
-       volatile uchar *pbuf_odd;
-
-       pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
-       pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
-       dbuf = (uchar *) sect_buf;
-       while (words--) {
-               EIEIO;
-               *pbuf_even = *dbuf++;
-               EIEIO;
-               *pbuf_odd = *dbuf++;
-               EIEIO;
-               *pbuf_even = *dbuf++;
-               EIEIO;
-               *pbuf_odd = *dbuf++;
-       }
-}
-
-void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts)
-{
-       uchar *dbuf;
-       volatile uchar *pbuf_even;
-       volatile uchar *pbuf_odd;
-
-       pbuf_even = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_EVEN);
-       pbuf_odd = (uchar *) (ATA_CURR_BASE(dev) + ATA_DATA_ODD);
-       dbuf = (uchar *) sect_buf;
-       while (shorts--) {
-               EIEIO;
-               *pbuf_even = *dbuf++;
-               EIEIO;
-               *pbuf_odd = *dbuf++;
-       }
-}
-
-void ide_led(uchar led, uchar status)
-{
-       u_char  val;
-       /* We have one PCMCIA slot and use LED H4 for the IDE Interface */
-       val = readb(BCSR_BASE + 0x04);
-       if (status)                             /* led on */
-               val |= B_CTRL_LED0;
-       else
-               val &= ~B_CTRL_LED0;
-
-       writeb(val, BCSR_BASE + 0x04);
-}
diff --git a/board/cpc45/pd67290.c b/board/cpc45/pd67290.c
deleted file mode 100644 (file)
index 23d87f6..0000000
+++ /dev/null
@@ -1,797 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- ********************************************************************
- *
- * Lots of code copied from:
- *
- * i82365.c 1.352 - Linux driver for Intel 82365 and compatible
- * PC Card controllers, and Yenta-compatible PCI-to-CardBus controllers.
- * (C) 1999 David A. Hinds <dahinds@users.sourceforge.net>
- */
-
-#include <common.h>
-
-#ifdef CONFIG_I82365
-
-#include <command.h>
-#include <pci.h>
-#include <pcmcia.h>
-#include <asm/io.h>
-
-#include <pcmcia/ss.h>
-#include <pcmcia/i82365.h>
-#include <pcmcia/yenta.h>
-#include <pcmcia/cirrus.h>
-
-static struct pci_device_id supported[] = {
-       {PCI_VENDOR_ID_CIRRUS, PCI_DEVICE_ID_CIRRUS_6729},
-       {0, 0}
-};
-
-#define CYCLE_TIME     120
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev);
-#endif
-
-typedef struct socket_info_t {
-       pci_dev_t       dev;
-       u_short         bcr;
-       u_char          pci_lat, cb_lat, sub_bus, cache;
-       u_int           cb_phys;
-
-       socket_cap_t    cap;
-       u_short         type;
-       u_int           flags;
-       cirrus_state_t  c_state;
-} socket_info_t;
-
-/* These definitions must match the pcic table! */
-typedef enum pcic_id {
-       IS_PD6710, IS_PD672X, IS_VT83C469
-} pcic_id;
-
-typedef struct pcic_t {
-       char *name;
-} pcic_t;
-
-static pcic_t pcic[] = {
-       {" Cirrus PD6710: "},
-       {" Cirrus PD672x: "},
-       {" VIA VT83C469: "},
-};
-
-static socket_info_t socket;
-static socket_state_t state;
-static struct pccard_mem_map mem;
-static struct pccard_io_map io;
-
-/*====================================================================*/
-
-/* Some PCI shortcuts */
-
-static int pci_readb (socket_info_t * s, int r, u_char * v)
-{
-       return pci_read_config_byte (s->dev, r, v);
-}
-static int pci_writeb (socket_info_t * s, int r, u_char v)
-{
-       return pci_write_config_byte (s->dev, r, v);
-}
-static int pci_readw (socket_info_t * s, int r, u_short * v)
-{
-       return pci_read_config_word (s->dev, r, v);
-}
-static int pci_writew (socket_info_t * s, int r, u_short v)
-{
-       return pci_write_config_word (s->dev, r, v);
-}
-
-/*====================================================================*/
-
-#define cb_readb(s)            readb((s)->cb_phys + 1)
-#define cb_writeb(s, v)                writeb(v, (s)->cb_phys)
-#define cb_writeb2(s, v)       writeb(v, (s)->cb_phys + 1)
-#define cb_readl(s, r)         readl((s)->cb_phys + (r))
-#define cb_writel(s, r, v)     writel(v, (s)->cb_phys + (r))
-
-
-static u_char i365_get (socket_info_t * s, u_short reg)
-{
-       u_char val;
-#ifdef CONFIG_PCMCIA_SLOT_A
-       int slot = 0;
-#else
-       int slot = 1;
-#endif
-
-       val = I365_REG (slot, reg);
-
-       cb_writeb (s, val);
-       val = cb_readb (s);
-
-       debug ("i365_get slot:%x reg: %x val: %x\n", slot, reg, val);
-       return val;
-}
-
-static void i365_set (socket_info_t * s, u_short reg, u_char data)
-{
-#ifdef CONFIG_PCMCIA_SLOT_A
-       int slot = 0;
-#else
-       int slot = 1;
-#endif
-       u_char val;
-
-       val = I365_REG (slot, reg);
-
-       cb_writeb (s, val);
-       cb_writeb2 (s, data);
-
-       debug ("i365_set slot:%x reg: %x data:%x\n", slot, reg, data);
-}
-
-static void i365_bset (socket_info_t * s, u_short reg, u_char mask)
-{
-       i365_set (s, reg, i365_get (s, reg) | mask);
-}
-
-static void i365_bclr (socket_info_t * s, u_short reg, u_char mask)
-{
-       i365_set (s, reg, i365_get (s, reg) & ~mask);
-}
-
-#if 0  /* not used */
-static void i365_bflip (socket_info_t * s, u_short reg, u_char mask, int b)
-{
-       u_char d = i365_get (s, reg);
-
-       i365_set (s, reg, (b) ? (d | mask) : (d & ~mask));
-}
-
-static u_short i365_get_pair (socket_info_t * s, u_short reg)
-{
-       return (i365_get (s, reg) + (i365_get (s, reg + 1) << 8));
-}
-#endif /* not used */
-
-static void i365_set_pair (socket_info_t * s, u_short reg, u_short data)
-{
-       i365_set (s, reg, data & 0xff);
-       i365_set (s, reg + 1, data >> 8);
-}
-
-/*======================================================================
-
-    Code to save and restore global state information for Cirrus
-    PD67xx controllers, and to set and report global configuration
-    options.
-
-======================================================================*/
-
-#define flip(v,b,f) (v = ((f)<0) ? v : ((f) ? ((v)|(b)) : ((v)&(~b))))
-
-static void cirrus_get_state (socket_info_t * s)
-{
-       int i;
-       cirrus_state_t *p = &s->c_state;
-
-       p->misc1 = i365_get (s, PD67_MISC_CTL_1);
-       p->misc1 &= (PD67_MC1_MEDIA_ENA | PD67_MC1_INPACK_ENA);
-       p->misc2 = i365_get (s, PD67_MISC_CTL_2);
-       for (i = 0; i < 6; i++)
-               p->timer[i] = i365_get (s, PD67_TIME_SETUP (0) + i);
-
-}
-
-static void cirrus_set_state (socket_info_t * s)
-{
-       int i;
-       u_char misc;
-       cirrus_state_t *p = &s->c_state;
-
-       misc = i365_get (s, PD67_MISC_CTL_2);
-       i365_set (s, PD67_MISC_CTL_2, p->misc2);
-       if (misc & PD67_MC2_SUSPEND)
-               udelay (50000);
-       misc = i365_get (s, PD67_MISC_CTL_1);
-       misc &= ~(PD67_MC1_MEDIA_ENA | PD67_MC1_INPACK_ENA);
-       i365_set (s, PD67_MISC_CTL_1, misc | p->misc1);
-       for (i = 0; i < 6; i++)
-               i365_set (s, PD67_TIME_SETUP (0) + i, p->timer[i]);
-}
-
-static u_int cirrus_set_opts (socket_info_t * s)
-{
-       cirrus_state_t *p = &s->c_state;
-       u_int mask = 0xffff;
-       char buf[200] = {0};
-
-       if (has_ring == -1)
-               has_ring = 1;
-       flip (p->misc2, PD67_MC2_IRQ15_RI, has_ring);
-       flip (p->misc2, PD67_MC2_DYNAMIC_MODE, dynamic_mode);
-#if DEBUG
-       if (p->misc2 & PD67_MC2_IRQ15_RI)
-               strcat (buf, " [ring]");
-       if (p->misc2 & PD67_MC2_DYNAMIC_MODE)
-               strcat (buf, " [dyn mode]");
-       if (p->misc1 & PD67_MC1_INPACK_ENA)
-               strcat (buf, " [inpack]");
-#endif
-
-       if (p->misc2 & PD67_MC2_IRQ15_RI)
-               mask &= ~0x8000;
-       if (has_led > 0) {
-#if DEBUG
-               strcat (buf, " [led]");
-#endif
-               mask &= ~0x1000;
-       }
-       if (has_dma > 0) {
-#if DEBUG
-               strcat (buf, " [dma]");
-#endif
-               mask &= ~0x0600;
-               flip (p->misc2, PD67_MC2_FREQ_BYPASS, freq_bypass);
-#if DEBUG
-               if (p->misc2 & PD67_MC2_FREQ_BYPASS)
-                       strcat (buf, " [freq bypass]");
-#endif
-       }
-
-       if (setup_time >= 0)
-               p->timer[0] = p->timer[3] = setup_time;
-       if (cmd_time > 0) {
-               p->timer[1] = cmd_time;
-               p->timer[4] = cmd_time * 2 + 4;
-       }
-       if (p->timer[1] == 0) {
-               p->timer[1] = 6;
-               p->timer[4] = 16;
-               if (p->timer[0] == 0)
-                       p->timer[0] = p->timer[3] = 1;
-       }
-       if (recov_time >= 0)
-               p->timer[2] = p->timer[5] = recov_time;
-
-       debug ("i82365 Opt: %s [%d/%d/%d] [%d/%d/%d]\n",
-               buf,
-               p->timer[0], p->timer[1], p->timer[2],
-               p->timer[3], p->timer[4], p->timer[5]);
-
-       return mask;
-}
-
-/*======================================================================
-
-    Routines to handle common CardBus options
-
-======================================================================*/
-
-/* Default settings for PCI command configuration register */
-#define CMD_DFLT (PCI_COMMAND_IO|PCI_COMMAND_MEMORY| \
-                 PCI_COMMAND_MASTER|PCI_COMMAND_WAIT)
-
-static void cb_get_state (socket_info_t * s)
-{
-       pci_readb (s, PCI_CACHE_LINE_SIZE, &s->cache);
-       pci_readb (s, PCI_LATENCY_TIMER, &s->pci_lat);
-       pci_readb (s, CB_LATENCY_TIMER, &s->cb_lat);
-       pci_readb (s, CB_CARDBUS_BUS, &s->cap.cardbus);
-       pci_readb (s, CB_SUBORD_BUS, &s->sub_bus);
-       pci_readw (s, CB_BRIDGE_CONTROL, &s->bcr);
-}
-
-static void cb_set_state (socket_info_t * s)
-{
-       pci_writew (s, PCI_COMMAND, CMD_DFLT);
-       pci_writeb (s, PCI_CACHE_LINE_SIZE, s->cache);
-       pci_writeb (s, PCI_LATENCY_TIMER, s->pci_lat);
-       pci_writeb (s, CB_LATENCY_TIMER, s->cb_lat);
-       pci_writeb (s, CB_CARDBUS_BUS, s->cap.cardbus);
-       pci_writeb (s, CB_SUBORD_BUS, s->sub_bus);
-       pci_writew (s, CB_BRIDGE_CONTROL, s->bcr);
-}
-
-static void cb_set_opts (socket_info_t * s)
-{
-}
-
-/*======================================================================
-
-    Power control for Cardbus controllers: used both for 16-bit and
-    Cardbus cards.
-
-======================================================================*/
-
-static int cb_set_power (socket_info_t * s, socket_state_t * state)
-{
-       u_int reg = 0;
-
-       reg = I365_PWR_NORESET;
-       if (state->flags & SS_PWR_AUTO)
-               reg |= I365_PWR_AUTO;
-       if (state->flags & SS_OUTPUT_ENA)
-               reg |= I365_PWR_OUT;
-       if (state->Vpp != 0) {
-               if (state->Vpp == 120) {
-                       reg |= I365_VPP1_12V;
-                       puts (" 12V card found: ");
-               } else if (state->Vpp == state->Vcc) {
-                       reg |= I365_VPP1_5V;
-               } else {
-                       puts (" power not found: ");
-                       return -1;
-               }
-       }
-       if (state->Vcc != 0) {
-               reg |= I365_VCC_5V;
-               if (state->Vcc == 33) {
-                       puts (" 3.3V card found: ");
-                       i365_bset (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               } else if (state->Vcc == 50) {
-                       puts (" 5V card found: ");
-                       i365_bclr (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               } else {
-                       puts (" power not found: ");
-                       return -1;
-               }
-       }
-
-       if (reg != i365_get (s, I365_POWER)) {
-               reg = (I365_PWR_OUT | I365_PWR_NORESET | I365_VCC_5V | I365_VPP1_5V);
-               i365_set (s, I365_POWER, reg);
-       }
-
-       return 0;
-}
-
-/*======================================================================
-
-    Generic routines to get and set controller options
-
-======================================================================*/
-
-static void get_bridge_state (socket_info_t * s)
-{
-       cirrus_get_state (s);
-       cb_get_state (s);
-}
-
-static void set_bridge_state (socket_info_t * s)
-{
-       cb_set_state (s);
-       i365_set (s, I365_GBLCTL, 0x00);
-       i365_set (s, I365_GENCTL, 0x00);
-       cirrus_set_state (s);
-}
-
-static void set_bridge_opts (socket_info_t * s)
-{
-       cirrus_set_opts (s);
-       cb_set_opts (s);
-}
-
-/*====================================================================*/
-#define PD67_EXT_INDEX         0x2e    /* Extension index */
-#define PD67_EXT_DATA          0x2f    /* Extension data */
-#define PD67_EXD_VS1(s)                (0x01 << ((s)<<1))
-
-#define pd67_ext_get(s, r) \
-    (i365_set(s, PD67_EXT_INDEX, r), i365_get(s, PD67_EXT_DATA))
-
-static int i365_get_status (socket_info_t * s, u_int * value)
-{
-       u_int status;
-       u_char val;
-       u_char power, vcc, vpp;
-       u_int powerstate;
-
-       status = i365_get (s, I365_IDENT);
-       status = i365_get (s, I365_STATUS);
-       *value = ((status & I365_CS_DETECT) == I365_CS_DETECT) ? SS_DETECT : 0;
-       if (i365_get (s, I365_INTCTL) & I365_PC_IOCARD) {
-               *value |= (status & I365_CS_STSCHG) ? 0 : SS_STSCHG;
-       } else {
-               *value |= (status & I365_CS_BVD1) ? 0 : SS_BATDEAD;
-               *value |= (status & I365_CS_BVD2) ? 0 : SS_BATWARN;
-       }
-       *value |= (status & I365_CS_WRPROT) ? SS_WRPROT : 0;
-       *value |= (status & I365_CS_READY) ? SS_READY : 0;
-       *value |= (status & I365_CS_POWERON) ? SS_POWERON : 0;
-
-       /* Check for Cirrus CL-PD67xx chips */
-       i365_set (s, PD67_CHIP_INFO, 0);
-       val = i365_get (s, PD67_CHIP_INFO);
-       s->type = -1;
-       if ((val & PD67_INFO_CHIP_ID) == PD67_INFO_CHIP_ID) {
-               val = i365_get (s, PD67_CHIP_INFO);
-               if ((val & PD67_INFO_CHIP_ID) == 0) {
-                       s->type = (val & PD67_INFO_SLOTS) ? IS_PD672X : IS_PD6710;
-                       i365_set (s, PD67_EXT_INDEX, 0xe5);
-                       if (i365_get (s, PD67_EXT_INDEX) != 0xe5)
-                               s->type = IS_VT83C469;
-               }
-       } else {
-               printf ("no Cirrus Chip found\n");
-               *value = 0;
-               return -1;
-       }
-
-       power = i365_get (s, I365_POWER);
-       state.flags |= (power & I365_PWR_AUTO) ? SS_PWR_AUTO : 0;
-       state.flags |= (power & I365_PWR_OUT) ? SS_OUTPUT_ENA : 0;
-       vcc = power & I365_VCC_MASK;
-       vpp = power & I365_VPP1_MASK;
-       state.Vcc = state.Vpp = 0;
-       if((vcc== 0) || (vpp == 0)) {
-               /*
-                * On the Cirrus we get the info which card voltage
-                * we have in EXTERN DATA and write it to MISC_CTL1
-                */
-               powerstate = pd67_ext_get(s, PD67_EXTERN_DATA);
-               if (powerstate & PD67_EXD_VS1(0)) {
-                       /* 5V Card */
-                       i365_bclr (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               } else {
-                       /* 3.3V Card */
-                       i365_bset (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               }
-               i365_set (s, I365_POWER, (I365_PWR_OUT | I365_PWR_NORESET | I365_VCC_5V | I365_VPP1_5V));
-               power = i365_get (s, I365_POWER);
-       }
-       if (power & I365_VCC_5V) {
-               state.Vcc = (i365_get(s, PD67_MISC_CTL_1) & PD67_MC1_VCC_3V) ? 33 : 50;
-       }
-
-       if (power == I365_VPP1_12V)
-               state.Vpp = 120;
-
-       /* IO card, RESET flags, IO interrupt */
-       power = i365_get (s, I365_INTCTL);
-       state.flags |= (power & I365_PC_RESET) ? 0 : SS_RESET;
-       if (power & I365_PC_IOCARD)
-               state.flags |= SS_IOCARD;
-       state.io_irq = power & I365_IRQ_MASK;
-
-       /* Card status change mask */
-       power = i365_get (s, I365_CSCINT);
-       state.csc_mask = (power & I365_CSC_DETECT) ? SS_DETECT : 0;
-       if (state.flags & SS_IOCARD)
-               state.csc_mask |= (power & I365_CSC_STSCHG) ? SS_STSCHG : 0;
-       else {
-               state.csc_mask |= (power & I365_CSC_BVD1) ? SS_BATDEAD : 0;
-               state.csc_mask |= (power & I365_CSC_BVD2) ? SS_BATWARN : 0;
-               state.csc_mask |= (power & I365_CSC_READY) ? SS_READY : 0;
-       }
-       debug ("i82365: GetStatus(0) = flags %#3.3x, Vcc %d, Vpp %d, "
-               "io_irq %d, csc_mask %#2.2x\n", state.flags,
-               state.Vcc, state.Vpp, state.io_irq, state.csc_mask);
-
-       return 0;
-}      /* i365_get_status */
-
-static int i365_set_socket (socket_info_t * s, socket_state_t * state)
-{
-       u_char reg;
-
-       set_bridge_state (s);
-
-       /* IO card, RESET flag */
-       reg = 0;
-       reg |= (state->flags & SS_RESET) ? 0 : I365_PC_RESET;
-       reg |= (state->flags & SS_IOCARD) ? I365_PC_IOCARD : 0;
-       i365_set (s, I365_INTCTL, reg);
-
-       cb_set_power (s, state);
-
-#if 0
-       /* Card status change interrupt mask */
-       reg = s->cs_irq << 4;
-       if (state->csc_mask & SS_DETECT)
-               reg |= I365_CSC_DETECT;
-       if (state->flags & SS_IOCARD) {
-               if (state->csc_mask & SS_STSCHG)
-                       reg |= I365_CSC_STSCHG;
-       } else {
-               if (state->csc_mask & SS_BATDEAD)
-                       reg |= I365_CSC_BVD1;
-               if (state->csc_mask & SS_BATWARN)
-                       reg |= I365_CSC_BVD2;
-               if (state->csc_mask & SS_READY)
-                       reg |= I365_CSC_READY;
-       }
-       i365_set (s, I365_CSCINT, reg);
-       i365_get (s, I365_CSC);
-#endif /* 0 */
-
-       return 0;
-}      /* i365_set_socket */
-
-/*====================================================================*/
-
-static int i365_set_mem_map (socket_info_t * s, struct pccard_mem_map *mem)
-{
-       u_short base, i;
-       u_char map;
-
-       debug ("i82365: SetMemMap(%d, %#2.2x, %d ns, %#5.5lx-%#5.5lx, %#5.5x)\n",
-               mem->map, mem->flags, mem->speed,
-               mem->sys_start, mem->sys_stop, mem->card_start);
-
-       map = mem->map;
-       if ((map > 4) ||
-           (mem->card_start > 0x3ffffff) ||
-           (mem->sys_start > mem->sys_stop) ||
-           (mem->speed > 1000)) {
-               return -1;
-       }
-
-       /* Turn off the window before changing anything */
-       if (i365_get (s, I365_ADDRWIN) & I365_ENA_MEM (map))
-               i365_bclr (s, I365_ADDRWIN, I365_ENA_MEM (map));
-
-       /* Take care of high byte, for PCI controllers */
-       i365_set (s, CB_MEM_PAGE (map), mem->sys_start >> 24);
-
-       base = I365_MEM (map);
-       i = (mem->sys_start >> 12) & 0x0fff;
-       if (mem->flags & MAP_16BIT)
-               i |= I365_MEM_16BIT;
-       if (mem->flags & MAP_0WS)
-               i |= I365_MEM_0WS;
-       i365_set_pair (s, base + I365_W_START, i);
-
-       i = (mem->sys_stop >> 12) & 0x0fff;
-       switch (mem->speed / CYCLE_TIME) {
-       case 0:
-               break;
-       case 1:
-               i |= I365_MEM_WS0;
-               break;
-       case 2:
-               i |= I365_MEM_WS1;
-               break;
-       default:
-               i |= I365_MEM_WS1 | I365_MEM_WS0;
-               break;
-       }
-       i365_set_pair (s, base + I365_W_STOP, i);
-
-       i = 0;
-       if (mem->flags & MAP_WRPROT)
-               i |= I365_MEM_WRPROT;
-       if (mem->flags & MAP_ATTRIB)
-               i |= I365_MEM_REG;
-       i365_set_pair (s, base + I365_W_OFF, i);
-
-       /* set System Memory map Upper Adress */
-       i365_set(s, PD67_EXT_INDEX, PD67_MEM_PAGE(map));
-       i365_set(s, PD67_EXT_DATA, ((mem->sys_start >> 24) & 0xff));
-
-       /* Turn on the window if necessary */
-       if (mem->flags & MAP_ACTIVE)
-               i365_bset (s, I365_ADDRWIN, I365_ENA_MEM (map));
-       return 0;
-}      /* i365_set_mem_map */
-
-static int i365_set_io_map (socket_info_t * s, struct pccard_io_map *io)
-{
-       u_char map, ioctl;
-
-       map = io->map;
-       /* comment out: comparison is always false due to limited range of data type */
-       if ((map > 1) || /* (io->start > 0xffff) || (io->stop > 0xffff) || */
-           (io->stop < io->start))
-               return -1;
-       /* Turn off the window before changing anything */
-       if (i365_get (s, I365_ADDRWIN) & I365_ENA_IO (map))
-               i365_bclr (s, I365_ADDRWIN, I365_ENA_IO (map));
-       i365_set_pair (s, I365_IO (map) + I365_W_START, io->start);
-       i365_set_pair (s, I365_IO (map) + I365_W_STOP, io->stop);
-       ioctl = i365_get (s, I365_IOCTL) & ~I365_IOCTL_MASK (map);
-       if (io->speed)
-               ioctl |= I365_IOCTL_WAIT (map);
-       if (io->flags & MAP_0WS)
-               ioctl |= I365_IOCTL_0WS (map);
-       if (io->flags & MAP_16BIT)
-               ioctl |= I365_IOCTL_16BIT (map);
-       if (io->flags & MAP_AUTOSZ)
-               ioctl |= I365_IOCTL_IOCS16 (map);
-       i365_set (s, I365_IOCTL, ioctl);
-       /* Turn on the window if necessary */
-       if (io->flags & MAP_ACTIVE)
-               i365_bset (s, I365_ADDRWIN, I365_ENA_IO (map));
-       return 0;
-}      /* i365_set_io_map */
-
-/*====================================================================*/
-
-/*
- * PCI_ADDR = (HOST_ADDR - 0xfe000000)
- * see MPC 8245 Users Manual Adress Map B
- */
-#define        HOST_TO_PCI(addr)       ((addr) - 0xfe000000)
-#define        PCI_TO_HOST(addr)       ((addr) + 0xfe000000)
-
-static int i82365_init (void)
-{
-       u_int val;
-       int i;
-
-       if ((socket.dev = pci_find_devices (supported, 0)) < 0) {
-               /* Controller not found */
-               printf ("No PD67290 device found !!\n");
-               return 1;
-       }
-       debug ("i82365 Device Found!\n");
-
-       socket.cb_phys = PCMCIA_IO_BASE;
-
-       /* set base address */
-       pci_write_config_dword (socket.dev, PCI_BASE_ADDRESS_0,
-               HOST_TO_PCI(socket.cb_phys));
-
-       /* enable mapped memory and IO addresses */
-       pci_write_config_dword (socket.dev,
-                               PCI_COMMAND,
-                               PCI_COMMAND_MEMORY |
-                               PCI_COMMAND_IO | PCI_COMMAND_WAIT);
-
-       get_bridge_state (&socket);
-       set_bridge_opts (&socket);
-
-       i = i365_get_status (&socket, &val);
-
-       if (i > -1) {
-               puts (pcic[socket.type].name);
-       } else {
-               printf ("i82365: Controller not found.\n");
-               return 1;
-       }
-       if((val & SS_DETECT) != SS_DETECT){
-               puts ("No card\n");
-               return 1;
-       }
-
-       state.flags |= SS_OUTPUT_ENA;
-
-       i365_set_socket (&socket, &state);
-
-       for (i = 500; i; i--) {
-               if ((i365_get (&socket, I365_STATUS) & I365_CS_READY))
-                       break;
-               udelay (1000);
-       }
-
-       if (i == 0) {
-               /* PC Card not ready for data transfer */
-               puts ("i82365 PC Card not ready for data transfer\n");
-               return 1;
-       }
-       debug (" PC Card ready for data transfer: ");
-
-       mem.map = 0;
-       mem.flags = MAP_ATTRIB | MAP_ACTIVE;
-       mem.speed = 300;
-       mem.sys_start = CONFIG_SYS_PCMCIA_MEM_ADDR;
-       mem.sys_stop = CONFIG_SYS_PCMCIA_MEM_ADDR + CONFIG_SYS_PCMCIA_MEM_SIZE - 1;
-       mem.card_start = 0;
-       i365_set_mem_map (&socket, &mem);
-
-       mem.map = 1;
-       mem.flags = MAP_ACTIVE;
-       mem.speed = 300;
-       mem.sys_start = CONFIG_SYS_PCMCIA_MEM_ADDR + CONFIG_SYS_PCMCIA_MEM_SIZE;
-       mem.sys_stop = CONFIG_SYS_PCMCIA_MEM_ADDR + (2 * CONFIG_SYS_PCMCIA_MEM_SIZE) - 1;
-       mem.card_start = 0;
-       i365_set_mem_map (&socket, &mem);
-
-#ifdef DEBUG
-       i82365_dump_regions (socket.dev);
-#endif
-
-       return 0;
-}
-
-static void i82365_exit (void)
-{
-       io.map = 0;
-       io.flags = 0;
-       io.speed = 0;
-       io.start = 0;
-       io.stop = 0x1;
-
-       i365_set_io_map (&socket, &io);
-
-       mem.map = 0;
-       mem.flags = 0;
-       mem.speed = 0;
-       mem.sys_start = 0;
-       mem.sys_stop = 0x1000;
-       mem.card_start = 0;
-
-       i365_set_mem_map (&socket, &mem);
-
-       mem.map = 1;
-       mem.flags = 0;
-       mem.speed = 0;
-       mem.sys_start = 0;
-       mem.sys_stop = 0x1000;
-       mem.card_start = 0;
-
-       i365_set_mem_map (&socket, &mem);
-
-       state.Vcc = state.Vpp = 0;
-
-       i365_set_socket (&socket, &state);
-}
-
-int pcmcia_on (void)
-{
-       u_int rc;
-
-       debug ("Enable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
-       rc = i82365_init();
-       if (rc)
-               goto exit;
-
-       rc = check_ide_device(0);
-       if (rc == 0)
-               goto exit;
-
-       i82365_exit();
-
-exit:
-       return rc;
-}
-
-#if defined(CONFIG_CMD_PCMCIA)
-int pcmcia_off (void)
-{
-       printf ("Disable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
-       i82365_exit();
-
-       return 0;
-}
-#endif
-
-/*======================================================================
-
-    Debug stuff
-
-======================================================================*/
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev)
-{
-       u_int tmp[2];
-       u_int *mem = (void *) socket.cb_phys;
-       u_char *cis = (void *) CONFIG_SYS_PCMCIA_MEM_ADDR;
-       u_char *ide = (void *) (CONFIG_SYS_ATA_BASE_ADDR + CONFIG_SYS_ATA_REG_OFFSET);
-
-       pci_read_config_dword (dev, 0x00, tmp + 0);
-       pci_read_config_dword (dev, 0x80, tmp + 1);
-
-       printf ("PCI CONF: %08X ... %08X\n",
-               tmp[0], tmp[1]);
-       printf ("PCI MEM:  ... %08X ... %08X\n",
-               mem[0x8 / 4], mem[0x800 / 4]);
-       printf ("CIS:      ...%c%c%c%c%c%c%c%c...\n",
-               cis[0x38], cis[0x3a], cis[0x3c], cis[0x3e],
-               cis[0x40], cis[0x42], cis[0x44], cis[0x48]);
-       printf ("CIS CONF: %02X %02X %02X ...\n",
-               cis[0x200], cis[0x202], cis[0x204]);
-       printf ("IDE:      %02X %02X %02X %02X %02X %02X %02X %02X\n",
-               ide[0], ide[1], ide[2], ide[3],
-               ide[4], ide[5], ide[6], ide[7]);
-}
-#endif /* DEBUG */
-
-#endif /* CONFIG_I82365 */
diff --git a/board/cpc45/plx9030.c b/board/cpc45/plx9030.c
deleted file mode 100644 (file)
index 06fb8d6..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Plx9030.c - system configuration module for PLX9030 PCI to Local Bus Bridge */
-/*
- * (C) Copyright 2002-2003
- * Josef Wagner, MicroSys GmbH, wagner@microsys.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *   Date       Modification                                      by
- * -------      ----------------------------------------------    ---
- * 30sep02      converted from VxWorks to LINUX                   wa
-*/
-
-
-/*
-DESCRIPTION
-
-This is the configuration module for the PLX9030 PCI to Local Bus Bridge.
-It configures the Chip select lines for SRAM (CS0), ST16C552 (CS1,CS2), Display and local
-registers (CS3) on CPC45.
-*/
-
-/* includes */
-
-#include <common.h>
-#include <malloc.h>
-#include <net.h>
-#include <asm/io.h>
-#include <pci.h>
-
-/* imports */
-
-
-/* defines */
-#define        PLX9030_VENDOR_ID       0x10B5
-#define        PLX9030_DEVICE_ID       0x9030
-
-#undef PLX_DEBUG
-
-/* PLX9030 register offsets  */
-#define        P9030_LAS0RR    0x00
-#define        P9030_LAS1RR    0x04
-#define        P9030_LAS2RR    0x08
-#define        P9030_LAS3RR    0x0c
-#define        P9030_EROMRR    0x10
-#define        P9030_LAS0BA    0x14
-#define        P9030_LAS1BA    0x18
-#define        P9030_LAS2BA    0x1c
-#define        P9030_LAS3BA    0x20
-#define        P9030_EROMBA    0x24
-#define        P9030_LAS0BRD   0x28
-#define        P9030_LAS1BRD   0x2c
-#define        P9030_LAS2BRD   0x30
-#define        P9030_LAS3BRD   0x34
-#define        P9030_EROMBRD   0x38
-#define        P9030_CS0BASE   0x3C
-#define        P9030_CS1BASE   0x40
-#define        P9030_CS2BASE   0x44
-#define        P9030_CS3BASE   0x48
-#define        P9030_INTCSR    0x4c
-#define        P9030_CNTRL     0x50
-#define        P9030_GPIOC     0x54
-
-/* typedefs */
-
-
-/* locals */
-
-static struct pci_device_id supported[] = {
-       { PLX9030_VENDOR_ID, PLX9030_DEVICE_ID },
-       { }
-};
-
-/* forward declarations */
-void sysOutLong(ulong address, ulong value);
-
-
-/***************************************************************************
-*
-* Plx9030Init - init CS0..CS3 for CPC45
-*
-*
-* RETURNS: N/A
-*/
-
-void Plx9030Init (void)
-{
-    pci_dev_t   devno;
-    ulong      membaseCsr;       /* base address of device memory space */
-    int                idx = 0;          /* general index */
-
-
-    /* find plx9030 device */
-
-    if ((devno = pci_find_devices(supported, idx++)) < 0)
-    {
-       printf("No PLX9030 device found !!\n");
-       return;
-    }
-
-
-#ifdef PLX_DEBUG
-       printf("PLX 9030 device found ! devno = 0x%x\n",devno);
-#endif
-
-       membaseCsr   = PCI_PLX9030_MEMADDR;
-
-       /* set base address */
-       pci_write_config_dword(devno, PCI_BASE_ADDRESS_0, membaseCsr);
-
-       /* enable mapped memory and IO addresses */
-       pci_write_config_dword(devno,
-                              PCI_COMMAND,
-                              PCI_COMMAND_MEMORY |
-                              PCI_COMMAND_MASTER);
-
-
-       /* configure GBIOC */
-       sysOutLong((membaseCsr + P9030_GPIOC),   0x00000FC0);           /* CS2/CS3 enable */
-
-       /* configure CS0 (SRAM) */
-       sysOutLong((membaseCsr + P9030_LAS0BA),  0x00000001);           /* enable space base */
-       sysOutLong((membaseCsr + P9030_LAS0RR),  0x0FE00000);           /* 2 MByte */
-       sysOutLong((membaseCsr + P9030_LAS0BRD), 0x51928900);           /* 4 wait states */
-       sysOutLong((membaseCsr + P9030_CS0BASE), 0x00100001);           /* enable 2 MByte */
-       /* remap CS0 (SRAM) */
-       pci_write_config_dword(devno, PCI_BASE_ADDRESS_2, SRAM_BASE);
-
-       /* configure CS1 (ST16552 / CHAN A) */
-       sysOutLong((membaseCsr + P9030_LAS1BA),  0x00400001);           /* enable space base */
-       sysOutLong((membaseCsr + P9030_LAS1RR),  0x0FFFFF00);           /* 256 byte */
-       sysOutLong((membaseCsr + P9030_LAS1BRD), 0x55122900);           /* 4 wait states */
-       sysOutLong((membaseCsr + P9030_CS1BASE), 0x00400081);           /* enable 256 Byte */
-       /* remap CS1 (ST16552 / CHAN A) */
-       /* remap CS1 (ST16552 / CHAN A) */
-       pci_write_config_dword(devno, PCI_BASE_ADDRESS_3, ST16552_A_BASE);
-
-       /* configure CS2 (ST16552 / CHAN B) */
-       sysOutLong((membaseCsr + P9030_LAS2BA),  0x00800001);           /* enable space base */
-       sysOutLong((membaseCsr + P9030_LAS2RR),  0x0FFFFF00);           /* 256 byte */
-       sysOutLong((membaseCsr + P9030_LAS2BRD), 0x55122900);           /* 4 wait states */
-       sysOutLong((membaseCsr + P9030_CS2BASE), 0x00800081);           /* enable 256 Byte */
-       /* remap CS2 (ST16552 / CHAN B) */
-       pci_write_config_dword(devno, PCI_BASE_ADDRESS_4, ST16552_B_BASE);
-
-       /* configure CS3 (BCSR) */
-       sysOutLong((membaseCsr + P9030_LAS3BA),  0x00C00001);           /* enable space base */
-       sysOutLong((membaseCsr + P9030_LAS3RR),  0x0FFFFF00);           /* 256 byte */
-       sysOutLong((membaseCsr + P9030_LAS3BRD), 0x55357A80);           /* 9 wait states */
-       sysOutLong((membaseCsr + P9030_CS3BASE), 0x00C00081);           /* enable 256 Byte */
-       /* remap CS3 (DISPLAY and BCSR) */
-       pci_write_config_dword(devno, PCI_BASE_ADDRESS_5, BCSR_BASE);
-}
-
-void sysOutLong(ulong address, ulong value)
-{
-       *(ulong*)address = cpu_to_le32(value);
-}
diff --git a/board/cpu86/Kconfig b/board/cpu86/Kconfig
deleted file mode 100644 (file)
index ac3ae98..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_CPU86
-
-config SYS_BOARD
-       default "cpu86"
-
-config SYS_CONFIG_NAME
-       default "CPU86"
-
-endif
diff --git a/board/cpu86/MAINTAINERS b/board/cpu86/MAINTAINERS
deleted file mode 100644 (file)
index 06bdd0d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CPU86 BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/cpu86/
-F:     include/configs/CPU86.h
-F:     configs/CPU86_defconfig
-F:     configs/CPU86_ROMBOOT_defconfig
diff --git a/board/cpu86/Makefile b/board/cpu86/Makefile
deleted file mode 100644 (file)
index da83afd..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = cpu86.o flash.o
diff --git a/board/cpu86/cpu86.c b/board/cpu86/cpu86.c
deleted file mode 100644 (file)
index 9292910..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include "cpu86.h"
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII COL */
-       /* PA30 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII CRS */
-       /* PA29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_ER */
-       /* PA28 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_EN */
-       /* PA27 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_DV */
-       /* PA26 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_ER */
-       /* PA25 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDIO */
-       /* PA24 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDC */
-       /* PA23 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDIO */
-       /* PA22 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDC */
-       /* PA21 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[3] */
-       /* PA20 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[2] */
-       /* PA19 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[1] */
-       /* PA18 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[0] */
-       /* PA17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[0] */
-       /* PA16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[1] */
-       /* PA15 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[2] */
-       /* PA14 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[3] */
-       /* PA13 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII TXSL1 */
-       /* PA12 */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII TXSL0 */
-       /* PA11 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII TXSL1 */
-       /* PA10 */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII TXSL0 */
-       /* PA9  */ {   0,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
-       /* PA8  */ {   0,   1,   0,   0,   0,   0   }, /* SMC2 RXD */
-       /* PA7  */ {   0,   0,   0,   0,   0,   0   }, /* PA7 */
-       /* PA6  */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII PAUSE */
-       /* PA5  */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII PAUSE */
-       /* PA4  */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII PWRDN */
-       /* PA3  */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII PWRDN */
-       /* PA2  */ {   0,   0,   0,   0,   0,   0   }, /* PA2 */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* FCC2 MII MDINT */
-       /* PA0  */ {   1,   0,   0,   1,   0,   0   }  /* FCC1 MII MDINT */
-    },
-
-    /* Port B configuration */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
-       /* PB17 */ {   0,   0,   0,   0,   0,   0   }, /* PB17 */
-       /* PB16 */ {   0,   0,   0,   0,   0,   0   }, /* PB16 */
-       /* PB15 */ {   0,   0,   0,   0,   0,   0   }, /* PB15 */
-       /* PB14 */ {   0,   0,   0,   0,   0,   0   }, /* PB14 */
-       /* PB13 */ {   0,   0,   0,   0,   0,   0   }, /* PB13 */
-       /* PB12 */ {   0,   0,   0,   0,   0,   0   }, /* PB12 */
-       /* PB11 */ {   0,   0,   0,   0,   0,   0   }, /* PB11 */
-       /* PB10 */ {   0,   0,   0,   0,   0,   0   }, /* PB10 */
-       /* PB9  */ {   0,   0,   0,   0,   0,   0   }, /* PB9 */
-       /* PB8  */ {   0,   0,   0,   0,   0,   0   }, /* PB8 */
-       /* PB7  */ {   0,   0,   0,   0,   0,   0   }, /* PB7 */
-       /* PB6  */ {   0,   0,   0,   0,   0,   0   }, /* PB6 */
-       /* PB5  */ {   0,   0,   0,   0,   0,   0   }, /* PB5 */
-       /* PB4  */ {   0,   0,   0,   0,   0,   0   }, /* PB4 */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* PB3 */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* PB2 */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* PB1 */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* PB0 */
-    },
-
-    /* Port C */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   0,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   0,   0,   0   }, /* PC30 */
-       /* PC29 */ {   1,   0,   0,   0,   0,   0   }, /* SCC1 CTS */
-       /* PC28 */ {   1,   0,   0,   0,   0,   0   }, /* SCC2 CTS */
-       /* PC27 */ {   0,   0,   0,   0,   0,   0   }, /* PC27 */
-       /* PC26 */ {   0,   0,   0,   0,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   0,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   0,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DACFD */
-       /* PC22 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DNFD */
-       /* PC21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RX_CLK */
-       /* PC20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII TX_CLK */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII TX_CLK */
-       /* PC17 */ {   0,   0,   0,   0,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   0,   0,   0,   0,   0   }, /* PC16 */
-       /* PC15 */ {   0,   0,   0,   0,   0,   0   }, /* PC15 */
-       /* PC14 */ {   0,   0,   0,   0,   0,   0   }, /* PC14 */
-       /* PC13 */ {   0,   0,   0,   0,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   0,   0,   0,   0,   0   }, /* PC12 */
-       /* PC11 */ {   0,   0,   0,   0,   0,   0   }, /* PC11 */
-       /* PC10 */ {   0,   0,   0,   0,   0,   0   }, /* PC10 */
-       /* PC9  */ {   0,   0,   0,   0,   0,   0   }, /* FC9 */
-       /* PC8  */ {   0,   0,   0,   0,   0,   0   }, /* PC8 */
-       /* PC7  */ {   0,   0,   0,   0,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   0,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   0,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   0,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   0,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   0,   0,   0   }, /* PC2 */
-       /* PC1  */ {   0,   0,   0,   0,   0,   0   }, /* PC1 */
-       /* PC0  */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DRQFD */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 RXD */
-       /* PD30 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 TXD */
-       /* PD29 */ {   1,   0,   0,   1,   0,   0   }, /* SCC1 RTS */
-       /* PD28 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RXD */
-       /* PD27 */ {   1,   1,   0,   1,   0,   0   }, /* SCC2 TXD */
-       /* PD26 */ {   1,   0,   0,   1,   0,   0   }, /* SCC2 RTS */
-       /* PD25 */ {   0,   0,   0,   0,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   0,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   0,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   0,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   0,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   0,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   0,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   0,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   0,   0,   0,   0,   0   }, /* PD17 */
-       /* PD16 */ {   0,   0,   0,   0,   0,   0   }, /* PD16 */
-#if defined(CONFIG_SYS_I2C_SOFT)
-       /* PD15 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SDA */
-       /* PD14 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#else /* normal I/O port pins */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#endif
-#endif
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
-       /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
-       /* PD7  */ {   0,   0,   0,   0,   0,   0   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   0,   0,   0   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   0,   0,   0   }, /* PD5 */
-       /* PD4  */ {   0,   0,   0,   0,   0,   0   }, /* PD4 */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* PD3 */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* PD2 */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* PD1 */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* PD0 */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
-       printf ("Board: CPU86 (Rev %02x)\n", CPU86_REV);
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
-                         ulong orx, volatile uchar * base)
-{
-       volatile uchar c = 0xff;
-       volatile uint *sdmr_ptr;
-       volatile uint *orx_ptr;
-       ulong maxsize, size;
-       int i;
-
-       /* We must be able to test a location outsize the maximum legal size
-        * to find out THAT we are outside; but this address still has to be
-        * mapped by the controller. That means, that the initial mapping has
-        * to be (at least) twice as large as the maximum expected size.
-        */
-       maxsize = (1 + (~orx | 0x7fff)) / 2;
-
-       /* Since CONFIG_SYS_SDRAM_BASE is always 0 (??), we assume that
-        * we are configuring CS1 if base != 0
-        */
-       sdmr_ptr = &memctl->memc_psdmr;
-       orx_ptr = &memctl->memc_or2;
-
-       *orx_ptr = orx;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_PREA;
-       *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_MRW;
-       *(base + CONFIG_SYS_MRS_OFFS) = c;      /* setting MR on address lines */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *base = c;
-
-       size = get_ram_size((long *)base, maxsize);
-
-       *orx_ptr = orx | ~(size - 1);
-
-       return (size);
-}
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong size8, size9;
-#endif
-       long psize;
-
-       psize = 32 * 1024 * 1024;
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       /* 60x SDRAM setup:
-        */
-       size8 = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-       size9 = try_init (memctl, CONFIG_SYS_PSDMR_9COL, CONFIG_SYS_OR2_9COL,
-                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-
-       if (size8 < size9) {
-               psize = size9;
-               printf ("(60x:9COL) ");
-       } else {
-               psize = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-               printf ("(60x:8COL) ");
-       }
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-       icache_enable ();
-
-       return (psize);
-}
-
-#if defined(CONFIG_CMD_DOC)
-void doc_init (void)
-{
-       doc_probe (CONFIG_SYS_DOC_BASE);
-}
-#endif
diff --git a/board/cpu86/cpu86.h b/board/cpu86/cpu86.h
deleted file mode 100644 (file)
index ca0c39f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __BOARD_CPU86__
-#define __BOARD_CPU86__
-
-#include <config.h>
-
-#define REG8(x)                        (*(volatile unsigned char *)(x))
-
-/* CPU86 register definitions */
-#define CPU86_VME_EAC          REG8(CONFIG_SYS_BCRS_BASE + 0x00)
-#define CPU86_VME_SAC          REG8(CONFIG_SYS_BCRS_BASE + 0x01)
-#define CPU86_VME_MAC          REG8(CONFIG_SYS_BCRS_BASE + 0x02)
-#define CPU86_BCR              REG8(CONFIG_SYS_BCRS_BASE + 0x03)
-#define CPU86_BSR              REG8(CONFIG_SYS_BCRS_BASE + 0x04)
-#define CPU86_WDOG_RPORT       REG8(CONFIG_SYS_BCRS_BASE + 0x05)
-#define CPU86_MBOX_IRQ         REG8(CONFIG_SYS_BCRS_BASE + 0x04)
-#define CPU86_REV              REG8(CONFIG_SYS_BCRS_BASE + 0x07)
-#define CPU86_VME_IRQMASK      REG8(CONFIG_SYS_BCRS_BASE + 0x80)
-#define CPU86_VME_IRQSTATUS    REG8(CONFIG_SYS_BCRS_BASE + 0x81)
-#define CPU86_LOCAL_IRQMASK    REG8(CONFIG_SYS_BCRS_BASE + 0x82)
-#define CPU86_LOCAL_IRQSTATUS  REG8(CONFIG_SYS_BCRS_BASE + 0x83)
-#define CPU86_PMCL_IRQSTATUS   REG8(CONFIG_SYS_BCRS_BASE + 0x84)
-
-/* Board Control Register bits */
-#define CPU86_BCR_FWPT         0x01
-#define CPU86_BCR_FWRE         0x02
-
-#endif /* __BOARD_CPU86__ */
diff --git a/board/cpu86/flash.c b/board/cpu86/flash.c
deleted file mode 100644 (file)
index b99a9a0..0000000
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include "cpu86.h"
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_int_get_size (volatile unsigned long *baseaddr,
-                                         flash_info_t * info)
-{
-       short i;
-       unsigned long flashtest_h, flashtest_l;
-
-       info->sector_count = info->size = 0;
-       info->flash_id = FLASH_UNKNOWN;
-
-       /* Write identify command sequence and test FLASH answer
-        */
-       baseaddr[0] = 0x00900090;
-       baseaddr[1] = 0x00900090;
-
-       flashtest_h = baseaddr[0];      /* manufacturer ID      */
-       flashtest_l = baseaddr[1];
-
-       if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
-               return (0);             /* no or unknown flash  */
-
-       flashtest_h = baseaddr[2];      /* device ID            */
-       flashtest_l = baseaddr[3];
-
-       if (flashtest_h != flashtest_l)
-               return (0);
-
-       switch (flashtest_h) {
-       case INTEL_ID_28F160C3B:
-               info->flash_id = FLASH_28F160C3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       case INTEL_ID_28F160F3B:
-               info->flash_id = FLASH_28F160F3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       default:
-               return (0);                     /* no or unknown flash  */
-       }
-
-       info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
-       if (info->flash_id & FLASH_BTYPE) {
-               volatile unsigned long *tmp = baseaddr;
-
-               /* set up sector start adress table (bottom sector type)
-                * AND unlock the sectors (if our chip is 160C3)
-                */
-               for (i = 0; i < info->sector_count; i++) {
-                       if ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) {
-                               tmp[0] = 0x00600060;
-                               tmp[1] = 0x00600060;
-                               tmp[0] = 0x00D000D0;
-                               tmp[1] = 0x00D000D0;
-                       }
-                       info->start[i] = (uint) tmp;
-                       tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith       */
-               }
-       }
-
-       memset (info->protect, 0, info->sector_count);
-
-       baseaddr[0] = 0x00FF00FF;
-       baseaddr[1] = 0x00FF00FF;
-
-       return (info->size);
-}
-
-static ulong flash_amd_get_size (vu_char *addr, flash_info_t *info)
-{
-       short i;
-       uchar vendor, devid;
-       ulong base = (ulong)addr;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x0555] = 0xAA;
-       addr[0x02AA] = 0x55;
-       addr[0x0555] = 0x90;
-
-       udelay(1000);
-
-       vendor = addr[0];
-       devid = addr[1] & 0xff;
-
-       /* only support AMD */
-       if (vendor != 0x01) {
-               return 0;
-       }
-
-       vendor &= 0xf;
-       devid &= 0xff;
-
-       if (devid == AMD_ID_F040B) {
-               info->flash_id     = vendor << 16 | devid;
-               info->sector_count = 8;
-               info->size         = info->sector_count * 0x10000;
-       }
-       else if (devid == AMD_ID_F080B) {
-               info->flash_id     = vendor << 16 | devid;
-               info->sector_count = 16;
-               info->size         = 4 * info->sector_count * 0x10000;
-       }
-       else if (devid == AMD_ID_F016D) {
-               info->flash_id     = vendor << 16 | devid;
-               info->sector_count = 32;
-               info->size         = 4 * info->sector_count * 0x10000;
-       }
-       else {
-               printf ("## Unknown Flash Type: %02x\n", devid);
-               return 0;
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* sector base address */
-               info->start[i] = base + i * (info->size / info->sector_count);
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               addr = (volatile unsigned char *)(info->start[i]);
-               info->protect[i] = addr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (vu_char *)info->start[0];
-               addr[0] = 0xF0; /* reset bank */
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size_b0 = 0;
-       unsigned long size_b1 = 0;
-       int i;
-
-       /* Init: no FLASHes known
-        */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Disable flash protection */
-       CPU86_BCR |= (CPU86_BCR_FWPT | CPU86_BCR_FWRE);
-
-       /* Static FLASH Bank configuration here (only one bank) */
-
-       size_b0 = flash_int_get_size ((ulong *) CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-       size_b1 = flash_amd_get_size ((uchar *) CONFIG_SYS_BOOTROM_BASE, &flash_info[1]);
-
-       if (size_b0 > 0 || size_b1 > 0) {
-
-               printf("(");
-
-               if (size_b0 > 0) {
-                       puts ("Bank#1 - ");
-                       print_size (size_b0, (size_b1 > 0) ? ", " : ") ");
-               }
-
-               if (size_b1 > 0) {
-                       puts ("Bank#2 - ");
-                       print_size (size_b1, ") ");
-               }
-       }
-       else {
-               printf ("## No FLASH found.\n");
-               return 0;
-       }
-       /* protect monitor and environment sectors
-        */
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_BOOTROM_BASE
-       if (size_b1) {
-               /* If U-Boot is booted from ROM the CONFIG_SYS_MONITOR_BASE > CONFIG_SYS_FLASH_BASE
-                * but we shouldn't protect it.
-                */
-
-               flash_protect  (FLAG_PROTECT_SET,
-                               CONFIG_SYS_MONITOR_BASE,
-                               CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, &flash_info[1]
-               );
-       }
-#else
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_SYS_MONITOR_BASE,
-                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
-       );
-#endif
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# if CONFIG_ENV_ADDR >= CONFIG_SYS_BOOTROM_BASE
-       if (size_b1) {
-               flash_protect (FLAG_PROTECT_SET,
-                               CONFIG_ENV_ADDR,
-                               CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[1]);
-       }
-# else
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR,
-                      CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-# endif
-#endif
-
-       return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch ((info->flash_id >> 16) & 0xff) {
-       case 0x89:
-               printf ("INTEL ");
-               break;
-       case 0x1:
-               printf ("AMD ");
-               break;
-       default:
-               printf ("Unknown Vendor ");
-               break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F160C3B:
-               printf ("28F160C3B (16 Mbit, bottom sector)\n");
-               break;
-       case FLASH_28F160F3B:
-               printf ("28F160F3B (16 Mbit, bottom sector)\n");
-               break;
-       case AMD_ID_F040B:
-               printf ("AM29F040B (4 Mbit)\n");
-               break;
-       default:
-               printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       if (info->size < 0x100000)
-               printf ("  Size: %ld KB in %d Sectors\n",
-                               info->size >> 10, info->sector_count);
-       else
-               printf ("  Size: %ld MB in %d Sectors\n",
-                               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       vu_char *addr = (vu_char *)(info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect])
-                       prot++;
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                               prot);
-       } else {
-               printf ("\n");
-       }
-
-       /* Check the type of erased flash
-        */
-       if (info->flash_id >> 16 == 0x1) {
-               /* Erase AMD flash
-                */
-               l_sect = -1;
-
-               /* Disable interrupts which might cause a timeout here */
-               flag = disable_interrupts();
-
-               addr[0x0555] = 0xAA;
-               addr[0x02AA] = 0x55;
-               addr[0x0555] = 0x80;
-               addr[0x0555] = 0xAA;
-               addr[0x02AA] = 0x55;
-
-               /* wait at least 80us - let's wait 1 ms */
-               udelay (1000);
-
-               /* Start erase on unprotected sectors */
-               for (sect = s_first; sect<=s_last; sect++) {
-                       if (info->protect[sect] == 0) { /* not protected */
-                               addr = (vu_char *)(info->start[sect]);
-                               addr[0] = 0x30;
-                               l_sect = sect;
-                       }
-               }
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts();
-
-               /* wait at least 80us - let's wait 1 ms */
-               udelay (1000);
-
-               /*
-                * We wait for the last triggered sector
-                */
-               if (l_sect < 0)
-                       goto AMD_DONE;
-
-               start = get_timer (0);
-               last  = start;
-               addr = (vu_char *)(info->start[l_sect]);
-               while ((addr[0] & 0x80) != 0x80) {
-                       if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                               printf ("Timeout\n");
-                               return 1;
-                       }
-                       /* show that we're waiting */
-                       if ((now - last) > 1000) {      /* every second */
-                               serial_putc ('.');
-                               last = now;
-                       }
-               }
-
-AMD_DONE:
-               /* reset to read mode */
-               addr = (volatile unsigned char *)info->start[0];
-               addr[0] = 0xF0;     /* reset bank */
-
-       } else {
-               /* Erase Intel flash
-                */
-
-               /* Start erase on unprotected sectors
-                */
-               for (sect = s_first; sect <= s_last; sect++) {
-                       volatile ulong *addr =
-                               (volatile unsigned long *) info->start[sect];
-
-                       start = get_timer (0);
-                       last = start;
-                       if (info->protect[sect] == 0) {
-                       /* Disable interrupts which might cause a timeout here
-                        */
-                               flag = disable_interrupts ();
-
-                               /* Erase the block
-                                */
-                               addr[0] = 0x00200020;
-                               addr[1] = 0x00200020;
-                               addr[0] = 0x00D000D0;
-                               addr[1] = 0x00D000D0;
-
-                               /* re-enable interrupts if necessary
-                                */
-                               if (flag)
-                                       enable_interrupts ();
-
-                               /* wait at least 80us - let's wait 1 ms
-                                */
-                               udelay (1000);
-
-                               last = start;
-                               while ((addr[0] & 0x00800080) != 0x00800080 ||
-                                  (addr[1] & 0x00800080) != 0x00800080) {
-                                       if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                               printf ("Timeout (erase suspended!)\n");
-                                               /* Suspend erase
-                                                */
-                                               addr[0] = 0x00B000B0;
-                                               addr[1] = 0x00B000B0;
-                                               goto DONE;
-                                       }
-                                       /* show that we're waiting
-                                        */
-                                       if ((now - last) > 1000) {      /* every second */
-                                               serial_putc ('.');
-                                               last = now;
-                                       }
-                               }
-                               if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
-                                       printf ("*** ERROR: erase failed!\n");
-                                       goto DONE;
-                               }
-                       }
-                       /* Clear status register and reset to read mode
-                        */
-                       addr[0] = 0x00500050;
-                       addr[1] = 0x00500050;
-                       addr[0] = 0x00FF00FF;
-                       addr[1] = 0x00FF00FF;
-               }
-       }
-
-       printf (" done\n");
-
-DONE:
-       return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong v;
-       int i, l, rc, cc = cnt, res = 0;
-
-       if (info->flash_id >> 16 == 0x1) {
-
-               /* Write to AMD 8-bit flash
-                */
-               while (cnt > 0) {
-                       if ((rc = write_byte(info, addr, *src)) != 0) {
-                               return (rc);
-                       }
-                       addr++;
-                       src++;
-                       cnt--;
-               }
-
-               return (0);
-       } else {
-
-               /* Write to Intel 64-bit flash
-                */
-               for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
-                       l = (addr & 3);
-                       addr &= ~3;
-
-                       for (i = 0; i < 4; i++) {
-                               v = (v << 8) + (i < l || i - l >= cc ?
-                                       *((unsigned char *) addr + i) : *src++);
-                       }
-
-                       if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
-                               break;
-               }
-       }
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
-                                          ulong data)
-{
-       int flag, res = 0;
-       ulong start;
-
-       /* Check if Flash is (sufficiently) erased
-        */
-       if ((*addr & data) != data)
-               return (2);
-
-       /* Disable interrupts which might cause a timeout here
-        */
-       flag = disable_interrupts ();
-
-       *addr = 0x00400040;
-       *addr = data;
-
-       /* re-enable interrupts if necessary
-        */
-       if (flag)
-               enable_interrupts ();
-
-       start = get_timer (0);
-       while ((*addr & 0x00800080) != 0x00800080) {
-               if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       /* Suspend program
-                        */
-                       *addr = 0x00B000B0;
-                       res = 1;
-                       goto OUT;
-               }
-       }
-
-       if (*addr & 0x00220022) {
-               printf ("*** ERROR: program failed!\n");
-               res = 1;
-       }
-
-OUT:
-       /* Clear status register and reset to read mode
-        */
-       *addr = 0x00500050;
-       *addr = 0x00FF00FF;
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte (flash_info_t *info, ulong dest, uchar data)
-{
-       vu_char *addr = (vu_char *)(info->start[0]);
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_char *)dest) & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0555] = 0xAA;
-       addr[0x02AA] = 0x55;
-       addr[0x0555] = 0xA0;
-
-       *((vu_char *)dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       while ((*((vu_char *)dest) & 0x80) != (data & 0x80)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/cpu87/Kconfig b/board/cpu87/Kconfig
deleted file mode 100644 (file)
index a4f2768..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_CPU87
-
-config SYS_BOARD
-       default "cpu87"
-
-config SYS_CONFIG_NAME
-       default "CPU87"
-
-endif
diff --git a/board/cpu87/MAINTAINERS b/board/cpu87/MAINTAINERS
deleted file mode 100644 (file)
index 32804ea..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CPU87 BOARD
-#M:    -
-S:     Maintained
-F:     board/cpu87/
-F:     include/configs/CPU87.h
-F:     configs/CPU87_defconfig
-F:     configs/CPU87_ROMBOOT_defconfig
diff --git a/board/cpu87/Makefile b/board/cpu87/Makefile
deleted file mode 100644 (file)
index 0d59bbb..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = cpu87.o flash.o
diff --git a/board/cpu87/cpu87.c b/board/cpu87/cpu87.c
deleted file mode 100644 (file)
index 01f90d2..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include "cpu87.h"
-#include <pci.h>
-#include <netdev.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII COL */
-       /* PA30 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII CRS */
-       /* PA29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_ER */
-       /* PA28 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_EN */
-       /* PA27 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_DV */
-       /* PA26 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_ER */
-       /* PA25 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDIO */
-       /* PA24 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDC */
-       /* PA23 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDIO */
-       /* PA22 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDC */
-       /* PA21 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[3] */
-       /* PA20 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[2] */
-       /* PA19 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[1] */
-       /* PA18 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[0] */
-       /* PA17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[0] */
-       /* PA16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[1] */
-       /* PA15 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[2] */
-       /* PA14 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[3] */
-       /* PA13 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII TXSL1 */
-       /* PA12 */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII TXSL0 */
-       /* PA11 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII TXSL1 */
-       /* PA10 */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII TXSL0 */
-       /* PA9  */ {   0,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
-       /* PA8  */ {   0,   1,   0,   0,   0,   0   }, /* SMC2 RXD */
-       /* PA7  */ {   0,   0,   0,   0,   0,   0   }, /* PA7 */
-       /* PA6  */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII PAUSE */
-       /* PA5  */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII PAUSE */
-       /* PA4  */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII PWRDN */
-       /* PA3  */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII PWRDN */
-       /* PA2  */ {   0,   0,   0,   0,   0,   0   }, /* PA2 */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* FCC2 MII MDINT */
-       /* PA0  */ {   1,   0,   0,   1,   0,   0   }  /* FCC1 MII MDINT */
-    },
-
-    /* Port B configuration */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
-       /* PB17 */ {   0,   0,   0,   0,   0,   0   }, /* PB17 */
-       /* PB16 */ {   0,   0,   0,   0,   0,   0   }, /* PB16 */
-       /* PB15 */ {   0,   0,   0,   0,   0,   0   }, /* PB15 */
-       /* PB14 */ {   0,   0,   0,   0,   0,   0   }, /* PB14 */
-       /* PB13 */ {   0,   0,   0,   0,   0,   0   }, /* PB13 */
-       /* PB12 */ {   0,   0,   0,   0,   0,   0   }, /* PB12 */
-       /* PB11 */ {   0,   0,   0,   0,   0,   0   }, /* PB11 */
-       /* PB10 */ {   0,   0,   0,   0,   0,   0   }, /* PB10 */
-       /* PB9  */ {   0,   0,   0,   0,   0,   0   }, /* PB9 */
-       /* PB8  */ {   0,   0,   0,   0,   0,   0   }, /* PB8 */
-       /* PB7  */ {   0,   0,   0,   0,   0,   0   }, /* PB7 */
-       /* PB6  */ {   0,   0,   0,   0,   0,   0   }, /* PB6 */
-       /* PB5  */ {   0,   0,   0,   0,   0,   0   }, /* PB5 */
-       /* PB4  */ {   0,   0,   0,   0,   0,   0   }, /* PB4 */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* PB3 */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* PB2 */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* PB1 */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* PB0 */
-    },
-
-    /* Port C */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   0,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   0,   0,   0   }, /* PC30 */
-       /* PC29 */ {   1,   0,   0,   0,   0,   0   }, /* SCC1 CTS */
-       /* PC28 */ {   1,   0,   0,   0,   0,   0   }, /* SCC2 CTS */
-       /* PC27 */ {   0,   0,   0,   0,   0,   0   }, /* PC27 */
-       /* PC26 */ {   0,   0,   0,   0,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   0,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   0,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DACFD */
-       /* PC22 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DNFD */
-       /* PC21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RX_CLK */
-       /* PC20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII TX_CLK */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII TX_CLK */
-       /* PC17 */ {   0,   0,   0,   0,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   0,   0,   0,   0,   0   }, /* PC16 */
-       /* PC15 */ {   0,   0,   0,   0,   0,   0   }, /* PC15 */
-       /* PC14 */ {   0,   0,   0,   0,   0,   0   }, /* PC14 */
-       /* PC13 */ {   0,   0,   0,   0,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   0,   0,   0,   0,   0   }, /* PC12 */
-       /* PC11 */ {   0,   0,   0,   0,   0,   0   }, /* PC11 */
-       /* PC10 */ {   0,   0,   0,   0,   0,   0   }, /* PC10 */
-       /* PC9  */ {   0,   0,   0,   0,   0,   0   }, /* FC9 */
-       /* PC8  */ {   0,   0,   0,   0,   0,   0   }, /* PC8 */
-       /* PC7  */ {   0,   0,   0,   0,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   0,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   0,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   0,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   0,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   0,   0,   0   }, /* PC2 */
-       /* PC1  */ {   0,   0,   0,   0,   0,   0   }, /* PC1 */
-       /* PC0  */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DRQFD */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 RXD */
-       /* PD30 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 TXD */
-       /* PD29 */ {   1,   0,   0,   1,   0,   0   }, /* SCC1 RTS */
-       /* PD28 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RXD */
-       /* PD27 */ {   1,   1,   0,   1,   0,   0   }, /* SCC2 TXD */
-       /* PD26 */ {   1,   0,   0,   1,   0,   0   }, /* SCC2 RTS */
-       /* PD25 */ {   0,   0,   0,   0,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   0,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   0,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   0,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   0,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   0,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   0,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   0,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   0,   0,   0,   0,   0   }, /* PD17 */
-       /* PD16 */ {   0,   0,   0,   0,   0,   0   }, /* PD16 */
-#if defined(CONFIG_SYS_I2C_SOFT)
-       /* PD15 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SDA */
-       /* PD14 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#else /* normal I/O port pins */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#endif
-#endif
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
-       /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
-       /* PD7  */ {   0,   0,   0,   0,   0,   0   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   0,   0,   0   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   0,   0,   0   }, /* PD5 */
-       /* PD4  */ {   0,   0,   0,   0,   0,   0   }, /* PD4 */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* PD3 */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* PD2 */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* PD1 */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* PD0 */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
-       printf ("Board: CPU87 (Rev %02x)\n", CPU86_REV & 0x7f);
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
-                         ulong orx, volatile uchar * base)
-{
-       volatile uchar c = 0xff;
-       volatile uint *sdmr_ptr;
-       volatile uint *orx_ptr;
-       ulong maxsize, size;
-       int i;
-
-       /* We must be able to test a location outsize the maximum legal size
-        * to find out THAT we are outside; but this address still has to be
-        * mapped by the controller. That means, that the initial mapping has
-        * to be (at least) twice as large as the maximum expected size.
-        */
-       maxsize = (1 + (~orx | 0x7fff)) / 2;
-
-       /* Since CONFIG_SYS_SDRAM_BASE is always 0 (??), we assume that
-        * we are configuring CS1 if base != 0
-        */
-       sdmr_ptr = &memctl->memc_psdmr;
-       orx_ptr = &memctl->memc_or2;
-
-       *orx_ptr = orx;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_PREA;
-       *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_MRW;
-       *(base + CONFIG_SYS_MRS_OFFS) = c;      /* setting MR on address lines */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *base = c;
-
-       size = get_ram_size((long *)base, maxsize);
-
-       *orx_ptr = orx | ~(size - 1);
-
-       return (size);
-}
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong size8, size9, size10;
-#endif
-       long psize;
-
-       psize = 32 * 1024 * 1024;
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       /* 60x SDRAM setup:
-        */
-       size8 = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-
-       size9 = try_init (memctl, CONFIG_SYS_PSDMR_9COL, CONFIG_SYS_OR2_9COL,
-                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-
-       size10 = try_init (memctl, CONFIG_SYS_PSDMR_10COL, CONFIG_SYS_OR2_10COL,
-                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-
-       psize = max(size8,max(size9,size10));
-
-       if (psize == size8) {
-               psize = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-               printf ("(60x:8COL) ");
-       } else if (psize == size9){
-               psize = try_init (memctl, CONFIG_SYS_PSDMR_9COL, CONFIG_SYS_OR2_9COL,
-                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-               printf ("(60x:9COL) ");
-       } else
-               printf ("(60x:10COL) ");
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-       icache_enable ();
-
-       return (psize);
-}
-
-#if defined(CONFIG_CMD_DOC)
-void doc_init (void)
-{
-       doc_probe (CONFIG_SYS_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc8250_init(&hose);
-}
-#endif
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/cpu87/cpu87.h b/board/cpu87/cpu87.h
deleted file mode 100644 (file)
index 45cb853..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __BOARD_CPU87__
-#define __BOARD_CPU87__
-
-#include <config.h>
-
-#define REG8(x)                        (*(volatile unsigned char *)(x))
-
-/* CPU86 register definitions */
-#define CPU86_VME_EAC          REG8(CONFIG_SYS_BCRS_BASE + 0x00)
-#define CPU86_VME_SAC          REG8(CONFIG_SYS_BCRS_BASE + 0x01)
-#define CPU86_VME_MAC          REG8(CONFIG_SYS_BCRS_BASE + 0x02)
-#define CPU86_BCR              REG8(CONFIG_SYS_BCRS_BASE + 0x03)
-#define CPU86_BSR              REG8(CONFIG_SYS_BCRS_BASE + 0x04)
-#define CPU86_WDOG_RPORT       REG8(CONFIG_SYS_BCRS_BASE + 0x05)
-#define CPU86_MBOX_IRQ         REG8(CONFIG_SYS_BCRS_BASE + 0x04)
-#define CPU86_REV              REG8(CONFIG_SYS_BCRS_BASE + 0x07)
-#define CPU86_VME_IRQMASK      REG8(CONFIG_SYS_BCRS_BASE + 0x80)
-#define CPU86_VME_IRQSTATUS    REG8(CONFIG_SYS_BCRS_BASE + 0x81)
-#define CPU86_LOCAL_IRQMASK    REG8(CONFIG_SYS_BCRS_BASE + 0x82)
-#define CPU86_LOCAL_IRQSTATUS  REG8(CONFIG_SYS_BCRS_BASE + 0x83)
-#define CPU86_PMCL_IRQSTATUS   REG8(CONFIG_SYS_BCRS_BASE + 0x84)
-
-/* Board Control Register bits */
-#define CPU86_BCR_FWPT         0x01
-#define CPU86_BCR_FWRE         0x02
-
-#endif /* __BOARD_CPU87__ */
diff --git a/board/cpu87/flash.c b/board/cpu87/flash.c
deleted file mode 100644 (file)
index 96ba7d9..0000000
+++ /dev/null
@@ -1,608 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include "cpu87.h"
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_int_get_size (volatile unsigned long *baseaddr,
-                                         flash_info_t * info)
-{
-       short i;
-       unsigned long flashtest_h, flashtest_l;
-
-       info->sector_count = info->size = 0;
-       info->flash_id = FLASH_UNKNOWN;
-
-       /* Write identify command sequence and test FLASH answer
-        */
-       baseaddr[0] = 0x00900090;
-       baseaddr[1] = 0x00900090;
-
-       flashtest_h = baseaddr[0];      /* manufacturer ID      */
-       flashtest_l = baseaddr[1];
-
-       if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
-               return (0);             /* no or unknown flash  */
-
-       flashtest_h = baseaddr[2];      /* device ID            */
-       flashtest_l = baseaddr[3];
-
-       if (flashtest_h != flashtest_l)
-               return (0);
-
-       switch (flashtest_h) {
-       case INTEL_ID_28F160C3B:
-               info->flash_id = FLASH_28F160C3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       case INTEL_ID_28F160F3B:
-               info->flash_id = FLASH_28F160F3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       case INTEL_ID_28F640C3B:
-               info->flash_id = FLASH_28F640C3B;
-               info->sector_count = 135;
-               info->size = 0x02000000;        /* 16 * 2 MB = 32 MB    */
-               break;
-       default:
-               return (0);                     /* no or unknown flash  */
-       }
-
-       info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
-       if (info->flash_id & FLASH_BTYPE) {
-               volatile unsigned long *tmp = baseaddr;
-
-               /* set up sector start adress table (bottom sector type)
-                * AND unlock the sectors (if our chip is 160C3)
-                */
-               for (i = 0; i < info->sector_count; i++) {
-                       if (((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) ||
-                           ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F640C3B)) {
-                               tmp[0] = 0x00600060;
-                               tmp[1] = 0x00600060;
-                               tmp[0] = 0x00D000D0;
-                               tmp[1] = 0x00D000D0;
-                       }
-                       info->start[i] = (uint) tmp;
-                       tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith       */
-               }
-       }
-
-       memset (info->protect, 0, info->sector_count);
-
-       baseaddr[0] = 0x00FF00FF;
-       baseaddr[1] = 0x00FF00FF;
-
-       return (info->size);
-}
-
-static ulong flash_amd_get_size (vu_char *addr, flash_info_t *info)
-{
-       short i;
-       uchar vendor, devid;
-       ulong base = (ulong)addr;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x0555] = 0xAA;
-       addr[0x02AA] = 0x55;
-       addr[0x0555] = 0x90;
-
-       udelay(1000);
-
-       vendor = addr[0];
-       devid = addr[1] & 0xff;
-
-       /* only support AMD */
-       if (vendor != 0x01) {
-               return 0;
-       }
-
-       vendor &= 0xf;
-       devid &= 0xff;
-
-       if (devid == AMD_ID_F040B) {
-               info->flash_id     = vendor << 16 | devid;
-               info->sector_count = 8;
-               info->size         = info->sector_count * 0x10000;
-       }
-       else if (devid == AMD_ID_F080B) {
-               info->flash_id     = vendor << 16 | devid;
-               info->sector_count = 16;
-               info->size         = 4 * info->sector_count * 0x10000;
-       }
-       else if (devid == AMD_ID_F016D) {
-               info->flash_id     = vendor << 16 | devid;
-               info->sector_count = 32;
-               info->size         = 4 * info->sector_count * 0x10000;
-       }
-       else {
-               printf ("## Unknown Flash Type: %02x\n", devid);
-               return 0;
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* sector base address */
-               info->start[i] = base + i * (info->size / info->sector_count);
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               addr = (volatile unsigned char *)(info->start[i]);
-               info->protect[i] = addr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (vu_char *)info->start[0];
-               addr[0] = 0xF0; /* reset bank */
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size_b0 = 0;
-       unsigned long size_b1 = 0;
-       int i;
-
-       /* Init: no FLASHes known
-        */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Disable flash protection */
-       CPU86_BCR |= (CPU86_BCR_FWPT | CPU86_BCR_FWRE);
-
-       /* Static FLASH Bank configuration here (only one bank) */
-
-       size_b0 = flash_int_get_size ((ulong *) CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-       size_b1 = flash_amd_get_size ((uchar *) CONFIG_SYS_BOOTROM_BASE, &flash_info[1]);
-
-       if (size_b0 > 0 || size_b1 > 0) {
-
-               printf("(");
-
-               if (size_b0 > 0) {
-                       puts ("Bank#1 - ");
-                       print_size (size_b0, (size_b1 > 0) ? ", " : ") ");
-               }
-
-               if (size_b1 > 0) {
-                       puts ("Bank#2 - ");
-                       print_size (size_b1, ") ");
-               }
-       }
-       else {
-               printf ("## No FLASH found.\n");
-               return 0;
-       }
-       /* protect monitor and environment sectors
-        */
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_BOOTROM_BASE
-       if (size_b1) {
-               /* If U-Boot is booted from ROM the CONFIG_SYS_MONITOR_BASE > CONFIG_SYS_FLASH_BASE
-                * but we shouldn't protect it.
-                */
-
-               flash_protect  (FLAG_PROTECT_SET,
-                               CONFIG_SYS_MONITOR_BASE,
-                               CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, &flash_info[1]
-               );
-       }
-#else
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_SYS_MONITOR_BASE,
-                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
-       );
-#endif
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# if CONFIG_ENV_ADDR >= CONFIG_SYS_BOOTROM_BASE
-       if (size_b1) {
-               flash_protect (FLAG_PROTECT_SET,
-                               CONFIG_ENV_ADDR,
-                               CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[1]);
-       }
-# else
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR,
-                      CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-# endif
-#endif
-
-       return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch ((info->flash_id >> 16) & 0xff) {
-       case 0x89:
-               printf ("INTEL ");
-               break;
-       case 0x1:
-               printf ("AMD ");
-               break;
-       default:
-               printf ("Unknown Vendor ");
-               break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F160C3B:
-               printf ("28F160C3B (16 Mbit, bottom sector)\n");
-               break;
-       case FLASH_28F160F3B:
-               printf ("28F160F3B (16 Mbit, bottom sector)\n");
-               break;
-       case FLASH_28F640C3B:
-               printf ("28F640C3B (64 M, bottom sector)\n");
-               break;
-       case AMD_ID_F040B:
-               printf ("AM29F040B (4 Mbit)\n");
-               break;
-       default:
-               printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       if (info->size < 0x100000)
-               printf ("  Size: %ld KB in %d Sectors\n",
-                               info->size >> 10, info->sector_count);
-       else
-               printf ("  Size: %ld MB in %d Sectors\n",
-                               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       vu_char *addr = (vu_char *)(info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect])
-                       prot++;
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                               prot);
-       } else {
-               printf ("\n");
-       }
-
-       /* Check the type of erased flash
-        */
-       if (info->flash_id >> 16 == 0x1) {
-               /* Erase AMD flash
-                */
-               l_sect = -1;
-
-               /* Disable interrupts which might cause a timeout here */
-               flag = disable_interrupts();
-
-               addr[0x0555] = 0xAA;
-               addr[0x02AA] = 0x55;
-               addr[0x0555] = 0x80;
-               addr[0x0555] = 0xAA;
-               addr[0x02AA] = 0x55;
-
-               /* wait at least 80us - let's wait 1 ms */
-               udelay (1000);
-
-               /* Start erase on unprotected sectors */
-               for (sect = s_first; sect<=s_last; sect++) {
-                       if (info->protect[sect] == 0) { /* not protected */
-                               addr = (vu_char *)(info->start[sect]);
-                               addr[0] = 0x30;
-                               l_sect = sect;
-                       }
-               }
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts();
-
-               /* wait at least 80us - let's wait 1 ms */
-               udelay (1000);
-
-               /*
-                * We wait for the last triggered sector
-                */
-               if (l_sect < 0)
-                       goto AMD_DONE;
-
-               start = get_timer (0);
-               last  = start;
-               addr = (vu_char *)(info->start[l_sect]);
-               while ((addr[0] & 0x80) != 0x80) {
-                       if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                               printf ("Timeout\n");
-                               return 1;
-                       }
-                       /* show that we're waiting */
-                       if ((now - last) > 1000) {      /* every second */
-                               serial_putc ('.');
-                               last = now;
-                       }
-               }
-
-AMD_DONE:
-               /* reset to read mode */
-               addr = (volatile unsigned char *)info->start[0];
-               addr[0] = 0xF0;     /* reset bank */
-
-       } else {
-               /* Erase Intel flash
-                */
-
-               /* Start erase on unprotected sectors
-                */
-               for (sect = s_first; sect <= s_last; sect++) {
-                       volatile ulong *addr =
-                               (volatile unsigned long *) info->start[sect];
-
-                       start = get_timer (0);
-                       last = start;
-                       if (info->protect[sect] == 0) {
-                       /* Disable interrupts which might cause a timeout here
-                        */
-                               flag = disable_interrupts ();
-
-                               /* Erase the block
-                                */
-                               addr[0] = 0x00200020;
-                               addr[1] = 0x00200020;
-                               addr[0] = 0x00D000D0;
-                               addr[1] = 0x00D000D0;
-
-                               /* re-enable interrupts if necessary
-                                */
-                               if (flag)
-                                       enable_interrupts ();
-
-                               /* wait at least 80us - let's wait 1 ms
-                                */
-                               udelay (1000);
-
-                               last = start;
-                               while ((addr[0] & 0x00800080) != 0x00800080 ||
-                                  (addr[1] & 0x00800080) != 0x00800080) {
-                                       if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                               printf ("Timeout (erase suspended!)\n");
-                                               /* Suspend erase
-                                                */
-                                               addr[0] = 0x00B000B0;
-                                               addr[1] = 0x00B000B0;
-                                               goto DONE;
-                                       }
-                                       /* show that we're waiting
-                                        */
-                                       if ((now - last) > 1000) {      /* every second */
-                                               serial_putc ('.');
-                                               last = now;
-                                       }
-                               }
-                               if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
-                                       printf ("*** ERROR: erase failed!\n");
-                                       goto DONE;
-                               }
-                       }
-                       /* Clear status register and reset to read mode
-                        */
-                       addr[0] = 0x00500050;
-                       addr[1] = 0x00500050;
-                       addr[0] = 0x00FF00FF;
-                       addr[1] = 0x00FF00FF;
-               }
-       }
-
-       printf (" done\n");
-
-DONE:
-       return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong v;
-       int i, l, rc, cc = cnt, res = 0;
-
-       if (info->flash_id >> 16 == 0x1) {
-
-               /* Write to AMD 8-bit flash
-                */
-               while (cnt > 0) {
-                       if ((rc = write_byte(info, addr, *src)) != 0) {
-                               return (rc);
-                       }
-                       addr++;
-                       src++;
-                       cnt--;
-               }
-
-               return (0);
-       } else {
-
-               /* Write to Intel 64-bit flash
-                */
-               for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
-                       l = (addr & 3);
-                       addr &= ~3;
-
-                       for (i = 0; i < 4; i++) {
-                               v = (v << 8) + (i < l || i - l >= cc ?
-                                       *((unsigned char *) addr + i) : *src++);
-                       }
-
-                       if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
-                               break;
-               }
-       }
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
-                                          ulong data)
-{
-       int flag, res = 0;
-       ulong start;
-
-       /* Check if Flash is (sufficiently) erased
-        */
-       if ((*addr & data) != data)
-               return (2);
-
-       /* Disable interrupts which might cause a timeout here
-        */
-       flag = disable_interrupts ();
-
-       *addr = 0x00400040;
-       *addr = data;
-
-       /* re-enable interrupts if necessary
-        */
-       if (flag)
-               enable_interrupts ();
-
-       start = get_timer (0);
-       while ((*addr & 0x00800080) != 0x00800080) {
-               if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       /* Suspend program
-                        */
-                       *addr = 0x00B000B0;
-                       res = 1;
-                       goto OUT;
-               }
-       }
-
-       if (*addr & 0x00220022) {
-               printf ("*** ERROR: program failed!\n");
-               res = 1;
-       }
-
-OUT:
-       /* Clear status register and reset to read mode
-        */
-       *addr = 0x00500050;
-       *addr = 0x00FF00FF;
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte (flash_info_t *info, ulong dest, uchar data)
-{
-       vu_char *addr = (vu_char *)(info->start[0]);
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_char *)dest) & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0555] = 0xAA;
-       addr[0x02AA] = 0x55;
-       addr[0x0555] = 0xA0;
-
-       *((vu_char *)dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       while ((*((vu_char *)dest) & 0x80) != (data & 0x80)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/cu824/Kconfig b/board/cu824/Kconfig
deleted file mode 100644 (file)
index 7927b05..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_CU824
-
-config SYS_BOARD
-       default "cu824"
-
-config SYS_CONFIG_NAME
-       default "CU824"
-
-endif
diff --git a/board/cu824/MAINTAINERS b/board/cu824/MAINTAINERS
deleted file mode 100644 (file)
index b1b7190..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CU824 BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/cu824/
-F:     include/configs/CU824.h
-F:     configs/CU824_defconfig
diff --git a/board/cu824/Makefile b/board/cu824/Makefile
deleted file mode 100644 (file)
index e7bd7ca..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = cu824.o flash.o
diff --git a/board/cu824/README b/board/cu824/README
deleted file mode 100644 (file)
index cc0d207..0000000
+++ /dev/null
@@ -1,453 +0,0 @@
-ppcboot for a CU824 board
----------------------------
-
-CU824 has two banks of flash 8MB each. In board's notation, bank 0 is
-the one at the address of 0xFF800000 and bank 1 is the one at the
-address of 0xFF000000. On power-up the processor jumps to the address
-of 0xFFF00100, the last megabyte of the bank 0 of flash. Thus,
-U-Boot is configured to reside in flash starting at the address of
-0xFFF00000. The environment space is not embedded in the U-Boot code
-and is located in flash separately from U-Boot, at the address of
-0xFF008000.
-
-
-U-Boot test results
---------------------
-
-x.x Operation on all available serial consoles
-
-x.x.x CONFIG_CONS_INDEX 1
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>he
-go      - start application at address 'addr'
-run     - run commands in an environment variable
-bootm   - boot application image from memory
-bootp   - boot image via network using BootP/TFTP protocol
-tftpboot- boot image via network using TFTP protocol
-              and env variables ipaddr and serverip
-rarpboot- boot image via network using RARP/TFTP protocol
-bootd   - boot default, i.e., run 'bootcmd'
-loads   - load S-Record file over serial line
-loadb   - load binary file over serial line (kermit mode)
-md      - memory display
-mm      - memory modify (auto-incrementing)
-nm      - memory modify (constant address)
-mw      - memory write (fill)
-cp      - memory copy
-cmp     - memory compare
-crc32   - checksum calculation
-base    - print or set address offset
-printenv- print environment variables
-setenv  - set environment variables
-saveenv - save environment variables to persistent storage
-protect - enable or disable FLASH write protection
-erase   - erase FLASH memory
-flinfo  - print FLASH memory information
-bdinfo  - print Board Info structure
-iminfo  - print header information for application image
-coninfo - print console devices and informations
-loop    - infinite loop on address range
-mtest   - simple RAM test
-icache  - enable or disable instruction cache
-dcache  - enable or disable data cache
-reset   - Perform RESET of the CPU
-echo    - echo args to console
-version - print monitor version
-help    - print online help
-?       - alias for 'help'
-=>
-
-
-x.x.x CONFIG_CONS_INDEX 2
-
-**** NOT TESTED ****
-
-x.x Flash Driver Operation
-
-x.x.x Erase Operation
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>
-=>
-=>md ff000000
-ff000000: 27051956 70706362 6f6f7420 302e382e    '..Vppcboot 0.8.
-ff000010: 3320284d 61792031 31203230 3031202d    3 (May 11 2001 -
-ff000020: 2031343a 35373a30 33290000 00000000     14:57:03)......
-ff000030: 00000000 00000000 00000000 00000000    ................
-ff000040: 00000000 00000000 00000000 00000000    ................
-ff000050: 00000000 00000000 00000000 00000000    ................
-ff000060: 00000000 00000000 00000000 00000000    ................
-ff000070: 00000000 00000000 00000000 00000000    ................
-ff000080: 00000000 00000000 00000000 00000000    ................
-ff000090: 00000000 00000000 00000000 00000000    ................
-ff0000a0: 00000000 00000000 00000000 00000000    ................
-ff0000b0: 00000000 00000000 00000000 00000000    ................
-ff0000c0: 00000000 00000000 00000000 00000000    ................
-ff0000d0: 00000000 00000000 00000000 00000000    ................
-ff0000e0: 00000000 00000000 00000000 00000000    ................
-ff0000f0: 00000000 00000000 00000000 00000000    ................
-=>erase ff000000 ff007fff
-Erase Flash from 0xff000000 to 0xff007fff
- done
-Erased 1 sectors
-=>md ff000000
-ff000000: ffffffff ffffffff ffffffff ffffffff    ................
-ff000010: ffffffff ffffffff ffffffff ffffffff    ................
-ff000020: ffffffff ffffffff ffffffff ffffffff    ................
-ff000030: ffffffff ffffffff ffffffff ffffffff    ................
-ff000040: ffffffff ffffffff ffffffff ffffffff    ................
-ff000050: ffffffff ffffffff ffffffff ffffffff    ................
-ff000060: ffffffff ffffffff ffffffff ffffffff    ................
-ff000070: ffffffff ffffffff ffffffff ffffffff    ................
-ff000080: ffffffff ffffffff ffffffff ffffffff    ................
-ff000090: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000a0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000b0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000c0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000d0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000e0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000f0: ffffffff ffffffff ffffffff ffffffff    ................
-=>
-
-x.x.x Information
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>
-=>
-=>
-=>flinfo
-
-Bank # 1: Intel: 28F160F3B (16Mbit)
-  Size: 8 MB in 39 Sectors
-  Sector Start Addresses:
-    FF000000      FF008000 (RO) FF010000      FF018000      FF020000
-    FF028000      FF030000      FF038000      FF040000      FF080000
-    FF0C0000      FF100000      FF140000      FF180000      FF1C0000
-    FF200000      FF240000      FF280000      FF2C0000      FF300000
-    FF340000      FF380000      FF3C0000      FF400000      FF440000
-    FF480000      FF4C0000      FF500000      FF540000      FF580000
-    FF5C0000      FF600000      FF640000      FF680000      FF6C0000
-    FF700000      FF740000      FF780000      FF7C0000
-
-Bank # 2: Intel: 28F160F3B (16Mbit)
-  Size: 8 MB in 39 Sectors
-  Sector Start Addresses:
-    FF800000      FF808000      FF810000      FF818000      FF820000
-    FF828000      FF830000      FF838000      FF840000      FF880000
-    FF8C0000      FF900000      FF940000      FF980000      FF9C0000
-    FFA00000      FFA40000      FFA80000      FFAC0000      FFB00000
-    FFB40000      FFB80000      FFBC0000      FFC00000      FFC40000
-    FFC80000      FFCC0000      FFD00000      FFD40000      FFD80000
-    FFDC0000      FFE00000      FFE40000      FFE80000      FFEC0000
-    FFF00000 (RO) FFF40000      FFF80000      FFFC0000
-=>
-
-x.x.x Flash Programming
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>
-=>
-=>
-=>cp 0 ff000000 20
-Copy to Flash... done
-=>md 0
-00000000: 0ec08ce0 03f9800c 00000001 040c0000    ................
-00000010: 00000001 03fd1aa0 03fd1ae4 03fd1a00    ................
-00000020: 03fd1a58 03fceb04 03fd34cc 03fd34d0    ...X......4...4.
-00000030: 03fcd5bc 03fcdabc 00000000 00000000    ................
-00000040: 00000000 00000000 00000000 00000000    ................
-00000050: 00000000 00000000 00000000 00000000    ................
-00000060: 00000000 00000000 00000000 00000000    ................
-00000070: 00000000 00000000 00000000 00000000    ................
-00000080: 00000000 00000000 00000000 00000000    ................
-00000090: 00000000 00000000 00000000 00000000    ................
-000000a0: 00000000 00000000 00000000 00000000    ................
-000000b0: 00000000 00000000 00000000 00000000    ................
-000000c0: 00000000 00000000 00000000 00000000    ................
-000000d0: 00000000 00000000 00000000 00000000    ................
-000000e0: 00000000 00000000 00000000 00000000    ................
-000000f0: 00000000 00000000 00000000 00000000    ................
-=>md ff000000
-ff000000: 0ec08ce0 03f9800c 00000001 040c0000    ................
-ff000010: 00000001 03fd1aa0 03fd1ae4 03fd1a00    ................
-ff000020: 03fd1a58 03fceb04 03fd34cc 03fd34d0    ...X......4...4.
-ff000030: 03fcd5bc 03fcdabc 00000000 00000000    ................
-ff000040: 00000000 00000000 00000000 00000000    ................
-ff000050: 00000000 00000000 00000000 00000000    ................
-ff000060: 00000000 00000000 00000000 00000000    ................
-ff000070: 00000000 00000000 00000000 00000000    ................
-ff000080: ffffffff ffffffff ffffffff ffffffff    ................
-ff000090: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000a0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000b0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000c0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000d0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000e0: ffffffff ffffffff ffffffff ffffffff    ................
-ff0000f0: ffffffff ffffffff ffffffff ffffffff    ................
-=>
-
-x.x.x Storage of environment variables in flash
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>printenv
-bootargs=
-bootcmd=bootm FE020000
-bootdelay=5
-baudrate=9600
-ipaddr=192.168.4.2
-serverip=192.168.4.1
-ethaddr=00:40:42:01:00:a0
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 167/32764 bytes
-=>setenv myvar 1234
-=>save_env
-Un-Protected 1 sectors
-Erasing Flash...
- done
-Erased 1 sectors
-Saving Environment to Flash...
-Protected 1 sectors
-=>reset
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>printenv
-bootargs=
-bootcmd=bootm FE020000
-bootdelay=5
-baudrate=9600
-ipaddr=192.168.4.2
-serverip=192.168.4.1
-ethaddr=00:40:42:01:00:a0
-myvar=1234
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 178/32764 bytes
-=>
-
-x.x Image Download and run over serial port
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>
-=>mw 40000 0 10000
-=>md 40000
-00040000: 00000000 00000000 00000000 00000000    ................
-00040010: 00000000 00000000 00000000 00000000    ................
-00040020: 00000000 00000000 00000000 00000000    ................
-00040030: 00000000 00000000 00000000 00000000    ................
-00040040: 00000000 00000000 00000000 00000000    ................
-00040050: 00000000 00000000 00000000 00000000    ................
-00040060: 00000000 00000000 00000000 00000000    ................
-00040070: 00000000 00000000 00000000 00000000    ................
-00040080: 00000000 00000000 00000000 00000000    ................
-00040090: 00000000 00000000 00000000 00000000    ................
-000400a0: 00000000 00000000 00000000 00000000    ................
-000400b0: 00000000 00000000 00000000 00000000    ................
-000400c0: 00000000 00000000 00000000 00000000    ................
-000400d0: 00000000 00000000 00000000 00000000    ................
-000400e0: 00000000 00000000 00000000 00000000    ................
-000400f0: 00000000 00000000 00000000 00000000    ................
-=>loads
-## Ready for S-Record download ...
-
-(Back at xpert.denx.de)
-[vlad@xpert vlad]$ cat hello_world.srec >/dev/ttyS0
-[vlad@xpert vlad]$ kermit -l /dev/ttyS0 -b 9600 -c
-Connecting to /dev/ttyS0, speed 9600.
-The escape character is Ctrl-\ (ASCII 28, FS)
-Type the escape character followed by C to get back,
-or followed by ? to see other options.
-md 40000
-00040000: 00018148 9421ffe0 7c0802a6 bf61000c    ...H.!..|....a..
-00040010: 90010024 48000005 7fc802a6 801effe8    ...$H...........
-00040020: 7fc0f214 7c7f1b78 813f0038 7c9c2378    ....|..x.?.8|.#x
-00040030: 807e8000 7cbd2b78 80090010 3b600000    .~..|.+x....;`..
-00040040: 7c0803a6 4e800021 813f0038 7f84e378    |...N..!.?.8...x
-00040050: 807e8004 80090010 7c0803a6 4e800021    .~......|...N..!
-00040060: 7c1be000 4181003c 80bd0000 813f0038    |...A..<.....?.8
-00040070: 3bbd0004 2c050000 40820008 80be8008    ;...,...@.......
-00040080: 80090010 7f64db78 807e800c 3b7b0001    .....d.x.~..;{..
-00040090: 7c0803a6 4e800021 7c1be000 4081ffcc    |...N..!|...@...
-000400a0: 813f0038 807e8010 80090010 7c0803a6    .?.8.~......|...
-000400b0: 4e800021 813f0038 80090004 7c0803a6    N..!.?.8....|...
-000400c0: 4e800021 2c030000 4182ffec 813f0038    N..!,...A....?.8
-000400d0: 80090000 7c0803a6 4e800021 813f0038    ....|...N..!.?.8
-000400e0: 807e8014 80090010 7c0803a6 4e800021    .~......|...N..!
-000400f0: 38600000 80010024 7c0803a6 bb61000c    8`.....$|....a..
-=>go 40004
-## Starting application at 0x00040004 ...
-Hello World
-argc = 1
-argv[0] = "40004"
-argv[1] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-=>
-
-x.x Image download and run over ethernet interface
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
-  CPU:   MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
-  Board: CU824 Revision 1 Local Bus at 99 MHz
-  DRAM:  64 MB
-  FLASH: 16 MB
-  In:    serial
-  Out:   serial
-  Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-=>
-=>mw 40000 0 10000
-=>md 40000
-00040000: 00000000 00000000 00000000 00000000    ................
-00040010: 00000000 00000000 00000000 00000000    ................
-00040020: 00000000 00000000 00000000 00000000    ................
-00040030: 00000000 00000000 00000000 00000000    ................
-00040040: 00000000 00000000 00000000 00000000    ................
-00040050: 00000000 00000000 00000000 00000000    ................
-00040060: 00000000 00000000 00000000 00000000    ................
-00040070: 00000000 00000000 00000000 00000000    ................
-00040080: 00000000 00000000 00000000 00000000    ................
-00040090: 00000000 00000000 00000000 00000000    ................
-000400a0: 00000000 00000000 00000000 00000000    ................
-000400b0: 00000000 00000000 00000000 00000000    ................
-000400c0: 00000000 00000000 00000000 00000000    ................
-000400d0: 00000000 00000000 00000000 00000000    ................
-000400e0: 00000000 00000000 00000000 00000000    ................
-000400f0: 00000000 00000000 00000000 00000000    ................
-=>tftpboot 40000 hello_world.bin
-ARP broadcast 1
-TFTP from server 192.168.4.1; our IP address is 192.168.4.2
-Filename 'hello_world.bin'.
-Load address: 0x40000
-Loading: #############
-done
-Bytes transferred = 65912 (10178 hex)
-=>md 40000
-00040000: 00018148 9421ffe0 7c0802a6 bf61000c    ...H.!..|....a..
-00040010: 90010024 48000005 7fc802a6 801effe8    ...$H...........
-00040020: 7fc0f214 7c7f1b78 813f0038 7c9c2378    ....|..x.?.8|.#x
-00040030: 807e8000 7cbd2b78 80090010 3b600000    .~..|.+x....;`..
-00040040: 7c0803a6 4e800021 813f0038 7f84e378    |...N..!.?.8...x
-00040050: 807e8004 80090010 7c0803a6 4e800021    .~......|...N..!
-00040060: 7c1be000 4181003c 80bd0000 813f0038    |...A..<.....?.8
-00040070: 3bbd0004 2c050000 40820008 80be8008    ;...,...@.......
-00040080: 80090010 7f64db78 807e800c 3b7b0001    .....d.x.~..;{..
-00040090: 7c0803a6 4e800021 7c1be000 4081ffcc    |...N..!|...@...
-000400a0: 813f0038 807e8010 80090010 7c0803a6    .?.8.~......|...
-000400b0: 4e800021 813f0038 80090004 7c0803a6    N..!.?.8....|...
-000400c0: 4e800021 2c030000 4182ffec 813f0038    N..!,...A....?.8
-000400d0: 80090000 7c0803a6 4e800021 813f0038    ....|...N..!.?.8
-000400e0: 807e8014 80090010 7c0803a6 4e800021    .~......|...N..!
-000400f0: 38600000 80010024 7c0803a6 bb61000c    8`.....$|....a..
-=>go 40004
-## Starting application at 0x00040004 ...
-Hello World
-argc = 1
-argv[0] = "40004"
-argv[1] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-=>
diff --git a/board/cu824/cu824.c b/board/cu824/cu824.c
deleted file mode 100644 (file)
index 6b23c53..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * (C) Copyright 2001-2006
- * Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
-
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <pci.h>
-#include <netdev.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define BOARD_REV_REG 0xFE80002B
-
-int checkboard (void)
-{
-       char  revision = *(volatile char *)(BOARD_REV_REG);
-       char  buf[32];
-
-       puts ("Board: CU824 ");
-       printf("Revision %d ", revision);
-       printf("Local Bus at %s MHz\n", strmhz(buf, gd->bus_clk));
-
-       return 0;
-}
-
-phys_size_t initdram(int board_type)
-{
-       long size;
-       long new_bank0_end;
-       long mear1;
-       long emear1;
-
-       size = get_ram_size(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       new_bank0_end = size - 1;
-       mear1 = mpc824x_mpc107_getreg(MEAR1);
-       emear1 = mpc824x_mpc107_getreg(EMEAR1);
-       mear1 = (mear1  & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
-       emear1 = (emear1 & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
-       mpc824x_mpc107_setreg(MEAR1,  mear1);
-       mpc824x_mpc107_setreg(EMEAR1, emear1);
-
-       return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_sandpoint_config_table[] = {
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                      PCI_ENET0_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-
-       { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_sandpoint_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
-       pci_mpc824x_init(&hose);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/cu824/flash.c b/board/cu824/flash.c
deleted file mode 100644 (file)
index 3a6d954..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-#define FLASH_BANK_SIZE 0x800000
-#define MAIN_SECT_SIZE  0x40000
-#define PARAM_SECT_SIZE 0x8000
-
-#define BOARD_CTRL_REG 0xFE800013
-
-flash_info_t    flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-static int write_data (flash_info_t *info, ulong dest, ulong *data);
-static void write_via_fpu(vu_long *addr, ulong *data);
-static __inline__ unsigned long get_msr(void);
-static __inline__ void set_msr(unsigned long msr);
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-/*---------------------------------------------------------------------*/
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
-    int i, j;
-    ulong size = 0;
-    volatile unsigned char *bcr = (volatile unsigned char *)(BOARD_CTRL_REG);
-
-    DEBUGF("Write protect was: 0x%02X\n", *bcr);
-    *bcr &= 0x1;       /* FWPT must be 0  */
-    *bcr |= 0x6;       /* FWP0 = FWP1 = 1 */
-    DEBUGF("Write protect is:  0x%02X\n", *bcr);
-
-    for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-       vu_long *addr = (vu_long *)(CONFIG_SYS_FLASH_BASE + i * FLASH_BANK_SIZE);
-
-       addr[0] = 0x00900090;
-
-       DEBUGF ("Flash bank # %d:\n"
-               "\tManuf. ID @ 0x%08lX: 0x%08lX\n"
-               "\tDevice ID @ 0x%08lX: 0x%08lX\n",
-               i,
-               (ulong)(&addr[0]), addr[0],
-               (ulong)(&addr[2]), addr[2]);
-
-       if ((addr[0] == addr[1]) && (addr[0] == INTEL_MANUFACT) &&
-           (addr[2] == addr[3]) && (addr[2] == INTEL_ID_28F160F3B))
-       {
-           flash_info[i].flash_id = (FLASH_MAN_INTEL & FLASH_VENDMASK) |
-                                    (INTEL_ID_28F160F3B & FLASH_TYPEMASK);
-       } else {
-           flash_info[i].flash_id = FLASH_UNKNOWN;
-           addr[0] = 0xFFFFFFFF;
-           goto Done;
-       }
-
-       DEBUGF ("flash_id = 0x%08lX\n", flash_info[i].flash_id);
-
-       addr[0] = 0xFFFFFFFF;
-
-       flash_info[i].size = FLASH_BANK_SIZE;
-       flash_info[i].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       memset(flash_info[i].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
-       for (j = 0; j < flash_info[i].sector_count; j++) {
-               if (j <= 7) {
-                       flash_info[i].start[j] = CONFIG_SYS_FLASH_BASE +
-                                                i * FLASH_BANK_SIZE +
-                                                j * PARAM_SECT_SIZE;
-               } else {
-                       flash_info[i].start[j] = CONFIG_SYS_FLASH_BASE +
-                                                i * FLASH_BANK_SIZE +
-                                                (j - 7)*MAIN_SECT_SIZE;
-               }
-       }
-       size += flash_info[i].size;
-    }
-
-    /* Protect monitor and environment sectors
-     */
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE + FLASH_BANK_SIZE
-    flash_protect(FLAG_PROTECT_SET,
-             CONFIG_SYS_MONITOR_BASE,
-             CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-             &flash_info[1]);
-#else
-    flash_protect(FLAG_PROTECT_SET,
-             CONFIG_SYS_MONITOR_BASE,
-             CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-             &flash_info[0]);
-#endif
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-#if CONFIG_ENV_ADDR >= CONFIG_SYS_FLASH_BASE + FLASH_BANK_SIZE
-    flash_protect(FLAG_PROTECT_SET,
-             CONFIG_ENV_ADDR,
-             CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
-             &flash_info[1]);
-#else
-    flash_protect(FLAG_PROTECT_SET,
-             CONFIG_ENV_ADDR,
-             CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
-             &flash_info[0]);
-#endif
-#endif
-
-Done:
-    return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       switch ((i = info->flash_id & FLASH_VENDMASK)) {
-       case (FLASH_MAN_INTEL & FLASH_VENDMASK):
-               printf ("Intel: ");
-               break;
-       default:
-               printf ("Unknown Vendor 0x%04x ", i);
-               break;
-       }
-
-       switch ((i = info->flash_id & FLASH_TYPEMASK)) {
-       case (INTEL_ID_28F160F3B & FLASH_TYPEMASK):
-               printf ("28F160F3B (16Mbit)\n");
-               break;
-       default:
-               printf ("Unknown Chip Type 0x%04x\n", i);
-               goto Done;
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-                       info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; i++) {
-               if ((i % 5) == 0) {
-                       printf ("\n   ");
-               }
-               printf (" %08lX%s", info->start[i],
-                               info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-
-Done:
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       DEBUGF ("Erase flash bank %d sect %d ... %d\n",
-               info - &flash_info[0], s_first, s_last);
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) !=
-           (FLASH_MAN_INTEL & FLASH_VENDMASK)) {
-               printf ("Can erase only Intel flash types - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_long *addr = (vu_long *)(info->start[sect]);
-
-                       DEBUGF ("Erase sect %d @ 0x%08lX\n",
-                               sect, (ulong)addr);
-
-                       /* Disable interrupts which might cause a timeout
-                        * here.
-                        */
-                       flag = disable_interrupts();
-
-                       addr[0] = 0x00500050;   /* clear status register */
-                       addr[0] = 0x00200020;   /* erase setup */
-                       addr[0] = 0x00D000D0;   /* erase confirm */
-
-                       addr[1] = 0x00500050;   /* clear status register */
-                       addr[1] = 0x00200020;   /* erase setup */
-                       addr[1] = 0x00D000D0;   /* erase confirm */
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((addr[0] & 0x00800080) != 0x00800080) ||
-                              ((addr[1] & 0x00800080) != 0x00800080) ) {
-                               if ((now=get_timer(start)) >
-                                          CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       addr[0] = 0x00B000B0; /* suspend erase */
-                                       addr[0] = 0x00FF00FF; /* to read mode  */
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {  /* every second  */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       addr[0] = 0x00FF00FF;
-               }
-       }
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define        FLASH_WIDTH     8       /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong wp, cp, msr;
-       int l, rc, i;
-       ulong data[2];
-       ulong *datah = &data[0];
-       ulong *datal = &data[1];
-
-       DEBUGF ("Flash write_buff: @ 0x%08lx, src 0x%08lx len %ld\n",
-               addr, (ulong)src, cnt);
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-
-       msr = get_msr();
-       set_msr(msr | MSR_FP);
-
-       wp = (addr & ~(FLASH_WIDTH-1)); /* get lower aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               *datah = *datal = 0;
-
-               for (i = 0, cp = wp; i < l; i++, cp++) {
-                       if (i >= 4) {
-                               *datah = (*datah << 8) |
-                                               ((*datal & 0xFF000000) >> 24);
-                       }
-
-                       *datal = (*datal << 8) | (*(uchar *)cp);
-               }
-               for (; i < FLASH_WIDTH && cnt > 0; ++i) {
-                       char tmp;
-
-                       tmp = *src;
-
-                       src++;
-
-                       if (i >= 4) {
-                               *datah = (*datah << 8) |
-                                               ((*datal & 0xFF000000) >> 24);
-                       }
-
-                       *datal = (*datal << 8) | tmp;
-
-                       --cnt; ++cp;
-               }
-
-               for (; cnt == 0 && i < FLASH_WIDTH; ++i, ++cp) {
-                       if (i >= 4) {
-                               *datah = (*datah << 8) |
-                                               ((*datal & 0xFF000000) >> 24);
-                       }
-
-                       *datal = (*datah << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_data(info, wp, data)) != 0) {
-                       set_msr(msr);
-                       return (rc);
-               }
-
-               wp += FLASH_WIDTH;
-       }
-
-       /*
-        * handle FLASH_WIDTH aligned part
-        */
-       while (cnt >= FLASH_WIDTH) {
-               *datah = *(ulong *)src;
-               *datal = *(ulong *)(src + 4);
-               if ((rc = write_data(info, wp, data)) != 0) {
-                       set_msr(msr);
-                       return (rc);
-               }
-               wp  += FLASH_WIDTH;
-               cnt -= FLASH_WIDTH;
-               src += FLASH_WIDTH;
-       }
-
-       if (cnt == 0) {
-               set_msr(msr);
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       *datah = *datal = 0;
-       for (i = 0, cp = wp; i < FLASH_WIDTH && cnt > 0; ++i, ++cp) {
-               char tmp;
-
-               tmp = *src;
-
-               src++;
-
-               if (i >= 4) {
-                       *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
-               }
-
-               *datal = (*datal << 8) | tmp;
-
-               --cnt;
-       }
-
-       for (; i < FLASH_WIDTH; ++i, ++cp) {
-               if (i >= 4) {
-                       *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
-               }
-
-               *datal = (*datal << 8) | (*(uchar *)cp);
-       }
-
-       rc = write_data(info, wp, data);
-       set_msr(msr);
-
-       return (rc);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, ulong *data)
-{
-       vu_long *addr = (vu_long *)dest;
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if (((addr[0] & data[0]) != data[0]) ||
-           ((addr[1] & data[1]) != data[1]) ) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0] = 0x00400040;           /* write setup */
-       write_via_fpu(addr, data);
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       start = get_timer (0);
-
-       while (((addr[0] & 0x00800080) != 0x00800080) ||
-              ((addr[1] & 0x00800080) != 0x00800080) ) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       addr[0] = 0x00FF00FF;   /* restore read mode */
-                       return (1);
-               }
-       }
-
-       addr[0] = 0x00FF00FF;   /* restore read mode */
-
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void write_via_fpu(vu_long *addr, ulong *data)
-{
-       __asm__ __volatile__ ("lfd  1, 0(%0)" : : "r" (data));
-       __asm__ __volatile__ ("stfd 1, 0(%0)" : : "r" (addr));
-}
-/*-----------------------------------------------------------------------
- */
-static __inline__ unsigned long get_msr(void)
-{
-    unsigned long msr;
-
-    __asm__ __volatile__ ("mfmsr %0" : "=r" (msr) :);
-    return msr;
-}
-
-static __inline__ void set_msr(unsigned long msr)
-{
-    __asm__ __volatile__ ("mtmsr %0" : : "r" (msr));
-}
index 4b65a9bc9013be01fdc6d0702b7c112d597f2cd5..a37b7990e08172163b6e45398e8dbc0656fab5fc 100644 (file)
@@ -1,5 +1,5 @@
 DNS325 BOARD
-M:     Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+M:     Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
 S:     Maintained
 F:     board/d-link/dns325/
 F:     include/configs/dns325.h
index b8a5ea1d6a4d051a88004559fdd7e84a5e16894c..c39afcae9d44aa4b651838ab601363f6e0b73252 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2011
-# Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+# Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
 #
 # Based on Kirkwood support:
 # (C) Copyright 2009
index a022daf71e419bc87b707aeaf35ea7813d6e13fe..75dd775762827b87c5cce89db8b62fc16a0877a6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2011
- * Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+ * Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
  *
  * Based on Kirkwood support:
  * (C) Copyright 2009
index f7b25f285ff55adb933476996e7e639f925e4d4f..01671111ec182bd3a4917ef8191826de48a8606e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2011
- * Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+ * Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
  *
  * Based on Kirkwood support:
  * (C) Copyright 2009
index b69c1df5c0fc161a0046d10b4ff89fd33f6e4748..dbd31a1d30dd806f4c60240f8bc771f47faba8c1 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2011
-# Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+# Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
 #
 # Based on Kirkwood support:
 # (C) Copyright 2009
index c740669f33ea2ca2c488674454c1bfa13eaa7557..a15a9edac4569a633e002fa00fb2fde26f5be903 100644 (file)
@@ -107,8 +107,10 @@ int checkboard (void)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
index 682f2685dc11293111419f77d9913dff927157f1..5c629db139bae17b89ff55121c180513d62f4bd1 100644 (file)
@@ -20,7 +20,7 @@ SECTIONS
        {
          *(.vectors)
          arch/arm/cpu/arm926ejs/start.o                (.text*)
-         arch/arm/cpu/arm926ejs/davinci/built-in.o     (.text*)
+         arch/arm/cpu/arm926ejs/built-in.o             (.text*)
          drivers/mtd/nand/built-in.o                   (.text*)
 
          *(.text*)
index 1a8946d06ca9dfcda34215a383ad1deacc3f591b..1286e4509f42f56ee4a65a8b5dc653aaaf00b4f9 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_DBAU1X00
 
-config SYS_CPU
-       default "mips32"
-
 config SYS_BOARD
        default "dbau1x00"
 
@@ -12,4 +9,22 @@ config SYS_SOC
 config SYS_CONFIG_NAME
        default "dbau1x00"
 
+menu "dbau1x00 board options"
+
+choice
+       prompt "Select au1x00 SoC type"
+
+config DBAU1100
+       bool "Select AU1100"
+
+config DBAU1500
+       bool "Select AU1500"
+
+config DBAU1550
+       bool "Select AU1550"
+
+endchoice
+
+endmenu
+
 endif
diff --git a/board/eXalion/Kconfig b/board/eXalion/Kconfig
deleted file mode 100644 (file)
index a22f58a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_EXALION
-
-config SYS_BOARD
-       default "eXalion"
-
-config SYS_CONFIG_NAME
-       default "eXalion"
-
-endif
diff --git a/board/eXalion/MAINTAINERS b/board/eXalion/MAINTAINERS
deleted file mode 100644 (file)
index 0ea74ca..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-EXALION BOARD
-M:     Torsten Demke <torsten.demke@fci.com>
-S:     Maintained
-F:     board/eXalion/
-F:     include/configs/eXalion.h
-F:     configs/eXalion_defconfig
diff --git a/board/eXalion/Makefile b/board/eXalion/Makefile
deleted file mode 100644 (file)
index 9192e28..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = eXalion.o
diff --git a/board/eXalion/eXalion.c b/board/eXalion/eXalion.c
deleted file mode 100644 (file)
index 304ff21..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Torsten Demke, FORCE Computers GmbH. torsten.demke@fci.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <ide.h>
-#include <netdev.h>
-#include <timestamp.h>
-#include "piix_pci.h"
-#include "eXalion.h"
-
-int checkboard (void)
-{
-       ulong busfreq = get_bus_freq (0);
-       char buf[32];
-
-       printf ("Board: eXalion MPC824x - CHRP (MAP B)\n");
-       printf ("Built: %s at %s\n", U_BOOT_DATE, U_BOOT_TIME);
-       printf ("Local Bus:  %s MHz\n", strmhz (buf, busfreq));
-
-       return 0;
-}
-
-int checkflash (void)
-{
-       printf ("checkflash\n");
-       flash_init ();
-       return (0);
-}
-
-phys_size_t initdram (int board_type)
-{
-       int i, cnt;
-       volatile uchar *base = CONFIG_SYS_SDRAM_BASE;
-       volatile ulong *addr;
-       ulong save[32];
-       ulong val, ret = 0;
-
-       for (i = 0, cnt = (CONFIG_SYS_MAX_RAM_SIZE / sizeof (long)) >> 1; cnt > 0;
-            cnt >>= 1) {
-               addr = (volatile ulong *) base + cnt;
-               save[i++] = *addr;
-               *addr = ~cnt;
-       }
-
-       addr = (volatile ulong *) base;
-       save[i] = *addr;
-       *addr = 0;
-
-       if (*addr != 0) {
-               *addr = save[i];
-               goto Done;
-       }
-
-       for (cnt = 1; cnt <= CONFIG_SYS_MAX_RAM_SIZE / sizeof (long); cnt <<= 1) {
-               addr = (volatile ulong *) base + cnt;
-               val = *addr;
-               *addr = save[--i];
-               if (val != ~cnt) {
-                       ulong new_bank0_end = cnt * sizeof (long) - 1;
-                       ulong mear1 = mpc824x_mpc107_getreg (MEAR1);
-                       ulong emear1 = mpc824x_mpc107_getreg (EMEAR1);
-
-                       mear1 = (mear1 & 0xFFFFFF00) |
-                               ((new_bank0_end & MICR_ADDR_MASK) >>
-                                MICR_ADDR_SHIFT);
-                       emear1 = (emear1 & 0xFFFFFF00) |
-                               ((new_bank0_end & MICR_ADDR_MASK) >>
-                                MICR_EADDR_SHIFT);
-                       mpc824x_mpc107_setreg (MEAR1, mear1);
-                       mpc824x_mpc107_setreg (EMEAR1, emear1);
-
-                       ret = cnt * sizeof (long);
-                       goto Done;
-               }
-       }
-
-       ret = CONFIG_SYS_MAX_RAM_SIZE;
-      Done:
-       return ret;
-}
-
-int misc_init_r (void)
-{
-       pci_dev_t bdf;
-       u32 val32;
-       u8 val8;
-
-       puts ("ISA:   ");
-       bdf = pci_find_device (PIIX4_VENDOR_ID, PIIX4_ISA_DEV_ID, 0);
-       if (bdf == -1) {
-               puts ("Unable to find PIIX4 ISA bridge !\n");
-               hang ();
-       }
-
-       /* set device for normal ISA instead EIO */
-       pci_read_config_dword (bdf, PCI_CFG_PIIX4_GENCFG, &val32);
-       val32 |= 0x00000001;
-       pci_write_config_dword (bdf, PCI_CFG_PIIX4_GENCFG, val32);
-       printf ("PIIX4 ISA bridge (%d,%d,%d)\n", PCI_BUS (bdf),
-               PCI_DEV (bdf), PCI_FUNC (bdf));
-
-       puts ("ISA:   ");
-       bdf = pci_find_device (PIIX4_VENDOR_ID, PIIX4_IDE_DEV_ID, 0);
-       if (bdf == -1) {
-               puts ("Unable to find PIIX4 IDE controller !\n");
-               hang ();
-       }
-
-       /* Init BMIBA register  */
-       /* pci_read_config_dword(bdf, PCI_CFG_PIIX4_BMIBA, &val32); */
-       /* val32 |= 0x1000; */
-       /* pci_write_config_dword(bdf, PCI_CFG_PIIX4_BMIBA, val32); */
-
-       /* Enable BUS master and IO access  */
-       val32 = PCI_COMMAND_MASTER | PCI_COMMAND_IO;
-       pci_write_config_dword (bdf, PCI_COMMAND, val32);
-
-       /* Set latency  */
-       pci_read_config_byte (bdf, PCI_LATENCY_TIMER, &val8);
-       val8 = 0x40;
-       pci_write_config_byte (bdf, PCI_LATENCY_TIMER, val8);
-
-       /* Enable Primary ATA/IDE  */
-       pci_read_config_dword (bdf, PCI_CFG_PIIX4_IDETIM, &val32);
-       /* val32 = 0xa307a307; */
-       val32 = 0x00008000;
-       pci_write_config_dword (bdf, PCI_CFG_PIIX4_IDETIM, val32);
-
-
-       printf ("PIIX4 IDE controller (%d,%d,%d)\n", PCI_BUS (bdf),
-               PCI_DEV (bdf), PCI_FUNC (bdf));
-
-       /* Try to get FAT working... */
-       /* fat_register_read(ide_read); */
-
-
-       return (0);
-}
-
-/*
- * Show/Init PCI devices on the specified bus number.
- */
-
-void pci_eXalion_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
-{
-       unsigned char line;
-
-       switch (PCI_DEV (dev)) {
-       case 16:
-               line = PCI_INT_A;
-               break;
-       case 17:
-               line = PCI_INT_B;
-               break;
-       case 18:
-               line = PCI_INT_C;
-               break;
-       case 19:
-               line = PCI_INT_D;
-               break;
-#if defined (CONFIG_MPC8245)
-       case 20:
-               line = PCI_INT_A;
-               break;
-       case 21:
-               line = PCI_INT_B;
-               break;
-       case 22:
-               line = PCI_INT_NA;
-               break;
-#endif
-       default:
-               line = PCI_INT_A;
-               break;
-       }
-       pci_hose_write_config_byte (hose, dev, PCI_INTERRUPT_LINE, line);
-}
-
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-#if defined (CONFIG_MPC8240)
-static struct pci_config_table pci_eXalion_config_table[] = {
-       {
-        /* Intel 82559ER ethernet controller */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 18, 0x00,
-        pci_cfgfunc_config_device, {PCI_ENET0_IOADDR,
-                                    PCI_ENET0_MEMADDR,
-                                    PCI_COMMAND_MEMORY |
-                                    PCI_COMMAND_MASTER}},
-       {
-        /* Intel 82371AB PIIX4 PCI to ISA bridge */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 20, 0x00,
-        pci_cfgfunc_config_device, {0,
-                                    0,
-                                    PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
-       {
-        /* Intel 82371AB PIIX4 IDE controller */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 20, 0x01,
-        pci_cfgfunc_config_device, {0,
-                                    0,
-                                    PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
-       {}
-};
-#elif defined (CONFIG_MPC8245)
-static struct pci_config_table pci_eXalion_config_table[] = {
-       {
-        /* Intel 82559ER ethernet controller */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 17, 0x00,
-        pci_cfgfunc_config_device, {PCI_ENET0_IOADDR,
-                                    PCI_ENET0_MEMADDR,
-                                    PCI_COMMAND_MEMORY |
-                                    PCI_COMMAND_MASTER}},
-       {
-        /* Intel 82559ER ethernet controller */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 18, 0x00,
-        pci_cfgfunc_config_device, {PCI_ENET1_IOADDR,
-                                    PCI_ENET1_MEMADDR,
-                                    PCI_COMMAND_MEMORY |
-                                    PCI_COMMAND_MASTER}},
-       {
-        /* Broadcom BCM5690 Gigabit switch */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 20, 0x00,
-        pci_cfgfunc_config_device, {PCI_ENET2_IOADDR,
-                                    PCI_ENET2_MEMADDR,
-                                    PCI_COMMAND_MEMORY |
-                                    PCI_COMMAND_MASTER}},
-       {
-        /* Broadcom BCM5690 Gigabit switch */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 21, 0x00,
-        pci_cfgfunc_config_device, {PCI_ENET3_IOADDR,
-                                    PCI_ENET3_MEMADDR,
-                                    PCI_COMMAND_MEMORY |
-                                    PCI_COMMAND_MASTER}},
-       {
-        /* Intel 82371AB PIIX4 PCI to ISA bridge */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 22, 0x00,
-        pci_cfgfunc_config_device, {0,
-                                    0,
-                                    PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
-       {
-        /* Intel 82371AB PIIX4 IDE controller */
-        PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 22, 0x01,
-        pci_cfgfunc_config_device, {0,
-                                    0,
-                                    PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
-       {}
-};
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-
-#endif /* #ifndef CONFIG_PCI_PNP */
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table:pci_eXalion_config_table,
-       fixup_irq:pci_eXalion_fixup_irq,
-#endif
-};
-
-void pci_init_board (void)
-{
-       pci_mpc824x_init (&hose);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/eXalion/eXalion.h b/board/eXalion/eXalion.h
deleted file mode 100644 (file)
index 7804f4f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (C) Copyright 2002
- * Torsten Demke, FORCE Computers GmbH. torsten.demke@fci.com
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * James Dougherty (jfd@broadcom.com)
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __EXALION_H
-#define __EXALION_H
-
-/* IRQ settings */
-#define  PCI_INT_NA (0xff)   /* PCI Intr. not used */
-#define  PCI_INT_A  (0x09)   /* PCI Intr. A Interrupt Request Line Nr. */
-#define  PCI_INT_B  (0x0a)   /* PCI Intr. B Interrupt Request Line Nr. */
-#define  PCI_INT_C  (0x0b)   /* PCI Intr. C Interrupt Request Line Nr. */
-#define  PCI_INT_D  (0x0c)   /* PCI Intr. D Interrupt Request Line Nr. */
-#if defined (CPU_MPC8245)
-#define  LN_1_INT     PCI_INT_B  /* ethernet interrupt level */
-#define  LN_2_INT     PCI_INT_C  /* ethernet interrupt level */
-#define  BCM_1_INT    PCI_INT_A  /* BCM5690 interrupt level */
-#define  BCM_2_INT    PCI_INT_B  /* BCM5690 interrupt level */
-#elif defined (CPU_MPC8240)
-#define  BCM_INT      PCI_INT_B  /* BCM5600 interrupt level */
-#define  LN_INT       PCI_INT_C  /* ethernet interrupt level */
-#endif
-
-#ifndef __ASSEMBLY__
-#endif /* !__ASSEMBLY__ */
-
-#endif /* __EXALION_H */
diff --git a/board/eXalion/piix_pci.h b/board/eXalion/piix_pci.h
deleted file mode 100644 (file)
index 21c636f..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Torsten Demke, FORCE Computers GmbH. torsten.demke@fci.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#ifndef _PIIX4_PCI_H
-#define _PIIX4_PCI_H
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <pci.h>
-
-#define PIIX4_VENDOR_ID         0x8086
-#define PIIX4_ISA_DEV_ID        0x7110
-#define PIIX4_IDE_DEV_ID        0x7111
-
-/* Function 0 ISA Bridge */
-#define PCI_CFG_PIIX4_IORT      0x4C    /* 8 bit ISA Recovery Timer Reg (default 0x4D) */
-#define PCI_CFG_PIIX4_XBCS      0x4E    /* 16 bit XBus Chip select reg (default 0x0003) */
-#define PCI_CFG_PIIX4_PIRQC     0x60    /* PCI IRQ Route Register 4 x 8bit (default )*/
-#define PCI_CFG_PIIX4_SERIRQ    0x64
-#define PCI_CFG_PIIX4_TOM       0x69
-#define PCI_CFG_PIIX4_MSTAT     0x6A
-#define PCI_CFG_PIIX4_MBDMA     0x76
-#define PCI_CFG_PIIX4_APICBS    0x80
-#define PCI_CFG_PIIX4_DLC       0x82
-#define PCI_CFG_PIIX4_PDMACFG   0x90
-#define PCI_CFG_PIIX4_DDMABS    0x92
-#define PCI_CFG_PIIX4_GENCFG    0xB0
-#define PCI_CFG_PIIX4_RTCCFG    0xCB
-
-/* IO Addresses */
-#define PIIX4_ISA_DMA1_CH0BA    0x00
-#define PIIX4_ISA_DMA1_CH0CA    0x01
-#define PIIX4_ISA_DMA1_CH1BA    0x02
-#define PIIX4_ISA_DMA1_CH1CA    0x03
-#define PIIX4_ISA_DMA1_CH2BA    0x04
-#define PIIX4_ISA_DMA1_CH2CA    0x05
-#define PIIX4_ISA_DMA1_CH3BA    0x06
-#define PIIX4_ISA_DMA1_CH3CA    0x07
-#define PIIX4_ISA_DMA1_CMDST    0x08
-#define PIIX4_ISA_DMA1_REQ      0x09
-#define PIIX4_ISA_DMA1_WSBM     0x0A
-#define PIIX4_ISA_DMA1_CH_MOD   0x0B
-#define PIIX4_ISA_DMA1_CLR_PT   0x0C
-#define PIIX4_ISA_DMA1_M_CLR    0x0D
-#define PIIX4_ISA_DMA1_CLR_M    0x0E
-#define PIIX4_ISA_DMA1_RWAMB    0x0F
-
-#define PIIX4_ISA_DMA2_CH0BA    0xC0
-#define PIIX4_ISA_DMA2_CH0CA    0xC1
-#define PIIX4_ISA_DMA2_CH1BA    0xC2
-#define PIIX4_ISA_DMA2_CH1CA    0xC3
-#define PIIX4_ISA_DMA2_CH2BA    0xC4
-#define PIIX4_ISA_DMA2_CH2CA    0xC5
-#define PIIX4_ISA_DMA2_CH3BA    0xC6
-#define PIIX4_ISA_DMA2_CH3CA    0xC7
-#define PIIX4_ISA_DMA2_CMDST    0xD0
-#define PIIX4_ISA_DMA2_REQ      0xD2
-#define PIIX4_ISA_DMA2_WSBM     0xD4
-#define PIIX4_ISA_DMA2_CH_MOD   0xD6
-#define PIIX4_ISA_DMA2_CLR_PT   0xD8
-#define PIIX4_ISA_DMA2_M_CLR    0xDA
-#define PIIX4_ISA_DMA2_CLR_M    0xDC
-#define PIIX4_ISA_DMA2_RWAMB    0xDE
-
-#define PIIX4_ISA_INT1_ICW1     0x20
-#define PIIX4_ISA_INT1_OCW2     0x20
-#define PIIX4_ISA_INT1_OCW3     0x20
-#define PIIX4_ISA_INT1_ICW2     0x21
-#define PIIX4_ISA_INT1_ICW3     0x21
-#define PIIX4_ISA_INT1_ICW4     0x21
-#define PIIX4_ISA_INT1_OCW1     0x21
-
-#define PIIX4_ISA_INT1_ELCR     0x4D0
-
-#define PIIX4_ISA_INT2_ICW1     0xA0
-#define PIIX4_ISA_INT2_OCW2     0xA0
-#define PIIX4_ISA_INT2_OCW3     0xA0
-#define PIIX4_ISA_INT2_ICW2     0xA1
-#define PIIX4_ISA_INT2_ICW3     0xA1
-#define PIIX4_ISA_INT2_ICW4     0xA1
-#define PIIX4_ISA_INT2_OCW1     0xA1
-#define PIIX4_ISA_INT2_IMR      0xA1 /* read only */
-
-#define PIIX4_ISA_INT2_ELCR     0x4D1
-
-#define PIIX4_ISA_TMR0_CNT_ST   0x40
-#define PIIX4_ISA_TMR1_CNT_ST   0x41
-#define PIIX4_ISA_TMR2_CNT_ST   0x42
-#define PIIX4_ISA_TMR_TCW       0x43
-
-#define PIIX4_ISA_RST_XBUS      0x60
-
-#define PIIX4_ISA_NMI_CNT_ST    0x61
-#define PIIX4_ISA_NMI_ENABLE    0x70
-
-#define PIIX4_ISA_RTC_INDEX     0x70
-#define PIIX4_ISA_RTC_DATA      0x71
-#define PIIX4_ISA_RTCEXT_IND    0x70
-#define PIIX4_ISA_RTCEXT_DATA   0x71
-
-#define PIIX4_ISA_DMA1_CH2LPG   0x81
-#define PIIX4_ISA_DMA1_CH3LPG   0x82
-#define PIIX4_ISA_DMA1_CH1LPG   0x83
-#define PIIX4_ISA_DMA1_CH0LPG   0x87
-#define PIIX4_ISA_DMA2_CH2LPG   0x89
-#define PIIX4_ISA_DMA2_CH3LPG   0x8A
-#define PIIX4_ISA_DMA2_CH1LPG   0x8B
-#define PIIX4_ISA_DMA2_LPGRFR   0x8F
-
-#define PIIX4_ISA_PORT_92       0x92
-
-#define PIIX4_ISA_APM_CONTRL    0xB2
-#define PIIX4_ISA_APM_STATUS    0xB3
-
-#define PIIX4_ISA_COCPU_ERROR   0xF0
-
-/* Function 1 IDE Controller */
-#define PCI_CFG_PIIX4_BMIBA     0x20
-#define PCI_CFG_PIIX4_IDETIM    0x40
-#define PCI_CFG_PIIX4_SIDETIM   0x44
-#define PCI_CFG_PIIX4_UDMACTL   0x48
-#define PCI_CFG_PIIX4_UDMATIM   0x4A
-
-/* Function 2 USB Controller */
-#define PCI_CFG_PIIX4_SBRNUM    0x60
-#define PCI_CFG_PIIX4_LEGSUP    0xC0
-
-/* Function 3 Power Management */
-#define PCI_CFG_PIIX4_PMAB      0x40
-#define PCI_CFG_PIIX4_CNTA      0x44
-#define PCI_CFG_PIIX4_CNTB      0x48
-#define PCI_CFG_PIIX4_GPICTL    0x4C
-#define PCI_CFG_PIIX4_DEVRESD   0x50
-#define PCI_CFG_PIIX4_DEVACTA   0x54
-#define PCI_CFG_PIIX4_DEVACTB   0x58
-#define PCI_CFG_PIIX4_DEVRESA   0x5C
-#define PCI_CFG_PIIX4_DEVRESB   0x60
-#define PCI_CFG_PIIX4_DEVRESC   0x64
-#define PCI_CFG_PIIX4_DEVRESE   0x68
-#define PCI_CFG_PIIX4_DEVRESF   0x6C
-#define PCI_CFG_PIIX4_DEVRESG   0x70
-#define PCI_CFG_PIIX4_DEVRESH   0x74
-#define PCI_CFG_PIIX4_DEVRESI   0x78
-#define PCI_CFG_PIIX4_PMMISC    0x80
-#define PCI_CFG_PIIX4_SMBBA     0x90
-
-
-#endif  /* _PIIX4_PCI_H */
index 02fb3fa1a4111a511876af4f37af5b12501937fd..f8c746824a7625edb6a36fb5956815590cb9f01a 100644 (file)
@@ -216,7 +216,7 @@ int board_mmc_getcd(struct mmc *mmc)
 
 int board_mmc_init(bd_t *bis)
 {
-       s32 status = 0;
+       int ret;
        int i;
 
        /*
@@ -268,13 +268,15 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more USDHC controllers"
                               "(%d) then supported by the board (%d)\n",
                               i + 1, CONFIG_SYS_FSL_USDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
 
-               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+               ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 #endif
 
diff --git a/board/ep8260/Kconfig b/board/ep8260/Kconfig
deleted file mode 100644 (file)
index 5d876f4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_EP8260
-
-config SYS_BOARD
-       default "ep8260"
-
-config SYS_CONFIG_NAME
-       default "ep8260"
-
-endif
diff --git a/board/ep8260/MAINTAINERS b/board/ep8260/MAINTAINERS
deleted file mode 100644 (file)
index bfa923c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-EP8260 BOARD
-#M:    Frank Panno <fpanno@delphintech.com>
-S:     Orphan (since 2014-06)
-F:     board/ep8260/
-F:     include/configs/ep8260.h
-F:     configs/ep8260_defconfig
diff --git a/board/ep8260/Makefile b/board/ep8260/Makefile
deleted file mode 100644 (file)
index dd08b74..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = ep8260.o flash.o mii_phy.o
diff --git a/board/ep8260/ep8260.c b/board/ep8260/ep8260.c
deleted file mode 100644 (file)
index 3697d24..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Frank Panno <fpanno@delphintech.com>, Delphin Technology AG
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include "ep8260.h"
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA30 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA29 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA28 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA27 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA26 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA25 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA24 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA23 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA22 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA21 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA20 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA19 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA18 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA17 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA16 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA15 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA14 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA13 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA12 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA11 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA10 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PA9  */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PA8  */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PA7  */ {   0,   0,   0,   1,   0,   0   }, /* PA7 */
-       /* PA6  */ {   0,   0,   0,   1,   0,   0   }, /* PA6 */
-       /* PA5  */ {   0,   0,   0,   1,   0,   0   }, /* PA5 */
-       /* PA4  */ {   0,   0,   0,   1,   0,   0   }, /* PA4 */
-       /* PA3  */ {   0,   0,   0,   1,   0,   0   }, /* PA3 */
-       /* PA2  */ {   0,   0,   0,   1,   0,   0   }, /* PA2 */
-       /* PA1  */ {   0,   0,   0,   1,   0,   0   }, /* PA1 */
-       /* PA0  */ {   0,   0,   0,   1,   0,   0   }  /* PA0 */
-    },
-
-    /* Port B configuration */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PB31 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PB30 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB29 */ {   0,   1,   1,   1,   0,   0   }, /*  */
-       /* PB28 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB27 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB26 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB25 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PB24 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PB23 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PB22 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PB21 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB20 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB19 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB18 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PB17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_DV */
-       /* PB16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_ER */
-       /* PB15 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TX_ER */
-       /* PB14 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TX_EN */
-       /* PB13 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII COL */
-       /* PB12 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII CRS */
-       /* PB11 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD[3] */
-       /* PB10 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD[2] */
-       /* PB9  */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD[1] */
-       /* PB8  */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD[0] */
-       /* PB7  */ {   0,   0,   0,   0,   0,   0   }, /* PB7 */
-       /* PB6  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD[1] */
-       /* PB5  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD[2] */
-       /* PB4  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD[3] */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   1,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   1,   0,   0   }, /* PC30 */
-       /* PC29 */ {   0,   1,   1,   0,   0,   0   }, /*  */
-       /* PC28 */ {   0,   0,   0,   1,   0,   0   }, /* PC28 */
-       /* PC27 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD[0] */
-       /* PC26 */ {   0,   0,   0,   1,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   1,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   1,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PC22 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PC21 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PC20 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PC19 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PC18 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PC17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII CLK15 */
-       /* PC16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII CLK16 */
-       /* PC15 */ {   0,   0,   0,   1,   0,   0   }, /* PC15 */
-       /* PC14 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PC13 */ {   0,   0,   0,   1,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   0,   0,   1,   0,   0   }, /* PC12 */
-       /* PC11 */ {   0,   0,   0,   1,   0,   0   }, /* PC11 */
-       /* PC10 */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PC9  */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PC8  */ {   0,   0,   0,   1,   0,   0   }, /* PC8 */
-       /* PC7  */ {   0,   0,   0,   1,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   1,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   1,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   1,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   1,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   1,   0,   1   }, /*  */
-       /* PC1  */ {   0,   0,   0,   1,   0,   0   }, /*  */
-       /* PC0  */ {   0,   0,   0,   1,   0,   0   }, /*  */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PD30 */ {   0,   1,   1,   1,   0,   0   }, /*  */
-       /* PD29 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PD28 */ {   0,   0,   0,   1,   0,   0   }, /* PD28 */
-       /* PD27 */ {   0,   0,   0,   1,   0,   0   }, /* PD27 */
-       /* PD26 */ {   0,   0,   0,   1,   0,   0   }, /* PD26 */
-       /* PD25 */ {   0,   0,   0,   1,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   1,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   1,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   1,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   1,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   1,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   1,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   1,   0,   0   }, /* PD19 */
-       /* PD17 */ {   0,   1,   0,   0,   0,   0   }, /*  */
-       /* PD16 */ {   0,   1,   0,   1,   0,   0   }, /*  */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
-       /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
-       /* PD7  */ {   0,   0,   0,   1,   0,   1   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   1,   0,   1   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   1,   0,   1   }, /* PD5 */
-       /* PD4  */ {   0,   0,   0,   1,   0,   1   }, /* PD4 */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Setup CS4 to enable the Board Control/Status registers.
- * Otherwise the smcs won't work.
-*/
-int board_early_init_f (void)
-{
-       volatile t_ep_regs *regs = (t_ep_regs *) CONFIG_SYS_REGS_BASE;
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-
-       memctl->memc_br4 = CONFIG_SYS_BR4_PRELIM;
-       memctl->memc_or4 = CONFIG_SYS_OR4_PRELIM;
-       regs->bcsr1 = 0x62;     /* to enable terminal on SMC1 */
-       regs->bcsr2 = 0x30;     /* enable NVRAM and writing FLASH */
-       return 0;
-}
-
-void reset_phy (void)
-{
-       volatile t_ep_regs *regs = (t_ep_regs *) CONFIG_SYS_REGS_BASE;
-
-       regs->bcsr4 = 0xC0;
-}
-
-/*
- * Check Board Identity:
- * I don' know, how the next board revisions will be coded.
- * Thats why its a static interpretation ...
-*/
-
-int checkboard (void)
-{
-       volatile t_ep_regs *regs = (t_ep_regs *) CONFIG_SYS_REGS_BASE;
-       uint major = 0, minor = 0;
-
-       switch (regs->bcsr0) {
-       case 0x02:
-               major = 1;
-               break;
-       case 0x03:
-               major = 1;
-               minor = 1;
-               break;
-       case 0x06:
-               major = 1;
-               minor = 3;
-               break;
-       default:
-               break;
-       }
-       printf ("Board: Embedded Planet EP8260, Revision %d.%d\n",
-               major, minor);
-       return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       volatile uchar c = 0;
-       volatile uchar *ramaddr = (uchar *) (CONFIG_SYS_SDRAM_BASE) + 0x110;
-
-/*
-       ulong psdmr = CONFIG_SYS_PSDMR;
-#ifdef CONFIG_SYS_LSDRAM
-       ulong lsdmr = CONFIG_SYS_LSDMR;
-#endif
-*/
-       long size = CONFIG_SYS_SDRAM0_SIZE;
-       int i;
-
-
-/*
-* Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-*
-* "At system reset, initialization software must set up the
-*  programmable parameters in the memory controller banks registers
-*  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-*  system software should execute the following initialization sequence
-*  for each SDRAM device.
-*
-*  1. Issue a PRECHARGE-ALL-BANKS command
-*  2. Issue eight CBR REFRESH commands
-*  3. Issue a MODE-SET command to initialize the mode register
-*
-*  The initial commands are executed by setting P/LSDMR[OP] and
-*  accessing the SDRAM with a single-byte transaction."
-*
-* The appropriate BRx/ORx registers have already been set when we
-* get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-*/
-
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-       memctl->memc_psdmr = (ulong) CONFIG_SYS_PSDMR | PSDMR_OP_PREA;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = (ulong) CONFIG_SYS_PSDMR | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *ramaddr = c;
-
-       memctl->memc_psdmr = (ulong) CONFIG_SYS_PSDMR | PSDMR_OP_MRW;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = (ulong) CONFIG_SYS_PSDMR | PSDMR_OP_NORM | PSDMR_RFEN;
-       *ramaddr = c;
-
-#ifndef CONFIG_SYS_RAMBOOT
-#ifdef CONFIG_SYS_LSDRAM
-       size += CONFIG_SYS_SDRAM1_SIZE;
-       ramaddr = (uchar *) (CONFIG_SYS_SDRAM1_BASE) + 0x8c;
-       memctl->memc_lsrt = CONFIG_SYS_LSRT;
-
-       memctl->memc_lsdmr = (ulong) CONFIG_SYS_LSDMR | PSDMR_OP_PREA;
-       *ramaddr = c;
-
-       memctl->memc_lsdmr = (ulong) CONFIG_SYS_LSDMR | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *ramaddr = c;
-
-       memctl->memc_lsdmr = (ulong) CONFIG_SYS_LSDMR | PSDMR_OP_MRW;
-       *ramaddr = c;
-
-       memctl->memc_lsdmr = (ulong) CONFIG_SYS_LSDMR | PSDMR_OP_NORM | PSDMR_RFEN;
-       *ramaddr = c;
-#endif /* CONFIG_SYS_LSDRAM */
-#endif /* CONFIG_SYS_RAMBOOT */
-       return (size * 1024 * 1024);
-}
diff --git a/board/ep8260/ep8260.h b/board/ep8260/ep8260.h
deleted file mode 100644 (file)
index 3032b14..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __EP8260_H__
-#define __EP8260_H__
-
-typedef struct tt_ep_regs {
-       volatile unsigned char bcsr0;
-       volatile unsigned char bcsr1;
-       volatile unsigned char bcsr2;
-       volatile unsigned char bcsr3;
-       volatile unsigned char bcsr4;
-       volatile unsigned char bcsr5;
-       volatile unsigned char bcsr6;
-       volatile unsigned char bcsr7;
-       volatile unsigned char bcsr8;
-       volatile unsigned char bcsr9;
-       volatile unsigned char bcsr10;
-       volatile unsigned char bcsr11;
-       volatile unsigned char bcsr12;
-       volatile unsigned char bcsr13;
-       volatile unsigned char bcsr14;
-       volatile unsigned char bcsr15;
-} t_ep_regs;
-typedef t_ep_regs *tp_ep_regs;
-
-#endif
diff --git a/board/ep8260/flash.c b/board/ep8260/flash.c
deleted file mode 100644 (file)
index 44f63ee..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Frank Panno <fpanno@delphintech.com>, Delphin Technology AG
- *
- * Flash Routines for AMD device AM29DL323DB on the EP8260 board.
- *
- * This file is based on board/tqm8260/flash.c.
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#define V_ULONG(a)     (*(volatile unsigned long *)( a ))
-#define V_BYTE(a)      (*(volatile unsigned char *)( a ))
-
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-
-/*-----------------------------------------------------------------------
- */
-void flash_reset(void)
-{
-       if( flash_info[0].flash_id != FLASH_UNKNOWN ) {
-               V_ULONG( flash_info[0].start[0] ) = 0x00F000F0;
-               V_ULONG( flash_info[0].start[0] + 4 ) = 0x00F000F0;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size( ulong baseaddr, flash_info_t *info )
-{
-       short i;
-       unsigned long flashtest_h, flashtest_l;
-
-       /* Write auto select command sequence and test FLASH answer */
-       V_ULONG(baseaddr + ((ulong)0x0555 << 3)) = 0x00AA00AA;
-       V_ULONG(baseaddr + ((ulong)0x02AA << 3)) = 0x00550055;
-       V_ULONG(baseaddr + ((ulong)0x0555 << 3)) = 0x00900090;
-       V_ULONG(baseaddr + 4 + ((ulong)0x0555 << 3)) = 0x00AA00AA;
-       V_ULONG(baseaddr + 4 + ((ulong)0x02AA << 3)) = 0x00550055;
-       V_ULONG(baseaddr + 4 + ((ulong)0x0555 << 3)) = 0x00900090;
-
-       flashtest_h = V_ULONG(baseaddr);                /* manufacturer ID         */
-       flashtest_l = V_ULONG(baseaddr + 4);
-
-       if ((int)flashtest_h == AMD_MANUFACT) {
-               info->flash_id = FLASH_MAN_AMD;
-       } else {
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                             /* no or unknown flash     */
-       }
-
-       flashtest_h = V_ULONG(baseaddr + 8);            /* device ID               */
-       flashtest_l = V_ULONG(baseaddr + 12);
-       if (flashtest_h != flashtest_l) {
-               info->flash_id = FLASH_UNKNOWN;
-               return(0);
-       }
-
-       switch((int)flashtest_h) {
-       case AMD_ID_DL323B:
-               info->flash_id += FLASH_AMDL323B;
-               info->sector_count = 71;
-               info->size = 0x01000000;         /* 4 * 4 MB = 16 MB    */
-               break;
-       case AMD_ID_LV640U:     /* AMDLV640 and AMDLV641 have same ID */
-               info->flash_id += FLASH_AMLV640U;
-               info->sector_count = 128;
-               info->size = 0x02000000;        /* 4 * 8 MB = 32 MB     */
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return(0);                              /* no or unknown flash     */
-       }
-
-       if(flashtest_h == AMD_ID_LV640U) {
-               /* set up sector start adress table (uniform sector type) */
-               for (i = 0; i < info->sector_count; i++)
-                       info->start[i] = baseaddr + (i * 0x00040000);
-       } else {
-               /* set up sector start adress table (bottom sector type) */
-               for (i = 0; i < 8; i++) {
-                       info->start[i] = baseaddr + (i * 0x00008000);
-               }
-               for (i = 8; i < info->sector_count; i++) {
-                       info->start[i] = baseaddr + (i * 0x00040000) - 0x001C0000;
-               }
-       }
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               if ((V_ULONG( info->start[i] + 16 ) & 0x00010001) ||
-                   (V_ULONG( info->start[i] + 20 ) & 0x00010001)) {
-                       info->protect[i] = 1;           /* D0 = 1 if protected */
-               } else {
-                       info->protect[i] = 0;
-               }
-       }
-
-       flash_reset();
-       return(info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size_b0 = 0;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here (only one bank) */
-
-       size_b0 = flash_get_size(CONFIG_SYS_FLASH0_BASE, &flash_info[0]);
-       if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0>>20);
-       }
-
-       /*
-        * protect monitor and environment sectors
-        */
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH0_BASE
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
-                     &flash_info[0]);
-#endif
-
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch ((info->flash_id >> 16) & 0xff) {
-       case FLASH_MAN_AMD:         printf ("AMD ");                break;
-       default:                    printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AMDL323B:    printf ("29DL323B (32 M, bottom sector)\n");
-                               break;
-       case FLASH_AMLV640U:    printf ("29LV640U (64 M, uniform sector)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-                       );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect])
-                       prot++;
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00AA00AA;
-       V_ULONG( info->start[0] + (0x02AA << 3) ) = 0x00550055;
-       V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00800080;
-       V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00AA00AA;
-       V_ULONG( info->start[0] + (0x02AA << 3) ) = 0x00550055;
-       V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00AA00AA;
-       V_ULONG( info->start[0] + 4 + (0x02AA << 3) ) = 0x00550055;
-       V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00800080;
-       V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00AA00AA;
-       V_ULONG( info->start[0] + 4 + (0x02AA << 3) ) = 0x00550055;
-       udelay (1000);
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       V_ULONG( info->start[sect] ) = 0x00300030;
-                       V_ULONG( info->start[sect] + 4 ) = 0x00300030;
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last  = start;
-       while ((V_ULONG( info->start[l_sect] ) & 0x00800080) != 0x00800080 ||
-              (V_ULONG( info->start[l_sect] + 4 ) & 0x00800080) != 0x00800080)
-       {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       serial_putc ('.');
-                       last = now;
-               }
-       }
-
- DONE:
-       /* reset to read mode */
-       flash_reset ();
-
-       printf (" done\n");
-       return 0;
-}
-
-static int write_dword (flash_info_t *, ulong, unsigned char *);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong dp;
-       static unsigned char bb[8];
-       int i, l, rc, cc = cnt;
-
-       dp = (addr & ~7);       /* get lower dword aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - dp) != 0) {
-               for (i = 0; i < 8; i++)
-                       bb[i] = (i < l || (i-l) >= cc) ? V_BYTE(dp+i) : *src++;
-               if ((rc = write_dword(info, dp, bb)) != 0)
-               {
-                       return (rc);
-               }
-               dp += 8;
-               cc -= 8 - l;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cc >= 8) {
-               if ((rc = write_dword(info, dp, src)) != 0) {
-                       return (rc);
-               }
-               dp  += 8;
-               src += 8;
-               cc -= 8;
-       }
-
-       if (cc <= 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       for (i = 0; i < 8; i++) {
-               bb[i] = (i < cc) ? *src++ : V_BYTE(dp+i);
-       }
-       return (write_dword(info, dp, bb));
-}
-
-/*-----------------------------------------------------------------------
- * Write a dword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_dword (flash_info_t *info, ulong dest, unsigned char * pdata)
-{
-       ulong start;
-       ulong cl = 0, ch =0;
-       int flag, i;
-
-       for (ch=0, i=0; i < 4; i++)
-               ch = (ch << 8) + *pdata++;      /* high word    */
-       for (cl=0, i=0; i < 4; i++)
-               cl = (cl << 8) + *pdata++;      /* low word     */
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_long *)dest) & ch)   != ch
-           ||(*((vu_long *)(dest + 4)) & cl)   != cl)
-       {
-               return (2);
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00AA00AA;
-       V_ULONG( info->start[0] + (0x02AA << 3) ) = 0x00550055;
-       V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00A000A0;
-       V_ULONG( dest ) = ch;
-       V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00AA00AA;
-       V_ULONG( info->start[0] + 4 + (0x02AA << 3) ) = 0x00550055;
-       V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00A000A0;
-       V_ULONG( dest + 4 ) = cl;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       while (((V_ULONG( dest ) & 0x00800080) != (ch & 0x00800080)) ||
-              ((V_ULONG( dest + 4 ) & 0x00800080) != (cl & 0x00800080))) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-       return (0);
-}
diff --git a/board/ep8260/mii_phy.c b/board/ep8260/mii_phy.c
deleted file mode 100644 (file)
index c7aa275..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#include <common.h>
-#include <mii_phy.h>
-#include "ep8260.h"
-
-#define MII_MDIO       0x01
-#define MII_MDCK       0x02
-#define MII_MDIR       0x04
-
-void
-mii_discover_phy(void)
-{
-    int known;
-    unsigned short phy_reg;
-    unsigned long phy_id;
-
-    known = 0;
-    printf("Discovering phy @ 0: ");
-    phy_id = mii_phy_read(2) << 16;
-    phy_id |= mii_phy_read(3);
-    if ((phy_id & 0xFFFFFC00) == 0x00137800) {
-       printf("Level One ");
-       if ((phy_id & 0x000003F0) == 0xE0) {
-           printf("LXT971A Revision %d\n", (int)(phy_id & 0xF));
-           known = 1;
-       }
-       else printf("unknown type\n");
-    }
-    else printf("unknown OUI = 0x%08lX\n", phy_id);
-
-    phy_reg = mii_phy_read(1);
-    if (!(phy_reg & 0x0004)) printf("Link is down\n");
-    if (!(phy_reg & 0x0020)) printf("Auto-negotiation not complete\n");
-    if (phy_reg & 0x0002) printf("Jabber condition detected\n");
-    if (phy_reg & 0x0010) printf("Remote fault condition detected \n");
-
-    if (known) {
-       phy_reg = mii_phy_read(17);
-       if (phy_reg & 0x0400)
-           printf("Phy operating at %d MBit/s in %s-duplex mode\n",
-               phy_reg & 0x4000 ? 100 : 10,
-               phy_reg & 0x0200 ? "full" : "half");
-       else
-           printf("bad link!!\n");
-/*
-left  off: no link, green 100MBit, yellow 10MBit
-right off: no activity, green full-duplex, yellow half-duplex
-*/
-       mii_phy_write(20, 0x0452);
-    }
-}
-
-unsigned short
-mii_phy_read(unsigned short reg)
-{
-    int i;
-    unsigned short tmp, val = 0, adr = 0;
-    t_ep_regs *regs = (t_ep_regs*)CONFIG_SYS_REGS_BASE;
-
-    tmp = 0x6002 | (adr << 7) | (reg << 2);
-    regs->bcsr4 = 0xC3;
-    for (i = 0; i < 64; i++) {
-       regs->bcsr4 ^= MII_MDCK;
-    }
-    for (i = 0; i < 16; i++) {
-       regs->bcsr4 &= ~MII_MDCK;
-       if (tmp & 0x8000) regs->bcsr4 |= MII_MDIO;
-       else regs->bcsr4 &= ~MII_MDIO;
-       regs->bcsr4 |= MII_MDCK;
-       tmp <<= 1;
-    }
-    regs->bcsr4 |= MII_MDIR;
-    for (i = 0; i < 16; i++) {
-       val <<= 1;
-       regs->bcsr4 = MII_MDIO | (regs->bcsr4 | MII_MDCK);
-       if (regs->bcsr4 & MII_MDIO) val |= 1;
-       regs->bcsr4 = MII_MDIO | (regs->bcsr4 &= ~MII_MDCK);
-    }
-    return val;
-}
-
-void
-mii_phy_write(unsigned short reg, unsigned short val)
-{
-    int i;
-    unsigned short tmp, adr = 0;
-    t_ep_regs *regs = (t_ep_regs*)CONFIG_SYS_REGS_BASE;
-
-    tmp = 0x5002 | (adr << 7) | (reg << 2);
-    regs->bcsr4 = 0xC3;
-    for (i = 0; i < 64; i++) {
-       regs->bcsr4 ^= MII_MDCK;
-    }
-    for (i = 0; i < 16; i++) {
-       regs->bcsr4 &= ~MII_MDCK;
-       if (tmp & 0x8000) regs->bcsr4 |= MII_MDIO;
-       else regs->bcsr4 &= ~MII_MDIO;
-       regs->bcsr4 |= MII_MDCK;
-       tmp <<= 1;
-    }
-    for (i = 0; i < 16; i++) {
-       regs->bcsr4 &= ~MII_MDCK;
-       if (val & 0x8000) regs->bcsr4 |= MII_MDIO;
-       else regs->bcsr4 &= ~MII_MDIO;
-       regs->bcsr4 |= MII_MDCK;
-       val <<= 1;
-    }
-}
diff --git a/board/ep82xxm/Kconfig b/board/ep82xxm/Kconfig
deleted file mode 100644 (file)
index d842091..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_EP82XXM
-
-config SYS_BOARD
-       default "ep82xxm"
-
-config SYS_CONFIG_NAME
-       default "ep82xxm"
-
-endif
diff --git a/board/ep82xxm/MAINTAINERS b/board/ep82xxm/MAINTAINERS
deleted file mode 100644 (file)
index c053df9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-EP82XXM BOARD
-#M:    -
-S:     Maintained
-F:     board/ep82xxm/
-F:     include/configs/ep82xxm.h
-F:     configs/ep82xxm_defconfig
diff --git a/board/ep82xxm/Makefile b/board/ep82xxm/Makefile
deleted file mode 100644 (file)
index f9d3891..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := ep82xxm.o
diff --git a/board/ep82xxm/ep82xxm.c b/board/ep82xxm/ep82xxm.c
deleted file mode 100644 (file)
index fdde535..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (C) 2006 Embedded Planet, LLC.
- *
- * Support for Embedded Planet EP82xxM boards.
- * Tested on EP82xxM (MPC8270).
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8260.h>
-#include <ioports.h>
-#include <asm/m8260_pci.h>
-#ifdef CONFIG_PCI
-#include <pci.h>
-#endif
-#include <miiphy.h>
-#include <linux/compiler.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-#define CONFIG_SYS_FCC2 1
-#define CONFIG_SYS_FCC3 1
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A */
-    {  /*           conf      ppar psor pdir podr pdat */
-       /* PA31 */ { 0,          0,   0,   0,   0,   1 }, /* PA31            */
-       /* PA30 */ { 0,          0,   0,   0,   0,   1 }, /* PA30            */
-       /* PA29 */ { 0,          0,   0,   0,   0,   1 }, /* PA29            */
-       /* PA28 */ { 0,          0,   0,   0,   0,   1 }, /* PA28            */
-       /* PA27 */ { 0,          0,   0,   0,   0,   1 }, /* PA27            */
-       /* PA26 */ { 0,          0,   0,   0,   0,   1 }, /* PA26            */
-       /* PA25 */ { 0,          0,   0,   0,   0,   1 }, /* PA25            */
-       /* PA24 */ { 0,          0,   0,   0,   0,   1 }, /* PA24            */
-       /* PA23 */ { 0,          0,   0,   0,   0,   1 }, /* PA23            */
-       /* PA22 */ { 0,          0,   0,   0,   0,   0 }, /* PA22            */
-       /* PA21 */ { 0,          0,   0,   0,   0,   1 }, /* PA21            */
-       /* PA20 */ { 0,          0,   0,   0,   0,   1 }, /* PA20            */
-       /* PA19 */ { 0,          0,   0,   0,   0,   1 }, /* PA19            */
-       /* PA18 */ { 0,          0,   0,   0,   0,   1 }, /* PA18            */
-       /* PA17 */ { 0,          0,   0,   0,   0,   1 }, /* PA17            */
-       /* PA16 */ { 0,          0,   0,   0,   0,   1 }, /* PA16            */
-       /* PA15 */ { 0,          0,   0,   0,   0,   1 }, /* PA15            */
-       /* PA14 */ { 0,          0,   0,   0,   0,   1 }, /* PA14            */
-       /* PA13 */ { 0,          0,   0,   0,   0,   1 }, /* PA13            */
-       /* PA12 */ { 0,          0,   0,   0,   0,   1 }, /* PA12            */
-       /* PA11 */ { 0,          0,   0,   0,   0,   1 }, /* PA11            */
-       /* PA10 */ { 0,          0,   0,   0,   0,   1 }, /* PA10            */
-       /* PA9  */ { 1,          1,   0,   1,   0,   1 }, /* SMC2 TxD        */
-       /* PA8  */ { 1,          1,   0,   0,   0,   1 }, /* SMC2 RxD        */
-       /* PA7  */ { 0,          0,   0,   0,   0,   1 }, /* PA7             */
-       /* PA6  */ { 0,          0,   0,   0,   0,   1 }, /* PA6             */
-       /* PA5  */ { 0,          0,   0,   0,   0,   1 }, /* PA5             */
-       /* PA4  */ { 0,          0,   0,   0,   0,   1 }, /* PA4             */
-       /* PA3  */ { 0,          0,   0,   0,   0,   1 }, /* PA3             */
-       /* PA2  */ { 0,          0,   0,   0,   0,   1 }, /* PA2             */
-       /* PA1  */ { 0,          0,   0,   0,   0,   1 }, /* PA1             */
-       /* PA0  */ { 0,          0,   0,   0,   0,   1 }  /* PA0             */
-    },
-
-    /* Port B */
-    {  /*           conf       ppar psor pdir podr pdat */
-       /* PB31 */ { CONFIG_SYS_FCC2,    1,   0,   1,   0,   0 }, /* FCC2 MII TX_ER  */
-       /* PB30 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII RX_DV  */
-       /* PB29 */ { CONFIG_SYS_FCC2,    1,   1,   1,   0,   0 }, /* FCC2 MII TX_EN  */
-       /* PB28 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII RX_ER  */
-       /* PB27 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII COL    */
-       /* PB26 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII CRS    */
-       /* PB25 */ { CONFIG_SYS_FCC2,    1,   0,   1,   0,   0 }, /* FCC2 MII TxD[3] */
-       /* PB24 */ { CONFIG_SYS_FCC2,    1,   0,   1,   0,   0 }, /* FCC2 MII TxD[2] */
-       /* PB23 */ { CONFIG_SYS_FCC2,    1,   0,   1,   0,   0 }, /* FCC2 MII TxD[1] */
-       /* PB22 */ { CONFIG_SYS_FCC2,    1,   0,   1,   0,   0 }, /* FCC2 MII TxD[0] */
-       /* PB21 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII RxD[0] */
-       /* PB20 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII RxD[1] */
-       /* PB19 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII RxD[2] */
-       /* PB18 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* FCC2 MII RxD[3] */
-       /* PB17 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:RX_DIV     */
-       /* PB16 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:RX_ERR     */
-       /* PB15 */ { CONFIG_SYS_FCC3,    1,   0,   1,   0,   0 }, /* FCC3:TX_ERR     */
-       /* PB14 */ { CONFIG_SYS_FCC3,    1,   0,   1,   0,   0 }, /* FCC3:TX_EN      */
-       /* PB13 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:COL        */
-       /* PB12 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:CRS        */
-       /* PB11 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:RXD        */
-       /* PB10 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:RXD        */
-       /* PB9  */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:RXD        */
-       /* PB8  */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* FCC3:RXD        */
-       /* PB7  */ { 0,          0,   0,   0,   0,   0 }, /* PB7             */
-       /* PB6  */ { CONFIG_SYS_FCC3,    1,   0,   1,   0,   0 }, /* FCC3:TXD        */
-       /* PB5  */ { CONFIG_SYS_FCC3,    1,   0,   1,   0,   0 }, /* FCC3:TXD        */
-       /* PB4  */ { CONFIG_SYS_FCC3,    1,   0,   1,   0,   0 }, /* FCC3:TXD        */
-       /* PB3  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB2  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB1  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB0  */ { 0,          0,   0,   0,   0,   0 }  /* non-existent    */
-    },
-
-    /* Port C */
-    {  /*           conf       ppar psor pdir podr pdat */
-       /* PC31 */ { 0,          0,   0,   0,   0,   0 }, /* PC31            */
-       /* PC30 */ { 0,          0,   0,   0,   0,   0 }, /* PC30            */
-       /* PC29 */ { 1,          1,   1,   0,   0,   0 }, /* SCC1 CTS#       */
-       /* PC28 */ { 0,          0,   0,   0,   0,   0 }, /* PC28            */
-       /* PC27 */ { CONFIG_SYS_FCC3,    1,   0,   1,   0,   0 }, /* FCC3: TXD[0]    */
-       /* PC26 */ { 0,          0,   0,   0,   0,   0 }, /* PC26            */
-       /* PC25 */ { 0,          0,   0,   0,   0,   0 }, /* PC25            */
-       /* PC24 */ { 0,          0,   0,   0,   0,   0 }, /* PC24            */
-       /* PC23 */ { 0,          0,   0,   0,   0,   0 }, /* PC23            */
-       /* PC22 */ { 0,          0,   0,   0,   0,   0 }, /* PC22            */
-       /* PC21 */ { 0,          0,   0,   0,   0,   0 }, /* PC21            */
-       /* PC20 */ { 0,          0,   0,   0,   0,   0 }, /* PC20            */
-       /* PC19 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* RxClk (CLK13)   */
-       /* PC18 */ { CONFIG_SYS_FCC2,    1,   0,   0,   0,   0 }, /* TxClk (CLK14)   */
-       /* PC17 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* RxClk (CLK15)   */
-       /* PC16 */ { CONFIG_SYS_FCC3,    1,   0,   0,   0,   0 }, /* TxClk (CLK16)   */
-       /* PC15 */ { 0,          0,   0,   0,   0,   0 }, /* PC15            */
-       /* PC14 */ { 1,          1,   0,   0,   0,   0 }, /* SCC1 CD#        */
-       /* PC13 */ { 1,          1,   0,   0,   0,   0 }, /* SCC2 CTS#       */
-       /* PC12 */ { 1,          1,   0,   0,   0,   0 }, /* SCC2 CD#        */
-       /* PC11 */ { 0,          0,   0,   0,   0,   0 }, /* PC11            */
-       /* PC10 */ { 1,          1,   0,   0,   0,   0 }, /* SCC3 CD#        */
-       /* PC9  */ { 0,          0,   0,   0,   0,   0 }, /* PC9             */
-       /* PC8  */ { 1,          1,   1,   0,   0,   0 }, /* SCC3 CTS#       */
-       /* PC7  */ { 0,          0,   0,   0,   0,   0 }, /* PC7             */
-       /* PC6  */ { 0,          0,   0,   0,   0,   0 }, /* PC6             */
-       /* PC5  */ { 0,          0,   0,   0,   0,   0 }, /* PC5             */
-       /* PC4  */ { 0,          0,   0,   0,   0,   0 }, /* PC4             */
-       /* PC3  */ { 0,          0,   0,   0,   0,   0 }, /* PC3             */
-       /* PC2  */ { 0,          0,   0,   0,   0,   0 }, /* PC2             */
-       /* PC1  */ { 0,          0,   0,   0,   0,   0 }, /* PC1             */
-       /* PC0  */ { 0,          0,   0,   0,   0,   0 }, /* PC0             */
-    },
-
-    /* Port D */
-    {  /*           conf      ppar psor pdir podr pdat */
-       /* PD31 */ { 1,          1,   0,   0,   0,   0 }, /* SCC1 RXD        */
-       /* PD30 */ { 1,          1,   1,   1,   0,   1 }, /* SCC1 TXD        */
-       /* PD29 */ { 1,          1,   0,   1,   0,   0 }, /* SCC1 RTS#       */
-       /* PD28 */ { 1,          1,   0,   0,   0,   0 }, /* SCC2 RXD        */
-       /* PD27 */ { 1,          1,   0,   1,   0,   0 }, /* SCC2 TXD        */
-       /* PD26 */ { 1,          1,   0,   1,   0,   0 }, /* SCC2 RTS#       */
-       /* PD25 */ { 1,          1,   0,   0,   0,   0 }, /* SCC3 RXD        */
-       /* PD24 */ { 1,          1,   0,   1,   0,   0 }, /* SCC3 TXD        */
-       /* PD23 */ { 1,          1,   0,   1,   0,   0 }, /* SCC3 RTS#       */
-       /* PD22 */ { 0,          0,   0,   0,   0,   1 }, /* PD22            */
-       /* PD21 */ { 0,          0,   0,   0,   0,   1 }, /* PD21            */
-       /* PD20 */ { 0,          0,   0,   0,   0,   1 }, /* PD20            */
-       /* PD19 */ { 0,          0,   0,   0,   0,   1 }, /* PD19            */
-       /* PD18 */ { 0,          0,   0,   0,   0,   1 }, /* PD18            */
-       /* PD17 */ { 0,          0,   0,   0,   0,   1 }, /* PD17            */
-       /* PD16 */ { 0,          0,   0,   0,   0,   1 }, /* PD16            */
-       /* PD15 */ { 1,          1,   1,   0,   1,   1 }, /* I2C SDA         */
-       /* PD14 */ { 1,          1,   1,   0,   1,   1 }, /* I2C SCL         */
-       /* PD13 */ { 0,          0,   0,   0,   0,   1 }, /* PD13            */
-       /* PD12 */ { 0,          0,   0,   0,   0,   1 }, /* PD12            */
-       /* PD11 */ { 0,          0,   0,   0,   0,   1 }, /* PD11            */
-       /* PD10 */ { 0,          0,   0,   0,   0,   1 }, /* PD10            */
-       /* PD9  */ { 1,          1,   0,   1,   0,   1 }, /* SMC1 TxD        */
-       /* PD8  */ { 1,          1,   0,   0,   0,   1 }, /* SMC1 RxD        */
-       /* PD7  */ { 1,          1,   0,   0,   0,   1 }, /* SMC1 SMSYN      */
-       /* PD6  */ { 0,          0,   0,   0,   0,   1 }, /* PD6             */
-       /* PD5  */ { 0,          0,   0,   0,   0,   1 }, /* PD5             */
-       /* PD4  */ { 0,          0,   0,   0,   0,   1 }, /* PD4             */
-       /* PD3  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PD2  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PD1  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PD0  */ { 0,          0,   0,   0,   0,   0 }  /* non-existent    */
-    }
-};
-
-#ifdef CONFIG_PCI
-typedef struct pci_ic_s {
-       unsigned long pci_int_stat;
-       unsigned long pci_int_mask;
-}pci_ic_t;
-#endif
-
-int board_early_init_f (void)
-{
-       vu_char *bcsr = (vu_char *)CONFIG_SYS_BCSR;
-
-       bcsr[4] |= 0x30; /* Turn the LEDs off */
-
-#if defined(CONFIG_CONS_ON_SMC) || defined(CONFIG_KGDB_ON_SMC)
-       bcsr[6] |= 0x10;
-#endif
-#if defined(CONFIG_CONS_ON_SCC) || defined(CONFIG_KGDB_ON_SCC)
-       bcsr[7] |= 0x10;
-#endif
-
-#if CONFIG_SYS_FCC3
-       bcsr[8] |= 0xC0;
-#endif /* CONFIG_SYS_FCC3 */
-#if CONFIG_SYS_FCC2
-       bcsr[8] |= 0x30;
-#endif /* CONFIG_SYS_FCC2 */
-
-       return 0;
-}
-
-phys_size_t initdram(int board_type)
-{
-       /* Size in MB of SDRAM populated on board*/
-       long int msize = 256;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       volatile immap_t *immap = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       uint psdmr = CONFIG_SYS_PSDMR;
-       int i;
-
-       unsigned char   *ramptr1 = (unsigned char *)0x00000110;
-       __maybe_unused unsigned char    ramtmp;
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-udelay(400);
-
-       /* Initialise 60x bus SDRAM */
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_or1  = CONFIG_SYS_SDRAM_OR;
-       memctl->memc_br1  = CONFIG_SYS_SDRAM_BR;
-       memctl->memc_psdmr = psdmr;
-
-udelay(400);
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_PREA; /* Precharge all banks */
-       ramtmp = *ramptr1;
-       memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR; /* CBR refresh */
-       for (i = 0; i < 8; i++) {
-               memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR; /* CBR refresh */
-       }
-       ramtmp = *ramptr1;
-       memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;  /* Mode Register write */
-       *ramptr1  = 0xFF;
-       memctl->memc_psdmr = psdmr | PSDMR_RFEN;    /* Refresh enable */
-#endif /* !CONFIG_SYS_RAMBOOT */
-
-       /* Return total 60x bus SDRAM size */
-       return msize * 1024 * 1024;
-}
-
-int checkboard(void)
-{
-       vu_char *bcsr = (vu_char *)CONFIG_SYS_BCSR;
-
-       puts("Board: ");
-       switch (bcsr[0]) {
-       case 0x0A:
-               printf("EP82xxM 1.0 CPLD revision %d\n", bcsr[1]);
-               break;
-       default:
-               printf("unknown: ID=%02X\n", bcsr[0]);
-       }
-
-       return 0;
-}
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/esd/apc405/Kconfig b/board/esd/apc405/Kconfig
deleted file mode 100644 (file)
index 6b03460..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_APC405
-
-config SYS_BOARD
-       default "apc405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "APC405"
-
-endif
diff --git a/board/esd/apc405/MAINTAINERS b/board/esd/apc405/MAINTAINERS
deleted file mode 100644 (file)
index 7f2a33f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-APC405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/apc405/
-F:     include/configs/APC405.h
-F:     configs/APC405_defconfig
diff --git a/board/esd/apc405/Makefile b/board/esd/apc405/Makefile
deleted file mode 100644 (file)
index ada8bfd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = apc405.o \
-       ../common/misc.o \
-       ../common/auto_update.o
diff --git a/board/esd/apc405/apc405.c b/board/esd/apc405/apc405.c
deleted file mode 100644 (file)
index 5cc1d0d..0000000
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * (C) Copyright 2005-2008
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- *
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-#include <malloc.h>
-#include <flash.h>
-#include <mtd/cfi_flash.h>
-#include <asm/4xx_pci.h>
-#include <pci.h>
-#include <usb.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#undef FPGA_DEBUG
-
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-#ifdef CONFIG_LCD_USED
-/* logo bitmap data - gzip compressed and generated by bin2c */
-unsigned char logo_bmp[] =
-{
-#include "logo_640_480_24bpp.c"
-};
-
-/*
- * include common lcd code (for esd boards)
- */
-#include "../common/lcd.c"
-#include "../common/s1d13505_640_480_16bpp.h"
-#include "../common/s1d13806_640_480_16bpp.h"
-#endif /* CONFIG_LCD_USED */
-
-/*
- * include common auto-update code (for esd boards)
- */
-#include "../common/auto_update.h"
-
-au_image_t au_image[] = {
-       {"preinst.img", 0, -1, AU_SCRIPT},
-       {"u-boot.img", 0xfff80000, 0x00080000, AU_FIRMWARE | AU_PROTECT},
-       {"pImage", 0xfe000000, 0x00100000, AU_NOR | AU_PROTECT},
-       {"pImage.initrd", 0xfe100000, 0x00400000, AU_NOR | AU_PROTECT},
-       {"work.img", 0xfe500000, 0x01400000, AU_NOR},
-       {"data.img", 0xff900000, 0x00580000, AU_NOR},
-       {"logo.img", 0xffe80000, 0x00100000, AU_NOR | AU_PROTECT},
-       {"postinst.img", 0, 0, AU_SCRIPT},
-};
-
-int N_AU_IMAGES = (sizeof(au_image) / sizeof(au_image[0]));
-
-int board_revision(void)
-{
-       unsigned long CPC0_CR0Reg;
-       unsigned long value;
-
-       /*
-        * Get version of APC405 board from GPIO's
-        */
-
-       /* Setup GPIO pins (CS2/GPIO11, CS3/GPIO12 and CS4/GPIO13 as GPIO) */
-       CPC0_CR0Reg = mfdcr(CPC0_CR0);
-       mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x03800000);
-       out_be32((void*)GPIO0_ODR, in_be32((void*)GPIO0_ODR) & ~0x001c0000);
-       out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) & ~0x001c0000);
-
-       /* wait some time before reading input */
-       udelay(1000);
-
-       /* get config bits */
-       value = in_be32((void*)GPIO0_IR) & 0x001c0000;
-       /*
-        * Restore GPIO settings
-        */
-       mtdcr(CPC0_CR0, CPC0_CR0Reg);
-
-       switch (value) {
-       case 0x001c0000:
-               /* CS2==1 && CS3==1 && CS4==1 -> version <= 1.2 */
-               return 2;
-       case 0x000c0000:
-               /* CS2==0 && CS3==1 && CS4==1 -> version 1.3 */
-               return 3;
-       case 0x00180000:
-               /* CS2==1 && CS3==1 && CS4==0 -> version 1.6 */
-               return 6;
-       case 0x00140000:
-               /* CS2==1 && CS3==0 && CS4==1 -> version 1.8 */
-               return 8;
-       default:
-               /* should not be reached! */
-               return 0;
-       }
-}
-
-int board_early_init_f (void)
-{
-       /*
-        * First pull fpga-prg pin low, to disable fpga logic
-        */
-       out_be32((void*)GPIO0_ODR, 0x00000000);        /* no open drain pins */
-       out_be32((void*)GPIO0_TCR, CONFIG_SYS_FPGA_PRG);      /* setup for output   */
-       out_be32((void*)GPIO0_OR, 0);                  /* pull prg low       */
-
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF81);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0 */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks
-        */
-       mtebc(EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       /*
-        * New boards have a single 32MB flash connected to CS0
-        * instead of two 16MB flashes on CS0+1.
-        */
-       if (board_revision() >= 8) {
-               /* disable CS1 */
-               mtebc(PB1AP, 0);
-               mtebc(PB1CR, 0);
-
-               /* resize CS0 to 32MB */
-               mtebc(PB0AP, CONFIG_SYS_EBC_PB0AP_HWREV8);
-               mtebc(PB0CR, CONFIG_SYS_EBC_PB0CR_HWREV8);
-       }
-
-       return 0;
-}
-
-int board_early_init_r(void)
-{
-       if (gd->board_type >= 8)
-               cfi_flash_num_flash_banks = 1;
-
-       return 0;
-}
-
-#define FUJI_BASE    0xf0100200
-#define LCDBL_PWM    0xa0
-#define LCDBL_PWMMIN 0xa4
-#define LCDBL_PWMMAX 0xa8
-
-int misc_init_r(void)
-{
-       u16 *fpga_mode = (u16 *)(CONFIG_SYS_FPGA_BASE_ADDR + CONFIG_SYS_FPGA_CTRL);
-       u16 *fpga_ctrl2 =(u16 *)(CONFIG_SYS_FPGA_BASE_ADDR + CONFIG_SYS_FPGA_CTRL2);
-       u8 *duart0_mcr = (u8 *)(DUART0_BA + 4);
-       u8 *duart1_mcr = (u8 *)(DUART1_BA + 4);
-       unsigned char *dst;
-       ulong len = sizeof(fpgadata);
-       int status;
-       int index;
-       int i;
-       unsigned long CPC0_CR0Reg;
-       char *str;
-       uchar *logo_addr;
-       ulong logo_size;
-       ushort minb, maxb;
-       int result;
-
-       /*
-        * Setup GPIO pins (CS6+CS7 as GPIO)
-        */
-       CPC0_CR0Reg = mfdcr(CPC0_CR0);
-       mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x00300000);
-
-       dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
-       if (gunzip(dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
-               printf("GUNZIP ERROR - must RESET board to recover\n");
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       status = fpga_boot(dst, len);
-       if (status != 0) {
-               printf("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf("(Timeout: "
-                              "INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf("(Timeout: "
-                              "INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf("(Timeout: "
-                              "DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i = 0; i < 4; i++) {
-                       len = dst[index];
-                       printf("FPGA: %s\n", &(dst[index+1]));
-                       index += len + 3;
-               }
-               putc('\n');
-               /* delayed reboot */
-               for (i = 20; i > 0; i--) {
-                       printf("Rebooting in %2d seconds \r",i);
-                       for (index = 0; index < 1000; index++)
-                               udelay(1000);
-               }
-               putc('\n');
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       /* restore gpio/cs settings */
-       mtdcr(CPC0_CR0, CPC0_CR0Reg);
-
-       puts("FPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i = 0; i < 4; i++) {
-               len = dst[index];
-               printf("%s ", &(dst[index + 1]));
-               index += len + 3;
-       }
-       putc('\n');
-
-       free(dst);
-
-       /*
-        * Reset FPGA via FPGA_DATA pin
-        */
-       SET_FPGA(FPGA_PRG | FPGA_CLK);
-       udelay(1000); /* wait 1ms */
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Write board revision in FPGA
-        */
-       out_be16(fpga_ctrl2,
-                (in_be16(fpga_ctrl2) & 0xfff0) | (gd->board_type & 0x000f));
-
-       /*
-        * Enable power on PS/2 interface (with reset)
-        */
-       out_be16(fpga_mode, in_be16(fpga_mode) | CONFIG_SYS_FPGA_CTRL_PS2_RESET);
-       for (i=0;i<100;i++)
-               udelay(1000);
-       udelay(1000);
-       out_be16(fpga_mode, in_be16(fpga_mode) & ~CONFIG_SYS_FPGA_CTRL_PS2_RESET);
-
-       /*
-        * Enable interrupts in exar duart mcr[3]
-        */
-       out_8(duart0_mcr, 0x08);
-       out_8(duart1_mcr, 0x08);
-
-       /*
-        * Init lcd interface and display logo
-        */
-       str = getenv("splashimage");
-       if (str) {
-               logo_addr = (uchar *)simple_strtoul(str, NULL, 16);
-               logo_size = CONFIG_SYS_VIDEO_LOGO_MAX_SIZE;
-       } else {
-               logo_addr = logo_bmp;
-               logo_size = sizeof(logo_bmp);
-       }
-
-       if (gd->board_type >= 6) {
-               result = lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG,
-                                 (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                                 regs_13505_640_480_16bpp,
-                                 sizeof(regs_13505_640_480_16bpp) /
-                                 sizeof(regs_13505_640_480_16bpp[0]),
-                                 logo_addr, logo_size);
-               if (result && str) {
-                       /* retry with internal image */
-                       logo_addr = logo_bmp;
-                       logo_size = sizeof(logo_bmp);
-                       lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG,
-                                (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                                regs_13505_640_480_16bpp,
-                                sizeof(regs_13505_640_480_16bpp) /
-                                sizeof(regs_13505_640_480_16bpp[0]),
-                                logo_addr, logo_size);
-               }
-       } else {
-               result = lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG,
-                                 (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                                 regs_13806_640_480_16bpp,
-                                 sizeof(regs_13806_640_480_16bpp) /
-                                 sizeof(regs_13806_640_480_16bpp[0]),
-                                 logo_addr, logo_size);
-               if (result && str) {
-                       /* retry with internal image */
-                       logo_addr = logo_bmp;
-                       logo_size = sizeof(logo_bmp);
-                       lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG,
-                                (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                                regs_13806_640_480_16bpp,
-                                sizeof(regs_13806_640_480_16bpp) /
-                                sizeof(regs_13806_640_480_16bpp[0]),
-                                logo_addr, logo_size);
-               }
-       }
-
-       /*
-        * Reset microcontroller and setup backlight PWM controller
-        */
-       out_be16(fpga_mode, in_be16(fpga_mode) | 0x0014);
-       for (i=0;i<10;i++)
-               udelay(1000);
-       out_be16(fpga_mode, in_be16(fpga_mode) | 0x001c);
-
-       minb = 0;
-       maxb = 0xff;
-       str = getenv("lcdbl");
-       if (str) {
-               minb = (ushort)simple_strtoul(str, &str, 16) & 0x00ff;
-               if (str && (*str=',')) {
-                       str++;
-                       maxb = (ushort)simple_strtoul(str, NULL, 16) & 0x00ff;
-               } else
-                       minb = 0;
-
-               out_be16((u16 *)(FUJI_BASE + LCDBL_PWMMIN), minb);
-               out_be16((u16 *)(FUJI_BASE + LCDBL_PWMMAX), maxb);
-
-               printf("LCDBL: min=0x%02x, max=0x%02x\n", minb, maxb);
-       }
-       out_be16((u16 *)(FUJI_BASE + LCDBL_PWM), 0xff);
-
-       /*
-        * fix environment for field updated units
-        */
-       if (getenv("altbootcmd") == NULL) {
-               setenv("usb_load", CONFIG_SYS_USB_LOAD_COMMAND);
-               setenv("usbargs", CONFIG_SYS_USB_ARGS);
-               setenv("bootcmd", CONFIG_BOOTCOMMAND);
-               setenv("usb_self", CONFIG_SYS_USB_SELF_COMMAND);
-               setenv("bootlimit", CONFIG_SYS_BOOTLIMIT);
-               setenv("altbootcmd", CONFIG_SYS_ALT_BOOTCOMMAND);
-               saveenv();
-       }
-
-       return (0);
-}
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming APC405");
-       } else {
-               puts(str);
-       }
-
-       gd->board_type = board_revision();
-       printf(", Rev. 1.%ld\n", gd->board_type);
-
-       return 0;
-}
-
-#ifdef CONFIG_IDE_RESET
-void ide_set_reset(int on)
-{
-       u16 *fpga_mode = (u16 *)(CONFIG_SYS_FPGA_BASE_ADDR + CONFIG_SYS_FPGA_CTRL);
-
-       /*
-        * Assert or deassert CompactFlash Reset Pin
-        */
-       if (on) {
-               out_be16(fpga_mode,
-                        in_be16(fpga_mode) & ~CONFIG_SYS_FPGA_CTRL_CF_RESET);
-       } else {
-               out_be16(fpga_mode,
-                        in_be16(fpga_mode) | CONFIG_SYS_FPGA_CTRL_CF_RESET);
-       }
-}
-#endif /* CONFIG_IDE_RESET */
-
-void reset_phy(void)
-{
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-}
-
-#if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_BOARD_INIT)
-int board_usb_init(int index, enum usb_init_type init)
-{
-       return 0;
-}
-
-int usb_board_stop(void)
-{
-       unsigned short tmp;
-       int i;
-
-       /*
-        * reset PCI bus
-        * This is required to make some very old Linux OHCI driver
-        * work after U-Boot has used the OHCI controller.
-        */
-       pci_read_config_word(PCIDEVID_405GP, PCIBRDGOPT2, &tmp);
-       pci_write_config_word(PCIDEVID_405GP, PCIBRDGOPT2, (tmp | 0x1000));
-
-       for (i = 0; i < 100; i++)
-               udelay(1000);
-
-       pci_write_config_word(PCIDEVID_405GP, PCIBRDGOPT2, tmp);
-       return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
-       return usb_board_stop();
-}
-#endif /* defined(CONFIG_USB_OHCI) && defined(CONFIG_SYS_USB_OHCI_BOARD_INIT) */
diff --git a/board/esd/apc405/fpgadata.c b/board/esd/apc405/fpgadata.c
deleted file mode 100644 (file)
index b68668c..0000000
+++ /dev/null
@@ -1,4008 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x49, 0xe1, 0xdb, 0x46,
-0x00, 0x03, 0x61, 0x62, 0x67, 0x34, 0x30, 0x35,
-0x5f, 0x31, 0x5f, 0x30, 0x33, 0x2e, 0x62, 0x69,
-0x74, 0x00, 0xed, 0xfd, 0x7d, 0x7c, 0x14, 0xd7,
-0x75, 0x3f, 0x8e, 0x9f, 0xb9, 0x33, 0x12, 0xa3,
-0xdd, 0x95, 0x76, 0xf4, 0xe4, 0xac, 0x6d, 0x20,
-0xa3, 0x95, 0x20, 0x6b, 0xb2, 0x88, 0x45, 0x60,
-0x8c, 0xb1, 0x90, 0x06, 0x49, 0x26, 0x8a, 0x4d,
-0x8c, 0x4c, 0xdd, 0x84, 0xf6, 0x9b, 0xa6, 0x6b,
-0x42, 0x53, 0xda, 0x17, 0x49, 0x65, 0x27, 0x9f,
-0x96, 0xe6, 0x93, 0x26, 0x57, 0x2b, 0x81, 0x85,
-0x21, 0xf6, 0x1a, 0x93, 0x46, 0x4e, 0x69, 0xba,
-0x60, 0xea, 0xc8, 0x09, 0x4d, 0x96, 0x07, 0x9b,
-0x07, 0x53, 0x3c, 0xc2, 0x32, 0x11, 0x18, 0xdb,
-0x0a, 0x71, 0x53, 0xf9, 0x21, 0xf6, 0x9a, 0xc8,
-0x44, 0xb6, 0x89, 0x23, 0xdb, 0xc4, 0x11, 0xcf,
-0xdf, 0x73, 0xee, 0xec, 0x3c, 0xec, 0x4a, 0x24,
-0xe9, 0xe7, 0xf3, 0xf3, 0xef, 0xf7, 0xc7, 0x2f,
-0x9b, 0x3f, 0x72, 0x3c, 0x7b, 0x35, 0xcc, 0x3d,
-0x7b, 0xe7, 0xdc, 0xf7, 0x3d, 0xe7, 0x7d, 0xce,
-0x81, 0xa2, 0xe0, 0xa8, 0xf5, 0x3f, 0x00, 0xe9,
-0x4e, 0xd0, 0xee, 0x5c, 0xf1, 0xd7, 0x73, 0x63,
-0xd7, 0xff, 0xe5, 0xec, 0xbf, 0x8c, 0xcd, 0xa9,
-0xfd, 0xd2, 0xe7, 0x57, 0xc2, 0x0a, 0xf0, 0xd5,
-0x7d, 0xf9, 0xfa, 0xd8, 0x17, 0xfe, 0xba, 0xee,
-0xfa, 0x79, 0xf0, 0x79, 0xf0, 0xd7, 0xc5, 0x62,
-0x37, 0xcc, 0xd2, 0x6f, 0x9c, 0xa5, 0xcf, 0x81,
-0x95, 0x50, 0x34, 0xbb, 0x6e, 0x41, 0x5d, 0xdd,
-0x82, 0x39, 0xd7, 0xc3, 0x5f, 0x81, 0x54, 0x1a,
-0xb8, 0x8c, 0x9f, 0xef, 0x3f, 0xf4, 0xa7, 0x5f,
-0x88, 0x01, 0x97, 0x00, 0x60, 0x52, 0x4c, 0x8a,
-0xd3, 0xff, 0xfb, 0x63, 0x92, 0x2e, 0x01, 0x6f,
-0x9c, 0x19, 0x03, 0x93, 0xfe, 0x1b, 0xb2, 0xdf,
-0x17, 0xc5, 0x40, 0xf7, 0xfe, 0xb7, 0x14, 0x03,
-0x03, 0xda, 0xa0, 0x41, 0x81, 0x32, 0xf8, 0xfd,
-0x1f, 0x09, 0x14, 0x6e, 0xcb, 0xff, 0xd3, 0xf1,
-0xec, 0x0f, 0x18, 0x8f, 0x9f, 0xff, 0xe3, 0xf1,
-0x7f, 0xc8, 0xf3, 0x00, 0x28, 0xff, 0xc7, 0xe3,
-0xb5, 0x3f, 0x6c, 0xbc, 0x2d, 0x5c, 0xd6, 0xa0,
-0x02, 0x0a, 0x40, 0x22, 0xed, 0x0a, 0x01, 0x50,
-0xd1, 0x1a, 0x7e, 0xef, 0x5e, 0x41, 0xa1, 0xb1,
-0xdf, 0xbe, 0xbf, 0x59, 0x70, 0x09, 0x2e, 0xf3,
-0xeb, 0xe3, 0xc5, 0x63, 0xf2, 0x57, 0xe0, 0x35,
-0xde, 0x98, 0x09, 0x8e, 0xc9, 0x74, 0x65, 0x61,
-0xa6, 0xe4, 0x8c, 0x3c, 0x07, 0x2e, 0xeb, 0x8d,
-0x03, 0xb7, 0x9e, 0xa9, 0x8e, 0x49, 0xed, 0xd9,
-0xf1, 0x5c, 0x7b, 0x07, 0x9e, 0xe0, 0x61, 0x43,
-0xdd, 0xc7, 0x6a, 0x60, 0x03, 0xaf, 0xcd, 0xf8,
-0xf7, 0x31, 0xba, 0x52, 0x9b, 0x51, 0xff, 0x17,
-0xd3, 0xe1, 0x49, 0xf3, 0xa6, 0x51, 0x3f, 0x0a,
-0x8a, 0x9e, 0x1d, 0xdf, 0x5d, 0x70, 0x1c, 0x76,
-0x43, 0xed, 0xa2, 0xa2, 0x18, 0x6b, 0x81, 0x07,
-0x21, 0x6a, 0xfa, 0x62, 0x8c, 0xae, 0x44, 0x4d,
-0x7f, 0x1d, 0x03, 0xfe, 0xb0, 0x16, 0xed, 0xf7,
-0xd5, 0x41, 0x18, 0xd7, 0x43, 0xf6, 0x79, 0x2a,
-0x77, 0xc0, 0x13, 0x30, 0x23, 0xa3, 0xa6, 0x99,
-0x0c, 0x1b, 0xa0, 0xd6, 0xf4, 0xa7, 0xd9, 0x69,
-0xbc, 0x52, 0x6b, 0x5e, 0x97, 0x6e, 0xfa, 0x18,
-0x3c, 0xc1, 0x66, 0x98, 0xd7, 0xa6, 0x59, 0x4c,
-0x89, 0xdb, 0x13, 0xae, 0x3c, 0x0d, 0xe7, 0xa1,
-0xa1, 0xbd, 0x38, 0x56, 0xfe, 0x05, 0xf6, 0x32,
-0x34, 0x98, 0xc1, 0xb4, 0x4c, 0x57, 0xea, 0x51,
-0x60, 0xd3, 0xe9, 0x2b, 0x73, 0x69, 0x5a, 0x06,
-0xc5, 0x7e, 0xfe, 0x8c, 0x74, 0x10, 0x2e, 0xc3,
-0x0d, 0xc6, 0xd2, 0x51, 0x79, 0x18, 0x85, 0x46,
-0x33, 0x38, 0x2a, 0x5f, 0x10, 0x42, 0xc9, 0xa8,
-0x7c, 0x46, 0xbb, 0x0c, 0x37, 0x99, 0x05, 0xa3,
-0xf2, 0x18, 0xd8, 0xf7, 0x37, 0xb4, 0x1d, 0x74,
-0x13, 0xa3, 0x24, 0x2d, 0x4f, 0x53, 0xdf, 0x76,
-0xef, 0xdf, 0x30, 0x10, 0x88, 0x09, 0x61, 0x9e,
-0x19, 0x8c, 0x55, 0x6b, 0xce, 0x7c, 0x07, 0x0a,
-0xa2, 0xb0, 0xbb, 0x3b, 0x3a, 0xa6, 0xee, 0x49,
-0x4c, 0x33, 0x72, 0x9e, 0x3f, 0x34, 0xca, 0xa2,
-0xf0, 0x24, 0x9f, 0x35, 0x50, 0x32, 0xda, 0x7c,
-0x37, 0xfe, 0x28, 0xd9, 0xe7, 0x29, 0x58, 0x42,
-0xda, 0xb8, 0xdb, 0x37, 0x8f, 0x29, 0xf0, 0x30,
-0xa9, 0xc5, 0xd6, 0x4f, 0x6f, 0xac, 0xb0, 0x45,
-0xda, 0x9d, 0xae, 0x39, 0x71, 0x6b, 0x8c, 0xcd,
-0xc7, 0xdf, 0xce, 0xfa, 0xc4, 0xa5, 0xa9, 0xb0,
-0xb7, 0x63, 0x56, 0x5c, 0x5d, 0xc3, 0xae, 0xd2,
-0xef, 0xe1, 0x33, 0x33, 0xfe, 0x35, 0xec, 0x55,
-0xd8, 0xcb, 0x67, 0x0e, 0x47, 0xf0, 0x0a, 0x09,
-0x99, 0x6b, 0xd6, 0xb0, 0x56, 0xe7, 0xfe, 0xad,
-0x6a, 0x00, 0xde, 0x47, 0x6d, 0x94, 0xc4, 0x26,
-0x29, 0xf0, 0x0b, 0x52, 0x4b, 0x4c, 0x16, 0xf7,
-0x3f, 0xac, 0xc6, 0x64, 0xc3, 0x78, 0x5f, 0x9b,
-0xdb, 0x17, 0x8c, 0x4d, 0x2a, 0x73, 0x56, 0xbd,
-0x31, 0x85, 0xf4, 0xd3, 0xc8, 0x83, 0x77, 0xf9,
-0x2f, 0x18, 0x39, 0xfa, 0xf9, 0xe8, 0x99, 0xd2,
-0x0b, 0xa5, 0x97, 0x8d, 0xc6, 0xfe, 0xe0, 0xbb,
-0xf2, 0x60, 0xa1, 0xad, 0x9f, 0xde, 0x02, 0xa1,
-0x0d, 0x43, 0x4d, 0xcb, 0x01, 0x78, 0xc6, 0xab,
-0xff, 0xc0, 0xee, 0xe6, 0x61, 0x38, 0x1f, 0xab,
-0x1f, 0x08, 0x1c, 0x90, 0x67, 0x38, 0xfa, 0x6f,
-0x2d, 0xdd, 0x02, 0x7b, 0x61, 0xa6, 0xa1, 0xb6,
-0x37, 0x55, 0xc0, 0x3d, 0x30, 0xd3, 0xf4, 0xb7,
-0xb3, 0x57, 0xe8, 0x8a, 0xa9, 0xb6, 0xd7, 0xbd,
-0xa0, 0xec, 0x55, 0x66, 0xbe, 0xa0, 0xfe, 0x86,
-0x95, 0x39, 0xbf, 0xaf, 0x09, 0xdf, 0x15, 0x93,
-0xc2, 0xf9, 0x36, 0x80, 0x77, 0xbe, 0xa6, 0x6a,
-0x09, 0xd7, 0x8d, 0x44, 0xbe, 0xca, 0xda, 0xc1,
-0xd6, 0x7f, 0x6b, 0x85, 0x58, 0x6f, 0x7c, 0x20,
-0xe6, 0x2b, 0x89, 0x75, 0x7a, 0xf5, 0xa9, 0xa2,
-0x50, 0x43, 0x42, 0x77, 0x8c, 0x2d, 0x03, 0x7b,
-0xbd, 0x8d, 0x54, 0xf6, 0xc2, 0x39, 0x9c, 0xaf,
-0xaa, 0xcb, 0x0b, 0xd8, 0x31, 0xfc, 0xc3, 0x60,
-0x4a, 0x1e, 0xc1, 0x2b, 0xf5, 0x3c, 0x90, 0xaa,
-0x1e, 0xe3, 0xe7, 0xa0, 0x81, 0xab, 0x29, 0xff,
-0x57, 0xc1, 0x79, 0x7e, 0xc8, 0xc0, 0x18, 0x34,
-0xc0, 0x2c, 0x2e, 0x67, 0x0c, 0x12, 0x82, 0x28,
-0x38, 0x57, 0x60, 0x14, 0xa6, 0xd2, 0x95, 0x4d,
-0xce, 0xf3, 0xa8, 0xda, 0x30, 0x9c, 0x85, 0x86,
-0x55, 0x81, 0x9e, 0xf2, 0x47, 0xf8, 0x51, 0x54,
-0x54, 0x30, 0x29, 0xd3, 0x95, 0x05, 0xf1, 0x12,
-0x14, 0xa4, 0xb3, 0x50, 0x67, 0xdc, 0x96, 0x94,
-0x0f, 0x3b, 0xcf, 0xc3, 0x95, 0x95, 0xb0, 0x5f,
-0xab, 0xbd, 0x53, 0xed, 0x61, 0xd3, 0xc3, 0xeb,
-0xa1, 0xd6, 0xf0, 0x27, 0xd9, 0x30, 0xec, 0x47,
-0xe1, 0x1a, 0x12, 0x6e, 0x04, 0xfd, 0x0e, 0x35,
-0xc9, 0x32, 0x95, 0xb6, 0x59, 0x08, 0x15, 0xd4,
-0xd0, 0xb7, 0x83, 0xea, 0x03, 0xb8, 0x7e, 0xbc,
-0xe3, 0x5b, 0x9a, 0x92, 0xe1, 0x61, 0x75, 0x7f,
-0x77, 0xb8, 0xe9, 0xde, 0x24, 0x3b, 0xe2, 0xac,
-0x07, 0x55, 0x51, 0x60, 0x27, 0x44, 0x8d, 0x88,
-0xe6, 0x53, 0x12, 0x1d, 0x28, 0xf8, 0x35, 0xd6,
-0x0f, 0x3b, 0x25, 0x7c, 0x31, 0xcb, 0x58, 0xbf,
-0xb4, 0x53, 0x8f, 0xb7, 0xaa, 0x65, 0xec, 0xb0,
-0x64, 0x3f, 0xff, 0xbe, 0xe2, 0x38, 0xcd, 0xae,
-0x22, 0xca, 0xcb, 0xb7, 0x1a, 0x03, 0xee, 0x7c,
-0x17, 0x80, 0x6f, 0x6d, 0xf3, 0xeb, 0xc6, 0x3e,
-0xd8, 0x05, 0x25, 0x6b, 0xe5, 0x77, 0x64, 0x7b,
-0xfd, 0xf4, 0x4c, 0xa1, 0xd9, 0x2d, 0x34, 0x83,
-0x9a, 0x7c, 0xc6, 0x38, 0xeb, 0xce, 0x17, 0x85,
-0x07, 0x70, 0x21, 0x9d, 0xd5, 0xa6, 0xb6, 0xa0,
-0x70, 0x4a, 0xb6, 0xf5, 0xd9, 0x53, 0x30, 0x0c,
-0x3f, 0x87, 0x85, 0x46, 0x60, 0x50, 0x1e, 0x8e,
-0x7b, 0xf4, 0xb3, 0xd0, 0x28, 0x79, 0x50, 0xae,
-0x69, 0x79, 0x43, 0xa9, 0x34, 0x82, 0x9b, 0xe4,
-0x23, 0xce, 0xfa, 0x99, 0xaf, 0xe1, 0xbf, 0xce,
-0x6a, 0xa1, 0x9b, 0xb3, 0x01, 0xe8, 0x86, 0x5a,
-0xf0, 0x73, 0x96, 0x81, 0x7d, 0x50, 0x2b, 0xa9,
-0x9d, 0x68, 0x7f, 0x06, 0x20, 0xac, 0x6c, 0x48,
-0x24, 0x9e, 0x2b, 0xb4, 0xf5, 0xa9, 0x16, 0xf4,
-0xd3, 0x7c, 0x6f, 0x51, 0xb5, 0xa6, 0x7e, 0x4e,
-0xf3, 0x2d, 0x12, 0xf3, 0x45, 0x01, 0xe7, 0xab,
-0x74, 0x6d, 0xad, 0xd0, 0x0d, 0x7f, 0x39, 0xce,
-0xd7, 0xbe, 0x7f, 0xa8, 0x72, 0x3b, 0x3c, 0x8a,
-0x6a, 0x8c, 0x24, 0xf5, 0xe1, 0x1c, 0x7d, 0x1a,
-0x6a, 0xd2, 0xa7, 0xf0, 0x87, 0x60, 0x05, 0x5d,
-0x39, 0xe2, 0xd8, 0x87, 0x54, 0xe5, 0xb0, 0xfa,
-0x10, 0xda, 0x9f, 0x25, 0x49, 0xe9, 0x97, 0xcc,
-0xf3, 0xfc, 0x53, 0x0d, 0xfc, 0x7d, 0x6b, 0xe0,
-0x4d, 0x78, 0x1c, 0xaf, 0x48, 0x23, 0x8e, 0x7d,
-0x88, 0x48, 0xdb, 0xf1, 0x6e, 0x0d, 0x5f, 0x08,
-0x26, 0x13, 0xcf, 0xe5, 0xe8, 0x67, 0x51, 0x50,
-0xc3, 0x7f, 0xe8, 0x75, 0x68, 0x68, 0x9a, 0x94,
-0xc4, 0x85, 0x68, 0x7f, 0x22, 0x5a, 0x8a, 0xf4,
-0xaf, 0xdd, 0xc6, 0x9b, 0xef, 0xe4, 0xb6, 0xfe,
-0x25, 0x5a, 0x6f, 0xc5, 0xf4, 0x43, 0x0c, 0xc0,
-0xe3, 0xb0, 0x91, 0xcb, 0xc7, 0xdc, 0xfb, 0x17,
-0x44, 0xe0, 0x40, 0xf7, 0xac, 0x6e, 0x35, 0x93,
-0x78, 0x9b, 0xdf, 0x8b, 0xeb, 0xd9, 0x9f, 0x62,
-0x23, 0x70, 0x00, 0x66, 0xee, 0x50, 0x51, 0x60,
-0xaf, 0xf2, 0xea, 0x54, 0x71, 0xca, 0x7b, 0x7f,
-0xb4, 0x3f, 0x0f, 0xf0, 0xda, 0x51, 0x9f, 0xce,
-0x96, 0x40, 0xa7, 0x14, 0xed, 0xb3, 0xdf, 0x97,
-0x51, 0xb4, 0xd8, 0x4b, 0xe0, 0xc1, 0x78, 0xfc,
-0x05, 0x35, 0x56, 0x78, 0xcc, 0xb1, 0x3f, 0x29,
-0x69, 0x32, 0x3c, 0x06, 0xb3, 0xcc, 0xd6, 0x36,
-0x36, 0x24, 0xde, 0x5f, 0xd9, 0x7a, 0x7f, 0xbf,
-0x68, 0xb6, 0xb6, 0x5f, 0xf5, 0x0a, 0x54, 0xaa,
-0xd7, 0xc5, 0x8b, 0xee, 0x2a, 0x1c, 0xd0, 0xec,
-0xf5, 0xd6, 0xab, 0x4e, 0x85, 0xdf, 0xd0, 0x6e,
-0xd2, 0x3a, 0x69, 0x99, 0xf1, 0x63, 0x14, 0xe4,
-0x35, 0x32, 0xbd, 0xb6, 0x0b, 0x33, 0xc5, 0x6b,
-0x3a, 0x2f, 0x29, 0x3f, 0xe6, 0x77, 0x65, 0x02,
-0x6b, 0xe4, 0x63, 0x8e, 0xfd, 0x51, 0xa7, 0x08,
-0x7b, 0x0b, 0xa8, 0x96, 0xd7, 0xd9, 0x79, 0x8f,
-0xbd, 0x35, 0x83, 0xbb, 0xe4, 0xd3, 0x91, 0x37,
-0x95, 0x15, 0x06, 0x0a, 0x87, 0x1d, 0xfb, 0x63,
-0xe0, 0xfe, 0x75, 0x91, 0x2f, 0xd4, 0x03, 0x43,
-0x8c, 0xb6, 0x2d, 0xda, 0xbf, 0xfe, 0xe4, 0x90,
-0x46, 0xfb, 0x57, 0xf1, 0x58, 0xe7, 0xa5, 0xaa,
-0xff, 0xe6, 0x73, 0x32, 0x81, 0x0b, 0xf2, 0xa0,
-0xf3, 0xfe, 0xf6, 0xa2, 0xfd, 0x79, 0x0c, 0x66,
-0x2e, 0x9f, 0xd9, 0xc6, 0x06, 0xbb, 0xf6, 0xe6,
-0xda, 0x1f, 0xf6, 0x4a, 0xd5, 0xda, 0x78, 0x15,
-0xf7, 0xb5, 0x87, 0xdf, 0x72, 0xec, 0x8f, 0x06,
-0x34, 0x7e, 0x96, 0x11, 0x6a, 0x63, 0x2f, 0x40,
-0x76, 0xbc, 0xb0, 0x60, 0x66, 0x51, 0x3b, 0xbb,
-0x00, 0xeb, 0x40, 0xef, 0x57, 0xef, 0x62, 0xa6,
-0xf3, 0xbe, 0xc7, 0xd1, 0xfe, 0xe0, 0xea, 0xd2,
-0x71, 0x99, 0x3d, 0x65, 0xec, 0xf6, 0xda, 0x9f,
-0x48, 0x3a, 0xfc, 0x9c, 0xce, 0x41, 0xa7, 0x1d,
-0xf0, 0x45, 0xc5, 0x5e, 0x9f, 0xbd, 0xb8, 0xdf,
-0x9d, 0x25, 0x6b, 0x99, 0xb4, 0xa7, 0x99, 0x96,
-0x85, 0x06, 0xcc, 0xe2, 0x51, 0xf9, 0x22, 0xbc,
-0x0c, 0xbb, 0xcc, 0xc0, 0xa8, 0xec, 0x3e, 0x0f,
-0x87, 0xd3, 0xb4, 0x5a, 0x8e, 0x93, 0x7e, 0xb8,
-0x57, 0x3f, 0x83, 0x24, 0xa8, 0x67, 0x0d, 0x71,
-0x25, 0xe3, 0xda, 0x13, 0xed, 0x02, 0x5c, 0x84,
-0xc6, 0x78, 0xc9, 0xa0, 0xfc, 0x0a, 0x3c, 0xef,
-0xb5, 0xe7, 0xd1, 0x51, 0xb9, 0x1e, 0x2e, 0x9a,
-0x0b, 0x8d, 0xdb, 0xda, 0xcb, 0xa1, 0xc5, 0x1e,
-0xdf, 0xa1, 0xac, 0xa6, 0xd5, 0x5e, 0xa1, 0x7e,
-0x97, 0x9d, 0xe4, 0xee, 0xfe, 0x25, 0x45, 0xdb,
-0x8b, 0xd3, 0xbe, 0x28, 0xec, 0x33, 0x6a, 0xe3,
-0xb8, 0x35, 0xa7, 0xda, 0x6c, 0xfb, 0xc3, 0x71,
-0xbf, 0xdb, 0xcf, 0x6b, 0x0d, 0x5f, 0x4f, 0xd9,
-0x69, 0x77, 0xbf, 0xfb, 0x17, 0xa8, 0x3d, 0x86,
-0xc3, 0xa2, 0xf0, 0xa8, 0x52, 0x9b, 0xf1, 0xa5,
-0x0b, 0x75, 0x67, 0xfd, 0xa8, 0x4a, 0x00, 0xf5,
-0x83, 0x6f, 0x93, 0xd6, 0x64, 0xb2, 0x1c, 0xfb,
-0x5c, 0x14, 0x5b, 0x46, 0x5f, 0x45, 0x39, 0x1a,
-0xea, 0x84, 0x64, 0xaf, 0x07, 0x5e, 0xbc, 0x5a,
-0x58, 0x8f, 0x12, 0xd2, 0xcf, 0x06, 0xef, 0x7a,
-0x58, 0x32, 0x5a, 0x5d, 0x8f, 0xef, 0x57, 0x03,
-0x6d, 0xdc, 0xc0, 0xec, 0xe7, 0x49, 0x4d, 0x11,
-0xf3, 0x85, 0xe0, 0xa0, 0x3c, 0x9a, 0xb3, 0xbf,
-0xf3, 0x92, 0x51, 0xf6, 0x8a, 0x7a, 0x41, 0x5c,
-0xa9, 0x1e, 0x61, 0x0e, 0xde, 0x10, 0xf8, 0x67,
-0x61, 0xaa, 0xd8, 0x82, 0x3d, 0xb8, 0x7e, 0xde,
-0x23, 0x01, 0xd5, 0x12, 0x7d, 0x4f, 0xae, 0x83,
-0x57, 0x3a, 0xae, 0xd7, 0xef, 0x3b, 0x2a, 0x8f,
-0xca, 0xb9, 0xf8, 0xa7, 0x36, 0xe5, 0xc0, 0x1e,
-0x4b, 0x80, 0x92, 0xf6, 0xc0, 0x59, 0xc4, 0x1b,
-0xdd, 0x3c, 0x5c, 0xd5, 0x9a, 0x40, 0x8b, 0x64,
-0xaf, 0x07, 0x0b, 0xff, 0x44, 0x79, 0x91, 0x03,
-0x7b, 0x66, 0xa3, 0xf0, 0xa0, 0x1e, 0x6d, 0xc1,
-0x2b, 0x35, 0x15, 0x49, 0x16, 0x96, 0xd4, 0x3a,
-0x76, 0x32, 0x0f, 0xff, 0xe0, 0x6b, 0x6b, 0xc3,
-0x06, 0x5b, 0x68, 0xef, 0x4e, 0xb3, 0x2f, 0xa0,
-0x06, 0x56, 0x80, 0xca, 0xd9, 0xa8, 0xb3, 0x1e,
-0x0c, 0x0b, 0xff, 0xe8, 0xc5, 0xe9, 0x6a, 0x7b,
-0xfd, 0x88, 0xf1, 0x0d, 0xf1, 0xe2, 0x98, 0x2c,
-0xc3, 0xcb, 0xe6, 0xbc, 0x8f, 0x04, 0x52, 0xf2,
-0x60, 0x1e, 0xfe, 0x69, 0xec, 0xc5, 0x33, 0xc0,
-0xd7, 0x2c, 0xfd, 0xa4, 0xb3, 0xeb, 0xe1, 0xfe,
-0x51, 0x79, 0x0f, 0x7c, 0x7d, 0xd1, 0x47, 0xab,
-0x8a, 0xdf, 0x93, 0xd6, 0xe4, 0xe3, 0x9f, 0x64,
-0x20, 0xed, 0xae, 0xcf, 0xa8, 0x78, 0x43, 0x03,
-0xe9, 0x9f, 0xfe, 0x0a, 0xed, 0xf9, 0x0c, 0x76,
-0xdf, 0x1e, 0x7f, 0x2e, 0xfe, 0xa1, 0xe7, 0x57,
-0x9d, 0xe7, 0x27, 0xd8, 0xf3, 0x04, 0x6a, 0x60,
-0xca, 0x28, 0x7b, 0x47, 0xd9, 0xdd, 0x16, 0x5d,
-0xa3, 0xee, 0x6b, 0xaa, 0xcb, 0xc7, 0x3f, 0xc6,
-0x75, 0x8e, 0x7e, 0x62, 0xbe, 0x00, 0xec, 0x56,
-0xa2, 0xf1, 0xd6, 0x58, 0xd8, 0x44, 0xc4, 0xb8,
-0x1a, 0x70, 0x87, 0x5a, 0xe3, 0xac, 0x1f, 0x9d,
-0xf0, 0x4f, 0x62, 0x96, 0x2e, 0x65, 0x61, 0x00,
-0xe1, 0x01, 0xbc, 0xc2, 0x67, 0x9d, 0x2c, 0xfa,
-0x2a, 0xfb, 0x99, 0x8e, 0x82, 0x5e, 0xb4, 0x26,
-0x91, 0x8f, 0x7f, 0xbe, 0x66, 0x14, 0x5b, 0xb0,
-0x47, 0xe0, 0x1f, 0x81, 0x88, 0x5a, 0xd4, 0xd9,
-0x9d, 0x7d, 0x37, 0xff, 0xb4, 0xac, 0xde, 0x98,
-0x94, 0x96, 0x97, 0xd9, 0xcb, 0x0d, 0x8c, 0xe2,
-0x83, 0xf0, 0x0d, 0xf8, 0x86, 0x51, 0x62, 0xbf,
-0x26, 0xf6, 0xfa, 0x79, 0x3a, 0xf8, 0xfe, 0x53,
-0xb8, 0x7a, 0xa0, 0xb1, 0x65, 0xea, 0xbb, 0xd5,
-0x49, 0x47, 0xff, 0x36, 0xfe, 0x09, 0x7a, 0xf4,
-0x93, 0xbd, 0xf2, 0x38, 0xda, 0xff, 0xff, 0x4d,
-0x86, 0x7a, 0x9f, 0x3c, 0x83, 0xe5, 0xe1, 0x1f,
-0x70, 0xcc, 0x8e, 0xff, 0xab, 0xb6, 0x50, 0x97,
-0xa8, 0x10, 0x5f, 0x45, 0xda, 0x0b, 0xcb, 0x1c,
-0xfd, 0x67, 0xf1, 0x4f, 0xfc, 0x5a, 0x67, 0xbe,
-0xff, 0xdb, 0x12, 0xe2, 0x34, 0xf1, 0x2a, 0x9c,
-0x6f, 0x26, 0x34, 0xc6, 0x62, 0x9a, 0xad, 0x7f,
-0xc4, 0x3f, 0x0a, 0xaa, 0xb1, 0xdc, 0xef, 0xea,
-0xd3, 0x12, 0x4e, 0xa2, 0x50, 0x92, 0xdc, 0xbd,
-0x62, 0xf5, 0x40, 0xd1, 0x5c, 0xc4, 0x57, 0x79,
-0xf8, 0xa7, 0xc7, 0x8f, 0xb0, 0x47, 0x3d, 0x80,
-0x68, 0x27, 0x8b, 0x7f, 0x1a, 0x93, 0xc1, 0x94,
-0x7f, 0x01, 0x1c, 0x32, 0x1b, 0xf7, 0x7f, 0xea,
-0xad, 0x5b, 0x17, 0x38, 0xf3, 0xb5, 0xf1, 0x8f,
-0x03, 0x7b, 0x6c, 0x41, 0x21, 0x41, 0x19, 0xbb,
-0xa3, 0x01, 0x4a, 0xd6, 0xc9, 0x27, 0x1c, 0xfb,
-0x93, 0xc5, 0x3f, 0x1e, 0x18, 0x90, 0x15, 0x5a,
-0xee, 0x2f, 0x93, 0x57, 0x8a, 0x2b, 0x4b, 0x10,
-0xff, 0x28, 0x39, 0xf8, 0x07, 0xcf, 0x0b, 0xce,
-0xb6, 0x6b, 0x0b, 0x71, 0xff, 0x96, 0xf0, 0x74,
-0x65, 0x3f, 0xcc, 0x5f, 0xa5, 0x6e, 0xc6, 0xf7,
-0x2b, 0x0f, 0xff, 0x98, 0x7e, 0x44, 0x3b, 0xf6,
-0xf8, 0x95, 0xb6, 0x50, 0xd3, 0xf6, 0x44, 0xbc,
-0x30, 0x1e, 0x7a, 0xac, 0x69, 0x3c, 0xfe, 0xf1,
-0x6b, 0x61, 0x0b, 0x06, 0xf8, 0xcb, 0x2c, 0x3c,
-0xd0, 0x7a, 0x6d, 0x1d, 0xa3, 0xaf, 0x66, 0x20,
-0x34, 0x42, 0x3c, 0x60, 0xaf, 0x87, 0x2c, 0xfe,
-0x71, 0xe7, 0xfb, 0x3c, 0xe2, 0x0d, 0x31, 0xcd,
-0x20, 0xaf, 0xd6, 0x55, 0xba, 0x12, 0x58, 0x5b,
-0xfd, 0x8e, 0x64, 0xaf, 0x4f, 0x0b, 0xff, 0x34,
-0xe6, 0xc0, 0x1e, 0x14, 0x58, 0xe3, 0xcd, 0xc1,
-0x07, 0xfc, 0x67, 0xd0, 0x34, 0xdd, 0x68, 0xcc,
-0x6a, 0x93, 0x4f, 0x39, 0xef, 0x63, 0xa8, 0x60,
-0xbc, 0x7e, 0x48, 0x2d, 0x8d, 0xb7, 0x28, 0x27,
-0x3a, 0x69, 0xfc, 0x6c, 0xa3, 0xf8, 0x05, 0xf9,
-0x88, 0xe6, 0xc5, 0x3f, 0xfb, 0xc8, 0x3e, 0x64,
-0x61, 0x0f, 0xe1, 0x1f, 0x1d, 0xf6, 0x29, 0xb5,
-0x49, 0xb5, 0x0b, 0xe8, 0x4a, 0x18, 0xed, 0x43,
-0xd9, 0x73, 0x8e, 0x7e, 0xb2, 0xf8, 0x27, 0x0b,
-0xf3, 0x48, 0xa8, 0xa0, 0x69, 0x46, 0xa2, 0xc6,
-0xf2, 0x18, 0xeb, 0x47, 0x7d, 0xae, 0x34, 0xae,
-0xd5, 0xf2, 0xf0, 0x0f, 0x6a, 0xaf, 0xd5, 0xab,
-0xff, 0x1a, 0xd5, 0xc2, 0x3f, 0xe1, 0x61, 0x7d,
-0xbf, 0x3a, 0xdd, 0xf0, 0x6f, 0x61, 0x47, 0x9c,
-0xf5, 0x80, 0xf8, 0x87, 0x1e, 0x3b, 0x1e, 0xb4,
-0xc6, 0x3b, 0xcf, 0xdf, 0xd0, 0x16, 0x4d, 0x36,
-0xfd, 0x12, 0xce, 0xb6, 0xcd, 0x5b, 0xbd, 0x34,
-0x29, 0x8f, 0x38, 0xf3, 0x25, 0xfc, 0x63, 0x8d,
-0xb7, 0xe7, 0xab, 0xf9, 0xb7, 0x2b, 0xb6, 0x06,
-0xf8, 0x59, 0xe5, 0x40, 0x5c, 0x4d, 0x2e, 0x3a,
-0xe6, 0xac, 0xff, 0x2c, 0xfe, 0xc9, 0x59, 0x6f,
-0x74, 0x65, 0x3e, 0x22, 0xd2, 0xa7, 0x5e, 0x57,
-0x46, 0x8c, 0xa9, 0x50, 0xbc, 0x4e, 0xbe, 0xd7,
-0x39, 0xff, 0x0a, 0xfc, 0xe3, 0xc2, 0x1e, 0x21,
-0x58, 0x57, 0xd4, 0x0c, 0x5e, 0x59, 0xa7, 0xce,
-0x4c, 0x15, 0x9f, 0x66, 0x3e, 0x67, 0x3d, 0x44,
-0x2c, 0xfb, 0x63, 0x7a, 0xdf, 0x97, 0x8d, 0x28,
-0x44, 0x32, 0x68, 0x9f, 0x9f, 0x03, 0x39, 0x1e,
-0x7d, 0xaf, 0x5b, 0x67, 0xcf, 0xe4, 0xe0, 0x9f,
-0x1c, 0xd8, 0x80, 0xe3, 0xf1, 0x8a, 0x36, 0xd3,
-0x28, 0x6a, 0xbf, 0xea, 0x35, 0x79, 0x9d, 0x34,
-0x8b, 0x15, 0x1d, 0x6f, 0x5a, 0xa5, 0xd8, 0xf7,
-0x27, 0xfc, 0xf3, 0x5b, 0x44, 0x23, 0x41, 0x82,
-0x3d, 0x59, 0x81, 0xde, 0xe8, 0xf9, 0xf1, 0xe2,
-0x35, 0xcd, 0xaf, 0xc2, 0x1b, 0xb8, 0xf5, 0x2c,
-0x59, 0xd5, 0xfc, 0x96, 0xfd, 0xf8, 0x36, 0xfe,
-0xf1, 0xc0, 0x9e, 0x74, 0xf3, 0x69, 0xb4, 0x3f,
-0x62, 0x07, 0x3c, 0x8e, 0xd0, 0xb7, 0x04, 0x82,
-0xba, 0x9c, 0x70, 0xcf, 0xbf, 0x05, 0x36, 0xec,
-0x29, 0xbf, 0xa4, 0x5a, 0x82, 0xfc, 0x75, 0xbc,
-0xf2, 0x8d, 0x4c, 0xf1, 0x3f, 0xfa, 0x51, 0x78,
-0xa0, 0x51, 0x5f, 0x32, 0x82, 0xab, 0xd9, 0x8b,
-0x7f, 0xe8, 0xb1, 0x6f, 0x6d, 0x87, 0xec, 0xf3,
-0xdf, 0xc5, 0xc4, 0x8c, 0x8e, 0x91, 0xd0, 0xf5,
-0x78, 0xc5, 0x4c, 0x35, 0x62, 0xb0, 0xef, 0x3b,
-0xfa, 0x07, 0xd8, 0x92, 0x37, 0xdf, 0x76, 0xf6,
-0x59, 0x21, 0x3c, 0xd3, 0xce, 0x2a, 0xa4, 0xc7,
-0xb5, 0xbf, 0x83, 0xd0, 0xed, 0x09, 0x70, 0xec,
-0xbf, 0x5e, 0x61, 0x59, 0x1b, 0xd9, 0xa3, 0xcf,
-0x00, 0xda, 0xff, 0x9a, 0xcc, 0xb5, 0x10, 0x5e,
-0xa2, 0xa7, 0x97, 0x47, 0x43, 0xb8, 0x35, 0x74,
-0x2b, 0xf6, 0xfa, 0x24, 0xfc, 0x83, 0xa7, 0xc5,
-0xc3, 0x7e, 0x8f, 0xfd, 0x5c, 0x8d, 0xf3, 0xa5,
-0x8d, 0x4f, 0xae, 0xe5, 0xe7, 0x79, 0x83, 0xb4,
-0x64, 0x87, 0xfc, 0xf1, 0x1c, 0xfc, 0x93, 0xa7,
-0x1f, 0xfb, 0xbc, 0xbf, 0x07, 0x81, 0x13, 0x9e,
-0xd7, 0x34, 0xb1, 0x54, 0x6c, 0x7b, 0x22, 0x69,
-0x96, 0x19, 0x0f, 0x38, 0xf6, 0xdc, 0xda, 0xef,
-0xe6, 0xb4, 0x20, 0x2c, 0xbc, 0x00, 0x97, 0xa0,
-0x3c, 0x15, 0xcd, 0x74, 0xe6, 0xe2, 0x1f, 0xda,
-0xb6, 0x7c, 0x79, 0xfb, 0xef, 0x36, 0x43, 0xdd,
-0x17, 0x3e, 0x65, 0xa4, 0xb9, 0x5e, 0x16, 0xd8,
-0x9a, 0x87, 0x7f, 0x68, 0x98, 0x9a, 0x37, 0x7e,
-0xba, 0xa9, 0x6e, 0x27, 0xc1, 0x9c, 0x51, 0x04,
-0x29, 0x7c, 0x43, 0xed, 0xf5, 0x40, 0xf8, 0x67,
-0x37, 0xdd, 0x3f, 0xd7, 0x3e, 0x2b, 0xba, 0x19,
-0xd1, 0x0b, 0x8f, 0x4b, 0x07, 0x20, 0x02, 0xaa,
-0xee, 0xc1, 0x3f, 0x80, 0xf8, 0x87, 0xa6, 0x19,
-0xc8, 0x99, 0xef, 0x13, 0x50, 0x47, 0x88, 0x71,
-0x18, 0xe7, 0xbb, 0x00, 0x50, 0x00, 0xc7, 0xfe,
-0x10, 0xfe, 0xc9, 0x39, 0xb6, 0xbb, 0x82, 0x29,
-0x9f, 0x81, 0x0b, 0xd2, 0xf5, 0x90, 0x68, 0x2f,
-0x7f, 0xd3, 0x79, 0x1f, 0xcd, 0xb5, 0x88, 0x9f,
-0x93, 0x73, 0x38, 0xe2, 0x9f, 0x0b, 0xae, 0xff,
-0x07, 0x85, 0xe3, 0x81, 0x56, 0x7f, 0x19, 0x5c,
-0xe0, 0xb3, 0xf9, 0xfa, 0x21, 0xb9, 0xdd, 0xb1,
-0x0f, 0x26, 0xe2, 0x9f, 0x03, 0x7a, 0x75, 0xbb,
-0xba, 0x0f, 0xf1, 0xb6, 0xe5, 0xff, 0x91, 0x09,
-0x08, 0xcd, 0x1a, 0x54, 0x77, 0x25, 0x66, 0xc0,
-0x01, 0x1e, 0xde, 0xac, 0xf6, 0x94, 0xe9, 0x0e,
-0x9e, 0x1f, 0x80, 0x8d, 0xea, 0x4e, 0x08, 0x27,
-0xaf, 0x8e, 0x95, 0x1d, 0xd7, 0x1e, 0xf4, 0xbc,
-0x68, 0xcf, 0x46, 0x74, 0x1c, 0x75, 0x00, 0x74,
-0x8e, 0xe7, 0xd9, 0x15, 0x05, 0xf6, 0xfa, 0x31,
-0x11, 0xcf, 0xec, 0x24, 0xff, 0x12, 0xa9, 0x31,
-0x8b, 0x27, 0x77, 0x58, 0x1a, 0x9e, 0x4f, 0x2f,
-0x72, 0xdb, 0x36, 0xde, 0xb3, 0xb3, 0xc9, 0xfe,
-0xb5, 0xc0, 0xf2, 0xff, 0x98, 0x73, 0x32, 0xc5,
-0xa4, 0x96, 0x97, 0x6d, 0xfc, 0x23, 0x34, 0xf6,
-0x43, 0xb9, 0xc6, 0x78, 0x0f, 0xea, 0x52, 0x33,
-0x43, 0xcd, 0x46, 0x8b, 0x17, 0xff, 0x5c, 0x82,
-0x27, 0x5b, 0x26, 0xd0, 0xcf, 0xa8, 0x3c, 0xa6,
-0x5f, 0x82, 0x85, 0xfd, 0xc1, 0x21, 0x8f, 0xff,
-0xa7, 0x85, 0xf0, 0x8f, 0x5a, 0x37, 0x30, 0x33,
-0x8d, 0x6f, 0x5f, 0xce, 0xc2, 0xc3, 0x5f, 0x64,
-0x3b, 0xbc, 0x65, 0x34, 0x0c, 0xe0, 0xf9, 0x74,
-0xd0, 0x59, 0xff, 0x43, 0xb4, 0x1e, 0x54, 0x7d,
-0x55, 0x6f, 0x1a, 0x4f, 0x07, 0x9e, 0xf5, 0x30,
-0x0b, 0xf1, 0x3f, 0x3e, 0x3f, 0x9e, 0xc8, 0x86,
-0xd4, 0x3d, 0x89, 0xf7, 0x72, 0xf0, 0xcf, 0x4e,
-0xae, 0xb7, 0xf5, 0xe6, 0xed, 0xd7, 0x38, 0x5f,
-0x9d, 0x35, 0x2b, 0x5b, 0x33, 0xab, 0x93, 0xbe,
-0xc9, 0x6c, 0xd4, 0xb1, 0xe7, 0x69, 0xc2, 0x3f,
-0x5c, 0x1f, 0x56, 0x3d, 0xf8, 0xc7, 0x12, 0x5a,
-0xcf, 0x5e, 0x73, 0xb7, 0xbe, 0x96, 0xcf, 0x9c,
-0xa6, 0x2e, 0xc7, 0xa3, 0x99, 0x3d, 0x1e, 0xf1,
-0x0f, 0x1e, 0x33, 0x63, 0x46, 0x00, 0xf1, 0x4f,
-0x05, 0x02, 0x21, 0xcb, 0xff, 0xf3, 0x3e, 0x34,
-0xf4, 0x93, 0xff, 0x27, 0xf0, 0x0b, 0xb5, 0xbe,
-0xab, 0x50, 0xc3, 0xfd, 0xda, 0x1e, 0x6f, 0x4c,
-0x39, 0xd8, 0x7a, 0x59, 0x6b, 0xcc, 0x20, 0xfe,
-0xb9, 0x9c, 0xab, 0x9f, 0xa5, 0xa3, 0x72, 0x0c,
-0x2e, 0xc0, 0x47, 0x95, 0x92, 0x9f, 0xc8, 0x83,
-0x15, 0xb6, 0x7e, 0x22, 0x0a, 0xbd, 0xbf, 0x75,
-0xad, 0xa8, 0x8d, 0x77, 0xb8, 0xd7, 0x3f, 0x76,
-0x04, 0x85, 0x47, 0xb4, 0x3e, 0xa8, 0x83, 0xc9,
-0xb4, 0xbf, 0xdb, 0xfa, 0x19, 0xd0, 0xc8, 0x9e,
-0x54, 0xf5, 0x47, 0xda, 0xf1, 0x2c, 0xea, 0xf5,
-0xff, 0x0c, 0xc8, 0xa3, 0x4c, 0x63, 0x6b, 0xa1,
-0xca, 0x88, 0xb4, 0xb1, 0x13, 0x8e, 0x3d, 0x37,
-0x04, 0xfe, 0x89, 0x93, 0xbf, 0xeb, 0x39, 0xf3,
-0x7b, 0x9e, 0xf9, 0xbe, 0xd9, 0xb9, 0xa6, 0xf0,
-0x67, 0xd0, 0xd5, 0x17, 0x59, 0x11, 0x5a, 0xce,
-0x06, 0x3c, 0xfe, 0x1f, 0xb4, 0xde, 0x5c, 0xff,
-0x09, 0x79, 0x7b, 0x94, 0x9c, 0xf3, 0x85, 0x3f,
-0x5a, 0xb8, 0x14, 0xb8, 0xf1, 0xb7, 0xf1, 0xa2,
-0x58, 0xd9, 0x4b, 0xce, 0xf3, 0x10, 0xfe, 0xf9,
-0xa0, 0x7b, 0x77, 0x32, 0x40, 0xb0, 0xe7, 0x2d,
-0x17, 0xff, 0xa0, 0x90, 0xe9, 0x3c, 0x1b, 0x3f,
-0x02, 0x37, 0x25, 0x03, 0xdb, 0xe4, 0x73, 0xae,
-0xff, 0xca, 0xc2, 0x3f, 0xea, 0x38, 0xfc, 0x03,
-0xc1, 0x84, 0xbc, 0x15, 0xc6, 0x94, 0x47, 0x58,
-0x09, 0x87, 0x13, 0xce, 0xfa, 0x41, 0xfc, 0xa3,
-0x9e, 0x85, 0x7d, 0xed, 0x81, 0xbc, 0xfd, 0xbd,
-0xde, 0xc0, 0x2b, 0xd3, 0xe1, 0xec, 0xc0, 0x82,
-0x55, 0xb7, 0x3c, 0xe0, 0x39, 0xbf, 0x0b, 0xfc,
-0x23, 0x85, 0x97, 0xa9, 0xb9, 0xf8, 0x87, 0xd5,
-0x12, 0x2c, 0xf9, 0x18, 0x1e, 0xb5, 0xc2, 0xf1,
-0x49, 0x3d, 0x89, 0x91, 0x1c, 0xfc, 0xf3, 0x84,
-0xf1, 0xfd, 0x3e, 0xef, 0xf8, 0x95, 0x59, 0x7f,
-0x05, 0xab, 0x69, 0xd9, 0x0f, 0xbe, 0x26, 0x9f,
-0xd7, 0xff, 0x13, 0x50, 0xba, 0xf0, 0xdb, 0x48,
-0xab, 0x8a, 0x78, 0x80, 0xcf, 0xf6, 0x00, 0x83,
-0x56, 0x35, 0x59, 0xd8, 0x82, 0x5f, 0xe9, 0xad,
-0x1f, 0xd7, 0xd8, 0xb1, 0x02, 0x5b, 0xff, 0x63,
-0x88, 0x7f, 0x46, 0xdb, 0x16, 0x20, 0x7e, 0xa7,
-0x69, 0x32, 0x31, 0xdf, 0x38, 0xc2, 0x8c, 0x86,
-0xca, 0xc0, 0x5a, 0x39, 0x82, 0x57, 0x16, 0x54,
-0x94, 0x70, 0xf9, 0x03, 0xd9, 0xb6, 0x3f, 0x1b,
-0x11, 0xff, 0x5c, 0x84, 0xbd, 0x37, 0xd3, 0x6e,
-0x9e, 0xe3, 0xdf, 0x68, 0x09, 0x0e, 0xfa, 0x37,
-0x6b, 0x78, 0x34, 0x43, 0x41, 0x3e, 0x99, 0x83,
-0x7f, 0x2e, 0x6a, 0x73, 0xe2, 0xa4, 0x1f, 0xdd,
-0x3b, 0x7e, 0x99, 0xb2, 0x19, 0xed, 0xd5, 0xcf,
-0xa1, 0xf1, 0xd6, 0xe2, 0x41, 0xf9, 0x54, 0x81,
-0xad, 0x4f, 0xc2, 0x3f, 0xbb, 0x52, 0x61, 0xad,
-0x9b, 0x97, 0x39, 0xf8, 0x47, 0x08, 0x21, 0x95,
-0x8e, 0x5d, 0xf7, 0xb2, 0x5a, 0x0d, 0xcf, 0x47,
-0x47, 0x1c, 0x3c, 0xd9, 0x8a, 0xf8, 0x07, 0xe7,
-0xdb, 0xd6, 0xad, 0x35, 0xe5, 0x01, 0x21, 0x9f,
-0x86, 0x88, 0x11, 0x8f, 0xa2, 0x4d, 0x7e, 0xad,
-0xf0, 0x84, 0x64, 0xeb, 0xbf, 0x47, 0xe0, 0x9f,
-0xef, 0x9b, 0x79, 0xfa, 0xc7, 0xf1, 0xdf, 0x4f,
-0x86, 0x7f, 0x09, 0x8f, 0xd6, 0xd4, 0xb6, 0xf9,
-0x36, 0x15, 0x9e, 0x72, 0xf1, 0x4f, 0xc5, 0x76,
-0x78, 0xb7, 0x6d, 0x81, 0x11, 0x4d, 0x96, 0x0f,
-0x6b, 0x39, 0x40, 0xae, 0x64, 0x73, 0xe7, 0x1b,
-0x80, 0xe7, 0xf1, 0x36, 0xbc, 0x32, 0xe2, 0xec,
-0xbf, 0xab, 0x00, 0xd1, 0x0e, 0x9f, 0x3b, 0x1e,
-0x0f, 0x1b, 0x9f, 0xda, 0x82, 0xc2, 0x8b, 0xd0,
-0xb0, 0xa8, 0xb8, 0x47, 0x3e, 0x91, 0x8b, 0x7f,
-0xe2, 0xbb, 0xd4, 0x68, 0xee, 0x7a, 0x2b, 0x40,
-0xd8, 0xd9, 0x55, 0x8d, 0xc2, 0xed, 0x0d, 0x5a,
-0x34, 0x21, 0x1f, 0xb6, 0x7f, 0x2e, 0x7c, 0x1f,
-0x23, 0x08, 0xda, 0xab, 0x93, 0xdd, 0x1e, 0xfc,
-0x23, 0x84, 0x0e, 0x2d, 0xc5, 0x5e, 0x36, 0x0e,
-0x0d, 0xce, 0xec, 0x86, 0x93, 0xec, 0x98, 0x8b,
-0x7f, 0x14, 0xc4, 0x3f, 0x49, 0x3d, 0x2e, 0xde,
-0x97, 0x1c, 0x20, 0xd4, 0x8d, 0x16, 0x1b, 0xe6,
-0x40, 0x74, 0xa8, 0xbb, 0x3e, 0xfc, 0x8c, 0xb3,
-0xde, 0x74, 0xf8, 0x2c, 0xec, 0x01, 0xbd, 0xa9,
-0xdb, 0x83, 0x07, 0x84, 0x70, 0x5c, 0xbd, 0x8b,
-0xbd, 0xa2, 0xef, 0x91, 0xa2, 0xa6, 0xda, 0x56,
-0x97, 0x71, 0xf6, 0xf7, 0x48, 0xf7, 0xe7, 0x10,
-0xf6, 0xcc, 0xce, 0x44, 0xd7, 0x7c, 0xfe, 0x55,
-0x2f, 0x10, 0xaa, 0x1f, 0x56, 0xbf, 0xda, 0x29,
-0xae, 0xdc, 0x19, 0x68, 0x95, 0x4f, 0x86, 0x1d,
-0xbc, 0x8a, 0xf8, 0x67, 0x6c, 0x82, 0xfd, 0xbd,
-0x61, 0x60, 0x16, 0x09, 0xf8, 0x15, 0xfe, 0x22,
-0x38, 0x5f, 0x5b, 0x3f, 0x46, 0xc1, 0x25, 0xe3,
-0x32, 0x9f, 0x1d, 0x0f, 0x9c, 0x6d, 0xb6, 0x81,
-0x50, 0xf6, 0x20, 0x1f, 0x18, 0x2b, 0x9f, 0x0a,
-0xcf, 0xf1, 0x39, 0x7a, 0x60, 0x44, 0x1e, 0xd4,
-0xed, 0xdf, 0xf7, 0xfb, 0xd2, 0x16, 0x38, 0x18,
-0xda, 0xaa, 0x14, 0xdf, 0xd5, 0x94, 0xfb, 0xfc,
-0x66, 0x09, 0x09, 0x5d, 0x50, 0x6d, 0x14, 0x1b,
-0xec, 0x24, 0xb3, 0xc7, 0x23, 0xfe, 0xd1, 0xd0,
-0x5e, 0x99, 0x45, 0xe3, 0xc6, 0xab, 0xed, 0x89,
-0x36, 0x58, 0x07, 0x33, 0x5b, 0x7c, 0x71, 0x7c,
-0xbf, 0xec, 0xf1, 0xe4, 0xff, 0xd9, 0x67, 0xa4,
-0x56, 0x7d, 0x72, 0x9c, 0x3d, 0xf7, 0x2f, 0x40,
-0x81, 0xbf, 0x50, 0xfb, 0x95, 0x5b, 0x81, 0xbd,
-0xe8, 0x8c, 0xef, 0xa5, 0xfd, 0x8b, 0xd7, 0xdd,
-0xbd, 0x36, 0x5d, 0x7e, 0x5a, 0xf1, 0xcc, 0x17,
-0x11, 0xcb, 0x19, 0x39, 0xaa, 0x3f, 0xd3, 0xd7,
-0x30, 0x5a, 0x3b, 0x5f, 0x7e, 0xc7, 0x79, 0x5f,
-0xb8, 0x84, 0xfa, 0x51, 0xeb, 0xdb, 0x96, 0xe6,
-0xeb, 0xc7, 0x2c, 0x21, 0xe1, 0x9c, 0x5a, 0xd7,
-0x2c, 0x1d, 0xc4, 0x15, 0x62, 0xeb, 0x47, 0xd2,
-0xf0, 0xbc, 0x9f, 0x9a, 0x63, 0xd4, 0xa2, 0x19,
-0x17, 0xd1, 0x0d, 0xc7, 0x9e, 0x17, 0x8f, 0xca,
-0x97, 0x74, 0x14, 0x0c, 0xe5, 0xb0, 0x1c, 0x71,
-0xec, 0x0f, 0xe1, 0x9f, 0x83, 0x99, 0x70, 0x7b,
-0x16, 0xff, 0x34, 0xd0, 0xfe, 0x65, 0x23, 0xa2,
-0xb2, 0x5f, 0xe8, 0xfb, 0x78, 0x6d, 0xdc, 0xd7,
-0x13, 0x8e, 0x18, 0x2e, 0xfe, 0x21, 0x7f, 0x51,
-0x38, 0x2e, 0xc6, 0xdf, 0xe4, 0x8d, 0x77, 0x14,
-0xa5, 0xcb, 0x4e, 0x27, 0x0f, 0xf0, 0x5a, 0xfd,
-0x96, 0x3d, 0xe1, 0x5c, 0xfc, 0xb3, 0x0b, 0x52,
-0xc6, 0x7c, 0x54, 0x8b, 0x96, 0xd5, 0x8f, 0x85,
-0xc0, 0x05, 0x22, 0xda, 0x45, 0x2f, 0x66, 0x8c,
-0x31, 0x17, 0xff, 0x40, 0x14, 0x0f, 0x59, 0x75,
-0x46, 0xad, 0x35, 0xcd, 0x05, 0xf6, 0x7c, 0x17,
-0xd2, 0xf3, 0x67, 0xc8, 0x50, 0x1b, 0x25, 0x29,
-0x59, 0x9f, 0x64, 0xdb, 0x9f, 0x6d, 0x57, 0x8b,
-0xd9, 0x19, 0xc1, 0xd1, 0x6a, 0x12, 0xc4, 0x7c,
-0xbf, 0x66, 0x6f, 0x64, 0xa3, 0xf0, 0x01, 0xa3,
-0xaf, 0xe4, 0x91, 0x42, 0x07, 0xcf, 0x54, 0x8a,
-0xd5, 0x62, 0x16, 0x8f, 0x55, 0x3b, 0xeb, 0x67,
-0xd4, 0x78, 0x15, 0x66, 0xa7, 0x82, 0xef, 0xc9,
-0xff, 0x99, 0x7a, 0x96, 0x5f, 0x1f, 0x0f, 0x0c,
-0x94, 0xb7, 0x97, 0x39, 0xfa, 0x0f, 0x09, 0xb7,
-0xcf, 0x19, 0xd5, 0xf5, 0xff, 0x34, 0x65, 0x10,
-0x08, 0x85, 0x33, 0xea, 0x16, 0x58, 0x08, 0xeb,
-0xd7, 0x86, 0xe3, 0x03, 0x3d, 0x65, 0x31, 0x67,
-0xfd, 0x64, 0xfd, 0x3f, 0xe6, 0xd5, 0x9e, 0xf5,
-0x70, 0x18, 0xbe, 0x03, 0xdb, 0x4c, 0xff, 0xec,
-0xf0, 0x46, 0xfe, 0x28, 0xd4, 0x18, 0x3e, 0x58,
-0x7c, 0xb7, 0x33, 0x5f, 0xb3, 0x60, 0x47, 0x20,
-0x1f, 0x4f, 0x9e, 0x44, 0x20, 0x14, 0x36, 0xbb,
-0x93, 0xcb, 0x02, 0xf0, 0xa8, 0x16, 0x5e, 0xee,
-0xeb, 0x61, 0x31, 0x67, 0xfd, 0x80, 0xf0, 0x3f,
-0xcc, 0x34, 0x8b, 0x3d, 0xeb, 0xe1, 0x1d, 0x18,
-0x6a, 0x8d, 0xb5, 0x06, 0xb7, 0x21, 0x1e, 0xee,
-0x83, 0x8a, 0xf6, 0xda, 0xcd, 0x92, 0x61, 0xd8,
-0xe3, 0xb3, 0xfe, 0x9f, 0x3e, 0x0f, 0xec, 0x29,
-0x1f, 0x83, 0x8b, 0x46, 0xe3, 0x48, 0x30, 0x8e,
-0x77, 0x40, 0x7b, 0x1b, 0xff, 0xe6, 0x20, 0x6a,
-0xc0, 0x1e, 0x6f, 0x80, 0x38, 0x8f, 0x0c, 0x08,
-0xb5, 0x3b, 0xfb, 0xfb, 0x80, 0xd1, 0x30, 0x58,
-0xbc, 0xbd, 0x39, 0x4a, 0xf6, 0xea, 0xcf, 0x4a,
-0xf6, 0x74, 0xfe, 0xdc, 0x79, 0x1e, 0xcb, 0xff,
-0x33, 0xeb, 0x27, 0x5e, 0xff, 0xd5, 0x08, 0x74,
-0xd0, 0x8c, 0x1e, 0x66, 0xf5, 0xe4, 0x51, 0x6f,
-0x53, 0xeb, 0x13, 0xe7, 0x9c, 0x5f, 0xd7, 0x54,
-0xc4, 0xaf, 0x3f, 0x28, 0x5e, 0x13, 0x2b, 0xfe,
-0x55, 0x78, 0x1a, 0x12, 0x14, 0xaf, 0xa9, 0x29,
-0x0b, 0x50, 0xc4, 0xb0, 0xcd, 0xaf, 0x14, 0xba,
-0xf8, 0x27, 0xae, 0x7d, 0x2e, 0x17, 0xf6, 0xf8,
-0xd7, 0x4c, 0x7f, 0x15, 0xee, 0xe1, 0xb3, 0x86,
-0x23, 0xad, 0x6c, 0x2a, 0xac, 0xe5, 0x5f, 0xcc,
-0x14, 0xb5, 0xb2, 0x33, 0xce, 0xfd, 0x5b, 0xd5,
-0x25, 0xc6, 0xfb, 0x5a, 0x36, 0xec, 0x95, 0x8d,
-0x7f, 0x8d, 0xe0, 0x2f, 0x50, 0xdf, 0x5f, 0x5c,
-0x35, 0x29, 0x60, 0xfc, 0x04, 0xea, 0x9b, 0x82,
-0x65, 0x68, 0x6f, 0xed, 0x8f, 0x51, 0x79, 0x50,
-0xbb, 0xac, 0xe4, 0xc1, 0x42, 0x03, 0x11, 0x51,
-0x7f, 0xd0, 0x28, 0xbf, 0x80, 0xfb, 0xd7, 0x37,
-0xcc, 0xfb, 0x46, 0x3d, 0x78, 0x4f, 0x2d, 0x18,
-0x7f, 0x1e, 0xf9, 0xba, 0xfa, 0x16, 0xa4, 0xcd,
-0x40, 0x6a, 0xd2, 0x69, 0x78, 0x9f, 0xd7, 0xe1,
-0xd6, 0xf6, 0x31, 0x17, 0xff, 0xb4, 0x5e, 0x4d,
-0xf8, 0xe7, 0xc6, 0x9c, 0xf3, 0xd4, 0x2b, 0x68,
-0x46, 0xaa, 0x4c, 0x35, 0xce, 0x5e, 0xe9, 0xdb,
-0x0b, 0x5b, 0xcd, 0x5b, 0xda, 0x96, 0xbd, 0xe7,
-0xac, 0x1f, 0x1d, 0xa6, 0xe6, 0xcf, 0x97, 0xdd,
-0x06, 0xdb, 0x78, 0xf5, 0x68, 0x64, 0x15, 0x7b,
-0xd5, 0x78, 0x8c, 0x5f, 0x17, 0xbf, 0x66, 0x4d,
-0x99, 0xeb, 0x7f, 0x5e, 0xa5, 0xd0, 0x6b, 0x15,
-0xf1, 0x9e, 0x67, 0xcb, 0x06, 0x8c, 0xce, 0x6e,
-0x7d, 0x54, 0x9d, 0x89, 0x57, 0x76, 0x76, 0x44,
-0xb9, 0x6f, 0x76, 0xd3, 0x09, 0x4f, 0xfc, 0x2b,
-0x8b, 0x76, 0x1c, 0xd8, 0x93, 0x92, 0xbf, 0x0a,
-0xef, 0x64, 0xe6, 0xa4, 0xa3, 0x99, 0x66, 0xbc,
-0x92, 0xba, 0xa9, 0xab, 0xe4, 0x57, 0xf2, 0xfb,
-0xee, 0xf3, 0x4b, 0x56, 0x3c, 0xc2, 0x83, 0x7f,
-0x70, 0x7d, 0x8e, 0xc1, 0x21, 0x75, 0x16, 0xef,
-0xcc, 0x28, 0x63, 0x4a, 0x18, 0x7e, 0xc4, 0x51,
-0x9f, 0x8e, 0x7e, 0x34, 0x3a, 0xef, 0xd7, 0xb7,
-0xd7, 0x78, 0xf7, 0xbb, 0xd0, 0xbb, 0x52, 0x9d,
-0x31, 0x79, 0x33, 0x58, 0xae, 0x83, 0xa5, 0xdf,
-0x69, 0x7e, 0x2a, 0x17, 0xff, 0x58, 0xe8, 0x85,
-0xbe, 0x75, 0xf6, 0xdf, 0x94, 0xf1, 0x29, 0x21,
-0x0c, 0xd5, 0xae, 0xf4, 0x6f, 0xc1, 0x15, 0x65,
-0x7f, 0xe6, 0x4b, 0xe4, 0xff, 0xf9, 0x12, 0x81,
-0x9c, 0x9c, 0xfd, 0x3a, 0x6c, 0xcc, 0xb0, 0x84,
-0x2f, 0x35, 0xe1, 0x0a, 0x7c, 0xce, 0x19, 0x1f,
-0xa9, 0x50, 0x60, 0xa7, 0x12, 0x6d, 0xf5, 0x11,
-0x0c, 0xd8, 0x9a, 0xc5, 0x03, 0xc9, 0x9d, 0x7a,
-0xd8, 0xf0, 0x5d, 0x53, 0xd6, 0xcf, 0x77, 0xb2,
-0xd5, 0x86, 0x3f, 0x54, 0x76, 0xd8, 0xc1, 0x9f,
-0xb6, 0xff, 0xa7, 0x84, 0xe6, 0xbb, 0xcf, 0xda,
-0x7f, 0x5f, 0x37, 0xc6, 0xd0, 0x50, 0xdd, 0x8b,
-0xc2, 0x92, 0x31, 0x2b, 0xde, 0x77, 0xc9, 0x59,
-0x9f, 0x3d, 0x96, 0x3f, 0xa7, 0xa5, 0xd8, 0x33,
-0xdf, 0x33, 0x2d, 0x17, 0xb5, 0x46, 0xa3, 0xf8,
-0x27, 0x6c, 0xd8, 0xb8, 0x08, 0x0b, 0x0d, 0xc2,
-0x3f, 0xce, 0x79, 0xaa, 0xa7, 0x80, 0xf4, 0xd3,
-0x18, 0xcf, 0xc1, 0x03, 0xfa, 0x59, 0xb5, 0xce,
-0x28, 0x19, 0xec, 0x5c, 0x89, 0x50, 0x6a, 0xa7,
-0x31, 0x79, 0xf0, 0xf3, 0x61, 0xc7, 0x5f, 0x3d,
-0x3f, 0x94, 0xd1, 0xc6, 0xa0, 0x56, 0xf3, 0xf8,
-0x7f, 0x96, 0xbd, 0x4e, 0x6e, 0x1f, 0x09, 0x61,
-0x4f, 0x95, 0xb1, 0x4f, 0x0a, 0x83, 0x9a, 0x2a,
-0x2b, 0x71, 0x7e, 0xdf, 0x56, 0xc4, 0x7b, 0x3b,
-0xe9, 0x25, 0x72, 0xfc, 0x3f, 0x28, 0xa4, 0xf0,
-0x44, 0x46, 0x66, 0xb6, 0x45, 0xdf, 0x09, 0xba,
-0x71, 0x5d, 0xd2, 0x57, 0x26, 0xd9, 0xfa, 0x0f,
-0x29, 0x56, 0xfc, 0xcb, 0xe3, 0xff, 0x09, 0xbf,
-0x21, 0xf4, 0x49, 0x78, 0x12, 0xf1, 0x27, 0x6b,
-0xfa, 0xb3, 0x07, 0xd8, 0x74, 0xe7, 0xf7, 0x22,
-0xff, 0x0f, 0x0d, 0xf3, 0x3e, 0xff, 0x1b, 0xca,
-0x59, 0x3d, 0xfd, 0xf7, 0x25, 0x04, 0x74, 0xdf,
-0x85, 0xba, 0xb6, 0xa2, 0x64, 0x73, 0xc4, 0xd9,
-0x7f, 0x5b, 0x85, 0xff, 0x27, 0x77, 0xfc, 0xb0,
-0xfa, 0xae, 0x70, 0x04, 0xd9, 0xc0, 0x29, 0xd9,
-0xe9, 0x5d, 0x3f, 0x62, 0xbd, 0xb1, 0x7c, 0xbc,
-0x5d, 0x67, 0xc5, 0xbf, 0x86, 0xa0, 0x21, 0xa6,
-0x76, 0xc9, 0xc7, 0x9c, 0xf1, 0x11, 0x89, 0xbc,
-0x3d, 0xb3, 0x78, 0x49, 0x1e, 0xfe, 0x09, 0x73,
-0x5f, 0xa6, 0x69, 0x04, 0xee, 0x53, 0x67, 0xa6,
-0x8a, 0x56, 0x32, 0x0f, 0x5e, 0xb2, 0xfc, 0x3f,
-0xc9, 0x7c, 0x7f, 0xa9, 0x6e, 0x16, 0xc5, 0xb6,
-0x1d, 0x57, 0x1e, 0x84, 0x95, 0x99, 0xa2, 0x7a,
-0xf6, 0x94, 0x33, 0x9e, 0x97, 0x5a, 0xfe, 0x9f,
-0x6b, 0x72, 0xde, 0xdf, 0x27, 0xa1, 0xda, 0x9c,
-0xd1, 0xc6, 0x5e, 0x4d, 0x7e, 0x1b, 0x66, 0x3e,
-0x55, 0xd4, 0xbe, 0xce, 0x34, 0xec, 0xf1, 0xdd,
-0x96, 0xff, 0x47, 0xf7, 0xfa, 0x7f, 0x5e, 0xe5,
-0xbf, 0xe5, 0x3b, 0x33, 0x5f, 0x5c, 0x53, 0x7e,
-0x59, 0xfd, 0x6f, 0xbe, 0x30, 0x1e, 0x6d, 0x95,
-0x9f, 0xb2, 0x1f, 0x1f, 0xed, 0x89, 0x15, 0xff,
-0x2a, 0xf1, 0xda, 0x73, 0x83, 0x22, 0xf8, 0xa8,
-0xa8, 0xd3, 0xfa, 0xdb, 0xac, 0xa1, 0xaf, 0x24,
-0x07, 0xff, 0x28, 0x87, 0x10, 0xff, 0x34, 0xa6,
-0xe4, 0xb3, 0x72, 0x0e, 0xfe, 0xd9, 0x8d, 0xf8,
-0x47, 0xfe, 0x3a, 0xfc, 0xe7, 0x03, 0x0b, 0xe3,
-0x1b, 0x07, 0xca, 0x07, 0x5d, 0x7f, 0x75, 0x68,
-0x0b, 0xfc, 0x52, 0xf3, 0xfa, 0x73, 0xee, 0x22,
-0x41, 0xa9, 0x32, 0x8b, 0xdb, 0xd8, 0xe4, 0xd6,
-0xc7, 0xb4, 0x99, 0x6d, 0xea, 0x5d, 0x4d, 0x6f,
-0x39, 0xf6, 0x5f, 0x33, 0x08, 0xff, 0x78, 0xfd,
-0xd5, 0x96, 0x50, 0x8d, 0x30, 0x8f, 0x1c, 0x41,
-0x65, 0xb3, 0x8c, 0x22, 0x83, 0x0d, 0x73, 0x7b,
-0x7c, 0x5c, 0xd9, 0x48, 0x66, 0x1c, 0x72, 0xf4,
-0xc9, 0x77, 0xeb, 0xfa, 0x68, 0x51, 0x88, 0x05,
-0x60, 0xb7, 0x14, 0x6d, 0x2a, 0x2a, 0x4d, 0x0c,
-0x76, 0xd9, 0xe3, 0x2d, 0xff, 0x4f, 0x94, 0x7b,
-0xfd, 0x3f, 0x17, 0xe1, 0xbc, 0x51, 0xf7, 0x41,
-0x20, 0xf6, 0xe0, 0xd7, 0x94, 0x73, 0x1d, 0x0d,
-0xc6, 0x7f, 0x74, 0xc9, 0x27, 0x9d, 0xf1, 0xdc,
-0xda, 0x8f, 0x06, 0x27, 0x8d, 0xc3, 0x3f, 0x41,
-0xf2, 0x8f, 0x9d, 0x6b, 0x6b, 0xb8, 0xe3, 0xbe,
-0x2e, 0x5c, 0x48, 0xce, 0xfa, 0xb4, 0xfc, 0x3f,
-0xbc, 0x38, 0xe7, 0xbc, 0xff, 0x3e, 0xcc, 0x31,
-0x03, 0xfc, 0xa6, 0xaf, 0xb1, 0xe7, 0x11, 0x2a,
-0x04, 0xcc, 0xe6, 0x91, 0x16, 0x7b, 0xfc, 0x56,
-0x45, 0xf8, 0x73, 0xd2, 0x79, 0xfe, 0x1f, 0xa6,
-0x9b, 0xbe, 0x8d, 0x89, 0x28, 0x6c, 0x50, 0xa3,
-0xf1, 0xde, 0x7b, 0xd9, 0x59, 0xe7, 0xf7, 0xe5,
-0x05, 0x51, 0x0d, 0x87, 0x6d, 0x9e, 0xc0, 0xff,
-0xb3, 0xaf, 0x29, 0x0a, 0xdd, 0x50, 0x12, 0x2f,
-0xea, 0x0e, 0x67, 0x9c, 0xf5, 0xa3, 0xde, 0x21,
-0xa2, 0x1b, 0x3c, 0xcf, 0xff, 0x03, 0xd3, 0xfb,
-0x7c, 0x1c, 0xf5, 0xc3, 0xa1, 0x56, 0xba, 0x1a,
-0x3c, 0xfe, 0x67, 0x6e, 0xf9, 0x7f, 0x78, 0x20,
-0x6f, 0xbe, 0x8f, 0x9b, 0x4b, 0x92, 0x72, 0x3d,
-0x31, 0x2e, 0xf0, 0x45, 0x28, 0x77, 0xef, 0x9f,
-0xaa, 0xb4, 0xa3, 0x5d, 0xb9, 0xfe, 0x8d, 0x1b,
-0xcd, 0x59, 0xa6, 0x75, 0x05, 0x4a, 0xcc, 0xe6,
-0xcc, 0x3a, 0x07, 0xff, 0x14, 0x08, 0x6f, 0x4f,
-0xa6, 0xd8, 0x72, 0x1b, 0xba, 0xf8, 0xf9, 0x18,
-0xfe, 0xe1, 0xd7, 0xe1, 0x79, 0xfd, 0xfa, 0x4c,
-0x71, 0x2b, 0x02, 0x27, 0x27, 0x3e, 0xa5, 0xbd,
-0x03, 0xcf, 0xf0, 0x68, 0x9f, 0xba, 0x2f, 0x5c,
-0xeb, 0x89, 0x7f, 0xf1, 0x59, 0x83, 0x25, 0x67,
-0x59, 0x2d, 0xdc, 0x6f, 0x86, 0x53, 0x6a, 0xb7,
-0x1c, 0x73, 0xec, 0xd5, 0x00, 0xe2, 0x9f, 0x07,
-0x45, 0x74, 0x2f, 0x67, 0xbe, 0x2c, 0x40, 0xc2,
-0x6a, 0x78, 0x58, 0xdb, 0x61, 0x16, 0x69, 0xec,
-0x6e, 0x8f, 0xff, 0x67, 0x07, 0xa2, 0x9d, 0xa8,
-0x29, 0xa2, 0x87, 0xde, 0xf8, 0x97, 0x79, 0x6d,
-0x3a, 0xbc, 0x3a, 0xfe, 0x03, 0x98, 0x91, 0x28,
-0xea, 0x49, 0xb8, 0x7c, 0x24, 0x28, 0x3d, 0x2e,
-0xdc, 0x3e, 0xc5, 0xb1, 0xf2, 0xfc, 0xf5, 0x10,
-0x2b, 0xbf, 0x4d, 0xec, 0xf8, 0xc5, 0x01, 0xd9,
-0x30, 0xbc, 0xfe, 0x9f, 0x5f, 0x5b, 0xde, 0x8c,
-0x0b, 0xf8, 0xda, 0xe6, 0xf0, 0x7f, 0xaa, 0x0f,
-0xc1, 0x6b, 0xec, 0x06, 0x5e, 0x62, 0xca, 0x63,
-0x6e, 0x7c, 0x4d, 0xdb, 0x01, 0x4f, 0x48, 0xf8,
-0xd2, 0xed, 0x1c, 0xb7, 0xde, 0x76, 0x4d, 0xfa,
-0x25, 0xbc, 0xcc, 0xe7, 0x2d, 0x0f, 0x6e, 0x96,
-0x2b, 0x3d, 0xf1, 0xaf, 0x99, 0xb4, 0x1e, 0x06,
-0xd4, 0x83, 0xf2, 0x8e, 0x1c, 0xff, 0x4f, 0x9f,
-0xff, 0x02, 0x7b, 0xc3, 0xb8, 0x1f, 0xb6, 0xa5,
-0x42, 0x49, 0xe6, 0x8d, 0x7f, 0x7d, 0xca, 0x44,
-0xb5, 0x0c, 0xf8, 0xea, 0xcd, 0xdc, 0x78, 0x8d,
-0x25, 0x3c, 0x08, 0xfa, 0xa0, 0xcf, 0x07, 0x31,
-0xc7, 0xbf, 0x97, 0x91, 0xa6, 0xf2, 0x6f, 0x93,
-0xb7, 0x67, 0x0d, 0xfb, 0x6e, 0x0e, 0x30, 0x78,
-0x03, 0x85, 0x4b, 0xf0, 0xe0, 0xa6, 0xaa, 0xad,
-0xea, 0x40, 0x49, 0xd4, 0x59, 0x0f, 0xe4, 0xff,
-0x41, 0xeb, 0xd1, 0x57, 0x62, 0xb9, 0x7d, 0xb2,
-0x40, 0x48, 0x20, 0xa2, 0xd9, 0x89, 0xe3, 0xf0,
-0x53, 0x88, 0xdd, 0xeb, 0xd3, 0x3a, 0x5d, 0x52,
-0x9a, 0x31, 0xe5, 0xe0, 0x20, 0xaa, 0xa5, 0x1f,
-0xd5, 0x72, 0x30, 0xc7, 0xff, 0xf3, 0x54, 0xf0,
-0x8c, 0x3c, 0xa4, 0xfe, 0x08, 0x6e, 0xe2, 0xf7,
-0xf5, 0x79, 0xf0, 0x4f, 0x6f, 0xc1, 0x3b, 0x82,
-0xf6, 0x93, 0xbf, 0x3e, 0x1b, 0x4e, 0x6e, 0xd9,
-0x49, 0x11, 0x49, 0x35, 0xf6, 0x2e, 0x1a, 0x6a,
-0x8f, 0xff, 0xa7, 0x74, 0x8b, 0xa0, 0x0d, 0xa8,
-0x79, 0xf6, 0x04, 0x7f, 0xf1, 0xbb, 0x51, 0xd8,
-0x0d, 0x55, 0x09, 0xd5, 0x60, 0xef, 0x39, 0xef,
-0x6f, 0x07, 0x7c, 0x57, 0xd0, 0x7e, 0x22, 0xf9,
-0xfe, 0xae, 0x11, 0xf5, 0xab, 0x61, 0xd4, 0xc0,
-0xae, 0x1f, 0xc4, 0xaf, 0xce, 0xf5, 0xff, 0x1c,
-0x87, 0x4e, 0x66, 0xb1, 0x7d, 0x72, 0xf5, 0xa9,
-0x92, 0x3f, 0x7f, 0xb7, 0x12, 0x49, 0x21, 0xfe,
-0xcc, 0xf1, 0xff, 0xe0, 0x69, 0x98, 0x48, 0x3e,
-0xf2, 0x88, 0x92, 0x03, 0x84, 0x02, 0x29, 0x79,
-0x3f, 0x1c, 0x60, 0x33, 0x0e, 0x16, 0x0f, 0x77,
-0x9e, 0x77, 0xf1, 0x8f, 0xe5, 0xff, 0xd1, 0x82,
-0x5d, 0x62, 0x1b, 0x9a, 0xea, 0xe1, 0xff, 0x28,
-0xf2, 0xeb, 0xf1, 0x35, 0xc6, 0x74, 0xed, 0xbe,
-0x5c, 0xfc, 0x23, 0x36, 0xb5, 0x95, 0x1b, 0xbf,
-0x93, 0x7f, 0xde, 0x0f, 0x7e, 0x47, 0x5e, 0x69,
-0x9c, 0xe5, 0xf3, 0x06, 0x96, 0x6e, 0x92, 0xbd,
-0xf8, 0xe7, 0xaf, 0x68, 0x3f, 0x6d, 0x57, 0x93,
-0x89, 0xdc, 0xf8, 0xd7, 0x22, 0xff, 0x66, 0xf6,
-0x31, 0xbe, 0x73, 0x53, 0xb8, 0xad, 0x24, 0xc9,
-0xdc, 0xf7, 0x3d, 0x54, 0x30, 0x0d, 0xf6, 0xa3,
-0x51, 0xcd, 0xf7, 0x57, 0xd8, 0x8e, 0x20, 0x75,
-0x7a, 0xd3, 0xb5, 0x49, 0x9c, 0xb8, 0xbd, 0xde,
-0x5c, 0xfe, 0x0f, 0xcb, 0xf5, 0x87, 0xb4, 0xfa,
-0xcb, 0x16, 0xe3, 0x57, 0xba, 0x6e, 0xf8, 0x42,
-0x1e, 0xff, 0x8f, 0x85, 0x7f, 0xea, 0x2b, 0x27,
-0xe7, 0xec, 0xbf, 0xe4, 0xff, 0xb9, 0x3f, 0x55,
-0x4e, 0x5f, 0xcd, 0x13, 0xf8, 0xc7, 0x39, 0x7f,
-0xf5, 0x4c, 0xe9, 0x87, 0xb3, 0xd2, 0x44, 0xf1,
-0xbe, 0x2c, 0xff, 0x07, 0xf7, 0xf7, 0x41, 0xf9,
-0x2d, 0xc7, 0x1f, 0xd2, 0x5d, 0x70, 0x46, 0x22,
-0xda, 0x0c, 0xf1, 0x7f, 0xbc, 0xe3, 0x17, 0xb4,
-0x06, 0x4e, 0xc8, 0x7b, 0xe0, 0x62, 0xe0, 0x06,
-0xfa, 0xea, 0x39, 0xc9, 0x7e, 0x1f, 0xc9, 0xff,
-0x33, 0xc4, 0xa2, 0x3e, 0x95, 0xf0, 0xcf, 0x98,
-0xeb, 0xff, 0x29, 0xa1, 0x2b, 0x3a, 0xec, 0x6b,
-0x9a, 0xce, 0xd1, 0x90, 0x2e, 0x2e, 0xf4, 0xf8,
-0x7f, 0x54, 0xa2, 0xfd, 0xa8, 0x79, 0xf3, 0x8d,
-0xb4, 0xa9, 0x15, 0x61, 0x82, 0x46, 0x3a, 0xe2,
-0xbd, 0xc5, 0x27, 0x24, 0xc7, 0x9f, 0x56, 0xb9,
-0x5d, 0x79, 0x88, 0xc6, 0x93, 0x1a, 0x1f, 0xf5,
-0xfa, 0x7f, 0x22, 0x88, 0x7f, 0xb4, 0xfd, 0x30,
-0xbd, 0x05, 0xf5, 0xf9, 0x05, 0xe7, 0x79, 0xb6,
-0x55, 0x12, 0x4d, 0xa8, 0xc1, 0x10, 0xfe, 0xbd,
-0xfd, 0x9e, 0xe7, 0xc7, 0x3b, 0xc8, 0x8f, 0xc0,
-0x59, 0x16, 0x5b, 0x24, 0x6f, 0xf6, 0xe0, 0xd5,
-0x55, 0x56, 0xfc, 0xeb, 0xf0, 0xac, 0x71, 0xfe,
-0x1f, 0x14, 0x1e, 0xe1, 0x67, 0xe1, 0xc0, 0xa2,
-0x92, 0x4d, 0x9d, 0x27, 0x5c, 0x3e, 0x4f, 0x36,
-0xfe, 0x15, 0x48, 0xe4, 0xfb, 0x1b, 0xf1, 0x17,
-0xd1, 0xcd, 0xb1, 0xb2, 0x3a, 0xba, 0xe2, 0xbe,
-0x5f, 0x91, 0x82, 0x90, 0x21, 0xa2, 0x5d, 0xa7,
-0x09, 0xf6, 0x28, 0x9e, 0x40, 0x58, 0x28, 0x5e,
-0x78, 0x13, 0xcc, 0x4b, 0x56, 0x27, 0xfd, 0x99,
-0x1c, 0xfc, 0x63, 0x08, 0xb6, 0x8f, 0x3a, 0x3f,
-0xef, 0x7d, 0xe9, 0xeb, 0x8e, 0x6c, 0x2b, 0x81,
-0x07, 0x0d, 0x3d, 0x21, 0xf0, 0x8f, 0xad, 0x9f,
-0xad, 0xa8, 0x29, 0x7c, 0x6d, 0x93, 0xea, 0x57,
-0xf2, 0xfc, 0x3f, 0x03, 0xbe, 0x0a, 0x36, 0x19,
-0xff, 0xf0, 0x4e, 0xe6, 0x6f, 0xa9, 0x33, 0xdd,
-0xf8, 0x8e, 0x5a, 0x46, 0xb0, 0x67, 0x38, 0xba,
-0x4a, 0xce, 0xf1, 0xff, 0x34, 0x8e, 0xa8, 0x6b,
-0x7c, 0x57, 0xc1, 0x0b, 0x7c, 0x76, 0xaa, 0x78,
-0x95, 0x7c, 0xd8, 0xe3, 0xff, 0x49, 0x91, 0xf5,
-0xb8, 0x7a, 0x9c, 0xff, 0xe7, 0xb9, 0x5f, 0xa5,
-0xf0, 0x87, 0xf8, 0x2a, 0x1c, 0xe2, 0x62, 0xbe,
-0xb6, 0xfe, 0xcd, 0x82, 0xf7, 0x08, 0xff, 0xe8,
-0x81, 0xe5, 0x72, 0x43, 0x9e, 0xff, 0x67, 0x08,
-0xff, 0xa1, 0xe7, 0xf0, 0xab, 0xe7, 0x5f, 0xac,
-0x1e, 0xd2, 0xed, 0xf1, 0xbd, 0xa5, 0xdf, 0xa2,
-0xa7, 0xed, 0x2f, 0xce, 0x86, 0xbd, 0x3c, 0xfe,
-0x9c, 0x65, 0xec, 0xbf, 0x60, 0x9d, 0xf4, 0x45,
-0xcd, 0x7f, 0x07, 0x7b, 0xcb, 0x39, 0x7f, 0x69,
-0xb0, 0x59, 0xe0, 0x1f, 0xb4, 0x57, 0x79, 0xe3,
-0x8b, 0x88, 0x11, 0xb4, 0x4e, 0x9b, 0xa9, 0xf9,
-0xe2, 0xd3, 0xbd, 0xfc, 0x9f, 0xfe, 0x2c, 0x9b,
-0x85, 0xd0, 0x8e, 0xbb, 0xdf, 0xa1, 0xfd, 0xd1,
-0xca, 0xfa, 0xe9, 0x60, 0x5b, 0x73, 0x6d, 0x21,
-0x1b, 0x74, 0xf4, 0x3f, 0x22, 0xf8, 0x1e, 0xc2,
-0x7e, 0x46, 0x21, 0xc7, 0xff, 0x33, 0x93, 0x84,
-0x7b, 0x21, 0x9a, 0x2e, 0xb9, 0x17, 0xdf, 0x17,
-0xfb, 0xfd, 0x4a, 0xe2, 0xa1, 0x49, 0xf0, 0xa3,
-0xf6, 0x8c, 0xdb, 0x8f, 0x36, 0xcb, 0xa7, 0xf9,
-0x39, 0xa3, 0xa1, 0x14, 0xf5, 0x33, 0xe2, 0xe8,
-0x67, 0x50, 0xbb, 0x64, 0xb1, 0x7d, 0x2e, 0xe4,
-0xe2, 0x01, 0x1c, 0x3f, 0x26, 0x9f, 0x81, 0x4b,
-0xc9, 0x46, 0xbe, 0xc4, 0x2c, 0x1f, 0x70, 0xf0,
-0x4f, 0x87, 0xf2, 0xd7, 0x06, 0x6e, 0x5b, 0x47,
-0xd4, 0x83, 0x79, 0xfc, 0x13, 0xd3, 0xbf, 0x87,
-0xfd, 0x02, 0x0e, 0x98, 0xb5, 0x19, 0xb5, 0x8b,
-0x8d, 0x78, 0xfc, 0x3f, 0x82, 0xdd, 0x01, 0x6a,
-0x3a, 0x91, 0x3f, 0xfe, 0xdf, 0xf1, 0x60, 0x78,
-0x40, 0xad, 0x45, 0x3c, 0x80, 0xf8, 0xc7, 0xe5,
-0xff, 0x80, 0xc3, 0xc6, 0xcc, 0xdb, 0xef, 0xe8,
-0xc5, 0xdc, 0x05, 0xab, 0x41, 0x85, 0xb2, 0xc3,
-0x8e, 0xfd, 0xe1, 0xc5, 0xab, 0x94, 0xf3, 0xac,
-0x7e, 0xdc, 0xfe, 0xd2, 0x88, 0xff, 0x50, 0x75,
-0xc6, 0x32, 0xd4, 0x5c, 0x36, 0x75, 0xc7, 0xff,
-0x33, 0x65, 0x54, 0x9a, 0x20, 0xfe, 0xc5, 0x50,
-0xc8, 0x20, 0x8c, 0xb9, 0x84, 0x07, 0x09, 0xbf,
-0x29, 0x8f, 0x14, 0xb8, 0xf8, 0x47, 0x84, 0xbd,
-0xda, 0x83, 0x4f, 0x21, 0x9a, 0x7a, 0x9e, 0xcf,
-0xc9, 0x90, 0xbf, 0x88, 0x3f, 0xcf, 0x1b, 0x87,
-0x03, 0xef, 0x75, 0xbe, 0xa7, 0xe1, 0x57, 0x55,
-0xc5, 0x03, 0xd5, 0xa3, 0x8e, 0xbd, 0x22, 0xfc,
-0xb3, 0x81, 0xd7, 0x9a, 0x6a, 0x27, 0xa2, 0x9d,
-0x0d, 0x7a, 0x38, 0x83, 0xf3, 0x5d, 0x68, 0xfc,
-0x00, 0xaf, 0xf8, 0x2e, 0xb0, 0x53, 0xf4, 0x95,
-0x1e, 0xe8, 0x66, 0xa3, 0x8a, 0x8b, 0x7f, 0xfa,
-0x71, 0x13, 0xaf, 0x1d, 0x90, 0x58, 0x59, 0x40,
-0x7a, 0x58, 0xd5, 0x89, 0xbd, 0xbc, 0x04, 0x3a,
-0xd1, 0x9e, 0xb4, 0xc6, 0x0a, 0x33, 0xe4, 0x18,
-0x84, 0x87, 0x34, 0xf6, 0x9e, 0xb3, 0xbf, 0x9b,
-0x95, 0xdb, 0x8d, 0x0d, 0xf0, 0x25, 0x33, 0x94,
-0x42, 0xfc, 0xf3, 0x03, 0x08, 0x9b, 0x88, 0xaf,
-0x48, 0xa8, 0x35, 0x10, 0x91, 0xe2, 0xfd, 0x59,
-0x6d, 0xc5, 0xf2, 0x54, 0x59, 0xc6, 0x8d, 0xff,
-0x96, 0x9e, 0xd6, 0x5f, 0x86, 0xe8, 0x9f, 0x16,
-0x8f, 0x34, 0x47, 0x11, 0xed, 0xd4, 0x99, 0xc1,
-0x6e, 0x79, 0x35, 0xed, 0xc8, 0xc3, 0xa8, 0xb1,
-0xc3, 0x08, 0x8d, 0xea, 0xf5, 0x29, 0xdf, 0x97,
-0x86, 0x1d, 0xfb, 0x90, 0x91, 0x7e, 0x88, 0x6a,
-0xf9, 0xa8, 0x51, 0x7c, 0xa7, 0x7c, 0x9c, 0xbd,
-0x96, 0xab, 0xa8, 0xce, 0x51, 0x85, 0xf0, 0xe1,
-0xd2, 0x77, 0xe5, 0x21, 0xc3, 0xbe, 0xbd, 0xa1,
-0xfd, 0x47, 0x13, 0xde, 0xad, 0x0d, 0x17, 0x55,
-0xd6, 0xff, 0xd3, 0x2b, 0x6f, 0x24, 0xc4, 0x65,
-0x08, 0x9a, 0xd9, 0x98, 0xbe, 0xe0, 0xa1, 0xe0,
-0xc1, 0xf2, 0x17, 0x3c, 0xf8, 0x27, 0x00, 0x1b,
-0xa4, 0xda, 0x25, 0xf2, 0xa3, 0x88, 0x1f, 0x36,
-0x94, 0xe2, 0x32, 0x98, 0xcf, 0xea, 0x29, 0x90,
-0x67, 0xf8, 0x47, 0xf1, 0xf9, 0x9e, 0x30, 0x58,
-0xa8, 0x68, 0x27, 0x7b, 0xcf, 0xe1, 0x07, 0x66,
-0x0a, 0x96, 0x56, 0xa1, 0x36, 0x06, 0x65, 0x89,
-0xbc, 0xcd, 0x06, 0x2e, 0x83, 0x79, 0x8c, 0xdc,
-0x3e, 0xf8, 0x87, 0xf5, 0xec, 0x30, 0x42, 0x23,
-0xbd, 0xcd, 0x3f, 0x97, 0x8d, 0x39, 0xeb, 0x67,
-0x54, 0x9a, 0x4a, 0x78, 0x20, 0x75, 0x2b, 0xe1,
-0x1f, 0x02, 0x42, 0x78, 0xff, 0x12, 0x8b, 0x18,
-0xfc, 0x8f, 0x02, 0x18, 0x6c, 0x9d, 0xf6, 0xc9,
-0xe5, 0xe1, 0x0b, 0xba, 0x7d, 0x7f, 0xc2, 0x3f,
-0x4f, 0x69, 0xf5, 0x03, 0x41, 0xe6, 0xe2, 0x9f,
-0x00, 0xc2, 0x1e, 0x12, 0x3a, 0x4d, 0xe3, 0xfd,
-0xd2, 0xf9, 0x06, 0x5e, 0x39, 0x91, 0xcb, 0x7f,
-0x2e, 0x68, 0x04, 0x52, 0x8b, 0xfe, 0x6b, 0xa1,
-0x16, 0xbf, 0xc3, 0x8f, 0xba, 0x00, 0xbf, 0x55,
-0x66, 0x01, 0x1e, 0x25, 0x06, 0x99, 0xad, 0xff,
-0xde, 0xca, 0x5f, 0xe9, 0xc4, 0xf6, 0xc1, 0xf3,
-0x7e, 0xd4, 0xd2, 0x4f, 0x4a, 0xae, 0x1d, 0x41,
-0x21, 0x13, 0xa8, 0xeb, 0x24, 0x53, 0x56, 0x1f,
-0x0f, 0xc4, 0xaa, 0x5d, 0xfe, 0x33, 0xe2, 0x1f,
-0xbe, 0x17, 0x8a, 0x73, 0xec, 0x49, 0x16, 0x11,
-0xfd, 0x3d, 0x43, 0xd3, 0x2a, 0x09, 0x53, 0xb3,
-0x6b, 0xba, 0x7d, 0x7f, 0x0e, 0xff, 0x66, 0x10,
-0xdb, 0xa7, 0x68, 0x32, 0xfb, 0x6e, 0xd7, 0xf7,
-0xf8, 0x17, 0x33, 0xfe, 0x88, 0xaf, 0x04, 0xbe,
-0xc7, 0x67, 0x65, 0x7c, 0x6b, 0x9a, 0x36, 0xc1,
-0x1e, 0x12, 0xc6, 0xd0, 0x5a, 0xd9, 0xfa, 0x6f,
-0x55, 0x9e, 0x12, 0x7c, 0xaa, 0x90, 0x45, 0x63,
-0x40, 0x7d, 0xa6, 0x13, 0x1b, 0x69, 0xbd, 0xf5,
-0x45, 0x62, 0x4d, 0xc5, 0xca, 0x6e, 0x58, 0x7d,
-0x62, 0xcd, 0x3c, 0xb6, 0xc9, 0xf5, 0xff, 0x14,
-0x3c, 0xa1, 0x9e, 0x63, 0x0b, 0xbb, 0x8b, 0x4f,
-0xfb, 0x7b, 0xad, 0xf8, 0xd7, 0xb0, 0x1c, 0x11,
-0x42, 0x49, 0x4a, 0x3e, 0xc0, 0x2f, 0xbd, 0xd4,
-0x98, 0x2a, 0xf9, 0x92, 0x3c, 0xc3, 0xcb, 0xff,
-0xe1, 0x63, 0x93, 0xf0, 0x3c, 0x0e, 0x1d, 0x59,
-0x62, 0x4c, 0x87, 0x67, 0x63, 0xe2, 0x63, 0x85,
-0x0d, 0x15, 0xc1, 0xae, 0x66, 0x97, 0xcf, 0xac,
-0xc2, 0x1b, 0x16, 0xc9, 0xe7, 0x3b, 0xb2, 0xc2,
-0x8e, 0xa6, 0xc4, 0x36, 0x57, 0x63, 0xe3, 0x9f,
-0xe9, 0x06, 0xf1, 0x9f, 0x8b, 0x7b, 0xe4, 0x84,
-0xcb, 0xff, 0xa9, 0xf8, 0x22, 0xa1, 0x97, 0x36,
-0x5f, 0x0f, 0xab, 0x51, 0xd6, 0x73, 0x5c, 0x36,
-0x3d, 0x72, 0x96, 0xcf, 0x13, 0x62, 0x35, 0xb0,
-0x33, 0xc4, 0x5a, 0x36, 0xfc, 0x6b, 0x38, 0xe2,
-0x8d, 0x7f, 0xe9, 0xfb, 0x85, 0xbf, 0x34, 0x51,
-0x23, 0x09, 0xbe, 0xee, 0x26, 0x97, 0xff, 0xb3,
-0x03, 0x05, 0x76, 0x7b, 0xd1, 0xe6, 0xa6, 0xfb,
-0xec, 0x9f, 0x97, 0xf0, 0x4f, 0x92, 0xf8, 0x87,
-0xc4, 0xfe, 0x15, 0x7c, 0x60, 0x7f, 0x19, 0x6b,
-0xe1, 0x02, 0x18, 0xd4, 0x35, 0x51, 0xa8, 0x1a,
-0xf1, 0x80, 0x56, 0xc6, 0x4a, 0xed, 0xf1, 0x16,
-0xfe, 0x89, 0x6e, 0x0e, 0xac, 0xf5, 0xeb, 0x30,
-0xd0, 0x86, 0xd3, 0x5c, 0x2b, 0xdf, 0x49, 0xc4,
-0xef, 0x0a, 0x34, 0x24, 0x29, 0x85, 0x1c, 0x41,
-0x05, 0x5c, 0xfe, 0xa1, 0xc3, 0x3f, 0xec, 0x29,
-0x1e, 0x36, 0xce, 0x4a, 0x8d, 0x46, 0xf0, 0x27,
-0xf2, 0xb0, 0x21, 0xf0, 0x00, 0xb9, 0x7d, 0x88,
-0xcf, 0x1c, 0x7c, 0x80, 0x7d, 0x05, 0xfe, 0x49,
-0xb8, 0xa6, 0xe5, 0xf7, 0x9c, 0xf5, 0xd3, 0x53,
-0x70, 0x46, 0x3f, 0xca, 0xf0, 0x10, 0x3a, 0xd8,
-0xb7, 0x32, 0xfc, 0x2c, 0x8d, 0x1f, 0xec, 0x5c,
-0xa9, 0x13, 0x22, 0x2a, 0x19, 0xec, 0x3c, 0x53,
-0xf6, 0x06, 0x8e, 0x5f, 0x3a, 0xd8, 0x7c, 0x32,
-0x87, 0xff, 0x3c, 0x24, 0x35, 0x00, 0x1a, 0xe1,
-0xd7, 0x6d, 0xfe, 0xb3, 0x0e, 0xbd, 0x28, 0x08,
-0x44, 0xd4, 0x8d, 0x56, 0xe9, 0x56, 0xce, 0x5e,
-0xcd, 0x89, 0x7f, 0xe1, 0x34, 0x9b, 0x7c, 0x5a,
-0xa2, 0x05, 0x3a, 0x54, 0xe2, 0x3f, 0x27, 0x5a,
-0x52, 0x78, 0xe5, 0x16, 0x9f, 0xc6, 0x8e, 0xd0,
-0x57, 0x71, 0x7f, 0x2e, 0xff, 0x87, 0x94, 0x16,
-0xbd, 0xd9, 0xb7, 0x09, 0xb2, 0xfc, 0xe7, 0x9d,
-0xa8, 0xf6, 0x47, 0x21, 0x20, 0x10, 0x91, 0xb1,
-0xbe, 0xa0, 0x36, 0xbe, 0xe1, 0x01, 0xf0, 0xf2,
-0x7f, 0x7e, 0x49, 0xb4, 0xf6, 0xbb, 0x6b, 0x93,
-0xf1, 0x95, 0x02, 0x08, 0x89, 0xf8, 0xe6, 0x51,
-0x8b, 0xff, 0xfc, 0x34, 0xbc, 0x39, 0x84, 0xa6,
-0xa3, 0x07, 0x11, 0xb5, 0xbd, 0x3e, 0x57, 0x49,
-0x5d, 0xfc, 0x45, 0x44, 0x47, 0xf8, 0xa3, 0xf7,
-0x67, 0x61, 0x4f, 0x67, 0xbf, 0x85, 0x0f, 0x93,
-0xcd, 0x16, 0x10, 0x9a, 0xd4, 0xe3, 0xc1, 0xcf,
-0x11, 0x6d, 0x2b, 0xb7, 0xd8, 0x65, 0xcd, 0x64,
-0x6d, 0x2c, 0xfe, 0x8f, 0x32, 0x56, 0x20, 0x60,
-0xe7, 0x0a, 0x18, 0x63, 0x75, 0x2c, 0xb8, 0xce,
-0xeb, 0xff, 0x29, 0x88, 0xc0, 0x02, 0xb8, 0x69,
-0xf3, 0xa2, 0xd3, 0x89, 0x11, 0x38, 0xd4, 0x8d,
-0xf8, 0x27, 0x93, 0xe5, 0xff, 0xf8, 0xdf, 0xe0,
-0x0b, 0xf8, 0xa1, 0x21, 0x39, 0xed, 0x1f, 0xf6,
-0xf2, 0x9f, 0x25, 0xa3, 0x62, 0x0e, 0x44, 0x33,
-0xfe, 0x58, 0x12, 0xb7, 0x21, 0x33, 0xda, 0xe7,
-0xef, 0xf5, 0xe1, 0x8b, 0xa3, 0xd4, 0x98, 0xb7,
-0xce, 0x37, 0x96, 0x68, 0x78, 0xc5, 0xbc, 0x76,
-0x76, 0xf8, 0x98, 0xb3, 0xbf, 0xa4, 0xf0, 0x78,
-0xbe, 0x17, 0xae, 0x03, 0xbf, 0x91, 0x8d, 0x07,
-0xc9, 0x5f, 0x61, 0x93, 0xe9, 0x8d, 0xee, 0xf7,
-0xab, 0x6c, 0x72, 0x45, 0x03, 0x9f, 0x76, 0xd8,
-0x6f, 0xb0, 0x01, 0xc3, 0xb0, 0xed, 0x83, 0xcd,
-0xff, 0x69, 0x95, 0x5f, 0xd5, 0x48, 0x98, 0x34,
-0xe2, 0xff, 0x37, 0xe3, 0xb7, 0xfc, 0xfa, 0x4c,
-0x70, 0xb9, 0xfc, 0x39, 0xf8, 0x87, 0x8e, 0x85,
-0x99, 0xa5, 0xcb, 0xcb, 0x8f, 0x85, 0x9d, 0xf5,
-0x39, 0xa5, 0x97, 0xc2, 0x1c, 0x50, 0x4c, 0x7c,
-0xd7, 0xcb, 0xd9, 0xfd, 0x8e, 0x88, 0xbe, 0xc7,
-0x70, 0xbe, 0xb4, 0xf5, 0x1f, 0x20, 0x0d, 0x1f,
-0x76, 0xd6, 0x8f, 0x51, 0xf0, 0x12, 0xfc, 0x9a,
-0x60, 0xcf, 0x88, 0xfc, 0x75, 0xe5, 0x12, 0x09,
-0x6b, 0xaa, 0xf1, 0xd8, 0x4e, 0xf8, 0x67, 0x00,
-0x81, 0xd0, 0x6f, 0xbb, 0xbe, 0xbc, 0xf2, 0xfe,
-0xa3, 0xb2, 0xe6, 0xf0, 0x0f, 0x7b, 0x4b, 0x7b,
-0xe0, 0x9e, 0xd2, 0x99, 0x40, 0x6c, 0x1f, 0xe3,
-0x71, 0x61, 0x7f, 0xc2, 0x93, 0xe1, 0x1e, 0x36,
-0xd3, 0x2c, 0x36, 0xca, 0x5e, 0x80, 0xdf, 0xaa,
-0x55, 0x37, 0xfb, 0x6f, 0x66, 0x1f, 0x77, 0xfc,
-0x4b, 0x1a, 0x62, 0xeb, 0xef, 0xd1, 0x30, 0xf2,
-0xf6, 0x88, 0xf1, 0xef, 0xa2, 0x20, 0xec, 0x55,
-0x1b, 0x1b, 0x32, 0x9e, 0x84, 0x69, 0xca, 0xad,
-0x7d, 0xec, 0x0b, 0x29, 0x5b, 0xff, 0xf1, 0x0a,
-0x53, 0xef, 0x84, 0x5a, 0xdd, 0xff, 0x1f, 0x6c,
-0x89, 0x72, 0x40, 0xec, 0xef, 0xeb, 0xa2, 0xf0,
-0x30, 0xbe, 0xa1, 0xc2, 0xad, 0xb1, 0x9b, 0xd7,
-0xb4, 0xf9, 0x8b, 0xd9, 0x9f, 0x75, 0xb9, 0xfc,
-0xe7, 0x87, 0xc9, 0x6c, 0x1e, 0x0e, 0x6e, 0x97,
-0x2c, 0xa2, 0x4b, 0x70, 0x9f, 0xfc, 0x35, 0xdc,
-0x2f, 0x1a, 0xcd, 0x40, 0x8a, 0xfd, 0x92, 0x9f,
-0x1d, 0x7c, 0xfc, 0xb4, 0x7f, 0x8b, 0xfc, 0xb7,
-0x1e, 0xfe, 0x4f, 0xc6, 0xc0, 0x61, 0x65, 0xb2,
-0x60, 0xfb, 0x10, 0xdb, 0x79, 0x4b, 0x79, 0x96,
-0xf8, 0x01, 0xf2, 0x1b, 0x30, 0x22, 0x2d, 0x30,
-0xfd, 0xc9, 0xce, 0xed, 0x1e, 0xfe, 0xf3, 0x20,
-0xe0, 0x36, 0x97, 0x09, 0x24, 0x9f, 0xaa, 0x27,
-0xda, 0x8f, 0x19, 0x6c, 0xc7, 0x8d, 0x89, 0x88,
-0xd0, 0xc5, 0x2f, 0xca, 0x73, 0xf5, 0x5f, 0x6b,
-0x8d, 0xe4, 0x8f, 0xcd, 0x38, 0xfc, 0x1f, 0xae,
-0x7c, 0x1e, 0x77, 0xdb, 0x59, 0x11, 0xdf, 0x48,
-0x22, 0x0a, 0x07, 0xfa, 0x67, 0x98, 0xfe, 0x83,
-0x2c, 0xaa, 0x10, 0x11, 0x45, 0xed, 0x66, 0x61,
-0xfe, 0x04, 0xaf, 0x9d, 0xed, 0xdf, 0xc2, 0x46,
-0x3d, 0xf8, 0x47, 0x37, 0xfe, 0x05, 0x6a, 0xfb,
-0xd5, 0x7d, 0x64, 0x6d, 0xcc, 0xb0, 0xe9, 0x23,
-0x81, 0xc6, 0x17, 0xa5, 0xd8, 0x76, 0x8e, 0x40,
-0x68, 0x85, 0xbf, 0xdb, 0x73, 0x5e, 0xa3, 0xf3,
-0x17, 0x85, 0x39, 0x7c, 0xe0, 0x0b, 0x40, 0xda,
-0x72, 0xd4, 0x07, 0xc8, 0x3e, 0x9b, 0xaa, 0x8a,
-0xe7, 0x11, 0x32, 0xdd, 0x32, 0x4c, 0x77, 0xf1,
-0x39, 0x47, 0xfb, 0xf3, 0xb2, 0x05, 0x72, 0x04,
-0xd1, 0x82, 0xd6, 0xc3, 0x16, 0x78, 0x46, 0x5a,
-0x68, 0x7e, 0x2a, 0x39, 0x69, 0x3b, 0xa9, 0x4e,
-0x18, 0x5e, 0xdd, 0xe5, 0x3f, 0x9f, 0xb1, 0xf2,
-0x77, 0x06, 0x05, 0xbb, 0x49, 0xb0, 0x9d, 0x1d,
-0xfe, 0x4f, 0xbb, 0xf0, 0xff, 0xdc, 0x6f, 0x94,
-0xbb, 0x7c, 0x3c, 0x8b, 0xff, 0xdc, 0x98, 0x72,
-0x60, 0xb3, 0x10, 0x5e, 0xe9, 0x9a, 0xad, 0x07,
-0xce, 0xca, 0xef, 0xc1, 0x7f, 0xf3, 0x39, 0x55,
-0xf7, 0xaf, 0x91, 0x47, 0xdd, 0xf8, 0x17, 0x90,
-0xb7, 0xa7, 0x24, 0xe5, 0xdf, 0x57, 0xf6, 0x0e,
-0xbc, 0x6d, 0xfb, 0x7f, 0xe6, 0xf3, 0x70, 0x6b,
-0x60, 0x97, 0xc0, 0x3f, 0x33, 0xe2, 0x9f, 0xec,
-0x61, 0x2e, 0xff, 0xca, 0x8a, 0x7f, 0x91, 0xb7,
-0x67, 0xb1, 0x07, 0xef, 0xf5, 0x80, 0x7e, 0x38,
-0x14, 0x2b, 0xcb, 0x68, 0x0f, 0x42, 0x04, 0xae,
-0xd5, 0xd8, 0x5b, 0x2e, 0xbf, 0xa8, 0x74, 0x87,
-0xf6, 0x84, 0xe2, 0x85, 0x91, 0x69, 0xb6, 0x5a,
-0xd9, 0xdf, 0xa6, 0x0f, 0x5d, 0x97, 0x06, 0xbc,
-0xbf, 0x32, 0x23, 0xfe, 0x50, 0xd2, 0xc3, 0x7f,
-0x86, 0x09, 0xf9, 0xb7, 0x2f, 0x9a, 0xbb, 0x62,
-0x81, 0xf4, 0x9c, 0x01, 0xfe, 0x72, 0xeb, 0x82,
-0x3a, 0xff, 0xfe, 0x66, 0x17, 0x9f, 0x67, 0x4a,
-0x0f, 0xda, 0x6c, 0x96, 0x0b, 0xf0, 0x6b, 0x1b,
-0xff, 0x5c, 0xe4, 0x8d, 0xf1, 0x12, 0x0a, 0x84,
-0x5d, 0xbe, 0x0e, 0xed, 0xed, 0xd8, 0x53, 0x63,
-0x0e, 0x1e, 0xb6, 0xf8, 0xcf, 0xf3, 0x68, 0x59,
-0x7a, 0xee, 0x3f, 0x62, 0x08, 0xc4, 0x7e, 0xa7,
-0x7e, 0x7e, 0xf1, 0x02, 0xf0, 0x27, 0xe5, 0x1c,
-0xfe, 0xb3, 0x42, 0xde, 0x3f, 0xff, 0x63, 0x8c,
-0x96, 0x65, 0x76, 0x22, 0x73, 0x50, 0x28, 0x4e,
-0xe3, 0xfa, 0x49, 0x18, 0x65, 0x71, 0x5c, 0x3f,
-0x75, 0xce, 0xef, 0x6b, 0x0a, 0x3e, 0x58, 0x94,
-0xe7, 0xba, 0x7d, 0xb6, 0x22, 0xa2, 0xbe, 0x9a,
-0x02, 0x85, 0x0f, 0x4b, 0x51, 0x28, 0x9f, 0xef,
-0xbc, 0xbd, 0x76, 0x3c, 0xe8, 0x8b, 0x29, 0xe1,
-0x06, 0x71, 0xf2, 0xa1, 0x1e, 0x13, 0xb4, 0xe7,
-0xc2, 0xc7, 0xe1, 0x7e, 0x5e, 0x15, 0xef, 0x1c,
-0x62, 0xad, 0xce, 0xf8, 0xd6, 0x50, 0xc0, 0x70,
-0xdc, 0x3e, 0x16, 0xff, 0x99, 0x89, 0x40, 0x98,
-0x51, 0x9c, 0x96, 0x4d, 0xfe, 0x0b, 0xf8, 0x5a,
-0xe1, 0xd2, 0x58, 0xa7, 0x87, 0xff, 0x3c, 0xf9,
-0xa0, 0x76, 0x19, 0x6e, 0xb0, 0xd4, 0xe2, 0xc5,
-0x87, 0xb8, 0x6d, 0x4d, 0xba, 0x03, 0x7e, 0x25,
-0x89, 0xf7, 0x25, 0xe9, 0xc6, 0xbf, 0x04, 0xff,
-0xbc, 0xde, 0x88, 0xe6, 0xe8, 0xff, 0x2c, 0x5f,
-0x60, 0xf8, 0xd3, 0x68, 0xf6, 0xc5, 0x51, 0x25,
-0x3d, 0xe9, 0xb0, 0x9b, 0x3f, 0x25, 0x6d, 0x71,
-0xb2, 0x2d, 0xdc, 0xf3, 0xd4, 0x63, 0x50, 0x65,
-0xa0, 0x30, 0x64, 0xbb, 0x9a, 0x5f, 0x72, 0xfc,
-0x15, 0xba, 0xe0, 0xff, 0xcc, 0xca, 0xe4, 0xf2,
-0x9d, 0x9e, 0xe4, 0xd7, 0xc5, 0xfd, 0x6b, 0xc2,
-0x27, 0x74, 0xbc, 0xa2, 0x6f, 0xa0, 0xf8, 0x97,
-0xfd, 0x59, 0xa5, 0x08, 0x35, 0x66, 0xf2, 0xce,
-0x17, 0x6d, 0x08, 0x23, 0x85, 0xf0, 0x00, 0x5e,
-0x99, 0xdf, 0x74, 0xc2, 0xe5, 0x3f, 0x2b, 0x82,
-0xff, 0xdc, 0x1d, 0xf0, 0xc4, 0xbf, 0x46, 0xf0,
-0x58, 0x74, 0x53, 0x57, 0x30, 0x55, 0x7e, 0x96,
-0xde, 0xa0, 0x24, 0x22, 0xde, 0x73, 0x2e, 0xbe,
-0x82, 0xd4, 0x95, 0xf8, 0x3f, 0xf4, 0x1a, 0xae,
-0x89, 0x0b, 0x44, 0xe4, 0x9e, 0xdf, 0x55, 0x10,
-0xe7, 0x7d, 0x23, 0xda, 0x33, 0xc1, 0x79, 0x7f,
-0x25, 0xdf, 0x0f, 0x07, 0x6e, 0x41, 0xc1, 0xc3,
-0xff, 0xa9, 0xa8, 0x11, 0xde, 0x06, 0xb5, 0x27,
-0x31, 0xce, 0x9f, 0x53, 0xf7, 0x31, 0xbe, 0x33,
-0x1e, 0x8e, 0x6f, 0x48, 0x7a, 0xfc, 0x09, 0x59,
-0xfe, 0xb3, 0xa1, 0x3e, 0x90, 0xeb, 0xff, 0x99,
-0x41, 0x8e, 0x8e, 0x95, 0xd2, 0x7e, 0xb6, 0x62,
-0x91, 0x3f, 0x99, 0x38, 0xe2, 0x8c, 0xb7, 0xfc,
-0x3f, 0xb5, 0xe3, 0xfc, 0x21, 0xd1, 0x45, 0x7e,
-0xad, 0x89, 0xbe, 0x8a, 0x1b, 0xff, 0x92, 0xc3,
-0x7f, 0x9e, 0x62, 0xc1, 0xbc, 0x40, 0xde, 0x7c,
-0x17, 0x54, 0xf8, 0xd7, 0xca, 0x71, 0xda, 0x7f,
-0xf1, 0x4a, 0xf3, 0xa9, 0x42, 0xdb, 0xfe, 0xec,
-0x2b, 0xce, 0xe7, 0x3f, 0x93, 0xf0, 0x1b, 0x71,
-0xa5, 0x9c, 0x4c, 0xd3, 0x8f, 0x0c, 0xff, 0xa0,
-0x7c, 0x0a, 0xff, 0xd4, 0xfa, 0xcc, 0xa7, 0x78,
-0x99, 0x82, 0xfa, 0xc9, 0xf3, 0xff, 0x20, 0x6c,
-0xd8, 0x5c, 0x7e, 0x86, 0x3d, 0x0d, 0xb3, 0xcd,
-0xe0, 0x60, 0xb3, 0xcf, 0x59, 0x3f, 0x21, 0x48,
-0x15, 0x50, 0x18, 0x4e, 0xf5, 0xf0, 0x9f, 0x85,
-0xa0, 0xfa, 0x89, 0xff, 0xd3, 0x0d, 0x61, 0xbc,
-0x22, 0x2f, 0xce, 0x8b, 0x7f, 0xd1, 0x7c, 0x0b,
-0xf3, 0x89, 0xd0, 0x16, 0xfe, 0xd1, 0x71, 0xe2,
-0xcc, 0xcd, 0xd7, 0x0b, 0x55, 0x6c, 0x57, 0x49,
-0x7b, 0x13, 0xfa, 0xd3, 0x86, 0xa5, 0xf5, 0xca,
-0x23, 0x71, 0x7f, 0x0f, 0x3b, 0xe2, 0xc6, 0xbf,
-0x14, 0xe2, 0x0b, 0x45, 0x97, 0x05, 0x72, 0xfd,
-0x39, 0x03, 0x0d, 0xad, 0x42, 0xe8, 0x83, 0xba,
-0x55, 0x41, 0x4d, 0xee, 0x75, 0xf1, 0x8f, 0xb6,
-0x5d, 0xcd, 0x41, 0x3b, 0xd6, 0xf8, 0x4d, 0x0d,
-0x2b, 0xef, 0x17, 0xfc, 0xe7, 0x6b, 0x16, 0x18,
-0x28, 0x2c, 0xcb, 0xf5, 0xff, 0x20, 0xde, 0x9b,
-0xc4, 0x3b, 0xf3, 0xd6, 0x9b, 0xc5, 0x08, 0x32,
-0xe6, 0x51, 0x68, 0xd2, 0x5d, 0x3f, 0xaa, 0x42,
-0xf8, 0x87, 0x60, 0x0f, 0xe4, 0xf2, 0x7f, 0xb8,
-0x9a, 0x62, 0x43, 0x70, 0x68, 0x7b, 0x38, 0xa5,
-0xbe, 0xed, 0xf1, 0xff, 0xa8, 0x59, 0xfe, 0xf3,
-0xad, 0xd7, 0x1b, 0xe3, 0xfd, 0xa5, 0xc7, 0x8d,
-0x9d, 0x92, 0xde, 0x9f, 0x08, 0x94, 0x1d, 0x76,
-0xf0, 0x8f, 0x6e, 0xf3, 0x9f, 0xdb, 0xc4, 0xfb,
-0x5b, 0xec, 0xf8, 0x43, 0x46, 0xd4, 0xbb, 0xf1,
-0xfe, 0x7b, 0xa0, 0x3a, 0xa3, 0x22, 0xfe, 0x69,
-0xb3, 0xdf, 0xdf, 0x48, 0xe8, 0xbb, 0x08, 0x42,
-0xc8, 0xed, 0x53, 0x9d, 0xeb, 0xff, 0x39, 0x1d,
-0xf8, 0x27, 0x14, 0xce, 0xac, 0x9d, 0x9d, 0xb9,
-0x0d, 0xf1, 0x4f, 0xa1, 0xf3, 0x3c, 0x53, 0x76,
-0x68, 0xd9, 0xa4, 0xdd, 0x3c, 0xfe, 0xcf, 0x5f,
-0x5a, 0xfc, 0x9f, 0x03, 0x66, 0x0e, 0xfe, 0x89,
-0x2b, 0x87, 0x68, 0xdb, 0x1a, 0x2e, 0xfe, 0xb3,
-0x1c, 0xff, 0x4f, 0x72, 0xe1, 0x49, 0xdc, 0xbf,
-0x3e, 0x30, 0xce, 0x24, 0x6f, 0xc8, 0xdc, 0xbf,
-0xaa, 0x2a, 0xe4, 0xfa, 0xab, 0x61, 0x8b, 0xb1,
-0x57, 0x23, 0xf4, 0x22, 0x7f, 0x36, 0x9f, 0xcf,
-0xa3, 0x0f, 0x69, 0x7b, 0xe6, 0x55, 0x99, 0x25,
-0x6d, 0x6c, 0x9b, 0xcb, 0xaf, 0x10, 0xfc, 0xe7,
-0x59, 0x87, 0x1f, 0xca, 0xf5, 0xff, 0xa8, 0x7f,
-0x87, 0xe3, 0xcb, 0x5e, 0x81, 0x83, 0x6c, 0xda,
-0x20, 0x5e, 0x89, 0x3b, 0xe3, 0x8d, 0x0a, 0x71,
-0xec, 0xca, 0x80, 0x2e, 0x68, 0x2d, 0x81, 0xac,
-0x3e, 0xe3, 0x35, 0x83, 0x6a, 0x9a, 0x7d, 0xaa,
-0x2a, 0x5d, 0x5a, 0x93, 0x41, 0xe0, 0x3d, 0xe8,
-0xc4, 0x97, 0x7b, 0x0b, 0x76, 0x50, 0x92, 0x88,
-0x59, 0x90, 0xcc, 0xf1, 0xff, 0x98, 0x8d, 0xfd,
-0x91, 0x51, 0xf9, 0x1d, 0xfc, 0xe1, 0xe6, 0x7d,
-0x12, 0xe7, 0xeb, 0xe2, 0x9f, 0x94, 0xe6, 0x44,
-0xbb, 0xc6, 0x13, 0x0f, 0xde, 0x81, 0x73, 0xea,
-0x02, 0xb3, 0x70, 0x0b, 0xae, 0xb7, 0x7c, 0xfe,
-0xb3, 0xc0, 0x03, 0x79, 0x8e, 0x91, 0xe6, 0x7a,
-0x34, 0x74, 0x73, 0x32, 0xf8, 0x95, 0x39, 0x8e,
-0xff, 0x8c, 0x8b, 0xdc, 0xa6, 0xf1, 0x58, 0xf9,
-0x5c, 0x66, 0x49, 0x9a, 0x45, 0xa5, 0x5d, 0x3c,
-0xfc, 0xb4, 0xff, 0x3b, 0x39, 0xf8, 0x27, 0x3b,
-0x7e, 0xcb, 0x38, 0x7f, 0x51, 0xba, 0x6c, 0x1a,
-0xaa, 0x3b, 0xdc, 0x87, 0x08, 0x21, 0xe3, 0xae,
-0x37, 0x10, 0xa4, 0x0e, 0xf2, 0xf6, 0xd8, 0x69,
-0x5f, 0xcc, 0x8a, 0x10, 0x09, 0x20, 0x94, 0xe6,
-0x3a, 0x65, 0x20, 0xba, 0xfe, 0x1f, 0x08, 0xad,
-0x76, 0xe7, 0xfb, 0x44, 0x8e, 0xff, 0x67, 0xd4,
-0x1f, 0xc5, 0x35, 0x2e, 0x10, 0x91, 0x59, 0x98,
-0xcb, 0x7f, 0x5e, 0xe8, 0xce, 0xb7, 0xd8, 0xde,
-0xc8, 0x44, 0x44, 0xec, 0x02, 0x3c, 0x49, 0x1a,
-0xf0, 0xfa, 0x7f, 0x2e, 0xc1, 0xcf, 0x89, 0x9f,
-0xf6, 0x94, 0xbf, 0x1d, 0xb7, 0x95, 0xdd, 0x94,
-0xff, 0xd5, 0x40, 0x19, 0xe2, 0x99, 0x49, 0x67,
-0xe5, 0x0b, 0xc6, 0x05, 0x7e, 0xc3, 0x70, 0xf0,
-0xac, 0xec, 0xfa, 0x7f, 0x38, 0x9c, 0x56, 0x37,
-0x48, 0xe1, 0x01, 0x75, 0x2d, 0x0b, 0x2b, 0x44,
-0xfb, 0xf1, 0x5f, 0x64, 0x3f, 0xc4, 0x3f, 0x44,
-0x21, 0xc9, 0x2e, 0x9a, 0xfb, 0x78, 0xd8, 0xf4,
-0x6f, 0x63, 0xa3, 0x8e, 0xff, 0xb9, 0xfb, 0xe6,
-0xe3, 0xda, 0xbf, 0x20, 0xda, 0x51, 0x81, 0x2d,
-0x46, 0xe0, 0x27, 0xb2, 0xff, 0x68, 0xc7, 0xaf,
-0x31, 0xe5, 0x30, 0x3b, 0xce, 0xf7, 0xf1, 0x9a,
-0x14, 0xaa, 0xc2, 0x8d, 0x77, 0x98, 0x95, 0x1b,
-0x11, 0x3d, 0x6e, 0x4b, 0xe1, 0x6a, 0x09, 0x0b,
-0xda, 0x8f, 0x3f, 0x0d, 0x3b, 0xa4, 0x27, 0x48,
-0xe0, 0x85, 0xa7, 0x61, 0x5f, 0x22, 0xdc, 0xef,
-0xe7, 0x87, 0x47, 0xbd, 0xfc, 0x9f, 0xc0, 0x4f,
-0xa5, 0xba, 0xf7, 0x02, 0x23, 0x78, 0x1a, 0x7a,
-0x1b, 0xb5, 0x51, 0x42, 0x8e, 0xc4, 0xf7, 0xd9,
-0x3c, 0x91, 0x2f, 0xa9, 0x8e, 0xf2, 0xbf, 0xd7,
-0x97, 0x76, 0x54, 0x9b, 0x2d, 0x4e, 0xfc, 0x88,
-0xf0, 0x4f, 0x0a, 0xb5, 0xf7, 0x7a, 0xf5, 0x00,
-0x88, 0x8d, 0xde, 0xe2, 0xc3, 0xdf, 0x64, 0x06,
-0xcf, 0x21, 0x50, 0xbc, 0x20, 0xdd, 0x94, 0xda,
-0x90, 0xc9, 0xcb, 0x7f, 0xa7, 0xf8, 0x4e, 0xc9,
-0x66, 0x19, 0xd1, 0xa6, 0x8e, 0xfa, 0x9f, 0x4f,
-0x0b, 0x55, 0x45, 0xb5, 0xef, 0x29, 0x5f, 0x0d,
-0x63, 0x21, 0xdc, 0x1a, 0x36, 0xcb, 0xff, 0x95,
-0x93, 0xff, 0xf5, 0x03, 0x8b, 0xbf, 0x14, 0x85,
-0xce, 0x38, 0xe5, 0x7f, 0xc9, 0xab, 0xe1, 0x49,
-0x7d, 0x9e, 0xb9, 0x21, 0x1d, 0xae, 0x87, 0xf9,
-0x26, 0x1a, 0x22, 0xce, 0x5c, 0xfe, 0xb3, 0xa9,
-0x14, 0xf3, 0x4e, 0x3a, 0x8f, 0x27, 0xcb, 0xba,
-0x7c, 0x9d, 0x6e, 0xfe, 0x85, 0x6e, 0x11, 0xc3,
-0x76, 0x1a, 0x51, 0x43, 0x8b, 0x79, 0xf8, 0xcf,
-0x84, 0x7f, 0xc8, 0xfb, 0xa1, 0x5e, 0x17, 0x2e,
-0x73, 0xf0, 0x8f, 0xb2, 0x97, 0x4f, 0xcb, 0xf8,
-0x97, 0xb3, 0xcf, 0xc1, 0x1e, 0x3e, 0x93, 0xa8,
-0xc2, 0x17, 0x1c, 0xff, 0x73, 0x6b, 0x28, 0x2a,
-0x3d, 0xa5, 0x45, 0xcd, 0xef, 0x6a, 0xac, 0x4b,
-0x79, 0x8a, 0xf0, 0x4f, 0x9d, 0xbc, 0x11, 0xde,
-0x87, 0x98, 0x79, 0x7f, 0x4a, 0x5e, 0x02, 0xef,
-0xc7, 0x10, 0x5a, 0xd7, 0xc9, 0x27, 0x9c, 0xf3,
-0x3b, 0xe2, 0x1f, 0xb8, 0xac, 0x35, 0x9a, 0xb7,
-0x8e, 0x7e, 0xc2, 0xc9, 0x1f, 0xfc, 0x1a, 0xfc,
-0x36, 0x44, 0xc2, 0xa4, 0x83, 0x70, 0x49, 0x6b,
-0xec, 0xff, 0xc6, 0xe8, 0x24, 0x37, 0x9e, 0xae,
-0x8a, 0xf8, 0x57, 0xbd, 0x81, 0xfb, 0xe3, 0xd7,
-0xe0, 0x56, 0x5a, 0x9f, 0xc2, 0x31, 0xdb, 0x8b,
-0xfa, 0x99, 0xef, 0x9f, 0x69, 0x65, 0x7c, 0x77,
-0x57, 0x33, 0x0f, 0x7f, 0xe6, 0x20, 0x9d, 0x9e,
-0xfa, 0x8a, 0xe3, 0x65, 0x93, 0xad, 0xfc, 0xf7,
-0xbf, 0x4f, 0xbc, 0x02, 0xbb, 0xf5, 0x2a, 0xb2,
-0xa8, 0x93, 0x8d, 0x17, 0xa4, 0x1b, 0x0d, 0x7f,
-0xbc, 0x69, 0x97, 0x9b, 0x4f, 0x01, 0xdf, 0x65,
-0xf7, 0x74, 0xcf, 0xca, 0x84, 0x42, 0xec, 0x36,
-0xc9, 0xc1, 0x7b, 0xdf, 0x4e, 0x55, 0x65, 0xfc,
-0x23, 0x4d, 0x25, 0xc6, 0xb7, 0x10, 0xff, 0xf8,
-0x96, 0x97, 0xa9, 0xee, 0xfe, 0x42, 0xf1, 0x2f,
-0x1e, 0x1d, 0x28, 0x3a, 0xc0, 0x02, 0xdc, 0xe5,
-0x3f, 0x33, 0xd4, 0xe7, 0xdc, 0x44, 0xa0, 0xf4,
-0xc1, 0xb6, 0x88, 0x79, 0xed, 0x42, 0xf6, 0x1d,
-0x37, 0xfe, 0x85, 0xf8, 0xe7, 0x5e, 0xd6, 0xc8,
-0x03, 0x99, 0x8e, 0x35, 0xca, 0x61, 0x85, 0xf0,
-0xcf, 0xe7, 0x47, 0xe0, 0x25, 0xd8, 0xc6, 0x83,
-0x27, 0xe5, 0x08, 0xbc, 0x0a, 0x8d, 0x8f, 0x97,
-0x64, 0xaa, 0x6f, 0x72, 0xf9, 0xcf, 0x4e, 0x3e,
-0x4e, 0x73, 0xaa, 0xd0, 0x12, 0xa4, 0x8c, 0x36,
-0x66, 0x88, 0x8d, 0xc9, 0x84, 0x31, 0x75, 0x06,
-0x0a, 0x9d, 0x5e, 0xfe, 0xf3, 0x76, 0xe3, 0x4d,
-0x26, 0xb2, 0x57, 0x5a, 0xe0, 0xa8, 0x56, 0x67,
-0x58, 0x1b, 0x9f, 0xfe, 0x75, 0x4a, 0x8b, 0xde,
-0x0e, 0x47, 0x6b, 0x28, 0x74, 0x52, 0xed, 0x8d,
-0x7f, 0x21, 0x9e, 0x61, 0x51, 0xa3, 0x3b, 0xc9,
-0x6a, 0xd8, 0x7a, 0x08, 0x67, 0xf7, 0x5f, 0xf3,
-0x4b, 0x86, 0xc8, 0xf0, 0x5a, 0x6f, 0x12, 0x35,
-0xa8, 0x7a, 0x5c, 0xfe, 0x97, 0xe1, 0x4b, 0x97,
-0xd4, 0x28, 0x62, 0x7c, 0x0f, 0x8d, 0x37, 0x6a,
-0xb3, 0xe3, 0xd5, 0xe8, 0xa2, 0xc8, 0xf8, 0xf8,
-0x17, 0xde, 0xc4, 0xf2, 0xff, 0xa4, 0x0c, 0x7f,
-0x59, 0x19, 0xe2, 0x01, 0xdd, 0x02, 0x06, 0xc2,
-0x23, 0x14, 0xd2, 0xca, 0x3c, 0xf1, 0xaf, 0x29,
-0x77, 0xb6, 0x8e, 0xb5, 0x35, 0x54, 0x94, 0xac,
-0x2d, 0xd7, 0xd9, 0x80, 0x52, 0x87, 0x47, 0x6b,
-0xd9, 0xca, 0x40, 0x0f, 0xae, 0x95, 0xb7, 0xb6,
-0x0e, 0x48, 0x0d, 0x15, 0x93, 0x0b, 0xe4, 0x4b,
-0x0e, 0xff, 0x79, 0xdf, 0x94, 0x61, 0xf5, 0x22,
-0x08, 0xff, 0xcf, 0x1e, 0xc1, 0x7f, 0xbe, 0x5f,
-0xe4, 0x7f, 0x69, 0xe4, 0xd8, 0x91, 0x87, 0xff,
-0xfc, 0xe7, 0x52, 0xe3, 0x22, 0x14, 0xb6, 0xb9,
-0xf9, 0x5c, 0x05, 0xbf, 0x21, 0x7e, 0x54, 0x9b,
-0x7f, 0xd3, 0xfa, 0xd5, 0xba, 0xe5, 0xff, 0x69,
-0x22, 0x06, 0xf5, 0x3c, 0x41, 0xa4, 0x81, 0x67,
-0xf1, 0x79, 0x82, 0xc9, 0xea, 0xe9, 0x4e, 0xbc,
-0x29, 0x44, 0xf1, 0xc7, 0x30, 0xc2, 0x9e, 0x75,
-0x3e, 0x5d, 0x1d, 0x12, 0xf8, 0x27, 0x6c, 0xa5,
-0x7d, 0x95, 0x24, 0x98, 0xae, 0x76, 0xe3, 0x46,
-0x5f, 0xc2, 0x27, 0x95, 0x78, 0xe2, 0x5f, 0x88,
-0x7f, 0x54, 0x9c, 0x5d, 0xe8, 0x91, 0x16, 0xa9,
-0xc3, 0xca, 0xff, 0xc2, 0xf9, 0x1a, 0x3a, 0xea,
-0x67, 0xdd, 0x5a, 0xd8, 0xca, 0xa3, 0xb7, 0xf8,
-0x37, 0x25, 0x36, 0x49, 0xb6, 0xfe, 0x11, 0xff,
-0x58, 0x61, 0xaf, 0x4d, 0xac, 0xa6, 0xcc, 0xca,
-0x7f, 0x2f, 0x24, 0xfe, 0x79, 0xd8, 0xf0, 0x6d,
-0x66, 0x0a, 0x7b, 0x94, 0xd5, 0xb6, 0xb2, 0x07,
-0xca, 0x1e, 0xb1, 0xd5, 0x83, 0xf8, 0x47, 0x84,
-0xbd, 0x3e, 0x19, 0xec, 0x91, 0x57, 0xf2, 0xf5,
-0x40, 0x3f, 0xab, 0x20, 0x6e, 0xed, 0x32, 0x82,
-0xa5, 0xf2, 0x76, 0xf5, 0xcd, 0xfe, 0xda, 0xb6,
-0xa0, 0xd6, 0xd9, 0x5b, 0xe1, 0xf0, 0x9f, 0x89,
-0x0f, 0xa6, 0x35, 0xb4, 0x07, 0x7b, 0x9a, 0xed,
-0x40, 0x61, 0xf9, 0x30, 0xbc, 0x0b, 0x0b, 0x16,
-0x95, 0xf4, 0xe0, 0xf8, 0x17, 0x8f, 0x36, 0x2c,
-0x0a, 0x26, 0xfd, 0xcb, 0xf2, 0xf2, 0xbf, 0xea,
-0x08, 0xe4, 0xc4, 0xd5, 0x21, 0x4e, 0xcb, 0x6c,
-0x11, 0xc2, 0x4e, 0xad, 0x41, 0x9a, 0x64, 0x03,
-0xa1, 0xdb, 0xbc, 0xf1, 0x2f, 0x55, 0x59, 0x40,
-0x6c, 0x9f, 0x0e, 0x35, 0x15, 0x8e, 0xc0, 0x7d,
-0x50, 0xdb, 0x21, 0xf2, 0xbf, 0x0e, 0x0d, 0xd6,
-0xf2, 0x6b, 0x09, 0x08, 0x1d, 0xb2, 0x80, 0xd0,
-0x31, 0xc7, 0xff, 0xac, 0x16, 0xdc, 0x22, 0xac,
-0x8d, 0x2f, 0xcd, 0x02, 0x5a, 0x82, 0xf2, 0xdf,
-0x35, 0xda, 0xb8, 0x4d, 0xeb, 0xc5, 0xd1, 0xe6,
-0xa0, 0xf0, 0x37, 0x31, 0x38, 0xe6, 0xda, 0x1f,
-0x69, 0x0a, 0xec, 0x4d, 0x56, 0x0f, 0xab, 0x77,
-0xe3, 0xf9, 0x7d, 0x1d, 0xbd, 0xbf, 0x6b, 0x12,
-0x93, 0x11, 0xf6, 0x88, 0x7c, 0xf0, 0x57, 0xf8,
-0x63, 0x2d, 0xb3, 0x4e, 0xfb, 0xdb, 0xeb, 0x32,
-0x15, 0x0e, 0xff, 0x39, 0x54, 0x86, 0xf6, 0x76,
-0xe7, 0x9b, 0x25, 0x97, 0x9a, 0xa7, 0x6a, 0xfd,
-0x84, 0x7f, 0xe6, 0xcb, 0x9f, 0x13, 0x40, 0xc8,
-0xbf, 0xa6, 0xfa, 0x35, 0x12, 0x46, 0x82, 0xff,
-0x94, 0xc3, 0x7f, 0xde, 0x03, 0xe7, 0x79, 0x43,
-0x1f, 0xa5, 0x81, 0xe3, 0xf3, 0x66, 0xf3, 0xc1,
-0xcf, 0x32, 0x2b, 0x11, 0x2c, 0x85, 0x2b, 0x6a,
-0xa0, 0x6b, 0x97, 0x27, 0xfe, 0x15, 0x57, 0x76,
-0x09, 0xd8, 0x73, 0xcf, 0x58, 0x79, 0x03, 0x7c,
-0x82, 0xe2, 0x17, 0xd9, 0x40, 0xd8, 0x70, 0xf0,
-0xe2, 0x06, 0xca, 0x56, 0x5c, 0x38, 0xda, 0xfa,
-0x8f, 0xd5, 0x5a, 0xd8, 0x1e, 0xdf, 0x0b, 0x9b,
-0xe1, 0x97, 0x16, 0x8c, 0x99, 0x1c, 0x5e, 0x57,
-0x6a, 0x99, 0x1d, 0xcb, 0xb1, 0xd3, 0xce, 0xea,
-0xe1, 0x05, 0x75, 0xe1, 0x91, 0xd0, 0x5d, 0x6c,
-0x86, 0x87, 0xff, 0x9c, 0x44, 0xb4, 0x33, 0xb3,
-0x5f, 0xf8, 0x8b, 0xd6, 0x42, 0x95, 0xf8, 0x43,
-0x31, 0xdf, 0x6b, 0xdb, 0xa7, 0x4f, 0x86, 0x6f,
-0x69, 0xb3, 0x4c, 0x75, 0x94, 0x29, 0x1e, 0xfc,
-0xd3, 0x45, 0xfe, 0x8d, 0xb1, 0x6b, 0x1b, 0x59,
-0x10, 0xb8, 0x30, 0xe3, 0xc2, 0xd1, 0x11, 0x35,
-0xaf, 0xbd, 0x9e, 0x05, 0xd4, 0x07, 0xba, 0xa3,
-0x87, 0xbb, 0xd3, 0x75, 0x21, 0x97, 0xff, 0x8c,
-0xf8, 0xe7, 0x32, 0xff, 0x68, 0x26, 0x38, 0xea,
-0xaf, 0x35, 0x8e, 0xc1, 0x2e, 0xda, 0xe8, 0xb3,
-0x40, 0xe8, 0x8c, 0x5c, 0x0f, 0x2f, 0x1b, 0xb3,
-0x32, 0x81, 0xb3, 0x9d, 0xb5, 0x8e, 0xfd, 0x49,
-0x59, 0xf9, 0xc8, 0xfd, 0x41, 0xaa, 0xbe, 0x32,
-0x66, 0x64, 0xf1, 0x80, 0xc3, 0x18, 0x3f, 0x6b,
-0x2c, 0x30, 0x67, 0xa5, 0x73, 0xf8, 0xcf, 0xc2,
-0x1f, 0x62, 0x2e, 0xc1, 0x6d, 0x51, 0xb9, 0xc0,
-0xe7, 0x98, 0xa8, 0x1f, 0x9b, 0x0f, 0xdc, 0x79,
-0x41, 0xb9, 0xcc, 0x6e, 0x22, 0xc7, 0xbe, 0x97,
-0xff, 0x3c, 0x0d, 0xcf, 0xef, 0x33, 0x29, 0x5b,
-0x27, 0x8a, 0x68, 0x64, 0x9b, 0xe9, 0x47, 0x6b,
-0x04, 0xfb, 0x6d, 0x8f, 0xc4, 0x3e, 0x6e, 0x65,
-0x24, 0x79, 0xf0, 0xcf, 0x5f, 0x09, 0xb4, 0xd3,
-0x4a, 0xe3, 0x0f, 0xc4, 0x71, 0x9b, 0x4e, 0x0a,
-0xbe, 0xf4, 0x0c, 0x6b, 0xfc, 0x7e, 0x53, 0x8c,
-0xd7, 0x73, 0xec, 0x8f, 0xc8, 0xee, 0xb1, 0xd4,
-0xa2, 0x13, 0x10, 0x22, 0x46, 0xb4, 0xb5, 0xde,
-0x8a, 0xd2, 0x92, 0x10, 0x12, 0x1d, 0x8e, 0xfa,
-0x43, 0x35, 0x70, 0x9e, 0x65, 0xe3, 0x83, 0x63,
-0x84, 0x76, 0x92, 0xb8, 0x9f, 0x8e, 0x11, 0x11,
-0xba, 0x9d, 0xe2, 0xe9, 0xd2, 0x4d, 0x7d, 0xc1,
-0xd1, 0x6a, 0xdd, 0x93, 0xff, 0x75, 0xc6, 0xa6,
-0xf5, 0x12, 0xda, 0xc9, 0x02, 0xbf, 0x0b, 0x59,
-0xe0, 0xa7, 0x5e, 0x90, 0xbe, 0x41, 0xc2, 0x9b,
-0x5d, 0x0e, 0xfe, 0xf9, 0x96, 0xe5, 0xf6, 0x29,
-0x1e, 0x42, 0xd8, 0x8c, 0xa7, 0xdd, 0x8c, 0xd7,
-0x11, 0xf4, 0x39, 0xe8, 0x87, 0xeb, 0xf5, 0x99,
-0x23, 0x72, 0xcc, 0x13, 0xff, 0xfa, 0x21, 0xd1,
-0x7e, 0x5e, 0x57, 0x7b, 0xd8, 0x3b, 0x14, 0x5f,
-0x76, 0xeb, 0xff, 0xf8, 0xeb, 0xf0, 0x45, 0xeb,
-0x1e, 0x0c, 0xc7, 0x8b, 0xba, 0x99, 0xee, 0xd8,
-0x9f, 0x01, 0x65, 0xa3, 0xea, 0xc0, 0x3c, 0x6b,
-0x9a, 0x85, 0xf6, 0x41, 0x23, 0xb1, 0x04, 0xd5,
-0x5d, 0x63, 0xf8, 0xf4, 0x70, 0xd8, 0xb1, 0x6f,
-0x66, 0x01, 0xc2, 0x3c, 0xc5, 0xe2, 0x3f, 0xab,
-0x07, 0xb4, 0x5c, 0x47, 0x50, 0x04, 0xed, 0x5b,
-0x38, 0xee, 0xef, 0x66, 0x2e, 0xff, 0xc7, 0x28,
-0x38, 0x1d, 0x12, 0xd5, 0x12, 0x92, 0xe5, 0xa7,
-0xd5, 0x73, 0x1d, 0xb9, 0x78, 0xb8, 0x05, 0x5f,
-0xdc, 0xb9, 0x77, 0x07, 0xa3, 0xb2, 0x96, 0x9f,
-0xff, 0x6e, 0x06, 0x5f, 0x20, 0xb5, 0xf0, 0xbc,
-0x40, 0xa1, 0x7a, 0x29, 0xd9, 0x68, 0x04, 0x08,
-0xff, 0xd8, 0xbf, 0x57, 0x4b, 0x96, 0xff, 0x2c,
-0xe2, 0x8f, 0xe7, 0x72, 0xf1, 0xf6, 0xa4, 0x1a,
-0xfe, 0x76, 0x68, 0xd7, 0xf2, 0x29, 0x8f, 0x78,
-0xea, 0xff, 0x0c, 0x55, 0x8a, 0x78, 0xe8, 0x10,
-0x9e, 0x1f, 0x4f, 0xd3, 0xb1, 0xcb, 0xf4, 0xef,
-0x73, 0x03, 0xa3, 0x51, 0x48, 0x40, 0x78, 0x85,
-0xba, 0x3d, 0x31, 0x2e, 0xff, 0x3d, 0x13, 0x71,
-0xf4, 0xe3, 0x04, 0xe2, 0xd3, 0xac, 0x18, 0xb6,
-0x19, 0x29, 0x43, 0x53, 0x99, 0xcb, 0xff, 0x11,
-0xf9, 0x5f, 0x89, 0x99, 0x96, 0x3f, 0xe4, 0xf1,
-0x3c, 0x62, 0xf0, 0x02, 0x63, 0x1d, 0xaf, 0xce,
-0x84, 0x8e, 0x86, 0x55, 0x6f, 0xfe, 0x97, 0x49,
-0xfe, 0x1f, 0xca, 0xff, 0x32, 0xde, 0x73, 0xf8,
-0x3f, 0x96, 0x23, 0x28, 0x00, 0xbf, 0x80, 0x98,
-0xa1, 0x4e, 0x93, 0x3d, 0xf5, 0x7f, 0x8a, 0x0f,
-0xb6, 0x09, 0xfc, 0x4c, 0x6a, 0xb9, 0x64, 0xe4,
-0xe8, 0xe7, 0xe3, 0x63, 0xb8, 0x42, 0x66, 0x99,
-0x25, 0x8b, 0x3c, 0xf5, 0x7f, 0xac, 0xfc, 0xaf,
-0xac, 0x5a, 0xce, 0x19, 0xb9, 0xfa, 0x5f, 0xa7,
-0x9c, 0xc0, 0xfb, 0x17, 0x6b, 0xd5, 0x4d, 0xce,
-0xfa, 0xb1, 0xf2, 0xbf, 0xb2, 0xc7, 0xa8, 0xc7,
-0xf3, 0x12, 0x4b, 0x05, 0x11, 0xda, 0xf0, 0x1b,
-0xac, 0xec, 0x2a, 0xfb, 0xfe, 0x06, 0x78, 0x68,
-0x4e, 0xf9, 0xf3, 0xfd, 0x40, 0xff, 0x36, 0xff,
-0x78, 0xdc, 0xbf, 0x9a, 0xb5, 0xe6, 0xe6, 0x7f,
-0x65, 0xd5, 0xa8, 0xee, 0x4a, 0xe6, 0xf2, 0xa9,
-0x9e, 0xe3, 0x09, 0x84, 0x46, 0xfe, 0x1a, 0x76,
-0x4d, 0x5e, 0xfd, 0x9f, 0x5a, 0x1e, 0xec, 0xed,
-0x1c, 0x4f, 0x84, 0x1e, 0x83, 0x9f, 0xf1, 0x1b,
-0x37, 0x15, 0x8f, 0x34, 0x7f, 0x55, 0xb1, 0xf5,
-0x6f, 0xe7, 0xbf, 0xdf, 0x3f, 0x81, 0xff, 0x87,
-0xf2, 0x71, 0xda, 0x76, 0x69, 0x4a, 0x57, 0x75,
-0x7e, 0xfe, 0x57, 0xf6, 0x98, 0x7f, 0x7e, 0x82,
-0x44, 0xef, 0x05, 0xab, 0x02, 0xc9, 0xa7, 0xee,
-0xcd, 0xe7, 0x3f, 0x2f, 0x73, 0xd2, 0xbe, 0xbc,
-0x44, 0xdc, 0x1a, 0x7d, 0xbf, 0x19, 0x5e, 0xa5,
-0x5e, 0xc5, 0x22, 0xf9, 0xf8, 0xa7, 0xc5, 0x9f,
-0x6c, 0xca, 0xf7, 0x57, 0x68, 0x14, 0x08, 0x0b,
-0x85, 0x89, 0xb8, 0xb2, 0xce, 0x93, 0xff, 0xa5,
-0x64, 0xbd, 0x3d, 0xcc, 0x85, 0x3d, 0xb6, 0x3f,
-0x84, 0xf8, 0x3f, 0x61, 0xc4, 0x3f, 0xcc, 0x57,
-0x61, 0xaf, 0x87, 0xb1, 0x9c, 0xfc, 0xf7, 0xdb,
-0x3d, 0x13, 0xf7, 0xaf, 0x95, 0x11, 0x1a, 0xe1,
-0xd6, 0xbc, 0x91, 0x57, 0x3f, 0x22, 0xdb, 0xcf,
-0xb3, 0x71, 0x4a, 0x76, 0x76, 0x83, 0x36, 0xec,
-0xf1, 0xcc, 0x77, 0x0f, 0x5c, 0xd4, 0xfe, 0xcd,
-0x58, 0x3a, 0x28, 0x9f, 0x72, 0xe3, 0x4d, 0x05,
-0x54, 0x04, 0xc9, 0xeb, 0x2f, 0xf2, 0x38, 0x82,
-0xae, 0x87, 0x8b, 0xea, 0x6e, 0x23, 0xda, 0x26,
-0x2f, 0x76, 0xc6, 0x67, 0xf3, 0xdf, 0xb3, 0x6e,
-0x1f, 0xdd, 0xf5, 0xff, 0xc0, 0xad, 0x09, 0xd0,
-0xd5, 0x7d, 0xc6, 0x02, 0x50, 0x79, 0xb8, 0xd0,
-0xcb, 0xff, 0xa1, 0xd9, 0x59, 0xec, 0x82, 0x9d,
-0xad, 0x39, 0xf3, 0x4d, 0x28, 0x0a, 0xc5, 0xfb,
-0xf0, 0x55, 0x5d, 0xe6, 0xd8, 0x9f, 0x9e, 0xca,
-0xed, 0x15, 0xfb, 0x2d, 0xfc, 0x83, 0x6a, 0xd4,
-0xbd, 0xf5, 0x04, 0xb4, 0x6b, 0x28, 0x11, 0x7e,
-0x46, 0x9b, 0xba, 0x99, 0x15, 0x3a, 0xfe, 0x31,
-0x8b, 0xff, 0x3c, 0x01, 0xdf, 0xc9, 0x0a, 0x74,
-0xbe, 0xab, 0xef, 0x5a, 0x89, 0xe7, 0xa3, 0x55,
-0x2e, 0xfe, 0xb1, 0xf8, 0x3f, 0xd9, 0x61, 0xdc,
-0x16, 0x10, 0x08, 0x4d, 0x22, 0x22, 0x34, 0xae,
-0x87, 0x45, 0xfe, 0x4d, 0xf9, 0xf9, 0x5f, 0x16,
-0xc9, 0xca, 0x59, 0x6f, 0xba, 0x10, 0x3e, 0xca,
-0x27, 0x65, 0x60, 0x24, 0xb6, 0x40, 0x29, 0xe9,
-0xf6, 0xbb, 0xe7, 0x0b, 0x2b, 0xff, 0x7d, 0x56,
-0x97, 0x70, 0xfb, 0x7c, 0xc7, 0xf2, 0xff, 0xf4,
-0xda, 0x8e, 0xa0, 0x31, 0xb8, 0xcf, 0xa8, 0x4a,
-0x76, 0xc7, 0xbd, 0xf9, 0xef, 0xde, 0xfc, 0x8b,
-0x2c, 0x0d, 0x23, 0x60, 0x1f, 0xcc, 0x8f, 0xc0,
-0x56, 0xb3, 0xf7, 0xbd, 0x88, 0x8e, 0xe3, 0x9d,
-0xfd, 0x05, 0x84, 0xdb, 0xc4, 0x10, 0x6f, 0xeb,
-0xb7, 0xe9, 0xb5, 0x5d, 0x9e, 0xad, 0x87, 0xe3,
-0xbf, 0x9b, 0xfd, 0x2c, 0xc2, 0xd9, 0xe7, 0xcd,
-0x90, 0xc9, 0xf4, 0x0a, 0xfb, 0xfe, 0xbd, 0xdd,
-0x9f, 0xcb, 0xcb, 0x7f, 0x5f, 0x2e, 0x5b, 0x11,
-0x31, 0xff, 0xd7, 0xb6, 0xbd, 0x07, 0xa7, 0x3a,
-0x6e, 0x4c, 0xd5, 0xae, 0x92, 0x67, 0xe4, 0xd7,
-0xff, 0x31, 0x82, 0xe9, 0xf2, 0xd3, 0xf0, 0x9a,
-0xd6, 0x40, 0x85, 0xa4, 0x2c, 0x7b, 0xe2, 0xdf,
-0x23, 0x9f, 0x21, 0x2a, 0x5a, 0x5f, 0x0e, 0xff,
-0x07, 0x44, 0xfe, 0x97, 0xb5, 0x6d, 0xa1, 0x70,
-0x93, 0x83, 0x7f, 0xac, 0x8d, 0xec, 0x4c, 0xc7,
-0x6c, 0x5d, 0x19, 0x91, 0x4d, 0xc7, 0xdf, 0xfb,
-0xfd, 0xd2, 0x2d, 0xc6, 0x6f, 0xed, 0xe7, 0xa7,
-0xc4, 0x2e, 0xc4, 0x3f, 0xb6, 0x45, 0x6a, 0x7a,
-0x05, 0x81, 0x4d, 0x15, 0xa8, 0x46, 0xd3, 0x49,
-0x47, 0x9f, 0x00, 0x5b, 0xda, 0x6c, 0xeb, 0x24,
-0xed, 0x86, 0xeb, 0x2c, 0xbc, 0x44, 0x0c, 0x22,
-0xf2, 0x57, 0xeb, 0x07, 0xa1, 0x3a, 0x59, 0x14,
-0xf7, 0xd4, 0xff, 0xa1, 0xfc, 0x77, 0xc4, 0x3f,
-0x46, 0xf9, 0x8d, 0xa8, 0xcf, 0x27, 0x92, 0x62,
-0x7f, 0xb7, 0x03, 0xf1, 0xec, 0x39, 0x25, 0x6d,
-0xa4, 0x52, 0x45, 0x15, 0xec, 0x68, 0x81, 0x1b,
-0xff, 0xca, 0xba, 0x35, 0xf6, 0xe1, 0x7c, 0x2f,
-0xf3, 0x05, 0x2e, 0xfe, 0x91, 0xa9, 0x42, 0xdd,
-0x98, 0x11, 0x5b, 0x35, 0x33, 0xea, 0xad, 0xff,
-0x23, 0xd9, 0xfa, 0x41, 0xb5, 0xdc, 0x24, 0xe5,
-0xda, 0xdb, 0x37, 0xf8, 0x98, 0xd4, 0x30, 0x58,
-0xd2, 0x9b, 0x93, 0xff, 0x7e, 0x50, 0x11, 0xec,
-0x17, 0xaa, 0xf6, 0x23, 0xe2, 0x5f, 0x3f, 0x71,
-0xec, 0x79, 0xf5, 0xdf, 0xc3, 0x05, 0xf5, 0x26,
-0x98, 0x9a, 0xe9, 0x54, 0x5b, 0xec, 0xf7, 0xd7,
-0xf2, 0xff, 0x4c, 0x6f, 0xf7, 0xc7, 0xae, 0xa1,
-0x8d, 0x4c, 0xf0, 0x4f, 0x2c, 0xff, 0xcf, 0xad,
-0x69, 0x56, 0xc3, 0xd3, 0x99, 0xf0, 0x60, 0xf7,
-0x0f, 0x99, 0x9e, 0xc7, 0xff, 0xa9, 0x3d, 0xe9,
-0xb7, 0xf8, 0xba, 0xd3, 0x09, 0xff, 0x38, 0xfb,
-0xdd, 0xb0, 0xb1, 0x8f, 0xcf, 0x58, 0x7c, 0x4d,
-0x2f, 0xd3, 0x5d, 0xbc, 0x6d, 0xc5, 0x3b, 0x16,
-0xf9, 0xd3, 0x4d, 0x96, 0x1b, 0xc4, 0xef, 0xfa,
-0x7f, 0x9a, 0x14, 0x44, 0x44, 0xdb, 0x0c, 0xc4,
-0xe7, 0x3e, 0xd7, 0xff, 0xf3, 0xcd, 0xd5, 0xf6,
-0x7c, 0xa3, 0xaa, 0x08, 0xc4, 0xd8, 0x8e, 0xaf,
-0xbf, 0x14, 0xfa, 0xa1, 0x42, 0x64, 0x29, 0x3f,
-0xc8, 0x2e, 0xfe, 0xa1, 0xd9, 0xdd, 0x00, 0xd9,
-0x6d, 0xeb, 0xa6, 0x9c, 0xfd, 0x9d, 0xf2, 0xdf,
-0x05, 0x11, 0xe8, 0x4d, 0x17, 0xcf, 0x14, 0x7c,
-0x00, 0xcf, 0x85, 0xe7, 0xe8, 0x81, 0xa3, 0xf2,
-0x07, 0xda, 0x2b, 0x16, 0xff, 0xe7, 0x7a, 0xfe,
-0x6b, 0x27, 0x11, 0x9e, 0xed, 0x36, 0x03, 0xad,
-0xfe, 0x76, 0xd7, 0xff, 0xa3, 0x9d, 0x82, 0x0d,
-0x26, 0x15, 0xd9, 0x60, 0x27, 0x01, 0xcf, 0x9b,
-0x19, 0xff, 0xa8, 0x5c, 0x05, 0x3f, 0xc8, 0x06,
-0xc2, 0xb4, 0x0d, 0xbe, 0xea, 0x3e, 0x15, 0xf1,
-0x8f, 0xb3, 0xde, 0xba, 0x11, 0xcf, 0x24, 0x9a,
-0x56, 0x18, 0x2a, 0xe0, 0x34, 0x93, 0xd9, 0x78,
-0x5f, 0x9f, 0x7b, 0x30, 0xd7, 0xf5, 0x7e, 0x1f,
-0xb0, 0x15, 0xa5, 0x6e, 0x3e, 0xda, 0x0f, 0x61,
-0x43, 0x77, 0xf8, 0xdd, 0x50, 0x8a, 0xbd, 0x45,
-0xff, 0x90, 0x45, 0x93, 0xfe, 0xb8, 0xed, 0x58,
-0xdb, 0xa0, 0xe3, 0x51, 0x25, 0x95, 0xf0, 0xd6,
-0x3f, 0xfc, 0x25, 0xf4, 0x19, 0xb1, 0x58, 0xb4,
-0x53, 0xfe, 0x25, 0x3f, 0x61, 0x52, 0x7e, 0x9c,
-0xbf, 0x46, 0x7a, 0x46, 0x24, 0xee, 0x49, 0xcf,
-0xea, 0x3f, 0x4d, 0xd5, 0xf5, 0x95, 0xd4, 0x48,
-0x86, 0xb3, 0x7f, 0x65, 0xa4, 0x3d, 0x9a, 0x38,
-0x9f, 0x0e, 0xc9, 0xa3, 0xca, 0x45, 0xcb, 0x1b,
-0xd6, 0xab, 0x64, 0xf5, 0x73, 0x8e, 0x5f, 0xe4,
-0x0d, 0x66, 0x91, 0x99, 0xe7, 0xff, 0x39, 0x1b,
-0x9f, 0x77, 0x47, 0xf1, 0x46, 0xda, 0xdf, 0x07,
-0x1a, 0xc4, 0xfd, 0xe1, 0x65, 0xa5, 0xc1, 0x24,
-0x46, 0xb4, 0x7e, 0xde, 0xa8, 0x43, 0x68, 0xda,
-0xd9, 0xe6, 0xe5, 0xff, 0x70, 0xdc, 0xa4, 0x32,
-0x91, 0xee, 0xa6, 0xa3, 0x14, 0x2d, 0x35, 0xfd,
-0xa3, 0x65, 0x51, 0x2b, 0x91, 0xff, 0xb1, 0xb2,
-0x37, 0x71, 0x61, 0x54, 0x23, 0xb4, 0x93, 0xbd,
-0xf5, 0x0f, 0x5b, 0xf4, 0x5d, 0x66, 0x4d, 0xe4,
-0x3a, 0x60, 0xfd, 0x1d, 0x59, 0x18, 0x5c, 0xa3,
-0x59, 0xf9, 0x80, 0x85, 0xc7, 0x8d, 0xdd, 0xf1,
-0xed, 0x66, 0x44, 0x63, 0xfb, 0x72, 0xea, 0x1f,
-0xee, 0xd9, 0x3c, 0x2d, 0x5a, 0xf4, 0x59, 0x76,
-0x22, 0x8b, 0x07, 0xc2, 0x65, 0x16, 0x1e, 0xf8,
-0xc7, 0xe9, 0x3f, 0x43, 0x68, 0x34, 0x2d, 0xa3,
-0xbe, 0xc8, 0x06, 0x3c, 0xf5, 0x7f, 0x8a, 0xe1,
-0xbd, 0xd0, 0xbc, 0xd6, 0x62, 0x19, 0x61, 0x8f,
-0xc0, 0x3f, 0xe9, 0xf2, 0x80, 0xf6, 0x3e, 0xde,
-0x9f, 0x18, 0xd1, 0xfc, 0x3c, 0xcc, 0xed, 0x0f,
-0x48, 0xf2, 0xa6, 0x1c, 0xfe, 0xcf, 0x19, 0xed,
-0xa6, 0x81, 0xda, 0xd7, 0x11, 0x0d, 0x5e, 0xd6,
-0x3e, 0x6a, 0x06, 0xdf, 0xc5, 0xf5, 0x63, 0x15,
-0xce, 0x6a, 0xa6, 0x85, 0x74, 0xad, 0xf9, 0x6f,
-0xaf, 0x37, 0xb7, 0xb9, 0xfc, 0x1f, 0xfc, 0x7d,
-0x7b, 0x89, 0xed, 0x99, 0xa8, 0xa6, 0x6a, 0x0c,
-0x8c, 0xdc, 0x6e, 0x35, 0x56, 0xa2, 0xe2, 0x7c,
-0x79, 0x47, 0xea, 0x32, 0x34, 0x9c, 0xf8, 0xe8,
-0x7c, 0xf9, 0x6f, 0xdd, 0xf8, 0x57, 0xe9, 0x16,
-0x4a, 0x32, 0xa5, 0xec, 0xd1, 0x21, 0xcb, 0xfe,
-0xfc, 0x2f, 0x16, 0xb2, 0xf1, 0x8f, 0x38, 0x88,
-0x0d, 0xa1, 0x85, 0x71, 0xeb, 0x1f, 0xf6, 0xc1,
-0x01, 0x9d, 0x9b, 0xd7, 0xc5, 0xd5, 0x56, 0x84,
-0x3d, 0x87, 0x3a, 0xb6, 0x66, 0xfc, 0x0b, 0xd8,
-0x55, 0x16, 0xf1, 0xc9, 0x62, 0x80, 0x7f, 0x31,
-0xe3, 0x1f, 0xcb, 0xa9, 0x7f, 0xf8, 0x6c, 0x92,
-0xeb, 0xe1, 0x31, 0xb5, 0x86, 0x1d, 0x43, 0x6d,
-0xd3, 0xf9, 0xeb, 0x96, 0x12, 0x1b, 0xff, 0xf8,
-0xe0, 0xc0, 0x72, 0xc1, 0xc8, 0xf2, 0xd6, 0xff,
-0xe9, 0x81, 0xe7, 0xf8, 0x13, 0xe9, 0x1d, 0x3b,
-0xe4, 0xb3, 0xf1, 0x4b, 0xa9, 0x3a, 0x3e, 0x29,
-0x25, 0x2f, 0xe0, 0x2f, 0x59, 0xf8, 0xe7, 0xfb,
-0x70, 0x89, 0x37, 0x74, 0x04, 0x87, 0x9f, 0xfa,
-0xaa, 0x87, 0xff, 0xf3, 0x3a, 0x13, 0x7c, 0x8c,
-0x0e, 0xf9, 0x75, 0x75, 0x8c, 0xce, 0xe3, 0x60,
-0x6f, 0x4c, 0x5d, 0x22, 0x31, 0xaa, 0x01, 0x8a,
-0xbb, 0x3a, 0xbd, 0xf5, 0x7f, 0xde, 0x80, 0x9f,
-0x98, 0xbb, 0x56, 0x45, 0xd3, 0xa9, 0x61, 0xf8,
-0xc7, 0x14, 0xf9, 0x7f, 0xaa, 0xb3, 0xfc, 0x9f,
-0x87, 0xd8, 0x3b, 0x3a, 0xf1, 0x7f, 0xd4, 0xef,
-0x54, 0x7b, 0xeb, 0xff, 0xfc, 0x35, 0xc7, 0xd7,
-0x2a, 0x8e, 0xe7, 0x8b, 0x61, 0x63, 0x3f, 0x27,
-0xff, 0xcf, 0x35, 0x35, 0x4e, 0x22, 0x52, 0x17,
-0x25, 0x22, 0xc1, 0x26, 0x96, 0x93, 0xff, 0xae,
-0x3c, 0x04, 0xcc, 0x68, 0xfd, 0xe7, 0xc2, 0x61,
-0x7d, 0xbf, 0xe5, 0x2f, 0xb2, 0xc7, 0x27, 0x86,
-0x39, 0x5d, 0x61, 0x39, 0xfe, 0x9f, 0x96, 0x1a,
-0xad, 0x53, 0xd7, 0xb3, 0xf1, 0x20, 0xae, 0x13,
-0xff, 0x47, 0xe1, 0x6e, 0x60, 0x48, 0xd7, 0x29,
-0x35, 0x2c, 0xa7, 0xfe, 0x8f, 0x36, 0x24, 0xd5,
-0x55, 0x04, 0xd6, 0xca, 0x02, 0xdd, 0xc1, 0xf3,
-0x6b, 0xe5, 0x2a, 0x4f, 0xe1, 0xc7, 0xb6, 0x5d,
-0x94, 0xff, 0xfe, 0x8e, 0x63, 0x7f, 0x7a, 0xa6,
-0xbc, 0x00, 0x17, 0x4b, 0x9f, 0x34, 0x96, 0x26,
-0xe5, 0x33, 0xea, 0x6f, 0x2c, 0xff, 0x8f, 0x5d,
-0x08, 0x51, 0xa3, 0x54, 0xf7, 0x86, 0x96, 0x99,
-0xa3, 0xf2, 0x29, 0x27, 0xff, 0xb4, 0xbb, 0xe0,
-0x0c, 0x3c, 0xab, 0xde, 0x44, 0x24, 0xe7, 0x33,
-0xf0, 0x4d, 0xd4, 0x06, 0xfe, 0xe1, 0x1b, 0x5c,
-0x8c, 0x6f, 0x43, 0xfb, 0x76, 0xf1, 0xba, 0xba,
-0xe5, 0x81, 0x41, 0x69, 0xb1, 0x87, 0xff, 0x33,
-0x02, 0xdd, 0x46, 0xb8, 0xbb, 0x9b, 0x37, 0x65,
-0x58, 0x37, 0x6c, 0x03, 0x0a, 0x7b, 0xf1, 0x2c,
-0x22, 0x1a, 0x81, 0x7d, 0x2d, 0xdb, 0xd4, 0x08,
-0x2f, 0x2b, 0x71, 0xf4, 0xa9, 0x0a, 0xfe, 0xcf,
-0xaa, 0xa6, 0x88, 0x96, 0x40, 0x41, 0xc5, 0xf9,
-0x56, 0x24, 0x9e, 0x76, 0xe7, 0xbb, 0x55, 0x8d,
-0xb4, 0xa9, 0x5a, 0x59, 0x53, 0xa9, 0xfd, 0xfc,
-0xc4, 0x7f, 0x5e, 0x0f, 0x2b, 0x5a, 0xd5, 0x6f,
-0xb1, 0x53, 0x50, 0x64, 0x84, 0x3d, 0x78, 0x32,
-0x7d, 0x15, 0xfe, 0x22, 0xda, 0x0c, 0xa3, 0x7b,
-0x57, 0xb8, 0xd0, 0xb1, 0x0f, 0xdb, 0x2a, 0x8f,
-0xb0, 0xa3, 0x08, 0x5a, 0x02, 0x3d, 0xf2, 0x30,
-0xff, 0x24, 0xaf, 0x13, 0x78, 0xc6, 0xcc, 0x22,
-0x9c, 0x5f, 0x6a, 0x67, 0xe1, 0xab, 0x46, 0x54,
-0x93, 0x57, 0x79, 0xf2, 0xb3, 0xbe, 0x07, 0xef,
-0xaa, 0xe4, 0xe4, 0xb1, 0xc2, 0x5e, 0xb4, 0x1e,
-0x4e, 0xd9, 0x88, 0xe8, 0x1d, 0x1c, 0x3f, 0x97,
-0x34, 0x70, 0xd8, 0xcb, 0xff, 0x21, 0x23, 0x5f,
-0x24, 0xe2, 0x8f, 0x23, 0xba, 0x60, 0x3b, 0xdf,
-0x69, 0x03, 0xa1, 0x2a, 0x18, 0xd1, 0x1a, 0xa4,
-0x40, 0x4e, 0xfe, 0x57, 0xc1, 0x8d, 0xc6, 0x21,
-0x5e, 0xcd, 0x23, 0x99, 0xc4, 0xcb, 0x35, 0xf7,
-0x75, 0x87, 0x11, 0xf6, 0x94, 0x65, 0xf9, 0x3f,
-0x6f, 0xde, 0x1b, 0x69, 0x3f, 0x64, 0x96, 0xf0,
-0x81, 0x37, 0x72, 0xea, 0x1f, 0x2e, 0xd5, 0x76,
-0x1a, 0xb5, 0xf1, 0xd6, 0x05, 0x4d, 0xc7, 0xf9,
-0xf7, 0x0d, 0x11, 0x7d, 0xc8, 0x56, 0x04, 0x9a,
-0xcb, 0x3e, 0x01, 0x07, 0x06, 0x02, 0x66, 0xd1,
-0x5c, 0x76, 0xcc, 0xb1, 0x9f, 0x5b, 0x17, 0x4d,
-0xd6, 0x77, 0x1a, 0xff, 0x7e, 0x58, 0xc4, 0xaf,
-0x1f, 0xa1, 0xf7, 0x77, 0x8d, 0x1d, 0x18, 0x5a,
-0xc5, 0xee, 0xa0, 0xf7, 0x77, 0xa0, 0x28, 0x7e,
-0x95, 0x6b, 0x7f, 0x7a, 0xd5, 0xa9, 0xea, 0x19,
-0xde, 0x18, 0x0f, 0x20, 0xfe, 0xd1, 0xde, 0xe1,
-0x3b, 0x71, 0x5b, 0x69, 0x76, 0x10, 0xd1, 0xa7,
-0x63, 0x1f, 0xf0, 0xfa, 0xb7, 0x66, 0xe6, 0xd6,
-0x3f, 0x4c, 0x59, 0xa7, 0xfb, 0x64, 0xf9, 0x71,
-0x78, 0x89, 0xb6, 0xf5, 0x43, 0x9d, 0xef, 0xd8,
-0x11, 0x90, 0xad, 0x54, 0x8f, 0x74, 0xb0, 0x30,
-0xe5, 0xa9, 0x7f, 0x68, 0x16, 0xbc, 0x6a, 0x1c,
-0xa7, 0x24, 0x65, 0x3c, 0xbf, 0x9b, 0xcf, 0x51,
-0xfc, 0x62, 0xac, 0xf3, 0x90, 0x2e, 0xf0, 0xcf,
-0x90, 0xfc, 0x01, 0x7c, 0x90, 0x9c, 0x73, 0x32,
-0xb0, 0x0a, 0xd1, 0xb9, 0xcb, 0xff, 0xd9, 0x0c,
-0x6b, 0xf5, 0xaa, 0x63, 0x08, 0x72, 0x5e, 0x69,
-0xb9, 0x9f, 0xdc, 0xce, 0x0e, 0x11, 0x7a, 0x11,
-0xfb, 0xf9, 0x12, 0x4a, 0x04, 0x53, 0xef, 0x64,
-0x2e, 0xdf, 0x4f, 0x83, 0x2d, 0x65, 0x5d, 0xea,
-0x5f, 0x0f, 0x86, 0xda, 0xd8, 0x2b, 0x5d, 0xeb,
-0xac, 0xf9, 0x6e, 0xd1, 0xf7, 0xc2, 0x34, 0xd3,
-0x1f, 0x67, 0x2f, 0xc0, 0x21, 0xa6, 0x9b, 0x6a,
-0xdc, 0x07, 0x39, 0xf9, 0xef, 0x3c, 0xbe, 0x2d,
-0x83, 0xfb, 0xe3, 0x51, 0x3d, 0x91, 0xd2, 0x29,
-0x0c, 0x54, 0x6c, 0xe9, 0x13, 0xf0, 0x8d, 0xdb,
-0x9d, 0xc1, 0xf1, 0x91, 0xa6, 0x90, 0xb3, 0x3e,
-0xc7, 0x2a, 0x7f, 0x04, 0xa6, 0x39, 0xaf, 0x2d,
-0xba, 0x45, 0xfe, 0x35, 0x3c, 0x33, 0x50, 0x47,
-0xdb, 0xd0, 0x93, 0x16, 0xe3, 0x22, 0x2d, 0x0f,
-0xc4, 0xc7, 0x32, 0x73, 0xcc, 0xe8, 0xbe, 0xce,
-0x19, 0x1e, 0xfe, 0xcf, 0x29, 0x72, 0xfb, 0x0c,
-0x2e, 0xfd, 0x96, 0x7c, 0xda, 0xc8, 0x9e, 0x37,
-0xa9, 0x30, 0xcb, 0xd7, 0xc9, 0xf1, 0x3e, 0x6c,
-0x39, 0x82, 0x52, 0xcd, 0x2e, 0xfe, 0x19, 0xd4,
-0x2e, 0xe8, 0x63, 0xdb, 0xe7, 0xe0, 0xa1, 0xbe,
-0xf3, 0xeb, 0xca, 0x73, 0xb8, 0x9b, 0x13, 0x10,
-0xd2, 0x9f, 0x27, 0x18, 0x70, 0x46, 0x1e, 0x85,
-0x7e, 0xf2, 0x08, 0xf5, 0xcb, 0xdc, 0x13, 0xff,
-0xfa, 0xa2, 0xbe, 0xaf, 0x2a, 0x7c, 0x92, 0x75,
-0x87, 0x4b, 0x8c, 0x04, 0x45, 0x73, 0xd2, 0x16,
-0xff, 0x96, 0xf8, 0xcf, 0xaf, 0x1b, 0xbd, 0x7c,
-0x9e, 0x79, 0x6b, 0x20, 0x17, 0xff, 0xf0, 0x03,
-0x08, 0x03, 0x5a, 0x7b, 0xb6, 0xad, 0xd6, 0xd6,
-0xb7, 0x65, 0xc7, 0x3b, 0x85, 0x10, 0xbf, 0xaf,
-0xe1, 0x95, 0x54, 0x59, 0xca, 0xc3, 0x7f, 0x56,
-0xb4, 0x7d, 0x8a, 0xce, 0x71, 0xd3, 0x8f, 0x52,
-0xf4, 0x99, 0xf2, 0x73, 0x03, 0x76, 0xe1, 0xdf,
-0xd3, 0x28, 0x28, 0xa6, 0x5f, 0x07, 0x37, 0xff,
-0x9d, 0x17, 0xaf, 0xd6, 0xc8, 0xed, 0x13, 0xe5,
-0xf2, 0x6a, 0x65, 0x80, 0xfc, 0x3f, 0xed, 0xf8,
-0x87, 0xd9, 0x42, 0xbb, 0x54, 0xb1, 0x04, 0x9f,
-0x9f, 0xcb, 0x3c, 0xa7, 0xfe, 0xe1, 0x05, 0x78,
-0x92, 0x07, 0x4d, 0x79, 0x30, 0xcb, 0xff, 0xf1,
-0x24, 0x32, 0xdb, 0x44, 0xa0, 0x11, 0x67, 0xfd,
-0x1c, 0x96, 0x70, 0x10, 0xbf, 0x3e, 0x55, 0xf2,
-0xd9, 0xe6, 0x85, 0x70, 0x51, 0x99, 0x43, 0x69,
-0x83, 0x54, 0x51, 0xf3, 0x86, 0x4c, 0xf0, 0x6c,
-0xf5, 0x20, 0xbc, 0x92, 0xb8, 0x5e, 0x2f, 0x1e,
-0x92, 0x63, 0x2e, 0x5f, 0x48, 0x3b, 0x4d, 0x66,
-0xb6, 0x55, 0x4d, 0x86, 0x71, 0xa3, 0x8f, 0xcc,
-0xc8, 0x64, 0x13, 0xe1, 0x67, 0x64, 0xfc, 0xbb,
-0xf0, 0xa7, 0xe9, 0xe6, 0x61, 0x1d, 0x4d, 0xb7,
-0xee, 0xe6, 0x7f, 0xc1, 0x46, 0x69, 0xb7, 0x1a,
-0x7e, 0xaa, 0xbb, 0x8e, 0x05, 0x38, 0x5a, 0x57,
-0xaa, 0xbe, 0x7b, 0x1c, 0x0f, 0xb6, 0x8a, 0x79,
-0x6d, 0x1d, 0xda, 0x9f, 0x24, 0xd4, 0x40, 0x91,
-0xc6, 0xc2, 0x92, 0xbd, 0x7e, 0xcc, 0xd2, 0xd3,
-0x15, 0xbb, 0xc9, 0xfe, 0x1f, 0x64, 0x33, 0x61,
-0x3f, 0x9f, 0x61, 0x27, 0xc2, 0x0b, 0xc5, 0x12,
-0xe3, 0x71, 0x7a, 0xaa, 0xa8, 0x87, 0xa5, 0x9d,
-0xf7, 0x57, 0xf0, 0x73, 0xb4, 0xba, 0xbb, 0x03,
-0xbd, 0xfe, 0xa8, 0x71, 0x99, 0x14, 0x95, 0x96,
-0x4f, 0xc1, 0xbb, 0xb8, 0x7e, 0xfc, 0x69, 0xf9,
-0x17, 0x30, 0xa4, 0xcf, 0x8b, 0x7f, 0xf3, 0xbb,
-0x7e, 0x70, 0xf8, 0x3c, 0x19, 0x38, 0xa8, 0x5c,
-0xe4, 0x4f, 0x1a, 0x54, 0xfd, 0x40, 0x84, 0x11,
-0x51, 0x2d, 0x1f, 0xb4, 0x5e, 0x4e, 0x0a, 0xe1,
-0x7d, 0xe5, 0x42, 0xea, 0x26, 0x28, 0x19, 0xec,
-0x6c, 0x77, 0xf3, 0xdf, 0x85, 0xbf, 0xb1, 0xae,
-0xad, 0x38, 0x2d, 0xcf, 0x84, 0x67, 0x34, 0x11,
-0x6d, 0x1c, 0xb6, 0xf1, 0xf6, 0x08, 0x8c, 0x2c,
-0x5b, 0x80, 0xf8, 0xc7, 0xef, 0xf2, 0x61, 0x86,
-0x24, 0xca, 0x07, 0xd4, 0x8d, 0x82, 0xb4, 0x7f,
-0x35, 0xdc, 0xca, 0xeb, 0x05, 0x0c, 0x86, 0x27,
-0x98, 0x28, 0xa4, 0xd0, 0x04, 0xdc, 0xd4, 0xb9,
-0xaa, 0x35, 0xbb, 0xfc, 0x9f, 0x91, 0x82, 0x25,
-0x7c, 0x37, 0xa4, 0x8c, 0xa2, 0x34, 0x5a, 0x73,
-0x7f, 0x46, 0x84, 0xbd, 0xfa, 0xed, 0xfd, 0xda,
-0xc4, 0xd3, 0x42, 0x64, 0x3b, 0x42, 0x47, 0x37,
-0xfe, 0xf5, 0x9e, 0x34, 0x55, 0xda, 0xcb, 0xab,
-0x57, 0xee, 0x3f, 0x1b, 0x9e, 0x6a, 0xc7, 0xbf,
-0x7e, 0xa6, 0xee, 0xe5, 0xd7, 0x09, 0xc7, 0x88,
-0x8a, 0x67, 0xf1, 0x54, 0xeb, 0x8b, 0x9e, 0x1a,
-0xe6, 0x54, 0xff, 0xf0, 0x3c, 0x39, 0x61, 0x62,
-0x8c, 0xb3, 0xa7, 0xf4, 0x18, 0x39, 0x4e, 0xfb,
-0xe1, 0x5d, 0x2d, 0x4a, 0x8e, 0xa0, 0x7e, 0x3c,
-0x4c, 0xcf, 0x4f, 0x06, 0x40, 0x3e, 0x71, 0x95,
-0xa3, 0x4f, 0xab, 0xfe, 0xb3, 0x81, 0xb0, 0xf6,
-0x37, 0x06, 0xf1, 0xa3, 0xfc, 0xef, 0xe2, 0xfe,
-0x95, 0x5d, 0x3f, 0x6b, 0x60, 0x0f, 0x6b, 0xe4,
-0xc1, 0xb6, 0xe6, 0xa1, 0x42, 0x7b, 0xbe, 0xd9,
-0xfa, 0x3f, 0x46, 0x71, 0xda, 0x5f, 0xa5, 0x5d,
-0x86, 0x3c, 0xfd, 0x24, 0x4c, 0xa9, 0x2e, 0x53,
-0x9c, 0x94, 0x9b, 0xf2, 0xeb, 0xff, 0x18, 0x59,
-0xfe, 0xb3, 0xf0, 0x27, 0x3b, 0x85, 0x55, 0x8f,
-0xeb, 0x6b, 0xa1, 0x8a, 0xab, 0x6d, 0xbe, 0x32,
-0xa7, 0x9e, 0xe1, 0x22, 0xf8, 0x2e, 0xae, 0xe6,
-0xaa, 0x15, 0xea, 0x18, 0xbb, 0x46, 0x17, 0x61,
-0x3e, 0x9c, 0xaf, 0xe3, 0x11, 0xd2, 0x37, 0xf2,
-0xaa, 0xad, 0x45, 0xaf, 0xb0, 0x45, 0x79, 0xfe,
-0x1f, 0x7d, 0x45, 0x64, 0x3e, 0xfb, 0xb8, 0x7d,
-0xbe, 0x40, 0x7d, 0x72, 0x3a, 0xcf, 0x16, 0x3e,
-0xc3, 0x13, 0x47, 0xf5, 0x94, 0x7a, 0x55, 0xd9,
-0x32, 0x27, 0x3e, 0x68, 0xf9, 0x7f, 0x66, 0x27,
-0x03, 0x5f, 0x2a, 0x9f, 0x61, 0x9c, 0x43, 0x44,
-0x49, 0xfe, 0x1f, 0xe9, 0x1c, 0x17, 0xf8, 0xe7,
-0x6d, 0x78, 0x0e, 0xe6, 0xec, 0x2b, 0x1e, 0x91,
-0xef, 0x76, 0xea, 0xcf, 0x58, 0xfe, 0x9f, 0x43,
-0x52, 0x09, 0xef, 0xcc, 0xa8, 0x74, 0xfa, 0xb8,
-0x5f, 0x14, 0x82, 0xd6, 0x68, 0x3f, 0x2a, 0x37,
-0x61, 0x4c, 0x3b, 0x14, 0x1a, 0x57, 0xff, 0xf9,
-0x28, 0xec, 0xa2, 0xfc, 0xa0, 0xa8, 0xd2, 0x87,
-0x40, 0x31, 0x98, 0xfc, 0x13, 0xba, 0x22, 0xf6,
-0xbb, 0x28, 0x9c, 0x4d, 0x7e, 0x95, 0x42, 0x63,
-0x2c, 0xa7, 0xfe, 0x61, 0x87, 0x11, 0x26, 0x27,
-0xc3, 0x34, 0x58, 0x6f, 0xcc, 0xa3, 0xfd, 0xb7,
-0x1f, 0xc7, 0x13, 0x9e, 0x59, 0xb1, 0x9d, 0x75,
-0x18, 0xf3, 0x96, 0xdf, 0xaa, 0x79, 0xbc, 0xf3,
-0x21, 0x45, 0x81, 0xf5, 0x8b, 0xc2, 0x6d, 0x37,
-0xd2, 0xf8, 0x87, 0x8c, 0x19, 0x38, 0xac, 0x6c,
-0x25, 0x3c, 0xe4, 0xf8, 0x7f, 0x60, 0x46, 0x8b,
-0x6f, 0x13, 0x73, 0xe8, 0x15, 0x10, 0x00, 0x2a,
-0x13, 0x1d, 0x36, 0xae, 0xa6, 0x6a, 0xc6, 0x0f,
-0xe8, 0xdb, 0x69, 0xd8, 0x30, 0xb3, 0x0b, 0x41,
-0x23, 0xf4, 0xaa, 0xa1, 0x88, 0x8f, 0xec, 0xe4,
-0x63, 0x8e, 0xa9, 0x77, 0x1a, 0x03, 0x6d, 0xb1,
-0x8a, 0x4f, 0x22, 0xec, 0x69, 0x1a, 0x5c, 0xb6,
-0x80, 0xf2, 0xfd, 0xe3, 0x94, 0x76, 0x4d, 0xf1,
-0xaf, 0x38, 0xaa, 0x6e, 0x06, 0x94, 0x70, 0xff,
-0x3c, 0x87, 0xff, 0xb3, 0xf1, 0xea, 0x61, 0x46,
-0x6c, 0x9f, 0x92, 0x76, 0x79, 0xd8, 0xf8, 0x95,
-0xd6, 0x40, 0x6c, 0x16, 0x2a, 0x63, 0x28, 0xe6,
-0xbb, 0xa3, 0xed, 0x32, 0x5c, 0x67, 0x4c, 0x6a,
-0x93, 0x7f, 0xe1, 0xd8, 0xf3, 0xee, 0x02, 0xd2,
-0x46, 0x5d, 0x5b, 0x60, 0xb3, 0x5c, 0x93, 0x7c,
-0x26, 0x73, 0x23, 0x0d, 0xdb, 0xee, 0xfa, 0x8b,
-0x9e, 0xa6, 0x5b, 0x0d, 0xfa, 0x99, 0x9b, 0xff,
-0xae, 0x9d, 0xec, 0xea, 0x4e, 0x6d, 0xd3, 0x23,
-0xf7, 0xfa, 0xaa, 0xd9, 0xc6, 0xc1, 0x6d, 0xe0,
-0x2d, 0x84, 0x58, 0x65, 0x10, 0x23, 0xfa, 0x56,
-0x5e, 0x56, 0xe8, 0xf2, 0x7f, 0xf0, 0x7c, 0xb1,
-0x56, 0xad, 0x6a, 0x55, 0x97, 0xb1, 0xca, 0xd4,
-0x5a, 0xc1, 0xee, 0x76, 0xfd, 0x3f, 0xfd, 0xa1,
-0xec, 0xc4, 0xaf, 0x91, 0xec, 0xf9, 0xf6, 0x54,
-0x76, 0x01, 0x2e, 0xc2, 0x36, 0xb5, 0x2d, 0x5c,
-0x81, 0xab, 0x31, 0x8b, 0x7f, 0x6e, 0x14, 0xfa,
-0x0c, 0xaf, 0x26, 0x46, 0x74, 0x5c, 0x7e, 0x80,
-0x7d, 0xc9, 0xa9, 0x7f, 0x95, 0xaa, 0x1c, 0x66,
-0x47, 0x11, 0xf6, 0xd0, 0xf3, 0xe3, 0x44, 0x16,
-0x64, 0xfd, 0x39, 0x49, 0x2b, 0x11, 0xbe, 0xe9,
-0xa8, 0xd9, 0xd0, 0x84, 0x82, 0x9b, 0xff, 0x2e,
-0xfc, 0x3f, 0x3a, 0x7e, 0xbb, 0xb9, 0x7a, 0x98,
-0x8f, 0xcb, 0xff, 0xaa, 0x39, 0x6b, 0x0a, 0x46,
-0xf4, 0x26, 0x0f, 0xfe, 0xb1, 0xe2, 0x5f, 0x01,
-0x72, 0xfb, 0x1c, 0xb7, 0x04, 0x5a, 0x81, 0x5f,
-0x27, 0xfc, 0xb3, 0x08, 0x46, 0x06, 0xeb, 0x62,
-0xc5, 0x1d, 0x72, 0x22, 0x87, 0xff, 0x4c, 0xd9,
-0xee, 0xd9, 0xf8, 0x57, 0x75, 0x87, 0xea, 0x49,
-0x84, 0xbf, 0x49, 0xbb, 0x0f, 0xed, 0xc3, 0x86,
-0x55, 0xe5, 0x4d, 0xce, 0x7a, 0x88, 0x74, 0x05,
-0xa8, 0x5e, 0x56, 0xc6, 0x47, 0x69, 0x14, 0x9b,
-0xb8, 0xce, 0xbd, 0xc4, 0xb9, 0x4f, 0x69, 0x0f,
-0x73, 0xbd, 0xff, 0xea, 0x48, 0x5d, 0xc2, 0xb1,
-0x3f, 0x55, 0x80, 0xa7, 0x15, 0xa3, 0x6a, 0xd0,
-0xf7, 0x15, 0x36, 0x05, 0xfe, 0xd9, 0xa8, 0x4a,
-0xd9, 0x44, 0xbe, 0x3e, 0x3a, 0xbf, 0xd0, 0xfb,
-0x48, 0x2f, 0x72, 0xab, 0xe1, 0xdc, 0xbf, 0x7b,
-0xaa, 0x76, 0x89, 0xef, 0x4e, 0xd5, 0x8e, 0xe0,
-0xc1, 0xe5, 0x35, 0xbe, 0x33, 0x15, 0xb5, 0x1c,
-0x41, 0x33, 0xe9, 0x7c, 0x7d, 0x1b, 0xbc, 0xd1,
-0x75, 0x97, 0x5e, 0xbc, 0x4a, 0xde, 0xe0, 0x2c,
-0x68, 0x75, 0x72, 0xaf, 0xf0, 0xbe, 0x16, 0x93,
-0x1b, 0xf6, 0x6d, 0x3a, 0x86, 0x38, 0xfe, 0x8d,
-0xbd, 0xf2, 0x69, 0x8d, 0x18, 0x79, 0x68, 0xb8,
-0xdc, 0x78, 0x9f, 0x29, 0xea, 0x3f, 0xcf, 0x21,
-0xfc, 0x33, 0x0f, 0x2e, 0xf0, 0x39, 0x16, 0x91,
-0xf5, 0x79, 0x72, 0x04, 0x5d, 0x90, 0xeb, 0xd8,
-0xb3, 0x5d, 0x73, 0xaa, 0x4a, 0xc6, 0xe4, 0x41,
-0xc7, 0x9e, 0xec, 0x28, 0xed, 0x31, 0x1e, 0x83,
-0x6a, 0x2a, 0x32, 0x56, 0x41, 0xde, 0x1e, 0x2e,
-0x1c, 0x41, 0xdf, 0x13, 0xfe, 0x1c, 0x79, 0x39,
-0xac, 0xd5, 0xaa, 0xba, 0x10, 0x11, 0xbd, 0xe5,
-0xec, 0x17, 0x3d, 0x7c, 0x0b, 0x1c, 0x54, 0xc9,
-0x29, 0x84, 0x5b, 0xec, 0x63, 0x5c, 0x8c, 0xbf,
-0x60, 0x17, 0xae, 0x87, 0x38, 0x2e, 0x15, 0xcd,
-0xf7, 0x95, 0x44, 0xca, 0xd1, 0xff, 0xca, 0x8a,
-0x01, 0x0a, 0xeb, 0x84, 0x01, 0x98, 0x4c, 0xd9,
-0x85, 0xdc, 0x2e, 0x6c, 0xd2, 0x87, 0xf6, 0xff,
-0x93, 0x5a, 0x87, 0xa6, 0x4f, 0xc3, 0xf3, 0xd7,
-0xa0, 0x07, 0xff, 0xec, 0xa0, 0xfa, 0x3f, 0x27,
-0x03, 0x31, 0xff, 0x4c, 0x9c, 0xf8, 0x2e, 0x6b,
-0xbe, 0xb8, 0xbf, 0x53, 0x85, 0x96, 0x59, 0x70,
-0xd4, 0xac, 0x33, 0x4b, 0x0e, 0xca, 0x2e, 0x1f,
-0x89, 0x03, 0xf1, 0xc3, 0x0f, 0xa1, 0x75, 0xad,
-0x3e, 0x6e, 0x9c, 0x73, 0xf4, 0xc3, 0x85, 0xbd,
-0x7d, 0x56, 0x3f, 0xab, 0x0b, 0x06, 0x82, 0x5b,
-0x7f, 0xb8, 0x4f, 0xa3, 0x7a, 0x77, 0x8d, 0x7c,
-0x49, 0xa6, 0x73, 0xbe, 0xfe, 0x14, 0xcc, 0xe1,
-0x5e, 0x3c, 0x50, 0x0f, 0xcf, 0xf6, 0xcf, 0x21,
-0xaa, 0xb0, 0xe9, 0xec, 0x77, 0x7d, 0x5d, 0xf3,
-0xe1, 0x10, 0xcc, 0x44, 0xfc, 0xdc, 0x34, 0x1f,
-0x7e, 0x04, 0x33, 0x72, 0x0a, 0x11, 0xff, 0x07,
-0x21, 0x96, 0x94, 0x4a, 0xfc, 0x67, 0xfb, 0xf7,
-0x42, 0xfc, 0x23, 0xaa, 0x83, 0x16, 0xe1, 0xb1,
-0x4b, 0xc1, 0xdd, 0x39, 0x67, 0x7c, 0x0d, 0xac,
-0x57, 0xc3, 0xba, 0x6f, 0x5f, 0x22, 0xe3, 0xe4,
-0x53, 0xa8, 0x8a, 0x2a, 0xe2, 0xef, 0x7e, 0xb4,
-0x3f, 0x90, 0x72, 0x88, 0xaf, 0x2c, 0x4b, 0xfc,
-0x58, 0x4f, 0x4b, 0x37, 0xc6, 0xdc, 0xfa, 0x1b,
-0x88, 0x7f, 0x44, 0x91, 0xd5, 0x62, 0xc0, 0xf5,
-0x7f, 0x14, 0xe6, 0x79, 0xd6, 0x43, 0x3b, 0xa3,
-0x37, 0xae, 0x8e, 0x4a, 0x25, 0x98, 0x2e, 0xfe,
-0xf9, 0xd7, 0x31, 0x38, 0x03, 0x8d, 0x10, 0x30,
-0xe5, 0x51, 0xf5, 0x22, 0xdc, 0x44, 0xf3, 0x7d,
-0xc5, 0xf6, 0x77, 0x5d, 0x40, 0xd3, 0xf4, 0x64,
-0x47, 0xc9, 0xa8, 0x9c, 0x71, 0xf1, 0x8c, 0x74,
-0x0e, 0x2e, 0xf3, 0x1b, 0xe2, 0x1b, 0x96, 0xcb,
-0x75, 0xda, 0xf3, 0x75, 0x73, 0x86, 0x03, 0x19,
-0x7f, 0x8c, 0xf8, 0xf3, 0x94, 0x1f, 0x77, 0x0e,
-0x0f, 0xfe, 0xbb, 0xe3, 0x4b, 0xc6, 0x3c, 0xfc,
-0x1f, 0x13, 0xde, 0x81, 0x1b, 0xf9, 0x36, 0x22,
-0x01, 0xce, 0x80, 0xfb, 0x5b, 0x22, 0xa6, 0x2f,
-0xdd, 0x54, 0x65, 0x6c, 0xe0, 0xb3, 0x32, 0x88,
-0x37, 0xbe, 0x4f, 0x1e, 0x9b, 0xb8, 0x6f, 0x9f,
-0x87, 0xff, 0x33, 0x20, 0xf8, 0xcf, 0xc2, 0xec,
-0xe8, 0xf0, 0x70, 0x0c, 0xd1, 0x2f, 0x2f, 0xec,
-0x2a, 0xcb, 0xfa, 0x7f, 0x46, 0x60, 0x83, 0x16,
-0x01, 0x9c, 0xaf, 0x87, 0xff, 0x53, 0xfa, 0x08,
-0x3c, 0x11, 0x5f, 0x61, 0x6c, 0xd8, 0x52, 0x16,
-0x09, 0xff, 0x00, 0xe8, 0xfe, 0x6c, 0x87, 0x5d,
-0x58, 0x1b, 0xef, 0x0f, 0x33, 0xe2, 0xf7, 0xa6,
-0x57, 0x8c, 0x3a, 0xef, 0xaf, 0x51, 0xf1, 0x23,
-0x38, 0x6f, 0xe2, 0xb1, 0x6b, 0xfe, 0xc7, 0x75,
-0xc1, 0xff, 0x89, 0xfe, 0x07, 0x5a, 0x83, 0x2c,
-0x3e, 0x3c, 0xa6, 0x1f, 0x63, 0xf3, 0xf5, 0x8d,
-0xa8, 0x1f, 0xb7, 0xfe, 0x21, 0x88, 0xfd, 0x7d,
-0xe4, 0x13, 0x84, 0x06, 0x2d, 0x7e, 0xaf, 0xbf,
-0xdd, 0x5e, 0x0f, 0xfb, 0xe0, 0x92, 0x71, 0x83,
-0x11, 0xcc, 0xeb, 0x7f, 0xa1, 0xbe, 0x4c, 0x7c,
-0xc5, 0x9d, 0xfe, 0x2a, 0xe5, 0x6d, 0x86, 0xab,
-0x71, 0x3b, 0x1a, 0x3a, 0xab, 0x10, 0x50, 0x67,
-0xaf, 0xf1, 0x16, 0x34, 0xe8, 0xc1, 0x74, 0xf3,
-0x4f, 0xdc, 0xfd, 0x5d, 0x89, 0xc2, 0x6e, 0xa3,
-0x76, 0xd0, 0xff, 0x18, 0x93, 0xe3, 0xaf, 0x21,
-0x0c, 0x53, 0xe7, 0xb0, 0x28, 0xdf, 0x00, 0xb3,
-0xe8, 0xf9, 0x67, 0x40, 0x02, 0x4a, 0x6a, 0x4a,
-0xf6, 0xb1, 0x0f, 0xf2, 0xe3, 0x5f, 0xad, 0xa8,
-0x0d, 0x40, 0x98, 0xad, 0xf7, 0xf9, 0xe6, 0xfa,
-0x5a, 0x6d, 0x3c, 0xec, 0xc3, 0x57, 0xa9, 0x86,
-0xfb, 0x6e, 0xf2, 0xe0, 0x9f, 0x77, 0x29, 0xfe,
-0x65, 0xce, 0x8c, 0xff, 0x3f, 0x88, 0x07, 0xe0,
-0xc1, 0xd4, 0x34, 0xdc, 0x84, 0xd9, 0xa7, 0x6d,
-0x20, 0x74, 0x0d, 0x6c, 0xe6, 0x33, 0x6b, 0x7c,
-0x6b, 0xd8, 0x05, 0x27, 0xfe, 0xde, 0x8a, 0x2b,
-0xe7, 0x7d, 0xb5, 0x9e, 0x60, 0x0f, 0x68, 0xbf,
-0x80, 0x18, 0xb9, 0x7d, 0x56, 0xe1, 0xfd, 0xeb,
-0xcd, 0xe0, 0x6e, 0x59, 0x35, 0x46, 0x6f, 0xaf,
-0x87, 0xa9, 0xb3, 0xbd, 0xfc, 0x9f, 0x29, 0x7b,
-0x04, 0x6c, 0x9e, 0x34, 0x2a, 0xbf, 0x68, 0x5c,
-0x8e, 0x34, 0x5a, 0xf9, 0x02, 0xa8, 0x9f, 0x13,
-0xc1, 0x77, 0xfd, 0x43, 0xa5, 0xa7, 0x71, 0x3f,
-0xfa, 0xf3, 0x77, 0x65, 0x4f, 0x3d, 0x8d, 0x82,
-0x53, 0xf0, 0x4c, 0x1c, 0xcf, 0xb3, 0xf3, 0x65,
-0xe0, 0xff, 0x8f, 0xf0, 0x86, 0xc9, 0x11, 0x10,
-0xf9, 0x5f, 0x69, 0x91, 0x51, 0x5e, 0x9f, 0x42,
-0xe8, 0xe8, 0xcd, 0x7f, 0xdf, 0x0c, 0x93, 0xd4,
-0x99, 0xb8, 0x3f, 0xb2, 0x10, 0x74, 0x6a, 0x37,
-0x98, 0xbe, 0x76, 0xb6, 0x07, 0xed, 0x49, 0x74,
-0x00, 0x0d, 0xe9, 0x20, 0x9d, 0x1f, 0xa1, 0xa4,
-0x3d, 0xfc, 0x9e, 0x1b, 0x0f, 0xc2, 0x4b, 0xd6,
-0xec, 0x7c, 0x57, 0x55, 0x11, 0xed, 0x47, 0x9d,
-0x8f, 0xd3, 0xa4, 0x42, 0x88, 0xea, 0x9a, 0x15,
-0x2f, 0x91, 0x07, 0x8c, 0x0a, 0x41, 0x7b, 0xf3,
-0xdf, 0x9f, 0x86, 0x4e, 0x33, 0xda, 0xff, 0xe7,
-0x35, 0x8c, 0x75, 0x74, 0xc2, 0x74, 0x5a, 0x3f,
-0x1b, 0xad, 0xfc, 0x82, 0x34, 0xfb, 0x31, 0xec,
-0xba, 0x85, 0x4a, 0x73, 0x34, 0x79, 0xf3, 0xdf,
-0xf7, 0x19, 0xc7, 0x86, 0x1a, 0x52, 0xc1, 0xd7,
-0x65, 0x1f, 0x9e, 0x37, 0x77, 0x71, 0x3c, 0x28,
-0xcd, 0xd7, 0xde, 0xb2, 0xf2, 0xdf, 0xc7, 0xba,
-0x2e, 0x99, 0x8d, 0x1d, 0xf7, 0xeb, 0xd5, 0xe7,
-0xbd, 0xf5, 0x0f, 0x9b, 0xf2, 0x69, 0xcf, 0xaf,
-0x5b, 0xf9, 0xef, 0x5d, 0x94, 0xff, 0xa5, 0x11,
-0x35, 0x57, 0xce, 0x89, 0x7f, 0xc1, 0x79, 0x4a,
-0xfb, 0xda, 0x2c, 0x9f, 0xee, 0x7a, 0x1d, 0x81,
-0x62, 0x49, 0x8f, 0xac, 0x50, 0xd9, 0x28, 0xba,
-0x22, 0x1c, 0x41, 0xb8, 0x3f, 0x36, 0x77, 0xe6,
-0xc6, 0xbf, 0xcc, 0xda, 0xe5, 0xfe, 0x2d, 0xe1,
-0x53, 0x2a, 0xbe, 0xef, 0x86, 0xfa, 0x80, 0x6f,
-0x9a, 0x21, 0x88, 0x28, 0xff, 0x1c, 0x9e, 0x6e,
-0x39, 0x22, 0xbe, 0x83, 0xaf, 0x92, 0xe3, 0xff,
-0x01, 0x51, 0xff, 0xa7, 0xf5, 0x5a, 0x2b, 0x5f,
-0x3b, 0x6c, 0xf8, 0xd2, 0xbe, 0x99, 0xda, 0x43,
-0x96, 0x85, 0xd9, 0xce, 0x45, 0x69, 0xe8, 0x4d,
-0x5e, 0xff, 0x0f, 0x28, 0x54, 0xe6, 0xce, 0xb8,
-0x96, 0x60, 0x61, 0x87, 0x5e, 0x63, 0x13, 0x81,
-0x70, 0x05, 0x6a, 0x85, 0x5d, 0x14, 0x11, 0xbb,
-0x53, 0xd6, 0xd8, 0x2d, 0x2e, 0xff, 0x47, 0x75,
-0xe2, 0x5f, 0x23, 0xca, 0x48, 0xdb, 0xae, 0x8a,
-0xfb, 0xc8, 0xff, 0x93, 0xc5, 0x3f, 0x29, 0x2d,
-0xfb, 0x95, 0xcb, 0xff, 0xe9, 0xb9, 0xfa, 0x05,
-0x38, 0xab, 0x88, 0x24, 0x2f, 0x7c, 0x1e, 0x8a,
-0x7f, 0xfd, 0xc4, 0x2f, 0xfc, 0x3f, 0x2d, 0x4b,
-0x93, 0x8b, 0xbe, 0x02, 0x54, 0x08, 0x28, 0x98,
-0xac, 0xde, 0xe6, 0xe8, 0xb3, 0x5b, 0xf4, 0xbf,
-0x68, 0xa0, 0xf3, 0xc8, 0x19, 0x38, 0xaa, 0x2e,
-0x68, 0x53, 0x06, 0xfd, 0x73, 0xa9, 0x10, 0xe2,
-0x2d, 0x81, 0x9f, 0xe0, 0x95, 0xb3, 0x30, 0xc7,
-0xa0, 0xfa, 0x87, 0x8e, 0xfd, 0xa1, 0xf8, 0xd7,
-0x48, 0x36, 0xdb, 0x8b, 0x75, 0x2b, 0xe4, 0x88,
-0xde, 0x14, 0xa1, 0xfa, 0xcf, 0xa0, 0x26, 0x44,
-0x45, 0x44, 0x51, 0x08, 0xe8, 0x39, 0x07, 0x9f,
-0x8b, 0xf8, 0x17, 0xaf, 0x35, 0x3e, 0xa9, 0x15,
-0xf6, 0x4b, 0x1d, 0xbe, 0x88, 0xd1, 0x5a, 0x5a,
-0xd2, 0xa5, 0x13, 0xfe, 0x29, 0x12, 0x85, 0xaf,
-0x2b, 0xc2, 0xf8, 0x15, 0xf3, 0xf0, 0x7f, 0x2a,
-0x1f, 0x89, 0x3d, 0x1a, 0xae, 0x35, 0xd5, 0x24,
-0x9c, 0x36, 0xd6, 0x8b, 0xb2, 0x3f, 0x25, 0xdb,
-0x0d, 0xc2, 0x3f, 0xd7, 0x25, 0x57, 0x50, 0x21,
-0xa0, 0x6d, 0x14, 0x2f, 0x3b, 0xe5, 0xd6, 0x57,
-0xa9, 0xf8, 0xf7, 0xc9, 0x2f, 0x76, 0xd5, 0xff,
-0x55, 0xf1, 0xe6, 0xcf, 0x0f, 0x73, 0xc2, 0x3f,
-0xd1, 0xa4, 0xff, 0x11, 0xed, 0x1f, 0x45, 0x46,
-0x64, 0x35, 0xa5, 0xfe, 0xc5, 0x5a, 0x11, 0xff,
-0xf7, 0x3a, 0xf3, 0x25, 0xfc, 0x73, 0x1d, 0x6f,
-0x38, 0x19, 0x4c, 0x2e, 0x72, 0xcb, 0x20, 0x88,
-0x7a, 0x98, 0x25, 0x94, 0xda, 0xfc, 0x6e, 0xc1,
-0xd4, 0x56, 0x44, 0x8c, 0xde, 0xf8, 0x17, 0xf9,
-0x7f, 0x1a, 0x24, 0x51, 0x76, 0x72, 0x44, 0x10,
-0x81, 0xaa, 0xf5, 0xec, 0x2f, 0xd2, 0x99, 0xd1,
-0x46, 0x60, 0x57, 0x2c, 0x2f, 0xff, 0x3d, 0x42,
-0x24, 0x9f, 0x7d, 0xfe, 0xe1, 0xc4, 0xf2, 0x8a,
-0x7b, 0xa5, 0x70, 0x87, 0x9a, 0x81, 0x05, 0x5c,
-0xe0, 0x1f, 0xaa, 0xff, 0x7c, 0x0e, 0xaa, 0xbb,
-0xfd, 0xbf, 0xf0, 0xd6, 0x3f, 0x5c, 0xbb, 0x84,
-0xa2, 0x0f, 0xe0, 0x9f, 0xd1, 0xb4, 0xd8, 0x7c,
-0x82, 0x85, 0xfb, 0x7c, 0x8f, 0x25, 0x6e, 0xeb,
-0x11, 0xc4, 0x5d, 0x9d, 0x1d, 0x31, 0x84, 0xe9,
-0xa6, 0xfe, 0x17, 0x0e, 0xfe, 0x91, 0x26, 0xc3,
-0xe3, 0xbe, 0x99, 0xdc, 0x1f, 0x67, 0xcb, 0xd5,
-0x07, 0xf5, 0xaa, 0x7e, 0xd0, 0x99, 0x87, 0x48,
-0xbc, 0x9b, 0xe2, 0xd7, 0x6d, 0x65, 0x9e, 0xfa,
-0x87, 0xea, 0x54, 0xed, 0x0c, 0x5f, 0x58, 0x13,
-0x5c, 0x45, 0xb4, 0x9f, 0xd4, 0xee, 0x0c, 0x5b,
-0xe3, 0xff, 0x73, 0x27, 0x22, 0x16, 0xfa, 0x65,
-0xc7, 0x5d, 0xf1, 0xe0, 0xf2, 0xf1, 0xf5, 0x0f,
-0x7b, 0x82, 0xa9, 0xe6, 0xe3, 0xda, 0xdb, 0xbc,
-0xe1, 0x44, 0x30, 0x55, 0x8e, 0x3b, 0x3e, 0x05,
-0x7a, 0x32, 0xf2, 0x69, 0xe5, 0x6d, 0xf8, 0xba,
-0x14, 0x4c, 0x96, 0x1f, 0xee, 0xb2, 0xf5, 0x43,
-0xf5, 0x0f, 0x7f, 0x9b, 0x2c, 0xaf, 0x81, 0xbf,
-0x91, 0xa7, 0xc2, 0xf3, 0x1b, 0xf1, 0xfc, 0x7e,
-0xb6, 0xfc, 0xab, 0x6d, 0xbf, 0x26, 0xfe, 0xcf,
-0x59, 0xf9, 0x55, 0xe9, 0xb5, 0xe4, 0x1c, 0x3d,
-0x78, 0xd4, 0x63, 0xaf, 0x76, 0x94, 0x6e, 0x31,
-0xe6, 0x85, 0xa4, 0x2e, 0xf5, 0x4e, 0x16, 0x62,
-0xf7, 0xe0, 0xf9, 0xcb, 0xf7, 0x0f, 0x85, 0x3d,
-0x16, 0x9e, 0xb9, 0x8b, 0xbd, 0x22, 0xdd, 0x13,
-0xab, 0x52, 0xfc, 0x06, 0x7b, 0xcb, 0xa9, 0xb7,
-0x93, 0x84, 0x2d, 0xca, 0x66, 0xa9, 0x8a, 0xb7,
-0xde, 0x89, 0xe8, 0xae, 0x93, 0xca, 0x94, 0xb5,
-0x17, 0x9a, 0x55, 0xdf, 0x13, 0x15, 0xa4, 0xd9,
-0x85, 0xf8, 0x3d, 0x0a, 0xc5, 0xeb, 0x9b, 0x8e,
-0x38, 0xf8, 0x6a, 0x75, 0xc5, 0x73, 0x84, 0x7f,
-0x52, 0xaa, 0xce, 0x8a, 0xd4, 0x0d, 0x44, 0xac,
-0x9a, 0xcb, 0x9e, 0x01, 0x3b, 0xde, 0x51, 0xd2,
-0x09, 0x7a, 0xcc, 0x0f, 0x6c, 0xc8, 0xc1, 0xe7,
-0x54, 0xff, 0xe7, 0x25, 0x5e, 0x57, 0x84, 0xe7,
-0xa3, 0x69, 0xb4, 0xdb, 0x9a, 0x81, 0x83, 0xf2,
-0xaf, 0xed, 0x42, 0x73, 0xbf, 0xa2, 0xfe, 0x17,
-0x03, 0xf8, 0xfb, 0xba, 0xf5, 0x22, 0x70, 0x59,
-0xc6, 0xcf, 0xc5, 0x1b, 0x4a, 0x67, 0x6d, 0xc6,
-0x4d, 0xfc, 0xbc, 0x82, 0xc3, 0x0e, 0x48, 0x3b,
-0xf8, 0x79, 0x87, 0x78, 0x89, 0xf6, 0x64, 0xe9,
-0x66, 0x7c, 0xf5, 0xec, 0xf9, 0x76, 0x68, 0x17,
-0x34, 0xb4, 0xe7, 0xb1, 0x60, 0x26, 0x71, 0x66,
-0x3a, 0xc5, 0xbf, 0xd0, 0xfe, 0x2f, 0xe0, 0x16,
-0x23, 0x9a, 0x5d, 0x4a, 0xbd, 0x0d, 0x8d, 0x83,
-0x88, 0x7f, 0xdc, 0xfc, 0x44, 0xb3, 0x6b, 0x35,
-0x1c, 0xe8, 0xaf, 0x6d, 0x97, 0xd7, 0xb2, 0xc3,
-0x6c, 0x83, 0x14, 0x36, 0x5b, 0x0f, 0xb2, 0x88,
-0xcd, 0x88, 0x7e, 0x47, 0x42, 0xa1, 0x0a, 0x85,
-0x11, 0x6f, 0xfd, 0x67, 0xf5, 0x80, 0x89, 0xa7,
-0x8f, 0x64, 0xe2, 0x94, 0xf0, 0xb7, 0x6f, 0xe8,
-0x29, 0xcc, 0x8e, 0xdf, 0xc1, 0x4e, 0xab, 0x4f,
-0xd0, 0x79, 0x64, 0xe3, 0xf4, 0x8c, 0x53, 0x0f,
-0x9c, 0xe2, 0x5f, 0x69, 0x5a, 0x6f, 0xc0, 0x4c,
-0x54, 0x8b, 0xde, 0xd7, 0x1d, 0x0b, 0xab, 0xb8,
-0x6c, 0x56, 0x3b, 0x44, 0x05, 0xfc, 0x6a, 0xb1,
-0x37, 0xff, 0x7d, 0xb5, 0xc5, 0x46, 0xe0, 0xe5,
-0xc3, 0xea, 0x79, 0x98, 0x6d, 0xde, 0x96, 0xf6,
-0x47, 0x5c, 0x46, 0xf4, 0xdb, 0xf4, 0x06, 0xa1,
-0x29, 0xee, 0xf4, 0xc6, 0xbf, 0x2e, 0xc0, 0x42,
-0x08, 0x9a, 0xd5, 0xa3, 0xe3, 0xdc, 0x3e, 0x56,
-0xfd, 0x1f, 0xfc, 0x6a, 0xa4, 0x26, 0x37, 0xff,
-0x6b, 0x56, 0x3c, 0x60, 0x96, 0xff, 0xbd, 0xfa,
-0xbc, 0x1d, 0xf6, 0xfa, 0x39, 0x0a, 0x25, 0x24,
-0x5c, 0x80, 0x39, 0xf1, 0xe2, 0x8c, 0xec, 0xc6,
-0xbf, 0xcc, 0xe4, 0x3b, 0x2a, 0xb1, 0x7d, 0x22,
-0x1c, 0x77, 0xf3, 0x6c, 0xff, 0xaf, 0xe3, 0xb0,
-0x9e, 0xd7, 0x9a, 0xb8, 0xad, 0x9f, 0xd6, 0xf6,
-0x51, 0xe9, 0xe6, 0x1e, 0xb4, 0xcf, 0x2e, 0xfe,
-0x11, 0xd1, 0x4f, 0xc3, 0xa7, 0x35, 0x19, 0x62,
-0x19, 0xf8, 0x3c, 0x7c, 0xef, 0xe3, 0x90, 0xc2,
-0xf1, 0xeb, 0xf5, 0xf0, 0xdf, 0xba, 0xf9, 0x5f,
-0x95, 0xa7, 0xa9, 0x7e, 0x0e, 0xde, 0xc4, 0xe7,
-0x71, 0xa3, 0x75, 0xf3, 0xac, 0x40, 0xf5, 0x6f,
-0xd5, 0x0e, 0x4f, 0xff, 0x2f, 0x0d, 0xc7, 0x9f,
-0x97, 0xea, 0xbb, 0xa3, 0xdd, 0xb2, 0xc1, 0xec,
-0xfe, 0x53, 0xd2, 0x8b, 0x3c, 0x1b, 0x18, 0x7d,
-0x93, 0xa7, 0xee, 0x2e, 0x8e, 0xca, 0x86, 0x9b,
-0xff, 0x25, 0x51, 0x7e, 0x13, 0x6a, 0x23, 0xe5,
-0x7f, 0xd7, 0xa1, 0xfd, 0x28, 0x97, 0x6d, 0x7e,
-0xf8, 0x6f, 0xa4, 0x27, 0x8d, 0xa5, 0x19, 0x39,
-0x3f, 0xff, 0xab, 0x01, 0x02, 0x0f, 0x88, 0xb0,
-0x8e, 0x1d, 0x6f, 0xe5, 0x75, 0x56, 0x45, 0xc4,
-0x81, 0x58, 0x43, 0xeb, 0x6d, 0xa9, 0xa0, 0x87,
-0xff, 0x63, 0xc5, 0x43, 0x5b, 0xd5, 0x07, 0xd8,
-0xa3, 0x86, 0xc3, 0x87, 0xbf, 0xd7, 0x0c, 0x0f,
-0x0a, 0x61, 0x3d, 0x95, 0x06, 0xea, 0x95, 0xef,
-0xb6, 0x7f, 0x5e, 0x1b, 0xff, 0xd4, 0x5d, 0x97,
-0xf6, 0x49, 0x90, 0x2d, 0xdc, 0x77, 0x5a, 0x7a,
-0x18, 0x74, 0x11, 0x91, 0x67, 0x1d, 0x66, 0x4d,
-0xbb, 0x2f, 0x72, 0x38, 0xe6, 0x8c, 0x1f, 0x15,
-0xf5, 0x9f, 0x67, 0x6e, 0x57, 0xff, 0x86, 0x7d,
-0xc7, 0x71, 0x83, 0x28, 0xf7, 0xf7, 0x57, 0xa1,
-0x50, 0xf8, 0xaa, 0xb4, 0x96, 0xcf, 0x5a, 0x1d,
-0x09, 0xb1, 0x56, 0xcd, 0xc3, 0xff, 0x21, 0xb6,
-0x0f, 0x04, 0xae, 0x97, 0xc1, 0xad, 0xff, 0xf3,
-0x65, 0x5c, 0xa8, 0xc1, 0x58, 0xf3, 0x69, 0x78,
-0x0a, 0xea, 0x5b, 0x4b, 0xa6, 0x25, 0xae, 0x71,
-0x1c, 0x04, 0x96, 0xff, 0x67, 0x61, 0x69, 0xf0,
-0xdd, 0x66, 0xab, 0xff, 0xd7, 0x47, 0x49, 0x2d,
-0x1f, 0x48, 0xb6, 0x23, 0x51, 0x5b, 0xd8, 0x1a,
-0x1c, 0x9d, 0x34, 0x38, 0xc9, 0xd6, 0x3f, 0xf9,
-0x7f, 0x10, 0x1f, 0xf6, 0xe0, 0xfb, 0xcb, 0x3c,
-0xfd, 0xbf, 0x3a, 0xe6, 0x65, 0xf9, 0x78, 0xb8,
-0x83, 0x07, 0xa8, 0x3e, 0x6d, 0x1e, 0xff, 0x87,
-0xab, 0x99, 0xf2, 0xe5, 0xde, 0xfe, 0x5f, 0xe2,
-0xd8, 0xf8, 0x8a, 0xf2, 0x18, 0xcc, 0x06, 0xb5,
-0x7d, 0x9b, 0x6b, 0xff, 0x0d, 0x98, 0xaa, 0xe1,
-0x34, 0xc3, 0xea, 0x1a, 0x56, 0x27, 0x7d, 0xcf,
-0xf2, 0xff, 0x10, 0xff, 0x67, 0x5a, 0xa6, 0xc8,
-0x12, 0xfe, 0x7d, 0x85, 0xda, 0x8a, 0xaf, 0x92,
-0xfd, 0xc9, 0xf2, 0x7f, 0x22, 0x91, 0x34, 0xbb,
-0xd5, 0x31, 0x3b, 0xb0, 0xab, 0x4b, 0xb7, 0xfc,
-0xab, 0xbb, 0x75, 0xbd, 0x0d, 0xf1, 0xf6, 0x4b,
-0x39, 0xfd, 0x2f, 0x5e, 0x82, 0xfa, 0x64, 0x20,
-0xb3, 0x61, 0xc1, 0xe1, 0x63, 0xd0, 0xd0, 0x61,
-0xe5, 0x7f, 0xa5, 0xe6, 0xf1, 0x7b, 0x52, 0xe5,
-0x23, 0x1a, 0xe2, 0xe1, 0xf4, 0xea, 0xde, 0x4e,
-0x6f, 0xfe, 0x97, 0x0d, 0x7b, 0xfc, 0x96, 0xb0,
-0x34, 0x9f, 0x08, 0x54, 0x46, 0xfc, 0x67, 0x97,
-0x8f, 0x6a, 0xd5, 0xff, 0xc9, 0x44, 0xbf, 0xe3,
-0xf7, 0x10, 0x3f, 0xfe, 0xd1, 0xaa, 0xe7, 0x3f,
-0xcc, 0xfa, 0xb6, 0x96, 0xb5, 0x07, 0xbc, 0xf8,
-0x10, 0xf1, 0x8f, 0x46, 0xdd, 0x2e, 0xf0, 0x25,
-0xaa, 0xe1, 0x36, 0x9f, 0x47, 0x41, 0x44, 0xd4,
-0x4a, 0x19, 0x49, 0x4a, 0x91, 0xb9, 0x2d, 0x5e,
-0xfc, 0x40, 0x22, 0xe3, 0xcc, 0x37, 0x54, 0x40,
-0x45, 0x69, 0x6a, 0x5b, 0x7c, 0x49, 0xb4, 0x1c,
-0xd6, 0xf8, 0x32, 0x1c, 0xaf, 0xe1, 0x1b, 0x97,
-0x5c, 0x8c, 0x08, 0x44, 0xed, 0x6d, 0x6a, 0xa5,
-0xfa, 0xcf, 0xf6, 0x47, 0x6d, 0xb1, 0xea, 0xff,
-0xdc, 0x52, 0xc6, 0x10, 0xed, 0x30, 0x0f, 0x1f,
-0x46, 0x64, 0x84, 0x75, 0xe8, 0xbd, 0x04, 0x0c,
-0xdc, 0xf8, 0x97, 0xcd, 0xff, 0x29, 0x59, 0xeb,
-0xb7, 0x88, 0xdf, 0x93, 0xa8, 0xfe, 0xe1, 0x01,
-0x68, 0xa8, 0x60, 0x28, 0xb4, 0x0e, 0xb0, 0x05,
-0x15, 0x01, 0x2e, 0xbf, 0xe3, 0xac, 0x9f, 0x6e,
-0xc1, 0xff, 0xa9, 0x37, 0x8a, 0x7f, 0x22, 0x7f,
-0xc5, 0x9b, 0xff, 0x65, 0x09, 0xca, 0x6f, 0xb4,
-0xc7, 0xcc, 0x49, 0x0f, 0xc8, 0xef, 0xe4, 0xf4,
-0xff, 0x7a, 0x11, 0x44, 0x91, 0x1f, 0xcf, 0x78,
-0x87, 0xff, 0x7c, 0x11, 0xae, 0x6f, 0x09, 0x6c,
-0x92, 0x7d, 0x5e, 0xfc, 0xa3, 0x8c, 0x09, 0xfc,
-0xe3, 0x8f, 0x7b, 0xf3, 0xbf, 0x28, 0xed, 0x0b,
-0x32, 0x9a, 0xd5, 0xff, 0x82, 0x79, 0xfd, 0x3f,
-0xfd, 0x76, 0xbd, 0xa3, 0x23, 0x42, 0xa0, 0xfe,
-0x5f, 0xa9, 0xfd, 0x50, 0x73, 0x8b, 0x35, 0x71,
-0xad, 0xc6, 0x08, 0x95, 0x16, 0xba, 0xfe, 0xc6,
-0x9e, 0xca, 0xed, 0xca, 0xa3, 0x12, 0xd9, 0x1f,
-0x58, 0xe9, 0xe1, 0x53, 0xa9, 0x76, 0x20, 0x4c,
-0xb4, 0x3e, 0x4c, 0x14, 0x7a, 0xeb, 0x1f, 0x2a,
-0x0f, 0x49, 0x73, 0x57, 0x06, 0xfe, 0xb9, 0x68,
-0xa5, 0xfb, 0xfc, 0xef, 0x1e, 0xfe, 0xb4, 0x25,
-0xec, 0x57, 0xe7, 0x7d, 0x25, 0x90, 0xf4, 0x47,
-0x9c, 0xfa, 0x78, 0x84, 0x7f, 0x6e, 0x14, 0xc3,
-0xaa, 0x7f, 0xe9, 0x21, 0x02, 0xe1, 0xb1, 0xdd,
-0x2f, 0xfe, 0x10, 0x1a, 0xe2, 0x7f, 0x97, 0xee,
-0x74, 0xf1, 0xb9, 0x9d, 0xff, 0x35, 0xb3, 0x4b,
-0x76, 0x1b, 0x61, 0x28, 0x63, 0x37, 0x53, 0x45,
-0xc4, 0xea, 0x38, 0x0c, 0xc4, 0xeb, 0xb4, 0x12,
-0x90, 0xef, 0xed, 0xb2, 0xf5, 0x9f, 0xe5, 0xff,
-0xf4, 0xa8, 0x19, 0xdf, 0x7e, 0x82, 0x3d, 0x1d,
-0xfe, 0x2c, 0xed, 0x39, 0x4d, 0x82, 0x76, 0x9f,
-0x51, 0xb5, 0xb9, 0x3b, 0xe5, 0xd2, 0xfd, 0x04,
-0xff, 0x07, 0xad, 0x71, 0x6f, 0xd1, 0x5e, 0xdf,
-0xf1, 0x6e, 0x37, 0xff, 0x6b, 0x20, 0x9a, 0x16,
-0xf6, 0x67, 0x13, 0xd7, 0x93, 0xfe, 0x9a, 0xc2,
-0xc3, 0xf9, 0xfc, 0x1f, 0x3c, 0xb4, 0xfa, 0xb6,
-0x88, 0xb6, 0x5f, 0xd4, 0xff, 0x8b, 0xef, 0x55,
-0x8b, 0x29, 0x0d, 0xea, 0x55, 0x50, 0xd4, 0x2a,
-0xf8, 0x64, 0x5b, 0x59, 0xab, 0x9b, 0xff, 0xde,
-0xfd, 0x39, 0x4a, 0x7b, 0xd7, 0x8b, 0xd7, 0xf8,
-0xbf, 0x9b, 0x85, 0x3d, 0xd2, 0x6b, 0xfc, 0xb7,
-0x7c, 0xca, 0x30, 0xe2, 0x9f, 0xcb, 0x70, 0xa4,
-0x63, 0xb6, 0x3e, 0x6b, 0x7e, 0x6e, 0xfe, 0x17,
-0xe5, 0x93, 0xc2, 0xac, 0x9c, 0xb4, 0x26, 0x14,
-0x86, 0x48, 0x50, 0xde, 0xc7, 0xa9, 0x94, 0xec,
-0x91, 0x13, 0x65, 0xf1, 0xec, 0x78, 0xc3, 0xca,
-0x5f, 0xd6, 0x83, 0x6f, 0x35, 0x4f, 0x85, 0xec,
-0xfe, 0x75, 0x19, 0xf6, 0x26, 0x6f, 0xc8, 0x2c,
-0x1d, 0x6b, 0xbe, 0x24, 0x5d, 0xe2, 0x0b, 0x53,
-0x4b, 0x2e, 0xc8, 0x9e, 0xfc, 0xaf, 0x52, 0x91,
-0xff, 0x05, 0xfe, 0x4f, 0xb3, 0x50, 0xcb, 0x3d,
-0xd9, 0x42, 0x88, 0xda, 0x63, 0xb6, 0xfd, 0xd9,
-0xa3, 0xe3, 0xd4, 0x16, 0xb1, 0xef, 0x3b, 0xe3,
-0x35, 0xbe, 0x85, 0x68, 0x4e, 0x85, 0xfe, 0xcf,
-0xdf, 0x67, 0xe5, 0x6b, 0x14, 0xd1, 0x34, 0xf7,
-0xc2, 0x34, 0xcb, 0x71, 0xf4, 0x88, 0x31, 0xab,
-0x30, 0x12, 0xf3, 0xd4, 0xdf, 0x58, 0x65, 0xf5,
-0xbf, 0x08, 0xf9, 0x1f, 0xf7, 0x05, 0xdc, 0xfe,
-0x83, 0xbb, 0xb2, 0x8e, 0x20, 0x05, 0xb7, 0x7e,
-0x5d, 0xbd, 0x91, 0xb9, 0xf1, 0x02, 0xe2, 0xff,
-0xbc, 0x0c, 0xf5, 0x19, 0x7f, 0xaf, 0xbf, 0xd6,
-0xde, 0xbf, 0x2e, 0xc0, 0xf9, 0xb6, 0x79, 0x96,
-0x70, 0x8e, 0xea, 0x87, 0x74, 0xf9, 0xdd, 0xf8,
-0x57, 0xd2, 0xe2, 0xff, 0xc0, 0xd2, 0x94, 0x7c,
-0xda, 0x38, 0xcf, 0x6c, 0xe2, 0xa5, 0xd6, 0x98,
-0x15, 0xa0, 0xb1, 0x2c, 0x58, 0xd1, 0x39, 0xe2,
-0xc9, 0x7f, 0x3f, 0xa8, 0xa2, 0x19, 0x6f, 0xc1,
-0xd3, 0x5c, 0xbd, 0xdb, 0xff, 0xeb, 0x35, 0xfd,
-0xa3, 0x23, 0x42, 0xf8, 0x00, 0xe6, 0x40, 0x49,
-0x46, 0x1e, 0xd7, 0xff, 0x62, 0xbe, 0xba, 0x11,
-0xee, 0x73, 0xf7, 0xdf, 0xfd, 0x1d, 0xb5, 0xef,
-0x59, 0x8e, 0x1d, 0x1e, 0x8e, 0x6d, 0xdc, 0xc3,
-0x62, 0xde, 0xf8, 0x97, 0x2a, 0xfa, 0x3d, 0xf5,
-0x96, 0x7d, 0x4f, 0x8c, 0xdf, 0x20, 0x86, 0x51,
-0xfe, 0x45, 0xba, 0xf0, 0x34, 0x1c, 0xe0, 0x2b,
-0xc2, 0xb7, 0xf4, 0x78, 0xfc, 0xd5, 0x88, 0x7f,
-0x14, 0x2a, 0x7a, 0xa3, 0x02, 0xdb, 0x2e, 0xfa,
-0x7f, 0x89, 0x46, 0x21, 0x69, 0x72, 0xc3, 0x5a,
-0x42, 0x98, 0xbe, 0x62, 0x39, 0xf8, 0x47, 0xec,
-0xbf, 0x29, 0x79, 0x3b, 0x38, 0xfa, 0xf9, 0x17,
-0xe2, 0x1f, 0x52, 0xc7, 0xab, 0x73, 0xc2, 0xff,
-0x83, 0x60, 0xca, 0x59, 0x9f, 0xff, 0x6a, 0x81,
-0x9c, 0x7f, 0xa3, 0x6e, 0x17, 0x4e, 0xbe, 0x1b,
-0x35, 0x6e, 0x12, 0xc2, 0x41, 0x78, 0x12, 0xee,
-0xcb, 0xc9, 0xff, 0xa2, 0xfa, 0xcf, 0xa5, 0x37,
-0xa8, 0x1b, 0x33, 0xf2, 0xd7, 0x94, 0xe7, 0x7d,
-0x37, 0x0c, 0x2f, 0x7d, 0xaf, 0xba, 0xc1, 0x6a,
-0x84, 0xb1, 0x86, 0x2a, 0x22, 0x42, 0xa3, 0xa8,
-0xff, 0xec, 0xe4, 0x6b, 0x50, 0xff, 0xaf, 0xbd,
-0xf1, 0x70, 0x8d, 0xda, 0xcd, 0x1a, 0xd9, 0xfd,
-0xf1, 0xde, 0x01, 0xff, 0xbb, 0x9d, 0xb5, 0xf0,
-0x8c, 0x05, 0x84, 0x6a, 0xe1, 0x49, 0x3c, 0x6a,
-0xe1, 0x57, 0x31, 0x37, 0xff, 0x8b, 0xfc, 0x3f,
-0x2b, 0x6b, 0xc0, 0x97, 0x2a, 0x3c, 0x6e, 0x3c,
-0xac, 0xd6, 0x0c, 0xf8, 0xeb, 0xac, 0xfa, 0x3f,
-0xe6, 0x86, 0x18, 0x5b, 0x42, 0xd4, 0x68, 0xa3,
-0x28, 0xc5, 0xee, 0xf6, 0xe4, 0x7f, 0xed, 0x40,
-0xfc, 0xb3, 0xad, 0xd5, 0xc7, 0xd9, 0x0e, 0xf8,
-0x01, 0xcc, 0x30, 0x6f, 0x4d, 0x37, 0x45, 0x05,
-0xff, 0xaa, 0x28, 0xcd, 0x56, 0x93, 0xaa, 0xe3,
-0x45, 0xdb, 0xf2, 0xea, 0x3f, 0x5f, 0x86, 0x1b,
-0xe6, 0xd7, 0xbe, 0xd0, 0x89, 0x68, 0x50, 0x9a,
-0x67, 0x2e, 0xa5, 0xc0, 0x53, 0x56, 0x51, 0xab,
-0x39, 0x1e, 0x1c, 0x46, 0x8b, 0x35, 0xd9, 0x70,
-0xf3, 0xbf, 0xa4, 0x83, 0xf0, 0x5b, 0x68, 0xcc,
-0x14, 0x3f, 0x24, 0x2f, 0xc1, 0x85, 0x47, 0xcb,
-0xe6, 0xda, 0x0b, 0x2c, 0x9b, 0x08, 0x7f, 0x90,
-0x53, 0x44, 0xec, 0xfb, 0x43, 0x9d, 0x17, 0x3c,
-0xfb, 0xef, 0x0e, 0xf5, 0x7c, 0x2c, 0x9d, 0x0c,
-0x24, 0x3b, 0x6b, 0x6b, 0x9e, 0xa2, 0x6e, 0x74,
-0xe9, 0x6a, 0x27, 0x51, 0x31, 0x1a, 0x3f, 0x2f,
-0xd5, 0x25, 0x97, 0x3c, 0xe0, 0xc9, 0x07, 0x1f,
-0xb8, 0x39, 0xaa, 0x3c, 0x09, 0xe1, 0xff, 0x86,
-0x6b, 0xd8, 0x3f, 0x91, 0xff, 0x90, 0xb2, 0x03,
-0x02, 0xf0, 0x84, 0x84, 0x0b, 0x29, 0x56, 0xfe,
-0x77, 0xa8, 0xfd, 0xb0, 0xa9, 0x6e, 0x66, 0xf3,
-0x3c, 0xf9, 0x5f, 0x88, 0x7f, 0xfa, 0xf4, 0x51,
-0xbd, 0xde, 0x20, 0x43, 0xa4, 0xd3, 0x34, 0xb3,
-0x85, 0xb3, 0x1a, 0x18, 0xa3, 0xc2, 0x98, 0x46,
-0x2b, 0xb0, 0x7d, 0x79, 0xf5, 0x9f, 0xf5, 0x95,
-0x2a, 0x65, 0x7b, 0x51, 0xd8, 0xab, 0xc8, 0xea,
-0xff, 0x35, 0x93, 0x84, 0x4f, 0xf3, 0xbd, 0xfc,
-0x7b, 0xf8, 0x55, 0xb8, 0xde, 0xcd, 0xff, 0x52,
-0x97, 0x50, 0xb6, 0x17, 0x04, 0xea, 0xfc, 0x01,
-0xe5, 0xa7, 0x7a, 0xca, 0x7c, 0x36, 0xe6, 0x0f,
-0x70, 0x04, 0x42, 0xfd, 0x41, 0x7c, 0x3d, 0xe1,
-0x7d, 0x65, 0xee, 0x60, 0x40, 0x97, 0xbf, 0xe3,
-0xfa, 0x7f, 0x2a, 0x11, 0xff, 0x2c, 0x6a, 0x34,
-0x26, 0x0d, 0xca, 0x07, 0xe1, 0xd7, 0x46, 0x63,
-0x7f, 0xed, 0x68, 0x02, 0x57, 0x54, 0x16, 0xff,
-0x74, 0x5c, 0xfe, 0xe4, 0x6c, 0x73, 0x56, 0xbb,
-0xec, 0xcd, 0xff, 0x22, 0x33, 0x35, 0x97, 0xea,
-0x73, 0x06, 0xe0, 0x99, 0xaa, 0xba, 0xcc, 0x92,
-0x7d, 0x9d, 0x8e, 0x7e, 0x06, 0x44, 0x6a, 0x58,
-0x34, 0xe5, 0xe1, 0x33, 0x50, 0xfd, 0x67, 0xca,
-0xf6, 0x2a, 0x26, 0x6f, 0xf9, 0x7f, 0x1b, 0xd7,
-0x99, 0xea, 0xdd, 0x3e, 0x27, 0xb1, 0x74, 0x10,
-0xfe, 0x5b, 0x17, 0xf5, 0x7f, 0xde, 0x73, 0xce,
-0xef, 0x22, 0xff, 0x3d, 0x39, 0x2d, 0x75, 0xcb,
-0xfc, 0xc2, 0x57, 0x0d, 0xf2, 0xff, 0xf8, 0xbe,
-0x9a, 0x9d, 0xef, 0x86, 0x35, 0xec, 0x32, 0x7c,
-0x9b, 0xcf, 0x3a, 0x19, 0x5a, 0xe5, 0xf1, 0xff,
-0x58, 0xf9, 0xef, 0xfa, 0x0b, 0xfe, 0xfa, 0xa6,
-0x25, 0xf0, 0x2f, 0x2c, 0x22, 0x12, 0x0d, 0xec,
-0x42, 0xeb, 0xcf, 0xf2, 0x07, 0xc9, 0xd1, 0x34,
-0x9f, 0xb9, 0xf5, 0x55, 0xac, 0xfa, 0xcf, 0x37,
-0xa4, 0xee, 0x7b, 0x0b, 0x61, 0xcf, 0x4b, 0x6c,
-0x17, 0xff, 0x52, 0xaa, 0x3a, 0x62, 0xf3, 0x9f,
-0x5f, 0x46, 0x68, 0xb4, 0x30, 0xbd, 0xf1, 0xb4,
-0xec, 0xf1, 0xff, 0x58, 0xf5, 0x9f, 0xa1, 0xa8,
-0x6b, 0x43, 0x47, 0x76, 0x3f, 0x9a, 0x64, 0xf5,
-0x23, 0xb0, 0x2a, 0x22, 0x4a, 0xc2, 0x31, 0x92,
-0x93, 0xff, 0x45, 0x4e, 0x80, 0x65, 0xb5, 0x21,
-0x11, 0x1f, 0xd9, 0x45, 0xfb, 0xdd, 0x29, 0x2b,
-0xf0, 0xb1, 0x49, 0x3e, 0xd5, 0xf6, 0xa6, 0x28,
-0x9d, 0xd7, 0x99, 0x53, 0xff, 0x59, 0xdd, 0xff,
-0x52, 0xb8, 0x1d, 0xd1, 0xce, 0xc7, 0xe2, 0x8f,
-0x32, 0x8a, 0x7f, 0x55, 0x9f, 0x2a, 0x15, 0x1b,
-0xf1, 0x96, 0x6d, 0x6f, 0x20, 0x7e, 0x2e, 0x31,
-0x02, 0x9b, 0x3c, 0xfd, 0xbf, 0xe6, 0x17, 0xd4,
-0xc0, 0x56, 0x08, 0x1b, 0xa1, 0x7f, 0x2e, 0x5b,
-0xa9, 0xad, 0x87, 0xf0, 0xa2, 0x5b, 0x11, 0xff,
-0x58, 0xf9, 0xef, 0x94, 0xaf, 0xfd, 0x28, 0x8e,
-0x8f, 0xec, 0xf2, 0xf8, 0x7f, 0xa8, 0xfe, 0xf3,
-0x6c, 0x5d, 0x1f, 0x08, 0x95, 0x15, 0xb6, 0xf0,
-0xad, 0xe1, 0x1a, 0xab, 0xff, 0xd7, 0x03, 0x76,
-0x3e, 0xb8, 0xa4, 0x7f, 0x09, 0x81, 0x50, 0xd9,
-0xb1, 0x9c, 0xfa, 0xcf, 0x23, 0x6d, 0x61, 0x08,
-0x20, 0xde, 0x50, 0xcd, 0xdb, 0x63, 0x15, 0xcf,
-0x17, 0xc8, 0x04, 0x33, 0xae, 0xa1, 0x34, 0x73,
-0x72, 0xc5, 0x34, 0x10, 0xfe, 0xb9, 0xe4, 0xf0,
-0x9f, 0x7b, 0x4a, 0x89, 0xf6, 0xfc, 0x64, 0xcb,
-0xd2, 0x9f, 0xc8, 0xdb, 0xdb, 0x04, 0xff, 0xf9,
-0x81, 0x6a, 0x1b, 0xf8, 0x95, 0x9f, 0xc1, 0xaf,
-0x28, 0x9e, 0x25, 0x9f, 0x2c, 0xf0, 0xe2, 0x9f,
-0x8b, 0x70, 0x93, 0x11, 0x3c, 0xf1, 0xd4, 0x5c,
-0x11, 0x08, 0x0b, 0x6e, 0x66, 0x73, 0xad, 0xf8,
-0xe0, 0xa0, 0x7c, 0x86, 0x1d, 0xf5, 0xc7, 0x28,
-0x5f, 0xcc, 0xe5, 0x4b, 0xcf, 0x0f, 0x65, 0x94,
-0x74, 0x38, 0xcc, 0x6f, 0xed, 0xaa, 0xbe, 0xb3,
-0x6d, 0x48, 0x9f, 0x81, 0x8f, 0x81, 0x6b, 0xc5,
-0x2a, 0x04, 0x54, 0x3d, 0x22, 0x75, 0x1b, 0x61,
-0xbe, 0x81, 0xfc, 0x3f, 0x0e, 0xfe, 0x01, 0x84,
-0x79, 0xad, 0x7a, 0x9b, 0x5f, 0x2b, 0x54, 0xa0,
-0xa3, 0x55, 0x17, 0xfd, 0xbf, 0x9c, 0x78, 0x1f,
-0xaa, 0x4e, 0x6f, 0xba, 0x45, 0x63, 0x27, 0xdc,
-0xfc, 0x32, 0xca, 0x67, 0x97, 0xc2, 0x8b, 0xd0,
-0xda, 0xaf, 0x54, 0x4b, 0x85, 0x1a, 0x17, 0xd7,
-0x88, 0x42, 0x40, 0x45, 0x49, 0xb6, 0xbd, 0x75,
-0x3d, 0x3b, 0x89, 0x57, 0xc0, 0xeb, 0xff, 0xa1,
-0xd9, 0xd5, 0xdd, 0x19, 0x4c, 0x2e, 0xab, 0xa9,
-0x38, 0xaa, 0x10, 0xff, 0x07, 0x8d, 0xa3, 0x15,
-0xdf, 0x64, 0x4f, 0xc3, 0x7a, 0xa9, 0xae, 0x3d,
-0x98, 0xd4, 0x47, 0x3c, 0xeb, 0x87, 0xc6, 0x1f,
-0xba, 0x3b, 0x98, 0xec, 0xb4, 0xc3, 0x5e, 0x3e,
-0x12, 0xbe, 0x2e, 0x16, 0x06, 0x01, 0xe3, 0xd6,
-0xe0, 0xa6, 0x9c, 0xfc, 0x41, 0x5c, 0x6f, 0xba,
-0xc8, 0xff, 0x02, 0x91, 0xd1, 0x1e, 0xe5, 0xb2,
-0xe3, 0x91, 0x3b, 0xa9, 0x8e, 0x8a, 0xd6, 0xa8,
-0xf9, 0xfe, 0x1f, 0xa3, 0x3a, 0xc9, 0xe2, 0xc7,
-0x0e, 0xc0, 0xbd, 0xb0, 0xad, 0x43, 0x4d, 0x15,
-0xfa, 0xf8, 0x01, 0xa9, 0x96, 0xfb, 0x4f, 0x27,
-0xc6, 0xf0, 0xef, 0xeb, 0x38, 0x9c, 0x96, 0xef,
-0xf5, 0xf6, 0xff, 0x92, 0x9e, 0x30, 0xf5, 0x8c,
-0xaa, 0xb3, 0x5b, 0x13, 0x0f, 0xe2, 0xf9, 0x6b,
-0xc0, 0xb1, 0x3f, 0x81, 0x04, 0xbe, 0x4a, 0x05,
-0x51, 0xf3, 0x16, 0x60, 0xae, 0xff, 0x87, 0x97,
-0x4e, 0xd6, 0xf6, 0x2e, 0xaa, 0xda, 0x86, 0x4a,
-0x7b, 0x48, 0xf9, 0xb6, 0x5e, 0x75, 0xda, 0x29,
-0xe4, 0x55, 0x64, 0xb0, 0xa1, 0xaa, 0xbd, 0x50,
-0x3d, 0xa2, 0xb6, 0xef, 0xca, 0xb8, 0xfc, 0x4f,
-0x51, 0xff, 0x27, 0x9d, 0x09, 0x2c, 0x97, 0x6f,
-0xc1, 0x6d, 0xe5, 0xa6, 0xe1, 0xc0, 0x8d, 0xbe,
-0xab, 0x44, 0xfc, 0xcb, 0xbf, 0x5c, 0x3e, 0x41,
-0xd0, 0xe8, 0x4c, 0x49, 0x8e, 0xff, 0xa7, 0xd2,
-0xca, 0xa7, 0x90, 0xd3, 0x88, 0xf7, 0x9e, 0xa1,
-0x68, 0xce, 0xe3, 0xe1, 0x1a, 0x4d, 0x38, 0x3a,
-0x28, 0xad, 0xe9, 0x3c, 0xcc, 0x1b, 0x42, 0x45,
-0xb9, 0xfd, 0xbf, 0x0c, 0xe5, 0x10, 0x5c, 0xec,
-0xfa, 0xf8, 0x70, 0x60, 0x88, 0xa2, 0x15, 0x03,
-0x37, 0x64, 0x36, 0x8e, 0xdd, 0x73, 0x95, 0xf1,
-0xbc, 0x55, 0x11, 0xe8, 0x6e, 0xab, 0x10, 0xe2,
-0x80, 0x5f, 0x73, 0xeb, 0x1f, 0x86, 0xb6, 0xc0,
-0x7f, 0x6a, 0x55, 0x1b, 0x8b, 0xef, 0x66, 0x43,
-0xca, 0x3d, 0x44, 0x44, 0xbc, 0x8b, 0x51, 0x23,
-0xe6, 0x1b, 0xcd, 0x92, 0xb6, 0xa6, 0x50, 0xab,
-0x48, 0x84, 0xff, 0x0a, 0x9b, 0xe1, 0xd8, 0x1f,
-0x0d, 0xb6, 0x18, 0x8f, 0xc1, 0x34, 0x68, 0x6d,
-0x0f, 0x0f, 0xe0, 0xb0, 0x69, 0x54, 0x16, 0xc0,
-0x69, 0xdc, 0xdc, 0x66, 0x97, 0xf2, 0x28, 0x74,
-0xf9, 0x3f, 0xca, 0x46, 0x54, 0x72, 0x4d, 0xb2,
-0x28, 0x84, 0xbb, 0x79, 0x27, 0x10, 0xdf, 0xa3,
-0x49, 0xc1, 0x8d, 0x3e, 0x42, 0x44, 0xe8, 0x45,
-0xa4, 0xd8, 0xc3, 0x11, 0x85, 0x79, 0xf2, 0xbf,
-0x2a, 0xa9, 0x69, 0xd7, 0xbc, 0xcc, 0xc6, 0x4d,
-0xf2, 0x08, 0x7b, 0x9e, 0xdd, 0x60, 0x46, 0x47,
-0xfd, 0xd9, 0x46, 0xd2, 0x49, 0xf9, 0x0b, 0x9c,
-0x1a, 0x3d, 0xa8, 0x0a, 0x73, 0xeb, 0xa7, 0xe1,
-0xaf, 0xa7, 0x9d, 0x33, 0x0e, 0xac, 0xbb, 0x7f,
-0x8f, 0xfc, 0xa6, 0x9a, 0x55, 0x8b, 0xd5, 0x18,
-0xa2, 0xa4, 0xab, 0xf9, 0xdf, 0x75, 0xcb, 0x31,
-0x52, 0xed, 0xfa, 0x7f, 0xa8, 0xfe, 0xf3, 0x25,
-0x65, 0xb6, 0x19, 0x18, 0x95, 0x43, 0xb0, 0x41,
-0x9a, 0x43, 0x66, 0x7c, 0xae, 0x05, 0x84, 0x8e,
-0xc9, 0xbf, 0x15, 0x08, 0x61, 0xe3, 0x60, 0x67,
-0xaf, 0xb3, 0x7e, 0xb6, 0x22, 0xfe, 0xf9, 0xcf,
-0x50, 0x38, 0xe3, 0xd3, 0xca, 0x3e, 0xde, 0x75,
-0x5e, 0x09, 0xf7, 0x89, 0x30, 0x96, 0x00, 0x42,
-0xdf, 0x65, 0x6f, 0xe8, 0x74, 0xa2, 0x9f, 0xb5,
-0xa5, 0xda, 0xd3, 0xff, 0x42, 0x8a, 0xc2, 0x3e,
-0xb6, 0xa2, 0x5f, 0xdd, 0xc9, 0x66, 0xc0, 0xc3,
-0xb8, 0xbb, 0xdd, 0x4a, 0xfc, 0x55, 0x31, 0x9e,
-0x0e, 0x26, 0xa2, 0x95, 0xc3, 0x4e, 0x96, 0x72,
-0xfd, 0xcf, 0x15, 0xe4, 0xff, 0x89, 0x73, 0xbc,
-0x3f, 0xb9, 0x7d, 0x52, 0x94, 0x1f, 0xa7, 0x58,
-0x8d, 0x50, 0x75, 0x66, 0x4a, 0xbb, 0xc5, 0x46,
-0x1f, 0x6e, 0xca, 0xc1, 0x3f, 0x63, 0x50, 0xd7,
-0x81, 0xe7, 0xeb, 0x08, 0x6e, 0xd3, 0x82, 0xbf,
-0x64, 0x3d, 0x0f, 0xea, 0x87, 0xd6, 0xc3, 0x42,
-0x13, 0xbf, 0x4a, 0xb9, 0xfc, 0xe7, 0xca, 0x0b,
-0xea, 0x05, 0xf8, 0xcf, 0x8e, 0xe0, 0x68, 0xf5,
-0x98, 0x9a, 0x2d, 0x5b, 0x97, 0x05, 0x42, 0x6d,
-0xd9, 0x8e, 0xa8, 0x1f, 0x35, 0xe4, 0x5e, 0x37,
-0xff, 0x6b, 0xad, 0xe8, 0x7f, 0x1a, 0x0f, 0x0e,
-0xc9, 0x31, 0x52, 0xcb, 0x40, 0xc0, 0xce, 0xff,
-0xca, 0x76, 0x44, 0x9d, 0x13, 0x2f, 0x5e, 0x93,
-0x93, 0xff, 0xf5, 0x8e, 0xf2, 0x04, 0xaf, 0x8d,
-0xdf, 0xba, 0x8f, 0xa9, 0x6c, 0x03, 0x54, 0xcf,
-0x2d, 0xce, 0x69, 0x84, 0x7a, 0x80, 0xf8, 0x3f,
-0xfb, 0x58, 0xcc, 0xad, 0x7f, 0x08, 0x22, 0xff,
-0x8b, 0xaa, 0xb7, 0xd1, 0x34, 0x6b, 0xf3, 0x0a,
-0x3f, 0xd2, 0x79, 0xad, 0x28, 0x56, 0x56, 0xe7,
-0xe1, 0x3f, 0x8b, 0xe8, 0x61, 0xdc, 0xbf, 0xaf,
-0x6c, 0x16, 0x74, 0xe2, 0xb1, 0xab, 0x28, 0xa7,
-0xb0, 0xf6, 0x01, 0x60, 0x61, 0x95, 0xfa, 0xbf,
-0xdb, 0xfa, 0xe4, 0xd9, 0xfe, 0xef, 0xc1, 0x1e,
-0x79, 0x0e, 0x3c, 0xd3, 0x46, 0x61, 0x17, 0x96,
-0x53, 0x18, 0x21, 0xa6, 0x17, 0x1f, 0x92, 0x15,
-0xe7, 0xf7, 0x1d, 0xb5, 0xf3, 0xbf, 0x46, 0xe5,
-0x21, 0x76, 0x9e, 0x37, 0xe4, 0x37, 0x02, 0xdb,
-0x8e, 0x40, 0xf1, 0x5d, 0x79, 0xcc, 0xb0, 0xd7,
-0x4f, 0x5b, 0xb6, 0xff, 0x3b, 0xf1, 0x1b, 0xd5,
-0x67, 0xda, 0xea, 0xfa, 0x72, 0x0b, 0x51, 0x9e,
-0x85, 0xbb, 0xa9, 0x14, 0x67, 0x45, 0x4e, 0xfe,
-0x3b, 0x3e, 0x6d, 0x46, 0x9d, 0x2b, 0xfa, 0x97,
-0xe9, 0x46, 0x6e, 0x61, 0xf0, 0xdd, 0x10, 0x8e,
-0x75, 0xd7, 0xb1, 0x3a, 0xc9, 0x7e, 0xfe, 0xac,
-0xff, 0x67, 0xb1, 0x1a, 0x4b, 0x98, 0xc0, 0xd5,
-0x94, 0x91, 0xab, 0x9f, 0x9d, 0x3c, 0xf2, 0xc5,
-0x48, 0x88, 0xdd, 0xe8, 0x9c, 0xbf, 0xac, 0xfc,
-0xaf, 0x59, 0x2b, 0x29, 0xff, 0x4b, 0x59, 0xc7,
-0xab, 0x52, 0x9e, 0xc2, 0x38, 0x40, 0x19, 0x52,
-0x1f, 0xd7, 0xd5, 0x31, 0x16, 0xf5, 0xf6, 0x3f,
-0xa5, 0xfa, 0x3f, 0x6d, 0x01, 0xa2, 0xfd, 0x98,
-0x90, 0x36, 0xa2, 0x39, 0x85, 0xa0, 0xdf, 0x55,
-0x23, 0x10, 0xd0, 0x9a, 0xc7, 0xf5, 0x7f, 0x37,
-0x66, 0x8d, 0x96, 0x5f, 0x60, 0x97, 0xb4, 0xc6,
-0x4c, 0xae, 0x7e, 0x3e, 0x80, 0xeb, 0xa1, 0xf0,
-0x27, 0xe5, 0xf9, 0xf9, 0x5f, 0xf5, 0xa9, 0xc0,
-0xbe, 0xf2, 0x18, 0xbe, 0xb6, 0xa2, 0x11, 0x98,
-0x57, 0xff, 0x46, 0x43, 0x1c, 0xd7, 0xa7, 0xeb,
-0xbf, 0x1d, 0x48, 0x66, 0xfd, 0x3f, 0x71, 0x34,
-0x02, 0xf7, 0x40, 0xd5, 0xe1, 0x48, 0x6e, 0x21,
-0x68, 0x6d, 0x26, 0x2f, 0x36, 0xd8, 0x7b, 0xae,
-0x7d, 0xb3, 0xfb, 0xbf, 0x8f, 0x21, 0xec, 0xe9,
-0xe4, 0x7a, 0x3c, 0xb7, 0x10, 0xd0, 0x63, 0x7c,
-0x66, 0x3b, 0x42, 0xc1, 0x8c, 0xa7, 0xff, 0xa9,
-0xf0, 0xff, 0x0c, 0xaa, 0x73, 0x9b, 0x4a, 0x36,
-0x75, 0x66, 0xf4, 0xc1, 0x71, 0x85, 0x46, 0x43,
-0x45, 0x57, 0xb1, 0x13, 0x39, 0xfe, 0x1f, 0x3c,
-0x34, 0x75, 0x05, 0x32, 0xf2, 0x02, 0xfe, 0x9c,
-0xb9, 0x9b, 0xe7, 0x16, 0x02, 0xa2, 0x46, 0xa8,
-0xca, 0x5b, 0xf2, 0xb9, 0xfc, 0xfe, 0xa7, 0xd2,
-0xdf, 0xf1, 0x8f, 0x67, 0xd8, 0x98, 0x36, 0xae,
-0x31, 0x81, 0x29, 0x4a, 0x43, 0x8f, 0xeb, 0x7f,
-0xda, 0x16, 0xfc, 0x4e, 0x67, 0x3f, 0x1c, 0x35,
-0xd3, 0x86, 0xb7, 0x50, 0xcc, 0x76, 0x2b, 0x34,
-0xb6, 0xa9, 0xfc, 0x70, 0x85, 0x97, 0xff, 0x23,
-0xd0, 0x4e, 0x0f, 0x7b, 0x83, 0xad, 0xe7, 0x61,
-0x23, 0xaf, 0xb1, 0x85, 0x44, 0x5f, 0x85, 0x73,
-0xf2, 0xdf, 0x35, 0xdb, 0xed, 0xa3, 0x77, 0x58,
-0x6d, 0x1a, 0x9c, 0xf1, 0xdb, 0x71, 0xe1, 0x7d,
-0xa1, 0xa9, 0x28, 0x59, 0xe6, 0xf6, 0x27, 0xca,
-0xe6, 0x7f, 0xd1, 0xfb, 0xd8, 0x7f, 0xb8, 0x03,
-0x74, 0xab, 0x11, 0x86, 0xcd, 0x07, 0xd6, 0x76,
-0xc2, 0x6a, 0x3a, 0x88, 0x1d, 0x76, 0xe2, 0xf5,
-0x59, 0xff, 0x0f, 0x15, 0xdd, 0xed, 0x83, 0x81,
-0x35, 0x75, 0x6e, 0x21, 0x20, 0x3f, 0x35, 0xe2,
-0x44, 0xd3, 0x4d, 0x8d, 0x18, 0xde, 0x71, 0xf8,
-0x39, 0xc7, 0xed, 0xfe, 0xa7, 0x6d, 0xf2, 0x19,
-0x53, 0x74, 0xfb, 0xca, 0x49, 0x8c, 0x3a, 0x4f,
-0x15, 0x63, 0xbc, 0xf5, 0x7f, 0xac, 0xfe, 0xa7,
-0x22, 0x4d, 0xf5, 0x03, 0xfe, 0x49, 0x95, 0xba,
-0xa5, 0x78, 0xc7, 0x5f, 0x86, 0x39, 0x08, 0x84,
-0xaa, 0x5d, 0xff, 0xe1, 0x1a, 0x6f, 0xfe, 0x17,
-0x87, 0xf0, 0xe6, 0xfc, 0x42, 0x40, 0xe4, 0x08,
-0x62, 0xcf, 0xe5, 0xd4, 0x3f, 0xcc, 0xe6, 0x7f,
-0x3d, 0x1d, 0x26, 0xfe, 0xb3, 0x55, 0xf8, 0x48,
-0xb2, 0x33, 0xe0, 0x20, 0x4e, 0x13, 0x3f, 0xe1,
-0xf6, 0xe3, 0xb0, 0xfa, 0x9f, 0xde, 0x8e, 0xda,
-0x3b, 0x85, 0x66, 0x3c, 0x3c, 0xae, 0x10, 0x50,
-0x98, 0xe2, 0x89, 0x47, 0x9c, 0xfc, 0x26, 0x0b,
-0xff, 0xe0, 0xef, 0xbb, 0x49, 0x7e, 0x83, 0x13,
-0xbe, 0x8d, 0xe6, 0x3c, 0xff, 0xbb, 0x06, 0xe2,
-0x1f, 0xdc, 0xda, 0x1c, 0xfb, 0xb0, 0xca, 0xaa,
-0x07, 0x45, 0xfc, 0xe7, 0x7e, 0x6a, 0xc3, 0x97,
-0x9f, 0x38, 0xd6, 0x73, 0x88, 0xfa, 0x85, 0xbd,
-0x94, 0xc7, 0xff, 0xb1, 0xea, 0x4d, 0x25, 0x06,
-0xe8, 0x20, 0x93, 0xbb, 0xde, 0x0c, 0x2a, 0x44,
-0xe9, 0xed, 0xff, 0xae, 0x08, 0xff, 0xcf, 0x03,
-0xfe, 0xb7, 0xd8, 0x39, 0xb8, 0x37, 0x49, 0x44,
-0x20, 0x46, 0x8d, 0x7d, 0x05, 0xff, 0x67, 0x15,
-0x1c, 0xda, 0x3a, 0x0b, 0x97, 0x75, 0xe2, 0x98,
-0x3d, 0xdc, 0xce, 0xff, 0xe2, 0x7e, 0x2d, 0xf1,
-0xb4, 0xd2, 0x09, 0xa9, 0xbe, 0x48, 0xae, 0xfd,
-0x81, 0xa8, 0x24, 0xcf, 0x2f, 0x73, 0xfb, 0xbf,
-0xeb, 0x59, 0xff, 0xcf, 0x86, 0xb6, 0xa6, 0x17,
-0xf4, 0x7b, 0x54, 0x8a, 0x07, 0xe5, 0x15, 0x82,
-0xe6, 0xfe, 0xf6, 0x3a, 0x4f, 0xfd, 0x1f, 0xcb,
-0xff, 0x53, 0xb5, 0x74, 0x8d, 0xfc, 0x1e, 0x7b,
-0x9a, 0xc7, 0xa8, 0xdb, 0xbb, 0xa7, 0x10, 0xd0,
-0x6f, 0xa8, 0x35, 0xc6, 0x2a, 0xf9, 0x98, 0x53,
-0x80, 0xde, 0xee, 0xff, 0xbe, 0x34, 0xd9, 0x9c,
-0x61, 0x67, 0xd5, 0xdc, 0xfc, 0x26, 0xab, 0x15,
-0xc2, 0xa4, 0x54, 0x4e, 0xfd, 0xc3, 0x6c, 0xfd,
-0xba, 0xb3, 0xf2, 0x39, 0xf6, 0x33, 0x9e, 0xe5,
-0xaf, 0x3a, 0xf9, 0x5f, 0xa2, 0x35, 0xfc, 0x1a,
-0x4f, 0xfe, 0xaf, 0xf0, 0xff, 0xc0, 0x4c, 0xcd,
-0xff, 0xbf, 0x9a, 0x86, 0xd8, 0x3a, 0xb8, 0x9e,
-0x0e, 0x62, 0xde, 0xe7, 0x0f, 0xa1, 0xfd, 0xf9,
-0x0a, 0xdb, 0xe6, 0xd8, 0x37, 0xe0, 0xc2, 0x5e,
-0x75, 0xf9, 0xef, 0x0a, 0xff, 0x9c, 0x6d, 0x41,
-0x3c, 0x93, 0x3b, 0xdf, 0x3d, 0xa8, 0x8a, 0xa2,
-0x4c, 0x42, 0x77, 0xec, 0x4f, 0xdc, 0xf2, 0xff,
-0xc4, 0xfd, 0x37, 0xb0, 0xe3, 0x4d, 0x5c, 0xab,
-0x39, 0x93, 0xdb, 0xf8, 0x60, 0x57, 0x26, 0x9a,
-0x94, 0x74, 0xd6, 0xe3, 0x89, 0x7f, 0x89, 0xd9,
-0xa5, 0xe4, 0x5e, 0x7c, 0x89, 0x5e, 0xe2, 0x75,
-0x83, 0x8e, 0xfd, 0xf4, 0xa7, 0x27, 0x89, 0x56,
-0xef, 0x6d, 0x45, 0xfb, 0x3c, 0xf5, 0x57, 0xb3,
-0xf9, 0x5f, 0x15, 0xc1, 0x2e, 0xd1, 0xef, 0xa0,
-0x7e, 0x60, 0x5c, 0xa1, 0x6c, 0x25, 0x98, 0xee,
-0xcc, 0xc9, 0xff, 0x52, 0x45, 0x3d, 0xc0, 0xd1,
-0xf2, 0xe7, 0xe1, 0x34, 0xdc, 0x60, 0x06, 0x72,
-0xf7, 0x3b, 0xde, 0xc8, 0x88, 0xff, 0x73, 0x47,
-0x9e, 0xff, 0x27, 0x76, 0xeb, 0x46, 0xf6, 0x2b,
-0x4a, 0xc4, 0xb0, 0xf9, 0xb7, 0xd3, 0xb3, 0x89,
-0xd8, 0x72, 0xad, 0xee, 0x3f, 0xe8, 0xe1, 0x63,
-0x64, 0xeb, 0xff, 0xa4, 0x44, 0x9a, 0xd8, 0xc3,
-0xda, 0xf4, 0xbc, 0x46, 0xa8, 0xfb, 0xf5, 0x2f,
-0xc5, 0xaf, 0xdd, 0xc7, 0x32, 0xce, 0x7e, 0x97,
-0xcd, 0xff, 0x02, 0x52, 0x0b, 0xe2, 0x81, 0x1a,
-0x33, 0xe2, 0xf0, 0xed, 0x63, 0x56, 0x47, 0x30,
-0x2e, 0x3a, 0x64, 0x39, 0x9f, 0x6e, 0x71, 0x9a,
-0xe6, 0x94, 0x0f, 0xc8, 0xde, 0x84, 0x79, 0xa6,
-0x47, 0x3f, 0x4c, 0x24, 0xfe, 0xc3, 0x5f, 0xa6,
-0x9b, 0x4d, 0xe7, 0xfc, 0x95, 0xed, 0x7f, 0x0a,
-0xc1, 0x4c, 0x75, 0x4e, 0xfe, 0xd7, 0x0d, 0x56,
-0x20, 0xe3, 0x92, 0x50, 0x85, 0x3c, 0x32, 0xc9,
-0xe5, 0xff, 0x9c, 0xa0, 0x34, 0xf0, 0xe3, 0xc5,
-0xef, 0xc9, 0x17, 0x8c, 0xe7, 0x61, 0xce, 0xe8,
-0x92, 0xb1, 0xea, 0x0b, 0xdd, 0x97, 0x29, 0x11,
-0x2c, 0xbb, 0x90, 0x86, 0x83, 0x39, 0xfc, 0x1f,
-0xed, 0x24, 0xec, 0xe3, 0x37, 0xbe, 0xa2, 0xfe,
-0x86, 0xfd, 0x9c, 0xff, 0x28, 0x36, 0x63, 0x00,
-0xd1, 0x4e, 0xc6, 0x7c, 0x82, 0x12, 0xc1, 0x04,
-0x10, 0x4a, 0xd4, 0x0e, 0xa0, 0x30, 0xea, 0xe9,
-0x7f, 0x61, 0x8a, 0x32, 0x8f, 0x45, 0x75, 0x89,
-0xe3, 0x4d, 0x9d, 0xaa, 0x2e, 0xf0, 0x8f, 0x6e,
-0x01, 0x3f, 0xb1, 0x30, 0x44, 0xc4, 0xc7, 0xcb,
-0xff, 0x79, 0x14, 0x0e, 0x84, 0x2c, 0xda, 0x73,
-0x88, 0xfc, 0x3f, 0xaa, 0xe0, 0x0f, 0x5b, 0xfc,
-0x67, 0x47, 0xb1, 0x63, 0x2e, 0x1f, 0xac, 0xf2,
-0x17, 0x30, 0xc6, 0x6f, 0x32, 0xbf, 0x39, 0x2a,
-0x9f, 0x56, 0x9e, 0x91, 0x88, 0xff, 0x5c, 0x7d,
-0xda, 0x2e, 0x14, 0xe9, 0x2c, 0x8c, 0x7e, 0xa7,
-0xff, 0xc5, 0xa8, 0xb4, 0x17, 0x2e, 0x90, 0x5a,
-0x84, 0x9b, 0x31, 0x27, 0x3e, 0x68, 0x2f, 0x0c,
-0xff, 0xa8, 0xa7, 0xff, 0x45, 0x1b, 0x9e, 0xdf,
-0x07, 0x40, 0x74, 0x97, 0xa3, 0x42, 0x40, 0xbb,
-0xac, 0xdb, 0x3e, 0xa3, 0x78, 0xee, 0x8f, 0xbf,
-0xc8, 0xa0, 0x07, 0xff, 0x4c, 0xc3, 0x63, 0x17,
-0x15, 0x85, 0x48, 0xd4, 0xc3, 0x6b, 0x82, 0x86,
-0xcd, 0x7e, 0xad, 0xff, 0x00, 0xb6, 0x51, 0xfd,
-0x28, 0xeb, 0xf9, 0x8b, 0xd3, 0x39, 0xfc, 0x1f,
-0x43, 0xe7, 0x50, 0xdb, 0xe7, 0xab, 0x4f, 0xec,
-0x80, 0x7f, 0xa1, 0x69, 0xc6, 0x0a, 0x8f, 0xf3,
-0x0d, 0x56, 0xfd, 0x1f, 0xa7, 0x10, 0x99, 0xcb,
-0x77, 0x1a, 0x95, 0xae, 0x82, 0x2e, 0xfe, 0xc5,
-0x4c, 0x68, 0x0d, 0x9b, 0x6a, 0x7e, 0xbb, 0x43,
-0xc4, 0x83, 0x4e, 0xc0, 0xf7, 0x92, 0x55, 0x19,
-0x9f, 0x0d, 0x0c, 0x8a, 0xd6, 0xb0, 0xd3, 0xce,
-0xf9, 0x9d, 0xe2, 0x5f, 0x7d, 0xb1, 0xfa, 0xfe,
-0x92, 0x98, 0xbc, 0xf1, 0xf0, 0x83, 0x90, 0x36,
-0x45, 0xe1, 0x88, 0x0d, 0x10, 0x13, 0xf8, 0xc7,
-0x78, 0x5f, 0x6b, 0xa0, 0xd4, 0xf8, 0x13, 0xde,
-0xf8, 0x17, 0xbb, 0xd0, 0x36, 0xab, 0x7f, 0x12,
-0x6a, 0x63, 0xe0, 0x32, 0x35, 0xc2, 0xf0, 0xf0,
-0x9f, 0x2f, 0xa8, 0xe2, 0xca, 0xe8, 0x47, 0x3c,
-0xfd, 0x2f, 0x2a, 0x33, 0x74, 0x5a, 0x1f, 0x08,
-0xee, 0xea, 0xfc, 0x15, 0x47, 0xfc, 0x93, 0x59,
-0x42, 0xfa, 0x7f, 0x9b, 0x3b, 0xfa, 0xf9, 0xba,
-0x20, 0x62, 0xb9, 0xfa, 0x79, 0x60, 0x33, 0x9e,
-0xc8, 0x67, 0x9e, 0x40, 0xeb, 0x71, 0xb1, 0xe9,
-0x7b, 0xab, 0xae, 0x23, 0x7b, 0x32, 0x44, 0x40,
-0x28, 0x27, 0x11, 0xde, 0xed, 0xff, 0xc5, 0xf1,
-0xd2, 0x3d, 0x7c, 0xe6, 0x08, 0x55, 0xb7, 0xe6,
-0x9d, 0xdb, 0xab, 0x28, 0xf1, 0xff, 0x39, 0x9c,
-0x66, 0x55, 0x36, 0x10, 0xd6, 0x21, 0x80, 0x90,
-0x9b, 0x7f, 0xda, 0x5a, 0xd1, 0x0f, 0x89, 0x01,
-0xd1, 0xf6, 0xeb, 0xb8, 0xf2, 0x30, 0x44, 0xac,
-0xb6, 0x17, 0x9d, 0xee, 0x7a, 0x13, 0x2f, 0x9a,
-0xbb, 0xbf, 0x8c, 0x14, 0xec, 0x83, 0xc3, 0x19,
-0x0b, 0xed, 0xe0, 0x31, 0xb7, 0x8e, 0x47, 0x53,
-0xf2, 0x39, 0xfd, 0x1c, 0x0a, 0xde, 0x44, 0x78,
-0x6f, 0xff, 0x8b, 0xd7, 0xf1, 0x18, 0x5d, 0x0f,
-0x4b, 0x79, 0x75, 0x46, 0x1b, 0xf5, 0xf2, 0x7f,
-0xbc, 0x40, 0xc8, 0xd3, 0xff, 0x02, 0x7e, 0x09,
-0xcf, 0x6c, 0xae, 0x33, 0xee, 0xa3, 0x7a, 0xbf,
-0x6f, 0x0a, 0x7e, 0x6c, 0xf9, 0x29, 0xdb, 0x3f,
-0x60, 0x6d, 0x7c, 0xf7, 0x27, 0x73, 0xfa, 0x5f,
-0xb4, 0xc0, 0xa3, 0x19, 0xdc, 0x76, 0xff, 0x99,
-0x0d, 0xb3, 0xf5, 0xc2, 0xff, 0x10, 0x7e, 0x83,
-0xe7, 0x75, 0xa4, 0xca, 0xe9, 0x7f, 0x51, 0x43,
-0x6e, 0x1f, 0xe3, 0x96, 0x07, 0x04, 0xff, 0x47,
-0xb8, 0x7d, 0xfa, 0x2d, 0xbe, 0x90, 0x67, 0x7c,
-0x6e, 0xfd, 0x9f, 0x47, 0x11, 0xf6, 0xa8, 0x65,
-0xac, 0x3f, 0x41, 0xd1, 0x2e, 0x41, 0x7b, 0xb6,
-0x1b, 0x81, 0xd9, 0x40, 0xc8, 0xdb, 0xff, 0x62,
-0x15, 0xae, 0xff, 0xba, 0x8a, 0x92, 0xb5, 0xf2,
-0xeb, 0xc6, 0xc8, 0xb2, 0xf9, 0x15, 0xf7, 0x53,
-0xfc, 0xcb, 0x6c, 0x73, 0xe7, 0x5b, 0x91, 0xd3,
-0xff, 0x62, 0x60, 0xca, 0x0b, 0xca, 0x79, 0xf8,
-0x61, 0x8b, 0xf4, 0x40, 0xf5, 0xb0, 0x71, 0xb6,
-0xcc, 0xe2, 0x3f, 0x7b, 0x1a, 0xa1, 0x32, 0x21,
-0xbc, 0xe5, 0xec, 0x47, 0x3d, 0xa5, 0x67, 0xe0,
-0x59, 0x68, 0x68, 0x2a, 0x3e, 0xd1, 0xb9, 0x72,
-0xdb, 0xd1, 0xc0, 0xae, 0xb6, 0x40, 0xb2, 0xfa,
-0x8c, 0xdb, 0x18, 0xeb, 0xac, 0xd5, 0x5a, 0xe2,
-0x39, 0x67, 0xfc, 0x1a, 0xc4, 0x9f, 0x03, 0x6c,
-0x81, 0xd6, 0xbd, 0x8e, 0x55, 0xf1, 0x6e, 0x5d,
-0x44, 0xbb, 0x5e, 0x37, 0xd3, 0xde, 0x42, 0x88,
-0xc5, 0xdc, 0xd3, 0x8f, 0x52, 0x45, 0x7c, 0x45,
-0xd5, 0x9e, 0xa9, 0xec, 0xb3, 0xbe, 0x35, 0x8b,
-0x7f, 0x74, 0xea, 0xff, 0x6e, 0xcf, 0xb7, 0x49,
-0x25, 0xfc, 0x63, 0x8f, 0x0f, 0x95, 0xee, 0x48,
-0xad, 0x2f, 0x9c, 0x41, 0xf5, 0x97, 0x84, 0xa2,
-0x04, 0xfe, 0xb1, 0x19, 0x9e, 0x56, 0x23, 0x0c,
-0x14, 0x4e, 0xe5, 0xd4, 0x3f, 0x3c, 0xda, 0x46,
-0x6c, 0x9f, 0xf2, 0x95, 0xec, 0x4d, 0xa9, 0x4e,
-0xe0, 0x9f, 0x9c, 0x46, 0xae, 0xf8, 0xfc, 0xe5,
-0x23, 0x15, 0xf6, 0xf8, 0x55, 0xd2, 0x23, 0x68,
-0xc6, 0xe7, 0x13, 0xc9, 0x79, 0x58, 0x79, 0x11,
-0xec, 0x44, 0x30, 0x2b, 0x22, 0xe6, 0x00, 0x21,
-0x4f, 0xfd, 0x67, 0xd8, 0xca, 0x07, 0x8c, 0x3a,
-0x08, 0x42, 0xb3, 0x8e, 0xc6, 0xba, 0x8e, 0xfc,
-0x3f, 0xaf, 0xc3, 0x10, 0xd4, 0xb9, 0xeb, 0x2d,
-0x40, 0xfe, 0x1f, 0xfb, 0xf7, 0x8a, 0x14, 0x5c,
-0x03, 0xf7, 0xf1, 0xb0, 0x55, 0xf6, 0xf9, 0xab,
-0x30, 0x8f, 0xf8, 0xcf, 0x63, 0x70, 0xaf, 0xb2,
-0xcd, 0x2d, 0x84, 0xe8, 0x4b, 0xe5, 0xf4, 0xbf,
-0x68, 0x31, 0x3a, 0xda, 0x4d, 0xf3, 0x5f, 0xe6,
-0xb3, 0x80, 0x4a, 0xf8, 0x47, 0xb5, 0xf8, 0x09,
-0xba, 0xe9, 0x14, 0x2a, 0x21, 0x3e, 0xaa, 0xb3,
-0xdf, 0xa5, 0xa4, 0x0a, 0x58, 0xcb, 0xef, 0xec,
-0xbf, 0xb6, 0x3d, 0x31, 0x99, 0xef, 0x8d, 0x4d,
-0x3b, 0xae, 0x52, 0xb5, 0xd2, 0x7b, 0x92, 0x9e,
-0xf7, 0xd7, 0xd7, 0x1e, 0x76, 0xf3, 0xcd, 0x7b,
-0xf9, 0x54, 0xe8, 0xe7, 0xb3, 0xdf, 0x08, 0x86,
-0xfc, 0x0d, 0xf0, 0x14, 0x9f, 0x33, 0xb2, 0x71,
-0x8d, 0xfc, 0x1c, 0xfc, 0x77, 0xef, 0x6c, 0xa7,
-0x10, 0xe2, 0x19, 0xc4, 0x27, 0x87, 0xa7, 0xbb,
-0xfc, 0x9f, 0xee, 0x42, 0x7c, 0xad, 0x8e, 0xda,
-0x69, 0xce, 0x83, 0xc1, 0xb4, 0x84, 0xb0, 0x39,
-0xe3, 0x16, 0xbe, 0x1b, 0xf2, 0xa7, 0xe5, 0x26,
-0xf7, 0x7c, 0x54, 0xf0, 0x01, 0xbf, 0x64, 0xed,
-0x56, 0x97, 0x23, 0xaf, 0xf1, 0x39, 0xa3, 0xd9,
-0x6d, 0xeb, 0xa6, 0x9c, 0x42, 0x2e, 0x6e, 0xff,
-0x8b, 0xef, 0x97, 0x6e, 0x86, 0xc7, 0xe3, 0xd7,
-0xf7, 0x97, 0xdc, 0xc1, 0x5e, 0x61, 0xf7, 0x50,
-0x3e, 0x3b, 0xd9, 0x9f, 0xbd, 0x79, 0xf6, 0xc7,
-0xdb, 0xff, 0xe2, 0x5f, 0x93, 0x7b, 0xe0, 0xaf,
-0x4c, 0xbf, 0x81, 0xe3, 0x1f, 0x84, 0xad, 0xd9,
-0x61, 0xfc, 0xba, 0x9c, 0xf1, 0xde, 0xfe, 0x17,
-0xc7, 0x21, 0xdd, 0xb6, 0xd2, 0xbc, 0x97, 0x0b,
-0xff, 0xcf, 0x0c, 0x91, 0x7f, 0xc1, 0x9f, 0xf0,
-0xda, 0x73, 0x14, 0x06, 0x3d, 0xfe, 0x9f, 0xef,
-0xe1, 0xfe, 0x75, 0x03, 0x79, 0x33, 0xa8, 0x4c,
-0xdf, 0x6e, 0x91, 0xc6, 0x0e, 0x97, 0x95, 0xaf,
-0x3a, 0xf3, 0x25, 0xe1, 0x2d, 0x4f, 0xfd, 0xbd,
-0x53, 0xd9, 0x24, 0xaf, 0x6a, 0xa7, 0x1f, 0xf7,
-0x88, 0x91, 0x57, 0x08, 0x91, 0xb9, 0xfd, 0x2f,
-0xb8, 0x76, 0x41, 0xf9, 0x79, 0x40, 0x9c, 0x2f,
-0xbe, 0xc6, 0x7e, 0x0c, 0x73, 0xcc, 0x1d, 0x96,
-0x3f, 0x64, 0x4e, 0x4e, 0x62, 0x94, 0xdb, 0xff,
-0x82, 0x2b, 0x4b, 0x61, 0xbd, 0x31, 0xcb, 0xf4,
-0x6f, 0x0c, 0x47, 0xb5, 0x97, 0x89, 0xbf, 0x4a,
-0x69, 0xec, 0x4e, 0x3d, 0x1f, 0xbb, 0xa3, 0xa5,
-0xc7, 0xff, 0x33, 0x5d, 0x44, 0x67, 0xae, 0xed,
-0x61, 0xab, 0x45, 0xbd, 0xbe, 0xec, 0x7e, 0x3d,
-0x3d, 0x67, 0xbc, 0xb7, 0xff, 0x85, 0x82, 0x6a,
-0x59, 0x4d, 0xd9, 0x70, 0x01, 0xd4, 0x67, 0x0d,
-0xad, 0xae, 0x81, 0x71, 0x8d, 0x9f, 0xbc, 0xfc,
-0x9f, 0x95, 0xf0, 0xa2, 0xd4, 0x68, 0xa2, 0xd9,
-0xf9, 0x2c, 0x7b, 0x86, 0xda, 0x96, 0x51, 0x7e,
-0xcd, 0x6f, 0x61, 0x5e, 0x8e, 0x7e, 0x4c, 0x67,
-0xfd, 0xa4, 0xae, 0x3e, 0x43, 0xd5, 0x56, 0x4d,
-0xbf, 0x99, 0xa5, 0xb5, 0x04, 0xad, 0xf9, 0xe6,
-0x26, 0xc2, 0xbb, 0xfa, 0x31, 0x0b, 0x2e, 0x19,
-0x4f, 0xf3, 0xd9, 0xe9, 0xc0, 0x69, 0xf9, 0x8c,
-0xf2, 0x3c, 0x9f, 0x95, 0xc9, 0x2d, 0x04, 0x6d,
-0x77, 0x44, 0xf5, 0xe0, 0x9f, 0xe3, 0xd4, 0xf6,
-0x82, 0xab, 0xb1, 0xa6, 0x53, 0xca, 0x06, 0xee,
-0xad, 0xff, 0x63, 0x09, 0x0b, 0x32, 0x25, 0x88,
-0x88, 0x3c, 0xfd, 0x2f, 0x8e, 0x43, 0x87, 0x1a,
-0x5e, 0xaf, 0x32, 0xb4, 0x36, 0x9d, 0x79, 0xd3,
-0x74, 0x84, 0x93, 0x1e, 0xfe, 0xcf, 0xc6, 0xb2,
-0x0e, 0xd8, 0x96, 0x56, 0x7b, 0xca, 0x46, 0xdc,
-0xf8, 0x23, 0xaa, 0xb1, 0x2f, 0x2b, 0xcc, 0x20,
-0x46, 0xab, 0xa7, 0xfe, 0x33, 0xe2, 0xe7, 0xf5,
-0xc9, 0xba, 0x54, 0x60, 0x9f, 0x9c, 0xe1, 0xcf,
-0x78, 0x97, 0x81, 0xa7, 0xa3, 0x1c, 0x33, 0x3d,
-0xfd, 0x2f, 0x0e, 0xc2, 0x45, 0xca, 0x8f, 0x1b,
-0x6d, 0xfe, 0x8d, 0x3a, 0x41, 0xa3, 0x10, 0xbb,
-0xe3, 0xa7, 0x3d, 0x9e, 0xf8, 0x3f, 0xeb, 0x71,
-0x37, 0x2c, 0x79, 0x40, 0xd6, 0x99, 0xa8, 0x7f,
-0x98, 0x8f, 0xb7, 0x49, 0x18, 0xcc, 0xf1, 0xff,
-0x3c, 0x4a, 0x4d, 0xed, 0xbf, 0xc5, 0x54, 0xd8,
-0x60, 0xe6, 0xd6, 0x2f, 0x72, 0x84, 0xf7, 0xec,
-0xa7, 0x27, 0xff, 0x0f, 0xc7, 0x63, 0x38, 0xdc,
-0x12, 0x61, 0x81, 0xb6, 0x87, 0x07, 0x49, 0x1b,
-0xe1, 0xf1, 0xfa, 0xc9, 0xed, 0x7f, 0xf1, 0x4d,
-0xfe, 0xf0, 0xeb, 0x08, 0x03, 0x4a, 0x34, 0xa7,
-0x1e, 0x60, 0x7e, 0x87, 0xd0, 0x81, 0x1c, 0xff,
-0x4f, 0x1f, 0xc4, 0xba, 0x4b, 0xc2, 0xfe, 0x00,
-0xff, 0x45, 0x6e, 0xfd, 0x1f, 0x57, 0xc8, 0xe9,
-0x7f, 0x51, 0x76, 0xd1, 0x02, 0xc9, 0x17, 0x45,
-0x21, 0x44, 0x91, 0xff, 0x9e, 0xaf, 0x1f, 0xd7,
-0xff, 0x43, 0xf9, 0xef, 0x2f, 0x4a, 0x75, 0x1d,
-0x01, 0xca, 0x8f, 0x7b, 0x8a, 0xd7, 0x4d, 0xac,
-0x1f, 0x8f, 0xff, 0xa7, 0x74, 0x0b, 0x55, 0x7b,
-0xe6, 0x6a, 0x7b, 0x38, 0x40, 0xb0, 0xa7, 0x2f,
-0xbf, 0xb1, 0xa0, 0x10, 0x4e, 0x78, 0xf2, 0x3d,
-0xbf, 0x0b, 0x8f, 0x99, 0xd5, 0x29, 0x75, 0xcc,
-0x37, 0x95, 0xdd, 0xe3, 0xc0, 0x1e, 0x9c, 0xa6,
-0xcf, 0xd3, 0x01, 0x6d, 0xd4, 0x83, 0x7f, 0x8e,
-0xd3, 0x21, 0x7d, 0x9f, 0xba, 0x85, 0x15, 0x0b,
-0xff, 0xf3, 0x44, 0xeb, 0xad, 0xe9, 0xa7, 0xb9,
-0xfe, 0x1f, 0x3e, 0xa7, 0x37, 0x3a, 0xdc, 0x19,
-0x81, 0x63, 0x94, 0x7f, 0x91, 0xe7, 0xff, 0x11,
-0x42, 0xbe, 0xff, 0xe7, 0x90, 0xc8, 0xf6, 0x62,
-0x59, 0x37, 0xc8, 0xf8, 0x42, 0xd0, 0x79, 0xfe,
-0x9f, 0xd4, 0x2e, 0x63, 0x49, 0xf2, 0xc1, 0xda,
-0x70, 0xb6, 0xff, 0xc5, 0xf8, 0x42, 0x31, 0x87,
-0x73, 0xf2, 0xbf, 0xf6, 0x9b, 0x22, 0xff, 0x0b,
-0x81, 0x0d, 0xcf, 0xab, 0x3f, 0xec, 0xe2, 0x1f,
-0x8f, 0xff, 0x07, 0xf6, 0x5b, 0xf9, 0x62, 0xdb,
-0x13, 0xf9, 0xb0, 0xc7, 0x11, 0xf2, 0xeb, 0x3f,
-0xeb, 0x46, 0x44, 0x0b, 0x67, 0xfb, 0x5f, 0xe4,
-0x17, 0x82, 0x26, 0xc1, 0xdd, 0x1f, 0xf7, 0x15,
-0xdf, 0x69, 0x8c, 0xb6, 0xed, 0xaa, 0x08, 0x10,
-0xff, 0xe7, 0x58, 0x7e, 0xbd, 0x6b, 0x5b, 0x78,
-0xc7, 0xed, 0x7f, 0x21, 0xfa, 0xbf, 0x2f, 0x24,
-0xff, 0xcf, 0x69, 0x01, 0x7b, 0x96, 0xe6, 0xce,
-0x57, 0x11, 0xc2, 0x29, 0xa7, 0xa2, 0x39, 0xc5,
-0xbf, 0xfa, 0xa0, 0xae, 0x25, 0xb0, 0x59, 0x9e,
-0xcb, 0x9e, 0xbd, 0x52, 0x21, 0x9d, 0xc3, 0x9e,
-0xfc, 0xf7, 0xc3, 0x5b, 0xbb, 0xf9, 0x36, 0x3d,
-0x72, 0xcc, 0xa7, 0x2b, 0x43, 0x1e, 0xd8, 0xe3,
-0x15, 0xe4, 0xfb, 0x72, 0xea, 0xff, 0x64, 0xf3,
-0xbf, 0x14, 0xb8, 0xf2, 0x7c, 0x1d, 0xff, 0x73,
-0x28, 0x9b, 0xff, 0xb5, 0xaa, 0x6d, 0xf1, 0x74,
-0x70, 0xf5, 0xe9, 0x2d, 0xc4, 0x74, 0x2d, 0xd5,
-0x53, 0xb2, 0xd7, 0x03, 0xe5, 0x7f, 0xad, 0xa7,
-0xfc, 0x2f, 0xe2, 0xaf, 0xae, 0xbf, 0xc2, 0xf3,
-0x37, 0x7b, 0xfc, 0x3f, 0x56, 0xfe, 0xd7, 0xca,
-0xe0, 0x43, 0xf2, 0x70, 0x24, 0x7f, 0x9a, 0x8e,
-0x70, 0x2c, 0xc7, 0xff, 0x33, 0x40, 0x69, 0x5f,
-0x66, 0x39, 0xe0, 0x6b, 0xed, 0x51, 0xfb, 0x24,
-0x8f, 0xfe, 0x3d, 0xfe, 0x9f, 0x82, 0x08, 0x9e,
-0xbf, 0xd0, 0x3e, 0x67, 0xd8, 0x8d, 0xda, 0x7d,
-0x71, 0x4f, 0xfd, 0x67, 0x8f, 0x50, 0xe6, 0xf1,
-0xff, 0x14, 0x10, 0x1b, 0x41, 0x7f, 0x5d, 0x8d,
-0xb0, 0x25, 0x06, 0x8f, 0x5f, 0xc1, 0x3e, 0xbb,
-0xfe, 0x9f, 0x94, 0x14, 0x82, 0xfb, 0xa1, 0x6a,
-0x50, 0x5d, 0xc9, 0x3e, 0x1b, 0xea, 0x1a, 0x57,
-0xbf, 0xcb, 0x12, 0xea, 0x72, 0xfb, 0x5f, 0xf4,
-0xf3, 0xdd, 0xa9, 0xe8, 0x98, 0xff, 0x36, 0x78,
-0x3a, 0xa7, 0x10, 0x90, 0x47, 0xf0, 0xe6, 0xbf,
-0xf7, 0xb2, 0x31, 0xeb, 0xbc, 0x7f, 0x85, 0x46,
-0xf0, 0x24, 0xb8, 0xf9, 0xef, 0xc2, 0xff, 0xd3,
-0x31, 0x3b, 0x1e, 0x18, 0x90, 0xcf, 0x19, 0xcf,
-0x52, 0x21, 0xc1, 0x89, 0xf6, 0xaf, 0x41, 0x4f,
-0xfe, 0x7b, 0x0f, 0x3c, 0x49, 0xf9, 0xa7, 0x06,
-0x1b, 0x34, 0xaf, 0xf0, 0xfc, 0x77, 0xb1, 0xb7,
-0x9c, 0xdf, 0x97, 0xea, 0x3f, 0xef, 0x51, 0xab,
-0x41, 0xa5, 0x26, 0x83, 0x6b, 0x27, 0x18, 0x2f,
-0x80, 0x50, 0xc6, 0x83, 0x7f, 0x44, 0xfe, 0x97,
-0xa2, 0x4e, 0x49, 0x1c, 0x45, 0xe3, 0x75, 0x05,
-0x7d, 0x0e, 0xb9, 0xf8, 0xd0, 0xca, 0xff, 0xca,
-0x44, 0xb6, 0xcb, 0xd4, 0x96, 0x24, 0xcb, 0x5f,
-0x1d, 0x67, 0x3f, 0x3d, 0xf6, 0x70, 0xc4, 0xca,
-0xff, 0x4a, 0xc9, 0x47, 0x6a, 0xf2, 0xeb, 0xad,
-0x9d, 0xb6, 0x88, 0xe2, 0x69, 0x4f, 0xfd, 0x1f,
-0xc4, 0x3f, 0x44, 0xe2, 0x4d, 0x44, 0xc9, 0x7a,
-0x3f, 0x9b, 0x9a, 0x33, 0xf1, 0x7e, 0xe7, 0xd6,
-0x7f, 0xe6, 0xca, 0x1a, 0xd8, 0x83, 0x98, 0x5b,
-0x1d, 0x65, 0xbf, 0x66, 0xdc, 0x08, 0x4f, 0xbc,
-0x7f, 0x8d, 0xe6, 0xd5, 0xff, 0x09, 0x1b, 0x45,
-0xbc, 0xec, 0x94, 0x7e, 0xaf, 0xb1, 0x62, 0xe2,
-0xf1, 0x19, 0x47, 0x9b, 0x94, 0xff, 0x45, 0xe3,
-0x55, 0x60, 0xfd, 0x1a, 0xcf, 0x3b, 0x96, 0x4e,
-0x88, 0x7f, 0x44, 0xfc, 0x0b, 0x3e, 0x85, 0x78,
-0x98, 0x0d, 0xc0, 0x15, 0xf6, 0x17, 0xd3, 0xc9,
-0x3f, 0x4d, 0x4d, 0x19, 0x13, 0x6c, 0x9f, 0x59,
-0x83, 0xe5, 0x6e, 0xd9, 0xc3, 0x71, 0xf3, 0x1d,
-0x71, 0xf4, 0x6f, 0x16, 0x8c, 0xea, 0xbf, 0x59,
-0x3b, 0x27, 0x1e, 0x78, 0x45, 0x9e, 0xc7, 0x9e,
-0x8f, 0x89, 0xb4, 0xaf, 0xbc, 0xf5, 0xb3, 0x74,
-0xac, 0x7c, 0xd4, 0x89, 0x97, 0xf1, 0xd0, 0xc9,
-0x8a, 0x1b, 0xf9, 0xbc, 0x0c, 0x1e, 0x8b, 0xa6,
-0xc3, 0x86, 0xf6, 0xda, 0xe3, 0x45, 0x79, 0xf8,
-0x47, 0x08, 0x6e, 0xff, 0xaf, 0xee, 0x9b, 0x4d,
-0xa2, 0x85, 0x1b, 0xea, 0x26, 0x56, 0x03, 0x0f,
-0xeb, 0xd1, 0xc3, 0x13, 0xce, 0xd7, 0xe3, 0xff,
-0x91, 0xb6, 0xc1, 0x13, 0x5d, 0xe1, 0xd1, 0x48,
-0x0f, 0x0b, 0x8b, 0xb2, 0x03, 0x45, 0x13, 0xea,
-0xdf, 0xe5, 0xff, 0x54, 0xfe, 0x82, 0x9f, 0xd5,
-0x53, 0xed, 0x81, 0x2d, 0x9d, 0xd3, 0xe1, 0x6d,
-0x76, 0x85, 0xf7, 0xa5, 0xcf, 0xd3, 0xff, 0x34,
-0x8d, 0xf6, 0x39, 0x5b, 0x16, 0xf2, 0xdf, 0xae,
-0x88, 0x7f, 0x3c, 0xf9, 0x5f, 0x5b, 0xe1, 0xbc,
-0xf1, 0x38, 0x0b, 0x24, 0x1f, 0x9e, 0x06, 0xcf,
-0xf0, 0x09, 0x1a, 0x7d, 0x0a, 0xfc, 0xe3, 0x3c,
-0xcf, 0x40, 0xc1, 0x34, 0x73, 0x4e, 0x4d, 0xdd,
-0xa8, 0xaf, 0x10, 0xed, 0xed, 0x5f, 0xb6, 0xcd,
-0x32, 0xf3, 0x1b, 0xe3, 0x96, 0x90, 0xe0, 0xfa,
-0x7f, 0x4c, 0xf8, 0x84, 0x36, 0x27, 0x1e, 0x6f,
-0x57, 0xb5, 0x6b, 0x94, 0x84, 0xcc, 0xa2, 0x26,
-0x78, 0xfd, 0x81, 0xb6, 0x30, 0xea, 0xf0, 0x79,
-0xe2, 0xda, 0xa7, 0xe1, 0xf1, 0x74, 0xd5, 0x1b,
-0xbe, 0x21, 0x36, 0x4f, 0xf9, 0x76, 0xd7, 0xcc,
-0xbc, 0xc6, 0x10, 0x59, 0xe1, 0x82, 0x97, 0xff,
-0x53, 0xf4, 0xbe, 0x1e, 0x6b, 0x9a, 0x5c, 0x26,
-0x17, 0xf0, 0xa7, 0xaa, 0x1a, 0xcc, 0xe8, 0x78,
-0xfc, 0x93, 0x93, 0xff, 0x45, 0xfc, 0x9f, 0x9a,
-0x85, 0xe6, 0xfd, 0xed, 0xd2, 0x0b, 0xca, 0xc4,
-0xf8, 0xf0, 0xa3, 0xa3, 0x5e, 0xfe, 0x4f, 0xe5,
-0x91, 0xd0, 0x9b, 0x08, 0x7b, 0x26, 0x27, 0xcb,
-0x87, 0xd5, 0x67, 0xa4, 0x05, 0xe6, 0x04, 0x8d,
-0x89, 0xbd, 0xfc, 0xde, 0xd6, 0xab, 0xb7, 0x28,
-0x93, 0x28, 0x8d, 0xa2, 0x8d, 0xbd, 0xa0, 0xdc,
-0xd3, 0x52, 0x35, 0x54, 0x34, 0x11, 0xfe, 0x71,
-0xfb, 0xad, 0xeb, 0xb0, 0x57, 0xf9, 0x58, 0x57,
-0x55, 0xa6, 0x9b, 0xd2, 0xde, 0x1f, 0x4e, 0x5d,
-0x77, 0x25, 0xbc, 0x67, 0x8f, 0x27, 0xfe, 0x4f,
-0xe2, 0x75, 0xfd, 0xb0, 0x5a, 0xcf, 0x8e, 0x28,
-0x0f, 0x8b, 0x36, 0xd6, 0x13, 0xac, 0xb7, 0x97,
-0xdd, 0xfc, 0xaf, 0x82, 0x73, 0xf0, 0x4e, 0xea,
-0xe1, 0xe4, 0xc6, 0xbf, 0x95, 0xcf, 0x85, 0xdf,
-0x92, 0x16, 0x5c, 0x09, 0xff, 0xb8, 0xfc, 0x8d,
-0x87, 0x29, 0xe8, 0x00, 0x3f, 0x4a, 0x94, 0x67,
-0xf4, 0x1e, 0xc3, 0xda, 0x86, 0x94, 0xf1, 0xf8,
-0xc7, 0xd1, 0x8f, 0x15, 0xef, 0x88, 0x07, 0x92,
-0x4d, 0xd3, 0xa1, 0x4f, 0x8f, 0x19, 0xf9, 0x8d,
-0x32, 0xb3, 0xfb, 0xbb, 0xfd, 0x3c, 0xa2, 0xff,
-0x29, 0x8f, 0xc6, 0xd5, 0x87, 0xd8, 0xa4, 0xae,
-0x47, 0x8d, 0x6d, 0x13, 0x37, 0x62, 0xf0, 0xf2,
-0x7f, 0xa6, 0x13, 0x3b, 0xb1, 0xa5, 0x08, 0xf1,
-0x4f, 0xd7, 0xfa, 0x09, 0xe2, 0x35, 0x24, 0x40,
-0x0e, 0xff, 0x87, 0xef, 0x94, 0x6a, 0xcd, 0xeb,
-0x28, 0x3a, 0xf6, 0x70, 0x8d, 0xde, 0x3a, 0xae,
-0x11, 0xc6, 0x78, 0xff, 0xcf, 0x39, 0xd6, 0x00,
-0xc5, 0x6b, 0x65, 0xdc, 0x88, 0x6f, 0xaf, 0xab,
-0x88, 0x4e, 0x84, 0x7f, 0x3c, 0xf9, 0x5f, 0x95,
-0x17, 0x8c, 0xdf, 0x2a, 0xff, 0xb4, 0xe8, 0xbe,
-0x41, 0xdf, 0x1d, 0xca, 0x59, 0xad, 0xa1, 0x65,
-0xc2, 0xfd, 0xdd, 0xed, 0xe7, 0x45, 0xfd, 0xbf,
-0xe8, 0xbc, 0x36, 0x73, 0xb0, 0xb9, 0x02, 0x9e,
-0xad, 0x69, 0x58, 0x1e, 0x98, 0x68, 0xfc, 0x29,
-0x17, 0xff, 0x84, 0x52, 0x2a, 0x81, 0x9c, 0x56,
-0x2e, 0xc7, 0xb5, 0xa1, 0x48, 0xad, 0x4a, 0xf1,
-0x2f, 0x2d, 0x0f, 0xff, 0xb0, 0xe7, 0xdc, 0xf5,
-0x96, 0xed, 0x7f, 0xb1, 0x3e, 0x99, 0x78, 0x44,
-0xd9, 0x6a, 0x44, 0x97, 0xfb, 0xb4, 0xf0, 0xf8,
-0xf9, 0x7a, 0xfc, 0x3f, 0xf0, 0x88, 0x08, 0x32,
-0x2e, 0xdf, 0x5c, 0x76, 0x4a, 0xdb, 0xaf, 0xd4,
-0xe6, 0xc7, 0x1f, 0x2d, 0xfc, 0xe3, 0xf1, 0xff,
-0x94, 0x0a, 0x1a, 0x73, 0x6b, 0x71, 0x48, 0x5e,
-0xa7, 0xbe, 0x29, 0x35, 0x18, 0xb5, 0x13, 0x3c,
-0x7f, 0xf9, 0x88, 0xa7, 0xff, 0xcb, 0x76, 0x55,
-0x94, 0xfd, 0xd9, 0x24, 0xe3, 0xc1, 0xb6, 0xa8,
-0x9e, 0x1a, 0xe7, 0x0d, 0x8f, 0xeb, 0x08, 0xef,
-0xe2, 0x7f, 0x55, 0x4b, 0x49, 0x63, 0xea, 0x2e,
-0x98, 0xc9, 0x65, 0x3d, 0x32, 0x30, 0x41, 0x23,
-0x12, 0x21, 0x24, 0x3c, 0xf8, 0x67, 0xbe, 0xde,
-0x60, 0x54, 0xad, 0x55, 0x47, 0xca, 0xbf, 0x0a,
-0x9f, 0xe3, 0xb5, 0xfc, 0xfe, 0x71, 0xf8, 0x27,
-0x98, 0xf2, 0xe6, 0x7f, 0x15, 0x2c, 0x9a, 0x56,
-0xa7, 0xc5, 0x4d, 0x75, 0x9e, 0x26, 0x43, 0x67,
-0x9f, 0xb0, 0x3f, 0xe3, 0xdf, 0x97, 0x7b, 0x3d,
-0xfc, 0x9f, 0x90, 0x74, 0x88, 0xe3, 0xf9, 0x65,
-0x30, 0x71, 0x97, 0xfa, 0x6d, 0x75, 0xe6, 0x71,
-0x41, 0x1b, 0xce, 0x7f, 0x7f, 0xdd, 0xfc, 0x2f,
-0xe2, 0xff, 0x3c, 0xce, 0x77, 0x66, 0xa2, 0xab,
-0xe4, 0x32, 0x04, 0x42, 0x8d, 0x99, 0xc0, 0x9a,
-0x72, 0x7a, 0x6d, 0x73, 0xf1, 0xcf, 0x36, 0x2f,
-0xff, 0x47, 0x19, 0x53, 0xea, 0xcd, 0x92, 0x58,
-0xb5, 0x98, 0x9d, 0xf9, 0xcd, 0x71, 0xf6, 0xa4,
-0x24, 0xed, 0xa9, 0x7f, 0x68, 0x28, 0x07, 0xe0,
-0x97, 0x7c, 0x76, 0x26, 0x30, 0x36, 0x6d, 0x13,
-0x3c, 0xdf, 0x85, 0xdb, 0xd6, 0xd9, 0x89, 0xf0,
-0x8f, 0xc3, 0x3f, 0xef, 0x0d, 0xf5, 0x50, 0xfd,
-0x9f, 0x23, 0xea, 0x20, 0xd3, 0xba, 0x1c, 0xfc,
-0x63, 0x55, 0x84, 0x96, 0xad, 0x42, 0x88, 0x25,
-0xed, 0xec, 0x2d, 0x0f, 0xff, 0xa7, 0x47, 0xff,
-0x9e, 0x8a, 0x78, 0xef, 0xf6, 0x44, 0x1a, 0x97,
-0x06, 0x0d, 0x2b, 0x1c, 0x6f, 0xaf, 0xfa, 0x9d,
-0xfa, 0x06, 0x71, 0x65, 0x3d, 0xa7, 0xb2, 0xcf,
-0xf8, 0x5a, 0x81, 0xde, 0xab, 0xe4, 0xd4, 0xfb,
-0xb5, 0x0a, 0x21, 0xf6, 0xf9, 0x62, 0xde, 0xfc,
-0xaf, 0x8a, 0x4e, 0x78, 0x2b, 0xb9, 0x6b, 0x34,
-0x1a, 0x95, 0xbb, 0xcb, 0xde, 0x92, 0x1a, 0x27,
-0xde, 0xbf, 0xde, 0xf1, 0xf0, 0x7f, 0x44, 0xd0,
-0xd3, 0x5c, 0xba, 0x4e, 0x7e, 0x1b, 0xae, 0x41,
-0x61, 0x12, 0x85, 0x05, 0xdf, 0xce, 0xd3, 0xcf,
-0xeb, 0x1e, 0xfe, 0xcf, 0x76, 0x2a, 0xe2, 0x61,
-0x04, 0x4c, 0x79, 0xbe, 0x71, 0x5c, 0xc9, 0x36,
-0x36, 0x72, 0x1a, 0x3f, 0xfd, 0xda, 0xc6, 0x03,
-0xf6, 0xf3, 0x6f, 0x55, 0x56, 0x40, 0x6a, 0x7d,
-0x64, 0xc4, 0x77, 0x2f, 0xfb, 0x21, 0x55, 0xb3,
-0x99, 0x18, 0xcf, 0x78, 0xfb, 0x9f, 0x86, 0x81,
-0xda, 0x40, 0xa8, 0xbd, 0xac, 0x57, 0xef, 0x36,
-0xb3, 0x6e, 0x9f, 0x1f, 0xe4, 0x8e, 0x2f, 0xcc,
-0x78, 0xf8, 0x3f, 0x61, 0x78, 0x14, 0x22, 0xd4,
-0xed, 0xbd, 0x97, 0xf1, 0xec, 0xf9, 0x54, 0x72,
-0x1b, 0x85, 0x8c, 0xc7, 0x3f, 0x71, 0xa2, 0x55,
-0x18, 0x1b, 0x29, 0xda, 0x3e, 0x60, 0xbb, 0x7d,
-0x9c, 0xf9, 0x66, 0x05, 0x4f, 0xfe, 0x57, 0xe5,
-0x28, 0xed, 0xef, 0x7d, 0x41, 0x53, 0x1e, 0x85,
-0xaf, 0x5d, 0x11, 0xff, 0xe4, 0xf1, 0x7f, 0x88,
-0x2d, 0xc6, 0xa8, 0x6c, 0x42, 0xe3, 0x70, 0xc9,
-0x98, 0x5c, 0x9f, 0xfa, 0x5d, 0xfe, 0x9f, 0x2c,
-0xc8, 0xe9, 0x45, 0x90, 0xfc, 0x72, 0xa2, 0x76,
-0xa0, 0x3b, 0xcd, 0x3e, 0x2e, 0xae, 0x04, 0x3d,
-0xf8, 0x27, 0xe3, 0xac, 0x9f, 0x2c, 0xff, 0x87,
-0xd8, 0x4d, 0xc7, 0x85, 0xff, 0x27, 0x42, 0x85,
-0xaf, 0x3d, 0xeb, 0x21, 0x62, 0xf9, 0x7f, 0xec,
-0xf1, 0x66, 0xe5, 0xe9, 0x0a, 0xa1, 0xb4, 0x94,
-0xe0, 0xcf, 0x50, 0xda, 0xb2, 0x4f, 0x30, 0x6a,
-0xfa, 0x7c, 0x13, 0xe2, 0x1f, 0xa5, 0x32, 0xbb,
-0x48, 0x52, 0x72, 0xc6, 0xdc, 0x80, 0xc2, 0x92,
-0x98, 0xbf, 0xd6, 0xa0, 0xb0, 0x8b, 0xdf, 0x8b,
-0x0f, 0x73, 0xfa, 0xbf, 0x0b, 0x25, 0x64, 0xe4,
-0xf7, 0xec, 0xfe, 0x20, 0x63, 0xe3, 0xf1, 0x8f,
-0xb7, 0xff, 0x7b, 0xc5, 0x79, 0x98, 0x6a, 0x06,
-0xb7, 0xfe, 0x74, 0x44, 0x13, 0xfd, 0x1d, 0x76,
-0xb9, 0x8d, 0x5a, 0x1c, 0xc1, 0xf5, 0xff, 0x64,
-0xf3, 0xbf, 0x28, 0xfb, 0xef, 0x19, 0xbe, 0x01,
-0x28, 0x1a, 0x78, 0x2f, 0x5d, 0x59, 0x80, 0xcf,
-0xe3, 0x8b, 0xba, 0xfe, 0x1f, 0x7b, 0x3d, 0x64,
-0xf9, 0x3f, 0xa6, 0xbf, 0x86, 0x1d, 0xe7, 0x9d,
-0x52, 0x74, 0x08, 0x8f, 0xc1, 0x8a, 0xad, 0x1f,
-0x47, 0x51, 0xde, 0xf8, 0x97, 0xc5, 0xfe, 0xf5,
-0xaf, 0x62, 0xe7, 0xec, 0xb6, 0xa7, 0xd7, 0x40,
-0xb6, 0xfe, 0xcf, 0x54, 0x07, 0x0f, 0x78, 0xe3,
-0x5f, 0x56, 0xff, 0x2f, 0xd2, 0xbf, 0xe8, 0x7f,
-0xb1, 0x53, 0x56, 0x6c, 0xd8, 0x13, 0xb0, 0x81,
-0xd0, 0x4b, 0x4e, 0xfc, 0xdd, 0x98, 0x92, 0xcd,
-0x8f, 0xcb, 0xc8, 0xaf, 0x58, 0x61, 0xaf, 0x77,
-0xed, 0x42, 0x9a, 0xed, 0x1e, 0xff, 0x8f, 0xa3,
-0x1f, 0xa7, 0xfe, 0x73, 0x4a, 0x3e, 0x95, 0xca,
-0x46, 0x03, 0x6b, 0xc6, 0xe3, 0x1f, 0xe7, 0x7d,
-0x74, 0xea, 0x3f, 0xc7, 0xd9, 0x20, 0xdc, 0x43,
-0xec, 0xb5, 0x51, 0xb7, 0xfe, 0xe1, 0x2b, 0xb6,
-0xfd, 0x79, 0xc9, 0xf1, 0x3f, 0x2f, 0xb2, 0xeb,
-0x3f, 0xaf, 0x2a, 0xfc, 0x99, 0xf6, 0x6d, 0x2b,
-0xba, 0x77, 0xd5, 0x38, 0xfc, 0xd3, 0x3d, 0xbe,
-0xfe, 0xb3, 0x5e, 0xf8, 0x9c, 0x41, 0x6d, 0x07,
-0x23, 0x69, 0x57, 0x8d, 0xd6, 0xfb, 0xe5, 0x8b,
-0x95, 0x79, 0xf9, 0xcf, 0xbd, 0xaa, 0x00, 0x39,
-0x71, 0xe2, 0x3f, 0x8b, 0xc2, 0x23, 0xfe, 0xf9,
-0xe3, 0xf1, 0x8f, 0x37, 0xff, 0xcb, 0x42, 0x3b,
-0x5d, 0xec, 0x75, 0x7d, 0x08, 0x16, 0x68, 0x56,
-0xdb, 0x0b, 0xef, 0x7e, 0x54, 0xc2, 0xe5, 0x71,
-0xf9, 0x5f, 0xb4, 0xdf, 0x45, 0x35, 0x4a, 0x03,
-0x0f, 0x24, 0xfd, 0x35, 0x76, 0xfd, 0x1f, 0xf7,
-0xbc, 0x9f, 0x5f, 0xff, 0x99, 0x76, 0xdb, 0x69,
-0x24, 0xac, 0x89, 0x6c, 0x0e, 0x13, 0xff, 0x76,
-0x41, 0x0e, 0xfe, 0x19, 0xdf, 0xff, 0xcb, 0x8f,
-0xf8, 0x4a, 0x17, 0x8d, 0xc0, 0x92, 0x89, 0x1a,
-0xc8, 0x77, 0x04, 0x1d, 0x19, 0xd7, 0xff, 0x1d,
-0x57, 0xa3, 0x62, 0xa7, 0x7d, 0x91, 0x23, 0x28,
-0x92, 0x87, 0x7f, 0xec, 0xe7, 0x19, 0x0b, 0xd8,
-0xd9, 0xd6, 0x8c, 0x84, 0xfa, 0x8a, 0xe8, 0x5a,
-0x59, 0xcf, 0x75, 0x44, 0xa0, 0xf0, 0x81, 0x13,
-0xff, 0xea, 0x16, 0xfd, 0xbf, 0xa6, 0x12, 0x7b,
-0xb9, 0xdf, 0x8e, 0xee, 0x79, 0xe3, 0x5f, 0xd6,
-0x46, 0x7f, 0x32, 0x27, 0xff, 0xfd, 0x45, 0x8b,
-0x06, 0x3c, 0x17, 0xa8, 0x4d, 0x6a, 0xe0, 0x27,
-0x76, 0x7f, 0x58, 0x4f, 0x21, 0xe8, 0xdc, 0xfe,
-0xef, 0xfb, 0xe0, 0x4b, 0xe4, 0xe4, 0xd1, 0x09,
-0xed, 0x44, 0x54, 0xee, 0xd3, 0x8d, 0x7c, 0xfc,
-0x73, 0xc4, 0xeb, 0xff, 0x29, 0xcd, 0xb2, 0xbb,
-0xbb, 0xac, 0x68, 0x57, 0xd9, 0x2d, 0x85, 0xea,
-0x4e, 0x91, 0x91, 0x9a, 0x9d, 0xaf, 0x8f, 0xf0,
-0x8f, 0x3d, 0x3e, 0xcb, 0xff, 0xa1, 0x22, 0x48,
-0x96, 0xa0, 0x26, 0x7d, 0x35, 0xe3, 0xf0, 0xe7,
-0x29, 0xe7, 0x79, 0x52, 0xdf, 0xa2, 0xe7, 0xc7,
-0x49, 0x69, 0xd2, 0xbf, 0x0b, 0x5a, 0x7b, 0x54,
-0xb3, 0x9f, 0xdf, 0xfe, 0x7d, 0x4b, 0xe8, 0xf7,
-0xb2, 0xf5, 0xe9, 0xd4, 0x7f, 0x4e, 0x3f, 0x5c,
-0x93, 0x5b, 0xff, 0xc7, 0xeb, 0x28, 0xfb, 0x69,
-0x6e, 0xfe, 0x97, 0x57, 0xdb, 0x81, 0x6e, 0xa7,
-0xfe, 0xb3, 0xab, 0xff, 0x5c, 0xfe, 0xb3, 0x40,
-0x3b, 0xdb, 0x18, 0xb1, 0x9d, 0x67, 0xf1, 0x4f,
-0xd9, 0xfd, 0x4f, 0xaf, 0xcd, 0xb8, 0x40, 0xc8,
-0x13, 0xff, 0x52, 0x96, 0xc0, 0x1c, 0xeb, 0xed,
-0x38, 0x1a, 0xb7, 0x1a, 0x13, 0x64, 0xdf, 0x97,
-0x0d, 0xba, 0x67, 0x3f, 0x72, 0xfb, 0xbf, 0xc3,
-0x67, 0xdd, 0xf7, 0x97, 0x0a, 0x41, 0x4b, 0x4e,
-0x63, 0xac, 0xb8, 0x37, 0x1e, 0x64, 0x8f, 0xa7,
-0xfc, 0xaf, 0x2c, 0xda, 0xf9, 0x19, 0xa1, 0x9d,
-0x78, 0x60, 0xcc, 0x9f, 0xad, 0xff, 0xbc, 0x0a,
-0xdf, 0xdf, 0xdf, 0x52, 0xff, 0xd3, 0x35, 0xe5,
-0x87, 0x73, 0xf2, 0xdf, 0xcf, 0x5b, 0x66, 0x96,
-0xd8, 0xad, 0x0d, 0x49, 0xcb, 0x8c, 0x28, 0xc2,
-0xc2, 0x4c, 0xe0, 0xff, 0xc9, 0xf6, 0xaf, 0xcc,
-0x04, 0x5f, 0x61, 0xe7, 0x8c, 0xcb, 0xc9, 0xc6,
-0xd1, 0xc0, 0x98, 0x7c, 0x08, 0xb2, 0xfc, 0x67,
-0xa7, 0x10, 0xf4, 0x90, 0xa3, 0xff, 0x47, 0x25,
-0x91, 0xff, 0x25, 0xaa, 0x37, 0x13, 0x11, 0xc8,
-0x50, 0xbf, 0xc2, 0xb2, 0x8d, 0x78, 0xe2, 0x92,
-0x93, 0x88, 0x71, 0xd2, 0x13, 0xff, 0xda, 0x62,
-0x3b, 0x85, 0x86, 0x2a, 0xf6, 0x2a, 0x33, 0xe3,
-0xaa, 0xdd, 0xaf, 0x19, 0xe7, 0xeb, 0x8c, 0x37,
-0xed, 0xe1, 0xa2, 0xfe, 0xb3, 0xa3, 0x34, 0x62,
-0xb3, 0x40, 0xcc, 0x57, 0x0c, 0x59, 0x7e, 0xef,
-0x12, 0x69, 0x5c, 0xfc, 0x6b, 0xcc, 0xde, 0xbf,
-0x38, 0x7b, 0x5b, 0x08, 0xd1, 0xb4, 0xfc, 0x1f,
-0x16, 0xff, 0x39, 0x95, 0xdd, 0x5f, 0xfc, 0x39,
-0xf1, 0x2f, 0x29, 0xab, 0x9f, 0x3d, 0xf2, 0x88,
-0x99, 0xad, 0x27, 0xff, 0x9c, 0x6d, 0x81, 0x9d,
-0x52, 0xfc, 0xde, 0xfe, 0xef, 0x07, 0xad, 0x30,
-0xc7, 0x98, 0xdc, 0x40, 0x86, 0xdd, 0x08, 0x8c,
-0xca, 0xab, 0x75, 0xe2, 0x3f, 0xfb, 0x33, 0x13,
-0xc5, 0xbf, 0x9c, 0xfe, 0x5f, 0xf3, 0x13, 0x7f,
-0x2b, 0xf2, 0x97, 0xbb, 0x27, 0xdb, 0xf5, 0x0c,
-0x53, 0x13, 0xe3, 0x9f, 0xec, 0xa6, 0xf6, 0x40,
-0xd3, 0x2a, 0x6a, 0x7c, 0x70, 0x58, 0xdd, 0x27,
-0x02, 0x61, 0xce, 0xf8, 0x2f, 0xe5, 0xc7, 0xbf,
-0x28, 0xff, 0x8b, 0xaa, 0x61, 0x5f, 0xd3, 0x2a,
-0x0a, 0x71, 0x44, 0xb4, 0x6c, 0xff, 0xd3, 0x6b,
-0xf5, 0x09, 0xf1, 0xcf, 0xbf, 0xae, 0xb6, 0x27,
-0x45, 0x69, 0xef, 0x68, 0x1f, 0xec, 0xfc, 0x26,
-0xbf, 0x67, 0x3d, 0xe4, 0xf7, 0xff, 0xca, 0x56,
-0xb3, 0x11, 0x82, 0x61, 0x4f, 0x33, 0x9e, 0x15,
-0x26, 0x21, 0xfe, 0x71, 0xe3, 0x4d, 0x05, 0x1f,
-0xc0, 0x71, 0x3e, 0x3b, 0x15, 0x58, 0x25, 0xcf,
-0x6b, 0xb9, 0xb0, 0x79, 0xce, 0x15, 0xe2, 0x5f,
-0xcc, 0xc5, 0x3f, 0xa7, 0xd8, 0xbd, 0x3c, 0x9c,
-0x52, 0x7b, 0x7d, 0x35, 0xc9, 0x03, 0x55, 0xe1,
-0x71, 0xf1, 0x2f, 0x21, 0xb4, 0x7b, 0xf2, 0xdf,
-0x87, 0xa9, 0x0d, 0x0a, 0x8f, 0xa4, 0x98, 0xa2,
-0x7e, 0x1f, 0xe2, 0x56, 0xfe, 0xfb, 0xef, 0xf0,
-0xff, 0x54, 0x6e, 0x37, 0xd6, 0x53, 0xff, 0xaf,
-0xde, 0x70, 0x8d, 0x76, 0xa0, 0xdb, 0xc1, 0x9f,
-0x9e, 0x78, 0xe2, 0x86, 0x34, 0x5b, 0xe3, 0xe1,
-0xff, 0x3c, 0x07, 0x78, 0x66, 0x49, 0x05, 0x66,
-0xc8, 0x55, 0xc6, 0x39, 0x63, 0xd7, 0xc4, 0xf8,
-0x79, 0xc0, 0x89, 0x67, 0x65, 0xa4, 0x3d, 0x70,
-0x21, 0xd5, 0xc8, 0x83, 0x99, 0xea, 0x33, 0xca,
-0xd7, 0x7f, 0x7f, 0xfc, 0xab, 0x4d, 0xc3, 0xf3,
-0x48, 0x59, 0x5d, 0x4f, 0xf1, 0x23, 0x72, 0x55,
-0x7e, 0xff, 0x0b, 0x47, 0x28, 0x7f, 0xc1, 0xe3,
-0xff, 0xf9, 0x18, 0x15, 0xa1, 0xdd, 0xa6, 0xee,
-0x28, 0x9b, 0x0e, 0xbb, 0xf9, 0x95, 0xe2, 0x5f,
-0x0e, 0x7f, 0x3b, 0x53, 0xd0, 0xc2, 0xd3, 0xbc,
-0x26, 0x5d, 0x74, 0x3d, 0x6b, 0xe6, 0xbb, 0xb4,
-0xd5, 0xe6, 0x84, 0xfe, 0x31, 0x17, 0xff, 0xec,
-0x93, 0xae, 0x6a, 0x79, 0x7c, 0xf0, 0x63, 0xba,
-0xfa, 0x37, 0xec, 0xcf, 0xe1, 0x71, 0xf3, 0x8b,
-0x13, 0xfb, 0x43, 0x2e, 0x39, 0xe3, 0x5b, 0x55,
-0x45, 0x1f, 0xd5, 0xe6, 0xf2, 0xe2, 0x2a, 0x79,
-0x51, 0xfc, 0xbd, 0x89, 0xe2, 0x5f, 0x54, 0x1a,
-0xe8, 0x25, 0x67, 0xbc, 0x31, 0x65, 0x8f, 0xf4,
-0x1b, 0xed, 0xa6, 0xae, 0xe0, 0xeb, 0xc1, 0x7d,
-0x76, 0x21, 0x20, 0x52, 0xcb, 0x37, 0x6c, 0xfd,
-0x7c, 0xc3, 0xc2, 0x3f, 0xf6, 0x7c, 0x7b, 0xf1,
-0xf7, 0x1d, 0x80, 0x18, 0x0f, 0xc4, 0x64, 0x5d,
-0xbb, 0x92, 0x7e, 0xf2, 0xf8, 0x3f, 0x3f, 0xa3,
-0xf8, 0x97, 0x81, 0xb0, 0xe7, 0x71, 0xc9, 0x81,
-0x3d, 0x37, 0x5e, 0x91, 0xff, 0xf3, 0xcf, 0xb0,
-0x91, 0x57, 0xa5, 0xae, 0x59, 0xb5, 0xad, 0x6c,
-0x5c, 0xff, 0x0b, 0x47, 0xc8, 0xe5, 0xff, 0x24,
-0xb9, 0x6e, 0xfa, 0x22, 0x33, 0x54, 0x1d, 0x8f,
-0x55, 0xb6, 0x1a, 0x23, 0x39, 0xfa, 0xcc, 0xc1,
-0x3f, 0x70, 0xa4, 0x7b, 0xf7, 0x96, 0xdb, 0x32,
-0xf2, 0x8d, 0x70, 0xc9, 0x6c, 0x98, 0xd8, 0xff,
-0xf3, 0xbe, 0x37, 0xfe, 0x65, 0x8c, 0xc5, 0x1b,
-0xe0, 0xba, 0x2c, 0xfb, 0xd4, 0xe9, 0x07, 0x7a,
-0x25, 0xfe, 0x8f, 0x76, 0x8a, 0x1f, 0xe5, 0xf3,
-0x8c, 0x25, 0x49, 0x79, 0x3a, 0x0a, 0x57, 0x88,
-0x77, 0xe4, 0xf2, 0x7f, 0xd6, 0xb7, 0xea, 0x71,
-0x84, 0x25, 0xeb, 0xd4, 0xf5, 0x83, 0x57, 0x8c,
-0x7f, 0xd9, 0x1f, 0xc2, 0x3f, 0xeb, 0xcb, 0xb6,
-0x65, 0xd4, 0x64, 0xd9, 0xca, 0xd9, 0x7f, 0x50,
-0xfc, 0x2b, 0x20, 0xda, 0x84, 0xa9, 0xb1, 0xa6,
-0xfe, 0xdf, 0x11, 0x0f, 0x72, 0xd7, 0x1b, 0x9e,
-0xbf, 0x44, 0xfc, 0x85, 0x37, 0xdf, 0xd9, 0x74,
-0xac, 0xed, 0x0a, 0xf1, 0xaf, 0x0f, 0x9c, 0xfd,
-0x6e, 0x60, 0xca, 0x0b, 0xec, 0x37, 0x4a, 0xa3,
-0x39, 0x6b, 0x90, 0xba, 0x5d, 0x5c, 0x29, 0xbe,
-0x73, 0xd2, 0xa9, 0xff, 0x1c, 0x2a, 0xe8, 0x07,
-0x51, 0x8f, 0x7d, 0x50, 0xbe, 0x1e, 0xae, 0x18,
-0xff, 0x3a, 0xe9, 0xd8, 0x9f, 0x35, 0xd9, 0xfa,
-0x3f, 0x7e, 0x1e, 0xd6, 0xf9, 0xb1, 0x48, 0xad,
-0x45, 0xc3, 0xf6, 0xe0, 0x9f, 0x05, 0x02, 0xff,
-0x78, 0xf8, 0x3f, 0xd9, 0x49, 0xc5, 0x10, 0xc6,
-0x5c, 0x69, 0xbe, 0x65, 0x2f, 0x49, 0xf6, 0x78,
-0xea, 0xff, 0xfe, 0x28, 0x45, 0xbb, 0xf6, 0x30,
-0x07, 0x46, 0x5a, 0x40, 0xa8, 0xc8, 0x69, 0x2c,
-0x9b, 0x64, 0xef, 0x38, 0x7c, 0x57, 0xc1, 0x7f,
-0x4e, 0x35, 0xb4, 0x07, 0x2b, 0x64, 0x85, 0x5d,
-0xf1, 0xf7, 0xf5, 0xe0, 0x1f, 0xd8, 0xa1, 0xbe,
-0x69, 0x34, 0x2c, 0x0b, 0x6e, 0xea, 0x1c, 0x86,
-0x37, 0x53, 0x59, 0x1a, 0x7c, 0xfe, 0x78, 0x6f,
-0xff, 0x77, 0x71, 0xec, 0xd5, 0x96, 0x72, 0xbf,
-0x0e, 0x43, 0x79, 0x8d, 0x30, 0x5c, 0xfc, 0xe3,
-0x8e, 0x57, 0x66, 0xb0, 0xfb, 0x32, 0x1f, 0x4f,
-0xcb, 0xc3, 0xec, 0x46, 0xe3, 0x3e, 0x33, 0x6c,
-0xd1, 0x9e, 0x09, 0xf6, 0x14, 0xd9, 0xfe, 0x9f,
-0x0d, 0x88, 0x7f, 0x6a, 0xec, 0xdf, 0x37, 0x52,
-0xf0, 0x29, 0xde, 0xd9, 0xaa, 0x27, 0x3b, 0xe7,
-0x96, 0x7d, 0xaa, 0xe5, 0xc1, 0x98, 0x62, 0x9f,
-0xc7, 0x3d, 0xf6, 0x47, 0xf6, 0xf2, 0x51, 0x75,
-0xe9, 0xa3, 0x78, 0xec, 0xba, 0x2e, 0x89, 0x2f,
-0xe9, 0x67, 0x61, 0xad, 0x55, 0xed, 0xf0, 0xb3,
-0xe3, 0xe2, 0x5f, 0x6e, 0x3d, 0xbd, 0x48, 0xf7,
-0x54, 0xf8, 0x31, 0x9f, 0x4d, 0x24, 0xe7, 0xaf,
-0xc3, 0x6b, 0x5d, 0xd7, 0xbf, 0x3e, 0x61, 0xfc,
-0xeb, 0xb0, 0x3d, 0x9c, 0xf0, 0x4f, 0xea, 0x7d,
-0x9a, 0x54, 0xac, 0x7c, 0x07, 0x69, 0xc3, 0xb4,
-0x69, 0xcf, 0x66, 0x71, 0x8e, 0x3d, 0xb1, 0xdf,
-0x47, 0x43, 0xf4, 0xbf, 0x98, 0x93, 0x8a, 0x8e,
-0x95, 0x7f, 0xa0, 0x7a, 0x69, 0xab, 0xb9, 0xfe,
-0x1f, 0xa7, 0xff, 0xd7, 0xf7, 0x4b, 0x37, 0x67,
-0x1e, 0xa3, 0x26, 0x17, 0x6d, 0xec, 0x05, 0xbe,
-0x57, 0xab, 0xea, 0xcf, 0x8b, 0x67, 0x29, 0xc2,
-0x10, 0xbd, 0xed, 0xc6, 0x17, 0x60, 0x8b, 0xf6,
-0x18, 0x54, 0x83, 0xda, 0x9e, 0x78, 0x01, 0xfe,
-0x33, 0x8f, 0x26, 0xe4, 0x08, 0xa7, 0x73, 0xf8,
-0x3f, 0xbb, 0xf1, 0xbf, 0xd4, 0x50, 0xa2, 0x9f,
-0xef, 0xfc, 0x64, 0x7c, 0x9c, 0x3d, 0x17, 0x86,
-0xc8, 0xc5, 0xb7, 0xbd, 0x95, 0x3f, 0x84, 0xf7,
-0x43, 0x75, 0x89, 0x8d, 0x15, 0xf2, 0xb3, 0x70,
-0x3e, 0x75, 0x85, 0xf8, 0x8e, 0x9b, 0x6f, 0x48,
-0xf1, 0xaf, 0xb3, 0x46, 0xc3, 0xa6, 0xe0, 0x66,
-0x79, 0xb8, 0xed, 0xec, 0x04, 0xf6, 0x96, 0x3a,
-0x20, 0x54, 0xbb, 0xf1, 0x38, 0xea, 0x7f, 0xfa,
-0x1c, 0xcc, 0xa9, 0x09, 0x0c, 0xca, 0xf3, 0xdc,
-0xfc, 0xf7, 0xfc, 0xfd, 0x2e, 0x13, 0x77, 0xee,
-0x4f, 0xfc, 0x9f, 0x44, 0x44, 0x53, 0x7b, 0xa8,
-0xfe, 0xea, 0x15, 0xf8, 0x1b, 0x65, 0xde, 0xfa,
-0x87, 0xab, 0xf9, 0x86, 0xee, 0xe9, 0x87, 0x71,
-0x7c, 0x34, 0x7e, 0xa5, 0xf1, 0xde, 0xf8, 0x17,
-0x04, 0xf0, 0x35, 0xac, 0xe5, 0x68, 0xdf, 0x6a,
-0x28, 0x0d, 0xf3, 0x0a, 0xf1, 0x2f, 0x70, 0xff,
-0x60, 0x35, 0x1c, 0x65, 0x64, 0x3f, 0xad, 0x63,
-0xe3, 0xc4, 0xfa, 0x71, 0xfd, 0xe1, 0x84, 0x7f,
-0x7e, 0xc3, 0x6e, 0x84, 0xfb, 0x07, 0xe5, 0x51,
-0x2a, 0x84, 0x38, 0xe1, 0x7c, 0xcb, 0x33, 0xae,
-0xff, 0xa7, 0xc0, 0xb3, 0x5a, 0x50, 0x3f, 0x24,
-0x4c, 0x85, 0xa7, 0x79, 0xe3, 0x00, 0x0a, 0xf3,
-0xec, 0x44, 0xb0, 0x09, 0xfc, 0x3f, 0x84, 0x76,
-0x36, 0x98, 0xb5, 0x99, 0x5b, 0x29, 0xed, 0x7d,
-0x03, 0xaf, 0x1d, 0xc6, 0x2b, 0xd3, 0xc5, 0x57,
-0xc4, 0x88, 0xf6, 0xe0, 0x01, 0xcf, 0xec, 0x3a,
-0x8c, 0x28, 0xe5, 0xb3, 0x0b, 0xbc, 0xc7, 0xf1,
-0x8a, 0xe5, 0xe8, 0x28, 0xca, 0xf5, 0xff, 0x50,
-0xfe, 0xbb, 0xa5, 0x3d, 0x86, 0xf6, 0xe7, 0xe8,
-0x86, 0x9d, 0x74, 0x7f, 0x2a, 0x64, 0x41, 0x89,
-0x78, 0x4f, 0x58, 0xad, 0x45, 0x47, 0xdd, 0xfe,
-0x2c, 0x95, 0x8e, 0x12, 0x8e, 0xc3, 0x33, 0xc9,
-0x06, 0xab, 0x3f, 0xe9, 0x33, 0x5a, 0x43, 0xbf,
-0x68, 0x54, 0x91, 0x7d, 0x71, 0x4c, 0x0f, 0xfe,
-0x39, 0xe8, 0x6a, 0xe3, 0xbc, 0x35, 0x5f, 0x54,
-0x0b, 0x6b, 0xc8, 0x04, 0x47, 0xdd, 0x8a, 0x01,
-0xa3, 0x79, 0xf5, 0x9f, 0x9d, 0x6c, 0xaf, 0xac,
-0xff, 0xed, 0x19, 0x22, 0xca, 0x66, 0x0b, 0x1d,
-0x1f, 0xc6, 0x2b, 0x43, 0x9e, 0xf9, 0x46, 0xdd,
-0x5f, 0x7f, 0x3f, 0x0b, 0xf7, 0x95, 0xa4, 0x9b,
-0x8e, 0x13, 0x31, 0x8c, 0xab, 0xf3, 0xc5, 0x7a,
-0x20, 0xe8, 0xcb, 0xce, 0x39, 0x3f, 0xaf, 0xe3,
-0xff, 0xb1, 0xdc, 0xa4, 0x56, 0xbd, 0x62, 0x89,
-0x88, 0x2b, 0x91, 0xd9, 0x56, 0x21, 0xe8, 0x17,
-0x26, 0xf6, 0xff, 0x58, 0xbb, 0x7f, 0x55, 0xe6,
-0xde, 0x35, 0xec, 0x35, 0xd1, 0xf6, 0x5d, 0xfd,
-0x9a, 0x5b, 0x18, 0xd9, 0x74, 0xc6, 0xb7, 0xaa,
-0x01, 0x75, 0xb7, 0x8b, 0x76, 0xe6, 0x12, 0xda,
-0x39, 0xae, 0x3c, 0x05, 0xe9, 0x41, 0x91, 0x11,
-0x66, 0xf3, 0x7f, 0x5c, 0xfe, 0xf3, 0xa7, 0x0e,
-0x8e, 0x7b, 0x3b, 0x2e, 0xb4, 0x5e, 0xd6, 0x1a,
-0x5b, 0x6c, 0xfd, 0xf4, 0x0b, 0xfe, 0x8f, 0xf3,
-0xfe, 0x16, 0xe4, 0xae, 0x46, 0xe3, 0x9e, 0x74,
-0xf3, 0x29, 0xc2, 0xe7, 0x99, 0x80, 0xa7, 0x10,
-0xb4, 0x6b, 0x9f, 0x89, 0xff, 0x63, 0x5b, 0x0f,
-0x75, 0x2f, 0xcb, 0x36, 0x92, 0xbe, 0x07, 0xb7,
-0x21, 0xf0, 0x14, 0x82, 0x3e, 0xe1, 0xd6, 0xff,
-0xf4, 0xf6, 0xff, 0x42, 0xe1, 0xa4, 0x40, 0x77,
-0xf7, 0x58, 0x81, 0xbf, 0x9f, 0x4d, 0x84, 0x7f,
-0xf2, 0xdf, 0xa6, 0x1b, 0xcb, 0x84, 0xe3, 0x31,
-0x27, 0xb1, 0xce, 0xf5, 0xcf, 0x58, 0xf9, 0x5f,
-0x2e, 0xda, 0x49, 0x05, 0x7b, 0x89, 0x08, 0xcd,
-0x1b, 0x89, 0x08, 0xfd, 0x96, 0x9e, 0xfd, 0xca,
-0xc5, 0xe7, 0x6e, 0xfd, 0x1f, 0xd9, 0xdb, 0x08,
-0x4c, 0x6b, 0xc0, 0xa3, 0xb6, 0xb8, 0x52, 0x9b,
-0x8f, 0x7f, 0xc6, 0xef, 0x86, 0x56, 0xbf, 0xa7,
-0xe0, 0x77, 0x3c, 0xf1, 0x2f, 0xd7, 0xbe, 0x39,
-0xfe, 0x9f, 0xb0, 0x40, 0x2f, 0x8b, 0x5c, 0xfe,
-0x49, 0x8f, 0x85, 0x67, 0x56, 0x8e, 0xc3, 0x3f,
-0x79, 0x68, 0xa7, 0xe9, 0xd4, 0xef, 0xe5, 0xff,
-0x38, 0xdd, 0x2e, 0x5c, 0x18, 0xd0, 0x9a, 0x83,
-0x7f, 0x72, 0xf2, 0xdf, 0xdd, 0xb2, 0x33, 0x57,
-0xe2, 0xff, 0x7c, 0x90, 0xc3, 0xff, 0x71, 0xcb,
-0xf8, 0x50, 0xb5, 0xc3, 0x41, 0x3c, 0x1d, 0x64,
-0x13, 0xc1, 0x1c, 0x62, 0xb3, 0x37, 0xfe, 0x95,
-0xa3, 0x9f, 0xba, 0x45, 0x1b, 0x5d, 0xda, 0x70,
-0x98, 0xf8, 0xcf, 0x8d, 0x96, 0x7e, 0xec, 0xf3,
-0x94, 0xf0, 0xff, 0x48, 0x9e, 0x6c, 0x2f, 0x95,
-0x97, 0x59, 0x6e, 0x1f, 0xd5, 0xf4, 0xf8, 0x7f,
-0xc6, 0xd5, 0xff, 0x11, 0xb3, 0xdb, 0x6b, 0x50,
-0xe3, 0x95, 0x26, 0xb1, 0xcc, 0x06, 0x59, 0x9b,
-0x3b, 0x5f, 0x2f, 0xfe, 0x41, 0xb4, 0x23, 0x67,
-0xb5, 0xf7, 0x9f, 0x50, 0x1d, 0x5f, 0x35, 0xc4,
-0xce, 0xa0, 0x30, 0xcb, 0x98, 0x31, 0xe8, 0xea,
-0xf3, 0x1d, 0x6f, 0xfd, 0x1f, 0x6f, 0x3f, 0x2f,
-0x91, 0xdf, 0x77, 0x8a, 0x1a, 0x9f, 0x2d, 0x2b,
-0xf1, 0xf8, 0xbb, 0x32, 0xb9, 0xf5, 0x9f, 0x9d,
-0xec, 0x30, 0xdd, 0x2a, 0x13, 0x8d, 0x7f, 0x58,
-0x6f, 0x7c, 0x2a, 0x29, 0x3b, 0x15, 0xa1, 0x4f,
-0x38, 0xbf, 0xd7, 0x38, 0xff, 0x0f, 0xf5, 0xdb,
-0x25, 0x41, 0x2b, 0x36, 0x27, 0xc4, 0x3f, 0x59,
-0xff, 0xcf, 0xb5, 0x59, 0xb4, 0x63, 0xd5, 0xff,
-0x39, 0xc7, 0x9c, 0xf8, 0xd7, 0xac, 0x54, 0x30,
-0x97, 0xff, 0x6c, 0xd9, 0x9f, 0x0d, 0xf6, 0xdb,
-0x71, 0x6b, 0xac, 0x29, 0x0b, 0x7b, 0xb2, 0xe7,
-0xf1, 0x44, 0x91, 0x77, 0x3f, 0x4a, 0xb9, 0x4e,
-0x12, 0x7b, 0xf7, 0x6f, 0x1a, 0x52, 0x45, 0x3d,
-0xc0, 0xac, 0xff, 0x47, 0xc3, 0xaf, 0x06, 0x5a,
-0xec, 0xf1, 0xbd, 0xaa, 0xe5, 0xed, 0xb9, 0xd5,
-0x46, 0x3b, 0xf7, 0x93, 0x23, 0x68, 0x6f, 0x02,
-0x61, 0x4f, 0xab, 0x75, 0x25, 0x55, 0x4c, 0xfc,
-0x67, 0xe7, 0x7d, 0x99, 0xe2, 0xb1, 0xb7, 0x56,
-0x7d, 0x9b, 0xea, 0x8c, 0x95, 0xff, 0xce, 0x2d,
-0x0b, 0xc3, 0x4b, 0xbc, 0xf1, 0xf4, 0x6c, 0xfe,
-0x57, 0xc6, 0x7f, 0x56, 0x64, 0x7b, 0xcd, 0x59,
-0x19, 0x18, 0x62, 0x0d, 0xad, 0x17, 0x79, 0x79,
-0x3c, 0x30, 0x22, 0x0a, 0x41, 0x37, 0xc6, 0x09,
-0xff, 0x38, 0xe7, 0xa9, 0xde, 0xd2, 0x2d, 0xca,
-0xde, 0x6c, 0xd9, 0x1f, 0x78, 0x8c, 0x55, 0x19,
-0xea, 0xed, 0x78, 0x10, 0x13, 0x02, 0x3e, 0xbf,
-0xfe, 0x3d, 0xab, 0xfe, 0xea, 0x49, 0x2f, 0xfe,
-0x71, 0xbb, 0x83, 0x21, 0x70, 0x32, 0x80, 0x0a,
-0x47, 0x93, 0xa0, 0xb6, 0x5a, 0x85, 0xa0, 0x0d,
-0x8a, 0xf7, 0xb9, 0xf1, 0x2f, 0xcb, 0xfe, 0xf4,
-0xdd, 0x6a, 0x65, 0xcf, 0xc5, 0x8d, 0x1e, 0x8d,
-0x81, 0x60, 0xdc, 0xa9, 0xc0, 0x9e, 0xa3, 0xc2,
-0xb6, 0xf0, 0x9d, 0xd8, 0x32, 0x6f, 0xfe, 0xc8,
-0x0e, 0xdc, 0x14, 0xa6, 0x0a, 0xa7, 0x0d, 0xbc,
-0x47, 0x07, 0x49, 0x5d, 0xae, 0x85, 0xbb, 0x21,
-0xb6, 0x2d, 0x60, 0x6d, 0x34, 0x0d, 0xfc, 0xfe,
-0xb4, 0x7c, 0xd2, 0x83, 0x7f, 0x1c, 0x7b, 0x6b,
-0xd9, 0xab, 0xa5, 0x68, 0xaf, 0x0c, 0x51, 0xaf,
-0x3e, 0x5b, 0xff, 0x50, 0x2b, 0x49, 0x7b, 0xea,
-0x3f, 0x73, 0xcd, 0x43, 0xea, 0xb8, 0x04, 0x73,
-0x78, 0x20, 0x23, 0xcf, 0xb5, 0x84, 0xc1, 0x6c,
-0x3d, 0xc0, 0xc0, 0xa8, 0x67, 0x7f, 0xe4, 0xb6,
-0xff, 0x27, 0xcd, 0xde, 0xe4, 0x56, 0x21, 0x71,
-0xa6, 0x2b, 0x42, 0xb0, 0x1a, 0x7b, 0x89, 0xd2,
-0x6a, 0x39, 0xf5, 0x9f, 0x1d, 0xa7, 0x50, 0xf6,
-0x7d, 0x64, 0x51, 0x4b, 0xd8, 0x63, 0xe1, 0x1f,
-0x45, 0x4d, 0x7b, 0xfc, 0xd5, 0x8e, 0xff, 0x27,
-0x56, 0x36, 0xa0, 0xa4, 0xb9, 0xae, 0xab, 0x2a,
-0x53, 0xa9, 0xed, 0xbb, 0xde, 0x9a, 0x5d, 0x78,
-0xd0, 0x1d, 0x63, 0xc7, 0xbc, 0xfd, 0x2f, 0x4a,
-0x9d, 0xf9, 0x66, 0x0b, 0xa1, 0xd7, 0xc0, 0x18,
-0x43, 0x21, 0xcb, 0x90, 0x07, 0x54, 0x94, 0xe9,
-0xae, 0xcf, 0x29, 0x9e, 0xf9, 0x9e, 0xa1, 0x42,
-0x88, 0x86, 0x00, 0x42, 0x0b, 0x25, 0x3c, 0x61,
-0xbd, 0x62, 0xa5, 0x86, 0x21, 0xde, 0x83, 0xf1,
-0xf8, 0xa7, 0xb9, 0x01, 0x2e, 0x26, 0x45, 0xb6,
-0xd7, 0x04, 0xfe, 0x1f, 0x37, 0xfe, 0x18, 0x72,
-0xf0, 0x4f, 0xad, 0xf2, 0x84, 0x2e, 0xb2, 0xbd,
-0xac, 0x2b, 0x25, 0x1e, 0xff, 0xcf, 0x58, 0x6e,
-0xfd, 0x1f, 0x58, 0x6d, 0x5e, 0x1b, 0xf3, 0x6d,
-0xb4, 0xcb, 0x5c, 0xe3, 0x15, 0x25, 0xcf, 0xff,
-0xe3, 0xf1, 0x47, 0xed, 0x10, 0xfa, 0xbc, 0x36,
-0xcd, 0x50, 0xe8, 0xbe, 0x02, 0x9e, 0x74, 0xf9,
-0x39, 0x50, 0x9a, 0x5d, 0x0f, 0xb1, 0xe6, 0x1d,
-0x76, 0x19, 0xf0, 0x09, 0xf8, 0x51, 0x39, 0xfc,
-0x67, 0x4b, 0x3f, 0xcd, 0x5f, 0xcb, 0xe5, 0x3f,
-0x97, 0x5c, 0x91, 0xff, 0xec, 0x44, 0xbb, 0x26,
-0xe0, 0x9b, 0x09, 0xbc, 0x2d, 0x7b, 0xea, 0x3f,
-0x53, 0x3d, 0x28, 0xa9, 0xd6, 0x94, 0xd3, 0xd2,
-0x97, 0x6a, 0x0e, 0xc4, 0xad, 0xc7, 0x56, 0xf2,
-0x9e, 0x1f, 0xcf, 0xcb, 0xf6, 0xc7, 0x54, 0x84,
-0x53, 0xb4, 0x4f, 0xc6, 0x1f, 0x14, 0x76, 0xeb,
-0xe3, 0xf1, 0x70, 0xc4, 0xf2, 0xff, 0xd8, 0xfe,
-0x3d, 0xab, 0xfe, 0x8f, 0xd8, 0xf4, 0x3f, 0x67,
-0xe4, 0xbb, 0x41, 0x5e, 0x95, 0x6c, 0xfe, 0x8f,
-0x87, 0xff, 0xbc, 0xc4, 0x70, 0xa3, 0x5d, 0x15,
-0xc2, 0xdb, 0x83, 0x40, 0xa8, 0x22, 0x9a, 0x45,
-0x44, 0xda, 0x7c, 0x11, 0xff, 0x72, 0xf9, 0xcf,
-0x95, 0xd9, 0xf8, 0xd7, 0x5d, 0xcd, 0x17, 0x0a,
-0x10, 0xf6, 0x3c, 0x6d, 0xe9, 0x47, 0xb1, 0x15,
-0x65, 0x09, 0x49, 0xc7, 0xff, 0xac, 0xba, 0xf8,
-0xe7, 0x39, 0x78, 0xe6, 0x4a, 0xf8, 0xfc, 0xa4,
-0xcb, 0x7f, 0xb8, 0x7a, 0x8b, 0x5d, 0x2d, 0xff,
-0x15, 0x51, 0x4f, 0x23, 0x6b, 0x48, 0xbf, 0x98,
-0xeb, 0xff, 0x71, 0xce, 0x77, 0xba, 0x17, 0xff,
-0x7c, 0xaf, 0x43, 0x94, 0xfd, 0x19, 0xef, 0xff,
-0x71, 0xdf, 0x77, 0xab, 0xfe, 0x4f, 0x56, 0x7b,
-0x0f, 0x53, 0x3c, 0x7a, 0xdc, 0x79, 0xd6, 0x9f,
-0x5b, 0xff, 0xd0, 0xf5, 0xf6, 0xa8, 0xef, 0xe8,
-0x57, 0xf0, 0xff, 0x78, 0xf8, 0xcf, 0xd9, 0xfa,
-0x3f, 0x44, 0x7b, 0x66, 0x3d, 0x6a, 0xed, 0xc4,
-0x78, 0xc0, 0xcb, 0x7f, 0xce, 0xee, 0x77, 0x9b,
-0x9b, 0x71, 0x9b, 0xdb, 0x56, 0x67, 0x4c, 0xc8,
-0x6f, 0xc9, 0xe3, 0x3f, 0xdb, 0xe8, 0x65, 0xa7,
-0x39, 0x2e, 0xff, 0x7d, 0x3c, 0xff, 0x27, 0x07,
-0xff, 0x4c, 0xcc, 0xff, 0xf1, 0xe0, 0x1f, 0x51,
-0xff, 0xc7, 0xaa, 0x36, 0x46, 0x85, 0x91, 0x53,
-0x6e, 0x18, 0x28, 0x07, 0xff, 0x38, 0xf6, 0x67,
-0x5f, 0x4e, 0xff, 0xd3, 0xb6, 0xba, 0x8a, 0x09,
-0xf9, 0x27, 0xef, 0x38, 0xeb, 0xa7, 0xc7, 0x8b,
-0x07, 0x2e, 0x2a, 0x13, 0xfb, 0x43, 0xca, 0xdd,
-0xfe, 0x5f, 0x0e, 0xfe, 0x19, 0x14, 0x6d, 0x32,
-0xea, 0xda, 0xee, 0x9f, 0xd0, 0xff, 0xe3, 0xd6,
-0x3f, 0x0c, 0x65, 0x54, 0x0b, 0xe4, 0x34, 0x11,
-0xda, 0xd9, 0xa6, 0x4e, 0xc4, 0x7f, 0xc6, 0x8d,
-0x26, 0xa7, 0xfe, 0x0f, 0x44, 0x17, 0x5d, 0x4b,
-0xfd, 0xce, 0xf6, 0xab, 0xfa, 0xa2, 0x09, 0xfd,
-0x5d, 0x6e, 0xfe, 0xbb, 0xa8, 0xff, 0x63, 0x91,
-0x7c, 0x2c, 0x7d, 0x4e, 0xec, 0x4f, 0x73, 0xd6,
-0x83, 0x17, 0xff, 0x28, 0x67, 0x53, 0x75, 0x57,
-0xf0, 0xff, 0xb8, 0x7c, 0x24, 0x69, 0xbb, 0xe2,
-0xb2, 0x7d, 0x8c, 0x09, 0x81, 0xb1, 0x37, 0xff,
-0x5d, 0xb5, 0xf1, 0x4f, 0x82, 0xb4, 0xdd, 0x7a,
-0x05, 0xfc, 0x79, 0x6c, 0x5c, 0xfc, 0xeb, 0xd6,
-0x11, 0xf6, 0x16, 0x3c, 0x6e, 0x4c, 0xcc, 0x7f,
-0x66, 0x39, 0xfc, 0x67, 0xd5, 0xe9, 0x17, 0xbc,
-0xdb, 0x8c, 0xf6, 0xfd, 0x1e, 0xfe, 0x33, 0xbf,
-0x3d, 0x8b, 0x7f, 0x56, 0xb2, 0xff, 0x82, 0x3d,
-0xea, 0x95, 0xf8, 0xcf, 0x2d, 0x46, 0x76, 0x7c,
-0x77, 0x16, 0xff, 0x88, 0xf8, 0xd7, 0x07, 0x57,
-0xe0, 0x3f, 0x7f, 0xcc, 0xed, 0x47, 0x66, 0xd7,
-0xff, 0x09, 0xa6, 0x9b, 0x87, 0x7f, 0x07, 0xff,
-0xd9, 0xe9, 0x3f, 0x42, 0xf5, 0x7f, 0xb2, 0xdd,
-0xbe, 0x2e, 0xe1, 0xdd, 0xe6, 0x9c, 0xfc, 0x7d,
-0xfc, 0xe7, 0x50, 0x16, 0xcf, 0x18, 0x08, 0x83,
-0xf7, 0x5c, 0xc9, 0x9f, 0xe3, 0xf2, 0x8d, 0x9d,
-0xf8, 0x97, 0xe8, 0xf6, 0x75, 0xa5, 0xf1, 0xc3,
-0xce, 0x7e, 0x41, 0xf5, 0x7f, 0xb2, 0x7c, 0x8f,
-0x7e, 0x69, 0x1f, 0x0f, 0x4f, 0xe0, 0xdf, 0xd8,
-0x30, 0x8e, 0xff, 0x6c, 0xcf, 0xf7, 0x3c, 0xa5,
-0x65, 0x4d, 0xc8, 0xff, 0x71, 0xea, 0x5d, 0x3b,
-0xf8, 0x27, 0x85, 0xab, 0xe5, 0x5c, 0x5b, 0x43,
-0xdf, 0x15, 0xfc, 0x21, 0xf6, 0xfd, 0x53, 0x36,
-0xfe, 0x79, 0x49, 0xfe, 0x0d, 0x11, 0xa1, 0xcd,
-0xc0, 0x04, 0xfe, 0x90, 0x49, 0xdb, 0x1d, 0xfe,
-0xf3, 0x56, 0x1b, 0xff, 0x50, 0x91, 0xf3, 0x7d,
-0x30, 0x23, 0x8f, 0xbf, 0x7a, 0xde, 0xda, 0xbf,
-0xbc, 0xf9, 0xef, 0x51, 0x7b, 0xfc, 0x69, 0xd8,
-0x17, 0x72, 0xf2, 0xe5, 0x45, 0xd8, 0xeb, 0xb4,
-0x34, 0xde, 0xff, 0x53, 0x91, 0x65, 0x23, 0x00,
-0xbe, 0x7d, 0x69, 0x2b, 0x3f, 0x77, 0x02, 0xff,
-0x8f, 0x17, 0xff, 0x64, 0xe3, 0x83, 0xf2, 0xb0,
-0xe8, 0xff, 0x1e, 0xb1, 0xa6, 0x59, 0x9b, 0xc3,
-0x6f, 0x49, 0xb9, 0xf5, 0x0f, 0x2b, 0x2f, 0xd8,
-0xd5, 0x9e, 0xcf, 0x4c, 0xc0, 0x7f, 0xfe, 0x35,
-0x51, 0x83, 0x46, 0xe5, 0xde, 0x49, 0x1e, 0xfc,
-0x13, 0x78, 0x92, 0xa1, 0x5a, 0x28, 0x6c, 0x7a,
-0xd9, 0x9c, 0x33, 0x80, 0xfa, 0x69, 0xb0, 0x84,
-0x31, 0xaa, 0x7f, 0x98, 0xc5, 0x3f, 0x92, 0xd7,
-0xff, 0xb3, 0x13, 0xd1, 0x60, 0x77, 0x9a, 0xd5,
-0xc2, 0x13, 0x7a, 0x38, 0x83, 0xf8, 0xb0, 0x96,
-0x18, 0xdd, 0x2b, 0x55, 0x2f, 0xff, 0x27, 0xc7,
-0xff, 0xf3, 0x00, 0x88, 0xb6, 0x32, 0x1b, 0xa9,
-0xfa, 0x6e, 0x8b, 0x3a, 0x5b, 0xc4, 0x97, 0x6b,
-0xb8, 0x97, 0x98, 0xfa, 0x96, 0x13, 0x7f, 0xb7,
-0xfc, 0x3f, 0x7a, 0x4a, 0xa5, 0x36, 0x6a, 0xbb,
-0x21, 0xbc, 0xa2, 0xbb, 0x57, 0x08, 0xd3, 0xab,
-0x1c, 0x22, 0xb4, 0xec, 0xcd, 0xff, 0x32, 0x2a,
-0x76, 0xc0, 0x8b, 0x5a, 0x5d, 0x2a, 0x90, 0xae,
-0xa2, 0x85, 0x54, 0x67, 0x06, 0xac, 0xfe, 0xb9,
-0x7f, 0x9f, 0xe3, 0x2f, 0x35, 0x9d, 0xf5, 0x40,
-0xfd, 0x2f, 0x2e, 0x76, 0x1f, 0xe2, 0xb3, 0xac,
-0xb2, 0xcf, 0x0d, 0x56, 0xe2, 0xe1, 0x65, 0x79,
-0x81, 0x61, 0xe3, 0x9f, 0xc3, 0x84, 0x7f, 0x72,
-0xea, 0x3f, 0xbf, 0x2f, 0x09, 0x6f, 0x0f, 0xfe,
-0x10, 0x3c, 0xd6, 0x12, 0xd0, 0xe8, 0xfe, 0x3c,
-0x26, 0x88, 0xd0, 0xfc, 0x3c, 0x88, 0x15, 0xe8,
-0xc9, 0xff, 0x52, 0x70, 0x3d, 0xa8, 0xe1, 0xb4,
-0x78, 0xfe, 0x27, 0x34, 0xd1, 0xc8, 0x52, 0x30,
-0xe4, 0x97, 0x87, 0xd2, 0xa4, 0x1f, 0x58, 0x30,
-0x54, 0x92, 0x97, 0xff, 0x45, 0xdb, 0x10, 0xcd,
-0x17, 0xb5, 0xd1, 0xa4, 0x73, 0x9f, 0x15, 0x7f,
-0xd7, 0x47, 0x42, 0xb1, 0xc2, 0x67, 0x49, 0x3f,
-0x99, 0x1c, 0xff, 0xcf, 0x49, 0x69, 0x2a, 0x3c,
-0xc6, 0xb7, 0xee, 0x52, 0xd7, 0x94, 0x11, 0x30,
-0xa8, 0x4a, 0xf9, 0x56, 0x25, 0xc8, 0x23, 0x24,
-0xd9, 0x44, 0xe8, 0xeb, 0x28, 0x31, 0x6a, 0xc0,
-0x19, 0x6f, 0xd5, 0x7f, 0x8e, 0xd1, 0xf3, 0x53,
-0xbe, 0x64, 0xac, 0xab, 0x84, 0xee, 0xff, 0x04,
-0x5e, 0x51, 0x11, 0xff, 0xcc, 0x7d, 0x5f, 0xb2,
-0xf8, 0x3f, 0x9e, 0xfc, 0x77, 0xf1, 0x3e, 0x76,
-0x65, 0xdd, 0xce, 0x87, 0x78, 0xf1, 0xd6, 0xec,
-0xb1, 0xcb, 0x7d, 0xbf, 0x76, 0x7a, 0xcf, 0x53,
-0x05, 0xa7, 0x03, 0x67, 0x75, 0x04, 0x6f, 0x34,
-0xdf, 0xf3, 0xbc, 0xae, 0xcf, 0x01, 0x42, 0x5e,
-0xa2, 0xf8, 0xe1, 0x9c, 0xfc, 0xaf, 0x9d, 0x5a,
-0x15, 0xa8, 0xa3, 0x6c, 0xb2, 0x7a, 0x03, 0x74,
-0x58, 0x66, 0xe4, 0x1e, 0x36, 0xd3, 0xbc, 0xc5,
-0xe3, 0x48, 0x77, 0xf9, 0xc3, 0xc2, 0xff, 0xd3,
-0xad, 0xa7, 0xa8, 0xcc, 0xa3, 0xe6, 0xa4, 0xbd,
-0x13, 0xf1, 0x89, 0x5f, 0x21, 0xfe, 0x85, 0x6a,
-0xe4, 0xe1, 0x83, 0xd9, 0x32, 0x92, 0xba, 0x30,
-0xec, 0x6e, 0xe1, 0x71, 0x82, 0x9a, 0xfe, 0xfc,
-0xfa, 0xcf, 0xe7, 0x60, 0x4e, 0x72, 0x66, 0x4a,
-0xa6, 0xb2, 0x87, 0xb3, 0x79, 0x30, 0xd3, 0x39,
-0x02, 0xc7, 0xa0, 0x91, 0x07, 0x52, 0x92, 0x8b,
-0x7f, 0x1c, 0xbe, 0x87, 0xf0, 0xff, 0x18, 0x87,
-0xa8, 0xe9, 0x95, 0xd8, 0x7d, 0x62, 0xc1, 0x6e,
-0x04, 0x42, 0x63, 0x50, 0xaf, 0x8b, 0x0e, 0x05,
-0x36, 0xfe, 0x71, 0xeb, 0xbd, 0x53, 0xff, 0x0b,
-0xa8, 0x6b, 0x8f, 0x5a, 0xdd, 0xde, 0x1b, 0xda,
-0x4b, 0xec, 0x34, 0xe7, 0x2c, 0x10, 0xa2, 0xc2,
-0x77, 0xd5, 0xf9, 0xf5, 0x9f, 0x71, 0xd9, 0x88,
-0x36, 0xa6, 0xbc, 0xe1, 0x6e, 0xc2, 0x33, 0xda,
-0x7e, 0xa9, 0x76, 0x99, 0x0d, 0x6c, 0x56, 0xe6,
-0xe6, 0x7f, 0x29, 0x35, 0xb0, 0x53, 0xdd, 0x66,
-0xaa, 0xa2, 0x4d, 0xb9, 0xe6, 0x6c, 0xdc, 0x44,
-0x5c, 0x61, 0xd4, 0xaf, 0xa1, 0xb6, 0x29, 0xd7,
-0xff, 0x03, 0x8a, 0x68, 0x72, 0x3a, 0x5f, 0x74,
-0x7b, 0xe7, 0xd1, 0x56, 0xab, 0x0d, 0x04, 0x0a,
-0x5e, 0x22, 0xb4, 0x27, 0xfe, 0x45, 0xfd, 0x2f,
-0xda, 0x44, 0xff, 0xd3, 0xb8, 0x36, 0x7a, 0x7b,
-0x03, 0xf5, 0x3f, 0xc5, 0x89, 0x2f, 0x6b, 0x80,
-0xa8, 0xc7, 0xdf, 0xf5, 0x8e, 0x93, 0x7f, 0xd1,
-0x73, 0x35, 0xd5, 0x3f, 0x24, 0x6f, 0x4f, 0x33,
-0xcd, 0xee, 0xa6, 0x96, 0xfb, 0x7e, 0x22, 0xa6,
-0xb9, 0x30, 0x87, 0x08, 0xfd, 0x8e, 0x13, 0xcf,
-0x22, 0xfe, 0xcf, 0x45, 0x7d, 0x77, 0x4b, 0x80,
-0xc6, 0x5f, 0x34, 0x1a, 0x8d, 0x80, 0x05, 0x84,
-0xe6, 0x34, 0x05, 0xc8, 0x5f, 0x74, 0x54, 0x5a,
-0x40, 0x0c, 0xe1, 0x63, 0x79, 0xfc, 0x9f, 0xb0,
-0xa2, 0x26, 0x12, 0x56, 0xb4, 0x4b, 0x4d, 0x10,
-0xec, 0xa9, 0x99, 0xa1, 0x01, 0x0f, 0x67, 0x44,
-0x21, 0x44, 0x3c, 0x81, 0x1e, 0xc9, 0xad, 0xff,
-0xb3, 0x4a, 0xa7, 0x36, 0x1f, 0x02, 0x08, 0xb5,
-0xa9, 0x15, 0x09, 0xbc, 0x62, 0x25, 0xc2, 0x1f,
-0x17, 0x11, 0xb1, 0xa2, 0x1c, 0xfe, 0x73, 0xe5,
-0x76, 0x15, 0x4f, 0xeb, 0x83, 0x6a, 0xb2, 0xc9,
-0x8a, 0x76, 0x75, 0x0b, 0x20, 0x5a, 0x30, 0x63,
-0x91, 0xd0, 0x7f, 0xb6, 0x10, 0xe2, 0x11, 0xe7,
-0xf7, 0xda, 0x46, 0xf8, 0x87, 0x8b, 0xb2, 0x45,
-0x04, 0x74, 0xeb, 0xe3, 0xd9, 0x9f, 0xb5, 0x6e,
-0x19, 0xfe, 0xe2, 0xfd, 0xec, 0x28, 0x08, 0x86,
-0xb3, 0x7b, 0xfe, 0x5d, 0x45, 0xf8, 0x47, 0x6f,
-0x68, 0xfd, 0x91, 0x35, 0x6c, 0x41, 0xeb, 0x2c,
-0x4b, 0xa8, 0x37, 0xec, 0x7c, 0x7f, 0xb3, 0x04,
-0xf1, 0x4f, 0x0e, 0xff, 0x67, 0x04, 0xee, 0x56,
-0xbd, 0xb4, 0x73, 0x1d, 0xc6, 0x54, 0x2a, 0x33,
-0x7e, 0x25, 0xfc, 0x73, 0x48, 0xad, 0x4e, 0xa9,
-0x56, 0xd9, 0xe7, 0x59, 0x09, 0x7f, 0xaf, 0xbc,
-0x0a, 0xcf, 0xfb, 0xb3, 0xd2, 0xd7, 0xa6, 0xd8,
-0xd8, 0xe4, 0x03, 0xd0, 0xd0, 0x8d, 0xeb, 0x39,
-0xe1, 0x3c, 0x0f, 0xf9, 0x7f, 0x76, 0xc6, 0xf5,
-0x64, 0x77, 0xf6, 0xed, 0x78, 0xcf, 0xee, 0xff,
-0xfe, 0x15, 0xdc, 0xa6, 0x4d, 0x12, 0x7a, 0x68,
-0x3f, 0xd2, 0xed, 0xfd, 0x45, 0xf4, 0xbf, 0x00,
-0xfd, 0xb0, 0x7a, 0xf7, 0x0a, 0xf2, 0x87, 0x90,
-0xff, 0x36, 0x31, 0x59, 0xf9, 0x77, 0x51, 0xf6,
-0x67, 0xc5, 0x90, 0xfd, 0xfe, 0x76, 0xbb, 0xf5,
-0x7f, 0xd4, 0xa9, 0xca, 0xe9, 0xae, 0x2a, 0x3d,
-0xf2, 0xf5, 0xe6, 0x57, 0xe1, 0x83, 0x8e, 0x85,
-0xf1, 0xfb, 0x07, 0x19, 0x31, 0xa2, 0x67, 0xea,
-0xfe, 0x35, 0xe5, 0xa2, 0xfe, 0xe1, 0x70, 0x70,
-0x4d, 0xb5, 0x37, 0xff, 0x0b, 0xed, 0x8f, 0x7c,
-0xc8, 0x98, 0x65, 0x5b, 0x8f, 0x49, 0x83, 0xf2,
-0x69, 0x65, 0x4c, 0x71, 0xec, 0xcf, 0x02, 0xf2,
-0x6f, 0xe4, 0xe4, 0x7f, 0x51, 0xfc, 0xcb, 0x39,
-0xb6, 0x5b, 0xfd, 0xbf, 0x2e, 0x27, 0x17, 0xea,
-0xb8, 0x7f, 0xbd, 0x44, 0xfe, 0x9f, 0x54, 0x0e,
-0xff, 0xa7, 0x57, 0xda, 0xa2, 0x3c, 0xa9, 0x6c,
-0x3d, 0x4e, 0xdd, 0x2e, 0xe8, 0xf9, 0xbb, 0xfc,
-0xb7, 0x93, 0x20, 0xdd, 0x08, 0x54, 0x88, 0xc3,
-0x10, 0x85, 0x10, 0xdb, 0xc3, 0x6f, 0x39, 0xfa,
-0x4c, 0xc2, 0x16, 0x6d, 0xaf, 0x56, 0x65, 0x6e,
-0x20, 0x33, 0x45, 0xdd, 0x79, 0x6c, 0xd8, 0x03,
-0xea, 0x5d, 0xa2, 0x70, 0x07, 0x4d, 0x3c, 0x27,
-0xff, 0x8b, 0xda, 0xbe, 0x87, 0x7f, 0x62, 0xef,
-0xe6, 0xe0, 0xa7, 0x65, 0xb6, 0x13, 0x77, 0x05,
-0x35, 0x06, 0x64, 0x88, 0x22, 0xe0, 0xf3, 0xfa,
-0x7f, 0xf6, 0x55, 0x52, 0x98, 0xaf, 0xee, 0x85,
-0x49, 0xa3, 0x38, 0xbb, 0xff, 0x4d, 0xd6, 0x72,
-0xb3, 0x35, 0xf1, 0x15, 0x81, 0xb4, 0x9e, 0x61,
-0xcf, 0x48, 0x62, 0xe2, 0x6f, 0x79, 0xec, 0x21,
-0x15, 0x3d, 0x3e, 0xa4, 0x65, 0xe3, 0x11, 0x0d,
-0x83, 0x4b, 0x37, 0x09, 0x47, 0xd9, 0x02, 0x10,
-0x1e, 0x12, 0x14, 0x92, 0x25, 0x69, 0x4f, 0x7e,
-0xd3, 0x03, 0x49, 0xaa, 0x07, 0x38, 0xe7, 0x6f,
-0x02, 0xd9, 0xea, 0x37, 0x86, 0x48, 0xfc, 0xb9,
-0x94, 0x6a, 0xd4, 0x70, 0x9b, 0xdb, 0x23, 0x4a,
-0xbd, 0xa1, 0xd0, 0xe7, 0xe0, 0x1f, 0x53, 0xe0,
-0x9f, 0x70, 0xd2, 0x82, 0x31, 0x4a, 0xed, 0x89,
-0x5b, 0x93, 0x75, 0xa7, 0xd5, 0x03, 0x0a, 0x1e,
-0x2b, 0xe8, 0xca, 0xdb, 0x50, 0x1b, 0x98, 0x20,
-0xff, 0x6b, 0xdb, 0xb8, 0x34, 0x9f, 0x5a, 0xd8,
-0x40, 0x6e, 0x9f, 0x27, 0x58, 0xad, 0x74, 0x6d,
-0x1e, 0xfe, 0x51, 0xa8, 0xfa, 0x4d, 0x84, 0xea,
-0x93, 0x64, 0x0b, 0x73, 0x51, 0xd9, 0x9f, 0xd5,
-0x40, 0x30, 0x5b, 0x25, 0xff, 0xd8, 0xbf, 0xc4,
-0x56, 0x78, 0xfa, 0x7f, 0x4d, 0x59, 0x6d, 0x6d,
-0xeb, 0x34, 0xdf, 0x73, 0x76, 0xd9, 0xe7, 0xf3,
-0x52, 0x03, 0xdc, 0x4f, 0xf5, 0x91, 0xc8, 0xff,
-0x13, 0xcc, 0xe9, 0xff, 0x45, 0xf8, 0x87, 0xb9,
-0xb0, 0x07, 0x82, 0xb6, 0x9b, 0x8b, 0xfa, 0x7f,
-0x91, 0x20, 0x09, 0xbe, 0xf7, 0x38, 0xff, 0xcf,
-0x80, 0x7c, 0x29, 0x64, 0xa1, 0x9d, 0xf2, 0x4b,
-0x56, 0xfd, 0xe7, 0xb1, 0xe6, 0x4b, 0x9a, 0xa8,
-0x9f, 0xe9, 0x8d, 0x7f, 0x71, 0x3b, 0xfe, 0xd5,
-0x5d, 0x26, 0xaa, 0xfd, 0x64, 0x69, 0x3f, 0x1d,
-0x1e, 0xfe, 0x8f, 0xea, 0xcd, 0x7f, 0xef, 0xb6,
-0xe3, 0x5f, 0x9a, 0x8b, 0x7e, 0x8f, 0x57, 0xb8,
-0x8e, 0x20, 0x10, 0xf5, 0x25, 0xbc, 0xf9, 0xef,
-0x3b, 0x84, 0xff, 0xc4, 0x9f, 0x74, 0xa3, 0x8d,
-0xb6, 0x00, 0xa7, 0xdd, 0xf8, 0x97, 0xbd, 0x1e,
-0x9c, 0xf8, 0x57, 0xb7, 0x17, 0x06, 0xbf, 0xec,
-0xe0, 0x61, 0xa9, 0xc1, 0x5c, 0x92, 0x6e, 0x1e,
-0x74, 0xe6, 0x6b, 0xfb, 0x7f, 0x96, 0x66, 0xd3,
-0xba, 0xfb, 0xfc, 0x59, 0x45, 0x21, 0x2c, 0x5c,
-0x74, 0x01, 0xbe, 0x01, 0xb3, 0xf2, 0xf3, 0xbf,
-0xf0, 0x7d, 0x2c, 0x70, 0xbd, 0xaf, 0xe2, 0xb6,
-0xda, 0xef, 0xce, 0x7f, 0xc7, 0x65, 0x93, 0xcd,
-0xd6, 0x97, 0xac, 0xc7, 0xd6, 0x3c, 0x0b, 0x23,
-0x7a, 0x05, 0xfe, 0xb3, 0x87, 0xfd, 0xe5, 0x6c,
-0xd3, 0x13, 0xe4, 0xbf, 0xeb, 0xd2, 0x54, 0xcb,
-0xed, 0xf3, 0x37, 0x65, 0xe3, 0xdd, 0x20, 0x13,
-0xe7, 0xbf, 0x3b, 0x6c, 0x1f, 0x23, 0xcb, 0xf6,
-0x21, 0xb7, 0x8f, 0x1d, 0x11, 0xab, 0x18, 0x9f,
-0xff, 0x3e, 0x3e, 0xfe, 0xe5, 0x11, 0x0a, 0xc6,
-0xe5, 0xbf, 0x67, 0xdd, 0x3e, 0xaa, 0x1c, 0x1d,
-0x97, 0xb6, 0x69, 0x09, 0x1f, 0xf5, 0xf2, 0xf7,
-0x5a, 0x4b, 0xb7, 0xb0, 0x7b, 0xec, 0x6e, 0xef,
-0xee, 0x31, 0x8a, 0x5d, 0x29, 0xff, 0xdd, 0x84,
-0xef, 0x32, 0x41, 0xf3, 0x5e, 0x42, 0xec, 0xee,
-0xc4, 0x04, 0xf3, 0x7d, 0xdd, 0xbf, 0x26, 0x9c,
-0x9b, 0xff, 0x2e, 0xd8, 0x86, 0xf5, 0x2e, 0xcd,
-0x7e, 0xfc, 0xf9, 0x22, 0xb7, 0xfe, 0xe1, 0x31,
-0x02, 0x39, 0xa7, 0xe5, 0xc8, 0x38, 0xb7, 0xcf,
-0x08, 0x7c, 0x75, 0xe2, 0xfc, 0xf7, 0x06, 0x58,
-0x9a, 0x90, 0xaf, 0xd0, 0xff, 0x62, 0x82, 0xfc,
-0x77, 0xe1, 0xff, 0x99, 0xc0, 0x2d, 0x20, 0x84,
-0x95, 0x57, 0xf6, 0xff, 0x90, 0x20, 0x4f, 0x94,
-0xcf, 0x95, 0x97, 0xff, 0x7e, 0x25, 0xda, 0xcf,
-0xef, 0xe2, 0x3f, 0xc7, 0x26, 0x70, 0x83, 0xfc,
-0x5e, 0xff, 0xcf, 0x15, 0xf3, 0xdf, 0x3d, 0xfd,
-0xdf, 0x1d, 0x7f, 0x8e, 0x25, 0x14, 0x4f, 0x98,
-0xcf, 0xe5, 0xe1, 0xff, 0x9c, 0x61, 0x47, 0xf3,
-0xd8, 0xce, 0x39, 0x82, 0x88, 0x7f, 0x1d, 0xc9,
-0xe9, 0xff, 0xd5, 0x7d, 0x85, 0xb4, 0x77, 0x37,
-0x11, 0xcc, 0xad, 0x7f, 0x48, 0xfc, 0x9f, 0xfc,
-0xea, 0x46, 0x13, 0xcd, 0xd7, 0xcd, 0x7f, 0xdf,
-0x9e, 0xa5, 0xfd, 0xc0, 0x84, 0xfa, 0x94, 0xf2,
-0xfd, 0x3f, 0x15, 0xdb, 0xb3, 0xd5, 0x9c, 0x3a,
-0x27, 0x7c, 0x7e, 0x96, 0xf5, 0xff, 0xd8, 0xf7,
-0x8f, 0x80, 0xdd, 0xff, 0xe2, 0x4a, 0xeb, 0x41,
-0xf0, 0xe1, 0x3d, 0xfd, 0xbf, 0x52, 0x36, 0xa9,
-0x5e, 0x9f, 0x40, 0xff, 0x23, 0xe3, 0xf0, 0x8f,
-0xa2, 0x5a, 0x61, 0xaf, 0xcc, 0xbd, 0x11, 0x37,
-0xfe, 0xe5, 0xf5, 0xff, 0xa4, 0xfc, 0xb9, 0xf9,
-0x5f, 0x96, 0xfd, 0xf1, 0xcd, 0x4f, 0x6c, 0x04,
-0x6f, 0x1b, 0x26, 0x47, 0x30, 0x44, 0xff, 0x2f,
-0xd7, 0xfe, 0x4c, 0xd6, 0xc4, 0x4b, 0x3a, 0xc6,
-0x2c, 0xc7, 0x48, 0x67, 0xbe, 0x3f, 0xa4, 0xc9,
-0xdf, 0x5e, 0x36, 0xe2, 0xde, 0x3f, 0xeb, 0xff,
-0x29, 0x59, 0x23, 0x5b, 0xfd, 0x2f, 0x26, 0xe5,
-0xf8, 0x7f, 0x7e, 0x69, 0x09, 0x6f, 0xe5, 0xe2,
-0x1f, 0xe1, 0xcf, 0x97, 0x57, 0xc3, 0x04, 0xf6,
-0x04, 0xed, 0xf9, 0xd2, 0xf1, 0xf9, 0xef, 0x8d,
-0x99, 0xa5, 0x23, 0xe5, 0x0d, 0xb4, 0x5b, 0xbd,
-0xbe, 0x14, 0xf7, 0x2f, 0xe5, 0x72, 0x97, 0xe5,
-0xff, 0x91, 0x2e, 0x27, 0x45, 0x23, 0x30, 0xd3,
-0x93, 0xff, 0x2e, 0xea, 0x1f, 0x92, 0xff, 0x6a,
-0x5c, 0x20, 0x8f, 0xbd, 0x22, 0x8d, 0xf3, 0xff,
-0x38, 0xf1, 0xaf, 0xc1, 0x89, 0xc6, 0xc3, 0x5e,
-0x49, 0x34, 0x02, 0xcb, 0xad, 0xff, 0x23, 0xb4,
-0x57, 0xd1, 0x74, 0x65, 0xfb, 0x53, 0x36, 0x30,
-0xde, 0xff, 0xb3, 0x85, 0x8e, 0xd5, 0xe3, 0xf3,
-0x97, 0xa5, 0x86, 0x45, 0xc1, 0xb4, 0xe4, 0xcd,
-0x7f, 0xcf, 0x7e, 0xfb, 0xc0, 0x86, 0xf1, 0x6e,
-0x9f, 0xd3, 0xaa, 0x60, 0x44, 0x7b, 0xfd, 0x3f,
-0x92, 0xed, 0xff, 0x19, 0x96, 0xeb, 0x27, 0xb2,
-0xe7, 0x4a, 0x5e, 0xfe, 0xbb, 0xc3, 0x7f, 0x8e,
-0xb0, 0x1d, 0xe3, 0xc2, 0x2e, 0x2e, 0x9f, 0xc7,
-0x83, 0x7f, 0xb2, 0xe3, 0x29, 0xec, 0x75, 0xd3,
-0xf8, 0xf1, 0x4a, 0xd6, 0xff, 0x63, 0xaf, 0x07,
-0xe2, 0xff, 0x64, 0xfd, 0x3f, 0x1b, 0xc7, 0xeb,
-0x47, 0x1b, 0xe7, 0xff, 0x21, 0xfe, 0x4f, 0xd6,
-0xff, 0x13, 0x55, 0x27, 0xde, 0x5f, 0x08, 0xff,
-0xb8, 0xf5, 0x9f, 0xed, 0xf8, 0x97, 0x31, 0xd1,
-0xfe, 0xa5, 0x5a, 0x1b, 0xbd, 0x3c, 0xe2, 0xd8,
-0x1f, 0x78, 0xba, 0x40, 0xbe, 0xcb, 0x78, 0xa5,
-0xed, 0x06, 0x98, 0xf2, 0x34, 0x09, 0xda, 0x0d,
-0x15, 0xc5, 0x4f, 0x57, 0xde, 0x25, 0x7d, 0x16,
-0x3e, 0x51, 0x51, 0xd9, 0x27, 0xdd, 0xb5, 0xe8,
-0x15, 0xed, 0x23, 0x4a, 0xb1, 0x39, 0xdb, 0x79,
-0x9e, 0xa7, 0x3f, 0xa1, 0xcc, 0x5e, 0x14, 0x30,
-0x9a, 0xb5, 0x7f, 0xed, 0x2f, 0xb8, 0xab, 0xe3,
-0x2f, 0x8c, 0x26, 0xad, 0xb2, 0xbf, 0x70, 0x36,
-0x04, 0x8c, 0xcf, 0x84, 0xa0, 0x1f, 0x66, 0x4b,
-0x77, 0x18, 0x9f, 0xd1, 0x2a, 0x78, 0xa9, 0xfd,
-0x3c, 0xd0, 0xc5, 0xa4, 0xbb, 0xf8, 0x67, 0xe3,
-0x1f, 0x51, 0x15, 0x4e, 0x6d, 0xe4, 0xf4, 0xf2,
-0x90, 0xb2, 0x0e, 0xaf, 0x2c, 0xd7, 0xcb, 0xd4,
-0x9b, 0x0f, 0xa3, 0xd0, 0x8a, 0x82, 0xe2, 0xa4,
-0x27, 0xd2, 0x06, 0xd0, 0x11, 0xd7, 0x97, 0xab,
-0x57, 0x41, 0x41, 0x02, 0x0f, 0x7d, 0xcb, 0x59,
-0x21, 0x14, 0x10, 0xb9, 0xa5, 0x15, 0x3e, 0x1d,
-0x5b, 0xcb, 0xa7, 0xe1, 0x15, 0xf8, 0x34, 0x5d,
-0x71, 0x9f, 0x67, 0x79, 0x41, 0x5d, 0xc7, 0x5f,
-0xf0, 0x3f, 0x89, 0x15, 0x0c, 0x15, 0xd4, 0x49,
-0x28, 0xac, 0xaa, 0x18, 0x92, 0xc2, 0xa5, 0x9f,
-0xed, 0xfa, 0x48, 0x5c, 0x19, 0x90, 0xee, 0x86,
-0xc9, 0xfc, 0x13, 0x7a, 0xa5, 0x19, 0x73, 0x9e,
-0xe7, 0x69, 0xea, 0x05, 0x16, 0xd2, 0x19, 0x48,
-0x5c, 0x47, 0x41, 0x61, 0x12, 0xf0, 0x16, 0xea,
-0x6a, 0x5c, 0x28, 0x69, 0x1c, 0x97, 0x19, 0x0a,
-0xf8, 0x55, 0xa9, 0x7b, 0x7f, 0x43, 0x89, 0x4b,
-0x2a, 0x5f, 0x1c, 0x83, 0x6e, 0x65, 0x05, 0x09,
-0x7a, 0x69, 0x42, 0xa9, 0xea, 0x50, 0x0d, 0x06,
-0x1a, 0xaf, 0x08, 0x73, 0x55, 0x6b, 0xd2, 0x35,
-0xef, 0xf8, 0x5b, 0x0b, 0x96, 0xf5, 0xb5, 0xa5,
-0xfe, 0x34, 0x52, 0xe0, 0x57, 0x50, 0xe0, 0x7f,
-0x3a, 0xbf, 0xb2, 0x49, 0x82, 0x8e, 0xb6, 0x98,
-0x82, 0x07, 0x4e, 0xa9, 0xc9, 0xd4, 0xa0, 0x22,
-0x52, 0x09, 0xb3, 0x9d, 0xe7, 0xe1, 0x93, 0xa5,
-0x8f, 0xc0, 0xcd, 0xe6, 0x47, 0xda, 0x0b, 0x3e,
-0x4b, 0x42, 0xe6, 0x23, 0x6b, 0x50, 0xf8, 0x0c,
-0x2c, 0x1a, 0x2c, 0x6d, 0x57, 0x26, 0x4b, 0x93,
-0xa4, 0x16, 0xb3, 0xb2, 0xbd, 0xc0, 0x88, 0x19,
-0xce, 0x78, 0x9d, 0x6b, 0x50, 0xa8, 0x2a, 0x9a,
-0x44, 0x4d, 0x30, 0x0b, 0x0d, 0x25, 0x29, 0x45,
-0xa0, 0x54, 0xd2, 0xe2, 0x8b, 0xb8, 0xf8, 0x5e,
-0x31, 0x15, 0x90, 0x24, 0x8f, 0x7e, 0x56, 0xb1,
-0x6b, 0x60, 0x9d, 0xaa, 0x53, 0xb1, 0xb8, 0x10,
-0xac, 0x93, 0x50, 0xa8, 0x61, 0x45, 0x52, 0x02,
-0xaa, 0x92, 0x21, 0xbd, 0x50, 0x85, 0x75, 0xe4,
-0x9c, 0x93, 0xdc, 0xdf, 0xeb, 0xe9, 0xb6, 0x82,
-0x95, 0xd2, 0x9f, 0xa9, 0x57, 0x19, 0x05, 0x49,
-0x69, 0x25, 0xfc, 0x99, 0xef, 0xd3, 0x28, 0x4c,
-0xc2, 0x2b, 0xf0, 0x69, 0x63, 0x4a, 0x72, 0x52,
-0x8d, 0xb4, 0x1c, 0xfe, 0xde, 0xa8, 0xe4, 0xb3,
-0x35, 0x67, 0xbc, 0xe1, 0x6f, 0x87, 0x57, 0xe0,
-0x06, 0x2a, 0x03, 0x4c, 0x8d, 0xc1, 0x6f, 0x80,
-0x82, 0x6e, 0xa9, 0x1d, 0x87, 0x5d, 0x05, 0x95,
-0x26, 0x6e, 0x2b, 0x43, 0xfc, 0x2a, 0xfc, 0xca,
-0xb3, 0x7e, 0x9a, 0x94, 0x78, 0x47, 0x28, 0xbc,
-0xd8, 0xa7, 0x35, 0x29, 0xb1, 0x8e, 0x40, 0x78,
-0xb1, 0x9a, 0x3c, 0xac, 0x54, 0xf1, 0xee, 0x3b,
-0x3f, 0x1f, 0x29, 0x4a, 0x40, 0xbc, 0x23, 0xa0,
-0x37, 0xab, 0x9a, 0xe9, 0x3e, 0x0f, 0xa7, 0x18,
-0x98, 0x0a, 0x8c, 0xa0, 0x50, 0x0c, 0x5f, 0x1e,
-0x12, 0x34, 0x11, 0x06, 0x06, 0xa3, 0x1b, 0xcd,
-0xbe, 0x22, 0xc9, 0xf4, 0x95, 0xbb, 0x7e, 0x98,
-0x14, 0xe3, 0x4b, 0xf4, 0x72, 0x55, 0x39, 0xec,
-0x08, 0x05, 0x75, 0x66, 0x6b, 0x1a, 0x85, 0x67,
-0x0a, 0xf0, 0x4a, 0xec, 0x4f, 0x54, 0xc5, 0x74,
-0xf5, 0xf9, 0x74, 0x53, 0x41, 0xbc, 0x63, 0xb9,
-0xfe, 0x69, 0xb5, 0x32, 0x81, 0x42, 0x48, 0x5f,
-0x2c, 0x84, 0xbe, 0xd6, 0xd8, 0x67, 0x54, 0xa5,
-0x53, 0xd2, 0x3b, 0x96, 0xc7, 0x16, 0xab, 0xa5,
-0x9e, 0xf5, 0x2c, 0xd6, 0x8f, 0x78, 0x1e, 0xa2,
-0xf5, 0xa3, 0xa0, 0x42, 0x82, 0xbc, 0x69, 0xa4,
-0x4b, 0xae, 0xe0, 0x15, 0x5d, 0x46, 0xc1, 0x33,
-0xdf, 0x65, 0xca, 0xca, 0x8e, 0xab, 0xf5, 0xc5,
-0xad, 0xa5, 0x9b, 0x6c, 0x21, 0xa1, 0xcc, 0xed,
-0x28, 0xd2, 0x9b, 0x5a, 0x61, 0x93, 0x52, 0x83,
-0x57, 0x9a, 0xe9, 0xfe, 0xee, 0xf8, 0x78, 0xc1,
-0x72, 0xe9, 0xd3, 0xf0, 0xa7, 0xbc, 0xd2, 0x15,
-0xa4, 0x10, 0x2c, 0xc6, 0x45, 0x09, 0xb8, 0x10,
-0xf1, 0x4a, 0x29, 0xaf, 0x34, 0x3c, 0xeb, 0xa7,
-0x10, 0x5f, 0xa2, 0xb6, 0x78, 0x65, 0x4f, 0x41,
-0x56, 0x08, 0x15, 0x2c, 0x96, 0x8a, 0xf8, 0xb2,
-0x78, 0x45, 0x48, 0x29, 0x94, 0x16, 0xe1, 0x15,
-0x25, 0x54, 0xe0, 0xa1, 0x33, 0xf0, 0x32, 0x50,
-0xb8, 0xa1, 0x6b, 0xad, 0x0a, 0x09, 0x8b, 0x74,
-0x68, 0xd5, 0x58, 0xa9, 0x22, 0x49, 0xd0, 0x86,
-0x57, 0xa4, 0x1a, 0xbc, 0xa2, 0xa9, 0xb8, 0x82,
-0x5c, 0xfd, 0x2c, 0x66, 0xa5, 0xfc, 0xbf, 0xe2,
-0xd3, 0x42, 0xc5, 0x96, 0x50, 0xd5, 0xaa, 0xb6,
-0x30, 0x49, 0xea, 0x8f, 0xcf, 0xd6, 0x42, 0x8b,
-0x4b, 0x6f, 0xe7, 0x2f, 0xc4, 0xaf, 0x0f, 0x15,
-0x7b, 0x9e, 0xe7, 0xe9, 0xc5, 0x68, 0x16, 0x3e,
-0xab, 0x7f, 0x46, 0x95, 0x8e, 0x14, 0xe0, 0x8b,
-0x8f, 0x42, 0xe5, 0x91, 0x49, 0x78, 0x25, 0xfe,
-0x27, 0xa1, 0x28, 0x5e, 0xe9, 0x98, 0x1c, 0xff,
-0x87, 0x10, 0x2e, 0x0c, 0xe7, 0x79, 0x6e, 0x6e,
-0x82, 0xbb, 0xf8, 0xcf, 0xf5, 0x1b, 0x42, 0x45,
-0x87, 0xe5, 0xbb, 0xf8, 0x5f, 0xe8, 0x37, 0x2c,
-0x2f, 0x16, 0x7f, 0x18, 0xff, 0x4c, 0x28, 0x70,
-0x04, 0x67, 0xf4, 0x0a, 0x0a, 0xc5, 0x66, 0xa9,
-0xf3, 0x3c, 0x37, 0x8b, 0xfb, 0xc7, 0x3f, 0xb3,
-0xfc, 0x4f, 0x8f, 0x08, 0xa1, 0x2c, 0x54, 0x79,
-0x44, 0xb9, 0xbe, 0x6b, 0x7d, 0xfc, 0xf3, 0x21,
-0x38, 0x02, 0xb3, 0xf1, 0x4a, 0x33, 0xde, 0xdf,
-0xfd, 0xbd, 0x80, 0xe1, 0x92, 0x17, 0x46, 0x26,
-0x61, 0x09, 0x38, 0x6b, 0xa9, 0x1d, 0x05, 0x06,
-0x2d, 0x09, 0xa0, 0x2b, 0x1f, 0x51, 0x5b, 0x3c,
-0xfa, 0x47, 0x3b, 0x70, 0x27, 0x5f, 0x7e, 0xe7,
-0x55, 0xa1, 0x82, 0x75, 0x24, 0xc4, 0xb3, 0x42,
-0x2b, 0xfe, 0x43, 0x15, 0xeb, 0x0a, 0xaa, 0xac,
-0x2b, 0x1c, 0xdc, 0xe7, 0x31, 0xae, 0x6f, 0x47,
-0x6b, 0xf9, 0x19, 0xa8, 0x30, 0xbb, 0x50, 0x60,
-0xcb, 0x50, 0x90, 0x74, 0x58, 0x02, 0x1f, 0x61,
-0x8a, 0x59, 0xaa, 0xe3, 0x57, 0x1f, 0x01, 0xef,
-0x7a, 0xbe, 0xb9, 0x89, 0xc7, 0x79, 0x28, 0x82,
-0xab, 0x25, 0x21, 0x04, 0xe6, 0x43, 0x41, 0xef,
-0x50, 0x75, 0xc5, 0xa7, 0x25, 0x70, 0xfd, 0x88,
-0x97, 0x92, 0x7b, 0xf5, 0xd3, 0x45, 0xdf, 0x36,
-0xa9, 0xa5, 0x09, 0x12, 0x22, 0x4d, 0xbe, 0x52,
-0x7c, 0x6c, 0xbc, 0xc2, 0x54, 0xed, 0x5e, 0xc5,
-0x12, 0x4a, 0xb9, 0xe4, 0xb9, 0x7f, 0x81, 0xd1,
-0xd1, 0x16, 0xbe, 0x43, 0x2d, 0x15, 0xc2, 0xec,
-0xb6, 0x40, 0x65, 0xf3, 0x34, 0xe0, 0x46, 0x55,
-0x61, 0x40, 0x29, 0x2f, 0x45, 0x43, 0xa4, 0xdf,
-0x11, 0xa8, 0x34, 0x24, 0xaf, 0x7e, 0xda, 0xf8,
-0x1d, 0xb1, 0xca, 0x00, 0xbe, 0x2f, 0x96, 0xb0,
-0xb6, 0x19, 0x85, 0x16, 0xbd, 0x54, 0x2d, 0xb8,
-0x25, 0x7b, 0xa5, 0xc0, 0x70, 0xf5, 0x0f, 0xaa,
-0xb1, 0x02, 0x42, 0x5d, 0x78, 0x40, 0x6f, 0x35,
-0x9a, 0x40, 0x53, 0x14, 0x09, 0x0c, 0xc3, 0x90,
-0x70, 0x29, 0xe1, 0x1a, 0x02, 0xbc, 0xd2, 0x81,
-0xab, 0x07, 0x3c, 0xbf, 0xd7, 0xb2, 0x26, 0x85,
-0x77, 0xe8, 0xfa, 0x75, 0xdd, 0x4d, 0x09, 0xe0,
-0xfc, 0x61, 0x98, 0xdf, 0x3d, 0x95, 0x29, 0xeb,
-0xbb, 0xc2, 0x55, 0x7f, 0x0e, 0x65, 0xeb, 0xf0,
-0x8a, 0xae, 0x47, 0x54, 0x70, 0xfa, 0x15, 0xa2,
-0x3e, 0x97, 0xc6, 0xaf, 0x5e, 0xae, 0x5c, 0xd5,
-0x54, 0x99, 0x5c, 0x14, 0x97, 0x7a, 0xd4, 0x4f,
-0x37, 0x7f, 0x8b, 0x37, 0xc7, 0x67, 0x2f, 0x57,
-0xff, 0x59, 0xaa, 0xe4, 0x93, 0xc8, 0xfe, 0xcf,
-0x83, 0x4a, 0xcf, 0xef, 0xb5, 0xd6, 0x68, 0x8e,
-0x6b, 0x43, 0x30, 0x8f, 0x7d, 0x93, 0x2f, 0xc2,
-0x6f, 0xd5, 0xbf, 0x97, 0x8b, 0xf1, 0xf7, 0x9d,
-0x1f, 0x52, 0xe7, 0xe1, 0x36, 0x21, 0xe9, 0x52,
-0x0f, 0x7c, 0x02, 0xed, 0x0f, 0x78, 0x3e, 0x35,
-0xed, 0x45, 0x01, 0x5f, 0xb3, 0xa1, 0x0d, 0xd6,
-0xa0, 0x3d, 0x51, 0x9a, 0x8d, 0xa4, 0x59, 0x13,
-0x57, 0xbb, 0xd5, 0xb0, 0x78, 0x16, 0x29, 0x00,
-0x5f, 0x80, 0x36, 0xd3, 0x33, 0xbc, 0x02, 0x6a,
-0xa0, 0xb8, 0x15, 0x8d, 0xcc, 0xcf, 0xe0, 0x7a,
-0x6a, 0x43, 0xfe, 0x67, 0xfc, 0x05, 0xbc, 0x52,
-0x14, 0xc7, 0x5f, 0x3a, 0x09, 0xd3, 0x78, 0xb1,
-0x65, 0x9a, 0x3c, 0xb7, 0x97, 0x6e, 0x84, 0xdb,
-0x96, 0x95, 0x57, 0x28, 0xfd, 0xd2, 0x6c, 0x7e,
-0x5b, 0x5b, 0xf9, 0x55, 0xca, 0x1b, 0xff, 0x7e,
-0x23, 0xee, 0x5f, 0x65, 0x9b, 0x2a, 0xb6, 0x17,
-0x54, 0x49, 0x4b, 0xda, 0xe4, 0x0a, 0xc5, 0x3b,
-0x3e, 0x5c, 0xb0, 0xaa, 0xe3, 0xcf, 0xe3, 0x9f,
-0xde, 0x58, 0x59, 0x55, 0xb0, 0xaa, 0xef, 0xcf,
-0xf5, 0xab, 0xbe, 0x5b, 0xf9, 0xc8, 0xda, 0x55,
-0xfc, 0x73, 0xb1, 0x4f, 0xdf, 0x2b, 0x6d, 0x93,
-0xf0, 0x4a, 0xec, 0xaa, 0x8d, 0x95, 0x3c, 0xe7,
-0x79, 0xe6, 0xd2, 0x63, 0xc4, 0xe9, 0x5f, 0x87,
-0x22, 0xd4, 0x0d, 0xf4, 0xc0, 0x5c, 0xe9, 0x6a,
-0x60, 0x77, 0x68, 0x83, 0xca, 0xf5, 0x50, 0x04,
-0x4c, 0x07, 0xef, 0x78, 0xb5, 0xa5, 0x4e, 0x0a,
-0x74, 0x35, 0x4b, 0xa5, 0xdd, 0x2d, 0x2b, 0xa4,
-0x90, 0x82, 0x42, 0xd7, 0xca, 0x58, 0x11, 0x6e,
-0x64, 0x92, 0x66, 0xe2, 0x57, 0xa1, 0xae, 0x42,
-0xe9, 0x76, 0xef, 0x78, 0xe9, 0x0d, 0xad, 0xb4,
-0xc5, 0xb8, 0x5d, 0xaa, 0x34, 0xfe, 0xaa, 0xad,
-0xf4, 0x0e, 0xe5, 0x76, 0xa8, 0x34, 0x16, 0x69,
-0xb1, 0x16, 0xa5, 0x52, 0x6a, 0x41, 0x41, 0xab,
-0x40, 0xa1, 0xd2, 0xf0, 0xde, 0xbf, 0xaa, 0x49,
-0x6d, 0xbb, 0xb7, 0x42, 0x2f, 0x68, 0x95, 0xf0,
-0xd7, 0xe7, 0x54, 0xfb, 0xa8, 0x8a, 0xa9, 0x77,
-0x74, 0x56, 0x84, 0xbb, 0xd4, 0xd9, 0xcb, 0x94,
-0x36, 0x5c, 0xd4, 0x6b, 0xbd, 0xe3, 0x7d, 0x12,
-0xeb, 0x36, 0x52, 0x5a, 0x44, 0x41, 0xa1, 0xc3,
-0xd8, 0x46, 0x42, 0x9c, 0x3d, 0x00, 0xbd, 0xda,
-0x75, 0x06, 0x5e, 0xe1, 0xf4, 0x95, 0x77, 0x38,
-0x04, 0xe4, 0x3f, 0x81, 0x17, 0xcc, 0xeb, 0x63,
-0x45, 0x4b, 0x50, 0xb8, 0xc3, 0xac, 0x8a, 0xa9,
-0x81, 0xa6, 0xf2, 0xaa, 0xae, 0x81, 0xca, 0xd9,
-0xa1, 0x25, 0x20, 0x8b, 0xaf, 0x54, 0xef, 0x1f,
-0x14, 0x49, 0x77, 0x4b, 0x9f, 0x4d, 0x7e, 0x46,
-0xff, 0xd6, 0xd1, 0x49, 0x28, 0x6c, 0xfe, 0x74,
-0x4d, 0xc1, 0x80, 0x7c, 0x77, 0xd1, 0x67, 0x13,
-0x9f, 0xd1, 0xa7, 0x0c, 0xd0, 0x95, 0xee, 0x7f,
-0x40, 0x3c, 0xe0, 0x19, 0x5f, 0xad, 0x1a, 0x87,
-0xcb, 0x62, 0x5d, 0x81, 0x45, 0xd5, 0x60, 0x98,
-0x38, 0xd1, 0x80, 0x24, 0x6b, 0x2d, 0x28, 0x28,
-0x28, 0xe0, 0x95, 0x32, 0x14, 0xee, 0xf4, 0x3e,
-0x4f, 0xe3, 0xe5, 0xa5, 0x97, 0x7f, 0x7a, 0xe9,
-0xcc, 0xe5, 0x9f, 0x0b, 0xe1, 0xf2, 0x99, 0xcb,
-0x17, 0xc7, 0x0b, 0xf0, 0x7f, 0xf1, 0x69, 0x78,
-0x6d, 0xe9, 0x5e, 0xbc, 0xff, 0xde, 0x9f, 0x93,
-0x70, 0xe2, 0x35, 0xbc, 0x1b, 0x0a, 0x78, 0xdb,
-0xf4, 0xf9, 0x7f, 0x8a, 0xbe, 0x1c, 0xc4, 0x2b,
-0xe9, 0xdd, 0xab, 0x73, 0x9e, 0xa7, 0x71, 0xe9,
-0xf3, 0x38, 0xfe, 0xf9, 0x9f, 0x0b, 0xa1, 0x91,
-0x1e, 0xa3, 0x91, 0xc6, 0xf7, 0x5f, 0xb8, 0x38,
-0xa7, 0x9e, 0xae, 0xf4, 0x1f, 0x7f, 0xd7, 0x3b,
-0xbe, 0x3a, 0x74, 0xdb, 0x91, 0xb2, 0x86, 0xae,
-0x8d, 0x7f, 0x51, 0xfd, 0xd1, 0xdb, 0x7e, 0xbc,
-0xa9, 0xb1, 0xeb, 0xfe, 0x8b, 0xd5, 0x6b, 0x5a,
-0x8f, 0x94, 0xef, 0xec, 0xda, 0x78, 0x27, 0x7e,
-0xf5, 0xe3, 0x07, 0xf7, 0x76, 0x7d, 0xf3, 0xac,
-0x77, 0xbc, 0x04, 0x77, 0x19, 0x5b, 0xb4, 0x49,
-0x4a, 0xd1, 0xd3, 0x0c, 0x85, 0xb6, 0x49, 0x15,
-0x28, 0xb4, 0x0b, 0x41, 0xa2, 0x2b, 0x93, 0x51,
-0x58, 0xef, 0xd5, 0xa7, 0x32, 0x09, 0xd1, 0xa3,
-0xf1, 0x0f, 0x5a, 0x01, 0xe2, 0x43, 0x21, 0x54,
-0xda, 0xc2, 0x14, 0x12, 0x08, 0x3a, 0x16, 0x78,
-0xc7, 0x3b, 0xf6, 0x59, 0xe0, 0x43, 0x40, 0x81,
-0x40, 0x0a, 0xda, 0x5b, 0xcb, 0x62, 0x23, 0x74,
-0x54, 0x14, 0x9e, 0xa3, 0xa1, 0x3b, 0xb9, 0x00,
-0x69, 0x88, 0x16, 0x10, 0xc8, 0x15, 0x86, 0x68,
-0x63, 0x24, 0xd8, 0xa6, 0x49, 0x5d, 0x70, 0x67,
-0x11, 0x42, 0x0b, 0xda, 0x2a, 0xdd, 0x8f, 0xaa,
-0xdc, 0x2d, 0x11, 0x08, 0x94, 0x06, 0x94, 0xbb,
-0x3b, 0x48, 0x28, 0x3d, 0x46, 0x57, 0x52, 0x9f,
-0x88, 0x94, 0x3e, 0x23, 0xae, 0x34, 0xcf, 0x94,
-0xcc, 0x9c, 0xfb, 0x5b, 0x20, 0xb0, 0x34, 0x7b,
-0x5b, 0x90, 0x72, 0x05, 0x85, 0xd1, 0x57, 0xee,
-0x47, 0x53, 0xa6, 0x4b, 0x45, 0xd0, 0x64, 0x68,
-0x3d, 0x96, 0x10, 0x47, 0x21, 0x6c, 0x5f, 0xa9,
-0xb1, 0x04, 0xef, 0xf8, 0x6a, 0xb8, 0xa5, 0x0f,
-0x17, 0x55, 0x77, 0xe9, 0xc7, 0x95, 0x5b, 0x3a,
-0x50, 0xe8, 0x2d, 0x9d, 0xa1, 0xdc, 0x4a, 0xc2,
-0x46, 0x69, 0x96, 0xd2, 0xca, 0xcb, 0x74, 0xa5,
-0xc7, 0xb3, 0x1b, 0xa9, 0x66, 0x00, 0xca, 0x11,
-0xd4, 0x49, 0x84, 0x7d, 0xca, 0xa9, 0x3e, 0x14,
-0x09, 0x7f, 0x42, 0x9b, 0x4c, 0x0c, 0x37, 0x99,
-0x6b, 0x8d, 0xab, 0x92, 0x05, 0x31, 0x70, 0xdc,
-0x21, 0x04, 0x8e, 0x94, 0x0a, 0x28, 0x80, 0x45,
-0x06, 0xda, 0x87, 0x0a, 0xfc, 0xf1, 0x9a, 0x0d,
-0xfc, 0x72, 0x11, 0x1a, 0x4c, 0xb4, 0x78, 0x77,
-0x20, 0x28, 0x2b, 0xcd, 0x28, 0x68, 0xfb, 0x63,
-0xee, 0xfd, 0x0d, 0xa6, 0x41, 0x17, 0x20, 0x02,
-0xd6, 0xc2, 0x1a, 0x1a, 0x8e, 0x2a, 0x1b, 0xdc,
-0xa0, 0x80, 0x5f, 0x19, 0x5c, 0x43, 0x94, 0x9c,
-0x33, 0x5e, 0xb1, 0xf0, 0x08, 0xa1, 0x65, 0x49,
-0xb5, 0x05, 0xba, 0x52, 0x4a, 0x42, 0x0f, 0xda,
-0x4f, 0x8d, 0x3b, 0xe3, 0x35, 0x44, 0x12, 0x64,
-0xa1, 0x0a, 0xa1, 0x28, 0xc9, 0xb2, 0x02, 0xcf,
-0x0a, 0x12, 0x67, 0x2b, 0x10, 0x9f, 0x4f, 0x82,
-0x22, 0x37, 0x1e, 0x61, 0xdc, 0xdc, 0x54, 0x88,
-0xb0, 0x50, 0xff, 0xbc, 0x0a, 0x87, 0x15, 0x4b,
-0xd0, 0x50, 0x58, 0x4f, 0x42, 0xe8, 0xb0, 0x32,
-0xb7, 0xef, 0x6a, 0xc4, 0x63, 0xe0, 0xee, 0xa7,
-0x06, 0x3e, 0xae, 0x68, 0x8a, 0xa0, 0x83, 0x69,
-0xa0, 0xd0, 0x25, 0x67, 0x81, 0xa2, 0xb8, 0x82,
-0x82, 0x4a, 0xf6, 0xd0, 0xfd, 0x7d, 0x0d, 0xf0,
-0x13, 0xc9, 0x92, 0xd8, 0x6c, 0x87, 0x2d, 0x41,
-0xb5, 0x05, 0x71, 0x85, 0xf0, 0x67, 0xd4, 0x3b,
-0xfe, 0xe6, 0x66, 0xa5, 0xbd, 0x23, 0x14, 0xfb,
-0x44, 0x00, 0x12, 0x04, 0x5c, 0x63, 0x9f, 0xc0,
-0x8d, 0xd8, 0x12, 0x02, 0xa5, 0x87, 0x95, 0x78,
-0x1f, 0x22, 0xc6, 0x00, 0xb8, 0xf8, 0xd0, 0x40,
-0x23, 0x18, 0x17, 0x68, 0x50, 0x13, 0xf8, 0x90,
-0x76, 0xf3, 0x44, 0x56, 0xc0, 0x15, 0xab, 0xe3,
-0x8f, 0x27, 0xab, 0x9e, 0xf5, 0xd0, 0x26, 0x35,
-0xe1, 0x26, 0x1e, 0xc2, 0xfd, 0x5d, 0x13, 0xb7,
-0x15, 0x1b, 0x7d, 0x56, 0x10, 0x57, 0x04, 0x1e,
-0xe6, 0x9e, 0xe7, 0xc1, 0xdf, 0x53, 0xa2, 0x1f,
-0x56, 0x03, 0xa5, 0x4d, 0x08, 0xa5, 0x46, 0x56,
-0x00, 0x14, 0x80, 0x76, 0x5f, 0x44, 0x74, 0xf6,
-0xf3, 0xb4, 0xa2, 0x9e, 0x17, 0x71, 0x0d, 0x41,
-0xa0, 0x74, 0x25, 0x01, 0x42, 0x2e, 0xda, 0xc0,
-0xf1, 0xac, 0x00, 0xd1, 0x82, 0xde, 0xa6, 0x8a,
-0x93, 0x51, 0x56, 0xd0, 0x85, 0x50, 0x61, 0x5d,
-0xc1, 0x37, 0x0a, 0x3c, 0xcf, 0xb3, 0x58, 0xb6,
-0x40, 0xe0, 0x14, 0x5b, 0x28, 0xce, 0x13, 0xaa,
-0x96, 0x4f, 0x31, 0x5c, 0xfc, 0x23, 0x2d, 0x56,
-0x08, 0x04, 0x7e, 0x22, 0x54, 0x7a, 0xc4, 0x15,
-0xbe, 0xe2, 0x5e, 0xd9, 0x12, 0xff, 0x6b, 0xb5,
-0xd4, 0xa3, 0x7f, 0x69, 0x31, 0xe2, 0xc3, 0x2d,
-0xf1, 0x49, 0xa1, 0xe2, 0xc3, 0x0c, 0x05, 0x1d,
-0x85, 0x23, 0xcc, 0xba, 0x52, 0x70, 0x04, 0x11,
-0xe3, 0x64, 0xba, 0xe2, 0x8e, 0x6f, 0xbb, 0x79,
-0x71, 0x21, 0x81, 0x40, 0x42, 0x83, 0x02, 0x1f,
-0x7e, 0x3e, 0x54, 0x71, 0xa4, 0xe0, 0x7f, 0x09,
-0xe1, 0xea, 0x23, 0x05, 0xb3, 0xd7, 0x06, 0xee,
-0x6c, 0x0e, 0x49, 0x87, 0x3d, 0xeb, 0xa7, 0x0c,
-0x6a, 0xf8, 0x27, 0x75, 0xd6, 0x5a, 0xb0, 0x49,
-0xca, 0x0a, 0x64, 0x76, 0x48, 0x50, 0x36, 0x49,
-0x2b, 0xcd, 0xbf, 0x88, 0x7d, 0xa4, 0x55, 0xf1,
-0xe8, 0x1f, 0xf5, 0x59, 0xc5, 0x43, 0xd4, 0xbd,
-0x66, 0x1d, 0x19, 0x22, 0x14, 0x24, 0x5b, 0xa0,
-0x2b, 0x1d, 0xa1, 0xf8, 0xe2, 0x1e, 0xef, 0xfe,
-0x7b, 0x73, 0x5c, 0x59, 0x23, 0x4d, 0x85, 0x4f,
-0x70, 0xc8, 0xa0, 0x50, 0x82, 0x82, 0x96, 0x51,
-0xe6, 0x8b, 0x2b, 0xa5, 0x74, 0xc5, 0xa7, 0x36,
-0x71, 0xef, 0x7a, 0x96, 0x96, 0xc1, 0x4a, 0x7e,
-0xb5, 0x5e, 0xd8, 0xaa, 0x6d, 0x42, 0xa1, 0x08,
-0x05, 0x5c, 0x3f, 0x35, 0xe2, 0x8a, 0x64, 0x5d,
-0x61, 0xad, 0xde, 0xf5, 0x20, 0xd6, 0x8f, 0x85,
-0x0f, 0x95, 0x30, 0x2d, 0x9b, 0x88, 0x58, 0x3f,
-0xaa, 0xb5, 0x7e, 0xb2, 0x5f, 0x79, 0xd7, 0x4f,
-0x13, 0x18, 0x1d, 0x9a, 0xae, 0x04, 0x4a, 0x9b,
-0x14, 0xa3, 0xaf, 0x82, 0x84, 0x66, 0xa5, 0x8d,
-0xae, 0xa8, 0x12, 0x53, 0x0c, 0x7c, 0x65, 0x14,
-0xb5, 0xd4, 0xf0, 0xe8, 0x87, 0x41, 0x1b, 0xc7,
-0xdd, 0x5d, 0x95, 0x9a, 0xf4, 0x65, 0x78, 0xe0,
-0x2d, 0x88, 0x48, 0xcd, 0x08, 0x90, 0xac, 0x2b,
-0x24, 0xc4, 0x0a, 0x54, 0x17, 0x0d, 0xd3, 0xfb,
-0xa8, 0x10, 0x0c, 0x68, 0x01, 0x49, 0x35, 0x70,
-0xa9, 0x76, 0xb5, 0x80, 0x05, 0x0b, 0x79, 0xa1,
-0x2e, 0xd1, 0x40, 0x44, 0x8c, 0xf4, 0xd4, 0x9e,
-0xe7, 0x61, 0x02, 0x78, 0xa9, 0x21, 0x96, 0x15,
-0x54, 0x1f, 0x83, 0x6e, 0x8b, 0x19, 0xcc, 0x18,
-0xe7, 0x29, 0x5d, 0xed, 0x31, 0x34, 0x57, 0x3f,
-0x86, 0x63, 0x6d, 0x6a, 0x3c, 0x66, 0x27, 0x84,
-0x66, 0xe7, 0x6a, 0x14, 0x8a, 0x7a, 0xd8, 0x17,
-0xc8, 0x3e, 0x6b, 0xee, 0x78, 0x44, 0x6b, 0x0f,
-0x01, 0x33, 0x44, 0x84, 0x9c, 0x84, 0xa2, 0x64,
-0x21, 0x09, 0x85, 0x86, 0x46, 0x57, 0xa6, 0xc0,
-0x24, 0x43, 0xf5, 0xea, 0x27, 0x5e, 0x18, 0xc1,
-0x9f, 0x69, 0x05, 0x87, 0x54, 0xcd, 0x7c, 0x21,
-0x88, 0xdf, 0xcb, 0xba, 0xa2, 0xcc, 0x2f, 0xba,
-0x86, 0x2d, 0x5e, 0x0b, 0xdc, 0x79, 0x9e, 0x36,
-0x44, 0xbd, 0x55, 0x46, 0xa0, 0x8d, 0x29, 0x70,
-0x0f, 0xc4, 0x2c, 0xe1, 0xc7, 0x10, 0x6b, 0x15,
-0x42, 0x27, 0xcc, 0x36, 0x7c, 0xcb, 0xd9, 0x55,
-0x88, 0xe7, 0x9d, 0xe7, 0xc1, 0x17, 0x74, 0x1a,
-0xb5, 0x38, 0x6a, 0x83, 0xcd, 0x84, 0x27, 0xe3,
-0x28, 0xfc, 0x97, 0x72, 0xbd, 0x41, 0x57, 0x34,
-0xbc, 0x72, 0x67, 0x71, 0x5b, 0xf3, 0xa7, 0x21,
-0xe1, 0xd1, 0x4f, 0xb3, 0x72, 0x67, 0x5f, 0x28,
-0xb6, 0x38, 0x20, 0x7d, 0x1b, 0xad, 0xcd, 0xd5,
-0xed, 0x8b, 0x03, 0xa5, 0x9d, 0x10, 0xb7, 0xae,
-0xdc, 0xa3, 0xe0, 0x7a, 0x83, 0x96, 0x12, 0x89,
-0x7b, 0xf5, 0x93, 0x3d, 0x9f, 0x92, 0xfd, 0xb1,
-0x6c, 0xf9, 0x46, 0xf7, 0xc4, 0x4a, 0x8d, 0x0c,
-0xe5, 0x8a, 0x9c, 0xf5, 0xd3, 0x4a, 0xb0, 0x10,
-0xd1, 0x60, 0x69, 0x8f, 0x12, 0x2f, 0xbd, 0x9a,
-0x04, 0x1e, 0x17, 0x57, 0x74, 0xa9, 0x1b, 0xaf,
-0x04, 0x08, 0x31, 0x7a, 0xf5, 0x63, 0x18, 0x6d,
-0xa5, 0x15, 0x4a, 0x81, 0x54, 0x6a, 0xb4, 0xd8,
-0x42, 0x1b, 0xda, 0x9f, 0x40, 0x81, 0x24, 0x19,
-0x2d, 0xb7, 0xab, 0x05, 0x9a, 0x84, 0x57, 0x34,
-0x8f, 0x7d, 0xd6, 0xf1, 0xd7, 0xa7, 0x95, 0xd8,
-0x8a, 0xcb, 0xa0, 0x02, 0x8f, 0x2c, 0x52, 0x2b,
-0x2c, 0xa3, 0xb5, 0x59, 0xd5, 0xa1, 0x42, 0x93,
-0x8a, 0x57, 0xc2, 0x1d, 0x86, 0xc7, 0x02, 0xf9,
-0x0a, 0x08, 0x04, 0xb6, 0x45, 0x08, 0x28, 0x72,
-0xd8, 0x4e, 0x82, 0x26, 0xae, 0x5c, 0xa7, 0xf8,
-0x3a, 0x58, 0x37, 0xa4, 0xb5, 0x8f, 0xe7, 0xd8,
-0x9f, 0x4f, 0xc9, 0x7f, 0x62, 0xbc, 0x30, 0x78,
-0xfd, 0xdc, 0x10, 0x09, 0x5d, 0x2f, 0x5c, 0x3f,
-0x57, 0xfd, 0x14, 0x2b, 0xa7, 0x2b, 0xd7, 0x17,
-0x7c, 0xea, 0x61, 0xbc, 0x32, 0x38, 0xed, 0x86,
-0xab, 0x3d, 0xeb, 0x59, 0x6a, 0x15, 0x78, 0x60,
-0x92, 0x5e, 0x8a, 0x78, 0x40, 0x78, 0x87, 0x48,
-0x10, 0x08, 0xe1, 0xc6, 0x01, 0xb8, 0x5b, 0xda,
-0xc2, 0xff, 0x41, 0xff, 0x96, 0xe9, 0xfe, 0x03,
-0x60, 0xc1, 0xc2, 0x2c, 0x1a, 0xd4, 0x10, 0x28,
-0x4a, 0xe5, 0x9a, 0x71, 0x58, 0x9b, 0xdd, 0x15,
-0xb8, 0x3d, 0x0b, 0x14, 0x97, 0x54, 0x79, 0x86,
-0xc3, 0xef, 0x80, 0x85, 0xff, 0x1f, 0xc1, 0x87,
-0x04, 0x02, 0x7f, 0xfa, 0x2b, 0x04, 0x81, 0x0d,
-0xaf, 0xdd, 0x7a, 0xc3, 0x4f, 0x7f, 0x75, 0x66,
-0xf7, 0x3f, 0x21, 0x3e, 0xbc, 0xf4, 0xd4, 0xaf,
-0xce, 0x9c, 0xff, 0xa7, 0x09, 0xef, 0x2f, 0x40,
-0xe0, 0xfb, 0x08, 0x02, 0x1b, 0x1b, 0x97, 0xa0,
-0x70, 0xe6, 0xb8, 0xc0, 0x87, 0xe5, 0xef, 0x9f,
-0xb9, 0x30, 0xf1, 0xf3, 0xdc, 0x44, 0x20, 0x90,
-0xd0, 0x60, 0xe3, 0x47, 0x5b, 0x7f, 0xfc, 0xe0,
-0xbb, 0x5d, 0x1b, 0xff, 0xb1, 0xfa, 0xeb, 0xb7,
-0x5d, 0xc6, 0x2b, 0xa7, 0xef, 0xbc, 0x69, 0x6a,
-0xeb, 0xab, 0x65, 0x37, 0xe0, 0x57, 0xde, 0xf1,
-0xac, 0x0b, 0xb6, 0x42, 0xe4, 0xcb, 0xbe, 0xc9,
-0x87, 0x85, 0x40, 0x84, 0xda, 0xcd, 0x11, 0x7d,
-0x49, 0xe0, 0x2e, 0xfc, 0xd5, 0xbb, 0xa0, 0x63,
-0x23, 0x5d, 0xf1, 0x8e, 0xb7, 0x37, 0x16, 0xcd,
-0x15, 0x0a, 0x7c, 0x60, 0xf0, 0xdb, 0x0b, 0x2a,
-0x5a, 0x15, 0x56, 0x2a, 0xae, 0xe4, 0x4c, 0xb8,
-0x2b, 0x0b, 0x45, 0x1c, 0x41, 0x5a, 0xa7, 0x57,
-0x2d, 0x89, 0xdc, 0xed, 0x9b, 0xcc, 0xbb, 0xf0,
-0x05, 0x13, 0x5f, 0x79, 0x3f, 0xb4, 0x03, 0xc2,
-0x97, 0x61, 0xf2, 0x00, 0xdd, 0x9f, 0x2c, 0x0e,
-0x9a, 0xec, 0x8e, 0x66, 0xfd, 0x76, 0x84, 0x43,
-0xf8, 0xd5, 0x46, 0x71, 0xc5, 0xfb, 0xe1, 0x1e,
-0x87, 0x0e, 0xa8, 0x73, 0x50, 0xe8, 0x88, 0xe9,
-0x09, 0x98, 0xed, 0x53, 0x79, 0xf6, 0xab, 0x80,
-0xe9, 0x9d, 0x6f, 0xfe, 0x5f, 0xa0, 0x10, 0x13,
-0x0f, 0xad, 0x24, 0xec, 0x2b, 0xae, 0x41, 0x54,
-0xbd, 0xa3, 0x99, 0x25, 0xa8, 0x1d, 0xe1, 0xd4,
-0xa7, 0x7a, 0xeb, 0x66, 0xa8, 0x26, 0x67, 0x31,
-0xe8, 0xc6, 0x97, 0xd2, 0xed, 0xc7, 0xad, 0xe6,
-0xde, 0x38, 0x2b, 0x5c, 0x85, 0xfa, 0x99, 0x1d,
-0x51, 0xbb, 0xb3, 0x57, 0x02, 0x87, 0x3d, 0xe3,
-0x7d, 0xf7, 0xd4, 0x6d, 0x85, 0x5e, 0x63, 0x86,
-0xe6, 0xeb, 0x62, 0x24, 0xf8, 0x34, 0xdf, 0x91,
-0x19, 0x55, 0xca, 0x8e, 0x3b, 0xc3, 0x93, 0xef,
-0xc5, 0x2b, 0xc7, 0xbb, 0xbf, 0x7c, 0x9d, 0xc6,
-0x3c, 0xcf, 0x9f, 0xaf, 0x7f, 0xd0, 0xf4, 0x02,
-0x45, 0xfa, 0x31, 0x61, 0xca, 0x56, 0xeb, 0x4a,
-0x95, 0x47, 0x3f, 0xea, 0x04, 0xfa, 0x87, 0x23,
-0xfa, 0xd6, 0x4f, 0xc2, 0x0a, 0xf5, 0xb3, 0xa4,
-0x7f, 0x88, 0x00, 0xf3, 0xdc, 0x5f, 0xd5, 0x60,
-0x52, 0x4c, 0x3a, 0x8e, 0x0a, 0x98, 0x6c, 0x0a,
-0xe1, 0xcb, 0x90, 0xac, 0x9a, 0xa4, 0xf5, 0x05,
-0x94, 0x2f, 0xb7, 0x4e, 0x36, 0xec, 0xaf, 0xdc,
-0xf8, 0x3e, 0xde, 0xff, 0x9e, 0x98, 0xb8, 0xed,
-0x64, 0xb3, 0x8b, 0xb2, 0x6a, 0xbe, 0xcc, 0xb4,
-0x78, 0xbf, 0x52, 0xd5, 0x1d, 0x68, 0xf2, 0xfc,
-0x8b, 0x09, 0xcf, 0xf3, 0xa3, 0x5d, 0x15, 0x4a,
-0xa1, 0x7f, 0x14, 0xf7, 0x0b, 0x83, 0xf0, 0x95,
-0x66, 0x2c, 0xd2, 0x71, 0x63, 0x70, 0xf4, 0x95,
-0xb7, 0x7e, 0x84, 0x2e, 0x09, 0xdc, 0xea, 0xb4,
-0x5a, 0x10, 0x20, 0xea, 0xa9, 0xa3, 0x2a, 0xf3,
-0x09, 0xe7, 0x22, 0x3d, 0xbf, 0x77, 0xbf, 0xce,
-0xc1, 0xea, 0xf8, 0xac, 0x73, 0xe8, 0xff, 0x22,
-0xfc, 0x28, 0xb0, 0x56, 0xf7, 0xbe, 0xdc, 0xcd,
-0x3f, 0x9d, 0xe0, 0xa3, 0xf1, 0xb8, 0x18, 0x94,
-0xe4, 0xe3, 0xbf, 0xab, 0xaf, 0x9f, 0x68, 0x3c,
-0x2e, 0x34, 0xd0, 0xda, 0x06, 0x9d, 0xf1, 0xc1,
-0xe0, 0xef, 0xb8, 0x3d, 0x7c, 0xac, 0xf3, 0x29,
-0xc3, 0x88, 0xb4, 0x7f, 0xea, 0x5e, 0x33, 0x7b,
-0xe1, 0xea, 0x09, 0xfe, 0x21, 0xcf, 0x67, 0x2a,
-0xbf, 0x77, 0x2e, 0x44, 0xff, 0x73, 0xc6, 0x75,
-0xbf, 0x73, 0x94, 0xfb, 0x61, 0x65, 0x0c, 0xa1,
-0x77, 0x17, 0x1e, 0xa7, 0x26, 0xfa, 0x34, 0x5e,
-0xbe, 0x7c, 0xd9, 0xcc, 0x13, 0xce, 0xe7, 0x5d,
-0xf9, 0x7d, 0xe3, 0x2f, 0x3f, 0x69, 0x09, 0xbf,
-0x7e, 0xed, 0x0f, 0x1c, 0x9f, 0x15, 0x5e, 0xbb,
-0xfc, 0xda, 0xff, 0x64, 0xfc, 0xc2, 0x3f, 0xf8,
-0x79, 0xac, 0xdb, 0x36, 0x3e, 0xf9, 0x87, 0x8e,
-0xff, 0x1d, 0xf3, 0x65, 0x5d, 0xca, 0x03, 0xaa,
-0x30, 0x83, 0x8e, 0x3d, 0x1c, 0x27, 0x78, 0xc7,
-0xab, 0x05, 0x85, 0xf9, 0xf6, 0xd0, 0x31, 0x5c,
-0xf6, 0x1b, 0x9a, 0xf3, 0x0f, 0xac, 0x53, 0xab,
-0x54, 0xd5, 0x28, 0xd4, 0x26, 0x78, 0x31, 0x1d,
-0xc1, 0xfb, 0x21, 0x17, 0x1d, 0xee, 0x7b, 0x9a,
-0x65, 0x18, 0xc5, 0x6d, 0xc7, 0x09, 0xde, 0x0f,
-0xbe, 0x26, 0x2a, 0xbe, 0x2f, 0xdc, 0x1c, 0x67,
-0xe6, 0x5c, 0xc1, 0x3b, 0x5f, 0x3c, 0xdd, 0x00,
-0x61, 0xbb, 0xc3, 0x13, 0x0d, 0xcc, 0x7f, 0x1f,
-0x55, 0x4a, 0xd8, 0xd4, 0xd5, 0x6e, 0x46, 0xee,
-0x36, 0x61, 0x0f, 0x29, 0x65, 0x0c, 0x74, 0x61,
-0x06, 0x55, 0xfb, 0xcf, 0xbc, 0xf6, 0x30, 0x04,
-0xf4, 0xa2, 0xb2, 0x2a, 0xa3, 0x7b, 0xe2, 0x47,
-0x21, 0xc1, 0x3b, 0xde, 0x77, 0xcf, 0xf4, 0x07,
-0x94, 0xde, 0x45, 0x96, 0x3d, 0x3c, 0xee, 0x31,
-0x8c, 0x33, 0x26, 0x1f, 0x13, 0xc2, 0x97, 0x67,
-0x4c, 0xf6, 0xe4, 0xd7, 0x43, 0x68, 0xd2, 0x55,
-0xa5, 0x2a, 0x6f, 0xae, 0xd2, 0x26, 0xd8, 0x98,
-0x6c, 0xc1, 0xfb, 0xfc, 0x70, 0x8f, 0x5e, 0xa5,
-0xa8, 0xcd, 0x88, 0xdb, 0xf2, 0xd5, 0x9e, 0x35,
-0x95, 0x79, 0xf6, 0x50, 0x9b, 0x34, 0x5f, 0x42,
-0x60, 0x81, 0xc7, 0x71, 0xd4, 0x36, 0xd9, 0x43,
-0xc7, 0x30, 0x6a, 0xd6, 0x95, 0x7c, 0x7b, 0xb8,
-0x96, 0x6e, 0xd2, 0x34, 0xe1, 0xcf, 0x6a, 0x0b,
-0xde, 0x5f, 0xa0, 0x8c, 0xcc, 0x97, 0x2e, 0xe1,
-0xa9, 0xfa, 0x0f, 0xd1, 0x3f, 0x7e, 0xa8, 0xdd,
-0x04, 0x42, 0xeb, 0x2b, 0x8f, 0xce, 0xf9, 0x7d,
-0xb5, 0xa4, 0xa4, 0xc0, 0xef, 0xfd, 0x78, 0xec,
-0xa1, 0xc6, 0xf3, 0xf6, 0xef, 0xdf, 0xf9, 0xa9,
-0xaf, 0xa7, 0x2a, 0xe0, 0x00, 0xbf, 0xfb, 0x4f,
-0xbc, 0xf6, 0x90, 0x2d, 0x67, 0xc6, 0x1f, 0x7e,
-0x7f, 0xeb, 0x4f, 0xf8, 0xff, 0x60, 0x70, 0x28,
-0x12, 0x8e, 0xc4, 0x7e, 0xff, 0x30, 0xe7, 0xf3,
-0x3f, 0xb5, 0x0f, 0xff, 0xff, 0x36, 0xfe, 0x7f,
-0xf6, 0x89, 0xe1, 0x52, 0x66, 0xe2, 0xff, 0x9b,
-0x03, 0x00, 0x05, 0xf3, 0x3f, 0xf7, 0x67, 0x46,
-0x63, 0xc3, 0xff, 0xfe, 0xb3, 0xff, 0xbb, 0x9b,
-0x5e, 0xf1, 0x13, 0xf9, 0x31, 0x44, 0x8d, 0xea,
-0x16, 0xa8, 0x30, 0x3f, 0x9c, 0xfb, 0x2b, 0xbe,
-0x55, 0x0f, 0x71, 0x7f, 0xe5, 0x13, 0xad, 0x1f,
-0xce, 0xed, 0xa1, 0xf1, 0x79, 0x7a, 0x7e, 0x03,
-0x1a, 0xcd, 0x0f, 0xe7, 0xfe, 0x8a, 0xbe, 0x79,
-0xab, 0x79, 0xcd, 0x0b, 0xdf, 0xec, 0xfe, 0x70,
-0x6e, 0x0f, 0xb1, 0xe7, 0x63, 0xa7, 0x8d, 0xea,
-0x76, 0x33, 0x66, 0x7e, 0x38, 0xf7, 0x2f, 0xbe,
-0xe1, 0x9f, 0xd6, 0x9a, 0x93, 0x7f, 0xf4, 0xf9,
-0xa5, 0x1f, 0xce, 0xed, 0x51, 0xff, 0xd6, 0xf3,
-0x7f, 0x58, 0xfa, 0x0f, 0x7c, 0x6c, 0x0b, 0x87,
-0xfa, 0x8f, 0xa4, 0x3e, 0x3c, 0xfd, 0x07, 0x71,
-0xfd, 0x2c, 0x85, 0x0f, 0x4b, 0xff, 0x25, 0xd3,
-0xf7, 0x8d, 0xc2, 0xb5, 0x7f, 0xfa, 0xd8, 0x27,
-0x3f, 0x9c, 0xdb, 0xa3, 0xfe, 0xad, 0xe7, 0xff,
-0xd0, 0xd6, 0x7f, 0x6d, 0xe5, 0xf7, 0x0d, 0xff,
-0x97, 0x37, 0xab, 0xbf, 0x7f, 0xe8, 0xff, 0xd1,
-0x27, 0xf6, 0x7c, 0x23, 0xae, 0x9f, 0x6f, 0x7c,
-0x78, 0xeb, 0x5f, 0x93, 0xe6, 0xc1, 0xb4, 0xa2,
-0xeb, 0x3e, 0xbc, 0xf5, 0x6f, 0x3d, 0xff, 0x87,
-0xa5, 0xff, 0xe2, 0xaa, 0x96, 0xc5, 0x50, 0x77,
-0x66, 0xfa, 0x87, 0xb5, 0x7e, 0x62, 0x97, 0x4d,
-0xb2, 0x9f, 0xb1, 0x51, 0xf3, 0xc3, 0xb9, 0xbf,
-0xa2, 0xde, 0xf5, 0x2d, 0x73, 0xde, 0xee, 0xcd,
-0x1f, 0x9a, 0xfd, 0xcf, 0x3e, 0xff, 0xff, 0xed,
-0xae, 0x7b, 0xa5, 0x8f, 0x52, 0xbd, 0xf9, 0x3f,
-0xcc, 0xea, 0x8f, 0x6c, 0xfa, 0xd0, 0xec, 0xcf,
-0xe5, 0x51, 0xb2, 0x9f, 0xa3, 0x1f, 0x96, 0xfe,
-0x83, 0x0d, 0xbf, 0xf8, 0xb5, 0x79, 0xfd, 0x4b,
-0x9f, 0x79, 0xfe, 0xc3, 0xb9, 0x3d, 0xea, 0xdf,
-0x7a, 0xfe, 0x0f, 0x4d, 0xff, 0x0d, 0x1b, 0xbf,
-0xcb, 0xe7, 0x7c, 0x64, 0x47, 0xd1, 0x87, 0x73,
-0x7b, 0xd4, 0xff, 0xf3, 0x64, 0x3f, 0x3f, 0xb4,
-0xf5, 0x5f, 0x38, 0xf5, 0x3f, 0xfe, 0x96, 0x4f,
-0xff, 0xcf, 0x97, 0x5b, 0x7e, 0xff, 0xd0, 0xff,
-0xa3, 0x4f, 0x63, 0xf6, 0xf9, 0x3f, 0x34, 0xfd,
-0x4f, 0xfb, 0xd3, 0xc7, 0x41, 0xaf, 0xfc, 0xd7,
-0x0f, 0xcf, 0xfe, 0x5c, 0x26, 0xfb, 0xf9, 0xe1,
-0xad, 0xff, 0x6b, 0x0a, 0xaa, 0x8c, 0x86, 0x1d,
-0xc5, 0xcf, 0x7c, 0x38, 0xb7, 0x27, 0xc0, 0x2f,
-0x9e, 0xff, 0xc3, 0xd2, 0xff, 0xff, 0xec, 0x23,
-0xce, 0x0e, 0x4c, 0x9c, 0x1d, 0xfe, 0x7f, 0xfd,
-0x28, 0x7f, 0xfc, 0xfc, 0xf1, 0xf3, 0xc7, 0xcf,
-0x1f, 0x3f, 0x7f, 0xfc, 0xfc, 0xf1, 0xf3, 0xc7,
-0xcf, 0x1f, 0x3f, 0x7f, 0xfc, 0xfc, 0xf1, 0xf3,
-0xc7, 0xcf, 0xff, 0x17, 0x3f, 0x31, 0x22, 0x2e,
-0xc3, 0x5d, 0x5d, 0x31, 0x2b, 0x97, 0x42, 0x8e,
-0x81, 0x11, 0xf8, 0x9f, 0xdf, 0x43, 0xfc, 0x6d,
-0x41, 0x0c, 0x52, 0x92, 0x7b, 0xcf, 0xd7, 0xff,
-0x3c, 0x7f, 0xdc, 0xff, 0x0b, 0xeb, 0x72, 0x85,
-0xbc, 0x58, 0x11, 0x01, 0x00,
diff --git a/board/esd/apc405/logo_640_480_24bpp.c b/board/esd/apc405/logo_640_480_24bpp.c
deleted file mode 100644 (file)
index a218032..0000000
+++ /dev/null
@@ -1,1129 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x30, 0x72, 0x03, 0x48,
-0x00, 0x03, 0x56, 0x6f, 0x6c, 0x76, 0x6f, 0x5f,
-0x53, 0x74, 0x61, 0x72, 0x74, 0x6c, 0x6f, 0x67,
-0x6f, 0x2e, 0x62, 0x6d, 0x70, 0x00, 0xed, 0x9d,
-0x5f, 0x70, 0x14, 0x47, 0x7e, 0xc7, 0x25, 0x7b,
-0x95, 0x19, 0xb6, 0xdb, 0x3a, 0x9f, 0x57, 0xc7,
-0x5d, 0x24, 0xee, 0xb0, 0x45, 0x4c, 0x59, 0x96,
-0xcf, 0x04, 0x82, 0xcf, 0x10, 0x0e, 0xdb, 0x01,
-0xc7, 0x94, 0x75, 0x18, 0x9f, 0x1d, 0xc5, 0x87,
-0x1c, 0x22, 0xaa, 0x8c, 0xb8, 0x9c, 0x51, 0x91,
-0x14, 0x92, 0xec, 0x33, 0xc1, 0x50, 0x8a, 0x40,
-0x25, 0x07, 0x43, 0x9d, 0x0e, 0x10, 0xb7, 0x1b,
-0xa1, 0xde, 0x55, 0x6f, 0xf9, 0xd1, 0x55, 0x79,
-0xc8, 0x3d, 0xfa, 0x2d, 0xe5, 0x47, 0x3f, 0xfa,
-0xd1, 0x95, 0x37, 0x3f, 0xfa, 0xd1, 0x8f, 0x4e,
-0xf7, 0xcc, 0x74, 0xf7, 0xaf, 0xe7, 0xdf, 0x4a,
-0xe2, 0x02, 0xa2, 0xf2, 0xfd, 0xc0, 0x6c, 0xcf,
-0xac, 0x66, 0x7a, 0xfa, 0xcf, 0xaf, 0x7f, 0xfd,
-0xeb, 0x5f, 0xf7, 0xcc, 0x1e, 0x7a, 0xed, 0x67,
-0xff, 0x55, 0xe9, 0xd2, 0xfc, 0x4c, 0x05, 0x4f,
-0xa9, 0x70, 0xf6, 0xa1, 0xae, 0xae, 0xff, 0xe9,
-0xee, 0xea, 0xea, 0xee, 0x0a, 0xa3, 0xef, 0xbb,
-0xfe, 0xb3, 0xd2, 0xf5, 0xdf, 0xbd, 0x5d, 0xd1,
-0x66, 0x38, 0xf5, 0xe8, 0x13, 0x5d, 0x93, 0x6a,
-0x9b, 0x56, 0xdb, 0xa9, 0x1f, 0xa9, 0x7d, 0xb5,
-0x4d, 0xab, 0xed, 0xd4, 0xa3, 0x43, 0xea, 0xfb,
-0x21, 0xf5, 0xfd, 0x50, 0xd7, 0x05, 0xb5, 0x9d,
-0xfa, 0x91, 0x3a, 0x56, 0xdb, 0xb4, 0xda, 0x4e,
-0x3d, 0xa1, 0xf6, 0xd5, 0x36, 0xad, 0xc3, 0x1f,
-0xed, 0x56, 0xdf, 0xed, 0x56, 0xdf, 0xed, 0x56,
-0xdf, 0xa9, 0x7d, 0xb5, 0x5d, 0xd0, 0xfb, 0x43,
-0x6a, 0x5f, 0x6d, 0x17, 0x74, 0xf8, 0xc4, 0x7e,
-0x75, 0xbc, 0x5f, 0x1d, 0xef, 0x57, 0xc7, 0xfb,
-0xbb, 0xae, 0xa8, 0x6d, 0x72, 0xb7, 0x3a, 0x56,
-0xdb, 0x85, 0xdd, 0x7a, 0xff, 0x90, 0xda, 0x3f,
-0xa4, 0xf6, 0x0f, 0x75, 0x5d, 0xd1, 0xfb, 0xfb,
-0xd5, 0xbe, 0xde, 0x76, 0x8f, 0xa8, 0xfd, 0x11,
-0xb5, 0x3f, 0xd2, 0x75, 0x45, 0x87, 0x87, 0x54,
-0xa8, 0xb6, 0x6b, 0x87, 0xf4, 0xfe, 0x9b, 0x6a,
-0xff, 0x4d, 0xb5, 0xff, 0x66, 0xd7, 0x85, 0x11,
-0xb5, 0xaf, 0xb6, 0x6b, 0x51, 0xf8, 0xb6, 0x0a,
-0xdf, 0xee, 0xba, 0xa5, 0xb6, 0x2b, 0x6f, 0xaa,
-0x7d, 0xb5, 0xdd, 0x7a, 0x53, 0xef, 0x9f, 0x52,
-0xfb, 0xa7, 0xd4, 0xbe, 0x0a, 0xdf, 0x56, 0xe1,
-0xdb, 0x3a, 0x9c, 0x54, 0xe1, 0x64, 0xd7, 0x1d,
-0xb5, 0x5d, 0x3b, 0xa5, 0xf6, 0xd5, 0x76, 0x47,
-0x87, 0x93, 0x7a, 0x7f, 0x5a, 0xed, 0x4f, 0x77,
-0x7d, 0xa2, 0xb6, 0x5b, 0x93, 0x6a, 0x5f, 0x6d,
-0x9f, 0x44, 0xe1, 0x05, 0x15, 0x5e, 0xe8, 0xba,
-0x33, 0xad, 0xc2, 0x69, 0x1d, 0x5e, 0x51, 0xe1,
-0x95, 0xae, 0x4f, 0xd5, 0x76, 0xe7, 0x82, 0xda,
-0x57, 0xdb, 0xa7, 0x51, 0x78, 0x4d, 0x85, 0xd7,
-0xba, 0x3e, 0xb9, 0xa2, 0x42, 0xb5, 0xfd, 0x51,
-0x87, 0xd7, 0xf4, 0xfe, 0x2d, 0xb5, 0x7f, 0x4b,
-0xed, 0xab, 0x50, 0x6d, 0x9f, 0xde, 0x52, 0xa1,
-0xde, 0xae, 0xdd, 0x51, 0xfb, 0x77, 0xd4, 0xfe,
-0x9d, 0xae, 0xcf, 0x74, 0x78, 0x47, 0x85, 0x77,
-0xf4, 0xf1, 0x27, 0xea, 0xf8, 0x13, 0x75, 0xac,
-0x42, 0xb5, 0x7d, 0xae, 0xc3, 0x4f, 0x54, 0xf8,
-0x89, 0x3e, 0xfe, 0x54, 0x1d, 0x7f, 0xaa, 0x8e,
-0x55, 0xa8, 0xb7, 0x4f, 0xf5, 0xf6, 0xc7, 0xae,
-0x2f, 0xd4, 0xf6, 0xf9, 0x1f, 0x55, 0xf8, 0x47,
-0x1d, 0x7e, 0xa6, 0xc2, 0xcf, 0xba, 0xbe, 0xd4,
-0xe1, 0x67, 0x2a, 0xfc, 0x4c, 0x87, 0x9f, 0xab,
-0xf0, 0xf3, 0xae, 0xaf, 0x74, 0xf8, 0xb9, 0x0a,
-0x3f, 0xd7, 0xe1, 0x17, 0x2a, 0xfc, 0xa2, 0xeb,
-0xcb, 0x2f, 0x54, 0xf8, 0x85, 0x0e, 0xbf, 0x54,
-0xe1, 0x97, 0x5d, 0x5f, 0xab, 0xed, 0xcb, 0x2f,
-0xd5, 0xbe, 0xda, 0xbe, 0x8e, 0xc2, 0xaf, 0x54,
-0xf8, 0x55, 0xd7, 0x37, 0x6a, 0xfb, 0xea, 0x2b,
-0xb5, 0xaf, 0xb6, 0x6f, 0xa2, 0xf0, 0x6b, 0x15,
-0x7e, 0xdd, 0xf5, 0xf5, 0xd7, 0x2a, 0x8c, 0xb6,
-0x6f, 0xba, 0xbe, 0x55, 0xdb, 0x37, 0xdf, 0xa8,
-0xf0, 0x1b, 0x1d, 0x7e, 0xab, 0xc2, 0x6f, 0xbb,
-0xbe, 0x53, 0xdb, 0x37, 0xdf, 0xaa, 0x7d, 0xb5,
-0x7d, 0x17, 0x85, 0xdf, 0xa9, 0xf0, 0xbb, 0xae,
-0x6f, 0xbf, 0x53, 0x21, 0xb6, 0x7b, 0xbe, 0xb5,
-0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xc0, 0xff, 0x1f, 0xa4, 0x98, 0xdc, 0xd6, 0x99,
-0xc3, 0x42, 0xde, 0xfd, 0x9d, 0xd4, 0x26, 0x64,
-0x4b, 0x2c, 0x5d, 0x99, 0x99, 0x78, 0xe3, 0xa5,
-0x9f, 0x26, 0x31, 0xff, 0xc5, 0xfe, 0x57, 0x4f,
-0x4c, 0x9e, 0xbf, 0xba, 0x2c, 0x5a, 0x52, 0xca,
-0x76, 0xa7, 0xbb, 0x34, 0x4f, 0xfc, 0x78, 0x0d,
-0xa9, 0xdd, 0x18, 0x3f, 0x2d, 0xcb, 0x63, 0x6b,
-0xf9, 0x99, 0xce, 0x31, 0x3c, 0x3e, 0xd7, 0xba,
-0xeb, 0x52, 0x52, 0x45, 0x20, 0xa5, 0x90, 0x62,
-0xf9, 0xea, 0x85, 0x7f, 0x39, 0xfe, 0xea, 0xcf,
-0x76, 0xc4, 0x31, 0xef, 0xf8, 0xcb, 0xbf, 0x19,
-0x9d, 0x98, 0x9e, 0xbb, 0xd1, 0x54, 0x65, 0xd4,
-0x6e, 0x76, 0x2e, 0xa7, 0x07, 0x07, 0x59, 0xdf,
-0xce, 0x18, 0x0f, 0xd4, 0xc6, 0x58, 0x18, 0x7d,
-0xaa, 0x7d, 0xfb, 0x4d, 0xb4, 0xaf, 0x83, 0xf3,
-0x77, 0x7d, 0x9f, 0x76, 0x4b, 0x15, 0xeb, 0xe2,
-0xd4, 0xb1, 0xa7, 0x75, 0xe4, 0x9c, 0xeb, 0x1b,
-0xc4, 0x77, 0xe0, 0xa1, 0x0a, 0xfa, 0xfe, 0x7a,
-0x6c, 0xb6, 0xa1, 0xce, 0xe8, 0x14, 0xcd, 0x28,
-0x4f, 0xd2, 0xe7, 0x92, 0x16, 0x7d, 0x72, 0x73,
-0xc0, 0x6d, 0xda, 0xb9, 0x77, 0x46, 0x71, 0x60,
-0xb2, 0xb9, 0xa3, 0xe4, 0xe6, 0x52, 0x4c, 0x70,
-0xff, 0xda, 0x74, 0x02, 0xa2, 0xf2, 0xdb, 0xdb,
-0x31, 0xfd, 0x9d, 0x11, 0x6d, 0xd1, 0x98, 0x1d,
-0x3f, 0x30, 0x10, 0xf0, 0xb0, 0x87, 0x27, 0x09,
-0x54, 0x9f, 0x5b, 0x2a, 0xc1, 0x16, 0xc6, 0x86,
-0x8e, 0x4e, 0xdd, 0x10, 0xb2, 0x73, 0x31, 0x3d,
-0x38, 0x88, 0xf1, 0x9e, 0xc0, 0x2b, 0x47, 0x66,
-0x6b, 0xce, 0x96, 0x33, 0x67, 0xe1, 0xae, 0xbb,
-0xcf, 0xf2, 0xad, 0xa9, 0x23, 0x3b, 0x1f, 0x8e,
-0xe3, 0x56, 0xe2, 0x62, 0x25, 0x46, 0x7f, 0xa1,
-0x04, 0x3f, 0xe4, 0x95, 0xbe, 0x7d, 0x27, 0x3f,
-0xea, 0xd4, 0xb0, 0x47, 0x49, 0xc3, 0x88, 0x93,
-0x66, 0x84, 0x8f, 0xc7, 0x07, 0xbe, 0x58, 0x18,
-0x29, 0x8f, 0x5b, 0x56, 0x12, 0x24, 0x67, 0xba,
-0x0b, 0xe2, 0xa3, 0x32, 0xf9, 0x6b, 0x2f, 0x6d,
-0xb3, 0xb2, 0xca, 0x4d, 0xbb, 0xa1, 0xed, 0x36,
-0x11, 0xfe, 0x99, 0xbb, 0x2e, 0x25, 0x79, 0x65,
-0xec, 0x67, 0xbd, 0xac, 0x27, 0x29, 0xa6, 0x28,
-0x6b, 0x81, 0xad, 0x05, 0xbd, 0x53, 0xd9, 0xf9,
-0xda, 0x6f, 0xeb, 0x77, 0x7d, 0x9b, 0x4d, 0xc3,
-0x8d, 0x3e, 0xa7, 0x3f, 0x42, 0xdb, 0xae, 0x13,
-0xf9, 0xe0, 0x4e, 0x2a, 0xff, 0x59, 0x6e, 0xb0,
-0x6f, 0xd1, 0x9d, 0x45, 0x53, 0xde, 0x3e, 0xff,
-0x72, 0x5f, 0x54, 0xe3, 0x41, 0x1c, 0x9d, 0x91,
-0xf3, 0xf8, 0x0e, 0x5a, 0x1e, 0x2b, 0xd1, 0x9f,
-0x7e, 0xfa, 0x8f, 0x57, 0x5b, 0x2d, 0x59, 0x28,
-0x85, 0xab, 0xa3, 0x3c, 0xa5, 0x7f, 0x9c, 0xe6,
-0xa3, 0xb2, 0x64, 0x02, 0x5f, 0x89, 0xe7, 0x06,
-0x56, 0x68, 0x1f, 0x2f, 0x94, 0x3f, 0xa5, 0xbb,
-0x47, 0x55, 0xe1, 0x70, 0xbf, 0x95, 0xfa, 0x9f,
-0x71, 0x01, 0x0e, 0x2f, 0x17, 0xa7, 0xbd, 0x73,
-0x39, 0x35, 0x5b, 0x57, 0x4f, 0x3e, 0xad, 0x23,
-0xab, 0x98, 0x32, 0x22, 0xad, 0x2d, 0x8c, 0x8b,
-0x29, 0xfa, 0xeb, 0x0f, 0x5e, 0x79, 0xaf, 0xde,
-0xd2, 0xd6, 0xcc, 0x06, 0xef, 0xb5, 0x79, 0x10,
-0xc7, 0x8c, 0x1a, 0x70, 0x8d, 0x98, 0xd6, 0x11,
-0x37, 0x7f, 0x19, 0x6c, 0x28, 0x31, 0xda, 0xd0,
-0x2d, 0xe4, 0x8a, 0xb8, 0x3c, 0x32, 0x10, 0xc7,
-0x69, 0xb5, 0x12, 0x55, 0x55, 0xf6, 0xce, 0xb1,
-0x50, 0x3d, 0x73, 0x62, 0xa9, 0x55, 0x68, 0xe0,
-0x8c, 0x72, 0x7b, 0x1e, 0xf7, 0x35, 0x1f, 0x67,
-0x59, 0x05, 0xc8, 0x89, 0x44, 0x12, 0x7d, 0x95,
-0x34, 0x34, 0xe6, 0x72, 0xae, 0xc3, 0x62, 0xfd,
-0x27, 0x9b, 0x8b, 0x7d, 0x61, 0x46, 0xe5, 0x59,
-0x5d, 0xe8, 0xb4, 0x70, 0xc8, 0xce, 0x6c, 0xd4,
-0x34, 0x53, 0xc6, 0xc9, 0xed, 0x89, 0x5d, 0x44,
-0xb1, 0x52, 0x69, 0xe7, 0x5e, 0x61, 0x45, 0x37,
-0xda, 0xfa, 0xca, 0x85, 0xe6, 0x86, 0x65, 0x7d,
-0xd3, 0x20, 0xaf, 0x7e, 0xbf, 0x27, 0x34, 0x22,
-0x60, 0x1b, 0x1b, 0xad, 0x15, 0xa3, 0x6c, 0x7a,
-0x4e, 0xad, 0xbf, 0x07, 0x96, 0x5a, 0x60, 0xe5,
-0xf2, 0x6f, 0xf7, 0x54, 0x79, 0x25, 0x30, 0xe2,
-0xe2, 0x2b, 0x2e, 0xee, 0x14, 0x61, 0x52, 0xd2,
-0xea, 0xfb, 0xbe, 0xd1, 0xeb, 0x05, 0x25, 0xdb,
-0x1a, 0xf5, 0x5a, 0x87, 0x8d, 0x20, 0x55, 0x3d,
-0x4e, 0xc0, 0x3a, 0x6a, 0xbe, 0xd0, 0x7e, 0x59,
-0x22, 0x7f, 0x2b, 0x23, 0x41, 0x36, 0x86, 0x1c,
-0xf5, 0xc7, 0xc2, 0x9f, 0x6c, 0xa0, 0x6b, 0x8c,
-0x4a, 0x49, 0x2e, 0x8e, 0xf6, 0x25, 0x11, 0xf9,
-0x96, 0x90, 0x67, 0x23, 0xd8, 0xa4, 0x87, 0xac,
-0x87, 0xed, 0x9a, 0x7e, 0xd0, 0x15, 0xa0, 0x14,
-0x87, 0x3b, 0xd5, 0x8a, 0x15, 0x98, 0x1f, 0xdc,
-0x5e, 0x77, 0xf4, 0xcd, 0xb6, 0x6c, 0xd5, 0xcf,
-0x0c, 0x71, 0xd7, 0xaf, 0x5b, 0x05, 0xeb, 0x0b,
-0x5f, 0x46, 0x20, 0x6b, 0x23, 0x0b, 0x2d, 0x91,
-0x37, 0xcc, 0x1b, 0x4d, 0xd4, 0x0d, 0xb7, 0xba,
-0x87, 0x59, 0x15, 0xc4, 0xd3, 0x79, 0xe1, 0x44,
-0x55, 0x19, 0xbb, 0x82, 0x68, 0x2e, 0x77, 0xeb,
-0xe8, 0xbb, 0x6d, 0x85, 0xf2, 0xd7, 0x9a, 0xaf,
-0x5a, 0x93, 0x84, 0x5e, 0x6f, 0x74, 0xb1, 0x35,
-0x65, 0xd5, 0xe7, 0xd8, 0x06, 0xcc, 0x14, 0xd5,
-0xf1, 0xce, 0xbd, 0x4a, 0x93, 0x9c, 0x1a, 0x40,
-0x39, 0x13, 0xc3, 0x53, 0x0f, 0x2c, 0x7c, 0xea,
-0xec, 0xc6, 0xfb, 0xfb, 0xcd, 0x80, 0xbc, 0x54,
-0xa1, 0x55, 0x44, 0x3b, 0x30, 0x5a, 0xa7, 0xf1,
-0xdf, 0x46, 0x55, 0x45, 0xac, 0x37, 0xfe, 0xe6,
-0xcc, 0x40, 0x24, 0x7d, 0xae, 0xa2, 0xd2, 0x5a,
-0x29, 0x39, 0xe0, 0xbe, 0x51, 0x57, 0x09, 0xd9,
-0xb1, 0xdb, 0x39, 0x45, 0xbb, 0x1a, 0xf7, 0xbf,
-0x5e, 0x67, 0x9e, 0x19, 0x96, 0x72, 0x4f, 0x28,
-0xdc, 0x87, 0xaf, 0x5a, 0xec, 0x85, 0xa6, 0x9a,
-0x8b, 0xf4, 0x9f, 0x92, 0x8e, 0xe7, 0xcd, 0x88,
-0x8c, 0x74, 0xf0, 0xe9, 0x51, 0x70, 0xfc, 0x27,
-0x5e, 0xbb, 0xb9, 0xee, 0x5a, 0x10, 0xf2, 0xe6,
-0x21, 0xed, 0x04, 0xf0, 0x06, 0xf1, 0xa9, 0xb6,
-0x64, 0xeb, 0x86, 0x9a, 0xbb, 0xea, 0xf3, 0xc9,
-0xf3, 0x1b, 0x35, 0x8b, 0x36, 0x03, 0x62, 0x6f,
-0x0f, 0xcb, 0x64, 0x95, 0x76, 0xbc, 0xc4, 0xf6,
-0x08, 0x6b, 0xbf, 0x5b, 0x6f, 0x0f, 0x2c, 0xff,
-0x30, 0xa2, 0x7d, 0x2d, 0x71, 0x8c, 0x39, 0x9d,
-0xa0, 0x89, 0x9c, 0xbb, 0x42, 0x4f, 0x64, 0xa7,
-0xaa, 0xae, 0xd9, 0xf1, 0x61, 0x2b, 0x57, 0xff,
-0x69, 0x2a, 0xf1, 0xa7, 0x91, 0x2e, 0x62, 0xda,
-0xa5, 0xfa, 0xc6, 0xf8, 0x44, 0x13, 0xb0, 0xc8,
-0xb0, 0xaf, 0x24, 0x27, 0xd0, 0xe1, 0x89, 0xba,
-0x69, 0x61, 0xff, 0x2b, 0xcf, 0x87, 0xae, 0xea,
-0x13, 0x5d, 0x4e, 0x2d, 0x09, 0x4e, 0x2d, 0x96,
-0xf0, 0xf5, 0xf6, 0xfa, 0x8a, 0x49, 0x69, 0xf9,
-0x7f, 0xdd, 0xae, 0xa4, 0xaf, 0x1a, 0x98, 0xd2,
-0x77, 0x41, 0x60, 0x9b, 0x07, 0x69, 0x2a, 0x9c,
-0x28, 0x76, 0xf6, 0x10, 0x3f, 0xd6, 0x90, 0xed,
-0x07, 0x52, 0x04, 0xa5, 0x94, 0x33, 0xa4, 0x49,
-0x85, 0x34, 0xfb, 0x9e, 0x61, 0x6d, 0xf2, 0xfc,
-0xf2, 0xfa, 0x74, 0xbd, 0x14, 0x73, 0x43, 0x29,
-0x8d, 0xe3, 0x44, 0x25, 0x8c, 0xdd, 0x2e, 0xd5,
-0x20, 0xf2, 0xfe, 0xa5, 0x07, 0xb1, 0xd1, 0x1d,
-0x43, 0x36, 0x5a, 0x97, 0xe9, 0xca, 0x1c, 0xad,
-0x24, 0xc2, 0x54, 0x49, 0x62, 0xf4, 0xaf, 0xf4,
-0x92, 0xcd, 0x9d, 0xd0, 0x91, 0x8f, 0xaa, 0x3e,
-0x21, 0x74, 0xf2, 0x6a, 0x75, 0x72, 0xc1, 0xf8,
-0x57, 0xae, 0x8a, 0x61, 0x6f, 0x38, 0xe0, 0x8f,
-0xce, 0x32, 0x5e, 0xc6, 0xbe, 0x85, 0x75, 0x15,
-0x93, 0x14, 0xcb, 0xa3, 0x29, 0xfb, 0xce, 0x06,
-0xaa, 0x19, 0xc6, 0xc9, 0x0c, 0x74, 0x27, 0x42,
-0xbd, 0x62, 0x34, 0x78, 0xea, 0x92, 0xee, 0x97,
-0x1e, 0x40, 0x09, 0x94, 0x8d, 0x21, 0x93, 0xa9,
-0x8c, 0xf0, 0x51, 0xc1, 0xb1, 0xed, 0x7c, 0x6e,
-0x3d, 0x05, 0xbb, 0x2a, 0x26, 0x7a, 0x8d, 0xe1,
-0xe7, 0x1b, 0xcf, 0x11, 0xd5, 0x03, 0x27, 0x3f,
-0xb8, 0x3e, 0xfb, 0x9b, 0x91, 0x3f, 0xb7, 0x46,
-0x1c, 0xb1, 0xe1, 0x92, 0xaf, 0x82, 0x27, 0x2f,
-0xa7, 0x4c, 0x40, 0x59, 0x5f, 0x5a, 0x5a, 0xba,
-0xb5, 0x64, 0x39, 0x5f, 0x75, 0x62, 0xed, 0x27,
-0x5b, 0x1f, 0x54, 0x2f, 0x91, 0x53, 0xcd, 0x85,
-0x37, 0xe6, 0x26, 0xdf, 0xda, 0x63, 0xa5, 0xdc,
-0xe9, 0xfc, 0xa2, 0xfe, 0x57, 0x8a, 0xb3, 0xcc,
-0x0c, 0x9e, 0x38, 0x1d, 0xe0, 0x64, 0x06, 0xa5,
-0x49, 0x3a, 0x5e, 0x6a, 0xae, 0xa7, 0x98, 0x9a,
-0x1f, 0xef, 0xce, 0x76, 0xe8, 0x46, 0x2b, 0x07,
-0x6c, 0xe0, 0x8d, 0xc9, 0xcb, 0xd7, 0x3f, 0x38,
-0x79, 0xb0, 0x4a, 0x6f, 0x64, 0xd5, 0x6f, 0xa2,
-0x76, 0x47, 0x1f, 0xcc, 0x71, 0xc8, 0xca, 0x99,
-0x20, 0x6b, 0x8a, 0xdb, 0x5a, 0xe4, 0x44, 0xf8,
-0xa2, 0x12, 0xaf, 0xb0, 0xe7, 0xd7, 0x3c, 0xf3,
-0xd3, 0x94, 0xb2, 0x31, 0x42, 0xa6, 0x53, 0xfc,
-0xd1, 0xaa, 0xba, 0xc7, 0x91, 0x79, 0xd1, 0x6a,
-0x8b, 0x55, 0x29, 0x96, 0xc6, 0x9f, 0x08, 0x79,
-0x85, 0x9e, 0x45, 0xbb, 0xea, 0xbe, 0x0f, 0xd2,
-0xb7, 0x14, 0x4a, 0x21, 0x29, 0x93, 0x2c, 0xfe,
-0x68, 0xcf, 0x71, 0x5a, 0x79, 0xb4, 0x73, 0x8c,
-0xbe, 0x59, 0x90, 0xed, 0x55, 0x35, 0x08, 0x97,
-0xf4, 0x23, 0x9a, 0x03, 0x5c, 0x7c, 0x67, 0x27,
-0xd1, 0xed, 0xf1, 0xd5, 0xdb, 0x64, 0xae, 0x0e,
-0x91, 0x8d, 0x27, 0x78, 0xf1, 0x54, 0x0a, 0xf7,
-0xc7, 0x6a, 0x51, 0xf7, 0x3e, 0xbb, 0x76, 0x33,
-0xb9, 0x29, 0x2f, 0x0c, 0xc4, 0xe9, 0x75, 0x02,
-0x9d, 0x08, 0x18, 0x7f, 0x98, 0xf1, 0x1d, 0x67,
-0x1a, 0x2d, 0xd1, 0x6e, 0x35, 0xa5, 0x58, 0x78,
-0x29, 0x5d, 0x88, 0x26, 0xe3, 0x5c, 0x69, 0xf5,
-0x97, 0xea, 0xeb, 0x92, 0xf9, 0xcd, 0x81, 0x6c,
-0x0c, 0x30, 0xaf, 0xf4, 0x78, 0x46, 0xf8, 0x12,
-0xa7, 0x67, 0xf2, 0xf7, 0xb0, 0x7a, 0x7e, 0xad,
-0x5d, 0x8b, 0x5c, 0x5d, 0xdc, 0x43, 0x34, 0x11,
-0xb7, 0xae, 0xb3, 0x58, 0xe0, 0x07, 0x2e, 0x39,
-0x5d, 0xd3, 0x5c, 0x7a, 0xc1, 0x77, 0x7c, 0xd3,
-0xb1, 0x50, 0xd8, 0x3b, 0x51, 0x3a, 0xd9, 0x34,
-0xc7, 0xec, 0xa9, 0x19, 0xf5, 0xc7, 0x83, 0xca,
-0xd5, 0xa2, 0xe6, 0xd2, 0x6c, 0x37, 0x8e, 0x3f,
-0xea, 0x3c, 0x86, 0xd1, 0x67, 0x81, 0xfe, 0x13,
-0xe3, 0xa4, 0x48, 0x9c, 0xa4, 0xd0, 0xb1, 0x54,
-0x2a, 0xa2, 0xb5, 0xcf, 0xc2, 0x49, 0x31, 0x51,
-0x73, 0x96, 0x9e, 0x5f, 0x1b, 0x6a, 0xff, 0x17,
-0x75, 0xd7, 0x24, 0xc4, 0x74, 0x2d, 0x4e, 0x45,
-0x40, 0x6e, 0x68, 0x47, 0xe1, 0xbb, 0x6e, 0x3d,
-0x78, 0x53, 0x72, 0xe2, 0x44, 0xe2, 0xf6, 0xa3,
-0xae, 0x0c, 0x7f, 0x0e, 0x98, 0x9b, 0xe2, 0x48,
-0x32, 0x3b, 0x2c, 0xd6, 0x98, 0xcd, 0x95, 0x7f,
-0x1b, 0x70, 0xd7, 0xb9, 0x22, 0x8d, 0x5b, 0x6e,
-0xf7, 0xee, 0xdf, 0x4b, 0x57, 0xb0, 0x52, 0x8a,
-0xb1, 0x6a, 0x56, 0xf3, 0x25, 0xf7, 0x55, 0xc3,
-0xee, 0x52, 0xf9, 0xab, 0x90, 0x04, 0x7a, 0x52,
-0x12, 0x45, 0x51, 0x28, 0x7f, 0xda, 0xdd, 0x7b,
-0x79, 0xc8, 0xaf, 0xf9, 0x02, 0xfb, 0xef, 0x66,
-0xbf, 0xd2, 0xfc, 0xd6, 0xe1, 0x9d, 0x4a, 0x1f,
-0x0d, 0x6c, 0x69, 0xb2, 0x99, 0xb5, 0xf6, 0x12,
-0xcb, 0xc7, 0x2a, 0xc6, 0xc0, 0x73, 0x7a, 0xcd,
-0xcc, 0xde, 0xb0, 0x77, 0x49, 0xb7, 0xda, 0x94,
-0xcd, 0x85, 0xa1, 0x8a, 0x57, 0x4a, 0xa4, 0xc1,
-0x85, 0x7c, 0x70, 0xe1, 0x41, 0xd3, 0x80, 0x32,
-0xf2, 0xe9, 0x67, 0xfb, 0x2f, 0xa3, 0x3d, 0xa2,
-0xaf, 0x46, 0x76, 0xd0, 0x52, 0x09, 0xd8, 0xe4,
-0x5a, 0x32, 0xa9, 0x3a, 0xc6, 0x0b, 0x35, 0x6e,
-0x86, 0x98, 0x9e, 0xb3, 0x2c, 0x8a, 0x7c, 0x57,
-0x83, 0xcc, 0xe5, 0xa9, 0xee, 0x55, 0xb4, 0x4e,
-0xb2, 0x8c, 0xe6, 0x63, 0x66, 0xea, 0xb3, 0xe7,
-0x68, 0x89, 0x75, 0x33, 0xeb, 0x52, 0x1d, 0xa6,
-0x84, 0x4f, 0xc7, 0x77, 0xb5, 0xe8, 0x4a, 0x25,
-0xfd, 0xab, 0xf2, 0xe6, 0x4e, 0xe3, 0xad, 0x89,
-0x92, 0x96, 0xab, 0xff, 0x84, 0x7c, 0xc3, 0x17,
-0x6c, 0x9e, 0x0e, 0xd4, 0x67, 0xef, 0xaf, 0x88,
-0x9d, 0xa2, 0x06, 0x37, 0x3b, 0xff, 0x63, 0x4d,
-0xb2, 0x20, 0xc5, 0xc1, 0x90, 0xa5, 0xa4, 0xd8,
-0xf4, 0xf4, 0x2c, 0x2e, 0x6b, 0x22, 0x54, 0x42,
-0xfe, 0x7e, 0x90, 0x78, 0x90, 0x38, 0xc9, 0xb3,
-0x9e, 0x1e, 0xe8, 0x5f, 0xc8, 0x37, 0x1f, 0x36,
-0x2b, 0xad, 0xf6, 0x51, 0xaa, 0x95, 0xb8, 0x27,
-0x7c, 0xc9, 0x1f, 0x7a, 0xb6, 0xde, 0x9c, 0x32,
-0x23, 0xb0, 0xf8, 0x8f, 0x3b, 0xea, 0x6b, 0x28,
-0x59, 0x29, 0x17, 0xfb, 0x73, 0x5d, 0xc2, 0xba,
-0xb6, 0x78, 0xb8, 0xfd, 0x7a, 0x5a, 0x3d, 0x48,
-0x31, 0x12, 0xfa, 0x0d, 0x81, 0xb4, 0x6d, 0x55,
-0x11, 0xc5, 0x13, 0x13, 0x46, 0xff, 0x71, 0x92,
-0x76, 0xa2, 0xcd, 0xaf, 0x96, 0x25, 0x53, 0xb4,
-0x6f, 0x3c, 0x6d, 0xee, 0xa2, 0x6b, 0xf1, 0xf1,
-0x1c, 0xb3, 0x4d, 0xca, 0x8f, 0x6b, 0xdd, 0xf9,
-0x63, 0x5f, 0x12, 0x8c, 0x35, 0x86, 0x7c, 0xc3,
-0xf9, 0x9f, 0xd6, 0x62, 0x01, 0xca, 0xe6, 0xb8,
-0xeb, 0xc6, 0x5d, 0x6f, 0x1e, 0x1f, 0x85, 0xec,
-0x55, 0xa1, 0x6c, 0x5c, 0x8f, 0x95, 0xf9, 0xa8,
-0xb3, 0x4e, 0x4f, 0x98, 0x26, 0xee, 0x8b, 0xe1,
-0x0d, 0x4f, 0x90, 0xde, 0x17, 0xe4, 0x7c, 0x6f,
-0x40, 0x73, 0x91, 0x12, 0xbe, 0xb8, 0x0e, 0xc7,
-0xa5, 0x78, 0x96, 0x9b, 0xe3, 0xe8, 0xcc, 0x7f,
-0x5c, 0x4b, 0x07, 0xdc, 0xd8, 0x1b, 0x79, 0x55,
-0x88, 0xd4, 0x11, 0x8b, 0xb2, 0x77, 0x36, 0xe3,
-0xd6, 0x13, 0xb2, 0xbe, 0x27, 0x74, 0x86, 0x5c,
-0xaa, 0x6d, 0x87, 0x7d, 0xf3, 0x85, 0x37, 0x9d,
-0x73, 0x2a, 0x23, 0xe3, 0x1b, 0x66, 0x25, 0xf6,
-0x5f, 0x52, 0x06, 0x97, 0x6b, 0x64, 0x7e, 0x2b,
-0xb7, 0xff, 0x6d, 0x1e, 0xb6, 0x91, 0x73, 0x3b,
-0xad, 0xe7, 0x4f, 0x1f, 0x07, 0x03, 0xb7, 0xda,
-0x33, 0xe4, 0x24, 0x75, 0xf3, 0x81, 0xfa, 0x1a,
-0x24, 0x41, 0x5e, 0xee, 0xf5, 0x92, 0xeb, 0x75,
-0xf1, 0xe1, 0xce, 0xdb, 0xe9, 0xa4, 0x2b, 0x9b,
-0x65, 0x9a, 0xf1, 0x3f, 0x8b, 0xcf, 0xf5, 0x84,
-0x2f, 0xd6, 0xa2, 0x47, 0x1e, 0x24, 0x13, 0x50,
-0x8a, 0x97, 0xfc, 0x9a, 0xe3, 0xa9, 0x7a, 0xd7,
-0xdf, 0x3f, 0x79, 0xbb, 0x2d, 0x3e, 0x24, 0xfa,
-0x50, 0xfd, 0xb1, 0xef, 0x56, 0xe7, 0x75, 0x30,
-0x62, 0xd4, 0xac, 0x72, 0xf1, 0x4d, 0xa6, 0x58,
-0xb8, 0x46, 0xf5, 0x10, 0x36, 0x73, 0xc9, 0xbf,
-0xbb, 0xee, 0xd9, 0x17, 0x23, 0x2d, 0x94, 0x83,
-0xb7, 0xda, 0x05, 0x82, 0x94, 0xd2, 0x7f, 0xb6,
-0x47, 0x4c, 0x64, 0xb9, 0x5c, 0xfe, 0x9a, 0x32,
-0x9a, 0x4e, 0x36, 0x57, 0xe7, 0xf5, 0xbf, 0x62,
-0x8e, 0x39, 0x09, 0x4f, 0x69, 0x3d, 0xeb, 0x29,
-0x3e, 0xad, 0x2c, 0x88, 0xe7, 0x38, 0x4d, 0x72,
-0xcf, 0xaf, 0x3a, 0xc9, 0x82, 0x4a, 0x57, 0x7d,
-0x28, 0x8e, 0x82, 0x2e, 0x6b, 0x30, 0xfd, 0xd1,
-0xc3, 0xec, 0x52, 0x36, 0x06, 0x35, 0x80, 0x3f,
-0x14, 0x92, 0x06, 0x47, 0x8b, 0x4a, 0xd7, 0xda,
-0xc4, 0x6a, 0xce, 0x8d, 0x36, 0x29, 0xf2, 0x12,
-0xeb, 0xce, 0xf1, 0x1e, 0x50, 0x6d, 0x18, 0x56,
-0xcf, 0xb6, 0x54, 0x27, 0x71, 0xd0, 0x0d, 0x46,
-0xf5, 0xb7, 0x6f, 0xe4, 0x48, 0x8f, 0x47, 0x53,
-0xce, 0x54, 0x2b, 0xfe, 0x44, 0x26, 0xd5, 0xab,
-0x03, 0x4b, 0xb9, 0x97, 0x8b, 0x11, 0x57, 0xb0,
-0x21, 0x51, 0x32, 0xb1, 0x6f, 0xe2, 0xa5, 0x4c,
-0x5f, 0x94, 0x10, 0xc9, 0x5f, 0x98, 0x49, 0xba,
-0xf9, 0xec, 0xa4, 0xff, 0x9a, 0x8d, 0x1d, 0x6e,
-0x54, 0x9e, 0xa7, 0xff, 0xc4, 0x5e, 0x2b, 0x54,
-0x39, 0x7d, 0x65, 0x9c, 0xb5, 0xc1, 0x65, 0x75,
-0xde, 0x2c, 0x6d, 0xc7, 0x8c, 0xd7, 0x6e, 0x74,
-0xe8, 0x0b, 0x95, 0x8d, 0xfc, 0x9a, 0x6d, 0x95,
-0x36, 0xd1, 0xb6, 0x3e, 0xc2, 0x91, 0xdc, 0x61,
-0xbf, 0xfc, 0xa8, 0xe6, 0x8d, 0x51, 0x88, 0xe3,
-0x91, 0xf1, 0x6a, 0xdf, 0x5c, 0xfb, 0x81, 0x91,
-0x40, 0xf1, 0x57, 0xa1, 0xad, 0x28, 0x32, 0xb3,
-0x6e, 0x65, 0x45, 0x67, 0x50, 0xaf, 0x39, 0x5d,
-0x95, 0xf3, 0x55, 0xaf, 0x95, 0x15, 0xdb, 0xf4,
-0x86, 0xfa, 0x8e, 0xf4, 0xc4, 0x39, 0x77, 0x02,
-0x52, 0x79, 0x27, 0x5f, 0xfc, 0xda, 0xbf, 0xeb,
-0x23, 0xe7, 0xa6, 0x14, 0x0d, 0x0f, 0x7e, 0x9b,
-0xaf, 0x74, 0xe5, 0x6c, 0x4a, 0x15, 0xa5, 0x5c,
-0x13, 0x1d, 0xd2, 0xaa, 0x9a, 0xd2, 0x49, 0x27,
-0x01, 0x59, 0xfd, 0x27, 0xdb, 0xef, 0x15, 0xa4,
-0xc9, 0x0a, 0x9f, 0x62, 0x4a, 0xdd, 0xa4, 0x25,
-0x0f, 0xd3, 0xbf, 0x2b, 0xeb, 0xad, 0xd3, 0x2c,
-0x5c, 0x6b, 0x96, 0x73, 0xa7, 0xfe, 0xa8, 0xdb,
-0x41, 0x07, 0x03, 0x05, 0xfe, 0x14, 0x79, 0x2c,
-0xe3, 0x53, 0xb0, 0xc3, 0xef, 0x80, 0xed, 0x79,
-0x50, 0x7a, 0x60, 0xd9, 0x3e, 0xc7, 0x69, 0x7b,
-0x4d, 0x09, 0x5f, 0xfc, 0x55, 0xe5, 0x5f, 0xb5,
-0xc3, 0xb6, 0xdd, 0x1e, 0xe1, 0x4e, 0xc1, 0xa8,
-0xed, 0xa5, 0x9c, 0x59, 0x59, 0x1a, 0xb5, 0x98,
-0xd0, 0x9a, 0xd5, 0x17, 0x0a, 0x73, 0x97, 0x90,
-0x0d, 0x34, 0x72, 0xaf, 0x96, 0x6d, 0xf1, 0x46,
-0x4f, 0x95, 0xce, 0xb0, 0x52, 0x6d, 0xc3, 0x82,
-0x5d, 0x05, 0x63, 0x60, 0xad, 0xff, 0xb8, 0x9f,
-0x01, 0x2a, 0x31, 0xa5, 0xe3, 0x0f, 0x9d, 0x37,
-0x71, 0xcd, 0xd5, 0x7e, 0xd6, 0xff, 0x2c, 0xc5,
-0x90, 0x89, 0x96, 0xaa, 0x3e, 0xbf, 0xe3, 0xdb,
-0xb3, 0x12, 0x9d, 0xfa, 0x51, 0xaf, 0x73, 0x23,
-0xab, 0xbf, 0x54, 0x17, 0x3a, 0x88, 0xbe, 0xd8,
-0x13, 0x64, 0x1e, 0x72, 0x60, 0xd6, 0x58, 0x9e,
-0x68, 0xe6, 0x6a, 0xee, 0xa6, 0x5c, 0xac, 0x11,
-0x9f, 0x82, 0xb5, 0x41, 0x79, 0xb2, 0x3a, 0x7a,
-0xe6, 0x01, 0x59, 0x0d, 0x23, 0x1b, 0x4f, 0xd2,
-0xfa, 0xf2, 0x17, 0xe1, 0x99, 0xfa, 0x7f, 0x21,
-0xae, 0x73, 0xb1, 0x58, 0x33, 0x85, 0x1a, 0x17,
-0x70, 0xb9, 0x7b, 0x5f, 0x2e, 0x0d, 0xb8, 0x28,
-0xa9, 0xe5, 0x14, 0x5f, 0x3c, 0x52, 0x30, 0x83,
-0xd2, 0x6c, 0xcf, 0x06, 0xd5, 0x8c, 0x39, 0xe0,
-0x22, 0x99, 0xca, 0xbd, 0xa9, 0x9c, 0x63, 0x44,
-0xde, 0xa8, 0xe6, 0x8b, 0x22, 0xea, 0x34, 0xfe,
-0x50, 0xdd, 0x95, 0xd8, 0x65, 0x6f, 0x93, 0xd1,
-0x7f, 0x52, 0x4c, 0xd2, 0x86, 0xe4, 0x8f, 0x15,
-0x6c, 0xdb, 0xbd, 0xa4, 0x6f, 0xd1, 0x94, 0xe2,
-0x97, 0x64, 0xb4, 0x1f, 0x32, 0x7e, 0xb0, 0x7c,
-0x4e, 0x4c, 0x4e, 0x5a, 0xf3, 0xd8, 0x77, 0xea,
-0xc4, 0xf7, 0xb8, 0x51, 0x74, 0x59, 0xf3, 0xb0,
-0x97, 0x8c, 0x54, 0x71, 0x0d, 0x8b, 0x07, 0x63,
-0x04, 0x2c, 0x27, 0xf4, 0x0a, 0x46, 0x6f, 0x09,
-0x5d, 0x26, 0x43, 0xbd, 0xa6, 0x05, 0x8b, 0x31,
-0xd3, 0x32, 0xe3, 0x82, 0xdf, 0x5b, 0x6a, 0x64,
-0x88, 0x31, 0xe7, 0xad, 0x35, 0x03, 0x69, 0xdb,
-0x67, 0x84, 0xec, 0x82, 0x9e, 0x01, 0xcb, 0xbf,
-0x70, 0x90, 0x34, 0x07, 0x67, 0x91, 0x27, 0x09,
-0xdb, 0xd1, 0xc8, 0xbd, 0xc8, 0xd9, 0x7f, 0x3c,
-0x2d, 0x7c, 0x6b, 0xb0, 0xff, 0x74, 0x49, 0xbc,
-0xd1, 0x63, 0xd4, 0x59, 0xc6, 0xfe, 0x13, 0xf5,
-0xed, 0x3c, 0xd5, 0xb5, 0x73, 0x17, 0x24, 0x19,
-0x7a, 0x21, 0x76, 0xd1, 0xc9, 0xe6, 0x52, 0x8d,
-0x2e, 0xfb, 0x67, 0x95, 0x8b, 0xa5, 0xb7, 0x5e,
-0x1a, 0xe0, 0x79, 0xee, 0x87, 0x24, 0xf6, 0xbd,
-0x45, 0x4d, 0xbc, 0x29, 0x2f, 0x55, 0x79, 0x95,
-0xae, 0xbf, 0x31, 0x5d, 0x44, 0x54, 0x00, 0x3d,
-0x93, 0x7f, 0x82, 0x07, 0xf0, 0xee, 0x01, 0xb7,
-0xfb, 0x8d, 0x34, 0x59, 0x05, 0x43, 0x85, 0x2f,
-0xca, 0xdc, 0x51, 0x53, 0x1d, 0x4a, 0xa3, 0x71,
-0x57, 0x3a, 0xea, 0xa4, 0xf7, 0xcb, 0x5c, 0xed,
-0xb7, 0xcd, 0x2a, 0x5e, 0xab, 0x8e, 0x48, 0xd1,
-0xb2, 0x81, 0xe5, 0x62, 0x89, 0x78, 0x23, 0xb5,
-0x4c, 0x95, 0xa6, 0xaf, 0x87, 0x9f, 0xcb, 0x5d,
-0x7d, 0x38, 0xcb, 0xb2, 0x67, 0x13, 0x4b, 0xa2,
-0xb3, 0xfc, 0xad, 0xfe, 0xda, 0x9e, 0xed, 0xeb,
-0x3f, 0x75, 0xa1, 0x7c, 0x3b, 0xa7, 0x6b, 0x4f,
-0xb9, 0xaa, 0xd8, 0x42, 0x7c, 0xb6, 0xea, 0x2f,
-0xc7, 0xe8, 0x9f, 0x2b, 0xe1, 0xee, 0x62, 0x63,
-0x4c, 0x9f, 0x9c, 0xac, 0x6d, 0x31, 0x31, 0xf9,
-0xeb, 0x2e, 0x26, 0x0a, 0x92, 0xad, 0x5a, 0xbe,
-0x48, 0xad, 0x29, 0xf2, 0x6a, 0xb0, 0x7b, 0xe8,
-0x81, 0xb0, 0x00, 0x57, 0x8f, 0x07, 0x4e, 0x57,
-0xa4, 0x84, 0xcf, 0xc8, 0x60, 0xcd, 0x75, 0x01,
-0x72, 0xa2, 0xe2, 0xe9, 0x97, 0xa1, 0xe5, 0x92,
-0x5a, 0x9d, 0xf6, 0x2c, 0xc9, 0x44, 0x10, 0xed,
-0x88, 0xf1, 0x95, 0xe2, 0x0b, 0x5b, 0x97, 0x9c,
-0x06, 0x70, 0x46, 0x8d, 0x19, 0xdc, 0x05, 0x07,
-0xf3, 0x06, 0x94, 0xd2, 0xcd, 0xff, 0xe6, 0x38,
-0xd1, 0x3b, 0xfa, 0xff, 0xf4, 0xf0, 0xea, 0x43,
-0x9b, 0xca, 0x94, 0xff, 0xb9, 0x29, 0x6f, 0xd6,
-0x3c, 0xe5, 0x92, 0x09, 0xf4, 0x04, 0xe5, 0x51,
-0x7b, 0x03, 0x59, 0x7f, 0xdc, 0x24, 0x3c, 0xf2,
-0x5a, 0x56, 0xa7, 0x0b, 0x75, 0x91, 0x94, 0xcd,
-0x21, 0xaa, 0xea, 0x19, 0x15, 0x3e, 0x9d, 0x85,
-0xeb, 0xc5, 0x29, 0x96, 0x63, 0x46, 0x6f, 0x72,
-0x7f, 0xf8, 0x1b, 0xe5, 0xba, 0x7a, 0xf9, 0x01,
-0x30, 0x00, 0x5b, 0xbf, 0xaf, 0x71, 0x3a, 0x2e,
-0xf0, 0xb2, 0x60, 0x3a, 0x4e, 0xb7, 0x8e, 0x5c,
-0xae, 0x34, 0x86, 0x9c, 0xb2, 0x54, 0x65, 0xfe,
-0xd0, 0x99, 0x02, 0x6f, 0x88, 0x42, 0xbc, 0x1c,
-0x2f, 0xec, 0x63, 0x8c, 0x0a, 0x9f, 0xb9, 0x38,
-0x9c, 0x28, 0xee, 0x1f, 0x64, 0xbd, 0x46, 0x2a,
-0x21, 0x1d, 0xf0, 0xc7, 0x6e, 0xe5, 0xc9, 0x92,
-0x9d, 0xff, 0x65, 0x24, 0x81, 0x64, 0xfc, 0xdb,
-0xb9, 0xff, 0xbd, 0x6a, 0xaf, 0x4c, 0xf5, 0xbf,
-0xb2, 0x79, 0xac, 0x70, 0xc9, 0x5d, 0x12, 0x04,
-0xac, 0x76, 0xc3, 0x5d, 0xb4, 0x32, 0x69, 0xfe,
-0x18, 0x44, 0x02, 0x32, 0x98, 0x3f, 0xd4, 0x6a,
-0x6b, 0xd1, 0x9e, 0x8f, 0xce, 0xf1, 0x54, 0x29,
-0x69, 0x3f, 0x03, 0x25, 0x5a, 0xac, 0x35, 0x93,
-0xb7, 0x5a, 0x32, 0xb9, 0x3c, 0x64, 0x6f, 0x75,
-0xc8, 0xef, 0x26, 0x40, 0x8a, 0x5f, 0xd8, 0x64,
-0xa7, 0xd7, 0x55, 0x1a, 0x67, 0x5d, 0xb0, 0xdd,
-0xb3, 0xb7, 0xa6, 0x9c, 0xbf, 0x4b, 0x17, 0xd0,
-0x8f, 0x8b, 0x66, 0xe1, 0x64, 0xb3, 0x5e, 0xf3,
-0x9c, 0x2e, 0xae, 0x77, 0x88, 0x84, 0xbc, 0x72,
-0xa9, 0x2c, 0x5d, 0xcf, 0xbb, 0xc7, 0x39, 0x3c,
-0x4f, 0x5b, 0xec, 0xb8, 0x39, 0x9b, 0x37, 0xee,
-0xb6, 0xf6, 0x9f, 0x3f, 0x85, 0x6f, 0x3e, 0x3b,
-0xca, 0x9f, 0x1a, 0x50, 0x56, 0x8d, 0x19, 0x9c,
-0xea, 0x7f, 0xe5, 0x47, 0x8f, 0x38, 0xe3, 0x35,
-0x33, 0xeb, 0x9b, 0xa4, 0xcb, 0x7b, 0xda, 0x43,
-0x0c, 0xf9, 0x73, 0x63, 0x13, 0x45, 0xcd, 0x54,
-0x46, 0x7d, 0xb5, 0x3f, 0x61, 0x4d, 0x4c, 0x95,
-0x9e, 0x7d, 0x25, 0x53, 0xb9, 0xf2, 0x7a, 0x85,
-0x79, 0x7d, 0x04, 0xb1, 0xb0, 0xf5, 0xa2, 0xf1,
-0x07, 0xa0, 0x03, 0x9e, 0xaf, 0x9a, 0x32, 0x32,
-0x99, 0xe6, 0xee, 0x28, 0x96, 0x1e, 0x7f, 0xa1,
-0x41, 0x33, 0x72, 0x16, 0xd8, 0x02, 0x0a, 0xab,
-0x63, 0x85, 0x05, 0x3b, 0x45, 0x84, 0x8f, 0xf4,
-0x0e, 0xe6, 0xda, 0x7c, 0xe7, 0x73, 0x7c, 0x13,
-0xf9, 0x0f, 0x44, 0x09, 0xa7, 0xdb, 0x37, 0x67,
-0x07, 0xf2, 0x2e, 0xcd, 0xd1, 0x7f, 0x74, 0x16,
-0x64, 0x0d, 0xfa, 0xef, 0xfa, 0xc3, 0xe6, 0x42,
-0x5f, 0xff, 0x49, 0x71, 0x38, 0x24, 0x71, 0xe6,
-0x69, 0x9c, 0x6a, 0xc5, 0x9b, 0x67, 0x93, 0xcd,
-0x0f, 0x48, 0x47, 0xaa, 0x94, 0x51, 0x7f, 0x66,
-0x0a, 0xcd, 0x9e, 0xb9, 0x93, 0x34, 0x78, 0x4f,
-0x13, 0x44, 0x05, 0x37, 0x5a, 0x96, 0x6a, 0xf1,
-0xc3, 0xa2, 0xf4, 0x44, 0x9f, 0xb3, 0x1d, 0x32,
-0x7c, 0xff, 0xd1, 0x33, 0x1a, 0xb4, 0x9f, 0xe3,
-0xa9, 0x3c, 0x68, 0x81, 0x79, 0x5a, 0x78, 0xee,
-0x03, 0x79, 0xd1, 0x77, 0x7e, 0xf5, 0xdd, 0xcc,
-0xaf, 0x58, 0x21, 0x47, 0x2b, 0xd9, 0x27, 0xe8,
-0xb8, 0xf5, 0xe9, 0x6c, 0x2b, 0xee, 0xb8, 0xf5,
-0x63, 0x16, 0xf6, 0x12, 0xeb, 0x49, 0x23, 0x9a,
-0xa1, 0x96, 0xa7, 0x13, 0x8c, 0xfe, 0xe3, 0x9e,
-0xd8, 0xad, 0x53, 0xff, 0x25, 0x57, 0x10, 0xd5,
-0xa1, 0x9f, 0x98, 0xbf, 0xd4, 0x5b, 0x89, 0xf3,
-0x40, 0x2c, 0x4b, 0x3f, 0x60, 0xfc, 0x37, 0x44,
-0x64, 0x95, 0xce, 0x12, 0xcf, 0xb9, 0x8e, 0x54,
-0x27, 0x5c, 0xc9, 0x51, 0x7e, 0x7e, 0x6f, 0xb9,
-0xb1, 0x2b, 0x75, 0x10, 0x98, 0xb4, 0x9f, 0x2d,
-0x2b, 0xa6, 0x95, 0x7d, 0xdd, 0x8c, 0xf4, 0x11,
-0x69, 0x6f, 0xe9, 0x44, 0x79, 0x86, 0xef, 0x3f,
-0x49, 0x35, 0xdb, 0xb1, 0xbe, 0x13, 0x42, 0xa3,
-0xc5, 0x15, 0x1f, 0xa4, 0x0a, 0x40, 0xbc, 0xc0,
-0xb6, 0xb8, 0x46, 0xc6, 0x83, 0x63, 0x05, 0xde,
-0x2d, 0xf9, 0x32, 0x1d, 0x2b, 0xfa, 0xcf, 0x04,
-0xa9, 0x60, 0xb8, 0x64, 0x56, 0x40, 0xb6, 0xe7,
-0x49, 0x1a, 0x7c, 0xf3, 0x20, 0xfa, 0x2a, 0xaf,
-0xd3, 0x37, 0xfe, 0x3f, 0x1a, 0x38, 0xa7, 0x44,
-0xe7, 0xf1, 0x47, 0xbb, 0x1d, 0xe9, 0xbf, 0xe8,
-0xca, 0x41, 0x92, 0x27, 0xa9, 0x67, 0xde, 0x4c,
-0x63, 0x2c, 0xd0, 0x34, 0x01, 0xdf, 0xb9, 0x9c,
-0xca, 0xc2, 0x2c, 0xab, 0x90, 0x16, 0x10, 0xd4,
-0x16, 0xf3, 0x9d, 0x4d, 0x72, 0xc1, 0xd7, 0x00,
-0xcc, 0x0a, 0x5f, 0x6c, 0x6a, 0x7c, 0x50, 0x36,
-0x79, 0x22, 0x5f, 0x28, 0xea, 0x23, 0xa2, 0x9c,
-0x8f, 0x75, 0xca, 0xf0, 0xfd, 0x46, 0x3c, 0x4b,
-0x47, 0xfc, 0xe9, 0x1a, 0x8f, 0x67, 0x39, 0xfe,
-0x3a, 0x95, 0xff, 0x55, 0x39, 0xff, 0x08, 0x5d,
-0xfa, 0x13, 0xf4, 0x16, 0xbc, 0xa8, 0x45, 0x3c,
-0x47, 0xcd, 0x37, 0x57, 0x2a, 0x71, 0xc4, 0x95,
-0xe7, 0x4a, 0xc4, 0x41, 0xb6, 0x17, 0xfd, 0x2b,
-0x52, 0x23, 0xe8, 0xca, 0xb5, 0x9c, 0x8b, 0xf2,
-0xec, 0x3f, 0xd2, 0xa5, 0xad, 0xc1, 0xff, 0x52,
-0x3f, 0x77, 0x6e, 0x2a, 0xfe, 0x37, 0x43, 0x32,
-0x2d, 0xe4, 0x4c, 0xd5, 0xb3, 0x46, 0x49, 0xe0,
-0xf4, 0xfb, 0x4c, 0x6a, 0x34, 0x25, 0xc4, 0x61,
-0x2b, 0x4a, 0x91, 0xe0, 0x8e, 0xe4, 0xcb, 0xd1,
-0xea, 0x79, 0xd3, 0xaa, 0xe8, 0xcc, 0xba, 0xab,
-0x8f, 0xd9, 0x32, 0xdf, 0xb5, 0x1c, 0xe9, 0x31,
-0xe9, 0x22, 0x5a, 0xc3, 0xa6, 0xeb, 0x48, 0x87,
-0x0c, 0xdf, 0x67, 0xa4, 0x98, 0xa6, 0xb9, 0x4d,
-0x75, 0xc3, 0x89, 0x4f, 0xf4, 0x91, 0xb9, 0x94,
-0xfa, 0x53, 0xea, 0xe0, 0x28, 0xa7, 0xd7, 0xf0,
-0x83, 0xf9, 0x4d, 0x54, 0x6e, 0x27, 0xad, 0xd1,
-0x0d, 0x22, 0x8c, 0x4c, 0x1d, 0x2c, 0x29, 0x57,
-0xd1, 0xbe, 0xcd, 0xa8, 0x04, 0x11, 0x83, 0x5c,
-0xef, 0x76, 0xf3, 0x8b, 0x39, 0x17, 0xe5, 0xda,
-0x7f, 0xce, 0xea, 0xec, 0xdc, 0xff, 0x46, 0x93,
-0xc0, 0xd1, 0x26, 0x05, 0x71, 0x30, 0xca, 0xfa,
-0x10, 0x4f, 0x3d, 0x63, 0xe4, 0x8d, 0xb1, 0xa3,
-0xd1, 0x6f, 0x7a, 0xba, 0xb5, 0xa5, 0x46, 0xd3,
-0x35, 0x62, 0x34, 0xaa, 0xdd, 0xf9, 0xfc, 0x69,
-0x9b, 0xc9, 0xec, 0x62, 0x09, 0x6a, 0x2c, 0xcf,
-0x97, 0x24, 0xbb, 0x29, 0x47, 0xbb, 0xbd, 0x36,
-0xe6, 0x05, 0x9c, 0xed, 0x2b, 0xcf, 0xf0, 0xfd,
-0xa6, 0x55, 0x7f, 0x92, 0xe6, 0x97, 0xda, 0x67,
-0xe6, 0x28, 0x7f, 0xf2, 0xfc, 0x46, 0x9f, 0xeb,
-0xad, 0x55, 0x50, 0xcd, 0x93, 0x86, 0xb6, 0x6c,
-0x6c, 0xf5, 0x1e, 0x46, 0xf3, 0xfb, 0xe1, 0x80,
-0xfd, 0x6d, 0x99, 0x7b, 0x5e, 0xd6, 0xfb, 0x32,
-0xb6, 0x38, 0x35, 0xe8, 0xa6, 0x4a, 0xc6, 0xbf,
-0xbe, 0x79, 0x6a, 0xac, 0x84, 0x35, 0xe8, 0xbf,
-0x7c, 0x56, 0xe5, 0x24, 0x91, 0x0b, 0x5f, 0x05,
-0x5a, 0x57, 0x40, 0x30, 0x9b, 0x5d, 0xb0, 0xd0,
-0xfc, 0xa5, 0x37, 0x6c, 0xe7, 0xe9, 0x8e, 0x24,
-0x39, 0x6d, 0x2c, 0x35, 0x7e, 0x4d, 0xcd, 0xf0,
-0x2d, 0x96, 0x16, 0xd3, 0x18, 0x6d, 0x63, 0xb6,
-0x8b, 0x30, 0x25, 0xf5, 0x17, 0x1b, 0xca, 0xf0,
-0x3d, 0x43, 0x4c, 0xb8, 0x15, 0x4b, 0xe9, 0x67,
-0x68, 0x4c, 0x36, 0x6a, 0x8b, 0x39, 0xa5, 0xb6,
-0x12, 0xbb, 0xf7, 0xad, 0x9b, 0x3a, 0xf7, 0x21,
-0x1b, 0x29, 0x6a, 0x5e, 0xc7, 0x4b, 0xba, 0x79,
-0x7d, 0x50, 0x79, 0xa5, 0x74, 0x60, 0x57, 0xef,
-0x73, 0xc2, 0x94, 0xd2, 0x0f, 0xfa, 0xab, 0x5c,
-0xf9, 0xcb, 0xea, 0x26, 0xd2, 0xfd, 0xad, 0xc5,
-0xfe, 0xcb, 0x25, 0x99, 0xf2, 0xc9, 0x9b, 0x8c,
-0x36, 0xe6, 0xc4, 0x9f, 0xb1, 0x17, 0xf3, 0xba,
-0x80, 0x1b, 0x35, 0x72, 0xb2, 0x4a, 0x49, 0xee,
-0x7b, 0x13, 0x57, 0xc7, 0xb3, 0xfa, 0x8f, 0xae,
-0x22, 0x2b, 0x7a, 0xfb, 0x4d, 0x94, 0x34, 0x31,
-0xe6, 0xab, 0x65, 0xda, 0xd0, 0x55, 0xf0, 0xf4,
-0x86, 0x32, 0x7c, 0xaf, 0x50, 0x05, 0x5b, 0x09,
-0xb3, 0x09, 0xf7, 0x6c, 0xe1, 0xf0, 0x78, 0xde,
-0xeb, 0xa7, 0xa2, 0x75, 0x05, 0xa1, 0x2d, 0xa2,
-0x90, 0xcd, 0xe4, 0x2c, 0xf7, 0x96, 0xab, 0x3b,
-0xad, 0xb8, 0x38, 0xab, 0xd2, 0x69, 0xa5, 0x17,
-0x4a, 0xed, 0xbf, 0x25, 0xe6, 0xa5, 0xc8, 0x9a,
-0x59, 0x89, 0x3c, 0xe6, 0xf9, 0x0e, 0xcd, 0xfa,
-0x17, 0xee, 0x29, 0xaa, 0x75, 0xd8, 0x7f, 0xf9,
-0x29, 0x69, 0x1e, 0xe7, 0xcc, 0x3e, 0x89, 0x9b,
-0x5a, 0xf4, 0x6c, 0xfa, 0x80, 0xde, 0x85, 0xbc,
-0xc8, 0xa3, 0xa7, 0xe5, 0xac, 0x66, 0x2a, 0x78,
-0x6f, 0xa2, 0x98, 0x0a, 0x7d, 0xfb, 0x8f, 0xce,
-0xf3, 0xa9, 0xfd, 0xf9, 0xb2, 0x54, 0xcb, 0xd7,
-0xc9, 0x1d, 0x78, 0x26, 0x8d, 0x9b, 0xbb, 0xff,
-0x15, 0xe6, 0xfd, 0x29, 0x64, 0xdc, 0x9b, 0x1a,
-0x88, 0xf0, 0x81, 0x5b, 0x79, 0x57, 0xb6, 0xe4,
-0x84, 0x2b, 0x22, 0x7d, 0xc5, 0xce, 0xdc, 0x67,
-0xe1, 0xcc, 0x0b, 0x3d, 0x8c, 0x18, 0x70, 0x4f,
-0x2b, 0x3d, 0x57, 0x92, 0x34, 0xb9, 0xba, 0xe8,
-0x04, 0x8e, 0xd4, 0x87, 0x89, 0xad, 0xb2, 0xb8,
-0xe6, 0xf1, 0xaf, 0xa9, 0xd8, 0x8d, 0xe9, 0xbf,
-0xd5, 0xb6, 0xb8, 0xb1, 0x35, 0xcc, 0xea, 0x60,
-0x1a, 0x28, 0xf1, 0x1c, 0xc9, 0x77, 0x12, 0x37,
-0xb6, 0xd3, 0xd3, 0x82, 0xea, 0xd9, 0xbc, 0x69,
-0xeb, 0x0b, 0xd9, 0x25, 0x85, 0x9c, 0x7c, 0x7e,
-0x58, 0xda, 0x4d, 0x8c, 0x14, 0x18, 0xa5, 0xf1,
-0xe7, 0xc8, 0xfa, 0x33, 0x7c, 0x0f, 0xb9, 0x96,
-0x99, 0xd2, 0x24, 0x26, 0x5a, 0x72, 0xf4, 0x9b,
-0xfc, 0x41, 0x9b, 0x6c, 0x3c, 0xe5, 0x39, 0xad,
-0x7a, 0x26, 0x72, 0x9c, 0x0b, 0xf2, 0x65, 0xaa,
-0xb9, 0x9c, 0xa9, 0x94, 0x0c, 0x62, 0x87, 0xcb,
-0xdc, 0x7f, 0x91, 0xff, 0xc5, 0x95, 0xa9, 0x91,
-0x74, 0xab, 0xa6, 0x73, 0x06, 0x85, 0xb2, 0xcc,
-0xfe, 0xdb, 0xb8, 0xfe, 0x13, 0xc7, 0xe8, 0x92,
-0x1a, 0x9e, 0x3b, 0xce, 0xec, 0x2b, 0x58, 0x21,
-0xda, 0x3a, 0x4b, 0x4c, 0x3a, 0x1e, 0xf0, 0xbc,
-0x59, 0xb8, 0xd5, 0x6b, 0xcc, 0x19, 0xc5, 0x4e,
-0x03, 0x58, 0x5f, 0xcf, 0xfb, 0xa5, 0xfa, 0xef,
-0x85, 0x74, 0x96, 0xad, 0x06, 0xd5, 0x3b, 0x6f,
-0x6f, 0x20, 0xc3, 0xf7, 0x0a, 0x29, 0x5e, 0xed,
-0x76, 0xf6, 0x14, 0xb3, 0x7a, 0xc9, 0xeb, 0x2e,
-0x87, 0x1a, 0xb9, 0x8b, 0x18, 0xd5, 0x20, 0x71,
-0x26, 0xa0, 0x4d, 0x8e, 0x0f, 0x2c, 0x65, 0x4f,
-0x92, 0x7f, 0x4f, 0x84, 0xc7, 0x13, 0x86, 0xe8,
-0x9b, 0xd2, 0x57, 0x2c, 0x37, 0x2f, 0x32, 0xbf,
-0x38, 0xbd, 0x34, 0x56, 0x1e, 0xcf, 0x9b, 0x7f,
-0xcb, 0x5b, 0xff, 0x42, 0x44, 0x7e, 0x43, 0xf2,
-0xd7, 0x94, 0x0b, 0xbd, 0x41, 0xda, 0x3d, 0x97,
-0x09, 0x8e, 0x17, 0x2c, 0xf5, 0x14, 0xe2, 0x2f,
-0x49, 0x9b, 0xe6, 0xf9, 0xef, 0x4d, 0xbc, 0xdd,
-0x9b, 0x35, 0x70, 0x49, 0x37, 0x71, 0xb6, 0x6c,
-0xfc, 0x21, 0x9e, 0xcf, 0x7b, 0xd2, 0x20, 0x89,
-0x21, 0x64, 0x67, 0xd7, 0x9f, 0xe1, 0x7b, 0x86,
-0x9c, 0xfb, 0x1e, 0x15, 0x3e, 0x9e, 0x36, 0x5e,
-0x75, 0xb3, 0xe5, 0x33, 0x85, 0x2f, 0x1c, 0x10,
-0x7b, 0xad, 0x0e, 0x88, 0x64, 0xe4, 0x78, 0x3b,
-0xa3, 0x01, 0xc5, 0x87, 0x19, 0xe1, 0xb3, 0x5e,
-0x05, 0xfd, 0x7d, 0xd9, 0x3b, 0x04, 0xe5, 0xc9,
-0x8a, 0x5f, 0x9c, 0xbe, 0xff, 0x66, 0x24, 0x6f,
-0xd5, 0x97, 0x79, 0xfe, 0x2d, 0xdf, 0xfe, 0xdb,
-0xe0, 0xf8, 0x43, 0xbc, 0x68, 0x6e, 0x9b, 0x5e,
-0xf1, 0xe7, 0xac, 0xd1, 0xed, 0xb7, 0x0b, 0x17,
-0xa1, 0xbd, 0xe7, 0x8d, 0xa1, 0xc2, 0xfe, 0xa5,
-0x8c, 0xd2, 0x97, 0xcd, 0x3d, 0xcc, 0x59, 0x7b,
-0x46, 0xf8, 0xec, 0x5d, 0xca, 0xe7, 0xdf, 0x56,
-0x7e, 0x98, 0x1a, 0x36, 0x5b, 0x8b, 0x25, 0x8a,
-0xa0, 0x64, 0xe9, 0xcc, 0x7d, 0x47, 0xec, 0x73,
-0xba, 0xce, 0xf7, 0xfc, 0xd9, 0x4e, 0x93, 0xef,
-0x2d, 0x9c, 0xfb, 0x91, 0xf2, 0x12, 0xd5, 0x01,
-0x21, 0xaf, 0xfd, 0x2e, 0x7b, 0x4a, 0x7d, 0x80,
-0xa8, 0x20, 0x2a, 0xdc, 0xb1, 0x5f, 0xec, 0x52,
-0x49, 0xcb, 0x6e, 0x3e, 0x4f, 0x9d, 0x09, 0xf4,
-0x56, 0x51, 0x25, 0xcd, 0xe4, 0x54, 0x8a, 0x2c,
-0xf4, 0xff, 0xc5, 0xf7, 0xdb, 0x98, 0xfd, 0x77,
-0x89, 0xa7, 0x62, 0x4c, 0x0d, 0xd2, 0xb4, 0x78,
-0x4d, 0x16, 0x3f, 0x85, 0x20, 0x0e, 0xd8, 0x12,
-0xd0, 0x89, 0x78, 0xe8, 0xad, 0xec, 0x99, 0xe2,
-0x64, 0xd5, 0x96, 0x49, 0xfa, 0xe1, 0x3a, 0x65,
-0x5a, 0xee, 0x2d, 0x73, 0x93, 0x2e, 0xc6, 0xaf,
-0xf2, 0xf2, 0x46, 0xcd, 0xce, 0x2c, 0x7a, 0x76,
-0x13, 0x2f, 0x80, 0x4e, 0x66, 0xde, 0xb2, 0x33,
-0xb3, 0x2e, 0x3b, 0x0f, 0x3d, 0x32, 0xd7, 0x2c,
-0x7a, 0xd6, 0xb1, 0xbd, 0x2a, 0x0e, 0x85, 0x15,
-0x32, 0x60, 0x0b, 0x72, 0x1e, 0xd2, 0x12, 0x47,
-0x39, 0x59, 0xad, 0xef, 0x3f, 0x2a, 0xcd, 0x82,
-0x9e, 0x92, 0xf5, 0x57, 0xed, 0xc8, 0xfd, 0x42,
-0xbd, 0x0a, 0x76, 0x04, 0xaa, 0x3b, 0x96, 0xbe,
-0x7a, 0x9e, 0x5a, 0xfe, 0x3f, 0xf0, 0xff, 0x49,
-0xb1, 0x27, 0x6f, 0xaa, 0xd7, 0xf8, 0x5d, 0xe2,
-0x76, 0x34, 0x5c, 0xb8, 0xb6, 0x4a, 0xf5, 0x09,
-0x73, 0xbd, 0x21, 0x75, 0x3b, 0xd5, 0x3e, 0x4e,
-0x17, 0x93, 0xd4, 0xab, 0xbe, 0xa8, 0xfa, 0xf3,
-0x57, 0x7f, 0x04, 0x65, 0xeb, 0xaf, 0xe8, 0x3b,
-0xf3, 0x6c, 0x14, 0xa6, 0xc1, 0x84, 0xfc, 0xc4,
-0xba, 0xf3, 0x7b, 0xcf, 0x90, 0xcb, 0xc3, 0x4e,
-0x2b, 0x65, 0x47, 0x1f, 0x91, 0x0a, 0xe4, 0x87,
-0xcb, 0xd6, 0xef, 0x88, 0x8f, 0xec, 0x64, 0x7d,
-0x14, 0xf4, 0x66, 0x1e, 0xb2, 0x89, 0x9f, 0x18,
-0xf3, 0x5b, 0x34, 0xf1, 0xf7, 0x84, 0x23, 0x25,
-0xf2, 0x77, 0x91, 0x75, 0x53, 0x55, 0xec, 0x39,
-0x72, 0x78, 0xf8, 0x62, 0xee, 0x35, 0xb9, 0xf6,
-0x9f, 0xd3, 0xee, 0x1b, 0x91, 0x3f, 0x31, 0x5d,
-0xe5, 0xc4, 0xd0, 0xa5, 0xc6, 0x99, 0xd1, 0x83,
-0x8c, 0xbd, 0xb7, 0x52, 0x1c, 0x81, 0x14, 0xaf,
-0xc4, 0x05, 0x6a, 0x0c, 0xd1, 0xc3, 0x99, 0x52,
-0x6a, 0x36, 0x87, 0x83, 0xac, 0x92, 0x75, 0xd9,
-0x2e, 0x71, 0x00, 0xae, 0x8e, 0x25, 0x4d, 0xc0,
-0x1f, 0x41, 0x27, 0x05, 0x57, 0x5d, 0x58, 0x77,
-0x7e, 0xef, 0x19, 0x7a, 0x64, 0x96, 0x99, 0x9b,
-0xf5, 0x8e, 0x18, 0xeb, 0xbd, 0x56, 0x52, 0x61,
-0xca, 0xda, 0x3b, 0xca, 0xac, 0xbe, 0xd1, 0xa5,
-0xf0, 0x42, 0x56, 0x5a, 0xeb, 0xb5, 0xcc, 0xb0,
-0x8c, 0x0c, 0x89, 0xfb, 0x97, 0x73, 0xe2, 0x8d,
-0x69, 0x8e, 0x6e, 0x49, 0x55, 0x86, 0x37, 0x2c,
-0x9a, 0xca, 0xbb, 0x46, 0x16, 0xdb, 0x7f, 0x7c,
-0x83, 0xf6, 0x5f, 0x6b, 0x65, 0x67, 0xc8, 0xd3,
-0x33, 0xbe, 0x4e, 0x97, 0xc7, 0xa2, 0xb8, 0xb7,
-0x6c, 0x82, 0x56, 0xc8, 0xeb, 0x8f, 0x6c, 0xb1,
-0x92, 0xa5, 0xa3, 0x48, 0xcf, 0xc2, 0x49, 0xbd,
-0x00, 0xd0, 0x5f, 0xba, 0xe7, 0x15, 0x14, 0x2f,
-0x5a, 0x7f, 0xaf, 0x58, 0x1e, 0x4a, 0xbd, 0x29,
-0xc0, 0xd3, 0x24, 0xe9, 0x15, 0x11, 0x9b, 0x08,
-0xd9, 0x18, 0xf4, 0x5a, 0x9c, 0xd7, 0xf7, 0x26,
-0x43, 0x85, 0x60, 0xb4, 0xe4, 0x01, 0x3e, 0x6d,
-0x59, 0x2c, 0x6e, 0x25, 0x46, 0x1d, 0xaf, 0xb0,
-0x8b, 0xd9, 0xe7, 0x04, 0x8f, 0x9b, 0xd7, 0xdb,
-0xa6, 0xcd, 0xa6, 0x28, 0xb8, 0x58, 0x78, 0x03,
-0xb1, 0xc3, 0x89, 0x9b, 0x3f, 0x2c, 0xd2, 0x5f,
-0xee, 0xc8, 0x7f, 0xaf, 0x7c, 0xb1, 0xfd, 0x17,
-0x3f, 0xff, 0xb1, 0x7e, 0xf5, 0xd7, 0x9c, 0x48,
-0x19, 0xae, 0xd9, 0x20, 0x64, 0xb3, 0xe5, 0xef,
-0xfa, 0x11, 0xa3, 0x5b, 0xaa, 0x56, 0x30, 0xd4,
-0x15, 0xfb, 0xb2, 0x13, 0x75, 0xf1, 0x53, 0x82,
-0x05, 0xf6, 0x65, 0xb5, 0xf0, 0xf9, 0x23, 0xd9,
-0xbe, 0xe0, 0x44, 0xd5, 0x4b, 0x58, 0xac, 0x14,
-0xcf, 0x6e, 0xde, 0xe5, 0xa7, 0x72, 0x3c, 0xb5,
-0x54, 0xcc, 0x29, 0x1a, 0x13, 0x84, 0xfd, 0x7f,
-0x28, 0x7f, 0xbb, 0x81, 0x14, 0x63, 0xa6, 0xb1,
-0xc6, 0x31, 0x3c, 0x9b, 0x51, 0x04, 0xad, 0xa5,
-0xfe, 0x9c, 0xdb, 0xd8, 0x46, 0xfa, 0x5a, 0xa1,
-0xe6, 0x98, 0xf5, 0xa6, 0xa0, 0xec, 0xf5, 0xc9,
-0x1a, 0xbc, 0x02, 0x97, 0x84, 0x79, 0xff, 0x55,
-0xc6, 0xfe, 0x8b, 0x3f, 0xcb, 0x9f, 0xff, 0xcd,
-0xcb, 0x60, 0x7b, 0xa9, 0x7f, 0x8b, 0x6b, 0x9c,
-0x9c, 0x28, 0x19, 0x66, 0xa3, 0x0f, 0x0f, 0x77,
-0x78, 0xca, 0x4c, 0xde, 0xec, 0x7f, 0x88, 0xc8,
-0x46, 0xc8, 0x3e, 0xc8, 0x88, 0x6b, 0x6b, 0x32,
-0xe5, 0x01, 0xa4, 0x96, 0x50, 0x95, 0x2d, 0x16,
-0x44, 0x2c, 0x9a, 0x87, 0xe8, 0xe0, 0x8e, 0x4e,
-0x23, 0xeb, 0xa3, 0xe1, 0xcd, 0xab, 0xfe, 0xda,
-0x37, 0x33, 0x2d, 0xce, 0x69, 0xc0, 0xd8, 0x90,
-0xad, 0x84, 0xa7, 0x4b, 0x7e, 0x7a, 0x28, 0x42,
-0x2e, 0x6d, 0x67, 0xd4, 0x38, 0xe2, 0x53, 0x19,
-0xdb, 0x3a, 0x9e, 0x61, 0x4e, 0x19, 0x26, 0xe6,
-0x28, 0x18, 0x28, 0x58, 0xba, 0x2f, 0xc4, 0xeb,
-0x69, 0x83, 0x9c, 0xa6, 0x76, 0xb8, 0xe8, 0xf9,
-0xf3, 0x1c, 0x1d, 0xe5, 0x3e, 0x37, 0xd0, 0xff,
-0x36, 0x8f, 0x87, 0x99, 0x08, 0xd3, 0x7a, 0x3c,
-0x6b, 0xf6, 0x66, 0x72, 0x73, 0x92, 0x9a, 0x05,
-0x3c, 0xcc, 0x79, 0x7c, 0x7e, 0x79, 0x57, 0xea,
-0x0e, 0xc4, 0x4f, 0x55, 0xe5, 0xef, 0x14, 0x44,
-0x2c, 0x17, 0xa3, 0x17, 0x70, 0xe4, 0x6a, 0xc0,
-0xa0, 0xc2, 0x8a, 0x7d, 0x67, 0xf7, 0x19, 0x29,
-0xc5, 0xdf, 0x85, 0xe9, 0xe7, 0x2a, 0xa8, 0xe6,
-0x8e, 0xa7, 0xd4, 0x8a, 0x47, 0x75, 0x86, 0xe6,
-0x99, 0x2a, 0x55, 0x0a, 0x95, 0x9c, 0x67, 0xe1,
-0xea, 0x83, 0x41, 0xe8, 0x0f, 0x7b, 0x93, 0x1b,
-0xe8, 0xef, 0x2a, 0x13, 0xf9, 0xef, 0x2f, 0xd2,
-0x0f, 0xf6, 0xe7, 0xb9, 0x5d, 0x62, 0x3d, 0x16,
-0xbe, 0x5f, 0xe0, 0xee, 0xc8, 0x9d, 0xff, 0x75,
-0xb6, 0xe7, 0x7a, 0xe5, 0x4f, 0xae, 0x2c, 0xfe,
-0x80, 0x5e, 0xcf, 0xbd, 0x54, 0x18, 0x05, 0x7b,
-0xac, 0x63, 0x34, 0xb2, 0x3e, 0xc8, 0x9c, 0x9c,
-0xa8, 0x62, 0x9a, 0x4c, 0xe7, 0x5a, 0x4a, 0xf3,
-0xc6, 0x18, 0xee, 0xdb, 0x1b, 0x71, 0x19, 0x6c,
-0xbd, 0x99, 0x9b, 0xf0, 0x55, 0x79, 0x8c, 0x11,
-0x2f, 0x24, 0x27, 0xa9, 0xd3, 0x25, 0xb0, 0x77,
-0xf3, 0x3a, 0x5f, 0xe4, 0xd5, 0xef, 0x33, 0x7f,
-0xf0, 0x6a, 0xab, 0xd8, 0xd6, 0x7b, 0x65, 0xba,
-0xfc, 0xd5, 0x1a, 0x51, 0x3c, 0x77, 0x9e, 0xf2,
-0xa4, 0x24, 0x98, 0xc8, 0xda, 0x36, 0x33, 0xd1,
-0x9d, 0xa8, 0xf7, 0xc4, 0xf8, 0x44, 0x38, 0x0b,
-0xb7, 0x66, 0x1f, 0x01, 0xd1, 0x36, 0x64, 0xf4,
-0xfe, 0xa1, 0xec, 0xc8, 0x25, 0xfe, 0x92, 0x1f,
-0x2e, 0xfa, 0xa9, 0xa9, 0x7c, 0xfb, 0xcf, 0x7e,
-0xae, 0x5b, 0xff, 0xe9, 0x64, 0xe4, 0x5b, 0x7f,
-0xce, 0xc6, 0xaf, 0xdd, 0xe8, 0xdc, 0x4a, 0xe5,
-0x59, 0x5f, 0x47, 0x6d, 0x4f, 0xb7, 0x6c, 0xb9,
-0x2a, 0x5f, 0x4f, 0x2f, 0x3b, 0x25, 0xae, 0x23,
-0x36, 0x92, 0xab, 0xf0, 0xe5, 0xc7, 0x8f, 0xd2,
-0x87, 0x86, 0x53, 0x36, 0xd4, 0xf7, 0xaf, 0xac,
-0xfb, 0x07, 0x5a, 0xee, 0x15, 0x52, 0x1c, 0x4e,
-0x7c, 0x2c, 0xb6, 0x15, 0xfb, 0x12, 0xa2, 0x0b,
-0x60, 0x77, 0xe7, 0xd7, 0xa8, 0x2b, 0x51, 0x79,
-0xcf, 0xf8, 0xdb, 0xe3, 0x02, 0xc8, 0x99, 0x85,
-0x13, 0xe3, 0x01, 0x29, 0x15, 0x6f, 0x89, 0xbf,
-0xea, 0x24, 0x46, 0xbd, 0xb7, 0x7a, 0xc6, 0xac,
-0xca, 0x8f, 0x1e, 0xc9, 0x79, 0xcd, 0x23, 0x4f,
-0x74, 0xc8, 0xd3, 0xf5, 0x22, 0xbb, 0xa0, 0xc0,
-0xff, 0x67, 0x26, 0x20, 0xd6, 0x2b, 0x7f, 0xad,
-0x79, 0xc6, 0x72, 0x4a, 0x89, 0x0e, 0x87, 0x02,
-0xf6, 0x76, 0xc7, 0x4e, 0x4e, 0xff, 0x94, 0xe0,
-0xb3, 0x5b, 0x48, 0xdb, 0xeb, 0xe6, 0x27, 0xd3,
-0x66, 0x4a, 0x53, 0xd6, 0xe3, 0x37, 0x64, 0xfb,
-0xab, 0x5c, 0xcd, 0x51, 0xef, 0xc5, 0xbc, 0xc7,
-0x9d, 0x9b, 0x87, 0x43, 0x6f, 0x90, 0xef, 0x2b,
-0xcf, 0x73, 0x9b, 0xb4, 0xf3, 0x55, 0xb4, 0xe6,
-0x0a, 0x1b, 0xb5, 0x69, 0xa7, 0x61, 0x6f, 0xce,
-0x2b, 0xe7, 0xb2, 0xc8, 0xe6, 0x1e, 0xba, 0xa4,
-0x8f, 0xe9, 0x21, 0x73, 0xaa, 0x92, 0xa3, 0x65,
-0xe8, 0x9e, 0x65, 0x49, 0xab, 0xf0, 0xd1, 0xcc,
-0xfb, 0x63, 0x94, 0x50, 0x37, 0xec, 0xdb, 0xca,
-0x3d, 0xf9, 0xd1, 0x0a, 0x93, 0xf1, 0x6d, 0x1f,
-0x17, 0x4a, 0x51, 0x99, 0xfe, 0xdb, 0xc0, 0xf8,
-0x37, 0x9a, 0xba, 0xc8, 0xd5, 0x80, 0xc6, 0xfb,
-0xc2, 0xc2, 0xc1, 0xfc, 0x37, 0x81, 0xa4, 0x63,
-0x3a, 0x6f, 0x9b, 0x5e, 0xfc, 0xc4, 0xd6, 0xad,
-0xcc, 0xbc, 0x92, 0xbc, 0xfe, 0x23, 0x4f, 0x83,
-0x71, 0x7a, 0x4b, 0x3e, 0x58, 0xcf, 0x1a, 0x2a,
-0xe2, 0x9c, 0x9b, 0x2d, 0x49, 0x0f, 0x5a, 0x54,
-0x45, 0x6c, 0x5e, 0xf1, 0x6b, 0x8b, 0x7d, 0x61,
-0xae, 0xa2, 0xa0, 0x7a, 0xf0, 0xc5, 0xb5, 0xbc,
-0x3c, 0x4e, 0xc6, 0xaf, 0xba, 0x33, 0xed, 0x94,
-0x55, 0x83, 0x9c, 0xd5, 0xaa, 0xb2, 0xbe, 0x8b,
-0xcc, 0x6b, 0xba, 0xa6, 0x1a, 0x69, 0xce, 0x70,
-0x7b, 0xc6, 0xbb, 0x2a, 0x45, 0xf4, 0xfb, 0x7e,
-0x9c, 0x76, 0x2a, 0x81, 0x13, 0xc1, 0x0b, 0xc5,
-0x8f, 0x83, 0xcd, 0xb2, 0x7c, 0xfb, 0x6f, 0x43,
-0xe3, 0xdf, 0x66, 0xfb, 0x3c, 0xf3, 0x8a, 0xc7,
-0x1f, 0x5e, 0x26, 0x06, 0xc7, 0x64, 0xd9, 0xc3,
-0x69, 0x24, 0x4b, 0x07, 0x9c, 0xf0, 0xe9, 0xc4,
-0xfd, 0x32, 0xa3, 0xf4, 0xa5, 0x98, 0x21, 0xb6,
-0xb7, 0x6b, 0x7c, 0x41, 0x9c, 0xf6, 0x97, 0xd3,
-0xbd, 0x51, 0x53, 0x5e, 0xae, 0xb9, 0x47, 0x3f,
-0xbc, 0x2b, 0x74, 0x12, 0xf5, 0x0b, 0x8f, 0x36,
-0xed, 0xeb, 0xff, 0x3e, 0xc8, 0x5b, 0xca, 0xeb,
-0x37, 0xf0, 0x6a, 0xb1, 0x96, 0x21, 0xac, 0xea,
-0xae, 0xdc, 0x8d, 0x80, 0x55, 0x59, 0x05, 0x23,
-0x69, 0xab, 0x51, 0xb6, 0x9b, 0x8b, 0x3b, 0x6c,
-0xe9, 0xa4, 0x9f, 0x68, 0x63, 0x6c, 0x57, 0xea,
-0x4d, 0xc5, 0x52, 0x9c, 0xee, 0x76, 0x23, 0x6a,
-0x2a, 0x3f, 0x51, 0xcd, 0x9d, 0x29, 0x76, 0xb6,
-0x15, 0xcc, 0xff, 0xda, 0xcf, 0xf5, 0xf5, 0xbf,
-0x52, 0x3c, 0x1b, 0x66, 0xa3, 0xf3, 0x86, 0x69,
-0xec, 0xa1, 0xe1, 0xb2, 0x97, 0x8f, 0x10, 0xc4,
-0x15, 0x77, 0x91, 0xca, 0x55, 0xf0, 0xd8, 0xd5,
-0xac, 0x75, 0x23, 0x8e, 0xbb, 0x0e, 0x88, 0x0a,
-0x5f, 0xfc, 0x39, 0xe9, 0xbd, 0xaa, 0xa9, 0xa5,
-0x86, 0x68, 0x83, 0x3d, 0x2c, 0x34, 0xf2, 0xe6,
-0x64, 0x3b, 0x36, 0x52, 0x76, 0xdd, 0xde, 0xbc,
-0xef, 0x1f, 0x97, 0x8d, 0xe1, 0x48, 0x61, 0x65,
-0x15, 0x05, 0xf1, 0x72, 0xbd, 0xbe, 0xd6, 0xaa,
-0x6a, 0xc6, 0x0f, 0xd9, 0xd8, 0x71, 0x42, 0x6f,
-0xce, 0xcf, 0x22, 0x89, 0xa5, 0x5d, 0x9e, 0x75,
-0x4d, 0x06, 0x94, 0xbc, 0x1a, 0xec, 0xa1, 0x6f,
-0x20, 0x97, 0xf2, 0xce, 0x71, 0xd3, 0xa8, 0x3d,
-0x41, 0x8d, 0x8b, 0xf8, 0x7b, 0x53, 0x9d, 0x7e,
-0xff, 0x83, 0xa8, 0xf5, 0xd4, 0xb3, 0x70, 0xeb,
-0xf3, 0xbf, 0xac, 0xaa, 0x41, 0x83, 0x93, 0x84,
-0xbc, 0xe9, 0x09, 0x9d, 0xa8, 0xf7, 0xd7, 0x68,
-0xe2, 0x4b, 0x71, 0xa4, 0x4a, 0x17, 0x29, 0x57,
-0x32, 0x4e, 0x43, 0xfd, 0xc0, 0xf0, 0x19, 0x66,
-0xa7, 0xcb, 0x19, 0xcd, 0x82, 0xbe, 0x55, 0xed,
-0xd7, 0xd4, 0xea, 0x95, 0x62, 0xe1, 0x49, 0xba,
-0x4c, 0xda, 0x33, 0x6d, 0x42, 0xb6, 0xaf, 0xe4,
-0xc9, 0xfe, 0xfb, 0x8e, 0x9c, 0xec, 0x66, 0x74,
-0x4e, 0x33, 0x2f, 0xe8, 0xbf, 0xb9, 0xe6, 0x77,
-0x17, 0xea, 0x57, 0xdd, 0x11, 0x2d, 0x13, 0x1e,
-0xc8, 0x4a, 0x88, 0x94, 0x8d, 0x83, 0x56, 0x88,
-0xd2, 0xeb, 0xd5, 0x42, 0xfe, 0x93, 0x4b, 0xb6,
-0x37, 0x6a, 0xca, 0xa5, 0x83, 0xd1, 0x19, 0xb4,
-0x0f, 0x4a, 0x4a, 0x58, 0x57, 0xc2, 0x4c, 0xe9,
-0x8b, 0x44, 0x3d, 0xfd, 0x97, 0x5d, 0x54, 0xbc,
-0x3e, 0xfd, 0xd7, 0xd8, 0x99, 0xf5, 0xa9, 0xd9,
-0xcf, 0x28, 0x55, 0xbc, 0x7c, 0xe6, 0xcd, 0x2b,
-0x81, 0xd6, 0xe2, 0x63, 0xd4, 0x95, 0x18, 0xb2,
-0x7f, 0xcb, 0x59, 0x3f, 0x2b, 0xde, 0xab, 0x71,
-0x2f, 0xcf, 0x44, 0xc2, 0x42, 0x76, 0x6c, 0xd9,
-0xa9, 0x34, 0x31, 0xdd, 0x47, 0x7f, 0xc7, 0xd6,
-0xae, 0x87, 0x88, 0xd3, 0x76, 0xb0, 0xb1, 0x26,
-0xab, 0xe0, 0x5e, 0xa1, 0x86, 0x04, 0xaa, 0xed,
-0x58, 0x6e, 0x6f, 0x8f, 0x66, 0x34, 0x53, 0xde,
-0x3f, 0xee, 0x54, 0x85, 0xca, 0xc5, 0x3b, 0xc2,
-0x9e, 0xde, 0x8a, 0x46, 0x14, 0xd2, 0x8f, 0x50,
-0xb8, 0x38, 0x57, 0x6e, 0xd4, 0xa8, 0x1d, 0xc9,
-0xd8, 0xf9, 0xf8, 0x2f, 0x2d, 0x73, 0x79, 0x34,
-0xbc, 0x13, 0xaf, 0x9b, 0xe1, 0xab, 0x53, 0x51,
-0xa6, 0x8b, 0x09, 0x7a, 0x5f, 0x99, 0x5f, 0x95,
-0xaa, 0x7f, 0x91, 0xcd, 0xdb, 0x27, 0x7f, 0x92,
-0x7a, 0xc3, 0x80, 0xab, 0x82, 0x90, 0x6f, 0xbd,
-0xe8, 0x0f, 0x36, 0x5b, 0xf4, 0x36, 0x32, 0x76,
-0xa2, 0xd1, 0x89, 0xdf, 0x90, 0x8e, 0x5f, 0x78,
-0x75, 0x41, 0x7a, 0xf8, 0x1d, 0x54, 0xd3, 0xfd,
-0x21, 0x8a, 0x6b, 0xe5, 0xa4, 0x6f, 0x1c, 0xe7,
-0x4c, 0x4f, 0x84, 0xd5, 0x39, 0x41, 0xae, 0x49,
-0x19, 0x1e, 0x4d, 0xfd, 0xdb, 0x5e, 0x0e, 0x31,
-0xea, 0x15, 0x72, 0x65, 0xaf, 0x70, 0xf7, 0xd2,
-0xe8, 0xa7, 0x3e, 0x9b, 0x72, 0x6e, 0x7b, 0x48,
-0xd5, 0x1f, 0x1d, 0xdc, 0x86, 0x95, 0x9d, 0x93,
-0x8d, 0x96, 0x7e, 0x61, 0x67, 0x6b, 0x75, 0xfe,
-0x25, 0x53, 0x42, 0x01, 0x29, 0x24, 0x53, 0x54,
-0x47, 0x36, 0x97, 0xf8, 0xb5, 0xdf, 0x9b, 0x99,
-0x9a, 0x51, 0xff, 0xcd, 0xbf, 0xa3, 0x45, 0x4a,
-0xcf, 0xb5, 0xce, 0xde, 0x49, 0x77, 0xba, 0xfa,
-0x7f, 0xce, 0x5f, 0xed, 0x24, 0xae, 0x46, 0xdf,
-0xda, 0xbf, 0x1e, 0xe8, 0xf6, 0xb2, 0x3f, 0x6c,
-0xaf, 0x8b, 0x83, 0xc8, 0x25, 0xd3, 0x12, 0x13,
-0xb5, 0x2d, 0xde, 0xd8, 0xd7, 0x99, 0x36, 0xea,
-0xa0, 0xba, 0xef, 0xef, 0xde, 0x39, 0xfb, 0xee,
-0xd8, 0x91, 0xad, 0x69, 0x63, 0xd4, 0x75, 0xa5,
-0x9c, 0x3d, 0x73, 0x39, 0xa5, 0x6e, 0xc4, 0x95,
-0x99, 0xe9, 0x19, 0x72, 0xb7, 0x13, 0xa5, 0x39,
-0x7b, 0xf8, 0x9d, 0x73, 0xa4, 0x14, 0xa6, 0xa6,
-0xbd, 0x79, 0x0b, 0x29, 0xaf, 0xd2, 0x1c, 0xab,
-0x5c, 0x0d, 0x10, 0x7d, 0x55, 0x10, 0xe5, 0x4e,
-0xaf, 0x94, 0xa6, 0x52, 0xcf, 0x49, 0xaf, 0xd8,
-0xc4, 0x45, 0x27, 0x9c, 0x4e, 0xe9, 0xb4, 0x13,
-0xd3, 0xb4, 0x98, 0xa6, 0x2e, 0x6a, 0xc9, 0x6a,
-0x8a, 0x6b, 0x7f, 0xc5, 0x42, 0x96, 0xee, 0x24,
-0xe2, 0x46, 0xc4, 0x59, 0xb5, 0xff, 0xb5, 0xf1,
-0x77, 0xcf, 0xbe, 0x33, 0x7a, 0xd0, 0xfe, 0xd5,
-0x3a, 0x75, 0xdc, 0x5a, 0xe0, 0x47, 0xc7, 0x3a,
-0xcf, 0x1b, 0xdc, 0x5b, 0xb6, 0x25, 0x15, 0x1d,
-0x1b, 0x7d, 0x9c, 0x0c, 0x2e, 0xf3, 0x1e, 0x66,
-0x88, 0x83, 0xe4, 0xbc, 0x30, 0x2e, 0x0a, 0x7f,
-0x8a, 0x49, 0xfe, 0x03, 0xab, 0xc4, 0x3f, 0x59,
-0x1a, 0x1a, 0xe9, 0x20, 0x11, 0xb9, 0x3b, 0x25,
-0x77, 0x9b, 0xd5, 0x17, 0x2b, 0x05, 0x70, 0x7d,
-0x8f, 0xad, 0x3a, 0x7f, 0xa4, 0xa7, 0x8e, 0xb6,
-0xe8, 0xcb, 0x02, 0xce, 0xa9, 0xc1, 0x66, 0x17,
-0x00, 0xc7, 0xa7, 0xd5, 0x4e, 0x64, 0x7f, 0xdd,
-0x5b, 0xff, 0xfe, 0x6a, 0x48, 0xfe, 0xa7, 0x2e,
-0x4e, 0xa9, 0xf7, 0xb8, 0x2a, 0x13, 0xdd, 0xcf,
-0xd9, 0x98, 0x27, 0x7f, 0xca, 0xf8, 0x72, 0x05,
-0xa4, 0xff, 0x9b, 0xbc, 0x15, 0x94, 0x91, 0x1d,
-0x69, 0xc6, 0x07, 0xba, 0x30, 0x0e, 0xfb, 0x89,
-0xab, 0x6f, 0xad, 0x24, 0x25, 0xc9, 0xcc, 0xf3,
-0x4b, 0x4e, 0x21, 0x87, 0xc9, 0x02, 0x79, 0x53,
-0xd0, 0x2c, 0x32, 0x5b, 0xf4, 0x73, 0xef, 0xef,
-0x3c, 0xe6, 0x5a, 0x66, 0xea, 0x05, 0x0e, 0x3c,
-0x8c, 0x52, 0xa5, 0x2f, 0x76, 0x0d, 0x99, 0xbb,
-0x22, 0xd2, 0x9f, 0x7b, 0x16, 0x72, 0x7f, 0x29,
-0xfe, 0x7e, 0xb2, 0x2d, 0xa9, 0x9e, 0x30, 0x12,
-0x8e, 0xa0, 0x5c, 0xf7, 0x25, 0x86, 0x61, 0x18,
-0x95, 0x5a, 0x74, 0x99, 0x2a, 0x04, 0xff, 0xfd,
-0x1a, 0x62, 0xdc, 0xd4, 0x92, 0x29, 0x7a, 0x72,
-0x71, 0xb4, 0xd8, 0x32, 0xfe, 0x99, 0xe9, 0xf8,
-0xac, 0x4a, 0x24, 0x7f, 0xfa, 0x97, 0x26, 0xc5,
-0xe9, 0x5a, 0xf4, 0x23, 0xd1, 0x99, 0xc5, 0xd6,
-0x2c, 0xa9, 0x89, 0xec, 0x90, 0xd5, 0xb6, 0x1b,
-0xf6, 0xfc, 0xc7, 0xab, 0x69, 0x33, 0x20, 0xfa,
-0xfd, 0xe9, 0x24, 0x89, 0xb6, 0x8e, 0x8b, 0x15,
-0x56, 0x92, 0xda, 0xe4, 0xdc, 0x6e, 0x3e, 0xe6,
-0x37, 0xaa, 0xd3, 0x8c, 0xa6, 0x9a, 0x07, 0xac,
-0x68, 0xea, 0x97, 0xc8, 0x83, 0x89, 0x32, 0x4e,
-0x42, 0xea, 0x75, 0x9a, 0x8d, 0x3e, 0x73, 0x42,
-0x68, 0xfb, 0x4a, 0x7b, 0x75, 0x68, 0xaf, 0x8a,
-0x3f, 0x83, 0xfd, 0x51, 0x6a, 0x94, 0x15, 0xd0,
-0xbc, 0xba, 0x97, 0xf5, 0xf8, 0x36, 0x70, 0x22,
-0xf7, 0xd6, 0x82, 0xb1, 0x7f, 0x4c, 0x4d, 0x7f,
-0x70, 0xb6, 0xf5, 0x5d, 0xfd, 0xdb, 0x14, 0x9b,
-0x4b, 0xfc, 0xda, 0xdb, 0xb8, 0xf3, 0x7a, 0x98,
-0x01, 0x98, 0x6b, 0x40, 0xd6, 0xe3, 0xee, 0xfe,
-0x94, 0xf1, 0x06, 0x5e, 0xf5, 0x46, 0x6b, 0xab,
-0xe3, 0xce, 0x8f, 0x42, 0x7c, 0xc3, 0xf9, 0x11,
-0x87, 0xb1, 0xfc, 0x45, 0x88, 0x8f, 0x0f, 0xc6,
-0x0d, 0x9f, 0x98, 0x36, 0xe4, 0x36, 0xce, 0x8b,
-0x40, 0xfd, 0x2e, 0x3a, 0xe8, 0x1e, 0xfc, 0xe7,
-0xbc, 0xa5, 0x38, 0xab, 0xa3, 0xc4, 0x39, 0x63,
-0x8d, 0x76, 0x9b, 0x59, 0x4e, 0xd2, 0x16, 0x66,
-0xf3, 0x7a, 0xc2, 0xd3, 0x7f, 0xcd, 0x49, 0x6a,
-0xcd, 0xe7, 0x14, 0x8d, 0x1b, 0x77, 0xa4, 0xf3,
-0x9d, 0x74, 0x96, 0xfc, 0xb0, 0x9f, 0xba, 0xe5,
-0x9a, 0x73, 0x7b, 0x96, 0x5c, 0x97, 0xd8, 0xb9,
-0xfb, 0x6d, 0xfe, 0x84, 0xf8, 0xf5, 0x80, 0xb9,
-0xc8, 0x5b, 0x73, 0x48, 0x7a, 0x5c, 0x27, 0x7b,
-0xa4, 0x6a, 0xc3, 0xde, 0x43, 0x79, 0xef, 0x0a,
-0xb8, 0xef, 0x6c, 0x33, 0xa3, 0x5d, 0x93, 0x07,
-0xda, 0xf3, 0xb1, 0xf4, 0x9f, 0x68, 0x93, 0x32,
-0x39, 0xf6, 0x1f, 0xae, 0x6e, 0x8e, 0xd3, 0x81,
-0x19, 0x2d, 0x9c, 0x74, 0xc4, 0xd1, 0x01, 0x99,
-0xe1, 0x90, 0xe2, 0xb2, 0xf9, 0xed, 0x64, 0xa2,
-0xdf, 0xfc, 0x28, 0xb2, 0x03, 0xd7, 0xe0, 0x27,
-0x13, 0xf9, 0x4f, 0xe1, 0xb5, 0x47, 0x43, 0x77,
-0xb5, 0x57, 0x2b, 0xa4, 0x5b, 0xf2, 0xc6, 0x30,
-0x24, 0x67, 0x39, 0xf2, 0x67, 0xc5, 0x25, 0xe7,
-0x74, 0x96, 0x89, 0x29, 0x75, 0x5b, 0x9e, 0xee,
-0x7f, 0x97, 0xfb, 0x9c, 0xd0, 0x16, 0x5d, 0xe7,
-0x1c, 0xb1, 0x3f, 0x4f, 0x8a, 0x58, 0x3f, 0xf0,
-0x20, 0x1a, 0xe3, 0xfd, 0xae, 0x08, 0x48, 0x12,
-0x5c, 0xdb, 0xf4, 0x23, 0x8e, 0xb3, 0xfb, 0xa2,
-0x1e, 0xc5, 0xfd, 0x89, 0x64, 0xe6, 0x4f, 0x49,
-0xa4, 0xff, 0x6c, 0xda, 0x5d, 0x73, 0xb2, 0x46,
-0x98, 0xfb, 0x53, 0x40, 0xbe, 0x21, 0x23, 0xd0,
-0xab, 0x5e, 0xb3, 0x5a, 0x1d, 0xb7, 0x15, 0x5c,
-0x16, 0x71, 0x52, 0xce, 0x3d, 0x4e, 0xff, 0xb5,
-0xf5, 0x10, 0xf7, 0xca, 0xcf, 0x59, 0xd5, 0x99,
-0x4e, 0x54, 0x20, 0xbc, 0xf1, 0x9e, 0x51, 0x39,
-0x0f, 0xb1, 0x1f, 0x8e, 0x37, 0x8a, 0x56, 0x42,
-0x8c, 0x72, 0x5b, 0x0d, 0x24, 0xf9, 0x7e, 0xda,
-0x82, 0x6c, 0x5e, 0xe3, 0x9c, 0x65, 0xe5, 0xaf,
-0xa0, 0x68, 0xbc, 0x25, 0x26, 0x7e, 0xe6, 0xdc,
-0x6d, 0x8b, 0xf4, 0x5f, 0xc9, 0x75, 0xde, 0x4d,
-0x9c, 0xfe, 0xd3, 0xbf, 0xb1, 0x2d, 0x1a, 0x13,
-0x03, 0x15, 0xce, 0x42, 0xee, 0x37, 0x24, 0xda,
-0x2c, 0x9d, 0x0c, 0x46, 0xe1, 0xc3, 0x07, 0x66,
-0x57, 0x37, 0xa9, 0xcf, 0xd9, 0xea, 0x3f, 0x56,
-0x10, 0x14, 0xdb, 0x4c, 0x49, 0x90, 0x63, 0xff,
-0xad, 0x3d, 0xc6, 0xd4, 0x0c, 0xaf, 0x90, 0x57,
-0x7e, 0xa1, 0x5a, 0xf7, 0x16, 0xaa, 0x94, 0xad,
-0x39, 0x9f, 0xd4, 0x76, 0x72, 0x14, 0xf0, 0x1e,
-0x36, 0x3c, 0x7e, 0xbb, 0xd0, 0xc9, 0x26, 0x47,
-0x4b, 0x66, 0x28, 0xca, 0x73, 0x16, 0xe4, 0xca,
-0xdf, 0x7a, 0xb2, 0x95, 0x8e, 0x2e, 0x33, 0xfe,
-0x58, 0xee, 0xe3, 0x6b, 0xbc, 0x5a, 0x07, 0x3f,
-0xf7, 0x3d, 0x9b, 0x4a, 0x02, 0xcf, 0xec, 0xa9,
-0x52, 0xa1, 0x0d, 0xdc, 0xa8, 0x2a, 0x70, 0xc2,
-0xa7, 0x3e, 0xc3, 0x2d, 0xbc, 0x5a, 0xfb, 0xdb,
-0x8b, 0x9b, 0xb1, 0xe7, 0x8d, 0x31, 0xf6, 0x9f,
-0x31, 0xe5, 0x6d, 0x3e, 0xd8, 0x1a, 0xbf, 0x4f,
-0x8d, 0x7f, 0x23, 0xfd, 0xb7, 0xe6, 0x98, 0x88,
-0xfd, 0x97, 0x5c, 0x2e, 0x45, 0xfd, 0xfc, 0xa1,
-0xc7, 0xe8, 0x9a, 0x2a, 0xe6, 0xf0, 0xea, 0x65,
-0xd7, 0x89, 0x85, 0x48, 0x1b, 0x14, 0x09, 0xa0,
-0xb1, 0xff, 0x36, 0x90, 0x33, 0x16, 0x8e, 0xd3,
-0x76, 0x91, 0xd8, 0x7f, 0x1b, 0x2c, 0xa0, 0x58,
-0xa5, 0x1d, 0xf6, 0x13, 0xb7, 0x5c, 0x5b, 0x4f,
-0xb1, 0xef, 0xf7, 0x4c, 0x1c, 0x21, 0xb5, 0x33,
-0xe6, 0xfa, 0xc9, 0xa1, 0x74, 0xf1, 0xd0, 0x23,
-0xd3, 0x85, 0xf7, 0xbf, 0xf2, 0xfe, 0x1f, 0xe4,
-0x26, 0xfe, 0xc1, 0xe9, 0x6d, 0xb1, 0x15, 0x75,
-0x17, 0x9b, 0x6f, 0xff, 0x29, 0xfd, 0xb7, 0x9e,
-0xab, 0x73, 0x7e, 0x21, 0x49, 0x15, 0x6e, 0x7d,
-0x6a, 0x64, 0xb8, 0xd7, 0x9c, 0xa3, 0x7f, 0xa0,
-0x35, 0x72, 0x4a, 0x24, 0x8e, 0x0f, 0x35, 0x24,
-0xac, 0x6c, 0x3f, 0x38, 0xfe, 0x71, 0x2b, 0x3a,
-0xb5, 0x38, 0x67, 0xa3, 0xe1, 0xc6, 0x33, 0x15,
-0x8e, 0xfb, 0xbe, 0xec, 0x7f, 0xba, 0xbb, 0x32,
-0x0a, 0xd8, 0x96, 0xf4, 0xf8, 0xb7, 0xb6, 0x9e,
-0x18, 0x7e, 0x9e, 0x32, 0xdd, 0xa2, 0x07, 0x5f,
-0x45, 0x7b, 0x7e, 0xec, 0xc0, 0x40, 0x45, 0x97,
-0x49, 0xc0, 0xad, 0xb3, 0x26, 0x2a, 0xa6, 0x64,
-0x10, 0xdc, 0xbb, 0xeb, 0xd8, 0x7b, 0x0d, 0x99,
-0x7d, 0xf4, 0x7f, 0x33, 0xb1, 0x4d, 0x25, 0x38,
-0xbc, 0xab, 0x7f, 0xbe, 0xfe, 0x6b, 0x8d, 0x6b,
-0xcb, 0x64, 0xad, 0xff, 0x32, 0xfa, 0x4f, 0xa3,
-0x17, 0x2e, 0x28, 0x35, 0x38, 0x77, 0xfa, 0xe8,
-0x33, 0xfd, 0x55, 0x5d, 0xa2, 0xba, 0x78, 0x43,
-0x16, 0xf9, 0xb7, 0x58, 0x6d, 0x60, 0xdf, 0x5b,
-0x33, 0xbf, 0x17, 0x5a, 0xed, 0x75, 0xf8, 0xd9,
-0xc8, 0xd1, 0xf5, 0x24, 0xc4, 0xff, 0xc7, 0xc3,
-0x13, 0xbe, 0x51, 0x31, 0x79, 0x97, 0x65, 0xc4,
-0xc2, 0x43, 0x7e, 0xea, 0x96, 0x6b, 0x6c, 0x1d,
-0x97, 0xa7, 0xe5, 0xcf, 0x24, 0x4b, 0x0a, 0xb1,
-0x38, 0x33, 0x76, 0x60, 0x30, 0xfa, 0x39, 0x8a,
-0xe8, 0x59, 0xbc, 0xb8, 0xb0, 0x58, 0xb5, 0x7f,
-0x68, 0xe4, 0xf4, 0x5c, 0x5d, 0xc8, 0x4e, 0xbf,
-0x6d, 0x78, 0xdf, 0x79, 0x66, 0xdb, 0xc0, 0xb6,
-0x6d, 0xd1, 0xb6, 0xc1, 0x8f, 0xc1, 0x94, 0xfd,
-0x77, 0x7a, 0xdb, 0x7a, 0x62, 0xc8, 0x59, 0x90,
-0xa0, 0x23, 0x91, 0xed, 0x96, 0x92, 0xb0, 0x96,
-0x10, 0x37, 0x17, 0x66, 0x4e, 0xbf, 0x35, 0xf2,
-0xea, 0x91, 0x91, 0x23, 0xaf, 0xbe, 0xf2, 0xfa,
-0xc9, 0x73, 0x17, 0xaf, 0xdf, 0x16, 0x2d, 0x3d,
-0x2d, 0x55, 0xb4, 0xca, 0xd9, 0x21, 0x4f, 0xdc,
-0x45, 0xae, 0x7e, 0xec, 0x3f, 0xfd, 0x2e, 0xa6,
-0xee, 0xa2, 0x80, 0xf4, 0xc7, 0xc0, 0x8f, 0x8f,
-0xf9, 0x8a, 0xbe, 0xb1, 0x63, 0x3d, 0xc5, 0xf4,
-0x72, 0xc1, 0x93, 0x08, 0xda, 0xfe, 0x50, 0xa5,
-0xd4, 0xbc, 0x7d, 0xfd, 0xe2, 0xb9, 0x93, 0x47,
-0x47, 0x74, 0x29, 0x1d, 0x79, 0xf5, 0x57, 0xef,
-0xfe, 0x76, 0xe1, 0xc6, 0xb2, 0x68, 0xe9, 0x39,
-0x3f, 0xb1, 0x29, 0xc7, 0xbc, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x4f, 0xc5,
-0xff, 0x02, 0x04, 0xc4, 0x15, 0x0c, 0x36, 0xb4,
-0x04, 0x00,
diff --git a/board/esd/ar405/Kconfig b/board/esd/ar405/Kconfig
deleted file mode 100644 (file)
index 4ad9d51..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_AR405
-
-config SYS_BOARD
-       default "ar405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "AR405"
-
-endif
diff --git a/board/esd/ar405/MAINTAINERS b/board/esd/ar405/MAINTAINERS
deleted file mode 100644 (file)
index be74ff7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-AR405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/ar405/
-F:     include/configs/AR405.h
-F:     configs/AR405_defconfig
diff --git a/board/esd/ar405/Makefile b/board/esd/ar405/Makefile
deleted file mode 100644 (file)
index dd54f54..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = ar405.o flash.o ../common/misc.o
diff --git a/board/esd/ar405/ar405.c b/board/esd/ar405/ar405.c
deleted file mode 100644 (file)
index d33aba4..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include "ar405.h"
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-const unsigned char fpgadata_xl30[] = {
-#include "fpgadata_xl30.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
-       int index, len, i;
-       int status;
-
-#ifdef FPGA_DEBUG
-       /* set up serial port with default baudrate */
-       (void) get_clocks ();
-       gd->baudrate = CONFIG_BAUDRATE;
-       serial_init ();
-       console_init_f ();
-#endif
-
-       /*
-        * Boot onboard FPGA
-        */
-       /* first try 40er image */
-       gd->board_type = 40;
-       status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
-       if (status != 0) {
-               /* try xl30er image */
-               gd->board_type = 30;
-               status = fpga_boot ((unsigned char *) fpgadata_xl30, sizeof (fpgadata_xl30));
-               if (status != 0) {
-                       /* booting FPGA failed */
-#ifndef FPGA_DEBUG
-                       /* set up serial port with default baudrate */
-                       (void) get_clocks ();
-                       gd->baudrate = CONFIG_BAUDRATE;
-                       serial_init ();
-                       console_init_f ();
-#endif
-                       printf ("\nFPGA: Booting failed ");
-                       switch (status) {
-                       case ERROR_FPGA_PRG_INIT_LOW:
-                               printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                               break;
-                       case ERROR_FPGA_PRG_INIT_HIGH:
-                               printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                               break;
-                       case ERROR_FPGA_PRG_DONE:
-                               printf ("(Timeout: DONE not high after programming FPGA)\n ");
-                               break;
-                       }
-
-                       /* display infos on fpgaimage */
-                       index = 15;
-                       for (i = 0; i < 4; i++) {
-                               len = fpgadata[index];
-                               printf ("FPGA: %s\n", &(fpgadata[index + 1]));
-                               index += len + 3;
-                       }
-                       putc ('\n');
-                       /* delayed reboot */
-                       for (i = 20; i > 0; i--) {
-                               printf ("Rebooting in %2d seconds \r", i);
-                               for (index = 0; index < 1000; index++)
-                                       udelay (1000);
-                       }
-                       putc ('\n');
-                       do_reset (NULL, 0, 0, NULL);
-               }
-       }
-
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);     /* disable all ints */
-       mtdcr (UIC0CR, 0x00000000);     /* set all to be non-critical */
-       mtdcr (UIC0PR, 0xFFFFFF81);     /* set int polarities */
-       mtdcr (UIC0TR, 0x10000000);     /* set int trigger levels */
-       mtdcr (UIC0VCR, 0x00000001);    /* set vect base=0,INT0 highest priority */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-
-       out_be16((void *)0xf03000ec, 0x0fff); /* enable interrupts in fpga */
-
-       return 0;
-}
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       int index;
-       int len;
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof (str));
-       const unsigned char *fpga;
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming AR405");
-       } else {
-               puts(str);
-       }
-
-       puts ("\nFPGA:  ");
-
-       /* display infos on fpgaimage */
-       if (gd->board_type == 30) {
-               fpga = fpgadata_xl30;
-       } else {
-               fpga = fpgadata;
-       }
-       index = 15;
-       for (i = 0; i < 4; i++) {
-               len = fpga[index];
-               printf ("%s ", &(fpga[index + 1]));
-               index += len + 3;
-       }
-
-       putc ('\n');
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-
-       return 0;
-}
-
-
-#if 1 /* test-only: some internal test routines... */
-#define DIGEN  ((void *)0xf03000b4) /* u8 */
-#define DIGOUT ((void *)0xf03000b0) /* u16 */
-#define DIGIN  ((void *)0xf03000a0) /* u16 */
-
-/*
- * Some test routines
- */
-int do_digtest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int i;
-       int k;
-       int start;
-       int end;
-
-       if (argc != 3) {
-               puts("Usage: digtest n_start n_end (digtest 0 7)\n");
-               return 0;
-       }
-
-       start = simple_strtol (argv[1], NULL, 10);
-       end = simple_strtol (argv[2], NULL, 10);
-
-       /*
-        * Enable digital outputs
-        */
-       out_8(DIGEN, 0x08);
-
-       printf("\nStarting digital In-/Out Test from I/O %d to %d (Cntrl-C to abort)...\n",
-              start, end);
-
-       /*
-        * Set outputs one by one
-        */
-       for (;;) {
-               for (i=start; i<=end; i++) {
-                       out_be16(DIGOUT, 0x0001 << i);
-                       for (k=0; k<200; k++)
-                               udelay(1000);
-
-                       if (in_be16(DIGIN) != (0x0001 << i)) {
-                               printf("ERROR: OUT=0x%04X, IN=0x%04X\n",
-                                      0x0001 << i, in_be16(DIGIN));
-                               return 0;
-                       }
-
-                       /* Abort if ctrl-c was pressed */
-                       if (ctrlc()) {
-                               puts("\nAbort\n");
-                               return 0;
-                       }
-               }
-       }
-
-       return 0;
-}
-U_BOOT_CMD(
-       digtest,        3,      1,      do_digtest,
-       "Test digital in-/output",
-       ""
-);
-
-#define ERROR_DELTA     256
-
-struct io {
-       short val;
-       short dummy;
-};
-
-int do_anatest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       short val;
-       int i;
-       int volt;
-       struct io *out;
-       struct io *in;
-
-       out = (struct io *)0xf0300090;
-       in = (struct io *)0xf0300000;
-
-       i = simple_strtol (argv[1], NULL, 10);
-
-       volt = 0;
-       printf("Setting Channel %d to %dV...\n", i, volt);
-       out_be16((void *)&(out[i].val), (volt * 0x7fff) / 10);
-       udelay(10000);
-       val = in_be16((void *)&(in[i*2].val));
-       printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);
-       if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
-           (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
-               printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
-                      ((volt * 0x7fff) / 40) + ERROR_DELTA);
-               return -1;
-       }
-       val = in_be16((void *)&(in[i*2+1].val));
-       printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);
-       if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
-           (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
-               printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
-                      ((volt * 0x7fff) / 40) + ERROR_DELTA);
-               return -1;
-       }
-
-       volt = 5;
-       printf("Setting Channel %d to %dV...\n", i, volt);
-       out_be16((void *)&(out[i].val), (volt * 0x7fff) / 10);
-       udelay(10000);
-       val = in_be16((void *)&(in[i*2].val));
-       printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);
-       if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
-           (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
-               printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
-                      ((volt * 0x7fff) / 40) + ERROR_DELTA);
-               return -1;
-       }
-       val = in_be16((void *)&(in[i*2+1].val));
-       printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);
-       if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
-           (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
-               printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
-                      ((volt * 0x7fff) / 40) + ERROR_DELTA);
-               return -1;
-       }
-
-       volt = 10;
-       printf("Setting Channel %d to %dV...\n", i, volt);
-       out_be16((void *)&(out[i].val), (volt * 0x7fff) / 10);
-       udelay(10000);
-       val = in_be16((void *)&(in[i*2].val));
-       printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);
-       if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
-           (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
-               printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
-                      ((volt * 0x7fff) / 40) + ERROR_DELTA);
-               return -1;
-       }
-       val = in_be16((void *)&(in[i*2+1].val));
-       printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);
-       if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
-           (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
-               printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
-                      ((volt * 0x7fff) / 40) + ERROR_DELTA);
-               return -1;
-       }
-
-       printf("Channel %d OK!\n", i);
-
-       return 0;
-}
-U_BOOT_CMD(
-       anatest,        2,      1,      do_anatest,
-       "Test analog in-/output",
-       ""
-);
-
-
-int counter = 0;
-
-void cyclicInt(void *ptr)
-{
-       out_be16((void *)0xf03000e8, 0x0800); /* ack int */
-       counter++;
-}
-
-
-int do_inctest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong *incin;
-       int i;
-
-       incin = (ulong *)0xf0300040;
-
-       /*
-        * Clear inc counter
-        */
-       out_be32((void *)&incin[0], 0);
-       out_be32((void *)&incin[1], 0);
-       out_be32((void *)&incin[2], 0);
-       out_be32((void *)&incin[3], 0);
-
-       incin = (ulong *)0xf0300050;
-
-       /*
-        * Inc a little
-        */
-       for (i=0; i<10000; i++) {
-               switch (i & 0x03) {
-               case 0:
-                       out_8(DIGEN, 0x02);
-                       break;
-               case 1:
-                       out_8(DIGEN, 0x03);
-                       break;
-               case 2:
-                       out_8(DIGEN, 0x01);
-                       break;
-               case 3:
-                       out_8(DIGEN, 0x00);
-                       break;
-               }
-               udelay(10);
-       }
-
-       printf("Inc 0 = %d\n", in_be32((void *)&incin[0]));
-       printf("Inc 1 = %d\n", in_be32((void *)&incin[1]));
-       printf("Inc 2 = %d\n", in_be32((void *)&incin[2]));
-       printf("Inc 3 = %d\n", in_be32((void *)&incin[3]));
-
-       out_be16((void *)0xf03000e0, 0x0c80-1); /* set counter */
-       out_be16((void *)0xf03000ec,
-                in_be16((void *)0xf03000ec) | 0x0800); /* enable int */
-       irq_install_handler (30, (interrupt_handler_t *) cyclicInt, NULL);
-       printf("counter=%d\n", counter);
-
-       return 0;
-}
-U_BOOT_CMD(
-       inctest,        3,      1,      do_inctest,
-       "Test incremental encoder inputs",
-       ""
-);
-#endif
diff --git a/board/esd/ar405/ar405.h b/board/esd/ar405/ar405.h
deleted file mode 100644 (file)
index 75e7950..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- *                          Start Address    Length
- * +-----------------------+ 0x4000_0000     Start of Flash -----------------
- * | MON8xx code           | 0x4000_0100     Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused)              |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses    |                 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) |                 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address          |                 0x04
- * +-----------------------+ 0x4001_FFC0                     ^
- * | Hardware Information  |                 0x40            | MON8xx
- * +=======================+ 0x4002_0000 (sector border)    -----------------
- * | Autostart Header      |                                 | Applications
- * | ...                   |                                 v
- *
- *****************************************************************************/
diff --git a/board/esd/ar405/flash.c b/board/esd/ar405/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/ar405/fpgadata.c b/board/esd/ar405/fpgadata.c
deleted file mode 100644 (file)
index 055ab6b..0000000
+++ /dev/null
@@ -1,5500 +0,0 @@
-0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0,
-0x0f, 0xf0, 0x00, 0x00, 0x01, 0x61, 0x00, 0x0d,
-0x70, 0x70, 0x63, 0x5f, 0x61, 0x72, 0x30, 0x31,
-0x2e, 0x6e, 0x63, 0x64, 0x00, 0x62, 0x00, 0x0b,
-0x73, 0x34, 0x30, 0x78, 0x6c, 0x70, 0x71, 0x32,
-0x34, 0x30, 0x00, 0x63, 0x00, 0x0b, 0x32, 0x30,
-0x30, 0x31, 0x2f, 0x30, 0x32, 0x2f, 0x31, 0x34,
-0x00, 0x64, 0x00, 0x09, 0x31, 0x35, 0x3a, 0x34,
-0x30, 0x3a, 0x30, 0x34, 0x00, 0x65, 0xe2, 0x01,
-0x00, 0x00, 0xab, 0x8e, 0xff, 0x30, 0xe5, 0xe5,
-0xe8, 0xe5, 0x03, 0xe8, 0x04, 0x01, 0x02, 0x11,
-0x09, 0x09, 0x01, 0x07, 0x02, 0x04, 0x04, 0x06,
-0x09, 0x07, 0x04, 0x04, 0x04, 0x04, 0x03, 0x07,
-0x02, 0x04, 0x09, 0x04, 0x04, 0x0b, 0x09, 0x09,
-0x03, 0x07, 0x02, 0x09, 0x04, 0x04, 0x04, 0x04,
-0x0e, 0x04, 0x04, 0x09, 0x03, 0x07, 0x02, 0x04,
-0x03, 0x03, 0x03, 0x07, 0xe5, 0x01, 0x0d, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x19, 0x03, 0x02, 0x02, 0x03, 0x02, 0x08, 0x09,
-0x07, 0x13, 0x03, 0x11, 0x02, 0x06, 0x03, 0x05,
-0x03, 0x05, 0x11, 0x1d, 0x1f, 0x13, 0x10, 0x01,
-0x01, 0xe3, 0x4c, 0xe5, 0x01, 0x0a, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x09, 0x04, 0x04, 0x02, 0x06, 0x01, 0xe5, 0x05,
-0x01, 0x02, 0x04, 0x04, 0x04, 0x09, 0x09, 0x09,
-0x09, 0x04, 0x06, 0x01, 0x07, 0x09, 0x04, 0x04,
-0x09, 0x06, 0x02, 0x09, 0x09, 0x04, 0x01, 0xe7,
-0x03, 0x04, 0x07, 0xe6, 0x08, 0x09, 0x09, 0x0e,
-0x01, 0xe6, 0x13, 0x09, 0x09, 0x09, 0x03, 0x05,
-0x03, 0x05, 0x09, 0x09, 0x09, 0x09, 0xe5, 0x07,
-0x03, 0x05, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0x0b,
-0xe5, 0x07, 0xe5, 0x07, 0x09, 0x03, 0x05, 0xe6,
-0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0xe5, 0xe6, 0x04, 0x03, 0x05, 0xe5, 0xe6, 0x04,
-0xe5, 0x07, 0x03, 0x05, 0xe5, 0x07, 0x0b, 0x01,
-0x0e, 0x05, 0x03, 0x05, 0x03, 0x05, 0x1d, 0x03,
-0x05, 0x03, 0x44, 0xe5, 0xe5, 0x2e, 0x1c, 0x01,
-0x13, 0x32, 0x01, 0xe3, 0x4d, 0xe5, 0x0f, 0x09,
-0x09, 0x27, 0x09, 0x42, 0x04, 0x4a, 0x44, 0x01,
-0x01, 0x01, 0x12, 0x09, 0x09, 0x01, 0x06, 0x01,
-0x12, 0x09, 0x0a, 0x09, 0x11, 0x21, 0x13, 0x11,
-0x15, 0x1d, 0x1b, 0x0c, 0x0d, 0x03, 0x03, 0x01,
-0x31, 0x31, 0x47, 0x81, 0xe5, 0xe5, 0xe5, 0x77,
-0x3e, 0xe5, 0x19, 0xe5, 0x1b, 0x3b, 0xe5, 0xe5,
-0x5a, 0x3d, 0x1f, 0x74, 0xe6, 0xe5, 0x28, 0x5b,
-0x09, 0xe5, 0x0a, 0x08, 0xe5, 0x08, 0x1d, 0x11,
-0xe6, 0x37, 0x12, 0x01, 0x01, 0x09, 0x06, 0x09,
-0x09, 0x09, 0xe5, 0x07, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x01, 0x03, 0x03, 0x03, 0x05,
-0x05, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0xe5,
-0x07, 0x09, 0x09, 0x09, 0x05, 0x03, 0x09, 0x09,
-0x09, 0x10, 0xe5, 0x0f, 0x09, 0x09, 0x04, 0x04,
-0x09, 0x09, 0x05, 0x03, 0x05, 0x03, 0x01, 0x07,
-0x09, 0x09, 0x09, 0x09, 0x07, 0x01, 0x07, 0xe5,
-0x01, 0x07, 0x01, 0x06, 0x02, 0x09, 0x05, 0x03,
-0x06, 0x02, 0x09, 0x05, 0x01, 0x01, 0x01, 0x07,
-0x05, 0x03, 0x09, 0x09, 0x09, 0x04, 0x04, 0x0e,
-0x01, 0xe5, 0x02, 0x09, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03, 0xe5, 0x01,
-0x01, 0x03, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0xe5, 0x05, 0x09, 0x09, 0x01, 0x02, 0x06, 0x04,
-0x04, 0x09, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0x09, 0xe5, 0x07, 0x09, 0xe5, 0x02, 0x04, 0xe5,
-0x01, 0x05, 0x09, 0x09, 0xe5, 0x07, 0xe5, 0x04,
-0x0b, 0x01, 0x10, 0x09, 0x09, 0x09, 0x09, 0x05,
-0x03, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06,
-0x02, 0x06, 0x02, 0x06, 0xe6, 0x01, 0x06, 0x02,
-0x06, 0x02, 0x09, 0x09, 0x03, 0x02, 0x02, 0x09,
-0x06, 0x02, 0x09, 0x09, 0x06, 0x02, 0x06, 0x02,
-0x09, 0x09, 0x0d, 0x02, 0xe5, 0x02, 0x01, 0xe5,
-0x05, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03, 0xe5,
-0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x02, 0x04, 0xe5, 0x03, 0x03, 0x05, 0x03,
-0x0b, 0x04, 0xe5, 0x02, 0x06, 0x02, 0x09, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0x05, 0x03, 0xe5, 0x03,
-0x03, 0x05, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0x09,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0x02, 0x03, 0xe5,
-0xe6, 0x08, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x01,
-0xe5, 0x05, 0x06, 0x09, 0x07, 0xe6, 0x08, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x03,
-0x0a, 0x09, 0x08, 0x01, 0x03, 0x06, 0x08, 0x09,
-0x09, 0x0a, 0x08, 0x0a, 0x07, 0xe5, 0x08, 0x0a,
-0x09, 0x08, 0x09, 0x11, 0xe5, 0xe5, 0x01, 0x0a,
-0x02, 0x04, 0x01, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x01, 0x04, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x08, 0x02, 0x05, 0xe5, 0x01, 0x06, 0x02, 0x05,
-0xe5, 0x01, 0x04, 0x01, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x01, 0x04, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x05, 0xe5, 0x01, 0x06, 0x02, 0x06,
-0x02, 0x08, 0x04, 0xe5, 0xe6, 0x02, 0x11, 0x04,
-0xe6, 0x24, 0x09, 0xe5, 0x2f, 0x06, 0xe5, 0xe5,
-0x05, 0x0e, 0x06, 0xe5, 0x10, 0x17, 0x09, 0x06,
-0x02, 0x45, 0x03, 0x02, 0xe5, 0x15, 0x0f, 0x13,
-0x27, 0x1e, 0x05, 0x02, 0x01, 0x01, 0x05, 0x08,
-0x3c, 0x06, 0x01, 0x45, 0x04, 0xe8, 0x11, 0x01,
-0xe5, 0x07, 0x15, 0x13, 0x23, 0x22, 0xe5, 0x04,
-0x01, 0x06, 0x2e, 0x13, 0x1d, 0x2d, 0xe5, 0xe6,
-0x18, 0x02, 0x0c, 0x17, 0x09, 0x31, 0x0d, 0xe5,
-0x0c, 0x31, 0xe7, 0x58, 0x04, 0xe5, 0xe6, 0x0f,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x01, 0x02,
-0xe5, 0x02, 0x09, 0x09, 0x05, 0x03, 0x05, 0x03,
-0xe5, 0x07, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x01,
-0x03, 0x03, 0x07, 0x01, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0f, 0xe6, 0x13, 0x1d,
-0x03, 0x01, 0x1a, 0x13, 0xe5, 0xe5, 0x0f, 0x01,
-0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x06, 0xe6,
-0xe5, 0x05, 0x02, 0x06, 0x01, 0xe5, 0x09, 0x12,
-0x09, 0x10, 0x0a, 0x01, 0x08, 0xe5, 0x0f, 0x01,
-0xe5, 0x17, 0xe5, 0xe5, 0x50, 0x01, 0x07, 0x09,
-0x01, 0x14, 0x05, 0x01, 0x08, 0x0a, 0x0a, 0x02,
-0x09, 0x0d, 0x0b, 0x14, 0x4e, 0xe5, 0x01, 0x3c,
-0x0b, 0x12, 0x34, 0x0b, 0x06, 0x01, 0x0e, 0x18,
-0x04, 0x04, 0x04, 0x0f, 0x27, 0x19, 0x02, 0xe5,
-0x05, 0x67, 0x09, 0x3d, 0x33, 0x07, 0x1d, 0x17,
-0x05, 0xe5, 0xe6, 0x05, 0x15, 0x5b, 0x35, 0x81,
-0xe6, 0x34, 0x01, 0x07, 0x1d, 0xe6, 0x06, 0x01,
-0x0b, 0x05, 0x01, 0x0b, 0x0b, 0x2d, 0x01, 0x07,
-0x0b, 0x05, 0x03, 0x11, 0xe6, 0x1a, 0x01, 0x03,
-0x17, 0xe5, 0x1a, 0x1c, 0x09, 0x24, 0x01, 0x11,
-0x01, 0x0e, 0x07, 0x15, 0x1b, 0x09, 0x03, 0x21,
-0x1c, 0x01, 0x18, 0x01, 0x01, 0x35, 0x20, 0x01,
-0x04, 0x01, 0x13, 0x0d, 0x0b, 0x12, 0x10, 0x02,
-0x0a, 0x03, 0x11, 0x01, 0x09, 0x02, 0x03, 0x07,
-0x06, 0x2a, 0x0c, 0x02, 0x1a, 0x0a, 0x08, 0x13,
-0x09, 0x10, 0xe5, 0xe5, 0x0b, 0x03, 0xe5, 0x0e,
-0x07, 0x1e, 0x03, 0x01, 0x12, 0x0f, 0x02, 0x01,
-0x02, 0x17, 0x02, 0x01, 0x02, 0x11, 0x0d, 0x13,
-0xe5, 0x01, 0x27, 0xe5, 0x33, 0x07, 0x0d, 0x3b,
-0x02, 0x0b, 0x09, 0x0e, 0x03, 0x1c, 0x35, 0x01,
-0xe6, 0x64, 0x09, 0x2a, 0x03, 0x06, 0x01, 0x03,
-0x07, 0x02, 0x2b, 0x05, 0x20, 0xe6, 0x24, 0xe5,
-0xe5, 0x06, 0x43, 0x0e, 0x37, 0x01, 0x28, 0x23,
-0x27, 0x0c, 0x15, 0xe5, 0xe6, 0x68, 0x0c, 0x03,
-0x02, 0x13, 0x05, 0x02, 0x14, 0x01, 0x0b, 0x03,
-0x07, 0x08, 0x06, 0x16, 0x06, 0x36, 0xe5, 0xe6,
-0x60, 0x07, 0x13, 0x02, 0x10, 0x0d, 0x11, 0x02,
-0x20, 0x10, 0x01, 0x0c, 0x01, 0x02, 0x34, 0xe7,
-0x09, 0x06, 0x58, 0x10, 0x01, 0x11, 0x01, 0x1f,
-0x04, 0x08, 0x17, 0x18, 0x04, 0x2c, 0x0b, 0x03,
-0xe6, 0x6e, 0x37, 0x0f, 0x02, 0x03, 0xe5, 0xe5,
-0x04, 0xe5, 0x06, 0x01, 0xe5, 0x03, 0xe5, 0xe6,
-0x05, 0x08, 0xe6, 0x03, 0x05, 0xe5, 0x07, 0xe5,
-0x05, 0x1e, 0xe7, 0xe6, 0x01, 0x01, 0x6c, 0x13,
-0xe5, 0x21, 0xe5, 0x0d, 0x04, 0x04, 0x04, 0x01,
-0x01, 0x07, 0xe5, 0xe5, 0x04, 0xe5, 0x0f, 0x05,
-0xe6, 0x03, 0xe5, 0x06, 0xe5, 0x21, 0x01, 0x06,
-0x04, 0x6c, 0x10, 0xe5, 0x16, 0x06, 0x01, 0xe5,
-0xe5, 0x0b, 0x04, 0x06, 0xe5, 0x10, 0xe5, 0x05,
-0xe5, 0x07, 0x0c, 0xe5, 0x18, 0x1b, 0x05, 0x01,
-0xe5, 0x01, 0x57, 0x16, 0x10, 0x13, 0xe5, 0x04,
-0x07, 0x01, 0x04, 0xe5, 0xe5, 0x08, 0x06, 0x12,
-0xe5, 0x1c, 0x38, 0x03, 0xe5, 0xe5, 0x5a, 0x27,
-0x03, 0x22, 0x06, 0xe5, 0x04, 0xe5, 0x06, 0x01,
-0x0e, 0x07, 0x02, 0x02, 0x05, 0x0c, 0x01, 0x01,
-0x02, 0xe5, 0x01, 0x05, 0x09, 0x1f, 0xe5, 0xe6,
-0x01, 0x5e, 0x13, 0x0f, 0x03, 0x04, 0x10, 0x01,
-0x02, 0x04, 0x08, 0x02, 0x01, 0xe6, 0x02, 0x05,
-0x03, 0x0f, 0x02, 0x02, 0x02, 0x14, 0x01, 0x02,
-0x01, 0x01, 0x2c, 0x02, 0x01, 0x01, 0xe5, 0x5b,
-0x01, 0x2d, 0x0d, 0x09, 0x01, 0x03, 0xe5, 0x03,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0x11, 0x02, 0x0e,
-0x0b, 0x01, 0x02, 0x0b, 0x09, 0xe5, 0xe5, 0xe5,
-0x19, 0xe5, 0x02, 0x5d, 0x01, 0x3a, 0x02, 0x07,
-0x01, 0x01, 0xe5, 0xe5, 0x01, 0x02, 0x06, 0x17,
-0xe8, 0xe5, 0x01, 0x0a, 0xe5, 0x0d, 0x0e, 0x09,
-0x1f, 0xe5, 0xe6, 0x6c, 0xe5, 0x25, 0x12, 0x04,
-0x04, 0x02, 0x09, 0x10, 0x09, 0x09, 0x1d, 0x09,
-0x21, 0xe8, 0x63, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x0f, 0xe5, 0x0d, 0x07, 0xe6, 0x06, 0x05, 0xe5,
-0x0b, 0xe5, 0x03, 0xe5, 0x15, 0x05, 0xe5, 0x07,
-0xe5, 0x1f, 0x02, 0xe6, 0x0d, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x02, 0x02, 0x06, 0x01, 0x02, 0x02, 0x06,
-0xe5, 0x04, 0x02, 0xe5, 0x07, 0x06, 0x02, 0x02,
-0xe5, 0x04, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5,
-0x07, 0x09, 0x03, 0x05, 0xe6, 0x06, 0xe6, 0x06,
-0x09, 0x06, 0x06, 0x02, 0x01, 0x02, 0x59, 0x08,
-0x0a, 0x09, 0x10, 0x02, 0x06, 0x17, 0x13, 0x11,
-0x02, 0x1d, 0x30, 0xe5, 0x03, 0x05, 0xe5, 0x58,
-0x13, 0x0a, 0x13, 0x0d, 0x0e, 0x27, 0x03, 0x0f,
-0x0d, 0x2f, 0x0a, 0x01, 0x01, 0x5f, 0x07, 0x01,
-0x04, 0x02, 0x1c, 0x0c, 0x0c, 0xe6, 0x06, 0x06,
-0x01, 0x09, 0x0a, 0xe6, 0x06, 0x09, 0xe6, 0x0a,
-0x04, 0x0a, 0xe6, 0x06, 0xe6, 0x1e, 0xe8, 0x5b,
-0xe5, 0x01, 0x06, 0x01, 0xe5, 0x07, 0xe5, 0x08,
-0x09, 0x09, 0x03, 0x06, 0xe5, 0x09, 0x0f, 0x01,
-0xe5, 0x02, 0x02, 0x02, 0x0a, 0x13, 0x0f, 0x01,
-0x01, 0x09, 0x09, 0x19, 0xe5, 0x02, 0x01, 0xe8,
-0x66, 0x12, 0x1f, 0xe5, 0x0c, 0x01, 0x05, 0x06,
-0x2b, 0x03, 0x0e, 0x03, 0x09, 0x07, 0x16, 0x0a,
-0xe5, 0xe5, 0x14, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03,
-0x05, 0xe5, 0x05, 0xe7, 0x01, 0x04, 0xe6, 0x07,
-0xe5, 0x07, 0xe5, 0x02, 0x02, 0xe7, 0x07, 0xe5,
-0x05, 0xe7, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x02,
-0x02, 0xe7, 0x05, 0xe7, 0x07, 0xe5, 0x07, 0xe6,
-0x03, 0x01, 0xe8, 0x5e, 0x07, 0x01, 0x07, 0x02,
-0x10, 0x01, 0x16, 0x09, 0x09, 0xe5, 0x04, 0x01,
-0xe5, 0x07, 0x0a, 0x08, 0x0a, 0x09, 0xe5, 0x06,
-0x0a, 0x09, 0x1b, 0x08, 0xe5, 0x5c, 0x09, 0x01,
-0x09, 0x11, 0x01, 0x1c, 0x03, 0x01, 0xe5, 0x01,
-0x07, 0x01, 0xe5, 0xe5, 0x06, 0x0e, 0xe5, 0x01,
-0xe5, 0xe5, 0x0b, 0xe5, 0x01, 0x0a, 0x01, 0x02,
-0x09, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x1c,
-0xe7, 0x0b, 0x5a, 0x01, 0x0a, 0x06, 0x13, 0x0a,
-0x03, 0x0d, 0xe5, 0x02, 0x0a, 0x13, 0x03, 0xe5,
-0x0d, 0x03, 0xe5, 0x0c, 0x0a, 0x03, 0xe5, 0x07,
-0xe5, 0x1b, 0xe6, 0xe5, 0x66, 0x01, 0x0a, 0x29,
-0x03, 0x01, 0x06, 0x01, 0xe6, 0x01, 0x03, 0x01,
-0x03, 0x09, 0x0c, 0x01, 0xe5, 0x01, 0x0d, 0x01,
-0xe5, 0x02, 0x08, 0x0d, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x1b, 0xe5, 0xe5, 0x73, 0x1e, 0x1e, 0x06,
-0xe5, 0xe5, 0x05, 0x01, 0xe5, 0x11, 0xe5, 0x27,
-0x09, 0x23, 0xe5, 0x10, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x09, 0x01, 0xe5, 0x05,
-0x01, 0xe6, 0x04, 0x01, 0x03, 0x03, 0x01, 0xe5,
-0xe5, 0xe5, 0xe6, 0xe5, 0x06, 0xe6, 0x06, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x0a, 0xe5, 0x01, 0x20, 0x50, 0x01, 0xe5, 0x04,
-0x1d, 0x01, 0x02, 0xe5, 0xe5, 0x06, 0xe6, 0x01,
-0x01, 0x0b, 0x0c, 0x02, 0x04, 0x0e, 0x03, 0xe6,
-0x06, 0x0f, 0x03, 0xe7, 0x07, 0x20, 0xe6, 0xe6,
-0x08, 0x33, 0x26, 0x05, 0x06, 0x02, 0x17, 0x0f,
-0x05, 0x02, 0x0f, 0x0a, 0x0c, 0x07, 0x05, 0xe5,
-0xe5, 0xe5, 0xe6, 0x0d, 0x07, 0x04, 0x2c, 0x02,
-0xe7, 0x6b, 0x04, 0x20, 0x06, 0xe5, 0x07, 0x15,
-0x11, 0x1a, 0x02, 0x01, 0x13, 0x0d, 0x1e, 0x02,
-0xe6, 0x02, 0xe5, 0x5d, 0xe5, 0x01, 0xe6, 0x03,
-0x05, 0x08, 0x07, 0x01, 0x09, 0x09, 0x02, 0x09,
-0x03, 0x04, 0x02, 0x0b, 0x11, 0x01, 0x02, 0x01,
-0x53, 0xe5, 0x01, 0xe6, 0x66, 0x02, 0x10, 0x08,
-0x01, 0x03, 0x03, 0x08, 0xe6, 0x01, 0x11, 0x05,
-0xe5, 0x12, 0x0c, 0x02, 0x05, 0x4d, 0xe5, 0x01,
-0xe5, 0x11, 0x4c, 0x12, 0x02, 0x09, 0x15, 0x02,
-0x16, 0xe5, 0x08, 0x08, 0xe5, 0x11, 0xe5, 0x12,
-0x08, 0xe5, 0x01, 0x07, 0x0b, 0x09, 0x0a, 0x0a,
-0xe9, 0x42, 0x11, 0x24, 0x08, 0x07, 0x07, 0x09,
-0x09, 0x0b, 0x04, 0xe5, 0x02, 0x02, 0x01, 0x02,
-0xe5, 0x09, 0x01, 0x02, 0x01, 0xe5, 0x01, 0xe5,
-0x09, 0x01, 0xe5, 0x07, 0x01, 0x0e, 0x27, 0xe8,
-0x04, 0x22, 0x4b, 0x01, 0x06, 0x1b, 0xe5, 0x1a,
-0x04, 0x01, 0x07, 0x16, 0x0c, 0x01, 0x18, 0x15,
-0x17, 0x05, 0x16, 0x40, 0xe5, 0xe6, 0x2b, 0xe7,
-0x05, 0xe5, 0x15, 0x09, 0x0c, 0x04, 0xe5, 0xe5,
-0x06, 0xe6, 0x05, 0x01, 0x09, 0x05, 0x17, 0x1a,
-0x09, 0x02, 0x05, 0x59, 0x29, 0x06, 0x08, 0x05,
-0x11, 0x08, 0x03, 0x1b, 0x09, 0x07, 0x0f, 0x0d,
-0x23, 0xe6, 0xe5, 0x50, 0x0c, 0xe5, 0x19, 0x36,
-0x04, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0xe6,
-0x04, 0x10, 0x01, 0xe5, 0x0f, 0x01, 0x18, 0x09,
-0x13, 0x01, 0x01, 0x5f, 0x04, 0x04, 0x06, 0x13,
-0x02, 0x0c, 0x0b, 0x09, 0x06, 0x01, 0x02, 0x0b,
-0x02, 0x0a, 0x01, 0x03, 0x02, 0x09, 0x06, 0x0c,
-0x01, 0x07, 0x2c, 0xe8, 0x1b, 0x43, 0x08, 0x1d,
-0x0c, 0x05, 0x14, 0xe5, 0x0b, 0x06, 0x13, 0x0a,
-0x04, 0x0e, 0x06, 0x02, 0x06, 0x06, 0x1e, 0xe5,
-0x01, 0xe6, 0x71, 0xe6, 0x09, 0xe5, 0x05, 0xe5,
-0xe5, 0xe5, 0x03, 0x02, 0xe5, 0x05, 0x03, 0x01,
-0x04, 0x09, 0xe5, 0x06, 0xe5, 0x01, 0xe5, 0x03,
-0xe6, 0x07, 0x13, 0xe5, 0x14, 0xe5, 0x04, 0x09,
-0x1e, 0x02, 0x02, 0x02, 0x01, 0x5d, 0x12, 0xe5,
-0x09, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x03, 0xe5, 0x04, 0x01, 0x04, 0x02, 0x01, 0x04,
-0x05, 0x02, 0x03, 0xe5, 0x0e, 0x05, 0x05, 0xe5,
-0x1c, 0x01, 0x04, 0x09, 0x1b, 0x01, 0x03, 0xe5,
-0xe5, 0x03, 0x5f, 0x01, 0xe5, 0x03, 0x01, 0x01,
-0x07, 0x01, 0xe5, 0xe5, 0x10, 0x01, 0x0b, 0x18,
-0x01, 0x07, 0xe5, 0xe5, 0x02, 0xe5, 0x0a, 0x01,
-0x0e, 0x01, 0xe5, 0x03, 0x04, 0xe5, 0x02, 0x31,
-0x04, 0xe6, 0xe5, 0x01, 0x6b, 0x0c, 0x01, 0x0e,
-0xe5, 0xe5, 0xe5, 0x08, 0x19, 0xe5, 0x01, 0x06,
-0x13, 0x1d, 0xe5, 0x2f, 0x06, 0x05, 0xe5, 0x6e,
-0x01, 0x18, 0x09, 0x08, 0x06, 0x05, 0x04, 0x01,
-0x02, 0x07, 0x04, 0x04, 0x03, 0x01, 0x05, 0x02,
-0x04, 0x0b, 0x07, 0x09, 0x0b, 0x09, 0x16, 0x07,
-0xe9, 0x01, 0x68, 0x04, 0xe5, 0x02, 0x09, 0x13,
-0x07, 0x03, 0x01, 0x01, 0xe5, 0x09, 0x01, 0x01,
-0x08, 0x03, 0x01, 0x03, 0x05, 0x0a, 0x02, 0x03,
-0x01, 0x0a, 0x02, 0x09, 0x05, 0x2c, 0x02, 0xe6,
-0xe6, 0x65, 0x07, 0x12, 0x08, 0xe5, 0x01, 0x01,
-0x02, 0x08, 0x0c, 0xe6, 0x01, 0x01, 0x01, 0x07,
-0x02, 0x04, 0x01, 0x05, 0x08, 0x02, 0x15, 0x07,
-0x01, 0x05, 0x05, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x1a, 0x01, 0x02, 0x81, 0xe6, 0x04, 0xe5, 0xe5,
-0xe6, 0xe5, 0xe6, 0x05, 0x06, 0x06, 0xe5, 0xe5,
-0xe6, 0xe5, 0x01, 0x04, 0x02, 0x06, 0x02, 0x0a,
-0xe5, 0xe8, 0x01, 0x0a, 0xe5, 0x03, 0x02, 0x06,
-0x02, 0x0b, 0xe6, 0x06, 0xe6, 0x1d, 0x02, 0x6d,
-0x1a, 0x02, 0xe5, 0x04, 0x0b, 0x02, 0xe6, 0x03,
-0x09, 0x02, 0xe5, 0x04, 0x02, 0x02, 0x03, 0x09,
-0x09, 0x09, 0x02, 0xe5, 0x04, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x09, 0x1b, 0x04, 0x01, 0x02,
-0x60, 0x0f, 0x17, 0xe5, 0x07, 0xe5, 0x0a, 0x08,
-0xe5, 0x07, 0xe5, 0x15, 0xe5, 0x03, 0xe5, 0x0b,
-0x05, 0xe5, 0x0b, 0x0f, 0xe5, 0x01, 0x05, 0xe5,
-0x20, 0x02, 0xe5, 0x0d, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x02, 0x03, 0x02, 0xe5, 0x07, 0xe5, 0x04, 0x04,
-0x01, 0x07, 0xe5, 0x04, 0x02, 0xe6, 0x01, 0x01,
-0x02, 0xe5, 0xe5, 0x05, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x02, 0xe6, 0x01, 0xe5, 0x02, 0x01,
-0x02, 0xe5, 0xe6, 0x04, 0xe5, 0x04, 0x02, 0xe6,
-0xe5, 0x04, 0xe6, 0x06, 0x09, 0x0d, 0xe5, 0x02,
-0x02, 0x59, 0x09, 0x09, 0x09, 0x08, 0xe5, 0x11,
-0x15, 0xe5, 0x08, 0x09, 0x12, 0xe5, 0x12, 0x12,
-0xe5, 0x2b, 0x02, 0xe6, 0xe5, 0x58, 0x0b, 0x09,
-0x07, 0x0b, 0x05, 0x09, 0x15, 0x03, 0x07, 0x0b,
-0x0f, 0x03, 0x0f, 0x01, 0x15, 0x31, 0xe7, 0x59,
-0x02, 0x01, 0x01, 0x05, 0x13, 0x09, 0x01, 0xe7,
-0x06, 0xe6, 0x04, 0xe5, 0xe7, 0x07, 0xe6, 0x03,
-0x01, 0xe7, 0x06, 0x09, 0x03, 0x05, 0xe6, 0x02,
-0x03, 0x05, 0xe5, 0xe8, 0x06, 0x09, 0x06, 0x01,
-0xe7, 0x06, 0xe6, 0x20, 0x01, 0x5d, 0x01, 0xe5,
-0x07, 0xe5, 0x09, 0x04, 0x02, 0xe5, 0x04, 0xe5,
-0xe7, 0x01, 0x06, 0x07, 0x01, 0xe6, 0x08, 0x04,
-0xe5, 0xe7, 0x10, 0x0b, 0x0f, 0x01, 0xe6, 0x10,
-0x07, 0x01, 0xe6, 0x08, 0x20, 0x01, 0xe7, 0x5b,
-0x01, 0xe5, 0x05, 0x06, 0x0c, 0x06, 0x02, 0x01,
-0x01, 0x08, 0x05, 0x02, 0x01, 0x03, 0x0a, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x07, 0x0c, 0x02, 0x0d,
-0x01, 0xe5, 0x02, 0x04, 0x11, 0x01, 0x03, 0xe5,
-0x04, 0x21, 0xe6, 0xe5, 0x08, 0x0b, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe6, 0xe5,
-0x02, 0xe7, 0x05, 0xe7, 0xe6, 0xe6, 0x02, 0xe6,
-0x02, 0x02, 0xe8, 0xe6, 0x02, 0xe6, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x05, 0xe7, 0x07, 0xe6,
-0xe5, 0x02, 0xe7, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0xe6, 0xe6, 0x01, 0xe7, 0x05, 0xe7, 0x07, 0xe5,
-0x07, 0xe5, 0x06, 0xe5, 0x01, 0x5f, 0xe5, 0x05,
-0x0b, 0x0a, 0xe5, 0x04, 0x01, 0x13, 0x01, 0x04,
-0x05, 0xe5, 0x04, 0x01, 0xe5, 0x08, 0x13, 0xe5,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x08, 0x06,
-0x09, 0x01, 0xe6, 0x07, 0xe5, 0x23, 0x5d, 0x01,
-0xe5, 0x0f, 0x13, 0x01, 0x03, 0x02, 0x06, 0x02,
-0x01, 0xe5, 0xe5, 0x01, 0x03, 0x06, 0x02, 0xe5,
-0xe6, 0x04, 0x0c, 0x0d, 0x02, 0x02, 0xe5, 0x05,
-0x01, 0x03, 0x02, 0x03, 0x08, 0x07, 0x01, 0x03,
-0x02, 0x06, 0x02, 0x14, 0xe5, 0x03, 0xe6, 0x01,
-0x5f, 0x07, 0x0b, 0x13, 0x04, 0xe5, 0x07, 0xe5,
-0x04, 0x0e, 0xe5, 0x02, 0x04, 0x04, 0xe5, 0x16,
-0xe5, 0x02, 0x09, 0xe5, 0x02, 0xe5, 0x02, 0x13,
-0x04, 0xe5, 0x07, 0xe5, 0x14, 0x07, 0xe5, 0xe5,
-0x5c, 0x01, 0xe5, 0x0f, 0x04, 0x07, 0x06, 0x01,
-0x02, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x01, 0x01,
-0x06, 0x05, 0xe5, 0xe7, 0xe5, 0x01, 0x03, 0x03,
-0x15, 0xe5, 0xe6, 0x02, 0x06, 0x01, 0x02, 0xe5,
-0xe7, 0x01, 0x10, 0x01, 0x02, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x14, 0x03, 0x05, 0x11, 0x55, 0x01,
-0xe6, 0x04, 0x03, 0xe5, 0x08, 0x19, 0x1e, 0xe5,
-0xe5, 0x13, 0x05, 0x17, 0xe5, 0x03, 0x03, 0x36,
-0x01, 0x11, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0xe5, 0x04, 0xe5, 0xe6, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x06, 0xe5, 0xe5, 0x01, 0x04,
-0xe8, 0x04, 0x01, 0x04, 0x02, 0x01, 0x02, 0x04,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x03,
-0xe6, 0xe5, 0x04, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x01,
-0x07, 0x01, 0x0b, 0x01, 0xe5, 0x6d, 0x04, 0x0b,
-0x07, 0xe5, 0x07, 0xe5, 0x0e, 0x04, 0xe6, 0x06,
-0xe5, 0x03, 0x03, 0xe5, 0x11, 0xe6, 0x05, 0x0a,
-0xe5, 0x03, 0x05, 0x04, 0x01, 0x03, 0x06, 0xe5,
-0x01, 0x05, 0xe6, 0x20, 0xe8, 0x4f, 0x0a, 0x04,
-0x09, 0x02, 0x13, 0x04, 0x06, 0x02, 0xe5, 0x13,
-0xe5, 0x07, 0x07, 0x02, 0x0b, 0x06, 0x03, 0x0e,
-0x07, 0x13, 0x02, 0x03, 0x05, 0xe5, 0x04, 0x1a,
-0xe5, 0xe5, 0xe5, 0x47, 0x1a, 0x06, 0x07, 0x12,
-0x09, 0x14, 0xe5, 0x08, 0x04, 0x06, 0x11, 0x04,
-0x0f, 0x1a, 0x01, 0x09, 0x0f, 0x14, 0x02, 0xe5,
-0x1c, 0x33, 0x0b, 0x09, 0x0b, 0x07, 0x03, 0x09,
-0x03, 0x09, 0x03, 0x01, 0x0e, 0x01, 0x02, 0x07,
-0x01, 0x04, 0x09, 0x01, 0x0a, 0x01, 0x09, 0xe5,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x01, 0x05, 0x05,
-0x26, 0x02, 0xe6, 0x5d, 0x01, 0x08, 0x06, 0x0b,
-0x10, 0x09, 0xe6, 0x01, 0x12, 0x08, 0x02, 0x04,
-0x13, 0x04, 0x06, 0x09, 0x01, 0x05, 0x04, 0x06,
-0x05, 0x2a, 0xe7, 0x02, 0x0d, 0x50, 0x0e, 0xe6,
-0x07, 0x0c, 0x06, 0x03, 0xe5, 0x01, 0x01, 0x01,
-0x03, 0xe5, 0x0a, 0x02, 0x03, 0x0f, 0x03, 0x09,
-0x03, 0xe6, 0xe5, 0xe5, 0x13, 0x02, 0xe6, 0x03,
-0x09, 0x0d, 0xe5, 0x1b, 0xe5, 0x01, 0x09, 0x01,
-0x2a, 0x02, 0x0e, 0x0c, 0x06, 0xe5, 0x04, 0x09,
-0x09, 0xe5, 0x10, 0xe6, 0x07, 0xe7, 0x07, 0x09,
-0xe5, 0x07, 0x09, 0xe5, 0xe5, 0x01, 0xe5, 0x01,
-0x02, 0x06, 0x02, 0x09, 0x0b, 0x03, 0xe5, 0x01,
-0x1a, 0x1e, 0x29, 0x38, 0x06, 0x01, 0xe5, 0x02,
-0x02, 0x01, 0x07, 0x02, 0x10, 0x06, 0xe5, 0x02,
-0x07, 0x08, 0x02, 0x09, 0x06, 0x02, 0x01, 0x07,
-0x06, 0x02, 0x02, 0x01, 0x18, 0x0b, 0xe5, 0x0f,
-0x04, 0x13, 0x03, 0xe5, 0x7a, 0x1c, 0x05, 0xe5,
-0xe5, 0xe5, 0x07, 0x04, 0x19, 0x1b, 0x09, 0x0d,
-0x02, 0x2a, 0xe5, 0x01, 0x7c, 0x0d, 0x0a, 0x03,
-0x57, 0x08, 0x07, 0x0c, 0x1f, 0x01, 0xe5, 0x32,
-0x24, 0x0e, 0x01, 0xe5, 0x05, 0x01, 0x07, 0x01,
-0x16, 0x06, 0x01, 0x11, 0x01, 0x02, 0x18, 0x01,
-0x0f, 0x0a, 0x09, 0x02, 0x1d, 0x18, 0xe6, 0xe5,
-0x72, 0x03, 0x05, 0x10, 0xe5, 0xe5, 0x03, 0x07,
-0x08, 0x02, 0x24, 0x09, 0xe5, 0x16, 0x03, 0xe5,
-0x21, 0x12, 0xe5, 0xe7, 0x61, 0x0f, 0x02, 0x04,
-0x02, 0x0b, 0x09, 0x10, 0x01, 0x02, 0x25, 0x09,
-0x0b, 0x11, 0x03, 0x07, 0x02, 0x0c, 0x1c, 0x01,
-0x01, 0x6a, 0x04, 0x1d, 0x0a, 0xe5, 0x01, 0x02,
-0xe5, 0x01, 0x02, 0xe5, 0x04, 0x09, 0x09, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x09, 0x02, 0x09,
-0x09, 0x0a, 0x02, 0xe5, 0x04, 0x1e, 0xe6, 0xe5,
-0xe5, 0x01, 0x01, 0x6c, 0xe5, 0x2d, 0xe5, 0x1c,
-0x01, 0x0e, 0x0f, 0x21, 0x02, 0xe5, 0x04, 0x1b,
-0x01, 0x03, 0x01, 0xe5, 0x03, 0x5f, 0xe5, 0x0a,
-0x01, 0x04, 0x01, 0xe5, 0x0f, 0x07, 0x01, 0x09,
-0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01, 0x07, 0x01,
-0x06, 0x02, 0x07, 0x01, 0x09, 0x01, 0x48, 0x06,
-0x01, 0x64, 0x09, 0x02, 0x01, 0x04, 0x02, 0xe5,
-0x0e, 0x01, 0xe5, 0x05, 0x01, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x19, 0xe5, 0x1b, 0xe5, 0x18, 0x03, 0x01,
-0xe6, 0x04, 0x05, 0xe5, 0x05, 0x01, 0x4e, 0x09,
-0x01, 0x01, 0x02, 0xe5, 0xe7, 0x01, 0x06, 0x01,
-0x07, 0x01, 0x06, 0x02, 0x01, 0x06, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x06, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x03, 0x02, 0xe5, 0x14, 0xe5,
-0x04, 0x05, 0x09, 0x07, 0x03, 0x01, 0x13, 0xe6,
-0x08, 0x01, 0xe5, 0x01, 0x04, 0x01, 0x54, 0x05,
-0x01, 0x02, 0x03, 0xe5, 0x08, 0x01, 0x01, 0x07,
-0x01, 0x01, 0x01, 0xe5, 0x03, 0x01, 0x01, 0x01,
-0xe5, 0x01, 0x01, 0x01, 0x01, 0xe5, 0x01, 0x01,
-0x04, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x04, 0xe5, 0x15, 0x03,
-0xe6, 0x13, 0x02, 0x05, 0x0e, 0x03, 0x01, 0xe5,
-0x0c, 0x5b, 0x07, 0x01, 0x05, 0x04, 0x06, 0x01,
-0x09, 0x0b, 0x04, 0x01, 0x02, 0x09, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x04, 0xe5,
-0x07, 0x01, 0x07, 0x02, 0x01, 0x0b, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x03, 0x05, 0x11, 0x01, 0xe5,
-0xe5, 0x0e, 0x59, 0x07, 0x01, 0x0a, 0x06, 0x01,
-0x07, 0x01, 0x09, 0x01, 0x04, 0x01, 0xe5, 0xe5,
-0x06, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x03, 0xe6, 0x06, 0xe5, 0x08, 0xe5,
-0xe5, 0x01, 0x03, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x01, 0xe5, 0xe6, 0x16, 0x02, 0xe6, 0x07, 0x02,
-0x06, 0xe5, 0x57, 0x02, 0x06, 0x06, 0x10, 0x0b,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x09, 0x0b, 0x04,
-0x02, 0x01, 0xe5, 0x02, 0x09, 0x09, 0x02, 0xe5,
-0x0c, 0x05, 0xe5, 0xe6, 0x09, 0xe5, 0x04, 0x02,
-0x65, 0x04, 0x21, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x03, 0x01, 0x01, 0xe5, 0x08, 0x09, 0x05, 0xe5,
-0x07, 0xe5, 0x23, 0xe5, 0x0d, 0x03, 0x05, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x02,
-0x06, 0x09, 0x09, 0x04, 0x01, 0xe5, 0xe5, 0x08,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x06,
-0xe5, 0xe5, 0x01, 0x04, 0x01, 0x06, 0xe5, 0xe5,
-0x01, 0x06, 0x09, 0x05, 0x03, 0xe5, 0x03, 0x03,
-0xe6, 0x06, 0xe6, 0x03, 0x02, 0xe5, 0xe5, 0x05,
-0x0d, 0xe5, 0xe7, 0x01, 0x63, 0x09, 0x13, 0x0a,
-0x0b, 0x08, 0xe5, 0x08, 0x08, 0xe5, 0x06, 0xe6,
-0x07, 0xe5, 0x06, 0xe6, 0x1b, 0x1c, 0x19, 0x03,
-0xe5, 0xe5, 0x64, 0x09, 0x13, 0x1a, 0x04, 0x04,
-0x09, 0x04, 0x04, 0x04, 0x04, 0x03, 0x05, 0x04,
-0x04, 0x16, 0x3e, 0x01, 0x0a, 0x59, 0x02, 0x06,
-0x0e, 0xe5, 0x07, 0x12, 0x02, 0x09, 0x09, 0x04,
-0x01, 0x02, 0x09, 0x09, 0x09, 0x07, 0x01, 0x07,
-0x01, 0x0a, 0x03, 0x05, 0xe6, 0x06, 0xe6, 0x03,
-0x02, 0x15, 0x02, 0xe7, 0x10, 0x01, 0x53, 0x03,
-0x05, 0x01, 0x01, 0x07, 0xe6, 0xe5, 0x02, 0x03,
-0x02, 0x01, 0x02, 0xe5, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x04,
-0xe5, 0xe6, 0x02, 0x01, 0xe5, 0xe7, 0xe5, 0x02,
-0x01, 0x01, 0x05, 0x0d, 0x09, 0x05, 0x1e, 0x0d,
-0x01, 0x57, 0x01, 0x09, 0x03, 0xe5, 0x03, 0x09,
-0x23, 0x14, 0x13, 0x0b, 0x21, 0x0c, 0x1e, 0x01,
-0x01, 0x04, 0x08, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe6,
-0x06, 0xe5, 0x01, 0x05, 0xe6, 0x06, 0xe5, 0x01,
-0x05, 0xe5, 0xe5, 0x01, 0x04, 0xe6, 0x01, 0x03,
-0x01, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x03, 0xe7, 0x01, 0x05,
-0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x05, 0xe7, 0x02, 0x02, 0xe7, 0x07, 0xe5, 0x07,
-0xe5, 0x0a, 0x67, 0x01, 0x27, 0xe5, 0x14, 0x09,
-0x09, 0x09, 0x13, 0xe5, 0x04, 0x01, 0x11, 0x0c,
-0xe5, 0x07, 0xe5, 0x22, 0xe5, 0x66, 0x27, 0x01,
-0x0b, 0x06, 0x02, 0x03, 0x02, 0x02, 0x06, 0x02,
-0x09, 0x09, 0x06, 0x02, 0x07, 0x01, 0x06, 0x05,
-0x04, 0x0f, 0x02, 0x06, 0x02, 0xe5, 0x12, 0xe5,
-0x03, 0xe5, 0x01, 0xe5, 0x0c, 0x01, 0x01, 0x55,
-0x01, 0x01, 0x09, 0x09, 0x09, 0x07, 0xe5, 0x06,
-0x02, 0x04, 0x04, 0xe5, 0x03, 0x03, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0x03, 0xe6, 0x02, 0x0b,
-0x01, 0x01, 0x19, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x14, 0x06, 0xe5, 0xe6, 0x0c, 0x01, 0x57, 0x27,
-0x01, 0xe5, 0x07, 0x01, 0x06, 0xe5, 0xe6, 0x01,
-0xe8, 0xe6, 0x02, 0x01, 0xe5, 0xe6, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0x03, 0xe8, 0xe6, 0x0c, 0xe6,
-0x19, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x13, 0x03,
-0x01, 0xe5, 0x01, 0x61, 0x08, 0x06, 0x09, 0x02,
-0x0a, 0x05, 0x02, 0x08, 0x02, 0x06, 0x02, 0x09,
-0x06, 0xe5, 0xe6, 0x07, 0xe5, 0x01, 0x02, 0xe5,
-0xe6, 0x07, 0xe5, 0x01, 0x02, 0xe5, 0xe5, 0x0f,
-0x02, 0x1a, 0x1b, 0xe5, 0xe5, 0x10, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x07, 0x01,
-0xe6, 0x04, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0xe5, 0xe5,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x03,
-0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x02, 0x03,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x0b, 0xe5, 0xe5, 0x01, 0x0e,
-0x48, 0x0c, 0x13, 0x02, 0x02, 0x02, 0x04, 0x05,
-0xe7, 0x01, 0x04, 0xe6, 0x03, 0x03, 0xe7, 0x01,
-0xe5, 0x01, 0x02, 0xe5, 0x02, 0x03, 0x07, 0x02,
-0x01, 0x06, 0xe5, 0x01, 0x03, 0x07, 0x02, 0x0c,
-0x05, 0xe5, 0x02, 0x06, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0xe6, 0x01, 0x03, 0x05, 0x15, 0x01, 0xe5,
-0x3c, 0x12, 0x28, 0xe5, 0x02, 0x0e, 0x06, 0x01,
-0x09, 0x03, 0x05, 0x03, 0x06, 0x0b, 0xe5, 0x02,
-0x09, 0x0e, 0x06, 0x1d, 0x14, 0x12, 0x02, 0xe6,
-0x29, 0x56, 0x06, 0x06, 0x01, 0x06, 0x0e, 0x01,
-0x01, 0x02, 0x03, 0x01, 0x03, 0x01, 0x01, 0x10,
-0x01, 0x02, 0x07, 0x13, 0x10, 0x01, 0x07, 0x01,
-0x24, 0xe7, 0x31, 0x25, 0x0f, 0x07, 0xe5, 0x09,
-0x09, 0x07, 0xe5, 0x09, 0x01, 0x03, 0x01, 0x01,
-0x01, 0x07, 0x01, 0xe5, 0x02, 0x02, 0x04, 0x01,
-0xe5, 0xe5, 0x03, 0x06, 0x07, 0x13, 0xe6, 0x08,
-0x1b, 0x01, 0x19, 0x01, 0xe5, 0x44, 0x21, 0x06,
-0x06, 0x03, 0x01, 0x12, 0x06, 0x03, 0x04, 0x08,
-0x09, 0x09, 0x09, 0x05, 0x09, 0x03, 0x01, 0x15,
-0x01, 0x22, 0x1b, 0xe5, 0x07, 0x04, 0xe5, 0x02,
-0x43, 0x01, 0x1b, 0x0b, 0x03, 0xe6, 0x02, 0x04,
-0xe5, 0x01, 0x04, 0xe8, 0x02, 0x03, 0x05, 0x03,
-0x04, 0x06, 0x03, 0x05, 0x03, 0x03, 0x0b, 0xe5,
-0x0b, 0x03, 0x09, 0xe6, 0x02, 0x13, 0x03, 0x0f,
-0x0e, 0x0d, 0x01, 0x0f, 0x10, 0x2c, 0x01, 0x14,
-0x09, 0x02, 0x03, 0x01, 0x2e, 0x02, 0xe8, 0x04,
-0xe6, 0x09, 0x03, 0x02, 0xe6, 0x19, 0xe5, 0xe5,
-0x37, 0xe6, 0x09, 0x42, 0x14, 0x1d, 0x12, 0xe5,
-0x03, 0x0f, 0x0a, 0x09, 0xe5, 0x07, 0x13, 0x01,
-0x01, 0x13, 0x04, 0x0a, 0x08, 0x0c, 0x13, 0x03,
-0x53, 0xe5, 0x03, 0x0d, 0xe5, 0x07, 0xe5, 0x03,
-0x1f, 0x01, 0x09, 0xe7, 0x04, 0x02, 0xe5, 0x18,
-0x02, 0xe5, 0x06, 0x0a, 0xe5, 0x0d, 0x01, 0x0b,
-0xe5, 0x07, 0xe5, 0x03, 0x06, 0x17, 0x01, 0xe6,
-0x54, 0x13, 0x09, 0x06, 0x11, 0x09, 0x02, 0x05,
-0x08, 0xe5, 0x07, 0xe5, 0x03, 0x12, 0x04, 0x13,
-0xe5, 0x16, 0x04, 0x09, 0x22, 0x02, 0x0f, 0x44,
-0x02, 0x07, 0x08, 0x04, 0x04, 0xe5, 0x02, 0x01,
-0x01, 0x01, 0x09, 0x09, 0x08, 0x03, 0x07, 0x09,
-0x0a, 0x09, 0x08, 0x04, 0x02, 0x02, 0x08, 0x07,
-0x03, 0x08, 0x08, 0x01, 0x07, 0x03, 0x20, 0x01,
-0xe5, 0x0e, 0x3e, 0x1a, 0xe5, 0x07, 0x09, 0x07,
-0xe6, 0x08, 0x03, 0x16, 0x0e, 0x09, 0x04, 0x09,
-0x02, 0xe6, 0x03, 0x18, 0x0e, 0x09, 0x0b, 0x10,
-0x01, 0x02, 0x0d, 0xe5, 0x3e, 0x0e, 0x0b, 0x0a,
-0xe5, 0x06, 0x01, 0x0f, 0x01, 0x08, 0x1e, 0xe5,
-0x06, 0xe6, 0x10, 0x1a, 0x03, 0xe5, 0x38, 0xe8,
-0x0a, 0x3e, 0xe5, 0x39, 0xe5, 0x17, 0xe5, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0x02, 0xe5, 0x14, 0xe5,
-0x04, 0x13, 0x08, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x01, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x0a, 0x13,
-0xe7, 0xe6, 0x01, 0x01, 0x08, 0xe6, 0x35, 0x01,
-0x15, 0x03, 0x22, 0x03, 0x1b, 0x02, 0x01, 0x04,
-0x02, 0x1d, 0x0d, 0x01, 0x03, 0x0a, 0x12, 0x09,
-0x06, 0xe5, 0x13, 0x01, 0x03, 0x01, 0xe5, 0x03,
-0x05, 0xe5, 0xe5, 0xe5, 0x3c, 0x11, 0x22, 0xe5,
-0x20, 0x09, 0x06, 0x01, 0x06, 0xe5, 0x12, 0xe5,
-0x1b, 0x01, 0x02, 0x01, 0x16, 0x01, 0xe5, 0x14,
-0x04, 0x03, 0x02, 0x0a, 0x01, 0x72, 0xe5, 0x10,
-0xe5, 0x0d, 0x09, 0x06, 0xe5, 0x1a, 0xe5, 0x1f,
-0x1a, 0x04, 0x15, 0x02, 0xe6, 0xe5, 0x0e, 0x04,
-0x01, 0x7a, 0x02, 0xe5, 0x01, 0x07, 0x04, 0x04,
-0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 0x11,
-0x02, 0x02, 0x05, 0x09, 0x02, 0x03, 0x02, 0xe5,
-0x01, 0x12, 0x02, 0x02, 0x0a, 0x03, 0x02, 0x01,
-0x4a, 0x04, 0x25, 0x01, 0xe5, 0x03, 0x0b, 0x04,
-0x03, 0x05, 0x03, 0x0a, 0x09, 0x13, 0x1b, 0x05,
-0x14, 0x04, 0x12, 0x05, 0xe6, 0x0b, 0x01, 0x55,
-0x2b, 0x09, 0x01, 0x07, 0x09, 0x03, 0x05, 0x01,
-0x07, 0x01, 0x11, 0x01, 0x1b, 0x07, 0x05, 0x09,
-0x05, 0x19, 0xe5, 0x02, 0x0d, 0x01, 0x7f, 0x0a,
-0xe5, 0xe5, 0x06, 0x03, 0xe5, 0x03, 0x04, 0x04,
-0x01, 0x07, 0x01, 0x0b, 0xe5, 0x03, 0x01, 0x0b,
-0xe7, 0x0b, 0x02, 0x0b, 0xe6, 0x06, 0x06, 0x18,
-0xe8, 0x12, 0xe5, 0x4d, 0x02, 0x10, 0x1d, 0xe5,
-0x09, 0xe5, 0x04, 0x09, 0x0c, 0xe5, 0x0e, 0x13,
-0x13, 0x02, 0x06, 0x09, 0x25, 0x14, 0x4f, 0xe5,
-0x07, 0x0b, 0x07, 0xe5, 0x04, 0x0c, 0xe5, 0x09,
-0xe5, 0x03, 0xe5, 0x07, 0xe5, 0x1b, 0xe5, 0x11,
-0xe5, 0x17, 0x03, 0xe5, 0x07, 0xe5, 0x15, 0x09,
-0xe5, 0xe7, 0x0d, 0x02, 0xe5, 0x04, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0x09,
-0x04, 0xe6, 0x01, 0x06, 0x02, 0x09, 0x09, 0x04,
-0x01, 0x01, 0x02, 0x09, 0xe5, 0x07, 0xe7, 0x05,
-0x04, 0x01, 0x02, 0x09, 0xe5, 0x02, 0x01, 0x02,
-0x09, 0xe5, 0x07, 0x09, 0xe5, 0x07, 0xe6, 0x06,
-0xe6, 0x03, 0x02, 0x04, 0x01, 0x02, 0x03, 0x09,
-0x01, 0xe7, 0x01, 0x59, 0x09, 0x09, 0x06, 0x02,
-0x1d, 0x29, 0x31, 0x1c, 0xe5, 0x08, 0x0e, 0x03,
-0xe5, 0xe5, 0x5a, 0x09, 0x08, 0x09, 0x1e, 0x02,
-0x0e, 0x17, 0x0f, 0x13, 0x0b, 0x1f, 0x09, 0x15,
-0xe5, 0xe5, 0x6e, 0x01, 0x10, 0xe5, 0xe5, 0x08,
-0x0b, 0x0a, 0x01, 0x01, 0x05, 0xe6, 0xe5, 0x03,
-0x04, 0x04, 0x0a, 0x01, 0x01, 0x04, 0x0a, 0xe6,
-0x0d, 0x02, 0x03, 0x05, 0xe6, 0x06, 0xe6, 0x03,
-0x09, 0x0e, 0x03, 0x01, 0x0a, 0x06, 0x4f, 0x05,
-0x02, 0x06, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x02,
-0x02, 0x01, 0xe6, 0xe5, 0x04, 0x01, 0x07, 0x03,
-0x09, 0x09, 0x07, 0x01, 0x09, 0x02, 0x06, 0x09,
-0x09, 0x11, 0x0b, 0x09, 0x07, 0x01, 0x05, 0x01,
-0x01, 0x0d, 0xe7, 0x0e, 0x53, 0x0a, 0x02, 0x01,
-0x11, 0x01, 0x04, 0x09, 0x03, 0x2a, 0x13, 0x0b,
-0x01, 0x0d, 0x1a, 0x02, 0x0b, 0x03, 0x0b, 0xe7,
-0x0e, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x08,
-0xe6, 0x05, 0xe7, 0x02, 0x03, 0xe6, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x05, 0xe7,
-0x07, 0xe5, 0x07, 0xe5, 0x02, 0x02, 0xe7, 0x02,
-0x02, 0xe7, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x09,
-0xe5, 0x55, 0x13, 0x08, 0xe5, 0x11, 0x09, 0x0b,
-0x14, 0x08, 0x09, 0x13, 0x28, 0xe5, 0x07, 0x06,
-0x09, 0x01, 0x0e, 0xe6, 0xe5, 0x11, 0x43, 0x06,
-0x03, 0x08, 0x06, 0x01, 0xe5, 0x11, 0x02, 0x06,
-0x01, 0x07, 0x03, 0x04, 0x05, 0xe5, 0x01, 0x05,
-0x03, 0x02, 0x01, 0x09, 0x0a, 0xe5, 0x01, 0x04,
-0x0a, 0xe5, 0x01, 0x0c, 0x0c, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x02, 0x01, 0x05, 0x01, 0x01, 0x0f,
-0xe5, 0x0e, 0x61, 0x01, 0x13, 0x12, 0x07, 0x09,
-0xe5, 0x03, 0x03, 0x0e, 0x0e, 0xe5, 0x02, 0x0e,
-0xe5, 0x1b, 0xe5, 0x03, 0x03, 0xe5, 0xe5, 0x19,
-0x03, 0x0f, 0x46, 0x13, 0x06, 0x01, 0xe5, 0x11,
-0x1a, 0x01, 0x06, 0x01, 0xe5, 0x08, 0x1a, 0x01,
-0xe5, 0x0f, 0x01, 0xe5, 0x19, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x01, 0x1a, 0x01, 0x12, 0x45, 0x04,
-0x0d, 0xe5, 0x07, 0x0f, 0x02, 0xe5, 0x1d, 0x06,
-0x04, 0x12, 0x2d, 0x02, 0x0a, 0x26, 0x03, 0xe5,
-0x01, 0x01, 0x0f, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0xe5,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x09, 0x01, 0x06, 0xe5, 0xe6,
-0x05, 0x01, 0x07, 0x01, 0x07, 0x01, 0x02, 0x03,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x06, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x06, 0xe7, 0x06, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x08, 0x02, 0xe7, 0x0a, 0x05,
-0x45, 0x09, 0x04, 0x09, 0x14, 0xe6, 0x11, 0x05,
-0x04, 0x01, 0xe6, 0x05, 0xe6, 0x15, 0x05, 0xe5,
-0x18, 0x02, 0xe5, 0x04, 0xe6, 0x0e, 0x04, 0xe5,
-0x02, 0x07, 0x08, 0x0e, 0xe7, 0x03, 0x06, 0x30,
-0x1e, 0x06, 0x07, 0x09, 0x0e, 0x12, 0x0d, 0x08,
-0xe5, 0x05, 0x11, 0x05, 0xe5, 0x1c, 0x0d, 0x0e,
-0xe5, 0x05, 0x08, 0x11, 0x01, 0x02, 0x5c, 0x09,
-0x07, 0x07, 0x07, 0x07, 0x13, 0x06, 0x05, 0xe5,
-0xe5, 0x05, 0x02, 0x15, 0x07, 0x09, 0x01, 0x0c,
-0x44, 0x01, 0x10, 0x5f, 0xe8, 0x05, 0x02, 0x08,
-0xe5, 0x01, 0x06, 0x19, 0x13, 0x0b, 0x07, 0x1a,
-0x07, 0x25, 0xe6, 0x0d, 0x03, 0x08, 0x02, 0x4b,
-0x0b, 0x0d, 0x0b, 0x07, 0x04, 0x0e, 0x05, 0x53,
-0x01, 0x28, 0x11, 0xe6, 0x18, 0x21, 0x18, 0xe5,
-0x16, 0x06, 0x01, 0x14, 0x09, 0x03, 0x03, 0x03,
-0x06, 0x0b, 0x06, 0x03, 0x01, 0x03, 0x03, 0x06,
-0x09, 0x0c, 0x07, 0x15, 0x07, 0x21, 0xe5, 0xe5,
-0x10, 0x05, 0xe5, 0x34, 0x04, 0x04, 0xe5, 0x02,
-0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x0a, 0x09,
-0x09, 0x08, 0xe5, 0xe5, 0x09, 0x0f, 0xe5, 0x06,
-0xe6, 0x1e, 0x1d, 0x03, 0x07, 0x04, 0x1e, 0x01,
-0x08, 0x0c, 0x3b, 0x04, 0x0b, 0xe5, 0x07, 0x06,
-0x02, 0x07, 0x18, 0x03, 0x0b, 0x0c, 0x04, 0x02,
-0x04, 0x10, 0x09, 0x0b, 0x23, 0x04, 0x06, 0x01,
-0x14, 0xe5, 0x0d, 0x04, 0x40, 0x04, 0x03, 0xe5,
-0x03, 0x13, 0x0e, 0x01, 0xe5, 0x0e, 0xe6, 0x13,
-0x0f, 0x05, 0x06, 0xe5, 0x11, 0xe5, 0x18, 0x02,
-0xe5, 0x07, 0xe5, 0x0a, 0x17, 0xe8, 0x0f, 0x03,
-0x41, 0x08, 0x27, 0x11, 0x01, 0x0e, 0x06, 0x05,
-0x15, 0x01, 0x02, 0x03, 0x0a, 0x01, 0x15, 0x05,
-0x01, 0x07, 0x01, 0x06, 0x1c, 0xe7, 0x04, 0x04,
-0x02, 0x01, 0x45, 0x04, 0x03, 0xe5, 0x06, 0x01,
-0x09, 0x07, 0x01, 0x1c, 0xe5, 0xe5, 0x02, 0x09,
-0x0d, 0x01, 0xe5, 0x1b, 0x01, 0x08, 0x31, 0x17,
-0x01, 0xe7, 0x04, 0x08, 0x09, 0x3a, 0x0a, 0x01,
-0x11, 0x09, 0x1f, 0x14, 0xe5, 0x06, 0x04, 0x02,
-0x01, 0x13, 0x39, 0x01, 0x17, 0x04, 0x05, 0xe5,
-0x02, 0x03, 0x09, 0x44, 0x01, 0x0b, 0x05, 0x01,
-0x09, 0x0b, 0x10, 0x02, 0x17, 0x05, 0x0d, 0x0c,
-0x03, 0x0a, 0x27, 0x09, 0x16, 0x03, 0xe6, 0x55,
-0x04, 0x02, 0xe5, 0x0e, 0x16, 0xe5, 0x13, 0xe5,
-0x01, 0xe5, 0x0a, 0x03, 0x16, 0xe5, 0x04, 0x0c,
-0xe5, 0x04, 0x05, 0x10, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0xe5, 0x08, 0x13, 0xe7, 0xe6, 0x01, 0x01,
-0x0d, 0x40, 0xe5, 0x07, 0x02, 0x10, 0x17, 0x14,
-0x0d, 0x01, 0xe5, 0x01, 0x1d, 0x13, 0x06, 0x16,
-0x09, 0x1c, 0x01, 0x04, 0x01, 0x04, 0x0b, 0x3f,
-0xe5, 0x0a, 0x13, 0x3d, 0x3b, 0x3d, 0x04, 0xe5,
-0x01, 0x02, 0x0b, 0x02, 0x01, 0xe5, 0x3a, 0x13,
-0x31, 0x18, 0x06, 0x08, 0xe5, 0x29, 0x24, 0xe5,
-0x18, 0x02, 0xe5, 0x01, 0x05, 0x0a, 0x0b, 0x34,
-0x03, 0xe5, 0xe6, 0x01, 0xe5, 0x05, 0xe7, 0x08,
-0x01, 0x04, 0x01, 0x1c, 0x03, 0x02, 0x03, 0x01,
-0x05, 0x04, 0x04, 0x02, 0x06, 0x13, 0x13, 0x04,
-0x18, 0x09, 0x0a, 0x02, 0x11, 0xe5, 0xe6, 0x01,
-0x02, 0x16, 0x39, 0x06, 0x03, 0x01, 0x02, 0x02,
-0x01, 0x01, 0x02, 0x2a, 0x02, 0x02, 0x02, 0x0a,
-0x03, 0x0a, 0x2c, 0x03, 0x23, 0x08, 0x0e, 0x03,
-0x01, 0xe6, 0x03, 0x0a, 0x06, 0x01, 0x3e, 0x18,
-0x04, 0x23, 0x02, 0x0e, 0x01, 0xe5, 0x02, 0xe5,
-0x03, 0x01, 0x07, 0x01, 0x0c, 0x18, 0x17, 0x09,
-0x0d, 0x11, 0x01, 0x01, 0xe5, 0x0f, 0x06, 0x01,
-0x3c, 0xe5, 0x42, 0x02, 0x0a, 0xe5, 0xe5, 0xe6,
-0x03, 0x04, 0x01, 0x07, 0x01, 0x0b, 0xe5, 0x11,
-0xe5, 0x03, 0x10, 0x01, 0x05, 0x09, 0x21, 0xe6,
-0x04, 0x0a, 0x02, 0x02, 0x3f, 0x02, 0x02, 0x41,
-0x02, 0x06, 0x09, 0x1d, 0x13, 0x1d, 0x09, 0x0c,
-0xe5, 0x12, 0xe5, 0x01, 0x10, 0x0d, 0x37, 0x03,
-0x09, 0x09, 0x06, 0x24, 0x09, 0x03, 0xe5, 0x07,
-0xe5, 0x12, 0x02, 0x05, 0xe5, 0x11, 0xe5, 0x1b,
-0xe5, 0x07, 0xe5, 0x08, 0x16, 0xe9, 0xe5, 0x06,
-0x01, 0x02, 0xe5, 0xe5, 0x05, 0x03, 0x05, 0x09,
-0x09, 0x09, 0x09, 0x09, 0xe5, 0x03, 0xe5, 0x01,
-0x05, 0x03, 0x02, 0x02, 0x03, 0x09, 0x09, 0x09,
-0x06, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x01,
-0x01, 0x02, 0x09, 0x05, 0x03, 0xe5, 0x07, 0x09,
-0xe5, 0x07, 0x09, 0x09, 0xe6, 0x06, 0xe6, 0x01,
-0x01, 0x02, 0x09, 0x0d, 0x01, 0xe5, 0xe5, 0x01,
-0x09, 0x09, 0x42, 0x02, 0x09, 0x2e, 0x02, 0x3d,
-0x3b, 0x18, 0x02, 0x01, 0x01, 0x09, 0x09, 0x47,
-0x08, 0x31, 0x12, 0x27, 0x01, 0x11, 0x29, 0x1e,
-0xe8, 0x0c, 0x01, 0xe6, 0x04, 0x01, 0x3b, 0xe6,
-0x0b, 0x02, 0x01, 0x04, 0x0e, 0x1c, 0xe5, 0x01,
-0x09, 0x01, 0x07, 0xe6, 0x05, 0x09, 0x0a, 0x01,
-0x01, 0x04, 0x0a, 0x01, 0x1b, 0xe6, 0x06, 0xe6,
-0x03, 0x1b, 0xe7, 0x0c, 0x01, 0xe5, 0x07, 0x01,
-0x39, 0x01, 0x04, 0x03, 0x06, 0x01, 0x01, 0x02,
-0x06, 0x01, 0x05, 0xe5, 0x1b, 0x0d, 0x09, 0x09,
-0x07, 0x01, 0x01, 0x07, 0x05, 0x01, 0xe5, 0x09,
-0x0c, 0x10, 0x09, 0x05, 0x01, 0x01, 0x01, 0x0d,
-0xe5, 0x01, 0xe5, 0x02, 0x01, 0xe5, 0x0b, 0x02,
-0x0c, 0x14, 0x23, 0x0c, 0xe5, 0x01, 0x01, 0x09,
-0x06, 0x02, 0x04, 0x18, 0x06, 0x13, 0x04, 0x1b,
-0x01, 0x04, 0x27, 0x0e, 0x19, 0x01, 0xe5, 0x0c,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0xe5, 0x05, 0xe7, 0x05, 0xe7, 0x02, 0x03, 0xe6,
-0x07, 0xe5, 0x07, 0xe5, 0x05, 0xe8, 0xe5, 0x04,
-0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x02,
-0x02, 0xe7, 0x02, 0x02, 0xe7, 0x06, 0xe6, 0x07,
-0xe7, 0x02, 0x02, 0x02, 0x0d, 0x01, 0x28, 0x2e,
-0x01, 0x07, 0x0b, 0x0a, 0x09, 0x1f, 0x08, 0x09,
-0x11, 0x01, 0xe5, 0x1c, 0xe5, 0x07, 0x09, 0x06,
-0x08, 0x0f, 0x03, 0x01, 0x0d, 0x01, 0x07, 0x03,
-0x3c, 0x0e, 0x01, 0x02, 0x04, 0x04, 0x06, 0x0a,
-0x12, 0x07, 0xe5, 0x03, 0x01, 0x02, 0x04, 0x04,
-0x05, 0x06, 0x02, 0x08, 0x01, 0x02, 0xe5, 0xe5,
-0x0a, 0x01, 0x02, 0x18, 0x01, 0x02, 0x04, 0x01,
-0x02, 0xe5, 0xe5, 0x01, 0x01, 0x0c, 0xe5, 0x03,
-0xe5, 0x01, 0xe6, 0x0b, 0x01, 0x28, 0x26, 0x09,
-0x09, 0x09, 0x14, 0x07, 0x06, 0xe5, 0x08, 0xe5,
-0x03, 0x03, 0x04, 0x18, 0xe5, 0xe5, 0xe6, 0x0c,
-0xe5, 0x17, 0x03, 0xe5, 0x03, 0x03, 0xe5, 0x02,
-0x11, 0x08, 0xe6, 0x03, 0x08, 0x01, 0x28, 0x2e,
-0x01, 0x09, 0x09, 0x0a, 0x09, 0x0f, 0x01, 0x06,
-0x01, 0xe5, 0x08, 0x1a, 0x01, 0xe6, 0xe6, 0x0b,
-0x01, 0xe5, 0x0c, 0x0c, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x06, 0x0d, 0x03, 0x01, 0x02, 0xe6, 0x51,
-0x01, 0xe5, 0x07, 0xe5, 0x0f, 0x02, 0x14, 0x03,
-0x06, 0x06, 0x01, 0xe6, 0x0e, 0x3b, 0xe5, 0xe5,
-0x25, 0xe5, 0x17, 0x02, 0x03, 0xe5, 0x0b, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x06, 0x02, 0xe6, 0x06, 0x01, 0x03, 0x03, 0x01,
-0x07, 0x01, 0x07, 0xe6, 0xe5, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x03, 0x06, 0xe6, 0xe5, 0x03, 0x0a,
-0xe5, 0x01, 0x07, 0x1b, 0x33, 0x05, 0xe5, 0x01,
-0x04, 0x0c, 0xe6, 0x03, 0x02, 0xe5, 0x06, 0x0c,
-0xe5, 0x07, 0xe6, 0x03, 0x09, 0x04, 0x03, 0x03,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0x14, 0xe5,
-0x07, 0xe5, 0x1c, 0x07, 0xe5, 0x0b, 0x08, 0x4e,
-0x12, 0x0d, 0xe6, 0x01, 0x03, 0x07, 0xe5, 0x0a,
-0x01, 0x07, 0xe5, 0x05, 0x15, 0x01, 0xe5, 0x07,
-0xe5, 0xe6, 0x02, 0xe5, 0x05, 0x0a, 0x0a, 0xe5,
-0x07, 0xe5, 0x05, 0x0b, 0x10, 0xe5, 0xe7, 0x01,
-0x02, 0x09, 0x26, 0x23, 0x01, 0x34, 0x15, 0x02,
-0x06, 0x22, 0x0e, 0x1d, 0x05, 0x03, 0x23, 0xe5,
-0xe5, 0x07, 0x06, 0x09, 0x01, 0x37, 0x09, 0x01,
-0x01, 0x04, 0xe6, 0x07, 0xe6, 0x28, 0x0d, 0x6c,
-0x07, 0x0f, 0xe6, 0x08, 0x01, 0x01, 0x48, 0x02,
-0x03, 0x02, 0x11, 0x02, 0x23, 0xe5, 0x10, 0x1e,
-0x3c, 0x26, 0xe7, 0x16, 0xe6, 0x16, 0x13, 0x12,
-0x06, 0xe5, 0x06, 0xe5, 0x13, 0x01, 0x0a, 0x06,
-0x01, 0x04, 0x01, 0x0f, 0x04, 0xe5, 0x01, 0x0a,
-0x05, 0x0f, 0x05, 0x01, 0x1a, 0x16, 0x20, 0xe6,
-0x0f, 0x06, 0x01, 0x0a, 0x1d, 0x0e, 0x15, 0x01,
-0x02, 0x0d, 0x1b, 0x03, 0x03, 0x09, 0x1a, 0x01,
-0xe5, 0x54, 0x11, 0x01, 0x01, 0x01, 0x08, 0x07,
-0x4d, 0xe5, 0xe5, 0x09, 0x09, 0x07, 0x18, 0x27,
-0x04, 0x0d, 0x5d, 0x05, 0x0e, 0x1d, 0x3e, 0xe5,
-0x08, 0x05, 0x02, 0xe6, 0x05, 0xe7, 0x05, 0xe5,
-0x01, 0x02, 0x04, 0xe5, 0x01, 0x06, 0x09, 0x07,
-0x01, 0xe5, 0x07, 0x01, 0x07, 0xe5, 0x06, 0x01,
-0x33, 0x19, 0xe6, 0x01, 0x0e, 0x46, 0x18, 0xe5,
-0x08, 0x0b, 0x08, 0x07, 0x02, 0x08, 0x09, 0x09,
-0x0b, 0x11, 0x01, 0x0a, 0x49, 0xe5, 0x01, 0x03,
-0x15, 0x22, 0x22, 0xe5, 0x03, 0xe5, 0x01, 0x09,
-0x18, 0x0d, 0x06, 0x06, 0x02, 0x05, 0x04, 0x0d,
-0x05, 0x0b, 0x0d, 0x2d, 0x1d, 0xe7, 0x01, 0x15,
-0x01, 0x43, 0x09, 0x09, 0x2c, 0x0d, 0x02, 0xe6,
-0x12, 0x04, 0x60, 0x01, 0xe7, 0x16, 0xe5, 0x1f,
-0x0b, 0x1a, 0x06, 0xe5, 0x0a, 0x1e, 0x06, 0x14,
-0xe5, 0x1f, 0x01, 0x14, 0x0b, 0x09, 0x04, 0x04,
-0x29, 0xe6, 0x48, 0xe7, 0x0a, 0xe5, 0x02, 0x13,
-0x09, 0x01, 0x01, 0xe5, 0x05, 0x02, 0x01, 0x02,
-0x01, 0x01, 0xe5, 0x07, 0x01, 0xe5, 0x05, 0x12,
-0xe5, 0x07, 0xe5, 0x01, 0xe5, 0x04, 0xe5, 0x07,
-0x20, 0x01, 0x04, 0x09, 0x1e, 0xea, 0x01, 0x01,
-0x41, 0x01, 0x11, 0xe5, 0x0a, 0xe5, 0x14, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x03, 0x01, 0x05,
-0x02, 0xe5, 0x04, 0x13, 0x09, 0x03, 0x01, 0x04,
-0x02, 0x01, 0x03, 0x20, 0xe5, 0x05, 0x02, 0x01,
-0x04, 0x1b, 0x01, 0x04, 0x01, 0x04, 0x0f, 0xe5,
-0x36, 0x0f, 0x01, 0x09, 0x42, 0x01, 0x02, 0x07,
-0x01, 0x6d, 0x05, 0xe7, 0x01, 0x11, 0x45, 0x02,
-0x01, 0x07, 0x43, 0xe5, 0x01, 0x06, 0x02, 0x01,
-0x6f, 0x02, 0x01, 0x01, 0x15, 0x08, 0x01, 0x3a,
-0x03, 0x02, 0x01, 0x01, 0x09, 0x0f, 0x09, 0x09,
-0x0b, 0x09, 0x07, 0x03, 0xe6, 0x09, 0x01, 0x0c,
-0x09, 0x09, 0x1d, 0x09, 0x1f, 0xe5, 0x01, 0x02,
-0x18, 0x01, 0x02, 0x3c, 0x01, 0x02, 0xe5, 0x01,
-0x04, 0x01, 0x01, 0xe5, 0x3d, 0x02, 0x02, 0x02,
-0x04, 0x05, 0x01, 0x01, 0x60, 0x02, 0x02, 0x02,
-0xe6, 0x17, 0x43, 0x01, 0x20, 0x01, 0x08, 0xe5,
-0x11, 0xe5, 0x09, 0xe5, 0x0b, 0x01, 0x07, 0x01,
-0x22, 0x1a, 0x02, 0x06, 0x02, 0x01, 0x1a, 0xe5,
-0xe7, 0x16, 0x45, 0x01, 0x1f, 0xe8, 0x04, 0xe5,
-0xe5, 0xe5, 0x03, 0xe5, 0x04, 0x05, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0xe6, 0x01, 0x06, 0x01, 0x07,
-0x01, 0x0b, 0xe5, 0x07, 0xe7, 0x05, 0xe5, 0xe6,
-0x19, 0x01, 0xe6, 0x04, 0xe6, 0x1d, 0x01, 0xe5,
-0x04, 0x71, 0x06, 0x09, 0x09, 0x0b, 0x09, 0x09,
-0x1d, 0x09, 0x09, 0x04, 0x18, 0x09, 0x21, 0xe8,
-0x1d, 0x41, 0x19, 0x03, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x0b, 0x19, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x1b, 0xe5, 0x07, 0xe5,
-0x23, 0xe5, 0x0d, 0x09, 0x05, 0x03, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0xe5, 0x07,
-0x02, 0x01, 0x01, 0x02, 0x09, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x06, 0x02, 0xe6, 0x06, 0xe5, 0x07,
-0xe5, 0x03, 0xe5, 0x01, 0x02, 0x06, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0x09, 0x09, 0xe6,
-0x06, 0xe6, 0x06, 0x09, 0x0d, 0xe5, 0xe5, 0xe5,
-0x01, 0x13, 0x45, 0x13, 0x3d, 0x06, 0x02, 0x72,
-0x02, 0x02, 0xe5, 0x14, 0x43, 0x14, 0x10, 0x09,
-0x09, 0x06, 0x0e, 0x03, 0x08, 0x1a, 0x09, 0x09,
-0x48, 0xe6, 0xe5, 0x13, 0x02, 0x01, 0x43, 0x01,
-0x01, 0x0c, 0x02, 0x01, 0x0a, 0x01, 0x01, 0x05,
-0xe6, 0x06, 0x01, 0x09, 0xe6, 0x06, 0xe6, 0x06,
-0x08, 0x14, 0xe6, 0x03, 0x01, 0xe7, 0x06, 0xe6,
-0x1a, 0xe6, 0x06, 0xe6, 0x14, 0x09, 0xe8, 0x18,
-0x01, 0x41, 0x02, 0xe5, 0x03, 0x03, 0x06, 0x01,
-0xe5, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x0f, 0x02,
-0x14, 0x05, 0x01, 0xe6, 0x08, 0x1d, 0x09, 0x19,
-0xe5, 0x02, 0x02, 0x02, 0xe5, 0x5b, 0x01, 0x11,
-0x01, 0x15, 0x0b, 0x04, 0x04, 0x11, 0x09, 0x03,
-0x09, 0x06, 0x03, 0x02, 0x01, 0x01, 0x08, 0x4b,
-0x01, 0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0x01, 0x04, 0xe5, 0x07, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe5, 0x05, 0xe7, 0x05, 0xe7, 0x08,
-0xe6, 0x02, 0x02, 0xe7, 0x01, 0x05, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x05, 0xe8, 0xe5, 0x03, 0xe6,
-0x05, 0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x02, 0x02,
-0xe7, 0x02, 0x02, 0xe7, 0x07, 0xe5, 0x07, 0xe6,
-0x03, 0x01, 0x02, 0xe5, 0x16, 0x01, 0x3c, 0x06,
-0x01, 0x09, 0x07, 0x01, 0xe5, 0x08, 0xe5, 0x27,
-0xe5, 0x07, 0x08, 0x24, 0x03, 0x1d, 0xe5, 0x07,
-0xe5, 0x19, 0x05, 0xe8, 0x18, 0x02, 0x40, 0x01,
-0x02, 0x06, 0x07, 0x02, 0x0b, 0x09, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x07, 0x01, 0x01, 0x05, 0xe5,
-0x01, 0x03, 0x05, 0xe5, 0x17, 0xe5, 0x01, 0x05,
-0x09, 0xe5, 0x01, 0x19, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x14, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x55,
-0x06, 0x01, 0x09, 0x07, 0x01, 0x18, 0xe5, 0x07,
-0xe5, 0x01, 0x11, 0xe5, 0x02, 0x09, 0x18, 0xe5,
-0x07, 0x05, 0x03, 0xe5, 0x1b, 0xe5, 0x07, 0xe5,
-0x14, 0x06, 0x03, 0x56, 0x06, 0x01, 0xe5, 0x07,
-0x07, 0x01, 0xe5, 0x15, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x08, 0x01, 0x06, 0x01, 0xe6, 0x01, 0x03,
-0x01, 0xe5, 0x18, 0x01, 0xe5, 0x0f, 0x01, 0xe5,
-0x19, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x18, 0x01,
-0xe5, 0xe7, 0x19, 0x44, 0x48, 0xe5, 0x03, 0x03,
-0x0c, 0x14, 0x3b, 0x16, 0x08, 0xe5, 0x0b, 0x04,
-0xe6, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x04, 0xe5, 0xe6, 0x07, 0x01, 0x07,
-0x01, 0x03, 0x03, 0x01, 0x02, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x01, 0xe5, 0x03, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x02,
-0x04, 0x01, 0x0a, 0xe5, 0xe6, 0x54, 0xe5, 0x05,
-0x18, 0x07, 0xe5, 0x10, 0xe5, 0x04, 0x01, 0x18,
-0x17, 0x03, 0xe5, 0x11, 0xe5, 0x03, 0x17, 0xe5,
-0x07, 0xe5, 0x21, 0x02, 0xe5, 0x1d, 0x35, 0x0b,
-0x13, 0xe5, 0x02, 0xe5, 0x06, 0x09, 0x01, 0x0e,
-0x02, 0x02, 0x27, 0xe5, 0x07, 0x04, 0x04, 0x01,
-0x10, 0x0a, 0xe5, 0xe5, 0x05, 0xe5, 0x07, 0x05,
-0x0d, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x52, 0x0f,
-0x1c, 0x10, 0xe5, 0x16, 0x24, 0x12, 0x10, 0x17,
-0x25, 0xe5, 0x2e, 0x13, 0x0b, 0x0d, 0x01, 0x09,
-0x07, 0xe6, 0x1e, 0x14, 0x03, 0x04, 0x01, 0x23,
-0xe6, 0x09, 0x19, 0x33, 0x01, 0x09, 0x53, 0x01,
-0x05, 0x09, 0x05, 0x21, 0xe5, 0x06, 0x58, 0x33,
-0xe7, 0x08, 0x08, 0x28, 0x0f, 0xe5, 0xe5, 0x0d,
-0x01, 0x13, 0x09, 0x0a, 0x01, 0x06, 0xe5, 0x05,
-0xe5, 0x02, 0x0c, 0x03, 0x16, 0x10, 0x05, 0x09,
-0x0b, 0x09, 0x07, 0x2a, 0x01, 0x0d, 0x0f, 0x2b,
-0x13, 0x13, 0x09, 0x13, 0x2c, 0xe5, 0x11, 0x09,
-0x02, 0x02, 0x03, 0x15, 0x2e, 0x04, 0x03, 0x03,
-0x0b, 0x02, 0x83, 0x02, 0x14, 0x10, 0x12, 0x03,
-0x3b, 0x1b, 0x01, 0x01, 0x01, 0x08, 0x29, 0x09,
-0xe5, 0x07, 0x01, 0x07, 0x09, 0x0a, 0xe6, 0x10,
-0xe5, 0x12, 0x08, 0xe5, 0x02, 0x01, 0x03, 0x28,
-0x01, 0x0f, 0x02, 0x1c, 0xe6, 0x2c, 0xe7, 0x27,
-0x16, 0x0c, 0x1d, 0x10, 0x01, 0x14, 0x01, 0xe5,
-0x02, 0x1e, 0x04, 0x26, 0x1b, 0x2f, 0xe6, 0x0e,
-0x1e, 0x1c, 0x13, 0x13, 0x09, 0x05, 0x0d, 0x0c,
-0xe5, 0xe5, 0x08, 0x09, 0x13, 0x02, 0x03, 0x3b,
-0x22, 0xe5, 0xe6, 0x0d, 0x01, 0x39, 0x13, 0xe5,
-0x03, 0x08, 0x04, 0x09, 0x13, 0x10, 0x2d, 0x5c,
-0x02, 0xe6, 0x0c, 0xe5, 0x22, 0x19, 0x03, 0x06,
-0x08, 0xe5, 0x11, 0x09, 0x13, 0xe5, 0x01, 0x08,
-0x09, 0x33, 0x07, 0x02, 0x1a, 0x2b, 0x02, 0xe6,
-0x07, 0xe5, 0x03, 0xe6, 0x17, 0x02, 0xe5, 0x12,
-0xe5, 0x08, 0x01, 0xe5, 0x04, 0x02, 0x01, 0x04,
-0x05, 0x03, 0x02, 0x01, 0x02, 0x01, 0xe5, 0x07,
-0x09, 0xe5, 0x0a, 0x01, 0x02, 0x03, 0x01, 0xe5,
-0x05, 0x02, 0xe5, 0x04, 0x16, 0x01, 0x04, 0x07,
-0x0b, 0x16, 0x01, 0x04, 0x09, 0x1e, 0xe5, 0x01,
-0xe6, 0x01, 0x01, 0x08, 0xe6, 0x1a, 0x03, 0x0c,
-0xe5, 0x10, 0xe5, 0x07, 0xe5, 0x05, 0x05, 0x02,
-0x03, 0x01, 0x04, 0x08, 0x03, 0xe5, 0x0b, 0x05,
-0xe5, 0x02, 0x04, 0xe6, 0x05, 0x05, 0xe5, 0x01,
-0x16, 0x01, 0x04, 0x13, 0x15, 0xe5, 0x05, 0x02,
-0xe5, 0x04, 0x1b, 0x01, 0x02, 0x01, 0xe6, 0x03,
-0x05, 0x01, 0xe5, 0xe5, 0xe5, 0x18, 0x13, 0x01,
-0x01, 0x02, 0xe5, 0x02, 0x02, 0x08, 0x02, 0xe5,
-0x02, 0x02, 0x04, 0x04, 0x01, 0xe5, 0x02, 0x04,
-0x01, 0x02, 0x02, 0x08, 0x07, 0x09, 0x03, 0x11,
-0x77, 0x05, 0x01, 0xe5, 0x01, 0x0a, 0x01, 0x1b,
-0x10, 0x02, 0x01, 0x04, 0x04, 0x0e, 0x04, 0x07,
-0x06, 0x04, 0x04, 0x04, 0x0d, 0xe5, 0x0d, 0x13,
-0x7b, 0x02, 0xe5, 0xe6, 0x0c, 0x01, 0x04, 0x01,
-0x14, 0x11, 0x06, 0x02, 0x03, 0x02, 0x01, 0x01,
-0x05, 0x02, 0x03, 0x02, 0x01, 0x01, 0xe5, 0x03,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x01, 0x01,
-0x05, 0x09, 0xe5, 0x01, 0x02, 0x04, 0x09, 0x06,
-0x02, 0x01, 0x01, 0x19, 0x13, 0x1d, 0x09, 0x19,
-0x06, 0xe7, 0x01, 0x0a, 0x01, 0x01, 0x02, 0x01,
-0x14, 0x03, 0x13, 0x09, 0x01, 0x02, 0x0e, 0x01,
-0x02, 0xe5, 0x02, 0x09, 0x01, 0x02, 0x04, 0x04,
-0x0e, 0x02, 0x01, 0x02, 0x03, 0x0f, 0x03, 0x01,
-0x02, 0x72, 0x04, 0x01, 0xe5, 0x0b, 0x01, 0x1b,
-0x13, 0x01, 0x01, 0x07, 0x01, 0x02, 0x01, 0x04,
-0x02, 0x04, 0x01, 0x02, 0x01, 0xe5, 0x02, 0x02,
-0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xe6,
-0x06, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x01,
-0x06, 0xe5, 0x03, 0x01, 0x33, 0xe5, 0x19, 0x09,
-0x02, 0x01, 0x1a, 0xe5, 0xe7, 0xe6, 0x09, 0x01,
-0x1b, 0x13, 0x01, 0x02, 0x09, 0x01, 0x07, 0x02,
-0x06, 0x01, 0x02, 0x04, 0xe7, 0x05, 0xe6, 0x06,
-0xe6, 0x05, 0xe5, 0xe6, 0x02, 0x01, 0xe5, 0xe5,
-0xe5, 0xe6, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0xe6, 0x03, 0x01, 0x01, 0x18, 0xe5, 0x11, 0xe5,
-0xe5, 0x1a, 0x09, 0xe6, 0x1f, 0xe5, 0x12, 0xe5,
-0x2c, 0x09, 0x02, 0xe6, 0x03, 0x09, 0x04, 0x04,
-0x09, 0x02, 0xe5, 0x04, 0x09, 0x04, 0x04, 0x02,
-0xe5, 0x06, 0x04, 0x04, 0x09, 0x1d, 0x13, 0x04,
-0x18, 0x09, 0x25, 0x14, 0x2d, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x01, 0xe5, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x1b, 0xe5, 0x11, 0xe5, 0x1b, 0xe5, 0x07, 0xe5,
-0x1f, 0x01, 0xe7, 0x0d, 0x03, 0xe5, 0xe5, 0x01,
-0x06, 0x02, 0x09, 0x02, 0x06, 0x09, 0xe6, 0x01,
-0x01, 0x02, 0xe6, 0x06, 0xe6, 0x01, 0x01, 0x02,
-0xe6, 0xe5, 0x04, 0xe6, 0x01, 0x01, 0x02, 0xe7,
-0xe5, 0xe5, 0x01, 0xe6, 0xe5, 0x04, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x01, 0x02, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0x06, 0x09, 0x09, 0xe5, 0x07, 0x09,
-0xe5, 0x07, 0x09, 0x09, 0xe6, 0x06, 0xe6, 0x06,
-0x09, 0x0d, 0x03, 0xe5, 0x01, 0x13, 0x08, 0xe5,
-0x26, 0x13, 0x13, 0x1c, 0xe5, 0x07, 0xe5, 0x91,
-0x05, 0xe5, 0x13, 0x08, 0x29, 0x11, 0x13, 0x1b,
-0x03, 0x05, 0x03, 0x02, 0x04, 0x09, 0x27, 0x13,
-0x49, 0x01, 0xe5, 0x16, 0x08, 0x02, 0x1e, 0xe6,
-0xe5, 0x04, 0xe6, 0x03, 0x01, 0xe5, 0xe5, 0xe5,
-0x04, 0xe6, 0xe5, 0x04, 0x01, 0x01, 0x05, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0xe5, 0x05,
-0xe7, 0xe5, 0x04, 0xe6, 0xe5, 0x04, 0xe6, 0x14,
-0x05, 0xe6, 0x10, 0xe6, 0x14, 0x05, 0xe6, 0xe5,
-0x04, 0xe6, 0x1e, 0xe6, 0xe5, 0x01, 0x0e, 0x07,
-0x01, 0x05, 0x02, 0x1e, 0x08, 0xe5, 0x04, 0x01,
-0xe6, 0x07, 0xe5, 0x08, 0x08, 0xe5, 0x07, 0xe5,
-0x08, 0x08, 0xe5, 0x06, 0x02, 0xe5, 0x08, 0x09,
-0x1d, 0x13, 0x1d, 0x09, 0x19, 0xe5, 0x02, 0x01,
-0x03, 0xe5, 0x0d, 0x07, 0x05, 0x05, 0x1e, 0x05,
-0x03, 0x06, 0x01, 0x03, 0x02, 0x06, 0x09, 0x07,
-0x02, 0x06, 0x01, 0x07, 0x02, 0x05, 0x02, 0x02,
-0x01, 0x02, 0x01, 0x30, 0x13, 0x02, 0x1d, 0x28,
-0x01, 0xe6, 0x0e, 0x05, 0xe5, 0x01, 0x05, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x01, 0x06, 0xe6, 0x02, 0x02, 0xe7,
-0x02, 0x03, 0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x05,
-0xe7, 0x07, 0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x07,
-0xe5, 0x02, 0x02, 0xe7, 0x02, 0x02, 0xe7, 0x07,
-0xe5, 0x07, 0xe6, 0x03, 0x01, 0xe6, 0xe5, 0x08,
-0x19, 0x1e, 0x06, 0x01, 0xe5, 0x08, 0xe5, 0x04,
-0x01, 0xe6, 0x07, 0xe5, 0x04, 0x01, 0x07, 0x01,
-0xe5, 0x08, 0x08, 0xe5, 0x09, 0xe5, 0x04, 0x03,
-0xe5, 0x03, 0x03, 0xe5, 0x03, 0x1d, 0x0d, 0xe5,
-0x03, 0x17, 0x05, 0x03, 0xe5, 0x03, 0x15, 0x05,
-0x01, 0xe6, 0x03, 0x0d, 0x09, 0x04, 0x22, 0x04,
-0x04, 0x09, 0x04, 0x04, 0x09, 0x04, 0x04, 0x04,
-0x04, 0x09, 0x04, 0x01, 0x02, 0x06, 0x04, 0x03,
-0x05, 0xe5, 0xe6, 0x04, 0x03, 0x19, 0xe5, 0xe6,
-0x0e, 0xe5, 0xe6, 0x16, 0x01, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x13, 0xe5, 0x03, 0xe6, 0xe7, 0x0d,
-0x13, 0x1e, 0x08, 0xe5, 0x11, 0x13, 0x09, 0xe5,
-0x08, 0x09, 0x07, 0x02, 0xe5, 0x02, 0x09, 0xe5,
-0x07, 0x1d, 0xe5, 0x11, 0xe5, 0x1b, 0xe5, 0x07,
-0xe5, 0x14, 0x06, 0xe6, 0xe5, 0x08, 0x05, 0x11,
-0x6d, 0x0b, 0x06, 0x08, 0x27, 0x13, 0x1d, 0x09,
-0x1c, 0x01, 0x03, 0x03, 0x09, 0x02, 0x1a, 0x1e,
-0x01, 0x0e, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x11, 0x01, 0x1a, 0x05, 0xe5, 0x2f,
-0x0c, 0x10, 0x09, 0x1a, 0x06, 0xe7, 0x01, 0x02,
-0x05, 0x02, 0x02, 0x01, 0x02, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x04, 0x02, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0xe6, 0x06, 0x01,
-0x07, 0xe6, 0x06, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x07, 0xe6, 0x08, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x0c, 0x01, 0x03,
-0x09, 0x1f, 0xe5, 0x11, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x03, 0x03, 0xe5, 0x01, 0x05, 0xe6, 0x07, 0x07,
-0x02, 0x09, 0xe5, 0x02, 0x04, 0xe5, 0x1b, 0xe5,
-0x11, 0xe5, 0x03, 0x0a, 0x0c, 0xe5, 0x07, 0xe5,
-0x20, 0xe5, 0x01, 0xe5, 0x29, 0x06, 0x0c, 0x06,
-0x03, 0x08, 0x03, 0x02, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x03, 0x07, 0x01, 0xe5, 0x02,
-0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x08, 0x02,
-0x02, 0x03, 0x1d, 0x10, 0x02, 0xe5, 0x1b, 0x09,
-0x10, 0x10, 0x04, 0x01, 0xe5, 0x01, 0x27, 0x13,
-0x09, 0x09, 0x1f, 0x04, 0x01, 0x07, 0x11, 0x01,
-0x03, 0x07, 0xe5, 0x01, 0x06, 0x0f, 0x0d, 0x13,
-0x1d, 0x09, 0x1e, 0x05, 0xe5, 0x01, 0x17, 0xe6,
-0x2e, 0xe6, 0x06, 0xe7, 0x05, 0xe6, 0x10, 0xe6,
-0x06, 0xe6, 0x10, 0xe6, 0x1f, 0x17, 0x08, 0x0a,
-0x50, 0x01, 0xe5, 0x17, 0x16, 0x15, 0x03, 0x05,
-0x0d, 0x05, 0x08, 0xe5, 0x02, 0x09, 0x07, 0x0b,
-0x04, 0x04, 0x05, 0x32, 0xe5, 0x59, 0x01, 0x01,
-0x0b, 0x06, 0x17, 0x10, 0x0e, 0xe5, 0x06, 0x0a,
-0xe5, 0x12, 0x03, 0x0e, 0xe5, 0x02, 0x0d, 0x04,
-0x01, 0x0a, 0x08, 0x11, 0x12, 0xe5, 0xe5, 0x1f,
-0x07, 0x09, 0x1f, 0xe7, 0x2f, 0x0e, 0x04, 0x04,
-0x01, 0x0a, 0x03, 0x02, 0x01, 0x04, 0x01, 0x0a,
-0x02, 0x09, 0x06, 0x0d, 0x01, 0x09, 0x03, 0x1a,
-0x18, 0x57, 0xe7, 0x05, 0x01, 0x20, 0x15, 0x12,
-0x09, 0x28, 0x13, 0x05, 0x09, 0x34, 0xe5, 0x46,
-0x06, 0x01, 0x01, 0x17, 0xe5, 0x2e, 0x07, 0x0c,
-0xe6, 0x02, 0x04, 0x09, 0x26, 0x08, 0x0d, 0x08,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x12, 0x1c, 0xe6,
-0x29, 0x02, 0x01, 0xe5, 0x18, 0x46, 0x08, 0x0a,
-0xe5, 0x08, 0x0e, 0x0a, 0x17, 0x05, 0x03, 0x0a,
-0x04, 0x04, 0x03, 0x0f, 0x1b, 0x2e, 0x01, 0xe5,
-0x17, 0x29, 0x13, 0x0d, 0x04, 0x04, 0x04, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x08, 0x06, 0x09,
-0x10, 0x07, 0x09, 0xe6, 0x07, 0x03, 0x09, 0x0f,
-0x36, 0xe9, 0x66, 0xe5, 0x01, 0x06, 0x09, 0x09,
-0x0c, 0x0b, 0x09, 0x07, 0x17, 0x02, 0x01, 0x04,
-0x03, 0xe5, 0xe5, 0x19, 0xe5, 0x34, 0x01, 0x01,
-0xe5, 0xe5, 0x02, 0x03, 0x07, 0x31, 0xe5, 0x0c,
-0x04, 0x0c, 0x01, 0x01, 0x07, 0x03, 0x01, 0x03,
-0x01, 0x07, 0x01, 0x0d, 0x03, 0x01, 0x07, 0x09,
-0x1f, 0xe5, 0x07, 0x02, 0x06, 0x04, 0x02, 0x01,
-0x0b, 0x1b, 0x09, 0x09, 0x08, 0xe9, 0x25, 0xe5,
-0x03, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x04, 0x01,
-0xe6, 0x04, 0x06, 0xe5, 0xe5, 0xe7, 0x06, 0x04,
-0xe5, 0xe5, 0xe5, 0xe8, 0x05, 0xe5, 0x05, 0x11,
-0x01, 0x0c, 0xe5, 0xe6, 0x05, 0x02, 0xe5, 0x04,
-0x01, 0xe5, 0x05, 0x13, 0x05, 0x01, 0x0b, 0x16,
-0x01, 0x04, 0x09, 0x02, 0xe5, 0x19, 0xe6, 0x01,
-0xe5, 0x01, 0x01, 0x2c, 0xe5, 0x08, 0x01, 0xe5,
-0x08, 0x06, 0x01, 0xe6, 0x01, 0x0c, 0xe5, 0xe5,
-0x01, 0x03, 0x01, 0xe5, 0x01, 0x06, 0xe5, 0x11,
-0x0f, 0x02, 0x01, 0x04, 0x02, 0xe5, 0x04, 0x15,
-0xe5, 0x0b, 0xe6, 0x02, 0xe5, 0x1b, 0xe5, 0x05,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x16, 0x01, 0x02,
-0x01, 0xe6, 0x03, 0x2a, 0x09, 0x05, 0x03, 0x05,
-0x09, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x07, 0x13,
-0x01, 0x07, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x02,
-0xe5, 0x03, 0x01, 0x1f, 0x13, 0x02, 0xe5, 0xe5,
-0xe5, 0x0a, 0x43, 0x04, 0xe5, 0x01, 0x02, 0x3c,
-0x09, 0x09, 0x09, 0x01, 0x07, 0x05, 0xe5, 0x01,
-0x06, 0xe5, 0xe5, 0xe5, 0x06, 0x01, 0x04, 0x02,
-0x01, 0x04, 0xe5, 0x02, 0x01, 0x36, 0x02, 0x01,
-0x51, 0x02, 0x02, 0xe5, 0x3e, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x04, 0x09, 0xe5,
-0x01, 0x02, 0x03, 0x02, 0xe5, 0xe5, 0x04, 0x01,
-0x1a, 0x09, 0x09, 0x13, 0x02, 0x01, 0x01, 0x03,
-0x02, 0x05, 0x1d, 0x09, 0x18, 0x06, 0xe8, 0x01,
-0x02, 0x39, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x03, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x04, 0x03,
-0x09, 0x05, 0x03, 0x02, 0x01, 0xe5, 0xe5, 0xe5,
-0x04, 0x03, 0x0b, 0x37, 0x03, 0x02, 0x01, 0x4a,
-0x03, 0x01, 0xe6, 0x2e, 0x0a, 0xe5, 0x01, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x09,
-0x09, 0x01, 0x07, 0x01, 0x07, 0x01, 0x09, 0x01,
-0x0d, 0xe5, 0x05, 0x0a, 0x18, 0x01, 0x29, 0x09,
-0x02, 0x01, 0x11, 0x08, 0x02, 0x01, 0x3c, 0x01,
-0xe5, 0xe5, 0x06, 0x01, 0x07, 0x09, 0x01, 0x07,
-0x03, 0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0x03, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x08, 0xe5, 0xe5, 0x0a,
-0xe5, 0xe5, 0xe5, 0x04, 0x08, 0xe5, 0x11, 0xe5,
-0x03, 0x01, 0x0b, 0xe5, 0x1c, 0x09, 0xe6, 0x12,
-0xe6, 0x06, 0xe5, 0xe6, 0x69, 0x09, 0x33, 0x09,
-0x09, 0x13, 0x13, 0x1d, 0x09, 0x22, 0x01, 0xe5,
-0x01, 0x67, 0xe5, 0x07, 0xe5, 0x01, 0x2f, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x11, 0xe5, 0x11, 0xe5,
-0x1b, 0xe5, 0x07, 0xe5, 0x1f, 0xe5, 0x01, 0xe5,
-0x0d, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0xe5, 0x04, 0x02, 0xe5, 0x03, 0x03,
-0x04, 0x01, 0x02, 0x09, 0x08, 0x02, 0x02, 0x06,
-0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0x09, 0xe5,
-0x07, 0x09, 0xe5, 0x07, 0x09, 0x09, 0xe6, 0x06,
-0xe6, 0x06, 0x09, 0x0d, 0xe5, 0xe7, 0x01, 0x3b,
-0x09, 0x09, 0x09, 0x12, 0xe5, 0x12, 0x1f, 0x86,
-0x02, 0xe5, 0x01, 0x3d, 0x09, 0x08, 0x0a, 0x0f,
-0x03, 0x05, 0x0d, 0x16, 0x06, 0x07, 0x13, 0x13,
-0x13, 0x48, 0xe5, 0xe6, 0x07, 0x36, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x09, 0xe7, 0x05,
-0xe5, 0xe5, 0x03, 0x01, 0x09, 0x07, 0x01, 0x09,
-0x01, 0x04, 0x04, 0xe7, 0x06, 0xe6, 0x06, 0xe6,
-0x0a, 0x04, 0xe5, 0xe5, 0x03, 0x01, 0x04, 0x05,
-0xe6, 0x0f, 0x04, 0x05, 0xe6, 0xe5, 0x04, 0xe6,
-0x1f, 0xe7, 0x3e, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x04, 0x02,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0x01, 0xe5,
-0x05, 0x02, 0xe5, 0x08, 0x09, 0x11, 0xe6, 0x04,
-0x02, 0x0a, 0x11, 0xe5, 0x09, 0x09, 0x19, 0xe5,
-0x02, 0x01, 0xe6, 0xe6, 0x3d, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0x09, 0x04, 0x0c,
-0x01, 0x09, 0x07, 0x01, 0x08, 0xe5, 0xe5, 0x08,
-0x14, 0x12, 0x07, 0x01, 0x0a, 0x12, 0x22, 0x13,
-0x01, 0x01, 0xe5, 0x13, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x05, 0xe8, 0xe5, 0x02, 0xe8,
-0xe5, 0x02, 0xe8, 0xe5, 0x02, 0xe8, 0xe5, 0x02,
-0xe7, 0x01, 0xe5, 0x01, 0xe8, 0x04, 0x02, 0xe5,
-0xe5, 0x02, 0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0xe6,
-0xe5, 0x02, 0xe7, 0x01, 0x01, 0x04, 0xe7, 0x01,
-0x02, 0xe7, 0x02, 0x03, 0xe6, 0x05, 0x01, 0xe5,
-0x07, 0xe5, 0x01, 0x03, 0xe8, 0x06, 0xe5, 0x05,
-0xe7, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x02, 0x02,
-0xe7, 0x02, 0x02, 0xe7, 0x05, 0x01, 0xe5, 0x06,
-0xe7, 0xe5, 0x01, 0x03, 0x01, 0x1a, 0x1d, 0xe5,
-0x06, 0x03, 0xe5, 0x03, 0x03, 0xe5, 0x03, 0x03,
-0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x03, 0xe6, 0x01,
-0x0e, 0x03, 0xe5, 0x03, 0x03, 0xe5, 0x03, 0x03,
-0xe5, 0x0c, 0x02, 0xe6, 0x03, 0x03, 0x05, 0x03,
-0x09, 0x08, 0xe5, 0x04, 0x02, 0x0a, 0x05, 0x0c,
-0x0a, 0x05, 0x03, 0xe5, 0x03, 0x0d, 0xe5, 0x03,
-0x01, 0x08, 0xe5, 0x19, 0x21, 0x01, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0x02,
-0x02, 0x03, 0x05, 0x03, 0x02, 0x06, 0xe5, 0xe5,
-0x05, 0x02, 0x06, 0x0b, 0xe5, 0x03, 0xe5, 0xe6,
-0x02, 0x01, 0x03, 0x05, 0xe5, 0xe5, 0x03, 0x08,
-0xe5, 0xe6, 0xe6, 0x0e, 0xe5, 0xe6, 0x0b, 0x0a,
-0x01, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x07, 0x0b,
-0xe5, 0x03, 0x01, 0xe7, 0x3a, 0x01, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x03,
-0x01, 0x07, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0x02, 0x07, 0x04, 0x04,
-0xe5, 0x07, 0x05, 0x12, 0x04, 0xe5, 0x02, 0x0a,
-0x03, 0xe5, 0x0c, 0x0e, 0xe5, 0x07, 0xe5, 0x06,
-0x0a, 0x02, 0x07, 0x02, 0x1a, 0x1d, 0x03, 0xe7,
-0x05, 0xe7, 0x04, 0x01, 0xe6, 0x01, 0x02, 0x01,
-0xe6, 0x01, 0x03, 0xe6, 0x01, 0x03, 0x01, 0xe5,
-0x05, 0xe5, 0x03, 0x03, 0x03, 0x01, 0x03, 0x05,
-0x03, 0x01, 0xe5, 0x08, 0x02, 0x05, 0x13, 0x06,
-0x08, 0x03, 0x13, 0x0f, 0x0d, 0x09, 0x06, 0x02,
-0x06, 0x03, 0x04, 0x02, 0x01, 0x01, 0xe7, 0x3d,
-0x02, 0x10, 0x02, 0x10, 0x09, 0x02, 0x0e, 0x0b,
-0x02, 0x10, 0x19, 0x19, 0x02, 0x1e, 0x13, 0x1a,
-0x05, 0x02, 0xe5, 0x10, 0x01, 0x07, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x01, 0x05, 0x01, 0x04, 0x02,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x04,
-0x02, 0x01, 0x09, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x05, 0xe5, 0x02, 0xe6,
-0xe5, 0x3e, 0x07, 0x0b, 0x02, 0x0a, 0x03, 0x02,
-0x04, 0x03, 0x02, 0x05, 0x14, 0x08, 0x01, 0x03,
-0x08, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5, 0x0d,
-0x03, 0xe5, 0x04, 0xe5, 0x0a, 0xe5, 0x03, 0x17,
-0xe5, 0x07, 0xe5, 0x22, 0xe7, 0x0a, 0x13, 0x08,
-0x14, 0x06, 0x09, 0x03, 0x04, 0xe5, 0x0b, 0x09,
-0xe5, 0x07, 0x11, 0x09, 0x05, 0x02, 0x07, 0x01,
-0x02, 0x04, 0x08, 0xe5, 0x0e, 0x02, 0x06, 0x0c,
-0x11, 0x0c, 0x09, 0x1a, 0x06, 0x01, 0xe5, 0xe5,
-0x42, 0x13, 0x09, 0x0a, 0x26, 0xe5, 0x04, 0x05,
-0x04, 0x09, 0x11, 0x0c, 0x03, 0x0f, 0x1c, 0x09,
-0x11, 0x0d, 0xe5, 0x02, 0xe8, 0x24, 0x1b, 0x07,
-0x02, 0x06, 0x01, 0x07, 0x01, 0x0a, 0x0a, 0x05,
-0x01, 0x0a, 0x06, 0x01, 0xe5, 0x02, 0x06, 0x06,
-0x27, 0x07, 0x01, 0xe5, 0xe6, 0x02, 0xe5, 0x03,
-0x01, 0x02, 0x44, 0xe6, 0xe5, 0x3a, 0xe5, 0x01,
-0x0b, 0x0a, 0x03, 0x05, 0x03, 0xe5, 0x10, 0x01,
-0x04, 0xe5, 0x11, 0x04, 0x01, 0x01, 0x0d, 0x0b,
-0x23, 0x21, 0x36, 0x13, 0x09, 0x23, 0x0d, 0x03,
-0x01, 0x05, 0x01, 0x01, 0x02, 0x06, 0x05, 0x08,
-0x02, 0x01, 0x0d, 0xe5, 0x01, 0x01, 0x07, 0x04,
-0x09, 0x01, 0x1c, 0x03, 0x0b, 0x01, 0x01, 0x01,
-0x04, 0xe5, 0x36, 0x06, 0x0c, 0x02, 0x02, 0x0d,
-0x15, 0x13, 0xe5, 0x02, 0x13, 0x04, 0x04, 0x09,
-0x02, 0xe5, 0x0d, 0xe5, 0x11, 0xe5, 0x09, 0x23,
-0x01, 0x08, 0x0d, 0x09, 0x04, 0x4b, 0x03, 0x21,
-0x3f, 0x05, 0x2d, 0x3b, 0x0b, 0x38, 0x16, 0xe5,
-0x05, 0x38, 0xe5, 0x11, 0xe5, 0x07, 0xe6, 0x02,
-0x03, 0xe6, 0x02, 0x07, 0x02, 0x01, 0x01, 0x01,
-0x06, 0xe6, 0x03, 0x03, 0x08, 0x16, 0x07, 0x14,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x03, 0x02, 0x16,
-0x19, 0xe6, 0x18, 0x01, 0xe5, 0x3e, 0xe5, 0x11,
-0xe5, 0x0a, 0x09, 0x13, 0x05, 0x03, 0x09, 0x06,
-0x08, 0x0e, 0x32, 0x21, 0x0e, 0x14, 0x05, 0xe6,
-0x01, 0xe5, 0x10, 0x12, 0x09, 0x09, 0x04, 0x04,
-0x0b, 0x02, 0x04, 0x04, 0x04, 0x01, 0x02, 0x13,
-0x10, 0x02, 0x0f, 0x09, 0xe5, 0x04, 0x03, 0x0a,
-0x0f, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0x09, 0x16,
-0x12, 0x0b, 0x01, 0xe6, 0x01, 0x3d, 0x13, 0xe5,
-0x03, 0x03, 0x09, 0x0c, 0x06, 0x06, 0x0c, 0x02,
-0x01, 0x09, 0x09, 0x07, 0x26, 0x01, 0xe5, 0x32,
-0x1c, 0xe7, 0xe5, 0x1a, 0x0c, 0x19, 0x05, 0x0d,
-0x03, 0x05, 0x09, 0xe5, 0x0b, 0x05, 0x13, 0x01,
-0x0f, 0x0e, 0x13, 0x12, 0x0d, 0x2e, 0x0f, 0x06,
-0xe6, 0xe7, 0x17, 0xe6, 0xe5, 0xe5, 0x02, 0xe5,
-0x0b, 0xe5, 0x05, 0x01, 0xe5, 0x04, 0x09, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0x08, 0xe5, 0x01,
-0xe5, 0xe5, 0x02, 0x09, 0xe5, 0x03, 0x03, 0xe5,
-0x07, 0xe5, 0xe5, 0xe5, 0x04, 0xe5, 0xe6, 0x05,
-0x09, 0x01, 0xe5, 0x04, 0xe5, 0x01, 0x01, 0xe5,
-0x01, 0xe5, 0x08, 0xe5, 0x03, 0x03, 0x09, 0xe5,
-0x10, 0xe5, 0x01, 0x01, 0x04, 0x02, 0xe5, 0x04,
-0x1e, 0xe5, 0xe6, 0xe5, 0x01, 0x01, 0x01, 0x0d,
-0xe5, 0x06, 0xe5, 0x1c, 0xe5, 0x01, 0x01, 0x03,
-0xe5, 0x07, 0xe5, 0x01, 0x01, 0x06, 0x03, 0x09,
-0xe5, 0xe5, 0xe6, 0x02, 0x05, 0x02, 0x06, 0x03,
-0x05, 0x02, 0x03, 0xe5, 0x09, 0x01, 0x04, 0x09,
-0x01, 0xe5, 0x08, 0x01, 0xe5, 0x0c, 0x05, 0xe5,
-0x0b, 0x0c, 0x01, 0x06, 0xe5, 0x01, 0xe5, 0x01,
-0x09, 0x1b, 0x01, 0x02, 0x02, 0xe5, 0x03, 0x01,
-0x14, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x1a, 0x0b,
-0x07, 0x04, 0xe5, 0x06, 0xe5, 0x0b, 0x13, 0x19,
-0x1d, 0x05, 0x03, 0xe5, 0xe5, 0xe6, 0xe5, 0x03,
-0x01, 0xe5, 0xe5, 0xe5, 0x1c, 0x07, 0x04, 0x01,
-0xe5, 0xe5, 0x1c, 0x06, 0xe6, 0x01, 0x1a, 0xe5,
-0x01, 0x01, 0x17, 0xe5, 0x11, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x0b, 0x06, 0xe5, 0xe5, 0x08,
-0x05, 0xe5, 0x01, 0x33, 0x06, 0x02, 0x01, 0x07,
-0x01, 0x25, 0x09, 0x01, 0x1f, 0x03, 0xe7, 0x39,
-0x09, 0xe5, 0x01, 0x05, 0x09, 0xe5, 0x01, 0x05,
-0x01, 0x01, 0x07, 0x01, 0xe5, 0x03, 0x09, 0xe5,
-0x01, 0xe5, 0x03, 0x09, 0xe5, 0x01, 0x11, 0x09,
-0x0e, 0x07, 0x06, 0x04, 0x01, 0x02, 0x01, 0x01,
-0xe5, 0xe5, 0x01, 0x1a, 0x02, 0x09, 0x22, 0xe5,
-0x01, 0x02, 0x1f, 0x1d, 0x02, 0x01, 0x0e, 0x09,
-0x04, 0x04, 0x02, 0x01, 0xe5, 0x02, 0x09, 0x05,
-0x03, 0x09, 0x2f, 0x03, 0x09, 0x05, 0x01, 0x01,
-0x01, 0x02, 0xe5, 0xe5, 0xe5, 0x18, 0x03, 0x04,
-0x04, 0x1d, 0x04, 0x01, 0xe5, 0x1f, 0x01, 0x0e,
-0x0e, 0x0e, 0x04, 0x07, 0x04, 0x02, 0x0b, 0x06,
-0x02, 0x06, 0x01, 0xe5, 0x05, 0x02, 0x10, 0x01,
-0x01, 0x05, 0xe6, 0x05, 0x0f, 0x09, 0x01, 0x04,
-0x01, 0xe5, 0xe5, 0x06, 0x01, 0x03, 0xe5, 0x17,
-0x01, 0xe5, 0xe8, 0xe5, 0xe5, 0x01, 0x01, 0x1a,
-0x01, 0x02, 0x21, 0x01, 0x0e, 0xe5, 0x04, 0xe7,
-0x03, 0x01, 0xe5, 0x07, 0xe5, 0xe7, 0x01, 0x01,
-0xe5, 0x03, 0x03, 0xe5, 0x05, 0x07, 0x03, 0xe5,
-0x01, 0x01, 0x03, 0xe5, 0xe5, 0xe6, 0x02, 0xe5,
-0xe8, 0x02, 0xe5, 0xe5, 0xe5, 0x08, 0x06, 0xe5,
-0xe5, 0xe5, 0x04, 0x0e, 0x09, 0x01, 0x01, 0xe5,
-0xe5, 0xe6, 0xe5, 0xe6, 0x03, 0x01, 0x01, 0xe5,
-0xe5, 0x15, 0x04, 0xe6, 0x01, 0x01, 0x02, 0xe6,
-0x1f, 0xe5, 0x30, 0x01, 0xe5, 0x02, 0x09, 0x09,
-0x09, 0x09, 0x02, 0x02, 0x0d, 0x09, 0x09, 0x09,
-0x10, 0x04, 0x09, 0x02, 0xe5, 0x18, 0x09, 0x09,
-0x04, 0x18, 0x09, 0x21, 0x03, 0x02, 0x35, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe5, 0x0b, 0xe5, 0x03, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x11, 0xe5, 0x07, 0xe5,
-0x1b, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x1b, 0xe5,
-0x07, 0xe5, 0x1f, 0xe6, 0xe6, 0x0d, 0x09, 0x09,
-0x09, 0x09, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5,
-0x04, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x02,
-0x01, 0x02, 0x09, 0xe5, 0x04, 0x02, 0xe5, 0xe5,
-0xe5, 0xe5, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0xe5,
-0x03, 0x05, 0x06, 0x02, 0xe5, 0x07, 0xe6, 0x06,
-0x09, 0x09, 0xe5, 0xe5, 0x05, 0xe5, 0x07, 0xe5,
-0xe5, 0x05, 0x09, 0x09, 0xe7, 0x05, 0xe7, 0x05,
-0x09, 0x0d, 0xe5, 0xe7, 0x01, 0x31, 0x08, 0xe5,
-0x11, 0xe5, 0x07, 0xe5, 0x08, 0x12, 0xe5, 0x08,
-0x08, 0xe5, 0x11, 0x02, 0x31, 0x54, 0x02, 0xe6,
-0xe5, 0x32, 0x05, 0x03, 0x05, 0x09, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x0f, 0x03, 0x05, 0x01, 0x07,
-0x03, 0x05, 0x0d, 0x07, 0x27, 0x03, 0x05, 0x09,
-0x48, 0xe5, 0xe6, 0xe5, 0x28, 0x01, 0x09, 0xe5,
-0xe5, 0x06, 0x01, 0x04, 0x01, 0xe7, 0x06, 0x01,
-0x03, 0x02, 0xe7, 0x03, 0x01, 0x0a, 0xe6, 0x02,
-0x02, 0xe7, 0x05, 0xe7, 0x02, 0x02, 0xe7, 0xe5,
-0x02, 0x07, 0x04, 0xe7, 0xe5, 0x01, 0x01, 0xe7,
-0x1a, 0xe6, 0xe5, 0x03, 0xe7, 0xe5, 0xe6, 0xe8,
-0x1a, 0xe6, 0x06, 0xe6, 0x1e, 0xe5, 0x01, 0x2b,
-0x01, 0xe5, 0x05, 0x02, 0xe5, 0x07, 0xe5, 0x04,
-0x01, 0xe6, 0x03, 0x03, 0xe5, 0x04, 0x01, 0xe6,
-0x04, 0x01, 0xe5, 0x09, 0x05, 0x01, 0xe6, 0x03,
-0xe5, 0x01, 0xe5, 0x04, 0x01, 0xe6, 0x10, 0x02,
-0xe5, 0x04, 0x01, 0xe6, 0x0b, 0x09, 0x06, 0x07,
-0xe6, 0x04, 0x01, 0xe6, 0x1c, 0x09, 0x19, 0xe5,
-0x02, 0x02, 0xe7, 0x27, 0x0e, 0x04, 0x01, 0x06,
-0x03, 0x01, 0x01, 0x02, 0x09, 0x0c, 0x01, 0x0b,
-0x01, 0xe5, 0x05, 0x07, 0xe5, 0x02, 0x06, 0x13,
-0x0b, 0x0c, 0x08, 0x06, 0x08, 0xe5, 0x05, 0x01,
-0xe5, 0x20, 0x09, 0x1e, 0x01, 0xe5, 0x14, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0x01,
-0x04, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0x06,
-0xe6, 0x06, 0xe6, 0x06, 0xe5, 0xe5, 0x06, 0xe7,
-0x01, 0x02, 0xe7, 0x06, 0xe6, 0x07, 0xe5, 0x07,
-0xe5, 0x05, 0xe7, 0x01, 0x05, 0xe6, 0xe5, 0x02,
-0xe7, 0x07, 0xe5, 0x06, 0xe6, 0x02, 0x02, 0xe7,
-0x02, 0x02, 0xe7, 0x07, 0xe5, 0x07, 0xe7, 0x02,
-0x04, 0xe5, 0x2a, 0x01, 0xe6, 0x06, 0x09, 0x0a,
-0x08, 0x0a, 0x06, 0x01, 0xe5, 0x12, 0x08, 0xe6,
-0x07, 0x0b, 0xe5, 0x06, 0xe6, 0x04, 0x01, 0xe5,
-0x08, 0x09, 0x09, 0xe5, 0x06, 0xe5, 0x08, 0xe5,
-0x17, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0x17, 0x01,
-0x01, 0x2b, 0x01, 0x07, 0x09, 0x01, 0x11, 0x01,
-0x0a, 0x06, 0x01, 0xe5, 0x19, 0x14, 0x09, 0xe5,
-0x04, 0x02, 0xe5, 0xe6, 0x04, 0x1a, 0x02, 0xe5,
-0x0e, 0x02, 0x1a, 0x02, 0x06, 0x02, 0x03, 0x10,
-0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x36, 0x14, 0x1a,
-0x01, 0x14, 0x08, 0x0a, 0x0f, 0x04, 0x04, 0xe5,
-0x07, 0x05, 0x09, 0x0d, 0xe5, 0x02, 0xe5, 0x0c,
-0xe5, 0x11, 0x09, 0xe5, 0x07, 0xe5, 0x14, 0x08,
-0x01, 0x2e, 0x06, 0x04, 0x04, 0x04, 0x09, 0x04,
-0x04, 0x09, 0x04, 0x02, 0x0b, 0x09, 0x04, 0x04,
-0x09, 0x09, 0x03, 0x01, 0xe5, 0x03, 0xe5, 0xe6,
-0x04, 0x03, 0x03, 0x09, 0x0b, 0xe5, 0xe7, 0x03,
-0x09, 0xe5, 0xe6, 0x10, 0x07, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x02, 0x11, 0x03, 0x03, 0x01, 0x1b,
-0x09, 0x17, 0x01, 0xe5, 0xe5, 0x0f, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x01, 0xe5, 0xe5, 0x03,
-0x02, 0x06, 0x01, 0xe5, 0x05, 0x02, 0x01, 0x05,
-0x28, 0xe5, 0xe5, 0x0f, 0x02, 0x17, 0xe5, 0x08,
-0x30, 0x03, 0x01, 0xe5, 0x01, 0x0b, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0xe5,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x09, 0x01, 0xe6, 0x04, 0x01, 0xe5,
-0x05, 0x01, 0xe6, 0x04, 0x01, 0x03, 0x03, 0x01,
-0x07, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0a, 0x01,
-0x01, 0x0b, 0x23, 0x07, 0x09, 0xe5, 0x07, 0xe5,
-0x03, 0x01, 0xe7, 0x05, 0x01, 0x07, 0x01, 0x01,
-0x01, 0x05, 0x07, 0x01, 0xe5, 0x07, 0x07, 0x01,
-0xe5, 0x13, 0xe5, 0x07, 0xe5, 0x08, 0xe5, 0x01,
-0x04, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0x09, 0xe5,
-0x1b, 0xe5, 0x07, 0xe5, 0x02, 0x1d, 0xe5, 0xe7,
-0x09, 0x1e, 0x04, 0x01, 0x01, 0x03, 0x01, 0x01,
-0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x07, 0x02, 0x06, 0x04, 0x01, 0x09, 0x02,
-0x03, 0x02, 0x02, 0x04, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0xe5, 0x09, 0x0b, 0x07, 0x03, 0x06, 0x02,
-0x01, 0x04, 0x03, 0x0a, 0x01, 0x0c, 0x1b, 0x01,
-0x15, 0x10, 0x03, 0xe5, 0x14, 0x0a, 0x09, 0x06,
-0x02, 0x04, 0x11, 0x08, 0x10, 0x02, 0x02, 0x01,
-0x05, 0x07, 0x01, 0x09, 0x07, 0x11, 0x03, 0x01,
-0x07, 0x01, 0x14, 0x03, 0x03, 0x12, 0x01, 0x1b,
-0x01, 0x07, 0x01, 0x20, 0x01, 0x01, 0xe6, 0x0f,
-0x04, 0x04, 0x14, 0x08, 0x08, 0x07, 0x01, 0x09,
-0x0e, 0xe5, 0xe5, 0xe5, 0x0f, 0x07, 0x14, 0x26,
-0xe5, 0x05, 0x10, 0xe5, 0xe5, 0x05, 0x02, 0x09,
-0x3f, 0xe5, 0xe6, 0x30, 0x07, 0x06, 0x06, 0x01,
-0x01, 0x04, 0xe5, 0x06, 0x0f, 0x23, 0x07, 0x02,
-0xe6, 0x19, 0x0a, 0x22, 0x4a, 0x03, 0x18, 0xe5,
-0x08, 0x13, 0x03, 0x05, 0x03, 0x05, 0x07, 0x01,
-0x09, 0x07, 0x01, 0xe5, 0x03, 0x03, 0x05, 0x03,
-0x02, 0x06, 0x09, 0x06, 0xe5, 0x01, 0xe5, 0x02,
-0x05, 0xe5, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0xe5,
-0x05, 0x02, 0x06, 0xe5, 0xe5, 0x01, 0x0d, 0x03,
-0x12, 0x37, 0x0b, 0x05, 0xe5, 0x08, 0x04, 0xe5,
-0x03, 0x0e, 0x01, 0x03, 0x03, 0x09, 0x01, 0x01,
-0x05, 0x03, 0x01, 0x03, 0x01, 0x07, 0x09, 0x09,
-0x09, 0x09, 0x08, 0x01, 0x0a, 0x08, 0x01, 0x03,
-0x07, 0x05, 0xe5, 0x08, 0x10, 0x01, 0xe7, 0x0a,
-0x11, 0x13, 0x0f, 0x07, 0xe6, 0xe5, 0x02, 0x10,
-0xe5, 0x0a, 0x06, 0x30, 0x3c, 0x02, 0x01, 0x18,
-0x09, 0x06, 0x0b, 0x3e, 0x1d, 0x01, 0x01, 0x13,
-0x22, 0x07, 0xe5, 0x09, 0x02, 0xe5, 0x03, 0x0a,
-0x08, 0x13, 0xe5, 0x11, 0xe5, 0x07, 0xe5, 0x09,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x0b, 0xe9,
-0x04, 0xe6, 0x07, 0xe6, 0x06, 0xe5, 0x1b, 0xe5,
-0x0f, 0x08, 0x02, 0x06, 0x02, 0xe5, 0x02, 0x18,
-0x19, 0x08, 0x0a, 0x08, 0x0a, 0x06, 0x01, 0x11,
-0x01, 0xe5, 0x06, 0x0a, 0xe5, 0x07, 0x0b, 0xe5,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x14, 0x06,
-0x02, 0x07, 0x0a, 0x1b, 0x01, 0x1f, 0x03, 0x01,
-0xe5, 0x20, 0x01, 0x01, 0xe5, 0x0f, 0x03, 0x05,
-0x09, 0x04, 0x04, 0x06, 0x02, 0x03, 0x05, 0x05,
-0x03, 0x03, 0x05, 0x09, 0x06, 0x02, 0x0b, 0x03,
-0x05, 0x03, 0x05, 0x07, 0x01, 0x07, 0x01, 0x01,
-0x07, 0x09, 0x03, 0xe5, 0x07, 0x04, 0x0e, 0x34,
-0xe7, 0x17, 0x09, 0x10, 0x01, 0xe6, 0x06, 0xe5,
-0x02, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x01, 0xe5,
-0x03, 0xe5, 0x07, 0xe5, 0x09, 0x09, 0xe5, 0x08,
-0xe5, 0x07, 0x06, 0x02, 0x01, 0xe5, 0x05, 0x09,
-0x28, 0x2a, 0xe5, 0x01, 0xe5, 0x18, 0x09, 0x0c,
-0x05, 0x09, 0x09, 0x02, 0x06, 0x09, 0x05, 0x03,
-0x02, 0x06, 0x03, 0x05, 0x09, 0x02, 0x06, 0x07,
-0x01, 0x0b, 0x08, 0xe5, 0x08, 0x0a, 0x07, 0xe5,
-0x07, 0x01, 0x0e, 0x30, 0x14, 0xe6, 0xe7, 0x0a,
-0x09, 0x09, 0x0c, 0xe5, 0x01, 0x01, 0xe5, 0x02,
-0x02, 0x01, 0xe5, 0x02, 0x02, 0xe5, 0xe5, 0x02,
-0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5, 0x02,
-0x05, 0x03, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x02,
-0x01, 0xe5, 0x03, 0x03, 0x02, 0xe5, 0xe5, 0x02,
-0x05, 0x03, 0x02, 0xe5, 0xe5, 0x02, 0xe5, 0xe5,
-0xe6, 0x02, 0xe5, 0x07, 0x0b, 0xe5, 0x05, 0x19,
-0x0c, 0xe5, 0x1d, 0xea, 0x01, 0x01, 0x08, 0x04,
-0x04, 0xe6, 0x06, 0xe6, 0x0a, 0x02, 0xe5, 0x02,
-0xe5, 0x02, 0xe5, 0x02, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0xe5, 0x07, 0xe5,
-0x02, 0x01, 0x02, 0xe5, 0x07, 0x02, 0x06, 0xe5,
-0x07, 0x09, 0xe5, 0xe5, 0x07, 0x09, 0xe5, 0x07,
-0xe5, 0x02, 0xe5, 0x02, 0xe5, 0x02, 0x01, 0x02,
-0x04, 0xe5, 0x01, 0xe5, 0x0d, 0x01, 0x1e, 0x0c,
-0x1c, 0x01, 0x02, 0xe8, 0x03, 0x08, 0x06, 0xe5,
-0xe5, 0xe5, 0x03, 0x01, 0x02, 0x04, 0xe5, 0xe5,
-0xe5, 0x03, 0x04, 0x04, 0x04, 0x02, 0x01, 0x04,
-0x04, 0x04, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x04, 0x04, 0x06, 0x01, 0xe5, 0xe5, 0x03,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x04, 0x01, 0x02, 0x02, 0x03, 0xe5, 0x11, 0x19,
-0x29, 0x06, 0xe6, 0x01, 0x0a, 0x06, 0x02, 0x01,
-0x07, 0x06, 0xe5, 0xe5, 0xe5, 0x03, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0x02, 0x06, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x30, 0x2b, 0x04,
-0xe6, 0x0c, 0x07, 0x01, 0x01, 0x02, 0x04, 0x01,
-0x03, 0x02, 0x0c, 0x02, 0x01, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0x02, 0x02, 0x03, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x06, 0x02, 0x06, 0x02, 0x03,
-0x02, 0x02, 0xe5, 0x01, 0x04, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x04, 0x04,
-0x0e, 0x01, 0x02, 0x18, 0x30, 0x01, 0x02, 0x0a,
-0x03, 0x05, 0x01, 0x02, 0x04, 0x01, 0x01, 0x02,
-0x01, 0x04, 0x05, 0x03, 0x02, 0x01, 0xe5, 0x02,
-0x05, 0x03, 0x01, 0x01, 0xe6, 0x02, 0x04, 0xe5,
-0x02, 0x01, 0x02, 0xe5, 0x02, 0x01, 0x02, 0xe5,
-0x02, 0x05, 0x03, 0x01, 0x02, 0xe5, 0x02, 0x01,
-0x01, 0xe6, 0x02, 0x07, 0x03, 0x01, 0x02, 0xe5,
-0x02, 0x05, 0x03, 0x02, 0x01, 0xe5, 0x02, 0x01,
-0x02, 0xe5, 0x02, 0x05, 0x03, 0x0f, 0x01, 0x01,
-0x19, 0x03, 0x27, 0x04, 0x01, 0xe5, 0x03, 0xe5,
-0x05, 0x0b, 0x04, 0x02, 0x01, 0x07, 0x01, 0x07,
-0x03, 0x05, 0x03, 0x05, 0x09, 0x07, 0x01, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x02, 0x02, 0x09, 0x06,
-0x02, 0x0b, 0x06, 0x02, 0x09, 0x04, 0x01, 0x02,
-0x09, 0x06, 0x04, 0x01, 0x0f, 0x01, 0x02, 0x01,
-0x16, 0x2d, 0x02, 0xe6, 0x01, 0x03, 0x06, 0x0b,
-0x04, 0xe5, 0xe5, 0xe5, 0x06, 0x01, 0x09, 0x02,
-0x06, 0x02, 0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x02, 0xe6, 0x03, 0x02, 0x06, 0x02, 0x01,
-0xe5, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe6,
-0x02, 0x01, 0xe5, 0x07, 0x01, 0xe5, 0xe7, 0x01,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe7, 0x01, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x01, 0x03, 0x02, 0x0e,
-0x01, 0x01, 0xe5, 0xe6, 0x14, 0x2b, 0x04, 0x01,
-0x01, 0x1d, 0x15, 0x02, 0x02, 0x02, 0xe5, 0x01,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x01, 0x01, 0x02, 0x02, 0x03, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x05, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x06, 0x02, 0x10, 0x04, 0x42, 0x05,
-0x01, 0x1c, 0x19, 0xe5, 0x01, 0x05, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x06, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x0e, 0xe5, 0x47, 0xe5, 0x01, 0xe5,
-0x0d, 0x04, 0x01, 0x02, 0x05, 0x03, 0x02, 0x06,
-0x04, 0x01, 0xe5, 0xe7, 0xe5, 0x02, 0x01, 0xe6,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe6, 0x06, 0x09, 0xe5, 0x07, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0x02, 0x01, 0x02, 0x13,
-0x1d, 0xe5, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x5d, 0x02, 0x02, 0xe5, 0x12, 0x1d, 0x03,
-0x09, 0x02, 0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x06,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0x14, 0x4a, 0xe6, 0x16, 0x01, 0x07, 0x15, 0xe5,
-0xe5, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6,
-0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02,
-0x01, 0x04, 0x02, 0xe6, 0x05, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0x01, 0x04, 0x02, 0xe6,
-0x03, 0x02, 0x01, 0x01, 0x01, 0xe5, 0x01, 0xe6,
-0x02, 0x02, 0x0a, 0xe6, 0x44, 0x01, 0x01, 0xe6,
-0x16, 0x02, 0xe5, 0x04, 0x03, 0x0f, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x03,
-0xe5, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x06, 0xe5,
-0x02, 0x06, 0x48, 0xe9, 0x15, 0x01, 0x07, 0x0f,
-0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x0b, 0x01, 0x07, 0x04, 0x01, 0x02, 0x09,
-0x09, 0x09, 0xe5, 0x07, 0x0b, 0x02, 0x45, 0x01,
-0xe6, 0x08, 0x0b, 0xe6, 0x05, 0xe7, 0x06, 0xe5,
-0x07, 0xe5, 0x05, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0x03, 0xe7, 0x01, 0xe5, 0x01, 0xe7, 0x03,
-0x04, 0xe6, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0x03,
-0xe7, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x03, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x05,
-0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0xe7, 0x05,
-0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x02, 0x1a,
-0xe5, 0x03, 0x03, 0x10, 0x01, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0x09, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x08, 0x03, 0x05, 0x16,
-0x29, 0x01, 0xe5, 0x1d, 0x16, 0x01, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x01, 0x02, 0x06, 0x02, 0x03,
-0x02, 0x02, 0x05, 0xe5, 0x01, 0x09, 0x09, 0x06,
-0x02, 0xe5, 0x03, 0x04, 0x05, 0x03, 0x19, 0x09,
-0x1d, 0x01, 0x17, 0x01, 0x0a, 0x10, 0x06, 0xe5,
-0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0xe5,
-0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x01, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0xe5, 0xe5,
-0x01, 0x03, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x01,
-0x03, 0xe5, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0xe5, 0xe5, 0x04, 0xe5, 0x01, 0x02, 0x06, 0x09,
-0x02, 0x02, 0x01, 0x03, 0x0d, 0x01, 0x1c, 0xe5,
-0x06, 0xe6, 0x1b, 0x01, 0x01, 0x17, 0x02, 0x01,
-0x01, 0x05, 0x01, 0x10, 0x02, 0xe5, 0xe7, 0x03,
-0xe5, 0xe7, 0x03, 0xe5, 0xe7, 0x03, 0xe5, 0xe7,
-0x03, 0xe5, 0xe7, 0x03, 0xe5, 0xe7, 0x03, 0xe5,
-0xe7, 0x03, 0xe5, 0xe7, 0x03, 0xe5, 0xe7, 0x03,
-0xe5, 0xe6, 0x01, 0x04, 0x03, 0xe5, 0x03, 0xe5,
-0xe7, 0x03, 0xe6, 0xe6, 0x03, 0x04, 0x04, 0x04,
-0x04, 0xe8, 0x01, 0xe5, 0x01, 0x08, 0xe5, 0xe6,
-0x02, 0x17, 0xe6, 0x05, 0x01, 0xe5, 0x1c, 0x01,
-0x0d, 0x09, 0xe5, 0xe5, 0x0a, 0x1c, 0x0a, 0x08,
-0x27, 0x1a, 0x04, 0x2d, 0x04, 0x08, 0x03, 0x1f,
-0xe5, 0xe5, 0xe5, 0x07, 0x1c, 0x06, 0xe5, 0xe5,
-0x07, 0x03, 0x02, 0x01, 0x03, 0x03, 0x01, 0xe5,
-0x05, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x07, 0xe6, 0x06, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0x06, 0x01, 0x01, 0x05, 0xe6,
-0x01, 0x04, 0x01, 0x07, 0x01, 0x09, 0xe6, 0x01,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x08, 0x03, 0xe6, 0x22, 0x01,
-0x02, 0x04, 0xe5, 0xe5, 0x01, 0xe5, 0x01, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0x09, 0xe5, 0x0b, 0xe5,
-0x03, 0x03, 0x02, 0x02, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x09, 0xe5, 0x07,
-0xe5, 0x01, 0x02, 0x03, 0x05, 0x02, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x02, 0x2b, 0x2f, 0x01,
-0xe5, 0x0a, 0x08, 0xe5, 0x03, 0x0e, 0xe5, 0xe5,
-0x07, 0xe5, 0x01, 0xe5, 0x02, 0x03, 0x01, 0x05,
-0x01, 0x02, 0xe5, 0xe5, 0x02, 0x04, 0x09, 0x04,
-0x06, 0xe5, 0x03, 0x02, 0x03, 0x06, 0xe5, 0x03,
-0x03, 0x02, 0x04, 0x02, 0x03, 0x06, 0xe5, 0xe5,
-0x04, 0x02, 0x07, 0xe5, 0x02, 0x02, 0x02, 0x03,
-0x03, 0x0f, 0x08, 0xe5, 0x01, 0x06, 0x01, 0x07,
-0x0c, 0x07, 0x15, 0x06, 0x04, 0x02, 0x1f, 0x0c,
-0xe5, 0x02, 0x0c, 0x03, 0x0a, 0x04, 0x02, 0x0f,
-0x03, 0x10, 0x13, 0x05, 0x05, 0x02, 0x11, 0x03,
-0x07, 0x03, 0xe5, 0x0a, 0xe5, 0x5d, 0xe5, 0xe5,
-0x16, 0x09, 0x01, 0x03, 0x01, 0x0b, 0x01, 0x05,
-0x01, 0x01, 0x07, 0x01, 0x16, 0x04, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x09, 0x01, 0x01, 0x09, 0x07, 0x02, 0x03,
-0x02, 0x01, 0xe5, 0x01, 0xe5, 0xe6, 0xe5, 0x5d,
-0xe5, 0x01, 0x02, 0x11, 0x05, 0x08, 0x13, 0x07,
-0x01, 0x05, 0x03, 0x05, 0xe5, 0x05, 0x02, 0x0d,
-0xe5, 0xe5, 0x02, 0x01, 0x05, 0x01, 0x01, 0x09,
-0x05, 0x01, 0x01, 0x06, 0xe6, 0x09, 0x01, 0x07,
-0x0c, 0x07, 0x01, 0x09, 0x0e, 0x51, 0xe5, 0x0f,
-0x01, 0x03, 0x02, 0x02, 0x04, 0x01, 0x11, 0x05,
-0x0d, 0xe6, 0x02, 0x04, 0xe5, 0x03, 0x08, 0xe5,
-0x01, 0x01, 0x05, 0x06, 0x05, 0xe5, 0x02, 0x03,
-0x03, 0x01, 0x04, 0xe5, 0x02, 0x03, 0x02, 0xe5,
-0x0c, 0x05, 0x05, 0x07, 0x06, 0x06, 0x01, 0x02,
-0x0a, 0x05, 0x03, 0x09, 0x08, 0x06, 0x09, 0x14,
-0x0d, 0xe8, 0x16, 0xe5, 0x05, 0x06, 0x14, 0x03,
-0x04, 0x04, 0x09, 0x01, 0x02, 0x04, 0x01, 0x07,
-0xe5, 0x05, 0x01, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x08, 0xe5, 0xe5, 0xe5, 0x01, 0x04, 0x09,
-0xe5, 0x0a, 0x0c, 0x02, 0x01, 0x0b, 0x07, 0x01,
-0x14, 0x06, 0x09, 0x25, 0xe6, 0x09, 0xe5, 0x0c,
-0x0a, 0x03, 0x13, 0x04, 0x02, 0x06, 0x02, 0x08,
-0x02, 0x0e, 0x02, 0x0d, 0x16, 0x01, 0xe5, 0xe5,
-0x01, 0x0b, 0x07, 0xe5, 0x01, 0x02, 0x08, 0x27,
-0x49, 0xe5, 0xe5, 0xe5, 0x12, 0x06, 0x0e, 0xe6,
-0x03, 0x01, 0x1c, 0x0f, 0x04, 0x01, 0x0e, 0x11,
-0xe6, 0xe5, 0x0a, 0x15, 0xe6, 0x0a, 0x04, 0x07,
-0x0b, 0xe6, 0x02, 0x03, 0x08, 0xe8, 0x05, 0x06,
-0x02, 0x12, 0x20, 0x2e, 0x0a, 0x02, 0x09, 0xe5,
-0x12, 0xe5, 0x0b, 0x04, 0x06, 0x02, 0x09, 0x09,
-0xe5, 0x0a, 0x08, 0x01, 0x07, 0x05, 0x18, 0x0b,
-0x01, 0x13, 0x44, 0x01, 0x01, 0x13, 0x01, 0x0a,
-0x04, 0x04, 0x05, 0x14, 0x01, 0xe5, 0x05, 0x01,
-0x02, 0x06, 0x0a, 0x08, 0xe5, 0x05, 0x01, 0x06,
-0x02, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0x01, 0xe5,
-0x01, 0x03, 0x01, 0xe5, 0x01, 0x1a, 0x02, 0x05,
-0x03, 0x09, 0x05, 0x03, 0x03, 0x01, 0x03, 0x09,
-0x05, 0xe5, 0x07, 0x1f, 0x03, 0xe5, 0xe7, 0x0e,
-0x2f, 0x0d, 0x02, 0x0c, 0x0c, 0x06, 0x0e, 0x04,
-0x0d, 0x08, 0x1d, 0x01, 0xe5, 0x05, 0x01, 0x05,
-0xe5, 0x01, 0x0f, 0xe5, 0x08, 0x12, 0xe5, 0x06,
-0x01, 0x20, 0xe6, 0x02, 0x1c, 0x1f, 0x04, 0x1b,
-0x01, 0x11, 0x01, 0x02, 0x0e, 0x01, 0x12, 0x09,
-0x05, 0x03, 0x1f, 0x0c, 0x06, 0x0a, 0x12, 0x08,
-0x08, 0x1c, 0xe5, 0xe7, 0x2b, 0xe5, 0x06, 0xe5,
-0x09, 0xe5, 0x07, 0x09, 0x09, 0x09, 0x09, 0xe5,
-0x07, 0x09, 0x09, 0xe5, 0x04, 0x06, 0xe5, 0x05,
-0x02, 0xe5, 0x04, 0x05, 0x02, 0xe5, 0x07, 0xe5,
-0xe6, 0x05, 0x08, 0xe5, 0x28, 0xe5, 0x05, 0x1e,
-0xe7, 0xe6, 0x01, 0x01, 0x12, 0xe5, 0x11, 0xe5,
-0x01, 0x0a, 0x04, 0xe5, 0x01, 0x09, 0x09, 0x05,
-0xe5, 0x01, 0x08, 0x06, 0xe5, 0x01, 0x09, 0x05,
-0xe5, 0x01, 0x09, 0x0d, 0xe5, 0x01, 0xe5, 0x0a,
-0x03, 0x01, 0xe5, 0x0c, 0x01, 0xe5, 0x01, 0xe5,
-0x0a, 0x2a, 0xe5, 0x21, 0x01, 0x02, 0x01, 0xe6,
-0x03, 0x05, 0xe5, 0xe5, 0xe5, 0x03, 0x01, 0xe5,
-0xe5, 0x12, 0x02, 0xe6, 0x01, 0x01, 0x09, 0x04,
-0xe5, 0x02, 0x04, 0x01, 0xe5, 0x04, 0xe5, 0x03,
-0x13, 0x04, 0x01, 0x02, 0x09, 0x04, 0x01, 0xe5,
-0x04, 0xe5, 0x05, 0x04, 0xe5, 0x04, 0x0f, 0x03,
-0x0c, 0xe5, 0x02, 0x01, 0x0f, 0x01, 0x1b, 0x01,
-0x07, 0x01, 0x01, 0x1b, 0x08, 0x02, 0x06, 0xe5,
-0x01, 0x01, 0x04, 0x02, 0x01, 0x11, 0x06, 0xe5,
-0xe5, 0xe5, 0x06, 0x06, 0xe5, 0xe5, 0x08, 0x06,
-0xe5, 0xe5, 0x0f, 0xe5, 0xe5, 0x08, 0x09, 0x09,
-0x06, 0xe5, 0x01, 0xe5, 0x05, 0xe5, 0x14, 0x10,
-0x02, 0x13, 0x01, 0x18, 0x02, 0x01, 0x07, 0x01,
-0x1f, 0x02, 0xe8, 0x14, 0x08, 0x01, 0x02, 0x09,
-0x11, 0x04, 0xe5, 0x01, 0xe5, 0x08, 0x01, 0x02,
-0x09, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x09, 0x01,
-0x01, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0xe5, 0x01, 0x06, 0x04, 0x06, 0x02,
-0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x04, 0x11, 0x07,
-0x02, 0x0c, 0x06, 0x12, 0x03, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x1d, 0xe6, 0x01, 0x0e, 0x0c, 0x01,
-0x02, 0x07, 0x03, 0x04, 0x04, 0x05, 0x04, 0x03,
-0x02, 0x06, 0xe5, 0xe5, 0x01, 0x09, 0x03, 0xe5,
-0xe5, 0xe5, 0x09, 0x04, 0x01, 0x02, 0x01, 0x01,
-0xe5, 0x07, 0xe5, 0xe5, 0x01, 0x08, 0x02, 0x01,
-0x01, 0xe5, 0x03, 0x03, 0xe5, 0xe5, 0xe5, 0x04,
-0x03, 0x18, 0x0a, 0x07, 0xe5, 0x13, 0x04, 0x02,
-0x01, 0x04, 0x02, 0x19, 0x02, 0x01, 0xe7, 0x0b,
-0x01, 0x13, 0x09, 0x05, 0x01, 0x01, 0x04, 0x02,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x04, 0x04, 0x01,
-0x05, 0x01, 0x01, 0x04, 0x02, 0x01, 0x09, 0x07,
-0x07, 0x01, 0x0b, 0x01, 0x07, 0x01, 0x02, 0x02,
-0x01, 0x01, 0x01, 0xe5, 0x03, 0x04, 0x0e, 0x01,
-0x05, 0x0d, 0x05, 0x17, 0x09, 0x1b, 0xe5, 0x03,
-0x04, 0x01, 0xe5, 0x09, 0x01, 0x13, 0x07, 0x09,
-0x01, 0x05, 0x01, 0x04, 0x04, 0x01, 0x02, 0x04,
-0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x01, 0xe8,
-0xe5, 0xe5, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x06, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x13, 0x01, 0x02, 0x0e, 0x04,
-0x18, 0x04, 0x04, 0x04, 0x18, 0x08, 0xe6, 0x3a,
-0xe5, 0x11, 0x02, 0x17, 0x20, 0xe5, 0x07, 0x02,
-0x08, 0x02, 0x06, 0x02, 0x03, 0x2a, 0x02, 0x2e,
-0x02, 0x1b, 0x03, 0x1b, 0x02, 0x06, 0x16, 0x09,
-0xe5, 0x04, 0x02, 0xe5, 0x17, 0xe5, 0x0b, 0x10,
-0x18, 0x09, 0x05, 0xe5, 0x1c, 0x13, 0x2a, 0x1d,
-0xe5, 0x01, 0xe5, 0x0d, 0x06, 0x02, 0x03, 0x05,
-0x09, 0x09, 0x03, 0x05, 0x09, 0x09, 0x04, 0x01,
-0x02, 0x06, 0x02, 0xe5, 0x07, 0x03, 0x05, 0x09,
-0x09, 0x0b, 0x03, 0x02, 0x02, 0x03, 0x05, 0xe6,
-0x06, 0x02, 0x06, 0x06, 0x02, 0x09, 0x04, 0x01,
-0x02, 0x09, 0x09, 0x04, 0x01, 0x02, 0x09, 0x03,
-0x05, 0x09, 0x0d, 0xe7, 0xe5, 0x01, 0x12, 0xe5,
-0x30, 0x09, 0x09, 0x06, 0x02, 0x13, 0x13, 0x12,
-0x02, 0x26, 0xe5, 0x12, 0x1d, 0x09, 0x22, 0x06,
-0x15, 0x30, 0x08, 0x0b, 0x08, 0x06, 0x0b, 0x13,
-0x15, 0x27, 0x15, 0x1b, 0x09, 0x2c, 0x01, 0x14,
-0xe5, 0x05, 0x16, 0x01, 0x07, 0x01, 0x02, 0x01,
-0x04, 0x02, 0x06, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x01, 0x02, 0xe7, 0xe5, 0x01, 0x01, 0x02, 0x01,
-0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04,
-0x02, 0x05, 0xe5, 0xe5, 0x01, 0x01, 0x04, 0x02,
-0x07, 0x01, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x04, 0x04, 0x02, 0x06, 0x0e,
-0x04, 0x02, 0x01, 0x04, 0x02, 0x1f, 0xe6, 0xe5,
-0x16, 0x02, 0xe5, 0xe5, 0x06, 0x01, 0xe5, 0x0b,
-0x01, 0xe5, 0x05, 0x01, 0x01, 0x05, 0x03, 0x01,
-0xe5, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x05, 0x02, 0xe5, 0x04, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01,
-0x02, 0x04, 0x01, 0x01, 0x05, 0x03, 0x09, 0x04,
-0xe5, 0xe6, 0x05, 0x01, 0xe5, 0x02, 0x02, 0x03,
-0x01, 0x03, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x01,
-0x05, 0xe5, 0x0f, 0x01, 0x01, 0x05, 0x03, 0x19,
-0xe5, 0x02, 0x02, 0x02, 0x14, 0x02, 0x01, 0x04,
-0x1c, 0xe5, 0x03, 0x04, 0x04, 0x03, 0x05, 0x09,
-0x03, 0x05, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x03, 0xe5, 0x0f, 0x03, 0xe5, 0x03, 0x04,
-0x0c, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01, 0x03,
-0x02, 0x0c, 0x04, 0x04, 0x13, 0x03, 0x05, 0x22,
-0xe6, 0xe5, 0x14, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x06, 0xe6, 0x05, 0xe7, 0x01, 0x03, 0xe7, 0x01,
-0x03, 0xe8, 0xe5, 0x02, 0xe8, 0xe5, 0x02, 0xe8,
-0x04, 0xe7, 0x01, 0x03, 0xe8, 0xe5, 0x02, 0xe7,
-0x01, 0x03, 0xe7, 0x01, 0x03, 0xe7, 0xe5, 0x01,
-0x04, 0xe6, 0x01, 0x03, 0xe7, 0x06, 0xe7, 0xe5,
-0x04, 0xe6, 0xe5, 0x04, 0xe6, 0x04, 0xe7, 0x07,
-0xe6, 0xe5, 0x02, 0xe7, 0x01, 0x05, 0xe5, 0x07,
-0xe6, 0xe5, 0x02, 0xe7, 0x01, 0x03, 0xe7, 0x07,
-0xe5, 0x07, 0xe7, 0x02, 0x01, 0x01, 0xe6, 0x16,
-0x01, 0x07, 0x01, 0x0a, 0x05, 0xe5, 0xe6, 0x02,
-0x01, 0xe5, 0x07, 0x02, 0x06, 0x09, 0x09, 0x02,
-0xe5, 0x01, 0xe5, 0xe6, 0x07, 0x09, 0xe5, 0x07,
-0x02, 0x06, 0x0b, 0x02, 0x06, 0x07, 0x01, 0x03,
-0x12, 0x06, 0xe5, 0xe5, 0x0f, 0x02, 0xe5, 0x18,
-0x02, 0x06, 0x1b, 0x01, 0x01, 0x17, 0x01, 0x07,
-0x01, 0x0a, 0x06, 0x01, 0x03, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x04, 0x01, 0xe5, 0x01, 0x04, 0xe7,
-0x04, 0x01, 0xe6, 0x06, 0xe6, 0x04, 0x01, 0xe5,
-0x01, 0x04, 0xe7, 0x04, 0x01, 0xe6, 0xe5, 0x03,
-0xe6, 0x08, 0x01, 0xe5, 0x05, 0xe6, 0x08, 0x1a,
-0x01, 0xe6, 0xe5, 0x06, 0x05, 0x01, 0xe5, 0x01,
-0xe5, 0x0f, 0x05, 0x01, 0xe6, 0x04, 0x01, 0xe5,
-0x13, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x16, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x0c, 0x05, 0x04, 0x05,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x04, 0x01,
-0x01, 0x05, 0x02, 0xe5, 0x02, 0xe6, 0x02, 0x05,
-0x02, 0xe5, 0x04, 0x01, 0x01, 0x05, 0x02, 0xe5,
-0x04, 0x01, 0x01, 0x02, 0x02, 0x01, 0x07, 0x01,
-0x01, 0x01, 0x05, 0x08, 0x12, 0x01, 0x02, 0xe5,
-0x0e, 0x02, 0xe5, 0x02, 0x15, 0x02, 0xe5, 0x02,
-0x01, 0x02, 0xe5, 0x14, 0x06, 0xe6, 0xe5, 0x16,
-0x01, 0x07, 0x01, 0x0a, 0x03, 0x05, 0x02, 0xe5,
-0x07, 0x05, 0x03, 0x05, 0x04, 0x02, 0x05, 0x03,
-0x05, 0x09, 0x05, 0x04, 0x08, 0x05, 0x04, 0x06,
-0x04, 0x04, 0x04, 0x0f, 0x16, 0x0d, 0x05, 0x05,
-0xe5, 0x0f, 0x05, 0x05, 0x03, 0x18, 0x03, 0x01,
-0x03, 0x02, 0x0e, 0x0f, 0xe5, 0xe5, 0x09, 0xe5,
-0x10, 0x04, 0x0b, 0xe5, 0xe7, 0x2b, 0xe5, 0xe5,
-0x05, 0x02, 0x01, 0x22, 0x03, 0xe5, 0x3c, 0x33,
-0x02, 0xe5, 0xe5, 0x0e, 0x01, 0x07, 0x01, 0x03,
-0x03, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x01, 0x05, 0x01, 0xe6, 0x04, 0x01, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x06, 0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x01, 0x02,
-0x02, 0x01, 0xe6, 0x06, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01,
-0x07, 0xe6, 0x05, 0xe5, 0xe5, 0xe5, 0x04, 0x01,
-0x07, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x0d, 0xe5, 0x28, 0x03, 0xe5,
-0x07, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0xe5, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x0b, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0xe5, 0x04, 0xe6, 0x05,
-0x01, 0xe5, 0x06, 0x05, 0x03, 0x0c, 0x09, 0x01,
-0x04, 0x19, 0x21, 0x2f, 0x01, 0xe7, 0x0a, 0x08,
-0x05, 0x10, 0x09, 0x07, 0x10, 0x02, 0x0f, 0x16,
-0x11, 0x1c, 0x02, 0xe6, 0x02, 0xe5, 0x01, 0xe5,
-0x11, 0x09, 0x0a, 0x08, 0x02, 0x06, 0xe5, 0x08,
-0x0b, 0x07, 0x0b, 0x10, 0xe5, 0x02, 0x24, 0x07,
-0x03, 0x05, 0x08, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x0b, 0x05, 0x01, 0x06, 0xe5, 0xe5,
-0xe5, 0x04, 0x01, 0x03, 0x03, 0x01, 0x0e, 0x14,
-0x04, 0x01, 0x03, 0x28, 0xe5, 0x3c, 0x03, 0x01,
-0x02, 0xe5, 0x07, 0x07, 0x06, 0xe6, 0x02, 0x03,
-0xe6, 0x09, 0xe5, 0x03, 0x0a, 0x04, 0x0d, 0xe7,
-0x01, 0x01, 0x02, 0xe5, 0x11, 0x01, 0x02, 0x04,
-0xe7, 0x05, 0x01, 0x13, 0x01, 0x03, 0x17, 0x06,
-0x02, 0xe5, 0x07, 0x13, 0x01, 0x4e, 0x13, 0x04,
-0x09, 0x04, 0x1a, 0x02, 0x0c, 0xe5, 0x0d, 0x03,
-0x09, 0x01, 0x01, 0x04, 0x02, 0x02, 0x05, 0x02,
-0x04, 0x0b, 0x01, 0x02, 0x1c, 0x0e, 0x04, 0x0e,
-0x02, 0x01, 0x4a, 0x03, 0x09, 0x05, 0x0d, 0x19,
-0x03, 0xe5, 0x0c, 0xe6, 0x01, 0x04, 0xe5, 0x02,
-0x09, 0x0a, 0x12, 0xe5, 0x06, 0x01, 0x0c, 0x07,
-0x09, 0x0a, 0x06, 0x07, 0x03, 0x05, 0x03, 0x05,
-0x02, 0x02, 0x07, 0x09, 0x19, 0x24, 0x01, 0x01,
-0x0b, 0xe5, 0xe5, 0x14, 0x02, 0x06, 0x01, 0x02,
-0x02, 0xe5, 0x09, 0x04, 0x09, 0x09, 0x02, 0x06,
-0x01, 0x02, 0x04, 0x02, 0x06, 0x01, 0x07, 0x02,
-0x04, 0x01, 0x01, 0x02, 0xe5, 0x04, 0x02, 0x06,
-0x01, 0xe5, 0x01, 0x03, 0x04, 0x04, 0x01, 0x07,
-0xe5, 0x18, 0x02, 0x1b, 0x0c, 0x25, 0x01, 0x06,
-0x06, 0x10, 0x14, 0x05, 0x0e, 0xe5, 0x02, 0xe5,
-0x03, 0x0b, 0x0c, 0x01, 0x04, 0x01, 0x0a, 0x06,
-0x01, 0x0c, 0x02, 0x03, 0x01, 0xe5, 0x0f, 0x02,
-0x08, 0x07, 0x0a, 0x09, 0xe5, 0x06, 0x04, 0x12,
-0x34, 0xe6, 0x09, 0x1d, 0x01, 0x07, 0x01, 0x09,
-0xe7, 0x0f, 0xe6, 0x04, 0x03, 0x08, 0x0a, 0x03,
-0x04, 0x0a, 0x04, 0x03, 0xe6, 0x06, 0xe6, 0x08,
-0x04, 0x05, 0x0d, 0xe5, 0x01, 0x09, 0xe7, 0x06,
-0xe6, 0x06, 0x0d, 0x40, 0x01, 0x3c, 0x04, 0x0d,
-0x03, 0x02, 0x04, 0xe5, 0xe5, 0x03, 0xe5, 0xe6,
-0x0a, 0x02, 0x04, 0x0a, 0x0b, 0x06, 0x01, 0x07,
-0x01, 0x06, 0x01, 0x01, 0x05, 0xe5, 0x11, 0x05,
-0x09, 0x05, 0xe5, 0x0c, 0x34, 0x05, 0x03, 0xe5,
-0x01, 0x0c, 0xe5, 0xe5, 0x13, 0x02, 0x05, 0x05,
-0xe5, 0x01, 0x06, 0x07, 0x04, 0x06, 0x02, 0x03,
-0x0f, 0x04, 0x0e, 0x01, 0x04, 0x07, 0x04, 0x04,
-0x10, 0x13, 0x07, 0x01, 0x03, 0x08, 0xe6, 0x07,
-0x01, 0x4e, 0x02, 0xe6, 0x0d, 0x01, 0x12, 0x08,
-0x04, 0x04, 0x01, 0x0e, 0x01, 0x02, 0x06, 0x0a,
-0x01, 0x07, 0x05, 0x03, 0x01, 0x07, 0x09, 0x09,
-0x0b, 0x01, 0xe5, 0x05, 0x09, 0x09, 0x01, 0x07,
-0x16, 0x06, 0xe5, 0xe5, 0x1a, 0x21, 0x08, 0x03,
-0xe5, 0xe5, 0x03, 0x07, 0x1f, 0x09, 0x23, 0x02,
-0x07, 0x01, 0x09, 0x07, 0x01, 0x09, 0x02, 0xe5,
-0x02, 0x01, 0x0b, 0x07, 0x01, 0x09, 0x07, 0x01,
-0x09, 0x0b, 0x11, 0x04, 0x49, 0xe6, 0x0a, 0x16,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x01,
-0xe5, 0x03, 0xe5, 0x04, 0x09, 0x03, 0x01, 0xe5,
-0x01, 0x03, 0xe5, 0x03, 0x03, 0x05, 0x09, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x02, 0x01, 0x02, 0x03,
-0x02, 0xe5, 0xe5, 0x02, 0x05, 0x03, 0x05, 0x06,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0x02, 0x01,
-0xe5, 0x01, 0x03, 0x09, 0x05, 0x16, 0xe5, 0x27,
-0xe6, 0x01, 0xe5, 0x01, 0x01, 0x08, 0xe6, 0x14,
-0x05, 0x03, 0x05, 0xe6, 0xe5, 0x01, 0x01, 0x06,
-0xe5, 0x03, 0x04, 0x01, 0x02, 0x03, 0xe5, 0x03,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x07, 0x09, 0xe5,
-0x07, 0xe5, 0x02, 0x01, 0x02, 0x0b, 0x04, 0x01,
-0x02, 0xe5, 0x07, 0xe5, 0x01, 0xe5, 0x03, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x03, 0xe5, 0x03,
-0x08, 0xe6, 0x07, 0x02, 0x12, 0x25, 0x01, 0x02,
-0x02, 0xe5, 0x03, 0x08, 0x01, 0x02, 0x18, 0x09,
-0x01, 0x0b, 0x02, 0x04, 0x04, 0x04, 0x01, 0xe5,
-0xe5, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x02, 0x01, 0x04, 0x01, 0xe5, 0xe5,
-0x05, 0x01, 0x02, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x04, 0x04, 0x04, 0x01, 0xe5, 0xe5, 0x03,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x01,
-0x04, 0x04, 0x3d, 0x04, 0x03, 0x02, 0x06, 0xe5,
-0x03, 0x1b, 0x09, 0x01, 0x0e, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x02, 0x06,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x0a, 0x3d, 0x04, 0xe6,
-0x0f, 0x1a, 0x09, 0x01, 0x04, 0x01, 0x0c, 0x02,
-0x03, 0x02, 0x02, 0x06, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x06, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x04, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x01, 0x01, 0x02, 0x02, 0x06,
-0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x1d,
-0x01, 0x22, 0xe5, 0x01, 0x02, 0x0e, 0x01, 0x02,
-0x14, 0x03, 0x05, 0x01, 0x01, 0x04, 0x0a, 0x03,
-0x02, 0xe7, 0x02, 0x05, 0x03, 0x04, 0xe5, 0x02,
-0x05, 0x03, 0x05, 0x03, 0x01, 0x02, 0xe5, 0x02,
-0x04, 0xe5, 0x02, 0x07, 0x03, 0x04, 0xe5, 0x02,
-0x02, 0x01, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x02,
-0x04, 0xe5, 0x02, 0x04, 0xe5, 0x02, 0x01, 0x01,
-0xe6, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x07, 0x01,
-0x01, 0x02, 0x14, 0x01, 0x01, 0x1d, 0x03, 0xe8,
-0x29, 0x09, 0x01, 0x04, 0xe6, 0x04, 0x04, 0x03,
-0x05, 0x09, 0x07, 0x01, 0x04, 0x04, 0x09, 0x03,
-0xe7, 0x01, 0x05, 0xe6, 0xe5, 0x03, 0x06, 0x03,
-0x03, 0x01, 0x04, 0x04, 0x03, 0x02, 0x02, 0x03,
-0x02, 0xe7, 0x03, 0x01, 0xe5, 0xe5, 0x03, 0x04,
-0x06, 0x04, 0x01, 0xe5, 0xe5, 0x01, 0x1d, 0x01,
-0x21, 0x02, 0x01, 0x10, 0x1a, 0x05, 0xe5, 0x01,
-0x06, 0x01, 0x0c, 0x02, 0x01, 0x01, 0x02, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0xe5, 0x03, 0x02, 0x06, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0xe5, 0x04, 0x02, 0x02, 0x06,
-0x01, 0xe5, 0x05, 0x02, 0x01, 0xe6, 0x01, 0x02,
-0x01, 0x01, 0x02, 0x01, 0xe8, 0x02, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0xe6, 0x02, 0x02, 0x02, 0x03,
-0x1b, 0x01, 0x1f, 0x05, 0xe5, 0x0f, 0x02, 0x02,
-0x1a, 0xe5, 0x15, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x05, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x01, 0x04, 0x02, 0x44, 0x02, 0xe7,
-0x0f, 0x21, 0xe5, 0x17, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x06, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x08, 0x3c, 0xe8, 0x08,
-0x01, 0x02, 0xe5, 0x07, 0x09, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x09, 0x07, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x06, 0xe5, 0xe7, 0x04,
-0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0xe6,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe6, 0x06, 0x03, 0x05, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0xe6, 0xe6, 0x01, 0x09,
-0x1d, 0x1e, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x49, 0x02, 0x01, 0xe6, 0x0a, 0x1d, 0x1f,
-0x09, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0x06, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x05, 0xe5, 0x01, 0x06,
-0x02, 0xe5, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0x4a, 0xe7, 0x0e, 0xe5, 0x19, 0x01, 0x11,
-0x01, 0x09, 0xe7, 0x03, 0x02, 0x01, 0x04, 0x02,
-0xe6, 0x03, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04,
-0x02, 0xe6, 0x03, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x06, 0x02, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x04,
-0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0x01,
-0x04, 0x02, 0x01, 0x04, 0x02, 0xe6, 0x03, 0x02,
-0x01, 0x4b, 0x11, 0x19, 0x01, 0xe5, 0x08, 0x06,
-0x01, 0xe5, 0x05, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x03, 0x02, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x07,
-0x35, 0x02, 0xe5, 0x02, 0x03, 0x01, 0xe5, 0x26,
-0x02, 0x01, 0x11, 0x01, 0x04, 0x0e, 0x04, 0x01,
-0x02, 0x09, 0x09, 0x04, 0x04, 0x01, 0x04, 0x02,
-0x04, 0x04, 0x08, 0x02, 0x04, 0x04, 0x09, 0x01,
-0x07, 0x04, 0x01, 0x02, 0x04, 0x04, 0x09, 0xe5,
-0x07, 0x07, 0x01, 0x17, 0x28, 0xe5, 0x01, 0x15,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x01,
-0x03, 0xe8, 0xe5, 0x02, 0xe7, 0x02, 0x02, 0x01,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x02, 0xe6,
-0x01, 0x03, 0xe7, 0x01, 0x05, 0xe5, 0x01, 0x03,
-0x01, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x03, 0x01,
-0xe5, 0x03, 0x04, 0xe6, 0x01, 0x04, 0xe6, 0x01,
-0x04, 0xe6, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x03, 0x01, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x06, 0xe6, 0x05, 0x01, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0x03, 0x03, 0x01, 0x09, 0x10, 0x10,
-0x01, 0xe6, 0x07, 0xe5, 0x07, 0x06, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x09, 0xe5, 0x07,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe6, 0x06, 0xe6, 0x28, 0x18, 0x07, 0x01,
-0x12, 0x18, 0x01, 0x0e, 0x01, 0x03, 0x02, 0x02,
-0xe5, 0xe5, 0x01, 0x03, 0x02, 0xe5, 0xe5, 0x02,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0xe5,
-0xe5, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0xe5, 0xe5, 0x02, 0x04, 0xe5, 0xe5, 0x02,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0x06, 0xe5, 0xe5, 0x02, 0x02, 0x02,
-0x06, 0x02, 0x03, 0x1d, 0x09, 0x14, 0xe5, 0x03,
-0x01, 0x02, 0xe5, 0x18, 0x10, 0x01, 0x0d, 0x01,
-0x08, 0xe5, 0xe5, 0x01, 0x02, 0x01, 0x01, 0x07,
-0x01, 0x02, 0x03, 0xe5, 0xe5, 0x04, 0xe6, 0xe5,
-0x06, 0x01, 0x02, 0x02, 0x01, 0x01, 0x07, 0x01,
-0x05, 0x01, 0x02, 0xe5, 0x05, 0x02, 0x06, 0xe5,
-0xe5, 0x01, 0x03, 0x02, 0x02, 0x06, 0x09, 0x05,
-0x01, 0x01, 0x09, 0x05, 0x01, 0x01, 0x01, 0x18,
-0xe5, 0x08, 0x15, 0x09, 0xe5, 0x02, 0x16, 0x10,
-0x01, 0xe5, 0x08, 0x02, 0xe7, 0x02, 0x02, 0xe7,
-0x01, 0x03, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04,
-0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04,
-0xe7, 0x01, 0x06, 0x01, 0xe5, 0x04, 0xe8, 0x07,
-0xe5, 0x08, 0x09, 0x05, 0xe8, 0x08, 0x05, 0xe8,
-0xe5, 0x16, 0xe7, 0x06, 0xe6, 0x14, 0x03, 0x01,
-0x01, 0xe6, 0x0f, 0x1a, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0xe5, 0x07, 0x09, 0x09, 0x31, 0x09, 0x1f,
-0x2d, 0xe5, 0xe5, 0xe5, 0x1b, 0xe5, 0x2c, 0x0b,
-0x05, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x03,
-0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0xe5, 0x05,
-0xe7, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0xe7, 0x05, 0x01, 0x02, 0x04, 0x01, 0xe6, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0x01, 0x02,
-0x06, 0x01, 0x07, 0xe8, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0xe6, 0x04, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x02, 0x09, 0x01, 0x02, 0x08,
-0x01, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0x0a,
-0x06, 0xe5, 0x02, 0x04, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x02, 0x02, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0xe5, 0x05, 0xe5, 0x01, 0xe6, 0x02, 0xe5, 0x01,
-0xe5, 0x03, 0xe5, 0xe5, 0x04, 0x02, 0xe5, 0x07,
-0x09, 0xe6, 0xe6, 0x03, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x0c, 0x01, 0x01, 0x16, 0x05,
-0x2c, 0x03, 0xe5, 0x0a, 0x01, 0x06, 0x01, 0x07,
-0x01, 0x08, 0xe5, 0x01, 0xe5, 0x02, 0x01, 0x06,
-0x06, 0x06, 0x04, 0x02, 0xe5, 0x07, 0xe5, 0x08,
-0x04, 0xe5, 0xe5, 0xe5, 0x08, 0x05, 0x03, 0x0a,
-0xe5, 0x08, 0x05, 0x08, 0x03, 0xe5, 0x04, 0x04,
-0x03, 0xe5, 0x03, 0x01, 0x07, 0xe6, 0x04, 0x06,
-0x04, 0x01, 0x05, 0x06, 0x01, 0x07, 0x0c, 0x09,
-0x1a, 0xe6, 0x01, 0x05, 0x08, 0x0a, 0x09, 0x08,
-0x04, 0x05, 0x02, 0x03, 0x09, 0x02, 0x08, 0x03,
-0x03, 0x01, 0x03, 0x06, 0x08, 0x03, 0x03, 0x02,
-0x03, 0x04, 0x0d, 0x01, 0x01, 0x04, 0x02, 0x03,
-0x02, 0x09, 0x02, 0x05, 0x0a, 0x18, 0x05, 0x05,
-0x15, 0x23, 0x09, 0x03, 0x0f, 0x01, 0x19, 0x01,
-0x09, 0x07, 0xe7, 0x11, 0xe5, 0x02, 0x02, 0x02,
-0x02, 0x01, 0x01, 0x04, 0x02, 0x03, 0x13, 0x07,
-0x01, 0xe5, 0x07, 0x02, 0xe5, 0x01, 0xe5, 0xe5,
-0xe5, 0x01, 0x01, 0xe5, 0x03, 0x04, 0x01, 0x03,
-0x05, 0x01, 0x07, 0x01, 0x09, 0xe5, 0x12, 0x05,
-0x03, 0x09, 0x0c, 0x1c, 0x01, 0x02, 0xe5, 0xe5,
-0x0a, 0x0f, 0x0d, 0x01, 0x01, 0x04, 0x01, 0x06,
-0x09, 0x09, 0x09, 0x03, 0x06, 0x02, 0x06, 0x08,
-0x13, 0xe5, 0x01, 0x07, 0xe5, 0x01, 0x07, 0x02,
-0x02, 0x02, 0x06, 0x06, 0x09, 0x08, 0x55, 0x0b,
-0xe5, 0x0e, 0x03, 0x13, 0x05, 0x03, 0x0d, 0xe6,
-0x02, 0x0a, 0x02, 0xe6, 0xe5, 0xe5, 0x04, 0x0d,
-0x03, 0x0a, 0xe5, 0x02, 0x03, 0x01, 0x02, 0x04,
-0xe6, 0x02, 0x03, 0x03, 0x01, 0x07, 0x0e, 0x08,
-0x03, 0xe6, 0x06, 0x05, 0x03, 0x05, 0x06, 0x01,
-0x0a, 0x13, 0x08, 0x1f, 0xe6, 0xe5, 0x07, 0x04,
-0xe5, 0x03, 0x08, 0x0e, 0xe5, 0x0a, 0x06, 0x01,
-0xe5, 0x05, 0x04, 0x04, 0x09, 0x02, 0x09, 0x0a,
-0xe5, 0x06, 0x05, 0xe6, 0xe5, 0x11, 0xe5, 0x02,
-0x04, 0x04, 0x04, 0x13, 0x01, 0x01, 0x05, 0x01,
-0x0a, 0x03, 0x02, 0x01, 0x0a, 0x0b, 0x02, 0x01,
-0x09, 0x01, 0x0c, 0x15, 0x03, 0x03, 0x02, 0x08,
-0x0e, 0x07, 0x02, 0x03, 0x06, 0x04, 0x02, 0x0b,
-0xe5, 0x08, 0x05, 0x03, 0x02, 0x0d, 0x01, 0x05,
-0x09, 0x01, 0x01, 0x02, 0x0e, 0x02, 0x03, 0x01,
-0xe5, 0x03, 0x02, 0x01, 0x01, 0x04, 0x02, 0x08,
-0xe5, 0x11, 0x16, 0x18, 0x0c, 0x15, 0x06, 0x03,
-0x01, 0xe5, 0x01, 0x0e, 0x05, 0xe6, 0x06, 0xe6,
-0x06, 0xe5, 0x05, 0x02, 0x02, 0x0b, 0x01, 0x04,
-0x02, 0x06, 0x04, 0x07, 0x01, 0xe5, 0xe5, 0x0f,
-0x07, 0x02, 0x08, 0xe5, 0x03, 0x05, 0x09, 0x0f,
-0x01, 0x01, 0xe8, 0x02, 0xe5, 0x07, 0x07, 0x02,
-0x01, 0x05, 0x01, 0x01, 0x0a, 0x03, 0xe6, 0x01,
-0xe7, 0x05, 0x09, 0x0a, 0xe6, 0x10, 0x07, 0xe7,
-0x01, 0x01, 0x14, 0x09, 0x07, 0x01, 0x08, 0x16,
-0x03, 0x05, 0x10, 0x03, 0x0a, 0x13, 0x0d, 0x13,
-0x0d, 0x01, 0x1d, 0x09, 0x03, 0x01, 0x0b, 0x1e,
-0x17, 0x01, 0xe6, 0x09, 0x01, 0x04, 0x0b, 0x09,
-0x06, 0x01, 0xe5, 0x09, 0x01, 0xe5, 0xe6, 0x01,
-0x08, 0xe6, 0x17, 0x04, 0x05, 0x05, 0x03, 0x02,
-0xe5, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x01, 0x0c,
-0xe5, 0x01, 0xe5, 0x07, 0x0f, 0x04, 0x04, 0x0d,
-0x02, 0x02, 0xe5, 0x01, 0x09, 0x09, 0x05, 0x09,
-0xe5, 0x14, 0x02, 0x0b, 0xe6, 0x18, 0x20, 0x05,
-0x14, 0x12, 0x05, 0xe6, 0xe6, 0x01, 0x03, 0x01,
-0x02, 0x06, 0x02, 0xe5, 0x08, 0x04, 0x05, 0xe5,
-0x01, 0x02, 0x07, 0x01, 0x0a, 0x12, 0x02, 0x07,
-0x03, 0x04, 0x1c, 0x0a, 0x20, 0xe5, 0x01, 0xe6,
-0x12, 0x2d, 0x28, 0xe5, 0x17, 0x02, 0x01, 0x15,
-0x05, 0x01, 0x1b, 0x09, 0x01, 0x11, 0x01, 0x25,
-0x01, 0x24, 0x01, 0xe6, 0x06, 0xe5, 0x01, 0x01,
-0xe7, 0x06, 0xe5, 0x07, 0xe6, 0x06, 0x06, 0x01,
-0x01, 0xe5, 0x07, 0x07, 0x01, 0xe5, 0xe5, 0xe5,
-0x03, 0x07, 0x01, 0xe5, 0x06, 0xe5, 0x04, 0x01,
-0x0b, 0x09, 0x02, 0x01, 0x02, 0x01, 0xe5, 0xe5,
-0xe5, 0x03, 0xe7, 0x07, 0x09, 0x08, 0xe5, 0x07,
-0xe5, 0x08, 0x08, 0xe5, 0x01, 0xe5, 0xe5, 0x02,
-0x12, 0xe6, 0x07, 0x09, 0xe5, 0x1c, 0x01, 0xe6,
-0xe5, 0x01, 0x01, 0x04, 0xe5, 0x03, 0x04, 0xe5,
-0x0e, 0x0f, 0x03, 0x09, 0x05, 0x03, 0x02, 0xe5,
-0x0e, 0x08, 0x01, 0x0e, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x02, 0x01, 0xe6, 0x04, 0xe5, 0x06, 0x09,
-0x05, 0xe5, 0x01, 0x13, 0xe5, 0x07, 0x09, 0x05,
-0x16, 0x0a, 0x09, 0x1b, 0x01, 0x03, 0x02, 0x04,
-0x08, 0x01, 0x01, 0x09, 0x14, 0x04, 0x06, 0x01,
-0xe5, 0x12, 0x03, 0x01, 0xe5, 0x03, 0x03, 0xe5,
-0x01, 0x01, 0x07, 0x01, 0x04, 0x01, 0x02, 0x09,
-0x04, 0x01, 0x02, 0x01, 0x0c, 0x04, 0x0b, 0x03,
-0xe5, 0x01, 0x01, 0x01, 0x0f, 0x01, 0x11, 0x03,
-0x19, 0x01, 0x07, 0x01, 0x1d, 0x04, 0x01, 0x01,
-0x02, 0x07, 0x02, 0x01, 0x25, 0x06, 0xe5, 0xe5,
-0x08, 0x09, 0x06, 0xe5, 0xe5, 0x08, 0x01, 0x04,
-0xe5, 0xe5, 0x08, 0x05, 0xe5, 0x01, 0x09, 0x15,
-0x09, 0x05, 0xe5, 0x01, 0x01, 0x11, 0x01, 0x11,
-0x1d, 0x01, 0x07, 0x01, 0x18, 0xe5, 0x04, 0x04,
-0xe6, 0x0a, 0x01, 0x01, 0x03, 0x02, 0x14, 0x01,
-0x07, 0x0b, 0x02, 0x04, 0x05, 0x02, 0xe5, 0xe5,
-0x06, 0x04, 0xe5, 0x01, 0x0a, 0x04, 0xe5, 0x01,
-0x06, 0x02, 0x07, 0x01, 0x06, 0x02, 0x02, 0x01,
-0x07, 0x01, 0x02, 0x04, 0x04, 0xe5, 0x01, 0x0a,
-0x01, 0x07, 0x15, 0x06, 0x16, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x1a, 0x04, 0x02, 0x0a, 0x01, 0x01,
-0x02, 0x01, 0x14, 0x01, 0x01, 0x05, 0x03, 0x07,
-0x02, 0x04, 0x01, 0x06, 0xe5, 0xe5, 0x08, 0x02,
-0x01, 0x01, 0x04, 0x0a, 0x01, 0x01, 0x09, 0x07,
-0x01, 0x09, 0x02, 0x01, 0x01, 0x05, 0x01, 0x02,
-0x04, 0x04, 0x03, 0x04, 0x05, 0x01, 0x01, 0x05,
-0x13, 0x07, 0xe5, 0x13, 0x04, 0x02, 0x01, 0x04,
-0x02, 0x19, 0x02, 0x01, 0xe7, 0x0b, 0x01, 0x0c,
-0x0e, 0x01, 0x04, 0x02, 0x09, 0x01, 0x07, 0x07,
-0x01, 0x09, 0x01, 0x07, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x01, 0xe5, 0xe5, 0x04, 0x01,
-0x01, 0x07, 0x01, 0x05, 0x02, 0xe5, 0xe5, 0x06,
-0x04, 0x04, 0x07, 0x01, 0x01, 0x07, 0x01, 0x04,
-0x02, 0x15, 0x02, 0x02, 0x17, 0x09, 0x21, 0xe5,
-0xe5, 0xe5, 0x01, 0x0a, 0x01, 0x1b, 0x01, 0x04,
-0xe5, 0xe5, 0x03, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x04, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x03, 0xe6, 0xe5, 0x03, 0x01, 0x02, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x06, 0x01,
-0x07, 0x04, 0x04, 0x04, 0x04, 0x01, 0x07, 0x01,
-0x04, 0xe7, 0x03, 0x0a, 0xe5, 0x01, 0x04, 0x18,
-0x04, 0x04, 0x04, 0x1c, 0x03, 0xe5, 0xe5, 0xe5,
-0x10, 0x1f, 0x07, 0x13, 0xe5, 0x07, 0x02, 0x10,
-0x0b, 0x11, 0x02, 0x06, 0x0b, 0x02, 0x10, 0x31,
-0xe5, 0x42, 0xe5, 0xe5, 0x01, 0x16, 0x22, 0x04,
-0x0e, 0x02, 0xe5, 0x04, 0x02, 0x09, 0x09, 0x01,
-0x07, 0x06, 0x09, 0x02, 0x06, 0x02, 0x01, 0x01,
-0x07, 0x09, 0x0b, 0x18, 0x13, 0x02, 0x1d, 0x27,
-0x03, 0xe5, 0x08, 0x01, 0x02, 0x02, 0x06, 0x09,
-0x09, 0x04, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x09, 0x04, 0x01, 0x02, 0x03, 0x05, 0x03, 0x02,
-0x02, 0x03, 0x05, 0x03, 0xe5, 0xe5, 0x01, 0x09,
-0x04, 0xe6, 0x01, 0x03, 0x07, 0x03, 0x02, 0x02,
-0x03, 0xe5, 0xe5, 0x01, 0x09, 0x09, 0x06, 0x02,
-0x09, 0x04, 0x01, 0x02, 0x03, 0x05, 0x09, 0x04,
-0x01, 0x02, 0x05, 0x03, 0x09, 0x09, 0x0d, 0xe6,
-0x01, 0x02, 0x09, 0x27, 0x13, 0x1c, 0x14, 0x13,
-0x12, 0x02, 0x09, 0x1c, 0xe5, 0x12, 0x1d, 0x09,
-0x1d, 0x04, 0x02, 0x03, 0x0b, 0x25, 0x07, 0x0d,
-0x2f, 0x13, 0x15, 0x0b, 0x1b, 0x15, 0x1d, 0x07,
-0x1f, 0x08, 0xe8, 0x0e, 0x04, 0x09, 0x09, 0x02,
-0x01, 0x09, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x09, 0x02,
-0x01, 0x04, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x01, 0x03, 0xe5, 0xe5, 0x06, 0x01, 0x02,
-0x06, 0x02, 0x06, 0x09, 0x04, 0x02, 0x01, 0x02,
-0x01, 0x09, 0x04, 0x02, 0x15, 0x02, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x20, 0x02, 0x0c, 0xe5, 0x01,
-0x1a, 0x01, 0xe5, 0x02, 0x02, 0x03, 0x05, 0x03,
-0x05, 0x03, 0x01, 0x03, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x01, 0x05, 0x01, 0xe5, 0x07, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01,
-0xe5, 0x01, 0x01, 0x01, 0x01, 0xe5, 0x03, 0x01,
-0xe5, 0x05, 0x03, 0x02, 0x02, 0x03, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0x03, 0x01, 0x0d, 0x01, 0x01,
-0x01, 0x19, 0x01, 0x02, 0x02, 0x03, 0x20, 0x01,
-0x01, 0xe5, 0x0d, 0x1b, 0x01, 0x09, 0x09, 0x07,
-0x01, 0x13, 0x07, 0x09, 0x01, 0x09, 0x09, 0x09,
-0x08, 0x0c, 0x09, 0x03, 0xe5, 0xe5, 0x01, 0x06,
-0x02, 0x03, 0xe5, 0x01, 0x01, 0x0d, 0xe5, 0x21,
-0x07, 0x01, 0x03, 0x1e, 0x03, 0xe5, 0x0b, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6,
-0x04, 0xe8, 0x04, 0xe8, 0xe5, 0x02, 0xe7, 0x01,
-0x03, 0xe7, 0x01, 0x03, 0xe8, 0xe5, 0x02, 0xe8,
-0xe5, 0x02, 0xe8, 0xe5, 0x02, 0xe7, 0x01, 0x03,
-0xe8, 0x04, 0xe7, 0x08, 0xe6, 0x05, 0xe7, 0x01,
-0x04, 0xe6, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe6,
-0x04, 0xe7, 0x07, 0xe6, 0x04, 0xe7, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0xe8, 0x04, 0xe7, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0x02, 0x09, 0x03, 0x01, 0x0a,
-0x09, 0x09, 0x06, 0x01, 0xe5, 0x07, 0x09, 0x09,
-0x11, 0x01, 0xe6, 0x06, 0x11, 0x09, 0x0b, 0x01,
-0x04, 0x02, 0x01, 0x09, 0x09, 0xe5, 0x07, 0xe6,
-0x06, 0x0a, 0xe5, 0x06, 0x0a, 0x10, 0x01, 0x09,
-0x0a, 0x19, 0xe6, 0x0c, 0x01, 0x0a, 0x09, 0x09,
-0x06, 0x01, 0xe6, 0xe5, 0x01, 0x02, 0x01, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0xe5, 0xe5,
-0xe5, 0x01, 0x04, 0x01, 0x02, 0xe5, 0xe5, 0x03,
-0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x06, 0xe5, 0x02, 0x02, 0x01,
-0xe5, 0x02, 0x04, 0x02, 0xe5, 0x07, 0x0b, 0x01,
-0x02, 0x0a, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04,
-0x0d, 0x01, 0x01, 0x02, 0x04, 0x01, 0x02, 0x03,
-0x17, 0xe5, 0xe6, 0x3b, 0xe5, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe5, 0xe5,
-0xe5, 0x02, 0x01, 0x08, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x0c, 0x03, 0x01, 0x03,
-0x04, 0x04, 0x09, 0x09, 0x04, 0xe5, 0x11, 0xe5,
-0x16, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0x1c, 0xe7,
-0x19, 0x09, 0x09, 0x0c, 0x01, 0xe5, 0x01, 0x03,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x01, 0x03, 0x01,
-0xe5, 0x01, 0x03, 0x01, 0xe6, 0xe6, 0x01, 0xe7,
-0x05, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x04, 0x03, 0x01,
-0x07, 0xe6, 0x01, 0x06, 0x02, 0xe5, 0x07, 0xe5,
-0x0b, 0x01, 0xe5, 0x02, 0x06, 0x05, 0x01, 0xe5,
-0x02, 0x02, 0x13, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x02, 0x17, 0x02, 0xe5, 0x1b, 0x1a, 0xe5, 0x05,
-0x02, 0x06, 0x09, 0xe5, 0xe5, 0x13, 0x05, 0x02,
-0x32, 0xe5, 0x07, 0xe5, 0x1b, 0xe5, 0x0f, 0x02,
-0x3f, 0x0a, 0xe7, 0xe5, 0x0e, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x02, 0x02, 0xe6, 0x01, 0x01, 0x02, 0x01,
-0x03, 0x03, 0xe6, 0x01, 0x04, 0xe8, 0x03, 0xe8,
-0x02, 0x02, 0xe6, 0xe5, 0x04, 0x01, 0x02, 0x04,
-0xe6, 0xe5, 0x04, 0x01, 0xe5, 0x07, 0x01, 0xe6,
-0x04, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01,
-0x0a, 0x01, 0x01, 0x14, 0x0b, 0x02, 0x03, 0x0f,
-0x02, 0x01, 0x02, 0x01, 0x01, 0xe5, 0x05, 0x01,
-0x01, 0xe5, 0x0d, 0xe6, 0x09, 0x04, 0x03, 0x07,
-0x09, 0xe5, 0x02, 0x07, 0x03, 0x01, 0x03, 0xe6,
-0x05, 0x01, 0x02, 0x04, 0x04, 0x0b, 0x02, 0xe5,
-0x03, 0x03, 0xe5, 0x07, 0xe5, 0x02, 0x02, 0xe5,
-0x1d, 0x01, 0x07, 0x1a, 0x07, 0xe5, 0xe7, 0x0a,
-0x0d, 0x03, 0x0b, 0x09, 0x02, 0x06, 0x02, 0x09,
-0x03, 0x02, 0x0b, 0x0c, 0x02, 0x0e, 0xe5, 0x01,
-0x04, 0x0d, 0x06, 0x02, 0x08, 0x06, 0x02, 0x06,
-0x0c, 0x04, 0x03, 0x07, 0x01, 0xe5, 0x02, 0x06,
-0x05, 0x06, 0x02, 0x06, 0x05, 0x05, 0x03, 0x06,
-0x1a, 0x04, 0x02, 0x0d, 0x11, 0x17, 0x03, 0x04,
-0x03, 0x05, 0x0a, 0x06, 0x03, 0x07, 0x0b, 0x0f,
-0x10, 0x12, 0x17, 0x0b, 0xe5, 0x03, 0x05, 0x08,
-0x19, 0x2c, 0x02, 0x03, 0x0d, 0x01, 0x01, 0x09,
-0x08, 0x06, 0x01, 0xe5, 0x01, 0x06, 0x09, 0x04,
-0x01, 0x02, 0x09, 0xe5, 0x01, 0x02, 0x01, 0x04,
-0x04, 0xe5, 0x02, 0xe5, 0xe5, 0x07, 0xe7, 0x06,
-0x01, 0xe5, 0x05, 0xe6, 0x03, 0x02, 0x08, 0x01,
-0x08, 0x1f, 0x04, 0x1c, 0x17, 0x01, 0x19, 0x09,
-0xe5, 0x02, 0x0d, 0x02, 0x1a, 0x01, 0x03, 0x01,
-0x09, 0x07, 0x06, 0x04, 0x0c, 0x01, 0x04, 0x0e,
-0xe5, 0x01, 0x03, 0x06, 0x01, 0x02, 0x05, 0xe5,
-0x04, 0x01, 0x02, 0x2e, 0x01, 0x03, 0x03, 0x37,
-0x1a, 0x04, 0x03, 0xe5, 0xe5, 0x08, 0x05, 0xe5,
-0x0b, 0x09, 0x0a, 0x04, 0x02, 0x10, 0x01, 0xe5,
-0x05, 0x03, 0x05, 0x03, 0x03, 0x05, 0x05, 0x0a,
-0x03, 0x0e, 0x07, 0x03, 0x01, 0x01, 0x01, 0x03,
-0x03, 0xe5, 0x07, 0x08, 0x0b, 0x04, 0x08, 0xe5,
-0x0c, 0x0b, 0x1a, 0x1e, 0xe5, 0x01, 0xe5, 0x09,
-0x02, 0x03, 0x12, 0x0b, 0x04, 0x02, 0x03, 0x05,
-0x06, 0x09, 0x09, 0x06, 0x07, 0x04, 0x04, 0x0b,
-0x05, 0x03, 0x02, 0x04, 0x06, 0x02, 0x06, 0xe6,
-0x09, 0x03, 0x02, 0x01, 0x11, 0x01, 0x0c, 0x01,
-0x05, 0x0a, 0xe5, 0x10, 0x03, 0x09, 0x12, 0x0b,
-0x02, 0x03, 0x01, 0x0b, 0xe5, 0xe5, 0x08, 0x1b,
-0x12, 0xe5, 0x03, 0x02, 0x0b, 0x09, 0x26, 0x04,
-0xe6, 0x0e, 0x01, 0x07, 0x09, 0x0b, 0x05, 0x17,
-0x07, 0x08, 0x2b, 0x0a, 0xe6, 0x04, 0x0d, 0x08,
-0x17, 0x01, 0x07, 0x09, 0xe6, 0x05, 0x02, 0x13,
-0x05, 0x03, 0x01, 0x02, 0xe5, 0xe7, 0x03, 0xe5,
-0xe7, 0x07, 0xe5, 0x07, 0x01, 0xe6, 0x0f, 0x10,
-0x03, 0xe6, 0x06, 0x01, 0x07, 0xe5, 0x11, 0x01,
-0x07, 0xe6, 0x37, 0x01, 0x03, 0x01, 0x22, 0x06,
-0x06, 0x05, 0x0c, 0x02, 0x05, 0x02, 0x0c, 0x05,
-0x0b, 0x06, 0xe5, 0x07, 0x02, 0x04, 0xe5, 0xe5,
-0x03, 0x03, 0x03, 0x1a, 0x07, 0x04, 0x11, 0x01,
-0x1e, 0x20, 0x14, 0xe6, 0xe5, 0x0e, 0x19, 0x04,
-0x01, 0x06, 0x03, 0x02, 0x05, 0x01, 0x04, 0x09,
-0x02, 0xe6, 0x03, 0xe6, 0x0d, 0x02, 0xe5, 0x04,
-0x06, 0x03, 0x01, 0x08, 0x05, 0x06, 0x06, 0x03,
-0x02, 0xe5, 0x03, 0x09, 0x0e, 0x05, 0x03, 0x02,
-0x01, 0x06, 0x07, 0x18, 0x03, 0x09, 0x15, 0x08,
-0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x09, 0x02, 0x0b,
-0x18, 0xe5, 0x0b, 0xe5, 0x03, 0x02, 0x06, 0xe5,
-0x04, 0x02, 0x03, 0xe5, 0x05, 0xe5, 0x05, 0x0a,
-0x06, 0x01, 0x03, 0x07, 0x09, 0x03, 0x06, 0x07,
-0xe5, 0x02, 0x05, 0x10, 0x09, 0x0c, 0x1c, 0xe5,
-0x13, 0x14, 0x03, 0xe7, 0x0c, 0x01, 0x28, 0x13,
-0x09, 0x09, 0xe5, 0x11, 0x14, 0xe5, 0x12, 0x02,
-0x08, 0x05, 0x02, 0xe5, 0x06, 0x0a, 0x0a, 0x0f,
-0x02, 0x09, 0x02, 0x0e, 0x01, 0x09, 0x20, 0xe5,
-0x01, 0xe6, 0x0a, 0x09, 0x16, 0xe5, 0x07, 0xe5,
-0x04, 0x01, 0xe6, 0x04, 0x02, 0x0b, 0x01, 0xe5,
-0x06, 0xe5, 0x05, 0x08, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x11, 0x01, 0xe5, 0xe6, 0x01, 0x02,
-0xe5, 0xe6, 0x04, 0xe6, 0xe6, 0x03, 0x08, 0xe6,
-0x04, 0x02, 0xe5, 0xe6, 0x06, 0x04, 0x17, 0x02,
-0x01, 0xe5, 0x08, 0x22, 0x02, 0x01, 0xe5, 0x01,
-0x01, 0x08, 0xe6, 0x06, 0x17, 0xe5, 0x05, 0xe5,
-0x05, 0x03, 0x05, 0xe6, 0x15, 0xe6, 0x05, 0x05,
-0x03, 0x09, 0xe5, 0x03, 0xe7, 0xe5, 0x04, 0x09,
-0x04, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe6, 0x02,
-0xe5, 0x01, 0xe6, 0x08, 0xe5, 0x0a, 0xe7, 0xe7,
-0x0d, 0x02, 0x0a, 0xe5, 0x07, 0xe5, 0x01, 0xe6,
-0x01, 0x06, 0x1d, 0x01, 0x02, 0x01, 0x01, 0x04,
-0x05, 0x01, 0xe5, 0xe5, 0x06, 0x13, 0x01, 0x04,
-0x01, 0x0a, 0x06, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x05, 0x01, 0xe5,
-0xe5, 0x02, 0xe5, 0x06, 0x01, 0x01, 0xe5, 0xe5,
-0x03, 0xe5, 0x07, 0xe5, 0x06, 0xe5, 0x0d, 0x01,
-0x01, 0x07, 0x01, 0xe5, 0x08, 0x08, 0x05, 0x01,
-0x0a, 0x06, 0x09, 0x01, 0x0b, 0x01, 0xe5, 0x0b,
-0x04, 0x1a, 0x08, 0x02, 0x07, 0x02, 0x01, 0x07,
-0x10, 0x02, 0x01, 0x04, 0x0c, 0x06, 0xe5, 0xe5,
-0x05, 0x08, 0xe5, 0x01, 0x09, 0x01, 0x04, 0x0c,
-0x01, 0x04, 0xe5, 0x06, 0xe5, 0x0c, 0x0a, 0x01,
-0x09, 0x1b, 0x01, 0x08, 0x0a, 0x04, 0x02, 0x01,
-0x0e, 0x0e, 0x18, 0xe5, 0x04, 0x02, 0x02, 0xe5,
-0x0a, 0x01, 0x01, 0x02, 0xe5, 0x01, 0xe5, 0x10,
-0x09, 0x07, 0x02, 0xe5, 0x08, 0x01, 0x03, 0x01,
-0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0x02, 0x07, 0x02, 0x0a, 0x01, 0x0c, 0xe5, 0x01,
-0x08, 0x02, 0x0c, 0x07, 0x01, 0x1d, 0xe8, 0x01,
-0xe5, 0x06, 0xe5, 0x0e, 0x02, 0x01, 0x01, 0x07,
-0x08, 0x1a, 0xe6, 0x01, 0x02, 0x0a, 0x03, 0x02,
-0x01, 0xe5, 0x02, 0x13, 0x09, 0x02, 0x01, 0xe5,
-0x02, 0x05, 0x01, 0x01, 0x02, 0x01, 0x05, 0x04,
-0x03, 0x04, 0x04, 0x09, 0x09, 0x05, 0x01, 0x01,
-0x09, 0x07, 0x03, 0x09, 0x07, 0x01, 0x05, 0x01,
-0x01, 0x13, 0x05, 0x02, 0xe5, 0x06, 0x01, 0x01,
-0x01, 0xe5, 0x03, 0x0f, 0x01, 0x01, 0x07, 0x01,
-0x03, 0xe5, 0x17, 0x02, 0xe6, 0xe6, 0x0b, 0x01,
-0x07, 0x13, 0x01, 0x04, 0x07, 0x04, 0x05, 0xe5,
-0x01, 0x01, 0x18, 0xe5, 0xe5, 0xe5, 0x10, 0x01,
-0x0c, 0x08, 0x02, 0x09, 0x0a, 0xe5, 0x03, 0x07,
-0x01, 0x04, 0x18, 0x07, 0x09, 0x01, 0x1b, 0x07,
-0x1b, 0xe9, 0x0c, 0x01, 0xe6, 0x04, 0x13, 0x01,
-0x05, 0x0b, 0x09, 0x01, 0x03, 0xe5, 0x0b, 0x03,
-0xe5, 0x01, 0x01, 0x01, 0x01, 0xe5, 0x0d, 0x01,
-0x16, 0x01, 0xe6, 0xe5, 0x10, 0x04, 0x07, 0x01,
-0x03, 0xe6, 0x10, 0xe5, 0x01, 0x02, 0xe5, 0x06,
-0x04, 0x01, 0xe5, 0xe5, 0x0a, 0xe5, 0x0f, 0x1f,
-0xe5, 0x01, 0x02, 0x05, 0xe5, 0x08, 0x2a, 0x1d,
-0x06, 0x02, 0x02, 0x03, 0x0c, 0x1a, 0x02, 0x02,
-0x08, 0x02, 0x08, 0x25, 0x06, 0x02, 0x1a, 0x02,
-0x13, 0xe5, 0x07, 0x0d, 0xe5, 0x03, 0x01, 0x02,
-0x05, 0x36, 0x01, 0x11, 0x05, 0x05, 0x03, 0xe5,
-0x07, 0xe5, 0x0d, 0x17, 0xe5, 0x01, 0xe5, 0x3b,
-0xe6, 0x06, 0x01, 0x17, 0xe5, 0x01, 0x01, 0x11,
-0x09, 0x01, 0x0b, 0x05, 0xe9, 0xe5, 0x0b, 0x09,
-0x09, 0x06, 0x02, 0x06, 0x02, 0x02, 0xe5, 0x04,
-0x06, 0x02, 0x03, 0x05, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x04, 0x02, 0x09, 0x09, 0x09, 0xe6, 0x03,
-0x04, 0x02, 0x03, 0x02, 0x09, 0x06, 0x02, 0x09,
-0x09, 0x04, 0x01, 0x02, 0x03, 0x05, 0x09, 0x09,
-0xe5, 0x03, 0x03, 0x09, 0x03, 0x05, 0x05, 0x03,
-0x0d, 0x01, 0xe5, 0xe5, 0x01, 0x24, 0x02, 0x08,
-0xe5, 0x11, 0x0a, 0x1a, 0x29, 0xe5, 0xe5, 0x07,
-0xe5, 0x0f, 0x20, 0x4f, 0x04, 0x02, 0xe5, 0x01,
-0x27, 0x0b, 0x1c, 0x10, 0x09, 0x2b, 0x02, 0x08,
-0x2f, 0x25, 0x2b, 0x09, 0xe7, 0xe5, 0x07, 0x16,
-0x01, 0x04, 0x01, 0x02, 0x07, 0x01, 0x07, 0x01,
-0x04, 0x0c, 0x01, 0x01, 0x04, 0x02, 0xe7, 0xe5,
-0x01, 0x01, 0xe7, 0x05, 0x11, 0x0c, 0x01, 0x01,
-0x04, 0x01, 0x04, 0x02, 0x06, 0x02, 0x09, 0x01,
-0x09, 0x04, 0x0c, 0x01, 0xe6, 0x04, 0x13, 0x01,
-0xe7, 0x03, 0x13, 0x01, 0x1a, 0x01, 0x10, 0xe5,
-0x0e, 0x01, 0xe5, 0x05, 0x02, 0x06, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x08, 0x06, 0x01, 0xe6,
-0x01, 0x02, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x02, 0x0c, 0x02, 0x09, 0xe5, 0x06,
-0x01, 0xe5, 0x07, 0xe5, 0x04, 0xe5, 0x01, 0x06,
-0x01, 0xe5, 0x04, 0xe5, 0x01, 0x09, 0x06, 0x01,
-0x01, 0x05, 0x02, 0x0d, 0x02, 0x01, 0xe6, 0x04,
-0x02, 0x09, 0x06, 0x01, 0xe5, 0x16, 0x01, 0xe6,
-0x13, 0x0c, 0x01, 0x09, 0x07, 0x01, 0x07, 0x01,
-0x03, 0x0a, 0x04, 0xe5, 0x0f, 0x01, 0xe5, 0x05,
-0x01, 0x0d, 0x03, 0x08, 0xe5, 0xe5, 0x07, 0x02,
-0x06, 0xe5, 0x08, 0x09, 0x01, 0x09, 0x03, 0x03,
-0x01, 0x07, 0x01, 0xe5, 0x02, 0x02, 0x16, 0x05,
-0xe5, 0x08, 0x01, 0x24, 0xe6, 0x13, 0xe6, 0x07,
-0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6,
-0x01, 0x04, 0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe6, 0x04, 0xe8, 0xe5, 0x03, 0xe6,
-0x01, 0x01, 0x04, 0xe6, 0x01, 0x03, 0xe8, 0x05,
-0xe7, 0xe5, 0x03, 0xe7, 0x06, 0xe6, 0xe5, 0x02,
-0xe8, 0xe5, 0x04, 0xe6, 0x04, 0xe7, 0x07, 0xe5,
-0x07, 0xe6, 0x04, 0xe8, 0xe5, 0x02, 0xe7, 0x07,
-0xe5, 0x07, 0xe5, 0x06, 0xe5, 0xe6, 0x03, 0x08,
-0x02, 0x03, 0x01, 0x03, 0x0f, 0x02, 0xe6, 0x04,
-0x01, 0xe5, 0x08, 0xe5, 0x07, 0x06, 0x01, 0xe5,
-0x08, 0x10, 0x01, 0xe5, 0x08, 0x06, 0x05, 0xe5,
-0x04, 0x08, 0x01, 0xe5, 0x05, 0x02, 0xe5, 0xe6,
-0x01, 0x02, 0x03, 0x02, 0x01, 0x06, 0x02, 0xe5,
-0x08, 0xe5, 0xe6, 0x01, 0x01, 0x07, 0x02, 0xe5,
-0xe6, 0x04, 0x06, 0x01, 0xe5, 0x05, 0x05, 0xe5,
-0x07, 0xe5, 0x01, 0x01, 0x18, 0x03, 0x0d, 0x04,
-0x02, 0x15, 0x09, 0x01, 0x14, 0x06, 0x01, 0xe5,
-0xe5, 0x08, 0x09, 0x04, 0x01, 0xe5, 0x08, 0x06,
-0x08, 0x03, 0x01, 0x03, 0x02, 0x01, 0xe5, 0x04,
-0x02, 0x06, 0xe5, 0x07, 0xe5, 0xe5, 0x06, 0x02,
-0x0f, 0xe5, 0xe5, 0x01, 0x04, 0x08, 0x03, 0x06,
-0x01, 0x02, 0x04, 0x08, 0x09, 0xe5, 0xe5, 0x1a,
-0xe5, 0x0c, 0x02, 0x09, 0x12, 0x07, 0x01, 0xe5,
-0x19, 0x01, 0x0a, 0x10, 0x01, 0x11, 0x07, 0x08,
-0xe5, 0x01, 0xe5, 0xe5, 0x03, 0x02, 0x07, 0x01,
-0x02, 0x08, 0x04, 0x04, 0x07, 0x01, 0x05, 0x03,
-0x07, 0x07, 0x0e, 0x06, 0x07, 0x01, 0x01, 0x05,
-0x1c, 0x01, 0x01, 0x0d, 0x02, 0x02, 0xe5, 0x04,
-0x0d, 0x02, 0x02, 0x06, 0x01, 0xe5, 0x08, 0x08,
-0xe5, 0x05, 0x01, 0xe5, 0x19, 0x01, 0xe5, 0x08,
-0x06, 0x05, 0x01, 0xe5, 0x05, 0xe7, 0x01, 0x01,
-0xe5, 0x02, 0x01, 0x02, 0xe5, 0x01, 0x01, 0xe6,
-0x01, 0x03, 0x01, 0xe5, 0xe6, 0x05, 0x02, 0x06,
-0x01, 0xe5, 0x01, 0x01, 0xe6, 0xe6, 0x05, 0x02,
-0x02, 0x01, 0xe5, 0x02, 0x10, 0x02, 0x03, 0xe7,
-0xe5, 0x03, 0xe6, 0x1a, 0xe5, 0xe6, 0x0c, 0x02,
-0x06, 0x02, 0xe5, 0x0c, 0x09, 0x03, 0xe5, 0x05,
-0x02, 0x06, 0xe5, 0xe5, 0x03, 0x06, 0x04, 0x03,
-0x0d, 0x01, 0x02, 0x01, 0x02, 0x15, 0x02, 0x04,
-0x03, 0x02, 0x0b, 0x04, 0x01, 0xe5, 0x0d, 0x06,
-0x1c, 0x09, 0x14, 0x12, 0x16, 0xe5, 0xe6, 0xe5,
-0x0b, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x06, 0xe5, 0xe5,
-0x02, 0x03, 0x01, 0x07, 0x01, 0xe6, 0x04, 0x01,
-0x07, 0xe6, 0xe5, 0xe5, 0x01, 0xe5, 0xe5, 0xe5,
-0x04, 0x01, 0x01, 0x05, 0x01, 0x01, 0x03, 0xe6,
-0xe5, 0xe5, 0x04, 0x01, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0xe6, 0x04, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5, 0xe5,
-0x03, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x0b, 0x02,
-0x0d, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0x01,
-0x09, 0x05, 0xe5, 0xe5, 0x02, 0x02, 0x01, 0x01,
-0x01, 0x01, 0xe6, 0x02, 0x02, 0x15, 0xe5, 0x02,
-0x05, 0xe5, 0x02, 0x02, 0x01, 0x01, 0x07, 0x04,
-0x0e, 0xe6, 0xe5, 0x03, 0x02, 0xe5, 0x01, 0xe5,
-0x08, 0x03, 0xe6, 0x01, 0x07, 0x01, 0x0a, 0xe5,
-0x13, 0x05, 0x08, 0x03, 0x03, 0xe5, 0x09, 0x04,
-0x06, 0x16, 0x08, 0x02, 0xe5, 0x0b, 0x08, 0xe5,
-0xe5, 0x02, 0x09, 0xe5, 0x01, 0x0d, 0x04, 0x02,
-0x03, 0x07, 0x01, 0x02, 0x03, 0x05, 0x03, 0x07,
-0xe5, 0x01, 0x03, 0x02, 0x01, 0x04, 0x0d, 0xe5,
-0x03, 0x05, 0xe5, 0x01, 0x02, 0x01, 0xe6, 0xe5,
-0x0d, 0xe5, 0x01, 0x03, 0x04, 0x01, 0x02, 0x09,
-0x09, 0x1d, 0xe5, 0x36, 0xe5, 0xe5, 0xe5, 0x01,
-0x09, 0x02, 0x1c, 0x0a, 0x04, 0x08, 0x06, 0x02,
-0x06, 0x02, 0x02, 0x01, 0x07, 0x08, 0x04, 0xe5,
-0x01, 0xe5, 0x01, 0x04, 0x07, 0x01, 0x01, 0x01,
-0xe5, 0x04, 0x17, 0x06, 0x02, 0x06, 0x09, 0x02,
-0x05, 0x0b, 0xe5, 0x16, 0x03, 0x15, 0x12, 0x06,
-0xe5, 0x03, 0xe5, 0x08, 0x03, 0x04, 0x07, 0x03,
-0x02, 0x01, 0x02, 0x01, 0xe5, 0x07, 0x02, 0x01,
-0x07, 0x03, 0x05, 0xe6, 0x06, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0xe5, 0x19, 0x01, 0xe6, 0x06,
-0xe6, 0xe5, 0x05, 0x03, 0x0a, 0x05, 0x01, 0x01,
-0x03, 0x0e, 0xe5, 0x03, 0xe5, 0x18, 0x0c, 0x1d,
-0x10, 0x03, 0xe5, 0x07, 0x06, 0x03, 0xe5, 0xe5,
-0x05, 0x02, 0xe5, 0x01, 0x0c, 0x01, 0x01, 0x02,
-0x09, 0x03, 0x03, 0x06, 0x04, 0x09, 0x04, 0x03,
-0x10, 0x11, 0x01, 0x07, 0x22, 0x01, 0x01, 0x0b,
-0x01, 0x0d, 0x04, 0x01, 0x10, 0xe6, 0x06, 0x09,
-0x2c, 0x09, 0x05, 0x2b, 0x05, 0x03, 0x0a, 0x02,
-0xe6, 0x02, 0x03, 0x05, 0xe5, 0x01, 0x05, 0x09,
-0x09, 0xe5, 0x0b, 0x01, 0x03, 0x03, 0x09, 0x03,
-0x02, 0x01, 0x08, 0x0a, 0x04, 0x0c, 0x03, 0x0f,
-0x27, 0x0a, 0x09, 0x02, 0x06, 0xe6, 0xe6, 0x09,
-0x02, 0xe5, 0x0c, 0x07, 0x0a, 0xe5, 0x02, 0x03,
-0x06, 0x0e, 0x04, 0x02, 0x05, 0x08, 0x04, 0x0c,
-0x02, 0x03, 0x0b, 0x01, 0x02, 0x02, 0x04, 0xe5,
-0x04, 0x05, 0x0d, 0x10, 0x04, 0x11, 0x18, 0x09,
-0x06, 0x12, 0x14, 0x01, 0x03, 0x01, 0xe5, 0x0b,
-0x02, 0x09, 0x01, 0x09, 0x07, 0x09, 0x01, 0x08,
-0x0d, 0x10, 0x01, 0x05, 0x12, 0x02, 0x0c, 0x02,
-0x06, 0x0a, 0x03, 0x01, 0x01, 0x09, 0x07, 0x0b,
-0x0b, 0x09, 0x25, 0x09, 0x1d, 0x01, 0xe6, 0x0b,
-0x01, 0x02, 0x10, 0x11, 0xe7, 0x05, 0x01, 0x02,
-0x04, 0x01, 0x01, 0x06, 0xe6, 0x04, 0x01, 0x01,
-0x07, 0xe5, 0x01, 0x04, 0xe7, 0x05, 0x05, 0x03,
-0x06, 0xe5, 0x01, 0xe5, 0x01, 0x05, 0x01, 0xe5,
-0xe5, 0x05, 0xe5, 0x03, 0x03, 0xe5, 0x0f, 0x01,
-0xe6, 0xe5, 0x04, 0x01, 0xe5, 0x01, 0x03, 0x01,
-0x07, 0xe5, 0x03, 0x03, 0x09, 0x03, 0x05, 0xe6,
-0x01, 0xe5, 0x02, 0xe5, 0x02, 0x22, 0xe5, 0xe5,
-0x05, 0xe5, 0x03, 0x05, 0x01, 0x0c, 0x01, 0x12,
-0x07, 0x0a, 0x06, 0x03, 0xe5, 0x01, 0x09, 0x02,
-0xe5, 0x09, 0x1d, 0x02, 0x04, 0x01, 0x02, 0x09,
-0x09, 0x0c, 0xe5, 0x02, 0x0c, 0x02, 0x0f, 0xe5,
-0x04, 0x09, 0x06, 0x03, 0x0b, 0xe5, 0x08, 0x16,
-0x02, 0xe5, 0x02, 0x04, 0x25, 0x05, 0x09, 0x02,
-0x01, 0x0b, 0x09, 0x05, 0x02, 0x04, 0x01, 0x04,
-0x01, 0x02, 0x01, 0x04, 0x02, 0x0a, 0x01, 0x05,
-0x06, 0x02, 0x02, 0x02, 0xe5, 0x03, 0xe7, 0xe5,
-0x01, 0x01, 0x01, 0x08, 0x06, 0x03, 0x05, 0x02,
-0xe5, 0xe5, 0x06, 0x02, 0xe5, 0x02, 0x04, 0x08,
-0x0c, 0x03, 0x01, 0x06, 0x02, 0x1b, 0x05, 0x01,
-0xe6, 0x01, 0xe5, 0x0d, 0x11, 0xe5, 0x08, 0x04,
-0x01, 0x01, 0x07, 0x0b, 0x0e, 0x02, 0x03, 0x08,
-0x06, 0x03, 0x05, 0x01, 0x07, 0x09, 0x03, 0x05,
-0xe6, 0x0a, 0x0b, 0x10, 0xe6, 0xe5, 0x03, 0x07,
-0x01, 0xe5, 0x09, 0x0b, 0x0e, 0x05, 0x27, 0xe8,
-0xe5, 0x1a, 0x08, 0xe5, 0x12, 0x06, 0x03, 0x08,
-0x02, 0x0a, 0xe5, 0x03, 0x09, 0x03, 0x01, 0x07,
-0xe5, 0x02, 0xe5, 0x03, 0x0a, 0x13, 0x05, 0x0d,
-0x13, 0x01, 0x06, 0x2e, 0x26, 0x03, 0x01, 0x0b,
-0xe5, 0x01, 0xe5, 0x08, 0x01, 0x09, 0x04, 0x04,
-0x09, 0x06, 0x0c, 0x04, 0x04, 0x07, 0x0a, 0x05,
-0x0e, 0x08, 0x05, 0x03, 0x0c, 0x09, 0x06, 0x08,
-0x09, 0x09, 0x09, 0x08, 0x02, 0x08, 0x26, 0xe5,
-0x07, 0x01, 0x10, 0xe5, 0x03, 0xe5, 0xe5, 0x01,
-0x03, 0x02, 0x05, 0x02, 0xe5, 0x08, 0x05, 0x03,
-0x05, 0x02, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5,
-0x09, 0xe5, 0x07, 0x06, 0x02, 0x07, 0x02, 0x08,
-0xe5, 0x07, 0x0a, 0x06, 0x01, 0xe5, 0x07, 0xe5,
-0x05, 0x02, 0x08, 0xe5, 0x07, 0x09, 0x06, 0x0a,
-0x05, 0x01, 0xe8, 0x07, 0xe5, 0xe5, 0x01, 0xe5,
-0x07, 0xe5, 0x04, 0x02, 0xe5, 0xe6, 0x04, 0xe5,
-0x04, 0x03, 0x0a, 0xe6, 0x03, 0x01, 0xe5, 0x07,
-0x05, 0x02, 0xe5, 0xe6, 0x05, 0x05, 0x04, 0xe6,
-0x04, 0xe5, 0x07, 0xe5, 0x14, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x0b, 0xe5, 0x05, 0x02, 0x01,
-0x04, 0x05, 0x02, 0xe5, 0x08, 0x08, 0xe5, 0x08,
-0x02, 0xe5, 0x05, 0x08, 0xe5, 0x06, 0xe5, 0x13,
-0xe5, 0x01, 0xe6, 0x01, 0x01, 0x08, 0xe6, 0x0a,
-0x05, 0x02, 0x03, 0xe5, 0xe6, 0x07, 0x03, 0x05,
-0x0d, 0x01, 0xe5, 0x05, 0x05, 0x02, 0x02, 0xe5,
-0x06, 0x04, 0x06, 0x01, 0x04, 0x05, 0xe5, 0x01,
-0x02, 0xe5, 0x10, 0x02, 0x01, 0x03, 0x03, 0x01,
-0x03, 0x06, 0xe5, 0x07, 0xe6, 0x03, 0x01, 0xe6,
-0x07, 0x03, 0x05, 0xe5, 0xe5, 0x09, 0x02, 0x01,
-0x07, 0x01, 0x0d, 0x0a, 0x11, 0x01, 0x03, 0x02,
-0x04, 0x05, 0xe5, 0xe5, 0x02, 0xe5, 0x0d, 0x0b,
-0x01, 0x05, 0x05, 0xe5, 0x07, 0xe5, 0x01, 0x01,
-0x04, 0x01, 0xe5, 0x01, 0x06, 0x04, 0x01, 0xe5,
-0xe5, 0xe5, 0xe5, 0x04, 0x06, 0x01, 0xe5, 0xe5,
-0x08, 0x03, 0xe5, 0x03, 0xe5, 0x1b, 0x01, 0x09,
-0x04, 0xe5, 0xe5, 0xe5, 0xe5, 0x06, 0x01, 0x05,
-0x04, 0x06, 0x15, 0x2f, 0x05, 0x02, 0x02, 0x07,
-0xe5, 0xe5, 0xe5, 0x10, 0x09, 0x09, 0x09, 0x06,
-0x02, 0x01, 0x07, 0xe5, 0xe5, 0x05, 0x06, 0xe5,
-0xe5, 0xe5, 0x06, 0x09, 0x01, 0x07, 0x06, 0x03,
-0xe6, 0x1b, 0x01, 0x07, 0x06, 0xe5, 0xe5, 0xe5,
-0x06, 0x09, 0x09, 0x49, 0x02, 0xe5, 0x01, 0x0d,
-0x01, 0x11, 0x0b, 0x03, 0x02, 0xe5, 0x03, 0x09,
-0x01, 0xe6, 0x04, 0x04, 0x01, 0xe5, 0xe5, 0x03,
-0x0e, 0x04, 0x04, 0x10, 0x05, 0xe6, 0x03, 0x0b,
-0x04, 0x01, 0x02, 0x09, 0x06, 0x03, 0x02, 0xe5,
-0xe5, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0xe5,
-0x0a, 0x02, 0x01, 0x01, 0x0f, 0x09, 0x09, 0x1f,
-0xe6, 0xe5, 0x01, 0x0a, 0x01, 0x01, 0x0f, 0x03,
-0x05, 0x03, 0x01, 0x02, 0xe5, 0x02, 0x09, 0x09,
-0x05, 0x01, 0x02, 0x04, 0x03, 0x09, 0x05, 0x04,
-0x08, 0x05, 0x03, 0x03, 0x01, 0x02, 0x12, 0x01,
-0x01, 0x09, 0x05, 0x03, 0x01, 0x02, 0xe5, 0xe5,
-0xe5, 0x04, 0x03, 0x02, 0xe7, 0x02, 0x05, 0x03,
-0x01, 0x02, 0x40, 0x03, 0x02, 0xe5, 0x0b, 0x01,
-0x02, 0x0e, 0x0b, 0x07, 0x04, 0x04, 0x03, 0x02,
-0x02, 0x01, 0x01, 0x05, 0x09, 0x09, 0x01, 0x01,
-0xe5, 0xe5, 0x01, 0x09, 0x01, 0x09, 0x07, 0x01,
-0x01, 0xe5, 0x0f, 0x01, 0x07, 0x01, 0x01, 0x07,
-0x07, 0x01, 0x01, 0x07, 0x07, 0x0b, 0x04, 0x1a,
-0x02, 0x01, 0x04, 0x02, 0x1c, 0x02, 0x01, 0x01,
-0xe5, 0x09, 0x01, 0x11, 0x09, 0x09, 0x03, 0xe5,
-0xe5, 0x01, 0x04, 0xe7, 0xe5, 0xe5, 0x01, 0x04,
-0x04, 0x04, 0x06, 0x01, 0xe5, 0xe5, 0x01, 0x02,
-0x01, 0x09, 0x01, 0x07, 0x09, 0x01, 0xe5, 0xe7,
-0x07, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0xe5, 0x03,
-0x01, 0x02, 0x04, 0x09, 0x01, 0x02, 0x04, 0x03,
-0xe5, 0x03, 0x09, 0x03, 0xe8, 0x0e, 0xe5, 0x08,
-0x01, 0x01, 0x05, 0xe7, 0x1e, 0xe5, 0x30, 0x06,
-0x04, 0x04, 0x02, 0xe5, 0x04, 0x1d, 0x0c, 0xe5,
-0x11, 0x02, 0x03, 0x02, 0x08, 0x04, 0x04, 0x09,
-0x13, 0x02, 0x06, 0x0c, 0x02, 0x03, 0x13, 0x09,
-0x09, 0x22, 0x02, 0x14, 0x1d, 0xe6, 0x02, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x11, 0xe5,
-0x07, 0xe5, 0x15, 0x05, 0xe5, 0x03, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x0b, 0x05, 0xe5, 0x01,
-0xe6, 0x02, 0xe5, 0x0b, 0x05, 0xe5, 0x11, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x1f, 0xe5, 0x01, 0xe5,
-0xe5, 0x06, 0x01, 0x02, 0x02, 0xe6, 0xe5, 0x01,
-0x09, 0x09, 0x02, 0x06, 0xe5, 0x04, 0x02, 0xe6,
-0x06, 0xe6, 0x03, 0x02, 0xe6, 0x06, 0x09, 0xe6,
-0x06, 0xe5, 0xe5, 0x05, 0x09, 0x04, 0xe6, 0x01,
-0xe5, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04, 0x02,
-0xe6, 0x03, 0x02, 0x03, 0x05, 0xe6, 0x06, 0xe5,
-0x02, 0x01, 0x02, 0x05, 0x03, 0xe5, 0x07, 0x09,
-0xe5, 0x07, 0xe6, 0x06, 0xe6, 0x06, 0x09, 0x06,
-0x04, 0x01, 0xe6, 0x01, 0x02, 0x09, 0x09, 0x24,
-0x02, 0x10, 0x34, 0x26, 0x02, 0x06, 0x02, 0x6c,
-0x05, 0x02, 0x03, 0x0b, 0x08, 0x24, 0x03, 0x37,
-0x0c, 0x17, 0x04, 0x09, 0x02, 0x0a, 0x19, 0x13,
-0x13, 0x34, 0x02, 0xe5, 0xe5, 0x0a, 0x01, 0x06,
-0x02, 0x11, 0x01, 0x09, 0xe7, 0x03, 0x01, 0xe7,
-0x02, 0xe5, 0xe8, 0x05, 0xe7, 0x02, 0x02, 0x06,
-0x02, 0xe7, 0x0c, 0x02, 0x07, 0x01, 0x06, 0x03,
-0x01, 0x03, 0x04, 0xe7, 0x05, 0xe5, 0xe5, 0x05,
-0xe7, 0x03, 0x01, 0x04, 0x02, 0x01, 0xe7, 0x05,
-0xe7, 0x02, 0xe5, 0xe5, 0x09, 0xe6, 0x10, 0x01,
-0x06, 0xe7, 0xe5, 0x04, 0x01, 0x15, 0x0d, 0x0d,
-0x01, 0xe5, 0x05, 0x02, 0x03, 0x0c, 0x01, 0xe5,
-0x07, 0xe6, 0x03, 0xe5, 0x01, 0xe5, 0x04, 0x01,
-0xe6, 0x04, 0x02, 0xe5, 0x06, 0xe5, 0x07, 0xe6,
-0x01, 0x04, 0xe6, 0x06, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x02, 0xe5, 0xe5, 0x06, 0xe6, 0x06, 0xe6,
-0x04, 0x02, 0xe5, 0x04, 0x01, 0xe5, 0x05, 0x01,
-0xe6, 0x01, 0x04, 0xe6, 0x04, 0x01, 0xe5, 0x02,
-0x06, 0x13, 0x04, 0x02, 0xe6, 0x08, 0x19, 0xe5,
-0x02, 0x01, 0x02, 0xe5, 0x0e, 0x09, 0x0d, 0x0c,
-0x02, 0x01, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0x01, 0x05, 0x09, 0xe5, 0x05, 0x06,
-0x04, 0x07, 0x01, 0x07, 0x0a, 0x02, 0x01, 0x01,
-0x05, 0x04, 0x04, 0x07, 0x01, 0x09, 0xe5, 0x07,
-0xe5, 0x05, 0x01, 0x0b, 0x16, 0x04, 0xe5, 0x2a,
-0xe8, 0x0c, 0x05, 0x01, 0xe6, 0x06, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe6, 0x06, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x05,
-0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x04, 0xe5, 0x03,
-0x04, 0xe6, 0x01, 0x03, 0xe8, 0x01, 0x03, 0xe7,
-0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x03,
-0xe8, 0xe5, 0x04, 0xe5, 0x05, 0xe7, 0x07, 0xe5,
-0x06, 0xe6, 0x01, 0x03, 0xe7, 0x05, 0xe7, 0x07,
-0xe5, 0x07, 0xe7, 0x02, 0x01, 0x01, 0x01, 0x10,
-0x02, 0x05, 0x0a, 0x06, 0x01, 0xe5, 0x07, 0xe5,
-0x08, 0x1c, 0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x07,
-0x07, 0x01, 0x09, 0xe5, 0x09, 0xe5, 0x04, 0x02,
-0x06, 0x02, 0xe5, 0x04, 0xe5, 0xe6, 0x08, 0x08,
-0xe5, 0x04, 0xe5, 0xe6, 0x08, 0x05, 0x03, 0x09,
-0x05, 0x02, 0x06, 0x03, 0xe5, 0x03, 0x1b, 0x02,
-0xe5, 0x0f, 0x04, 0x01, 0x13, 0x01, 0x09, 0xe5,
-0xe5, 0x08, 0x09, 0x09, 0x06, 0x09, 0x02, 0x04,
-0x01, 0xe5, 0xe5, 0x05, 0x07, 0x01, 0x07, 0x01,
-0xe5, 0xe5, 0x07, 0xe5, 0xe5, 0x02, 0x02, 0x02,
-0xe5, 0xe7, 0x03, 0x03, 0xe5, 0xe5, 0x0b, 0x06,
-0x02, 0xe5, 0xe7, 0xe6, 0x0a, 0xe5, 0xe6, 0x02,
-0x09, 0x01, 0x06, 0x02, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x1c, 0x01, 0x0f, 0x09, 0x0a, 0x09, 0x08,
-0x0a, 0x1c, 0x09, 0x13, 0x09, 0x12, 0x02, 0x04,
-0x04, 0x04, 0xe5, 0x02, 0xe5, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x02, 0xe5, 0x02, 0x0a,
-0x03, 0xe5, 0x11, 0x04, 0x04, 0xe5, 0x07, 0xe5,
-0x1c, 0x02, 0x0d, 0x02, 0x02, 0x03, 0x0c, 0x09,
-0x08, 0x27, 0xe5, 0x07, 0x07, 0x0b, 0xe5, 0x05,
-0x01, 0x09, 0x0b, 0x04, 0x04, 0x03, 0x03, 0x09,
-0x01, 0xe5, 0x07, 0x09, 0x03, 0x03, 0x01, 0xe5,
-0x0b, 0x06, 0x12, 0x03, 0x09, 0x1f, 0xe7, 0x0f,
-0x10, 0x01, 0xe5, 0x0f, 0x01, 0xe5, 0x05, 0xe5,
-0xe5, 0xe5, 0x08, 0x04, 0x09, 0x01, 0xe6, 0x09,
-0x04, 0x01, 0xe6, 0x18, 0xe5, 0xe6, 0x18, 0x0f,
-0x17, 0x01, 0x17, 0xe5, 0x15, 0x26, 0xe8, 0xe5,
-0x0e, 0x01, 0x07, 0x01, 0x04, 0x02, 0xe6, 0x06,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x01, 0x03, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x05, 0x01, 0x02, 0x01,
-0x02, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x01, 0x05,
-0xe7, 0x01, 0x03, 0xe7, 0x07, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0x06, 0xe5, 0xe5,
-0x06, 0x01, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x07, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0xe6, 0x01, 0x04,
-0x01, 0x07, 0x01, 0x02, 0x08, 0x02, 0x0d, 0x05,
-0x05, 0x03, 0x05, 0x01, 0x08, 0x03, 0x03, 0xe6,
-0x08, 0x08, 0xe6, 0x01, 0x04, 0x01, 0x09, 0x04,
-0x04, 0x07, 0xe6, 0xe5, 0x04, 0x04, 0x04, 0xe5,
-0xe5, 0x02, 0x02, 0x02, 0x05, 0x02, 0xe7, 0x05,
-0xe5, 0xe5, 0x05, 0x03, 0x05, 0xe5, 0x01, 0xe5,
-0x03, 0xe5, 0x04, 0x03, 0x02, 0x05, 0xe5, 0x02,
-0xe5, 0x02, 0xe5, 0x01, 0x05, 0x09, 0xe6, 0x0a,
-0x05, 0xe5, 0x07, 0xe5, 0x16, 0x02, 0xe6, 0x0a,
-0x0c, 0x06, 0x02, 0x06, 0x01, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x03, 0x04, 0x08, 0x02, 0x06, 0x15,
-0x04, 0x05, 0x03, 0x04, 0x03, 0x0d, 0x03, 0x07,
-0x01, 0xe5, 0x09, 0xe5, 0xe5, 0x01, 0x02, 0x04,
-0x03, 0xe5, 0xe5, 0x04, 0x07, 0x03, 0x08, 0x04,
-0x05, 0x05, 0x01, 0x08, 0x04, 0x0d, 0x1b, 0x02,
-0x01, 0x26, 0x07, 0x08, 0x13, 0x06, 0x03, 0x01,
-0x13, 0x06, 0x0c, 0x06, 0x01, 0x06, 0x03, 0x08,
-0x01, 0x01, 0x0c, 0x02, 0x06, 0xe5, 0x0b, 0xe6,
-0x08, 0x02, 0x01, 0x02, 0xe5, 0x05, 0x14, 0x02,
-0x02, 0xe5, 0x09, 0x01, 0x07, 0x01, 0x0f, 0x08,
-0xe5, 0xe6, 0x07, 0x02, 0x01, 0xe6, 0x04, 0x05,
-0x02, 0x09, 0x18, 0x0b, 0xe5, 0x05, 0x04, 0x01,
-0x14, 0x05, 0x12, 0x04, 0xe7, 0x05, 0x05, 0x0b,
-0xe5, 0x0d, 0x07, 0xe5, 0xe5, 0x08, 0x06, 0x01,
-0x18, 0x0f, 0x0a, 0x16, 0x08, 0xe5, 0x02, 0x02,
-0x0b, 0x17, 0x03, 0x08, 0x0c, 0x03, 0x0f, 0x0e,
-0x10, 0x04, 0x11, 0x01, 0x05, 0x05, 0x05, 0x16,
-0x1b, 0xe5, 0x02, 0x01, 0x35, 0x0b, 0x0f, 0x02,
-0xe5, 0xe6, 0x18, 0xe5, 0x08, 0x17, 0x04, 0x03,
-0xe5, 0x03, 0x04, 0x08, 0x13, 0x04, 0xe5, 0x0c,
-0x04, 0xe5, 0x06, 0x07, 0x01, 0x04, 0x04, 0x0d,
-0xe5, 0x04, 0xe5, 0x04, 0xe6, 0x03, 0x02, 0x04,
-0xe5, 0x08, 0x03, 0x04, 0xe5, 0x0c, 0x01, 0x0c,
-0xe5, 0x07, 0xe5, 0x16, 0x09, 0x04, 0x01, 0x09,
-0x0a, 0xe6, 0x20, 0x05, 0x08, 0x0c, 0x0c, 0x06,
-0x06, 0x02, 0x09, 0x06, 0x06, 0x06, 0xe5, 0x09,
-0x10, 0x0b, 0x03, 0x0c, 0x09, 0x01, 0x07, 0x04,
-0x13, 0x04, 0x09, 0x01, 0x26, 0x12, 0x06, 0x04,
-0x09, 0x06, 0xe5, 0x0a, 0x06, 0x16, 0x07, 0x01,
-0x06, 0x01, 0x05, 0x05, 0xe5, 0x06, 0x04, 0x02,
-0x0e, 0x1c, 0x0a, 0x05, 0x02, 0x04, 0x02, 0x07,
-0x08, 0x1a, 0x02, 0x04, 0x09, 0x1f, 0xe6, 0x01,
-0x08, 0x02, 0x09, 0x08, 0xe6, 0x11, 0x01, 0x05,
-0xe6, 0x0a, 0x02, 0x03, 0xe5, 0x11, 0xe6, 0x06,
-0xe5, 0x08, 0x01, 0x07, 0x02, 0x02, 0x09, 0x02,
-0x04, 0x02, 0x03, 0xe7, 0x01, 0x03, 0xe6, 0x02,
-0x03, 0xe6, 0x02, 0x03, 0xe6, 0x02, 0x02, 0xe6,
-0x01, 0x03, 0xe7, 0x06, 0x09, 0xe6, 0xe5, 0x04,
-0xe6, 0x0b, 0x05, 0xe5, 0x22, 0xe5, 0xe6, 0x0d,
-0x09, 0x03, 0x06, 0x0b, 0x03, 0x03, 0x09, 0x06,
-0x08, 0x01, 0xe5, 0x01, 0x12, 0x01, 0x04, 0x02,
-0xe5, 0x06, 0x09, 0x0e, 0x02, 0x05, 0x08, 0xe5,
-0x02, 0x03, 0x08, 0x02, 0x08, 0x06, 0xe5, 0x03,
-0x03, 0x01, 0x0e, 0x04, 0x07, 0xe5, 0x14, 0x21,
-0xe8, 0xe5, 0xe5, 0x0e, 0x05, 0x18, 0x04, 0x04,
-0x03, 0x03, 0x01, 0x04, 0x04, 0x0b, 0x25, 0xe7,
-0xe5, 0x05, 0xe5, 0xe5, 0x07, 0x03, 0x02, 0xe6,
-0x02, 0x02, 0xe5, 0x06, 0x05, 0x01, 0x06, 0x07,
-0x01, 0x04, 0x07, 0x01, 0x02, 0x01, 0x0b, 0x0d,
-0x01, 0x0d, 0x1f, 0x04, 0x02, 0xe5, 0x07, 0x06,
-0x08, 0x05, 0x0f, 0x07, 0xe5, 0x01, 0x06, 0x02,
-0x05, 0x25, 0x01, 0x17, 0x05, 0xe6, 0xe5, 0x0d,
-0x02, 0x0a, 0x0a, 0x0d, 0x07, 0xe5, 0x03, 0xe5,
-0xe5, 0x07, 0xe6, 0x0e, 0x0b, 0x01, 0xe5, 0x12,
-0x14, 0xe5, 0xe5, 0x01, 0x06, 0x10, 0x03, 0x07,
-0x01, 0x06, 0x05, 0x01, 0x14, 0x0a, 0x38, 0x0f,
-0x04, 0xe5, 0x01, 0xe5, 0xe5, 0x0f, 0x19, 0x01,
-0x15, 0x06, 0x33, 0x03, 0xe5, 0xe8, 0x0a, 0x02,
-0xe5, 0xe6, 0x04, 0xe5, 0x01, 0x01, 0x03, 0xe5,
-0x07, 0x03, 0xe5, 0x04, 0x07, 0x01, 0x02, 0xe5,
-0x02, 0x02, 0x08, 0xe7, 0x04, 0x02, 0xe5, 0x05,
-0x07, 0x03, 0xe5, 0x05, 0xe5, 0x06, 0xe5, 0x07,
-0xe5, 0x0b, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0xe5,
-0x07, 0xe5, 0x04, 0x0c, 0xe5, 0x04, 0x12, 0xe5,
-0x1b, 0xe5, 0x1d, 0x02, 0x01, 0xe5, 0x01, 0x01,
-0x05, 0x01, 0xe5, 0x01, 0x0d, 0xe5, 0x11, 0x01,
-0x04, 0x09, 0x13, 0x01, 0xe5, 0x07, 0xe5, 0x01,
-0xe5, 0x15, 0x05, 0x02, 0x06, 0x03, 0x07, 0xe5,
-0x02, 0x04, 0x02, 0x03, 0xe5, 0x03, 0x01, 0x01,
-0xe5, 0xe6, 0x03, 0xe5, 0x01, 0xe5, 0x07, 0x06,
-0xe5, 0x04, 0x05, 0x0c, 0x1d, 0x1c, 0x01, 0x02,
-0xe5, 0xe6, 0x03, 0x08, 0x0d, 0x09, 0x02, 0x01,
-0xe5, 0xe5, 0x17, 0x01, 0xe5, 0x1e, 0x01, 0x02,
-0x01, 0xe5, 0x01, 0x1a, 0x0d, 0x04, 0x01, 0xe5,
-0x03, 0x10, 0x09, 0x01, 0x0a, 0x29, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x19, 0xe5, 0x02, 0x04, 0xe5,
-0xe6, 0x01, 0x0a, 0x1d, 0x01, 0x18, 0x02, 0x1d,
-0x09, 0xe5, 0x01, 0x0f, 0x06, 0x0e, 0x06, 0xe5,
-0x14, 0x09, 0x09, 0x13, 0x1a, 0x02, 0x06, 0x02,
-0x1a, 0x06, 0x05, 0xe5, 0x0c, 0x09, 0x01, 0x20,
-0x04, 0x01, 0x02, 0x02, 0x06, 0xe5, 0x01, 0x05,
-0x10, 0x02, 0x01, 0x01, 0xe5, 0xe6, 0xe5, 0x08,
-0x04, 0x05, 0x01, 0xe5, 0x05, 0x02, 0x04, 0x02,
-0x03, 0x07, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0x03, 0xe5, 0x04,
-0x02, 0xe5, 0xe5, 0x01, 0x04, 0x1b, 0x01, 0x07,
-0x01, 0x1b, 0x07, 0x01, 0xe5, 0xe5, 0x01, 0x0a,
-0x03, 0x05, 0x01, 0x01, 0x13, 0x0f, 0x01, 0x01,
-0x05, 0x03, 0x04, 0x14, 0x03, 0x05, 0x01, 0x15,
-0x02, 0x01, 0xe5, 0x02, 0x07, 0x04, 0xe5, 0xe7,
-0x02, 0x09, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0x02,
-0x02, 0xe6, 0x03, 0x02, 0x01, 0xe5, 0xe5, 0xe5,
-0x08, 0x04, 0x14, 0x03, 0x05, 0x03, 0x1d, 0x02,
-0x03, 0xe5, 0x0b, 0x04, 0x04, 0x01, 0x11, 0x01,
-0x0c, 0x04, 0x01, 0x01, 0x01, 0xe5, 0x05, 0x03,
-0x17, 0x04, 0x01, 0xe5, 0x05, 0x01, 0x0a, 0x04,
-0x04, 0x05, 0xe5, 0x05, 0x07, 0x06, 0x01, 0xe5,
-0xe5, 0x01, 0x02, 0x03, 0x04, 0xe5, 0x02, 0x04,
-0x02, 0x09, 0x01, 0x07, 0x07, 0x43, 0x02, 0x01,
-0x02, 0x0a, 0x09, 0x01, 0x11, 0x01, 0x04, 0x01,
-0x04, 0xe5, 0x03, 0x01, 0x02, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x04, 0xe7, 0x0b, 0x03, 0xe5, 0xe5,
-0x01, 0x03, 0xe5, 0xe5, 0x05, 0xe5, 0x19, 0x06,
-0x01, 0x14, 0x03, 0xe5, 0x01, 0x01, 0x03, 0xe5,
-0xe6, 0x0a, 0x01, 0x01, 0xe5, 0x4d, 0xe5, 0x04,
-0x01, 0x1b, 0x1a, 0x09, 0x04, 0x04, 0x02, 0xe5,
-0x04, 0x13, 0x04, 0x09, 0x04, 0x22, 0x1a, 0x09,
-0x04, 0x0e, 0x20, 0x02, 0x2e, 0xe5, 0xe5, 0xe5,
-0x1d, 0x01, 0x17, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x11, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x1b, 0xe5, 0x03, 0x11, 0x05, 0xe5, 0x07,
-0xe5, 0x0b, 0x05, 0xe5, 0x0b, 0x13, 0x09, 0x09,
-0x20, 0xe6, 0xe5, 0x0b, 0x02, 0x01, 0x01, 0x02,
-0x03, 0xe5, 0xe5, 0x01, 0x09, 0x09, 0xe5, 0x07,
-0xe7, 0xe5, 0xe5, 0x01, 0xe6, 0x03, 0x02, 0xe5,
-0x07, 0x04, 0x01, 0x02, 0xe5, 0xe5, 0xe5, 0xe5,
-0x01, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0x09, 0x0b,
-0xe5, 0x07, 0x09, 0x03, 0x05, 0xe5, 0x07, 0xe5,
-0x07, 0x05, 0x03, 0xe5, 0x07, 0x05, 0x03, 0x09,
-0x05, 0x03, 0x03, 0x05, 0x05, 0x03, 0x09, 0x04,
-0x01, 0x06, 0xe5, 0xe7, 0x01, 0x45, 0x06, 0x16,
-0x09, 0x13, 0x09, 0x15, 0x1d, 0x09, 0x13, 0x13,
-0x09, 0x09, 0x1d, 0x04, 0x02, 0x03, 0x39, 0x0d,
-0x0f, 0x0c, 0x06, 0x03, 0x0f, 0x01, 0x09, 0x0e,
-0x04, 0x01, 0x1b, 0x02, 0x06, 0x01, 0x11, 0x01,
-0x13, 0x09, 0x09, 0x1f, 0x09, 0x01, 0xe5, 0xe5,
-0x14, 0x01, 0x09, 0x13, 0xe7, 0x06, 0xe6, 0x03,
-0x01, 0xe5, 0xe5, 0x05, 0xe7, 0x0a, 0x01, 0x02,
-0xe7, 0xe5, 0x03, 0xe7, 0x03, 0x01, 0xe7, 0x0a,
-0x0b, 0x02, 0x03, 0x0e, 0xe5, 0x0a, 0xe7, 0x05,
-0xe7, 0x0f, 0xe7, 0x16, 0xe5, 0xe5, 0x06, 0x10,
-0x1d, 0x01, 0x01, 0x17, 0x01, 0xe5, 0x05, 0x02,
-0x12, 0xe6, 0x08, 0x04, 0xe5, 0x01, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x0e, 0x02, 0xe5, 0x07, 0xe5,
-0xe5, 0x01, 0xe5, 0xe7, 0x01, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x03, 0x06, 0xe6, 0x06,
-0xe5, 0x02, 0x02, 0x02, 0x03, 0x04, 0xe6, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x05, 0x05, 0x02, 0xe6,
-0x03, 0x03, 0x10, 0x01, 0xe5, 0x04, 0x02, 0xe5,
-0x08, 0x21, 0xe5, 0xe6, 0x16, 0x01, 0x03, 0x05,
-0x03, 0xe5, 0x0d, 0x0b, 0x02, 0x04, 0x09, 0xe5,
-0x11, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x24, 0x02,
-0x01, 0x02, 0x08, 0xe5, 0x03, 0x09, 0xe5, 0x07,
-0x01, 0x07, 0x09, 0xe5, 0x07, 0x11, 0x01, 0x09,
-0x09, 0x03, 0x1f, 0x01, 0xe5, 0x14, 0xe6, 0x06,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe6,
-0x04, 0xe6, 0xe5, 0x04, 0xe6, 0x04, 0x04, 0xe6,
-0x01, 0x03, 0xe5, 0xe5, 0x01, 0x04, 0xe6, 0x01,
-0x03, 0x01, 0xe6, 0x06, 0xe6, 0x04, 0xe6, 0x02,
-0x03, 0x01, 0xe6, 0x04, 0xe6, 0x08, 0xe6, 0xe5,
-0x04, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe6, 0x08,
-0xe5, 0x07, 0xe5, 0x06, 0x03, 0x04, 0x12, 0x01,
-0xe5, 0x07, 0xe5, 0x08, 0x08, 0xe5, 0x08, 0x12,
-0xe6, 0x10, 0xe6, 0x06, 0x07, 0x01, 0xe5, 0x07,
-0xe5, 0x01, 0xe6, 0x02, 0xe6, 0xe7, 0x02, 0x02,
-0x08, 0xe6, 0xe6, 0x08, 0x04, 0x09, 0xe5, 0x07,
-0xe5, 0x01, 0xe6, 0x02, 0x09, 0xe5, 0x01, 0xe6,
-0x09, 0xe5, 0xe6, 0x0b, 0xe5, 0x03, 0x03, 0xe6,
-0x03, 0x1a, 0xe5, 0x16, 0x01, 0xe5, 0x05, 0x02,
-0x12, 0xe5, 0xe5, 0x06, 0x01, 0x09, 0x03, 0xe5,
-0x03, 0x0e, 0x04, 0x09, 0x04, 0x01, 0xe5, 0xe5,
-0x0c, 0x09, 0x02, 0x04, 0x03, 0x09, 0x09, 0x02,
-0x02, 0x02, 0x01, 0x02, 0x01, 0x04, 0x02, 0x05,
-0x02, 0x02, 0x02, 0x01, 0x08, 0x0a, 0x01, 0xe5,
-0x0e, 0xe5, 0x07, 0x08, 0x13, 0xe7, 0x16, 0x01,
-0x09, 0x0a, 0x08, 0x1d, 0x13, 0x09, 0x13, 0xe5,
-0x03, 0x03, 0x05, 0x02, 0x02, 0xe5, 0x02, 0x01,
-0x02, 0x05, 0xe5, 0x08, 0x02, 0x03, 0x05, 0x0f,
-0x03, 0x03, 0x06, 0x04, 0x0d, 0x0f, 0xe5, 0x07,
-0x04, 0x18, 0x02, 0x10, 0x06, 0x01, 0xe5, 0x05,
-0x02, 0x09, 0x08, 0x18, 0x01, 0xe5, 0x0b, 0x06,
-0x20, 0x02, 0x06, 0x02, 0x05, 0x06, 0x05, 0x02,
-0x06, 0x03, 0x04, 0x03, 0x03, 0x0c, 0x02, 0x05,
-0x0a, 0x02, 0x0a, 0x02, 0x01, 0xe5, 0x0c, 0x09,
-0x05, 0x02, 0x14, 0xe8, 0x02, 0x0b, 0xe5, 0x32,
-0x04, 0x02, 0x24, 0x02, 0x10, 0x09, 0x15, 0x03,
-0xe5, 0x03, 0x01, 0xe5, 0x19, 0x03, 0x0f, 0x1b,
-0x05, 0x05, 0x25, 0x02, 0x01, 0x0f, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0xe5, 0x03, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0x03, 0x03, 0x01, 0x09, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x01, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0x04, 0x02, 0x01, 0x07,
-0x01, 0x03, 0x03, 0xe6, 0xe5, 0x04, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x03, 0x03, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x02, 0x04, 0x06, 0x2d,
-0xe5, 0x07, 0x01, 0x07, 0xe6, 0x01, 0x02, 0xe6,
-0x03, 0x04, 0xe5, 0xe5, 0x07, 0xe5, 0x09, 0x03,
-0xe5, 0x09, 0x05, 0x03, 0xe5, 0x01, 0x05, 0x03,
-0x04, 0x02, 0xe6, 0xe5, 0x1e, 0x08, 0xe5, 0x0c,
-0x09, 0x21, 0x10, 0x03, 0x15, 0xe7, 0x01, 0x08,
-0x03, 0x05, 0x13, 0xe5, 0x07, 0x0a, 0x08, 0x0a,
-0x08, 0x0d, 0x02, 0xe5, 0x0a, 0x02, 0x05, 0x02,
-0x05, 0x04, 0x06, 0x03, 0x04, 0x0b, 0x14, 0x08,
-0x11, 0x01, 0x0a, 0x09, 0x03, 0x02, 0x02, 0x09,
-0x0b, 0x13, 0x04, 0x01, 0x02, 0x01, 0x0a, 0x09,
-0x06, 0x0a, 0x04, 0x05, 0x02, 0x02, 0xe5, 0x05,
-0xe5, 0x07, 0x02, 0x06, 0x02, 0x01, 0x0b, 0x04,
-0x0b, 0x08, 0x05, 0x02, 0x04, 0x07, 0x03, 0x01,
-0x17, 0x0c, 0x06, 0x08, 0x06, 0x0a, 0x01, 0x08,
-0x1e, 0x21, 0xe5, 0xe5, 0x26, 0x07, 0xe5, 0x06,
-0x03, 0x05, 0x08, 0x1f, 0x18, 0xe5, 0x08, 0xe5,
-0x07, 0x03, 0xe5, 0x02, 0xe5, 0x03, 0xe5, 0x04,
-0xe7, 0x02, 0x05, 0x03, 0x0a, 0x01, 0x02, 0x03,
-0x05, 0xe5, 0x04, 0x02, 0x10, 0xe6, 0x06, 0x06,
-0x02, 0x01, 0x0f, 0x06, 0x01, 0x08, 0xe5, 0x01,
-0xe5, 0x1c, 0x0b, 0x27, 0x25, 0x09, 0x06, 0x0a,
-0x04, 0xe5, 0x01, 0x04, 0x02, 0x04, 0x02, 0xe5,
-0x01, 0x06, 0x07, 0x01, 0x0e, 0x13, 0x0c, 0x04,
-0x0a, 0x0a, 0x03, 0x01, 0x0f, 0x08, 0x04, 0x01,
-0x09, 0x1d, 0x09, 0x05, 0xe5, 0x07, 0x04, 0x02,
-0x01, 0xe5, 0xe5, 0x07, 0x03, 0x04, 0xe6, 0x04,
-0xe5, 0x08, 0x05, 0x0d, 0x04, 0x01, 0x06, 0x03,
-0x17, 0x03, 0x13, 0x05, 0x02, 0x10, 0x02, 0x1e,
-0x03, 0x01, 0x0d, 0x09, 0x09, 0x02, 0xe6, 0x11,
-0x08, 0x12, 0x06, 0x08, 0xe5, 0x01, 0x06, 0x0c,
-0x0d, 0x02, 0x04, 0x04, 0x04, 0x01, 0x01, 0x07,
-0x01, 0xe7, 0x01, 0xe5, 0x01, 0x11, 0x01, 0x05,
-0x06, 0xe5, 0x07, 0x03, 0xe5, 0x03, 0x01, 0xe5,
-0x05, 0xe6, 0x09, 0x06, 0xe6, 0x02, 0x02, 0x05,
-0x07, 0x0f, 0xe7, 0x05, 0x1f, 0x03, 0x0e, 0x1d,
-0x04, 0x02, 0x20, 0x09, 0x05, 0x20, 0x09, 0x04,
-0xe5, 0x04, 0x0b, 0x02, 0x07, 0x01, 0x03, 0x02,
-0x09, 0x0b, 0x23, 0x27, 0x0f, 0x1b, 0x08, 0x06,
-0xe6, 0x06, 0xe5, 0x06, 0x10, 0x03, 0xe6, 0xe5,
-0x01, 0x02, 0x05, 0xe5, 0xe7, 0xe5, 0x01, 0x04,
-0x0b, 0x06, 0xe5, 0x0d, 0x01, 0x01, 0x01, 0xe5,
-0x06, 0xe6, 0xe5, 0x04, 0x08, 0x05, 0x0b, 0x03,
-0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0x01, 0x06, 0x1c,
-0xe5, 0x2c, 0xe5, 0x01, 0x25, 0x07, 0x07, 0xe5,
-0x01, 0x0e, 0x0d, 0x06, 0x0b, 0x06, 0x03, 0xe5,
-0x02, 0x0a, 0xe5, 0xe5, 0x02, 0x0d, 0x03, 0x09,
-0x01, 0x1d, 0x05, 0x02, 0x06, 0xe5, 0x09, 0x18,
-0x02, 0xe5, 0x06, 0x04, 0x1c, 0x05, 0x01, 0x01,
-0x01, 0x19, 0x09, 0x09, 0x06, 0x01, 0xe6, 0x03,
-0x03, 0x05, 0x03, 0x0c, 0x02, 0xe5, 0x05, 0xe6,
-0x01, 0x06, 0x03, 0x01, 0x0e, 0x09, 0x09, 0xe5,
-0x02, 0x02, 0x01, 0x04, 0x03, 0x01, 0x04, 0x0e,
-0x04, 0x01, 0x07, 0x09, 0x05, 0x02, 0xe5, 0x07,
-0x09, 0x09, 0x05, 0xe5, 0x20, 0x02, 0xe6, 0x06,
-0x01, 0x0f, 0x01, 0x24, 0x01, 0xe5, 0x05, 0x0b,
-0xe5, 0x01, 0x02, 0xe5, 0x01, 0x06, 0x01, 0x07,
-0x02, 0x0c, 0x10, 0x03, 0x02, 0xe6, 0xe6, 0x11,
-0x01, 0x0e, 0xe5, 0xe5, 0x13, 0x07, 0x24, 0xe6,
-0x17, 0x06, 0x03, 0x01, 0xe5, 0x01, 0x0e, 0x13,
-0x1c, 0x09, 0x0c, 0x05, 0x09, 0x0a, 0x0a, 0x14,
-0x05, 0x29, 0x16, 0x04, 0x10, 0x07, 0x18, 0x1f,
-0xe6, 0x07, 0xe5, 0x02, 0xe6, 0x0b, 0xe5, 0x0a,
-0x02, 0xe6, 0x03, 0x02, 0xe5, 0x01, 0xe5, 0x01,
-0xe5, 0xe6, 0x04, 0x03, 0x01, 0xe5, 0xe5, 0xe7,
-0x04, 0x02, 0xe5, 0xe6, 0x01, 0x03, 0x06, 0x02,
-0xe5, 0x06, 0x02, 0xe5, 0x05, 0x02, 0x01, 0x06,
-0xe5, 0x07, 0x01, 0xe5, 0x01, 0x03, 0x02, 0x01,
-0xe5, 0x03, 0x01, 0xe5, 0x03, 0xe8, 0x04, 0xe5,
-0x08, 0x09, 0x09, 0x09, 0xe5, 0xe6, 0x02, 0x01,
-0x02, 0xe5, 0x04, 0x02, 0x01, 0x04, 0x02, 0xe5,
-0x0a, 0x02, 0xe5, 0x09, 0x01, 0xe6, 0xe5, 0x01,
-0x01, 0x05, 0xe5, 0x1e, 0x02, 0x06, 0x02, 0x06,
-0x03, 0x02, 0x01, 0xe5, 0x08, 0x09, 0x02, 0x02,
-0xe5, 0x01, 0xe6, 0xe5, 0x05, 0x02, 0x0b, 0xe5,
-0x04, 0x03, 0xe5, 0x07, 0x01, 0x01, 0xe6, 0xe5,
-0x02, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x0e,
-0xe5, 0x08, 0xe5, 0x03, 0x0a, 0x08, 0x03, 0xe5,
-0x04, 0x09, 0x02, 0x01, 0x03, 0x03, 0x01, 0x03,
-0x10, 0x03, 0x07, 0x01, 0x02, 0xe8, 0x03, 0x0c,
-0x19, 0x09, 0x05, 0xe5, 0x08, 0x01, 0x05, 0x04,
-0x01, 0x01, 0x05, 0x04, 0x04, 0x01, 0x09, 0x02,
-0x26, 0x07, 0x06, 0x01, 0x03, 0x0a, 0xe5, 0x07,
-0x0f, 0x01, 0x43, 0x0b, 0x04, 0x02, 0xe5, 0x01,
-0x28, 0x09, 0x09, 0x06, 0xe5, 0xe5, 0x08, 0x01,
-0x07, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x2a, 0xe5,
-0x08, 0x05, 0xe5, 0x02, 0x02, 0x20, 0xe5, 0xe5,
-0xe5, 0x42, 0x0d, 0x02, 0xe5, 0x01, 0x01, 0x03,
-0x25, 0x09, 0x01, 0x0c, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0xe5, 0x08, 0x09, 0x01, 0x02, 0x09, 0xe5,
-0x01, 0x0a, 0x01, 0x02, 0x09, 0x08, 0x02, 0xe5,
-0x01, 0xe5, 0x03, 0x07, 0x01, 0x04, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x02, 0x09, 0x04, 0x01, 0x02,
-0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0x0e, 0x0f,
-0xe6, 0xe6, 0x01, 0x28, 0x03, 0x05, 0x01, 0x01,
-0x09, 0x09, 0x05, 0x03, 0x05, 0x03, 0x05, 0x01,
-0x01, 0x09, 0x0f, 0x01, 0x01, 0x11, 0x03, 0x05,
-0x03, 0x08, 0x01, 0x04, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x09, 0x05, 0x01, 0x01,
-0x23, 0x01, 0x01, 0x0f, 0x03, 0x09, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0x0c, 0x18, 0x09, 0x01, 0x07,
-0x05, 0xe5, 0x01, 0x06, 0x02, 0x01, 0x02, 0x04,
-0x04, 0x01, 0x02, 0x01, 0x01, 0xe5, 0x05, 0x04,
-0x07, 0x04, 0x01, 0x03, 0xe5, 0x08, 0x06, 0x01,
-0xe5, 0x03, 0x13, 0x01, 0x07, 0x01, 0x03, 0xe5,
-0x01, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x07, 0x01,
-0x04, 0x01, 0x18, 0x05, 0x01, 0x04, 0x0c, 0x09,
-0xe5, 0x03, 0x04, 0x2b, 0x09, 0x01, 0x07, 0x03,
-0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0x01, 0x01, 0x01,
-0x07, 0x05, 0xe6, 0xe5, 0xe5, 0x01, 0x06, 0x01,
-0xe5, 0x01, 0x08, 0x01, 0xe5, 0xe5, 0xe6, 0xe5,
-0xe5, 0x03, 0xe8, 0x02, 0x04, 0x04, 0x03, 0xe5,
-0x06, 0x06, 0x01, 0x07, 0x01, 0x04, 0x01, 0xe5,
-0xe5, 0xe6, 0x03, 0x01, 0x01, 0xe7, 0x01, 0x01,
-0x01, 0xe5, 0xe5, 0x05, 0xe7, 0x05, 0xe7, 0x06,
-0x01, 0x02, 0x01, 0x01, 0xe5, 0xe7, 0x09, 0x09,
-0x07, 0xe7, 0x08, 0x31, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x1a, 0x09, 0x13, 0x09, 0x0b, 0x09,
-0x0c, 0x1a, 0x09, 0x09, 0x04, 0x04, 0x09, 0x09,
-0x04, 0x04, 0x20, 0x03, 0xe5, 0xe5, 0x07, 0x01,
-0x2f, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x03, 0x17,
-0xe5, 0x07, 0xe5, 0x01, 0x0f, 0xe5, 0x07, 0xe5,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x17,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x21, 0x01, 0xe5,
-0x07, 0x05, 0x09, 0x09, 0x09, 0x09, 0x05, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x04, 0x02,
-0x06, 0x02, 0x09, 0xe6, 0x03, 0x02, 0xe5, 0x01,
-0x05, 0x09, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x09,
-0xe6, 0x03, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x02,
-0x01, 0x02, 0x09, 0x09, 0xe5, 0x04, 0x02, 0xe5,
-0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x07, 0x06, 0x02, 0x02, 0x0a,
-0x03, 0xe5, 0x01, 0x3a, 0xe5, 0x07, 0xe5, 0x07,
-0x07, 0x02, 0x12, 0xe5, 0x2f, 0x02, 0x08, 0xe5,
-0x08, 0x1a, 0x02, 0x12, 0xe5, 0x2f, 0xe5, 0x08,
-0x04, 0x02, 0x03, 0x3d, 0x05, 0x03, 0x05, 0x0d,
-0x13, 0x05, 0x13, 0x09, 0x06, 0x08, 0x05, 0x02,
-0x06, 0x03, 0x19, 0x03, 0x05, 0x09, 0x03, 0x05,
-0x09, 0x13, 0x0d, 0x07, 0x0e, 0x35, 0x01, 0x09,
-0xe7, 0x05, 0xe7, 0x03, 0x01, 0x07, 0x01, 0x07,
-0x02, 0xe6, 0x06, 0xe6, 0x02, 0xe5, 0xe5, 0x03,
-0x01, 0xe5, 0xe8, 0xe5, 0x03, 0xe7, 0x07, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x03, 0x02, 0xe5, 0x03,
-0x0c, 0x04, 0x05, 0xe6, 0x05, 0xe7, 0xe5, 0x04,
-0xe6, 0x05, 0xe7, 0x06, 0xe6, 0x06, 0xe6, 0xe5,
-0x03, 0xe7, 0x0f, 0x0f, 0xe7, 0x34, 0x01, 0xe5,
-0x04, 0xe5, 0xe7, 0x04, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x02, 0xe5, 0x07,
-0xe5, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04,
-0x02, 0xe5, 0x01, 0x01, 0x04, 0xe6, 0x03, 0xe5,
-0x01, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0x08, 0xe5,
-0x09, 0x05, 0x02, 0xe5, 0x08, 0x05, 0x02, 0xe5,
-0x08, 0x09, 0x04, 0x02, 0xe6, 0x0e, 0x02, 0x0d,
-0xe5, 0x01, 0xe5, 0x33, 0x01, 0x04, 0x06, 0x02,
-0x09, 0x02, 0x01, 0x04, 0x02, 0x01, 0x06, 0xe5,
-0x01, 0x03, 0x05, 0x06, 0x01, 0x07, 0x01, 0x01,
-0x07, 0x08, 0x02, 0x03, 0x05, 0x09, 0x13, 0x03,
-0x07, 0x04, 0x02, 0xe5, 0x01, 0x07, 0x04, 0x02,
-0x01, 0x09, 0x01, 0xe5, 0x05, 0x07, 0x10, 0x02,
-0x03, 0x0c, 0x01, 0xe5, 0x07, 0x0b, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6,
-0x06, 0xe6, 0x01, 0x04, 0xe6, 0xe5, 0x04, 0xe6,
-0xe5, 0x04, 0xe6, 0x06, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe6, 0xe5, 0x02, 0xe5, 0xe6, 0x01, 0x02,
-0xe6, 0x04, 0x04, 0xe7, 0x04, 0xe8, 0x01, 0x04,
-0x09, 0xe5, 0x01, 0x05, 0xe5, 0x05, 0xe8, 0x06,
-0xe5, 0x05, 0xe8, 0x06, 0xe5, 0x07, 0xe5, 0x05,
-0xe7, 0x01, 0xe5, 0x01, 0xe7, 0x07, 0xe6, 0x06,
-0xe5, 0x06, 0xe6, 0xe5, 0x34, 0x01, 0x14, 0x08,
-0xe5, 0x07, 0xe6, 0x04, 0x0b, 0xe6, 0x07, 0x12,
-0xe5, 0x03, 0x05, 0x06, 0x02, 0x06, 0xe5, 0x01,
-0xe5, 0x06, 0xe5, 0x07, 0xe6, 0x0d, 0x02, 0xe6,
-0x07, 0x05, 0x02, 0x1a, 0x02, 0xe6, 0x03, 0x1b,
-0xe6, 0xe5, 0x34, 0x01, 0x0c, 0x09, 0x04, 0x02,
-0x06, 0x01, 0x07, 0x04, 0x04, 0x01, 0x02, 0x13,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x04, 0x02,
-0x01, 0x01, 0xe5, 0x03, 0xe5, 0xe6, 0x01, 0x02,
-0x03, 0xe5, 0x0a, 0x0c, 0xe5, 0xe7, 0x03, 0x09,
-0xe5, 0xe7, 0x03, 0x09, 0x09, 0xe5, 0xe6, 0x01,
-0x02, 0x01, 0xe6, 0x1a, 0x01, 0xe6, 0x4b, 0x08,
-0x09, 0x07, 0x16, 0x0d, 0xe6, 0x01, 0xe5, 0x02,
-0xe5, 0x01, 0x02, 0x09, 0x04, 0xe5, 0x02, 0x09,
-0xe5, 0x07, 0x0e, 0xe5, 0x02, 0x0a, 0x03, 0xe5,
-0x02, 0x18, 0xe5, 0x02, 0x03, 0x01, 0x1d, 0xe7,
-0x01, 0x21, 0x2e, 0x02, 0x06, 0x01, 0xe5, 0x05,
-0x09, 0x0c, 0x0c, 0x03, 0x05, 0x07, 0x04, 0x02,
-0x05, 0x05, 0x04, 0x02, 0x02, 0x08, 0xe5, 0x0b,
-0x03, 0x0f, 0x03, 0x19, 0x05, 0x04, 0x05, 0x19,
-0x01, 0xe5, 0x26, 0xe5, 0x01, 0x01, 0x0a, 0x05,
-0x02, 0x06, 0x02, 0x10, 0x09, 0x01, 0xe5, 0x05,
-0x02, 0x15, 0x15, 0x04, 0x02, 0x09, 0x04, 0x2d,
-0x38, 0x01, 0xe5, 0x0b, 0xe6, 0xe5, 0x10, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0xe6, 0x02,
-0x01, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x04, 0xe5,
-0xe5, 0x02, 0x03, 0x01, 0xe5, 0x03, 0x01, 0x01,
-0xe6, 0x04, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x07, 0x01, 0x01, 0x01, 0x03, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0x06, 0xe7, 0x0c, 0xe5,
-0x01, 0x37, 0x06, 0xe5, 0x01, 0x05, 0xe5, 0x0b,
-0x04, 0x0a, 0x03, 0x02, 0x02, 0xe5, 0x01, 0x05,
-0xe5, 0x11, 0xe5, 0x03, 0x02, 0x02, 0x07, 0x01,
-0x01, 0x05, 0x01, 0xe5, 0x07, 0x03, 0x12, 0x06,
-0x01, 0x03, 0x03, 0xe5, 0x07, 0x02, 0x07, 0xe5,
-0x15, 0x06, 0x07, 0xe5, 0x0e, 0xe7, 0x0e, 0x03,
-0x0b, 0x13, 0x08, 0x02, 0xe5, 0x02, 0x02, 0xe5,
-0x02, 0x01, 0x02, 0x06, 0x02, 0x03, 0x09, 0x06,
-0x05, 0x04, 0x04, 0x0f, 0xe5, 0x04, 0x05, 0x10,
-0x01, 0x06, 0x09, 0x04, 0x16, 0x03, 0x12, 0x07,
-0x1b, 0xe5, 0x0e, 0x02, 0x02, 0xe6, 0x1b, 0x12,
-0xe5, 0x02, 0x06, 0x02, 0x0c, 0x02, 0x19, 0x04,
-0x04, 0x03, 0x06, 0x01, 0x0f, 0x02, 0x05, 0x04,
-0xe5, 0x02, 0x01, 0x01, 0x01, 0x01, 0x09, 0x06,
-0x0c, 0x02, 0xe5, 0x06, 0x03, 0x06, 0x02, 0x06,
-0x02, 0x11, 0x1e, 0x01, 0x0e, 0xe6, 0xe6, 0x11,
-0x06, 0x09, 0xe5, 0x10, 0x04, 0x02, 0x01, 0x06,
-0xe5, 0xe6, 0x02, 0x04, 0x07, 0xe6, 0x0a, 0x05,
-0x01, 0xe5, 0x02, 0xe5, 0xe5, 0xe6, 0x02, 0xe5,
-0xe5, 0xe5, 0x10, 0x0e, 0x04, 0x03, 0x07, 0xe5,
-0xe5, 0x02, 0x06, 0x01, 0x1e, 0x06, 0x0d, 0x1f,
-0x01, 0x0d, 0x01, 0x02, 0x1b, 0x0b, 0x01, 0x0c,
-0x04, 0x15, 0x02, 0x04, 0x08, 0x19, 0x01, 0x07,
-0x01, 0x11, 0x08, 0x13, 0x1a, 0x17, 0x24, 0x01,
-0x0d, 0x0c, 0x05, 0xe5, 0x07, 0x05, 0x0d, 0x13,
-0x0f, 0x03, 0x04, 0xe5, 0x02, 0x05, 0x07, 0x06,
-0x04, 0x03, 0x07, 0x15, 0x07, 0x01, 0x03, 0x04,
-0x0c, 0x01, 0x01, 0x05, 0x09, 0x01, 0x05, 0x0b,
-0x0b, 0x17, 0x0d, 0x17, 0x0f, 0x03, 0xe5, 0x0c,
-0x04, 0xe5, 0x11, 0x07, 0x0b, 0x04, 0x09, 0x02,
-0x06, 0x13, 0xe7, 0x03, 0x04, 0x09, 0x09, 0x0f,
-0x08, 0x1a, 0x09, 0x13, 0x0b, 0x07, 0x04, 0x01,
-0x18, 0x04, 0x01, 0x07, 0x01, 0xe5, 0x0c, 0x03,
-0x2f, 0x0a, 0x10, 0x0f, 0x07, 0x14, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x04, 0x0f, 0x03, 0x12, 0x07,
-0x1f, 0x07, 0x09, 0x12, 0x19, 0x02, 0x04, 0x02,
-0x08, 0x30, 0x06, 0x07, 0x06, 0x02, 0xe7, 0x06,
-0xe5, 0x03, 0x01, 0x02, 0x04, 0x07, 0x01, 0x09,
-0x03, 0xe5, 0x03, 0x03, 0xe5, 0x04, 0x01, 0xe5,
-0x01, 0x04, 0xe5, 0xe5, 0x11, 0x02, 0x02, 0xe5,
-0x04, 0x06, 0x01, 0xe5, 0x07, 0xe5, 0x06, 0xe5,
-0xe5, 0x05, 0x0a, 0xe6, 0x06, 0xe6, 0x07, 0x10,
-0xe5, 0x10, 0x03, 0x03, 0x3c, 0x10, 0x03, 0x01,
-0x04, 0xe6, 0x01, 0x06, 0x1a, 0xe5, 0x02, 0x08,
-0x01, 0x05, 0x02, 0x0c, 0x04, 0x04, 0x07, 0x06,
-0x03, 0x04, 0x01, 0x02, 0x06, 0x01, 0x04, 0x15,
-0x02, 0x08, 0x09, 0x05, 0x15, 0x09, 0x01, 0xe5,
-0x01, 0x06, 0x04, 0x02, 0x14, 0x09, 0x07, 0x01,
-0xe5, 0x03, 0x03, 0x0f, 0x06, 0x08, 0x03, 0xe5,
-0x0e, 0x03, 0x02, 0x03, 0xe6, 0x02, 0x04, 0x04,
-0x0b, 0x07, 0x02, 0xe5, 0x06, 0x06, 0x1d, 0x01,
-0x1a, 0x1d, 0xe5, 0x07, 0x0e, 0xe5, 0x01, 0x01,
-0x01, 0x0b, 0x01, 0x2f, 0x01, 0x11, 0x01, 0x09,
-0x04, 0x01, 0xe5, 0x06, 0x01, 0x01, 0x08, 0x01,
-0x09, 0x03, 0x05, 0x0b, 0x11, 0x1c, 0x16, 0x09,
-0x06, 0x1d, 0x09, 0x0e, 0x03, 0x10, 0x0b, 0x08,
-0x1c, 0x13, 0x12, 0x01, 0x0b, 0x08, 0x20, 0x1b,
-0x09, 0x07, 0x17, 0x07, 0x08, 0x01, 0x18, 0x01,
-0x07, 0x01, 0x0f, 0xe5, 0xe7, 0x0a, 0x19, 0xe5,
-0x04, 0xe5, 0x01, 0xe5, 0x03, 0x0a, 0xe5, 0xe6,
-0xe5, 0x03, 0xe6, 0x05, 0x01, 0xe5, 0x01, 0x02,
-0xe6, 0x03, 0x03, 0x05, 0x01, 0xe6, 0xe6, 0x01,
-0x02, 0xe5, 0xe6, 0x01, 0x05, 0xe5, 0x05, 0xe5,
-0x07, 0xe9, 0x01, 0x05, 0xe5, 0x0b, 0x01, 0x01,
-0x02, 0xe5, 0xe5, 0x02, 0x05, 0x03, 0x08, 0xe5,
-0x08, 0x05, 0x06, 0xe5, 0x04, 0x01, 0xe5, 0x05,
-0x09, 0x1e, 0xe6, 0xe5, 0xe5, 0x01, 0x01, 0x08,
-0xe5, 0x18, 0xe5, 0x07, 0xe5, 0x0d, 0x03, 0x01,
-0xe5, 0x04, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x02,
-0x06, 0xe7, 0x02, 0xe5, 0xe6, 0x03, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x10, 0x01, 0x01,
-0x01, 0xe5, 0x03, 0x01, 0x01, 0x05, 0x01, 0xe5,
-0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x02, 0x05, 0x03,
-0xe5, 0x07, 0x09, 0x05, 0x05, 0xe5, 0x07, 0xe5,
-0x05, 0x09, 0x05, 0xe5, 0x08, 0xe5, 0x08, 0x01,
-0x02, 0xe8, 0x03, 0x04, 0xe5, 0x01, 0x01, 0x0e,
-0xe5, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0xe5,
-0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0x02,
-0x04, 0x01, 0x03, 0x03, 0x01, 0x02, 0x07, 0x05,
-0xe5, 0x01, 0x01, 0x07, 0x01, 0x01, 0x05, 0x03,
-0x05, 0x04, 0xe6, 0x01, 0x01, 0x01, 0xe7, 0x03,
-0x01, 0x07, 0x09, 0x01, 0x07, 0x09, 0x09, 0x1d,
-0x06, 0x01, 0xe5, 0x02, 0xe5, 0x13, 0xe5, 0x03,
-0x09, 0x09, 0x06, 0xe6, 0x01, 0x07, 0x02, 0x01,
-0x0e, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04,
-0x04, 0x04, 0xe5, 0x01, 0x02, 0x02, 0x04, 0x07,
-0x09, 0x01, 0x07, 0x09, 0x09, 0x09, 0x01, 0x09,
-0x01, 0x07, 0x06, 0xe5, 0xe5, 0xe5, 0x06, 0x09,
-0x09, 0x1d, 0x06, 0x02, 0x19, 0xe5, 0x01, 0x0b,
-0x0b, 0x03, 0x02, 0x0b, 0x01, 0x01, 0x0f, 0x1d,
-0x03, 0x02, 0xe5, 0x01, 0xe5, 0x01, 0x01, 0x02,
-0x03, 0x02, 0xe5, 0x01, 0xe5, 0x0a, 0x02, 0x01,
-0x01, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0x08, 0x04,
-0x09, 0x10, 0x04, 0x09, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x13, 0x04, 0x07, 0x06, 0x01, 0x01,
-0x05, 0x09, 0x06, 0x02, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0x0f, 0x02, 0x0a, 0x01, 0x01, 0x04, 0x0e,
-0x09, 0x09, 0x09, 0x04, 0xe5, 0x03, 0x08, 0x04,
-0xe5, 0x02, 0x05, 0x01, 0x01, 0x04, 0xe5, 0x02,
-0x04, 0xe5, 0x02, 0x05, 0x03, 0x09, 0x0b, 0x05,
-0x03, 0x09, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03,
-0x19, 0x03, 0x05, 0x03, 0x01, 0x02, 0x14, 0x04,
-0x01, 0x01, 0xe5, 0xe5, 0x01, 0x08, 0x02, 0x02,
-0xe6, 0x0b, 0x01, 0x05, 0x0b, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x04, 0x01, 0x02, 0xe7, 0xe5,
-0x08, 0x01, 0xe5, 0x01, 0x01, 0x09, 0x01, 0x04,
-0xe7, 0xe5, 0x04, 0x01, 0x04, 0x01, 0x02, 0x09,
-0x01, 0x09, 0x01, 0x07, 0x09, 0x01, 0x01, 0x01,
-0xe5, 0x01, 0x09, 0x09, 0x06, 0x13, 0x01, 0xe5,
-0x0c, 0x09, 0x09, 0x02, 0x02, 0x01, 0x07, 0x01,
-0x0d, 0xe9, 0x0c, 0x01, 0x11, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x05, 0x06, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x07, 0x04, 0x09, 0x01, 0x01, 0xe7, 0x01,
-0x09, 0x05, 0xe6, 0xe5, 0x02, 0xe5, 0x03, 0x01,
-0x01, 0xe5, 0x04, 0xe5, 0xe5, 0x06, 0x03, 0xe5,
-0xe5, 0xe6, 0xe5, 0x01, 0x01, 0x02, 0x03, 0xe5,
-0xe5, 0xe6, 0x02, 0xe5, 0x03, 0x03, 0xe8, 0x0e,
-0xe5, 0xe5, 0x01, 0x09, 0x04, 0x09, 0x09, 0x01,
-0xe6, 0x0b, 0x0b, 0x02, 0xe5, 0x01, 0x13, 0x02,
-0x2b, 0x02, 0xe6, 0x08, 0x04, 0x13, 0x02, 0x02,
-0x17, 0x09, 0x15, 0x02, 0x06, 0x04, 0x04, 0x09,
-0x09, 0x0c, 0xe5, 0x04, 0x04, 0x0e, 0x09, 0x09,
-0x0c, 0xe5, 0x04, 0x02, 0x02, 0x05, 0x01, 0x02,
-0xe5, 0xe5, 0x11, 0xe5, 0x25, 0x05, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x04, 0x08,
-0xe5, 0x01, 0xe5, 0x17, 0xe5, 0x07, 0xe5, 0x13,
-0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x11, 0xe5, 0x11, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0xe5, 0x0b, 0x06, 0x02, 0x0b, 0x01,
-0xe5, 0x08, 0x01, 0x02, 0x04, 0x01, 0x02, 0x09,
-0x09, 0x09, 0x03, 0x02, 0x02, 0xe6, 0x06, 0xe6,
-0x02, 0x03, 0xe6, 0x01, 0x01, 0x02, 0x09, 0xe5,
-0xe5, 0x05, 0x09, 0x09, 0xe5, 0x07, 0xe5, 0x06,
-0x02, 0x09, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0xe5,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0x09, 0xe5, 0x07,
-0x04, 0x01, 0x02, 0xe6, 0xe5, 0x04, 0xe6, 0x06,
-0xe6, 0x06, 0x04, 0xe6, 0x01, 0x01, 0x03, 0x05,
-0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x09, 0x09, 0x26,
-0x1e, 0x31, 0x1f, 0x7c, 0x04, 0x01, 0x0a, 0x09,
-0x46, 0x05, 0x09, 0x1d, 0x01, 0x07, 0x06, 0x0e,
-0x02, 0x10, 0x09, 0x09, 0x13, 0x48, 0xe6, 0xe5,
-0xe5, 0x13, 0x02, 0x1b, 0x01, 0x0a, 0x01, 0x03,
-0xe5, 0xe8, 0x02, 0x03, 0x01, 0x0d, 0x02, 0xe7,
-0x03, 0x01, 0x04, 0x02, 0x01, 0x04, 0x04, 0xe7,
-0x05, 0xe5, 0xe5, 0x05, 0x01, 0x07, 0x01, 0xe5,
-0xe5, 0xe5, 0x03, 0xe7, 0x03, 0x01, 0xe7, 0x06,
-0xe6, 0xe5, 0x03, 0xe7, 0x02, 0xe5, 0xe5, 0x03,
-0x05, 0xe6, 0x0d, 0x01, 0xe5, 0xe5, 0xe5, 0x04,
-0xe6, 0xe5, 0x04, 0xe6, 0x03, 0x0c, 0x0f, 0xe6,
-0x0f, 0x06, 0x02, 0x17, 0x02, 0x01, 0xe5, 0x08,
-0xe5, 0x04, 0x01, 0xe6, 0x07, 0xe5, 0x03, 0x03,
-0xe5, 0x06, 0xe6, 0x04, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x07, 0xe6, 0x03, 0xe5, 0x01, 0xe5, 0x06,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0xe6, 0x04, 0x02,
-0xe5, 0x03, 0xe5, 0xe7, 0x01, 0x06, 0x04, 0x02,
-0xe6, 0x01, 0x02, 0x01, 0xe5, 0x09, 0x02, 0x0c,
-0x02, 0xe5, 0x08, 0x09, 0x05, 0x03, 0x02, 0x05,
-0xe5, 0x04, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x0c,
-0x0b, 0x22, 0x13, 0x16, 0x01, 0x01, 0x05, 0x01,
-0x03, 0x02, 0xe5, 0xe5, 0x08, 0xe5, 0x01, 0x05,
-0x06, 0x01, 0xe5, 0xe5, 0x05, 0x09, 0x02, 0x03,
-0x03, 0x01, 0x01, 0x0b, 0x05, 0xe5, 0x01, 0x11,
-0x0c, 0x04, 0x03, 0x09, 0x06, 0x03, 0x02, 0x01,
-0x03, 0x09, 0x0a, 0xe5, 0x01, 0x15, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x04,
-0xe5, 0x01, 0x03, 0xe8, 0x04, 0xe7, 0x01, 0x01,
-0x04, 0xe6, 0x05, 0xe8, 0x01, 0x03, 0xe7, 0xe5,
-0x04, 0xe5, 0x02, 0x04, 0xe5, 0x01, 0x03, 0xe7,
-0x07, 0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x07, 0xe5,
-0x02, 0x02, 0xe7, 0x05, 0xe8, 0xe5, 0x04, 0xe5,
-0x07, 0xe7, 0x02, 0x01, 0x03, 0x04, 0x14, 0x1b,
-0x01, 0x07, 0x01, 0xe6, 0x0e, 0x01, 0x09, 0x09,
-0xe5, 0x07, 0xe5, 0x08, 0xe5, 0x06, 0x09, 0xe5,
-0x0a, 0x06, 0x01, 0x09, 0xe5, 0x12, 0x08, 0xe6,
-0x04, 0x01, 0xe5, 0x08, 0x09, 0x09, 0x09, 0x09,
-0xe5, 0x06, 0x19, 0x01, 0xe5, 0x16, 0x1d, 0x01,
-0x07, 0x04, 0x09, 0x04, 0x04, 0x04, 0x04, 0x06,
-0x02, 0x06, 0x13, 0x02, 0xe5, 0x01, 0xe5, 0x01,
-0x01, 0xe5, 0x01, 0x09, 0x01, 0xe5, 0xe5, 0x01,
-0xe5, 0x01, 0xe5, 0x03, 0x03, 0x05, 0x07, 0x01,
-0x06, 0x02, 0xe5, 0x01, 0xe5, 0xe6, 0x08, 0x01,
-0xe5, 0x01, 0x0d, 0x01, 0x07, 0x01, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x02, 0x01, 0x09, 0x0c, 0x01,
-0xe6, 0x0b, 0x0c, 0x27, 0x13, 0x09, 0x0a, 0x08,
-0xe5, 0x11, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0x01,
-0x03, 0x0d, 0xe5, 0x02, 0xe5, 0x02, 0x18, 0x04,
-0xe5, 0x11, 0xe5, 0x03, 0x17, 0xe5, 0x07, 0xe5,
-0x0a, 0x10, 0x01, 0xe6, 0x16, 0x20, 0x24, 0x15,
-0xe5, 0x08, 0x08, 0x03, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0x04, 0x03, 0x01, 0x06, 0x01, 0xe6, 0x07,
-0x16, 0x03, 0x01, 0xe5, 0x02, 0x0c, 0x01, 0xe5,
-0x02, 0x16, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x1c,
-0x01, 0x0d, 0x02, 0x03, 0x13, 0x16, 0x02, 0x04,
-0x01, 0x02, 0x06, 0x02, 0x06, 0xe5, 0xe6, 0x02,
-0x01, 0x02, 0xe5, 0x04, 0x02, 0x06, 0x02, 0xe6,
-0x03, 0x03, 0x1b, 0xe5, 0xe5, 0x0f, 0x09, 0x09,
-0xe5, 0xe5, 0x19, 0x0b, 0xe5, 0x09, 0x0f, 0x02,
-0x03, 0x02, 0x02, 0x04, 0x05, 0x06, 0x01, 0x0c,
-0x02, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x02, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0xe6, 0xe5, 0x02, 0x01,
-0xe6, 0xe5, 0x02, 0x01, 0x03, 0x03, 0x01, 0x04,
-0x02, 0x01, 0x06, 0xe5, 0xe5, 0x02, 0x03, 0x01,
-0x07, 0x01, 0x09, 0x01, 0x01, 0x01, 0x03, 0x01,
-0x02, 0x04, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0x03, 0x03, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x07, 0xe6, 0xe5, 0x04, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x03, 0xe7, 0xe5, 0x01, 0x02, 0x01, 0x0a,
-0xe6, 0xe5, 0x0c, 0x04, 0x17, 0x14, 0x01, 0x06,
-0xe5, 0xe6, 0x05, 0x01, 0x11, 0x01, 0x03, 0x02,
-0xe5, 0xe5, 0xe5, 0x04, 0xe5, 0x10, 0x02, 0x08,
-0x02, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x07, 0x02,
-0x08, 0x01, 0x05, 0x09, 0xe5, 0x01, 0xe5, 0x0d,
-0xe5, 0x02, 0x04, 0xe5, 0x08, 0x08, 0xe5, 0x07,
-0xe5, 0x05, 0xe5, 0x01, 0x05, 0x01, 0xe5, 0x04,
-0x07, 0xe5, 0x01, 0xe5, 0x0a, 0x04, 0x04, 0x06,
-0x02, 0x06, 0x09, 0x02, 0x03, 0x02, 0x02, 0x04,
-0x01, 0x05, 0x01, 0x04, 0x06, 0x02, 0x06, 0x01,
-0x03, 0x03, 0x05, 0x01, 0x08, 0x0b, 0x01, 0x04,
-0x02, 0x01, 0x04, 0x01, 0x03, 0x03, 0x07, 0x1c,
-0x04, 0x06, 0x08, 0x03, 0x12, 0x02, 0x07, 0x09,
-0x10, 0x01, 0xe5, 0xe5, 0x0a, 0x01, 0xe7, 0xe6,
-0x08, 0x23, 0x0a, 0x02, 0x01, 0x08, 0x02, 0x01,
-0x03, 0x01, 0x0c, 0x13, 0xe5, 0xe5, 0x08, 0x0f,
-0x05, 0x0a, 0x02, 0x02, 0xe5, 0x05, 0x0d, 0x05,
-0x02, 0x04, 0x04, 0x0e, 0x09, 0x01, 0x11, 0x09,
-0x17, 0x0c, 0xe5, 0x01, 0x10, 0xe5, 0xe5, 0x05,
-0x09, 0x09, 0x1c, 0x07, 0xe5, 0x06, 0x02, 0x05,
-0x03, 0xe5, 0x05, 0x01, 0x07, 0xe6, 0x09, 0x0b,
-0x06, 0x01, 0xe5, 0x01, 0x02, 0x03, 0x09, 0x06,
-0x06, 0x06, 0x0d, 0x21, 0x1d, 0x07, 0x01, 0xe5,
-0x07, 0xe5, 0x02, 0xe5, 0x01, 0x25, 0x01, 0x01,
-0x07, 0x2b, 0x06, 0x02, 0x0b, 0x04, 0x09, 0x09,
-0x0c, 0xe5, 0xe6, 0x0e, 0x09, 0x04, 0x04, 0x0a,
-0x27, 0xe5, 0x0e, 0x0b, 0x07, 0x01, 0x01, 0x01,
-0x0d, 0xe6, 0x01, 0x13, 0x1f, 0x0c, 0xe5, 0x02,
-0x03, 0x03, 0x0a, 0x0a, 0x0d, 0x01, 0x07, 0x03,
-0x01, 0x09, 0x09, 0xe5, 0x01, 0x03, 0x0e, 0x04,
-0x09, 0x0e, 0x04, 0x0d, 0x05, 0x03, 0x09, 0x04,
-0xe5, 0x1a, 0x0a, 0xe5, 0x0c, 0x01, 0xe5, 0xe5,
-0xe5, 0x0a, 0x01, 0x03, 0xe5, 0x06, 0x09, 0x01,
-0x07, 0x09, 0x04, 0x2c, 0x04, 0x04, 0x07, 0x09,
-0x09, 0x03, 0x04, 0x0c, 0x03, 0x01, 0xe5, 0x02,
-0x05, 0x02, 0x0b, 0x04, 0x01, 0x04, 0x01, 0x03,
-0x03, 0x01, 0xe5, 0xe5, 0x05, 0x0a, 0x01, 0x02,
-0x09, 0x07, 0x10, 0x02, 0x0c, 0x02, 0x01, 0x06,
-0x01, 0xe5, 0x28, 0x0d, 0x01, 0x02, 0x11, 0x0a,
-0x02, 0x0e, 0x02, 0x12, 0xe5, 0x0b, 0x11, 0x03,
-0x02, 0x05, 0x07, 0x07, 0x07, 0x13, 0xe5, 0x09,
-0x1e, 0x0f, 0x0c, 0x01, 0x03, 0x22, 0x0f, 0x05,
-0x05, 0xe6, 0x07, 0xe5, 0x01, 0xe5, 0x0d, 0xe5,
-0x0d, 0x03, 0xe7, 0x01, 0x0a, 0x02, 0xe6, 0xe5,
-0x03, 0xe7, 0x05, 0xe7, 0x03, 0x03, 0x09, 0xe5,
-0x08, 0xe6, 0x06, 0xe5, 0x06, 0x06, 0xe5, 0x16,
-0x26, 0xe5, 0xe5, 0x15, 0xe7, 0xe5, 0xe5, 0x01,
-0x1d, 0x16, 0x07, 0x03, 0x02, 0xe6, 0x01, 0xe5,
-0x0d, 0x02, 0xe6, 0x0f, 0x14, 0x07, 0x08, 0x01,
-0x13, 0x0c, 0x01, 0x04, 0x02, 0x03, 0x21, 0x29,
-0x03, 0x13, 0x03, 0x01, 0x01, 0x06, 0x02, 0x01,
-0x09, 0x0d, 0x08, 0xe5, 0x05, 0x02, 0x02, 0x01,
-0xe5, 0x0c, 0x06, 0xe5, 0x03, 0xe5, 0xe5, 0x03,
-0x0e, 0x04, 0x01, 0x06, 0x02, 0x0a, 0x01, 0x08,
-0x02, 0x04, 0x12, 0xe5, 0x03, 0x03, 0x02, 0x06,
-0x02, 0x02, 0xe5, 0x01, 0x05, 0x09, 0x11, 0x01,
-0x1c, 0x01, 0xe5, 0xe5, 0x05, 0x09, 0xe6, 0xea,
-0x0d, 0x09, 0x27, 0x0b, 0x04, 0x0c, 0x0c, 0x03,
-0x02, 0x0b, 0x09, 0xe5, 0x01, 0x03, 0xe5, 0xe5,
-0x07, 0x01, 0x1b, 0x01, 0x0f, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x15, 0x18, 0x07, 0x10, 0x02, 0x03,
-0x05, 0x04, 0x04, 0x0a, 0x0d, 0x13, 0x02, 0x01,
-0x0b, 0x01, 0x0f, 0x01, 0x02, 0x06, 0x08, 0x1b,
-0x09, 0x03, 0x15, 0x07, 0x10, 0x08, 0xe5, 0x07,
-0xe5, 0x07, 0x0f, 0xe5, 0x24, 0x0c, 0x02, 0xe7,
-0x1b, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0xe5, 0x01,
-0xe6, 0x06, 0x0a, 0x08, 0xe5, 0x04, 0x02, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0xe6, 0x05, 0x08, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0x01, 0x01, 0x04, 0xe5,
-0xe6, 0x03, 0x02, 0x05, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x06, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0xe6,
-0x09, 0x01, 0xe5, 0x02, 0x13, 0x07, 0x01, 0x04,
-0x01, 0xe5, 0x01, 0xe5, 0x04, 0x0c, 0xe5, 0xe6,
-0x01, 0x0e, 0xe5, 0xe6, 0xe5, 0x01, 0x01, 0x0a,
-0x0e, 0xe5, 0x0a, 0x09, 0xe5, 0x07, 0xe5, 0x01,
-0x08, 0x06, 0x03, 0xe5, 0x03, 0xe5, 0xe5, 0x02,
-0xe5, 0xe6, 0x01, 0x01, 0xe5, 0x01, 0x03, 0x08,
-0x03, 0x01, 0xe6, 0x02, 0xe6, 0x0c, 0xe5, 0x01,
-0x06, 0x09, 0x02, 0x01, 0x07, 0x03, 0xe5, 0x03,
-0x06, 0x06, 0xe5, 0x0a, 0xe5, 0x11, 0x06, 0x01,
-0x02, 0x09, 0x0a, 0x03, 0xe5, 0x02, 0x09, 0x01,
-0x02, 0x02, 0xe5, 0x03, 0x0d, 0x12, 0x05, 0x03,
-0x07, 0x02, 0x01, 0x01, 0x07, 0xe5, 0xe5, 0xe5,
-0x06, 0x0b, 0x09, 0x0e, 0x01, 0xe5, 0xe5, 0x08,
-0x01, 0x05, 0x01, 0x01, 0xe5, 0x0f, 0x03, 0x05,
-0x06, 0x01, 0x02, 0x0e, 0x01, 0xe5, 0x0f, 0xe5,
-0xe5, 0x12, 0x09, 0x03, 0x05, 0x10, 0x01, 0xe5,
-0x0a, 0x08, 0x02, 0x06, 0xe5, 0x1f, 0x09, 0x06,
-0xe5, 0x01, 0x05, 0x02, 0x01, 0x07, 0x09, 0x09,
-0x09, 0x09, 0x01, 0x07, 0x06, 0xe5, 0xe5, 0xe5,
-0x07, 0xe5, 0x08, 0x09, 0x06, 0x04, 0x0e, 0x02,
-0x01, 0x0e, 0xe5, 0xe5, 0x12, 0x0b, 0x09, 0x13,
-0x0b, 0x02, 0x01, 0x01, 0x13, 0x02, 0x14, 0x0b,
-0x06, 0x02, 0xe5, 0xe5, 0x01, 0x0b, 0x0b, 0x09,
-0x0c, 0x03, 0x0c, 0x06, 0x05, 0x0b, 0xe5, 0x01,
-0xe5, 0x08, 0x01, 0x05, 0x03, 0x02, 0x04, 0x01,
-0x05, 0x01, 0x04, 0x0e, 0x04, 0x03, 0x0a, 0x01,
-0x07, 0x05, 0x02, 0xe5, 0x05, 0x01, 0x0a, 0x04,
-0x01, 0x01, 0x07, 0x03, 0x02, 0x0e, 0x19, 0x03,
-0x05, 0x03, 0x02, 0xe7, 0x07, 0x04, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x04, 0x04, 0x02, 0xe6,
-0x03, 0x05, 0x03, 0x03, 0x05, 0x0b, 0x02, 0x01,
-0xe5, 0x02, 0x05, 0x01, 0x01, 0x09, 0x01, 0x02,
-0xe5, 0xe5, 0xe5, 0x04, 0x04, 0x01, 0x01, 0x0a,
-0x04, 0x02, 0xe5, 0x09, 0x01, 0x01, 0x07, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x0a, 0x01,
-0x01, 0x01, 0x02, 0x04, 0x04, 0xe7, 0x24, 0x04,
-0x0b, 0x04, 0x01, 0xe5, 0xe5, 0x04, 0x01, 0x01,
-0x02, 0x04, 0x0b, 0x09, 0x05, 0x01, 0x09, 0x01,
-0x09, 0x07, 0x01, 0x01, 0x07, 0x09, 0x04, 0x04,
-0x01, 0x02, 0x06, 0x01, 0x05, 0x01, 0x02, 0x04,
-0x13, 0x04, 0x02, 0x0b, 0x01, 0x07, 0x09, 0x10,
-0x01, 0x04, 0x0b, 0xe5, 0x01, 0xe5, 0xe6, 0x27,
-0x09, 0x05, 0xe5, 0x01, 0x01, 0x01, 0xe5, 0x03,
-0x01, 0x07, 0x05, 0xe5, 0x01, 0x09, 0x09, 0x03,
-0xe5, 0x03, 0x01, 0x07, 0x09, 0x01, 0x02, 0xe6,
-0x02, 0xe5, 0x02, 0xe5, 0x03, 0x09, 0x01, 0x0c,
-0x01, 0x01, 0xe5, 0xe5, 0x06, 0x13, 0x13, 0x01,
-0x09, 0x09, 0x0e, 0x01, 0xe5, 0xe5, 0x0d, 0xe5,
-0x01, 0x74, 0x1d, 0x0b, 0x02, 0xe5, 0x07, 0x02,
-0x06, 0x02, 0x03, 0x02, 0xe5, 0x11, 0x02, 0x10,
-0x02, 0x44, 0x02, 0x14, 0x09, 0x23, 0xe5, 0x2f,
-0xe5, 0x01, 0xe5, 0x17, 0xe5, 0x09, 0xe5, 0x01,
-0xe5, 0x07, 0xe5, 0x07, 0x05, 0xe5, 0x15, 0xe5,
-0x11, 0x45, 0xe9, 0x0d, 0x05, 0xe5, 0x01, 0x05,
-0x03, 0x09, 0x02, 0x06, 0x06, 0x02, 0xe5, 0x04,
-0x02, 0x09, 0x09, 0x09, 0x02, 0x03, 0x02, 0xe5,
-0x07, 0x06, 0x02, 0x09, 0xe6, 0x05, 0x02, 0xe5,
-0x07, 0x09, 0x05, 0x03, 0xe6, 0x06, 0x09, 0x09,
-0x06, 0x02, 0x03, 0x05, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x02, 0x0d, 0xe9, 0x01, 0x12, 0xe5, 0x23,
-0x09, 0x02, 0x26, 0xe5, 0x11, 0x48, 0x12, 0xe5,
-0x1c, 0x1c, 0xe5, 0x0d, 0x04, 0x01, 0x15, 0x30,
-0x28, 0x05, 0x24, 0x04, 0x2b, 0x13, 0x1d, 0x1d,
-0x12, 0xe5, 0xe6, 0x0c, 0x01, 0x06, 0xe5, 0xe5,
-0x17, 0x09, 0x01, 0x02, 0xe7, 0x05, 0x04, 0x02,
-0x01, 0x09, 0x07, 0x01, 0x09, 0xe7, 0x0f, 0x04,
-0x04, 0xe7, 0x07, 0xe7, 0x03, 0x01, 0x07, 0x01,
-0x0a, 0x01, 0x04, 0x01, 0x04, 0x04, 0x09, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x1a, 0x02,
-0x0e, 0x01, 0xe6, 0xe5, 0x0c, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x0c, 0x19, 0xe5, 0xe5, 0x02, 0x02,
-0x06, 0x01, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5,
-0x04, 0xe5, 0xe7, 0x01, 0x0c, 0x02, 0x08, 0xe6,
-0x01, 0x01, 0x02, 0x01, 0xe6, 0x01, 0x02, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0xe5, 0x04, 0x03, 0xe5,
-0x04, 0x01, 0xe5, 0x05, 0x03, 0x04, 0x02, 0xe5,
-0x05, 0x01, 0x01, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x07, 0xe5, 0x08, 0x12, 0x01, 0x0c, 0x02,
-0xe6, 0x0a, 0xe5, 0xe5, 0x06, 0x01, 0x27, 0x01,
-0x01, 0x05, 0x07, 0x01, 0x09, 0x04, 0x02, 0x01,
-0x03, 0xe5, 0x12, 0x04, 0x09, 0xe5, 0x06, 0x06,
-0x0d, 0x01, 0x04, 0x0c, 0x01, 0x09, 0x04, 0x04,
-0x09, 0x07, 0x01, 0x07, 0x01, 0x07, 0x10, 0x09,
-0x02, 0x10, 0xe9, 0x07, 0x03, 0x01, 0x05, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0x06, 0xe6, 0xe5, 0x04, 0xe5,
-0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe6, 0x01, 0x04,
-0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x01, 0x04, 0xe5,
-0x02, 0x02, 0x03, 0xe5, 0x08, 0xe6, 0xe5, 0x03,
-0xe6, 0x07, 0xe6, 0xe5, 0x04, 0xe6, 0x04, 0xe5,
-0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x02, 0xe6, 0xe5,
-0xe5, 0x04, 0xe6, 0xe5, 0x02, 0x01, 0xe5, 0x01,
-0x03, 0xe7, 0x05, 0xe5, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0x02, 0x04, 0x04, 0x05, 0x07,
-0x01, 0x0a, 0x09, 0x09, 0x08, 0x09, 0x0a, 0xe5,
-0x06, 0x14, 0x09, 0x08, 0xe5, 0x07, 0xe6, 0x01,
-0x07, 0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x02,
-0x02, 0x01, 0xe6, 0x0e, 0x01, 0x09, 0x14, 0x08,
-0xe5, 0x05, 0x05, 0xe5, 0xe6, 0xe5, 0x02, 0xe5,
-0x04, 0xe5, 0x06, 0x10, 0x01, 0x0f, 0x07, 0x01,
-0x0a, 0x1f, 0x04, 0x15, 0x14, 0x01, 0x0e, 0x02,
-0x08, 0x02, 0x03, 0x07, 0x03, 0xe5, 0xe5, 0x06,
-0x01, 0x06, 0xe5, 0x03, 0x0e, 0x04, 0x01, 0x01,
-0x02, 0x0c, 0x01, 0xe6, 0x02, 0x08, 0x03, 0x01,
-0x03, 0x05, 0xe6, 0xe5, 0x05, 0x0a, 0x03, 0x0d,
-0xe7, 0x0c, 0x01, 0x07, 0x16, 0x09, 0x08, 0x09,
-0x13, 0x1e, 0x08, 0x09, 0x08, 0x03, 0x03, 0x05,
-0x09, 0x05, 0x02, 0x13, 0x03, 0x01, 0xe5, 0x01,
-0x0d, 0x01, 0x0d, 0xe5, 0x05, 0x07, 0x01, 0x01,
-0x05, 0xe5, 0x0b, 0x0e, 0x02, 0xe5, 0x0c, 0x01,
-0x07, 0x01, 0x0a, 0x09, 0x09, 0x10, 0x0c, 0x08,
-0x0a, 0x13, 0x06, 0x02, 0x08, 0x04, 0x0b, 0x05,
-0x09, 0x03, 0x0f, 0x0d, 0x04, 0xe5, 0x05, 0x06,
-0x05, 0x08, 0xe5, 0x01, 0x05, 0x04, 0x02, 0x01,
-0x04, 0x05, 0x06, 0x12, 0x01, 0xe5, 0xe5, 0x09,
-0xe5, 0xe5, 0x19, 0x01, 0xe6, 0x0c, 0x13, 0x01,
-0x01, 0xe6, 0x12, 0x05, 0x02, 0x26, 0x02, 0xe5,
-0x04, 0x13, 0x15, 0xe5, 0x0f, 0xe5, 0xe5, 0x0d,
-0x01, 0x02, 0x0a, 0x09, 0x0c, 0x05, 0x0e, 0x02,
-0x0d, 0x03, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x01, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe6,
-0x04, 0x01, 0x02, 0x04, 0x01, 0xe5, 0x02, 0x02,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x03, 0x02,
-0xe5, 0xe5, 0x06, 0x01, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0x07, 0x01, 0x01, 0x04, 0x02, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0xe5, 0x05, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x02, 0x02, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0x05, 0x01, 0x01, 0x02, 0xe5,
-0x2c, 0xe5, 0x07, 0x03, 0x06, 0x12, 0x02, 0x10,
-0xe5, 0x05, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x01,
-0x08, 0x0b, 0x03, 0x02, 0xe5, 0x07, 0xe5, 0x02,
-0x01, 0x02, 0xe5, 0x01, 0x04, 0x04, 0x0a, 0x08,
-0x02, 0x09, 0x04, 0x0f, 0x02, 0x03, 0x0a, 0x15,
-0x11, 0x01, 0xe6, 0x09, 0x09, 0x13, 0x01, 0x01,
-0x05, 0x03, 0x06, 0x01, 0x02, 0x0d, 0x03, 0x01,
-0x03, 0x07, 0x04, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x08, 0x06, 0xe5, 0xe5, 0x02,
-0x04, 0xe5, 0x01, 0xe5, 0xe5, 0xe5, 0xe5, 0x02,
-0x02, 0x04, 0x04, 0x03, 0x06, 0x02, 0x1b, 0x01,
-0x09, 0x02, 0x03, 0x2a, 0x08, 0x02, 0x01, 0x01,
-0x0a, 0x09, 0x19, 0x1e, 0x11, 0x0e, 0x06, 0x01,
-0x0f, 0x09, 0x09, 0x12, 0x03, 0x0a, 0x02, 0x0f,
-0x17, 0x0e, 0x17, 0x05, 0x16, 0x01, 0xe6, 0x0c,
-0x19, 0x1a, 0x0f, 0xe7, 0x0b, 0x01, 0x02, 0x01,
-0xe5, 0x05, 0xe5, 0x16, 0x01, 0x01, 0x05, 0x06,
-0x01, 0x02, 0x0e, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x03, 0x03, 0x09, 0x0d, 0x03, 0x03, 0x01, 0x07,
-0x01, 0x0a, 0x08, 0x05, 0x0b, 0xe5, 0x0e, 0x01,
-0x01, 0x0f, 0x2e, 0x09, 0x0b, 0x05, 0x0b, 0x01,
-0x01, 0x03, 0x09, 0x06, 0x03, 0x14, 0x01, 0x07,
-0x0f, 0x03, 0x01, 0x03, 0x04, 0x03, 0x26, 0xe5,
-0x04, 0x03, 0x11, 0x11, 0x10, 0x01, 0x03, 0x09,
-0x18, 0xe5, 0x02, 0x16, 0x07, 0x05, 0x0c, 0x01,
-0x07, 0x04, 0xe5, 0xe6, 0x06, 0x04, 0x0d, 0x11,
-0x03, 0x01, 0x0f, 0x09, 0x01, 0x09, 0x03, 0x0f,
-0x07, 0x05, 0x05, 0x07, 0x01, 0x20, 0x12, 0x06,
-0x01, 0x0f, 0xe5, 0x10, 0x09, 0x01, 0x09, 0x01,
-0x02, 0x04, 0x0e, 0x13, 0x01, 0x07, 0x05, 0x08,
-0x04, 0xe5, 0x02, 0x03, 0x03, 0x05, 0x02, 0xe5,
-0x02, 0x04, 0x02, 0x02, 0x07, 0x05, 0x04, 0x04,
-0x0c, 0x06, 0x02, 0x0e, 0x01, 0x02, 0x06, 0x38,
-0x01, 0xe6, 0x05, 0x22, 0x17, 0x02, 0x09, 0x04,
-0x03, 0xe5, 0x11, 0xe5, 0x03, 0x03, 0xe5, 0xe5,
-0x08, 0x04, 0x01, 0x02, 0x0c, 0x03, 0x01, 0xe5,
-0x03, 0x03, 0x02, 0x1f, 0x04, 0x01, 0x02, 0x0f,
-0x09, 0x20, 0xe5, 0x0e, 0x08, 0x03, 0x02, 0x02,
-0x0d, 0x1a, 0xe5, 0x08, 0x0c, 0x02, 0x0b, 0x06,
-0x0a, 0x01, 0x06, 0x02, 0xe7, 0x02, 0x0d, 0xe6,
-0xe6, 0x02, 0x01, 0x06, 0xe6, 0x09, 0xe6, 0x10,
-0x01, 0x07, 0xe8, 0x06, 0x01, 0x11, 0x0c, 0x06,
-0x08, 0x01, 0x07, 0xe6, 0x21, 0xe5, 0xe6, 0x05,
-0x1f, 0x04, 0x01, 0x08, 0x06, 0x05, 0x03, 0xe5,
-0x03, 0x01, 0xe5, 0x09, 0xe5, 0x03, 0x09, 0x06,
-0x10, 0xe5, 0x01, 0x0a, 0x01, 0x04, 0x07, 0x03,
-0x02, 0x11, 0x04, 0x05, 0x04, 0x03, 0x13, 0x13,
-0x13, 0x18, 0x0a, 0xe5, 0xe6, 0x08, 0x05, 0x11,
-0x01, 0x03, 0x09, 0x08, 0xe5, 0x05, 0x0f, 0x06,
-0x01, 0x06, 0xe5, 0x01, 0x02, 0x03, 0x03, 0x01,
-0x06, 0x1d, 0x0c, 0x01, 0x03, 0x01, 0x01, 0x01,
-0x02, 0xe6, 0x03, 0x06, 0x02, 0x09, 0x09, 0x03,
-0x09, 0x05, 0x01, 0x02, 0x04, 0x04, 0x1c, 0x14,
-0xe9, 0x08, 0x03, 0xe5, 0x02, 0x0f, 0xe5, 0x1f,
-0x07, 0xe5, 0x17, 0xe6, 0x01, 0x04, 0x01, 0x07,
-0x01, 0x18, 0x09, 0xe5, 0x04, 0x09, 0x09, 0x01,
-0xe5, 0x05, 0xe5, 0x07, 0x01, 0x07, 0x13, 0x01,
-0x04, 0x02, 0x04, 0x2f, 0xe5, 0xe5, 0x01, 0x01,
-0x06, 0x05, 0x13, 0x0d, 0x1d, 0x1e, 0x12, 0x26,
-0x09, 0x0a, 0x09, 0x06, 0x01, 0x01, 0x04, 0x03,
-0x13, 0xe5, 0x07, 0x0c, 0x1b, 0x0a, 0x01, 0xe5,
-0x01, 0xe6, 0x17, 0xe5, 0x04, 0x03, 0x08, 0xe5,
-0xe6, 0x04, 0xe5, 0x0e, 0x02, 0xe5, 0x04, 0x03,
-0x05, 0x06, 0xe5, 0x04, 0xe5, 0x03, 0x03, 0x09,
-0x09, 0x02, 0x01, 0x04, 0x06, 0x04, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x01, 0x03, 0xe5, 0x07, 0xe5,
-0x05, 0x01, 0xe5, 0xe6, 0xe5, 0x02, 0x02, 0xe5,
-0x04, 0x07, 0x01, 0xe5, 0xe6, 0x04, 0x0a, 0x0b,
-0x01, 0x04, 0x05, 0x06, 0x01, 0x0f, 0x02, 0xe7,
-0x01, 0x01, 0x16, 0x01, 0xe5, 0x01, 0x0c, 0x02,
-0xe5, 0x06, 0x04, 0xe5, 0x04, 0xe5, 0xe5, 0x08,
-0x03, 0x05, 0x06, 0x01, 0xe5, 0x08, 0x02, 0x06,
-0x03, 0x09, 0x02, 0x01, 0xe6, 0x01, 0x01, 0xe5,
-0x0a, 0x01, 0x04, 0x02, 0x01, 0xe5, 0x02, 0xe5,
-0xe6, 0x04, 0x0b, 0xe5, 0x01, 0x02, 0x09, 0x09,
-0x03, 0x01, 0x03, 0x17, 0xe5, 0x0a, 0x05, 0xe5,
-0x0d, 0x01, 0x03, 0xe7, 0x03, 0x1c, 0x03, 0x0c,
-0xe5, 0xe5, 0xe5, 0xe5, 0x0e, 0x03, 0x01, 0xe5,
-0x0b, 0x0d, 0x05, 0x06, 0xe5, 0x02, 0x13, 0x09,
-0x03, 0x0f, 0x06, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x02, 0x05, 0x06, 0x01, 0xe5, 0x0f, 0xe5, 0xe5,
-0x05, 0xe5, 0x02, 0x15, 0x05, 0x10, 0xe5, 0x02,
-0x06, 0xe6, 0x01, 0x1e, 0x10, 0x02, 0x01, 0x04,
-0x0c, 0x13, 0x09, 0x09, 0x06, 0xe5, 0xe5, 0xe5,
-0x10, 0x05, 0xe5, 0x03, 0x13, 0x06, 0x02, 0x06,
-0x02, 0x09, 0x06, 0x02, 0x10, 0x02, 0x06, 0x04,
-0x1b, 0x0f, 0xe5, 0x05, 0x04, 0x01, 0x23, 0x02,
-0x0c, 0x09, 0x03, 0x02, 0xe5, 0x01, 0xe5, 0x08,
-0x09, 0x0b, 0x04, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x05, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x06, 0x02,
-0x03, 0x01, 0xe5, 0xe5, 0x01, 0x04, 0x01, 0x02,
-0x04, 0x04, 0x02, 0x06, 0x02, 0x06, 0xe5, 0x01,
-0xe5, 0x03, 0x02, 0x06, 0x01, 0x01, 0x05, 0x02,
-0x06, 0xe5, 0xe6, 0x01, 0x02, 0xe5, 0x01, 0x05,
-0x09, 0x04, 0x19, 0x01, 0xe7, 0x01, 0x1e, 0x04,
-0x03, 0x0e, 0x05, 0x04, 0x03, 0xe5, 0x02, 0x05,
-0x09, 0x03, 0x05, 0x01, 0x07, 0x04, 0x04, 0x04,
-0x04, 0x01, 0x01, 0x05, 0x03, 0x03, 0xe5, 0x01,
-0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x02, 0x01, 0xe5, 0x02, 0x05,
-0x03, 0x01, 0x02, 0x0a, 0x03, 0x09, 0x01, 0x02,
-0x14, 0x03, 0x13, 0x02, 0x01, 0x01, 0xe5, 0x21,
-0x02, 0x02, 0x0b, 0x01, 0x02, 0x04, 0x01, 0x04,
-0xe5, 0xe5, 0x08, 0x01, 0x07, 0x0b, 0x09, 0x09,
-0x07, 0x01, 0x03, 0xe5, 0x03, 0x02, 0x02, 0x03,
-0x09, 0x01, 0x07, 0x03, 0x01, 0xe5, 0x05, 0x09,
-0x05, 0x06, 0x06, 0x0b, 0xe5, 0x05, 0x07, 0x01,
-0x09, 0x02, 0x01, 0x04, 0x02, 0x01, 0xe5, 0x05,
-0x01, 0x10, 0x01, 0x01, 0xe5, 0x20, 0x04, 0x0e,
-0x01, 0x07, 0x01, 0x02, 0xe7, 0xe5, 0x08, 0x01,
-0x02, 0x04, 0x09, 0x01, 0x02, 0x04, 0x04, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x01, 0xe5, 0xe5, 0xe6,
-0x02, 0xe5, 0x05, 0x04, 0x04, 0x01, 0x01, 0xe5,
-0x03, 0x04, 0x01, 0x01, 0xe5, 0x03, 0x04, 0x04,
-0x04, 0x03, 0xe5, 0xe6, 0xe5, 0x03, 0x08, 0xe5,
-0xe5, 0x01, 0x04, 0x09, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x04, 0x05, 0xe5, 0x13, 0xe5, 0xe5, 0x44,
-0x13, 0x27, 0x06, 0x09, 0x15, 0x09, 0x09, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x04, 0x04, 0x09,
-0x04, 0x04, 0x09, 0x02, 0xe5, 0x04, 0x04, 0x04,
-0x20, 0x01, 0x02, 0x46, 0xe6, 0x0d, 0x04, 0x0e,
-0x16, 0x01, 0x03, 0xe5, 0x07, 0xe5, 0x13, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x20, 0xe8,
-0x0d, 0x09, 0x09, 0x09, 0x09, 0x06, 0x02, 0x09,
-0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x09, 0x03, 0x05, 0xe5, 0x07, 0xe5, 0x02, 0x01,
-0x04, 0x09, 0xe5, 0xe5, 0x05, 0xe6, 0x01, 0x01,
-0x02, 0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x02, 0x01,
-0x02, 0xe6, 0xe5, 0x04, 0xe5, 0x02, 0x01, 0x02,
-0xe6, 0xe5, 0x01, 0x02, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x06, 0x09, 0x04, 0x01, 0x06, 0x03, 0xe5,
-0x01, 0x1d, 0x1a, 0x13, 0x09, 0x02, 0x06, 0x02,
-0x06, 0x2a, 0x51, 0x06, 0x02, 0x31, 0x04, 0x06,
-0x1e, 0x3a, 0x09, 0x25, 0x09, 0x03, 0x02, 0x0e,
-0x27, 0x13, 0x01, 0x0a, 0x32, 0x0c, 0x0f, 0x13,
-0x02, 0x0e, 0x01, 0x07, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x07, 0x01, 0x02, 0x06, 0x04, 0x04, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x04, 0x01, 0xe7, 0x03,
-0x01, 0xe7, 0xe5, 0x03, 0x01, 0x02, 0x06, 0xe7,
-0xe5, 0x03, 0xe7, 0xe5, 0xe6, 0xe8, 0xe5, 0x01,
-0x01, 0xe7, 0x05, 0xe7, 0x03, 0x01, 0xe7, 0x03,
-0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0xe7, 0xe5,
-0x04, 0x01, 0x07, 0xe6, 0x06, 0xe6, 0xe5, 0x1e,
-0xe6, 0x0e, 0xe5, 0x0f, 0x01, 0x01, 0x0f, 0x01,
-0xe5, 0x05, 0x01, 0x01, 0x05, 0x01, 0xe5, 0x02,
-0x02, 0x01, 0x01, 0x01, 0x03, 0x02, 0x08, 0x01,
-0x01, 0xe5, 0x03, 0x01, 0x07, 0x01, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x08, 0x01, 0x07, 0xe6,
-0x06, 0xe6, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x06, 0xe6, 0x04, 0x02, 0xe5, 0x04, 0x01, 0xe6,
-0x04, 0x02, 0xe5, 0x03, 0x03, 0xe5, 0x08, 0x09,
-0x20, 0xe5, 0x01, 0xe5, 0x0d, 0x0d, 0xe5, 0x03,
-0x03, 0x0d, 0x01, 0x04, 0x04, 0x07, 0x01, 0x03,
-0x05, 0x04, 0x04, 0x04, 0x04, 0x09, 0x03, 0x05,
-0x03, 0x03, 0x01, 0x01, 0x05, 0x01, 0xe5, 0x06,
-0xe5, 0xe5, 0x08, 0xe5, 0x07, 0x09, 0x09, 0xe5,
-0x07, 0x01, 0x02, 0x04, 0x03, 0x03, 0x01, 0x09,
-0x03, 0x10, 0x0a, 0x0c, 0x15, 0x01, 0x0f, 0x05,
-0xe5, 0x05, 0x01, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe6, 0xe5, 0x04, 0xe6, 0x04, 0xe6, 0xe5, 0xe5,
-0x04, 0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x01, 0x05,
-0x03, 0x05, 0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x02,
-0xe8, 0xe5, 0x02, 0xe7, 0x03, 0x05, 0xe5, 0x01,
-0x03, 0xe7, 0x01, 0xe5, 0x02, 0xe6, 0x02, 0x04,
-0xe5, 0x07, 0xe5, 0x01, 0x03, 0xe7, 0x02, 0x03,
-0xe7, 0xe5, 0x02, 0xe7, 0x02, 0x04, 0xe5, 0x07,
-0xe5, 0x05, 0xe7, 0x05, 0xe7, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0x02, 0x0f, 0x28, 0x0e, 0x04, 0x06,
-0x0b, 0xe5, 0x07, 0x09, 0x07, 0x01, 0x0a, 0x14,
-0x09, 0x09, 0xe6, 0x07, 0x09, 0x08, 0x0a, 0x03,
-0x01, 0x03, 0xe5, 0x07, 0x06, 0x01, 0xe5, 0x08,
-0x09, 0x09, 0xe5, 0x18, 0xe5, 0x0e, 0x0f, 0x01,
-0x04, 0x11, 0x0b, 0xe5, 0x01, 0x0c, 0x02, 0x04,
-0x09, 0x04, 0x03, 0xe5, 0x03, 0x04, 0x01, 0x02,
-0x07, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x07,
-0x03, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x03,
-0x03, 0x01, 0x09, 0x06, 0x02, 0xe5, 0x01, 0x05,
-0x09, 0xe5, 0x01, 0x05, 0x04, 0x02, 0x01, 0x09,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x1c, 0x01,
-0xe6, 0x0d, 0x0d, 0x23, 0x04, 0xe5, 0x03, 0x12,
-0xe5, 0x07, 0x09, 0x18, 0xe5, 0x07, 0xe5, 0x01,
-0x02, 0x09, 0x04, 0xe5, 0x02, 0x04, 0x0f, 0x08,
-0x04, 0xe5, 0x03, 0x0d, 0xe5, 0x03, 0x08, 0x0a,
-0x03, 0xe5, 0x07, 0xe5, 0x1c, 0x02, 0x03, 0x0b,
-0x0d, 0x03, 0x16, 0x06, 0x05, 0x06, 0x10, 0x02,
-0x06, 0x06, 0x02, 0x19, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x08, 0x01, 0x02, 0x03, 0x01, 0xe5, 0x01,
-0x06, 0x16, 0x03, 0x01, 0xe5, 0x0f, 0x01, 0xe5,
-0x19, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x02, 0x09,
-0x11, 0x02, 0x39, 0x0c, 0x04, 0x04, 0x01, 0xe5,
-0x05, 0x02, 0x01, 0x04, 0xe5, 0xe5, 0x05, 0x02,
-0x06, 0xe5, 0xe5, 0x03, 0x19, 0xe5, 0x0f, 0x02,
-0x06, 0x09, 0x01, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0x01, 0xe7, 0x0d, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x19, 0x02, 0x17, 0xe5, 0x01, 0x10, 0xe5, 0xe5,
-0x06, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0xe6, 0x06, 0x01, 0xe6, 0xe5, 0x02, 0x01, 0xe6,
-0x01, 0x02, 0x01, 0xe5, 0xe5, 0x02, 0xe5, 0xe5,
-0x06, 0x01, 0x04, 0x02, 0x01, 0x01, 0x05, 0x01,
-0x07, 0xe7, 0x04, 0xe5, 0xe6, 0xe5, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x04, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x01, 0xe5, 0x03, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x01, 0x05, 0x01, 0x0a, 0xe5, 0xe6, 0x09, 0x0e,
-0xe5, 0xe5, 0x07, 0x0a, 0x09, 0x08, 0x07, 0x0a,
-0x02, 0x03, 0xe7, 0x06, 0x08, 0x03, 0xe5, 0x01,
-0x02, 0x02, 0x01, 0xe5, 0x03, 0x01, 0x04, 0x02,
-0x01, 0x06, 0x0c, 0x04, 0x02, 0xe6, 0x08, 0xe5,
-0x01, 0x06, 0x0b, 0x06, 0xe5, 0x03, 0x03, 0x09,
-0xe5, 0x12, 0x14, 0x16, 0x03, 0xe5, 0x14, 0xe5,
-0xe5, 0x05, 0x03, 0x05, 0x08, 0x08, 0x01, 0x0c,
-0x01, 0x04, 0x01, 0x09, 0x02, 0x03, 0x0a, 0x09,
-0x05, 0x06, 0x01, 0x07, 0x01, 0x01, 0x0a, 0xe5,
-0x04, 0x01, 0x01, 0x05, 0xe5, 0x06, 0x08, 0x03,
-0x04, 0x05, 0x03, 0x01, 0x0a, 0x02, 0x0a, 0x09,
-0x04, 0x04, 0x09, 0x14, 0x08, 0xe7, 0xe5, 0x1a,
-0x04, 0x09, 0x05, 0x03, 0x06, 0x06, 0x05, 0x06,
-0x0c, 0x02, 0x02, 0x09, 0x08, 0xe5, 0x07, 0x0a,
-0x0a, 0x0e, 0x06, 0x0e, 0x07, 0x06, 0x0f, 0x11,
-0x01, 0x10, 0x31, 0x01, 0x21, 0x01, 0x0a, 0x0c,
-0x03, 0x01, 0x01, 0x02, 0x02, 0x09, 0xe6, 0x03,
-0x05, 0x03, 0xe5, 0xe7, 0x03, 0x02, 0xe6, 0x06,
-0xe6, 0x06, 0x0b, 0x04, 0xe5, 0xe7, 0xe5, 0x02,
-0xe5, 0x09, 0x0b, 0x06, 0x02, 0x13, 0x09, 0xe5,
-0x09, 0x07, 0x01, 0x04, 0x1a, 0x13, 0x01, 0xe6,
-0x01, 0x02, 0x20, 0x19, 0x03, 0x05, 0x04, 0x05,
-0x01, 0x06, 0x07, 0x0b, 0x13, 0x03, 0x07, 0x05,
-0x02, 0xe5, 0x03, 0x16, 0x01, 0x03, 0x01, 0x08,
-0x03, 0x0a, 0x04, 0x0e, 0x09, 0x01, 0x01, 0x03,
-0x1f, 0x12, 0xe6, 0xe5, 0x08, 0x09, 0x05, 0xe5,
-0x05, 0x01, 0x03, 0x05, 0x03, 0x05, 0x04, 0x02,
-0x01, 0x01, 0x01, 0x05, 0x09, 0x03, 0x05, 0x07,
-0x01, 0x07, 0x01, 0x03, 0xe6, 0xe5, 0xe5, 0x02,
-0xe5, 0x03, 0x05, 0x03, 0x07, 0x01, 0x0f, 0x13,
-0x05, 0x03, 0x0a, 0x0e, 0x03, 0x03, 0x18, 0x10,
-0x02, 0x08, 0xe5, 0x09, 0xe9, 0x17, 0x09, 0x02,
-0x06, 0x04, 0x04, 0x09, 0x01, 0x04, 0xe5, 0xe5,
-0xe5, 0x06, 0x09, 0x06, 0x02, 0x09, 0x09, 0x01,
-0x07, 0x01, 0x07, 0x03, 0x06, 0x01, 0xe5, 0x05,
-0x02, 0x02, 0x03, 0x01, 0x01, 0x08, 0x04, 0x01,
-0x1d, 0x02, 0x09, 0x04, 0x14, 0x03, 0x06, 0xe6,
-0x15, 0x03, 0xe6, 0x02, 0x0e, 0x0c, 0x10, 0x0a,
-0x0a, 0x09, 0x07, 0xe5, 0x07, 0x13, 0x01, 0x09,
-0x07, 0x01, 0x07, 0x12, 0x01, 0x02, 0x14, 0x64,
-0x0b, 0x0c, 0x09, 0xe7, 0x02, 0x02, 0xe6, 0x03,
-0x02, 0x09, 0xe6, 0x01, 0xe5, 0x02, 0xe5, 0x03,
-0xe5, 0x02, 0xe5, 0x02, 0x05, 0x10, 0xe7, 0x02,
-0x03, 0xe6, 0x06, 0xe6, 0x07, 0xe6, 0x05, 0x0a,
-0x07, 0x11, 0xe5, 0x02, 0xe7, 0x02, 0x01, 0xe7,
-0x05, 0xe5, 0xe5, 0x01, 0xe5, 0x02, 0xe6, 0x01,
-0xe5, 0x0d, 0xe6, 0xe5, 0x18, 0xe5, 0x0f, 0xe5,
-0x10, 0xe8, 0xe5, 0x01, 0x04, 0x07, 0x02, 0x05,
-0x06, 0xe5, 0x0e, 0x05, 0x06, 0x04, 0x07, 0x01,
-0x02, 0xe5, 0x02, 0x03, 0xe6, 0x0c, 0x03, 0x02,
-0xe5, 0x07, 0xe5, 0x02, 0x02, 0xe5, 0x02, 0x02,
-0x09, 0x03, 0x20, 0x05, 0x02, 0x01, 0x08, 0x08,
-0x02, 0x0a, 0x07, 0x03, 0x1a, 0x21, 0xe5, 0x01,
-0x02, 0x10, 0x05, 0x03, 0x02, 0x02, 0x03, 0x05,
-0x03, 0x04, 0xe5, 0x08, 0x01, 0x01, 0x02, 0x01,
-0xe5, 0x08, 0x04, 0x04, 0x05, 0xe5, 0xe6, 0x08,
-0x04, 0x01, 0x02, 0x03, 0x05, 0x04, 0x04, 0xe5,
-0x02, 0x01, 0x04, 0x04, 0xe5, 0x06, 0xe5, 0x03,
-0x03, 0xe5, 0x03, 0x03, 0x05, 0x03, 0x02, 0x06,
-0x03, 0x01, 0x03, 0x05, 0x18, 0x04, 0x04, 0x03,
-0x02, 0x02, 0x05, 0x0b, 0x0d, 0x01, 0xe5, 0x16,
-0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe5, 0x07, 0xe5,
-0xe5, 0x05, 0xe5, 0x07, 0xe5, 0xe5, 0xe5, 0x03,
-0xe6, 0xe5, 0x01, 0x02, 0xe5, 0x01, 0x02, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe5, 0x07,
-0xe5, 0x01, 0x02, 0x02, 0xe5, 0x02, 0x07, 0xe5,
-0x07, 0xe5, 0x04, 0x02, 0x09, 0x01, 0x07, 0x13,
-0x09, 0x0c, 0x09, 0x05, 0xe5, 0x01, 0x29, 0xe8,
-0x17, 0x09, 0x02, 0x06, 0x09, 0x02, 0x06, 0x09,
-0x09, 0x02, 0x06, 0x09, 0x09, 0x02, 0x06, 0x02,
-0x01, 0x02, 0x01, 0x09, 0x03, 0x06, 0x01, 0x02,
-0x06, 0x07, 0x01, 0x0a, 0x09, 0x0a, 0x07, 0x0a,
-0xe5, 0x01, 0x0b, 0x0b, 0x02, 0x09, 0x20, 0xe5,
-0x01, 0x01, 0xe5, 0x13, 0x03, 0x05, 0x03, 0x02,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x02, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x02, 0xe5, 0xe5, 0x02,
-0x02, 0xe5, 0xe5, 0x02, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x02, 0x01, 0x02, 0x03,
-0xe5, 0xe6, 0xe5, 0x05, 0xe5, 0x0a, 0x03, 0xe5,
-0x08, 0x07, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0xe6,
-0x05, 0xe5, 0x06, 0xe5, 0x01, 0xe5, 0x0c, 0x07,
-0x02, 0xe5, 0x07, 0xe5, 0x13, 0x01, 0x01, 0xe7,
-0xe5, 0xe5, 0x13, 0x01, 0x07, 0x01, 0x07, 0x02,
-0x06, 0xe5, 0x07, 0x01, 0x02, 0x01, 0x02, 0xe5,
-0x07, 0x01, 0x01, 0xe5, 0x03, 0x01, 0x07, 0xe5,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x09, 0x04, 0x01, 0x02, 0x04, 0x01, 0x01, 0xe5,
-0x06, 0x03, 0x06, 0x03, 0x08, 0x02, 0xe5, 0x03,
-0x07, 0x03, 0x08, 0x02, 0xe5, 0x11, 0x01, 0xe5,
-0x01, 0x0a, 0x11, 0x01, 0x02, 0x03, 0x02, 0x01,
-0x0f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x01,
-0x04, 0x04, 0x04, 0x02, 0x01, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x02, 0x01, 0x06, 0x01,
-0x02, 0x04, 0x02, 0x01, 0x02, 0x04, 0x04, 0x06,
-0x01, 0x02, 0x04, 0x01, 0xe5, 0xe5, 0x01, 0x0b,
-0x01, 0x02, 0x01, 0x23, 0x1f, 0x04, 0xe6, 0xe5,
-0x01, 0x11, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x02, 0x06, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x08, 0x06, 0xe5, 0x0a, 0x01, 0x0e, 0xe5,
-0x28, 0x21, 0x03, 0x01, 0xe7, 0x16, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x06, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x06,
-0x02, 0xe5, 0x01, 0x04, 0x02, 0x06, 0x02, 0x04,
-0x04, 0x04, 0x04, 0x09, 0xe5, 0x01, 0x19, 0xe5,
-0x01, 0x1e, 0x09, 0x01, 0x17, 0x04, 0x02, 0x06,
-0x02, 0x0a, 0x03, 0x01, 0x02, 0xe5, 0x02, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x05,
-0x03, 0x02, 0x01, 0xe5, 0x02, 0x01, 0x02, 0xe5,
-0x02, 0x01, 0x01, 0xe6, 0x02, 0x01, 0x01, 0xe6,
-0x02, 0x05, 0x03, 0x01, 0x02, 0xe5, 0x02, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x02,
-0x01, 0x02, 0x03, 0x04, 0xe5, 0x02, 0x05, 0x03,
-0x05, 0x04, 0x08, 0x09, 0x13, 0x23, 0x03, 0x05,
-0x01, 0x01, 0x13, 0x04, 0xe6, 0x01, 0x14, 0x03,
-0xe5, 0x03, 0x03, 0xe5, 0x03, 0x04, 0x01, 0x01,
-0xe5, 0x02, 0x05, 0x03, 0xe5, 0xe5, 0xe6, 0x02,
-0x05, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0x01, 0xe5,
-0x01, 0x09, 0x09, 0x04, 0x04, 0x06, 0x02, 0x0b,
-0x03, 0x02, 0xe5, 0xe5, 0x05, 0x04, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0x02, 0x04, 0x02, 0x01, 0x13,
-0x0c, 0x18, 0x09, 0x01, 0x11, 0xe5, 0x03, 0x02,
-0xe6, 0x18, 0x02, 0x06, 0x02, 0xe6, 0x03, 0x01,
-0xe5, 0xe5, 0xe5, 0x01, 0x02, 0x06, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x06, 0x02, 0x01, 0xe5, 0x02,
-0x02, 0x01, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe7,
-0x03, 0x01, 0xe7, 0x03, 0x01, 0xe5, 0xe6, 0x02,
-0x01, 0xe5, 0xe5, 0xe5, 0x03, 0x02, 0xe7, 0x02,
-0x01, 0xe5, 0xe6, 0x02, 0x01, 0xe5, 0xe5, 0xe6,
-0x03, 0x01, 0x04, 0x01, 0xe8, 0xe5, 0xe5, 0x12,
-0x01, 0xe5, 0xe5, 0x1f, 0x09, 0x01, 0x11, 0x08,
-0xe7, 0x15, 0x02, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x01, 0x01, 0x02, 0x02, 0x05, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x01, 0x04, 0x02, 0x09, 0xe6, 0x03,
-0x02, 0x1a, 0x04, 0x43, 0x01, 0xe7, 0xe5, 0x17,
-0xe5, 0x07, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x06, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0x01, 0x01, 0x17, 0xe5,
-0x01, 0x46, 0xe5, 0xe6, 0x0d, 0x04, 0x01, 0xe5,
-0xe7, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05,
-0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x01, 0xe7, 0x03, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0x07, 0x01,
-0xe7, 0x03, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0xe5, 0x05, 0xe5, 0x03, 0x03, 0x02,
-0x06, 0x06, 0x02, 0xe5, 0x01, 0x05, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0x02, 0x01, 0x16, 0xe5,
-0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x05,
-0x02, 0x13, 0x12, 0xe5, 0x49, 0x02, 0xe5, 0x01,
-0x15, 0x01, 0x09, 0x02, 0x06, 0x02, 0xe5, 0x04,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x05, 0xe5, 0x01, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x02, 0x05, 0x09, 0x03, 0x13, 0x05, 0x4c,
-0x08, 0x10, 0xe7, 0x03, 0x02, 0xe6, 0x03, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x02, 0xe5, 0x01, 0xe6,
-0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02,
-0xe6, 0xe5, 0x01, 0x02, 0xe6, 0x03, 0x02, 0xe6,
-0x02, 0xe5, 0x01, 0xe6, 0x02, 0xe5, 0x01, 0xe6,
-0x03, 0x02, 0xe6, 0x05, 0x02, 0x01, 0x04, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x01, 0x01, 0xe5,
-0x06, 0x01, 0x06, 0x09, 0x0a, 0x01, 0x1a, 0x2d,
-0x01, 0xe5, 0x16, 0x02, 0xe5, 0x03, 0xe5, 0x01,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x01,
-0xe6, 0x01, 0x05, 0xe5, 0x04, 0x02, 0x08, 0xe5,
-0x08, 0xe5, 0x1a, 0xe5, 0x2e, 0x1b, 0x02, 0x04,
-0xe5, 0x07, 0x09, 0x03, 0x05, 0x01, 0x07, 0x03,
-0x05, 0x01, 0x04, 0x02, 0x01, 0x01, 0x05, 0x03,
-0xe5, 0x03, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x01, 0x02, 0x02, 0x06, 0x01, 0x02, 0x04, 0x04,
-0x06, 0x02, 0x03, 0x03, 0x01, 0xe5, 0x11, 0x03,
-0x05, 0x04, 0x13, 0x0e, 0x2d, 0xe8, 0x13, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0x03, 0x01,
-0xe5, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0x05, 0xe5,
-0x01, 0x04, 0xe6, 0x01, 0xe5, 0x02, 0xe6, 0x01,
-0x04, 0xe6, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0xe5, 0x02, 0xe6, 0x03, 0x05, 0xe5,
-0x01, 0xe5, 0x02, 0xe6, 0x01, 0xe5, 0x03, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe6, 0x04, 0xe7, 0x01,
-0x05, 0xe5, 0x06, 0xe6, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x03, 0xe7, 0x05, 0xe7, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0xe5, 0x16, 0x01, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0x09, 0xe5, 0x07, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x08, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x02, 0x04, 0x09, 0xe6, 0x07,
-0x12, 0x03, 0x09, 0x1e, 0xe5, 0xe6, 0x16, 0x01,
-0xe5, 0xe5, 0x05, 0x02, 0x02, 0x03, 0x02, 0x06,
-0x02, 0x03, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0x02,
-0x03, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x04,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0xe5, 0xe5, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x03,
-0x02, 0x02, 0x02, 0x02, 0x07, 0x01, 0x02, 0x03,
-0x03, 0x12, 0x06, 0x09, 0x14, 0xe5, 0x03, 0xe5,
-0x02, 0x17, 0x09, 0x09, 0x02, 0x06, 0x02, 0x02,
-0xe6, 0xe5, 0x04, 0x01, 0x01, 0x02, 0x02, 0xe6,
-0xe5, 0x06, 0x01, 0x06, 0xe5, 0xe5, 0x01, 0x03,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x04, 0x01, 0x01,
-0x07, 0x01, 0x06, 0xe5, 0x01, 0xe5, 0x08, 0x02,
-0x03, 0xe5, 0xe5, 0x01, 0x06, 0x01, 0x13, 0x05,
-0x03, 0x0e, 0xe5, 0x16, 0x04, 0xe5, 0x07, 0xe5,
-0x14, 0x07, 0x02, 0x19, 0x07, 0x05, 0x03, 0x09,
-0x05, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8,
-0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8,
-0x04, 0xe8, 0x04, 0xe7, 0x01, 0x06, 0x01, 0xe5,
-0x04, 0xe8, 0x05, 0x01, 0x02, 0x07, 0x09, 0x02,
-0x02, 0xe7, 0x01, 0xe5, 0x05, 0x05, 0xe7, 0x02,
-0x09, 0x08, 0x03, 0xe7, 0x02, 0x04, 0xe5, 0x14,
-0x03, 0x02, 0x02, 0xe5, 0x01, 0x2b, 0xe5, 0x26,
-0x02, 0x37, 0x1b, 0x09, 0x01, 0xe5, 0x05, 0x03,
-0x1b, 0xe6, 0x23, 0x01, 0x0a, 0x03, 0x12, 0x03,
-0x03, 0x0d, 0x01, 0x06, 0xe5, 0xe5, 0x01, 0x04,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x02,
-0x04, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x07, 0x01,
-0x02, 0x06, 0x01, 0x01, 0x05, 0xe6, 0xe5, 0xe5,
-0x02, 0xe6, 0x01, 0x04, 0x01, 0xe6, 0x04, 0x01,
-0x07, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x06, 0xe7, 0x0a, 0xe7, 0x18,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x01,
-0x02, 0x02, 0xe6, 0x01, 0xe5, 0x02, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x01, 0x03,
-0xe5, 0x07, 0xe5, 0x01, 0xe5, 0x02, 0x02, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0x06, 0x02,
-0x06, 0x01, 0x08, 0x0e, 0x04, 0xe5, 0x01, 0x05,
-0xe5, 0x1d, 0x07, 0x1a, 0x01, 0xe5, 0x14, 0x03,
-0x09, 0x05, 0xe5, 0x06, 0x02, 0xe6, 0x0b, 0x02,
-0xe5, 0x01, 0x02, 0x01, 0x04, 0x04, 0x0a, 0x01,
-0xe7, 0x03, 0x03, 0xe5, 0x0c, 0x09, 0x04, 0x04,
-0x03, 0x01, 0x06, 0x01, 0xe7, 0x03, 0x01, 0xe5,
-0x0a, 0xe6, 0x01, 0x01, 0x04, 0x01, 0x07, 0x01,
-0x07, 0xe5, 0x02, 0xe5, 0xe5, 0xe5, 0x01, 0xe5,
-0x01, 0x05, 0x07, 0x0a, 0x07, 0xe5, 0x07, 0xe5,
-0x0a, 0x06, 0x03, 0xe5, 0x16, 0x01, 0xe5, 0x05,
-0x01, 0x03, 0x05, 0xe5, 0x0b, 0x03, 0x01, 0x01,
-0xe5, 0x02, 0x02, 0x03, 0x03, 0x01, 0x04, 0x02,
-0x01, 0x02, 0x01, 0x09, 0x02, 0x01, 0xe5, 0x05,
-0x01, 0x02, 0x03, 0xe5, 0xe5, 0x06, 0x01, 0x05,
-0xe5, 0x08, 0x08, 0xe5, 0x1a, 0x01, 0x03, 0x0c,
-0x04, 0x09, 0x01, 0x27, 0x02, 0x16, 0x03, 0xe5,
-0xe5, 0x0d, 0x05, 0xe6, 0x08, 0x0a, 0x03, 0x0c,
-0x01, 0x03, 0x03, 0xe6, 0x04, 0x01, 0x09, 0x01,
-0x07, 0x01, 0x13, 0x07, 0x01, 0x06, 0xe5, 0x08,
-0x01, 0x1a, 0x02, 0x01, 0x03, 0x03, 0x01, 0x06,
-0x07, 0x07, 0x04, 0x01, 0x10, 0x03, 0x03, 0x05,
-0xe5, 0x07, 0x09, 0x17, 0x03, 0x13, 0x16, 0x09,
-0x07, 0x01, 0x03, 0x02, 0x04, 0x04, 0x05, 0x09,
-0x05, 0x01, 0x01, 0x0b, 0x0f, 0x01, 0x0a, 0x06,
-0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0x04,
-0x09, 0x03, 0x0a, 0x0b, 0x02, 0x04, 0x11, 0x02,
-0x07, 0x14, 0x0a, 0x04, 0x02, 0xe6, 0xe6, 0x06,
-0x0e, 0x03, 0x05, 0x04, 0x05, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x01, 0x01, 0x0b, 0x04, 0x08, 0x03,
-0x0c, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x01, 0x02,
-0x0d, 0x03, 0x08, 0x01, 0xe5, 0x0f, 0x08, 0xe5,
-0x03, 0x09, 0x04, 0x07, 0x05, 0x07, 0x0b, 0x0c,
-0x09, 0x14, 0x18, 0xe7, 0x2a, 0x09, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0x10, 0x02, 0x03, 0x05, 0x06,
-0x13, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x02, 0x02,
-0x08, 0x02, 0x03, 0x09, 0x0e, 0x04, 0x01, 0x14,
-0x09, 0x03, 0x05, 0x06, 0x02, 0x04, 0x01, 0x02,
-0x03, 0x02, 0x04, 0x04, 0x01, 0x0a, 0x0d, 0xe5,
-0xe6, 0x05, 0x0d, 0x0a, 0x0d, 0x02, 0x01, 0x06,
-0x01, 0xe5, 0xe5, 0x04, 0xe5, 0x05, 0x08, 0x02,
-0xe5, 0x07, 0xe5, 0x01, 0x02, 0x03, 0x02, 0x05,
-0xe5, 0x01, 0x14, 0x04, 0xe5, 0x02, 0x06, 0x02,
-0x01, 0x06, 0x01, 0xe5, 0x02, 0xe5, 0x16, 0x04,
-0xe5, 0x08, 0x1a, 0xe5, 0x11, 0x1e, 0x04, 0xe5,
-0xe5, 0x05, 0x14, 0x05, 0xe5, 0x03, 0x03, 0xe5,
-0x0c, 0x0c, 0x04, 0xe5, 0x01, 0x01, 0x04, 0x05,
-0xe5, 0x05, 0x01, 0xe5, 0x0f, 0x08, 0x09, 0x01,
-0x09, 0xe5, 0x06, 0x20, 0x06, 0x04, 0x18, 0x09,
-0xe5, 0x0b, 0x1c, 0x0a, 0x03, 0x02, 0xe5, 0x01,
-0x03, 0x06, 0x18, 0x04, 0x04, 0x01, 0x09, 0xe5,
-0x1e, 0x01, 0x02, 0x04, 0x04, 0x02, 0x01, 0x09,
-0x01, 0x08, 0x06, 0x09, 0x04, 0x0a, 0x1b, 0x06,
-0x06, 0x0c, 0x23, 0x2e, 0xe5, 0x01, 0xe5, 0x01,
-0x10, 0x0a, 0x02, 0x08, 0xe6, 0x03, 0x02, 0x01,
-0xe5, 0x08, 0x05, 0x09, 0x02, 0x08, 0x01, 0xe5,
-0x04, 0xe7, 0x08, 0x08, 0x03, 0x09, 0x0c, 0x08,
-0x06, 0x04, 0x04, 0x09, 0x08, 0x04, 0x09, 0x08,
-0xe5, 0x04, 0x0c, 0x09, 0xe5, 0x03, 0x13, 0xe5,
-0x19, 0xe5, 0x02, 0x18, 0x09, 0x06, 0x02, 0xe6,
-0x03, 0x05, 0xe6, 0xe5, 0x04, 0x0c, 0xe5, 0x01,
-0x18, 0x01, 0x08, 0x05, 0x02, 0x01, 0x09, 0x0e,
-0x04, 0x01, 0x02, 0x04, 0x01, 0xe5, 0x03, 0x07,
-0x05, 0x0e, 0x05, 0x03, 0x07, 0x06, 0xe5, 0xe5,
-0x0f, 0x09, 0x08, 0x18, 0xe6, 0xe6, 0x07, 0x09,
-0x08, 0x01, 0x0f, 0x09, 0x01, 0x13, 0x02, 0x03,
-0x02, 0x27, 0x09, 0xe5, 0x04, 0x32, 0x01, 0x24,
-0x02, 0x0c, 0x07, 0x08, 0x24, 0x01, 0x01, 0xe5,
-0x09, 0x16, 0xe6, 0x07, 0x0b, 0xe5, 0x01, 0x04,
-0x08, 0xe5, 0x03, 0x03, 0x05, 0x03, 0x09, 0xe5,
-0x07, 0x02, 0xe5, 0x04, 0xe5, 0x03, 0x03, 0x05,
-0x03, 0x0b, 0x0b, 0xe5, 0x05, 0x05, 0x02, 0xe5,
-0x12, 0x02, 0x01, 0xe5, 0x01, 0x0a, 0x02, 0x01,
-0x03, 0xe6, 0x11, 0xe5, 0x12, 0x13, 0x01, 0xe9,
-0xe5, 0xe5, 0x07, 0x0e, 0x01, 0x01, 0x03, 0x06,
-0x02, 0x0c, 0xe5, 0x03, 0x02, 0x01, 0x01, 0x0a,
-0x03, 0x08, 0x06, 0xe5, 0xe5, 0x05, 0xe5, 0x01,
-0x02, 0xe5, 0x0a, 0x03, 0x09, 0x07, 0xe5, 0x01,
-0x0b, 0xe5, 0x08, 0xe5, 0xe5, 0x02, 0x0f, 0x02,
-0x02, 0xe5, 0x01, 0x09, 0x03, 0x02, 0xe5, 0x0f,
-0x01, 0x01, 0x03, 0x26, 0x01, 0x03, 0x02, 0x02,
-0x01, 0x08, 0x06, 0xe5, 0xe5, 0xe5, 0x17, 0x01,
-0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0xe5, 0x03, 0xe5,
-0xe5, 0x02, 0x01, 0xe5, 0x08, 0x01, 0xe5, 0xe5,
-0x0d, 0xe5, 0x07, 0x01, 0x02, 0x01, 0x02, 0xe5,
-0x0a, 0x05, 0xe5, 0x03, 0x09, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x06, 0x01, 0x0c, 0x07, 0x06, 0x01,
-0x02, 0x0b, 0x0c, 0xe5, 0x02, 0x0c, 0x1a, 0x04,
-0x01, 0x01, 0x02, 0x0a, 0x09, 0x01, 0x11, 0x06,
-0x02, 0x01, 0x07, 0x01, 0x07, 0x13, 0x05, 0xe5,
-0x07, 0xe5, 0x0d, 0x04, 0x18, 0x09, 0x01, 0x07,
-0x01, 0x07, 0x06, 0x0c, 0x01, 0x07, 0x09, 0x01,
-0x18, 0x04, 0x0e, 0x13, 0x06, 0x02, 0xe6, 0xe7,
-0x0a, 0x1d, 0x04, 0xe5, 0xe6, 0x01, 0x02, 0x09,
-0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x04, 0x04, 0x04,
-0x05, 0x02, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02,
-0x04, 0x04, 0x02, 0x01, 0x09, 0x01, 0x02, 0x01,
-0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0xe5, 0x06, 0x01, 0x01, 0x0c,
-0x04, 0x12, 0x0a, 0x01, 0x05, 0x03, 0x02, 0x03,
-0x02, 0x04, 0xe6, 0x05, 0x02, 0x08, 0x07, 0x02,
-0x01, 0x02, 0x09, 0xe5, 0x02, 0x09, 0x0f, 0x01,
-0x02, 0x01, 0x01, 0xe5, 0x03, 0x03, 0xe5, 0xe5,
-0xe5, 0x03, 0xe5, 0xe5, 0x01, 0x04, 0x04, 0x0e,
-0x04, 0x03, 0xe5, 0x03, 0x01, 0x01, 0xe5, 0x03,
-0x04, 0x09, 0x04, 0x03, 0x02, 0x04, 0xe5, 0x01,
-0xe5, 0x03, 0x01, 0xe7, 0x03, 0x02, 0xe6, 0x02,
-0x05, 0x01, 0x07, 0x04, 0x04, 0x03, 0x05, 0x07,
-0xe5, 0x09, 0x01, 0x01, 0x09, 0x02, 0xe7, 0x02,
-0x01, 0x02, 0x04, 0x02, 0x01, 0x0e, 0x02, 0xe5,
-0x01, 0x02, 0x08, 0x01, 0x09, 0x01, 0x11, 0x0b,
-0x04, 0xe5, 0xe5, 0xe5, 0xe5, 0xe7, 0xe5, 0x08,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x05, 0x01,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x05,
-0x03, 0x04, 0x06, 0x09, 0x05, 0x01, 0x15, 0x07,
-0x06, 0x04, 0x05, 0x0b, 0x01, 0x09, 0x01, 0x07,
-0x07, 0x19, 0x02, 0x01, 0x02, 0x0a, 0x09, 0x01,
-0x03, 0xe5, 0x0b, 0x01, 0x02, 0x04, 0x04, 0x01,
-0xe7, 0xe5, 0x01, 0x04, 0x04, 0x04, 0x01, 0x02,
-0x04, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x04,
-0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x13,
-0x01, 0x02, 0x04, 0x06, 0xe5, 0xe5, 0xe5, 0x01,
-0x0e, 0x01, 0x0c, 0x04, 0x0b, 0x15, 0xe5, 0xe5,
-0x02, 0xe6, 0x06, 0x45, 0x27, 0xe5, 0x07, 0x02,
-0x1c, 0x13, 0x02, 0x1a, 0x02, 0x08, 0x07, 0xe5,
-0x18, 0x02, 0xe5, 0x11, 0x02, 0x06, 0x09, 0x01,
-0x02, 0x01, 0x08, 0x01, 0x25, 0x1f, 0x07, 0xe5,
-0x04, 0x02, 0x24, 0x0c, 0xe5, 0x09, 0xe6, 0x06,
-0xe5, 0x07, 0x10, 0x1d, 0x02, 0x19, 0xe5, 0x0b,
-0x09, 0x0b, 0x07, 0x02, 0xe6, 0x07, 0x05, 0x09,
-0x09, 0x09, 0x03, 0xe5, 0xe5, 0x01, 0x06, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x09, 0x03, 0xe5, 0xe5,
-0x01, 0x09, 0x09, 0x09, 0x09, 0x06, 0x04, 0x09,
-0x09, 0x03, 0x02, 0x02, 0x02, 0x03, 0x02, 0x09,
-0x09, 0x04, 0x01, 0x02, 0x03, 0x05, 0x09, 0x09,
-0xe6, 0x06, 0x04, 0xe6, 0x01, 0x05, 0xe5, 0x01,
-0x0d, 0xe5, 0x01, 0xe5, 0x33, 0x08, 0xe5, 0x07,
-0xe5, 0x05, 0x0c, 0x09, 0x1d, 0x10, 0x0e, 0x09,
-0x06, 0x02, 0x06, 0x0c, 0x3b, 0x09, 0x08, 0x0f,
-0x02, 0x01, 0x01, 0x31, 0x09, 0x09, 0x15, 0x09,
-0x1d, 0x1e, 0x0a, 0x07, 0x14, 0x3c, 0x09, 0x1f,
-0xe5, 0x13, 0x09, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02, 0x04,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x01, 0x04, 0x02, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x06, 0x02, 0x05,
-0xe5, 0xe5, 0x01, 0x04, 0x01, 0x02, 0x06, 0x02,
-0x06, 0x11, 0x01, 0x02, 0x06, 0x04, 0x02, 0x01,
-0x02, 0x15, 0x05, 0xe6, 0x0a, 0x02, 0x01, 0x1c,
-0x21, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x02,
-0x01, 0x01, 0x07, 0x01, 0x05, 0x01, 0x01, 0x01,
-0x03, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x02, 0x02, 0x03, 0x02, 0x02, 0x01,
-0x01, 0x05, 0x02, 0x06, 0x03, 0x01, 0xe5, 0x01,
-0x01, 0x01, 0x05, 0x02, 0x06, 0x01, 0x01, 0x01,
-0x06, 0x0f, 0x03, 0xe5, 0x06, 0xe5, 0x05, 0x01,
-0x01, 0x04, 0xe5, 0x01, 0x0f, 0x01, 0xe5, 0x08,
-0x16, 0x01, 0x09, 0x09, 0x09, 0x09, 0x03, 0x05,
-0x03, 0xe5, 0x08, 0x04, 0x04, 0x02, 0x0b, 0x03,
-0x03, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x03, 0x07,
-0x03, 0x05, 0x13, 0x04, 0x12, 0x05, 0x03, 0xe5,
-0x30, 0x02, 0x01, 0x1c, 0xe5, 0x13, 0xe5, 0x07,
-0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe6, 0xe5,
-0x02, 0x01, 0xe6, 0xe5, 0x02, 0x01, 0xe6, 0x04,
-0xe6, 0x06, 0xe5, 0xe5, 0x07, 0xe6, 0xe5, 0x02,
-0xe8, 0x04, 0xe6, 0x02, 0x03, 0xe6, 0x02, 0x03,
-0xe6, 0xe5, 0xe5, 0x02, 0xe6, 0x01, 0xe5, 0x05,
-0xe5, 0x07, 0xe7, 0x06, 0x01, 0x07, 0xe6, 0x05,
-0xe6, 0x05, 0xe6, 0xe5, 0x06, 0xe5, 0x05, 0xe6,
-0x08, 0xe5, 0x07, 0xe5, 0x02, 0x03, 0xe6, 0x06,
-0xe7, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x08, 0x01,
-0x09, 0x06, 0x09, 0xe5, 0x2c, 0x07, 0x01, 0x01,
-0x09, 0x13, 0x05, 0x09, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x09, 0x01, 0x09, 0x09, 0x10, 0x02, 0x05,
-0x03, 0x09, 0x05, 0x03, 0x11, 0x01, 0xe5, 0x0f,
-0x01, 0x18, 0xe8, 0x32, 0x03, 0x06, 0x02, 0x06,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0xe5, 0x07,
-0x02, 0x06, 0x02, 0x03, 0x02, 0x07, 0x01, 0x06,
-0x02, 0x02, 0x04, 0x01, 0x01, 0x02, 0x04, 0x01,
-0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe5, 0x0d, 0x01,
-0xe5, 0xe5, 0x05, 0x01, 0xe5, 0x08, 0x05, 0x02,
-0x02, 0x11, 0x08, 0x02, 0x06, 0xe5, 0xe5, 0x01,
-0x17, 0x01, 0xe5, 0x0e, 0x1c, 0x0d, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0xe5, 0x01,
-0x05, 0x07, 0xe6, 0x07, 0xe5, 0x02, 0x03, 0x01,
-0x03, 0x04, 0xe5, 0x06, 0x01, 0x0f, 0x04, 0xe5,
-0x0c, 0x13, 0x03, 0x01, 0x03, 0x09, 0x04, 0xe5,
-0x02, 0x13, 0xe5, 0x02, 0xe5, 0x07, 0xe5, 0x02,
-0x19, 0x01, 0xe5, 0x0f, 0x09, 0x09, 0x08, 0x02,
-0xe5, 0x04, 0x02, 0xe8, 0x01, 0x02, 0xe8, 0x04,
-0x01, 0x07, 0x01, 0x02, 0x04, 0xe8, 0x01, 0x02,
-0xe8, 0x04, 0xe5, 0x04, 0x02, 0x01, 0x07, 0xe5,
-0x07, 0x01, 0x09, 0x01, 0x07, 0xe9, 0x03, 0x01,
-0x02, 0x02, 0x0c, 0xe5, 0x01, 0x04, 0x01, 0x02,
-0x02, 0x06, 0x04, 0xe5, 0x04, 0x16, 0xe8, 0x05,
-0xe8, 0xe5, 0x18, 0x02, 0xe5, 0x01, 0x09, 0xe5,
-0xe5, 0x0d, 0x0b, 0xe5, 0xe5, 0x0f, 0x0c, 0xe5,
-0x04, 0x02, 0x01, 0x12, 0x0a, 0x04, 0xe5, 0xe5,
-0x05, 0x02, 0x01, 0x04, 0x02, 0x07, 0x03, 0xe5,
-0x12, 0x05, 0xe5, 0xe5, 0x09, 0x05, 0x09, 0x09,
-0xe5, 0xe5, 0x19, 0x11, 0x1c, 0xe5, 0xe6, 0x0a,
-0x01, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01,
-0x01, 0x03, 0x01, 0x07, 0x01, 0x04, 0x02, 0x01,
-0xe5, 0x05, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x04, 0x02, 0xe6, 0x02,
-0x03, 0x01, 0x03, 0x03, 0xe6, 0x08, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0xe5,
-0x05, 0xe6, 0xe5, 0x04, 0x01, 0xe5, 0x02, 0x02,
-0x01, 0x04, 0x01, 0xe8, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0xe5, 0xe5,
-0x03, 0x01, 0x07, 0x01, 0x0e, 0x0f, 0x2b, 0x0d,
-0x05, 0xe5, 0x01, 0x01, 0x0d, 0x0b, 0x03, 0xe6,
-0x01, 0x06, 0x04, 0xe5, 0xe7, 0x04, 0x01, 0xe5,
-0x04, 0x02, 0x01, 0xe5, 0x02, 0x11, 0x06, 0x12,
-0x0c, 0x01, 0x05, 0x01, 0x1b, 0x2c, 0xe5, 0xe7,
-0x12, 0x0f, 0xe5, 0x0c, 0x04, 0x03, 0x05, 0x04,
-0x07, 0x02, 0x02, 0x0e, 0x0a, 0xe6, 0x03, 0x01,
-0xe6, 0x09, 0x08, 0x01, 0x05, 0x05, 0x01, 0x04,
-0x1b, 0x06, 0x05, 0x0e, 0x13, 0x0d, 0x0a, 0x12,
-0x0a, 0x06, 0x02, 0x01, 0x04, 0x06, 0xe5, 0xe5,
-0x15, 0x03, 0xe5, 0x02, 0x0a, 0x02, 0x01, 0x03,
-0x13, 0xe6, 0x02, 0x10, 0x02, 0x02, 0x06, 0x05,
-0x03, 0x02, 0x06, 0x01, 0x03, 0x03, 0x03, 0x1e,
-0x02, 0x17, 0x05, 0x03, 0x01, 0x04, 0x14, 0x01,
-0x01, 0x0b, 0x22, 0x01, 0xe6, 0x08, 0x10, 0x05,
-0xe6, 0x06, 0x01, 0xe5, 0x02, 0x02, 0xe6, 0x10,
-0x02, 0x09, 0x06, 0x01, 0x05, 0x03, 0x07, 0x01,
-0x02, 0x04, 0x05, 0xe5, 0x01, 0x01, 0x02, 0x04,
-0x01, 0xe5, 0x06, 0xe5, 0xe5, 0x02, 0x06, 0x03,
-0x05, 0x03, 0x01, 0x0a, 0x01, 0x04, 0x02, 0x01,
-0x02, 0x10, 0x01, 0x04, 0xe5, 0xe5, 0xe6, 0x06,
-0x06, 0x01, 0xe5, 0x08, 0xe5, 0x04, 0x06, 0x02,
-0xe6, 0x0c, 0xe6, 0xe6, 0x07, 0x16, 0x07, 0x05,
-0x08, 0x05, 0x0a, 0x04, 0x10, 0x02, 0x07, 0x0a,
-0x05, 0x03, 0x09, 0x05, 0x03, 0x05, 0x01, 0x01,
-0x02, 0x26, 0x01, 0x08, 0x0d, 0x03, 0x0a, 0x11,
-0x01, 0x13, 0x05, 0x02, 0x0f, 0xe9, 0x07, 0x09,
-0x09, 0x03, 0x09, 0x05, 0x06, 0x13, 0x01, 0x0a,
-0xe5, 0x03, 0xe5, 0x08, 0x01, 0x04, 0xe6, 0x08,
-0xe6, 0x04, 0x02, 0x06, 0xe6, 0x02, 0x03, 0x07,
-0x09, 0x0f, 0x07, 0x01, 0x03, 0x03, 0xe7, 0x01,
-0x17, 0x01, 0x05, 0x03, 0x0b, 0x07, 0x03, 0x05,
-0xe5, 0x15, 0x01, 0xe7, 0xe5, 0x13, 0xe5, 0xe7,
-0x09, 0x07, 0x13, 0x02, 0x01, 0x0b, 0x06, 0x02,
-0xe5, 0x04, 0xe5, 0xe5, 0xe5, 0x03, 0x07, 0x03,
-0x05, 0x0e, 0x01, 0x07, 0x04, 0x09, 0x0a, 0xe5,
-0x0d, 0x01, 0xe5, 0x05, 0x0e, 0x0a, 0x03, 0x02,
-0x06, 0x0c, 0x06, 0xe5, 0x02, 0x04, 0xe5, 0x07,
-0x11, 0xe5, 0xe5, 0x05, 0x01, 0x1d, 0xe6, 0x05,
-0xe5, 0x07, 0x01, 0x02, 0x0f, 0x01, 0x01, 0x02,
-0x02, 0x02, 0x03, 0x10, 0x04, 0x08, 0x15, 0x04,
-0x05, 0x09, 0xe5, 0xe5, 0x0e, 0xe5, 0x07, 0x02,
-0x05, 0x02, 0x09, 0x0e, 0x02, 0x08, 0xe6, 0xe5,
-0x08, 0xe5, 0x01, 0x07, 0x01, 0x03, 0xe5, 0x05,
-0x10, 0x01, 0x06, 0x23, 0x0a, 0xe5, 0x04, 0x02,
-0xe5, 0x06, 0x13, 0xe5, 0x01, 0x09, 0x07, 0x0e,
-0x0a, 0x0c, 0x0a, 0xe5, 0x09, 0x01, 0x19, 0x12,
-0x02, 0x01, 0x02, 0x09, 0x0d, 0xe6, 0x05, 0xe5,
-0x01, 0xe5, 0x03, 0x09, 0x07, 0x05, 0x07, 0x35,
-0xe5, 0x0a, 0x02, 0xe5, 0x15, 0x05, 0x08, 0x06,
-0x04, 0x1e, 0x01, 0x0b, 0x0b, 0x03, 0x07, 0x02,
-0x22, 0x04, 0x07, 0x03, 0x0b, 0x08, 0x05, 0x1e,
-0xe9, 0x01, 0x1d, 0x01, 0xe5, 0x03, 0x08, 0x0d,
-0x01, 0x05, 0x02, 0x10, 0x02, 0xe5, 0x07, 0x01,
-0x05, 0x01, 0x06, 0x03, 0x03, 0x31, 0x07, 0x0d,
-0x01, 0xe5, 0xe6, 0x02, 0x01, 0x02, 0x09, 0x07,
-0x01, 0x09, 0x06, 0x02, 0x01, 0x02, 0x04, 0x04,
-0x04, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x1f, 0x0a,
-0xe5, 0x03, 0x09, 0x02, 0xe5, 0x06, 0xe5, 0xe5,
-0x06, 0x05, 0x03, 0x06, 0x02, 0x06, 0x02, 0x10,
-0x02, 0x05, 0xe5, 0x07, 0x05, 0xe5, 0xe6, 0x09,
-0xe5, 0x0d, 0x05, 0xe5, 0xe5, 0x01, 0x09, 0x06,
-0x1d, 0x02, 0x06, 0x09, 0x09, 0xe5, 0x18, 0xe6,
-0x01, 0x20, 0x1d, 0x09, 0x09, 0x07, 0xe5, 0x07,
-0x01, 0x06, 0x02, 0x0b, 0x06, 0x02, 0x0b, 0x07,
-0x06, 0x05, 0x17, 0x0e, 0x05, 0xe5, 0x02, 0x04,
-0x13, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0xe5,
-0x04, 0x10, 0x06, 0x01, 0xe6, 0x1f, 0xe5, 0x07,
-0xe5, 0x04, 0x02, 0xe5, 0x0e, 0x0e, 0x07, 0x06,
-0x0c, 0xe5, 0x14, 0xe5, 0x05, 0x0b, 0x08, 0x09,
-0xe5, 0x0e, 0x03, 0x08, 0xe5, 0x04, 0x03, 0x08,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x11, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x06,
-0x02, 0x01, 0x03, 0xe5, 0xe5, 0x1a, 0x01, 0xe6,
-0x0b, 0x05, 0x02, 0x03, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x03, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x07,
-0xe5, 0x03, 0x01, 0x04, 0x09, 0x05, 0xe5, 0x01,
-0x0a, 0xe6, 0x01, 0x05, 0xe5, 0x0a, 0x07, 0x05,
-0xe5, 0xe5, 0x08, 0xe5, 0x01, 0x02, 0x01, 0xe5,
-0x08, 0x02, 0x10, 0x04, 0x07, 0x06, 0x02, 0x0a,
-0x01, 0xe5, 0x0f, 0x03, 0xe5, 0xe5, 0x01, 0x01,
-0x1e, 0x01, 0x05, 0x01, 0x07, 0x06, 0x01, 0xe5,
-0x08, 0x06, 0xe5, 0xe5, 0x01, 0x10, 0x01, 0x02,
-0x15, 0xe5, 0x02, 0x0b, 0x07, 0x09, 0x01, 0x13,
-0x04, 0x01, 0x04, 0x07, 0x04, 0x01, 0x02, 0x01,
-0x11, 0x01, 0x0b, 0xe5, 0x01, 0x01, 0x16, 0x08,
-0x0c, 0x01, 0x01, 0xe5, 0xe5, 0x1d, 0x06, 0x02,
-0x01, 0x07, 0x06, 0x02, 0xe6, 0x06, 0x06, 0xe5,
-0x01, 0xe5, 0x0d, 0xe5, 0x02, 0x11, 0x06, 0xe5,
-0xe5, 0xe5, 0x06, 0x05, 0xe5, 0x03, 0x09, 0x01,
-0x25, 0x06, 0xe5, 0xe5, 0x08, 0x06, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0x02, 0x01, 0x07, 0x10,
-0x0d, 0x02, 0x01, 0x03, 0xe7, 0x14, 0x01, 0x09,
-0x03, 0x01, 0xe5, 0x09, 0x07, 0x06, 0x03, 0xe5,
-0x03, 0x08, 0xe5, 0x03, 0x01, 0x07, 0x01, 0x02,
-0xe5, 0x01, 0xe5, 0xe5, 0x06, 0x05, 0x02, 0x05,
-0x03, 0xe5, 0x03, 0xe5, 0x01, 0x01, 0x02, 0x02,
-0x06, 0x06, 0x11, 0x01, 0xe5, 0x03, 0x04, 0x01,
-0x03, 0x02, 0xe5, 0x03, 0x03, 0x13, 0x06, 0x01,
-0xe5, 0x0f, 0x02, 0x02, 0x05, 0x11, 0xea, 0xe5,
-0x13, 0x01, 0x01, 0x05, 0x03, 0x02, 0x01, 0x04,
-0x05, 0x03, 0x05, 0x02, 0x01, 0x02, 0xe6, 0x0d,
-0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x04, 0x03, 0x02,
-0x01, 0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x06, 0xe5,
-0x03, 0x02, 0xe6, 0xe5, 0x01, 0x06, 0x04, 0x03,
-0xe5, 0x02, 0x01, 0x01, 0xe5, 0x10, 0x01, 0xe5,
-0x03, 0x04, 0x01, 0x01, 0x05, 0x04, 0x02, 0x05,
-0x09, 0x01, 0x01, 0xe6, 0x02, 0x02, 0x01, 0x04,
-0x09, 0x02, 0x01, 0xe5, 0x02, 0x04, 0x04, 0x09,
-0x01, 0x01, 0x01, 0xe5, 0x01, 0x14, 0x01, 0x09,
-0x07, 0x01, 0x04, 0x02, 0x06, 0x02, 0x07, 0x01,
-0x03, 0xe5, 0x0d, 0x01, 0x04, 0x01, 0x02, 0x01,
-0x05, 0x01, 0x07, 0x06, 0xe6, 0x01, 0x04, 0xe7,
-0x0a, 0x07, 0x01, 0x01, 0x0e, 0x01, 0x05, 0x04,
-0x01, 0x07, 0x01, 0x09, 0x13, 0x02, 0x0e, 0x01,
-0x13, 0x05, 0x01, 0x01, 0x0d, 0xe6, 0xe7, 0x15,
-0x01, 0x07, 0x06, 0x01, 0xe5, 0xe5, 0x04, 0x01,
-0x07, 0x01, 0x01, 0xe5, 0xe7, 0x01, 0x10, 0x02,
-0x01, 0x03, 0xe5, 0x08, 0x01, 0xe5, 0xe5, 0x06,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x06, 0x04, 0x04, 0x01, 0x03, 0xe5,
-0x08, 0x01, 0x0a, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x04, 0x22, 0x01, 0x11, 0x09, 0x01, 0x0d, 0xe5,
-0x01, 0xe5, 0x08, 0x02, 0x35, 0x16, 0x01, 0xe5,
-0x0c, 0x16, 0xe6, 0x08, 0x07, 0xe5, 0x09, 0x02,
-0x1a, 0x02, 0x24, 0x02, 0x06, 0x27, 0x14, 0xe5,
-0x01, 0x0a, 0x37, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0xe5, 0x07, 0x0f, 0xe5, 0x01, 0x10, 0x02, 0xe5,
-0x31, 0x06, 0x02, 0x27, 0x0b, 0x11, 0x09, 0x0b,
-0x13, 0xe7, 0x09, 0x03, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x02, 0xe5, 0xe7, 0xe5, 0x01, 0xe5, 0x07,
-0x03, 0x05, 0x04, 0x01, 0x02, 0xe6, 0xe5, 0x04,
-0x09, 0x09, 0x09, 0x04, 0x01, 0x04, 0x09, 0x09,
-0x05, 0x03, 0x05, 0x03, 0x06, 0x02, 0x06, 0x02,
-0x09, 0x05, 0xe5, 0x01, 0x04, 0x01, 0x02, 0x09,
-0x04, 0xe6, 0x01, 0x03, 0x02, 0x02, 0x09, 0x02,
-0x09, 0xea, 0x3a, 0x02, 0x09, 0x1d, 0x1d, 0x09,
-0x09, 0x29, 0x06, 0x02, 0x08, 0x13, 0xe5, 0x08,
-0x13, 0x08, 0xe5, 0x08, 0x09, 0x04, 0x06, 0x3d,
-0x05, 0x01, 0x1d, 0x1d, 0x09, 0x0b, 0x27, 0x0a,
-0x1e, 0x09, 0x13, 0x07, 0x09, 0x0b, 0x08, 0xe5,
-0xe6, 0x22, 0x11, 0x01, 0x07, 0x02, 0x01, 0x03,
-0xe5, 0x08, 0x01, 0xe5, 0x04, 0x02, 0x06, 0xe5,
-0xe7, 0x03, 0x02, 0x07, 0x01, 0x02, 0x06, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x06, 0x02, 0x04,
-0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x06, 0x07, 0x01, 0x02, 0x04, 0x13, 0x01,
-0x09, 0x07, 0x08, 0x02, 0x06, 0x02, 0x10, 0x01,
-0x1e, 0x04, 0xe5, 0x0c, 0x02, 0x01, 0xe5, 0x02,
-0x04, 0xe6, 0x07, 0xe5, 0xe5, 0x01, 0xe5, 0xe7,
-0x01, 0x04, 0xe5, 0x02, 0x04, 0xe6, 0x06, 0xe5,
-0x05, 0x01, 0x01, 0x01, 0xe5, 0x01, 0x03, 0x05,
-0x01, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x01, 0x05,
-0x01, 0x05, 0x01, 0xe5, 0x07, 0x01, 0x05, 0x03,
-0x09, 0x05, 0x01, 0x01, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x08, 0x06, 0x02, 0x0d, 0x01, 0x01,
-0xe5, 0x21, 0x04, 0x0b, 0xe5, 0xe5, 0x08, 0x07,
-0x01, 0x07, 0x0b, 0x07, 0x01, 0x01, 0x02, 0x04,
-0x04, 0x0e, 0x03, 0x05, 0x03, 0x0f, 0x01, 0x11,
-0x01, 0x03, 0x03, 0x01, 0x03, 0x05, 0x07, 0x01,
-0x03, 0x03, 0x0f, 0xe5, 0x01, 0x01, 0x09, 0x1d,
-0x0e, 0x03, 0xe5, 0x13, 0xe5, 0x07, 0xe5, 0x01,
-0x04, 0xe6, 0x07, 0xe6, 0xe5, 0x03, 0xe5, 0x02,
-0x05, 0xe6, 0x06, 0xe6, 0x04, 0x01, 0xe5, 0x01,
-0x05, 0xe6, 0x06, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe6, 0x05, 0xe7, 0x04, 0x01, 0xe5, 0x03, 0x05,
-0xe6, 0xe5, 0x02, 0xe7, 0x06, 0xe7, 0xe5, 0x04,
-0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x02, 0xe6, 0x02,
-0x05, 0xe6, 0x04, 0x01, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe6, 0x04, 0xe6, 0x06, 0xe6, 0x08, 0xe6,
-0x06, 0xe5, 0x08, 0xe6, 0x22, 0xe6, 0x03, 0x03,
-0xe5, 0x07, 0xe5, 0x04, 0x09, 0x01, 0x09, 0x09,
-0xe5, 0x05, 0x01, 0x09, 0x13, 0x15, 0x09, 0xe5,
-0x01, 0xe5, 0xe6, 0xe7, 0x01, 0x0e, 0x09, 0x03,
-0xe6, 0x02, 0x07, 0x0b, 0x07, 0x01, 0x09, 0xe5,
-0x01, 0x06, 0x04, 0x1c, 0xe6, 0xe5, 0x22, 0x18,
-0x01, 0xe5, 0x0a, 0x09, 0x03, 0x02, 0x02, 0xe5,
-0x07, 0x09, 0x13, 0x06, 0x0b, 0xe5, 0xe5, 0x05,
-0x02, 0xe5, 0x03, 0xe6, 0xe5, 0x05, 0x14, 0x01,
-0x06, 0x0a, 0x08, 0x0a, 0x01, 0x07, 0x07, 0xe5,
-0x05, 0x02, 0x1c, 0xe8, 0x21, 0x04, 0x18, 0x09,
-0x05, 0x01, 0x01, 0x05, 0x03, 0x07, 0x01, 0x09,
-0x0b, 0x03, 0x03, 0x01, 0x02, 0x04, 0x03, 0x01,
-0x0f, 0x05, 0x0d, 0x01, 0x07, 0x09, 0x05, 0x03,
-0x0b, 0x01, 0x01, 0x05, 0x07, 0x01, 0x07, 0xe5,
-0x02, 0xe5, 0x03, 0x03, 0xe5, 0x1b, 0xe6, 0xe5,
-0x02, 0x1f, 0xe5, 0x02, 0x05, 0x09, 0x03, 0x02,
-0x04, 0x09, 0xe5, 0xe5, 0xe5, 0xe6, 0xe9, 0x01,
-0xe5, 0x05, 0x04, 0x06, 0xe5, 0x0b, 0x01, 0x03,
-0x04, 0x01, 0xe5, 0x03, 0xe5, 0xe5, 0x04, 0x02,
-0x01, 0x01, 0x02, 0xe5, 0x01, 0x06, 0x03, 0x01,
-0x02, 0x0c, 0x04, 0x01, 0x03, 0x08, 0x0b, 0xe6,
-0x09, 0x01, 0x07, 0x02, 0x09, 0x02, 0x1e, 0xe6,
-0xe5, 0x37, 0x06, 0xe5, 0xe5, 0x05, 0x01, 0xe5,
-0x1c, 0x10, 0x09, 0x02, 0x07, 0x01, 0x07, 0xe5,
-0x1c, 0x02, 0x01, 0x04, 0x02, 0x10, 0x09, 0x09,
-0x01, 0xe5, 0x05, 0x02, 0x0b, 0x04, 0x02, 0xe5,
-0x08, 0x18, 0xe6, 0x10, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x03,
-0x03, 0x01, 0xe6, 0x01, 0x02, 0xe6, 0x01, 0x04,
-0x01, 0xe6, 0x04, 0x01, 0x07, 0xe6, 0xe5, 0x04,
-0xe7, 0x01, 0x03, 0x01, 0x06, 0xe5, 0xe5, 0x06,
-0x01, 0x06, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5, 0xe5,
-0x01, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x02,
-0x01, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x04, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x01, 0x05, 0xe6, 0x06,
-0x01, 0x0c, 0x01, 0x0c, 0x21, 0x01, 0x04, 0x05,
-0x05, 0xe7, 0x01, 0x03, 0x05, 0x03, 0xe5, 0x0b,
-0xe5, 0xe6, 0x0e, 0x02, 0x09, 0xe6, 0x03, 0x11,
-0x03, 0x13, 0xe5, 0x01, 0xe5, 0x01, 0x05, 0x03,
-0x07, 0xe5, 0x0b, 0xe5, 0x0f, 0x05, 0xe5, 0x01,
-0x04, 0x02, 0x01, 0x05, 0x01, 0x04, 0x04, 0xe5,
-0x16, 0x01, 0xe7, 0x14, 0x07, 0x0c, 0x08, 0x06,
-0x01, 0xe5, 0xe5, 0x06, 0x0b, 0x07, 0x06, 0x07,
-0x04, 0x07, 0x05, 0x03, 0x08, 0x01, 0x07, 0x0b,
-0x09, 0x01, 0x07, 0xe5, 0x09, 0x0b, 0x02, 0x02,
-0x09, 0x09, 0x02, 0x09, 0x08, 0x05, 0x04, 0x04,
-0x04, 0x02, 0x06, 0x10, 0x01, 0xe7, 0xe5, 0x2f,
-0x09, 0x01, 0x01, 0x07, 0x02, 0x09, 0xe5, 0xe5,
-0x02, 0x0f, 0x01, 0x06, 0xe5, 0x06, 0x03, 0x07,
-0x09, 0x03, 0x04, 0x29, 0xe5, 0x04, 0x07, 0x05,
-0x08, 0xe5, 0xe5, 0xe5, 0x08, 0x0b, 0x07, 0x01,
-0x04, 0x03, 0x1d, 0xe6, 0x06, 0x01, 0x1c, 0x01,
-0x0b, 0x01, 0x07, 0x02, 0x06, 0x18, 0x02, 0x13,
-0x05, 0x02, 0x04, 0xe5, 0x03, 0x01, 0x01, 0xe5,
-0x06, 0x08, 0x01, 0x01, 0x13, 0x01, 0xe5, 0x05,
-0x03, 0xe5, 0x05, 0x02, 0x02, 0x01, 0xe5, 0x04,
-0xe5, 0x08, 0x0b, 0xe5, 0x03, 0x01, 0x01, 0x07,
-0x0b, 0x07, 0x01, 0x0d, 0xe6, 0x01, 0x33, 0x03,
-0x04, 0xe5, 0x02, 0x05, 0x04, 0x02, 0x01, 0x11,
-0x0b, 0x0a, 0x09, 0x06, 0xe5, 0xe5, 0xe5, 0xe5,
-0x03, 0x01, 0x05, 0x01, 0x05, 0x04, 0x09, 0xe5,
-0x06, 0xe6, 0x01, 0x03, 0x0a, 0x05, 0x03, 0x05,
-0x05, 0x03, 0x08, 0x04, 0x03, 0x01, 0x0a, 0x06,
-0x05, 0x05, 0x03, 0x0a, 0x01, 0xe7, 0x1b, 0x08,
-0x0e, 0x01, 0x03, 0x05, 0xe5, 0x01, 0x05, 0x08,
-0xe5, 0x02, 0x04, 0xe5, 0x08, 0x02, 0x06, 0x03,
-0x05, 0x03, 0x03, 0x01, 0x03, 0x05, 0x03, 0x02,
-0xe5, 0x02, 0x03, 0x03, 0x01, 0x02, 0x06, 0x07,
-0x01, 0x09, 0x09, 0x07, 0x0b, 0x09, 0x09, 0x0d,
-0xe5, 0x07, 0xe5, 0x02, 0xe5, 0x01, 0x04, 0x0f,
-0x01, 0xe7, 0x19, 0x04, 0x0e, 0x06, 0x02, 0x06,
-0x07, 0x01, 0x04, 0xe5, 0x02, 0x02, 0x06, 0x06,
-0x02, 0x02, 0x06, 0x09, 0x02, 0xe5, 0x04, 0x09,
-0x02, 0x05, 0xe5, 0xe5, 0x08, 0x02, 0x06, 0x03,
-0x05, 0x04, 0x04, 0x02, 0x06, 0x0e, 0x04, 0x02,
-0x0b, 0x07, 0x06, 0x02, 0x04, 0x01, 0x01, 0x07,
-0x01, 0x03, 0x03, 0x01, 0x0e, 0xe6, 0xe5, 0x2f,
-0x06, 0xe5, 0x01, 0x03, 0x02, 0x02, 0x01, 0x03,
-0xe5, 0xe7, 0xe5, 0x01, 0x06, 0x02, 0x09, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x02, 0x04, 0xe5,
-0x02, 0x04, 0xe5, 0x05, 0x01, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x01, 0x04, 0x02, 0x03, 0x02, 0x02,
-0x01, 0x03, 0xe5, 0x01, 0x0a, 0xe5, 0x03, 0x02,
-0x03, 0x05, 0xe6, 0x06, 0x08, 0x02, 0x02, 0x0f,
-0xe5, 0x10, 0x03, 0x03, 0x16, 0x09, 0x14, 0xe5,
-0x05, 0xe5, 0x03, 0x03, 0xe5, 0xe5, 0x0d, 0x01,
-0x08, 0x01, 0x09, 0xe6, 0x06, 0x0b, 0x04, 0x03,
-0xe6, 0x02, 0xe5, 0x01, 0x02, 0x07, 0xe6, 0xe5,
-0x05, 0xe6, 0x05, 0xe5, 0x07, 0xe6, 0x07, 0xe5,
-0x06, 0x10, 0x09, 0x01, 0xe5, 0x0a, 0x19, 0x14,
-0xe5, 0xe5, 0x02, 0x07, 0x19, 0x0f, 0x01, 0x0e,
-0x03, 0x26, 0xe5, 0x12, 0x03, 0x06, 0x07, 0x02,
-0x08, 0x01, 0x09, 0x07, 0x09, 0xe5, 0x07, 0x01,
-0x03, 0x09, 0x0b, 0x09, 0x06, 0x01, 0xe5, 0x02,
-0x06, 0x25, 0x01, 0xe7, 0x07, 0x09, 0x09, 0x06,
-0x10, 0x01, 0x06, 0x06, 0x02, 0xe5, 0xe5, 0x03,
-0x04, 0x03, 0x05, 0x06, 0xe5, 0xe5, 0x04, 0xe6,
-0xe5, 0x05, 0xe5, 0xe5, 0x02, 0xe5, 0xe6, 0xe5,
-0x03, 0x01, 0xe5, 0xe5, 0x0f, 0x09, 0x09, 0x09,
-0x09, 0xe5, 0x09, 0x10, 0xe5, 0x07, 0x05, 0xe5,
-0x11, 0x07, 0x01, 0x0a, 0x0e, 0x01, 0xe5, 0x09,
-0x2a, 0x01, 0x01, 0x07, 0x02, 0x04, 0x01, 0xe5,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x02, 0x03, 0x04, 0x02, 0x06, 0xe5, 0x01,
-0x02, 0x02, 0x09, 0x09, 0xe5, 0x02, 0xe6, 0x01,
-0x0a, 0x0f, 0x02, 0x08, 0xe5, 0x08, 0x09, 0x03,
-0x05, 0x0b, 0x0c, 0x02, 0xe5, 0x05, 0x39, 0x14,
-0x09, 0x0b, 0x02, 0x13, 0x19, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0c, 0x09, 0x06, 0x0a, 0x09, 0x07,
-0x01, 0x06, 0x02, 0x18, 0xe6, 0xe5, 0xe6, 0x0c,
-0x09, 0xe6, 0x06, 0xe5, 0x0b, 0xe5, 0xe5, 0x02,
-0x01, 0xe5, 0x01, 0x03, 0x02, 0x01, 0xe5, 0x02,
-0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x02, 0x02,
-0xe5, 0xe5, 0x08, 0x03, 0x05, 0x09, 0x09, 0x06,
-0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0xe5, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x02, 0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0x07, 0x08,
-0xe5, 0x07, 0x09, 0x03, 0xe5, 0x28, 0x02, 0xe5,
-0x09, 0x02, 0xe5, 0xe6, 0xe5, 0xe5, 0x0e, 0xe5,
-0x07, 0xe5, 0x04, 0x05, 0xe5, 0x04, 0x01, 0x02,
-0xe5, 0x07, 0x01, 0x02, 0x01, 0x02, 0x04, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x01, 0x07, 0x09,
-0x01, 0x02, 0xe5, 0x02, 0x04, 0xe5, 0x02, 0x02,
-0x06, 0x02, 0x08, 0x09, 0xe5, 0x02, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x08, 0xe6,
-0x19, 0xe5, 0x2c, 0x01, 0xe5, 0x0a, 0x01, 0x02,
-0xe5, 0xe6, 0x01, 0x01, 0x16, 0x11, 0x04, 0x04,
-0x04, 0x04, 0x02, 0x01, 0x04, 0x01, 0xe5, 0xe5,
-0x03, 0x04, 0x04, 0x04, 0x04, 0x02, 0x01, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06,
-0x01, 0x02, 0x04, 0x02, 0x01, 0x04, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0x02, 0x04, 0x01, 0x02, 0x02,
-0x09, 0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x0b, 0x02,
-0x09, 0xe6, 0x01, 0x06, 0x01, 0x06, 0xe5, 0x01,
-0x01, 0x07, 0x03, 0x02, 0xe5, 0x02, 0x04, 0xe5,
-0xe6, 0x01, 0x28, 0x06, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x04, 0xe5, 0x01, 0x01,
-0x04, 0x0c, 0x06, 0x0c, 0x13, 0x01, 0x07, 0x06,
-0x06, 0x02, 0xe6, 0xe7, 0x09, 0x20, 0x03, 0x02,
-0x02, 0x02, 0x06, 0x02, 0x06, 0x02, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x06, 0x02,
-0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0x04, 0x02, 0xe5, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0x02, 0x02, 0x06, 0x02, 0x03, 0x02,
-0x02, 0x01, 0x01, 0xe5, 0x03, 0x0c, 0x01, 0x0f,
-0x01, 0xe6, 0x11, 0xe5, 0x01, 0x01, 0x07, 0x01,
-0x0c, 0x07, 0x02, 0xe6, 0x01, 0x06, 0x01, 0xe5,
-0x1d, 0x03, 0x04, 0xe5, 0x02, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x02, 0x01, 0xe5, 0x02, 0x02,
-0x01, 0xe5, 0x02, 0x05, 0x03, 0x05, 0x03, 0x02,
-0x01, 0xe5, 0x02, 0x04, 0xe5, 0x02, 0x02, 0x01,
-0x02, 0x03, 0x02, 0x01, 0xe5, 0x02, 0x05, 0x03,
-0x04, 0xe5, 0x02, 0x01, 0x01, 0xe6, 0x02, 0x01,
-0x02, 0xe5, 0x02, 0x09, 0x05, 0x03, 0x09, 0x02,
-0x01, 0xe5, 0x02, 0x01, 0x02, 0x04, 0x01, 0x01,
-0xe6, 0x01, 0x06, 0x02, 0x0a, 0x09, 0x02, 0x03,
-0x02, 0x2a, 0x04, 0xe7, 0x02, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x09, 0x06, 0x01, 0xe5, 0x02, 0x05,
-0x03, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x02, 0x06,
-0x01, 0xe5, 0x05, 0xe7, 0x05, 0x01, 0x02, 0x09,
-0x09, 0x04, 0x02, 0x01, 0x06, 0x02, 0x0b, 0x01,
-0x01, 0xe5, 0x01, 0x01, 0x18, 0x01, 0xe5, 0x03,
-0x04, 0x09, 0x06, 0x02, 0x01, 0x02, 0x14, 0xe5,
-0xe7, 0x12, 0xe5, 0x15, 0x0b, 0x02, 0x01, 0xe6,
-0x01, 0x02, 0x02, 0x03, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0xe5, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02,
-0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x01, 0xe5,
-0xe5, 0xe5, 0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x01,
-0x01, 0xe5, 0x07, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe7, 0x03, 0x01, 0xe8, 0x02, 0x01,
-0xe7, 0x03, 0x02, 0x04, 0x01, 0x17, 0xe5, 0x18,
-0xe5, 0x01, 0xe7, 0xe7, 0x15, 0x02, 0xe6, 0x03,
-0xe5, 0x2d, 0x02, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x05, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0x13, 0x02, 0x10, 0xe5, 0x07, 0x06,
-0x02, 0x02, 0x03, 0x16, 0x02, 0x01, 0x05, 0x32,
-0xe5, 0x07, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x06, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x1c, 0x09,
-0xe5, 0x07, 0x01, 0x03, 0x0a, 0x02, 0xe5, 0x11,
-0x02, 0xe6, 0x0d, 0x09, 0x09, 0x09, 0x02, 0x03,
-0xe5, 0xe7, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6,
-0x06, 0x06, 0x02, 0x09, 0x03, 0x05, 0x04, 0x01,
-0x02, 0x02, 0xe6, 0xe5, 0x01, 0xe5, 0x04, 0x02,
-0xe6, 0x01, 0x01, 0x02, 0x04, 0x01, 0x06, 0xe5,
-0x01, 0xe5, 0x32, 0x01, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x11, 0xe5, 0x08, 0x09, 0x09,
-0x10, 0x02, 0x09, 0x09, 0x04, 0x06, 0x35, 0x09,
-0x02, 0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x06, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0x0e,
-0x08, 0x0a, 0x07, 0x14, 0x08, 0x0b, 0x08, 0x02,
-0xe5, 0x1d, 0x02, 0x01, 0x04, 0x0e, 0xe7, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0x01, 0x04, 0x02, 0xe6,
-0x03, 0x02, 0xe6, 0x02, 0xe5, 0x01, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6,
-0x03, 0x02, 0x01, 0x05, 0xe5, 0x01, 0x01, 0x04,
-0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6,
-0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x02, 0xe5,
-0xe5, 0x03, 0x02, 0x13, 0x01, 0x07, 0x01, 0x0a,
-0xe5, 0x01, 0x05, 0x19, 0xe6, 0x20, 0x01, 0xe5,
-0x0f, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x04, 0x02,
-0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01,
-0xe5, 0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x03,
-0xe5, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x01, 0x01, 0xe5, 0x01, 0xe5, 0x04, 0x01,
-0xe5, 0x07, 0x01, 0x07, 0xe5, 0x02, 0x02, 0x01,
-0x01, 0x05, 0x01, 0xe5, 0x07, 0x01, 0x05, 0x03,
-0x04, 0x03, 0x0d, 0xe5, 0x01, 0xe5, 0x11, 0x0d,
-0x01, 0x15, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09,
-0xe5, 0x07, 0x09, 0xe5, 0x07, 0x0b, 0x09, 0x09,
-0x01, 0x07, 0x01, 0x07, 0xe5, 0x07, 0x01, 0x01,
-0xe5, 0x01, 0x01, 0x04, 0x04, 0x04, 0x04, 0x07,
-0x01, 0x13, 0x04, 0x1d, 0x01, 0x01, 0x15, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x05,
-0xe7, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0x03, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0x03, 0xe7, 0x01,
-0xe5, 0x01, 0xe7, 0x01, 0x03, 0xe7, 0x01, 0x03,
-0xe7, 0xe5, 0x01, 0x04, 0xe6, 0x01, 0xe5, 0x01,
-0xe7, 0x01, 0x04, 0xe6, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe6,
-0x04, 0xe7, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe5,
-0x01, 0x03, 0xe7, 0x01, 0xe5, 0x01, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe5, 0x01, 0x2e,
-0xe5, 0x04, 0x01, 0x06, 0x02, 0xe6, 0x03, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe6, 0x03,
-0x02, 0xe5, 0x04, 0x02, 0xe6, 0x03, 0x02, 0xe5,
-0x04, 0x02, 0x06, 0x02, 0xe5, 0x04, 0x04, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x04, 0x03, 0x0f,
-0x03, 0x06, 0x01, 0x07, 0x01, 0xe5, 0x04, 0x03,
-0xe5, 0x03, 0x02, 0x09, 0x12, 0x35, 0x01, 0x03,
-0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0xe5,
-0x01, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x01, 0xe5,
-0x03, 0xe5, 0x04, 0x02, 0x03, 0x01, 0xe5, 0x01,
-0xe5, 0x04, 0x02, 0xe5, 0x07, 0x09, 0x05, 0xe5,
-0x0e, 0x02, 0xe5, 0x09, 0x01, 0x02, 0x04, 0x01,
-0xe5, 0x01, 0x01, 0xe5, 0x04, 0xe5, 0xe7, 0x03,
-0x04, 0x14, 0xe5, 0x33, 0x03, 0x02, 0xe5, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0xe5,
-0xe5, 0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x02, 0x02,
-0xe5, 0xe5, 0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x02,
-0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0x01, 0xe5,
-0x02, 0x02, 0x02, 0x02, 0xe5, 0x01, 0xe5, 0xe5,
-0x02, 0x02, 0x02, 0x03, 0x05, 0x03, 0x05, 0x02,
-0xe5, 0x02, 0x04, 0x0c, 0xe6, 0x03, 0x08, 0x0e,
-0xe5, 0x08, 0x0d, 0x0f, 0x01, 0xe5, 0x23, 0x09,
-0x08, 0x03, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x05, 0x09, 0x05, 0x03,
-0x06, 0x02, 0x09, 0x09, 0x05, 0xe5, 0x04, 0x0c,
-0x06, 0x06, 0x01, 0xe5, 0x08, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x0b, 0x10, 0xe6, 0xe5, 0x45, 0x10,
-0x20, 0x06, 0x0c, 0x07, 0x05, 0x08, 0x2c, 0x0d,
-0x02, 0xe5, 0xe5, 0x0f, 0xe5, 0xe5, 0x08, 0x06,
-0xe5, 0xe5, 0x05, 0x02, 0x06, 0xe5, 0xe5, 0x09,
-0x04, 0x01, 0x0b, 0x05, 0x01, 0x07, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01,
-0xe5, 0x04, 0xe5, 0xe5, 0x06, 0xe7, 0xe5, 0x03,
-0xe7, 0xe5, 0x03, 0x01, 0x01, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe7, 0x05, 0x01, 0x01, 0x05, 0xe6,
-0xe5, 0x04, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0x01, 0x02,
-0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x04, 0x01, 0x03,
-0x03, 0x01, 0x01, 0x05, 0x01, 0x01, 0xe6, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x0b, 0x02, 0x02, 0x13, 0x09, 0x20, 0xe5,
-0x02, 0x05, 0x03, 0x01, 0x02, 0xe5, 0xe5, 0x05,
-0x04, 0x04, 0x09, 0xe5, 0x07, 0xe5, 0xe5, 0xe5,
-0x0d, 0x0c, 0x02, 0x05, 0xe5, 0x13, 0x01, 0x0d,
-0x02, 0x08, 0xe5, 0x11, 0xe5, 0x0f, 0x10, 0x02,
-0x1c, 0xe7, 0x1c, 0x21, 0x09, 0x02, 0x02, 0x02,
-0x03, 0xe5, 0x02, 0x02, 0x02, 0x03, 0x0b, 0x03,
-0x04, 0x01, 0x06, 0x05, 0xe5, 0xe5, 0x02, 0x0a,
-0x02, 0x06, 0xe5, 0x09, 0x0c, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x03, 0x10, 0x02, 0x01, 0x06, 0x05,
-0x03, 0x04, 0xe5, 0x1f, 0x07, 0x01, 0xe7, 0x02,
-0xe5, 0x28, 0x03, 0x05, 0x03, 0x04, 0x0a, 0x05,
-0x02, 0x0a, 0x08, 0x02, 0x01, 0x04, 0x01, 0x0d,
-0x05, 0x0a, 0x0b, 0x0c, 0x05, 0x0a, 0x0d, 0x05,
-0x05, 0x03, 0x09, 0x03, 0x03, 0x28, 0x02, 0x13,
-0xe5, 0xe6, 0x01, 0x01, 0x03, 0x14, 0x05, 0x13,
-0x05, 0x03, 0x01, 0x0f, 0x04, 0x06, 0x01, 0xe5,
-0x03, 0xe8, 0x06, 0x02, 0x02, 0x03, 0xe6, 0x02,
-0x0b, 0x01, 0x01, 0x04, 0x05, 0x06, 0x01, 0x06,
-0xe7, 0x06, 0x01, 0xe5, 0x01, 0x01, 0x01, 0x01,
-0xe5, 0x05, 0xe5, 0x06, 0xe5, 0xe6, 0x05, 0xe7,
-0x07, 0xe5, 0x03, 0x03, 0x01, 0x07, 0x02, 0x04,
-0xe6, 0x06, 0x09, 0xe6, 0x0c, 0xe5, 0x02, 0xe5,
-0x01, 0x1d, 0x05, 0x0a, 0x08, 0xe5, 0x0f, 0x03,
-0x04, 0x0b, 0x05, 0x11, 0xe5, 0x03, 0x0e, 0x01,
-0x02, 0x05, 0x07, 0x01, 0xe5, 0xe5, 0x01, 0x05,
-0x03, 0xe5, 0xe5, 0xe5, 0xe5, 0x07, 0x01, 0x0b,
-0x05, 0xe5, 0x02, 0x04, 0x03, 0xe5, 0xe5, 0xe5,
-0x08, 0x05, 0x03, 0x05, 0x04, 0x04, 0x05, 0x08,
-0x10, 0x02, 0xe5, 0x1b, 0x12, 0x04, 0x09, 0x05,
-0x01, 0xe5, 0x01, 0x04, 0x05, 0x06, 0x02, 0x01,
-0x01, 0x05, 0x06, 0x02, 0x01, 0x09, 0x01, 0x05,
-0x04, 0x03, 0x05, 0x01, 0x03, 0x02, 0x05, 0xe5,
-0x02, 0x13, 0x04, 0xe5, 0x12, 0x05, 0x02, 0xe5,
-0x08, 0x01, 0xe5, 0x0e, 0xe5, 0x03, 0x07, 0x1e,
-0x02, 0xe7, 0x10, 0x1e, 0x17, 0xe5, 0x1f, 0x20,
-0x0c, 0x01, 0x05, 0x03, 0x01, 0x14, 0x06, 0x03,
-0x0a, 0x04, 0xe5, 0x07, 0x02, 0x06, 0xe5, 0x0a,
-0x35, 0xe6, 0xe5, 0x02, 0x06, 0x10, 0x2a, 0x02,
-0x10, 0x01, 0x05, 0x01, 0x01, 0x06, 0x1e, 0x05,
-0x06, 0x10, 0x09, 0x0e, 0x0d, 0x04, 0xe5, 0x05,
-0x04, 0x09, 0x16, 0x0d, 0x05, 0x08, 0x0d, 0xe5,
-0xe6, 0x16, 0x0c, 0x0f, 0xe6, 0x0a, 0x04, 0x08,
-0xe8, 0x11, 0x01, 0x11, 0x02, 0x02, 0x16, 0xe8,
-0x0a, 0x0f, 0x03, 0x0e, 0x01, 0x01, 0x03, 0x08,
-0x09, 0x06, 0xe5, 0x0c, 0xe7, 0x04, 0x01, 0x08,
-0x0e, 0x0e, 0xe5, 0xe5, 0x17, 0x17, 0x05, 0x02,
-0x1a, 0x05, 0x06, 0x06, 0x14, 0x1b, 0x03, 0x04,
-0x01, 0x14, 0x06, 0x06, 0x02, 0x03, 0x0d, 0x1e,
-0x05, 0x2d, 0xe8, 0x23, 0x01, 0x09, 0x09, 0x06,
-0x01, 0x08, 0x04, 0x02, 0x0a, 0x06, 0x01, 0x28,
-0x05, 0x04, 0xe5, 0x01, 0x06, 0x02, 0x06, 0x08,
-0x09, 0xe5, 0x15, 0xe5, 0x0b, 0x01, 0xe5, 0x02,
-0x04, 0x08, 0x06, 0xe5, 0x25, 0x01, 0xe5, 0x2e,
-0x0a, 0x12, 0x07, 0x02, 0x09, 0x06, 0x04, 0x09,
-0x14, 0x0c, 0x02, 0xe5, 0x05, 0x01, 0x06, 0x0b,
-0x02, 0xe5, 0x04, 0x01, 0xe6, 0x01, 0x03, 0x03,
-0x0d, 0x01, 0x06, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x09, 0x07, 0x01, 0x0c, 0x15, 0xe8, 0x30, 0x21,
-0xe5, 0x02, 0x0f, 0x1b, 0x11, 0x07, 0x14, 0x1a,
-0x16, 0x07, 0x07, 0xe5, 0x09, 0x0c, 0x08, 0xe5,
-0x14, 0xe6, 0xe7, 0x17, 0xe5, 0x0e, 0x16, 0xe5,
-0x11, 0x06, 0x02, 0xe5, 0x07, 0xe8, 0x01, 0x02,
-0xe5, 0x07, 0x03, 0xe5, 0x04, 0x05, 0x0c, 0x02,
-0x0a, 0x07, 0x09, 0xe5, 0xe6, 0x04, 0x09, 0xe5,
-0x07, 0xe6, 0x09, 0xe5, 0x04, 0x03, 0xe5, 0x0d,
-0xe5, 0x15, 0x01, 0x03, 0xe5, 0x09, 0xe6, 0xe7,
-0x01, 0x01, 0x15, 0x10, 0x10, 0x01, 0x04, 0x02,
-0xe5, 0x14, 0x03, 0x05, 0xe5, 0x01, 0x02, 0xe5,
-0xe5, 0x02, 0x05, 0xe5, 0x04, 0x01, 0xe6, 0x01,
-0x05, 0x0a, 0x01, 0x01, 0x0d, 0x01, 0xe6, 0x07,
-0xe5, 0xe5, 0x12, 0x01, 0xe6, 0x06, 0x04, 0xe5,
-0x03, 0xe5, 0x08, 0xe5, 0x0e, 0x05, 0xe5, 0x0d,
-0xe5, 0x0d, 0x01, 0x04, 0xe6, 0x03, 0x26, 0x13,
-0x01, 0x1b, 0x0b, 0x02, 0x04, 0x0b, 0x09, 0x07,
-0x05, 0xe5, 0x03, 0x01, 0x02, 0xe6, 0x03, 0x09,
-0x09, 0x04, 0x01, 0x05, 0x01, 0xe5, 0x02, 0x0b,
-0x07, 0x04, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x06,
-0xe5, 0x01, 0x01, 0x09, 0x0b, 0x07, 0x04, 0xe5,
-0xe6, 0x01, 0x28, 0x10, 0x02, 0x01, 0x1b, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x05, 0xe5, 0x03, 0x06,
-0xe5, 0xe5, 0x08, 0x09, 0x10, 0xe5, 0xe5, 0x05,
-0xe5, 0x0a, 0x10, 0xe5, 0xe5, 0xe5, 0x0d, 0x02,
-0x01, 0x04, 0xe5, 0xe5, 0x16, 0x03, 0x02, 0x2b,
-0x11, 0x0b, 0x01, 0x11, 0x0b, 0x04, 0x01, 0xe5,
-0x0a, 0x04, 0x01, 0x02, 0x02, 0x01, 0x01, 0x05,
-0x0b, 0x04, 0x04, 0x01, 0x01, 0x02, 0x03, 0x02,
-0x02, 0x0a, 0x19, 0xe5, 0xe5, 0x03, 0x01, 0x1c,
-0xe5, 0x01, 0x0d, 0x02, 0x11, 0x02, 0xe5, 0x01,
-0x28, 0x03, 0x13, 0x05, 0x01, 0x01, 0x0f, 0x03,
-0x05, 0x03, 0x01, 0x02, 0xe5, 0x02, 0x05, 0x03,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x02, 0x04, 0x06,
-0x04, 0x07, 0x02, 0x03, 0xe5, 0x02, 0x02, 0x01,
-0xe5, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x04, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x01, 0xe6, 0xe5, 0xe5,
-0x08, 0x09, 0x09, 0x02, 0xe7, 0x02, 0x01, 0x02,
-0x04, 0x13, 0x02, 0x02, 0xe6, 0x26, 0x02, 0x13,
-0x01, 0x07, 0x01, 0x11, 0x06, 0x01, 0x02, 0x07,
-0x04, 0x06, 0x03, 0xe5, 0x03, 0x01, 0x09, 0x0e,
-0x02, 0x01, 0x05, 0x03, 0x03, 0xe5, 0x03, 0x02,
-0x0c, 0x03, 0x07, 0x01, 0x07, 0x01, 0x07, 0x06,
-0x02, 0x01, 0x09, 0x02, 0x04, 0x01, 0x09, 0x17,
-0xe6, 0x01, 0x27, 0xe6, 0xe5, 0x12, 0x01, 0x07,
-0x01, 0x0d, 0xe5, 0x01, 0x06, 0x01, 0xe5, 0x08,
-0x09, 0x06, 0x02, 0x04, 0x01, 0x01, 0x0b, 0x04,
-0xe5, 0xe6, 0xe5, 0xe5, 0x01, 0xe6, 0x01, 0x06,
-0x02, 0x05, 0xe5, 0x04, 0x06, 0x0b, 0x03, 0xe5,
-0x01, 0x01, 0x07, 0x06, 0xe5, 0xe5, 0xe5, 0x06,
-0x09, 0x01, 0x07, 0x17, 0xe5, 0xe5, 0xe7, 0x44,
-0x09, 0x33, 0x04, 0x0c, 0x08, 0x02, 0x01, 0xe5,
-0x05, 0x0b, 0x0e, 0x02, 0x02, 0x06, 0x02, 0x06,
-0x15, 0x07, 0x02, 0x1a, 0x02, 0x12, 0xe7, 0x45,
-0xe6, 0x06, 0x01, 0x25, 0x0f, 0xe5, 0x0b, 0x01,
-0x05, 0xe5, 0x01, 0x09, 0xe6, 0x16, 0x03, 0xe5,
-0x07, 0xe5, 0x09, 0x1b, 0x31, 0xe5, 0xe7, 0x0d,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x03, 0x05,
-0x09, 0x09, 0x09, 0x05, 0x03, 0x09, 0xe6, 0x03,
-0x02, 0x03, 0x04, 0x02, 0xe5, 0x01, 0x05, 0x04,
-0x01, 0x02, 0x09, 0x09, 0xe5, 0x02, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x06, 0x02, 0x09, 0x06, 0x02,
-0x02, 0x02, 0x03, 0x02, 0x06, 0x04, 0x01, 0x02,
-0x09, 0x0d, 0x02, 0x01, 0x02, 0x88, 0x0c, 0x15,
-0x13, 0x09, 0x09, 0x06, 0x0c, 0x06, 0x0c, 0x09,
-0x09, 0x18, 0x06, 0x97, 0x02, 0x04, 0x0d, 0x11,
-0x09, 0x09, 0x13, 0x15, 0x08, 0x08, 0x1e, 0xe5,
-0xe6, 0xe5, 0x11, 0x09, 0x1d, 0x01, 0xe5, 0xe5,
-0x03, 0x02, 0x01, 0x09, 0x0e, 0x04, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0xe7, 0x0a, 0x04, 0x02,
-0xe6, 0xe5, 0x01, 0x01, 0x02, 0x06, 0x04, 0x04,
-0x09, 0xe6, 0x01, 0x02, 0x01, 0x04, 0x0e, 0x04,
-0x04, 0x09, 0x09, 0x09, 0x09, 0x16, 0x03, 0xe6,
-0x3e, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x04, 0x02,
-0xe5, 0x11, 0xe5, 0x05, 0x01, 0xe5, 0x02, 0x02,
-0x01, 0xe5, 0x05, 0x01, 0xe6, 0x08, 0x04, 0x02,
-0x02, 0xe5, 0x04, 0x01, 0x01, 0x02, 0x02, 0x02,
-0x08, 0xe5, 0x0c, 0x02, 0x01, 0x01, 0x02, 0x05,
-0x06, 0x01, 0xe5, 0x08, 0x09, 0x05, 0x03, 0x03,
-0x02, 0x01, 0xe5, 0x05, 0x02, 0x17, 0xe8, 0x45,
-0x09, 0x04, 0x04, 0x0b, 0x02, 0x04, 0x0c, 0x01,
-0x07, 0x01, 0x01, 0x01, 0x0e, 0x04, 0x02, 0x0e,
-0x09, 0x13, 0x06, 0x02, 0x09, 0x09, 0x04, 0x01,
-0x0c, 0x09, 0x22, 0x01, 0x01, 0x14, 0xe6, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x05, 0x01, 0x01,
-0x01, 0x05, 0xe6, 0xe5, 0x02, 0x01, 0xe5, 0x07,
-0xe5, 0x09, 0xe5, 0x05, 0xe6, 0xe5, 0x06, 0xe5,
-0x01, 0x05, 0xe5, 0x02, 0x04, 0xe6, 0xe5, 0x02,
-0xe8, 0x06, 0xe6, 0xe5, 0x02, 0xe5, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe6, 0xe5, 0x02,
-0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0x03, 0x16,
-0x03, 0x09, 0xe5, 0x11, 0x04, 0x01, 0x01, 0x07,
-0x01, 0x09, 0xe5, 0x08, 0xe5, 0x06, 0xe5, 0x03,
-0x01, 0x01, 0x03, 0x01, 0x04, 0x0c, 0x01, 0x01,
-0x02, 0x0b, 0x08, 0x05, 0x03, 0x09, 0xe6, 0x0e,
-0x01, 0x0a, 0xe5, 0x06, 0x03, 0xe5, 0x03, 0x13,
-0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0x19, 0x01, 0xe5, 0x37, 0x02, 0x03, 0x01,
-0x07, 0x01, 0x09, 0xe5, 0x11, 0xe5, 0x01, 0x03,
-0x01, 0x06, 0x03, 0x0a, 0x07, 0x02, 0x06, 0x04,
-0x06, 0x02, 0x01, 0x01, 0xe5, 0x0a, 0x11, 0x01,
-0x01, 0x04, 0x0a, 0x01, 0x06, 0x17, 0x02, 0x02,
-0xe5, 0xe5, 0x04, 0xe6, 0x19, 0x03, 0x14, 0x05,
-0x22, 0x17, 0x13, 0x05, 0x09, 0x13, 0x04, 0x07,
-0x03, 0x08, 0x03, 0x01, 0x03, 0x09, 0x13, 0x03,
-0xe6, 0x0c, 0x05, 0xe5, 0x01, 0x13, 0x05, 0x03,
-0xe5, 0x03, 0x1e, 0x01, 0x0c, 0x07, 0x05, 0x09,
-0x13, 0x02, 0x06, 0x09, 0x08, 0xe5, 0x08, 0x08,
-0xe5, 0x01, 0x06, 0x02, 0xe5, 0x04, 0x0c, 0x0f,
-0x0b, 0x04, 0x02, 0x02, 0x08, 0xe5, 0x11, 0x03,
-0xe7, 0x02, 0x06, 0x01, 0x03, 0x06, 0x09, 0x09,
-0x02, 0xe5, 0x01, 0x01, 0xe5, 0x02, 0x21, 0x1e,
-0x06, 0x05, 0x01, 0xe5, 0x2d, 0xe5, 0xe6, 0x0e,
-0x01, 0xe5, 0x19, 0x02, 0x07, 0xe5, 0x01, 0x0b,
-0x18, 0x02, 0xe5, 0x02, 0x0b, 0xe5, 0xe5, 0x0f,
-0xe5, 0xe5, 0x27, 0x13, 0x02, 0xe6, 0xe5, 0xe5,
-0x0e, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0x07, 0x01, 0x01, 0x04, 0xe5, 0xe5, 0x06,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x01, 0x03, 0x01,
-0x07, 0x01, 0x03, 0x03, 0x01, 0xe5, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x07,
-0x01, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x04, 0x01,
-0x01, 0x04, 0xe5, 0xe5, 0x06, 0x01, 0x01, 0x01,
-0x03, 0x01, 0x06, 0xe5, 0xe5, 0x02, 0x03, 0x01,
-0x07, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0x07, 0x01, 0x01, 0x06, 0x04,
-0xe5, 0x19, 0x19, 0x18, 0x0b, 0x01, 0x0d, 0xe5,
-0x02, 0x04, 0xe5, 0xe5, 0x02, 0x06, 0xe5, 0xe5,
-0x01, 0xe6, 0x04, 0xe8, 0x02, 0x05, 0x25, 0xe5,
-0x03, 0x02, 0x04, 0xe5, 0x1f, 0x0e, 0x08, 0x22,
-0x03, 0xe5, 0x15, 0x10, 0x1d, 0x08, 0x08, 0xe5,
-0x01, 0x08, 0x01, 0x01, 0x04, 0x01, 0xe5, 0x0c,
-0x01, 0xe5, 0x02, 0xe5, 0x05, 0xe5, 0x06, 0x08,
-0xe5, 0xe5, 0x09, 0x0e, 0x0b, 0x13, 0x09, 0x07,
-0xe5, 0xe5, 0x0b, 0x0b, 0x21, 0xe6, 0xe6, 0x3d,
-0x09, 0x05, 0x0c, 0x09, 0x04, 0x01, 0x05, 0x07,
-0x09, 0x05, 0x03, 0x01, 0x01, 0x02, 0x02, 0x03,
-0x02, 0x01, 0x20, 0x09, 0x09, 0x58, 0x02, 0x05,
-0x03, 0x42, 0x13, 0x09, 0x0d, 0x02, 0x02, 0x06,
-0x02, 0xe5, 0x04, 0x01, 0x04, 0x04, 0x01, 0x03,
-0x03, 0x01, 0xe5, 0x08, 0x0b, 0x06, 0xe5, 0x05,
-0x09, 0xe6, 0x0a, 0x09, 0x02, 0x04, 0xe5, 0x0e,
-0x26, 0xe7, 0x04, 0x02, 0x35, 0x12, 0x0a, 0x09,
-0x0f, 0x06, 0x06, 0x02, 0x0a, 0x04, 0x07, 0x04,
-0x02, 0x0f, 0x18, 0x07, 0x10, 0x07, 0x03, 0x3b,
-0xe5, 0x12, 0x09, 0x09, 0x27, 0x0f, 0x03, 0x0e,
-0xe5, 0x17, 0x02, 0x09, 0x03, 0x07, 0x01, 0x12,
-0xe5, 0x01, 0x04, 0xe6, 0x09, 0x28, 0x15, 0x1f,
-0x02, 0x01, 0xe5, 0x01, 0x06, 0x07, 0x05, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x06, 0x07, 0x06, 0xe6,
-0x06, 0x01, 0x02, 0xe5, 0x0f, 0x0a, 0x08, 0x08,
-0xe5, 0xe5, 0x05, 0x01, 0x02, 0x0c, 0x0b, 0x01,
-0x01, 0x12, 0x06, 0x01, 0xe5, 0x12, 0x09, 0x2b,
-0x01, 0x01, 0x64, 0x0a, 0x05, 0x1f, 0x03, 0x01,
-0x0c, 0x05, 0x11, 0x1b, 0x0d, 0x08, 0xe5, 0x03,
-0x2e, 0x05, 0x01, 0x01, 0x08, 0x0d, 0x09, 0x09,
-0x09, 0x09, 0x09, 0xe7, 0x04, 0xe5, 0x09, 0xe5,
-0x0c, 0x18, 0xe5, 0x04, 0x01, 0x09, 0xe5, 0xe6,
-0xe5, 0x05, 0x01, 0x02, 0x04, 0xe5, 0x07, 0xe5,
-0x06, 0x08, 0xe7, 0x07, 0xe6, 0x06, 0xe5, 0x1e,
-0x06, 0xe6, 0x06, 0xe5, 0x0c, 0x05, 0x05, 0xe5,
-0x01, 0x01, 0x07, 0x42, 0xe5, 0xe5, 0x0c, 0xe5,
-0x02, 0x09, 0x18, 0xe5, 0x11, 0x04, 0x05, 0x0a,
-0x02, 0xe5, 0x04, 0x02, 0x0a, 0x05, 0x02, 0x07,
-0x0b, 0x27, 0x06, 0x01, 0x01, 0x10, 0x06, 0xe5,
-0xe5, 0x09, 0x05, 0x0c, 0x09, 0x09, 0x09, 0x01,
-0x08, 0x02, 0x01, 0x0d, 0x03, 0x01, 0x09, 0x07,
-0x01, 0x0a, 0x17, 0x05, 0x03, 0xe6, 0x01, 0x01,
-0x03, 0xe5, 0x04, 0x03, 0x04, 0xe5, 0x11, 0x03,
-0x05, 0x08, 0xe5, 0x08, 0xe5, 0xe5, 0x1e, 0x09,
-0x06, 0x0f, 0xe6, 0x07, 0xe5, 0x53, 0x13, 0x02,
-0x09, 0x03, 0x05, 0x09, 0x12, 0x06, 0x08, 0x03,
-0x01, 0x09, 0x07, 0x01, 0x02, 0x04, 0x05, 0x03,
-0x09, 0x0c, 0x0b, 0x24, 0x01, 0x01, 0xe5, 0xe5,
-0x44, 0x18, 0x07, 0xe5, 0x09, 0x27, 0x09, 0x02,
-0x10, 0x03, 0x13, 0xe5, 0x07, 0x09, 0x05, 0xe6,
-0x1a, 0x1b, 0x07, 0x01, 0xe5, 0xe8, 0x0d, 0xe5,
-0x0a, 0xe5, 0x04, 0xe5, 0x2d, 0x0c, 0x05, 0x06,
-0xe5, 0xe5, 0x08, 0x05, 0xe5, 0x05, 0x0b, 0xe5,
-0x07, 0x09, 0x0c, 0x01, 0x04, 0x08, 0x06, 0x0d,
-0x09, 0x02, 0xe5, 0x03, 0xe8, 0x12, 0x01, 0x04,
-0x1e, 0x01, 0x01, 0x01, 0x02, 0x01, 0x0c, 0x0c,
-0xe5, 0x2d, 0x0e, 0xe5, 0xe5, 0x05, 0xe5, 0x02,
-0x01, 0x01, 0xe5, 0x12, 0xe5, 0x04, 0x01, 0x05,
-0x05, 0x03, 0x09, 0x0b, 0xe6, 0x15, 0x0c, 0x03,
-0x01, 0x03, 0x03, 0xe5, 0x11, 0x01, 0x07, 0x01,
-0x20, 0x01, 0x03, 0x02, 0x04, 0x20, 0x20, 0xe5,
-0xe5, 0xe5, 0x0c, 0xe5, 0x0b, 0x01, 0x02, 0x01,
-0x01, 0xe5, 0xe6, 0x02, 0x01, 0xe5, 0xe5, 0x08,
-0x01, 0x05, 0x01, 0x18, 0x01, 0x01, 0xe5, 0xe5,
-0x0a, 0x0f, 0x1a, 0xe5, 0xe5, 0xe5, 0xe5, 0x1c,
-0x15, 0xe5, 0x03, 0x04, 0xe5, 0x01, 0x02, 0x46,
-0x01, 0x1b, 0x01, 0x04, 0x02, 0xe6, 0x06, 0x09,
-0x05, 0xe5, 0x01, 0x01, 0x1d, 0x01, 0x0e, 0x02,
-0x09, 0x1a, 0x02, 0x01, 0x3d, 0x04, 0xe6, 0xe5,
-0x5c, 0x02, 0x03, 0xe5, 0xe5, 0x04, 0xe5, 0x02,
-0xe6, 0x03, 0x08, 0x02, 0x02, 0x09, 0x06, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x09, 0x04, 0x01, 0x02,
-0x02, 0x0b, 0x04, 0x09, 0x04, 0x01, 0x02, 0x02,
-0x10, 0x09, 0x09, 0x09, 0x14, 0xe6, 0xe6, 0x01,
-0x4a, 0x0f, 0x04, 0xe5, 0xe7, 0xe5, 0xe5, 0xe5,
-0xe6, 0x02, 0x0d, 0xe7, 0x02, 0x02, 0x01, 0x04,
-0x06, 0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x01, 0x09,
-0x05, 0x01, 0x01, 0x09, 0x01, 0x02, 0xe5, 0x02,
-0x0f, 0x01, 0x01, 0x09, 0x3b, 0x03, 0xe5, 0xe5,
-0x01, 0x46, 0x01, 0x11, 0x01, 0x07, 0x01, 0x07,
-0x01, 0xe5, 0x02, 0x01, 0xe5, 0xe5, 0x08, 0x07,
-0x01, 0x04, 0x04, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x09,
-0xe6, 0x01, 0x06, 0x01, 0x04, 0x05, 0x01, 0x07,
-0x01, 0x0d, 0xe5, 0x05, 0x02, 0x01, 0x04, 0x02,
-0x08, 0xe5, 0x11, 0x04, 0x49, 0x01, 0x0e, 0x01,
-0xe5, 0xe5, 0x01, 0x04, 0x01, 0x07, 0x01, 0x01,
-0x02, 0x01, 0xe5, 0x08, 0x03, 0xe7, 0x01, 0x01,
-0x01, 0xe5, 0xe7, 0x01, 0x01, 0x01, 0xe5, 0x03,
-0x01, 0x01, 0xe5, 0x01, 0x01, 0x01, 0x02, 0xe6,
-0x01, 0x01, 0x02, 0x0a, 0xe5, 0x01, 0x03, 0xe5,
-0xe5, 0xe5, 0x04, 0x01, 0x01, 0xe5, 0xe5, 0xe6,
-0x03, 0x01, 0x0b, 0xe5, 0x08, 0x01, 0x01, 0x05,
-0x01, 0xe5, 0x04, 0xe7, 0x12, 0x01, 0x01, 0x09,
-0x63, 0x02, 0x03, 0x13, 0x02, 0x02, 0x03, 0x0b,
-0x09, 0x09, 0x09, 0x13, 0x09, 0x09, 0x13, 0x09,
-0x09, 0x04, 0x04, 0x16, 0x02, 0xe6, 0x09, 0x01,
-0x57, 0x09, 0xe5, 0x03, 0xe5, 0x08, 0x08, 0xe5,
-0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x11, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x11, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x15, 0xe9, 0x07, 0x05, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x06, 0x02, 0x05, 0x03, 0x06,
-0x02, 0xe5, 0x04, 0x02, 0x09, 0xe5, 0x07, 0xe5,
-0x04, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06,
-0xe6, 0x03, 0x02, 0x09, 0xe5, 0x07, 0xe6, 0x06,
-0xe5, 0x07, 0x09, 0xe5, 0x07, 0xe6, 0x06, 0xe6,
-0x06, 0xe5, 0x07, 0x0d, 0xe5, 0x01, 0xe5, 0x01,
-0x4f, 0x06, 0x0c, 0x08, 0xe5, 0x05, 0x1d, 0x29,
-0x02, 0x63, 0x04, 0x03, 0x01, 0xe5, 0x50, 0x12,
-0x0a, 0x19, 0x09, 0x0b, 0x09, 0x16, 0x10, 0x13,
-0x13, 0x1d, 0x0d, 0x0a, 0x01, 0x01, 0x44, 0x04,
-0x09, 0x04, 0x02, 0x01, 0x02, 0x04, 0x01, 0x0a,
-0xe5, 0x06, 0x07, 0x01, 0xe7, 0x03, 0x01, 0xe7,
-0x04, 0x02, 0xe7, 0x05, 0xe7, 0x03, 0x01, 0xe7,
-0x02, 0x02, 0xe7, 0xe5, 0x0d, 0xe7, 0x05, 0xe7,
-0x05, 0xe7, 0x05, 0x0a, 0x01, 0x07, 0x01, 0x07,
-0xe6, 0xe5, 0x04, 0x01, 0x16, 0xe7, 0x4a, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x04, 0x01, 0x07,
-0xe5, 0x02, 0x06, 0x01, 0x03, 0x03, 0x01, 0x03,
-0x01, 0xe6, 0x03, 0xe5, 0xe7, 0x06, 0x02, 0xe5,
-0x06, 0xe6, 0x01, 0x02, 0x01, 0xe6, 0x06, 0xe6,
-0x07, 0xe5, 0x03, 0x02, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x06, 0xe5, 0x09, 0x09, 0x09, 0x09, 0x17,
-0x01, 0xe5, 0x07, 0x3f, 0x02, 0x09, 0x09, 0x03,
-0x03, 0x01, 0x0d, 0xe5, 0x03, 0x03, 0x07, 0x05,
-0x01, 0x0b, 0x09, 0x01, 0x05, 0x01, 0xe5, 0x07,
-0xe5, 0x11, 0xe5, 0x04, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x09, 0x0d, 0x11, 0x20, 0x03, 0x15, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe5,
-0x05, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x02, 0x04,
-0xe6, 0x06, 0xe5, 0x05, 0xe6, 0xe5, 0xe6, 0x01,
-0xe5, 0x02, 0xe5, 0x01, 0x03, 0xe5, 0x02, 0x03,
-0xe8, 0xe5, 0x03, 0xe6, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x01, 0x03, 0xe7, 0x01, 0x05, 0xe5, 0x01,
-0xe5, 0x01, 0xe7, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x05, 0xe7, 0x05, 0xe7, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0xe6, 0xe5, 0x03, 0x46, 0xe5, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0x05, 0x0b, 0x0b, 0x07, 0x01,
-0xe5, 0x03, 0x04, 0x0a, 0xe5, 0x07, 0xe5, 0x08,
-0x03, 0x04, 0xe5, 0x07, 0x09, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0x1e, 0x09, 0x17, 0xe6, 0xe5,
-0x4a, 0xe5, 0x05, 0x01, 0x09, 0x03, 0x19, 0x02,
-0x04, 0x01, 0xe5, 0xe6, 0x01, 0x05, 0xe5, 0x01,
-0x01, 0xe5, 0x03, 0x03, 0x02, 0x02, 0xe5, 0x01,
-0x05, 0x03, 0x02, 0x02, 0x04, 0x04, 0x06, 0x02,
-0xe5, 0x01, 0x02, 0x02, 0x06, 0x02, 0xe5, 0x01,
-0x02, 0x0c, 0x09, 0xe5, 0x01, 0x03, 0x01, 0xe5,
-0x01, 0x03, 0x01, 0x15, 0xe5, 0x01, 0x09, 0x41,
-0x07, 0x01, 0x09, 0x05, 0x01, 0x01, 0x07, 0x0b,
-0x0e, 0xe5, 0x03, 0x03, 0xe5, 0x04, 0xe5, 0x02,
-0x04, 0xe5, 0x02, 0xe5, 0x03, 0x08, 0xe5, 0x07,
-0x09, 0xe5, 0x02, 0xe5, 0x02, 0xe5, 0x07, 0xe5,
-0x02, 0xe5, 0x02, 0x18, 0xe5, 0x07, 0xe5, 0x1c,
-0xe7, 0x4a, 0xe5, 0x05, 0x01, 0xe5, 0x0a, 0xe5,
-0x04, 0x0c, 0x06, 0x0d, 0x09, 0x05, 0x0b, 0x03,
-0x01, 0xe5, 0x06, 0x01, 0x02, 0x07, 0x0b, 0x03,
-0x01, 0xe5, 0x01, 0x09, 0x03, 0x01, 0xe5, 0x01,
-0x17, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x1e, 0xe5,
-0x58, 0x0c, 0x09, 0x02, 0x06, 0x02, 0x1b, 0x04,
-0x0c, 0x10, 0x05, 0x02, 0x07, 0x01, 0x0a, 0x3e,
-0x14, 0xe7, 0x01, 0x0e, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0xe6, 0x06,
-0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x07, 0xe6, 0xe5, 0x04,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0xe6, 0xe5,
-0x04, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x06, 0xe5, 0xe5, 0x09, 0x03, 0x10, 0x0f,
-0x09, 0x1c, 0x19, 0x0b, 0xe5, 0x01, 0xe5, 0x01,
-0x01, 0x03, 0x08, 0x0c, 0x03, 0x07, 0xe5, 0x08,
-0x08, 0xe6, 0x06, 0xe5, 0x05, 0xe5, 0x01, 0x13,
-0x07, 0x13, 0xe6, 0x06, 0x13, 0xe6, 0x02, 0x12,
-0x01, 0x01, 0xe5, 0x07, 0x04, 0x38, 0x06, 0x01,
-0x07, 0x0c, 0x07, 0x09, 0x01, 0x07, 0x07, 0x01,
-0x07, 0x01, 0x06, 0x04, 0x01, 0x02, 0x02, 0x06,
-0x04, 0x03, 0x04, 0x07, 0x16, 0x09, 0x0d, 0x06,
-0x16, 0x06, 0x07, 0x0a, 0xe6, 0x01, 0x0c, 0x45,
-0x03, 0x05, 0x03, 0x0b, 0x1d, 0x03, 0x02, 0x01,
-0xe5, 0x02, 0x04, 0x03, 0x0f, 0x08, 0x02, 0x08,
-0x1b, 0x04, 0x0e, 0x09, 0x06, 0x0c, 0x1a, 0xe5,
-0xe6, 0x4c, 0x04, 0x01, 0x02, 0x03, 0x03, 0x02,
-0x03, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x02, 0x09, 0x02, 0xe7, 0x02, 0x11, 0x04,
-0x03, 0xe5, 0x02, 0x0e, 0x01, 0x08, 0x09, 0x02,
-0x14, 0x3a, 0xe5, 0xe7, 0x12, 0x09, 0x49, 0x01,
-0x09, 0x02, 0x07, 0x03, 0xe5, 0x08, 0x0b, 0x05,
-0x0f, 0x05, 0x02, 0x10, 0x09, 0x5b, 0x02, 0xe5,
-0x0f, 0x1c, 0x0c, 0x09, 0x1c, 0x03, 0x0a, 0x01,
-0xe5, 0x05, 0x05, 0x0d, 0x01, 0x02, 0x04, 0x04,
-0x01, 0x06, 0x14, 0x06, 0x0b, 0x09, 0x04, 0x01,
-0x0f, 0x16, 0x25, 0x02, 0x01, 0x08, 0x09, 0x11,
-0x13, 0x09, 0x04, 0x04, 0x0f, 0x0d, 0xe5, 0x03,
-0xe5, 0x0b, 0x09, 0x06, 0xe6, 0x12, 0x02, 0x1a,
-0x01, 0x02, 0x03, 0xe5, 0x08, 0x02, 0x02, 0x1a,
-0x13, 0x13, 0x0d, 0x01, 0x01, 0x06, 0x0e, 0x50,
-0x05, 0x01, 0x04, 0xe5, 0x02, 0x11, 0x08, 0x05,
-0x0b, 0x02, 0x01, 0x15, 0x09, 0x02, 0x02, 0x08,
-0xe5, 0x1f, 0x34, 0xe6, 0x07, 0x0a, 0x2a, 0x09,
-0x09, 0x04, 0x02, 0x01, 0x03, 0x06, 0xe6, 0x0b,
-0x0d, 0x0b, 0x08, 0xe5, 0x02, 0xe5, 0x03, 0xe6,
-0x10, 0x01, 0x02, 0xe5, 0x03, 0xe6, 0x0b, 0x0a,
-0x0d, 0x03, 0x04, 0x05, 0x03, 0x09, 0x23, 0x01,
-0xe5, 0x01, 0x6a, 0xe5, 0x1e, 0x01, 0xe5, 0x01,
-0x03, 0x03, 0xe5, 0x07, 0x01, 0xe5, 0x14, 0x05,
-0x02, 0x01, 0x16, 0x0c, 0x42, 0xe6, 0xe6, 0x36,
-0x02, 0x09, 0x01, 0x07, 0x14, 0x0e, 0xe6, 0x09,
-0x01, 0x01, 0x07, 0x09, 0x09, 0xe7, 0x03, 0x09,
-0x0c, 0xe5, 0x07, 0x02, 0x06, 0xe5, 0x01, 0x01,
-0x2b, 0x06, 0x02, 0x1f, 0x01, 0xe5, 0x57, 0x19,
-0xe6, 0x02, 0x01, 0x03, 0xe5, 0x02, 0x03, 0x02,
-0x0a, 0x02, 0x11, 0x09, 0x07, 0x12, 0x07, 0x01,
-0x0b, 0x04, 0x05, 0x3f, 0x01, 0x4d, 0x25, 0x13,
-0x10, 0x06, 0x2a, 0x03, 0x03, 0x08, 0x02, 0x1a,
-0x35, 0x01, 0xe5, 0xe6, 0x05, 0xe5, 0x04, 0xe5,
-0x25, 0xe5, 0x25, 0x01, 0x04, 0x09, 0x04, 0xe6,
-0x01, 0x04, 0x09, 0x0a, 0xe5, 0x03, 0x02, 0x09,
-0x02, 0xe5, 0x04, 0xe5, 0x04, 0x02, 0xe5, 0x07,
-0xe5, 0x15, 0xe5, 0x03, 0xe5, 0x15, 0xe5, 0x03,
-0xe5, 0xe6, 0x04, 0x1f, 0x01, 0xe5, 0x01, 0xe5,
-0xe5, 0xe5, 0x04, 0x01, 0x2c, 0x2a, 0x01, 0x05,
-0x04, 0xe6, 0x06, 0x09, 0x10, 0xe5, 0x01, 0xe5,
-0x0d, 0xe6, 0x0b, 0x02, 0x01, 0x01, 0x01, 0x03,
-0x10, 0xe5, 0x0c, 0x1f, 0xe5, 0x20, 0x01, 0x03,
-0xe5, 0xe5, 0x01, 0x01, 0x0c, 0x55, 0x01, 0x09,
-0x07, 0x06, 0x01, 0x02, 0x13, 0x17, 0x05, 0x0e,
-0x01, 0x01, 0x06, 0xe5, 0x0b, 0x01, 0x01, 0x1d,
-0x02, 0x01, 0xe5, 0xe5, 0x01, 0x15, 0x01, 0x02,
-0x05, 0x02, 0x02, 0x61, 0xe5, 0xe5, 0x08, 0x01,
-0x07, 0x06, 0x02, 0x01, 0x13, 0x1d, 0x10, 0x09,
-0x09, 0xe5, 0xe5, 0xe5, 0x24, 0x01, 0x17, 0xe5,
-0x05, 0x05, 0xe7, 0x64, 0x04, 0x01, 0x01, 0x05,
-0xe5, 0x01, 0xe5, 0x03, 0x02, 0x0a, 0xe5, 0xe5,
-0x01, 0x05, 0xe5, 0x08, 0x01, 0x11, 0x09, 0x01,
-0x05, 0x03, 0x02, 0x01, 0xe6, 0x06, 0x01, 0x4c,
-0xe6, 0x01, 0x02, 0x06, 0x02, 0x5e, 0x01, 0x02,
-0x05, 0x01, 0x01, 0xe5, 0x02, 0x05, 0x07, 0xe6,
-0xe5, 0xe5, 0x06, 0x03, 0x05, 0x01, 0x01, 0x0f,
-0x03, 0x05, 0x01, 0x01, 0x05, 0x04, 0x01, 0x01,
-0x07, 0x01, 0x04, 0x27, 0x1d, 0x03, 0xe7, 0x01,
-0x60, 0xe5, 0x01, 0x01, 0x01, 0x0f, 0x06, 0x04,
-0x05, 0x01, 0x01, 0x04, 0x04, 0x06, 0x01, 0xe5,
-0xe5, 0x03, 0x0c, 0x09, 0x01, 0x1b, 0x01, 0x22,
-0x01, 0xe5, 0xe5, 0x0d, 0x01, 0x10, 0x03, 0xe5,
-0xe6, 0x5f, 0xe5, 0x01, 0x04, 0x0e, 0x03, 0xe5,
-0x01, 0x01, 0x01, 0x07, 0x01, 0x01, 0xe5, 0x01,
-0x03, 0x09, 0x01, 0x04, 0xe6, 0x09, 0x09, 0x01,
-0x1b, 0x01, 0x25, 0x01, 0x03, 0xe5, 0x07, 0xe5,
-0x14, 0xe7, 0x68, 0x13, 0x02, 0x09, 0xe5, 0x04,
-0x0e, 0xe5, 0x1b, 0x09, 0x02, 0x06, 0xe5, 0x07,
-0xe5, 0x4d, 0x01, 0x01, 0xe5, 0x59, 0xe5, 0x07,
-0x05, 0xe5, 0x01, 0x0f, 0xe5, 0x03, 0x04, 0x08,
-0xe5, 0x01, 0xe5, 0x29, 0x11, 0x06, 0x02, 0x31,
-0x1f, 0xe7, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x05, 0x03, 0xe6, 0x02, 0xe5,
-0x01, 0x09, 0xe5, 0x07, 0x09, 0xe5, 0x09, 0x02,
-0x06, 0x04, 0x01, 0x02, 0x09, 0x09, 0x06, 0x02,
-0x03, 0xe5, 0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x01,
-0x09, 0x09, 0x09, 0x09, 0x05, 0x03, 0x09, 0x0d,
-0x04, 0x66, 0x08, 0xe5, 0x3c, 0x1c, 0xe5, 0x08,
-0x09, 0x4a, 0x02, 0xe8, 0x62, 0x0b, 0x0f, 0x13,
-0x19, 0x1d, 0x08, 0x08, 0x50, 0xe8, 0x31, 0x20,
-0x01, 0x07, 0x01, 0x09, 0xe7, 0xe5, 0x0b, 0x01,
-0xe5, 0xe5, 0xe5, 0x03, 0x07, 0x01, 0xe5, 0xe5,
-0x05, 0x01, 0x07, 0x01, 0x09, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x15, 0x25, 0x01, 0x22, 0x01, 0x01,
-0x46, 0x0c, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x02, 0xe5, 0x06, 0x01, 0x04, 0xe5, 0xe7, 0x06,
-0x01, 0x01, 0x03, 0x01, 0xe6, 0x06, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x02, 0x05, 0xe5, 0xe6,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x06, 0x09, 0x01,
-0x03, 0x02, 0x03, 0x1d, 0x02, 0x01, 0xe5, 0x21,
-0x01, 0xe6, 0x11, 0x53, 0x01, 0xe5, 0x01, 0x09,
-0x0a, 0x04, 0x03, 0x02, 0x07, 0x01, 0x0b, 0xe5,
-0xe5, 0x05, 0x02, 0x03, 0x02, 0x09, 0x06, 0x09,
-0x03, 0x0b, 0x03, 0x14, 0x08, 0x28, 0x01, 0x01,
-0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0xe5, 0xe5, 0xe5, 0x04, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0x03, 0x05, 0xe5, 0x07, 0xe5, 0x09,
-0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe8, 0x37, 0x13,
-0x06, 0x01, 0x07, 0x01, 0x04, 0x04, 0x11, 0x01,
-0x07, 0x01, 0x07, 0x01, 0xe5, 0x07, 0x01, 0x0a,
-0x08, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x07,
-0x15, 0xe5, 0x08, 0x13, 0xe5, 0x04, 0x01, 0x0a,
-0xe5, 0x15, 0x01, 0x01, 0x38, 0x1a, 0x01, 0x07,
-0x01, 0x06, 0xe5, 0x0a, 0x07, 0x01, 0x06, 0xe5,
-0xe5, 0x06, 0x01, 0xe5, 0x06, 0xe5, 0xe5, 0x09,
-0x06, 0x09, 0x01, 0x07, 0x01, 0x1b, 0x0c, 0x1a,
-0x01, 0x22, 0xe6, 0xe5, 0x4b, 0x32, 0x09, 0x09,
-0x1d, 0xe5, 0x08, 0x1a, 0x0b, 0xe5, 0x4c, 0x38,
-0x13, 0x17, 0x07, 0x06, 0x02, 0x0b, 0x1b, 0x09,
-0x06, 0x02, 0x09, 0x09, 0x0b, 0x09, 0x04, 0x02,
-0x09, 0x13, 0x09, 0x09, 0x18, 0xe8, 0x65, 0x03,
-0x05, 0xe5, 0xe5, 0x05, 0x02, 0x06, 0x14, 0x01,
-0x01, 0x17, 0x02, 0xe5, 0xe5, 0xe5, 0x12, 0x27,
-0x1c, 0x1a, 0x11, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x03, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x01, 0x05, 0x01, 0xe5,
-0xe5, 0x03, 0xe7, 0xe5, 0x05, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x01, 0x03, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x0b, 0xe5, 0xe5, 0x0b, 0x1c, 0xe5, 0x0b, 0xe5,
-0x0d, 0x03, 0x02, 0x2c, 0x01, 0xe6, 0x05, 0x0a,
-0xe6, 0x1c, 0x01, 0x07, 0xe5, 0x0e, 0x0e, 0x07,
-0xe5, 0x29, 0x20, 0xe7, 0x34, 0x10, 0x06, 0x0a,
-0x09, 0x02, 0x04, 0x08, 0x04, 0x01, 0x13, 0x07,
-0x11, 0x07, 0x03, 0x03, 0x03, 0x02, 0x15, 0x06,
-0x02, 0x01, 0x01, 0x02, 0x09, 0x02, 0x08, 0x0f,
-0x0d, 0x08, 0x08, 0xe5, 0x01, 0xe5, 0x35, 0x13,
-0x21, 0x0f, 0x05, 0x06, 0xe5, 0x01, 0xe5, 0xe5,
-0x23, 0x02, 0x01, 0x0b, 0x19, 0x01, 0x2f, 0x09,
-0x15, 0x04, 0x29, 0x34, 0x03, 0x01, 0xe5, 0x09,
-0x02, 0x0a, 0x01, 0x01, 0x04, 0x09, 0x0c, 0x01,
-0x01, 0xe5, 0x0c, 0x05, 0xe5, 0x07, 0xe5, 0x07,
-0x02, 0x08, 0x0c, 0x04, 0x03, 0x07, 0x07, 0x04,
-0x21, 0x01, 0xe5, 0x04, 0xe5, 0x65, 0x01, 0x0d,
-0x07, 0x08, 0x02, 0x01, 0x09, 0x01, 0xe5, 0x05,
-0x03, 0x01, 0x0f, 0x09, 0x09, 0x0a, 0x05, 0x21,
-0x09, 0x24, 0xe5, 0x02, 0xe5, 0x01, 0x0c, 0x09,
-0x09, 0x01, 0x28, 0x06, 0x04, 0x05, 0x08, 0x01,
-0x06, 0x0a, 0x02, 0x03, 0x01, 0x08, 0xe5, 0x06,
-0x03, 0x09, 0x03, 0xe6, 0x02, 0x02, 0x06, 0xe5,
-0x07, 0x09, 0x09, 0x02, 0x06, 0x13, 0x09, 0x09,
-0x03, 0x11, 0x08, 0x02, 0xe5, 0xe9, 0x1d, 0x0d,
-0x09, 0x09, 0x2e, 0xe5, 0x1e, 0xe5, 0x01, 0xe5,
-0xe5, 0x01, 0x05, 0x03, 0x01, 0xe5, 0x01, 0x03,
-0x06, 0x02, 0x09, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x05, 0x03, 0x01, 0x11, 0x01, 0x07, 0x05, 0x03,
-0x01, 0x0e, 0x09, 0x07, 0x01, 0x01, 0xe5, 0x07,
-0x15, 0x52, 0x0f, 0x06, 0x02, 0x0b, 0x01, 0x05,
-0xe5, 0x08, 0x08, 0x04, 0x05, 0x1e, 0x01, 0x07,
-0x12, 0x01, 0x31, 0xe6, 0xe6, 0x48, 0x18, 0x03,
-0xe5, 0x03, 0x0a, 0x06, 0x0f, 0xe6, 0x01, 0x03,
-0xe5, 0xe7, 0x06, 0xe6, 0x06, 0xe5, 0x08, 0x04,
-0xe6, 0x01, 0x07, 0xe7, 0x05, 0xe5, 0xe5, 0x05,
-0xe6, 0x01, 0x0e, 0xe5, 0xe5, 0x06, 0xe5, 0x21,
-0x09, 0xe5, 0x01, 0xe5, 0x05, 0x43, 0x0c, 0x0c,
-0x02, 0xe5, 0x23, 0x04, 0x02, 0x03, 0xe5, 0x01,
-0x06, 0x03, 0x06, 0x02, 0x09, 0x09, 0x08, 0x11,
-0x02, 0x19, 0xe5, 0x01, 0x2b, 0x01, 0xe7, 0x07,
-0x0f, 0x53, 0x09, 0x01, 0x08, 0x05, 0x03, 0x04,
-0x04, 0x04, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x03,
-0xe5, 0x01, 0x01, 0x07, 0x01, 0x06, 0xe5, 0xe6,
-0x04, 0x1d, 0x03, 0x01, 0xe5, 0x04, 0x03, 0xe5,
-0x03, 0xe5, 0x05, 0x01, 0xe5, 0x1a, 0x06, 0xe5,
-0xe5, 0x12, 0x04, 0xe5, 0x0d, 0x41, 0x15, 0x09,
-0x02, 0x02, 0xe5, 0x08, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x02,
-0x04, 0x01, 0x01, 0xe5, 0x03, 0x01, 0xe5, 0x10,
-0xe5, 0xe5, 0x05, 0xe5, 0x05, 0xe5, 0xe5, 0x1a,
-0x07, 0xe5, 0xe5, 0xe5, 0x15, 0x5c, 0x09, 0x11,
-0x17, 0x13, 0x39, 0x02, 0x06, 0x15, 0x10, 0x07,
-0xe8, 0x06, 0xe5, 0x04, 0xe5, 0x01, 0x01, 0x32,
-0x02, 0xe5, 0x14, 0xe5, 0x05, 0x08, 0xe5, 0x01,
-0x01, 0xe5, 0x01, 0xe5, 0x01, 0xe5, 0x19, 0xe5,
-0x07, 0xe5, 0x08, 0xe7, 0x05, 0x02, 0x01, 0x04,
-0x01, 0xe5, 0x04, 0xe5, 0x08, 0xe5, 0x06, 0x01,
-0x07, 0xe5, 0x0a, 0xe5, 0x05, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0xe5, 0x13, 0x05, 0x02, 0x01,
-0x05, 0xe5, 0x06, 0xe5, 0x12, 0x01, 0x1e, 0x02,
-0x20, 0xe5, 0x07, 0xe5, 0x01, 0x06, 0xe5, 0x07,
-0x01, 0x0b, 0x03, 0x09, 0x09, 0x02, 0xe5, 0x04,
-0x03, 0xe5, 0x03, 0x03, 0xe5, 0x03, 0x09, 0x14,
-0x0b, 0xe5, 0x08, 0x01, 0x07, 0xe5, 0x16, 0x01,
-0x02, 0x02, 0xe5, 0x03, 0x0c, 0x37, 0x04, 0x1c,
-0x09, 0x05, 0x03, 0x02, 0xe5, 0xe5, 0xe5, 0x07,
-0x05, 0xe5, 0x03, 0x09, 0x01, 0x07, 0x01, 0x03,
-0x01, 0x01, 0x01, 0x07, 0x01, 0x03, 0xe5, 0x01,
-0x01, 0x03, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01,
-0x01, 0x11, 0x04, 0xe5, 0x02, 0x01, 0xe5, 0x01,
-0xe5, 0x01, 0x01, 0x0a, 0x0b, 0xe5, 0x03, 0x04,
-0xe5, 0xe6, 0x01, 0x46, 0x31, 0x06, 0x02, 0x01,
-0x0e, 0x0a, 0xe5, 0x05, 0x02, 0xe5, 0x07, 0xe5,
-0x04, 0x01, 0xe5, 0x07, 0xe5, 0x04, 0x0a, 0x09,
-0x0b, 0xe5, 0x08, 0xe5, 0x07, 0xe5, 0x03, 0x16,
-0xe5, 0x05, 0x02, 0x03, 0x01, 0x47, 0x22, 0x04,
-0x01, 0x07, 0x07, 0x06, 0x09, 0x02, 0x1b, 0xe5,
-0x08, 0x08, 0xe5, 0x12, 0xe5, 0x01, 0x1b, 0x01,
-0x04, 0xe5, 0x09, 0x02, 0x1a, 0x04, 0x02, 0x46,
-0x03, 0x23, 0x01, 0x01, 0x05, 0x03, 0x09, 0x09,
-0x04, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x01, 0x04,
-0x04, 0x04, 0x13, 0x04, 0x04, 0x09, 0x02, 0x01,
-0x18, 0x02, 0x01, 0x01, 0x02, 0x46, 0x04, 0x0b,
-0x01, 0x14, 0x01, 0x02, 0x01, 0x01, 0xe5, 0x03,
-0x01, 0x01, 0x04, 0x06, 0x02, 0xe5, 0x01, 0x04,
-0x06, 0x02, 0x05, 0xe6, 0xe5, 0x01, 0x01, 0xe6,
-0x01, 0x06, 0x02, 0x02, 0xe8, 0x01, 0x09, 0x06,
-0x02, 0x04, 0xe5, 0x0c, 0x06, 0x02, 0x04, 0xe5,
-0x02, 0x22, 0xe5, 0xe5, 0xe5, 0x48, 0x21, 0xe5,
-0x03, 0x01, 0x07, 0x18, 0x01, 0x01, 0x13, 0x01,
-0x05, 0x08, 0xe5, 0xe5, 0xe5, 0x04, 0xe6, 0x0f,
-0xe5, 0x09, 0xe5, 0x19, 0xe5, 0xe5, 0xe5, 0x06,
-0x01, 0x1c, 0xe7, 0x08, 0x02, 0x5d, 0x16, 0xe5,
-0x07, 0x05, 0xe5, 0x01, 0xe5, 0x05, 0x03, 0x02,
-0x02, 0x03, 0xe5, 0x03, 0xe5, 0x07, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x03, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0x13, 0x03, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0x03, 0xe5, 0x1b,
-0x04, 0x0a, 0xe5, 0x5d, 0xe5, 0x15, 0x0b, 0x03,
-0xe5, 0x0d, 0x0f, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x11, 0xe5, 0x0b, 0x13, 0x05, 0xe5,
-0x0b, 0xe5, 0x1d, 0xe7, 0x0d, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x04, 0x01, 0x02,
-0xe5, 0x04, 0x02, 0x09, 0x02, 0x02, 0x03, 0x06,
-0x02, 0xe6, 0x03, 0x04, 0x05, 0xe5, 0x01, 0x06,
-0x02, 0xe6, 0x02, 0xe5, 0x01, 0xe5, 0x02, 0xe6,
-0x01, 0xe6, 0x03, 0x02, 0x04, 0x01, 0x02, 0xe5,
-0x02, 0x01, 0x02, 0x05, 0x03, 0x06, 0x02, 0x05,
-0x03, 0xe5, 0x04, 0x02, 0x09, 0x09, 0x0d, 0x01,
-0x01, 0xe5, 0x01, 0x63, 0x08, 0xe5, 0x12, 0x06,
-0x02, 0x08, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x05,
-0x13, 0x02, 0x13, 0x10, 0x02, 0x09, 0x06, 0x02,
-0x1d, 0x04, 0x02, 0x02, 0xe5, 0x62, 0x07, 0x02,
-0x13, 0x0a, 0x03, 0x05, 0x05, 0x05, 0x03, 0x05,
-0x03, 0x09, 0x01, 0x07, 0x04, 0x04, 0x09, 0x01,
-0x01, 0x05, 0x0e, 0x04, 0x05, 0x03, 0x01, 0x02,
-0x04, 0x17, 0x0a, 0xe5, 0x01, 0x01, 0x06, 0x10,
-0x36, 0x18, 0xe5, 0xe5, 0xe5, 0x03, 0x07, 0x01,
-0x04, 0x0f, 0xe6, 0x04, 0x17, 0xe6, 0x06, 0xe6,
-0x06, 0x01, 0x11, 0xe6, 0x24, 0x01, 0x2b, 0x01,
-0x19, 0xe5, 0x4b, 0x02, 0xe5, 0x04, 0x02, 0x03,
-0x02, 0x01, 0xe5, 0x09, 0x09, 0x0b, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x13, 0x09, 0x09,
-0x20, 0x01, 0xe6, 0x12, 0xe5, 0x03, 0x4a, 0x04,
-0x09, 0x4b, 0xe5, 0x6c, 0x01, 0x01, 0x15, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x02, 0x02, 0x01, 0xe5, 0xe5, 0x06, 0xe5,
-0x06, 0xe7, 0x02, 0x03, 0xe6, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x05, 0xe7, 0x02, 0x04, 0xe5, 0x05,
-0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0xe7, 0x05,
-0x01, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0x02,
-0xe5, 0x03, 0x14, 0x3c, 0xe5, 0x10, 0xe5, 0x07,
-0xe6, 0x04, 0x01, 0xe6, 0x11, 0x02, 0x0c, 0x05,
-0xe5, 0x01, 0x05, 0x03, 0x05, 0xe5, 0x11, 0x03,
-0x05, 0xe5, 0x07, 0x03, 0x0f, 0x09, 0x03, 0x05,
-0x02, 0x1f, 0x01, 0xe5, 0x18, 0x4d, 0x02, 0x06,
-0x09, 0x01, 0x10, 0x05, 0x03, 0x01, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x09, 0x09, 0x03,
-0x05, 0x07, 0x01, 0x03, 0x0f, 0x07, 0x01, 0x03,
-0x05, 0x03, 0x1b, 0x01, 0xe6, 0x18, 0x4f, 0x09,
-0x13, 0x05, 0x04, 0x04, 0x13, 0x01, 0x04, 0x1d,
-0x02, 0x01, 0x11, 0x01, 0x0e, 0x0c, 0x01, 0x04,
-0x04, 0x1d, 0x02, 0x19, 0xe5, 0x12, 0x27, 0x10,
-0x04, 0x04, 0x02, 0x09, 0x06, 0x04, 0x02, 0xe5,
-0x07, 0xe5, 0x13, 0xe5, 0x08, 0x1c, 0xe5, 0x0f,
-0x01, 0xe5, 0x19, 0x01, 0xe5, 0x07, 0xe5, 0x1b,
-0x01, 0xe6, 0x31, 0x15, 0x06, 0x28, 0x01, 0x0d,
-0x05, 0x02, 0x07, 0xe5, 0x01, 0x03, 0x02, 0x02,
-0xe5, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x03,
-0x02, 0x02, 0x06, 0x02, 0x06, 0x02, 0x10, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x21, 0xe5, 0xe6, 0x10,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0xe5,
-0xe5, 0xe5, 0x01, 0x01, 0xe5, 0x05, 0x01, 0x01,
-0x05, 0xe6, 0x01, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x01, 0x05, 0xe6, 0x04,
-0x01, 0x01, 0x01, 0x05, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x01, 0x03, 0x01,
-0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0xe5, 0x01,
-0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0xe5,
-0x01, 0x01, 0x01, 0x07, 0x01, 0x01, 0x03, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x0d, 0xe5, 0x27,
-0x06, 0x3a, 0x15, 0x0d, 0x02, 0xe6, 0x01, 0x17,
-0x02, 0xe6, 0x08, 0x07, 0xe5, 0x07, 0xe5, 0x03,
-0x07, 0x0f, 0xe5, 0x07, 0x05, 0x04, 0x2b, 0x01,
-0x01, 0xe5, 0x19, 0x15, 0x09, 0x09, 0x06, 0x02,
-0x01, 0x07, 0x0e, 0x0b, 0x04, 0x15, 0x02, 0x07,
-0x0f, 0x04, 0x08, 0x06, 0x02, 0xe5, 0x01, 0x02,
-0x03, 0x04, 0x18, 0x13, 0x05, 0x09, 0x0c, 0x0d,
-0x02, 0xe7, 0xe5, 0x02, 0x37, 0x01, 0x13, 0x11,
-0x08, 0x02, 0x08, 0x11, 0x05, 0x02, 0x1c, 0x13,
-0x05, 0x03, 0x1e, 0x04, 0x03, 0x01, 0x35, 0xe5,
-0x01, 0xe5, 0x0f, 0x09, 0x3a, 0x05, 0x2a, 0x04,
-0x02, 0x01, 0x09, 0x01, 0xe5, 0x05, 0x01, 0x0f,
-0x01, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0xe5, 0x01, 0x06, 0x06, 0x01, 0xe5,
-0x05, 0x01, 0x02, 0x04, 0x01, 0x21, 0x01, 0xe7,
-0x15, 0x27, 0x22, 0x04, 0x09, 0x14, 0x09, 0x01,
-0x07, 0xe5, 0xe5, 0xe5, 0x06, 0x01, 0x11, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x07, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x11, 0x01, 0x04, 0x02,
-0x01, 0x07, 0x01, 0x25, 0xe5, 0x0d, 0x09, 0x09,
-0x13, 0x03, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0x05,
-0x02, 0x01, 0x07, 0x09, 0x03, 0x0e, 0xe5, 0x09,
-0x04, 0x04, 0x01, 0x02, 0x01, 0x07, 0x29, 0xe5,
-0xe6, 0x08, 0x09, 0x13, 0x04, 0x01, 0x0c, 0x08,
-0xe5, 0x16, 0xe5, 0x01, 0xe5, 0x0c, 0xe5, 0x07,
-0xe5, 0x07, 0x13, 0x01, 0x14, 0x07, 0x01, 0x03,
-0x02, 0x02, 0x09, 0x10, 0x17, 0x02, 0x07, 0x09,
-0x09, 0x0a, 0x08, 0x06, 0x09, 0xe5, 0x07, 0xe5,
-0xe5, 0x0f, 0x02, 0x02, 0x0d, 0xe5, 0x05, 0x01,
-0x1c, 0xe6, 0x0e, 0x04, 0x02, 0x09, 0x02, 0x13,
-0x26, 0xe5, 0x08, 0x12, 0x15, 0x05, 0xe5, 0x19,
-0x17, 0x09, 0x09, 0x13, 0x02, 0x04, 0x0b, 0x09,
-0x1a, 0x01, 0x01, 0x01, 0x1c, 0x25, 0x26, 0x04,
-0x1c, 0xe5, 0x08, 0xe5, 0x43, 0x28, 0x26, 0x01,
-0xe6, 0x44, 0xe5, 0x2d, 0x04, 0x04, 0x03, 0x15,
-0xe5, 0x92, 0x02, 0xe6, 0x17, 0x09, 0x0b, 0x07,
-0x09, 0x0e, 0x04, 0x09, 0x1d, 0x03, 0x07, 0xe6,
-0x06, 0xe6, 0x07, 0xe5, 0x01, 0x08, 0x08, 0xe5,
-0x08, 0x09, 0x03, 0x01, 0x02, 0xe5, 0x08, 0x14,
-0x04, 0x05, 0x07, 0x0f, 0x18, 0xe8, 0x17, 0x17,
-0x04, 0xe6, 0xe6, 0x0f, 0x08, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x05, 0x02, 0x09, 0x09, 0x08, 0x10,
-0x04, 0x2f, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x14, 0x08, 0x09, 0x19, 0x02, 0x21, 0x19, 0x03,
-0x0b, 0x09, 0x09, 0x09, 0x11, 0x2f, 0x12, 0x10,
-0x0b, 0x0a, 0x09, 0x01, 0x02, 0x15, 0x07, 0xe5,
-0x19, 0xe7, 0x02, 0x0b, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0xe5, 0x01, 0x03,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x08,
-0x06, 0xe7, 0x03, 0x01, 0xe5, 0xe5, 0x07, 0xe5,
-0x04, 0x02, 0xe5, 0x08, 0x08, 0xe5, 0x07, 0xe5,
-0x0b, 0x03, 0xe5, 0x01, 0x0b, 0x01, 0x05, 0x01,
-0x01, 0x02, 0x05, 0xe5, 0x08, 0x08, 0xe5, 0x08,
-0x09, 0x08, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x07, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x01, 0x03, 0x08, 0xe6,
-0x06, 0xe5, 0x04, 0x03, 0x07, 0xe6, 0x01, 0x06,
-0x08, 0x08, 0xe6, 0x06, 0xe5, 0x05, 0x02, 0xe5,
-0x03, 0x04, 0x09, 0x09, 0x09, 0x0f, 0x01, 0x02,
-0xe5, 0x03, 0x06, 0xe5, 0x03, 0x03, 0xe5, 0xe5,
-0xe5, 0xe5, 0x01, 0xe5, 0x07, 0x06, 0x02, 0xe6,
-0x06, 0xe5, 0x02, 0x04, 0xe6, 0xe5, 0x01, 0x02,
-0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0x02,
-0x01, 0x04, 0xe6, 0x06, 0x09, 0x01, 0x09, 0x01,
-0xe5, 0x05, 0x02, 0x04, 0xe6, 0x08, 0x02, 0x03,
-0x02, 0x07, 0x01, 0x01, 0x04, 0x02, 0x06, 0xe5,
-0xe6, 0x07, 0x09, 0xe5, 0x06, 0xe5, 0x06, 0x01,
-0x09, 0x09, 0x10, 0xe6, 0x23, 0x0b, 0x25, 0x09,
-0x09, 0x16, 0x05, 0x02, 0xe5, 0x07, 0x0c, 0x05,
-0x03, 0x06, 0x13, 0x12, 0x07, 0x02, 0x08, 0x02,
-0x03, 0x02, 0x0d, 0x2b, 0xe5, 0x0e, 0x05, 0x03,
-0x09, 0x09, 0x09, 0xe5, 0x02, 0x04, 0x09, 0x09,
-0x04, 0x04, 0x09, 0x04, 0x04, 0xe5, 0x07, 0xe5,
-0x07, 0x01, 0x01, 0x05, 0xe5, 0x09, 0x09, 0x08,
-0xe5, 0x08, 0x09, 0x02, 0x04, 0x01, 0x09, 0x10,
-0x02, 0x13, 0x08, 0xe5, 0x08, 0x09, 0x0e, 0x01,
-0x01, 0x0d, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe5, 0x02,
-0x03, 0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x02, 0x05,
-0x03, 0x04, 0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x10, 0xe6, 0x0c, 0x02, 0x04, 0x01,
-0x02, 0x06, 0x02, 0x06, 0x09, 0x02, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x06, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x01, 0xe5, 0x02, 0x09,
-0x02, 0x06, 0x06, 0x02, 0x08, 0x01, 0xe5, 0x06,
-0x01, 0x09, 0x05, 0x03, 0x09, 0x0a, 0x02, 0x05,
-0x02, 0x01, 0xe5, 0x03, 0x04, 0x03, 0x02, 0x06,
-0x05, 0x04, 0x09, 0x08, 0x09, 0x11, 0x01, 0xe5,
-0x0d, 0xe5, 0x07, 0x09, 0x09, 0xe5, 0xe5, 0x05,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0xe5, 0xe5,
-0x05, 0x09, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x07,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0x09, 0x09, 0x09, 0xe5, 0x07, 0xe5,
-0xe5, 0x05, 0x02, 0x06, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x0b, 0xe5, 0xe6, 0x09, 0x03, 0x02, 0x06,
-0x01, 0x07, 0x01, 0x07, 0x09, 0x01, 0x03, 0x03,
-0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x04, 0x04, 0x01, 0x07, 0x04,
-0x04, 0x04, 0x06, 0x05, 0x03, 0x05, 0x03, 0x09,
-0x09, 0x13, 0x13, 0x04, 0x04, 0x03, 0x11, 0x07,
-0x03, 0x05, 0x0f, 0x02, 0xe5, 0x18, 0x09, 0x04,
-0x0e, 0x09, 0x01, 0x02, 0x04, 0x01, 0x07, 0x09,
-0x06, 0x02, 0x01, 0x11, 0x01, 0xe5, 0xe5, 0x1f,
-0x06, 0x17, 0x05, 0x01, 0x02, 0x03, 0x08, 0x06,
-0x02, 0x09, 0x10, 0x04, 0x04, 0x24, 0xe6, 0xe5,
-0x0d, 0x05, 0x03, 0x03, 0x05, 0x02, 0x02, 0x06,
-0x06, 0x09, 0x09, 0x03, 0x05, 0x02, 0x06, 0x02,
-0x02, 0xe5, 0x01, 0x09, 0x09, 0x09, 0x05, 0xe5,
-0x01, 0x08, 0x02, 0x09, 0x02, 0x06, 0x0d, 0x05,
-0x0d, 0x05, 0x02, 0x04, 0x04, 0xe5, 0x04, 0x09,
-0x02, 0x1a, 0x09, 0x0f, 0xe8, 0x2b, 0x11, 0x1d,
-0x1d, 0x18, 0x04, 0xe5, 0x09, 0x13, 0x01, 0x1a,
-0xe5, 0x09, 0xe5, 0xe5, 0x04, 0x1f, 0x25, 0xe6,
-0x0f, 0x03, 0x05, 0x09, 0x09, 0x09, 0x09, 0x01,
-0x07, 0x09, 0x09, 0x09, 0xe5, 0x07, 0x05, 0x03,
-0x09, 0x01, 0x07, 0x06, 0xe5, 0x02, 0x09, 0x09,
-0x01, 0x03, 0x03, 0x05, 0x03, 0x09, 0xe5, 0x07,
-0x09, 0x09, 0x01, 0x07, 0x09, 0x07, 0x01, 0x09,
-0x09, 0x0d, 0x01, 0x01, 0x04, 0x27, 0x39, 0x25,
-0x09, 0x0b, 0x09, 0x09, 0x02, 0xe5, 0x0e, 0x02,
-0x07, 0x0b, 0x1d, 0x2e, 0xe5, 0xe6, 0x50, 0xe5,
-0x1b, 0x13, 0x04, 0x04, 0x04, 0x06, 0x04, 0x09,
-0x04, 0x04, 0x13, 0x0e, 0x13, 0x1d, 0x27, 0xe7,
-0x21, 0xc6, 0x40, 0x03, 0x03, 0x07, 0xe3, 0x09,
-0x3a, 0x03, 0x07, 0x29, 0x1f, 0x25, 0x0b, 0x3b,
-0x15, 0xe5, 0x2d, 0x01, 0x27, 0xe7, 0x6e, 0x16,
-0x05, 0xe5, 0x01, 0x05, 0x02, 0x02, 0x05, 0x03,
-0x05, 0xe5, 0x01, 0x05, 0x0d, 0x05, 0x5c, 0x06,
-0x01, 0x01, 0x05, 0x93, 0x59, 0x34, 0x05, 0xe5,
-0x01, 0x04, 0xe5, 0xe3, 0x34, 0x10, 0x02, 0xe5,
-0x13, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0xe6,
-0x06, 0x09, 0x09, 0x09, 0x03, 0x05, 0x0a, 0xe5,
-0xe5, 0x04, 0x09, 0x08, 0xe5, 0x07, 0xe5, 0x08,
-0x08, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x08, 0x08, 0xe5, 0x08,
-0x09, 0x07, 0x03, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x04, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05,
-0x01, 0xe5, 0x08, 0x08, 0xe5, 0x08, 0x07, 0xe6,
-0x11, 0x16, 0x09, 0x09, 0x0f, 0x03, 0x09, 0x09,
-0x05, 0x03, 0x09, 0x05, 0x03, 0x13, 0x04, 0x09,
-0x05, 0x05, 0x09, 0x09, 0x13, 0x14, 0x03, 0x09,
-0x09, 0x05, 0x03, 0x2f, 0xe5, 0x01, 0x0d, 0x03,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x01, 0x0d, 0x03,
-0x05, 0x03, 0x09, 0x05, 0x03, 0x09, 0x09, 0x01,
-0x11, 0x01, 0x04, 0x04, 0x04, 0x06, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x09, 0x04, 0x06, 0x0b,
-0x03, 0x05, 0x03, 0x09, 0x09, 0x01, 0x0d, 0x03,
-0x03, 0x05, 0x03, 0x0e, 0xe8, 0x0a, 0x06, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0xe5,
-0xe5, 0x02, 0x07, 0xe5, 0xe5, 0x03, 0x02, 0x01,
-0x01, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0xe5, 0xe5,
-0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0xe5, 0xe5,
-0x01, 0x01, 0x01, 0x02, 0x03, 0x07, 0xe5, 0xe5,
-0xe6, 0xe5, 0x04, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x05, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x01, 0x07, 0x03, 0x02, 0x02, 0x02, 0x04,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x01, 0xe5, 0x05, 0x04, 0x03, 0x07, 0xe5,
-0xe5, 0x03, 0x04, 0x04, 0x0b, 0x02, 0xe5, 0x01,
-0xe5, 0x01, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff,
diff --git a/board/esd/ar405/fpgadata_xl30.c b/board/esd/ar405/fpgadata_xl30.c
deleted file mode 100644 (file)
index 42a9206..0000000
+++ /dev/null
@@ -1,4872 +0,0 @@
-0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0,
-0x0f, 0xf0, 0x00, 0x00, 0x01, 0x61, 0x00, 0x0d,
-0x70, 0x70, 0x63, 0x5f, 0x61, 0x72, 0x30, 0x31,
-0x2e, 0x6e, 0x63, 0x64, 0x00, 0x62, 0x00, 0x0b,
-0x73, 0x33, 0x30, 0x78, 0x6c, 0x70, 0x71, 0x32,
-0x34, 0x30, 0x00, 0x63, 0x00, 0x0b, 0x32, 0x30,
-0x30, 0x34, 0x2f, 0x31, 0x32, 0x2f, 0x31, 0x34,
-0x00, 0x64, 0x00, 0x09, 0x31, 0x37, 0x3a, 0x30,
-0x33, 0x3a, 0x32, 0x33, 0x00, 0x65, 0xe2, 0x01,
-0x00, 0x00, 0x97, 0xf2, 0xff, 0x30, 0xe6, 0x03,
-0xe5, 0x01, 0x01, 0x01, 0xe5, 0xe6, 0x04, 0x01,
-0x02, 0x11, 0x09, 0x09, 0x02, 0x04, 0x04, 0x06,
-0x09, 0x07, 0x09, 0x04, 0x04, 0x04, 0x04, 0x09,
-0x09, 0x0b, 0x09, 0x09, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x09, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x03, 0x07, 0x08, 0x01, 0xe5,
-0x0c, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x13, 0x03, 0x02, 0x02, 0x03, 0x02, 0x08,
-0x09, 0x11, 0x03, 0x11, 0x02, 0x06, 0x03, 0x05,
-0x03, 0x21, 0x33, 0x11, 0xe5, 0xe5, 0xe3, 0x17,
-0x0b, 0xe5, 0x01, 0x0f, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x04, 0x04, 0x02,
-0x06, 0x01, 0xe5, 0x05, 0x01, 0x02, 0x02, 0xe6,
-0x03, 0x04, 0x09, 0x09, 0x07, 0xe6, 0x03, 0x06,
-0x01, 0x07, 0x09, 0x04, 0x04, 0x09, 0x09, 0x06,
-0x02, 0x04, 0x04, 0x04, 0x04, 0x09, 0x09, 0x09,
-0x12, 0x14, 0x09, 0x09, 0x03, 0x05, 0x03, 0x05,
-0x09, 0x09, 0x03, 0x05, 0x09, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0xe5, 0xe6, 0x04, 0x0b, 0xe5, 0x07,
-0xe5, 0x07, 0x03, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0xe6, 0xe5, 0x04, 0x03, 0x05, 0x03,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0x09, 0x03, 0x0e, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x13, 0x03, 0x05, 0x03, 0x08, 0x31, 0xe5,
-0xe5, 0x37, 0x44, 0x01, 0x01, 0x01, 0x79, 0x8a,
-0xe5, 0x01, 0x10, 0x09, 0x09, 0x1d, 0x09, 0x38,
-0x04, 0x36, 0x45, 0xe7, 0xe5, 0x11, 0x09, 0x09,
-0x13, 0x09, 0x3e, 0x09, 0x3b, 0x1d, 0x18, 0x05,
-0x01, 0x01, 0x06, 0x73, 0x12, 0x77, 0xe5, 0xe5,
-0xe5, 0xa2, 0xe5, 0x41, 0x1c, 0xe8, 0x84, 0x1f,
-0x25, 0x3a, 0xe5, 0xe6, 0x3c, 0x70, 0x4e, 0x0c,
-0x10, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x03, 0x07, 0x01, 0x07,
-0x09, 0x09, 0x09, 0x09, 0x09, 0xe5, 0x07, 0x09,
-0x09, 0x09, 0x01, 0x07, 0x0d, 0xe5, 0x01, 0x10,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x07, 0x03,
-0x09, 0x05, 0x03, 0x05, 0x03, 0x09, 0x09, 0x09,
-0x05, 0x03, 0x09, 0x01, 0x07, 0x09, 0x09, 0x08,
-0x06, 0x01, 0x0d, 0xe5, 0x05, 0x01, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04, 0x01, 0xe6,
-0x07, 0xe5, 0x03, 0x02, 0xe6, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x01,
-0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x02, 0x04,
-0xe5, 0x07, 0xe5, 0x01, 0x0c, 0xe8, 0x0f, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x03,
-0x01, 0x07, 0x09, 0xe5, 0x07, 0xe5, 0x01, 0x02,
-0xe5, 0x02, 0x09, 0x09, 0x09, 0x09, 0x01, 0x01,
-0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06,
-0x0a, 0x05, 0xe5, 0x05, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x02, 0x06, 0xe5,
-0x03, 0x03, 0xe5, 0x03, 0x03, 0xe5, 0x04, 0x02,
-0xe5, 0x02, 0x01, 0x02, 0xe5, 0x01, 0x05, 0xe5,
-0x04, 0x02, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03,
-0x03, 0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07,
-0x02, 0x03, 0x03, 0x0f, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x08, 0x07, 0x01, 0x0d, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x05, 0x03, 0x09, 0x01, 0x03,
-0x05, 0x09, 0x09, 0x08, 0xe5, 0x06, 0x01, 0x09,
-0x08, 0xe5, 0x08, 0x09, 0x09, 0x09, 0x0a, 0x07,
-0xe6, 0x01, 0x03, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x04, 0x01, 0x02, 0x05, 0xe5, 0x01, 0x08, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x04, 0x01,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x06, 0x02, 0xe5, 0x02, 0x37, 0xe5, 0x04, 0x09,
-0x31, 0x05, 0x05, 0x13, 0x09, 0x04, 0x24, 0x07,
-0x09, 0x17, 0x02, 0x02, 0x01, 0x01, 0x03, 0x42,
-0x01, 0x13, 0x13, 0x10, 0x0c, 0x01, 0x09, 0x07,
-0x01, 0x06, 0x05, 0x24, 0x06, 0x0a, 0x0f, 0x0f,
-0x01, 0xe6, 0xe5, 0x1d, 0x1b, 0x21, 0x09, 0x09,
-0x13, 0x01, 0x13, 0x1d, 0x05, 0x17, 0x2b, 0x05,
-0xe6, 0x33, 0x04, 0x05, 0xe5, 0x05, 0x03, 0x06,
-0x2c, 0x0b, 0x04, 0x1d, 0x59, 0xe6, 0x0f, 0x09,
-0x09, 0x09, 0x09, 0x07, 0x01, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x01, 0x05, 0x03, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x0d, 0xe5, 0x01, 0x2b, 0x02, 0x1a, 0x13,
-0x02, 0x09, 0x06, 0x0c, 0x08, 0xe5, 0xe5, 0x05,
-0x02, 0xe5, 0x07, 0x06, 0x01, 0xe5, 0x09, 0x0f,
-0x01, 0xe5, 0x0f, 0x09, 0x03, 0x03, 0x01, 0x1b,
-0xe5, 0xe5, 0x2a, 0x12, 0x2f, 0xe5, 0x08, 0x09,
-0x0b, 0x16, 0x06, 0x16, 0x12, 0x06, 0x03, 0x08,
-0x1c, 0x01, 0x2b, 0x1e, 0x03, 0x0e, 0xe5, 0x07,
-0x0a, 0x03, 0x04, 0x0c, 0x04, 0x03, 0xe5, 0x07,
-0x6a, 0xe5, 0x01, 0x59, 0x06, 0x03, 0x1c, 0x0b,
-0x0b, 0x18, 0x0d, 0x13, 0x2b, 0x06, 0xe7, 0x14,
-0x0a, 0x09, 0x2c, 0x15, 0x64, 0x34, 0x01, 0xe5,
-0x13, 0x16, 0x09, 0x01, 0x17, 0x0b, 0x01, 0x09,
-0x01, 0x01, 0x2a, 0x0e, 0x01, 0x04, 0x02, 0x01,
-0x09, 0x07, 0x01, 0x02, 0x04, 0x01, 0x07, 0xe6,
-0x01, 0xe5, 0x02, 0xe7, 0x05, 0x01, 0x13, 0x05,
-0xe7, 0x2d, 0x06, 0x02, 0x0a, 0x0c, 0x0f, 0x06,
-0x01, 0x0d, 0x0e, 0x1e, 0x01, 0x07, 0x02, 0x07,
-0x09, 0xe5, 0x08, 0x08, 0x08, 0x0a, 0x01, 0x19,
-0x01, 0x54, 0xe5, 0x26, 0x03, 0x01, 0x12, 0x10,
-0x02, 0x13, 0x0e, 0x06, 0x08, 0x23, 0x04, 0x01,
-0x01, 0x10, 0x13, 0xe5, 0x02, 0x04, 0x09, 0x09,
-0x09, 0x02, 0x06, 0x15, 0x09, 0x01, 0x02, 0x02,
-0x07, 0x05, 0x11, 0x06, 0x01, 0x0a, 0x13, 0x0d,
-0x02, 0x30, 0xe6, 0x01, 0x0f, 0x34, 0x23, 0x11,
-0xe5, 0x28, 0x30, 0x0b, 0x1b, 0x07, 0xe5, 0x26,
-0x12, 0x11, 0xe5, 0x26, 0x25, 0xe6, 0xe5, 0x0b,
-0x05, 0x03, 0x01, 0x4d, 0x02, 0xe5, 0x10, 0x5a,
-0x14, 0xe6, 0x18, 0x2d, 0x10, 0x13, 0x17, 0x01,
-0x33, 0x33, 0x01, 0x04, 0x02, 0x01, 0x09, 0x08,
-0x02, 0xe6, 0xe6, 0x03, 0x04, 0x02, 0x01, 0x04,
-0x04, 0x07, 0x01, 0x0a, 0x06, 0x01, 0x07, 0x01,
-0x0a, 0x08, 0x15, 0x0d, 0xe7, 0x19, 0x04, 0x13,
-0x21, 0x01, 0x11, 0x09, 0x07, 0xe6, 0x09, 0x03,
-0x05, 0xe5, 0x01, 0x10, 0x06, 0x02, 0x0b, 0x05,
-0x01, 0x1d, 0x06, 0x1b, 0x01, 0xe6, 0x24, 0x2f,
-0x13, 0x08, 0x13, 0x0c, 0x14, 0x07, 0x30, 0x01,
-0x02, 0x21, 0x01, 0xe6, 0x1f, 0x1f, 0xe5, 0x25,
-0xe5, 0x0e, 0x0a, 0x03, 0x09, 0x06, 0x02, 0xe5,
-0x11, 0xe5, 0x07, 0xe5, 0x04, 0x06, 0xe5, 0x03,
-0x0b, 0x27, 0xe7, 0xe6, 0x01, 0x01, 0x2d, 0x01,
-0x0e, 0x20, 0x01, 0x01, 0x12, 0x0b, 0xe5, 0x02,
-0x0b, 0x01, 0xe5, 0x0f, 0xe5, 0xe6, 0x01, 0xe5,
-0x03, 0xe5, 0x01, 0x07, 0x03, 0xe5, 0x0b, 0x09,
-0x14, 0xe5, 0x08, 0x01, 0x04, 0x01, 0x04, 0x40,
-0xe5, 0x01, 0x01, 0x1d, 0x01, 0x0f, 0x04, 0x01,
-0xe5, 0x09, 0xe5, 0xe5, 0xe5, 0x06, 0x03, 0xe5,
-0x0a, 0xe5, 0x0c, 0x07, 0x10, 0x01, 0xe5, 0x05,
-0xe5, 0x02, 0x0e, 0x01, 0x02, 0x09, 0x05, 0x01,
-0xe5, 0x01, 0x43, 0x02, 0x01, 0x2f, 0x06, 0x0b,
-0x02, 0x01, 0x07, 0x10, 0x0c, 0x0b, 0x0e, 0x02,
-0x06, 0xe5, 0x11, 0x02, 0x01, 0x0b, 0x02, 0x02,
-0xe5, 0x46, 0x0d, 0x13, 0x19, 0x02, 0x02, 0x05,
-0xe5, 0x09, 0x09, 0x01, 0x05, 0x03, 0x09, 0x06,
-0xe5, 0x10, 0x06, 0x03, 0x09, 0x08, 0x03, 0x02,
-0xe5, 0x01, 0x08, 0xe5, 0xe5, 0x01, 0x4a, 0x05,
-0x03, 0x01, 0x02, 0x0e, 0x04, 0x0e, 0x07, 0x03,
-0x03, 0xe5, 0x03, 0x05, 0x03, 0x05, 0x01, 0x01,
-0x05, 0x03, 0x04, 0xe5, 0x02, 0x03, 0x03, 0x01,
-0x01, 0x02, 0x0a, 0x04, 0x01, 0xe7, 0x04, 0x01,
-0xe5, 0x0b, 0x02, 0x01, 0x01, 0x04, 0x03, 0xe8,
-0x42, 0x04, 0x01, 0x09, 0x13, 0x05, 0x1e, 0xe7,
-0xe5, 0x03, 0x01, 0xe5, 0x08, 0x01, 0x0f, 0x03,
-0x07, 0x0e, 0x01, 0x01, 0x05, 0x06, 0x13, 0x0d,
-0x03, 0xe5, 0x48, 0x01, 0x07, 0x3a, 0x02, 0x01,
-0x04, 0x02, 0x09, 0x01, 0x11, 0x0b, 0x0d, 0xe5,
-0x01, 0x01, 0x1b, 0x01, 0x0e, 0xe8, 0x08, 0x02,
-0x6a, 0xe5, 0x07, 0x0d, 0x07, 0xe6, 0x10, 0x02,
-0x06, 0x09, 0x1d, 0x02, 0x06, 0x1e, 0xe5, 0xe6,
-0x09, 0xe5, 0x75, 0xe6, 0x12, 0x09, 0x09, 0x0b,
-0x07, 0x01, 0x11, 0x09, 0x06, 0x04, 0x11, 0x09,
-0x02, 0xe6, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x02, 0x06, 0x09, 0x09, 0x02, 0x03, 0x02,
-0x09, 0x0b, 0x09, 0x03, 0x02, 0x02, 0x03, 0xe5,
-0xe5, 0x01, 0x05, 0x03, 0x06, 0x02, 0x03, 0x05,
-0x02, 0x01, 0x01, 0x02, 0x03, 0x02, 0x02, 0x05,
-0x03, 0x04, 0x01, 0x02, 0x06, 0x02, 0x03, 0x09,
-0x02, 0x01, 0x02, 0x6a, 0x02, 0x1f, 0x08, 0x0a,
-0x10, 0x02, 0x13, 0x08, 0xe5, 0x1b, 0xe5, 0x0d,
-0x02, 0x03, 0x6e, 0x1e, 0x14, 0x12, 0x13, 0x0b,
-0x1d, 0x13, 0x02, 0x21, 0x01, 0x2e, 0x02, 0x11,
-0x13, 0x0a, 0x0a, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x06, 0x02, 0x09, 0x07, 0x08, 0xe5, 0xe5, 0x06,
-0x01, 0x06, 0x0c, 0x07, 0x01, 0x04, 0x09, 0xe8,
-0x20, 0x01, 0xe5, 0x0c, 0x22, 0xe5, 0x0f, 0x02,
-0x09, 0x06, 0x02, 0x08, 0x02, 0x06, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5,
-0x05, 0x03, 0x05, 0x02, 0x03, 0x02, 0x01, 0xe5,
-0x05, 0x01, 0x01, 0x02, 0x02, 0x01, 0xe6, 0xe5,
-0x01, 0xe5, 0x01, 0x06, 0x01, 0x01, 0x05, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0x1f, 0xe5, 0xe5, 0x30,
-0x11, 0x29, 0x01, 0x07, 0x01, 0x06, 0xe5, 0xe5,
-0x0d, 0x02, 0x01, 0x06, 0xe5, 0x08, 0x01, 0x04,
-0x02, 0x01, 0x13, 0x09, 0x03, 0x0a, 0x02, 0xe5,
-0x14, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x06, 0xe6, 0xe6, 0x04, 0xe5, 0xe6, 0xe5, 0x02,
-0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0xe6, 0x04, 0xe5,
-0xe5, 0x05, 0xe5, 0xe6, 0xe5, 0x05, 0xe5, 0x04,
-0x02, 0xe5, 0xe5, 0x04, 0x01, 0x01, 0x05, 0xe5,
-0x07, 0xe6, 0x06, 0xe6, 0x06, 0xe7, 0x02, 0x02,
-0x01, 0xe5, 0x7a, 0x06, 0x07, 0x03, 0x02, 0x01,
-0x03, 0x03, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x02,
-0x04, 0x04, 0x04, 0x07, 0x09, 0x01, 0x05, 0x01,
-0x01, 0x09, 0x07, 0x0b, 0x0e, 0x01, 0x01, 0x7b,
-0x08, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0xe5, 0x05,
-0xe5, 0xe6, 0x02, 0x01, 0xe5, 0xe5, 0x02, 0x02,
-0x02, 0x03, 0x02, 0xe5, 0x07, 0xe5, 0x08, 0x01,
-0x06, 0xe5, 0xe5, 0x08, 0x09, 0x07, 0x10, 0xe5,
-0xe6, 0x70, 0x12, 0x05, 0x04, 0xe5, 0x01, 0x04,
-0xe6, 0x01, 0x03, 0x01, 0xe6, 0xe6, 0x03, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe6, 0x04, 0x01, 0x03,
-0x05, 0x15, 0x0b, 0x0e, 0x01, 0xe6, 0x37, 0x4e,
-0x02, 0x02, 0xe5, 0x01, 0x01, 0x04, 0x02, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0xe5, 0x01, 0x06, 0x02,
-0x03, 0x04, 0xe5, 0x02, 0x05, 0x03, 0x01, 0xe5,
-0x05, 0x04, 0x09, 0x06, 0x07, 0x04, 0x0b, 0xe6,
-0xe5, 0x66, 0x13, 0x02, 0x07, 0x14, 0xe5, 0xe5,
-0x37, 0xe5, 0xe5, 0x08, 0x10, 0x02, 0x0d, 0xe8,
-0x10, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x01, 0x02, 0x02, 0x01, 0xe5, 0x07,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0xe6, 0x04, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05,
-0xe6, 0xe5, 0x04, 0x01, 0x01, 0x05, 0x01, 0x02,
-0x08, 0xe5, 0xe5, 0x1f, 0x20, 0x0d, 0x0b, 0x1b,
-0x03, 0x05, 0x07, 0xe5, 0x01, 0x13, 0x05, 0x0a,
-0x08, 0xe6, 0x0d, 0x05, 0x05, 0x02, 0x05, 0x03,
-0x0f, 0xe5, 0x01, 0x0d, 0xe8, 0x09, 0x12, 0x1f,
-0x1d, 0x08, 0x04, 0x04, 0x05, 0x09, 0x08, 0x16,
-0x0f, 0x25, 0x2f, 0xe5, 0xe8, 0x3e, 0x0c, 0x03,
-0xe5, 0x34, 0x0d, 0x0f, 0x05, 0x06, 0x03, 0xe6,
-0xe5, 0x0b, 0x12, 0x0d, 0x1b, 0xe5, 0x02, 0xe5,
-0x11, 0xe5, 0x0b, 0x01, 0x2f, 0xe6, 0x1a, 0x0c,
-0x12, 0x01, 0x01, 0x02, 0x02, 0x09, 0x0d, 0x07,
-0x01, 0x02, 0x09, 0x02, 0x01, 0x04, 0x08, 0x05,
-0x07, 0xe6, 0x08, 0x05, 0x07, 0x02, 0x01, 0x2f,
-0x01, 0x34, 0x0c, 0x06, 0x08, 0x01, 0xe5, 0x0c,
-0x08, 0x09, 0x0c, 0x14, 0x05, 0x0f, 0x01, 0x08,
-0x01, 0x0d, 0x09, 0x01, 0x03, 0x2f, 0x23, 0x15,
-0x09, 0x02, 0x01, 0x0c, 0xe5, 0x05, 0x03, 0xe6,
-0x0d, 0x16, 0x11, 0x01, 0x0a, 0xe5, 0x0b, 0x0a,
-0x03, 0x05, 0x0a, 0xe5, 0xe6, 0x0f, 0x02, 0x08,
-0x13, 0x31, 0x04, 0x02, 0x0d, 0x05, 0x05, 0xe5,
-0x0d, 0x06, 0x02, 0x13, 0xe5, 0x07, 0x13, 0x06,
-0x01, 0x02, 0x0d, 0x08, 0xe5, 0x05, 0x0b, 0x02,
-0x0a, 0xe5, 0x2d, 0x2c, 0x02, 0x09, 0x18, 0xe5,
-0x08, 0x02, 0x0d, 0x22, 0x08, 0x30, 0x01, 0x01,
-0x1d, 0x04, 0x04, 0x35, 0x01, 0x0b, 0x08, 0x03,
-0x08, 0x02, 0xe5, 0x04, 0xe6, 0x01, 0x04, 0xe5,
-0x02, 0xe7, 0x01, 0x03, 0xe5, 0x07, 0xe7, 0x03,
-0x01, 0x09, 0x44, 0xe5, 0xe5, 0x21, 0x48, 0x19,
-0x17, 0x07, 0x0b, 0x0e, 0x41, 0x03, 0xe5, 0x01,
-0x02, 0x6b, 0x05, 0x0d, 0x04, 0x01, 0x04, 0x09,
-0x09, 0x0e, 0x0a, 0x23, 0x17, 0x11, 0x6c, 0x01,
-0x04, 0x1a, 0x1d, 0x04, 0x1a, 0x39, 0xe6, 0xe5,
-0x04, 0x6d, 0x12, 0x25, 0x02, 0x01, 0x0d, 0x2a,
-0x1c, 0x01, 0xe7, 0x07, 0x01, 0x05, 0x01, 0xe5,
-0x04, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0xe5,
-0x02, 0xe5, 0x44, 0x10, 0x02, 0x18, 0xe5, 0x03,
-0xe5, 0xe6, 0x04, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x0b, 0x01, 0x11, 0xe5, 0x05, 0x01, 0x01, 0x04,
-0xe5, 0x08, 0x09, 0x01, 0xe6, 0xe5, 0x01, 0x01,
-0x04, 0xe5, 0x11, 0xe5, 0x04, 0x02, 0xe5, 0x4b,
-0x02, 0x01, 0xe5, 0x03, 0x06, 0xe5, 0x07, 0x09,
-0x06, 0xe5, 0xe5, 0x01, 0x06, 0xe5, 0x07, 0x09,
-0x05, 0xe5, 0x01, 0x1a, 0xe5, 0x16, 0x01, 0x02,
-0x01, 0xe6, 0x03, 0x16, 0x13, 0x15, 0xe5, 0x01,
-0x01, 0x25, 0x06, 0x01, 0x02, 0x0b, 0x1d, 0x02,
-0x06, 0x01, 0x07, 0x01, 0x02, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x04, 0x01, 0x18, 0x11, 0x04, 0xe6,
-0xe5, 0x01, 0x43, 0xe5, 0xe5, 0xe5, 0x21, 0xe5,
-0xe5, 0x13, 0xe5, 0x08, 0x09, 0x06, 0xe5, 0x0a,
-0x06, 0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x25,
-0x06, 0x04, 0xe6, 0x11, 0x09, 0x09, 0x3b, 0x04,
-0x08, 0xe5, 0xe5, 0x0c, 0x02, 0x04, 0x09, 0x03,
-0x02, 0xe5, 0x0e, 0x02, 0x02, 0x05, 0xe5, 0x05,
-0x02, 0x06, 0x02, 0x06, 0x02, 0xe5, 0xe5, 0x02,
-0x02, 0x05, 0x09, 0x0c, 0x07, 0x02, 0xe6, 0x01,
-0x4a, 0x1b, 0x01, 0x02, 0xe7, 0xe5, 0x06, 0x03,
-0x02, 0x01, 0x02, 0x03, 0x01, 0x02, 0x04, 0x02,
-0x01, 0x04, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01,
-0xe5, 0x02, 0x03, 0xe6, 0x02, 0x02, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0xe5, 0xe5, 0x01, 0x01, 0x1f, 0x02, 0x02, 0x01,
-0xe7, 0x12, 0x09, 0x06, 0x0a, 0x18, 0x01, 0x15,
-0x02, 0x01, 0xe5, 0x08, 0x0b, 0x0b, 0x09, 0x07,
-0x0b, 0x09, 0x05, 0x03, 0x09, 0x09, 0x07, 0x01,
-0x0e, 0x01, 0x04, 0x02, 0x01, 0x10, 0xe5, 0x01,
-0xe5, 0x10, 0xe8, 0x04, 0xe5, 0xe6, 0x05, 0x22,
-0x01, 0x16, 0x01, 0x04, 0x07, 0x04, 0x10, 0x27,
-0x29, 0x0b, 0xe5, 0xe5, 0x06, 0x01, 0x15, 0xe6,
-0x08, 0x02, 0x03, 0x09, 0x04, 0x04, 0x3b, 0x04,
-0x07, 0x02, 0x10, 0x02, 0x08, 0xe5, 0x07, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x06, 0xe5, 0x07, 0xe5,
-0x11, 0xe5, 0x0e, 0x02, 0x01, 0x04, 0x04, 0x07,
-0x02, 0x06, 0xe5, 0x02, 0x0a, 0x05, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x39, 0xe5, 0x0b, 0x06, 0x2c,
-0x09, 0x13, 0xe5, 0x1b, 0x05, 0xe5, 0x01, 0xe6,
-0x02, 0xe5, 0x0b, 0x09, 0x01, 0x01, 0xe6, 0x06,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0x09,
-0x09, 0x09, 0x09, 0x09, 0xe6, 0x06, 0x02, 0xe5,
-0x01, 0x02, 0x09, 0x04, 0x01, 0x04, 0x09, 0x09,
-0x02, 0x02, 0x03, 0x04, 0xe6, 0x01, 0x06, 0x02,
-0x09, 0x02, 0x06, 0x02, 0x01, 0x01, 0x02, 0x03,
-0x05, 0xe5, 0x07, 0xe6, 0x06, 0x05, 0x07, 0x02,
-0x01, 0x02, 0x6c, 0xe5, 0x08, 0x15, 0x09, 0x09,
-0x12, 0x0a, 0x09, 0x27, 0x0e, 0x05, 0xe5, 0x10,
-0x09, 0x53, 0x08, 0x14, 0x09, 0x09, 0x1d, 0x09,
-0x1b, 0x0d, 0x12, 0xe8, 0x0f, 0x01, 0x07, 0xe6,
-0x06, 0x01, 0x39, 0x01, 0x10, 0x02, 0x03, 0xe5,
-0x09, 0x0a, 0x08, 0xe5, 0x08, 0x09, 0x01, 0x07,
-0x09, 0x09, 0x13, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0xe5, 0x16, 0x01, 0x11, 0x09, 0x09, 0x3b,
-0x08, 0x06, 0x03, 0x01, 0x05, 0xe5, 0x0a, 0x08,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x09,
-0x05, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01,
-0x01, 0x09, 0x02, 0xe9, 0x19, 0x47, 0x02, 0x0c,
-0x09, 0x15, 0x09, 0x04, 0x04, 0x06, 0xe5, 0xe5,
-0x1c, 0x09, 0x03, 0x0d, 0x01, 0x09, 0x03, 0x0b,
-0xe5, 0xe5, 0x12, 0xe7, 0x05, 0xe7, 0x05, 0xe7,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe6, 0x06,
-0xe6, 0x04, 0xe7, 0xe5, 0x06, 0xe7, 0x04, 0xe8,
-0x04, 0xe8, 0x05, 0xe7, 0xe5, 0x02, 0xe7, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0xe8, 0x06,
-0xe5, 0x05, 0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0xe5,
-0x01, 0x05, 0xe5, 0x06, 0x01, 0x01, 0x1a, 0x45,
-0x06, 0x01, 0x09, 0x0e, 0x01, 0x09, 0x01, 0x06,
-0x02, 0x03, 0x03, 0x01, 0x07, 0x01, 0xe5, 0xe6,
-0x04, 0x02, 0x03, 0x02, 0x02, 0x03, 0x09, 0xe5,
-0xe5, 0x09, 0x01, 0x0a, 0xe5, 0x06, 0x0c, 0x02,
-0x02, 0x13, 0x02, 0x06, 0x02, 0x06, 0x02, 0x35,
-0x02, 0x03, 0x01, 0x09, 0x02, 0x0a, 0x02, 0x01,
-0x08, 0xe5, 0x07, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x07, 0xe6, 0xe6, 0x02, 0xe7, 0x06, 0xe6, 0x06,
-0x09, 0xe5, 0x09, 0x01, 0x03, 0x02, 0x06, 0x02,
-0x02, 0x02, 0x04, 0xe5, 0x03, 0xe5, 0xe5, 0xe5,
-0x10, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0x36, 0x03, 0x0d, 0x0f, 0x03, 0x07,
-0x08, 0xe5, 0x08, 0x09, 0x03, 0x03, 0x01, 0x09,
-0x09, 0x09, 0x03, 0x01, 0x09, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x01, 0x07, 0x06, 0xe6, 0xe5, 0x12,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x37, 0x01, 0x0d, 0x0a, 0x02, 0x01, 0x09, 0x09,
-0xe5, 0x04, 0x02, 0x06, 0x02, 0xe5, 0x01, 0x01,
-0xe5, 0x02, 0x08, 0xe5, 0x0e, 0x02, 0x03, 0x0f,
-0x09, 0x05, 0x08, 0x03, 0x01, 0xe5, 0x01, 0x6b,
-0x05, 0x09, 0x02, 0x01, 0x10, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0xe5, 0x11, 0x05,
-0xe5, 0xe6, 0x04, 0xe5, 0xe5, 0x05, 0x02, 0x03,
-0xe5, 0x26, 0x02, 0x11, 0x01, 0xe6, 0x04, 0x01,
-0xe6, 0x04, 0x01, 0x01, 0x05, 0x01, 0x06, 0xe5,
-0xe5, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x01, 0x05, 0xe6, 0x06, 0x01,
-0xe5, 0x02, 0x04, 0x01, 0x03, 0x03, 0x01, 0x02,
-0x01, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0x03, 0x03, 0x01, 0x03,
-0x03, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x0a, 0x01, 0x01, 0x0b, 0xe5,
-0x02, 0x04, 0x03, 0xe5, 0x07, 0xe5, 0x29, 0x0f,
-0xe5, 0x03, 0x0c, 0x02, 0x05, 0xe5, 0x36, 0x03,
-0x06, 0x17, 0x04, 0x06, 0x01, 0x07, 0x14, 0x03,
-0xe5, 0x01, 0xe5, 0x03, 0x08, 0x13, 0x0f, 0x09,
-0x0a, 0x16, 0x07, 0x09, 0x08, 0x0a, 0x0b, 0x04,
-0xe6, 0xe5, 0x08, 0x09, 0x19, 0xe5, 0x01, 0x0a,
-0x0c, 0x05, 0x05, 0x04, 0x03, 0x0a, 0x01, 0x01,
-0x02, 0x13, 0x02, 0xe5, 0xe5, 0x07, 0x3b, 0x19,
-0x01, 0x09, 0x05, 0x0d, 0x05, 0x02, 0x07, 0x01,
-0xe5, 0x06, 0x12, 0x09, 0x1a, 0x04, 0x0a, 0x09,
-0xe9, 0x18, 0x45, 0x06, 0x01, 0xe5, 0x05, 0x02,
-0x06, 0x04, 0xe5, 0x03, 0xe6, 0x04, 0x01, 0x02,
-0x07, 0x06, 0x02, 0x0b, 0x04, 0x04, 0xe5, 0x02,
-0x02, 0x01, 0x04, 0x02, 0x06, 0x07, 0x02, 0x0b,
-0x01, 0x07, 0x01, 0x0c, 0x02, 0xe5, 0xe5, 0x0a,
-0x1c, 0x3a, 0x01, 0x02, 0x01, 0x09, 0x04, 0x04,
-0x02, 0x01, 0x01, 0x07, 0x03, 0x0c, 0x05, 0x03,
-0x06, 0x15, 0x0a, 0x1c, 0x01, 0x07, 0x0e, 0xe6,
-0xe6, 0x21, 0x0d, 0x3c, 0xe5, 0x02, 0x03, 0x0d,
-0x03, 0x09, 0x02, 0x05, 0xe5, 0xe5, 0x02, 0x07,
-0x09, 0x03, 0x05, 0x01, 0x01, 0x01, 0x02, 0x02,
-0x06, 0x0a, 0x05, 0x07, 0x09, 0x04, 0x0c, 0xe7,
-0x11, 0x02, 0x05, 0xe5, 0x1d, 0x0d, 0x04, 0x09,
-0x09, 0x09, 0x07, 0x10, 0x01, 0x04, 0x05, 0x08,
-0x10, 0x16, 0xe6, 0x0a, 0x08, 0x06, 0xe5, 0x07,
-0x05, 0x03, 0x11, 0xe7, 0x23, 0x26, 0x18, 0x09,
-0x05, 0x03, 0x0d, 0x0f, 0x06, 0x02, 0x02, 0x1c,
-0x11, 0xe5, 0x0e, 0x04, 0x04, 0x04, 0x02, 0x10,
-0xe5, 0xe6, 0x09, 0x05, 0x09, 0x09, 0x02, 0x53,
-0x01, 0x07, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe6,
-0x03, 0x10, 0x08, 0x06, 0xe5, 0x0d, 0x0e, 0x0b,
-0x05, 0x03, 0x09, 0x0d, 0xe5, 0x01, 0x46, 0x39,
-0x04, 0x04, 0x08, 0x22, 0x02, 0x01, 0x01, 0x1b,
-0x0b, 0x21, 0xe5, 0xe5, 0x08, 0x05, 0x01, 0x07,
-0x01, 0x09, 0x0d, 0x3a, 0x05, 0x03, 0x01, 0x0c,
-0xe6, 0x08, 0x09, 0x04, 0x01, 0x09, 0x31, 0xe5,
-0xe6, 0x09, 0x03, 0x04, 0x05, 0x07, 0x02, 0xe5,
-0x0f, 0xe5, 0x0d, 0x02, 0x27, 0x2d, 0x08, 0x0a,
-0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x08, 0x12,
-0x04, 0x19, 0x06, 0x09, 0x06, 0x10, 0xe6, 0xe6,
-0x0b, 0xe5, 0x08, 0x03, 0x06, 0x02, 0x02, 0x21,
-0x16, 0x0b, 0x14, 0x0b, 0x02, 0x05, 0x02, 0xe6,
-0x33, 0x11, 0x04, 0x03, 0x02, 0x02, 0x13, 0x01,
-0x01, 0x01, 0x01, 0x5d, 0xe5, 0x06, 0x10, 0x02,
-0xe5, 0x05, 0x01, 0x0b, 0x09, 0x09, 0xe5, 0x11,
-0xe5, 0x04, 0x02, 0xe5, 0x12, 0x02, 0xe5, 0x03,
-0xe5, 0x1d, 0xe5, 0x01, 0x01, 0x02, 0x03, 0x1f,
-0x33, 0x01, 0x04, 0x05, 0xe5, 0x02, 0x10, 0xe5,
-0x11, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x05, 0xe6, 0xe5, 0x05,
-0xe5, 0x0a, 0x23, 0x01, 0x01, 0x02, 0xe5, 0xe6,
-0x03, 0x01, 0x02, 0xe5, 0x01, 0x06, 0x01, 0x02,
-0x04, 0x01, 0xe5, 0x23, 0x01, 0x05, 0x1a, 0x07,
-0x09, 0x04, 0x05, 0x05, 0x0b, 0x01, 0xe5, 0xe5,
-0x08, 0x01, 0x07, 0x09, 0x07, 0x01, 0x09, 0x15,
-0x02, 0xe5, 0x02, 0x04, 0xe5, 0x0a, 0x01, 0x05,
-0x02, 0xe5, 0xe5, 0x05, 0xe5, 0x01, 0x09, 0x2e,
-0x20, 0x06, 0x02, 0x0b, 0x13, 0x06, 0x02, 0x01,
-0x09, 0x09, 0x09, 0x07, 0x01, 0x09, 0x0d, 0xe5,
-0x11, 0xe5, 0x0f, 0x02, 0x01, 0xe7, 0xe5, 0x0c,
-0x02, 0x02, 0x03, 0x03, 0x01, 0x03, 0x05, 0x1c,
-0x1a, 0x06, 0x05, 0xe6, 0xe5, 0x06, 0x08, 0x02,
-0x01, 0x07, 0x06, 0xe6, 0x05, 0x02, 0x02, 0x09,
-0x09, 0x13, 0x0c, 0x06, 0xe5, 0x02, 0x01, 0x03,
-0x02, 0x02, 0x11, 0xe9, 0x03, 0x0a, 0x05, 0xe5,
-0x01, 0x06, 0x02, 0x03, 0xe6, 0x21, 0x19, 0x03,
-0x03, 0x01, 0x01, 0x09, 0x01, 0x03, 0x03, 0x01,
-0x01, 0x09, 0x04, 0x04, 0x04, 0x02, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x09, 0x07, 0x01, 0x12, 0x05,
-0x03, 0x05, 0x0b, 0x02, 0x02, 0xe5, 0xe6, 0x0e,
-0x05, 0x0b, 0x27, 0x17, 0x07, 0x07, 0x05, 0xe5,
-0x01, 0x0b, 0x01, 0x07, 0x06, 0xe5, 0xe5, 0xe5,
-0x03, 0xe5, 0x02, 0x04, 0x04, 0x04, 0x01, 0x02,
-0x04, 0x0e, 0x0c, 0x04, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x03, 0x08, 0x04, 0xe6, 0x01, 0xe5, 0x0b,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x24, 0x18, 0xe6,
-0x01, 0x05, 0xe5, 0x01, 0x04, 0x06, 0x09, 0x01,
-0x0e, 0xe7, 0xe5, 0x03, 0xe6, 0x01, 0x05, 0x03,
-0x04, 0x04, 0x05, 0x0d, 0x0b, 0xe5, 0xe5, 0x01,
-0x02, 0x03, 0x01, 0xe5, 0x01, 0x1a, 0xe5, 0x08,
-0x02, 0x03, 0x02, 0xe5, 0x04, 0x09, 0x02, 0x1d,
-0x1a, 0x2c, 0x27, 0xe6, 0x10, 0x02, 0x06, 0x02,
-0x03, 0x04, 0x04, 0x02, 0xe5, 0x04, 0x0c, 0x02,
-0x07, 0xe5, 0x01, 0x14, 0x13, 0x01, 0x1b, 0xe6,
-0x16, 0xe5, 0x12, 0x18, 0x01, 0x11, 0x27, 0x0f,
-0xe5, 0x1c, 0x02, 0x06, 0x02, 0xe6, 0xe6, 0x0a,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0xe5, 0x02,
-0x02, 0xe5, 0x01, 0x05, 0x09, 0x09, 0x09, 0x09,
-0x09, 0xe6, 0x06, 0x06, 0x02, 0x09, 0x06, 0x04,
-0x03, 0x02, 0x02, 0x09, 0x03, 0x05, 0x09, 0x02,
-0x06, 0x09, 0x03, 0x05, 0x09, 0xe5, 0x04, 0x02,
-0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5, 0x05, 0x05,
-0x07, 0x03, 0xe5, 0x01, 0x06, 0x02, 0x06, 0x09,
-0x2a, 0x24, 0x02, 0x12, 0xe5, 0x07, 0x02, 0x4c,
-0x0b, 0xe5, 0x08, 0x0e, 0x02, 0x03, 0x0b, 0x39,
-0x28, 0x14, 0x0b, 0x4b, 0x0b, 0x09, 0x16, 0xe6,
-0x0c, 0x02, 0x09, 0x09, 0x19, 0xe5, 0xe5, 0x06,
-0x01, 0x14, 0xe6, 0x0a, 0x04, 0x02, 0x03, 0x0b,
-0xe5, 0xe5, 0x2d, 0x1e, 0x01, 0xe7, 0xe5, 0x04,
-0x09, 0x15, 0x01, 0x02, 0xe5, 0x0e, 0x2f, 0x01,
-0xe5, 0x05, 0x03, 0x13, 0x0f, 0x03, 0x01, 0x02,
-0x03, 0x05, 0x02, 0x01, 0xe5, 0x05, 0x02, 0x0a,
-0x04, 0x03, 0x05, 0x03, 0x09, 0x05, 0x03, 0x09,
-0x06, 0x01, 0xe6, 0x04, 0x0b, 0x07, 0x01, 0x01,
-0x01, 0x0d, 0xe5, 0x0c, 0x09, 0x01, 0x2c, 0x02,
-0x01, 0x0e, 0x18, 0x0d, 0x05, 0x01, 0x06, 0x07,
-0x12, 0x03, 0x01, 0x11, 0x01, 0x07, 0x01, 0x07,
-0x01, 0xe5, 0x1b, 0x0e, 0x01, 0x01, 0x15, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x02, 0x04,
-0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x06, 0xe6, 0xe6,
-0xe5, 0x03, 0x01, 0xe5, 0x04, 0xe5, 0xe5, 0x06,
-0xe6, 0x05, 0xe8, 0xe5, 0x02, 0xe7, 0x05, 0xe8,
-0xe5, 0x02, 0x01, 0xe6, 0xe5, 0x02, 0xe8, 0xe5,
-0x02, 0x01, 0xe6, 0x06, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x04, 0xe6, 0x07, 0x02, 0x23, 0x1b, 0x01,
-0x1e, 0xe5, 0x07, 0x10, 0x01, 0x04, 0x04, 0x01,
-0xe5, 0x07, 0xe5, 0x0f, 0x01, 0xe6, 0xe5, 0x05,
-0xe5, 0xe5, 0x02, 0x01, 0xe6, 0xe5, 0x08, 0x09,
-0xe5, 0x04, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x12,
-0x07, 0x02, 0xe5, 0x0e, 0x13, 0x1b, 0x01, 0x34,
-0x04, 0x01, 0x06, 0x01, 0xe5, 0xe6, 0x02, 0x01,
-0x03, 0x02, 0x02, 0x05, 0x03, 0xe5, 0xe5, 0x03,
-0x01, 0x07, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x13,
-0x06, 0x01, 0x01, 0x0b, 0x07, 0x01, 0x02, 0x01,
-0x02, 0xe5, 0x03, 0xe9, 0x08, 0x0f, 0x09, 0x46,
-0x10, 0x01, 0x06, 0x04, 0x05, 0xe5, 0x01, 0x04,
-0xe6, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x04, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x21, 0x07, 0x06, 0x03, 0x21,
-0x2c, 0x13, 0x07, 0x10, 0x01, 0x09, 0x01, 0xe5,
-0x01, 0xe5, 0x04, 0x02, 0x05, 0x03, 0x01, 0xe6,
-0xe6, 0x01, 0xe8, 0xe6, 0x02, 0xe7, 0xe6, 0x01,
-0xe8, 0xe5, 0x04, 0x01, 0x01, 0x03, 0x01, 0xe5,
-0x04, 0xe5, 0x05, 0x12, 0x04, 0x03, 0x03, 0x05,
-0x0d, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x02,
-0x24, 0x04, 0x22, 0x14, 0x0c, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0x0c, 0x06, 0x01, 0xe5, 0x0f, 0x07,
-0x0b, 0x09, 0x16, 0x03, 0x01, 0x01, 0x0e, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x03, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x03, 0x03, 0x01, 0x01, 0x05, 0x01,
-0xe5, 0x06, 0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x04,
-0x02, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0xe5, 0x05, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x04, 0x01, 0x0a, 0x03, 0x13, 0x0c,
-0xe5, 0x27, 0x02, 0x11, 0xe5, 0x08, 0x2b, 0x0a,
-0xe5, 0x02, 0x04, 0x02, 0xe5, 0x04, 0x09, 0x05,
-0x04, 0xe5, 0x0c, 0xe6, 0x05, 0x09, 0x04, 0x14,
-0x02, 0xe6, 0x09, 0x09, 0x30, 0x15, 0x01, 0x09,
-0x06, 0x0a, 0x08, 0x07, 0x04, 0x09, 0x06, 0x02,
-0x06, 0x09, 0x02, 0x06, 0x02, 0x06, 0x02, 0x0b,
-0xe5, 0xe5, 0x1f, 0x08, 0xe5, 0x02, 0x02, 0x19,
-0x42, 0x0b, 0x02, 0x09, 0x07, 0x09, 0x02, 0x08,
-0x09, 0x09, 0x09, 0x0f, 0x0f, 0x11, 0x20, 0x01,
-0xe6, 0x15, 0x01, 0x07, 0xe5, 0x04, 0x06, 0x19,
-0x01, 0x0b, 0x1d, 0x05, 0x01, 0x04, 0x04, 0x01,
-0x07, 0x0b, 0xe5, 0x05, 0xe5, 0xe5, 0x08, 0x06,
-0x01, 0xe5, 0x02, 0x05, 0x10, 0xe6, 0x06, 0x01,
-0x07, 0x01, 0x04, 0x15, 0xe6, 0x0b, 0x0a, 0x02,
-0x18, 0x18, 0x18, 0x0a, 0x07, 0xe5, 0xe5, 0x01,
-0x01, 0x02, 0x01, 0x05, 0x01, 0x01, 0x03, 0x07,
-0x10, 0x08, 0x04, 0x01, 0x0e, 0x0b, 0x06, 0x05,
-0x09, 0x04, 0x08, 0x0a, 0x01, 0xe6, 0x2b, 0x03,
-0x05, 0x11, 0x06, 0x18, 0xe5, 0x07, 0x0d, 0x03,
-0x11, 0x06, 0x0c, 0x0a, 0x08, 0x09, 0x09, 0x0d,
-0x09, 0x0b, 0x02, 0x0b, 0x03, 0x2b, 0x01, 0x2a,
-0x0d, 0xe5, 0xe5, 0x09, 0x09, 0x06, 0x0e, 0x0d,
-0x11, 0x07, 0x13, 0x0c, 0x06, 0x05, 0x1c, 0x02,
-0x0b, 0x22, 0x09, 0x14, 0x1c, 0x02, 0xe5, 0x04,
-0x02, 0x0a, 0x01, 0xe5, 0x19, 0x13, 0x27, 0x03,
-0x05, 0x11, 0x05, 0x07, 0x03, 0x09, 0x01, 0x11,
-0x3d, 0x1c, 0x0d, 0x03, 0x02, 0x02, 0xe6, 0x04,
-0x02, 0xe6, 0x06, 0xe5, 0x02, 0x01, 0x0c, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x03, 0x03, 0xe5, 0xe6,
-0x1e, 0x01, 0x12, 0x03, 0x02, 0xe5, 0x18, 0x44,
-0x17, 0x08, 0x01, 0xe5, 0x09, 0xe5, 0x02, 0x06,
-0x07, 0xe5, 0x11, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x04, 0x1d, 0x0f, 0x03, 0xe6, 0xe5, 0x11, 0x0d,
-0x0c, 0x0a, 0x12, 0x28, 0xe5, 0x06, 0x03, 0xe5,
-0x08, 0xe5, 0x08, 0x05, 0x15, 0x02, 0x22, 0xe5,
-0x02, 0x09, 0x0f, 0x0d, 0xe6, 0xe5, 0x27, 0x02,
-0x01, 0x2c, 0x0c, 0x01, 0x02, 0x01, 0x0a, 0x01,
-0xe6, 0x01, 0x0a, 0x11, 0x02, 0xe5, 0x0a, 0x03,
-0x01, 0xe5, 0x23, 0x22, 0x08, 0x03, 0xe5, 0x04,
-0x25, 0x1d, 0x0f, 0x07, 0x09, 0x1a, 0x14, 0x01,
-0x01, 0x11, 0x25, 0xe5, 0x04, 0x27, 0x02, 0xe7,
-0x0e, 0xe5, 0x07, 0x09, 0x1c, 0x01, 0x15, 0x01,
-0xe5, 0x02, 0xe5, 0x06, 0x1b, 0x04, 0xe7, 0x05,
-0x01, 0xe5, 0x05, 0x05, 0x03, 0x02, 0x01, 0x0e,
-0x09, 0x02, 0x01, 0x04, 0x08, 0xe5, 0x01, 0xe5,
-0x04, 0xe5, 0x07, 0x05, 0x0e, 0xe7, 0x01, 0x02,
-0x01, 0x05, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x04, 0x23, 0x09, 0xe5, 0x03, 0xe5, 0x01,
-0x03, 0x05, 0x0f, 0xe5, 0x07, 0xe5, 0x03, 0xe5,
-0x01, 0x15, 0xe5, 0x01, 0x02, 0x03, 0xe5, 0xe5,
-0x0b, 0x09, 0x02, 0xe5, 0x04, 0x0a, 0x01, 0xe5,
-0x01, 0xe5, 0x01, 0xe5, 0xe5, 0xe5, 0x03, 0x05,
-0x0b, 0x01, 0x03, 0x02, 0x04, 0x26, 0x29, 0x07,
-0x06, 0x01, 0x07, 0xe5, 0xe5, 0x08, 0x01, 0x0b,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x0c,
-0x20, 0xe5, 0x03, 0x09, 0x11, 0x0b, 0x05, 0x02,
-0x02, 0x24, 0xe5, 0x01, 0x1d, 0x09, 0x09, 0x09,
-0x06, 0xe5, 0x06, 0xe5, 0x01, 0x01, 0x08, 0xe5,
-0x04, 0xe5, 0x01, 0x01, 0x04, 0xe5, 0xe5, 0xe5,
-0x06, 0x09, 0xe5, 0xe5, 0x23, 0x09, 0x13, 0x0d,
-0x04, 0x01, 0x12, 0x09, 0x09, 0x07, 0x02, 0x02,
-0xe5, 0x17, 0xe5, 0x01, 0x02, 0x06, 0xe5, 0x03,
-0x07, 0x03, 0x01, 0xe5, 0xe5, 0x01, 0x01, 0x01,
-0x05, 0x08, 0x02, 0x09, 0x09, 0x04, 0x04, 0x07,
-0x0b, 0x09, 0x09, 0x07, 0x08, 0x02, 0x03, 0x05,
-0x06, 0x02, 0x0b, 0xe5, 0xe6, 0x01, 0x28, 0x02,
-0x08, 0x04, 0x01, 0x0a, 0x04, 0x01, 0x01, 0xe5,
-0x02, 0x03, 0xe6, 0x02, 0x08, 0x08, 0x01, 0xe5,
-0x02, 0x04, 0x07, 0x03, 0x09, 0x09, 0x05, 0x03,
-0x05, 0x02, 0xe5, 0xe5, 0x01, 0x21, 0x05, 0xe5,
-0x02, 0x03, 0xe5, 0x0b, 0x02, 0x08, 0x02, 0x01,
-0xe7, 0x11, 0xe5, 0x06, 0x08, 0x0f, 0x10, 0x01,
-0x0c, 0x05, 0x01, 0x03, 0x02, 0x01, 0x02, 0x04,
-0x04, 0x05, 0x01, 0x01, 0x0b, 0x04, 0x01, 0xe5,
-0xe5, 0x06, 0x01, 0x02, 0x04, 0x18, 0x0b, 0x01,
-0x07, 0x01, 0xe5, 0x06, 0x03, 0x05, 0x05, 0x07,
-0x0d, 0xe5, 0x01, 0xe5, 0x10, 0xe5, 0xe5, 0x05,
-0xe5, 0x08, 0xe6, 0x01, 0x02, 0x08, 0x0d, 0xe5,
-0x01, 0x09, 0x09, 0x04, 0x01, 0x01, 0xe5, 0x01,
-0x03, 0xe6, 0x01, 0x07, 0x01, 0x01, 0xe5, 0xe5,
-0x03, 0x03, 0xe5, 0xe5, 0xe6, 0xe5, 0xe6, 0x03,
-0x01, 0x01, 0xe5, 0x03, 0x03, 0xe5, 0x03, 0x02,
-0x0a, 0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x01, 0x02, 0x06, 0x03, 0xe5, 0xe5, 0x06, 0xe6,
-0x03, 0x0b, 0x02, 0xe6, 0xe5, 0x04, 0x0a, 0x04,
-0x04, 0x09, 0x09, 0x02, 0x09, 0x02, 0x10, 0xe5,
-0x0e, 0x09, 0x02, 0x10, 0x04, 0x06, 0x02, 0xe5,
-0x04, 0x09, 0x09, 0x09, 0x02, 0x06, 0x09, 0x04,
-0x04, 0x02, 0x01, 0x04, 0x02, 0x06, 0x04, 0x04,
-0x14, 0x02, 0xe6, 0xe5, 0x0f, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x0b, 0xe6, 0x03, 0x02, 0x13, 0xe5,
-0x0d, 0xe5, 0x0b, 0x01, 0x07, 0xe5, 0x03, 0xe5,
-0x09, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x08, 0x02, 0x01, 0x03, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x03, 0x07, 0x01, 0x03, 0xe5, 0x07,
-0xe5, 0x12, 0x03, 0xe5, 0xe6, 0x0d, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0x01, 0x01, 0x02, 0xe5, 0x07,
-0x03, 0x05, 0x09, 0x09, 0x09, 0xe7, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0x05, 0x09, 0xe5, 0x09, 0xe5,
-0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x02,
-0x01, 0x02, 0x01, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x04, 0x02, 0xe5, 0xe6, 0x04, 0xe5,
-0x07, 0xe6, 0x06, 0x0d, 0x03, 0xe5, 0x01, 0x27,
-0x3b, 0x47, 0x24, 0x2f, 0x02, 0xe8, 0x10, 0x09,
-0x0b, 0x3d, 0x19, 0x0b, 0x09, 0x09, 0x09, 0x03,
-0x0f, 0x09, 0x09, 0x13, 0x21, 0xe7, 0x0f, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0x03, 0x13, 0x04,
-0x14, 0xe6, 0x06, 0x0d, 0x04, 0xe5, 0xe5, 0x04,
-0xe5, 0xe8, 0x03, 0x01, 0xe7, 0xe5, 0x03, 0xe5,
-0xe5, 0xe5, 0x04, 0xe6, 0x03, 0x01, 0xe5, 0x08,
-0xe6, 0x06, 0xe6, 0xe5, 0x01, 0x01, 0xe7, 0x06,
-0x09, 0xe6, 0x06, 0xe6, 0xe5, 0x12, 0x02, 0xe5,
-0x09, 0x06, 0x09, 0x09, 0x13, 0x01, 0x0a, 0x04,
-0x01, 0x13, 0x0c, 0x05, 0xe5, 0x06, 0xe6, 0x06,
-0x01, 0xe6, 0x03, 0xe5, 0xe7, 0x03, 0x02, 0xe6,
-0x08, 0x05, 0x01, 0x01, 0x09, 0x09, 0x05, 0x01,
-0xe6, 0x06, 0x0b, 0x09, 0x09, 0x05, 0xe5, 0x02,
-0x01, 0xe9, 0x0f, 0x09, 0x0b, 0x0d, 0x01, 0x13,
-0x21, 0x03, 0x06, 0x04, 0x03, 0x09, 0x05, 0x01,
-0xe5, 0x01, 0x05, 0x0d, 0xe5, 0x01, 0x01, 0x0d,
-0x07, 0x01, 0x09, 0x03, 0x19, 0xe5, 0x0a, 0x0a,
-0xe5, 0x12, 0xe7, 0x05, 0xe7, 0x02, 0x02, 0xe7,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x03, 0xe6, 0x01,
-0x06, 0xe6, 0xe5, 0xe5, 0x02, 0xe6, 0x02, 0x03,
-0xe6, 0x03, 0x02, 0xe6, 0xe5, 0xe5, 0x02, 0x01,
-0xe5, 0x02, 0x02, 0xe7, 0x05, 0x01, 0xe5, 0x02,
-0x02, 0xe7, 0x01, 0x05, 0xe5, 0x02, 0x02, 0xe7,
-0x02, 0x02, 0xe7, 0x07, 0xe7, 0x02, 0x05, 0x24,
-0xe5, 0x06, 0x1d, 0x14, 0xe5, 0x06, 0xe5, 0x07,
-0x09, 0x03, 0x05, 0x01, 0x05, 0x04, 0x03, 0xe5,
-0x02, 0xe5, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01,
-0x01, 0x06, 0x03, 0x05, 0x03, 0x06, 0x01, 0xe6,
-0x03, 0x0d, 0xe5, 0x07, 0xe5, 0x04, 0x01, 0x0e,
-0x03, 0x13, 0x02, 0x06, 0x02, 0x06, 0x02, 0xe5,
-0xe5, 0x1c, 0x17, 0x05, 0x07, 0x04, 0x06, 0x06,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0x06, 0x02, 0x02,
-0xe5, 0x04, 0x07, 0x01, 0xe5, 0xe5, 0x04, 0xe5,
-0x05, 0x01, 0xe5, 0x07, 0x01, 0x01, 0x03, 0x01,
-0xe5, 0x01, 0x0d, 0x02, 0x06, 0x02, 0xe5, 0xe5,
-0x01, 0x02, 0x01, 0xe5, 0x03, 0x04, 0x11, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x0a,
-0x01, 0x01, 0x11, 0x01, 0x13, 0x03, 0x03, 0xe5,
-0x07, 0x09, 0x01, 0x02, 0xe5, 0x06, 0x01, 0x01,
-0x04, 0xe5, 0x02, 0x03, 0x01, 0x02, 0xe5, 0x03,
-0xe5, 0x02, 0x03, 0x01, 0x01, 0x01, 0x04, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0xe5, 0xe5, 0x04, 0x02,
-0xe5, 0x0e, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0xe5,
-0xe5, 0x06, 0x06, 0xe6, 0xe5, 0x08, 0x02, 0x06,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6,
-0x08, 0x01, 0x2b, 0x01, 0x01, 0x02, 0x06, 0x0b,
-0x05, 0x09, 0xe5, 0x07, 0x05, 0x0e, 0x02, 0x01,
-0x03, 0xe5, 0x07, 0xe5, 0x11, 0x13, 0x01, 0xe5,
-0x05, 0x01, 0xe6, 0xe5, 0x02, 0x04, 0x03, 0x02,
-0xe8, 0x0f, 0x09, 0x0a, 0x04, 0x01, 0xe5, 0x2d,
-0x09, 0x03, 0x06, 0x01, 0x01, 0x02, 0x05, 0x0c,
-0x0c, 0x0b, 0x02, 0x01, 0x04, 0x02, 0x24, 0xe5,
-0xe5, 0x19, 0x02, 0x0d, 0x01, 0x01, 0x11, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x04, 0x02, 0x01, 0xe5, 0x05, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x05, 0x01, 0x02, 0x01, 0x04, 0x01,
-0xe5, 0x05, 0xe6, 0xe5, 0x04, 0x01, 0x03, 0x03,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x06, 0xe7, 0x06,
-0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x0a, 0x01,
-0x01, 0x02, 0x0c, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe6, 0x05, 0x0c, 0x20, 0x04, 0xe5, 0x06, 0xe7,
-0x0b, 0x04, 0xe5, 0x09, 0xe5, 0xe6, 0x04, 0xe5,
-0x08, 0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x01,
-0x06, 0xe5, 0x01, 0x05, 0x0f, 0x02, 0xe5, 0x07,
-0xe6, 0xe5, 0xe5, 0x02, 0xe5, 0x01, 0x03, 0xe5,
-0x01, 0x0c, 0x01, 0xe7, 0xe5, 0x04, 0x35, 0x27,
-0x01, 0x04, 0xe5, 0x0c, 0x02, 0x03, 0x03, 0x06,
-0x03, 0x03, 0x04, 0x03, 0x03, 0x02, 0x08, 0x08,
-0x01, 0x03, 0x04, 0x06, 0x05, 0xe5, 0x0a, 0x0c,
-0x1a, 0xe5, 0x02, 0x01, 0x0b, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x04, 0x10, 0x23, 0x01, 0x09,
-0x0c, 0x05, 0x01, 0x03, 0x01, 0x01, 0x01, 0x07,
-0x02, 0x01, 0x04, 0x03, 0x05, 0x02, 0xe5, 0xe5,
-0x05, 0x02, 0x22, 0x01, 0x07, 0x01, 0x02, 0x04,
-0x01, 0x18, 0x03, 0x28, 0x02, 0x01, 0x17, 0x0a,
-0x06, 0x02, 0x09, 0x02, 0x01, 0x01, 0x05, 0xe6,
-0x17, 0x01, 0x02, 0x01, 0x18, 0x04, 0xe5, 0x1d,
-0x07, 0xe6, 0x07, 0x09, 0x03, 0x04, 0x04, 0x09,
-0x01, 0x01, 0x2c, 0x01, 0xe5, 0x01, 0x0a, 0x27,
-0x02, 0x01, 0x06, 0x07, 0x09, 0x01, 0xe5, 0x07,
-0x01, 0x02, 0x03, 0x1f, 0x06, 0x0b, 0x1b, 0x0b,
-0x12, 0x01, 0x01, 0x13, 0x07, 0x01, 0x09, 0x04,
-0xe5, 0x02, 0x01, 0x02, 0xe5, 0x14, 0x01, 0x04,
-0xe5, 0x14, 0x01, 0xe5, 0x07, 0x06, 0x01, 0x04,
-0xe5, 0x02, 0x0c, 0x09, 0xe5, 0x0b, 0x05, 0x13,
-0x09, 0x03, 0x04, 0x0b, 0x08, 0x03, 0x01, 0x03,
-0x0c, 0xe6, 0x1c, 0x0d, 0x09, 0x01, 0x0e, 0x0c,
-0x20, 0x0f, 0xe5, 0x0d, 0x15, 0x13, 0x11, 0x14,
-0x0f, 0xe5, 0x0f, 0x02, 0x1c, 0xe5, 0x07, 0x06,
-0x02, 0x1e, 0x05, 0x0b, 0x0c, 0x06, 0x0c, 0x0c,
-0x10, 0x01, 0x11, 0x08, 0x37, 0x10, 0x03, 0x0d,
-0xe5, 0x07, 0xe5, 0x35, 0x24, 0x03, 0x02, 0xe5,
-0x03, 0x02, 0xe5, 0xe6, 0x01, 0x02, 0x01, 0xe6,
-0x02, 0x03, 0xe5, 0x04, 0x02, 0xe6, 0x03, 0x02,
-0x09, 0x09, 0x07, 0x02, 0x01, 0x11, 0xe5, 0x02,
-0x04, 0xe5, 0x18, 0x01, 0xe6, 0x05, 0x09, 0x09,
-0x3e, 0x08, 0x12, 0x05, 0x02, 0xe5, 0x04, 0x01,
-0x02, 0x06, 0x02, 0x06, 0x09, 0x02, 0x21, 0x01,
-0x0f, 0x07, 0x09, 0x17, 0x02, 0xe5, 0x0d, 0x09,
-0x07, 0x06, 0x05, 0x04, 0x04, 0x04, 0x09, 0x02,
-0x01, 0x09, 0x19, 0x0a, 0xe5, 0xe5, 0x01, 0x01,
-0x03, 0x0c, 0x06, 0x06, 0x05, 0x04, 0x12, 0x14,
-0x09, 0x01, 0x01, 0x09, 0x08, 0x01, 0x0f, 0x01,
-0xe6, 0x18, 0x04, 0x09, 0x02, 0xe5, 0x08, 0x11,
-0x01, 0x04, 0x0f, 0x0b, 0x10, 0x0c, 0x02, 0x05,
-0x01, 0x08, 0x05, 0x02, 0x01, 0x08, 0x05, 0x02,
-0x0a, 0x02, 0x1e, 0x05, 0x02, 0x11, 0x01, 0x01,
-0x01, 0xe5, 0x2c, 0x04, 0x02, 0xe5, 0x1b, 0x28,
-0x17, 0xe5, 0x11, 0x12, 0x10, 0x1b, 0x17, 0x05,
-0xe6, 0xe7, 0x0e, 0x09, 0x02, 0xe5, 0x04, 0xe5,
-0x0d, 0x24, 0x01, 0x04, 0x01, 0xe5, 0x01, 0x17,
-0x0b, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0x05,
-0x01, 0x01, 0x04, 0x02, 0xe5, 0x06, 0xe5, 0x01,
-0xe5, 0x0b, 0x02, 0x01, 0x04, 0x05, 0x06, 0x01,
-0x04, 0x09, 0xe5, 0x12, 0xe5, 0xe8, 0x01, 0x01,
-0x0b, 0x09, 0x03, 0xe5, 0x04, 0x0f, 0xe6, 0x21,
-0xe5, 0xe6, 0x01, 0x05, 0x09, 0xe5, 0x0a, 0x07,
-0x03, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x08,
-0x01, 0xe6, 0xe5, 0x01, 0xe5, 0x0b, 0x04, 0x01,
-0x01, 0x04, 0x01, 0xe5, 0x05, 0x05, 0x05, 0xe5,
-0x04, 0x09, 0x12, 0x01, 0x02, 0x01, 0x01, 0x04,
-0x23, 0x01, 0x06, 0xe5, 0x01, 0x01, 0x18, 0xe5,
-0x0c, 0x02, 0x04, 0x06, 0xe5, 0x02, 0x07, 0x01,
-0x03, 0xe5, 0x03, 0x01, 0x07, 0x09, 0x01, 0x09,
-0x03, 0xe5, 0x01, 0x01, 0x04, 0xe5, 0x05, 0x0e,
-0x01, 0x07, 0x29, 0x05, 0x02, 0x02, 0x25, 0x09,
-0x02, 0x01, 0x18, 0xe5, 0x0a, 0x09, 0x06, 0xe5,
-0xe5, 0x08, 0x01, 0x09, 0x01, 0x07, 0x06, 0xe5,
-0xe5, 0xe5, 0x06, 0x09, 0x01, 0x04, 0x16, 0x01,
-0x07, 0x19, 0xe5, 0x0f, 0x03, 0xe5, 0xe5, 0x05,
-0x0b, 0x09, 0x09, 0x02, 0x01, 0x02, 0x04, 0xe5,
-0x01, 0x1b, 0x02, 0x05, 0x02, 0x02, 0x03, 0xe5,
-0x03, 0x04, 0x01, 0x02, 0x01, 0x01, 0x05, 0x0b,
-0x04, 0x04, 0x09, 0x06, 0x02, 0x01, 0x01, 0x05,
-0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x05, 0x09,
-0x04, 0x0e, 0x09, 0x07, 0x05, 0x07, 0xe6, 0xe5,
-0x01, 0x2b, 0x03, 0xe7, 0x02, 0x02, 0x01, 0x17,
-0x03, 0xe7, 0x02, 0x03, 0xe6, 0x02, 0x05, 0x01,
-0x02, 0x08, 0x06, 0x04, 0x05, 0x03, 0x09, 0x05,
-0x03, 0x01, 0x02, 0x04, 0x05, 0x04, 0x01, 0x01,
-0x0e, 0x05, 0x03, 0x19, 0x02, 0x03, 0xe6, 0xe5,
-0x01, 0x03, 0xe5, 0xe6, 0x03, 0xe5, 0x0c, 0x09,
-0x06, 0x02, 0x02, 0x01, 0x07, 0x01, 0x1b, 0x01,
-0x09, 0x01, 0x03, 0x01, 0x05, 0xe5, 0x01, 0x01,
-0x07, 0x01, 0x01, 0xe5, 0x05, 0x01, 0x02, 0x01,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x03, 0x04,
-0x02, 0x04, 0x01, 0x04, 0x04, 0x0e, 0x01, 0xe5,
-0xe5, 0x06, 0x0e, 0x08, 0x02, 0x02, 0x0f, 0x01,
-0x01, 0xe5, 0x05, 0x0a, 0xe8, 0x04, 0xe8, 0x05,
-0xe7, 0xe5, 0x01, 0x06, 0x01, 0x1b, 0x02, 0x06,
-0x04, 0x01, 0x01, 0xe5, 0x02, 0xe5, 0x03, 0x09,
-0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0xe5,
-0xe5, 0xe6, 0x02, 0xe5, 0xe5, 0xe6, 0xe5, 0xe6,
-0x01, 0x01, 0x03, 0xe5, 0x03, 0x01, 0x01, 0xe5,
-0x01, 0x01, 0x0d, 0xe5, 0xe5, 0x01, 0x01, 0x01,
-0xe5, 0x03, 0x0d, 0xe5, 0xe5, 0xe5, 0x04, 0xe7,
-0xe5, 0xe6, 0x0d, 0xe7, 0x0f, 0x09, 0x09, 0x09,
-0x02, 0x09, 0x02, 0x17, 0x09, 0x09, 0x13, 0x0b,
-0x09, 0x09, 0x09, 0x09, 0x13, 0x02, 0x01, 0x04,
-0x13, 0x09, 0x09, 0x02, 0x0b, 0x02, 0x10, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x0b, 0x01, 0x07, 0x1d,
-0x05, 0xe5, 0x07, 0xe5, 0x11, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0x09, 0xe5, 0x03, 0x03, 0xe5, 0x11, 0xe5,
-0x07, 0xe5, 0x0b, 0x01, 0x08, 0xea, 0x0b, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x01, 0x01, 0x02, 0xe5,
-0xe6, 0x04, 0x03, 0x05, 0x09, 0x06, 0x02, 0xe5,
-0x03, 0x03, 0xe6, 0x06, 0xe5, 0x07, 0x09, 0xe6,
-0x03, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0x09, 0xe5, 0x07, 0xe6, 0x03,
-0x02, 0xe5, 0x01, 0x08, 0xe8, 0xe5, 0x01, 0x4c,
-0x02, 0x2e, 0x02, 0x32, 0xe5, 0x1c, 0x1a, 0x02,
-0x0e, 0x04, 0x01, 0x11, 0x09, 0x35, 0x19, 0x17,
-0x07, 0x09, 0x09, 0x09, 0x09, 0x01, 0x11, 0x09,
-0x01, 0x11, 0x0c, 0x17, 0x0a, 0x05, 0xe6, 0x06,
-0xe6, 0x06, 0xe6, 0x03, 0x02, 0x1c, 0x07, 0x02,
-0x09, 0xe6, 0x06, 0xe6, 0x03, 0x06, 0x04, 0xe7,
-0xe5, 0x02, 0x02, 0xe7, 0xe5, 0x03, 0xe7, 0xe5,
-0x01, 0x01, 0xe7, 0xe5, 0x03, 0xe5, 0xe5, 0x03,
-0x01, 0xe7, 0x03, 0x01, 0x04, 0x02, 0x01, 0xe7,
-0xe5, 0x01, 0x01, 0xe7, 0x05, 0x04, 0x05, 0xe6,
-0x06, 0x01, 0x04, 0x02, 0x0d, 0xe5, 0xe6, 0x10,
-0x09, 0x09, 0x05, 0x0d, 0x11, 0xe5, 0x07, 0x0b,
-0x02, 0x06, 0x02, 0x04, 0x01, 0x07, 0xe6, 0x06,
-0x02, 0xe5, 0x03, 0x02, 0xe6, 0x04, 0x01, 0xe6,
-0x06, 0xe6, 0x04, 0x01, 0xe6, 0x06, 0xe6, 0x04,
-0x01, 0xe6, 0x03, 0xe5, 0xe7, 0x04, 0x02, 0x0a,
-0x09, 0x05, 0x09, 0xe5, 0x02, 0x02, 0xe8, 0x07,
-0x07, 0x09, 0x1b, 0x10, 0x02, 0x07, 0x10, 0x0c,
-0x08, 0x02, 0x01, 0x09, 0x01, 0x07, 0x03, 0xe5,
-0xe6, 0xe6, 0x07, 0x06, 0xe5, 0xe5, 0x02, 0x03,
-0x01, 0x0b, 0x01, 0x03, 0x01, 0x03, 0x05, 0x2c,
-0xe5, 0x01, 0x13, 0xe7, 0x05, 0xe7, 0x02, 0x02,
-0xe8, 0x06, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x02, 0x02, 0x01,
-0xe5, 0x02, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x03, 0xe7, 0xe6, 0x04, 0xe7, 0x01, 0xe5, 0x01,
-0x01, 0xe6, 0xe5, 0x02, 0xe7, 0x01, 0x03, 0xe8,
-0xe6, 0x01, 0xe7, 0x01, 0x03, 0xe7, 0x05, 0x01,
-0xe6, 0xe6, 0x01, 0xe8, 0x06, 0xe5, 0x02, 0x02,
-0xe7, 0x05, 0xe8, 0x06, 0xe7, 0x02, 0x01, 0x01,
-0x01, 0x10, 0x09, 0x09, 0xe5, 0x24, 0x14, 0xe5,
-0x07, 0x12, 0xe5, 0x01, 0x02, 0x04, 0xe5, 0x01,
-0x02, 0x02, 0xe6, 0x03, 0x06, 0x02, 0x02, 0x06,
-0x03, 0x02, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x09, 0x05, 0x0d, 0xe5, 0x07, 0xe5, 0x17, 0x01,
-0x13, 0x02, 0x06, 0x02, 0x06, 0x02, 0x20, 0x09,
-0x0d, 0x12, 0x06, 0x04, 0x01, 0x01, 0xe5, 0x05,
-0xe6, 0x01, 0x03, 0x01, 0xe5, 0x07, 0xe5, 0x01,
-0x04, 0xe6, 0x07, 0xe6, 0xe5, 0x02, 0x01, 0xe6,
-0xe5, 0x04, 0x04, 0x02, 0x01, 0xe5, 0x0f, 0x02,
-0x06, 0x02, 0x0a, 0xe5, 0x03, 0xe5, 0xe8, 0x0e,
-0x03, 0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x0c,
-0x13, 0x19, 0x04, 0x12, 0xe5, 0x03, 0x05, 0xe5,
-0x03, 0x03, 0x05, 0x08, 0xe5, 0x02, 0x03, 0x01,
-0x04, 0x03, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0x06,
-0x01, 0x08, 0xe5, 0x11, 0xe5, 0x07, 0xe5, 0x0a,
-0x06, 0xe5, 0x01, 0x12, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe7, 0x0a, 0x02, 0x10, 0x16,
-0xe5, 0xe5, 0x05, 0x10, 0x02, 0x01, 0xe5, 0x02,
-0x04, 0x01, 0x04, 0x02, 0xe6, 0x06, 0x06, 0x02,
-0xe6, 0x06, 0x04, 0x01, 0xe5, 0xe7, 0x06, 0x09,
-0xe5, 0x11, 0xe5, 0xe6, 0x04, 0xe5, 0xe7, 0x09,
-0x03, 0x02, 0x02, 0x11, 0x19, 0xe5, 0xe5, 0xe5,
-0x08, 0x18, 0x02, 0x0a, 0x05, 0x01, 0xe6, 0x06,
-0xe5, 0x0d, 0x02, 0x0d, 0x0e, 0x17, 0xe5, 0x0d,
-0x0e, 0x01, 0x1a, 0xe5, 0x0c, 0x02, 0xe5, 0x08,
-0x07, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x03,
-0x03, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0xe6, 0x06, 0x01,
-0xe5, 0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x06, 0xe7, 0x06, 0xe6, 0x06, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0xe6,
-0x06, 0x01, 0x0a, 0xe6, 0xe5, 0x0e, 0xe5, 0x01,
-0x05, 0xe6, 0x06, 0xe5, 0x03, 0x0f, 0x19, 0xe5,
-0x05, 0xe5, 0x01, 0xe6, 0x05, 0xe6, 0xe5, 0x07,
-0x07, 0xe5, 0x09, 0x03, 0x03, 0x19, 0x06, 0xe6,
-0x02, 0x02, 0x0a, 0x02, 0x06, 0x06, 0x0f, 0x05,
-0xe6, 0x02, 0x0f, 0x03, 0x02, 0xe5, 0x06, 0x02,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x03, 0x02, 0x01,
-0x04, 0x20, 0x10, 0x04, 0x09, 0x07, 0x07, 0x02,
-0x01, 0x0c, 0x17, 0x06, 0x02, 0x03, 0x03, 0x08,
-0x05, 0x06, 0x02, 0x0d, 0x0d, 0x01, 0x01, 0x17,
-0xe5, 0xe5, 0xe5, 0x04, 0x0c, 0x0b, 0x04, 0x04,
-0x07, 0x2e, 0x08, 0x07, 0x05, 0x03, 0x09, 0x04,
-0x06, 0x27, 0x02, 0x3d, 0x0d, 0x02, 0x2d, 0x25,
-0xe5, 0x06, 0x03, 0x03, 0x06, 0x02, 0x02, 0x01,
-0x0c, 0xe5, 0x03, 0x07, 0x0b, 0xe5, 0x05, 0x09,
-0x04, 0x02, 0x02, 0x01, 0x01, 0x06, 0x0c, 0xe5,
-0x05, 0x01, 0x0e, 0x09, 0x04, 0x0f, 0xe7, 0x27,
-0x03, 0x10, 0x28, 0x08, 0x03, 0x05, 0x09, 0x01,
-0x09, 0x08, 0x04, 0x11, 0x17, 0x05, 0x09, 0x01,
-0x04, 0x17, 0x0f, 0xe5, 0x01, 0x09, 0x09, 0x09,
-0x08, 0x1d, 0x06, 0x03, 0x01, 0x08, 0x12, 0x03,
-0x06, 0x06, 0xe5, 0x03, 0x05, 0x29, 0x31, 0x0b,
-0x04, 0x0f, 0xe6, 0x12, 0x35, 0x27, 0x0c, 0x0d,
-0x07, 0x03, 0x0f, 0x04, 0x0f, 0x1c, 0x09, 0x09,
-0x0c, 0x02, 0x04, 0x02, 0x01, 0x01, 0x06, 0x15,
-0xe5, 0x01, 0x28, 0x02, 0x0d, 0x13, 0x02, 0x10,
-0x02, 0xe5, 0x0e, 0x08, 0x02, 0x08, 0xe6, 0x18,
-0x1e, 0x15, 0x02, 0x06, 0x03, 0x01, 0x06, 0x19,
-0x04, 0x01, 0x04, 0x17, 0x1d, 0x02, 0xe5, 0x03,
-0x09, 0x02, 0x09, 0xe5, 0x01, 0x02, 0x01, 0x02,
-0xe6, 0x04, 0x01, 0xe6, 0x06, 0x0a, 0x01, 0x07,
-0x05, 0x0d, 0xe5, 0x0b, 0x2c, 0x01, 0x1e, 0x03,
-0x0f, 0x37, 0x16, 0x03, 0x03, 0x09, 0x07, 0x01,
-0x1b, 0x0d, 0x07, 0x01, 0x02, 0x24, 0x0e, 0xe6,
-0xe5, 0xe5, 0x06, 0x0e, 0x0b, 0xe5, 0x04, 0x3a,
-0xe5, 0xe6, 0xe5, 0x03, 0x04, 0x01, 0xe5, 0xe5,
-0x03, 0x0a, 0xe5, 0xe5, 0xe5, 0x03, 0x07, 0x01,
-0xe5, 0x03, 0xe5, 0x04, 0xe5, 0xe5, 0x01, 0x0a,
-0x05, 0x04, 0x03, 0x0a, 0x05, 0xe5, 0x03, 0x0a,
-0x11, 0x07, 0xe5, 0x31, 0x05, 0x14, 0x09, 0xe5,
-0x07, 0x05, 0xe5, 0x08, 0x09, 0x04, 0x09, 0x09,
-0x0a, 0x04, 0xe5, 0x03, 0xe5, 0x08, 0x0e, 0x12,
-0x02, 0x25, 0x02, 0xe6, 0x01, 0x09, 0x1b, 0x05,
-0x0d, 0x14, 0x17, 0x01, 0x08, 0xe5, 0x01, 0x07,
-0x26, 0x01, 0x1c, 0x05, 0x0a, 0x02, 0xe5, 0x30,
-0xe6, 0x0e, 0x02, 0x01, 0x04, 0x02, 0xe5, 0x04,
-0xe5, 0x0d, 0x20, 0xe5, 0x01, 0xe5, 0x04, 0x0f,
-0x06, 0xe5, 0x04, 0x06, 0x04, 0x02, 0xe5, 0xe5,
-0x02, 0xe5, 0x07, 0x0c, 0x01, 0x02, 0x07, 0x10,
-0x01, 0x04, 0x0c, 0xe5, 0x05, 0x01, 0x01, 0x04,
-0xe5, 0x06, 0x01, 0x09, 0xe6, 0x01, 0xe5, 0x01,
-0x01, 0x05, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0xe5,
-0xe5, 0xe5, 0x03, 0x0f, 0x13, 0xe6, 0x03, 0x01,
-0x07, 0xe5, 0x04, 0x05, 0xe5, 0x0c, 0x08, 0x0b,
-0x01, 0xe5, 0x01, 0x02, 0x01, 0x08, 0x0b, 0xe5,
-0x0b, 0x0f, 0xe5, 0x04, 0x0d, 0xe5, 0x07, 0x01,
-0x0b, 0xe5, 0x08, 0x01, 0x02, 0xe5, 0xe6, 0x03,
-0x0f, 0xe5, 0xe5, 0xe5, 0x0c, 0xe5, 0x03, 0x07,
-0x15, 0x0b, 0x11, 0x04, 0x01, 0x0a, 0x01, 0x03,
-0xe5, 0x03, 0x01, 0x07, 0x09, 0x01, 0x04, 0xe5,
-0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x06, 0x06, 0x01,
-0xe5, 0x0f, 0x01, 0x18, 0x07, 0x09, 0x06, 0x01,
-0x02, 0x14, 0x01, 0x0d, 0xe5, 0x01, 0x09, 0x13,
-0x01, 0x1b, 0x06, 0xe5, 0x02, 0x04, 0xe5, 0xe5,
-0xe5, 0x07, 0xe5, 0xe5, 0x06, 0x05, 0xe5, 0x01,
-0x01, 0x04, 0xe5, 0x0a, 0x01, 0x07, 0x06, 0x02,
-0x10, 0x02, 0x1f, 0x0b, 0x04, 0x01, 0x12, 0x09,
-0x09, 0x07, 0x02, 0x02, 0xe5, 0x12, 0x01, 0x04,
-0x01, 0x0f, 0x06, 0x02, 0x03, 0x07, 0x01, 0x05,
-0x0b, 0x04, 0x04, 0x09, 0x09, 0xe5, 0x01, 0x05,
-0x04, 0x04, 0x02, 0x01, 0x0e, 0x02, 0x07, 0x02,
-0x05, 0x09, 0x06, 0x0e, 0x03, 0x02, 0x18, 0x12,
-0x05, 0xe5, 0x02, 0x0f, 0x01, 0x01, 0x19, 0x03,
-0x03, 0x05, 0x04, 0x04, 0x0b, 0x05, 0x03, 0x09,
-0x0a, 0x01, 0x01, 0x04, 0x05, 0x03, 0x05, 0x17,
-0x04, 0x16, 0x01, 0x09, 0x03, 0xe8, 0x15, 0x01,
-0x04, 0x01, 0x04, 0x05, 0x07, 0x01, 0x13, 0x01,
-0x15, 0x07, 0x03, 0xe5, 0x09, 0x01, 0x01, 0x01,
-0xe5, 0x05, 0x01, 0x02, 0x01, 0x01, 0xe5, 0x05,
-0x02, 0x01, 0x01, 0x02, 0x01, 0xe5, 0x08, 0x01,
-0x07, 0x03, 0x01, 0xe5, 0x1d, 0x08, 0x01, 0x04,
-0x01, 0xe5, 0x03, 0x04, 0x01, 0x01, 0x04, 0xe9,
-0x10, 0xe5, 0x03, 0x01, 0x01, 0xe5, 0xe5, 0xe5,
-0x04, 0x04, 0x02, 0x06, 0x13, 0x01, 0x16, 0x04,
-0x03, 0xe5, 0x05, 0x07, 0x01, 0x02, 0xe6, 0x03,
-0x01, 0x01, 0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0xe6,
-0xe5, 0xe5, 0x01, 0xe6, 0x0b, 0x01, 0x01, 0xe5,
-0xe5, 0x01, 0x04, 0x12, 0xe5, 0x11, 0xe5, 0xe5,
-0xe5, 0x04, 0x01, 0x04, 0x03, 0xe5, 0x09, 0x01,
-0xe5, 0x0f, 0x09, 0x02, 0x06, 0x09, 0x31, 0x02,
-0x06, 0x0c, 0x02, 0x03, 0x0b, 0x09, 0x02, 0x01,
-0x04, 0x13, 0x04, 0x04, 0x13, 0x0c, 0x06, 0x09,
-0x04, 0x07, 0x02, 0x08, 0x02, 0x02, 0x0d, 0xe5,
-0x07, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x39, 0xe5,
-0x01, 0xe6, 0x02, 0xe5, 0x11, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x11, 0xe5,
-0x07, 0xe5, 0x08, 0x08, 0xe5, 0x0b, 0x01, 0x03,
-0xe5, 0x07, 0xe5, 0x0b, 0xe5, 0x05, 0x01, 0xe6,
-0xe6, 0x0d, 0xe5, 0x07, 0xe5, 0x03, 0x03, 0xe6,
-0x03, 0x02, 0xe5, 0xe5, 0x05, 0x09, 0x06, 0x02,
-0x02, 0x06, 0x09, 0xe6, 0x06, 0xe5, 0x04, 0x02,
-0x09, 0xe6, 0x08, 0xe5, 0x07, 0xe5, 0x03, 0x03,
-0xe6, 0x03, 0x02, 0x09, 0xe5, 0x07, 0xe7, 0x05,
-0x09, 0xe5, 0x04, 0x02, 0x03, 0x05, 0xe5, 0x07,
-0xe6, 0x06, 0x0d, 0xe6, 0x01, 0x02, 0x24, 0x02,
-0x1c, 0xe5, 0x25, 0xe5, 0x31, 0xe5, 0x2f, 0xe5,
-0x2b, 0x03, 0xe7, 0x10, 0x09, 0x0d, 0x1d, 0x23,
-0x03, 0x1b, 0x09, 0x0d, 0x0f, 0x1d, 0x03, 0x0f,
-0x20, 0x01, 0xe6, 0x0f, 0xe6, 0x02, 0xe5, 0xe8,
-0x06, 0xe6, 0x03, 0x02, 0x2e, 0x01, 0xe7, 0xe5,
-0x03, 0xe5, 0xe5, 0x03, 0x01, 0x09, 0xe7, 0x04,
-0xe5, 0xe8, 0x02, 0xe5, 0xe8, 0x03, 0x01, 0xe7,
-0x03, 0x01, 0x09, 0xe7, 0xe5, 0x01, 0x01, 0xe7,
-0x03, 0x0c, 0xe6, 0x10, 0x01, 0x01, 0x05, 0x01,
-0x03, 0x11, 0xe5, 0xe6, 0x10, 0x05, 0x01, 0xe6,
-0x08, 0x07, 0x1f, 0x0c, 0x02, 0x01, 0xe6, 0x06,
-0xe6, 0x04, 0x01, 0xe6, 0x01, 0x04, 0xe6, 0x01,
-0x01, 0x02, 0x01, 0xe6, 0x01, 0x02, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x03, 0x04, 0x02, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x03, 0x01, 0x07, 0x04,
-0xe5, 0xe7, 0x08, 0x09, 0x08, 0x06, 0xe5, 0x02,
-0x01, 0xe5, 0x01, 0xe5, 0x0f, 0x09, 0x02, 0x2c,
-0x0d, 0x02, 0x06, 0x05, 0x04, 0x02, 0x01, 0x09,
-0x01, 0x07, 0x01, 0x01, 0x0f, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0x03, 0x05, 0xe5, 0x01, 0xe5, 0x01,
-0x01, 0xe5, 0x02, 0x02, 0x10, 0x04, 0x1b, 0x01,
-0x0e, 0x03, 0x13, 0xe7, 0x05, 0xe7, 0x02, 0x02,
-0xe7, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x03,
-0xe7, 0xe6, 0xe5, 0x02, 0xe7, 0x02, 0x02, 0x01,
-0xe6, 0xe5, 0x02, 0xe8, 0x04, 0x01, 0xe5, 0x01,
-0x03, 0xe8, 0xe5, 0x02, 0xe8, 0x04, 0x01, 0xe5,
-0x02, 0x02, 0xe8, 0x05, 0xe6, 0x05, 0xe7, 0x05,
-0xe8, 0xe5, 0x04, 0xe7, 0x02, 0x02, 0xe7, 0x16,
-0x01, 0x0a, 0x06, 0x31, 0x01, 0xe6, 0x06, 0xe5,
-0x07, 0x09, 0x03, 0x08, 0x02, 0x03, 0x01, 0xe6,
-0x07, 0xe5, 0xe5, 0x04, 0x09, 0x03, 0x06, 0x02,
-0x10, 0x0d, 0x01, 0x09, 0x03, 0xe5, 0x03, 0x13,
-0x01, 0x13, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x32, 0x01, 0x03, 0x05, 0xe5, 0x05,
-0x04, 0x06, 0x04, 0x01, 0x05, 0x03, 0x01, 0xe5,
-0xe5, 0x02, 0x02, 0x05, 0x03, 0xe5, 0x03, 0x03,
-0x02, 0x06, 0x09, 0x05, 0x0a, 0x02, 0x05, 0x0a,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x09, 0xe5, 0x03,
-0xe5, 0x02, 0x11, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x20, 0x01, 0x13, 0x03, 0x03,
-0x01, 0x11, 0x01, 0x03, 0xe5, 0xe5, 0x03, 0x03,
-0x05, 0x03, 0x08, 0xe5, 0x02, 0x03, 0x01, 0x03,
-0x01, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x06,
-0x01, 0x04, 0xe5, 0x01, 0xe5, 0x0e, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0xe5, 0xe5, 0x06, 0x06, 0x01,
-0x01, 0x13, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x1d, 0x19, 0x01, 0x03, 0x07, 0x0b,
-0x04, 0xe5, 0x09, 0xe6, 0x05, 0xe7, 0x06, 0xe7,
-0x04, 0xe7, 0x01, 0x05, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x07, 0x01, 0xe5, 0x0f, 0x09, 0x03,
-0x01, 0x08, 0x03, 0x02, 0x02, 0xe5, 0x0f, 0x09,
-0x09, 0x08, 0x06, 0x01, 0xe5, 0x0f, 0x45, 0x01,
-0x13, 0x02, 0x0a, 0x08, 0x06, 0x02, 0x0b, 0x04,
-0x01, 0xe5, 0x09, 0x09, 0x05, 0x02, 0x01, 0x08,
-0x03, 0xe7, 0x01, 0x03, 0x0a, 0xe6, 0x01, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x03,
-0x03, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x07, 0x01, 0xe6,
-0x01, 0x02, 0x01, 0xe5, 0x05, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x07, 0x01, 0x04, 0x02, 0xe6, 0x06, 0x01,
-0x07, 0x01, 0x02, 0x04, 0x01, 0x0a, 0xe5, 0xe6,
-0x0e, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x05, 0x12,
-0x20, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x02, 0x15,
-0x06, 0x08, 0x06, 0xe6, 0x01, 0x01, 0xe6, 0x01,
-0x04, 0x0a, 0x02, 0x06, 0x03, 0x01, 0x05, 0x06,
-0x07, 0x04, 0x03, 0x05, 0xe5, 0x05, 0xe5, 0x0f,
-0xe5, 0xe6, 0x09, 0x08, 0x13, 0x09, 0x15, 0x13,
-0x0c, 0x1a, 0x01, 0x03, 0x05, 0x08, 0x02, 0xe5,
-0xe5, 0x14, 0x03, 0x05, 0x09, 0x02, 0x02, 0x03,
-0xe5, 0x0a, 0x08, 0x01, 0x01, 0x04, 0x0a, 0x07,
-0x02, 0xe6, 0x02, 0x09, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x0c, 0x07, 0x24, 0x01, 0x07, 0x06,
-0x06, 0xe5, 0xe5, 0x08, 0x01, 0x0b, 0x17, 0x0b,
-0x13, 0x0d, 0x09, 0x02, 0x06, 0x05, 0x0b, 0x07,
-0x02, 0xe5, 0xe5, 0x0a, 0x12, 0x09, 0x02, 0x17,
-0x16, 0x09, 0x22, 0x01, 0x0e, 0x02, 0x02, 0x08,
-0x11, 0xe6, 0x06, 0xe5, 0x11, 0xe5, 0x02, 0x1e,
-0x0a, 0xe5, 0x01, 0x08, 0x16, 0x0d, 0x0f, 0x05,
-0x29, 0x01, 0x07, 0xe5, 0xe5, 0x09, 0x02, 0xe5,
-0x05, 0x08, 0x03, 0x04, 0x10, 0x06, 0x06, 0x1d,
-0x0a, 0x1b, 0x02, 0xe5, 0x08, 0x09, 0x09, 0x09,
-0x08, 0x0f, 0xe5, 0x20, 0x0f, 0x0b, 0x01, 0x03,
-0x03, 0x09, 0x02, 0x07, 0x06, 0x01, 0xe5, 0x07,
-0x01, 0x07, 0x0c, 0x0f, 0xe6, 0x07, 0x03, 0x09,
-0x09, 0x0e, 0x01, 0x18, 0xe5, 0x07, 0x1a, 0x01,
-0x02, 0x09, 0xe5, 0x07, 0x07, 0x0b, 0x04, 0x0c,
-0x08, 0x06, 0x02, 0x02, 0x03, 0x0c, 0x01, 0x07,
-0x09, 0x01, 0x0f, 0x06, 0x04, 0x09, 0xe5, 0xe5,
-0x02, 0x08, 0x06, 0x08, 0x04, 0x02, 0xe5, 0x07,
-0x09, 0x01, 0x07, 0x16, 0x12, 0x13, 0x07, 0x08,
-0x01, 0xe5, 0x01, 0x02, 0x05, 0x04, 0x04, 0xe5,
-0xe5, 0x01, 0x06, 0x02, 0x02, 0x10, 0x0b, 0x07,
-0x17, 0x04, 0x07, 0x1a, 0x0a, 0x02, 0x06, 0x10,
-0xe5, 0x06, 0x2e, 0x11, 0x09, 0xe5, 0xe5, 0x05,
-0x09, 0x02, 0x02, 0xe5, 0x0a, 0x05, 0x02, 0xe5,
-0x02, 0x0a, 0xe5, 0x08, 0x16, 0xe5, 0x07, 0xe5,
-0x0c, 0x04, 0xe6, 0x17, 0x02, 0xe5, 0x02, 0x13,
-0x02, 0x0d, 0x01, 0x41, 0x18, 0x0d, 0x06, 0xe6,
-0x06, 0x2b, 0x06, 0x01, 0x12, 0x19, 0x02, 0xe5,
-0x02, 0x0b, 0x22, 0x09, 0x09, 0x05, 0x03, 0x04,
-0x02, 0xe6, 0x03, 0x03, 0x0f, 0x03, 0xe5, 0xe5,
-0x05, 0x05, 0x01, 0x09, 0xe5, 0x05, 0x01, 0x04,
-0x04, 0x03, 0x02, 0x06, 0x05, 0x03, 0xe6, 0x06,
-0x04, 0x04, 0xe5, 0xe5, 0x01, 0x04, 0x01, 0x16,
-0x0b, 0x03, 0x01, 0xe6, 0x01, 0x06, 0x02, 0xe6,
-0x17, 0x04, 0x26, 0xe5, 0x03, 0x02, 0xe6, 0xe5,
-0x0c, 0xe5, 0x0b, 0x02, 0x05, 0x02, 0x02, 0xe5,
-0x03, 0x03, 0x06, 0x07, 0x01, 0xe5, 0x09, 0x05,
-0x01, 0x19, 0x02, 0xe5, 0x1c, 0x0d, 0x01, 0xe7,
-0x0b, 0x0e, 0x10, 0x20, 0x07, 0x1b, 0x0a, 0x0b,
-0x13, 0x08, 0x03, 0x09, 0x05, 0x1c, 0x02, 0x04,
-0x06, 0x12, 0x0e, 0xe9, 0x07, 0xe5, 0x04, 0x09,
-0x02, 0x01, 0x0d, 0xe5, 0x07, 0xe6, 0x03, 0x02,
-0x17, 0xe5, 0x2c, 0xe6, 0x01, 0xe5, 0x03, 0xe5,
-0x13, 0x04, 0x0b, 0x02, 0x01, 0x01, 0xe5, 0xe7,
-0x04, 0x01, 0x18, 0x01, 0x02, 0x01, 0x05, 0x01,
-0x0c, 0xe8, 0xe5, 0x01, 0x01, 0x05, 0x01, 0x04,
-0x08, 0x02, 0xe5, 0x0f, 0x02, 0x01, 0x0a, 0xe6,
-0x17, 0xe5, 0xe6, 0x0e, 0xe5, 0x1a, 0x02, 0x01,
-0x14, 0x09, 0xe6, 0x06, 0xe5, 0x04, 0x01, 0xe7,
-0x08, 0x18, 0xe5, 0x04, 0x05, 0x0b, 0x01, 0x02,
-0xe6, 0xe5, 0x03, 0x34, 0x02, 0xe5, 0xe5, 0xe5,
-0x03, 0x01, 0x02, 0x04, 0xe5, 0x0c, 0x03, 0xe5,
-0x03, 0x04, 0xe5, 0x07, 0x01, 0x02, 0x03, 0xe5,
-0x08, 0x01, 0xe5, 0x01, 0x02, 0x02, 0x01, 0xe5,
-0xe5, 0x01, 0x01, 0x01, 0x02, 0x04, 0x01, 0xe5,
-0xe5, 0x06, 0x06, 0xe5, 0x04, 0x05, 0x10, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x06, 0x0b, 0x05,
-0x02, 0x02, 0x39, 0xe5, 0xe5, 0xe5, 0x03, 0x04,
-0x11, 0x06, 0xe5, 0xe5, 0x04, 0xe5, 0x03, 0x04,
-0xe5, 0xe5, 0x10, 0xe5, 0x08, 0xe5, 0xe5, 0xe5,
-0x03, 0xe5, 0xe5, 0xe5, 0x03, 0x02, 0x01, 0x04,
-0xe5, 0xe5, 0x05, 0x0e, 0x0e, 0xe5, 0x07, 0x02,
-0x01, 0x07, 0x0d, 0x02, 0xe5, 0xe6, 0x11, 0x09,
-0x09, 0x18, 0x01, 0x05, 0x06, 0x0a, 0x02, 0x02,
-0x02, 0x0b, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x03,
-0x01, 0x01, 0x04, 0x03, 0x02, 0x0f, 0x06, 0x02,
-0xe5, 0xe7, 0xe5, 0x01, 0x04, 0x04, 0x02, 0x01,
-0x01, 0x07, 0x0b, 0xe5, 0xe5, 0xe5, 0xe5, 0x07,
-0x06, 0x04, 0x0a, 0x06, 0xe7, 0x01, 0x3c, 0x03,
-0x0a, 0x0d, 0xe5, 0x02, 0x02, 0x01, 0x09, 0xe5,
-0x02, 0x04, 0x02, 0x02, 0xe5, 0x01, 0x10, 0x02,
-0x01, 0x04, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01,
-0xe5, 0x03, 0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x06,
-0x01, 0x01, 0x02, 0xe5, 0x01, 0x05, 0x03, 0x0a,
-0x05, 0x03, 0x09, 0x02, 0xe6, 0xe6, 0x12, 0x01,
-0x07, 0x06, 0x02, 0x01, 0x05, 0x0e, 0x01, 0x02,
-0x01, 0x01, 0x02, 0x0f, 0x03, 0x01, 0xe5, 0xe5,
-0x03, 0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x01,
-0x0e, 0x05, 0x03, 0x04, 0x01, 0x04, 0x04, 0x07,
-0x01, 0x04, 0x01, 0xe5, 0x0d, 0x04, 0x0b, 0x02,
-0x02, 0x0b, 0x01, 0x01, 0x05, 0x06, 0x08, 0x01,
-0xe5, 0xe5, 0x10, 0xe7, 0x05, 0xe5, 0x01, 0x06,
-0x01, 0x16, 0x01, 0x04, 0x01, 0x02, 0x09, 0x07,
-0x04, 0x01, 0xe7, 0x08, 0x09, 0x01, 0x08, 0x14,
-0x01, 0x01, 0xe5, 0x01, 0x01, 0x09, 0x01, 0xe6,
-0xe6, 0x01, 0x15, 0x0a, 0xe5, 0x0e, 0x01, 0x02,
-0x04, 0x05, 0xe6, 0x08, 0xe7, 0x0f, 0x09, 0x09,
-0x04, 0x36, 0x0c, 0x09, 0x02, 0x12, 0x05, 0x03,
-0x06, 0x13, 0x27, 0x0c, 0x06, 0x0c, 0x02, 0x07,
-0x02, 0xe5, 0x0f, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x1f, 0x10, 0x08, 0xe5, 0x08, 0x02, 0xe6, 0x06,
-0x09, 0x07, 0xe5, 0x03, 0x07, 0x01, 0x03, 0xe5,
-0x1f, 0x13, 0x09, 0xe5, 0x04, 0x02, 0x01, 0x03,
-0xe5, 0x0b, 0xe5, 0x08, 0x02, 0xe5, 0x0d, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x06, 0x09, 0x09, 0x05,
-0x03, 0x09, 0x09, 0xe6, 0x06, 0x06, 0x02, 0x05,
-0x03, 0x05, 0x02, 0x02, 0xe5, 0x07, 0x02, 0xe5,
-0x04, 0xe5, 0x04, 0x02, 0x09, 0x06, 0x02, 0x05,
-0x03, 0x09, 0x03, 0x05, 0xe5, 0x02, 0x01, 0x02,
-0xe6, 0xe5, 0x04, 0xe7, 0x02, 0x02, 0x02, 0x0a,
-0x03, 0xe5, 0x01, 0x6a, 0x02, 0x13, 0x0b, 0x12,
-0xe5, 0x08, 0x08, 0xe5, 0x1c, 0x1c, 0xe5, 0x0d,
-0x02, 0xe5, 0x01, 0x11, 0x09, 0x52, 0x12, 0x04,
-0x08, 0x03, 0x0b, 0x03, 0x07, 0x0b, 0x1c, 0x1e,
-0x13, 0xe5, 0xe5, 0x09, 0x04, 0xe7, 0xe5, 0x04,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0xe5, 0x05, 0x07,
-0x01, 0x1a, 0xe5, 0xe5, 0x08, 0xe7, 0x19, 0x09,
-0x01, 0x01, 0x11, 0xe5, 0xe5, 0x05, 0x13, 0x1d,
-0xe5, 0x0c, 0x05, 0xe6, 0x02, 0xe5, 0xe5, 0x0e,
-0x01, 0xe5, 0x0e, 0xe6, 0x08, 0x04, 0xe5, 0xe7,
-0x03, 0x02, 0xe5, 0x05, 0x01, 0xe5, 0x09, 0x09,
-0x02, 0x02, 0x01, 0xe6, 0xe5, 0x04, 0xe6, 0x08,
-0x01, 0x07, 0x02, 0x04, 0x01, 0x07, 0x01, 0xe6,
-0xe5, 0x06, 0x07, 0xe6, 0x04, 0x03, 0x08, 0xe5,
-0x04, 0x03, 0x08, 0x03, 0x05, 0x06, 0x03, 0x02,
-0x05, 0xe5, 0x08, 0x02, 0x02, 0x01, 0xe5, 0x05,
-0xe5, 0x02, 0x02, 0xe5, 0xe6, 0x0d, 0x01, 0x0f,
-0x01, 0x09, 0x07, 0x01, 0x0e, 0x08, 0x03, 0x01,
-0x04, 0x04, 0x03, 0x03, 0x01, 0x13, 0x08, 0x02,
-0x01, 0x01, 0x0f, 0x03, 0xe5, 0x03, 0x0e, 0x02,
-0x01, 0x11, 0x01, 0x11, 0x01, 0x0a, 0x06, 0x01,
-0x0e, 0x01, 0x01, 0x0f, 0x05, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5,
-0x01, 0xe5, 0x01, 0x01, 0xe6, 0xe5, 0x04, 0xe5,
-0x01, 0x05, 0xe6, 0x06, 0xe5, 0x01, 0x01, 0x05,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe6, 0x05, 0xe5,
-0x06, 0xe6, 0xe5, 0x04, 0x01, 0x07, 0x01, 0xe6,
-0xe5, 0x02, 0xe6, 0x02, 0x05, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6, 0x03, 0x02,
-0xe7, 0x08, 0x05, 0x0a, 0xe5, 0x10, 0x11, 0x01,
-0x07, 0x01, 0x09, 0x09, 0xe5, 0x03, 0x17, 0x09,
-0x01, 0x0a, 0x08, 0xe5, 0x05, 0x01, 0x07, 0x02,
-0xe5, 0x02, 0x03, 0x05, 0x01, 0x01, 0xe5, 0x01,
-0x01, 0x04, 0x02, 0xe6, 0x02, 0xe5, 0x19, 0x01,
-0xe6, 0x05, 0x05, 0x02, 0xe5, 0x08, 0x05, 0x02,
-0x09, 0x09, 0x06, 0x11, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x06, 0x02, 0x06, 0x02, 0xe5, 0x07, 0x08,
-0x07, 0x01, 0x07, 0x01, 0x02, 0x08, 0x07, 0xe6,
-0x04, 0x04, 0x03, 0x02, 0x02, 0x03, 0xe5, 0x03,
-0x03, 0xe5, 0xe5, 0x09, 0x05, 0xe5, 0x01, 0xe5,
-0x08, 0x0a, 0x04, 0x01, 0x07, 0xe5, 0x03, 0x01,
-0xe5, 0xe6, 0x0d, 0x1d, 0x1b, 0x01, 0x09, 0x09,
-0xe5, 0x03, 0x17, 0x08, 0xe5, 0xe5, 0x09, 0x08,
-0x09, 0x04, 0x02, 0x05, 0xe6, 0x02, 0x03, 0x01,
-0x01, 0x01, 0xe5, 0x03, 0x01, 0x01, 0x05, 0x0d,
-0x11, 0x09, 0x07, 0x01, 0xe5, 0x01, 0x0c, 0x1d,
-0x1b, 0x01, 0x09, 0x09, 0x03, 0x10, 0x06, 0x0b,
-0x01, 0x13, 0x13, 0xe5, 0x01, 0xe5, 0x08, 0x02,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x01, 0x06, 0x06,
-0x13, 0x01, 0xe5, 0x0a, 0x01, 0x02, 0xe5, 0x2e,
-0x12, 0x06, 0x02, 0x06, 0x02, 0x14, 0x05, 0x01,
-0xe6, 0x10, 0x02, 0x09, 0x10, 0xe5, 0xe5, 0x03,
-0x01, 0x02, 0x06, 0xe5, 0xe5, 0x13, 0x05, 0x02,
-0x06, 0x02, 0x10, 0xe5, 0xe5, 0x06, 0x05, 0xe5,
-0xe6, 0x0a, 0x05, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x01, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0x01, 0x05, 0x01,
-0x05, 0x03, 0x01, 0x02, 0x04, 0x01, 0xe5, 0x05,
-0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x03, 0x03, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0xe6, 0x01, 0x02, 0x02, 0xe5, 0xe6, 0x0f, 0x01,
-0x02, 0x03, 0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5,
-0x0d, 0x01, 0x03, 0xe5, 0x03, 0x09, 0xe5, 0x01,
-0x03, 0x03, 0xe5, 0x09, 0x01, 0x02, 0x04, 0x10,
-0xe5, 0xe6, 0xe5, 0x03, 0x01, 0xe5, 0x01, 0x05,
-0xe6, 0xe5, 0x0c, 0xe5, 0x01, 0x06, 0x05, 0x04,
-0xe5, 0x01, 0x0c, 0xe5, 0x03, 0xe6, 0x01, 0xe5,
-0x03, 0xe5, 0x0c, 0x04, 0x0c, 0xe7, 0x01, 0x08,
-0xe5, 0x07, 0xe5, 0x07, 0x01, 0x05, 0x0a, 0x14,
-0x07, 0x09, 0x03, 0x04, 0x0a, 0x0f, 0x08, 0x02,
-0x03, 0x03, 0x01, 0x04, 0x01, 0x08, 0x1d, 0x01,
-0xe5, 0xe5, 0x03, 0x11, 0x0b, 0x08, 0x0a, 0x01,
-0x04, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0x06, 0x06,
-0x05, 0x09, 0x08, 0x01, 0x17, 0x01, 0x0e, 0x07,
-0x02, 0xe5, 0x20, 0x04, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x01, 0x04, 0x11, 0x09, 0x09, 0x19, 0x13,
-0x0f, 0x02, 0x03, 0xe7, 0x09, 0x0f, 0x06, 0x13,
-0x01, 0x03, 0x0a, 0x01, 0xe6, 0x05, 0x03, 0x0e,
-0x02, 0x01, 0x06, 0xe5, 0xe5, 0x01, 0x07, 0x01,
-0x06, 0x01, 0x09, 0x04, 0x05, 0xe5, 0x01, 0x01,
-0xe8, 0x07, 0x07, 0x01, 0xe6, 0xe5, 0x02, 0xe6,
-0x04, 0x0b, 0x01, 0x07, 0x01, 0x11, 0x01, 0x01,
-0x06, 0x02, 0x03, 0x02, 0x02, 0x08, 0x13, 0x03,
-0x12, 0x01, 0x16, 0x09, 0x07, 0x07, 0x07, 0x01,
-0x03, 0x02, 0x0a, 0x03, 0x02, 0xe5, 0x17, 0x08,
-0x07, 0x03, 0x03, 0x04, 0x10, 0x01, 0x01, 0x09,
-0x05, 0x09, 0x01, 0x02, 0x07, 0x05, 0x01, 0xe6,
-0x08, 0x01, 0x07, 0x09, 0x09, 0x15, 0x03, 0x08,
-0xe5, 0x06, 0x01, 0x02, 0x07, 0x01, 0x02, 0x01,
-0x01, 0x05, 0x02, 0xe5, 0x08, 0x07, 0x01, 0x01,
-0x07, 0x01, 0x03, 0x01, 0x03, 0x03, 0x0e, 0xe5,
-0x03, 0x02, 0x01, 0x09, 0x01, 0x03, 0x03, 0x0e,
-0x02, 0x05, 0x05, 0x03, 0x05, 0x03, 0x0e, 0x0c,
-0x0d, 0x03, 0x1b, 0x0e, 0x01, 0x07, 0xe5, 0x07,
-0x03, 0x05, 0xe6, 0x01, 0x04, 0x05, 0x03, 0xe7,
-0x07, 0x05, 0x03, 0x02, 0x05, 0xe5, 0x0b, 0x05,
-0x0a, 0x04, 0x03, 0xe5, 0x01, 0x06, 0x04, 0x01,
-0x05, 0x10, 0x02, 0xe5, 0x03, 0xe5, 0x09, 0x06,
-0x01, 0xe5, 0x11, 0x01, 0x06, 0xe5, 0x24, 0x05,
-0x0c, 0x02, 0x04, 0x04, 0xe5, 0x08, 0x03, 0x07,
-0x0b, 0x06, 0x01, 0xe6, 0x01, 0xe6, 0x03, 0x02,
-0xe5, 0xe5, 0x07, 0x09, 0x27, 0x0a, 0x03, 0x0e,
-0x02, 0x07, 0x04, 0xe5, 0x07, 0x02, 0x0b, 0xe6,
-0x06, 0x01, 0x07, 0xe6, 0x0a, 0x06, 0x03, 0x1c,
-0x04, 0x07, 0x09, 0x0b, 0xe5, 0x0a, 0xe5, 0x02,
-0x01, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0xe5, 0x01,
-0x03, 0xe5, 0xe7, 0x02, 0x01, 0x06, 0xe7, 0x03,
-0x02, 0xe6, 0x03, 0xe5, 0x05, 0x04, 0xe7, 0x06,
-0xe6, 0x02, 0x08, 0x0c, 0xe7, 0xe5, 0x0e, 0x08,
-0x13, 0xe5, 0x11, 0x29, 0x18, 0x05, 0x04, 0x03,
-0x02, 0x03, 0x01, 0x01, 0x03, 0xe6, 0xe5, 0x04,
-0xe6, 0xe5, 0x03, 0x03, 0x04, 0x05, 0x07, 0x02,
-0x13, 0xe5, 0xe6, 0x03, 0x1a, 0xe6, 0x01, 0x36,
-0x03, 0x03, 0xe6, 0x06, 0x1d, 0x06, 0x02, 0x03,
-0x05, 0xe5, 0x01, 0x07, 0x08, 0x08, 0x01, 0xe5,
-0x09, 0x02, 0x08, 0x05, 0x08, 0x03, 0x08, 0xe5,
-0x05, 0x06, 0x11, 0xe5, 0x11, 0x02, 0xe6, 0x19,
-0x25, 0x01, 0x07, 0x01, 0x01, 0x01, 0x0a, 0x0b,
-0xe5, 0x04, 0x03, 0x02, 0x04, 0xe6, 0xe6, 0x07,
-0xe5, 0xe5, 0x10, 0x1c, 0xe5, 0x07, 0x03, 0x07,
-0x04, 0x03, 0x1e, 0x0b, 0xe6, 0xe6, 0x3e, 0xe5,
-0x07, 0xe5, 0x03, 0x07, 0x10, 0x08, 0xe5, 0x16,
-0x16, 0x09, 0x0c, 0x03, 0x08, 0x01, 0x0f, 0x2e,
-0x01, 0xe8, 0x07, 0xe5, 0x02, 0x01, 0xe5, 0x0a,
-0x01, 0x04, 0x08, 0xe5, 0x15, 0xe5, 0x03, 0xe6,
-0xe5, 0xe6, 0x04, 0xe5, 0x06, 0x14, 0xe5, 0x04,
-0x0f, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x0a, 0x01,
-0xe5, 0x04, 0x08, 0xe6, 0x03, 0x02, 0xe6, 0x03,
-0xe5, 0x01, 0x0a, 0x01, 0x01, 0x04, 0xe5, 0xe6,
-0x04, 0x01, 0xe5, 0x05, 0x0a, 0xe6, 0xe5, 0xe5,
-0x01, 0x01, 0x05, 0x01, 0x04, 0x05, 0xe5, 0x03,
-0xe5, 0x05, 0x08, 0x10, 0xe5, 0x04, 0xe5, 0x06,
-0xe5, 0x03, 0x03, 0xe5, 0x15, 0xe5, 0x03, 0xe5,
-0x0c, 0x05, 0x01, 0x01, 0x03, 0x03, 0x01, 0x04,
-0x02, 0xe5, 0x0e, 0x08, 0x03, 0xe5, 0xe7, 0x06,
-0xe5, 0x01, 0x05, 0x04, 0x01, 0xe5, 0x03, 0x03,
-0x01, 0x03, 0x0a, 0x07, 0x01, 0x02, 0xe6, 0xe5,
-0x03, 0x14, 0x21, 0xe5, 0x08, 0xe5, 0x04, 0x05,
-0x1a, 0xe5, 0x02, 0x03, 0xe5, 0x08, 0xe5, 0x02,
-0x06, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x01, 0x01,
-0x02, 0xe5, 0x01, 0x01, 0x1b, 0x01, 0x01, 0xe5,
-0x03, 0x01, 0x03, 0xe5, 0x03, 0x16, 0x10, 0x04,
-0x02, 0xe5, 0x01, 0x14, 0x23, 0xe5, 0x08, 0x09,
-0xe5, 0x1a, 0xe5, 0x01, 0x0f, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x08, 0x02, 0x01, 0x0d, 0xe5, 0x08,
-0x02, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x02, 0xe5,
-0x01, 0x19, 0xe5, 0x03, 0x0b, 0x03, 0x01, 0xe5,
-0x11, 0x06, 0x02, 0xe5, 0x01, 0x05, 0x1a, 0x04,
-0xe6, 0x09, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x01,
-0x04, 0x01, 0x02, 0x09, 0xe5, 0x01, 0x02, 0x10,
-0x01, 0x04, 0xe6, 0x01, 0x04, 0xe5, 0x01, 0x06,
-0x04, 0x01, 0x02, 0x0c, 0x01, 0x01, 0x07, 0x01,
-0x02, 0x03, 0x09, 0x05, 0x04, 0x01, 0x02, 0x09,
-0x03, 0x09, 0xe6, 0x01, 0x14, 0x03, 0x01, 0x02,
-0x1e, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x02, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0xe5,
-0x04, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x04, 0x06,
-0x04, 0x04, 0x04, 0x09, 0x02, 0x01, 0x04, 0x05,
-0x01, 0x01, 0x09, 0x02, 0x01, 0xe5, 0x02, 0x02,
-0x01, 0xe5, 0xe5, 0xe5, 0x02, 0x01, 0x03, 0x02,
-0xe6, 0x09, 0x01, 0x01, 0x09, 0x03, 0xe5, 0x03,
-0x02, 0xe5, 0xe7, 0x12, 0x01, 0x02, 0x04, 0x06,
-0x1b, 0x11, 0x04, 0x02, 0x01, 0x01, 0x01, 0x02,
-0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0xe5, 0xe5,
-0x19, 0xe6, 0xe5, 0x01, 0x02, 0x03, 0x02, 0x05,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x04,
-0x09, 0x01, 0x07, 0x01, 0x04, 0x09, 0x01, 0x0a,
-0x01, 0x01, 0xe5, 0x0b, 0x07, 0xe7, 0xe5, 0x10,
-0xe7, 0x01, 0x03, 0xe5, 0xe6, 0x05, 0x1a, 0x11,
-0x09, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x01,
-0xe5, 0xe5, 0x11, 0x07, 0x07, 0x01, 0xe5, 0x05,
-0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x0e,
-0x01, 0x07, 0x01, 0x01, 0xe5, 0xe8, 0x0c, 0xe5,
-0x03, 0x01, 0x02, 0x08, 0xe5, 0x0a, 0xe6, 0xe5,
-0x0f, 0x09, 0x04, 0x04, 0x20, 0x02, 0x06, 0xe5,
-0x07, 0x02, 0x03, 0x04, 0x1b, 0x0b, 0x01, 0x03,
-0xe5, 0x01, 0x01, 0x03, 0xe5, 0x01, 0xe5, 0x04,
-0x04, 0x04, 0x0c, 0x02, 0x06, 0xe5, 0x04, 0x02,
-0xe5, 0x0e, 0x09, 0x09, 0x02, 0x0a, 0xe5, 0x01,
-0x10, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x1f, 0x13,
-0x05, 0xe5, 0x21, 0x0b, 0x03, 0xe5, 0x01, 0x01,
-0x03, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x07, 0xe5,
-0x0b, 0x09, 0x05, 0xe5, 0x01, 0x09, 0xe5, 0x03,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x07, 0x03,
-0xe5, 0x0d, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06,
-0x09, 0x09, 0x03, 0x02, 0x02, 0x06, 0x02, 0x02,
-0xe5, 0x04, 0xe6, 0x06, 0x02, 0x01, 0x01, 0x02,
-0x06, 0x02, 0x06, 0x01, 0x02, 0x09, 0xe6, 0xe5,
-0x01, 0x02, 0xe6, 0x06, 0xe7, 0x05, 0xe7, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0x04, 0x01, 0x02, 0xe5, 0x04,
-0x02, 0xe6, 0x06, 0xe5, 0x0a, 0xe5, 0x02, 0xe5,
-0x01, 0x42, 0x09, 0x02, 0x24, 0x09, 0x0e, 0x06,
-0x1f, 0xe5, 0x05, 0x0b, 0xe5, 0x05, 0x02, 0x09,
-0x08, 0xe5, 0x17, 0x02, 0xe5, 0x01, 0x11, 0x09,
-0x35, 0x34, 0x06, 0x05, 0x09, 0x19, 0x13, 0x05,
-0x03, 0x08, 0x06, 0x02, 0x10, 0x10, 0x01, 0x0e,
-0xe6, 0x06, 0x01, 0x07, 0xe6, 0x20, 0xe5, 0xe5,
-0x06, 0x06, 0x05, 0xe6, 0x05, 0x07, 0x01, 0x06,
-0xe5, 0xe5, 0x08, 0x01, 0x0a, 0x01, 0x07, 0xe6,
-0x06, 0xe6, 0x03, 0x01, 0xe7, 0x02, 0xe5, 0xe5,
-0x08, 0x07, 0x01, 0xe7, 0x05, 0x04, 0x04, 0xe7,
-0xe5, 0x03, 0xe7, 0x06, 0xe6, 0x0a, 0xe5, 0x01,
-0x11, 0x09, 0x02, 0x06, 0x16, 0x06, 0x05, 0x02,
-0x08, 0x01, 0x09, 0x07, 0xe6, 0x06, 0x01, 0x05,
-0x01, 0xe5, 0x07, 0x01, 0xe5, 0x02, 0x06, 0x02,
-0x06, 0x09, 0x05, 0x01, 0xe6, 0x04, 0x01, 0xe5,
-0x05, 0x02, 0x06, 0x01, 0xe6, 0x06, 0xe6, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5, 0x04,
-0xe5, 0x02, 0x01, 0xe6, 0xe5, 0x10, 0x02, 0x0f,
-0x02, 0x19, 0x07, 0x01, 0x07, 0x01, 0x10, 0x02,
-0x07, 0x01, 0x03, 0x03, 0x01, 0x03, 0xe5, 0xe5,
-0xe6, 0xe5, 0x13, 0x03, 0x05, 0x06, 0x01, 0xe5,
-0x01, 0x03, 0x01, 0x09, 0x03, 0xe5, 0x03, 0x01,
-0x07, 0x09, 0x09, 0x07, 0x01, 0x06, 0x0a, 0xe5,
-0x12, 0xe7, 0x05, 0xe7, 0x05, 0xe7, 0x07, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe6,
-0xe5, 0x04, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x02, 0x01,
-0xe5, 0x01, 0x01, 0x05, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x08, 0xe5, 0xe5, 0xe5, 0x03, 0xe5,
-0x02, 0x03, 0xe6, 0x02, 0x03, 0xe8, 0x06, 0x03,
-0x05, 0xe6, 0x01, 0x02, 0xe8, 0x01, 0x02, 0xe8,
-0xe6, 0x03, 0xe6, 0x03, 0x01, 0xe8, 0x19, 0x27,
-0x06, 0x01, 0x07, 0x01, 0x0a, 0x08, 0xe6, 0x06,
-0x09, 0x09, 0x01, 0xe6, 0x0c, 0x09, 0x09, 0x08,
-0xe5, 0xe5, 0xe5, 0x04, 0x03, 0xe5, 0x02, 0xe6,
-0x02, 0x04, 0x04, 0xe5, 0x06, 0xe5, 0x07, 0xe5,
-0x08, 0xe5, 0x05, 0x06, 0xe7, 0x11, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x17,
-0x01, 0x04, 0x01, 0x07, 0x01, 0x02, 0x09, 0xe5,
-0x04, 0x02, 0x08, 0x05, 0x01, 0x03, 0x04, 0xe5,
-0x0c, 0x09, 0x04, 0x04, 0x04, 0x04, 0x04, 0xe5,
-0xe5, 0x05, 0xe5, 0x01, 0x09, 0x01, 0x03, 0xe5,
-0x02, 0x05, 0x04, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x01, 0x05, 0x04, 0xe5, 0x03, 0xe9, 0x13, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x16, 0x07, 0x01, 0x07,
-0x01, 0x0a, 0x04, 0x03, 0x09, 0x07, 0x01, 0x05,
-0x03, 0x01, 0x0d, 0x01, 0x07, 0x01, 0x08, 0xe5,
-0x08, 0x01, 0x01, 0x03, 0xe6, 0x02, 0x03, 0x01,
-0x03, 0x05, 0x03, 0x09, 0xe5, 0x02, 0xe5, 0x02,
-0xe5, 0x02, 0xe5, 0x0a, 0x06, 0x01, 0xe6, 0x12,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x15, 0xe5, 0x05, 0x01, 0x07, 0x01, 0xe5, 0x0b,
-0x01, 0x03, 0x11, 0x01, 0xe5, 0x01, 0x01, 0x03,
-0x01, 0xe5, 0x0b, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x01, 0x03, 0xe5, 0x03, 0xe5, 0x01,
-0xe5, 0x01, 0x05, 0xe5, 0x04, 0x06, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0xe5, 0x0e, 0x04, 0xe5, 0x13,
-0x13, 0x16, 0x02, 0x06, 0xe5, 0xe5, 0x05, 0x27,
-0xe5, 0xe5, 0x07, 0x09, 0xe5, 0xe5, 0x08, 0x01,
-0x13, 0x02, 0x01, 0xe5, 0xe6, 0x04, 0xe5, 0xe5,
-0x05, 0x09, 0xe5, 0xe5, 0x1b, 0xe5, 0x06, 0x05,
-0xe5, 0xe6, 0xe6, 0x06, 0x06, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x01, 0x02, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0xe5, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0x01, 0xe6,
-0x04, 0x01, 0x07, 0x01, 0x01, 0x04, 0xe5, 0xe6,
-0x02, 0xe5, 0x01, 0xe9, 0xe5, 0x02, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x01, 0x07, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0xe6, 0xe5, 0x02, 0x01, 0xe6, 0x04,
-0x01, 0x06, 0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x04,
-0x02, 0x02, 0x03, 0x0f, 0xe5, 0x01, 0x08, 0x02,
-0xe5, 0x01, 0xe5, 0x19, 0x05, 0x04, 0x09, 0x06,
-0x03, 0xe5, 0x02, 0xe5, 0x0e, 0x06, 0x16, 0x03,
-0x03, 0x01, 0xe5, 0x11, 0x0c, 0x08, 0x07, 0xe5,
-0x0b, 0x06, 0x02, 0x05, 0x09, 0xe5, 0x0e, 0x01,
-0xe5, 0x06, 0x03, 0xe5, 0xe5, 0x05, 0x0a, 0x01,
-0x10, 0x0d, 0x05, 0x15, 0x18, 0x09, 0xe5, 0x09,
-0x02, 0x06, 0x13, 0x02, 0x02, 0x0c, 0x0d, 0xe5,
-0xe5, 0x05, 0x0a, 0x07, 0x05, 0x04, 0xe5, 0xe5,
-0xe5, 0x03, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0f,
-0x35, 0x06, 0x02, 0x08, 0x02, 0x0f, 0x24, 0x06,
-0xe5, 0xe6, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x16, 0x05, 0x04, 0xe5, 0x0b, 0x01, 0x01, 0x01,
-0x06, 0xe6, 0x18, 0x09, 0x14, 0x03, 0x01, 0xe6,
-0x06, 0x01, 0x01, 0x03, 0x05, 0xe5, 0x0c, 0x02,
-0x01, 0xe5, 0x01, 0x01, 0xe7, 0x07, 0x01, 0xe5,
-0x02, 0x04, 0xe5, 0x07, 0x01, 0x02, 0x0c, 0x01,
-0x02, 0xe5, 0x04, 0xe5, 0x09, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x02, 0x05, 0x0a, 0x05, 0xe7,
-0x0c, 0x01, 0xe6, 0x0a, 0x08, 0x2e, 0x03, 0x0e,
-0x03, 0x01, 0x11, 0x12, 0x03, 0xe5, 0x01, 0x0d,
-0x09, 0x0e, 0x01, 0x03, 0x03, 0x04, 0x17, 0x02,
-0x0d, 0x20, 0xe5, 0x0e, 0x03, 0x09, 0x09, 0x06,
-0x1a, 0xe6, 0x02, 0x03, 0xe6, 0x08, 0x08, 0xe5,
-0x04, 0x01, 0x04, 0x03, 0xe5, 0x08, 0x01, 0x05,
-0x03, 0x02, 0x06, 0x0c, 0x02, 0x15, 0x03, 0x03,
-0x01, 0x0d, 0x0d, 0x01, 0x03, 0x03, 0x03, 0x01,
-0x03, 0x0a, 0x01, 0xe6, 0x0c, 0x03, 0x01, 0x2e,
-0x0d, 0x02, 0x09, 0x02, 0x06, 0x10, 0x0d, 0x13,
-0x28, 0xe5, 0x0f, 0x06, 0x0e, 0xe6, 0x0c, 0x0b,
-0x01, 0xe5, 0x02, 0x18, 0x02, 0x24, 0x0e, 0x08,
-0xe5, 0x01, 0xe5, 0x04, 0x0d, 0x1a, 0x05, 0x03,
-0x07, 0x09, 0x16, 0x10, 0x05, 0x01, 0x01, 0x09,
-0x0f, 0x0b, 0x01, 0x01, 0x01, 0x0e, 0x12, 0xe5,
-0x11, 0x01, 0x03, 0x04, 0x08, 0xe6, 0x02, 0x12,
-0x01, 0x08, 0x02, 0x03, 0x07, 0x08, 0xe8, 0x02,
-0x03, 0x05, 0xe5, 0x02, 0x0b, 0x02, 0xe5, 0x0e,
-0x02, 0x09, 0x07, 0x01, 0x09, 0x07, 0x01, 0x03,
-0xe6, 0x02, 0x06, 0x0d, 0xe8, 0x02, 0x0c, 0x02,
-0x0d, 0xe5, 0x1c, 0x0a, 0x16, 0x17, 0x01, 0x04,
-0xe5, 0x01, 0x04, 0x04, 0x01, 0x0b, 0x05, 0x09,
-0xe5, 0x08, 0x19, 0x02, 0x05, 0x03, 0x0c, 0x19,
-0xe6, 0xe5, 0x13, 0x1d, 0x09, 0x04, 0x04, 0x02,
-0x01, 0x09, 0x0e, 0x04, 0xe5, 0x02, 0x15, 0x04,
-0x03, 0xe5, 0x07, 0x09, 0x1b, 0x01, 0x07, 0x01,
-0xe5, 0x07, 0xe5, 0x01, 0x01, 0xe5, 0x02, 0x04,
-0xe5, 0x0a, 0x07, 0x09, 0x01, 0x01, 0xe5, 0xe7,
-0x11, 0x07, 0x0d, 0x16, 0xe5, 0x08, 0x06, 0x01,
-0xe5, 0x01, 0x01, 0x0d, 0x03, 0x1a, 0xe6, 0x01,
-0x01, 0x11, 0x10, 0xe6, 0x02, 0x05, 0x0a, 0x10,
-0xe5, 0x07, 0x01, 0xe5, 0x1d, 0xe5, 0xe7, 0x04,
-0x0b, 0x20, 0x0d, 0x09, 0x09, 0x02, 0xe5, 0x2c,
-0x05, 0x24, 0x27, 0x06, 0xe5, 0xe5, 0x05, 0x0e,
-0x09, 0x02, 0xe5, 0x01, 0xe6, 0x07, 0xe5, 0x04,
-0x05, 0x04, 0x01, 0x01, 0x04, 0x26, 0xe6, 0xe5,
-0xe5, 0x06, 0xe5, 0x01, 0x02, 0x01, 0xe5, 0x01,
-0x02, 0xe5, 0x09, 0x01, 0xe5, 0x0b, 0x04, 0x09,
-0x09, 0x02, 0xe5, 0x0a, 0x03, 0x05, 0x17, 0x32,
-0xe5, 0xe6, 0xe5, 0x01, 0x01, 0x05, 0x01, 0x03,
-0x01, 0xe6, 0x01, 0x04, 0xe6, 0x04, 0x26, 0xe5,
-0x02, 0xe5, 0x01, 0xe5, 0x02, 0xe5, 0x07, 0xe5,
-0x06, 0x04, 0xe5, 0x04, 0x01, 0x0c, 0xe5, 0x01,
-0x09, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0x03, 0x02,
-0x01, 0xe5, 0x05, 0x01, 0x06, 0xe5, 0x12, 0x01,
-0xe6, 0x1d, 0x01, 0x02, 0x03, 0x04, 0x0d, 0x04,
-0x04, 0x1e, 0xe5, 0x01, 0x01, 0x04, 0x01, 0x05,
-0xe6, 0x03, 0x0b, 0x02, 0x01, 0x04, 0xe5, 0xe6,
-0x18, 0x13, 0x01, 0x07, 0x07, 0x09, 0x17, 0x01,
-0xe5, 0x01, 0x0b, 0x0d, 0xe5, 0x04, 0x08, 0x05,
-0xe7, 0x01, 0x14, 0x24, 0x02, 0x01, 0x0d, 0xe5,
-0x03, 0x0e, 0x04, 0x04, 0x18, 0x13, 0x09, 0x09,
-0x09, 0x19, 0xe5, 0x0b, 0x14, 0x01, 0x0a, 0x03,
-0x02, 0x05, 0x07, 0x01, 0x02, 0x04, 0x04, 0x09,
-0x16, 0x11, 0x02, 0x02, 0xe5, 0x04, 0xe5, 0xe5,
-0x01, 0x02, 0x04, 0x04, 0xe5, 0x01, 0x03, 0x02,
-0x05, 0x08, 0x02, 0x03, 0x05, 0x06, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x01, 0x02, 0x09, 0x06, 0x02, 0x01, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x04, 0x04,
-0x01, 0x01, 0x07, 0x01, 0x01, 0x02, 0x0a, 0x01,
-0x01, 0x05, 0x03, 0x27, 0x09, 0x07, 0x01, 0x02,
-0xe7, 0xe5, 0xe5, 0x04, 0x02, 0x02, 0x01, 0xe6,
-0x02, 0x10, 0xe5, 0x02, 0x01, 0x01, 0xe5, 0x09,
-0x03, 0x01, 0x02, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x02, 0x05, 0x03, 0x05, 0x01, 0x01, 0x0f, 0x03,
-0xe5, 0x02, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0xe5,
-0xe5, 0x0b, 0x01, 0x04, 0x04, 0x01, 0xe5, 0x0b,
-0x01, 0x02, 0x01, 0x01, 0xe5, 0x04, 0xe5, 0x05,
-0x19, 0x01, 0x1b, 0x01, 0x01, 0x01, 0xe5, 0x03,
-0x04, 0x01, 0x07, 0x01, 0x0b, 0x02, 0x02, 0x0a,
-0xe5, 0x03, 0x04, 0x01, 0x02, 0x01, 0x05, 0x09,
-0x05, 0xe5, 0x01, 0x01, 0x01, 0xe7, 0x07, 0xe5,
-0x03, 0x05, 0x03, 0x04, 0x01, 0xe5, 0xe5, 0xe5,
-0x01, 0x06, 0x01, 0xe5, 0x07, 0xe5, 0xe5, 0xe5,
-0x01, 0x0a, 0x01, 0x01, 0xe7, 0x01, 0x03, 0xe5,
-0x08, 0x18, 0x01, 0x13, 0xe5, 0x05, 0x01, 0x02,
-0x01, 0x05, 0x03, 0x08, 0xe5, 0x05, 0xe5, 0x05,
-0x03, 0xe5, 0xe5, 0x05, 0xe5, 0x03, 0x03, 0xe5,
-0xe5, 0x01, 0x04, 0x01, 0x02, 0x03, 0xe7, 0x01,
-0x03, 0xe5, 0x03, 0x01, 0x02, 0x08, 0xe5, 0xe5,
-0x01, 0x01, 0x07, 0x03, 0xe5, 0xe5, 0x01, 0x01,
-0x02, 0x01, 0xe5, 0x03, 0x02, 0xe5, 0x09, 0xe5,
-0xe5, 0x01, 0x0d, 0x09, 0x09, 0x31, 0x02, 0x06,
-0x04, 0x04, 0x02, 0x01, 0x07, 0x06, 0x0b, 0x04,
-0x04, 0x09, 0x04, 0x04, 0x04, 0x04, 0x09, 0x09,
-0x02, 0xe5, 0x04, 0x04, 0x07, 0xe5, 0x04, 0x04,
-0x04, 0x02, 0xe6, 0x13, 0x01, 0x10, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x29, 0xe5, 0x03, 0x03, 0x01,
-0x03, 0xe5, 0x07, 0xe5, 0x03, 0x04, 0x02, 0x01,
-0x03, 0xe5, 0x01, 0x03, 0x03, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x0f, 0xe5,
-0x07, 0xe5, 0x01, 0x06, 0x0d, 0x02, 0xe5, 0x0d,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0x09, 0x09,
-0x09, 0x06, 0x02, 0xe5, 0x01, 0x05, 0xe6, 0x03,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0x05, 0x03, 0xe5,
-0x01, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe5, 0x01, 0x02, 0x02, 0x02, 0x06,
-0xe5, 0x07, 0xe6, 0x02, 0x03, 0x0d, 0xe5, 0xe7,
-0x01, 0x45, 0x06, 0x02, 0x12, 0xe5, 0x08, 0x32,
-0x2f, 0x02, 0x2c, 0x02, 0xe5, 0xe6, 0x10, 0x09,
-0x29, 0x0b, 0x13, 0x05, 0x03, 0x05, 0x09, 0x0b,
-0x09, 0x09, 0x13, 0x09, 0x13, 0x03, 0x0f, 0x20,
-0xe5, 0xe6, 0x0c, 0x01, 0xe7, 0x06, 0xe6, 0x03,
-0x01, 0xe5, 0xe5, 0x19, 0x04, 0x02, 0x01, 0x04,
-0x04, 0xe6, 0x04, 0x01, 0xe7, 0x06, 0xe5, 0x0d,
-0xe5, 0xe8, 0x04, 0x02, 0xe7, 0x03, 0x01, 0xe7,
-0x03, 0x01, 0xe7, 0x05, 0xe7, 0x05, 0xe7, 0x06,
-0x01, 0x04, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5,
-0xe5, 0x02, 0x02, 0x09, 0xe5, 0xe5, 0x02, 0xe5,
-0xe8, 0x14, 0x01, 0xe6, 0x0c, 0x01, 0xe6, 0x08,
-0x05, 0x01, 0xe6, 0x1a, 0xe5, 0x05, 0x01, 0xe5,
-0x09, 0x02, 0x01, 0xe5, 0xe7, 0x04, 0x02, 0xe5,
-0x01, 0x06, 0x05, 0x01, 0xe6, 0x03, 0x04, 0xe6,
-0x04, 0x01, 0xe6, 0x03, 0xe5, 0xe7, 0x03, 0xe5,
-0x01, 0xe5, 0x01, 0x04, 0xe6, 0x08, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x04, 0x01, 0xe6, 0x07, 0xe5, 0xe5, 0x02, 0xe5,
-0x02, 0x03, 0x01, 0xe5, 0x0b, 0x01, 0x01, 0x0e,
-0xe5, 0xe5, 0x02, 0x16, 0x02, 0x07, 0x01, 0x06,
-0x0a, 0x01, 0x01, 0x02, 0x01, 0x02, 0x14, 0x02,
-0x07, 0xe5, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02,
-0x01, 0xe5, 0x07, 0x09, 0x01, 0x18, 0x0c, 0x06,
-0x02, 0x0a, 0x02, 0x16, 0xe6, 0x0c, 0x01, 0x03,
-0xe7, 0x02, 0x02, 0xe8, 0xe5, 0x02, 0xe7, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe6, 0x06, 0xe5,
-0x02, 0x04, 0xe6, 0xe5, 0x02, 0x01, 0xe5, 0x02,
-0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0xe5, 0x01,
-0x03, 0xe8, 0xe5, 0x02, 0xe8, 0xe5, 0x02, 0xe8,
-0x01, 0x02, 0xe7, 0x01, 0x03, 0xe7, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0xe8, 0xe5, 0x04,
-0xe5, 0x01, 0x03, 0xe7, 0x05, 0xe7, 0x07, 0xe7,
-0x02, 0x02, 0x01, 0xe5, 0x15, 0x03, 0x05, 0x09,
-0x0d, 0x08, 0xe5, 0x05, 0x01, 0xe5, 0x12, 0x06,
-0x02, 0xe5, 0x07, 0xe5, 0x04, 0x01, 0x0b, 0xe6,
-0x01, 0x05, 0x09, 0xe5, 0x06, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x0c, 0x01, 0x07, 0x01, 0xe6, 0x10,
-0x06, 0xe5, 0xe6, 0x04, 0xe5, 0x01, 0xe5, 0x0b,
-0x03, 0x11, 0x01, 0x01, 0xe5, 0x03, 0x01, 0x01,
-0xe5, 0x03, 0x01, 0x01, 0xe5, 0x0c, 0x08, 0xe5,
-0x05, 0x01, 0x0b, 0x09, 0x01, 0x01, 0x05, 0x09,
-0x05, 0x01, 0x01, 0x03, 0xe5, 0x03, 0x02, 0xe5,
-0x01, 0x03, 0x01, 0x03, 0x05, 0x03, 0xe5, 0x03,
-0x03, 0x02, 0xe5, 0xe5, 0x02, 0x05, 0xe5, 0x01,
-0xe5, 0xe5, 0x01, 0xe5, 0x02, 0x01, 0x02, 0xe5,
-0x01, 0xe5, 0x03, 0x06, 0x01, 0x01, 0x01, 0xe6,
-0xe5, 0xe5, 0xe5, 0xe6, 0x01, 0x02, 0x04, 0xe5,
-0x03, 0xe6, 0xe6, 0x13, 0xe5, 0x03, 0x03, 0xe5,
-0x07, 0xe5, 0x16, 0x07, 0x01, 0xe5, 0x12, 0x04,
-0x0d, 0x0f, 0x05, 0x05, 0x07, 0xe6, 0x06, 0xe6,
-0x02, 0xe5, 0x01, 0x01, 0x03, 0x03, 0x01, 0x09,
-0x09, 0x08, 0xe5, 0x0c, 0x04, 0xe5, 0x03, 0x03,
-0xe5, 0xe5, 0x08, 0x0a, 0x13, 0x09, 0x09, 0x10,
-0x08, 0xe5, 0x05, 0x01, 0xe5, 0x15, 0x05, 0x07,
-0x0f, 0xe5, 0xe5, 0x03, 0x03, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x06, 0xe7, 0x06, 0xe5, 0x01, 0x04,
-0xe6, 0x05, 0xe7, 0x05, 0x01, 0x07, 0x01, 0xe5,
-0x0b, 0x03, 0x09, 0x05, 0x08, 0x03, 0x01, 0xe8,
-0x16, 0x02, 0x30, 0xe5, 0x03, 0x01, 0xe5, 0xe5,
-0x0f, 0x02, 0x3e, 0xe5, 0x03, 0x02, 0x08, 0xe5,
-0x19, 0x02, 0x1c, 0xe5, 0x0c, 0x01, 0xe6, 0xe5,
-0x08, 0x05, 0x01, 0x05, 0x01, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x05, 0x01, 0x02, 0x04, 0x01, 0x01,
-0x05, 0xe6, 0xe5, 0x04, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x05, 0x01, 0xe6, 0x04, 0x01, 0x02, 0x06,
-0x01, 0x01, 0x05, 0xe6, 0x06, 0x01, 0x02, 0x04,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x07, 0xe6, 0x06,
-0x01, 0x07, 0x01, 0x01, 0x05, 0xe6, 0xe5, 0x03,
-0xe7, 0xe5, 0x04, 0x01, 0x07, 0x01, 0x06, 0x03,
-0xe6, 0xe5, 0x14, 0x03, 0xe5, 0x07, 0xe5, 0x04,
-0x18, 0x08, 0x0d, 0xe5, 0x02, 0xe5, 0x05, 0x05,
-0x1b, 0xe5, 0x07, 0xe5, 0xe5, 0x09, 0x05, 0xe5,
-0x05, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0x07, 0xe5, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x09, 0x0b, 0x02, 0x02, 0xe6, 0x0a,
-0x04, 0x04, 0xe5, 0xe5, 0x04, 0x02, 0x1f, 0x06,
-0x03, 0x0b, 0x02, 0x01, 0x07, 0x0f, 0xe6, 0x07,
-0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04,
-0x06, 0xe5, 0x01, 0x09, 0x04, 0xe5, 0x03, 0x09,
-0x03, 0x06, 0x0b, 0xe5, 0x02, 0x02, 0x01, 0x04,
-0x0c, 0x04, 0x05, 0x02, 0x02, 0xe6, 0x08, 0x18,
-0x16, 0x03, 0xe5, 0x0c, 0x0c, 0x04, 0x0b, 0x03,
-0x01, 0x09, 0x08, 0x06, 0x08, 0x02, 0x10, 0xe5,
-0x06, 0x0a, 0xe5, 0x04, 0x02, 0x01, 0x0a, 0x19,
-0x03, 0x0b, 0x05, 0x04, 0xe7, 0x07, 0x01, 0x02,
-0xe6, 0x09, 0x06, 0xe6, 0x1e, 0x05, 0x01, 0x03,
-0x03, 0xe6, 0x06, 0x01, 0x02, 0x07, 0x06, 0x01,
-0x04, 0x05, 0x07, 0x09, 0xe8, 0x01, 0x03, 0x01,
-0xe5, 0x08, 0x0d, 0x05, 0x17, 0x04, 0x0b, 0x0f,
-0x01, 0x0e, 0x02, 0xe5, 0xe5, 0x0b, 0x19, 0x1e,
-0x01, 0x02, 0x06, 0x19, 0x03, 0x01, 0x05, 0x0b,
-0x0c, 0x08, 0x02, 0x19, 0x06, 0x1b, 0x03, 0x09,
-0x07, 0x01, 0x04, 0x0b, 0x05, 0x10, 0x09, 0x05,
-0xe5, 0x15, 0x0b, 0x06, 0xe5, 0x08, 0x01, 0x0a,
-0x1a, 0xe5, 0x04, 0x03, 0x09, 0xe5, 0x07, 0x0c,
-0x05, 0xe5, 0x09, 0x07, 0xe5, 0x0c, 0x03, 0x05,
-0x06, 0xe5, 0x0e, 0x05, 0x0b, 0xe7, 0x24, 0xe6,
-0x0f, 0x10, 0xe5, 0x14, 0x13, 0x04, 0x0b, 0x04,
-0xe5, 0x01, 0x0f, 0x0e, 0x01, 0x02, 0x53, 0xe8,
-0x4a, 0x36, 0x02, 0xe5, 0x02, 0x09, 0x09, 0x0d,
-0x02, 0x0d, 0x09, 0x0b, 0x01, 0x05, 0x0a, 0x0a,
-0x07, 0x08, 0x04, 0x01, 0xe5, 0x34, 0xe6, 0x02,
-0x13, 0x03, 0xe5, 0x15, 0xe5, 0xe5, 0x08, 0x02,
-0xe5, 0x06, 0xe5, 0xe6, 0x06, 0x08, 0xe5, 0x06,
-0x01, 0x01, 0x04, 0x02, 0x06, 0x03, 0xe5, 0x06,
-0xe6, 0x17, 0xe5, 0x01, 0x01, 0x01, 0x01, 0x06,
-0x06, 0xe5, 0x01, 0x0c, 0x01, 0xe6, 0xe5, 0x35,
-0x0b, 0x0c, 0x01, 0x01, 0x16, 0x0c, 0x01, 0xe5,
-0x02, 0x06, 0xe5, 0x1e, 0x0e, 0xe6, 0xe5, 0x02,
-0x03, 0x01, 0x01, 0x01, 0xe5, 0xe5, 0x1a, 0x0c,
-0x01, 0x07, 0x07, 0x01, 0xe5, 0x01, 0x08, 0x35,
-0x04, 0x02, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02,
-0x1c, 0xe5, 0x02, 0x13, 0x06, 0x02, 0x09, 0xe5,
-0xe5, 0x01, 0xe5, 0x04, 0x09, 0x13, 0x09, 0x0e,
-0x04, 0x0e, 0xe5, 0x01, 0xe6, 0x08, 0x19, 0x1b,
-0x09, 0x01, 0x11, 0x0b, 0x0a, 0x07, 0x0d, 0x02,
-0x18, 0x08, 0x04, 0x02, 0xe6, 0x04, 0x03, 0x05,
-0x09, 0x02, 0xe5, 0x06, 0xe6, 0x01, 0x11, 0x0c,
-0x04, 0x06, 0x0a, 0x09, 0x09, 0x01, 0x11, 0x05,
-0xe5, 0x03, 0x02, 0x02, 0x11, 0xe5, 0x03, 0x14,
-0x07, 0x0f, 0x05, 0x09, 0x0f, 0x12, 0xe5, 0x13,
-0x0e, 0x06, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02,
-0xe6, 0x11, 0x01, 0x0a, 0x16, 0x0d, 0x01, 0xe5,
-0x01, 0xe6, 0x03, 0x02, 0xe6, 0xe5, 0xe5, 0x02,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0xe6, 0x05, 0x09,
-0x06, 0x04, 0x05, 0xe5, 0x01, 0x05, 0x03, 0x05,
-0x09, 0x03, 0x16, 0x01, 0x11, 0xe5, 0x23, 0xe6,
-0x02, 0x02, 0x01, 0x1c, 0x1d, 0xe5, 0x03, 0xe5,
-0x01, 0x01, 0x01, 0x02, 0x01, 0xe5, 0x0f, 0xe5,
-0xe6, 0x01, 0x06, 0x08, 0xe5, 0xe5, 0x07, 0xe5,
-0xe5, 0x05, 0x03, 0x05, 0x03, 0x05, 0x0d, 0x01,
-0xe5, 0x12, 0xe5, 0x0a, 0xe5, 0x11, 0xe5, 0x13,
-0x01, 0x04, 0x01, 0x04, 0x1c, 0x0f, 0xe5, 0x01,
-0x01, 0x09, 0x07, 0x09, 0x03, 0xe5, 0x07, 0x07,
-0x03, 0xe5, 0x01, 0x01, 0x01, 0x05, 0x0d, 0x04,
-0x01, 0xe5, 0x05, 0xe5, 0xe5, 0x08, 0x04, 0x04,
-0x24, 0x01, 0x02, 0x0a, 0x03, 0x01, 0xe5, 0xe5,
-0x09, 0x08, 0x05, 0x01, 0xe5, 0x01, 0x1e, 0x10,
-0xe5, 0xe5, 0xe5, 0x06, 0x09, 0x01, 0x07, 0x13,
-0x09, 0x05, 0xe5, 0x01, 0x0b, 0x09, 0x09, 0x09,
-0x2e, 0xe5, 0xe5, 0x09, 0x05, 0x0d, 0x02, 0x09,
-0x02, 0x02, 0xe5, 0x20, 0x1f, 0x06, 0xe5, 0xe5,
-0x03, 0x01, 0xe5, 0x14, 0x06, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x01, 0xe5, 0x03,
-0xe5, 0x01, 0x05, 0x09, 0x04, 0x04, 0x04, 0x01,
-0x02, 0x09, 0x04, 0x01, 0x02, 0x09, 0x04, 0x01,
-0xe5, 0xe5, 0xe5, 0xe5, 0x02, 0xe5, 0x02, 0x03,
-0x02, 0xe5, 0x01, 0x03, 0x0f, 0xe6, 0x01, 0x1e,
-0x03, 0x13, 0x05, 0x03, 0x03, 0xe6, 0xe5, 0xe5,
-0xe5, 0x01, 0xe5, 0x02, 0x0f, 0x03, 0x03, 0xe5,
-0x04, 0x03, 0xe5, 0x03, 0x03, 0x02, 0x04, 0x03,
-0x05, 0x09, 0x04, 0x03, 0x05, 0x04, 0x0e, 0x01,
-0x01, 0x0f, 0x02, 0x09, 0x06, 0x04, 0x01, 0x01,
-0x03, 0x0a, 0x02, 0xe5, 0xe7, 0x1f, 0x13, 0x01,
-0x04, 0x04, 0x05, 0x01, 0x01, 0x07, 0x04, 0x09,
-0x06, 0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x02,
-0xe5, 0x06, 0x01, 0x01, 0x07, 0x01, 0x07, 0x06,
-0x01, 0xe5, 0xe5, 0x0a, 0x01, 0xe5, 0x01, 0x01,
-0x01, 0x01, 0xe5, 0x06, 0xe6, 0x01, 0x01, 0x0a,
-0x06, 0x01, 0x02, 0x14, 0xe5, 0x02, 0x02, 0x1e,
-0x13, 0x01, 0x05, 0x01, 0x09, 0x01, 0x07, 0x13,
-0x09, 0x04, 0x04, 0x04, 0x06, 0x04, 0x04, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x03, 0xe5, 0xe5,
-0x01, 0x04, 0x09, 0x04, 0x01, 0x02, 0x08, 0xe5,
-0x03, 0x01, 0xe6, 0x07, 0x03, 0x01, 0x1c, 0xe5,
-0xe5, 0x01, 0x2e, 0x02, 0x10, 0x02, 0x06, 0xe5,
-0x1b, 0xe5, 0x07, 0xe5, 0x2e, 0x02, 0x01, 0xe5,
-0x05, 0x02, 0x03, 0x09, 0x09, 0x09, 0x09, 0x02,
-0x13, 0xe5, 0x0c, 0x32, 0xe5, 0x39, 0xe5, 0x15,
-0x21, 0xe5, 0x01, 0xe5, 0x07, 0x05, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x0b, 0x09, 0x01, 0x0d, 0xe5,
-0x01, 0x09, 0xe6, 0xe6, 0x0a, 0x02, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x09, 0x09, 0x09, 0x02, 0x03, 0x02, 0x06, 0x02,
-0x0b, 0x09, 0x06, 0x02, 0x09, 0xe5, 0x04, 0x02,
-0x05, 0x03, 0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x02,
-0x01, 0x02, 0xe5, 0x01, 0x05, 0xe5, 0x03, 0xe5,
-0x01, 0x04, 0x01, 0x02, 0x01, 0x03, 0x07, 0x01,
-0x02, 0x02, 0x08, 0xe5, 0x30, 0x09, 0x24, 0x02,
-0x08, 0xe5, 0x08, 0x0b, 0x06, 0x02, 0x12, 0x28,
-0x12, 0xe5, 0x08, 0x0e, 0x03, 0xe5, 0xe5, 0x09,
-0x31, 0x0a, 0x25, 0x09, 0x0a, 0x0b, 0x09, 0x10,
-0x27, 0x01, 0x15, 0x07, 0x18, 0x0f, 0x1b, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x18, 0x04, 0x07, 0x01,
-0x09, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x02,
-0x02, 0x06, 0x02, 0x04, 0x01, 0x02, 0x01, 0x02,
-0x01, 0xe5, 0xe5, 0x05, 0x02, 0x06, 0xe7, 0x05,
-0xe7, 0x03, 0x01, 0xe7, 0x06, 0x06, 0x01, 0xe6,
-0x04, 0x0c, 0xe5, 0x0b, 0x01, 0x01, 0x0d, 0x02,
-0x1a, 0x01, 0xe5, 0x04, 0xe5, 0xe6, 0x05, 0x01,
-0xe5, 0x08, 0x12, 0xe5, 0x04, 0xe5, 0xe6, 0x05,
-0x03, 0x05, 0x03, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x05, 0x03, 0x05, 0x01, 0xe6, 0x06, 0x01,
-0x07, 0xe6, 0x06, 0xe6, 0x03, 0xe5, 0xe7, 0x08,
-0x04, 0xe5, 0x01, 0x08, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x05, 0xe5, 0x02, 0x03, 0xe7, 0x0d, 0x04,
-0x15, 0x07, 0x02, 0x01, 0x03, 0x03, 0x01, 0x0e,
-0x0e, 0x0d, 0xe5, 0x01, 0x01, 0x03, 0x03, 0x01,
-0x03, 0x07, 0x03, 0x05, 0x03, 0x03, 0x01, 0x03,
-0x0f, 0x03, 0x02, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x02, 0x13, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x05,
-0x05, 0xe5, 0x04, 0x07, 0xe5, 0x01, 0x0d, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe6, 0xe5, 0x04,
-0xe6, 0x06, 0xe5, 0xe6, 0xe5, 0x04, 0xe6, 0xe5,
-0x04, 0xe6, 0x06, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x02, 0x04,
-0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe7, 0x02, 0x02, 0xe7, 0x0e,
-0x1b, 0x01, 0x0a, 0x06, 0x01, 0x14, 0x08, 0xe5,
-0x05, 0x01, 0x09, 0x09, 0x1f, 0x07, 0x01, 0xe5,
-0x07, 0x09, 0x09, 0xe5, 0x05, 0x01, 0xe5, 0x0f,
-0x01, 0x09, 0x09, 0x0e, 0x01, 0x01, 0x0d, 0x1d,
-0x01, 0x0a, 0x06, 0x01, 0x14, 0x08, 0x07, 0x01,
-0x07, 0x03, 0x09, 0x07, 0x03, 0x05, 0x03, 0x09,
-0x05, 0x01, 0xe5, 0xe5, 0x05, 0x01, 0x07, 0x02,
-0x06, 0x02, 0x04, 0x01, 0x02, 0x09, 0x04, 0x01,
-0x07, 0x04, 0x06, 0x02, 0x04, 0xe5, 0x03, 0xe5,
-0xe8, 0x07, 0x02, 0x02, 0x31, 0x07, 0x15, 0xe5,
-0x1b, 0x1f, 0x13, 0x09, 0x09, 0xe5, 0x08, 0x08,
-0x07, 0x01, 0x09, 0x09, 0x07, 0x09, 0xe5, 0x01,
-0x0a, 0x0c, 0x1d, 0x06, 0x01, 0x0a, 0x09, 0x08,
-0xe5, 0x08, 0x1c, 0x09, 0x1d, 0x0b, 0x09, 0x1b,
-0x01, 0xe5, 0x05, 0x0b, 0x0c, 0x03, 0x01, 0x0b,
-0x15, 0xe5, 0xe5, 0x0d, 0x15, 0x01, 0xe5, 0x05,
-0xe5, 0xe5, 0x1b, 0xe5, 0x05, 0x02, 0x08, 0x09,
-0x01, 0xe5, 0x0f, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0x1e, 0x04, 0x02, 0x10, 0x02, 0x04, 0x08,
-0x03, 0x07, 0x01, 0x11, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0x01, 0x05, 0x01, 0x02,
-0x04, 0x01, 0x01, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0x04, 0x02, 0x01, 0x01, 0x05, 0x01, 0x01, 0xe5,
-0x03, 0xe6, 0xe5, 0x04, 0x01, 0x04, 0x01, 0xe5,
-0xe7, 0x02, 0x03, 0x01, 0x04, 0x02, 0x01, 0x01,
-0x05, 0x01, 0x04, 0x01, 0xe5, 0xe6, 0xe5, 0xe5,
-0x01, 0x01, 0x07, 0x01, 0x07, 0x01, 0x06, 0xe5,
-0xe5, 0x03, 0x02, 0x01, 0x07, 0x01, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x02, 0x07, 0xe5, 0x01, 0x4a,
-0xe6, 0x0b, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0x0b,
-0x03, 0x05, 0x0b, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x0f, 0xe5, 0x01, 0x0b, 0x03, 0x09, 0x07,
-0x13, 0x03, 0x08, 0x0a, 0x03, 0x02, 0xe5, 0x0a,
-0x09, 0x09, 0x1d, 0x08, 0x01, 0x03, 0x04, 0x09,
-0x04, 0x06, 0x0e, 0x02, 0x06, 0x02, 0x08, 0x02,
-0xe5, 0x01, 0x02, 0x03, 0x05, 0x07, 0x01, 0x03,
-0x05, 0xe5, 0x07, 0x09, 0x0c, 0x09, 0x09, 0x06,
-0x02, 0xe5, 0x05, 0x08, 0xe5, 0xe7, 0xe5, 0x01,
-0x03, 0x01, 0x08, 0x37, 0x03, 0x07, 0x05, 0x01,
-0x01, 0x06, 0x01, 0x01, 0x0b, 0x01, 0x15, 0x01,
-0x04, 0x02, 0x01, 0x0c, 0x06, 0x13, 0x09, 0x05,
-0x06, 0xe5, 0x01, 0x27, 0xe7, 0x0a, 0x10, 0x08,
-0xe5, 0x06, 0x08, 0x07, 0x01, 0x07, 0x02, 0x0b,
-0x09, 0x0a, 0x03, 0x01, 0x05, 0x01, 0x01, 0x02,
-0x09, 0x02, 0x03, 0x01, 0x01, 0x05, 0x01, 0xe5,
-0x0c, 0x01, 0x04, 0xe5, 0x06, 0x1a, 0x01, 0x07,
-0xe6, 0x06, 0xe5, 0x01, 0xe5, 0x05, 0x0e, 0x03,
-0x35, 0x09, 0x02, 0x09, 0x03, 0x01, 0x09, 0x07,
-0x07, 0x06, 0x09, 0x07, 0x08, 0x09, 0x04, 0x18,
-0xe5, 0x07, 0x19, 0x05, 0xe5, 0x06, 0x11, 0x0c,
-0x01, 0x13, 0x09, 0x0f, 0x02, 0x06, 0x01, 0x02,
-0x04, 0x09, 0x01, 0x1f, 0x03, 0x05, 0x03, 0xe6,
-0x02, 0x03, 0x03, 0x03, 0x09, 0x03, 0x04, 0x0a,
-0x06, 0x09, 0x01, 0x0a, 0x05, 0xe5, 0x05, 0x05,
-0x09, 0x0d, 0x03, 0x0d, 0x01, 0xe5, 0x08, 0x1a,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0x02, 0x03, 0x02, 0x01, 0x07, 0x02, 0x04,
-0x01, 0x01, 0xe5, 0x08, 0x03, 0x01, 0xe5, 0xe6,
-0x01, 0x01, 0x02, 0xe5, 0x01, 0x04, 0x01, 0x09,
-0x09, 0x09, 0x09, 0x09, 0xe6, 0x36, 0x01, 0xe5,
-0x02, 0x11, 0x1c, 0x11, 0x10, 0x0b, 0x07, 0x04,
-0x1a, 0x02, 0x04, 0x03, 0x04, 0xe5, 0x08, 0x03,
-0xe5, 0x03, 0x04, 0x04, 0x03, 0x05, 0x0e, 0xe5,
-0x0a, 0x06, 0x1b, 0x05, 0x01, 0x0d, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x08, 0x03, 0x1f, 0x0c,
-0x09, 0x01, 0x0a, 0x0b, 0x04, 0x0a, 0x15, 0x04,
-0x0e, 0x07, 0x09, 0xe6, 0x12, 0x04, 0x03, 0x0f,
-0x0a, 0xe5, 0xe6, 0x02, 0x06, 0x02, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x08, 0x0c, 0x09, 0x18, 0xe5,
-0x19, 0x07, 0x04, 0x20, 0x13, 0x0f, 0x02, 0xe5,
-0x14, 0xe5, 0x04, 0x16, 0x04, 0x01, 0xe5, 0x16,
-0x01, 0x07, 0x01, 0x02, 0x06, 0x06, 0x02, 0x06,
-0x02, 0x09, 0x13, 0x06, 0x0c, 0x07, 0x01, 0x06,
-0x02, 0x01, 0x06, 0x13, 0x09, 0x25, 0x02, 0x01,
-0x03, 0xe5, 0xe5, 0x05, 0x09, 0x15, 0x02, 0xe5,
-0x06, 0x10, 0x09, 0x07, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x06, 0xe6, 0x05, 0x02, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x03, 0x02, 0xe5, 0xe5, 0x01, 0xe5,
-0x01, 0xe5, 0x03, 0x05, 0xe5, 0xe5, 0x01, 0x01,
-0x01, 0xe5, 0xe5, 0x01, 0xe6, 0xe8, 0x01, 0x01,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x01,
-0xe6, 0xe5, 0x01, 0x04, 0x01, 0x13, 0x2b, 0xe6,
-0x01, 0x02, 0x02, 0x0d, 0x04, 0x09, 0x21, 0x08,
-0x07, 0x02, 0x04, 0x01, 0x09, 0x01, 0x05, 0x01,
-0x08, 0x09, 0x02, 0x0b, 0x27, 0x09, 0x10, 0x0e,
-0x0c, 0x04, 0x0c, 0xe6, 0xe7, 0x06, 0xe5, 0x05,
-0x05, 0x03, 0x05, 0x01, 0x01, 0x05, 0x06, 0xe5,
-0xe5, 0xe5, 0xe5, 0x01, 0xe5, 0xe5, 0x02, 0x02,
-0x01, 0xe5, 0x02, 0x02, 0xe5, 0xe5, 0x02, 0x05,
-0x01, 0x01, 0x05, 0x03, 0x05, 0x01, 0x01, 0x02,
-0xe5, 0xe5, 0x02, 0x02, 0xe5, 0x02, 0x01, 0x01,
-0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5, 0x02,
-0xe5, 0xe6, 0xe5, 0x02, 0x05, 0x03, 0x01, 0xe5,
-0x01, 0x01, 0x01, 0x02, 0xe5, 0x04, 0x05, 0x01,
-0x01, 0x06, 0x08, 0x20, 0x01, 0x03, 0xe6, 0x01,
-0x01, 0x05, 0xe5, 0x03, 0x03, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x08, 0x04, 0xe5, 0x02,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x01, 0xe5, 0x03,
-0x04, 0xe5, 0x02, 0x01, 0x07, 0xe5, 0x02, 0xe5,
-0x02, 0x09, 0x01, 0x02, 0x01, 0x02, 0x04, 0x01,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0xe5, 0x07, 0x01, 0x02, 0x01,
-0x02, 0x08, 0xe5, 0xe5, 0x04, 0x02, 0x06, 0xe5,
-0x04, 0x01, 0xe5, 0x20, 0x02, 0x03, 0x04, 0x12,
-0x09, 0x06, 0x04, 0x04, 0x04, 0x02, 0x01, 0x04,
-0x02, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x03, 0x04,
-0x04, 0x04, 0x04, 0x01, 0xe5, 0xe5, 0x03, 0x02,
-0x01, 0x04, 0x01, 0xe5, 0xe5, 0x05, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x01, 0x02, 0x02, 0x04,
-0x04, 0x0b, 0x07, 0x06, 0xe5, 0xe5, 0xe5, 0x17,
-0xe8, 0x01, 0x14, 0x09, 0x06, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0x02, 0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0xe5, 0xe5, 0x08,
-0x09, 0x05, 0xe5, 0x01, 0x01, 0x12, 0x02, 0x01,
-0xe5, 0x02, 0x12, 0x04, 0x04, 0x04, 0x04, 0x06,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0xe5, 0x03, 0x09, 0x06, 0x04,
-0x01, 0xe5, 0x03, 0x09, 0x14, 0x04, 0x02, 0x14,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x02, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x01, 0x02, 0xe5,
-0x02, 0x01, 0x02, 0xe5, 0x02, 0x01, 0x02, 0x01,
-0xe5, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x01, 0x02,
-0xe5, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x04, 0xe5,
-0x02, 0x01, 0x02, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x02, 0x0a, 0x04, 0x03, 0x01, 0x02, 0xe5, 0x02,
-0x09, 0x13, 0x01, 0x01, 0xe8, 0x10, 0xe6, 0x01,
-0x04, 0xe6, 0x01, 0x03, 0xe7, 0x01, 0x03, 0x02,
-0x02, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x09, 0x03, 0x05, 0x03, 0x05, 0x0b, 0x04,
-0x04, 0x09, 0x03, 0x05, 0x07, 0x01, 0x09, 0x0b,
-0x02, 0x01, 0x02, 0x01, 0x09, 0x07, 0x03, 0x01,
-0xe5, 0x01, 0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x0f,
-0xe6, 0x01, 0x11, 0xe5, 0xe5, 0xe6, 0x02, 0xe5,
-0xe5, 0xe6, 0x03, 0x01, 0x01, 0x02, 0x02, 0x01,
-0xe6, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x02,
-0x06, 0x02, 0xe6, 0x03, 0x01, 0xe7, 0x05, 0x01,
-0xe7, 0x03, 0x01, 0xe7, 0x03, 0x02, 0xe6, 0x03,
-0x01, 0xe5, 0x05, 0x01, 0xe7, 0x03, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0xe6, 0xe5, 0xe5, 0x01, 0x04,
-0x09, 0x04, 0x04, 0x01, 0x02, 0x14, 0xe7, 0xe5,
-0x0f, 0x09, 0x09, 0x06, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x05, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0x01, 0x07, 0xe5, 0x0e, 0x09, 0x17,
-0x01, 0xe6, 0x0f, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x06, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x18, 0xe5, 0x07, 0xe5, 0x19, 0xe5, 0x08,
-0x01, 0x02, 0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe6,
-0x01, 0x01, 0xe5, 0xe8, 0x01, 0x01, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01,
-0xe6, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x04, 0x01, 0xe5, 0x07, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5,
-0x03, 0x01, 0xe5, 0x04, 0x02, 0x09, 0x09, 0xe7,
-0x05, 0xe6, 0x06, 0x0d, 0xe5, 0x02, 0x02, 0x09,
-0x1d, 0xe5, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x07, 0xe5, 0x08, 0x2c, 0x03, 0x01, 0xe5,
-0x08, 0x07, 0x09, 0x0d, 0x01, 0x09, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0xe5,
-0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0xe5, 0x05,
-0xe5, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x02, 0x08, 0x31, 0x03,
-0x0c, 0x02, 0xe7, 0x05, 0xe7, 0x05, 0xe7, 0x05,
-0xe5, 0xe5, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6,
-0x02, 0xe5, 0x01, 0x01, 0x04, 0x02, 0xe6, 0x03,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02, 0xe6,
-0x03, 0x02, 0xe6, 0x05, 0x02, 0xe6, 0x03, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x02,
-0xe5, 0x01, 0xe6, 0x03, 0x02, 0x01, 0x04, 0x02,
-0xe6, 0x05, 0x02, 0x06, 0x0a, 0xe6, 0x06, 0xe6,
-0x14, 0x01, 0xe6, 0x0c, 0x02, 0xe5, 0x06, 0xe6,
-0x06, 0xe6, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x03, 0xe5, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x03,
-0xe5, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x01, 0xe5, 0x03, 0x02, 0x02, 0xe5, 0x03, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x03, 0x05, 0x01, 0xe5,
-0x02, 0x06, 0x09, 0x17, 0x02, 0xe5, 0x08, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x10, 0x02, 0x09, 0x09,
-0x09, 0x09, 0x06, 0x02, 0x09, 0xe5, 0x02, 0x04,
-0xe5, 0x06, 0x02, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x04, 0x02, 0x04, 0x04, 0xe5, 0x07, 0x04, 0x04,
-0x09, 0x03, 0xe5, 0x03, 0x0a, 0x02, 0xe5, 0x04,
-0x17, 0x01, 0x01, 0x0d, 0x05, 0xe7, 0x01, 0x03,
-0xe7, 0x01, 0xe5, 0x01, 0xe7, 0x05, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0xe5, 0x01,
-0xe5, 0xe5, 0x01, 0x03, 0xe7, 0x01, 0xe5, 0x01,
-0xe7, 0x01, 0x03, 0xe7, 0x01, 0x04, 0xe6, 0x01,
-0x03, 0xe7, 0x01, 0x03, 0xe7, 0x03, 0x03, 0xe7,
-0x01, 0x03, 0x01, 0xe5, 0x01, 0x04, 0xe6, 0x01,
-0xe5, 0x01, 0xe7, 0x01, 0x04, 0xe6, 0x01, 0x03,
-0xe7, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x03, 0x01,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x05, 0xe7,
-0x07, 0xe5, 0x07, 0x01, 0xe5, 0x0e, 0x06, 0x02,
-0x06, 0x02, 0xe6, 0x03, 0xe5, 0xe6, 0x07, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe5, 0x07, 0xe6, 0x06, 0xe6, 0x08, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe6,
-0x06, 0xe5, 0x07, 0xe6, 0x06, 0x07, 0x01, 0xe5,
-0x0e, 0x03, 0x05, 0x0c, 0x05, 0xe7, 0x0c, 0x04,
-0xe5, 0xe6, 0x01, 0x02, 0xe5, 0xe6, 0x01, 0x02,
-0xe5, 0xe7, 0xe6, 0xe6, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x01,
-0xe6, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0x02, 0xe5, 0x03, 0x02, 0x01,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x03,
-0x02, 0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0x02, 0x04,
-0x04, 0x03, 0xe5, 0xe5, 0x0b, 0x02, 0xe5, 0x04,
-0xe5, 0xe6, 0x10, 0x01, 0xe6, 0x0e, 0x04, 0xe5,
-0x02, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0xe5, 0x05,
-0xe7, 0x05, 0xe7, 0x05, 0xe7, 0x05, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x04, 0x01, 0x01, 0x06, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x04, 0xe6, 0x01, 0xe5,
-0x04, 0x01, 0x01, 0x07, 0x01, 0x07, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x06, 0xe5, 0xe5, 0x04, 0x01,
-0x01, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0xe5,
-0x0d, 0x04, 0x03, 0xe5, 0x11, 0xe5, 0xe6, 0x0c,
-0x05, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x02, 0x02, 0x05, 0xe8,
-0x04, 0xe8, 0x04, 0xe8, 0x04, 0xe8, 0x04, 0x01,
-0xe6, 0x04, 0xe8, 0x04, 0x01, 0x03, 0x03, 0xe8,
-0xe6, 0x0b, 0xe5, 0x07, 0x14, 0xe8, 0x18, 0xe5,
-0x05, 0xe5, 0xe5, 0xe5, 0x01, 0x3b, 0x09, 0x2f,
-0x23, 0x09, 0xe5, 0xe5, 0x0c, 0x02, 0x02, 0x25,
-0x01, 0x0f, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01,
-0x07, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x07,
-0x01, 0x07, 0x01, 0xe5, 0x05, 0xe6, 0x06, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x09, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x04,
-0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x05, 0x01,
-0xe6, 0x02, 0x01, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x0b, 0x01, 0xe5, 0x01, 0xe5, 0x20, 0x04,
-0x03, 0x01, 0x07, 0x02, 0x06, 0x02, 0x05, 0xe5,
-0x01, 0x06, 0x02, 0x05, 0xe5, 0x07, 0xe5, 0x01,
-0x06, 0x0f, 0x01, 0x10, 0x09, 0x05, 0xe5, 0x01,
-0x01, 0xe5, 0x01, 0x03, 0xe5, 0x03, 0xe5, 0x07,
-0x03, 0x07, 0x01, 0x05, 0x05, 0x0d, 0x15, 0x04,
-0xe7, 0x0a, 0x09, 0x04, 0x04, 0x0b, 0x07, 0x01,
-0x04, 0x01, 0xe5, 0xe5, 0x04, 0xe5, 0xe5, 0xe6,
-0x03, 0xe6, 0x04, 0x01, 0xe5, 0xe5, 0x06, 0xe5,
-0x09, 0x07, 0x0f, 0x0f, 0x09, 0x01, 0x11, 0xe5,
-0x04, 0x06, 0xe5, 0xe5, 0x01, 0x0e, 0xe5, 0x0c,
-0x1a, 0xe5, 0x02, 0x0c, 0x04, 0x1f, 0x0c, 0x07,
-0x01, 0x07, 0x07, 0x06, 0x02, 0x01, 0x04, 0x03,
-0x02, 0x06, 0x02, 0x05, 0x03, 0x01, 0x09, 0x05,
-0x01, 0x0e, 0x02, 0x06, 0x02, 0x03, 0x01, 0x02,
-0x01, 0xe5, 0x03, 0x03, 0x0e, 0x14, 0x1a, 0xe6,
-0x08, 0x08, 0x22, 0x06, 0x02, 0x09, 0x09, 0x07,
-0x01, 0x01, 0x07, 0x09, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x05,
-0x01, 0xe5, 0x11, 0xe5, 0xe5, 0x07, 0x1b, 0x01,
-0x01, 0x25, 0xe5, 0x02, 0xe5, 0x01, 0x11, 0x18,
-0x0c, 0x0a, 0x09, 0x03, 0xe5, 0x03, 0x09, 0x02,
-0xe6, 0x02, 0x0d, 0x09, 0x03, 0xe5, 0x0a, 0x01,
-0x0e, 0xe5, 0x07, 0x09, 0x0a, 0x26, 0x09, 0x0f,
-0xe6, 0x01, 0x01, 0x08, 0x11, 0x08, 0x03, 0x05,
-0x03, 0xe6, 0x02, 0x03, 0x04, 0xe6, 0x06, 0xe5,
-0x02, 0x04, 0xe5, 0x02, 0x03, 0x01, 0x01, 0x0a,
-0x06, 0x0d, 0x03, 0x03, 0x03, 0x09, 0x09, 0xe5,
-0x07, 0x04, 0xe6, 0x01, 0x03, 0x01, 0xe5, 0xe5,
-0x0f, 0x06, 0x24, 0x09, 0xe5, 0x02, 0x02, 0x0e,
-0x0f, 0x09, 0x02, 0x06, 0x06, 0x02, 0x01, 0x05,
-0x01, 0x09, 0x02, 0x06, 0x04, 0x02, 0x0b, 0x15,
-0x0d, 0x0f, 0x09, 0x09, 0x05, 0x03, 0x04, 0x04,
-0x2e, 0x08, 0xe6, 0x01, 0x03, 0x27, 0x02, 0x01,
-0x02, 0xe5, 0x0d, 0xe5, 0x05, 0x07, 0x03, 0x02,
-0x13, 0x16, 0x1a, 0x04, 0x03, 0xe5, 0x03, 0x15,
-0x04, 0x1b, 0x1b, 0x03, 0xe5, 0x01, 0x13, 0x0e,
-0x02, 0x05, 0xe5, 0x01, 0x05, 0xe6, 0x05, 0x01,
-0x11, 0xe6, 0x06, 0x04, 0x01, 0x02, 0x09, 0xe5,
-0x0f, 0x02, 0xe5, 0x02, 0x0b, 0x05, 0x07, 0x03,
-0x03, 0x01, 0xe5, 0x04, 0x03, 0x06, 0x0c, 0xe5,
-0xe5, 0x02, 0x0c, 0xe5, 0x04, 0x01, 0x0b, 0x04,
-0x09, 0x01, 0xe5, 0xe5, 0x02, 0x1f, 0x07, 0x02,
-0x04, 0x04, 0x02, 0x04, 0x12, 0xe5, 0x0e, 0x0c,
-0x05, 0xe5, 0xe5, 0x04, 0xe5, 0x02, 0xe5, 0x08,
-0x06, 0x05, 0x03, 0x0d, 0x09, 0x0f, 0x03, 0xe5,
-0x0f, 0x03, 0x10, 0x02, 0x0a, 0x03, 0xe5, 0x01,
-0x0b, 0x06, 0x10, 0x02, 0x0b, 0x04, 0x0d, 0x06,
-0x06, 0x01, 0x02, 0x01, 0x01, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x05, 0x15, 0x0b, 0xe5, 0x01, 0x08,
-0x01, 0x02, 0x06, 0x03, 0x03, 0x04, 0x0a, 0x01,
-0x01, 0x04, 0x06, 0x0b, 0x07, 0x0c, 0x0e, 0xe9,
-0xe5, 0x1f, 0x13, 0x22, 0x04, 0x08, 0xe5, 0xe5,
-0x06, 0x03, 0x09, 0x02, 0x04, 0x03, 0x0c, 0x04,
-0x01, 0x04, 0xe5, 0x02, 0x08, 0xe5, 0x04, 0x02,
-0x10, 0xe5, 0x0d, 0x16, 0xe5, 0xe5, 0x0b, 0x03,
-0x1b, 0x08, 0x13, 0x21, 0x05, 0x07, 0x0b, 0x15,
-0x1c, 0x0c, 0x07, 0x13, 0x0c, 0x12, 0xe5, 0x03,
-0x03, 0x03, 0x09, 0xe8, 0x20, 0x01, 0x01, 0xe5,
-0x04, 0xe5, 0x08, 0x01, 0xe5, 0x04, 0xe5, 0x01,
-0x01, 0x03, 0xe5, 0x08, 0x09, 0xe5, 0x06, 0xe5,
-0x08, 0x01, 0xe5, 0x01, 0x02, 0x03, 0xe5, 0x06,
-0x05, 0x02, 0xe5, 0x01, 0x01, 0x04, 0x0c, 0xe5,
-0x03, 0xe5, 0x08, 0xe5, 0x06, 0x0a, 0x02, 0xe5,
-0x02, 0xe5, 0xe5, 0x06, 0xe5, 0x11, 0xe6, 0x08,
-0x04, 0xe5, 0x01, 0x01, 0x1d, 0x02, 0xe5, 0x0e,
-0x02, 0xe5, 0xe5, 0xe7, 0x04, 0xe5, 0x0d, 0x07,
-0x02, 0x05, 0xe5, 0x01, 0x06, 0x02, 0x02, 0x01,
-0xe5, 0x05, 0xe5, 0x03, 0x05, 0x01, 0xe5, 0x02,
-0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x05, 0xe5, 0x04,
-0xe5, 0xe6, 0x03, 0xe5, 0x02, 0x02, 0x10, 0x02,
-0xe5, 0xe6, 0x0d, 0x10, 0xe5, 0x01, 0x07, 0x01,
-0x02, 0x02, 0xe5, 0x03, 0x04, 0xe5, 0x01, 0x01,
-0x13, 0x03, 0xe5, 0x01, 0x01, 0x01, 0x02, 0xe5,
-0x02, 0x09, 0x01, 0x01, 0xe5, 0x01, 0x01, 0x01,
-0x01, 0xe5, 0x01, 0x02, 0x03, 0xe5, 0x02, 0x02,
-0x04, 0x01, 0x04, 0x01, 0x02, 0x02, 0x04, 0x01,
-0x04, 0x01, 0x04, 0x01, 0xe5, 0x03, 0x01, 0x09,
-0x04, 0xe5, 0x02, 0x09, 0x01, 0x01, 0xe5, 0x03,
-0x04, 0x01, 0xe5, 0xe5, 0x03, 0xe5, 0x02, 0x03,
-0xe5, 0x01, 0x01, 0x1d, 0x03, 0xe5, 0x03, 0x05,
-0xe7, 0x01, 0x06, 0xe5, 0x01, 0x01, 0x0d, 0xe5,
-0x07, 0xe5, 0x01, 0x01, 0x04, 0xe5, 0x0a, 0x05,
-0xe5, 0x01, 0x01, 0x07, 0xe5, 0x01, 0x02, 0x0c,
-0x01, 0x11, 0x01, 0x04, 0xe5, 0x0c, 0x01, 0x07,
-0x05, 0xe5, 0x01, 0x09, 0x13, 0x01, 0x04, 0x08,
-0xe5, 0x01, 0x01, 0x1b, 0x05, 0xe5, 0x05, 0x02,
-0x02, 0xe5, 0x25, 0x01, 0x01, 0xe5, 0xe5, 0x0b,
-0x01, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5,
-0x08, 0xe5, 0xe5, 0x01, 0x06, 0xe5, 0x01, 0x02,
-0x04, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x0f, 0x01,
-0x01, 0xe5, 0x0a, 0x02, 0xe5, 0x01, 0x05, 0x04,
-0x01, 0x04, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0xe5,
-0x04, 0x06, 0x01, 0x01, 0x20, 0x04, 0x01, 0x06,
-0x01, 0x01, 0xe5, 0x01, 0x0e, 0x13, 0x04, 0xe5,
-0xe5, 0xe5, 0x08, 0x04, 0xe5, 0xe5, 0xe5, 0x01,
-0x01, 0xe5, 0xe5, 0xe5, 0x06, 0x0b, 0x05, 0x03,
-0x02, 0x01, 0x04, 0x02, 0x01, 0xe5, 0x02, 0x0b,
-0x04, 0xe5, 0x02, 0x05, 0x03, 0x0a, 0x01, 0x01,
-0xe5, 0xe5, 0xe5, 0x01, 0x01, 0x04, 0x05, 0x01,
-0x01, 0x09, 0x04, 0x04, 0x19, 0x03, 0x09, 0x03,
-0xe5, 0xe6, 0x0b, 0x01, 0x13, 0x02, 0x01, 0xe5,
-0xe5, 0xe5, 0x01, 0x06, 0x02, 0x02, 0x01, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x09, 0x07, 0x01, 0x02,
-0x06, 0x04, 0x02, 0x01, 0x02, 0xe6, 0x05, 0x02,
-0x02, 0x01, 0x01, 0x09, 0x01, 0x01, 0xe5, 0x01,
-0x01, 0x02, 0x04, 0x01, 0x09, 0x07, 0x01, 0x04,
-0x04, 0x02, 0x02, 0x01, 0x01, 0x04, 0x01, 0x16,
-0x0d, 0x01, 0x01, 0xe5, 0x0c, 0x01, 0x13, 0x01,
-0xe5, 0xe8, 0xe5, 0x08, 0x01, 0xe5, 0x03, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0xe5, 0xe6, 0xe5, 0x03, 0x01, 0x02, 0x01,
-0xe5, 0xe6, 0xe5, 0xe5, 0x0a, 0x01, 0xe5, 0xe5,
-0xe6, 0xe5, 0x06, 0x04, 0x01, 0x01, 0xe5, 0xe5,
-0x01, 0x01, 0x02, 0x01, 0x09, 0x01, 0xe5, 0x03,
-0x01, 0x03, 0xe6, 0x02, 0x01, 0xe7, 0x01, 0x01,
-0x04, 0x16, 0x0d, 0x04, 0x01, 0x24, 0x13, 0x02,
-0x24, 0x13, 0x02, 0x01, 0xe5, 0x0e, 0x02, 0x02,
-0x0d, 0x0c, 0xe6, 0x06, 0x02, 0x03, 0x02, 0x09,
-0x02, 0x03, 0x02, 0xe5, 0x09, 0x23, 0x01, 0x01,
-0xe7, 0x23, 0xe5, 0x01, 0x0f, 0xe5, 0x01, 0x01,
-0x17, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x11, 0xe5,
-0x01, 0x11, 0xe5, 0x01, 0x0f, 0xe5, 0x15, 0x05,
-0xe5, 0x03, 0x07, 0x05, 0xe5, 0x33, 0xe6, 0xe6,
-0x08, 0x01, 0x02, 0x09, 0x06, 0x02, 0xe5, 0x03,
-0x03, 0x06, 0x02, 0xe5, 0x03, 0x03, 0x06, 0x02,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0x09, 0xe5, 0x03,
-0x03, 0x06, 0x04, 0xe5, 0x02, 0xe6, 0x01, 0x09,
-0xe6, 0x06, 0x09, 0x05, 0xe5, 0x01, 0xe5, 0x07,
-0x05, 0x03, 0xe5, 0x07, 0x09, 0x09, 0x09, 0x0d,
-0xe5, 0xe5, 0xe5, 0x01, 0x09, 0x12, 0xe5, 0x08,
-0x08, 0xe5, 0x08, 0x06, 0x3d, 0xe5, 0x0a, 0x13,
-0x12, 0xe5, 0x49, 0x02, 0xe5, 0xe6, 0x09, 0x14,
-0x05, 0x02, 0x0a, 0x05, 0x02, 0x24, 0x13, 0x0d,
-0x02, 0x04, 0x03, 0x13, 0x13, 0x05, 0x13, 0x34,
-0xe8, 0xe5, 0x0c, 0x14, 0xe6, 0x03, 0x01, 0x0a,
-0xe6, 0x03, 0x01, 0x07, 0x01, 0x09, 0xe7, 0x06,
-0xe6, 0x03, 0x01, 0x0a, 0xe6, 0x02, 0xe5, 0xe5,
-0x0b, 0xe6, 0x03, 0x01, 0x07, 0x01, 0xe7, 0x05,
-0x02, 0x03, 0xe5, 0xe5, 0x09, 0xe6, 0x03, 0x01,
-0x0a, 0xe6, 0x23, 0x0e, 0xe8, 0x0c, 0x02, 0x13,
-0xe5, 0x04, 0x01, 0xe5, 0x04, 0x03, 0xe5, 0x01,
-0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe6,
-0xe6, 0x04, 0xe5, 0x04, 0x01, 0xe5, 0x02, 0x05,
-0xe5, 0x04, 0x01, 0xe5, 0x0a, 0xe5, 0x04, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0xe6, 0x01, 0x04, 0x01,
-0x05, 0x01, 0xe5, 0x04, 0x03, 0xe5, 0x01, 0x02,
-0x01, 0xe5, 0x02, 0x01, 0x03, 0xe5, 0x24, 0xe5,
-0x0c, 0x02, 0xe5, 0x0e, 0x0e, 0x06, 0x05, 0x01,
-0x04, 0x05, 0x06, 0x01, 0x07, 0x01, 0x0b, 0x08,
-0x06, 0x01, 0x0b, 0x01, 0xe5, 0x01, 0x01, 0x04,
-0x03, 0x03, 0x06, 0x01, 0x07, 0x01, 0x04, 0x04,
-0x07, 0x01, 0x04, 0x0c, 0x01, 0x0a, 0x16, 0x0f,
-0x0e, 0x02, 0xe5, 0x0c, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0xe5, 0x02, 0xe7, 0x05, 0x01, 0xe6,
-0xe5, 0x02, 0xe8, 0xe5, 0x02, 0xe7, 0x05, 0x01,
-0xe5, 0x07, 0xe6, 0xe5, 0x02, 0xe7, 0x05, 0x01,
-0xe6, 0xe5, 0x03, 0xe6, 0x09, 0xe6, 0xe5, 0x02,
-0xe8, 0xe6, 0x01, 0xe8, 0x04, 0xe8, 0xe5, 0x02,
-0xe7, 0x02, 0x04, 0xe6, 0xe5, 0x02, 0x01, 0xe5,
-0x06, 0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x06, 0x01, 0x01, 0x0f, 0x13,
-0xe5, 0x07, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0xe6,
-0x03, 0x02, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0xe5,
-0x01, 0xe5, 0xe5, 0x01, 0x06, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0xe5, 0x04, 0x02, 0x04,
-0x01, 0x04, 0xe6, 0x03, 0x02, 0x04, 0x01, 0x03,
-0xe5, 0x01, 0x01, 0x02, 0x06, 0xe5, 0xe6, 0x02,
-0x01, 0x02, 0xe5, 0x04, 0xe5, 0xe6, 0x01, 0x05,
-0xe6, 0x03, 0x20, 0xe5, 0x0d, 0x01, 0xe5, 0x0c,
-0x13, 0x01, 0xe5, 0xe5, 0x03, 0x02, 0x04, 0xe6,
-0xe5, 0x01, 0x02, 0xe6, 0x01, 0x04, 0xe6, 0x06,
-0xe5, 0x01, 0x02, 0x02, 0xe6, 0xe5, 0x01, 0x03,
-0x02, 0x03, 0x01, 0xe6, 0xe6, 0xe5, 0x01, 0xe6,
-0x07, 0x02, 0x01, 0x02, 0x02, 0xe6, 0x06, 0xe5,
-0x04, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe6, 0xe6,
-0x03, 0xe6, 0xe6, 0xe5, 0x01, 0xe6, 0xe5, 0x04,
-0x01, 0x01, 0x02, 0x02, 0xe5, 0x1f, 0xe5, 0x0c,
-0xe6, 0xe5, 0x0e, 0x1d, 0x05, 0x07, 0x01, 0x03,
-0x05, 0x03, 0xe5, 0x03, 0x07, 0x01, 0x0d, 0x04,
-0xe5, 0x06, 0x01, 0x03, 0x08, 0x08, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x03, 0x03, 0xe6, 0x06, 0x01,
-0x09, 0x04, 0x04, 0x08, 0xe5, 0x20, 0x0e, 0xe5,
-0x01, 0x0d, 0x13, 0x09, 0x02, 0x03, 0x02, 0x05,
-0xe5, 0x01, 0x02, 0x03, 0x02, 0x02, 0x03, 0x08,
-0xe5, 0x01, 0x06, 0x04, 0xe5, 0x01, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x02, 0x08, 0x05, 0xe5, 0x01,
-0x02, 0x0c, 0xe5, 0x01, 0x05, 0xe5, 0x04, 0x02,
-0x03, 0x05, 0xe5, 0x04, 0x06, 0x05, 0xe5, 0x04,
-0x1c, 0xe5, 0x0c, 0xe6, 0xe5, 0x1e, 0x02, 0x01,
-0x11, 0x01, 0x0a, 0x11, 0xe5, 0x06, 0x01, 0x11,
-0x01, 0x06, 0x02, 0x08, 0xe5, 0xe5, 0xe5, 0x03,
-0x0e, 0x09, 0x0e, 0x02, 0x10, 0x03, 0x13, 0xe5,
-0x1f, 0xe5, 0xe5, 0xe6, 0x0d, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0xe6, 0x04, 0xe8, 0x04, 0xe8,
-0x03, 0xe7, 0x06, 0xe7, 0xe5, 0x03, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x04, 0xe6, 0xe5, 0x04, 0x01,
-0x01, 0x05, 0x01, 0xe5, 0xe5, 0x01, 0x03, 0x01,
-0x02, 0x01, 0x01, 0xe5, 0xe5, 0x06, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0xe6, 0x01, 0x02, 0x01,
-0x07, 0x01, 0x01, 0x01, 0x03, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x0b, 0x01, 0xe5, 0x23, 0x01, 0x11, 0x12,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0x09,
-0xe5, 0x05, 0xe5, 0x08, 0x0c, 0xe5, 0x01, 0x0b,
-0x09, 0x07, 0x03, 0x01, 0xe5, 0x04, 0x02, 0xe5,
-0x07, 0xe5, 0x01, 0x07, 0x14, 0x08, 0x0c, 0x03,
-0xe5, 0x07, 0x02, 0x09, 0x09, 0xe5, 0x11, 0xe5,
-0x07, 0x09, 0xe5, 0xe5, 0x01, 0x05, 0x08, 0x01,
-0x03, 0x01, 0x05, 0x05, 0x01, 0xe5, 0x0b, 0x01,
-0x0b, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x0a,
-0x09, 0x02, 0x07, 0x01, 0xe6, 0x03, 0x02, 0x0d,
-0x02, 0x09, 0x09, 0x04, 0x04, 0x04, 0x01, 0x01,
-0xe7, 0xe6, 0x2b, 0x14, 0x0d, 0x02, 0x0c, 0x02,
-0x02, 0x06, 0x08, 0x01, 0x06, 0x02, 0x11, 0x07,
-0x03, 0x09, 0x0b, 0xe5, 0x03, 0x07, 0xe5, 0x02,
-0x01, 0x3a, 0x01, 0x09, 0x12, 0x04, 0xe6, 0x01,
-0x04, 0x01, 0xe5, 0x02, 0xe5, 0xe7, 0x01, 0x01,
-0x02, 0x01, 0xe5, 0x05, 0x01, 0x02, 0x01, 0x07,
-0x01, 0x02, 0xe6, 0x03, 0xe5, 0xe5, 0xe6, 0x05,
-0xe6, 0x06, 0x01, 0x04, 0x02, 0x01, 0xe7, 0x04,
-0xe5, 0xe5, 0x09, 0x05, 0x0a, 0x01, 0x01, 0x08,
-0x03, 0x01, 0x0a, 0x01, 0x06, 0x21, 0xe5, 0xe5,
-0x08, 0x01, 0xe7, 0x0a, 0x05, 0x0f, 0x05, 0x01,
-0x01, 0x02, 0x05, 0xe5, 0x06, 0x04, 0x05, 0x02,
-0x05, 0x06, 0x03, 0xe5, 0x04, 0x02, 0xe5, 0x01,
-0x06, 0x07, 0x01, 0x02, 0x06, 0x02, 0x08, 0x02,
-0x0a, 0x0c, 0x01, 0x02, 0x05, 0x12, 0x04, 0x03,
-0xe5, 0x07, 0x0b, 0x09, 0x06, 0x0b, 0xe5, 0xe6,
-0x08, 0x0f, 0x01, 0x02, 0x04, 0x0d, 0x04, 0xe5,
-0x02, 0x03, 0xe6, 0x02, 0xe5, 0x01, 0xe6, 0x02,
-0x09, 0x04, 0xe5, 0x0c, 0x05, 0xe5, 0x07, 0x03,
-0x03, 0x03, 0xe5, 0x07, 0xe5, 0x0b, 0x06, 0x01,
-0x04, 0xe6, 0x01, 0x07, 0x0c, 0x03, 0xe6, 0x08,
-0x0d, 0x04, 0xe5, 0x0b, 0x08, 0x01, 0xe5, 0x01,
-0xe5, 0xe5, 0x06, 0xe5, 0x06, 0x05, 0x08, 0x04,
-0x07, 0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe6, 0x02, 0x01, 0x09, 0x01, 0x0a, 0x13,
-0x07, 0x0d, 0x09, 0x0c, 0xe5, 0x09, 0x06, 0x09,
-0x04, 0x01, 0x07, 0x0c, 0x04, 0x01, 0x09, 0x10,
-0x01, 0xe6, 0x07, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x0c, 0x06, 0x0b, 0x07, 0x05, 0x09, 0x06,
-0xe5, 0x02, 0x01, 0x07, 0x01, 0x0b, 0x1d, 0x06,
-0xe5, 0xe5, 0x0a, 0x05, 0xe6, 0x06, 0x02, 0x01,
-0x09, 0x06, 0x05, 0x03, 0xe6, 0xe5, 0x08, 0x07,
-0x01, 0x09, 0x03, 0xe6, 0xe5, 0x0f, 0x07, 0x06,
-0x02, 0x05, 0x04, 0xe5, 0x01, 0xe5, 0x02, 0xe6,
-0x01, 0x02, 0x0b, 0x04, 0x01, 0x02, 0x09, 0xe5,
-0x04, 0x04, 0x06, 0x02, 0xe5, 0xe5, 0x01, 0xe5,
-0x01, 0xe6, 0x0d, 0x16, 0x05, 0x04, 0xe5, 0x07,
-0xe5, 0x04, 0x0c, 0xe5, 0x0e, 0xe8, 0x02, 0x10,
-0x0f, 0x02, 0x01, 0xe5, 0x07, 0xe5, 0x01, 0x02,
-0xe5, 0x13, 0x02, 0x02, 0x06, 0x02, 0x02, 0x1e,
-0x02, 0x07, 0xe5, 0xe5, 0x13, 0x01, 0x10, 0x0f,
-0x09, 0x07, 0x08, 0x11, 0x02, 0x09, 0x03, 0xe5,
-0xe6, 0x16, 0x01, 0x04, 0x04, 0xe5, 0x02, 0x09,
-0x04, 0x06, 0x06, 0x01, 0x0f, 0x04, 0x02, 0x0e,
-0x15, 0x0e, 0x04, 0x01, 0x09, 0x06, 0x02, 0xe5,
-0xe5, 0x03, 0x04, 0x04, 0x09, 0x02, 0x01, 0x03,
-0xe5, 0x02, 0xe5, 0x03, 0x03, 0x07, 0x02, 0x02,
-0x03, 0x02, 0xe5, 0x03, 0x08, 0x01, 0xe7, 0x02,
-0x03, 0x0e, 0x01, 0x09, 0x02, 0x07, 0x07, 0x0d,
-0x07, 0x02, 0x02, 0xe5, 0xe6, 0x03, 0x03, 0x02,
-0x03, 0x0f, 0x0b, 0x09, 0x06, 0xe5, 0x1c, 0x08,
-0x06, 0x06, 0x0f, 0x05, 0x05, 0x03, 0x02, 0x02,
-0x07, 0x05, 0x05, 0x02, 0x03, 0x16, 0x0d, 0x15,
-0x12, 0x09, 0x05, 0x01, 0x2d, 0x02, 0xe6, 0x0c,
-0x1b, 0x1d, 0xe6, 0x17, 0x01, 0x07, 0x07, 0xe7,
-0x02, 0x0c, 0x0b, 0x09, 0x04, 0x04, 0x10, 0xe5,
-0x06, 0x0b, 0x07, 0x12, 0x03, 0xe5, 0x03, 0x0d,
-0x0b, 0xe5, 0x12, 0x04, 0x0c, 0x01, 0x0e, 0x03,
-0xe5, 0x05, 0x09, 0x16, 0x0b, 0xe6, 0xe5, 0x04,
-0x01, 0xe5, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x04, 0x02, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x07, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x04, 0x02, 0xe5, 0x09, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x06,
-0x03, 0x08, 0xe5, 0x07, 0x0d, 0x09, 0x03, 0xe6,
-0x07, 0x01, 0x03, 0xe6, 0x06, 0x08, 0x01, 0x01,
-0xe5, 0x0d, 0x01, 0xe5, 0x12, 0x08, 0x09, 0x1e,
-0x16, 0xe5, 0x05, 0x08, 0xe5, 0x01, 0xe5, 0x0d,
-0x09, 0xe5, 0x0b, 0x01, 0x0a, 0x02, 0xe5, 0x01,
-0xe5, 0xe5, 0x01, 0xe5, 0x08, 0x0a, 0xe5, 0xe5,
-0xe6, 0x01, 0x01, 0x04, 0xe5, 0x06, 0x0a, 0xe5,
-0x02, 0x04, 0xe5, 0x0b, 0x02, 0x06, 0x16, 0x09,
-0x25, 0x10, 0xe5, 0x01, 0xe5, 0x0a, 0x02, 0xe5,
-0x08, 0xe5, 0x05, 0x04, 0xe5, 0x0e, 0xe5, 0x01,
-0x08, 0x03, 0x02, 0x01, 0xe7, 0x03, 0xe5, 0x04,
-0x07, 0x01, 0x02, 0x01, 0xe6, 0x03, 0x05, 0xe5,
-0xe5, 0xe5, 0xe5, 0x0b, 0xe5, 0x02, 0x01, 0xe7,
-0x01, 0x01, 0x17, 0xe5, 0x01, 0x06, 0xe5, 0xe5,
-0xe5, 0x08, 0x04, 0xe5, 0x02, 0x33, 0x01, 0x05,
-0x01, 0x04, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0xe5,
-0xe5, 0x08, 0x01, 0x07, 0x04, 0x01, 0x02, 0x07,
-0x01, 0x07, 0x01, 0x01, 0x02, 0xe5, 0x01, 0x01,
-0x08, 0x04, 0x01, 0xe6, 0x01, 0x0a, 0x01, 0x18,
-0x02, 0x01, 0x07, 0x09, 0x06, 0x02, 0x06, 0xe5,
-0xe5, 0xe5, 0x02, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x33, 0x06, 0x02, 0x01, 0x04, 0xe5, 0x04, 0x02,
-0x02, 0x01, 0x07, 0x06, 0x02, 0x10, 0x02, 0x01,
-0x03, 0xe5, 0x01, 0x01, 0x04, 0x10, 0x03, 0xe5,
-0xe5, 0x16, 0x01, 0x0c, 0x02, 0x0d, 0x02, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0xe6, 0x01, 0x02, 0x06,
-0x02, 0x01, 0x01, 0xe5, 0xe5, 0x01, 0xe5, 0x01,
-0x05, 0x04, 0x09, 0x0d, 0x09, 0x06, 0x02, 0x02,
-0xe5, 0xe6, 0x11, 0x0d, 0x05, 0xe6, 0x04, 0x02,
-0x05, 0xe5, 0xe7, 0x08, 0x07, 0x05, 0xe6, 0x01,
-0x01, 0x05, 0xe8, 0x01, 0x0e, 0x05, 0x01, 0x01,
-0x09, 0x09, 0x05, 0x01, 0x02, 0x03, 0xe5, 0xe5,
-0x01, 0x06, 0x02, 0x04, 0x04, 0x01, 0x01, 0xe5,
-0xe5, 0x01, 0x01, 0x01, 0x05, 0x04, 0x09, 0x0a,
-0xe5, 0x04, 0x02, 0xe5, 0x05, 0xe7, 0x02, 0x02,
-0x01, 0x04, 0x09, 0x01, 0x02, 0x04, 0x05, 0x03,
-0x03, 0xe5, 0x01, 0x0b, 0x02, 0x01, 0xe5, 0x02,
-0x05, 0x01, 0x01, 0x02, 0x01, 0x04, 0x09, 0x02,
-0xe9, 0x0b, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x02,
-0x06, 0x07, 0x01, 0x04, 0x01, 0x02, 0x05, 0x01,
-0x06, 0x02, 0x01, 0x04, 0x04, 0x09, 0x02, 0x06,
-0x02, 0x04, 0x09, 0x0d, 0x09, 0x09, 0x01, 0xe5,
-0xe5, 0x01, 0x01, 0x08, 0x08, 0x01, 0x09, 0x05,
-0x01, 0x01, 0x09, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x08, 0x0e, 0x04, 0x0d, 0x01, 0x04, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0x02, 0x01, 0xe5, 0x03, 0x01,
-0x02, 0x01, 0x01, 0xe5, 0xe5, 0x01, 0x04, 0x01,
-0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x04,
-0x04, 0x04, 0x04, 0x09, 0x09, 0x0a, 0xe5, 0x08,
-0x09, 0x04, 0x01, 0xe5, 0xe5, 0xe5, 0x10, 0x01,
-0x04, 0x01, 0xe5, 0x08, 0x01, 0x02, 0x01, 0x04,
-0x01, 0xe5, 0xe8, 0xe5, 0x06, 0x01, 0x0b, 0xe5,
-0xe5, 0xe5, 0x06, 0xe8, 0x23, 0x02, 0x1d, 0xe5,
-0x07, 0x09, 0x02, 0x41, 0x04, 0x0d, 0x03, 0xe5,
-0x07, 0x15, 0x04, 0x02, 0xe5, 0x07, 0x09, 0x02,
-0x02, 0xe5, 0x01, 0xe5, 0x0a, 0x01, 0x24, 0xe5,
-0x03, 0x04, 0x02, 0x1d, 0x01, 0x07, 0x1a, 0x09,
-0x0b, 0x09, 0x08, 0xe5, 0x15, 0xe5, 0x07, 0x01,
-0x0e, 0x08, 0xe5, 0x01, 0x09, 0xe6, 0x06, 0x05,
-0xe5, 0x01, 0x09, 0xe6, 0xe7, 0x07, 0x01, 0x02,
-0x09, 0x02, 0x03, 0x02, 0xe5, 0x04, 0x02, 0x05,
-0x03, 0x06, 0x02, 0x06, 0x02, 0x03, 0x05, 0x04,
-0xe6, 0x01, 0x09, 0x09, 0x09, 0x08, 0x02, 0x09,
-0x06, 0x02, 0xe6, 0x06, 0x06, 0x02, 0x04, 0x01,
-0x02, 0x05, 0x03, 0x04, 0x01, 0x02, 0x09, 0xe5,
-0xe6, 0x01, 0x02, 0x04, 0x01, 0x02, 0x03, 0x02,
-0x02, 0xe5, 0x03, 0xe5, 0x05, 0xe5, 0xe5, 0xe5,
-0x01, 0x09, 0x12, 0xe5, 0x07, 0x0a, 0x06, 0x02,
-0x06, 0x02, 0x13, 0x09, 0x29, 0x06, 0x02, 0x10,
-0x0c, 0x13, 0x09, 0x06, 0x0c, 0x06, 0x02, 0x06,
-0x02, 0x04, 0x02, 0xe5, 0x01, 0x0a, 0x14, 0x05,
-0x09, 0x01, 0x0a, 0x08, 0x15, 0x08, 0x21, 0x07,
-0x0a, 0x17, 0x05, 0x13, 0x09, 0x05, 0x0d, 0x07,
-0x05, 0x01, 0x02, 0x09, 0xe5, 0x01, 0x01, 0x0a,
-0x02, 0x09, 0x06, 0x03, 0x01, 0x06, 0x02, 0x01,
-0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x02,
-0x06, 0x09, 0x09, 0x0b, 0x09, 0x09, 0xe7, 0x05,
-0x11, 0x01, 0x09, 0x04, 0x04, 0x02, 0x01, 0x05,
-0xe6, 0x03, 0x01, 0x07, 0x01, 0x0a, 0xe6, 0x0a,
-0xe6, 0xe5, 0x01, 0x07, 0x02, 0x02, 0x08, 0xe5,
-0x08, 0xe5, 0x01, 0x02, 0x03, 0x07, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x03, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x03, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x07, 0x01, 0x01, 0x07, 0x01, 0x03,
-0x02, 0xe5, 0x06, 0x01, 0x09, 0x05, 0x01, 0xe5,
-0x04, 0xe5, 0x01, 0x06, 0x01, 0x01, 0x01, 0x06,
-0xe5, 0x01, 0x02, 0x01, 0xe5, 0x04, 0xe5, 0xe6,
-0x09, 0x05, 0xe5, 0x02, 0x01, 0xe8, 0x0e, 0x09,
-0x04, 0x0e, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x09, 0x09, 0x03, 0x05,
-0x04, 0x03, 0x02, 0x03, 0x05, 0x03, 0xe5, 0x03,
-0xe5, 0x07, 0x11, 0x01, 0x06, 0x02, 0x09, 0x03,
-0x09, 0x05, 0x07, 0x01, 0x03, 0x14, 0x02, 0xe5,
-0x0c, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe6,
-0x04, 0xe7, 0x01, 0x03, 0xe8, 0x04, 0xe8, 0x04,
-0xe7, 0x01, 0x03, 0xe8, 0xe5, 0x02, 0xe8, 0x06,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x04, 0xe6,
-0x03, 0x04, 0xe6, 0x07, 0xe6, 0x04, 0xe7, 0x01,
-0x03, 0xe7, 0x05, 0xe8, 0xe5, 0x02, 0xe8, 0x04,
-0x01, 0xe6, 0xe5, 0x02, 0xe7, 0x02, 0x04, 0xe6,
-0x06, 0xe6, 0xe5, 0x04, 0xe5, 0x02, 0x04, 0xe7,
-0x02, 0x02, 0x01, 0xe5, 0xe5, 0x0c, 0xe6, 0x06,
-0x09, 0xe5, 0x05, 0x01, 0x09, 0x11, 0x01, 0x07,
-0x3f, 0x09, 0xe6, 0xe6, 0x07, 0x0d, 0x01, 0x09,
-0xe5, 0x11, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x08, 0x0d, 0xe8, 0x0c, 0x0b, 0x07, 0x01,
-0xe5, 0xe5, 0x03, 0x01, 0x02, 0xe5, 0x01, 0xe5,
-0x03, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x06, 0x04, 0x04, 0x04, 0xe5, 0x03, 0x03,
-0x04, 0x04, 0x04, 0x04, 0xe5, 0xe5, 0x02, 0x02,
-0xe5, 0x01, 0x02, 0x05, 0x02, 0xe5, 0x01, 0xe5,
-0xe6, 0xe5, 0x03, 0x01, 0xe5, 0x07, 0x0a, 0xe5,
-0x0d, 0x01, 0x0f, 0x09, 0x18, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x08, 0x07, 0x01, 0x08, 0x03, 0x07,
-0xe5, 0x02, 0x05, 0x03, 0x05, 0x08, 0xe5, 0x06,
-0xe6, 0xe5, 0xe5, 0x03, 0xe5, 0x02, 0x05, 0x08,
-0xe5, 0x0c, 0x07, 0x01, 0xe5, 0x16, 0x02, 0xe5,
-0x0c, 0x02, 0x08, 0x07, 0x0f, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x01, 0x03, 0xe7, 0x05, 0xe7,
-0x05, 0xe7, 0x06, 0x01, 0x08, 0xe7, 0x05, 0xe8,
-0x05, 0xe6, 0x07, 0xe5, 0x05, 0xe7, 0x01, 0xe5,
-0x01, 0x01, 0xe6, 0x01, 0x02, 0x01, 0x03, 0x03,
-0x01, 0xe6, 0x08, 0x02, 0x06, 0x01, 0xe5, 0x11,
-0x07, 0xe5, 0x1a, 0x08, 0x10, 0xe5, 0xe5, 0x05,
-0x02, 0x06, 0xe5, 0xe5, 0x17, 0x05, 0xe5, 0x03,
-0x04, 0x04, 0x03, 0xe5, 0x21, 0x0b, 0x02, 0xe6,
-0x08, 0x09, 0x08, 0xe5, 0x03, 0x04, 0x04, 0x09,
-0x02, 0x06, 0x02, 0x01, 0x06, 0x05, 0xe5, 0xe5,
-0xe5, 0x0e, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0xe6, 0x03, 0xe5, 0xe7, 0x04, 0x01, 0x02, 0x01,
-0x01, 0xe5, 0xe7, 0x04, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x09, 0x01, 0x01, 0x05, 0xe6, 0x01,
-0x04, 0xe8, 0x03, 0xe5, 0xe6, 0x03, 0x01, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01,
-0xe6, 0x01, 0x02, 0x01, 0xe5, 0x03, 0x01, 0x01,
-0x06, 0x03, 0x03, 0x02, 0xe5, 0x03, 0x18, 0x01,
-0xe5, 0x0d, 0x02, 0x04, 0xe6, 0xe5, 0x09, 0x0e,
-0x18, 0x09, 0x02, 0x06, 0x06, 0x08, 0x09, 0x08,
-0x07, 0xe5, 0x2f, 0xe5, 0x01, 0x03, 0x01, 0xe5,
-0x01, 0x05, 0xe5, 0x08, 0xe5, 0x01, 0x01, 0x01,
-0xe5, 0x03, 0x06, 0x09, 0x09, 0xe5, 0x17, 0x09,
-0x09, 0x11, 0x02, 0x02, 0x08, 0x0a, 0x15, 0x05,
-0x07, 0x10, 0x01, 0x05, 0x04, 0xe5, 0xe5, 0x01,
-0x06, 0x01, 0x07, 0x07, 0xe5, 0xe5, 0x02, 0x07,
-0x01, 0x07, 0x02, 0x04, 0x08, 0x01, 0x01, 0xe5,
-0xe5, 0x0f, 0x0d, 0x02, 0x01, 0xe5, 0x0c, 0x04,
-0x1f, 0x09, 0xe5, 0x06, 0x0a, 0x07, 0xe5, 0x18,
-0x0d, 0x01, 0x07, 0x17, 0x18, 0x09, 0x05, 0x01,
-0x04, 0x0b, 0xe5, 0x01, 0x15, 0x0d, 0x04, 0x02,
-0xe6, 0x06, 0xe6, 0x06, 0x01, 0x02, 0x01, 0x02,
-0xe6, 0x01, 0x08, 0x01, 0xe5, 0x01, 0x01, 0x05,
-0x01, 0x03, 0x04, 0x02, 0x05, 0x0c, 0xe5, 0xe5,
-0x04, 0x08, 0x06, 0x04, 0xe5, 0x0a, 0x02, 0x02,
-0x03, 0x04, 0x13, 0xe5, 0xe5, 0x04, 0x19, 0x0d,
-0xe9, 0x07, 0x18, 0x05, 0x0b, 0x09, 0x03, 0x10,
-0x08, 0x01, 0x01, 0x04, 0x05, 0x0d, 0x09, 0x01,
-0xe5, 0xe5, 0xe5, 0x1c, 0x03, 0x07, 0x02, 0x02,
-0x10, 0x01, 0x0c, 0x05, 0x1d, 0x05, 0x02, 0xe5,
-0xe6, 0x08, 0x05, 0x08, 0xe6, 0x07, 0x07, 0xe6,
-0x06, 0x01, 0x07, 0x05, 0x03, 0x05, 0x05, 0x03,
-0x05, 0xe5, 0x06, 0xe5, 0x06, 0x01, 0x09, 0xe5,
-0x05, 0x03, 0x02, 0x05, 0xe5, 0x02, 0x05, 0x03,
-0x01, 0x0b, 0x0c, 0x0c, 0x12, 0x07, 0x04, 0x05,
-0x01, 0x01, 0x01, 0x04, 0x0a, 0xe6, 0xe6, 0x0c,
-0xe5, 0x02, 0x04, 0x09, 0x03, 0x05, 0x04, 0x04,
-0x02, 0x04, 0x0e, 0x02, 0x03, 0x07, 0x01, 0xe5,
-0x07, 0x07, 0x02, 0x03, 0x04, 0x06, 0x05, 0x08,
-0x11, 0x01, 0x12, 0xe5, 0x08, 0x05, 0x03, 0x02,
-0x05, 0xe5, 0x08, 0x03, 0x05, 0x02, 0x06, 0x06,
-0x07, 0x02, 0xe7, 0xe6, 0x06, 0x02, 0x06, 0x02,
-0x05, 0x0d, 0x10, 0x06, 0x01, 0xe5, 0x0a, 0x02,
-0xe5, 0x01, 0x03, 0x08, 0xe5, 0x0e, 0xe6, 0xe5,
-0x01, 0x01, 0x04, 0x05, 0xe5, 0x03, 0x03, 0x04,
-0x03, 0x01, 0x02, 0x03, 0x04, 0x0c, 0x09, 0x03,
-0x05, 0x09, 0x09, 0x04, 0x04, 0x09, 0x04, 0xe5,
-0x09, 0x01, 0xe6, 0x07, 0xe5, 0x02, 0xe5, 0x0d,
-0x03, 0xe5, 0x05, 0x0c, 0x01, 0x02, 0x15, 0x02,
-0x06, 0x07, 0x0a, 0x01, 0x01, 0x09, 0x07, 0xe5,
-0xe5, 0x05, 0x01, 0xe7, 0x01, 0x01, 0x02, 0x03,
-0x01, 0x04, 0x01, 0x06, 0xe6, 0x04, 0xe7, 0x03,
-0x01, 0xe8, 0x04, 0xe5, 0x08, 0xe6, 0x03, 0xe5,
-0xe6, 0x07, 0xe6, 0xe5, 0x01, 0x0a, 0x0a, 0xe7,
-0x0f, 0x0a, 0xe5, 0x03, 0x01, 0x12, 0x10, 0xe5,
-0x0c, 0x1b, 0x07, 0x01, 0x08, 0x01, 0x0b, 0x07,
-0x0b, 0x05, 0x02, 0x03, 0x06, 0x0a, 0xe5, 0x01,
-0x0e, 0x07, 0x03, 0x05, 0x02, 0x13, 0x03, 0xe6,
-0xe5, 0xe5, 0xe5, 0x09, 0xe5, 0x04, 0x08, 0x04,
-0x03, 0x08, 0x01, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x04, 0x09, 0x09, 0x04, 0x0b, 0x02, 0x01, 0x0e,
-0x04, 0x09, 0x09, 0x01, 0x04, 0x08, 0x03, 0x06,
-0x01, 0xe5, 0x02, 0x03, 0x01, 0x03, 0x05, 0x03,
-0xe5, 0x02, 0xe5, 0x02, 0x05, 0x03, 0xe5, 0x03,
-0x06, 0x02, 0x0e, 0x02, 0xe6, 0x0c, 0x14, 0x0b,
-0x03, 0x03, 0x13, 0x05, 0x03, 0x06, 0x02, 0x0a,
-0x04, 0x02, 0xe5, 0x01, 0x02, 0x06, 0x08, 0x01,
-0xe6, 0x04, 0xe5, 0x03, 0xe5, 0x15, 0x03, 0x04,
-0xe5, 0x01, 0x09, 0x09, 0x08, 0xe5, 0xe5, 0x06,
-0x01, 0x05, 0xe6, 0x07, 0x0e, 0x01, 0x1e, 0x05,
-0x01, 0x11, 0xe5, 0x0e, 0x01, 0x07, 0x01, 0x01,
-0x05, 0xe5, 0x0e, 0x04, 0x01, 0x11, 0x01, 0x07,
-0xe5, 0x04, 0x02, 0x05, 0x0d, 0x01, 0x09, 0x04,
-0x09, 0x02, 0x03, 0xe5, 0x03, 0x09, 0x09, 0x09,
-0x03, 0x0c, 0xea, 0x0d, 0xe6, 0x03, 0x02, 0x0a,
-0xe5, 0x03, 0x01, 0x09, 0x02, 0x06, 0x09, 0x07,
-0x06, 0xe5, 0xe5, 0x01, 0xe5, 0x01, 0x01, 0xe5,
-0x01, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0x08,
-0x01, 0xe6, 0x04, 0x02, 0x03, 0xe5, 0xe5, 0x01,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0x04, 0x08, 0xe5, 0x07, 0xe5,
-0x01, 0xe5, 0x02, 0x01, 0x01, 0xe5, 0x04, 0xe5,
-0x01, 0xe5, 0x19, 0x01, 0xe5, 0xe6, 0x01, 0x01,
-0x0b, 0x01, 0x04, 0x05, 0xe5, 0x02, 0x08, 0x0a,
-0x08, 0x09, 0x10, 0x01, 0x07, 0xe5, 0x04, 0x08,
-0x11, 0x03, 0x0d, 0xe5, 0x03, 0x03, 0xe5, 0x05,
-0xe6, 0x01, 0x06, 0xe5, 0x03, 0x0a, 0x09, 0x02,
-0x01, 0x03, 0x0b, 0x01, 0x01, 0x07, 0x01, 0x0c,
-0x01, 0x02, 0x01, 0xe6, 0x03, 0x12, 0x05, 0xe5,
-0x03, 0x01, 0x05, 0x0b, 0x18, 0x09, 0x06, 0xe5,
-0xe5, 0x08, 0x07, 0x01, 0x09, 0x0b, 0x07, 0x01,
-0x10, 0x05, 0x06, 0x01, 0x01, 0x01, 0x03, 0xe5,
-0x01, 0x05, 0x01, 0x01, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x03, 0xe5, 0x01, 0x01, 0xe5, 0x05, 0x01,
-0x03, 0x01, 0x01, 0x01, 0x02, 0xe5, 0x03, 0x05,
-0x01, 0xe5, 0x01, 0x14, 0x06, 0xe5, 0x0a, 0x13,
-0x09, 0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x02, 0x06, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x12, 0x0d, 0x02, 0x10, 0x01, 0xe5, 0x05,
-0x02, 0x09, 0xe5, 0x04, 0x0c, 0x06, 0x02, 0x02,
-0xe5, 0x0c, 0x01, 0x07, 0x01, 0x0c, 0xe5, 0x01,
-0xe5, 0xe5, 0x0b, 0xe5, 0x01, 0x06, 0x02, 0x06,
-0x02, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0xe5, 0x02, 0x02, 0x02, 0x01, 0x04, 0x01,
-0xe5, 0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x02, 0x02,
-0xe5, 0xe5, 0x06, 0x04, 0x09, 0x01, 0xe6, 0x06,
-0x01, 0x0f, 0xe5, 0xe6, 0x03, 0x01, 0x02, 0x05,
-0xe5, 0x01, 0x04, 0x01, 0x01, 0xe5, 0x05, 0xe5,
-0x01, 0xe5, 0x01, 0x0a, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x09, 0x05, 0x01, 0x01, 0x09, 0x05, 0x09,
-0x06, 0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02,
-0xe6, 0x01, 0x01, 0x07, 0x01, 0x01, 0x02, 0x02,
-0x01, 0x06, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x04, 0xe5, 0xe5, 0xe5,
-0x04, 0x03, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x03, 0xe5, 0xe6, 0x0b, 0x01, 0x07,
-0x01, 0x04, 0x01, 0x02, 0x07, 0x01, 0x09, 0x03,
-0xe5, 0x10, 0x06, 0x05, 0x03, 0x09, 0x09, 0x02,
-0x06, 0x03, 0xe5, 0x02, 0x02, 0x04, 0x01, 0x02,
-0x09, 0x05, 0x01, 0x01, 0x07, 0x05, 0xe5, 0x02,
-0x02, 0x02, 0x03, 0x03, 0x01, 0x03, 0x05, 0x01,
-0x01, 0x02, 0xe5, 0xe5, 0xe5, 0xe5, 0x02, 0x05,
-0x02, 0x01, 0xe5, 0x02, 0x0e, 0x01, 0x02, 0x02,
-0x0a, 0x01, 0x07, 0x01, 0x04, 0x04, 0x01, 0xe7,
-0x01, 0x01, 0x09, 0x01, 0xe5, 0x03, 0x09, 0x09,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x09, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x04,
-0x01, 0xe5, 0xe5, 0x06, 0x01, 0x07, 0x03, 0xe5,
-0x08, 0x02, 0x09, 0x08, 0x07, 0x01, 0x09, 0x07,
-0x0a, 0xe5, 0x05, 0xe5, 0xe5, 0x02, 0x02, 0x1a,
-0x01, 0xe5, 0x02, 0x0c, 0x02, 0x03, 0x02, 0x02,
-0x06, 0xe5, 0x0b, 0x09, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x05, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x09, 0x06, 0x08, 0xe5, 0x01, 0xe5, 0x03,
-0x03, 0xe5, 0x03, 0x03, 0xe6, 0x02, 0xe5, 0x01,
-0xe6, 0x02, 0x05, 0x03, 0xe5, 0x07, 0x03, 0xe5,
-0x07, 0x02, 0xe6, 0x1d, 0x05, 0xe5, 0x0b, 0xe5,
-0x03, 0xe5, 0x01, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0x12, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x02, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03,
-0x03, 0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0xe5, 0x01,
-0xe5, 0x07, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0x07,
-0x0a, 0xe5, 0xe6, 0x0d, 0x09, 0x02, 0x02, 0x03,
-0xe5, 0x07, 0x06, 0x02, 0xe5, 0x01, 0x05, 0x09,
-0x03, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x03,
-0x01, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0x02, 0x01, 0x06, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x08, 0x09, 0xe5, 0x01, 0x02, 0x02,
-0xe6, 0x03, 0x02, 0x06, 0x02, 0x06, 0x02, 0xe6,
-0x03, 0x02, 0x06, 0x02, 0xe6, 0x03, 0x02, 0x05,
-0xe5, 0x05, 0xe5, 0xe5, 0xe5, 0x01, 0x27, 0x08,
-0xe5, 0x1b, 0xe6, 0x06, 0xe6, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x05, 0x05,
-0x03, 0x05, 0x03, 0x19, 0x02, 0x06, 0x09, 0x09,
-0x0b, 0x09, 0x07, 0x02, 0x06, 0x07, 0x02, 0x01,
-0x01, 0x25, 0x01, 0x0b, 0x05, 0x17, 0x09, 0x04,
-0x03, 0x05, 0x03, 0x05, 0x02, 0x06, 0x0b, 0x09,
-0x09, 0x14, 0x02, 0x04, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x03, 0x05, 0x0e, 0x02, 0xe5, 0xe5, 0x09,
-0x02, 0x07, 0x01, 0x0a, 0xe6, 0x03, 0x01, 0x0a,
-0xe6, 0x03, 0x01, 0x09, 0x0e, 0x04, 0x09, 0x09,
-0x06, 0x02, 0x06, 0x01, 0x02, 0x09, 0x06, 0x02,
-0x07, 0x01, 0x07, 0x01, 0xe7, 0x06, 0xe6, 0x1a,
-0xe6, 0x10, 0xe6, 0x14, 0xe5, 0x01, 0x0f, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0x02, 0x01, 0x03, 0xe5,
-0x04, 0x01, 0xe5, 0x08, 0xe5, 0x04, 0x01, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x04, 0xe5, 0xe6, 0x05,
-0x01, 0xe5, 0x07, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x02, 0x01,
-0xe5, 0xe7, 0x08, 0x09, 0x09, 0x02, 0x06, 0x09,
-0x02, 0x06, 0x09, 0x0c, 0xe5, 0x01, 0x0f, 0x07,
-0x01, 0x0a, 0x08, 0x04, 0x01, 0x03, 0x57, 0x1e,
-0x01, 0xe5, 0x02, 0x06, 0x01, 0x1b, 0x02, 0x0f,
-0x02, 0x15, 0x01, 0xe5, 0x0e, 0x05, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0xe5, 0x01, 0x04, 0xe6,
-0x01, 0x03, 0x01, 0xe5, 0x01, 0x03, 0xe7, 0x05,
-0xe8, 0xe5, 0x02, 0xe7, 0x05, 0xe7, 0x05, 0x01,
-0xe5, 0x06, 0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x08, 0x01, 0x0f, 0x07, 0x01,
-0xe5, 0x07, 0xe6, 0x04, 0x01, 0x09, 0xe5, 0x11,
-0x09, 0xe5, 0x08, 0x04, 0x0e, 0x09, 0x05, 0x05,
-0xe5, 0x03, 0x03, 0x05, 0x09, 0xe5, 0xe6, 0x04,
-0xe5, 0xe5, 0x03, 0x01, 0x07, 0x01, 0x03, 0xe5,
-0xe5, 0x05, 0xe5, 0x01, 0x01, 0x0d, 0x19, 0x08,
-0x01, 0xe5, 0x0e, 0x07, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x0a, 0x06, 0x02,
-0x04, 0x01, 0xe5, 0x07, 0x09, 0x09, 0x09, 0xe5,
-0x04, 0x04, 0x04, 0xe6, 0x01, 0xe5, 0x01, 0x01,
-0xe5, 0x01, 0x04, 0xe7, 0xe6, 0x01, 0x01, 0xe6,
-0xe5, 0xe5, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0x06, 0x02, 0xe5, 0x04, 0x07, 0x01, 0x09,
-0x09, 0x0e, 0xe5, 0x0e, 0x0a, 0x12, 0x0a, 0x1c,
-0x09, 0xe5, 0x01, 0x01, 0x03, 0x09, 0xe5, 0x07,
-0x08, 0x02, 0x05, 0x03, 0x05, 0x03, 0x03, 0x01,
-0x08, 0xe5, 0x02, 0x03, 0x01, 0x07, 0x01, 0x09,
-0x09, 0x31, 0x02, 0x0f, 0x0a, 0x06, 0x09, 0x09,
-0x1d, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0x01, 0x03,
-0x01, 0xe5, 0x02, 0x05, 0x02, 0x03, 0x01, 0x03,
-0x09, 0x24, 0x17, 0x09, 0xe8, 0x02, 0x13, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0x09, 0xe5, 0xe5, 0x13, 0x05,
-0x02, 0x06, 0xe5, 0xe5, 0x05, 0x0b, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe6, 0x08, 0x05,
-0x01, 0xe5, 0x05, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0x06, 0x02, 0x06,
-0x02, 0xe5, 0x04, 0x02, 0x04, 0x08, 0xe8, 0xe5,
-0x0e, 0x01, 0x03, 0x03, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x01, 0x01, 0x03, 0xe6, 0xe5, 0xe5, 0x02,
-0x01, 0x03, 0x03, 0x01, 0x02, 0xe5, 0x02, 0x01,
-0x07, 0x01, 0x07, 0xe7, 0x05, 0x01, 0x01, 0x01,
-0x03, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x06, 0x02,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0xe5, 0x03, 0x02,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x05, 0x01,
-0x01, 0xe5, 0x03, 0x01, 0x01, 0xe5, 0x03, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0xe6, 0x06, 0x02,
-0x02, 0xe5, 0x18, 0xe5, 0x0a, 0x01, 0x0f, 0x02,
-0x02, 0x1a, 0x02, 0x02, 0x07, 0xe8, 0xe5, 0x05,
-0x04, 0x0a, 0x01, 0x06, 0x22, 0x07, 0x02, 0xe5,
-0x07, 0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x0e,
-0x03, 0x02, 0x0c, 0x07, 0x02, 0xe6, 0x0a, 0x03,
-0x05, 0xe5, 0xe5, 0xe5, 0x02, 0x0f, 0x05, 0x06,
-0x07, 0x0a, 0xe5, 0x05, 0x01, 0x05, 0xe5, 0x04,
-0x01, 0xe6, 0x06, 0x06, 0x04, 0x0b, 0x05, 0x03,
-0x13, 0xe5, 0x02, 0x08, 0x05, 0x02, 0x06, 0x01,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x03, 0x02,
-0xe5, 0x01, 0x04, 0xe5, 0x01, 0x07, 0x08, 0x02,
-0xe6, 0x10, 0x03, 0xe5, 0x0e, 0x1b, 0x0d, 0x08,
-0x13, 0x07, 0x08, 0x07, 0x2b, 0x03, 0x02, 0x01,
-0x08, 0x08, 0x01, 0x04, 0x02, 0x01, 0x1f, 0x09,
-0xe5, 0x03, 0xe5, 0x01, 0x07, 0x08, 0x03, 0x01,
-0x07, 0xe6, 0x09, 0x06, 0xe7, 0x04, 0xe5, 0xe5,
-0x03, 0x0c, 0x06, 0x04, 0x06, 0xe5, 0xe5, 0x08,
-0x07, 0xe5, 0x05, 0x05, 0xe6, 0x04, 0xe7, 0x05,
-0xe5, 0xe5, 0x0e, 0xe5, 0xe6, 0x04, 0x02, 0xe5,
-0x02, 0x04, 0x09, 0x02, 0x03, 0x02, 0x09, 0x09,
-0xe5, 0x07, 0x05, 0x02, 0x04, 0xe7, 0xe5, 0x19,
-0x01, 0x05, 0x10, 0x02, 0x0a, 0x0f, 0x04, 0x06,
-0x0a, 0x01, 0x03, 0xe5, 0x01, 0x07, 0x04, 0x02,
-0x02, 0x0b, 0x10, 0x09, 0x02, 0x02, 0x0b, 0x1f,
-0xe5, 0x1a, 0x04, 0x05, 0xe8, 0x08, 0x09, 0xe5,
-0x01, 0x04, 0x09, 0x06, 0x02, 0x06, 0x07, 0x01,
-0x02, 0x06, 0x08, 0xe5, 0x02, 0x09, 0x1d, 0x03,
-0x01, 0x01, 0x19, 0x06, 0xe5, 0xe5, 0x02, 0xe5,
-0x05, 0x09, 0x05, 0x01, 0x01, 0x02, 0x01, 0x04,
-0x01, 0x07, 0x05, 0x03, 0x05, 0xe5, 0x01, 0x0f,
-0xe7, 0xe5, 0x08, 0x06, 0x13, 0x06, 0x07, 0x01,
-0x09, 0x03, 0x05, 0x02, 0x06, 0x02, 0x0e, 0x06,
-0x1a, 0x1a, 0x02, 0x09, 0x0c, 0x1a, 0x0d, 0x0b,
-0x0e, 0x05, 0xe5, 0xe6, 0x02, 0x1a, 0x06, 0x20,
-0x0e, 0x01, 0x1d, 0x02, 0x01, 0x06, 0x03, 0xe5,
-0x04, 0x0a, 0x07, 0xe6, 0x02, 0x03, 0x04, 0x06,
-0x02, 0x06, 0x0c, 0x04, 0x0b, 0x0b, 0x06, 0x08,
-0x02, 0x0b, 0xe6, 0x07, 0xe6, 0x01, 0xe6, 0x02,
-0xe5, 0x01, 0xe5, 0x12, 0x01, 0x0e, 0x02, 0x07,
-0x06, 0xe5, 0xe5, 0xe5, 0x04, 0x08, 0x01, 0x01,
-0xe6, 0xe5, 0x0a, 0x03, 0x01, 0x04, 0x01, 0xe5,
-0x09, 0x09, 0xe5, 0x07, 0x06, 0x01, 0x01, 0x1b,
-0x07, 0x01, 0x01, 0x08, 0x03, 0x04, 0x01, 0xe6,
-0x07, 0x01, 0x0f, 0xe6, 0x02, 0x0c, 0xe5, 0x07,
-0x02, 0x09, 0xe5, 0x03, 0x0e, 0x05, 0x01, 0x11,
-0x05, 0x04, 0x02, 0x03, 0x04, 0xe5, 0xe5, 0x0f,
-0x03, 0x15, 0x10, 0x02, 0x11, 0x13, 0x01, 0x04,
-0x11, 0x07, 0x0b, 0x04, 0xe7, 0x04, 0x12, 0x05,
-0x0e, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x0e,
-0x01, 0x02, 0x13, 0xe5, 0x02, 0x02, 0x01, 0x06,
-0x04, 0x04, 0x09, 0x01, 0x09, 0x05, 0xe5, 0x04,
-0x0e, 0x0b, 0x0c, 0x0a, 0xe5, 0x06, 0x02, 0x02,
-0xe5, 0x12, 0xe7, 0xe5, 0x02, 0x08, 0x15, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0xe5, 0x01,
-0x05, 0x02, 0x01, 0x05, 0x01, 0x09, 0x08, 0x08,
-0x05, 0x02, 0xe6, 0x08, 0x05, 0x17, 0x01, 0x04,
-0x02, 0x05, 0x09, 0x03, 0x03, 0x07, 0x07, 0x0f,
-0x03, 0x16, 0x02, 0xe5, 0xe5, 0x04, 0x08, 0x1f,
-0x09, 0x09, 0x09, 0xe5, 0x0e, 0x06, 0x01, 0x04,
-0x05, 0x0b, 0x0c, 0x1c, 0x02, 0x07, 0x12, 0x14,
-0x0d, 0x05, 0x1a, 0xe7, 0x07, 0x01, 0x03, 0xe5,
-0x04, 0x01, 0xe7, 0x03, 0x01, 0xe5, 0x07, 0x01,
-0xe5, 0x07, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x06,
-0x04, 0x02, 0xe5, 0x04, 0x06, 0xe5, 0x06, 0xe5,
-0x01, 0x03, 0x02, 0xe5, 0xe5, 0x03, 0x01, 0x01,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0x01, 0x09, 0x03,
-0x02, 0xe5, 0x04, 0xe5, 0x07, 0x02, 0x01, 0x04,
-0x09, 0xe5, 0x03, 0x03, 0x07, 0x01, 0x02, 0xe5,
-0xe5, 0xe6, 0x07, 0xe6, 0xe6, 0x04, 0xe5, 0x09,
-0x03, 0x01, 0x02, 0x01, 0x05, 0x01, 0xe6, 0xe5,
-0x05, 0x03, 0xe5, 0x03, 0xe5, 0x03, 0xe5, 0x02,
-0x08, 0x03, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5,
-0x01, 0x04, 0x04, 0xe7, 0x05, 0x04, 0x04, 0xe5,
-0x04, 0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0x04,
-0xe5, 0x03, 0x06, 0x01, 0xe5, 0x08, 0x03, 0xe7,
-0x05, 0x05, 0x02, 0x02, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x0a, 0x02, 0x05, 0x04, 0x08, 0xe5,
-0x03, 0xe5, 0xe5, 0x07, 0x01, 0x04, 0x01, 0x04,
-0x0a, 0x07, 0x09, 0x01, 0x04, 0xe5, 0x02, 0x01,
-0x01, 0xe5, 0x07, 0xe5, 0x08, 0x01, 0x07, 0x01,
-0xe5, 0xe5, 0x06, 0x0b, 0x07, 0x09, 0x06, 0xe5,
-0x01, 0x04, 0x05, 0x09, 0x10, 0x01, 0x05, 0x08,
-0x09, 0x05, 0x03, 0x02, 0x01, 0x02, 0x02, 0x04,
-0x01, 0x13, 0x03, 0xe5, 0x03, 0x05, 0xe5, 0xe5,
-0x01, 0x0a, 0x09, 0x09, 0x0f, 0xe5, 0x01, 0x06,
-0x02, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x09, 0x13, 0x1d, 0x05, 0xe5, 0x0b, 0x01,
-0x11, 0x06, 0xe5, 0x04, 0x04, 0x01, 0x02, 0x0c,
-0x04, 0x01, 0xe5, 0x08, 0x01, 0x06, 0x05, 0xe5,
-0x01, 0x05, 0x01, 0xe6, 0x04, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0xe5, 0xe5, 0x06, 0x04, 0x06, 0x02,
-0x04, 0x04, 0x04, 0x04, 0x0b, 0xe5, 0x01, 0xe5,
-0x03, 0x04, 0x04, 0x04, 0x01, 0x02, 0x09, 0xe5,
-0x01, 0x05, 0x09, 0x04, 0x04, 0x09, 0xe5, 0x01,
-0xe5, 0x14, 0x06, 0x06, 0xe5, 0x01, 0xe5, 0x0c,
-0x03, 0x04, 0xe5, 0x02, 0x05, 0x03, 0x01, 0x01,
-0xe5, 0x03, 0x09, 0x04, 0x04, 0x04, 0x04, 0x05,
-0x01, 0x01, 0x01, 0x02, 0xe5, 0x02, 0x05, 0x03,
-0x04, 0xe5, 0x02, 0x05, 0x03, 0x0b, 0x02, 0x01,
-0xe5, 0x02, 0x05, 0x03, 0x05, 0x01, 0x01, 0x09,
-0x02, 0x01, 0x14, 0x03, 0x09, 0x02, 0x01, 0xe5,
-0x02, 0x0f, 0x03, 0x02, 0xe6, 0x03, 0x03, 0xe7,
-0x0e, 0x02, 0x02, 0x01, 0x09, 0x01, 0x04, 0x04,
-0x07, 0x04, 0x02, 0x01, 0x03, 0xe5, 0x01, 0x01,
-0x06, 0x01, 0xe5, 0x05, 0x02, 0x0b, 0x01, 0xe5,
-0xe6, 0xe5, 0x05, 0x02, 0x04, 0xe6, 0x03, 0x06,
-0x02, 0x06, 0x02, 0x03, 0x01, 0xe5, 0x01, 0x01,
-0x07, 0x10, 0x0c, 0x06, 0x04, 0x07, 0x01, 0x03,
-0xe5, 0x0d, 0x0d, 0xe6, 0xe6, 0x0c, 0x09, 0x09,
-0x05, 0xe6, 0x02, 0x01, 0xe7, 0x01, 0x03, 0xe7,
-0x01, 0x04, 0x04, 0x03, 0xe7, 0x01, 0x05, 0xe6,
-0xe5, 0x02, 0x05, 0x04, 0x01, 0xe5, 0xe5, 0x02,
-0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0x04, 0xe5, 0x02,
-0xe5, 0x01, 0x01, 0x03, 0xe5, 0xe8, 0x03, 0x01,
-0x02, 0x01, 0x01, 0xe5, 0x03, 0x03, 0xe5, 0x07,
-0xe8, 0x04, 0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0xe7,
-0x01, 0x01, 0xe7, 0x01, 0x01, 0x04, 0x01, 0x0a,
-0x0d, 0x03, 0x01, 0xe5, 0x26, 0x02, 0x03, 0x02,
-0xe5, 0x04, 0x02, 0x06, 0x09, 0x02, 0x02, 0x0d,
-0x02, 0x06, 0x04, 0x04, 0x02, 0x01, 0xe5, 0x02,
-0x02, 0xe5, 0x06, 0x02, 0x06, 0x09, 0x04, 0x04,
-0x09, 0x02, 0x06, 0x09, 0x02, 0xe5, 0x04, 0x09,
-0x02, 0xe5, 0x11, 0x02, 0x0f, 0xe5, 0xe5, 0xe6,
-0x09, 0x1d, 0x05, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x01, 0x01, 0x03, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x01, 0x13, 0x01, 0x03, 0xe5, 0x07, 0xe5, 0x01,
-0xe5, 0x03, 0xe5, 0x09, 0xe5, 0x03, 0x03, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x03,
-0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0xe5,
-0x03, 0xe5, 0x01, 0x0f, 0x03, 0x09, 0x07, 0x02,
-0x02, 0xe5, 0x09, 0x03, 0x09, 0x09, 0x05, 0x03,
-0xe5, 0x04, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe7,
-0x05, 0xe5, 0x03, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x05, 0xe6, 0x06, 0xe5, 0xe5, 0x02, 0x02, 0xe5,
-0x04, 0x01, 0x02, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x02,
-0xe6, 0x01, 0x09, 0xe5, 0x03, 0x03, 0x04, 0xe6,
-0x05, 0xe6, 0x01, 0x02, 0x1d, 0x12, 0xe5, 0x05,
-0x02, 0x13, 0x08, 0x1d, 0xe5, 0x07, 0xe5, 0x28,
-0x12, 0xe5, 0x11, 0xe5, 0x08, 0x1d, 0x04, 0x02,
-0x02, 0xe5, 0x1d, 0x10, 0x03, 0x05, 0x01, 0x11,
-0x01, 0x25, 0x03, 0x05, 0x03, 0x02, 0x04, 0x09,
-0x13, 0x03, 0x05, 0x09, 0x03, 0x05, 0x09, 0x03,
-0x05, 0x03, 0x1b, 0x0a, 0x01, 0xe6, 0x0e, 0x07,
-0x01, 0x07, 0x01, 0x0a, 0xe6, 0x05, 0xe7, 0x03,
-0x01, 0xe7, 0x05, 0xe5, 0xe5, 0x03, 0x09, 0x01,
-0xe6, 0x04, 0x01, 0xe7, 0x02, 0xe5, 0xe8, 0x02,
-0xe5, 0xe8, 0x07, 0xe7, 0x03, 0x01, 0xe5, 0xe5,
-0x02, 0xe5, 0xe8, 0x05, 0xe7, 0xe5, 0x03, 0xe5,
-0xe5, 0x05, 0xe7, 0x02, 0xe5, 0xe6, 0xe5, 0x03,
-0x01, 0xe7, 0x06, 0xe6, 0xe5, 0xe6, 0xe5, 0x06,
-0x01, 0x01, 0x05, 0x01, 0x0e, 0x01, 0x01, 0x0c,
-0x02, 0xe5, 0x04, 0xe5, 0xe6, 0x05, 0x01, 0xe5,
-0x02, 0x01, 0x03, 0xe5, 0x03, 0xe5, 0xe7, 0x03,
-0xe5, 0x01, 0xe5, 0x01, 0x02, 0x01, 0xe6, 0x06,
-0xe5, 0x04, 0xe5, 0xe7, 0x04, 0x01, 0xe6, 0x01,
-0x02, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x06, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x06,
-0xe6, 0x03, 0xe5, 0xe7, 0x04, 0x02, 0xe5, 0x01,
-0x02, 0x01, 0xe6, 0x03, 0xe5, 0xe7, 0x07, 0xe5,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x02, 0x02,
-0x01, 0xe5, 0x0c, 0xe5, 0x01, 0xe5, 0x06, 0xe5,
-0x04, 0x07, 0x01, 0x04, 0x04, 0x0b, 0x02, 0x06,
-0x07, 0xe5, 0x0c, 0x02, 0x06, 0x02, 0x01, 0x07,
-0x01, 0xe5, 0x01, 0x03, 0x01, 0x04, 0x02, 0x01,
-0xe5, 0x02, 0x03, 0x04, 0x01, 0xe5, 0x01, 0x01,
-0x03, 0x06, 0x03, 0x04, 0xe5, 0x0b, 0xe5, 0x03,
-0x01, 0x02, 0x02, 0x01, 0x0b, 0x02, 0x05, 0x02,
-0x03, 0x01, 0x07, 0x01, 0xe5, 0x17, 0xe8, 0x0d,
-0x05, 0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x01,
-0x05, 0xe6, 0xe6, 0x03, 0xe6, 0xe5, 0x04, 0xe6,
-0xe6, 0x03, 0xe6, 0xe5, 0x03, 0xe6, 0x01, 0x05,
-0x01, 0xe6, 0xe5, 0x02, 0xe7, 0x06, 0xe6, 0x01,
-0x04, 0xe7, 0x05, 0xe7, 0x04, 0xe8, 0xe5, 0x02,
-0x01, 0xe5, 0x05, 0xe7, 0x07, 0xe6, 0xe5, 0x04,
-0xe6, 0xe5, 0x04, 0xe5, 0x05, 0x01, 0xe5, 0x06,
-0x02, 0xe5, 0x0e, 0x0a, 0x06, 0x01, 0x09, 0xe5,
-0x23, 0x02, 0xe5, 0x04, 0x01, 0xe5, 0x0f, 0x01,
-0xe6, 0x04, 0x01, 0x0c, 0x0c, 0xe5, 0x01, 0x01,
-0xe6, 0x06, 0x0a, 0xe5, 0x06, 0xe5, 0x01, 0x03,
-0x01, 0xe6, 0x04, 0x01, 0xe5, 0x07, 0xe6, 0x06,
-0x07, 0x01, 0x07, 0x01, 0x03, 0x0b, 0xe5, 0xe5,
-0xe5, 0x0c, 0x0a, 0x06, 0x01, 0x07, 0x01, 0xe5,
-0xe5, 0x08, 0x09, 0x09, 0x06, 0x07, 0x01, 0x01,
-0x0a, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x03,
-0x07, 0x03, 0x05, 0x03, 0xe5, 0xe5, 0x01, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x05, 0x03, 0xe5,
-0x03, 0x03, 0xe5, 0xe5, 0x01, 0x04, 0x01, 0x02,
-0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x04, 0x09, 0x01,
-0x07, 0x01, 0x05, 0x0c, 0x08, 0x06, 0x13, 0x2f,
-0x0b, 0xe5, 0x11, 0x09, 0x04, 0x03, 0x03, 0x02,
-0x01, 0x09, 0x09, 0x03, 0x05, 0x08, 0xe5, 0x02,
-0xe5, 0x02, 0xe5, 0x02, 0x03, 0x01, 0x04, 0x03,
-0xe5, 0x0c, 0x09, 0x19, 0x01, 0xe5, 0x0e, 0xe5,
-0x08, 0x06, 0x02, 0x06, 0x29, 0xe5, 0x05, 0x01,
-0xe5, 0x0f, 0x01, 0x07, 0x01, 0x06, 0x08, 0xe7,
-0x05, 0x01, 0xe5, 0x05, 0xe7, 0x01, 0x03, 0xe7,
-0x05, 0xe8, 0x04, 0xe8, 0xe5, 0x04, 0x07, 0x01,
-0xe6, 0x08, 0x02, 0x08, 0x0a, 0x02, 0x0a, 0xe5,
-0xe7, 0x15, 0x02, 0x13, 0x06, 0xe5, 0xe5, 0x03,
-0x04, 0x06, 0x04, 0x02, 0x01, 0x01, 0xe5, 0x07,
-0xe5, 0xe5, 0x0e, 0x01, 0x06, 0x0b, 0x02, 0x09,
-0x06, 0x01, 0xe5, 0x09, 0x05, 0x0e, 0x0c, 0x01,
-0xe5, 0xe5, 0xe5, 0x03, 0x02, 0x06, 0x02, 0x01,
-0x1f, 0xe5, 0xe6, 0x10, 0x01, 0x04, 0x02, 0x01,
-0x01, 0x05, 0xe6, 0xe5, 0x04, 0x01, 0xe6, 0xe5,
-0x02, 0x01, 0x01, 0x05, 0xe6, 0x06, 0x01, 0x04,
-0x02, 0x01, 0x07, 0x01, 0x02, 0x04, 0xe7, 0x05,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0x07, 0x01, 0x04,
-0x02, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x03,
-0x03, 0x01, 0xe6, 0xe5, 0x02, 0x01, 0x04, 0x02,
-0x01, 0xe5, 0x05, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x01, 0x02, 0x02, 0x02, 0xe5, 0x01, 0x0e, 0xe5,
-0x03, 0x01, 0xe5, 0x0f, 0x05, 0x06, 0x02, 0xe5,
-0x01, 0x02, 0xe5, 0x05, 0xe6, 0x02, 0x0e, 0xe5,
-0x09, 0x04, 0x02, 0xe6, 0x01, 0x03, 0x09, 0x02,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x03, 0x03, 0xe5,
-0x07, 0xe5, 0x07, 0x09, 0xe5, 0x04, 0x02, 0x0a,
-0xe5, 0x04, 0x02, 0x05, 0xe5, 0x02, 0x07, 0x18,
-0xe9, 0x01, 0x04, 0x03, 0x09, 0xe5, 0xe5, 0x02,
-0x02, 0x04, 0xe5, 0x02, 0x0b, 0x09, 0x05, 0x02,
-0x03, 0x02, 0x06, 0x04, 0x0d, 0xe5, 0x04, 0x01,
-0x03, 0x09, 0x01, 0x02, 0xe5, 0x04, 0xe5, 0x01,
-0x0b, 0x02, 0x06, 0x01, 0x07, 0x07, 0x01, 0x09,
-0x03, 0xe5, 0x01, 0x0a, 0x11, 0x02, 0x01, 0x02,
-0x12, 0x04, 0x12, 0x17, 0x05, 0x03, 0x09, 0x09,
-0x01, 0x07, 0x03, 0x06, 0x01, 0x01, 0x02, 0x06,
-0x16, 0x06, 0x06, 0x02, 0x06, 0xe5, 0x05, 0x02,
-0x05, 0xe5, 0x04, 0x05, 0x05, 0x0c, 0x07, 0x02,
-0x0e, 0x15, 0x0a, 0xe9, 0x12, 0x02, 0x15, 0x07,
-0xe6, 0x08, 0xe5, 0x02, 0x02, 0x01, 0x11, 0x01,
-0xe5, 0x05, 0xe6, 0x06, 0xe5, 0xe5, 0x07, 0xe5,
-0x06, 0xe5, 0xe5, 0x08, 0x03, 0xe5, 0x0a, 0x0a,
-0x11, 0x03, 0x11, 0xe5, 0x01, 0x03, 0x01, 0x01,
-0x07, 0xe8, 0x0b, 0x08, 0xe6, 0x01, 0x01, 0x11,
-0x02, 0x02, 0x06, 0x0a, 0x07, 0x02, 0x06, 0x01,
-0x0c, 0x04, 0x0a, 0x02, 0x04, 0x01, 0xe5, 0x12,
-0x08, 0xe5, 0x10, 0x01, 0x17, 0x03, 0x1f, 0x0d,
-0x08, 0x05, 0x06, 0x0c, 0x03, 0xe6, 0x05, 0x10,
-0x09, 0x04, 0x04, 0x09, 0x03, 0xe5, 0x03, 0x02,
-0x04, 0x01, 0xe5, 0x02, 0x04, 0x04, 0x02, 0x01,
-0x09, 0x02, 0x06, 0x09, 0x07, 0x03, 0x01, 0x01,
-0x03, 0x0b, 0x03, 0x05, 0x05, 0x03, 0x09, 0xe6,
-0x04, 0x01, 0x01, 0x01, 0xe5, 0x03, 0x09, 0x07,
-0x01, 0xe5, 0x07, 0x17, 0x01, 0x02, 0x09, 0x0d,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0xe7, 0x05,
-0xe6, 0x06, 0xe6, 0x04, 0x01, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0xe5, 0x04, 0xe7, 0x02, 0x02, 0xe6,
-0x01, 0x06, 0xe7, 0x05, 0x09, 0xe6, 0x06, 0xe6,
-0x05, 0xe7, 0x02, 0xe5, 0x01, 0xe6, 0x06, 0xe6,
-0x01, 0x04, 0xe6, 0x06, 0x09, 0x09, 0x03, 0x08,
-0x0e, 0xe5, 0xe5, 0x05, 0x0c, 0x28, 0x06, 0x0c,
-0x06, 0x02, 0x09, 0x09, 0x08, 0x02, 0x04, 0x05,
-0x0b, 0x19, 0x08, 0x1e, 0x29, 0x08, 0x03, 0x08,
-0x0f, 0x01, 0x05, 0xe7, 0x05, 0xe7, 0x02, 0x02,
-0xe6, 0x07, 0xe5, 0x02, 0x01, 0x07, 0x0e, 0x01,
-0x06, 0x01, 0x07, 0x07, 0x0b, 0x02, 0xe8, 0x03,
-0xe8, 0x05, 0xe7, 0x01, 0x02, 0x09, 0x06, 0x04,
-0x13, 0x03, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0x07,
-0xe5, 0xe5, 0x17, 0x01, 0xe5, 0x02, 0x11, 0x02,
-0x09, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x02, 0x1c,
-0x06, 0x1c, 0x02, 0x09, 0x06, 0xe5, 0xe5, 0x1a,
-0x02, 0x13, 0x07, 0x01, 0x03, 0x03, 0x01, 0x0a,
-0x18, 0xe5, 0xe6, 0x0a, 0x02, 0x02, 0x06, 0x06,
-0x02, 0x09, 0x08, 0xe5, 0x07, 0xe5, 0x05, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04,
-0xe6, 0x01, 0x03, 0x05, 0x03, 0xe5, 0xe5, 0x03,
-0x03, 0x02, 0x05, 0xe5, 0x04, 0x06, 0x02, 0x02,
-0x06, 0x09, 0x03, 0x05, 0x09, 0x09, 0x03, 0x05,
-0x08, 0xe5, 0x0e, 0x04, 0xe5, 0x02, 0x02, 0x01,
-0x0d, 0x09, 0x05, 0x03, 0x01, 0x07, 0x07, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x05, 0xe7, 0x08, 0xe6,
-0x06, 0x01, 0x07, 0xe7, 0x05, 0xe6, 0x06, 0xe6,
-0x01, 0x04, 0xe6, 0x06, 0xe7, 0x05, 0xe6, 0x08,
-0x06, 0x02, 0xe5, 0xe5, 0x05, 0x14, 0x03, 0xe5,
-0x01, 0x10, 0x09, 0xe5, 0x07, 0x09, 0x33, 0x08,
-0x18, 0x0b, 0x05, 0x12, 0x0a, 0x15, 0x0f, 0x09,
-0xe6, 0x06, 0x03, 0x10, 0x02, 0x01, 0xe8, 0x07,
-0xe5, 0x03, 0x14, 0xe5, 0x07, 0xe5, 0x03, 0x03,
-0x01, 0xe5, 0x01, 0x03, 0x05, 0x03, 0x01, 0xe5,
-0x01, 0x09, 0x03, 0x05, 0x06, 0xe5, 0xe5, 0x02,
-0x05, 0x01, 0x04, 0x01, 0x02, 0x03, 0x02, 0xe5,
-0xe5, 0x02, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0x01,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x02,
-0x05, 0x0d, 0x09, 0x09, 0x09, 0x02, 0xe5, 0xe5,
-0x0d, 0xe6, 0xe7, 0x01, 0x01, 0x0d, 0x04, 0x06,
-0x01, 0xe5, 0x01, 0x06, 0x02, 0x08, 0xe5, 0x01,
-0xe5, 0x03, 0xe5, 0x07, 0x01, 0x01, 0xe5, 0x03,
-0x02, 0x06, 0xe5, 0x07, 0x04, 0x01, 0x02, 0x03,
-0xe5, 0x03, 0x04, 0xe5, 0x04, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0x02, 0xe5, 0x02, 0x09,
-0x09, 0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0x08, 0xe6,
-0xe5, 0xe5, 0xe6, 0x02, 0x02, 0x01, 0xe5, 0x01,
-0x06, 0x03, 0x02, 0xe5, 0xe5, 0x0a, 0x01, 0x02,
-0x03, 0x04, 0x05, 0xe5, 0xe5, 0xe5, 0x21, 0x04,
-0x04, 0x04, 0x02, 0x01, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0xe5, 0xe5,
-0x03, 0x02, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x04, 0x04, 0x04, 0x02, 0x01, 0x02, 0x06, 0x01,
-0x11, 0xe5, 0x0a, 0x0b, 0x04, 0x01, 0x01, 0x02,
-0x07, 0x02, 0x01, 0x04, 0xe5, 0xe5, 0x08, 0x09,
-0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x02, 0x06, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x08, 0x09, 0x05, 0xe5, 0x01, 0x09, 0x0d, 0x05,
-0xe5, 0x0a, 0x10, 0x01, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x04, 0x02, 0x03, 0x02, 0x02,
-0xe5, 0x01, 0x02, 0x02, 0x06, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02,
-0x03, 0xe5, 0x03, 0x09, 0x01, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0x01, 0x01, 0xe5, 0x0f, 0x03, 0x02,
-0x0e, 0x09, 0x04, 0x04, 0x09, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5,
-0x02, 0x07, 0x03, 0x02, 0xe7, 0x02, 0x04, 0xe5,
-0x02, 0x01, 0x02, 0xe5, 0x02, 0x02, 0xe7, 0x02,
-0x02, 0xe7, 0x02, 0x05, 0x03, 0x02, 0xe7, 0x02,
-0x09, 0x04, 0x04, 0x02, 0x01, 0x04, 0x04, 0xe5,
-0x02, 0x09, 0x02, 0xe5, 0x01, 0xe5, 0x0b, 0x01,
-0x04, 0x02, 0x04, 0x01, 0xe5, 0xe5, 0x05, 0x02,
-0x06, 0x02, 0x03, 0xe5, 0x03, 0x06, 0x02, 0x03,
-0xe5, 0x03, 0x06, 0x01, 0xe5, 0x02, 0xe5, 0x03,
-0x06, 0x02, 0x03, 0xe5, 0x03, 0x06, 0x04, 0x04,
-0x04, 0x05, 0xe6, 0xe5, 0x08, 0x06, 0x02, 0x06,
-0x02, 0x03, 0x05, 0x06, 0x04, 0x04, 0x01, 0xe5,
-0x03, 0x02, 0x01, 0x09, 0x04, 0x01, 0xe7, 0x0e,
-0x04, 0x02, 0x0a, 0x01, 0x04, 0xe5, 0xe5, 0x02,
-0xe5, 0xe8, 0x02, 0xe5, 0x01, 0x01, 0x03, 0xe5,
-0xe6, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01, 0xe5,
-0xe7, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0xe7,
-0x03, 0x02, 0x01, 0x01, 0x02, 0x01, 0xe5, 0xe7,
-0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0xe5, 0xe7,
-0x03, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x03,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe7, 0x01, 0x01,
-0xe5, 0xe7, 0x01, 0x02, 0x06, 0x01, 0xe5, 0xe6,
-0x02, 0x01, 0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0x03,
-0x03, 0xe5, 0x03, 0x03, 0xe5, 0xe5, 0x01, 0x0d,
-0x02, 0x02, 0xe5, 0xe5, 0x12, 0x04, 0x02, 0x06,
-0x09, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x05, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x01, 0x04, 0x02, 0x06, 0x02, 0xe5,
-0x04, 0x02, 0x06, 0x04, 0x0f, 0x02, 0x02, 0xe5,
-0x13, 0xe5, 0x03, 0xe5, 0x01, 0x01, 0x03, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0x01, 0x01, 0x03, 0xe5,
-0x01, 0x05, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x06, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0x07, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x01, 0x14,
-0xe5, 0xe6, 0x0a, 0x02, 0x06, 0x02, 0xe5, 0xe6,
-0x01, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0xe6, 0x02,
-0x01, 0xe8, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe7,
-0x03, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x05,
-0xe5, 0xe5, 0x01, 0x02, 0x06, 0x02, 0x08, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x08, 0xe5, 0x08, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x08, 0x04, 0x03,
-0xe7, 0x08, 0x0b, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x02, 0x02, 0x09, 0x02, 0xe5, 0x04, 0x02, 0x06,
-0x02, 0xe5, 0x04, 0x02, 0x06, 0x02, 0xe5, 0x04,
-0x02, 0x06, 0x02, 0xe5, 0x05, 0xe5, 0x01, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0x06, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x02, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x01, 0x09, 0x0a, 0x03, 0x0c, 0xe5,
-0xe5, 0x05, 0x02, 0xe5, 0xe5, 0x05, 0xe7, 0x05,
-0xe5, 0xe5, 0x05, 0xe7, 0x03, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02,
-0xe6, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x04, 0x02, 0xe6, 0x05, 0x02, 0xe6, 0x03, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0xe5, 0x01, 0x02, 0xe6, 0x03, 0x02,
-0xe6, 0x03, 0x02, 0x01, 0x06, 0xe7, 0x05, 0xe7,
-0x05, 0xe7, 0x02, 0x02, 0x0f, 0xe7, 0x0c, 0x01,
-0xe5, 0x05, 0x01, 0xe6, 0x03, 0xe5, 0xe7, 0x04,
-0x01, 0xe6, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x01, 0xe6, 0x03, 0xe5, 0xe7,
-0x04, 0x01, 0xe6, 0x04, 0x02, 0x06, 0xe5, 0x02,
-0x03, 0xe7, 0x0d, 0x04, 0x09, 0x09, 0x01, 0x07,
-0x01, 0x04, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x07, 0x09, 0x01, 0x04, 0x02, 0x09, 0x06, 0x02,
-0x08, 0x02, 0x09, 0x01, 0x02, 0x04, 0x06, 0x02,
-0x09, 0x09, 0x09, 0x09, 0x04, 0x09, 0x08, 0xe5,
-0x05, 0x07, 0x12, 0x0d, 0x01, 0x03, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x01, 0x02, 0xe5, 0xe6, 0x04,
-0x01, 0xe5, 0x06, 0xe6, 0x01, 0x03, 0x01, 0xe5,
-0x01, 0x04, 0xe6, 0x01, 0x03, 0x01, 0xe5, 0x01,
-0x03, 0xe7, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x03,
-0xe7, 0x01, 0xe5, 0x03, 0xe5, 0x03, 0xe5, 0x01,
-0xe7, 0x01, 0x03, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0x01,
-0xe5, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01,
-0x01, 0xe5, 0x01, 0x03, 0xe8, 0x01, 0x04, 0xe6,
-0x01, 0x02, 0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x06,
-0xe7, 0x02, 0x01, 0x01, 0x01, 0x08, 0x04, 0x01,
-0x0a, 0x09, 0xe5, 0x07, 0xe5, 0x03, 0xe5, 0xe5,
-0x05, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0xe5, 0x04, 0x02, 0xe6, 0x03, 0x02,
-0xe5, 0x03, 0xe5, 0x03, 0xe5, 0x04, 0x02, 0x06,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe6,
-0x03, 0x03, 0x09, 0x04, 0x04, 0x04, 0x03, 0x0f,
-0x02, 0x09, 0x03, 0x01, 0x03, 0x02, 0x03, 0x01,
-0x03, 0x05, 0x03, 0x05, 0x02, 0xe6, 0xe5, 0x01,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x03, 0x04, 0x02,
-0xe5, 0xe6, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0xe5, 0xe6, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x03, 0x02, 0xe5, 0xe6, 0x02, 0x01, 0x09,
-0x03, 0x03, 0x01, 0x03, 0xe5, 0x0f, 0xe6, 0xe5,
-0x0b, 0xe5, 0xe5, 0x03, 0xe6, 0x05, 0xe7, 0x05,
-0xe7, 0x05, 0x01, 0x01, 0x06, 0xe5, 0xe5, 0x04,
-0x01, 0x01, 0x06, 0xe5, 0xe5, 0x04, 0x01, 0x01,
-0x05, 0xe6, 0xe5, 0x04, 0x01, 0x01, 0x05, 0xe6,
-0xe5, 0x01, 0x04, 0x02, 0xe5, 0x01, 0x03, 0xe5,
-0xe5, 0x04, 0xe6, 0xe5, 0x01, 0x02, 0xe6, 0xe5,
-0x01, 0x03, 0xe5, 0xe5, 0x01, 0x02, 0x01, 0x01,
-0x02, 0x02, 0xe6, 0xe5, 0x01, 0x02, 0x01, 0x01,
-0x06, 0xe5, 0x0d, 0x02, 0xe6, 0x06, 0xe6, 0x02,
-0x11, 0xe5, 0x0c, 0x01, 0xe5, 0x01, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x06, 0x02, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x03, 0x05, 0xe5, 0x01, 0x05,
-0x03, 0x06, 0x02, 0x05, 0xe5, 0x01, 0x06, 0x02,
-0x06, 0x02, 0x09, 0x05, 0x13, 0xe5, 0x07, 0xe5,
-0x01, 0x02, 0x11, 0xe5, 0x01, 0x0d, 0x08, 0x06,
-0xe5, 0xe5, 0x05, 0x02, 0x28, 0x13, 0x1f, 0x13,
-0x09, 0x23, 0x09, 0x02, 0x06, 0x07, 0x01, 0x02,
-0xe5, 0x07, 0xe5, 0x0b, 0x01, 0x01, 0x0b, 0x05,
-0x01, 0x01, 0x05, 0x01, 0x02, 0xe5, 0x02, 0x01,
-0xe6, 0x04, 0x01, 0x07, 0x01, 0x07, 0xe6, 0xe5,
-0x04, 0x01, 0x01, 0x04, 0xe5, 0xe5, 0x06, 0x01,
-0x01, 0x05, 0x01, 0xe5, 0x05, 0xe6, 0x01, 0x04,
-0xe6, 0x08, 0xe6, 0x06, 0x01, 0x07, 0xe6, 0x01,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05,
-0xe6, 0x05, 0xe5, 0xe6, 0x01, 0x03, 0x01, 0xe6,
-0x01, 0x02, 0x01, 0x01, 0x04, 0xe5, 0xe5, 0x06,
-0x01, 0x0a, 0x02, 0xe5, 0x01, 0x10, 0x03, 0x01,
-0xe5, 0x01, 0xe5, 0x07, 0x03, 0xe6, 0x02, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x04, 0x07, 0x01, 0xe6,
-0x03, 0xe5, 0xe5, 0x09, 0x05, 0x09, 0xe5, 0xe5,
-0x05, 0x02, 0x05, 0x02, 0xe5, 0x02, 0x08, 0xe5,
-0x03, 0xe5, 0x07, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x01, 0xe5, 0x03, 0x03, 0x05, 0xe5, 0x02, 0x01,
-0x01, 0xe5, 0x03, 0x02, 0x02, 0x02, 0x05, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0x10, 0xe6, 0xe6, 0x11,
-0x09, 0x09, 0x02, 0x0f, 0xe5, 0x0b, 0x01, 0x03,
-0x04, 0x07, 0x06, 0x0a, 0x04, 0x03, 0x10, 0x04,
-0x03, 0x04, 0x03, 0x01, 0x07, 0x01, 0x02, 0x04,
-0x02, 0x05, 0x07, 0x03, 0x01, 0x0a, 0xe6, 0x01,
-0x02, 0x03, 0x01, 0x02, 0x01, 0x07, 0xe5, 0x02,
-0x0e, 0x06, 0xe5, 0xe7, 0x11, 0x04, 0x01, 0x0c,
-0x03, 0x02, 0x02, 0x0d, 0x05, 0x0f, 0x03, 0x0b,
-0x04, 0x09, 0x09, 0x06, 0x04, 0x0c, 0x06, 0x09,
-0x06, 0x02, 0x09, 0x09, 0x0a, 0x12, 0xe5, 0x04,
-0x12, 0xe5, 0x06, 0x03, 0x0d, 0xe6, 0x08, 0x07,
-0xe6, 0x03, 0x04, 0xe5, 0x03, 0x01, 0x0c, 0x03,
-0xe5, 0x02, 0x03, 0x05, 0xe5, 0x02, 0xe5, 0x02,
-0x05, 0x01, 0x01, 0xe5, 0x05, 0x01, 0x06, 0xe8,
-0x05, 0x01, 0x01, 0x06, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x02, 0x01, 0xe6, 0xe5,
-0x04, 0xe6, 0xe5, 0x06, 0x01, 0x07, 0x01, 0x07,
-0xe5, 0x07, 0x06, 0x04, 0x06, 0x07, 0x06, 0x01,
-0xe9, 0x07, 0x05, 0x06, 0x01, 0x08, 0x01, 0x04,
-0x0c, 0x02, 0x03, 0x07, 0x0b, 0x01, 0x07, 0x0a,
-0x02, 0x02, 0x09, 0x06, 0x06, 0xe5, 0xe5, 0xe5,
-0xe5, 0x08, 0x07, 0x01, 0x03, 0x03, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x07, 0x01, 0x05, 0x05, 0x07, 0x10, 0x08, 0x0c,
-0x09, 0x09, 0x08, 0x0e, 0x01, 0x08, 0xe5, 0x07,
-0xe6, 0x05, 0x03, 0x05, 0xe6, 0x06, 0xe6, 0x02,
-0x04, 0xe5, 0x04, 0x01, 0xe6, 0x08, 0x03, 0x03,
-0x03, 0x04, 0xe5, 0xe5, 0x04, 0xe6, 0x01, 0xe5,
-0x04, 0x07, 0x05, 0x04, 0x07, 0x05, 0xe5, 0x02,
-0x04, 0xe6, 0x15, 0x03, 0x05, 0x11, 0x01, 0x03,
-0xe5, 0x01, 0x0d, 0x03, 0x20, 0x01, 0x0f, 0x0b,
-0x09, 0x05, 0x03, 0x01, 0x02, 0x0e, 0x0b, 0x01,
-0x02, 0x04, 0x09, 0x01, 0x07, 0x0e, 0x0e, 0x01,
-0xe5, 0x05, 0x0c, 0x09, 0x09, 0x02, 0x07, 0xe5,
-0x0a, 0x03, 0x02, 0x10, 0x07, 0x01, 0x07, 0x08,
-0x0b, 0x01, 0x07, 0x09, 0x04, 0x07, 0x01, 0x03,
-0x09, 0x0c, 0x01, 0x07, 0x02, 0x04, 0xe5, 0x04,
-0x0d, 0x02, 0x04, 0x01, 0x08, 0xe5, 0x01, 0x07,
-0x08, 0x07, 0x01, 0x0a, 0x0d, 0x07, 0x08, 0x06,
-0x03, 0x01, 0xe6, 0x07, 0xe5, 0x0b, 0x09, 0x12,
-0xe5, 0x05, 0x09, 0x01, 0x08, 0x06, 0x01, 0x06,
-0x04, 0xe5, 0x06, 0x01, 0x06, 0x02, 0xe8, 0x05,
-0xe5, 0x05, 0x06, 0x01, 0xe5, 0xe5, 0x04, 0x0e,
-0x06, 0x08, 0xe5, 0x01, 0x04, 0x04, 0x09, 0xe6,
-0x07, 0xe5, 0x08, 0x01, 0x15, 0x01, 0xe5, 0xe6,
-0x05, 0x04, 0x06, 0x14, 0x01, 0x19, 0x1d, 0x13,
-0x08, 0x03, 0xe7, 0x04, 0x03, 0xe5, 0x06, 0x09,
-0xe5, 0x07, 0x06, 0xe5, 0xe7, 0x03, 0x02, 0x09,
-0x0e, 0x03, 0x02, 0x02, 0x09, 0x0b, 0x0d, 0x02,
-0x02, 0x0c, 0x1b, 0x01, 0x06, 0xe5, 0xe6, 0x01,
-0x02, 0x09, 0x06, 0x02, 0xe5, 0xe5, 0x01, 0x09,
-0xe5, 0x02, 0x01, 0x05, 0xe5, 0x04, 0xe5, 0x04,
-0x09, 0x01, 0x03, 0x03, 0x01, 0xe5, 0x04, 0x10,
-0x03, 0x01, 0x07, 0x01, 0x03, 0x0d, 0x01, 0x08,
-0x06, 0x02, 0xe6, 0x0b, 0x15, 0x02, 0xe5, 0xe5,
-0x0b, 0x0b, 0xe5, 0x07, 0xe5, 0x05, 0x03, 0x05,
-0x0a, 0x06, 0x01, 0x02, 0x06, 0xe5, 0x04, 0x0c,
-0xe5, 0x11, 0xe5, 0x09, 0x0a, 0x06, 0x01, 0x03,
-0x05, 0x09, 0xe5, 0x0f, 0x01, 0xe5, 0x0b, 0x09,
-0x05, 0x01, 0x09, 0x07, 0xe5, 0x02, 0x09, 0x03,
-0x10, 0x03, 0x17, 0x09, 0x1d, 0x13, 0x15, 0x0a,
-0x06, 0x16, 0x09, 0x2f, 0xe5, 0x10, 0x02, 0x0c,
-0x01, 0xe5, 0x01, 0xe6, 0x0d, 0xe5, 0x01, 0x01,
-0x04, 0x02, 0xe5, 0x0e, 0x09, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x09,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x04, 0x09, 0x09,
-0x09, 0x09, 0x09, 0xe5, 0xe6, 0x04, 0x13, 0xe5,
-0x07, 0x08, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x09,
-0x05, 0x02, 0x01, 0x08, 0xe5, 0x01, 0x02, 0xe5,
-0x18, 0xe5, 0x07, 0x09, 0x06, 0x02, 0x09, 0x02,
-0x01, 0x04, 0x09, 0x05, 0xe5, 0x01, 0x05, 0x03,
-0x07, 0xe5, 0x01, 0x06, 0x02, 0x09, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x02,
-0xe5, 0x14, 0xe5, 0xe5, 0xe5, 0xe5, 0xe7, 0xe5,
-0x08, 0x03, 0xe5, 0x0c, 0x01, 0x02, 0x03, 0x04,
-0x0a, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0xe5, 0x04,
-0x01, 0x0e, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x04,
-0xe5, 0x01, 0x01, 0x04, 0x01, 0x02, 0x04, 0xe5,
-0x02, 0xe5, 0x05, 0x10, 0xe5, 0x05, 0x01, 0xe5,
-0x01, 0x0c, 0x04, 0xe5, 0xe5, 0x04, 0xe5, 0x03,
-0x03, 0xe5, 0x08, 0x01, 0xe5, 0x04, 0xe5, 0x03,
-0x01, 0x05, 0x0b, 0x09, 0x04, 0xe5, 0xe5, 0xe5,
-0x03, 0x01, 0xe5, 0xe5, 0xe6, 0x05, 0x07, 0xe5,
-0x01, 0x0a, 0x06, 0x02, 0x01, 0x04, 0xe5, 0xe5,
-0xe5, 0x0c, 0xe5, 0x01, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x05, 0xe5, 0x01, 0xe5, 0xe5, 0x02,
-0xe5, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe5, 0x13, 0xe5, 0x01, 0x09, 0x13, 0x09, 0x06,
-0x02, 0x09, 0x09, 0x06, 0x02, 0x01, 0x07, 0x01,
-0x0b, 0x06, 0x05, 0x09, 0x05, 0x06, 0x09, 0x04,
-0x01, 0x07, 0x01, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x01, 0xe7, 0x03, 0x04, 0x01, 0xe5,
-0xe5, 0x05, 0x09, 0x02, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x04, 0x02, 0x01, 0x01, 0xe5, 0xe5, 0x03,
-0x01, 0xe5, 0xe5, 0x01, 0x09, 0xe5, 0x01, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0x01, 0x01, 0xe5,
-0xe5, 0x01, 0xe5, 0xe6, 0x01, 0x02, 0x06, 0x02,
-0x03, 0x02, 0x02, 0xe5, 0xe6, 0x13, 0x05, 0xe5,
-0x01, 0xe5, 0x01, 0x0a, 0x03, 0x04, 0x04, 0x09,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x02, 0x06, 0x02,
-0x09, 0x06, 0x02, 0x04, 0x01, 0x04, 0x01, 0x02,
-0x07, 0x04, 0x03, 0x04, 0x07, 0x04, 0x04, 0x09,
-0x01, 0x02, 0x09, 0x03, 0xe5, 0x03, 0x03, 0xe5,
-0x03, 0x04, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02,
-0x04, 0x03, 0x03, 0x01, 0x03, 0x02, 0x01, 0x04,
-0x09, 0x09, 0x05, 0xe6, 0x0d, 0x05, 0x01, 0x01,
-0x01, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x09, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x02, 0x06, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02, 0x01,
-0x07, 0x01, 0x02, 0x04, 0x09, 0x01, 0x05, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x0b, 0x02, 0x04, 0x01,
-0x04, 0x04, 0x01, 0x07, 0x07, 0x01, 0x07, 0x01,
-0x0d, 0xe5, 0xe7, 0x0c, 0x09, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01,
-0xe5, 0xe5, 0x03, 0x04, 0x01, 0x02, 0x04, 0x04,
-0x04, 0x01, 0x02, 0x04, 0x03, 0xe5, 0xe6, 0xe5,
-0xe5, 0x01, 0x04, 0x01, 0x02, 0x04, 0x03, 0xe5,
-0xe5, 0x03, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x01, 0x02, 0x02, 0x01, 0x04,
-0x04, 0x03, 0xe5, 0x03, 0x01, 0x07, 0x01, 0x0e,
-0x02, 0xe5, 0x19, 0x04, 0x04, 0x0e, 0x11, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x06, 0xe6, 0x10, 0x02,
-0x03, 0x04, 0x13, 0x02, 0x2e, 0xe5, 0x07, 0x02,
-0x03, 0x09, 0x20, 0xe6, 0xe6, 0x13, 0xe5, 0x03,
-0xe5, 0x07, 0xe5, 0x08, 0x16, 0x09, 0xe5, 0x07,
-0x05, 0xe5, 0x01, 0xe5, 0x04, 0x12, 0xe5, 0x14,
-0x02, 0x13, 0x13, 0xe5, 0x07, 0x09, 0x05, 0xe5,
-0x07, 0xe5, 0x1c, 0x02, 0x03, 0xe5, 0x0a, 0x02,
-0x04, 0x01, 0x02, 0xe6, 0x06, 0xe6, 0x06, 0x06,
-0x02, 0x09, 0x05, 0x03, 0x09, 0x05, 0x03, 0xe5,
-0x07, 0x09, 0x06, 0x02, 0xe5, 0x04, 0x04, 0x09,
-0x05, 0x03, 0x09, 0x03, 0x02, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x03, 0x05, 0x03, 0x05, 0xe6, 0x06,
-0xe5, 0x07, 0x09, 0x0d, 0x01, 0xe7, 0x01, 0x06,
-0x02, 0x09, 0x13, 0x06, 0x02, 0x09, 0x27, 0x09,
-0x06, 0x09, 0x18, 0x09, 0x06, 0x0b, 0x07, 0x43,
-0x02, 0xe5, 0x01, 0x09, 0x0a, 0x12, 0x07, 0x02,
-0x09, 0x26, 0x09, 0x11, 0x06, 0x11, 0x0a, 0x41,
-0x20, 0xe5, 0xe6, 0x0c, 0x01, 0x09, 0xe7, 0x03,
-0x01, 0xe5, 0xe5, 0x05, 0x02, 0x06, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x01, 0x04, 0x02,
-0x04, 0x01, 0xe7, 0x05, 0x02, 0x06, 0x02, 0x04,
-0x01, 0xe7, 0x07, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x04, 0x02, 0x06, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x04, 0x02, 0x06, 0x02, 0x04, 0x01, 0x02,
-0x01, 0x05, 0xe6, 0x05, 0xe5, 0xe5, 0x0f, 0x0e,
-0xe5, 0x01, 0x0d, 0x01, 0xe5, 0x04, 0xe5, 0x01,
-0xe5, 0x03, 0xe5, 0xe7, 0x01, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x03, 0x04, 0xe5, 0xe7, 0xe5, 0x02, 0x03,
-0x01, 0xe5, 0x01, 0x03, 0x05, 0x02, 0xe5, 0x06,
-0x03, 0x05, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x07, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x09, 0x04,
-0x02, 0xe6, 0x10, 0xe5, 0x0c, 0x01, 0x01, 0x0d,
-0x01, 0x09, 0x01, 0x05, 0x01, 0x09, 0x03, 0x05,
-0x04, 0x18, 0x0b, 0x07, 0x09, 0x03, 0x02, 0x02,
-0x01, 0x02, 0x03, 0x02, 0x09, 0x04, 0x04, 0x03,
-0xe5, 0x08, 0x09, 0x04, 0x04, 0x09, 0x18, 0x13,
-0x03, 0x0b, 0xe8, 0x0d, 0x05, 0xe6, 0x06, 0xe6,
-0xe5, 0x04, 0xe6, 0x04, 0xe8, 0x04, 0xe7, 0x05,
-0xe7, 0x05, 0xe7, 0x01, 0x03, 0xe7, 0x06, 0xe7,
-0x05, 0xe7, 0x04, 0xe7, 0x07, 0xe5, 0x01, 0x05,
-0xe7, 0x01, 0x04, 0xe7, 0xe5, 0x02, 0xe8, 0x04,
-0x01, 0xe5, 0x01, 0x03, 0xe8, 0x04, 0x01, 0xe5,
-0x01, 0x03, 0x01, 0xe5, 0x05, 0xe7, 0x02, 0x04,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe5, 0x06, 0x01, 0xe6, 0x0c, 0x01, 0x09, 0xe5,
-0x11, 0xe6, 0x06, 0x09, 0x09, 0x09, 0x13, 0x07,
-0x01, 0x0a, 0x0a, 0x1d, 0x09, 0x09, 0x09, 0x09,
-0x0a, 0x08, 0x13, 0x0f, 0xe7, 0x0c, 0x01, 0x07,
-0x04, 0x09, 0x06, 0x02, 0xe5, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0x05, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x01, 0xe5, 0xe5, 0x01,
-0xe5, 0x01, 0x03, 0x01, 0x03, 0x04, 0x02, 0x03,
-0x05, 0x03, 0x02, 0x02, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0x03, 0xe5, 0xe5, 0x01, 0xe5, 0x01, 0x02,
-0x02, 0x03, 0xe5, 0xe5, 0x01, 0xe5, 0x04, 0x02,
-0x01, 0x01, 0x05, 0x06, 0x02, 0x10, 0x0f, 0x01,
-0xe6, 0x0b, 0x01, 0x09, 0xe5, 0x11, 0x04, 0xe5,
-0x02, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x04, 0xe5, 0x08, 0x03, 0x05, 0x08,
-0xe5, 0x0b, 0x02, 0x03, 0xe6, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x06, 0x01, 0x08, 0xe5, 0x02, 0x03,
-0x01, 0x09, 0x03, 0x03, 0x01, 0x04, 0x08, 0x13,
-0x11, 0xe5, 0x02, 0x09, 0x01, 0xe5, 0x05, 0x15,
-0x03, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x03,
-0x01, 0xe5, 0x05, 0xe7, 0x01, 0x03, 0xe7, 0x05,
-0x01, 0xe5, 0x06, 0x01, 0x04, 0x04, 0xe6, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x03, 0xe8, 0x05, 0xe6,
-0x01, 0x03, 0xe8, 0x05, 0xe6, 0x01, 0x03, 0x01,
-0x03, 0x04, 0xe6, 0x0b, 0x13, 0x0e, 0x02, 0xe5,
-0x01, 0x2f, 0x02, 0x02, 0x08, 0xe5, 0x07, 0xe5,
-0x1b, 0xe5, 0x0f, 0x02, 0x12, 0x09, 0x01, 0xe5,
-0x1c, 0x0b, 0x04, 0xe5, 0xe5, 0x31, 0x02, 0x03,
-0x11, 0x01, 0x07, 0x01, 0x07, 0xe6, 0xe5, 0x04,
-0xe6, 0x06, 0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x05, 0x01, 0x01, 0x01, 0x07, 0x01, 0x03, 0x03,
-0xe6, 0xe5, 0x04, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x09, 0xe7, 0x0f,
-0x08, 0xe5, 0x01, 0x05, 0xe7, 0xe5, 0x03, 0xe5,
-0xe5, 0x03, 0xe7, 0x07, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x06, 0xe5, 0x01, 0x05, 0xe5, 0x03, 0x03,
-0xe5, 0x08, 0x03, 0x03, 0x02, 0xe5, 0x07, 0xe6,
-0x01, 0xe5, 0x01, 0xe6, 0xe5, 0x05, 0xe6, 0x06,
-0xe5, 0x05, 0x01, 0xe5, 0x1b, 0xe5, 0x01, 0x01,
-0x03, 0xe5, 0x02, 0x1a, 0x02, 0x02, 0xe6, 0x09,
-0x02, 0x02, 0x05, 0x08, 0xe5, 0x03, 0x0b, 0x0b,
-0x11, 0x0b, 0x12, 0x0c, 0x07, 0x03, 0x06, 0x01,
-0x08, 0xe5, 0xe5, 0x01, 0x01, 0x02, 0x09, 0x01,
-0x02, 0x01, 0xe5, 0xe5, 0x06, 0x06, 0x02, 0x0b,
-0x01, 0xe5, 0x06, 0xe5, 0x04, 0x09, 0x05, 0x0b,
-0x02, 0x01, 0x01, 0x11, 0x02, 0x02, 0x06, 0x02,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0x04, 0x01, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x01, 0x09, 0x03, 0x04,
-0x09, 0x05, 0xe5, 0x0b, 0x06, 0x09, 0x02, 0xe5,
-0x02, 0xe5, 0x09, 0x05, 0x03, 0x09, 0x04, 0x0c,
-0x06, 0x0e, 0x01, 0x0d, 0xe6, 0x02, 0x08, 0x04,
-0x07, 0x01, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04,
-0x02, 0x01, 0x11, 0xe6, 0x06, 0x01, 0x07, 0x01,
-0xe5, 0x03, 0x01, 0x01, 0x07, 0x01, 0x01, 0x04,
-0x08, 0x05, 0x0a, 0x13, 0x12, 0xe5, 0x08, 0x1d,
-0x04, 0x03, 0xe5, 0x02, 0xe5, 0xe6, 0x08, 0x04,
-0x02, 0x03, 0x09, 0x04, 0x08, 0x09, 0x03, 0x03,
-0x02, 0x06, 0x02, 0x02, 0x01, 0x11, 0x01, 0x01,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x0b, 0x01, 0xe6,
-0xe5, 0x02, 0x02, 0x08, 0x01, 0x05, 0x0a, 0xe5,
-0x08, 0x08, 0x09, 0x03, 0x04, 0x01, 0x07, 0xe6,
-0x10, 0x09, 0x09, 0xe7, 0xe5, 0x0f, 0x09, 0x10,
-0x01, 0x03, 0x03, 0x01, 0x01, 0x07, 0xe5, 0x07,
-0x09, 0x07, 0x01, 0x09, 0x09, 0x02, 0x01, 0x04,
-0x03, 0xe5, 0x01, 0x03, 0x09, 0x09, 0x05, 0x03,
-0x02, 0x06, 0x09, 0xe5, 0x07, 0x03, 0x2d, 0x0d,
-0xe5, 0xe5, 0xe5, 0x0b, 0x0e, 0x10, 0x01, 0x07,
-0x05, 0x03, 0x09, 0x09, 0x01, 0x04, 0x02, 0x09,
-0x03, 0x05, 0x09, 0x04, 0x01, 0x04, 0x03, 0x05,
-0x09, 0x09, 0x09, 0x03, 0x02, 0x02, 0x09, 0x0d,
-0x11, 0x0c, 0x02, 0xe7, 0xe5, 0x0a, 0xe9, 0xe5,
-0x06, 0xe5, 0x06, 0x0b, 0x06, 0x04, 0x06, 0x1d,
-0x0c, 0x1b, 0x0a, 0x01, 0x0a, 0x09, 0x0e, 0x03,
-0x0f, 0x1d, 0x09, 0x13, 0x08, 0x03, 0xe5, 0x01,
-0x01, 0x06, 0x0f, 0x04, 0x02, 0xe6, 0x03, 0x0c,
-0x05, 0x03, 0x09, 0x08, 0xe5, 0x09, 0xe6, 0xe5,
-0x04, 0xe7, 0x05, 0xe6, 0x13, 0x03, 0x22, 0xe6,
-0x02, 0x08, 0x03, 0x1e, 0xe6, 0x16, 0x09, 0xe9,
-0x02, 0x11, 0x03, 0x07, 0x02, 0x0e, 0x12, 0x09,
-0x0d, 0x09, 0x09, 0x12, 0x02, 0x25, 0x02, 0x05,
-0x14, 0x11, 0x05, 0x03, 0x1f, 0xe6, 0x09, 0x09,
-0x09, 0x01, 0x02, 0x03, 0xe5, 0x03, 0x04, 0x04,
-0x03, 0x05, 0x06, 0x02, 0x06, 0x02, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x06, 0x01, 0x01, 0x05, 0x02, 0x03, 0x02,
-0x03, 0x05, 0x09, 0x03, 0xe5, 0xe5, 0x01, 0x04,
-0x04, 0x04, 0x0b, 0x02, 0x19, 0x0e, 0x03, 0x03,
-0xe5, 0x0e, 0x0b, 0x05, 0xe5, 0xe6, 0x02, 0x01,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x01, 0xe5,
-0x03, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe6, 0x01,
-0x04, 0xe6, 0x01, 0x02, 0x01, 0x01, 0xe5, 0x07,
-0xe6, 0x02, 0x03, 0xe5, 0x01, 0x03, 0x01, 0xe6,
-0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe6, 0x06, 0xe5,
-0x0a, 0x07, 0x06, 0x04, 0x09, 0x12, 0x03, 0x01,
-0xe6, 0x1a, 0x07, 0x08, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x09, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x06, 0x0b, 0x09, 0x09, 0x09, 0x09,
-0x03, 0xe5, 0x03, 0x09, 0x02, 0x09, 0x08, 0x0a,
-0x20, 0x01, 0xe6, 0x0c, 0x06, 0xe5, 0xe5, 0x02,
-0x09, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x02,
-0x05, 0x06, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe5, 0xe5,
-0x05, 0xe5, 0x02, 0x03, 0x01, 0xe5, 0x01, 0x09,
-0x06, 0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0xe5, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0x02, 0x01, 0xe5, 0x05,
-0x02, 0xe5, 0x0d, 0xe5, 0x08, 0x05, 0x0c, 0xe5,
-0x09, 0x02, 0xe5, 0xe6, 0xe5, 0xe5, 0x07, 0x09,
-0x04, 0x04, 0xe5, 0xe5, 0x07, 0x02, 0x06, 0x01,
-0x02, 0x01, 0x02, 0x09, 0x01, 0xe5, 0x05, 0x01,
-0x02, 0x01, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0x02,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x02, 0x02, 0x08,
-0xe5, 0xe5, 0x05, 0x03, 0xe5, 0x03, 0x02, 0x01,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x03, 0xe5, 0x02, 0xe5, 0x01, 0xe6, 0x0f, 0x02,
-0x01, 0xe6, 0x07, 0x06, 0x01, 0x0c, 0x01, 0x04,
-0x01, 0x04, 0x08, 0x09, 0x03, 0x07, 0x04, 0x04,
-0x04, 0x04, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04,
-0x04, 0x04, 0x02, 0x01, 0x04, 0x04, 0x04, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x04, 0x04, 0x06, 0x04,
-0x04, 0x02, 0x01, 0x04, 0x04, 0x04, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5,
-0xe5, 0x01, 0x03, 0x05, 0x01, 0x04, 0x01, 0xe5,
-0xe5, 0x08, 0x01, 0x05, 0x0d, 0x02, 0xe5, 0x02,
-0x04, 0x02, 0xe5, 0xe6, 0x09, 0x09, 0x09, 0x06,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0x02, 0x06, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x08,
-0x01, 0x07, 0x01, 0x07, 0x09, 0x10, 0xe5, 0x04,
-0x02, 0xe9, 0xe5, 0x09, 0x09, 0x04, 0x06, 0x02,
-0x06, 0x02, 0x03, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x06, 0x02, 0x01,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x08,
-0x02, 0x06, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x04, 0x04, 0x09,
-0x10, 0x02, 0xe5, 0x01, 0xe5, 0x08, 0x01, 0x0d,
-0x01, 0xe5, 0xe5, 0x08, 0x02, 0xe5, 0x02, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x02, 0xe7, 0x02,
-0x05, 0x03, 0x04, 0xe5, 0x02, 0x05, 0x03, 0x04,
-0xe5, 0x02, 0x05, 0x03, 0x04, 0xe5, 0x02, 0x05,
-0x03, 0x01, 0x02, 0x02, 0x03, 0x05, 0x03, 0x02,
-0xe7, 0x02, 0x02, 0xe7, 0x02, 0x04, 0xe5, 0x02,
-0x04, 0xe5, 0x02, 0x04, 0xe5, 0x02, 0x09, 0x09,
-0x05, 0x03, 0x02, 0x01, 0xe5, 0x02, 0x05, 0x01,
-0x01, 0x09, 0x02, 0x01, 0xe6, 0x0c, 0x09, 0x03,
-0xe5, 0xe5, 0x03, 0x01, 0x02, 0x01, 0xe5, 0x02,
-0x02, 0x02, 0x03, 0x05, 0x03, 0x02, 0xe7, 0x02,
-0x05, 0x03, 0x01, 0xe6, 0xe5, 0x08, 0x03, 0x03,
-0x01, 0x03, 0x05, 0x06, 0x04, 0x04, 0x04, 0x09,
-0x03, 0x02, 0x02, 0x06, 0xe5, 0xe5, 0x06, 0x01,
-0x06, 0xe5, 0x02, 0x02, 0x01, 0x02, 0x01, 0x03,
-0xe5, 0x01, 0x01, 0x04, 0x04, 0x01, 0x05, 0x09,
-0x01, 0x0d, 0x02, 0xe6, 0x01, 0x0a, 0x09, 0x04,
-0x02, 0x01, 0x04, 0x01, 0x01, 0x02, 0x02, 0x02,
-0x03, 0x02, 0x06, 0x02, 0xe6, 0x03, 0x02, 0x06,
-0x02, 0x01, 0x04, 0x01, 0xe5, 0x05, 0x02, 0x06,
-0x02, 0x06, 0x01, 0xe5, 0xe7, 0x03, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x02, 0x01, 0xe6, 0x01,
-0x01, 0xe8, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe8,
-0x02, 0x01, 0xe8, 0xe5, 0xe5, 0xe6, 0x03, 0x01,
-0x04, 0xe5, 0xe5, 0x03, 0x04, 0x09, 0x01, 0x0b,
-0xe5, 0x02, 0x01, 0xe5, 0xe5, 0x16, 0x09, 0x06,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x05, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x06, 0x02, 0x06,
-0x0c, 0x01, 0x04, 0x20, 0x01, 0xe5, 0xe5, 0x19,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x01, 0x03,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x06,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0x0d, 0x03,
-0xe5, 0x20, 0xe8, 0x0d, 0x02, 0x06, 0xe6, 0x06,
-0xe6, 0x01, 0x01, 0xe5, 0xe7, 0x02, 0x01, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x07, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0x02,
-0x06, 0xe6, 0x06, 0x09, 0x0d, 0x01, 0x01, 0xe5,
-0x29, 0xe5, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x0f, 0x02, 0x2c, 0x02, 0x01, 0x01, 0x29,
-0x01, 0x09, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0xe5, 0x04, 0x02, 0x06, 0x02,
-0x06, 0x02, 0xe5, 0x05, 0xe5, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0x06, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x08, 0x01, 0x32, 0xe5, 0xe6, 0x0c, 0x01, 0x0a,
-0xe6, 0x05, 0xe5, 0xe5, 0x05, 0xe7, 0x03, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6,
-0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x05, 0x02,
-0xe6, 0x03, 0x02, 0x01, 0x04, 0x02, 0xe6, 0x03,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x04, 0x02, 0x01, 0x01, 0x01, 0xe5, 0xe6, 0xe5,
-0x03, 0x01, 0x07, 0x01, 0xe5, 0xe5, 0xe5, 0x1d,
-0x01, 0xe5, 0x0c, 0x01, 0xe5, 0x09, 0x07, 0xe6,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05,
-0x01, 0xe6, 0x21, 0x01, 0xe5, 0x0a, 0xe5, 0xe5,
-0x0a, 0x07, 0x13, 0x09, 0x09, 0x09, 0x09, 0x03,
-0xe5, 0x03, 0x09, 0x09, 0x08, 0x02, 0x09, 0x03,
-0x05, 0x03, 0x05, 0x04, 0x04, 0x09, 0x04, 0x04,
-0x07, 0x01, 0x03, 0x03, 0x01, 0x06, 0xe5, 0xe5,
-0x22, 0x01, 0xe5, 0x08, 0x03, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x02, 0x02, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x02, 0xe6,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x02, 0xe6,
-0x03, 0xe5, 0x02, 0xe6, 0x01, 0x03, 0x01, 0xe5,
-0x01, 0xe5, 0x01, 0xe7, 0x01, 0x04, 0xe6, 0x01,
-0x04, 0xe6, 0x01, 0x03, 0xe7, 0x01, 0x05, 0xe6,
-0xe5, 0x02, 0x01, 0xe6, 0x06, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe5, 0x01,
-0x1a, 0x08, 0xe6, 0x04, 0x01, 0xe5, 0x04, 0x02,
-0xe6, 0x03, 0x02, 0xe5, 0x04, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x04,
-0xe5, 0x04, 0x02, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0xe6, 0x03, 0x02, 0xe5, 0x04, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x0d, 0xe5, 0xe7, 0x07, 0x09, 0x09,
-0x0d, 0xe6, 0xe5, 0x19, 0x01, 0x06, 0x02, 0x04,
-0x01, 0x02, 0xe5, 0xe6, 0x01, 0x02, 0xe5, 0xe6,
-0x01, 0x02, 0xe5, 0xe6, 0x01, 0x02, 0xe5, 0xe6,
-0x01, 0x02, 0xe5, 0xe6, 0x01, 0x02, 0x01, 0xe6,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0xe5, 0xe6,
-0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0xe6, 0x01,
-0x02, 0xe5, 0xe6, 0x01, 0x02, 0x01, 0xe6, 0x01,
-0x02, 0x01, 0xe6, 0x01, 0xe5, 0xe5, 0x01, 0xe5,
-0x01, 0x02, 0x01, 0xe6, 0x01, 0x02, 0x02, 0x06,
-0x02, 0xe6, 0xe5, 0x09, 0x01, 0x18, 0xe5, 0x03,
-0xe5, 0xe5, 0xe6, 0x21, 0x07, 0x02, 0x03, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x01, 0x03, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x01, 0x02,
-0x01, 0x01, 0x02, 0x03, 0xe5, 0xe5, 0x01, 0x03,
-0xe5, 0xe5, 0x01, 0x03, 0x03, 0xe5, 0x01, 0x04,
-0x01, 0x07, 0x01, 0x02, 0x02, 0x01, 0x01, 0x07,
-0x01, 0x06, 0xe5, 0xe5, 0x04, 0x01, 0x01, 0x07,
-0x07, 0x01, 0x01, 0x01, 0x14, 0x09, 0x06, 0x06,
-0xe5, 0x01, 0x03, 0x1f, 0x09, 0x03, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0xe5, 0x01, 0x05, 0x03, 0x05, 0x03, 0x0b, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0x03, 0x05, 0xe5, 0x01,
-0x05, 0x09, 0xe5, 0x01, 0x01, 0xe5, 0x12, 0x09,
-0x07, 0x03, 0x01, 0x01, 0xe6, 0x0c, 0x01, 0xe5,
-0x05, 0xe5, 0xe5, 0x3b, 0x13, 0x13, 0x15, 0x17,
-0x0f, 0x05, 0x02, 0x0a, 0x1b, 0xe5, 0x16, 0xe8,
-0x0d, 0x02, 0x01, 0x01, 0x01, 0x03, 0xe6, 0x06,
-0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0xe6, 0xe5,
-0x04, 0xe6, 0xe5, 0x04, 0x01, 0x01, 0x05, 0xe6,
-0x06, 0x01, 0xe6, 0x04, 0xe6, 0x06, 0xe6, 0xe5,
-0x04, 0x01, 0x02, 0x06, 0x01, 0x01, 0x05, 0xe6,
-0x06, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x03, 0x03, 0x02, 0xe5, 0xe6,
-0x1a, 0x04, 0x02, 0x03, 0x05, 0xe5, 0x01, 0xe5,
-0x03, 0x09, 0xe5, 0xe5, 0x06, 0x09, 0x08, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0xe5, 0xe6, 0x02,
-0xe5, 0x06, 0x02, 0xe5, 0x01, 0xe5, 0x03, 0xe5,
-0x04, 0x02, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x04,
-0x05, 0x03, 0x04, 0x07, 0x01, 0x07, 0xe5, 0x02,
-0x04, 0xe5, 0x0e, 0x01, 0xe5, 0x0a, 0x09, 0x07,
-0x04, 0x04, 0x03, 0x0c, 0x06, 0x07, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x01, 0xe5, 0xe5, 0x03,
-0xe5, 0x02, 0x04, 0x01, 0xe5, 0xe5, 0x03, 0xe5,
-0x03, 0x02, 0x04, 0xe7, 0x03, 0xe5, 0x09, 0xe5,
-0x04, 0x02, 0xe5, 0x05, 0xe5, 0xe5, 0x07, 0x08,
-0x01, 0xe5, 0x20, 0x03, 0x11, 0x06, 0xe9, 0xe5,
-0x18, 0x0c, 0x01, 0x02, 0x06, 0x02, 0x05, 0xe5,
-0xe5, 0x02, 0xe5, 0x0b, 0x05, 0x10, 0x02, 0x03,
-0x05, 0x03, 0x02, 0x06, 0x0e, 0x14, 0x03, 0x05,
-0x07, 0x05, 0x08, 0x08, 0x07, 0x03, 0x03, 0x09,
-0x08, 0x01, 0x0f, 0x01, 0xe5, 0x0c, 0x01, 0x0d,
-0x01, 0x0b, 0x01, 0x01, 0x05, 0x01, 0x07, 0xe6,
-0x03, 0x04, 0x02, 0x04, 0x01, 0x11, 0x01, 0x07,
-0x01, 0x09, 0x02, 0x01, 0x02, 0x01, 0x01, 0x05,
-0x01, 0x07, 0xe8, 0x01, 0x04, 0x01, 0xe5, 0x03,
-0x01, 0x0b, 0xe5, 0x05, 0x08, 0xe7, 0x08, 0x02,
-0xe5, 0x04, 0xe5, 0x23, 0xe6, 0x0c, 0xe5, 0x04,
-0x0a, 0x0a, 0x01, 0x03, 0x03, 0x01, 0x19, 0x01,
-0x01, 0x03, 0x01, 0xe5, 0x03, 0x01, 0x01, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x0b, 0x01, 0x01,
-0x03, 0x02, 0x02, 0x02, 0x01, 0x08, 0xe5, 0x03,
-0x04, 0x05, 0x07, 0x0b, 0x07, 0x06, 0x09, 0x01,
-0x06, 0x06, 0x01, 0x01, 0x06, 0x02, 0x09, 0xe5,
-0xe6, 0x02, 0x04, 0x23, 0x08, 0xe5, 0x06, 0xe6,
-0x06, 0xe6, 0x03, 0x01, 0x01, 0xe5, 0x03, 0x03,
-0xe5, 0x07, 0xe5, 0x02, 0xe5, 0x02, 0xe5, 0x02,
-0xe5, 0x01, 0xe6, 0x02, 0x03, 0xe5, 0xe6, 0x07,
-0xe5, 0x02, 0x03, 0xe6, 0x04, 0x01, 0x01, 0x03,
-0x04, 0xe5, 0x02, 0x04, 0xe6, 0x0b, 0x0a, 0x02,
-0x0a, 0xe5, 0x21, 0x01, 0x01, 0xe5, 0x01, 0x0c,
-0x09, 0x0d, 0x0c, 0x01, 0x07, 0x01, 0x02, 0x02,
-0x01, 0x04, 0xe5, 0x02, 0x01, 0x07, 0x07, 0x01,
-0x01, 0x07, 0x01, 0x07, 0x0b, 0x04, 0x04, 0x01,
-0x07, 0x06, 0x02, 0x09, 0x01, 0x07, 0x01, 0x0d,
-0x08, 0x09, 0x09, 0x08, 0x08, 0x11, 0x0a, 0x07,
-0x09, 0x01, 0x07, 0x07, 0xe5, 0x09, 0x0b, 0x01,
-0x02, 0x02, 0x10, 0x06, 0x0f, 0x01, 0x04, 0x01,
-0x05, 0xe5, 0x01, 0x02, 0x03, 0x04, 0x07, 0x01,
-0x15, 0x26, 0x03, 0x08, 0x05, 0x01, 0x14, 0xe9,
-0x0c, 0x12, 0xe5, 0x08, 0x02, 0x05, 0xe5, 0x04,
-0x02, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x07,
-0x01, 0x05, 0x01, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0x11, 0x07, 0x05, 0xe6, 0x03, 0x01, 0xe6,
-0x01, 0xe6, 0x01, 0xe6, 0x01, 0xe5, 0xe5, 0xe5,
-0x03, 0x01, 0x02, 0x06, 0x02, 0xe6, 0x01, 0x1f,
-0x07, 0x04, 0x01, 0x03, 0x0b, 0x13, 0x01, 0x02,
-0xe5, 0x02, 0x04, 0x04, 0x09, 0x01, 0x07, 0x04,
-0x04, 0x0e, 0x04, 0x04, 0x04, 0x09, 0x01, 0x02,
-0x02, 0x0f, 0x11, 0x0a, 0x09, 0x17, 0x02, 0x01,
-0x2c, 0xe5, 0xe7, 0x06, 0x19, 0x0a, 0x02, 0x03,
-0xe7, 0x06, 0xe6, 0x03, 0x02, 0xe6, 0x05, 0x01,
-0xe5, 0x09, 0x06, 0xe6, 0x05, 0xe8, 0x04, 0xe7,
-0x05, 0x04, 0xe5, 0x05, 0x01, 0x06, 0x03, 0x08,
-0x06, 0x01, 0x01, 0x03, 0xe6, 0xe5, 0x03, 0x09,
-0xe5, 0x07, 0x02, 0x16, 0x02, 0x08, 0x0c, 0x01,
-0x01, 0x01, 0x22, 0x02, 0x04, 0xe5, 0x02, 0x0c,
-0x02, 0x0d, 0x04, 0xe5, 0x0c, 0x19, 0x03, 0x06,
-0x04, 0x05, 0x07, 0x01, 0x03, 0x05, 0x01, 0x1e,
-0x04, 0x01, 0x0c, 0x08, 0xe5, 0x05, 0x0a, 0x0c,
-0xe5, 0xe5, 0xe5, 0x04, 0x27, 0x13, 0x06, 0x09,
-0x01, 0x28, 0x01, 0x13, 0x14, 0x02, 0x31, 0x09,
-0x06, 0x0f, 0x04, 0x03, 0x01, 0xe5, 0x02, 0x0c,
-0xe5, 0x04, 0x01, 0xe5, 0xe5, 0x06, 0xe5, 0x08,
-0x09, 0xe5, 0x07, 0x09, 0xe5, 0x07, 0x07, 0x0b,
-0x07, 0x01, 0xe5, 0x07, 0x0c, 0x01, 0xe5, 0x02,
-0x01, 0x0a, 0xe6, 0x05, 0x09, 0x09, 0x09, 0x02,
-0x01, 0x04, 0x02, 0xe5, 0x02, 0x01, 0x01, 0xe5,
-0x01, 0x04, 0x01, 0x01, 0x03, 0xe5, 0x13, 0x04,
-0xe6, 0xe5, 0x0c, 0x06, 0x0c, 0x10, 0x02, 0x09,
-0x09, 0x06, 0x02, 0x13, 0x09, 0x06, 0x02, 0x0f,
-0xe5, 0xe5, 0x12, 0x03, 0x05, 0x02, 0x09, 0x06,
-0x03, 0x02, 0x01, 0xe5, 0x0b, 0x06, 0xe5, 0x04,
-0xe5, 0x0a, 0xe5, 0x02, 0x06, 0x01, 0x02, 0x03,
-0x02, 0x14, 0x17, 0x0c, 0xe5, 0xe5, 0x04, 0xe5,
-0x01, 0x10, 0xe5, 0x02, 0xe5, 0x07, 0x07, 0x17,
-0x0b, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0x14, 0x0b,
-0x03, 0xe5, 0x01, 0x03, 0x02, 0xe5, 0xe5, 0xe5,
-0x01, 0x04, 0x01, 0x0b, 0x07, 0x09, 0x04, 0xe5,
-0xe7, 0x03, 0x11, 0x1d, 0x06, 0x02, 0x06, 0x02,
-0x09, 0x05, 0xe5, 0x01, 0xe5, 0x01, 0x01, 0xe5,
-0x01, 0x06, 0xe5, 0xe5, 0x08, 0x05, 0xe5, 0x03,
-0x09, 0x09, 0x05, 0xe5, 0x01, 0x09, 0x06, 0x02,
-0x09, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x04, 0xe5,
-0xe5, 0xe5, 0x06, 0x13, 0x05, 0xe5, 0x05, 0x04,
-0xe7, 0x15, 0x13, 0x01, 0x09, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x06, 0x02, 0xe5, 0x01,
-0xe5, 0xe6, 0xe5, 0x03, 0x01, 0x02, 0xe5, 0x01,
-0x02, 0x02, 0x06, 0x02, 0x06, 0x01, 0x02, 0x06,
-0x04, 0x01, 0x02, 0x02, 0x09, 0x01, 0x01, 0x02,
-0x05, 0x03, 0x17, 0x02, 0x05, 0x04, 0x01, 0x02,
-0x03, 0x0c, 0x04, 0x01, 0x06, 0xe5, 0xe5, 0xe6,
-0xe5, 0x13, 0x03, 0x0f, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x03, 0x02, 0x02, 0x06, 0x02, 0x04, 0x01,
-0x02, 0x01, 0x01, 0xe5, 0xe5, 0x01, 0x01, 0x01,
-0xe5, 0xe5, 0x01, 0x06, 0x02, 0x04, 0x01, 0x02,
-0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0xe5,
-0xe5, 0x05, 0x02, 0x02, 0x08, 0x04, 0xe5, 0xe5,
-0x08, 0x07, 0x08, 0xe5, 0x0c, 0x05, 0x01, 0x01,
-0x03, 0x0b, 0x03, 0x04, 0x04, 0x02, 0x03, 0x01,
-0x15, 0x0e, 0x04, 0x01, 0x09, 0x05, 0x01, 0x01,
-0x02, 0x04, 0x01, 0x09, 0x02, 0x06, 0x02, 0x01,
-0x04, 0x02, 0x04, 0x01, 0x09, 0x0b, 0x04, 0x04,
-0x05, 0x01, 0x01, 0x04, 0x02, 0x04, 0x02, 0x03,
-0x07, 0x01, 0x02, 0x06, 0x02, 0x02, 0x01, 0x09,
-0x01, 0x02, 0x04, 0x01, 0x04, 0x0e, 0x05, 0x07,
-0x01, 0xe5, 0xe6, 0x15, 0x06, 0x0c, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x04, 0x02, 0x01,
-0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x06,
-0x04, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x04, 0x01,
-0x02, 0x01, 0xe5, 0xe5, 0x02, 0xe5, 0x03, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x01, 0xe5, 0x03, 0x01,
-0x01, 0xe5, 0xe6, 0x0a, 0x0d, 0x02, 0x02, 0xe5,
-0x1e, 0x2f, 0x02, 0x06, 0x02, 0x06, 0xe5, 0x29,
-0x07, 0xe5, 0x09, 0x04, 0x02, 0xe5, 0x11, 0x09,
-0xe5, 0x07, 0x02, 0x03, 0x09, 0x02, 0x01, 0x19,
-0x01, 0xe5, 0xe7, 0x2e, 0x20, 0xe5, 0x07, 0x05,
-0xe5, 0x01, 0xe5, 0x2e, 0x12, 0xe5, 0x01, 0xe5,
-0x04, 0x09, 0x04, 0x04, 0x02, 0x06, 0x02, 0x05,
-0xe5, 0x07, 0xe5, 0x01, 0x01, 0x07, 0x11, 0x05,
-0xe5, 0x0d, 0x09, 0x04, 0x01, 0x02, 0x09, 0x06,
-0x02, 0x09, 0x09, 0x06, 0x02, 0x04, 0xe6, 0x01,
-0xe6, 0x06, 0x09, 0x06, 0x02, 0x04, 0x01, 0x04,
-0x09, 0x04, 0x01, 0x02, 0x09, 0xe5, 0x07, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x03, 0xe5, 0xe5,
-0x01, 0x03, 0x05, 0xe5, 0x04, 0x02, 0xe5, 0x03,
-0xe5, 0x01, 0x03, 0x05, 0x04, 0x01, 0x06, 0x01,
-0x01, 0xe5, 0x1f, 0x09, 0x06, 0x02, 0x09, 0x10,
-0x0c, 0x09, 0x09, 0x08, 0xe5, 0x08, 0x15, 0x13,
-0x09, 0x09, 0x09, 0x12, 0xe5, 0x05, 0x02, 0x13,
-0x04, 0x05, 0xe5, 0x1c, 0x09, 0x07, 0x02, 0x09,
-0x1e, 0x07, 0x09, 0x09, 0x0b, 0x02, 0x12, 0x0f,
-0x02, 0x0a, 0x09, 0x09, 0x0f, 0x03, 0x05, 0x02,
-0x12, 0x0a, 0xe8, 0x22, 0x04, 0x04, 0x02, 0x01,
-0x04, 0x02, 0x06, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x04, 0x02, 0x06, 0xe7, 0xe5, 0x03, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x01, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x06, 0x02, 0x06, 0xe7, 0xe5,
-0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x04, 0x02, 0x04, 0x01,
-0xe7, 0x03, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x1a,
-0x01, 0x14, 0x09, 0x02, 0x02, 0x06, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x01, 0x01, 0x07, 0x01,
-0x02, 0x01, 0xe5, 0x01, 0xe5, 0x04, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x09, 0x01, 0x05,
-0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x02, 0x02,
-0x01, 0xe6, 0x04, 0x01, 0x01, 0x01, 0x03, 0x01,
-0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0xe5, 0x01,
-0x01, 0x01, 0x01, 0x03, 0x01, 0xe6, 0x03, 0xe5,
-0xe7, 0x01, 0x02, 0x02, 0x19, 0xe7, 0x11, 0x0f,
-0x04, 0x04, 0x04, 0x04, 0x09, 0x0e, 0x04, 0x04,
-0x05, 0x03, 0x04, 0x04, 0x04, 0x09, 0x04, 0x03,
-0xe5, 0xe5, 0x03, 0x04, 0x09, 0x35, 0xe5, 0x01,
-0x01, 0x04, 0x0c, 0x01, 0x18, 0x03, 0x15, 0xe5,
-0x07, 0xe6, 0x06, 0xe6, 0x04, 0xe8, 0x04, 0xe8,
-0x04, 0xe7, 0x05, 0xe8, 0x04, 0xe7, 0x05, 0xe8,
-0x04, 0xe8, 0x04, 0xe8, 0x05, 0xe6, 0x03, 0x04,
-0xe6, 0x01, 0x03, 0xe8, 0xe5, 0x03, 0xe7, 0x01,
-0x03, 0xe6, 0x05, 0x01, 0xe5, 0x05, 0xe7, 0x05,
-0x01, 0xe5, 0x01, 0x03, 0xe8, 0xe6, 0x03, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0xe5, 0x19, 0x08, 0xe5, 0x07, 0xe5, 0x07,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x1e, 0x08, 0x09, 0x09, 0x09, 0x0a, 0x08, 0x07,
-0x01, 0xe5, 0x17, 0xe7, 0x20, 0x0b, 0xe5, 0xe6,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0xe5, 0x03, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0x01, 0x01, 0x07,
-0x03, 0x05, 0xe5, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x03, 0x01, 0x03, 0xe5, 0x03, 0x03, 0xe5, 0x03,
-0xe5, 0x01, 0xe5, 0x03, 0x04, 0x01, 0x02, 0xe5,
-0x01, 0x05, 0x04, 0x04, 0x04, 0x01, 0x19, 0x01,
-0xe6, 0x18, 0x08, 0xe5, 0x07, 0x04, 0xe5, 0x02,
-0x04, 0xe5, 0x02, 0x04, 0xe5, 0x02, 0x04, 0xe5,
-0x02, 0x04, 0xe5, 0x06, 0xe6, 0x02, 0x03, 0xe6,
-0x02, 0x04, 0xe5, 0x02, 0x08, 0x02, 0x04, 0xe5,
-0x02, 0x04, 0xe5, 0x08, 0x08, 0xe5, 0x02, 0x03,
-0x01, 0x03, 0x04, 0xe5, 0x02, 0x03, 0x01, 0x08,
-0xe5, 0x03, 0x08, 0x07, 0x01, 0xe5, 0x16, 0x01,
-0xe6, 0x02, 0x16, 0x06, 0x02, 0x08, 0x03, 0x01,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x03, 0x01,
-0xe5, 0x01, 0x03, 0x01, 0xe6, 0x04, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x04, 0x01, 0x08, 0x01,
-0xe5, 0x01, 0x03, 0xe7, 0x01, 0x03, 0xe7, 0x05,
-0xe8, 0x05, 0xe7, 0x04, 0xe8, 0x06, 0x03, 0x03,
-0x01, 0xe5, 0x09, 0x09, 0x01, 0xe5, 0x17, 0x01,
-0xe5, 0x16, 0xe5, 0xe5, 0x0d, 0x0b, 0xe5, 0xe5,
-0x02, 0x02, 0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0xe5,
-0xe5, 0x05, 0x1d, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x13, 0xe5, 0x07, 0xe5, 0x06, 0x01, 0x08, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x08, 0x10, 0x03, 0x20,
-0x02, 0xe5, 0x10, 0x01, 0xe6, 0xe5, 0x02, 0x01,
-0xe5, 0x04, 0xe5, 0xe7, 0x04, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01,
-0x07, 0xe6, 0x01, 0x04, 0x01, 0x07, 0x01, 0x06,
-0xe5, 0xe6, 0x07, 0xe6, 0xe5, 0x04, 0x01, 0x07,
-0x01, 0x01, 0x05, 0xe6, 0x06, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01,
-0x01, 0x01, 0x03, 0x01, 0x01, 0x04, 0xe5, 0xe5,
-0x01, 0x04, 0x01, 0x0b, 0xe5, 0xe5, 0x18, 0x09,
-0xe5, 0x01, 0x09, 0x04, 0x09, 0x02, 0x06, 0x02,
-0xe5, 0x0a, 0x01, 0x02, 0xe5, 0x0a, 0x01, 0x01,
-0x01, 0x02, 0x06, 0x02, 0x06, 0x0e, 0x03, 0x06,
-0x06, 0xe5, 0x04, 0x16, 0xe5, 0x05, 0x0b, 0xe5,
-0x08, 0x08, 0xe5, 0x17, 0xe5, 0xe6, 0x14, 0x02,
-0x06, 0xe5, 0x04, 0x09, 0x01, 0x07, 0x08, 0x14,
-0x12, 0x01, 0x05, 0x04, 0x04, 0x03, 0x0a, 0x0c,
-0x03, 0x05, 0xe5, 0x02, 0x02, 0x09, 0x07, 0x05,
-0x01, 0x0b, 0x0a, 0x02, 0xe5, 0x04, 0x03, 0x03,
-0x0c, 0x08, 0x01, 0x01, 0xe5, 0x19, 0x08, 0x03,
-0x09, 0x01, 0x0e, 0x0e, 0x0a, 0xe5, 0xe5, 0x05,
-0x09, 0x03, 0x03, 0x01, 0x06, 0x02, 0x13, 0x08,
-0xe5, 0x03, 0x1d, 0x0a, 0x06, 0x01, 0x01, 0x09,
-0x06, 0x02, 0xe5, 0x02, 0x09, 0x07, 0xe5, 0x01,
-0x04, 0x03, 0x17, 0x0a, 0xe6, 0x06, 0xe6, 0x01,
-0x03, 0xe7, 0x03, 0x02, 0xe6, 0x05, 0x05, 0x07,
-0x02, 0x03, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x03,
-0x02, 0xe5, 0x01, 0x07, 0xe6, 0x06, 0x08, 0xe7,
-0x02, 0xe5, 0x01, 0x01, 0xe5, 0x05, 0x01, 0x07,
-0x01, 0x04, 0x06, 0x02, 0x02, 0x01, 0x05, 0x01,
-0x01, 0x02, 0x01, 0x04, 0x17, 0xe5, 0xe5, 0xe6,
-0x01, 0x2d, 0x15, 0x1b, 0x01, 0x11, 0x02, 0x08,
-0x01, 0x02, 0x09, 0x0a, 0x07, 0x09, 0x02, 0x04,
-0x01, 0x02, 0x06, 0x02, 0x03, 0x08, 0x01, 0x02,
-0x01, 0x05, 0xe5, 0xe5, 0xe5, 0x02, 0x09, 0x0f,
-0x02, 0x01, 0x01, 0xe5, 0x08, 0x0e, 0x09, 0x06,
-0xe5, 0x04, 0x03, 0x02, 0x01, 0x04, 0x09, 0x06,
-0x0e, 0x04, 0x02, 0x02, 0x06, 0x01, 0x07, 0x05,
-0x03, 0x07, 0x05, 0xe5, 0xe5, 0x01, 0x07, 0x09,
-0x09, 0x05, 0x0d, 0x0f, 0x03, 0x05, 0x03, 0x03,
-0x05, 0x08, 0x0a, 0x04, 0xe5, 0x13, 0x01, 0x02,
-0x02, 0xe5, 0xe5, 0x13, 0x01, 0x01, 0x02, 0x0a,
-0x15, 0x04, 0x0e, 0x04, 0x0c, 0x0d, 0x03, 0x02,
-0x0f, 0x0c, 0x03, 0xe5, 0x0c, 0x09, 0x01, 0x02,
-0x02, 0x09, 0x05, 0x11, 0x09, 0x03, 0x03, 0x06,
-0x07, 0x11, 0x0b, 0x0a, 0x12, 0x03, 0x07, 0xe6,
-0x0e, 0x0b, 0x0c, 0x09, 0x07, 0x08, 0x03, 0x05,
-0x10, 0x04, 0x23, 0x01, 0x13, 0x0c, 0x01, 0xe6,
-0x1f, 0x01, 0x01, 0x04, 0xe5, 0x07, 0x0a, 0xe6,
-0x03, 0x02, 0xe5, 0x07, 0xe7, 0x05, 0xe8, 0x02,
-0x02, 0x08, 0x02, 0x06, 0xe5, 0x07, 0x01, 0xe5,
-0x0a, 0x0d, 0x02, 0xe6, 0x0b, 0xe5, 0x0d, 0x01,
-0x09, 0x02, 0x06, 0xe5, 0x0d, 0x09, 0x14, 0xe5,
-0x02, 0x05, 0x21, 0x15, 0x07, 0xe5, 0x03, 0x06,
-0x07, 0x05, 0x04, 0x05, 0x01, 0x07, 0xe6, 0xe5,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0x1e, 0x1d, 0x17,
-0x27, 0x02, 0xe6, 0x11, 0x05, 0x03, 0x09, 0x09,
-0x02, 0x03, 0x05, 0x0d, 0x03, 0x02, 0x01, 0x03,
-0x05, 0x03, 0x02, 0x06, 0x05, 0x03, 0xe5, 0x04,
-0x05, 0x08, 0xe5, 0x03, 0x06, 0x03, 0x0c, 0xe5,
-0x04, 0x03, 0x01, 0x06, 0x03, 0x01, 0x04, 0x04,
-0x06, 0x09, 0x08, 0x03, 0x0a, 0x09, 0x07, 0x19,
-0x0b, 0xe5, 0x08, 0x09, 0x09, 0x01, 0x07, 0x06,
-0x01, 0x07, 0x0c, 0x06, 0x01, 0x0d, 0x06, 0x01,
-0x06, 0x02, 0x07, 0x01, 0x09, 0x03, 0x03, 0x01,
-0x08, 0xe5, 0x05, 0xe5, 0xe5, 0x04, 0xe5, 0x12,
-0x09, 0x15, 0x02, 0xe5, 0xe6, 0x01, 0x02, 0x14,
-0x0c, 0x13, 0x02, 0x04, 0x10, 0x04, 0x06, 0x13,
-0x0a, 0x01, 0x0b, 0x06, 0x2f, 0x05, 0x03, 0x13,
-0x0b, 0x0c, 0x02, 0x03, 0x03, 0xe5, 0xe6, 0x08,
-0xe5, 0x04, 0xe5, 0x12, 0xe5, 0x07, 0x02, 0x01,
-0x04, 0x09, 0xe5, 0x03, 0x0d, 0xe5, 0xe6, 0x01,
-0x02, 0xe5, 0x07, 0x06, 0x03, 0x04, 0x03, 0x02,
-0xe5, 0x01, 0xe5, 0x02, 0xe5, 0x07, 0xe5, 0x07,
-0x09, 0xe5, 0x11, 0x09, 0xe5, 0x07, 0x02, 0x01,
-0x07, 0xe5, 0xe5, 0x02, 0x01, 0xe5, 0x01, 0x04,
-0x01, 0x01, 0x03, 0xe5, 0x09, 0x04, 0xe6, 0x02,
-0x05, 0x01, 0x17, 0x0a, 0x02, 0x01, 0x0a, 0xe5,
-0xe5, 0x05, 0x05, 0xe5, 0x08, 0xe5, 0xe5, 0x01,
-0x06, 0xe5, 0x01, 0x05, 0x06, 0x01, 0xe5, 0x02,
-0xe5, 0xe6, 0x02, 0x03, 0xe5, 0xe6, 0xe5, 0x02,
-0xe5, 0x07, 0x09, 0x05, 0x06, 0x01, 0x04, 0x05,
-0xe5, 0x01, 0x02, 0x01, 0x04, 0x02, 0xe5, 0xe7,
-0x03, 0xe5, 0xe7, 0x03, 0x01, 0xe5, 0x03, 0xe6,
-0x0d, 0x01, 0x02, 0x01, 0xe6, 0x03, 0x0c, 0x27,
-0xe5, 0x05, 0x07, 0x06, 0x01, 0xe5, 0xe5, 0xe5,
-0x09, 0x06, 0x03, 0xe5, 0x0b, 0x0a, 0xe5, 0x19,
-0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0x16, 0x03, 0xe5,
-0x01, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x0d, 0x07, 0x04, 0x02, 0xe5, 0x13,
-0xe5, 0x28, 0x09, 0x09, 0x01, 0x03, 0xe5, 0x01,
-0x09, 0x09, 0x09, 0x0b, 0x05, 0xe5, 0x01, 0x10,
-0x02, 0x01, 0x04, 0x16, 0x09, 0x01, 0x04, 0xe5,
-0xe5, 0xe5, 0x03, 0x02, 0x01, 0x07, 0x10, 0xe5,
-0x04, 0x02, 0x03, 0xe5, 0x0a, 0x0a, 0x09, 0x01,
-0x02, 0x09, 0x04, 0x01, 0x02, 0x06, 0x02, 0x03,
-0xe5, 0x03, 0x09, 0x09, 0xe5, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x03, 0x06,
-0x04, 0x09, 0xe5, 0x01, 0x05, 0x02, 0x06, 0x02,
-0x0a, 0xe5, 0xe5, 0x01, 0x06, 0x02, 0x09, 0x04,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x03, 0xe5,
-0x03, 0x14, 0xe5, 0xe5, 0xe5, 0x01, 0x07, 0xe6,
-0x0d, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x0e, 0x01,
-0x01, 0x05, 0x03, 0x02, 0xe7, 0x02, 0x09, 0x09,
-0x05, 0x03, 0x02, 0x01, 0x04, 0x05, 0x03, 0x07,
-0x03, 0x09, 0x13, 0x05, 0x05, 0x01, 0xe6, 0xe5,
-0xe5, 0x04, 0x03, 0x01, 0x02, 0x04, 0x05, 0x01,
-0x01, 0x02, 0x01, 0xe5, 0x02, 0x03, 0x01, 0x04,
-0x12, 0x04, 0x01, 0x02, 0x1e, 0x01, 0x0c, 0xe6,
-0x01, 0x01, 0x03, 0xe5, 0x03, 0x01, 0x05, 0x03,
-0x01, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x01, 0x0b,
-0x02, 0x04, 0x06, 0x02, 0x0b, 0x09, 0x06, 0x0c,
-0x01, 0x02, 0x0e, 0x01, 0x02, 0x01, 0x01, 0x02,
-0x04, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x01, 0x02, 0x01, 0xe5, 0x05, 0x12,
-0x01, 0xe5, 0xe5, 0x01, 0x1e, 0x01, 0x01, 0xe7,
-0x05, 0xe5, 0x03, 0x01, 0x01, 0xe5, 0x03, 0x04,
-0x01, 0x02, 0x04, 0x04, 0x01, 0x01, 0xe5, 0xe5,
-0x01, 0x03, 0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0xe5,
-0x01, 0x03, 0xe5, 0xe8, 0x02, 0xe5, 0x05, 0x03,
-0xe5, 0x03, 0x03, 0xe8, 0x04, 0xe5, 0x03, 0x01,
-0x01, 0xe5, 0x0d, 0x01, 0x01, 0xe5, 0xe5, 0x01,
-0x03, 0xe5, 0xe6, 0xe5, 0xe5, 0xe6, 0xe8, 0xe5,
-0xe6, 0xe6, 0xe5, 0xe5, 0x01, 0xe6, 0x01, 0x04,
-0x01, 0xe5, 0x11, 0x01, 0x01, 0xe6, 0x1a, 0x02,
-0x03, 0x09, 0x09, 0x09, 0x04, 0x04, 0x02, 0xe5,
-0x04, 0x04, 0x04, 0x09, 0x02, 0x01, 0x04, 0x02,
-0xe5, 0x04, 0x0b, 0x09, 0x02, 0xe5, 0x04, 0x02,
-0x06, 0x0c, 0x06, 0x04, 0x04, 0x04, 0x04, 0x09,
-0x02, 0x01, 0x04, 0x0e, 0x11, 0x01, 0x01, 0xe5,
-0x1d, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x01, 0x03, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0x01, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x01, 0xe6, 0x02,
-0xe5, 0x08, 0x02, 0xe6, 0x02, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03, 0xe5, 0x07,
-0xe5, 0x01, 0x13, 0xe5, 0x01, 0xe5, 0x0a, 0x02,
-0x04, 0x01, 0x02, 0x02, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe7, 0x05, 0xe7, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0x03, 0x03, 0xe5, 0xe6,
-0x01, 0x02, 0xe5, 0x07, 0xe5, 0x03, 0x05, 0xe5,
-0x04, 0x02, 0xe5, 0x07, 0xe5, 0x02, 0x01, 0x02,
-0xe5, 0x07, 0x09, 0xe5, 0x07, 0xe5, 0xe5, 0x05,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe6, 0x03,
-0x02, 0xe5, 0x03, 0x03, 0x04, 0x01, 0x06, 0xe5,
-0x02, 0x0b, 0xe5, 0x08, 0x27, 0x30, 0xe5, 0x1d,
-0xe5, 0x12, 0x09, 0x09, 0x1a, 0x02, 0x06, 0x09,
-0x02, 0x18, 0x05, 0xe5, 0x0a, 0x07, 0x11, 0x09,
-0x09, 0x01, 0x1b, 0x09, 0x09, 0x03, 0x05, 0x09,
-0x06, 0x04, 0x03, 0x05, 0x09, 0x01, 0x07, 0x03,
-0x07, 0x07, 0x09, 0x09, 0x01, 0x07, 0x0c, 0x06,
-0x16, 0xe5, 0xe6, 0x0e, 0x0e, 0x02, 0x01, 0xe7,
-0x02, 0xe5, 0xe8, 0x03, 0x01, 0xe7, 0x05, 0xe7,
-0xe5, 0x01, 0x01, 0xe7, 0x02, 0x02, 0xe7, 0x05,
-0xe7, 0x03, 0x01, 0xe7, 0x05, 0xe7, 0x03, 0x01,
-0xe7, 0x02, 0x02, 0x01, 0xe7, 0x05, 0xe7, 0x02,
-0xe5, 0xe8, 0x02, 0x02, 0xe7, 0x0f, 0xe7, 0x02,
-0x02, 0xe7, 0x05, 0xe7, 0x05, 0xe5, 0xe5, 0x05,
-0xe7, 0x03, 0x01, 0x02, 0x15, 0xe5, 0xe6, 0x0c,
-0x02, 0x09, 0x06, 0x01, 0xe6, 0x04, 0x01, 0xe6,
-0x01, 0x02, 0x01, 0xe6, 0x03, 0xe5, 0x01, 0xe5,
-0x04, 0x01, 0xe6, 0x06, 0xe6, 0x01, 0x02, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x06, 0x01, 0xe6, 0x04, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x02, 0xe5, 0x08, 0x01,
-0xe5, 0x01, 0x02, 0xe5, 0x06, 0xe6, 0x06, 0xe6,
-0x04, 0x02, 0xe5, 0x04, 0x01, 0xe6, 0x04, 0x01,
-0xe6, 0x16, 0x02, 0xe5, 0x0d, 0x03, 0xe5, 0x01,
-0x09, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x02, 0x04, 0x01, 0x04, 0x03, 0x08, 0xe5,
-0x13, 0x02, 0x05, 0x0f, 0x01, 0xe5, 0xe5, 0x03,
-0x01, 0x04, 0x08, 0x08, 0xe5, 0x11, 0x01, 0x07,
-0xe5, 0x07, 0x01, 0x01, 0x02, 0xe5, 0xe5, 0x08,
-0x01, 0x02, 0x02, 0x01, 0x18, 0x02, 0xe5, 0x0c,
-0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6, 0xe5,
-0x04, 0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe6, 0x01, 0x04, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x02, 0x03, 0xe6, 0x01, 0x01,
-0xe5, 0x01, 0xe8, 0x06, 0xe5, 0x05, 0x01, 0xe6,
-0x04, 0xe7, 0x07, 0xe6, 0x04, 0xe7, 0x01, 0x03,
-0x01, 0xe5, 0x01, 0x03, 0xe8, 0xe5, 0x04, 0xe6,
-0xe5, 0x04, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5,
-0x08, 0x01, 0x0f, 0x0a, 0x09, 0x09, 0x09, 0x08,
-0x07, 0x01, 0xe5, 0x07, 0xe6, 0x07, 0xe5, 0x04,
-0x01, 0xe5, 0x08, 0x06, 0x01, 0xe5, 0x02, 0x07,
-0x10, 0x01, 0xe6, 0x06, 0x04, 0x02, 0x0b, 0x09,
-0xe6, 0x06, 0x09, 0x0a, 0x08, 0x18, 0xe5, 0xe6,
-0x0c, 0x18, 0x07, 0x01, 0x09, 0x04, 0x04, 0x04,
-0x01, 0x02, 0x06, 0x02, 0x09, 0x04, 0x01, 0xe5,
-0xe5, 0x08, 0x04, 0x01, 0xe5, 0xe5, 0x02, 0x05,
-0x01, 0x03, 0x05, 0x03, 0xe5, 0xe5, 0x01, 0x03,
-0xe5, 0x03, 0xe5, 0x01, 0x02, 0x02, 0x03, 0xe5,
-0x03, 0xe5, 0x01, 0x02, 0x02, 0x06, 0x02, 0xe5,
-0x01, 0xe5, 0x03, 0x04, 0x04, 0x04, 0x01, 0x02,
-0x16, 0xe8, 0x0d, 0x0a, 0x09, 0x13, 0x08, 0x0a,
-0x08, 0x1e, 0x11, 0x06, 0xe6, 0x08, 0x07, 0x01,
-0x03, 0x05, 0x09, 0x03, 0x04, 0xe5, 0x02, 0x03,
-0x01, 0x03, 0x04, 0xe5, 0x0d, 0x06, 0x01, 0x19,
-0xe5, 0xe5, 0x02, 0x09, 0x0c, 0x24, 0x15, 0x2c,
-0x01, 0x08, 0xe7, 0x05, 0xe7, 0x05, 0xe8, 0x04,
-0x01, 0xe5, 0x05, 0xe8, 0x04, 0xe7, 0x01, 0x05,
-0x03, 0x03, 0x01, 0xe5, 0x09, 0x09, 0x01, 0x18,
-0x02, 0xe5, 0x16, 0xe5, 0xe5, 0x03, 0x0f, 0x03,
-0x15, 0xe5, 0xe5, 0x0f, 0x02, 0x10, 0x02, 0x06,
-0x02, 0x01, 0x06, 0xe5, 0xe5, 0x23, 0x27, 0xe5,
-0xe5, 0x07, 0xe6, 0x04, 0xe5, 0xe5, 0x16, 0xe5,
-0xe6, 0x10, 0x01, 0x01, 0x02, 0x02, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x05, 0x01, 0xe7,
-0x04, 0xe5, 0xe5, 0x04, 0x01, 0xe6, 0x03, 0x02,
-0x01, 0x05, 0x03, 0x01, 0x07, 0xe6, 0x06, 0xe6,
-0x06, 0x01, 0x03, 0x03, 0x01, 0xe5, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x01, 0x04,
-0xe7, 0x01, 0x07, 0xe8, 0x08, 0x0f, 0xe5, 0x07,
-0xe5, 0x08, 0xe5, 0xe6, 0x03, 0xe5, 0x01, 0x0e,
-0xe5, 0x01, 0x1b, 0xe5, 0x01, 0x05, 0x01, 0x04,
-0x02, 0x07, 0x03, 0xe5, 0x02, 0x04, 0x03, 0x05,
-0xe5, 0x06, 0xe5, 0xe5, 0xe5, 0x05, 0x07, 0xe5,
-0x02, 0x04, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x04,
-0x03, 0x08, 0xe5, 0x04, 0x0e, 0x02, 0xe5, 0x01,
-0xe5, 0xe5, 0x08, 0x09, 0x01, 0x06, 0x02, 0x01,
-0x05, 0x01, 0x02, 0x03, 0x02, 0xe5, 0xe5, 0x0c,
-0x0a, 0x06, 0x01, 0x0a, 0x01, 0x02, 0x01, 0x02,
-0xe5, 0x07, 0x01, 0x06, 0x04, 0x04, 0x02, 0xe5,
-0x09, 0x0a, 0x02, 0x02, 0x0d, 0xe5, 0xe5, 0x05,
-0x02, 0x02, 0xe5, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x02, 0x01, 0x02, 0xe5, 0xe5,
-0xe5, 0xe5, 0x0f, 0x02, 0xe7, 0xe5, 0xe5, 0x15,
-0x0a, 0xe5, 0x01, 0xe5, 0x0a, 0x09, 0x09, 0x02,
-0x0f, 0xe5, 0x12, 0x06, 0x02, 0x05, 0x01, 0x01,
-0x0b, 0x09, 0x07, 0x01, 0xe5, 0x07, 0x09, 0xe5,
-0x08, 0x09, 0x06, 0xe5, 0x02, 0x0e, 0x07, 0x08,
-0x0c, 0x01, 0xe7, 0x06, 0xe5, 0x05, 0x08, 0x04,
-0x02, 0x01, 0x11, 0xe6, 0xe5, 0x12, 0x04, 0x05,
-0x04, 0x01, 0xe6, 0x01, 0x07, 0x04, 0x01, 0x11,
-0xe5, 0x01, 0x01, 0x05, 0x01, 0x0a, 0x10, 0x01,
-0xe5, 0x02, 0x12, 0xe5, 0x04, 0x06, 0xe5, 0x05,
-0x01, 0x01, 0x02, 0x1e, 0xe5, 0xe5, 0xe5, 0x17,
-0x0a, 0x04, 0x01, 0x08, 0x01, 0x07, 0x09, 0x1b,
-0x01, 0x1d, 0x01, 0x01, 0x06, 0x02, 0x01, 0x0f,
-0x0b, 0x01, 0x03, 0x1f, 0x08, 0x01, 0xe5, 0x01,
-0xe5, 0x02, 0x07, 0x09, 0x01, 0x09, 0xe8, 0x11,
-0x0d, 0x05, 0x0f, 0x04, 0x04, 0x04, 0x04, 0x02,
-0x01, 0xe5, 0x02, 0x02, 0x06, 0x01, 0x07, 0x09,
-0x03, 0xe5, 0x03, 0x02, 0x04, 0x03, 0x02, 0x05,
-0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe5, 0x08, 0x09, 0x01, 0x17,
-0x09, 0x11, 0xe9, 0x19, 0x09, 0x03, 0x02, 0x02,
-0x05, 0xe5, 0xe6, 0x02, 0x02, 0x01, 0xe6, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01,
-0x03, 0x03, 0x01, 0x07, 0x01, 0x06, 0x02, 0xe5,
-0x03, 0x03, 0x09, 0x09, 0x09, 0x04, 0x01, 0xe5,
-0x0a, 0xe5, 0x02, 0x05, 0x01, 0x0b, 0x07, 0x0a,
-0x0c, 0x01, 0x07, 0xe5, 0xe6, 0x02, 0x11, 0x10,
-0x06, 0x03, 0x06, 0x02, 0x06, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0x01, 0x07, 0x03,
-0x05, 0xe5, 0x04, 0x03, 0x03, 0x05, 0x09, 0x05,
-0x03, 0x06, 0x02, 0x02, 0x01, 0x09, 0x04, 0x20,
-0x20, 0xe7, 0x07, 0x12, 0x02, 0x03, 0x02, 0x04,
-0xe8, 0x02, 0x0f, 0x02, 0x06, 0x06, 0xe6, 0x03,
-0x02, 0xe6, 0xe5, 0xe5, 0xe5, 0x15, 0x0b, 0x0e,
-0x01, 0x09, 0x02, 0x0e, 0x0e, 0x09, 0x09, 0x06,
-0x01, 0x01, 0x04, 0x02, 0xe5, 0x0c, 0x0b, 0x03,
-0x11, 0xe5, 0x0e, 0x09, 0x07, 0x09, 0x11, 0x03,
-0x09, 0x05, 0x08, 0x07, 0x07, 0x04, 0x02, 0x03,
-0x1d, 0x15, 0x07, 0x09, 0x08, 0x12, 0x01, 0x02,
-0x16, 0xe5, 0xe6, 0xe5, 0x0b, 0x24, 0x02, 0x01,
-0x07, 0x03, 0x05, 0x09, 0x02, 0x06, 0x06, 0x02,
-0x04, 0x04, 0x06, 0x02, 0x06, 0x02, 0x01, 0x09,
-0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x04, 0x03,
-0x01, 0x03, 0x06, 0xe5, 0xe5, 0x02, 0x03, 0x01,
-0x09, 0x04, 0x01, 0x02, 0x04, 0x01, 0x06, 0x09,
-0xe5, 0x13, 0xe7, 0x0e, 0x01, 0x14, 0x0e, 0x01,
-0x02, 0x02, 0x01, 0x01, 0x07, 0x01, 0x05, 0x01,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x03, 0x01, 0x01, 0xe5, 0xe5, 0x01, 0x05,
-0x02, 0x02, 0x02, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01,
-0x06, 0x02, 0x06, 0xe5, 0xe5, 0x04, 0xe5, 0x06,
-0x01, 0xe5, 0x07, 0xe5, 0x17, 0x09, 0xe5, 0xe5,
-0x01, 0x02, 0x0a, 0x02, 0x21, 0x09, 0x09, 0x09,
-0x03, 0x05, 0x08, 0xe5, 0x08, 0x09, 0x0d, 0x09,
-0x09, 0x04, 0x04, 0x01, 0x07, 0x02, 0x05, 0x0a,
-0x01, 0x06, 0x05, 0x02, 0x0a, 0x03, 0x22, 0xe5,
-0xe5, 0x06, 0xe5, 0x04, 0xe6, 0x1b, 0x05, 0x03,
-0x05, 0x09, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x05, 0xe5, 0x01, 0x03, 0x07, 0x03,
-0x02, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x02, 0x02, 0xe5, 0xe5, 0x04, 0xe5, 0x01,
-0x03, 0x02, 0xe5, 0xe5, 0x02, 0x09, 0x0f, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x0e, 0x01, 0xe5,
-0x01, 0xe5, 0x02, 0x05, 0xe5, 0xe6, 0x1e, 0x08,
-0x01, 0x01, 0xe5, 0x03, 0x09, 0x01, 0x01, 0xe5,
-0x03, 0xe5, 0x02, 0xe5, 0x02, 0xe5, 0x07, 0x01,
-0x01, 0xe5, 0x03, 0x03, 0xe5, 0x03, 0xe5, 0x09,
-0xe5, 0x01, 0xe5, 0x03, 0x09, 0x09, 0xe5, 0xe5,
-0x05, 0x04, 0x01, 0x02, 0x09, 0xe5, 0x02, 0x01,
-0x01, 0xe6, 0x0f, 0x01, 0xe5, 0x05, 0x03, 0x05,
-0x0b, 0x01, 0x04, 0xe6, 0xe5, 0x01, 0x0a, 0x01,
-0x1e, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x01, 0x04,
-0x04, 0x04, 0x02, 0x01, 0x06, 0x04, 0x04, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x04, 0x04, 0x04, 0x02,
-0x01, 0x04, 0x01, 0xe5, 0xe5, 0x03, 0x02, 0x01,
-0x02, 0x04, 0x0b, 0xe5, 0xe5, 0xe5, 0x01, 0x04,
-0x09, 0x06, 0xe5, 0x02, 0x04, 0x01, 0x01, 0x0d,
-0x24, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0x02, 0x06, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x0f, 0x02, 0x01, 0x07, 0x09, 0x06, 0x06, 0x02,
-0xe6, 0xe6, 0x08, 0x01, 0x02, 0x16, 0x04, 0x01,
-0x02, 0x06, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x06,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x06, 0x02, 0x01,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x04, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0x06, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x04, 0x04, 0x09, 0x02, 0x01, 0x08,
-0xe5, 0x08, 0x07, 0x07, 0xe7, 0xe5, 0x08, 0x02,
-0xe5, 0x02, 0x01, 0x02, 0x14, 0x01, 0x01, 0x05,
-0x03, 0x05, 0x03, 0x02, 0x01, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x03, 0x07, 0x03, 0x05, 0x03, 0x02, 0x01,
-0xe5, 0x02, 0x02, 0xe7, 0x02, 0x02, 0xe7, 0x02,
-0x02, 0xe7, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x05,
-0x03, 0x0f, 0x01, 0x01, 0x03, 0x01, 0x03, 0x05,
-0x03, 0x09, 0x04, 0x01, 0x0f, 0x16, 0x01, 0x02,
-0x01, 0x07, 0x03, 0xe5, 0x03, 0x06, 0x01, 0xe5,
-0x02, 0x03, 0x01, 0x09, 0x03, 0x05, 0x09, 0x03,
-0xe5, 0xe5, 0x01, 0x0b, 0x04, 0x04, 0x09, 0x09,
-0x04, 0x04, 0x05, 0xe5, 0x01, 0x04, 0xe6, 0x01,
-0x0b, 0x0e, 0x01, 0xe5, 0xe5, 0x06, 0x04, 0x04,
-0x09, 0xe5, 0x03, 0x01, 0xe7, 0xe6, 0x09, 0x17,
-0xe5, 0xe8, 0xe5, 0xe6, 0xe5, 0xe5, 0x01, 0x02,
-0x01, 0x01, 0x02, 0x01, 0xe7, 0x03, 0x02, 0x01,
-0x01, 0x02, 0x01, 0xe5, 0x05, 0x02, 0x06, 0x01,
-0xe5, 0xe5, 0xe5, 0x01, 0x02, 0x01, 0xe6, 0x01,
-0x01, 0xe5, 0x07, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5, 0xe5,
-0xe6, 0xe5, 0x06, 0x09, 0x09, 0x0a, 0xe5, 0x11,
-0x09, 0x02, 0x03, 0x09, 0x02, 0x02, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x05,
-0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x06, 0x02, 0x06,
-0x0c, 0xe5, 0x1b, 0x01, 0xe5, 0xe5, 0x09, 0x09,
-0x01, 0x07, 0xe5, 0x03, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x06, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0x2d, 0xe6, 0x06, 0x02, 0x02, 0x05,
-0x03, 0x09, 0xe5, 0x07, 0xe5, 0x01, 0x02, 0xe5,
-0xe7, 0xe5, 0x02, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0xe6, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0xe5,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0x02, 0x06, 0x02, 0x06, 0x06,
-0x06, 0xe5, 0x01, 0xe5, 0x08, 0x02, 0x24, 0x02,
-0xe5, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x2d, 0x02, 0x04, 0x04, 0x01, 0x09, 0x1b, 0x09,
-0x03, 0x01, 0x09, 0x02, 0xe5, 0x04, 0x02, 0x06,
-0x02, 0xe5, 0x04, 0x02, 0x06, 0x02, 0xe5, 0x04,
-0x02, 0x06, 0x02, 0xe5, 0x05, 0xe5, 0x01, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x08, 0x21, 0x08,
-0xe5, 0x01, 0x0d, 0x01, 0x07, 0x01, 0x06, 0xe5,
-0xe8, 0x03, 0x01, 0xe7, 0x05, 0xe7, 0x03, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x02,
-0xe5, 0x01, 0x01, 0x04, 0x02, 0xe6, 0x03, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x03, 0x02, 0x02, 0xe6,
-0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03,
-0x02, 0xe6, 0x03, 0x02, 0x01, 0x06, 0xe5, 0xe5,
-0x03, 0x01, 0x04, 0x1d, 0xe5, 0x01, 0x0d, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0xe6, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x03, 0xe5, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x03, 0x02, 0xe6, 0x04, 0x01,
-0xe5, 0x20, 0x03, 0xe5, 0x08, 0x02, 0x01, 0x0e,
-0x02, 0x01, 0xe5, 0x02, 0x06, 0x02, 0x06, 0x04,
-0x02, 0x04, 0x04, 0x01, 0x07, 0x04, 0x04, 0x09,
-0x01, 0x02, 0x04, 0x09, 0x08, 0x02, 0x01, 0x07,
-0x04, 0x04, 0x09, 0x09, 0x06, 0x02, 0x01, 0x07,
-0x09, 0x09, 0x09, 0x23, 0x01, 0xe5, 0x0c, 0x01,
-0x05, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x05,
-0x01, 0xe5, 0x06, 0xe6, 0x01, 0xe5, 0x01, 0x01,
-0xe5, 0x01, 0x04, 0xe6, 0x01, 0xe5, 0x01, 0x01,
-0xe5, 0x01, 0x03, 0xe7, 0x01, 0x03, 0x01, 0xe5,
-0x01, 0x04, 0xe6, 0x01, 0x05, 0xe5, 0x03, 0x03,
-0xe7, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01,
-0x01, 0xe5, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5,
-0x01, 0x01, 0xe5, 0x01, 0x03, 0xe7, 0x01, 0xe5,
-0x01, 0x01, 0xe5, 0x01, 0x03, 0xe7, 0x01, 0x03,
-0xe7, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0xe5, 0x0c, 0x01, 0xe5, 0x05, 0x01,
-0x0a, 0x06, 0x01, 0xe5, 0x04, 0xe5, 0xe5, 0x05,
-0x02, 0xe5, 0x04, 0x02, 0x06, 0x02, 0xe5, 0x04,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x04, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x07, 0x06, 0x02, 0xe5,
-0x04, 0xe5, 0x0b, 0x17, 0xe5, 0xe6, 0x0c, 0x01,
-0x07, 0x01, 0x0c, 0x04, 0x01, 0x02, 0x02, 0xe6,
-0xe5, 0x01, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x03, 0x04,
-0x02, 0xe5, 0xe6, 0x01, 0x02, 0x02, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0xe5, 0xe6, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0xe5, 0xe6, 0x01,
-0x02, 0x02, 0x03, 0x02, 0xe5, 0xe6, 0x01, 0xe5,
-0xe5, 0xe6, 0xe5, 0x0b, 0x17, 0x01, 0x01, 0x09,
-0x03, 0x01, 0xe5, 0x12, 0x09, 0x02, 0x01, 0x01,
-0x06, 0xe5, 0xe5, 0x01, 0x02, 0x01, 0x01, 0x06,
-0xe5, 0xe5, 0x01, 0x02, 0x01, 0x01, 0x05, 0xe6,
-0xe5, 0x04, 0x01, 0x01, 0x06, 0xe5, 0xe5, 0x09,
-0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x01, 0x02, 0xe6,
-0xe5, 0x01, 0x02, 0x01, 0x01, 0x02, 0x03, 0xe5,
-0xe5, 0x01, 0x02, 0x01, 0x01, 0x02, 0x03, 0xe5,
-0xe5, 0x01, 0x02, 0x01, 0x01, 0x06, 0xe5, 0x02,
-0x03, 0x28, 0x02, 0xe5, 0x01, 0x0a, 0x02, 0x20,
-0xe5, 0x03, 0x03, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x06, 0x02, 0x05, 0xe5, 0x01, 0x06, 0x04,
-0x05, 0xe5, 0x01, 0x05, 0x03, 0x06, 0x02, 0x05,
-0xe5, 0x01, 0x06, 0x02, 0x05, 0xe5, 0x01, 0x09,
-0x05, 0x05, 0x04, 0x0f, 0x17, 0x02, 0xe6, 0x41,
-0x1d, 0x6b, 0x02, 0xe5, 0x0e, 0x02, 0x07, 0x01,
-0x06, 0xe5, 0xe5, 0x10, 0x11, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x06, 0xe5, 0xe5, 0xe5, 0x04, 0x01,
-0xe6, 0x04, 0x01, 0x07, 0x01, 0x07, 0xe6, 0x01,
-0x04, 0x01, 0x01, 0x07, 0xe6, 0xe5, 0x04, 0xe6,
-0xe5, 0x04, 0xe6, 0x06, 0x01, 0x01, 0x05, 0xe6,
-0x01, 0x04, 0xe6, 0x06, 0x01, 0x04, 0x02, 0x01,
-0x01, 0x05, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x0a, 0x01, 0x01, 0x02, 0x0c, 0xe5,
-0x04, 0x0c, 0xe5, 0xe5, 0x05, 0xe5, 0x01, 0x05,
-0xe5, 0x02, 0x05, 0x01, 0x03, 0x02, 0x03, 0xe5,
-0x04, 0x01, 0x06, 0xe5, 0xe5, 0xe5, 0x04, 0x02,
-0x02, 0x02, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0xe5,
-0xe5, 0x02, 0x02, 0x0a, 0x08, 0xe5, 0x02, 0x04,
-0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x01, 0x03, 0x01, 0xe5, 0x01, 0x05,
-0xe5, 0x05, 0x05, 0x05, 0x08, 0x13, 0xe5, 0x0c,
-0x02, 0x0e, 0xe5, 0xe5, 0x03, 0x02, 0x01, 0x03,
-0x02, 0x01, 0xe5, 0x01, 0x03, 0xe5, 0x0d, 0x03,
-0xe5, 0x03, 0x04, 0x07, 0x02, 0x03, 0x05, 0x06,
-0x01, 0x10, 0x03, 0x01, 0x02, 0x06, 0x05, 0x01,
-0x01, 0x03, 0x03, 0x01, 0x09, 0x03, 0x01, 0x03,
-0xe5, 0x03, 0x02, 0x03, 0x04, 0xe5, 0xe5, 0x0f,
-0x1a, 0xe6, 0x01, 0x0e, 0x19, 0x07, 0x07, 0x05,
-0x05, 0x06, 0x06, 0x0b, 0x03, 0x03, 0x09, 0x01,
-0x09, 0x03, 0x08, 0x13, 0x09, 0x09, 0x09, 0x13,
-0x1a, 0x02, 0x06, 0x11, 0xe5, 0x01, 0xe5, 0x0b,
-0x05, 0x0d, 0x01, 0x0a, 0x08, 0x02, 0x09, 0x01,
-0x04, 0x07, 0x01, 0x04, 0x04, 0x09, 0x02, 0x01,
-0x04, 0x05, 0x03, 0xe5, 0x05, 0x03, 0x07, 0x01,
-0x05, 0x01, 0x01, 0xe5, 0x03, 0x07, 0x03, 0x01,
-0xe5, 0x05, 0x10, 0x02, 0x10, 0x25, 0xe6, 0xe7,
-0x0e, 0x12, 0xe5, 0x0f, 0x10, 0x0b, 0x02, 0x01,
-0x01, 0x0c, 0x0c, 0x10, 0x01, 0x0a, 0x02, 0x06,
-0xe5, 0xe5, 0x05, 0x06, 0x01, 0x01, 0x01, 0x0a,
-0x05, 0x06, 0x02, 0x02, 0x05, 0x13, 0x1c, 0xe5,
-0x01, 0xe5, 0x07, 0x27, 0x03, 0xe7, 0x06, 0xe5,
-0x04, 0x01, 0x06, 0x08, 0x03, 0x06, 0x01, 0xe5,
-0x04, 0x04, 0xe5, 0x06, 0x01, 0x03, 0x03, 0x01,
-0x03, 0x01, 0x03, 0xe6, 0x02, 0xe5, 0x02, 0xe5,
-0x11, 0xe5, 0x02, 0x04, 0xe5, 0x02, 0x08, 0x14,
-0x01, 0x1d, 0x06, 0xea, 0x39, 0x04, 0x01, 0x0b,
-0xe5, 0x0b, 0x06, 0xe5, 0x02, 0x09, 0x01, 0xe5,
-0x06, 0x0d, 0x06, 0x01, 0x02, 0x04, 0x01, 0xe5,
-0x0b, 0x03, 0x01, 0xe5, 0x05, 0x01, 0x20, 0x11,
-0x04, 0x12, 0xe5, 0x01, 0x08, 0x02, 0x23, 0x0c,
-0x13, 0x07, 0x03, 0x07, 0x02, 0x08, 0x05, 0x0e,
-0x19, 0x09, 0xe5, 0x07, 0xe5, 0xe5, 0x05, 0x02,
-0x0b, 0x2d, 0x01, 0x0a, 0x02, 0x1b, 0x03, 0x04,
-0x06, 0x03, 0x01, 0x01, 0x04, 0x02, 0x09, 0x01,
-0xe5, 0x04, 0xe5, 0x01, 0x08, 0x01, 0x08, 0x03,
-0x02, 0x01, 0x05, 0x03, 0x04, 0x02, 0x01, 0x01,
-0xe5, 0x02, 0x0c, 0x01, 0x05, 0x09, 0x01, 0x07,
-0x01, 0x09, 0x07, 0x04, 0x0a, 0xe5, 0x0b, 0xe5,
-0x08, 0x19, 0x06, 0x24, 0x07, 0x05, 0x03, 0xe5,
-0x0e, 0x08, 0x05, 0x0d, 0x02, 0x09, 0x06, 0x03,
-0x01, 0x09, 0x08, 0x13, 0x29, 0x03, 0x2c, 0x02,
-0xe6, 0xe5, 0x16, 0x03, 0x05, 0x09, 0xe5, 0x09,
-0x0c, 0xe5, 0xe6, 0x01, 0x05, 0x01, 0x08, 0x02,
-0xe5, 0xe5, 0x04, 0x04, 0x01, 0x02, 0xe5, 0x01,
-0x02, 0x02, 0x09, 0x02, 0x03, 0x01, 0xe5, 0x04,
-0x05, 0x03, 0x06, 0x02, 0x09, 0x06, 0x06, 0x06,
-0x01, 0x08, 0x07, 0x02, 0x23, 0xe7, 0xe5, 0x07,
-0x37, 0x08, 0x08, 0x01, 0x08, 0x0a, 0x08, 0x0a,
-0x11, 0x03, 0x06, 0x01, 0x09, 0x07, 0x01, 0xe5,
-0x0f, 0x01, 0xe5, 0x16, 0x04, 0x23, 0x02, 0x1d,
-0x2c, 0x14, 0x12, 0x08, 0x08, 0x01, 0x20, 0x3c,
-0x21, 0x02, 0xe7, 0x28, 0x03, 0xe5, 0x07, 0x09,
-0x09, 0x09, 0x07, 0x01, 0x09, 0x0a, 0x08, 0xe5,
-0xe5, 0xe5, 0x03, 0x01, 0x09, 0x07, 0x01, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x02, 0xe5, 0x01, 0x02,
-0xe5, 0x26, 0x01, 0x01, 0xe6, 0x01, 0x01, 0x0f,
-0xe5, 0x14, 0x03, 0xe5, 0x07, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x05, 0x03, 0x09, 0x0b, 0xe5,
-0x02, 0x05, 0xe5, 0x01, 0xe6, 0x07, 0x03, 0x09,
-0x06, 0x02, 0x05, 0x03, 0x09, 0x05, 0xe5, 0x01,
-0x06, 0x02, 0x01, 0xe5, 0x04, 0x26, 0x01, 0x03,
-0x01, 0xe5, 0x03, 0x26, 0x09, 0x0b, 0x03, 0xe5,
-0x01, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0x07, 0x0b, 0x01,
-0x09, 0x01, 0x0f, 0x05, 0xe5, 0x01, 0x01, 0x11,
-0x09, 0x09, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x22,
-0x01, 0x02, 0x04, 0xe5, 0xe6, 0x2a, 0x09, 0x10,
-0x02, 0x09, 0x09, 0xe7, 0x02, 0x04, 0x04, 0xe5,
-0xe5, 0x13, 0xe5, 0x08, 0x05, 0xe5, 0x01, 0x09,
-0x09, 0x06, 0xe5, 0xe5, 0x04, 0xe5, 0x01, 0x06,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0xe5, 0x21, 0x06,
-0x02, 0x01, 0x01, 0x2b, 0x0b, 0x02, 0x04, 0x01,
-0x02, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x07,
-0x01, 0x02, 0x01, 0x0b, 0x02, 0x04, 0x01, 0x02,
-0x08, 0x02, 0x06, 0x09, 0x02, 0x06, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x06, 0x02, 0x06, 0x02, 0xe5,
-0x01, 0x02, 0x03, 0x02, 0x05, 0x20, 0x07, 0xe6,
-0xe6, 0x01, 0x28, 0x03, 0x07, 0x02, 0x04, 0x04,
-0xe5, 0x01, 0x05, 0xe5, 0xe6, 0x04, 0xe5, 0x01,
-0xe5, 0x03, 0x01, 0x01, 0xe5, 0x0a, 0x02, 0x04,
-0x04, 0xe5, 0x01, 0x02, 0x03, 0x02, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0x02, 0x02, 0x09, 0x04, 0x01,
-0x02, 0x06, 0x02, 0x04, 0x04, 0x03, 0x09, 0x04,
-0x27, 0x02, 0xe8, 0x01, 0x11, 0x01, 0x14, 0x04,
-0x04, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0x09, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x03, 0xe5, 0x01, 0x01, 0x0b, 0x01, 0x02, 0x04,
-0x07, 0x01, 0x07, 0x01, 0x09, 0x02, 0x04, 0x01,
-0x07, 0x04, 0x02, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x01, 0x29, 0x01, 0xe7, 0x01, 0x11, 0x01, 0x14,
-0x04, 0x04, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x04, 0x06, 0x04, 0x01,
-0xe7, 0xe5, 0x01, 0x04, 0x01, 0x02, 0x04, 0x04,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x01, 0x02, 0x2b, 0xe6, 0xe5,
-0x06, 0x27, 0x02, 0x06, 0x02, 0x06, 0x02, 0x10,
-0x13, 0xe5, 0x1a, 0x0c, 0x27, 0x09, 0xe5, 0x07,
-0xe5, 0x04, 0x0c, 0xe5, 0x1b, 0xe5, 0x01, 0xe5,
-0x09, 0x01, 0x22, 0x16, 0x13, 0x01, 0x03, 0xe5,
-0x08, 0x1e, 0xe5, 0x08, 0x02, 0x01, 0x27, 0x07,
-0x06, 0x08, 0xe5, 0x0b, 0xe5, 0x1b, 0xe9, 0x07,
-0x05, 0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0x09,
-0x04, 0xe6, 0x01, 0x09, 0x03, 0x02, 0x02, 0xe6,
-0x06, 0x09, 0x06, 0x02, 0x04, 0x01, 0x04, 0xe6,
-0x06, 0x04, 0xe6, 0x01, 0x04, 0x01, 0x02, 0x09,
-0x09, 0x09, 0x03, 0x05, 0x09, 0xe7, 0x02, 0x02,
-0x09, 0x09, 0x04, 0x01, 0x06, 0xe6, 0x01, 0x02,
-0x27, 0x09, 0x09, 0x09, 0x12, 0xe5, 0x08, 0x09,
-0x08, 0xe5, 0x08, 0x15, 0x09, 0x13, 0x24, 0x02,
-0x1d, 0x04, 0x03, 0xe5, 0xe5, 0x28, 0x05, 0x01,
-0x09, 0x09, 0x15, 0x09, 0x09, 0x07, 0x0b, 0x02,
-0x10, 0x0b, 0x13, 0x26, 0x1e, 0x08, 0x01, 0x01,
-0x01, 0x08, 0x22, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x06, 0xe7, 0x05, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x08, 0xe5, 0xe5, 0x03,
-0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x04, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01,
-0xe5, 0xe5, 0x03, 0x01, 0x23, 0xe5, 0xe5, 0x2a,
-0x03, 0x02, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03,
-0x07, 0x01, 0x08, 0xe5, 0x04, 0x03, 0x01, 0x03,
-0x03, 0x05, 0x03, 0x07, 0x02, 0xe5, 0x01, 0x02,
-0x01, 0x01, 0x01, 0x03, 0x03, 0x02, 0x04, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x02,
-0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03,
-0x01, 0xe6, 0x04, 0x01, 0xe5, 0x21, 0xe5, 0xe5,
-0x13, 0x18, 0x09, 0x03, 0x05, 0x09, 0x03, 0x05,
-0x03, 0x05, 0xe5, 0x07, 0x09, 0x03, 0x05, 0x08,
-0x02, 0x0e, 0x04, 0x09, 0x03, 0xe5, 0x11, 0x0f,
-0x04, 0x02, 0x01, 0x07, 0x01, 0x22, 0xe8, 0x14,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x04, 0xe8, 0x04,
-0xe8, 0x04, 0xe8, 0x04, 0xe7, 0x01, 0x03, 0xe7,
-0x06, 0xe7, 0x04, 0xe8, 0x04, 0xe8, 0x05, 0xe6,
-0x01, 0x05, 0xe7, 0x06, 0xe7, 0x04, 0xe7, 0x01,
-0x03, 0x01, 0xe5, 0x05, 0xe7, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x01, 0x03, 0xe8, 0xe5, 0x04,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0xe6, 0xe5, 0x0f, 0xe5, 0x18, 0x01, 0xe5,
-0x05, 0x01, 0x07, 0x01, 0x09, 0x07, 0x01, 0x09,
-0x07, 0x01, 0x09, 0x09, 0x0b, 0xe6, 0xe6, 0x03,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x1b, 0x01, 0x25,
-0xe5, 0x2a, 0x01, 0xe5, 0xe6, 0x01, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0xe5, 0xe5, 0x01, 0xe5,
-0x01, 0x05, 0x03, 0xe5, 0xe5, 0x01, 0x01, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x02, 0x04, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0xe5, 0x01, 0xe5, 0x03, 0x03, 0x02, 0x02, 0xe5,
-0x01, 0xe5, 0x03, 0x03, 0x02, 0x02, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0x04, 0x01, 0x24, 0xe6, 0x31,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x02, 0x04, 0xe5, 0x06, 0x01, 0x03,
-0x04, 0xe5, 0x02, 0x08, 0x02, 0x05, 0x03, 0x04,
-0xe5, 0x02, 0x04, 0xe5, 0x02, 0x03, 0x01, 0x03,
-0x04, 0xe5, 0x02, 0x03, 0x01, 0x03, 0x05, 0x03,
-0x04, 0xe5, 0x0a, 0x24, 0x01, 0xe6, 0x0f, 0x09,
-0x16, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0xe7, 0x01, 0x03, 0x01,
-0xe5, 0x01, 0x04, 0x01, 0x02, 0x05, 0x01, 0xe5,
-0x01, 0x03, 0x01, 0xe5, 0x01, 0x03, 0xe8, 0x05,
-0xe6, 0x01, 0x03, 0xe8, 0x05, 0xe6, 0x01, 0x03,
-0x01, 0x03, 0x03, 0x01, 0xe5, 0x09, 0x01, 0x23,
-0xe8, 0x01, 0x27, 0xe5, 0xe5, 0x05, 0xe5, 0xe6,
-0x04, 0xe5, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x02,
-0x04, 0xe5, 0x07, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x03, 0x0d, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0xe6, 0x04, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0x09, 0xe5, 0xe5, 0x13, 0x1d,
-0x03, 0x02, 0x06, 0x04, 0x05, 0x01, 0x07, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x04,
-0x01, 0x07, 0xe7, 0x05, 0x01, 0x02, 0x04, 0xe6,
-0xe5, 0x04, 0xe6, 0xe5, 0x04, 0x01, 0x02, 0x04,
-0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x06, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x01, 0x04, 0xe5, 0xe5, 0x03, 0x02,
-0x01, 0xe5, 0xe5, 0x02, 0xe5, 0xe5, 0x01, 0x04,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x0d, 0xe5, 0x15, 0x15, 0xe7, 0x05, 0xe6, 0x06,
-0xe7, 0x06, 0xe5, 0x01, 0x05, 0xe6, 0x06, 0xe6,
-0x06, 0xe5, 0x01, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe6, 0x05, 0xe6, 0x02, 0xe5,
-0x01, 0xe6, 0x06, 0xe6, 0x01, 0x04, 0xe6, 0x06,
-0xe6, 0x07, 0xe5, 0x06, 0xe6, 0x08, 0x2d, 0xe7,
-0x06, 0x24, 0x09, 0xe5, 0x07, 0x05, 0x03, 0x03,
-0x01, 0x03, 0x09, 0x06, 0x02, 0x02, 0xe5, 0xe5,
-0x09, 0x0d, 0xe5, 0x05, 0x02, 0x06, 0x02, 0x02,
-0x03, 0x02, 0x09, 0x02, 0x06, 0x05, 0x03, 0x02,
-0x06, 0x07, 0x03, 0x04, 0x04, 0x04, 0x11, 0x08,
-0xe5, 0xe5, 0xe5, 0xe5, 0x08, 0x05, 0x02, 0x0f,
-0x06, 0x09, 0x09, 0x05, 0x03, 0x06, 0x02, 0x09,
-0x08, 0xe5, 0x07, 0x0f, 0x05, 0x0a, 0x05, 0x03,
-0x07, 0x01, 0x03, 0x02, 0x02, 0x03, 0x05, 0x09,
-0x09, 0x0f, 0x13, 0x14, 0xe5, 0x01, 0xe5, 0x29,
-0xe6, 0x05, 0xe7, 0x06, 0xe6, 0xe5, 0x01, 0x02,
-0x01, 0x07, 0x01, 0xe5, 0x08, 0x02, 0x03, 0x01,
-0x04, 0x02, 0xe6, 0x05, 0xe7, 0x06, 0xe5, 0x02,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe7, 0x05, 0xe6,
-0x06, 0xe7, 0x05, 0xe6, 0x03, 0x02, 0xe6, 0x06,
-0x01, 0x0a, 0x04, 0x0f, 0x0b, 0xe7, 0xe5, 0x1e,
-0x1b, 0x0d, 0x02, 0x02, 0x01, 0x01, 0x02, 0x03,
-0x09, 0x02, 0x02, 0x02, 0x13, 0x20, 0x08, 0x09,
-0x17, 0x07, 0x19, 0x14, 0x01, 0xe5, 0xe7, 0x07,
-0x1a, 0x06, 0x02, 0x05, 0xe5, 0xe5, 0x03, 0x02,
-0x05, 0x13, 0x05, 0x03, 0x05, 0x07, 0x05, 0x03,
-0x09, 0x03, 0x03, 0xe5, 0x01, 0xe6, 0x02, 0x03,
-0x01, 0x03, 0x03, 0x07, 0x01, 0x01, 0x07, 0x09,
-0x02, 0x1c, 0x21, 0x01, 0x02, 0x0a, 0x34, 0x01,
-0xe5, 0x02, 0x07, 0xe5, 0x05, 0x06, 0x02, 0x06,
-0xe5, 0x02, 0x08, 0x02, 0x0d, 0xe5, 0x03, 0x04,
-0x02, 0x06, 0x02, 0x10, 0xe5, 0x06, 0x17, 0x10,
-0x0f, 0x15, 0xe7, 0x01, 0x12, 0x22, 0x14, 0xe5,
-0x08, 0x10, 0x04, 0x0b, 0x07, 0x02, 0x0a, 0x02,
-0x02, 0x13, 0x06, 0x01, 0xe5, 0x09, 0xe5, 0x0f,
-0x11, 0xe5, 0xe5, 0x08, 0x15, 0x01, 0x01, 0x2b,
-0xe6, 0x0d, 0x01, 0x0a, 0xe5, 0x07, 0x01, 0x05,
-0x01, 0xe8, 0x03, 0xe6, 0x02, 0x05, 0x04, 0xe5,
-0x04, 0x02, 0x03, 0xe7, 0x08, 0x08, 0xe5, 0x24,
-0x09, 0x07, 0x05, 0x2b, 0x01, 0xe6, 0x07, 0x23,
-0x0e, 0x0c, 0xe6, 0x03, 0x0e, 0x08, 0xe5, 0x09,
-0x11, 0x04, 0x07, 0x08, 0x01, 0x18, 0xe5, 0x11,
-0x0b, 0x2f, 0xe9, 0x3c, 0x11, 0x0a, 0x03, 0x06,
-0xe5, 0xe6, 0x07, 0xe5, 0x01, 0x09, 0x06, 0xe5,
-0x0f, 0x02, 0x03, 0x02, 0x09, 0x06, 0x0f, 0x15,
-0x02, 0x01, 0xe5, 0xe5, 0x03, 0x1d, 0xe5, 0xe6,
-0x37, 0x02, 0x09, 0x06, 0x01, 0xe5, 0x07, 0x03,
-0x02, 0x02, 0x07, 0xe5, 0xe5, 0x03, 0xe5, 0xe6,
-0x07, 0x09, 0x05, 0x05, 0x01, 0x05, 0x0a, 0x13,
-0x02, 0x0b, 0x15, 0x01, 0x22, 0xe5, 0xe6, 0x01,
-0x06, 0x25, 0x13, 0x0c, 0x0f, 0xe5, 0x08, 0x07,
-0x12, 0x03, 0x0c, 0x06, 0x20, 0x03, 0x03, 0x09,
-0x01, 0x02, 0x1a, 0x14, 0xe6, 0xe5, 0xe5, 0xe5,
-0x08, 0x10, 0xe5, 0x17, 0x03, 0xe5, 0x03, 0x14,
-0x09, 0xe5, 0x0d, 0x03, 0x05, 0x0f, 0xe5, 0x06,
-0xe5, 0x08, 0x01, 0xe5, 0x04, 0xe5, 0x01, 0xe5,
-0x03, 0xe5, 0x08, 0x05, 0x09, 0x06, 0xe5, 0x1e,
-0x0c, 0x01, 0x01, 0x03, 0xe5, 0x0b, 0x10, 0xe5,
-0x19, 0x15, 0x01, 0x04, 0x06, 0x01, 0x01, 0x0e,
-0x03, 0x05, 0x06, 0xe5, 0x01, 0x01, 0x02, 0x08,
-0x07, 0x01, 0x03, 0xe5, 0xe6, 0x0e, 0x01, 0x15,
-0xe5, 0x02, 0xe5, 0x06, 0x18, 0x0d, 0x03, 0x01,
-0xe5, 0xe5, 0x0a, 0x45, 0x01, 0x02, 0xe6, 0x03,
-0x11, 0x09, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04,
-0x01, 0x04, 0x01, 0x02, 0x07, 0x01, 0x01, 0x09,
-0x09, 0x05, 0x0b, 0x07, 0x01, 0x1b, 0x0b, 0x05,
-0xe5, 0xe6, 0x03, 0x07, 0x45, 0x01, 0x1b, 0x09,
-0x15, 0x01, 0x04, 0xe5, 0x07, 0x02, 0x01, 0x22,
-0xe5, 0x02, 0x04, 0xe5, 0xe5, 0xe5, 0x02, 0xe5,
-0x15, 0x0d, 0x01, 0xea, 0x0b, 0x27, 0x01, 0x07,
-0x01, 0x0c, 0x09, 0x09, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0x04, 0x04, 0x04, 0x04, 0x0b, 0xe5, 0x01,
-0xe5, 0xe5, 0x0b, 0x01, 0xe6, 0x01, 0x04, 0x01,
-0xe5, 0xe5, 0x0b, 0x04, 0x05, 0x02, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0x05, 0x06, 0x11, 0x0f, 0xea,
-0x0b, 0x03, 0x23, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x13, 0x09, 0x05, 0x01, 0x01, 0x05, 0x03, 0x05,
-0x03, 0x0b, 0x05, 0x01, 0x01, 0x09, 0x04, 0xe5,
-0x02, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x10, 0x09,
-0x02, 0x08, 0x07, 0x11, 0x03, 0x09, 0x01, 0xe5,
-0xe5, 0xe5, 0x0c, 0x27, 0x01, 0x04, 0x01, 0xe5,
-0xe5, 0x01, 0x01, 0x01, 0x07, 0x02, 0x01, 0x02,
-0x06, 0x03, 0xe5, 0x01, 0x01, 0x04, 0x02, 0x09,
-0x03, 0x09, 0x07, 0x01, 0x02, 0xe6, 0x03, 0x02,
-0xe7, 0xe5, 0xe5, 0x03, 0x02, 0x01, 0x0c, 0x04,
-0x09, 0x01, 0x07, 0x01, 0x01, 0x02, 0x16, 0x05,
-0xe5, 0x07, 0xe7, 0xe6, 0x0b, 0x27, 0x01, 0x04,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0x04, 0xe5, 0xe8,
-0xe5, 0xe6, 0x05, 0x01, 0xe5, 0xe5, 0x01, 0x01,
-0x01, 0xe5, 0xe8, 0x02, 0xe5, 0xe5, 0x01, 0x0d,
-0x01, 0xe5, 0x03, 0x01, 0x03, 0xe5, 0x03, 0x01,
-0xe5, 0xe5, 0xe6, 0xe5, 0x03, 0xe7, 0xe5, 0x0a,
-0xe7, 0x03, 0x09, 0x07, 0x01, 0x02, 0xe7, 0x14,
-0x06, 0x06, 0x01, 0x01, 0x01, 0xe5, 0x4b, 0x09,
-0x09, 0x02, 0xe6, 0x03, 0x09, 0x04, 0x10, 0x02,
-0x02, 0x0d, 0x02, 0x09, 0x10, 0x02, 0xe5, 0x07,
-0x10, 0x22, 0x06, 0x02, 0xe5, 0xe5, 0x45, 0x05,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0x07, 0xe5, 0x13, 0xe5, 0x01, 0x0f, 0xe5,
-0x03, 0x07, 0xe6, 0x03, 0x08, 0xe5, 0x01, 0x06,
-0x04, 0x0d, 0xe5, 0x08, 0x21, 0xe5, 0xe6, 0x0d,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x03,
-0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0x0b, 0xe5, 0x03, 0x03, 0x06,
-0x02, 0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0x09, 0x09,
-0xe5, 0x03, 0xe5, 0x01, 0x09, 0x09, 0xe7, 0xe5,
-0xe5, 0x01, 0x09, 0x09, 0x06, 0x06, 0xe5, 0xe7,
-0x5a, 0xe5, 0x32, 0x08, 0xe5, 0x08, 0x1a, 0x02,
-0x09, 0x09, 0x09, 0x1c, 0xe5, 0x03, 0x03, 0xe7,
-0x4c, 0x09, 0x03, 0x05, 0x09, 0x09, 0x15, 0x03,
-0x09, 0x05, 0x03, 0x0f, 0x09, 0x01, 0x09, 0x0b,
-0x09, 0x1c, 0x09, 0x01, 0x01, 0x0d, 0x01, 0x18,
-0x09, 0x09, 0x02, 0x01, 0x04, 0x02, 0x01, 0xe7,
-0x06, 0xe6, 0x06, 0x01, 0x03, 0x02, 0xe7, 0x05,
-0xe7, 0x03, 0x01, 0x0c, 0xe6, 0x03, 0x01, 0x0a,
-0xe6, 0xe5, 0x01, 0x01, 0x07, 0x01, 0x07, 0x01,
-0xe7, 0xe5, 0x01, 0x01, 0x13, 0xe7, 0x0d, 0x01,
-0x07, 0x01, 0x0f, 0xe7, 0x0c, 0x01, 0xe5, 0x20,
-0x0c, 0x01, 0xe5, 0x04, 0xe5, 0xe7, 0x08, 0x08,
-0xe5, 0x01, 0x04, 0xe6, 0x03, 0x02, 0xe6, 0x04,
-0x01, 0xe6, 0x01, 0x07, 0xe5, 0x04, 0x01, 0xe5,
-0x08, 0xe5, 0x04, 0x01, 0xe5, 0x04, 0xe5, 0xe7,
-0x04, 0x01, 0xe6, 0x04, 0x01, 0x01, 0x01, 0x07,
-0x05, 0x02, 0xe5, 0x08, 0x01, 0x03, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x0d, 0xe5, 0xe5, 0x0c, 0x01,
-0x39, 0x01, 0xe5, 0x08, 0x03, 0x0e, 0xe5, 0x02,
-0x04, 0x01, 0x0b, 0x08, 0x03, 0x01, 0xe5, 0xe5,
-0x03, 0x06, 0x07, 0x04, 0x02, 0x01, 0x03, 0xe5,
-0xe5, 0x02, 0x06, 0x01, 0x03, 0xe5, 0x08, 0x01,
-0x02, 0x03, 0x0c, 0xe5, 0xe5, 0x03, 0x02, 0x01,
-0x09, 0x05, 0xe8, 0x0b, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x09, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0x06,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe6, 0x01, 0x04, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe7,
-0x2d, 0x09, 0x06, 0x01, 0x0a, 0x12, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x09, 0x09,
-0xe6, 0x06, 0xe5, 0x05, 0x01, 0xe6, 0x07, 0x06,
-0x01, 0xe6, 0x04, 0x01, 0x09, 0x09, 0xe5, 0x05,
-0x16, 0xe5, 0x0f, 0x2e, 0x10, 0x01, 0x1b, 0x01,
-0x09, 0x09, 0xe5, 0x05, 0x01, 0x08, 0xe5, 0xe5,
-0x06, 0x09, 0x01, 0x07, 0x01, 0x11, 0x01, 0x07,
-0x01, 0x07, 0x09, 0x31, 0xe6, 0x36, 0x13, 0x1c,
-0xe5, 0x07, 0x0a, 0x14, 0x0a, 0x08, 0x0a, 0x12,
-0x09, 0x09, 0xe5, 0x05, 0x25, 0xe5, 0xe5, 0x02,
-0x20, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x04, 0x04,
-0x06, 0x02, 0x06, 0x02, 0x09, 0x06, 0x04, 0x04,
-0x02, 0x06, 0x04, 0x04, 0x02, 0x0b, 0x09, 0x04,
-0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x09, 0x11,
-0x0d, 0xe8, 0x0a, 0x01, 0x01, 0xe5, 0x3e, 0x1a,
-0x05, 0x02, 0x03, 0x02, 0x02, 0x07, 0xe5, 0x01,
-0x01, 0x08, 0x05, 0x02, 0x14, 0xe5, 0x01, 0x09,
-0x01, 0x02, 0x1a, 0x01, 0xe5, 0xe5, 0x0b, 0x01,
-0x02, 0x0d, 0xe5, 0x01, 0x0e, 0x02, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0xe7, 0xe5,
-0x03, 0xe7, 0x05, 0x01, 0xe6, 0xe5, 0x02, 0xe8,
-0x06, 0x01, 0xe6, 0x04, 0x01, 0x07, 0x01, 0xe6,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0xe5, 0xe5, 0x02, 0x01, 0x02, 0x04, 0x01,
-0x05, 0x01, 0x01, 0x0a, 0xe6, 0xe5, 0x01, 0x34,
-0xe5, 0x0d, 0x04, 0x03, 0x05, 0xe5, 0xe6, 0x03,
-0x02, 0x02, 0x04, 0x06, 0xe5, 0xe5, 0x05, 0x01,
-0xe5, 0x07, 0xe7, 0xe5, 0x0d, 0xe6, 0x12, 0xe5,
-0x0f, 0xe5, 0x01, 0x04, 0x04, 0x07, 0xe5, 0x09,
-0x24, 0xe5, 0x0f, 0x24, 0xe5, 0x0e, 0x01, 0x07,
-0x02, 0x04, 0x02, 0x03, 0x06, 0x07, 0x02, 0x04,
-0x02, 0x01, 0xe5, 0xe6, 0x15, 0x18, 0x0b, 0x1a,
-0x01, 0x02, 0x1b, 0xe5, 0x0a, 0xe5, 0xe7, 0x5b,
-0x01, 0x07, 0x09, 0x09, 0x04, 0x03, 0x02, 0xe5,
-0xe5, 0x05, 0x07, 0x01, 0x01, 0x02, 0x04, 0x03,
-0x07, 0x02, 0x03, 0x05, 0x0c, 0x27, 0x11, 0x01,
-0xe8, 0x03, 0xe5, 0x02, 0x03, 0xe6, 0x3a, 0xe5,
-0x08, 0x06, 0x01, 0x0e, 0x15, 0xe5, 0x02, 0x04,
-0x02, 0x01, 0x09, 0x01, 0xe5, 0xe5, 0x04, 0x05,
-0xe5, 0xe5, 0xe6, 0x0d, 0x01, 0x07, 0xe6, 0x10,
-0x01, 0x01, 0x05, 0xe6, 0x06, 0xe6, 0x0c, 0xe7,
-0xe6, 0x01, 0x01, 0x07, 0x11, 0x29, 0x0f, 0x01,
-0x01, 0x01, 0x05, 0x07, 0x09, 0x01, 0x0b, 0xe5,
-0x09, 0x02, 0x02, 0x13, 0x04, 0xe5, 0x01, 0xe5,
-0x0e, 0x1c, 0xe5, 0x10, 0x10, 0xe5, 0xe7, 0x07,
-0x2e, 0x01, 0x05, 0xe5, 0x01, 0x03, 0x08, 0x08,
-0x08, 0x0b, 0x03, 0x09, 0x09, 0x02, 0xe6, 0x02,
-0x02, 0x07, 0x01, 0x0f, 0x03, 0x09, 0x04, 0x02,
-0x09, 0xe6, 0x08, 0x11, 0x08, 0x10, 0x03, 0xe6,
-0x03, 0x06, 0x03, 0x13, 0x09, 0x1e, 0xe5, 0x08,
-0x13, 0x04, 0x06, 0x05, 0x02, 0x03, 0x0b, 0x06,
-0x02, 0x04, 0x09, 0x04, 0x0f, 0x02, 0x0a, 0x01,
-0x07, 0xe5, 0x01, 0xe5, 0x0a, 0x05, 0x17, 0xe5,
-0xe6, 0x02, 0x4a, 0x08, 0xe5, 0x12, 0x03, 0xe5,
-0x01, 0x04, 0x04, 0x06, 0x0a, 0xe5, 0x01, 0x01,
-0x03, 0xe5, 0x01, 0x03, 0x06, 0xe5, 0x03, 0x02,
-0x09, 0x0a, 0x01, 0x07, 0xe5, 0xe5, 0x01, 0x0e,
-0x09, 0x02, 0x12, 0xe5, 0x01, 0xe5, 0xe5, 0x3a,
-0x04, 0x02, 0x01, 0x09, 0x09, 0xe5, 0xe5, 0xe5,
-0xe5, 0x01, 0xe7, 0x0c, 0x0b, 0x01, 0x05, 0x03,
-0x01, 0xe5, 0x0a, 0xe5, 0x05, 0x02, 0x03, 0x02,
-0x01, 0x1a, 0xe6, 0x06, 0x01, 0x2c, 0x03, 0x3b,
-0x13, 0x1a, 0x17, 0x02, 0x0b, 0x02, 0x11, 0x05,
-0x04, 0x1a, 0x02, 0x34, 0x01, 0x01, 0xe7, 0x3c,
-0x04, 0x01, 0x0a, 0x08, 0xe5, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x06, 0x06, 0x01, 0xe5, 0x01, 0x08,
-0x08, 0x0e, 0x01, 0x04, 0x03, 0x0b, 0x01, 0xe5,
-0x11, 0x03, 0xe5, 0x01, 0x01, 0x04, 0x01, 0x25,
-0x03, 0x1e, 0x3e, 0x01, 0x0b, 0x04, 0x02, 0x09,
-0x01, 0x0c, 0x02, 0x02, 0xe5, 0x04, 0x08, 0x0e,
-0x09, 0x13, 0x01, 0x07, 0x05, 0x21, 0x02, 0x02,
-0x01, 0xe5, 0x24, 0x47, 0x04, 0x09, 0x16, 0x1c,
-0x0a, 0x11, 0xe5, 0x01, 0x07, 0x2d, 0x02, 0xe6,
-0x43, 0x01, 0x03, 0xe6, 0x06, 0xe5, 0x07, 0xe6,
-0x06, 0x02, 0xe5, 0x04, 0x0d, 0xe5, 0x06, 0x05,
-0x02, 0x0b, 0x01, 0xe5, 0x04, 0x08, 0x13, 0x06,
-0x02, 0xe5, 0x2e, 0x02, 0x01, 0xe5, 0xe6, 0x01,
-0x01, 0x40, 0xe5, 0x0b, 0xe5, 0x01, 0x05, 0xe5,
-0xe5, 0x0b, 0xe5, 0x02, 0x03, 0x0b, 0x01, 0x02,
-0xe5, 0x11, 0xe5, 0x04, 0xe5, 0x04, 0x16, 0x01,
-0x0a, 0xe5, 0xe5, 0x31, 0x02, 0x02, 0xe5, 0x03,
-0x48, 0x07, 0x07, 0x01, 0x04, 0xe5, 0xe5, 0xe5,
-0x03, 0x01, 0x18, 0x01, 0xe5, 0xe6, 0x0c, 0x04,
-0x01, 0xe5, 0xe5, 0x01, 0xe6, 0x12, 0xe5, 0xe5,
-0xe5, 0x01, 0x01, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0x02, 0x02, 0xe6, 0x01, 0x01, 0x24, 0xe6, 0x52,
-0x09, 0x01, 0x04, 0x02, 0x01, 0x04, 0x04, 0x13,
-0x06, 0xe5, 0x02, 0x07, 0x05, 0xe5, 0x01, 0x01,
-0x07, 0x01, 0x0e, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x04, 0x04, 0x03, 0xe5, 0x01, 0x01, 0x1c, 0x02,
-0x01, 0x01, 0xe7, 0x3e, 0x01, 0x13, 0x09, 0x04,
-0xe6, 0x07, 0x04, 0x06, 0x06, 0x01, 0x04, 0x02,
-0x01, 0x01, 0x03, 0x0c, 0x02, 0x05, 0x07, 0x06,
-0x07, 0xe5, 0x07, 0x01, 0x01, 0x03, 0x01, 0xe6,
-0x03, 0x28, 0xe9, 0x01, 0x3c, 0x01, 0x01, 0x0f,
-0x03, 0x05, 0x03, 0x09, 0x05, 0x02, 0x08, 0x01,
-0x01, 0x02, 0x02, 0x03, 0x02, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0x04, 0x09, 0x05, 0x01, 0xe5, 0x02,
-0x01, 0x02, 0x01, 0x01, 0x01, 0xe5, 0x03, 0x05,
-0x01, 0x01, 0x05, 0x03, 0x09, 0x1d, 0x01, 0x01,
-0x01, 0xe5, 0x01, 0x39, 0x01, 0xe5, 0xe5, 0x12,
-0x04, 0x01, 0xe5, 0xe5, 0x02, 0xe5, 0x01, 0x01,
-0x04, 0x01, 0xe5, 0x05, 0x02, 0x06, 0x06, 0x01,
-0x02, 0x01, 0x02, 0x04, 0x01, 0x05, 0x04, 0x01,
-0x0e, 0x01, 0xe5, 0x08, 0x01, 0x04, 0x01, 0xe5,
-0xe5, 0x06, 0x01, 0x04, 0x02, 0x01, 0x21, 0xe5,
-0xe7, 0x3e, 0x01, 0x11, 0x09, 0x01, 0x03, 0xe5,
-0x01, 0x01, 0x0a, 0x02, 0xe6, 0x02, 0x03, 0xe6,
-0x02, 0x04, 0x01, 0x01, 0x03, 0x10, 0x01, 0x01,
-0xe5, 0x06, 0x08, 0x07, 0x01, 0x03, 0xe5, 0x01,
-0x01, 0x07, 0x01, 0x01, 0xe5, 0xe6, 0xe5, 0xe5,
-0x20, 0x02, 0xe6, 0x08, 0x02, 0x1a, 0x02, 0x06,
-0xe5, 0x11, 0x13, 0x13, 0xe5, 0x04, 0x02, 0x02,
-0x06, 0x02, 0x05, 0x09, 0x02, 0x09, 0x02, 0x03,
-0x02, 0xe5, 0x04, 0x02, 0x02, 0x10, 0xe5, 0x07,
-0xe5, 0x04, 0x04, 0x26, 0x02, 0xe5, 0xe5, 0x25,
-0xe5, 0x07, 0x13, 0x01, 0x13, 0x11, 0x05, 0xe5,
-0x01, 0x06, 0x02, 0xe5, 0x05, 0xe5, 0x07, 0xe5,
-0x03, 0x04, 0x02, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x06, 0x02, 0xe5, 0x04, 0x02, 0x0f, 0xe5,
-0x01, 0x28, 0x02, 0xe5, 0x0d, 0x09, 0x09, 0x09,
-0x03, 0x05, 0x09, 0x02, 0x02, 0x03, 0x09, 0x02,
-0x01, 0x01, 0x02, 0x09, 0x05, 0xe5, 0x01, 0xe5,
-0x03, 0x03, 0x0b, 0xe6, 0x06, 0xe5, 0xe5, 0x02,
-0x02, 0x02, 0xe5, 0x04, 0xe5, 0x03, 0xe5, 0x01,
-0xe5, 0x01, 0x02, 0x02, 0x02, 0x06, 0x05, 0xe5,
-0x01, 0x06, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0x09,
-0x09, 0x06, 0x06, 0xe6, 0x01, 0x02, 0x45, 0x13,
-0x12, 0xe5, 0x27, 0xe5, 0x0f, 0x0b, 0xe5, 0x11,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x19, 0x02, 0x04,
-0x03, 0x01, 0xe5, 0x46, 0x13, 0x13, 0x05, 0x09,
-0x15, 0x03, 0x05, 0x09, 0x09, 0x03, 0x05, 0x09,
-0x03, 0x07, 0x07, 0x03, 0x1c, 0x09, 0xe8, 0xe5,
-0x1e, 0x01, 0x07, 0x01, 0x04, 0x0c, 0x01, 0x09,
-0x07, 0x01, 0x04, 0x04, 0x07, 0x01, 0x06, 0x03,
-0xe5, 0x0b, 0x07, 0x01, 0x07, 0xe5, 0x0e, 0x01,
-0xe7, 0x06, 0xe5, 0x0e, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x01, 0xe5, 0xe5, 0x05, 0x22, 0x02, 0xe5,
-0x20, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x0e, 0xe5,
-0xe6, 0x05, 0x02, 0x05, 0xe5, 0xe6, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x02, 0xe5, 0x08,
-0x0b, 0x02, 0x02, 0x02, 0xe5, 0x01, 0x06, 0x05,
-0x01, 0xe6, 0x07, 0xe5, 0x01, 0x06, 0x05, 0x01,
-0xe6, 0x03, 0xe5, 0xe7, 0x03, 0xe5, 0x01, 0xe5,
-0x04, 0x02, 0x24, 0xe5, 0x4a, 0x13, 0x06, 0x07,
-0x02, 0x06, 0x1a, 0xe5, 0x0c, 0x09, 0x02, 0x01,
-0xe5, 0x0b, 0xe5, 0x08, 0x0e, 0x03, 0x05, 0x22,
-0xe5, 0x01, 0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe6, 0xe5, 0x02, 0x01, 0xe5, 0x07, 0xe5,
-0x02, 0x04, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06,
-0xe5, 0xe6, 0x20, 0x01, 0x07, 0x01, 0x0a, 0xe5,
-0x04, 0x01, 0x09, 0x07, 0x01, 0xe6, 0x06, 0xe6,
-0xe5, 0xe5, 0xe5, 0xe6, 0x07, 0xe5, 0x08, 0xe5,
-0x09, 0xe5, 0x04, 0x02, 0x06, 0x02, 0x06, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x08, 0x06, 0x01, 0x07,
-0x01, 0x07, 0x01, 0xe5, 0x07, 0x22, 0xe5, 0xe6,
-0x20, 0x01, 0x07, 0x01, 0x11, 0x01, 0x07, 0x09,
-0x01, 0x07, 0x01, 0x07, 0x01, 0xe5, 0x1a, 0x16,
-0x07, 0x01, 0xe5, 0x19, 0x01, 0x07, 0x01, 0x07,
-0x02, 0x06, 0x24, 0xe6, 0xe6, 0x49, 0x13, 0x05,
-0x0e, 0x08, 0x16, 0x09, 0x13, 0x09, 0x1c, 0x09,
-0x23, 0xe7, 0x02, 0x34, 0x10, 0x0c, 0x06, 0x01,
-0xe5, 0x08, 0x08, 0x02, 0x06, 0x02, 0x0b, 0x06,
-0x02, 0x09, 0x09, 0x09, 0x06, 0x02, 0x09, 0x04,
-0x04, 0x09, 0x04, 0x26, 0x01, 0x6c, 0x04, 0x01,
-0xe5, 0x0c, 0x03, 0x0a, 0x3b, 0x01, 0xe5, 0x02,
-0x0a, 0x26, 0x02, 0xe5, 0x01, 0xe5, 0x0c, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0xe6, 0x04, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x05,
-0x01, 0x09, 0x01, 0x01, 0x05, 0x01, 0xe5, 0xe5,
-0x03, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04, 0xe6,
-0x01, 0x04, 0x01, 0x01, 0x05, 0xe6, 0x02, 0x03,
-0x01, 0x02, 0x04, 0xe6, 0xe5, 0x04, 0x01, 0x06,
-0xe5, 0xe5, 0x06, 0x01, 0x02, 0x07, 0x02, 0xe5,
-0x0b, 0x11, 0x32, 0x03, 0x04, 0x08, 0x0f, 0xe5,
-0x13, 0xe5, 0x06, 0xe5, 0x08, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0x09, 0xe5, 0x0e, 0x08, 0x03, 0xe5,
-0x2c, 0xe7, 0x07, 0x25, 0x18, 0x09, 0x09, 0x06,
-0x02, 0x0a, 0x01, 0x06, 0x0c, 0x01, 0x09, 0x05,
-0x02, 0x08, 0x04, 0x06, 0x08, 0x03, 0xe5, 0x12,
-0x04, 0x0c, 0x1f, 0xe6, 0xe6, 0xe5, 0x52, 0x0d,
-0x01, 0x09, 0x12, 0x01, 0x18, 0x01, 0x07, 0x05,
-0x0c, 0x1d, 0x0b, 0x21, 0x01, 0x01, 0xe5, 0x24,
-0x0d, 0x21, 0x0f, 0x09, 0xe5, 0x02, 0x04, 0xe5,
-0x04, 0x03, 0x0a, 0xe5, 0xe5, 0x02, 0x03, 0x01,
-0x02, 0x02, 0x04, 0x06, 0x01, 0xe5, 0x51, 0x01,
-0xe7, 0x1e, 0x05, 0x35, 0x08, 0x0f, 0x08, 0x05,
-0x01, 0xe5, 0x05, 0x06, 0x09, 0x0f, 0xe5, 0xe5,
-0x19, 0x06, 0x27, 0x0b, 0x01, 0xe6, 0x07, 0x04,
-0xe5, 0xe5, 0x10, 0x09, 0x09, 0x2b, 0x09, 0x09,
-0x01, 0x0a, 0xe5, 0x04, 0x05, 0x09, 0x10, 0x01,
-0x02, 0x0a, 0x09, 0x03, 0x01, 0x02, 0x09, 0x13,
-0x17, 0x01, 0x02, 0x0a, 0x02, 0x13, 0x09, 0xe7,
-0x05, 0xe5, 0xe5, 0x08, 0x06, 0x01, 0xe5, 0x08,
-0x03, 0x0f, 0x03, 0x05, 0x09, 0xe5, 0x04, 0x0e,
-0x16, 0x0d, 0x01, 0x0f, 0x14, 0xe5, 0x01, 0x06,
-0x0d, 0x0c, 0x03, 0x02, 0x0c, 0x13, 0xe5, 0x11,
-0x1a, 0x1d, 0x12, 0x01, 0x08, 0xe5, 0x04, 0xe6,
-0x19, 0x1d, 0x05, 0x03, 0x05, 0x02, 0x07, 0x02,
-0x17, 0x02, 0xe5, 0x11, 0x12, 0x18, 0x09, 0x04,
-0x0c, 0x06, 0x14, 0x0e, 0x06, 0x08, 0x03, 0x14,
-0x04, 0x03, 0x0a, 0x04, 0x1c, 0x03, 0x12, 0x0a,
-0x01, 0x01, 0x46, 0x1b, 0x02, 0x0f, 0x03, 0x06,
-0x03, 0xe6, 0x1b, 0x05, 0xe5, 0x13, 0x0c, 0x3d,
-0xe5, 0x0f, 0x02, 0x04, 0x02, 0x01, 0x02, 0x01,
-0x04, 0xe5, 0x02, 0x09, 0x04, 0x04, 0x03, 0x05,
-0x01, 0x02, 0x04, 0x09, 0x01, 0x02, 0x04, 0x2b,
-0x16, 0x04, 0x09, 0x0d, 0x01, 0x03, 0x04, 0x02,
-0x01, 0x13, 0x01, 0x07, 0x09, 0x06, 0x01, 0x04,
-0x0c, 0x01, 0x03, 0x01, 0x09, 0x08, 0x07, 0x01,
-0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0x0c, 0x05, 0x09,
-0x08, 0xe6, 0xe5, 0x13, 0x13, 0x08, 0x0a, 0x07,
-0x06, 0x02, 0x07, 0x01, 0x09, 0x09, 0x07, 0x01,
-0x09, 0x02, 0x06, 0x02, 0x0e, 0xe5, 0x16, 0x0a,
-0x0e, 0x05, 0x09, 0x03, 0x03, 0x09, 0x01, 0x01,
-0xe5, 0x03, 0xe5, 0x09, 0x06, 0x1f, 0x1e, 0xe5,
-0x07, 0xe5, 0x11, 0xe5, 0x04, 0x04, 0x01, 0x0f,
-0xe5, 0x07, 0x01, 0x0b, 0x03, 0xe5, 0xe5, 0x0b,
-0x02, 0xe5, 0x08, 0x09, 0x09, 0x09, 0x04, 0xe5,
-0x02, 0x09, 0x09, 0x05, 0x02, 0xe5, 0xe5, 0x01,
-0xe5, 0x01, 0xe5, 0xe5, 0x03, 0xe7, 0x07, 0xe5,
-0x03, 0x05, 0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x08, 0x04, 0xe5, 0x02, 0x04,
-0x04, 0x08, 0xe5, 0x03, 0x04, 0x08, 0xe5, 0x07,
-0xe5, 0x0c, 0x02, 0xe5, 0x17, 0x14, 0x05, 0x0a,
-0x09, 0x01, 0x0a, 0x08, 0x01, 0x08, 0xe5, 0x01,
-0x01, 0x02, 0x01, 0x09, 0x02, 0x07, 0xe5, 0x06,
-0x01, 0x09, 0x08, 0xe5, 0x08, 0x0e, 0x18, 0x09,
-0x09, 0x09, 0x0e, 0x02, 0x03, 0x0b, 0x06, 0x02,
-0x06, 0x0c, 0x06, 0x0c, 0x0e, 0x01, 0x02, 0x02,
-0x06, 0x03, 0x05, 0x03, 0x05, 0x06, 0x02, 0x04,
-0x01, 0x04, 0x03, 0x02, 0x02, 0x09, 0x09, 0x03,
-0x03, 0x01, 0x07, 0x01, 0x07, 0x07, 0x01, 0x01,
-0x09, 0xe5, 0x11, 0x09, 0x0f, 0x02, 0x08, 0xe5,
-0x1c, 0x08, 0x13, 0x09, 0x03, 0x09, 0x0d, 0x0b,
-0x09, 0x0b, 0x17, 0x03, 0x0b, 0x09, 0xe5, 0x07,
-0x27, 0x12, 0x02, 0xe6, 0xe5, 0x0e, 0x01, 0x0c,
-0x04, 0x04, 0x05, 0x05, 0x02, 0x13, 0x0a, 0x03,
-0x18, 0x09, 0x0b, 0xe5, 0x04, 0x02, 0x09, 0x01,
-0x07, 0x07, 0x01, 0x07, 0x08, 0xe5, 0xe5, 0x02,
-0x01, 0x01, 0x01, 0x04, 0x0e, 0x09, 0x09, 0x0f,
-0x01, 0xe5, 0x0b, 0xe6, 0x07, 0xe5, 0x05, 0x01,
-0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x07,
-0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x08,
-0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe6, 0x07,
-0x13, 0x03, 0x03, 0x0b, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x0e, 0x01, 0xe6, 0x02,
-0x09, 0x01, 0x07, 0x05, 0x03, 0x01, 0x07, 0x07,
-0x01, 0x01, 0x07, 0x08, 0xe5, 0xe5, 0x06, 0x09,
-0x04, 0x04, 0x09, 0x09, 0x0a, 0xe5, 0x02, 0x05,
-0x09, 0x05, 0x03, 0x12, 0x0c, 0x04, 0x05, 0x06,
-0x08, 0xe5, 0x08, 0x09, 0x0b, 0x06, 0x01, 0x0e,
-0xe5, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x07, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0x09, 0x09, 0x09, 0xe5, 0x07, 0x02, 0x06, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x0b, 0x02, 0xe5, 0x0d,
-0x02, 0x06, 0x01, 0x07, 0x09, 0x01, 0x02, 0x04,
-0x09, 0x01, 0x07, 0x09, 0x01, 0x07, 0x03, 0x05,
-0x05, 0x03, 0x02, 0x06, 0x0b, 0x04, 0x04, 0x09,
-0x1f, 0x07, 0x13, 0x09, 0x09, 0x09, 0x02, 0x10,
-0x12, 0x44, 0x02, 0x04, 0xe5, 0x04, 0x02, 0xe5,
-0x18, 0x25, 0x01, 0x01, 0x21, 0x2f, 0x05, 0x01,
-0x01, 0x0e, 0x09, 0x02, 0x06, 0x02, 0x06, 0x09,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x09,
-0x09, 0x09, 0x01, 0xe5, 0x05, 0x05, 0x03, 0x02,
-0x05, 0x02, 0x09, 0x02, 0xe5, 0x04, 0x04, 0x03,
-0xe5, 0x07, 0x03, 0x05, 0xe5, 0x08, 0x05, 0x02,
-0xe5, 0x02, 0x03, 0x01, 0x04, 0x04, 0x09, 0x09,
-0x09, 0x06, 0xe5, 0xe5, 0x06, 0x18, 0x09, 0x09,
-0x1d, 0x0f, 0x13, 0x03, 0x0a, 0x0a, 0x04, 0x10,
-0x09, 0x06, 0xe5, 0xe5, 0x4a, 0xe5, 0x01, 0x07,
-0x08, 0xe5, 0x07, 0x09, 0x09, 0x03, 0x05, 0x09,
-0x09, 0xe5, 0x07, 0x09, 0x09, 0x09, 0x05, 0x03,
-0x06, 0xe5, 0x02, 0x09, 0x09, 0x09, 0xe5, 0x07,
-0x07, 0x01, 0x01, 0x07, 0x01, 0x07, 0x05, 0x03,
-0x01, 0x07, 0x09, 0x09, 0x0e, 0x01, 0xe5, 0x03,
-0x61, 0x11, 0x01, 0x07, 0x0b, 0x09, 0x09, 0x03,
-0x05, 0x02, 0xe5, 0x05, 0x15, 0x3b, 0xe5, 0x14,
-0x13, 0x13, 0x09, 0x14, 0x09, 0x0d, 0x09, 0x06,
-0x04, 0x09, 0x04, 0xe5, 0x02, 0x04, 0x04, 0x18,
-0x13, 0x09, 0x27, 0xe5, 0xe5, 0x09, 0x17, 0x06,
-0x02, 0x4f, 0x4f, 0x09, 0x2b, 0x05, 0xe6, 0x0a,
-0x3b, 0x27, 0x5b, 0x3c, 0xe6, 0x3c, 0x5b, 0x1e,
-0x26, 0x27, 0xe5, 0xe5, 0x03, 0x10, 0x31, 0x2a,
-0x05, 0x03, 0x05, 0x02, 0x02, 0x05, 0x03, 0x05,
-0x03, 0x05, 0xe5, 0x01, 0x05, 0x14, 0x13, 0x29,
-0x06, 0xe5, 0xe6, 0x46, 0x27, 0x15, 0x46, 0x33,
-0x05, 0xe5, 0x01, 0x04, 0x57, 0xa9, 0x03, 0x14,
-0x09, 0x09, 0x09, 0x09, 0x09, 0xe6, 0x06, 0x09,
-0xe6, 0x06, 0x09, 0xe6, 0x06, 0x09, 0x0b, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0xe6, 0x06, 0x09,
-0x09, 0x09, 0x09, 0x0a, 0x02, 0x05, 0x09, 0x08,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5, 0x05, 0x01,
-0xe5, 0x07, 0xe5, 0x05, 0x02, 0x09, 0x07, 0x03,
-0x09, 0x09, 0x09, 0x09, 0x04, 0x03, 0xe5, 0x07,
-0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x08, 0x09, 0x10, 0xe6, 0x15, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x03, 0x09, 0x05, 0x03, 0x04, 0x09,
-0x05, 0x05, 0x09, 0x09, 0x09, 0x14, 0x03, 0x09,
-0x05, 0x03, 0x09, 0x27, 0x01, 0x0d, 0x03, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03,
-0x09, 0x05, 0x03, 0x09, 0x05, 0x03, 0x09, 0x01,
-0x04, 0x04, 0x04, 0x06, 0x04, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x06, 0x0b, 0x03, 0x09, 0x09,
-0x09, 0x09, 0x03, 0x05, 0x03, 0x0d, 0x02, 0x01,
-0x0b, 0x06, 0x01, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x04, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x01, 0x05, 0x01, 0x04, 0x02, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0xe5,
-0x06, 0x02, 0x02, 0x03, 0x02, 0x02, 0x05, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x02, 0x04, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x01, 0xe5, 0x03, 0x01, 0x01, 0x02, 0x04,
-0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04, 0x04,
-0x04, 0x06, 0x02, 0x02, 0xe6, 0xe5, 0xe5, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
diff --git a/board/esd/ash405/Kconfig b/board/esd/ash405/Kconfig
deleted file mode 100644 (file)
index 02c7c14..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_ASH405
-
-config SYS_BOARD
-       default "ash405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "ASH405"
-
-endif
diff --git a/board/esd/ash405/MAINTAINERS b/board/esd/ash405/MAINTAINERS
deleted file mode 100644 (file)
index a9dae90..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ASH405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/ash405/
-F:     include/configs/ASH405.h
-F:     configs/ASH405_defconfig
diff --git a/board/esd/ash405/Makefile b/board/esd/ash405/Makefile
deleted file mode 100644 (file)
index aab8de4..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = ash405.o flash.o \
-       ../common/misc.o \
-       ../common/esd405ep_nand.o \
diff --git a/board/esd/ash405/ash405.c b/board/esd/ash405/ash405.c
deleted file mode 100644 (file)
index 4460a19..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-#include <malloc.h>
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF9F);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       unsigned char *dst;
-       ulong len = sizeof(fpgadata);
-       int status;
-       int index;
-       int i;
-
-       dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
-       if (gunzip (dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
-               printf ("GUNZIP ERROR - must RESET board to recover\n");
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       status = fpga_boot(dst, len);
-       if (status != 0) {
-               printf("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i=0; i<4; i++) {
-                       len = dst[index];
-                       printf("FPGA: %s\n", &(dst[index+1]));
-                       index += len+3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i=20; i>0; i--) {
-                       printf("Rebooting in %2d seconds \r",i);
-                       for (index=0;index<1000;index++)
-                               udelay(1000);
-               }
-               putc ('\n');
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       puts("FPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i=0; i<4; i++) {
-               len = dst[index];
-               printf("%s ", &(dst[index+1]));
-               index += len+3;
-       }
-       putc ('\n');
-
-       free(dst);
-
-       /*
-        * Reset FPGA via FPGA_DATA pin
-        */
-       SET_FPGA(FPGA_PRG | FPGA_CLK);
-       udelay(1000); /* wait 1ms */
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Reset external DUARTs
-        */
-       out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) | CONFIG_SYS_DUART_RST);
-       udelay(10); /* wait 10us */
-       out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) & ~CONFIG_SYS_DUART_RST);
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Enable interrupts in exar duart mcr[3]
-        */
-       out_8((void *)(DUART0_BA + 4), 0x08);
-       out_8((void *)(DUART1_BA + 4), 0x08);
-       out_8((void *)(DUART2_BA + 4), 0x08);
-       out_8((void *)(DUART3_BA + 4), 0x08);
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming ASH405");
-       } else {
-               puts(str);
-       }
-
-       putc ('\n');
-
-       return 0;
-}
-
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-#endif
-}
diff --git a/board/esd/ash405/flash.c b/board/esd/ash405/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/ash405/fpgadata.c b/board/esd/ash405/fpgadata.c
deleted file mode 100644 (file)
index 6e29053..0000000
+++ /dev/null
@@ -1,4983 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x5c, 0xa1, 0x5d, 0x3f,
-0x00, 0x03, 0x61, 0x73, 0x68, 0x34, 0x30, 0x35,
-0x5f, 0x31, 0x5f, 0x30, 0x32, 0x2e, 0x62, 0x69,
-0x74, 0x00, 0xec, 0xfd, 0x0f, 0x78, 0x1c, 0xe5,
-0x91, 0x2f, 0x0a, 0x57, 0xbf, 0xdd, 0x92, 0x5f,
-0x4d, 0x8f, 0x34, 0xad, 0x91, 0x4c, 0x14, 0x30,
-0xa6, 0x35, 0x92, 0xcd, 0x58, 0x19, 0xc9, 0xe3,
-0x91, 0x90, 0x85, 0x10, 0xa3, 0xb6, 0x24, 0x58,
-0x45, 0x36, 0x58, 0x71, 0xd8, 0x2c, 0x67, 0x97,
-0x93, 0x1d, 0x88, 0x93, 0xe3, 0xdd, 0x75, 0x72,
-0x1c, 0x36, 0x37, 0xc7, 0x21, 0x6c, 0xf2, 0x6a,
-0x24, 0xe3, 0xb1, 0x65, 0xe3, 0xc1, 0x38, 0xc1,
-0x04, 0x92, 0x3b, 0xfe, 0x43, 0x10, 0xe0, 0x24,
-0x63, 0xd9, 0x60, 0x19, 0x1b, 0x68, 0x09, 0x41,
-0xc6, 0xb6, 0xb0, 0x15, 0xc7, 0x9b, 0x35, 0xc4,
-0x0b, 0x63, 0x50, 0x88, 0x30, 0x82, 0xc8, 0xe0,
-0x24, 0xb2, 0x2d, 0xec, 0x5b, 0xd5, 0x23, 0xcd,
-0xf4, 0x38, 0x7b, 0xf6, 0xec, 0xde, 0xf3, 0xdc,
-0xef, 0xdb, 0xef, 0xbb, 0xab, 0x73, 0x9e, 0x67,
-0x2b, 0xdd, 0xed, 0xa6, 0xfb, 0x9d, 0xb7, 0xab,
-0x7e, 0x55, 0xf5, 0xab, 0x2a, 0xc8, 0x73, 0x8d,
-0xa7, 0xfe, 0x1f, 0x80, 0x74, 0x37, 0x68, 0x77,
-0xff, 0xfd, 0x8a, 0x1a, 0xff, 0x0d, 0x7f, 0xbd,
-0xe0, 0xaf, 0xfd, 0x81, 0xaa, 0xaf, 0x7d, 0x69,
-0x39, 0xdc, 0x03, 0x6a, 0xe0, 0xef, 0x6f, 0xf0,
-0x7f, 0xf9, 0x1b, 0x5f, 0x5f, 0x50, 0x53, 0x03,
-0x5f, 0xc2, 0xff, 0xe5, 0xf7, 0x57, 0xcf, 0xf7,
-0xdf, 0x88, 0xff, 0x1f, 0x96, 0x43, 0xde, 0x82,
-0x05, 0xf5, 0x35, 0xb5, 0xf5, 0xfe, 0x1a, 0xf8,
-0x32, 0x48, 0xd5, 0x3b, 0x2f, 0xe3, 0xdf, 0xd3,
-0x8f, 0xfe, 0xf9, 0x57, 0xfc, 0x20, 0x24, 0x00,
-0x98, 0xe1, 0x97, 0x42, 0xf4, 0x7f, 0x55, 0xbf,
-0xa4, 0x4b, 0x20, 0x1a, 0x2b, 0xfd, 0x60, 0xd2,
-0xff, 0x86, 0xa9, 0xf3, 0x79, 0x7e, 0xd0, 0xed,
-0xff, 0x5b, 0xf2, 0x83, 0x01, 0xed, 0x60, 0x6c,
-0x00, 0xb7, 0x1f, 0xfe, 0xd7, 0x7f, 0x86, 0x22,
-0xa6, 0xc5, 0x7f, 0xe7, 0xf5, 0x97, 0x0f, 0x8b,
-0xff, 0xe9, 0x55, 0x99, 0xbf, 0xc6, 0x8f, 0x62,
-0xd3, 0x22, 0xfb, 0x37, 0xdc, 0x5f, 0x32, 0x20,
-0x7d, 0xff, 0x37, 0xfe, 0x4d, 0xf7, 0xff, 0xc3,
-0xf4, 0xfd, 0xff, 0xbd, 0xd7, 0x83, 0xfb, 0xdf,
-0x70, 0x39, 0x80, 0x92, 0x7e, 0x1e, 0x37, 0x38,
-0x80, 0x09, 0x88, 0x81, 0xf7, 0x5f, 0x11, 0x1a,
-0x07, 0xa7, 0xff, 0x61, 0x7f, 0xce, 0x09, 0x71,
-0x4c, 0x34, 0x24, 0x67, 0xac, 0x92, 0x67, 0x19,
-0x93, 0x7c, 0x61, 0xd2, 0x15, 0xed, 0x3c, 0x17,
-0x3b, 0x2a, 0x1a, 0x93, 0xae, 0x44, 0xd9, 0x4a,
-0x76, 0xac, 0xa3, 0x5a, 0x5f, 0x3a, 0x51, 0x34,
-0xae, 0xad, 0x9a, 0xba, 0xde, 0x2c, 0xf9, 0x2d,
-0x74, 0x8b, 0x82, 0x10, 0x8f, 0xb3, 0xca, 0x48,
-0x1f, 0x38, 0x92, 0x05, 0x1b, 0xd8, 0x6f, 0xf4,
-0xf5, 0xa2, 0x2a, 0xa9, 0xf6, 0xc1, 0x8b, 0x7c,
-0x9d, 0xa8, 0x30, 0xd4, 0x3e, 0x96, 0x54, 0xf4,
-0xa9, 0xeb, 0x13, 0xd0, 0x65, 0x74, 0x82, 0xcf,
-0x7c, 0xcc, 0x9f, 0x9b, 0xaf, 0x3c, 0x9f, 0x17,
-0x33, 0x55, 0x0d, 0x06, 0x79, 0x58, 0xf2, 0xa1,
-0x90, 0xeb, 0x84, 0x67, 0x84, 0x6e, 0xa8, 0xfe,
-0xa6, 0xc3, 0xd2, 0xf4, 0xf5, 0x66, 0xce, 0x8f,
-0xa1, 0x1b, 0xaa, 0x42, 0x25, 0xc2, 0xb1, 0x12,
-0xfa, 0xc2, 0x1e, 0xd3, 0xb1, 0x81, 0x7d, 0x85,
-0x45, 0xb4, 0xaa, 0x41, 0x75, 0x6b, 0x93, 0x0f,
-0x9e, 0xd1, 0x2b, 0x5a, 0xd5, 0x38, 0x9b, 0x50,
-0xa6, 0x9f, 0x67, 0xd1, 0xcc, 0x77, 0xc3, 0x47,
-0x1e, 0x08, 0xbe, 0xe3, 0xda, 0x5b, 0xe6, 0x83,
-0x71, 0x11, 0xe8, 0xbf, 0xee, 0x71, 0xf9, 0x5d,
-0x38, 0x6c, 0x04, 0x93, 0x2e, 0xbd, 0xcc, 0x09,
-0xef, 0xac, 0x09, 0xac, 0x72, 0xc5, 0xe5, 0xe1,
-0x96, 0xe9, 0xeb, 0x63, 0x52, 0x5c, 0xb9, 0xbc,
-0xa8, 0x71, 0x91, 0xeb, 0x5b, 0xf2, 0x41, 0xf8,
-0x04, 0x1a, 0xcd, 0xa5, 0xa6, 0x3c, 0x0e, 0x97,
-0x44, 0xa3, 0xe9, 0x1a, 0x57, 0x27, 0xb5, 0x1f,
-0x2a, 0x2f, 0xdd, 0xed, 0x1a, 0x6f, 0x1e, 0x85,
-0xd0, 0xd4, 0xf5, 0x27, 0xb4, 0x2e, 0xfe, 0x3e,
-0xd4, 0x0f, 0x5c, 0xb7, 0xfb, 0xf3, 0x63, 0xca,
-0xaf, 0xcb, 0xeb, 0xcd, 0x25, 0x8f, 0x7f, 0x6a,
-0x44, 0x9a, 0x80, 0xa0, 0xe9, 0xea, 0x93, 0x3f,
-0x84, 0xf3, 0x22, 0x60, 0x6c, 0x88, 0xcb, 0xe3,
-0xca, 0xf4, 0x7a, 0x26, 0x72, 0x74, 0xd1, 0x3d,
-0xa2, 0x1b, 0xfc, 0x59, 0xd6, 0x80, 0x2f, 0xe2,
-0x49, 0xb4, 0x46, 0xd9, 0xbb, 0x30, 0x21, 0xaa,
-0xde, 0x56, 0x9f, 0x65, 0x93, 0xb0, 0xbf, 0xab,
-0xd6, 0xcc, 0x8f, 0xb3, 0x8f, 0x70, 0xf7, 0x4f,
-0xbd, 0xaf, 0xb2, 0x44, 0xd9, 0x91, 0xe0, 0xe3,
-0x8e, 0x9a, 0xdc, 0x8d, 0x7a, 0x54, 0xd2, 0x4f,
-0x73, 0xb7, 0x7b, 0x44, 0xe9, 0x15, 0xbe, 0xa4,
-0xaa, 0xb0, 0x21, 0xa8, 0x86, 0x98, 0xc1, 0xfd,
-0x6c, 0x02, 0xbf, 0x95, 0xd4, 0xdf, 0xb8, 0xf6,
-0x5d, 0xf8, 0x94, 0x28, 0xfb, 0x69, 0xeb, 0x6a,
-0xcf, 0x6c, 0xe8, 0xea, 0xbb, 0x3b, 0xe9, 0xbd,
-0x93, 0xfd, 0x2a, 0x54, 0x1e, 0xa9, 0x4c, 0xaa,
-0x2b, 0xd8, 0x9b, 0xc6, 0xbe, 0xe1, 0x39, 0xa1,
-0xbc, 0xd5, 0xec, 0x64, 0xfa, 0xfe, 0xad, 0x7c,
-0x89, 0xf1, 0x0e, 0xd4, 0x8d, 0x3a, 0x6a, 0x9b,
-0x37, 0xc0, 0x2f, 0xcd, 0x78, 0xff, 0x92, 0x9b,
-0x9a, 0x86, 0x8c, 0x5e, 0xad, 0x21, 0xe9, 0xaa,
-0x29, 0x3b, 0x2a, 0x3e, 0x86, 0x40, 0xbb, 0xd3,
-0x2f, 0x1f, 0x67, 0xd3, 0xcf, 0x6f, 0xcc, 0x3c,
-0x08, 0xbf, 0x85, 0xe0, 0xa0, 0x67, 0x5c, 0xde,
-0x05, 0xfb, 0xe0, 0x06, 0x13, 0x57, 0x6f, 0xd2,
-0xb8, 0x5f, 0xc3, 0xf7, 0x1d, 0x97, 0x27, 0xe1,
-0x8f, 0x4a, 0x63, 0x8b, 0x3a, 0x2e, 0x0f, 0xb3,
-0xe9, 0xf5, 0xe1, 0x33, 0x7b, 0xe0, 0x22, 0xf8,
-0x4d, 0x67, 0xbc, 0x79, 0x97, 0x11, 0x67, 0x6e,
-0x73, 0x69, 0x54, 0x1a, 0x81, 0x93, 0x10, 0x4c,
-0x3a, 0xe3, 0xf2, 0x07, 0xe6, 0x00, 0x04, 0x42,
-0x28, 0x0c, 0x40, 0x7a, 0x3f, 0x68, 0x51, 0x78,
-0x16, 0x4a, 0xcd, 0xfc, 0x55, 0x15, 0xb3, 0xa2,
-0x7b, 0x51, 0x58, 0xdc, 0xce, 0x06, 0xa1, 0x0b,
-0x6e, 0x34, 0x1d, 0xab, 0x9a, 0x86, 0xf4, 0x5f,
-0xc1, 0x53, 0x06, 0x5f, 0x85, 0xeb, 0x33, 0x7d,
-0xbd, 0x0e, 0x8f, 0xc1, 0x4b, 0xa2, 0x2c, 0xf9,
-0xe8, 0x6a, 0xc7, 0x8f, 0xe0, 0xa5, 0xf0, 0x9c,
-0x64, 0xdb, 0x6a, 0xcf, 0x9b, 0xd0, 0x25, 0xe6,
-0x27, 0xf3, 0x56, 0x2f, 0x7b, 0x53, 0xac, 0x15,
-0xd7, 0xdf, 0xc3, 0x57, 0x33, 0x33, 0xbd, 0xdf,
-0x46, 0x8b, 0xd7, 0xc3, 0x6e, 0xd0, 0x5f, 0xcf,
-0x0b, 0x38, 0x36, 0xf0, 0x3d, 0xc9, 0x72, 0x53,
-0xad, 0x61, 0x1f, 0xe4, 0x75, 0xc4, 0xbc, 0x21,
-0xf5, 0x06, 0x5c, 0xcf, 0x87, 0x4d, 0x5f, 0xc8,
-0xeb, 0x67, 0xc7, 0xd3, 0xd7, 0x8f, 0xcc, 0xbc,
-0x08, 0x17, 0x62, 0xd5, 0xd1, 0xfc, 0x0f, 0xd5,
-0x1e, 0xb8, 0xb4, 0xad, 0x56, 0x14, 0x7c, 0x59,
-0x3e, 0xcf, 0x1e, 0x0c, 0x05, 0x3b, 0xf3, 0x56,
-0x7c, 0x7e, 0x14, 0x5e, 0x8d, 0x2d, 0x8c, 0x3b,
-0x63, 0xf2, 0x84, 0x32, 0xfd, 0xbe, 0xad, 0x92,
-0xd0, 0x27, 0xe0, 0x45, 0xcd, 0xd5, 0x25, 0xdf,
-0x0d, 0x13, 0xec, 0x79, 0x40, 0x21, 0x19, 0x19,
-0x65, 0x41, 0x28, 0x10, 0x9d, 0x49, 0x3e, 0x01,
-0xf7, 0x31, 0x97, 0x90, 0x8f, 0xc3, 0xb4, 0x16,
-0x71, 0x6a, 0x3b, 0x9b, 0x0e, 0x41, 0xaf, 0xe1,
-0x8c, 0xca, 0xb9, 0xe1, 0x43, 0xa2, 0xb6, 0xc5,
-0xb5, 0x55, 0xfe, 0x4a, 0xd7, 0xa1, 0x45, 0xc1,
-0x90, 0xeb, 0x71, 0xf9, 0x01, 0x71, 0x28, 0x12,
-0x30, 0x36, 0x45, 0xe5, 0x01, 0x65, 0xfa, 0x7a,
-0x01, 0x5f, 0x81, 0x0e, 0x43, 0xff, 0x2f, 0x8e,
-0xab, 0xcb, 0x7e, 0x13, 0xe9, 0x10, 0x9e, 0x90,
-0xfa, 0x28, 0x2b, 0x87, 0xd7, 0xa1, 0xca, 0x50,
-0xa3, 0xee, 0xb9, 0xf0, 0x7a, 0xc8, 0x83, 0x02,
-0x4b, 0x82, 0x36, 0x75, 0x7d, 0x5d, 0x4e, 0x39,
-0xac, 0x03, 0x8f, 0xd1, 0xba, 0x19, 0x2f, 0x5b,
-0x17, 0xfa, 0x31, 0x9e, 0x0d, 0xaf, 0xa4, 0x2f,
-0xa8, 0x55, 0xdd, 0xc2, 0x76, 0xc2, 0x3a, 0xdd,
-0xba, 0xfe, 0xd5, 0xf4, 0x7e, 0xf0, 0x16, 0x3b,
-0xb7, 0xad, 0x13, 0x1e, 0xa3, 0xcd, 0xbd, 0x7e,
-0xb0, 0xa7, 0xc3, 0x1b, 0x32, 0x54, 0xf7, 0x80,
-0xb2, 0xed, 0x21, 0x70, 0x1a, 0xaa, 0xc6, 0x94,
-0xd8, 0xa3, 0x90, 0x24, 0x61, 0x60, 0x7a, 0x3b,
-0xc0, 0xea, 0xfc, 0x90, 0x48, 0x40, 0x00, 0x78,
-0x58, 0xd5, 0x45, 0x42, 0xaf, 0x95, 0xd4, 0xb0,
-0x4c, 0x47, 0x82, 0xa0, 0x0a, 0x39, 0x86, 0x42,
-0x2f, 0xe0, 0xfb, 0xbe, 0x29, 0x4d, 0x3f, 0xcf,
-0xd6, 0x99, 0xe7, 0xe0, 0xf7, 0xd0, 0x68, 0x2c,
-0x5d, 0xf6, 0xf2, 0xce, 0xd8, 0x27, 0xde, 0xa0,
-0xe1, 0x1a, 0x96, 0xce, 0x6d, 0xfb, 0x04, 0x6e,
-0x36, 0xd4, 0x61, 0x79, 0x04, 0x2e, 0xc3, 0xcd,
-0x6d, 0xae, 0xa8, 0xfc, 0x95, 0x9c, 0xe9, 0xef,
-0xb1, 0x24, 0x67, 0x2f, 0xd0, 0xd9, 0x45, 0xc7,
-0x17, 0xef, 0x15, 0xff, 0xc0, 0xaa, 0xf1, 0x1f,
-0xb2, 0x1b, 0xc4, 0x3f, 0xe4, 0xdc, 0x64, 0xac,
-0x1d, 0x96, 0xf7, 0xe2, 0xad, 0x7a, 0x5b, 0xf0,
-0xfa, 0x57, 0x61, 0xfa, 0xfa, 0xba, 0x92, 0xd3,
-0xd0, 0xa7, 0x54, 0x09, 0x1e, 0x0e, 0xeb, 0xa2,
-0x17, 0xf0, 0x79, 0xba, 0x1c, 0xa5, 0xa2, 0x0f,
-0x3c, 0xa0, 0xc6, 0x58, 0x29, 0xa0, 0x20, 0x54,
-0xc1, 0x8e, 0xa6, 0xd7, 0xb3, 0x55, 0xe9, 0x32,
-0x76, 0x83, 0xcf, 0xc8, 0x2b, 0x72, 0x6c, 0x8c,
-0xed, 0x87, 0x90, 0xb1, 0xb8, 0xd8, 0x93, 0x03,
-0xfb, 0xc3, 0xba, 0xb1, 0x58, 0x73, 0xaf, 0x51,
-0xf6, 0x33, 0x9d, 0xde, 0xf7, 0xb8, 0x34, 0x7d,
-0xff, 0xad, 0xca, 0x2e, 0xe9, 0x00, 0xae, 0x36,
-0x8f, 0xe2, 0x7a, 0xee, 0x87, 0xb9, 0xb4, 0x7a,
-0xe5, 0xfa, 0x7e, 0xd8, 0x6e, 0x74, 0x3f, 0x64,
-0x1d, 0xb1, 0xd6, 0xf3, 0xdd, 0xf4, 0x7e, 0x88,
-0xcd, 0x7c, 0xb7, 0xe4, 0xbc, 0xd2, 0xd0, 0x7e,
-0xdb, 0x6c, 0x75, 0x27, 0x9c, 0x1f, 0xf6, 0x18,
-0xae, 0xc7, 0x3b, 0xe7, 0xc2, 0xf9, 0xa6, 0xfa,
-0xd0, 0x75, 0x5b, 0x71, 0xfd, 0xcf, 0xb6, 0x07,
-0x96, 0xe3, 0xf3, 0x8f, 0xa6, 0xf5, 0x55, 0x62,
-0xd1, 0x4e, 0x71, 0x9e, 0xe3, 0xb2, 0x6c, 0xc6,
-0xd5, 0x38, 0x0f, 0x28, 0x3c, 0x2a, 0xbf, 0xbb,
-0xe8, 0x7c, 0x6b, 0x70, 0x05, 0x6e, 0x0c, 0x3c,
-0x22, 0xf0, 0x48, 0x54, 0xbe, 0x90, 0xd6, 0x3f,
-0x5c, 0x8b, 0xe1, 0xd7, 0x5c, 0x0f, 0xf9, 0xe2,
-0x4b, 0xba, 0x38, 0x19, 0xaa, 0x85, 0x7c, 0x90,
-0x75, 0xa0, 0xf5, 0xf7, 0x09, 0x59, 0x37, 0x4e,
-0x42, 0x40, 0xcb, 0x17, 0xf2, 0xe1, 0xf4, 0x7e,
-0xf6, 0xe6, 0xd4, 0xc3, 0x51, 0xa3, 0x4c, 0xf0,
-0xa4, 0xfb, 0x46, 0xc8, 0x6d, 0xa9, 0x88, 0x5d,
-0x33, 0xc6, 0xbc, 0xf0, 0x40, 0x17, 0xae, 0xd8,
-0x0a, 0xd6, 0x07, 0x6f, 0x0a, 0x5c, 0x9f, 0x18,
-0x3b, 0x9c, 0xd9, 0x0f, 0x4a, 0x0b, 0x74, 0x1a,
-0xde, 0x81, 0x3c, 0xdd, 0x93, 0x0f, 0x0f, 0x47,
-0xf5, 0x91, 0xcf, 0x56, 0x7b, 0x9c, 0x78, 0xc4,
-0x97, 0x44, 0xb5, 0x93, 0x0b, 0x3b, 0x56, 0xe9,
-0xfd, 0x79, 0x7e, 0xbc, 0x7e, 0xfa, 0xf7, 0x15,
-0xda, 0x17, 0xf4, 0xb5, 0xa2, 0xcc, 0xf4, 0x7e,
-0x83, 0x39, 0x60, 0x0d, 0xcc, 0x33, 0xd4, 0x71,
-0x36, 0x1b, 0xd6, 0xf0, 0xfc, 0x7b, 0x5a, 0xc7,
-0x07, 0x7e, 0xc4, 0x1f, 0x91, 0x4a, 0x4d, 0x75,
-0x95, 0x67, 0x34, 0x7d, 0x7d, 0x24, 0x72, 0x2b,
-0xfc, 0x5c, 0xdc, 0x98, 0xbc, 0xcd, 0x3b, 0x63,
-0x36, 0xff, 0x95, 0x58, 0x80, 0xda, 0xa9, 0xa8,
-0x80, 0xbd, 0x22, 0x6e, 0x0e, 0x39, 0xef, 0x94,
-0x67, 0xc3, 0x6f, 0xc5, 0x82, 0x64, 0xfe, 0x6a,
-0xe9, 0x8c, 0x67, 0xfa, 0x7a, 0x2e, 0xed, 0x82,
-0x77, 0x48, 0xbb, 0xc6, 0xd4, 0x51, 0x98, 0x80,
-0xfa, 0x45, 0xae, 0xb8, 0x3a, 0x86, 0x0b, 0xd5,
-0x60, 0xb8, 0xfc, 0xf2, 0x10, 0xaa, 0x9a, 0x17,
-0x07, 0x51, 0x23, 0x0d, 0x3c, 0x30, 0xbd, 0x3e,
-0x4c, 0x39, 0x08, 0x97, 0xf1, 0x26, 0xce, 0x51,
-0x39, 0xd8, 0xb2, 0xb6, 0xe3, 0x33, 0xcb, 0x5d,
-0x13, 0xec, 0x45, 0x98, 0x14, 0x8d, 0x21, 0x57,
-0x9d, 0xf4, 0x1d, 0xf8, 0xa4, 0x03, 0x4f, 0x4d,
-0xc8, 0x66, 0x7a, 0xff, 0xf4, 0x94, 0x3c, 0x2e,
-0xf6, 0xf1, 0xd2, 0x01, 0x3e, 0xce, 0xea, 0x59,
-0x87, 0x5e, 0x6a, 0xa8, 0xdf, 0x61, 0xb3, 0xc4,
-0x5e, 0xf0, 0x35, 0xa9, 0xdf, 0x96, 0x67, 0x89,
-0x7d, 0xb0, 0xdb, 0x44, 0xfd, 0x73, 0x46, 0x4c,
-0xdf, 0x1f, 0xc4, 0xe3, 0x8b, 0xf6, 0xa1, 0x9a,
-0xe2, 0xcb, 0x1d, 0x77, 0x88, 0x4d, 0xac, 0xd2,
-0x58, 0x1c, 0x60, 0xa7, 0x60, 0x2f, 0x54, 0x1a,
-0xea, 0x32, 0x76, 0x8a, 0xbf, 0x00, 0xd7, 0xd3,
-0xf5, 0x19, 0xfd, 0xa3, 0x2b, 0x0f, 0x6a, 0xbd,
-0x22, 0x66, 0x72, 0x70, 0x87, 0x34, 0x01, 0x8a,
-0x81, 0xfa, 0xe7, 0x36, 0x88, 0x0b, 0xdf, 0xdd,
-0xaa, 0x9b, 0x6d, 0x80, 0x38, 0xe8, 0x6f, 0xe3,
-0xc2, 0x26, 0xd2, 0xfb, 0xb3, 0x67, 0xe6, 0x00,
-0xfe, 0xe8, 0x7e, 0xc3, 0xb7, 0x4b, 0x5e, 0x09,
-0x47, 0xb4, 0x17, 0x0d, 0xd7, 0x5e, 0x79, 0x4c,
-0x99, 0x68, 0x9a, 0x1d, 0xba, 0xe6, 0xa0, 0x3c,
-0xa6, 0x5d, 0x14, 0x0b, 0xdf, 0x46, 0xfd, 0x79,
-0x26, 0xbd, 0x7f, 0x84, 0xb4, 0x33, 0x74, 0x11,
-0x82, 0xc3, 0xf3, 0xfb, 0xe4, 0x1e, 0x38, 0xab,
-0xd5, 0x1b, 0xd7, 0xc5, 0x5f, 0xde, 0x29, 0x26,
-0xda, 0x83, 0xc6, 0xd2, 0x83, 0x78, 0x87, 0x8b,
-0x22, 0x48, 0x1a, 0x3b, 0x99, 0xde, 0x3f, 0xa5,
-0xda, 0x5e, 0xf6, 0xcf, 0xd0, 0xd8, 0xb4, 0x31,
-0xa9, 0xd6, 0xc1, 0x9b, 0x50, 0x6d, 0xa0, 0x75,
-0x9b, 0x14, 0x8f, 0xf3, 0xea, 0xe5, 0x6b, 0x87,
-0x9b, 0x83, 0xf8, 0x3d, 0x56, 0x93, 0x62, 0x37,
-0x5b, 0xa6, 0x9f, 0x7f, 0x9b, 0xf2, 0x15, 0xe8,
-0x36, 0xab, 0x3e, 0xe2, 0x5e, 0xdc, 0x36, 0x91,
-0x98, 0x65, 0xcd, 0x8f, 0x32, 0xf1, 0x36, 0x0a,
-0x3e, 0x77, 0x15, 0xec, 0xe9, 0xf0, 0x98, 0x68,
-0x7f, 0x93, 0x46, 0x7a, 0x3f, 0xe4, 0x54, 0xc0,
-0x3a, 0x51, 0x15, 0xca, 0xeb, 0xf1, 0x54, 0xc1,
-0x56, 0xe1, 0xb9, 0xdb, 0xd1, 0xc7, 0xc6, 0xa0,
-0x27, 0x8c, 0x9f, 0xc9, 0x41, 0xe6, 0x8b, 0xee,
-0x17, 0x1e, 0x73, 0x71, 0xbc, 0x29, 0x99, 0xde,
-0x6f, 0xbc, 0xd8, 0x09, 0x0f, 0x23, 0x1e, 0xc0,
-0x45, 0x70, 0x88, 0xe8, 0x22, 0xaf, 0xa1, 0x06,
-0xd8, 0x08, 0xf4, 0xc0, 0x8a, 0x16, 0x35, 0x8e,
-0x78, 0xe0, 0x00, 0xe8, 0xa6, 0xea, 0x67, 0x03,
-0xd2, 0xf4, 0xf2, 0x43, 0xfe, 0x4a, 0xed, 0x10,
-0x04, 0x95, 0xfc, 0x18, 0xda, 0xf7, 0x37, 0x8c,
-0x80, 0xe1, 0xda, 0xb7, 0x63, 0x0c, 0x37, 0x46,
-0xc0, 0x58, 0x1c, 0x57, 0x2b, 0x95, 0x8b, 0xd0,
-0x4b, 0xef, 0x6b, 0xa6, 0xf5, 0xcf, 0xf6, 0x99,
-0xe7, 0xf8, 0x6f, 0xa1, 0x31, 0x31, 0x3f, 0x29,
-0xbf, 0xc7, 0xc7, 0x50, 0x11, 0xa1, 0x76, 0x9a,
-0x84, 0x53, 0xd0, 0xd8, 0xba, 0xe9, 0xb4, 0x3c,
-0x19, 0xfb, 0x03, 0x90, 0xa1, 0x97, 0x47, 0x73,
-0xa6, 0xd7, 0xdf, 0xbc, 0x65, 0x3c, 0x3a, 0x08,
-0xf5, 0xdc, 0x35, 0x50, 0xa6, 0x8b, 0x49, 0x7f,
-0x63, 0x89, 0x53, 0xc8, 0xe3, 0x5d, 0x93, 0x7a,
-0x23, 0x9f, 0x35, 0xd0, 0x39, 0xae, 0x0f, 0x79,
-0xaa, 0xb9, 0x6b, 0x18, 0x11, 0x42, 0x7a, 0xfd,
-0xb5, 0x0f, 0x94, 0x5f, 0x9b, 0x9e, 0xc1, 0x82,
-0x83, 0x57, 0xcd, 0x87, 0x03, 0x86, 0x6f, 0xd8,
-0x7b, 0xb0, 0xe9, 0x43, 0xe3, 0x40, 0xb4, 0xea,
-0x1c, 0x3f, 0xc8, 0xe6, 0xc3, 0x33, 0x51, 0xcf,
-0x88, 0xba, 0x0b, 0xf5, 0xf3, 0xf4, 0xfd, 0x39,
-0xf4, 0x43, 0xa7, 0xd6, 0x03, 0x6a, 0x79, 0x20,
-0x47, 0xd9, 0x1d, 0xf2, 0x6d, 0xe5, 0x0b, 0x98,
-0xc9, 0xe3, 0xb4, 0x02, 0xe0, 0x4e, 0x40, 0x07,
-0xda, 0x77, 0xdc, 0x21, 0x03, 0x69, 0xfd, 0x63,
-0xce, 0xdc, 0x85, 0x3a, 0xc8, 0x63, 0xb6, 0x45,
-0xd9, 0x0a, 0x78, 0x3e, 0x07, 0x15, 0x91, 0x60,
-0x63, 0xfc, 0x80, 0x56, 0x05, 0x3c, 0xde, 0x54,
-0x0e, 0x4f, 0xa3, 0x7e, 0xeb, 0x14, 0x6c, 0x3c,
-0xad, 0x7f, 0xa0, 0x78, 0x07, 0x4f, 0x28, 0xf5,
-0xa6, 0x2b, 0xaa, 0x7a, 0xf8, 0x84, 0x14, 0xd4,
-0x96, 0x88, 0x2f, 0x8d, 0xf1, 0x09, 0x33, 0x08,
-0xde, 0xa8, 0x3c, 0x08, 0x68, 0x7f, 0x05, 0xea,
-0x13, 0x33, 0xbd, 0xdf, 0x4e, 0x8b, 0x97, 0xe0,
-0xbb, 0xac, 0x51, 0xba, 0x3d, 0x24, 0xbf, 0xa4,
-0x5d, 0xd6, 0x68, 0x35, 0xca, 0xc6, 0xf1, 0x0b,
-0xba, 0xd9, 0x74, 0x9d, 0x9e, 0x31, 0x01, 0x9f,
-0x30, 0x5c, 0xb1, 0xa4, 0x3c, 0x61, 0x4c, 0xef,
-0x07, 0x53, 0xdb, 0x26, 0x5d, 0xe4, 0xbd, 0x89,
-0x4d, 0xf1, 0x32, 0xd4, 0x4e, 0x4a, 0x6d, 0xd4,
-0xd9, 0x2b, 0x8f, 0x41, 0xc2, 0xc0, 0x6d, 0x16,
-0x2d, 0xdb, 0xa5, 0x1f, 0xe1, 0x01, 0x5c, 0xff,
-0x66, 0x7f, 0x06, 0xef, 0x29, 0x55, 0x10, 0x37,
-0x51, 0x1b, 0x47, 0xd8, 0x28, 0xd4, 0x2b, 0x1e,
-0x23, 0xff, 0x41, 0xf6, 0x36, 0xda, 0xa3, 0xaf,
-0x79, 0xd5, 0x79, 0x4c, 0xf7, 0x9f, 0xd4, 0xb7,
-0x93, 0xe1, 0xb8, 0x37, 0xfd, 0xf3, 0x26, 0x73,
-0xbe, 0x86, 0x1f, 0x45, 0x4c, 0xbb, 0x86, 0x33,
-0xb4, 0x25, 0x2c, 0xd7, 0x68, 0x75, 0x36, 0x0d,
-0x28, 0x9d, 0x9a, 0x4f, 0x57, 0xbd, 0xac, 0x93,
-0x09, 0x53, 0x87, 0xc5, 0x1a, 0xab, 0x4b, 0xe3,
-0x9f, 0x90, 0xe4, 0x86, 0x7d, 0x91, 0xd2, 0x91,
-0x6b, 0x56, 0xe7, 0xfe, 0x4a, 0xdf, 0xfd, 0x40,
-0x69, 0x8c, 0xdf, 0x07, 0x47, 0xf5, 0x2e, 0x81,
-0xf8, 0xe7, 0x4e, 0x54, 0x44, 0x8f, 0xc4, 0x4b,
-0x93, 0xf8, 0x0f, 0xef, 0x54, 0xa6, 0xf7, 0x5b,
-0x2b, 0x77, 0xea, 0x7b, 0xc0, 0x3f, 0xd7, 0x55,
-0xda, 0x79, 0x14, 0x3e, 0x96, 0x6a, 0x7e, 0xc1,
-0x6f, 0x92, 0xcd, 0xa6, 0x97, 0x0d, 0x9f, 0xe9,
-0xd2, 0x3b, 0x23, 0xd0, 0xaf, 0xfb, 0x5b, 0x50,
-0xb1, 0xb8, 0x73, 0xa7, 0x9f, 0xc7, 0xc8, 0x8f,
-0x1b, 0x93, 0x5a, 0x63, 0xff, 0x52, 0xfc, 0xd1,
-0x8d, 0x09, 0x68, 0x84, 0xf9, 0xfd, 0xcd, 0x93,
-0x78, 0xa4, 0x0a, 0x5c, 0x5a, 0xd1, 0x09, 0xe3,
-0x23, 0xbd, 0x51, 0xb8, 0x12, 0xf2, 0x70, 0x7a,
-0xfd, 0x7b, 0x72, 0xc6, 0xc0, 0x84, 0xda, 0xa4,
-0x33, 0x5a, 0x36, 0x0a, 0x67, 0x44, 0x2f, 0xee,
-0xb7, 0xb2, 0x31, 0x54, 0x53, 0x0d, 0x3a, 0x7e,
-0xb6, 0x83, 0x70, 0x38, 0xb5, 0xfe, 0x67, 0xd2,
-0xfb, 0x27, 0x51, 0x18, 0x65, 0x6b, 0xa1, 0x0c,
-0xf2, 0x43, 0x72, 0x17, 0xea, 0xcf, 0x52, 0x81,
-0xda, 0x63, 0x98, 0xf4, 0x89, 0xe9, 0x30, 0x50,
-0xd1, 0xaf, 0x61, 0xa8, 0x91, 0x42, 0xec, 0xa3,
-0xf4, 0xf3, 0x9b, 0xf0, 0x23, 0x78, 0x52, 0x54,
-0x8e, 0x23, 0xc8, 0x79, 0x13, 0x76, 0x88, 0xd2,
-0xa4, 0x63, 0x35, 0x7b, 0x0b, 0xf6, 0xe1, 0xfb,
-0x5a, 0x47, 0x1e, 0x8e, 0x94, 0xbe, 0xad, 0xae,
-0x66, 0xe3, 0x69, 0xbc, 0xd4, 0x5a, 0x6c, 0x12,
-0xc0, 0xf7, 0xe7, 0x31, 0x44, 0xfa, 0x02, 0x0f,
-0x73, 0x60, 0x2f, 0x43, 0x5c, 0xf1, 0x49, 0x0e,
-0x85, 0xf5, 0x43, 0x54, 0xe8, 0xba, 0x0a, 0x88,
-0x7f, 0xa6, 0xf7, 0xc3, 0x28, 0xe2, 0xb7, 0x33,
-0x30, 0x3b, 0xbe, 0x44, 0x97, 0x13, 0x70, 0x46,
-0x0a, 0x74, 0x14, 0xc4, 0xe4, 0xf7, 0xe1, 0x02,
-0x04, 0x05, 0xc2, 0x9e, 0x51, 0xf6, 0x06, 0xf4,
-0x0a, 0xdc, 0x0f, 0x17, 0x32, 0xf8, 0x07, 0xce,
-0xc2, 0x5d, 0xb0, 0xb0, 0xc4, 0x65, 0xca, 0x71,
-0x98, 0xc4, 0xf5, 0xf9, 0x22, 0xe2, 0x67, 0x71,
-0x0e, 0x05, 0xd7, 0x20, 0x7e, 0x26, 0x23, 0xc6,
-0xcd, 0x80, 0xa7, 0x32, 0xf8, 0x27, 0xd2, 0xfe,
-0xaa, 0xf2, 0x8b, 0xc2, 0x00, 0xc1, 0x9e, 0xff,
-0x06, 0x87, 0x50, 0x8d, 0x3b, 0xa3, 0x45, 0x23,
-0x2d, 0xe7, 0x63, 0x9e, 0x90, 0x4b, 0xeb, 0x54,
-0x62, 0x87, 0xa2, 0x01, 0xc3, 0xa9, 0xc9, 0x2c,
-0x83, 0x7f, 0x94, 0xe5, 0xa1, 0x75, 0x03, 0x9e,
-0x56, 0x75, 0x2b, 0x9b, 0x8b, 0xc0, 0xa6, 0xca,
-0x28, 0xf9, 0x3e, 0xea, 0x87, 0xfd, 0xe2, 0x9e,
-0x90, 0xfa, 0x90, 0x63, 0xae, 0x78, 0xbd, 0x09,
-0x77, 0x54, 0x54, 0x0e, 0xa5, 0xed, 0x4b, 0x89,
-0xe2, 0x83, 0x1f, 0xc2, 0x0e, 0x43, 0x3d, 0xce,
-0xbe, 0xc1, 0x36, 0xc2, 0x7c, 0xe3, 0xd1, 0x61,
-0x76, 0x4e, 0x79, 0x01, 0x3e, 0xd3, 0xaa, 0x0e,
-0x7b, 0x6a, 0x60, 0x23, 0x94, 0x19, 0x91, 0x61,
-0x96, 0xfe, 0x79, 0x81, 0x2b, 0xc5, 0xb1, 0x35,
-0xde, 0xd2, 0x36, 0x75, 0x59, 0x98, 0x84, 0xca,
-0xb6, 0x75, 0xcb, 0xc2, 0x27, 0x62, 0xcf, 0x7a,
-0xe7, 0x2d, 0x96, 0xef, 0x7d, 0xa0, 0x38, 0xf6,
-0x08, 0x9e, 0xca, 0x5b, 0x16, 0x6e, 0x4a, 0x5f,
-0xdf, 0xc7, 0x43, 0xe2, 0x0d, 0x3d, 0xc0, 0x5d,
-0x16, 0xec, 0xd1, 0x1b, 0x78, 0x5e, 0x58, 0x4e,
-0x8a, 0x3e, 0xfd, 0x69, 0x3a, 0x42, 0x88, 0x28,
-0x90, 0xe7, 0x1c, 0x90, 0x0b, 0x58, 0x1a, 0xff,
-0x38, 0x07, 0x63, 0x68, 0xd6, 0x09, 0xe4, 0xe0,
-0xf7, 0xe2, 0x0d, 0xb6, 0x55, 0x45, 0xa5, 0xe5,
-0x68, 0xbf, 0x6a, 0xd1, 0xac, 0x17, 0x8d, 0xf0,
-0xf3, 0xf0, 0x53, 0xb2, 0xef, 0xef, 0xe6, 0xa6,
-0xf1, 0x06, 0xe2, 0xa5, 0x0f, 0xa0, 0xba, 0xbd,
-0xe0, 0xb8, 0x5c, 0x13, 0x3b, 0xe4, 0x0f, 0x7c,
-0x6e, 0x16, 0xc1, 0x9e, 0xd7, 0xf4, 0xc6, 0x36,
-0x27, 0x1e, 0x81, 0xd7, 0x50, 0xd1, 0x39, 0x37,
-0xcb, 0xb9, 0xd2, 0xf4, 0xfa, 0xd7, 0x41, 0xa9,
-0x1e, 0x01, 0x8f, 0x82, 0x6a, 0x41, 0x87, 0x88,
-0xdf, 0xa3, 0x91, 0x60, 0x44, 0x00, 0xf5, 0x43,
-0x87, 0xa3, 0x14, 0xd6, 0x83, 0xa7, 0x0b, 0x8f,
-0x14, 0xa4, 0xd7, 0x93, 0xdf, 0x31, 0x78, 0x7c,
-0x5b, 0x61, 0x8f, 0x51, 0x51, 0xc8, 0x14, 0xe8,
-0xd0, 0xf5, 0x25, 0xbc, 0x90, 0x75, 0x41, 0x87,
-0xe6, 0x33, 0x38, 0xe2, 0x3d, 0xa3, 0x43, 0xf3,
-0x18, 0x78, 0x84, 0x49, 0xd3, 0xd7, 0x97, 0xe4,
-0x20, 0x68, 0x34, 0x50, 0x45, 0x45, 0x51, 0xdb,
-0xac, 0x33, 0x3c, 0x29, 0x20, 0x84, 0x3f, 0x44,
-0xab, 0x81, 0x82, 0x81, 0x1e, 0x8d, 0xc1, 0x1f,
-0x62, 0xb9, 0x19, 0xfc, 0xa3, 0xec, 0xe4, 0xef,
-0xa1, 0x19, 0x2a, 0x88, 0xb2, 0x39, 0xfa, 0x67,
-0xf1, 0x69, 0xf9, 0x0f, 0x3b, 0x77, 0xe2, 0x0f,
-0x1d, 0x5c, 0x86, 0x88, 0x77, 0x2e, 0x1c, 0x32,
-0xfc, 0xed, 0xce, 0xad, 0xb2, 0xb7, 0x6b, 0xfa,
-0x7d, 0x9f, 0x86, 0x9d, 0xb0, 0x5b, 0xa0, 0x35,
-0xff, 0xb4, 0x3a, 0xe2, 0x3e, 0x0f, 0x07, 0x97,
-0xcf, 0x47, 0x35, 0xc5, 0xd0, 0xbe, 0x87, 0x50,
-0x18, 0x61, 0x67, 0xe1, 0x45, 0x63, 0x7e, 0x54,
-0x3d, 0x93, 0xb6, 0x5f, 0x5e, 0xdc, 0xc4, 0x27,
-0x5b, 0x03, 0x04, 0xaa, 0x25, 0x18, 0x36, 0x02,
-0xe0, 0x64, 0xcd, 0xba, 0x81, 0x88, 0x54, 0x6b,
-0x00, 0x19, 0xe0, 0x24, 0xc7, 0x23, 0x20, 0x3b,
-0xba, 0xa6, 0xf7, 0xbf, 0x0e, 0x37, 0x72, 0xc4,
-0x3f, 0xf1, 0x82, 0x58, 0x93, 0x57, 0xff, 0x81,
-0xe2, 0x11, 0xde, 0x24, 0xab, 0xa0, 0x65, 0xd9,
-0xce, 0xc7, 0x50, 0x8d, 0x1c, 0xe5, 0x9e, 0x0e,
-0x1e, 0x63, 0x3c, 0x83, 0x7f, 0xbe, 0xb7, 0x24,
-0xdc, 0x69, 0xf4, 0x9c, 0x5b, 0x5c, 0x82, 0xcb,
-0xf2, 0x30, 0x78, 0x4d, 0xee, 0x73, 0x28, 0xee,
-0x0e, 0x11, 0x0b, 0x39, 0xfc, 0xeb, 0xf3, 0x3d,
-0xe1, 0xae, 0x98, 0xb9, 0xc2, 0xdf, 0xe6, 0x48,
-0xeb, 0x9f, 0x52, 0x49, 0xc1, 0xcf, 0xf6, 0x29,
-0xf3, 0xea, 0x6f, 0xb8, 0x1f, 0x87, 0x47, 0x60,
-0x5e, 0x82, 0xfb, 0xc3, 0xb3, 0x40, 0x36, 0xb7,
-0x99, 0xeb, 0x61, 0xbb, 0xa2, 0x3f, 0x00, 0x77,
-0x93, 0x69, 0xe3, 0x46, 0xfa, 0xfe, 0x30, 0x1b,
-0x5e, 0x16, 0x37, 0x9e, 0x76, 0xd5, 0xa9, 0x3f,
-0x82, 0xb7, 0x22, 0x37, 0xbd, 0x6d, 0xac, 0x96,
-0x0b, 0x10, 0x11, 0xf9, 0xf1, 0x43, 0x46, 0xfc,
-0x33, 0x80, 0x82, 0x73, 0xb5, 0xec, 0x48, 0xfb,
-0x5f, 0xbc, 0x70, 0x97, 0xf2, 0x3e, 0xd4, 0x92,
-0x51, 0x43, 0x6b, 0x1e, 0xaa, 0x3d, 0xb1, 0x89,
-0xf0, 0x0f, 0x5a, 0x7c, 0x73, 0x23, 0xae, 0x0f,
-0x3f, 0x83, 0xc2, 0x52, 0xc4, 0x3f, 0x69, 0xff,
-0xcb, 0xc8, 0x19, 0x93, 0xfe, 0x49, 0x2c, 0x4c,
-0x16, 0x4c, 0xc8, 0x97, 0xe0, 0xf2, 0xe3, 0x37,
-0x25, 0x1d, 0x37, 0xca, 0x41, 0xbc, 0x7f, 0xf5,
-0xa8, 0x6b, 0xa2, 0xb9, 0xa2, 0xfd, 0xe8, 0xe6,
-0xea, 0xa4, 0xeb, 0xbc, 0x3c, 0x9c, 0xc1, 0x3f,
-0x85, 0xcf, 0xed, 0x5c, 0xa3, 0x97, 0x0e, 0xf2,
-0xaf, 0x87, 0x4f, 0x29, 0x7f, 0x8c, 0xde, 0xf0,
-0x2a, 0x5f, 0x1d, 0x9e, 0xa5, 0xff, 0x13, 0x2f,
-0x7d, 0x3b, 0xef, 0xaf, 0xc2, 0x57, 0x85, 0x1e,
-0xa8, 0x2b, 0x1d, 0x54, 0xff, 0x3e, 0x7c, 0x26,
-0xfd, 0xfb, 0x3e, 0x04, 0x5b, 0x17, 0xad, 0x85,
-0x72, 0xf3, 0x33, 0xab, 0xd8, 0x29, 0x63, 0x1f,
-0x9a, 0x2d, 0xc7, 0xbd, 0x6c, 0x56, 0xd3, 0x5a,
-0x98, 0x67, 0x2e, 0x5e, 0xc5, 0x9c, 0x5d, 0x61,
-0xb8, 0x7b, 0x40, 0x5d, 0xe5, 0x4e, 0x6a, 0xd3,
-0xeb, 0xbf, 0xa2, 0xf8, 0x0c, 0xeb, 0x6c, 0x5f,
-0x7e, 0x22, 0xaf, 0x86, 0x0d, 0x69, 0x7b, 0x58,
-0xf9, 0x30, 0x6f, 0x60, 0xf9, 0xfc, 0x61, 0x53,
-0x1f, 0x96, 0x1a, 0x58, 0x81, 0x16, 0x36, 0x96,
-0x8f, 0xab, 0x75, 0xec, 0x64, 0x7a, 0x7f, 0xea,
-0x33, 0x9f, 0xd6, 0x5e, 0x36, 0x6a, 0xfb, 0x5d,
-0x7d, 0xec, 0x77, 0xd2, 0xe5, 0x64, 0x63, 0xd2,
-0xb1, 0x55, 0x76, 0xc1, 0x11, 0xf1, 0x7c, 0x12,
-0xfd, 0x6b, 0x14, 0xcc, 0xc0, 0xb0, 0xeb, 0x20,
-0xe2, 0xdb, 0xe9, 0xe7, 0x11, 0x90, 0xd4, 0xdf,
-0xd3, 0xeb, 0x13, 0x05, 0xfe, 0xce, 0x31, 0xf3,
-0x7d, 0xbd, 0x6e, 0xc0, 0x55, 0xb3, 0x63, 0x4c,
-0xbc, 0xc3, 0x1b, 0x06, 0x50, 0x9f, 0x8f, 0x89,
-0x8f, 0xf0, 0x94, 0xab, 0xf7, 0xf3, 0x19, 0xfb,
-0xdb, 0xa1, 0x4d, 0xc0, 0x31, 0xa8, 0x1e, 0xce,
-0x1f, 0x97, 0x1b, 0xe1, 0x08, 0x2b, 0x33, 0x9d,
-0xc3, 0x72, 0x95, 0xb2, 0x29, 0x56, 0x64, 0xde,
-0x36, 0x5e, 0xd6, 0xc0, 0x8e, 0x1a, 0x53, 0xf8,
-0x67, 0xfa, 0xfa, 0x7e, 0xf8, 0x1b, 0x78, 0xc6,
-0xa8, 0x30, 0x13, 0x71, 0xd9, 0xc9, 0xba, 0x59,
-0x85, 0xc9, 0x0f, 0x22, 0xec, 0xe9, 0x46, 0xd8,
-0xc3, 0xfb, 0x50, 0x23, 0xad, 0x37, 0xb7, 0x23,
-0xfe, 0x69, 0x1a, 0xb7, 0xe1, 0x1f, 0x6f, 0xe9,
-0x63, 0x3c, 0x64, 0xe6, 0xf5, 0x32, 0x1f, 0x74,
-0x02, 0x5d, 0xcf, 0x7c, 0xe2, 0x19, 0xa8, 0x48,
-0xe0, 0xf5, 0x15, 0xfc, 0x79, 0xe6, 0x31, 0xbb,
-0xe3, 0x1e, 0x1b, 0xfe, 0x51, 0x40, 0xec, 0x06,
-0xef, 0x70, 0x89, 0xbf, 0x62, 0x25, 0x74, 0x72,
-0xaf, 0xe9, 0x0d, 0xfc, 0xad, 0x93, 0xed, 0x80,
-0x1e, 0x73, 0x54, 0x5b, 0xef, 0x84, 0xcd, 0x53,
-0xf8, 0xa7, 0x70, 0x7a, 0x3f, 0x88, 0xfc, 0x15,
-0xf0, 0x6b, 0xdc, 0xed, 0xb7, 0xc5, 0x67, 0x54,
-0xf2, 0x63, 0x70, 0x93, 0xb9, 0xe4, 0x59, 0xd9,
-0x47, 0x11, 0x89, 0xc4, 0x86, 0x5e, 0xd9, 0x17,
-0xb9, 0x00, 0x01, 0x0b, 0xff, 0xc8, 0xd3, 0xfb,
-0x33, 0x76, 0xed, 0x44, 0xeb, 0x87, 0x29, 0x90,
-0x73, 0x70, 0xd7, 0x45, 0x14, 0xae, 0x3b, 0x5b,
-0x3a, 0x09, 0x6f, 0x41, 0xed, 0xf0, 0x52, 0x3f,
-0x3a, 0xf2, 0x63, 0x53, 0xf8, 0x27, 0x37, 0x83,
-0x37, 0x7e, 0x05, 0x6f, 0x56, 0x7e, 0x7b, 0x70,
-0xc9, 0x59, 0xf9, 0x20, 0xfa, 0xdf, 0xd5, 0xa6,
-0xef, 0xa4, 0x5a, 0xd3, 0x74, 0x0c, 0x1a, 0x75,
-0xdf, 0x73, 0x32, 0xae, 0x8f, 0x67, 0x41, 0x9e,
-0xf3, 0x7e, 0x1b, 0xfe, 0x31, 0xb5, 0x0f, 0x71,
-0x11, 0xaa, 0x4f, 0xf1, 0x3f, 0xb2, 0x83, 0x20,
-0x0c, 0xfd, 0x0b, 0x5c, 0x0b, 0xcf, 0xd1, 0xba,
-0x9d, 0x55, 0x31, 0xde, 0xcb, 0x7e, 0x06, 0xeb,
-0xa3, 0x1e, 0xc1, 0x11, 0x1f, 0xa6, 0x7f, 0xdf,
-0x44, 0xce, 0x10, 0xee, 0x21, 0xaf, 0xd9, 0x8a,
-0xfe, 0xb8, 0x58, 0xbf, 0xc2, 0x9b, 0xe0, 0x6e,
-0x56, 0x6e, 0x76, 0xea, 0xbe, 0x0e, 0x47, 0x31,
-0x73, 0x1a, 0x4f, 0x83, 0xee, 0xe7, 0x01, 0x96,
-0x89, 0x0f, 0x98, 0x33, 0x7f, 0x0a, 0x91, 0x45,
-0x9e, 0x7e, 0xbc, 0xc9, 0x06, 0xde, 0x2d, 0x9e,
-0x36, 0xf9, 0x66, 0x5c, 0x76, 0xf4, 0x67, 0xa3,
-0x8e, 0xb8, 0x7b, 0x17, 0xc7, 0xeb, 0x75, 0x3c,
-0x35, 0x9e, 0xc6, 0xc3, 0xa6, 0xf4, 0x5b, 0x78,
-0x43, 0x5c, 0x6d, 0xfa, 0xe2, 0xf2, 0x2e, 0x30,
-0x23, 0xf5, 0xe6, 0x86, 0xa8, 0x3c, 0x03, 0x8e,
-0x18, 0xc1, 0xbd, 0x05, 0x71, 0xd9, 0xa7, 0xbc,
-0x1f, 0xeb, 0x25, 0x43, 0x3c, 0x7c, 0xcb, 0xf4,
-0xfd, 0x63, 0x52, 0x03, 0xfc, 0x21, 0x86, 0x68,
-0x67, 0x95, 0xdc, 0x00, 0x93, 0x7c, 0xa1, 0xb9,
-0xf4, 0xa4, 0x7c, 0x0e, 0x2e, 0xc7, 0x1a, 0x45,
-0xde, 0xb8, 0x7a, 0xbf, 0xfe, 0x97, 0x4d, 0x8d,
-0xe6, 0x7c, 0x5c, 0x9f, 0xb4, 0xfe, 0x19, 0x84,
-0x9f, 0xc1, 0xfb, 0x46, 0xfd, 0xcb, 0xd6, 0xf7,
-0x78, 0x58, 0xab, 0x4d, 0xa0, 0x5a, 0xd3, 0xe1,
-0x08, 0xda, 0x47, 0x3c, 0x32, 0x26, 0x21, 0xfe,
-0x04, 0x44, 0x44, 0x19, 0xfc, 0x63, 0xe6, 0x38,
-0xe0, 0x99, 0xcf, 0x95, 0x8d, 0xab, 0xe3, 0x0f,
-0xdf, 0xaf, 0xad, 0x1f, 0xd4, 0x87, 0xf9, 0xcc,
-0x8a, 0x72, 0xfc, 0x05, 0x7d, 0x42, 0xed, 0x65,
-0x6f, 0x89, 0x3d, 0x08, 0xed, 0xf8, 0x5e, 0xc4,
-0x3f, 0xd3, 0xfb, 0x21, 0x99, 0xb3, 0xa4, 0x6c,
-0x3b, 0xf3, 0x0e, 0xe2, 0x8f, 0xee, 0x54, 0x62,
-0x52, 0xf9, 0x60, 0x1b, 0xaa, 0xe5, 0xbc, 0x30,
-0xf8, 0x62, 0x72, 0x9c, 0xbd, 0xa6, 0x69, 0x64,
-0xc1, 0x6b, 0x98, 0x3f, 0x13, 0xff, 0x91, 0x82,
-0xd2, 0x8f, 0xc5, 0xbc, 0xf7, 0xd4, 0xd5, 0x8e,
-0xdb, 0x8d, 0x9d, 0xa2, 0x34, 0xe4, 0xf8, 0x4b,
-0x0d, 0x61, 0x8f, 0xa8, 0xdc, 0xae, 0x52, 0x60,
-0xe4, 0x39, 0x51, 0x96, 0xf4, 0xae, 0x66, 0x77,
-0xda, 0xe2, 0x3f, 0x4e, 0xf6, 0x0e, 0xac, 0x1e,
-0x55, 0xe3, 0x65, 0x05, 0xee, 0xd3, 0x50, 0x63,
-0x16, 0x5c, 0x23, 0x97, 0xeb, 0xfd, 0x9f, 0x73,
-0xc6, 0x36, 0x5d, 0x53, 0x34, 0xd4, 0xde, 0x5b,
-0xe8, 0x37, 0x9c, 0x7e, 0xf9, 0xea, 0x4c, 0xfc,
-0xe7, 0x87, 0xbb, 0xe0, 0x7f, 0x90, 0xfe, 0x19,
-0xef, 0x7c, 0x61, 0xfd, 0x5b, 0xd0, 0x38, 0x98,
-0x1f, 0x6d, 0x9e, 0x84, 0xef, 0x5e, 0x65, 0x01,
-0xc5, 0x31, 0xed, 0x92, 0x62, 0xed, 0x9f, 0xe1,
-0xdc, 0xe9, 0xf5, 0x21, 0xfc, 0x73, 0x18, 0x82,
-0x03, 0xf3, 0xf7, 0x4a, 0x63, 0xe2, 0x90, 0x52,
-0x6b, 0xaa, 0x64, 0xf8, 0x2e, 0x4a, 0x0d, 0x31,
-0x5c, 0x76, 0x72, 0xdc, 0x82, 0x80, 0xc2, 0xe1,
-0x4c, 0xfc, 0xe7, 0xa1, 0xc7, 0xe1, 0x01, 0x69,
-0xb5, 0x39, 0xeb, 0xde, 0xce, 0x06, 0xf8, 0x47,
-0x2b, 0xfe, 0x13, 0x38, 0x05, 0x7f, 0x64, 0x95,
-0xc2, 0xb1, 0xaa, 0xe9, 0x14, 0xfa, 0x5f, 0x08,
-0x84, 0x56, 0xb1, 0x0b, 0xe9, 0xf5, 0x14, 0xf0,
-0x22, 0x5b, 0x2b, 0x2a, 0x47, 0x1c, 0xf5, 0xec,
-0x47, 0xc6, 0x5a, 0xc4, 0x3f, 0xea, 0x9d, 0xee,
-0x5f, 0xc1, 0x3e, 0x73, 0x7e, 0x8c, 0xe3, 0xfb,
-0x2e, 0x42, 0x20, 0xa4, 0x53, 0xfc, 0xc7, 0x86,
-0x7f, 0x86, 0x38, 0x7d, 0x86, 0xe8, 0xb4, 0xa2,
-0xa3, 0xd1, 0xa4, 0x8f, 0xa0, 0xb6, 0x19, 0xea,
-0xda, 0x03, 0xbe, 0xed, 0x6d, 0x75, 0x9e, 0x21,
-0x05, 0x85, 0x71, 0x87, 0x3d, 0xfe, 0x93, 0x9c,
-0xf9, 0xa8, 0xf1, 0xaa, 0x19, 0x14, 0x08, 0x7b,
-0x7a, 0xb4, 0x57, 0x97, 0x23, 0x5a, 0x7b, 0x5a,
-0x3e, 0x2f, 0x5d, 0x32, 0x1b, 0xc3, 0x84, 0x7f,
-0x72, 0x2e, 0x41, 0x63, 0x5f, 0x76, 0xfc, 0x07,
-0x92, 0x30, 0x51, 0x53, 0xaf, 0x15, 0x40, 0x51,
-0x8c, 0x4f, 0xf0, 0xe7, 0x29, 0xfa, 0x61, 0x4a,
-0xa3, 0x3c, 0x08, 0xae, 0x0e, 0x74, 0xbb, 0x26,
-0x60, 0x16, 0x9b, 0xdf, 0x65, 0xc3, 0x3f, 0x5c,
-0x1b, 0x41, 0x6b, 0x58, 0x4f, 0xa0, 0xa5, 0x8b,
-0x1f, 0xc2, 0xf5, 0x55, 0xa3, 0xcd, 0x78, 0x24,
-0x37, 0xd8, 0xba, 0x49, 0x43, 0xfb, 0x78, 0x96,
-0xa3, 0x7d, 0xff, 0x81, 0x3d, 0xfe, 0xa3, 0x7c,
-0x19, 0xcd, 0x6e, 0xc5, 0x1d, 0x87, 0x29, 0xec,
-0x73, 0xa8, 0xb5, 0x76, 0x19, 0x27, 0xfc, 0xf3,
-0x94, 0x15, 0xff, 0x69, 0xfa, 0xb1, 0xb1, 0x9f,
-0x21, 0xfe, 0xf9, 0x91, 0x2d, 0xfe, 0x53, 0x22,
-0x55, 0xd2, 0xf5, 0xed, 0x91, 0x28, 0xdb, 0xc9,
-0xd6, 0x41, 0x85, 0xe1, 0x88, 0xa2, 0xff, 0xb5,
-0x4e, 0xaa, 0x32, 0x16, 0x47, 0xdd, 0xe5, 0x9c,
-0xe2, 0x15, 0xdc, 0x1e, 0xff, 0xe1, 0x4a, 0xb9,
-0xd2, 0xe1, 0xf5, 0xb6, 0x5d, 0xed, 0x1e, 0x50,
-0x76, 0xae, 0x9b, 0xe7, 0x6b, 0x53, 0x35, 0x36,
-0x18, 0xdb, 0xe6, 0xf5, 0x19, 0xaa, 0xfb, 0xd5,
-0xae, 0xd8, 0x6e, 0xaf, 0xde, 0xb6, 0x4e, 0xb3,
-0xf9, 0x5f, 0x75, 0xf9, 0x21, 0x48, 0xe8, 0xf5,
-0xdc, 0x19, 0x9e, 0x11, 0x43, 0x30, 0x1e, 0xe0,
-0xb7, 0x0b, 0xc4, 0x3f, 0x11, 0x1d, 0xdf, 0x37,
-0x5c, 0xe4, 0xed, 0x9a, 0xd0, 0xe3, 0x1c, 0x3d,
-0xa6, 0x37, 0xd3, 0xfa, 0xe7, 0xe4, 0xa7, 0x4f,
-0xb0, 0x4f, 0x20, 0xb8, 0xd8, 0xb5, 0xb9, 0x73,
-0x24, 0xf6, 0xc1, 0xbc, 0x85, 0x6d, 0xbe, 0xe3,
-0xe1, 0x73, 0xdb, 0x3f, 0xf1, 0xa2, 0x5b, 0x71,
-0x3c, 0x3c, 0x42, 0x11, 0xd7, 0xc3, 0x78, 0x2a,
-0x83, 0x7f, 0x4a, 0x72, 0xce, 0xc1, 0x3f, 0x48,
-0x8d, 0x2d, 0xfc, 0x38, 0x2f, 0xdf, 0xfe, 0x1a,
-0xf9, 0x6b, 0xc3, 0x72, 0x4d, 0xfb, 0x21, 0xbd,
-0xda, 0x58, 0xf2, 0x4b, 0xf9, 0x9c, 0x82, 0x40,
-0xa2, 0x05, 0x35, 0x76, 0x26, 0xfe, 0xb3, 0x5a,
-0x5b, 0x01, 0x7d, 0x52, 0x95, 0x62, 0xc5, 0x7f,
-0x22, 0x73, 0xab, 0x4a, 0x54, 0x08, 0x7b, 0x8d,
-0xc8, 0xbc, 0x0a, 0xe1, 0xe8, 0x64, 0xa7, 0xc1,
-0x02, 0x42, 0xe1, 0xb0, 0x2d, 0xfe, 0x73, 0x4b,
-0x4b, 0xc9, 0x43, 0x84, 0x76, 0x8a, 0xdc, 0xca,
-0xce, 0x8e, 0x3c, 0xdf, 0xe7, 0xd5, 0x28, 0x53,
-0xb4, 0x6d, 0x35, 0x15, 0x06, 0x2a, 0xa2, 0x41,
-0xa3, 0xa3, 0xd0, 0x47, 0x42, 0x26, 0xfe, 0x53,
-0x32, 0x73, 0xa7, 0xb1, 0x5f, 0xaf, 0x32, 0xbc,
-0x51, 0x40, 0xd8, 0x53, 0x8a, 0xcb, 0xbe, 0xd9,
-0x51, 0x9e, 0xfb, 0x54, 0x7b, 0x45, 0x0b, 0x2e,
-0xec, 0x08, 0x5b, 0x97, 0x0a, 0x0d, 0xd9, 0xe3,
-0x3f, 0xbf, 0x81, 0xd7, 0x63, 0x41, 0x43, 0x89,
-0x4a, 0xf4, 0x7b, 0x05, 0x11, 0xd6, 0xca, 0xe5,
-0xf0, 0x1e, 0xac, 0x5e, 0xe5, 0x7c, 0x14, 0x3d,
-0xa6, 0x43, 0xa5, 0xc1, 0x90, 0xcf, 0x1e, 0xff,
-0x19, 0x95, 0x76, 0x82, 0x15, 0xff, 0x21, 0x6b,
-0x8e, 0x42, 0xbb, 0x05, 0x14, 0x5f, 0xef, 0xc0,
-0x7f, 0xb8, 0xb5, 0x6c, 0x10, 0xce, 0x6b, 0xc1,
-0xd6, 0xac, 0xf8, 0x8f, 0x57, 0x8b, 0x19, 0x13,
-0x2c, 0xc0, 0x9d, 0x50, 0x96, 0x54, 0x4e, 0x36,
-0x05, 0x60, 0x06, 0xc2, 0x4e, 0x18, 0x5f, 0x54,
-0x5b, 0x8c, 0x1b, 0x4f, 0x87, 0x09, 0x25, 0xa8,
-0x39, 0xc3, 0x59, 0xf1, 0x9f, 0x9b, 0xe0, 0x43,
-0x28, 0x8b, 0x3a, 0x10, 0xff, 0x68, 0x0f, 0x1a,
-0x65, 0x5b, 0xd4, 0x91, 0x36, 0xaf, 0xfe, 0x3c,
-0xb0, 0xd8, 0x91, 0x1e, 0x76, 0x23, 0x42, 0xfd,
-0x2a, 0x74, 0x1d, 0xec, 0xf1, 0x9f, 0x9c, 0x3f,
-0x8b, 0x6e, 0x6f, 0xaf, 0x20, 0xd0, 0xb2, 0x12,
-0x1e, 0x36, 0xd0, 0xfa, 0xd4, 0xe5, 0x56, 0x41,
-0x35, 0x5a, 0x7c, 0x75, 0x41, 0xae, 0xb3, 0x63,
-0x07, 0x54, 0x99, 0xfc, 0x06, 0x5b, 0xfc, 0x27,
-0xb6, 0xa8, 0x18, 0xb6, 0x0b, 0x2f, 0x7e, 0xa4,
-0x6e, 0xa7, 0x99, 0x23, 0x24, 0x43, 0xfd, 0x86,
-0x67, 0x16, 0xec, 0xa3, 0x40, 0xca, 0x6a, 0x36,
-0x4b, 0x7f, 0x12, 0x2a, 0x13, 0x79, 0xab, 0xdc,
-0x99, 0xf8, 0x4f, 0x4f, 0xe4, 0x2a, 0x78, 0x57,
-0x7c, 0x2b, 0xe9, 0xac, 0xfb, 0xd2, 0x17, 0xc5,
-0x3f, 0x89, 0x05, 0x49, 0x95, 0x60, 0xcf, 0x4b,
-0xc9, 0x1b, 0x42, 0xae, 0x09, 0x2b, 0xfe, 0xd3,
-0x38, 0xe2, 0x5b, 0x2d, 0xdb, 0xe2, 0x3f, 0x9f,
-0xde, 0x89, 0x0f, 0xf9, 0x9c, 0x81, 0xda, 0xf5,
-0x83, 0x18, 0xa1, 0xc1, 0xee, 0xb8, 0x84, 0xf8,
-0x47, 0xc2, 0x15, 0x43, 0x20, 0xa4, 0xbd, 0x0f,
-0xc1, 0x53, 0x9b, 0x62, 0xf6, 0xf8, 0x8f, 0x74,
-0xc2, 0x7c, 0x25, 0x7e, 0x53, 0x72, 0x03, 0xe1,
-0x9f, 0x97, 0x45, 0x75, 0x32, 0xff, 0x24, 0x01,
-0xa1, 0x8e, 0xfa, 0xbb, 0xf1, 0xfe, 0x41, 0x7e,
-0x24, 0x7a, 0x73, 0xd2, 0x79, 0x1e, 0x81, 0x62,
-0x06, 0xff, 0x7c, 0x1f, 0xba, 0xdc, 0xfa, 0x28,
-0x3f, 0xcb, 0x36, 0x40, 0x57, 0xbc, 0xd4, 0xe0,
-0xf9, 0xe1, 0xbb, 0x60, 0x1f, 0x83, 0x95, 0x79,
-0xed, 0xee, 0xd9, 0xe2, 0xc9, 0x58, 0x65, 0xc2,
-0x31, 0xce, 0x9e, 0xee, 0x9a, 0xbe, 0x3f, 0x88,
-0x2d, 0x03, 0x5b, 0x42, 0x7f, 0x13, 0x41, 0x37,
-0x6d, 0x16, 0x6c, 0xd2, 0xd1, 0x5f, 0x6b, 0x67,
-0xa7, 0x60, 0x5f, 0xc9, 0xbc, 0x96, 0xee, 0x55,
-0xac, 0x58, 0x3c, 0x19, 0x9a, 0x6f, 0xf6, 0xac,
-0x62, 0x46, 0x26, 0x5e, 0x5d, 0xfc, 0x0a, 0x47,
-0xb7, 0xcb, 0x28, 0xf1, 0xbb, 0x77, 0x41, 0x87,
-0xd0, 0x43, 0x11, 0x8d, 0x2d, 0x95, 0xf6, 0x38,
-0xbd, 0xcb, 0xf2, 0x34, 0x54, 0xb2, 0x3b, 0x50,
-0xff, 0xb4, 0x65, 0xc7, 0x7f, 0x3a, 0xd1, 0xc7,
-0xab, 0x17, 0x68, 0xbf, 0x1a, 0xf8, 0xa1, 0xb6,
-0xc0, 0x3d, 0x4b, 0xb6, 0xa2, 0xda, 0xc4, 0xe7,
-0x5f, 0x86, 0xef, 0xeb, 0x83, 0xf7, 0xe1, 0xe6,
-0x61, 0xd4, 0x3f, 0x7f, 0x9b, 0x89, 0xff, 0xc0,
-0x87, 0x62, 0x62, 0x51, 0x30, 0x8a, 0xeb, 0xb3,
-0x8b, 0x9d, 0x0d, 0xbd, 0xd8, 0x5e, 0xd5, 0x25,
-0x2d, 0x1f, 0x3c, 0x80, 0xfe, 0xc5, 0x8c, 0x3e,
-0xf4, 0x40, 0x0f, 0x88, 0xe0, 0xe0, 0xd2, 0x98,
-0x1c, 0x4b, 0xef, 0x1f, 0x49, 0x3b, 0x07, 0x43,
-0xb0, 0x40, 0x38, 0xdf, 0x28, 0x9b, 0x44, 0x6f,
-0xa2, 0x9a, 0xc2, 0xb0, 0x97, 0x70, 0x3d, 0xf1,
-0x43, 0xeb, 0x93, 0x2f, 0x45, 0x2e, 0x2b, 0x8d,
-0x03, 0xce, 0xd3, 0xb6, 0xf8, 0x8f, 0x50, 0xbe,
-0x26, 0x4d, 0x88, 0xed, 0x5b, 0xd1, 0xc8, 0x8e,
-0x21, 0xcc, 0xad, 0x58, 0x55, 0xb0, 0x95, 0xbd,
-0xcb, 0x0f, 0x28, 0x73, 0x29, 0x10, 0xf4, 0x36,
-0x85, 0x46, 0x4d, 0xc4, 0xcf, 0xf6, 0xf8, 0xcf,
-0x5c, 0xbe, 0x35, 0xe2, 0x89, 0x78, 0xe3, 0x6c,
-0x17, 0x8b, 0x44, 0x3c, 0xf7, 0xa0, 0xe3, 0x36,
-0x26, 0x0e, 0x50, 0xfc, 0x79, 0x37, 0xde, 0xe1,
-0x19, 0xba, 0x5e, 0x30, 0x3b, 0xfe, 0xc9, 0x85,
-0x1e, 0xd0, 0x1f, 0xe0, 0x7e, 0xf7, 0x10, 0x08,
-0xdd, 0x6b, 0x5c, 0x0d, 0xdb, 0x11, 0x28, 0x02,
-0xea, 0x9f, 0x1a, 0xf7, 0x51, 0xd8, 0xa3, 0xe3,
-0xf5, 0x1c, 0xec, 0xf1, 0x9f, 0xe5, 0x5d, 0x11,
-0x16, 0x88, 0xa2, 0xd9, 0x7d, 0x1c, 0x0e, 0x29,
-0x7e, 0xc3, 0xf5, 0x50, 0xb3, 0xb5, 0x1f, 0x5a,
-0x29, 0x50, 0x16, 0x79, 0x9f, 0x37, 0x9a, 0xb8,
-0x3e, 0x76, 0xfc, 0x33, 0x62, 0xdc, 0x2f, 0x35,
-0x88, 0xa5, 0xe3, 0xf2, 0x64, 0xf9, 0x0b, 0x5a,
-0x23, 0x39, 0x26, 0x93, 0x70, 0x19, 0x3e, 0x75,
-0xeb, 0xd2, 0x71, 0x66, 0xb6, 0x5c, 0x46, 0xfc,
-0x33, 0x3f, 0x69, 0xc7, 0x3f, 0x39, 0x1f, 0xc1,
-0xef, 0x16, 0x2c, 0x1c, 0xcc, 0x3f, 0x57, 0x76,
-0x69, 0xd1, 0xfb, 0xd1, 0x9b, 0x47, 0x9c, 0x1f,
-0x77, 0xee, 0x1d, 0x18, 0x8a, 0xfa, 0xe7, 0xf8,
-0x3e, 0x56, 0xaf, 0x86, 0x9f, 0x47, 0x17, 0x8c,
-0x3b, 0xc7, 0x55, 0xbf, 0x2d, 0xfe, 0x93, 0xd4,
-0xbb, 0xfd, 0x55, 0x08, 0xfb, 0x11, 0xdf, 0xd2,
-0x6a, 0xcc, 0x3b, 0x87, 0x8a, 0x3a, 0xa2, 0xe0,
-0x17, 0xf4, 0x1c, 0xa3, 0xfc, 0x94, 0x27, 0xc1,
-0x6b, 0xc3, 0x7a, 0xc6, 0xff, 0xca, 0x31, 0xc5,
-0x0e, 0xcf, 0xf2, 0x44, 0x6b, 0x20, 0x77, 0xa8,
-0x6b, 0x47, 0xa9, 0x2f, 0xb1, 0x28, 0xc0, 0x72,
-0x94, 0x88, 0x84, 0x3e, 0x5b, 0x8d, 0xdb, 0x17,
-0xdf, 0xa1, 0xeb, 0x78, 0x3d, 0x6b, 0xb2, 0xc5,
-0x7f, 0x3a, 0x69, 0xd1, 0xba, 0x78, 0x3c, 0x3c,
-0x26, 0x6e, 0xc2, 0xd5, 0xc8, 0x8b, 0x3b, 0xf0,
-0xfe, 0x1d, 0x15, 0x49, 0x88, 0x23, 0x10, 0x7a,
-0xaa, 0x4b, 0x37, 0xf1, 0xa7, 0xf1, 0xa7, 0xf5,
-0x8f, 0x31, 0xf3, 0x9d, 0x12, 0xf4, 0x17, 0x86,
-0x9d, 0x7d, 0xb8, 0x6d, 0xde, 0x57, 0x82, 0x26,
-0x5a, 0xdb, 0x9d, 0x30, 0x10, 0x0b, 0xac, 0x40,
-0xa1, 0x80, 0xbf, 0x2f, 0x7a, 0x09, 0x1a, 0x69,
-0xe9, 0xfd, 0x93, 0x94, 0xe2, 0xfc, 0x2d, 0xe9,
-0xe6, 0x64, 0xc1, 0x05, 0xf9, 0x92, 0x7e, 0x59,
-0xcc, 0x1f, 0x2e, 0x18, 0x6f, 0xfe, 0xd0, 0xb8,
-0x04, 0xd7, 0x21, 0x8c, 0x2c, 0x9a, 0xe4, 0xb8,
-0x3e, 0xa3, 0x68, 0xdf, 0x27, 0xd2, 0xfb, 0xc7,
-0xd4, 0x62, 0x88, 0x76, 0x9e, 0x1b, 0xbe, 0x6e,
-0x8b, 0xec, 0x93, 0x8f, 0x14, 0x06, 0xcc, 0x25,
-0x7e, 0xd9, 0x87, 0x16, 0xbf, 0xde, 0x50, 0x10,
-0x5f, 0xa1, 0x63, 0x12, 0xa0, 0xff, 0xa2, 0x2d,
-0xfe, 0x93, 0x53, 0x6a, 0x6c, 0x3a, 0xee, 0x39,
-0xa5, 0xee, 0x6b, 0xaa, 0x84, 0xee, 0x3b, 0x3c,
-0xbf, 0xe2, 0xbf, 0x7f, 0xb0, 0x72, 0xd1, 0x1b,
-0x77, 0xd6, 0x9e, 0xd8, 0xf8, 0x7b, 0xc7, 0xfc,
-0xe1, 0x43, 0xed, 0xb5, 0xc9, 0xfc, 0xdf, 0xb3,
-0x80, 0x0d, 0xff, 0x18, 0xc6, 0xc3, 0x39, 0xe5,
-0xfd, 0xaa, 0xbf, 0xe9, 0xa8, 0xb4, 0xa3, 0xc3,
-0x93, 0xdc, 0x5a, 0xc7, 0xe6, 0x1a, 0x61, 0x31,
-0x77, 0xc4, 0xb1, 0x9f, 0x81, 0xf2, 0x58, 0x21,
-0x7e, 0xaa, 0xfb, 0xb3, 0xe2, 0x3f, 0xfe, 0xa6,
-0x47, 0xb6, 0xce, 0x41, 0x35, 0xe2, 0xf8, 0x22,
-0x3c, 0x19, 0x2b, 0x4b, 0xc2, 0x8d, 0xe8, 0x61,
-0x6d, 0xe9, 0xba, 0x7e, 0x44, 0xfd, 0x96, 0x23,
-0x28, 0x6d, 0xea, 0x98, 0xf1, 0x76, 0xde, 0x6a,
-0x56, 0x62, 0xc3, 0x3f, 0x30, 0xfc, 0xeb, 0xc2,
-0x9a, 0x57, 0xfe, 0x4a, 0x67, 0x43, 0xb1, 0x67,
-0x62, 0x7e, 0x52, 0x74, 0x0a, 0xfa, 0x83, 0x75,
-0xa3, 0x05, 0x7e, 0x55, 0x81, 0x8f, 0x75, 0x3f,
-0xbe, 0x91, 0xea, 0xce, 0xe0, 0x9f, 0xdb, 0xb6,
-0x28, 0xbf, 0xd3, 0x6e, 0x1a, 0xc4, 0x45, 0x68,
-0x80, 0xb7, 0x28, 0x3e, 0x76, 0x4e, 0x9e, 0xa4,
-0x40, 0x87, 0x99, 0x1f, 0x57, 0xcf, 0xc1, 0xef,
-0x08, 0x3f, 0xef, 0xee, 0xb4, 0xe3, 0x9f, 0x24,
-0x7e, 0xa4, 0xa4, 0x9d, 0x68, 0xfd, 0x29, 0x70,
-0xdd, 0x8b, 0xfa, 0x9f, 0x60, 0xf9, 0x83, 0x71,
-0x79, 0x03, 0x2e, 0x9d, 0x85, 0xcf, 0x2b, 0x6c,
-0xf1, 0x9f, 0xb8, 0xb2, 0x36, 0x54, 0x6a, 0x16,
-0xa0, 0x3f, 0x85, 0xd0, 0xb5, 0xb2, 0x3f, 0xef,
-0xa3, 0xa6, 0xc7, 0xe1, 0x39, 0xf4, 0xa7, 0xf8,
-0x37, 0x51, 0xc3, 0xfc, 0x0c, 0x11, 0x51, 0xf7,
-0xbd, 0x2c, 0x90, 0xfe, 0x7d, 0x4d, 0xf8, 0x01,
-0xec, 0xe8, 0x98, 0x77, 0xd6, 0x41, 0xd1, 0x9e,
-0x7d, 0x66, 0x65, 0x32, 0xef, 0x5b, 0xec, 0x2a,
-0xfd, 0xa5, 0xae, 0x39, 0x14, 0x08, 0xba, 0x04,
-0x6b, 0xc3, 0x88, 0x88, 0xea, 0x10, 0x1f, 0x4e,
-0xaf, 0x7f, 0x6b, 0xf1, 0x80, 0xde, 0x89, 0xfe,
-0x85, 0xa3, 0x06, 0x8d, 0xfe, 0x36, 0xe1, 0xfb,
-0x32, 0x02, 0xa1, 0x07, 0xa1, 0xb7, 0xc5, 0x4b,
-0x2f, 0xbe, 0xd4, 0xb3, 0x1d, 0xf4, 0x16, 0x84,
-0x9a, 0x6e, 0x5b, 0xfc, 0x67, 0x3f, 0xfb, 0x10,
-0x6e, 0x12, 0x05, 0xa3, 0x0f, 0x27, 0x94, 0x0b,
-0x52, 0x30, 0xe6, 0x8a, 0xc9, 0x5e, 0xb8, 0x14,
-0x5a, 0xf8, 0x50, 0x41, 0x52, 0xbe, 0xa8, 0x1f,
-0x35, 0xe2, 0x78, 0x44, 0xad, 0xb7, 0xe3, 0x1f,
-0x63, 0x02, 0x3c, 0xee, 0x02, 0x11, 0x4e, 0x1a,
-0xa3, 0x88, 0xee, 0xd0, 0x0c, 0x11, 0xec, 0x09,
-0x92, 0x87, 0xbe, 0x0d, 0x26, 0x78, 0x50, 0xcb,
-0xca, 0x7f, 0x59, 0xf8, 0x47, 0x0a, 0x50, 0xfe,
-0xab, 0x9c, 0xaf, 0x83, 0x94, 0x00, 0x87, 0xf8,
-0xb4, 0x00, 0xee, 0x56, 0x1e, 0xcd, 0x8e, 0xff,
-0xa0, 0x91, 0xdd, 0x6e, 0xac, 0x88, 0x3a, 0xe6,
-0xc2, 0xeb, 0xaf, 0x6f, 0xff, 0x66, 0x45, 0xd4,
-0x51, 0xce, 0x5e, 0x87, 0x30, 0x5a, 0x64, 0xc7,
-0x9c, 0x30, 0x9e, 0x5a, 0x95, 0x1f, 0x75, 0xe8,
-0x36, 0xfc, 0xa3, 0xa0, 0x7f, 0xa1, 0x9b, 0x5e,
-0x8d, 0xed, 0x6c, 0xdd, 0x86, 0x8a, 0x97, 0xc2,
-0x1a, 0xd0, 0x01, 0xdc, 0x12, 0xd8, 0xc3, 0x84,
-0x88, 0x34, 0x96, 0x6b, 0xd3, 0x3f, 0x78, 0xbd,
-0x37, 0xd4, 0xc6, 0xdd, 0x61, 0x05, 0x76, 0x43,
-0xc8, 0x70, 0xa0, 0x10, 0x43, 0x0f, 0x05, 0x61,
-0xc0, 0x03, 0x74, 0x2b, 0x2f, 0x02, 0xa1, 0x30,
-0xcb, 0xc2, 0x3f, 0x27, 0xf5, 0x40, 0x84, 0x87,
-0xcb, 0x62, 0x30, 0x0a, 0x01, 0x58, 0x42, 0x89,
-0xb0, 0x08, 0xd4, 0x81, 0x93, 0xc9, 0xba, 0x72,
-0x27, 0xab, 0x17, 0x05, 0x61, 0xb9, 0x20, 0xad,
-0x7f, 0xb6, 0x5e, 0x7b, 0xae, 0xe7, 0x3d, 0x6f,
-0x63, 0x9b, 0xeb, 0x78, 0xe7, 0x37, 0x62, 0x3f,
-0xf4, 0x36, 0x2e, 0xce, 0xdf, 0xdc, 0x79, 0x2e,
-0xf6, 0x7b, 0xef, 0xf5, 0x6d, 0x2e, 0x12, 0x3e,
-0xf0, 0x2e, 0x6c, 0xdb, 0x98, 0x85, 0x7f, 0x66,
-0x8e, 0x20, 0x5a, 0xa8, 0x6f, 0x71, 0x6e, 0x2e,
-0x52, 0xd8, 0x21, 0xad, 0xd7, 0x02, 0x06, 0xc6,
-0xeb, 0xb8, 0x50, 0xae, 0x87, 0x8b, 0x14, 0x5c,
-0x9f, 0x40, 0x0b, 0xc5, 0x7f, 0x32, 0xf9, 0x2f,
-0x2d, 0x59, 0x2e, 0xb8, 0xa7, 0xab, 0x95, 0xf0,
-0x8f, 0xd0, 0x3d, 0x4c, 0xc6, 0x1f, 0x02, 0x22,
-0xde, 0x0a, 0xae, 0x76, 0x3a, 0xbc, 0xfa, 0xd3,
-0xdc, 0x03, 0x91, 0x81, 0xb0, 0x2d, 0xfe, 0x93,
-0x73, 0x4e, 0x3c, 0xa1, 0xcd, 0x33, 0x1c, 0x9f,
-0x67, 0xc5, 0xb1, 0x8d, 0x7a, 0x69, 0xab, 0xfa,
-0x39, 0x76, 0x0e, 0xbe, 0xa7, 0xcf, 0x6b, 0x53,
-0x8f, 0xa3, 0xfd, 0x5a, 0x03, 0x68, 0x01, 0x3f,
-0xef, 0x60, 0x19, 0xfc, 0x93, 0xb3, 0x53, 0xa7,
-0xa0, 0x99, 0xe3, 0x57, 0xac, 0x18, 0xf2, 0x51,
-0x50, 0x87, 0xf1, 0xfa, 0x35, 0xf0, 0x99, 0x45,
-0xea, 0xb0, 0xa7, 0x96, 0x3f, 0x51, 0x5e, 0xda,
-0xc2, 0x87, 0xed, 0xf1, 0x9f, 0x9c, 0x9f, 0xd3,
-0xf3, 0xaf, 0x0a, 0x3e, 0x8e, 0xbf, 0x57, 0x3f,
-0x3d, 0x36, 0x85, 0x9d, 0x5f, 0xff, 0x6c, 0x60,
-0xd9, 0xa6, 0xd4, 0xef, 0xbb, 0xdd, 0x40, 0xfc,
-0xe3, 0xcd, 0x99, 0xde, 0x9f, 0x3d, 0xd2, 0x93,
-0x70, 0x16, 0x82, 0xad, 0x88, 0x87, 0xdf, 0x15,
-0xe7, 0xa3, 0xc1, 0x15, 0x14, 0x0d, 0x33, 0x28,
-0x11, 0xb6, 0x29, 0x9a, 0xca, 0x88, 0x11, 0x82,
-0xb2, 0xc7, 0x7f, 0x76, 0xa3, 0xfd, 0x5a, 0xa8,
-0x38, 0x07, 0x65, 0xbf, 0x4e, 0xf9, 0x70, 0xd7,
-0x80, 0xec, 0x87, 0x49, 0xa3, 0x51, 0xcb, 0x37,
-0xe5, 0xaf, 0x2b, 0x43, 0xc6, 0x75, 0xe0, 0x32,
-0x55, 0x47, 0x06, 0xff, 0x14, 0x7a, 0x9d, 0x4f,
-0x83, 0x27, 0x36, 0x23, 0xc6, 0xe6, 0x29, 0xeb,
-0x11, 0xaa, 0x14, 0xec, 0x72, 0x7b, 0xe1, 0x79,
-0xa9, 0xaa, 0x8f, 0x7b, 0x98, 0x37, 0xba, 0x1e,
-0xf1, 0x8f, 0x3a, 0xca, 0x1c, 0x36, 0xfc, 0x43,
-0x5c, 0x8e, 0xb9, 0x3a, 0x17, 0x1e, 0x89, 0xc5,
-0xf0, 0x33, 0x72, 0x00, 0xea, 0x82, 0xb8, 0x52,
-0x5e, 0x97, 0xc7, 0x58, 0x08, 0x4f, 0xf9, 0x40,
-0x95, 0x3c, 0x99, 0xf8, 0x4f, 0x0c, 0x1a, 0xe0,
-0x49, 0xa0, 0x24, 0x97, 0xa3, 0x41, 0x22, 0xc1,
-0xd1, 0x80, 0x9f, 0x2d, 0xba, 0x2d, 0x49, 0x44,
-0x08, 0x0d, 0xfc, 0x49, 0xf8, 0xaa, 0x79, 0xcd,
-0x2a, 0xe6, 0x4d, 0xdf, 0xbf, 0x87, 0xbb, 0x79,
-0x97, 0xa8, 0x09, 0x39, 0x13, 0xf2, 0xd5, 0x56,
-0xb6, 0x2b, 0xb7, 0x55, 0x76, 0xc3, 0xb9, 0x8e,
-0x46, 0xfd, 0xb6, 0x44, 0xd1, 0x17, 0x58, 0x97,
-0xb8, 0x39, 0xe9, 0x4a, 0xc8, 0x15, 0x99, 0xf8,
-0xcf, 0x92, 0x0d, 0xda, 0x45, 0xf4, 0x2e, 0xd1,
-0x7b, 0xb5, 0xd2, 0xe8, 0xe0, 0x20, 0xc5, 0x42,
-0xf1, 0x1f, 0x54, 0x23, 0xa3, 0xe8, 0x48, 0xe2,
-0x17, 0x17, 0x97, 0x07, 0xd2, 0xfa, 0x07, 0x72,
-0xde, 0x36, 0x4e, 0x89, 0xc6, 0xd8, 0x75, 0x09,
-0x79, 0xae, 0x34, 0x29, 0x1a, 0xcb, 0x9d, 0xfb,
-0xcb, 0x02, 0x30, 0x89, 0x40, 0x08, 0xf1, 0x4f,
-0x3d, 0x09, 0xba, 0x6b, 0x34, 0x0b, 0xff, 0xfc,
-0xa8, 0xe5, 0x9f, 0x60, 0x7e, 0x4b, 0xc9, 0xbd,
-0x9d, 0x7f, 0x29, 0xf6, 0xe9, 0xf3, 0x4d, 0x6f,
-0xc2, 0x31, 0x4b, 0x7b, 0xc9, 0xb9, 0x1b, 0x54,
-0x83, 0x15, 0x2b, 0x7f, 0x44, 0x45, 0xa4, 0xb6,
-0xb3, 0x8a, 0x4c, 0x7e, 0x01, 0xe2, 0xbb, 0xbb,
-0xac, 0xe8, 0x74, 0xd3, 0x5d, 0xb1, 0x7d, 0x79,
-0x95, 0xe6, 0xba, 0x55, 0x4c, 0xd3, 0xf7, 0x42,
-0xe5, 0x80, 0x4a, 0x88, 0x68, 0x2f, 0xc7, 0xa5,
-0x58, 0xc1, 0xc0, 0x86, 0x7f, 0x5e, 0xa3, 0xfc,
-0xce, 0x2c, 0x5e, 0xcf, 0x9a, 0xa0, 0x2f, 0xec,
-0xd3, 0x39, 0xb0, 0x2a, 0xd8, 0x93, 0xa0, 0xb0,
-0x73, 0x93, 0xae, 0xed, 0x31, 0xbc, 0xba, 0xaa,
-0x39, 0xb8, 0x0d, 0xff, 0xfc, 0x04, 0x5e, 0x4e,
-0xbd, 0x94, 0x0e, 0x7d, 0x22, 0x08, 0x4b, 0x44,
-0x59, 0x95, 0xf6, 0xb1, 0x59, 0x03, 0xdd, 0x42,
-0xd5, 0x4b, 0x2f, 0x16, 0x07, 0xbc, 0xa8, 0x4f,
-0x2a, 0x6c, 0xf1, 0x9f, 0xd3, 0x3a, 0xe2, 0x1f,
-0xd3, 0xa5, 0xe0, 0xb2, 0x1c, 0x50, 0x82, 0x83,
-0x56, 0xb6, 0x6b, 0x22, 0xb5, 0x3e, 0x63, 0x62,
-0xd4, 0x98, 0xca, 0x7f, 0x4d, 0xdf, 0x5f, 0xd2,
-0x10, 0x0d, 0x8a, 0x6a, 0x42, 0x3b, 0x75, 0xca,
-0x65, 0x28, 0x33, 0xf3, 0x0d, 0xb9, 0x41, 0xfc,
-0x4e, 0xaf, 0x66, 0x4b, 0x84, 0x7c, 0x8e, 0x1d,
-0x8b, 0x56, 0x9b, 0x2e, 0x90, 0x21, 0x1d, 0xff,
-0xe9, 0x80, 0xe6, 0x15, 0x91, 0x93, 0x1e, 0xa1,
-0x6e, 0xec, 0x1c, 0x81, 0x3e, 0xd8, 0x0e, 0xad,
-0x71, 0xb6, 0x43, 0x9c, 0x3c, 0x4d, 0x49, 0x1b,
-0x36, 0xca, 0x23, 0x94, 0xda, 0x88, 0x3b, 0x74,
-0x1b, 0xfe, 0xf1, 0x21, 0x28, 0xc2, 0xeb, 0xe3,
-0x08, 0x03, 0xfa, 0xc0, 0x2b, 0xe1, 0x65, 0x3e,
-0xe8, 0x96, 0x3c, 0xd6, 0xf5, 0x50, 0xc6, 0x3d,
-0x52, 0x77, 0x8c, 0xe9, 0x36, 0xfd, 0xa3, 0x77,
-0x44, 0x40, 0x5f, 0xa4, 0x02, 0x4b, 0x44, 0xf6,
-0xc0, 0x0a, 0x93, 0xe3, 0x3f, 0x86, 0xad, 0xec,
-0x1e, 0xf4, 0x6b, 0xd8, 0x20, 0x1a, 0x5b, 0x9d,
-0x18, 0x32, 0xcc, 0x9e, 0xff, 0x8a, 0x51, 0x92,
-0x4b, 0x45, 0x6b, 0x2b, 0x2e, 0x36, 0xd5, 0x9b,
-0x95, 0xbd, 0x32, 0xc1, 0xc2, 0xde, 0xe1, 0x59,
-0xb4, 0x31, 0xde, 0xa1, 0xfc, 0x57, 0x4c, 0x06,
-0x1b, 0xfe, 0x19, 0xd6, 0x28, 0x2c, 0xef, 0x32,
-0x8b, 0x76, 0xc3, 0xa4, 0x77, 0x21, 0x14, 0xf4,
-0xcb, 0xe3, 0x30, 0x29, 0x35, 0x82, 0x4a, 0x44,
-0x97, 0x53, 0x0a, 0x9e, 0x1a, 0xce, 0xc2, 0x3f,
-0xe3, 0x70, 0x59, 0xa9, 0x36, 0x37, 0x7c, 0x24,
-0xff, 0x4a, 0x79, 0xdf, 0x7f, 0x93, 0x70, 0x8d,
-0xab, 0xd5, 0x70, 0x0c, 0x1a, 0x5f, 0x29, 0xf8,
-0xa8, 0xf3, 0xfb, 0xca, 0xcb, 0xfa, 0x02, 0xc3,
-0x39, 0x9e, 0x95, 0xff, 0xda, 0x0e, 0x9b, 0x60,
-0xe1, 0x38, 0x3f, 0xc7, 0x46, 0xc4, 0xda, 0x1a,
-0x56, 0x5c, 0x70, 0xc3, 0x80, 0x57, 0x74, 0x0f,
-0xcf, 0x1f, 0xe2, 0x93, 0x8e, 0x1f, 0x6b, 0x3f,
-0x0b, 0x78, 0xee, 0x70, 0xf4, 0xd9, 0xe2, 0x3f,
-0x5c, 0x31, 0xf9, 0x0e, 0x88, 0x0d, 0x6e, 0x5d,
-0xc0, 0x06, 0xf5, 0x1d, 0xe0, 0x35, 0xd5, 0x80,
-0x47, 0xb0, 0x4e, 0xc5, 0x97, 0x60, 0x7e, 0xb6,
-0x13, 0x3a, 0x7d, 0x7a, 0xdb, 0x7a, 0xbf, 0x3d,
-0xff, 0xf5, 0xb9, 0xa7, 0x11, 0xff, 0xcc, 0x35,
-0x4b, 0xe2, 0xee, 0x41, 0xe8, 0xcc, 0xf5, 0x0c,
-0xa8, 0x71, 0xa8, 0xf0, 0x77, 0x13, 0x8c, 0x8c,
-0xb3, 0x9d, 0x2d, 0xcf, 0x80, 0x27, 0xe4, 0x78,
-0x2e, 0x2b, 0xff, 0xd5, 0x29, 0xde, 0x47, 0x23,
-0xbb, 0x24, 0x5e, 0xf8, 0x2e, 0x2e, 0x4b, 0x3d,
-0x01, 0xe3, 0xed, 0xfc, 0x08, 0x02, 0x21, 0xfc,
-0x82, 0x1e, 0x40, 0xfb, 0xeb, 0x5e, 0x91, 0x7b,
-0x50, 0x36, 0xd3, 0xfa, 0xe7, 0x34, 0xc4, 0x9d,
-0xc7, 0xa0, 0xc1, 0x9c, 0x3f, 0xde, 0xfc, 0x47,
-0x84, 0x85, 0x8d, 0x1d, 0x05, 0xe3, 0x65, 0x13,
-0xca, 0x45, 0xb8, 0xd9, 0x74, 0x8d, 0x37, 0x9f,
-0xd3, 0x2f, 0xc3, 0x4b, 0x4c, 0x45, 0xfc, 0x33,
-0xfd, 0x73, 0x21, 0xfe, 0x79, 0x0a, 0x28, 0xc9,
-0x45, 0xdf, 0x23, 0x7b, 0x5f, 0xaf, 0xc7, 0xff,
-0x90, 0x5a, 0x0a, 0x17, 0xb5, 0x5e, 0x82, 0x3d,
-0xe5, 0xec, 0x08, 0x8f, 0x1b, 0xce, 0xec, 0xfc,
-0x97, 0x17, 0x36, 0x99, 0x65, 0x49, 0xfe, 0x87,
-0xa6, 0x11, 0x78, 0x6b, 0x91, 0xa7, 0xdf, 0xf1,
-0x0f, 0xa8, 0x0d, 0x5e, 0x5a, 0x53, 0x66, 0xf2,
-0xff, 0xa3, 0x69, 0xae, 0xb2, 0xd6, 0xf0, 0xb4,
-0x23, 0x54, 0xce, 0xc2, 0x3f, 0xfe, 0xc7, 0x86,
-0xf5, 0xe4, 0x35, 0x35, 0xe1, 0x41, 0xf4, 0x0e,
-0xbc, 0x82, 0xdf, 0xc8, 0x7a, 0x60, 0x0f, 0x6e,
-0x03, 0x5e, 0xd7, 0xa4, 0x40, 0x27, 0xf4, 0xb4,
-0x33, 0xb0, 0xe3, 0x9f, 0x45, 0x57, 0x2b, 0x0f,
-0x8b, 0xbb, 0xc7, 0x3e, 0x4d, 0xd6, 0xff, 0x91,
-0x68, 0xa9, 0xee, 0xb8, 0x8f, 0xfd, 0x00, 0xf6,
-0x09, 0x3d, 0xc9, 0xeb, 0xd8, 0x55, 0xb0, 0x36,
-0xf2, 0x99, 0xe5, 0x8e, 0x3a, 0x3b, 0xfe, 0x69,
-0x65, 0xed, 0xbf, 0x04, 0xff, 0x19, 0x97, 0x1f,
-0xd5, 0xf2, 0x3b, 0xb1, 0x7a, 0xe1, 0xbc, 0x49,
-0x8e, 0x10, 0xec, 0x49, 0x38, 0xfd, 0x1d, 0xb9,
-0x2b, 0x3a, 0x45, 0x9d, 0x39, 0x7b, 0x81, 0x6c,
-0xc3, 0x3f, 0xd7, 0x6e, 0x25, 0x90, 0x33, 0x5c,
-0x70, 0x4e, 0x3e, 0x07, 0xdf, 0x6d, 0x45, 0xb4,
-0x73, 0x56, 0x5e, 0x0d, 0x2f, 0x21, 0x3e, 0x9c,
-0xbf, 0xbb, 0xe3, 0x1c, 0xae, 0xd8, 0x42, 0x33,
-0x3f, 0x2b, 0xfe, 0x33, 0x73, 0x1c, 0x2e, 0xae,
-0xa8, 0x3b, 0xe1, 0x7b, 0x16, 0xb5, 0xfd, 0xcb,
-0x7a, 0x40, 0xdc, 0x1e, 0x97, 0x92, 0xb8, 0x3e,
-0xc1, 0x84, 0x73, 0xef, 0x8e, 0x72, 0xb8, 0xd8,
-0x6a, 0xf1, 0x7f, 0x6c, 0xf9, 0xaf, 0x4f, 0x97,
-0xc0, 0x9e, 0x50, 0x69, 0x02, 0xb5, 0xe5, 0x5e,
-0x58, 0x4b, 0xf9, 0xaf, 0x6f, 0xb2, 0x93, 0xa4,
-0x3f, 0x07, 0xf8, 0xbd, 0x68, 0x71, 0xf6, 0x18,
-0x68, 0xaa, 0x56, 0xb1, 0x8f, 0x6c, 0xf8, 0xe7,
-0xff, 0x84, 0x7d, 0xb1, 0xbf, 0x49, 0xe6, 0xd5,
-0xe7, 0xe2, 0xdb, 0x89, 0x9d, 0x08, 0xfc, 0xd8,
-0xaf, 0x94, 0x85, 0xc2, 0x37, 0xc6, 0xeb, 0xe6,
-0x5e, 0x85, 0xa7, 0xe6, 0x24, 0x4b, 0xee, 0xb7,
-0xe7, 0xbf, 0x94, 0xa3, 0xd6, 0xea, 0xe5, 0xf9,
-0x73, 0x1f, 0x30, 0x3a, 0xe5, 0xf2, 0x5f, 0x21,
-0xfe, 0x39, 0x82, 0x47, 0x28, 0xe3, 0x9c, 0x5b,
-0x00, 0x7b, 0x98, 0x2f, 0xe1, 0xa8, 0x1b, 0xb0,
-0xe5, 0xbf, 0x72, 0x0e, 0x18, 0x17, 0xd0, 0xff,
-0xca, 0x27, 0xd8, 0x73, 0x14, 0x6e, 0x40, 0xb4,
-0xd3, 0x7c, 0x41, 0x5c, 0x80, 0xef, 0x08, 0x67,
-0xec, 0x9a, 0x0a, 0xe7, 0x05, 0x58, 0x28, 0x9c,
-0xa3, 0x33, 0x6c, 0xf9, 0x2f, 0xed, 0x34, 0x3a,
-0xdd, 0x0d, 0x50, 0x00, 0x72, 0x92, 0x8d, 0x1b,
-0xf5, 0x50, 0x20, 0x9a, 0x93, 0x62, 0x02, 0xee,
-0x87, 0xf9, 0x08, 0x84, 0x8c, 0x09, 0x3c, 0xe2,
-0x12, 0x33, 0xec, 0xf8, 0xe7, 0xd5, 0xc8, 0x7b,
-0xfa, 0xd5, 0xcb, 0xf3, 0xb7, 0xca, 0xcb, 0x81,
-0xf2, 0x23, 0x4e, 0x8a, 0x0f, 0x9c, 0x2d, 0xbf,
-0xca, 0xc8, 0x7f, 0xfc, 0x9a, 0x72, 0xe3, 0xbc,
-0x6e, 0x59, 0x4c, 0x3b, 0xff, 0x67, 0x39, 0xea,
-0x20, 0x8f, 0x11, 0x21, 0xeb, 0xbf, 0xee, 0x6e,
-0x8f, 0xc1, 0xbf, 0xef, 0x49, 0xd1, 0x4e, 0x38,
-0xfd, 0xc3, 0xfd, 0x89, 0x8a, 0x6c, 0xfe, 0x4f,
-0x89, 0x52, 0x2e, 0x3d, 0xc5, 0x2a, 0x8c, 0x12,
-0x4a, 0xd3, 0x3c, 0x05, 0xf7, 0x18, 0x7f, 0x13,
-0x6d, 0x5a, 0x8e, 0xd7, 0x57, 0x18, 0x9f, 0xa5,
-0x23, 0xbb, 0xe1, 0x9e, 0x76, 0x8b, 0xff, 0x33,
-0xfd, 0x87, 0xf8, 0x67, 0x5b, 0x87, 0xcf, 0xdb,
-0xd6, 0xe7, 0x0e, 0x97, 0xc3, 0x36, 0xaf, 0xa7,
-0x2d, 0xcf, 0x1d, 0x6e, 0x91, 0x76, 0x7b, 0xbd,
-0x16, 0x22, 0xb2, 0x04, 0xc4, 0x3f, 0xb6, 0xf8,
-0x0f, 0x5f, 0x21, 0x46, 0xad, 0xf8, 0x8f, 0xaa,
-0xb3, 0x51, 0xdd, 0xc3, 0x6f, 0x0b, 0xe7, 0x85,
-0x60, 0x42, 0x0f, 0xa2, 0xdf, 0x5c, 0xa4, 0xf3,
-0x09, 0xdd, 0x4f, 0x89, 0xb0, 0xa3, 0xe9, 0xfd,
-0xb3, 0xf5, 0xda, 0xbd, 0xf0, 0x2d, 0x6f, 0xad,
-0x81, 0x68, 0x67, 0x6f, 0xec, 0x75, 0xef, 0x4b,
-0x6d, 0x05, 0x28, 0xf4, 0x9c, 0x97, 0x9e, 0x6b,
-0x9b, 0x11, 0x55, 0xf7, 0xf2, 0xf3, 0x04, 0x8d,
-0x86, 0xcb, 0xb2, 0xe3, 0x3f, 0x9f, 0xe0, 0xcf,
-0xee, 0x3c, 0x2e, 0x2b, 0xf0, 0x82, 0x1f, 0xd7,
-0x67, 0xb8, 0x73, 0xd0, 0x78, 0x4d, 0x0f, 0x20,
-0x82, 0xa2, 0x44, 0x98, 0xb4, 0xa7, 0xc5, 0xb5,
-0xd9, 0xce, 0xff, 0xd1, 0xde, 0x83, 0xbe, 0x7c,
-0x4f, 0x8e, 0x97, 0xf0, 0x4f, 0x9f, 0xdf, 0xa3,
-0xe5, 0x77, 0x11, 0xfe, 0x01, 0x4f, 0x9e, 0xda,
-0xc1, 0x74, 0x16, 0x51, 0x3c, 0x8a, 0x1a, 0xb3,
-0xf1, 0x7f, 0x78, 0xce, 0xa0, 0xb1, 0x5b, 0x43,
-0x58, 0x58, 0xc4, 0x94, 0xf8, 0x6e, 0x5d, 0xbf,
-0xbd, 0x55, 0xcb, 0x1d, 0x81, 0x0e, 0x4d, 0x5f,
-0xac, 0x6a, 0x56, 0x22, 0x4c, 0x37, 0xd4, 0x42,
-0x9b, 0xfe, 0x29, 0x99, 0xb9, 0x33, 0x15, 0x34,
-0xd3, 0x2a, 0xca, 0x5b, 0xf6, 0x4b, 0x9e, 0x36,
-0x5c, 0xc6, 0x11, 0x8b, 0x61, 0xb5, 0x18, 0xd7,
-0xb3, 0x64, 0x1d, 0xf3, 0xb4, 0xd0, 0x7a, 0x66,
-0xf0, 0x4f, 0xf1, 0x13, 0x88, 0x5e, 0x02, 0x88,
-0x4e, 0xe5, 0xb9, 0x88, 0x5e, 0x02, 0xab, 0x10,
-0xd6, 0x0e, 0xea, 0x87, 0x72, 0xac, 0x9f, 0x95,
-0x12, 0x61, 0x81, 0x15, 0x33, 0xb6, 0xce, 0x18,
-0x4d, 0xe7, 0xa7, 0x9e, 0x86, 0x9d, 0x5e, 0x8b,
-0xf6, 0x13, 0xed, 0x7c, 0x17, 0x28, 0xbe, 0x41,
-0x78, 0x8f, 0x9d, 0xb7, 0x84, 0xce, 0x77, 0x5b,
-0xf1, 0x54, 0x93, 0x6b, 0x0b, 0x7e, 0x2f, 0xd3,
-0xd7, 0x7b, 0xb5, 0x6d, 0x6c, 0x58, 0xf2, 0x83,
-0x8f, 0xa2, 0x8b, 0x27, 0xcb, 0x03, 0x70, 0x2c,
-0x2c, 0x9f, 0x86, 0x04, 0xd4, 0x82, 0x13, 0x9a,
-0x75, 0x7d, 0x98, 0xe2, 0xcf, 0x42, 0x3e, 0x9c,
-0xc9, 0x7f, 0x29, 0x75, 0xfa, 0xd1, 0x50, 0x85,
-0xe0, 0x49, 0xb4, 0x3e, 0x0f, 0x2e, 0xf2, 0x88,
-0xc5, 0x23, 0x28, 0x84, 0x99, 0x47, 0x38, 0x92,
-0xe1, 0x4f, 0xc3, 0x51, 0xb3, 0x6c, 0x33, 0xfa,
-0xef, 0x89, 0xf4, 0x7e, 0xf0, 0xae, 0x69, 0x82,
-0x30, 0xc7, 0xf5, 0xa9, 0x63, 0x43, 0x88, 0x96,
-0x3d, 0xe6, 0x62, 0x74, 0x6c, 0x79, 0xa7, 0x56,
-0x6e, 0xf2, 0x1a, 0x47, 0x81, 0xd4, 0xb9, 0x5d,
-0x37, 0xdb, 0xfc, 0x9e, 0xc3, 0x99, 0xfc, 0x57,
-0x21, 0xd3, 0x1e, 0xa0, 0x34, 0xd9, 0x2a, 0xd4,
-0x3f, 0x9d, 0x7c, 0x1b, 0xa2, 0x85, 0xb9, 0x93,
-0xa2, 0x03, 0x4a, 0x47, 0x1c, 0x7e, 0x56, 0xec,
-0xe9, 0xe4, 0xa5, 0x49, 0xfc, 0x7e, 0x13, 0x99,
-0xfc, 0x57, 0xeb, 0xd5, 0x7c, 0x88, 0xf8, 0x39,
-0xab, 0xe5, 0x37, 0xf5, 0x7f, 0x12, 0x0b, 0x46,
-0xd5, 0xd5, 0xf2, 0x5b, 0xe1, 0x57, 0xc4, 0xc2,
-0x31, 0xdf, 0x9d, 0x65, 0xb3, 0xe1, 0x15, 0x3c,
-0x55, 0xb0, 0x5a, 0x3e, 0x6c, 0xcb, 0x7f, 0xf5,
-0x20, 0xcc, 0x26, 0x23, 0x5e, 0xf4, 0x81, 0x40,
-0xd8, 0x33, 0xe8, 0x8a, 0x16, 0x59, 0x61, 0x64,
-0x93, 0x80, 0xa5, 0xf2, 0x1e, 0x34, 0x88, 0x4a,
-0x3b, 0xfe, 0x31, 0x72, 0x26, 0xcc, 0xef, 0x94,
-0x06, 0x97, 0x6f, 0x9a, 0x90, 0xab, 0x42, 0xff,
-0x98, 0x82, 0x3d, 0x6f, 0x36, 0xbd, 0x16, 0x0d,
-0x8e, 0x38, 0xcf, 0xcb, 0x41, 0x78, 0x29, 0x5c,
-0x7d, 0xb7, 0x73, 0x42, 0xd6, 0x6c, 0xf8, 0x27,
-0xd2, 0xb1, 0xb7, 0x3d, 0x36, 0xaa, 0x8e, 0x37,
-0x05, 0xc5, 0x1a, 0x0d, 0xd1, 0x8b, 0x26, 0x3f,
-0x6e, 0xae, 0xf1, 0x57, 0x8e, 0xf2, 0xd5, 0x4c,
-0x11, 0xcf, 0xe9, 0xdb, 0x48, 0xff, 0x54, 0xa4,
-0xf1, 0xa7, 0x30, 0xb6, 0xb6, 0xef, 0x85, 0x39,
-0x84, 0xf7, 0xee, 0x2a, 0xdd, 0x00, 0xa5, 0x04,
-0x7b, 0xee, 0x57, 0xbe, 0x87, 0x88, 0x28, 0x2f,
-0xc0, 0x66, 0xf1, 0x67, 0x61, 0x8e, 0x91, 0xb7,
-0x0a, 0xed, 0xfb, 0xf4, 0xfa, 0x87, 0x8a, 0x5b,
-0x8d, 0x78, 0x2a, 0x89, 0x73, 0x3b, 0x7e, 0xc8,
-0x64, 0xcd, 0xdd, 0x3f, 0xfb, 0xf2, 0x43, 0x92,
-0xcf, 0x5c, 0xa7, 0x31, 0x27, 0xc4, 0xa1, 0xfc,
-0xbf, 0xa8, 0x41, 0x56, 0x92, 0xde, 0x9f, 0xde,
-0x99, 0x3f, 0x05, 0x8a, 0xde, 0x6c, 0x8a, 0xcb,
-0xf7, 0xc3, 0x21, 0x65, 0xcf, 0x38, 0xbe, 0xe6,
-0xa4, 0xf2, 0x3a, 0xba, 0x99, 0xb3, 0xe2, 0xd7,
-0x70, 0x74, 0x24, 0x7f, 0x6c, 0xa0, 0xe3, 0xe9,
-0xb0, 0xe1, 0x9f, 0x51, 0xca, 0xce, 0x53, 0x12,
-0x70, 0x17, 0x3b, 0x4d, 0x68, 0x47, 0x20, 0x0c,
-0x78, 0x0f, 0x8f, 0x54, 0xed, 0x2d, 0xfb, 0xe0,
-0x8e, 0x8f, 0xa4, 0x3a, 0xa3, 0x60, 0x77, 0x16,
-0xfe, 0x99, 0x30, 0xce, 0xa2, 0xd2, 0x9e, 0x31,
-0x59, 0x34, 0x09, 0xff, 0x15, 0x6e, 0x18, 0x98,
-0x35, 0xdc, 0xdc, 0x00, 0xaf, 0xc4, 0x16, 0x9a,
-0x79, 0xc3, 0xe8, 0xe6, 0x27, 0x60, 0x21, 0xc5,
-0xe7, 0x6d, 0xf9, 0x2f, 0xe5, 0xef, 0xa0, 0x8f,
-0x92, 0x56, 0x5d, 0xe1, 0x21, 0x6d, 0x9d, 0xe9,
-0x31, 0xf3, 0xb7, 0x22, 0x9e, 0x59, 0x47, 0x78,
-0xe6, 0x79, 0xf6, 0xae, 0x38, 0x29, 0x02, 0x7e,
-0xca, 0xbf, 0x64, 0xf0, 0x8f, 0xe2, 0xd5, 0x9f,
-0x17, 0x3f, 0x36, 0x10, 0xff, 0x8c, 0x49, 0xfb,
-0x23, 0x9e, 0x7e, 0xee, 0x74, 0xf8, 0xa4, 0x75,
-0xb0, 0xdc, 0x44, 0x18, 0xf0, 0x21, 0x3c, 0x1a,
-0xb9, 0xe7, 0x4b, 0x25, 0x71, 0x4f, 0x52, 0x9a,
-0xde, 0x0f, 0x5c, 0xe1, 0x46, 0x2f, 0xe8, 0x89,
-0xc5, 0xfe, 0xdc, 0x31, 0xb1, 0x8d, 0x14, 0x35,
-0x30, 0x27, 0xc3, 0x85, 0x3a, 0xbc, 0x1e, 0x3d,
-0xf4, 0xe6, 0xcd, 0xe4, 0xc1, 0x21, 0x1e, 0x48,
-0xf3, 0x69, 0x81, 0x7b, 0x11, 0x56, 0xd5, 0x9e,
-0x20, 0x1a, 0x6a, 0xec, 0x7c, 0x4b, 0xc0, 0xe4,
-0x51, 0xb7, 0x4f, 0x39, 0xc4, 0x6e, 0x48, 0x54,
-0xf6, 0x36, 0x7d, 0x00, 0x27, 0x17, 0xf9, 0x0d,
-0x1f, 0x3e, 0xff, 0x8c, 0x74, 0x7c, 0xf2, 0xda,
-0x09, 0x31, 0x09, 0x37, 0x0d, 0xb9, 0xc6, 0xcb,
-0x26, 0xe1, 0x9f, 0xbd, 0x2f, 0x99, 0xe8, 0x88,
-0x4d, 0x5a, 0x44, 0xdf, 0xfc, 0x9d, 0x88, 0x8f,
-0x27, 0xf9, 0x4b, 0xc6, 0xd2, 0x71, 0x5b, 0x3c,
-0xd6, 0xcc, 0xf9, 0x88, 0xbf, 0x65, 0x7e, 0x4b,
-0xc7, 0x4d, 0xf2, 0xa2, 0xf2, 0x47, 0xd1, 0x38,
-0xa7, 0x60, 0x5c, 0xfe, 0x03, 0x8c, 0x74, 0x35,
-0xea, 0xe8, 0xc8, 0x07, 0xe1, 0x18, 0x11, 0xa1,
-0xfb, 0xe4, 0xf1, 0x0c, 0x3e, 0xd1, 0xde, 0x25,
-0x5a, 0x2f, 0xcf, 0xa7, 0x7c, 0xdf, 0x01, 0xa8,
-0xa2, 0x34, 0xdf, 0xbb, 0x10, 0x11, 0x55, 0x31,
-0xf5, 0xa0, 0x5c, 0x85, 0xa0, 0xb5, 0x2a, 0xa1,
-0xf6, 0x65, 0xe5, 0xbf, 0x06, 0x61, 0x8f, 0xee,
-0x75, 0x38, 0xe2, 0xe1, 0x0d, 0x68, 0x86, 0x56,
-0x26, 0xd4, 0x05, 0xac, 0x05, 0x61, 0xa5, 0x4f,
-0x2c, 0xae, 0xc9, 0x75, 0x52, 0x3c, 0x70, 0xc0,
-0xe2, 0x3b, 0x4d, 0xff, 0xbe, 0xe6, 0xcc, 0x1f,
-0xe3, 0xc1, 0x0a, 0xc0, 0x9b, 0xec, 0xa2, 0xfb,
-0x27, 0xf3, 0xe2, 0xa8, 0x7f, 0x10, 0xff, 0x44,
-0x10, 0x76, 0xfa, 0x04, 0x01, 0x21, 0x44, 0x44,
-0xb6, 0xfc, 0xd7, 0xcc, 0x01, 0xf4, 0x0e, 0xbc,
-0x5a, 0x81, 0x5f, 0xde, 0x85, 0x66, 0xb7, 0x2a,
-0xe9, 0x8a, 0x97, 0xbd, 0x0b, 0xef, 0xe9, 0xb3,
-0xb7, 0xba, 0xe2, 0x92, 0x0f, 0x4d, 0x9f, 0x85,
-0x87, 0x33, 0xfc, 0xe7, 0xb8, 0xb4, 0x17, 0xde,
-0x62, 0x0b, 0xe7, 0xa2, 0x11, 0xbf, 0x5f, 0xa1,
-0x68, 0x18, 0xbd, 0xaf, 0xb8, 0x6c, 0x34, 0x0a,
-0xd7, 0x2a, 0xf9, 0x20, 0x21, 0x22, 0x2b, 0x3f,
-0x68, 0x8b, 0xff, 0xec, 0x2a, 0x25, 0x58, 0x85,
-0xf8, 0x67, 0x4c, 0xbf, 0xc8, 0xbf, 0x69, 0x5e,
-0x87, 0x40, 0x48, 0x7f, 0xbd, 0x3d, 0x20, 0xf2,
-0xe3, 0xfd, 0xbb, 0x28, 0x11, 0x46, 0x40, 0x68,
-0x3c, 0x8d, 0x7f, 0x4e, 0xe6, 0xcc, 0xa1, 0xf5,
-0xd9, 0xec, 0x88, 0xc3, 0xef, 0xf8, 0x01, 0xdc,
-0x3f, 0x78, 0xb7, 0x35, 0x78, 0xa4, 0x36, 0xac,
-0x9e, 0x93, 0x97, 0x1a, 0xbf, 0x4e, 0x01, 0xb9,
-0x8f, 0x6c, 0xf8, 0xa7, 0x19, 0xca, 0x80, 0x03,
-0x2e, 0xc2, 0x31, 0x63, 0x0f, 0x5e, 0xaf, 0x2e,
-0x08, 0xbf, 0x6a, 0x3c, 0x3c, 0xe4, 0xed, 0x43,
-0xc3, 0x7d, 0x8c, 0x75, 0xc2, 0x4a, 0x33, 0x9b,
-0xff, 0x2c, 0x11, 0x0c, 0x28, 0xd3, 0xd5, 0xd5,
-0xb9, 0x6f, 0x6a, 0x2f, 0x45, 0x2c, 0x3e, 0xcc,
-0xf7, 0xa5, 0x4d, 0x68, 0xbf, 0xd5, 0xd5, 0xe1,
-0x37, 0xf5, 0x47, 0x52, 0xc4, 0x98, 0x0c, 0xff,
-0xb9, 0x8d, 0xe7, 0x26, 0x9f, 0x41, 0x2f, 0xd2,
-0xe5, 0xf7, 0x10, 0xdb, 0x59, 0x1f, 0x56, 0xeb,
-0x11, 0x08, 0x1d, 0x87, 0x3a, 0x91, 0x57, 0xf7,
-0xa5, 0x21, 0xf1, 0x32, 0x3d, 0x7f, 0x9d, 0x9d,
-0xff, 0x7c, 0x6d, 0x17, 0xbf, 0x4c, 0x6c, 0xde,
-0x71, 0x79, 0xd2, 0xb8, 0x0c, 0x07, 0x06, 0x5d,
-0xbb, 0x3b, 0xb7, 0x18, 0x04, 0x7b, 0x5c, 0xab,
-0xca, 0x96, 0x4c, 0xaf, 0x4f, 0x56, 0xfc, 0x87,
-0x5f, 0x24, 0x5a, 0x0b, 0xe5, 0x07, 0x8f, 0xb0,
-0x60, 0x32, 0xdf, 0x8f, 0x66, 0x9a, 0x3c, 0x38,
-0xd7, 0x02, 0x8f, 0x8f, 0xfc, 0x35, 0xb3, 0xa0,
-0x4e, 0x76, 0xd8, 0xf2, 0x5f, 0x5b, 0x08, 0xed,
-0x40, 0xfe, 0x2a, 0x76, 0x8a, 0xaf, 0x95, 0x66,
-0x98, 0x79, 0xf7, 0xe6, 0x16, 0xf3, 0x3f, 0x42,
-0xa5, 0xc8, 0x5b, 0xa5, 0xcf, 0x42, 0x44, 0x54,
-0x89, 0xaa, 0x86, 0x05, 0x6c, 0xf9, 0xaf, 0x1f,
-0xc1, 0xbe, 0x8e, 0xca, 0xd0, 0xd6, 0x54, 0xb4,
-0x27, 0x3f, 0xc9, 0x27, 0xd8, 0x17, 0x88, 0xff,
-0x13, 0x5b, 0x3c, 0x01, 0x5f, 0xc4, 0xa5, 0xa8,
-0x24, 0x44, 0x94, 0xfe, 0x5a, 0x28, 0xff, 0x45,
-0x68, 0xa7, 0xee, 0xd3, 0x1a, 0xa5, 0x81, 0x44,
-0xf9, 0x47, 0xb8, 0x7a, 0xb7, 0x4b, 0x7b, 0xb6,
-0xfa, 0xf6, 0xe0, 0x7a, 0xb6, 0x20, 0x9e, 0xac,
-0x32, 0xad, 0xf8, 0xcf, 0xf4, 0xfd, 0x93, 0x33,
-0x9f, 0xd7, 0x9f, 0x87, 0x9b, 0x23, 0xce, 0x98,
-0xbc, 0x02, 0x0e, 0xc7, 0x1a, 0xfb, 0xf2, 0x43,
-0x6c, 0x85, 0xb8, 0xd4, 0x74, 0xb3, 0x70, 0x25,
-0xd5, 0x56, 0xf6, 0x06, 0xb9, 0xa2, 0x31, 0xb5,
-0xce, 0x16, 0xff, 0x39, 0x4d, 0xde, 0x16, 0x85,
-0x7d, 0x50, 0x68, 0xa9, 0x25, 0xd8, 0x13, 0x03,
-0x74, 0xbb, 0x94, 0xfc, 0x2e, 0x14, 0xa6, 0x4e,
-0xd9, 0xf1, 0xcf, 0xbb, 0xd2, 0x21, 0xcb, 0xde,
-0xc9, 0xef, 0xc2, 0x21, 0x3d, 0xb0, 0x48, 0xdd,
-0x5a, 0xf6, 0x15, 0x7e, 0x5e, 0xd4, 0x1b, 0x4e,
-0xb7, 0xfc, 0x15, 0x46, 0xa7, 0x78, 0x16, 0xfe,
-0x51, 0x6e, 0x59, 0xf4, 0x14, 0x54, 0xad, 0xae,
-0x88, 0xe6, 0x8e, 0xac, 0x78, 0x6a, 0x7d, 0x85,
-0x51, 0xf0, 0x10, 0xba, 0x09, 0xbb, 0x4b, 0x6a,
-0x57, 0x14, 0x10, 0xff, 0x64, 0x1d, 0xb3, 0xf2,
-0x2f, 0x36, 0xfc, 0x63, 0xf1, 0x9f, 0xab, 0x12,
-0x9f, 0x8d, 0xe6, 0x2e, 0x4f, 0x99, 0xe9, 0x2d,
-0x57, 0x95, 0x8b, 0xa7, 0x24, 0x4f, 0x4b, 0x6b,
-0xd4, 0xbd, 0x5c, 0x59, 0xa7, 0x54, 0x19, 0x57,
-0x5f, 0x91, 0xff, 0x82, 0x6d, 0x50, 0x45, 0x41,
-0xa1, 0x41, 0x14, 0xbc, 0x86, 0xc3, 0xfd, 0xfd,
-0x07, 0x10, 0x26, 0xcd, 0xb5, 0x02, 0x41, 0xa8,
-0xb1, 0x7d, 0x74, 0xca, 0x9e, 0xff, 0x5a, 0x81,
-0xe8, 0x22, 0x08, 0xf9, 0x14, 0xc4, 0x8e, 0x40,
-0x00, 0x5c, 0xe1, 0x32, 0x9d, 0x88, 0xa9, 0xe0,
-0xdc, 0xae, 0x86, 0x10, 0xee, 0x07, 0xa1, 0x2a,
-0x2b, 0xff, 0x75, 0xed, 0x39, 0xe9, 0x7c, 0x2a,
-0xfe, 0x73, 0x22, 0xf6, 0x89, 0xaf, 0xb1, 0xad,
-0x20, 0x5a, 0xb8, 0x17, 0x6e, 0x06, 0x0a, 0x44,
-0xcb, 0x27, 0xc8, 0x90, 0x2d, 0xce, 0xb7, 0xf3,
-0x7f, 0x4a, 0x72, 0x4e, 0x00, 0x6a, 0xfb, 0x45,
-0xce, 0x05, 0x88, 0xb7, 0x3f, 0x91, 0x82, 0x2d,
-0x05, 0xed, 0x72, 0xb1, 0xf2, 0x81, 0xd4, 0xb8,
-0xc8, 0x75, 0xbc, 0xfb, 0x2e, 0x76, 0x28, 0x27,
-0x88, 0x88, 0xa8, 0xd9, 0x9e, 0xff, 0x4a, 0x72,
-0x93, 0x57, 0x01, 0x05, 0xd5, 0x63, 0x75, 0x08,
-0xcc, 0x78, 0x17, 0x8b, 0x11, 0x23, 0x1a, 0x64,
-0x8b, 0x11, 0x04, 0x55, 0xcc, 0x61, 0xe7, 0x3f,
-0xf3, 0x5b, 0x06, 0x59, 0x87, 0xee, 0x33, 0x4b,
-0xb4, 0xa6, 0x41, 0xb1, 0xdb, 0x5b, 0xd5, 0xea,
-0x28, 0x74, 0x2b, 0xb0, 0x5b, 0xf2, 0x19, 0x8b,
-0xb5, 0xdc, 0x96, 0xe9, 0xf7, 0xcd, 0xca, 0x7f,
-0x89, 0x75, 0xe0, 0x6b, 0xe5, 0x04, 0x7b, 0x0e,
-0xc0, 0xdf, 0xb6, 0xa0, 0xb0, 0x53, 0x1c, 0x80,
-0x82, 0xe6, 0xbc, 0x29, 0x22, 0x10, 0x65, 0x18,
-0xed, 0xf9, 0xaf, 0x57, 0xc4, 0x21, 0x29, 0x68,
-0xf8, 0x2c, 0xf6, 0x32, 0x34, 0xb4, 0xde, 0x1e,
-0x95, 0xcb, 0xa5, 0xf3, 0x89, 0xe0, 0xd7, 0xf1,
-0x17, 0x5f, 0x8e, 0xf8, 0xa7, 0x8a, 0x5e, 0x3c,
-0x2b, 0xff, 0xa5, 0xe3, 0x22, 0xdc, 0xe3, 0x7a,
-0xb4, 0x6c, 0x84, 0x9f, 0x8f, 0xd6, 0x1b, 0xf9,
-0x1a, 0xfd, 0x43, 0x2d, 0xd8, 0x82, 0xf8, 0xe7,
-0xb7, 0x70, 0x5e, 0xb9, 0x82, 0xff, 0x8c, 0xf8,
-0xc7, 0x62, 0x3b, 0xe7, 0x08, 0x59, 0xef, 0x98,
-0xda, 0x5d, 0x3a, 0x24, 0xf4, 0x00, 0x73, 0x0a,
-0x35, 0x45, 0x44, 0x77, 0x65, 0xf3, 0x9f, 0xeb,
-0x10, 0x63, 0x15, 0x21, 0xda, 0xc9, 0xbd, 0x51,
-0xfc, 0x28, 0x54, 0x45, 0xf8, 0xa7, 0x4f, 0xff,
-0xa9, 0x58, 0x18, 0xcd, 0xff, 0x0a, 0x2b, 0xd1,
-0xd6, 0x23, 0xd4, 0x97, 0x89, 0xff, 0x9c, 0xbe,
-0xbf, 0x74, 0x1b, 0xa7, 0x78, 0xe9, 0x3c, 0xca,
-0x17, 0xef, 0x89, 0xac, 0x34, 0xd1, 0x17, 0x72,
-0xe9, 0x1d, 0xc2, 0x7b, 0x02, 0x11, 0x51, 0x81,
-0x41, 0xa9, 0x64, 0x95, 0xf8, 0xcf, 0xd3, 0xeb,
-0x49, 0xf9, 0xaf, 0x27, 0xbb, 0xca, 0xcc, 0xbc,
-0x6f, 0xb3, 0x59, 0xf0, 0x08, 0x54, 0x26, 0xd4,
-0xf6, 0xf0, 0x8b, 0xf0, 0x04, 0xd5, 0x5f, 0x68,
-0x78, 0x64, 0x06, 0xcc, 0x1b, 0x54, 0x57, 0x35,
-0xd9, 0xf3, 0x5f, 0x6e, 0xf8, 0x79, 0xe4, 0xc6,
-0x64, 0xfe, 0x7d, 0x6c, 0x36, 0x7e, 0xb6, 0x37,
-0x8f, 0xbb, 0x88, 0xa6, 0xf8, 0x8a, 0xb8, 0x11,
-0x11, 0x51, 0xd1, 0x6c, 0x46, 0xd4, 0x68, 0x57,
-0x56, 0xfe, 0xeb, 0xda, 0x18, 0x5c, 0x6c, 0xaf,
-0x33, 0x6f, 0x8f, 0x97, 0x8d, 0x59, 0xda, 0xc3,
-0x15, 0x95, 0xc6, 0x10, 0x28, 0xd6, 0x98, 0xaf,
-0x45, 0xd1, 0x22, 0x5c, 0x84, 0xab, 0xcd, 0x9c,
-0x2c, 0xfe, 0x73, 0xce, 0x1b, 0xf2, 0x5b, 0xda,
-0x82, 0xd0, 0x06, 0x44, 0x3b, 0xc6, 0xfb, 0x51,
-0xb4, 0x56, 0x27, 0xe5, 0x37, 0xe1, 0x37, 0x22,
-0x90, 0x54, 0x6e, 0x94, 0x9f, 0xe3, 0x64, 0xbf,
-0x88, 0xff, 0xac, 0x4f, 0xaf, 0xff, 0x53, 0x85,
-0xc2, 0x38, 0x06, 0xa5, 0x5a, 0xfe, 0x44, 0x93,
-0x13, 0xd6, 0xc6, 0x50, 0xdb, 0x68, 0xec, 0x14,
-0xfc, 0x23, 0xcc, 0x9b, 0x74, 0xdc, 0x87, 0x1b,
-0xef, 0x49, 0x98, 0x6f, 0x3a, 0xbe, 0xce, 0xce,
-0x14, 0x4f, 0xdf, 0x1f, 0x20, 0x0a, 0x6b, 0xfd,
-0x65, 0x86, 0x77, 0x15, 0x9b, 0xa5, 0x3d, 0xa9,
-0x57, 0x52, 0x74, 0xe8, 0x94, 0xfe, 0x13, 0x5e,
-0x66, 0x96, 0xdc, 0x9b, 0x7b, 0xce, 0xd2, 0x57,
-0xc4, 0x7f, 0xb6, 0xc5, 0x7f, 0x06, 0x70, 0xd1,
-0x74, 0x2d, 0xaf, 0x0e, 0xd7, 0xb3, 0x93, 0xac,
-0x9b, 0xc6, 0x8e, 0x6a, 0x0f, 0x71, 0xef, 0x9d,
-0x0e, 0x60, 0x05, 0x50, 0xa6, 0x54, 0x99, 0x8e,
-0xec, 0xfc, 0xd7, 0x5a, 0x7e, 0x0c, 0x02, 0x51,
-0x3e, 0xde, 0x4d, 0x61, 0x8d, 0x46, 0xb2, 0x56,
-0x1f, 0x4a, 0xef, 0x0b, 0xcf, 0xf1, 0x25, 0x71,
-0x76, 0x86, 0x1f, 0xc1, 0x23, 0xe4, 0x3f, 0xa6,
-0xeb, 0x05, 0x04, 0x24, 0xd1, 0xdf, 0x7f, 0xb1,
-0x9d, 0xa2, 0x3d, 0xa8, 0x46, 0x82, 0x49, 0xdc,
-0x2d, 0x88, 0x7f, 0xa4, 0x20, 0xd1, 0x2c, 0xc7,
-0xda, 0xa7, 0x02, 0x65, 0xc9, 0xf4, 0xf3, 0x48,
-0xda, 0x47, 0x14, 0xcd, 0x08, 0xe7, 0x53, 0xf5,
-0xca, 0x65, 0xad, 0xda, 0x44, 0x47, 0x03, 0xf1,
-0x80, 0xa7, 0xf1, 0x6e, 0xe7, 0xb8, 0x15, 0x11,
-0xfa, 0xae, 0xd9, 0x65, 0xe7, 0xff, 0x08, 0xdc,
-0xd9, 0xcf, 0x80, 0x2f, 0x8e, 0x46, 0xea, 0x43,
-0x78, 0xcc, 0x40, 0xa0, 0xbb, 0xd9, 0xfd, 0xdf,
-0x95, 0xfd, 0x86, 0xef, 0xac, 0xa3, 0x0e, 0xaa,
-0xf4, 0x03, 0xec, 0x6b, 0x66, 0x24, 0x9b, 0xff,
-0x5c, 0x4a, 0x46, 0x59, 0x47, 0x33, 0xfd, 0x81,
-0xe8, 0x45, 0xfc, 0xcc, 0xa3, 0x9e, 0xdf, 0x69,
-0x4f, 0xa5, 0x80, 0xc1, 0x4f, 0xad, 0x0c, 0x91,
-0x23, 0x9e, 0x95, 0xff, 0xa2, 0x24, 0x20, 0x7e,
-0xbf, 0x01, 0x36, 0xe4, 0xdc, 0xc3, 0x2b, 0x4c,
-0xae, 0xb1, 0x25, 0xa8, 0x7f, 0x7c, 0xe1, 0xf5,
-0x01, 0xf4, 0xf7, 0xc9, 0x51, 0x75, 0x64, 0xf3,
-0x9f, 0xef, 0xc6, 0xe7, 0x0f, 0x4a, 0xf9, 0xbd,
-0x72, 0xbf, 0x71, 0x51, 0x0f, 0x98, 0x1b, 0xbe,
-0x57, 0x36, 0xa6, 0x9c, 0x87, 0xef, 0x70, 0xe7,
-0x5e, 0x95, 0xf6, 0x43, 0x95, 0x59, 0xf5, 0x6c,
-0x56, 0xfe, 0x6b, 0x3c, 0x76, 0x99, 0x35, 0x82,
-0x6b, 0x37, 0xbe, 0xe6, 0x5b, 0xac, 0xd1, 0xfc,
-0xcc, 0x00, 0xc5, 0x7f, 0xd0, 0xe2, 0xb8, 0xde,
-0x79, 0xec, 0x2e, 0x34, 0x6d, 0x08, 0x84, 0x3e,
-0xca, 0x8a, 0xff, 0x4c, 0xc0, 0x90, 0x16, 0x30,
-0x9d, 0xe7, 0x8b, 0x26, 0x95, 0x63, 0x1d, 0x8d,
-0xaf, 0x39, 0xf3, 0xe4, 0x17, 0x8d, 0xcb, 0xd1,
-0xc0, 0x88, 0xf3, 0x2c, 0xe2, 0x81, 0x0f, 0xe6,
-0x2d, 0x28, 0x77, 0x9e, 0x2b, 0xb3, 0xc7, 0x7f,
-0x26, 0xf4, 0x0d, 0xb0, 0x30, 0x71, 0x27, 0x7e,
-0x80, 0x9e, 0x1d, 0xbc, 0x6a, 0x88, 0xf7, 0x2e,
-0xdb, 0x85, 0x8f, 0xed, 0x49, 0xe0, 0x8a, 0x35,
-0x18, 0xeb, 0x56, 0x54, 0xb4, 0x46, 0xfc, 0xf6,
-0xf8, 0x4f, 0x4e, 0x02, 0xf5, 0x89, 0x3e, 0xc0,
-0x7b, 0xd9, 0x06, 0xd1, 0x59, 0x5a, 0x6e, 0x96,
-0xc4, 0xd9, 0x86, 0xae, 0x3d, 0x7a, 0xcc, 0xe4,
-0x81, 0xa6, 0x0d, 0x31, 0xf4, 0x58, 0x4d, 0x47,
-0x20, 0x8b, 0xff, 0xec, 0xd5, 0xd6, 0x49, 0x73,
-0xfb, 0x7b, 0xe2, 0xcc, 0xa7, 0x3c, 0x23, 0x21,
-0x5a, 0xe8, 0x0b, 0x57, 0x69, 0x07, 0x34, 0x3d,
-0xc1, 0x76, 0x23, 0xe2, 0x7a, 0x4a, 0x54, 0xf4,
-0x33, 0xc2, 0x3f, 0xd3, 0xfb, 0xd3, 0x98, 0x39,
-0xda, 0x74, 0x38, 0x1a, 0x30, 0xe1, 0x46, 0xc4,
-0x3f, 0x47, 0x0a, 0x83, 0x66, 0x79, 0x9d, 0xfc,
-0xd3, 0x08, 0xa5, 0xa5, 0x7c, 0x07, 0xf1, 0x7b,
-0x79, 0x2f, 0x12, 0x58, 0x5e, 0x70, 0xf0, 0xe5,
-0x61, 0x5b, 0xfe, 0xeb, 0x07, 0x4a, 0x8a, 0x1f,
-0x55, 0x74, 0x0a, 0x2e, 0x8b, 0x06, 0x73, 0xd3,
-0x38, 0xf1, 0x7f, 0x78, 0x63, 0x12, 0x77, 0xc8,
-0x98, 0xf6, 0xcf, 0xf0, 0x5d, 0xa3, 0xf2, 0xa3,
-0xac, 0xfc, 0xd7, 0x2e, 0x39, 0xe1, 0x0e, 0xf4,
-0x2b, 0xf1, 0x66, 0x9f, 0x71, 0x44, 0xc2, 0x85,
-0x7a, 0x56, 0x5e, 0x29, 0x1f, 0x81, 0x5e, 0x4a,
-0x1b, 0x39, 0x21, 0x61, 0x04, 0x28, 0xff, 0x68,
-0xcf, 0x7f, 0x7d, 0xa6, 0x55, 0x9c, 0x28, 0xfb,
-0x95, 0xe3, 0xd9, 0x70, 0xb0, 0xa5, 0xdb, 0x59,
-0xf6, 0x8f, 0x05, 0x2f, 0xb0, 0xeb, 0xef, 0xec,
-0x36, 0xef, 0x39, 0xc5, 0xf7, 0xb1, 0x86, 0xba,
-0x75, 0xab, 0xf4, 0xdf, 0xdf, 0xb2, 0x2f, 0x8b,
-0xff, 0x63, 0x40, 0x18, 0x95, 0x4c, 0x45, 0x5d,
-0x6e, 0x01, 0xeb, 0x8c, 0xc5, 0x88, 0x08, 0xb4,
-0x04, 0x9e, 0x91, 0x74, 0x13, 0xbf, 0x17, 0x97,
-0xfe, 0x14, 0x94, 0x93, 0x63, 0xd5, 0x67, 0xe7,
-0x3f, 0xfb, 0x1f, 0x8c, 0x96, 0x8e, 0x44, 0x56,
-0xa3, 0x1a, 0x59, 0x1b, 0x45, 0xfc, 0x73, 0x9e,
-0xcd, 0xd6, 0x9f, 0x14, 0xa5, 0xc9, 0xc3, 0xf7,
-0xc1, 0x6c, 0xd1, 0x29, 0xae, 0x4f, 0x2e, 0xbe,
-0x2f, 0xab, 0xfe, 0xcb, 0x0b, 0x9d, 0x4a, 0xfd,
-0x28, 0xe2, 0x43, 0x27, 0xbc, 0x0c, 0xfe, 0x84,
-0xab, 0xbe, 0x68, 0xa5, 0xb2, 0x83, 0x7b, 0x92,
-0x55, 0x2f, 0x2e, 0x72, 0x42, 0x3f, 0xec, 0x35,
-0x0b, 0x6e, 0x92, 0x37, 0xdb, 0xf0, 0xcf, 0x7e,
-0xf8, 0x23, 0xcc, 0x1f, 0xa6, 0x6a, 0x38, 0x0b,
-0xed, 0x54, 0x8e, 0x4b, 0xb8, 0x91, 0xb4, 0xe0,
-0x20, 0x7d, 0x41, 0xe1, 0x8b, 0x70, 0x93, 0x99,
-0x7f, 0xb6, 0xb9, 0xdd, 0x86, 0x7f, 0x0e, 0xc1,
-0x99, 0x7b, 0x02, 0x83, 0x8e, 0xb8, 0x34, 0xa6,
-0x1c, 0x81, 0xfa, 0xc1, 0x82, 0x78, 0x91, 0x2f,
-0x95, 0x08, 0x8b, 0x17, 0x55, 0xfa, 0x0f, 0x31,
-0x5c, 0x9f, 0x68, 0xa1, 0x9d, 0xff, 0xbc, 0x15,
-0x8e, 0xa2, 0xdb, 0x78, 0x1b, 0xe2, 0x1f, 0xd8,
-0x04, 0x65, 0x26, 0x1f, 0x77, 0x34, 0x4c, 0xc3,
-0x9e, 0x1f, 0xa2, 0x30, 0xaf, 0xff, 0x8a, 0xf8,
-0xcf, 0x8b, 0xf0, 0xe3, 0x0e, 0x3d, 0x59, 0xb2,
-0xda, 0x7d, 0xb4, 0x75, 0xad, 0x98, 0x87, 0x6e,
-0x9a, 0x39, 0x7b, 0x1a, 0xf6, 0x7c, 0x11, 0xd6,
-0x88, 0x39, 0xa7, 0x23, 0xab, 0x6f, 0xb5, 0xf3,
-0x9f, 0x0f, 0x49, 0x61, 0x43, 0x37, 0xa5, 0x12,
-0x36, 0x44, 0xf9, 0x77, 0x33, 0x52, 0xe7, 0x51,
-0x6b, 0x3a, 0x84, 0x6f, 0x79, 0x77, 0x5d, 0x78,
-0x48, 0x79, 0xb8, 0x15, 0xbf, 0xaf, 0x9a, 0x07,
-0xec, 0xfc, 0xe7, 0xe7, 0xe1, 0x43, 0x11, 0x10,
-0xfc, 0x69, 0x39, 0x01, 0x87, 0x3b, 0xea, 0x45,
-0xd5, 0x88, 0x5c, 0x0f, 0x4f, 0xc7, 0x50, 0x9f,
-0x8c, 0xec, 0x59, 0xc1, 0x8e, 0x52, 0xfc, 0x67,
-0x24, 0x8b, 0xff, 0x9c, 0x34, 0x47, 0x4b, 0x5e,
-0xb4, 0xd2, 0x5e, 0x6c, 0x42, 0xb3, 0xb2, 0x5d,
-0xb1, 0xa6, 0x29, 0xc3, 0x44, 0x19, 0xa2, 0x7a,
-0xcd, 0xd5, 0xf1, 0x27, 0xfc, 0x9f, 0x74, 0xb6,
-0x0b, 0x61, 0x4f, 0xb4, 0x73, 0x39, 0x3c, 0x25,
-0x5d, 0x65, 0x6c, 0xf8, 0x81, 0xdb, 0xca, 0xef,
-0xdc, 0xe3, 0xbc, 0x32, 0xff, 0xf5, 0x14, 0x6c,
-0xa7, 0x6c, 0x57, 0xb9, 0xde, 0x01, 0x9e, 0x3b,
-0xbd, 0xd1, 0xab, 0xcb, 0xd9, 0x53, 0x39, 0x55,
-0xc6, 0x4f, 0xb6, 0xa2, 0x40, 0xf9, 0x2f, 0xef,
-0x56, 0xd5, 0x96, 0xff, 0xca, 0x51, 0x44, 0x87,
-0xa4, 0xb7, 0xb7, 0x16, 0x33, 0x3a, 0xab, 0x1b,
-0xad, 0x94, 0xff, 0x7a, 0x14, 0xca, 0x29, 0xff,
-0xb5, 0x53, 0xea, 0x80, 0xd8, 0x20, 0x77, 0x67,
-0xe7, 0xbf, 0x62, 0x1d, 0x5e, 0xbd, 0x8d, 0xb2,
-0x63, 0xb1, 0x75, 0x92, 0xde, 0x06, 0xda, 0x55,
-0x29, 0xd8, 0xc3, 0xdd, 0x0f, 0x74, 0x6d, 0xc3,
-0x53, 0x28, 0x64, 0xe7, 0xbf, 0x88, 0xe4, 0xcc,
-0x97, 0xa0, 0xd9, 0x15, 0x11, 0x29, 0x40, 0x6c,
-0x1f, 0x9d, 0x4f, 0xc0, 0x5c, 0x88, 0x30, 0x59,
-0x74, 0x99, 0x7a, 0x5c, 0x38, 0x29, 0xff, 0x95,
-0xe6, 0x3f, 0x5f, 0x7b, 0x6e, 0xfb, 0x65, 0x6f,
-0x90, 0xf0, 0xcf, 0x48, 0xec, 0x13, 0xef, 0x73,
-0x24, 0xec, 0x8d, 0xbd, 0x60, 0x21, 0xa2, 0x8e,
-0xe5, 0x78, 0xc4, 0x82, 0x46, 0x3f, 0x9e, 0x11,
-0x4a, 0x3f, 0xff, 0x88, 0x49, 0xeb, 0xf3, 0xe0,
-0x43, 0xf2, 0x88, 0x38, 0x04, 0x9e, 0x25, 0xae,
-0xa8, 0x8a, 0x0b, 0xa5, 0x11, 0xed, 0x39, 0x5c,
-0x6e, 0x5a, 0x19, 0xc3, 0x87, 0xb2, 0xf2, 0x5f,
-0xa3, 0xfd, 0x91, 0x56, 0x0f, 0xb3, 0xf0, 0x4f,
-0x44, 0xf7, 0x38, 0x55, 0x08, 0xeb, 0xc4, 0x88,
-0x76, 0xf0, 0xed, 0x4d, 0xba, 0xd9, 0xd3, 0x5a,
-0xc1, 0x1c, 0xa7, 0x59, 0x56, 0xfe, 0x2b, 0xbc,
-0xc6, 0x5f, 0xda, 0xd2, 0xd6, 0xce, 0x4e, 0x98,
-0x6b, 0xe6, 0x95, 0xb6, 0xaa, 0xc7, 0x1d, 0xc5,
-0x3c, 0x07, 0x4a, 0x5b, 0xf9, 0xb2, 0x81, 0x62,
-0xb1, 0x06, 0x4d, 0x1b, 0x6f, 0x67, 0xcc, 0x8e,
-0x7f, 0xd8, 0x1a, 0xd8, 0xb6, 0x88, 0x1f, 0x67,
-0xe7, 0x50, 0x68, 0x36, 0xd4, 0x53, 0xac, 0x58,
-0x5f, 0x03, 0x3b, 0x0c, 0xc7, 0x2f, 0x58, 0x0d,
-0xfc, 0x44, 0xfa, 0x4c, 0x93, 0xe3, 0xb8, 0x3d,
-0xff, 0x35, 0x73, 0x04, 0xd6, 0x99, 0x01, 0x02,
-0x39, 0xf8, 0x43, 0x8b, 0xed, 0x8b, 0xae, 0xd3,
-0xe4, 0x72, 0x76, 0xc8, 0x7d, 0x6f, 0xc8, 0xf7,
-0xb8, 0x5a, 0xae, 0x1d, 0x0a, 0xf5, 0x86, 0x9c,
-0x51, 0xd5, 0x9b, 0xd6, 0x3f, 0x3d, 0xd2, 0x8f,
-0x5b, 0xce, 0x97, 0x5b, 0x20, 0x67, 0x90, 0x9f,
-0x8f, 0xa5, 0x88, 0x40, 0x70, 0x5e, 0xcc, 0x6e,
-0xff, 0x61, 0xb4, 0x79, 0x04, 0x15, 0x7b, 0xb0,
-0xd5, 0xb5, 0xd5, 0x9e, 0xff, 0xd2, 0xe2, 0x70,
-0xca, 0x58, 0x48, 0xa4, 0x7a, 0xfa, 0x62, 0x1a,
-0xd1, 0x3e, 0xc8, 0x0b, 0x60, 0x92, 0x34, 0xbc,
-0x29, 0x8f, 0x6b, 0x43, 0xe8, 0xbf, 0x2b, 0x83,
-0xb2, 0x2d, 0xff, 0x95, 0xc3, 0x5b, 0x9e, 0x86,
-0xe7, 0x63, 0x6a, 0x8c, 0x55, 0x68, 0xeb, 0xa9,
-0x50, 0xae, 0x87, 0x79, 0x3b, 0x9e, 0xd7, 0xab,
-0xfa, 0xf0, 0xc8, 0x28, 0xac, 0x07, 0xbf, 0xc8,
-0x4f, 0xca, 0xb6, 0xfc, 0x17, 0x7a, 0xe6, 0x51,
-0xd0, 0xcb, 0x55, 0x60, 0x06, 0xc4, 0xc1, 0x87,
-0x0b, 0xf6, 0x80, 0x1c, 0x8d, 0x27, 0xab, 0xb8,
-0x8a, 0x2b, 0x9c, 0x17, 0x41, 0x4c, 0x89, 0x4b,
-0xdd, 0x96, 0xc9, 0x7f, 0x49, 0xb3, 0x50, 0x9f,
-0xcc, 0x33, 0xbb, 0x57, 0x7b, 0x96, 0xe8, 0x6b,
-0xad, 0xb4, 0xd7, 0x55, 0xb3, 0x94, 0x7d, 0x8a,
-0xf5, 0xfd, 0x9e, 0x72, 0xaf, 0x85, 0x52, 0x33,
-0x2f, 0x3b, 0xff, 0x55, 0x0f, 0x27, 0xc4, 0x82,
-0x10, 0xc2, 0x92, 0x2f, 0x28, 0xe7, 0xc2, 0x8d,
-0x21, 0x67, 0x2b, 0x73, 0xc3, 0xde, 0x70, 0xa5,
-0xee, 0x5a, 0x81, 0xb0, 0xdf, 0xa4, 0xd0, 0x90,
-0x57, 0xfd, 0xdb, 0x4c, 0xfc, 0xe7, 0xda, 0x9d,
-0x68, 0xd4, 0xea, 0x85, 0x2b, 0x26, 0xf7, 0x58,
-0x6e, 0xd4, 0x14, 0xff, 0xb9, 0xca, 0x5c, 0x4c,
-0x86, 0xfe, 0xa2, 0x52, 0x07, 0x14, 0x2f, 0xb5,
-0xe5, 0xbf, 0xde, 0x5d, 0x34, 0xa8, 0xd5, 0xc6,
-0x36, 0x26, 0x9a, 0xef, 0x53, 0xc6, 0x44, 0x11,
-0x39, 0xf2, 0xc1, 0x9c, 0xcb, 0xd1, 0xea, 0xdf,
-0x38, 0x13, 0xf2, 0xdb, 0xc6, 0x50, 0xb4, 0x5a,
-0x77, 0x25, 0xb2, 0xf2, 0x5f, 0x3f, 0xe8, 0x58,
-0x1b, 0x2a, 0x5d, 0xb9, 0x78, 0xdc, 0x51, 0x8c,
-0xfa, 0x67, 0x9b, 0xc9, 0x07, 0x98, 0x56, 0x7e,
-0x4e, 0x93, 0xc0, 0x51, 0xef, 0xb9, 0x14, 0x5e,
-0x1b, 0xd9, 0x66, 0xaa, 0xbd, 0xec, 0x69, 0x5b,
-0xfe, 0x6b, 0x83, 0xd8, 0x40, 0x61, 0xa2, 0xf6,
-0xf0, 0x2c, 0xd8, 0x69, 0x45, 0x7b, 0xb6, 0xcf,
-0x82, 0x97, 0x0a, 0xcb, 0x06, 0x22, 0xf7, 0x78,
-0x86, 0xcd, 0x2d, 0x94, 0x0a, 0x5c, 0x31, 0x60,
-0xcf, 0x7f, 0x99, 0xac, 0x13, 0x17, 0x4d, 0xf5,
-0xe6, 0x02, 0x74, 0x8a, 0x72, 0x31, 0x2f, 0x97,
-0x49, 0x5d, 0x7d, 0x9a, 0xae, 0x3b, 0x66, 0xe7,
-0x0e, 0xc1, 0xc3, 0x11, 0xdd, 0xbd, 0x58, 0x63,
-0x91, 0x0c, 0xfe, 0x29, 0x8c, 0x19, 0xdd, 0xd0,
-0x0b, 0x6a, 0x0f, 0xc2, 0xda, 0xf7, 0x63, 0xb5,
-0xe2, 0xda, 0x88, 0x5c, 0x0a, 0x7d, 0xe2, 0x23,
-0xdd, 0xf9, 0x23, 0x36, 0xa6, 0xfc, 0x9a, 0x3c,
-0x8e, 0xc8, 0x0c, 0x7b, 0xfe, 0x6b, 0x0c, 0xc6,
-0xa1, 0x8e, 0xa2, 0x61, 0xbb, 0x60, 0x62, 0x51,
-0xbd, 0x51, 0x90, 0x22, 0x1e, 0x7c, 0x87, 0xd2,
-0x40, 0xa7, 0x61, 0xb4, 0x89, 0x14, 0xef, 0x0c,
-0x7b, 0xfc, 0xe7, 0x24, 0xf1, 0x9f, 0x8d, 0xfc,
-0x0b, 0xe8, 0x7d, 0x1c, 0xd3, 0xe6, 0x27, 0x69,
-0xdb, 0x28, 0xa7, 0x70, 0xdb, 0x6c, 0x22, 0x06,
-0xec, 0x31, 0x51, 0x6d, 0xba, 0x42, 0xdd, 0xb6,
-0xfc, 0x97, 0xb2, 0x5c, 0xeb, 0x31, 0x9e, 0x16,
-0x05, 0x54, 0xbf, 0x73, 0x52, 0xaf, 0x02, 0x35,
-0x8e, 0x8a, 0x14, 0x3d, 0x7a, 0x53, 0xed, 0x62,
-0x65, 0x1e, 0x61, 0x6c, 0x87, 0x6b, 0xa2, 0xcc,
-0x96, 0xff, 0x92, 0xca, 0xe1, 0x31, 0xf7, 0x57,
-0x44, 0x24, 0xe6, 0xee, 0x61, 0xa9, 0x30, 0x05,
-0x3a, 0x9e, 0xd6, 0xf5, 0x5b, 0x1c, 0x1b, 0x3a,
-0xba, 0x4b, 0xe6, 0x82, 0x43, 0x64, 0xe5, 0xbf,
-0xb8, 0x10, 0xb0, 0xb2, 0x85, 0x68, 0x87, 0x2c,
-0x4a, 0xb4, 0x1f, 0x60, 0x49, 0x46, 0x85, 0x2a,
-0xb2, 0x87, 0x81, 0x88, 0x58, 0xc4, 0x33, 0x96,
-0x95, 0xff, 0x12, 0xbf, 0x86, 0xe7, 0x12, 0xd7,
-0xc6, 0x8b, 0x36, 0xb0, 0x23, 0xd0, 0x60, 0x22,
-0xb0, 0x21, 0x60, 0xfc, 0xdc, 0xa0, 0x6b, 0xdf,
-0x0c, 0x9f, 0x78, 0x59, 0xaf, 0xbd, 0x32, 0xff,
-0x75, 0x96, 0x4f, 0xc2, 0x01, 0x67, 0x01, 0xbe,
-0x26, 0xb3, 0x12, 0x61, 0x03, 0xd2, 0xb8, 0x74,
-0x0e, 0x6e, 0xe6, 0xae, 0x4e, 0xf9, 0xac, 0x73,
-0xc2, 0xb8, 0x09, 0x36, 0x1d, 0xcf, 0xc2, 0x3f,
-0x49, 0x38, 0x07, 0x01, 0xa5, 0xa0, 0x4b, 0x1e,
-0x5f, 0x3f, 0xe4, 0xaf, 0x46, 0xff, 0x6e, 0x59,
-0x5c, 0x4c, 0xf2, 0x6f, 0xab, 0x94, 0x71, 0xee,
-0x9a, 0xd4, 0xf7, 0x70, 0xd7, 0xf1, 0xac, 0xfc,
-0xd7, 0xcf, 0x8c, 0x03, 0xc3, 0x1e, 0xb2, 0xe6,
-0x43, 0xa1, 0x67, 0xbe, 0xc1, 0x4e, 0xaa, 0x2f,
-0xb0, 0xf9, 0xc6, 0x81, 0xfe, 0xaa, 0x71, 0x7e,
-0x03, 0xf3, 0xb5, 0x1c, 0x28, 0xf1, 0x9c, 0x53,
-0x7f, 0x92, 0x95, 0xff, 0x1a, 0x52, 0xf6, 0x48,
-0x31, 0xb3, 0xcd, 0xef, 0x1e, 0xea, 0x12, 0xba,
-0x70, 0xe3, 0xfb, 0x3a, 0x95, 0x28, 0xe5, 0x23,
-0x58, 0xee, 0xe0, 0xce, 0x98, 0x47, 0x07, 0xcb,
-0xdf, 0xcc, 0xe0, 0x1f, 0xf4, 0xe6, 0xc0, 0xfa,
-0xe8, 0x92, 0x08, 0x44, 0x89, 0x6d, 0xee, 0xd0,
-0xf9, 0x01, 0x9d, 0xea, 0xbf, 0x2a, 0xbc, 0xe8,
-0x91, 0xe1, 0xc2, 0xc6, 0x98, 0x1d, 0xff, 0x50,
-0xf6, 0x33, 0x00, 0x0f, 0xa2, 0x3d, 0x52, 0x8e,
-0x28, 0x16, 0xdb, 0x44, 0x87, 0xf3, 0xd2, 0x7d,
-0x88, 0x61, 0xf1, 0x0b, 0x7a, 0x07, 0xac, 0xd4,
-0x95, 0x1d, 0xff, 0x1c, 0x54, 0xfe, 0x88, 0x66,
-0x5d, 0x45, 0x6b, 0xae, 0xdd, 0x21, 0x35, 0xc2,
-0x5f, 0x9b, 0xcd, 0x63, 0x70, 0x89, 0xdd, 0x6c,
-0xe2, 0xc6, 0x38, 0xa7, 0xa4, 0x52, 0x87, 0xd9,
-0xf8, 0x07, 0x8e, 0xe8, 0x56, 0xb6, 0x6b, 0x97,
-0x7e, 0x04, 0x82, 0x03, 0x4e, 0x3f, 0xae, 0xff,
-0x21, 0x78, 0xae, 0x9f, 0x22, 0x1e, 0xda, 0x45,
-0xdd, 0xc2, 0xdb, 0xe3, 0x36, 0xfc, 0x83, 0x4e,
-0xa8, 0xe9, 0xa1, 0xe7, 0xef, 0x17, 0x11, 0xe6,
-0xa9, 0xe3, 0x11, 0x96, 0xd4, 0xd7, 0x47, 0xe8,
-0x08, 0xbe, 0x56, 0x5f, 0x08, 0x77, 0x94, 0xc8,
-0x8a, 0xff, 0x18, 0x56, 0x99, 0x52, 0x09, 0x75,
-0x26, 0x10, 0xe8, 0x61, 0x96, 0x70, 0x36, 0x00,
-0x61, 0xa1, 0xd3, 0x65, 0xa8, 0x91, 0x0c, 0x9f,
-0x8e, 0xeb, 0x33, 0x61, 0xc3, 0x3f, 0x05, 0xe2,
-0x91, 0x48, 0xa9, 0xc9, 0xef, 0x63, 0x6f, 0xb2,
-0xb5, 0x94, 0xf6, 0x5a, 0xcd, 0xde, 0x34, 0xd6,
-0xa0, 0xb0, 0xf8, 0x3e, 0xf7, 0x8f, 0x94, 0x7d,
-0xd1, 0xca, 0xb7, 0xd5, 0x15, 0x59, 0xf8, 0xa7,
-0x80, 0xd2, 0x52, 0x63, 0xce, 0x7a, 0x79, 0x43,
-0x34, 0xb1, 0xad, 0x06, 0x9c, 0xbc, 0x73, 0x08,
-0xff, 0x0b, 0x35, 0x89, 0xf9, 0x6a, 0x73, 0x8b,
-0x36, 0x1e, 0x6b, 0x80, 0x02, 0x2d, 0x2b, 0xfe,
-0x13, 0x63, 0x63, 0xd2, 0x6c, 0x27, 0x2e, 0x42,
-0x12, 0x2e, 0x17, 0x2e, 0x1c, 0x9c, 0x8f, 0x6f,
-0x07, 0xbf, 0x27, 0x1a, 0xf3, 0x59, 0xb9, 0xce,
-0xb0, 0xe2, 0x3f, 0xa3, 0xd9, 0xf1, 0x1f, 0x5c,
-0xff, 0x5a, 0x20, 0x6f, 0xd4, 0x62, 0x43, 0xf9,
-0xfc, 0x45, 0xdb, 0x29, 0xec, 0x46, 0xeb, 0x7f,
-0x86, 0x11, 0x50, 0x2c, 0xc8, 0xca, 0x7f, 0x15,
-0x3e, 0x4e, 0xf1, 0x1f, 0x0a, 0x6a, 0xcd, 0x82,
-0x83, 0xac, 0x14, 0xb8, 0xe1, 0x76, 0x42, 0x17,
-0xf8, 0xfa, 0xb9, 0xc1, 0x4e, 0xa0, 0x50, 0x4a,
-0x89, 0x78, 0x3b, 0xfe, 0xb1, 0xe2, 0x3f, 0xf4,
-0x9a, 0xb3, 0x53, 0x69, 0xbe, 0xd5, 0xe1, 0x14,
-0xfe, 0xc1, 0x23, 0x47, 0xa1, 0xf3, 0x5f, 0xaa,
-0xff, 0x8a, 0xa3, 0x7f, 0xd1, 0x0a, 0x0c, 0x77,
-0x4c, 0x12, 0xd7, 0x9f, 0xf8, 0x0c, 0x82, 0xfb,
-0x20, 0x52, 0xe0, 0x19, 0x00, 0xd2, 0xe7, 0x7f,
-0x52, 0xff, 0x75, 0x01, 0x6a, 0x3b, 0x9c, 0x94,
-0xff, 0xba, 0x90, 0x0c, 0x44, 0x96, 0xec, 0x9a,
-0xd1, 0x43, 0xfd, 0x13, 0x84, 0xf3, 0xa7, 0xf2,
-0x99, 0xc8, 0x61, 0x33, 0x10, 0x77, 0x9d, 0xc9,
-0xc2, 0x3f, 0xe3, 0x56, 0xd9, 0x97, 0xcb, 0x90,
-0x77, 0x03, 0x95, 0x7d, 0xcd, 0xc7, 0xad, 0x04,
-0x53, 0xdb, 0x66, 0x9c, 0x88, 0x19, 0xb0, 0xd4,
-0xbc, 0x02, 0xff, 0x9c, 0x97, 0x82, 0xc6, 0x92,
-0x68, 0x11, 0xb1, 0x91, 0x03, 0xa1, 0x25, 0x57,
-0x77, 0x96, 0xa3, 0xbd, 0x6b, 0x30, 0x96, 0x6b,
-0x65, 0xe5, 0xfc, 0x7c, 0x22, 0xd0, 0x94, 0x7f,
-0x45, 0xfd, 0x17, 0xec, 0x87, 0x02, 0x83, 0x23,
-0xfe, 0xa1, 0x44, 0xcc, 0x8a, 0xfc, 0xad, 0x54,
-0x76, 0x2d, 0xaa, 0x8c, 0x88, 0x55, 0x91, 0x2d,
-0x62, 0x08, 0x8d, 0x98, 0x9e, 0x15, 0xff, 0x79,
-0x41, 0x92, 0x8d, 0xbc, 0x61, 0x56, 0xa3, 0xbf,
-0x00, 0x3b, 0x5a, 0x49, 0x30, 0x5e, 0xd0, 0xe7,
-0x1b, 0x8e, 0x61, 0x47, 0x0d, 0xbc, 0x00, 0x65,
-0xad, 0xc4, 0x57, 0xb1, 0xe9, 0x9f, 0xe2, 0xd8,
-0xb3, 0xde, 0xca, 0xb6, 0x79, 0xcb, 0xde, 0x25,
-0xc1, 0xaa, 0xf6, 0x4a, 0x1d, 0x71, 0xa0, 0x10,
-0x7f, 0xd6, 0x2b, 0xb7, 0xf1, 0x65, 0x57, 0xe0,
-0x9f, 0xe7, 0xf5, 0x3a, 0x9e, 0x4f, 0xd5, 0x5e,
-0x13, 0x08, 0x84, 0x48, 0x88, 0x50, 0xfe, 0xeb,
-0xf6, 0x70, 0x91, 0x2e, 0x2e, 0xe0, 0x11, 0xe7,
-0x80, 0x6a, 0xe7, 0xff, 0x58, 0x6c, 0x8d, 0xc3,
-0x05, 0xbd, 0x88, 0x7f, 0xce, 0x57, 0x50, 0x21,
-0x98, 0x9a, 0x5a, 0x81, 0xdb, 0x36, 0x3f, 0x8c,
-0x47, 0xbc, 0x41, 0x82, 0x0a, 0xb6, 0xf8, 0xcf,
-0x2d, 0x23, 0xfc, 0x9f, 0x53, 0x24, 0x9f, 0x9a,
-0x58, 0x87, 0xbf, 0x9a, 0xd8, 0xce, 0x35, 0xf0,
-0x9a, 0x5e, 0xd4, 0xe6, 0x7c, 0x58, 0x5e, 0x6e,
-0x31, 0x36, 0x79, 0x36, 0xff, 0xe7, 0x34, 0x6c,
-0x95, 0x3c, 0x39, 0xf9, 0x94, 0xff, 0xea, 0xa9,
-0xf1, 0x94, 0xe0, 0x87, 0xe6, 0x35, 0x10, 0xff,
-0x80, 0xb7, 0xb3, 0xa9, 0xd4, 0x1f, 0xe1, 0x56,
-0x69, 0x98, 0x1d, 0xff, 0x0c, 0xde, 0xda, 0x31,
-0x73, 0xbb, 0x95, 0xff, 0x8a, 0x6d, 0xd3, 0x63,
-0x2d, 0x75, 0x85, 0x15, 0x8a, 0x95, 0xf6, 0x42,
-0x58, 0xd8, 0x62, 0x76, 0xa0, 0xf9, 0xf1, 0x16,
-0x66, 0xe3, 0x1f, 0x8a, 0xf6, 0x1b, 0x79, 0x51,
-0xc7, 0x1c, 0xb1, 0xcd, 0x62, 0x8f, 0x7b, 0xca,
-0x8d, 0x75, 0x08, 0x44, 0x79, 0x94, 0xcd, 0x61,
-0xeb, 0x52, 0x7c, 0x72, 0x1b, 0xfe, 0x29, 0xfc,
-0x2d, 0xbc, 0x6e, 0x06, 0x56, 0x39, 0x1f, 0xff,
-0xd4, 0xf5, 0xf0, 0x5e, 0x0a, 0xe8, 0x5e, 0x4f,
-0xb0, 0x96, 0x12, 0x61, 0x5f, 0x9e, 0x86, 0xbe,
-0x76, 0xfc, 0xf3, 0x04, 0x9c, 0x37, 0x82, 0xed,
-0x4b, 0xb7, 0x34, 0x8f, 0x4c, 0x47, 0x7b, 0x5e,
-0x65, 0xd3, 0x89, 0xb0, 0x54, 0x45, 0xbc, 0x66,
-0xaf, 0xff, 0xd2, 0x04, 0x0c, 0xeb, 0x01, 0xb4,
-0xc2, 0x5f, 0xa2, 0x66, 0x22, 0x68, 0x0d, 0x81,
-0x02, 0x8f, 0x28, 0x2c, 0x15, 0xcd, 0x12, 0x9e,
-0xf2, 0x53, 0x21, 0xbc, 0x3d, 0xfe, 0xe3, 0x85,
-0xa3, 0x09, 0x8f, 0xf0, 0xc6, 0xe4, 0x1b, 0xa1,
-0x80, 0xed, 0x10, 0x6a, 0x0f, 0x1a, 0xb2, 0xe7,
-0x41, 0xa7, 0xb2, 0x77, 0xca, 0xf0, 0x7a, 0x62,
-0x3c, 0xab, 0xfe, 0x3d, 0x67, 0x09, 0xfa, 0x5f,
-0xdb, 0x4d, 0x1e, 0x6f, 0xbb, 0xcd, 0xd3, 0x09,
-0x9e, 0x21, 0xb5, 0x84, 0xbd, 0x0a, 0xbb, 0xd1,
-0x71, 0x40, 0xc5, 0xeb, 0x64, 0x9d, 0xa9, 0xfe,
-0x1b, 0x87, 0x6d, 0xf8, 0xc7, 0x89, 0x68, 0xb9,
-0x74, 0x10, 0x0f, 0x16, 0x53, 0xfe, 0x1a, 0x61,
-0x4f, 0xf8, 0x94, 0xbe, 0xcf, 0x28, 0xa5, 0xc4,
-0xd9, 0x2c, 0xd1, 0x09, 0xa5, 0x03, 0x7c, 0x15,
-0xfe, 0x17, 0xa7, 0xef, 0xdf, 0xc3, 0x67, 0x53,
-0xb5, 0xd7, 0x19, 0xe7, 0x7d, 0xf2, 0xed, 0xce,
-0x9f, 0x87, 0x2d, 0xfe, 0xf3, 0x9b, 0xf0, 0xb1,
-0xd8, 0x4d, 0x61, 0x9f, 0x02, 0xf1, 0x6a, 0xaa,
-0xfe, 0xeb, 0x4c, 0x06, 0xff, 0x7c, 0x7a, 0x17,
-0x7b, 0x0f, 0x66, 0x27, 0xd0, 0xcc, 0x8d, 0x4c,
-0xd1, 0x9e, 0x09, 0xf6, 0xb0, 0x60, 0xbf, 0x6b,
-0x37, 0x2a, 0xea, 0x54, 0x6a, 0x2c, 0x0b, 0xff,
-0x4c, 0x9a, 0x97, 0x45, 0x35, 0x05, 0x79, 0x82,
-0x70, 0x2c, 0xb1, 0x70, 0xa7, 0x93, 0x88, 0xd0,
-0x68, 0xd6, 0x7f, 0xe3, 0x3a, 0x28, 0x07, 0xf5,
-0x63, 0xa2, 0x28, 0xe9, 0xda, 0x6f, 0xaf, 0x7f,
-0x2f, 0xfc, 0x51, 0xff, 0x6f, 0x5b, 0x4b, 0xdf,
-0xf3, 0x8e, 0x87, 0x8b, 0x61, 0x87, 0x62, 0xd5,
-0x9f, 0x9e, 0xf2, 0xac, 0x2d, 0x29, 0x35, 0x8b,
-0xea, 0xd7, 0x37, 0x28, 0xdb, 0xf9, 0x0d, 0xa6,
-0xfa, 0x2d, 0x5b, 0xfd, 0x17, 0xc0, 0xe3, 0xb0,
-0x43, 0x2b, 0x4d, 0x20, 0xa8, 0x9b, 0xa5, 0x3f,
-0x02, 0xe5, 0x74, 0xfd, 0x90, 0x41, 0x2f, 0x2e,
-0xdf, 0xcb, 0xee, 0xc2, 0xa5, 0xc3, 0x15, 0xb8,
-0x37, 0x2b, 0xfe, 0x73, 0xd4, 0xd8, 0x21, 0x62,
-0xe3, 0x79, 0xf5, 0xb9, 0x33, 0x60, 0x8f, 0xa1,
-0x47, 0xbd, 0x37, 0xb2, 0x21, 0xd1, 0xd9, 0xa2,
-0x1f, 0x52, 0x1b, 0xd8, 0x6d, 0xd0, 0xd3, 0x65,
-0x75, 0xe4, 0xb0, 0xc7, 0x7f, 0x76, 0xc1, 0x3b,
-0xa2, 0xfa, 0xed, 0xca, 0x49, 0xdc, 0x36, 0x6f,
-0xb5, 0xd7, 0x8e, 0x6e, 0x88, 0xcb, 0xc7, 0xe0,
-0x88, 0xe8, 0x1d, 0x77, 0x4d, 0xc8, 0xdf, 0x8d,
-0x1c, 0x11, 0x7e, 0x6a, 0xb4, 0x72, 0x26, 0x5d,
-0x0f, 0x8b, 0xf8, 0x47, 0x7f, 0xbf, 0xb5, 0x61,
-0xa0, 0x20, 0xde, 0x9c, 0x14, 0xef, 0x68, 0xc1,
-0x88, 0x2b, 0xbe, 0x76, 0x0c, 0x3e, 0xce, 0x0b,
-0x0e, 0xba, 0xfc, 0x9d, 0xbb, 0xc4, 0x45, 0xfe,
-0x9d, 0xb7, 0x51, 0xb0, 0xe3, 0x9f, 0x53, 0xf0,
-0x56, 0xb8, 0xd6, 0x74, 0xae, 0xc2, 0xcf, 0x0a,
-0x81, 0x90, 0xb9, 0xe4, 0x7e, 0x39, 0x98, 0x77,
-0xc4, 0xb4, 0xca, 0xbe, 0x66, 0xc1, 0x51, 0x7d,
-0x61, 0x72, 0xc9, 0x78, 0x99, 0x1d, 0xff, 0xac,
-0xd4, 0xba, 0x4d, 0x8f, 0xd9, 0x1a, 0x47, 0xa5,
-0xd1, 0x8d, 0xfe, 0x94, 0x37, 0x4e, 0xf5, 0x5f,
-0x60, 0x95, 0xbd, 0xfb, 0x60, 0xbd, 0x5e, 0xdb,
-0x9f, 0x1f, 0x67, 0x59, 0xfc, 0x1f, 0xe8, 0xd6,
-0xe7, 0x52, 0x52, 0x63, 0xae, 0x8e, 0x97, 0x45,
-0x89, 0xff, 0x63, 0x3c, 0x66, 0x5d, 0xef, 0xf0,
-0xc1, 0x63, 0x54, 0x08, 0x16, 0xb7, 0xe3, 0x1f,
-0xc8, 0xc7, 0x4d, 0xa5, 0x9f, 0xac, 0x5b, 0x80,
-0xda, 0xac, 0x53, 0xd3, 0x85, 0xc3, 0xef, 0xa0,
-0x8a, 0xf8, 0x58, 0xbf, 0x1a, 0x70, 0x38, 0x95,
-0x87, 0xb5, 0x72, 0x33, 0xcf, 0x7f, 0xb5, 0x0d,
-0xff, 0x38, 0xbf, 0x0a, 0x47, 0x60, 0xe1, 0x2f,
-0x9d, 0x7b, 0xcb, 0x14, 0xf6, 0x73, 0xa3, 0x57,
-0x38, 0x9f, 0x65, 0x3e, 0xfe, 0x18, 0xd1, 0x4a,
-0xbf, 0x29, 0x5b, 0x15, 0xf1, 0x64, 0x9a, 0xed,
-0xf8, 0x67, 0x6c, 0xd1, 0xef, 0x60, 0x36, 0xbe,
-0x5d, 0xf5, 0x39, 0xb8, 0xcc, 0x1a, 0x85, 0x15,
-0xf8, 0xb2, 0x68, 0xab, 0x1f, 0x77, 0x4e, 0x82,
-0x15, 0xfa, 0x38, 0x97, 0x85, 0x7f, 0x06, 0x61,
-0xa8, 0x2b, 0x00, 0xf3, 0xef, 0x94, 0x27, 0x43,
-0x68, 0xdd, 0xa0, 0xa0, 0x4f, 0xbe, 0x16, 0x7e,
-0x47, 0x8c, 0xa9, 0x8f, 0xe4, 0x11, 0xf6, 0x0a,
-0x54, 0xeb, 0xbe, 0x89, 0x2c, 0xfc, 0xf3, 0xa1,
-0x32, 0xcc, 0x3c, 0x12, 0xdf, 0xea, 0xa9, 0x14,
-0x2f, 0x41, 0x15, 0x15, 0x6a, 0x35, 0x88, 0x67,
-0xf4, 0xb2, 0x90, 0xfa, 0x09, 0xfb, 0x03, 0x5b,
-0x67, 0x56, 0x24, 0x79, 0x6f, 0xd8, 0x1e, 0xff,
-0x19, 0xb4, 0x5a, 0x0e, 0xa9, 0x51, 0xb6, 0x24,
-0x15, 0xdd, 0x8a, 0x33, 0xa7, 0xe8, 0xe4, 0xba,
-0x81, 0xdf, 0xcb, 0x20, 0x8b, 0x19, 0x1e, 0x51,
-0x12, 0xb8, 0xa2, 0xfe, 0xfd, 0x07, 0x06, 0xa2,
-0x85, 0x68, 0x2a, 0xbf, 0x36, 0xc0, 0xfb, 0x88,
-0x56, 0x2d, 0xb6, 0x1b, 0x8b, 0xe3, 0x30, 0xa6,
-0xf5, 0x88, 0x8a, 0x64, 0x24, 0x9e, 0x85, 0x7f,
-0x46, 0xee, 0x4c, 0xb4, 0xfb, 0x6b, 0x5c, 0x85,
-0xea, 0x4a, 0x85, 0x1a, 0x23, 0x14, 0x10, 0x3f,
-0xf9, 0x7d, 0xf4, 0xc8, 0x36, 0xc5, 0xe5, 0x11,
-0xe3, 0x3d, 0xd3, 0xdf, 0xe3, 0xcc, 0xc6, 0x3f,
-0x3f, 0x42, 0x7c, 0x18, 0x84, 0xa5, 0x27, 0xe5,
-0x95, 0x30, 0xc5, 0x76, 0x9e, 0xa4, 0xb2, 0xf7,
-0xdf, 0xb8, 0xc6, 0x3b, 0xcf, 0xc1, 0x3f, 0xa7,
-0xf2, 0x3b, 0x59, 0xfc, 0x67, 0x91, 0x08, 0x05,
-0x34, 0xdf, 0x66, 0xd9, 0xc7, 0x8f, 0x40, 0xcd,
-0x70, 0x3e, 0x7e, 0x8f, 0xf2, 0x11, 0xaa, 0xe7,
-0x25, 0x86, 0xde, 0x2f, 0x8c, 0xc0, 0x16, 0x67,
-0x5c, 0xb5, 0xc7, 0x7f, 0xe6, 0x87, 0x23, 0xfd,
-0x4f, 0x07, 0xbc, 0x5b, 0x58, 0x83, 0x7b, 0x13,
-0xae, 0x8f, 0x77, 0x1f, 0x9b, 0x0c, 0x59, 0xfd,
-0x5b, 0x26, 0xc2, 0x83, 0x94, 0xa1, 0xa0, 0xfe,
-0x3f, 0x76, 0xfe, 0xcf, 0xad, 0x10, 0x11, 0xe5,
-0x03, 0xbc, 0xd8, 0x8a, 0x97, 0x96, 0x13, 0x8d,
-0xe7, 0x03, 0x34, 0xd1, 0xe5, 0x2d, 0x79, 0x75,
-0x6c, 0x10, 0x76, 0x7f, 0x5d, 0x4f, 0xe6, 0xf9,
-0xb3, 0xf8, 0xcf, 0xb3, 0x87, 0xbb, 0xa2, 0x95,
-0x94, 0x06, 0x9a, 0x6d, 0xac, 0x15, 0x5f, 0x1d,
-0xe5, 0xf7, 0x35, 0xbd, 0x49, 0x78, 0x20, 0xd4,
-0xbd, 0x9a, 0xfd, 0x0a, 0xf2, 0x63, 0xdb, 0x4e,
-0x4b, 0xd9, 0xfc, 0xe7, 0x5c, 0x61, 0xf2, 0x9a,
-0x78, 0x44, 0x53, 0x9d, 0xf0, 0x72, 0xbc, 0x66,
-0xc0, 0x79, 0xa3, 0x3c, 0x04, 0x9d, 0x46, 0xcd,
-0x92, 0xfc, 0xc0, 0x8c, 0xa3, 0xfa, 0xb2, 0x98,
-0x7f, 0x70, 0x4d, 0x3c, 0x8b, 0xff, 0x73, 0xd0,
-0x98, 0x94, 0xea, 0x37, 0xb8, 0xce, 0x96, 0x8d,
-0xc1, 0xe5, 0x96, 0x6b, 0x13, 0xd4, 0x2f, 0x42,
-0xbf, 0xac, 0x05, 0xef, 0xc0, 0x65, 0xf9, 0x67,
-0xe5, 0xb2, 0x45, 0x94, 0xca, 0xc2, 0x3f, 0x83,
-0x90, 0x90, 0x02, 0x46, 0x6e, 0x54, 0xfe, 0x29,
-0x3b, 0xd2, 0x6e, 0xd1, 0xae, 0xc6, 0xc4, 0xb7,
-0xa1, 0x7e, 0xd8, 0xf5, 0x1c, 0xba, 0x06, 0xaf,
-0xcb, 0x01, 0x73, 0x53, 0xbc, 0xd9, 0x8e, 0x7f,
-0xb6, 0x20, 0xc8, 0xd9, 0x41, 0x41, 0xe3, 0x59,
-0x62, 0xad, 0x5e, 0x69, 0x52, 0x22, 0xcc, 0x24,
-0x44, 0xa4, 0xde, 0x8b, 0x1a, 0x69, 0x8d, 0xa5,
-0x51, 0xb3, 0xf0, 0x4f, 0x80, 0xad, 0x11, 0x77,
-0x27, 0xdb, 0x4e, 0xe6, 0x1e, 0x5d, 0xb4, 0x56,
-0xf8, 0x92, 0xeb, 0x89, 0x08, 0xfd, 0x88, 0x98,
-0x33, 0xae, 0xde, 0xc8, 0xbe, 0x08, 0x8f, 0x74,
-0x94, 0x26, 0xaf, 0xc9, 0xc6, 0x3f, 0x47, 0x41,
-0xe8, 0xfa, 0x29, 0x4e, 0x61, 0xb4, 0x4e, 0xf0,
-0x8d, 0xe5, 0x15, 0xa2, 0xff, 0xd2, 0x1b, 0xf3,
-0x25, 0xbb, 0xad, 0x23, 0xa1, 0xd0, 0x88, 0xea,
-0xcf, 0xc2, 0x3f, 0x7d, 0xa1, 0xa3, 0x7a, 0x35,
-0x82, 0x6c, 0x99, 0xbc, 0xe3, 0x9b, 0x63, 0x05,
-0x3d, 0x28, 0x5c, 0x4a, 0xd6, 0x13, 0xed, 0x79,
-0x05, 0xbc, 0xd9, 0xb2, 0x87, 0x5c, 0xd1, 0xac,
-0xf8, 0x0f, 0x9f, 0x90, 0x1a, 0xb4, 0xa5, 0xe9,
-0x6c, 0x57, 0x97, 0x9c, 0xce, 0x88, 0x09, 0xe3,
-0x5f, 0xc8, 0x7f, 0x0d, 0x4a, 0x64, 0x0d, 0x97,
-0x44, 0x9b, 0xa9, 0x0c, 0x3c, 0xd0, 0x92, 0x1f,
-0x95, 0xe7, 0x8a, 0xd7, 0xa5, 0xda, 0x90, 0x13,
-0x11, 0x91, 0x58, 0x07, 0xf5, 0xc4, 0x8f, 0x1d,
-0xc8, 0xc2, 0x3f, 0xb8, 0x49, 0x56, 0x38, 0xb6,
-0x10, 0xda, 0x61, 0x15, 0xab, 0xf2, 0xb7, 0x38,
-0xe6, 0x78, 0xd7, 0x49, 0xe5, 0x46, 0x8f, 0x56,
-0xf6, 0xdf, 0x94, 0x0e, 0xca, 0x8f, 0x5f, 0x91,
-0xff, 0x62, 0x1d, 0xc2, 0x43, 0x49, 0x99, 0xe5,
-0xb0, 0x1b, 0x2a, 0xda, 0x1d, 0x5a, 0x58, 0xc1,
-0x3b, 0xcc, 0x6d, 0x8d, 0x6c, 0xc9, 0xdd, 0xe9,
-0x79, 0x46, 0xab, 0x68, 0xbd, 0xa2, 0xfe, 0x2b,
-0x37, 0x86, 0x46, 0xad, 0x6d, 0xbd, 0x3f, 0x57,
-0x89, 0xed, 0x9e, 0xc7, 0xdb, 0xd0, 0x1b, 0x55,
-0x76, 0x74, 0x48, 0x73, 0x89, 0xff, 0x43, 0x85,
-0x60, 0x1e, 0x03, 0xae, 0xa8, 0xff, 0x42, 0x7f,
-0x2d, 0xc0, 0xab, 0x84, 0x1c, 0x42, 0xfc, 0x53,
-0x41, 0x82, 0x2e, 0x12, 0x70, 0x15, 0xdf, 0x10,
-0x6e, 0x8e, 0x45, 0x47, 0xf5, 0x7a, 0xe2, 0x9f,
-0x1c, 0xb5, 0xf3, 0x9f, 0xe1, 0x93, 0x8a, 0xc6,
-0x36, 0x57, 0xbb, 0x3c, 0x12, 0x3f, 0x8f, 0x42,
-0xfe, 0xf1, 0xce, 0x91, 0x9d, 0x56, 0xfd, 0x57,
-0xb4, 0xf9, 0x0e, 0xf6, 0x8f, 0x54, 0xe1, 0x75,
-0x65, 0xfd, 0xd7, 0x2b, 0xd0, 0x88, 0xb0, 0x87,
-0xed, 0x8c, 0x1d, 0xf2, 0x57, 0x1b, 0x88, 0x7f,
-0xce, 0x21, 0x6c, 0xb0, 0xea, 0xdf, 0xcf, 0x81,
-0x55, 0x11, 0x16, 0xcd, 0xc6, 0x3f, 0x5a, 0x2b,
-0xaf, 0x52, 0x22, 0x82, 0x85, 0x44, 0xc4, 0xbf,
-0x70, 0x73, 0x05, 0x84, 0x93, 0x46, 0xc4, 0x5b,
-0x05, 0x8e, 0x0e, 0x76, 0x1a, 0x4e, 0x4a, 0xe8,
-0x5f, 0x84, 0x37, 0x3f, 0x68, 0xd7, 0x3f, 0x4d,
-0x1d, 0x92, 0xcf, 0xc8, 0xd3, 0x3c, 0x83, 0xb1,
-0x87, 0x74, 0x7d, 0x49, 0x1e, 0x25, 0xfe, 0x3a,
-0x62, 0x54, 0xff, 0xee, 0x1e, 0x31, 0xa8, 0x10,
-0xbe, 0xdb, 0x9d, 0x8d, 0x7f, 0xba, 0x1e, 0xbd,
-0xa7, 0x0a, 0xf1, 0x0f, 0xae, 0xe7, 0xa3, 0x50,
-0x7e, 0x8b, 0x9a, 0xe2, 0xff, 0x54, 0xdd, 0xe2,
-0x88, 0x7a, 0x46, 0xe0, 0xd1, 0x10, 0x15, 0xe2,
-0xb1, 0x07, 0xec, 0xf1, 0x1f, 0x71, 0x68, 0x20,
-0xb8, 0x22, 0x3f, 0x5a, 0xb4, 0x93, 0x11, 0x6d,
-0x3b, 0x9f, 0xf8, 0x3c, 0x87, 0x20, 0x88, 0xbf,
-0x6f, 0xf3, 0x20, 0x1c, 0x12, 0xc1, 0x90, 0x2b,
-0x1b, 0xff, 0x3c, 0x40, 0x6c, 0x8d, 0xf6, 0x2a,
-0x62, 0x07, 0xa1, 0x60, 0x14, 0x50, 0x99, 0x58,
-0x8a, 0x11, 0xd4, 0x4c, 0x44, 0xe8, 0xd9, 0xab,
-0x36, 0x45, 0xb3, 0xe2, 0x3f, 0xdb, 0xfc, 0x77,
-0x7a, 0xfc, 0x57, 0xf9, 0xc8, 0x89, 0x1e, 0x87,
-0x80, 0x8e, 0x8e, 0x86, 0x8e, 0x30, 0xa0, 0x56,
-0xa1, 0x44, 0x98, 0x9f, 0xea, 0xdf, 0x51, 0xb0,
-0xc7, 0x7f, 0x6e, 0x54, 0x8e, 0xea, 0x65, 0xb1,
-0xd6, 0x10, 0xeb, 0x41, 0xd8, 0xf3, 0xb7, 0x7d,
-0xde, 0x51, 0xf7, 0xa7, 0xcd, 0xf5, 0xe0, 0x8b,
-0x2d, 0x1e, 0x91, 0xbf, 0x25, 0x3e, 0x3c, 0xd4,
-0x19, 0x53, 0x63, 0x4d, 0x76, 0xfe, 0xf3, 0x67,
-0x59, 0xa7, 0x59, 0x3e, 0xce, 0xab, 0x99, 0x4f,
-0xdb, 0xa3, 0xe8, 0x94, 0x7d, 0x70, 0xf2, 0x1d,
-0xe4, 0x98, 0x57, 0x86, 0x0b, 0x58, 0xa7, 0x80,
-0x51, 0x34, 0x7c, 0x36, 0xfe, 0xb3, 0xd4, 0x80,
-0x58, 0xac, 0xdc, 0xe4, 0x21, 0xc7, 0xe3, 0x62,
-0x8f, 0x7f, 0x9e, 0x19, 0xb9, 0x33, 0x5c, 0x2c,
-0x59, 0xf1, 0xdb, 0x56, 0xd6, 0x02, 0x4f, 0x0a,
-0x8b, 0x21, 0x63, 0x8f, 0xff, 0xcc, 0x56, 0x06,
-0x3b, 0x6e, 0x48, 0x3a, 0x43, 0xf2, 0xec, 0x9e,
-0x3f, 0x8a, 0xd2, 0x98, 0x63, 0x05, 0x3e, 0xed,
-0x6f, 0xf1, 0xc8, 0xd2, 0xd5, 0x33, 0x66, 0x43,
-0xbf, 0x58, 0x90, 0x5c, 0x3a, 0xa1, 0xda, 0xf8,
-0xcf, 0x9f, 0xdd, 0x80, 0x6f, 0xf7, 0xbc, 0xb9,
-0x54, 0x97, 0xc7, 0xcc, 0x8b, 0x6d, 0x0d, 0x61,
-0x57, 0x94, 0xf8, 0x84, 0xee, 0x20, 0xd1, 0x74,
-0x47, 0x58, 0x1e, 0x20, 0x10, 0xca, 0xc6, 0x3f,
-0xa7, 0x8c, 0x7f, 0x12, 0x0b, 0x7f, 0x93, 0x9f,
-0x90, 0x5f, 0x84, 0xb7, 0x3a, 0x1a, 0x93, 0x9b,
-0x26, 0xca, 0x50, 0x10, 0xd5, 0x23, 0xce, 0xa7,
-0xe4, 0xab, 0xb5, 0x9f, 0x77, 0x11, 0x34, 0xea,
-0xb4, 0xe3, 0x9f, 0x1f, 0x0a, 0x74, 0xb2, 0xfa,
-0x12, 0x4d, 0xe8, 0x4f, 0xfd, 0x12, 0xae, 0x3f,
-0x34, 0xe3, 0x5e, 0x7d, 0x0b, 0x02, 0x83, 0xd2,
-0xd1, 0x82, 0xaf, 0xb1, 0x42, 0x65, 0x07, 0x15,
-0x62, 0x7c, 0x9d, 0xd9, 0xf1, 0xcf, 0x41, 0xee,
-0x82, 0x39, 0x83, 0x79, 0x26, 0x3b, 0xa5, 0xd1,
-0x6b, 0xb6, 0x85, 0x62, 0x11, 0x78, 0x04, 0xe6,
-0xf4, 0xe7, 0xe9, 0xe8, 0xc1, 0x11, 0x83, 0xe8,
-0x8a, 0xfc, 0xd7, 0x31, 0x11, 0x21, 0xf6, 0x26,
-0xa0, 0xb6, 0x79, 0x0c, 0xca, 0x07, 0xf2, 0xfa,
-0xf0, 0xdd, 0x3a, 0x23, 0xe5, 0xa6, 0x43, 0x67,
-0x05, 0xc6, 0x0e, 0xa5, 0x67, 0x18, 0x2d, 0xa6,
-0x1d, 0xff, 0x3c, 0xc0, 0xba, 0x79, 0xed, 0xdb,
-0xf9, 0x9c, 0x4d, 0xe2, 0x63, 0x34, 0x0c, 0x17,
-0x50, 0xfd, 0xce, 0x5b, 0xf0, 0x63, 0x33, 0x3f,
-0xa6, 0x56, 0x41, 0xa7, 0x14, 0x38, 0xed, 0x1b,
-0x2f, 0x3b, 0x63, 0x8f, 0xff, 0xb4, 0x8e, 0x4a,
-0xc1, 0xe1, 0xa5, 0x11, 0x75, 0x17, 0xbf, 0x08,
-0xb5, 0x83, 0x05, 0xd1, 0xb2, 0xdf, 0xc0, 0x45,
-0xad, 0x2e, 0x89, 0x8a, 0xe8, 0x03, 0xb8, 0xc8,
-0x83, 0xa7, 0xae, 0xe0, 0x3f, 0x9f, 0x83, 0x37,
-0x79, 0xb5, 0xe9, 0x33, 0x9b, 0x1b, 0x88, 0xbd,
-0x29, 0x66, 0x24, 0xcb, 0x7e, 0xc5, 0x8e, 0x01,
-0x4b, 0x14, 0x24, 0xe5, 0x49, 0xe5, 0xad, 0x62,
-0x5c, 0xa8, 0xf1, 0x2c, 0xfe, 0xf3, 0xd7, 0x20,
-0xa2, 0xe8, 0xc9, 0xd6, 0x08, 0xda, 0xc7, 0x03,
-0x88, 0x96, 0x57, 0x44, 0x99, 0x07, 0x17, 0xca,
-0x93, 0x44, 0x47, 0xfe, 0x55, 0x78, 0x06, 0xf4,
-0x51, 0x9e, 0x8d, 0x7f, 0xe6, 0xc2, 0x63, 0xc2,
-0x13, 0xe2, 0x1b, 0xc8, 0x5e, 0x4b, 0x5f, 0x49,
-0xe4, 0xc5, 0xd9, 0xdf, 0x10, 0x4d, 0xd7, 0x6c,
-0xeb, 0xf1, 0x7c, 0xc8, 0x51, 0x10, 0x91, 0x2c,
-0xfc, 0xa3, 0x38, 0x25, 0xc4, 0x03, 0x27, 0xad,
-0xf5, 0x21, 0xa2, 0xa6, 0xd7, 0x8f, 0xeb, 0xf3,
-0x18, 0xc4, 0x12, 0x1c, 0xc2, 0xaf, 0x71, 0x8f,
-0xe9, 0xe9, 0xe0, 0xfe, 0x02, 0x7b, 0xfc, 0xe7,
-0xcb, 0x8b, 0x7e, 0x0d, 0xbd, 0xc7, 0xb9, 0x28,
-0x9b, 0xd5, 0x75, 0xb9, 0xbd, 0xd6, 0xcc, 0x9f,
-0x23, 0x87, 0x94, 0x23, 0x8a, 0xfb, 0x70, 0x41,
-0x4c, 0xfe, 0xa0, 0xf0, 0xf5, 0x45, 0x01, 0x2a,
-0x9d, 0xb3, 0xe3, 0x9f, 0x49, 0x31, 0x06, 0x0d,
-0xe6, 0x0c, 0x43, 0x1a, 0x33, 0xbe, 0x5b, 0xde,
-0x68, 0x6c, 0xfc, 0x08, 0xd1, 0xcb, 0x65, 0xf8,
-0x8e, 0x39, 0xc3, 0x94, 0x27, 0xd9, 0x51, 0xf4,
-0x11, 0xb3, 0xeb, 0xdf, 0x73, 0x3e, 0xbc, 0xe5,
-0x72, 0xb4, 0x31, 0xe9, 0x3b, 0x2f, 0x4f, 0x8a,
-0x63, 0x62, 0x4f, 0x79, 0x41, 0x9f, 0x2b, 0x08,
-0xbf, 0x8b, 0x06, 0x5e, 0xd9, 0x70, 0x56, 0xbe,
-0x09, 0xde, 0x8a, 0x56, 0x27, 0x97, 0x4c, 0x96,
-0xd9, 0xeb, 0xbf, 0xa8, 0x2c, 0xcb, 0x47, 0xa0,
-0xee, 0xab, 0xb1, 0x6e, 0xaf, 0x27, 0xa1, 0xf6,
-0x32, 0x5f, 0x4c, 0xf6, 0x54, 0x44, 0x5a, 0xff,
-0x78, 0x4f, 0x0f, 0x7f, 0xa6, 0xd4, 0x93, 0x40,
-0x84, 0x63, 0xaf, 0xff, 0x1a, 0x8a, 0x96, 0xe9,
-0xbe, 0x01, 0xee, 0x87, 0x8d, 0xf8, 0x6b, 0xea,
-0x89, 0x6e, 0x7f, 0xd8, 0xa9, 0xec, 0x90, 0xbc,
-0xe6, 0x0a, 0xbf, 0xc3, 0x27, 0xf6, 0xe8, 0x9e,
-0x01, 0x1e, 0xb0, 0xd5, 0x5f, 0x10, 0xfe, 0x39,
-0x90, 0x22, 0xc9, 0x50, 0x1b, 0x37, 0x0f, 0xf1,
-0x7f, 0x9c, 0x28, 0x78, 0x4f, 0xa2, 0x45, 0xfb,
-0x29, 0x6c, 0x8f, 0x78, 0x08, 0x41, 0xd9, 0xeb,
-0xbf, 0x52, 0xd5, 0x01, 0xce, 0xfd, 0xf2, 0x2e,
-0x76, 0xa4, 0x23, 0x90, 0x7c, 0xf0, 0xa0, 0xbb,
-0xaa, 0xf0, 0x7d, 0xa8, 0x1f, 0x6f, 0x8d, 0x17,
-0xb9, 0xf4, 0xd7, 0x45, 0x9c, 0x1a, 0xf1, 0xd9,
-0xeb, 0xbf, 0x0e, 0xf2, 0xef, 0x42, 0xe3, 0xb8,
-0x05, 0x7b, 0x2e, 0x7b, 0x10, 0xed, 0x7c, 0x44,
-0x65, 0x80, 0xd1, 0x60, 0x72, 0xe9, 0xb8, 0x7c,
-0x8e, 0xbf, 0xa4, 0x34, 0x8e, 0x5c, 0x81, 0x7f,
-0x76, 0xc1, 0xfb, 0x4a, 0x00, 0x41, 0x4b, 0x91,
-0x4f, 0x79, 0x5f, 0xaa, 0x35, 0x7d, 0x7b, 0x55,
-0x9f, 0x76, 0x11, 0x02, 0x89, 0xfc, 0x3d, 0xf2,
-0x57, 0x0d, 0x8a, 0x6f, 0x5c, 0x51, 0xff, 0x55,
-0x69, 0x1c, 0xb8, 0xd3, 0x73, 0x82, 0xef, 0xcb,
-0xbd, 0x76, 0xf9, 0x81, 0x76, 0xcf, 0xaf, 0xf8,
-0xb3, 0x1e, 0x9f, 0x38, 0x70, 0xe7, 0x17, 0x4e,
-0xf2, 0x73, 0x6c, 0xbe, 0xb1, 0x5e, 0xd4, 0x9e,
-0xcb, 0x7f, 0x21, 0xbb, 0xfe, 0xdd, 0x78, 0x18,
-0xb6, 0x8f, 0x20, 0xc8, 0x29, 0x80, 0x67, 0xa2,
-0xe5, 0x66, 0xc5, 0x7e, 0x96, 0x5f, 0x7e, 0x40,
-0xe8, 0x8b, 0xf2, 0xea, 0x72, 0xbb, 0x78, 0x67,
-0xab, 0x9e, 0x2c, 0x89, 0xb3, 0xd5, 0x76, 0xfc,
-0x03, 0xfb, 0xa2, 0xa5, 0x56, 0x3c, 0x44, 0x90,
-0x10, 0xb9, 0x2f, 0x97, 0x02, 0x23, 0x73, 0x92,
-0x25, 0x75, 0xec, 0x39, 0x58, 0xbb, 0xfe, 0xcb,
-0x49, 0xe9, 0xbe, 0x2b, 0xe2, 0x3f, 0x17, 0x35,
-0x3f, 0x3e, 0xbf, 0xc3, 0x69, 0xbc, 0x0f, 0xb5,
-0x27, 0x0a, 0x5e, 0xa4, 0x44, 0x3f, 0xe8, 0x44,
-0xd4, 0x19, 0x42, 0x43, 0xe3, 0x1f, 0x70, 0x3e,
-0xdf, 0xb9, 0x2c, 0x0b, 0xff, 0x7c, 0xd7, 0x6a,
-0x8b, 0x24, 0x4d, 0x0e, 0x5f, 0x4c, 0x55, 0xbb,
-0x4f, 0x1a, 0xdf, 0x85, 0xe0, 0xe0, 0xa6, 0xbd,
-0xea, 0x5d, 0xec, 0xa2, 0x76, 0xf3, 0xa0, 0xeb,
-0xac, 0x6c, 0xcf, 0x7f, 0x8d, 0x21, 0x3e, 0xaf,
-0xb7, 0x60, 0x0f, 0x0a, 0xb5, 0xe6, 0xa6, 0x68,
-0xd9, 0x87, 0x1a, 0xd1, 0xa2, 0x0a, 0xf6, 0xc8,
-0x2b, 0xf9, 0x21, 0x11, 0xa0, 0x40, 0x99, 0xbd,
-0xfe, 0xeb, 0x20, 0x6c, 0x02, 0x4b, 0x69, 0xfc,
-0xb3, 0xe5, 0x3f, 0xca, 0x54, 0x4f, 0xba, 0x96,
-0xe2, 0x81, 0x1f, 0xb1, 0xbd, 0xec, 0x49, 0x78,
-0xaa, 0x9f, 0xaf, 0xca, 0xaa, 0xff, 0xfa, 0x11,
-0xa2, 0xbb, 0xf9, 0x44, 0x73, 0x7a, 0x53, 0x6c,
-0xa2, 0xfa, 0xf7, 0xd5, 0xa1, 0x4b, 0x84, 0xf7,
-0xc6, 0xf1, 0xc8, 0x6c, 0x7d, 0xa3, 0xb0, 0x96,
-0xc2, 0x5e, 0xff, 0x35, 0x44, 0x30, 0xb2, 0x85,
-0x7f, 0x9a, 0xf2, 0x5f, 0x61, 0x7d, 0x52, 0x9d,
-0xc3, 0x6e, 0x85, 0x8e, 0x42, 0xdf, 0x30, 0xee,
-0x9f, 0x8d, 0x62, 0x87, 0xf0, 0x86, 0x78, 0x76,
-0xfd, 0x57, 0x0f, 0x7a, 0xb7, 0x56, 0xfd, 0xfb,
-0x28, 0x1c, 0x8d, 0x55, 0x47, 0x5d, 0x49, 0x79,
-0x14, 0x8f, 0x34, 0xc6, 0x1c, 0x31, 0xb9, 0x9e,
-0x1f, 0x15, 0x81, 0xf0, 0xae, 0x2b, 0xea, 0xbf,
-0x2c, 0xf6, 0xcb, 0x52, 0xc1, 0x4e, 0xb3, 0x09,
-0xe9, 0x79, 0x70, 0x85, 0x89, 0xf6, 0x4c, 0xf5,
-0x5f, 0x4a, 0x11, 0x22, 0x22, 0xed, 0xc5, 0x2b,
-0xf1, 0xcf, 0x08, 0x1c, 0x62, 0x96, 0x59, 0x2c,
-0xe7, 0x87, 0xa0, 0x82, 0xfa, 0xff, 0x94, 0x13,
-0x10, 0x32, 0x36, 0x3c, 0x4a, 0x19, 0x31, 0xa5,
-0xca, 0x70, 0x6e, 0xcd, 0x8a, 0xff, 0x7c, 0xd9,
-0xb3, 0xae, 0x75, 0xfb, 0x32, 0xca, 0x7f, 0xb1,
-0x43, 0xad, 0xe1, 0x65, 0xde, 0x2d, 0xeb, 0xaf,
-0x0f, 0xed, 0x97, 0xb6, 0x2f, 0x42, 0x18, 0x73,
-0xfd, 0x3d, 0x68, 0x88, 0xdb, 0xbd, 0x8f, 0x5e,
-0x51, 0xff, 0xd5, 0x01, 0x21, 0xab, 0xda, 0xab,
-0x9c, 0xea, 0xbf, 0xd0, 0xbe, 0x97, 0xc3, 0x36,
-0x89, 0x60, 0xd2, 0x83, 0x04, 0x84, 0xac, 0x46,
-0x37, 0xd9, 0xf5, 0x5f, 0x1d, 0x53, 0x65, 0x62,
-0x31, 0xba, 0x2c, 0x4f, 0x03, 0x2a, 0x04, 0xd3,
-0xdb, 0xbc, 0xd3, 0xfc, 0x1f, 0x3c, 0x95, 0x5d,
-0xff, 0x45, 0x61, 0x07, 0x04, 0x39, 0x20, 0xa8,
-0xfe, 0x2b, 0xdf, 0x2a, 0xbb, 0x46, 0x44, 0x34,
-0x2b, 0x6c, 0x35, 0xe2, 0x6b, 0xe8, 0x70, 0x42,
-0x56, 0xfd, 0xd7, 0x48, 0xcf, 0x79, 0xef, 0xcd,
-0x6d, 0xae, 0xe3, 0xdd, 0x23, 0xb1, 0x35, 0xde,
-0x85, 0x87, 0x0b, 0x8e, 0xbf, 0x7c, 0x22, 0xf6,
-0xc2, 0xbc, 0xc6, 0x36, 0x79, 0x73, 0xe7, 0xb9,
-0x9e, 0xdf, 0x53, 0xfe, 0x2b, 0x1b, 0xff, 0x50,
-0x7e, 0x30, 0xd8, 0x52, 0x80, 0xeb, 0x13, 0x3b,
-0xaf, 0x35, 0x58, 0x89, 0x42, 0x03, 0x8f, 0x50,
-0xfc, 0x87, 0xf2, 0x83, 0x1e, 0xab, 0xff, 0xa1,
-0x94, 0xc1, 0x3f, 0x49, 0x5d, 0xe4, 0x59, 0x45,
-0xee, 0xba, 0xe8, 0xd3, 0x89, 0xed, 0x13, 0xd6,
-0x01, 0xf1, 0x4f, 0x84, 0x77, 0x32, 0x5d, 0xef,
-0xe1, 0x15, 0xa0, 0x0e, 0x84, 0x8f, 0xa6, 0xbf,
-0x47, 0x9e, 0x73, 0x42, 0xac, 0x91, 0x2a, 0x0d,
-0xc7, 0xb2, 0xab, 0x4e, 0xec, 0x7c, 0x56, 0xaf,
-0x6c, 0xe5, 0xed, 0x0c, 0x61, 0xf6, 0x9c, 0xca,
-0x36, 0xbe, 0x2c, 0x50, 0x23, 0x9e, 0x80, 0xbb,
-0xa9, 0x91, 0xdd, 0x40, 0xa6, 0xff, 0xcf, 0xcc,
-0x2e, 0xab, 0x8d, 0x12, 0xff, 0x05, 0xb5, 0x51,
-0xd2, 0xf1, 0x1f, 0xb6, 0x3b, 0x6a, 0x0c, 0x3c,
-0xd2, 0xca, 0x87, 0x1d, 0x35, 0xde, 0x27, 0xe0,
-0x33, 0x54, 0x11, 0xf6, 0x6a, 0x56, 0xfe, 0xcb,
-0x7a, 0xfe, 0xad, 0xaa, 0x05, 0x63, 0xda, 0x9d,
-0xdf, 0x9f, 0x81, 0x3f, 0x5c, 0x34, 0xd8, 0x8e,
-0xb0, 0x76, 0x0e, 0xbc, 0x17, 0x0f, 0x84, 0xb2,
-0xfa, 0x1f, 0xf6, 0x50, 0xfd, 0x3b, 0x58, 0xa0,
-0xa8, 0x9c, 0xc2, 0x62, 0xcb, 0x5d, 0x0f, 0xc9,
-0xef, 0x52, 0xdb, 0x43, 0x2a, 0xfb, 0x1a, 0x31,
-0x50, 0x68, 0x77, 0x65, 0xe3, 0x1f, 0xea, 0xc7,
-0xb5, 0x50, 0x71, 0x59, 0x65, 0x2c, 0x50, 0x0d,
-0xce, 0x57, 0x50, 0x18, 0xd2, 0xac, 0x78, 0xe3,
-0x2a, 0x38, 0x55, 0x5c, 0xad, 0xa0, 0x60, 0x8f,
-0xff, 0x54, 0xc0, 0x19, 0xe1, 0x89, 0xa9, 0xbb,
-0xd8, 0x19, 0xfd, 0x79, 0xe1, 0x11, 0x0e, 0x8a,
-0xff, 0x1c, 0x36, 0xab, 0x9e, 0x53, 0xa9, 0xed,
-0xcf, 0x61, 0xb3, 0x36, 0xa6, 0x66, 0xd7, 0xbf,
-0x1b, 0xe8, 0x9d, 0xce, 0x05, 0x55, 0x98, 0x14,
-0x38, 0xf5, 0x42, 0x04, 0x10, 0x5d, 0x47, 0x79,
-0x15, 0x5c, 0x03, 0xcb, 0x0c, 0x06, 0xbc, 0x9c,
-0xe2, 0xa5, 0x87, 0xb3, 0xf2, 0x5f, 0x08, 0x72,
-0xd0, 0x49, 0x71, 0x9f, 0x82, 0x97, 0x22, 0x7f,
-0x47, 0xdd, 0x2a, 0x4e, 0xb1, 0x19, 0xa9, 0xfc,
-0x75, 0x03, 0x7e, 0xda, 0x5f, 0xa6, 0xfa, 0x2f,
-0x7b, 0xfc, 0xe7, 0x2a, 0xfe, 0x1b, 0x71, 0x43,
-0x48, 0x6d, 0x95, 0x7f, 0x05, 0xbf, 0xef, 0xba,
-0x31, 0xc4, 0xef, 0x64, 0x97, 0xe0, 0x84, 0xb8,
-0x59, 0x57, 0xeb, 0xe4, 0x2f, 0xc2, 0x20, 0x9e,
-0x72, 0xad, 0xb0, 0xc7, 0x7f, 0x3e, 0x4b, 0xfd,
-0xb8, 0xa8, 0xbb, 0x88, 0x34, 0x0a, 0x1f, 0x29,
-0xb5, 0xe4, 0x7d, 0x24, 0xad, 0xfc, 0x97, 0x4a,
-0x85, 0x96, 0xef, 0x80, 0x45, 0x74, 0xc9, 0xf4,
-0xff, 0x81, 0x9c, 0x09, 0x71, 0x29, 0xda, 0xb8,
-0xd3, 0xd5, 0xd7, 0xfc, 0x3c, 0x1c, 0xa5, 0x6c,
-0xd7, 0x0a, 0x35, 0x00, 0x56, 0x44, 0xe8, 0x90,
-0x1c, 0xa0, 0x46, 0x40, 0x31, 0x57, 0x22, 0x2b,
-0xfe, 0xb3, 0x05, 0x9e, 0xf5, 0x57, 0x1a, 0x6a,
-0x1b, 0x2b, 0x66, 0x6b, 0x1e, 0x47, 0x45, 0xd4,
-0x4e, 0x81, 0x68, 0x65, 0x87, 0xee, 0xb8, 0xcf,
-0x3d, 0x0b, 0x76, 0x6a, 0xa5, 0x06, 0xfa, 0x47,
-0x59, 0xf1, 0x1f, 0x63, 0x5f, 0x4e, 0xe5, 0xcb,
-0xd7, 0x9c, 0x0d, 0x93, 0x9a, 0x2a, 0x33, 0x1c,
-0xe3, 0x6c, 0x96, 0xbe, 0x8f, 0xcf, 0xe9, 0xe7,
-0xf7, 0x3a, 0x66, 0xe9, 0x9b, 0xac, 0xfc, 0x57,
-0x16, 0xfe, 0x49, 0x52, 0x1a, 0x51, 0x7f, 0x0c,
-0x3c, 0x86, 0x24, 0x84, 0xfe, 0x1c, 0xcf, 0x65,
-0x0c, 0xe2, 0xa2, 0xbc, 0xc6, 0x21, 0xf0, 0x25,
-0x63, 0x14, 0xd8, 0xd7, 0xb2, 0xf0, 0x0f, 0x2a,
-0x0d, 0x29, 0x58, 0xea, 0x8a, 0x34, 0x27, 0xf1,
-0x6b, 0xea, 0x8d, 0xdf, 0x2e, 0x8a, 0x3c, 0xca,
-0x84, 0x32, 0x17, 0x81, 0xae, 0xec, 0x81, 0x44,
-0x4b, 0xaf, 0x8e, 0xfa, 0x24, 0x0b, 0xff, 0xa0,
-0x7d, 0xb4, 0x82, 0x60, 0xbb, 0xac, 0xf8, 0x98,
-0xa5, 0x78, 0x0f, 0x48, 0xf5, 0xa6, 0xd5, 0x28,
-0xf2, 0xa2, 0x7f, 0xaa, 0x22, 0xcc, 0x8e, 0x7f,
-0xfe, 0x99, 0x9c, 0x08, 0x53, 0x1e, 0x54, 0xd0,
-0x9b, 0x18, 0x54, 0x87, 0xe5, 0x06, 0x18, 0x92,
-0xaa, 0x65, 0xbc, 0xac, 0x01, 0x55, 0x6f, 0x35,
-0xf5, 0xbb, 0x33, 0x6d, 0xf1, 0x9f, 0x15, 0x60,
-0x15, 0x09, 0xc6, 0xad, 0x6c, 0x69, 0x95, 0xae,
-0xea, 0x4c, 0x67, 0x9d, 0xa8, 0xd8, 0x55, 0xe1,
-0x00, 0x77, 0x37, 0x6c, 0x17, 0x54, 0x7f, 0x61,
-0xef, 0xff, 0x03, 0x3f, 0x98, 0xba, 0x9e, 0xd1,
-0x3f, 0xbc, 0x3a, 0x86, 0xaf, 0xd9, 0x4d, 0xb4,
-0x31, 0x42, 0xec, 0x9d, 0x56, 0x3f, 0xd2, 0x5c,
-0x3b, 0xff, 0x47, 0x31, 0x1e, 0x22, 0x74, 0xcd,
-0x72, 0x07, 0x95, 0x0e, 0xdd, 0x47, 0xde, 0x84,
-0x13, 0x37, 0x9d, 0x8f, 0xe3, 0xb2, 0xfb, 0x50,
-0xad, 0x51, 0x3f, 0x64, 0x77, 0x56, 0xff, 0xc3,
-0x14, 0x0d, 0xac, 0x37, 0x3c, 0x46, 0x85, 0x72,
-0x66, 0xc1, 0x6e, 0xd5, 0x47, 0x16, 0x67, 0xd0,
-0xd5, 0xdb, 0xe9, 0x54, 0x7e, 0x4d, 0x19, 0x9f,
-0x27, 0xb2, 0xf9, 0x3f, 0x5d, 0x63, 0xd0, 0x28,
-0xb9, 0x0c, 0xfc, 0x4c, 0x26, 0xa8, 0x1b, 0xdb,
-0x80, 0x44, 0x1f, 0xce, 0x5c, 0x22, 0x2a, 0x8c,
-0xe3, 0xe2, 0xfd, 0x49, 0xfd, 0xd7, 0xa5, 0xcf,
-0x7d, 0x62, 0x54, 0x8f, 0x3b, 0x57, 0xcb, 0xc1,
-0x92, 0x63, 0x88, 0x96, 0x2b, 0x0e, 0x35, 0x07,
-0xe1, 0x98, 0x51, 0xad, 0x5b, 0xfc, 0xf9, 0x63,
-0x0f, 0x2d, 0x20, 0x21, 0x1b, 0xff, 0xbc, 0x40,
-0x45, 0xee, 0xf1, 0xcd, 0x3e, 0xbd, 0x5b, 0xf7,
-0x1c, 0x89, 0xf4, 0x82, 0x33, 0xd6, 0xbd, 0xaa,
-0x82, 0xf1, 0x00, 0xdb, 0xa9, 0x77, 0x2a, 0xb5,
-0x61, 0xde, 0xdb, 0xd4, 0x93, 0x3b, 0xbd, 0x9e,
-0xde, 0x9c, 0x21, 0x71, 0x40, 0x0a, 0x99, 0x3d,
-0x01, 0x87, 0x33, 0xdc, 0xc9, 0x89, 0xf6, 0x43,
-0x61, 0x55, 0xa9, 0x87, 0xd7, 0x21, 0xb0, 0x09,
-0xaf, 0xd3, 0xbd, 0xbc, 0x1e, 0xf1, 0x4f, 0xfa,
-0xf7, 0x42, 0xfc, 0xa3, 0x1c, 0x88, 0xe8, 0x87,
-0xbc, 0x7e, 0x2b, 0x1e, 0xe2, 0x31, 0x79, 0x1d,
-0xc5, 0x8b, 0x14, 0xf0, 0x50, 0x47, 0x20, 0x58,
-0x2f, 0xca, 0xb7, 0xa3, 0x87, 0x12, 0x4f, 0xf3,
-0xa5, 0x41, 0xd9, 0x05, 0xcf, 0x8b, 0x40, 0xb2,
-0x75, 0x7f, 0x73, 0x15, 0x1c, 0x11, 0x01, 0xd3,
-0x79, 0x50, 0xb6, 0xd6, 0x67, 0x9b, 0xb3, 0x0e,
-0x85, 0x97, 0xcd, 0xfa, 0x52, 0xdc, 0x21, 0x70,
-0xc7, 0xf4, 0xfd, 0xb7, 0x69, 0x07, 0xf9, 0x25,
-0x78, 0x29, 0x49, 0xfc, 0xf0, 0xf6, 0xcb, 0x9b,
-0xa7, 0x81, 0x10, 0x34, 0x8a, 0xa5, 0x17, 0x1e,
-0xbe, 0xac, 0x51, 0x45, 0x58, 0x3e, 0xe2, 0x43,
-0x5b, 0xff, 0xc3, 0x9f, 0x48, 0xef, 0x1b, 0xb5,
-0x09, 0x57, 0xaf, 0xbc, 0x52, 0x5c, 0xd4, 0x7b,
-0xa9, 0xbe, 0x7b, 0x65, 0xe4, 0x48, 0x79, 0xf0,
-0x71, 0x67, 0x5c, 0xf5, 0x89, 0x23, 0x46, 0xa0,
-0xa4, 0xa0, 0xd7, 0x9e, 0xff, 0x52, 0x7c, 0x8e,
-0x4e, 0xbf, 0xe7, 0xa3, 0x6b, 0x5e, 0x64, 0xf3,
-0xe1, 0x80, 0xe9, 0x39, 0xf1, 0xa3, 0x83, 0xe1,
-0x0f, 0xf4, 0xb7, 0x92, 0x05, 0x71, 0xfe, 0x1c,
-0xab, 0xec, 0x7a, 0x43, 0xf2, 0x8c, 0xf3, 0x17,
-0xd9, 0x47, 0xe9, 0x9f, 0xd7, 0x54, 0xf2, 0x43,
-0x3b, 0x0c, 0xdd, 0x5c, 0xec, 0xf7, 0x2c, 0x31,
-0xf6, 0x48, 0x9e, 0x91, 0x6b, 0xfc, 0x94, 0xd6,
-0x01, 0x9f, 0xb0, 0x3a, 0xd8, 0x74, 0x26, 0xf4,
-0x2e, 0xdc, 0x18, 0x67, 0xd3, 0xf6, 0x2e, 0xa4,
-0x05, 0x5b, 0x37, 0x89, 0x39, 0x63, 0xea, 0x44,
-0xee, 0xec, 0xbc, 0x7d, 0x91, 0xd2, 0xe9, 0x78,
-0xc8, 0xfc, 0x58, 0x1e, 0xe2, 0x01, 0xfe, 0xbd,
-0x48, 0x59, 0xec, 0xb3, 0xab, 0xd9, 0x49, 0x65,
-0xfa, 0xfa, 0x56, 0xee, 0x34, 0x76, 0xe8, 0xfe,
-0xa4, 0xea, 0x97, 0x97, 0xc0, 0x45, 0xdd, 0x9f,
-0x50, 0x17, 0x20, 0xec, 0x79, 0x19, 0x1a, 0xf4,
-0x7c, 0xdc, 0x6f, 0x5a, 0xbf, 0xee, 0x07, 0x97,
-0x5f, 0xfe, 0x75, 0xba, 0x7f, 0x9d, 0x31, 0x73,
-0xa3, 0xf1, 0x47, 0xc4, 0x33, 0xd3, 0xcb, 0x62,
-0xaa, 0xf1, 0xe6, 0x31, 0x78, 0x09, 0x6e, 0x86,
-0xdc, 0x71, 0x79, 0xcc, 0xf8, 0x04, 0x1a, 0xbb,
-0x0a, 0xc6, 0x6d, 0xfd, 0x0f, 0x39, 0xe1, 0x1f,
-0xa9, 0xa6, 0x1f, 0x41, 0x78, 0x01, 0x0a, 0x81,
-0xfe, 0x7c, 0x2b, 0x5e, 0x2d, 0xea, 0x05, 0x65,
-0x0c, 0xd9, 0x11, 0x70, 0xc7, 0xf2, 0xfb, 0x64,
-0x96, 0xd6, 0x0f, 0xa3, 0xd2, 0x41, 0xe8, 0x24,
-0xa7, 0x09, 0xd5, 0x88, 0x85, 0x7f, 0x0c, 0xa2,
-0x35, 0xec, 0xd3, 0xcb, 0x4c, 0x2f, 0x09, 0x3f,
-0x93, 0xe6, 0x89, 0xd6, 0x71, 0xd6, 0x9b, 0x3b,
-0x7d, 0x3d, 0xb4, 0xff, 0x48, 0x59, 0x2b, 0xae,
-0xa7, 0xfe, 0x87, 0xb3, 0xd9, 0x5a, 0x51, 0xf6,
-0x0e, 0xac, 0x86, 0x37, 0x61, 0xcf, 0x96, 0xbf,
-0xa1, 0xf7, 0xbd, 0x64, 0x51, 0xc1, 0x3f, 0xbb,
-0x3a, 0xd3, 0xde, 0x8f, 0xf8, 0x3f, 0xd0, 0xa9,
-0xa3, 0x3f, 0x42, 0xdd, 0xed, 0xd6, 0x09, 0x3d,
-0x84, 0xab, 0xfd, 0x2e, 0xe2, 0xbd, 0x7b, 0x9e,
-0xcb, 0xdb, 0xea, 0x39, 0x0a, 0x3b, 0xc2, 0xde,
-0x28, 0xe2, 0x9f, 0x1f, 0x64, 0x9e, 0x47, 0x89,
-0xb0, 0xa3, 0x7c, 0x5f, 0x8c, 0xc7, 0xc2, 0x5e,
-0x38, 0x1c, 0xeb, 0xed, 0x70, 0x8e, 0xc9, 0x67,
-0xc4, 0x05, 0xf8, 0xb6, 0xc8, 0x7f, 0x1a, 0x85,
-0x57, 0x63, 0xd5, 0x54, 0x1a, 0x56, 0x97, 0xb6,
-0x5f, 0xad, 0x5a, 0x4c, 0x19, 0x07, 0x2a, 0xf2,
-0x52, 0xad, 0xb2, 0x53, 0xa8, 0x4a, 0xb5, 0xfd,
-0xa1, 0xfe, 0xcf, 0x24, 0x18, 0x2f, 0xba, 0x2d,
-0xfc, 0x93, 0x5e, 0x1f, 0x6d, 0x97, 0x7e, 0x08,
-0x6a, 0xc9, 0xac, 0x5b, 0xf1, 0x9f, 0x45, 0x1b,
-0xa2, 0x33, 0x88, 0x08, 0x14, 0x5c, 0x64, 0x55,
-0xc4, 0x7f, 0xb6, 0xc3, 0xb2, 0x8f, 0x03, 0x19,
-0xbe, 0xb7, 0x52, 0xce, 0x28, 0xff, 0xb2, 0x22,
-0xd5, 0x76, 0xd8, 0x63, 0x11, 0x81, 0x60, 0x5d,
-0xb4, 0x0a, 0xf1, 0x8f, 0x67, 0x0e, 0xac, 0x33,
-0x9f, 0x5b, 0xa5, 0x6e, 0xcd, 0x8a, 0xff, 0xf8,
-0x10, 0xe4, 0xdc, 0x83, 0xa0, 0xc5, 0x2a, 0xfb,
-0x42, 0x3c, 0x13, 0x9f, 0xa2, 0xe9, 0x22, 0x5e,
-0x52, 0xe0, 0x19, 0x6d, 0x6e, 0x8b, 0xba, 0x19,
-0x77, 0xd4, 0xf4, 0x1f, 0x87, 0x72, 0xb0, 0x48,
-0x3e, 0x1a, 0xd1, 0x80, 0x59, 0x8c, 0xf0, 0x12,
-0xc2, 0x1e, 0xaf, 0x8f, 0x88, 0x43, 0x4e, 0xf6,
-0x14, 0x94, 0x53, 0x3f, 0xe4, 0xc3, 0xe9, 0xfa,
-0x0b, 0x62, 0x7e, 0x27, 0xf4, 0x00, 0x2c, 0x11,
-0x33, 0x42, 0xf8, 0xe2, 0x84, 0x7f, 0x50, 0x1f,
-0x26, 0x4a, 0xa9, 0xff, 0xb0, 0xaa, 0xc3, 0x19,
-0xb2, 0x50, 0x42, 0x7e, 0x33, 0xbd, 0x7f, 0xfa,
-0x66, 0x8e, 0xc5, 0x2f, 0x7b, 0x0f, 0x10, 0xc9,
-0xe7, 0x5c, 0xec, 0x13, 0x04, 0x42, 0x05, 0xc7,
-0xbb, 0xcf, 0xc5, 0xa6, 0x19, 0xd1, 0x7b, 0xff,
-0x6b, 0xc5, 0xcd, 0x04, 0x84, 0xde, 0x4d, 0xaf,
-0x67, 0x9d, 0x55, 0xff, 0x5e, 0xd1, 0xe2, 0xa4,
-0xec, 0xcf, 0x59, 0x2d, 0xb8, 0xa8, 0x40, 0x2b,
-0x6a, 0x31, 0xce, 0xeb, 0x7e, 0xa2, 0xfd, 0x94,
-0xa7, 0xea, 0xdf, 0xed, 0xfd, 0x9f, 0x4b, 0x78,
-0x52, 0x8f, 0x70, 0x0f, 0xb4, 0x86, 0xc3, 0xd4,
-0x86, 0xb1, 0x4a, 0xe6, 0x84, 0x7f, 0xea, 0xbc,
-0x1e, 0xca, 0x73, 0xea, 0xfe, 0x30, 0x9e, 0x72,
-0x20, 0xfe, 0x49, 0xeb, 0x9f, 0x56, 0x28, 0x16,
-0xcf, 0x6a, 0x9f, 0x59, 0xc4, 0x97, 0x79, 0x4e,
-0xc4, 0x08, 0xff, 0x38, 0x08, 0xff, 0x3c, 0xeb,
-0x2f, 0x45, 0xfc, 0x43, 0xf5, 0xef, 0xac, 0xd4,
-0x28, 0x59, 0xc6, 0x8e, 0xa7, 0xf7, 0x43, 0x89,
-0xd2, 0x05, 0x3f, 0x2c, 0x2c, 0x6b, 0xed, 0x19,
-0x86, 0x73, 0xf0, 0x42, 0x79, 0xe5, 0x22, 0xfe,
-0x39, 0x47, 0x8d, 0x78, 0x01, 0x4a, 0xef, 0xf0,
-0x0e, 0xb3, 0x5a, 0x58, 0x53, 0x58, 0xda, 0xe4,
-0x18, 0xc6, 0x1d, 0x35, 0x7d, 0x7d, 0x4c, 0x79,
-0x02, 0x7f, 0xd6, 0x3e, 0x43, 0x99, 0xca, 0x5e,
-0x2d, 0x2f, 0xd8, 0xba, 0x83, 0xf0, 0xad, 0x3b,
-0xe4, 0xdc, 0xaa, 0x22, 0x10, 0x32, 0x7a, 0x57,
-0x39, 0xa3, 0xd7, 0x8f, 0xa6, 0xfb, 0x1f, 0x9e,
-0xd1, 0x76, 0xc2, 0x7b, 0xd4, 0xe4, 0xf9, 0xd1,
-0xb2, 0x11, 0x71, 0x9e, 0x05, 0x17, 0xa5, 0xda,
-0x3e, 0x53, 0xfe, 0x6b, 0x4b, 0xea, 0x0e, 0xab,
-0x70, 0x3f, 0x7c, 0x94, 0xc5, 0xff, 0x99, 0x6c,
-0xaf, 0x56, 0x36, 0xf4, 0x37, 0xa3, 0x1a, 0xcf,
-0xdb, 0x03, 0x4b, 0x5f, 0x41, 0x6d, 0x3c, 0x04,
-0x0b, 0x4b, 0x9c, 0xfd, 0x54, 0x08, 0x0f, 0xd5,
-0x85, 0x4e, 0x53, 0x1e, 0x48, 0xd7, 0x7f, 0x81,
-0xe2, 0xd5, 0x0e, 0x9b, 0x9e, 0x38, 0xdf, 0xc5,
-0x46, 0xf5, 0xe7, 0x07, 0x3d, 0x51, 0x04, 0x42,
-0x5e, 0x58, 0x6f, 0x78, 0xe2, 0xf9, 0x24, 0x9c,
-0x91, 0x3c, 0x82, 0x27, 0x9b, 0x12, 0x99, 0xfd,
-0xb9, 0xc6, 0x80, 0x9e, 0x44, 0x0c, 0x95, 0xf2,
-0xe6, 0x01, 0x88, 0x0f, 0xeb, 0x6e, 0xd5, 0xb9,
-0x1e, 0x20, 0xd2, 0xea, 0x03, 0xbe, 0x01, 0x17,
-0x36, 0x06, 0xba, 0x34, 0x8f, 0xf0, 0xcf, 0xf4,
-0xfd, 0x4b, 0xa5, 0x06, 0xcb, 0x7f, 0xa9, 0xa0,
-0xaf, 0xf5, 0x25, 0x02, 0x42, 0xe3, 0x2c, 0x88,
-0xfa, 0xea, 0x33, 0xc3, 0x94, 0x21, 0x82, 0x27,
-0x61, 0x9b, 0x99, 0xb7, 0xaa, 0xc9, 0x6c, 0x99,
-0x7e, 0x1c, 0x6f, 0x89, 0x1b, 0x46, 0x44, 0xb5,
-0x5e, 0x40, 0xf8, 0x67, 0xaf, 0x58, 0xa0, 0x77,
-0xb7, 0x4a, 0x6e, 0xf6, 0x2a, 0xe2, 0x9f, 0x25,
-0xad, 0xea, 0x55, 0xca, 0x6f, 0xc5, 0xee, 0x64,
-0xfe, 0x0a, 0x79, 0xc0, 0x93, 0xde, 0x9f, 0x79,
-0x1b, 0xac, 0xfe, 0xcf, 0xf9, 0x54, 0xed, 0x8e,
-0x8e, 0x6d, 0xff, 0xa6, 0x54, 0x1b, 0xb1, 0xda,
-0x54, 0xfd, 0xfb, 0x28, 0xf8, 0x20, 0x37, 0x6a,
-0x7b, 0xdf, 0x50, 0x7e, 0xdc, 0xf8, 0x5d, 0xd7,
-0x8d, 0x23, 0xce, 0x09, 0xf9, 0x02, 0xc2, 0x9e,
-0xc6, 0x90, 0x73, 0xa2, 0xa8, 0x17, 0x5e, 0xa3,
-0xb2, 0x9d, 0x09, 0x5c, 0xc6, 0xc4, 0x66, 0xb4,
-0x5f, 0x09, 0x79, 0x38, 0xfd, 0xfc, 0x3d, 0xd2,
-0x8b, 0x62, 0x10, 0x62, 0xe5, 0xad, 0xa9, 0x6c,
-0xfb, 0x4d, 0x5d, 0xbc, 0x95, 0x35, 0xb0, 0x07,
-0xa8, 0xcc, 0xdf, 0x20, 0x47, 0xac, 0xe7, 0x86,
-0xc3, 0x14, 0xff, 0xf9, 0x7e, 0xfa, 0x7b, 0x84,
-0xe8, 0xa2, 0x7d, 0x30, 0x9f, 0xea, 0x55, 0x27,
-0xf5, 0x27, 0x79, 0xa5, 0x81, 0x8a, 0x2b, 0xaa,
-0xaf, 0xd5, 0x08, 0xef, 0x85, 0xcf, 0xc1, 0x26,
-0x7f, 0x99, 0x59, 0xb2, 0x82, 0x65, 0xf8, 0xc6,
-0x46, 0xf1, 0x90, 0xc0, 0x6f, 0x78, 0x0e, 0x17,
-0x6c, 0x00, 0xff, 0xb1, 0x57, 0xf0, 0x0d, 0xe8,
-0xd8, 0x46, 0x24, 0x1f, 0x53, 0xb9, 0x3b, 0x41,
-0x9f, 0xb7, 0x86, 0x1f, 0xe6, 0xc9, 0x4c, 0x7d,
-0x5f, 0xce, 0x2e, 0x4a, 0xea, 0x81, 0x2f, 0x82,
-0xda, 0xa3, 0x47, 0x14, 0x84, 0x7d, 0x1b, 0xe4,
-0x9f, 0x5a, 0x15, 0x07, 0x9b, 0x22, 0xf8, 0xbe,
-0x89, 0x68, 0x40, 0xb1, 0xf2, 0x9b, 0xd3, 0xbf,
-0x57, 0x4c, 0x4b, 0x2a, 0xef, 0x93, 0x7e, 0xde,
-0x2d, 0x8f, 0x29, 0xef, 0x33, 0xdc, 0x48, 0xbb,
-0x3b, 0x4f, 0x13, 0x10, 0xa2, 0xf5, 0x79, 0x57,
-0xbb, 0xa8, 0x58, 0xa5, 0x61, 0x76, 0xfe, 0xf3,
-0x24, 0x0c, 0x4a, 0x7f, 0x0f, 0xf9, 0x66, 0x5e,
-0x0d, 0x0c, 0xe5, 0x36, 0x0a, 0x97, 0xc9, 0xee,
-0x37, 0x2e, 0xa1, 0x46, 0x9c, 0x61, 0xca, 0x97,
-0x8c, 0xcb, 0x52, 0xb5, 0xe9, 0x4a, 0xaa, 0x3c,
-0xdd, 0xff, 0xa7, 0x5f, 0xf9, 0xd2, 0x3d, 0x8f,
-0x81, 0xd5, 0x64, 0xc6, 0xab, 0x74, 0x2b, 0x55,
-0xcb, 0xd5, 0xb8, 0x7c, 0x0f, 0xd5, 0x9f, 0x9a,
-0x8b, 0x89, 0xc6, 0x4c, 0x15, 0xf1, 0x88, 0x58,
-0xea, 0x8c, 0xe9, 0xdf, 0x4b, 0xe4, 0x50, 0x98,
-0xeb, 0x1e, 0x13, 0xd5, 0x4e, 0x84, 0x1a, 0xd7,
-0xf4, 0xab, 0x71, 0xcf, 0x2e, 0x52, 0x5c, 0xa6,
-0x85, 0xa0, 0xe2, 0x92, 0x47, 0x52, 0xb3, 0xf8,
-0x3f, 0xf8, 0x4f, 0xa2, 0xf0, 0xb6, 0x86, 0x9f,
-0x6b, 0x17, 0xee, 0x2e, 0x5c, 0x76, 0x21, 0x4c,
-0xe8, 0xc5, 0xe7, 0x5d, 0x0c, 0xee, 0x41, 0x6d,
-0x0f, 0xa7, 0xd2, 0x39, 0x37, 0xcb, 0x81, 0xf4,
-0xdf, 0x4a, 0xfe, 0x32, 0xdb, 0x7e, 0x32, 0x9f,
-0xac, 0x09, 0xd1, 0x9c, 0x36, 0x59, 0xc0, 0xcf,
-0x6a, 0xab, 0x42, 0x8d, 0x80, 0x74, 0xf7, 0x15,
-0xfc, 0x9f, 0x99, 0x49, 0x63, 0x8c, 0xfa, 0xf3,
-0x13, 0x24, 0x3a, 0x05, 0xdf, 0xa5, 0x7c, 0xf1,
-0x2a, 0xaa, 0x7f, 0x77, 0xe0, 0x91, 0x61, 0xe5,
-0xdc, 0x14, 0xfe, 0xb1, 0xd5, 0x7f, 0x5d, 0x82,
-0x4f, 0xbc, 0xd5, 0xaf, 0xe4, 0x9f, 0x97, 0xef,
-0x87, 0x21, 0xbe, 0x60, 0xe4, 0xf6, 0xb3, 0xf2,
-0x65, 0xb8, 0xac, 0xd7, 0x27, 0x9d, 0x3b, 0xf0,
-0xc8, 0xcf, 0xa1, 0xec, 0x35, 0x34, 0x85, 0xfe,
-0x0c, 0xff, 0xbc, 0xe4, 0x43, 0x65, 0x7f, 0x8b,
-0x27, 0xa1, 0x06, 0xd0, 0xfa, 0x70, 0x02, 0x42,
-0x7f, 0x60, 0x3e, 0xf1, 0x92, 0xe9, 0xb9, 0xdb,
-0xf1, 0x63, 0xb4, 0xf8, 0xdd, 0xf7, 0x7a, 0x86,
-0xd5, 0x89, 0xec, 0xf8, 0x4f, 0x21, 0xba, 0x15,
-0x09, 0x34, 0xe2, 0x43, 0x6c, 0x3d, 0x0f, 0x25,
-0x1c, 0xb5, 0x6c, 0x89, 0xd8, 0xa3, 0x79, 0xcd,
-0xf5, 0xb9, 0xec, 0x36, 0xe8, 0xf4, 0xea, 0xaf,
-0xe1, 0x29, 0x96, 0xa9, 0xff, 0xca, 0xd9, 0xc5,
-0xf7, 0x8b, 0x8a, 0x41, 0x8b, 0x46, 0xc5, 0x85,
-0xf5, 0x43, 0x50, 0x22, 0xcc, 0x93, 0x74, 0xc4,
-0xd8, 0x2e, 0xd6, 0xad, 0x50, 0x3f, 0x49, 0x96,
-0xc1, 0x63, 0x14, 0xff, 0x39, 0x6f, 0xf6, 0x9a,
-0xb7, 0xc5, 0xe5, 0x95, 0x4a, 0x22, 0xb1, 0x79,
-0x24, 0x85, 0x87, 0xa1, 0x3e, 0x99, 0x1b, 0x6b,
-0x6e, 0x51, 0x16, 0x43, 0xaf, 0xf9, 0x67, 0x71,
-0x15, 0x16, 0x4d, 0xff, 0xbe, 0x31, 0x89, 0xc6,
-0x5e, 0x7c, 0xaa, 0x7f, 0xc6, 0x38, 0xde, 0xff,
-0x13, 0x86, 0x9f, 0xc9, 0xaa, 0xa2, 0x49, 0xf8,
-0x18, 0xf1, 0xcf, 0xcf, 0x92, 0xf8, 0xbe, 0x97,
-0xc1, 0x1a, 0xf4, 0x60, 0xc7, 0x3f, 0xbb, 0x60,
-0x62, 0x95, 0xb5, 0xbb, 0x9c, 0xd2, 0xfb, 0xc2,
-0xca, 0x36, 0xa2, 0xc5, 0xcf, 0x0d, 0xbc, 0xed,
-0xdc, 0x29, 0xfb, 0x94, 0x23, 0xbc, 0xd7, 0x74,
-0xfa, 0xd5, 0xe9, 0xb7, 0xa5, 0xf8, 0x8f, 0x8f,
-0xd8, 0x1a, 0xa6, 0x1c, 0xc7, 0xcf, 0xaa, 0x53,
-0x6c, 0x37, 0x9d, 0xf4, 0x1f, 0x7a, 0x6b, 0x9b,
-0x9e, 0xcc, 0x8f, 0xe1, 0x8b, 0xfc, 0x93, 0x59,
-0x36, 0x8a, 0x5f, 0x50, 0x20, 0x7d, 0xbd, 0xa9,
-0x2c, 0x81, 0xfd, 0xa6, 0x0f, 0x64, 0x42, 0x3b,
-0x02, 0x56, 0x9a, 0x0e, 0x7f, 0xd3, 0x10, 0x74,
-0x0a, 0xef, 0x2f, 0x9e, 0x8e, 0xb3, 0x02, 0x7d,
-0x87, 0x11, 0x4a, 0x22, 0xde, 0xab, 0x53, 0xd2,
-0xf1, 0x1f, 0xed, 0x8b, 0xf0, 0x6c, 0x8a, 0xfd,
-0x3b, 0x1b, 0x36, 0x46, 0x29, 0x30, 0x02, 0x84,
-0x7f, 0xf2, 0x42, 0xea, 0x19, 0xc7, 0x6c, 0x7d,
-0x5f, 0x47, 0x69, 0x32, 0xbb, 0xfe, 0x9d, 0x2f,
-0x31, 0xe2, 0x46, 0xc3, 0xb0, 0x7a, 0xa3, 0xec,
-0x34, 0xc2, 0xd0, 0xd0, 0xef, 0xf0, 0x4b, 0x63,
-0xc6, 0xcb, 0x50, 0x97, 0x74, 0x5c, 0x2d, 0x3b,
-0xb5, 0x1d, 0xdc, 0x3f, 0x58, 0xe0, 0xb7, 0xe7,
-0xbf, 0x72, 0x52, 0x63, 0x41, 0xfe, 0x7a, 0x7c,
-0xf1, 0x27, 0xca, 0x3f, 0x41, 0x35, 0x3e, 0x3f,
-0x15, 0x82, 0x69, 0xcf, 0x9a, 0x1b, 0xfd, 0x65,
-0xa7, 0xe0, 0x2d, 0x3c, 0x95, 0x17, 0xb7, 0xf5,
-0xff, 0x21, 0xfc, 0x83, 0x68, 0x87, 0xf4, 0xd5,
-0x07, 0xca, 0x04, 0x6e, 0x4b, 0xc7, 0xf3, 0xdd,
-0x3e, 0xe5, 0xe2, 0xf6, 0x7a, 0x03, 0x7f, 0x91,
-0xf2, 0xd4, 0x46, 0x7d, 0xce, 0x5e, 0xff, 0xf5,
-0xe9, 0xc7, 0x61, 0x8f, 0x62, 0xc5, 0x7f, 0xee,
-0x12, 0xbb, 0xa7, 0x12, 0x61, 0xf0, 0x4e, 0x61,
-0x29, 0x38, 0x49, 0xd8, 0x77, 0x77, 0xe9, 0xf0,
-0xe2, 0x7b, 0xc3, 0xbd, 0x99, 0x7e, 0xf2, 0xc4,
-0xff, 0x11, 0x5e, 0x7c, 0x4d, 0xcf, 0x9b, 0xe6,
-0x73, 0x0f, 0xcc, 0x49, 0x3a, 0x6e, 0x74, 0x7f,
-0x11, 0xf6, 0xc5, 0x69, 0xfe, 0x05, 0xbb, 0x4e,
-0x7a, 0x38, 0x36, 0xe7, 0xf4, 0x35, 0x75, 0xb6,
-0xfe, 0x1b, 0x2b, 0x94, 0x21, 0xd8, 0x53, 0xa2,
-0x7f, 0x54, 0x11, 0x67, 0x4b, 0xe0, 0xc0, 0x40,
-0x79, 0xc8, 0x4a, 0x84, 0xed, 0x00, 0xdf, 0xbb,
-0x79, 0x0d, 0xe1, 0x02, 0xfc, 0xec, 0x7f, 0x4c,
-0xf5, 0x2c, 0x9b, 0x33, 0xf3, 0x32, 0x66, 0x8e,
-0xc2, 0x25, 0xf3, 0xa6, 0x54, 0xfc, 0xe7, 0xd2,
-0x70, 0x2d, 0xf5, 0x7f, 0x5e, 0x01, 0x17, 0x58,
-0x63, 0x2c, 0xff, 0xdd, 0x66, 0xaf, 0x72, 0x41,
-0x22, 0x0f, 0x94, 0xd9, 0xea, 0xbf, 0x24, 0x1d,
-0x41, 0x4e, 0x83, 0xc2, 0x45, 0x73, 0x52, 0x9b,
-0xd0, 0xea, 0x15, 0x8b, 0xf6, 0x3c, 0x01, 0x6e,
-0xad, 0x20, 0x85, 0x88, 0xea, 0xaf, 0x8c, 0xff,
-0x90, 0x35, 0xac, 0x32, 0x72, 0x2c, 0x7f, 0x1f,
-0xee, 0xb5, 0xf2, 0x23, 0x0a, 0xf1, 0x61, 0x9c,
-0xda, 0x8c, 0xeb, 0xe1, 0x5b, 0xf0, 0xa7, 0xfd,
-0x9f, 0x39, 0xb1, 0x7d, 0xa8, 0xed, 0xb0, 0xb4,
-0xdf, 0xaa, 0x0e, 0xa3, 0xfe, 0xcf, 0x8a, 0x6f,
-0xc9, 0xa6, 0x68, 0xf3, 0xbb, 0xb0, 0xdf, 0xea,
-0x48, 0x2c, 0x67, 0xfa, 0x3f, 0xd3, 0xfc, 0x0b,
-0xea, 0xd7, 0x77, 0x4d, 0x6a, 0x5e, 0x83, 0x4e,
-0x89, 0x9b, 0x9d, 0x39, 0xfb, 0xf5, 0xaf, 0x19,
-0xab, 0xe3, 0xee, 0xf2, 0x39, 0xbb, 0xe7, 0xbd,
-0x1d, 0x2a, 0x89, 0xba, 0x73, 0xd3, 0xf5, 0xa7,
-0xde, 0x62, 0x84, 0x3d, 0x5e, 0x5f, 0x9b, 0x83,
-0xe2, 0x3f, 0xbb, 0xbd, 0x2b, 0x8c, 0x3c, 0x77,
-0x78, 0x10, 0x8f, 0x54, 0x19, 0x9f, 0x76, 0x0f,
-0x74, 0x6d, 0xdb, 0xed, 0x0d, 0x51, 0x20, 0x28,
-0xbb, 0xff, 0xe1, 0x85, 0xd2, 0x20, 0x5f, 0x8a,
-0x68, 0x47, 0xd4, 0x79, 0x3c, 0x90, 0x1f, 0x96,
-0xf0, 0x7d, 0xf5, 0x2a, 0xc9, 0xcb, 0xdc, 0xba,
-0x98, 0xf0, 0x04, 0xb8, 0x33, 0x2c, 0xcd, 0xce,
-0xc4, 0x7f, 0x0a, 0x47, 0x80, 0xd8, 0xce, 0xf9,
-0x9b, 0x3b, 0x47, 0xb4, 0xcb, 0x54, 0xff, 0xb5,
-0xf9, 0x9d, 0x91, 0xd8, 0x79, 0xe5, 0xe6, 0x7e,
-0xd7, 0xf1, 0x97, 0xcf, 0xc1, 0x7e, 0xaf, 0xd5,
-0x1a, 0xfa, 0x2b, 0x72, 0x26, 0xdf, 0x44, 0x4d,
-0x11, 0xeb, 0x6f, 0xb1, 0xe2, 0x3f, 0xaf, 0x69,
-0x56, 0xa0, 0x6c, 0xb9, 0xf1, 0x89, 0x8e, 0x1e,
-0xeb, 0xc3, 0x72, 0x8d, 0xf6, 0x89, 0x52, 0x4d,
-0xf5, 0xef, 0x59, 0xfd, 0x7f, 0xa0, 0x8f, 0x48,
-0x3e, 0x6c, 0xbd, 0x0e, 0xde, 0xd2, 0x00, 0x53,
-0x09, 0xff, 0x50, 0xfd, 0x97, 0x43, 0x96, 0xee,
-0x86, 0x3e, 0xc9, 0xa3, 0xa0, 0xbe, 0x2d, 0x48,
-0xaf, 0x4f, 0x2b, 0x1a, 0xb9, 0xdd, 0x85, 0x5e,
-0xa3, 0xcd, 0xed, 0x6e, 0xe1, 0x85, 0xba, 0xde,
-0xba, 0xb8, 0xf0, 0xea, 0x16, 0x65, 0xb7, 0xe6,
-0x33, 0x3a, 0xdd, 0x4c, 0x69, 0xdf, 0xad, 0x85,
-0xa8, 0xfe, 0x7d, 0x99, 0x34, 0xfd, 0xfc, 0x25,
-0xc5, 0x3b, 0x95, 0xdd, 0xd4, 0x0d, 0x49, 0x63,
-0xcb, 0xb5, 0x79, 0xf0, 0x40, 0xab, 0x9a, 0x5a,
-0xd8, 0x02, 0x93, 0x47, 0xef, 0x59, 0x6e, 0xec,
-0x07, 0x46, 0x85, 0xf0, 0x73, 0xb3, 0xe2, 0x3f,
-0xe7, 0x79, 0xfd, 0xea, 0x02, 0xc2, 0xb7, 0x53,
-0xf9, 0x2f, 0x02, 0xa2, 0xc1, 0xe5, 0x9b, 0x1e,
-0xea, 0x2c, 0x87, 0xb3, 0xd2, 0x66, 0x63, 0x69,
-0xd4, 0xd6, 0xff, 0x39, 0x61, 0xc5, 0x7f, 0x6a,
-0x69, 0x28, 0x46, 0x17, 0x3f, 0xaf, 0xd7, 0x87,
-0x5c, 0xe9, 0xb6, 0x3f, 0x25, 0xd4, 0x11, 0x31,
-0x8f, 0x12, 0x61, 0x6a, 0xd6, 0xfc, 0x0b, 0x8a,
-0x0f, 0x68, 0x34, 0xed, 0xc2, 0xea, 0xbf, 0xe4,
-0x04, 0xb4, 0x6e, 0xa3, 0x50, 0x4b, 0x13, 0x58,
-0x62, 0x61, 0xea, 0x90, 0xe3, 0x04, 0x29, 0x53,
-0xff, 0xee, 0xcd, 0xf1, 0xf2, 0x17, 0x9b, 0xaa,
-0x44, 0x24, 0xe6, 0x41, 0xd8, 0x03, 0x6f, 0x0b,
-0x4e, 0xb4, 0xe7, 0xe7, 0x59, 0xe9, 0x76, 0x15,
-0x61, 0x3c, 0x1c, 0x35, 0xaa, 0x3a, 0xac, 0xfa,
-0xf7, 0xf4, 0x7e, 0x40, 0xfb, 0xb5, 0x63, 0x15,
-0x75, 0x87, 0xf0, 0x38, 0x9d, 0xdd, 0x6e, 0xab,
-0x4d, 0xd6, 0x90, 0xb4, 0x43, 0xf8, 0xe8, 0x33,
-0x79, 0x0d, 0x3a, 0x4f, 0x58, 0xa3, 0x0a, 0x0e,
-0x4f, 0x6f, 0x07, 0x10, 0x85, 0x56, 0xb7, 0x9f,
-0x84, 0xf7, 0x5e, 0xea, 0x07, 0xa8, 0xcc, 0x1b,
-0x6d, 0x25, 0x20, 0xf4, 0x6c, 0x64, 0x9e, 0xa9,
-0xde, 0x9b, 0xeb, 0x52, 0x72, 0x52, 0x8d, 0x80,
-0x12, 0xd3, 0xb7, 0x87, 0x08, 0x9f, 0x0d, 0xbf,
-0xed, 0x68, 0x1c, 0x73, 0xa6, 0xda, 0x3e, 0x7f,
-0x66, 0x92, 0xdf, 0x27, 0xbf, 0x29, 0x4e, 0x8b,
-0x9b, 0x43, 0xae, 0x7f, 0x90, 0xdf, 0x84, 0x57,
-0xa9, 0x3e, 0x6b, 0xb5, 0x7c, 0xb8, 0x76, 0xfa,
-0x7a, 0x8e, 0xfe, 0xef, 0x45, 0x98, 0x3d, 0xe8,
-0xda, 0xd7, 0x3d, 0x96, 0xfb, 0x4b, 0xa8, 0x1d,
-0x9e, 0xbf, 0x97, 0x65, 0xe1, 0x9f, 0x2a, 0xe3,
-0x33, 0xf1, 0xe6, 0x81, 0x07, 0xa6, 0xdf, 0x17,
-0xfd, 0x5f, 0xe3, 0x72, 0x34, 0xc5, 0xff, 0xd1,
-0x8e, 0xc5, 0x50, 0x9f, 0x1f, 0xdc, 0xf1, 0xa2,
-0xfe, 0x49, 0x8a, 0x11, 0x74, 0x49, 0x43, 0x44,
-0x94, 0x54, 0x27, 0xca, 0x6c, 0xf5, 0xef, 0x25,
-0x3f, 0x12, 0xcf, 0x19, 0xa5, 0x94, 0xbf, 0x98,
-0x05, 0x6b, 0x88, 0xb6, 0x7d, 0x1f, 0x0a, 0xcf,
-0x22, 0x6c, 0xcb, 0xbf, 0x77, 0xd9, 0x29, 0xef,
-0x5e, 0x02, 0x36, 0xdf, 0x66, 0x15, 0x99, 0xf9,
-0x17, 0xf0, 0xf8, 0xa2, 0xdd, 0x92, 0xa5, 0xaf,
-0x9c, 0xb0, 0x56, 0xaf, 0x1c, 0x50, 0xef, 0x65,
-0x8f, 0xd3, 0x04, 0x9f, 0x96, 0xbc, 0x55, 0xc6,
-0x09, 0xe3, 0x59, 0x0a, 0x7c, 0x55, 0x7b, 0x74,
-0xdb, 0xfc, 0x8b, 0x0d, 0xca, 0x1e, 0xd0, 0xcf,
-0x95, 0x90, 0x3e, 0xef, 0x28, 0xf1, 0x25, 0x55,
-0xca, 0x5f, 0xec, 0xa6, 0x0f, 0xb3, 0x3e, 0x37,
-0x81, 0x60, 0xd6, 0x47, 0xf1, 0x8d, 0x92, 0x2c,
-0xfe, 0xcf, 0x45, 0x63, 0xcf, 0x88, 0x73, 0x9c,
-0xc2, 0x1a, 0x03, 0x8d, 0xfd, 0xd4, 0xb8, 0x18,
-0xaf, 0xf7, 0x8f, 0xe7, 0x8d, 0xa7, 0x1b, 0x1f,
-0x7d, 0xc6, 0x91, 0x33, 0xfd, 0x3c, 0x02, 0xc6,
-0x38, 0x1d, 0x9c, 0x1f, 0x97, 0x87, 0xd8, 0xc5,
-0x54, 0x36, 0x70, 0x4c, 0x3a, 0x2f, 0x7d, 0x67,
-0xc2, 0xb5, 0x9b, 0x1a, 0x05, 0x4c, 0xf7, 0xff,
-0x99, 0xbe, 0xbe, 0x14, 0xf1, 0xcf, 0x65, 0x6f,
-0xb5, 0x79, 0x3b, 0xdd, 0xf6, 0x58, 0x6a, 0xda,
-0xc5, 0xfd, 0x70, 0xbe, 0xab, 0xda, 0x58, 0x32,
-0x3e, 0xe3, 0x2d, 0x38, 0x0a, 0xdf, 0x45, 0x0b,
-0x28, 0x43, 0x1a, 0xaf, 0x6e, 0x53, 0x56, 0x3a,
-0xf7, 0x58, 0xb4, 0x5b, 0x5c, 0xf6, 0xce, 0xe8,
-0xd3, 0x29, 0xda, 0xcf, 0x7e, 0xa8, 0x88, 0x3b,
-0xe2, 0xcd, 0x1f, 0x6a, 0x11, 0x1a, 0x74, 0x85,
-0xf6, 0x77, 0xfa, 0x73, 0xb1, 0xf8, 0x3f, 0x07,
-0x14, 0x0b, 0xed, 0x8c, 0xb1, 0x14, 0x4d, 0xa8,
-0x69, 0xa5, 0xb4, 0x5f, 0xf7, 0x24, 0xff, 0x32,
-0xee, 0xfe, 0x00, 0x0e, 0x98, 0x55, 0x83, 0x08,
-0x9c, 0xf4, 0xf4, 0xf7, 0xc5, 0x8b, 0x9d, 0xe2,
-0x80, 0xa4, 0x13, 0xc9, 0x79, 0x48, 0xe9, 0xb6,
-0x1a, 0x05, 0xb8, 0x69, 0x7d, 0x2a, 0x4c, 0xc7,
-0x02, 0xd6, 0xc5, 0xa2, 0xe0, 0xc4, 0x23, 0xeb,
-0xb3, 0xf9, 0xcf, 0x17, 0x61, 0x81, 0x59, 0x30,
-0xde, 0x4c, 0xd5, 0xd6, 0x65, 0xd4, 0xb8, 0x78,
-0x25, 0x39, 0x92, 0x83, 0x05, 0xe3, 0x88, 0xc7,
-0xde, 0x80, 0x2a, 0x8a, 0x48, 0x40, 0x26, 0x3e,
-0x39, 0x73, 0x32, 0x45, 0x52, 0xfd, 0x88, 0xfc,
-0x77, 0xa9, 0xd1, 0x5c, 0x7a, 0x96, 0xf8, 0x2d,
-0x70, 0x73, 0x87, 0xeb, 0xa3, 0xe6, 0x71, 0x65,
-0xcc, 0xf2, 0xe8, 0xbf, 0x94, 0xc1, 0x3f, 0x40,
-0x38, 0xcc, 0xaa, 0x83, 0xd5, 0xfe, 0x15, 0x01,
-0xec, 0x7f, 0x0a, 0xe0, 0xd3, 0x19, 0xa0, 0xfd,
-0x6b, 0x82, 0xfd, 0x8f, 0x38, 0xad, 0xdc, 0x40,
-0x0f, 0xf1, 0x5f, 0x11, 0xfe, 0x77, 0xee, 0x3f,
-0x35, 0xe5, 0xe0, 0x5f, 0x15, 0x6c, 0x7f, 0xff,
-0xfa, 0x85, 0x29, 0xe1, 0x7f, 0xe7, 0xfe, 0xff,
-0xde, 0xbf, 0xff, 0x60, 0xeb, 0xaf, 0xd1, 0x2c,
-0xbf, 0x21, 0xf8, 0x7b, 0x98, 0x65, 0xfe, 0x2b,
-0x82, 0xf2, 0x7f, 0xfb, 0xfe, 0xff, 0x0f, 0xaf,
-0xbf, 0xa2, 0x89, 0x7f, 0xc3, 0x9a, 0x4b, 0x69,
-0x7d, 0xf5, 0xef, 0xfd, 0x6b, 0x68, 0xf8, 0xb7,
-0x5c, 0xe5, 0x72, 0xfd, 0xdf, 0xbc, 0xfd, 0xff,
-0x07, 0xfe, 0x1a, 0x2f, 0x5f, 0xbe, 0x6c, 0xfe,
-0x2f, 0x84, 0xff, 0x37, 0x5f, 0xff, 0x1f, 0xec,
-0x7b, 0xfc, 0x4f, 0x7d, 0xf8, 0x9f, 0xfa, 0xf0,
-0x7f, 0x63, 0xfd, 0xff, 0x53, 0x1f, 0xfe, 0xaf,
-0xfe, 0xfe, 0xa3, 0xe9, 0x9f, 0xff, 0x58, 0xd7,
-0x9b, 0x33, 0x27, 0xe1, 0x77, 0x8a, 0x15, 0x06,
-0x69, 0x30, 0xd2, 0xf8, 0xf9, 0x18, 0x31, 0x8e,
-0x56, 0xc9, 0x0d, 0xda, 0x11, 0x8a, 0x90, 0x98,
-0xf6, 0xfc, 0x60, 0xc9, 0x87, 0xd0, 0x2d, 0x3c,
-0x49, 0xde, 0xc7, 0xca, 0xc5, 0x3a, 0x4a, 0xc4,
-0x47, 0xd8, 0xdb, 0x0c, 0x61, 0x73, 0xb3, 0x23,
-0xe2, 0xf0, 0xc0, 0xba, 0x70, 0xad, 0xee, 0x10,
-0x56, 0xa3, 0xd5, 0xd4, 0x1f, 0x87, 0x5d, 0xf8,
-0x4d, 0x87, 0x24, 0x9e, 0xca, 0xf7, 0xe9, 0xb0,
-0x58, 0x67, 0x86, 0x26, 0x14, 0xa7, 0x98, 0xda,
-0xd0, 0xbb, 0x24, 0x14, 0x1c, 0xd2, 0xf4, 0xf5,
-0x66, 0xce, 0x18, 0xac, 0xe3, 0x1e, 0xe0, 0xbb,
-0xa9, 0x1b, 0x4c, 0xc9, 0x76, 0x1a, 0xfb, 0x98,
-0x0c, 0x45, 0x8a, 0x7d, 0x26, 0xa3, 0x30, 0xe3,
-0x3a, 0xc3, 0xaa, 0x37, 0xec, 0x4b, 0xe3, 0x5b,
-0x09, 0xb6, 0xc3, 0xfb, 0x46, 0x6f, 0xd2, 0x77,
-0x50, 0xad, 0x60, 0x87, 0xcd, 0x40, 0xcf, 0xe2,
-0x70, 0xd9, 0x97, 0x20, 0x91, 0x08, 0x6a, 0xce,
-0xc7, 0xcb, 0xe6, 0x8b, 0xc3, 0x50, 0x57, 0xbc,
-0x61, 0x83, 0x8d, 0xff, 0xb6, 0x4d, 0xdb, 0xdc,
-0xfa, 0x47, 0x08, 0x8e, 0xb8, 0x56, 0x49, 0x03,
-0x30, 0xd1, 0xd1, 0xb8, 0xd3, 0x35, 0x24, 0x5b,
-0x42, 0xab, 0xeb, 0xf5, 0xea, 0x37, 0xc5, 0xe5,
-0x27, 0xbe, 0x0b, 0x78, 0xc4, 0x1e, 0x1f, 0xdb,
-0x29, 0x1d, 0x31, 0xfc, 0x4b, 0x9c, 0xbb, 0x67,
-0xf8, 0xd8, 0xe1, 0xf6, 0x5e, 0xd8, 0xb8, 0x5d,
-0xbe, 0xbb, 0x29, 0x61, 0xf4, 0x8a, 0x25, 0x6e,
-0x75, 0xbe, 0x38, 0x73, 0x67, 0xb0, 0xb8, 0xaa,
-0x2b, 0xab, 0x3f, 0x64, 0x79, 0x5e, 0xf7, 0x71,
-0x8f, 0xc1, 0xfb, 0x66, 0x2c, 0x07, 0x21, 0x3c,
-0xdc, 0xb7, 0x8b, 0xf8, 0x1b, 0x91, 0x6f, 0x26,
-0xf9, 0x16, 0x47, 0x25, 0x74, 0x8a, 0x82, 0x1a,
-0x2e, 0xb2, 0xf9, 0x51, 0x3c, 0xcc, 0xca, 0x93,
-0xad, 0x9c, 0x6d, 0xc0, 0xb3, 0x7a, 0x92, 0x97,
-0xb8, 0x6f, 0x57, 0x68, 0xa1, 0x2a, 0xca, 0x3d,
-0xa0, 0x08, 0xf0, 0x11, 0x9f, 0xd0, 0xce, 0x0f,
-0x2f, 0x58, 0x14, 0x16, 0x73, 0x46, 0x79, 0x2b,
-0x23, 0xe2, 0x90, 0xfe, 0x41, 0xc9, 0x5f, 0xb2,
-0xd9, 0x5d, 0x6b, 0x69, 0x50, 0xc8, 0xdf, 0x39,
-0x18, 0xac, 0x89, 0x39, 0x89, 0x2f, 0x94, 0x35,
-0x1f, 0xcd, 0x10, 0x7c, 0x6f, 0xcf, 0x92, 0x62,
-0xc7, 0x06, 0x78, 0x59, 0xf7, 0x0f, 0x29, 0x37,
-0xca, 0xb7, 0x8b, 0x97, 0x35, 0xfd, 0xe9, 0xdb,
-0x3d, 0x2a, 0x63, 0x66, 0xac, 0xe1, 0x64, 0xc1,
-0x5e, 0xfb, 0x7c, 0xb4, 0x6b, 0x77, 0x2d, 0x9b,
-0xd4, 0x6e, 0x12, 0xf3, 0xdb, 0xad, 0x68, 0x61,
-0xe3, 0x10, 0x2e, 0x14, 0x35, 0xd6, 0xb8, 0x79,
-0x30, 0xef, 0x6d, 0x36, 0x0e, 0x9f, 0x10, 0x75,
-0x6a, 0xc2, 0x96, 0x1f, 0xf4, 0xfe, 0x79, 0x0f,
-0xa7, 0x26, 0xd8, 0x4e, 0x72, 0xc3, 0x2f, 0x52,
-0xfc, 0x30, 0x6a, 0x11, 0xa5, 0xd0, 0x6d, 0xef,
-0x93, 0x9d, 0x70, 0xd8, 0x1a, 0x1d, 0x9b, 0x35,
-0x1f, 0x76, 0xab, 0xd6, 0xa9, 0x94, 0xf6, 0xf3,
-0x10, 0x3b, 0x09, 0x7b, 0x00, 0x85, 0xf6, 0xa6,
-0x21, 0x98, 0x41, 0x8c, 0x94, 0x55, 0x6c, 0x96,
-0x62, 0x75, 0xdc, 0x25, 0x7e, 0xf8, 0xf4, 0xf5,
-0x00, 0x0f, 0xc2, 0x23, 0x56, 0x59, 0x9c, 0xfb,
-0x4d, 0xab, 0x3e, 0xce, 0x58, 0xcd, 0xde, 0xe4,
-0x33, 0x22, 0x95, 0xdb, 0xf3, 0xea, 0xd8, 0x6c,
-0xd8, 0x2e, 0xb6, 0xd1, 0x3c, 0x14, 0x61, 0xe3,
-0x47, 0x1d, 0xd3, 0x3b, 0x3f, 0xa7, 0x9b, 0x1c,
-0xfd, 0x2f, 0xaa, 0x4f, 0x49, 0xf0, 0x00, 0x3b,
-0x26, 0x3a, 0x13, 0xbe, 0xb3, 0x79, 0x37, 0x3a,
-0x5c, 0x7c, 0xc7, 0x3d, 0xfa, 0x6f, 0xb2, 0xe7,
-0x83, 0xe4, 0x44, 0xd8, 0x1b, 0x22, 0x10, 0xf5,
-0xf6, 0xc8, 0xef, 0xc1, 0x05, 0x23, 0x2e, 0x7c,
-0xdb, 0xe5, 0xd1, 0xf0, 0x61, 0xa8, 0x12, 0xb7,
-0x3d, 0xa1, 0x56, 0x44, 0xb6, 0x1b, 0x81, 0x2e,
-0x9a, 0x0f, 0x92, 0xee, 0x2f, 0xda, 0xaa, 0x9d,
-0x36, 0x26, 0xf8, 0x41, 0xb7, 0x0b, 0x64, 0x53,
-0x4c, 0xf0, 0xa9, 0xfe, 0xd8, 0xe3, 0x10, 0x64,
-0x94, 0x1f, 0xac, 0xe8, 0xd3, 0x82, 0xd9, 0xf3,
-0xd1, 0x88, 0x1f, 0xd5, 0x0f, 0xf7, 0xb6, 0xa7,
-0xfa, 0x03, 0x18, 0xc1, 0x76, 0x67, 0x09, 0x09,
-0x4d, 0xfe, 0xe5, 0xd4, 0x48, 0x50, 0x3b, 0x54,
-0xb8, 0xea, 0xcb, 0xce, 0xec, 0xfc, 0xe0, 0x7f,
-0x9b, 0xb1, 0x4e, 0x6c, 0x5f, 0x9d, 0x1a, 0xcb,
-0x25, 0xaa, 0x8c, 0xfc, 0xc7, 0xe5, 0x16, 0xaa,
-0xcf, 0x0a, 0xf1, 0x2d, 0x44, 0x54, 0xee, 0xfc,
-0x26, 0xd5, 0xc7, 0xd9, 0xfb, 0x43, 0xd6, 0xb4,
-0x6c, 0xd4, 0xca, 0x0c, 0x7e, 0x3c, 0xb7, 0x46,
-0x22, 0x62, 0x4f, 0xde, 0x2f, 0xc2, 0xdf, 0x80,
-0x8d, 0x14, 0x78, 0x1c, 0xdf, 0xfc, 0x7b, 0x65,
-0xa3, 0x84, 0xa7, 0x86, 0xb3, 0xfa, 0x43, 0xce,
-0xb2, 0xe6, 0xa3, 0x79, 0x97, 0xad, 0x2f, 0xde,
-0x41, 0xf3, 0xd1, 0xf2, 0x50, 0xd8, 0x9e, 0x3a,
-0x12, 0x3e, 0x11, 0x5b, 0x53, 0x35, 0x87, 0xea,
-0xe3, 0x06, 0xd2, 0xd7, 0xaf, 0xe6, 0x21, 0xb1,
-0xde, 0xe3, 0xe1, 0xce, 0xd4, 0x34, 0x34, 0x6a,
-0x0b, 0xc9, 0x42, 0x5b, 0x12, 0xfa, 0xbd, 0x74,
-0x24, 0x19, 0x4e, 0xe8, 0x78, 0x6a, 0xc0, 0x96,
-0x1f, 0xdc, 0x9a, 0xbf, 0x53, 0x49, 0xb1, 0x9d,
-0xe5, 0x91, 0xd8, 0x14, 0xed, 0x99, 0xe2, 0x3f,
-0x05, 0x6d, 0x54, 0x4f, 0x51, 0x68, 0x1d, 0xb9,
-0x92, 0x1f, 0xfe, 0x9a, 0x34, 0xdf, 0x78, 0xf0,
-0x38, 0x5e, 0xff, 0x89, 0x6e, 0xf1, 0xc3, 0x6b,
-0xe0, 0x83, 0x72, 0xe2, 0x87, 0xab, 0x35, 0xf0,
-0x4a, 0xce, 0x02, 0x9a, 0x8f, 0x96, 0xdd, 0x1f,
-0x32, 0x02, 0xf5, 0x54, 0x04, 0x97, 0x14, 0x7d,
-0x9a, 0x47, 0x03, 0xc1, 0xbc, 0xad, 0x3d, 0x4a,
-0x95, 0x68, 0xed, 0x60, 0xa5, 0xd0, 0x03, 0xdb,
-0x95, 0x8a, 0xf0, 0xe6, 0x07, 0xd3, 0xeb, 0xdf,
-0x9a, 0x33, 0x68, 0x91, 0xc0, 0x1d, 0x85, 0x4d,
-0x5d, 0x7d, 0xbb, 0x41, 0x6f, 0x59, 0x47, 0x83,
-0xd2, 0x4a, 0x8b, 0x53, 0xb4, 0x31, 0x63, 0x5b,
-0xaa, 0x75, 0xa4, 0x3b, 0x33, 0x1f, 0x76, 0xe6,
-0x4e, 0xb6, 0x4e, 0xaf, 0x32, 0x70, 0xb5, 0x7f,
-0x63, 0xb5, 0xe5, 0xcc, 0xdb, 0xec, 0xc1, 0x1f,
-0x42, 0xaf, 0x6a, 0xf5, 0x6e, 0x66, 0x73, 0xf9,
-0x53, 0xed, 0x9e, 0x3b, 0x1c, 0x51, 0xf6, 0xe3,
-0xac, 0xf9, 0x20, 0x87, 0x44, 0xf0, 0xd6, 0x02,
-0x2b, 0xec, 0x09, 0xe1, 0x25, 0x95, 0x5b, 0x36,
-0x5d, 0x0f, 0xef, 0x45, 0x82, 0x86, 0x33, 0x2a,
-0xcd, 0x80, 0xf7, 0x44, 0x20, 0x84, 0xbf, 0xef,
-0x8a, 0x4c, 0x7e, 0x50, 0xea, 0xd2, 0xcf, 0x43,
-0x7d, 0x93, 0x15, 0x16, 0x3b, 0xab, 0x50, 0xb5,
-0x60, 0xd1, 0x6f, 0xa4, 0xf3, 0xe0, 0x5b, 0x94,
-0x5a, 0x28, 0x4a, 0x1d, 0x6a, 0xd9, 0xfd, 0x91,
-0x9a, 0x4e, 0x42, 0x2d, 0xe4, 0x53, 0x36, 0x36,
-0x81, 0xcb, 0xe0, 0xa2, 0xb6, 0xe4, 0x27, 0xdb,
-0x7b, 0x35, 0xa7, 0xd4, 0xa9, 0xeb, 0x27, 0x21,
-0x95, 0x3f, 0xca, 0xf4, 0x87, 0xcc, 0xa1, 0x20,
-0x58, 0x69, 0x8c, 0xda, 0x02, 0xc0, 0x7a, 0x8e,
-0xfa, 0x79, 0xc4, 0x73, 0x35, 0xcd, 0x47, 0xeb,
-0xe1, 0x49, 0xf5, 0x5b, 0xe1, 0x5b, 0xef, 0xb8,
-0x51, 0x64, 0xc7, 0xc7, 0xba, 0x72, 0x21, 0x1c,
-0x29, 0xdf, 0x9b, 0x57, 0x42, 0xf1, 0x1c, 0xf0,
-0x26, 0xd5, 0x1b, 0xdd, 0xb9, 0xed, 0x0f, 0x81,
-0x9e, 0xf4, 0xd6, 0xb1, 0x75, 0xd0, 0x69, 0xea,
-0xef, 0x71, 0xbf, 0x91, 0x89, 0x8f, 0x95, 0x42,
-0xb1, 0xb6, 0x96, 0xea, 0x73, 0xeb, 0xc2, 0xb3,
-0xdb, 0xd6, 0xc2, 0xdf, 0x34, 0xa9, 0x54, 0xe8,
-0x3a, 0x43, 0x94, 0x1a, 0x5b, 0x57, 0xe5, 0x9e,
-0x82, 0x35, 0xc6, 0x53, 0xc0, 0xff, 0xde, 0x16,
-0x1f, 0xf3, 0x46, 0x1c, 0xf0, 0x73, 0xf1, 0x7f,
-0x24, 0xf3, 0x57, 0xcf, 0x08, 0x8a, 0x97, 0xc5,
-0x3c, 0x6a, 0xec, 0x3f, 0x1b, 0xfe, 0x42, 0xf8,
-0x47, 0x9c, 0x2b, 0x8a, 0x7e, 0xc4, 0x7e, 0x2e,
-0x76, 0x5b, 0xf1, 0xb1, 0xb9, 0xe9, 0xfd, 0x59,
-0xd2, 0xc3, 0xdf, 0xa1, 0x32, 0x70, 0x2b, 0xfb,
-0x03, 0x0f, 0x50, 0xb4, 0x67, 0x08, 0x3e, 0xa6,
-0xfe, 0xe1, 0x7e, 0x69, 0x09, 0x7b, 0x4a, 0xa9,
-0x97, 0xac, 0xf9, 0xb0, 0xd3, 0xef, 0xdb, 0x94,
-0x33, 0xc1, 0x36, 0x49, 0x55, 0xa3, 0xca, 0x84,
-0xfc, 0x1d, 0x38, 0xd6, 0x65, 0x75, 0x43, 0xba,
-0xa4, 0x5c, 0xee, 0x08, 0x24, 0x37, 0x9d, 0x6f,
-0xfe, 0x11, 0xcd, 0x37, 0xa7, 0x23, 0xf6, 0xf9,
-0x68, 0x8f, 0x89, 0xb5, 0x7e, 0xdf, 0x58, 0x09,
-0xb1, 0xb9, 0xd6, 0xb2, 0x7c, 0x2b, 0x1e, 0x08,
-0xfb, 0x60, 0xdb, 0x0a, 0x75, 0x35, 0xdb, 0xa8,
-0xaf, 0xe1, 0xdb, 0x0c, 0xca, 0x0f, 0xa6, 0xe7,
-0x83, 0x08, 0xb1, 0x75, 0x11, 0x65, 0x03, 0x23,
-0x7e, 0x36, 0x6b, 0xaa, 0x1b, 0x52, 0xf8, 0x14,
-0xec, 0xe1, 0xa5, 0xaf, 0xaa, 0xdf, 0x0c, 0x3f,
-0x8e, 0x47, 0x74, 0x33, 0xef, 0x1b, 0xb6, 0xfc,
-0x60, 0xa8, 0x38, 0xc1, 0x69, 0x1e, 0x7a, 0xab,
-0x9f, 0x11, 0xbb, 0x1e, 0xb5, 0x77, 0x0d, 0x3b,
-0x2a, 0xf6, 0x0c, 0xea, 0xed, 0xb8, 0x50, 0x9b,
-0x68, 0x3d, 0x07, 0xf3, 0xec, 0xf3, 0xd1, 0xbc,
-0xc5, 0xa4, 0x3f, 0x83, 0xa6, 0xcf, 0xaf, 0x06,
-0xe1, 0x88, 0x40, 0xa1, 0x4f, 0xfe, 0x50, 0xb9,
-0x38, 0x18, 0x18, 0x77, 0x1d, 0x64, 0x3f, 0xb9,
-0xf5, 0x08, 0x78, 0xc6, 0x2b, 0x3f, 0xb2, 0xf1,
-0xdf, 0x04, 0x6e, 0xf1, 0x8b, 0x46, 0x70, 0x98,
-0x96, 0xc5, 0xb8, 0x48, 0x63, 0xbb, 0xfd, 0x24,
-0x40, 0x43, 0xc2, 0xb5, 0x57, 0xfd, 0x00, 0x3e,
-0xe6, 0xc1, 0x81, 0x82, 0xec, 0xfc, 0x60, 0x1f,
-0x85, 0xc5, 0x06, 0x9d, 0x1f, 0x51, 0x37, 0x00,
-0x08, 0xbe, 0xed, 0x1a, 0xef, 0x6c, 0x68, 0xfd,
-0xf9, 0xd6, 0xea, 0xe5, 0xce, 0xf1, 0xa2, 0xfb,
-0xe1, 0xc8, 0xb6, 0x1b, 0x4c, 0xc5, 0x3e, 0x1f,
-0xb6, 0x5f, 0x71, 0x90, 0x19, 0x3a, 0xe9, 0xa5,
-0xb2, 0xac, 0x6e, 0xa8, 0x4a, 0xd2, 0x98, 0x57,
-0x1a, 0x94, 0x66, 0x78, 0xeb, 0xe4, 0xdb, 0x61,
-0x9d, 0xe9, 0x59, 0x65, 0xf5, 0x87, 0x9c, 0xfe,
-0xbd, 0x68, 0x3e, 0xec, 0x63, 0xe6, 0xdc, 0x54,
-0x1a, 0xab, 0x5b, 0xaf, 0x4a, 0xd0, 0xf5, 0x12,
-0x05, 0xca, 0x5a, 0x1f, 0x77, 0x7c, 0x0d, 0x1e,
-0x33, 0x3c, 0xe3, 0x57, 0xf4, 0x47, 0xe2, 0xfa,
-0xc3, 0x52, 0x39, 0xb1, 0x55, 0xa9, 0xfa, 0xd2,
-0x47, 0x81, 0x32, 0xdc, 0xc9, 0xc4, 0xd8, 0x74,
-0x3b, 0x5a, 0x8c, 0xcd, 0x5a, 0xcc, 0xbc, 0x3a,
-0xbb, 0x3f, 0xd2, 0x8a, 0xf5, 0xbf, 0xa6, 0xf9,
-0x17, 0x71, 0x8b, 0x16, 0x55, 0x45, 0xfb, 0xa1,
-0x12, 0x85, 0x3d, 0xad, 0xf8, 0x59, 0x7d, 0x15,
-0x7e, 0x2d, 0x05, 0xcc, 0xaa, 0xec, 0xf9, 0x68,
-0x09, 0xf8, 0x80, 0xed, 0x5f, 0x92, 0xe6, 0xb7,
-0xb8, 0x06, 0xd4, 0xc9, 0x5d, 0xdf, 0x85, 0xc6,
-0x5b, 0x5d, 0x85, 0xf2, 0x39, 0xfe, 0xa1, 0xfe,
-0x6d, 0xea, 0x6f, 0x9c, 0xe1, 0x47, 0x0d, 0xcc,
-0xbc, 0xc4, 0x8f, 0x89, 0xea, 0x91, 0xa1, 0x8f,
-0xe5, 0xa0, 0xf1, 0x73, 0xb3, 0xda, 0xef, 0x3c,
-0xaf, 0x06, 0x8d, 0xc9, 0x28, 0xae, 0xd8, 0x04,
-0x11, 0xc9, 0xa2, 0x7b, 0x4a, 0x9c, 0x07, 0x9b,
-0x33, 0xf8, 0xc7, 0xd4, 0xc6, 0xb6, 0x74, 0x96,
-0xa2, 0x7d, 0x39, 0xdb, 0xe4, 0x13, 0xdd, 0x34,
-0xdd, 0xa3, 0x97, 0x39, 0x45, 0xaf, 0xfe, 0x99,
-0x93, 0xb7, 0xc7, 0x99, 0xb3, 0x6b, 0x9d, 0x8e,
-0xd0, 0xc5, 0xcf, 0xfc, 0x99, 0xfe, 0x90, 0xb0,
-0xc1, 0xd3, 0xc9, 0x63, 0x89, 0x15, 0x81, 0x0a,
-0x27, 0x93, 0x45, 0x2c, 0xb9, 0x02, 0x5f, 0x5c,
-0x3c, 0x0f, 0xfa, 0x30, 0x0f, 0xac, 0xdf, 0x50,
-0x86, 0x86, 0x6b, 0xab, 0x37, 0x70, 0x75, 0x20,
-0xc3, 0x0f, 0x2f, 0xde, 0x40, 0x30, 0xc9, 0xb4,
-0xf0, 0x52, 0x07, 0x19, 0x3e, 0xa2, 0x8d, 0x3d,
-0x0f, 0x15, 0xfd, 0xb8, 0x7f, 0x36, 0x2c, 0x0a,
-0x73, 0x3d, 0x64, 0xdd, 0x7f, 0x7a, 0x7f, 0x2e,
-0x9a, 0x89, 0xd6, 0x96, 0x59, 0x69, 0xbb, 0x2a,
-0xa3, 0x5b, 0x04, 0x92, 0x4b, 0xfa, 0xca, 0x7c,
-0xd2, 0x05, 0xea, 0xf8, 0xd4, 0x27, 0xff, 0x44,
-0x3f, 0x62, 0x04, 0x02, 0x78, 0x4a, 0x4f, 0xdb,
-0x2f, 0xca, 0x0f, 0x4e, 0x35, 0x39, 0x9c, 0xb4,
-0xfa, 0x43, 0xba, 0xce, 0x95, 0x5d, 0x8a, 0x5d,
-0xe2, 0x8d, 0xe6, 0xed, 0x17, 0xe4, 0xfb, 0xb5,
-0xcb, 0xd1, 0x46, 0xd8, 0x74, 0x45, 0x7f, 0x48,
-0x71, 0x51, 0xaf, 0x4d, 0xe4, 0xf7, 0xca, 0x3e,
-0xf1, 0xbe, 0x1e, 0x48, 0x38, 0xe3, 0xdd, 0x2b,
-0x09, 0x08, 0x99, 0x05, 0xbd, 0xc4, 0x8f, 0xe2,
-0x81, 0xad, 0x0f, 0xd2, 0x7c, 0xb4, 0xe9, 0x9f,
-0xcb, 0xcc, 0xa9, 0x14, 0x07, 0x12, 0x9e, 0x09,
-0x7e, 0x2e, 0x3c, 0x1f, 0xf6, 0x27, 0x3c, 0x27,
-0xef, 0xec, 0x63, 0x3f, 0x11, 0x61, 0x63, 0xe1,
-0xdb, 0xfc, 0x20, 0xab, 0xd4, 0x7f, 0xcd, 0x3d,
-0x13, 0xad, 0x2f, 0xca, 0xdf, 0x4c, 0xef, 0x87,
-0x84, 0x42, 0x65, 0x02, 0x54, 0x14, 0xe9, 0x70,
-0xb6, 0xee, 0x91, 0xf0, 0xc5, 0x6b, 0x10, 0x08,
-0x85, 0xc5, 0xdc, 0xe3, 0x57, 0xd3, 0x60, 0x8b,
-0xcd, 0x46, 0x0c, 0xf2, 0xfc, 0xac, 0x3e, 0xd3,
-0x1f, 0x52, 0xfb, 0x22, 0xc2, 0x80, 0xd2, 0x24,
-0xff, 0xd6, 0xb2, 0xd9, 0xc6, 0x4b, 0x28, 0x94,
-0xac, 0x7e, 0xe0, 0x47, 0xf0, 0x00, 0x2e, 0x54,
-0x64, 0x75, 0x78, 0x59, 0xf1, 0xf7, 0x84, 0xbe,
-0xfc, 0xd3, 0xab, 0xd9, 0xfd, 0xb6, 0xfc, 0xe0,
-0xed, 0xa8, 0x3d, 0x6a, 0x06, 0x6f, 0xdb, 0x9d,
-0xeb, 0x44, 0xc1, 0x9f, 0xe0, 0x7d, 0xf2, 0x12,
-0x18, 0xc0, 0xff, 0x62, 0x41, 0xaf, 0xbc, 0x01,
-0x1e, 0xa3, 0x7e, 0x29, 0x75, 0xf6, 0xfc, 0xe0,
-0x4c, 0x5a, 0x9f, 0xe0, 0xa0, 0xd5, 0x5f, 0xeb,
-0x32, 0xbc, 0x64, 0xaa, 0x67, 0xe5, 0xfb, 0x8d,
-0x4b, 0x16, 0x63, 0x5c, 0xde, 0x45, 0xf3, 0x53,
-0xfa, 0x3d, 0xf6, 0xfa, 0x38, 0x4e, 0xf1, 0x6d,
-0x8a, 0xde, 0xbf, 0x80, 0x9f, 0x2d, 0xfe, 0x10,
-0x49, 0x5c, 0xf6, 0x5d, 0x70, 0x41, 0x04, 0x0e,
-0xa7, 0x88, 0x52, 0xd4, 0x3a, 0xb2, 0xaf, 0xd9,
-0xc6, 0x0f, 0xd7, 0x52, 0xfd, 0x01, 0xd4, 0x8f,
-0xd9, 0x2c, 0xbe, 0x36, 0xd5, 0x1f, 0x69, 0x16,
-0xbc, 0xc4, 0x4a, 0x4d, 0x2b, 0xd1, 0xb0, 0x8f,
-0x55, 0x1a, 0x3d, 0xe3, 0xac, 0xb7, 0x7c, 0xfa,
-0xfe, 0xa9, 0xfc, 0x20, 0xcd, 0x43, 0x61, 0x2f,
-0x5a, 0xd3, 0x40, 0xac, 0x46, 0x01, 0xcf, 0x09,
-0x18, 0xc9, 0x5b, 0xed, 0x79, 0x53, 0xdf, 0xd7,
-0x51, 0x19, 0xc3, 0x23, 0x7a, 0x1a, 0xaf, 0x8e,
-0x2a, 0xbb, 0xe0, 0x00, 0xab, 0x32, 0xbb, 0xfd,
-0x4c, 0x31, 0xd6, 0x3b, 0x62, 0x13, 0xbc, 0x84,
-0xe5, 0x42, 0x2f, 0x35, 0x6e, 0xdd, 0xda, 0x74,
-0x14, 0x0e, 0x24, 0xac, 0x7c, 0xc7, 0xe6, 0xf4,
-0xfe, 0x4c, 0x4a, 0xa3, 0x40, 0x49, 0xc0, 0x4d,
-0x31, 0xf9, 0x69, 0x34, 0x1c, 0xd5, 0x71, 0xe7,
-0xd3, 0xf2, 0xd3, 0xde, 0x4b, 0x91, 0x5e, 0x91,
-0xdf, 0x23, 0x4f, 0x18, 0x97, 0x06, 0x1a, 0x37,
-0x3a, 0x89, 0x1f, 0x35, 0xfd, 0x3c, 0xad, 0x94,
-0x1d, 0x83, 0x2a, 0xd8, 0x44, 0x6d, 0xf6, 0x26,
-0x20, 0xa8, 0x34, 0x8a, 0x14, 0x3f, 0x4a, 0x4b,
-0xcd, 0x47, 0xd3, 0x52, 0xf5, 0x71, 0x5a, 0x1a,
-0xff, 0xc0, 0x4e, 0xfe, 0xba, 0x45, 0xf2, 0x41,
-0xeb, 0xf6, 0x2d, 0x3d, 0xd0, 0xb2, 0x18, 0x0d,
-0xdf, 0x2d, 0xd4, 0x16, 0x52, 0xb1, 0x32, 0x86,
-0x9a, 0xc5, 0xff, 0xb9, 0xb2, 0x3e, 0xee, 0xe9,
-0x55, 0xf9, 0x56, 0x5a, 0x10, 0xb6, 0x37, 0x59,
-0xdd, 0xad, 0x89, 0xef, 0xe4, 0xb5, 0x12, 0x55,
-0xa8, 0x7f, 0xf2, 0xed, 0xf8, 0xa7, 0x6e, 0x66,
-0x39, 0x3c, 0x0a, 0x9e, 0xa6, 0x54, 0x1a, 0x11,
-0xa8, 0x8d, 0xb3, 0xdb, 0xea, 0xa7, 0x4a, 0x15,
-0x73, 0xe5, 0xca, 0x7e, 0xae, 0x37, 0x65, 0xd5,
-0xc7, 0x51, 0x7e, 0x90, 0xfa, 0x6f, 0xe7, 0xb9,
-0xc3, 0x43, 0x56, 0xda, 0x42, 0xd5, 0xd8, 0x08,
-0xeb, 0x00, 0xdf, 0x61, 0x87, 0xe6, 0x50, 0x76,
-0xee, 0x66, 0xb1, 0xb6, 0x3c, 0xad, 0x29, 0xa3,
-0x7f, 0x56, 0xd3, 0x7c, 0x10, 0x4a, 0x4b, 0x85,
-0x09, 0xe6, 0x49, 0x81, 0x14, 0xde, 0x8b, 0x40,
-0x90, 0x17, 0x50, 0xa1, 0x1c, 0x11, 0xc5, 0x9d,
-0x42, 0xfe, 0x30, 0x93, 0x1f, 0x9c, 0x39, 0x12,
-0x3f, 0x3f, 0x2f, 0xd8, 0xb6, 0x74, 0x33, 0xf5,
-0x87, 0x4c, 0xd1, 0xa2, 0xce, 0xc5, 0xa8, 0x63,
-0xd2, 0x6b, 0x29, 0xc6, 0x54, 0x63, 0xdb, 0xa6,
-0xcd, 0x9d, 0x7f, 0x60, 0x76, 0x7e, 0xf8, 0xeb,
-0xc4, 0xaf, 0xde, 0x4c, 0xb0, 0x50, 0x0b, 0x5a,
-0xfc, 0x79, 0xe3, 0x10, 0x04, 0xda, 0x9c, 0x85,
-0xf2, 0x88, 0x86, 0xc2, 0x2d, 0xce, 0x68, 0x99,
-0x8d, 0x4f, 0x55, 0x12, 0xd3, 0x23, 0xd4, 0x1f,
-0x32, 0xdc, 0x69, 0x0a, 0xae, 0x57, 0xc9, 0x4e,
-0xca, 0x0f, 0x0a, 0x6f, 0x05, 0x6f, 0x0a, 0xc3,
-0xe9, 0xf2, 0x08, 0xdf, 0x0e, 0x7c, 0x20, 0xfc,
-0x66, 0x66, 0x3e, 0x9a, 0xb2, 0x45, 0xac, 0x81,
-0x4a, 0x9a, 0x0f, 0x72, 0x47, 0x6c, 0x8d, 0x5e,
-0xd9, 0xda, 0xda, 0xee, 0x2e, 0x56, 0x36, 0x96,
-0x96, 0xb6, 0x89, 0x65, 0xd4, 0x31, 0x49, 0xda,
-0x41, 0xd4, 0xa9, 0x4c, 0x7f, 0xc8, 0xad, 0xca,
-0x4e, 0xb0, 0xf8, 0xe1, 0xc3, 0x6c, 0xaf, 0xb1,
-0x11, 0x5c, 0x6d, 0xad, 0xed, 0xac, 0xc6, 0xd8,
-0xa8, 0xcd, 0x5b, 0xe4, 0x3d, 0xce, 0x7e, 0x1f,
-0x5e, 0x03, 0x65, 0xed, 0xde, 0x61, 0xdb, 0x7a,
-0xc6, 0x66, 0x5a, 0xd5, 0x70, 0x34, 0x86, 0x69,
-0x39, 0x1c, 0x4a, 0x50, 0xa3, 0x48, 0xb5, 0x9c,
-0xf5, 0x9b, 0x56, 0x5b, 0x00, 0xc4, 0xab, 0x5b,
-0x03, 0x08, 0x7d, 0xd9, 0xa8, 0x98, 0x5e, 0x1f,
-0xca, 0x0f, 0xbe, 0x67, 0x35, 0x01, 0xe8, 0x7c,
-0x97, 0x9d, 0x37, 0x82, 0x8b, 0x0a, 0x2c, 0x5a,
-0x94, 0x98, 0xea, 0x20, 0x7a, 0x3e, 0x6c, 0xf1,
-0xa3, 0xec, 0xf9, 0xc1, 0x78, 0xa4, 0x41, 0xb7,
-0xfa, 0x23, 0xc5, 0x61, 0x08, 0xaa, 0x35, 0xd7,
-0x40, 0xd1, 0x78, 0x78, 0xa8, 0xe5, 0xef, 0xe9,
-0x48, 0xa1, 0x38, 0x65, 0x54, 0x03, 0xfa, 0xa7,
-0x87, 0xc5, 0xf4, 0xfe, 0xf7, 0xe6, 0x7c, 0x06,
-0xce, 0x98, 0x1e, 0xea, 0x06, 0x90, 0x80, 0xf5,
-0x8b, 0xee, 0x11, 0x8b, 0x77, 0xb9, 0xdf, 0x53,
-0xd6, 0x4b, 0x15, 0x78, 0xa4, 0xf9, 0xef, 0x88,
-0xe8, 0x24, 0x1c, 0x49, 0x39, 0x92, 0xd9, 0x0f,
-0xca, 0x97, 0x20, 0x66, 0xce, 0x05, 0xd5, 0xc9,
-0x4c, 0x10, 0x9f, 0xad, 0x80, 0x6b, 0x9c, 0xb8,
-0xbb, 0x50, 0x2d, 0x4b, 0xaa, 0xc4, 0x64, 0x2b,
-0xe0, 0x12, 0x01, 0x76, 0x38, 0xcd, 0x4f, 0x10,
-0xda, 0x7f, 0x85, 0x27, 0xcd, 0x54, 0x5b, 0x00,
-0xe9, 0x49, 0x31, 0xcf, 0x54, 0xbf, 0x61, 0xd5,
-0x77, 0xa0, 0x30, 0xc1, 0x6e, 0xe3, 0x9b, 0x10,
-0x78, 0xa3, 0xff, 0x32, 0x6a, 0x4c, 0xdf, 0x3f,
-0x12, 0x59, 0x06, 0x63, 0xe2, 0x86, 0xa4, 0x8b,
-0xf8, 0x51, 0x47, 0x09, 0xff, 0xb4, 0xca, 0x17,
-0x94, 0x41, 0xb1, 0x2d, 0xe4, 0x6a, 0x2d, 0x73,
-0x23, 0x34, 0x5a, 0x90, 0x74, 0xb6, 0xca, 0x67,
-0x32, 0xfc, 0xa8, 0xc2, 0x5d, 0xf0, 0x77, 0xa9,
-0x79, 0x19, 0xa3, 0xec, 0x75, 0x78, 0x0e, 0x54,
-0x2a, 0x43, 0x46, 0x0d, 0x63, 0xcd, 0xa3, 0x84,
-0x24, 0x20, 0xd8, 0x8a, 0xcb, 0xe1, 0x4c, 0x7f,
-0x48, 0xe5, 0xa0, 0xf1, 0x96, 0xf8, 0x6e, 0x39,
-0x3a, 0x65, 0x01, 0xf8, 0x44, 0x34, 0xea, 0xb7,
-0x4d, 0xc8, 0x7f, 0x80, 0xc9, 0x8e, 0x60, 0xf9,
-0x8c, 0xa7, 0x10, 0x08, 0x0d, 0x89, 0x6a, 0xe2,
-0x47, 0x8d, 0xdb, 0xf2, 0x83, 0x82, 0xa6, 0x51,
-0x8f, 0xaa, 0x6d, 0xea, 0x2c, 0xe3, 0x39, 0x54,
-0x44, 0x39, 0x40, 0xfd, 0xf9, 0x19, 0x1e, 0xb9,
-0xd3, 0x3d, 0xce, 0x9e, 0xa4, 0xfa, 0xb8, 0x55,
-0x36, 0xfc, 0x03, 0xe2, 0xf1, 0x45, 0xa4, 0xaf,
-0xba, 0x03, 0xec, 0x04, 0x2a, 0xae, 0xf9, 0x74,
-0xf6, 0x14, 0xde, 0x61, 0xce, 0x12, 0xf5, 0x9e,
-0xed, 0xa7, 0x8c, 0xb5, 0x30, 0x7f, 0x18, 0x5d,
-0xd1, 0xc1, 0x0c, 0x3f, 0x5c, 0x11, 0x56, 0x7f,
-0x12, 0x15, 0x18, 0x07, 0xf4, 0xa6, 0xb4, 0x3c,
-0x09, 0x17, 0xf6, 0x80, 0xe6, 0x13, 0x8b, 0x4b,
-0x98, 0xd9, 0x1e, 0x33, 0x7c, 0xe0, 0x8d, 0xdb,
-0xf0, 0x4f, 0xcf, 0xcc, 0x24, 0x9f, 0x2a, 0xaa,
-0x7d, 0x5a, 0xf4, 0x99, 0xe8, 0x36, 0x46, 0xe4,
-0xa4, 0x7e, 0xf1, 0xc4, 0x37, 0xc5, 0x5f, 0x6f,
-0x2d, 0x4b, 0x4a, 0x09, 0xb3, 0x81, 0xa3, 0xfe,
-0x39, 0x69, 0xe3, 0x87, 0xef, 0xb2, 0x92, 0x86,
-0xd7, 0x51, 0x19, 0xdd, 0xc5, 0x92, 0x60, 0xd2,
-0x6a, 0x14, 0x89, 0x77, 0x30, 0xae, 0xdb, 0x29,
-0x8f, 0x95, 0x5e, 0xf4, 0xd3, 0xa8, 0x74, 0xf9,
-0x74, 0x1a, 0xff, 0x97, 0x6a, 0xe3, 0x34, 0x1d,
-0xde, 0xf4, 0x99, 0xf0, 0x1d, 0xf8, 0x10, 0xbe,
-0x3b, 0xa0, 0x9a, 0x72, 0x1d, 0x1c, 0xd3, 0xaa,
-0x93, 0xf9, 0xc3, 0xb2, 0x1f, 0x15, 0x6f, 0xb5,
-0xe9, 0x1c, 0x55, 0x33, 0xf6, 0x7a, 0x9b, 0x42,
-0x65, 0x59, 0xd4, 0x8d, 0x87, 0xe9, 0x4b, 0xf6,
-0x53, 0xbf, 0x2c, 0x3f, 0xaa, 0x9d, 0x93, 0xe8,
-0x56, 0x78, 0x63, 0xf2, 0x4a, 0x7c, 0xb5, 0x0a,
-0x2a, 0x5d, 0xcf, 0xd4, 0xa7, 0x88, 0x1c, 0x27,
-0x1a, 0x11, 0xbc, 0xde, 0x9f, 0x3b, 0x8a, 0xfa,
-0xe7, 0x6b, 0x90, 0x17, 0x47, 0xff, 0xa2, 0x9b,
-0xeb, 0x1d, 0xad, 0xfe, 0xcd, 0x3e, 0xad, 0x8f,
-0x21, 0x1e, 0xd8, 0x66, 0xe7, 0x47, 0x15, 0x4b,
-0x10, 0x65, 0xbe, 0x81, 0x08, 0x84, 0xbb, 0xa0,
-0xd7, 0x9a, 0x9e, 0x96, 0xcb, 0x21, 0x6a, 0x0d,
-0xb2, 0x0a, 0x1b, 0xd4, 0x91, 0xd5, 0xcc, 0xaa,
-0x4f, 0x81, 0xfc, 0xaf, 0x12, 0x3f, 0x1c, 0x61,
-0x86, 0x9c, 0x6a, 0x93, 0x95, 0x9f, 0x02, 0x42,
-0x6e, 0xb2, 0x2f, 0x3e, 0xb4, 0x68, 0x68, 0xe8,
-0xb7, 0xc9, 0x7a, 0x5a, 0xff, 0x6c, 0x9b, 0x39,
-0x2e, 0xc6, 0x52, 0xeb, 0xb9, 0x0a, 0x26, 0xe1,
-0x66, 0xc8, 0x37, 0x3b, 0x53, 0xfd, 0x5b, 0x36,
-0x9a, 0x45, 0xe3, 0xd6, 0x11, 0x97, 0xbd, 0x3f,
-0x52, 0x7f, 0xce, 0x78, 0xf4, 0x94, 0xee, 0x80,
-0x02, 0xa3, 0x33, 0x2e, 0xf0, 0x32, 0x07, 0x35,
-0x56, 0x8a, 0xe2, 0x87, 0xc6, 0x5d, 0xf4, 0x0f,
-0x07, 0xa1, 0xda, 0xed, 0x6a, 0xb7, 0xcd, 0x47,
-0x33, 0x4b, 0x7e, 0x4a, 0xfd, 0x91, 0xc6, 0xd1,
-0x9a, 0xcf, 0x87, 0x03, 0xd1, 0xaa, 0x71, 0xbe,
-0xdf, 0xf8, 0x9d, 0xd1, 0x6d, 0x7a, 0xc6, 0x11,
-0xf8, 0x7d, 0x15, 0x9e, 0x31, 0x2b, 0x4e, 0xaa,
-0x3f, 0x61, 0x7a, 0x9a, 0x9f, 0x99, 0x50, 0x36,
-0x48, 0x7b, 0xd0, 0x8b, 0x71, 0xe8, 0x4c, 0x18,
-0xbb, 0xa9, 0x1b, 0x2d, 0x30, 0x13, 0x45, 0x5d,
-0xb1, 0xf2, 0xef, 0x28, 0xb4, 0x5e, 0xad, 0xb1,
-0x70, 0x86, 0x1f, 0xae, 0x50, 0x7f, 0x24, 0xcf,
-0x49, 0xea, 0x0f, 0xa0, 0x3f, 0x0f, 0x05, 0xb8,
-0x9b, 0xdc, 0xd4, 0x6f, 0x8a, 0x99, 0xaa, 0x68,
-0x0a, 0xc1, 0x33, 0x32, 0x7d, 0xc8, 0xcc, 0x9f,
-0xe6, 0x53, 0x7d, 0xce, 0xea, 0x8f, 0x54, 0x01,
-0xe8, 0x7f, 0xed, 0x80, 0xd5, 0x9a, 0x35, 0x58,
-0x67, 0xb4, 0xfc, 0x08, 0xf4, 0xb6, 0x58, 0x8a,
-0xfa, 0x65, 0x54, 0xdd, 0x78, 0x2a, 0x6a, 0x9b,
-0x0f, 0x4b, 0xf6, 0xfd, 0x66, 0xd3, 0x95, 0x94,
-0x2f, 0xb5, 0x5e, 0x16, 0x8d, 0x06, 0x5e, 0x76,
-0x8e, 0xfa, 0xad, 0x09, 0x0b, 0x31, 0x4e, 0x52,
-0xc7, 0x80, 0x33, 0xd9, 0xf8, 0x07, 0xfe, 0x9e,
-0x8c, 0x9a, 0x5f, 0xde, 0x86, 0x8a, 0xba, 0x81,
-0xb2, 0xb1, 0x5e, 0xea, 0x3f, 0xd9, 0x54, 0xd0,
-0x3b, 0x63, 0x83, 0xf1, 0xbe, 0xdf, 0xaa, 0xf8,
-0xce, 0xc4, 0x7f, 0x4e, 0xe6, 0x94, 0xb5, 0xf4,
-0xb5, 0x23, 0x6c, 0x16, 0xac, 0x4a, 0xac, 0x17,
-0x56, 0x37, 0x24, 0x05, 0x3f, 0x84, 0xe0, 0x6e,
-0xde, 0x35, 0xe3, 0x1e, 0x88, 0x18, 0x1e, 0x11,
-0xd1, 0x9b, 0x32, 0xfd, 0x01, 0x4c, 0x65, 0x91,
-0x11, 0xc7, 0xdd, 0x89, 0x6f, 0xf8, 0x20, 0xf4,
-0x46, 0x7d, 0xa5, 0xaa, 0xe2, 0x50, 0x16, 0x45,
-0x85, 0x37, 0xda, 0x86, 0xef, 0xac, 0xc4, 0x94,
-0x58, 0xcc, 0x8b, 0x78, 0x2f, 0xbd, 0xdf, 0x10,
-0xff, 0x74, 0x3d, 0x22, 0x2a, 0x2b, 0xd4, 0x6f,
-0x31, 0x37, 0x3c, 0x21, 0x2a, 0x93, 0xd7, 0xac,
-0xce, 0xbd, 0x3a, 0x67, 0xcf, 0xb6, 0xca, 0xe5,
-0xfc, 0x5b, 0xa9, 0x8e, 0x91, 0x21, 0xfc, 0x1e,
-0x4b, 0x6c, 0xfc, 0xf0, 0xdb, 0xc5, 0xc7, 0x7a,
-0xc3, 0xe8, 0x26, 0x1d, 0x61, 0xd5, 0xc7, 0xe0,
-0x6b, 0x9a, 0x01, 0x45, 0x8a, 0x81, 0xf0, 0x3b,
-0x5c, 0xe0, 0x67, 0x63, 0x10, 0xa3, 0xfd, 0x43,
-0xfc, 0xa8, 0x34, 0x3f, 0x3c, 0xc7, 0x1a, 0xfb,
-0xae, 0xb8, 0x86, 0xe5, 0x61, 0xe3, 0x24, 0x55,
-0xa3, 0x8c, 0x17, 0x4d, 0x18, 0x97, 0xf5, 0x99,
-0x86, 0xcb, 0x68, 0x1e, 0x47, 0x68, 0xd1, 0x08,
-0x05, 0x89, 0x2c, 0x7e, 0x78, 0x0c, 0x95, 0x52,
-0x20, 0xa9, 0x47, 0xf1, 0xeb, 0xf8, 0x08, 0x6a,
-0x63, 0x3e, 0xcb, 0x71, 0x13, 0x61, 0x13, 0xdd,
-0xd2, 0x10, 0xfb, 0x35, 0xd4, 0x88, 0x7c, 0x8a,
-0xff, 0x4c, 0x5f, 0x9f, 0x28, 0xd9, 0x40, 0x4e,
-0x13, 0xf0, 0x10, 0x6e, 0xd9, 0x67, 0x69, 0x3a,
-0x95, 0xc1, 0x86, 0x9d, 0x7b, 0x95, 0x52, 0xfa,
-0xd0, 0x36, 0xe0, 0xe7, 0xbd, 0x8d, 0x8e, 0x7c,
-0x94, 0xe6, 0x87, 0x23, 0xfe, 0xd1, 0x9e, 0x14,
-0x53, 0xb0, 0x67, 0x5f, 0x07, 0x24, 0xf3, 0xee,
-0x67, 0x6f, 0xc2, 0x9e, 0x81, 0xf2, 0xe4, 0x3a,
-0xab, 0x43, 0x26, 0x42, 0xa3, 0xbc, 0xd5, 0xa8,
-0xea, 0xa7, 0xaf, 0x1f, 0x55, 0x04, 0x08, 0xfc,
-0x7a, 0x78, 0xae, 0x87, 0xfa, 0xdd, 0xe9, 0xf0,
-0x69, 0x52, 0xec, 0x71, 0xa3, 0x5c, 0xcb, 0xb3,
-0x3a, 0x50, 0x71, 0x9d, 0xe2, 0x8d, 0x6f, 0xa4,
-0xaf, 0x4f, 0xce, 0x1c, 0x85, 0x33, 0x88, 0x37,
-0xf9, 0x4e, 0xf4, 0x97, 0x9f, 0x87, 0x40, 0xcf,
-0xb5, 0x31, 0xf9, 0x0c, 0x3c, 0x6f, 0xd6, 0x46,
-0xf3, 0x63, 0xcd, 0x5e, 0x38, 0x3c, 0x50, 0x4b,
-0xfd, 0xf4, 0x26, 0x32, 0xfc, 0x70, 0x29, 0xae,
-0x51, 0x13, 0xa4, 0x54, 0x37, 0x24, 0xfc, 0x5e,
-0x0b, 0x5e, 0xc5, 0x85, 0x9a, 0xd4, 0x6f, 0xe2,
-0x0f, 0x92, 0x85, 0x1a, 0x2b, 0x7c, 0x21, 0x15,
-0xff, 0x49, 0xaf, 0x8f, 0xf6, 0x00, 0xfc, 0x22,
-0x56, 0x6b, 0xb8, 0xdc, 0x6c, 0x79, 0x53, 0x7f,
-0xb4, 0xb6, 0xf5, 0xba, 0xad, 0x33, 0x46, 0x8c,
-0x43, 0x9e, 0xfb, 0xd1, 0x3e, 0xaa, 0x0a, 0xf4,
-0x47, 0x11, 0xff, 0x10, 0x3f, 0x6a, 0xfa, 0x79,
-0x84, 0xf2, 0x65, 0x8d, 0xc6, 0xb2, 0xd3, 0x18,
-0x53, 0x58, 0x27, 0x50, 0x78, 0x88, 0x8d, 0x48,
-0xaf, 0x4b, 0x55, 0xab, 0xb8, 0x16, 0x2e, 0x87,
-0xd7, 0xf3, 0x6a, 0x43, 0xf9, 0x57, 0xf0, 0xa3,
-0xc4, 0x0f, 0xe1, 0xfa, 0x16, 0x1a, 0xe3, 0x25,
-0x6d, 0x64, 0xd7, 0x1b, 0xd7, 0x9c, 0x70, 0x9f,
-0x23, 0x0b, 0xde, 0xc6, 0x89, 0xcf, 0x4c, 0xa3,
-0xbe, 0x50, 0x28, 0xb0, 0xe1, 0x9f, 0xe2, 0xd8,
-0x5a, 0x6f, 0x69, 0x9b, 0xba, 0x2c, 0xbc, 0x37,
-0xb6, 0xc6, 0x7b, 0x37, 0x09, 0xa7, 0x9e, 0xfa,
-0x9e, 0xb7, 0xb2, 0x2d, 0x42, 0x8d, 0x92, 0xbe,
-0xe7, 0x9d, 0x43, 0x1d, 0x93, 0xda, 0xd2, 0xfc,
-0xcc, 0xd5, 0xf9, 0x2b, 0xc4, 0x49, 0xbd, 0x96,
-0xab, 0xe1, 0xb2, 0xa4, 0x48, 0xa0, 0xb0, 0x38,
-0xdc, 0x44, 0xf3, 0x61, 0xab, 0xb8, 0x2f, 0x15,
-0x11, 0x0a, 0xe4, 0x39, 0x07, 0xe4, 0xd9, 0x76,
-0xfc, 0x93, 0x6a, 0xfb, 0xa3, 0x95, 0x2d, 0x9f,
-0x2a, 0x7b, 0x2f, 0x5a, 0xae, 0x4d, 0x45, 0x84,
-0xc6, 0x28, 0x22, 0x74, 0x98, 0x0c, 0xbd, 0x92,
-0xc1, 0x3f, 0xe7, 0xac, 0x26, 0x48, 0xae, 0xe3,
-0xac, 0x66, 0xef, 0x6b, 0x7a, 0x91, 0xa1, 0x0c,
-0xd3, 0x58, 0x10, 0x7d, 0x01, 0xf5, 0x07, 0xa8,
-0x81, 0x7c, 0xa5, 0x9a, 0x46, 0x87, 0xd8, 0xf8,
-0x51, 0x25, 0x34, 0x04, 0xd6, 0x22, 0x41, 0x85,
-0x20, 0xa2, 0x79, 0x34, 0x2e, 0x10, 0xfd, 0x46,
-0x50, 0x03, 0x78, 0xb7, 0x79, 0x4a, 0xf5, 0x08,
-0xb3, 0xfa, 0x23, 0x3d, 0x68, 0xe3, 0x87, 0x77,
-0x35, 0x75, 0x68, 0x5e, 0x22, 0x41, 0xb5, 0x20,
-0xcc, 0x8b, 0xb5, 0xf0, 0xc2, 0x26, 0x85, 0x75,
-0x68, 0x60, 0x70, 0xc4, 0x7b, 0x66, 0x87, 0xf6,
-0xb4, 0xc1, 0x0b, 0xf1, 0x53, 0x9a, 0x5e, 0x7f,
-0xc4, 0x3f, 0x79, 0xd4, 0x04, 0x49, 0xdd, 0x8c,
-0x78, 0x66, 0x9d, 0x71, 0x4f, 0xbb, 0x37, 0xd5,
-0x16, 0xbb, 0xc2, 0x80, 0x87, 0x58, 0xb9, 0x44,
-0x02, 0xaa, 0xa6, 0x1f, 0x67, 0xf8, 0xe1, 0x33,
-0x7f, 0x2b, 0x0e, 0x95, 0xd7, 0x1b, 0xae, 0xad,
-0x56, 0x7c, 0x2f, 0xd0, 0xbe, 0x21, 0x35, 0x16,
-0xc4, 0x4f, 0xf8, 0x47, 0xd1, 0x0e, 0xb1, 0x3a,
-0x2a, 0x94, 0xcb, 0xf4, 0x07, 0x48, 0x48, 0x3f,
-0x8e, 0x9c, 0xd7, 0x9f, 0xc7, 0xeb, 0xbb, 0x77,
-0x6a, 0x67, 0x2d, 0x20, 0xd4, 0x3d, 0x02, 0x29,
-0xa1, 0xf3, 0x37, 0x8e, 0xb3, 0xac, 0xd6, 0xc8,
-0xe2, 0x87, 0x73, 0xad, 0x03, 0x86, 0x11, 0x76,
-0x2a, 0x20, 0x83, 0x55, 0x86, 0xb0, 0x49, 0x94,
-0x91, 0x57, 0x99, 0x8a, 0x37, 0xc2, 0x49, 0xb9,
-0x5e, 0xdb, 0x00, 0x72, 0x93, 0xad, 0x3e, 0x6e,
-0xbf, 0x38, 0xba, 0xc8, 0x13, 0xe6, 0x63, 0x61,
-0xdc, 0xcf, 0xdc, 0x27, 0x54, 0x6a, 0x94, 0xbd,
-0x1e, 0xe6, 0xd3, 0xc4, 0x90, 0x09, 0x38, 0x1a,
-0xa9, 0x25, 0xc1, 0x91, 0x89, 0x2f, 0x29, 0xb7,
-0x87, 0xc3, 0xc9, 0x58, 0xb2, 0xa2, 0xc6, 0xa1,
-0xc0, 0x6e, 0xe1, 0x33, 0x54, 0x1f, 0x73, 0x85,
-0x3b, 0x84, 0x4f, 0xd4, 0xdd, 0xcc, 0x86, 0x9a,
-0x3a, 0x85, 0x3e, 0xd2, 0xa3, 0x3b, 0x1c, 0x69,
-0xfd, 0x2c, 0x34, 0x03, 0x3a, 0xb9, 0x7e, 0xda,
-0xe1, 0xa7, 0x32, 0x31, 0x1a, 0x13, 0xf6, 0x0d,
-0x70, 0xc2, 0x5a, 0xa3, 0x12, 0xa8, 0x71, 0x10,
-0xac, 0x51, 0x9e, 0xe8, 0x47, 0xc8, 0xad, 0xa7,
-0xf5, 0x4f, 0x24, 0xf2, 0x45, 0x78, 0x35, 0x35,
-0x04, 0x64, 0x36, 0xfc, 0x51, 0x5c, 0x9b, 0xec,
-0xae, 0xb3, 0x3a, 0x26, 0xdd, 0xbc, 0x8d, 0x26,
-0x86, 0x50, 0xeb, 0xa4, 0x7b, 0x9c, 0x2b, 0x64,
-0x4f, 0xa6, 0x3f, 0x36, 0xe2, 0x9f, 0x33, 0x29,
-0x7e, 0x78, 0x8a, 0x1d, 0x34, 0x23, 0x6e, 0xd5,
-0xc7, 0x05, 0x21, 0x3f, 0x5e, 0x34, 0x06, 0xef,
-0xb0, 0xd9, 0xe6, 0x8c, 0x98, 0x3c, 0x90, 0xc6,
-0x27, 0x4c, 0x89, 0x8b, 0x4b, 0x22, 0x98, 0x2c,
-0x68, 0x92, 0x5f, 0xd4, 0x7e, 0x27, 0x6e, 0x4a,
-0xde, 0x56, 0x57, 0x56, 0x85, 0x1e, 0xfd, 0x7c,
-0x62, 0x8c, 0x57, 0x29, 0x7f, 0xdc, 0x56, 0x3d,
-0xe2, 0x1c, 0x95, 0x33, 0xf5, 0x6b, 0x3d, 0x25,
-0x1d, 0xfa, 0x73, 0x25, 0x95, 0x67, 0xb8, 0x11,
-0x4e, 0xd5, 0xa7, 0x6c, 0xfc, 0x76, 0xf7, 0x5f,
-0x27, 0xff, 0x08, 0x37, 0xcf, 0xc2, 0xe7, 0xff,
-0xd1, 0xc8, 0xb3, 0xc3, 0xa5, 0x4b, 0x1c, 0x77,
-0x77, 0x3e, 0x9d, 0xe6, 0x87, 0x83, 0xd8, 0x82,
-0x30, 0xc9, 0x37, 0xe4, 0x08, 0x51, 0x3c, 0x99,
-0xe2, 0x3f, 0xf7, 0x5a, 0x81, 0x20, 0x9f, 0xb0,
-0xf8, 0xf0, 0xfb, 0x24, 0xd4, 0x60, 0x21, 0x7b,
-0x7d, 0x9c, 0xf2, 0x00, 0xf4, 0x0a, 0xdf, 0x28,
-0xf7, 0xb2, 0xdb, 0xe1, 0xe1, 0xcf, 0x95, 0x0f,
-0xe7, 0xd5, 0xb8, 0xdb, 0xf8, 0x1e, 0x03, 0x81,
-0xd0, 0x0d, 0xec, 0xc1, 0xe8, 0xee, 0xf6, 0xd8,
-0x2a, 0x87, 0xcf, 0xa6, 0xaf, 0x7a, 0x66, 0xbe,
-0x0a, 0x13, 0x66, 0xc3, 0xaa, 0x82, 0x5d, 0x14,
-0xf6, 0x61, 0xc1, 0x51, 0xdf, 0xd6, 0xb2, 0x2a,
-0x38, 0x12, 0xfb, 0x62, 0x4f, 0x65, 0xbc, 0x68,
-0x3e, 0x7c, 0xac, 0x05, 0x3e, 0x5a, 0xd2, 0x23,
-0x9f, 0xc9, 0xcc, 0x87, 0x95, 0x76, 0xea, 0x13,
-0xd4, 0x94, 0xef, 0xc7, 0xf2, 0xae, 0xd0, 0x3b,
-0xbc, 0x6e, 0xa0, 0x40, 0xeb, 0xfc, 0x89, 0x8e,
-0x02, 0xea, 0xf3, 0x1d, 0x16, 0x3f, 0x2a, 0xe1,
-0xd2, 0xfb, 0x63, 0x36, 0x7e, 0xd4, 0x5e, 0x38,
-0x15, 0x5b, 0x98, 0x44, 0x25, 0xf6, 0x1d, 0xb8,
-0x2c, 0xb9, 0x4d, 0xe7, 0x78, 0x8e, 0x0f, 0x7e,
-0x26, 0x16, 0xee, 0x74, 0xc6, 0xe5, 0xa0, 0xb8,
-0x0c, 0xd5, 0x2d, 0x9b, 0x92, 0x72, 0x86, 0x1f,
-0xbe, 0x0d, 0xfe, 0x1b, 0xc4, 0xb8, 0xc7, 0xe4,
-0x3e, 0xf5, 0x6b, 0x70, 0xa0, 0xb0, 0x62, 0x90,
-0x1f, 0xdc, 0x9e, 0x0b, 0xcf, 0x00, 0x7e, 0x68,
-0xcf, 0x33, 0x1f, 0x47, 0xc5, 0x18, 0xa2, 0x46,
-0x5b, 0xf6, 0xfe, 0x00, 0x85, 0x5b, 0x61, 0x6e,
-0x22, 0x6f, 0x97, 0x63, 0xa5, 0x71, 0x80, 0x68,
-0x4e, 0x7d, 0x6c, 0x97, 0xd1, 0xad, 0x7b, 0x04,
-0xdf, 0x8a, 0xd7, 0x1f, 0x10, 0x56, 0x3f, 0xc3,
-0x10, 0xee, 0x9a, 0xa9, 0xdf, 0x57, 0x51, 0xb4,
-0xcd, 0xd4, 0x2f, 0x5a, 0xb7, 0xfa, 0x03, 0xf4,
-0x98, 0x7d, 0x7e, 0x47, 0x04, 0x3a, 0x21, 0xd6,
-0x81, 0x18, 0xc1, 0xd9, 0xb1, 0x87, 0x95, 0x1b,
-0xaa, 0xee, 0x68, 0xca, 0xf0, 0xc3, 0xf3, 0x97,
-0x23, 0xfa, 0xaa, 0x35, 0xf3, 0x09, 0x7d, 0x11,
-0xdb, 0xf6, 0xf6, 0x38, 0xfb, 0xf1, 0xf6, 0xf7,
-0x11, 0x0f, 0xe3, 0xf7, 0xe5, 0x8b, 0x5d, 0x94,
-0x16, 0x18, 0xae, 0x98, 0x6c, 0x64, 0xe2, 0x3f,
-0x3f, 0xfc, 0x43, 0x6c, 0x0c, 0x1a, 0x07, 0x96,
-0x26, 0x2d, 0xff, 0xfd, 0x7a, 0x9a, 0x6f, 0xb5,
-0x0a, 0x5e, 0x92, 0x1a, 0x25, 0x97, 0x29, 0x9d,
-0x83, 0x0b, 0x5a, 0x23, 0xd5, 0x03, 0xf6, 0xd8,
-0xe6, 0x6b, 0x5c, 0x6a, 0xbf, 0xdc, 0xd9, 0x38,
-0xb2, 0xf2, 0x39, 0xaa, 0x86, 0x2b, 0xac, 0x1e,
-0xc9, 0x5f, 0x5d, 0xd4, 0x08, 0xc7, 0xcc, 0x3d,
-0x83, 0xbb, 0x26, 0x9b, 0xeb, 0x8d, 0x63, 0x75,
-0xd5, 0x23, 0xae, 0xf3, 0xf6, 0xf9, 0xb0, 0x25,
-0x43, 0x5d, 0x7b, 0xbc, 0xbe, 0x04, 0x3f, 0xcb,
-0x7c, 0xe2, 0x99, 0x50, 0x45, 0x02, 0x7a, 0x07,
-0x7c, 0xa2, 0x53, 0x47, 0xc4, 0x12, 0x6f, 0x8a,
-0x28, 0xcf, 0xa4, 0xa8, 0xe0, 0x59, 0xfc, 0x70,
-0x61, 0x4d, 0xa7, 0x0a, 0x20, 0x9e, 0xe9, 0x0c,
-0x41, 0x82, 0xfa, 0x6f, 0xe4, 0x76, 0x82, 0xf7,
-0x64, 0xc9, 0x66, 0xe6, 0x7c, 0xa0, 0x53, 0xd7,
-0x4d, 0x35, 0xc0, 0xc2, 0x99, 0xf8, 0x4f, 0xce,
-0x2e, 0xe9, 0x80, 0x64, 0xf5, 0x07, 0xf0, 0xb5,
-0x3e, 0x03, 0xba, 0x59, 0x5f, 0x67, 0xf5, 0x07,
-0xc0, 0x5f, 0xa4, 0x87, 0xfd, 0x54, 0xdf, 0x41,
-0x85, 0x87, 0x71, 0x16, 0xcf, 0xd4, 0x6f, 0x52,
-0x7f, 0x80, 0xd4, 0x58, 0x58, 0x82, 0x85, 0xbd,
-0xc9, 0xd9, 0x07, 0x1f, 0x46, 0xe1, 0xa1, 0x80,
-0xb9, 0xa1, 0x4e, 0xae, 0xe2, 0x8b, 0x53, 0xf3,
-0x49, 0x85, 0xbd, 0x3f, 0xc0, 0x54, 0xfc, 0x47,
-0x9d, 0xe4, 0x17, 0xa1, 0x31, 0xb1, 0x71, 0xdc,
-0x75, 0xa9, 0xe5, 0xb2, 0xd5, 0x51, 0x4a, 0x3e,
-0xa7, 0x7c, 0x37, 0x15, 0x1a, 0x5a, 0x9d, 0x85,
-0x7f, 0x7e, 0xad, 0xd5, 0x9a, 0xb7, 0x2d, 0x68,
-0xfe, 0x1a, 0xd0, 0xa0, 0xba, 0x86, 0xe8, 0x0c,
-0xdf, 0x2b, 0x24, 0xe4, 0xa7, 0xfe, 0x8b, 0x7f,
-0x32, 0x1f, 0x16, 0x7d, 0x85, 0x76, 0xcf, 0x09,
-0x3e, 0xc1, 0x2a, 0x95, 0x97, 0xda, 0x3d, 0xe7,
-0xf2, 0xbe, 0x17, 0xae, 0x84, 0x03, 0xcb, 0xbe,
-0x34, 0xec, 0x38, 0xe0, 0x99, 0x6f, 0xbc, 0xf5,
-0xb9, 0xda, 0x3f, 0x6c, 0x7c, 0x36, 0x3b, 0xff,
-0x05, 0x0f, 0x8b, 0xb9, 0x23, 0x79, 0x01, 0xcf,
-0x4a, 0xfd, 0x40, 0xa1, 0x6e, 0x4a, 0x75, 0xf8,
-0xe1, 0x1c, 0xd8, 0xe2, 0x99, 0xfc, 0x6c, 0x0d,
-0x2b, 0xe7, 0x3b, 0x34, 0x3d, 0xd9, 0xba, 0x1f,
-0xb2, 0xfa, 0x23, 0xc1, 0x23, 0x84, 0x07, 0xea,
-0xd9, 0x17, 0x8d, 0x7d, 0xe2, 0xee, 0xb7, 0xf3,
-0x26, 0xd8, 0x17, 0x61, 0x5f, 0x57, 0xe9, 0xa8,
-0x3a, 0xe1, 0xb8, 0x0a, 0xf6, 0x89, 0x2f, 0x27,
-0xf3, 0xbe, 0x05, 0x77, 0xda, 0xe2, 0x3f, 0x4e,
-0xf8, 0x25, 0xd4, 0x98, 0xf9, 0xf5, 0xf2, 0x12,
-0x83, 0xd0, 0xb2, 0xc5, 0x97, 0xde, 0x03, 0xfa,
-0x68, 0x7e, 0x49, 0x91, 0x53, 0x7f, 0x5f, 0xf7,
-0x0f, 0x3a, 0xfd, 0x7f, 0x66, 0xef, 0x8f, 0xb4,
-0x0b, 0x7e, 0xa7, 0x5d, 0x37, 0x38, 0xe3, 0xac,
-0xbc, 0xab, 0xf5, 0x72, 0x49, 0x23, 0x15, 0xfe,
-0x1f, 0xb4, 0x18, 0x77, 0xeb, 0x43, 0xd4, 0x71,
-0x9d, 0x13, 0x83, 0xb1, 0xd9, 0xde, 0x1f, 0x89,
-0xd4, 0x54, 0xbd, 0xe9, 0xdc, 0xd7, 0x59, 0x35,
-0x35, 0x0d, 0xb6, 0xec, 0x43, 0x14, 0xbe, 0xd3,
-0xbf, 0x34, 0xfa, 0x25, 0x6a, 0x94, 0x4d, 0xfd,
-0x91, 0xfe, 0xa4, 0x3f, 0x40, 0x99, 0xc9, 0x3f,
-0x72, 0xcc, 0x62, 0x9b, 0xf4, 0x52, 0xb3, 0x79,
-0x15, 0x9b, 0xa4, 0xc0, 0xf2, 0x49, 0x9a, 0x37,
-0x0d, 0x3f, 0xcb, 0x29, 0xed, 0x57, 0xc7, 0x59,
-0x6f, 0x56, 0x7f, 0x00, 0x74, 0x33, 0x53, 0xf8,
-0x67, 0x2d, 0xbe, 0x78, 0xe7, 0xea, 0xf0, 0x9b,
-0xe5, 0x6b, 0x45, 0xfe, 0x7b, 0xdd, 0x27, 0xaf,
-0x0e, 0x52, 0xa9, 0x32, 0x85, 0x86, 0xfc, 0xe9,
-0xf8, 0x4f, 0x6b, 0xf1, 0x10, 0x9f, 0x8a, 0x1f,
-0xe6, 0x52, 0x20, 0x91, 0xf4, 0xf9, 0xab, 0x80,
-0xfa, 0xdc, 0xbc, 0xe6, 0x66, 0xea, 0x4f, 0x92,
-0x1a, 0x5d, 0xb4, 0xd9, 0xde, 0x1f, 0x00, 0xf5,
-0x6d, 0xbd, 0x40, 0x27, 0xab, 0x42, 0x1c, 0x86,
-0xde, 0x58, 0xaa, 0x3f, 0x00, 0x47, 0xe0, 0x77,
-0x1a, 0x1d, 0xa5, 0x33, 0xa8, 0xcc, 0xf0, 0xfb,
-0xca, 0xee, 0x0f, 0x40, 0xf5, 0x2c, 0xf3, 0xa7,
-0xc2, 0x3e, 0x0a, 0xf5, 0x07, 0x98, 0xee, 0x8f,
-0xf4, 0x4e, 0x2a, 0x10, 0xf4, 0x2f, 0xcd, 0x87,
-0x5d, 0xa2, 0x15, 0x95, 0xf3, 0xf3, 0xd3, 0x8d,
-0xb2, 0xad, 0xfe, 0x00, 0x51, 0x75, 0x0e, 0x1c,
-0xb2, 0xf2, 0x23, 0xcc, 0xc6, 0x0f, 0x87, 0xd4,
-0x7c, 0x58, 0x6f, 0x8a, 0x66, 0x9c, 0x6a, 0x94,
-0x6d, 0x09, 0x4e, 0xcd, 0x73, 0x7d, 0x78, 0x9d,
-0xb9, 0x7d, 0x95, 0x37, 0x6b, 0x3e, 0x6c, 0x8e,
-0x22, 0x4d, 0x35, 0x4d, 0x1a, 0x49, 0xd1, 0x50,
-0xb5, 0xdc, 0x72, 0x4b, 0xb0, 0xea, 0xe3, 0x3a,
-0x34, 0xbd, 0x05, 0xfd, 0xa9, 0x07, 0xfe, 0xb4,
-0x3f, 0x40, 0x8a, 0x16, 0xae, 0x1b, 0x9f, 0xb6,
-0xfa, 0x03, 0x48, 0x7a, 0x1b, 0x5d, 0xaf, 0x74,
-0x5a, 0xa5, 0x73, 0xf8, 0x3d, 0x4e, 0xef, 0x87,
-0x74, 0x7f, 0x80, 0x70, 0x91, 0x80, 0x3e, 0x3d,
-0x60, 0x0d, 0xaa, 0x80, 0xa9, 0xb0, 0x8f, 0x35,
-0xa8, 0x42, 0xa0, 0xf0, 0x53, 0x7b, 0x7f, 0x80,
-0xd8, 0x79, 0x5f, 0x90, 0x9a, 0x00, 0x7c, 0x83,
-0xca, 0xe2, 0x16, 0x17, 0x1c, 0x7f, 0x98, 0xc2,
-0x3e, 0x55, 0x6d, 0x3f, 0x5d, 0xd6, 0x79, 0x22,
-0x7e, 0x9e, 0xf8, 0xe1, 0x9b, 0x5f, 0xfe, 0x4a,
-0xd6, 0x7c, 0x58, 0xaa, 0xaf, 0x77, 0x51, 0xfc,
-0xe7, 0xbc, 0x3f, 0x68, 0xc1, 0x06, 0xa3, 0x1f,
-0x6a, 0x29, 0xfe, 0x93, 0x9a, 0x0f, 0x6b, 0x05,
-0x46, 0x32, 0xf8, 0x27, 0x69, 0xc5, 0x7f, 0x54,
-0xd6, 0x09, 0x11, 0xe1, 0x9f, 0xaa, 0x8f, 0xeb,
-0xf1, 0x56, 0x71, 0x6f, 0xb8, 0x49, 0xf7, 0x44,
-0x78, 0x6d, 0xaa, 0x3f, 0x40, 0x46, 0xff, 0x9c,
-0xb0, 0xe2, 0x3f, 0xea, 0xe7, 0xdd, 0x35, 0xb1,
-0x27, 0xf4, 0xca, 0xd6, 0xbc, 0x76, 0x77, 0x31,
-0xac, 0xd1, 0x2b, 0xdb, 0x38, 0x22, 0x2e, 0xb1,
-0xc6, 0x5d, 0x6a, 0x74, 0x2f, 0xb3, 0xcf, 0x47,
-0xcb, 0x49, 0xc5, 0x7f, 0xd4, 0x76, 0x56, 0x43,
-0x42, 0xeb, 0xbc, 0xe3, 0x4d, 0xc5, 0xc6, 0x4f,
-0xac, 0x88, 0xd0, 0xd5, 0x35, 0xa1, 0x8d, 0x70,
-0xfd, 0x15, 0xfd, 0x01, 0xb4, 0x9d, 0x2c, 0x35,
-0xff, 0x45, 0xcd, 0xa5, 0xc0, 0x0e, 0xa2, 0xd3,
-0x75, 0x54, 0xd6, 0x57, 0x6b, 0x38, 0xbf, 0x2f,
-0xcf, 0x61, 0x87, 0x72, 0xad, 0x41, 0x69, 0x99,
-0xfa, 0xb8, 0x1e, 0xd8, 0x39, 0x05, 0x0b, 0x11,
-0x06, 0x5b, 0xfd, 0x91, 0x2c, 0x7e, 0xf8, 0x43,
-0x0d, 0x86, 0xeb, 0x71, 0x79, 0x0a, 0x08, 0x5d,
-0xd1, 0x1f, 0x60, 0xba, 0xfb, 0xe8, 0x2a, 0x38,
-0xc5, 0xaa, 0xc1, 0x35, 0x48, 0xfd, 0x01, 0xa0,
-0x9a, 0x1a, 0x65, 0xfb, 0xa9, 0xbe, 0x9b, 0x4e,
-0xd9, 0xf8, 0xe1, 0x8a, 0x57, 0x9c, 0xd1, 0xab,
-0x22, 0xea, 0x76, 0xf9, 0xef, 0x10, 0xf6, 0x58,
-0x81, 0xa0, 0x51, 0x58, 0xaf, 0x7b, 0xfa, 0x78,
-0x15, 0xf5, 0x07, 0x00, 0xf4, 0x1f, 0x93, 0x59,
-0xfc, 0xf0, 0x2f, 0x89, 0x58, 0xd2, 0x57, 0xa7,
-0x16, 0x30, 0x43, 0x44, 0xc1, 0x43, 0xfe, 0x9a,
-0xa9, 0x08, 0xa1, 0x73, 0x8e, 0x28, 0xc9, 0x22,
-0x32, 0x74, 0xdb, 0xfb, 0x03, 0xe8, 0xd4, 0x1f,
-0x20, 0xd5, 0x0d, 0xe0, 0x2e, 0xfa, 0x1e, 0xcd,
-0x6b, 0x56, 0xe5, 0x4e, 0xb2, 0x4d, 0xc2, 0xaa,
-0x78, 0x6d, 0x80, 0x1d, 0xf0, 0x14, 0x9e, 0x82,
-0x4c, 0xfc, 0xc7, 0xcb, 0xa9, 0x3e, 0xee, 0x66,
-0xdd, 0xd5, 0x2a, 0x2f, 0x83, 0x13, 0x62, 0xb7,
-0xae, 0xb6, 0xca, 0xc7, 0x95, 0x41, 0xb1, 0x47,
-0x5f, 0xd2, 0x8a, 0x88, 0x88, 0x26, 0xc6, 0xe2,
-0xa9, 0xac, 0xfe, 0x90, 0xda, 0xfb, 0xe9, 0xfa,
-0xf7, 0x54, 0xbe, 0xc3, 0x02, 0x42, 0xfd, 0x16,
-0xed, 0x39, 0x71, 0xe5, 0x7c, 0x58, 0x23, 0x67,
-0xd2, 0xb8, 0x9c, 0xaa, 0x86, 0xbb, 0x64, 0x4d,
-0x83, 0xb5, 0xda, 0x02, 0xbc, 0x99, 0x1a, 0x6b,
-0x45, 0x83, 0x62, 0x17, 0xe8, 0xce, 0x75, 0xf6,
-0xf8, 0x4f, 0xe1, 0x66, 0xb1, 0x17, 0x2a, 0x41,
-0x35, 0xdd, 0xcb, 0xe0, 0xb7, 0xd4, 0xcd, 0xfb,
-0x42, 0xdb, 0x2c, 0x78, 0x56, 0xf3, 0x41, 0x81,
-0xea, 0xa0, 0xd0, 0xf4, 0x3c, 0xb3, 0xed, 0xbe,
-0xec, 0xfe, 0x00, 0x62, 0x5f, 0xea, 0x7d, 0x1f,
-0x47, 0x28, 0x51, 0x66, 0xd1, 0x9b, 0xf4, 0xe7,
-0xac, 0x7e, 0x6e, 0x16, 0x02, 0xc4, 0x17, 0x6f,
-0xb3, 0xc5, 0x7f, 0x42, 0xc5, 0x26, 0xfa, 0xef,
-0x3e, 0x8a, 0xff, 0x34, 0x29, 0x3b, 0x2c, 0x45,
-0xe4, 0xae, 0x82, 0xfd, 0x62, 0x25, 0xac, 0x17,
-0xe8, 0xe6, 0x53, 0x07, 0x06, 0xb4, 0x80, 0x6f,
-0xd8, 0xe6, 0xa3, 0xa5, 0x87, 0x0a, 0x85, 0x85,
-0x35, 0x6d, 0x7c, 0xb7, 0x5c, 0x05, 0xaf, 0xc7,
-0xf0, 0xc8, 0x83, 0xb2, 0xc7, 0x6a, 0x04, 0x8a,
-0xaa, 0xe9, 0x8d, 0xac, 0xfe, 0x00, 0x17, 0xa7,
-0xd7, 0x67, 0xd4, 0x08, 0xfa, 0xad, 0xfe, 0x6c,
-0x17, 0x0c, 0x6b, 0x30, 0xf7, 0xd4, 0x29, 0xdc,
-0x5a, 0xb6, 0xfe, 0x00, 0xe8, 0xa6, 0x29, 0xd5,
-0xd4, 0xcf, 0x76, 0x15, 0x3b, 0x12, 0x6d, 0x1c,
-0x99, 0x71, 0x5e, 0xbe, 0x64, 0xbc, 0x46, 0x63,
-0xd1, 0x4c, 0x47, 0x43, 0x8a, 0x31, 0x9e, 0x94,
-0xc7, 0xd3, 0xcf, 0xd3, 0xa1, 0x50, 0x5b, 0x24,
-0xe2, 0x87, 0x37, 0xf9, 0x20, 0x62, 0x56, 0xf9,
-0xaf, 0xdb, 0xc0, 0xde, 0x61, 0xeb, 0x0d, 0x9a,
-0xf7, 0x2a, 0x1b, 0x04, 0x45, 0x24, 0xaa, 0xcf,
-0xb5, 0xe1, 0x9f, 0x95, 0xa9, 0xa6, 0xcd, 0xf1,
-0xdc, 0x95, 0xd0, 0x9d, 0x5f, 0x35, 0xa0, 0xc6,
-0xc3, 0x63, 0xde, 0x6e, 0x6e, 0x15, 0x76, 0xc5,
-0xc0, 0xda, 0x51, 0xdb, 0xed, 0xf9, 0x2f, 0xfc,
-0x27, 0xe4, 0x96, 0xaa, 0x8a, 0xc5, 0x7e, 0xf1,
-0xd1, 0x3c, 0x62, 0x53, 0x12, 0x52, 0x0c, 0xb8,
-0xc4, 0xc6, 0x94, 0x87, 0xa9, 0x3f, 0xb6, 0xdb,
-0x9e, 0xff, 0xe2, 0x68, 0x16, 0xc9, 0xac, 0xec,
-0xa5, 0xf9, 0x53, 0xd4, 0x26, 0xa2, 0x97, 0x59,
-0x8d, 0x68, 0x06, 0x7d, 0x34, 0x11, 0xec, 0x97,
-0x74, 0x6a, 0xbb, 0x9c, 0xb4, 0xe5, 0xbf, 0x92,
-0xd3, 0x4d, 0x9e, 0x93, 0x86, 0x15, 0xed, 0xe9,
-0x2a, 0x1b, 0x87, 0x83, 0xd0, 0xc8, 0x67, 0xbc,
-0xcc, 0x56, 0xe1, 0x52, 0xe0, 0xa9, 0x5f, 0x64,
-0xf7, 0x47, 0xc2, 0x4d, 0xd2, 0x08, 0xce, 0x8f,
-0x8a, 0xea, 0x8d, 0x21, 0xca, 0x7f, 0x45, 0xe4,
-0x6a, 0x98, 0x8c, 0x56, 0x97, 0xe6, 0xd3, 0xa0,
-0x99, 0x41, 0xdc, 0xba, 0xf9, 0x1f, 0x65, 0xf5,
-0x07, 0xf8, 0x10, 0xfa, 0x44, 0x55, 0x88, 0xaf,
-0x43, 0xfc, 0xd3, 0x83, 0x6f, 0xe7, 0x88, 0x51,
-0x7d, 0x0a, 0x54, 0xe8, 0x7c, 0x73, 0xf8, 0x2b,
-0xb0, 0x7e, 0x4d, 0x95, 0x4e, 0x2f, 0x6e, 0xc7,
-0x3f, 0xd4, 0x2f, 0xc2, 0xc0, 0x1f, 0xdd, 0x8b,
-0x5f, 0x95, 0x97, 0xf3, 0xb0, 0x43, 0x11, 0x7d,
-0xba, 0x17, 0xf2, 0xdc, 0x6c, 0x48, 0xee, 0x84,
-0x95, 0x90, 0x57, 0xc3, 0xb2, 0xfa, 0x23, 0x71,
-0xba, 0xbf, 0x43, 0x30, 0x1f, 0x2a, 0x8b, 0x0a,
-0x70, 0xec, 0xb4, 0x06, 0xef, 0x56, 0x30, 0xd4,
-0xcf, 0x2b, 0x35, 0x1a, 0xc5, 0xd2, 0x7a, 0x25,
-0xfe, 0x99, 0x10, 0xbe, 0x64, 0xc1, 0x73, 0xaa,
-0x17, 0xad, 0xc9, 0xf3, 0x06, 0xa7, 0xb6, 0x12,
-0x67, 0xa1, 0xae, 0x26, 0x7f, 0xaf, 0xfc, 0xae,
-0x71, 0x44, 0x04, 0x63, 0x1b, 0xe3, 0x32, 0x64,
-0xf8, 0x1e, 0x88, 0x7f, 0x26, 0x71, 0x93, 0x54,
-0x12, 0x3e, 0xfc, 0x24, 0xba, 0xb0, 0x1d, 0x7f,
-0xfd, 0x8f, 0x8c, 0x4f, 0x62, 0xdf, 0xa5, 0xb6,
-0x51, 0x7f, 0x80, 0xcb, 0x66, 0x63, 0xd8, 0xe5,
-0x97, 0x27, 0xb2, 0xeb, 0xe3, 0x3a, 0x82, 0xa6,
-0x6f, 0xaf, 0xbc, 0x02, 0x0e, 0xc5, 0x02, 0x46,
-0x7e, 0x97, 0xfc, 0x15, 0xaa, 0xd7, 0xd0, 0x9c,
-0x7b, 0x55, 0x1f, 0xfc, 0xda, 0x4f, 0x13, 0x69,
-0xb3, 0xfa, 0x43, 0xfa, 0x68, 0x7d, 0x4c, 0xf0,
-0x22, 0x6c, 0x23, 0xff, 0x1d, 0x81, 0xee, 0xdc,
-0x9c, 0xfd, 0x50, 0x00, 0xde, 0xb8, 0xdb, 0x19,
-0xe9, 0x56, 0x74, 0xe1, 0x1c, 0xcf, 0xea, 0x0f,
-0xb9, 0x84, 0xd6, 0x87, 0xf8, 0x2a, 0x9f, 0x15,
-0xeb, 0x17, 0x31, 0x91, 0xa7, 0xb1, 0x56, 0xe8,
-0x05, 0xdf, 0xdb, 0xa8, 0x80, 0x14, 0xd8, 0x6c,
-0x7a, 0x85, 0xe3, 0x8a, 0xfe, 0x90, 0xb0, 0x37,
-0x5a, 0x39, 0xca, 0x4b, 0x10, 0x0f, 0x3c, 0x10,
-0x2b, 0xdd, 0xc5, 0xbf, 0xcd, 0xae, 0x86, 0xe7,
-0xc4, 0x57, 0xdf, 0x2e, 0x69, 0x45, 0x7f, 0xff,
-0x47, 0xd1, 0xeb, 0x63, 0x7c, 0x75, 0x6e, 0x89,
-0x8d, 0xff, 0x53, 0x60, 0x8c, 0x4b, 0x0d, 0xc3,
-0xb8, 0x5b, 0x56, 0xc0, 0x61, 0xd1, 0xdb, 0x93,
-0xff, 0x03, 0x79, 0x09, 0xde, 0xbf, 0x61, 0xd0,
-0xd9, 0xf5, 0x32, 0x42, 0xa3, 0x58, 0x9d, 0x96,
-0x5d, 0x1f, 0x77, 0xed, 0x41, 0x31, 0x09, 0x55,
-0x89, 0x4d, 0xc3, 0xd2, 0x18, 0xbb, 0x04, 0x8d,
-0x5d, 0x6a, 0x5c, 0x9e, 0x34, 0xbe, 0x23, 0x35,
-0x0c, 0x2e, 0x4d, 0x14, 0x11, 0x55, 0xec, 0x26,
-0x5c, 0xa8, 0xce, 0x4c, 0xfc, 0x07, 0xf1, 0x0f,
-0x37, 0x85, 0x3f, 0x49, 0x61, 0x37, 0xa0, 0xfe,
-0x54, 0xa8, 0xbd, 0x57, 0xc0, 0xfb, 0xc2, 0x6a,
-0xdb, 0x5e, 0x0e, 0x1f, 0xa7, 0x02, 0xd7, 0x7f,
-0x9b, 0xd5, 0x1f, 0x7b, 0x2d, 0xdc, 0x90, 0x0a,
-0x23, 0x53, 0xd8, 0x3c, 0xb2, 0xca, 0x51, 0x62,
-0x55, 0x1c, 0xa3, 0x5a, 0xa6, 0xd1, 0x69, 0x56,
-0xbf, 0xd9, 0x4c, 0x7f, 0xa4, 0x7e, 0xc4, 0x3f,
-0x5d, 0x66, 0xd9, 0xdb, 0x8e, 0xd5, 0xe1, 0x37,
-0xac, 0x68, 0x8f, 0x83, 0xe6, 0x2b, 0xad, 0xed,
-0xfa, 0x72, 0x72, 0xf1, 0x4a, 0x63, 0x36, 0xbc,
-0xd4, 0xb1, 0x2d, 0x76, 0x4d, 0x1d, 0x6e, 0xec,
-0xe9, 0xf5, 0x6f, 0xdd, 0x32, 0xc4, 0xc3, 0xc9,
-0xf2, 0x71, 0x4a, 0xeb, 0x3b, 0x3a, 0x59, 0xf9,
-0x71, 0x2b, 0x7f, 0xda, 0x69, 0xe8, 0xe6, 0x5f,
-0x51, 0x04, 0x0c, 0x81, 0x5f, 0xe4, 0x9a, 0x78,
-0x56, 0x7f, 0xa4, 0xc8, 0x55, 0x47, 0xcd, 0xea,
-0x78, 0x01, 0xc2, 0x1e, 0x38, 0xbc, 0xe8, 0xb9,
-0x68, 0x41, 0x4c, 0xf6, 0xb2, 0x33, 0x1a, 0x3e,
-0x76, 0x8f, 0xec, 0x15, 0x7f, 0x30, 0x16, 0xc4,
-0xf0, 0x45, 0xee, 0xcb, 0xe0, 0x1f, 0x23, 0xa9,
-0x4d, 0x48, 0x41, 0x6e, 0x45, 0x17, 0x27, 0x1c,
-0x34, 0x1f, 0x56, 0x8e, 0x39, 0x27, 0x94, 0xef,
-0x68, 0x56, 0x47, 0xf1, 0x09, 0xad, 0xbe, 0x78,
-0xe9, 0x9f, 0xe0, 0x1f, 0x23, 0xf8, 0x65, 0x97,
-0x5b, 0xa6, 0x69, 0x59, 0x05, 0x34, 0x0f, 0x7d,
-0xae, 0x38, 0x04, 0x55, 0x08, 0x7b, 0xf8, 0x4e,
-0x38, 0xe4, 0x0d, 0x50, 0x7f, 0x48, 0x56, 0x9c,
-0xc9, 0x7f, 0x7d, 0xa5, 0xe5, 0x29, 0xa8, 0x5a,
-0x84, 0x4a, 0xa6, 0x5c, 0x5a, 0xb7, 0xa8, 0x2a,
-0xd4, 0xad, 0xb1, 0x27, 0xe0, 0x75, 0xd9, 0xd7,
-0x7e, 0xed, 0x16, 0x96, 0x03, 0xeb, 0x94, 0xfa,
-0x76, 0xab, 0x3e, 0x6e, 0xfa, 0x7a, 0xea, 0x8f,
-0x4d, 0xd9, 0x2e, 0x35, 0xca, 0x5a, 0xc2, 0x68,
-0xaf, 0x9b, 0xd0, 0x3a, 0x7f, 0xa3, 0x78, 0xa3,
-0x34, 0xff, 0x96, 0x92, 0x76, 0x62, 0xe8, 0x51,
-0xeb, 0x80, 0x28, 0xcb, 0x34, 0x50, 0x20, 0xfc,
-0xb3, 0x0d, 0x7c, 0x34, 0x04, 0x56, 0x81, 0x35,
-0xe2, 0xab, 0x64, 0xcd, 0x7f, 0x05, 0x33, 0x89,
-0x38, 0x74, 0x27, 0x23, 0x28, 0x55, 0x41, 0xd0,
-0xa8, 0x29, 0xad, 0x7f, 0xfa, 0x2c, 0xfc, 0x13,
-0xe4, 0x6a, 0x18, 0xb5, 0x9f, 0x80, 0x06, 0x54,
-0xd4, 0x0e, 0x03, 0x8f, 0x54, 0x09, 0x6e, 0x16,
-0x79, 0xd1, 0x90, 0x06, 0xac, 0xf9, 0x20, 0x2c,
-0x8d, 0x7f, 0xf2, 0x07, 0xe1, 0x13, 0xa9, 0xd1,
-0x98, 0x31, 0x2c, 0x5b, 0xdd, 0xb0, 0xdb, 0x5c,
-0xee, 0xce, 0x72, 0xab, 0x2d, 0x36, 0x21, 0x22,
-0xf8, 0x04, 0x6e, 0x32, 0xd4, 0xcd, 0x0f, 0xbf,
-0x3b, 0x23, 0x9d, 0x6f, 0xb2, 0xe6, 0xc3, 0xde,
-0x94, 0x6a, 0x0b, 0xf9, 0x09, 0xdc, 0xdc, 0x32,
-0x2b, 0x4a, 0xfd, 0x21, 0xb5, 0xc6, 0x45, 0xae,
-0x61, 0xf9, 0x04, 0xbc, 0x42, 0xa3, 0x0d, 0x1e,
-0xca, 0xe2, 0xff, 0x50, 0x91, 0xb2, 0x07, 0x15,
-0x35, 0x4b, 0xf6, 0xf4, 0xe9, 0x55, 0xfc, 0x2f,
-0x45, 0x78, 0x54, 0xef, 0xa1, 0x8c, 0x03, 0x43,
-0x35, 0x4b, 0x1a, 0x23, 0xd2, 0x91, 0x3d, 0x1f,
-0x4d, 0xd9, 0x0f, 0x15, 0xcb, 0x11, 0xd4, 0xd1,
-0x7c, 0x34, 0x5f, 0x6b, 0xab, 0x9b, 0xfa, 0x43,
-0x52, 0x99, 0x12, 0x21, 0x40, 0x2b, 0x15, 0xa8,
-0x65, 0xcf, 0x87, 0x55, 0xf6, 0x1b, 0x8c, 0xb2,
-0x8d, 0x23, 0xb0, 0x5f, 0xf2, 0x19, 0xad, 0x51,
-0xbc, 0xfe, 0x29, 0x85, 0x56, 0x38, 0x77, 0x04,
-0x9e, 0x8a, 0x54, 0x0c, 0xf0, 0xac, 0xf9, 0xb0,
-0x33, 0x97, 0xa3, 0xb6, 0xb9, 0xba, 0xdd, 0xca,
-0x76, 0x51, 0xd9, 0x23, 0x02, 0xd7, 0xdf, 0x40,
-0x7a, 0x22, 0x5e, 0xbf, 0xe1, 0x6f, 0xcf, 0xa7,
-0xfe, 0x48, 0xd3, 0xfb, 0xd3, 0xea, 0x8f, 0x24,
-0x4d, 0x8f, 0x05, 0x81, 0x2b, 0x04, 0x83, 0x3a,
-0x0c, 0x58, 0xf8, 0x67, 0xfa, 0x7a, 0xaf, 0x16,
-0x93, 0x12, 0x30, 0x9b, 0xfa, 0x53, 0xe9, 0x12,
-0x19, 0xca, 0x25, 0xa2, 0xf9, 0x34, 0x23, 0x18,
-0x90, 0xc2, 0x9f, 0xfc, 0x39, 0x2a, 0x5d, 0x74,
-0xd8, 0xf8, 0x3f, 0xf5, 0x08, 0x7b, 0x2a, 0x7b,
-0xbc, 0x31, 0x54, 0x1a, 0x2f, 0xb2, 0xff, 0x2e,
-0x9c, 0x14, 0xf6, 0xa1, 0xf8, 0x4f, 0x7e, 0x52,
-0xfe, 0x4b, 0xf8, 0xa9, 0x59, 0x4d, 0xa3, 0x43,
-0xf8, 0xf4, 0xe5, 0xe0, 0x5d, 0x73, 0x2b, 0xd1,
-0x7e, 0x4c, 0x5e, 0x97, 0xeb, 0x54, 0xc8, 0x51,
-0xcd, 0x23, 0x3e, 0x4c, 0x27, 0x2c, 0x19, 0xe2,
-0x9a, 0x7b, 0x89, 0x1f, 0x3d, 0x88, 0x73, 0xe8,
-0x2f, 0xd8, 0xfb, 0x43, 0x5e, 0x05, 0x4f, 0xc0,
-0x7c, 0xb3, 0xe7, 0xfe, 0xab, 0x4a, 0xe0, 0x59,
-0x14, 0xf2, 0x56, 0xb1, 0x13, 0xb0, 0xd6, 0x3d,
-0x3f, 0xf9, 0xd9, 0xd5, 0x9e, 0xff, 0xaa, 0x3c,
-0xc1, 0x4b, 0xcd, 0xc5, 0x75, 0x8c, 0xa7, 0xf1,
-0x4f, 0x0f, 0xbf, 0x8a, 0xad, 0xa1, 0x69, 0x68,
-0x75, 0xea, 0x55, 0xf0, 0x5c, 0x47, 0x65, 0xb2,
-0xf2, 0xbe, 0xa6, 0x0b, 0x14, 0xff, 0xa1, 0xb4,
-0xd7, 0x17, 0xe1, 0xe7, 0x5d, 0x0b, 0xa8, 0x51,
-0xb6, 0x23, 0x83, 0x7f, 0xae, 0xed, 0xd2, 0xac,
-0x30, 0x7b, 0x1c, 0x1d, 0x0d, 0x1a, 0x0b, 0xfb,
-0x60, 0xbc, 0x6c, 0xd4, 0x4a, 0xa3, 0xab, 0x31,
-0x79, 0x2c, 0xf7, 0xf5, 0x54, 0x69, 0x7c, 0x06,
-0xff, 0x98, 0x39, 0x7f, 0x90, 0x3e, 0xd1, 0x1a,
-0x93, 0xbe, 0x89, 0xe6, 0x4b, 0xc6, 0x5b, 0x16,
-0x10, 0xea, 0xbc, 0x04, 0x97, 0xd1, 0xd0, 0x3b,
-0xb7, 0xca, 0xc7, 0xdd, 0xbf, 0xb5, 0x4a, 0xe7,
-0xec, 0xf5, 0x71, 0x85, 0x5b, 0xa4, 0xdf, 0x40,
-0xe5, 0xa8, 0x77, 0x15, 0x62, 0x8b, 0x6d, 0x50,
-0x75, 0x0e, 0xf5, 0xe7, 0x3f, 0x46, 0xf7, 0x81,
-0xeb, 0x09, 0xc7, 0xb7, 0xd9, 0xb0, 0xde, 0x11,
-0x28, 0x35, 0xbd, 0xe3, 0xec, 0xe9, 0x34, 0xfe,
-0xa4, 0xfe, 0xd8, 0x4f, 0x68, 0x95, 0x09, 0xbe,
-0x2a, 0x7c, 0x42, 0x7b, 0x00, 0xe6, 0xf7, 0x3b,
-0xbe, 0xbe, 0xf9, 0xa4, 0xb2, 0x4f, 0x72, 0x25,
-0x54, 0xea, 0x30, 0xf0, 0x24, 0xbb, 0x9b, 0x54,
-0x59, 0x66, 0x3e, 0xac, 0x5e, 0x3c, 0x04, 0xdb,
-0x0c, 0xdf, 0x00, 0x6f, 0x60, 0x06, 0x6d, 0x33,
-0xb3, 0xb5, 0x0f, 0x7f, 0xad, 0x3d, 0x50, 0x2e,
-0xd4, 0x5d, 0xe1, 0xa3, 0x7c, 0x47, 0x47, 0x6c,
-0x18, 0x57, 0x78, 0x6b, 0x7a, 0x7f, 0xae, 0x98,
-0x59, 0x0e, 0xef, 0xbc, 0xdd, 0x60, 0x3a, 0xf7,
-0x16, 0x91, 0x59, 0x6f, 0x80, 0x82, 0x89, 0xa6,
-0x31, 0xed, 0x8f, 0x92, 0x85, 0x67, 0x8e, 0xc2,
-0xfb, 0xb1, 0x00, 0x51, 0x73, 0xed, 0xf3, 0x61,
-0x47, 0xf8, 0x7b, 0x29, 0xfc, 0x33, 0xa6, 0xbf,
-0x2f, 0x05, 0x01, 0x15, 0xef, 0x6f, 0xa4, 0x6f,
-0x53, 0x63, 0xe4, 0xbd, 0x88, 0x7f, 0xfe, 0xca,
-0x08, 0x0e, 0xe3, 0x8a, 0x65, 0xfa, 0x23, 0x99,
-0x1a, 0x7e, 0x56, 0xfc, 0xf3, 0xc9, 0xfc, 0x55,
-0x9d, 0x41, 0x71, 0x49, 0xa4, 0x88, 0xbe, 0xfc,
-0x32, 0xdc, 0x74, 0x1a, 0xed, 0x5d, 0x03, 0x3b,
-0x26, 0x8a, 0x06, 0x5c, 0xab, 0x58, 0xd6, 0x7c,
-0x10, 0x44, 0x6b, 0xf7, 0x98, 0x7c, 0xbf, 0xdb,
-0x07, 0x07, 0x36, 0x7b, 0x86, 0x11, 0xf6, 0x7c,
-0x40, 0x13, 0x6c, 0xdb, 0xd5, 0x17, 0xc2, 0xf3,
-0xa1, 0x23, 0x16, 0x48, 0x2e, 0x8e, 0xa3, 0xbf,
-0x99, 0xc1, 0x3f, 0xe5, 0x70, 0xc0, 0x53, 0xd5,
-0x32, 0x2f, 0xee, 0xf6, 0xe9, 0x7b, 0x24, 0x8f,
-0x52, 0x32, 0x55, 0xcf, 0x7e, 0x42, 0x8d, 0xb3,
-0x2a, 0xbd, 0x5b, 0xaf, 0x0a, 0xa1, 0xbe, 0x8d,
-0x65, 0xea, 0xe3, 0x14, 0xc5, 0xd8, 0x0f, 0x73,
-0xa9, 0xe9, 0xba, 0x53, 0xda, 0x03, 0xf7, 0xf0,
-0x15, 0x71, 0x4f, 0x97, 0x76, 0x00, 0xca, 0x07,
-0x54, 0x7f, 0x93, 0xc2, 0xc3, 0xd0, 0x63, 0xa8,
-0x7e, 0x47, 0xb8, 0x78, 0x7a, 0xf5, 0x45, 0x3e,
-0x55, 0xc3, 0x51, 0xda, 0xcb, 0xe1, 0x53, 0x2e,
-0xb4, 0x07, 0xfe, 0xd1, 0xf9, 0x1c, 0xde, 0x1f,
-0x81, 0x22, 0x77, 0xf5, 0x3a, 0x7c, 0x70, 0xa4,
-0x9d, 0x3a, 0xa8, 0x97, 0x89, 0xdc, 0xe9, 0xe7,
-0xa1, 0xfe, 0x90, 0xff, 0x00, 0xfe, 0xc1, 0xf9,
-0xc3, 0x14, 0xff, 0xd1, 0x83, 0x83, 0x33, 0x9e,
-0xfb, 0x25, 0x0a, 0x68, 0x1a, 0x5d, 0xe7, 0xf0,
-0xc8, 0x25, 0x58, 0x40, 0x86, 0x7e, 0x45, 0x3a,
-0x1e, 0x32, 0x90, 0xf3, 0x21, 0xbf, 0x2c, 0x16,
-0x26, 0x9c, 0xd4, 0xfd, 0xe6, 0x25, 0x51, 0x7d,
-0xda, 0x95, 0x40, 0x20, 0x7d, 0xd9, 0xb3, 0x30,
-0x99, 0x3f, 0xa1, 0x36, 0x18, 0xc7, 0xc4, 0x42,
-0xdd, 0x39, 0xf1, 0xa5, 0x71, 0x5b, 0xfe, 0xeb,
-0x43, 0x38, 0x20, 0xea, 0xc7, 0xf9, 0x0b, 0xee,
-0x0f, 0xcc, 0x9b, 0x44, 0x6d, 0x52, 0xa5, 0x31,
-0xb8, 0x37, 0x99, 0x1e, 0xd3, 0xb1, 0xd5, 0xfd,
-0x13, 0xb2, 0xf8, 0x21, 0x47, 0x1f, 0x1b, 0xb7,
-0xf3, 0x7f, 0x94, 0x3d, 0xcc, 0x37, 0x7c, 0x18,
-0x3f, 0x2b, 0xfc, 0xbe, 0xc0, 0xb4, 0xe6, 0x7f,
-0x3d, 0x6c, 0xcc, 0xa5, 0x46, 0x2e, 0xf9, 0xd1,
-0x6e, 0x56, 0x6e, 0x44, 0xfc, 0xec, 0xa3, 0x0c,
-0xfe, 0x51, 0xd2, 0xfd, 0x21, 0xc7, 0xe0, 0x80,
-0x36, 0x97, 0xa6, 0xcd, 0x8e, 0x49, 0x8f, 0x81,
-0x27, 0xc9, 0xfa, 0x1c, 0xbb, 0x58, 0xb7, 0xf0,
-0xb4, 0x3b, 0xec, 0xfd, 0xb1, 0x17, 0x59, 0xfd,
-0x21, 0x6b, 0x4d, 0x67, 0xbc, 0x68, 0x8c, 0xda,
-0x36, 0xf6, 0x23, 0xec, 0xa7, 0x23, 0x35, 0xa3,
-0x95, 0x75, 0xb2, 0xcf, 0xf9, 0x72, 0xb2, 0xf6,
-0x8e, 0x0d, 0x34, 0xbf, 0x23, 0xf3, 0xfd, 0x52,
-0xfc, 0xe7, 0x46, 0x73, 0x7e, 0xbc, 0xcc, 0xe2,
-0x47, 0x25, 0xd3, 0xfd, 0x91, 0xfe, 0x2c, 0x15,
-0x31, 0x7b, 0xe9, 0x9e, 0x2b, 0xe7, 0xc3, 0xa6,
-0x40, 0x75, 0x1f, 0xb5, 0xdd, 0x86, 0xef, 0x0c,
-0x5a, 0xf5, 0x98, 0x14, 0xf1, 0x28, 0xa0, 0x23,
-0x47, 0x4a, 0x02, 0xed, 0xce, 0xb8, 0x7c, 0xd6,
-0x96, 0xff, 0xa2, 0x5f, 0x7f, 0x7e, 0x52, 0x45,
-0x6f, 0x48, 0xe9, 0xbc, 0xb3, 0xca, 0x2a, 0x9c,
-0xd4, 0xf7, 0x09, 0x8f, 0xc8, 0xef, 0x93, 0xef,
-0x87, 0x6e, 0xd3, 0x7b, 0x4f, 0x7e, 0x9c, 0xfd,
-0x21, 0x8b, 0xff, 0xf3, 0x30, 0xf8, 0x92, 0x2a,
-0xb5, 0x49, 0xef, 0xec, 0x40, 0xa1, 0x8e, 0x1d,
-0x85, 0x3d, 0x71, 0xd4, 0x48, 0xb5, 0x81, 0x31,
-0xa2, 0xa2, 0x19, 0xd9, 0xf3, 0x61, 0xb5, 0x2f,
-0x8a, 0x7d, 0x53, 0xfd, 0x01, 0xd8, 0xd4, 0x98,
-0xb0, 0x37, 0x61, 0x5f, 0xb8, 0x6c, 0x79, 0xde,
-0xc9, 0xab, 0xbe, 0x08, 0x5d, 0xd1, 0x79, 0xcb,
-0xf3, 0x56, 0xb3, 0xc9, 0x6c, 0xfe, 0x8f, 0xd6,
-0xf0, 0x2a, 0x82, 0xba, 0x2a, 0x6a, 0xbb, 0x64,
-0xba, 0xfc, 0x9d, 0x14, 0xc8, 0xa5, 0x41, 0x5d,
-0xf2, 0x18, 0xeb, 0xa7, 0x40, 0xfd, 0x4d, 0xf6,
-0xf9, 0x20, 0x16, 0xff, 0xa7, 0xf1, 0xe7, 0xae,
-0xb3, 0x9d, 0x93, 0xfa, 0xaf, 0xe1, 0xba, 0x14,
-0x51, 0xea, 0x8f, 0xa8, 0x9f, 0x51, 0x8d, 0x4f,
-0xb2, 0xdf, 0x43, 0xbe, 0x91, 0xd5, 0x1f, 0xdb,
-0xea, 0x0f, 0x90, 0x9a, 0x86, 0xe6, 0x83, 0xc5,
-0xa8, 0xb8, 0x9c, 0xb4, 0x2c, 0x78, 0x24, 0xa9,
-0x50, 0xa3, 0xf2, 0x97, 0x21, 0x6e, 0x2c, 0x89,
-0x4b, 0xb6, 0xfe, 0xd8, 0x25, 0x8f, 0xa3, 0xdb,
-0x65, 0xf9, 0x53, 0xb3, 0xc4, 0x5a, 0x29, 0xdf,
-0x6c, 0x5d, 0x25, 0xdf, 0x05, 0xfb, 0x8c, 0xf9,
-0x66, 0x5b, 0x88, 0xfd, 0x10, 0x1e, 0x48, 0xb5,
-0x8e, 0xfc, 0x28, 0x9b, 0xff, 0x13, 0xc6, 0xd7,
-0xac, 0x67, 0x0f, 0x86, 0xad, 0xe9, 0xb7, 0x93,
-0x14, 0xef, 0xda, 0x3e, 0x67, 0x3c, 0xef, 0x7e,
-0x04, 0x95, 0xe8, 0x78, 0xae, 0xf2, 0xae, 0xce,
-0x4d, 0x4e, 0x3f, 0x3e, 0x8c, 0x2a, 0x43, 0xd4,
-0x0d, 0x80, 0xb6, 0x19, 0xf1, 0xc7, 0x7c, 0x06,
-0x0f, 0xa6, 0x1a, 0xb3, 0x7f, 0xa4, 0x36, 0x34,
-0x6d, 0xa0, 0x8e, 0xf4, 0xab, 0xb8, 0xbd, 0x3f,
-0x36, 0xe5, 0xbf, 0x2e, 0x50, 0x9a, 0x4f, 0x97,
-0xbd, 0xf0, 0x46, 0x2c, 0x18, 0x73, 0x8e, 0x50,
-0x7f, 0x00, 0x68, 0x8c, 0xe7, 0xaf, 0xc4, 0x23,
-0x47, 0x45, 0x75, 0x9c, 0xf8, 0xcf, 0x76, 0xfe,
-0x0f, 0x1f, 0x85, 0xef, 0x4c, 0xf5, 0x47, 0x32,
-0x82, 0x39, 0xf3, 0x45, 0x91, 0x15, 0xff, 0x91,
-0x0a, 0xba, 0x3a, 0xc9, 0xd4, 0x04, 0x4b, 0x5c,
-0x82, 0xd9, 0xf1, 0x4f, 0xca, 0xdf, 0x5f, 0x1a,
-0x2d, 0x52, 0xa4, 0xf7, 0x84, 0x35, 0x36, 0x02,
-0xed, 0x9d, 0x19, 0x40, 0x3c, 0x50, 0x46, 0xfd,
-0x1b, 0x89, 0x1f, 0x72, 0x05, 0xff, 0x67, 0x3f,
-0xe1, 0x99, 0xad, 0xd4, 0xc8, 0x88, 0xa6, 0x33,
-0x3c, 0x84, 0x66, 0x77, 0xb7, 0xe1, 0x21, 0x86,
-0x49, 0x39, 0xfc, 0x82, 0xd5, 0x2c, 0xcb, 0xe2,
-0x3f, 0x5b, 0xfd, 0x01, 0x10, 0x4d, 0xa9, 0x0f,
-0xb1, 0x72, 0xe5, 0x29, 0xdd, 0x63, 0x7c, 0x26,
-0xce, 0x52, 0x6d, 0x04, 0xa8, 0xb0, 0x9d, 0x3f,
-0xa5, 0x59, 0xf3, 0x2c, 0xb2, 0xf9, 0x3f, 0xbb,
-0x95, 0x14, 0xfe, 0x89, 0xad, 0x4b, 0x59, 0x7f,
-0x0a, 0x04, 0x85, 0x88, 0x2f, 0xa4, 0xc4, 0x0e,
-0xa4, 0x06, 0xab, 0x65, 0xf3, 0x7f, 0xf0, 0xa5,
-0xb8, 0x2b, 0x2c, 0xeb, 0x5d, 0x4f, 0xa3, 0x37,
-0x4a, 0x63, 0xb3, 0x60, 0x42, 0x0f, 0x00, 0xc2,
-0x42, 0x5d, 0x8c, 0x2a, 0x01, 0x9a, 0x4f, 0x71,
-0x34, 0x3b, 0xff, 0x95, 0x8a, 0x87, 0x8c, 0xc4,
-0x3e, 0x81, 0xc6, 0x45, 0x05, 0xed, 0x12, 0xf5,
-0x37, 0x78, 0xa9, 0xed, 0xf6, 0x61, 0x3c, 0x62,
-0xb5, 0xaa, 0x8b, 0x36, 0xff, 0x21, 0x13, 0xff,
-0x91, 0xe8, 0xfa, 0x4f, 0x19, 0x2e, 0x8b, 0xff,
-0x4c, 0x67, 0x29, 0xff, 0xf5, 0x89, 0x8e, 0xeb,
-0xd3, 0x2e, 0x2f, 0xd7, 0x5e, 0x93, 0x16, 0x2c,
-0x72, 0x0e, 0xb3, 0x07, 0xec, 0xf1, 0x1f, 0xa9,
-0x0f, 0xaa, 0xa6, 0xf8, 0xcf, 0x50, 0x95, 0x7a,
-0x9e, 0x3e, 0x88, 0x71, 0x55, 0x78, 0xb6, 0xe9,
-0x11, 0xc4, 0xdb, 0x78, 0xca, 0xc6, 0xff, 0xa1,
-0xfe, 0x00, 0x60, 0xf1, 0x9f, 0x07, 0x77, 0x92,
-0xa0, 0x96, 0xd0, 0xfb, 0x6a, 0x7a, 0x1b, 0x4d,
-0x68, 0x32, 0x3b, 0x14, 0x8a, 0x77, 0xcd, 0xb5,
-0xf1, 0x7f, 0x60, 0xa7, 0xb5, 0xfe, 0x56, 0x3c,
-0xed, 0x26, 0x28, 0x68, 0xa1, 0xfe, 0xd8, 0xd2,
-0x7e, 0xf0, 0xb4, 0xaa, 0x5b, 0xd8, 0x4e, 0x58,
-0xc7, 0xe7, 0xb6, 0x5c, 0x81, 0x7f, 0x88, 0x76,
-0x55, 0x3b, 0x15, 0xc6, 0x21, 0x1a, 0xcf, 0xe3,
-0x16, 0x10, 0x0a, 0xa4, 0x06, 0xdf, 0xf7, 0x0f,
-0x5b, 0x11, 0xbf, 0x1e, 0x5b, 0xfe, 0x6b, 0xa7,
-0x0d, 0xf6, 0xe8, 0x28, 0xfc, 0x80, 0xc2, 0x3e,
-0xd4, 0xe8, 0xe6, 0x07, 0x65, 0x83, 0x9c, 0x4e,
-0xcd, 0xcf, 0xe6, 0xff, 0x50, 0x7c, 0xe0, 0x3b,
-0x52, 0x0a, 0x6f, 0xd3, 0x7c, 0x90, 0x0e, 0xab,
-0x1f, 0x69, 0x6d, 0x0a, 0xff, 0x9c, 0x34, 0x02,
-0x7f, 0x3a, 0x1f, 0xe4, 0x0c, 0xf8, 0xb6, 0xe7,
-0xc5, 0x36, 0x8f, 0xc2, 0x87, 0x46, 0x6d, 0x4c,
-0xed, 0x91, 0x7b, 0xe0, 0x45, 0xd4, 0x3f, 0xbe,
-0x15, 0xcc, 0xcb, 0x8f, 0x26, 0x2c, 0x6a, 0xb4,
-0xad, 0x3f, 0xa4, 0x42, 0xdd, 0x33, 0x56, 0xd2,
-0xb2, 0xa0, 0x5a, 0x48, 0x7a, 0x43, 0x6a, 0x49,
-0xee, 0xab, 0xb0, 0x27, 0x9a, 0x62, 0x24, 0x42,
-0xf8, 0xb3, 0xfa, 0x6f, 0xd0, 0xd5, 0xca, 0xc4,
-0x7f, 0x84, 0x76, 0x97, 0x15, 0xff, 0xc9, 0xa3,
-0xb6, 0xf6, 0x3f, 0x8b, 0xcc, 0xa1, 0x6e, 0xd8,
-0xa7, 0x70, 0x47, 0x6d, 0x1b, 0xe5, 0xe7, 0xd8,
-0xac, 0x81, 0x07, 0xe9, 0xfb, 0x6d, 0x0f, 0x67,
-0xfa, 0x43, 0x46, 0x22, 0x6f, 0xc2, 0x6f, 0xf1,
-0xb3, 0x75, 0x51, 0xb6, 0xeb, 0x25, 0x04, 0x42,
-0xd6, 0x7c, 0x90, 0x3f, 0x76, 0xdc, 0x70, 0x26,
-0x7f, 0xb5, 0x1c, 0x0c, 0x53, 0x6a, 0xcc, 0x79,
-0xe7, 0x15, 0xfc, 0x9f, 0xa9, 0xf8, 0x0f, 0xe9,
-0xf3, 0xda, 0x54, 0xa0, 0xe3, 0x3c, 0x55, 0xac,
-0x50, 0x20, 0xe8, 0x6d, 0x78, 0x91, 0xf8, 0x2d,
-0xb6, 0xf9, 0xb0, 0x70, 0x50, 0x5c, 0x4e, 0x45,
-0x7b, 0xa8, 0x2d, 0x36, 0x0a, 0xe7, 0xe5, 0x37,
-0xd1, 0x6c, 0xdd, 0x90, 0xbc, 0xfd, 0xa4, 0x5c,
-0x85, 0x16, 0x6d, 0x41, 0xc8, 0x77, 0xa7, 0x64,
-0x9b, 0x8f, 0x56, 0x92, 0xe2, 0xf3, 0x14, 0xdc,
-0x97, 0x0a, 0x3b, 0x5b, 0x63, 0xdd, 0xe0, 0x49,
-0xed, 0x06, 0x44, 0x38, 0xf2, 0x17, 0xc5, 0x73,
-0xfa, 0x36, 0xca, 0x87, 0x3e, 0x6d, 0xe7, 0xff,
-0xa4, 0xf8, 0x8a, 0xd4, 0x16, 0x60, 0x2d, 0xaf,
-0xb4, 0x1a, 0x63, 0xf2, 0x47, 0xa0, 0x2c, 0x19,
-0x6e, 0x67, 0x77, 0x89, 0x17, 0xa1, 0xac, 0x25,
-0xaf, 0xdd, 0xd6, 0x9f, 0x44, 0x57, 0x36, 0x4c,
-0x0f, 0x39, 0xa5, 0x36, 0x2f, 0xbe, 0x41, 0xb5,
-0x26, 0x3c, 0x24, 0xed, 0x86, 0xf2, 0x73, 0x25,
-0x34, 0x08, 0xb5, 0x37, 0xa1, 0x9b, 0x79, 0x59,
-0xf3, 0xd1, 0x66, 0xa6, 0xfb, 0x3d, 0x1e, 0x84,
-0x97, 0x45, 0xea, 0xc5, 0xe1, 0xd7, 0xb0, 0x20,
-0x59, 0x50, 0x87, 0xf6, 0xe2, 0x42, 0x32, 0xf0,
-0x2a, 0x2a, 0xde, 0x8a, 0xcc, 0x7c, 0x10, 0x69,
-0xca, 0x1e, 0xd1, 0xfc, 0x5c, 0x6b, 0xa1, 0xfa,
-0x9a, 0xc7, 0xe0, 0x3d, 0x25, 0xd8, 0xef, 0x3a,
-0x38, 0x63, 0xcc, 0x0a, 0x04, 0xcd, 0x8e, 0xda,
-0xfa, 0x43, 0x96, 0x6a, 0x29, 0xbe, 0x47, 0xc1,
-0x05, 0xcb, 0xba, 0x2d, 0x1c, 0xc6, 0xf5, 0x69,
-0x30, 0x2e, 0xc2, 0xc2, 0x01, 0xe7, 0x78, 0xe7,
-0x5d, 0xfc, 0x28, 0xbe, 0x88, 0xf3, 0x94, 0xad,
-0x3f, 0x24, 0xf1, 0x7f, 0x28, 0xec, 0xd6, 0x4a,
-0xb4, 0x93, 0x03, 0x83, 0x1e, 0xb4, 0x47, 0xf2,
-0x4a, 0xe8, 0x45, 0xfb, 0xce, 0x77, 0x31, 0x9f,
-0x72, 0x3c, 0xa1, 0xf7, 0x54, 0xd8, 0xfb, 0xb3,
-0x51, 0x7f, 0x80, 0x67, 0xa0, 0x6a, 0xd0, 0x11,
-0xcf, 0x1d, 0xd3, 0x0e, 0x88, 0xb9, 0xa9, 0x7e,
-0x02, 0xcf, 0x44, 0xe6, 0x9a, 0xad, 0x8f, 0xb3,
-0x95, 0xf0, 0x03, 0xad, 0x22, 0x51, 0x62, 0xe7,
-0x3f, 0x3b, 0x34, 0xea, 0x4e, 0xec, 0xeb, 0xe7,
-0x01, 0xcf, 0x90, 0xd5, 0x1f, 0x5b, 0x8d, 0x5b,
-0xfa, 0x19, 0x11, 0x17, 0xee, 0xb7, 0x8e, 0x1f,
-0xa4, 0x1a, 0x05, 0xd8, 0xe2, 0x3f, 0xce, 0x95,
-0x06, 0x3d, 0x4f, 0x41, 0xbc, 0xe8, 0x03, 0xea,
-0x07, 0x8e, 0xd7, 0x5b, 0x86, 0x78, 0xa1, 0xe9,
-0xa3, 0x89, 0xe4, 0x6f, 0xc0, 0xf3, 0x86, 0x33,
-0x5e, 0x66, 0xda, 0xf8, 0x3f, 0x93, 0xd2, 0xef,
-0x52, 0x43, 0x40, 0x26, 0x63, 0x93, 0x2c, 0x65,
-0xbf, 0x10, 0xf6, 0xe0, 0x91, 0x50, 0xd9, 0xa4,
-0x71, 0x02, 0x16, 0x8a, 0x2b, 0xe6, 0xc3, 0x8e,
-0x0f, 0x0e, 0x95, 0x37, 0x72, 0xe2, 0x33, 0xa0,
-0xe3, 0x5f, 0xcd, 0x6f, 0x1f, 0x68, 0x26, 0xa2,
-0xdd, 0x4d, 0xdc, 0xf7, 0xb2, 0xea, 0x1f, 0x18,
-0x2a, 0xaf, 0xe6, 0xe8, 0x9a, 0xd9, 0xe7, 0x83,
-0x8c, 0x19, 0xdd, 0xd1, 0xaa, 0x11, 0xf5, 0x20,
-0xfb, 0x1d, 0x1c, 0x18, 0xa8, 0x18, 0x59, 0xbc,
-0x9f, 0xda, 0x22, 0x99, 0x9e, 0x71, 0xea, 0x7f,
-0x68, 0x74, 0x6f, 0xf1, 0x8c, 0x7b, 0x77, 0x66,
-0xcd, 0x87, 0x4d, 0x6e, 0xa6, 0x30, 0x97, 0x2a,
-0xa1, 0xad, 0xed, 0xd5, 0x74, 0x38, 0x0c, 0xb9,
-0xa2, 0x45, 0x18, 0xde, 0x16, 0xbe, 0x80, 0x41,
-0x97, 0x80, 0x90, 0xe2, 0x28, 0xbe, 0x62, 0x3e,
-0x48, 0x37, 0x85, 0xb9, 0x70, 0xfd, 0xc5, 0x7e,
-0x56, 0x91, 0xb0, 0xd6, 0xb3, 0x5b, 0xf3, 0x74,
-0xa1, 0x5a, 0xf3, 0xe9, 0x2a, 0x78, 0xfa, 0x1d,
-0x59, 0xf3, 0xd1, 0x0a, 0x47, 0xee, 0x3c, 0x1c,
-0xaa, 0xf2, 0x58, 0xd3, 0x3a, 0xce, 0x2b, 0x81,
-0xbb, 0x0b, 0x1e, 0x2a, 0xda, 0xce, 0x12, 0x52,
-0x1d, 0x2c, 0x81, 0x32, 0x2f, 0x65, 0x64, 0x16,
-0x3c, 0x98, 0x3d, 0x1f, 0xa4, 0x0f, 0x3e, 0x51,
-0x1a, 0x13, 0xf8, 0xbe, 0x17, 0x68, 0x59, 0x62,
-0xae, 0x64, 0xe7, 0x5b, 0xd3, 0x3b, 0x6a, 0x04,
-0x26, 0xe1, 0xa5, 0xf1, 0x7c, 0x91, 0xd5, 0x1f,
-0x7b, 0x67, 0xf1, 0x1b, 0x79, 0x41, 0xf8, 0x14,
-0x75, 0xdf, 0x3a, 0xa2, 0x59, 0xb4, 0xd5, 0x18,
-0x65, 0x04, 0x68, 0x22, 0xfc, 0x3c, 0xb4, 0xef,
-0x75, 0xda, 0x15, 0xf1, 0x1f, 0x2f, 0xac, 0x33,
-0xab, 0x46, 0xd5, 0x08, 0xaa, 0x1d, 0x01, 0x55,
-0x7d, 0xdc, 0xeb, 0xf1, 0xc1, 0x2f, 0x87, 0x6b,
-0x63, 0x5e, 0xc1, 0xca, 0xb5, 0x08, 0x02, 0x39,
-0xd4, 0xd8, 0xf6, 0xf8, 0xcf, 0x0a, 0xe9, 0x21,
-0x81, 0xb0, 0x87, 0xe7, 0x26, 0x28, 0x1e, 0xd8,
-0x7b, 0xe7, 0x9c, 0xa6, 0x21, 0xa3, 0x73, 0x50,
-0x8f, 0x39, 0x00, 0xed, 0x5d, 0x8c, 0x10, 0x91,
-0x96, 0x15, 0xff, 0xc9, 0x35, 0x1e, 0x10, 0x95,
-0xba, 0xba, 0x3a, 0xfc, 0x7d, 0x58, 0x1b, 0xad,
-0xa4, 0x7e, 0xb3, 0x4d, 0xc6, 0x16, 0x31, 0x67,
-0xb9, 0x63, 0x35, 0xbb, 0x3a, 0x77, 0x47, 0x24,
-0xc7, 0xa3, 0xae, 0x00, 0x7b, 0x7f, 0x24, 0x0e,
-0xbf, 0x70, 0x34, 0x98, 0x2a, 0xb8, 0x13, 0x6c,
-0x40, 0x6b, 0xe8, 0x71, 0xea, 0xf2, 0x6b, 0xc6,
-0xcb, 0x77, 0xfa, 0xdf, 0x2d, 0xf0, 0xcb, 0x0a,
-0xfa, 0x58, 0x0d, 0xe6, 0x26, 0x2d, 0x2b, 0xfe,
-0xb3, 0xb3, 0xe4, 0x12, 0xda, 0xf7, 0xb5, 0xe3,
-0xf2, 0x09, 0xe3, 0x13, 0xed, 0x66, 0xe3, 0xbf,
-0xb7, 0x97, 0xc5, 0x0d, 0x8a, 0x28, 0xde, 0xd6,
-0xaf, 0x4e, 0xc0, 0x5b, 0x70, 0x93, 0x72, 0xc5,
-0x7c, 0xb4, 0x0f, 0x29, 0xc9, 0x95, 0xfc, 0x9a,
-0xbf, 0xec, 0xa7, 0xec, 0x10, 0x10, 0xff, 0xb9,
-0x99, 0xda, 0x42, 0x06, 0x85, 0x53, 0xa8, 0xbe,
-0x5c, 0xca, 0x48, 0xfa, 0xb2, 0xf3, 0x5f, 0x51,
-0x85, 0xd8, 0x95, 0x9c, 0x22, 0x6c, 0x0f, 0xb0,
-0x52, 0x68, 0x4b, 0xd5, 0xcd, 0x56, 0x52, 0xfd,
-0x97, 0x66, 0x11, 0x2f, 0xb9, 0x99, 0x95, 0xff,
-0x7a, 0x50, 0x79, 0xb2, 0x63, 0x5e, 0xb2, 0x75,
-0xb5, 0xf6, 0x23, 0xc4, 0x87, 0xe5, 0xc9, 0xb6,
-0x3a, 0xf7, 0x83, 0xca, 0x5a, 0xf4, 0x66, 0xf3,
-0xea, 0x3c, 0x05, 0xb0, 0x36, 0x52, 0x4a, 0xfc,
-0x1f, 0x7b, 0x7f, 0x6c, 0x53, 0x80, 0xe2, 0x85,
-0x56, 0xc6, 0x40, 0x08, 0xbd, 0x9c, 0xaf, 0x67,
-0x56, 0xa0, 0xb5, 0x1c, 0xf2, 0x04, 0xf3, 0x38,
-0x89, 0xcf, 0x99, 0x07, 0x57, 0xe4, 0xbf, 0x2a,
-0xf4, 0x7a, 0xc1, 0xb7, 0xe3, 0xef, 0x75, 0x18,
-0x9e, 0xa3, 0x46, 0x49, 0x11, 0x14, 0x1a, 0x44,
-0xa5, 0x95, 0x11, 0x33, 0x03, 0x22, 0xff, 0x4c,
-0x56, 0xfe, 0x8b, 0x68, 0x3f, 0x8f, 0x40, 0x8e,
-0x51, 0x36, 0x0e, 0xe7, 0xd0, 0x42, 0x5a, 0x44,
-0x20, 0x6a, 0x3b, 0x56, 0x90, 0x62, 0x04, 0xa1,
-0x60, 0x5c, 0x11, 0xff, 0x39, 0x0b, 0x81, 0x15,
-0x05, 0x5b, 0xe5, 0xb9, 0xca, 0x79, 0x14, 0xba,
-0x1f, 0xb2, 0xe2, 0x03, 0xf5, 0xed, 0x4a, 0xb4,
-0x6c, 0x39, 0x9c, 0xe6, 0x01, 0x63, 0x53, 0xf4,
-0x4f, 0xe6, 0xa3, 0x79, 0x42, 0x68, 0x76, 0xc9,
-0x10, 0x7b, 0xda, 0xd5, 0xef, 0x23, 0xfe, 0xb1,
-0x02, 0x89, 0x51, 0x2a, 0x44, 0x82, 0x5a, 0xb2,
-0xc8, 0x57, 0xcc, 0x47, 0x13, 0x65, 0x86, 0xfa,
-0x0b, 0xb6, 0xb7, 0xe5, 0x05, 0xf1, 0xa5, 0x76,
-0x22, 0x02, 0xb1, 0x8d, 0xfa, 0x0e, 0xc3, 0x31,
-0xcc, 0xbe, 0x01, 0x3f, 0x29, 0x2e, 0x33, 0xaf,
-0xf9, 0x93, 0xf9, 0x68, 0xbb, 0x88, 0xff, 0xb3,
-0x7e, 0x4b, 0xec, 0x59, 0xef, 0xb6, 0x36, 0x99,
-0xca, 0xbe, 0xd6, 0xce, 0x2b, 0xb5, 0xe6, 0xa3,
-0xc5, 0xd6, 0x78, 0xe7, 0x10, 0x23, 0x28, 0x7b,
-0x3e, 0x1a, 0x8d, 0x45, 0x73, 0x4d, 0xcf, 0x47,
-0x73, 0x85, 0x59, 0xb2, 0x2b, 0x51, 0x1a, 0xe0,
-0x55, 0x61, 0x39, 0x24, 0x56, 0xe0, 0x91, 0xa5,
-0xd9, 0xf3, 0xd1, 0x46, 0x76, 0x5b, 0xdd, 0x0e,
-0x89, 0x0f, 0x4c, 0x44, 0xa0, 0x19, 0x51, 0x6b,
-0xfe, 0x45, 0x8d, 0x49, 0x1d, 0x93, 0x62, 0x56,
-0xe8, 0xe3, 0xca, 0xfe, 0xd8, 0x14, 0xe4, 0x21,
-0xb6, 0x4f, 0xec, 0x35, 0xbd, 0xd1, 0x28, 0x48,
-0xf1, 0x7f, 0xaa, 0xdb, 0x9c, 0xbf, 0x94, 0xcf,
-0xc1, 0x07, 0x74, 0xea, 0x8a, 0xf9, 0x68, 0x34,
-0x0d, 0x96, 0xf0, 0x8f, 0x0e, 0xa3, 0xee, 0x2a,
-0xcd, 0x9b, 0xe2, 0xff, 0x30, 0xe0, 0x3b, 0xd8,
-0x69, 0x4f, 0x04, 0xb6, 0xa3, 0x13, 0x19, 0xce,
-0x9a, 0x0f, 0x32, 0xb0, 0xbb, 0x58, 0x27, 0xa3,
-0x46, 0x78, 0xd2, 0xd7, 0x82, 0x42, 0x17, 0xeb,
-0xd0, 0x7a, 0x0c, 0xaf, 0x9b, 0xf0, 0x0f, 0xe1,
-0xc3, 0xa2, 0x2b, 0xe6, 0xa3, 0x3d, 0x0a, 0xb4,
-0xda, 0xb8, 0x65, 0x9e, 0x4a, 0x01, 0xa1, 0x29,
-0xfe, 0xcf, 0x66, 0x6b, 0x50, 0x88, 0x85, 0x27,
-0xb3, 0xe6, 0x83, 0xc0, 0x54, 0x5a, 0x53, 0xa1,
-0x42, 0xb0, 0x45, 0x05, 0x29, 0xfe, 0xcf, 0xd5,
-0xed, 0x4e, 0x6a, 0xfc, 0x78, 0x3a, 0x45, 0x04,
-0xb2, 0xcf, 0x07, 0xe9, 0x82, 0xf7, 0xe0, 0xa0,
-0x31, 0x5f, 0x53, 0x47, 0xe0, 0x3d, 0x63, 0x0a,
-0x08, 0x9d, 0x85, 0xda, 0xe9, 0x40, 0xd0, 0x73,
-0x84, 0x7f, 0xec, 0xf9, 0xaf, 0x58, 0x9e, 0xe6,
-0xb1, 0xd0, 0x0e, 0xe1, 0x1f, 0x3f, 0x77, 0x5a,
-0x44, 0xa0, 0x92, 0x1a, 0xab, 0x51, 0xb9, 0x36,
-0xa1, 0x59, 0xad, 0xcb, 0xed, 0xf3, 0x41, 0xbc,
-0xca, 0x51, 0xd3, 0x83, 0xfb, 0x99, 0x8d, 0x6a,
-0xcf, 0xc7, 0xca, 0x04, 0x1f, 0xcd, 0xad, 0x90,
-0x5e, 0x34, 0xe6, 0xf7, 0xf0, 0x24, 0xe3, 0xda,
-0x51, 0xa8, 0x0d, 0xe7, 0xc7, 0x98, 0x7d, 0x3e,
-0xc8, 0x12, 0x10, 0xfd, 0xe5, 0x21, 0x6e, 0xe1,
-0x1f, 0x88, 0x45, 0xbd, 0x0d, 0x87, 0x15, 0x63,
-0x8f, 0x51, 0x1e, 0x42, 0xb5, 0xa3, 0x28, 0xdb,
-0xc8, 0xff, 0x8a, 0x3b, 0xb2, 0xe6, 0xc3, 0x86,
-0x1f, 0x68, 0x2a, 0x1f, 0x58, 0x81, 0xb0, 0x01,
-0xdd, 0x3a, 0xca, 0xef, 0x84, 0xad, 0x8e, 0x49,
-0xa6, 0xe3, 0x2f, 0x1d, 0xc5, 0x5d, 0x33, 0xa4,
-0x2f, 0x53, 0x04, 0xc9, 0xde, 0x1f, 0x3b, 0x48,
-0x4d, 0xb0, 0x93, 0xce, 0xd4, 0x58, 0xb4, 0x05,
-0xd3, 0x83, 0x0e, 0x6b, 0x92, 0xae, 0x12, 0xb9,
-0xd6, 0xca, 0x7f, 0xe1, 0xa9, 0xbf, 0xb5, 0xe7,
-0xbf, 0x60, 0x14, 0x8d, 0xe0, 0x74, 0xda, 0x2b,
-0x23, 0xe4, 0x50, 0x7c, 0xec, 0x1d, 0xa5, 0xa1,
-0xdf, 0xb5, 0x5b, 0x66, 0xf6, 0xf9, 0x68, 0xc9,
-0x73, 0xa2, 0xf1, 0x74, 0x01, 0xcd, 0x47, 0xbb,
-0x18, 0x9d, 0x4a, 0x84, 0x59, 0x88, 0xe8, 0xce,
-0xce, 0x5a, 0xe3, 0x48, 0x2a, 0x35, 0x66, 0xef,
-0x8f, 0xfd, 0xa2, 0xb9, 0x46, 0x2b, 0x7d, 0x95,
-0x7f, 0x7d, 0x73, 0xb1, 0xb1, 0x2f, 0xe6, 0x1b,
-0x50, 0xbf, 0x11, 0x3e, 0x05, 0xfb, 0x16, 0xf9,
-0x68, 0xf0, 0xfd, 0x55, 0xb0, 0x76, 0x37, 0x21,
-0x9c, 0xcd, 0xd9, 0xf9, 0xaf, 0x9d, 0xe0, 0xb5,
-0xfc, 0x35, 0x7a, 0xcd, 0x41, 0x0b, 0x2f, 0x59,
-0x88, 0xa8, 0xdd, 0xd1, 0x22, 0xd6, 0xa6, 0x8e,
-0xd8, 0xfb, 0x63, 0xbf, 0x66, 0x88, 0xa8, 0x7e,
-0x28, 0xaf, 0xa6, 0xa9, 0x40, 0xec, 0xf9, 0x95,
-0x6f, 0x5c, 0x6d, 0x40, 0x47, 0x7e, 0x4f, 0xbb,
-0x6f, 0x44, 0x2d, 0x66, 0xb7, 0x40, 0x67, 0xdc,
-0x37, 0x8a, 0x47, 0xec, 0xfd, 0xb1, 0x0f, 0xc2,
-0xa8, 0x51, 0x37, 0x8e, 0xf8, 0x6d, 0xbe, 0xf7,
-0xbc, 0x11, 0x0c, 0xa1, 0xf0, 0xa1, 0xb0, 0x10,
-0xd1, 0x1b, 0xf2, 0x37, 0xc5, 0x11, 0x23, 0x48,
-0x83, 0xd2, 0xec, 0xfd, 0xb1, 0x87, 0xf4, 0x0b,
-0x3a, 0x7a, 0xdf, 0xfe, 0x1d, 0x43, 0x70, 0x51,
-0xbf, 0x7f, 0xc0, 0x55, 0xd3, 0x39, 0x56, 0x4a,
-0x65, 0x5f, 0x2e, 0xad, 0xb3, 0x6b, 0x2e, 0x2e,
-0xd4, 0xe0, 0x75, 0xd9, 0xf3, 0xd1, 0x26, 0xe1,
-0x04, 0x54, 0x9b, 0xf9, 0x71, 0xa9, 0x91, 0xba,
-0x1d, 0x5a, 0xf1, 0x1f, 0xe5, 0x2d, 0xc4, 0x57,
-0x56, 0xa1, 0xe5, 0xcf, 0xad, 0x8a, 0xef, 0xec,
-0xf9, 0x68, 0xc4, 0xaf, 0x33, 0x39, 0x8d, 0x45,
-0x3b, 0x02, 0x9e, 0xb3, 0xfc, 0x60, 0x53, 0x15,
-0xd9, 0xf7, 0x11, 0x4b, 0xff, 0x74, 0x2b, 0x9e,
-0xdf, 0xa8, 0x59, 0xf3, 0x41, 0x24, 0x1f, 0x5e,
-0x7f, 0x4f, 0x22, 0xaf, 0x97, 0xed, 0x82, 0x67,
-0x44, 0xc5, 0x3d, 0x34, 0xcf, 0xcb, 0x78, 0x4c,
-0xe0, 0x1d, 0xe8, 0xc3, 0x79, 0x4c, 0xb7, 0x5a,
-0x27, 0xd9, 0xfb, 0x43, 0x3a, 0xc3, 0xe8, 0xd6,
-0xe1, 0xb6, 0x69, 0xdb, 0xc0, 0x76, 0x48, 0x3d,
-0xa6, 0xd7, 0xcf, 0x7d, 0xc4, 0xff, 0x31, 0x57,
-0x68, 0x0e, 0x25, 0xfc, 0xb0, 0x1e, 0x43, 0xd7,
-0xd5, 0x61, 0x9f, 0x8f, 0xb6, 0x92, 0xac, 0x2d,
-0x3e, 0xff, 0x97, 0x10, 0x18, 0xc7, 0xea, 0x4f,
-0x58, 0x44, 0x97, 0x5f, 0x43, 0xe0, 0xc4, 0x86,
-0xa8, 0x5c, 0x1e, 0xff, 0x75, 0x9e, 0xc5, 0x6f,
-0xc9, 0x9e, 0x8f, 0x36, 0x96, 0x22, 0xb1, 0xdc,
-0x0f, 0xc7, 0x8c, 0x85, 0xc9, 0x4d, 0x66, 0x8a,
-0xd6, 0x6b, 0xa2, 0x63, 0x35, 0x92, 0x1a, 0x94,
-0x36, 0xde, 0x9c, 0xd5, 0x1f, 0xdb, 0xf8, 0x5d,
-0xaa, 0xbf, 0xd6, 0x25, 0x76, 0x4c, 0x34, 0x8e,
-0xf8, 0x26, 0xe5, 0xa0, 0x71, 0x6e, 0x4b, 0xf5,
-0x88, 0xf3, 0xe0, 0xe2, 0x60, 0xfb, 0xe5, 0x68,
-0xf5, 0xc8, 0x75, 0xe7, 0x9b, 0xed, 0xf8, 0x67,
-0x08, 0xf1, 0xaa, 0x9e, 0x88, 0xf4, 0xb2, 0xb1,
-0x68, 0xb7, 0xa7, 0x20, 0x61, 0x15, 0xbe, 0xdd,
-0xa4, 0x7b, 0x0e, 0xb5, 0xc5, 0xd1, 0xbc, 0x1c,
-0xc8, 0xf1, 0xe0, 0x52, 0x80, 0x1d, 0xff, 0x0c,
-0x75, 0xed, 0x28, 0x8d, 0x0d, 0xf4, 0xf8, 0xc3,
-0x4b, 0x74, 0x99, 0xfb, 0xcc, 0xd6, 0x40, 0x93,
-0x33, 0xb2, 0x87, 0x56, 0xa0, 0x97, 0x6d, 0x50,
-0xf6, 0xe0, 0xfb, 0x3a, 0xfc, 0x57, 0xe0, 0x9f,
-0x03, 0x12, 0xad, 0x3f, 0x8d, 0xe5, 0x15, 0x73,
-0x13, 0x3c, 0xe0, 0xde, 0xa5, 0x10, 0x8d, 0x8a,
-0xc5, 0xd9, 0x7c, 0xbe, 0x07, 0xd7, 0x33, 0x2f,
-0x7b, 0x3e, 0x1a, 0xc1, 0xe0, 0xc0, 0x20, 0x2e,
-0xcb, 0xd7, 0xa8, 0xec, 0x3a, 0xb9, 0x84, 0xf8,
-0xe1, 0x17, 0x77, 0x52, 0xfd, 0x57, 0xd9, 0x4f,
-0x95, 0x8b, 0xa2, 0x97, 0xf8, 0x27, 0xc3, 0xd9,
-0xfc, 0x1f, 0x13, 0x3f, 0x8a, 0x73, 0x88, 0x06,
-0x2f, 0x4b, 0x56, 0xfc, 0xe7, 0x1f, 0xa8, 0x10,
-0x6c, 0x7c, 0xd3, 0xf9, 0x2f, 0x9d, 0xa3, 0x0f,
-0xa7, 0xff, 0x4f, 0xe6, 0x83, 0x50, 0x7d, 0xe2,
-0x06, 0xbc, 0x2d, 0xcd, 0x87, 0xb5, 0xbe, 0x47,
-0x7e, 0x91, 0xda, 0x92, 0xef, 0x46, 0xc7, 0xe4,
-0x48, 0x69, 0x10, 0x81, 0x68, 0x73, 0xf6, 0x7c,
-0x90, 0xee, 0xe1, 0xaa, 0x73, 0xfc, 0x05, 0x0f,
-0x6e, 0x9b, 0xf6, 0xaa, 0x13, 0xea, 0x3e, 0xf6,
-0x81, 0x49, 0x13, 0x75, 0xd5, 0x1b, 0x4a, 0xbf,
-0x1c, 0xea, 0x4e, 0x56, 0xfd, 0x1e, 0x9e, 0xcd,
-0xce, 0x7f, 0x19, 0x84, 0xf7, 0xbc, 0x7e, 0xe6,
-0x32, 0x1e, 0x2e, 0xac, 0x1a, 0xe9, 0x26, 0xc7,
-0x81, 0x32, 0xaa, 0xdd, 0x64, 0xdf, 0x3b, 0xc1,
-0x97, 0x84, 0x05, 0x57, 0xe4, 0xbf, 0x66, 0x88,
-0xca, 0x11, 0x7e, 0x5f, 0x78, 0xb6, 0xf6, 0x48,
-0x34, 0x15, 0xff, 0x41, 0x37, 0x67, 0x5b, 0x52,
-0xbd, 0xc0, 0xbe, 0x08, 0x6b, 0x63, 0x95, 0xd4,
-0x7f, 0xd2, 0x8e, 0x7f, 0x9c, 0xf0, 0x32, 0x6f,
-0x18, 0x70, 0x3e, 0x2f, 0x3b, 0xd9, 0x2f, 0x35,
-0x9f, 0x55, 0x2f, 0x09, 0x1f, 0x73, 0x8d, 0x1c,
-0x87, 0x0d, 0x4d, 0x2f, 0x43, 0xc3, 0xcb, 0xce,
-0xdd, 0xd9, 0xf9, 0xaf, 0xa6, 0xcb, 0x5a, 0x23,
-0x95, 0x7d, 0x9d, 0x82, 0xdf, 0x15, 0xd3, 0x6e,
-0x29, 0x9a, 0x54, 0x1a, 0xa9, 0xfe, 0x2b, 0x4e,
-0x85, 0xf0, 0xfa, 0xcd, 0x87, 0x5c, 0x7b, 0xe4,
-0x6c, 0xfe, 0xcf, 0x11, 0xc9, 0x1a, 0x02, 0x8b,
-0x8e, 0x09, 0x0b, 0xa4, 0xf4, 0x15, 0x11, 0x81,
-0x36, 0xc4, 0xad, 0x40, 0x90, 0xc5, 0x8f, 0xfa,
-0x97, 0xe6, 0x83, 0xb8, 0x4f, 0x69, 0x2f, 0x49,
-0xa5, 0x66, 0x37, 0xe9, 0x93, 0x4d, 0x56, 0x07,
-0x36, 0x37, 0x6a, 0x98, 0x9c, 0x52, 0xb3, 0x64,
-0xfc, 0x8a, 0xf9, 0x20, 0x8f, 0x88, 0xcf, 0x58,
-0xf3, 0x41, 0xf8, 0x23, 0xa9, 0x42, 0xb0, 0x4b,
-0xde, 0xb5, 0x5d, 0x16, 0x23, 0xfa, 0xba, 0x54,
-0x29, 0xdc, 0x95, 0xf3, 0x41, 0x1e, 0x02, 0x3d,
-0xc4, 0x0b, 0x3d, 0xaf, 0x6a, 0xe8, 0xe6, 0x87,
-0x68, 0xde, 0xa5, 0xd6, 0xb9, 0x4a, 0x5f, 0x5e,
-0x52, 0xc2, 0xf2, 0x10, 0x51, 0xc4, 0xfa, 0xff,
-0x64, 0x3e, 0xc8, 0x1b, 0x10, 0xa0, 0xb1, 0x68,
-0x4f, 0x8b, 0x37, 0xc4, 0x73, 0x61, 0x57, 0xac,
-0xf3, 0x0c, 0x1c, 0x35, 0x7b, 0x63, 0xb3, 0xce,
-0xa8, 0x75, 0xfc, 0x02, 0x04, 0x84, 0xef, 0xca,
-0xf9, 0x20, 0xa3, 0x2d, 0xc1, 0x62, 0xf4, 0xc7,
-0x4f, 0x6b, 0x13, 0x86, 0x35, 0x1f, 0x2d, 0xc9,
-0x50, 0xd0, 0x88, 0x11, 0xa4, 0xff, 0xcb, 0xfc,
-0x9f, 0x41, 0xb4, 0x8f, 0x8f, 0xcb, 0xff, 0xcd,
-0x32, 0xac, 0xce, 0x87, 0x32, 0xf3, 0x43, 0xcb,
-0xe1, 0x50, 0x7f, 0x60, 0x79, 0xf6, 0x7c, 0x10,
-0xe2, 0xff, 0x98, 0xdb, 0xdb, 0x57, 0x6c, 0x55,
-0x67, 0xc0, 0x3a, 0x63, 0x7b, 0xc8, 0xfb, 0xb8,
-0x63, 0x2e, 0x43, 0x81, 0x68, 0x3f, 0x73, 0xd8,
-0xba, 0x2e, 0xab, 0x63, 0x76, 0x16, 0xff, 0x67,
-0x7a, 0xde, 0x47, 0x39, 0xec, 0x96, 0xbc, 0x2d,
-0x79, 0xd4, 0x45, 0x26, 0x75, 0xc4, 0xad, 0xe8,
-0xeb, 0x40, 0x6f, 0x42, 0x8b, 0x7f, 0x6b, 0x16,
-0xff, 0x87, 0xf8, 0x51, 0x11, 0x0d, 0x3f, 0xdb,
-0x1d, 0xe0, 0x35, 0xf2, 0xfc, 0x4d, 0x5d, 0xa9,
-0x8a, 0x4b, 0xad, 0x09, 0x6f, 0x65, 0xc5, 0x43,
-0x58, 0x93, 0x1d, 0xff, 0x4c, 0xcd, 0x07, 0x29,
-0xd2, 0xad, 0xee, 0x97, 0x68, 0x76, 0x63, 0x5a,
-0x02, 0xdf, 0x4f, 0x01, 0x59, 0x07, 0x9a, 0x29,
-0x81, 0xf6, 0xf7, 0x76, 0xfb, 0x7c, 0x34, 0xab,
-0x2d, 0xb6, 0x55, 0xf6, 0xf5, 0xcf, 0xde, 0x85,
-0x6d, 0x05, 0xc7, 0x3b, 0xef, 0xe8, 0x4b, 0x15,
-0x82, 0xbd, 0x3c, 0x89, 0xa7, 0x82, 0x74, 0xea,
-0xc7, 0x59, 0xf8, 0xe7, 0xe5, 0x9c, 0xc0, 0x2d,
-0xa9, 0x79, 0x19, 0x5a, 0x3d, 0x05, 0x52, 0xac,
-0xfa, 0x2f, 0x5a, 0xa8, 0x11, 0x8a, 0xe8, 0xde,
-0xb2, 0x29, 0x7b, 0x3e, 0x5a, 0xaa, 0x3f, 0xb6,
-0x1a, 0x0e, 0x83, 0xe8, 0xd3, 0x75, 0x46, 0xfc,
-0x1f, 0x2d, 0xe2, 0xdd, 0xce, 0x39, 0x02, 0x33,
-0xbd, 0xcf, 0x9a, 0x0f, 0xb2, 0xdd, 0x3e, 0x1f,
-0xf6, 0x9c, 0x58, 0x03, 0x44, 0xf2, 0x71, 0x20,
-0xf0, 0xd3, 0x3f, 0x63, 0xf5, 0xc7, 0xd6, 0x36,
-0xea, 0x56, 0x7f, 0xec, 0x13, 0xeb, 0x5e, 0x50,
-0x4a, 0x0d, 0xf5, 0xf8, 0x15, 0xf8, 0x67, 0x0d,
-0xec, 0x48, 0xf1, 0x7f, 0x5e, 0x48, 0xb1, 0xc7,
-0x6b, 0x60, 0x23, 0x47, 0xe1, 0x17, 0x4d, 0xe7,
-0xf0, 0x08, 0xcd, 0x07, 0xc9, 0xb5, 0xcd, 0x87,
-0x9d, 0x39, 0x08, 0x87, 0xb4, 0xc0, 0x72, 0x17,
-0xe2, 0x5b, 0xe3, 0x7c, 0xb4, 0x2e, 0x54, 0x10,
-0xa5, 0xfa, 0x2f, 0xc3, 0x1d, 0xf2, 0x6d, 0x45,
-0xa0, 0x7b, 0x56, 0x09, 0x2c, 0x72, 0x69, 0x59,
-0xf8, 0x67, 0x27, 0x3b, 0xcf, 0xd0, 0xcc, 0x6d,
-0xa6, 0x6a, 0x2f, 0x08, 0xde, 0xea, 0x7a, 0xfc,
-0xcf, 0x46, 0xc4, 0xf9, 0x68, 0x10, 0xef, 0x40,
-0x40, 0x31, 0x6a, 0x85, 0xce, 0xae, 0xe4, 0xff,
-0x2c, 0x4c, 0xc1, 0xec, 0x53, 0x88, 0xae, 0xad,
-0x6e, 0x24, 0x04, 0xb3, 0x37, 0x51, 0x8c, 0xf3,
-0x54, 0x8a, 0xea, 0x90, 0x15, 0xff, 0xe9, 0x3a,
-0x93, 0xa6, 0xfd, 0x48, 0x55, 0x54, 0xed, 0xee,
-0x85, 0xe7, 0x51, 0x50, 0x7b, 0x98, 0x97, 0x1f,
-0x86, 0xaa, 0x8e, 0x2b, 0xe6, 0x83, 0x34, 0x8b,
-0x18, 0x94, 0xa3, 0x63, 0x89, 0x46, 0x7c, 0xab,
-0xf0, 0x69, 0x5c, 0x78, 0x74, 0xab, 0x82, 0xc9,
-0xc1, 0xc9, 0x71, 0x40, 0x1f, 0xfe, 0x4f, 0xe6,
-0x83, 0xfc, 0x0c, 0x4a, 0x5f, 0x46, 0xa3, 0xff,
-0xa6, 0x15, 0x0f, 0xf1, 0xa6, 0x68, 0xc0, 0x95,
-0xe6, 0xe2, 0xfb, 0x29, 0x31, 0x9d, 0x8a, 0xa8,
-0xd8, 0xf1, 0x8f, 0x1b, 0x41, 0x8e, 0x35, 0x04,
-0xe4, 0x4d, 0xf8, 0x47, 0x71, 0x73, 0x8c, 0x4f,
-0xc8, 0x57, 0xc3, 0xef, 0xc5, 0xcd, 0x49, 0x57,
-0x42, 0xaa, 0x85, 0x57, 0x49, 0x58, 0x91, 0xcd,
-0xff, 0x21, 0x7e, 0x1d, 0x0d, 0x01, 0x49, 0x6a,
-0x17, 0x28, 0x50, 0x26, 0x10, 0x28, 0x5e, 0x90,
-0x82, 0x54, 0x08, 0x36, 0x4a, 0x81, 0x0e, 0xa0,
-0xf8, 0x8f, 0x0d, 0xff, 0x8c, 0x89, 0x31, 0xd1,
-0xb8, 0xcd, 0x95, 0x28, 0x0a, 0xc0, 0xa5, 0x8e,
-0x85, 0x77, 0xe7, 0x27, 0xe4, 0x00, 0x1f, 0x12,
-0xd5, 0xe5, 0xae, 0xd1, 0xe6, 0x00, 0x9c, 0x12,
-0xd5, 0xba, 0x2b, 0x21, 0xdb, 0xe2, 0x3f, 0x85,
-0xbd, 0x1d, 0xf8, 0x90, 0x86, 0x1c, 0xb7, 0xda,
-0x42, 0xaa, 0xc2, 0x41, 0x85, 0xf0, 0x54, 0xf6,
-0x85, 0xbf, 0xf8, 0x41, 0xb6, 0x56, 0x42, 0xe1,
-0x22, 0x7b, 0x3a, 0x6b, 0x3e, 0xc8, 0x93, 0xbc,
-0xf2, 0x55, 0x35, 0x64, 0xe1, 0x9f, 0xd2, 0x01,
-0x3e, 0xee, 0x28, 0x81, 0xef, 0xc1, 0x9c, 0x01,
-0x5c, 0xc6, 0x62, 0x78, 0x80, 0x5b, 0xf3, 0x41,
-0x6c, 0xf1, 0x9f, 0x62, 0x13, 0xfd, 0xae, 0x2a,
-0x40, 0xb5, 0x03, 0x46, 0x5c, 0xf3, 0xea, 0xe8,
-0xc6, 0xe6, 0x42, 0x6f, 0x02, 0x5d, 0xf7, 0xad,
-0xf8, 0x61, 0xaf, 0x03, 0x2f, 0xcd, 0x07, 0xb1,
-0xc7, 0x7f, 0x62, 0x30, 0x2a, 0x82, 0xba, 0x2b,
-0xda, 0xe9, 0x81, 0x09, 0x51, 0xab, 0x3b, 0x23,
-0x9d, 0x73, 0xf5, 0x37, 0x92, 0xb5, 0xba, 0xeb,
-0x07, 0xcd, 0x15, 0xa4, 0x28, 0x28, 0xf4, 0x57,
-0xf1, 0x27, 0xfc, 0x9f, 0x4d, 0xb1, 0xa2, 0x94,
-0x80, 0x8a, 0xf7, 0x3d, 0x44, 0xd4, 0xf5, 0xc4,
-0x37, 0x18, 0xe1, 0x67, 0xa4, 0x20, 0xd9, 0xbb,
-0x64, 0x16, 0xff, 0x07, 0xad, 0x9b, 0xe1, 0x1c,
-0xaf, 0x68, 0x80, 0x4f, 0x60, 0xa1, 0xb8, 0x8e,
-0xe2, 0x21, 0x44, 0xfb, 0x41, 0xfc, 0xd3, 0x20,
-0x8e, 0xc1, 0x1e, 0xe2, 0xff, 0x64, 0xe1, 0x1f,
-0xa5, 0x0f, 0x77, 0x4b, 0xab, 0x72, 0x55, 0x0c,
-0x7a, 0xa9, 0x10, 0x40, 0xb8, 0x4f, 0xfb, 0x84,
-0x68, 0x80, 0xd6, 0x9d, 0xf5, 0x4c, 0x3b, 0x19,
-0xc2, 0x4f, 0x2f, 0x2a, 0x87, 0xb2, 0xe6, 0xc3,
-0xf6, 0x51, 0x36, 0x7c, 0x0b, 0x8b, 0xc1, 0xf3,
-0x30, 0x17, 0xaf, 0x67, 0x83, 0xd2, 0x7a, 0x7d,
-0x2e, 0xf0, 0xbd, 0xb8, 0xf1, 0x1e, 0x55, 0x18,
-0xee, 0x9f, 0x26, 0xfb, 0x7c, 0x34, 0x20, 0x3e,
-0xb0, 0x81, 0xdb, 0x72, 0x03, 0xf5, 0xb3, 0x15,
-0xb8, 0x89, 0x13, 0xe4, 0x5f, 0x98, 0x11, 0x85,
-0x95, 0x2b, 0x9b, 0xc1, 0xe2, 0x03, 0x67, 0xf4,
-0x0f, 0xcd, 0x07, 0xa1, 0xee, 0xdf, 0x4b, 0x76,
-0xbb, 0x7d, 0xfc, 0xe3, 0x54, 0xfc, 0x87, 0x06,
-0x85, 0xcc, 0x35, 0x7d, 0x7b, 0xcb, 0x7c, 0x16,
-0xff, 0x67, 0xe9, 0xf6, 0x66, 0x3b, 0xfe, 0x19,
-0xb7, 0xbc, 0x75, 0xd5, 0x94, 0x56, 0x59, 0x9f,
-0xc9, 0x0c, 0x63, 0xca, 0x2d, 0xcd, 0x6f, 0x42,
-0xe1, 0x7e, 0xfa, 0x5e, 0x1e, 0xca, 0x8a, 0xff,
-0xfc, 0xe1, 0xce, 0x9f, 0xf9, 0x1b, 0x87, 0x9c,
-0xdf, 0x52, 0x5f, 0x34, 0x7e, 0xa7, 0xed, 0x19,
-0x77, 0x9d, 0x57, 0x67, 0x37, 0x1d, 0x8b, 0xee,
-0x1f, 0xf1, 0xb5, 0xca, 0x01, 0xf8, 0x7d, 0x14,
-0xa1, 0xe3, 0x1f, 0x9a, 0xed, 0xfc, 0x9f, 0x84,
-0xe8, 0x0c, 0x55, 0x51, 0x53, 0x9a, 0x25, 0x62,
-0x9d, 0x81, 0x68, 0x27, 0xc0, 0xa8, 0x10, 0xde,
-0x93, 0xe0, 0xd1, 0x70, 0x4f, 0x0c, 0xed, 0xcb,
-0x00, 0xdf, 0xcd, 0x62, 0xb9, 0x19, 0xfd, 0x33,
-0x88, 0xda, 0xc4, 0x37, 0x98, 0xe7, 0x77, 0xaf,
-0x84, 0x3d, 0xf7, 0x78, 0x10, 0xed, 0xb8, 0x9d,
-0xa2, 0x53, 0x02, 0xd3, 0xe1, 0x61, 0x06, 0x3c,
-0xaf, 0x5b, 0x1d, 0x5a, 0xec, 0xf3, 0x41, 0x9e,
-0xa0, 0x36, 0x02, 0xfd, 0xf3, 0xfa, 0xf0, 0xcb,
-0x7b, 0x94, 0xda, 0x9e, 0x58, 0xf1, 0x1f, 0xfc,
-0x3a, 0xd1, 0x6c, 0xf5, 0x28, 0xcf, 0x83, 0x67,
-0x80, 0xfb, 0x9b, 0x32, 0xf3, 0x41, 0x8c, 0x99,
-0x1f, 0x20, 0xec, 0x0c, 0xd2, 0x58, 0x8a, 0x02,
-0xb8, 0x20, 0xfc, 0xc9, 0xeb, 0xe2, 0x65, 0xd6,
-0x7c, 0x90, 0x11, 0xaa, 0xcf, 0x45, 0xc7, 0xca,
-0x4d, 0x81, 0x32, 0xad, 0xc5, 0x1e, 0xff, 0xb9,
-0x0c, 0x0d, 0x66, 0xc1, 0xb8, 0xfc, 0x82, 0xfe,
-0x01, 0x9a, 0xf5, 0x4d, 0xe7, 0x9f, 0x44, 0x20,
-0x64, 0x58, 0xf8, 0x70, 0x02, 0x3e, 0x61, 0x37,
-0x8f, 0x58, 0x8d, 0x58, 0xa7, 0xef, 0x6f, 0x6a,
-0x3f, 0x41, 0xb4, 0x49, 0xf9, 0x35, 0x79, 0x25,
-0xaa, 0x81, 0xc0, 0x80, 0x2b, 0x55, 0x7f, 0x17,
-0x34, 0x9d, 0xb1, 0x19, 0xdb, 0xe0, 0x30, 0x0b,
-0x0c, 0xe3, 0xa9, 0xb8, 0x1d, 0xff, 0x0c, 0x77,
-0xaf, 0x2a, 0x3b, 0xc5, 0x9f, 0x65, 0xf3, 0xf5,
-0x75, 0x9f, 0xf7, 0x34, 0xa9, 0x7b, 0x59, 0x65,
-0x3f, 0x01, 0x21, 0xfe, 0x92, 0xfc, 0x37, 0xcb,
-0xdf, 0x68, 0xf7, 0x24, 0xf2, 0xff, 0x98, 0x85,
-0x7f, 0x96, 0xa3, 0xbd, 0x2e, 0x37, 0xf9, 0x7e,
-0x76, 0x14, 0xba, 0xb7, 0xe8, 0x49, 0x75, 0x3f,
-0x02, 0xe9, 0xee, 0xcd, 0x5f, 0x1b, 0x41, 0x9f,
-0xf6, 0x01, 0xd8, 0xa6, 0x79, 0x7b, 0xf0, 0xc5,
-0xe3, 0x99, 0xf9, 0x20, 0xd2, 0x2c, 0x63, 0x0d,
-0x19, 0xfd, 0x09, 0xf6, 0x23, 0xe8, 0x8c, 0x96,
-0x8e, 0x5e, 0xb3, 0x9a, 0xbd, 0x28, 0xd1, 0x04,
-0x31, 0x38, 0x89, 0xfa, 0xe7, 0x05, 0x31, 0x2f,
-0xf6, 0xe9, 0xd5, 0x59, 0xf5, 0x5f, 0xb9, 0xc6,
-0x2f, 0xd0, 0xfb, 0x76, 0xfa, 0xad, 0xb1, 0x20,
-0xfa, 0x2b, 0xb2, 0x5f, 0xde, 0x60, 0x74, 0x6a,
-0xb3, 0x4c, 0x9f, 0xce, 0x9e, 0x80, 0xb7, 0xa1,
-0x2e, 0x82, 0xa7, 0x36, 0x67, 0xea, 0xbf, 0xae,
-0xdd, 0x6b, 0xf5, 0xc7, 0x9e, 0x4f, 0xf8, 0x19,
-0xf1, 0xe1, 0x10, 0x01, 0x69, 0xf6, 0x12, 0x34,
-0x0e, 0x5a, 0x81, 0xc4, 0x37, 0xa3, 0xfb, 0xa8,
-0x50, 0xce, 0xce, 0xff, 0x19, 0x9a, 0x9a, 0x8f,
-0x56, 0xb4, 0x8b, 0x06, 0xcd, 0x53, 0x22, 0x72,
-0x97, 0xd5, 0xa6, 0x7e, 0x83, 0x90, 0xbb, 0x52,
-0xf3, 0xc1, 0x77, 0xdb, 0xfb, 0xff, 0x14, 0x3e,
-0xce, 0x36, 0x41, 0x59, 0xc2, 0x9a, 0x0f, 0x42,
-0x6c, 0x9f, 0xbc, 0x29, 0xc7, 0xca, 0x74, 0x0c,
-0xa3, 0xb0, 0x11, 0x4a, 0x17, 0x51, 0xfe, 0x2b,
-0x5d, 0xff, 0x65, 0xc2, 0x8b, 0xda, 0x5a, 0x31,
-0x6f, 0xcc, 0x71, 0x3f, 0xbe, 0x6f, 0x6f, 0x47,
-0x69, 0x32, 0x6f, 0xc2, 0x81, 0xfe, 0xa3, 0x59,
-0xf9, 0x36, 0x1f, 0x65, 0xcf, 0x51, 0xe1, 0x7f,
-0x88, 0xdf, 0x67, 0xab, 0xa7, 0xa0, 0xf9, 0xb0,
-0x29, 0x6b, 0x8e, 0x6a, 0x67, 0x4f, 0xab, 0xbe,
-0x35, 0xaf, 0x90, 0xda, 0x20, 0x77, 0xf8, 0x42,
-0x44, 0xbc, 0x87, 0x30, 0xe8, 0x5f, 0xc0, 0xf5,
-0xcc, 0xd4, 0x7f, 0x8d, 0xce, 0xec, 0x83, 0xc3,
-0x50, 0x2f, 0x10, 0xff, 0xac, 0x87, 0x4b, 0x50,
-0x44, 0x83, 0xc5, 0xbd, 0x56, 0x46, 0xcc, 0x19,
-0xa3, 0x88, 0x10, 0xdb, 0x1d, 0xf7, 0xc5, 0xec,
-0xf5, 0x5f, 0x90, 0x6c, 0xb1, 0x8a, 0xdc, 0xbb,
-0xac, 0x34, 0xc4, 0xf3, 0x53, 0x63, 0x41, 0xd0,
-0x5e, 0xd0, 0x11, 0xf7, 0xe4, 0xf4, 0x7c, 0xd8,
-0xe9, 0xf5, 0x41, 0xfc, 0x13, 0x3d, 0x34, 0xdd,
-0x36, 0xf9, 0x3d, 0x08, 0x84, 0x94, 0xad, 0xf2,
-0x1c, 0x38, 0x14, 0x0d, 0x18, 0x1b, 0xac, 0x8a,
-0x21, 0x2d, 0xd0, 0xc2, 0xa3, 0x59, 0xf5, 0x5f,
-0x88, 0x7f, 0xa4, 0xed, 0x86, 0x77, 0xcb, 0x7a,
-0x0a, 0x3b, 0x6c, 0x6f, 0xe1, 0x0f, 0x31, 0xc4,
-0x3f, 0x02, 0x8f, 0x3c, 0xee, 0x28, 0x67, 0xaf,
-0x9b, 0xdb, 0x57, 0xf1, 0x2b, 0xf1, 0xcf, 0x43,
-0xd3, 0x63, 0xd1, 0x88, 0xc8, 0xe1, 0xb0, 0xe6,
-0x7d, 0xe0, 0x11, 0x47, 0x21, 0xea, 0xe7, 0xef,
-0x71, 0x4f, 0x73, 0x85, 0x66, 0xab, 0xff, 0x22,
-0xfc, 0xf3, 0x90, 0x57, 0x6f, 0xe3, 0xd6, 0x65,
-0x15, 0x2b, 0x8c, 0x7a, 0x74, 0xbb, 0xb8, 0x04,
-0x21, 0xc3, 0x1a, 0x9c, 0xf1, 0x3d, 0x88, 0xb5,
-0x39, 0xdc, 0x61, 0x47, 0xba, 0xfe, 0x82, 0xf0,
-0xcf, 0x49, 0x3d, 0xc0, 0x37, 0x22, 0xfe, 0x61,
-0x09, 0xbd, 0x4e, 0x72, 0x08, 0x89, 0x1a, 0xd1,
-0xf8, 0xa1, 0x20, 0x86, 0xdf, 0xd7, 0x29, 0xe6,
-0xe6, 0x05, 0x61, 0x7b, 0xfd, 0x17, 0xe2, 0x9f,
-0x0f, 0x52, 0x20, 0x27, 0x85, 0x7f, 0xf2, 0x97,
-0x85, 0x53, 0x65, 0xef, 0x56, 0xfc, 0xe7, 0x62,
-0x4a, 0xb0, 0xd7, 0x7f, 0x8d, 0x4c, 0x0f, 0x01,
-0x41, 0xeb, 0xef, 0xef, 0xa5, 0xec, 0x58, 0x0a,
-0xff, 0x2c, 0x45, 0xfc, 0x93, 0x3a, 0xb5, 0xf9,
-0x4f, 0xf1, 0x8f, 0xc2, 0x59, 0xd8, 0x14, 0x7d,
-0x7e, 0x0f, 0xf5, 0xc7, 0x06, 0x88, 0x78, 0x19,
-0x57, 0xf1, 0xb7, 0xd5, 0x05, 0xaf, 0x50, 0xf8,
-0x40, 0xf8, 0x41, 0x9b, 0xfe, 0xf9, 0x55, 0x14,
-0xfd, 0x7d, 0x83, 0xd0, 0x0e, 0xe2, 0x9f, 0xd2,
-0x56, 0xb5, 0x1d, 0x8a, 0x81, 0xea, 0xdf, 0xbb,
-0x8f, 0xb3, 0x73, 0x1d, 0x6b, 0xa4, 0x52, 0x23,
-0xf2, 0x79, 0x5b, 0xfd, 0x57, 0xc9, 0xcc, 0x1f,
-0x4f, 0x17, 0xcd, 0x9d, 0x33, 0x10, 0xff, 0xb4,
-0xaa, 0xc7, 0x1d, 0x35, 0x62, 0x63, 0x69, 0x19,
-0x55, 0xd8, 0xd5, 0xb0, 0x8d, 0x30, 0xcf, 0x30,
-0x86, 0xb3, 0xea, 0xbf, 0x46, 0xd8, 0x3a, 0xe8,
-0x25, 0x12, 0x17, 0xe1, 0x19, 0xcf, 0x32, 0x02,
-0x72, 0xac, 0x1f, 0xac, 0xb1, 0x2f, 0x83, 0x88,
-0x60, 0x89, 0xdf, 0xa5, 0x7a, 0xd3, 0xfd, 0x37,
-0x7a, 0xa6, 0xf3, 0x5f, 0x8f, 0xe3, 0xf5, 0x67,
-0xd3, 0x89, 0xb0, 0xae, 0x17, 0x43, 0x56, 0x22,
-0x2c, 0x85, 0x7f, 0xb2, 0xe7, 0x83, 0xe8, 0x93,
-0x7c, 0x21, 0x73, 0x11, 0xdb, 0x79, 0x48, 0xaf,
-0x66, 0x56, 0x3d, 0xef, 0x10, 0x4b, 0x55, 0x20,
-0x8a, 0x53, 0x56, 0x04, 0x52, 0x65, 0x36, 0xfc,
-0x33, 0x0f, 0x9e, 0x37, 0x3d, 0x71, 0x2a, 0xd2,
-0xa1, 0xb6, 0x3f, 0x51, 0xe7, 0xce, 0xd4, 0xa0,
-0x2b, 0xa1, 0xea, 0x9e, 0xf7, 0x99, 0xc5, 0x88,
-0xce, 0xaa, 0xff, 0xca, 0xb9, 0x1b, 0xfa, 0x86,
-0xe7, 0xd6, 0xa8, 0x53, 0xed, 0x05, 0x35, 0xde,
-0xd5, 0x94, 0xb4, 0x88, 0xa9, 0x78, 0xe4, 0x65,
-0x74, 0xed, 0x75, 0xca, 0x30, 0x66, 0xea, 0xbf,
-0x62, 0x30, 0x8b, 0xda, 0x76, 0x99, 0x94, 0x7f,
-0x97, 0xd6, 0x1a, 0xa5, 0x49, 0xef, 0xaa, 0xa6,
-0x53, 0xd3, 0xb0, 0xe7, 0x13, 0x8d, 0x2a, 0xaa,
-0x54, 0xbf, 0xad, 0xfe, 0xab, 0x87, 0x5f, 0x0d,
-0x7b, 0xc5, 0x0d, 0xba, 0xeb, 0xce, 0x22, 0x37,
-0x0c, 0x89, 0x3d, 0x31, 0xe7, 0x8a, 0xe6, 0x37,
-0x38, 0xcd, 0x07, 0xd9, 0xb4, 0x1a, 0x3f, 0x93,
-0xb5, 0x16, 0xff, 0x59, 0xb5, 0xd5, 0x7f, 0xcd,
-0xda, 0xe9, 0xb4, 0xc2, 0x3e, 0x31, 0xd5, 0xb2,
-0xef, 0xc6, 0x83, 0x94, 0x46, 0x24, 0x22, 0x10,
-0x7e, 0x56, 0x43, 0x30, 0x8a, 0x5a, 0x00, 0xed,
-0x7b, 0xa6, 0xfe, 0x0b, 0x72, 0xfe, 0xc0, 0x97,
-0x52, 0x90, 0x27, 0x21, 0xdf, 0x63, 0x5c, 0x16,
-0xd5, 0xa1, 0x47, 0x5e, 0x97, 0x3f, 0x6a, 0x1d,
-0xeb, 0x08, 0x50, 0xd9, 0xfb, 0x8b, 0xf8, 0x5f,
-0xac, 0x9e, 0xe3, 0x3c, 0x24, 0x67, 0xf0, 0x49,
-0x4f, 0x61, 0x04, 0xba, 0xf4, 0x4a, 0x50, 0x57,
-0xdd, 0xf3, 0x26, 0xec, 0xd5, 0xca, 0x44, 0xe5,
-0xdd, 0xec, 0x12, 0x6c, 0x32, 0xca, 0x46, 0x51,
-0xed, 0xf8, 0x9b, 0xd6, 0x96, 0x6c, 0x33, 0xf9,
-0xdf, 0x3b, 0x2a, 0x32, 0xf5, 0x5f, 0x08, 0x79,
-0xad, 0xb7, 0x6b, 0x67, 0xc3, 0x68, 0xb8, 0xb7,
-0x0d, 0xe2, 0x65, 0x13, 0xb1, 0x1f, 0x97, 0xcc,
-0xe1, 0xa8, 0xc1, 0x1e, 0xb7, 0x2a, 0xc8, 0x5a,
-0x5b, 0xe7, 0xda, 0xf1, 0x4f, 0x52, 0xb3, 0x56,
-0xcf, 0xeb, 0x1e, 0x32, 0xe2, 0xb8, 0x9e, 0x25,
-0x79, 0xb9, 0xaf, 0xe6, 0x75, 0xc0, 0xf2, 0x41,
-0xde, 0xc5, 0x88, 0xfd, 0xab, 0x53, 0xa1, 0x2b,
-0xb7, 0xd5, 0x7f, 0x51, 0xa3, 0x82, 0xa0, 0xe4,
-0xea, 0x91, 0x3f, 0x84, 0xbe, 0x44, 0xc0, 0xc9,
-0x05, 0x6e, 0x8c, 0xa7, 0xc4, 0x73, 0x49, 0x7d,
-0x8d, 0xbc, 0x1d, 0x5a, 0x07, 0x2c, 0xfe, 0x73,
-0x45, 0xa6, 0xfe, 0x0b, 0x3e, 0x4c, 0x85, 0xc5,
-0x1e, 0x92, 0x4f, 0xc3, 0x45, 0xdd, 0x2a, 0x84,
-0x7f, 0x4f, 0xbb, 0x60, 0xd4, 0x13, 0x2d, 0x7c,
-0x6c, 0xc9, 0x45, 0xde, 0x60, 0xba, 0xa2, 0xd5,
-0x99, 0xfe, 0xd8, 0x92, 0x36, 0xc1, 0x4f, 0x10,
-0x49, 0x3e, 0x55, 0xdd, 0x5c, 0x2d, 0x0a, 0x52,
-0x34, 0x8f, 0x32, 0xd4, 0xe7, 0x0e, 0x3f, 0x02,
-0xa1, 0x5e, 0x93, 0x7b, 0x6d, 0xf5, 0x5f, 0xc4,
-0xff, 0xb1, 0xda, 0x5c, 0xaf, 0x63, 0x49, 0x71,
-0x00, 0xac, 0x34, 0xfa, 0x69, 0xd1, 0x07, 0x01,
-0x3f, 0x6e, 0x03, 0x1a, 0x64, 0xe6, 0x81, 0xd6,
-0x68, 0x56, 0xfd, 0x57, 0x39, 0x3c, 0x46, 0x7c,
-0xe9, 0x18, 0x1b, 0x33, 0xf6, 0x58, 0xfd, 0x37,
-0xac, 0x42, 0x8c, 0x8a, 0x81, 0x6e, 0xc1, 0x76,
-0x31, 0xa1, 0x78, 0xc0, 0xb1, 0x8d, 0xc5, 0x6c,
-0xf5, 0x5f, 0xf3, 0xac, 0xa6, 0x0a, 0xaa, 0xd6,
-0x44, 0xbe, 0x13, 0xe2, 0x1f, 0xdd, 0x9d, 0x40,
-0xa0, 0x35, 0xca, 0x16, 0xfb, 0x1d, 0x31, 0x4b,
-0x75, 0xa3, 0x06, 0xb3, 0xcd, 0x07, 0xc9, 0x4f,
-0x35, 0xf9, 0x59, 0x1a, 0x6f, 0x1a, 0x9b, 0x1a,
-0x0b, 0x52, 0x34, 0xb6, 0xf3, 0xa2, 0x72, 0xb5,
-0xf9, 0xd7, 0xe4, 0x71, 0xbf, 0x8c, 0x47, 0xaa,
-0x62, 0xaa, 0x1d, 0xff, 0x0c, 0x6b, 0x53, 0xfc,
-0xe7, 0xf1, 0x45, 0x93, 0xf0, 0x12, 0xba, 0x09,
-0x72, 0x52, 0xa2, 0xc1, 0x82, 0xc4, 0x00, 0x4f,
-0x01, 0xa1, 0xec, 0xf9, 0x20, 0xe3, 0xb1, 0xb1,
-0xba, 0xc6, 0x02, 0xe7, 0xab, 0x9d, 0xf1, 0xc3,
-0x43, 0xfe, 0x6a, 0xad, 0x6a, 0x90, 0xea, 0xdf,
-0xfd, 0x8d, 0xdc, 0x37, 0xd0, 0xe9, 0x17, 0x43,
-0xf5, 0x7b, 0x9c, 0xce, 0x87, 0x3b, 0xfd, 0x52,
-0x06, 0xff, 0x7c, 0x10, 0x43, 0xfc, 0x73, 0x92,
-0x3f, 0xe7, 0xf6, 0x19, 0xdd, 0x86, 0xe7, 0x24,
-0x5f, 0x28, 0xff, 0xc4, 0xec, 0x0e, 0xf9, 0x4e,
-0xde, 0xb6, 0xd7, 0x4d, 0x82, 0xe7, 0x64, 0x64,
-0x67, 0x56, 0xfd, 0x57, 0xc2, 0x1a, 0x83, 0xc2,
-0xc1, 0x61, 0x76, 0x89, 0x40, 0x6c, 0x98, 0x6b,
-0x9e, 0x84, 0x47, 0xf8, 0xcb, 0x7f, 0xce, 0xdd,
-0xdb, 0x9d, 0x3a, 0x3a, 0x1b, 0x2d, 0x91, 0x2c,
-0xfc, 0x53, 0xb8, 0x93, 0xf2, 0x5f, 0x27, 0x11,
-0xe4, 0xdc, 0x46, 0x65, 0x65, 0x10, 0x89, 0x31,
-0x3c, 0xa2, 0x54, 0x41, 0x9e, 0x87, 0xc5, 0x58,
-0x27, 0xc4, 0x44, 0xab, 0x68, 0xf2, 0xdb, 0xf8,
-0xcf, 0x23, 0x94, 0x06, 0xf5, 0x3b, 0x1f, 0x94,
-0xdf, 0xa1, 0x69, 0xa4, 0xa8, 0x96, 0x3f, 0x75,
-0xda, 0x9b, 0x38, 0x69, 0x35, 0x52, 0xd0, 0x29,
-0x10, 0x21, 0x9c, 0x51, 0x15, 0x6c, 0xf1, 0x9f,
-0x1e, 0x04, 0x81, 0xe8, 0x74, 0x7c, 0x84, 0x5f,
-0xc7, 0x85, 0x0e, 0x82, 0x3d, 0x65, 0x07, 0xf9,
-0x65, 0xf1, 0x5d, 0x42, 0x44, 0x56, 0xa0, 0xcc,
-0x98, 0x1f, 0xba, 0x32, 0xfe, 0xa3, 0xd5, 0x6a,
-0xce, 0xb0, 0x7c, 0x77, 0xe8, 0xbc, 0x1e, 0x18,
-0x28, 0x88, 0xab, 0xf3, 0xbc, 0x13, 0xad, 0xbd,
-0xa6, 0x33, 0xda, 0xed, 0x64, 0x47, 0x4a, 0x28,
-0xbe, 0x91, 0x95, 0xff, 0x42, 0x85, 0x3a, 0xec,
-0xf9, 0x15, 0xdf, 0x1b, 0xf6, 0x49, 0x17, 0x5a,
-0x11, 0x2d, 0xaf, 0x65, 0x73, 0xe1, 0x80, 0xf0,
-0x14, 0x5f, 0xdb, 0xc3, 0xca, 0x8c, 0x08, 0xbe,
-0x70, 0x64, 0x63, 0x16, 0xfe, 0x09, 0x19, 0x42,
-0x5a, 0x7e, 0x9a, 0xd7, 0x05, 0x5e, 0x73, 0xf6,
-0x86, 0x3d, 0xe5, 0x0e, 0x08, 0x94, 0x3b, 0xf7,
-0xc8, 0x15, 0xe5, 0x11, 0x1d, 0x35, 0x52, 0xcc,
-0x08, 0x39, 0x79, 0x76, 0xfe, 0x8b, 0x68, 0x3f,
-0xba, 0x1e, 0x69, 0x65, 0x9b, 0xe1, 0x89, 0x68,
-0xe9, 0x88, 0xfa, 0x2d, 0x76, 0xb5, 0xb1, 0x37,
-0xf2, 0x37, 0x49, 0xfe, 0x5f, 0xc2, 0xb3, 0xf5,
-0xb2, 0x28, 0x9a, 0xfe, 0x15, 0xc2, 0x1e, 0xff,
-0x71, 0x20, 0x86, 0xa8, 0x21, 0xfc, 0x36, 0xa4,
-0xf4, 0x6a, 0xf1, 0xc1, 0xd9, 0xda, 0x0c, 0x67,
-0xe8, 0x22, 0xd4, 0x99, 0x7c, 0xb7, 0xec, 0xeb,
-0x4a, 0x6a, 0xf1, 0x16, 0xe7, 0x81, 0xac, 0xf8,
-0xcf, 0x5e, 0xaa, 0xf6, 0x02, 0x57, 0xc7, 0xa7,
-0x56, 0xb5, 0x7c, 0xa2, 0x35, 0x2a, 0x54, 0x1d,
-0xd0, 0x7a, 0xbf, 0xb6, 0x10, 0xe6, 0xf7, 0xa3,
-0xa1, 0x7f, 0x4b, 0x6b, 0x8c, 0xb8, 0x12, 0xcd,
-0xc3, 0xee, 0xe9, 0xf5, 0xe9, 0x41, 0xfb, 0x45,
-0xd1, 0x1e, 0x5f, 0x5f, 0x99, 0x4f, 0xbb, 0x28,
-0xe8, 0x6b, 0x45, 0xff, 0xf7, 0x88, 0x55, 0xb6,
-0xd0, 0xac, 0xd3, 0x8e, 0x15, 0x16, 0x9f, 0x33,
-0x13, 0xff, 0xe9, 0x83, 0x0d, 0xb0, 0x0d, 0xb8,
-0x81, 0x2a, 0xcf, 0xcf, 0xac, 0xf9, 0x8c, 0x25,
-0xd0, 0x95, 0x5b, 0x66, 0x16, 0xb4, 0xa3, 0x6a,
-0x3d, 0x08, 0xdb, 0x8c, 0xc5, 0x21, 0xf6, 0xd1,
-0x15, 0xf3, 0x61, 0xf5, 0x24, 0xaf, 0xb3, 0xc2,
-0xe6, 0xa5, 0x29, 0x61, 0x2a, 0xfe, 0x93, 0x3a,
-0x82, 0xaa, 0x78, 0xdc, 0x56, 0xff, 0x65, 0xa2,
-0x11, 0xa4, 0x2e, 0xb1, 0x6e, 0x80, 0x78, 0xa9,
-0x2e, 0xb5, 0x92, 0x62, 0x8f, 0x50, 0x3f, 0x13,
-0x62, 0xcd, 0xc6, 0xf1, 0x14, 0x0a, 0xc7, 0xb3,
-0xe2, 0x3f, 0x87, 0x15, 0xdc, 0x24, 0x31, 0x95,
-0x60, 0x4f, 0xaf, 0xf0, 0xc5, 0x9a, 0xbd, 0x08,
-0x74, 0x7b, 0xad, 0x23, 0xca, 0x05, 0xa5, 0x57,
-0xe0, 0x0a, 0x5c, 0xc8, 0xce, 0x7f, 0x69, 0xe9,
-0xfa, 0xf7, 0x9b, 0xc1, 0xd5, 0x5f, 0x36, 0x4c,
-0xdb, 0x46, 0xb2, 0xf2, 0x5f, 0xe7, 0xdc, 0x8d,
-0x8a, 0x55, 0xff, 0x9e, 0xd6, 0xe7, 0xda, 0x48,
-0x0a, 0x04, 0xa6, 0xfa, 0xe3, 0x59, 0xf5, 0x4d,
-0x73, 0xd8, 0xa1, 0xd4, 0x58, 0x90, 0x72, 0x65,
-0xea, 0x14, 0x4b, 0xdb, 0x0b, 0x0b, 0xff, 0x58,
-0x65, 0x5f, 0x4d, 0x23, 0x53, 0x44, 0x14, 0x9a,
-0x8f, 0x06, 0x14, 0xf6, 0xf1, 0x94, 0xe3, 0xa9,
-0x98, 0xf1, 0x27, 0xf8, 0x87, 0xe2, 0x1b, 0x79,
-0x68, 0xaf, 0x51, 0x55, 0xcf, 0x37, 0xf2, 0xda,
-0x3d, 0x35, 0xca, 0x46, 0x6a, 0x2c, 0x30, 0x8c,
-0x78, 0x86, 0x4c, 0x79, 0x5e, 0xfb, 0x15, 0xf9,
-0x2f, 0xea, 0x76, 0x98, 0x47, 0x69, 0xaf, 0x67,
-0xad, 0xfe, 0x87, 0xe1, 0x59, 0xb1, 0x35, 0xf3,
-0xb6, 0xb5, 0xf1, 0x65, 0xeb, 0xe9, 0x54, 0x59,
-0xdb, 0xbc, 0x2b, 0xf3, 0x5f, 0x09, 0xc4, 0x3f,
-0xf9, 0x61, 0x39, 0x29, 0x26, 0xf4, 0x06, 0x12,
-0x40, 0x98, 0x78, 0xc4, 0xc9, 0x64, 0xbd, 0x2b,
-0xa1, 0xf7, 0xf2, 0xfc, 0x01, 0xb9, 0x2a, 0xbb,
-0xfe, 0x0b, 0xf1, 0xcf, 0xed, 0x9b, 0x1f, 0xb6,
-0x84, 0xc3, 0x55, 0x56, 0xda, 0x8b, 0x10, 0x51,
-0xef, 0xc3, 0x63, 0x28, 0xcc, 0x6e, 0xcb, 0xcd,
-0xca, 0x7f, 0xcd, 0x4c, 0x83, 0x1c, 0x25, 0x76,
-0xc8, 0x1f, 0x98, 0x9a, 0x0f, 0xab, 0x07, 0x68,
-0x3e, 0x6c, 0x39, 0x9b, 0x3a, 0x35, 0xd7, 0xd6,
-0xff, 0xe7, 0x34, 0xe1, 0x9f, 0x1c, 0x6f, 0x38,
-0x1c, 0x13, 0x11, 0xbf, 0xee, 0xa6, 0xf9, 0xb0,
-0x46, 0xc4, 0xeb, 0xe1, 0xbc, 0x93, 0x95, 0xa6,
-0xa0, 0xd1, 0x40, 0x56, 0xfe, 0xeb, 0xc4, 0xc0,
-0x1a, 0x6d, 0x9b, 0xc1, 0x7f, 0xc9, 0x8a, 0xb7,
-0xaf, 0xd1, 0xb7, 0x2d, 0xf1, 0x7e, 0x8e, 0x15,
-0xbb, 0xd7, 0xf8, 0xb7, 0x59, 0xf3, 0xd1, 0x86,
-0xad, 0x53, 0x9f, 0xb7, 0xc7, 0x7f, 0x72, 0x76,
-0x52, 0x7d, 0x22, 0x7e, 0xc3, 0x6c, 0xef, 0xf4,
-0x3c, 0x50, 0x2a, 0x04, 0x2b, 0x6b, 0x6e, 0x1d,
-0xf6, 0xd0, 0x7a, 0xe2, 0xc2, 0xb6, 0xa3, 0x63,
-0x32, 0xbd, 0x1f, 0x62, 0xc5, 0x3b, 0xad, 0xdf,
-0x77, 0x56, 0xb4, 0xa8, 0x3c, 0xf5, 0xb3, 0x7e,
-0x5f, 0x9d, 0x4b, 0x47, 0xbe, 0x91, 0x8a, 0xef,
-0x41, 0x60, 0x99, 0xef, 0x51, 0xd9, 0x2b, 0xd2,
-0xf1, 0x07, 0x78, 0x62, 0x8a, 0x0f, 0x66, 0x65,
-0xbb, 0x1a, 0x68, 0x1a, 0xec, 0xa0, 0xa0, 0xf9,
-0x20, 0xf3, 0x35, 0xf5, 0x37, 0x29, 0x44, 0xb4,
-0x35, 0x2b, 0xff, 0x15, 0x05, 0xcb, 0x7e, 0x99,
-0xaa, 0x66, 0x95, 0x7d, 0x59, 0xf1, 0x9f, 0x41,
-0x6d, 0x41, 0x89, 0x93, 0x3a, 0xa2, 0x9d, 0xd2,
-0xaa, 0x8b, 0xf1, 0x88, 0x23, 0xd3, 0xff, 0x47,
-0xf1, 0xc2, 0x61, 0xb1, 0x9d, 0xe2, 0x3f, 0x5e,
-0xb6, 0x5e, 0x78, 0x10, 0xcf, 0x6f, 0x47, 0x20,
-0x24, 0xb6, 0xf7, 0x72, 0x9a, 0x18, 0x72, 0xd8,
-0xdc, 0x4e, 0xf5, 0xef, 0xdc, 0x16, 0xff, 0x31,
-0x98, 0x10, 0x54, 0xf6, 0xe5, 0xa0, 0x66, 0x7f,
-0x31, 0xe0, 0x96, 0x10, 0x89, 0xe9, 0x1c, 0x9d,
-0x85, 0x26, 0x91, 0x20, 0x1c, 0xe5, 0x70, 0xa4,
-0xf9, 0x93, 0xba, 0xe4, 0x84, 0xb5, 0x14, 0xf4,
-0x58, 0xe5, 0x69, 0x80, 0x4e, 0x14, 0x52, 0x8d,
-0x6d, 0x25, 0x9d, 0xfa, 0x77, 0x39, 0x2d, 0x3c,
-0x80, 0x47, 0xbc, 0x59, 0xf5, 0x5f, 0xa6, 0x58,
-0xa0, 0xbb, 0xb8, 0xec, 0x86, 0x41, 0x14, 0x38,
-0x95, 0x7d, 0x91, 0xe0, 0xa3, 0x23, 0x74, 0xca,
-0xd9, 0x2a, 0x57, 0x64, 0xc5, 0x7f, 0xfe, 0xce,
-0x0a, 0xb3, 0x4b, 0xe9, 0xfc, 0x57, 0x92, 0xa5,
-0x13, 0x61, 0x7f, 0x67, 0x51, 0xa3, 0xed, 0xf5,
-0x5f, 0xd2, 0xb8, 0xb8, 0x24, 0x6e, 0xb2, 0xca,
-0xbe, 0xb4, 0xa3, 0x54, 0xff, 0x35, 0x8a, 0x6e,
-0xfb, 0xb1, 0xae, 0xea, 0x11, 0xd7, 0x7e, 0xf9,
-0x79, 0xe5, 0x58, 0xb8, 0x1a, 0xa1, 0x91, 0xad,
-0x7e, 0xb9, 0xa7, 0x70, 0x83, 0x8e, 0xb0, 0x76,
-0xd8, 0x3b, 0xe9, 0xb8, 0x56, 0x6c, 0xe4, 0x3b,
-0x4c, 0x3e, 0x1c, 0x6e, 0x80, 0x2e, 0x7e, 0xa3,
-0x53, 0x3d, 0x14, 0xae, 0x89, 0xed, 0x84, 0x52,
-0x84, 0x46, 0xe1, 0x0a, 0x5b, 0xfc, 0x27, 0x4a,
-0x6d, 0x82, 0x80, 0x37, 0x69, 0xed, 0xfc, 0x01,
-0x6a, 0x6f, 0x1d, 0xb2, 0xea, 0xdf, 0xe7, 0xf4,
-0xab, 0xf7, 0xb2, 0xad, 0xdc, 0xc2, 0x7b, 0x9c,
-0xdd, 0x6a, 0xab, 0xff, 0x3a, 0x0a, 0xbb, 0xa3,
-0xe5, 0xc3, 0xfc, 0xe6, 0xb9, 0x4b, 0x58, 0x87,
-0xa9, 0xff, 0x23, 0x9f, 0xe5, 0x90, 0x0c, 0xf1,
-0xaa, 0x57, 0x57, 0x15, 0x36, 0x03, 0x62, 0xed,
-0xb1, 0x99, 0x6a, 0x03, 0xbb, 0xd3, 0x56, 0xff,
-0xf5, 0x53, 0xda, 0x0f, 0xa3, 0xce, 0xbd, 0xf2,
-0x12, 0xaa, 0x06, 0x35, 0x67, 0x6d, 0x95, 0xd1,
-0xd1, 0x18, 0xae, 0x0d, 0xb8, 0x22, 0xf2, 0x93,
-0x9f, 0x4b, 0x18, 0x01, 0x40, 0x68, 0xf4, 0x97,
-0xb6, 0xf8, 0x4f, 0x52, 0xbf, 0xc0, 0xeb, 0xdc,
-0xae, 0x07, 0x8a, 0xb6, 0x85, 0x3e, 0xe2, 0x0d,
-0xe8, 0x65, 0x77, 0x0e, 0x79, 0x3f, 0x66, 0xc1,
-0x84, 0xcb, 0xbf, 0xe3, 0x10, 0x22, 0xa2, 0x83,
-0x94, 0x08, 0xdb, 0x69, 0x8b, 0xff, 0x5c, 0x82,
-0x7f, 0x84, 0xea, 0xa4, 0x73, 0x75, 0x51, 0x50,
-0x79, 0x8d, 0xba, 0xfd, 0x0c, 0x17, 0x35, 0xe0,
-0x46, 0x5a, 0x40, 0x1b, 0xa9, 0xc6, 0xda, 0x5a,
-0xca, 0x7b, 0x72, 0xa6, 0xff, 0x4f, 0x07, 0x7c,
-0x49, 0x7f, 0xc3, 0xf0, 0xf8, 0xf9, 0x06, 0xb9,
-0x0c, 0xde, 0x68, 0xf2, 0xd4, 0xf2, 0x9d, 0x0e,
-0x3d, 0x55, 0x7f, 0x1d, 0x67, 0x5e, 0xab, 0xb1,
-0x21, 0xf5, 0xff, 0xb1, 0xe5, 0xbf, 0x96, 0x18,
-0x8f, 0xc1, 0x3d, 0x83, 0x7c, 0x37, 0xf3, 0x19,
-0xcf, 0x80, 0x95, 0x9d, 0xd1, 0xe1, 0x31, 0xc5,
-0xd3, 0x4f, 0x81, 0x0b, 0x2f, 0x5d, 0xef, 0x88,
-0x65, 0xcf, 0x47, 0x93, 0xa2, 0x88, 0x08, 0x70,
-0x53, 0xa1, 0x36, 0xb6, 0x04, 0xd4, 0x24, 0x51,
-0x5c, 0xbf, 0x56, 0xd6, 0x86, 0x8b, 0x4d, 0x8d,
-0x7f, 0xb5, 0x0a, 0x5b, 0xfe, 0x8b, 0x7f, 0x95,
-0xff, 0x3a, 0x95, 0x44, 0x70, 0x5a, 0xd5, 0xc4,
-0xce, 0xb8, 0x15, 0xf6, 0xe9, 0x35, 0x7d, 0xbd,
-0xb2, 0x8f, 0x51, 0xfc, 0xe7, 0xc1, 0x98, 0xad,
-0xff, 0x4f, 0xec, 0xda, 0x71, 0xaf, 0x35, 0x04,
-0xb6, 0xa3, 0x39, 0x6e, 0xc5, 0x4b, 0x37, 0x99,
-0xd6, 0x58, 0xd8, 0xf9, 0x60, 0x4d, 0x58, 0xa6,
-0x53, 0xf9, 0xc7, 0x3b, 0x6d, 0xfd, 0x0f, 0xf3,
-0xc7, 0xb5, 0x53, 0xd4, 0xcd, 0xcc, 0xec, 0x4c,
-0xa2, 0x1a, 0xbf, 0x09, 0x0a, 0xc2, 0x9d, 0xe3,
-0x62, 0xd2, 0x13, 0x80, 0xa5, 0xc6, 0x33, 0xfe,
-0x28, 0xde, 0x81, 0xe7, 0x1f, 0x97, 0xc7, 0xd3,
-0xf3, 0x8c, 0x4c, 0x18, 0x5a, 0xde, 0x1d, 0xad,
-0x1a, 0x16, 0x07, 0xd9, 0x07, 0xe2, 0x00, 0xd1,
-0x7e, 0x88, 0xff, 0x7c, 0xa0, 0xab, 0x82, 0x1a,
-0x45, 0xfe, 0x0c, 0x9e, 0x69, 0xaf, 0xc2, 0xf7,
-0x0d, 0x67, 0xe2, 0x6f, 0x09, 0xe8, 0x42, 0x07,
-0xcd, 0xa7, 0x38, 0xc0, 0xdd, 0xaf, 0xf7, 0x19,
-0x56, 0x23, 0xa0, 0x7e, 0x25, 0xae, 0xe9, 0x0a,
-0x79, 0x1c, 0x06, 0x9e, 0xd2, 0xd0, 0x43, 0x1f,
-0x48, 0xc7, 0x73, 0x4c, 0xa5, 0xc7, 0x58, 0x07,
-0x55, 0x83, 0x5e, 0x1a, 0x8b, 0x73, 0x20, 0xb5,
-0xda, 0x63, 0x70, 0x0d, 0x54, 0x9c, 0x54, 0xe3,
-0x4d, 0xbb, 0x28, 0x23, 0x3f, 0xe8, 0x88, 0x35,
-0x8d, 0x67, 0xfa, 0x5b, 0x2a, 0x31, 0x48, 0x48,
-0xc1, 0x50, 0x55, 0xac, 0xe8, 0xbd, 0xf2, 0x8b,
-0x52, 0xfd, 0xf2, 0x07, 0x85, 0x3c, 0x96, 0x87,
-0x66, 0x17, 0x96, 0xc6, 0xcb, 0x48, 0xff, 0x54,
-0x95, 0xe4, 0x47, 0x8b, 0xcc, 0xf6, 0xcc, 0xef,
-0x7b, 0x90, 0x92, 0x80, 0x31, 0x17, 0x95, 0x99,
-0xa0, 0xd9, 0x0a, 0x23, 0x30, 0x1e, 0x2f, 0x9c,
-0x50, 0x82, 0x49, 0xc4, 0x87, 0x17, 0xe1, 0x52,
-0x2e, 0x22, 0xa2, 0x31, 0x74, 0xed, 0xa7, 0xef,
-0x7f, 0x02, 0x76, 0xc2, 0x61, 0x29, 0x68, 0x54,
-0xee, 0x94, 0xbd, 0xf0, 0x6b, 0xa8, 0x37, 0x7c,
-0xdb, 0x8b, 0xc6, 0xc8, 0xbe, 0x6b, 0xce, 0x5e,
-0xb9, 0x4b, 0xfc, 0x9a, 0x84, 0xa8, 0x5c, 0x97,
-0x89, 0x27, 0x14, 0x7b, 0xa9, 0x5b, 0x9d, 0xb0,
-0xb2, 0x9f, 0x11, 0xc9, 0xbb, 0xad, 0x84, 0xd8,
-0xaa, 0x31, 0xe1, 0x31, 0x4b, 0xd6, 0x33, 0x6f,
-0xe4, 0x64, 0x89, 0x27, 0x99, 0x4f, 0xf5, 0x44,
-0xd3, 0x3f, 0x6f, 0x52, 0xf1, 0x6a, 0x1d, 0x02,
-0xbd, 0xb3, 0x12, 0xa6, 0x28, 0x5b, 0xa5, 0x50,
-0x17, 0xa2, 0x1d, 0x93, 0xc6, 0x28, 0x27, 0x39,
-0x34, 0x1d, 0xce, 0x8b, 0xb2, 0x7b, 0xa8, 0x03,
-0xe4, 0xf4, 0xd3, 0x03, 0x5a, 0xdf, 0xab, 0xe0,
-0x81, 0x48, 0xe5, 0x0a, 0xef, 0x8a, 0xb0, 0x43,
-0xac, 0x5d, 0xbf, 0x22, 0xc4, 0x57, 0xe4, 0xbe,
-0x29, 0x9e, 0x14, 0xf3, 0x3c, 0xfc, 0xbe, 0xdc,
-0xab, 0xa4, 0x87, 0xbb, 0x42, 0x81, 0xbc, 0xd6,
-0x74, 0x35, 0x0e, 0xc0, 0x0a, 0x70, 0xc2, 0xcb,
-0x46, 0xb0, 0xc7, 0xa5, 0xa9, 0xb9, 0x62, 0x58,
-0x8a, 0x0b, 0xde, 0x20, 0x0f, 0xec, 0x14, 0x3c,
-0x96, 0xf4, 0x72, 0x39, 0xd2, 0xb5, 0x0c, 0xe2,
-0xb4, 0xb5, 0xdc, 0xe9, 0xeb, 0x8d, 0x99, 0x56,
-0x3d, 0x66, 0xcb, 0x7c, 0x9a, 0x17, 0xf6, 0x71,
-0xe1, 0xdc, 0x96, 0x19, 0xa2, 0x6c, 0x08, 0xfe,
-0x4a, 0xbb, 0x4a, 0x41, 0xb5, 0x33, 0x48, 0x9f,
-0x2a, 0xe0, 0x87, 0x39, 0x9c, 0x99, 0x3f, 0x9e,
-0xdf, 0x03, 0xdf, 0x12, 0xf5, 0xa6, 0xd3, 0x5f,
-0xb4, 0xcb, 0xea, 0xff, 0xec, 0x8a, 0x32, 0x04,
-0x42, 0x5d, 0x01, 0xb3, 0xc0, 0x2f, 0xfb, 0x94,
-0xd7, 0xa1, 0x36, 0x49, 0xfd, 0x9f, 0xd9, 0xf4,
-0xf5, 0x09, 0xd8, 0x82, 0x68, 0x3f, 0x55, 0x46,
-0x0a, 0x7b, 0x49, 0xdb, 0x84, 0x58, 0x54, 0x89,
-0xc3, 0x3c, 0x50, 0xa9, 0x89, 0x43, 0x58, 0xb1,
-0x1a, 0xe8, 0x7f, 0x9c, 0x5e, 0x4f, 0xb0, 0xfa,
-0x1f, 0xce, 0xa3, 0x26, 0xcf, 0x6f, 0xc2, 0x1e,
-0x31, 0x27, 0xb9, 0xb8, 0x2e, 0x34, 0x7b, 0xaa,
-0x23, 0x62, 0x38, 0xd5, 0xff, 0x07, 0x4f, 0x65,
-0xf2, 0xef, 0x09, 0x25, 0xc6, 0xd1, 0xad, 0x60,
-0x9c, 0xb3, 0x7b, 0x20, 0xde, 0x52, 0xee, 0xc6,
-0x6d, 0x26, 0x8b, 0xb8, 0xe6, 0xa5, 0x8a, 0x4b,
-0x43, 0x13, 0x2d, 0xe5, 0xc4, 0xff, 0xf9, 0x65,
-0xfa, 0x7a, 0xdc, 0x6f, 0x08, 0x7b, 0xea, 0x85,
-0xb3, 0x07, 0x8d, 0xce, 0x85, 0x4f, 0x3f, 0x17,
-0xdd, 0x14, 0x43, 0x6b, 0x75, 0x81, 0xca, 0xd6,
-0x74, 0xd9, 0xeb, 0x3e, 0xac, 0xd5, 0x0a, 0x27,
-0x22, 0xc0, 0xf4, 0xf5, 0x2b, 0x60, 0xaa, 0x1e,
-0x79, 0x91, 0x4c, 0xb4, 0x28, 0xf4, 0xbe, 0x0d,
-0x75, 0xbc, 0x70, 0x92, 0x37, 0x4a, 0xae, 0x41,
-0xf9, 0xac, 0x7f, 0x0c, 0xf5, 0x49, 0x01, 0xe1,
-0x9f, 0xe9, 0xeb, 0xbd, 0xf0, 0xe3, 0x8e, 0x43,
-0x5a, 0x03, 0x15, 0x31, 0x11, 0xda, 0x69, 0x68,
-0x19, 0xdc, 0x2a, 0xcf, 0x50, 0x0e, 0xc5, 0x82,
-0xcb, 0x37, 0x6d, 0xed, 0xcc, 0xb5, 0x02, 0x1d,
-0x2e, 0xcd, 0x36, 0x3f, 0x57, 0x14, 0xcf, 0x9d,
-0x9e, 0xee, 0x6a, 0x8d, 0x85, 0x6d, 0xcf, 0x7f,
-0x14, 0xf1, 0xf3, 0x3a, 0xf1, 0xb5, 0x90, 0xba,
-0x25, 0x77, 0x8e, 0xbe, 0xce, 0xa2, 0x06, 0xc9,
-0xa1, 0x34, 0x5e, 0x2a, 0x51, 0xca, 0xd1, 0x28,
-0x7f, 0x86, 0xf0, 0x4f, 0x0d, 0x50, 0x99, 0xb6,
-0x7a, 0xc2, 0x0a, 0x53, 0xa0, 0x70, 0x7c, 0x7d,
-0x0d, 0x5f, 0x03, 0x5f, 0x6a, 0xb9, 0x66, 0xd8,
-0x9d, 0x5b, 0x68, 0x4c, 0xff, 0x5e, 0x40, 0x20,
-0xc7, 0x82, 0x3d, 0xc5, 0xbb, 0x9f, 0xf0, 0x56,
-0x1e, 0x56, 0x53, 0xb0, 0xa7, 0x92, 0x68, 0x3f,
-0x24, 0x6c, 0x23, 0x21, 0x13, 0x7f, 0xbe, 0x13,
-0x42, 0xe1, 0x88, 0x5e, 0xcf, 0x6f, 0x0b, 0xab,
-0x7a, 0x78, 0x54, 0x27, 0x22, 0xb4, 0x44, 0xb0,
-0xa7, 0x2a, 0xaf, 0x3b, 0xec, 0xd6, 0xc3, 0x08,
-0x8d, 0x22, 0xae, 0x01, 0xf9, 0xaa, 0x74, 0x7d,
-0xc7, 0xd6, 0x99, 0x56, 0xdb, 0xe7, 0x36, 0xe2,
-0x03, 0xc7, 0x1e, 0x45, 0x6b, 0x9e, 0x67, 0xb5,
-0x35, 0xc6, 0x2f, 0x48, 0xa6, 0x7e, 0xd7, 0xe7,
-0xbd, 0x0d, 0x8b, 0x89, 0xff, 0x93, 0x9e, 0xb7,
-0x58, 0x92, 0xf7, 0xfb, 0xe2, 0x8d, 0x0a, 0x82,
-0x1c, 0xe2, 0x3f, 0xbf, 0xa6, 0x57, 0x2f, 0x42,
-0xfd, 0x5c, 0xa3, 0x58, 0xfc, 0x9f, 0xe3, 0x72,
-0x8d, 0x7b, 0x23, 0x2c, 0xb0, 0xe2, 0x3f, 0x99,
-0x7e, 0x89, 0xf0, 0xb2, 0x20, 0xfe, 0x8f, 0x93,
-0xf8, 0xcf, 0x59, 0xfd, 0x7f, 0x0a, 0x3a, 0xe4,
-0x52, 0xe8, 0x21, 0xfc, 0x13, 0x0e, 0x3f, 0x90,
-0xe9, 0xff, 0x0c, 0x5d, 0x27, 0x3a, 0x0a, 0x2d,
-0xfe, 0xcf, 0x60, 0xac, 0x03, 0xf4, 0x16, 0x5e,
-0xe8, 0x56, 0x80, 0x8e, 0x80, 0xc6, 0x5a, 0x8c,
-0x8e, 0x54, 0xff, 0xe7, 0xab, 0x33, 0xfd, 0x7f,
-0x10, 0xcf, 0x4c, 0x91, 0x7c, 0xa6, 0xd8, 0x3e,
-0xa9, 0x79, 0xbb, 0xe8, 0x08, 0xc7, 0x1d, 0xcb,
-0x51, 0xff, 0x58, 0xa7, 0x7e, 0x9a, 0x89, 0xff,
-0x28, 0x3b, 0xf5, 0x43, 0xda, 0x54, 0xb7, 0x43,
-0x0b, 0xff, 0x3c, 0x9a, 0x82, 0x3d, 0x84, 0x6f,
-0x5b, 0xe0, 0x90, 0xd6, 0x6b, 0xf1, 0x7f, 0xd2,
-0xf8, 0xe4, 0x30, 0xec, 0x64, 0xe7, 0xc5, 0x41,
-0xa3, 0x2a, 0x15, 0xd6, 0x78, 0x71, 0xd1, 0x7c,
-0x6d, 0x93, 0x25, 0x18, 0x16, 0x71, 0x88, 0x84,
-0xf9, 0x14, 0xff, 0x49, 0x7f, 0x5f, 0xd0, 0xc1,
-0x86, 0xa7, 0xd9, 0xce, 0x26, 0xba, 0x6e, 0x28,
-0x90, 0x16, 0xa8, 0x4f, 0x1d, 0x19, 0xc6, 0x17,
-0x75, 0x82, 0xcc, 0xd2, 0xf7, 0x87, 0x9c, 0x0a,
-0xc4, 0x3f, 0x9e, 0x0e, 0xbe, 0xdd, 0xea, 0xff,
-0xfc, 0xdd, 0x9d, 0xfc, 0x6d, 0xca, 0x7f, 0x09,
-0x3d, 0xcc, 0xdf, 0x96, 0x57, 0xeb, 0x47, 0xa5,
-0xb2, 0xef, 0xf3, 0x18, 0x83, 0xb4, 0xfe, 0xe1,
-0x5d, 0x54, 0x26, 0x50, 0x6e, 0x96, 0x94, 0x38,
-0x7c, 0xd4, 0x06, 0x73, 0xc4, 0xeb, 0x73, 0xe4,
-0xa2, 0x05, 0x8f, 0x85, 0xbc, 0x75, 0xac, 0xc0,
-0xd1, 0xa9, 0xc5, 0x50, 0xff, 0xd8, 0xe6, 0x77,
-0x4b, 0x30, 0xcb, 0x8b, 0xf8, 0x67, 0xa8, 0x75,
-0x35, 0xd5, 0x2f, 0x50, 0xe1, 0xd8, 0x2a, 0x36,
-0x4b, 0x27, 0x22, 0x2b, 0x0f, 0x39, 0x96, 0x28,
-0x9d, 0xf4, 0x69, 0x07, 0x58, 0xda, 0xdc, 0x21,
-0x9c, 0xba, 0x8a, 0xfd, 0xbc, 0xa3, 0x66, 0x74,
-0x56, 0x9d, 0xec, 0x82, 0x9f, 0x53, 0xfd, 0x42,
-0x9d, 0xd5, 0x08, 0x68, 0x41, 0x72, 0xd6, 0x9d,
-0x32, 0x35, 0x02, 0x5a, 0x10, 0x72, 0x7e, 0x47,
-0xce, 0x28, 0x38, 0x2f, 0x3c, 0x11, 0x7b, 0x27,
-0x35, 0xff, 0x2b, 0x35, 0x08, 0x6c, 0xc6, 0x34,
-0x10, 0xba, 0x4e, 0x73, 0x8d, 0x29, 0xef, 0xc3,
-0x6c, 0x03, 0x4f, 0x65, 0xea, 0xfd, 0x9b, 0x94,
-0x9d, 0xed, 0xc7, 0xc4, 0x55, 0x23, 0x05, 0x13,
-0xf2, 0x25, 0x7e, 0x2c, 0x7a, 0xd3, 0x6f, 0x5c,
-0x13, 0xcd, 0x97, 0xe0, 0x58, 0x8a, 0xf6, 0x53,
-0x0b, 0x9f, 0x6c, 0xa9, 0x26, 0x41, 0xcb, 0xc4,
-0x5b, 0xda, 0xbf, 0x2f, 0xd6, 0x6a, 0x65, 0x67,
-0xa8, 0xfe, 0xd4, 0xbb, 0xb6, 0xb0, 0xf4, 0x5d,
-0xf5, 0xeb, 0xe1, 0xa1, 0xf2, 0xb5, 0x25, 0x95,
-0x03, 0xaa, 0xce, 0x8a, 0x63, 0xfb, 0x56, 0xcf,
-0xc3, 0xef, 0x39, 0x9c, 0x89, 0xff, 0xc4, 0xc4,
-0x83, 0xfd, 0x08, 0x72, 0x06, 0x1d, 0xab, 0xd8,
-0xa4, 0xd1, 0x59, 0x3c, 0x2f, 0x41, 0x85, 0xff,
-0x4d, 0x56, 0x44, 0x48, 0x63, 0xc5, 0xfc, 0x59,
-0x28, 0x7d, 0x15, 0x8f, 0xac, 0x48, 0xdf, 0xdf,
-0x28, 0x7e, 0xd0, 0xe8, 0x8c, 0xea, 0x88, 0x7f,
-0x68, 0xba, 0x5c, 0xd4, 0x93, 0x54, 0x6b, 0x68,
-0xde, 0x77, 0x87, 0x45, 0x04, 0x72, 0x95, 0x1c,
-0x10, 0x5e, 0x43, 0x6d, 0x70, 0xb7, 0x67, 0xf2,
-0xe3, 0xca, 0x4f, 0xb4, 0x6e, 0x63, 0x4f, 0x72,
-0xf6, 0x5e, 0xf9, 0x32, 0x3b, 0x62, 0x54, 0x9c,
-0xbd, 0x6e, 0x96, 0xfc, 0x55, 0xed, 0x88, 0x89,
-0xf6, 0xa8, 0x77, 0xf1, 0xfc, 0x45, 0x17, 0xd0,
-0xc2, 0xba, 0x26, 0xd4, 0xa6, 0x8c, 0x7e, 0x80,
-0x5d, 0xe1, 0x8b, 0x7a, 0xdd, 0x00, 0x55, 0xbb,
-0x77, 0x5c, 0xd4, 0x83, 0x27, 0x5d, 0xdf, 0x97,
-0x87, 0xc4, 0x45, 0xbd, 0x61, 0xc0, 0x55, 0xf3,
-0xf2, 0x10, 0xbf, 0xe8, 0x09, 0xde, 0xe9, 0xf2,
-0x77, 0xc6, 0x6c, 0xbf, 0xd7, 0x16, 0x44, 0x0b,
-0x08, 0x7b, 0x56, 0x97, 0x35, 0xc0, 0x1f, 0x4b,
-0x8b, 0xcc, 0x8d, 0xe3, 0x72, 0x95, 0xb1, 0xc9,
-0x6c, 0x4c, 0x3a, 0xc7, 0xe5, 0x60, 0xde, 0x61,
-0xa8, 0x1e, 0x46, 0x0b, 0x08, 0x69, 0x7b, 0xd7,
-0xaf, 0x94, 0x6b, 0x8f, 0x45, 0xd1, 0xec, 0xf6,
-0xa5, 0xca, 0xb8, 0x3e, 0x26, 0x41, 0xe9, 0x86,
-0x82, 0x64, 0xeb, 0x56, 0x36, 0x6f, 0x0d, 0xe2,
-0x99, 0x45, 0x34, 0x1f, 0x6d, 0x51, 0x26, 0xfe,
-0xb3, 0x1c, 0x1e, 0x23, 0x33, 0xdd, 0x6b, 0x5d,
-0x5f, 0x91, 0xcc, 0x4b, 0xfd, 0x43, 0x34, 0xd3,
-0x28, 0x88, 0x3e, 0xc5, 0xf3, 0x0b, 0x8b, 0xff,
-0x93, 0xde, 0x0f, 0x9a, 0xc2, 0x1e, 0x86, 0xd8,
-0x90, 0xd7, 0xdf, 0x46, 0x44, 0xe8, 0xa7, 0x5f,
-0x8e, 0xf8, 0xdd, 0x4e, 0xb6, 0x07, 0x7c, 0xaf,
-0x54, 0xf8, 0x1d, 0x0a, 0x3c, 0x2c, 0x01, 0xd5,
-0x7f, 0xb1, 0xcc, 0xbc, 0x15, 0x7e, 0x7f, 0x74,
-0x0a, 0xff, 0x54, 0xc2, 0x45, 0xe5, 0xbe, 0xa4,
-0xd5, 0xff, 0xf0, 0xd7, 0x2c, 0x68, 0x56, 0x3d,
-0x8b, 0xf8, 0x67, 0x2b, 0x02, 0x21, 0xe2, 0xff,
-0xa4, 0xf3, 0x17, 0x1d, 0x33, 0x27, 0x17, 0xa1,
-0x7d, 0x3f, 0x89, 0x2f, 0x75, 0x2a, 0x76, 0x19,
-0x3f, 0x1c, 0xaa, 0x07, 0xf4, 0x1d, 0x53, 0x1a,
-0x13, 0x79, 0x17, 0x8a, 0x26, 0xc8, 0xf4, 0x1b,
-0xae, 0xf1, 0xe6, 0xa4, 0xad, 0xff, 0xcf, 0x78,
-0x64, 0x68, 0xce, 0x4d, 0x92, 0x4b, 0x74, 0xae,
-0x8a, 0x4f, 0x7a, 0xaa, 0xf9, 0x94, 0x63, 0x4b,
-0x8c, 0x68, 0x29, 0x29, 0x26, 0xf5, 0x46, 0xe6,
-0x3c, 0x91, 0x3d, 0xff, 0xc2, 0xd9, 0x4d, 0x24,
-0xde, 0x3e, 0x47, 0x95, 0x76, 0x40, 0x90, 0xe0,
-0xf9, 0x5d, 0xeb, 0xdf, 0x0d, 0x57, 0x8d, 0x74,
-0xbe, 0xc0, 0x3e, 0x2c, 0x3e, 0x20, 0xaa, 0x92,
-0x8e, 0xed, 0x2c, 0x9e, 0xd6, 0xcf, 0x3c, 0xa7,
-0x9f, 0x75, 0xde, 0xe8, 0x6d, 0x39, 0x82, 0xfe,
-0xb8, 0xd3, 0xdf, 0x14, 0x53, 0xd4, 0x52, 0x66,
-0xa2, 0xbd, 0x5b, 0x09, 0x7f, 0x05, 0xac, 0x1f,
-0x68, 0x50, 0x23, 0xaf, 0x65, 0x81, 0xb4, 0xfe,
-0x34, 0xa5, 0x5d, 0xe8, 0x23, 0x79, 0x84, 0x1a,
-0x07, 0x9f, 0xb0, 0x1a, 0x0b, 0x44, 0xdd, 0x63,
-0xda, 0x01, 0xbd, 0x8a, 0x80, 0xe5, 0x98, 0x78,
-0x1e, 0xa8, 0xab, 0xa0, 0xbd, 0xfe, 0xbd, 0x78,
-0x87, 0x48, 0xe4, 0xd4, 0x97, 0x2e, 0xdd, 0xfa,
-0x79, 0x8f, 0xff, 0xef, 0x89, 0x7f, 0x82, 0x8a,
-0xa5, 0xe5, 0x7c, 0x47, 0xf0, 0x16, 0x57, 0xbc,
-0x79, 0xa4, 0xd8, 0x4a, 0x64, 0x44, 0x65, 0x3d,
-0xfd, 0xbe, 0xa7, 0xe1, 0xc5, 0xe8, 0x5b, 0xd0,
-0x98, 0x70, 0xbd, 0xdd, 0xfc, 0xa2, 0x66, 0x35,
-0x5e, 0x48, 0x76, 0x4e, 0xc0, 0x87, 0x82, 0x06,
-0x07, 0xcb, 0x17, 0x50, 0xff, 0xe0, 0xfa, 0x84,
-0xb2, 0xf2, 0x5f, 0x1d, 0xd4, 0x7d, 0xbd, 0x15,
-0x8d, 0x54, 0xd2, 0x8a, 0xbf, 0xf9, 0xe2, 0x72,
-0xb9, 0xf6, 0x3a, 0x02, 0xa1, 0x07, 0x7b, 0x2d,
-0x7e, 0x42, 0xef, 0x60, 0x36, 0xff, 0x59, 0xa9,
-0xe2, 0x75, 0xac, 0x8a, 0x8a, 0x4c, 0xa9, 0x30,
-0xdf, 0xa3, 0xf3, 0x07, 0xe5, 0x15, 0xb0, 0xbe,
-0xfc, 0xea, 0x58, 0x81, 0x60, 0x67, 0xa0, 0x4f,
-0x58, 0xf1, 0x64, 0xff, 0x95, 0xf5, 0xef, 0x51,
-0xd5, 0x8b, 0x9f, 0x49, 0x3c, 0x84, 0x30, 0xd8,
-0xc9, 0xf8, 0x92, 0xcd, 0x87, 0xbc, 0x31, 0x87,
-0x92, 0x9b, 0xa0, 0x08, 0xaa, 0xae, 0x6a, 0x4d,
-0x99, 0xfe, 0xcf, 0xf7, 0x48, 0x6e, 0xb4, 0xfe,
-0x95, 0xcb, 0xd5, 0xbf, 0x62, 0xc7, 0xa5, 0x27,
-0xe3, 0xdb, 0xde, 0xe6, 0x13, 0xec, 0x56, 0x63,
-0x8d, 0x98, 0x77, 0x8f, 0xe3, 0xdb, 0x9e, 0x5f,
-0x89, 0x7d, 0x11, 0x04, 0x06, 0x7f, 0xc3, 0x1a,
-0xec, 0xfc, 0x1f, 0xfd, 0x63, 0xf0, 0xbd, 0xea,
-0xaa, 0x08, 0x0f, 0x85, 0xe2, 0x3d, 0x7e, 0x8a,
-0xa6, 0x72, 0xe3, 0x38, 0xd4, 0x89, 0x02, 0xc7,
-0xa7, 0x0e, 0x47, 0xcf, 0x82, 0xbf, 0x05, 0xf7,
-0x8f, 0x3d, 0xfe, 0x13, 0x9b, 0xea, 0x7f, 0x58,
-0x34, 0xee, 0x7c, 0x8b, 0x68, 0x3f, 0x51, 0x76,
-0xae, 0x95, 0x2a, 0x9a, 0x37, 0x9d, 0x9d, 0x71,
-0xce, 0xf8, 0x0e, 0x7c, 0x46, 0xa8, 0x89, 0xec,
-0xfe, 0x3f, 0x14, 0xbf, 0x15, 0xbe, 0x78, 0x11,
-0xc5, 0x7f, 0x10, 0x96, 0x6f, 0x55, 0x0b, 0xa8,
-0x63, 0xa7, 0x59, 0x19, 0xc7, 0xfd, 0x79, 0x58,
-0x58, 0xf1, 0x9f, 0x4c, 0xfc, 0x36, 0x51, 0x28,
-0x28, 0x9e, 0x6c, 0x70, 0x9a, 0x72, 0x44, 0xdd,
-0x30, 0xb8, 0x9e, 0xe2, 0x3f, 0x23, 0xec, 0xd1,
-0x05, 0xc2, 0xd3, 0x79, 0x46, 0x77, 0x52, 0xbe,
-0x37, 0x5d, 0xff, 0x95, 0xe2, 0xff, 0xf8, 0xac,
-0x68, 0x8f, 0xb4, 0xaf, 0x43, 0x4a, 0xe6, 0xad,
-0x76, 0x7f, 0x51, 0x59, 0xdb, 0xe1, 0x4b, 0xb6,
-0xd5, 0x95, 0xcc, 0x26, 0xfe, 0xf3, 0xdb, 0xaa,
-0xbd, 0xff, 0x73, 0x6b, 0xb1, 0x09, 0x5b, 0x29,
-0xde, 0x98, 0x8b, 0xaf, 0x14, 0x9f, 0xa3, 0xf3,
-0x3c, 0xc6, 0x0c, 0x21, 0xd0, 0xdb, 0xe4, 0xac,
-0x09, 0x1d, 0x5c, 0xca, 0xbf, 0x0b, 0xb6, 0x2c,
-0x1d, 0x3f, 0x21, 0xfe, 0xf3, 0x0f, 0x68, 0x93,
-0x10, 0xbe, 0xbd, 0x80, 0xd6, 0x1c, 0xd1, 0xe9,
-0x0a, 0xb4, 0x52, 0x41, 0x51, 0xb0, 0x5d, 0x26,
-0x57, 0x3a, 0x40, 0x1d, 0x81, 0xea, 0xd2, 0xfb,
-0x81, 0xe2, 0x3f, 0x63, 0x53, 0xf1, 0x55, 0xb4,
-0x46, 0x2f, 0x40, 0xc1, 0xe0, 0x8c, 0xb8, 0x63,
-0xc4, 0xb8, 0xd9, 0xe2, 0x3f, 0x4f, 0xb7, 0x9e,
-0xc8, 0xf0, 0x7f, 0x22, 0xda, 0xab, 0xe2, 0x10,
-0xd4, 0x18, 0x1b, 0x4a, 0xe4, 0xb9, 0x1d, 0x87,
-0x20, 0xb8, 0x02, 0xad, 0xf9, 0x13, 0x70, 0x3e,
-0x86, 0xf6, 0xb1, 0x58, 0x56, 0xf8, 0x21, 0xd4,
-0xe7, 0xb8, 0x3e, 0x19, 0xfb, 0x22, 0xe0, 0x2b,
-0x64, 0x6d, 0xdb, 0x23, 0x5b, 0xaf, 0xb9, 0x15,
-0x9e, 0x1a, 0xaf, 0x0a, 0xf1, 0xc7, 0xa9, 0x10,
-0x3b, 0x56, 0x1b, 0xca, 0xdf, 0x2a, 0x2f, 0x27,
-0x44, 0x44, 0xfc, 0xe7, 0x98, 0x6d, 0xfe, 0x45,
-0x39, 0x8d, 0xbd, 0x68, 0xe2, 0xbf, 0x68, 0xb2,
-0xfa, 0xd5, 0x58, 0x81, 0x20, 0x4e, 0x89, 0x1b,
-0x22, 0xae, 0x18, 0x1b, 0x2d, 0xbe, 0x0a, 0xcb,
-0x4d, 0xd7, 0x8f, 0x70, 0x65, 0x0b, 0x82, 0x9c,
-0x79, 0x34, 0xe4, 0xa2, 0x66, 0xdb, 0x13, 0x29,
-0x20, 0x74, 0x62, 0xdb, 0xb3, 0xd4, 0xf6, 0xf0,
-0xde, 0xf0, 0x1d, 0xd3, 0x40, 0x28, 0xd3, 0xff,
-0xa7, 0x8f, 0xeb, 0xe1, 0x56, 0x84, 0x3d, 0xce,
-0x30, 0xd3, 0xad, 0xb6, 0x87, 0xf9, 0xdb, 0xe5,
-0x98, 0x45, 0x84, 0x4e, 0x4f, 0xc4, 0x70, 0x5d,
-0x11, 0xff, 0x91, 0xce, 0x7b, 0x6b, 0x8d, 0xeb,
-0xb5, 0xa9, 0xb2, 0x6e, 0x32, 0xf4, 0x34, 0x2f,
-0xd5, 0x1a, 0x8c, 0xcb, 0xa6, 0xe6, 0x5f, 0x64,
-0xea, 0xbf, 0xa8, 0xfe, 0xfd, 0xd0, 0x34, 0xff,
-0x99, 0xe6, 0x5f, 0xe0, 0xc6, 0xab, 0xd1, 0x5e,
-0x2b, 0x4f, 0xe1, 0x1f, 0xab, 0x35, 0x22, 0xc5,
-0x7f, 0xd2, 0xf1, 0x99, 0x3a, 0xed, 0x34, 0x58,
-0x41, 0x1e, 0xe2, 0x3f, 0xd3, 0xfc, 0x0b, 0x9a,
-0xbe, 0x6d, 0x24, 0xc0, 0x03, 0x9c, 0xe6, 0x5f,
-0x3c, 0x0d, 0x9e, 0x2e, 0xc4, 0x3f, 0xb3, 0x33,
-0xf8, 0x3c, 0x67, 0xb0, 0xad, 0x43, 0x8b, 0x99,
-0x75, 0x85, 0xd4, 0xdf, 0x0f, 0x7a, 0x5a, 0x64,
-0x14, 0x18, 0x1e, 0x21, 0x57, 0xac, 0xab, 0xd5,
-0x12, 0x8a, 0x1c, 0x6e, 0x69, 0x7a, 0xfd, 0x89,
-0xff, 0xb3, 0xce, 0xf0, 0xb4, 0x13, 0xfe, 0xe4,
-0xfb, 0xa1, 0xc2, 0x2a, 0xa3, 0x83, 0x75, 0xcc,
-0x93, 0x42, 0xa4, 0x4f, 0xa1, 0x10, 0x79, 0xc8,
-0xce, 0xff, 0xa1, 0xf8, 0x8f, 0x08, 0xb4, 0x4f,
-0xb5, 0x75, 0xaa, 0x37, 0x5c, 0xd1, 0x69, 0xfc,
-0x13, 0x9d, 0xea, 0x88, 0xa8, 0x6c, 0x2d, 0xca,
-0xcc, 0x87, 0x7d, 0x1a, 0xf7, 0xfa, 0xd9, 0x2c,
-0xda, 0xb3, 0xbb, 0x73, 0x44, 0x7b, 0x8f, 0xa7,
-0x23, 0x42, 0x41, 0x63, 0x53, 0x49, 0xd6, 0xfc,
-0x0b, 0xf2, 0x47, 0xfc, 0x34, 0xe6, 0x9b, 0x5e,
-0x93, 0x80, 0x50, 0x11, 0x51, 0x75, 0x6a, 0x60,
-0x16, 0x1e, 0x91, 0x86, 0x17, 0xf9, 0xb5, 0x25,
-0xa2, 0xc8, 0x56, 0xff, 0xae, 0x78, 0xe1, 0x8c,
-0xf4, 0x77, 0x51, 0x75, 0x94, 0x55, 0x48, 0x0f,
-0x76, 0x78, 0x62, 0x3c, 0xe9, 0xaa, 0x28, 0x7d,
-0x90, 0x7b, 0x62, 0xd7, 0x8e, 0x32, 0x07, 0x6e,
-0xec, 0xda, 0xd8, 0xc6, 0x18, 0x8b, 0xa4, 0xf3,
-0x11, 0xde, 0x35, 0x2d, 0xce, 0x1d, 0x4c, 0xdf,
-0xaa, 0x96, 0x20, 0xec, 0xe9, 0x6c, 0x53, 0x96,
-0xb7, 0x96, 0xb3, 0x16, 0xe8, 0x5c, 0x54, 0x6e,
-0xb4, 0xce, 0xf7, 0x28, 0x8b, 0x3a, 0x84, 0xbe,
-0xfc, 0x6a, 0x7f, 0x41, 0x86, 0xff, 0x5c, 0x2a,
-0xcd, 0xd2, 0x77, 0xb0, 0x79, 0x26, 0x9a, 0xf5,
-0xd9, 0x14, 0x08, 0x4a, 0x4e, 0x0f, 0x36, 0x1a,
-0xc8, 0x5b, 0xe5, 0xb8, 0x8b, 0xad, 0xe5, 0x73,
-0xfa, 0xd5, 0x55, 0x6e, 0x7b, 0xff, 0x1f, 0x9a,
-0x0f, 0x5b, 0x4a, 0xf5, 0x5f, 0x05, 0x7c, 0xad,
-0xb8, 0x81, 0xbc, 0x95, 0x2f, 0x02, 0x09, 0xad,
-0x75, 0x65, 0x34, 0x31, 0xd6, 0x7f, 0xba, 0xa0,
-0xae, 0xe8, 0x6f, 0x33, 0xf5, 0x5f, 0x9f, 0xde,
-0x05, 0xef, 0x6b, 0xa9, 0x68, 0x0f, 0xba, 0x41,
-0x56, 0xb4, 0x67, 0x4c, 0x99, 0xaa, 0x30, 0xdd,
-0x05, 0xef, 0xa4, 0x5a, 0x23, 0xb2, 0xcd, 0xd3,
-0xeb, 0x33, 0xdd, 0xff, 0xc7, 0x39, 0x21, 0xbf,
-0x09, 0xc7, 0x3a, 0x1a, 0x93, 0x4b, 0x57, 0xcb,
-0x41, 0xc4, 0x57, 0x37, 0x25, 0x5d, 0xfb, 0xa7,
-0x89, 0xd0, 0xfb, 0x1f, 0xb6, 0xc7, 0x7f, 0x52,
-0xf5, 0x5c, 0x34, 0xc6, 0x42, 0xef, 0x9c, 0x2a,
-0x44, 0xe5, 0x7f, 0xf4, 0x94, 0x26, 0x0a, 0xea,
-0xdc, 0xa7, 0xa8, 0xd5, 0xcf, 0xab, 0xa8, 0x4f,
-0x2a, 0xd2, 0xf9, 0xb5, 0x28, 0x50, 0xbd, 0x98,
-0x8f, 0x9a, 0x5a, 0xa7, 0xd3, 0x7c, 0xb3, 0x60,
-0x1f, 0x9b, 0xd7, 0xdf, 0x7d, 0x2f, 0x3b, 0xa5,
-0x59, 0x44, 0xe8, 0x00, 0xae, 0xd8, 0xf4, 0xfa,
-0x87, 0x8a, 0x87, 0x5e, 0xd9, 0xf3, 0x39, 0xbc,
-0xbe, 0x2e, 0xf7, 0x18, 0x74, 0xfa, 0x7d, 0x63,
-0x6a, 0x35, 0x2b, 0x80, 0x1d, 0x5b, 0xac, 0xb6,
-0x63, 0x47, 0x87, 0xf6, 0x74, 0xf8, 0xcc, 0xee,
-0x67, 0x2b, 0xec, 0xf1, 0x9f, 0x8d, 0x70, 0xb9,
-0xbd, 0x61, 0xc5, 0xd7, 0xea, 0x8a, 0x3e, 0x30,
-0xd0, 0x51, 0xfd, 0xc5, 0x75, 0x5b, 0xd4, 0x2a,
-0xfd, 0x00, 0xac, 0x1e, 0x75, 0x69, 0x45, 0x1f,
-0xc0, 0xc5, 0xc8, 0x77, 0xcc, 0xa5, 0xe7, 0xca,
-0x32, 0xf1, 0x9f, 0x28, 0xa2, 0x41, 0xb4, 0x47,
-0x03, 0x33, 0xe3, 0x0f, 0x0f, 0xa5, 0xc2, 0x62,
-0x35, 0xd4, 0xf6, 0x99, 0x07, 0x07, 0x1e, 0x7c,
-0xa8, 0x13, 0x81, 0x22, 0x0f, 0xbe, 0x8c, 0xd0,
-0x28, 0x13, 0xff, 0x79, 0x48, 0x7b, 0x11, 0xde,
-0x92, 0xaa, 0x8d, 0xfc, 0xf1, 0xb2, 0xfb, 0x11,
-0x16, 0x2e, 0x18, 0x5d, 0x32, 0x2e, 0xcf, 0x36,
-0x7e, 0xce, 0xaa, 0x07, 0x9d, 0xe3, 0x5f, 0x9a,
-0x25, 0xfd, 0x1c, 0xf1, 0x0f, 0x02, 0xa1, 0x4c,
-0xfc, 0xa7, 0xbf, 0xeb, 0x6b, 0x14, 0xed, 0xa1,
-0xf9, 0x56, 0x3e, 0xad, 0x3b, 0x51, 0x91, 0xe4,
-0x07, 0x99, 0x8f, 0x77, 0x27, 0x3c, 0x49, 0x6f,
-0x9f, 0x83, 0x92, 0xa2, 0x3a, 0x22, 0x10, 0xb6,
-0x2d, 0x53, 0xff, 0xa5, 0xf8, 0x5a, 0xa9, 0x3a,
-0x3b, 0x6f, 0x37, 0x5b, 0x29, 0xba, 0x35, 0x04,
-0x42, 0x54, 0xf6, 0xd5, 0x4d, 0xfc, 0xe7, 0xbe,
-0xb0, 0x4f, 0x3c, 0xa3, 0x53, 0xe0, 0xc8, 0x93,
-0xc5, 0x7f, 0x56, 0x1e, 0x06, 0x7d, 0x6a, 0xdb,
-0x68, 0x5e, 0x22, 0xbe, 0x3a, 0x2d, 0xfe, 0x73,
-0x84, 0x26, 0x62, 0x3c, 0x4c, 0x11, 0xa4, 0x40,
-0x6e, 0x46, 0xff, 0x08, 0xbe, 0x12, 0xad, 0x49,
-0xaf, 0x99, 0xbf, 0x5b, 0x5e, 0x89, 0xf8, 0xd0,
-0xca, 0xb6, 0xf8, 0x58, 0x37, 0x21, 0xa2, 0xe7,
-0x9a, 0x2b, 0xf9, 0xfb, 0x78, 0xca, 0x19, 0x2f,
-0xb3, 0xc7, 0x7f, 0x26, 0x53, 0x24, 0xe7, 0x8f,
-0xa6, 0x69, 0xcf, 0xe3, 0xd3, 0xc2, 0xc7, 0x9d,
-0x93, 0xb1, 0xa9, 0xd2, 0xb0, 0x4c, 0xfc, 0xe7,
-0xdf, 0x34, 0x8f, 0x6f, 0x96, 0x09, 0xb6, 0xbf,
-0x7f, 0xe7, 0x3c, 0x3e, 0xde, 0x85, 0x7a, 0x29,
-0x62, 0xa0, 0xa7, 0xf6, 0x3f, 0x17, 0xe0, 0xdf,
-0x77, 0xff, 0xec, 0xe7, 0x99, 0x1a, 0x8a, 0xe7,
-0x34, 0xaf, 0x14, 0xac, 0x53, 0x43, 0xff, 0xdf,
-0x9a, 0x87, 0xe8, 0x34, 0xaf, 0x14, 0xfe, 0xe5,
-0xbf, 0xff, 0x1f, 0x98, 0x87, 0x68, 0xdd, 0x76,
-0x4a, 0xa0, 0x23, 0x5a, 0xc6, 0x7f, 0x4c, 0xdd,
-0x7f, 0x08, 0x6f, 0x32, 0xcb, 0xfc, 0x9f, 0xde,
-0x3f, 0xeb, 0xf7, 0x62, 0x14, 0x84, 0xc3, 0x65,
-0xd3, 0xfe, 0xe7, 0x2b, 0x9a, 0xfd, 0xfc, 0x82,
-0x6e, 0x02, 0xa9, 0xe2, 0xb0, 0x7f, 0x79, 0xfd,
-0x6d, 0xd7, 0xa7, 0xe6, 0x21, 0x0e, 0xfd, 0xeb,
-0xcb, 0xee, 0xec, 0xff, 0xcf, 0x79, 0x88, 0xff,
-0x41, 0xe6, 0x0f, 0xfe, 0xc7, 0xbb, 0x9e, 0xad,
-0xf5, 0xff, 0x3f, 0xfa, 0x3d, 0xfe, 0xbb, 0xf5,
-0x21, 0x7e, 0x86, 0xff, 0xef, 0x9c, 0x0f, 0xfb,
-0x3f, 0xff, 0x21, 0xfe, 0x77, 0xd6, 0x3f, 0xa3,
-0x9d, 0xc4, 0xbf, 0x59, 0x1f, 0xa6, 0x8c, 0xce,
-0x94, 0xf6, 0xfb, 0xcf, 0xf9, 0xb0, 0xb6, 0xbf,
-0xff, 0xd4, 0x87, 0xff, 0x7f, 0x7e, 0xfd, 0x9a,
-0x45, 0xf2, 0x2a, 0xe3, 0x94, 0xb6, 0x10, 0xf2,
-0xfb, 0x2d, 0xe1, 0x7f, 0x14, 0xe7, 0xaf, 0x91,
-0xbf, 0xbe, 0xe8, 0x2e, 0x6d, 0x61, 0x71, 0xfe,
-0x2b, 0x33, 0xbe, 0x6e, 0xcc, 0x6a, 0xff, 0x94,
-0x92, 0x6f, 0x2e, 0x48, 0x5f, 0x3f, 0xb8, 0x24,
-0xe7, 0xeb, 0xd2, 0x5d, 0xc6, 0x5f, 0x68, 0xc6,
-0x60, 0x4a, 0x28, 0x29, 0x4e, 0x09, 0xcd, 0xda,
-0xcc, 0x41, 0x29, 0x75, 0x6a, 0xa6, 0x59, 0x98,
-0xce, 0x50, 0x75, 0x38, 0x24, 0x5d, 0xb4, 0xea,
-0x6e, 0x0e, 0xe1, 0x29, 0x41, 0x79, 0xc0, 0x12,
-0x3e, 0x45, 0x42, 0xa9, 0x68, 0x0d, 0xe1, 0x91,
-0x4c, 0x78, 0x1b, 0xb1, 0x83, 0x14, 0x82, 0x3b,
-0xe1, 0x2a, 0xf8, 0x9e, 0x20, 0x41, 0xfa, 0x82,
-0x96, 0x23, 0xa4, 0xbb, 0xe1, 0x4e, 0x76, 0x15,
-0x0a, 0x39, 0xa1, 0x8e, 0x3b, 0xe1, 0x0b, 0x90,
-0x63, 0xbb, 0x7e, 0xf0, 0xce, 0x9c, 0x5a, 0xe9,
-0x36, 0xf1, 0xf9, 0x45, 0x0a, 0xcf, 0xb9, 0x57,
-0xba, 0x4b, 0xfc, 0x85, 0x3e, 0xf3, 0x70, 0xce,
-0xbd, 0x1d, 0x28, 0x78, 0x67, 0x26, 0xa6, 0x8f,
-0x98, 0x0b, 0xd2, 0xcf, 0xb3, 0xe6, 0xb3, 0x86,
-0xae, 0x95, 0x28, 0x2c, 0x07, 0x3f, 0xd6, 0x10,
-0x94, 0x40, 0x2e, 0x48, 0xe2, 0x4f, 0x85, 0xcc,
-0xfb, 0xbe, 0x62, 0x28, 0xf7, 0x48, 0x5c, 0xdc,
-0xaa, 0xc3, 0x06, 0xc5, 0x23, 0x71, 0xb3, 0x49,
-0xd7, 0x22, 0x4a, 0x29, 0x1e, 0x69, 0xf2, 0x6b,
-0x61, 0x45, 0x97, 0xa8, 0x1b, 0xbe, 0x66, 0xbf,
-0xbe, 0x29, 0x67, 0x59, 0xc7, 0x1d, 0xb1, 0x3f,
-0xf7, 0x2a, 0x8e, 0x9c, 0xa6, 0x8e, 0xf6, 0x78,
-0xb1, 0x77, 0xa6, 0x23, 0xc7, 0xe8, 0x68, 0x8f,
-0xdd, 0xe1, 0x9d, 0x99, 0x2b, 0x19, 0xa2, 0x5d,
-0x2f, 0x6e, 0x98, 0x09, 0x99, 0xe7, 0x11, 0xc5,
-0xd2, 0x0c, 0xf8, 0x73, 0x73, 0x66, 0xbb, 0x32,
-0x4b, 0xfa, 0x0b, 0x14, 0x0a, 0x57, 0xe5, 0xdc,
-0x25, 0x7d, 0x1e, 0xee, 0x30, 0x67, 0xd6, 0xe5,
-0x7c, 0x51, 0x92, 0x2d, 0x41, 0x49, 0x87, 0x7f,
-0xf0, 0x7a, 0x5d, 0x10, 0xf7, 0x47, 0x11, 0xa8,
-0xfc, 0x50, 0xf3, 0x85, 0x24, 0x52, 0x81, 0xcd,
-0x02, 0x75, 0xa1, 0x26, 0x29, 0xa8, 0x1a, 0x34,
-0xea, 0x95, 0xb5, 0x28, 0x73, 0xfd, 0x2b, 0x2b,
-0x18, 0x31, 0x1d, 0x74, 0x41, 0x49, 0x33, 0x14,
-0x4a, 0x05, 0xd7, 0xa7, 0x8e, 0x70, 0x3d, 0x77,
-0x4a, 0x58, 0x94, 0x79, 0x9e, 0x57, 0xda, 0xa5,
-0x72, 0xe9, 0xbf, 0xc0, 0x17, 0x0c, 0x25, 0x9a,
-0xb3, 0x1c, 0x85, 0xab, 0x8c, 0x99, 0xd1, 0x9c,
-0x90, 0x74, 0x12, 0x97, 0x1d, 0x05, 0x1d, 0x85,
-0x6f, 0xc2, 0xcc, 0xac, 0xf5, 0x91, 0x69, 0x82,
-0xd6, 0x55, 0xf8, 0x44, 0x96, 0xf0, 0x4d, 0xc8,
-0x17, 0x45, 0xf7, 0xa0, 0xb0, 0x10, 0xf2, 0xc4,
-0x8c, 0x7b, 0xe0, 0x4e, 0x71, 0x15, 0x1e, 0xb1,
-0xaf, 0x8f, 0xe2, 0xef, 0x70, 0xea, 0x32, 0xe7,
-0x61, 0x4b, 0x68, 0xe6, 0xda, 0x80, 0xe2, 0x17,
-0x4e, 0xfd, 0x56, 0x14, 0xd8, 0xd4, 0x11, 0xdb,
-0xfe, 0x11, 0x90, 0x4a, 0x81, 0x90, 0x34, 0x25,
-0x98, 0x56, 0x75, 0x16, 0xa3, 0x64, 0xa3, 0x5f,
-0x99, 0x3a, 0x92, 0x59, 0x1f, 0x26, 0xf9, 0xc5,
-0x12, 0xbd, 0x88, 0x2b, 0x61, 0x12, 0x4a, 0x51,
-0x18, 0x90, 0xfc, 0xfd, 0xd6, 0x91, 0x23, 0x24,
-0xf8, 0x3f, 0xcf, 0x15, 0xd3, 0xb6, 0x3e, 0x4d,
-0xb4, 0xa9, 0xf4, 0x2f, 0x80, 0x12, 0xb6, 0x84,
-0xab, 0xf8, 0x4c, 0x14, 0xfa, 0xf1, 0x08, 0x9f,
-0xd9, 0x99, 0xa3, 0xf7, 0xdf, 0xe9, 0x47, 0x41,
-0x64, 0x9e, 0xe7, 0x95, 0x26, 0x6b, 0xe5, 0xd2,
-0x4b, 0x38, 0x25, 0x38, 0x33, 0x82, 0xcc, 0xc1,
-0xfe, 0xbe, 0xcb, 0x94, 0x50, 0x47, 0x89, 0x7e,
-0x6b, 0x2b, 0x6c, 0x46, 0xe1, 0xd3, 0xb8, 0xe4,
-0x85, 0x61, 0x65, 0x39, 0xbe, 0xe6, 0xad, 0xad,
-0x85, 0x9b, 0x15, 0x9d, 0xde, 0xb7, 0xb5, 0x50,
-0x14, 0x66, 0xae, 0x0f, 0xe5, 0xdc, 0x29, 0x5d,
-0x05, 0x7f, 0x2e, 0x14, 0x1d, 0x05, 0x5c, 0x74,
-0x31, 0x13, 0x8f, 0xc0, 0xad, 0x78, 0x64, 0x66,
-0x48, 0xe2, 0x28, 0x14, 0x8a, 0x99, 0x86, 0x6d,
-0xff, 0xe4, 0x4a, 0x9f, 0x13, 0x77, 0x85, 0x3e,
-0xb5, 0x55, 0xca, 0x95, 0x16, 0x89, 0xf6, 0xd0,
-0x1d, 0x25, 0x39, 0x29, 0xa1, 0xd8, 0x26, 0xa0,
-0x59, 0x4a, 0x5f, 0xef, 0xb6, 0xcc, 0x88, 0xd1,
-0x0a, 0x6e, 0x09, 0xc4, 0x22, 0x5d, 0xe3, 0x0a,
-0x93, 0x14, 0x81, 0x1f, 0x45, 0xab, 0xe2, 0x2e,
-0x84, 0x94, 0x60, 0x4b, 0xcf, 0xbe, 0x72, 0x2b,
-0x2b, 0x14, 0x5d, 0xa1, 0xbb, 0x4b, 0x4a, 0x6e,
-0x95, 0x3f, 0x27, 0x4e, 0x84, 0x6e, 0x28, 0xc9,
-0x27, 0xe1, 0x0e, 0x4b, 0x98, 0x91, 0x3a, 0xe2,
-0xb4, 0x3d, 0xcf, 0x2b, 0xb7, 0x4a, 0x5f, 0xef,
-0xb8, 0x2b, 0xf4, 0x17, 0xda, 0xb5, 0xaf, 0xe6,
-0x90, 0xf0, 0xa9, 0x92, 0x99, 0x96, 0x80, 0x8a,
-0xc2, 0x12, 0x4e, 0x85, 0xfe, 0x47, 0xc9, 0x4c,
-0xdb, 0xfb, 0xde, 0x72, 0xab, 0xfc, 0x75, 0xf1,
-0x78, 0x68, 0x61, 0x49, 0xce, 0xab, 0x28, 0x9c,
-0x0a, 0xfd, 0x45, 0x49, 0x3e, 0x09, 0x77, 0xe1,
-0x91, 0xfc, 0x57, 0xa5, 0xbb, 0xe9, 0xd5, 0x4a,
-0xf2, 0x4d, 0xfb, 0xf5, 0xd6, 0x6d, 0xff, 0xe2,
-0x4e, 0xc9, 0xba, 0xed, 0xdd, 0x53, 0xf7, 0x57,
-0x42, 0x74, 0x7f, 0x69, 0x41, 0x87, 0x33, 0xd4,
-0x5c, 0x52, 0x6c, 0xdb, 0x3f, 0xc0, 0xa6, 0xd5,
-0x4e, 0x4a, 0xff, 0x2c, 0x4b, 0x09, 0x77, 0x59,
-0x47, 0x72, 0x48, 0xf8, 0x14, 0xcf, 0x11, 0x99,
-0xfd, 0x03, 0xb9, 0xf8, 0x1f, 0xbd, 0x33, 0x74,
-0x55, 0x49, 0xf1, 0x03, 0x53, 0x42, 0x0e, 0x0a,
-0x1d, 0x36, 0xe1, 0x0b, 0x25, 0xf6, 0xeb, 0x6f,
-0x31, 0xe6, 0xf8, 0xa5, 0x25, 0xf0, 0x79, 0xdc,
-0xff, 0x39, 0xab, 0xa4, 0xbb, 0xe0, 0x53, 0x30,
-0xd3, 0xb4, 0x84, 0xbf, 0x40, 0x41, 0xf2, 0x4f,
-0x09, 0x99, 0xe7, 0xb9, 0xa5, 0x89, 0x72, 0xff,
-0x5e, 0x56, 0x80, 0xbb, 0x25, 0x24, 0x4a, 0x70,
-0x3f, 0x48, 0x19, 0x41, 0xd1, 0x53, 0x82, 0x7d,
-0x7d, 0xda, 0xba, 0x42, 0xdb, 0x70, 0xff, 0x38,
-0x00, 0xcf, 0x76, 0xd0, 0x7e, 0xd3, 0x52, 0x42,
-0x13, 0x09, 0xa1, 0x94, 0x60, 0xbf, 0x7e, 0x51,
-0x4e, 0xbb, 0x74, 0x87, 0xfb, 0xcf, 0xa1, 0x8b,
-0x29, 0xa8, 0x76, 0xf4, 0x62, 0x3e, 0x93, 0xe5,
-0x18, 0xe2, 0x73, 0xfa, 0x1d, 0x7c, 0xa6, 0x9c,
-0xd3, 0x2e, 0xac, 0x23, 0x60, 0x5b, 0x1f, 0x55,
-0x6a, 0x4f, 0xdc, 0xe1, 0x9f, 0xc9, 0x95, 0x66,
-0xa9, 0xdd, 0xbc, 0x43, 0xff, 0x73, 0x67, 0x8e,
-0x25, 0xf8, 0x67, 0x3a, 0x73, 0x9a, 0x52, 0x02,
-0xcf, 0x31, 0x6c, 0xeb, 0x03, 0x86, 0xa1, 0x69,
-0x8a, 0x22, 0x69, 0x1c, 0x9a, 0x50, 0xdb, 0x90,
-0x0a, 0x9c, 0x16, 0x20, 0x23, 0x64, 0x9e, 0xa7,
-0x99, 0x31, 0x21, 0x62, 0x7a, 0xeb, 0xd6, 0x54,
-0xc7, 0x0e, 0xe0, 0x9c, 0x84, 0x0e, 0x2f, 0x75,
-0xe0, 0x26, 0x4a, 0x96, 0x8e, 0x82, 0xed, 0x79,
-0x6e, 0x31, 0xa4, 0x90, 0x84, 0xfb, 0x5d, 0x9e,
-0x89, 0xda, 0x5e, 0x22, 0x6d, 0x6f, 0x09, 0x27,
-0x15, 0xda, 0xf8, 0x96, 0x22, 0x22, 0xfd, 0x63,
-0xfb, 0x5e, 0x0c, 0xcb, 0x5e, 0xd4, 0xca, 0x1b,
-0x85, 0x4c, 0xfa, 0x87, 0x46, 0xe9, 0xa2, 0x70,
-0x97, 0xf2, 0x4d, 0xab, 0x83, 0x02, 0xd0, 0x2f,
-0x92, 0x6f, 0xff, 0x7d, 0x25, 0x4b, 0x8d, 0x34,
-0x43, 0x44, 0x28, 0x7e, 0x89, 0xb4, 0x87, 0x66,
-0xa2, 0x50, 0xc2, 0x9a, 0x51, 0x00, 0x5d, 0x2a,
-0xc1, 0x2f, 0x0c, 0x85, 0xcc, 0x9f, 0x92, 0x52,
-0x3b, 0x06, 0xda, 0x8b, 0x05, 0xe0, 0x24, 0x12,
-0xc3, 0x09, 0xa8, 0x81, 0x3c, 0x3a, 0x72, 0xc2,
-0xb0, 0xd8, 0x06, 0x59, 0xfa, 0x07, 0x72, 0xa4,
-0x05, 0xc6, 0x92, 0xf6, 0xa2, 0x68, 0xd7, 0xcf,
-0x49, 0x08, 0xc9, 0xb3, 0x94, 0x57, 0xa4, 0x05,
-0x8b, 0x6e, 0x6f, 0x2f, 0x2a, 0x56, 0x06, 0xa5,
-0xd2, 0x45, 0x4b, 0xda, 0x3f, 0xaf, 0x29, 0xf6,
-0xeb, 0xaf, 0xcf, 0x59, 0xd1, 0xff, 0x97, 0xfe,
-0x2f, 0x44, 0x94, 0x6d, 0x29, 0xe1, 0xf1, 0x99,
-0x3b, 0x48, 0xd0, 0xaf, 0xda, 0x30, 0x73, 0x87,
-0x64, 0x1d, 0xd9, 0x30, 0xd3, 0xfe, 0xfc, 0x40,
-0xb1, 0x60, 0xc1, 0x8c, 0x69, 0x78, 0x6b, 0xc0,
-0x16, 0xea, 0x7e, 0x02, 0xcd, 0x06, 0x7c, 0x4f,
-0x99, 0x7a, 0x9e, 0xac, 0xeb, 0x97, 0x87, 0x0a,
-0x4b, 0x94, 0x5b, 0x25, 0x88, 0xa0, 0x21, 0x2b,
-0x41, 0x43, 0x56, 0x88, 0x42, 0x61, 0x49, 0x57,
-0x73, 0x69, 0xa1, 0x68, 0x21, 0xe1, 0x56, 0x14,
-0xec, 0xef, 0xdb, 0xd2, 0x5e, 0x78, 0x87, 0xf2,
-0xe7, 0x68, 0x4c, 0x72, 0xda, 0x3f, 0x47, 0xc2,
-0xcc, 0x45, 0xb7, 0xb4, 0xc3, 0x1d, 0xca, 0xe7,
-0x60, 0xa6, 0x71, 0x4b, 0xbb, 0x76, 0x87, 0x32,
-0x53, 0x9a, 0x69, 0xdf, 0x0f, 0xbc, 0x94, 0x71,
-0x23, 0xac, 0xe9, 0x5d, 0xbc, 0xb4, 0x89, 0xb7,
-0x87, 0x53, 0xfb, 0xc1, 0xab, 0x85, 0x8b, 0xf5,
-0x1c, 0x7e, 0xf7, 0xb2, 0x92, 0x76, 0x14, 0x3a,
-0xec, 0x8f, 0x43, 0xe1, 0x69, 0x88, 0x69, 0x68,
-0x1f, 0x25, 0x26, 0x8c, 0x6c, 0x01, 0x50, 0xd8,
-0x8e, 0x82, 0xfd, 0x7a, 0x67, 0x6e, 0x91, 0xd4,
-0x65, 0xce, 0xf1, 0x97, 0x38, 0xe5, 0x22, 0x38,
-0x61, 0xce, 0xf4, 0xe7, 0x2f, 0x91, 0x3f, 0x8f,
-0xc2, 0x0d, 0x28, 0xe4, 0x16, 0xa5, 0x04, 0xfb,
-0xf3, 0xe4, 0xe5, 0xdc, 0xbb, 0xe8, 0xae, 0x28,
-0x1a, 0xfd, 0x84, 0x74, 0x8f, 0x74, 0x57, 0x98,
-0x04, 0x84, 0x01, 0xa7, 0x08, 0x06, 0x24, 0x6e,
-0x21, 0xe1, 0x7f, 0x78, 0x66, 0xda, 0xd7, 0xff,
-0x9a, 0xb6, 0xa6, 0x5f, 0x45, 0x9f, 0xdd, 0x59,
-0x99, 0xa7, 0x92, 0xb0, 0x77, 0x67, 0xe5, 0x67,
-0xd5, 0x65, 0x6d, 0xc3, 0x9b, 0x9f, 0x2d, 0xff,
-0x49, 0x9e, 0xda, 0xd4, 0x76, 0x82, 0x84, 0x79,
-0xf6, 0xe7, 0xb9, 0xe9, 0xbb, 0xb7, 0x5f, 0xfe,
-0xe5, 0x4b, 0xe7, 0x3e, 0x38, 0x6f, 0x09, 0xfb,
-0xce, 0xfd, 0xee, 0xfc, 0x4d, 0x97, 0x96, 0xbe,
-0xf5, 0xf0, 0xe5, 0x91, 0x4f, 0xce, 0xdf, 0xf4,
-0x9d, 0xa5, 0x97, 0x49, 0xf8, 0x04, 0xfe, 0x37,
-0xfe, 0x82, 0x8f, 0xe6, 0xcd, 0x6d, 0xfa, 0x6c,
-0x74, 0xf3, 0xf2, 0xc6, 0xf3, 0xae, 0x1f, 0x37,
-0x5f, 0x8e, 0x5e, 0xf8, 0x87, 0xe0, 0xff, 0xf9,
-0xd9, 0xef, 0x1e, 0xff, 0x6c, 0xf4, 0x91, 0x4f,
-0x1a, 0x2f, 0x7f, 0xf6, 0xfa, 0xe3, 0x9f, 0x3d,
-0xf7, 0xc8, 0x88, 0xfd, 0xfa, 0xc6, 0xef, 0xdc,
-0xfe, 0xd6, 0xc3, 0xfb, 0x46, 0x3e, 0x38, 0xdf,
-0x38, 0xf5, 0x18, 0x9f, 0x34, 0x5a, 0x0f, 0x36,
-0xf2, 0x3b, 0xbc, 0xfe, 0xf6, 0xb7, 0xac, 0x27,
-0xb4, 0x5f, 0x5f, 0x36, 0xbb, 0xf5, 0xad, 0xcd,
-0x0b, 0x47, 0x36, 0xdc, 0x7d, 0x13, 0xfd, 0xc3,
-0xdd, 0xf8, 0x0f, 0x51, 0x78, 0xb3, 0x68, 0x5f,
-0xd7, 0x07, 0xe7, 0xcb, 0x4a, 0x2c, 0x61, 0xec,
-0x5b, 0x59, 0x0f, 0x14, 0x5e, 0x65, 0x3c, 0xae,
-0x5d, 0x5f, 0xb2, 0xce, 0x2c, 0x43, 0x01, 0xae,
-0x57, 0xf2, 0xfa, 0xe1, 0xeb, 0x78, 0xe4, 0xbf,
-0xcd, 0xca, 0xfb, 0x39, 0x43, 0xa1, 0xfd, 0x7a,
-0x45, 0xb2, 0xaf, 0xa7, 0x32, 0x85, 0x0f, 0x61,
-0x30, 0x67, 0x81, 0x25, 0xfc, 0xf9, 0x14, 0x50,
-0x44, 0x7c, 0x98, 0x32, 0x04, 0x5a, 0x8e, 0xfd,
-0xfa, 0x29, 0xfd, 0x5c, 0x82, 0xf8, 0x30, 0x34,
-0xad, 0xa8, 0x4b, 0xad, 0x23, 0xca, 0x7a, 0x3a,
-0x85, 0xf8, 0xb0, 0x58, 0x64, 0x3d, 0x50, 0x0a,
-0xa4, 0x75, 0x64, 0xd0, 0x9a, 0x42, 0xc2, 0xad,
-0x20, 0x6d, 0x80, 0xbb, 0xad, 0x23, 0x59, 0xfb,
-0x39, 0xaf, 0xe5, 0xde, 0x3c, 0x67, 0xb8, 0x59,
-0x16, 0x91, 0xe5, 0x01, 0x69, 0x56, 0xd7, 0x9f,
-0xe9, 0x85, 0x09, 0xe5, 0x5e, 0x69, 0x96, 0x98,
-0xa1, 0x17, 0x9a, 0x96, 0x80, 0x47, 0xcc, 0xec,
-0xfb, 0x6b, 0xbc, 0x98, 0x49, 0xd0, 0x81, 0xa8,
-0xab, 0x44, 0xfb, 0x13, 0x7c, 0xa8, 0x5b, 0x42,
-0xe6, 0x8f, 0x23, 0x2c, 0xc4, 0xcf, 0xca, 0x40,
-0x7c, 0x48, 0x40, 0x11, 0xd1, 0x60, 0x54, 0xb9,
-0xbe, 0x03, 0xbf, 0xd0, 0x90, 0xb6, 0x55, 0x99,
-0x2b, 0xe5, 0x89, 0xa6, 0xf6, 0x2c, 0x1f, 0xed,
-0x33, 0x4a, 0x5b, 0xc7, 0x55, 0xf1, 0x5b, 0x84,
-0x56, 0xa1, 0xfc, 0x65, 0x87, 0x3b, 0xd6, 0xd2,
-0x53, 0xe8, 0x81, 0x36, 0x14, 0x94, 0xbe, 0xc2,
-0xb9, 0x0a, 0x09, 0x2d, 0x11, 0x9b, 0xfe, 0xe4,
-0x66, 0x1e, 0x14, 0x41, 0xb1, 0x99, 0x43, 0xb4,
-0x72, 0x19, 0x05, 0x48, 0x59, 0x1b, 0x3c, 0x52,
-0x27, 0xdd, 0x9e, 0x12, 0xfc, 0x92, 0x91, 0xf9,
-0x07, 0xe8, 0xaa, 0xfe, 0x5f, 0xed, 0x9d, 0x41,
-0x6c, 0xdb, 0x54, 0x18, 0xc7, 0xbf, 0x97, 0xbc,
-0x66, 0x0e, 0x4a, 0x2b, 0x7b, 0xca, 0x84, 0x03,
-0x55, 0x95, 0x8c, 0x52, 0x76, 0x74, 0x24, 0x2a,
-0x15, 0x71, 0xd8, 0x4b, 0x53, 0x27, 0x61, 0x52,
-0xc1, 0x50, 0x40, 0x13, 0x27, 0x17, 0xf5, 0x30,
-0x26, 0x21, 0xa5, 0x08, 0xa4, 0x9d, 0x90, 0x53,
-0x02, 0x2a, 0x1c, 0x50, 0x56, 0x81, 0x68, 0x6f,
-0x39, 0x4c, 0x70, 0xe2, 0xc8, 0x3d, 0x2b, 0x62,
-0x62, 0xb7, 0x1d, 0xa2, 0x71, 0xa4, 0x93, 0xb8,
-0x70, 0x47, 0x42, 0x1c, 0xc6, 0xf8, 0x3e, 0x3f,
-0xc7, 0x7e, 0xcd, 0xa6, 0x48, 0xdb, 0x01, 0x24,
-0xf4, 0xfd, 0x4f, 0x7f, 0x3d, 0xbf, 0xba, 0xcf,
-0xf6, 0xf3, 0xdf, 0xbf, 0xcf, 0x96, 0x1d, 0x9b,
-0x2a, 0xe3, 0x00, 0xe8, 0xa3, 0xd0, 0x54, 0x89,
-0x62, 0xa4, 0xf9, 0xc4, 0x87, 0x81, 0x28, 0xc3,
-0x06, 0x38, 0x20, 0xaf, 0x89, 0xf4, 0xf6, 0x39,
-0xae, 0x5f, 0x57, 0xca, 0xd5, 0xaa, 0xae, 0x54,
-0xed, 0xb8, 0xc0, 0x94, 0x16, 0x21, 0xc2, 0xbe,
-0x7d, 0x5e, 0x5a, 0xbd, 0xf8, 0xe1, 0xbe, 0xd9,
-0x5f, 0x86, 0x3a, 0x24, 0xa3, 0x38, 0x2d, 0xd7,
-0x71, 0x6f, 0x17, 0x74, 0x8b, 0x13, 0x25, 0x8b,
-0xea, 0x51, 0xda, 0xdf, 0x16, 0x2a, 0x1f, 0xc2,
-0x21, 0xac, 0x54, 0x69, 0x8f, 0xe0, 0x6e, 0x5c,
-0x81, 0xe2, 0x3e, 0xec, 0x50, 0x8b, 0x2a, 0xd2,
-0x37, 0x84, 0x8e, 0x70, 0x11, 0x5e, 0x01, 0x27,
-0x52, 0xfe, 0xba, 0xec, 0x12, 0x14, 0x5d, 0xc1,
-0xeb, 0x1d, 0x61, 0xa1, 0xe6, 0xc3, 0xcf, 0xc9,
-0x0c, 0x8e, 0x97, 0x35, 0x1f, 0x0e, 0x46, 0xe9,
-0xf3, 0x74, 0xda, 0xf2, 0xea, 0x34, 0x1f, 0xaa,
-0x87, 0x4c, 0x5a, 0x91, 0x2b, 0xdc, 0x4a, 0x4f,
-0x43, 0xda, 0xde, 0xc4, 0xfc, 0x28, 0x13, 0x73,
-0xac, 0x5b, 0x4a, 0xf6, 0x28, 0x7d, 0x7e, 0xa4,
-0x7c, 0xa5, 0xf9, 0x8d, 0x1e, 0x05, 0xa0, 0x81,
-0x96, 0xe5, 0x7c, 0x42, 0x9b, 0x59, 0xd5, 0xdb,
-0x4b, 0x8b, 0xa4, 0x93, 0xf1, 0xa1, 0x12, 0x8f,
-0xe2, 0x43, 0x6f, 0xaa, 0x25, 0x1b, 0x4f, 0x20,
-0xd6, 0xf5, 0x4a, 0x70, 0x69, 0x62, 0x1c, 0x02,
-0xe3, 0xc4, 0xe8, 0x16, 0x7b, 0x94, 0xce, 0x08,
-0x1a, 0x0f, 0x1d, 0x48, 0x1f, 0x92, 0x23, 0xea,
-0x83, 0x83, 0x65, 0x40, 0x62, 0x92, 0x16, 0x58,
-0x4f, 0xc7, 0xd3, 0xc1, 0x69, 0xd0, 0x88, 0xca,
-0xe1, 0x9c, 0x2b, 0x0a, 0xb0, 0x1b, 0xd9, 0xa1,
-0x24, 0xd3, 0x98, 0x32, 0x20, 0xd2, 0xf7, 0x49,
-0xf1, 0x7c, 0x04, 0xfd, 0x82, 0x01, 0xdd, 0xc8,
-0x55, 0x31, 0x1f, 0x6a, 0x2c, 0x24, 0x50, 0x4c,
-0x4c, 0x36, 0xdd, 0x94, 0xff, 0x36, 0xd2, 0x60,
-0x3f, 0xac, 0xe1, 0x95, 0x1a, 0x41, 0xf1, 0xad,
-0x09, 0x1f, 0x8e, 0x4f, 0x19, 0x95, 0x5d, 0xdf,
-0x45, 0x4b, 0xee, 0xf6, 0x16, 0xc3, 0xb6, 0xed,
-0xdc, 0xd2, 0xc6, 0x75, 0x6e, 0x15, 0x3e, 0x12,
-0x68, 0x02, 0x67, 0x2c, 0x77, 0xc5, 0xa2, 0x6a,
-0x5f, 0xae, 0x8c, 0xb2, 0xf5, 0x8b, 0x16, 0x10,
-0x1f, 0x9e, 0x41, 0x1a, 0xcc, 0x91, 0x79, 0xc1,
-0x2d, 0x66, 0x26, 0xbf, 0x1d, 0x1b, 0x23, 0x4f,
-0x02, 0x5f, 0xf3, 0xe7, 0xd3, 0xae, 0xc8, 0xf8,
-0x13, 0x56, 0x63, 0x62, 0x3c, 0x77, 0x17, 0xf9,
-0x90, 0x8c, 0x73, 0x9c, 0x1d, 0x2f, 0xc4, 0xe0,
-0x38, 0x7f, 0x3a, 0xf2, 0x00, 0xcd, 0x2b, 0x3a,
-0x7f, 0x3e, 0xcc, 0x5a, 0x62, 0x63, 0x8c, 0x07,
-0x27, 0xf0, 0x76, 0xe4, 0x86, 0x85, 0x43, 0xf8,
-0x16, 0xcd, 0x33, 0x61, 0xc1, 0x15, 0x9f, 0xc9,
-0xb8, 0x05, 0x8d, 0x5e, 0xe4, 0x9a, 0xf9, 0xe3,
-0x87, 0x73, 0x17, 0x6a, 0x0b, 0x58, 0xa1, 0xc1,
-0xb0, 0xbf, 0x26, 0x96, 0xd0, 0x38, 0x27, 0x78,
-0x06, 0x2e, 0x41, 0x1b, 0x4d, 0x3f, 0x31, 0x23,
-0x63, 0xfe, 0xbc, 0x81, 0x34, 0x18, 0xff, 0xba,
-0xd8, 0x01, 0x96, 0x7a, 0x15, 0x2f, 0x87, 0x58,
-0x18, 0xed, 0x10, 0x16, 0x76, 0xc4, 0x81, 0x06,
-0xc5, 0x8e, 0x91, 0x3f, 0x38, 0xdf, 0x90, 0x06,
-0x63, 0x3e, 0xfc, 0xa2, 0x8f, 0x34, 0x38, 0x6c,
-0x9d, 0xe2, 0xc3, 0xc4, 0x18, 0xfd, 0xf1, 0xfc,
-0x52, 0x8d, 0xf2, 0x59, 0x1f, 0x06, 0x38, 0x7f,
-0x7a, 0x76, 0xd5, 0xb7, 0x1c, 0x3c, 0xd5, 0xe3,
-0xdf, 0xd1, 0xc1, 0x68, 0xd0, 0x46, 0x80, 0xb1,
-0x7f, 0xb0, 0xa4, 0x1c, 0x95, 0xbd, 0x39, 0x0b,
-0x2e, 0xd1, 0xaf, 0x97, 0x0f, 0x45, 0x49, 0x34,
-0x21, 0xa0, 0x16, 0xc3, 0xa8, 0x6c, 0x7e, 0x62,
-0x1e, 0x7a, 0xc8, 0x87, 0x1b, 0x34, 0x55, 0xf0,
-0x4f, 0x41, 0xd0, 0xb7, 0xe0, 0x34, 0x16, 0x36,
-0x26, 0xc6, 0xc8, 0x37, 0x1c, 0x4f, 0xf5, 0x2c,
-0xf2, 0x61, 0x88, 0xf1, 0x70, 0x1e, 0x69, 0x10,
-0x4b, 0x6c, 0xc2, 0xc2, 0x7d, 0xc2, 0xc2, 0xfd,
-0xdc, 0x10, 0x5b, 0x96, 0xd1, 0x18, 0xe3, 0x11,
-0x49, 0xfe, 0xe4, 0xb1, 0x2a, 0xc1, 0xfc, 0xb1,
-0xf4, 0x69, 0x58, 0xa7, 0xd8, 0xb9, 0x1e, 0x7d,
-0x15, 0x56, 0xc8, 0x54, 0xcc, 0xfd, 0xa3, 0x30,
-0x6d, 0x2a, 0xb0, 0xd2, 0xec, 0x0d, 0xf6, 0x42,
-0x71, 0x64, 0x61, 0xfe, 0x0c, 0x44, 0x77, 0x0d,
-0xf3, 0x27, 0x57, 0xc4, 0x16, 0x1b, 0x0d, 0x18,
-0xd7, 0x2f, 0xe5, 0x87, 0xd1, 0x1a, 0xd0, 0xf1,
-0x1a, 0xd1, 0xf1, 0xfa, 0x52, 0x62, 0x69, 0x7d,
-0x22, 0x2f, 0x58, 0xd8, 0xb2, 0x37, 0x38, 0xd9,
-0x59, 0x2b, 0x2e, 0xe4, 0x9a, 0x3d, 0xe3, 0x7c,
-0x0f, 0x40, 0xc8, 0x97, 0xc2, 0x85, 0xcb, 0xf9,
-0xaf, 0xe1, 0x3b, 0xfa, 0x16, 0x98, 0x9d, 0x97,
-0xf0, 0xd3, 0x43, 0xc6, 0x18, 0x0f, 0xf2, 0xe4,
-0xaa, 0x9a, 0xef, 0xe6, 0x83, 0xc1, 0x18, 0xea,
-0x6a, 0x5e, 0xe5, 0xcb, 0xf0, 0x8b, 0xac, 0x77,
-0x4a, 0x01, 0x19, 0x6c, 0x21, 0x63, 0x1f, 0x1b,
-0xe3, 0x69, 0xca, 0xed, 0x9b, 0x6e, 0x17, 0xf3,
-0x01, 0x63, 0x67, 0xe4, 0x7a, 0xad, 0x92, 0xf3,
-0x8d, 0x0c, 0x6f, 0x9e, 0x36, 0x66, 0xfe, 0x28,
-0xcd, 0x87, 0x65, 0xe4, 0xd5, 0x19, 0xf7, 0x11,
-0xb3, 0xfd, 0xd3, 0xd9, 0x48, 0xf8, 0x30, 0xda,
-0x79, 0xd7, 0x46, 0x53, 0x73, 0x0e, 0x65, 0x82,
-0x85, 0xa9, 0x89, 0xcc, 0xfc, 0xf1, 0xe5, 0xeb,
-0xe7, 0xa4, 0x8f, 0xb8, 0xbc, 0x11, 0xd8, 0x65,
-0xe9, 0x0b, 0x47, 0x29, 0x8c, 0x1d, 0xa9, 0xf3,
-0xc7, 0x21, 0x23, 0x94, 0x31, 0x7f, 0x68, 0x02,
-0xa6, 0xc9, 0x67, 0x63, 0xc9, 0x45, 0x53, 0x12,
-0xec, 0x3d, 0xa3, 0x70, 0xe8, 0x65, 0xf9, 0x03,
-0x44, 0x83, 0x3d, 0xba, 0x0d, 0x6c, 0x3f, 0xe5,
-0x10, 0x16, 0xc2, 0xa3, 0x40, 0xd1, 0x9c, 0x3f,
-0x9b, 0x62, 0xab, 0xd1, 0xbf, 0x53, 0x7b, 0xd1,
-0xdd, 0xcc, 0x6d, 0xa9, 0x31, 0x9a, 0xf9, 0xcd,
-0xfc, 0x96, 0x7a, 0xf3, 0xce, 0xaa, 0x36, 0x63,
-0x32, 0xc6, 0x78, 0x84, 0xb5, 0xfc, 0x41, 0x63,
-0x71, 0xd0, 0xae, 0x39, 0xb7, 0x3f, 0xed, 0xea,
-0xab, 0xff, 0xcf, 0x85, 0x18, 0x03, 0x20, 0x01,
-0x83, 0x76, 0xd5, 0xc8, 0x1f, 0xbc, 0x5e, 0x5f,
-0x6d, 0xdd, 0xbd, 0xfe, 0xc3, 0x8d, 0xf7, 0x8f,
-0x9e, 0xbd, 0x7a, 0x89, 0xf8, 0xf0, 0xfb, 0xf7,
-0x34, 0x1f, 0xde, 0xc8, 0xf8, 0xb0, 0x68, 0x74,
-0x87, 0x8b, 0x19, 0x1f, 0xbe, 0x46, 0x7c, 0xf8,
-0xe0, 0xbe, 0xe6, 0xc3, 0x3f, 0x32, 0x3e, 0x3c,
-0xc5, 0x63, 0x8f, 0xab, 0xe7, 0x09, 0x0b, 0x7f,
-0x1f, 0x3c, 0xb8, 0x7f, 0xf1, 0xaf, 0x04, 0x14,
-0x91, 0x18, 0x67, 0xf0, 0x61, 0xfc, 0xdf, 0xff,
-0xfc, 0x0d, 0xfb, 0xff, 0x3d, 0x01, 0xc5, 0x8f,
-0x67, 0xf1, 0xe1, 0xcb, 0x13, 0x3e, 0x7c, 0x6e,
-0xe9, 0xd5, 0x5f, 0x0f, 0xea, 0xd4, 0xff, 0xda,
-0x54, 0xff, 0x7b, 0x4f, 0x3e, 0x7a, 0x0f, 0xa1,
-0x81, 0xbe, 0xd8, 0xe8, 0x41, 0xb3, 0xf4, 0xe4,
-0x6b, 0x61, 0xb1, 0x58, 0x2c, 0x16, 0x8b, 0xc5,
-0x62, 0xb1, 0x58, 0xff, 0x77, 0xc5, 0xb5, 0x83,
-0xe4, 0xda, 0x81, 0xc5, 0x62, 0xb1, 0x58, 0x2c,
-0x16, 0x8b, 0xc5, 0x62, 0xcd, 0x56, 0x5c, 0x3b,
-0x14, 0xb8, 0x76, 0x60, 0xb1, 0x58, 0x2c, 0x16,
-0x8b, 0xc5, 0x62, 0xb1, 0x58, 0xb3, 0x15, 0xd7,
-0x0e, 0x56, 0x5c, 0x3b, 0xfc, 0xd7, 0x43, 0x61,
-0xb1, 0x58, 0x2c, 0x16, 0x8b, 0xc5, 0x62, 0xb1,
-0x58, 0xff, 0xa2, 0x3c, 0x7a, 0x81, 0x1c, 0x0a,
-0xb7, 0x3d, 0x88, 0xdf, 0x89, 0xc9, 0x7b, 0xa0,
-0x1e, 0xfb, 0x79, 0x42, 0xf2, 0xb7, 0x73, 0x1e,
-0x0c, 0x45, 0xb6, 0xce, 0x7b, 0xef, 0x4c, 0xf7,
-0xfb, 0x07, 0x18, 0x78, 0xae, 0x50, 0xf1, 0x33,
-0x01, 0x00,
diff --git a/board/esd/cms700/Kconfig b/board/esd/cms700/Kconfig
deleted file mode 100644 (file)
index da11bc0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_CMS700
-
-config SYS_BOARD
-       default "cms700"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "CMS700"
-
-endif
diff --git a/board/esd/cms700/MAINTAINERS b/board/esd/cms700/MAINTAINERS
deleted file mode 100644 (file)
index 0191c8b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CMS700 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/cms700/
-F:     include/configs/CMS700.h
-F:     configs/CMS700_defconfig
diff --git a/board/esd/cms700/Makefile b/board/esd/cms700/Makefile
deleted file mode 100644 (file)
index 2bf5006..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-# Objects for Xilinx JTAG programming (CPLD)
-CPLD    = ../common/xilinx_jtag/lenval.o \
-         ../common/xilinx_jtag/micro.o \
-         ../common/xilinx_jtag/ports.o
-
-obj-y  = cms700.o flash.o \
-       ../common/misc.o \
-       $(CPLD) \
-       ../common/esd405ep_nand.o \
diff --git a/board/esd/cms700/cms700.c b/board/esd/cms700/cms700.c
deleted file mode 100644 (file)
index 40d7621..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * (C) Copyright 2005-2007
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF80);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       /*
-        * Reset CPLD via GPIO12 (CS3) pin
-        */
-       out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) & ~CONFIG_SYS_PLD_RESET);
-       udelay(1000); /* wait 1ms */
-       out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) | CONFIG_SYS_PLD_RESET);
-       udelay(1000); /* wait 1ms */
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       /* adjust flash start and offset */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       /*
-        * Setup and enable EEPROM write protection
-        */
-       out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) | CONFIG_SYS_EEPROM_WP);
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-#define LED_REG (CONFIG_SYS_PLD_BASE + 0x1000)
-int checkboard (void)
-{
-       char str[64];
-       int flashcnt;
-       int delay;
-
-       puts ("Board: ");
-
-       if (getenv_f("serial#", str, sizeof(str))  == -1) {
-               puts ("### No HW ID - assuming CMS700");
-       } else {
-               puts(str);
-       }
-
-       printf(" (PLD-Version=%02d)\n",
-              in_8((void *)(CONFIG_SYS_PLD_BASE + 0x1001)));
-
-       /*
-        * Flash LEDs
-        */
-       for (flashcnt = 0; flashcnt < 3; flashcnt++) {
-               out_8((void *)LED_REG, 0x00); /* LEDs off */
-               for (delay = 0; delay < 100; delay++)
-                       udelay(1000);
-               out_8((void *)LED_REG, 0x0f); /* LEDs on */
-               for (delay = 0; delay < 50; delay++)
-                       udelay(1000);
-       }
-       out_8((void *)LED_REG, 0x70);
-
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if defined(CONFIG_SYS_EEPROM_WREN)
-/* Input: <dev_addr>  I2C address of EEPROM device to enable.
- *         <state>     -1: deliver current state
- *                    0: disable write
- *                    1: enable write
- *  Returns:           -1: wrong device address
- *                      0: dis-/en- able done
- *                  0/1: current state if <state> was -1.
- */
-int eeprom_write_enable (unsigned dev_addr, int state)
-{
-       if (CONFIG_SYS_I2C_EEPROM_ADDR != dev_addr) {
-               return -1;
-       } else {
-               switch (state) {
-               case 1:
-                       /* Enable write access, clear bit GPIO_SINT2. */
-                       out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) & ~CONFIG_SYS_EEPROM_WP);
-                       state = 0;
-                       break;
-               case 0:
-                       /* Disable write access, set bit GPIO_SINT2. */
-                       out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) | CONFIG_SYS_EEPROM_WP);
-                       state = 0;
-                       break;
-               default:
-                       /* Read current status back. */
-                       state = (0 == (in_be32((void *)GPIO0_OR) & CONFIG_SYS_EEPROM_WP));
-                       break;
-               }
-       }
-       return state;
-}
-
-int do_eep_wren (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int query = argc == 1;
-       int state = 0;
-
-       if (query) {
-               /* Query write access state. */
-               state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, -1);
-               if (state < 0) {
-                       puts ("Query of write access state failed.\n");
-               } else {
-                       printf ("Write access for device 0x%0x is %sabled.\n",
-                               CONFIG_SYS_I2C_EEPROM_ADDR, state ? "en" : "dis");
-                       state = 0;
-               }
-       } else {
-               if ('0' == argv[1][0]) {
-                       /* Disable write access. */
-                       state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, 0);
-               } else {
-                       /* Enable write access. */
-                       state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, 1);
-               }
-               if (state < 0) {
-                       puts ("Setup of write access state failed.\n");
-               }
-       }
-
-       return state;
-}
-
-U_BOOT_CMD(eepwren,    2,      0,      do_eep_wren,
-       "Enable / disable / query EEPROM write access",
-       ""
-);
-#endif /* #if defined(CONFIG_SYS_EEPROM_WREN) */
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-#endif
-}
diff --git a/board/esd/cms700/flash.c b/board/esd/cms700/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/common/auto_update.c b/board/esd/common/auto_update.c
deleted file mode 100644 (file)
index 85c3567..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Gary Jennejohn, DENX Software Engineering, garyj@denx.de.
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-#include <command.h>
-#include <image.h>
-#include <asm/byteorder.h>
-#include <fat.h>
-#include <part.h>
-
-#include "auto_update.h"
-
-#ifdef CONFIG_AUTO_UPDATE
-
-#if !defined(CONFIG_CMD_FAT)
-#error "must define CONFIG_CMD_FAT"
-#endif
-
-extern au_image_t au_image[];
-extern int N_AU_IMAGES;
-
-/* where to load files into memory */
-#define LOAD_ADDR ((unsigned char *)0x100000)
-#define MAX_LOADSZ 0x1c00000
-
-/* externals */
-extern int fat_register_device(block_dev_desc_t *, int);
-extern int file_fat_detectfs(void);
-extern long file_fat_read(const char *, void *, unsigned long);
-long do_fat_read (const char *filename, void *buffer,
-                 unsigned long maxsize, int dols);
-extern int flash_sect_erase(ulong, ulong);
-extern int flash_sect_protect (int, ulong, ulong);
-extern int flash_write (char *, ulong, ulong);
-
-extern block_dev_desc_t ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE];
-
-int au_check_cksum_valid(int i, long nbytes)
-{
-       image_header_t *hdr;
-
-       hdr = (image_header_t *)LOAD_ADDR;
-#if defined(CONFIG_FIT)
-       if (genimg_get_format ((void *)hdr) != IMAGE_FORMAT_LEGACY) {
-               puts ("Non legacy image format not supported\n");
-               return -1;
-       }
-#endif
-
-       if ((au_image[i].type == AU_FIRMWARE) &&
-           (au_image[i].size != image_get_data_size (hdr))) {
-               printf ("Image %s has wrong size\n", au_image[i].name);
-               return -1;
-       }
-
-       if (nbytes != (image_get_image_size (hdr))) {
-               printf ("Image %s bad total SIZE\n", au_image[i].name);
-               return -1;
-       }
-
-       /* check the data CRC */
-       if (!image_check_dcrc (hdr)) {
-               printf ("Image %s bad data checksum\n", au_image[i].name);
-               return -1;
-       }
-       return 0;
-}
-
-int au_check_header_valid(int i, long nbytes)
-{
-       image_header_t *hdr;
-
-       hdr = (image_header_t *)LOAD_ADDR;
-#if defined(CONFIG_FIT)
-       if (genimg_get_format ((void *)hdr) != IMAGE_FORMAT_LEGACY) {
-               puts ("Non legacy image format not supported\n");
-               return -1;
-       }
-#endif
-
-       /* check the easy ones first */
-       if (nbytes < image_get_header_size ()) {
-               printf ("Image %s bad header SIZE\n", au_image[i].name);
-               return -1;
-       }
-       if (!image_check_magic (hdr) || !image_check_arch (hdr, IH_ARCH_PPC)) {
-               printf ("Image %s bad MAGIC or ARCH\n", au_image[i].name);
-               return -1;
-       }
-       if (!image_check_hcrc (hdr)) {
-               printf ("Image %s bad header checksum\n", au_image[i].name);
-               return -1;
-       }
-
-       /* check the type - could do this all in one gigantic if() */
-       if (((au_image[i].type & AU_TYPEMASK) == AU_FIRMWARE) &&
-           !image_check_type (hdr, IH_TYPE_FIRMWARE)) {
-               printf ("Image %s wrong type\n", au_image[i].name);
-               return -1;
-       }
-       if (((au_image[i].type & AU_TYPEMASK) == AU_SCRIPT) &&
-           !image_check_type (hdr, IH_TYPE_SCRIPT)) {
-               printf ("Image %s wrong type\n", au_image[i].name);
-               return -1;
-       }
-
-       return 0;
-}
-
-int au_do_update(int i, long sz)
-{
-       image_header_t *hdr;
-       char *addr;
-       long start, end;
-       int off, rc;
-       uint nbytes;
-       int k;
-
-       hdr = (image_header_t *)LOAD_ADDR;
-#if defined(CONFIG_FIT)
-       if (genimg_get_format ((void *)hdr) != IMAGE_FORMAT_LEGACY) {
-               puts ("Non legacy image format not supported\n");
-               return -1;
-       }
-#endif
-
-       switch (au_image[i].type & AU_TYPEMASK) {
-       case AU_SCRIPT:
-               printf("Executing script %s\n", au_image[i].name);
-
-               /* execute a script */
-               if (image_check_type (hdr, IH_TYPE_SCRIPT)) {
-                       addr = (char *)((char *)hdr + image_get_header_size ());
-                       /* stick a NULL at the end of the script, otherwise */
-                       /* parse_string_outer() runs off the end. */
-                       addr[image_get_data_size (hdr)] = 0;
-                       addr += 8;
-
-                       /*
-                        * Replace cr/lf with ;
-                        */
-                       k = 0;
-                       while (addr[k] != 0) {
-                               if ((addr[k] == 10) || (addr[k] == 13)) {
-                                       addr[k] = ';';
-                               }
-                               k++;
-                       }
-
-                       run_command(addr, 0);
-                       return 0;
-               }
-
-               break;
-
-       case AU_FIRMWARE:
-       case AU_NOR:
-       case AU_NAND:
-               start = au_image[i].start;
-               end = au_image[i].start + au_image[i].size - 1;
-
-               /*
-                * do not update firmware when image is already in flash.
-                */
-               if (au_image[i].type == AU_FIRMWARE) {
-                       char *orig = (char*)start;
-                       char *new  = (char *)((char *)hdr +
-                                             image_get_header_size ());
-                       nbytes = image_get_data_size (hdr);
-
-                       while (--nbytes) {
-                               if (*orig++ != *new++) {
-                                       break;
-                               }
-                       }
-                       if (!nbytes) {
-                               printf ("Skipping firmware update - "
-                                       "images are identical\n");
-                               break;
-                       }
-               }
-
-               /* unprotect the address range */
-               if (((au_image[i].type & AU_FLAGMASK) == AU_PROTECT) ||
-                   (au_image[i].type == AU_FIRMWARE)) {
-                       flash_sect_protect (0, start, end);
-               }
-
-               /*
-                * erase the address range.
-                */
-               if (au_image[i].type != AU_NAND) {
-                       printf ("Updating NOR FLASH with image %s\n",
-                               au_image[i].name);
-                       debug ("flash_sect_erase(%lx, %lx);\n", start, end);
-                       flash_sect_erase (start, end);
-               }
-
-               udelay(10000);
-
-               /* strip the header - except for the kernel and ramdisk */
-               if (au_image[i].type != AU_FIRMWARE) {
-                       addr = (char *)hdr;
-                       off = image_get_header_size ();
-                       nbytes = image_get_image_size (hdr);
-               } else {
-                       addr = (char *)((char *)hdr + image_get_header_size ());
-                       off = 0;
-                       nbytes = image_get_data_size (hdr);
-               }
-
-               /*
-                * copy the data from RAM to FLASH
-                */
-               if (au_image[i].type != AU_NAND) {
-                       debug ("flash_write(%p, %lx, %x)\n",
-                              addr, start, nbytes);
-                       rc = flash_write ((char *)addr, start,
-                                         (nbytes + 1) & ~1);
-               } else {
-                       rc = -1;
-               }
-               if (rc != 0) {
-                       printf ("Flashing failed due to error %d\n", rc);
-                       return -1;
-               }
-
-               /*
-                * check the dcrc of the copy
-                */
-               if (au_image[i].type != AU_NAND) {
-                       rc = crc32 (0, (uchar *)(start + off),
-                                   image_get_data_size (hdr));
-               }
-               if (rc != image_get_dcrc (hdr)) {
-                       printf ("Image %s Bad Data Checksum After COPY\n",
-                               au_image[i].name);
-                       return -1;
-               }
-
-               /* protect the address range */
-               /* this assumes that ONLY the firmware is protected! */
-               if (((au_image[i].type & AU_FLAGMASK) == AU_PROTECT) ||
-                   (au_image[i].type == AU_FIRMWARE)) {
-                       flash_sect_protect (1, start, end);
-               }
-
-               break;
-
-       default:
-               printf("Wrong image type selected!\n");
-       }
-
-       return 0;
-}
-
-static void process_macros (const char *input, char *output)
-{
-       char c, prev;
-       const char *varname_start = NULL;
-       int inputcnt  = strlen (input);
-       int outputcnt = CONFIG_SYS_CBSIZE;
-       int state = 0;  /* 0 = waiting for '$'  */
-                       /* 1 = waiting for '(' or '{' */
-                       /* 2 = waiting for ')' or '}' */
-                       /* 3 = waiting for '''  */
-#ifdef DEBUG_PARSER
-       char *output_start = output;
-
-       printf ("[PROCESS_MACROS] INPUT len %d: \"%s\"\n",
-               strlen(input), input);
-#endif
-
-       prev = '\0';                    /* previous character */
-
-       while (inputcnt && outputcnt) {
-           c = *input++;
-           inputcnt--;
-
-           if (state != 3) {
-           /* remove one level of escape characters */
-           if ((c == '\\') && (prev != '\\')) {
-               if (inputcnt-- == 0)
-                       break;
-               prev = c;
-               c = *input++;
-           }
-           }
-
-           switch (state) {
-           case 0:                     /* Waiting for (unescaped) $ */
-               if ((c == '\'') && (prev != '\\')) {
-                       state = 3;
-                       break;
-               }
-               if ((c == '$') && (prev != '\\')) {
-                       state++;
-               } else {
-                       *(output++) = c;
-                       outputcnt--;
-               }
-               break;
-           case 1:                     /* Waiting for ( */
-               if (c == '(' || c == '{') {
-                       state++;
-                       varname_start = input;
-               } else {
-                       state = 0;
-                       *(output++) = '$';
-                       outputcnt--;
-
-                       if (outputcnt) {
-                               *(output++) = c;
-                               outputcnt--;
-                       }
-               }
-               break;
-           case 2:                     /* Waiting for )        */
-               if (c == ')' || c == '}') {
-                       int i;
-                       char envname[CONFIG_SYS_CBSIZE], *envval;
-                       /* Varname # of chars */
-                       int envcnt = input - varname_start - 1;
-
-                       /* Get the varname */
-                       for (i = 0; i < envcnt; i++) {
-                               envname[i] = varname_start[i];
-                       }
-                       envname[i] = 0;
-
-                       /* Get its value */
-                       envval = getenv (envname);
-
-                       /* Copy into the line if it exists */
-                       if (envval != NULL)
-                               while ((*envval) && outputcnt) {
-                                       *(output++) = *(envval++);
-                                       outputcnt--;
-                               }
-                       /* Look for another '$' */
-                       state = 0;
-               }
-               break;
-           case 3:                     /* Waiting for '        */
-               if ((c == '\'') && (prev != '\\')) {
-                       state = 0;
-               } else {
-                       *(output++) = c;
-                       outputcnt--;
-               }
-               break;
-           }
-           prev = c;
-       }
-
-       if (outputcnt)
-               *output = 0;
-
-#ifdef DEBUG_PARSER
-       printf ("[PROCESS_MACROS] OUTPUT len %d: \"%s\"\n",
-               strlen (output_start), output_start);
-#endif
-}
-
-/*
- * this is called from board_init() after the hardware has been set up
- * and is usable. That seems like a good time to do this.
- * Right now the return value is ignored.
- */
-int do_auto_update(void)
-{
-       block_dev_desc_t *stor_dev = NULL;
-       long sz;
-       int i, res, cnt, old_ctrlc;
-       char buffer[32];
-       char str[80];
-       int n;
-
-       if  (ide_dev_desc[0].type != DEV_TYPE_UNKNOWN) {
-               stor_dev = get_dev ("ide", 0);
-               if (stor_dev == NULL) {
-                       debug ("ide: unknown device\n");
-                       return -1;
-               }
-       }
-
-       if (fat_register_device (stor_dev, 1) != 0) {
-               debug ("Unable to register ide disk 0:1\n");
-               return -1;
-       }
-
-       /*
-        * Check if magic file is present
-        */
-       if ((n = do_fat_read (AU_MAGIC_FILE, buffer,
-                             sizeof(buffer), LS_NO)) <= 0) {
-               debug ("No auto_update magic file (n=%d)\n", n);
-               return -1;
-       }
-
-#ifdef CONFIG_AUTO_UPDATE_SHOW
-       board_auto_update_show (1);
-#endif
-       puts("\nAutoUpdate Disk detected! Trying to update system...\n");
-
-       /* make sure that we see CTRL-C and save the old state */
-       old_ctrlc = disable_ctrlc (0);
-
-       /* just loop thru all the possible files */
-       for (i = 0; i < N_AU_IMAGES; i++) {
-               /*
-                * Try to expand the environment var in the fname
-                */
-               process_macros (au_image[i].name, str);
-               strcpy (au_image[i].name, str);
-
-               printf("Reading %s ...", au_image[i].name);
-               /* just read the header */
-               sz = do_fat_read (au_image[i].name, LOAD_ADDR,
-                                 image_get_header_size (), LS_NO);
-               debug ("read %s sz %ld hdr %d\n",
-                       au_image[i].name, sz, image_get_header_size ());
-               if (sz <= 0 || sz < image_get_header_size ()) {
-                       puts(" not found\n");
-                       continue;
-               }
-               if (au_check_header_valid (i, sz) < 0) {
-                       puts(" header not valid\n");
-                       continue;
-               }
-               sz = do_fat_read (au_image[i].name, LOAD_ADDR,
-                                 MAX_LOADSZ, LS_NO);
-               debug ("read %s sz %ld hdr %d\n",
-                       au_image[i].name, sz, image_get_header_size ());
-               if (sz <= 0 || sz <= image_get_header_size ()) {
-                       puts(" not found\n");
-                       continue;
-               }
-               if (au_check_cksum_valid (i, sz) < 0) {
-                       puts(" checksum not valid\n");
-                       continue;
-               }
-               puts(" done\n");
-
-               do {
-                       res = au_do_update (i, sz);
-                       /* let the user break out of the loop */
-                       if (ctrlc() || had_ctrlc ()) {
-                               clear_ctrlc ();
-                               break;
-                       }
-                       cnt++;
-               } while (res < 0);
-       }
-
-       /* restore the old state */
-       disable_ctrlc (old_ctrlc);
-
-       puts("AutoUpdate finished\n\n");
-#ifdef CONFIG_AUTO_UPDATE_SHOW
-       board_auto_update_show (0);
-#endif
-
-       return 0;
-}
-
-int auto_update(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       do_auto_update();
-
-       return 0;
-}
-U_BOOT_CMD(
-       autoupd,        1,      1,      auto_update,
-       "Automatically update images",
-       ""
-);
-#endif /* CONFIG_AUTO_UPDATE */
diff --git a/board/esd/common/auto_update.h b/board/esd/common/auto_update.h
deleted file mode 100644 (file)
index be8f439..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _AUTO_UPDATE_H_
-#define _AUTO_UPDATE_H_
-
-#define MBR_MAGIC       0x07081967
-#define MBR_MAGIC_ADDR  0x100           /* offset 0x100 should be free space */
-
-#define AU_MAGIC_FILE   "__auto_update"
-
-#define AU_TYPEMASK     0x000000ff
-#define AU_FLAGMASK     0xffff0000
-
-#define AU_PROTECT      0x80000000
-
-#define AU_SCRIPT       0x01
-#define AU_FIRMWARE     (0x02 | AU_PROTECT)
-#define AU_NOR          0x03
-#define AU_NAND         0x04
-
-struct au_image_s {
-       char name[80];
-       ulong start;
-       ulong size;
-       ulong type;
-};
-
-typedef struct au_image_s au_image_t;
-
-int do_auto_update(void);
-#ifdef CONFIG_AUTO_UPDATE_SHOW
-void board_auto_update_show(int au_active);
-#endif
-
-#endif /* #ifndef _AUTO_UPDATE_H_ */
index bc569070ce68e0fd59dcf8a40920aee029c32981..0df275517766e84af4455875da4ee9bdc63dfde9 100644 (file)
@@ -1,16 +1,3 @@
-if TARGET_CPCI405
-
-config SYS_BOARD
-       default "cpci405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "CPCI405"
-
-endif
-
 if TARGET_CPCI4052
 
 config SYS_BOARD
@@ -23,29 +10,3 @@ config SYS_CONFIG_NAME
        default "CPCI4052"
 
 endif
-
-if TARGET_CPCI405AB
-
-config SYS_BOARD
-       default "cpci405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "CPCI405AB"
-
-endif
-
-if TARGET_CPCI405DT
-
-config SYS_BOARD
-       default "cpci405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "CPCI405DT"
-
-endif
index b140571796511601190da78f24385f4d197c4cac..7490b780ed894d15404ca93f42ca1cd3fbc0a889 100644 (file)
@@ -5,5 +5,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y  = cpci405.o flash.o ../common/misc.o ../common/auto_update.o
+obj-y  = cpci405.o flash.o ../common/misc.o
 obj-y  += ../common/cmd_loadpci.o
index 63cd862d2d2ff6b31dc94042eee924b430cc0c49..bf5a4cb682430225a989a5be73934d117418099b 100644 (file)
@@ -24,13 +24,7 @@ extern void __ft_board_setup(void *blob, bd_t *bd);
 const unsigned char fpgadata[] =
 {
 #if defined(CONFIG_CPCI405_VER2)
-# if defined(CONFIG_CPCI405AB)
-#  include "fpgadata_cpci405ab.c"
-# else
-#  include "fpgadata_cpci4052.c"
-# endif
-#else
-# include "fpgadata_cpci405.c"
+# include "fpgadata_cpci4052.c"
 #endif
 };
 
@@ -38,37 +32,6 @@ const unsigned char fpgadata[] =
  * include common fpga code (for esd boards)
  */
 #include "../common/fpga.c"
-#include "../common/auto_update.h"
-
-#if defined(CONFIG_CPCI405AB)
-au_image_t au_image[] = {
-       {"cpci405ab/preinst.img", 0, -1, AU_SCRIPT},
-       {"cpci405ab/pImage", 0xffc00000, 0x000c0000, AU_NOR},
-       {"cpci405ab/pImage.initrd", 0xffcc0000, 0x00300000, AU_NOR},
-       {"cpci405ab/u-boot.img", 0xfffc0000, 0x00040000, AU_FIRMWARE},
-       {"cpci405ab/postinst.img", 0, 0, AU_SCRIPT},
-};
-#else
-#if defined(CONFIG_CPCI405_VER2)
-au_image_t au_image[] = {
-       {"cpci4052/preinst.img", 0, -1, AU_SCRIPT},
-       {"cpci4052/pImage", 0xffc00000, 0x000c0000, AU_NOR},
-       {"cpci4052/pImage.initrd", 0xffcc0000, 0x00300000, AU_NOR},
-       {"cpci4052/u-boot.img", 0xfffc0000, 0x00040000, AU_FIRMWARE},
-       {"cpci4052/postinst.img", 0, 0, AU_SCRIPT},
-};
-#else
-au_image_t au_image[] = {
-       {"cpci405/preinst.img", 0, -1, AU_SCRIPT},
-       {"cpci405/pImage", 0xffc00000, 0x000c0000, AU_NOR},
-       {"cpci405/pImage.initrd", 0xffcc0000, 0x00310000, AU_NOR},
-       {"cpci405/u-boot.img", 0xfffd0000, 0x00030000, AU_FIRMWARE},
-       {"cpci405/postinst.img", 0, 0, AU_SCRIPT},
-};
-#endif
-#endif
-
-int N_AU_IMAGES = (sizeof(au_image) / sizeof(au_image[0]));
 
 /* Prototypes */
 int cpci405_version(void);
@@ -508,7 +471,7 @@ int pci_pre_init(struct pci_controller *hose)
 #endif /* defined(CONFIG_PCI) */
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int rc;
 
@@ -526,242 +489,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                               fdt_strerror(rc));
                }
        }
-}
-#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
-
-#if defined(CONFIG_CPCI405AB)
-#define ONE_WIRE_CLEAR  out_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR +   \
-                                         CONFIG_SYS_FPGA_MODE),        \
-                                 in_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR + \
-                                                 CONFIG_SYS_FPGA_MODE)) | \
-                                         CONFIG_SYS_FPGA_MODE_1WIRE_DIR)
-
-#define ONE_WIRE_SET    out_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR +   \
-                                         CONFIG_SYS_FPGA_MODE),        \
-                                 in_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR + \
-                                                 CONFIG_SYS_FPGA_MODE)) & \
-                                         ~CONFIG_SYS_FPGA_MODE_1WIRE_DIR)
-
-#define ONE_WIRE_GET    (in_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR + \
-                                         CONFIG_SYS_FPGA_STATUS)) &  \
-                         CONFIG_SYS_FPGA_MODE_1WIRE)
-
-/*
- * Generate a 1-wire reset, return 1 if no presence detect was found,
- * return 0 otherwise.
- * (NOTE: Does not handle alarm presence from DS2404/DS1994)
- */
-int OWTouchReset(void)
-{
-       int result;
-
-       ONE_WIRE_CLEAR;
-       udelay(480);
-       ONE_WIRE_SET;
-       udelay(70);
-
-       result = ONE_WIRE_GET;
-
-       udelay(410);
-       return result;
-}
-
-/*
- * Send 1 a 1-wire write bit.
- * Provide 10us recovery time.
- */
-void OWWriteBit(int bit)
-{
-       if (bit) {
-               /*
-                * write '1' bit
-                */
-               ONE_WIRE_CLEAR;
-               udelay(6);
-               ONE_WIRE_SET;
-               udelay(64);
-       } else {
-               /*
-                * write '0' bit
-                */
-               ONE_WIRE_CLEAR;
-               udelay(60);
-               ONE_WIRE_SET;
-               udelay(10);
-       }
-}
-
-/*
- * Read a bit from the 1-wire bus and return it.
- * Provide 10us recovery time.
- */
-int OWReadBit(void)
-{
-       int result;
-
-       ONE_WIRE_CLEAR;
-       udelay(6);
-       ONE_WIRE_SET;
-       udelay(9);
-
-       result = ONE_WIRE_GET;
-
-       udelay(55);
-       return result;
-}
-
-void OWWriteByte(int data)
-{
-       int loop;
-
-       for (loop = 0; loop < 8; loop++) {
-               OWWriteBit(data & 0x01);
-               data >>= 1;
-       }
-}
-
-int OWReadByte(void)
-{
-       int loop, result = 0;
-
-       for (loop = 0; loop < 8; loop++) {
-               result >>= 1;
-               if (OWReadBit())
-                       result |= 0x80;
-       }
-
-       return result;
-}
-
-int do_onewire(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       unsigned short val;
-       int result;
-       int i;
-       unsigned char ow_id[6];
-       char str[32];
-
-       /*
-        * Clear 1-wire bit (open drain with pull-up)
-        */
-       val = in_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR +
-                             CONFIG_SYS_FPGA_MODE));
-       val &= ~CONFIG_SYS_FPGA_MODE_1WIRE; /* clear 1-wire bit */
-       out_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR +
-                        CONFIG_SYS_FPGA_MODE), val);
-
-       result = OWTouchReset();
-       if (result != 0)
-               puts("No 1-wire device detected!\n");
-
-       OWWriteByte(0x33); /* send read rom command */
-       OWReadByte(); /* skip family code ( == 0x01) */
-       for (i = 0; i < 6; i++)
-               ow_id[i] = OWReadByte();
-       OWReadByte(); /* read crc */
-
-       sprintf(str, "%02X%02X%02X%02X%02X%02X",
-               ow_id[0], ow_id[1], ow_id[2], ow_id[3], ow_id[4], ow_id[5]);
-       printf("Setting environment variable 'ow_id' to %s\n", str);
-       setenv("ow_id", str);
-
-       return 0;
-}
-U_BOOT_CMD(
-       onewire,        1,      1,      do_onewire,
-       "Read 1-write ID",
-       ""
-);
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR_2 0x51 /* EEPROM CAT24WC32 */
-#define CONFIG_ENV_SIZE_2 0x800 /* 2048 bytes may be used for env vars */
-
-/*
- * Write backplane ip-address...
- */
-int do_get_bpip(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       char *buf;
-       ulong crc;
-       char str[32];
-       char *ptr;
-       IPaddr_t ipaddr;
-
-       buf = malloc(CONFIG_ENV_SIZE_2);
-       if (eeprom_read(CONFIG_SYS_I2C_EEPROM_ADDR_2, 0,
-                       (uchar *)buf, CONFIG_ENV_SIZE_2))
-               puts("\nError reading backplane EEPROM!\n");
-       else {
-               crc = crc32(0, (uchar *)(buf+4), CONFIG_ENV_SIZE_2 - 4);
-               if (crc != *(ulong *)buf) {
-                       printf("ERROR: crc mismatch %08lx %08lx\n",
-                              crc, *(ulong *)buf);
-                       return -1;
-               }
-
-               /*
-                * Find bp_ip
-                */
-               ptr = strstr(buf+4, "bp_ip=");
-               if (ptr == NULL) {
-                       printf("ERROR: bp_ip not found!\n");
-                       return -1;
-               }
-               ptr += 6;
-               ipaddr = string_to_ip(ptr);
-
-               /*
-                * Update whole ip-addr
-                */
-               sprintf(str, "%pI4", &ipaddr);
-               setenv("ipaddr", str);
-               printf("Updated ip_addr from bp_eeprom to %s!\n", str);
-       }
-
-       free(buf);
 
        return 0;
 }
-U_BOOT_CMD(
-       getbpip,        1,      1,      do_get_bpip,
-       "Update IP-Address with Backplane IP-Address",
-       ""
-);
-
-/*
- * Set and print backplane ip...
- */
-int do_set_bpip(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       char *buf;
-       char str[32];
-       ulong crc;
-
-       if (argc < 2) {
-               puts("ERROR!\n");
-               return -1;
-       }
-
-       printf("Setting bp_ip to %s\n", argv[1]);
-       buf = malloc(CONFIG_ENV_SIZE_2);
-       memset(buf, 0, CONFIG_ENV_SIZE_2);
-       sprintf(str, "bp_ip=%s", argv[1]);
-       strcpy(buf+4, str);
-       crc = crc32(0, (uchar *)(buf+4), CONFIG_ENV_SIZE_2 - 4);
-       *(ulong *)buf = crc;
-
-       if (eeprom_write(CONFIG_SYS_I2C_EEPROM_ADDR_2,
-                        0, (uchar *)buf, CONFIG_ENV_SIZE_2))
-               puts("\nError writing backplane EEPROM!\n");
-
-       free(buf);
-
-       return 0;
-}
-U_BOOT_CMD(
-       setbpip,        2,      1,      do_set_bpip,
-       "Write Backplane IP-Address",
-       ""
-);
-
-#endif /* CONFIG_CPCI405AB */
+#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/esd/cpci405/fpgadata_cpci405.c b/board/esd/cpci405/fpgadata_cpci405.c
deleted file mode 100644 (file)
index 46c2fed..0000000
+++ /dev/null
@@ -1,683 +0,0 @@
-0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0,
-0x0f, 0xf0, 0x00, 0x00, 0x01, 0x61, 0x00, 0x0d,
-0x63, 0x70, 0x63, 0x69, 0x34, 0x30, 0x35, 0x32,
-0x2e, 0x6e, 0x63, 0x64, 0x00, 0x62, 0x00, 0x0b,
-0x73, 0x30, 0x35, 0x78, 0x6c, 0x76, 0x71, 0x31,
-0x30, 0x30, 0x00, 0x63, 0x00, 0x0b, 0x32, 0x30,
-0x30, 0x31, 0x2f, 0x30, 0x35, 0x2f, 0x31, 0x30,
-0x00, 0x64, 0x00, 0x09, 0x31, 0x35, 0x3a, 0x31,
-0x35, 0x3a, 0x32, 0x33, 0x00, 0x65, 0xe2, 0x01,
-0x00, 0x00, 0x15, 0x08, 0xff, 0x30, 0xe8, 0x01,
-0x01, 0x01, 0x01, 0xe7, 0xe6, 0x04, 0x01, 0x02,
-0x11, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x04, 0x04, 0x0b, 0x02, 0x02, 0x01, 0x04,
-0x02, 0x01, 0x0b, 0x07, 0x01, 0x01, 0x0d, 0x03,
-0x05, 0x09, 0x03, 0x05, 0x03, 0x05, 0x03, 0x0b,
-0x13, 0x01, 0x06, 0xe5, 0xe5, 0x02, 0x03, 0x0c,
-0x01, 0xe6, 0x11, 0x08, 0x13, 0x16, 0x08, 0x1e,
-0x0b, 0xe5, 0xe6, 0x0e, 0x09, 0x09, 0x09, 0x09,
-0x0b, 0x07, 0xe6, 0x08, 0x02, 0xe5, 0x04, 0x01,
-0xe6, 0x04, 0x0e, 0x01, 0x01, 0x14, 0x09, 0x09,
-0x09, 0x09, 0x05, 0x05, 0xe5, 0xe6, 0x04, 0x03,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0x0c, 0xe5,
-0x5b, 0x01, 0x01, 0x05, 0x01, 0x11, 0x02, 0xe5,
-0xe5, 0x48, 0x13, 0x1a, 0x01, 0xe6, 0x3e, 0x0b,
-0x10, 0x03, 0x05, 0x13, 0x03, 0x01, 0x28, 0x14,
-0x11, 0x24, 0x03, 0xe5, 0xe6, 0xe5, 0x5d, 0x01,
-0x17, 0xe5, 0x01, 0x01, 0x0b, 0xe5, 0x12, 0x09,
-0x49, 0x03, 0x01, 0x01, 0x0d, 0x31, 0x0a, 0x2f,
-0x01, 0xe6, 0x28, 0x15, 0x1e, 0x1b, 0xe5, 0x01,
-0x10, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09,
-0x09, 0x09, 0x05, 0x02, 0x04, 0x03, 0x10, 0x09,
-0x09, 0x04, 0x04, 0x09, 0x01, 0x05, 0x03, 0x09,
-0x13, 0x05, 0x03, 0x0e, 0x01, 0xe5, 0x0c, 0xe5,
-0x07, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x03, 0xe6, 0x07, 0xe5,
-0x04, 0x02, 0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x05,
-0xe5, 0x0e, 0x03, 0x10, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x0d, 0x0a, 0xe5, 0x06, 0x0a, 0x0e, 0x01,
-0xe5, 0x05, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07,
-0xe5, 0x02, 0x04, 0xe5, 0xe5, 0x01, 0x03, 0xe5,
-0x07, 0xe5, 0x07, 0x02, 0x05, 0xe6, 0x0e, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0x13, 0x03, 0x05, 0x02,
-0xe5, 0x02, 0x08, 0x05, 0xe8, 0x0c, 0x07, 0x01,
-0x09, 0x09, 0x06, 0x02, 0x05, 0x03, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x06, 0x02, 0x02, 0x06, 0x02,
-0x06, 0x0a, 0x06, 0xe5, 0xe5, 0x0c, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x04, 0x01, 0x02, 0x06, 0x02,
-0x06, 0x01, 0x02, 0x06, 0x02, 0x06, 0x01, 0xe6,
-0x02, 0xe6, 0xe6, 0x05, 0x02, 0x0d, 0x02, 0xe5,
-0x02, 0x2b, 0x01, 0x06, 0x0b, 0x0c, 0x06, 0x01,
-0x01, 0xe5, 0x14, 0x02, 0x03, 0xe5, 0xe6, 0x13,
-0x23, 0x0a, 0x14, 0x04, 0x1c, 0xe5, 0xe6, 0x27,
-0x01, 0x0e, 0x0a, 0x03, 0x13, 0x1d, 0x02, 0xe5,
-0x0d, 0x04, 0xe7, 0x14, 0x0e, 0x05, 0xe5, 0x05,
-0x0c, 0x03, 0x0a, 0x01, 0x09, 0x0a, 0x01, 0x10,
-0x04, 0xe5, 0x02, 0x09, 0x09, 0x09, 0x09, 0xe6,
-0x08, 0x09, 0x09, 0xe5, 0x07, 0x0e, 0xe5, 0xe5,
-0x32, 0x0d, 0x10, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x15, 0xe6, 0x47, 0x09, 0x02, 0x09, 0x07,
-0x12, 0xe5, 0xe6, 0x24, 0x1c, 0x12, 0x09, 0x16,
-0x03, 0xe5, 0x01, 0x06, 0x27, 0x16, 0x04, 0x08,
-0x22, 0x05, 0x01, 0x47, 0x15, 0x09, 0x05, 0x0c,
-0x02, 0xe5, 0x40, 0xe5, 0x11, 0xe6, 0x06, 0x01,
-0x18, 0xe8, 0x05, 0x3e, 0x0f, 0x0c, 0x18, 0x01,
-0xe5, 0x2f, 0x0f, 0x13, 0x08, 0xe6, 0x19, 0xe6,
-0xe5, 0x0b, 0x2b, 0x15, 0x14, 0x05, 0x10, 0x01,
-0xe6, 0x3f, 0x28, 0x07, 0x0a, 0xe6, 0x09, 0x2e,
-0x2d, 0x12, 0xe8, 0x59, 0x08, 0x0f, 0xe5, 0x04,
-0x01, 0x01, 0x23, 0x07, 0x01, 0x01, 0x17, 0x2c,
-0x05, 0xe8, 0x22, 0x09, 0x02, 0x28, 0x0a, 0x15,
-0xe6, 0xe5, 0x12, 0x0d, 0xe5, 0x01, 0x06, 0x2e,
-0x09, 0x16, 0xe8, 0x74, 0xe5, 0xe5, 0xe7, 0x01,
-0x01, 0x50, 0xe5, 0x1d, 0x01, 0x02, 0x01, 0x01,
-0x04, 0x52, 0x18, 0x01, 0x02, 0x01, 0x03, 0xe7,
-0x01, 0x52, 0x1a, 0x06, 0x02, 0x03, 0x57, 0x11,
-0x01, 0x05, 0x06, 0xe5, 0x03, 0x02, 0x52, 0x03,
-0x01, 0x02, 0x0a, 0x01, 0x01, 0x06, 0x02, 0x02,
-0x01, 0xe7, 0x55, 0x11, 0x01, 0x0b, 0x02, 0xe5,
-0x01, 0x55, 0x13, 0x01, 0x0e, 0xe5, 0xe6, 0x04,
-0xe5, 0x01, 0x02, 0x6c, 0xe7, 0xe5, 0x04, 0x04,
-0x6f, 0xe6, 0xe6, 0x09, 0x03, 0x09, 0x09, 0x09,
-0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06,
-0xe6, 0xe6, 0x01, 0x6c, 0x02, 0x09, 0xe6, 0x6e,
-0x08, 0x01, 0xe5, 0xe6, 0x22, 0x09, 0x4e, 0x01,
-0x23, 0xe5, 0x07, 0xe5, 0x4a, 0xe9, 0x1e, 0x02,
-0x09, 0x4d, 0x01, 0xe5, 0x14, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0x01, 0x02, 0x09, 0x19, 0x09,
-0x50, 0x23, 0x09, 0x4c, 0xe5, 0x01, 0x23, 0x09,
-0x4c, 0x02, 0xe5, 0x08, 0x19, 0x09, 0x4c, 0xe5,
-0xe6, 0x1e, 0x59, 0x02, 0xe6, 0x10, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0x06, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x09, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x0a, 0xe6, 0xe5,
-0x77, 0x02, 0x02, 0xe5, 0x28, 0x04, 0x03, 0x08,
-0x03, 0x13, 0x24, 0xe6, 0xe6, 0x3e, 0x3b, 0xe5,
-0xe6, 0x22, 0x1a, 0x39, 0x02, 0xe6, 0x3e, 0x3a,
-0x01, 0x01, 0xe5, 0x11, 0x2b, 0x1b, 0x1d, 0xe5,
-0x02, 0x3f, 0x32, 0x07, 0xe5, 0xe6, 0x07, 0x36,
-0x3c, 0x01, 0x1a, 0x24, 0xe5, 0x38, 0xe6, 0xe5,
-0x0a, 0x0a, 0x28, 0x3c, 0x01, 0x1b, 0x5f, 0xe7,
-0x7a, 0xe7, 0x7a, 0x02, 0x01, 0x01, 0x73, 0xe5,
-0x02, 0xe6, 0x01, 0x72, 0x01, 0x03, 0xe7, 0x03,
-0x6b, 0x01, 0x02, 0x01, 0x02, 0x01, 0xe7, 0xe5,
-0x6b, 0xe5, 0x05, 0x02, 0x03, 0xe5, 0x77, 0x02,
-0xe7, 0xe5, 0x73, 0x03, 0xe8, 0x77, 0x01, 0xe8,
-0x78, 0xe6, 0xe5, 0x78, 0xe5, 0x01, 0xe5, 0x7a,
-0xe8, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0xe5, 0xe7, 0x01, 0x77,
-0xe8, 0x77, 0x01, 0x02, 0xe5, 0x6f, 0x0d, 0x7a,
-0x01, 0xe6, 0x78, 0xe5, 0xe5, 0xe5, 0x14, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x09, 0xe5, 0x7a, 0xe5, 0xe5, 0x79,
-0x01, 0xe6, 0x79, 0x01, 0x01, 0x7e, 0x7c, 0xe6,
-0x10, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x04, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x02, 0x05, 0x04, 0xe5, 0x7b, 0xe7, 0x1e, 0x29,
-0x08, 0x25, 0xe9, 0x3e, 0x3c, 0x01, 0x03, 0xe5,
-0x39, 0x3d, 0xe7, 0x3c, 0x3b, 0x02, 0xe5, 0x2f,
-0x0d, 0x3b, 0xe5, 0xe6, 0x3d, 0x3a, 0x01, 0x01,
-0x3f, 0x3c, 0xe7, 0x03, 0x25, 0xe6, 0x10, 0x1f,
-0xe6, 0x1a, 0xe5, 0x2d, 0x10, 0x21, 0x18, 0xe5,
-0xe6, 0x15, 0x63, 0xe6, 0xe5, 0x13, 0x22, 0x41,
-0xe7, 0xe5, 0x36, 0x42, 0x01, 0x01, 0x01, 0x76,
-0xe5, 0x01, 0xe6, 0x01, 0x01, 0x70, 0x01, 0x06,
-0x01, 0xe5, 0xe5, 0x6f, 0x04, 0xe5, 0x01, 0x02,
-0x74, 0x06, 0xe5, 0x0a, 0x6e, 0x01, 0xe5, 0xe6,
-0x06, 0xe6, 0x69, 0x04, 0x01, 0x02, 0x76, 0xe9,
-0x79, 0xe5, 0xe7, 0x7a, 0x01, 0x63, 0x16, 0xe9,
-0x0d, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x01, 0x06, 0x02, 0xe6, 0x71,
-0x04, 0x02, 0x02, 0xe5, 0xe5, 0x60, 0x0b, 0x0b,
-0xe5, 0xe5, 0x36, 0x27, 0x01, 0x16, 0x03, 0x01,
-0x37, 0xe5, 0x25, 0x01, 0x01, 0x16, 0x01, 0xe7,
-0x26, 0x0e, 0x27, 0x01, 0x03, 0x14, 0xe5, 0x01,
-0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x2d, 0x08, 0x2a, 0x17, 0xe6, 0xe5, 0x2d, 0x08,
-0x2a, 0x18, 0xe5, 0xe5, 0x08, 0x2d, 0x08, 0x39,
-0x02, 0xe5, 0x2d, 0x08, 0x2c, 0x19, 0xe5, 0x12,
-0xe5, 0x63, 0x01, 0xe6, 0x05, 0x0a, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x0a, 0xe5, 0xe6, 0xe5,
-0x06, 0x4a, 0x0e, 0x16, 0xe9, 0x32, 0x09, 0x13,
-0x13, 0x12, 0xe5, 0x02, 0x0a, 0x33, 0xe6, 0x12,
-0x09, 0x1b, 0x01, 0x01, 0xe5, 0x07, 0x06, 0x03,
-0x1a, 0x1a, 0x16, 0x17, 0x01, 0x02, 0x13, 0x2b,
-0xe5, 0x0e, 0x2b, 0x01, 0xe5, 0x0a, 0x32, 0x03,
-0x17, 0x03, 0xe6, 0x16, 0x02, 0x01, 0x26, 0x02,
-0x01, 0x07, 0x0b, 0x01, 0xe6, 0x04, 0x15, 0x01,
-0x18, 0xe8, 0x08, 0x1e, 0x02, 0x13, 0x3a, 0x03,
-0x05, 0x02, 0x36, 0x15, 0xe5, 0x06, 0xe7, 0x17,
-0xe5, 0xe6, 0x38, 0x05, 0x15, 0x02, 0x07, 0x1a,
-0x02, 0x02, 0x13, 0x16, 0x2a, 0x0e, 0x03, 0x12,
-0x19, 0x04, 0x0d, 0x03, 0x0b, 0x2d, 0xe5, 0x11,
-0x19, 0x20, 0x2f, 0x11, 0x01, 0x01, 0x49, 0x02,
-0xe6, 0x0d, 0x02, 0xe5, 0x04, 0x0e, 0x03, 0x01,
-0x02, 0x01, 0x41, 0x04, 0x03, 0xe5, 0x0d, 0x02,
-0x06, 0x0b, 0x01, 0x03, 0x02, 0x01, 0xe5, 0xe5,
-0x22, 0xe5, 0x05, 0x1a, 0x10, 0x01, 0xe5, 0xe5,
-0x01, 0x04, 0x02, 0x08, 0x04, 0x01, 0x01, 0x02,
-0x48, 0x10, 0xe5, 0xe5, 0xe5, 0x06, 0xe6, 0xe5,
-0xe6, 0x05, 0x02, 0xe9, 0x04, 0x05, 0x20, 0x04,
-0x01, 0x0c, 0x01, 0x07, 0x0e, 0x04, 0x01, 0xe5,
-0x05, 0x02, 0x03, 0x01, 0x06, 0xe5, 0xe5, 0xe5,
-0xe6, 0x07, 0x23, 0x01, 0x02, 0x0c, 0x01, 0x01,
-0x05, 0x03, 0x0f, 0x01, 0xe5, 0x05, 0x03, 0x04,
-0x04, 0x02, 0xe8, 0x01, 0x3e, 0x01, 0x07, 0x0d,
-0x02, 0x01, 0xe5, 0xe5, 0x06, 0x05, 0xe6, 0x06,
-0xe7, 0xe5, 0x40, 0x01, 0x07, 0x10, 0x01, 0xe5,
-0xe6, 0x05, 0x01, 0xe5, 0x02, 0x0a, 0x01, 0xe6,
-0x1b, 0x02, 0x10, 0x26, 0x09, 0x09, 0x04, 0x07,
-0x01, 0xe7, 0x01, 0x1b, 0xe5, 0x13, 0x23, 0xe5,
-0x0b, 0x09, 0xe5, 0x09, 0x01, 0xe5, 0x0d, 0x09,
-0x09, 0x04, 0x01, 0x02, 0x09, 0x0b, 0x09, 0x09,
-0xe6, 0x06, 0xe5, 0x02, 0xe6, 0x01, 0xe5, 0xe5,
-0xe5, 0xe5, 0x05, 0x01, 0x02, 0x16, 0x13, 0x33,
-0x13, 0x04, 0x02, 0xe5, 0xe6, 0xe5, 0x10, 0x14,
-0x32, 0x14, 0x0b, 0xe6, 0x16, 0x01, 0x11, 0x01,
-0x24, 0x05, 0xe5, 0x04, 0x01, 0xe5, 0x05, 0x01,
-0xe6, 0x0d, 0x01, 0x16, 0xe5, 0xe6, 0x0f, 0x01,
-0xe5, 0x29, 0x05, 0x01, 0x07, 0x01, 0x0f, 0xe8,
-0x15, 0x01, 0x11, 0x01, 0x2a, 0x08, 0x07, 0x01,
-0x01, 0x0c, 0xe5, 0xe6, 0x03, 0x10, 0xe6, 0xe5,
-0x04, 0x09, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5,
-0x07, 0x02, 0x06, 0x01, 0xe5, 0x06, 0xe7, 0xe5,
-0x02, 0x01, 0xe6, 0xe5, 0x04, 0xe5, 0x08, 0x01,
-0x17, 0x01, 0x05, 0x0b, 0x01, 0x0f, 0x09, 0x0b,
-0x04, 0xe5, 0x04, 0x01, 0x09, 0x0f, 0xe5, 0xe5,
-0x16, 0x01, 0x06, 0x0a, 0x01, 0x30, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x0d, 0x01, 0xe7, 0x17, 0x05,
-0x0b, 0x01, 0x0f, 0x02, 0x08, 0x07, 0x01, 0x08,
-0x04, 0x03, 0x01, 0x16, 0x17, 0x01, 0x03, 0xe5,
-0x0d, 0x0d, 0x15, 0x08, 0x01, 0x01, 0xe5, 0xe5,
-0x03, 0xe6, 0x10, 0xe6, 0xe5, 0x10, 0x1c, 0x03,
-0x18, 0x13, 0xe5, 0xe5, 0x05, 0x14, 0x11, 0x01,
-0x01, 0x05, 0x01, 0x02, 0x04, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0x01, 0x02, 0x04, 0x01, 0x04,
-0x02, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x03,
-0x03, 0x01, 0x0b, 0xe7, 0xe5, 0x12, 0x15, 0x05,
-0x0a, 0x10, 0xe5, 0x17, 0x03, 0xe5, 0x0c, 0x01,
-0xe7, 0x48, 0x03, 0x0e, 0x0c, 0x03, 0x01, 0x08,
-0x04, 0x05, 0x02, 0x0b, 0x0b, 0x09, 0x08, 0xe5,
-0x03, 0x05, 0x0b, 0x01, 0x02, 0x0b, 0x0e, 0x01,
-0x0c, 0x01, 0xe6, 0xe5, 0x01, 0x0f, 0x02, 0xe6,
-0x03, 0x0e, 0x03, 0x18, 0x0d, 0x20, 0xea, 0x01,
-0x06, 0x20, 0x03, 0x0f, 0x05, 0x21, 0x14, 0x01,
-0xe5, 0x15, 0x1f, 0x07, 0x09, 0x1b, 0x13, 0x04,
-0xe5, 0x06, 0x04, 0x0c, 0x0a, 0xe5, 0x09, 0x04,
-0x06, 0xe6, 0x24, 0x03, 0x01, 0x0e, 0x01, 0xe6,
-0x0a, 0x03, 0x17, 0xe5, 0x15, 0x11, 0x11, 0x09,
-0x0c, 0x02, 0xe6, 0x06, 0x02, 0x0b, 0xe6, 0x17,
-0x09, 0x02, 0x07, 0x12, 0x04, 0xe6, 0x06, 0xe5,
-0xe6, 0x0c, 0xe7, 0x18, 0x15, 0xe5, 0x0d, 0x10,
-0x11, 0x06, 0x01, 0x0e, 0x01, 0xe6, 0x3c, 0x06,
-0x03, 0x22, 0x0e, 0x01, 0xe6, 0x09, 0x04, 0x58,
-0x11, 0x02, 0xe5, 0x08, 0x05, 0x2a, 0x01, 0x1c,
-0x0f, 0x10, 0xe6, 0xe5, 0xe5, 0x01, 0x05, 0xe5,
-0xe5, 0x01, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x11,
-0x09, 0x02, 0xe5, 0x06, 0xe5, 0x22, 0x0e, 0x01,
-0x03, 0x02, 0x06, 0xe5, 0x01, 0xe6, 0x21, 0xe5,
-0xe5, 0x2f, 0x01, 0xe5, 0x0a, 0x01, 0x06, 0x01,
-0xe5, 0xe5, 0x04, 0x01, 0xe5, 0xe5, 0xe5, 0x08,
-0x1b, 0x02, 0x0a, 0x23, 0x06, 0xe5, 0x02, 0x06,
-0x01, 0xe5, 0xe5, 0x06, 0x02, 0x27, 0x33, 0x05,
-0xe5, 0x05, 0x02, 0x02, 0xe6, 0x09, 0x01, 0x01,
-0x27, 0x06, 0x25, 0x04, 0x01, 0x02, 0x09, 0xe5,
-0xe6, 0xe8, 0x09, 0x01, 0x01, 0x02, 0x01, 0x1e,
-0x03, 0x02, 0xe6, 0x29, 0x01, 0x01, 0x09, 0x02,
-0x03, 0x02, 0x0a, 0x01, 0x18, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x20, 0x01, 0x01,
-0x06, 0x02, 0x04, 0x01, 0xe5, 0xe5, 0x09, 0x01,
-0x18, 0x01, 0x0a, 0x12, 0xe5, 0x18, 0x05, 0x01,
-0x0e, 0xe8, 0xe5, 0x10, 0x02, 0x24, 0xe5, 0x0b,
-0x07, 0xe5, 0x07, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0x02, 0x06, 0xe7, 0xe5, 0x13, 0x3d, 0x09, 0x01,
-0x03, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x0b,
-0xe5, 0x0a, 0x02, 0x02, 0xe6, 0xe5, 0x01, 0x09,
-0x09, 0x04, 0x01, 0x02, 0x0b, 0x09, 0x03, 0x05,
-0x05, 0x03, 0xe5, 0x01, 0x05, 0xe6, 0x03, 0x06,
-0x01, 0xe5, 0xe5, 0x0a, 0xe5, 0x08, 0x27, 0x32,
-0xe5, 0x03, 0x03, 0x01, 0xe5, 0xe5, 0x08, 0x07,
-0x27, 0x27, 0x0b, 0x0b, 0xe5, 0xe5, 0x0c, 0x01,
-0x04, 0x04, 0x1a, 0xe5, 0xe5, 0x08, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0xe5, 0x05,
-0x01, 0xe6, 0x0f, 0x02, 0x0a, 0x01, 0xe5, 0x05,
-0x02, 0x1a, 0x01, 0xe5, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6,
-0x01, 0x01, 0xe5, 0xe7, 0x0b, 0xe5, 0x01, 0xe5,
-0x0a, 0xe5, 0xe5, 0x08, 0x03, 0x13, 0x05, 0x03,
-0xe5, 0x03, 0x01, 0x25, 0x01, 0xe5, 0x07, 0x04,
-0x03, 0x0d, 0x01, 0x05, 0xe6, 0x04, 0xe5, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x04, 0x01, 0xe5, 0x01,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x06, 0xe6, 0x05,
-0xe5, 0xe6, 0xe5, 0x04, 0xe5, 0x0a, 0x09, 0x05,
-0x09, 0xe5, 0x02, 0x05, 0xe5, 0x07, 0x08, 0x05,
-0x05, 0xe6, 0x02, 0x01, 0x01, 0x05, 0x01, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0xe5, 0x02, 0x02, 0x01,
-0x0e, 0xe8, 0x03, 0x08, 0x01, 0x07, 0x02, 0x05,
-0x14, 0x05, 0x05, 0x09, 0x01, 0x07, 0x01, 0x06,
-0xe5, 0xe6, 0x04, 0xe5, 0xe5, 0x0f, 0xe6, 0x08,
-0x03, 0x01, 0x09, 0x03, 0x01, 0xe5, 0x0c, 0x08,
-0x05, 0x02, 0x02, 0x05, 0x09, 0x04, 0x05, 0x06,
-0x01, 0xe5, 0x01, 0x0e, 0x03, 0x04, 0x08, 0x01,
-0x07, 0x02, 0x02, 0xe5, 0x04, 0x09, 0x06, 0x02,
-0x02, 0x05, 0x02, 0x13, 0x03, 0x07, 0xe6, 0x01,
-0x01, 0x02, 0x0b, 0x02, 0xe6, 0x02, 0x08, 0x01,
-0xe5, 0x0c, 0x19, 0x0f, 0x1a, 0x05, 0x01, 0xe5,
-0x0b, 0x01, 0x01, 0xe5, 0x02, 0x02, 0x07, 0x02,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x04, 0x04, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x02,
-0x01, 0x0b, 0x02, 0x01, 0x01, 0x07, 0x14, 0x0c,
-0x01, 0x05, 0x07, 0xe5, 0x06, 0x03, 0x0c, 0xe6,
-0x06, 0xe6, 0x13, 0x01, 0x02, 0xe6, 0x06, 0x24,
-0xe5, 0x01, 0x02, 0x04, 0x02, 0x12, 0x01, 0x02,
-0xe5, 0xe5, 0x06, 0x08, 0x07, 0x08, 0xe6, 0xe6,
-0x08, 0x14, 0x01, 0x07, 0x01, 0x0e, 0x02, 0xe7,
-0x0f, 0x0f, 0x19, 0xe5, 0xe6, 0x03, 0x08, 0x06,
-0x10, 0x0e, 0xe5, 0x03, 0x08, 0x01, 0x1f, 0xe6,
-0xe5, 0x03, 0x0a, 0x02, 0x01, 0xe5, 0x01, 0x0c,
-0x16, 0xe5, 0x07, 0xe5, 0x03, 0x05, 0x01, 0xe6,
-0x03, 0x01, 0x15, 0x08, 0x04, 0x0e, 0xe5, 0xe6,
-0x11, 0x01, 0x02, 0xe5, 0x1b, 0xe5, 0x06, 0x03,
-0x05, 0x05, 0x0b, 0x1d, 0xe7, 0xe6, 0x06, 0x03,
-0x0d, 0x0e, 0x0b, 0x01, 0x01, 0xe6, 0x02, 0x01,
-0xe7, 0x05, 0x1d, 0x11, 0x02, 0x28, 0x06, 0x03,
-0x07, 0xe5, 0x01, 0x0b, 0x18, 0x06, 0x06, 0x07,
-0x03, 0xe5, 0x1e, 0x01, 0x07, 0x07, 0x0c, 0x07,
-0x02, 0xe5, 0xe5, 0x02, 0x02, 0xe6, 0x06, 0x15,
-0x05, 0x02, 0xe5, 0x1c, 0x05, 0x10, 0x05, 0x04,
-0x05, 0x12, 0x01, 0x15, 0x09, 0x02, 0xe5, 0x0b,
-0x07, 0x0e, 0x04, 0xe5, 0x02, 0x02, 0x10, 0x01,
-0xe5, 0xe5, 0xe5, 0x0b, 0xe6, 0x01, 0x01, 0x1d,
-0xe6, 0xe5, 0xe5, 0x0f, 0x09, 0x05, 0xe6, 0x06,
-0xe5, 0x04, 0x03, 0x0b, 0x0b, 0x07, 0xe5, 0x03,
-0x0a, 0x02, 0x01, 0x07, 0x04, 0xe8, 0x11, 0x01,
-0x0d, 0x05, 0x04, 0x09, 0x02, 0x01, 0x05, 0x03,
-0xe5, 0x0e, 0x04, 0x0e, 0x03, 0x0a, 0xe5, 0xe6,
-0x01, 0x0e, 0x06, 0xe5, 0xe5, 0x0f, 0x02, 0x12,
-0x03, 0x10, 0x08, 0xe6, 0x10, 0x02, 0x03, 0xe5,
-0xe5, 0x03, 0x01, 0xe6, 0x02, 0x03, 0x07, 0x0b,
-0x07, 0x01, 0x12, 0x02, 0x09, 0xe5, 0x04, 0x0a,
-0x08, 0x05, 0x0b, 0xe5, 0xe7, 0x17, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x04, 0x02, 0x02, 0xe5, 0x06,
-0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5, 0x04, 0x17,
-0xe5, 0x01, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0x06,
-0xe5, 0x0a, 0x08, 0xe5, 0x05, 0xe5, 0x01, 0x05,
-0xe6, 0x09, 0xe5, 0x09, 0x09, 0x10, 0x0b, 0x01,
-0x02, 0x01, 0xe6, 0x03, 0x01, 0x08, 0x0e, 0x01,
-0x0c, 0x07, 0x01, 0x02, 0x08, 0x01, 0x05, 0x13,
-0x06, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x02, 0x01,
-0x03, 0x01, 0xe5, 0x0c, 0x1d, 0x05, 0xe5, 0x01,
-0x01, 0x0b, 0x09, 0x1b, 0x01, 0x04, 0x06, 0x02,
-0x03, 0x0f, 0x06, 0xe5, 0xe5, 0x09, 0x08, 0x06,
-0xe5, 0xe6, 0x04, 0x02, 0x08, 0x03, 0x03, 0x01,
-0x0a, 0x08, 0xe5, 0xe5, 0x03, 0xe6, 0x04, 0xe5,
-0x02, 0xe5, 0x01, 0x02, 0x07, 0x03, 0x03, 0x01,
-0x01, 0x01, 0x07, 0x01, 0x05, 0x03, 0x03, 0x01,
-0x01, 0xe5, 0x03, 0xe5, 0x03, 0x01, 0x03, 0xe5,
-0x05, 0x02, 0x11, 0xe7, 0xe5, 0xe5, 0x01, 0x01,
-0x01, 0x02, 0x06, 0x01, 0x0d, 0x07, 0x01, 0x03,
-0xe5, 0x0d, 0x07, 0x01, 0x04, 0xe6, 0x01, 0x07,
-0x15, 0x09, 0x01, 0x0b, 0x02, 0xe5, 0x01, 0x0d,
-0x09, 0x01, 0x04, 0x01, 0x03, 0x06, 0x09, 0x02,
-0x03, 0x06, 0x25, 0x01, 0x10, 0xe6, 0x08, 0x1d,
-0x02, 0x06, 0x06, 0x02, 0x01, 0xe5, 0x11, 0x02,
-0x10, 0x02, 0x06, 0xe5, 0x01, 0xe5, 0x03, 0x04,
-0x0a, 0x01, 0x1b, 0x09, 0x01, 0x13, 0xe5, 0x07,
-0x10, 0xe5, 0xe5, 0x08, 0x03, 0x06, 0x02, 0xe5,
-0x07, 0x05, 0x09, 0x06, 0x02, 0x02, 0x02, 0x03,
-0x03, 0x05, 0xe5, 0x04, 0x04, 0x09, 0x04, 0xe6,
-0x01, 0x04, 0x01, 0x02, 0x03, 0x05, 0x03, 0x02,
-0x06, 0x01, 0xe7, 0x01, 0x1a, 0x02, 0x13, 0x08,
-0xe5, 0x1e, 0x09, 0x06, 0x0a, 0x01, 0xe6, 0x1e,
-0x13, 0x07, 0x21, 0x07, 0x12, 0x02, 0xe7, 0xe5,
-0x0a, 0x01, 0x15, 0x05, 0x01, 0x07, 0x01, 0xe5,
-0x07, 0x01, 0x13, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x0f, 0xe5, 0xe5, 0x0c, 0x01, 0xe5, 0x16, 0x02,
-0x01, 0x01, 0x04, 0xe5, 0xe5, 0x05, 0x02, 0x01,
-0xe5, 0x08, 0x06, 0x01, 0xe5, 0x05, 0x01, 0x01,
-0x01, 0x02, 0xe5, 0xe6, 0x0c, 0xe5, 0xe6, 0x0c,
-0x01, 0x0d, 0x07, 0x0c, 0x04, 0x09, 0x01, 0x13,
-0x09, 0x07, 0x01, 0x0d, 0xe6, 0x01, 0x0d, 0x01,
-0x03, 0xe7, 0x05, 0xe7, 0x05, 0xe6, 0xe5, 0x04,
-0xe8, 0xe5, 0x03, 0xe6, 0x01, 0x01, 0x03, 0x02,
-0x06, 0xe5, 0xe6, 0xe5, 0x02, 0xe8, 0x06, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0x02, 0x13, 0xe5, 0xe5,
-0x02, 0xe5, 0xe5, 0x05, 0x04, 0x01, 0x01, 0x04,
-0x02, 0x01, 0xe5, 0x07, 0x01, 0xe5, 0x08, 0xe5,
-0x0e, 0x01, 0x07, 0x01, 0x0e, 0xe5, 0xe6, 0x14,
-0xe5, 0x06, 0x01, 0x07, 0x01, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0x04, 0x03, 0x02, 0x07, 0x01,
-0x09, 0xe5, 0xe5, 0x08, 0x0e, 0xe5, 0x01, 0xe5,
-0x0a, 0x08, 0x09, 0x01, 0x02, 0x02, 0x01, 0x07,
-0x01, 0xe6, 0xe6, 0x02, 0xe5, 0x01, 0xe5, 0xe6,
-0x03, 0xe6, 0xe5, 0x02, 0x01, 0x07, 0xe6, 0x0a,
-0x01, 0x0e, 0xe8, 0x13, 0x05, 0x03, 0xe6, 0x02,
-0x03, 0x02, 0x04, 0xe5, 0xe5, 0xe5, 0xe6, 0x01,
-0x01, 0xe5, 0x01, 0x01, 0xe5, 0x01, 0xe5, 0x01,
-0x01, 0xe5, 0x02, 0x01, 0x07, 0xe6, 0x04, 0x06,
-0x0e, 0x02, 0xe5, 0x01, 0x07, 0x16, 0x0d, 0xe5,
-0x03, 0x02, 0xe5, 0x08, 0xe5, 0x05, 0x02, 0x10,
-0x02, 0x06, 0x02, 0x0c, 0xe6, 0xe6, 0x10, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x01,
-0x05, 0x01, 0x04, 0x02, 0x01, 0x04, 0x04, 0x01,
-0x02, 0x01, 0x01, 0xe7, 0x06, 0x01, 0x03, 0x03,
-0x01, 0x04, 0x02, 0x01, 0xe5, 0x0a, 0xe6, 0xe5,
-0x20, 0xe5, 0x07, 0xe5, 0x05, 0x02, 0x05, 0x04,
-0xe5, 0xe5, 0x03, 0x01, 0x11, 0x09, 0x0e, 0x05,
-0xe5, 0x0a, 0x07, 0x0a, 0x03, 0x01, 0x01, 0x03,
-0x01, 0x06, 0xe5, 0x01, 0x0a, 0x0e, 0x13, 0x12,
-0xe9, 0x03, 0x05, 0x16, 0x05, 0x02, 0x11, 0x02,
-0x01, 0x03, 0x07, 0x02, 0x03, 0x11, 0x13, 0x03,
-0xe5, 0x0a, 0xe7, 0x03, 0x0e, 0x04, 0x0b, 0xe7,
-0xe5, 0x05, 0xe7, 0x03, 0x02, 0x01, 0x07, 0x01,
-0x05, 0x01, 0xe5, 0x16, 0xe5, 0x02, 0xe5, 0x35,
-0x08, 0x01, 0x03, 0x05, 0x01, 0x08, 0xe5, 0x03,
-0x1e, 0xe8, 0x07, 0x03, 0x05, 0x04, 0xe5, 0x02,
-0x02, 0xe7, 0x01, 0x05, 0xe5, 0x02, 0xe6, 0x06,
-0x01, 0xe6, 0x02, 0x0d, 0x05, 0x0f, 0x11, 0xe9,
-0x20, 0x09, 0x0c, 0x06, 0x01, 0x01, 0x02, 0x0b,
-0x02, 0x05, 0x11, 0x0c, 0x02, 0xe5, 0x0b, 0x16,
-0x02, 0x03, 0x02, 0x05, 0x0a, 0xe5, 0x03, 0x01,
-0x0a, 0x05, 0xe6, 0xe5, 0x07, 0x15, 0x02, 0xe5,
-0x0c, 0xe5, 0x15, 0x02, 0x07, 0x03, 0xe5, 0x08,
-0x07, 0x02, 0x0b, 0x02, 0x15, 0x0a, 0xe6, 0xe5,
-0x03, 0x05, 0x05, 0x24, 0x06, 0xe5, 0xe6, 0x03,
-0x09, 0x03, 0x04, 0x25, 0x0e, 0x05, 0x02, 0x01,
-0x02, 0x07, 0x02, 0x0f, 0x02, 0x08, 0x04, 0x02,
-0x01, 0x04, 0xe5, 0x03, 0xe5, 0x20, 0xe7, 0x08,
-0x0f, 0x01, 0x0d, 0x01, 0x01, 0x03, 0x04, 0xe5,
-0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x08, 0x09, 0x23,
-0x01, 0xe5, 0x01, 0x15, 0x1d, 0x04, 0x05, 0x0a,
-0x03, 0x06, 0x22, 0xe6, 0xe5, 0x0c, 0x09, 0x09,
-0x18, 0xe6, 0x03, 0x02, 0xe6, 0xe5, 0xe5, 0x02,
-0x03, 0xe5, 0x05, 0x07, 0xe6, 0x06, 0x01, 0x08,
-0xe5, 0xe5, 0x01, 0xe5, 0x03, 0x08, 0x09, 0xe5,
-0x07, 0xe5, 0x17, 0xe5, 0x03, 0x05, 0xe5, 0x06,
-0x01, 0xe5, 0x0e, 0x05, 0xe5, 0x02, 0x06, 0x01,
-0x02, 0xe5, 0xe6, 0x03, 0x08, 0x05, 0xe5, 0x03,
-0x04, 0xe5, 0x02, 0x03, 0xe5, 0x08, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x01, 0x01, 0xe5, 0xe6, 0xe5,
-0x0b, 0x12, 0x04, 0xe5, 0x02, 0x01, 0x02, 0x01,
-0x01, 0x02, 0x0a, 0x06, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0x09, 0x02, 0x06, 0x04, 0x01, 0x07,
-0x0a, 0x01, 0x10, 0x0d, 0x03, 0xe8, 0x04, 0x05,
-0xe5, 0x08, 0x01, 0x06, 0x02, 0x03, 0x01, 0xe6,
-0xe6, 0xe6, 0xe6, 0x04, 0x02, 0xe5, 0x01, 0x01,
-0x11, 0x04, 0x10, 0x06, 0x05, 0xe6, 0x01, 0xe5,
-0x01, 0x07, 0xe7, 0x02, 0x05, 0x01, 0x01, 0x01,
-0x01, 0xe6, 0x05, 0x01, 0xe5, 0x01, 0x05, 0x05,
-0x01, 0xe6, 0x01, 0x01, 0x01, 0x09, 0x07, 0x04,
-0x01, 0x0a, 0x03, 0x03, 0xe5, 0x03, 0x02, 0xe5,
-0x01, 0xe5, 0x0b, 0x09, 0x01, 0x09, 0x07, 0x01,
-0x02, 0x01, 0xe5, 0x02, 0x09, 0x01, 0x07, 0x06,
-0x01, 0xe5, 0x02, 0x02, 0x0e, 0x05, 0x05, 0x02,
-0x02, 0xe5, 0x0c, 0x09, 0x01, 0x07, 0x09, 0x01,
-0xe6, 0x01, 0xe5, 0xe5, 0x0a, 0x01, 0x07, 0x05,
-0xe5, 0x03, 0x03, 0xe6, 0x0a, 0x05, 0xe5, 0x08,
-0x03, 0xe5, 0x07, 0x13, 0x09, 0xe5, 0x04, 0x04,
-0x04, 0x02, 0x0b, 0x09, 0x09, 0x02, 0x1a, 0xe9,
-0x0b, 0x13, 0x04, 0x0a, 0x01, 0xe5, 0x07, 0xe6,
-0x08, 0xe6, 0x06, 0xe6, 0x03, 0x20, 0x01, 0xe7,
-0x0d, 0x09, 0x09, 0x06, 0x02, 0xe5, 0x07, 0x06,
-0x04, 0x09, 0x04, 0x01, 0x02, 0xe5, 0xe5, 0x05,
-0x09, 0x0d, 0x04, 0x27, 0x0c, 0x08, 0xe5, 0x0a,
-0x09, 0x1d, 0x08, 0x01, 0xe5, 0xe5, 0x2e, 0x0b,
-0x09, 0x0b, 0x1b, 0x08, 0x01, 0x01, 0x01, 0x1e,
-0x0c, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0x01,
-0x06, 0xe5, 0xe5, 0x08, 0x01, 0x16, 0x01, 0x09,
-0xe6, 0x19, 0x0a, 0x01, 0x03, 0x01, 0x01, 0x02,
-0x01, 0xe5, 0xe7, 0x06, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x08, 0xe5, 0xe5, 0x1e, 0x01, 0xe6, 0x07,
-0x0c, 0xe5, 0x05, 0x08, 0x03, 0x01, 0x09, 0x06,
-0x02, 0x01, 0x07, 0x01, 0x04, 0x01, 0x04, 0x1f,
-0x03, 0xe6, 0x12, 0xe7, 0x06, 0x09, 0xe6, 0xe5,
-0x03, 0xe7, 0xe5, 0x02, 0xe5, 0xe5, 0x01, 0x01,
-0x04, 0xe7, 0xe5, 0x02, 0xe7, 0x05, 0x02, 0x08,
-0xe5, 0x07, 0xe5, 0x06, 0xe8, 0x0f, 0x03, 0x01,
-0x08, 0x01, 0x01, 0x06, 0x03, 0xe5, 0x02, 0xe6,
-0xe6, 0x09, 0xe5, 0x04, 0xe5, 0xe5, 0x09, 0x22,
-0xe5, 0xe5, 0x0f, 0x04, 0xe5, 0x08, 0xe5, 0xe5,
-0x04, 0xe5, 0x06, 0x01, 0xe5, 0xe6, 0x04, 0x02,
-0x01, 0x04, 0xe7, 0xe5, 0x03, 0xe6, 0x02, 0x05,
-0x1b, 0x01, 0x01, 0x15, 0x01, 0x07, 0x09, 0x09,
-0x01, 0x01, 0x03, 0xe7, 0xe6, 0xe6, 0x03, 0x03,
-0x03, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x1a, 0xe5,
-0x01, 0x10, 0x02, 0x03, 0x05, 0xe5, 0x06, 0xe6,
-0x01, 0x02, 0x01, 0xe6, 0x01, 0x01, 0xe5, 0xe7,
-0x03, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x01, 0xe5,
-0x02, 0x07, 0xe6, 0x1c, 0xe5, 0x01, 0x0d, 0x01,
-0xe5, 0x05, 0x02, 0x09, 0x07, 0x01, 0x12, 0x01,
-0xe5, 0x05, 0xe5, 0xe5, 0x1d, 0x0b, 0xe5, 0xe5,
-0xe5, 0x08, 0xe5, 0x02, 0x02, 0x01, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04,
-0x01, 0x02, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x0b, 0x02,
-0x0b, 0x09, 0x01, 0x09, 0x0f, 0x05, 0xe5, 0x09,
-0xe5, 0x06, 0x03, 0x08, 0x08, 0x15, 0x03, 0x01,
-0xe5, 0x06, 0x15, 0x17, 0x07, 0x02, 0x02, 0x09,
-0xe5, 0x0d, 0x01, 0x05, 0x12, 0x03, 0xe5, 0x02,
-0x0f, 0xe5, 0x05, 0x0b, 0xe5, 0x05, 0x06, 0x08,
-0x03, 0x15, 0x0e, 0x04, 0x08, 0x04, 0x01, 0xe6,
-0x08, 0x12, 0x03, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0xe5, 0x07, 0xe7, 0x0e, 0xe7, 0x03, 0x12,
-0xe5, 0x07, 0x01, 0xe5, 0xe5, 0x0a, 0x05, 0x0d,
-0x01, 0x01, 0x08, 0x01, 0x07, 0xe5, 0x06, 0xe5,
-0xe5, 0x02, 0x0e, 0x27, 0xe6, 0x07, 0x09, 0x04,
-0xe5, 0x02, 0xe5, 0x0c, 0xe5, 0x01, 0x0a, 0x03,
-0xe5, 0x01, 0x04, 0x0a, 0x03, 0x05, 0x11, 0x09,
-0xe5, 0x02, 0x24, 0x16, 0x03, 0x02, 0x01, 0x0a,
-0x05, 0x01, 0x1d, 0x05, 0xe5, 0xe5, 0x02, 0x22,
-0x09, 0x0e, 0xe5, 0x03, 0x03, 0x06, 0x07, 0x21,
-0xe5, 0x01, 0x08, 0x0f, 0x0e, 0x0b, 0x0a, 0xe5,
-0x04, 0x02, 0x01, 0x09, 0x03, 0x19, 0x01, 0x06,
-0x02, 0x13, 0x04, 0x19, 0xe5, 0x04, 0x02, 0x02,
-0x19, 0x1b, 0x05, 0xe7, 0x04, 0x22, 0x12, 0x09,
-0xe5, 0x05, 0x0e, 0x21, 0x06, 0x03, 0x1a, 0x1d,
-0x03, 0x05, 0x01, 0xe5, 0x11, 0x04, 0x13, 0x01,
-0x05, 0x0b, 0x13, 0x1c, 0x08, 0x01, 0x26, 0x05,
-0xe6, 0xe5, 0xe5, 0x17, 0xe6, 0xe5, 0xe5, 0x02,
-0xe5, 0x15, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x03,
-0xe5, 0x0e, 0x05, 0xe5, 0x01, 0x02, 0xe5, 0x09,
-0xe8, 0xe5, 0x01, 0x01, 0x15, 0x02, 0xe5, 0x01,
-0xe5, 0x01, 0x02, 0xe5, 0x10, 0xe5, 0x03, 0xe5,
-0x11, 0xe5, 0x07, 0x06, 0x01, 0xe5, 0x0a, 0x01,
-0x02, 0xe5, 0x01, 0x04, 0x05, 0xe5, 0xe5, 0xe5,
-0x12, 0x1d, 0x01, 0x01, 0x01, 0xe5, 0x03, 0x01,
-0x05, 0x01, 0x07, 0x09, 0x03, 0x07, 0x08, 0x02,
-0x0a, 0x01, 0x11, 0x1f, 0x01, 0x09, 0x07, 0x01,
-0x07, 0x09, 0x0d, 0x03, 0x02, 0xe5, 0x08, 0x01,
-0x0a, 0x01, 0x09, 0x06, 0xe5, 0xe5, 0x12, 0x01,
-0x03, 0x02, 0xe5, 0xe6, 0x05, 0x01, 0x06, 0xe5,
-0x08, 0x0a, 0x06, 0x01, 0xe5, 0x01, 0x06, 0x02,
-0x04, 0x05, 0x01, 0x01, 0x05, 0x03, 0x03, 0xe6,
-0xe5, 0xe5, 0x10, 0x03, 0x05, 0x01, 0x07, 0x01,
-0x01, 0x02, 0xe7, 0x02, 0x05, 0x03, 0x06, 0x02,
-0x02, 0x01, 0x01, 0xe5, 0x0b, 0x01, 0x07, 0x01,
-0x04, 0x04, 0x05, 0x01, 0x01, 0x13, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x06, 0x02, 0x0a, 0x04,
-0x02, 0xe6, 0x0c, 0x01, 0x07, 0x01, 0x04, 0xe5,
-0xe5, 0x08, 0x01, 0x13, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x05, 0xe6, 0xe5, 0x0f, 0xe5, 0xe7,
-0x07, 0xe5, 0x13, 0x2e, 0x02, 0x02, 0x06, 0x22,
-0x02, 0x4f, 0x09, 0x01, 0x1b, 0xe5, 0x01, 0xe5,
-0x0a, 0x02, 0x09, 0x06, 0x02, 0x09, 0x09, 0x04,
-0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x04, 0xe6,
-0x01, 0x03, 0x05, 0x09, 0x0d, 0xe5, 0xe7, 0x01,
-0x06, 0x02, 0x12, 0xe5, 0x1c, 0x0b, 0x2c, 0x04,
-0xe6, 0x08, 0x13, 0x1d, 0x0b, 0x32, 0x01, 0x01,
-0x0f, 0x10, 0x02, 0x1f, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0x04, 0x1d, 0xe5, 0x01, 0x0d, 0x02, 0x10,
-0x02, 0x19, 0x02, 0x02, 0x06, 0x01, 0xe5, 0x04,
-0xe5, 0xe6, 0x24, 0x0f, 0x04, 0x0e, 0x18, 0x01,
-0x04, 0x07, 0x01, 0x09, 0x21, 0xe5, 0x01, 0xe5,
-0x0c, 0x05, 0xe5, 0xe5, 0x07, 0xe6, 0x04, 0xe5,
-0xe5, 0x06, 0xe6, 0x07, 0xe5, 0x01, 0x05, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x06, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0xe6, 0xe6, 0x0e, 0x03, 0xe5,
-0x04, 0xe5, 0x06, 0x1d, 0x01, 0xe6, 0x04, 0x01,
-0x07, 0x01, 0x0a, 0xe5, 0x15, 0xe5, 0x01, 0x0d,
-0x08, 0x0a, 0x05, 0x02, 0x09, 0x0c, 0x08, 0xe5,
-0xe5, 0x06, 0x01, 0x22, 0x03, 0x0f, 0x05, 0xe5,
-0x0b, 0x04, 0xe6, 0x06, 0x01, 0x0c, 0x01, 0x03,
-0x01, 0xe6, 0xe5, 0x02, 0x01, 0x01, 0x01, 0x22,
-0xe6, 0xe5, 0x0c, 0x06, 0x05, 0x06, 0x02, 0x02,
-0x06, 0x03, 0x0e, 0x02, 0x02, 0xe5, 0x01, 0x01,
-0x07, 0x01, 0x0a, 0x1a, 0xe5, 0x40, 0xe5, 0xe5,
-0x19, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x0b, 0x01,
-0x01, 0xe5, 0x10, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x09, 0x01, 0xe5, 0x04,
-0xe7, 0x06, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01,
-0x0b, 0x01, 0xe5, 0x22, 0x0d, 0x01, 0xe5, 0x08,
-0x03, 0x07, 0x02, 0xe5, 0x18, 0x01, 0x0a, 0x05,
-0xe8, 0x0a, 0x16, 0xe5, 0x21, 0xe5, 0x01, 0x26,
-0x06, 0x01, 0x01, 0xe5, 0x30, 0x06, 0x03, 0x02,
-0x0d, 0x0b, 0x24, 0xe5, 0x03, 0x2c, 0x05, 0x06,
-0x03, 0x04, 0x02, 0xe5, 0x01, 0x05, 0x01, 0x18,
-0x09, 0xe8, 0x04, 0x05, 0x07, 0x0b, 0x1f, 0xe5,
-0x0f, 0x06, 0x03, 0x1b, 0x01, 0x03, 0xe5, 0xe5,
-0x19, 0x07, 0x0b, 0x09, 0x03, 0xe6, 0x07, 0x04,
-0x03, 0x01, 0x24, 0x03, 0x01, 0x03, 0x1a, 0x17,
-0x06, 0x12, 0x1c, 0x0a, 0xe6, 0xe5, 0x05, 0x0e,
-0x06, 0x01, 0x07, 0x09, 0x0d, 0xe5, 0x10, 0x16,
-0x12, 0xe7, 0x12, 0x02, 0x09, 0x09, 0x08, 0xe5,
-0x09, 0xe5, 0x08, 0x04, 0x2c, 0xe6, 0x27, 0x13,
-0xe5, 0xe6, 0x05, 0x33, 0x02, 0x09, 0x01, 0x05,
-0x01, 0x09, 0xe5, 0x07, 0x1b, 0x02, 0x06, 0x09,
-0x22, 0xe8, 0x31, 0x10, 0x08, 0xe5, 0x07, 0xe5,
-0x05, 0x0e, 0x0b, 0xe5, 0xe7, 0x07, 0x15, 0x10,
-0x0e, 0x02, 0xe5, 0x09, 0x09, 0x17, 0x0a, 0xe5,
-0x01, 0xe6, 0x48, 0x09, 0x22, 0xe5, 0x01, 0xe6,
-0x01, 0x01, 0x46, 0xe6, 0x01, 0x04, 0x1f, 0x01,
-0x02, 0x03, 0x04, 0x43, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x0e, 0xe5, 0xe5, 0xe5, 0x08, 0x04, 0x02,
-0xe5, 0x01, 0x45, 0x04, 0x09, 0x0e, 0x02, 0x01,
-0x0b, 0x02, 0xe6, 0xe5, 0x48, 0x01, 0x01, 0x07,
-0x11, 0x14, 0x01, 0x02, 0x48, 0x01, 0x01, 0x05,
-0x03, 0x13, 0x09, 0x02, 0x02, 0xe6, 0x4b, 0x09,
-0x04, 0x0c, 0x01, 0x08, 0x04, 0xe6, 0x01, 0x31,
-0xe5, 0x19, 0x09, 0x05, 0x0b, 0x01, 0x10, 0xe6,
-0x08, 0x47, 0x02, 0x06, 0x02, 0x15, 0x06, 0xe7,
-0x09, 0x01, 0x45, 0xe5, 0x07, 0x1d, 0x03, 0xe5,
-0x07, 0x05, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x04,
-0x01, 0x02, 0x09, 0x05, 0x03, 0x09, 0x0d, 0x01,
-0xe7, 0x01, 0x47, 0x09, 0x22, 0x04, 0xe6, 0x46,
-0x09, 0x28, 0xe5, 0xe6, 0x42, 0x06, 0x02, 0x07,
-0x01, 0x20, 0x03, 0x01, 0x43, 0xe5, 0x08, 0x08,
-0xe5, 0x20, 0x03, 0xe5, 0x41, 0x06, 0x07, 0x02,
-0x28, 0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x03, 0x05, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0xe6, 0xe5, 0x2d, 0xe5, 0x12, 0x13, 0xe6,
-0x1f, 0x02, 0xe5, 0x42, 0x11, 0x01, 0x22, 0xe5,
-0x01, 0x43, 0x13, 0x21, 0xe7, 0xe5, 0x2d, 0x14,
-0x11, 0x02, 0x1c, 0xe5, 0x03, 0x02, 0x4b, 0x01,
-0xe5, 0x05, 0x23, 0xe7, 0xe5, 0x10, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0xe6, 0x06, 0x01, 0x09,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x03, 0xe5, 0x06,
-0x2f, 0x2e, 0x1c, 0x02, 0xe5, 0x1e, 0x28, 0x1e,
-0x10, 0xe6, 0xe6, 0x1a, 0x14, 0x0e, 0x09, 0xe5,
-0x2a, 0x03, 0x02, 0xe6, 0x08, 0x14, 0x19, 0x05,
-0x07, 0x03, 0xe6, 0x06, 0x06, 0x17, 0x06, 0xe7,
-0x3e, 0x0b, 0x0b, 0x22, 0xe9, 0x07, 0x09, 0x09,
-0x10, 0x09, 0x04, 0x01, 0x04, 0xe6, 0x27, 0x0a,
-0x02, 0xe5, 0x29, 0x14, 0x0a, 0x2a, 0x04, 0x02,
-0xe5, 0x0a, 0x12, 0x20, 0x3a, 0xe5, 0xe6, 0x0a,
-0x07, 0x10, 0x18, 0x01, 0x05, 0x0b, 0x08, 0x19,
-0x06, 0xe5, 0xe5, 0x1b, 0x13, 0x0e, 0xe5, 0x0d,
-0x09, 0x21, 0x02, 0x32, 0x1c, 0x2a, 0x01, 0x01,
-0x0a, 0x2f, 0x15, 0x0b, 0x1c, 0xe5, 0xe7, 0x09,
-0x27, 0x41, 0x06, 0xe9, 0x4f, 0xe5, 0xe5, 0x02,
-0xe5, 0x1c, 0xe5, 0x01, 0x01, 0x02, 0x01, 0x4c,
-0xe5, 0x21, 0x01, 0x03, 0xe5, 0xe5, 0x03, 0x0e,
-0xe5, 0x01, 0x01, 0x17, 0xe5, 0x01, 0x01, 0x1d,
-0x03, 0x1b, 0x05, 0x01, 0xe5, 0x01, 0x11, 0xe5,
-0xe5, 0xe5, 0x17, 0xe5, 0xe5, 0xe5, 0x3e, 0x02,
-0xe8, 0x54, 0x04, 0x03, 0x1c, 0x02, 0x02, 0x18,
-0x1d, 0x20, 0x01, 0xe6, 0x17, 0x03, 0x01, 0xe6,
-0x15, 0x01, 0x1b, 0x01, 0x1d, 0x23, 0xe5, 0x01,
-0xe5, 0x16, 0x01, 0x1b, 0x01, 0x22, 0x1f, 0x03,
-0x09, 0x02, 0x4e, 0x1e, 0xe8, 0xe5, 0x59, 0x01,
-0x1d, 0xe7, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x09, 0x03, 0x05, 0x09, 0x0d, 0x01, 0x01,
-0xe5, 0x01, 0x74, 0x04, 0xe6, 0x7a, 0xe5, 0xe5,
-0x79, 0xe5, 0xe6, 0x53, 0x03, 0xe5, 0x1f, 0xe9,
-0x53, 0x01, 0x21, 0xe5, 0x01, 0xe5, 0x08, 0x0b,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x09, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0x02, 0x55,
-0x01, 0x26, 0x55, 0x01, 0x22, 0x03, 0x40, 0x14,
-0x01, 0x23, 0x02, 0x04, 0x50, 0x01, 0x02, 0x22,
-0xe5, 0x01, 0x0e, 0x43, 0x1b, 0x0b, 0xe5, 0x02,
-0xe5, 0x0b, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5,
-0x05, 0x01, 0x07, 0x01, 0x04, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x04, 0xe5, 0xe5,
-0x06, 0x01, 0x02, 0x05, 0x04, 0xe5, 0x53, 0x01,
-0x27, 0xe5, 0x72, 0x04, 0xe7, 0xe5, 0x2f, 0x0e,
-0xe5, 0x11, 0x0a, 0x09, 0x11, 0x03, 0xe5, 0x1b,
-0x1b, 0x1b, 0x01, 0x01, 0x14, 0x0e, 0xe5, 0x1c,
-0x13, 0x07, 0x05, 0xe5, 0x16, 0x15, 0x0b, 0xe5,
-0x01, 0xe5, 0x0c, 0xe5, 0xe5, 0x17, 0x02, 0x0a,
-0x06, 0xe5, 0x05, 0x0d, 0x1a, 0x0a, 0x01, 0xe5,
-0x12, 0x17, 0xe5, 0x11, 0x0f, 0x17, 0x12, 0x01,
-0xe6, 0x1b, 0x10, 0x11, 0x19, 0x20, 0xe5, 0x01,
-0x1e, 0x20, 0x3e, 0x3f, 0x24, 0x19, 0x02, 0x0a,
-0x01, 0x30, 0xe5, 0xe5, 0x28, 0x0d, 0xe5, 0xe5,
-0x0e, 0x33, 0x2c, 0x08, 0x02, 0xe6, 0x0e, 0x17,
-0x1a, 0x37, 0xe5, 0xe6, 0x02, 0x0b, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x06,
-0xe8, 0x05, 0xe7, 0x05, 0xe7, 0x07, 0xe5, 0x07,
-0xe5, 0x0b, 0xe6, 0xe6, 0x0f, 0x09, 0x09, 0x07,
-0x01, 0x09, 0x09, 0x01, 0x05, 0x01, 0x01, 0x07,
-0x01, 0x09, 0x07, 0x01, 0x01, 0x0b, 0xe6, 0xe5,
-0x0e, 0x0a, 0x03, 0x04, 0xe5, 0x07, 0x0a, 0x07,
-0x02, 0x01, 0x02, 0x04, 0x09, 0x05, 0xe5, 0x01,
-0x04, 0x04, 0x10, 0x01, 0x11, 0x4b, 0x1c, 0xe6,
-0xe5, 0x18, 0x09, 0x04, 0x06, 0x07, 0x01, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x02, 0x0b, 0x02, 0xe5,
-0x0c, 0xe6, 0x05, 0xe6, 0x01, 0x05, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5, 0x06, 0x04,
-0x03, 0x02, 0x03, 0x09, 0x09, 0x01, 0x07, 0x01,
-0x07, 0x09, 0x01, 0x05, 0x03, 0x09, 0x09, 0x09,
-0x09, 0x11, 0x02, 0x0e, 0xe5, 0x07, 0x09, 0x09,
-0xe5, 0x07, 0x0b, 0x02, 0x06, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x0e, 0xe5, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x09, 0x09, 0x09, 0x0f, 0xe5, 0x01, 0x12,
-0x06, 0x09, 0xe5, 0x11, 0x05, 0x05, 0xe5, 0x37,
-0xe5, 0x0d, 0x06, 0x02, 0x09, 0x09, 0x09, 0x08,
-0x02, 0x09, 0x09, 0x09, 0x09, 0x0f, 0xe8, 0x3e,
-0x1d, 0x20, 0x10, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x09, 0x09, 0x09, 0x0d, 0x02, 0xe5, 0x03,
-0x04, 0x1f, 0x33, 0x20, 0x3f, 0x3b, 0xe5, 0xe5,
-0x17, 0x1d, 0x08, 0x02, 0x33, 0x05, 0xe6, 0x03,
-0x13, 0x06, 0x02, 0x13, 0x06, 0x0b, 0x16, 0x06,
-0x13, 0x01, 0xe5, 0x03, 0x4c, 0x0c, 0x1b, 0xe5,
-0x01, 0x17, 0x08, 0x14, 0x08, 0xe5, 0x1e, 0x13,
-0x06, 0x01, 0xe6, 0x20, 0x1d, 0x34, 0x06, 0xe5,
-0xe5, 0x48, 0x15, 0x07, 0x12, 0xe8, 0x13, 0x02,
-0xe5, 0x04, 0xe8, 0x04, 0x09, 0x02, 0xe5, 0x04,
-0xe6, 0x08, 0xe6, 0x06, 0x09, 0x02, 0xe5, 0x04,
-0xe6, 0x06, 0x09, 0xe8, 0x0d, 0xe5, 0x06, 0xe6,
-0x05, 0xe7, 0x08, 0x07, 0xe6, 0x05, 0xe5, 0x01,
-0xe5, 0x05, 0x02, 0x09, 0x07, 0xe6, 0x05, 0x02,
-0x0e, 0xe8, 0x25, 0x18, 0x3b, 0x01, 0xe5, 0x14,
-0x05, 0x03, 0x09, 0x01, 0x07, 0x05, 0x03, 0x07,
-0x03, 0x01, 0x03, 0x05, 0x03, 0x0d, 0x01, 0x03,
-0x0c, 0x01, 0xe6, 0x0a, 0x03, 0x02, 0x01, 0x06,
-0xe5, 0x07, 0x02, 0x03, 0x03, 0x01, 0x07, 0x08,
-0x0b, 0x04, 0x05, 0x03, 0x0e, 0x04, 0xe9, 0x03,
-0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff,
diff --git a/board/esd/cpci405/fpgadata_cpci405ab.c b/board/esd/cpci405/fpgadata_cpci405ab.c
deleted file mode 100644 (file)
index acbc696..0000000
+++ /dev/null
@@ -1,2569 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x73, 0xed, 0xb5, 0x40,
-0x00, 0x03, 0x63, 0x70, 0x63, 0x69, 0x34, 0x30,
-0x35, 0x5f, 0x32, 0x5f, 0x30, 0x35, 0x2e, 0x62,
-0x69, 0x74, 0x00, 0xed, 0xbd, 0x0b, 0x74, 0x1c,
-0xd5, 0x95, 0x36, 0xba, 0xeb, 0x54, 0xb5, 0x54,
-0xea, 0x6e, 0xa9, 0x4b, 0x2d, 0x89, 0x08, 0xfc,
-0xa0, 0xd4, 0x92, 0x8d, 0xec, 0xb4, 0xe4, 0x76,
-0xdb, 0x18, 0x23, 0x84, 0x54, 0x6e, 0x09, 0xa7,
-0x01, 0x83, 0x15, 0x1e, 0x09, 0x33, 0xc3, 0xcd,
-0xb4, 0xc1, 0x99, 0xf1, 0xcc, 0x72, 0x66, 0x84,
-0x93, 0x95, 0x31, 0x24, 0x93, 0x39, 0x7a, 0xd8,
-0x16, 0x96, 0xc1, 0x6d, 0xe3, 0x99, 0x98, 0xc0,
-0xe5, 0x6f, 0x3f, 0x48, 0x0c, 0x71, 0xf2, 0xb7,
-0x65, 0xc0, 0xe2, 0x31, 0x50, 0x12, 0xc2, 0xb4,
-0x1f, 0xd8, 0x0a, 0xf0, 0xcf, 0x98, 0xc7, 0x98,
-0x36, 0x51, 0x88, 0x00, 0x01, 0xf2, 0xe3, 0x27,
-0x32, 0x96, 0xad, 0xbb, 0xcf, 0x39, 0x55, 0xd5,
-0x2d, 0xc9, 0x64, 0x32, 0x6b, 0xcd, 0xba, 0x8f,
-0x75, 0xe9, 0xac, 0x95, 0xec, 0x94, 0x8e, 0xab,
-0xcf, 0xa9, 0x53, 0x67, 0x7f, 0xfb, 0xdb, 0xfb,
-0x3b, 0xa7, 0x21, 0xcf, 0x37, 0x2c, 0xfe, 0x03,
-0x20, 0x2d, 0x83, 0xc2, 0xbb, 0x9b, 0xef, 0xfe,
-0x9b, 0xf9, 0xa1, 0x2b, 0xff, 0x32, 0xfc, 0x97,
-0xa1, 0x2b, 0xab, 0xff, 0xee, 0xee, 0xe5, 0x70,
-0x17, 0xb8, 0xc3, 0xdf, 0x9f, 0x17, 0xfa, 0xc1,
-0x3d, 0x73, 0xe7, 0xcf, 0x87, 0xbb, 0xc1, 0x13,
-0x0e, 0x85, 0xe6, 0xcf, 0x09, 0x5d, 0x39, 0x27,
-0x7c, 0x15, 0x2c, 0x87, 0xbc, 0xb9, 0x57, 0xd6,
-0xcc, 0x9b, 0x5b, 0x13, 0x5a, 0x08, 0xdf, 0x05,
-0xd8, 0xd9, 0x3c, 0x86, 0x9f, 0x27, 0x1f, 0xbe,
-0xfd, 0xaf, 0x42, 0x40, 0x25, 0x00, 0xc8, 0x0d,
-0x49, 0x31, 0xf6, 0xbf, 0x6a, 0x48, 0xd2, 0x25,
-0xa0, 0xf5, 0x55, 0x21, 0x30, 0xd9, 0xff, 0x07,
-0xeb, 0xef, 0x79, 0x21, 0xd0, 0xb3, 0xff, 0xbf,
-0x14, 0x02, 0x03, 0x9a, 0xa0, 0xe2, 0x6e, 0xf0,
-0x87, 0xe0, 0xcb, 0x3e, 0x12, 0x28, 0x94, 0x1b,
-0x7f, 0x4a, 0x1b, 0xf2, 0xa5, 0x4d, 0xd8, 0xe7,
-0x4f, 0x6f, 0xe3, 0xff, 0x63, 0x4d, 0x94, 0xff,
-0xae, 0x36, 0xfc, 0xbf, 0xc7, 0xfc, 0x50, 0x8c,
-0xa6, 0xc4, 0x9e, 0x44, 0x31, 0xb8, 0xc6, 0x1b,
-0xf5, 0x7d, 0xfc, 0x3e, 0xa6, 0xeb, 0x82, 0x31,
-0x46, 0xeb, 0x0e, 0xfb, 0x4e, 0xc9, 0xaf, 0x47,
-0x8e, 0x42, 0x67, 0xff, 0xd2, 0xb3, 0x72, 0xd0,
-0x3c, 0x0a, 0xf3, 0x52, 0xdf, 0x1b, 0x69, 0x18,
-0x86, 0x66, 0xde, 0x71, 0x6d, 0xc8, 0xfb, 0x7c,
-0x7b, 0xd5, 0x6b, 0x9e, 0x93, 0x24, 0x4d, 0x37,
-0xf6, 0x95, 0xf7, 0x79, 0x36, 0x93, 0x6b, 0x8d,
-0x8d, 0xfd, 0x5f, 0xff, 0xdf, 0x4b, 0xba, 0x49,
-0x5a, 0xe1, 0x0f, 0xaf, 0xc3, 0x75, 0xb8, 0x63,
-0x2f, 0x04, 0x53, 0x9e, 0x50, 0xdc, 0xec, 0x68,
-0x33, 0x2a, 0x53, 0xd8, 0x66, 0x09, 0x6d, 0x83,
-0x4a, 0x53, 0x0d, 0x45, 0xde, 0x97, 0xf8, 0x7d,
-0xcc, 0xc2, 0xdd, 0xca, 0xf3, 0x50, 0x6d, 0x7a,
-0x92, 0xe4, 0x03, 0xe8, 0x24, 0x01, 0xd3, 0x13,
-0x9f, 0xbd, 0x12, 0x3c, 0x78, 0x45, 0x4d, 0x92,
-0x61, 0x25, 0xc6, 0x3b, 0x5d, 0x38, 0x04, 0xe7,
-0x48, 0x9d, 0xe9, 0x4b, 0xca, 0xbf, 0x85, 0x43,
-0x50, 0x63, 0xfa, 0x34, 0x79, 0x25, 0x74, 0xa2,
-0x31, 0x35, 0x19, 0xe8, 0x57, 0xf8, 0x7d, 0xd2,
-0xd2, 0x0b, 0x30, 0x46, 0xea, 0xcd, 0x8d, 0xc3,
-0x0d, 0xc3, 0xa5, 0xcc, 0xf0, 0xf5, 0xcb, 0xbb,
-0xe1, 0x0f, 0x70, 0xb5, 0x79, 0xf9, 0xb0, 0x3c,
-0x02, 0xfc, 0x3e, 0x86, 0xb6, 0x1b, 0xce, 0x49,
-0x75, 0x66, 0x30, 0x29, 0x97, 0xc1, 0x3b, 0x6a,
-0xd8, 0xf4, 0x26, 0xe5, 0xc3, 0xea, 0x21, 0x8d,
-0xdf, 0xb9, 0x5f, 0xd1, 0x59, 0x9b, 0x94, 0x2b,
-0x08, 0xcf, 0xc3, 0x1c, 0xb3, 0x74, 0x38, 0x37,
-0x56, 0xfc, 0xea, 0xe1, 0x72, 0x53, 0x8d, 0x93,
-0x51, 0xf5, 0x28, 0x9d, 0xc2, 0x7a, 0x78, 0x0a,
-0x5f, 0x20, 0xf6, 0x5d, 0xae, 0x25, 0x80, 0xe3,
-0xc2, 0x51, 0x04, 0x74, 0xf2, 0x50, 0xaf, 0x6e,
-0x96, 0x86, 0xc8, 0x61, 0xd8, 0x01, 0xde, 0x1e,
-0x4f, 0x88, 0x8c, 0xe0, 0xf3, 0xc4, 0x8f, 0x2e,
-0x4d, 0x5f, 0xb4, 0x8f, 0x56, 0xa5, 0xd5, 0xd5,
-0x64, 0x15, 0xb4, 0x6d, 0x59, 0x96, 0x56, 0xff,
-0x2c, 0x70, 0x1c, 0xf0, 0xca, 0xa0, 0xe7, 0x3e,
-0x72, 0x4c, 0xdc, 0x27, 0xaa, 0x16, 0xd0, 0xd3,
-0x50, 0x3b, 0xa8, 0x3e, 0x1b, 0x20, 0xbd, 0x6f,
-0x48, 0xe1, 0xc1, 0xe0, 0x14, 0xf9, 0x48, 0xde,
-0x6f, 0x1f, 0xaf, 0x3d, 0xe1, 0xab, 0x91, 0x5f,
-0x17, 0x2f, 0x8e, 0x31, 0xed, 0x05, 0x63, 0x0c,
-0xea, 0xdf, 0xf4, 0xe1, 0xb8, 0x60, 0x4c, 0xad,
-0xff, 0x37, 0xdf, 0x26, 0x79, 0x14, 0x0e, 0x69,
-0xd7, 0xf4, 0x5e, 0x8e, 0x7d, 0xf6, 0xf3, 0x71,
-0xed, 0x72, 0x7d, 0x8a, 0x8f, 0xa5, 0xee, 0x4d,
-0xfa, 0x54, 0x5b, 0x1a, 0xce, 0x41, 0x78, 0xb8,
-0x63, 0x2b, 0xf9, 0xac, 0xfd, 0xe3, 0x9e, 0xf0,
-0x01, 0x1c, 0xd7, 0x47, 0x62, 0xbe, 0xa2, 0x85,
-0x8f, 0xc2, 0x3a, 0xa5, 0x2a, 0xa5, 0xfe, 0x80,
-0xf4, 0xc3, 0xbe, 0x70, 0x59, 0x4a, 0x6d, 0x22,
-0xb5, 0x46, 0x5b, 0xa8, 0xec, 0xa0, 0xa7, 0x99,
-0xbc, 0x2e, 0x9e, 0xb3, 0x09, 0x8f, 0xc1, 0x4f,
-0x69, 0x30, 0xad, 0xde, 0x17, 0x78, 0x5d, 0xdf,
-0x4b, 0x13, 0x69, 0xf7, 0xea, 0xc8, 0xf4, 0xd4,
-0x2f, 0x92, 0x65, 0x83, 0x9e, 0xd5, 0x64, 0x18,
-0xf8, 0xf3, 0x89, 0x16, 0x1f, 0x86, 0x87, 0x70,
-0xec, 0xd1, 0x10, 0x39, 0xd0, 0xbe, 0x17, 0x74,
-0xd3, 0xad, 0x91, 0x25, 0xd0, 0x06, 0x31, 0xd3,
-0x13, 0xf2, 0xbf, 0x2e, 0xe6, 0x7d, 0xb0, 0x70,
-0x17, 0xbc, 0x0d, 0x75, 0x74, 0x49, 0x42, 0x3e,
-0x0b, 0xa7, 0x20, 0x4c, 0x1f, 0x4c, 0xb4, 0x55,
-0xc2, 0x47, 0x68, 0x5c, 0x9e, 0x90, 0xbf, 0x10,
-0xdf, 0x15, 0x85, 0x34, 0x0c, 0x42, 0x2d, 0xf8,
-0xa8, 0x9c, 0x56, 0x47, 0x8c, 0x3a, 0x90, 0xa8,
-0x9c, 0x80, 0x11, 0xa8, 0x83, 0xa5, 0x54, 0x7e,
-0x1d, 0xf8, 0x7d, 0x54, 0x6d, 0x00, 0xce, 0xc2,
-0x4f, 0x0c, 0x6f, 0xbc, 0xa8, 0x02, 0xde, 0xd2,
-0xc2, 0xc6, 0xd1, 0xb8, 0x3c, 0xa0, 0x9d, 0x85,
-0x3a, 0xc3, 0x13, 0x97, 0x7b, 0xc5, 0x77, 0x51,
-0x74, 0x13, 0xcf, 0x42, 0xb5, 0x91, 0x1f, 0x2f,
-0x5a, 0xae, 0xdc, 0xbf, 0x3d, 0xc0, 0xfe, 0xb4,
-0x13, 0x9e, 0xa5, 0xd5, 0x68, 0x90, 0x18, 0x68,
-0xac, 0x4d, 0xa9, 0xab, 0x42, 0x62, 0x6d, 0x54,
-0x8d, 0x78, 0xf3, 0x1e, 0x26, 0xac, 0x0d, 0x19,
-0x80, 0x67, 0x75, 0xd6, 0x26, 0xb2, 0x5f, 0xcc,
-0x85, 0x5a, 0xdc, 0x0e, 0x7b, 0x94, 0x60, 0x34,
-0xcf, 0x4f, 0x1a, 0x41, 0xaa, 0xd0, 0xa3, 0x1e,
-0x8d, 0xf4, 0xd1, 0x3d, 0x7a, 0x90, 0x19, 0x11,
-0xee, 0x46, 0xa0, 0x3b, 0x7f, 0x91, 0x31, 0x02,
-0xd5, 0xc5, 0xde, 0x35, 0x72, 0x99, 0x71, 0x07,
-0x74, 0x95, 0xf8, 0x5c, 0x77, 0x9f, 0x30, 0x46,
-0x48, 0x1d, 0x6c, 0xa4, 0xf2, 0xa7, 0x32, 0x9f,
-0xf7, 0xad, 0x25, 0xd8, 0x67, 0xa5, 0xee, 0x3a,
-0xdf, 0xa6, 0x79, 0xa3, 0x70, 0x56, 0xab, 0x6b,
-0xc4, 0xf7, 0x70, 0xa7, 0xc1, 0x8d, 0xb8, 0xfc,
-0x41, 0x4e, 0xb3, 0xe8, 0xcf, 0x00, 0xbc, 0x45,
-0xea, 0x22, 0xbe, 0xf8, 0x26, 0x05, 0x7e, 0xa5,
-0x2e, 0x88, 0x6c, 0xc0, 0x71, 0x55, 0x9e, 0xd7,
-0xeb, 0xae, 0x67, 0x6d, 0xc4, 0x7c, 0x2d, 0xd4,
-0xd2, 0xd0, 0x4d, 0xaa, 0xc1, 0x43, 0xdd, 0xba,
-0xd6, 0xdd, 0x58, 0x59, 0xaa, 0xb6, 0x12, 0xbc,
-0x62, 0x54, 0x6b, 0x1e, 0x4a, 0x8e, 0x88, 0xb1,
-0xab, 0xae, 0x3e, 0x7d, 0x13, 0x04, 0x23, 0x1e,
-0x7f, 0xab, 0x92, 0xd8, 0x06, 0x15, 0x11, 0x55,
-0xdb, 0xde, 0xa7, 0xef, 0xd5, 0x82, 0x8d, 0xd8,
-0xe7, 0x5e, 0xb1, 0xbe, 0x4a, 0x4b, 0xf0, 0x69,
-0x28, 0xfc, 0x69, 0xec, 0xa4, 0xec, 0x21, 0xac,
-0xd8, 0x44, 0x06, 0x14, 0x66, 0xb0, 0xb1, 0x8b,
-0xb9, 0x48, 0x14, 0xef, 0x84, 0xb7, 0xa0, 0x6e,
-0x91, 0x2f, 0x2e, 0xcd, 0x80, 0x0f, 0x61, 0x81,
-0xa1, 0x6c, 0x15, 0xcf, 0x19, 0xaf, 0xc8, 0x83,
-0x62, 0x5d, 0x54, 0xc2, 0x4e, 0xfe, 0xe4, 0x71,
-0xe9, 0x2d, 0xc7, 0x01, 0x3e, 0x67, 0xf8, 0xb0,
-0x0d, 0xf0, 0x2b, 0x71, 0xf9, 0xa0, 0x78, 0x37,
-0x2a, 0xb5, 0x04, 0xa4, 0x70, 0x06, 0x7d, 0xb4,
-0xa1, 0x4c, 0x19, 0x41, 0xb7, 0xec, 0xc5, 0xc9,
-0x85, 0x11, 0xb5, 0x0e, 0xd0, 0x38, 0x68, 0xdd,
-0x47, 0xa9, 0x24, 0x6e, 0xa8, 0xa6, 0x9e, 0x04,
-0xa9, 0x84, 0xb5, 0xad, 0x01, 0xaa, 0x26, 0xc8,
-0x60, 0xf1, 0x8b, 0x46, 0x41, 0x4b, 0x47, 0x82,
-0x1c, 0x14, 0x9e, 0xaa, 0xd2, 0xb5, 0x44, 0x91,
-0xf1, 0x1d, 0xf3, 0x84, 0xb4, 0x0d, 0xb0, 0x07,
-0xf4, 0x1e, 0x37, 0x5b, 0x5f, 0x49, 0xf0, 0x9a,
-0xb3, 0x42, 0xd8, 0xc6, 0x5e, 0x5f, 0x34, 0x17,
-0xaa, 0x52, 0x9e, 0x7b, 0xc8, 0x8b, 0xb4, 0xdd,
-0xd8, 0xd6, 0xe7, 0x6e, 0xce, 0x79, 0x97, 0x3e,
-0x03, 0xf9, 0xe9, 0xbc, 0x66, 0x92, 0x12, 0x73,
-0x5a, 0xa9, 0xd6, 0xd3, 0x57, 0xe9, 0xb5, 0x43,
-0xbe, 0x6b, 0xe4, 0xc7, 0xf4, 0xcf, 0xe9, 0xdc,
-0xc1, 0x99, 0x3f, 0x92, 0x8f, 0xc3, 0xe7, 0x74,
-0x6a, 0xfa, 0xa6, 0xd5, 0xe5, 0x07, 0xc5, 0xfa,
-0x52, 0xf3, 0x77, 0xeb, 0xe7, 0xa0, 0xee, 0x5d,
-0xdf, 0x53, 0xf2, 0xca, 0xd4, 0x30, 0xd4, 0xbd,
-0x95, 0xbf, 0x57, 0x1e, 0x82, 0x2f, 0xa0, 0xce,
-0x2c, 0x48, 0xca, 0xbd, 0x39, 0xc2, 0x6f, 0xb8,
-0x2e, 0x68, 0x63, 0xb4, 0x3e, 0xed, 0x7d, 0x56,
-0xfe, 0xd4, 0x38, 0x13, 0x0f, 0x9f, 0xd9, 0x38,
-0xf2, 0x8d, 0xba, 0xd8, 0x1f, 0xe8, 0xbc, 0x13,
-0xbe, 0x11, 0xb9, 0x5f, 0xcc, 0xd7, 0x2e, 0x69,
-0x03, 0xec, 0x43, 0xbf, 0x51, 0xb9, 0x90, 0x1c,
-0xa1, 0x4f, 0xcd, 0xad, 0x1c, 0xf4, 0x74, 0xb7,
-0x4e, 0x35, 0xf6, 0x26, 0x57, 0x98, 0x9e, 0xab,
-0x8b, 0x9e, 0xb4, 0xfc, 0x18, 0x3c, 0x8a, 0x6d,
-0xaa, 0x4c, 0xec, 0xe1, 0xbb, 0xf0, 0x14, 0x2c,
-0xeb, 0xf3, 0x34, 0x47, 0xee, 0x54, 0xf7, 0x41,
-0x99, 0xe9, 0xb9, 0x27, 0xd2, 0x27, 0x9e, 0x61,
-0x0c, 0xd7, 0xd7, 0x5e, 0x29, 0x68, 0xe6, 0x85,
-0x70, 0x59, 0x25, 0xa5, 0x4a, 0xb3, 0x33, 0x14,
-0x59, 0x89, 0x57, 0x2a, 0xf1, 0x69, 0x90, 0x9f,
-0x89, 0x79, 0xdf, 0x55, 0xf2, 0x02, 0x2e, 0xf3,
-0x7a, 0x33, 0x7f, 0x58, 0x1e, 0x33, 0x86, 0x61,
-0x5e, 0x8f, 0x6f, 0xf8, 0xeb, 0x3f, 0xc6, 0x3e,
-0x87, 0xd1, 0x47, 0xc9, 0x1f, 0xb5, 0xc7, 0xc4,
-0xba, 0x18, 0x52, 0x70, 0x5c, 0xe6, 0x83, 0xc9,
-0xf2, 0x21, 0x03, 0xd7, 0x17, 0x73, 0x71, 0xbb,
-0xe1, 0x0b, 0x99, 0x1b, 0x3b, 0xc5, 0xfa, 0x92,
-0xb4, 0x51, 0x40, 0xdf, 0x62, 0xfa, 0x86, 0xd1,
-0xa5, 0x8c, 0x2a, 0x57, 0x09, 0xe3, 0x88, 0xb8,
-0x12, 0x5b, 0xce, 0xdb, 0xb4, 0x28, 0x2b, 0xe1,
-0x11, 0xf4, 0xc6, 0x9d, 0x49, 0x9c, 0x82, 0x63,
-0xe6, 0x76, 0xe6, 0x06, 0x87, 0x60, 0x3d, 0xe5,
-0x1e, 0x3b, 0x6d, 0xf0, 0xf5, 0x45, 0xa5, 0x95,
-0x20, 0x7c, 0xb8, 0x7f, 0x08, 0xba, 0x3b, 0x7e,
-0x6e, 0xb5, 0xe9, 0xa8, 0xee, 0x59, 0x8f, 0x6d,
-0xc4, 0x7c, 0xa9, 0xc5, 0xf9, 0xdc, 0x6f, 0x4c,
-0x09, 0xfb, 0x87, 0x22, 0x71, 0xd0, 0x8f, 0x79,
-0x42, 0xad, 0x87, 0xa1, 0xd5, 0xc0, 0x91, 0x2e,
-0x20, 0xbd, 0x02, 0x9b, 0x40, 0xfa, 0x31, 0x1f,
-0x97, 0xef, 0xe4, 0x43, 0xa3, 0x74, 0x04, 0xb0,
-0x3f, 0x67, 0xe4, 0x21, 0xe5, 0xe0, 0xca, 0xba,
-0x37, 0x1f, 0x7c, 0xa6, 0x2d, 0x46, 0xf8, 0x77,
-0x25, 0x4a, 0x46, 0xe1, 0x3d, 0xa8, 0xef, 0xf5,
-0x9c, 0x92, 0x47, 0xcd, 0x51, 0xa8, 0xff, 0x8d,
-0xaf, 0xab, 0x6d, 0x74, 0xfb, 0x17, 0x50, 0x8f,
-0xbe, 0xae, 0x68, 0x50, 0x60, 0x01, 0xc3, 0xaf,
-0xcf, 0x8c, 0x79, 0x87, 0x0b, 0x4e, 0xb6, 0xfd,
-0x6b, 0xeb, 0xd1, 0xbf, 0x99, 0xf7, 0x56, 0xfe,
-0x9e, 0xa2, 0x5a, 0xe3, 0x63, 0x6d, 0xde, 0xd1,
-0x60, 0x97, 0xdc, 0x2c, 0x59, 0xf8, 0x75, 0xb8,
-0x7d, 0x9d, 0x51, 0xfe, 0xa6, 0xf7, 0x8c, 0x31,
-0xd5, 0xd8, 0x68, 0xec, 0xe8, 0xf7, 0xfc, 0x90,
-0xfc, 0x2b, 0x7d, 0xa9, 0xf9, 0xeb, 0xfd, 0xea,
-0x19, 0xaa, 0xdb, 0xf8, 0x35, 0x04, 0x3b, 0x42,
-0xe8, 0xe2, 0x42, 0xb0, 0x81, 0xb6, 0xe9, 0xfa,
-0x31, 0xec, 0xaa, 0xd7, 0xdc, 0xab, 0xe8, 0xa9,
-0xe8, 0x3c, 0x08, 0x88, 0x67, 0x68, 0x96, 0x6c,
-0x40, 0x24, 0xd2, 0xcd, 0xbc, 0x24, 0x09, 0xaa,
-0x9d, 0x4a, 0x80, 0x4d, 0xd3, 0x6e, 0x78, 0xde,
-0x35, 0x9b, 0xe1, 0x57, 0xb3, 0x98, 0x77, 0xa3,
-0x64, 0x08, 0x3e, 0x26, 0x61, 0x7c, 0xa3, 0xf0,
-0x4f, 0x87, 0x70, 0x9a, 0xf2, 0x93, 0x0d, 0xc1,
-0xfc, 0x8f, 0x25, 0x3f, 0x02, 0x90, 0x47, 0xcb,
-0xe0, 0xd7, 0x1f, 0xe0, 0x25, 0xb3, 0x60, 0xb8,
-0x61, 0x54, 0xfd, 0x83, 0x3d, 0x29, 0x63, 0xae,
-0x7a, 0x36, 0x5f, 0xdd, 0x0e, 0x7e, 0xd1, 0x43,
-0x6a, 0xf8, 0x70, 0x7e, 0x52, 0xde, 0x00, 0x1f,
-0x2b, 0x0b, 0xf0, 0x9f, 0x17, 0x05, 0xb5, 0x73,
-0x7a, 0xb8, 0x77, 0x43, 0x72, 0x47, 0xdc, 0xc6,
-0xaf, 0x39, 0xda, 0x46, 0xd8, 0x31, 0xdc, 0x31,
-0xea, 0xae, 0xa5, 0x1b, 0xf5, 0xf2, 0x94, 0xeb,
-0x14, 0xa9, 0xa5, 0x2f, 0x99, 0xe5, 0x3d, 0xea,
-0x30, 0x09, 0xdb, 0xf8, 0xb5, 0x14, 0xda, 0x34,
-0xbd, 0x3f, 0xef, 0x39, 0xe2, 0x6b, 0xdf, 0x71,
-0xa2, 0x62, 0x84, 0x84, 0x89, 0xb7, 0xe5, 0x97,
-0xe6, 0xec, 0x3e, 0x75, 0x0f, 0xe9, 0x76, 0xd6,
-0x17, 0xac, 0x4b, 0x94, 0x9d, 0xc8, 0xbb, 0x26,
-0x67, 0x7a, 0xd3, 0x3a, 0x3a, 0x6b, 0x90, 0xdc,
-0x47, 0xa6, 0xc3, 0xde, 0x44, 0xde, 0x40, 0xe5,
-0x7d, 0x44, 0xd5, 0x2c, 0xfc, 0xf2, 0x26, 0xda,
-0x70, 0x38, 0x55, 0x0b, 0x77, 0x14, 0x74, 0x60,
-0x7f, 0xd2, 0xb3, 0x6b, 0x3c, 0x5e, 0x38, 0x7d,
-0xff, 0xcf, 0x5e, 0xf1, 0xd6, 0xc8, 0x9b, 0x6d,
-0xfc, 0xda, 0x4d, 0xc6, 0x56, 0xd4, 0xf7, 0x15,
-0x74, 0xc9, 0xdf, 0xd3, 0xff, 0x49, 0x5d, 0x80,
-0x63, 0xc7, 0x71, 0x9d, 0x83, 0x05, 0x6f, 0x32,
-0xcc, 0x25, 0x16, 0x7e, 0x0d, 0xc1, 0xa1, 0x45,
-0x5d, 0x47, 0xbd, 0x7b, 0xa5, 0x5f, 0xc1, 0xc7,
-0xee, 0x05, 0x47, 0xf2, 0x9f, 0xe9, 0xac, 0x32,
-0x0e, 0x11, 0x7f, 0xbf, 0xb7, 0xcb, 0x33, 0xdb,
-0xc1, 0x2f, 0xd5, 0x07, 0x7a, 0x4a, 0x5d, 0xd5,
-0x3a, 0x95, 0xae, 0xab, 0x28, 0x33, 0x1f, 0x58,
-0x45, 0xa6, 0xea, 0x1b, 0x57, 0x94, 0xf5, 0xab,
-0x73, 0xc9, 0x66, 0x07, 0xbf, 0x4a, 0xaf, 0x48,
-0x94, 0x0d, 0x22, 0xe6, 0x3e, 0x86, 0x50, 0xbb,
-0x6c, 0x50, 0xbd, 0xd7, 0xf8, 0x0e, 0xac, 0xa3,
-0x55, 0x27, 0x3a, 0x7e, 0x44, 0xac, 0x70, 0x2e,
-0x5a, 0x3c, 0x04, 0xbf, 0xc4, 0xf9, 0x2a, 0x4d,
-0x92, 0x0d, 0xf8, 0x42, 0x26, 0xd8, 0x42, 0x5b,
-0x49, 0xda, 0x60, 0xb7, 0x59, 0x99, 0xc4, 0xfb,
-0x08, 0xfc, 0x2a, 0xd9, 0x45, 0x18, 0x5a, 0xad,
-0x4c, 0xc8, 0xbb, 0xd8, 0xb2, 0xa2, 0xde, 0x84,
-0xbc, 0x42, 0x3a, 0xa8, 0xd4, 0xa1, 0x51, 0x54,
-0x63, 0xe3, 0xd7, 0x09, 0xa5, 0x14, 0xea, 0x34,
-0x5f, 0xbb, 0xb4, 0x4c, 0x1b, 0x84, 0x1a, 0x74,
-0xd4, 0x0c, 0xbf, 0x0c, 0xc2, 0x10, 0xcd, 0xc1,
-0xaf, 0x0f, 0xe2, 0x07, 0x12, 0x0b, 0x1a, 0xf3,
-0x7f, 0x76, 0x45, 0x8e, 0xf1, 0x56, 0x3c, 0xdc,
-0xf8, 0x77, 0xf1, 0x45, 0x3f, 0xa7, 0x07, 0x34,
-0xfd, 0xbb, 0x4b, 0xb6, 0x36, 0xb4, 0x5a, 0xf8,
-0xa5, 0xfc, 0x35, 0xdc, 0x4f, 0x03, 0x4d, 0xea,
-0xa3, 0x39, 0x33, 0xe0, 0x7e, 0x23, 0xd0, 0x54,
-0x1a, 0x27, 0x57, 0xc0, 0xfd, 0xe6, 0x82, 0x66,
-0xf5, 0x51, 0xb7, 0xee, 0xe0, 0x17, 0xdc, 0x0f,
-0x15, 0x46, 0x5e, 0x3c, 0x52, 0xa1, 0x6e, 0xca,
-0x4b, 0x7c, 0x53, 0xf5, 0xf7, 0xee, 0xd4, 0x5b,
-0x60, 0x76, 0x43, 0xe5, 0xbf, 0x90, 0xb5, 0x16,
-0x7e, 0x29, 0x8a, 0x82, 0xaf, 0xe8, 0xf5, 0xaa,
-0xdf, 0xaf, 0xb4, 0xb4, 0x04, 0xf4, 0xa8, 0xdb,
-0xff, 0x57, 0x4a, 0xbc, 0x45, 0xf7, 0x46, 0x55,
-0x7f, 0x84, 0xd8, 0xf8, 0x75, 0x7d, 0x24, 0xd5,
-0xf4, 0xcc, 0x96, 0xfc, 0x19, 0xee, 0x3c, 0xa3,
-0xbf, 0x29, 0x54, 0xec, 0x76, 0xc9, 0x2d, 0x91,
-0x83, 0xb7, 0x96, 0x32, 0x44, 0xfb, 0xb5, 0xcc,
-0xbf, 0x6b, 0xeb, 0x34, 0xf4, 0xfc, 0xc5, 0x75,
-0x8d, 0x4b, 0x37, 0xc1, 0x80, 0x71, 0xb6, 0xb0,
-0xae, 0xf1, 0xa6, 0x4d, 0xf2, 0x72, 0xe3, 0xde,
-0xe2, 0x05, 0x8d, 0xb9, 0x9b, 0xe4, 0x0f, 0x72,
-0x63, 0x16, 0x7e, 0x91, 0x03, 0x95, 0xe1, 0x1b,
-0xbc, 0xf1, 0xb6, 0x81, 0xfd, 0x6f, 0xdd, 0xd5,
-0xd5, 0x98, 0xbf, 0x45, 0xae, 0xa8, 0x3c, 0xb0,
-0x28, 0xdc, 0x84, 0x57, 0x72, 0x6c, 0xfc, 0x32,
-0xa1, 0x23, 0xa6, 0x97, 0xaa, 0x4a, 0xa4, 0x07,
-0x3a, 0xf4, 0x40, 0x71, 0x55, 0x3b, 0xd9, 0x46,
-0xa8, 0x9e, 0x00, 0x75, 0xbf, 0xbb, 0xc0, 0x7a,
-0x3e, 0xae, 0x37, 0x13, 0x6b, 0xd4, 0xb2, 0x88,
-0x7a, 0x4b, 0xeb, 0x9b, 0xe6, 0x3f, 0x2f, 0x2b,
-0x8b, 0x96, 0x7e, 0x8b, 0x4c, 0x4d, 0xac, 0x31,
-0xca, 0x9a, 0xf2, 0x9a, 0xb6, 0x13, 0x97, 0x85,
-0x5f, 0x4f, 0xc1, 0x03, 0x52, 0xb9, 0xa1, 0xf6,
-0x93, 0x33, 0xf0, 0x00, 0x94, 0x2d, 0xba, 0xb4,
-0x3f, 0x8c, 0x57, 0xe0, 0x6e, 0xe3, 0x89, 0x26,
-0x92, 0x63, 0xe1, 0x17, 0x62, 0xee, 0x01, 0x08,
-0x1b, 0xc1, 0x78, 0x39, 0x02, 0xab, 0x14, 0x36,
-0x36, 0xb0, 0x80, 0x81, 0x5d, 0xb9, 0x29, 0x1e,
-0xa8, 0x14, 0xeb, 0xab, 0x52, 0xda, 0x89, 0x68,
-0xf5, 0x02, 0xa2, 0x55, 0xd1, 0x00, 0x61, 0xb0,
-0xb5, 0x54, 0x2b, 0xef, 0xd3, 0x4e, 0xa2, 0xf1,
-0x60, 0xdc, 0x73, 0x50, 0xac, 0xaf, 0x4a, 0x2d,
-0x59, 0xd8, 0x07, 0xd7, 0xc0, 0x06, 0xb3, 0x21,
-0xa4, 0x1e, 0x26, 0xdf, 0x47, 0xc0, 0xf9, 0x7a,
-0x08, 0x0e, 0xc3, 0x5c, 0x28, 0x30, 0x65, 0xb7,
-0x85, 0x5f, 0xae, 0x59, 0xb7, 0xac, 0xd7, 0x03,
-0x5b, 0x2a, 0x13, 0xee, 0xca, 0x9c, 0xf5, 0x52,
-0x80, 0x6e, 0x78, 0x3c, 0x52, 0x89, 0xd1, 0xce,
-0xf6, 0x7f, 0x56, 0xb7, 0xcb, 0x6e, 0x0b, 0x77,
-0x5c, 0x3f, 0x86, 0x75, 0xed, 0xb3, 0x4c, 0xb5,
-0x39, 0xa7, 0x16, 0x36, 0xc2, 0x32, 0x74, 0xf8,
-0xee, 0xa9, 0xda, 0x4f, 0xe9, 0x0c, 0xd3, 0xdd,
-0x8c, 0xe0, 0xc7, 0xd7, 0x57, 0x42, 0x9a, 0x0a,
-0xeb, 0xd0, 0xf3, 0xab, 0xab, 0x2f, 0xb1, 0x0c,
-0xde, 0xc6, 0x98, 0x81, 0x06, 0x59, 0x21, 0xee,
-0xb3, 0x4b, 0x9d, 0x8e, 0x91, 0xc5, 0xd5, 0x18,
-0x43, 0x16, 0x4d, 0x87, 0x97, 0x5b, 0xf4, 0xf4,
-0x4d, 0x23, 0xb7, 0x16, 0xc0, 0xbf, 0xd3, 0x2b,
-0xd3, 0x05, 0x23, 0xb8, 0x2e, 0x04, 0x7e, 0x4d,
-0x13, 0x51, 0xd3, 0x46, 0x5a, 0xc4, 0x02, 0x86,
-0x17, 0xa5, 0x39, 0xb4, 0x1c, 0x31, 0x17, 0x5f,
-0x48, 0x5f, 0x3b, 0xbe, 0x63, 0x02, 0x77, 0x5c,
-0x5f, 0x18, 0xaf, 0xd1, 0x05, 0x09, 0x44, 0xab,
-0xba, 0xbe, 0xcf, 0x5a, 0xaf, 0x3a, 0x91, 0x3f,
-0xe8, 0x9f, 0xa9, 0xbe, 0xb6, 0xa9, 0x3e, 0xf1,
-0xc0, 0x7f, 0x78, 0xc0, 0xc2, 0xaf, 0xc2, 0x17,
-0xb5, 0x75, 0x1a, 0x46, 0x7a, 0x35, 0x45, 0x7f,
-0x0f, 0x1b, 0x0d, 0x3d, 0xad, 0xde, 0x9b, 0x33,
-0xdd, 0xfc, 0x03, 0x9d, 0x33, 0xa8, 0xfe, 0x88,
-0x38, 0xf8, 0xb5, 0x95, 0xae, 0x81, 0x19, 0x1d,
-0x0d, 0xb8, 0xf4, 0x52, 0xbf, 0x80, 0xb2, 0x14,
-0x9b, 0x57, 0xba, 0x46, 0xaf, 0xea, 0xc8, 0xbb,
-0x05, 0x57, 0x3b, 0x7f, 0x3e, 0x7a, 0x71, 0x9a,
-0x50, 0x7c, 0x54, 0x1e, 0xc8, 0x31, 0xa0, 0x03,
-0xb6, 0xc3, 0x9f, 0x51, 0xbf, 0xae, 0x24, 0x94,
-0x20, 0xec, 0x02, 0xd2, 0x61, 0xe3, 0xd7, 0x4e,
-0x38, 0x88, 0x61, 0x06, 0x46, 0x4d, 0x3a, 0x0c,
-0x2a, 0x61, 0xf0, 0xc6, 0x3d, 0x95, 0xb0, 0x1e,
-0x23, 0xbd, 0xfc, 0x44, 0xf9, 0x6c, 0xc5, 0xb0,
-0xf0, 0x0b, 0x63, 0xfe, 0x17, 0x4d, 0xdf, 0x7c,
-0x84, 0xe3, 0x73, 0x18, 0xea, 0x23, 0x1c, 0xa3,
-0xe1, 0x62, 0xf8, 0x85, 0x23, 0xb5, 0xf0, 0xeb,
-0x0c, 0x39, 0x02, 0xf3, 0x0c, 0x5f, 0x87, 0xbc,
-0xaa, 0xfd, 0xb0, 0x14, 0xae, 0x5c, 0xd9, 0x4f,
-0x16, 0x32, 0xfc, 0x32, 0xbc, 0x31, 0x99, 0x36,
-0x5a, 0xf8, 0x15, 0xc3, 0xf7, 0x30, 0x00, 0x97,
-0x3e, 0x48, 0xca, 0xa1, 0x63, 0x51, 0xc0, 0xef,
-0x66, 0xfd, 0x39, 0x76, 0x7d, 0x35, 0xac, 0x6f,
-0x6f, 0xd5, 0x2d, 0xfc, 0x72, 0xe9, 0x06, 0x85,
-0xed, 0x8a, 0xa7, 0x85, 0x18, 0xa4, 0x83, 0x06,
-0x24, 0xb5, 0x85, 0x24, 0xb0, 0xbf, 0x41, 0x45,
-0xa5, 0x68, 0x58, 0xeb, 0xcb, 0x8b, 0xcc, 0x45,
-0x4f, 0x79, 0xc2, 0x7e, 0x34, 0x14, 0xfd, 0x35,
-0x77, 0x98, 0x3c, 0xa8, 0x3e, 0xa4, 0x06, 0x4d,
-0xf7, 0xfc, 0x56, 0x6b, 0x7d, 0x41, 0x7e, 0x0c,
-0x7d, 0x50, 0x18, 0x6e, 0xa4, 0x2f, 0xc7, 0x62,
-0x29, 0x34, 0xbc, 0xed, 0x32, 0xa5, 0x29, 0xa3,
-0x4e, 0xf5, 0xe6, 0xc8, 0x54, 0xc4, 0x87, 0x89,
-0x69, 0x69, 0x03, 0x61, 0xcb, 0x95, 0x4f, 0x31,
-0x56, 0x1f, 0x85, 0x67, 0xbc, 0xbe, 0xb5, 0x9d,
-0xcd, 0xc6, 0xb1, 0xca, 0x6a, 0x65, 0x69, 0xab,
-0x3c, 0x28, 0xe2, 0x43, 0x53, 0xba, 0x00, 0xef,
-0xd1, 0x6b, 0x2b, 0xaa, 0xee, 0x97, 0x5a, 0xe1,
-0xf7, 0x14, 0xfd, 0xfc, 0x48, 0xf9, 0x05, 0x18,
-0xa3, 0xf3, 0xd2, 0xbe, 0x93, 0xf2, 0xb0, 0x85,
-0x5f, 0xa5, 0x9f, 0xc2, 0xf3, 0xb4, 0x5a, 0x55,
-0xa9, 0x3b, 0x00, 0x9d, 0xb4, 0x7c, 0x58, 0xed,
-0xda, 0x3e, 0x94, 0x78, 0xbe, 0x22, 0xd0, 0xeb,
-0xf9, 0x9c, 0x0c, 0xe7, 0x58, 0xf8, 0xb5, 0x01,
-0x79, 0x4a, 0x35, 0xa8, 0xad, 0x39, 0x54, 0xdb,
-0xa1, 0x54, 0xf4, 0xe7, 0x85, 0x02, 0x87, 0xe9,
-0x5e, 0x15, 0x47, 0x31, 0x8f, 0x9c, 0x92, 0x84,
-0xcf, 0x44, 0xdf, 0x8b, 0xd8, 0x1d, 0x50, 0x29,
-0x22, 0x5a, 0x67, 0x2c, 0x80, 0x6e, 0x30, 0x87,
-0x5d, 0x09, 0x30, 0x10, 0xb7, 0x62, 0x7e, 0xa3,
-0x64, 0x25, 0xbc, 0x03, 0xc1, 0x90, 0x17, 0xe4,
-0xed, 0x65, 0x1f, 0x9b, 0x0b, 0xcc, 0x07, 0x18,
-0xbe, 0x23, 0xd1, 0xe8, 0x59, 0x9a, 0x6c, 0xe8,
-0x6f, 0x74, 0xf0, 0xeb, 0x9f, 0xa0, 0x5e, 0xf2,
-0x1d, 0xc0, 0x1e, 0x8e, 0xd1, 0x6b, 0x4d, 0x0f,
-0xc7, 0x2f, 0xa8, 0xef, 0xf1, 0x25, 0xcb, 0xb3,
-0xf9, 0x17, 0x46, 0x95, 0x0f, 0x52, 0x79, 0x99,
-0x76, 0xd0, 0x60, 0xf7, 0x41, 0x1e, 0xc7, 0xa2,
-0x14, 0xc4, 0x02, 0x2d, 0x9b, 0x7f, 0x61, 0x9f,
-0x13, 0x01, 0x13, 0x51, 0xf9, 0x2a, 0x16, 0xd2,
-0xec, 0x16, 0xd1, 0xc5, 0x30, 0x59, 0x20, 0xe6,
-0xc2, 0x54, 0x38, 0xff, 0x02, 0x37, 0x90, 0x08,
-0xb4, 0x35, 0xed, 0x14, 0xc1, 0xd2, 0xf3, 0xb0,
-0x92, 0x81, 0x6f, 0x48, 0xf8, 0x4c, 0x5d, 0xfb,
-0x0e, 0x42, 0xc0, 0x1c, 0x5d, 0xbd, 0x9e, 0x9c,
-0x4a, 0xcc, 0xa1, 0x8f, 0x0f, 0x7a, 0xee, 0x0d,
-0x20, 0x28, 0x24, 0xaa, 0xd2, 0xf2, 0x7d, 0xa4,
-0x5a, 0xd1, 0x04, 0x7e, 0x2d, 0x81, 0xd3, 0x78,
-0x9f, 0x02, 0x8f, 0x1c, 0xf1, 0xbe, 0x0c, 0xf3,
-0x07, 0xa5, 0x1a, 0x79, 0x89, 0x7a, 0x9a, 0xd6,
-0x9a, 0xbe, 0x85, 0xb2, 0x5f, 0xc4, 0x1b, 0x46,
-0xc9, 0x0b, 0xae, 0x31, 0xb6, 0xbe, 0x4c, 0xc6,
-0xbf, 0xa0, 0xbe, 0x1f, 0x71, 0x79, 0x88, 0x19,
-0x7d, 0x1b, 0x4f, 0xb6, 0xf5, 0x8b, 0x75, 0xa1,
-0xba, 0xf8, 0x2b, 0x0a, 0xc1, 0x38, 0xae, 0xa6,
-0xd3, 0x10, 0x3e, 0xe6, 0xeb, 0x6e, 0x08, 0x12,
-0x64, 0x64, 0x66, 0xf0, 0xc5, 0x4e, 0x62, 0xf1,
-0xa6, 0x4b, 0x59, 0xec, 0x37, 0x07, 0x54, 0x13,
-0xef, 0xfb, 0xef, 0xf0, 0x44, 0x0a, 0x87, 0x83,
-0x8c, 0x0c, 0xa3, 0x41, 0xf5, 0x14, 0x09, 0xe7,
-0x88, 0xb5, 0x83, 0xfc, 0x6b, 0x5f, 0x4b, 0xd5,
-0xb6, 0x8e, 0xe8, 0x4c, 0x3f, 0x3c, 0x4d, 0xcb,
-0x06, 0x90, 0x76, 0x21, 0x0a, 0xb7, 0x54, 0x9d,
-0x50, 0x57, 0xe7, 0xa8, 0xe2, 0x3e, 0x2b, 0x94,
-0xc3, 0x6c, 0xec, 0x9a, 0xaa, 0xac, 0x2d, 0x30,
-0x1e, 0x52, 0x59, 0x58, 0x98, 0xb3, 0x1b, 0xf9,
-0x17, 0xf2, 0xe5, 0x10, 0xa9, 0x11, 0x6d, 0x10,
-0xbf, 0x10, 0xb6, 0xea, 0xe9, 0xd4, 0x58, 0xee,
-0xd5, 0xf0, 0x79, 0x6f, 0x98, 0xfa, 0x58, 0xb0,
-0x7d, 0x10, 0x18, 0x7e, 0xc9, 0x35, 0xc2, 0x1f,
-0x32, 0xfe, 0x85, 0x7e, 0xc3, 0x7b, 0x79, 0x4b,
-0x6e, 0x5a, 0x19, 0x29, 0x14, 0x44, 0x8c, 0x7b,
-0x12, 0x8e, 0x5f, 0x62, 0x5c, 0x9a, 0x88, 0xf0,
-0xbd, 0xf1, 0xf2, 0x99, 0xa1, 0x03, 0xda, 0x73,
-0x68, 0xc8, 0xcc, 0xd3, 0xd6, 0xa1, 0x83, 0x45,
-0xfe, 0xa5, 0x0b, 0xfc, 0x5a, 0xae, 0x72, 0x6e,
-0x15, 0x27, 0x8a, 0xf1, 0x04, 0x0d, 0x18, 0x1d,
-0x8c, 0x5b, 0xdd, 0x2f, 0xae, 0xa4, 0xc5, 0x5c,
-0x2c, 0x44, 0xfc, 0x7a, 0x16, 0x82, 0x06, 0x46,
-0x44, 0x15, 0xfa, 0xfd, 0x79, 0xb3, 0xd9, 0x9f,
-0xec, 0x36, 0x81, 0x23, 0x96, 0xcf, 0x2c, 0x56,
-0x30, 0xd4, 0x0f, 0xe2, 0x3f, 0x77, 0x57, 0xc0,
-0x36, 0xd0, 0xa3, 0x95, 0xc8, 0xbf, 0xa0, 0x05,
-0xaf, 0xe8, 0x7e, 0x72, 0xd0, 0x65, 0xe1, 0x57,
-0x0c, 0x46, 0xa4, 0xba, 0xe2, 0xe0, 0x1a, 0xf4,
-0x1b, 0x29, 0x1c, 0xad, 0x77, 0x4d, 0x51, 0x0f,
-0x22, 0x5a, 0x6d, 0xb1, 0xb2, 0x46, 0xbe, 0x90,
-0xc5, 0xbf, 0xd0, 0x03, 0x78, 0xfa, 0xf1, 0xf5,
-0xfb, 0x47, 0xe0, 0xb4, 0xcb, 0xe2, 0x29, 0x9b,
-0xe4, 0xf7, 0xc1, 0xe1, 0x5f, 0x67, 0xa1, 0xd6,
-0xc8, 0x2d, 0x96, 0xe7, 0xc3, 0x7f, 0x40, 0x17,
-0xa3, 0x30, 0x33, 0xe0, 0xac, 0x51, 0x63, 0xf8,
-0x36, 0xb7, 0xe6, 0x88, 0xf5, 0xb5, 0xb0, 0x34,
-0xad, 0x76, 0xf3, 0xf7, 0x10, 0x51, 0xb8, 0x03,
-0x02, 0xc5, 0x9e, 0x56, 0xa2, 0xd3, 0x6e, 0xa9,
-0xda, 0xe3, 0x59, 0xeb, 0x2e, 0x20, 0x62, 0x4e,
-0x5d, 0xc8, 0x19, 0xa1, 0xfa, 0x06, 0xb7, 0xdf,
-0x5f, 0x21, 0x3f, 0x44, 0x2b, 0x8c, 0x47, 0xb4,
-0xd6, 0xc6, 0x8e, 0x3d, 0x65, 0x95, 0xc6, 0x8d,
-0x5a, 0xab, 0xdf, 0xc5, 0xdb, 0x94, 0x2a, 0x3b,
-0xd9, 0xf3, 0x69, 0x52, 0xfd, 0xa4, 0xc2, 0xb8,
-0x9f, 0xce, 0x34, 0x3c, 0xda, 0x0d, 0x82, 0xb1,
-0x7a, 0xb4, 0xc8, 0x4c, 0x31, 0x5f, 0x09, 0xce,
-0x19, 0x6b, 0x9b, 0x0b, 0xb6, 0xc8, 0x0a, 0x12,
-0xb1, 0x05, 0xac, 0x3f, 0x48, 0xb2, 0xa0, 0x86,
-0x19, 0x16, 0x7e, 0x45, 0x39, 0x7e, 0xd5, 0x35,
-0xb3, 0xe1, 0x84, 0xac, 0x3f, 0xed, 0xe4, 0xec,
-0x18, 0x0d, 0x67, 0xbe, 0x12, 0xec, 0xf9, 0x40,
-0x3e, 0x2d, 0x8a, 0xa9, 0x23, 0xe8, 0x7f, 0xac,
-0x39, 0xe5, 0x06, 0xb1, 0xf1, 0xab, 0x12, 0x9e,
-0x43, 0xfe, 0x15, 0x4d, 0x90, 0x1a, 0x7d, 0xad,
-0x32, 0xbb, 0x05, 0x89, 0xd8, 0x20, 0x5e, 0x09,
-0x30, 0x46, 0xb6, 0xde, 0xc6, 0x2f, 0x91, 0xdf,
-0x28, 0x0d, 0xf9, 0x6f, 0xd0, 0xb6, 0xeb, 0x8c,
-0x88, 0x11, 0xf6, 0xd6, 0xe9, 0x68, 0xdc, 0xb5,
-0x5e, 0xcc, 0x29, 0x2d, 0x9c, 0xaa, 0xe1, 0xfb,
-0x9c, 0xaa, 0x3c, 0xe5, 0xd7, 0x10, 0xe3, 0xaa,
-0xcc, 0x29, 0xab, 0xc8, 0xbb, 0xf1, 0xab, 0xe8,
-0x32, 0xd3, 0xb3, 0x0a, 0x7d, 0xa6, 0xf0, 0x3f,
-0x88, 0x5f, 0x7f, 0xa0, 0xd7, 0x0e, 0x7a, 0x7f,
-0x24, 0xdf, 0x82, 0x7e, 0xec, 0xda, 0xb4, 0x07,
-0xf9, 0x97, 0xf1, 0x4f, 0xe9, 0xb9, 0x83, 0x4b,
-0x6b, 0xda, 0x02, 0x3a, 0xbf, 0x8f, 0x5a, 0xb2,
-0x9b, 0xf1, 0x94, 0x63, 0xe8, 0xde, 0x4d, 0xf2,
-0x5b, 0xf4, 0xf3, 0x4b, 0x9f, 0x29, 0x1a, 0x32,
-0xce, 0xc1, 0x63, 0xff, 0xb6, 0x74, 0x8f, 0x1c,
-0xb1, 0x70, 0x47, 0xf9, 0x35, 0x8c, 0x6d, 0xba,
-0xfc, 0x54, 0xde, 0x73, 0xeb, 0x7b, 0xe1, 0xb3,
-0xd6, 0x9a, 0xb4, 0xaf, 0xbb, 0xed, 0x02, 0x9c,
-0x8b, 0xd7, 0xa4, 0x37, 0x3e, 0x2b, 0x9b, 0xe2,
-0x19, 0xee, 0x2a, 0x7d, 0xcc, 0xdc, 0xa7, 0x55,
-0xa5, 0x11, 0xad, 0xfc, 0xb8, 0xbe, 0xb6, 0x0d,
-0xde, 0xb8, 0x90, 0x1c, 0x47, 0xfe, 0x55, 0x35,
-0xe8, 0x5b, 0x48, 0x3e, 0x12, 0xeb, 0x8b, 0xf3,
-0x2f, 0x69, 0x8e, 0x99, 0x37, 0x1c, 0x88, 0xc3,
-0xff, 0x34, 0x66, 0xf5, 0x21, 0x11, 0x7b, 0xd4,
-0xd8, 0xa7, 0x23, 0x8b, 0x6c, 0xce, 0x31, 0x75,
-0xb1, 0x06, 0x95, 0x0d, 0x22, 0xb7, 0x73, 0xb5,
-0x1b, 0xf4, 0x87, 0xf8, 0x90, 0xd9, 0xd8, 0x09,
-0x7b, 0x08, 0x81, 0x94, 0xf5, 0x5d, 0x25, 0xcc,
-0x8f, 0xd5, 0x7f, 0x90, 0x3f, 0x4c, 0xb6, 0xb5,
-0x3e, 0xd9, 0x57, 0x83, 0x37, 0x94, 0x5f, 0x40,
-0x9f, 0x70, 0x0d, 0xcb, 0x35, 0x7d, 0x24, 0xe6,
-0x8b, 0xe3, 0x17, 0x7a, 0x80, 0x8d, 0x49, 0x79,
-0x1b, 0x9c, 0xa3, 0x75, 0xe6, 0xe5, 0x48, 0xc4,
-0x78, 0xf6, 0x09, 0x47, 0x9a, 0x16, 0xf3, 0x55,
-0x86, 0xfc, 0xeb, 0x33, 0x0c, 0xf5, 0xbd, 0xc3,
-0x6d, 0xcd, 0xf8, 0x1e, 0xce, 0x33, 0x5f, 0x1b,
-0x5e, 0xf5, 0x63, 0x75, 0x4c, 0x99, 0xc3, 0x98,
-0x5d, 0xaa, 0x91, 0x7f, 0xd7, 0x36, 0x60, 0xdc,
-0x2a, 0x68, 0x56, 0x86, 0xe4, 0x48, 0xeb, 0x1b,
-0x2d, 0x01, 0xc1, 0xad, 0x1e, 0x81, 0x99, 0x8c,
-0x6d, 0x0d, 0x5a, 0x73, 0x21, 0x71, 0x9f, 0xc9,
-0x18, 0xc7, 0x5f, 0xb9, 0x1f, 0xa1, 0x01, 0xd3,
-0x9d, 0xcc, 0x59, 0xa9, 0x3e, 0x0f, 0x7f, 0xc7,
-0x58, 0x5b, 0xda, 0xc1, 0xaf, 0x16, 0xc4, 0x02,
-0x33, 0xba, 0x27, 0x10, 0x33, 0xf9, 0xb8, 0xc2,
-0x39, 0x87, 0xd5, 0x87, 0xa2, 0x4a, 0xca, 0xb3,
-0x00, 0x7a, 0xc5, 0xfa, 0x82, 0xfc, 0x95, 0x89,
-0x8f, 0xa1, 0x3e, 0xe5, 0xfd, 0x5c, 0x8e, 0xd1,
-0x77, 0x20, 0x9c, 0xca, 0x3f, 0x25, 0x23, 0x23,
-0x8b, 0x5d, 0x9e, 0xca, 0x3f, 0xd3, 0x60, 0xda,
-0xf8, 0xc5, 0xbc, 0x7a, 0x6d, 0xbf, 0xef, 0x87,
-0x53, 0x86, 0x4d, 0xe4, 0x29, 0x47, 0x96, 0x7e,
-0xde, 0x36, 0x14, 0x65, 0xfe, 0x10, 0xc9, 0xda,
-0x60, 0xbb, 0x85, 0x5f, 0xe9, 0xd4, 0x50, 0xac,
-0xde, 0x9b, 0xbf, 0x56, 0xd6, 0xe9, 0xe1, 0x50,
-0x5d, 0xbe, 0xb7, 0x45, 0x0e, 0x19, 0x29, 0x3d,
-0x5c, 0x8a, 0x0e, 0x24, 0x64, 0xe7, 0x0f, 0x4f,
-0x98, 0x1d, 0xa1, 0xea, 0x62, 0x75, 0x0d, 0x29,
-0x83, 0x8e, 0x6f, 0x56, 0x17, 0xbb, 0xd7, 0x92,
-0xb2, 0x78, 0xc7, 0xea, 0x40, 0x9f, 0xba, 0x80,
-0x38, 0xfc, 0xeb, 0x30, 0xdd, 0xa1, 0x07, 0x53,
-0x53, 0xc2, 0x24, 0x5f, 0x6f, 0xd3, 0x83, 0x07,
-0x2e, 0x9b, 0xef, 0x7f, 0xa0, 0xa3, 0xad, 0x4c,
-0x4f, 0x75, 0x94, 0xb5, 0xde, 0x65, 0xe5, 0x0f,
-0x4b, 0x12, 0xd0, 0xa1, 0xfc, 0x9d, 0x74, 0x03,
-0xf8, 0xd1, 0x40, 0x67, 0x5e, 0x49, 0x73, 0x12,
-0x1a, 0x2e, 0x58, 0x7c, 0x1a, 0x11, 0x8b, 0x7f,
-0x41, 0xc9, 0x09, 0x18, 0x64, 0x3e, 0x7c, 0x43,
-0x5b, 0xb9, 0x91, 0x22, 0x75, 0xe4, 0xe6, 0x96,
-0xa2, 0x04, 0xa4, 0xb4, 0x2e, 0x0c, 0x3c, 0xe4,
-0x26, 0x85, 0x8f, 0x2b, 0x2d, 0x75, 0xa8, 0x8c,
-0x0b, 0x57, 0x6d, 0xf0, 0x34, 0x91, 0x0b, 0x50,
-0x3f, 0xc3, 0x77, 0xc7, 0x5f, 0x2c, 0x21, 0x67,
-0x5b, 0x6b, 0xcd, 0x39, 0xcd, 0x1e, 0x87, 0x7f,
-0x21, 0x3d, 0x61, 0x68, 0xf5, 0x54, 0x79, 0x15,
-0x02, 0x22, 0x23, 0x74, 0x72, 0x10, 0x5e, 0x46,
-0x03, 0xfd, 0xaa, 0x83, 0x5f, 0x95, 0xc8, 0x07,
-0x11, 0xad, 0x68, 0x20, 0xa1, 0x3c, 0x07, 0x35,
-0x92, 0x1c, 0x47, 0x62, 0x78, 0xbf, 0xc2, 0xf9,
-0xa0, 0xc3, 0xbf, 0x0c, 0x48, 0xa0, 0x6f, 0xf1,
-0xb0, 0xd7, 0x24, 0x09, 0x15, 0x08, 0x64, 0x61,
-0x93, 0x50, 0xe4, 0x5c, 0xaa, 0x86, 0x01, 0x8c,
-0xe0, 0x5f, 0x85, 0x97, 0x40, 0x3b, 0xad, 0xaa,
-0xe8, 0x64, 0x5c, 0x66, 0x4f, 0xeb, 0xac, 0xf4,
-0x8d, 0xb3, 0xc9, 0x2d, 0x8d, 0x6b, 0xdb, 0x67,
-0x0d, 0xa9, 0xf7, 0x91, 0x52, 0x27, 0x7f, 0x08,
-0xbf, 0x25, 0xb5, 0x43, 0xbe, 0x1a, 0x79, 0x23,
-0x7d, 0xa3, 0x71, 0xfe, 0x60, 0x4e, 0x8d, 0x7c,
-0xb3, 0xf9, 0x72, 0x8b, 0x36, 0x14, 0xac, 0x44,
-0xfc, 0xe2, 0x43, 0x37, 0x30, 0x7e, 0xc6, 0x78,
-0x03, 0x7c, 0x7b, 0xc8, 0x10, 0x3d, 0xaf, 0xd5,
-0xf5, 0xf9, 0xd2, 0x9e, 0x24, 0x5c, 0x60, 0xf3,
-0x75, 0x56, 0xee, 0x17, 0xf9, 0x8d, 0x5d, 0x25,
-0x69, 0x48, 0x21, 0x7e, 0x79, 0x69, 0x03, 0xf3,
-0x75, 0x61, 0x58, 0x82, 0x81, 0x99, 0x92, 0x52,
-0xc2, 0x12, 0x3e, 0x1f, 0x9b, 0x7f, 0x5d, 0x3a,
-0x15, 0x59, 0x92, 0xde, 0x53, 0x39, 0x2c, 0xdf,
-0x09, 0xbf, 0x40, 0x6e, 0xae, 0x86, 0xe4, 0x25,
-0xf0, 0x06, 0xcc, 0x37, 0xf3, 0x43, 0xb2, 0x5f,
-0x3c, 0x1f, 0x91, 0x3f, 0x9c, 0xc5, 0x72, 0x9e,
-0x37, 0x4b, 0x0f, 0xb5, 0x73, 0x03, 0xf1, 0x8b,
-0xce, 0x48, 0xe7, 0xad, 0x40, 0x5c, 0x16, 0x3e,
-0x53, 0x79, 0x17, 0x7e, 0x0a, 0xcb, 0x06, 0x30,
-0xca, 0xbd, 0x93, 0xa5, 0x43, 0x4d, 0xf5, 0x07,
-0xe4, 0xce, 0xca, 0x9f, 0xc6, 0x66, 0xb0, 0xac,
-0x88, 0xdf, 0xe6, 0x5f, 0x1f, 0xc1, 0x9f, 0x0f,
-0xd7, 0x6c, 0xf1, 0x26, 0xae, 0xa8, 0x54, 0xdf,
-0xd6, 0x6b, 0x10, 0xb6, 0x72, 0x2b, 0x2b, 0x0e,
-0x36, 0x2e, 0xa0, 0xf9, 0x09, 0x8f, 0xc3, 0xbf,
-0x92, 0xc6, 0x10, 0x1b, 0x97, 0x99, 0x1b, 0x87,
-0x01, 0x98, 0x01, 0x4b, 0x8d, 0xdc, 0x7e, 0x6d,
-0x54, 0xb9, 0x16, 0x7c, 0x86, 0xbc, 0xd9, 0xe6,
-0x5f, 0x7d, 0x6a, 0x0f, 0xcc, 0x5f, 0xe4, 0xd5,
-0xe4, 0x0a, 0xe5, 0x80, 0x12, 0x36, 0xf2, 0xe3,
-0x0f, 0x2d, 0x87, 0x1e, 0xe4, 0x05, 0x4b, 0xe2,
-0xe8, 0x0f, 0x2d, 0xfe, 0xb5, 0x1c, 0xee, 0x57,
-0x02, 0x46, 0x34, 0x7e, 0x17, 0x23, 0x59, 0x01,
-0xe3, 0x86, 0x38, 0xa9, 0x50, 0x9e, 0x90, 0x66,
-0x2f, 0x52, 0xe3, 0xf8, 0x46, 0x59, 0xfc, 0xab,
-0x16, 0x19, 0xc7, 0x1c, 0xc6, 0x41, 0xe6, 0x93,
-0x5f, 0xc1, 0x0e, 0x23, 0xaf, 0xdf, 0x3d, 0x1f,
-0x59, 0xc9, 0x0e, 0xa3, 0xb4, 0x9f, 0xe4, 0xd8,
-0xeb, 0xab, 0xb8, 0x75, 0x8d, 0xfe, 0xc4, 0xf5,
-0x95, 0xb7, 0xcc, 0x2e, 0xa6, 0x8f, 0xeb, 0x65,
-0x51, 0xf7, 0x2d, 0xee, 0xe2, 0xf6, 0xc7, 0xf5,
-0x59, 0xd1, 0xca, 0x5b, 0xdc, 0xad, 0x99, 0xfc,
-0x61, 0xaa, 0xa9, 0x0e, 0xd9, 0x56, 0x79, 0x99,
-0x31, 0xd8, 0x14, 0x2e, 0xce, 0x5f, 0xd3, 0x50,
-0x86, 0x57, 0xc2, 0xc5, 0x4b, 0x5e, 0x91, 0xab,
-0x25, 0x81, 0x5f, 0xd3, 0x90, 0x76, 0x69, 0x97,
-0x34, 0x22, 0x5a, 0x0d, 0x19, 0xef, 0x20, 0xff,
-0xca, 0xdf, 0xd4, 0x30, 0x10, 0x65, 0xf9, 0xc3,
-0x8d, 0xc8, 0xbf, 0x2e, 0xb1, 0xf1, 0xcb, 0xf8,
-0x10, 0xa1, 0xcd, 0xbb, 0xb9, 0xed, 0x77, 0xfa,
-0x01, 0x35, 0xbc, 0xf8, 0xe6, 0xb8, 0x67, 0xa7,
-0x71, 0x20, 0xba, 0xaa, 0x69, 0xc9, 0x26, 0x79,
-0xa6, 0xcd, 0xbf, 0x3e, 0x34, 0x3a, 0x9a, 0xaa,
-0xb7, 0xe4, 0xaf, 0x25, 0x88, 0xef, 0x80, 0x8f,
-0x6e, 0x9d, 0x7f, 0x56, 0xe3, 0xdb, 0xfa, 0x6c,
-0x4d, 0xa5, 0xfe, 0x02, 0x27, 0x7f, 0x48, 0xb7,
-0xa9, 0xc1, 0xa8, 0xaa, 0x6d, 0xee, 0x93, 0xb6,
-0xa9, 0x7a, 0xf4, 0x46, 0x6d, 0x73, 0x7b, 0x7b,
-0x0b, 0xc4, 0x9a, 0xd4, 0x4b, 0x48, 0xab, 0x93,
-0x3f, 0xec, 0xb8, 0x3f, 0x16, 0x8c, 0x3e, 0xbc,
-0x39, 0x32, 0x80, 0xb0, 0x35, 0xf3, 0xfa, 0xbc,
-0x2d, 0xa4, 0x02, 0x1e, 0x96, 0x66, 0x37, 0xa9,
-0x5b, 0xc8, 0x5a, 0x3b, 0x7f, 0xf8, 0x38, 0x60,
-0x7f, 0x9a, 0xbc, 0x9b, 0x8b, 0x3e, 0xd0, 0x3e,
-0x84, 0x70, 0xd3, 0xf4, 0xad, 0xf2, 0x2f, 0xe0,
-0x80, 0x41, 0x62, 0x4b, 0xb6, 0x7a, 0x76, 0xd9,
-0xf9, 0xc3, 0x76, 0xaf, 0xc8, 0x16, 0x16, 0x0d,
-0xd0, 0xb3, 0xdb, 0x5f, 0x88, 0x15, 0xf8, 0x8b,
-0xfa, 0xe8, 0xd9, 0xc6, 0xda, 0xe8, 0x1c, 0xbf,
-0x7c, 0x83, 0x9d, 0x3f, 0xdc, 0x46, 0x8e, 0x19,
-0x5d, 0x5a, 0xb0, 0xfd, 0x6b, 0x94, 0x98, 0x39,
-0x61, 0xad, 0x9a, 0xca, 0x65, 0x24, 0x65, 0x74,
-0xb1, 0x44, 0xa2, 0xdb, 0xc9, 0x1f, 0x22, 0x53,
-0x08, 0xd0, 0x1b, 0x90, 0x7f, 0xe1, 0xba, 0x61,
-0xf9, 0x43, 0x46, 0xc4, 0x90, 0xa4, 0x57, 0x26,
-0x22, 0x6e, 0xe1, 0xc6, 0x18, 0x7e, 0x31, 0x17,
-0x87, 0x61, 0xa1, 0x97, 0x1b, 0x51, 0x66, 0x74,
-0x42, 0xa5, 0xe9, 0x0e, 0xe9, 0x6e, 0x3b, 0xbf,
-0x31, 0xd5, 0x58, 0x47, 0xcb, 0xfa, 0x3c, 0xf7,
-0x92, 0xa9, 0xc6, 0x43, 0xe1, 0x32, 0x33, 0xda,
-0x4c, 0xa6, 0xd2, 0x75, 0xd2, 0xac, 0x94, 0x7a,
-0x0f, 0xe9, 0xb0, 0xf3, 0x87, 0x05, 0xe6, 0x7b,
-0xc3, 0xa1, 0xc1, 0xfc, 0x85, 0xee, 0x3a, 0xfa,
-0xef, 0xc9, 0x64, 0x1a, 0xe3, 0xf0, 0x82, 0xc4,
-0xcb, 0xe9, 0x6b, 0x86, 0x0a, 0x46, 0xda, 0xdc,
-0x56, 0xfe, 0x70, 0xda, 0xaf, 0xd0, 0xcf, 0x57,
-0xf7, 0x3f, 0xf8, 0x54, 0xf9, 0x4a, 0xfd, 0x63,
-0xa3, 0xee, 0xb0, 0xef, 0x19, 0xf9, 0x93, 0xfe,
-0x73, 0xb0, 0xe0, 0x5d, 0x8c, 0x7b, 0x23, 0x22,
-0xbf, 0x61, 0xb8, 0x2e, 0xc0, 0x51, 0x7a, 0xcd,
-0xb0, 0xf7, 0xbc, 0xfc, 0x13, 0xe3, 0x28, 0xdd,
-0x31, 0xa2, 0xbc, 0xb8, 0xa3, 0xce, 0x38, 0xd4,
-0x7f, 0x15, 0xcb, 0x28, 0x6a, 0x36, 0xff, 0x7a,
-0x41, 0x5b, 0xa7, 0xe8, 0x66, 0xfe, 0x6a, 0xf9,
-0x3b, 0x4d, 0xc8, 0xad, 0x3e, 0x89, 0xde, 0x4b,
-0xbc, 0xe6, 0xba, 0x9d, 0x48, 0x0c, 0xef, 0x25,
-0xb3, 0x33, 0xf9, 0x43, 0x5e, 0x3d, 0x59, 0x15,
-0x99, 0xda, 0xb2, 0x4e, 0x9b, 0x61, 0x5e, 0x7f,
-0x0f, 0x79, 0xb4, 0xe0, 0xa7, 0xfa, 0x77, 0xfb,
-0xdc, 0xcd, 0x9a, 0x62, 0xe7, 0x0f, 0x5f, 0xc3,
-0x90, 0x58, 0x1f, 0xce, 0x9b, 0x4b, 0x96, 0x34,
-0xfe, 0x52, 0xab, 0x38, 0x35, 0x65, 0x61, 0xc1,
-0xee, 0xf8, 0x43, 0x6e, 0xbd, 0x77, 0x76, 0xa8,
-0xf5, 0x32, 0x9b, 0x7f, 0xfd, 0x2b, 0x3d, 0x0a,
-0xcf, 0xef, 0xf7, 0x0e, 0x97, 0xd7, 0xc2, 0x51,
-0x5c, 0xcb, 0x55, 0x67, 0xe4, 0x97, 0xe8, 0x7b,
-0xd2, 0x55, 0xc3, 0x05, 0xa3, 0xee, 0x4a, 0xf1,
-0x5d, 0x88, 0x5f, 0xeb, 0x39, 0x7e, 0x85, 0xda,
-0x86, 0x2a, 0xce, 0xa9, 0x0b, 0xfb, 0x3a, 0xf6,
-0xca, 0x2b, 0xb5, 0x8f, 0x8b, 0x6b, 0xfa, 0x5c,
-0x7b, 0x1a, 0xac, 0xb8, 0x4e, 0xd2, 0xde, 0x85,
-0xf7, 0xd4, 0xb9, 0x18, 0xc6, 0x97, 0xaf, 0x84,
-0xa5, 0x2c, 0xaf, 0xd5, 0xfc, 0xfd, 0x5a, 0xf5,
-0x55, 0x98, 0x6b, 0x7a, 0x43, 0xb2, 0x6e, 0xf3,
-0x2f, 0x56, 0xa9, 0x61, 0x90, 0x44, 0x76, 0x43,
-0x27, 0xd9, 0xce, 0x0d, 0xc2, 0x12, 0x65, 0xeb,
-0x93, 0x72, 0x22, 0x66, 0xf1, 0xaf, 0x95, 0x38,
-0x4d, 0x01, 0x73, 0x56, 0xd2, 0xef, 0x85, 0x5f,
-0x72, 0xd7, 0x1d, 0x08, 0xaa, 0x9d, 0xc0, 0x7d,
-0xa6, 0x6e, 0xe5, 0x0f, 0x21, 0xd8, 0xd8, 0x06,
-0x09, 0xf3, 0x86, 0xf9, 0x64, 0x43, 0xeb, 0x0e,
-0x88, 0xa5, 0x2e, 0x9b, 0x0b, 0x1b, 0xa4, 0x36,
-0x18, 0x34, 0xdd, 0xf3, 0x9c, 0xfc, 0xa1, 0xfa,
-0x63, 0x78, 0x4f, 0x9a, 0xf7, 0x4a, 0xfe, 0x19,
-0xb9, 0x56, 0xff, 0x3d, 0x94, 0xbf, 0x7b, 0xd3,
-0x2a, 0x79, 0xaa, 0xf1, 0xea, 0xdd, 0x57, 0xff,
-0x2f, 0xef, 0x70, 0x83, 0x6e, 0xe5, 0x0f, 0xa7,
-0x8d, 0xd2, 0x31, 0xb8, 0x2a, 0xe5, 0xdb, 0x2b,
-0x0f, 0xe9, 0xef, 0x01, 0xfa, 0xc3, 0xd3, 0x32,
-0x5e, 0x59, 0x71, 0x85, 0xb9, 0xf1, 0xb4, 0xbc,
-0xcb, 0xce, 0x1f, 0x62, 0xbc, 0x41, 0xeb, 0xd3,
-0xd3, 0xbb, 0xe5, 0xf7, 0x8d, 0x23, 0x10, 0x8a,
-0x79, 0xbb, 0x65, 0x16, 0x6f, 0x84, 0xd3, 0xde,
-0x6e, 0xa7, 0xfe, 0x25, 0xf8, 0x57, 0xba, 0xb3,
-0xdb, 0x9f, 0x56, 0xdf, 0xa2, 0x81, 0x88, 0xda,
-0x4d, 0xf0, 0x8a, 0xbe, 0xa0, 0x57, 0xed, 0x8e,
-0x0c, 0x5b, 0xf1, 0x8f, 0x88, 0xd5, 0xcd, 0xcb,
-0x42, 0x24, 0xcd, 0xc8, 0x63, 0x14, 0x43, 0xf4,
-0xc3, 0xae, 0x3d, 0x44, 0x4f, 0xa1, 0x71, 0xca,
-0x65, 0x7d, 0x97, 0x60, 0x37, 0x53, 0x92, 0xe4,
-0x7d, 0x78, 0x84, 0xea, 0x4d, 0x08, 0x5b, 0x43,
-0xda, 0xb3, 0x5a, 0x85, 0x19, 0x75, 0xea, 0x5f,
-0x2c, 0x7f, 0x78, 0x4e, 0x64, 0xa4, 0x5f, 0x86,
-0x43, 0x2d, 0xe1, 0xc6, 0x20, 0xe3, 0xc2, 0x67,
-0x61, 0x15, 0xab, 0x64, 0x65, 0xd7, 0xbf, 0x18,
-0xdb, 0x1a, 0x6e, 0x1b, 0x66, 0x01, 0x70, 0x8c,
-0xe7, 0x0f, 0xcf, 0x03, 0xab, 0x88, 0xc9, 0xe3,
-0xf9, 0x97, 0x99, 0x9f, 0xbc, 0x75, 0x19, 0x4b,
-0xc1, 0x35, 0x09, 0x4e, 0xcd, 0xf9, 0x57, 0xc3,
-0x9b, 0x59, 0xfc, 0x8b, 0x54, 0x0f, 0xba, 0x5f,
-0xf8, 0x73, 0x1d, 0xf6, 0x1a, 0x01, 0x16, 0xb4,
-0x0f, 0x59, 0xd9, 0x5d, 0xbb, 0xfe, 0x65, 0xf1,
-0xaf, 0x5e, 0xf5, 0x6a, 0x62, 0x40, 0x17, 0xbe,
-0x77, 0x3c, 0x3f, 0xff, 0x2c, 0xcf, 0xd8, 0x93,
-0x2f, 0xac, 0xf5, 0xc5, 0xf9, 0x57, 0xd5, 0xa0,
-0xfb, 0x3e, 0x8c, 0xc7, 0xf6, 0x99, 0x3b, 0x74,
-0x84, 0xad, 0xe3, 0x2d, 0x4f, 0xb7, 0x54, 0xb1,
-0x5a, 0xd2, 0x90, 0x9d, 0x3f, 0xbc, 0x19, 0x58,
-0xfd, 0xcb, 0x7b, 0x8d, 0xdc, 0x80, 0xc6, 0x7c,
-0xbd, 0xa0, 0x46, 0x3e, 0x42, 0x4f, 0xc6, 0x6b,
-0x07, 0x7d, 0xd7, 0x60, 0x4c, 0x6b, 0xe1, 0x17,
-0xab, 0x7f, 0x5d, 0x6b, 0x16, 0x84, 0xe4, 0x34,
-0x1a, 0x2f, 0x2a, 0x48, 0x81, 0xc5, 0xb8, 0x70,
-0x80, 0xe3, 0xf8, 0x17, 0x67, 0x91, 0xef, 0xc3,
-0x21, 0x98, 0x4f, 0xf9, 0xb8, 0xce, 0x92, 0x3a,
-0x56, 0xe0, 0xb3, 0xeb, 0x5f, 0x97, 0x8a, 0xdc,
-0xbb, 0xa7, 0xf9, 0xae, 0x7e, 0x8c, 0x0f, 0xcb,
-0xa8, 0x9b, 0x25, 0xe1, 0x9f, 0xce, 0x99, 0x63,
-0xaa, 0xcd, 0xb7, 0x9c, 0x12, 0xf7, 0xe1, 0xfc,
-0x8b, 0x56, 0xa5, 0xdd, 0xab, 0xc9, 0xe7, 0xda,
-0x3a, 0x7a, 0x45, 0x02, 0x8d, 0xe3, 0xf0, 0xb4,
-0xc9, 0xab, 0x78, 0xe9, 0x71, 0xfc, 0x8b, 0x8d,
-0x34, 0xc5, 0x7c, 0x4b, 0xe2, 0x67, 0x6c, 0xec,
-0x7b, 0x04, 0xff, 0x7a, 0xdd, 0xc9, 0x1f, 0xb2,
-0x0a, 0x02, 0x2d, 0x48, 0xe4, 0x9e, 0xa5, 0x47,
-0xe0, 0xaa, 0x6d, 0x05, 0x09, 0x79, 0x10, 0xbe,
-0xa0, 0x75, 0x34, 0x98, 0xa9, 0x7f, 0x49, 0x36,
-0xdb, 0xca, 0x45, 0x83, 0xd6, 0x28, 0xb9, 0xe3,
-0xf8, 0x97, 0x85, 0x5f, 0xbc, 0x2e, 0x63, 0x14,
-0x3c, 0x2c, 0xef, 0x5c, 0x78, 0x16, 0x61, 0xab,
-0x20, 0x7e, 0x37, 0x63, 0x2e, 0x0b, 0x18, 0x11,
-0xeb, 0xcd, 0xe0, 0x17, 0xb2, 0x89, 0x66, 0x4f,
-0x31, 0xba, 0xe5, 0x3d, 0x24, 0xc1, 0xb9, 0x95,
-0xf2, 0x2c, 0x99, 0xcc, 0xbf, 0xaa, 0x17, 0x7b,
-0x10, 0xda, 0xd0, 0xb8, 0xcb, 0x70, 0xf3, 0xfa,
-0x17, 0xcc, 0x64, 0x6d, 0xf6, 0x8f, 0xe7, 0x5f,
-0x1e, 0xcd, 0x8d, 0x86, 0x1e, 0x60, 0xc5, 0xb2,
-0x3e, 0x7e, 0x45, 0x65, 0xb5, 0x24, 0x0b, 0xbf,
-0x62, 0xa2, 0x87, 0x09, 0xb9, 0xcc, 0x40, 0x5a,
-0x51, 0xfc, 0x20, 0xef, 0xf3, 0x2d, 0x0b, 0x8a,
-0x83, 0xe3, 0xeb, 0x5f, 0xd8, 0xe7, 0xcb, 0xe3,
-0xf2, 0x9b, 0xf0, 0xbf, 0xb5, 0x7a, 0x63, 0x23,
-0x12, 0x16, 0xf5, 0xbc, 0xa8, 0x13, 0x65, 0xd5,
-0xbf, 0x18, 0x47, 0xf3, 0xf5, 0x37, 0xcc, 0x80,
-0xdf, 0x55, 0x86, 0x9b, 0xf2, 0x39, 0x47, 0x33,
-0xc2, 0x4d, 0x2b, 0xe3, 0xf2, 0x7e, 0xb0, 0xf9,
-0x97, 0xc2, 0xf8, 0x97, 0x87, 0xa2, 0x9f, 0x5d,
-0x6f, 0xcc, 0x06, 0x95, 0xb2, 0xfa, 0x97, 0x1e,
-0x40, 0xa3, 0xc8, 0xaa, 0x7f, 0x45, 0xa1, 0xdd,
-0xee, 0x73, 0x23, 0xdd, 0x83, 0x20, 0x9e, 0xc7,
-0xfa, 0xbc, 0xad, 0x0c, 0x17, 0x9a, 0x46, 0x5e,
-0xb7, 0xf0, 0x4b, 0xd9, 0xc9, 0xc6, 0xbe, 0x08,
-0xdf, 0xde, 0xef, 0xc2, 0xc3, 0xda, 0x6c, 0xa3,
-0x34, 0x6e, 0xe0, 0xd8, 0x5b, 0x75, 0x1c, 0xbb,
-0x53, 0xff, 0xb2, 0xfa, 0x9c, 0x1b, 0x97, 0xbf,
-0x0b, 0x27, 0x0d, 0x16, 0x27, 0x60, 0x7f, 0x3e,
-0xc4, 0x07, 0xe5, 0x65, 0xf5, 0xaf, 0x6c, 0xfe,
-0xc5, 0x46, 0xf1, 0x0b, 0xf8, 0x90, 0x72, 0x83,
-0xfd, 0xab, 0x0b, 0x8b, 0x7c, 0xf1, 0x86, 0x9f,
-0x65, 0xf1, 0x2f, 0xe0, 0xd5, 0xae, 0x18, 0x86,
-0x97, 0x0b, 0x90, 0x88, 0x59, 0x73, 0x1a, 0xcc,
-0xd4, 0xbf, 0x38, 0xff, 0x9a, 0x93, 0x74, 0xc7,
-0x90, 0x92, 0x3f, 0x08, 0x3a, 0x23, 0x62, 0x83,
-0x9c, 0x91, 0xa9, 0xac, 0xfe, 0x25, 0xe6, 0x42,
-0xf0, 0x2f, 0xd5, 0x3d, 0x9b, 0xac, 0x04, 0x9a,
-0xaa, 0x10, 0xf5, 0xe5, 0xe7, 0x79, 0xc5, 0xd9,
-0xae, 0x7f, 0x21, 0xff, 0x82, 0xab, 0xa0, 0x2a,
-0xe4, 0x36, 0x36, 0x4f, 0x35, 0xd7, 0x80, 0xc4,
-0xd2, 0x86, 0xef, 0xb2, 0x37, 0xbc, 0xaf, 0xa3,
-0x19, 0x6f, 0xc8, 0xef, 0xd3, 0xa1, 0x3e, 0xc6,
-0xf8, 0x57, 0xa2, 0x20, 0x2a, 0x7f, 0x87, 0xf6,
-0xd1, 0xab, 0x86, 0xbd, 0xab, 0xe5, 0xe3, 0xf0,
-0x87, 0x74, 0xfd, 0xc0, 0x86, 0xd5, 0xf2, 0x47,
-0x16, 0x7e, 0x95, 0xec, 0xd6, 0xce, 0xb1, 0x3a,
-0x2c, 0xc8, 0x9f, 0x28, 0x38, 0xc0, 0x63, 0xd5,
-0xb8, 0x76, 0xf0, 0x4a, 0x5d, 0x3f, 0xae, 0xa6,
-0x5e, 0x81, 0x5f, 0xa0, 0xbc, 0x88, 0xfe, 0xf0,
-0x5a, 0xdd, 0x1b, 0x95, 0x5f, 0x32, 0x2e, 0xd0,
-0x3d, 0x67, 0x5c, 0xdd, 0xe5, 0x17, 0xd0, 0xfb,
-0xd5, 0x23, 0x45, 0x2e, 0x32, 0x35, 0x81, 0x5f,
-0xa5, 0xc8, 0xa4, 0x30, 0xfc, 0xce, 0xbf, 0xc1,
-0x3f, 0x1d, 0x3e, 0xd7, 0xaf, 0x1c, 0x54, 0xef,
-0x93, 0x37, 0xc0, 0xbe, 0x78, 0x95, 0x99, 0x7f,
-0x2f, 0xf9, 0x48, 0x3c, 0x1f, 0xab, 0xfe, 0x65,
-0xa8, 0x8b, 0xc8, 0xa3, 0xf0, 0x0c, 0x29, 0x4f,
-0xe5, 0xad, 0x12, 0x7d, 0x66, 0x9d, 0x37, 0xc5,
-0xf3, 0xb1, 0xf8, 0x17, 0xe4, 0x01, 0xf1, 0xd1,
-0xed, 0xfd, 0x15, 0x0c, 0xc4, 0xf1, 0x8a, 0x8b,
-0x57, 0xc4, 0x52, 0x36, 0x7e, 0x31, 0x3f, 0x56,
-0x0b, 0x5e, 0x90, 0x5f, 0xd0, 0xbb, 0xcd, 0xbd,
-0xe8, 0xd0, 0xca, 0x59, 0x4e, 0xe6, 0x9f, 0xf8,
-0x7a, 0x77, 0xf0, 0x8b, 0xf9, 0x04, 0xed, 0x28,
-0xfd, 0xfa, 0x6e, 0x60, 0xf5, 0x2f, 0xe1, 0xeb,
-0x24, 0x46, 0xc4, 0x64, 0x2b, 0x7f, 0x58, 0x26,
-0xea, 0x5f, 0xe0, 0xed, 0x41, 0x9a, 0x73, 0x78,
-0xeb, 0x3c, 0x24, 0x62, 0x3c, 0x67, 0x35, 0x0f,
-0x7d, 0x4b, 0x83, 0x29, 0xf0, 0x4b, 0xf0, 0xaf,
-0xea, 0x79, 0xee, 0x76, 0xcf, 0x12, 0x25, 0x81,
-0x00, 0x94, 0xcf, 0xfc, 0xe1, 0x5e, 0x91, 0x1f,
-0xb3, 0xd6, 0x17, 0x15, 0x39, 0x2b, 0x1d, 0x5f,
-0xd1, 0x95, 0xca, 0x56, 0x95, 0xf3, 0xaf, 0x21,
-0xf8, 0x25, 0xc7, 0xb8, 0x9c, 0x0c, 0xff, 0x52,
-0x70, 0x5c, 0x8a, 0xbb, 0x18, 0xe7, 0x34, 0xa1,
-0x6c, 0x7f, 0x79, 0x4a, 0x38, 0x8c, 0x73, 0x7a,
-0x7d, 0xc2, 0xf4, 0xcc, 0xdd, 0xdc, 0x6b, 0xe7,
-0x0f, 0xd9, 0x77, 0xd5, 0x69, 0xde, 0xb5, 0xf2,
-0x3f, 0x9a, 0xc7, 0xa4, 0x79, 0xef, 0x16, 0xec,
-0x91, 0x3f, 0x81, 0x8f, 0x8d, 0x42, 0x56, 0x2b,
-0x31, 0x25, 0x9b, 0x7f, 0x25, 0xb0, 0xcf, 0xaa,
-0x6f, 0x6d, 0xd1, 0x50, 0xe3, 0x19, 0xa8, 0x4b,
-0xe5, 0x7f, 0xde, 0xc0, 0xaf, 0x98, 0x4b, 0x87,
-0xe5, 0x4c, 0xfd, 0x8b, 0xe3, 0x97, 0xef, 0x59,
-0xf9, 0x20, 0x0c, 0xd1, 0x9a, 0x3e, 0xef, 0x88,
-0x3c, 0xda, 0x3e, 0x16, 0xb8, 0xb2, 0x02, 0x0d,
-0x47, 0xbf, 0x21, 0xf0, 0xeb, 0xc6, 0x2e, 0xed,
-0x23, 0x38, 0x46, 0xb7, 0xbd, 0xab, 0x76, 0xb5,
-0x8e, 0xc6, 0x5e, 0x8a, 0xe3, 0x42, 0x4b, 0xb6,
-0x66, 0xf4, 0x1b, 0xc2, 0xd7, 0x85, 0xf5, 0xc1,
-0x4b, 0x76, 0x41, 0x65, 0x8f, 0x1a, 0x0a, 0x6c,
-0xa0, 0x7b, 0x61, 0xb9, 0xda, 0x11, 0xce, 0xb1,
-0xf5, 0x1b, 0x25, 0xac, 0xda, 0xc5, 0xd0, 0x21,
-0x32, 0xa8, 0x6e, 0xd5, 0x03, 0xe6, 0x8a, 0x24,
-0x0c, 0x15, 0x5e, 0x03, 0x95, 0xd7, 0x67, 0xe9,
-0x37, 0x4a, 0x9c, 0x2c, 0xdf, 0x21, 0x33, 0xad,
-0xd6, 0xb0, 0x69, 0xda, 0xad, 0x9e, 0x23, 0x0b,
-0x12, 0xde, 0x89, 0xf8, 0x25, 0xd0, 0x6a, 0x94,
-0xda, 0xf5, 0x2f, 0x0c, 0x4e, 0xe6, 0x4c, 0xc2,
-0xaf, 0xa5, 0xc9, 0xa2, 0x0f, 0x03, 0xa9, 0x45,
-0x4c, 0xc8, 0xc1, 0x38, 0x35, 0x59, 0xc0, 0x1c,
-0xfe, 0x38, 0xfd, 0x46, 0xb5, 0x79, 0x63, 0x32,
-0x30, 0x88, 0x5c, 0xe6, 0xef, 0x7b, 0xb0, 0x1b,
-0xa3, 0xea, 0x3e, 0x3d, 0xd0, 0x93, 0x9f, 0x94,
-0xbb, 0xc6, 0xe9, 0x37, 0x7a, 0x3a, 0xd9, 0x1b,
-0x45, 0x85, 0xeb, 0xc6, 0x91, 0xa6, 0x39, 0x90,
-0x65, 0xf4, 0x1b, 0x1c, 0x0b, 0x30, 0x3e, 0xbc,
-0xd0, 0x84, 0x44, 0x8c, 0x15, 0x95, 0x8e, 0xc3,
-0xde, 0x96, 0xf2, 0x0a, 0x69, 0xb5, 0xb6, 0xd5,
-0xe6, 0x5f, 0x5e, 0x86, 0x5f, 0x26, 0xf2, 0xaf,
-0x83, 0x09, 0x80, 0x60, 0x1a, 0x81, 0xec, 0xb0,
-0x7a, 0x3a, 0x19, 0x82, 0x82, 0x6c, 0xfd, 0x06,
-0x8e, 0x02, 0xc7, 0x7e, 0x52, 0x1e, 0xa1, 0xa3,
-0xc0, 0x6b, 0xac, 0x9f, 0xe8, 0x63, 0xe4, 0x79,
-0x03, 0xaf, 0xd8, 0xfc, 0xcb, 0x35, 0x54, 0xca,
-0x9f, 0x4f, 0xb7, 0x5c, 0x09, 0x27, 0xa0, 0xeb,
-0x30, 0x3e, 0xa8, 0x4f, 0xe0, 0x5c, 0xf4, 0x27,
-0x65, 0x18, 0x78, 0x64, 0xea, 0x5f, 0x16, 0x7e,
-0x45, 0x4a, 0xb5, 0x76, 0x28, 0xeb, 0xf5, 0xe0,
-0x7a, 0xa7, 0xfb, 0xf4, 0xbf, 0x37, 0xd4, 0x61,
-0xe4, 0x4d, 0xfc, 0x3e, 0xa6, 0x85, 0x5f, 0x88,
-0xb0, 0x61, 0x78, 0xa1, 0xbd, 0xec, 0x43, 0x46,
-0x1e, 0x29, 0xae, 0xc1, 0xb9, 0x95, 0xab, 0x1d,
-0xfe, 0x55, 0xec, 0xe0, 0x57, 0x5e, 0xac, 0x95,
-0xb2, 0xfc, 0xc6, 0x62, 0x7e, 0xa5, 0x19, 0x1f,
-0x82, 0xc3, 0xbf, 0x06, 0x39, 0x7e, 0xf9, 0x12,
-0xb9, 0xa5, 0x70, 0xc1, 0x64, 0xf9, 0x43, 0x59,
-0x64, 0x14, 0x97, 0x24, 0xca, 0x1d, 0xfe, 0x95,
-0x50, 0x58, 0xae, 0x69, 0x29, 0x95, 0x4f, 0x68,
-0x23, 0xa1, 0x1f, 0xc3, 0x4d, 0xb4, 0x88, 0x11,
-0x8d, 0x3a, 0x75, 0x29, 0xcd, 0x1d, 0xa7, 0xdf,
-0xe0, 0x7e, 0xf5, 0x03, 0xe3, 0x00, 0xc2, 0xd6,
-0x91, 0x78, 0xa4, 0x0f, 0x79, 0x41, 0x98, 0x39,
-0xcf, 0xf1, 0xf8, 0x65, 0xe4, 0xc5, 0xc9, 0x07,
-0xb4, 0x05, 0xf9, 0x57, 0x20, 0x1e, 0x58, 0xae,
-0xb4, 0x98, 0x81, 0x45, 0x1e, 0x07, 0xbf, 0x4a,
-0x05, 0x7e, 0x09, 0xd9, 0xc6, 0xfd, 0x1c, 0xb6,
-0xfc, 0x03, 0x9c, 0xac, 0x79, 0x1c, 0xfc, 0x52,
-0x15, 0x81, 0x05, 0x08, 0x01, 0x03, 0x24, 0x8f,
-0xe8, 0x51, 0xb7, 0x46, 0x1a, 0x1f, 0x6a, 0xab,
-0xd0, 0x0d, 0x4f, 0x06, 0xbf, 0xbc, 0x16, 0xc2,
-0xba, 0xd0, 0x03, 0x44, 0x61, 0x41, 0x71, 0xc1,
-0x1a, 0xf9, 0x44, 0x53, 0x0a, 0xba, 0x8a, 0x7d,
-0x6b, 0x1c, 0xfc, 0x9a, 0x66, 0xfb, 0xf9, 0xc2,
-0x37, 0xe1, 0xbc, 0x82, 0xfc, 0x0b, 0xfd, 0x3c,
-0x32, 0x32, 0x44, 0xab, 0x78, 0x79, 0xb6, 0x7e,
-0x43, 0x70, 0x99, 0x1f, 0x28, 0x3d, 0x24, 0xdc,
-0x58, 0x80, 0xa4, 0xc6, 0x38, 0x9f, 0x17, 0x32,
-0x36, 0x60, 0x1b, 0x47, 0xbf, 0xa1, 0x75, 0x2b,
-0xd5, 0x92, 0xa7, 0x95, 0xa4, 0x55, 0x96, 0x3f,
-0xac, 0x84, 0x48, 0xcf, 0x6d, 0xdd, 0x46, 0x40,
-0xca, 0x6f, 0x85, 0x8c, 0x7e, 0xc3, 0xc2, 0xaf,
-0xd6, 0x3e, 0xf2, 0x04, 0xc6, 0x87, 0x51, 0x34,
-0xe8, 0x1e, 0x08, 0xdc, 0x80, 0x46, 0xb6, 0x7e,
-0xc3, 0x1a, 0x3b, 0x7d, 0xa2, 0x69, 0xbb, 0x01,
-0x02, 0xbb, 0x03, 0xac, 0x1a, 0x98, 0xd1, 0x6f,
-0x28, 0x6f, 0x91, 0x3a, 0x63, 0x69, 0xfc, 0xd6,
-0xef, 0x6e, 0x3d, 0x21, 0x85, 0x8d, 0x9c, 0xf8,
-0xad, 0x03, 0xca, 0x59, 0xe2, 0xbf, 0xc5, 0x1b,
-0x2f, 0xca, 0xe8, 0x37, 0xf0, 0x5f, 0xb1, 0x3e,
-0x13, 0xd6, 0xf9, 0x5a, 0x36, 0x9c, 0x01, 0xed,
-0x24, 0xfc, 0x7a, 0xd1, 0xe5, 0xf1, 0xdc, 0x2c,
-0xfd, 0x86, 0x15, 0x81, 0x24, 0xd4, 0x54, 0x4e,
-0x98, 0xe1, 0x97, 0x8e, 0x2b, 0xca, 0xd2, 0x6f,
-0xf0, 0x67, 0xc8, 0xf8, 0x17, 0xa2, 0x15, 0x4b,
-0x1b, 0x4e, 0x31, 0x9f, 0x14, 0x69, 0x43, 0x04,
-0xb2, 0x74, 0x10, 0xf1, 0xcb, 0x9f, 0xd1, 0x6f,
-0xd8, 0xef, 0x98, 0xa4, 0xc9, 0x36, 0x11, 0x6b,
-0x29, 0xe3, 0x8a, 0x29, 0x47, 0xbf, 0x31, 0x55,
-0xbc, 0xcf, 0xab, 0x49, 0x29, 0xbc, 0x04, 0x33,
-0xfa, 0xe4, 0xfb, 0x10, 0x38, 0xda, 0xc9, 0x9c,
-0xbe, 0xca, 0x55, 0x19, 0xfd, 0x06, 0xcf, 0x1f,
-0xa6, 0x7d, 0x23, 0x6d, 0x9b, 0xe1, 0x55, 0x3a,
-0x77, 0xc8, 0x75, 0x5f, 0xdb, 0x74, 0x63, 0x3f,
-0x9d, 0x96, 0xf6, 0xde, 0x2b, 0xdb, 0xfa, 0x8d,
-0x69, 0xc2, 0x27, 0xf8, 0x9e, 0x92, 0x4d, 0xf5,
-0x63, 0x78, 0x0e, 0x61, 0xcb, 0xf3, 0x49, 0x74,
-0x44, 0xa9, 0xeb, 0xf7, 0xec, 0xcd, 0xe8, 0x37,
-0x3e, 0xb5, 0xfc, 0x61, 0xdb, 0x7e, 0xe3, 0x3d,
-0x5a, 0x33, 0xb0, 0xf1, 0xd9, 0x1d, 0x75, 0x8d,
-0xa9, 0xd6, 0xf0, 0x30, 0xae, 0x2f, 0x87, 0x7f,
-0x3d, 0xc6, 0xfa, 0x83, 0xd1, 0xa9, 0xff, 0x75,
-0x58, 0xa7, 0xcf, 0x4a, 0x7b, 0x9e, 0x0b, 0x3c,
-0xa6, 0xd1, 0xe4, 0xac, 0xc1, 0xfc, 0x1a, 0xb7,
-0xcd, 0xbf, 0x0c, 0xbe, 0x06, 0x53, 0xb8, 0xf4,
-0xfa, 0xe9, 0xff, 0x50, 0x66, 0x31, 0x63, 0x89,
-0xb1, 0x65, 0xee, 0x15, 0xa9, 0x4b, 0x57, 0x91,
-0xf6, 0x2c, 0xfd, 0x86, 0x18, 0x7b, 0x0f, 0xec,
-0xe0, 0xf9, 0x79, 0xc4, 0x8b, 0x38, 0xd9, 0xdd,
-0x8f, 0x0f, 0x61, 0x6b, 0x36, 0x7e, 0xd5, 0x31,
-0x57, 0x60, 0xde, 0xf5, 0x4e, 0xfa, 0x1a, 0x66,
-0xfc, 0x98, 0x1c, 0xc3, 0x30, 0x79, 0xc9, 0xb0,
-0xfc, 0xeb, 0x71, 0xf8, 0x85, 0x3e, 0xb3, 0xfc,
-0x84, 0xfa, 0x08, 0xbc, 0x88, 0x4e, 0x4f, 0xde,
-0x0d, 0x83, 0x50, 0x83, 0xf8, 0x25, 0x2d, 0x9b,
-0xa4, 0xdf, 0x18, 0x86, 0xf7, 0xd0, 0xb7, 0x5c,
-0x3e, 0x0c, 0xa3, 0x70, 0x18, 0xe6, 0xf5, 0x22,
-0x90, 0xa5, 0x33, 0xfc, 0xcb, 0x8a, 0xde, 0xdf,
-0xd7, 0xdf, 0x80, 0x05, 0xe6, 0x23, 0x88, 0x5f,
-0xe8, 0xf4, 0x76, 0x99, 0x1d, 0x88, 0x5f, 0xb1,
-0x09, 0xfa, 0x0d, 0xc6, 0x41, 0x24, 0x4b, 0xbf,
-0xb1, 0x2b, 0xc6, 0x88, 0x98, 0xdf, 0xd6, 0x6f,
-0x20, 0xda, 0xce, 0x63, 0xfa, 0x8d, 0x05, 0xc4,
-0x8c, 0x3c, 0x02, 0x15, 0x08, 0x0a, 0xfe, 0xc3,
-0x89, 0x04, 0xcc, 0xee, 0xc5, 0xbe, 0x38, 0xfc,
-0x8b, 0xfb, 0xf9, 0x94, 0xef, 0x94, 0x9c, 0x6e,
-0x7d, 0x07, 0xae, 0x3a, 0xe6, 0x19, 0x2e, 0x1a,
-0x6d, 0x1d, 0x5c, 0x3d, 0x2f, 0xe5, 0xfd, 0x07,
-0x39, 0x6d, 0xf1, 0xaf, 0x4b, 0xcf, 0x33, 0x7f,
-0xd8, 0xef, 0xfb, 0xbc, 0x68, 0xb8, 0xef, 0x1f,
-0xa0, 0xfe, 0x88, 0xe7, 0xf3, 0x97, 0x87, 0x94,
-0x37, 0x03, 0xd7, 0x9a, 0x7f, 0xff, 0xb9, 0x3c,
-0xe8, 0xca, 0xc6, 0xaf, 0x01, 0xdf, 0x08, 0xd2,
-0xae, 0x31, 0x13, 0x27, 0x8e, 0xf3, 0x2f, 0x6d,
-0x1e, 0x33, 0xc6, 0xe3, 0x57, 0xca, 0x83, 0xb4,
-0x4b, 0x79, 0x5e, 0xaf, 0x4e, 0x7b, 0x92, 0x9b,
-0x87, 0xf4, 0x97, 0x20, 0x90, 0xf6, 0x64, 0xeb,
-0x0f, 0xed, 0xb9, 0xb0, 0x81, 0x8c, 0x1c, 0xa6,
-0x7b, 0x2b, 0x78, 0x52, 0x37, 0x1b, 0xbf, 0x2c,
-0xed, 0x8a, 0x2d, 0x44, 0xcc, 0xd4, 0xbf, 0xc6,
-0xf3, 0x2f, 0x1f, 0x0b, 0x21, 0x9e, 0x17, 0x49,
-0x5d, 0x5e, 0xff, 0x12, 0xba, 0xc1, 0x71, 0xf8,
-0x65, 0xc1, 0xd6, 0x78, 0x63, 0x02, 0x7e, 0xb1,
-0xfb, 0x28, 0xe7, 0x94, 0xe9, 0xe2, 0x86, 0xa7,
-0x99, 0xa0, 0x71, 0x12, 0x7e, 0x21, 0x9e, 0x3a,
-0xb4, 0x6b, 0x08, 0x17, 0xc8, 0xf6, 0x8b, 0xe8,
-0x0f, 0x33, 0xe3, 0xca, 0xe4, 0xe7, 0x27, 0xe0,
-0xd7, 0x89, 0xce, 0x7b, 0xc9, 0x71, 0xca, 0x65,
-0x87, 0x0c, 0xbf, 0x5e, 0x8a, 0x97, 0xa5, 0x3d,
-0xf7, 0xd9, 0xeb, 0xcb, 0xc1, 0xaf, 0xab, 0x1b,
-0x8e, 0x30, 0x21, 0x62, 0xda, 0xb7, 0x50, 0x3e,
-0x0c, 0xe7, 0x12, 0x0b, 0xcd, 0x6c, 0xfd, 0xe1,
-0x6e, 0x31, 0x8a, 0x64, 0xc3, 0x90, 0x31, 0x26,
-0x3a, 0x3f, 0x6a, 0x9c, 0xb3, 0x34, 0x93, 0x0e,
-0x7e, 0x89, 0x71, 0x2d, 0xcc, 0x0d, 0x66, 0x1e,
-0xd4, 0xb9, 0x8e, 0x1f, 0xa2, 0xb1, 0xe8, 0xa3,
-0x89, 0xf8, 0x95, 0x63, 0x2d, 0x7c, 0x16, 0xaf,
-0xbe, 0x64, 0x2c, 0x33, 0xc7, 0xeb, 0x0f, 0x2d,
-0xfc, 0x9a, 0xae, 0x59, 0xc6, 0x71, 0xd8, 0xd7,
-0x5e, 0x76, 0x62, 0xbc, 0xfe, 0x70, 0xaf, 0x12,
-0x34, 0x65, 0xe6, 0x52, 0xf8, 0xd8, 0x93, 0x99,
-0xb1, 0x4f, 0xe0, 0x5f, 0xbe, 0x84, 0xa7, 0xd2,
-0x32, 0x18, 0xff, 0x82, 0x05, 0xcc, 0xc8, 0xd2,
-0x1f, 0x5a, 0x6a, 0x43, 0x87, 0x76, 0x4d, 0xe6,
-0x5f, 0x8e, 0xc2, 0x4d, 0x18, 0x88, 0x05, 0x15,
-0xaa, 0x75, 0x65, 0x02, 0x7e, 0x09, 0x49, 0xa1,
-0xc4, 0x65, 0x75, 0x15, 0x9a, 0x75, 0xe5, 0x62,
-0xf8, 0x65, 0x19, 0xce, 0x15, 0x07, 0xbf, 0x6c,
-0xfe, 0x45, 0xfa, 0xb2, 0x89, 0x58, 0x30, 0x1b,
-0xbf, 0x04, 0xff, 0x2a, 0x16, 0x5d, 0x6d, 0xaa,
-0x83, 0x07, 0x98, 0x10, 0x71, 0xe4, 0x36, 0xde,
-0x67, 0x07, 0xbf, 0x26, 0xf4, 0xf9, 0x26, 0x6e,
-0x68, 0x13, 0xf9, 0x17, 0xc7, 0xaf, 0x7e, 0xf6,
-0x27, 0xc2, 0x4b, 0x63, 0x68, 0xdc, 0xcc, 0xdb,
-0xec, 0xcf, 0xd2, 0x1f, 0x42, 0xb5, 0xea, 0x61,
-0xb4, 0x2b, 0xc9, 0x93, 0xd5, 0x18, 0xa2, 0x27,
-0x0d, 0xc6, 0xc8, 0x26, 0xe0, 0x57, 0x44, 0xf4,
-0x59, 0x45, 0xf0, 0xf5, 0x47, 0xfa, 0x12, 0xd6,
-0x28, 0x26, 0xe1, 0x17, 0x0c, 0x64, 0x3d, 0x04,
-0xa5, 0x80, 0x8f, 0x3d, 0xc3, 0xbf, 0xde, 0xca,
-0xee, 0xb3, 0x65, 0x4c, 0x67, 0x62, 0xce, 0xc1,
-0x8c, 0x7e, 0xe3, 0xde, 0xf1, 0x6d, 0x8a, 0xb2,
-0xf4, 0x87, 0xb1, 0x6c, 0xfc, 0xe2, 0xfc, 0x6b,
-0x04, 0x16, 0xb0, 0xc7, 0xc2, 0xf3, 0xd8, 0x50,
-0x30, 0x81, 0x7f, 0x31, 0xb6, 0x15, 0x11, 0x65,
-0xaf, 0x1b, 0x19, 0x7e, 0xad, 0x17, 0x46, 0x16,
-0xff, 0x7a, 0x48, 0xb0, 0x2d, 0xb6, 0xd0, 0x2a,
-0x98, 0xac, 0xd7, 0x0b, 0x2c, 0xfb, 0xed, 0x71,
-0xf8, 0x57, 0x42, 0xe0, 0x57, 0x5a, 0xd0, 0x2e,
-0x5a, 0x66, 0xca, 0xf7, 0x92, 0xe9, 0xdf, 0x5c,
-0x97, 0x98, 0xc5, 0xde, 0xe7, 0xc1, 0x8c, 0x7e,
-0xe3, 0x0f, 0xe8, 0xc7, 0x90, 0x76, 0x7d, 0x07,
-0xfe, 0xd0, 0x71, 0x65, 0xda, 0xb7, 0x5a, 0x9e,
-0xae, 0xbf, 0x9a, 0x98, 0x9b, 0xde, 0x98, 0xe1,
-0x5f, 0xd3, 0x76, 0x4b, 0xb8, 0x64, 0x0e, 0x0b,
-0x9f, 0xa0, 0xe3, 0xda, 0xe9, 0x92, 0x87, 0xda,
-0xcf, 0x2d, 0x7f, 0x86, 0x2d, 0x22, 0x0b, 0xbf,
-0x40, 0xe8, 0xb1, 0x07, 0xbc, 0x67, 0x65, 0x34,
-0x3a, 0xe6, 0x0d, 0xf8, 0xce, 0xcb, 0x9f, 0x1a,
-0x47, 0x53, 0xf3, 0xd2, 0x9d, 0x23, 0xb2, 0xe9,
-0xe0, 0x17, 0xe5, 0xfd, 0x61, 0xfa, 0xc3, 0x97,
-0xca, 0x74, 0xb6, 0xde, 0x2f, 0x18, 0xeb, 0xda,
-0xcb, 0x06, 0x0b, 0x7e, 0x44, 0x3e, 0x72, 0xf2,
-0x87, 0x06, 0xd7, 0x1f, 0x72, 0xda, 0x45, 0x66,
-0x88, 0x35, 0xf8, 0x53, 0x28, 0x43, 0x20, 0x0b,
-0x98, 0xb6, 0x7e, 0x43, 0xb8, 0x94, 0xbc, 0x2c,
-0x97, 0x72, 0x98, 0x27, 0x51, 0x71, 0xa1, 0x8d,
-0xe3, 0x5f, 0xf5, 0x66, 0x55, 0x92, 0x97, 0xc2,
-0xbb, 0x58, 0xd0, 0x3e, 0x4a, 0xde, 0x53, 0xfc,
-0x5c, 0x7f, 0x38, 0x1e, 0xbf, 0x0a, 0xd0, 0x6f,
-0x30, 0xa3, 0x87, 0xfb, 0x84, 0x8f, 0xc1, 0xaa,
-0x7f, 0x65, 0xf0, 0x4b, 0x72, 0x5c, 0xe5, 0x3f,
-0xa1, 0x51, 0x34, 0x2a, 0x14, 0x80, 0xc3, 0x32,
-0x8c, 0xc7, 0xaf, 0x1b, 0xd1, 0x3f, 0x4b, 0xcf,
-0x2b, 0x75, 0xb6, 0x7f, 0xae, 0x36, 0x6f, 0x4e,
-0xca, 0x09, 0x5b, 0xbf, 0x11, 0xb4, 0x73, 0x68,
-0xb6, 0xcf, 0x9c, 0xe9, 0x38, 0x4f, 0x3d, 0xa3,
-0xdf, 0x10, 0x5a, 0xf4, 0x08, 0x2b, 0xe7, 0x55,
-0xa6, 0x0e, 0x31, 0xfd, 0xe1, 0x5e, 0x3d, 0x98,
-0x72, 0x77, 0xf9, 0x5b, 0x33, 0xfc, 0xeb, 0x1c,
-0x5c, 0xdb, 0xeb, 0xdb, 0x27, 0x7f, 0x42, 0x5f,
-0x82, 0xea, 0x37, 0x59, 0x6e, 0x10, 0xc6, 0x98,
-0x78, 0xf2, 0x69, 0x19, 0xac, 0xfa, 0xd7, 0xa5,
-0xcc, 0x0d, 0x62, 0x0f, 0x9f, 0x91, 0x87, 0xd2,
-0x63, 0x4a, 0x5d, 0x9f, 0xaf, 0xab, 0x01, 0xfd,
-0xe1, 0xc2, 0xba, 0xbe, 0x82, 0x67, 0xe4, 0x5d,
-0x96, 0x7e, 0xc3, 0xf5, 0x22, 0x7c, 0xb6, 0xb6,
-0x0e, 0xe3, 0x16, 0xf9, 0x45, 0x72, 0x34, 0x30,
-0xaf, 0x1f, 0x8d, 0x21, 0x38, 0xea, 0xaa, 0x4f,
-0x2d, 0x3d, 0xeb, 0x71, 0xea, 0x5f, 0x9f, 0xba,
-0x18, 0xff, 0x42, 0xd8, 0xfa, 0x54, 0xdb, 0x78,
-0x5f, 0x79, 0x3f, 0x76, 0x75, 0x0c, 0x3a, 0xfb,
-0xe7, 0x0c, 0xdc, 0xd8, 0x15, 0xb0, 0xeb, 0x5f,
-0x56, 0xae, 0xc9, 0x1d, 0x66, 0x14, 0x18, 0x2a,
-0x8e, 0xb1, 0xb9, 0x88, 0xb6, 0x09, 0x20, 0xdb,
-0x3e, 0x11, 0xbf, 0xf8, 0xd8, 0x67, 0x73, 0x20,
-0xcb, 0xe9, 0x84, 0xea, 0x1e, 0x4f, 0x32, 0x27,
-0x64, 0xe1, 0x57, 0xa1, 0x93, 0x3f, 0xdc, 0xed,
-0x3d, 0x07, 0xab, 0xd8, 0x34, 0x0d, 0x31, 0xc5,
-0x38, 0x7b, 0xc7, 0xe2, 0x13, 0xf1, 0xeb, 0xee,
-0x51, 0xfd, 0x55, 0x0c, 0x45, 0xbe, 0x21, 0x74,
-0x0e, 0x75, 0x93, 0xf0, 0x2b, 0x6c, 0x3a, 0x69,
-0x43, 0x37, 0x1a, 0xe4, 0x90, 0xc2, 0xf3, 0x6c,
-0xe3, 0xf0, 0x8b, 0xa1, 0xa7, 0xfc, 0x20, 0xad,
-0x87, 0x39, 0xc8, 0xbf, 0x02, 0xc7, 0x61, 0x23,
-0xcc, 0x61, 0xb9, 0xdc, 0x71, 0xf8, 0x65, 0x97,
-0x56, 0x61, 0xa5, 0x79, 0x03, 0x1a, 0xc6, 0x0e,
-0x12, 0x34, 0xa3, 0x49, 0x25, 0x83, 0x5f, 0xd2,
-0x4b, 0x09, 0xae, 0x3c, 0x7f, 0xac, 0x1d, 0xb1,
-0x60, 0x88, 0xf3, 0x2f, 0xae, 0xa8, 0xbf, 0x2f,
-0xe2, 0xe0, 0x57, 0x81, 0x79, 0x2e, 0x91, 0xfc,
-0xf0, 0xc1, 0x1a, 0xf9, 0x08, 0x9c, 0xa6, 0x75,
-0x43, 0x05, 0x0b, 0x1b, 0x8e, 0x98, 0xbf, 0x5d,
-0x53, 0x3b, 0x14, 0xac, 0x91, 0xb2, 0xf9, 0x97,
-0x56, 0xdf, 0xc7, 0xd2, 0x86, 0xaa, 0x90, 0xa3,
-0xc8, 0xe7, 0xe1, 0x46, 0x36, 0xd2, 0x3d, 0xd9,
-0xfa, 0x43, 0x36, 0x9c, 0xcb, 0xbb, 0x65, 0xc4,
-0xaf, 0x85, 0x75, 0x29, 0x36, 0x40, 0x7a, 0x8e,
-0xd4, 0xbd, 0xee, 0x9b, 0xcc, 0xbf, 0x86, 0x09,
-0x5b, 0xf8, 0xc1, 0x37, 0xec, 0x7c, 0xcb, 0x31,
-0x4f, 0xb3, 0x3b, 0xab, 0xfe, 0x25, 0x60, 0x6b,
-0xd5, 0xf4, 0xd2, 0x5f, 0xec, 0x14, 0x9c, 0xd1,
-0xdc, 0x97, 0xe4, 0x40, 0x96, 0x54, 0x6c, 0xfc,
-0x52, 0x04, 0x64, 0x47, 0xbc, 0xd6, 0x26, 0x02,
-0x01, 0xe2, 0xcc, 0xb7, 0x6c, 0x9e, 0x88, 0x5f,
-0xc8, 0x07, 0x3f, 0x92, 0x58, 0xda, 0xb0, 0x41,
-0x30, 0xb2, 0xa5, 0x09, 0xf9, 0xb9, 0xf1, 0xf8,
-0xe5, 0xc0, 0xd6, 0x37, 0x28, 0x2f, 0xf4, 0xb0,
-0x2b, 0xd2, 0x2d, 0x93, 0xf1, 0x8b, 0xe5, 0x76,
-0x8c, 0x95, 0x68, 0xd0, 0x93, 0xca, 0xc5, 0xf8,
-0x17, 0x7a, 0xe3, 0xe5, 0x29, 0x2b, 0x6d, 0xf8,
-0x01, 0xe2, 0xd7, 0xec, 0x2f, 0xc5, 0x2f, 0x29,
-0xb8, 0x48, 0xb5, 0x39, 0xc8, 0x45, 0xf1, 0xab,
-0x11, 0xf6, 0x04, 0x82, 0xd1, 0x94, 0xd0, 0xcf,
-0x57, 0x46, 0x27, 0xe1, 0x17, 0x20, 0xdb, 0xe2,
-0xf8, 0x55, 0xbc, 0x61, 0x8d, 0xad, 0x4f, 0x70,
-0xc9, 0x9f, 0x4a, 0xe3, 0xf1, 0xab, 0xbf, 0x68,
-0xb9, 0xd0, 0xcf, 0x23, 0x4f, 0x71, 0xf4, 0xf3,
-0xe2, 0x5d, 0x2d, 0x95, 0x44, 0x9b, 0xa5, 0x71,
-0xf9, 0x07, 0x70, 0x00, 0x6a, 0xd8, 0x9f, 0xce,
-0xc0, 0x59, 0x7d, 0x15, 0xc7, 0x2f, 0x25, 0x1b,
-0xbf, 0xc0, 0x43, 0x70, 0x14, 0xbb, 0xf4, 0x00,
-0x20, 0x11, 0x3b, 0xb1, 0xa8, 0x5b, 0x5a, 0xa0,
-0xa1, 0xe1, 0xe0, 0x57, 0xa3, 0xc3, 0xbf, 0xa0,
-0x25, 0xaa, 0xdf, 0xc1, 0x8d, 0x3d, 0x86, 0xde,
-0xe4, 0xb9, 0x28, 0xff, 0x92, 0x9e, 0x90, 0x02,
-0x86, 0xcc, 0xc6, 0x7e, 0x35, 0x99, 0x29, 0xc6,
-0xee, 0xe0, 0x97, 0xc5, 0x73, 0x07, 0xe0, 0x80,
-0x54, 0x23, 0x40, 0x8a, 0x3d, 0x1f, 0xa6, 0x9f,
-0x07, 0x07, 0xbf, 0x32, 0xd0, 0x46, 0x5e, 0xe4,
-0x79, 0x51, 0x38, 0x79, 0x51, 0xfc, 0x62, 0xb4,
-0xcb, 0x1c, 0x86, 0x9f, 0xb0, 0xb2, 0x97, 0x6e,
-0xcf, 0xb2, 0xcd, 0xd1, 0x38, 0x7e, 0x15, 0x30,
-0xda, 0x35, 0x05, 0x8d, 0x9f, 0xb0, 0xb4, 0xa1,
-0x40, 0xb4, 0x86, 0x44, 0xc3, 0x04, 0xfd, 0xc6,
-0xc3, 0x21, 0x92, 0xc3, 0x5f, 0x36, 0x77, 0x88,
-0x28, 0x3c, 0x6a, 0x62, 0xf8, 0xa5, 0x64, 0xe3,
-0x97, 0x89, 0xd1, 0xa0, 0x06, 0xfb, 0x34, 0x95,
-0x25, 0xbd, 0xd9, 0x95, 0x7c, 0xb3, 0xb3, 0x99,
-0xec, 0xca, 0xc6, 0xaf, 0x6b, 0xd3, 0x37, 0xdd,
-0xd7, 0x76, 0x19, 0x1a, 0xf9, 0xe9, 0xe9, 0x67,
-0xe5, 0x4b, 0xf2, 0x38, 0x23, 0x5b, 0x2d, 0x7d,
-0x94, 0xcd, 0xbf, 0xa6, 0xb3, 0xd5, 0x94, 0x86,
-0x73, 0xee, 0xba, 0xfe, 0xfc, 0xae, 0xaf, 0x0f,
-0x88, 0x20, 0xf0, 0x99, 0xb6, 0x0c, 0x7e, 0x01,
-0xc3, 0x2f, 0xdf, 0xb3, 0x32, 0x31, 0x8e, 0xb6,
-0x84, 0x3f, 0x47, 0x42, 0xf7, 0xb9, 0x71, 0x94,
-0x29, 0xea, 0xcf, 0x3e, 0xe4, 0xe0, 0xd7, 0x83,
-0xb0, 0x77, 0x3b, 0x86, 0xa9, 0x0b, 0x67, 0x13,
-0xfa, 0x06, 0xe8, 0xe9, 0x29, 0x0b, 0x71, 0x7d,
-0xed, 0x48, 0x06, 0xcd, 0xca, 0x1a, 0x7f, 0x06,
-0xbf, 0xb4, 0x7d, 0x7a, 0x95, 0xe9, 0x1e, 0x26,
-0x4d, 0xb0, 0x4e, 0x2b, 0x33, 0x6f, 0x6c, 0x26,
-0x7d, 0xca, 0x3a, 0x7f, 0x90, 0xe7, 0x0f, 0xb3,
-0xf1, 0x8b, 0x2b, 0xc1, 0x0c, 0xe4, 0x32, 0xdc,
-0xc9, 0xf4, 0xc1, 0x0e, 0xae, 0x66, 0xc9, 0xc2,
-0x2f, 0x0c, 0xbf, 0xd1, 0x1f, 0x0e, 0xcb, 0x06,
-0x1c, 0x85, 0xbd, 0xe8, 0xe2, 0x70, 0x4e, 0x99,
-0x3f, 0xf4, 0x0e, 0x4f, 0xc4, 0x2f, 0x0c, 0xf5,
-0x13, 0x3c, 0x6d, 0x88, 0x7e, 0xc3, 0x1a, 0x17,
-0xe3, 0x44, 0x13, 0xf8, 0x57, 0xf9, 0x30, 0x7c,
-0x06, 0xf3, 0x18, 0x0e, 0x2e, 0x00, 0x91, 0x8b,
-0x0b, 0x98, 0x93, 0xf8, 0xd7, 0x6f, 0x95, 0x4e,
-0x0c, 0xe3, 0x0b, 0x92, 0xe4, 0xd7, 0xf6, 0x95,
-0xf4, 0x78, 0xfc, 0xc2, 0x98, 0xff, 0x7d, 0x9d,
-0xd5, 0xbf, 0xb0, 0xcf, 0x15, 0xd4, 0x6e, 0xe3,
-0xe0, 0x97, 0xbe, 0x57, 0x0d, 0xf6, 0x79, 0xe6,
-0x13, 0xd3, 0xc4, 0x50, 0xe4, 0xf0, 0xc1, 0x30,
-0x59, 0xa3, 0xe2, 0x15, 0xd3, 0x33, 0x8f, 0x38,
-0xf9, 0xc3, 0xef, 0x99, 0xcf, 0x37, 0x23, 0xff,
-0xfa, 0x5c, 0x4e, 0xd3, 0xdf, 0x37, 0x21, 0xee,
-0x7c, 0xfe, 0xb5, 0x19, 0xda, 0xb9, 0x50, 0xdd,
-0x9b, 0x4b, 0x87, 0xcb, 0x1d, 0xfd, 0x06, 0x1b,
-0x57, 0xfd, 0x31, 0xdf, 0x0f, 0x1b, 0x86, 0xcd,
-0x31, 0x7d, 0xce, 0x2b, 0x05, 0x7b, 0xdb, 0x46,
-0xe3, 0xe7, 0xca, 0xea, 0x0f, 0x20, 0xa2, 0xd9,
-0xfa, 0x43, 0x31, 0x5f, 0x69, 0xce, 0xbf, 0x5e,
-0x12, 0x44, 0xec, 0xd7, 0xf0, 0x39, 0x63, 0xd0,
-0x4e, 0xfe, 0xd0, 0xb4, 0xf2, 0x87, 0x9e, 0xae,
-0x56, 0x87, 0x88, 0x0d, 0xd1, 0xe7, 0xf0, 0x4a,
-0x1e, 0xf2, 0x2f, 0xf1, 0x7c, 0xa2, 0x4e, 0xfe,
-0x90, 0x6c, 0x50, 0xe7, 0x59, 0x3c, 0x45, 0xef,
-0x12, 0xc6, 0x47, 0x93, 0xf9, 0x57, 0x06, 0xc8,
-0x9e, 0x13, 0x86, 0xc5, 0xbf, 0x68, 0x86, 0x7f,
-0x09, 0x02, 0x75, 0x79, 0xd2, 0xda, 0xa3, 0x81,
-0x57, 0x2c, 0x4d, 0x4e, 0x06, 0xbf, 0x1a, 0x46,
-0xad, 0x29, 0x40, 0xec, 0xbe, 0xc0, 0x77, 0x49,
-0x34, 0x8c, 0x08, 0x2d, 0x0d, 0xc3, 0xaf, 0x8f,
-0x1d, 0xfe, 0x05, 0x82, 0x7f, 0x15, 0x7f, 0x41,
-0xfd, 0x59, 0xfc, 0xab, 0xc3, 0x15, 0xa4, 0x59,
-0x78, 0xea, 0xf4, 0x67, 0x22, 0xff, 0xda, 0x31,
-0x89, 0x7f, 0x75, 0x09, 0x44, 0x1b, 0x16, 0x53,
-0x91, 0x68, 0x99, 0x4e, 0x05, 0x16, 0xe4, 0xd8,
-0xfc, 0x2b, 0x70, 0x9c, 0xbe, 0x48, 0xcb, 0x18,
-0x16, 0x1c, 0xa3, 0xbc, 0x0d, 0xdb, 0xff, 0xf5,
-0x5b, 0xe0, 0xfa, 0x8d, 0x23, 0xc6, 0x69, 0xad,
-0x76, 0xd0, 0x87, 0xf8, 0x45, 0x4f, 0xc5, 0x43,
-0x8c, 0x88, 0xbd, 0x9d, 0xc3, 0xdb, 0x88, 0xfc,
-0x21, 0xdb, 0x13, 0x51, 0x64, 0xbd, 0x6c, 0x7b,
-0x70, 0x5c, 0x5f, 0x48, 0x88, 0x68, 0x88, 0x5f,
-0x42, 0xd7, 0xb4, 0xcb, 0x75, 0x58, 0x3d, 0x24,
-0xf2, 0x87, 0x41, 0xce, 0x4f, 0x79, 0xac, 0x75,
-0x50, 0x18, 0xbd, 0x16, 0x7e, 0x6d, 0x12, 0x6a,
-0x43, 0x0b, 0xbf, 0x2c, 0xfe, 0xb5, 0x56, 0x18,
-0xaf, 0xdb, 0xef, 0xfc, 0x63, 0x4c, 0x2d, 0xcf,
-0xf9, 0x17, 0x38, 0xfc, 0x6b, 0x2d, 0x1a, 0x37,
-0xae, 0xb6, 0xe3, 0x43, 0xc4, 0x2f, 0xd2, 0x26,
-0x86, 0xec, 0x95, 0xac, 0xb1, 0x0f, 0x41, 0x2b,
-0x78, 0xb3, 0xf9, 0x57, 0x61, 0x07, 0x30, 0xb5,
-0x3c, 0x97, 0x1d, 0x7e, 0x81, 0xae, 0x29, 0x37,
-0x41, 0x06, 0xc9, 0x83, 0x84, 0xef, 0xfa, 0xf9,
-0x42, 0xf8, 0xba, 0x49, 0xf8, 0x35, 0x8e, 0x7f,
-0x89, 0xb9, 0x60, 0xf8, 0x75, 0x60, 0x22, 0x2f,
-0x50, 0x0e, 0xc4, 0x2d, 0xfe, 0xc5, 0xdb, 0x20,
-0x7e, 0x11, 0xa6, 0x24, 0xf4, 0xc5, 0xc3, 0x36,
-0xbf, 0xf0, 0x0f, 0x28, 0x6f, 0x91, 0x1a, 0x81,
-0x5f, 0xfc, 0x23, 0xf4, 0xf3, 0x36, 0x7e, 0x11,
-0x27, 0x91, 0x68, 0xf1, 0x2f, 0xe1, 0xc7, 0x14,
-0x45, 0x6b, 0xc9, 0xf0, 0xaf, 0x95, 0x8b, 0x1e,
-0x41, 0x43, 0xdb, 0x24, 0xae, 0x44, 0x44, 0x1b,
-0x86, 0x5f, 0x6c, 0x7f, 0x93, 0x67, 0x0d, 0x87,
-0xda, 0x9f, 0x14, 0x6f, 0xa4, 0x72, 0xcf, 0xa2,
-0x14, 0xfc, 0x04, 0x2e, 0x47, 0xfe, 0x25, 0xf2,
-0x1b, 0xa9, 0x7c, 0xd1, 0xd5, 0x02, 0xab, 0xcf,
-0x8b, 0x38, 0x36, 0x9d, 0x17, 0x82, 0xbd, 0x4f,
-0x2d, 0xfe, 0x25, 0x21, 0x5a, 0x49, 0xfc, 0x4f,
-0x03, 0xd2, 0x59, 0xa9, 0xfa, 0x9b, 0x68, 0x3c,
-0x2e, 0xbd, 0x06, 0x1c, 0x97, 0x2d, 0xbe, 0xbc,
-0xda, 0xc2, 0xaf, 0xcb, 0x81, 0x58, 0x40, 0x46,
-0x89, 0xde, 0xda, 0x01, 0x01, 0x66, 0xec, 0xb7,
-0xf5, 0xf3, 0x99, 0xfc, 0x21, 0x1a, 0x15, 0x62,
-0x93, 0x57, 0x0b, 0xf0, 0x9c, 0xe7, 0xeb, 0x62,
-0xbe, 0x4a, 0x6f, 0x17, 0xf8, 0xb5, 0x3e, 0xc3,
-0x3d, 0xfd, 0x15, 0xca, 0x2c, 0xc4, 0xa6, 0x97,
-0xe3, 0xe1, 0xfd, 0xe2, 0x19, 0x26, 0x8a, 0x77,
-0x7a, 0x59, 0x7f, 0x3c, 0x02, 0xb6, 0x18, 0xb4,
-0xc9, 0xed, 0xf8, 0x7c, 0x78, 0x7f, 0x06, 0x85,
-0x2e, 0x6e, 0x85, 0x93, 0x3f, 0x74, 0xe6, 0x82,
-0x89, 0xed, 0xe1, 0x45, 0x76, 0xe5, 0x6d, 0x8b,
-0x5b, 0x39, 0xfb, 0xbf, 0x8a, 0x74, 0xc5, 0x9e,
-0x53, 0x6e, 0x60, 0x9f, 0x33, 0xfb, 0xbf, 0x40,
-0xec, 0xff, 0x8a, 0x30, 0xd8, 0xaa, 0x61, 0xb4,
-0x6b, 0x50, 0xeb, 0xa2, 0xec, 0x4a, 0xb8, 0x57,
-0x3c, 0xe7, 0x4a, 0x57, 0xa3, 0xc4, 0xde, 0xb1,
-0x29, 0xe3, 0x38, 0xfe, 0x1e, 0x1a, 0x34, 0x6f,
-0x0c, 0xf9, 0x7b, 0xed, 0xf8, 0xf0, 0x12, 0xfe,
-0x3e, 0x77, 0xde, 0x97, 0xf5, 0x3e, 0xd3, 0xa7,
-0x55, 0x66, 0xe8, 0x29, 0x83, 0xaf, 0xd3, 0x4a,
-0xf5, 0x12, 0xf2, 0x2a, 0x43, 0xab, 0x7f, 0x92,
-0xa7, 0x2b, 0x7f, 0x68, 0x67, 0xb0, 0x25, 0x1f,
-0x4f, 0x0a, 0xfc, 0x92, 0x0f, 0x8a, 0xf5, 0xa5,
-0x4e, 0x6b, 0xcf, 0x4a, 0x59, 0x48, 0x97, 0xf5,
-0x31, 0x83, 0x71, 0xfc, 0x2c, 0xfe, 0x65, 0x94,
-0x7c, 0x6e, 0xd7, 0x53, 0x3e, 0xe5, 0x8e, 0xd1,
-0x8b, 0x8e, 0x51, 0x7f, 0x1a, 0x1f, 0x00, 0xfa,
-0xc3, 0x63, 0x96, 0x26, 0xf0, 0xd2, 0x76, 0xd1,
-0x8d, 0x85, 0x91, 0x23, 0x48, 0xc4, 0xaa, 0x19,
-0x11, 0x7b, 0x17, 0xf6, 0x3c, 0x85, 0x3e, 0x61,
-0x21, 0xf9, 0x58, 0xb4, 0x01, 0xba, 0x25, 0xd3,
-0xd5, 0x7d, 0x1a, 0xdb, 0x08, 0x16, 0x79, 0xd7,
-0xf8, 0x57, 0x9d, 0x03, 0xd9, 0x4e, 0x2b, 0x7f,
-0xa8, 0xf4, 0x65, 0xa7, 0x74, 0xaa, 0x33, 0x44,
-0xec, 0x91, 0x10, 0xfc, 0x46, 0xb1, 0xd6, 0xfb,
-0x4e, 0xde, 0x67, 0xcf, 0x30, 0x07, 0x29, 0x46,
-0xc4, 0xa4, 0x51, 0xec, 0x33, 0xcf, 0x47, 0x3d,
-0x09, 0xd6, 0x5a, 0x1e, 0xb2, 0x6a, 0x25, 0x56,
-0xac, 0xfe, 0xa0, 0xd0, 0x0c, 0x58, 0xde, 0x4f,
-0xe0, 0x17, 0x7c, 0xce, 0x5d, 0x4a, 0x81, 0x90,
-0x2f, 0xd6, 0xdb, 0xf5, 0x2f, 0x46, 0xc4, 0xe4,
-0xf4, 0x72, 0x2b, 0x3e, 0x5c, 0x99, 0x71, 0x83,
-0x1f, 0x4b, 0xd5, 0xa2, 0xb6, 0x85, 0x2f, 0x52,
-0x0f, 0x02, 0xd9, 0x49, 0x7b, 0xff, 0xd7, 0xf2,
-0xf1, 0x3e, 0xb3, 0x94, 0x19, 0xcf, 0x72, 0x32,
-0x42, 0xd2, 0x12, 0x9f, 0x0b, 0x15, 0xf2, 0xd9,
-0xb8, 0xfa, 0x59, 0xda, 0x90, 0xee, 0x50, 0x56,
-0x9a, 0xee, 0x05, 0x6c, 0x4e, 0xb5, 0x60, 0x9f,
-0x3b, 0xec, 0xb7, 0xe6, 0x1d, 0xd4, 0xe5, 0x62,
-0x2e, 0x4e, 0xb7, 0x0d, 0xc5, 0xd0, 0x8f, 0x1d,
-0xf3, 0x3e, 0x45, 0xce, 0xc3, 0xd9, 0x15, 0x78,
-0x65, 0xaf, 0x9c, 0xce, 0xb5, 0xf5, 0x1b, 0xac,
-0xab, 0x29, 0xce, 0x19, 0x3f, 0x23, 0xf5, 0x47,
-0x98, 0x3f, 0xdc, 0x75, 0x4e, 0xaf, 0x4f, 0x15,
-0xec, 0x2d, 0x72, 0xf0, 0xeb, 0xd7, 0xf0, 0x0e,
-0xce, 0x57, 0xfe, 0x88, 0xa7, 0x8e, 0x1c, 0x5e,
-0x36, 0xcf, 0xfb, 0xe0, 0xb3, 0x2c, 0x7f, 0x48,
-0xeb, 0xb3, 0xf2, 0x87, 0x66, 0xe9, 0xa7, 0xda,
-0xf3, 0xb4, 0x86, 0x65, 0x0b, 0xab, 0xbd, 0xeb,
-0x43, 0x7a, 0xbe, 0xda, 0x55, 0xf4, 0x6b, 0x51,
-0x11, 0x43, 0xfc, 0x12, 0xfa, 0xf9, 0x54, 0xe3,
-0x61, 0xe5, 0x21, 0xc2, 0x5f, 0xbf, 0x0d, 0xb0,
-0x0d, 0x2a, 0x4c, 0x77, 0x96, 0xc3, 0x7f, 0xdf,
-0xd6, 0xcf, 0x3b, 0xfc, 0x2b, 0xa8, 0x26, 0x20,
-0x07, 0x2a, 0x93, 0x11, 0xbc, 0x22, 0x15, 0x30,
-0x34, 0xb7, 0xb4, 0xfa, 0x80, 0xf8, 0xf5, 0x0e,
-0x86, 0x10, 0xf9, 0x21, 0xf4, 0xcf, 0x83, 0xf0,
-0xb9, 0xb6, 0x38, 0xa3, 0xbb, 0x18, 0x9f, 0x3f,
-0xbc, 0x06, 0xe7, 0x54, 0x1a, 0x85, 0x77, 0xe0,
-0x6a, 0xea, 0x63, 0xc6, 0xf8, 0xfc, 0xe1, 0x6d,
-0x9c, 0x7f, 0xfd, 0xc4, 0xf4, 0x76, 0x31, 0x7a,
-0x82, 0xbc, 0x3b, 0xdf, 0xbe, 0xcf, 0xc6, 0x49,
-0xf9, 0x43, 0xf5, 0xa9, 0xd6, 0xa3, 0x8c, 0x88,
-0x51, 0x95, 0xd5, 0xc8, 0x26, 0xe9, 0x37, 0x34,
-0xce, 0xf1, 0x6b, 0xc9, 0x51, 0xf4, 0x24, 0x95,
-0xe0, 0x61, 0xbb, 0x5c, 0xac, 0xa8, 0x69, 0x58,
-0xc4, 0xfc, 0xc3, 0xda, 0x77, 0x38, 0x6c, 0xe5,
-0xdd, 0x47, 0x8e, 0x97, 0x3d, 0x43, 0x67, 0x2d,
-0x6f, 0x65, 0x42, 0xc4, 0xab, 0x12, 0x55, 0x3c,
-0x7f, 0x68, 0xeb, 0xe7, 0x6f, 0xa6, 0xa7, 0x93,
-0xc1, 0xc1, 0x7c, 0xc4, 0x2f, 0xf3, 0x24, 0x2c,
-0x1c, 0xfc, 0xcb, 0x85, 0xc8, 0x4f, 0x4f, 0x27,
-0x6a, 0x45, 0xfe, 0x50, 0x13, 0x6b, 0x67, 0x37,
-0xd3, 0x6f, 0xf4, 0x55, 0xef, 0xc1, 0xae, 0x8e,
-0x4a, 0x3f, 0x34, 0xc4, 0xfe, 0x2f, 0x96, 0x3f,
-0xdc, 0x93, 0xa5, 0xdf, 0x50, 0x7e, 0xa4, 0xd4,
-0xf0, 0x1c, 0x23, 0xa7, 0x03, 0xf9, 0xc9, 0x22,
-0x5e, 0x83, 0xc6, 0x2b, 0x77, 0xf7, 0x8a, 0xe7,
-0x93, 0x72, 0xf4, 0x1b, 0x2c, 0x6d, 0x08, 0x7a,
-0x5f, 0x47, 0xb3, 0xec, 0x5c, 0x79, 0x3d, 0x5b,
-0xbf, 0x31, 0x8b, 0x63, 0x2e, 0xcb, 0xc9, 0xbc,
-0xbf, 0x62, 0xb5, 0xd8, 0x73, 0xcd, 0x80, 0x2c,
-0xe5, 0xe8, 0x37, 0x34, 0x31, 0x83, 0x39, 0x87,
-0xf1, 0x9f, 0x97, 0xa7, 0x3b, 0x78, 0x7d, 0x59,
-0xcc, 0xe9, 0xdb, 0x90, 0x55, 0xff, 0xaa, 0x41,
-0xfc, 0x2a, 0x4a, 0xc1, 0x17, 0xc3, 0x7c, 0xff,
-0x97, 0x5d, 0x11, 0x93, 0xbf, 0xb0, 0xf0, 0x54,
-0x4a, 0x64, 0x60, 0xeb, 0x0c, 0xf6, 0xe8, 0x66,
-0x7b, 0xff, 0xf2, 0xe5, 0x59, 0xfa, 0x79, 0x2b,
-0xe6, 0x7f, 0x38, 0xf7, 0xf7, 0x7c, 0x3b, 0x92,
-0x37, 0x0b, 0xc8, 0x7a, 0x45, 0x7f, 0x1c, 0xfe,
-0xf5, 0x33, 0xc2, 0x38, 0xda, 0x76, 0xa3, 0x52,
-0x38, 0xea, 0xba, 0x2c, 0xfe, 0xb5, 0x50, 0xca,
-0xf0, 0x2f, 0xfd, 0x61, 0xe0, 0x7b, 0xd2, 0x9d,
-0x64, 0xda, 0x11, 0xb1, 0x5f, 0xc6, 0xd6, 0x6f,
-0x1c, 0x62, 0xf8, 0xf5, 0xb4, 0x5e, 0x16, 0x55,
-0x33, 0x89, 0xc4, 0x71, 0xfa, 0x79, 0xde, 0x67,
-0xbc, 0x73, 0xea, 0x96, 0x79, 0x36, 0xff, 0x1a,
-0x97, 0x3f, 0x2c, 0xb1, 0xf9, 0x17, 0x76, 0xf5,
-0x2d, 0x26, 0x3b, 0x14, 0x7d, 0xae, 0x61, 0x84,
-0xc5, 0xe2, 0x5f, 0x5b, 0x1d, 0xfd, 0x06, 0x42,
-0xdb, 0x81, 0xca, 0xf0, 0xe2, 0x9b, 0x37, 0x65,
-0xc6, 0xe5, 0xe8, 0x37, 0x62, 0x36, 0x6c, 0xa5,
-0x61, 0x7d, 0x0c, 0xdf, 0xc3, 0xd6, 0x0c, 0x90,
-0x1d, 0x11, 0x71, 0x0b, 0xd7, 0x6f, 0x10, 0x81,
-0xb9, 0xa4, 0x45, 0xd5, 0xc7, 0xf5, 0xf9, 0x75,
-0x89, 0xb7, 0xb1, 0xf4, 0x1b, 0x36, 0x64, 0xb3,
-0xfd, 0x05, 0x81, 0x81, 0x4c, 0xee, 0x94, 0xb7,
-0xb1, 0xf9, 0x17, 0xc7, 0xa6, 0x03, 0x66, 0xe0,
-0x07, 0xd9, 0xcf, 0x39, 0xa3, 0xdf, 0x28, 0xb5,
-0xdb, 0x90, 0x93, 0xfe, 0x17, 0x8d, 0xaa, 0xac,
-0x36, 0xaf, 0x4f, 0xd0, 0x6f, 0xb4, 0x20, 0xed,
-0x3a, 0x66, 0x24, 0xb5, 0x20, 0x95, 0x18, 0x90,
-0x4d, 0x67, 0xcf, 0xa7, 0xd7, 0xc9, 0x1f, 0x2a,
-0x3c, 0x7f, 0x38, 0x80, 0xfc, 0x6b, 0xbd, 0x12,
-0xc8, 0xf0, 0x2f, 0xcf, 0x44, 0xfd, 0x86, 0xa9,
-0x56, 0xb4, 0x4a, 0xe1, 0x87, 0x90, 0x83, 0x48,
-0x0e, 0x90, 0x8d, 0xd3, 0x6f, 0xf0, 0x7c, 0x5d,
-0xd4, 0x5d, 0xa8, 0xae, 0x2b, 0x2b, 0x4b, 0xe5,
-0xad, 0xce, 0x24, 0xc6, 0xd3, 0x62, 0x4e, 0x2d,
-0xfd, 0x7c, 0xda, 0x7b, 0x87, 0x7c, 0x19, 0xdc,
-0x9a, 0x48, 0x0e, 0x56, 0x8d, 0x78, 0xac, 0x8a,
-0xd8, 0x6a, 0xf9, 0x7d, 0xb1, 0x07, 0x41, 0x15,
-0x5a, 0x08, 0xd3, 0x07, 0xb2, 0x09, 0xe7, 0x6e,
-0xa9, 0xfb, 0x5f, 0x05, 0x4f, 0x89, 0x84, 0x9b,
-0x99, 0x8b, 0xf8, 0x65, 0xe5, 0x7f, 0xae, 0x7b,
-0xb1, 0x71, 0xac, 0x15, 0xf9, 0x57, 0x54, 0xf6,
-0xc3, 0x7b, 0xe9, 0x79, 0xa3, 0x1b, 0xce, 0xb7,
-0x59, 0x15, 0xb1, 0x11, 0x47, 0x3f, 0x7f, 0xe9,
-0x63, 0x74, 0x5f, 0x22, 0x98, 0x9e, 0x52, 0x20,
-0x47, 0x3a, 0x5e, 0xdd, 0xaa, 0x7f, 0x52, 0x70,
-0x9f, 0x5d, 0x38, 0xb8, 0xcf, 0xd6, 0xcf, 0xab,
-0x4c, 0xbf, 0x81, 0xfc, 0xcb, 0x13, 0x21, 0x9a,
-0xf9, 0x53, 0xa5, 0x2c, 0x25, 0xaf, 0x62, 0x40,
-0x06, 0xdf, 0x4b, 0x79, 0x56, 0xd9, 0xfc, 0x2b,
-0xc6, 0xf4, 0x1b, 0x8c, 0x69, 0x82, 0xdb, 0x80,
-0xb6, 0x25, 0x89, 0xbe, 0x6c, 0x9f, 0x99, 0xd1,
-0xcf, 0x8b, 0xd5, 0x0d, 0x32, 0xc0, 0x7b, 0x74,
-0xef, 0x70, 0xd5, 0x30, 0x62, 0x2e, 0xf3, 0x6c,
-0xbe, 0x64, 0xf9, 0x47, 0x62, 0xec, 0x71, 0x18,
-0x92, 0xb8, 0x67, 0x63, 0xeb, 0xeb, 0xb4, 0x52,
-0xd7, 0x6b, 0xf9, 0x3a, 0xd6, 0xc6, 0xce, 0x1f,
-0x26, 0x34, 0x0b, 0xad, 0xcc, 0xa2, 0x66, 0xf5,
-0x1d, 0x08, 0x99, 0xc1, 0x61, 0xb9, 0x16, 0xde,
-0x83, 0x39, 0x8c, 0x88, 0xa5, 0xc6, 0xe9, 0x37,
-0x4c, 0xcf, 0x86, 0x29, 0x77, 0x6b, 0x4c, 0x52,
-0xa8, 0xb1, 0x3d, 0x47, 0x96, 0x3f, 0x1c, 0x74,
-0xf8, 0x97, 0xf2, 0xbc, 0x54, 0xdd, 0xe3, 0xe9,
-0xf0, 0xdf, 0x15, 0x7a, 0x04, 0xf9, 0x97, 0x14,
-0x82, 0x20, 0x4f, 0xa6, 0xc9, 0x19, 0xfe, 0x55,
-0x8c, 0xe1, 0xee, 0xa2, 0xe0, 0x6f, 0x3c, 0xd0,
-0x6a, 0xb0, 0x23, 0x2c, 0x0e, 0x5c, 0xb6, 0xc0,
-0xbd, 0x84, 0xee, 0x35, 0x56, 0xa6, 0x3c, 0x73,
-0x89, 0xa5, 0x9f, 0xa7, 0xf9, 0x2b, 0x53, 0xe7,
-0x62, 0xd5, 0x6f, 0xf9, 0xda, 0xe4, 0xe5, 0x03,
-0xef, 0xe9, 0xf3, 0x0e, 0x7b, 0x87, 0xdb, 0x82,
-0xf4, 0x9d, 0x15, 0xc8, 0xc8, 0x92, 0xb2, 0xcd,
-0xbf, 0xfe, 0x79, 0xa8, 0xff, 0x5c, 0xac, 0xfe,
-0xf0, 0xd2, 0xd6, 0xc2, 0x74, 0xfc, 0x5c, 0x71,
-0xdd, 0xe1, 0x9b, 0xba, 0xe4, 0x17, 0x8c, 0x73,
-0x65, 0x75, 0x7d, 0x8c, 0x7f, 0x59, 0xd8, 0xe4,
-0x1a, 0xad, 0x3c, 0xa2, 0xcf, 0x8d, 0x79, 0xb6,
-0x62, 0xbc, 0x31, 0x0a, 0x75, 0xe9, 0xa5, 0x23,
-0xe5, 0x0b, 0x00, 0x6f, 0x98, 0x2e, 0x40, 0xfe,
-0x45, 0x2d, 0xfc, 0x1a, 0x62, 0xdb, 0x45, 0x6d,
-0xcc, 0x9d, 0xc9, 0x01, 0x08, 0xfe, 0xa7, 0x31,
-0x3b, 0x3d, 0xa5, 0xdb, 0xae, 0x95, 0xa4, 0x5c,
-0x1b, 0x80, 0x6a, 0xfa, 0x38, 0x9e, 0x12, 0x84,
-0x36, 0x7f, 0x0c, 0x81, 0x2c, 0x72, 0x4a, 0xac,
-0x2f, 0x53, 0xd9, 0x4d, 0x3a, 0x0d, 0x64, 0x37,
-0x7b, 0xd8, 0x7d, 0x4c, 0x7c, 0x2c, 0x21, 0x77,
-0x10, 0x7e, 0x29, 0xb0, 0x7b, 0x44, 0xbc, 0xf3,
-0x52, 0xc9, 0x60, 0xef, 0x41, 0x8c, 0xaf, 0x3d,
-0xdd, 0x6c, 0x0a, 0x4c, 0x0e, 0x5b, 0x05, 0x06,
-0xdb, 0xc8, 0x3c, 0x1d, 0xc7, 0x65, 0xf0, 0x36,
-0x69, 0xe9, 0x49, 0x38, 0xcf, 0x8e, 0xdd, 0x18,
-0x61, 0x21, 0x84, 0xbd, 0x97, 0x5c, 0x6c, 0x64,
-0x6e, 0x18, 0x11, 0x6d, 0x0c, 0xad, 0x83, 0xa4,
-0x0c, 0x76, 0xec, 0x86, 0x27, 0x08, 0x1f, 0x1b,
-0xfc, 0x20, 0x8e, 0x21, 0xbe, 0x21, 0x1a, 0x6f,
-0xf8, 0x1b, 0xd1, 0xe7, 0x63, 0xae, 0x85, 0xd0,
-0x09, 0x0b, 0x58, 0xb6, 0xd0, 0xd9, 0xd4, 0x30,
-0x04, 0x1b, 0x69, 0x80, 0x15, 0x2e, 0x3f, 0xe7,
-0x8f, 0x19, 0x4c, 0x88, 0x92, 0x0e, 0x8c, 0x88,
-0x54, 0xb6, 0xac, 0x76, 0x28, 0x95, 0x22, 0x87,
-0xd6, 0xa6, 0x55, 0x70, 0xfc, 0x12, 0x79, 0xa4,
-0x11, 0xed, 0x16, 0xf2, 0x00, 0xbd, 0x82, 0x4b,
-0xd0, 0x0d, 0x91, 0x36, 0x24, 0xc7, 0xa5, 0x75,
-0xfd, 0x33, 0x18, 0x16, 0x8c, 0x52, 0x7e, 0x9f,
-0xa8, 0x1a, 0x25, 0xbd, 0xf8, 0xda, 0x78, 0xbb,
-0x65, 0x24, 0x62, 0x04, 0xe3, 0xba, 0x1a, 0x96,
-0xcf, 0x4c, 0x3c, 0x65, 0x7a, 0xae, 0x71, 0xf8,
-0x57, 0x49, 0x37, 0x8e, 0xa2, 0xce, 0xbc, 0xe2,
-0xa4, 0x3c, 0xaa, 0x8d, 0xc1, 0xe5, 0x7d, 0x9e,
-0x93, 0x3c, 0x2f, 0xca, 0x8b, 0xb6, 0x16, 0xff,
-0x52, 0x95, 0xdd, 0xea, 0x01, 0xb6, 0x0b, 0x20,
-0x59, 0x54, 0xad, 0x1c, 0xa2, 0x4c, 0x26, 0x8a,
-0x40, 0x7f, 0xd4, 0xe0, 0xe3, 0x3a, 0x28, 0xd6,
-0x69, 0xaa, 0xf4, 0xb1, 0xd6, 0x35, 0x7c, 0x9b,
-0x27, 0x99, 0xaa, 0xae, 0xb3, 0x0c, 0x58, 0xa7,
-0x96, 0xb1, 0xf5, 0x7e, 0xca, 0xca, 0x5d, 0x60,
-0x34, 0xbd, 0x96, 0x96, 0x0d, 0x5b, 0xb2, 0xf9,
-0x32, 0x4b, 0x3f, 0x9f, 0xe4, 0x9c, 0xd1, 0x5a,
-0x5f, 0x83, 0xca, 0x03, 0x46, 0x1b, 0xb2, 0xd1,
-0xca, 0x85, 0x6e, 0xaf, 0xdc, 0x66, 0x26, 0xcc,
-0xca, 0x90, 0xbb, 0x20, 0xc2, 0x94, 0xb1, 0x1c,
-0xbf, 0x44, 0x9b, 0x92, 0x2f, 0xe0, 0x88, 0x81,
-0xb0, 0xf5, 0xa4, 0x5c, 0x09, 0x47, 0x68, 0x18,
-0x7d, 0x94, 0xcc, 0xf6, 0x7f, 0x71, 0x21, 0x87,
-0xf5, 0x5d, 0x51, 0x89, 0xea, 0x23, 0xba, 0x4d,
-0xbb, 0x34, 0xcb, 0x18, 0xb6, 0xeb, 0x5f, 0x62,
-0x5c, 0x88, 0x5f, 0x3d, 0xd0, 0xc5, 0x60, 0xab,
-0x02, 0xce, 0xaa, 0xac, 0xfe, 0xd5, 0x20, 0x76,
-0xda, 0x8e, 0xc3, 0x2f, 0x85, 0x6d, 0x5b, 0x56,
-0xb7, 0x90, 0x19, 0xf0, 0x6c, 0xa4, 0xba, 0xc9,
-0xb3, 0x25, 0xf0, 0x3b, 0xf6, 0x66, 0x72, 0xfc,
-0x12, 0x75, 0x61, 0xa6, 0x3f, 0xbc, 0x5f, 0x0d,
-0x44, 0x54, 0xad, 0xb5, 0x42, 0x7f, 0x56, 0xad,
-0x8e, 0x78, 0xe2, 0xad, 0x7d, 0x3a, 0x5e, 0xc9,
-0xe2, 0x5f, 0x88, 0x5f, 0xb4, 0x45, 0xd7, 0x99,
-0xda, 0xd0, 0x29, 0x7b, 0x21, 0x28, 0xe8, 0x42,
-0xbf, 0x21, 0xbe, 0x6b, 0x24, 0x7f, 0x99, 0x61,
-0x36, 0x85, 0x8a, 0xbd, 0x2e, 0x8f, 0x64, 0x0c,
-0x7f, 0xb3, 0xb6, 0x78, 0xa3, 0x4b, 0xee, 0x69,
-0x34, 0x9b, 0xba, 0x58, 0x9f, 0x3f, 0x17, 0x58,
-0xd9, 0x51, 0xf2, 0x66, 0xe4, 0xbc, 0x56, 0x6f,
-0xcc, 0x61, 0xf8, 0xc5, 0x8c, 0x8d, 0x0c, 0xa4,
-0xce, 0x6a, 0x8c, 0x21, 0x16, 0xbd, 0x6f, 0xe3,
-0x17, 0xc2, 0x31, 0x0d, 0x1b, 0xca, 0x16, 0x79,
-0x06, 0x1b, 0x4e, 0x53, 0x70, 0x8b, 0xfc, 0x3b,
-0xa6, 0x3f, 0x64, 0xe3, 0xda, 0x4e, 0x2c, 0xfc,
-0xea, 0x31, 0x3b, 0xf4, 0x80, 0xaa, 0x22, 0xed,
-0x82, 0x0e, 0x9d, 0xe9, 0x0f, 0x03, 0x69, 0x78,
-0xca, 0xd8, 0x9e, 0xc5, 0xbf, 0x10, 0xbf, 0xe8,
-0x9a, 0x68, 0x59, 0x83, 0xfa, 0x3a, 0x29, 0x5e,
-0xbb, 0x26, 0x5a, 0x6e, 0xa8, 0xb7, 0x90, 0x37,
-0xe9, 0xd3, 0x31, 0xd6, 0xe7, 0x9c, 0x9f, 0x89,
-0x36, 0x5b, 0x95, 0x9d, 0xc6, 0x9a, 0xd8, 0x36,
-0xa3, 0xf2, 0x75, 0x77, 0x31, 0x3c, 0x40, 0xbf,
-0xce, 0x37, 0x32, 0xd3, 0x7f, 0x15, 0xb9, 0xd3,
-0x4f, 0x45, 0x0c, 0x89, 0xf8, 0x45, 0x78, 0x78,
-0xa0, 0xe1, 0x73, 0x3e, 0xa0, 0x86, 0x0c, 0x95,
-0x27, 0x6c, 0x45, 0x9e, 0x76, 0x97, 0x3d, 0x5f,
-0x3f, 0x87, 0xb3, 0x54, 0xec, 0xff, 0xb2, 0xd3,
-0x86, 0x8e, 0xf1, 0x3a, 0xb5, 0xe6, 0x8b, 0x76,
-0xb0, 0x6d, 0xa7, 0x1b, 0xd8, 0x16, 0xe0, 0x94,
-0xd1, 0x05, 0x5e, 0x9a, 0xab, 0x63, 0x64, 0xc7,
-0xf7, 0x7f, 0xf5, 0x8a, 0x36, 0x2c, 0x7f, 0xb8,
-0x9e, 0xcb, 0xe6, 0x73, 0x06, 0xc9, 0x7a, 0x1a,
-0x68, 0xe1, 0xf8, 0xf5, 0x6b, 0xba, 0x00, 0x89,
-0x98, 0xdc, 0x5a, 0x21, 0xe6, 0x42, 0xb9, 0x09,
-0xda, 0x68, 0x65, 0x1a, 0x97, 0xd5, 0x11, 0x56,
-0xf6, 0x62, 0x5c, 0xa6, 0x00, 0x5a, 0x5b, 0x99,
-0x27, 0xb1, 0x63, 0x75, 0xaa, 0xbd, 0x5b, 0x9c,
-0x6b, 0xcc, 0xfa, 0x0d, 0xbe, 0xc6, 0xff, 0xa1,
-0xe1, 0x6b, 0xdc, 0xaf, 0xfe, 0x98, 0x5c, 0x2e,
-0xfd, 0x3c, 0x8f, 0x17, 0x95, 0x52, 0xdc, 0x65,
-0x42, 0x47, 0xc7, 0x77, 0xc8, 0x11, 0xfa, 0x7c,
-0x22, 0xb8, 0x22, 0xf0, 0x05, 0xb9, 0x99, 0x96,
-0x27, 0x82, 0x83, 0xee, 0x1a, 0xf2, 0x6a, 0xeb,
-0x5c, 0xce, 0xbf, 0x78, 0x77, 0x38, 0x7e, 0xb1,
-0xca, 0xec, 0xfd, 0x59, 0x21, 0xd6, 0x20, 0x06,
-0xc0, 0xdc, 0xc9, 0xb4, 0xb6, 0x0b, 0xbf, 0xa1,
-0x3c, 0x49, 0x5f, 0x6b, 0x99, 0xb7, 0xfc, 0x86,
-0x67, 0xe5, 0x0f, 0xe0, 0x3c, 0x5d, 0xb0, 0xdc,
-0xbb, 0xd5, 0xb3, 0x00, 0x46, 0xe2, 0x61, 0x16,
-0xcf, 0xf7, 0x6f, 0xe7, 0x6d, 0x9e, 0x2c, 0xfd,
-0x99, 0xb9, 0x06, 0xca, 0x57, 0xe2, 0x92, 0xf9,
-0x37, 0xf3, 0x69, 0x28, 0x5b, 0xa1, 0x5e, 0x46,
-0x2e, 0x89, 0x77, 0x27, 0xca, 0x4e, 0x78, 0x6a,
-0xc8, 0x47, 0xe2, 0x19, 0x6a, 0xb0, 0x35, 0xb4,
-0x05, 0xca, 0xd5, 0x47, 0xee, 0x6a, 0xed, 0xcf,
-0x7b, 0x4a, 0x2d, 0x83, 0xbc, 0x5e, 0xd2, 0x14,
-0x7b, 0x9a, 0x96, 0xb1, 0xcd, 0x6b, 0x03, 0x36,
-0x7e, 0x75, 0x40, 0x7c, 0x58, 0xd7, 0x0b, 0x77,
-0xe1, 0x8a, 0xeb, 0xc6, 0x67, 0x26, 0x51, 0x02,
-0xc5, 0x7b, 0x44, 0x6e, 0xa7, 0x5f, 0xb4, 0xe9,
-0x2e, 0xf9, 0x14, 0xde, 0x30, 0xba, 0xde, 0xf7,
-0x6d, 0x65, 0xdb, 0x60, 0x7b, 0xc2, 0xe6, 0xaf,
-0x92, 0x9e, 0x95, 0x85, 0xcf, 0x61, 0x40, 0x8e,
-0xf1, 0xea, 0x07, 0xd6, 0xba, 0x90, 0x76, 0x13,
-0x96, 0x6b, 0xba, 0x39, 0x9e, 0xd9, 0xbf, 0xbc,
-0x1b, 0x4e, 0xf1, 0x58, 0x3d, 0xd7, 0xd2, 0x12,
-0x27, 0xb4, 0x47, 0x71, 0x55, 0xee, 0xa5, 0xbe,
-0x9e, 0xdc, 0x85, 0x70, 0x41, 0xbd, 0x8a, 0xfa,
-0xd2, 0xf2, 0x42, 0x5b, 0x7f, 0x98, 0x16, 0x3e,
-0x73, 0x27, 0xe2, 0x17, 0x9b, 0x2f, 0x0f, 0x95,
-0x59, 0x98, 0x11, 0x16, 0x7a, 0x9b, 0xe7, 0xd1,
-0x43, 0xde, 0x98, 0x24, 0x67, 0x96, 0x8b, 0xb9,
-0xc0, 0x39, 0x65, 0xa1, 0x91, 0x9b, 0x95, 0x95,
-0x9f, 0x80, 0xd9, 0xc6, 0x8d, 0x68, 0x48, 0xbb,
-0x78, 0x15, 0xc6, 0x9f, 0x16, 0xf3, 0xe5, 0x2e,
-0x56, 0xe9, 0xfd, 0xa0, 0xdf, 0xe0, 0xb9, 0xc4,
-0x7d, 0x5d, 0x7c, 0x0f, 0x54, 0xde, 0xe1, 0x29,
-0x9e, 0xad, 0x24, 0x92, 0xa1, 0x8a, 0x14, 0x46,
-0xc2, 0xf6, 0x9c, 0xe6, 0x47, 0x13, 0x29, 0x29,
-0xac, 0x16, 0xe0, 0x3b, 0x4f, 0xd3, 0xb0, 0x50,
-0xf5, 0xb5, 0xb6, 0xe9, 0x70, 0x36, 0x16, 0x4e,
-0xf9, 0xf6, 0xc9, 0x56, 0x2c, 0x9a, 0xd8, 0x34,
-0x42, 0x46, 0x99, 0x97, 0x78, 0x39, 0x37, 0x69,
-0x8c, 0xc2, 0xbc, 0x52, 0x9f, 0x81, 0x7f, 0x3a,
-0xbf, 0xac, 0xfe, 0x95, 0x8d, 0xa7, 0x8b, 0xd2,
-0x15, 0x16, 0x7e, 0xf1, 0xe8, 0x22, 0x96, 0xbf,
-0x55, 0x0e, 0x08, 0xbe, 0xcc, 0x62, 0xfe, 0x43,
-0x2c, 0xa3, 0x88, 0xfc, 0xcb, 0x15, 0x13, 0x3e,
-0x9c, 0xa7, 0x0d, 0x63, 0x6a, 0x77, 0x20, 0xa1,
-0x74, 0x42, 0x75, 0xaf, 0x3a, 0x4c, 0x2e, 0x60,
-0x9b, 0x6a, 0x64, 0x64, 0x72, 0x52, 0xf0, 0xd3,
-0x14, 0xcf, 0x1f, 0x72, 0x6d, 0x58, 0x0e, 0xec,
-0xa8, 0x0c, 0xa6, 0xf2, 0x42, 0x7e, 0x8b, 0x91,
-0x85, 0xc8, 0x29, 0x89, 0xb7, 0xb1, 0xf2, 0x87,
-0x51, 0x75, 0xab, 0xff, 0xe7, 0x78, 0x9f, 0x20,
-0x3b, 0xc6, 0x61, 0x48, 0xec, 0xc0, 0x4a, 0x92,
-0xa4, 0xa5, 0x3b, 0xe5, 0xf5, 0x9d, 0xda, 0x58,
-0xfe, 0x54, 0x39, 0x47, 0xf9, 0x58, 0xaa, 0xeb,
-0xf1, 0x32, 0xdc, 0xb1, 0xde, 0x31, 0x2b, 0xff,
-0x9c, 0x2e, 0xe4, 0xe7, 0x47, 0xa5, 0x59, 0x4c,
-0xab, 0x7f, 0xc6, 0x05, 0x0f, 0xf2, 0x50, 0x60,
-0x3c, 0xff, 0x6a, 0xd2, 0x76, 0x63, 0x94, 0x52,
-0x17, 0x29, 0x88, 0x7b, 0x2a, 0x08, 0x23, 0x74,
-0x1b, 0x11, 0xc8, 0x88, 0x75, 0x9f, 0xdf, 0xd8,
-0x98, 0x1b, 0xd4, 0xb0, 0x3f, 0x23, 0x18, 0xa2,
-0xcf, 0x0c, 0xb1, 0x6e, 0xf8, 0x86, 0xc9, 0xb4,
-0x38, 0x1a, 0x1f, 0xf2, 0xfd, 0xd4, 0x7c, 0x61,
-0x98, 0x0a, 0x8f, 0x06, 0x9b, 0xdd, 0xa5, 0x24,
-0x8f, 0x17, 0x9a, 0x71, 0x38, 0xaf, 0x81, 0x95,
-0x55, 0x1b, 0x11, 0xf9, 0x79, 0x16, 0x75, 0x22,
-0x6c, 0xad, 0x50, 0xcf, 0xaf, 0xbd, 0x8c, 0xae,
-0x8b, 0x33, 0x21, 0x7d, 0xc1, 0x71, 0x63, 0x1d,
-0xc6, 0x63, 0xf2, 0xea, 0x9c, 0x51, 0xab, 0xfe,
-0x55, 0x5a, 0x00, 0x7b, 0x93, 0xb5, 0x2b, 0x0a,
-0x2e, 0x6b, 0xa8, 0x86, 0x37, 0xa0, 0x76, 0xd0,
-0xc3, 0x88, 0xd8, 0xcb, 0x49, 0xa6, 0x9f, 0xcf,
-0xb5, 0xeb, 0x5f, 0x53, 0xd9, 0xbe, 0xec, 0x5a,
-0xc3, 0x17, 0xc2, 0x65, 0x25, 0xca, 0x79, 0x6d,
-0xb5, 0x7c, 0xff, 0x32, 0xc7, 0x2f, 0x3e, 0x2e,
-0xd5, 0x75, 0x84, 0x3d, 0x0d, 0xc3, 0xa7, 0x7a,
-0x2a, 0x70, 0x0a, 0xc2, 0xac, 0x06, 0x1d, 0x34,
-0x0f, 0x01, 0x9f, 0x38, 0x2b, 0x1f, 0x95, 0x92,
-0x78, 0xfe, 0xd0, 0xf0, 0x18, 0xe4, 0x29, 0x7e,
-0x5e, 0x41, 0xde, 0x3d, 0xc4, 0x6b, 0xfc, 0x54,
-0x68, 0x77, 0xb3, 0xf4, 0xf3, 0xd8, 0xc3, 0x98,
-0x27, 0x45, 0x2e, 0xe1, 0xf8, 0x85, 0xa1, 0xe3,
-0x74, 0xfa, 0x53, 0x04, 0xdf, 0xbc, 0xd5, 0x11,
-0x5b, 0x3f, 0x5f, 0x7c, 0x58, 0x8c, 0x34, 0x8f,
-0xac, 0x41, 0x23, 0xc0, 0xb5, 0x61, 0x84, 0x3d,
-0x84, 0x59, 0x99, 0xfc, 0xa1, 0xb4, 0x0b, 0xc3,
-0xe4, 0x5a, 0x5c, 0x0e, 0xb9, 0x0b, 0x23, 0x02,
-0xb6, 0xf8, 0xfe, 0xe5, 0x6a, 0x9a, 0x97, 0xd1,
-0x6f, 0x68, 0xec, 0xfc, 0xa8, 0xba, 0x62, 0xdf,
-0x06, 0x5c, 0x29, 0x23, 0xf0, 0x22, 0xba, 0x65,
-0x0f, 0xdf, 0xe5, 0xa7, 0x15, 0x8c, 0xd3, 0xcf,
-0x63, 0x84, 0x1f, 0x43, 0xfc, 0xfa, 0x80, 0x1e,
-0x40, 0x0a, 0x73, 0x38, 0xfe, 0xfd, 0xe5, 0xd1,
-0x03, 0x62, 0x53, 0xf0, 0xf8, 0xfa, 0x57, 0x34,
-0xff, 0x5f, 0xc8, 0x07, 0xf6, 0xb6, 0xe5, 0x5c,
-0x5c, 0x29, 0xd5, 0xcd, 0x93, 0xea, 0x5f, 0x8d,
-0x6a, 0xd2, 0xdf, 0x07, 0xf7, 0x4b, 0xec, 0x20,
-0x29, 0x77, 0x85, 0xf4, 0xf0, 0x44, 0xfd, 0x46,
-0xa9, 0xa5, 0x3f, 0x44, 0xd8, 0x42, 0xa3, 0xd2,
-0x4f, 0x94, 0xd6, 0x4d, 0x30, 0x4e, 0xbf, 0x31,
-0x2d, 0x66, 0xe9, 0x13, 0x8a, 0x4e, 0x44, 0xcc,
-0x5b, 0x6a, 0x8a, 0x97, 0xb8, 0x1a, 0x90, 0x68,
-0x30, 0xa7, 0xe7, 0xf0, 0xaf, 0xee, 0x69, 0x8c,
-0xdd, 0x30, 0x6e, 0x55, 0x78, 0xc6, 0xde, 0xb6,
-0xcc, 0x76, 0x7b, 0xd5, 0x66, 0xe9, 0x37, 0xba,
-0x4b, 0xce, 0xd8, 0xfc, 0xeb, 0x07, 0x3c, 0x41,
-0xba, 0x71, 0x73, 0xdb, 0x99, 0xc4, 0x01, 0x76,
-0xc5, 0x39, 0x3f, 0xaa, 0x14, 0x32, 0x69, 0x43,
-0x65, 0x17, 0x13, 0x72, 0xac, 0x25, 0x27, 0xa0,
-0xc3, 0xe2, 0x5f, 0x13, 0xf5, 0xf3, 0x64, 0xb9,
-0xde, 0xa2, 0x32, 0x21, 0x47, 0xab, 0xd8, 0x73,
-0xed, 0x99, 0xa8, 0x9f, 0x37, 0x3d, 0xf1, 0xc8,
-0x4e, 0xfd, 0x09, 0x1c, 0xb2, 0x6c, 0xe5, 0x4e,
-0xcd, 0x2c, 0xfd, 0x06, 0xf0, 0xe7, 0xdc, 0xe8,
-0xd3, 0xe4, 0x46, 0xec, 0xcf, 0xdf, 0x09, 0x92,
-0x65, 0x65, 0x6e, 0x07, 0xc5, 0x3e, 0xe8, 0x15,
-0xa2, 0x4d, 0xcc, 0xf7, 0xa8, 0xbc, 0xdc, 0x96,
-0xd0, 0xf4, 0xd9, 0xfc, 0xeb, 0x6d, 0xab, 0xfe,
-0x05, 0x8e, 0x7e, 0xa3, 0xcc, 0x4a, 0x24, 0x32,
-0xfd, 0x21, 0xd4, 0x29, 0x3e, 0x47, 0xbf, 0xa1,
-0x02, 0xd7, 0xcf, 0x6f, 0xcf, 0xff, 0xa4, 0x68,
-0xb5, 0xb6, 0x5e, 0xd0, 0xae, 0x85, 0xd2, 0x7a,
-0x32, 0x27, 0x91, 0xe1, 0x5f, 0x6a, 0x09, 0xe7,
-0x5f, 0x46, 0xa9, 0xa6, 0xa9, 0x0a, 0x7b, 0xd9,
-0xe4, 0x10, 0xc9, 0xc9, 0x69, 0x53, 0xb2, 0xf9,
-0x97, 0x2e, 0x4d, 0x95, 0xf6, 0xc1, 0x9c, 0xf4,
-0xfd, 0x3f, 0x20, 0x77, 0xc2, 0x3a, 0x9d, 0x17,
-0xc2, 0x4a, 0xf5, 0x75, 0x42, 0xa1, 0x64, 0xe9,
-0x37, 0x2a, 0x4b, 0xb9, 0x7e, 0x23, 0x81, 0xfc,
-0x2b, 0x1c, 0x79, 0x95, 0xfe, 0xe3, 0x80, 0xaf,
-0xc6, 0x73, 0x19, 0xbe, 0xd8, 0x9c, 0x7f, 0x8d,
-0xab, 0x7f, 0xe1, 0x32, 0x0f, 0xc9, 0x9f, 0xd0,
-0x73, 0x35, 0x75, 0xfd, 0xbe, 0x3d, 0x9d, 0x29,
-0x3b, 0xb7, 0x63, 0xe9, 0xe7, 0x63, 0x5c, 0x3f,
-0x5f, 0x9f, 0xf2, 0xdd, 0x5b, 0x5e, 0x43, 0xdf,
-0x8b, 0xd7, 0xbf, 0xbf, 0xf1, 0x59, 0x79, 0x3a,
-0x1c, 0x8a, 0xf3, 0x8c, 0xa2, 0x7d, 0x7e, 0x14,
-0x72, 0x2b, 0x1e, 0xa2, 0xaf, 0x76, 0xff, 0x0f,
-0xb6, 0xd0, 0xd2, 0x9e, 0x11, 0xa2, 0x1a, 0xbf,
-0xa0, 0x55, 0x66, 0xc1, 0x6a, 0x5b, 0xbf, 0xe1,
-0x17, 0xfa, 0xf9, 0x76, 0x64, 0x5b, 0xa1, 0xc6,
-0x9f, 0x92, 0x2a, 0xb6, 0xd5, 0xfa, 0x0e, 0xd1,
-0xf9, 0x55, 0xa4, 0xcf, 0xce, 0xcf, 0x6f, 0x60,
-0xf9, 0x8d, 0xb4, 0x67, 0x21, 0x79, 0x40, 0xed,
-0xe4, 0xb9, 0x53, 0x77, 0x94, 0x55, 0x2b, 0x0c,
-0x24, 0x62, 0x6f, 0x8b, 0x79, 0xdf, 0x2e, 0x71,
-0xce, 0xd8, 0xea, 0x83, 0xce, 0x59, 0xec, 0x30,
-0x25, 0xe6, 0xe2, 0x56, 0xa0, 0xcf, 0xfc, 0xb1,
-0xe1, 0x73, 0xf4, 0x1b, 0x09, 0x6d, 0x48, 0x39,
-0x47, 0xea, 0xe2, 0x1b, 0x93, 0x45, 0x1f, 0xda,
-0xc3, 0xb9, 0x9f, 0x9d, 0xc2, 0xc7, 0x36, 0x0d,
-0x0d, 0x88, 0xf5, 0xd5, 0x22, 0xea, 0x5f, 0x74,
-0x49, 0xbf, 0xdc, 0x5c, 0xf9, 0x1e, 0x61, 0xb0,
-0x25, 0x2f, 0x8c, 0x1c, 0x85, 0x7a, 0x3d, 0x7f,
-0xb8, 0xc8, 0xd2, 0xe0, 0x59, 0xf5, 0xaf, 0x64,
-0xd5, 0x53, 0x97, 0xe5, 0xa1, 0xab, 0xe4, 0x65,
-0x94, 0x59, 0xcc, 0x3f, 0x2b, 0x97, 0x65, 0xf4,
-0xf3, 0x42, 0x7f, 0x98, 0xb8, 0xfe, 0x29, 0xb2,
-0x82, 0x6f, 0x16, 0xb3, 0xdb, 0xb0, 0xcd, 0x47,
-0x16, 0xff, 0x72, 0x17, 0x7b, 0x8d, 0xbd, 0xb0,
-0xb2, 0xe5, 0xe1, 0xb0, 0xbb, 0x32, 0x86, 0x9c,
-0xba, 0xdf, 0x13, 0x46, 0xe7, 0xd9, 0x36, 0x33,
-0xd8, 0xe4, 0x9e, 0x6b, 0xaf, 0x2f, 0x76, 0x1f,
-0xec, 0x6a, 0x7b, 0xfe, 0x3e, 0xb9, 0x59, 0x3d,
-0xaa, 0xcc, 0x33, 0x37, 0x9e, 0x6a, 0xab, 0x84,
-0x43, 0xa1, 0x3a, 0xcd, 0x9b, 0x6c, 0x4b, 0x8b,
-0xf5, 0xb5, 0xbd, 0x64, 0x34, 0xfe, 0xd2, 0xac,
-0xfa, 0x0e, 0xdf, 0x9e, 0xa2, 0x54, 0x7c, 0x0c,
-0xa6, 0xff, 0xc6, 0x77, 0xaa, 0x73, 0x84, 0x8e,
-0x85, 0xea, 0x01, 0x39, 0xa3, 0x73, 0xfe, 0x86,
-0xc5, 0x8e, 0xbb, 0x91, 0x7f, 0x7d, 0x82, 0xf1,
-0x3c, 0x2f, 0x84, 0x7d, 0x6c, 0xe1, 0x97, 0xa5,
-0xdf, 0x80, 0x21, 0x51, 0xff, 0x62, 0xdb, 0xbe,
-0x3a, 0x69, 0x40, 0x18, 0xe2, 0x4a, 0x64, 0x70,
-0x92, 0xfe, 0x90, 0x71, 0xb4, 0x0a, 0x41, 0xc4,
-0x76, 0xd8, 0xf9, 0xc3, 0xc9, 0xfa, 0x8d, 0x47,
-0xe8, 0xcc, 0x71, 0x85, 0xa7, 0x11, 0xab, 0xee,
-0x59, 0x9c, 0xd1, 0x0d, 0xc2, 0x69, 0x84, 0x7e,
-0x47, 0x4b, 0xe3, 0x41, 0xfc, 0x12, 0xeb, 0xe2,
-0x04, 0x64, 0xe9, 0x0f, 0x3f, 0x13, 0xf4, 0xc4,
-0x29, 0x84, 0x8d, 0xc4, 0x78, 0x9b, 0x6c, 0xfd,
-0xe1, 0x24, 0xc3, 0xce, 0x1f, 0x2a, 0x41, 0xc8,
-0xca, 0xe5, 0xd6, 0x65, 0xf7, 0x47, 0xee, 0xe2,
-0xbd, 0x41, 0x7c, 0x5f, 0x92, 0x19, 0xd7, 0x44,
-0x21, 0xa2, 0xa5, 0xdf, 0x88, 0x49, 0x59, 0x25,
-0x24, 0x91, 0x94, 0x63, 0x46, 0xa2, 0xea, 0x84,
-0xbc, 0x9a, 0x58, 0xfa, 0xf9, 0x15, 0x50, 0xa0,
-0x59, 0xb2, 0xc3, 0x23, 0xe6, 0x69, 0x2d, 0x98,
-0xc6, 0x45, 0x74, 0x18, 0x4e, 0x27, 0xf8, 0x15,
-0x1b, 0xbf, 0xfe, 0x8f, 0x17, 0x84, 0xde, 0xe6,
-0x24, 0x1f, 0x4e, 0x5d, 0x96, 0xae, 0xf2, 0xe4,
-0x78, 0xfd, 0x61, 0x6d, 0xda, 0x6b, 0x0f, 0xc7,
-0x23, 0x0c, 0x76, 0xa5, 0xe1, 0x7d, 0x47, 0xbf,
-0x21, 0x59, 0x3b, 0x4d, 0xde, 0x55, 0x9c, 0x44,
-0xe2, 0x3e, 0xb8, 0x9a, 0x5d, 0xc9, 0xd6, 0x1f,
-0xb6, 0xb3, 0xdd, 0x5e, 0xdf, 0x3a, 0x6e, 0xe9,
-0x0f, 0x23, 0xc7, 0x8b, 0xf7, 0xb5, 0x7f, 0x0f,
-0xf1, 0xcb, 0xe6, 0xd4, 0x2b, 0x2c, 0x7d, 0x94,
-0x6a, 0xe7, 0xe7, 0xad, 0xb1, 0x57, 0x32, 0x20,
-0x9b, 0xa0, 0x3f, 0x0c, 0x5a, 0x31, 0x6d, 0x8b,
-0xcf, 0x36, 0xaa, 0x26, 0xe9, 0x0f, 0x27, 0xd7,
-0xbf, 0x32, 0xf8, 0xd5, 0x31, 0x59, 0x7f, 0x98,
-0x9b, 0xc9, 0x1f, 0x7e, 0x89, 0xfe, 0x30, 0x3b,
-0x37, 0x68, 0xe3, 0x97, 0x32, 0x41, 0x7f, 0x98,
-0x97, 0xd5, 0x66, 0xbf, 0x9d, 0x9f, 0xcf, 0xd6,
-0x1f, 0x92, 0x6a, 0x6b, 0xff, 0x97, 0x22, 0xf0,
-0x4b, 0xcc, 0x7b, 0xb7, 0xba, 0xcc, 0x18, 0xd7,
-0xd5, 0x07, 0x58, 0x72, 0xcf, 0xc9, 0x1f, 0xf2,
-0xef, 0xda, 0x3a, 0xed, 0x4c, 0xa6, 0xcf, 0xe7,
-0xc9, 0xf8, 0xe2, 0x9d, 0x85, 0x5f, 0x1d, 0xec,
-0xfc, 0x28, 0x8e, 0x5f, 0x18, 0x6f, 0x9c, 0x73,
-0x12, 0x77, 0xe2, 0x4a, 0xc0, 0xd1, 0x1f, 0xea,
-0x16, 0x5a, 0xe9, 0x4e, 0x22, 0x91, 0x74, 0x48,
-0xdc, 0x70, 0xf6, 0x2f, 0x0f, 0xd0, 0x16, 0x91,
-0x3f, 0xcc, 0xea, 0xbc, 0x85, 0x5f, 0x11, 0x47,
-0xbf, 0x21, 0x3d, 0x31, 0x5e, 0x72, 0x19, 0x71,
-0x6a, 0x7f, 0x8b, 0x2d, 0x5f, 0xb7, 0xa5, 0x1d,
-0x0e, 0xb8, 0x78, 0x3d, 0xae, 0x82, 0x91, 0x2c,
-0x81, 0x4d, 0x16, 0x7e, 0xad, 0xc8, 0xe8, 0xe7,
-0x85, 0x46, 0xd1, 0x83, 0xc3, 0x89, 0x8f, 0x1b,
-0x97, 0x67, 0xbd, 0xc5, 0xad, 0xb4, 0xc4, 0x97,
-0xd7, 0x34, 0x33, 0xf5, 0x2f, 0xe5, 0x23, 0x06,
-0x5b, 0x3a, 0x19, 0x54, 0xac, 0xb4, 0xe1, 0x88,
-0xfa, 0x9c, 0xb8, 0x62, 0x71, 0x22, 0x96, 0x3f,
-0x9c, 0x37, 0x61, 0x59, 0xa5, 0x26, 0xe4, 0x0f,
-0xcb, 0xa4, 0xa9, 0xf0, 0x8b, 0xcc, 0x6b, 0x5c,
-0x65, 0xca, 0xcd, 0x4c, 0x41, 0x2e, 0xae, 0x38,
-0xf5, 0x2f, 0x27, 0x5b, 0x78, 0xdc, 0x36, 0xde,
-0xb6, 0x8c, 0xf2, 0x83, 0xe2, 0xb0, 0x58, 0xf5,
-0xd2, 0x17, 0x8c, 0x8c, 0x26, 0x59, 0x18, 0x83,
-0x0e, 0x7e, 0x39, 0xe7, 0x1f, 0xda, 0xd9, 0xc2,
-0x17, 0x8d, 0xb1, 0x38, 0x77, 0x8c, 0x5f, 0xc0,
-0xb9, 0xf8, 0xb5, 0xe9, 0xfc, 0x6e, 0x62, 0xe3,
-0x17, 0xd7, 0x47, 0x61, 0x0f, 0xbf, 0xc0, 0x90,
-0x8f, 0x77, 0xe3, 0x47, 0xac, 0x3f, 0x09, 0x5c,
-0x71, 0x3f, 0xca, 0xb5, 0xce, 0x8f, 0xda, 0x6c,
-0x9d, 0x7f, 0xe8, 0x39, 0x49, 0xd0, 0xe0, 0xa5,
-0x3a, 0x74, 0x05, 0xfb, 0x34, 0x76, 0x52, 0x96,
-0xcd, 0xbf, 0xfe, 0xb6, 0x78, 0xc8, 0xd2, 0x47,
-0xb1, 0x94, 0x29, 0x15, 0x63, 0xe7, 0x19, 0x7b,
-0x08, 0x05, 0x2c, 0xfd, 0xfc, 0x93, 0x25, 0x2f,
-0xc0, 0x8f, 0xc4, 0xae, 0xd5, 0xdd, 0xfc, 0x6c,
-0x0d, 0xec, 0xea, 0xae, 0x62, 0x46, 0xb2, 0x2a,
-0x92, 0xc4, 0x3a, 0xff, 0x30, 0x0e, 0x19, 0x17,
-0x27, 0x8d, 0x1b, 0xd7, 0xd2, 0xa4, 0xfc, 0xb8,
-0x58, 0x5f, 0x54, 0x1b, 0xd5, 0x8e, 0x5a, 0x3e,
-0x53, 0x75, 0x42, 0x7d, 0xcb, 0xb0, 0xea, 0x5f,
-0x3d, 0x7c, 0xff, 0xb2, 0xd0, 0x1f, 0x3a, 0x69,
-0x43, 0x78, 0x5e, 0x12, 0xfa, 0x84, 0x8c, 0x7e,
-0xa3, 0x73, 0x82, 0x66, 0x60, 0x90, 0x1b, 0xee,
-0xa4, 0x5d, 0x83, 0x66, 0xfa, 0x79, 0x11, 0xe1,
-0xb7, 0x1e, 0x66, 0x42, 0xc4, 0x3e, 0xc4, 0x2f,
-0x9c, 0x53, 0xdd, 0x6b, 0xe6, 0x85, 0xed, 0xf5,
-0x45, 0xbd, 0x2b, 0x8d, 0x43, 0x6c, 0x4b, 0xf2,
-0x3e, 0xf9, 0x13, 0x33, 0xd3, 0x67, 0xa3, 0xee,
-0xcd, 0x82, 0xa7, 0x1d, 0xfd, 0xbc, 0xa8, 0x7f,
-0x1d, 0xf0, 0x75, 0x15, 0x0d, 0xf5, 0xf3, 0x42,
-0xd8, 0x49, 0xd6, 0xe7, 0x15, 0xdc, 0xc8, 0xd2,
-0x6f, 0x70, 0x75, 0x4d, 0xb7, 0x67, 0x17, 0x1a,
-0x75, 0xe9, 0xaa, 0x11, 0x9c, 0x2f, 0x7e, 0x65,
-0x44, 0x6e, 0x56, 0x1c, 0xfd, 0x46, 0x27, 0xa2,
-0x95, 0x1a, 0x2a, 0x5f, 0x29, 0x8c, 0x6e, 0x32,
-0xa4, 0x58, 0x86, 0x9e, 0xe1, 0x5f, 0xac, 0xcf,
-0x6a, 0x32, 0xa7, 0x43, 0x6b, 0x83, 0x95, 0xac,
-0xfe, 0x75, 0x90, 0x5f, 0x41, 0x5f, 0x17, 0xc8,
-0xe0, 0x17, 0x1b, 0xfb, 0xd6, 0x4d, 0x05, 0x2b,
-0x75, 0x66, 0xf8, 0x93, 0xd8, 0x86, 0x19, 0x79,
-0x49, 0x12, 0xb2, 0x78, 0x53, 0x89, 0x50, 0x1b,
-0x7a, 0x43, 0xf2, 0x36, 0x6e, 0x14, 0x24, 0x1b,
-0x06, 0xb9, 0x91, 0x9f, 0xcc, 0xb5, 0xf6, 0x5f,
-0xa4, 0xa5, 0x17, 0x08, 0x7b, 0xf2, 0x73, 0x46,
-0x3c, 0xc3, 0xdc, 0x08, 0xda, 0x73, 0x51, 0x3d,
-0xec, 0x99, 0xa4, 0x9f, 0xf7, 0x54, 0x72, 0x4e,
-0xcd, 0x53, 0xc1, 0x16, 0xff, 0xea, 0xb7, 0xf3,
-0x87, 0x5e, 0xbe, 0x53, 0xb2, 0x33, 0x1e, 0xf9,
-0x7a, 0xf4, 0x79, 0x51, 0x3b, 0x1e, 0x84, 0x4e,
-0xf1, 0x46, 0x4d, 0xd4, 0xcf, 0x2f, 0x24, 0x7f,
-0xcb, 0x5d, 0x77, 0x03, 0xbe, 0x63, 0x92, 0x45,
-0xc4, 0x86, 0x45, 0x6d, 0x2b, 0x29, 0xf0, 0x6b,
-0x00, 0xc3, 0xc2, 0xef, 0x58, 0x42, 0x8e, 0xc0,
-0x05, 0x69, 0x1d, 0xcd, 0xe7, 0xb5, 0x24, 0xbb,
-0xfe, 0xe5, 0x35, 0xc4, 0xfe, 0xaf, 0xce, 0x1b,
-0x12, 0xa7, 0x61, 0x21, 0x83, 0xad, 0x14, 0xbc,
-0x21, 0xce, 0x8f, 0xb2, 0xeb, 0x5f, 0xd3, 0x5e,
-0xd0, 0x18, 0x6c, 0x6d, 0xec, 0x2f, 0xe7, 0x40,
-0xc6, 0x68, 0x57, 0xca, 0xc1, 0x2f, 0x65, 0x1c,
-0x7e, 0x05, 0x93, 0x18, 0xee, 0x1e, 0xb2, 0x71,
-0xf9, 0x65, 0x1a, 0xce, 0xd2, 0x6f, 0xa4, 0x70,
-0x7d, 0x5d, 0x25, 0xf0, 0x4b, 0x21, 0xbc, 0xf0,
-0xdd, 0x4c, 0x46, 0x09, 0x23, 0x62, 0xac, 0xfe,
-0x25, 0xd6, 0x29, 0x85, 0xc7, 0x54, 0x71, 0xe6,
-0xb0, 0x7f, 0x8a, 0x64, 0x09, 0x39, 0xde, 0x11,
-0x44, 0xcc, 0xa9, 0x7f, 0xd9, 0xfb, 0xbf, 0x3a,
-0xf6, 0xdc, 0x10, 0xb4, 0x29, 0xe7, 0x20, 0xdb,
-0x9c, 0x3e, 0xae, 0xfe, 0x25, 0xf0, 0xcb, 0xbb,
-0x4b, 0x5e, 0xc8, 0x8f, 0x8d, 0xf2, 0xb1, 0x83,
-0x7c, 0x0f, 0x42, 0x97, 0xd0, 0xcf, 0x37, 0x4f,
-0xc4, 0x2f, 0x6a, 0x89, 0xd6, 0x6c, 0xfd, 0xe1,
-0xc4, 0xf3, 0xa3, 0x7c, 0x9b, 0xe5, 0x0a, 0x6a,
-0x0b, 0x39, 0x6c, 0x5e, 0x90, 0xd1, 0x6f, 0x08,
-0xb7, 0xbc, 0x35, 0x30, 0x93, 0x0b, 0x39, 0xe4,
-0x2c, 0x6d, 0xc6, 0x24, 0xfd, 0xa1, 0x3b, 0x4b,
-0xc8, 0x61, 0x19, 0x47, 0x26, 0xea, 0x0f, 0xdd,
-0x0a, 0x6d, 0x99, 0x80, 0x05, 0x13, 0xeb, 0x5f,
-0x2e, 0xb9, 0xcc, 0xb0, 0xf8, 0xc5, 0x09, 0xdb,
-0x98, 0xa8, 0x9f, 0xef, 0x97, 0xcf, 0x18, 0x42,
-0x64, 0xd8, 0xe0, 0x20, 0x9a, 0xcd, 0xad, 0x5c,
-0x67, 0x38, 0x5a, 0xe5, 0xf7, 0xcb, 0x4f, 0xab,
-0xcc, 0x08, 0xc6, 0xe5, 0xdf, 0xc1, 0x6b, 0x02,
-0xbf, 0xec, 0xf3, 0xa3, 0x90, 0x9f, 0x32, 0xfc,
-0xea, 0x6c, 0x25, 0x09, 0x6e, 0xb0, 0xfd, 0xcb,
-0xad, 0x02, 0xd1, 0xe4, 0x82, 0x1c, 0x4b, 0x1f,
-0x25, 0x7a, 0x98, 0xa7, 0xad, 0x5f, 0xc3, 0x0d,
-0x86, 0xb9, 0x5b, 0xac, 0x3e, 0xfb, 0x33, 0xfa,
-0x43, 0x36, 0xd2, 0x4e, 0x7f, 0x60, 0x27, 0xb1,
-0xf8, 0x69, 0x5f, 0xc2, 0x1a, 0x7b, 0x8e, 0x93,
-0x3f, 0xe4, 0x68, 0x95, 0x1f, 0x2f, 0xfa, 0x39,
-0x7f, 0xbc, 0x5e, 0xd6, 0x1f, 0xeb, 0x39, 0x5b,
-0xe7, 0x47, 0xad, 0x90, 0x76, 0x12, 0x9b, 0x76,
-0x51, 0x66, 0xcc, 0x61, 0xe5, 0xbc, 0xf1, 0xf5,
-0xaf, 0x0c, 0x7e, 0x15, 0xe9, 0xad, 0x29, 0x1b,
-0xbf, 0x52, 0xa4, 0x6e, 0x5c, 0xfd, 0x4b, 0xd5,
-0x18, 0x5a, 0xc9, 0xef, 0x93, 0x6b, 0x2a, 0xd7,
-0x43, 0x90, 0x4e, 0x61, 0xfb, 0x97, 0xd7, 0x5b,
-0xf8, 0x35, 0xbe, 0xfe, 0xe5, 0x09, 0xbb, 0x0b,
-0x94, 0x36, 0xc9, 0x02, 0xb2, 0x87, 0x14, 0xae,
-0xe8, 0x18, 0xaf, 0x9f, 0xef, 0xf1, 0x34, 0x91,
-0x52, 0x21, 0x4c, 0x42, 0x20, 0x33, 0x7f, 0x0a,
-0xf9, 0x59, 0xf5, 0xaf, 0x5d, 0xce, 0xfe, 0x2f,
-0xb9, 0x00, 0x98, 0x90, 0x83, 0x69, 0xda, 0xc9,
-0xb7, 0xed, 0xfa, 0x97, 0xf0, 0xab, 0xd3, 0x76,
-0x0b, 0xc9, 0x53, 0x1c, 0x23, 0x73, 0xcb, 0x67,
-0x7e, 0x92, 0xb0, 0x54, 0x5e, 0xbd, 0xf6, 0xf9,
-0x87, 0x9f, 0x8a, 0xd3, 0xf3, 0xba, 0xcb, 0x67,
-0x1b, 0x47, 0x45, 0x18, 0x7f, 0xc1, 0x78, 0xb9,
-0x3d, 0x3c, 0xe0, 0x5b, 0xe8, 0xb1, 0xce, 0x2d,
-0x64, 0xfa, 0xf9, 0x97, 0x68, 0xd9, 0x90, 0xe7,
-0x2f, 0x88, 0x1f, 0xd6, 0x91, 0xaa, 0x21, 0x4f,
-0x0d, 0x39, 0x4e, 0xdf, 0x48, 0x6c, 0x1b, 0xf4,
-0xd4, 0xb8, 0x67, 0x3b, 0xe7, 0x47, 0x19, 0x2f,
-0x49, 0x65, 0xa9, 0x29, 0xcd, 0x44, 0xa5, 0xbc,
-0xcf, 0xf7, 0x90, 0x51, 0xe4, 0x5f, 0x33, 0x18,
-0xff, 0x72, 0xce, 0x3f, 0xb4, 0x64, 0xf3, 0x5b,
-0x89, 0x44, 0xac, 0x50, 0xff, 0x88, 0xfe, 0x90,
-0xd8, 0x44, 0xa0, 0x3a, 0xf5, 0x2f, 0x95, 0x95,
-0xef, 0x71, 0x5d, 0x54, 0x19, 0xd6, 0x7a, 0x1f,
-0x6b, 0x39, 0x04, 0x4c, 0xf3, 0xef, 0x99, 0x3d,
-0x61, 0xff, 0x57, 0xfc, 0xeb, 0x83, 0xf0, 0x17,
-0x99, 0x58, 0xbd, 0x26, 0xab, 0xfe, 0xe5, 0xe8,
-0x0f, 0xcf, 0xc8, 0xc5, 0xc0, 0x80, 0xec, 0xf2,
-0x61, 0xe2, 0x68, 0x06, 0xac, 0xfa, 0x17, 0xb5,
-0xeb, 0x5f, 0x5b, 0xe4, 0xbb, 0x26, 0x83, 0xd4,
-0x78, 0xfd, 0xa1, 0x3b, 0xd1, 0x3a, 0x7b, 0x52,
-0x9b, 0x6c, 0xfd, 0x21, 0x3b, 0x0a, 0x0c, 0xb6,
-0x1b, 0xbd, 0x6d, 0x24, 0xd8, 0xcb, 0xf6, 0x52,
-0xc1, 0xde, 0x90, 0xd0, 0x1f, 0x3a, 0xe7, 0x47,
-0xd1, 0x73, 0x7a, 0xdd, 0xc1, 0x82, 0x32, 0x59,
-0xa7, 0x38, 0xae, 0x63, 0x9e, 0x3d, 0xf2, 0x68,
-0x07, 0xdb, 0x11, 0xb6, 0xb4, 0x6b, 0x87, 0x29,
-0x83, 0x85, 0x5f, 0x2a, 0xaf, 0xfe, 0xf7, 0xca,
-0x49, 0x73, 0x4c, 0xa9, 0x3f, 0xe8, 0x3b, 0x5d,
-0x7e, 0xd8, 0x18, 0x8b, 0xa1, 0x63, 0x3c, 0x25,
-0x0f, 0x4a, 0x0e, 0x7e, 0xbd, 0x27, 0xe2, 0x8d,
-0x5a, 0xf8, 0x8c, 0xe2, 0xb2, 0xa2, 0x3c, 0x7f,
-0x58, 0x3f, 0x6e, 0xff, 0xd7, 0x10, 0x87, 0x2d,
-0xec, 0x61, 0x05, 0xeb, 0x33, 0x45, 0x63, 0xd4,
-0xf8, 0xa5, 0x35, 0x2e, 0x87, 0x7f, 0x69, 0x0f,
-0xd9, 0xb1, 0xc4, 0x0e, 0x09, 0x97, 0x15, 0x10,
-0x81, 0x68, 0x53, 0x32, 0xfc, 0xeb, 0xf6, 0x0d,
-0xd6, 0x90, 0xdd, 0x15, 0x84, 0xdf, 0x67, 0x1b,
-0x61, 0x27, 0xc4, 0x4e, 0xe4, 0x5f, 0x1c, 0x65,
-0x42, 0x72, 0xb5, 0x81, 0xaf, 0xd6, 0x4a, 0xdf,
-0x7a, 0xc9, 0xd1, 0xcf, 0x4f, 0xe6, 0x5f, 0x7d,
-0xcc, 0xe8, 0x15, 0x3c, 0x85, 0x8c, 0xaf, 0x7f,
-0x65, 0xf4, 0x87, 0xfa, 0xa1, 0x52, 0x1e, 0xea,
-0x1f, 0x86, 0x73, 0x6a, 0x5d, 0x6f, 0x36, 0xff,
-0xaa, 0x32, 0xac, 0x29, 0x18, 0x80, 0x4e, 0xa3,
-0xba, 0x5b, 0x7d, 0x1c, 0xe7, 0x14, 0x79, 0xe5,
-0x29, 0x24, 0x98, 0xa7, 0xc4, 0x63, 0x46, 0xfc,
-0x32, 0xac, 0x57, 0xeb, 0x15, 0x36, 0x9c, 0x10,
-0xbe, 0x6a, 0xaf, 0xc5, 0x70, 0xc5, 0x9d, 0xf4,
-0x2c, 0x6c, 0x1d, 0xc9, 0xec, 0xaf, 0x5c, 0x27,
-0xf6, 0x2f, 0x1f, 0x4f, 0xac, 0xa3, 0xc1, 0x98,
-0x7a, 0x07, 0xe3, 0x5f, 0xad, 0xfc, 0xfc, 0xc3,
-0x63, 0x94, 0xcf, 0x69, 0x54, 0x0d, 0x1a, 0xbf,
-0xe5, 0xf8, 0x55, 0xbe, 0x9f, 0xbe, 0x0c, 0xb5,
-0x89, 0x02, 0xb6, 0xff, 0xeb, 0x74, 0x47, 0xad,
-0x99, 0x5b, 0xd3, 0x36, 0xfe, 0xfc, 0x79, 0xa6,
-0x71, 0x1d, 0xcd, 0x19, 0x13, 0x42, 0xdf, 0xf3,
-0xb1, 0x89, 0xfc, 0xeb, 0x53, 0xb0, 0xf4, 0x87,
-0x3f, 0x67, 0xe7, 0x93, 0x80, 0xb7, 0x43, 0xfe,
-0x35, 0x65, 0x85, 0xb0, 0x25, 0xdd, 0x72, 0xc0,
-0xe6, 0x5f, 0x2f, 0x64, 0xf4, 0x87, 0x08, 0x5b,
-0xa0, 0xf6, 0xb3, 0xf3, 0x76, 0x08, 0x2f, 0x84,
-0x39, 0xfb, 0x97, 0x5f, 0x14, 0x7d, 0x1e, 0x21,
-0xff, 0x86, 0x86, 0x94, 0x76, 0x8f, 0x90, 0xc7,
-0xe0, 0x17, 0x74, 0xc6, 0x09, 0x75, 0x35, 0x49,
-0x66, 0xf0, 0xcb, 0x82, 0xad, 0x25, 0xa4, 0x0d,
-0xb6, 0xbf, 0x3e, 0x9b, 0xe5, 0x0f, 0x77, 0xc0,
-0x4e, 0x56, 0x08, 0xf3, 0x67, 0xf8, 0xd7, 0x41,
-0xbb, 0x94, 0xb0, 0x1e, 0xe6, 0xc5, 0x0b, 0xd2,
-0xe5, 0xbb, 0xe0, 0x23, 0x58, 0xc0, 0x84, 0x1c,
-0x93, 0xf5, 0xf3, 0xc2, 0xe9, 0xe5, 0x31, 0x5f,
-0xb7, 0x95, 0x9d, 0x9b, 0x9a, 0xd1, 0xcf, 0x37,
-0x4d, 0xe0, 0x5f, 0x1d, 0xb6, 0xe1, 0xb9, 0x08,
-0xff, 0x0a, 0xfc, 0x8e, 0xd7, 0xbf, 0xa6, 0x6d,
-0xb1, 0x0c, 0xcf, 0x96, 0x0c, 0xff, 0x9a, 0x99,
-0xd1, 0x6f, 0xb0, 0xfa, 0xd7, 0xdf, 0x6e, 0xb1,
-0x0c, 0x4f, 0xbc, 0xd5, 0xd6, 0x1f, 0x66, 0xf1,
-0x2f, 0xba, 0x07, 0xaa, 0xa3, 0x6e, 0x3f, 0x37,
-0xc6, 0xe5, 0x0f, 0x91, 0x7f, 0x75, 0x0b, 0xfd,
-0x7c, 0x8f, 0x31, 0xdc, 0x54, 0x5b, 0xbc, 0xde,
-0x36, 0x98, 0x7e, 0x9e, 0x8c, 0xc7, 0xaf, 0x38,
-0xc7, 0xaf, 0xfa, 0xc6, 0xfc, 0xdf, 0x14, 0x0d,
-0x18, 0x36, 0x7e, 0xe5, 0xf2, 0xb9, 0x50, 0x5d,
-0x0e, 0xa2, 0xcd, 0x48, 0x88, 0x83, 0x9b, 0xda,
-0x2a, 0xf8, 0x09, 0x4e, 0x78, 0xe5, 0x7d, 0xe7,
-0xfc, 0x5e, 0x7d, 0x50, 0xe8, 0xe7, 0x59, 0xfd,
-0xab, 0x1a, 0x3a, 0x7e, 0xee, 0xd6, 0x15, 0x66,
-0xe4, 0xf5, 0x66, 0x9d, 0x3f, 0xdf, 0x61, 0xe9,
-0x0f, 0xb7, 0xc0, 0xe3, 0x6a, 0x55, 0xb3, 0xda,
-0xd4, 0x5a, 0xa2, 0xa3, 0x61, 0x78, 0x9a, 0x1c,
-0xfd, 0xbc, 0xa5, 0x3f, 0x44, 0x5c, 0x7e, 0x0a,
-0x7e, 0x05, 0x73, 0xf0, 0x3d, 0xcc, 0x99, 0xcf,
-0x4f, 0xd3, 0xca, 0xeb, 0x77, 0xf2, 0x87, 0x5b,
-0x1c, 0x6d, 0xfc, 0x4e, 0xd6, 0x0d, 0x23, 0xb8,
-0x45, 0xe2, 0xfd, 0xc1, 0x2b, 0x52, 0xd6, 0xfe,
-0x65, 0x71, 0x45, 0x6e, 0xb4, 0xf6, 0x2f, 0x67,
-0xf2, 0x87, 0x07, 0x6d, 0xfe, 0xb5, 0x9d, 0x9f,
-0xf3, 0xe6, 0x6b, 0x95, 0x99, 0xa0, 0x69, 0x1e,
-0x82, 0x89, 0x2c, 0x94, 0x4d, 0x5e, 0xb3, 0xcc,
-0x2d, 0x6a, 0x49, 0x95, 0xca, 0x42, 0x9e, 0x49,
-0xf6, 0xd8, 0xdb, 0xbe, 0x78, 0xfd, 0xeb, 0x6d,
-0x8a, 0x46, 0x9a, 0x64, 0x9d, 0x1f, 0x55, 0xce,
-0xde, 0xb1, 0xf9, 0x50, 0x00, 0x6d, 0x94, 0xd7,
-0xbf, 0xf0, 0xad, 0x23, 0xdc, 0x58, 0xaf, 0x5b,
-0xfc, 0x6b, 0xba, 0x0d, 0x5b, 0x85, 0xd0, 0x6e,
-0x2e, 0xd3, 0xd4, 0x46, 0x62, 0xc2, 0x96, 0x8e,
-0xb2, 0x90, 0xba, 0x84, 0x74, 0x38, 0xfa, 0x43,
-0x71, 0xec, 0xe1, 0x6a, 0x04, 0x93, 0x23, 0x74,
-0x6f, 0x22, 0x38, 0xe8, 0x79, 0x1b, 0x8e, 0xd0,
-0x79, 0xcc, 0x58, 0x6f, 0xe1, 0xd7, 0xa5, 0x6c,
-0xff, 0xd7, 0x74, 0x21, 0x2f, 0x17, 0xc3, 0xc1,
-0xb1, 0x5b, 0xc2, 0xd1, 0x88, 0xcd, 0xbf, 0xbe,
-0x30, 0xb8, 0x1e, 0xfb, 0x43, 0xf9, 0x73, 0xe3,
-0x93, 0x96, 0xab, 0x62, 0xca, 0x5b, 0x72, 0x35,
-0xbc, 0x46, 0xeb, 0x97, 0x7b, 0xdf, 0x72, 0xf2,
-0x87, 0x62, 0xff, 0xd7, 0x60, 0x67, 0x25, 0xf9,
-0x88, 0xae, 0x45, 0x5c, 0x56, 0xff, 0x96, 0xf8,
-0xcd, 0x9f, 0x27, 0xe7, 0xec, 0x42, 0xc3, 0xd1,
-0xb4, 0xc7, 0x29, 0xdf, 0xbf, 0x7c, 0x17, 0x19,
-0xd6, 0x77, 0x42, 0x95, 0xa6, 0x46, 0x48, 0x94,
-0xb6, 0xc3, 0x1c, 0x55, 0x8d, 0x92, 0x01, 0xf1,
-0x0c, 0x9d, 0xfd, 0xcb, 0x3a, 0xaf, 0xfd, 0x61,
-0xf0, 0x3f, 0xbf, 0x75, 0xb9, 0x5a, 0x2e, 0x32,
-0x1e, 0xc7, 0x26, 0xec, 0x5f, 0x4e, 0xca, 0x9f,
-0xaa, 0xbf, 0x64, 0x81, 0x7d, 0xb2, 0x68, 0x39,
-0xf7, 0x00, 0xd1, 0x64, 0xf9, 0xe0, 0xc4, 0xfd,
-0xcb, 0x82, 0x02, 0xeb, 0x3e, 0x55, 0xde, 0xc5,
-0x17, 0x5a, 0x3d, 0xcd, 0x3a, 0xbf, 0xd7, 0xf6,
-0x99, 0xc7, 0xe0, 0x38, 0xe1, 0x0b, 0x36, 0x64,
-0x3c, 0x88, 0x2d, 0x7c, 0xe9, 0x72, 0x6b, 0xff,
-0x72, 0x4f, 0x46, 0x7f, 0x28, 0x42, 0xbe, 0xce,
-0x38, 0x09, 0x5a, 0xb1, 0xdf, 0x2d, 0xb6, 0xfe,
-0x50, 0xa9, 0x14, 0x6d, 0x12, 0xd8, 0xc6, 0x4a,
-0xcb, 0xef, 0x84, 0x27, 0xec, 0x18, 0xd2, 0x5a,
-0x5f, 0xbc, 0xe6, 0x92, 0xc2, 0x71, 0xa5, 0x62,
-0xad, 0x24, 0x48, 0x3b, 0xf5, 0xb5, 0x1d, 0x81,
-0xed, 0x52, 0xb0, 0x55, 0xae, 0x88, 0x5b, 0xfc,
-0xcb, 0x50, 0x63, 0xed, 0xe7, 0x08, 0x7a, 0xe3,
-0x6d, 0x18, 0xd3, 0x1e, 0x63, 0x87, 0x7b, 0xaf,
-0xf5, 0x24, 0xe8, 0xa0, 0x56, 0xa7, 0xfa, 0xd6,
-0x96, 0x3b, 0xfc, 0xcb, 0xda, 0xff, 0xb5, 0x4d,
-0x1e, 0xa2, 0x63, 0x70, 0xf9, 0x41, 0x5f, 0x57,
-0xdb, 0x8f, 0xe1, 0x1d, 0x44, 0xb4, 0x8d, 0x5d,
-0x45, 0x93, 0xf4, 0xf3, 0x77, 0x3b, 0xc4, 0xf9,
-0x7d, 0x72, 0x94, 0x45, 0x20, 0x23, 0xf2, 0xb0,
-0xa5, 0x1b, 0xb4, 0xf5, 0xf3, 0xdd, 0x60, 0x1b,
-0xd8, 0xd5, 0x4e, 0x98, 0xcd, 0x8d, 0x1c, 0x9b,
-0x7f, 0xa9, 0xec, 0xb7, 0x00, 0x6e, 0x0c, 0x19,
-0x68, 0x08, 0xa7, 0x97, 0x06, 0x2b, 0x56, 0x7f,
-0x7f, 0x5c, 0xfd, 0x8b, 0x43, 0xb6, 0xe6, 0x40,
-0x76, 0xa7, 0xd0, 0x6f, 0x0c, 0x5b, 0xbc, 0xa9,
-0x64, 0x72, 0xba, 0xef, 0x65, 0x7e, 0x6e, 0xe1,
-0x1f, 0xdf, 0xbf, 0x7c, 0xfa, 0x8f, 0xec, 0x5f,
-0xb6, 0x8d, 0x13, 0xfc, 0x20, 0xc4, 0x0c, 0x7e,
-0x1d, 0x63, 0x5a, 0x1a, 0x71, 0xfe, 0x86, 0x08,
-0x21, 0x7c, 0x9c, 0x7f, 0xd1, 0x40, 0x96, 0xfe,
-0x70, 0xd0, 0xc9, 0x1f, 0xe6, 0x38, 0xf9, 0x8d,
-0x57, 0xe9, 0x43, 0x54, 0xcf, 0xd2, 0x1f, 0x22,
-0xff, 0xb2, 0xd4, 0x47, 0x77, 0xf1, 0x5c, 0xdc,
-0x20, 0x3b, 0x94, 0x89, 0xae, 0xa3, 0xcb, 0xf0,
-0x4a, 0x8e, 0xc3, 0xbf, 0x0a, 0xde, 0xdc, 0x0b,
-0xb5, 0x83, 0x4c, 0x3f, 0x6f, 0xb2, 0x83, 0xa4,
-0x3c, 0x0b, 0xe5, 0xfd, 0x15, 0xef, 0x74, 0x24,
-0x07, 0xb3, 0xf4, 0x87, 0xd3, 0x76, 0x73, 0xda,
-0x75, 0x39, 0x8e, 0x4b, 0xe1, 0xfc, 0x6b, 0x0f,
-0x2e, 0x99, 0x73, 0x96, 0x91, 0xcd, 0xbf, 0xd8,
-0xfe, 0x65, 0x8f, 0xf8, 0x81, 0x98, 0xdc, 0xcc,
-0x00, 0x17, 0x65, 0xf1, 0x2f, 0x2b, 0xbb, 0x92,
-0xa5, 0x9f, 0xb7, 0xf5, 0x87, 0x39, 0x86, 0x78,
-0xe7, 0x99, 0xfe, 0xf0, 0x7b, 0x2c, 0x4c, 0xfd,
-0x0e, 0x3b, 0xc8, 0x37, 0x2d, 0xaf, 0x46, 0x20,
-0x1b, 0xaf, 0x3f, 0x44, 0xfc, 0xb2, 0xa7, 0x72,
-0x89, 0xb5, 0xd1, 0x32, 0xf0, 0xe9, 0x24, 0xfd,
-0xa1, 0xb3, 0xff, 0x6b, 0x85, 0x6d, 0x9c, 0x35,
-0x85, 0x41, 0x26, 0xe7, 0x0f, 0x9d, 0x9f, 0x4d,
-0x49, 0xb3, 0x83, 0x6e, 0x04, 0xff, 0x12, 0x7e,
-0x5e, 0x1b, 0x90, 0xc6, 0xe1, 0x17, 0x13, 0x78,
-0x4b, 0x07, 0xec, 0xfd, 0x5f, 0xba, 0x8d, 0x5f,
-0x0f, 0x67, 0xe7, 0x06, 0xf9, 0x01, 0x11, 0x2d,
-0x46, 0x80, 0x15, 0x91, 0xd3, 0xd2, 0x04, 0xfe,
-0x95, 0x49, 0x1b, 0x0e, 0x11, 0xeb, 0xfc, 0x8d,
-0x49, 0xfc, 0xcb, 0x92, 0xf0, 0xb9, 0x99, 0x71,
-0x3f, 0x24, 0x26, 0xf0, 0xaf, 0xee, 0xec, 0xb4,
-0x98, 0x87, 0xf1, 0xaf, 0xf5, 0x4d, 0x4c, 0x9f,
-0x90, 0xfb, 0xa9, 0x88, 0x0f, 0x19, 0x7e, 0x4d,
-0xdc, 0x0b, 0xcc, 0xf4, 0xf3, 0x02, 0xbf, 0x2c,
-0x4c, 0xb1, 0xf6, 0x7f, 0x6d, 0xec, 0x97, 0x2b,
-0x2c, 0xb2, 0xe6, 0x99, 0x6f, 0x9c, 0xd7, 0xf8,
-0xb8, 0xf6, 0xbb, 0x1c, 0xfe, 0x25, 0xd2, 0x86,
-0x6e, 0x3d, 0xdb, 0x08, 0x67, 0xd7, 0xbf, 0x1c,
-0xfd, 0x7c, 0x26, 0x7f, 0x98, 0x43, 0xf7, 0x08,
-0xcd, 0xc9, 0xeb, 0x62, 0x9d, 0x66, 0xed, 0xff,
-0x72, 0x1e, 0x02, 0x43, 0xf3, 0xed, 0x17, 0xd7,
-0x1f, 0x56, 0x64, 0x8c, 0x93, 0x96, 0x7e, 0x1e,
-0x6c, 0xfe, 0x35, 0x3e, 0x96, 0xf0, 0xd9, 0xba,
-0xca, 0x8b, 0xf1, 0xaf, 0xec, 0xfc, 0x61, 0x4a,
-0x15, 0xfa, 0x8d, 0xec, 0xfd, 0x5f, 0x22, 0x7f,
-0xc8, 0xf5, 0xf3, 0x68, 0x9c, 0x55, 0x1f, 0xec,
-0x09, 0x5c, 0x44, 0x7f, 0xf8, 0x48, 0x56, 0xfe,
-0xf0, 0x28, 0x6d, 0xd3, 0x62, 0xe6, 0x45, 0xf6,
-0x7f, 0x89, 0xd7, 0x98, 0x6f, 0x5b, 0x7e, 0x0f,
-0xd6, 0x88, 0x7c, 0xc2, 0x44, 0xfe, 0x65, 0xe7,
-0x0f, 0xa7, 0xac, 0x96, 0x2f, 0x20, 0x90, 0xed,
-0xc9, 0xd6, 0x1f, 0x4e, 0x9b, 0xec, 0x13, 0x46,
-0x59, 0xe7, 0x59, 0x12, 0x3e, 0xc3, 0xbf, 0x8c,
-0x73, 0x6c, 0x1b, 0x51, 0xb7, 0xfc, 0x29, 0xdf,
-0xc8, 0xec, 0x3b, 0x2b, 0x7f, 0xc1, 0x70, 0x30,
-0x5b, 0x7f, 0x58, 0xf8, 0x20, 0xdd, 0xb7, 0x9d,
-0xe9, 0xe7, 0xf1, 0x8d, 0xda, 0x27, 0x0a, 0x58,
-0x6f, 0x42, 0x6b, 0x02, 0x7d, 0x42, 0x8d, 0xfc,
-0x64, 0xd6, 0xf9, 0xbd, 0x7a, 0x55, 0xcf, 0x8d,
-0x5c, 0x3f, 0xcf, 0x80, 0x6c, 0x15, 0x39, 0x06,
-0x3f, 0xd7, 0xcb, 0xcc, 0x8c, 0xfe, 0x50, 0xcf,
-0x9c, 0xbf, 0x61, 0x1f, 0xdb, 0x8b, 0x71, 0xd4,
-0x76, 0xe1, 0x33, 0x3b, 0xb2, 0xcf, 0xef, 0xe5,
-0x27, 0xc9, 0x33, 0xd9, 0x21, 0xef, 0xf3, 0xef,
-0x31, 0x32, 0x67, 0xfa, 0x8d, 0x89, 0xfb, 0xbf,
-0xb2, 0xc7, 0xf5, 0x01, 0xfc, 0x99, 0x30, 0x12,
-0xe3, 0xf6, 0x2f, 0xf7, 0x64, 0xfb, 0xcc, 0x33,
-0xca, 0x85, 0xf1, 0xfc, 0xcb, 0xc1, 0xaf, 0x00,
-0x2b, 0xd9, 0x70, 0xff, 0xfc, 0x7b, 0xf6, 0x42,
-0x66, 0xf3, 0x2f, 0x29, 0xab, 0xe6, 0x62, 0x51,
-0x8f, 0x4f, 0xf5, 0xe7, 0xec, 0xfc, 0xa1, 0xb5,
-0xbe, 0xbc, 0x74, 0xaf, 0xca, 0xf4, 0xf3, 0xa2,
-0x84, 0xd4, 0xdf, 0x19, 0xda, 0xfe, 0x0a, 0xf0,
-0xbd, 0x54, 0x73, 0xb3, 0xf8, 0x57, 0x9a, 0x6d,
-0xb5, 0x5e, 0xfa, 0x4c, 0xf9, 0x27, 0x26, 0x27,
-0x1a, 0x5d, 0x6c, 0x9f, 0xd4, 0x7d, 0xec, 0x2c,
-0xaf, 0xb6, 0x71, 0xe7, 0xf7, 0xd6, 0xa7, 0x7c,
-0xa7, 0x5f, 0x1e, 0x35, 0x3f, 0x63, 0xe7, 0x99,
-0x77, 0x3d, 0xf4, 0x26, 0x3d, 0xa5, 0xd7, 0x33,
-0x0e, 0xe2, 0x9c, 0x1f, 0x35, 0x0a, 0xaf, 0xea,
-0x7b, 0x79, 0xd9, 0x4b, 0xb2, 0x0e, 0xfe, 0x5a,
-0x50, 0x7a, 0xd8, 0x98, 0xd7, 0xe4, 0x1d, 0x2c,
-0x67, 0x67, 0x15, 0x83, 0x38, 0xff, 0xb0, 0x33,
-0x96, 0x29, 0x7b, 0xe9, 0x6a, 0x47, 0x60, 0x26,
-0x3b, 0x77, 0xd7, 0xe8, 0x48, 0xb4, 0xda, 0xe7,
-0x1f, 0xc2, 0x06, 0x68, 0x2d, 0x75, 0xf4, 0x87,
-0x18, 0x43, 0xc6, 0x91, 0x02, 0x53, 0x5d, 0x8f,
-0xaa, 0x81, 0x88, 0x7d, 0xfe, 0x3c, 0xec, 0x56,
-0xd7, 0xab, 0x01, 0x67, 0xff, 0x57, 0x40, 0xdd,
-0x4a, 0x2a, 0x49, 0x87, 0xba, 0xdd, 0xc0, 0xc0,
-0x6c, 0x44, 0xcc, 0x97, 0x74, 0x3b, 0xb2, 0x2d,
-0xa3, 0xcb, 0xb4, 0xce, 0xdf, 0xe0, 0x07, 0x7f,
-0x29, 0xca, 0x81, 0xfe, 0xc0, 0x80, 0x37, 0x51,
-0x9e, 0xb2, 0xf5, 0x87, 0x8f, 0xc2, 0x1f, 0xb4,
-0x97, 0x1c, 0xfc, 0x02, 0x9f, 0x59, 0x7e, 0x06,
-0x9d, 0x79, 0x6d, 0x4f, 0x7d, 0xfa, 0xee, 0x2c,
-0xfe, 0x75, 0x50, 0xcc, 0xf2, 0x90, 0xfa, 0xb1,
-0xab, 0x8e, 0x1d, 0x6f, 0x5b, 0x89, 0x6b, 0xb0,
-0xcb, 0x40, 0x5e, 0xd0, 0x6f, 0xeb, 0x37, 0x6a,
-0xe9, 0x83, 0x60, 0xe9, 0x2a, 0x3f, 0x26, 0xd5,
-0xa0, 0xc6, 0x31, 0x3e, 0xdc, 0x8b, 0xe3, 0x52,
-0x77, 0x6f, 0xfe, 0x5c, 0xe8, 0xd9, 0xd8, 0xf9,
-0x87, 0xad, 0x6a, 0x96, 0xae, 0x52, 0xd5, 0x89,
-0xa2, 0x74, 0x81, 0xde, 0x83, 0x86, 0xc5, 0xd1,
-0x62, 0xda, 0x77, 0x8c, 0x07, 0xe9, 0x32, 0xbb,
-0xfe, 0x55, 0x95, 0x56, 0x57, 0x90, 0x4b, 0xe0,
-0x19, 0xbc, 0xa2, 0xae, 0x8c, 0x38, 0xfa, 0xc3,
-0x25, 0xd0, 0x03, 0x21, 0xd3, 0x37, 0x97, 0xd1,
-0x2e, 0xa8, 0xed, 0x53, 0xc3, 0xb2, 0x0a, 0xa7,
-0xf5, 0x90, 0x19, 0xd4, 0xe5, 0xb7, 0xc5, 0x7d,
-0x8c, 0x92, 0x0d, 0xc4, 0x3a, 0xa1, 0x71, 0xc8,
-0x26, 0x8f, 0x1f, 0x89, 0x8c, 0x7d, 0xc2, 0xc6,
-0x5c, 0x55, 0x79, 0x4c, 0x3d, 0x28, 0x50, 0x78,
-0x08, 0x4e, 0xd3, 0x1a, 0xd3, 0xa7, 0xcb, 0x39,
-0x90, 0x62, 0xf9, 0xc3, 0x84, 0xec, 0x2e, 0xe6,
-0x6d, 0xa2, 0xa5, 0xff, 0x27, 0xb4, 0x9a, 0xdb,
-0xec, 0xf5, 0x8e, 0x4b, 0x26, 0x16, 0x29, 0x86,
-0x56, 0x66, 0xa4, 0x49, 0x58, 0xac, 0x65, 0x1d,
-0x1e, 0xa3, 0xeb, 0x12, 0xdb, 0xb2, 0x6a, 0x76,
-0x23, 0xe4, 0x32, 0x58, 0x63, 0x96, 0xc5, 0x3c,
-0x2b, 0xdc, 0x60, 0xeb, 0xe7, 0x19, 0x5f, 0x4e,
-0xd8, 0x63, 0xe7, 0x0f, 0x41, 0x85, 0xb6, 0x98,
-0x1e, 0x43, 0x47, 0xe4, 0xb7, 0xf5, 0x87, 0x83,
-0x70, 0x44, 0xa8, 0x0d, 0x85, 0x8f, 0xc2, 0xfe,
-0x54, 0xc2, 0x11, 0xb3, 0xab, 0xd5, 0x97, 0x96,
-0xc3, 0xb6, 0x9e, 0x0d, 0xa7, 0x57, 0x1b, 0xe7,
-0xeb, 0xa6, 0x0c, 0x93, 0x89, 0xfb, 0xbf, 0xd0,
-0x67, 0xc6, 0xc3, 0xe3, 0xf6, 0x1c, 0xcd, 0x6c,
-0xb7, 0x4e, 0x81, 0xb0, 0xce, 0x33, 0x37, 0x19,
-0xff, 0xe2, 0x6a, 0x43, 0x3f, 0xc7, 0x26, 0xa4,
-0x5d, 0x91, 0x2b, 0xc4, 0x26, 0xaf, 0x52, 0xb7,
-0xe5, 0x35, 0x16, 0x5e, 0x57, 0xa1, 0x3d, 0xab,
-0x06, 0xb2, 0xf0, 0xab, 0x9f, 0xcc, 0x17, 0xbf,
-0x81, 0xb5, 0x89, 0x08, 0x99, 0x27, 0xd7, 0x1f,
-0xee, 0xd1, 0x13, 0x36, 0x7e, 0x55, 0xc5, 0x3c,
-0xc7, 0xc8, 0x25, 0xca, 0x9e, 0xb2, 0x60, 0x14,
-0xff, 0x95, 0xf5, 0x1b, 0x7e, 0x23, 0x2c, 0x7f,
-0xd8, 0x24, 0x8e, 0x55, 0xcf, 0xb3, 0xba, 0x1a,
-0xe2, 0x1b, 0x99, 0x91, 0x91, 0x2d, 0xb0, 0xf5,
-0x87, 0x03, 0x88, 0x44, 0x59, 0x7e, 0x7e, 0x69,
-0xd2, 0xc3, 0x85, 0x88, 0xd7, 0xf9, 0xfa, 0xe5,
-0xf7, 0x73, 0x2c, 0xfd, 0xe1, 0x19, 0x7a, 0x3e,
-0xdd, 0xc5, 0xe1, 0x98, 0x43, 0x1b, 0xd7, 0xab,
-0x5f, 0x5f, 0xc9, 0x7e, 0x3f, 0x45, 0x0e, 0x08,
-0xcd, 0xc0, 0xc2, 0x52, 0xc4, 0x2f, 0x1a, 0x10,
-0xfa, 0x79, 0x86, 0x5f, 0x1d, 0xcc, 0x60, 0xbf,
-0x64, 0xa1, 0x9a, 0xd8, 0x67, 0x4b, 0xbf, 0xb1,
-0x86, 0xed, 0x56, 0xb6, 0xfb, 0x5c, 0x6d, 0xa8,
-0x4d, 0xe4, 0x0c, 0xac, 0x51, 0xcb, 0x9a, 0xd4,
-0x5b, 0x5a, 0x2f, 0x93, 0xf8, 0xe8, 0xb7, 0x2a,
-0x3b, 0xe1, 0x79, 0x3d, 0x20, 0xca, 0x5e, 0xec,
-0x20, 0x44, 0xa6, 0x3f, 0x0c, 0xac, 0x6b, 0x64,
-0xbc, 0xdb, 0x5f, 0x6d, 0xed, 0xff, 0xba, 0x7d,
-0x80, 0xa9, 0xbc, 0x32, 0x7d, 0xf6, 0x6e, 0x69,
-0xe8, 0x33, 0x0e, 0x40, 0x38, 0xe6, 0xc5, 0x97,
-0x5f, 0xb7, 0xe6, 0x6b, 0xa7, 0x72, 0x52, 0x79,
-0x31, 0xd3, 0x86, 0xe5, 0x0f, 0xd1, 0x78, 0x31,
-0x3a, 0x27, 0xee, 0x71, 0xf4, 0x87, 0x88, 0x5f,
-0xba, 0x75, 0xec, 0xfc, 0xa0, 0x10, 0x72, 0x9c,
-0x80, 0x11, 0x05, 0x0d, 0xb3, 0x88, 0xd8, 0xfa,
-0xc3, 0xd9, 0xfa, 0x8b, 0x94, 0xa3, 0xd5, 0xa0,
-0xf6, 0x1c, 0x04, 0x99, 0xfe, 0xd0, 0x3a, 0xff,
-0x30, 0x4d, 0x88, 0x26, 0xda, 0x28, 0x8d, 0xb0,
-0xd7, 0x4c, 0x64, 0xad, 0x2f, 0x16, 0x28, 0x22,
-0x40, 0xa7, 0x71, 0x7d, 0x59, 0x73, 0x41, 0xb5,
-0xdb, 0xe0, 0x19, 0xa1, 0x9e, 0x65, 0x67, 0x59,
-0xcc, 0xe1, 0x85, 0x5d, 0x78, 0x5a, 0xaa, 0xea,
-0xc7, 0xfb, 0x08, 0x97, 0x09, 0x1d, 0x1d, 0xdf,
-0xc2, 0xf0, 0x7b, 0x8f, 0xc0, 0x2f, 0x24, 0x62,
-0x09, 0xef, 0x0a, 0x84, 0xda, 0xff, 0x8d, 0x01,
-0x79, 0x30, 0x25, 0x8b, 0x57, 0x1e, 0xd4, 0x92,
-0x9d, 0xd9, 0x7e, 0xbe, 0x96, 0xce, 0x49, 0x60,
-0xe7, 0xd9, 0x3e, 0xa9, 0x5c, 0xea, 0x39, 0x68,
-0xeb, 0x0f, 0xff, 0xe5, 0x16, 0x2b, 0x7a, 0x47,
-0x7f, 0x18, 0xaf, 0x1f, 0xdc, 0xb8, 0x3a, 0xb7,
-0xce, 0x38, 0x4f, 0xeb, 0x63, 0xbe, 0x41, 0xb9,
-0x5f, 0x8c, 0xeb, 0xc9, 0xd2, 0x2d, 0xb0, 0x56,
-0xb3, 0xfa, 0xf3, 0x07, 0x0e, 0xac, 0xf2, 0x9d,
-0xc6, 0xd3, 0x5a, 0x55, 0x63, 0x5e, 0x8c, 0x7c,
-0xb4, 0x98, 0xb7, 0xd1, 0x60, 0x8b, 0xd6, 0x02,
-0x76, 0x9f, 0xa5, 0xaa, 0x8e, 0xce, 0x65, 0x6e,
-0x2d, 0xfa, 0x34, 0xe3, 0xcb, 0xd7, 0xa3, 0xb7,
-0xe1, 0x6d, 0x62, 0x4a, 0x3b, 0x62, 0x8f, 0xe5,
-0x5b, 0x90, 0x76, 0x31, 0x7c, 0x27, 0xf0, 0x2c,
-0x0d, 0x1a, 0x79, 0x10, 0xb6, 0xbe, 0x6b, 0x17,
-0xcb, 0xf7, 0xea, 0x5d, 0xa2, 0xcc, 0xcd, 0x63,
-0xec, 0x38, 0xa9, 0xd2, 0xbf, 0x68, 0xab, 0xa3,
-0x1e, 0x76, 0x02, 0x2a, 0x7f, 0x37, 0xe2, 0x18,
-0x6f, 0x58, 0x3f, 0xfb, 0x65, 0xd5, 0xf5, 0xe2,
-0x48, 0x58, 0xbe, 0x30, 0xea, 0xe2, 0xb9, 0x4f,
-0xc9, 0x03, 0xb6, 0xfe, 0xf0, 0x29, 0x38, 0x6f,
-0xec, 0x75, 0x7c, 0x26, 0xf5, 0xa5, 0xca, 0x87,
-0xd5, 0x0b, 0xbd, 0x73, 0xa9, 0xb7, 0x5f, 0xb6,
-0xf4, 0x87, 0x8f, 0xe3, 0xfa, 0x4a, 0x1a, 0xdb,
-0x9d, 0x94, 0x20, 0xf5, 0x74, 0x60, 0x58, 0xf8,
-0x9c, 0x11, 0x88, 0xab, 0x5b, 0x22, 0x27, 0x97,
-0x59, 0xf9, 0x43, 0x16, 0x11, 0x05, 0xb2, 0xd2,
-0x86, 0x9b, 0x91, 0x8c, 0x3c, 0x07, 0x01, 0x88,
-0x26, 0x03, 0x69, 0x31, 0x5f, 0x88, 0x5f, 0x90,
-0x84, 0x6c, 0x2d, 0xba, 0x86, 0xc6, 0x73, 0xf8,
-0x92, 0x22, 0xaf, 0x74, 0xf4, 0x87, 0xcb, 0xed,
-0x53, 0x95, 0x38, 0xe6, 0x32, 0x59, 0x54, 0xba,
-0xf4, 0x39, 0x29, 0x0c, 0xc1, 0xb8, 0x9c, 0x6e,
-0x75, 0xea, 0x5f, 0x17, 0xb2, 0x78, 0x0a, 0xdd,
-0x68, 0xde, 0x35, 0x8c, 0x98, 0xfb, 0x12, 0xf8,
-0xfa, 0xbf, 0x9f, 0x9e, 0x69, 0xe9, 0x37, 0x1c,
-0xda, 0x75, 0xc1, 0x16, 0x72, 0x4c, 0xdc, 0xff,
-0x45, 0x1d, 0xfe, 0x45, 0xec, 0x83, 0x7c, 0xc9,
-0xa7, 0xda, 0xf3, 0xed, 0xd5, 0x27, 0x3c, 0xdd,
-0x91, 0xec, 0xf3, 0xa3, 0x64, 0x7e, 0x32, 0xc3,
-0x61, 0x76, 0x04, 0x25, 0x1a, 0x77, 0x65, 0xed,
-0xff, 0x12, 0xdf, 0x55, 0x28, 0xf8, 0x57, 0xa7,
-0xcd, 0xbf, 0xa6, 0x64, 0x1d, 0xdc, 0xe4, 0x9c,
-0x7f, 0x38, 0xb9, 0x16, 0x29, 0xce, 0xa2, 0x5c,
-0x9a, 0x2c, 0x9a, 0x74, 0x7e, 0xaf, 0x3c, 0x7a,
-0xe9, 0x38, 0x22, 0xe6, 0xb9, 0x08, 0xff, 0x6a,
-0x18, 0x1a, 0xf7, 0xa0, 0xb2, 0xf5, 0x1b, 0x56,
-0x2e, 0x57, 0x16, 0x3f, 0xd1, 0xb2, 0x20, 0x3b,
-0x97, 0x1b, 0xb9, 0xf8, 0xf9, 0x51, 0xe3, 0x37,
-0x08, 0x64, 0xf4, 0x1b, 0x71, 0x06, 0x5b, 0x53,
-0xee, 0x23, 0xc7, 0xe3, 0x2f, 0xd1, 0x19, 0xe2,
-0xfc, 0xa8, 0x7d, 0xdb, 0xaa, 0x4e, 0x70, 0x2e,
-0xc3, 0xef, 0xc3, 0x7f, 0xbf, 0x32, 0x59, 0xdb,
-0xc7, 0xf9, 0xd7, 0x39, 0x08, 0x0d, 0xfa, 0xae,
-0x66, 0x40, 0x46, 0x6b, 0xcd, 0x8d, 0xd7, 0x64,
-0x9d, 0x1f, 0xd5, 0x78, 0x4e, 0x6c, 0x5b, 0x1e,
-0x6a, 0xfa, 0x98, 0x15, 0x37, 0x93, 0xdf, 0x18,
-0xb5, 0x37, 0xd4, 0x67, 0xeb, 0x37, 0x14, 0x8c,
-0x5b, 0xf8, 0x71, 0x8e, 0xca, 0xb8, 0xa0, 0xab,
-0x61, 0xd2, 0xf9, 0x51, 0x19, 0xda, 0xf5, 0xee,
-0x84, 0xfd, 0x5f, 0xb6, 0x7e, 0xc3, 0xc1, 0x5c,
-0xc7, 0x98, 0x32, 0xfe, 0xfc, 0xa8, 0x49, 0x7b,
-0xb7, 0xf7, 0x8a, 0x22, 0xc5, 0xa4, 0xf3, 0xa3,
-0x2c, 0x4d, 0xf2, 0xc6, 0x44, 0xd1, 0xa0, 0xf7,
-0x0b, 0x91, 0xa0, 0xf8, 0x4f, 0xf5, 0x1b, 0x7f,
-0xe4, 0xfc, 0xa8, 0xa5, 0xd9, 0xfb, 0xbf, 0x2e,
-0xa6, 0xdf, 0xc8, 0x18, 0x35, 0x7f, 0xec, 0xfc,
-0xa8, 0x22, 0xcb, 0x58, 0xf4, 0x65, 0xe7, 0x47,
-0x29, 0x0e, 0x11, 0xab, 0xcc, 0xce, 0x1f, 0x66,
-0xef, 0xff, 0x9a, 0xd8, 0xe7, 0x8b, 0x9e, 0x1f,
-0x45, 0xc6, 0xf3, 0x14, 0x4b, 0xbf, 0xb1, 0x55,
-0x1a, 0xb8, 0x28, 0x97, 0xb9, 0xc8, 0xf9, 0x51,
-0x92, 0x83, 0x5f, 0xd9, 0xc6, 0x11, 0xc1, 0xdf,
-0x33, 0xfb, 0x97, 0x2d, 0xce, 0xd8, 0xa6, 0x45,
-0x9c, 0x2b, 0x17, 0x39, 0x7f, 0x63, 0xb2, 0x76,
-0xc5, 0xca, 0x1f, 0x16, 0xda, 0xdf, 0xde, 0x30,
-0xb9, 0x3f, 0x59, 0xe7, 0x47, 0x89, 0x29, 0xb8,
-0x48, 0xe7, 0x0f, 0xfe, 0x31, 0xfe, 0x35, 0x41,
-0xbf, 0x61, 0xf3, 0x2f, 0x76, 0x24, 0xe6, 0x73,
-0x8a, 0xd8, 0xbf, 0xfc, 0x25, 0xfb, 0xbf, 0xa6,
-0x4c, 0x38, 0x9f, 0x2d, 0x5b, 0xbf, 0x91, 0xc5,
-0xbf, 0x1e, 0xb5, 0xf9, 0x97, 0xf3, 0x3e, 0x0f,
-0x8a, 0xf3, 0xb1, 0x33, 0xfc, 0xeb, 0xd6, 0xe3,
-0x59, 0x44, 0xac, 0x7d, 0xb2, 0xfe, 0x90, 0xad,
-0x14, 0xc9, 0x3e, 0x67, 0xa9, 0xc8, 0xf1, 0x09,
-0x19, 0xfd, 0x86, 0xc8, 0x1f, 0xf2, 0xf3, 0xa3,
-0x18, 0x11, 0x3b, 0xcb, 0x89, 0x18, 0x37, 0x32,
-0xe7, 0x6f, 0xd0, 0xbd, 0xec, 0xfc, 0xc3, 0x6b,
-0x08, 0xdb, 0xbf, 0x1c, 0xe4, 0xeb, 0x9d, 0xb2,
-0xdf, 0x4b, 0xf2, 0xac, 0x8e, 0x58, 0x9c, 0xa8,
-0x14, 0xac, 0xf3, 0x0f, 0xad, 0x63, 0x7b, 0xb9,
-0x21, 0xed, 0xd3, 0xaa, 0xb2, 0xf7, 0x7f, 0x39,
-0xeb, 0xcb, 0x9f, 0x19, 0xbb, 0xad, 0xe8, 0xb0,
-0xce, 0xdf, 0x48, 0x38, 0xfc, 0xab, 0x7c, 0x32,
-0xc9, 0xfa, 0x23, 0xfc, 0x2b, 0x2b, 0xa3, 0x68,
-0xeb, 0x37, 0x60, 0x4c, 0x19, 0xcf, 0xbf, 0x18,
-0x23, 0xfb, 0x11, 0x3f, 0x59, 0x71, 0xe2, 0xf9,
-0x1b, 0x19, 0xfe, 0x35, 0xa4, 0xb2, 0x8a, 0x61,
-0x27, 0x62, 0xd3, 0x45, 0xf8, 0xd7, 0x44, 0xc3,
-0xe1, 0x5f, 0xf9, 0x99, 0xa9, 0x44, 0xfe, 0x75,
-0x50, 0xd4, 0xbf, 0x58, 0x45, 0x6c, 0xbe, 0xa3,
-0x3f, 0xcc, 0x5f, 0xc9, 0xab, 0x5d, 0x1b, 0x9f,
-0xf1, 0x73, 0xfd, 0x06, 0x3f, 0x64, 0x3e, 0x71,
-0xae, 0xb6, 0x06, 0xb9, 0x55, 0xe6, 0xf7, 0x53,
-0x86, 0x8c, 0xb1, 0x59, 0xf5, 0x7d, 0xbe, 0xbd,
-0x6d, 0x43, 0x7d, 0x9f, 0x41, 0xdd, 0x41, 0xdf,
-0x33, 0x6c, 0x3f, 0x6c, 0xa0, 0x86, 0x9d, 0x60,
-0x39, 0xe8, 0xe7, 0x73, 0x01, 0xaf, 0x2c, 0x92,
-0x9b, 0x8d, 0x3b, 0xb5, 0xab, 0x94, 0xfc, 0x1e,
-0x89, 0x19, 0x5f, 0xcb, 0xc9, 0x7f, 0x45, 0xba,
-0x27, 0xef, 0x4e, 0xf5, 0xaa, 0xb2, 0x7c, 0x73,
-0x2e, 0x88, 0x36, 0x8d, 0xb9, 0xf7, 0x48, 0x77,
-0x1a, 0x5f, 0xd3, 0x4a, 0xfa, 0xb8, 0xf1, 0x6d,
-0xad, 0xc4, 0x54, 0xe6, 0xc2, 0x06, 0xe3, 0x1b,
-0xc5, 0x8a, 0x59, 0xd8, 0x24, 0x3a, 0x44, 0x24,
-0x9d, 0x46, 0x75, 0xbf, 0xaa, 0xb4, 0x0a, 0xc3,
-0x8b, 0xc6, 0x3d, 0x54, 0xd5, 0x8b, 0x54, 0x97,
-0x08, 0x25, 0xd8, 0x83, 0x46, 0x22, 0x76, 0x07,
-0x5c, 0x02, 0x2e, 0x2a, 0xc5, 0xa4, 0x3b, 0xe0,
-0x36, 0x34, 0x1e, 0x8f, 0xa9, 0x51, 0x7e, 0xc5,
-0x6a, 0xf3, 0x4a, 0xd4, 0xb5, 0x4a, 0xba, 0x93,
-0x7e, 0x4d, 0x2f, 0x49, 0x71, 0xe3, 0xdb, 0xdf,
-0x2d, 0x4e, 0xb9, 0x7e, 0x50, 0x1b, 0xed, 0xfb,
-0xf6, 0x32, 0xe7, 0xbb, 0x5e, 0x69, 0xc2, 0x45,
-0x54, 0x0a, 0x8b, 0x15, 0xa9, 0x85, 0x1b, 0x39,
-0x12, 0x6d, 0x85, 0xd8, 0x26, 0x15, 0x8d, 0x38,
-0xb5, 0xfb, 0x6c, 0x28, 0x01, 0x49, 0x85, 0x88,
-0xae, 0x51, 0x45, 0xe7, 0x46, 0x21, 0x2d, 0xc6,
-0x2b, 0x66, 0x04, 0x34, 0xa7, 0xcd, 0xad, 0x52,
-0xa4, 0xa7, 0x49, 0xbf, 0x2d, 0x58, 0x42, 0x24,
-0x83, 0x36, 0x95, 0x15, 0x2f, 0xbc, 0x3d, 0x22,
-0x45, 0xa0, 0x29, 0x79, 0x5b, 0x69, 0x09, 0xd8,
-0xe3, 0xf2, 0x4a, 0x45, 0x70, 0x9d, 0xa9, 0x35,
-0xbb, 0x96, 0x48, 0x5f, 0x33, 0x6e, 0x33, 0x4b,
-0x7e, 0xa0, 0x78, 0xa5, 0xdb, 0x4d, 0xa3, 0xbf,
-0xb0, 0xd9, 0xfa, 0x19, 0x04, 0x36, 0x2e, 0x74,
-0x9e, 0x8c, 0xaf, 0x49, 0xa0, 0xf8, 0xf1, 0xf6,
-0x4a, 0x1c, 0x54, 0xb8, 0x1e, 0x54, 0x43, 0xda,
-0x0a, 0x92, 0x3d, 0xae, 0x18, 0x29, 0x85, 0xb5,
-0x10, 0xc3, 0x27, 0x42, 0x4a, 0x8d, 0x56, 0xd0,
-0xdb, 0xd1, 0x50, 0x0d, 0x02, 0x65, 0xb4, 0x54,
-0x72, 0xc6, 0xe5, 0x8a, 0x49, 0x6f, 0xc1, 0xb7,
-0x8c, 0x19, 0xd4, 0xb5, 0x5c, 0x3a, 0x06, 0x3f,
-0x34, 0x8a, 0x69, 0xee, 0x72, 0x29, 0x85, 0x57,
-0x8a, 0x33, 0xe3, 0xca, 0x8b, 0xc1, 0x31, 0x7c,
-0x62, 0xf9, 0x54, 0xba, 0x0b, 0xee, 0xa0, 0x97,
-0xc0, 0xb4, 0x0e, 0xa9, 0x59, 0x8a, 0xc2, 0x02,
-0x98, 0xe6, 0xb4, 0x89, 0xe4, 0x84, 0x5a, 0xbc,
-0x7a, 0x83, 0xaa, 0xbd, 0x7c, 0x49, 0xe8, 0x15,
-0x66, 0x94, 0xbe, 0xac, 0xb0, 0x6f, 0x6e, 0xf0,
-0x82, 0x39, 0xd7, 0x1a, 0x97, 0x6a, 0x84, 0x58,
-0xd0, 0x8c, 0x30, 0x8e, 0x6f, 0xb8, 0x17, 0xbb,
-0x8e, 0x98, 0xc6, 0x72, 0xd7, 0x78, 0xc5, 0xb0,
-0xc7, 0xe5, 0x91, 0x42, 0x74, 0x49, 0xb2, 0x48,
-0x55, 0x0e, 0x4a, 0xa1, 0x96, 0x25, 0xa1, 0x5b,
-0x55, 0xa5, 0xd7, 0x15, 0xc2, 0xc9, 0x2d, 0x52,
-0x8b, 0x4d, 0xf1, 0x9b, 0x4a, 0xf0, 0x4a, 0xc3,
-0x8c, 0xe6, 0x96, 0x3b, 0x42, 0x7e, 0xb5, 0xa4,
-0xcd, 0xd5, 0xdc, 0x73, 0x87, 0xfe, 0x2d, 0xd5,
-0xd5, 0xe6, 0x8a, 0xd1, 0x52, 0x34, 0x4a, 0xa8,
-0xf5, 0x5d, 0xaf, 0x44, 0x40, 0xc7, 0x6f, 0x8f,
-0xa8, 0x48, 0x02, 0x63, 0xac, 0x30, 0xa6, 0x6a,
-0x14, 0x42, 0x12, 0x7b, 0x00, 0x40, 0x43, 0x56,
-0x9f, 0x6f, 0x51, 0xe6, 0xb7, 0x5c, 0x8a, 0x6d,
-0x0a, 0x37, 0x2b, 0x7a, 0x8b, 0x37, 0xd9, 0xb0,
-0xe2, 0x9b, 0xeb, 0xf1, 0x4a, 0x9e, 0xbe, 0x38,
-0xaa, 0xd1, 0x42, 0xfb, 0x19, 0x4a, 0xa5, 0xd2,
-0xb7, 0xa0, 0x89, 0x96, 0xa0, 0x01, 0x8b, 0xa1,
-0x90, 0xba, 0xd8, 0x95, 0x08, 0xdc, 0x4e, 0x15,
-0xc3, 0x9e, 0xaf, 0x1c, 0x69, 0x11, 0x6d, 0x8a,
-0x15, 0x97, 0xba, 0x2c, 0x63, 0xab, 0x6b, 0xb1,
-0x74, 0x3d, 0x8d, 0x30, 0x03, 0xac, 0x0f, 0xf5,
-0xbb, 0x14, 0xba, 0x48, 0x6f, 0x52, 0x15, 0xbf,
-0x0b, 0xa8, 0xa1, 0x6b, 0x51, 0x85, 0x14, 0x2a,
-0x2d, 0x8b, 0xd0, 0x60, 0x73, 0x28, 0xbe, 0x6b,
-0xb1, 0xfc, 0x4d, 0xfa, 0x66, 0xec, 0xca, 0x52,
-0xaf, 0x6d, 0xa8, 0x39, 0x68, 0x28, 0x68, 0x94,
-0x1a, 0x21, 0x6b, 0x5c, 0x8b, 0x5d, 0xf7, 0xd0,
-0x3b, 0x63, 0xdf, 0x2e, 0x75, 0xad, 0x45, 0xe3,
-0xdd, 0xf4, 0x3f, 0xa8, 0x25, 0xfb, 0x73, 0xf1,
-0x69, 0xe8, 0xdf, 0x56, 0x4b, 0xec, 0xb5, 0x73,
-0x5d, 0x04, 0x57, 0xc1, 0xbb, 0xb1, 0xaf, 0x95,
-0xe6, 0xef, 0x47, 0xe3, 0xce, 0x13, 0x57, 0xa9,
-0x68, 0x34, 0xb7, 0xdc, 0x19, 0x43, 0xc3, 0xb4,
-0xc6, 0x75, 0xdd, 0xe2, 0x9c, 0xb9, 0x78, 0xa5,
-0xa1, 0xf4, 0xf6, 0xfd, 0x68, 0x78, 0x97, 0xc9,
-0x77, 0x14, 0xee, 0x57, 0xae, 0x6c, 0xcf, 0x8b,
-0x7d, 0xfb, 0x0e, 0xa0, 0xd6, 0xb8, 0x80, 0x48,
-0xcd, 0xf8, 0xe4, 0x09, 0xae, 0x2f, 0x7c, 0x98,
-0x77, 0xea, 0x5f, 0xc3, 0xb9, 0xe0, 0x57, 0x70,
-0xc5, 0x51, 0x6b, 0x5c, 0x52, 0x8e, 0xb4, 0x8c,
-0xde, 0x81, 0x2f, 0x1a, 0x8e, 0xbd, 0xac, 0xe5,
-0x8e, 0xe1, 0x6f, 0x2d, 0x74, 0x6d, 0x74, 0x2d,
-0x6b, 0x89, 0xc6, 0x2e, 0x29, 0xc5, 0x36, 0x86,
-0xf8, 0x2e, 0xa3, 0xa4, 0x59, 0xba, 0x13, 0x8a,
-0xa0, 0xd8, 0x74, 0x35, 0x4b, 0x4b, 0xe2, 0xdf,
-0xe6, 0x06, 0xc6, 0x18, 0xdf, 0x26, 0xce, 0xfa,
-0x72, 0x45, 0x80, 0xcd, 0xa0, 0x35, 0x5f, 0xaa,
-0x9e, 0xe3, 0x66, 0xc6, 0x36, 0x34, 0x0a, 0x9c,
-0xb9, 0xb8, 0x2e, 0x82, 0xd3, 0xa4, 0xea, 0x8b,
-0xd5, 0xc2, 0x56, 0x34, 0xb0, 0xf1, 0x6c, 0x66,
-0x6c, 0x63, 0xb3, 0x5c, 0x98, 0x69, 0x53, 0x66,
-0xb4, 0x34, 0x85, 0x6e, 0xf7, 0x96, 0x44, 0x24,
-0xc3, 0xbc, 0xad, 0xac, 0x58, 0x65, 0x46, 0x87,
-0xc1, 0xde, 0x0d, 0xc3, 0x19, 0x17, 0xce, 0xe7,
-0x6d, 0x7a, 0x89, 0xd7, 0x15, 0x91, 0x9a, 0xcc,
-0xdb, 0x42, 0x25, 0x95, 0xed, 0x0d, 0x52, 0x13,
-0x6d, 0xd4, 0x0b, 0xbd, 0x0a, 0x88, 0x98, 0x84,
-0x7d, 0xee, 0xe2, 0x2b, 0x4c, 0x52, 0x15, 0x43,
-0xc1, 0xf5, 0x25, 0xe1, 0x7b, 0x6a, 0x14, 0xa3,
-0x33, 0x95, 0xec, 0xbf, 0xe3, 0x77, 0x11, 0x9d,
-0x52, 0x5d, 0xaf, 0x54, 0x09, 0x21, 0x68, 0x80,
-0xda, 0xe1, 0x27, 0x4a, 0x07, 0x04, 0xca, 0xbc,
-0x5b, 0xed, 0xb5, 0x7c, 0x9d, 0x91, 0xcb, 0xdc,
-0xce, 0x0f, 0xd1, 0xdb, 0xe0, 0x8b, 0x73, 0x0c,
-0xbe, 0x95, 0x53, 0x4c, 0xbf, 0x11, 0x9b, 0x9b,
-0x52, 0xbf, 0x05, 0xc5, 0x76, 0x9f, 0xd7, 0x18,
-0x12, 0xdb, 0x27, 0xc1, 0x0e, 0x24, 0x46, 0xdf,
-0x72, 0x27, 0x7c, 0x8d, 0xe4, 0x51, 0xb9, 0xf9,
-0xea, 0xa8, 0xfa, 0x2d, 0x32, 0x95, 0x3a, 0xdf,
-0x96, 0xa3, 0x4b, 0x5e, 0xec, 0xb9, 0x66, 0xa2,
-0x81, 0x6f, 0x62, 0x85, 0x96, 0xd2, 0x63, 0xd1,
-0x8e, 0x52, 0x99, 0xa8, 0x4e, 0x1b, 0x0d, 0xbd,
-0x43, 0x3e, 0xb6, 0x81, 0x7e, 0xa8, 0x60, 0x47,
-0xcc, 0xfb, 0x69, 0x3f, 0xcc, 0xd0, 0x54, 0x76,
-0xb6, 0x9f, 0xd3, 0x46, 0x91, 0xca, 0x60, 0x89,
-0xe1, 0x2f, 0x56, 0xfa, 0xa4, 0xb2, 0x45, 0x4b,
-0x9a, 0x6e, 0x2d, 0x56, 0x7e, 0x37, 0xe3, 0xea,
-0xd4, 0x92, 0xa6, 0xa2, 0xcb, 0x9c, 0x39, 0x85,
-0x72, 0xd7, 0x8a, 0x9e, 0x3f, 0x0f, 0x5d, 0xb2,
-0xa1, 0x64, 0x07, 0x37, 0xbe, 0xb5, 0xa1, 0x64,
-0xbb, 0xeb, 0x6f, 0xe8, 0x0d, 0xa1, 0x4b, 0x1e,
-0x93, 0x9c, 0x36, 0xa5, 0xf8, 0x5d, 0x79, 0xe8,
-0xe2, 0x20, 0x0e, 0x33, 0xd9, 0x77, 0x69, 0x68,
-0xcc, 0x47, 0xa7, 0x47, 0x0c, 0xcd, 0x69, 0xa3,
-0x2a, 0x77, 0x15, 0x96, 0x2a, 0x8b, 0xa5, 0xc2,
-0x8e, 0xc6, 0x58, 0x61, 0x69, 0xfb, 0xe2, 0x42,
-0x34, 0x42, 0x85, 0x6a, 0x7b, 0x8e, 0xb4, 0x29,
-0x33, 0xae, 0x45, 0x4d, 0x85, 0xb7, 0x29, 0xb7,
-0x4b, 0x25, 0xc6, 0xa2, 0x26, 0xed, 0x36, 0xa5,
-0x84, 0x19, 0x9a, 0x66, 0xe0, 0x15, 0x97, 0xe1,
-0xdc, 0xa7, 0x2c, 0xc2, 0x6b, 0xaf, 0x6b, 0xa2,
-0x68, 0xdc, 0x46, 0x8a, 0xd1, 0x91, 0x6d, 0x8b,
-0xa0, 0x47, 0x43, 0xc3, 0xb9, 0x8d, 0xdb, 0x45,
-0xa8, 0x91, 0x44, 0x72, 0xcd, 0x0c, 0xe4, 0x7e,
-0xb3, 0xc1, 0xbd, 0x08, 0x8d, 0x5d, 0x5a, 0xa5,
-0xd3, 0x04, 0xbc, 0xf2, 0xad, 0xf0, 0xa6, 0xb9,
-0x2c, 0xa4, 0x32, 0xa3, 0xdd, 0xbc, 0x32, 0xac,
-0x36, 0x7e, 0xe3, 0x56, 0x5d, 0x49, 0x95, 0x84,
-0xb6, 0x66, 0xbe, 0x8b, 0x41, 0x40, 0xfc, 0xdb,
-0xba, 0x2b, 0x25, 0xad, 0x82, 0x77, 0xe1, 0x1f,
-0x94, 0x7f, 0x46, 0x50, 0x28, 0x7b, 0xb7, 0xfd,
-0xaf, 0xf5, 0x12, 0xd3, 0x6e, 0x23, 0x43, 0xb4,
-0x57, 0x0b, 0x29, 0xde, 0x65, 0xe5, 0x60, 0xf4,
-0xf9, 0xe7, 0x2a, 0xde, 0xb2, 0x72, 0xcd, 0x30,
-0xfd, 0xa1, 0x76, 0x6f, 0xe6, 0xe5, 0xa8, 0x1f,
-0x5b, 0x3a, 0xf6, 0xc6, 0xd8, 0x99, 0xb1, 0xf3,
-0x93, 0x0d, 0xf8, 0xaf, 0x7c, 0x16, 0xbc, 0xe3,
-0x59, 0xd0, 0xfb, 0x5a, 0x72, 0xef, 0xca, 0xa0,
-0x30, 0xc6, 0x86, 0x82, 0xef, 0x2d, 0x1d, 0x7b,
-0xfd, 0x3d, 0x34, 0x9c, 0x36, 0x57, 0xd4, 0x2e,
-0x39, 0x5a, 0x34, 0xaf, 0xef, 0xf0, 0xc9, 0x79,
-0xc2, 0x18, 0x3b, 0x39, 0xaf, 0x1e, 0xbf, 0xab,
-0x1e, 0x8d, 0x4c, 0x7f, 0x4a, 0x6f, 0x7e, 0x75,
-0xf3, 0xdc, 0xf6, 0x07, 0xce, 0x5e, 0x53, 0x1a,
-0x3d, 0x5e, 0xb4, 0xaf, 0x7d, 0xc3, 0xbd, 0xd7,
-0xac, 0x8e, 0xee, 0x2f, 0xda, 0x33, 0xb0, 0x61,
-0x99, 0xd3, 0xc6, 0x45, 0x9a, 0x8d, 0xa9, 0xcd,
-0x57, 0x28, 0x79, 0xaf, 0xc0, 0x3d, 0x68, 0x2c,
-0xb0, 0x0c, 0xed, 0x8a, 0xe2, 0x4b, 0x9d, 0xb1,
-0x2b, 0x36, 0x1c, 0xf7, 0x7d, 0x8d, 0x19, 0x45,
-0xda, 0xed, 0x7d, 0xae, 0x7b, 0xa4, 0x77, 0xf1,
-0xca, 0x34, 0xa7, 0x0d, 0xc7, 0x65, 0xc8, 0xe0,
-0xb2, 0xaa, 0xac, 0x15, 0x06, 0x28, 0xd4, 0xb9,
-0x8f, 0x80, 0x51, 0x90, 0xda, 0x61, 0x99, 0x54,
-0x6a, 0x2c, 0x06, 0x89, 0x2a, 0xcb, 0xd8, 0x15,
-0x35, 0xf3, 0x8e, 0xb9, 0x95, 0x55, 0xd2, 0x54,
-0xfa, 0x0d, 0x5d, 0x3b, 0x64, 0x19, 0x85, 0x29,
-0x65, 0xd5, 0x22, 0x66, 0x48, 0xce, 0x77, 0x81,
-0x05, 0xc7, 0xf8, 0x86, 0xa3, 0x03, 0x61, 0x37,
-0x6c, 0xb5, 0xef, 0xec, 0xdc, 0xa7, 0x50, 0x29,
-0x97, 0xf2, 0x4c, 0x84, 0xe3, 0x2d, 0x4a, 0x85,
-0xc4, 0x5e, 0x5a, 0x2d, 0xae, 0xcc, 0x68, 0x51,
-0x69, 0xa4, 0x39, 0xb3, 0x2e, 0xca, 0xe1, 0x86,
-0x1e, 0x7f, 0xa2, 0x71, 0x57, 0xe1, 0xdd, 0x10,
-0xe5, 0xbf, 0xe9, 0x5a, 0x88, 0xfc, 0xde, 0xf4,
-0x0f, 0x37, 0xee, 0xb2, 0xe7, 0x54, 0x35, 0x55,
-0x28, 0xa2, 0x8a, 0x89, 0x30, 0xb2, 0x44, 0x38,
-0x33, 0x06, 0x62, 0xb7, 0x82, 0x62, 0x4a, 0xf3,
-0x25, 0xc3, 0x72, 0x1b, 0x66, 0x31, 0x14, 0x02,
-0xdb, 0x03, 0x28, 0x15, 0x23, 0x60, 0x16, 0xd2,
-0x9c, 0x52, 0xec, 0xcb, 0x75, 0x2e, 0x05, 0x9d,
-0x80, 0x24, 0xc2, 0x3a, 0xbc, 0x8f, 0x81, 0xab,
-0xa5, 0x5d, 0x42, 0x7f, 0xc1, 0x96, 0x0d, 0xeb,
-0x81, 0xca, 0x16, 0x6d, 0x3b, 0x94, 0x29, 0x6a,
-0xa6, 0x4d, 0x71, 0xcc, 0xb5, 0x15, 0x22, 0xec,
-0x16, 0x31, 0xb2, 0x95, 0x23, 0x4f, 0x8e, 0x80,
-0xa0, 0x32, 0x0b, 0xbf, 0x34, 0xc9, 0xc0, 0x91,
-0x6e, 0x65, 0xcb, 0x8f, 0x92, 0xbb, 0xa0, 0x94,
-0xe6, 0x40, 0x5e, 0x87, 0xc2, 0xc6, 0x3e, 0x13,
-0x2e, 0x6d, 0x15, 0x31, 0xb6, 0x71, 0x9d, 0x83,
-0xcb, 0xbd, 0x8e, 0xa1, 0x84, 0x5a, 0x36, 0x30,
-0xc3, 0xf2, 0xf3, 0x06, 0xa8, 0x1c, 0x8e, 0x1d,
-0x5c, 0x96, 0x81, 0xff, 0xce, 0xab, 0x30, 0xc4,
-0xb8, 0x0c, 0xf0, 0x40, 0x88, 0x7a, 0xcb, 0x64,
-0x15, 0x0e, 0x41, 0xa8, 0xc7, 0x1b, 0x6a, 0x50,
-0x0d, 0xfe, 0xcb, 0x70, 0xba, 0xac, 0x2a, 0x20,
-0xfc, 0x98, 0x71, 0x5d, 0x83, 0xd2, 0x8c, 0x6e,
-0x19, 0xfd, 0x73, 0x9b, 0xd2, 0xdc, 0x53, 0x1a,
-0x62, 0x06, 0xc4, 0x7a, 0xd8, 0x15, 0x89, 0x8a,
-0x7d, 0xeb, 0x86, 0x14, 0x11, 0xf1, 0x88, 0x85,
-0xcb, 0xf8, 0xcf, 0xd1, 0x08, 0xa1, 0xe7, 0x67,
-0xb8, 0x2c, 0xda, 0x34, 0x49, 0x11, 0xee, 0xde,
-0x2d, 0x3f, 0xcf, 0xfa, 0x5c, 0x88, 0x6d, 0xb8,
-0xe7, 0xb7, 0xe7, 0xd4, 0xb8, 0xce, 0xc0, 0xf1,
-0x17, 0xc3, 0x75, 0x50, 0x68, 0x08, 0x37, 0x0d,
-0xc5, 0x80, 0xb4, 0xcb, 0xc0, 0x5b, 0x14, 0x46,
-0xc4, 0xb8, 0xa2, 0xf8, 0x0e, 0x2c, 0xa2, 0x5a,
-0x4c, 0x29, 0x95, 0xf6, 0xdb, 0x86, 0x73, 0xc5,
-0x9a, 0xd3, 0x28, 0x10, 0x01, 0xc7, 0x38, 0x03,
-0x92, 0x30, 0x10, 0x97, 0xa1, 0x85, 0x1b, 0x16,
-0x2e, 0x1b, 0xd7, 0x39, 0x70, 0xbc, 0x9f, 0x1b,
-0x57, 0x95, 0xe6, 0xdb, 0x57, 0xf2, 0x6d, 0x4c,
-0x91, 0x16, 0x2b, 0xf7, 0xb4, 0x4c, 0x8d, 0xe5,
-0x96, 0x22, 0x8c, 0xde, 0x43, 0x1f, 0x8d, 0xfd,
-0x35, 0x7e, 0x29, 0x61, 0x57, 0xbe, 0x51, 0x2a,
-0x99, 0xa2, 0xce, 0x68, 0x48, 0x8b, 0x81, 0xfd,
-0xe9, 0x0a, 0x35, 0x4f, 0xb4, 0xc9, 0x2d, 0xcd,
-0xe3, 0x00, 0x1d, 0xbb, 0xa2, 0x34, 0xcf, 0x7a,
-0x9f, 0x9b, 0x2c, 0x5c, 0xfe, 0x76, 0x69, 0xc9,
-0x7e, 0x05, 0x71, 0x19, 0x01, 0x1a, 0x8d, 0x7b,
-0x5a, 0x1e, 0x65, 0x57, 0x7a, 0xed, 0xf9, 0xf2,
-0x43, 0x05, 0xbd, 0x9e, 0x2d, 0xab, 0xcd, 0x88,
-0xcb, 0x77, 0xe8, 0x5f, 0x8b, 0xe2, 0x42, 0x9b,
-0xcf, 0xae, 0x44, 0x15, 0x6a, 0xf5, 0x19, 0xc7,
-0x8e, 0x51, 0x5e, 0x2c, 0xa7, 0x54, 0x5a, 0xab,
-0x94, 0x21, 0x1c, 0x2f, 0x66, 0xc6, 0x32, 0x71,
-0xc5, 0x7e, 0xe7, 0xaf, 0x8b, 0x29, 0xab, 0xa5,
-0xe9, 0x52, 0x43, 0xab, 0x96, 0x46, 0xe3, 0x06,
-0x68, 0xa0, 0xdc, 0x98, 0x0e, 0xdf, 0xa0, 0x9a,
-0x85, 0xcb, 0x86, 0x74, 0x0b, 0x2c, 0xa7, 0x97,
-0xb2, 0xd9, 0xd9, 0x2c, 0x26, 0x2e, 0x8a, 0xf3,
-0xc5, 0xae, 0xe4, 0x44, 0xed, 0xb5, 0x63, 0xf0,
-0xf9, 0x52, 0x13, 0x62, 0xbe, 0xd6, 0xe0, 0xc4,
-0x55, 0xf2, 0x89, 0x13, 0xb8, 0x6c, 0xcf, 0x57,
-0x04, 0x8c, 0x16, 0x2d, 0x74, 0x9d, 0xb7, 0x10,
-0x0d, 0x53, 0x0b, 0xb9, 0xb8, 0x41, 0x35, 0xbd,
-0xd1, 0x5b, 0x68, 0xd8, 0xe3, 0x62, 0xb8, 0x5c,
-0x9c, 0x70, 0x79, 0x59, 0x40, 0x6c, 0x16, 0x87,
-0x5c, 0x95, 0x52, 0x03, 0xbb, 0xa2, 0xe3, 0x15,
-0xc3, 0xba, 0x0f, 0x62, 0x4a, 0x04, 0xe7, 0x59,
-0x91, 0x18, 0x2e, 0x5b, 0x00, 0x0d, 0x11, 0x09,
-0x01, 0x1a, 0x67, 0xcb, 0x9e, 0xaf, 0x08, 0x81,
-0x2c, 0x5c, 0x4e, 0xe8, 0xaa, 0xda, 0x8a, 0x57,
-0x3a, 0xd8, 0x15, 0xb0, 0xc7, 0x65, 0x28, 0x76,
-0x40, 0xc7, 0x8d, 0xbf, 0xca, 0xac, 0xaf, 0x42,
-0x6a, 0xcf, 0x17, 0x2b, 0x0a, 0x3c, 0x0c, 0x33,
-0x8d, 0x3c, 0x8a, 0x78, 0x3a, 0x0d, 0x72, 0xd1,
-0x50, 0x7e, 0x80, 0xab, 0x65, 0xa6, 0x71, 0xbd,
-0x33, 0xae, 0x58, 0x4e, 0xa5, 0x54, 0xc0, 0x1f,
-0x5d, 0x4e, 0xa5, 0xeb, 0x32, 0x58, 0x8c, 0x46,
-0xf1, 0x0a, 0x69, 0xbd, 0xd6, 0xe0, 0x3c, 0xc3,
-0x26, 0x8c, 0x1d, 0x74, 0xc3, 0xdb, 0x24, 0x6f,
-0x81, 0x1e, 0x28, 0x6b, 0x42, 0x00, 0x2b, 0x61,
-0x86, 0xa1, 0x6a, 0x72, 0x09, 0x98, 0xf6, 0xb8,
-0x14, 0x28, 0x83, 0xfc, 0x45, 0xf2, 0x6d, 0xd0,
-0x07, 0x33, 0x16, 0xe5, 0x37, 0x35, 0x34, 0xc1,
-0x2b, 0x70, 0x25, 0xa8, 0x4d, 0x78, 0xa5, 0xd7,
-0x5e, 0xcb, 0x0d, 0x0a, 0xae, 0xa6, 0xe6, 0xc5,
-0x5e, 0x5c, 0x5f, 0xdc, 0x98, 0x2a, 0xd6, 0x57,
-0x08, 0x0d, 0xea, 0x8c, 0x0b, 0xb8, 0x5f, 0x09,
-0xe1, 0xec, 0x94, 0x1b, 0x2a, 0xfb, 0x79, 0x21,
-0xca, 0xe4, 0x68, 0x40, 0x2a, 0x90, 0x50, 0x5a,
-0xf3, 0x15, 0x6d, 0xe4, 0xb8, 0xac, 0x09, 0x5c,
-0x56, 0x18, 0x2e, 0x1b, 0x77, 0x49, 0x08, 0xd0,
-0x52, 0xa1, 0xdd, 0xe6, 0x3a, 0xc3, 0x68, 0x2a,
-0x2c, 0x5e, 0x7c, 0xdd, 0xa2, 0x4d, 0x86, 0xd9,
-0xa4, 0x15, 0x17, 0xbb, 0xa4, 0x42, 0xe3, 0x3a,
-0x68, 0x2a, 0x56, 0xd8, 0x8a, 0x73, 0xfc, 0x46,
-0x22, 0x82, 0x5e, 0xc4, 0xc5, 0x03, 0xed, 0xd2,
-0xe2, 0xb5, 0x2e, 0x1d, 0x5f, 0xb4, 0x48, 0xa9,
-0x86, 0x93, 0x8f, 0xfe, 0x50, 0xcc, 0x98, 0xe1,
-0xee, 0x41, 0x5c, 0x4e, 0x08, 0x5c, 0x6e, 0x81,
-0x84, 0x81, 0x86, 0x44, 0x5a, 0x8c, 0x04, 0xc7,
-0x65, 0xf1, 0x9c, 0xaf, 0xbb, 0xe9, 0xe5, 0x5b,
-0x63, 0x6f, 0xf6, 0x97, 0xcd, 0x57, 0xf3, 0x8b,
-0x6e, 0x35, 0xda, 0xd1, 0xc8, 0xbb, 0x49, 0xbe,
-0xd5, 0x78, 0xb3, 0xff, 0xca, 0xf9, 0xaa, 0xe1,
-0x8c, 0x6b, 0x6d, 0xf3, 0x8c, 0xa9, 0xad, 0xb9,
-0x4a, 0xa1, 0x59, 0x81, 0x58, 0x00, 0xdf, 0x28,
-0x2b, 0x49, 0x91, 0x55, 0x85, 0x53, 0xdb, 0x11,
-0x14, 0x4c, 0x7b, 0x35, 0x97, 0x0b, 0x5c, 0x5e,
-0xb2, 0xac, 0xbc, 0x34, 0xba, 0xdf, 0x3f, 0xb7,
-0x7d, 0x03, 0x1a, 0x06, 0x37, 0xfe, 0xfb, 0x71,
-0xb9, 0x6a, 0xec, 0xc6, 0x9f, 0xbc, 0x3c, 0x76,
-0xe6, 0xdc, 0xca, 0xaa, 0xb1, 0xa5, 0xfb, 0xde,
-0xf8, 0xe4, 0x4c, 0x06, 0x97, 0x33, 0xf7, 0x99,
-0x37, 0xb6, 0x64, 0xac, 0x68, 0xec, 0xcc, 0xe8,
-0xc9, 0x79, 0x63, 0x4b, 0x8f, 0xbe, 0x71, 0xfa,
-0x4c, 0x06, 0x97, 0x33, 0x6d, 0xae, 0xe1, 0xb8,
-0x3c, 0x20, 0x70, 0xd9, 0x7f, 0x15, 0xc7, 0xe5,
-0x9b, 0x19, 0x2e, 0x3f, 0x70, 0xd6, 0x69, 0x43,
-0xda, 0x61, 0x1b, 0x54, 0x1a, 0xee, 0xa9, 0xbd,
-0x96, 0xa1, 0xb1, 0x2b, 0x87, 0x99, 0xe1, 0xb4,
-0x41, 0xbf, 0xe5, 0x38, 0xb0, 0x09, 0x46, 0xa6,
-0xd3, 0xed, 0xec, 0x55, 0xe0, 0xe8, 0x33, 0xc9,
-0x70, 0x3e, 0xdc, 0xed, 0x19, 0x30, 0xd5, 0xb4,
-0x0c, 0xbe, 0xc6, 0x0e, 0x73, 0xc3, 0xf9, 0x50,
-0xf1, 0x92, 0x4d, 0x36, 0xbc, 0xa6, 0xd3, 0xe7,
-0x2f, 0x6f, 0x65, 0xf7, 0x98, 0x31, 0x78, 0xfe,
-0xeb, 0xc3, 0x20, 0x8e, 0xa1, 0xc8, 0x6e, 0x4a,
-0xec, 0x36, 0x17, 0xfd, 0x1a, 0x6e, 0x78, 0x7b,
-0xed, 0x36, 0xee, 0x76, 0xb2, 0x0d, 0x76, 0x19,
-0xb3, 0x35, 0xf7, 0xba, 0x30, 0x37, 0xa6, 0x1e,
-0xb4, 0xaf, 0x90, 0x3f, 0xfd, 0xf9, 0xa8, 0x93,
-0x9f, 0x4f, 0xe6, 0x8a, 0xdd, 0x1f, 0x0d, 0x72,
-0x43, 0xf8, 0x34, 0xbe, 0x8f, 0xcf, 0x87, 0x1b,
-0xce, 0xf3, 0xf9, 0x3e, 0x30, 0x99, 0x85, 0x75,
-0x9f, 0x75, 0xa1, 0x2f, 0x7b, 0xce, 0x4e, 0x7f,
-0xb0, 0xf1, 0x7f, 0xf2, 0x7c, 0xf8, 0x7c, 0x7d,
-0xc9, 0x73, 0x76, 0x5a, 0x68, 0xac, 0x46, 0xf7,
-0x65, 0x1f, 0x91, 0xd3, 0xfb, 0x53, 0x3e, 0xb5,
-0xb5, 0x7f, 0xe4, 0x8f, 0x3e, 0xdf, 0x9f, 0x7a,
-0x9b, 0xff, 0xc6, 0x4f, 0xfd, 0xd8, 0xd8, 0x98,
-0x79, 0x71, 0xe3, 0xff, 0xd3, 0x6d, 0x48, 0xf6,
-0x12, 0x1e, 0x6f, 0x64, 0x1a, 0x89, 0xa5, 0x37,
-0xf1, 0x5d, 0x1d, 0xbf, 0x06, 0xff, 0x0b, 0x6b,
-0x59, 0xbb, 0x88, 0xe1, 0x7c, 0xbe, 0x74, 0x2d,
-0xdb, 0x0d, 0xbe, 0x7c, 0x05, 0x66, 0x5a, 0xa9,
-0x99, 0x25, 0xac, 0x4e, 0x58, 0xd4, 0x81, 0x3f,
-0x65, 0x2d, 0x67, 0xda, 0x88, 0xb5, 0xfc, 0x7d,
-0x5c, 0xcb, 0xd6, 0x12, 0x9e, 0xb4, 0x96, 0xd5,
-0x3f, 0xb6, 0x96, 0x9d, 0x36, 0x7f, 0xe4, 0xf9,
-0x8c, 0x5b, 0xcb, 0xc0, 0xd7, 0xb2, 0xb5, 0x84,
-0xad, 0x45, 0x8d, 0x46, 0xaf, 0xf2, 0x27, 0xdf,
-0xe7, 0x4f, 0xf1, 0x75, 0x7f, 0xca, 0x73, 0x86,
-0x0c, 0x71, 0xbe, 0xc8, 0xe7, 0xab, 0xb5, 0xfc,
-0xff, 0xbe, 0x36, 0xff, 0xf9, 0x27, 0x04, 0xba,
-0x44, 0xf8, 0xff, 0x46, 0xae, 0xff, 0x2f, 0xfe,
-0xd3, 0xaf, 0x3e, 0x5f, 0x7d, 0xbe, 0xfa, 0x7c,
-0xf5, 0xf9, 0xea, 0xf3, 0xd5, 0xe7, 0xab, 0xcf,
-0x57, 0x9f, 0xff, 0x5f, 0x7c, 0x78, 0xbc, 0x44,
-0x78, 0xbc, 0x64, 0xfc, 0x3f, 0xdd, 0x97, 0xaf,
-0x3e, 0x5f, 0x7d, 0xbe, 0xfa, 0x7c, 0xf5, 0xf9,
-0xea, 0xf3, 0xd5, 0xe7, 0xab, 0xcf, 0x57, 0x9f,
-0xff, 0xbb, 0x3f, 0x21, 0x2e, 0x0c, 0x7b, 0xa3,
-0x36, 0x04, 0xbc, 0xa8, 0x2b, 0x87, 0xc0, 0xc8,
-0xfb, 0xd3, 0xfe, 0x1d, 0x6f, 0xef, 0x0a, 0x41,
-0x42, 0xca, 0xdc, 0xa7, 0xe7, 0x1f, 0x27, 0xf6,
-0xf5, 0xff, 0x02, 0xd6, 0x2c, 0x67, 0x26, 0xbd,
-0xa4, 0x00, 0x00,
diff --git a/board/esd/cpciiser4/Kconfig b/board/esd/cpciiser4/Kconfig
deleted file mode 100644 (file)
index 4079b2f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_CPCIISER4
-
-config SYS_BOARD
-       default "cpciiser4"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "CPCIISER4"
-
-endif
diff --git a/board/esd/cpciiser4/MAINTAINERS b/board/esd/cpciiser4/MAINTAINERS
deleted file mode 100644 (file)
index 85743db..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CPCIISER4 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/cpciiser4/
-F:     include/configs/CPCIISER4.h
-F:     configs/CPCIISER4_defconfig
diff --git a/board/esd/cpciiser4/Makefile b/board/esd/cpciiser4/Makefile
deleted file mode 100644 (file)
index b8d6bea..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = cpciiser4.o flash.o ../common/misc.o
diff --git a/board/esd/cpciiser4/cpciiser4.c b/board/esd/cpciiser4/cpciiser4.c
deleted file mode 100644 (file)
index e61cd5b..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * (C) Copyright 2000
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include "cpciiser4.h"
-#include <asm/processor.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-#if 0
-#define FPGA_DEBUG2
-#endif
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
-       int index, len, i;
-       int status;
-
-#ifdef FPGA_DEBUG
-       /* set up serial port with default baudrate */
-       (void) get_clocks ();
-       gd->baudrate = CONFIG_BAUDRATE;
-       serial_init ();
-       console_init_f ();
-#endif
-
-       /*
-        * Boot onboard FPGA
-        */
-       status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
-       if (status != 0) {
-               /* booting FPGA failed */
-#ifndef FPGA_DEBUG
-               /* set up serial port with default baudrate */
-               (void) get_clocks ();
-               gd->baudrate = CONFIG_BAUDRATE;
-               serial_init ();
-               console_init_f ();
-#endif
-               printf ("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf ("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i = 0; i < 4; i++) {
-                       len = fpgadata[index];
-                       printf ("FPGA: %s\n", &(fpgadata[index + 1]));
-                       index += len + 3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i = 20; i > 0; i--) {
-                       printf ("Rebooting in %2d seconds \r", i);
-                       for (index = 0; index < 1000; index++)
-                               udelay (1000);
-               }
-               putc ('\n');
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       /*
-        * Init FPGA via RESET (read access on CS3)
-        */
-       in_8((void *)0xf0200000);
-
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);     /* disable all ints */
-       mtdcr (UIC0CR, 0x00000000);     /* set all to be non-critical */
-       /*  mtdcr(UIC0PR, 0xFFFFFF81);   /  set int polarities */
-       mtdcr (UIC0PR, 0xFFFFFF80);     /* set int polarities */
-       mtdcr (UIC0TR, 0x10000000);     /* set int trigger levels */
-       mtdcr (UIC0VCR, 0x00000001);    /* set vect base=0,INT0 highest priority */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-
-       return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       int index;
-       int len;
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof (str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming AR405");
-       } else {
-               puts(str);
-       }
-
-       puts ("\nFPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i = 0; i < 4; i++) {
-               len = fpgadata[index];
-               printf ("%s ", &(fpgadata[index + 1]));
-               index += len + 3;
-       }
-
-       putc ('\n');
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-
-       return 0;
-}
diff --git a/board/esd/cpciiser4/cpciiser4.h b/board/esd/cpciiser4/cpciiser4.h
deleted file mode 100644 (file)
index 75e7950..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- *                          Start Address    Length
- * +-----------------------+ 0x4000_0000     Start of Flash -----------------
- * | MON8xx code           | 0x4000_0100     Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused)              |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses    |                 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) |                 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address          |                 0x04
- * +-----------------------+ 0x4001_FFC0                     ^
- * | Hardware Information  |                 0x40            | MON8xx
- * +=======================+ 0x4002_0000 (sector border)    -----------------
- * | Autostart Header      |                                 | Applications
- * | ...                   |                                 v
- *
- *****************************************************************************/
diff --git a/board/esd/cpciiser4/flash.c b/board/esd/cpciiser4/flash.c
deleted file mode 100644 (file)
index 34bdc05..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-       /*          printf("PB1CR = %x\n", pbcr); */
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -monitor_flash_len,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/cpciiser4/fpgadata.c b/board/esd/cpciiser4/fpgadata.c
deleted file mode 100644 (file)
index ac6122d..0000000
+++ /dev/null
@@ -1,4136 +0,0 @@
-0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0,
-0x0f, 0xf0, 0x00, 0x00, 0x01, 0x61, 0x00, 0x0c,
-0x69, 0x73, 0x65, 0x72, 0x34, 0x5f, 0x31, 0x2e,
-0x6e, 0x63, 0x64, 0x00, 0x62, 0x00, 0x0b, 0x73,
-0x34, 0x30, 0x78, 0x6c, 0x70, 0x71, 0x32, 0x30,
-0x38, 0x00, 0x63, 0x00, 0x0b, 0x32, 0x30, 0x30,
-0x31, 0x2f, 0x30, 0x33, 0x2f, 0x31, 0x39, 0x00,
-0x64, 0x00, 0x09, 0x31, 0x36, 0x3a, 0x31, 0x34,
-0x3a, 0x32, 0x35, 0x00, 0x65, 0xe2, 0x01, 0x00,
-0x00, 0x80, 0xf0, 0xff, 0x30, 0xe5, 0xe5, 0xe8,
-0xe5, 0x03, 0xe8, 0x04, 0x01, 0x02, 0x09, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x07, 0x0b, 0x01, 0x07, 0x01, 0x05, 0x09, 0x03,
-0x07, 0x09, 0x01, 0x05, 0x03, 0x05, 0x0b, 0x0c,
-0x08, 0x01, 0x07, 0x01, 0x05, 0x03, 0x05, 0x03,
-0x07, 0x01, 0x07, 0x02, 0x04, 0x03, 0x07, 0x01,
-0x09, 0x07, 0x01, 0x07, 0x01, 0x07, 0x08, 0xe7,
-0x0c, 0x09, 0x09, 0x09, 0x09, 0x09, 0x02, 0x04,
-0x0b, 0x09, 0x06, 0xe5, 0xe5, 0x01, 0x03, 0xe5,
-0xe5, 0x08, 0x02, 0x06, 0x07, 0x01, 0x06, 0xe5,
-0x02, 0x02, 0x04, 0x01, 0x02, 0xe5, 0x02, 0x02,
-0x08, 0x09, 0x09, 0x09, 0x09, 0x13, 0x09, 0x07,
-0x01, 0x09, 0x09, 0x13, 0xe5, 0x47, 0x05, 0x17,
-0x04, 0x04, 0x0e, 0x0e, 0x09, 0x06, 0x04, 0x09,
-0x59, 0x25, 0x02, 0xe5, 0x0e, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x01, 0x05, 0xe6, 0x08, 0x09, 0x09,
-0x01, 0x07, 0x09, 0x01, 0x07, 0x09, 0x0b, 0x01,
-0x07, 0x01, 0x04, 0x01, 0x0a, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0e,
-0xe8, 0x13, 0x09, 0x09, 0x09, 0x09, 0x0a, 0xe7,
-0x04, 0x09, 0x0a, 0xe5, 0x07, 0xe5, 0x06, 0x09,
-0x0a, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x06, 0xe8,
-0x04, 0x09, 0x09, 0xe5, 0x07, 0xe5, 0x07, 0x09,
-0x03, 0x05, 0xe5, 0x07, 0x0a, 0xe5, 0x06, 0x09,
-0x09, 0x09, 0x03, 0x40, 0x08, 0x1d, 0xe5, 0x12,
-0x1f, 0x08, 0xe5, 0x07, 0x01, 0x55, 0x26, 0x01,
-0xe6, 0xe5, 0x46, 0x31, 0x1f, 0x13, 0x58, 0x25,
-0xe6, 0xe5, 0x3f, 0x04, 0x1d, 0x04, 0x04, 0x0e,
-0x0e, 0x09, 0x03, 0x02, 0x04, 0x04, 0x0a, 0x53,
-0x28, 0x02, 0xe5, 0xe5, 0x10, 0x09, 0x09, 0x02,
-0x06, 0x09, 0x1d, 0x1d, 0x09, 0x17, 0x1b, 0x01,
-0x07, 0x1d, 0x09, 0x02, 0x10, 0x13, 0x09, 0x09,
-0x0a, 0x03, 0x01, 0x48, 0x1f, 0x11, 0x01, 0x1d,
-0x01, 0x09, 0x07, 0x7e, 0x01, 0xe5, 0xe5, 0x42,
-0x1d, 0x04, 0x04, 0x1d, 0x09, 0x0b, 0x15, 0x4d,
-0x28, 0x01, 0x01, 0x99, 0x95, 0xe7, 0x28, 0x6f,
-0x0a, 0x44, 0x44, 0xe5, 0xe6, 0x0f, 0x09, 0x09,
-0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x03, 0x05,
-0x05, 0x03, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x01,
-0x01, 0x01, 0x03, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x0e, 0xe7, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x07, 0x03, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d,
-0x03, 0x0d, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x08,
-0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x0f, 0x01, 0xe5, 0x0f, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x03,
-0x09, 0x09, 0xe5, 0x07, 0x09, 0x09, 0x06, 0x04,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x04, 0x0b, 0xe5,
-0x05, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0x02, 0x06, 0xe5, 0x0e, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x04,
-0x04, 0x09, 0x04, 0x04, 0x09, 0x0b, 0x04, 0x04,
-0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x12, 0x0d, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08,
-0xe5, 0x08, 0x06, 0x02, 0x09, 0x09, 0x09, 0x01,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0x08, 0xe5,
-0x01, 0x0d, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x09, 0x06, 0x02, 0x04, 0x01,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x04, 0x04,
-0x01, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x05, 0xe5, 0x01, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x0e, 0xe7, 0x02, 0x3b, 0x11,
-0x25, 0x1c, 0x06, 0x04, 0x89, 0x04, 0x02, 0x03,
-0x4d, 0x46, 0x02, 0x19, 0x0a, 0x6f, 0xe6, 0x02,
-0x3b, 0x12, 0x22, 0x02, 0x1d, 0x03, 0x07, 0x01,
-0x89, 0xe5, 0xe6, 0x3f, 0x08, 0xe5, 0x05, 0x2a,
-0x17, 0x11, 0x18, 0xe5, 0x01, 0xe5, 0x68, 0x03,
-0x10, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0x01,
-0x09, 0x09, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09,
-0x0b, 0x09, 0x09, 0x09, 0x07, 0x01, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d,
-0x01, 0x01, 0x3f, 0x01, 0xe5, 0x0d, 0x0b, 0x01,
-0xe5, 0x02, 0x02, 0x1d, 0x09, 0x02, 0x08, 0x21,
-0x0f, 0x02, 0x1a, 0x01, 0xe5, 0x3f, 0xe5, 0xe5,
-0x10, 0x2d, 0x1e, 0x26, 0x09, 0x06, 0x37, 0x60,
-0x01, 0xe5, 0x67, 0x26, 0x0c, 0x30, 0x1e, 0x43,
-0xe6, 0x05, 0x54, 0x0f, 0x2a, 0x08, 0xe5, 0x0b,
-0x80, 0x02, 0xe5, 0xd0, 0x60, 0x56, 0x09, 0x8a,
-0x01, 0x40, 0xe5, 0x01, 0x6e, 0x1a, 0x61, 0x01,
-0x40, 0xe8, 0x05, 0x85, 0xa1, 0xe5, 0x01, 0x61,
-0x38, 0x14, 0x09, 0x01, 0x0e, 0x63, 0xe6, 0xe5,
-0x10, 0x3f, 0x5f, 0x7c, 0x02, 0xe5, 0x8e, 0xe6,
-0x9f, 0x91, 0x9d, 0x02, 0x88, 0x0c, 0x98, 0x03,
-0x63, 0x3f, 0x05, 0x07, 0x7c, 0xe8, 0xaa, 0x05,
-0x40, 0x3b, 0x01, 0x01, 0xe6, 0x06, 0xe5, 0x65,
-0x16, 0x03, 0xe5, 0x04, 0x1f, 0xe5, 0x07, 0x0f,
-0x5e, 0xe5, 0x03, 0x02, 0x01, 0x04, 0xe5, 0x65,
-0x20, 0x20, 0x09, 0x0f, 0x5b, 0x01, 0x06, 0x04,
-0x6c, 0x30, 0xe5, 0xe5, 0xe5, 0x08, 0x04, 0x01,
-0xe5, 0x12, 0x5b, 0x04, 0xe5, 0xe6, 0x01, 0x6e,
-0x30, 0x02, 0x01, 0x03, 0xe5, 0x01, 0x09, 0x13,
-0x5d, 0x02, 0xe8, 0x70, 0x22, 0x0e, 0x10, 0x09,
-0x0e, 0x61, 0xe5, 0xe5, 0x01, 0x6e, 0x03, 0x33,
-0x05, 0x04, 0x03, 0x05, 0x0e, 0x03, 0x59, 0x02,
-0x01, 0xe7, 0x6f, 0x1a, 0x01, 0x04, 0x11, 0x01,
-0x09, 0x04, 0xe5, 0x02, 0x11, 0x5f, 0x01, 0xe5,
-0xe5, 0x70, 0x22, 0x01, 0x01, 0x0c, 0x01, 0x0c,
-0xe7, 0x02, 0x02, 0x0e, 0x63, 0xe5, 0x91, 0x1f,
-0x02, 0x02, 0x75, 0xe5, 0xe6, 0x10, 0x80, 0xe5,
-0x1e, 0x02, 0x78, 0xe5, 0xe6, 0x08, 0x01, 0x02,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x02, 0x06, 0x09, 0x09, 0xe6, 0x08,
-0x09, 0x09, 0x01, 0x01, 0x05, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d,
-0xe5, 0xe5, 0xe5, 0x01, 0x09, 0xa1, 0x09, 0x72,
-0x03, 0x02, 0x0b, 0x05, 0x9b, 0x07, 0x7a, 0x01,
-0x92, 0xe6, 0x16, 0x05, 0xe6, 0x08, 0x6d, 0x02,
-0xe7, 0xe5, 0x03, 0x0a, 0x81, 0x1b, 0x01, 0x01,
-0x02, 0x06, 0x73, 0xe5, 0x92, 0x01, 0x1b, 0x01,
-0x01, 0x78, 0xe5, 0x01, 0x01, 0x04, 0x0e, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe8,
-0x08, 0x05, 0xa1, 0x09, 0x74, 0x01, 0x0d, 0xa1,
-0x09, 0x74, 0xe5, 0x01, 0x0f, 0x8a, 0x16, 0x09,
-0x73, 0xe5, 0xe5, 0x0c, 0x04, 0x81, 0x1a, 0x04,
-0x04, 0x04, 0x6f, 0xe5, 0xe6, 0x70, 0x01, 0xe5,
-0x39, 0x02, 0x06, 0x02, 0x0d, 0x02, 0xe5, 0xe5,
-0x5c, 0xe5, 0xe6, 0xe5, 0x0e, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x03, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe6,
-0x04, 0x01, 0x01, 0x02, 0x04, 0x01, 0x01, 0x05,
-0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x07, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x08, 0x01, 0x03,
-0x7a, 0x08, 0x2b, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x71, 0x01, 0xe6, 0x88, 0x0d, 0x17, 0xe5, 0x04,
-0x02, 0xe5, 0x70, 0xe6, 0xe6, 0x83, 0x04, 0x0f,
-0x1e, 0x75, 0x03, 0x0f, 0x5e, 0x1d, 0x0b, 0x01,
-0x04, 0x0f, 0x01, 0x05, 0x77, 0xe7, 0x0c, 0x80,
-0x0a, 0x15, 0x02, 0xe5, 0x7a, 0x02, 0x7d, 0x04,
-0x04, 0x08, 0xe5, 0x06, 0x05, 0xe5, 0x0e, 0xe5,
-0x16, 0x64, 0x01, 0x01, 0x82, 0x02, 0xe5, 0xe5,
-0x05, 0x09, 0x15, 0x09, 0x04, 0x08, 0x04, 0x62,
-0xe5, 0xe5, 0x6e, 0x0e, 0x08, 0x09, 0x07, 0x15,
-0x0b, 0x72, 0xe6, 0xe5, 0x6e, 0x1a, 0x03, 0x0a,
-0xe5, 0x16, 0x05, 0x75, 0xe5, 0xe6, 0x77, 0x1d,
-0x01, 0xe5, 0x0f, 0x83, 0x02, 0xe5, 0x7c, 0xe5,
-0xe5, 0x09, 0x05, 0x1d, 0x01, 0x7d, 0xe8, 0x7a,
-0x07, 0x02, 0x0a, 0x0c, 0x11, 0x06, 0x02, 0x0d,
-0x63, 0xe6, 0x01, 0x11, 0x5c, 0x18, 0x07, 0x20,
-0x02, 0x07, 0x73, 0xe9, 0x72, 0x09, 0x02, 0xe5,
-0x04, 0xe5, 0x03, 0x0b, 0x13, 0x09, 0x72, 0xe8,
-0xe5, 0x01, 0x01, 0x6d, 0xe5, 0xe5, 0x08, 0x02,
-0xe5, 0xe5, 0x02, 0x05, 0xe5, 0x02, 0x06, 0x1d,
-0xe5, 0x6d, 0x01, 0x02, 0xe6, 0xe5, 0x03, 0x69,
-0xe5, 0xe5, 0xe5, 0x17, 0xe5, 0xe5, 0xe5, 0x03,
-0x01, 0x02, 0x01, 0x0e, 0xe5, 0x07, 0xe5, 0xe5,
-0x6e, 0x04, 0xe8, 0x01, 0x6a, 0xe5, 0x01, 0x01,
-0x0d, 0xe5, 0x01, 0x06, 0x02, 0x01, 0x04, 0xe5,
-0x02, 0x01, 0x0e, 0x09, 0x02, 0x71, 0x02, 0x03,
-0x73, 0x02, 0x04, 0x0e, 0x02, 0x01, 0x01, 0xe5,
-0x02, 0x01, 0x02, 0x11, 0x04, 0x04, 0xe6, 0x05,
-0x01, 0x6c, 0x02, 0x02, 0x70, 0x02, 0x04, 0x09,
-0x03, 0x05, 0x01, 0xe5, 0x01, 0x02, 0x02, 0x03,
-0x17, 0x01, 0x03, 0x02, 0x01, 0x68, 0x02, 0xe5,
-0xe7, 0x6f, 0x01, 0x07, 0x09, 0x01, 0x02, 0x04,
-0x01, 0x09, 0x01, 0x1b, 0x73, 0x04, 0x71, 0x01,
-0x02, 0x04, 0x04, 0x04, 0x01, 0x01, 0xe5, 0x03,
-0x01, 0xe5, 0x07, 0x01, 0x1b, 0x75, 0xe7, 0x80,
-0x02, 0x03, 0x09, 0x02, 0x02, 0x08, 0x02, 0x1a,
-0xe5, 0x6e, 0xe6, 0x75, 0x01, 0x06, 0x02, 0xe5,
-0x03, 0xe5, 0x01, 0xe5, 0x07, 0x0b, 0x13, 0x09,
-0x6d, 0x01, 0xe7, 0x0d, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x03, 0x02,
-0x02, 0x09, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x02,
-0x04, 0x05, 0x03, 0x09, 0x05, 0x03, 0x02, 0xe5,
-0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0d, 0xe5, 0x01, 0xe5, 0x01, 0x6d,
-0x04, 0x03, 0xe5, 0x08, 0x06, 0x0b, 0x20, 0x72,
-0x02, 0xe8, 0x6c, 0x0b, 0x08, 0x06, 0x2d, 0x77,
-0x02, 0x01, 0x71, 0x02, 0x04, 0x01, 0x02, 0x01,
-0x02, 0x01, 0xe7, 0x03, 0x01, 0xe5, 0x1e, 0x79,
-0x01, 0x03, 0x71, 0x03, 0x05, 0x01, 0x01, 0x01,
-0x03, 0x01, 0xe6, 0x04, 0x01, 0x06, 0x05, 0x19,
-0x03, 0x71, 0xe6, 0xe5, 0x72, 0x03, 0x05, 0x03,
-0x03, 0x01, 0x03, 0x03, 0x01, 0x1f, 0x7d, 0xe5,
-0xe5, 0x14, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe6, 0xe5,
-0x04, 0xe6, 0xe6, 0x03, 0xe6, 0xe5, 0x04, 0xe5,
-0x09, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe8, 0x70,
-0x01, 0x09, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x0b,
-0x1b, 0x01, 0x74, 0x01, 0x71, 0x01, 0x07, 0x01,
-0x07, 0x02, 0x06, 0x01, 0x09, 0x1d, 0x75, 0x01,
-0xe5, 0x7c, 0x09, 0x09, 0x08, 0x93, 0x03, 0x76,
-0x04, 0x01, 0x02, 0x04, 0x04, 0x04, 0x01, 0xa0,
-0x71, 0x09, 0x02, 0x06, 0x02, 0x06, 0xe5, 0xe5,
-0x07, 0x17, 0x05, 0x01, 0xe5, 0x71, 0x02, 0x01,
-0x0f, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x04,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x08, 0x03, 0xe6, 0x72, 0x01, 0x05,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0xa7, 0xe6,
-0x5a, 0x08, 0x07, 0x0b, 0x01, 0x06, 0xe5, 0xe5,
-0xe5, 0xe5, 0x03, 0x13, 0x10, 0xe5, 0x01, 0x75,
-0xe9, 0x6d, 0x03, 0x0a, 0x10, 0x0a, 0x94, 0xe5,
-0xe6, 0x70, 0x04, 0x04, 0x01, 0xe5, 0x05, 0x01,
-0x04, 0x02, 0x01, 0x04, 0x01, 0x02, 0x13, 0x08,
-0xe5, 0x74, 0x02, 0x73, 0x04, 0x01, 0xe5, 0xe5,
-0x09, 0x04, 0x03, 0x07, 0x03, 0x13, 0x0a, 0x73,
-0x01, 0x41, 0x26, 0xe5, 0x12, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x07, 0x1a, 0x05, 0xe5, 0x02, 0x6e,
-0x01, 0xe6, 0x2f, 0x0e, 0xe5, 0x20, 0x04, 0x01,
-0x0c, 0x04, 0x01, 0x04, 0x12, 0x03, 0x13, 0x04,
-0x7b, 0x03, 0x41, 0x29, 0x12, 0xe5, 0x07, 0x09,
-0x03, 0x02, 0x0a, 0x8b, 0xe6, 0x4d, 0x23, 0x0f,
-0x01, 0x0a, 0xe6, 0x02, 0x02, 0xe5, 0x93, 0x02,
-0xe5, 0x3a, 0x33, 0x03, 0x19, 0x03, 0x07, 0x19,
-0x7b, 0x02, 0x45, 0x05, 0x1d, 0x0a, 0x09, 0x13,
-0x1e, 0x04, 0xe5, 0xe5, 0xe5, 0x08, 0x68, 0xe6,
-0xe6, 0x3d, 0x01, 0x02, 0x05, 0xe5, 0x21, 0x07,
-0x07, 0x04, 0x05, 0x10, 0x16, 0x01, 0x07, 0x09,
-0x67, 0x02, 0xe6, 0x43, 0x06, 0x1a, 0xe5, 0x16,
-0xe5, 0x07, 0x25, 0x01, 0x08, 0x04, 0x03, 0x01,
-0x6b, 0xe7, 0x32, 0x06, 0x01, 0x2c, 0x02, 0x01,
-0x04, 0x0f, 0x0d, 0x1b, 0x03, 0x05, 0x0d, 0x64,
-0xe6, 0xe7, 0x01, 0x01, 0x31, 0xe5, 0x02, 0xe5,
-0x02, 0xe5, 0x21, 0x01, 0x1e, 0x0c, 0x0a, 0x11,
-0x03, 0x07, 0x0b, 0x61, 0x01, 0x04, 0xe6, 0x03,
-0x32, 0x02, 0x06, 0x02, 0x1f, 0x01, 0xe5, 0x02,
-0x09, 0x01, 0xe5, 0x03, 0x07, 0x29, 0x06, 0x01,
-0x05, 0x6a, 0x05, 0x01, 0xe5, 0x01, 0x2f, 0xe5,
-0xe5, 0xe5, 0x08, 0x25, 0x13, 0x06, 0xe5, 0xe5,
-0x0f, 0xe5, 0x16, 0x7b, 0x03, 0x02, 0x35, 0x01,
-0x04, 0x01, 0x09, 0x1e, 0x01, 0x02, 0x09, 0x0a,
-0x02, 0xe5, 0xe5, 0x26, 0x09, 0x06, 0x01, 0x6c,
-0xe7, 0x01, 0x34, 0x01, 0x04, 0xe5, 0xe5, 0xe5,
-0x02, 0x1f, 0x01, 0x02, 0x15, 0x01, 0xe5, 0xe5,
-0xe5, 0x06, 0x04, 0x01, 0x04, 0x01, 0x04, 0x0a,
-0x03, 0x05, 0x01, 0x01, 0x02, 0x01, 0x68, 0x04,
-0xe7, 0x35, 0x05, 0x29, 0x13, 0x01, 0x04, 0x02,
-0x06, 0x16, 0x0b, 0x7d, 0xe5, 0xe7, 0x34, 0x01,
-0x07, 0x01, 0x25, 0x04, 0x08, 0xe5, 0x03, 0x04,
-0xe7, 0xe5, 0x05, 0xe6, 0x01, 0x02, 0x1a, 0x04,
-0x79, 0xe5, 0x01, 0x45, 0x09, 0x02, 0x21, 0x0c,
-0x02, 0x06, 0x02, 0x06, 0x0b, 0x02, 0x10, 0x02,
-0x06, 0x02, 0x6c, 0xe7, 0x3b, 0xe5, 0x07, 0x01,
-0x07, 0xe5, 0x19, 0x07, 0xe6, 0x07, 0x02, 0x09,
-0x06, 0x04, 0x09, 0xe5, 0x11, 0xe5, 0x07, 0x6e,
-0xe8, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x06, 0x02,
-0x05, 0xe5, 0x01, 0x09, 0x09, 0x09, 0x09, 0xe5,
-0x07, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0x02, 0x02,
-0x04, 0x01, 0x04, 0x02, 0x06, 0x09, 0x09, 0x03,
-0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0d, 0xe9, 0x01, 0x38, 0x02, 0x06,
-0x02, 0x1d, 0x04, 0x09, 0x0e, 0x06, 0x02, 0x09,
-0x1f, 0x72, 0x03, 0x02, 0x3d, 0x07, 0x1d, 0x11,
-0x0b, 0x0a, 0x08, 0x1f, 0x78, 0xe5, 0xe6, 0xe5,
-0x32, 0x01, 0x07, 0x09, 0x01, 0x1d, 0x02, 0x01,
-0x05, 0xe6, 0x03, 0x01, 0x02, 0x03, 0x02, 0x09,
-0x02, 0x26, 0x07, 0x04, 0x63, 0x04, 0xe5, 0x34,
-0x01, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x19,
-0x01, 0x01, 0x09, 0x05, 0x01, 0x01, 0x01, 0xe5,
-0x04, 0x03, 0x02, 0x03, 0x01, 0x08, 0x14, 0x05,
-0x01, 0xe5, 0x02, 0x02, 0x03, 0x69, 0xe5, 0x34,
-0x01, 0x07, 0x08, 0xe5, 0x1e, 0x0a, 0x0d, 0x04,
-0x10, 0x04, 0x11, 0x0b, 0x07, 0x6a, 0xe5, 0x01,
-0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01,
-0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe8, 0x3e, 0x09,
-0x01, 0x28, 0x10, 0x01, 0xe6, 0x06, 0x29, 0x07,
-0x6b, 0x01, 0xe5, 0x40, 0x07, 0x01, 0x1d, 0x1b,
-0x01, 0x07, 0x29, 0x01, 0x07, 0x6e, 0x35, 0x01,
-0x07, 0x0b, 0x28, 0x12, 0x12, 0x14, 0x0b, 0x07,
-0x6a, 0x02, 0xe5, 0x34, 0x01, 0x09, 0xe5, 0x07,
-0x1d, 0x02, 0x09, 0x09, 0x07, 0x0b, 0x1a, 0x04,
-0x04, 0x01, 0x07, 0x04, 0x65, 0x01, 0xe6, 0x35,
-0x01, 0x06, 0xe5, 0xe5, 0x31, 0x05, 0x02, 0x01,
-0x04, 0xe5, 0xe5, 0x08, 0x08, 0x14, 0x01, 0x01,
-0x04, 0x02, 0x71, 0xe6, 0xe5, 0xe5, 0x0e, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x04, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x07, 0x01, 0xe5,
-0x02, 0x04, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x04, 0x02, 0xe6, 0xe5, 0x04, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x08, 0x01, 0xe5, 0x01, 0x3b, 0x09, 0x1f,
-0x05, 0x07, 0xe5, 0x05, 0x03, 0x0f, 0x06, 0x01,
-0x03, 0x0d, 0x06, 0xe5, 0x04, 0xe5, 0x0a, 0xe5,
-0x66, 0x01, 0xe7, 0x27, 0x0e, 0x03, 0x26, 0x0a,
-0x03, 0x19, 0x09, 0x0c, 0x0c, 0xe5, 0x0a, 0x06,
-0x0f, 0x58, 0x01, 0xe7, 0x44, 0x0c, 0x04, 0x16,
-0x03, 0x05, 0x20, 0x05, 0x24, 0x6a, 0x01, 0xe5,
-0x34, 0xe6, 0x08, 0x01, 0x23, 0x01, 0xe5, 0x04,
-0x04, 0x05, 0x01, 0x07, 0x06, 0x0e, 0x01, 0x1b,
-0x02, 0x04, 0x6d, 0x02, 0x32, 0x02, 0x0a, 0x07,
-0x1c, 0x03, 0x0f, 0x03, 0x03, 0xe5, 0x04, 0x10,
-0x04, 0x19, 0x03, 0x02, 0x6e, 0x03, 0x3a, 0x06,
-0x08, 0xe5, 0x08, 0x08, 0xe5, 0x04, 0x01, 0x06,
-0x0c, 0x01, 0x19, 0x01, 0x01, 0x04, 0x19, 0xe5,
-0x09, 0x12, 0x02, 0x52, 0xe5, 0xe5, 0x26, 0x0d,
-0x01, 0x07, 0x02, 0xe5, 0x04, 0x09, 0x01, 0x07,
-0x01, 0x0c, 0x09, 0x04, 0xe5, 0x07, 0x01, 0x0c,
-0x04, 0xe5, 0x0c, 0x06, 0x01, 0x07, 0x1d, 0xe5,
-0x55, 0x01, 0xe5, 0x28, 0x17, 0xe5, 0x05, 0x04,
-0x07, 0x26, 0x18, 0x02, 0x0f, 0x0f, 0x1f, 0x54,
-0xe6, 0xe5, 0x27, 0x12, 0x35, 0xe5, 0x07, 0xe5,
-0x03, 0x02, 0xe7, 0x05, 0xe6, 0x03, 0x03, 0x0b,
-0xe5, 0x11, 0xe5, 0x20, 0x51, 0x01, 0x01, 0x39,
-0x09, 0x20, 0x08, 0x05, 0x09, 0x09, 0x09, 0x06,
-0xe5, 0x04, 0x07, 0x04, 0x0b, 0xe6, 0x72, 0xe5,
-0x01, 0x30, 0x06, 0x13, 0x05, 0x01, 0x01, 0x0a,
-0x09, 0x07, 0xe5, 0x02, 0x03, 0xe6, 0x03, 0x0d,
-0x0c, 0x02, 0x05, 0xe5, 0x08, 0x01, 0x23, 0x01,
-0x54, 0x03, 0xe5, 0x2d, 0x06, 0xe5, 0x01, 0x04,
-0x01, 0xe5, 0x01, 0x05, 0x09, 0x04, 0x01, 0x02,
-0x1d, 0x01, 0x07, 0x22, 0x06, 0x09, 0x1d, 0x53,
-0xe5, 0xe5, 0xe5, 0x35, 0x12, 0x01, 0x09, 0x09,
-0x11, 0x0b, 0x01, 0x06, 0x13, 0xe5, 0x08, 0x09,
-0x01, 0x03, 0x05, 0x06, 0x16, 0x02, 0x54, 0xe7,
-0x32, 0x09, 0x09, 0x10, 0xe5, 0x04, 0x02, 0xe5,
-0xe5, 0x05, 0xe5, 0x04, 0x02, 0x01, 0xe5, 0x02,
-0xe5, 0x03, 0x05, 0xe5, 0x05, 0x0a, 0xe8, 0x05,
-0x09, 0x09, 0x02, 0xe5, 0x04, 0x64, 0xe6, 0x01,
-0xe5, 0x01, 0x01, 0x30, 0x09, 0x06, 0x01, 0xe6,
-0x11, 0x06, 0x01, 0xe5, 0x03, 0x01, 0x01, 0x01,
-0x01, 0x02, 0xe5, 0x01, 0xe5, 0xe5, 0x06, 0x04,
-0xe5, 0x04, 0x0c, 0x02, 0x01, 0x03, 0x06, 0x03,
-0x08, 0x03, 0xe5, 0x16, 0x4f, 0x01, 0x02, 0xe5,
-0xe6, 0x03, 0x23, 0x01, 0x0a, 0x02, 0x06, 0x09,
-0x01, 0x07, 0x0d, 0x05, 0x0b, 0x07, 0x01, 0x03,
-0xe5, 0x1c, 0x01, 0xe5, 0x05, 0x01, 0x01, 0xe5,
-0x04, 0xe5, 0x03, 0x02, 0x08, 0x14, 0x4c, 0x04,
-0xe8, 0x01, 0x2e, 0xe5, 0x01, 0xe5, 0x07, 0x09,
-0x01, 0x04, 0x02, 0x09, 0x09, 0x10, 0x02, 0x01,
-0x24, 0xe5, 0xe5, 0x08, 0x05, 0xe5, 0x01, 0x1f,
-0x51, 0x06, 0x35, 0x02, 0xe5, 0x04, 0x01, 0x06,
-0xe5, 0xe5, 0x02, 0x01, 0xe6, 0xe5, 0x06, 0x04,
-0x04, 0x04, 0x09, 0x02, 0x01, 0x01, 0x02, 0x01,
-0x01, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0x05, 0x15,
-0x03, 0xe5, 0x04, 0x02, 0xe5, 0x03, 0x01, 0x01,
-0x05, 0x17, 0x4e, 0x01, 0xe5, 0x01, 0x2c, 0x05,
-0x02, 0xe5, 0x06, 0x01, 0x03, 0x01, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x02, 0xe5, 0x01, 0xe5,
-0x02, 0x09, 0x01, 0x02, 0xe5, 0xe5, 0xe5, 0x03,
-0x05, 0x03, 0x0e, 0x01, 0x02, 0x01, 0x04, 0x02,
-0xe7, 0x07, 0xe5, 0x02, 0x04, 0x16, 0x01, 0x01,
-0x01, 0xe5, 0x49, 0x02, 0x03, 0xe5, 0x35, 0x04,
-0x01, 0xe5, 0xe5, 0x06, 0x01, 0x09, 0x07, 0x09,
-0x03, 0x02, 0x01, 0x04, 0x01, 0xe5, 0x01, 0x01,
-0x01, 0x03, 0x01, 0x01, 0x02, 0x02, 0x05, 0x01,
-0xe5, 0x17, 0x07, 0x01, 0x01, 0x01, 0xe5, 0x01,
-0x05, 0x0c, 0x02, 0x50, 0x04, 0xe6, 0xe6, 0x2a,
-0x0b, 0x04, 0x01, 0x02, 0x07, 0x01, 0x09, 0x07,
-0x01, 0x02, 0x04, 0x04, 0x09, 0x01, 0x01, 0xe5,
-0xe5, 0x01, 0x04, 0x01, 0x02, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x04, 0x0b, 0xe5, 0x03, 0x09, 0x04,
-0x09, 0x01, 0x01, 0x08, 0x03, 0x54, 0x01, 0x01,
-0x31, 0x02, 0x03, 0x02, 0x02, 0x06, 0x09, 0xe5,
-0x18, 0x09, 0x02, 0x02, 0x03, 0x0c, 0x06, 0x0e,
-0x02, 0x03, 0x02, 0x1a, 0x16, 0x52, 0xe6, 0x31,
-0x09, 0xe5, 0x07, 0x01, 0x04, 0x02, 0x09, 0xe5,
-0x05, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x0d,
-0x03, 0xe5, 0x0d, 0x05, 0xe6, 0xe5, 0xe5, 0x03,
-0x02, 0xe5, 0x07, 0x05, 0xe5, 0x01, 0x15, 0x4f,
-0x01, 0xe5, 0x0d, 0x09, 0x09, 0x09, 0x02, 0x02,
-0x03, 0x02, 0x06, 0x04, 0xe6, 0x01, 0xe6, 0xe6,
-0xe5, 0x01, 0x09, 0x09, 0xe6, 0x06, 0xe6, 0x03,
-0x02, 0xe6, 0x06, 0x09, 0xe6, 0x08, 0x03, 0x05,
-0xe5, 0x01, 0x02, 0x02, 0x09, 0x05, 0x03, 0xe6,
-0xe6, 0xe5, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x01, 0x06, 0x01, 0x02,
-0x02, 0x31, 0x09, 0x09, 0x09, 0x09, 0x04, 0x09,
-0x0b, 0x02, 0x09, 0x24, 0x03, 0xe5, 0x1c, 0x09,
-0x4f, 0x04, 0x03, 0xe5, 0xe5, 0x31, 0x08, 0x0b,
-0x07, 0x0a, 0x1d, 0x08, 0x27, 0x03, 0x1c, 0x08,
-0x50, 0x0a, 0x01, 0xe5, 0xe5, 0x28, 0x01, 0x07,
-0x02, 0x06, 0x01, 0x09, 0x01, 0x05, 0x01, 0x09,
-0x02, 0x07, 0x01, 0x07, 0xe6, 0x05, 0xe5, 0xe5,
-0x02, 0xe5, 0xe5, 0x05, 0xe5, 0x01, 0xe6, 0x07,
-0x04, 0x05, 0x01, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x01, 0xe7, 0x03, 0x04, 0x04, 0x01, 0x52,
-0x01, 0xe8, 0x2a, 0x01, 0xe5, 0x05, 0x01, 0x0a,
-0x06, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x07, 0x01,
-0x09, 0x08, 0xe5, 0x01, 0x01, 0xe5, 0x01, 0xe5,
-0x04, 0x01, 0xe6, 0x01, 0x04, 0xe6, 0x03, 0x04,
-0xe5, 0x02, 0x05, 0xe5, 0x04, 0x01, 0xe6, 0xe5,
-0x01, 0xe5, 0xe7, 0x04, 0x01, 0xe6, 0x06, 0x01,
-0x04, 0xe5, 0xe6, 0x52, 0x03, 0x35, 0x01, 0x0e,
-0x01, 0x02, 0x07, 0x01, 0x09, 0x04, 0x0c, 0x03,
-0x07, 0x03, 0x05, 0x07, 0x08, 0x02, 0x01, 0x0e,
-0x04, 0x10, 0x04, 0x01, 0x03, 0x0b, 0x54, 0xe5,
-0x01, 0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0x01, 0x04,
-0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x06,
-0xe7, 0x05, 0xe7, 0x04, 0xe8, 0xe5, 0x02, 0xe7,
-0x01, 0xe5, 0x02, 0xe6, 0x01, 0x01, 0x05, 0xe5,
-0x07, 0xe6, 0x06, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe5, 0x01,
-0x37, 0x07, 0x01, 0x09, 0x09, 0x09, 0x0e, 0x0e,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x08, 0x11,
-0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x09, 0x01, 0x54, 0xe8, 0x4a, 0x07, 0x01, 0x07,
-0x12, 0x07, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0xe5,
-0xe6, 0x01, 0x02, 0xe5, 0xe5, 0x05, 0x04, 0x07,
-0x09, 0x01, 0x07, 0x01, 0x07, 0x01, 0x09, 0x07,
-0x01, 0x54, 0x01, 0x01, 0x3f, 0x15, 0x09, 0x0f,
-0x0d, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0xe5, 0xe5,
-0x03, 0x03, 0xe5, 0xe5, 0x12, 0x0a, 0x09, 0x06,
-0x61, 0xe7, 0x40, 0x0c, 0x04, 0x09, 0x04, 0x09,
-0xe5, 0xe6, 0x04, 0x01, 0x01, 0xe5, 0xe5, 0x01,
-0xe5, 0xe6, 0x01, 0xe5, 0xea, 0xe5, 0x01, 0x03,
-0x02, 0x01, 0x0c, 0x04, 0x01, 0x02, 0x09, 0x09,
-0x06, 0x02, 0x06, 0x55, 0x01, 0xe5, 0x2a, 0x01,
-0xe5, 0x03, 0x01, 0x09, 0xe5, 0xe5, 0x05, 0x02,
-0x06, 0x09, 0xe5, 0xe5, 0x05, 0x01, 0xe6, 0x04,
-0x02, 0x06, 0x09, 0x03, 0x14, 0x06, 0xe5, 0xe5,
-0x08, 0xe5, 0x06, 0xe5, 0x19, 0x02, 0x52, 0xe6,
-0x01, 0x01, 0x0f, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x04, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x02,
-0x02, 0x01, 0x02, 0xe5, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x03, 0x03, 0x01, 0x04, 0x02, 0x01, 0x03,
-0x03, 0x01, 0x02, 0x04, 0x01, 0x06, 0xe5, 0xe5,
-0x01, 0x04, 0x01, 0x04, 0x04, 0x01, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0xe6, 0x03, 0x02, 0xe6, 0x06, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x0a, 0x01, 0x01, 0x32, 0x03, 0xe6,
-0x02, 0x0c, 0x20, 0x03, 0x02, 0x0a, 0x07, 0x01,
-0x11, 0x02, 0x01, 0xe5, 0x07, 0xe5, 0x02, 0x02,
-0x01, 0xe5, 0xe5, 0x06, 0x02, 0x05, 0xe6, 0x08,
-0x05, 0x57, 0x02, 0xe5, 0x27, 0x09, 0x01, 0x0e,
-0xe5, 0xe5, 0x07, 0x01, 0x09, 0x07, 0x01, 0x01,
-0x15, 0x03, 0x05, 0x02, 0x01, 0x0c, 0xe5, 0x0a,
-0x01, 0x01, 0xe5, 0x01, 0x01, 0x02, 0x03, 0x01,
-0x04, 0xe7, 0xe6, 0x66, 0x01, 0xe5, 0xe5, 0x36,
-0xe5, 0x1e, 0x02, 0x0a, 0x09, 0x09, 0x03, 0x01,
-0x14, 0x03, 0x03, 0xe5, 0x05, 0x06, 0x11, 0x0c,
-0x62, 0xe6, 0xe5, 0x04, 0x22, 0x02, 0x04, 0x04,
-0x01, 0x02, 0x06, 0x09, 0x05, 0x01, 0x06, 0x02,
-0x13, 0xe5, 0x09, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x13, 0xe7, 0x07, 0x09, 0x05, 0x14, 0xe7, 0x02,
-0x4f, 0x02, 0x01, 0x05, 0x28, 0x09, 0x02, 0x04,
-0x05, 0xe5, 0x09, 0x02, 0x09, 0x1b, 0x05, 0xe5,
-0x02, 0x01, 0x03, 0x05, 0x02, 0xe5, 0x01, 0x0c,
-0x08, 0x06, 0x02, 0x1e, 0x55, 0x01, 0x01, 0x2c,
-0xe5, 0x06, 0x13, 0x05, 0x0e, 0xe5, 0x02, 0x12,
-0x10, 0x01, 0x05, 0xe6, 0x06, 0x05, 0x11, 0xe5,
-0xe5, 0x04, 0xe5, 0x1c, 0x53, 0x01, 0xe5, 0xe5,
-0x04, 0x2a, 0x04, 0x01, 0x07, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x01, 0x07, 0x02, 0x0c, 0x0b, 0x01,
-0x01, 0xe5, 0x05, 0x02, 0x06, 0x01, 0xe6, 0x04,
-0x04, 0x09, 0x02, 0x03, 0x09, 0x01, 0x19, 0x01,
-0xe5, 0x54, 0xe5, 0xe6, 0x2e, 0x11, 0x05, 0x01,
-0x15, 0x27, 0xe5, 0x0f, 0x0f, 0x05, 0x02, 0x26,
-0x04, 0x4f, 0x02, 0xe5, 0x2d, 0xe5, 0x08, 0xe6,
-0x05, 0xe5, 0x30, 0xe5, 0x09, 0x03, 0x01, 0x03,
-0xe5, 0x08, 0x02, 0x07, 0x03, 0xe6, 0x06, 0xe6,
-0xe6, 0x08, 0x03, 0xe7, 0x10, 0xe5, 0x54, 0x02,
-0xe5, 0x3a, 0x1b, 0x1f, 0x08, 0x18, 0x0e, 0x03,
-0x05, 0x13, 0x10, 0xe5, 0x55, 0xe7, 0x33, 0x02,
-0x09, 0x02, 0xe5, 0x0a, 0x03, 0x0a, 0x19, 0x0a,
-0x01, 0x03, 0x16, 0xe5, 0x02, 0x04, 0x04, 0x09,
-0x0a, 0x0d, 0x02, 0x01, 0x53, 0xe5, 0x02, 0xe5,
-0x29, 0x01, 0x09, 0x09, 0x07, 0x01, 0x09, 0x06,
-0x02, 0xe5, 0x12, 0x10, 0x01, 0x02, 0x04, 0x01,
-0xe6, 0x01, 0x10, 0x09, 0xe5, 0x01, 0x02, 0xe5,
-0xe5, 0x1c, 0x01, 0x54, 0x01, 0x35, 0x01, 0x07,
-0xe5, 0x11, 0x01, 0x09, 0x15, 0x09, 0x04, 0x20,
-0xe5, 0x07, 0xe5, 0x07, 0x08, 0x0e, 0x01, 0x05,
-0x55, 0xe9, 0x2f, 0xe5, 0x0a, 0x1a, 0xe5, 0x04,
-0x09, 0x02, 0x01, 0x04, 0x05, 0x09, 0x23, 0x05,
-0x02, 0xe5, 0x04, 0x05, 0xe5, 0x05, 0x0c, 0x01,
-0x04, 0x50, 0xe6, 0x01, 0xe5, 0x01, 0x01, 0x30,
-0xe5, 0x02, 0x04, 0x01, 0x18, 0xe5, 0xe5, 0x04,
-0xe5, 0x05, 0x0f, 0xe5, 0x07, 0x22, 0x06, 0xe5,
-0xe5, 0x05, 0xe5, 0x03, 0xe5, 0x04, 0x0c, 0xe5,
-0x04, 0x4e, 0x01, 0x02, 0xe8, 0x03, 0x2d, 0xe5,
-0x02, 0x03, 0xe5, 0x08, 0xe5, 0x06, 0xe5, 0x06,
-0x08, 0x13, 0x05, 0x01, 0x02, 0x04, 0x04, 0x01,
-0xe5, 0x20, 0x06, 0xe5, 0xe5, 0xe5, 0x17, 0x01,
-0x02, 0x4f, 0x06, 0x01, 0x02, 0x2e, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x06, 0xe5, 0x06, 0xe5, 0x0b,
-0x1a, 0x02, 0x01, 0x07, 0x06, 0x1e, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x01, 0x18, 0x02, 0x53, 0x03,
-0xe5, 0xe5, 0x2a, 0x01, 0x02, 0x06, 0x24, 0xe5,
-0x03, 0x09, 0x09, 0x02, 0x01, 0x01, 0xe5, 0x04,
-0xe5, 0xe5, 0x01, 0x01, 0xe6, 0x01, 0x04, 0x01,
-0x0c, 0x09, 0x02, 0x03, 0x01, 0xe5, 0xe6, 0x0a,
-0x0c, 0x01, 0x08, 0x47, 0x08, 0xe5, 0x01, 0x02,
-0x25, 0x04, 0xe5, 0x01, 0xe5, 0x02, 0x01, 0x02,
-0x04, 0x02, 0x01, 0x04, 0x01, 0x02, 0x04, 0x02,
-0xe7, 0xe5, 0x01, 0x03, 0x14, 0x01, 0xe5, 0x01,
-0x01, 0xe6, 0x02, 0x09, 0x04, 0x0c, 0x09, 0x02,
-0x06, 0x01, 0xe5, 0x01, 0x02, 0x14, 0x03, 0x03,
-0xe5, 0x49, 0x04, 0x01, 0xe5, 0x29, 0x01, 0x02,
-0x04, 0x01, 0x25, 0x07, 0x05, 0x01, 0xe5, 0x07,
-0xe5, 0x01, 0x01, 0x07, 0x01, 0x07, 0x01, 0x05,
-0x0d, 0x09, 0x09, 0x01, 0x1b, 0x01, 0x05, 0x48,
-0x04, 0xe6, 0xe6, 0x2a, 0x04, 0x01, 0x01, 0x14,
-0x09, 0x09, 0x01, 0x02, 0x09, 0x01, 0x01, 0x04,
-0xe5, 0xe5, 0xe6, 0xe6, 0x05, 0x01, 0x01, 0xe5,
-0xe5, 0x01, 0x15, 0x04, 0x04, 0x02, 0x06, 0x01,
-0xe5, 0x09, 0xe5, 0x0d, 0x5a, 0x05, 0x2b, 0x02,
-0x10, 0xe5, 0x1b, 0x02, 0x03, 0x09, 0x09, 0x09,
-0x04, 0x07, 0x02, 0x19, 0x09, 0x02, 0x02, 0x03,
-0x6a, 0xe5, 0x3b, 0xe5, 0x23, 0x01, 0xe5, 0x03,
-0xe6, 0x06, 0xe6, 0x10, 0xe5, 0x0b, 0x12, 0x09,
-0x0c, 0x05, 0xe5, 0x12, 0x02, 0x4f, 0xe9, 0x0d,
-0x09, 0x09, 0x09, 0x09, 0x06, 0x02, 0x02, 0x06,
-0x02, 0x01, 0x01, 0x02, 0x09, 0x09, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0x05,
-0x05, 0x06, 0x02, 0x09, 0xe6, 0x03, 0x02, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0x09, 0x05, 0x03, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06, 0x01,
-0x01, 0xe5, 0x01, 0x27, 0x09, 0x06, 0x02, 0x13,
-0x09, 0x04, 0x09, 0x09, 0x0b, 0x0c, 0x12, 0x02,
-0x09, 0x06, 0x02, 0x09, 0x13, 0x4e, 0xe5, 0x03,
-0x02, 0xe8, 0x28, 0x08, 0x0a, 0x11, 0x0a, 0x1a,
-0x13, 0x03, 0x14, 0x08, 0x0b, 0x08, 0x06, 0x0d,
-0x05, 0x48, 0x0c, 0xe5, 0xe5, 0x25, 0x07, 0x10,
-0x07, 0x01, 0x07, 0x01, 0x09, 0x02, 0x07, 0xe6,
-0xe5, 0x04, 0xe6, 0x03, 0x01, 0xe5, 0x07, 0xe5,
-0xe5, 0x03, 0x12, 0x02, 0x04, 0x07, 0x01, 0x04,
-0x01, 0xe5, 0x08, 0x01, 0x0e, 0x01, 0x02, 0x4f,
-0x05, 0x02, 0x28, 0x01, 0x01, 0x05, 0x02, 0x09,
-0x08, 0xe5, 0x08, 0x08, 0x01, 0x09, 0x09, 0x05,
-0x01, 0x07, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x0e,
-0x06, 0x01, 0x05, 0x01, 0x05, 0x01, 0x0a, 0xe5,
-0x0b, 0x02, 0x01, 0xe6, 0x52, 0x02, 0x49, 0x01,
-0x06, 0xe5, 0xe5, 0x08, 0x0b, 0x09, 0x01, 0x03,
-0x01, 0x04, 0x04, 0x06, 0x16, 0x13, 0x01, 0x07,
-0x10, 0x02, 0x01, 0x57, 0xe5, 0x14, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6,
-0x06, 0xe5, 0x01, 0x05, 0xe5, 0x09, 0xe5, 0x07,
-0xe5, 0x01, 0x03, 0x01, 0xe6, 0xe5, 0x04, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0x03,
-0x53, 0x01, 0x09, 0x14, 0x06, 0x01, 0x09, 0xe5,
-0x07, 0x27, 0x01, 0x07, 0x01, 0x6c, 0xe5, 0x02,
-0x01, 0x24, 0x01, 0x31, 0x1b, 0x01, 0x07, 0x01,
-0xe5, 0x2b, 0x01, 0x01, 0x01, 0x07, 0x01, 0x11,
-0x56, 0xe5, 0xe6, 0x05, 0x30, 0x1b, 0x01, 0x09,
-0x14, 0x12, 0x07, 0x01, 0x08, 0x20, 0x07, 0x6e,
-0x01, 0x01, 0xe5, 0x2a, 0x07, 0x24, 0x04, 0x09,
-0x09, 0x0e, 0x04, 0x04, 0x1a, 0x09, 0xe5, 0x02,
-0x01, 0x09, 0x02, 0x13, 0x4c, 0x06, 0xe7, 0x02,
-0x26, 0x02, 0x06, 0x02, 0x08, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x02, 0x1a, 0x02,
-0x06, 0x02, 0x06, 0xe5, 0xe6, 0x10, 0x0b, 0xe5,
-0x03, 0x01, 0x02, 0x1a, 0xe5, 0xe5, 0x51, 0xe6,
-0xe6, 0x02, 0x0d, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x02, 0x02, 0x01, 0x07, 0x01,
-0x02, 0xe5, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x01,
-0x04, 0x02, 0x01, 0x04, 0x02, 0xe6, 0x02, 0x03,
-0x01, 0x04, 0x04, 0x01, 0x01, 0x02, 0x02, 0x01,
-0xe5, 0x05, 0xe6, 0xe5, 0xe5, 0x02, 0xe6, 0x06,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x05, 0xe5, 0x02, 0x01,
-0xe7, 0x01, 0x27, 0xe5, 0x06, 0xe5, 0x02, 0x1f,
-0x03, 0xe5, 0x09, 0xe6, 0x06, 0xe5, 0x03, 0x01,
-0x04, 0x03, 0xe5, 0x07, 0x09, 0x15, 0x0a, 0x1b,
-0xe5, 0x51, 0x05, 0xe5, 0xe6, 0x12, 0x1c, 0x07,
-0x13, 0x0a, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05,
-0x44, 0x17, 0x56, 0x01, 0x02, 0x28, 0x11, 0x03,
-0x09, 0x1d, 0x02, 0x06, 0xe5, 0x02, 0x01, 0x08,
-0x08, 0x02, 0x0c, 0xe5, 0x05, 0x0a, 0x09, 0x01,
-0x09, 0x04, 0x13, 0x52, 0x03, 0x2d, 0x0a, 0x08,
-0x01, 0x02, 0x02, 0x02, 0x1f, 0x01, 0x0c, 0xe7,
-0x02, 0x05, 0x08, 0xe5, 0x11, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x69, 0xe6, 0xe6, 0x3f,
-0x02, 0x07, 0x10, 0x1d, 0x01, 0x06, 0x07, 0x04,
-0x08, 0x0e, 0x09, 0x09, 0x08, 0x04, 0x63, 0x01,
-0xe6, 0x2a, 0x01, 0x0a, 0x07, 0xe5, 0x27, 0x05,
-0x02, 0x01, 0x08, 0x16, 0xe5, 0x01, 0xe5, 0x09,
-0x09, 0xe6, 0x06, 0xe6, 0x01, 0x03, 0x1a, 0xe5,
-0x4d, 0xe9, 0x3e, 0x07, 0x10, 0x18, 0x13, 0x01,
-0xe5, 0x04, 0x0a, 0x15, 0x02, 0x06, 0x01, 0x0d,
-0x0d, 0x57, 0x02, 0x2e, 0xe5, 0x03, 0x0c, 0x2f,
-0x02, 0x01, 0x1c, 0x05, 0x05, 0x0a, 0x01, 0x02,
-0x03, 0x0a, 0x03, 0x16, 0x04, 0x06, 0x48, 0xe5,
-0x01, 0x05, 0x2f, 0xe6, 0x09, 0x06, 0xe6, 0x16,
-0x13, 0x14, 0x02, 0x09, 0xe5, 0x08, 0x09, 0xe6,
-0xe5, 0x01, 0x02, 0x04, 0x0f, 0x62, 0x01, 0x34,
-0x03, 0x01, 0x08, 0x08, 0x21, 0x0a, 0x0f, 0x05,
-0x05, 0x01, 0x01, 0x15, 0xe5, 0x0e, 0x06, 0x05,
-0x0d, 0x53, 0x02, 0x2d, 0xe5, 0x01, 0x03, 0x01,
-0x03, 0x05, 0x01, 0x01, 0x26, 0x0d, 0x0c, 0x13,
-0x01, 0x07, 0x01, 0xe5, 0x0a, 0x0a, 0x0a, 0xe5,
-0x0c, 0x53, 0xe6, 0x01, 0xe5, 0x2b, 0xe5, 0x07,
-0x08, 0xe5, 0x0c, 0x37, 0xe5, 0x13, 0x03, 0x05,
-0x1e, 0x02, 0x05, 0x08, 0xe5, 0x49, 0x09, 0xe6,
-0xe5, 0x04, 0x25, 0x01, 0x08, 0x0a, 0x1f, 0x14,
-0x0e, 0x01, 0x0d, 0x07, 0x08, 0x0c, 0x16, 0x03,
-0x07, 0x01, 0x57, 0xe8, 0x36, 0x08, 0xe5, 0x08,
-0xe5, 0x07, 0x09, 0xe5, 0x07, 0x09, 0x05, 0x06,
-0xe5, 0x04, 0x09, 0x01, 0xe5, 0x07, 0x09, 0x09,
-0x02, 0xe5, 0xe5, 0x02, 0xe5, 0x03, 0x0d, 0x05,
-0x0d, 0x46, 0xe5, 0xe5, 0xe6, 0x01, 0x01, 0x2d,
-0xe5, 0x0e, 0x07, 0x01, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x07, 0x01, 0x05, 0x04, 0x01, 0x01,
-0x01, 0x08, 0x02, 0x02, 0xe5, 0x0a, 0x01, 0x0e,
-0x02, 0xe5, 0xe6, 0x01, 0x05, 0x0c, 0x06, 0xe5,
-0x0b, 0x43, 0x01, 0x04, 0x01, 0x04, 0x23, 0x01,
-0xe5, 0xe5, 0x0a, 0x01, 0xe5, 0x01, 0x02, 0x0d,
-0x09, 0x09, 0x09, 0xe5, 0x02, 0x07, 0x05, 0xe5,
-0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x0d, 0x09,
-0x02, 0xe5, 0x02, 0x04, 0xe5, 0xe5, 0xe5, 0x06,
-0x10, 0xe5, 0x02, 0x07, 0x47, 0x05, 0xe7, 0x01,
-0x25, 0x02, 0x14, 0x01, 0x08, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0xe5,
-0x0a, 0x09, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x19,
-0x02, 0x06, 0x02, 0x01, 0x07, 0x10, 0xe5, 0xe5,
-0x05, 0x02, 0x49, 0x02, 0xe5, 0xe6, 0x28, 0x01,
-0x01, 0x02, 0x0e, 0x02, 0x0b, 0xe5, 0x01, 0x02,
-0x02, 0x01, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x01, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x08,
-0x01, 0x03, 0x02, 0x09, 0x07, 0x0c, 0x01, 0x05,
-0x01, 0xe6, 0xe5, 0x01, 0x04, 0x15, 0x05, 0xe5,
-0x04, 0x47, 0xe8, 0x01, 0x28, 0x04, 0xe5, 0x01,
-0x0d, 0xe5, 0xe5, 0x01, 0x02, 0x02, 0x09, 0x03,
-0x05, 0x09, 0x03, 0x04, 0x04, 0xe5, 0x02, 0x05,
-0x01, 0x01, 0x05, 0x06, 0xe6, 0x15, 0x03, 0x02,
-0x01, 0xe5, 0xe5, 0xe5, 0x04, 0x03, 0x0f, 0x03,
-0x01, 0x01, 0xe5, 0x04, 0x45, 0x03, 0xe7, 0x38,
-0x04, 0x04, 0x13, 0x02, 0x10, 0x02, 0x09, 0x01,
-0x04, 0x04, 0x01, 0x03, 0xe5, 0x03, 0x0f, 0xe5,
-0x0b, 0x01, 0x07, 0x01, 0x01, 0x05, 0x15, 0x09,
-0x4b, 0x02, 0x30, 0xe6, 0x06, 0x10, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x04, 0x09, 0x04,
-0x01, 0x02, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x01,
-0x0a, 0xe5, 0xe5, 0xe5, 0x04, 0x04, 0x04, 0x04,
-0x01, 0x02, 0x04, 0x13, 0x0b, 0x02, 0x47, 0xe8,
-0x04, 0xe5, 0x01, 0xe5, 0x25, 0x02, 0x06, 0x02,
-0x03, 0x02, 0x03, 0x09, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x09, 0x0b, 0x11, 0x02, 0x05, 0x3e, 0x50,
-0x01, 0xe6, 0x04, 0x04, 0x31, 0x09, 0x01, 0x10,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03, 0xe5,
-0x05, 0x09, 0x02, 0x06, 0xe5, 0x08, 0xe6, 0x11,
-0x0a, 0x21, 0x51, 0xe5, 0x07, 0x05, 0x09, 0x09,
-0x09, 0x09, 0x05, 0xe5, 0x01, 0x03, 0x05, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x06, 0x02, 0x09,
-0x09, 0x05, 0xe5, 0x01, 0x0b, 0xe5, 0x04, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x02, 0x06, 0x09, 0x09,
-0x06, 0x02, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x06, 0x02, 0x01, 0x02, 0x31, 0x06, 0x16,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x04, 0xe5, 0x08, 0x09, 0x08, 0xe5, 0x03, 0x0b,
-0x01, 0x0b, 0xe5, 0x07, 0x14, 0x09, 0x06, 0x02,
-0x44, 0x05, 0x02, 0x01, 0x01, 0x33, 0x1c, 0x05,
-0x03, 0x05, 0x03, 0x05, 0x04, 0x09, 0x05, 0x03,
-0x05, 0x03, 0x11, 0x0d, 0x05, 0x17, 0x07, 0x0a,
-0x50, 0xe7, 0x27, 0x07, 0x04, 0x01, 0x0a, 0x15,
-0x09, 0x09, 0x09, 0x01, 0x04, 0x02, 0x03, 0xe5,
-0xe5, 0x01, 0x04, 0x01, 0x02, 0x01, 0x06, 0xe7,
-0x0f, 0x02, 0x01, 0x02, 0x01, 0x02, 0x0b, 0x02,
-0x04, 0x13, 0x45, 0x03, 0xe6, 0x2e, 0x05, 0x01,
-0x01, 0x04, 0xe5, 0xe5, 0x0a, 0x09, 0x09, 0x09,
-0x09, 0x02, 0x02, 0x03, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0x01, 0x01, 0x07, 0xe6, 0x08, 0x05, 0x03,
-0x02, 0x02, 0x01, 0x01, 0x0c, 0x06, 0x08, 0x0a,
-0x49, 0xe5, 0xe6, 0x26, 0x0e, 0x09, 0x0d, 0x03,
-0x09, 0x09, 0x06, 0x0e, 0x04, 0x02, 0x01, 0x03,
-0xe5, 0x0a, 0x04, 0x01, 0x11, 0x03, 0x03, 0x01,
-0x11, 0x09, 0x01, 0x54, 0xe5, 0xe6, 0x14, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x03, 0xe6, 0x08, 0xe6,
-0x06, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x03,
-0x05, 0xe5, 0x07, 0xe6, 0x06, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x0a, 0x2b,
-0x01, 0x09, 0xe5, 0x07, 0x0a, 0x06, 0x09, 0x09,
-0x07, 0x01, 0x0b, 0xe5, 0x05, 0x01, 0xe6, 0x06,
-0x0b, 0xe5, 0x05, 0x01, 0x0a, 0x08, 0x11, 0x15,
-0x4a, 0x01, 0xe6, 0x2a, 0x01, 0x07, 0x01, 0xe5,
-0x05, 0x0c, 0x08, 0x09, 0x09, 0x06, 0x02, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x0d, 0xe5, 0x12, 0x06,
-0x07, 0x1f, 0x4e, 0xe6, 0x2c, 0x09, 0x09, 0x2b,
-0xe6, 0x02, 0x09, 0xe5, 0x07, 0x09, 0x08, 0x02,
-0x07, 0x01, 0x13, 0x11, 0x15, 0x4a, 0xe8, 0x2c,
-0x02, 0x06, 0xe5, 0xe5, 0x03, 0x0c, 0x01, 0x09,
-0x09, 0x09, 0xe6, 0x01, 0x04, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x04, 0x08, 0x02, 0x09,
-0x09, 0x04, 0x04, 0xe5, 0x11, 0x0e, 0x04, 0x47,
-0x01, 0xe6, 0x2a, 0xe5, 0xe5, 0x12, 0xe5, 0x04,
-0x04, 0x04, 0x03, 0x05, 0x09, 0x09, 0x01, 0xe5,
-0x05, 0x01, 0xe6, 0x04, 0x09, 0xe5, 0xe5, 0x1b,
-0x02, 0x06, 0x09, 0xe5, 0xe5, 0x0f, 0x02, 0x06,
-0x02, 0x4a, 0x02, 0x11, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x03, 0x03, 0x01,
-0x04, 0x02, 0xe7, 0xe6, 0x02, 0x01, 0x01, 0x02,
-0x02, 0x01, 0xe5, 0x02, 0x04, 0x01, 0x06, 0xe5,
-0xe5, 0x02, 0x03, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x03,
-0x03, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0a, 0xe6,
-0xe5, 0x2e, 0x0f, 0x02, 0x05, 0x02, 0xe6, 0x06,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe5, 0x01, 0x2d, 0x01, 0xe5, 0x06, 0xe6,
-0x06, 0x12, 0x09, 0x01, 0xe5, 0x4c, 0x01, 0x30,
-0x05, 0x06, 0x11, 0x0a, 0x1a, 0x03, 0x26, 0x0c,
-0x01, 0x07, 0x21, 0x06, 0x4a, 0x02, 0xe7, 0x45,
-0x01, 0x01, 0x03, 0x03, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x05,
-0x02, 0x0b, 0x0c, 0xe5, 0x05, 0x15, 0x03, 0x26,
-0x4c, 0xe8, 0x02, 0x01, 0x26, 0x09, 0x07, 0x01,
-0xe5, 0x0e, 0x02, 0x05, 0x01, 0xe5, 0x09, 0x02,
-0x04, 0x01, 0x03, 0x03, 0x01, 0x02, 0x04, 0x01,
-0xe5, 0x07, 0xe5, 0x11, 0x09, 0xe5, 0x01, 0x02,
-0x02, 0x01, 0x10, 0x0d, 0x03, 0x02, 0xe5, 0x49,
-0x01, 0x01, 0xe6, 0x02, 0x30, 0x0b, 0x0d, 0x1f,
-0x03, 0x0a, 0x05, 0xe5, 0x01, 0x02, 0x04, 0x02,
-0x05, 0x0e, 0x13, 0x02, 0x1d, 0x50, 0x02, 0xe6,
-0x02, 0x01, 0x24, 0x0a, 0xe5, 0x06, 0x13, 0x0d,
-0x01, 0x03, 0x09, 0x04, 0x04, 0x0b, 0x09, 0x07,
-0x03, 0x02, 0x01, 0x06, 0x0b, 0x01, 0x01, 0x1e,
-0xe5, 0x01, 0x05, 0xe5, 0x48, 0xe5, 0xe5, 0xe5,
-0x02, 0x05, 0x21, 0x01, 0xe5, 0x05, 0x02, 0x0b,
-0x11, 0x06, 0x01, 0x2f, 0xe5, 0x01, 0x05, 0xe7,
-0x0c, 0x04, 0x11, 0x13, 0x01, 0x02, 0x05, 0x42,
-0x0a, 0xe5, 0x01, 0xe5, 0x35, 0x1f, 0x04, 0x05,
-0x03, 0x05, 0x08, 0x12, 0xe5, 0x04, 0x04, 0x04,
-0x01, 0x03, 0x09, 0x05, 0x0d, 0x03, 0xe5, 0x13,
-0x06, 0x53, 0xe5, 0x3c, 0xe7, 0x10, 0xe5, 0x06,
-0x09, 0xe6, 0x06, 0xe6, 0x03, 0x0b, 0x04, 0x10,
-0x0b, 0xe5, 0x03, 0x06, 0x06, 0xe6, 0x06, 0xe5,
-0x07, 0xe5, 0x11, 0x01, 0x08, 0x44, 0xe5, 0x30,
-0xe6, 0x0c, 0x10, 0x03, 0x12, 0x07, 0xe5, 0x25,
-0x05, 0x08, 0x12, 0x0a, 0x08, 0x03, 0x1a, 0x3f,
-0x02, 0xe5, 0x4f, 0x01, 0x01, 0xe5, 0x06, 0x01,
-0x08, 0x04, 0xe5, 0x06, 0xe5, 0x01, 0x02, 0x09,
-0xe5, 0x03, 0x01, 0x01, 0x09, 0x01, 0x08, 0x03,
-0x06, 0x12, 0x03, 0x05, 0x03, 0x04, 0x01, 0x03,
-0x05, 0x0e, 0x3b, 0x03, 0x37, 0x1a, 0x01, 0x01,
-0xe5, 0x02, 0x03, 0xe5, 0x03, 0x0f, 0x0a, 0xe5,
-0x03, 0x2a, 0xe5, 0x01, 0x02, 0x20, 0x02, 0x05,
-0xe6, 0x03, 0x44, 0xe6, 0xe5, 0x2e, 0x06, 0x02,
-0x15, 0x0e, 0x0c, 0x04, 0x0a, 0x03, 0x01, 0x2d,
-0x01, 0x1f, 0xe5, 0x05, 0x09, 0x02, 0x15, 0x32,
-0xe5, 0xe7, 0x2c, 0xe5, 0x28, 0xe5, 0xe5, 0x01,
-0xe5, 0x08, 0x05, 0x03, 0xe7, 0x01, 0x06, 0xe5,
-0x04, 0x05, 0x06, 0xe5, 0x02, 0x03, 0x09, 0x13,
-0x02, 0x01, 0x04, 0x02, 0xe5, 0x04, 0x13, 0x09,
-0x3c, 0xe5, 0xe8, 0x01, 0x01, 0x2a, 0x2a, 0xe5,
-0xe5, 0x08, 0xe5, 0x01, 0x05, 0x02, 0x02, 0xe5,
-0x02, 0xe5, 0x02, 0xe5, 0x05, 0xe5, 0x03, 0xe6,
-0x03, 0xe5, 0x02, 0x0d, 0x05, 0x0c, 0x02, 0xe5,
-0x08, 0x01, 0x11, 0x01, 0x03, 0x09, 0x3a, 0x01,
-0x03, 0x01, 0xe5, 0x03, 0x26, 0x09, 0x01, 0x17,
-0xe5, 0x01, 0x01, 0x09, 0x01, 0x07, 0x07, 0x05,
-0xe5, 0x01, 0x01, 0x09, 0x07, 0x01, 0x09, 0x03,
-0x0f, 0x01, 0x09, 0x0b, 0x09, 0x01, 0xe5, 0x08,
-0x01, 0x48, 0x05, 0xe5, 0xe5, 0x01, 0x25, 0xe5,
-0xe5, 0x04, 0xe5, 0x01, 0x01, 0x22, 0x04, 0x07,
-0x09, 0x0b, 0x04, 0xe5, 0x0a, 0x01, 0x09, 0x10,
-0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0x18, 0xe5,
-0x08, 0xe5, 0x4a, 0x02, 0xe5, 0xe6, 0x2f, 0x06,
-0x0c, 0x0e, 0x01, 0x02, 0xe5, 0xe6, 0x01, 0x09,
-0x02, 0x03, 0xe5, 0x03, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x08, 0x06,
-0x05, 0x06, 0x06, 0x05, 0x01, 0x01, 0x05, 0x09,
-0x07, 0x05, 0xe5, 0x03, 0x01, 0x01, 0x05, 0x3d,
-0xe6, 0xe5, 0x01, 0x2d, 0xe5, 0x01, 0x02, 0x01,
-0x1d, 0x04, 0xe5, 0x07, 0xe5, 0x02, 0x03, 0xe6,
-0x02, 0x07, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x03,
-0xe5, 0x03, 0x03, 0x02, 0x06, 0xe6, 0x09, 0x03,
-0x03, 0xe5, 0x04, 0xe5, 0x01, 0x16, 0x04, 0xe7,
-0x03, 0x44, 0x04, 0x01, 0xe5, 0x29, 0x01, 0x07,
-0x01, 0x0b, 0xe5, 0xe5, 0x0b, 0x01, 0x05, 0x03,
-0x05, 0x03, 0x01, 0xe8, 0xe5, 0x02, 0x02, 0x06,
-0x03, 0x01, 0x01, 0x01, 0x03, 0x03, 0x04, 0xe5,
-0x04, 0x0d, 0xe5, 0x01, 0x01, 0x05, 0x03, 0x25,
-0x01, 0x02, 0x08, 0x3d, 0x02, 0xe6, 0x2a, 0x04,
-0x04, 0x01, 0x0c, 0x01, 0xe6, 0x0d, 0x05, 0x09,
-0x04, 0x01, 0x01, 0xe5, 0x03, 0x01, 0xe5, 0x05,
-0x01, 0x02, 0x01, 0x02, 0x04, 0x04, 0x01, 0xe5,
-0x02, 0x04, 0x08, 0xe5, 0xe5, 0xe6, 0xe5, 0x06,
-0x04, 0x08, 0xe5, 0x07, 0xe5, 0x12, 0x09, 0x01,
-0x01, 0x39, 0xe5, 0xe6, 0x3a, 0x02, 0x03, 0x13,
-0x0c, 0xe5, 0x04, 0x0e, 0x09, 0x13, 0x09, 0x02,
-0x03, 0x0c, 0x10, 0x09, 0x13, 0x09, 0x43, 0x3c,
-0x05, 0xe5, 0x12, 0x02, 0x06, 0x02, 0xe5, 0x03,
-0xe5, 0x1d, 0x09, 0x01, 0x08, 0xe5, 0x06, 0xe6,
-0x0a, 0xe6, 0x06, 0x05, 0xe6, 0x06, 0xe6, 0x0a,
-0xe5, 0x04, 0x02, 0xe5, 0x03, 0xe5, 0x3e, 0xe8,
-0x0d, 0x09, 0x09, 0x09, 0x06, 0x02, 0x02, 0xe5,
-0x04, 0xe6, 0x06, 0x04, 0x01, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x09, 0xe6, 0x06, 0x09, 0x02, 0x01,
-0x01, 0x02, 0x09, 0x03, 0x07, 0x09, 0xe5, 0x02,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x05, 0x03, 0xe5,
-0x07, 0xe5, 0x07, 0x02, 0x03, 0x02, 0x01, 0x07,
-0xe6, 0x06, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x02,
-0x01, 0x02, 0x27, 0x06, 0x02, 0x24, 0x02, 0x1d,
-0x04, 0x04, 0x09, 0x04, 0x0b, 0x09, 0x04, 0x09,
-0x0e, 0x09, 0x0d, 0x4b, 0x04, 0x01, 0x29, 0x09,
-0x26, 0x1d, 0x08, 0x0b, 0x1b, 0x03, 0x07, 0x11,
-0x09, 0x5e, 0xe6, 0xe5, 0x2a, 0x02, 0x06, 0x0a,
-0xe6, 0x0f, 0xe6, 0x04, 0x01, 0x02, 0x07, 0xe6,
-0x0a, 0x04, 0x02, 0x0e, 0x01, 0x02, 0x06, 0x01,
-0x02, 0x01, 0x05, 0xe6, 0x05, 0x06, 0xe5, 0x0b,
-0x01, 0x07, 0xe6, 0x06, 0x06, 0x02, 0xe6, 0x06,
-0xe6, 0x3a, 0x01, 0xe5, 0xe6, 0x2a, 0x03, 0x05,
-0x02, 0x0a, 0x0c, 0x01, 0x03, 0xe5, 0x04, 0x01,
-0xe6, 0xe5, 0x06, 0x09, 0x09, 0x08, 0xe5, 0x04,
-0x03, 0x07, 0x01, 0x01, 0x01, 0x07, 0x05, 0x01,
-0xe5, 0x04, 0x02, 0xe6, 0x08, 0x09, 0x0f, 0x01,
-0x01, 0x09, 0x3f, 0xe7, 0x2c, 0x14, 0x13, 0x05,
-0xe5, 0xe5, 0x02, 0x06, 0x12, 0x13, 0x03, 0x05,
-0x0d, 0x04, 0x02, 0x17, 0x07, 0x01, 0x05, 0x07,
-0x01, 0x0b, 0x01, 0x3f, 0xe5, 0x14, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5,
-0x05, 0xe5, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe6, 0xe6, 0x03, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x06, 0xe6, 0xe5, 0x36, 0x0a,
-0x1a, 0x01, 0x0a, 0xe5, 0x07, 0xe5, 0x06, 0x09,
-0x07, 0x01, 0x0b, 0x0a, 0x08, 0x07, 0x0c, 0x09,
-0x12, 0x0a, 0x3f, 0xe8, 0x34, 0x01, 0x25, 0x01,
-0x0d, 0x02, 0x1e, 0x0d, 0x0a, 0x06, 0x01, 0x09,
-0x0a, 0x09, 0x5d, 0xe6, 0xe5, 0x36, 0x0a, 0x1c,
-0x0e, 0xe6, 0x0b, 0x09, 0x09, 0x08, 0x16, 0x3c,
-0x3f, 0xe6, 0xe5, 0x0b, 0x23, 0x06, 0x0c, 0x13,
-0x09, 0x09, 0xe5, 0x07, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x06, 0x0c, 0x09, 0x09, 0x13, 0x09, 0x3f,
-0xe6, 0x2a, 0x02, 0x06, 0x02, 0xe5, 0x18, 0xe5,
-0xe5, 0x02, 0x02, 0x02, 0x10, 0x01, 0xe5, 0x08,
-0x06, 0x15, 0x03, 0x09, 0x08, 0x2e, 0xe5, 0xe5,
-0x49, 0x01, 0xe5, 0xe5, 0x0e, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x02, 0x04, 0x01, 0xe5, 0x05, 0x01, 0x04, 0x02,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x07, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x08, 0x01, 0xe5, 0x01, 0x2b, 0x01,
-0x05, 0x01, 0x0b, 0xe5, 0x14, 0x04, 0xe5, 0x01,
-0x01, 0x05, 0xe5, 0x0f, 0x0c, 0x02, 0x13, 0x07,
-0xe5, 0x05, 0x15, 0x1f, 0x07, 0xe5, 0x3f, 0xe5,
-0xe6, 0x14, 0x13, 0x02, 0x06, 0x08, 0x02, 0xe5,
-0x04, 0x0e, 0x0d, 0x03, 0x07, 0x15, 0x02, 0x04,
-0x17, 0x23, 0x0f, 0x0b, 0x02, 0x01, 0x01, 0x3f,
-0xe5, 0x01, 0xe5, 0x09, 0x29, 0x0f, 0x08, 0x13,
-0x07, 0x16, 0x08, 0x01, 0x08, 0x04, 0x06, 0x05,
-0x1e, 0x23, 0x0a, 0x04, 0x03, 0x26, 0x09, 0xe6,
-0xe5, 0x2a, 0x01, 0x03, 0x03, 0x01, 0xe5, 0x03,
-0x04, 0x09, 0x06, 0x01, 0x0a, 0x09, 0xe5, 0x18,
-0x02, 0x09, 0x0a, 0xe5, 0x36, 0xe7, 0x08, 0x24,
-0x29, 0x2a, 0x02, 0x09, 0x1e, 0xe5, 0x01, 0x0b,
-0x0f, 0x0c, 0x03, 0x05, 0x07, 0x03, 0x25, 0x18,
-0x19, 0x3b, 0x02, 0xe5, 0x0b, 0x1e, 0x06, 0x02,
-0x05, 0x04, 0xe5, 0x04, 0x04, 0x06, 0x01, 0x06,
-0x02, 0x02, 0x1b, 0x0c, 0x0d, 0x01, 0x01, 0xe5,
-0x2b, 0x15, 0x01, 0x08, 0xe5, 0x08, 0x02, 0x2b,
-0x07, 0x01, 0xe6, 0x33, 0xe5, 0xe6, 0x05, 0x09,
-0x09, 0xe6, 0x06, 0xe6, 0x13, 0xe5, 0x0e, 0x01,
-0x0c, 0x04, 0x01, 0xe5, 0x07, 0x01, 0x11, 0x20,
-0x02, 0x04, 0x12, 0x01, 0x36, 0xe6, 0xe5, 0x27,
-0xe5, 0x0e, 0x07, 0x07, 0x19, 0x08, 0x2c, 0x03,
-0x1d, 0x3c, 0x35, 0x02, 0xe5, 0x08, 0x2a, 0x01,
-0x02, 0x05, 0x08, 0xe7, 0x0c, 0x08, 0x05, 0x12,
-0xe5, 0x0b, 0x08, 0x06, 0x0c, 0x04, 0x1a, 0x18,
-0x4f, 0xe5, 0xe5, 0x37, 0x02, 0x03, 0x0a, 0x17,
-0x07, 0x05, 0x0c, 0x1b, 0xe5, 0x06, 0x03, 0x0c,
-0x7a, 0xe8, 0x31, 0x09, 0x02, 0x01, 0x04, 0x05,
-0x0c, 0x05, 0x09, 0x04, 0x02, 0x01, 0x08, 0x07,
-0x02, 0x0f, 0x2d, 0x09, 0x0f, 0x03, 0x09, 0x09,
-0x38, 0xe7, 0x28, 0x03, 0x02, 0x03, 0x01, 0x06,
-0xe5, 0xe6, 0x09, 0xe5, 0x08, 0x05, 0xe5, 0x03,
-0x03, 0x03, 0x02, 0x06, 0x04, 0x01, 0x09, 0x02,
-0xe5, 0x1c, 0x1a, 0xe6, 0x06, 0xe6, 0x10, 0xe5,
-0xe5, 0x0e, 0x01, 0x35, 0xe5, 0xe5, 0xe5, 0x2e,
-0x01, 0x2d, 0x0b, 0x0c, 0x01, 0x0a, 0x01, 0x0b,
-0x31, 0x09, 0x12, 0x02, 0x01, 0x03, 0x03, 0x05,
-0x12, 0x25, 0xe8, 0xe5, 0x36, 0xe5, 0x03, 0x02,
-0xe6, 0xe6, 0x04, 0x05, 0x0c, 0xe6, 0x07, 0x01,
-0xe5, 0x05, 0xe5, 0xe5, 0xe6, 0x02, 0x09, 0x09,
-0x0d, 0xe5, 0x01, 0x03, 0x02, 0x01, 0x04, 0x0a,
-0x0b, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x05, 0x09,
-0x40, 0xe6, 0x02, 0xe5, 0xe5, 0xe5, 0x26, 0x0b,
-0x06, 0xe5, 0xe5, 0x02, 0xe5, 0xe5, 0x01, 0x01,
-0x04, 0xe5, 0x0b, 0x09, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x01, 0x03, 0x05, 0x02, 0x03, 0xe5, 0x0c,
-0x06, 0x01, 0xe8, 0x01, 0xe5, 0x05, 0x0f, 0x05,
-0xe5, 0x01, 0x06, 0x01, 0x0a, 0x04, 0x04, 0xe5,
-0x0c, 0x2e, 0x01, 0x05, 0xe5, 0x03, 0x23, 0xe5,
-0x0c, 0x04, 0xe5, 0xe5, 0xe5, 0x06, 0x09, 0x01,
-0x0d, 0xe5, 0x01, 0x01, 0x11, 0x05, 0xe5, 0x01,
-0x01, 0x0b, 0x0e, 0xe5, 0xe5, 0x12, 0x0b, 0x09,
-0x01, 0x09, 0x0c, 0x01, 0xe5, 0xe5, 0x06, 0x01,
-0x31, 0x04, 0xe6, 0xe5, 0x01, 0x25, 0x09, 0x02,
-0x05, 0xe5, 0x01, 0x01, 0x04, 0x02, 0x09, 0x01,
-0x0e, 0x02, 0x01, 0x11, 0x09, 0x01, 0x13, 0x06,
-0x04, 0x0e, 0xe5, 0xe5, 0x04, 0xe5, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0xe5, 0x0c, 0xe5, 0x0b, 0x01,
-0x04, 0xe5, 0xe5, 0xe5, 0x32, 0x02, 0xe5, 0x01,
-0xe5, 0x0a, 0x1c, 0x03, 0x05, 0x01, 0x04, 0x01,
-0x01, 0xe5, 0xe6, 0x02, 0xe7, 0xe5, 0x01, 0x04,
-0x01, 0xe5, 0x0d, 0x06, 0x09, 0x04, 0x04, 0x0a,
-0x02, 0x05, 0x06, 0x06, 0xe6, 0x01, 0x02, 0x03,
-0x05, 0x06, 0x0e, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x0e, 0x01, 0xe5, 0x05, 0x01, 0x36, 0x01, 0xe6,
-0x01, 0x08, 0x23, 0x04, 0xe5, 0x02, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe5, 0xe5, 0x04, 0x01, 0xe5,
-0x04, 0xe5, 0x02, 0x01, 0x02, 0x04, 0x0f, 0x03,
-0x09, 0x04, 0x0c, 0x01, 0x06, 0x02, 0x01, 0x02,
-0xe6, 0x0b, 0x07, 0x05, 0x02, 0xe5, 0x03, 0xe5,
-0x01, 0x0e, 0x05, 0x01, 0xe5, 0x04, 0xe5, 0xe5,
-0xe5, 0x2d, 0x03, 0x05, 0xe5, 0x30, 0xe5, 0xe5,
-0xe5, 0x02, 0xe6, 0xe5, 0xe5, 0x04, 0x01, 0x01,
-0x04, 0x02, 0x01, 0x05, 0x03, 0x04, 0x02, 0x01,
-0x03, 0xe5, 0x08, 0x02, 0x03, 0x05, 0x01, 0x05,
-0x05, 0xe7, 0x03, 0x07, 0x07, 0xe5, 0x08, 0x02,
-0x01, 0x04, 0x04, 0x04, 0x04, 0x0d, 0xe5, 0x0b,
-0x01, 0x05, 0x01, 0x01, 0x30, 0x06, 0xe7, 0x31,
-0xe5, 0xe5, 0x02, 0xe5, 0x03, 0x01, 0xe5, 0x05,
-0x01, 0x01, 0xe5, 0xe6, 0xe5, 0xe6, 0x05, 0x01,
-0x04, 0xe5, 0xe5, 0xe5, 0xe6, 0xe5, 0xe5, 0x03,
-0xe5, 0xe8, 0x03, 0x04, 0x01, 0x0c, 0x06, 0x01,
-0x02, 0xe6, 0x03, 0x01, 0xe5, 0x07, 0xe5, 0xe8,
-0xe5, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x02, 0x08, 0xe5, 0xe5, 0xe5, 0x09, 0x01,
-0xe5, 0x05, 0x01, 0x37, 0x01, 0xe6, 0x03, 0x2b,
-0x01, 0xe5, 0x02, 0x02, 0x06, 0x02, 0xe5, 0x04,
-0x02, 0x01, 0xe5, 0x02, 0x0c, 0x01, 0x04, 0x09,
-0x02, 0x02, 0x03, 0x13, 0x15, 0x09, 0x27, 0x13,
-0x43, 0x32, 0xe5, 0x03, 0xe5, 0x03, 0x0d, 0xe5,
-0x0b, 0x09, 0x01, 0x03, 0xe6, 0xe5, 0x04, 0xe6,
-0x06, 0xe5, 0x01, 0x0f, 0xe5, 0x0a, 0xe5, 0xe6,
-0x03, 0xe5, 0x07, 0xe6, 0x07, 0xe5, 0xe5, 0x05,
-0xe5, 0x08, 0x01, 0x05, 0xe6, 0x14, 0xe5, 0x39,
-0xe9, 0x0d, 0x09, 0x09, 0x09, 0x02, 0x03, 0x02,
-0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0xe5, 0xe5, 0x02,
-0x02, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0x04, 0xe6,
-0x01, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x04, 0x02,
-0xe8, 0x04, 0x09, 0xe6, 0x08, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0x05, 0x03, 0x09, 0x03, 0x05, 0xe5,
-0x02, 0x01, 0x02, 0x04, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x02, 0x02, 0x06, 0x09, 0x09, 0x09, 0x06,
-0x06, 0x01, 0x01, 0xe5, 0x01, 0x30, 0x0a, 0x06,
-0x02, 0x1d, 0x04, 0x01, 0x02, 0x06, 0x02, 0x1d,
-0x06, 0x04, 0x0e, 0x04, 0x04, 0x09, 0x09, 0x09,
-0x04, 0x09, 0x09, 0x30, 0x05, 0x02, 0xe5, 0xe6,
-0x38, 0x03, 0x08, 0x06, 0x15, 0x07, 0x03, 0x05,
-0x02, 0x1c, 0x0c, 0x06, 0x09, 0x03, 0x23, 0x03,
-0x07, 0x09, 0x3f, 0xe5, 0x27, 0x02, 0x01, 0x07,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0x02, 0x02,
-0x01, 0xe7, 0x03, 0x01, 0xe5, 0x05, 0x0b, 0xe7,
-0x05, 0xe7, 0xe5, 0xe5, 0x01, 0xe7, 0x03, 0x01,
-0x02, 0x07, 0x01, 0x08, 0x02, 0x01, 0x04, 0xe7,
-0x06, 0xe6, 0xe5, 0x01, 0x01, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x07, 0x01, 0x0e, 0x01, 0xe5, 0x3c,
-0x01, 0xe8, 0x29, 0xe5, 0xe6, 0x05, 0x01, 0xe6,
-0x04, 0x01, 0x07, 0x01, 0xe6, 0x03, 0xe5, 0xe5,
-0x03, 0x04, 0xe5, 0x02, 0x05, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x03, 0x02, 0xe6, 0x01, 0x06, 0x07,
-0x03, 0x01, 0x03, 0x02, 0xe5, 0x08, 0x05, 0x01,
-0x01, 0x01, 0xe5, 0x03, 0x01, 0x01, 0x05, 0x01,
-0x09, 0x05, 0x02, 0x06, 0x01, 0x09, 0xe5, 0x34,
-0x01, 0xe6, 0x34, 0x01, 0x07, 0x01, 0x06, 0x02,
-0x07, 0x01, 0x09, 0x0a, 0x02, 0xe5, 0xe5, 0x0c,
-0x02, 0x03, 0x01, 0x13, 0x01, 0x09, 0x01, 0x09,
-0x01, 0x0f, 0x03, 0x05, 0x03, 0x09, 0x02, 0x0a,
-0x01, 0x44, 0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x04, 0xe6,
-0x01, 0x04, 0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe5,
-0x01, 0x03, 0xe5, 0xe6, 0x01, 0x03, 0xe6, 0x01,
-0x03, 0xe5, 0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x06,
-0xe6, 0x01, 0x01, 0x05, 0xe6, 0x06, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0xe6, 0x06, 0xe6, 0xe5, 0x04, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x06, 0xe6, 0xe5, 0x2a, 0x01,
-0xe6, 0x06, 0xe6, 0x04, 0x01, 0x07, 0x01, 0xe6,
-0x04, 0x01, 0x09, 0xe6, 0x07, 0xe5, 0x07, 0xe5,
-0x0e, 0x01, 0x0a, 0xe5, 0x08, 0x07, 0x01, 0x13,
-0x09, 0x07, 0x01, 0x0a, 0xe5, 0x0e, 0x01, 0x44,
-0x2b, 0x01, 0x09, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x09, 0x07, 0x06, 0x01, 0x02, 0x06, 0xe5,
-0x04, 0x02, 0xe5, 0xe5, 0x05, 0x08, 0xe5, 0x01,
-0x09, 0x01, 0x11, 0x09, 0x09, 0x01, 0x1b, 0x01,
-0x39, 0x05, 0xe6, 0xe6, 0x0b, 0x1e, 0x01, 0x09,
-0x09, 0x1b, 0x09, 0x05, 0x01, 0xe6, 0x05, 0x01,
-0xe5, 0x05, 0xe7, 0xe5, 0x02, 0xe7, 0x06, 0x01,
-0x01, 0x0a, 0x01, 0x13, 0x09, 0x27, 0x39, 0x07,
-0xe5, 0xe5, 0x2a, 0x01, 0xe5, 0x05, 0x01, 0x02,
-0x04, 0x01, 0x0c, 0x0e, 0x02, 0x0b, 0x01, 0x07,
-0x09, 0xe5, 0x02, 0x01, 0x02, 0xe6, 0x06, 0xe5,
-0x09, 0x04, 0x01, 0x02, 0x09, 0x04, 0x04, 0x04,
-0x04, 0x09, 0x09, 0x0e, 0x01, 0x3e, 0x01, 0x01,
-0x01, 0xe5, 0x29, 0x02, 0x06, 0x02, 0x06, 0xe5,
-0xe5, 0x05, 0x09, 0x09, 0x1d, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x09, 0x07, 0x09, 0x16, 0x06, 0xe5,
-0xe5, 0x08, 0x10, 0x03, 0x05, 0xe5, 0xe5, 0x3e,
-0x03, 0x11, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04,
-0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01,
-0x03, 0x01, 0x04, 0x02, 0xe6, 0x03, 0x02, 0x01,
-0x03, 0x03, 0xe7, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0x04, 0x02, 0x01, 0x04, 0x01, 0xe9, 0x04, 0x01,
-0x02, 0x01, 0xe5, 0x02, 0x01, 0x01, 0x01, 0x03,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x01, 0x02, 0x02,
-0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x0a,
-0xe8, 0x2a, 0x08, 0xe5, 0x01, 0x14, 0x0a, 0x02,
-0x04, 0x09, 0x08, 0x04, 0x05, 0x01, 0x10, 0x0d,
-0x12, 0x06, 0x04, 0x02, 0x0b, 0x03, 0x07, 0xe5,
-0x48, 0x09, 0x01, 0xe7, 0x03, 0x23, 0x0b, 0x02,
-0x0d, 0x0a, 0xe5, 0x06, 0xe5, 0x01, 0x07, 0xe5,
-0x12, 0x08, 0x03, 0x08, 0x08, 0x13, 0x01, 0x05,
-0x12, 0x0f, 0x15, 0x02, 0x3a, 0xe5, 0xe7, 0x38,
-0x18, 0x05, 0x01, 0x06, 0x10, 0x03, 0x22, 0x0a,
-0x13, 0x09, 0x14, 0x06, 0x11, 0x08, 0x35, 0x02,
-0x05, 0x25, 0x04, 0x01, 0x02, 0x01, 0xe5, 0x07,
-0x07, 0x09, 0x01, 0x05, 0x01, 0x01, 0xe5, 0x02,
-0x02, 0xe5, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0xe7,
-0x07, 0x0a, 0x0a, 0x07, 0x01, 0x04, 0x0e, 0xe5,
-0x05, 0xe6, 0x08, 0x11, 0x04, 0x04, 0x01, 0x04,
-0x02, 0x01, 0x06, 0x2e, 0xe6, 0xe6, 0x28, 0xe5,
-0x01, 0x03, 0x05, 0x08, 0x07, 0x02, 0x04, 0x02,
-0x02, 0x08, 0x11, 0x02, 0x07, 0x06, 0x02, 0x04,
-0x08, 0x04, 0x0b, 0x02, 0x0e, 0x01, 0x05, 0x04,
-0x03, 0x04, 0x11, 0x03, 0x01, 0x07, 0x03, 0x05,
-0x03, 0x32, 0xe6, 0xe5, 0x23, 0x08, 0x03, 0x03,
-0x02, 0x0f, 0x02, 0x0a, 0x06, 0x18, 0x0b, 0x11,
-0x02, 0x01, 0x01, 0x03, 0x0a, 0x15, 0x07, 0x22,
-0x01, 0x07, 0x01, 0x1a, 0x1a, 0x01, 0xe5, 0xe5,
-0x2a, 0xe5, 0x07, 0x18, 0xe5, 0x02, 0x09, 0x01,
-0x16, 0x0d, 0x11, 0x01, 0xe5, 0x08, 0x10, 0x04,
-0x07, 0x06, 0x01, 0x07, 0x04, 0x09, 0x01, 0x06,
-0x45, 0xe6, 0x27, 0x04, 0x09, 0x14, 0x06, 0x05,
-0x28, 0x12, 0x03, 0x09, 0x17, 0x0b, 0x09, 0x07,
-0x02, 0x08, 0x01, 0x06, 0x09, 0x37, 0x01, 0x2c,
-0x0f, 0x12, 0x03, 0xe5, 0x06, 0x11, 0x01, 0x03,
-0x05, 0x09, 0xe6, 0xe5, 0x04, 0xe5, 0xe5, 0x03,
-0x02, 0x01, 0x01, 0x0d, 0x17, 0xe6, 0x10, 0xe5,
-0x07, 0xe5, 0x04, 0x0b, 0x04, 0x01, 0x32, 0x02,
-0xe5, 0x2d, 0x0a, 0x04, 0x16, 0x0b, 0x09, 0x1c,
-0x01, 0x0a, 0x03, 0x09, 0x05, 0x17, 0x03, 0x06,
-0x0d, 0x09, 0x49, 0x03, 0x2a, 0x14, 0x01, 0x07,
-0x01, 0xe5, 0xe5, 0x04, 0x01, 0x0c, 0x05, 0x06,
-0x03, 0x03, 0x06, 0x02, 0x03, 0x04, 0x07, 0x06,
-0xe5, 0xe6, 0xe5, 0x17, 0x01, 0x09, 0x06, 0x02,
-0x08, 0x06, 0x02, 0xe5, 0x06, 0x01, 0xe5, 0x3d,
-0xe6, 0x01, 0xe5, 0x35, 0x0b, 0x07, 0x03, 0x0f,
-0x08, 0xe5, 0x12, 0x02, 0x11, 0x07, 0x02, 0x03,
-0x02, 0x20, 0x04, 0x0e, 0x09, 0x09, 0x05, 0x01,
-0x01, 0x3a, 0x06, 0x2b, 0x04, 0x01, 0x11, 0x13,
-0x08, 0x0c, 0x07, 0x0b, 0x12, 0x04, 0x11, 0x0f,
-0xe5, 0x04, 0x02, 0x0b, 0x01, 0x05, 0x01, 0x08,
-0x04, 0x3d, 0x01, 0xe7, 0x2c, 0x1d, 0xe7, 0x01,
-0x03, 0x05, 0x03, 0x0f, 0x02, 0xe5, 0x04, 0x09,
-0x03, 0x09, 0x02, 0x01, 0x06, 0x02, 0x01, 0x25,
-0xe5, 0xe5, 0x02, 0x01, 0xe5, 0x01, 0x03, 0xe5,
-0x07, 0xe5, 0x07, 0x02, 0xe5, 0x04, 0x32, 0xea,
-0x01, 0x01, 0x27, 0x01, 0x08, 0x07, 0xe5, 0x0a,
-0x03, 0xe5, 0xe6, 0x04, 0x01, 0xe6, 0x11, 0x03,
-0x05, 0x09, 0x02, 0x09, 0x02, 0xe5, 0x06, 0x03,
-0xe5, 0x1e, 0x05, 0xe5, 0x01, 0xe6, 0x03, 0x01,
-0x03, 0x01, 0x07, 0x0a, 0x02, 0xe5, 0xe5, 0x02,
-0x2f, 0x01, 0x02, 0xe6, 0xe5, 0x03, 0x28, 0x0e,
-0xe5, 0xe5, 0xe5, 0x0d, 0x01, 0xe5, 0xe5, 0xe6,
-0x03, 0x03, 0x0f, 0x09, 0x04, 0x04, 0x30, 0x01,
-0x0a, 0x09, 0x03, 0x05, 0x0e, 0xe6, 0x07, 0xe5,
-0x35, 0x05, 0xe7, 0x01, 0x34, 0x04, 0x02, 0x01,
-0x11, 0x01, 0x03, 0xe5, 0x01, 0x13, 0x09, 0x09,
-0x3d, 0x01, 0x04, 0xe5, 0xe5, 0x0f, 0xe5, 0xe5,
-0x05, 0x08, 0xe5, 0x01, 0x35, 0x02, 0xe8, 0x31,
-0x01, 0x08, 0x03, 0x09, 0x07, 0x01, 0x02, 0x03,
-0xe5, 0xe5, 0x10, 0x09, 0x09, 0x04, 0x09, 0x0b,
-0x1a, 0x06, 0xe5, 0x03, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0x09, 0xe5, 0x01, 0x05, 0x02, 0xe5, 0x01,
-0x0c, 0x35, 0x01, 0x02, 0x31, 0x04, 0x01, 0x02,
-0xe5, 0x02, 0x04, 0xe5, 0x04, 0x02, 0xe5, 0xe5,
-0xe5, 0x01, 0xe7, 0xe5, 0xe5, 0x01, 0x01, 0x0a,
-0x03, 0x05, 0x03, 0x05, 0x03, 0x2f, 0x03, 0x02,
-0xe7, 0xe5, 0x01, 0x01, 0x01, 0xe5, 0xe5, 0x01,
-0x08, 0x02, 0x01, 0x04, 0x02, 0xe6, 0x01, 0x07,
-0x03, 0x01, 0x02, 0x2c, 0x02, 0x03, 0xe5, 0x2e,
-0x02, 0x08, 0x02, 0x01, 0x05, 0x03, 0x07, 0x01,
-0x01, 0xe5, 0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0x07,
-0xe5, 0x01, 0x09, 0x09, 0x03, 0xe5, 0x09, 0xe5,
-0x0a, 0x01, 0x0f, 0x01, 0x01, 0xe5, 0x0f, 0x02,
-0x19, 0xe5, 0x0b, 0x01, 0x02, 0x32, 0xe5, 0x01,
-0xe5, 0x2f, 0x0b, 0xe5, 0xe5, 0xe5, 0x06, 0x04,
-0x04, 0x01, 0x02, 0xe6, 0x01, 0x01, 0x04, 0x01,
-0x0a, 0x09, 0x09, 0x04, 0x08, 0xe5, 0x09, 0xe7,
-0x10, 0x01, 0x02, 0x09, 0x04, 0x02, 0x01, 0x04,
-0x08, 0xe5, 0x07, 0xe5, 0xe5, 0xe5, 0x04, 0x04,
-0x01, 0x01, 0xe7, 0x31, 0xe5, 0xe5, 0x30, 0x09,
-0x01, 0xe5, 0x05, 0x02, 0x06, 0x06, 0x0c, 0x02,
-0x21, 0x02, 0x02, 0x03, 0x0b, 0x16, 0x01, 0xe5,
-0x05, 0x02, 0x17, 0x09, 0x02, 0x10, 0x37, 0xe6,
-0x2e, 0x02, 0x01, 0x11, 0xe5, 0x04, 0x04, 0x03,
-0xe5, 0x01, 0x06, 0x02, 0x06, 0x1c, 0xe5, 0x01,
-0xe5, 0x03, 0xe6, 0x08, 0xe6, 0x11, 0x02, 0x13,
-0xe5, 0x05, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe6,
-0xe5, 0xe5, 0x03, 0x02, 0xe5, 0x03, 0xe5, 0x01,
-0xe5, 0x30, 0x01, 0xe6, 0x0d, 0x09, 0x09, 0x09,
-0x03, 0x05, 0x09, 0x02, 0x03, 0x02, 0x04, 0x01,
-0x02, 0xe6, 0x02, 0x03, 0x03, 0x05, 0x09, 0x09,
-0x09, 0xe6, 0x06, 0xe5, 0x09, 0xe5, 0x07, 0x06,
-0x02, 0x05, 0x03, 0x02, 0x03, 0x02, 0x04, 0x01,
-0x02, 0x03, 0x05, 0xe5, 0x01, 0xe5, 0xe5, 0x01,
-0xe5, 0x01, 0x05, 0x04, 0x01, 0x02, 0xe5, 0x07,
-0x09, 0x09, 0x09, 0x0d, 0x02, 0xe6, 0x01, 0x3b,
-0x06, 0x02, 0x09, 0x09, 0x36, 0x0b, 0x0d, 0x0a,
-0x06, 0x02, 0x09, 0x04, 0x0e, 0x04, 0x0e, 0x36,
-0x03, 0xe5, 0xe5, 0x3c, 0x09, 0x09, 0x08, 0x06,
-0x09, 0x27, 0x0b, 0x13, 0x01, 0x0a, 0x08, 0x11,
-0x01, 0x07, 0x0b, 0x07, 0x34, 0xe5, 0x01, 0x28,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x13, 0x01, 0x02,
-0x01, 0x02, 0x01, 0xe7, 0x02, 0xe5, 0xe5, 0x01,
-0x06, 0x02, 0x10, 0x06, 0x03, 0xe6, 0xe5, 0x04,
-0xe6, 0xe5, 0x05, 0xe7, 0x0d, 0x01, 0x02, 0x0e,
-0x01, 0x04, 0x04, 0x02, 0x07, 0xe6, 0x03, 0x02,
-0x01, 0x06, 0x02, 0x01, 0x04, 0xe7, 0x30, 0x02,
-0xe7, 0x2a, 0x01, 0x01, 0x01, 0x03, 0x02, 0x05,
-0x03, 0x06, 0x01, 0x01, 0x01, 0x03, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x01, 0x04, 0xe6, 0x10, 0xe5,
-0x08, 0xe5, 0x08, 0x09, 0xe6, 0x0e, 0x01, 0x01,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01,
-0x01, 0x08, 0xe5, 0x01, 0x05, 0xe5, 0x06, 0x01,
-0x01, 0x02, 0xe5, 0xe7, 0x34, 0x01, 0xe6, 0x26,
-0x18, 0x07, 0x01, 0x0a, 0x06, 0x01, 0x03, 0x05,
-0x13, 0x07, 0x01, 0x01, 0x09, 0x04, 0x04, 0x11,
-0x01, 0x03, 0x03, 0x09, 0x01, 0x10, 0x06, 0x02,
-0x16, 0x39, 0xe5, 0x14, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x01,
-0x04, 0xe6, 0x06, 0xe6, 0x01, 0x04, 0xe7, 0xe5,
-0x02, 0xe7, 0x07, 0xe5, 0x03, 0xe5, 0x03, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe6, 0xe5,
-0x03, 0xe6, 0x01, 0x05, 0xe5, 0x02, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0xe6, 0x03, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06,
-0x02, 0xe5, 0x37, 0xe5, 0x10, 0x07, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x06, 0xe5, 0x02, 0x09, 0x04,
-0x04, 0x02, 0x01, 0xe5, 0x01, 0x06, 0x0a, 0xe6,
-0x0e, 0x02, 0x08, 0x09, 0xe5, 0x02, 0x01, 0x02,
-0x07, 0x02, 0x09, 0xe5, 0x06, 0x07, 0x01, 0xe6,
-0x33, 0xe5, 0xe6, 0x48, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x09, 0x06, 0x09, 0x02, 0x06, 0xe5, 0xe5,
-0x03, 0x01, 0x09, 0x04, 0x13, 0x09, 0x07, 0x01,
-0xe5, 0x05, 0x01, 0x07, 0x15, 0x07, 0x01, 0x36,
-0x01, 0x01, 0x41, 0x09, 0x09, 0x09, 0x09, 0xe5,
-0x03, 0x0d, 0x05, 0x01, 0x01, 0xe5, 0x03, 0x04,
-0x07, 0x02, 0x14, 0x06, 0x01, 0x09, 0x14, 0x1c,
-0x37, 0xe5, 0xe5, 0x2f, 0x07, 0x12, 0x02, 0x04,
-0x04, 0x04, 0x01, 0x02, 0x06, 0x02, 0xe8, 0x08,
-0x02, 0x03, 0xe8, 0xe5, 0x01, 0x01, 0xe6, 0x04,
-0x01, 0x01, 0x04, 0x02, 0x07, 0x0b, 0x0e, 0x02,
-0x01, 0x01, 0x04, 0x02, 0x09, 0x09, 0x09, 0x04,
-0x01, 0x02, 0x33, 0x01, 0xe6, 0x2c, 0xe5, 0x06,
-0x01, 0x15, 0x01, 0x02, 0xe5, 0xe6, 0x04, 0x04,
-0x08, 0x05, 0xe5, 0xe5, 0x05, 0x02, 0xe5, 0x07,
-0xe5, 0x0c, 0x1b, 0x05, 0xe5, 0xe5, 0xe5, 0x06,
-0x09, 0xe5, 0x04, 0x02, 0x04, 0x04, 0x06, 0x09,
-0xe5, 0xe6, 0x34, 0xe7, 0x10, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x01, 0x01, 0x03, 0x01, 0xe5,
-0xe6, 0x02, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x04, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x02, 0x04, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x07, 0xe6, 0x01, 0x01,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x08, 0x05, 0x57,
-0x11, 0xe5, 0x06, 0xe6, 0x05, 0x09, 0x03, 0x07,
-0x1f, 0xe6, 0x0e, 0x06, 0x02, 0x09, 0x01, 0x02,
-0x03, 0xe5, 0xe6, 0xe5, 0x05, 0x01, 0x07, 0x06,
-0x30, 0x01, 0xe6, 0x14, 0x26, 0x07, 0xe5, 0x0a,
-0x04, 0x0e, 0x01, 0xe5, 0x03, 0x02, 0x10, 0x05,
-0x03, 0x04, 0xe5, 0x02, 0x03, 0x08, 0x07, 0x03,
-0x04, 0xe5, 0x0b, 0x03, 0x12, 0x06, 0x02, 0x05,
-0x03, 0xe5, 0x02, 0x04, 0x02, 0x32, 0xe7, 0xe5,
-0x63, 0x0e, 0x02, 0x22, 0x0f, 0x04, 0x02, 0x06,
-0x09, 0x09, 0x06, 0x0d, 0x05, 0x02, 0x04, 0x02,
-0x3b, 0x01, 0xe6, 0x24, 0x05, 0xe6, 0x06, 0xe6,
-0x10, 0xe6, 0x08, 0xe5, 0xe5, 0x03, 0x01, 0x23,
-0x03, 0x20, 0x03, 0x04, 0x07, 0xe6, 0xe5, 0x04,
-0x0d, 0x0b, 0x01, 0x03, 0x04, 0x0c, 0xe5, 0x0b,
-0x2a, 0xe9, 0x27, 0x02, 0x08, 0x0d, 0x01, 0x01,
-0x02, 0x0e, 0x06, 0x04, 0x14, 0x1e, 0x08, 0x14,
-0x02, 0x03, 0x06, 0x15, 0x01, 0x02, 0xe5, 0x0e,
-0x0b, 0x31, 0x01, 0xe6, 0x0f, 0x11, 0x12, 0xe6,
-0x19, 0x09, 0xe6, 0xe5, 0x06, 0x04, 0x04, 0x02,
-0x06, 0x07, 0x01, 0x03, 0x05, 0x03, 0x03, 0xe5,
-0x01, 0x09, 0x07, 0x06, 0x04, 0x04, 0x03, 0xe5,
-0x07, 0xe5, 0x08, 0x09, 0xe5, 0x07, 0x09, 0x09,
-0x02, 0x29, 0xe5, 0xe7, 0x1f, 0x01, 0x0a, 0x29,
-0x04, 0x01, 0xe5, 0x01, 0x03, 0x06, 0x02, 0x08,
-0xe5, 0x08, 0x09, 0x02, 0x03, 0x02, 0x06, 0x03,
-0xe6, 0xe6, 0x0a, 0x06, 0x06, 0x09, 0x02, 0x01,
-0x01, 0x02, 0x01, 0x07, 0xe6, 0x06, 0xe7, 0x02,
-0x02, 0xe6, 0x06, 0xe6, 0x2b, 0x01, 0x01, 0x24,
-0x2a, 0x07, 0x11, 0xe5, 0x07, 0xe6, 0x01, 0x04,
-0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe5, 0x02, 0x02,
-0xe5, 0x02, 0x01, 0x03, 0xe5, 0x0f, 0x05, 0xe5,
-0x06, 0x05, 0x01, 0x0c, 0x0b, 0x12, 0x36, 0xe7,
-0x11, 0x25, 0x05, 0xe5, 0x0e, 0x11, 0xe5, 0x01,
-0x1b, 0x02, 0xe6, 0x10, 0x02, 0x03, 0x02, 0x0a,
-0x09, 0x04, 0x0f, 0xe6, 0x06, 0xe6, 0x54, 0x02,
-0x3f, 0xe5, 0x16, 0x02, 0x2c, 0x10, 0x04, 0x31,
-0x08, 0x18, 0x3e, 0xe5, 0x20, 0x01, 0x02, 0x03,
-0x06, 0x09, 0x06, 0x12, 0x03, 0xe5, 0x01, 0x01,
-0xe5, 0x01, 0xe5, 0x01, 0x01, 0x05, 0xe6, 0xe5,
-0x06, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x02,
-0x06, 0x01, 0xe5, 0x07, 0x0c, 0x03, 0x02, 0x10,
-0xe5, 0xe5, 0x08, 0x09, 0x09, 0x06, 0xe5, 0xe5,
-0x04, 0x01, 0x01, 0x2d, 0xe5, 0xe5, 0x22, 0x07,
-0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0x06, 0x06,
-0x0b, 0x15, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x03, 0x05, 0x01, 0x04,
-0x01, 0x02, 0x1e, 0x0a, 0x06, 0xe5, 0x02, 0x03,
-0xe6, 0x06, 0xe6, 0x08, 0x03, 0x05, 0x2b, 0xe5,
-0x01, 0xe5, 0x21, 0x07, 0x22, 0x04, 0xe5, 0x02,
-0x09, 0x29, 0x19, 0xe5, 0x01, 0x0f, 0x1c, 0x02,
-0x01, 0x02, 0x06, 0x09, 0x07, 0x03, 0x05, 0x2c,
-0x02, 0xe7, 0x2c, 0x05, 0x03, 0x02, 0xe5, 0x04,
-0x0a, 0x08, 0x05, 0x03, 0x09, 0x05, 0x0d, 0x09,
-0x11, 0x03, 0x01, 0xe5, 0x12, 0xe5, 0xe5, 0x08,
-0x06, 0x01, 0x04, 0x09, 0x01, 0xe5, 0x05, 0x0c,
-0x01, 0x04, 0x32, 0xe5, 0x01, 0x01, 0x02, 0x01,
-0x2a, 0x05, 0xe5, 0x01, 0x02, 0xe5, 0x03, 0x06,
-0x0c, 0x06, 0xe7, 0x09, 0x05, 0x0d, 0x08, 0x12,
-0xe6, 0xe5, 0xe6, 0x01, 0xe5, 0x0e, 0x01, 0xe6,
-0x07, 0xe5, 0x04, 0xe5, 0x03, 0x09, 0x02, 0xe5,
-0x0b, 0xe5, 0x04, 0xe5, 0x0c, 0x27, 0x01, 0x03,
-0x01, 0xe5, 0x03, 0x19, 0xe5, 0x02, 0x04, 0xe5,
-0xe5, 0x05, 0x01, 0x02, 0x22, 0x01, 0xe5, 0x12,
-0x1a, 0xe5, 0x11, 0x01, 0xe5, 0x02, 0x11, 0x01,
-0x07, 0x01, 0x02, 0xe6, 0x01, 0x01, 0x15, 0x02,
-0x01, 0xe5, 0xe5, 0x03, 0xe5, 0x04, 0x2f, 0x04,
-0x02, 0xe5, 0x01, 0x1b, 0x02, 0x05, 0xe5, 0x01,
-0x06, 0xe5, 0xe5, 0x12, 0x15, 0x11, 0x1a, 0xe5,
-0x06, 0xe5, 0x0a, 0x02, 0x01, 0x0e, 0x02, 0x01,
-0x07, 0x01, 0x04, 0xe5, 0xe5, 0x1c, 0x01, 0x03,
-0xe5, 0x01, 0x0b, 0x29, 0x03, 0x01, 0xe5, 0x1e,
-0x01, 0x04, 0xe5, 0x01, 0x05, 0x06, 0xe5, 0xe5,
-0x02, 0x05, 0x09, 0x09, 0x06, 0x09, 0x02, 0x10,
-0x02, 0x06, 0x02, 0x10, 0x01, 0x02, 0xe5, 0xe7,
-0xe5, 0x01, 0x03, 0x05, 0x02, 0x01, 0x01, 0x02,
-0x01, 0x01, 0xe5, 0xe6, 0x04, 0xe5, 0xe5, 0x01,
-0x01, 0x01, 0x02, 0x03, 0x02, 0xe5, 0xe5, 0x01,
-0xe5, 0x01, 0x02, 0x10, 0x06, 0x02, 0x1e, 0x06,
-0xe8, 0x01, 0x1e, 0x03, 0x0a, 0x04, 0x02, 0x03,
-0xe6, 0x09, 0x04, 0x03, 0x0c, 0x01, 0x05, 0x04,
-0xe5, 0x01, 0x0a, 0x04, 0x01, 0x01, 0xe5, 0x03,
-0x10, 0x01, 0x01, 0x02, 0x01, 0xe5, 0xe5, 0xe5,
-0xe5, 0xe6, 0x09, 0x01, 0x01, 0x04, 0xe5, 0xe6,
-0x01, 0x01, 0xe6, 0xe5, 0xe5, 0x03, 0xe5, 0x05,
-0x01, 0xe5, 0x03, 0x01, 0x01, 0xe5, 0x02, 0x01,
-0x02, 0x08, 0x05, 0x02, 0x01, 0x22, 0x02, 0xe5,
-0xe7, 0x1f, 0x01, 0x01, 0xe5, 0x03, 0x0b, 0x02,
-0x16, 0x05, 0x02, 0x09, 0x04, 0x0e, 0x04, 0x09,
-0x07, 0x01, 0x02, 0x01, 0x01, 0x04, 0x01, 0x05,
-0x01, 0x01, 0x09, 0xe5, 0xe5, 0xe6, 0xe5, 0x03,
-0xe7, 0xe5, 0x06, 0x01, 0x05, 0x03, 0x02, 0x04,
-0x01, 0x02, 0x06, 0x07, 0x01, 0x30, 0x04, 0xe5,
-0xe5, 0xe5, 0x20, 0x04, 0x01, 0x02, 0x04, 0x04,
-0x02, 0xe6, 0x07, 0xe5, 0x03, 0x04, 0x01, 0x07,
-0x01, 0xe6, 0x01, 0x02, 0x01, 0xe7, 0x03, 0x09,
-0x01, 0xe5, 0xe5, 0x03, 0x04, 0x04, 0x04, 0x01,
-0x02, 0x01, 0x01, 0x02, 0x04, 0x04, 0x01, 0x02,
-0xe6, 0x06, 0x01, 0x02, 0x01, 0x01, 0xe5, 0xe5,
-0xe6, 0xe6, 0x05, 0x01, 0x01, 0xe5, 0x03, 0x04,
-0x04, 0x01, 0x02, 0x04, 0x09, 0x01, 0x02, 0x33,
-0xe8, 0x28, 0x0e, 0x09, 0x02, 0x02, 0x06, 0x01,
-0xe5, 0x19, 0x0b, 0x31, 0x09, 0x01, 0xe5, 0x02,
-0x09, 0x09, 0x0c, 0x02, 0x10, 0x09, 0x33, 0x02,
-0x28, 0x09, 0x0f, 0xe5, 0x01, 0x09, 0xe5, 0x07,
-0xe5, 0x04, 0xe5, 0x0a, 0x01, 0x04, 0x0c, 0x10,
-0x0b, 0x0e, 0x07, 0x05, 0xe5, 0x01, 0xe5, 0x0d,
-0xe5, 0x08, 0x02, 0x06, 0x02, 0x09, 0x01, 0x04,
-0x02, 0x01, 0x2f, 0x01, 0x01, 0xe5, 0x0d, 0x09,
-0x09, 0x03, 0x05, 0x05, 0xe5, 0x01, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0x09, 0x09, 0x09, 0x03, 0x05,
-0x09, 0x05, 0xe5, 0x01, 0x09, 0x04, 0x01, 0x04,
-0x09, 0x06, 0x02, 0x05, 0x03, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x07, 0x03, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x03, 0x05, 0x09, 0x09, 0x09,
-0x06, 0x06, 0xe5, 0xe5, 0xe5, 0x01, 0x2e, 0x02,
-0x09, 0x31, 0x12, 0xe5, 0x12, 0x0b, 0x08, 0x05,
-0x0b, 0x09, 0x02, 0x13, 0x09, 0x3a, 0xe5, 0x03,
-0x02, 0x01, 0xe6, 0x31, 0x0a, 0x05, 0x1d, 0x0d,
-0x13, 0x13, 0x07, 0x01, 0x1b, 0x0c, 0x06, 0x0d,
-0x07, 0x3c, 0x09, 0xe6, 0xe5, 0xe5, 0x1b, 0x04,
-0x02, 0x09, 0x07, 0x03, 0x05, 0xe6, 0x0a, 0x04,
-0x02, 0x01, 0x04, 0x02, 0x06, 0x02, 0x01, 0x07,
-0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x03, 0x02,
-0x01, 0x02, 0x04, 0x01, 0x09, 0x02, 0x01, 0x02,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0x07, 0xe7,
-0x03, 0x01, 0x02, 0x04, 0x01, 0x02, 0x06, 0x04,
-0x04, 0x02, 0x03, 0xe5, 0xe5, 0x29, 0x03, 0x01,
-0x1e, 0x04, 0x01, 0x09, 0x05, 0x03, 0x08, 0xe5,
-0x07, 0xe5, 0x06, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0x05, 0x03, 0x01, 0x05, 0x01, 0x09, 0x07,
-0x01, 0x01, 0x07, 0xe6, 0x03, 0xe5, 0xe7, 0x04,
-0x03, 0x04, 0xe5, 0xe7, 0x04, 0x01, 0x06, 0xe5,
-0xe7, 0x04, 0x01, 0x01, 0x01, 0x02, 0xe5, 0xe7,
-0xe5, 0x05, 0x08, 0x01, 0x01, 0x03, 0x01, 0xe5,
-0x2a, 0xe8, 0x26, 0x03, 0x05, 0x09, 0xe5, 0x03,
-0x07, 0x01, 0x03, 0xe5, 0x03, 0x09, 0x04, 0x22,
-0x09, 0x06, 0x02, 0x01, 0x04, 0x02, 0x01, 0x03,
-0xe5, 0x0b, 0x01, 0x07, 0x01, 0x04, 0x04, 0x09,
-0x03, 0x03, 0x01, 0x07, 0x01, 0x11, 0x01, 0x2d,
-0x02, 0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06,
-0xe6, 0x06, 0xe6, 0x01, 0x04, 0xe6, 0xe5, 0x04,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x04, 0xe6, 0x05,
-0xe6, 0xe5, 0x05, 0xe5, 0x06, 0xe6, 0x06, 0x01,
-0x03, 0x04, 0xe5, 0x04, 0x05, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x04,
-0xe6, 0xe6, 0x03, 0xe6, 0xe5, 0x04, 0xe6, 0xe5,
-0x04, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0x02, 0x23, 0xe5, 0x19, 0x02, 0x10,
-0x01, 0xe6, 0x07, 0xe5, 0x01, 0x01, 0x02, 0x05,
-0x0d, 0x05, 0x03, 0x05, 0x0d, 0x01, 0xe5, 0x05,
-0x01, 0x09, 0xe5, 0x05, 0x0b, 0x09, 0xe5, 0x05,
-0x01, 0x07, 0x01, 0x09, 0x09, 0x07, 0x2e, 0xe6,
-0xe5, 0x22, 0x1d, 0x11, 0x01, 0x13, 0x03, 0x02,
-0xe5, 0x07, 0x02, 0x03, 0x02, 0x09, 0x07, 0x01,
-0x04, 0xe5, 0x05, 0x01, 0x07, 0x09, 0x09, 0x09,
-0x09, 0x01, 0x07, 0x15, 0x07, 0x2f, 0xe5, 0xe5,
-0x23, 0x1a, 0x01, 0xe5, 0x11, 0x18, 0xe5, 0x07,
-0x09, 0xe5, 0x02, 0x03, 0x01, 0x0c, 0xe5, 0xe5,
-0x08, 0x0a, 0x12, 0x09, 0xe5, 0x07, 0x09, 0x09,
-0x11, 0x2e, 0x01, 0x01, 0x26, 0x09, 0x09, 0x04,
-0x01, 0x02, 0x09, 0x06, 0x02, 0x09, 0x09, 0xe5,
-0x02, 0x04, 0x01, 0x07, 0xe5, 0x07, 0x01, 0x07,
-0x01, 0x06, 0x02, 0x04, 0x01, 0x02, 0x09, 0x09,
-0x04, 0x09, 0x04, 0x04, 0x04, 0x04, 0x04, 0x13,
-0x04, 0x2e, 0x01, 0xe6, 0x20, 0xe5, 0xe6, 0x07,
-0x06, 0xe5, 0xe5, 0xe5, 0x07, 0x05, 0xe5, 0xe5,
-0x0f, 0x0d, 0xe5, 0x03, 0x01, 0xe6, 0x08, 0xe5,
-0x23, 0x0d, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0x02, 0x10, 0x01, 0xe5, 0x0f, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x0c, 0x1c, 0xe5, 0xe7, 0xe5,
-0x0e, 0x01, 0x07, 0x01, 0x04, 0x02, 0xe6, 0x06,
-0x01, 0x04, 0x02, 0x01, 0x01, 0x05, 0x01, 0x04,
-0x02, 0x01, 0x07, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0xe5, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x04, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x04,
-0x02, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x04,
-0x02, 0xe6, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0b, 0xe7,
-0x22, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x04, 0x06, 0x13, 0x02, 0x02, 0xe5, 0x11,
-0xe6, 0x0d, 0x0e, 0xe5, 0x01, 0x02, 0x01, 0x05,
-0x04, 0xe5, 0x07, 0xe5, 0x0f, 0xe5, 0xe5, 0x04,
-0x1f, 0x05, 0x03, 0x2e, 0xe5, 0xe6, 0x1f, 0x02,
-0x01, 0xe5, 0x01, 0xe5, 0x04, 0x03, 0x02, 0x06,
-0x11, 0x28, 0x09, 0x0f, 0x03, 0x03, 0x02, 0x0e,
-0xe5, 0x01, 0x04, 0x03, 0x11, 0x08, 0x06, 0xe5,
-0x4d, 0x01, 0x02, 0x23, 0x06, 0x01, 0x07, 0x01,
-0x05, 0x04, 0x02, 0x12, 0x0c, 0x02, 0x01, 0x06,
-0x05, 0x03, 0xe5, 0xe5, 0x05, 0x04, 0x04, 0x05,
-0x04, 0x02, 0x14, 0x07, 0x0c, 0x1d, 0x03, 0x01,
-0x07, 0x3b, 0xe8, 0x2a, 0xe7, 0x0f, 0x01, 0xe6,
-0x06, 0x03, 0x01, 0x01, 0x01, 0x07, 0x01, 0x28,
-0x06, 0x01, 0x04, 0x0e, 0x10, 0x02, 0xe7, 0x07,
-0x07, 0x01, 0x09, 0x07, 0xe5, 0x01, 0x01, 0xe5,
-0x03, 0x04, 0x0c, 0xe6, 0x2a, 0xe5, 0x01, 0xe5,
-0x2b, 0x13, 0xe5, 0x03, 0x03, 0x07, 0x02, 0x01,
-0x07, 0x05, 0x08, 0xe5, 0x08, 0x08, 0xe5, 0x08,
-0x04, 0x06, 0x0e, 0x0c, 0x01, 0x02, 0x02, 0x05,
-0x09, 0x02, 0x20, 0x3c, 0x01, 0x01, 0x1f, 0x0d,
-0x13, 0x08, 0xe5, 0x02, 0x03, 0x05, 0x03, 0x01,
-0x03, 0x04, 0xe5, 0x0c, 0x05, 0x03, 0x0a, 0x02,
-0x01, 0x03, 0x03, 0x02, 0xe5, 0x01, 0x25, 0x10,
-0x01, 0x11, 0x13, 0x2d, 0x04, 0x35, 0x01, 0xe5,
-0x05, 0xe7, 0x05, 0x02, 0xe5, 0x11, 0x1a, 0x13,
-0x05, 0x03, 0x01, 0x19, 0x02, 0x03, 0x13, 0x06,
-0x01, 0x07, 0x01, 0x05, 0x0a, 0x39, 0xe6, 0xe5,
-0x2d, 0x0f, 0x0a, 0x05, 0xe5, 0x0e, 0x01, 0xe6,
-0xe5, 0x0d, 0x03, 0x03, 0xe5, 0x0a, 0x06, 0xe7,
-0x03, 0x03, 0x0b, 0x0a, 0x01, 0x1e, 0x04, 0x01,
-0x12, 0x3e, 0xe5, 0xe6, 0x12, 0x0d, 0xe5, 0x10,
-0x08, 0x0f, 0x05, 0x08, 0x11, 0x02, 0xe5, 0x0f,
-0x01, 0xe5, 0x0f, 0x01, 0x09, 0x8b, 0x02, 0x21,
-0xe5, 0x0e, 0x09, 0x06, 0x02, 0x0c, 0x06, 0x18,
-0x04, 0x0e, 0x04, 0x09, 0x02, 0x55, 0x3e, 0xe5,
-0xe6, 0x2a, 0x01, 0x13, 0x02, 0x06, 0x04, 0x02,
-0x01, 0x0a, 0x03, 0xe5, 0x02, 0xe5, 0x04, 0x01,
-0x04, 0x03, 0x01, 0x03, 0x04, 0xe5, 0x05, 0xe5,
-0xe5, 0x12, 0x01, 0x13, 0x03, 0x09, 0x09, 0x05,
-0x03, 0x02, 0x02, 0x2b, 0x09, 0x13, 0xea, 0x22,
-0x04, 0xe5, 0x01, 0x11, 0xe6, 0x07, 0x0a, 0x05,
-0x0a, 0x02, 0x01, 0x09, 0x05, 0x01, 0x08, 0xe6,
-0x03, 0x01, 0x01, 0x0c, 0x08, 0x0a, 0x07, 0xe5,
-0x0b, 0x0e, 0x01, 0x08, 0x01, 0x40, 0x0c, 0x25,
-0x06, 0x02, 0x15, 0x0f, 0x03, 0x0d, 0xe5, 0x1c,
-0x0c, 0x10, 0x01, 0x11, 0x02, 0x0c, 0x0e, 0x03,
-0x4c, 0x06, 0x01, 0xe7, 0x1b, 0xe5, 0x04, 0x05,
-0x0f, 0xe5, 0x01, 0x03, 0x09, 0x09, 0x02, 0xe5,
-0x04, 0xe5, 0x07, 0x09, 0x05, 0x03, 0x01, 0xe5,
-0x01, 0x03, 0x05, 0x03, 0x01, 0xe5, 0x0a, 0xe5,
-0xe5, 0x02, 0x13, 0x09, 0x02, 0xe5, 0x07, 0xe5,
-0x03, 0xe8, 0x05, 0x09, 0x3c, 0x02, 0x01, 0xe5,
-0x01, 0x01, 0x19, 0xe5, 0x03, 0x06, 0xe5, 0x02,
-0x04, 0x09, 0xe5, 0x0b, 0x05, 0xe5, 0x01, 0x01,
-0xe5, 0x05, 0xe5, 0x07, 0x08, 0x06, 0x03, 0x02,
-0x01, 0xe5, 0x01, 0x06, 0x03, 0x01, 0xe5, 0x08,
-0xe6, 0x01, 0x03, 0xe5, 0x11, 0x09, 0x02, 0xe5,
-0x07, 0xe5, 0x06, 0xe5, 0x0f, 0x39, 0x02, 0xe5,
-0xe6, 0xe5, 0x03, 0x26, 0x01, 0x03, 0xe5, 0x01,
-0x04, 0x01, 0xe5, 0xe5, 0xe5, 0xe5, 0x01, 0xe5,
-0x0c, 0x04, 0xe5, 0xe5, 0x05, 0xe5, 0x14, 0x09,
-0x09, 0x0e, 0x06, 0x35, 0x02, 0xe5, 0xe5, 0x02,
-0x3d, 0xe5, 0x03, 0x04, 0xe6, 0xe5, 0x01, 0x25,
-0xe5, 0xe5, 0xe5, 0x02, 0xe5, 0x01, 0x06, 0xe5,
-0xe5, 0xe5, 0x03, 0x0c, 0x0f, 0xe5, 0x08, 0xe5,
-0x02, 0x07, 0x09, 0x09, 0x0c, 0x02, 0x05, 0x38,
-0x02, 0x41, 0xe5, 0x05, 0x02, 0x02, 0xe5, 0x25,
-0x04, 0x01, 0xe5, 0x04, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0xe5, 0x01, 0xe5, 0xe7, 0xe5, 0x08, 0x06,
-0xe5, 0xe5, 0x01, 0x01, 0x01, 0x05, 0x03, 0x05,
-0x01, 0x01, 0x0a, 0x04, 0x12, 0xe5, 0x05, 0x01,
-0x02, 0x09, 0x1d, 0x06, 0x05, 0x03, 0x02, 0x01,
-0x01, 0x02, 0x06, 0x38, 0x01, 0x01, 0xe5, 0x01,
-0x28, 0x01, 0xe5, 0x01, 0x01, 0xe6, 0xe5, 0xe5,
-0xe5, 0x01, 0xe5, 0xe5, 0xe5, 0x04, 0x06, 0x01,
-0xe5, 0x02, 0x01, 0x01, 0xe6, 0xe5, 0xe5, 0x01,
-0x01, 0x04, 0x01, 0x01, 0xe5, 0x03, 0x0f, 0x03,
-0x11, 0x02, 0x05, 0xe5, 0xe5, 0xe5, 0x2c, 0x08,
-0xe5, 0x02, 0x04, 0xe5, 0x05, 0xe6, 0x32, 0x03,
-0x02, 0xe8, 0x26, 0x02, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x09, 0x02, 0x04, 0x01,
-0x01, 0x07, 0x01, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x0b, 0x03, 0xe5, 0xe5, 0xe5, 0x0d, 0xe5, 0x03,
-0x01, 0x01, 0x01, 0x09, 0x02, 0x01, 0x05, 0x15,
-0x04, 0x05, 0x01, 0x01, 0x01, 0xe5, 0x01, 0x03,
-0x41, 0xe5, 0xe5, 0x24, 0xe5, 0x01, 0x01, 0x01,
-0xe5, 0x05, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x04, 0x04, 0x01, 0x02, 0x09, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x01, 0x05, 0x04, 0x04, 0x01,
-0x07, 0x06, 0x02, 0x03, 0x02, 0x01, 0x02, 0x09,
-0x01, 0x07, 0x12, 0xe5, 0xe6, 0xe5, 0x08, 0x04,
-0x04, 0x04, 0x40, 0xe5, 0x23, 0x09, 0x0c, 0x09,
-0xe5, 0x07, 0xe5, 0x11, 0xe5, 0x04, 0x09, 0x13,
-0x04, 0x15, 0x13, 0x07, 0x02, 0x06, 0x02, 0x03,
-0x04, 0x07, 0x02, 0x10, 0x02, 0x33, 0x04, 0x02,
-0x01, 0x24, 0xe5, 0x0b, 0x0b, 0x05, 0x08, 0x14,
-0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe5, 0x08, 0x08,
-0xe5, 0x08, 0x0b, 0x0a, 0x15, 0x09, 0xe5, 0x03,
-0xe5, 0x01, 0x06, 0x02, 0xe5, 0x07, 0xe5, 0x04,
-0x3e, 0xe5, 0x01, 0xe5, 0x0d, 0x09, 0x09, 0xe5,
-0x04, 0x02, 0xe5, 0x03, 0xe5, 0x01, 0x09, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x03, 0x02, 0x02,
-0xe6, 0xe6, 0xe5, 0x01, 0xe6, 0x06, 0x09, 0xe6,
-0x06, 0x04, 0x01, 0x04, 0xe5, 0x07, 0x09, 0x04,
-0x01, 0x02, 0x03, 0x02, 0x02, 0x09, 0xe5, 0x03,
-0x03, 0x09, 0x04, 0x01, 0x02, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0d, 0x01, 0x01, 0xe5, 0x01, 0x24,
-0x02, 0x06, 0x02, 0x12, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x05, 0x02, 0x04, 0x04, 0x09, 0x1d, 0x1f,
-0x08, 0xe5, 0x08, 0x1d, 0x43, 0x01, 0x01, 0x25,
-0x02, 0x0a, 0x13, 0x07, 0x09, 0x0a, 0x08, 0x0b,
-0x1d, 0x1f, 0x07, 0x0b, 0x05, 0x16, 0x45, 0xe5,
-0x01, 0x01, 0x1c, 0x05, 0xe6, 0x03, 0x01, 0xe5,
-0x04, 0xe5, 0xe5, 0x06, 0x01, 0x02, 0x03, 0xe5,
-0xe5, 0x01, 0x0d, 0x07, 0x05, 0xe6, 0x02, 0x03,
-0xe6, 0xe5, 0x06, 0x04, 0x02, 0xe6, 0x08, 0x06,
-0x01, 0xe7, 0x03, 0x01, 0x13, 0x04, 0x07, 0x01,
-0x05, 0xe6, 0x03, 0x04, 0x06, 0x02, 0x09, 0x3f,
-0xe6, 0x24, 0x05, 0x01, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0x01, 0x05, 0x01, 0xe6, 0xe5, 0x06, 0x08,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x04, 0x03,
-0x01, 0x03, 0x02, 0xe5, 0x01, 0x02, 0x03, 0x01,
-0x05, 0x01, 0xe6, 0xe5, 0x02, 0x01, 0xe6, 0x08,
-0x08, 0xe5, 0x08, 0x04, 0x03, 0xe5, 0x04, 0x02,
-0xe5, 0xe5, 0x04, 0x01, 0x09, 0x01, 0x35, 0x04,
-0x02, 0xe7, 0x26, 0x03, 0x01, 0x09, 0x04, 0x04,
-0x03, 0xe5, 0x01, 0x01, 0x13, 0x0a, 0x02, 0xe5,
-0x05, 0x02, 0x08, 0x03, 0x03, 0x11, 0x01, 0x07,
-0x01, 0x1d, 0x09, 0x03, 0x17, 0x42, 0x02, 0xe5,
-0x14, 0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe6, 0xe5,
-0x04, 0xe6, 0x06, 0xe5, 0x01, 0x05, 0xe6, 0x06,
-0xe5, 0x06, 0xe7, 0x06, 0xe5, 0x05, 0xe7, 0x06,
-0xe7, 0x06, 0xe6, 0x05, 0xe7, 0x06, 0xe5, 0x01,
-0x01, 0xe5, 0x03, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0x06, 0xe6, 0x01, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0x03, 0x04, 0xe5, 0x23, 0xe5, 0x04, 0x01,
-0x07, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x07,
-0x01, 0xe5, 0x04, 0x0d, 0xe5, 0x04, 0x02, 0x10,
-0x01, 0x13, 0x0b, 0x0a, 0x08, 0x11, 0x02, 0x06,
-0x0b, 0xe5, 0x49, 0x01, 0xe5, 0x2a, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x0a, 0x10, 0x05,
-0x02, 0x02, 0x04, 0xe7, 0x07, 0xe5, 0xe5, 0x03,
-0x01, 0xe5, 0x07, 0x04, 0x09, 0x0a, 0x1c, 0x07,
-0x0b, 0x43, 0x05, 0x02, 0xe6, 0x2c, 0x13, 0xe5,
-0x07, 0x07, 0x01, 0x04, 0x13, 0xe5, 0x03, 0x0e,
-0x01, 0x01, 0x05, 0x0c, 0xe5, 0x0a, 0x1b, 0x09,
-0x01, 0xe5, 0x12, 0x42, 0x06, 0x02, 0xe5, 0x25,
-0x04, 0x01, 0x13, 0x02, 0x04, 0x04, 0x07, 0x01,
-0x09, 0x09, 0xe5, 0xe6, 0x04, 0xe6, 0xe6, 0x03,
-0xe9, 0xe5, 0x01, 0xe9, 0x03, 0x01, 0x01, 0x04,
-0x02, 0x06, 0x02, 0x09, 0x09, 0x06, 0x02, 0x04,
-0x01, 0x02, 0x09, 0x09, 0x09, 0x3b, 0x02, 0x02,
-0x2b, 0xe5, 0xe5, 0x05, 0x01, 0xe5, 0x08, 0xe5,
-0x07, 0x10, 0x02, 0x09, 0xe5, 0x04, 0xe5, 0xe5,
-0x05, 0x01, 0xe5, 0x03, 0x03, 0xe6, 0x02, 0x01,
-0x45, 0x0e, 0x17, 0x1d, 0x0a, 0x0a, 0x01, 0x01,
-0x0f, 0x01, 0x07, 0x01, 0x07, 0x01, 0x03, 0x03,
-0x01, 0x04, 0x02, 0x01, 0x01, 0x05, 0x01, 0x07,
-0xe6, 0xe5, 0x04, 0x01, 0x07, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x01, 0x03, 0x01, 0x04, 0x02, 0xe6,
-0xe5, 0x03, 0xe5, 0xe5, 0x06, 0x01, 0xe6, 0x01,
-0x04, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x06, 0xe5, 0xe5, 0xe6,
-0x03, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x03, 0x07, 0xe7, 0x3e, 0x02, 0x06,
-0x01, 0xe5, 0x07, 0xe5, 0xe5, 0x01, 0xe7, 0xe5,
-0x01, 0x03, 0x0b, 0x01, 0xe5, 0x05, 0xe5, 0x09,
-0x06, 0xe6, 0x09, 0xe6, 0x06, 0x14, 0x04, 0x03,
-0xe5, 0x04, 0x02, 0xe5, 0xe5, 0x07, 0x05, 0x01,
-0x04, 0x04, 0xe5, 0x41, 0xe6, 0x14, 0x1b, 0x0b,
-0xe5, 0x04, 0x03, 0x14, 0x11, 0x02, 0xe5, 0x05,
-0x08, 0x03, 0xe5, 0x03, 0xe5, 0x01, 0x07, 0xe5,
-0x04, 0x09, 0x09, 0xe5, 0x01, 0x06, 0x0d, 0xe5,
-0x03, 0x0b, 0x02, 0x02, 0x04, 0x01, 0x3f, 0x01,
-0xe7, 0x1e, 0x05, 0x01, 0x0c, 0x03, 0x0a, 0xe5,
-0x04, 0x08, 0x01, 0x04, 0x06, 0x08, 0x0e, 0x03,
-0x04, 0x01, 0x09, 0x02, 0x05, 0xe6, 0x02, 0x03,
-0x05, 0x1b, 0x01, 0x06, 0x61, 0xe8, 0x24, 0x05,
-0xe5, 0x01, 0x02, 0x02, 0x08, 0x0c, 0x07, 0xe5,
-0x09, 0x09, 0x07, 0xe6, 0x05, 0x0c, 0x04, 0x10,
-0x05, 0x01, 0x01, 0x14, 0x06, 0x01, 0x01, 0x05,
-0xe6, 0x01, 0x09, 0x0e, 0xe6, 0x3a, 0x05, 0x01,
-0xe5, 0x37, 0x10, 0x03, 0x15, 0x03, 0x0a, 0x06,
-0x09, 0x15, 0x05, 0x05, 0x01, 0x03, 0x08, 0x0d,
-0x02, 0x08, 0x1d, 0x3d, 0x02, 0xe6, 0x01, 0x23,
-0x0a, 0x07, 0xe5, 0x02, 0x01, 0x03, 0x0d, 0x09,
-0x03, 0x01, 0x17, 0x0d, 0x05, 0x09, 0x02, 0xe5,
-0xe5, 0x24, 0x01, 0x01, 0x08, 0xe5, 0x03, 0x0e,
-0xe5, 0x47, 0x01, 0x02, 0x11, 0x0c, 0x02, 0xe5,
-0x02, 0x02, 0x07, 0x03, 0x02, 0x06, 0x02, 0x17,
-0x02, 0xe5, 0x0c, 0x04, 0x01, 0x0a, 0x0f, 0x03,
-0x06, 0x10, 0x01, 0x07, 0x0a, 0x03, 0x07, 0x0b,
-0x01, 0x02, 0x04, 0xe5, 0xe5, 0x31, 0x15, 0x01,
-0xe5, 0xe5, 0x20, 0x05, 0x0d, 0x09, 0x02, 0x16,
-0x03, 0x06, 0x1a, 0x0e, 0x05, 0x04, 0xe5, 0x27,
-0x02, 0x05, 0x14, 0x4d, 0x02, 0x47, 0x08, 0x12,
-0x03, 0xe5, 0x01, 0x05, 0xe6, 0x06, 0xe6, 0x0b,
-0xe5, 0x02, 0x07, 0x01, 0x07, 0x07, 0x0f, 0xe5,
-0x11, 0xe6, 0x10, 0xe6, 0x48, 0xe5, 0xe5, 0xe5,
-0x13, 0x39, 0x1a, 0x04, 0x04, 0x09, 0x0e, 0x02,
-0x09, 0x05, 0x19, 0xe5, 0x01, 0x11, 0x02, 0x01,
-0x06, 0x02, 0x04, 0x0d, 0x3c, 0x01, 0xe6, 0x27,
-0x09, 0x02, 0x01, 0x02, 0x21, 0x06, 0x04, 0x07,
-0x02, 0x09, 0x0a, 0x1b, 0x14, 0x01, 0x09, 0x04,
-0x02, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x04, 0xe5,
-0xe5, 0x48, 0xea, 0x09, 0x19, 0x11, 0x07, 0x01,
-0xe5, 0x03, 0x10, 0x02, 0x06, 0x0b, 0x03, 0x01,
-0x02, 0x04, 0xe5, 0x17, 0x0b, 0x08, 0x18, 0x0a,
-0x01, 0x07, 0x09, 0x35, 0x16, 0x01, 0x05, 0xe5,
-0x1d, 0x11, 0x03, 0x07, 0x13, 0x13, 0x10, 0x11,
-0x1f, 0x18, 0x06, 0x09, 0x04, 0x04, 0x02, 0x09,
-0x38, 0x05, 0xe6, 0xe7, 0x32, 0x0d, 0xe5, 0x25,
-0x12, 0xe5, 0x08, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x11, 0x13, 0x0c, 0xe5, 0xe5, 0x02, 0x05, 0x0d,
-0x46, 0x03, 0x01, 0x02, 0x01, 0x1d, 0x08, 0xe5,
-0x07, 0xe6, 0x03, 0xe5, 0x25, 0x01, 0x11, 0x01,
-0x0b, 0x02, 0x01, 0xe5, 0x04, 0x02, 0xe5, 0x10,
-0x0d, 0x01, 0x0a, 0x06, 0xe5, 0xe6, 0xe5, 0x05,
-0xe5, 0x0a, 0x44, 0x02, 0xe6, 0x01, 0xe5, 0x03,
-0x19, 0x01, 0x0c, 0x04, 0x01, 0x0a, 0x03, 0x0f,
-0x01, 0x04, 0x01, 0xe5, 0xe5, 0x0a, 0x12, 0xe6,
-0x05, 0x35, 0x01, 0xe5, 0x03, 0x04, 0xe5, 0xe5,
-0xe5, 0x06, 0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x3f,
-0x01, 0x02, 0x05, 0x02, 0x02, 0x28, 0x06, 0x08,
-0xe5, 0x01, 0x13, 0x01, 0x04, 0x02, 0x01, 0x1c,
-0x42, 0xe5, 0x01, 0x06, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x03, 0xe5, 0x01, 0x01, 0x40, 0xe5, 0x04,
-0x02, 0x01, 0xe6, 0x23, 0x05, 0x02, 0x05, 0xe5,
-0x06, 0x01, 0x02, 0x02, 0xe5, 0x01, 0x12, 0x01,
-0x06, 0x01, 0x05, 0x06, 0x06, 0x03, 0xe5, 0x06,
-0x06, 0x34, 0x01, 0x05, 0xe6, 0xe5, 0x01, 0xe5,
-0xe7, 0xe6, 0x02, 0x01, 0x03, 0x05, 0x42, 0xe7,
-0xe5, 0x01, 0x26, 0x01, 0x03, 0x03, 0x01, 0x03,
-0x02, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x0e, 0x09,
-0x02, 0x01, 0x0e, 0x01, 0x01, 0xe5, 0x02, 0x0d,
-0xe6, 0x33, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01,
-0x04, 0xe5, 0xe6, 0x01, 0x02, 0x02, 0xe5, 0x03,
-0x3e, 0x03, 0x01, 0x01, 0x01, 0xe5, 0x2b, 0x11,
-0x01, 0x01, 0x0f, 0x01, 0x07, 0x01, 0x02, 0xe6,
-0x05, 0x07, 0x0a, 0x08, 0x19, 0xe5, 0x1f, 0x01,
-0x07, 0x01, 0x01, 0xe5, 0x01, 0x01, 0x01, 0x07,
-0x01, 0x4a, 0x01, 0xe6, 0x2a, 0x13, 0x04, 0x0e,
-0x01, 0x07, 0x01, 0x02, 0x09, 0x15, 0x01, 0x05,
-0x33, 0x04, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x4b, 0xe5, 0x26, 0x13,
-0xe5, 0x07, 0x02, 0x06, 0x13, 0xe5, 0x04, 0x0c,
-0x02, 0x26, 0x02, 0x06, 0x13, 0x02, 0x06, 0x02,
-0x06, 0xe5, 0x04, 0x09, 0x02, 0xe5, 0x43, 0x04,
-0x28, 0x01, 0x1b, 0xe5, 0x07, 0x01, 0x11, 0x05,
-0xe5, 0x0b, 0xe5, 0x03, 0x0a, 0x02, 0x06, 0x0b,
-0x0e, 0x0e, 0x02, 0x11, 0x01, 0xe5, 0x07, 0x06,
-0x02, 0x46, 0x02, 0xe5, 0x0d, 0x09, 0x06, 0x02,
-0x03, 0x05, 0x09, 0x02, 0x03, 0x02, 0x09, 0x03,
-0x05, 0x02, 0x03, 0x02, 0x03, 0x05, 0xe6, 0x06,
-0x02, 0x03, 0x02, 0xe5, 0x07, 0x05, 0x03, 0x0b,
-0x09, 0x09, 0x09, 0x03, 0x05, 0x09, 0x06, 0x02,
-0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0x01, 0x02, 0x02, 0x1c,
-0xe5, 0x12, 0x08, 0xe5, 0x08, 0x12, 0xe5, 0x1b,
-0x3e, 0x1c, 0x0a, 0x4d, 0xe5, 0x01, 0x1f, 0x11,
-0x0a, 0x09, 0x12, 0x39, 0x0b, 0x17, 0x05, 0x1f,
-0x51, 0x01, 0xe5, 0x23, 0x12, 0x07, 0x01, 0x09,
-0x11, 0x01, 0x0a, 0xe6, 0x03, 0x01, 0x04, 0x02,
-0x02, 0x0b, 0x01, 0x07, 0x06, 0x01, 0x02, 0x09,
-0x0e, 0x04, 0x03, 0xe5, 0xe5, 0x03, 0x02, 0x01,
-0x02, 0x04, 0x01, 0xe5, 0x02, 0x05, 0x01, 0x47,
-0xe5, 0x01, 0x35, 0x01, 0xe5, 0x05, 0x01, 0xe6,
-0x04, 0x02, 0x0d, 0x01, 0xe5, 0xe7, 0x08, 0x04,
-0xe5, 0xe6, 0x05, 0x02, 0x03, 0x06, 0x01, 0x07,
-0x07, 0x01, 0xe6, 0x03, 0x03, 0xe5, 0x0e, 0x02,
-0xe5, 0x04, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x09, 0x01, 0x41, 0x04, 0x01, 0xe6, 0xe6,
-0x21, 0x13, 0x07, 0x01, 0x03, 0x03, 0x01, 0x11,
-0x0c, 0x06, 0x09, 0x09, 0x01, 0x1d, 0x01, 0x0e,
-0x01, 0x06, 0x02, 0x02, 0x04, 0x04, 0x07, 0x01,
-0x4a, 0x09, 0x03, 0x15, 0xe5, 0x07, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe5, 0x05, 0xe5, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x09, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x03, 0x01, 0xe5,
-0x01, 0x37, 0x0a, 0x06, 0x01, 0x0a, 0x06, 0x01,
-0xe5, 0x08, 0xe5, 0x04, 0x01, 0xe5, 0x05, 0x02,
-0x1c, 0x01, 0x1e, 0x06, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x54, 0x01, 0xe6, 0x34, 0x01, 0x07, 0x09,
-0x01, 0x11, 0x01, 0x0d, 0x02, 0xe5, 0xe6, 0x08,
-0x1c, 0x01, 0x1b, 0x02, 0x06, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x09, 0x43, 0x05, 0x02, 0xe6, 0x36,
-0x0a, 0x06, 0x01, 0x0a, 0x06, 0x01, 0xe5, 0x0c,
-0xe7, 0x08, 0x1e, 0x0a, 0x01, 0x27, 0x09, 0x4d,
-0x06, 0x01, 0xe6, 0x34, 0x01, 0x0c, 0x04, 0x01,
-0x0a, 0x06, 0x01, 0xe5, 0xe5, 0x08, 0xe5, 0x02,
-0x02, 0x09, 0x0b, 0x09, 0x0b, 0x04, 0x01, 0x02,
-0x13, 0x10, 0x02, 0x04, 0x01, 0x0c, 0x45, 0x01,
-0x01, 0xe6, 0x20, 0x01, 0xe5, 0x11, 0xe5, 0x05,
-0xe5, 0xe5, 0x13, 0x05, 0x27, 0xe5, 0xe5, 0x39,
-0xe5, 0xe5, 0x19, 0x4d, 0x02, 0x11, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0xe5, 0x01, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0xe5, 0x04, 0xe5, 0xe7,
-0x04, 0x01, 0x01, 0x05, 0x01, 0x01, 0x01, 0x03,
-0x01, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0x02, 0x03,
-0xe5, 0xe5, 0x06, 0x01, 0x02, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x03, 0x03, 0x01, 0x02, 0x04, 0xe6,
-0x06, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x06, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0x0a, 0x02, 0xe5, 0x21,
-0x05, 0x19, 0x0c, 0x05, 0x03, 0x05, 0xe5, 0x09,
-0xe5, 0x07, 0x01, 0xe6, 0x06, 0x05, 0xe5, 0x18,
-0x01, 0x31, 0x4d, 0x09, 0xe5, 0xe7, 0x28, 0x15,
-0x01, 0x0a, 0x04, 0x0a, 0x01, 0xe5, 0x02, 0x0a,
-0x14, 0x01, 0x11, 0x01, 0x24, 0x09, 0x12, 0x50,
-0xe5, 0xe5, 0xe5, 0x25, 0x03, 0x09, 0x19, 0x01,
-0xe5, 0x01, 0x0b, 0x0e, 0x05, 0x01, 0x07, 0x07,
-0x11, 0x09, 0x09, 0x06, 0x7a, 0x02, 0x35, 0x01,
-0x01, 0x04, 0xe5, 0x08, 0x01, 0x0b, 0x03, 0x01,
-0x0c, 0x03, 0x0c, 0x01, 0xe5, 0x05, 0xe5, 0xe6,
-0x07, 0x03, 0x16, 0x0d, 0x07, 0xe6, 0x12, 0x4f,
-0x06, 0xe7, 0x1e, 0x17, 0xe5, 0x06, 0x03, 0x03,
-0x01, 0x13, 0x18, 0x03, 0xe5, 0x01, 0x0c, 0x0b,
-0x2a, 0x13, 0x51, 0x02, 0xe6, 0xe7, 0x12, 0x04,
-0x08, 0xe5, 0x10, 0x07, 0xe5, 0x0f, 0x07, 0x08,
-0x12, 0x02, 0x02, 0x05, 0x08, 0x08, 0x03, 0x03,
-0x03, 0xe5, 0x0d, 0x0b, 0x16, 0x0c, 0x2a, 0x24,
-0x01, 0x01, 0xe6, 0x15, 0x06, 0x02, 0x21, 0xe5,
-0x03, 0x13, 0x01, 0x0c, 0x03, 0xe5, 0x0b, 0x09,
-0x02, 0x04, 0x01, 0x06, 0x01, 0xe5, 0x28, 0x0f,
-0x10, 0x07, 0x3d, 0xe9, 0x13, 0x02, 0x02, 0xe5,
-0x04, 0x10, 0x11, 0x06, 0x0b, 0x0c, 0x0c, 0x02,
-0x17, 0x0c, 0xe6, 0x0f, 0x09, 0x6e, 0x0b, 0xe6,
-0x07, 0x21, 0x0c, 0x07, 0x02, 0x15, 0x08, 0x04,
-0xe7, 0x0c, 0x03, 0x02, 0x01, 0x06, 0x02, 0x04,
-0x01, 0x06, 0x01, 0xe7, 0x1f, 0x0b, 0x0b, 0x07,
-0x04, 0x48, 0xe9, 0x2a, 0x0d, 0x07, 0x04, 0x09,
-0x19, 0x03, 0x0e, 0x0c, 0x06, 0x07, 0x04, 0xe5,
-0xe5, 0x31, 0x02, 0x03, 0x53, 0x01, 0xe5, 0x18,
-0x09, 0x0c, 0x06, 0x10, 0x0a, 0x01, 0x04, 0xe5,
-0xe5, 0xe5, 0xe5, 0x01, 0x06, 0x02, 0x04, 0x2b,
-0x07, 0x07, 0x01, 0x33, 0x47, 0x02, 0xe6, 0x09,
-0x17, 0x32, 0x09, 0x06, 0x18, 0xe5, 0x06, 0x1e,
-0xe5, 0x07, 0x32, 0x04, 0x45, 0x02, 0x17, 0x1d,
-0x1f, 0x01, 0x07, 0x04, 0x0c, 0x2d, 0x05, 0x01,
-0x09, 0x17, 0x0a, 0x59, 0x01, 0x01, 0x01, 0x19,
-0x09, 0x09, 0xe5, 0x03, 0x02, 0x0a, 0x0f, 0x02,
-0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x28,
-0xe5, 0x32, 0xe5, 0x04, 0x4e, 0x01, 0x03, 0x01,
-0x02, 0x01, 0x16, 0x09, 0x08, 0x13, 0x10, 0x03,
-0x09, 0x05, 0x02, 0x01, 0x01, 0xe5, 0x0a, 0xe5,
-0x07, 0x18, 0x35, 0xe5, 0x55, 0x02, 0x01, 0xe5,
-0x03, 0x0f, 0x01, 0x02, 0x04, 0xe5, 0x11, 0x01,
-0xe5, 0xe5, 0x0d, 0x01, 0x0a, 0x04, 0x0a, 0xe5,
-0x0d, 0x01, 0x07, 0x5d, 0x53, 0xe5, 0xe6, 0xe5,
-0x10, 0xe5, 0xe5, 0x05, 0x13, 0x02, 0x01, 0x0e,
-0x0c, 0x10, 0x0c, 0x09, 0x09, 0xa2, 0x02, 0x01,
-0x01, 0xe8, 0x1a, 0x02, 0x03, 0x02, 0x01, 0x01,
-0x08, 0x13, 0x0a, 0xe5, 0x08, 0x06, 0xe6, 0x05,
-0x02, 0x09, 0x02, 0x03, 0x02, 0x09, 0xe5, 0xe5,
-0x0a, 0x3e, 0x50, 0xe5, 0xe5, 0xe6, 0xe5, 0x01,
-0x11, 0x04, 0x01, 0x01, 0xe5, 0x03, 0x03, 0x0e,
-0x02, 0x01, 0x0e, 0x01, 0x01, 0xe6, 0x02, 0x09,
-0x02, 0x01, 0xe5, 0x02, 0x04, 0x04, 0x02, 0xe7,
-0x02, 0x02, 0x01, 0xe5, 0x01, 0x04, 0x01, 0x01,
-0x01, 0x09, 0x8a, 0x03, 0xe6, 0xe8, 0x17, 0x04,
-0x02, 0x04, 0x02, 0x0b, 0x01, 0x02, 0x0e, 0x09,
-0x09, 0x11, 0x08, 0x04, 0x0a, 0x06, 0x01, 0x04,
-0x06, 0x3d, 0x52, 0x01, 0xe7, 0x1a, 0x01, 0xe6,
-0x01, 0x02, 0x09, 0x04, 0x01, 0x04, 0x01, 0x0c,
-0x07, 0x1a, 0x01, 0x07, 0xe5, 0xe5, 0x05, 0x02,
-0x06, 0x01, 0xe5, 0xe5, 0x02, 0xe6, 0x04, 0x02,
-0x3b, 0x01, 0x01, 0x4c, 0x02, 0x01, 0x1a, 0x02,
-0x02, 0x1a, 0x02, 0x06, 0xe5, 0x07, 0x02, 0x1a,
-0x02, 0x06, 0x01, 0xe5, 0x07, 0x04, 0x02, 0xe5,
-0x4c, 0x53, 0x03, 0x1b, 0x20, 0x09, 0x09, 0x1d,
-0x10, 0x08, 0xe5, 0x01, 0x06, 0x0b, 0x3a, 0xe5,
-0x51, 0xe9, 0x0d, 0x06, 0x02, 0x01, 0x07, 0x06,
-0x02, 0x06, 0x02, 0x03, 0x05, 0x03, 0x02, 0x02,
-0x05, 0x03, 0x04, 0x01, 0x02, 0x02, 0x06, 0x03,
-0x05, 0x09, 0x04, 0x01, 0x02, 0xe5, 0x01, 0x05,
-0x02, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0xe6, 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x06, 0x01, 0xe5, 0xe5, 0x01, 0x12, 0xe5,
-0x08, 0x06, 0x02, 0x08, 0xe5, 0x11, 0xe5, 0x1c,
-0x1d, 0xa0, 0x08, 0xe5, 0xe6, 0x14, 0x09, 0x08,
-0x0a, 0x13, 0x1b, 0x1b, 0x01, 0x11, 0x9c, 0x01,
-0x1a, 0xe6, 0xe5, 0x06, 0x04, 0x09, 0x0e, 0x04,
-0x01, 0x09, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x0c, 0x07, 0x01, 0x03, 0xe5, 0x03, 0x0b, 0x06,
-0x09, 0x28, 0xe6, 0x54, 0x17, 0x01, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0xe5, 0x02, 0x06, 0x05,
-0x01, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x04,
-0xe5, 0xe6, 0x02, 0x02, 0x01, 0xe5, 0x09, 0x08,
-0xe5, 0xe5, 0x04, 0xe6, 0x01, 0x08, 0x01, 0x05,
-0xe5, 0x07, 0xe5, 0x27, 0x52, 0xe5, 0xe6, 0x13,
-0x04, 0x01, 0x02, 0x0c, 0x09, 0x09, 0x09, 0x0b,
-0x07, 0x01, 0x07, 0x09, 0x13, 0x01, 0x07, 0x11,
-0x02, 0x02, 0x06, 0x02, 0x22, 0x06, 0x01, 0x52,
-0xe6, 0x14, 0xe6, 0x06, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x03, 0x01, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x03, 0xe8, 0x05, 0xe6, 0x05,
-0x01, 0xe6, 0xe5, 0x02, 0xe7, 0x01, 0x04, 0xe6,
-0x09, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0xe5, 0x18, 0x11, 0x1d, 0x01, 0x03, 0x03, 0x01,
-0x07, 0x01, 0x07, 0x01, 0xe6, 0x04, 0x01, 0xe6,
-0x07, 0x13, 0x0a, 0x09, 0x09, 0x28, 0x54, 0x02,
-0x17, 0x0b, 0x09, 0x1b, 0x01, 0x05, 0x01, 0x01,
-0x09, 0x07, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x05,
-0x03, 0x02, 0x02, 0x09, 0x03, 0x03, 0x01, 0x02,
-0x0b, 0x09, 0x28, 0x4c, 0x05, 0xe6, 0xe6, 0x0b,
-0x0c, 0x11, 0x13, 0x09, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x05, 0x01, 0x01, 0x06, 0x0a, 0x01,
-0x05, 0xe6, 0x0b, 0x02, 0x09, 0x09, 0x75, 0x06,
-0x03, 0x17, 0x04, 0x06, 0x02, 0x06, 0x02, 0x10,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x09, 0x09, 0xe5,
-0x02, 0xe7, 0x01, 0x05, 0x05, 0xe5, 0xe6, 0x01,
-0x02, 0xe8, 0x04, 0x01, 0x01, 0x02, 0x04, 0x06,
-0x09, 0x2a, 0x4f, 0x01, 0xe5, 0x01, 0xe5, 0x15,
-0xe5, 0xe5, 0x19, 0x02, 0x1a, 0xe5, 0xe5, 0x05,
-0x09, 0x02, 0x04, 0x15, 0x04, 0x11, 0x01, 0x90,
-0x01, 0xe5, 0x10, 0x01, 0x04, 0x02, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x02, 0x03, 0xe5, 0xe5, 0x02, 0x03, 0x01, 0xe5,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01, 0x01,
-0x02, 0x04, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x06, 0xe5, 0xe5, 0x06,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0c,
-0xe6, 0x19, 0x08, 0x10, 0xe5, 0x18, 0x05, 0xe5,
-0x06, 0xe6, 0x05, 0xe5, 0x0d, 0x0c, 0x01, 0xe7,
-0x03, 0x04, 0x02, 0x08, 0x8e, 0xe5, 0xe7, 0x14,
-0xe5, 0x0d, 0x17, 0x0e, 0xe5, 0x01, 0x02, 0xe5,
-0xe5, 0x02, 0x07, 0x10, 0xe5, 0x03, 0x03, 0x07,
-0x1a, 0xe5, 0x08, 0x80, 0x01, 0x02, 0x22, 0x11,
-0x21, 0x02, 0x03, 0x01, 0x0a, 0x05, 0x09, 0x06,
-0x05, 0x05, 0x0a, 0xe5, 0x19, 0x0c, 0x05, 0x20,
-0x46, 0x02, 0x0a, 0x0e, 0xe5, 0x2f, 0x07, 0x01,
-0x18, 0x15, 0x02, 0x09, 0x09, 0xe6, 0x05, 0x7f,
-0x03, 0x04, 0xe5, 0xe7, 0x17, 0x30, 0x0b, 0x01,
-0x03, 0x2a, 0x12, 0x01, 0x04, 0x0a, 0x09, 0x72,
-0x05, 0xe5, 0x01, 0x3b, 0x13, 0x02, 0xe5, 0x01,
-0x1b, 0xe5, 0x09, 0x03, 0x08, 0xe5, 0x01, 0x03,
-0x05, 0x0c, 0xe5, 0x0c, 0x07, 0x01, 0x05, 0x02,
-0x21, 0x05, 0x13, 0x28, 0xe5, 0xe5, 0xe5, 0x09,
-0x19, 0x04, 0x11, 0x08, 0x1d, 0x02, 0x04, 0x06,
-0x01, 0xe5, 0x02, 0x09, 0x02, 0x02, 0x09, 0x06,
-0x04, 0x06, 0x01, 0x06, 0x05, 0x0e, 0x04, 0x11,
-0x0a, 0x0a, 0x0a, 0x2c, 0x05, 0x02, 0xe5, 0xe5,
-0x41, 0x01, 0x07, 0x01, 0x01, 0x07, 0xe5, 0x07,
-0x09, 0x16, 0x03, 0xe5, 0x0d, 0x06, 0x15, 0x0e,
-0xe5, 0x66, 0xe5, 0xe6, 0x05, 0x2b, 0x26, 0x0e,
-0x04, 0x03, 0x09, 0xe5, 0x03, 0x07, 0x01, 0x01,
-0x07, 0x03, 0xe5, 0x0c, 0x27, 0x10, 0x4c, 0x01,
-0xe6, 0x38, 0x0d, 0x13, 0x0a, 0x03, 0x06, 0x0c,
-0x1a, 0x47, 0x4c, 0x02, 0xe5, 0x04, 0x36, 0x0f,
-0x12, 0x1c, 0x03, 0x08, 0x01, 0x09, 0x13, 0x17,
-0x0f, 0x5b, 0x02, 0x01, 0xe5, 0x04, 0x4b, 0x16,
-0x01, 0x09, 0x09, 0x05, 0x01, 0x19, 0x82, 0x0a,
-0xe7, 0x04, 0x03, 0x3c, 0x16, 0x0b, 0x24, 0x04,
-0x10, 0x8b, 0xe6, 0xe5, 0x46, 0x0d, 0x0c, 0xe5,
-0xe5, 0x02, 0x08, 0xe5, 0xe6, 0x05, 0x02, 0xe5,
-0xe5, 0x02, 0x01, 0xe5, 0x06, 0x14, 0x4e, 0xe5,
-0x31, 0x01, 0x02, 0xe6, 0xe5, 0xe5, 0x45, 0x0b,
-0x0f, 0x0c, 0x02, 0xe5, 0x07, 0xe5, 0x01, 0xe6,
-0x03, 0xe5, 0xe6, 0x17, 0x48, 0x01, 0x34, 0x02,
-0x03, 0xe6, 0x03, 0x44, 0x06, 0xe5, 0xe5, 0xe5,
-0x01, 0x0e, 0x03, 0x02, 0x01, 0x0a, 0x01, 0x01,
-0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x06, 0x67, 0x29,
-0xe5, 0x03, 0x04, 0x01, 0xe6, 0x01, 0x48, 0x07,
-0x01, 0x04, 0x0c, 0x06, 0x09, 0x02, 0x01, 0x04,
-0xe5, 0xe5, 0xe5, 0x06, 0x93, 0xe5, 0x05, 0x05,
-0xe6, 0x47, 0x04, 0x0c, 0x08, 0x01, 0xe5, 0x03,
-0x02, 0x01, 0x07, 0x06, 0x09, 0x03, 0x02, 0x02,
-0xe5, 0x01, 0x0c, 0x1d, 0x01, 0x67, 0x02, 0x01,
-0x02, 0x06, 0x02, 0x3e, 0x02, 0x01, 0x01, 0x04,
-0x09, 0x02, 0x01, 0xe5, 0x02, 0x05, 0x03, 0x09,
-0x09, 0x03, 0x01, 0x03, 0x02, 0x01, 0x0c, 0x1d,
-0x01, 0x01, 0x64, 0x02, 0xe8, 0x47, 0x09, 0x01,
-0x07, 0x09, 0x03, 0x0f, 0x01, 0x01, 0x07, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x01, 0xe5, 0x0d, 0x1d,
-0x01, 0x6a, 0xe6, 0x4a, 0x07, 0x01, 0x02, 0x06,
-0x07, 0x04, 0x0e, 0x01, 0x02, 0x04, 0x04, 0xe6,
-0x01, 0x05, 0xe5, 0x0d, 0x04, 0x18, 0x01, 0x6a,
-0xe7, 0x57, 0xe5, 0x07, 0xe5, 0x11, 0x02, 0x10,
-0x06, 0x9a, 0xe6, 0xe6, 0x4c, 0xe5, 0x0a, 0x09,
-0x13, 0xe5, 0x0e, 0x02, 0x01, 0x03, 0xe5, 0x14,
-0x85, 0x02, 0xe5, 0x0d, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x06, 0x02, 0x06, 0x02, 0x03, 0x05, 0x03,
-0x05, 0x09, 0x09, 0x09, 0x02, 0x02, 0x03, 0xe6,
-0x08, 0x06, 0x02, 0x09, 0x06, 0x02, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x06, 0xe7, 0xe5, 0x01, 0x44, 0xe5, 0x03,
-0x01, 0x02, 0x4e, 0x02, 0x12, 0xe5, 0x69, 0x02,
-0x07, 0x01, 0xe6, 0x46, 0x08, 0x38, 0x18, 0x13,
-0x6c, 0x0a, 0xe6, 0xe5, 0x3d, 0xe5, 0xe5, 0x03,
-0x02, 0x01, 0x09, 0x13, 0x07, 0x01, 0x0e, 0x02,
-0x01, 0x02, 0x04, 0x01, 0xe6, 0x12, 0x02, 0x10,
-0x73, 0x01, 0xe5, 0x3e, 0x01, 0xe5, 0x07, 0xe6,
-0xe5, 0x02, 0x02, 0xe5, 0x07, 0x08, 0xe6, 0x03,
-0xe5, 0xe6, 0x09, 0x04, 0xe5, 0xe7, 0x04, 0x01,
-0xe6, 0x10, 0x03, 0x01, 0x0d, 0x02, 0x72, 0xe7,
-0x3e, 0x01, 0x07, 0x01, 0x06, 0x06, 0x05, 0x09,
-0x1b, 0x06, 0x01, 0xe5, 0xe5, 0x14, 0x03, 0x0c,
-0x02, 0x3f, 0x32, 0xe5, 0x01, 0x15, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x01, 0x04, 0x01, 0x07, 0xe6,
-0x05, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0xe6, 0x02,
-0xe6, 0x09, 0xe6, 0x06, 0xe5, 0x07, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe6, 0xe5,
-0x48, 0x01, 0x17, 0x03, 0x01, 0xe5, 0x05, 0x01,
-0x0a, 0x06, 0x01, 0xe6, 0x07, 0xe5, 0x01, 0x24,
-0x28, 0x4b, 0x01, 0x49, 0x01, 0x19, 0x01, 0x01,
-0xe5, 0x04, 0xe5, 0xe5, 0x05, 0x03, 0x05, 0xe5,
-0xe5, 0x05, 0x09, 0x20, 0x2a, 0x4c, 0xe5, 0x48,
-0x01, 0x1b, 0x01, 0x04, 0xe7, 0xe5, 0x03, 0x01,
-0x06, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x08, 0x01,
-0x20, 0x72, 0xe8, 0x48, 0x01, 0x02, 0x09, 0x0e,
-0x01, 0x02, 0xe5, 0x02, 0x01, 0x0c, 0x01, 0x02,
-0x04, 0xe6, 0x06, 0x15, 0x0e, 0x2a, 0x49, 0x02,
-0xe5, 0x56, 0x0f, 0x01, 0xe5, 0x05, 0x2e, 0x05,
-0x01, 0x17, 0x60, 0x0d, 0xe7, 0xe5, 0x0e, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0xe6, 0xe5, 0x02, 0x01, 0x04, 0x02, 0x01,
-0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0xe5, 0x05,
-0x01, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x0a, 0xe8, 0x0b, 0x30, 0x11, 0x09, 0x16, 0x06,
-0x2f, 0x0f, 0x77, 0xe5, 0xe6, 0x1c, 0x0b, 0x12,
-0x0a, 0x09, 0x07, 0x23, 0x0e, 0x07, 0xe5, 0x0c,
-0x09, 0x05, 0x5c, 0x1b, 0xe9, 0x3c, 0x05, 0x13,
-0x2b, 0x04, 0x10, 0x06, 0x06, 0x35, 0x11, 0x0c,
-0x32, 0x02, 0x0a, 0x34, 0x01, 0xe5, 0x01, 0x05,
-0xe5, 0x05, 0xe7, 0x05, 0x02, 0x06, 0x01, 0xe5,
-0x02, 0x02, 0x02, 0x17, 0xe5, 0xe5, 0xe5, 0x12,
-0xe6, 0x0b, 0x0c, 0x10, 0x5a, 0x01, 0xe7, 0x3f,
-0xe5, 0xe5, 0xe5, 0x02, 0x0f, 0x01, 0x03, 0x06,
-0x01, 0xe5, 0x05, 0x02, 0x0d, 0x01, 0x0b, 0x02,
-0x03, 0x02, 0x0b, 0x12, 0x04, 0x02, 0x29, 0x0f,
-0x33, 0x01, 0xe6, 0x3a, 0x05, 0x0f, 0x01, 0x06,
-0x07, 0x05, 0xe5, 0x1b, 0xe5, 0x08, 0x03, 0x03,
-0x03, 0x10, 0x05, 0x3b, 0x09, 0x03, 0x1b, 0x06,
-0x0b, 0x01, 0x01, 0xe5, 0x0b, 0x23, 0x0e, 0x04,
-0x11, 0x10, 0x02, 0x04, 0x06, 0x09, 0x04, 0x03,
-0x05, 0x01, 0xe5, 0x02, 0x02, 0x02, 0x0b, 0x0e,
-0x04, 0xe5, 0x11, 0x0c, 0x06, 0x4d, 0x05, 0x39,
-0x02, 0x03, 0x07, 0x0b, 0x0c, 0x0d, 0x02, 0x07,
-0xe5, 0x04, 0x02, 0x01, 0x05, 0x01, 0x04, 0xe5,
-0x04, 0x15, 0x31, 0xe5, 0x36, 0x10, 0x05, 0x47,
-0x03, 0x07, 0x04, 0x06, 0x05, 0x01, 0x02, 0xe6,
-0xe5, 0x04, 0x07, 0x01, 0x04, 0x04, 0x06, 0x03,
-0x01, 0xe6, 0x10, 0x01, 0x3a, 0x13, 0x0d, 0x04,
-0xe6, 0x17, 0x01, 0xe6, 0x04, 0x49, 0x10, 0xe5,
-0x02, 0x08, 0x04, 0x15, 0x0f, 0x03, 0x4e, 0x15,
-0x13, 0x19, 0xe6, 0x04, 0x39, 0x01, 0x04, 0x06,
-0x04, 0x02, 0x1a, 0xe7, 0x12, 0x15, 0x19, 0x1b,
-0x09, 0x26, 0x29, 0x02, 0xe6, 0x04, 0x3a, 0x11,
-0xe6, 0x14, 0xe5, 0x03, 0x01, 0x01, 0x07, 0x08,
-0xe5, 0x01, 0x02, 0x06, 0x07, 0xe5, 0x01, 0x1e,
-0x24, 0x3f, 0x09, 0x03, 0x05, 0x3b, 0x2b, 0x0c,
-0x01, 0x05, 0x04, 0x0e, 0x05, 0x0c, 0x5c, 0x27,
-0xe6, 0xe5, 0x01, 0x08, 0x1a, 0x09, 0x25, 0x06,
-0x02, 0x11, 0xe5, 0x08, 0x08, 0xe5, 0x0a, 0x08,
-0xe5, 0xe5, 0x05, 0x01, 0x07, 0x21, 0x09, 0x22,
-0x1d, 0x03, 0x06, 0x07, 0xe6, 0x07, 0x01, 0x41,
-0xe5, 0x12, 0x06, 0x01, 0x06, 0x02, 0xe5, 0x07,
-0xe5, 0x07, 0x07, 0x01, 0x09, 0x09, 0x09, 0x09,
-0x01, 0xe5, 0x04, 0x21, 0x12, 0xe5, 0x04, 0x03,
-0x08, 0xe5, 0x07, 0x06, 0x05, 0x07, 0xe5, 0xe6,
-0xe8, 0x54, 0x02, 0xe5, 0x04, 0x05, 0x03, 0xe5,
-0x07, 0x01, 0xe5, 0x0b, 0x06, 0x01, 0x10, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x0e, 0xe7, 0x08, 0xe5,
-0x04, 0x09, 0x02, 0xe5, 0x04, 0x13, 0x09, 0x02,
-0x01, 0x04, 0x09, 0x09, 0x0a, 0xe8, 0xe5, 0x01,
-0x01, 0x37, 0xe5, 0x14, 0xe5, 0x01, 0x02, 0xe5,
-0x04, 0x02, 0x01, 0x01, 0xe5, 0x0a, 0x02, 0xe5,
-0x0a, 0x06, 0x01, 0x0c, 0xe5, 0xe5, 0x02, 0xe5,
-0x04, 0x11, 0x01, 0x01, 0xe5, 0x02, 0x05, 0xe5,
-0x01, 0x01, 0x07, 0x01, 0x03, 0xe5, 0x01, 0x01,
-0x03, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x03, 0x01,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x02, 0x06, 0x02,
-0x02, 0xe5, 0x04, 0x07, 0x01, 0x02, 0xe5, 0x01,
-0x04, 0x37, 0xe5, 0xe5, 0x14, 0x0e, 0x01, 0xe5,
-0xe5, 0xe5, 0xe6, 0x01, 0x01, 0x11, 0x0e, 0x08,
-0x22, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x09, 0x06, 0x02, 0x06, 0xe5, 0xe5, 0x06,
-0x01, 0x0c, 0x01, 0x09, 0x04, 0xe5, 0xe6, 0x01,
-0x38, 0xe5, 0x01, 0x13, 0x15, 0x03, 0xe5, 0x01,
-0x01, 0x11, 0x05, 0xe5, 0x0d, 0x1f, 0x04, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x04, 0xe5, 0xe5, 0xe5, 0x0a, 0x03, 0xe5,
-0xe5, 0x54, 0x02, 0x03, 0x05, 0x04, 0x01, 0x02,
-0x09, 0x09, 0x09, 0x06, 0x06, 0x08, 0x02, 0x05,
-0x09, 0x09, 0xe5, 0x01, 0x02, 0x02, 0x06, 0x02,
-0x03, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x03, 0x05, 0x0c, 0x01, 0xe5, 0x01,
-0x40, 0x0f, 0x03, 0x03, 0x0d, 0x01, 0x01, 0x02,
-0x04, 0x14, 0x08, 0x01, 0x01, 0xe5, 0x21, 0x02,
-0x08, 0x01, 0x02, 0x04, 0x01, 0x01, 0xe5, 0x03,
-0x09, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x03,
-0x05, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04, 0x02,
-0xe6, 0x03, 0x0a, 0x05, 0xe5, 0x53, 0x01, 0x09,
-0x0b, 0xe5, 0x01, 0x01, 0x01, 0x14, 0x01, 0x01,
-0x1d, 0x11, 0x01, 0x06, 0x09, 0x0b, 0xe5, 0x19,
-0x02, 0x01, 0x0e, 0x0c, 0x02, 0x01, 0x01, 0x0c,
-0x03, 0x50, 0x02, 0x04, 0x09, 0x08, 0xe5, 0xe5,
-0xe6, 0xe5, 0x01, 0x01, 0x06, 0x0a, 0x01, 0x01,
-0x11, 0x08, 0xe5, 0xe6, 0x04, 0xe7, 0x03, 0x02,
-0xe7, 0x02, 0x02, 0xe6, 0x03, 0x02, 0x01, 0x01,
-0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0xe5,
-0xe5, 0xe5, 0x01, 0x01, 0xe7, 0x03, 0x02, 0xe6,
-0x03, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x02, 0x01,
-0x01, 0x02, 0x01, 0xe5, 0xe8, 0xe5, 0x01, 0x0b,
-0xe5, 0xe6, 0x08, 0x47, 0x07, 0xe5, 0x04, 0x09,
-0x02, 0x02, 0x03, 0x04, 0x04, 0x29, 0x04, 0x04,
-0x06, 0x09, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x09, 0x0a, 0x01, 0x01,
-0x0a, 0x01, 0x40, 0x0c, 0xe5, 0x03, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x0b, 0xe5,
-0x10, 0x08, 0xe5, 0x07, 0xe5, 0x08, 0x02, 0x05,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x03, 0x02, 0xe6, 0x08, 0x01, 0xe7,
-0x07, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x02, 0x09, 0xe6, 0x02, 0xe5, 0x01, 0xe5,
-0x07, 0xe6, 0x06, 0xe5, 0x07, 0x04, 0x01, 0x02,
-0x0b, 0x09, 0xe5, 0x07, 0xe5, 0x07, 0x05, 0xe6,
-0xe7, 0x03, 0xe5, 0xe7, 0x03, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe7,
-0x03, 0xe5, 0xe6, 0x02, 0x01, 0xe5, 0xe7, 0x01,
-0x01, 0xe5, 0xe6, 0xe5, 0x05, 0x06, 0x06, 0xe5,
-0xe7, 0x01, 0x3b, 0x10, 0x02, 0x10, 0x02, 0x27,
-0x32, 0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x02, 0x03,
-0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03,
-0x03, 0x01, 0x03, 0x02, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x0a, 0x03, 0x05, 0x02,
-0xe5, 0xe6, 0x3b, 0x10, 0x02, 0x12, 0x07, 0x13,
-0x0b, 0x1d, 0x09, 0x09, 0x01, 0x06, 0x02, 0x06,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x02,
-0x06, 0xe5, 0x02, 0x04, 0x04, 0x04, 0xe5, 0x15,
-0xe5, 0x01, 0x01, 0x3d, 0x01, 0x0c, 0x09, 0x04,
-0x01, 0xe7, 0x02, 0xe5, 0xe6, 0xe5, 0x05, 0xe7,
-0x05, 0xe5, 0x02, 0x02, 0x04, 0x10, 0x04, 0x07,
-0xe6, 0x06, 0xe6, 0x03, 0x01, 0x02, 0x07, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0xe5, 0x06, 0x09, 0x01, 0x01, 0x01, 0x41, 0xe5,
-0x09, 0x08, 0xe5, 0x04, 0x01, 0xe6, 0x01, 0x02,
-0x01, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x04, 0x03,
-0x02, 0x01, 0x03, 0x08, 0x03, 0x01, 0x07, 0x09,
-0x05, 0x01, 0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x06, 0x0c,
-0x01, 0x01, 0x3f, 0x01, 0x13, 0x0a, 0x06, 0x08,
-0x02, 0x01, 0x07, 0x03, 0x0d, 0x01, 0x09, 0x05,
-0x10, 0x0c, 0x02, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x02, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe5,
-0x02, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x08, 0x02,
-0x03, 0x08, 0x0a, 0x02, 0xe5, 0x14, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x05,
-0xe7, 0x01, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0x01,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe6, 0xe5, 0x05,
-0x02, 0x08, 0x03, 0x02, 0xe7, 0x05, 0xe7, 0x05,
-0xe7, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe5, 0x01,
-0xe7, 0x01, 0x03, 0xe7, 0x01, 0x03, 0xe7, 0x01,
-0xe5, 0x01, 0xe7, 0x01, 0x03, 0xe7, 0x01, 0x03,
-0xe7, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0x03, 0xe7,
-0x06, 0xe6, 0x07, 0xe7, 0x3e, 0x01, 0x0a, 0x10,
-0x01, 0x07, 0x01, 0xe6, 0x06, 0xe5, 0x07, 0x07,
-0x22, 0xe5, 0x0e, 0x01, 0xe6, 0x01, 0x02, 0x02,
-0x06, 0x02, 0xe5, 0x04, 0x02, 0x06, 0x09, 0x02,
-0x06, 0x02, 0x06, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x06, 0x09, 0x03, 0x41,
-0x1b, 0x01, 0x03, 0x02, 0xe5, 0xe5, 0x03, 0x01,
-0x02, 0xe5, 0x01, 0x05, 0x07, 0x1e, 0x06, 0x02,
-0x06, 0x02, 0xe5, 0xe5, 0x05, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03,
-0x02, 0x02, 0x06, 0x0b, 0x3f, 0x01, 0x0a, 0x08,
-0x0e, 0xe5, 0xe5, 0x04, 0x01, 0xe5, 0x01, 0x05,
-0x03, 0x13, 0x05, 0x02, 0x08, 0xe5, 0x06, 0xe5,
-0x07, 0xe5, 0x06, 0x01, 0x04, 0x03, 0xe5, 0x07,
-0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x02, 0x05, 0x09, 0x01, 0xe5, 0x40, 0xe5,
-0x0a, 0x09, 0x09, 0xe5, 0xe6, 0x01, 0x02, 0x01,
-0x04, 0x02, 0xe5, 0xe5, 0x02, 0x02, 0x09, 0x04,
-0x02, 0x0d, 0xe6, 0x06, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe8, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe7, 0x03, 0xe5,
-0xe6, 0x08, 0xe6, 0x68, 0xe5, 0x19, 0x09, 0x02,
-0x0c, 0x0a, 0x08, 0x05, 0xe5, 0xe5, 0x03, 0x01,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x06, 0x01, 0xe5,
-0x04, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x06, 0x01,
-0x08, 0xe5, 0x02, 0x03, 0x01, 0x04, 0x02, 0x01,
-0x18, 0xe7, 0x10, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5, 0xe5,
-0x03, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x04, 0x01, 0x01, 0x01, 0x03, 0x01, 0x04,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0x04, 0x02, 0xe6,
-0x06, 0x01, 0x01, 0x02, 0x02, 0x01, 0x04, 0x02,
-0x01, 0xe6, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x0a, 0xe5,
-0xe6, 0x15, 0x2c, 0x07, 0xe5, 0x01, 0x05, 0x04,
-0x04, 0x13, 0xe5, 0x07, 0xe5, 0x06, 0x03, 0x04,
-0x05, 0x09, 0x08, 0x12, 0xe5, 0x07, 0x03, 0x01,
-0x0e, 0x02, 0x09, 0x0f, 0xe5, 0x03, 0x07, 0x06,
-0x02, 0x05, 0x09, 0xe5, 0x0c, 0x03, 0xe5, 0x3c,
-0x06, 0x04, 0xe5, 0x02, 0x11, 0x0e, 0x01, 0x07,
-0x01, 0x02, 0x03, 0x06, 0x03, 0x04, 0x01, 0xe5,
-0x08, 0x02, 0x01, 0x06, 0x0b, 0x01, 0x11, 0x05,
-0x04, 0x02, 0x05, 0x05, 0x09, 0x05, 0x0f, 0x02,
-0x07, 0x05, 0x04, 0xe5, 0x09, 0x04, 0xe5, 0x02,
-0x44, 0x09, 0x05, 0x0a, 0x05, 0x09, 0x02, 0x0a,
-0x18, 0xe5, 0xe6, 0x02, 0x0a, 0x0a, 0x06, 0x08,
-0x19, 0x0a, 0x0c, 0x03, 0x19, 0x0a, 0x10, 0xe7,
-0x46, 0x0c, 0x01, 0x03, 0x04, 0x03, 0x05, 0x03,
-0xe5, 0x05, 0x02, 0x06, 0x09, 0x04, 0xe6, 0x02,
-0x07, 0x1e, 0x03, 0x02, 0xe7, 0x05, 0x04, 0x06,
-0x07, 0xe7, 0x05, 0x01, 0x07, 0x01, 0xe5, 0x07,
-0x07, 0x01, 0x07, 0x01, 0x07, 0xe6, 0x0c, 0xe6,
-0xe6, 0x51, 0x30, 0x05, 0x02, 0xe5, 0xe5, 0x07,
-0xe6, 0x08, 0x10, 0x0e, 0x05, 0x05, 0x03, 0x03,
-0x09, 0x08, 0x01, 0x09, 0x08, 0x08, 0x02, 0x06,
-0x02, 0x06, 0x10, 0x03, 0xe5, 0x43, 0x0d, 0x05,
-0x20, 0x10, 0x08, 0xe5, 0x02, 0x01, 0x04, 0x0a,
-0x1c, 0x17, 0x06, 0x01, 0x0b, 0x01, 0x09, 0x03,
-0x08, 0x06, 0x17, 0x02, 0xe6, 0x3c, 0x01, 0x16,
-0x09, 0x02, 0x03, 0x02, 0x01, 0x04, 0x02, 0x09,
-0xe5, 0x07, 0x10, 0xe5, 0x2a, 0x0b, 0xe5, 0x05,
-0x09, 0x09, 0x06, 0xe5, 0xe5, 0x05, 0x04, 0x0e,
-0xe6, 0x12, 0x08, 0x03, 0x3d, 0x0c, 0x08, 0x01,
-0xe5, 0x0d, 0x06, 0x02, 0x01, 0x13, 0x03, 0x0b,
-0x37, 0x16, 0x0c, 0x03, 0x05, 0x02, 0x03, 0x06,
-0x20, 0x02, 0xe5, 0x34, 0x10, 0x0d, 0x02, 0x01,
-0x07, 0x08, 0x04, 0x08, 0x03, 0x01, 0x0b, 0xe5,
-0x07, 0x03, 0xe6, 0x1a, 0x0c, 0x01, 0x07, 0xe5,
-0x05, 0x04, 0x20, 0x03, 0xe5, 0xe5, 0x05, 0xe5,
-0x0f, 0x01, 0xe5, 0x0e, 0x01, 0xe6, 0x34, 0x0d,
-0x0b, 0x05, 0x0d, 0x19, 0x02, 0x0c, 0x0b, 0x30,
-0x02, 0xe5, 0x31, 0x0a, 0x13, 0x0e, 0xe5, 0xe6,
-0x3c, 0x07, 0xe5, 0x09, 0x0c, 0x1d, 0x18, 0x10,
-0x19, 0x10, 0x15, 0x04, 0x0c, 0x04, 0xe6, 0x02,
-0xe5, 0x02, 0xe5, 0x02, 0xe5, 0x01, 0x01, 0x03,
-0x04, 0x11, 0x01, 0x3c, 0x0b, 0x03, 0x02, 0x09,
-0x04, 0xe5, 0x1c, 0xe5, 0x01, 0x08, 0x0a, 0x07,
-0x01, 0x07, 0x09, 0x3e, 0x03, 0xe5, 0xe5, 0x08,
-0x07, 0x01, 0x07, 0x01, 0x0f, 0x08, 0x02, 0xe5,
-0x4c, 0x02, 0x06, 0x07, 0x0d, 0x0d, 0x01, 0x03,
-0x13, 0x07, 0x07, 0xe5, 0x08, 0x05, 0x06, 0x1e,
-0x0b, 0x02, 0x04, 0x10, 0x07, 0x04, 0x09, 0x15,
-0xe5, 0x01, 0x01, 0x3d, 0x10, 0xe5, 0x04, 0x09,
-0x02, 0x01, 0x07, 0x01, 0x04, 0x05, 0x0f, 0xe5,
-0x07, 0xe5, 0x0a, 0xe5, 0x04, 0x08, 0xe5, 0x15,
-0x01, 0x04, 0x08, 0xe5, 0x25, 0xe5, 0x08, 0x1e,
-0x01, 0x02, 0xe6, 0xe5, 0xe5, 0x39, 0xe6, 0x06,
-0x17, 0x0c, 0x01, 0x0a, 0x04, 0x0a, 0xe5, 0x07,
-0xe5, 0x03, 0xe5, 0x03, 0xe5, 0x0f, 0x16, 0x01,
-0x07, 0xe5, 0x25, 0xe5, 0x03, 0x03, 0x01, 0x1e,
-0x01, 0x02, 0xe8, 0xe5, 0x03, 0x3a, 0x01, 0x0c,
-0x08, 0x01, 0xe5, 0x11, 0xe5, 0x05, 0x05, 0x06,
-0xe5, 0xe5, 0x16, 0x0a, 0xe5, 0x26, 0x09, 0x16,
-0xe5, 0x06, 0xe5, 0x0f, 0x15, 0xe5, 0x01, 0x01,
-0x05, 0x01, 0xe5, 0x01, 0x3c, 0x01, 0x07, 0x0a,
-0x04, 0xe5, 0x11, 0xe5, 0x0b, 0x06, 0xe5, 0x02,
-0x13, 0x0a, 0x55, 0x26, 0xe5, 0x05, 0x03, 0xe8,
-0x08, 0x01, 0x32, 0x0e, 0x01, 0x01, 0x03, 0x01,
-0x04, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x04, 0x0b, 0x01, 0x0e, 0x02, 0x07, 0xe5, 0x27,
-0x27, 0x02, 0xe5, 0x0e, 0x04, 0x01, 0x17, 0xe6,
-0x01, 0x02, 0x3c, 0x09, 0x02, 0x01, 0x07, 0x06,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x03,
-0x1b, 0x03, 0x01, 0x02, 0x03, 0x54, 0x15, 0x01,
-0x01, 0x10, 0x03, 0x04, 0xe6, 0x3d, 0x0c, 0x01,
-0x07, 0xe5, 0x0e, 0x01, 0x01, 0xe7, 0x0b, 0x03,
-0x02, 0x02, 0x06, 0x09, 0x06, 0x01, 0x02, 0x05,
-0x03, 0x24, 0xe5, 0xe5, 0x23, 0x02, 0x09, 0x01,
-0x0a, 0x01, 0x19, 0xe7, 0x3e, 0x09, 0x04, 0x01,
-0x01, 0x03, 0x01, 0x09, 0x04, 0x01, 0x03, 0xe5,
-0x06, 0x04, 0x04, 0xe7, 0x02, 0x02, 0x01, 0xe6,
-0x06, 0xe5, 0x02, 0x04, 0x01, 0xe6, 0x02, 0x04,
-0x24, 0x01, 0xe5, 0x1e, 0x07, 0x01, 0x06, 0x01,
-0x04, 0xe5, 0x03, 0x01, 0x19, 0x02, 0xe5, 0x43,
-0xe5, 0x04, 0x02, 0xe5, 0x18, 0x2c, 0x38, 0x04,
-0x1b, 0x13, 0x02, 0x03, 0x1a, 0xe5, 0x03, 0xe9,
-0x42, 0x02, 0x05, 0x14, 0x08, 0xe5, 0x08, 0x13,
-0x09, 0x02, 0x12, 0x0c, 0xe5, 0x17, 0xe6, 0x20,
-0x04, 0x02, 0x09, 0xe5, 0x03, 0xe5, 0x01, 0x17,
-0x08, 0xe6, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x06,
-0x02, 0x04, 0xe6, 0x01, 0xe5, 0x04, 0x02, 0xe5,
-0x07, 0x09, 0xe6, 0x03, 0x02, 0x09, 0x09, 0x09,
-0x04, 0xe6, 0x03, 0x04, 0x01, 0x02, 0xe5, 0x07,
-0x09, 0x09, 0x09, 0xe6, 0x06, 0x09, 0x09, 0x09,
-0x01, 0x01, 0x05, 0x04, 0x01, 0x02, 0xe5, 0x01,
-0x05, 0x09, 0x0d, 0xe6, 0x01, 0x02, 0x3a, 0xe5,
-0x03, 0x04, 0x06, 0x1d, 0x02, 0x27, 0x38, 0x22,
-0x13, 0x26, 0xe5, 0xe5, 0x3c, 0x07, 0x29, 0x23,
-0x03, 0x11, 0x47, 0x15, 0x05, 0x21, 0xe7, 0x4b,
-0x08, 0xe5, 0x0a, 0x07, 0xe5, 0x04, 0x04, 0x06,
-0x0c, 0x04, 0x01, 0x02, 0x06, 0x01, 0x07, 0x01,
-0xe5, 0xe5, 0x05, 0x02, 0x1b, 0xe6, 0x17, 0x0b,
-0xe6, 0x06, 0xe6, 0x03, 0x02, 0xe5, 0xe5, 0x05,
-0x1c, 0x3e, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0xe5,
-0x04, 0x02, 0xe5, 0x01, 0x02, 0x03, 0x01, 0x07,
-0x07, 0x01, 0x01, 0x05, 0xe6, 0x08, 0x01, 0x03,
-0x01, 0xe6, 0x01, 0x06, 0xe6, 0x03, 0x02, 0xe6,
-0x06, 0xe6, 0x0b, 0x09, 0x06, 0x19, 0x03, 0x09,
-0x04, 0x0d, 0xe5, 0x06, 0xe5, 0x0f, 0x04, 0x05,
-0x32, 0x09, 0x02, 0x09, 0x01, 0x06, 0x02, 0x0d,
-0xe5, 0x0b, 0x05, 0x05, 0x07, 0x01, 0x10, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x06, 0x06, 0x14, 0x05,
-0x17, 0x09, 0x06, 0x09, 0x11, 0x19, 0x02, 0x15,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe6, 0x06,
-0xe6, 0x06, 0xe5, 0x02, 0x02, 0xe7, 0x01, 0x05,
-0xe5, 0x01, 0x03, 0x01, 0xe6, 0xe5, 0x04, 0xe5,
-0x06, 0xe6, 0x03, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x01, 0x03, 0xe7,
-0x07, 0xe6, 0x03, 0x01, 0xe6, 0xe5, 0x37, 0x1a,
-0x01, 0xe5, 0x12, 0xe5, 0x01, 0x01, 0x09, 0x02,
-0xe5, 0x04, 0x09, 0xe5, 0xe5, 0x05, 0x02, 0x01,
-0x07, 0x01, 0xe5, 0x1c, 0x09, 0xe5, 0x18, 0x0c,
-0x05, 0x09, 0x03, 0x05, 0x02, 0x03, 0xe5, 0xe5,
-0x02, 0x0d, 0xe8, 0x37, 0x0e, 0x0b, 0x01, 0x07,
-0x11, 0xe5, 0x08, 0x02, 0xe5, 0x03, 0xe5, 0x07,
-0xe6, 0xe5, 0x03, 0x01, 0x04, 0x09, 0x1e, 0x24,
-0x11, 0xe5, 0x06, 0xe6, 0x02, 0x05, 0x02, 0x05,
-0xe5, 0x02, 0x11, 0x49, 0x09, 0x01, 0xe5, 0x15,
-0x01, 0x0d, 0x03, 0x01, 0x09, 0x0c, 0xe5, 0xe5,
-0x06, 0x01, 0xe5, 0x4e, 0x02, 0x01, 0x07, 0x01,
-0x0d, 0x05, 0x14, 0x01, 0x0c, 0x2b, 0x0b, 0xe5,
-0x04, 0x02, 0x04, 0x01, 0x02, 0x04, 0x04, 0x09,
-0xe5, 0x07, 0x01, 0x04, 0x02, 0x09, 0xe6, 0x06,
-0x01, 0x06, 0xe5, 0xe5, 0x05, 0x02, 0x09, 0x11,
-0x0b, 0x1d, 0x09, 0xe6, 0x04, 0x03, 0x07, 0x01,
-0x04, 0x04, 0x05, 0x0e, 0x02, 0x3f, 0xe5, 0xe5,
-0x02, 0x02, 0x03, 0xe5, 0x0b, 0x19, 0x05, 0x02,
-0x73, 0x02, 0x02, 0x09, 0x2b, 0xe5, 0xe6, 0x10,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x02, 0x04, 0xe6, 0x06,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x04, 0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0x0a,
-0x01, 0x01, 0x40, 0x02, 0x04, 0x02, 0xe5, 0x07,
-0xe5, 0x04, 0x02, 0xe5, 0x0c, 0x06, 0x05, 0x0f,
-0x09, 0x09, 0x07, 0xe5, 0x07, 0x17, 0x13, 0x09,
-0x0d, 0x01, 0xe6, 0x04, 0x05, 0x01, 0x04, 0x02,
-0x20, 0xe7, 0x1e, 0x09, 0x13, 0x03, 0x02, 0x02,
-0xe5, 0x02, 0x06, 0x05, 0x03, 0x07, 0x09, 0x05,
-0x09, 0x0d, 0x04, 0x06, 0x06, 0xe5, 0x01, 0x0f,
-0x0a, 0x0b, 0x13, 0x09, 0x09, 0xe5, 0x01, 0x05,
-0x09, 0x01, 0x07, 0x1a, 0x01, 0xe7, 0x0a, 0x30,
-0x0b, 0x02, 0x06, 0x01, 0x0a, 0x0c, 0x17, 0x04,
-0x02, 0x0c, 0x0c, 0x01, 0x07, 0x03, 0x41, 0x04,
-0x33, 0x01, 0xe5, 0x15, 0x32, 0xe7, 0x07, 0x02,
-0x0b, 0x01, 0x0c, 0x13, 0xe5, 0x25, 0x01, 0x0e,
-0x09, 0x2c, 0x09, 0x07, 0xe6, 0x1c, 0x04, 0xe5,
-0xe7, 0x43, 0x04, 0x06, 0x02, 0x16, 0x19, 0x13,
-0xe5, 0x13, 0x02, 0x18, 0x29, 0x04, 0x02, 0x02,
-0x07, 0xe5, 0x0e, 0x09, 0x06, 0x02, 0x01, 0xe8,
-0x2f, 0x06, 0x07, 0xe5, 0x01, 0x06, 0x02, 0x0c,
-0x0c, 0xe5, 0x06, 0xe6, 0x02, 0xe5, 0x03, 0x09,
-0x03, 0x05, 0x07, 0x07, 0x13, 0x09, 0x13, 0xe5,
-0xe5, 0x0f, 0x09, 0x02, 0x05, 0x0a, 0x09, 0x1d,
-0xe5, 0xe8, 0x3d, 0x07, 0x01, 0xe5, 0x14, 0x06,
-0x0c, 0x02, 0x03, 0xe5, 0x01, 0x05, 0xe5, 0xe5,
-0x05, 0xe5, 0x02, 0x04, 0x04, 0x34, 0x11, 0x0a,
-0x02, 0x18, 0x0b, 0x0b, 0x08, 0x03, 0xe5, 0x32,
-0x08, 0x04, 0x07, 0x0f, 0x0a, 0x04, 0x11, 0x03,
-0x07, 0x01, 0x07, 0x07, 0x38, 0x14, 0x1c, 0x29,
-0xe5, 0xe7, 0x50, 0x08, 0xe5, 0xe5, 0x03, 0x21,
-0xe6, 0x10, 0x01, 0x07, 0x01, 0x0a, 0x08, 0xe5,
-0x3a, 0x01, 0x02, 0x04, 0x05, 0x03, 0x08, 0x09,
-0x0f, 0x01, 0x02, 0x43, 0x03, 0x16, 0x07, 0x18,
-0x07, 0x03, 0x0d, 0x01, 0x09, 0x05, 0x01, 0x02,
-0x07, 0xe6, 0x36, 0x03, 0x0b, 0x09, 0x06, 0x09,
-0x11, 0xe7, 0x40, 0x07, 0x01, 0x06, 0x02, 0x0d,
-0x05, 0x04, 0x04, 0x04, 0x09, 0xe5, 0x07, 0x04,
-0x03, 0xe5, 0x33, 0x28, 0x13, 0x27, 0xe6, 0x3f,
-0xe5, 0x0c, 0x04, 0x02, 0x10, 0xe5, 0x02, 0x01,
-0x03, 0x22, 0x0c, 0x0e, 0x06, 0x01, 0x68, 0x09,
-0x01, 0x01, 0x16, 0x2a, 0x27, 0x07, 0xe5, 0x15,
-0x05, 0x03, 0x20, 0x09, 0x3b, 0x0b, 0x01, 0x04,
-0x02, 0x0b, 0x04, 0x01, 0x0a, 0xe5, 0xe8, 0x43,
-0xe5, 0xe5, 0x02, 0xe7, 0x04, 0xe5, 0x08, 0x26,
-0x0d, 0xe5, 0x08, 0xe5, 0x05, 0x09, 0x09, 0x09,
-0x02, 0xe5, 0x04, 0x09, 0x02, 0xe5, 0x04, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x02, 0xe5, 0x04, 0x0a,
-0x02, 0xe7, 0x01, 0x01, 0x40, 0xe5, 0x01, 0xe6,
-0x03, 0x01, 0x0d, 0x3f, 0xe6, 0x04, 0x03, 0xe5,
-0x03, 0x03, 0xe5, 0x07, 0x01, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x04, 0x09, 0x09, 0x09, 0x09, 0x02, 0x01,
-0x04, 0x07, 0x02, 0xe6, 0x01, 0xe5, 0x03, 0x37,
-0x01, 0x0a, 0x01, 0x01, 0x08, 0xe5, 0x0b, 0xe5,
-0x06, 0xe5, 0x07, 0xe5, 0x21, 0x01, 0x1f, 0x64,
-0x06, 0x05, 0x02, 0x02, 0x39, 0x0c, 0x01, 0x08,
-0x01, 0x0d, 0xe5, 0x06, 0xe5, 0x07, 0xe5, 0x1c,
-0x04, 0x01, 0x8d, 0x04, 0xe6, 0x3c, 0x03, 0x06,
-0x05, 0xe5, 0x01, 0x03, 0x0b, 0x09, 0x09, 0x09,
-0x04, 0x06, 0x01, 0x02, 0x02, 0x01, 0xe6, 0x06,
-0x09, 0x09, 0x13, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0x0a, 0xe7,
-0xe5, 0x01, 0x3c, 0x03, 0x03, 0x01, 0x03, 0x1e,
-0x09, 0x09, 0x06, 0x01, 0x02, 0x01, 0xe5, 0x03,
-0x0a, 0x7d, 0x01, 0x01, 0x0a, 0x03, 0xe7, 0x03,
-0xe5, 0x45, 0x0a, 0x01, 0x01, 0x04, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x0b, 0x02, 0x06,
-0x01, 0x01, 0x02, 0x24, 0x09, 0x0b, 0xe5, 0x19,
-0x02, 0x01, 0x0e, 0x0c, 0x02, 0x01, 0x01, 0x10,
-0x01, 0xe5, 0x02, 0x42, 0x04, 0x0b, 0x07, 0x01,
-0x01, 0xe5, 0xe5, 0x01, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x06, 0x03, 0xe5, 0x01, 0x04, 0x06,
-0x01, 0x02, 0x01, 0xe5, 0x04, 0xe5, 0x07, 0xe5,
-0xe5, 0xe5, 0x04, 0x09, 0xe6, 0x06, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0xe5,
-0x03, 0xe5, 0xe5, 0xe5, 0x04, 0xe6, 0x05, 0xe5,
-0xe5, 0xe5, 0x04, 0x01, 0x01, 0x04, 0xe5, 0xe6,
-0xe5, 0xe5, 0x01, 0x0c, 0x01, 0xe5, 0x44, 0x13,
-0xe6, 0x03, 0x2a, 0xe5, 0x10, 0x04, 0x04, 0x09,
-0x0c, 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x04, 0x0c, 0xe6, 0x01, 0x46,
-0x01, 0x11, 0x05, 0xe5, 0x29, 0x11, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x08, 0x02, 0x01, 0x03, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x0b, 0xe9, 0x0d, 0x09, 0x09, 0x09,
-0x09, 0x06, 0x02, 0x02, 0x02, 0x03, 0x02, 0x01,
-0x01, 0x02, 0x05, 0x03, 0xe6, 0x03, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x03, 0x05, 0x0b,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0x03,
-0x05, 0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe6,
-0x06, 0xe5, 0x07, 0xe6, 0x03, 0x06, 0x02, 0x01,
-0x02, 0x3a, 0xe5, 0x23, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x30, 0x6d, 0x02, 0x08, 0x02,
-0x3d, 0x26, 0x0a, 0x08, 0x08, 0x27, 0x09, 0x09,
-0x1d, 0x09, 0x09, 0x13, 0x13, 0x0d, 0x09, 0x01,
-0xe5, 0xe5, 0x46, 0x01, 0x07, 0x03, 0x08, 0xe6,
-0x05, 0x02, 0x06, 0x02, 0x06, 0x02, 0x10, 0x02,
-0x09, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x08, 0x07,
-0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x03, 0x01, 0xe7, 0x0a, 0xe5, 0x01, 0x42,
-0x05, 0xe5, 0xe7, 0x03, 0x03, 0x0a, 0x09, 0x09,
-0x05, 0x03, 0x08, 0x08, 0x01, 0x0b, 0x09, 0x09,
-0x04, 0xe5, 0x01, 0xe5, 0x08, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x01, 0xe6,
-0x04, 0x04, 0x01, 0x02, 0xe5, 0x3d, 0xe5, 0x08,
-0x01, 0x0b, 0x09, 0x07, 0x03, 0x05, 0x09, 0x09,
-0x0e, 0x07, 0x3c, 0x09, 0x13, 0x08, 0x09, 0x09,
-0x06, 0x01, 0x04, 0x09, 0x01, 0x01, 0x15, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x05,
-0xe7, 0x05, 0xe5, 0xe5, 0x05, 0xe8, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe5, 0x06, 0xe6, 0x07, 0xe7,
-0x02, 0x02, 0xe7, 0x02, 0x02, 0xe8, 0x04, 0xe7,
-0x02, 0x02, 0xe7, 0x02, 0x02, 0xe7, 0x05, 0xe7,
-0x05, 0xe7, 0x02, 0x02, 0xe7, 0x05, 0xe7, 0x05,
-0xe7, 0x05, 0xe7, 0x05, 0xe8, 0xe6, 0x01, 0xe8,
-0x03, 0x02, 0xe7, 0x48, 0x02, 0x06, 0x0c, 0x08,
-0x09, 0x14, 0x08, 0x16, 0xe5, 0x07, 0xe5, 0x07,
-0x09, 0xe5, 0x07, 0xe5, 0x1b, 0xe5, 0x07, 0x09,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x0d, 0xe6,
-0xe5, 0x48, 0x02, 0x16, 0x02, 0x06, 0x02, 0x07,
-0x01, 0x06, 0x02, 0x03, 0x02, 0x02, 0x02, 0x06,
-0x0b, 0x06, 0x02, 0x06, 0x02, 0xe5, 0x01, 0x02,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x03, 0x02, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x03, 0x02, 0x02, 0x08,
-0x02, 0x3f, 0x09, 0x16, 0x03, 0xe5, 0x02, 0x04,
-0xe6, 0x01, 0x03, 0x01, 0xe5, 0x06, 0xe7, 0xe5,
-0x03, 0xe6, 0x06, 0xe6, 0xe5, 0x05, 0xe6, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0x03, 0x49, 0x02, 0x01, 0x13, 0xe5,
-0xe6, 0x04, 0xe5, 0x07, 0xe7, 0x05, 0xe5, 0x02,
-0x01, 0xe5, 0x01, 0xe5, 0x06, 0x02, 0x08, 0x01,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x06, 0xe5, 0xe6, 0x42, 0x08, 0x5d, 0x83, 0xe8,
-0xe5, 0x0e, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0xe6, 0x03, 0xe5, 0xe5,
-0xe5, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0xe5, 0xe5,
-0xe5, 0x04, 0xe6, 0x05, 0xe5, 0xe5, 0x03, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0x06, 0xe5, 0xe5, 0x06,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x0a, 0x01, 0xe6,
-0x48, 0x15, 0xe5, 0x14, 0x08, 0xe5, 0x0c, 0x04,
-0x01, 0x22, 0x0c, 0x03, 0x06, 0x08, 0x03, 0x06,
-0x02, 0x05, 0x0a, 0x08, 0x03, 0x06, 0x02, 0x05,
-0x0a, 0x0d, 0x03, 0xe5, 0x3c, 0x04, 0x13, 0x03,
-0x02, 0x11, 0x18, 0x08, 0x02, 0xe5, 0x09, 0x2a,
-0xe5, 0x10, 0xe6, 0x12, 0x13, 0x08, 0x09, 0xe5,
-0x02, 0x0b, 0x01, 0x02, 0x4f, 0x07, 0x07, 0x29,
-0x01, 0x0a, 0x01, 0xe5, 0x1a, 0x0e, 0x13, 0x13,
-0x13, 0x13, 0x0e, 0x0d, 0xe5, 0x41, 0xe5, 0xe5,
-0x01, 0x02, 0x18, 0x16, 0xe5, 0x07, 0xe6, 0x15,
-0x09, 0x10, 0x10, 0x08, 0x49, 0x01, 0x04, 0x08,
-0xe7, 0xe5, 0x48, 0x3b, 0x03, 0x0f, 0xe5, 0x06,
-0x08, 0x10, 0x40, 0x1e, 0x01, 0x01, 0x0e, 0xe7,
-0x40, 0x03, 0x0b, 0x03, 0xe5, 0x09, 0x0b, 0xe5,
-0x13, 0x0c, 0xe5, 0x06, 0x02, 0xe6, 0x12, 0x01,
-0x14, 0x09, 0x13, 0x13, 0x1f, 0x11, 0xe6, 0xe6,
-0x2f, 0x0c, 0x01, 0x13, 0xe5, 0x14, 0x02, 0x10,
-0x0e, 0x01, 0x04, 0x04, 0x01, 0x03, 0x19, 0x0c,
-0x13, 0x13, 0x05, 0x0d, 0x13, 0x17, 0x01, 0xe6,
-0x3e, 0x02, 0x10, 0x06, 0x0a, 0x05, 0x09, 0x19,
-0x09, 0x01, 0x04, 0x18, 0x75, 0xe5, 0xe5, 0x4c,
-0x22, 0x06, 0x02, 0x09, 0xe5, 0x04, 0x02, 0x06,
-0x01, 0x01, 0xe8, 0x06, 0xe5, 0x07, 0xe5, 0x02,
-0x09, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x02, 0x0b,
-0xe7, 0x42, 0xe6, 0x1e, 0x11, 0x0d, 0x10, 0x02,
-0x03, 0x09, 0x02, 0x06, 0x13, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x10, 0x01,
-0xe5, 0x3b, 0x04, 0x05, 0x0b, 0x01, 0x0d, 0x14,
-0x09, 0x04, 0x03, 0xe5, 0x03, 0x0b, 0x03, 0xe5,
-0x02, 0x09, 0x13, 0x06, 0x02, 0x09, 0x09, 0x09,
-0x07, 0x01, 0x09, 0x07, 0x01, 0x09, 0x1b, 0xe7,
-0xe5, 0x3d, 0x0a, 0x1d, 0x09, 0x11, 0xe5, 0x07,
-0x01, 0x03, 0x05, 0x0c, 0x01, 0x82, 0x01, 0xe6,
-0x3b, 0x02, 0x01, 0x0b, 0x38, 0x11, 0x65, 0x2f,
-0xe5, 0x01, 0xe6, 0x3c, 0x02, 0x01, 0x0b, 0xe5,
-0x03, 0xe5, 0x08, 0x0f, 0x03, 0x09, 0xe5, 0x06,
-0xe5, 0x01, 0xe5, 0xe5, 0x02, 0xe5, 0x09, 0xe5,
-0xe6, 0x04, 0x01, 0xe5, 0x05, 0x08, 0xe5, 0x08,
-0x02, 0xe5, 0x04, 0x09, 0x02, 0xe5, 0x04, 0x09,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x14, 0x02, 0x01, 0xe5,
-0x01, 0x01, 0x3a, 0xe6, 0x0d, 0xe5, 0x07, 0x01,
-0x0a, 0x06, 0x01, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0x01, 0x01, 0x05, 0xe5, 0xe5, 0x0d, 0x03, 0xe5,
-0x03, 0x09, 0x03, 0x01, 0x07, 0xe5, 0x03, 0x09,
-0x03, 0x01, 0x03, 0x09, 0x03, 0x01, 0x03, 0x09,
-0x09, 0x09, 0x03, 0xe5, 0x03, 0x03, 0xe5, 0x0c,
-0x02, 0x04, 0xe5, 0x03, 0x36, 0xe5, 0x01, 0x01,
-0x0e, 0xe5, 0x04, 0x09, 0x0f, 0x03, 0x09, 0x07,
-0x01, 0x05, 0x03, 0x11, 0x01, 0x0e, 0xe5, 0x04,
-0x6b, 0x04, 0xe5, 0x01, 0x02, 0x39, 0xe5, 0xe5,
-0x0f, 0x16, 0x09, 0x09, 0x13, 0x11, 0xe5, 0x01,
-0x01, 0x0e, 0xe5, 0x6b, 0xe5, 0x04, 0x02, 0xe5,
-0xe6, 0x3e, 0x01, 0x04, 0x01, 0x08, 0x0a, 0x05,
-0x09, 0xe5, 0x01, 0xe5, 0x03, 0x09, 0xe5, 0x01,
-0x02, 0x04, 0x01, 0x05, 0x08, 0x02, 0x01, 0x01,
-0x05, 0x09, 0x07, 0x05, 0x05, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x04, 0x05,
-0xe5, 0x01, 0xe5, 0x01, 0x3c, 0x01, 0x01, 0x02,
-0x01, 0x0e, 0x01, 0x01, 0xe5, 0x09, 0x04, 0x03,
-0xe5, 0x02, 0x05, 0x04, 0x03, 0x04, 0x0a, 0x06,
-0x04, 0xe5, 0x01, 0x04, 0x16, 0xe6, 0x68, 0x01,
-0xe5, 0xe7, 0x3d, 0x01, 0x04, 0x0c, 0x06, 0x01,
-0x04, 0x0c, 0xe5, 0xe5, 0x02, 0x0d, 0x03, 0x15,
-0x07, 0x01, 0x0d, 0xe5, 0x08, 0x06, 0x09, 0x27,
-0x20, 0x06, 0x01, 0xe5, 0x08, 0xe5, 0x01, 0x3f,
-0x01, 0x04, 0xe5, 0x0c, 0x04, 0x07, 0x04, 0x04,
-0x02, 0x01, 0x04, 0x01, 0x02, 0x04, 0x13, 0x06,
-0x04, 0x04, 0x01, 0x01, 0xe5, 0x07, 0xe5, 0xe5,
-0x03, 0x04, 0xe5, 0x05, 0x01, 0x01, 0x05, 0xe6,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x08, 0x08,
-0xe5, 0x07, 0xe5, 0x07, 0xe8, 0x05, 0x01, 0x0a,
-0x02, 0x47, 0x11, 0x01, 0xe5, 0x02, 0x13, 0x04,
-0x07, 0x13, 0xe5, 0x10, 0x09, 0x04, 0x09, 0x04,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x04, 0x07, 0x01, 0x01, 0xe5, 0x45, 0x19,
-0xe5, 0x11, 0xe5, 0x01, 0x0b, 0x23, 0xe5, 0x07,
-0xe5, 0x01, 0x09, 0x05, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x0d,
-0xe7, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05,
-0x03, 0x09, 0x09, 0xe6, 0x06, 0x09, 0xe6, 0x02,
-0x03, 0x09, 0x09, 0x04, 0x01, 0x04, 0x09, 0xe5,
-0x07, 0xe5, 0x03, 0x03, 0x03, 0x05, 0xe6, 0x06,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe6, 0x03, 0x06, 0x01, 0x02, 0x02, 0x63, 0x1d,
-0x13, 0x8c, 0x08, 0x01, 0x01, 0x63, 0x1d, 0x15,
-0x11, 0x09, 0x27, 0x09, 0x09, 0x13, 0x09, 0x09,
-0x16, 0x03, 0x01, 0x3f, 0x11, 0x01, 0x0a, 0xe6,
-0x05, 0x02, 0x04, 0x01, 0xe7, 0xe5, 0x01, 0x01,
-0x02, 0x0e, 0x04, 0x01, 0x06, 0x02, 0x07, 0xe6,
-0x03, 0x01, 0xe7, 0x06, 0x09, 0xe6, 0x06, 0xe6,
-0x06, 0x01, 0x07, 0x01, 0x07, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x0b, 0xe5, 0xe5, 0x40, 0xe5, 0x0f, 0x01, 0xe5,
-0x09, 0x05, 0x03, 0x04, 0xe5, 0xe7, 0x04, 0x01,
-0x01, 0x08, 0x03, 0x02, 0x03, 0x0b, 0x09, 0x05,
-0x01, 0xe6, 0x12, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0d, 0x01, 0xe5, 0x3d,
-0xe5, 0xe5, 0x10, 0x0c, 0x08, 0x0b, 0x16, 0x10,
-0x71, 0x10, 0x0f, 0x01, 0x15, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe6, 0xe5, 0x02, 0x01, 0xe5, 0x05,
-0xe8, 0x04, 0xe6, 0x06, 0xe6, 0x07, 0xe5, 0x06,
-0xe6, 0x08, 0x0a, 0xe6, 0x02, 0x02, 0xe7, 0x02,
-0x02, 0xe7, 0x05, 0xe7, 0x02, 0x02, 0xe7, 0x02,
-0x02, 0xe7, 0x05, 0xe7, 0x05, 0xe7, 0x02, 0x02,
-0xe7, 0x02, 0x02, 0xe7, 0x02, 0x02, 0xe7, 0x02,
-0x03, 0xe6, 0x02, 0x02, 0xe7, 0x05, 0xe7, 0x01,
-0x05, 0x01, 0xe5, 0x3e, 0x01, 0x11, 0x01, 0xe6,
-0x07, 0x0e, 0x01, 0x01, 0xe5, 0x02, 0x0c, 0x01,
-0xe5, 0x03, 0x01, 0x0d, 0x0a, 0x06, 0x01, 0xe6,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x1b, 0x09,
-0x09, 0x09, 0x09, 0xe5, 0x15, 0x01, 0x01, 0x3f,
-0x01, 0x11, 0x01, 0x05, 0x07, 0x02, 0x06, 0x02,
-0xe5, 0xe6, 0x01, 0x02, 0x09, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0x0b, 0x06, 0x02, 0xe5, 0xe5, 0x02,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x07, 0x01, 0x06, 0x02, 0x06, 0x02, 0x08,
-0x02, 0x3f, 0x01, 0x11, 0x05, 0x06, 0x03, 0xe5,
-0x07, 0xe5, 0x08, 0x08, 0x02, 0x01, 0x03, 0xe6,
-0x08, 0x02, 0x02, 0x04, 0xe5, 0x03, 0x03, 0xe5,
-0x07, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03,
-0xe5, 0x03, 0x03, 0xe5, 0x03, 0x03, 0xe5, 0x03,
-0x0d, 0xe5, 0x07, 0xe5, 0x07, 0x01, 0xe6, 0x3e,
-0x01, 0x11, 0x01, 0xe5, 0x0a, 0xe5, 0xe6, 0x04,
-0xe5, 0x07, 0xe5, 0xe5, 0x05, 0x04, 0x02, 0x02,
-0x08, 0x01, 0xe5, 0x07, 0xe8, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe7, 0xe6, 0x01, 0x01, 0xe5, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0x01, 0x01, 0x05,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x06, 0x02, 0xe5,
-0x3c, 0x03, 0xe5, 0x23, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x04, 0x01, 0x09,
-0x16, 0x12, 0x2b, 0x06, 0x09, 0x03, 0x05, 0x09,
-0x22, 0x01, 0x01, 0x0f, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0x02, 0x01, 0x04, 0x01, 0x07, 0x01, 0x01, 0x04,
-0xe5, 0xe5, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0xe6, 0x06, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0x07, 0xe6, 0x06, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x0b, 0x01, 0xe5, 0x1f, 0x2d, 0x08, 0x08,
-0x2e, 0x05, 0x11, 0xe5, 0x0f, 0x0f, 0x02, 0x0c,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x01, 0x01, 0x1c, 0x03,
-0xe5, 0x28, 0x12, 0x0a, 0x08, 0x05, 0x02, 0x02,
-0x08, 0x09, 0x06, 0x02, 0x0e, 0x02, 0x19, 0x0c,
-0x09, 0x1a, 0x07, 0x01, 0xe5, 0x06, 0x08, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0x1a, 0x01, 0xe7,
-0x32, 0x0a, 0x04, 0x04, 0x05, 0x1b, 0x05, 0x09,
-0x09, 0x06, 0x02, 0x07, 0x01, 0xe6, 0x06, 0x04,
-0x17, 0xe5, 0x17, 0x13, 0x09, 0x05, 0xe5, 0x01,
-0x09, 0x22, 0x01, 0xe6, 0x41, 0x09, 0x04, 0x05,
-0x0c, 0x02, 0x13, 0x05, 0x03, 0xe6, 0x09, 0x0b,
-0x09, 0x10, 0x10, 0x2f, 0x11, 0x20, 0xe6, 0x01,
-0x6a, 0x02, 0x10, 0x03, 0x01, 0xe5, 0x02, 0x01,
-0x01, 0x07, 0x01, 0x01, 0xe5, 0x05, 0x15, 0x03,
-0x0f, 0x28, 0x26, 0x12, 0xe8, 0x2d, 0x15, 0x0a,
-0x0a, 0x05, 0x14, 0x1d, 0x05, 0x02, 0xe5, 0x08,
-0x08, 0xe5, 0x08, 0x03, 0x13, 0x13, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x07, 0x0b, 0xe5, 0xe7, 0x42,
-0x0a, 0x1e, 0x03, 0x04, 0x09, 0x03, 0x12, 0x01,
-0x07, 0x03, 0xe5, 0xe5, 0x0a, 0x04, 0xe5, 0x1f,
-0x50, 0x01, 0x02, 0xe5, 0x70, 0x1b, 0x0b, 0x0d,
-0x13, 0x02, 0x08, 0x13, 0x01, 0x16, 0x39, 0xe8,
-0x3f, 0x01, 0x0b, 0x0b, 0x20, 0xe5, 0x06, 0xe6,
-0x06, 0xe6, 0x05, 0x01, 0x06, 0x2c, 0xe6, 0x06,
-0xe5, 0x07, 0xe6, 0x1a, 0xe5, 0x07, 0x01, 0x22,
-0xe8, 0x40, 0x02, 0x39, 0x09, 0x09, 0x05, 0xe5,
-0x22, 0x12, 0x06, 0xe5, 0x09, 0x1b, 0xe5, 0x05,
-0x26, 0x01, 0xe6, 0x0a, 0x3f, 0x07, 0x01, 0x14,
-0x01, 0x0f, 0xe6, 0x06, 0x04, 0xe5, 0x02, 0x03,
-0xe5, 0x18, 0x01, 0x07, 0x01, 0x09, 0x02, 0x06,
-0x14, 0x09, 0x08, 0x14, 0x1c, 0x07, 0xe6, 0x48,
-0x0a, 0x10, 0x21, 0x28, 0x09, 0x11, 0x01, 0x25,
-0x01, 0x03, 0x35, 0xe5, 0x53, 0x0f, 0x06, 0x0f,
-0x34, 0x0a, 0x07, 0x09, 0x04, 0x22, 0x38, 0x01,
-0x01, 0x01, 0x6c, 0xe5, 0x04, 0x09, 0x09, 0x09,
-0xe5, 0x08, 0xe5, 0x04, 0x18, 0x0a, 0xe5, 0x05,
-0x09, 0xe5, 0x07, 0xe5, 0xe5, 0xe5, 0x03, 0x09,
-0x09, 0xe5, 0x07, 0xe5, 0x0a, 0xe5, 0xe5, 0x01,
-0xe5, 0x09, 0xe7, 0x01, 0x02, 0x01, 0x3b, 0x2c,
-0xe5, 0x02, 0xe5, 0x09, 0x06, 0x02, 0x09, 0x0c,
-0x07, 0x08, 0x09, 0x16, 0x09, 0x09, 0x01, 0xe5,
-0x05, 0x09, 0x09, 0x09, 0x05, 0xe5, 0x04, 0x01,
-0xe5, 0x0a, 0x01, 0x03, 0xe7, 0x03, 0x36, 0xe5,
-0x06, 0x04, 0x0c, 0x17, 0xe5, 0x02, 0x01, 0x05,
-0x10, 0x01, 0x02, 0x03, 0xe5, 0x09, 0xe5, 0x08,
-0x09, 0x0c, 0x01, 0x4f, 0x07, 0x03, 0x07, 0x04,
-0x01, 0x01, 0xe5, 0xe5, 0x38, 0x09, 0x0d, 0x19,
-0x04, 0x03, 0xe5, 0x01, 0x09, 0x06, 0xe5, 0xe5,
-0x16, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04,
-0xe5, 0xe5, 0xe5, 0x4c, 0x09, 0x0d, 0x03, 0xe5,
-0xe6, 0x3b, 0x03, 0x04, 0xe6, 0x05, 0x02, 0x03,
-0xe5, 0x0e, 0x04, 0x02, 0x03, 0x0c, 0x09, 0x03,
-0x05, 0x03, 0x02, 0x01, 0x0c, 0x01, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x0f, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x13, 0xe6,
-0xe5, 0x3f, 0x02, 0x01, 0x04, 0x04, 0x03, 0x10,
-0x04, 0x06, 0x01, 0x0a, 0x04, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x01, 0x01, 0x04, 0x01, 0x05,
-0x03, 0x05, 0x01, 0x01, 0x05, 0x08, 0x4b, 0x03,
-0x01, 0x02, 0xe5, 0x02, 0x09, 0x06, 0xe5, 0x47,
-0x07, 0x04, 0x03, 0x09, 0x01, 0xe5, 0x05, 0x02,
-0x01, 0x07, 0x15, 0x0b, 0x02, 0x09, 0x02, 0x15,
-0x01, 0x0b, 0x0c, 0x10, 0x02, 0x06, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0x07, 0x07, 0x0f, 0x01,
-0xe8, 0x58, 0xe5, 0x07, 0x01, 0xe5, 0x03, 0x02,
-0x01, 0x01, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04,
-0x06, 0x01, 0x25, 0x01, 0x03, 0xe5, 0x06, 0x08,
-0xe8, 0x04, 0xe5, 0xe5, 0x06, 0xe7, 0x05, 0xe7,
-0x05, 0xe7, 0x05, 0x01, 0x02, 0x09, 0x11, 0x01,
-0xe5, 0x44, 0xe5, 0x07, 0xe5, 0x09, 0x2f, 0xe5,
-0x07, 0x02, 0x0c, 0x09, 0x05, 0x03, 0x05, 0x09,
-0x06, 0x09, 0x09, 0x04, 0x04, 0x09, 0x09, 0x09,
-0x04, 0x1c, 0x02, 0xe5, 0x45, 0x0f, 0x0a, 0x13,
-0x16, 0xe5, 0x07, 0xe5, 0x06, 0x15, 0xe5, 0x07,
-0xe5, 0x03, 0x03, 0xe5, 0x04, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x1e, 0x03, 0xe5, 0x0d, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x01, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0xe5, 0x04, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x02, 0x06, 0x09, 0x06, 0x02,
-0x06, 0x04, 0x06, 0x02, 0x04, 0x01, 0xe5, 0xe5,
-0x06, 0x01, 0x06, 0x02, 0x09, 0xe6, 0x06, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0x04, 0x01, 0x02, 0x02, 0x0a,
-0xe7, 0xe5, 0x01, 0x3b, 0x06, 0x02, 0x06, 0x0b,
-0xe5, 0x08, 0x09, 0x1c, 0x09, 0x09, 0x0c, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x02, 0x11, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x04, 0x09, 0x0e, 0x03,
-0xe5, 0xe5, 0x3b, 0x09, 0x14, 0x05, 0x01, 0x0b,
-0x05, 0x35, 0x06, 0x04, 0x04, 0x1e, 0x09, 0x29,
-0x09, 0x18, 0x49, 0x01, 0x0a, 0x0b, 0x06, 0x02,
-0x01, 0x01, 0x02, 0x02, 0x06, 0x02, 0x04, 0x01,
-0x02, 0x06, 0x02, 0x06, 0x01, 0x09, 0x22, 0x04,
-0xe7, 0x06, 0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe6,
-0xe5, 0x03, 0xe7, 0xe5, 0x04, 0xe6, 0xe5, 0x04,
-0xe6, 0xe5, 0x03, 0x09, 0x0c, 0x01, 0xe6, 0xe5,
-0x41, 0x06, 0x01, 0xe5, 0x08, 0x09, 0xe5, 0x04,
-0x03, 0x04, 0xe5, 0x01, 0xe5, 0x06, 0x01, 0x05,
-0x01, 0x01, 0x05, 0x03, 0x07, 0x01, 0xe6, 0xe5,
-0x02, 0x02, 0xe5, 0x08, 0x02, 0x06, 0x09, 0x02,
-0x04, 0xe6, 0x08, 0x09, 0x09, 0x02, 0x04, 0xe6,
-0x01, 0x06, 0x09, 0x05, 0x02, 0x06, 0x02, 0x11,
-0x3e, 0xe5, 0x08, 0x10, 0x01, 0x0c, 0x09, 0x09,
-0x0d, 0x0f, 0x01, 0x06, 0x02, 0x07, 0x05, 0x03,
-0x15, 0x03, 0x06, 0x02, 0xe5, 0x05, 0x01, 0xe5,
-0x07, 0x05, 0xe5, 0x01, 0xe5, 0x04, 0x02, 0xe5,
-0x05, 0x01, 0x05, 0x09, 0x10, 0xe6, 0x14, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe6, 0xe5, 0x03, 0xe6, 0x07, 0xe5,
-0x07, 0xe6, 0x04, 0xe5, 0xe6, 0x06, 0xe5, 0x01,
-0x03, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x06, 0xe6,
-0x01, 0x01, 0x05, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0xe7, 0x01, 0xe5, 0x01, 0xe7,
-0x05, 0xe7, 0x05, 0xe7, 0x02, 0x02, 0xe7, 0x01,
-0x03, 0xe7, 0x05, 0xe7, 0x05, 0xe8, 0x04, 0xe8,
-0x04, 0xe7, 0x06, 0x01, 0x01, 0x42, 0x06, 0x01,
-0x04, 0x01, 0xe5, 0xe5, 0x08, 0xe5, 0x0f, 0x01,
-0xe5, 0x1b, 0x0b, 0x07, 0x01, 0x07, 0x09, 0x09,
-0x02, 0xe5, 0xe5, 0x04, 0xe5, 0x08, 0xe5, 0x07,
-0x09, 0xe5, 0x06, 0xe6, 0x07, 0xe5, 0x07, 0x08,
-0xe5, 0x01, 0xe5, 0x03, 0x04, 0x0a, 0x02, 0x42,
-0x06, 0x01, 0x09, 0x07, 0x08, 0x06, 0x02, 0xe5,
-0xe5, 0x05, 0x06, 0x02, 0x09, 0xe5, 0x07, 0x02,
-0x08, 0xe5, 0xe5, 0x05, 0x09, 0x09, 0x07, 0x01,
-0x02, 0xe5, 0x01, 0x02, 0x06, 0x02, 0x03, 0x02,
-0x02, 0x07, 0x01, 0x02, 0x03, 0x02, 0x07, 0x01,
-0x03, 0x02, 0x02, 0xe5, 0x07, 0xe5, 0x07, 0x08,
-0x01, 0xe5, 0x0b, 0x3c, 0x09, 0x01, 0x09, 0xe5,
-0x03, 0x08, 0xe7, 0xe6, 0x04, 0x07, 0xe6, 0x05,
-0xe7, 0x06, 0xe6, 0xe5, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x09, 0x09, 0x09, 0x03, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x06, 0x01, 0x03, 0x04, 0xe5,
-0x06, 0x01, 0x08, 0xe5, 0x02, 0xe5, 0x03, 0x03,
-0x03, 0x01, 0x08, 0xe5, 0x01, 0x42, 0x06, 0x01,
-0x09, 0x07, 0x04, 0x02, 0xe5, 0x04, 0xe5, 0x02,
-0x01, 0x02, 0x01, 0x07, 0xe5, 0x07, 0x01, 0x07,
-0x02, 0x03, 0x04, 0x02, 0xe6, 0xe5, 0x01, 0x02,
-0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x01,
-0xe5, 0xe5, 0xe7, 0x01, 0x02, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0x01, 0xe6,
-0x01, 0x02, 0xe5, 0xe6, 0x04, 0x01, 0xe6, 0x04,
-0xe5, 0xe7, 0x01, 0x03, 0xe7, 0x05, 0xe6, 0x06,
-0xe6, 0xe5, 0x09, 0x36, 0xe5, 0x03, 0x04, 0x26,
-0xe5, 0x07, 0xe5, 0x05, 0x03, 0x0a, 0x08, 0xe5,
-0x08, 0x06, 0x09, 0x01, 0xe5, 0x0d, 0x12, 0x14,
-0x29, 0x01, 0xe5, 0x0f, 0xe5, 0xe5, 0x0e, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0xe5, 0x04, 0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0xe5,
-0xe5, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01,
-0xe5, 0x02, 0x04, 0x01, 0x01, 0x05, 0x01, 0x04,
-0x02, 0x01, 0x01, 0xe5, 0xe5, 0x01, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0x08, 0x03, 0xe6, 0x39,
-0x08, 0x05, 0x15, 0x06, 0x04, 0x07, 0xe5, 0x0b,
-0x04, 0x02, 0x01, 0x07, 0x02, 0x06, 0x04, 0x02,
-0x29, 0xe6, 0x06, 0xe5, 0x07, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x06, 0x0f, 0xe5, 0x01, 0xe5, 0x4b, 0x02, 0x12,
-0x0e, 0x0e, 0x0b, 0x0a, 0x01, 0x04, 0x09, 0x27,
-0x32, 0x28, 0xe5, 0xe5, 0xe5, 0x41, 0x0b, 0x0d,
-0x02, 0x06, 0x0c, 0x03, 0x1a, 0x01, 0x04, 0x03,
-0x03, 0x13, 0x17, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x05, 0x01, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x18, 0x02, 0xe5, 0x0a, 0x33,
-0x01, 0x01, 0x0f, 0x01, 0x04, 0x02, 0x01, 0x07,
-0x01, 0x06, 0xe5, 0xe5, 0xe5, 0x04, 0xe6, 0x03,
-0x02, 0x01, 0x04, 0xe5, 0x0b, 0x02, 0x09, 0xe5,
-0x07, 0x09, 0x07, 0x05, 0xe5, 0x2c, 0x04, 0x30,
-0x03, 0x02, 0x27, 0x14, 0x02, 0x11, 0x01, 0x07,
-0x01, 0x09, 0x02, 0x03, 0x02, 0x02, 0x0b, 0x04,
-0x03, 0x08, 0x03, 0x01, 0x07, 0x01, 0x09, 0x03,
-0x04, 0xe5, 0x04, 0x05, 0x35, 0x32, 0xe6, 0xe5,
-0x2d, 0x1c, 0x0a, 0x03, 0x0c, 0x0a, 0xe5, 0x03,
-0x02, 0x02, 0x06, 0xe6, 0x0e, 0x01, 0x02, 0xe5,
-0x2a, 0x06, 0x13, 0x2a, 0x0b, 0x14, 0xe6, 0x25,
-0x04, 0x13, 0x04, 0x04, 0xe5, 0x05, 0x10, 0x04,
-0x01, 0x03, 0xe6, 0xe5, 0x03, 0x0e, 0x04, 0x0e,
-0x01, 0x01, 0xe5, 0x01, 0x2f, 0x60, 0x2b, 0x13,
-0x0b, 0x0e, 0x16, 0x0d, 0x05, 0x06, 0x06, 0x02,
-0x02, 0x39, 0x5a, 0x03, 0x4e, 0x05, 0x02, 0x05,
-0xe5, 0x08, 0x07, 0x01, 0x07, 0xe6, 0x02, 0x03,
-0x01, 0x07, 0x0a, 0x16, 0x1c, 0xe5, 0x07, 0x02,
-0x03, 0x02, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x04, 0x02, 0x09, 0xe6,
-0x06, 0xe6, 0x0e, 0x02, 0x46, 0x0e, 0x07, 0xe5,
-0x09, 0x09, 0x07, 0xe5, 0x0a, 0x0c, 0x01, 0x01,
-0x06, 0x03, 0x0c, 0x1b, 0xe5, 0x07, 0x09, 0xe5,
-0x02, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x02,
-0x04, 0x04, 0x06, 0x08, 0x0f, 0x02, 0xe5, 0x25,
-0x06, 0x07, 0x01, 0x07, 0x01, 0x09, 0x15, 0x03,
-0xe5, 0x0b, 0xe5, 0x07, 0x0c, 0xe6, 0x06, 0x08,
-0x03, 0x19, 0x1f, 0x13, 0x09, 0x13, 0x09, 0x19,
-0xe6, 0x07, 0x22, 0x0a, 0x02, 0x06, 0x02, 0x06,
-0x0c, 0x07, 0x01, 0x02, 0x01, 0x01, 0x02, 0x05,
-0x0a, 0x06, 0x0d, 0x01, 0x01, 0x05, 0x0d, 0x0f,
-0x0f, 0x62, 0x01, 0x01, 0xe5, 0x2f, 0x06, 0x02,
-0x06, 0x01, 0x05, 0xe5, 0x03, 0x2b, 0xe5, 0x01,
-0x16, 0x03, 0x04, 0x13, 0x09, 0x04, 0x18, 0x0b,
-0x07, 0x01, 0x13, 0x07, 0x01, 0x1e, 0xe5, 0x01,
-0x01, 0x1f, 0x09, 0x13, 0x09, 0x06, 0xe5, 0x04,
-0x02, 0x01, 0x04, 0x09, 0x05, 0x02, 0xe5, 0x08,
-0x09, 0x02, 0x01, 0x0c, 0x02, 0xe5, 0x01, 0xe5,
-0x04, 0x01, 0xe5, 0x05, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x02, 0xe5, 0x04,
-0x09, 0x0a, 0xe8, 0xe5, 0x01, 0x01, 0x1d, 0xe5,
-0x06, 0xe5, 0x11, 0xe6, 0x06, 0xe5, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0x01, 0x0a, 0x01, 0xe5, 0x02,
-0x01, 0x04, 0x08, 0x02, 0xe5, 0x06, 0x06, 0x03,
-0xe7, 0x05, 0x09, 0x09, 0x02, 0xe5, 0x04, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x02, 0xe5,
-0x04, 0x02, 0xe5, 0x04, 0x07, 0x01, 0x02, 0xe5,
-0x01, 0x04, 0x19, 0x01, 0xe5, 0x03, 0x04, 0x01,
-0x0d, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x01, 0x01,
-0x0b, 0x09, 0x08, 0xe5, 0x01, 0xe5, 0xe5, 0xe5,
-0x03, 0xe5, 0xe5, 0xe5, 0x10, 0x01, 0x04, 0xe5,
-0x02, 0x8d, 0x04, 0x01, 0x01, 0xe5, 0xe5, 0x1d,
-0x01, 0x04, 0xe5, 0xe5, 0xe5, 0x0d, 0x02, 0x06,
-0x02, 0x01, 0x1c, 0x02, 0x02, 0xe5, 0xe5, 0xe5,
-0x03, 0x02, 0x01, 0x0e, 0x02, 0x01, 0x09, 0x8f,
-0x02, 0x03, 0xe5, 0x03, 0x1b, 0x01, 0x06, 0xe5,
-0xe5, 0x0e, 0x01, 0x01, 0x04, 0xe7, 0xe5, 0x02,
-0x02, 0x05, 0x09, 0x04, 0x02, 0x06, 0x01, 0x03,
-0x01, 0xe5, 0x04, 0x04, 0x07, 0xe5, 0x0b, 0x06,
-0x01, 0x05, 0x09, 0x13, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x0c, 0xe8, 0xe5,
-0x1f, 0x01, 0x03, 0x01, 0x01, 0x04, 0x01, 0x0a,
-0x01, 0x01, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x18,
-0x02, 0x06, 0x01, 0x01, 0x09, 0x07, 0x05, 0x05,
-0x07, 0x01, 0x01, 0x02, 0x01, 0x86, 0x05, 0xe6,
-0x1f, 0x09, 0x01, 0x11, 0x01, 0x07, 0x01, 0x0b,
-0x09, 0x02, 0x02, 0x02, 0x06, 0x01, 0x07, 0x01,
-0x07, 0x09, 0x01, 0x09, 0x06, 0x1d, 0x06, 0x09,
-0x27, 0x13, 0x13, 0x0b, 0x02, 0x01, 0xe5, 0x1f,
-0x01, 0x07, 0x01, 0x11, 0x01, 0x07, 0x01, 0x0c,
-0x09, 0x02, 0x01, 0x02, 0x06, 0x01, 0x07, 0x01,
-0x01, 0xe5, 0x05, 0x02, 0x04, 0x01, 0x09, 0x05,
-0xe6, 0x04, 0xe5, 0x07, 0xe5, 0x08, 0x01, 0xe6,
-0x04, 0x01, 0x01, 0x05, 0xe6, 0x05, 0xe7, 0x05,
-0xe7, 0x05, 0xe7, 0x06, 0xe6, 0x05, 0xe7, 0x06,
-0xe6, 0x05, 0xe5, 0x08, 0x08, 0xe5, 0xe5, 0xe5,
-0xe5, 0x26, 0x13, 0x02, 0x06, 0x02, 0x17, 0x16,
-0xe5, 0x04, 0x0c, 0x1c, 0x09, 0x0c, 0xe5, 0x04,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x11, 0x28, 0x01, 0x04, 0x02, 0x09, 0x23,
-0xe5, 0x08, 0x12, 0xe5, 0x08, 0x02, 0x01, 0x07,
-0xe5, 0x0f, 0xe5, 0x07, 0xe5, 0x08, 0x02, 0x05,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x0b, 0xe5, 0x01, 0xe5, 0x0d,
-0x09, 0x09, 0x04, 0xe6, 0x01, 0xe6, 0x02, 0x03,
-0x03, 0x05, 0x02, 0x06, 0x02, 0x06, 0x09, 0xe6,
-0x06, 0xe5, 0xe5, 0x05, 0x02, 0x06, 0xe5, 0xe5,
-0x05, 0x04, 0xe6, 0x01, 0x06, 0x04, 0x06, 0x02,
-0xe5, 0x07, 0xe5, 0x04, 0x02, 0x03, 0x05, 0xe6,
-0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe6, 0x0a, 0xe7, 0xe5, 0x01, 0x1d, 0x13,
-0x13, 0x3b, 0x09, 0x08, 0xe5, 0x07, 0x15, 0xe5,
-0x71, 0x02, 0xe5, 0x01, 0x1d, 0x15, 0x13, 0x37,
-0x03, 0x09, 0x07, 0x13, 0x09, 0x03, 0x05, 0x1d,
-0x09, 0x09, 0x13, 0x13, 0x17, 0xe7, 0x20, 0x01,
-0x04, 0x04, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x14, 0xe6, 0x03, 0x01, 0xe7, 0x02, 0xe5, 0xe5,
-0x08, 0xe7, 0xe5, 0x06, 0x01, 0x0e, 0x08, 0x02,
-0xe7, 0x06, 0xe6, 0x03, 0x04, 0x07, 0xe6, 0x06,
-0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x08, 0x01, 0xe6, 0xe5, 0x20, 0x01, 0xe5,
-0x05, 0x01, 0xe6, 0x04, 0x02, 0x06, 0x01, 0xe5,
-0x05, 0x02, 0x0a, 0x09, 0x02, 0x02, 0x02, 0xe5,
-0xe5, 0x02, 0x01, 0xe5, 0x07, 0xe6, 0x08, 0x01,
-0x06, 0xe5, 0x08, 0xe5, 0x05, 0x02, 0xe5, 0x08,
-0x04, 0x02, 0xe6, 0x08, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0xe7, 0x20,
-0x0b, 0x09, 0x07, 0x09, 0x01, 0x0d, 0x06, 0x06,
-0x01, 0xe5, 0x05, 0x01, 0x09, 0x09, 0x06, 0x0c,
-0x0b, 0xe5, 0x26, 0x0a, 0x09, 0x08, 0x09, 0x09,
-0x09, 0x13, 0x0d, 0xe5, 0x01, 0x15, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x05, 0xe8,
-0x06, 0xe6, 0xe5, 0x04, 0xe5, 0x01, 0xe5, 0x01,
-0x01, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x03, 0x03,
-0xe8, 0x04, 0xe7, 0x02, 0x02, 0xe7, 0x01, 0x03,
-0xe7, 0x02, 0x02, 0xe7, 0x05, 0xe7, 0x05, 0xe7,
-0x05, 0xe7, 0x05, 0xe7, 0x05, 0xe7, 0x05, 0xe7,
-0x05, 0xe7, 0x02, 0x02, 0xe7, 0x05, 0xe7, 0x06,
-0x01, 0xe6, 0x20, 0x01, 0x09, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x0a, 0x09, 0xe5, 0x04, 0x01,
-0x07, 0x01, 0x09, 0xe5, 0x01, 0x01, 0x0d, 0x0c,
-0xe5, 0x06, 0x0a, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0x09, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0x1a, 0xe5, 0x20, 0x01,
-0x09, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0a,
-0x0c, 0x02, 0xe5, 0x08, 0x01, 0x09, 0xe5, 0x0f,
-0x0d, 0x04, 0x01, 0xe5, 0x04, 0x02, 0x03, 0x02,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x03,
-0x02, 0x02, 0x03, 0x02, 0x02, 0x06, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0x07, 0xe6, 0xe5, 0x20, 0x15, 0x07,
-0x01, 0x07, 0x01, 0x18, 0xe5, 0xe5, 0xe5, 0x08,
-0x05, 0x03, 0x05, 0x03, 0x0f, 0x02, 0x06, 0x01,
-0x03, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe8, 0x22, 0x0c, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x0c, 0x09, 0xe5,
-0xe7, 0x03, 0x04, 0x01, 0x03, 0x01, 0x03, 0x02,
-0x04, 0x04, 0x07, 0x01, 0x02, 0x05, 0xe5, 0x02,
-0xe7, 0x03, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04,
-0xe5, 0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe6,
-0x06, 0x03, 0x21, 0x09, 0x02, 0x04, 0x0b, 0x02,
-0x1e, 0x05, 0x35, 0xe5, 0x09, 0x09, 0x09, 0x73,
-0xe5, 0xe5, 0x0e, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x02,
-0x04, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0x04, 0x04, 0x01,
-0x02, 0x04, 0xe6, 0x06, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x08, 0x01, 0x02, 0xe5, 0x03,
-0x26, 0x01, 0x11, 0xe5, 0x26, 0xe6, 0x04, 0x07,
-0x04, 0xe5, 0x02, 0x06, 0x01, 0x0c, 0x04, 0x09,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x0c, 0xe5, 0x01, 0xe5, 0x1d, 0x08, 0x04,
-0x06, 0x0e, 0x08, 0x01, 0x0c, 0x0c, 0xe5, 0x09,
-0x08, 0x01, 0x02, 0x0a, 0x11, 0x01, 0x01, 0x03,
-0x09, 0x05, 0x03, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x04, 0x24,
-0x13, 0xe5, 0x08, 0x37, 0x02, 0x0f, 0x03, 0x01,
-0x01, 0x01, 0xe5, 0x01, 0x08, 0x05, 0x03, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x10, 0xe8, 0x2a, 0x01, 0x06, 0xe5,
-0x01, 0x0c, 0x05, 0x0a, 0x03, 0x06, 0x0f, 0x01,
-0x0f, 0x08, 0x0d, 0xe5, 0xe6, 0x03, 0x15, 0x74,
-0xe5, 0xe6, 0x28, 0x04, 0x09, 0x04, 0x0c, 0x23,
-0x02, 0x01, 0x25, 0x04, 0x0a, 0x01, 0x0a, 0xe5,
-0x03, 0x71, 0xe8, 0x17, 0xe5, 0x0d, 0x02, 0x05,
-0x01, 0x21, 0x0a, 0x0c, 0x05, 0x02, 0x01, 0x0d,
-0xe5, 0xe5, 0x06, 0x07, 0x01, 0x0d, 0x07, 0x09,
-0x16, 0x5b, 0x01, 0xe6, 0x1b, 0x09, 0x04, 0x01,
-0x25, 0xe5, 0x07, 0x01, 0x01, 0x0f, 0x01, 0x0e,
-0xe5, 0xe5, 0x01, 0x06, 0x01, 0xe5, 0x02, 0x02,
-0xe6, 0x05, 0x02, 0x0a, 0x04, 0x03, 0x04, 0x6f,
-0xe6, 0xe5, 0x25, 0x2c, 0x1a, 0x05, 0x0e, 0x01,
-0x04, 0x07, 0xe5, 0x04, 0x03, 0x09, 0x0b, 0x04,
-0xe5, 0x01, 0x71, 0x01, 0xe6, 0x2f, 0x11, 0x04,
-0x05, 0x05, 0x01, 0x12, 0x07, 0x04, 0x04, 0x07,
-0x01, 0x06, 0xe5, 0xe5, 0x04, 0x01, 0x01, 0xe5,
-0x06, 0x02, 0x06, 0x02, 0xe7, 0x04, 0x76, 0x03,
-0x25, 0x09, 0x09, 0x0c, 0x13, 0x0d, 0x02, 0x14,
-0x12, 0xe5, 0x03, 0xe5, 0x16, 0x7e, 0xe5, 0x2c,
-0x25, 0x01, 0x01, 0x03, 0x01, 0x01, 0x13, 0x04,
-0x06, 0x04, 0x02, 0x09, 0x1a, 0x0a, 0x7a, 0xe5,
-0x1f, 0x01, 0x02, 0x06, 0x01, 0x07, 0x0b, 0x0a,
-0x0b, 0x13, 0x02, 0x01, 0x02, 0x0f, 0x02, 0xe5,
-0xe5, 0x01, 0x01, 0x15, 0x13, 0x0e, 0x13, 0x4e,
-0x01, 0x02, 0x2a, 0xe6, 0x09, 0x0c, 0x1f, 0x0c,
-0x0d, 0x0f, 0x17, 0x04, 0x0d, 0x05, 0x6b, 0x05,
-0xe6, 0x32, 0x24, 0xe5, 0x04, 0x01, 0xe5, 0x05,
-0x14, 0x04, 0x0d, 0x0b, 0xe5, 0x0d, 0x03, 0xe5,
-0x06, 0xe5, 0x6d, 0x01, 0xe5, 0x01, 0x02, 0x01,
-0x1c, 0x0b, 0x08, 0xe5, 0x0b, 0x13, 0xe6, 0x05,
-0x02, 0x01, 0x03, 0x06, 0xe5, 0x1b, 0xe5, 0x01,
-0x0b, 0x05, 0xe5, 0x07, 0xe5, 0xe5, 0x09, 0x6b,
-0x02, 0x01, 0xe5, 0x01, 0x04, 0x18, 0xe5, 0x01,
-0x01, 0x0e, 0xe5, 0x06, 0xe5, 0x01, 0x1a, 0xe5,
-0xe5, 0x14, 0x0e, 0x01, 0xe5, 0xe5, 0x08, 0x15,
-0x04, 0xe5, 0xe5, 0xe5, 0x01, 0x6e, 0xe5, 0x03,
-0x04, 0x01, 0xe6, 0x01, 0x11, 0xe5, 0x07, 0xe5,
-0x02, 0x04, 0x09, 0x02, 0x06, 0x34, 0x13, 0x01,
-0x07, 0x15, 0x06, 0x02, 0x01, 0x71, 0xe5, 0x05,
-0x02, 0x03, 0x29, 0xe5, 0x07, 0x01, 0x01, 0x05,
-0x08, 0x01, 0x0a, 0x08, 0xe5, 0xe5, 0x01, 0x01,
-0x01, 0x13, 0x05, 0x0a, 0x02, 0x0c, 0x04, 0x0b,
-0xe7, 0xe5, 0x02, 0x02, 0x02, 0x06, 0x6a, 0x03,
-0xe5, 0x01, 0x18, 0x04, 0xe5, 0x02, 0x03, 0x03,
-0x01, 0x04, 0x02, 0x01, 0x04, 0x04, 0x02, 0x01,
-0x0e, 0x01, 0x01, 0xe6, 0xe5, 0xe5, 0x01, 0x01,
-0x11, 0xe6, 0x0d, 0x0c, 0x01, 0x04, 0x02, 0x03,
-0x07, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x01, 0xe5,
-0x06, 0x6a, 0x03, 0x01, 0xe5, 0x1d, 0x01, 0x01,
-0x07, 0x07, 0x09, 0x01, 0x13, 0x09, 0x01, 0x01,
-0x16, 0x06, 0x02, 0x01, 0xe5, 0xe5, 0x12, 0x07,
-0x08, 0x02, 0x01, 0x02, 0x06, 0x73, 0xe7, 0x16,
-0x0b, 0x09, 0x07, 0x27, 0x01, 0x02, 0x13, 0x02,
-0x0b, 0x01, 0x0c, 0x08, 0x02, 0x09, 0x02, 0x01,
-0x01, 0x02, 0x01, 0x01, 0xe5, 0x73, 0x02, 0xe5,
-0x1c, 0x02, 0x06, 0x09, 0x02, 0x06, 0x02, 0x06,
-0xe5, 0x1b, 0xe5, 0x18, 0x22, 0x02, 0x10, 0x09,
-0x6d, 0xe6, 0xe6, 0x1d, 0xe5, 0x07, 0x01, 0x07,
-0x13, 0x1a, 0xe5, 0xe5, 0x05, 0x09, 0x08, 0xe5,
-0x12, 0x0e, 0xe5, 0x04, 0x09, 0x04, 0x04, 0x02,
-0x01, 0x6f, 0xe5, 0x0d, 0x04, 0x01, 0x02, 0x02,
-0x03, 0x02, 0x02, 0x01, 0xe6, 0x01, 0x05, 0x03,
-0x04, 0x01, 0x02, 0x02, 0xe5, 0x04, 0x09, 0x06,
-0x02, 0x03, 0x05, 0x09, 0x09, 0xe6, 0x06, 0x06,
-0x02, 0x0b, 0x09, 0x09, 0x09, 0x05, 0x03, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x06, 0x06, 0xe5, 0x02, 0x02, 0x13, 0x06, 0x02,
-0x09, 0x13, 0x13, 0x08, 0xe5, 0x03, 0x2b, 0xe5,
-0x23, 0x71, 0x08, 0xe8, 0x12, 0x0a, 0x0a, 0x12,
-0x14, 0x07, 0x07, 0x09, 0x21, 0x25, 0x7a, 0xe6,
-0xe5, 0xe5, 0x16, 0x07, 0x01, 0x09, 0x07, 0x1d,
-0x01, 0x0c, 0x09, 0x04, 0x04, 0x07, 0xe5, 0x04,
-0x0e, 0x0b, 0x09, 0x04, 0x01, 0x02, 0x09, 0x4a,
-0x01, 0x25, 0xe5, 0x16, 0x02, 0x06, 0x01, 0xe5,
-0x08, 0x08, 0xe5, 0x08, 0x10, 0x02, 0x09, 0xe5,
-0x08, 0x05, 0x03, 0x01, 0x07, 0x05, 0x02, 0x06,
-0x03, 0x01, 0xe5, 0x07, 0x02, 0x02, 0x03, 0x01,
-0x03, 0x01, 0x01, 0x02, 0x05, 0xe5, 0xe5, 0x48,
-0x01, 0xe5, 0x20, 0x01, 0xe6, 0x22, 0x11, 0x1d,
-0x01, 0x09, 0x04, 0x09, 0x02, 0x05, 0xe5, 0x05,
-0x02, 0x02, 0x06, 0x09, 0x04, 0x01, 0x04, 0x0c,
-0x01, 0x03, 0xe5, 0x03, 0x4d, 0x01, 0x22, 0xe8,
-0x14, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07,
-0xe6, 0x06, 0xe6, 0x06, 0xe5, 0x01, 0x01, 0x05,
-0xe6, 0x06, 0xe6, 0xe5, 0x04, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe5,
-0xe6, 0x18, 0x07, 0x01, 0x11, 0x1d, 0x01, 0xe5,
-0x26, 0x09, 0xe5, 0x24, 0x01, 0xe6, 0x79, 0x02,
-0xe5, 0x16, 0x09, 0x01, 0x13, 0x1b, 0x02, 0x38,
-0x15, 0x09, 0x01, 0x80, 0x19, 0x09, 0x11, 0x09,
-0x13, 0x01, 0x09, 0x1e, 0x1b, 0x20, 0x74, 0x01,
-0x17, 0x09, 0x15, 0x09, 0x11, 0x02, 0x0b, 0x09,
-0x09, 0x09, 0x07, 0x06, 0x04, 0x0b, 0x04, 0x04,
-0x09, 0x06, 0x02, 0x6f, 0xe6, 0xe5, 0x19, 0xe5,
-0x04, 0x09, 0x02, 0x07, 0x01, 0x06, 0x13, 0x01,
-0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0x20, 0x02, 0x01,
-0xe5, 0x09, 0x1d, 0xe6, 0x02, 0x06, 0x15, 0x32,
-0x1c, 0x09, 0x03, 0x01, 0x0f, 0x01, 0x07, 0x01,
-0x01, 0xe5, 0xe5, 0x01, 0x01, 0x04, 0x02, 0x01,
-0x01, 0xe5, 0x03, 0x01, 0x03, 0x03, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x01, 0x01, 0x03,
-0x01, 0xe6, 0x04, 0x01, 0xe5, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x0b, 0xe7, 0x16, 0x13, 0x12,
-0x12, 0x02, 0x02, 0x07, 0x15, 0x1b, 0xe6, 0x03,
-0x04, 0xe5, 0x04, 0x09, 0x0c, 0xe5, 0x66, 0x09,
-0x01, 0x01, 0xe5, 0x13, 0x05, 0x16, 0x13, 0x09,
-0x0e, 0x0f, 0x09, 0x09, 0x0c, 0xe5, 0x03, 0x05,
-0xe5, 0x0d, 0x05, 0x06, 0x01, 0x0e, 0x42, 0x1f,
-0x03, 0xe5, 0x33, 0x04, 0x1f, 0x2e, 0x0b, 0x04,
-0xe5, 0x16, 0x17, 0x10, 0x03, 0xe5, 0x4c, 0xe6,
-0xe5, 0x18, 0xe5, 0x07, 0x04, 0x0a, 0x01, 0x07,
-0x01, 0x01, 0x31, 0x0d, 0x03, 0x01, 0x10, 0x02,
-0x01, 0x11, 0x01, 0x01, 0x04, 0x03, 0xe5, 0x0b,
-0x13, 0x2a, 0xe6, 0x20, 0xe5, 0xe7, 0x16, 0x0a,
-0x04, 0x10, 0x08, 0x15, 0x03, 0x2a, 0xe5, 0x02,
-0x02, 0x05, 0x04, 0x01, 0x02, 0x10, 0x02, 0x05,
-0x75, 0x01, 0x01, 0x2d, 0x09, 0x07, 0x16, 0x1a,
-0x0b, 0x04, 0x09, 0x0c, 0x16, 0xe5, 0x07, 0xe5,
-0x01, 0x06, 0x2a, 0x18, 0x05, 0x0c, 0x04, 0x0b,
-0xe5, 0x02, 0x0d, 0x0c, 0x11, 0x09, 0x0c, 0x19,
-0x0c, 0x10, 0xe5, 0x07, 0x06, 0x0c, 0x07, 0x17,
-0x09, 0xe5, 0x0b, 0x08, 0x53, 0x02, 0xe5, 0x04,
-0x09, 0x4f, 0x04, 0x14, 0x03, 0x09, 0x02, 0x0e,
-0x05, 0x0b, 0x08, 0x04, 0x09, 0x6d, 0xe5, 0x04,
-0x07, 0xe6, 0x07, 0x09, 0x02, 0x13, 0x09, 0x03,
-0x01, 0x0f, 0x07, 0x10, 0x09, 0x03, 0x03, 0x06,
-0x02, 0x01, 0x07, 0xe6, 0x02, 0x02, 0x02, 0x09,
-0x0e, 0x68, 0x03, 0x03, 0x03, 0x05, 0x0a, 0x08,
-0x09, 0x06, 0x04, 0xe5, 0x17, 0x0d, 0x1b, 0x05,
-0x03, 0x0b, 0x08, 0x01, 0x04, 0x13, 0x08, 0x01,
-0x75, 0x03, 0x0b, 0x06, 0x04, 0x01, 0x13, 0x06,
-0x02, 0x04, 0x05, 0x0a, 0x0e, 0xe5, 0xe5, 0x23,
-0x18, 0x13, 0x07, 0x01, 0x07, 0x01, 0x05, 0x01,
-0x01, 0x39, 0x01, 0x23, 0xe8, 0x0d, 0x09, 0x02,
-0x0f, 0xe5, 0x07, 0xe5, 0x0b, 0x1a, 0xe7, 0x01,
-0x06, 0x09, 0x01, 0x0e, 0x09, 0x01, 0x09, 0x12,
-0x03, 0x1a, 0x03, 0x35, 0x01, 0x10, 0x07, 0xe5,
-0x08, 0x01, 0xe5, 0x0e, 0x09, 0x12, 0x09, 0x05,
-0x1a, 0x07, 0x26, 0x0a, 0x09, 0x01, 0x10, 0x04,
-0x0c, 0x0d, 0x62, 0xe7, 0x18, 0x09, 0xe5, 0x03,
-0x0f, 0xe5, 0x04, 0xe5, 0x15, 0xe5, 0x04, 0x01,
-0xe5, 0x08, 0xe5, 0x04, 0x02, 0x01, 0x04, 0x02,
-0xe5, 0xe5, 0x02, 0x09, 0x0b, 0x13, 0x19, 0x03,
-0x13, 0x46, 0x01, 0x02, 0xe5, 0x01, 0x01, 0x08,
-0x0c, 0x06, 0x02, 0x06, 0xe5, 0x07, 0xe5, 0x04,
-0x01, 0x1b, 0xe5, 0x07, 0x01, 0x07, 0x01, 0x03,
-0x03, 0x01, 0x03, 0x02, 0xe5, 0x01, 0xe5, 0x01,
-0x05, 0xe5, 0xe5, 0x0b, 0x02, 0x01, 0x0a, 0x02,
-0x06, 0xe5, 0x0e, 0xe5, 0xe7, 0x14, 0x43, 0x02,
-0x01, 0x01, 0xe6, 0x03, 0x05, 0xe5, 0x14, 0x09,
-0x01, 0x03, 0xe5, 0x03, 0x0b, 0x16, 0xe5, 0xe5,
-0x02, 0x1f, 0xe5, 0x03, 0x02, 0x06, 0x1a, 0xe5,
-0x07, 0x01, 0x02, 0x04, 0xe5, 0x02, 0x04, 0x01,
-0x04, 0x51, 0xe5, 0x03, 0x04, 0xe8, 0x01, 0x07,
-0xe5, 0x01, 0x0f, 0x02, 0x09, 0x09, 0x4b, 0xe5,
-0x01, 0x09, 0x1c, 0xe5, 0xe5, 0x05, 0x02, 0x05,
-0xe5, 0x01, 0x01, 0x04, 0xe5, 0x07, 0x04, 0x49,
-0xe5, 0x05, 0x02, 0xe5, 0xe6, 0x0e, 0xe5, 0x0d,
-0x06, 0x01, 0x01, 0xe5, 0xe5, 0x08, 0x04, 0x01,
-0x1e, 0x01, 0x04, 0x01, 0x05, 0x09, 0x04, 0x01,
-0x02, 0x04, 0x01, 0x06, 0x02, 0x04, 0x01, 0x1e,
-0x01, 0x01, 0x03, 0x02, 0xe5, 0xe5, 0x06, 0x01,
-0x05, 0x04, 0x52, 0xe9, 0x01, 0x0a, 0x02, 0xe5,
-0x03, 0x0a, 0x04, 0xe5, 0x01, 0x04, 0x04, 0xe5,
-0x02, 0x23, 0x01, 0x01, 0x02, 0x01, 0x14, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x02, 0xe7, 0x02, 0x01,
-0x02, 0x16, 0x03, 0x01, 0x02, 0xe5, 0x02, 0x04,
-0xe5, 0xe5, 0xe5, 0x01, 0x01, 0xe5, 0xe5, 0x0f,
-0x4b, 0x03, 0xe7, 0x12, 0xe5, 0x0a, 0x09, 0x01,
-0x05, 0x01, 0x01, 0x25, 0x01, 0x02, 0x08, 0x0c,
-0x01, 0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x09, 0x04,
-0x0b, 0x01, 0x0a, 0x01, 0x07, 0x01, 0x04, 0xe7,
-0xe5, 0x18, 0x50, 0x01, 0x13, 0xe6, 0x05, 0xe6,
-0x01, 0x04, 0x36, 0x01, 0x02, 0x09, 0xe6, 0x05,
-0xe7, 0x01, 0x01, 0x02, 0x04, 0x01, 0x07, 0x04,
-0x01, 0xe6, 0x06, 0x01, 0x08, 0xe5, 0x01, 0x01,
-0x02, 0x04, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x6a,
-0xe5, 0x0f, 0x02, 0x09, 0x02, 0x10, 0x02, 0x2e,
-0xe5, 0x0e, 0x09, 0x0c, 0x02, 0x14, 0x11, 0x09,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x4c,
-0xe9, 0x13, 0x01, 0x07, 0xe5, 0x07, 0x09, 0xe5,
-0x07, 0xe5, 0x25, 0x0f, 0xe6, 0x06, 0xe6, 0x07,
-0x02, 0x06, 0x0b, 0xe5, 0x07, 0x0c, 0x01, 0x04,
-0x02, 0xe5, 0x07, 0x06, 0x02, 0xe5, 0x58, 0xe8,
-0x08, 0x01, 0x02, 0x02, 0x02, 0x03, 0x06, 0x02,
-0x04, 0xe6, 0x01, 0x02, 0x06, 0x09, 0x09, 0x09,
-0x06, 0x02, 0x03, 0x05, 0x09, 0xe5, 0x07, 0xe6,
-0x03, 0x02, 0x03, 0x02, 0x02, 0x06, 0x04, 0x09,
-0x09, 0x03, 0x05, 0x06, 0x02, 0x02, 0xe5, 0x04,
-0x06, 0x02, 0x06, 0x02, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x06, 0x06, 0xe9, 0x01, 0x09, 0x09,
-0x08, 0xe5, 0x12, 0x26, 0xe5, 0x17, 0x09, 0x03,
-0x09, 0xe5, 0x05, 0x02, 0x1f, 0x06, 0x02, 0x12,
-0xe5, 0x07, 0x45, 0x08, 0x01, 0x01, 0x0b, 0x09,
-0x09, 0x11, 0x27, 0x1b, 0x13, 0x03, 0x05, 0x03,
-0x07, 0x09, 0x0d, 0x05, 0x02, 0x14, 0x5c, 0x01,
-0x0e, 0xe5, 0x01, 0x02, 0x01, 0x0c, 0x03, 0x02,
-0x07, 0x27, 0x01, 0x14, 0xe6, 0x06, 0x01, 0x04,
-0x01, 0x02, 0x06, 0x02, 0x08, 0x02, 0x09, 0x06,
-0x04, 0x04, 0x02, 0x03, 0xe5, 0x08, 0x01, 0x02,
-0x07, 0x03, 0x07, 0x24, 0x23, 0xe7, 0x0c, 0x01,
-0x07, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x08,
-0x05, 0x03, 0x23, 0xe5, 0xe7, 0x08, 0x09, 0x09,
-0x05, 0x01, 0xe6, 0x04, 0x03, 0x02, 0x08, 0x02,
-0x06, 0x07, 0xe6, 0x01, 0x01, 0xe5, 0xe7, 0x04,
-0x02, 0x03, 0x04, 0xe6, 0xe5, 0x01, 0x0e, 0x25,
-0xe5, 0x1d, 0x02, 0xe8, 0x0e, 0x01, 0x07, 0x04,
-0x08, 0x03, 0x01, 0x18, 0x16, 0x10, 0x06, 0x01,
-0x09, 0x03, 0x01, 0x04, 0x04, 0x03, 0x07, 0x03,
-0xe5, 0x0a, 0x0c, 0x07, 0x0b, 0x06, 0x34, 0x22,
-0xe5, 0x01, 0x0f, 0x05, 0xe6, 0xe5, 0x04, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5,
-0x05, 0xe7, 0x06, 0xe6, 0x05, 0x01, 0xe6, 0xe5,
-0x02, 0x01, 0xe6, 0x05, 0xe6, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x03, 0x02,
-0x08, 0xe5, 0x07, 0xe5, 0x06, 0x01, 0x01, 0x0f,
-0x09, 0xe6, 0x1a, 0x14, 0x10, 0x01, 0x10, 0x09,
-0x06, 0x02, 0xe5, 0xe5, 0x05, 0x02, 0xe6, 0x03,
-0x04, 0xe6, 0x1a, 0xe5, 0x05, 0x0b, 0x09, 0x07,
-0x29, 0x03, 0x1c, 0x01, 0xe6, 0xe5, 0x0e, 0x09,
-0x07, 0x01, 0x09, 0x09, 0x14, 0x10, 0x01, 0x0f,
-0xe5, 0x08, 0x08, 0xe6, 0xe5, 0x04, 0xe6, 0xe5,
-0x05, 0x20, 0x01, 0x13, 0x07, 0x0b, 0x27, 0x22,
-0x03, 0x0f, 0x09, 0x11, 0x31, 0x0f, 0xe6, 0x07,
-0x0a, 0x03, 0x03, 0x01, 0x03, 0x04, 0x03, 0x02,
-0x1d, 0xe5, 0x05, 0x0b, 0x11, 0x29, 0x05, 0x1c,
-0x01, 0x01, 0x0f, 0x09, 0xe5, 0xe5, 0x08, 0x06,
-0x1e, 0x10, 0x01, 0x02, 0x09, 0xe5, 0x07, 0x01,
-0x07, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x09, 0x09, 0x09, 0x06, 0x02, 0x10, 0x02,
-0x10, 0x02, 0x24, 0x03, 0x1f, 0x02, 0x0d, 0x02,
-0x0a, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5,
-0x03, 0x02, 0x24, 0x02, 0x1e, 0x05, 0x02, 0x21,
-0x04, 0x0a, 0x01, 0x06, 0x01, 0xe5, 0x02, 0x0c,
-0x01, 0xe5, 0x09, 0x0a, 0x3e, 0xe7, 0xe5, 0x06,
-0x03, 0x03, 0x01, 0x07, 0x01, 0xe5, 0x02, 0x02,
-0xe6, 0x03, 0x02, 0x01, 0x07, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5,
-0x02, 0x02, 0x01, 0x07, 0x01, 0x04, 0x04, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x03, 0x03,
-0x01, 0x06, 0xe5, 0xe5, 0x03, 0x02, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0a, 0xe5,
-0x01, 0x0d, 0x17, 0x04, 0x05, 0x04, 0xe5, 0x25,
-0xe5, 0x1d, 0x01, 0x05, 0x01, 0xe5, 0x14, 0x03,
-0xe5, 0x0b, 0x0a, 0x20, 0x06, 0x01, 0x44, 0x06,
-0xe6, 0x1e, 0x13, 0x05, 0x1f, 0x05, 0x0c, 0x09,
-0xe5, 0x14, 0x06, 0x05, 0x05, 0x0a, 0x13, 0x14,
-0x07, 0x09, 0x45, 0x03, 0xe5, 0x14, 0x1a, 0x25,
-0xe5, 0x24, 0x07, 0x01, 0xe5, 0x04, 0x09, 0xe5,
-0x10, 0x0e, 0x27, 0x4c, 0x01, 0xe5, 0x0c, 0x09,
-0x01, 0x05, 0x03, 0x01, 0x01, 0x03, 0x01, 0x01,
-0xe5, 0x05, 0x01, 0x21, 0x0e, 0x09, 0x09, 0x10,
-0x01, 0x11, 0x05, 0x05, 0x05, 0xe5, 0x0b, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x09, 0x49, 0x01, 0x01,
-0xe5, 0x0a, 0x04, 0x06, 0x02, 0xe5, 0x02, 0x01,
-0x05, 0xe5, 0x03, 0x02, 0x3e, 0x20, 0x01, 0x04,
-0x01, 0x09, 0x05, 0x07, 0x04, 0x08, 0x05, 0x08,
-0xe5, 0x01, 0x07, 0x53, 0xe5, 0x01, 0x1d, 0x04,
-0xe5, 0x06, 0xe6, 0x06, 0xe6, 0x1c, 0x12, 0xe5,
-0x14, 0x11, 0xe6, 0x03, 0xe5, 0x02, 0x02, 0x05,
-0xe5, 0x01, 0xe5, 0x16, 0x0f, 0x03, 0x06, 0x02,
-0xe6, 0x08, 0x3f, 0x02, 0x01, 0x17, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x03, 0x17,
-0xe6, 0x0a, 0x05, 0x01, 0x02, 0x04, 0x04, 0x07,
-0x10, 0xe5, 0x04, 0x02, 0x01, 0xe5, 0x01, 0x12,
-0x01, 0x1b, 0x02, 0x08, 0x04, 0x01, 0x07, 0xe6,
-0x43, 0x12, 0x08, 0x2b, 0x26, 0x04, 0x15, 0xe6,
-0x04, 0x07, 0x03, 0x36, 0x01, 0x04, 0x40, 0x11,
-0xe5, 0xe6, 0x10, 0x10, 0x36, 0x0a, 0x1b, 0x05,
-0x05, 0x0c, 0x0a, 0x0b, 0x0c, 0x0e, 0x03, 0x06,
-0xe5, 0x38, 0x1b, 0xe6, 0xe5, 0x08, 0x13, 0x04,
-0x0e, 0x4e, 0x06, 0x01, 0x0f, 0x17, 0x0f, 0x0f,
-0x05, 0xe5, 0x58, 0x17, 0x01, 0x09, 0x06, 0x26,
-0x22, 0x02, 0x09, 0x07, 0x1d, 0xe5, 0x19, 0x01,
-0x05, 0x05, 0x07, 0x09, 0xe5, 0x07, 0x44, 0xe5,
-0x10, 0x06, 0x0a, 0x05, 0x10, 0x19, 0x20, 0x11,
-0x1e, 0x09, 0x02, 0x10, 0x05, 0x14, 0x02, 0x4b,
-0x01, 0xe5, 0x0b, 0x0b, 0x08, 0x08, 0x13, 0x16,
-0x20, 0x2e, 0x01, 0x09, 0x13, 0x11, 0x09, 0xe5,
-0x01, 0x05, 0x45, 0xe7, 0x10, 0xe5, 0x05, 0xe5,
-0x49, 0x03, 0x0f, 0x03, 0x09, 0x1b, 0x02, 0xe5,
-0x08, 0x02, 0xe5, 0x07, 0x01, 0x18, 0x02, 0xe5,
-0x04, 0xe5, 0x24, 0x1d, 0x01, 0x02, 0x01, 0xe5,
-0x01, 0x01, 0x0e, 0xe5, 0x0b, 0xe5, 0x2f, 0x1d,
-0x0b, 0x0a, 0x06, 0x0b, 0xe5, 0x09, 0x01, 0x08,
-0x03, 0xe5, 0x07, 0xe5, 0x18, 0x02, 0x01, 0x4b,
-0x01, 0x02, 0xe5, 0x03, 0x0f, 0xe5, 0xe5, 0xe5,
-0xe5, 0x06, 0xe5, 0x02, 0x01, 0x06, 0xe5, 0x1c,
-0xe5, 0x02, 0x11, 0x03, 0x0f, 0x03, 0x1b, 0x06,
-0xe5, 0xe5, 0xe5, 0x2b, 0x01, 0x0e, 0x49, 0x02,
-0x02, 0x11, 0xe5, 0xe5, 0x08, 0xe5, 0x04, 0xe5,
-0x25, 0xe5, 0xe5, 0x1c, 0x0b, 0x11, 0x06, 0x04,
-0x06, 0x34, 0x10, 0xe5, 0x02, 0x3a, 0x02, 0x01,
-0x02, 0xe6, 0x16, 0x01, 0x02, 0x04, 0x01, 0xe6,
-0x01, 0x01, 0x07, 0x01, 0x1e, 0x13, 0x01, 0x09,
-0x02, 0x01, 0x01, 0xe5, 0xe5, 0x0b, 0x04, 0x06,
-0xe6, 0x01, 0x04, 0x01, 0xe6, 0x01, 0x04, 0x01,
-0x0f, 0x09, 0x10, 0x02, 0xe5, 0x01, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0x38,
-0xe5, 0xe5, 0xe5, 0x01, 0x02, 0x11, 0x04, 0xe5,
-0x01, 0x03, 0xe5, 0xe5, 0x01, 0x04, 0x09, 0x02,
-0x01, 0x18, 0x04, 0x0a, 0x05, 0x02, 0xe5, 0xe5,
-0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x02, 0x02, 0x0a,
-0x01, 0x03, 0x02, 0x04, 0x02, 0x03, 0xe5, 0x02,
-0x02, 0x01, 0x28, 0x04, 0x03, 0x05, 0x04, 0x01,
-0x01, 0x04, 0x37, 0xe8, 0xe6, 0x1a, 0x04, 0x01,
-0x2f, 0x07, 0x0b, 0x01, 0x09, 0x03, 0xe5, 0x01,
-0x01, 0x0d, 0xe5, 0x01, 0x04, 0x01, 0x04, 0x06,
-0xe7, 0xe5, 0x15, 0xe6, 0x08, 0x0e, 0x05, 0x01,
-0x01, 0x07, 0x01, 0x05, 0x3a, 0xe6, 0xe5, 0x1b,
-0x0a, 0xe5, 0x01, 0x09, 0x1f, 0x11, 0x04, 0x04,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x08, 0xe5,
-0xe5, 0x01, 0x01, 0x02, 0x02, 0x03, 0x04, 0x01,
-0x01, 0x06, 0xe5, 0x06, 0x08, 0xe5, 0x07, 0xe5,
-0xe6, 0x0f, 0x09, 0x04, 0x01, 0x21, 0xe5, 0x1b,
-0xe7, 0xe5, 0x23, 0x16, 0x02, 0x17, 0x16, 0x02,
-0x08, 0x07, 0x02, 0x03, 0x04, 0x13, 0x02, 0x10,
-0x06, 0x09, 0x04, 0x0e, 0x02, 0x02, 0x10, 0x02,
-0x3a, 0xe7, 0x1d, 0x09, 0x13, 0x1a, 0x02, 0x10,
-0xe5, 0x08, 0x08, 0xe5, 0x06, 0xe6, 0x07, 0xe5,
-0xe5, 0x0a, 0x09, 0x09, 0xe6, 0x02, 0xe5, 0x07,
-0xe5, 0x12, 0x02, 0x13, 0xe5, 0x3b, 0xe7, 0x0d,
-0x09, 0x03, 0x05, 0x05, 0xe5, 0x01, 0x04, 0x01,
-0x02, 0x03, 0x05, 0x09, 0x06, 0x02, 0x01, 0x03,
-0x03, 0x09, 0x06, 0x02, 0x09, 0x09, 0xe5, 0x07,
-0x05, 0xe5, 0x03, 0x04, 0xe6, 0x01, 0x04, 0xe6,
-0x01, 0x09, 0xe5, 0x04, 0x02, 0xe5, 0x07, 0x06,
-0x02, 0x01, 0x03, 0x03, 0x04, 0x01, 0x02, 0x02,
-0x06, 0x09, 0x09, 0x09, 0x09, 0x0d, 0xe5, 0xe5,
-0xe5, 0x01, 0x26, 0x27, 0xe5, 0x12, 0x04, 0x03,
-0xe5, 0x03, 0x09, 0x09, 0x04, 0x04, 0x01, 0x0e,
-0x09, 0x12, 0xe5, 0x11, 0xe5, 0x12, 0x43, 0x01,
-0xe6, 0x50, 0x13, 0x09, 0x19, 0x03, 0x13, 0x0a,
-0x10, 0x03, 0x05, 0x0d, 0x11, 0x46, 0x01, 0x01,
-0x01, 0x12, 0x07, 0x01, 0x02, 0x02, 0x08, 0x09,
-0x18, 0x04, 0xe5, 0x0c, 0x02, 0x01, 0x02, 0x06,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0xe5, 0xe5,
-0xe5, 0x01, 0x01, 0x02, 0x06, 0x01, 0x04, 0x04,
-0x0e, 0x05, 0xe6, 0x03, 0x02, 0xe6, 0x10, 0xe6,
-0xe5, 0x06, 0x04, 0x01, 0x40, 0xe5, 0x01, 0x14,
-0x06, 0x05, 0x01, 0x06, 0xe5, 0x01, 0x06, 0x02,
-0x17, 0x05, 0xe5, 0x0e, 0x01, 0x01, 0x01, 0x03,
-0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x01,
-0xe6, 0x04, 0x01, 0x01, 0x01, 0x05, 0x01, 0xe6,
-0x03, 0x02, 0xe5, 0x09, 0x09, 0x08, 0xe5, 0x0e,
-0x01, 0x01, 0x09, 0x05, 0x01, 0xe5, 0x42, 0x20,
-0x02, 0x09, 0x06, 0xe5, 0x1b, 0x16, 0x03, 0x05,
-0x09, 0x04, 0x02, 0x01, 0x09, 0x09, 0x01, 0x03,
-0x05, 0x07, 0x01, 0x03, 0x09, 0xe5, 0xe6, 0x04,
-0x0a, 0x04, 0xe5, 0x0e, 0xe5, 0xe5, 0x41, 0x01,
-0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe6, 0x06, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0xe5, 0x04, 0xe6, 0x06, 0xe5, 0x01, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x02, 0x04,
-0xe5, 0x02, 0x04, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0xe5, 0x01, 0x17, 0x01, 0x07, 0x01, 0xe5,
-0x11, 0x3b, 0x14, 0xe5, 0x10, 0x01, 0x0a, 0xe5,
-0x11, 0x06, 0x01, 0xe5, 0x11, 0x09, 0x09, 0x43,
-0xe5, 0x16, 0x01, 0x07, 0x01, 0xe5, 0x0f, 0x3d,
-0x27, 0x01, 0x25, 0x13, 0x0b, 0x07, 0x01, 0x40,
-0xe5, 0xe6, 0x18, 0x1b, 0x33, 0x09, 0x09, 0x13,
-0x08, 0x02, 0x09, 0x07, 0x01, 0x0a, 0x06, 0x01,
-0xe5, 0x11, 0x09, 0x09, 0x21, 0x01, 0x1c, 0xe6,
-0xe5, 0x0b, 0x0c, 0x02, 0x07, 0x12, 0x20, 0x0e,
-0x04, 0x06, 0x02, 0x04, 0x04, 0x09, 0x04, 0x04,
-0x0b, 0x07, 0x0b, 0x09, 0x04, 0x04, 0x0e, 0x04,
-0x06, 0x02, 0x04, 0x25, 0x1c, 0xe5, 0x01, 0xe5,
-0x22, 0x09, 0x06, 0x01, 0xe5, 0x19, 0x13, 0x02,
-0x06, 0x01, 0xe5, 0x19, 0x0b, 0xe5, 0xe5, 0x08,
-0x04, 0x29, 0x02, 0x06, 0x02, 0x06, 0xe5, 0xe5,
-0x3e, 0xe6, 0xe5, 0x10, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0xe6, 0x06, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x03, 0x03,
-0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x02, 0x03,
-0xe5, 0xe7, 0xe5, 0x02, 0x01, 0xe5, 0x02, 0xe5,
-0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x0a, 0xe6, 0xe5, 0x1a, 0x05, 0x01, 0x07, 0x0a,
-0x11, 0x0c, 0xe5, 0x0f, 0x1f, 0x02, 0x02, 0x0a,
-0x0c, 0x01, 0xe5, 0x01, 0x0f, 0x06, 0x03, 0x05,
-0x07, 0x02, 0xe5, 0xe5, 0x05, 0xe5, 0x01, 0x49,
-0xe5, 0xe6, 0x1b, 0x01, 0x07, 0xe5, 0x09, 0x23,
-0x22, 0x0d, 0xe5, 0x07, 0x02, 0xe5, 0x08, 0xe5,
-0x02, 0x01, 0x03, 0xe5, 0x0a, 0x05, 0x04, 0x08,
-0x03, 0x07, 0x04, 0x0a, 0x44, 0x03, 0xe5, 0x21,
-0x06, 0x12, 0x16, 0x01, 0x03, 0x08, 0x13, 0x10,
-0x10, 0xe5, 0x1f, 0x0c, 0x13, 0x52, 0x01, 0xe6,
-0x18, 0x0f, 0x03, 0x0b, 0x19, 0x01, 0x11, 0xe6,
-0x01, 0x04, 0x02, 0x06, 0x01, 0xe6, 0x04, 0x09,
-0x01, 0x09, 0x04, 0x01, 0xe5, 0x02, 0xe5, 0x0a,
-0x01, 0x06, 0x05, 0xe6, 0xe5, 0x02, 0x0d, 0xe5,
-0x02, 0xe5, 0x02, 0xe6, 0x04, 0x3c, 0xe5, 0x04,
-0x02, 0x17, 0x3d, 0x0c, 0x05, 0x06, 0x04, 0x01,
-0x04, 0x01, 0x03, 0x02, 0x03, 0x06, 0x01, 0x01,
-0x03, 0x01, 0x03, 0x07, 0x05, 0x0c, 0x0b, 0x28,
-0x3a, 0x01, 0x02, 0xe7, 0xe5, 0x09, 0x01, 0x17,
-0x04, 0x01, 0x03, 0x07, 0x06, 0x02, 0x11, 0x05,
-0x19, 0x0e, 0x16, 0x03, 0x1d, 0xe5, 0x06, 0xe5,
-0x05, 0x0a, 0x01, 0x07, 0x4b, 0x01, 0x02, 0x09,
-0x11, 0x05, 0x01, 0x11, 0x34, 0x10, 0x01, 0x02,
-0x04, 0x04, 0x07, 0x06, 0x01, 0x02, 0x06, 0x04,
-0xe5, 0x05, 0x06, 0xe5, 0x07, 0x03, 0x02, 0x0c,
-0xe5, 0x07, 0x46, 0x04, 0xe6, 0xe6, 0x1e, 0x17,
-0xe5, 0x08, 0x31, 0x0b, 0x06, 0x11, 0x01, 0x02,
-0x08, 0x0b, 0x07, 0x09, 0x11, 0x09, 0x4c, 0x01,
-0xe6, 0x19, 0x03, 0x06, 0x18, 0x0a, 0xe5, 0x04,
-0x02, 0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x02, 0x03, 0x08, 0x01, 0xe6, 0x06, 0x01,
-0x04, 0x02, 0x02, 0x02, 0x05, 0xe6, 0x16, 0x0d,
-0xe6, 0x33, 0x28, 0x01, 0xe5, 0xe5, 0x2e, 0x04,
-0x17, 0x09, 0x05, 0x03, 0x09, 0x09, 0x02, 0x0c,
-0x01, 0x05, 0x0a, 0xe6, 0x02, 0x06, 0x02, 0x28,
-0x5e, 0x01, 0xe5, 0x1a, 0x13, 0x19, 0xe6, 0x07,
-0x05, 0x03, 0x05, 0x03, 0x03, 0xe6, 0x02, 0x06,
-0x17, 0x0b, 0x13, 0x09, 0x47, 0x2a, 0xe5, 0x01,
-0xe5, 0x19, 0x07, 0x02, 0x03, 0x09, 0x07, 0x0c,
-0x01, 0x0e, 0x19, 0xe5, 0x10, 0x02, 0x05, 0x05,
-0x10, 0x09, 0x08, 0x0a, 0xe5, 0x11, 0x07, 0x01,
-0x4a, 0x01, 0x01, 0x1b, 0x07, 0x04, 0x5e, 0x0c,
-0x05, 0xe5, 0x0a, 0x06, 0xe6, 0x12, 0x07, 0x0c,
-0x0c, 0x48, 0x01, 0xe7, 0x1b, 0x01, 0x2c, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x02,
-0x01, 0xe5, 0x02, 0x01, 0xe5, 0x05, 0x09, 0x07,
-0x02, 0xe5, 0x01, 0xe5, 0x0e, 0x05, 0x09, 0x0d,
-0xe5, 0x03, 0x13, 0x3e, 0x01, 0x01, 0x01, 0x01,
-0x02, 0x01, 0x12, 0xe5, 0x04, 0xe5, 0xe5, 0x17,
-0x10, 0xe5, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x08, 0xe5, 0x01, 0xe5, 0x01, 0xe5, 0xe5, 0x01,
-0xe5, 0x05, 0x09, 0x07, 0xe5, 0xe5, 0x02, 0xe5,
-0xe6, 0x02, 0xe6, 0x0b, 0xe5, 0x07, 0xe5, 0x04,
-0xe5, 0x03, 0x06, 0x14, 0xe5, 0x3d, 0x02, 0x01,
-0xe5, 0x03, 0x14, 0x03, 0xe5, 0x03, 0xe5, 0x0c,
-0xe5, 0x07, 0x01, 0x11, 0x09, 0x09, 0x09, 0xe5,
-0xe5, 0x08, 0x01, 0x04, 0x01, 0x05, 0x0b, 0xe5,
-0x02, 0x01, 0x02, 0x04, 0x01, 0x04, 0xe5, 0x04,
-0x02, 0x01, 0xe5, 0xe5, 0x06, 0x01, 0x0d, 0xe5,
-0x08, 0xe5, 0x07, 0x01, 0x02, 0x02, 0x3d, 0xe5,
-0x01, 0x02, 0x14, 0x06, 0x02, 0xe5, 0x01, 0x0b,
-0xe5, 0x01, 0x15, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x09, 0x02, 0x01,
-0x04, 0x13, 0xe5, 0x02, 0x01, 0x07, 0x06, 0xe5,
-0x0a, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x0e, 0xe5,
-0x07, 0xe5, 0x0a, 0x01, 0x3a, 0x02, 0x01, 0x01,
-0xe5, 0xe5, 0x18, 0x04, 0xe6, 0x02, 0x05, 0x0a,
-0x01, 0x10, 0x05, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0xe6, 0x01, 0x03, 0x01, 0xe6, 0xe5, 0x01, 0x02,
-0xe6, 0x03, 0x03, 0x05, 0x06, 0x01, 0xe5, 0x05,
-0x01, 0x02, 0xe5, 0x01, 0x0a, 0x01, 0xe5, 0x02,
-0x01, 0xe5, 0xe6, 0x02, 0x01, 0x05, 0x0b, 0x01,
-0x0a, 0x01, 0x06, 0x38, 0xe6, 0x01, 0x02, 0x14,
-0x03, 0x01, 0x02, 0x03, 0xe5, 0xe5, 0xe6, 0x09,
-0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0xe5, 0x01,
-0x02, 0x09, 0x09, 0x09, 0x08, 0x05, 0x01, 0x01,
-0x02, 0xe6, 0x01, 0x01, 0x02, 0xe6, 0x0b, 0x01,
-0xe5, 0x01, 0x02, 0xe5, 0x02, 0x04, 0x0a, 0x01,
-0xe5, 0x01, 0x02, 0xe5, 0xe6, 0x01, 0x02, 0x0a,
-0x03, 0x01, 0x02, 0x04, 0x07, 0x01, 0x01, 0x01,
-0xe5, 0x35, 0x01, 0x01, 0x02, 0xe5, 0x17, 0x1b,
-0x01, 0x05, 0x3d, 0x01, 0x01, 0x09, 0x09, 0x01,
-0xe5, 0x03, 0x01, 0x02, 0x04, 0x01, 0x03, 0xe6,
-0xe5, 0xe5, 0x06, 0x01, 0x07, 0x01, 0x0b, 0xe7,
-0x17, 0x3f, 0x01, 0x02, 0x17, 0x1f, 0x07, 0x0b,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x04,
-0x09, 0x01, 0x02, 0x09, 0x09, 0x01, 0x01, 0x02,
-0x01, 0xe5, 0x05, 0x03, 0xe5, 0x03, 0x01, 0x02,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x0a, 0x01,
-0x0c, 0x09, 0x01, 0x3f, 0xe5, 0x02, 0x24, 0x02,
-0x02, 0x10, 0x02, 0x06, 0x03, 0x09, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x09, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x0b, 0x09, 0x02, 0x02, 0x06, 0xe5, 0x04,
-0x02, 0x02, 0x03, 0x02, 0x06, 0x04, 0x07, 0x02,
-0x06, 0x02, 0x43, 0x03, 0x28, 0x13, 0xe5, 0x09,
-0x10, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x03, 0x03,
-0xe5, 0x04, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x01,
-0x01, 0x03, 0xe5, 0x13, 0xe5, 0x01, 0xe5, 0x04,
-0x02, 0xe5, 0x07, 0x09, 0x01, 0x03, 0xe5, 0x15,
-0x45, 0x01, 0xe7, 0x0d, 0x09, 0x04, 0x01, 0x02,
-0x02, 0x02, 0x03, 0x06, 0x02, 0x02, 0x06, 0x02,
-0x06, 0x07, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01,
-0x09, 0x06, 0x02, 0xe6, 0xe5, 0x01, 0x02, 0xe6,
-0xe5, 0x04, 0xe6, 0x08, 0xe5, 0x07, 0xe5, 0xe5,
-0x02, 0x02, 0x04, 0x01, 0x02, 0xe5, 0x03, 0x03,
-0xe5, 0x01, 0x05, 0xe6, 0x03, 0x02, 0x09, 0x03,
-0x05, 0x02, 0x06, 0x09, 0x09, 0x09, 0x09, 0x0d,
-0x01, 0x01, 0xe5, 0x01, 0x1d, 0x10, 0x02, 0x09,
-0x13, 0xe5, 0xe5, 0x02, 0x03, 0x01, 0x06, 0xe5,
-0xe5, 0x05, 0x08, 0xe5, 0x07, 0xe5, 0x27, 0xe5,
-0x08, 0x09, 0x12, 0xe5, 0x12, 0x43, 0x03, 0x1e,
-0x13, 0x08, 0x15, 0x04, 0x09, 0x04, 0x04, 0x04,
-0x09, 0x09, 0x25, 0x03, 0x09, 0x07, 0x15, 0x11,
-0x47, 0x02, 0x01, 0x1f, 0x02, 0xe5, 0x1a, 0x09,
-0x0c, 0x09, 0x09, 0x01, 0x07, 0x04, 0x01, 0xe5,
-0xe5, 0x06, 0xe6, 0x03, 0x02, 0xe6, 0x05, 0x01,
-0xe5, 0x02, 0x01, 0xe5, 0xe8, 0x03, 0x01, 0x02,
-0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x08, 0xe6,
-0x03, 0x08, 0x02, 0x07, 0x01, 0x44, 0x21, 0x01,
-0x14, 0x06, 0x02, 0x08, 0xe6, 0x08, 0x09, 0x09,
-0x09, 0x02, 0x02, 0x01, 0xe6, 0x07, 0xe5, 0x01,
-0x02, 0x01, 0xe6, 0x06, 0x01, 0x06, 0xe5, 0xe7,
-0x04, 0x01, 0x01, 0x01, 0x03, 0x01, 0x07, 0x01,
-0x0b, 0x07, 0xe5, 0x07, 0xe5, 0x04, 0xe5, 0xe6,
-0x3e, 0xe5, 0xe6, 0x20, 0x01, 0x1b, 0x0b, 0x07,
-0x09, 0x05, 0x03, 0x10, 0x01, 0xe5, 0xe5, 0x02,
-0xe5, 0xe5, 0x01, 0x03, 0x03, 0x02, 0x08, 0x01,
-0x09, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x0b, 0x07, 0x07, 0x01, 0x07, 0x01, 0x42, 0xe6,
-0x14, 0xe5, 0x07, 0xe6, 0xe6, 0x01, 0x01, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x06, 0xe7, 0xe5, 0x02,
-0xe7, 0x02, 0x02, 0x01, 0xe6, 0xe5, 0x03, 0xe6,
-0x01, 0x01, 0x05, 0xe5, 0x01, 0xe5, 0x03, 0xe6,
-0xe5, 0x04, 0xe6, 0xe5, 0x04, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe6, 0x06, 0xe6, 0xe5, 0x04, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x01, 0xe5,
-0x22, 0x03, 0x0f, 0x09, 0x09, 0x07, 0x09, 0x09,
-0x09, 0x07, 0x01, 0x0c, 0x06, 0x02, 0xe5, 0x08,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x25, 0x44, 0xe6, 0x28, 0x0d, 0x07, 0x0b,
-0x09, 0x09, 0x09, 0x06, 0x02, 0x06, 0x02, 0x03,
-0x02, 0x03, 0x05, 0xe5, 0xe5, 0x05, 0x04, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x13, 0x13, 0x42, 0xe6, 0x3e, 0x0b, 0x23, 0x03,
-0x04, 0xe5, 0x07, 0xe5, 0x06, 0x01, 0x01, 0x06,
-0x03, 0x02, 0x13, 0x09, 0x09, 0x13, 0x11, 0x46,
-0x41, 0x09, 0x02, 0x09, 0x09, 0x09, 0xe9, 0x03,
-0x01, 0x01, 0x05, 0xe5, 0xe6, 0x04, 0x01, 0xe7,
-0xe5, 0x01, 0x03, 0x04, 0x0c, 0x09, 0x04, 0x01,
-0x07, 0x01, 0x0c, 0x1a, 0x42, 0x01, 0x24, 0x1d,
-0x06, 0x09, 0x01, 0xe5, 0x05, 0x09, 0x01, 0xe5,
-0xe5, 0x03, 0x02, 0x01, 0x04, 0xe5, 0xe6, 0x1a,
-0x01, 0xe5, 0x06, 0x01, 0x13, 0x01, 0x04, 0x02,
-0x13, 0x06, 0x0c, 0x40, 0x01, 0xe5, 0xe5, 0x0e,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x04, 0x02, 0x01, 0x01, 0xe5, 0xe5,
-0x01, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x01, 0x03,
-0x01, 0xe5, 0x05, 0x01, 0x02, 0x04, 0x01, 0xe5,
-0x02, 0x01, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x04, 0x02, 0x01, 0x07, 0xe6, 0xe5, 0x04, 0x01,
-0x06, 0xe5, 0xe5, 0x06, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x08, 0x02, 0xe5, 0xe5, 0x20, 0x02, 0x0e,
-0x0b, 0x12, 0x04, 0x09, 0x0f, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x02, 0x04, 0xe5, 0x18, 0x08, 0x03,
-0x09, 0xe5, 0x0b, 0x05, 0x0e, 0x04, 0x46, 0xe5,
-0x1f, 0x41, 0x08, 0x0d, 0x0c, 0x09, 0xe5, 0x15,
-0x02, 0x01, 0x05, 0xe5, 0x12, 0x0a, 0x09, 0x01,
-0x09, 0x09, 0x38, 0xe6, 0xe6, 0x79, 0xe5, 0xe5,
-0xe5, 0x04, 0x05, 0xe5, 0x01, 0x09, 0x1c, 0x0a,
-0x08, 0x63, 0x01, 0xe6, 0x22, 0x0c, 0x04, 0x01,
-0x04, 0x12, 0x05, 0x04, 0x04, 0x09, 0x07, 0x09,
-0xe6, 0x06, 0xe6, 0x0d, 0x06, 0xe5, 0x01, 0x03,
-0xe6, 0xe5, 0x04, 0x07, 0x01, 0x01, 0x06, 0xe5,
-0xe5, 0x04, 0x0d, 0x01, 0x05, 0x08, 0x02, 0x0b,
-0x34, 0x03, 0x21, 0x0d, 0x01, 0x03, 0x01, 0x2f,
-0x07, 0x03, 0x08, 0x06, 0x02, 0x06, 0x0b, 0x01,
-0x06, 0x02, 0x08, 0x02, 0x07, 0x01, 0x0a, 0x10,
-0x0b, 0x03, 0x01, 0x01, 0x45, 0xe5, 0x22, 0x03,
-0x05, 0x02, 0x05, 0xe5, 0x02, 0x09, 0x0d, 0x09,
-0x17, 0xe5, 0x1b, 0x05, 0x06, 0x03, 0x06, 0x04,
-0xe5, 0x07, 0xe5, 0xe5, 0x04, 0x0c, 0x01, 0x05,
-0xe5, 0x04, 0x04, 0x03, 0x08, 0x08, 0x33, 0xe5,
-0xe6, 0x1b, 0x03, 0xe5, 0x07, 0xe6, 0x07, 0x12,
-0x0e, 0x23, 0x02, 0x09, 0x09, 0x06, 0x0e, 0xe5,
-0x04, 0x01, 0x02, 0x04, 0x13, 0x01, 0x03, 0x02,
-0x03, 0x06, 0x4e, 0xe6, 0x04, 0x04, 0xe5, 0x16,
-0xe5, 0x07, 0x09, 0x45, 0x0e, 0x0b, 0xe5, 0x04,
-0x03, 0x08, 0x07, 0x04, 0x03, 0x04, 0x04, 0x02,
-0x06, 0x11, 0x0e, 0x3b, 0xe8, 0x04, 0x22, 0x1a,
-0x22, 0x01, 0x2a, 0x01, 0x03, 0x04, 0x04, 0x08,
-0x02, 0x01, 0x1b, 0xe5, 0xe5, 0x5d, 0xe5, 0xe5,
-0x04, 0x1f, 0x13, 0x13, 0x0a, 0x02, 0x0e, 0x05,
-0x12, 0x12, 0x02, 0x14, 0x0f, 0x01, 0x0c, 0xe5,
-0x0b, 0x52, 0x01, 0xe6, 0x16, 0x01, 0x02, 0x06,
-0x01, 0x04, 0xe5, 0xe5, 0x03, 0x02, 0x01, 0x02,
-0x1e, 0x0f, 0x04, 0x08, 0x01, 0x03, 0x03, 0x06,
-0x02, 0x06, 0x02, 0x07, 0x13, 0x04, 0x04, 0x07,
-0x01, 0x04, 0x05, 0x08, 0x05, 0x01, 0x01, 0x09,
-0x09, 0x04, 0x09, 0x27, 0xe9, 0x17, 0x08, 0xe5,
-0x04, 0x03, 0x09, 0x03, 0x03, 0x01, 0x14, 0x0b,
-0x02, 0x01, 0xe6, 0x01, 0x04, 0x01, 0x09, 0x0a,
-0x0b, 0x0e, 0x0c, 0x07, 0x0c, 0x02, 0x03, 0x04,
-0x07, 0x09, 0x11, 0x01, 0x35, 0xe5, 0x01, 0xe5,
-0x17, 0x0a, 0x09, 0x09, 0x33, 0x04, 0x07, 0x02,
-0x01, 0x06, 0x16, 0x17, 0x05, 0x0a, 0x12, 0x01,
-0x08, 0x08, 0x09, 0x05, 0x14, 0x1d, 0x01, 0xe8,
-0x18, 0xe5, 0x03, 0x05, 0xe5, 0x01, 0x3f, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x06, 0xe5, 0x01, 0x03,
-0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0x05, 0x0d,
-0x09, 0x0a, 0x01, 0xe5, 0x04, 0x0f, 0x06, 0xe5,
-0x04, 0x3c, 0xe6, 0xe7, 0x01, 0x01, 0x16, 0x05,
-0x06, 0x01, 0xe7, 0x08, 0x02, 0x30, 0x02, 0xe5,
-0x06, 0xe5, 0x07, 0xe5, 0x01, 0x03, 0x02, 0x01,
-0x06, 0xe5, 0x07, 0x05, 0xe5, 0x04, 0x01, 0x0a,
-0x03, 0x0c, 0xe5, 0xe5, 0x08, 0x09, 0xe5, 0x12,
-0xe5, 0x30, 0x01, 0x02, 0x02, 0xe5, 0x03, 0x19,
-0x01, 0xe5, 0x05, 0x01, 0x02, 0x02, 0x04, 0x3f,
-0x0f, 0x0d, 0x02, 0xe5, 0x02, 0x05, 0xe5, 0x03,
-0x04, 0xe5, 0xe5, 0x02, 0xe5, 0xe5, 0xe6, 0x0f,
-0x01, 0x04, 0x02, 0xe5, 0x02, 0xe5, 0x05, 0x01,
-0x0b, 0x02, 0x01, 0x34, 0x04, 0x01, 0x01, 0x02,
-0x1b, 0x02, 0x0b, 0x03, 0xe5, 0x03, 0x4d, 0x10,
-0x0a, 0xe5, 0x01, 0x06, 0xe5, 0xe5, 0x05, 0x02,
-0x10, 0x02, 0x05, 0xe5, 0x01, 0xe5, 0x01, 0x02,
-0xe5, 0xe5, 0xe5, 0x0d, 0x02, 0x01, 0x33, 0x02,
-0xe8, 0x1e, 0x01, 0x19, 0x02, 0x2d, 0x09, 0x04,
-0x01, 0x02, 0x04, 0x04, 0x09, 0x02, 0x08, 0x01,
-0x01, 0xe5, 0xe5, 0x08, 0x02, 0xe5, 0xe7, 0x03,
-0x03, 0xe5, 0x06, 0x07, 0x02, 0x03, 0x06, 0x01,
-0x0f, 0x03, 0x03, 0x02, 0x2f, 0x01, 0xe6, 0x01,
-0x02, 0x1b, 0x03, 0x09, 0x09, 0x41, 0x01, 0x01,
-0x05, 0x03, 0x15, 0x05, 0x03, 0x04, 0xe5, 0x02,
-0x05, 0x04, 0xe5, 0xe7, 0x08, 0x03, 0x02, 0x01,
-0x03, 0xe5, 0xe5, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0x0c, 0x01, 0x02, 0x01, 0x2c, 0x03, 0x01, 0xe6,
-0x21, 0x04, 0x02, 0x09, 0x37, 0xe5, 0x05, 0xe5,
-0xe5, 0x01, 0x01, 0x01, 0x02, 0x01, 0xe5, 0x1b,
-0x01, 0x02, 0x05, 0x01, 0x01, 0x01, 0x05, 0x09,
-0x06, 0x02, 0x01, 0x0e, 0x02, 0x01, 0x44, 0x04,
-0x01, 0x02, 0x1c, 0x06, 0x04, 0xe5, 0xe5, 0x3e,
-0xe5, 0xe5, 0xe5, 0x04, 0x01, 0xe7, 0xe5, 0x01,
-0x01, 0x02, 0x03, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0xe5, 0x01, 0x09, 0x04, 0x01, 0x01, 0xe5, 0x03,
-0x04, 0x04, 0x01, 0xe5, 0xe5, 0xe5, 0x01, 0x0b,
-0xe5, 0xe5, 0xe5, 0x10, 0x01, 0x36, 0xe6, 0xe5,
-0x08, 0x13, 0x02, 0x06, 0x01, 0xe5, 0x05, 0x02,
-0x10, 0x02, 0x21, 0x09, 0x02, 0x06, 0x04, 0x04,
-0x09, 0x0b, 0x04, 0x07, 0x06, 0x02, 0x02, 0x06,
-0x02, 0x08, 0x0e, 0x02, 0x01, 0xe5, 0x05, 0xe5,
-0x3e, 0x07, 0xe6, 0x09, 0xe6, 0x10, 0xe5, 0x1b,
-0x09, 0xe5, 0x21, 0xe6, 0xe5, 0x04, 0xe5, 0x03,
-0x03, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe6, 0x08,
-0xe6, 0x0c, 0x03, 0xe5, 0x01, 0xe5, 0x0e, 0x09,
-0x0c, 0x06, 0x02, 0xe5, 0x07, 0xe5, 0x07, 0x31,
-0x02, 0xe6, 0x0d, 0x04, 0x01, 0x02, 0x06, 0x02,
-0x02, 0x06, 0x04, 0x01, 0x02, 0x03, 0xe5, 0xe5,
-0x01, 0x09, 0x09, 0x09, 0x06, 0x02, 0xe5, 0x01,
-0xe5, 0xe5, 0x01, 0xe6, 0x03, 0x02, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0xe5, 0x02,
-0x02, 0x04, 0x01, 0x02, 0xe6, 0x03, 0x02, 0x04,
-0x01, 0x02, 0x06, 0x02, 0x09, 0x04, 0xe6, 0x01,
-0xe6, 0x03, 0x02, 0x06, 0x02, 0x03, 0x05, 0x09,
-0x09, 0x09, 0x04, 0x01, 0x06, 0x01, 0x02, 0x02,
-0x13, 0x08, 0xe5, 0x08, 0x09, 0x09, 0x24, 0x02,
-0x04, 0x09, 0x01, 0x1b, 0x04, 0x06, 0x01, 0x02,
-0x09, 0x06, 0x02, 0x09, 0x08, 0xe5, 0x08, 0x09,
-0x08, 0xe5, 0x05, 0x02, 0x31, 0x04, 0x02, 0x01,
-0x01, 0x13, 0x09, 0x0b, 0x09, 0x07, 0x29, 0x05,
-0x1d, 0x09, 0x03, 0x07, 0x03, 0x09, 0x08, 0x08,
-0x0b, 0x05, 0x02, 0x0a, 0x07, 0x0a, 0x31, 0x0a,
-0x01, 0xe5, 0xe5, 0x14, 0x01, 0x07, 0x01, 0x13,
-0x09, 0x27, 0xe7, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x06, 0xe6, 0x05, 0xe7, 0xe5, 0x03, 0x02,
-0xe6, 0x05, 0x07, 0x01, 0xe7, 0x05, 0x04, 0x07,
-0x06, 0x02, 0x04, 0x02, 0xe5, 0x06, 0x04, 0x02,
-0x01, 0x02, 0x04, 0x36, 0x04, 0xe5, 0x01, 0x14,
-0x01, 0x01, 0x05, 0x01, 0xe5, 0x08, 0x09, 0x08,
-0xe5, 0x26, 0xe5, 0x03, 0x03, 0xe5, 0x07, 0xe5,
-0x08, 0x05, 0x02, 0xe5, 0x09, 0xe5, 0x07, 0x03,
-0x02, 0x01, 0xe6, 0x04, 0x01, 0xe6, 0x01, 0x06,
-0x01, 0x03, 0x03, 0x05, 0x01, 0x04, 0x02, 0x01,
-0xe6, 0x04, 0x01, 0x01, 0x07, 0xe5, 0x35, 0x02,
-0x19, 0x03, 0xe5, 0x03, 0x07, 0x01, 0x06, 0x0a,
-0x01, 0x28, 0x02, 0x0a, 0x01, 0x11, 0x04, 0x01,
-0x04, 0x06, 0x07, 0x09, 0x01, 0x01, 0x05, 0x0e,
-0x04, 0x03, 0x03, 0x01, 0x01, 0x07, 0x09, 0x06,
-0xe5, 0x37, 0xe8, 0x14, 0xe5, 0x01, 0x05, 0xe6,
-0xe5, 0x04, 0xe6, 0x06, 0xe5, 0x07, 0xe6, 0xe5,
-0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0x04, 0xe8, 0x05, 0xe7, 0x04, 0xe7, 0x02, 0x02,
-0xe8, 0x05, 0xe6, 0x09, 0xe5, 0x07, 0xe6, 0x06,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe6, 0x06, 0xe6,
-0xe5, 0x04, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x08, 0xe6, 0xe5, 0x14, 0x01,
-0x07, 0x01, 0xe6, 0x1a, 0x28, 0xe5, 0x07, 0xe5,
-0x11, 0xe5, 0xe5, 0x04, 0xe5, 0x07, 0x09, 0x01,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0x14, 0x08, 0x09,
-0x09, 0x07, 0x38, 0x01, 0x01, 0x17, 0x01, 0x07,
-0x01, 0x1b, 0x01, 0x27, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x02, 0x03, 0x02, 0x09, 0xe5, 0x07, 0x0c,
-0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x09, 0x0a,
-0x10, 0x09, 0x01, 0x09, 0x36, 0x03, 0x19, 0x09,
-0x07, 0x01, 0x13, 0x25, 0x05, 0x01, 0x01, 0x09,
-0x06, 0xe5, 0x07, 0xe5, 0x02, 0xe5, 0x02, 0x03,
-0x0c, 0x09, 0x09, 0x31, 0x07, 0x39, 0xe7, 0x1b,
-0x06, 0xe5, 0x05, 0x01, 0xe5, 0x0f, 0x01, 0x2a,
-0x01, 0xe6, 0x04, 0x01, 0x01, 0x05, 0xe5, 0xe6,
-0x04, 0x02, 0xe6, 0x03, 0x01, 0x01, 0x07, 0x0e,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x06, 0x02, 0x09,
-0x13, 0x06, 0x02, 0x06, 0x36, 0xe5, 0x01, 0xe5,
-0x19, 0x05, 0x09, 0x01, 0xe5, 0x05, 0xe5, 0xe5,
-0x32, 0x18, 0xe5, 0xe5, 0x11, 0xe5, 0xe5, 0x05,
-0x09, 0x09, 0x02, 0x06, 0x09, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x08, 0x10, 0xe5, 0xe5, 0x33, 0x03,
-0xe5, 0x10, 0x01, 0x07, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x01, 0x02,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x06, 0xe5, 0xe6, 0x02,
-0x02, 0x01, 0x07, 0x01, 0x04, 0x04, 0x01, 0x03,
-0x03, 0x01, 0xe5, 0x02, 0x02, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0xe5, 0x05, 0x01, 0x02, 0xe5, 0x02,
-0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x04, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0b, 0x02,
-0x03, 0x16, 0x0f, 0x04, 0x01, 0x0c, 0x08, 0x10,
-0x10, 0x09, 0x09, 0xe5, 0x04, 0x02, 0x01, 0x07,
-0xe5, 0x04, 0x03, 0x1c, 0x01, 0xe5, 0x01, 0x04,
-0x14, 0xe5, 0x05, 0x02, 0x49, 0x01, 0x01, 0xe5,
-0x15, 0x2b, 0x0c, 0x12, 0x05, 0x0a, 0x04, 0x07,
-0x05, 0xe5, 0x02, 0x04, 0x01, 0x18, 0xe5, 0x0a,
-0x01, 0x04, 0x0b, 0x0a, 0x01, 0x01, 0x04, 0x01,
-0x07, 0x05, 0x3c, 0x04, 0x25, 0x29, 0x0a, 0x18,
-0xe5, 0x04, 0xe5, 0xe5, 0x10, 0x09, 0x1d, 0x05,
-0x2c, 0x04, 0x3e, 0xe5, 0x01, 0xe5, 0x10, 0x06,
-0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5,
-0x02, 0x04, 0x18, 0x0c, 0xe5, 0x07, 0xe5, 0x09,
-0xe5, 0x04, 0x11, 0x0b, 0x02, 0x01, 0x01, 0x07,
-0x07, 0xe5, 0x07, 0x01, 0x03, 0x03, 0xe6, 0xe5,
-0x01, 0x02, 0x02, 0x05, 0xe5, 0x01, 0x03, 0x02,
-0x01, 0x07, 0xe6, 0x34, 0xe5, 0xe7, 0x17, 0x07,
-0xe5, 0x08, 0x02, 0x06, 0x09, 0x0d, 0x16, 0x01,
-0x12, 0x01, 0x1d, 0x05, 0x08, 0x04, 0x01, 0x05,
-0xe5, 0x0c, 0xe5, 0x01, 0x05, 0x07, 0x03, 0x09,
-0x04, 0x01, 0x02, 0x07, 0x38, 0x01, 0xe6, 0x0d,
-0x09, 0x09, 0xe5, 0x11, 0x1e, 0x09, 0x07, 0xe5,
-0x03, 0x03, 0xe5, 0x24, 0xe5, 0x01, 0xe5, 0x05,
-0x18, 0x1a, 0x04, 0x07, 0x06, 0x02, 0xe5, 0x3a,
-0x02, 0x01, 0x10, 0x06, 0xe5, 0x07, 0x04, 0x09,
-0x04, 0xe5, 0xe5, 0x2d, 0x09, 0x02, 0x0d, 0x01,
-0x0a, 0x01, 0x07, 0x01, 0xe6, 0x05, 0xe5, 0xe5,
-0x06, 0x09, 0x01, 0x02, 0x04, 0x09, 0x01, 0x02,
-0xe5, 0x0c, 0x09, 0x01, 0x42, 0x01, 0x05, 0x04,
-0x05, 0x06, 0x09, 0x02, 0x05, 0x0c, 0x2f, 0x07,
-0x01, 0x03, 0x09, 0x15, 0xe5, 0x01, 0x12, 0x01,
-0xe5, 0x03, 0x03, 0x0a, 0x06, 0x01, 0x0d, 0x06,
-0x03, 0x08, 0x03, 0x3d, 0xe6, 0x04, 0x08, 0x07,
-0xe5, 0x07, 0x06, 0x06, 0x0c, 0x30, 0x02, 0x02,
-0x03, 0x04, 0xe5, 0x02, 0x01, 0x16, 0x07, 0x06,
-0xe5, 0x03, 0x04, 0x03, 0x05, 0x0f, 0xe6, 0x05,
-0xe8, 0x04, 0x04, 0xe5, 0x02, 0x47, 0x05, 0x08,
-0x05, 0x02, 0x0d, 0x09, 0x3b, 0x08, 0x09, 0x0b,
-0x09, 0x04, 0x1b, 0x19, 0x05, 0x02, 0x1b, 0x3a,
-0xe8, 0x0e, 0x06, 0x01, 0x04, 0x07, 0x06, 0x04,
-0x2f, 0x10, 0x01, 0x06, 0x0a, 0x03, 0x0a, 0xe5,
-0x09, 0x04, 0x04, 0x05, 0x08, 0x16, 0x0d, 0x03,
-0x06, 0x01, 0x09, 0x35, 0x02, 0x01, 0x20, 0x0c,
-0x01, 0x07, 0x32, 0x09, 0x06, 0x01, 0x0a, 0x0a,
-0x13, 0x13, 0x02, 0x27, 0x06, 0x07, 0x01, 0x36,
-0x02, 0xe5, 0x1c, 0x09, 0x03, 0xe5, 0x08, 0x37,
-0x02, 0x06, 0x01, 0x07, 0x02, 0x0e, 0x0b, 0x04,
-0x01, 0x11, 0x01, 0x31, 0x01, 0x05, 0x38, 0xe5,
-0x01, 0xe6, 0x0e, 0x09, 0xe5, 0x17, 0x04, 0x01,
-0x01, 0x04, 0xe5, 0x07, 0xe5, 0x08, 0x01, 0x01,
-0x04, 0xe5, 0xe5, 0xe5, 0x03, 0x01, 0xe5, 0x05,
-0x02, 0x01, 0x07, 0x01, 0x04, 0x09, 0x1f, 0x05,
-0x72, 0xea, 0x01, 0x01, 0x0b, 0x06, 0x02, 0x03,
-0x01, 0x0a, 0xe5, 0x07, 0xe5, 0x04, 0x01, 0x02,
-0x08, 0x02, 0x06, 0x05, 0x01, 0x01, 0x05, 0x01,
-0x02, 0x04, 0x01, 0x04, 0x01, 0xe5, 0x08, 0xe5,
-0x05, 0x01, 0xe5, 0x17, 0xe5, 0x03, 0xe5, 0x0a,
-0x0a, 0x08, 0xe5, 0x07, 0xe5, 0x13, 0x3b, 0x01,
-0x02, 0x01, 0xe6, 0x03, 0x05, 0xe5, 0xe5, 0xe5,
-0x10, 0x01, 0xe5, 0x02, 0xe5, 0xe5, 0xe5, 0x06,
-0x01, 0x0b, 0x02, 0x09, 0x09, 0x06, 0x07, 0x01,
-0xe5, 0x0d, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x01,
-0x09, 0x0e, 0x01, 0x07, 0x01, 0x04, 0x01, 0xe5,
-0x06, 0x10, 0x04, 0xe5, 0x02, 0x02, 0x06, 0x04,
-0xe5, 0x3e, 0x04, 0x02, 0xe5, 0x01, 0x07, 0xe5,
-0xe5, 0x08, 0x06, 0xe5, 0xe8, 0x02, 0x04, 0x07,
-0x01, 0x09, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x04, 0x01, 0x02, 0x04, 0x13, 0x02, 0x01, 0x04,
-0x02, 0x01, 0x1a, 0xe5, 0x10, 0xe5, 0x08, 0xe5,
-0x0a, 0x09, 0xe5, 0x07, 0x06, 0xe5, 0x40, 0x06,
-0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x06,
-0xe5, 0x03, 0x03, 0x04, 0x01, 0xe5, 0xe5, 0x01,
-0x01, 0x01, 0x05, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0x01, 0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5,
-0xe7, 0x04, 0x02, 0xe5, 0xe5, 0x01, 0x02, 0x06,
-0x02, 0x06, 0x04, 0x01, 0x02, 0x06, 0x01, 0x13,
-0x04, 0x01, 0x0a, 0x01, 0xe5, 0x04, 0xe5, 0xe5,
-0x05, 0x02, 0xe5, 0x0e, 0x06, 0x02, 0x3c, 0xe5,
-0x01, 0x0a, 0x04, 0x03, 0xe5, 0x03, 0x01, 0x01,
-0xe5, 0x01, 0xe5, 0x04, 0x03, 0x01, 0x02, 0xe5,
-0xe5, 0x02, 0x02, 0x02, 0x02, 0x09, 0x09, 0x09,
-0x01, 0x01, 0x04, 0x05, 0x01, 0x01, 0x09, 0x09,
-0x05, 0x01, 0x01, 0x07, 0x01, 0x01, 0x09, 0x05,
-0x0d, 0x05, 0x01, 0xe5, 0x01, 0x01, 0xe5, 0x01,
-0x01, 0x01, 0x01, 0xe6, 0x01, 0xe5, 0x01, 0x01,
-0x08, 0xe5, 0x01, 0x01, 0x02, 0x01, 0x36, 0x02,
-0xe6, 0xe6, 0x13, 0x03, 0x07, 0x09, 0x01, 0x07,
-0x01, 0x03, 0xe5, 0x1c, 0x01, 0x14, 0x01, 0x07,
-0x01, 0x04, 0x01, 0xe5, 0xe5, 0xe6, 0x03, 0x01,
-0x01, 0x01, 0xe5, 0x03, 0x01, 0x11, 0x01, 0x11,
-0x01, 0x04, 0x02, 0x01, 0x07, 0x06, 0x02, 0x01,
-0x04, 0xe5, 0x02, 0x3f, 0x02, 0xe6, 0x11, 0x04,
-0x04, 0x06, 0x09, 0x07, 0x01, 0x01, 0x07, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x01, 0x01, 0x02, 0x02,
-0x04, 0x09, 0x01, 0x01, 0xe5, 0x03, 0x01, 0x01,
-0xe5, 0xe5, 0x01, 0x01, 0x02, 0x04, 0x01, 0x02,
-0x01, 0x01, 0x02, 0x01, 0x11, 0x04, 0x0e, 0x01,
-0xe5, 0x01, 0xe6, 0x02, 0x09, 0x03, 0xe6, 0xe5,
-0xe5, 0x01, 0x01, 0xe5, 0x02, 0x40, 0xe5, 0x01,
-0x1d, 0x02, 0x03, 0x02, 0xe5, 0x07, 0x02, 0x06,
-0x03, 0x09, 0x05, 0x03, 0x05, 0x03, 0x05, 0x09,
-0x06, 0x02, 0xe5, 0x04, 0x02, 0x01, 0xe5, 0x02,
-0x09, 0x22, 0x10, 0x0c, 0x06, 0x02, 0x02, 0x06,
-0xe6, 0x43, 0xe8, 0x13, 0xe5, 0x07, 0xe5, 0x07,
-0x09, 0x0b, 0x10, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x03, 0x03, 0xe5, 0x04, 0xe6, 0xe6, 0x03, 0xe5,
-0x07, 0xe5, 0x01, 0x05, 0xe5, 0x1e, 0x02, 0x01,
-0x0e, 0x02, 0xe5, 0x07, 0xe6, 0x06, 0x06, 0x0c,
-0x09, 0x32, 0xe8, 0x0d, 0x06, 0x02, 0x04, 0x01,
-0x02, 0x03, 0xe5, 0xe5, 0x01, 0x04, 0xe6, 0x01,
-0xe5, 0x07, 0x04, 0x01, 0xe5, 0xe5, 0x06, 0x01,
-0x06, 0xe5, 0xe5, 0x08, 0x09, 0xe5, 0x04, 0x02,
-0xe5, 0xe5, 0x05, 0xe8, 0x01, 0x02, 0xe6, 0x08,
-0x02, 0x03, 0x02, 0x06, 0x02, 0x03, 0x05, 0x02,
-0x03, 0x02, 0xe6, 0x06, 0x09, 0x04, 0xe6, 0x01,
-0x06, 0x02, 0x04, 0xe6, 0x01, 0x03, 0x05, 0x09,
-0x09, 0x09, 0x0d, 0xe6, 0x01, 0x02, 0x12, 0xe5,
-0x08, 0x09, 0x09, 0x13, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x02, 0x03, 0x01, 0x06, 0x09, 0x04, 0x03,
-0xe5, 0x0d, 0x03, 0xe5, 0x13, 0x09, 0xe5, 0x0f,
-0x02, 0x09, 0x13, 0x06, 0x02, 0x09, 0x36, 0x02,
-0xe8, 0x14, 0x07, 0x0a, 0x08, 0x13, 0x06, 0x04,
-0x04, 0x09, 0x04, 0x09, 0x05, 0x03, 0x05, 0x0b,
-0x21, 0x12, 0x0a, 0x11, 0x09, 0x09, 0x3c, 0x03,
-0x01, 0x0b, 0x04, 0x04, 0x04, 0x07, 0x08, 0x09,
-0x01, 0x14, 0x09, 0x09, 0x01, 0x07, 0x01, 0x04,
-0xe7, 0x05, 0xe7, 0x02, 0x02, 0xe7, 0x05, 0xe5,
-0xe5, 0x16, 0x04, 0x02, 0x03, 0xe5, 0xe5, 0x09,
-0x01, 0x01, 0x04, 0x06, 0x03, 0xe5, 0x01, 0x07,
-0x03, 0x02, 0x07, 0x01, 0x34, 0x01, 0x01, 0x01,
-0x0a, 0x04, 0x01, 0x07, 0x01, 0x05, 0x01, 0x07,
-0x02, 0x06, 0x01, 0xe6, 0x08, 0x09, 0x09, 0x09,
-0x02, 0x06, 0x08, 0xe5, 0x07, 0xe5, 0x01, 0x05,
-0xe5, 0x04, 0x02, 0xe5, 0x10, 0x02, 0x06, 0x03,
-0x01, 0x03, 0x01, 0xe5, 0x09, 0x07, 0xe5, 0x05,
-0x01, 0x04, 0x02, 0x01, 0x01, 0x01, 0x06, 0x06,
-0x01, 0xe5, 0x34, 0xe8, 0x09, 0x02, 0x06, 0x08,
-0x05, 0x07, 0x08, 0x02, 0x01, 0x0f, 0x05, 0x03,
-0x05, 0x03, 0x05, 0x0c, 0x03, 0x03, 0x01, 0x03,
-0x0a, 0x02, 0x04, 0x03, 0x23, 0x01, 0x04, 0x04,
-0x07, 0x0b, 0x01, 0x0b, 0x0d, 0x38, 0xe5, 0xe6,
-0x0e, 0x05, 0xe5, 0x01, 0x05, 0xe6, 0x06, 0xe5,
-0x01, 0x05, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5,
-0x06, 0x01, 0x02, 0x04, 0xe6, 0x01, 0x03, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x05, 0xe6, 0x09, 0xe6,
-0x06, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe6, 0x06, 0xe6, 0x06, 0xe6, 0xe5, 0x04, 0xe5,
-0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x06, 0x01, 0xe6, 0x0c,
-0x0b, 0x09, 0x07, 0x0b, 0x11, 0x09, 0x09, 0x09,
-0x10, 0x0f, 0x08, 0xe6, 0x1c, 0x07, 0x13, 0x02,
-0x08, 0x1b, 0x01, 0x36, 0xe6, 0xe5, 0x0e, 0x07,
-0x09, 0x15, 0x13, 0x09, 0x09, 0x09, 0x06, 0xe5,
-0x07, 0xe5, 0x05, 0x01, 0x02, 0x06, 0xe5, 0x07,
-0x16, 0x09, 0x16, 0x06, 0x09, 0x01, 0x11, 0x01,
-0x37, 0xe7, 0x18, 0x09, 0x07, 0x3d, 0x04, 0xe7,
-0x07, 0xe5, 0x04, 0x01, 0xe6, 0x01, 0x02, 0xe7,
-0x01, 0x04, 0x01, 0x01, 0x1e, 0x0b, 0x07, 0x0b,
-0x1d, 0x37, 0xe7, 0x11, 0x09, 0x04, 0x18, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x04, 0xe6, 0x06, 0x09,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x1f, 0x04, 0x0e,
-0x07, 0x06, 0x0e, 0x0e, 0x38, 0x03, 0x0d, 0xe5,
-0xe5, 0x08, 0x11, 0x01, 0x08, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x09, 0x01, 0xe5, 0x05, 0x47, 0x01,
-0xe5, 0x05, 0x09, 0x09, 0x01, 0xe5, 0x05, 0xe5,
-0xe5, 0x09, 0x09, 0x03, 0x01, 0x42, 0xe5, 0xe6,
-0xe5, 0x0a, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x04, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0xe5, 0x02, 0x02,
-0xe6, 0xe5, 0x01, 0x02, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0x04, 0x04, 0x01, 0x01, 0x05, 0x01, 0xe6,
-0x04, 0x01, 0xe6, 0x04, 0x01, 0x01, 0x02, 0x01,
-0xe5, 0xe5, 0xe5, 0xe5, 0x02, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x01, 0x02, 0x02, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x08, 0x04, 0xe5, 0x16, 0x08, 0x03, 0x26,
-0xe5, 0xe5, 0x0a, 0x06, 0x0c, 0x04, 0xe5, 0x01,
-0x10, 0x04, 0x03, 0xe5, 0x04, 0x0d, 0x09, 0x09,
-0x73, 0x02, 0xe6, 0x1f, 0x03, 0x09, 0x1a, 0x05,
-0xe6, 0x1a, 0x04, 0x05, 0x0a, 0x01, 0x03, 0x05,
-0x0d, 0x0a, 0x0e, 0x31, 0x07, 0x06, 0x02, 0x30,
-0x01, 0xe5, 0xe5, 0x4a, 0x0c, 0x18, 0x10, 0x0b,
-0x01, 0x07, 0xe6, 0x06, 0x01, 0x30, 0x11, 0x0c,
-0x04, 0x37, 0xe5, 0x0c, 0xe6, 0x06, 0x01, 0x01,
-0x05, 0xe6, 0x06, 0xe7, 0x07, 0x01, 0x01, 0x0d,
-0xe5, 0x09, 0x09, 0x07, 0x09, 0x01, 0x05, 0x03,
-0xe5, 0x04, 0xe5, 0x0f, 0x03, 0x0a, 0x01, 0xe5,
-0x0f, 0x01, 0x11, 0xe6, 0x08, 0x04, 0x01, 0x02,
-0x07, 0x01, 0xe5, 0x05, 0x03, 0x36, 0xe6, 0x0d,
-0x0a, 0x07, 0x09, 0x0a, 0x1c, 0x16, 0x06, 0x02,
-0x05, 0x01, 0x0a, 0x02, 0x0e, 0x0c, 0x01, 0x13,
-0x11, 0x08, 0x05, 0x04, 0x0b, 0xe5, 0x07, 0x02,
-0x32, 0x02, 0xe5, 0x0f, 0x06, 0x01, 0x09, 0x03,
-0x05, 0x14, 0x12, 0x07, 0x02, 0x01, 0x27, 0x0c,
-0x01, 0x11, 0x01, 0x03, 0x01, 0x05, 0x2c, 0x01,
-0xe5, 0xe5, 0x0a, 0x37, 0xe7, 0x0f, 0x06, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x06, 0x08, 0x1d, 0xe5,
-0x14, 0x09, 0x02, 0x0a, 0x06, 0x05, 0x04, 0x04,
-0x05, 0x03, 0x04, 0x06, 0xe5, 0x0a, 0x13, 0x06,
-0x05, 0x03, 0x01, 0x02, 0x04, 0x08, 0xe6, 0x37,
-0x01, 0xe5, 0x13, 0x04, 0x02, 0x04, 0x08, 0x09,
-0xe5, 0x1e, 0x18, 0xe5, 0x05, 0x09, 0x0b, 0x04,
-0x07, 0x12, 0x02, 0x04, 0x20, 0x03, 0x0c, 0x06,
-0x09, 0x39, 0xe5, 0x1f, 0x03, 0xe5, 0xe5, 0x13,
-0x16, 0xe5, 0x10, 0x09, 0xe7, 0x05, 0xe7, 0x05,
-0xe5, 0x07, 0x08, 0x01, 0x10, 0x16, 0x04, 0x09,
-0xe5, 0x01, 0x06, 0xe5, 0x06, 0x06, 0xe6, 0x3f,
-0xe5, 0x01, 0x29, 0x0f, 0x0a, 0xe5, 0x0c, 0x01,
-0x1c, 0x09, 0x08, 0x04, 0x08, 0x05, 0x41, 0x03,
-0x0e, 0x40, 0xe7, 0x16, 0x01, 0x06, 0xe5, 0xe5,
-0x08, 0x18, 0x09, 0xe5, 0x02, 0x0a, 0x0b, 0xe6,
-0x01, 0x01, 0x04, 0x02, 0x01, 0x0d, 0x05, 0x0b,
-0x13, 0x09, 0x0b, 0x1c, 0x0f, 0xe5, 0xe5, 0x35,
-0xe6, 0xe6, 0x14, 0x02, 0x0c, 0x05, 0xe5, 0x01,
-0x1b, 0x01, 0x06, 0x01, 0xe5, 0xe5, 0x06, 0x04,
-0x01, 0x07, 0x01, 0xe5, 0x07, 0x14, 0xe6, 0x05,
-0x01, 0x02, 0x0f, 0x28, 0x01, 0x05, 0x01, 0xe5,
-0x03, 0x03, 0x09, 0x35, 0x01, 0xe7, 0x10, 0x07,
-0x12, 0x26, 0x01, 0x01, 0x09, 0x1b, 0x11, 0x0a,
-0xe5, 0x0d, 0x0e, 0x05, 0x19, 0x06, 0x0c, 0x09,
-0x38, 0xe8, 0x28, 0x2d, 0xe5, 0x04, 0xe5, 0x01,
-0x01, 0x04, 0x09, 0x02, 0x01, 0x04, 0x02, 0xe5,
-0xe5, 0x02, 0x0a, 0x1a, 0x03, 0xe5, 0x24, 0x13,
-0xe5, 0x3b, 0xe5, 0x01, 0xe6, 0x01, 0x01, 0x17,
-0x09, 0x04, 0xe6, 0x24, 0x06, 0x01, 0x06, 0xe5,
-0x0f, 0x01, 0xe5, 0x04, 0x03, 0x01, 0xe5, 0x25,
-0x01, 0x0a, 0xe5, 0x2f, 0xe5, 0xe5, 0x05, 0xe5,
-0x31, 0x01, 0x02, 0x03, 0x04, 0x0f, 0x01, 0x07,
-0x01, 0x06, 0xe5, 0x01, 0x01, 0x22, 0xe5, 0x02,
-0x0b, 0x09, 0x19, 0x03, 0x01, 0xe5, 0x21, 0x03,
-0x07, 0x22, 0xe5, 0xe5, 0xe5, 0x08, 0x04, 0xe5,
-0x02, 0x31, 0x04, 0xe5, 0xe6, 0x01, 0x11, 0x08,
-0xe5, 0x08, 0xe5, 0xe5, 0xe5, 0x21, 0x02, 0x31,
-0x33, 0x1a, 0x09, 0x02, 0x06, 0xe5, 0xe5, 0x05,
-0x02, 0x35, 0x02, 0xe5, 0x01, 0x15, 0x08, 0x01,
-0x0c, 0x07, 0x01, 0x19, 0x01, 0x05, 0x02, 0x0f,
-0x09, 0x09, 0x04, 0x04, 0x09, 0xe5, 0x01, 0x1f,
-0xe5, 0xe5, 0x18, 0x09, 0x01, 0x01, 0x02, 0xe5,
-0x01, 0x02, 0x05, 0x03, 0x36, 0xe8, 0x01, 0x18,
-0x01, 0x02, 0x04, 0x04, 0x02, 0x01, 0x05, 0x01,
-0x01, 0x1d, 0x2d, 0x03, 0x09, 0x23, 0x01, 0x01,
-0x01, 0x01, 0x02, 0x18, 0x01, 0x02, 0xe5, 0x03,
-0x04, 0x03, 0x05, 0x03, 0x04, 0x2c, 0x02, 0x03,
-0xe5, 0x27, 0x01, 0x09, 0x01, 0x1b, 0x17, 0x01,
-0xe5, 0x05, 0xe5, 0x07, 0x05, 0x10, 0x01, 0x20,
-0x01, 0x22, 0x09, 0x02, 0x01, 0x02, 0x04, 0x07,
-0x2f, 0xe6, 0x01, 0x17, 0x09, 0x09, 0x09, 0x01,
-0x1d, 0x16, 0x01, 0x01, 0x05, 0x09, 0x04, 0x03,
-0xe5, 0x03, 0x03, 0x02, 0x01, 0x1b, 0x04, 0x01,
-0x1b, 0x06, 0xe5, 0x05, 0xe7, 0x0c, 0x39, 0xe5,
-0x1c, 0x02, 0x35, 0x02, 0x10, 0x09, 0x09, 0x09,
-0x09, 0x02, 0x02, 0x26, 0x02, 0x1a, 0x01, 0xe5,
-0x05, 0x09, 0x02, 0x3a, 0xe7, 0x1d, 0x09, 0x2e,
-0x02, 0x01, 0x0d, 0xe6, 0xe5, 0x04, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x28, 0x34, 0xe6,
-0x43, 0xe8, 0x0d, 0x09, 0x05, 0x03, 0x03, 0x02,
-0x02, 0x02, 0x06, 0x09, 0x09, 0x04, 0x01, 0x02,
-0x01, 0x01, 0x05, 0x09, 0xe6, 0xe6, 0xe5, 0x01,
-0xe6, 0xe5, 0x01, 0x02, 0xe6, 0xe5, 0x04, 0xe5,
-0x07, 0x0b, 0x09, 0x09, 0x04, 0x01, 0x02, 0x02,
-0x06, 0x09, 0x09, 0x09, 0x04, 0x01, 0x02, 0x02,
-0x06, 0x09, 0x09, 0x09, 0x09, 0x0d, 0xe7, 0xe5,
-0x01, 0x24, 0x02, 0x3b, 0x04, 0x09, 0x01, 0x16,
-0x29, 0x27, 0x09, 0x09, 0x36, 0x03, 0x01, 0xe5,
-0x26, 0x3d, 0x23, 0x03, 0x29, 0x27, 0x07, 0x0b,
-0x3d, 0xe5, 0xe5, 0x16, 0x09, 0x07, 0x01, 0x22,
-0x04, 0xe6, 0x0b, 0x02, 0x01, 0xe5, 0xe5, 0x05,
-0xe7, 0x02, 0x02, 0xe5, 0xe5, 0x06, 0xe6, 0x05,
-0xe6, 0x08, 0x13, 0x02, 0x24, 0x04, 0x02, 0x04,
-0x03, 0x0a, 0x01, 0x34, 0x04, 0xe5, 0x15, 0x02,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x20, 0x05, 0xe5,
-0x0d, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x08,
-0x08, 0xe5, 0x08, 0xe5, 0x11, 0x01, 0x01, 0x06,
-0x1c, 0xe5, 0x07, 0x01, 0x08, 0x09, 0x35, 0xe8,
-0x29, 0xe5, 0xe5, 0x23, 0x03, 0x16, 0xe5, 0xe5,
-0x03, 0x0b, 0xe5, 0x04, 0x02, 0x02, 0x04, 0x01,
-0x07, 0x0e, 0x04, 0x06, 0x02, 0x31, 0x06, 0xe5,
-0xe5, 0x35, 0x03, 0x15, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0xe8,
-0x05, 0xe7, 0x04, 0xe7, 0x05, 0xe7, 0x06, 0xe6,
-0x03, 0x05, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06,
-0xe5, 0x01, 0x19, 0x07, 0x01, 0x07, 0x01, 0x3c,
-0xe5, 0x07, 0x13, 0xe5, 0xe5, 0x10, 0x3b, 0x07,
-0x13, 0x01, 0x36, 0x01, 0xe6, 0x18, 0x07, 0x01,
-0x09, 0x3f, 0x02, 0x02, 0xe5, 0x02, 0x01, 0x02,
-0x03, 0x02, 0x09, 0x09, 0x04, 0x3b, 0x09, 0x09,
-0x40, 0xe8, 0x2a, 0x01, 0x39, 0x01, 0x04, 0xe5,
-0xe5, 0x08, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0x03,
-0x02, 0x1d, 0x31, 0x07, 0x01, 0x36, 0x02, 0xe5,
-0x03, 0x28, 0x2a, 0x13, 0xe5, 0xe6, 0x04, 0x01,
-0x01, 0x05, 0xe5, 0xe6, 0x04, 0x02, 0xe5, 0x04,
-0x01, 0x01, 0x04, 0x16, 0x2e, 0x02, 0x48, 0x02,
-0x04, 0x12, 0x07, 0x01, 0xe5, 0xe5, 0x05, 0x02,
-0x25, 0x01, 0x2e, 0xe5, 0xe5, 0x08, 0x19, 0x04,
-0xe5, 0x21, 0x01, 0x01, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0x42, 0xe8, 0xe5, 0xe5, 0x0c, 0x01, 0x03,
-0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x06, 0xe5, 0xe5,
-0x06, 0x01, 0x01, 0x02, 0x02, 0x01, 0x07, 0x01,
-0x02, 0x01, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x04, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x08, 0x02, 0x02, 0x20, 0x0a, 0x3d, 0x06,
-0x03, 0x02, 0x05, 0xe6, 0x0e, 0x06, 0x41, 0x07,
-0x08, 0xe5, 0x42, 0x02, 0xe6, 0x23, 0x31, 0xe5,
-0x0f, 0x08, 0x01, 0x02, 0x22, 0x40, 0x08, 0x48,
-0x01, 0xe7, 0x69, 0x05, 0x0a, 0x01, 0x1b, 0x94,
-0x01, 0x01, 0x21, 0xe6, 0x2e, 0x01, 0x11, 0x01,
-0x07, 0xe6, 0x04, 0x01, 0xe7, 0x0f, 0x01, 0x19,
-0x05, 0x32, 0x06, 0x46, 0x22, 0x04, 0x11, 0x1b,
-0x12, 0x01, 0x07, 0x09, 0x0e, 0x03, 0x01, 0x07,
-0x15, 0x0f, 0x1d, 0x10, 0x0c, 0x33, 0xe5, 0xe5,
-0x41, 0x09, 0x06, 0x02, 0x35, 0x04, 0x03, 0x03,
-0x98, 0x43, 0x1c, 0x04, 0x04, 0x0b, 0x09, 0x0e,
-0x09, 0x4b, 0x3d, 0x0c, 0x01, 0x1c, 0xe5, 0x01,
-0x37, 0x0d, 0x05, 0x13, 0x0c, 0x03, 0xe5, 0x05,
-0x95, 0xe7, 0x5b, 0x32, 0xe5, 0x07, 0x18, 0x7d,
-0xe6, 0x56, 0x32, 0x04, 0x01, 0x01, 0x05, 0xe5,
-0x03, 0x3b, 0xe5, 0x1b, 0x34, 0x01, 0x01, 0x27,
-0x01, 0x44, 0x1c, 0x59, 0x49, 0xe8, 0x41, 0x44,
-0x0a, 0x19, 0x7f, 0x02, 0xe6, 0x44, 0x32, 0x1b,
-0x9a, 0xe5, 0xe7, 0x24, 0xe5, 0x39, 0xe5, 0x05,
-0xe5, 0x07, 0x01, 0xe5, 0x05, 0xe5, 0x08, 0x08,
-0x98, 0xe5, 0x02, 0xe5, 0x01, 0x01, 0x23, 0x01,
-0x38, 0xe5, 0x03, 0x08, 0x02, 0x01, 0xe5, 0x02,
-0x09, 0x0a, 0xe5, 0x95, 0x01, 0x05, 0xe5, 0x03,
-0x37, 0x01, 0xe5, 0xe5, 0x28, 0x02, 0x09, 0x06,
-0x02, 0x09, 0x01, 0xe5, 0x98, 0x05, 0xe7, 0x01,
-0x3c, 0x01, 0x27, 0x04, 0x01, 0x02, 0x04, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x9e, 0x03, 0x01,
-0xe5, 0x6b, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0x01,
-0x02, 0x02, 0xe5, 0x01, 0x02, 0x02, 0xe5, 0xe6,
-0x01, 0x03, 0x02, 0x96, 0x02, 0x02, 0x40, 0x25,
-0x02, 0x09, 0x01, 0x01, 0x05, 0x09, 0x08, 0x97,
-0x02, 0x01, 0x01, 0xe5, 0x3d, 0x01, 0x4a, 0x01,
-0x9e, 0xe5, 0xe7, 0x3e, 0x01, 0x27, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x01, 0x01, 0xe5,
-0x9f, 0xe6, 0x66, 0x09, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x09, 0x98, 0xe8, 0x76, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x03, 0x03, 0xe5, 0x98, 0x01, 0xe5,
-0x0d, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x01, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x05, 0x02, 0x0b,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0xe5, 0x01,
-0xe5, 0x01, 0x6d, 0xe5, 0xe5, 0x04, 0xe6, 0xe5,
-0x05, 0xe5, 0xe5, 0x04, 0xe5, 0x9b, 0x02, 0x01,
-0x01, 0x6d, 0x06, 0x04, 0x04, 0x02, 0x06, 0x04,
-0xa0, 0x03, 0x01, 0x74, 0x01, 0x07, 0x01, 0x07,
-0x09, 0x97, 0x01, 0x02, 0xe5, 0x27, 0x42, 0x09,
-0x09, 0x09, 0x09, 0x9a, 0x03, 0x71, 0x05, 0x03,
-0x09, 0x06, 0xa1, 0xe6, 0xe5, 0x14, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0xe5, 0x01, 0x71, 0x09, 0x09, 0x09, 0x9e,
-0xe8, 0x72, 0x09, 0x09, 0x09, 0x9c, 0x03, 0x91,
-0x08, 0x93, 0x02, 0xe5, 0x2d, 0x3d, 0x09, 0x09,
-0x09, 0x04, 0x04, 0x9a, 0xe5, 0xe5, 0x66, 0x01,
-0xe5, 0x05, 0x09, 0x01, 0xe5, 0x05, 0x09, 0x12,
-0x8b, 0xe5, 0xe6, 0xe5, 0x0e, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01, 0x04,
-0x02, 0x01, 0x04, 0x02, 0xe8, 0x01, 0x02, 0x01,
-0xe5, 0x02, 0x02, 0x01, 0x02, 0xe5, 0x02, 0x01,
-0x04, 0x04, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x08, 0x01, 0xe6, 0xe5, 0x3c, 0x35, 0x01, 0x09,
-0x0e, 0x9f, 0x01, 0xe7, 0x36, 0xe3, 0x12, 0xe5,
-0xe7, 0x46, 0x13, 0x17, 0x25, 0x8a, 0x0a, 0xe5,
-0xe5, 0x1c, 0x48, 0x0c, 0x09, 0x07, 0xe5, 0x07,
-0xa0, 0xe6, 0x47, 0x1b, 0x12, 0x0c, 0x0d, 0x06,
-0x3c, 0x5b, 0x5c, 0x03, 0x0f, 0xe5, 0x08, 0x0a,
-0xe5, 0x10, 0x16, 0xe5, 0x05, 0x6d, 0x07, 0xe5,
-0x01, 0x63, 0x21, 0x13, 0x15, 0x7e, 0x02, 0xe5,
-0x61, 0x13, 0x01, 0x0c, 0x13, 0x11, 0x05, 0x7d,
-0xe5, 0xe5, 0x91, 0x06, 0x94, 0xe5, 0x01, 0x8a,
-0x0d, 0xe5, 0x93, 0x02, 0xe5, 0x61, 0x24, 0x12,
-0x06, 0x05, 0x27, 0x09, 0x57, 0xe6, 0x37, 0x32,
-0x1b, 0x1d, 0xe5, 0x24, 0x01, 0x08, 0x54, 0xe5,
-0x01, 0xe5, 0x3a, 0x49, 0x21, 0x25, 0x60, 0xe5,
-0xe6, 0x02, 0x09, 0xe7, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x03, 0xe5, 0x01, 0xe5, 0x07, 0xe5, 0x05, 0xe7,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0xe7,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x01, 0x09, 0xe5, 0x01,
-0xe5, 0x0d, 0x01, 0x09, 0x09, 0x09, 0x09, 0x02,
-0x06, 0x02, 0x06, 0x07, 0x01, 0x09, 0x07, 0x01,
-0x05, 0x03, 0x09, 0x09, 0x07, 0x01, 0x0b, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x02, 0x0a, 0x03, 0x0f,
-0x05, 0x03, 0x09, 0x09, 0x09, 0x04, 0x04, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x11, 0x02,
-0xe5, 0x11, 0xe5, 0x03, 0x03, 0x09, 0x1d, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x11, 0xe5, 0x97,
-0x8b, 0x09, 0x01, 0xe6, 0x0e, 0x05, 0x03, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x04, 0x09, 0x09, 0x04,
-0x04, 0x09, 0x06, 0x02, 0x09, 0x09, 0x06, 0x01,
-0x02, 0x09, 0x09, 0x05, 0x03, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0e,
-0xe5, 0x01, 0x0d, 0xe5, 0x05, 0x01, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x06, 0xe6, 0x07, 0xe5, 0x09,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x10, 0xe6, 0x02, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0xe5,
-0x08, 0x03, 0x05, 0x09, 0x03, 0x05, 0x09, 0x01,
-0x07, 0x0b, 0x01, 0x07, 0x09, 0x01, 0x07, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x0b, 0x05, 0xe5, 0xe5, 0x0d, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0x09, 0x02, 0x08, 0xe5, 0x07, 0x02,
-0x06, 0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0x02, 0x06, 0x02, 0x06, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x0b, 0x01, 0x01, 0x0e, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x0f, 0xe6, 0xe5, 0x86, 0x09, 0x15, 0x27, 0x09,
-0x4e, 0x05, 0xe5, 0x01, 0x0e, 0x09, 0x09, 0x09,
-0x09, 0x13, 0x13, 0x05, 0x03, 0x09, 0x09, 0x09,
-0x09, 0x08, 0x02, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x07, 0xe6, 0x3f, 0x13, 0x10, 0x33, 0x1d,
-0x76, 0x03, 0x10, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x03, 0x05,
-0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x03,
-0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x0e, 0xe7, 0x03, 0x37, 0x03, 0x05, 0x0d, 0x0f,
-0xe5, 0x33, 0x1c, 0x72, 0x03, 0xe6, 0xe5, 0x37,
-0x09, 0x13, 0x42, 0xe5, 0x8e, 0x04, 0xe7, 0x3f,
-0x13, 0x44, 0x90, 0x03, 0xe6, 0xe5, 0x8f, 0x9d,
-0x03, 0x13, 0x09, 0x09, 0x09, 0x1d, 0x09, 0x0c,
-0x06, 0x09, 0x09, 0x36, 0x06, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x15, 0x01,
-0xe5, 0x35, 0x05, 0x03, 0x05, 0x0d, 0x0f, 0x2a,
-0x97, 0x06, 0x02, 0xe5, 0x98, 0x8e, 0x05, 0x03,
-0xe3, 0x50, 0x14, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x02,
-0xe5, 0x04, 0xe6, 0x01, 0xe5, 0x04, 0x09, 0xe8,
-0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 0x03, 0x05,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x03, 0x0f,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x03, 0x05, 0x09, 0x09, 0x08, 0xe5, 0x06, 0xe6,
-0x05, 0xe5, 0xe7, 0x07, 0xe5, 0x05, 0xe7, 0x08,
-0x09, 0x08, 0xe5, 0x07, 0xe5, 0x08, 0x07, 0xe6,
-0x08, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x01, 0xe5,
-0x38, 0x09, 0x13, 0x0a, 0x36, 0x95, 0x02, 0x0d,
-0x09, 0x09, 0x09, 0x09, 0x04, 0x04, 0x03, 0xe5,
-0x03, 0x09, 0x03, 0x05, 0x04, 0x04, 0x09, 0x09,
-0x11, 0x09, 0x0b, 0x09, 0x09, 0x01, 0x09, 0x1d,
-0x0b, 0x07, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x01,
-0xe7, 0x0a, 0x02, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x03, 0x02, 0x02, 0x03, 0x01, 0xe5,
-0x01, 0x01, 0x07, 0x03, 0x05, 0x01, 0x04, 0x02,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x02, 0x04,
-0x15, 0x04, 0x0e, 0x03, 0x07, 0x01, 0x07, 0x02,
-0x06, 0x02, 0x06, 0x01, 0x07, 0x09, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x05, 0xe6, 0xe5, 0xe5, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff,
diff --git a/board/esd/dp405/MAINTAINERS b/board/esd/dp405/MAINTAINERS
deleted file mode 100644 (file)
index 6833d8c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DP405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/dp405/
-F:     include/configs/DP405.h
-F:     configs/DP405_defconfig
diff --git a/board/esd/dp405/Makefile b/board/esd/dp405/Makefile
deleted file mode 100644 (file)
index cfcfb66..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-# Objects for Xilinx JTAG programming (CPLD)
-CPLD    = ../common/xilinx_jtag/lenval.o \
-         ../common/xilinx_jtag/micro.o \
-         ../common/xilinx_jtag/ports.o
-
-obj-y  = dp405.o flash.o ../common/misc.o $(CPLD)
diff --git a/board/esd/dp405/dp405.c b/board/esd/dp405/dp405.c
deleted file mode 100644 (file)
index 730ff21..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF80);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       /*
-        * Reset CPLD via GPIO13 (CS4) pin
-        */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) & ~(0x80000000 >> 13));
-       udelay(1000); /* wait 1ms */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) | (0x80000000 >> 13));
-       udelay(1000); /* wait 1ms */
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       /* adjust flash start and offset */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-       unsigned char trans[16] = {0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,
-                                  0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf};
-       unsigned char id1, id2, rev;
-
-       puts ("Board: ");
-
-       if (i == -1)
-               puts ("### No HW ID - assuming DP405");
-       else
-               puts(str);
-
-       id1 = trans[(~(in_be32((void *)GPIO0_IR) >> 5)) & 0x0000000f];
-       id2 = trans[(~(in_be32((void *)GPIO0_IR) >> 9)) & 0x0000000f];
-
-       rev = in_8((void *)0xf0001000);
-       if (rev & 0x10) /* old DP405 compatibility */
-               rev = in_8((void *)0xf0000800);
-
-       switch (rev & 0xc0) {
-       case 0x00:
-               puts(" (HW=DP405");
-               break;
-       case 0x80:
-               puts(" (HW=DP405/CO");
-               break;
-       case 0xc0:
-               puts(" (HW=DN405");
-               break;
-       }
-       printf(", ID=0x%1X%1X, PLD=0x%02X", id2, id1, rev & 0x0f);
-
-       if ((rev & 0xc0) == 0xc0) {
-               printf(", C5V=%s",
-                      in_be32((void *)GPIO0_IR) & 0x40000000 ? "off" : "on");
-       }
-       puts(")\n");
-
-       return 0;
-}
diff --git a/board/esd/dp405/flash.c b/board/esd/dp405/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/du405/Kconfig b/board/esd/du405/Kconfig
deleted file mode 100644 (file)
index 2913fb9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DU405
-
-config SYS_BOARD
-       default "du405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "DU405"
-
-endif
diff --git a/board/esd/du405/MAINTAINERS b/board/esd/du405/MAINTAINERS
deleted file mode 100644 (file)
index 5eff2a4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DU405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/du405/
-F:     include/configs/DU405.h
-F:     configs/DU405_defconfig
diff --git a/board/esd/du405/Makefile b/board/esd/du405/Makefile
deleted file mode 100644 (file)
index 7914eab..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = du405.o flash.o ../common/misc.o
diff --git a/board/esd/du405/du405.c b/board/esd/du405/du405.c
deleted file mode 100644 (file)
index 8f5f4d0..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include "du405.h"
-#include <asm/processor.h>
-#include <asm/ppc4xx.h>
-#include <asm/ppc4xx-i2c.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-#if 0
-#define FPGA_DEBUG2
-#endif
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
-       int index, len, i;
-       int status;
-
-#ifdef FPGA_DEBUG
-       /* set up serial port with default baudrate */
-       (void) get_clocks ();
-       gd->baudrate = CONFIG_BAUDRATE;
-       serial_init ();
-       console_init_f ();
-#endif
-
-       /*
-        * Boot onboard FPGA
-        */
-       status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
-       if (status != 0) {
-               /* booting FPGA failed */
-#ifndef FPGA_DEBUG
-               /* set up serial port with default baudrate */
-               (void) get_clocks ();
-               gd->baudrate = CONFIG_BAUDRATE;
-               serial_init ();
-               console_init_f ();
-#endif
-               printf ("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf ("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i = 0; i < 4; i++) {
-                       len = fpgadata[index];
-                       printf ("FPGA: %s\n", &(fpgadata[index + 1]));
-                       index += len + 3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i = 20; i > 0; i--) {
-                       printf ("Rebooting in %2d seconds \r", i);
-                       for (index = 0; index < 1000; index++)
-                               udelay (1000);
-               }
-               putc ('\n');
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) DUART_A; active high; level sensitive
-        * IRQ 27 (EXT IRQ 2) DUART_B; active high; level sensitive
-        * IRQ 28 (EXT IRQ 3) unused; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) unused; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) unused; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);     /* disable all ints */
-       mtdcr (UIC0CR, 0x00000000);     /* set all to be non-critical */
-       mtdcr (UIC0PR, 0xFFFFFFB1);     /* set int polarities */
-       mtdcr (UIC0TR, 0x10000000);     /* set int trigger levels */
-       mtdcr (UIC0VCR, 0x00000001);    /* set vect base=0,INT0 highest priority */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 100 us
-        */
-       mtebc (EBC0_CFG, 0xb8400000);
-
-       return 0;
-}
-
-
-int misc_init_r (void)
-{
-       unsigned long CPC0_CR0Reg;
-
-       /*
-        * Setup UART1 handshaking: use CTS instead of DSR
-        */
-       CPC0_CR0Reg = mfdcr(CPC0_CR0);
-       mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x00001000);
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       int index;
-       int len;
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof (str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming DU405");
-       } else {
-               puts (str);
-       }
-
-       puts ("\nFPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i = 0; i < 4; i++) {
-               len = fpgadata[index];
-               printf ("%s ", &(fpgadata[index + 1]));
-               index += len + 3;
-       }
-
-       putc ('\n');
-
-       /*
-        * Reset external DUART via FPGA
-        */
-       out_8((void *)FPGA_MODE_REG, 0xff); /* reset high active */
-       out_8((void *)FPGA_MODE_REG, 0x00); /* low again */
-
-       return 0;
-}
-
-void reset_phy(void)
-{
-#if defined(CONFIG_LXT971_NO_SLEEP)
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-#endif
-}
diff --git a/board/esd/du405/du405.h b/board/esd/du405/du405.h
deleted file mode 100644 (file)
index 292f196..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- *                          Start Address    Length
- * +-----------------------+ 0x4000_0000     Start of Flash -----------------
- * | MON8xx code           | 0x4000_0100     Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused)              |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses    |                 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) |                 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address          |                 0x04
- * +-----------------------+ 0x4001_FFC0                     ^
- * | Hardware Information  |                 0x40            | MON8xx
- * +=======================+ 0x4002_0000 (sector border)    -----------------
- * | Autostart Header      |                                 | Applications
- * | ...                   |                                 v
- *
- *****************************************************************************/
diff --git a/board/esd/du405/flash.c b/board/esd/du405/flash.c
deleted file mode 100644 (file)
index 5650e5e..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0, size_b1;
-       int i;
-       uint pbcr;
-       unsigned long base_b0, base_b1;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       base_b0 = FLASH_BASE0_PRELIM;
-       size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0 << 20);
-       }
-
-       base_b1 = FLASH_BASE1_PRELIM;
-       size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
-       /* Re-do sizing to get full correct info */
-
-       if (size_b1) {
-               mtdcr (EBC0_CFGADDR, PB0CR);
-               pbcr = mfdcr (EBC0_CFGDATA);
-               mtdcr (EBC0_CFGADDR, PB0CR);
-               base_b1 = -size_b1;
-               pbcr = (pbcr & 0x0001ffff) | base_b1 |
-                               (((size_b1 / 1024 / 1024) - 1) << 17);
-               mtdcr (EBC0_CFGDATA, pbcr);
-               /*          printf("PB1CR = %x\n", pbcr); */
-       }
-
-       if (size_b0) {
-               mtdcr (EBC0_CFGADDR, PB1CR);
-               pbcr = mfdcr (EBC0_CFGDATA);
-               mtdcr (EBC0_CFGADDR, PB1CR);
-               base_b0 = base_b1 - size_b0;
-               pbcr = (pbcr & 0x0001ffff) | base_b0 |
-                               (((size_b0 / 1024 / 1024) - 1) << 17);
-               mtdcr (EBC0_CFGDATA, pbcr);
-               /*            printf("PB0CR = %x\n", pbcr); */
-       }
-
-       size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
-       flash_get_offsets (base_b0, &flash_info[0]);
-
-       /* monitor protection ON by default */
-       flash_protect (FLAG_PROTECT_SET,
-                       base_b0 + size_b0 - monitor_flash_len,
-                       base_b0 + size_b0 - 1, &flash_info[0]);
-
-       if (size_b1) {
-               /* Re-do sizing to get full correct info */
-               size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
-               flash_get_offsets (base_b1, &flash_info[1]);
-
-               /* monitor protection ON by default */
-               flash_protect (FLAG_PROTECT_SET,
-                               base_b1 + size_b1 - monitor_flash_len,
-                               base_b1 + size_b1 - 1, &flash_info[1]);
-               /* monitor protection OFF by default (one is enough) */
-               flash_protect (FLAG_PROTECT_CLEAR,
-                               base_b0 + size_b0 - monitor_flash_len,
-                               base_b0 + size_b0 - 1, &flash_info[0]);
-       } else {
-               flash_info[1].flash_id = FLASH_UNKNOWN;
-               flash_info[1].sector_count = -1;
-       }
-
-       flash_info[0].size = size_b0;
-       flash_info[1].size = size_b1;
-
-       return (size_b0 + size_b1);
-}
diff --git a/board/esd/du405/fpgadata.c b/board/esd/du405/fpgadata.c
deleted file mode 100644 (file)
index 262f2ca..0000000
+++ /dev/null
@@ -1,1405 +0,0 @@
-0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0,
-0x0f, 0xf0, 0x00, 0x00, 0x01, 0x61, 0x00, 0x0d,
-0x64, 0x75, 0x72, 0x61, 0x67, 0x34, 0x30, 0x35,
-0x2e, 0x6e, 0x63, 0x64, 0x00, 0x62, 0x00, 0x0b,
-0x73, 0x32, 0x30, 0x78, 0x6c, 0x74, 0x71, 0x31,
-0x34, 0x34, 0x00, 0x63, 0x00, 0x0b, 0x32, 0x30,
-0x30, 0x32, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x31,
-0x00, 0x64, 0x00, 0x09, 0x31, 0x32, 0x3a, 0x35,
-0x31, 0x3a, 0x30, 0x38, 0x00, 0x65, 0xe2, 0x01,
-0x00, 0x00, 0x2b, 0x98, 0xff, 0x30, 0xe6, 0xe5,
-0xe5, 0x02, 0x04, 0x01, 0xe6, 0x04, 0x01, 0x0d,
-0x04, 0x04, 0x02, 0x01, 0x04, 0x04, 0x03, 0x07,
-0x01, 0x03, 0x01, 0x04, 0x11, 0x01, 0x06, 0x02,
-0x15, 0x09, 0x02, 0x05, 0x07, 0x02, 0x02, 0x01,
-0x09, 0x03, 0x07, 0x01, 0x03, 0x01, 0x0b, 0x05,
-0x03, 0x01, 0x07, 0x08, 0xe5, 0xe5, 0x24, 0x05,
-0x09, 0x11, 0x01, 0x03, 0x03, 0x05, 0x0d, 0x09,
-0x0b, 0x09, 0x01, 0x1d, 0x09, 0x13, 0x03, 0x05,
-0x12, 0xe6, 0x11, 0x01, 0x03, 0x02, 0x02, 0x03,
-0x03, 0x01, 0x15, 0x01, 0x02, 0x28, 0x01, 0x05,
-0x02, 0xe5, 0xe5, 0x02, 0x02, 0x02, 0x0d, 0x02,
-0x02, 0x03, 0x02, 0xe5, 0xe5, 0x14, 0x01, 0x02,
-0xe5, 0x12, 0x0b, 0x03, 0x0f, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x01, 0x02, 0x06, 0x02, 0x09,
-0x06, 0xe7, 0x05, 0x04, 0x06, 0x02, 0x06, 0x02,
-0x09, 0x07, 0xe6, 0x08, 0x09, 0x07, 0xe6, 0x08,
-0x09, 0x0e, 0xe5, 0xe6, 0x0d, 0x05, 0xe5, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0x09, 0xe5,
-0x01, 0x05, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0x03,
-0x05, 0xe8, 0x04, 0xe6, 0x02, 0x05, 0xe6, 0xe5,
-0x04, 0xe6, 0x06, 0x03, 0x05, 0xe5, 0xe6, 0x04,
-0xe5, 0x07, 0x09, 0xe5, 0xe6, 0x04, 0x09, 0x09,
-0x09, 0xe8, 0x46, 0x09, 0x14, 0xe5, 0x06, 0x0b,
-0x09, 0x15, 0x1d, 0x24, 0x02, 0xe5, 0xe5, 0x45,
-0x08, 0x15, 0x33, 0x1d, 0x28, 0x70, 0xe5, 0x09,
-0x09, 0x14, 0x42, 0x02, 0xe5, 0x30, 0x27, 0x01,
-0x15, 0x1b, 0x1d, 0x32, 0x01, 0x01, 0x5b, 0x0c,
-0x51, 0x24, 0x01, 0xe5, 0xe5, 0x28, 0xe5, 0x1c,
-0x25, 0x53, 0x19, 0xe5, 0x01, 0x2b, 0x45, 0x6c,
-0xe5, 0xe6, 0x35, 0x09, 0x07, 0x01, 0x09, 0x09,
-0x12, 0x63, 0x09, 0x02, 0x03, 0x0c, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x07, 0x01, 0x09, 0x01,
-0x07, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0x02, 0xe5, 0x02, 0x0c,
-0x09, 0x09, 0x09, 0x06, 0x02, 0x05, 0xe5, 0x01,
-0x07, 0x01, 0x05, 0x03, 0x07, 0x01, 0x09, 0x0b,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x0d, 0xe5, 0x01, 0x05, 0x07, 0xe5, 0x05,
-0x01, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x03,
-0x05, 0xe5, 0x07, 0x09, 0xe5, 0x07, 0x09, 0xe5,
-0x07, 0x01, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x04, 0x02, 0xe5, 0x12, 0x04,
-0x0b, 0x05, 0x02, 0xe5, 0x07, 0xe5, 0x08, 0x09,
-0x08, 0xe5, 0x08, 0x09, 0x09, 0x09, 0x06, 0x03,
-0xe5, 0x07, 0xe5, 0x08, 0x08, 0xe5, 0x07, 0xe5,
-0x08, 0x09, 0x04, 0x03, 0xe5, 0x08, 0x09, 0x0d,
-0x01, 0xe6, 0x05, 0x06, 0xe5, 0x07, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x01, 0x03, 0xe5, 0x14, 0x06,
-0x09, 0x13, 0xe5, 0x09, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0xe5,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0x02, 0x03, 0xe8,
-0x0e, 0x01, 0x09, 0x09, 0x07, 0x08, 0xe5, 0x07,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x08, 0x01,
-0x0b, 0x09, 0x07, 0x0b, 0x09, 0x07, 0x09, 0x13,
-0x09, 0x0e, 0x02, 0xe5, 0x0c, 0x09, 0x03, 0x05,
-0x09, 0x12, 0x09, 0xe5, 0x08, 0x13, 0x09, 0x01,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0x01,
-0x09, 0x09, 0x10, 0xe8, 0x03, 0x08, 0x02, 0x03,
-0x02, 0x02, 0x06, 0x02, 0x03, 0x02, 0x02, 0x06,
-0x02, 0x09, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x04, 0x01, 0x01, 0x02, 0x06, 0x02,
-0x06, 0x02, 0x06, 0x02, 0xe5, 0x04, 0x02, 0x06,
-0x02, 0x06, 0x02, 0x06, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0x0d, 0x01, 0x01, 0x03, 0xe5, 0x09,
-0x09, 0x09, 0xe5, 0x0f, 0xe5, 0x25, 0x0b, 0x04,
-0xe5, 0x01, 0x02, 0x06, 0x02, 0x13, 0x09, 0x36,
-0x0d, 0x23, 0x35, 0x82, 0x01, 0x03, 0x10, 0x09,
-0x02, 0x06, 0x11, 0x09, 0x1c, 0xe5, 0x0a, 0x03,
-0xe6, 0xe5, 0x02, 0x03, 0x05, 0x0d, 0x05, 0x03,
-0x05, 0x17, 0x27, 0x02, 0xe5, 0x29, 0x50, 0x27,
-0x11, 0x28, 0xe5, 0x01, 0x10, 0x09, 0x09, 0x09,
-0x09, 0x04, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0x09,
-0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0e, 0xe7, 0x0e, 0xe5, 0x02,
-0x02, 0x02, 0x06, 0x02, 0x10, 0xe5, 0xe5, 0x38,
-0x1e, 0x06, 0x02, 0x13, 0x01, 0xe5, 0x2c, 0xe6,
-0x17, 0x09, 0x06, 0x09, 0x01, 0x10, 0x19, 0x24,
-0x13, 0x13, 0x02, 0x11, 0x16, 0x05, 0x02, 0x03,
-0x01, 0x10, 0xe5, 0x08, 0x70, 0x09, 0x3f, 0x01,
-0x02, 0xe5, 0x02, 0x26, 0x11, 0x09, 0x28, 0x02,
-0x6c, 0xe5, 0xe5, 0x13, 0xca, 0x02, 0x0d, 0x01,
-0x07, 0x01, 0x07, 0x1d, 0x01, 0x04, 0x0e, 0x07,
-0x01, 0x13, 0x01, 0x07, 0xe6, 0x10, 0xe5, 0x03,
-0x46, 0x01, 0x01, 0x0d, 0x01, 0x07, 0x02, 0x03,
-0x05, 0x1d, 0x10, 0x09, 0x02, 0x0e, 0x02, 0xe5,
-0x01, 0x07, 0x35, 0x29, 0xe6, 0xe5, 0x18, 0x12,
-0xe5, 0x10, 0x08, 0x1a, 0x2c, 0x09, 0x43, 0xe5,
-0xe6, 0x14, 0x01, 0xe6, 0x04, 0x04, 0x23, 0x04,
-0x12, 0x0b, 0x09, 0x63, 0x03, 0x02, 0xe5, 0x71,
-0x30, 0x3c, 0x01, 0x17, 0xe5, 0xe5, 0x29, 0x35,
-0x5e, 0x03, 0x03, 0x09, 0x0f, 0x0b, 0x20, 0x27,
-0x71, 0x01, 0x0f, 0x04, 0x03, 0x05, 0x02, 0x01,
-0x04, 0x09, 0x09, 0x32, 0x02, 0x65, 0x01, 0x03,
-0x01, 0xe6, 0x0d, 0xe5, 0x10, 0x01, 0x27, 0x02,
-0x09, 0x89, 0x0e, 0x03, 0x33, 0x03, 0x03, 0x29,
-0x03, 0x04, 0x2c, 0x2f, 0xe6, 0xe7, 0xd9, 0xe7,
-0xe6, 0x01, 0x01, 0x23, 0xe5, 0xae, 0x01, 0x03,
-0x02, 0x04, 0xd4, 0x08, 0x02, 0xd8, 0x03, 0x01,
-0xe5, 0x16, 0x01, 0x11, 0x01, 0xb2, 0x01, 0x01,
-0x15, 0x01, 0x01, 0x0f, 0x01, 0x01, 0xab, 0x06,
-0x17, 0x01, 0x11, 0x01, 0xaf, 0xe5, 0xe5, 0xe5,
-0x16, 0x01, 0x11, 0x01, 0xb1, 0x02, 0x4f, 0xe5,
-0x86, 0x06, 0x01, 0xe5, 0x4f, 0xe5, 0x8b, 0x03,
-0xe5, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06,
-0x02, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x02,
-0xe6, 0x01, 0x44, 0xe5, 0x91, 0x03, 0x01, 0xe5,
-0x44, 0x9a, 0x01, 0x0f, 0x13, 0x24, 0xe5, 0xe5,
-0x91, 0xe5, 0x01, 0x0f, 0xe5, 0x11, 0xe5, 0x23,
-0x01, 0xe5, 0x92, 0xe7, 0x0d, 0x13, 0x25, 0x01,
-0x91, 0xe6, 0x01, 0x09, 0x05, 0x03, 0xe7, 0x05,
-0xe7, 0x01, 0x04, 0xe6, 0x05, 0xe7, 0x07, 0xe5,
-0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0x01, 0xe5, 0x0e, 0x04, 0x05, 0x03, 0x04, 0x04,
-0x08, 0x17, 0x01, 0x92, 0x02, 0xe5, 0x0e, 0x06,
-0x03, 0x02, 0x02, 0x02, 0x06, 0x07, 0x01, 0x16,
-0x8b, 0x05, 0xe5, 0x01, 0xe6, 0x0d, 0x03, 0x01,
-0x09, 0x03, 0x05, 0x09, 0x15, 0x28, 0x64, 0x04,
-0xe7, 0x01, 0x03, 0x0b, 0x03, 0xe7, 0x02, 0x02,
-0x01, 0xe5, 0x01, 0x03, 0xe7, 0x02, 0x03, 0xe6,
-0x13, 0x01, 0x90, 0x04, 0xe5, 0xd9, 0x03, 0xe5,
-0xe6, 0x10, 0x01, 0xe5, 0x05, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x04,
-0x04, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x0b, 0xe7, 0x4e, 0x8e, 0xe6, 0xe6, 0x12, 0x3c,
-0x1e, 0x0b, 0x13, 0x09, 0x19, 0x16, 0x11, 0xe9,
-0x03, 0x19, 0x32, 0x0a, 0x09, 0x09, 0xe5, 0x4f,
-0x09, 0x08, 0xe5, 0x01, 0x08, 0xe6, 0x46, 0x01,
-0x26, 0x08, 0x5d, 0x08, 0x4a, 0xe5, 0x01, 0x22,
-0x37, 0x03, 0x0a, 0x21, 0x04, 0xe5, 0xe6, 0x08,
-0x0b, 0x03, 0x15, 0x40, 0x3f, 0x2d, 0x02, 0x0c,
-0x36, 0x2d, 0xe5, 0x08, 0x32, 0xe5, 0x2f, 0xe5,
-0x45, 0x28, 0x01, 0x3d, 0x30, 0xe6, 0x04, 0x04,
-0x66, 0x01, 0xe5, 0x05, 0x62, 0xe8, 0x70, 0x03,
-0x68, 0x03, 0x72, 0x01, 0x3a, 0x01, 0x2c, 0x01,
-0x01, 0xb3, 0x20, 0x08, 0xe5, 0x02, 0x05, 0x6c,
-0x06, 0x0c, 0x2e, 0x28, 0x01, 0xe6, 0xe5, 0xd9,
-0xe6, 0xe5, 0xe5, 0xe5, 0x01, 0xd4, 0x01, 0x02,
-0x01, 0x01, 0x04, 0xa7, 0xe5, 0x2a, 0x04, 0xe5,
-0xe6, 0x01, 0xa9, 0xe5, 0xe5, 0x2a, 0x02, 0x02,
-0xe6, 0x0a, 0xa2, 0x01, 0x25, 0x06, 0x02, 0xe5,
-0xe5, 0x07, 0xe6, 0xa1, 0x01, 0x01, 0x02, 0x01,
-0x23, 0x04, 0xe5, 0x4f, 0x01, 0x5c, 0x01, 0x2c,
-0x01, 0x01, 0xaf, 0x01, 0x2d, 0xe8, 0xe0, 0xe0,
-0x01, 0xe5, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06,
-0xe5, 0xe5, 0xe5, 0xd2, 0x02, 0x04, 0x05, 0xe5,
-0xd4, 0x09, 0x02, 0x46, 0x6a, 0x2c, 0x02, 0xe5,
-0xae, 0x01, 0xe5, 0x2a, 0x01, 0x01, 0xe5, 0xaf,
-0x2d, 0xe5, 0xe5, 0x08, 0x0b, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x05, 0xe5, 0xe7,
-0x4b, 0xe5, 0x27, 0x3a, 0x2c, 0xe8, 0x75, 0x38,
-0x01, 0x2d, 0x01, 0xe6, 0xaf, 0x2c, 0x02, 0xe5,
-0x02, 0x48, 0x29, 0x38, 0x01, 0x2c, 0xe5, 0x01,
-0xaf, 0x2d, 0xe6, 0xe6, 0x09, 0x06, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x02, 0x06, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x03, 0x07, 0x02, 0x4f, 0x8f,
-0xe5, 0xe6, 0x12, 0x15, 0x13, 0x08, 0x08, 0x57,
-0x0a, 0x24, 0x04, 0x02, 0x01, 0x04, 0xe5, 0x04,
-0xe5, 0x40, 0x22, 0x09, 0x66, 0x02, 0xe6, 0x02,
-0x68, 0x13, 0x4e, 0x08, 0xe7, 0xe6, 0xe5, 0x6d,
-0x6f, 0xe6, 0x0a, 0x23, 0x32, 0x09, 0x03, 0x10,
-0x5a, 0x02, 0xe7, 0x08, 0x0f, 0x56, 0x62, 0x04,
-0x04, 0xe5, 0xe6, 0x45, 0x2a, 0x6d, 0x01, 0xe6,
-0x6f, 0x61, 0x0a, 0xe5, 0x01, 0x71, 0x46, 0x11,
-0x15, 0x01, 0x51, 0x8c, 0x03, 0xe1, 0xe5, 0x0b,
-0x6a, 0x67, 0xe7, 0xe5, 0x4c, 0xe5, 0x8a, 0x02,
-0x02, 0x01, 0x02, 0x4b, 0xe5, 0x61, 0x24, 0x02,
-0x03, 0xe6, 0x03, 0xa6, 0xe5, 0x01, 0x01, 0x22,
-0x01, 0x02, 0x06, 0x01, 0x02, 0xa9, 0xe5, 0xe5,
-0xe5, 0x21, 0x06, 0x06, 0xe5, 0x03, 0xcf, 0x02,
-0x04, 0x01, 0x01, 0xe5, 0xe5, 0x02, 0x04, 0x01,
-0xa6, 0x28, 0x02, 0xe5, 0xe5, 0x4f, 0x5e, 0x01,
-0x2f, 0xe5, 0x4f, 0xe5, 0x5c, 0x01, 0x2c, 0x01,
-0xe7, 0x03, 0x4b, 0x8b, 0xe9, 0xdd, 0x01, 0xe7,
-0x0d, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x06, 0x06, 0x01, 0xe7,
-0xd4, 0x08, 0x01, 0x01, 0xdf, 0x02, 0xdf, 0x01,
-0xe5, 0x4f, 0x8a, 0x02, 0x01, 0xe7, 0xdd, 0x01,
-0xe5, 0x08, 0x0b, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0xe7, 0xe5, 0x4b, 0xe5, 0x8d,
-0x02, 0xe7, 0xdd, 0x02, 0xe6, 0xdb, 0x01, 0xe7,
-0x02, 0x48, 0x09, 0x87, 0x01, 0xe7, 0x26, 0xb6,
-0xe5, 0xe5, 0x10, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x06, 0xe5, 0xe5, 0x06, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x06, 0x01, 0x02, 0x04, 0x01, 0x01, 0x05,
-0x01, 0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x06,
-0xe5, 0xe5, 0x0d, 0x04, 0x21, 0x28, 0x8a, 0x03,
-0x02, 0xe6, 0x14, 0x11, 0x32, 0x09, 0x09, 0x0b,
-0x50, 0x10, 0xe5, 0xe7, 0xe5, 0x38, 0x12, 0x22,
-0xe5, 0x64, 0x06, 0x02, 0x04, 0x03, 0x68, 0x6b,
-0x01, 0xe8, 0x01, 0x6d, 0x6e, 0x01, 0xe5, 0x1a,
-0x14, 0x3f, 0x5d, 0x0d, 0xe5, 0x01, 0xe6, 0x19,
-0x0b, 0x49, 0x32, 0x0e, 0x19, 0x01, 0x0f, 0x02,
-0x0a, 0x12, 0x28, 0x2a, 0x30, 0x27, 0x05, 0x01,
-0x0c, 0xe8, 0x33, 0x01, 0x39, 0xe5, 0x5f, 0x0b,
-0x01, 0xe5, 0x2f, 0x14, 0x2b, 0x6c, 0x02, 0xe5,
-0x2c, 0x0b, 0x38, 0x45, 0x26, 0xe5, 0xe5, 0xe5,
-0x2a, 0x1e, 0x84, 0x0c, 0x01, 0x01, 0x2b, 0xe5,
-0xa5, 0x0b, 0xe9, 0x5a, 0x7e, 0x01, 0x01, 0x01,
-0x02, 0x01, 0x49, 0x0e, 0x7b, 0x01, 0x03, 0xe5,
-0xe5, 0x03, 0x33, 0x0b, 0x18, 0x01, 0x74, 0x01,
-0x02, 0x04, 0x02, 0xe5, 0x01, 0x36, 0x20, 0xe5,
-0xe5, 0xe5, 0x73, 0x06, 0x02, 0x03, 0x5d, 0x6f,
-0x01, 0x05, 0x07, 0xe5, 0x02, 0x02, 0x3f, 0x09,
-0x10, 0x03, 0x6b, 0x01, 0x01, 0x09, 0x03, 0xe5,
-0xe6, 0x3a, 0x01, 0x03, 0x09, 0x10, 0x01, 0x6d,
-0x01, 0x0d, 0xe6, 0xe6, 0x3b, 0x01, 0x1e, 0x01,
-0x6d, 0x01, 0x0f, 0xe7, 0x44, 0x09, 0x09, 0x83,
-0xe5, 0x02, 0x39, 0x08, 0x03, 0x01, 0x03, 0x03,
-0x01, 0x09, 0x81, 0x02, 0xe6, 0x0d, 0x09, 0x09,
-0x04, 0x01, 0x02, 0x09, 0x09, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x02, 0x02, 0x04, 0x01, 0x02, 0x02,
-0x06, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0x01, 0xe5, 0xe5, 0x01,
-0x27, 0x0e, 0xe5, 0x13, 0x0c, 0x7e, 0x02, 0xe5,
-0x01, 0x27, 0x11, 0x1f, 0x86, 0xe6, 0xe5, 0x27,
-0x02, 0x0c, 0x03, 0x16, 0x07, 0x01, 0x7e, 0x02,
-0xe5, 0x2c, 0xe5, 0x09, 0x08, 0x09, 0x05, 0xe5,
-0x01, 0x06, 0x01, 0xe5, 0x7c, 0x02, 0xe5, 0x2c,
-0x1a, 0x0a, 0x01, 0x07, 0x01, 0x7e, 0xe8, 0x14,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04,
-0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x06, 0xe6, 0xe5, 0x2c, 0x0a, 0x06,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x82, 0x01,
-0x2b, 0x0c, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x09, 0x7e, 0x03, 0x2d, 0x27, 0x07, 0x14, 0x6b,
-0x02, 0xe5, 0x2a, 0x0e, 0x18, 0x0b, 0x12, 0x6b,
-0x01, 0xe6, 0x2e, 0x27, 0x08, 0x04, 0x7a, 0xe6,
-0xe5, 0x0e, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01,
-0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0xe6, 0xe5,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x09, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x08, 0x02, 0x02, 0x27,
-0x02, 0x0c, 0xe5, 0x0c, 0x07, 0x01, 0x0c, 0x82,
-0x01, 0xe5, 0x14, 0x08, 0x08, 0x0c, 0x01, 0x02,
-0x03, 0x09, 0x09, 0x0e, 0x7b, 0xe5, 0x01, 0xe5,
-0x08, 0x20, 0x06, 0x1a, 0x24, 0x6f, 0xe5, 0x04,
-0x0a, 0x09, 0x09, 0x06, 0x01, 0xe5, 0x04, 0x20,
-0x09, 0xe5, 0x0f, 0x6d, 0x01, 0xe5, 0x04, 0x28,
-0x0b, 0x03, 0x09, 0x14, 0x13, 0x6d, 0x01, 0xe5,
-0x01, 0x06, 0x21, 0x05, 0x08, 0x18, 0x19, 0x15,
-0x5a, 0x01, 0xe6, 0x04, 0x0d, 0x0d, 0x2e, 0x07,
-0x18, 0x5a, 0x11, 0xe6, 0xe5, 0x09, 0xe5, 0x16,
-0x01, 0x1d, 0x02, 0x06, 0x0c, 0x16, 0x30, 0x2f,
-0x0b, 0xe5, 0xe6, 0x0c, 0xe6, 0x06, 0xe6, 0x05,
-0xe6, 0x07, 0x09, 0x01, 0x07, 0xe5, 0x03, 0x2b,
-0xe5, 0x5f, 0xe5, 0x04, 0x04, 0xe7, 0x0e, 0x0a,
-0x02, 0x03, 0x02, 0x02, 0x02, 0xe5, 0x12, 0xe5,
-0x2f, 0x6d, 0x02, 0x09, 0x19, 0x0d, 0x05, 0x1a,
-0x1f, 0x45, 0x26, 0xe8, 0x13, 0xe5, 0x0a, 0x06,
-0x0d, 0xe5, 0x15, 0x84, 0x08, 0xe9, 0x34, 0x01,
-0x17, 0x8e, 0x01, 0x01, 0xe6, 0x07, 0x01, 0x04,
-0x02, 0xe5, 0x04, 0x02, 0xe5, 0x04, 0x02, 0xe5,
-0x04, 0x09, 0x09, 0x09, 0x08, 0xe5, 0x11, 0xe5,
-0x6f, 0xe5, 0x01, 0x01, 0x02, 0x01, 0x05, 0xe5,
-0x03, 0x02, 0xe5, 0x04, 0x03, 0xe5, 0x06, 0xe5,
-0x05, 0x09, 0x08, 0x09, 0x0a, 0x13, 0x06, 0x66,
-0x01, 0x02, 0xe5, 0xe6, 0x03, 0x0b, 0x09, 0x02,
-0xe5, 0x03, 0x01, 0x08, 0x06, 0x01, 0xe5, 0x02,
-0xe5, 0xe5, 0xe6, 0x02, 0xe5, 0xe5, 0xe6, 0x8b,
-0x04, 0xe5, 0xe6, 0x01, 0x17, 0x02, 0xe5, 0x01,
-0x0c, 0x03, 0x02, 0x01, 0x04, 0xe5, 0xe5, 0xe5,
-0x03, 0xe5, 0xe5, 0xe5, 0x8e, 0x03, 0x02, 0x11,
-0xe5, 0x08, 0x04, 0x04, 0x09, 0x02, 0x05, 0x05,
-0x01, 0x01, 0xe5, 0x03, 0x01, 0x01, 0xe5, 0x22,
-0x6c, 0x02, 0x02, 0x1e, 0x01, 0x01, 0x02, 0x01,
-0x0e, 0x05, 0x01, 0x02, 0x04, 0x01, 0x02, 0x8c,
-0x03, 0xe5, 0xe6, 0x0f, 0x02, 0x0c, 0x06, 0x08,
-0xe5, 0x01, 0x01, 0x0e, 0x01, 0x11, 0x09, 0x78,
-0xe5, 0xe5, 0xe5, 0x11, 0x02, 0x05, 0xe7, 0x01,
-0x01, 0x01, 0xe5, 0xe6, 0x04, 0xe5, 0xe5, 0xe6,
-0xe5, 0x02, 0xe5, 0x06, 0x01, 0x01, 0x05, 0xe6,
-0x08, 0xe5, 0x07, 0xe5, 0x77, 0xe5, 0x01, 0x05,
-0x03, 0x02, 0x03, 0x01, 0x07, 0x01, 0xe5, 0x05,
-0x01, 0x02, 0x04, 0x01, 0x13, 0x09, 0x0c, 0x09,
-0x7a, 0xe6, 0x09, 0xe5, 0x03, 0xe5, 0x07, 0xe5,
-0x01, 0x01, 0x03, 0xe5, 0x07, 0xe5, 0x08, 0xa4,
-0x03, 0xe5, 0x0d, 0xe6, 0x06, 0xe5, 0x01, 0xe5,
-0xe5, 0x01, 0xe5, 0xe5, 0x05, 0xe5, 0x07, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x05,
-0xe6, 0x02, 0x02, 0x0f, 0x09, 0x03, 0x05, 0x09,
-0x08, 0xe5, 0x08, 0x09, 0x86, 0x05, 0x04, 0xe6,
-0xe5, 0x18, 0x01, 0x07, 0x09, 0x09, 0xa7, 0xe5,
-0x0f, 0xe6, 0x02, 0xe5, 0x01, 0x01, 0x03, 0x03,
-0x01, 0x07, 0xe6, 0x05, 0x02, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x01, 0x07, 0x01, 0x7c, 0x01, 0xe6,
-0xe5, 0x10, 0x02, 0x04, 0xe6, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0x06, 0x02, 0x04, 0xe6, 0x01, 0x04,
-0x01, 0x02, 0x04, 0x01, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x7d, 0xe5, 0xe6, 0x07, 0x09, 0x09,
-0x10, 0x08, 0x07, 0x09, 0x09, 0x01, 0x07, 0x01,
-0x0d, 0x70, 0x01, 0xe6, 0x0f, 0x02, 0xe5, 0xe5,
-0x05, 0xe5, 0xe6, 0x04, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x01, 0x04, 0x01,
-0x02, 0x04, 0xe7, 0xe5, 0x03, 0xe7, 0xe5, 0x02,
-0xe5, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0x01, 0x01, 0x10, 0x06, 0x01, 0xe6, 0x04,
-0x02, 0xe5, 0x07, 0xe5, 0x06, 0xe5, 0x01, 0xe5,
-0x01, 0x09, 0x0c, 0xe5, 0x01, 0x05, 0xe5, 0xe5,
-0x7a, 0xe5, 0xe5, 0x12, 0x02, 0xe5, 0xe5, 0x02,
-0x02, 0x02, 0x04, 0x01, 0x06, 0x02, 0x02, 0xe5,
-0x04, 0x02, 0x06, 0x02, 0x06, 0x09, 0x07, 0x01,
-0x77, 0xe5, 0xe6, 0x0f, 0xe5, 0x01, 0xe6, 0x01,
-0x01, 0x02, 0xe7, 0xe5, 0xe5, 0xe5, 0xe6, 0x03,
-0x02, 0xe6, 0x01, 0x05, 0xe6, 0x05, 0xe7, 0x05,
-0x01, 0x09, 0x08, 0xe5, 0x0a, 0x6b, 0x01, 0xe6,
-0x12, 0x03, 0x05, 0x03, 0x01, 0x04, 0x08, 0x05,
-0x02, 0x01, 0x04, 0x02, 0xe6, 0x03, 0x02, 0x01,
-0x05, 0x03, 0x05, 0x02, 0xe5, 0x0c, 0x6c, 0xe8,
-0x1f, 0x02, 0x0a, 0xa5, 0x07, 0x02, 0x01, 0x0b,
-0x05, 0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x02, 0x04, 0x01,
-0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0xe5, 0x05, 0x01, 0x02, 0x04, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x03, 0x08, 0x01, 0x0f, 0xe5, 0xe5, 0x05, 0xe5,
-0x04, 0xe5, 0xe5, 0x02, 0x05, 0x09, 0xe5, 0x15,
-0x05, 0xe5, 0x03, 0x0d, 0xe5, 0x72, 0xe5, 0xe7,
-0x0b, 0x01, 0x06, 0xe5, 0xe5, 0x02, 0x0a, 0x0c,
-0x01, 0x04, 0x17, 0x05, 0x71, 0x10, 0xe5, 0x02,
-0x22, 0x07, 0x01, 0x03, 0x09, 0x02, 0x05, 0x02,
-0x06, 0x07, 0x11, 0x01, 0x07, 0x6d, 0x02, 0xe5,
-0xe5, 0x13, 0x01, 0x07, 0xe5, 0x0b, 0x03, 0x0e,
-0x09, 0x05, 0xe5, 0x01, 0x06, 0x14, 0x65, 0x04,
-0x01, 0x02, 0x17, 0x01, 0x02, 0x02, 0x09, 0x25,
-0x06, 0x09, 0x10, 0x08, 0x65, 0xe7, 0x1b, 0x04,
-0xe5, 0x0b, 0x07, 0x08, 0x09, 0x03, 0x06, 0x01,
-0x12, 0xe5, 0x32, 0x30, 0x0b, 0x01, 0xe7, 0x10,
-0xe5, 0x0d, 0x01, 0x1b, 0xe5, 0x06, 0xe5, 0x11,
-0x05, 0x0e, 0xe5, 0x02, 0x13, 0x55, 0x01, 0x3f,
-0x03, 0x02, 0x04, 0xe5, 0x23, 0x30, 0x2f, 0x0b,
-0xe5, 0x01, 0x05, 0x10, 0x09, 0x05, 0x03, 0x13,
-0x09, 0x07, 0x01, 0x09, 0x10, 0x03, 0x6c, 0x02,
-0xe5, 0x33, 0x1c, 0x1f, 0x6c, 0xe6, 0xe6, 0x14,
-0x23, 0x04, 0x01, 0x01, 0x0b, 0x03, 0x01, 0x05,
-0x5c, 0x21, 0x02, 0xe5, 0x01, 0xe5, 0x16, 0x01,
-0x01, 0xe5, 0x06, 0x20, 0x05, 0x09, 0xe6, 0x15,
-0x71, 0xe6, 0x4a, 0x09, 0x84, 0x05, 0x01, 0x01,
-0x15, 0x09, 0x0c, 0x0a, 0xe5, 0xe6, 0xe5, 0x01,
-0xe5, 0x01, 0xe5, 0x0a, 0x02, 0x01, 0x1a, 0x06,
-0x01, 0x03, 0xe5, 0x59, 0x05, 0x01, 0x1f, 0x09,
-0xe5, 0x0b, 0x02, 0xe5, 0xe7, 0x03, 0xe5, 0x01,
-0xe5, 0x06, 0xe6, 0x1c, 0x05, 0xe5, 0x5d, 0x02,
-0x03, 0xe6, 0x02, 0xe5, 0x11, 0x01, 0x04, 0xe5,
-0x05, 0x06, 0x0a, 0x02, 0xe5, 0x01, 0x03, 0x02,
-0xe5, 0x02, 0x03, 0xe5, 0x01, 0x01, 0x1d, 0x0d,
-0x52, 0x01, 0x02, 0x05, 0x02, 0xe5, 0xe5, 0x13,
-0x06, 0x0c, 0x13, 0x09, 0x01, 0x07, 0x1f, 0x60,
-0x06, 0x03, 0xe8, 0x15, 0x02, 0x04, 0x01, 0x02,
-0x08, 0x04, 0x01, 0x04, 0xe5, 0x03, 0x01, 0x09,
-0x03, 0x02, 0xe5, 0xe5, 0x1c, 0x61, 0x07, 0x04,
-0xe6, 0x1b, 0x01, 0xe5, 0x08, 0x03, 0x01, 0x02,
-0x0a, 0x01, 0x01, 0x07, 0x01, 0x04, 0xe5, 0xe5,
-0xe5, 0xe5, 0x01, 0x16, 0x03, 0x64, 0x02, 0x01,
-0xe5, 0x16, 0x01, 0x07, 0x01, 0x04, 0x04, 0x0b,
-0x05, 0x01, 0x07, 0x01, 0x05, 0x01, 0x01, 0x03,
-0xe5, 0x07, 0xe5, 0x0d, 0x64, 0x05, 0x01, 0xe7,
-0x15, 0x02, 0x02, 0xe5, 0x01, 0x01, 0xe5, 0x02,
-0xe7, 0x05, 0x01, 0x05, 0x01, 0x01, 0xe5, 0xe5,
-0x08, 0x07, 0x05, 0xe5, 0x07, 0xe5, 0x0d, 0x6b,
-0xe7, 0x04, 0x17, 0x02, 0x06, 0xe5, 0x10, 0x0a,
-0x13, 0x02, 0x06, 0x02, 0x76, 0xe5, 0x02, 0x1e,
-0x1b, 0x0b, 0xe6, 0x06, 0xe5, 0x11, 0xe5, 0x1d,
-0x59, 0x01, 0xe7, 0x0d, 0x09, 0xe5, 0x01, 0x05,
-0xe5, 0x07, 0x09, 0x06, 0x02, 0x09, 0x06, 0x02,
-0x09, 0x09, 0x0b, 0x09, 0x05, 0x03, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x04, 0x01, 0x06,
-0x04, 0x20, 0x1a, 0x13, 0x86, 0x07, 0xe8, 0x1e,
-0xb5, 0x08, 0xe8, 0x16, 0x01, 0xe6, 0x04, 0x01,
-0xe6, 0x18, 0x01, 0x07, 0x01, 0x09, 0x26, 0x61,
-0x01, 0xe6, 0x16, 0x01, 0x07, 0x01, 0x15, 0x04,
-0xe5, 0xe6, 0x05, 0x01, 0xe5, 0x08, 0x03, 0x05,
-0x1f, 0x5d, 0xe5, 0x01, 0xe5, 0x17, 0x01, 0x07,
-0x01, 0x19, 0x01, 0x07, 0x09, 0x08, 0x20, 0x01,
-0x5d, 0xe9, 0x08, 0x0b, 0xe5, 0x01, 0x05, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04,
-0xe6, 0x06, 0xe6, 0x04, 0x01, 0xe5, 0x07, 0xe5,
-0x05, 0xe6, 0x09, 0xe5, 0xe5, 0xe5, 0x03, 0xe5,
-0x08, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x06, 0x02, 0xe5, 0x20, 0x1d, 0x01,
-0x07, 0x01, 0x05, 0x01, 0x01, 0x05, 0x04, 0xe5,
-0x0c, 0x0a, 0x02, 0x01, 0x19, 0x09, 0x3a, 0x01,
-0x01, 0x23, 0x1b, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x1a, 0x0b, 0xe5, 0xe5, 0x05, 0x57, 0xe8, 0x18,
-0x25, 0x01, 0x09, 0x05, 0x07, 0x01, 0x01, 0x01,
-0x0d, 0xe6, 0x01, 0x0a, 0x01, 0x04, 0x12, 0x01,
-0x07, 0x01, 0x3b, 0xe7, 0x18, 0x20, 0x04, 0x0b,
-0xe5, 0x01, 0x09, 0x03, 0x01, 0xe5, 0x0b, 0xe5,
-0x02, 0x0a, 0x01, 0x17, 0x09, 0x3c, 0x03, 0xe5,
-0x01, 0x15, 0xe5, 0x02, 0x04, 0xe5, 0x19, 0x09,
-0x01, 0xe5, 0x08, 0x1c, 0x69, 0x01, 0xe7, 0x0b,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0xe5, 0xe6, 0x02,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x06, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x0b, 0xe5, 0xe5,
-0x12, 0x08, 0x0d, 0x0c, 0xe5, 0x15, 0x01, 0xe6,
-0x8d, 0xe5, 0x14, 0x06, 0x15, 0x02, 0x05, 0x1d,
-0x01, 0x31, 0x28, 0x25, 0x03, 0xe5, 0x1b, 0x1a,
-0x0b, 0x0a, 0x03, 0x09, 0x09, 0x09, 0xe5, 0x09,
-0x09, 0x09, 0x09, 0x44, 0xe7, 0x03, 0xe5, 0x12,
-0x09, 0x1b, 0x04, 0x04, 0x02, 0x04, 0x03, 0x03,
-0x03, 0x01, 0x0e, 0x02, 0x0b, 0x3f, 0x1f, 0x01,
-0xe8, 0x03, 0x2a, 0x09, 0x03, 0x02, 0x0a, 0x01,
-0x04, 0x05, 0x05, 0x11, 0x0e, 0x5d, 0x01, 0xe7,
-0x01, 0x05, 0x06, 0x06, 0x09, 0x01, 0x01, 0xe5,
-0x0a, 0x08, 0x0e, 0xe5, 0x10, 0x0b, 0x08, 0x0d,
-0x1b, 0xe5, 0x1c, 0x21, 0xe5, 0xe8, 0x03, 0x1b,
-0x1d, 0x01, 0x07, 0x1d, 0x09, 0x22, 0x24, 0x25,
-0x02, 0x23, 0xe5, 0xe5, 0x16, 0x04, 0x02, 0x04,
-0x15, 0x07, 0xe5, 0x05, 0x47, 0x02, 0x23, 0x01,
-0xe5, 0x1a, 0x0a, 0x25, 0x23, 0x31, 0x31, 0x02,
-0x05, 0x03, 0x15, 0x1d, 0x23, 0x09, 0x0f, 0xe5,
-0x1a, 0x27, 0x13, 0x13, 0xe8, 0x19, 0x26, 0x09,
-0x01, 0x11, 0xe5, 0x39, 0x01, 0x1a, 0x07, 0x21,
-0x1c, 0x02, 0x08, 0x18, 0x08, 0xe6, 0x1f, 0x2f,
-0x41, 0x02, 0x3f, 0x01, 0x09, 0x0e, 0x02, 0x10,
-0x2d, 0x2d, 0x13, 0xea, 0x17, 0xe5, 0x0b, 0x01,
-0x14, 0x02, 0xe5, 0x01, 0x01, 0x05, 0x0e, 0x3d,
-0x19, 0xe5, 0x24, 0x01, 0x02, 0xe5, 0x01, 0x01,
-0x16, 0x0b, 0xe5, 0x10, 0x01, 0x01, 0x01, 0xe5,
-0x02, 0xe5, 0x02, 0xe5, 0x11, 0x03, 0x09, 0x2e,
-0xe6, 0x17, 0x01, 0x20, 0x02, 0x03, 0xe6, 0x03,
-0x36, 0xe5, 0x01, 0x01, 0x01, 0x07, 0xe5, 0x12,
-0x3a, 0x01, 0x1e, 0x17, 0x01, 0x02, 0x04, 0x01,
-0x01, 0x02, 0x3c, 0x01, 0x09, 0x01, 0x0c, 0xe5,
-0x3e, 0x01, 0x1f, 0x16, 0x06, 0x02, 0x01, 0xe6,
-0x20, 0x01, 0x1b, 0x01, 0x06, 0xe5, 0xe6, 0xe5,
-0x0d, 0x01, 0xe8, 0x01, 0xe5, 0xe5, 0x32, 0x1b,
-0x1b, 0x07, 0x01, 0x01, 0xe5, 0xe5, 0x1e, 0x01,
-0x01, 0x12, 0x06, 0x01, 0x01, 0x03, 0xe6, 0xe6,
-0xe5, 0x11, 0xe5, 0xe5, 0xe6, 0xe5, 0xe5, 0x30,
-0x01, 0x19, 0x03, 0x1a, 0x03, 0x01, 0x01, 0xe6,
-0x20, 0x01, 0x14, 0x06, 0x01, 0x05, 0x01, 0x01,
-0xe5, 0x16, 0x01, 0xe5, 0xe5, 0x32, 0x1b, 0x06,
-0x01, 0x1c, 0x02, 0x21, 0x01, 0x1b, 0x01, 0x07,
-0x01, 0xe5, 0x12, 0x03, 0x01, 0xe5, 0xe5, 0x32,
-0x1b, 0xe5, 0x03, 0xe5, 0x1e, 0xe6, 0x04, 0x17,
-0x02, 0x2d, 0x13, 0xe5, 0x01, 0x57, 0x1e, 0x01,
-0x02, 0x38, 0x0d, 0xe5, 0x03, 0xe6, 0x11, 0x02,
-0x59, 0x1f, 0xe5, 0x01, 0xe5, 0x0d, 0x09, 0x09,
-0x02, 0x06, 0x09, 0xe5, 0x04, 0x02, 0x09, 0xe5,
-0xe5, 0x05, 0x09, 0x01, 0x03, 0x03, 0x0b, 0x09,
-0x09, 0x09, 0x09, 0x02, 0x06, 0x09, 0x09, 0x09,
-0x09, 0x0d, 0x02, 0x01, 0x02, 0x3a, 0xe5, 0x0d,
-0xe5, 0x0c, 0x05, 0x73, 0x08, 0xe7, 0x3a, 0x11,
-0x0b, 0x79, 0x0a, 0x01, 0x01, 0x21, 0x01, 0x07,
-0x01, 0x06, 0xe5, 0x08, 0x09, 0x01, 0x01, 0x0f,
-0x3c, 0xe5, 0x1c, 0x01, 0xe6, 0x1f, 0xe5, 0x01,
-0x1a, 0x06, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07,
-0xe5, 0x08, 0x06, 0x01, 0xe6, 0x0b, 0x04, 0x01,
-0x39, 0x02, 0x19, 0xe5, 0xe5, 0xe5, 0x20, 0x01,
-0xe5, 0x16, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x08, 0x09, 0xe5, 0xe5, 0x16, 0x37, 0x1d, 0x01,
-0x03, 0x1d, 0xe5, 0xe8, 0x13, 0x01, 0x01, 0x03,
-0xe6, 0xe5, 0xe5, 0x02, 0x01, 0x01, 0x01, 0x03,
-0xe6, 0x02, 0x05, 0xe5, 0x07, 0xe6, 0xe6, 0x03,
-0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe6, 0x03,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0x02, 0xe5,
-0x14, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x17,
-0xe5, 0x0f, 0x3d, 0x1f, 0xe6, 0x20, 0xe7, 0x08,
-0x0c, 0x09, 0x09, 0x07, 0x01, 0x16, 0xe5, 0x11,
-0x3b, 0x1d, 0x28, 0xe5, 0x13, 0x01, 0x01, 0x04,
-0xe5, 0x08, 0x09, 0x17, 0x11, 0x14, 0x28, 0x1f,
-0x23, 0x02, 0x03, 0x0f, 0x03, 0x01, 0x03, 0xe5,
-0x07, 0x06, 0x02, 0xe5, 0x17, 0x02, 0x0e, 0x01,
-0x02, 0x38, 0x1d, 0x04, 0x1f, 0x01, 0x01, 0xe5,
-0x3d, 0xe5, 0xe5, 0x05, 0x02, 0x10, 0x02, 0xe5,
-0x38, 0x01, 0xe5, 0x19, 0x01, 0xe5, 0x1f, 0x04,
-0x0a, 0x06, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x04, 0x02,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01,
-0x02, 0x04, 0x01, 0x04, 0x04, 0x01, 0x07, 0x01,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x01, 0x02, 0x04, 0x01, 0x0a, 0x02, 0xe5,
-0x12, 0x05, 0xe5, 0x01, 0x20, 0x0a, 0xe8, 0xe5,
-0x0a, 0x01, 0x01, 0xe6, 0x35, 0x1b, 0x06, 0xe5,
-0x21, 0xe5, 0xe6, 0x09, 0x0a, 0x09, 0x3c, 0x14,
-0x4c, 0xe5, 0x1b, 0x04, 0x03, 0x12, 0xe5, 0xe5,
-0x01, 0x03, 0x09, 0x05, 0x03, 0x14, 0x01, 0x02,
-0x0d, 0x01, 0x12, 0x41, 0x05, 0x01, 0x22, 0xe5,
-0x01, 0x04, 0x1c, 0xe6, 0x03, 0x02, 0x09, 0x01,
-0x05, 0x01, 0x02, 0x08, 0xe5, 0x08, 0x0d, 0x09,
-0x03, 0x44, 0x01, 0x1e, 0x04, 0xe5, 0xe8, 0x01,
-0x0f, 0x0e, 0x0a, 0x05, 0x04, 0x02, 0x06, 0x07,
-0x10, 0x07, 0x0d, 0x4a, 0x1b, 0x05, 0xe5, 0x01,
-0xe5, 0x07, 0x13, 0x09, 0x06, 0x06, 0x02, 0x1d,
-0x08, 0x0d, 0x03, 0x12, 0x2b, 0xe5, 0x0b, 0x05,
-0xe5, 0x15, 0xeb, 0x10, 0x08, 0x22, 0x0d, 0x04,
-0x0a, 0x05, 0x0e, 0x04, 0x0c, 0x06, 0x05, 0x0d,
-0x13, 0x10, 0x01, 0xe5, 0x04, 0x0b, 0x05, 0xe5,
-0x01, 0x1c, 0x09, 0x12, 0x0c, 0x19, 0x05, 0x0a,
-0x44, 0x1d, 0x0d, 0xe5, 0x0b, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x03, 0x0e, 0x04, 0x01, 0x1c, 0x02,
-0xe5, 0x03, 0x09, 0x03, 0xe5, 0x4f, 0xe5, 0x19,
-0xe7, 0x0f, 0x02, 0x06, 0x09, 0x11, 0x0c, 0x0a,
-0x11, 0x10, 0xe5, 0x52, 0x18, 0xe5, 0xe5, 0x01,
-0x0b, 0x09, 0x09, 0x0a, 0x29, 0x06, 0x01, 0x14,
-0x2d, 0x0b, 0x01, 0x12, 0x1a, 0x02, 0x2b, 0xe6,
-0x21, 0x0f, 0x03, 0x0d, 0xe5, 0xe5, 0x2b, 0x0e,
-0x09, 0x23, 0xe5, 0xe5, 0x3a, 0x25, 0x01, 0x02,
-0x0c, 0x3c, 0x0a, 0x22, 0x01, 0x01, 0xe6, 0x07,
-0xe5, 0x05, 0x09, 0x04, 0x04, 0x04, 0x24, 0xe5,
-0x89, 0xe6, 0x01, 0xe5, 0x01, 0x01, 0x04, 0xe5,
-0x0b, 0xe5, 0x07, 0x09, 0x46, 0x3c, 0xe6, 0x10,
-0xe5, 0x11, 0x01, 0x01, 0x02, 0xe8, 0x03, 0x0f,
-0x02, 0x06, 0x04, 0x07, 0x06, 0xe5, 0xe5, 0xe5,
-0x21, 0xe5, 0x02, 0x02, 0x4c, 0x04, 0x06, 0x02,
-0x06, 0x11, 0x01, 0x07, 0xe5, 0x01, 0x11, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x07, 0x06, 0xe5, 0xe5,
-0xe5, 0x21, 0xe5, 0x4f, 0x02, 0x06, 0x0c, 0x17,
-0x02, 0x02, 0xe5, 0x11, 0x01, 0x01, 0x02, 0x02,
-0xe5, 0x01, 0xe5, 0x03, 0x04, 0x09, 0x01, 0x02,
-0x24, 0x02, 0x01, 0x01, 0x0b, 0x3a, 0x08, 0xe6,
-0x05, 0x02, 0xe5, 0xe5, 0x01, 0x01, 0x01, 0x12,
-0x01, 0xe5, 0x01, 0x13, 0xe5, 0x03, 0x04, 0x04,
-0x04, 0x03, 0x05, 0x01, 0x02, 0x24, 0x01, 0xe6,
-0x01, 0x48, 0x01, 0x01, 0x01, 0x02, 0x04, 0x05,
-0x01, 0x02, 0x01, 0x01, 0x0b, 0x02, 0x03, 0xe8,
-0x03, 0x0b, 0xe5, 0x01, 0x01, 0x0b, 0x07, 0x0f,
-0xe5, 0x71, 0x01, 0x09, 0x07, 0x01, 0x17, 0xe6,
-0xe6, 0x18, 0x09, 0x07, 0x0e, 0x24, 0x4f, 0x13,
-0x01, 0x18, 0x02, 0xe5, 0x0c, 0x04, 0x04, 0x04,
-0xe5, 0x07, 0xe5, 0x11, 0x27, 0x65, 0xe6, 0x0c,
-0x07, 0xe6, 0x09, 0x12, 0xe5, 0x07, 0xe5, 0x3a,
-0x51, 0x09, 0x07, 0x01, 0x14, 0xe5, 0xe6, 0x09,
-0x03, 0x07, 0x01, 0x07, 0x01, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x05, 0x03, 0x0b, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x05, 0xe5, 0x01, 0x03,
-0x05, 0x03, 0x05, 0x06, 0x06, 0x02, 0x01, 0x02,
-0x14, 0x01, 0x02, 0x04, 0x01, 0x02, 0x13, 0x27,
-0x54, 0xe5, 0x1b, 0xe5, 0x03, 0x02, 0x01, 0xe6,
-0x19, 0x09, 0x92, 0x1c, 0x0a, 0x01, 0xe5, 0xe5,
-0x2a, 0x07, 0x04, 0x04, 0x01, 0x07, 0x01, 0x0e,
-0x1a, 0x39, 0x01, 0x06, 0x0a, 0x01, 0x16, 0x03,
-0x01, 0x0c, 0x03, 0xe5, 0x08, 0x09, 0x07, 0xe5,
-0x02, 0x04, 0x01, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x12, 0xe5, 0x12, 0xe5, 0x37, 0x01, 0xe5,
-0x08, 0x06, 0x01, 0xe6, 0x17, 0x01, 0x17, 0x01,
-0x07, 0x01, 0x09, 0x07, 0x09, 0x01, 0x07, 0x01,
-0x10, 0xe5, 0x11, 0x04, 0x38, 0x02, 0x09, 0x07,
-0x01, 0x03, 0x14, 0xe5, 0x01, 0x13, 0x01, 0x01,
-0x01, 0x03, 0x01, 0x01, 0x01, 0x04, 0xe5, 0x02,
-0x03, 0xe6, 0x02, 0x04, 0x01, 0xe5, 0xe5, 0x02,
-0xe5, 0xe6, 0xe5, 0x03, 0xe6, 0x06, 0xe6, 0x08,
-0x08, 0xe5, 0x03, 0x05, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe5, 0x06, 0xe5, 0xe6, 0x0c, 0x01, 0x05, 0x01,
-0x01, 0x05, 0x01, 0x01, 0x05, 0x03, 0x03, 0xe6,
-0xe5, 0x0f, 0x09, 0x0e, 0x15, 0x39, 0x01, 0x11,
-0x01, 0x18, 0xe5, 0xe6, 0x0c, 0x01, 0x06, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0x02, 0x06, 0x02,
-0x06, 0x09, 0x09, 0x07, 0x01, 0x09, 0x0e, 0x39,
-0x01, 0x11, 0x01, 0x1b, 0xe5, 0x0c, 0x01, 0x03,
-0x01, 0x07, 0x01, 0x08, 0xe5, 0x02, 0x05, 0x01,
-0x06, 0xe6, 0x05, 0x01, 0xe5, 0x08, 0x09, 0x04,
-0x03, 0xe5, 0x0a, 0x02, 0x3b, 0x15, 0x18, 0x01,
-0x04, 0x08, 0x01, 0x02, 0xe6, 0x06, 0xe6, 0x06,
-0xe6, 0x03, 0x03, 0x05, 0x02, 0xe6, 0x07, 0xe5,
-0x08, 0x05, 0x03, 0x08, 0xe5, 0x0c, 0x02, 0x3b,
-0x29, 0x03, 0x02, 0xe5, 0x02, 0x1e, 0xe5, 0x06,
-0x01, 0x2e, 0x02, 0x4e, 0x01, 0xe5, 0x05, 0x03,
-0x1f, 0xe5, 0x02, 0x03, 0x05, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x02,
-0xe5, 0x02, 0xe6, 0x06, 0x01, 0x07, 0x01, 0x0e,
-0x08, 0x12, 0x09, 0x02, 0x26, 0x01, 0x0b, 0xe5,
-0x01, 0x01, 0x72, 0x07, 0x03, 0xe5, 0x14, 0x05,
-0x02, 0x09, 0x0a, 0x13, 0x47, 0x1b, 0x0a, 0x25,
-0x01, 0xe5, 0xe5, 0xe5, 0x0d, 0xe5, 0x03, 0x03,
-0x05, 0x09, 0x05, 0x1c, 0xe5, 0x21, 0x27, 0x05,
-0x3f, 0xe5, 0xe6, 0x0b, 0x01, 0x07, 0xe5, 0x09,
-0x1b, 0x02, 0x06, 0x02, 0x03, 0x01, 0x05, 0xe5,
-0x04, 0x0e, 0x33, 0x13, 0x02, 0x09, 0xe6, 0x16,
-0xe5, 0x02, 0x0a, 0x02, 0x02, 0x01, 0x08, 0x25,
-0x09, 0x0c, 0x0b, 0xe5, 0x0a, 0x31, 0x18, 0x21,
-0xe9, 0x07, 0x17, 0x02, 0x16, 0x05, 0x09, 0x02,
-0x07, 0x06, 0x1a, 0x32, 0x09, 0x06, 0x06, 0x0e,
-0x0a, 0x02, 0x01, 0x04, 0x07, 0x2b, 0x06, 0xe5,
-0x03, 0x03, 0x13, 0x02, 0x10, 0x3d, 0x01, 0x30,
-0x39, 0x05, 0x09, 0x02, 0x0b, 0x06, 0x11, 0xe5,
-0x4a, 0x15, 0x09, 0x02, 0xe5, 0x07, 0x01, 0x05,
-0x02, 0x10, 0x19, 0x07, 0x01, 0x01, 0x07, 0x09,
-0x0a, 0xe5, 0x03, 0x03, 0x3d, 0xe6, 0x14, 0xe5,
-0x15, 0x01, 0xe5, 0x13, 0x13, 0x08, 0x1a, 0x0c,
-0x0f, 0x07, 0x40, 0x2c, 0xe8, 0x0d, 0x22, 0x09,
-0x02, 0x01, 0x1b, 0x01, 0x08, 0x03, 0x0a, 0x39,
-0x09, 0xe5, 0x1f, 0x03, 0xe5, 0x0e, 0x0a, 0x0c,
-0x2a, 0x0c, 0x03, 0x0e, 0x3e, 0x06, 0x02, 0x22,
-0x02, 0xe5, 0x0c, 0x01, 0x4f, 0x01, 0x4d, 0x01,
-0x07, 0xe5, 0x1c, 0x08, 0xe5, 0xe5, 0x0a, 0x10,
-0xe5, 0x0d, 0x03, 0x01, 0x03, 0xe5, 0x07, 0xe5,
-0x01, 0xe5, 0xe5, 0x01, 0xe6, 0x1a, 0xe6, 0xe5,
-0xe5, 0x44, 0x01, 0x04, 0x1e, 0x01, 0x03, 0x01,
-0x02, 0x08, 0x22, 0x01, 0xe5, 0x0a, 0xe6, 0xe5,
-0x04, 0xe6, 0x17, 0x01, 0x03, 0x03, 0x01, 0x45,
-0xe5, 0x20, 0x02, 0x02, 0xe7, 0x03, 0x08, 0x1d,
-0x01, 0x0b, 0x02, 0x01, 0x06, 0xe5, 0x01, 0x01,
-0x01, 0x0c, 0xe5, 0x3b, 0x01, 0xe5, 0xe5, 0x03,
-0x01, 0x07, 0xe5, 0xe5, 0xe5, 0x09, 0xe5, 0x1a,
-0x07, 0xe5, 0x01, 0x0a, 0x1a, 0xe5, 0xe5, 0xe5,
-0x10, 0x01, 0x09, 0x0e, 0x3d, 0xe5, 0xe5, 0xe5,
-0x08, 0x04, 0x02, 0x0d, 0x15, 0xe5, 0x05, 0x02,
-0xe5, 0xe7, 0x08, 0x01, 0xe5, 0x30, 0x01, 0x07,
-0x01, 0x04, 0x01, 0x08, 0x03, 0xe5, 0x46, 0x02,
-0x01, 0xe6, 0xe6, 0x04, 0x24, 0x01, 0x02, 0x02,
-0x0a, 0x03, 0x1d, 0x0f, 0x01, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x04, 0x13, 0x38, 0x0c, 0x01, 0xe5,
-0x05, 0xe6, 0x21, 0x02, 0xe9, 0x0b, 0x05, 0xe5,
-0x15, 0x01, 0x04, 0x01, 0x0a, 0x01, 0x02, 0x04,
-0x01, 0x05, 0x08, 0x01, 0x08, 0x35, 0x01, 0x11,
-0x01, 0x2b, 0xe7, 0xe5, 0x0c, 0x06, 0x16, 0x01,
-0x11, 0x01, 0x07, 0x01, 0x4f, 0x01, 0x09, 0xe5,
-0x05, 0x02, 0x0b, 0x1f, 0xe5, 0x01, 0xe5, 0x13,
-0x39, 0x13, 0x02, 0x41, 0x09, 0x02, 0x02, 0x05,
-0x18, 0xe5, 0x03, 0x02, 0x01, 0x50, 0x01, 0x11,
-0x47, 0x09, 0x21, 0x05, 0x03, 0xe5, 0x0d, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x02, 0x06, 0x05, 0x03,
-0x06, 0x02, 0x03, 0x05, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0x09, 0xe5, 0x03, 0x03, 0xe5, 0x01, 0xe5,
-0xe5, 0x01, 0x09, 0x09, 0x0b, 0x01, 0x01, 0x01,
-0xe5, 0x58, 0x02, 0x47, 0x09, 0x0f, 0x1f, 0xe5,
-0x01, 0x5b, 0x45, 0x0b, 0x30, 0xe5, 0x01, 0x0f,
-0x07, 0x01, 0x25, 0x01, 0x06, 0xe5, 0xe5, 0x13,
-0x05, 0xe5, 0xe5, 0x30, 0x01, 0x07, 0x02, 0x09,
-0xe5, 0x01, 0x02, 0x01, 0x02, 0x22, 0xe5, 0x0e,
-0xe5, 0x05, 0x01, 0xe5, 0x22, 0xe5, 0xe6, 0x05,
-0x01, 0xe5, 0x19, 0x01, 0xe5, 0x2f, 0x01, 0xe5,
-0x07, 0x0e, 0x02, 0x01, 0x01, 0x21, 0x01, 0xe5,
-0x0e, 0x07, 0x01, 0x17, 0x0d, 0x01, 0x25, 0x01,
-0x31, 0x01, 0x14, 0x06, 0x01, 0x03, 0x1d, 0x03,
-0xe6, 0x0d, 0x03, 0xe8, 0xe5, 0x02, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe5, 0x05, 0x01, 0xe5, 0x07, 0xe5,
-0x01, 0x05, 0xe6, 0xe5, 0x02, 0xe6, 0x09, 0xe5,
-0x07, 0xe5, 0x08, 0xe5, 0x06, 0xe7, 0xe5, 0x02,
-0x01, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0xe5, 0x04,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x02, 0x0f,
-0xe6, 0x01, 0x09, 0x13, 0x0c, 0x09, 0x01, 0xe5,
-0x03, 0x04, 0xe5, 0x02, 0x13, 0x29, 0xe5, 0x05,
-0x01, 0x15, 0x01, 0x23, 0x02, 0x0f, 0x03, 0x02,
-0x09, 0x07, 0x01, 0x09, 0x0a, 0x09, 0x01, 0xe5,
-0x1f, 0x02, 0x09, 0x01, 0x09, 0x34, 0x22, 0xe8,
-0x0e, 0x05, 0x07, 0x01, 0xe5, 0x05, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x09, 0x09, 0x01, 0x03, 0x01,
-0x09, 0x12, 0xe5, 0x01, 0x11, 0x13, 0xe5, 0x08,
-0x0b, 0x09, 0x01, 0x23, 0x01, 0xe5, 0x0b, 0x02,
-0xe5, 0x01, 0xe7, 0x05, 0xe5, 0x04, 0x02, 0xe5,
-0x07, 0x0d, 0x09, 0x01, 0xe5, 0x01, 0x06, 0x02,
-0x10, 0x02, 0x08, 0x03, 0x09, 0x12, 0xe5, 0x07,
-0x19, 0x02, 0x1f, 0x03, 0xe5, 0x0b, 0xe5, 0xe5,
-0x27, 0x05, 0x06, 0x02, 0x13, 0x02, 0x44, 0x01,
-0xe5, 0x06, 0x01, 0x04, 0x05, 0x21, 0x01, 0xe5,
-0x10, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x01, 0x05, 0x01, 0x03, 0x03, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x04, 0x01, 0x01, 0x05, 0xe6,
-0x06, 0x01, 0x01, 0x02, 0x04, 0x01, 0xe6, 0x04,
-0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0x07,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0xe5, 0x03, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x0a, 0xe5, 0x01, 0x0e, 0x11, 0x20, 0x08, 0x04,
-0x0d, 0xe5, 0x38, 0x09, 0x04, 0xe5, 0x0b, 0x05,
-0xe5, 0x20, 0x02, 0xe6, 0x0a, 0x1c, 0x04, 0x0e,
-0x05, 0x04, 0x27, 0x01, 0x11, 0x14, 0x05, 0x0d,
-0x0a, 0x01, 0x07, 0x1a, 0x01, 0xe7, 0x01, 0x19,
-0x23, 0x02, 0x0e, 0x09, 0x09, 0x09, 0xe5, 0x09,
-0x09, 0x09, 0x09, 0x0a, 0x01, 0x01, 0x11, 0x22,
-0x01, 0x01, 0x0a, 0x0c, 0xe6, 0x1f, 0x09, 0x06,
-0x04, 0xe5, 0x0c, 0x07, 0xe6, 0xe5, 0x2e, 0x02,
-0x06, 0x02, 0x06, 0xe7, 0x05, 0x01, 0x0d, 0x15,
-0x01, 0xe5, 0x07, 0x0e, 0x21, 0x10, 0x12, 0x09,
-0x09, 0x2b, 0x0a, 0x06, 0x0b, 0x21, 0x01, 0x01,
-0xe5, 0x08, 0x09, 0x09, 0x09, 0x1d, 0x0e, 0xe5,
-0x0c, 0x09, 0xe5, 0x01, 0x06, 0x23, 0xe5, 0x03,
-0xe5, 0x03, 0x08, 0x04, 0x02, 0x04, 0xe5, 0x08,
-0x13, 0xe7, 0xe5, 0x08, 0x0c, 0x03, 0x13, 0x0b,
-0x07, 0x09, 0xe5, 0x09, 0x07, 0x10, 0x24, 0x04,
-0x04, 0x04, 0x0e, 0x04, 0x01, 0x0a, 0x16, 0x01,
-0xe7, 0x3d, 0x0e, 0xe6, 0x06, 0x15, 0x03, 0xe5,
-0x29, 0x09, 0x0a, 0x05, 0x05, 0x13, 0x01, 0x03,
-0x09, 0x06, 0x01, 0x0a, 0x0c, 0x08, 0xe5, 0x07,
-0xe5, 0x1e, 0x0c, 0x0f, 0x29, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x05, 0x20, 0x04, 0x02, 0xe6, 0x02,
-0x1a, 0x09, 0x09, 0x15, 0x0b, 0x03, 0x0b, 0x0c,
-0x29, 0x01, 0x07, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x24, 0x06, 0x02, 0x35, 0x01, 0x1a, 0xe5,
-0xe5, 0x04, 0x1d, 0x09, 0x09, 0x0b, 0x03, 0x02,
-0xe5, 0x06, 0x01, 0x09, 0x05, 0x1e, 0x06, 0xe6,
-0x19, 0x1d, 0x0d, 0x04, 0xe5, 0x02, 0x03, 0xe5,
-0x16, 0x2d, 0xe5, 0x08, 0x10, 0x02, 0xe5, 0x22,
-0xe6, 0x53, 0x18, 0x2f, 0x09, 0x11, 0x01, 0x1e,
-0x03, 0xe5, 0x01, 0x01, 0x26, 0xe5, 0x03, 0xe5,
-0x01, 0xe5, 0x03, 0x03, 0x01, 0x0a, 0x02, 0x09,
-0xe5, 0x0e, 0x37, 0xe5, 0x03, 0x09, 0x06, 0x01,
-0x04, 0xe5, 0x19, 0x02, 0x03, 0xe7, 0xe5, 0xe5,
-0x22, 0x01, 0x07, 0xe5, 0xe5, 0x05, 0x01, 0xe7,
-0x06, 0x06, 0x01, 0xe5, 0x12, 0x33, 0x03, 0xe5,
-0x04, 0x08, 0xe6, 0x03, 0x01, 0x02, 0x01, 0x1d,
-0x02, 0x01, 0xe6, 0x03, 0x0f, 0x01, 0xe5, 0xe5,
-0x14, 0x0c, 0xe5, 0xe5, 0x08, 0x0d, 0x0f, 0x30,
-0x01, 0x02, 0x18, 0x01, 0xe5, 0x01, 0x24, 0xe5,
-0x01, 0x14, 0x01, 0x1b, 0x06, 0x02, 0x01, 0x07,
-0x05, 0xe5, 0x01, 0x13, 0x44, 0x02, 0x06, 0x04,
-0xe5, 0x1a, 0x02, 0x01, 0xe5, 0xe5, 0xe6, 0x07,
-0x02, 0x2b, 0x02, 0x01, 0xe5, 0x01, 0x07, 0x10,
-0x01, 0x0a, 0x40, 0x01, 0x02, 0x01, 0x01, 0x02,
-0x02, 0xe6, 0xe5, 0x03, 0x01, 0x1a, 0xe6, 0xe6,
-0xe5, 0x02, 0x15, 0x19, 0x06, 0x01, 0xe5, 0xe5,
-0xe5, 0x03, 0xe5, 0x02, 0x05, 0x03, 0x04, 0x0a,
-0x03, 0x2f, 0x02, 0xe5, 0xe5, 0x01, 0x04, 0xe5,
-0x02, 0xe5, 0xe5, 0x01, 0xe5, 0xe6, 0x01, 0x03,
-0x02, 0x18, 0x01, 0x01, 0xe7, 0x16, 0x01, 0x04,
-0x13, 0x09, 0x01, 0xe5, 0x06, 0x01, 0x06, 0x02,
-0x07, 0x0b, 0x36, 0x0e, 0x01, 0x01, 0x0c, 0x1e,
-0xe6, 0xe6, 0x16, 0x01, 0x03, 0xe6, 0x10, 0xe6,
-0xe5, 0x01, 0x06, 0x01, 0x07, 0x05, 0xe6, 0xe5,
-0x12, 0x40, 0x06, 0x01, 0x0c, 0x1e, 0xe6, 0x01,
-0xe5, 0x36, 0x0c, 0x02, 0x57, 0xe5, 0x01, 0x05,
-0xe5, 0x01, 0x05, 0xe5, 0x07, 0x1f, 0x02, 0xe5,
-0x3b, 0x09, 0xe5, 0x55, 0xe6, 0x0a, 0xe5, 0x05,
-0x03, 0x04, 0x02, 0x20, 0xe6, 0x0d, 0x09, 0x09,
-0x09, 0x06, 0x02, 0xe5, 0x01, 0x05, 0x02, 0x06,
-0x09, 0x02, 0x06, 0x09, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0xe6, 0x01, 0x01, 0x02, 0x06, 0x02, 0x09,
-0x05, 0x03, 0x09, 0x0d, 0x03, 0xe5, 0x01, 0x2e,
-0x0c, 0x5b, 0x05, 0x0a, 0x02, 0x0f, 0x1c, 0x03,
-0x01, 0xe5, 0x3c, 0x59, 0x14, 0x32, 0xe7, 0x16,
-0x01, 0x1d, 0xe6, 0x18, 0x01, 0x42, 0x04, 0x02,
-0x10, 0x04, 0x07, 0x23, 0x17, 0x01, 0xe5, 0x18,
-0xe5, 0xe5, 0x05, 0x03, 0x0f, 0xe5, 0xe6, 0x40,
-0x04, 0xe6, 0x08, 0x05, 0x02, 0xe5, 0x01, 0x06,
-0x01, 0x1e, 0xe5, 0x01, 0x17, 0x01, 0x1d, 0x1b,
-0x01, 0x47, 0x06, 0xe5, 0x04, 0x09, 0xe5, 0x01,
-0x05, 0x16, 0x07, 0x03, 0x13, 0x01, 0xe6, 0xe5,
-0x02, 0xe5, 0xe5, 0x05, 0x02, 0x06, 0xe5, 0xe5,
-0x01, 0xe5, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x06, 0x02, 0xe5, 0x15,
-0x03, 0xe5, 0x01, 0x0f, 0xe5, 0x06, 0x07, 0x15,
-0xe5, 0x43, 0x1d, 0x24, 0x03, 0x15, 0xe5, 0x05,
-0x02, 0x09, 0x06, 0x02, 0xe5, 0x0a, 0x13, 0xe5,
-0x43, 0x01, 0x41, 0x02, 0x13, 0x01, 0x09, 0xe5,
-0x05, 0x01, 0xe5, 0x06, 0xe6, 0x01, 0x1d, 0x1c,
-0x28, 0x01, 0x41, 0x02, 0x0c, 0x06, 0xe5, 0x04,
-0x02, 0xe5, 0x07, 0xe5, 0x04, 0x02, 0x10, 0x12,
-0xe5, 0x43, 0x01, 0x02, 0x09, 0x04, 0x04, 0x04,
-0x04, 0x1f, 0xe5, 0xe7, 0x30, 0x05, 0x03, 0x02,
-0x09, 0x04, 0x02, 0x01, 0xe5, 0xe5, 0xe5, 0x0d,
-0xe5, 0xe5, 0x2f, 0x02, 0xe5, 0x04, 0x01, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x1f, 0xe6,
-0x01, 0x11, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0xe5,
-0x03, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x01,
-0x05, 0x01, 0xe5, 0x02, 0x02, 0x01, 0x03, 0x03,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x04, 0x04, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x03, 0x03,
-0xe6, 0x03, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02,
-0xe5, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0d,
-0xe5, 0x34, 0x0a, 0x02, 0x04, 0x0e, 0x10, 0x27,
-0x09, 0xe5, 0xe7, 0x03, 0x02, 0xe5, 0x04, 0x06,
-0x07, 0x23, 0xe6, 0x03, 0x10, 0x12, 0x14, 0x06,
-0x10, 0x03, 0x0b, 0x07, 0x2d, 0xe5, 0x0d, 0x08,
-0x02, 0x05, 0x1e, 0xe6, 0xe6, 0x08, 0x0b, 0x06,
-0x02, 0x05, 0x01, 0x08, 0x13, 0x07, 0x0c, 0x09,
-0x0d, 0x32, 0xe5, 0xe5, 0x05, 0x0f, 0x1f, 0x01,
-0x01, 0xe5, 0x03, 0x0b, 0x05, 0x01, 0x01, 0x04,
-0x16, 0x04, 0x02, 0x01, 0x0e, 0x02, 0x01, 0x18,
-0x2c, 0x06, 0x02, 0x0b, 0xe6, 0x01, 0x01, 0xe7,
-0x0f, 0x12, 0x02, 0x02, 0x02, 0x11, 0x02, 0x0e,
-0x07, 0x03, 0x04, 0x03, 0x03, 0x01, 0xe5, 0x0d,
-0xe5, 0x04, 0x06, 0x0e, 0x2c, 0x09, 0x02, 0x04,
-0x09, 0x23, 0xe5, 0xe7, 0x07, 0xe5, 0x14, 0x06,
-0xe5, 0xe5, 0x0b, 0x03, 0x03, 0x02, 0x09, 0x0c,
-0x09, 0x05, 0x07, 0x04, 0x22, 0x0c, 0xe5, 0x07,
-0xe6, 0x07, 0x03, 0x13, 0x0c, 0x01, 0x04, 0xe5,
-0x0d, 0x07, 0x18, 0xe6, 0x03, 0xe5, 0x04, 0x1c,
-0x06, 0x09, 0x18, 0x1d, 0x0b, 0x04, 0xe5, 0x05,
-0x1e, 0x01, 0x1e, 0x09, 0x0a, 0xe5, 0x17, 0x16,
-0x02, 0x02, 0x06, 0x2f, 0x16, 0x02, 0x16, 0x01,
-0x03, 0x07, 0xe6, 0x12, 0x08, 0x03, 0x09, 0x18,
-0x0b, 0x12, 0x0e, 0x02, 0x38, 0x01, 0xe5, 0x07,
-0xe5, 0xe5, 0x1a, 0x07, 0x01, 0x47, 0x29, 0x02,
-0x2a, 0x04, 0x06, 0xe5, 0x01, 0xe5, 0x01, 0x05,
-0xe5, 0x1c, 0x05, 0x03, 0x09, 0x07, 0x01, 0x09,
-0x08, 0xe6, 0x05, 0x02, 0x04, 0x06, 0x02, 0x0a,
-0x01, 0x1f, 0x06, 0x31, 0x09, 0x03, 0xe5, 0x13,
-0x12, 0xe6, 0xe5, 0x07, 0x2d, 0xe5, 0x0a, 0xe5,
-0x03, 0x01, 0x07, 0x01, 0x02, 0x06, 0x14, 0xe5,
-0x27, 0x07, 0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0x06,
-0x01, 0x01, 0x1f, 0xe5, 0x02, 0x37, 0x07, 0x05,
-0x19, 0x14, 0x05, 0x24, 0x07, 0x07, 0x0d, 0x20,
-0xe8, 0x35, 0x01, 0x09, 0x10, 0x02, 0x07, 0x6f,
-0xe5, 0xe5, 0x0c, 0x01, 0xe5, 0x01, 0x01, 0xe5,
-0x03, 0xe5, 0x29, 0x1d, 0x89, 0x03, 0xe6, 0x25,
-0xe5, 0x0d, 0xe5, 0x01, 0x01, 0xe5, 0x01, 0xe5,
-0x18, 0x09, 0x36, 0x1a, 0x05, 0xe5, 0x1a, 0xe6,
-0xe7, 0x01, 0x01, 0x05, 0x01, 0x14, 0xe5, 0x15,
-0x02, 0x01, 0xe7, 0x11, 0xe5, 0x06, 0x09, 0xe6,
-0x37, 0xe5, 0xe5, 0x03, 0x04, 0xe6, 0x0d, 0x01,
-0x16, 0x01, 0x03, 0x02, 0x04, 0x04, 0xe5, 0x01,
-0x01, 0x03, 0xe5, 0x01, 0x01, 0x09, 0x07, 0x01,
-0x0e, 0x01, 0xe5, 0xe5, 0xe5, 0x07, 0x02, 0xe5,
-0x01, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5, 0x36,
-0xe5, 0xe5, 0x05, 0xe5, 0x03, 0x01, 0x24, 0x04,
-0x01, 0xe6, 0x01, 0x07, 0x02, 0x01, 0x04, 0x02,
-0x01, 0x07, 0x06, 0x02, 0x01, 0x13, 0x11, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x38, 0x02, 0x06, 0x02,
-0x01, 0x04, 0xe5, 0xe5, 0x20, 0x05, 0xe5, 0x0a,
-0x09, 0x0d, 0x05, 0x0b, 0x01, 0x07, 0x05, 0x02,
-0x04, 0x07, 0x07, 0x02, 0x06, 0x03, 0xe5, 0x35,
-0x01, 0x02, 0x04, 0xe6, 0xe5, 0xe5, 0x07, 0x02,
-0x02, 0x1b, 0x01, 0x01, 0x01, 0x03, 0x0b, 0x09,
-0x05, 0x03, 0x04, 0x04, 0x05, 0x01, 0x01, 0x05,
-0x01, 0x01, 0x11, 0x01, 0x05, 0x02, 0x06, 0x04,
-0x38, 0x02, 0x02, 0x01, 0xe6, 0xe5, 0xe5, 0x03,
-0x04, 0x02, 0x01, 0x18, 0x02, 0xe8, 0x0c, 0x01,
-0x07, 0x01, 0x03, 0xe5, 0x03, 0x03, 0xe6, 0xe5,
-0xe5, 0x06, 0x01, 0x04, 0x01, 0xe5, 0x05, 0x01,
-0x05, 0x01, 0x01, 0xe5, 0xe5, 0x06, 0x01, 0x07,
-0x06, 0x1f, 0x01, 0x10, 0xe5, 0x01, 0x09, 0x01,
-0x04, 0xe6, 0x1e, 0x04, 0x01, 0xe7, 0x01, 0x0a,
-0x01, 0x07, 0x01, 0x04, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0xe5, 0x06, 0x01, 0x03, 0xe5, 0x01, 0x01,
-0x03, 0xe5, 0x08, 0x01, 0xe5, 0xe5, 0x06, 0x01,
-0xe5, 0x05, 0x06, 0xe5, 0x1c, 0xe5, 0x12, 0x01,
-0xe5, 0x01, 0x06, 0x01, 0x04, 0x01, 0x03, 0x23,
-0xe6, 0x01, 0x02, 0x03, 0x3b, 0x02, 0x05, 0xe6,
-0x0e, 0x02, 0xe5, 0x06, 0x02, 0x38, 0x02, 0xe5,
-0x04, 0x02, 0x02, 0x26, 0x01, 0xe5, 0x09, 0x01,
-0x39, 0xe5, 0x07, 0xe5, 0x19, 0x3b, 0x0a, 0x0c,
-0x1e, 0xe5, 0xe6, 0x07, 0x05, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x06, 0x02, 0x09, 0x02, 0x01, 0x01,
-0x02, 0x02, 0x03, 0x02, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0x04, 0x01, 0x02, 0xe5, 0x07, 0x09, 0x03,
-0x05, 0x09, 0x0d, 0xe7, 0xe5, 0x01, 0x3b, 0x06,
-0x08, 0x03, 0x10, 0x40, 0x09, 0x04, 0xe5, 0x25,
-0x03, 0xe7, 0x3a, 0x13, 0x51, 0x09, 0x32, 0x03,
-0x17, 0x01, 0x04, 0x13, 0x04, 0x06, 0x0a, 0x01,
-0x09, 0x07, 0x01, 0xe6, 0x04, 0x01, 0x0b, 0x0e,
-0x22, 0xe6, 0x07, 0xe5, 0x04, 0x01, 0x01, 0x02,
-0x1b, 0x01, 0x03, 0x17, 0x01, 0xe5, 0x1b, 0xe5,
-0x08, 0x03, 0x02, 0x01, 0x01, 0x08, 0x06, 0x01,
-0x07, 0x01, 0xe6, 0x08, 0xe5, 0x2c, 0xe5, 0x07,
-0x04, 0x01, 0x05, 0x24, 0x01, 0x14, 0x02, 0x01,
-0x1a, 0x02, 0x04, 0x08, 0x03, 0x01, 0x09, 0x09,
-0x07, 0x01, 0x03, 0x02, 0x04, 0x31, 0x0a, 0x08,
-0xe5, 0x20, 0x02, 0xe6, 0x12, 0xe7, 0xe5, 0x02,
-0x01, 0xe5, 0x07, 0xe5, 0x05, 0xe7, 0x01, 0x03,
-0xe7, 0x01, 0x05, 0xe6, 0xe5, 0x04, 0xe5, 0x07,
-0xe6, 0x01, 0x03, 0xe7, 0xe5, 0x04, 0xe5, 0x03,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe6, 0x01, 0x04, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0xe5,
-0x01, 0x1a, 0xe5, 0xe5, 0x05, 0xe5, 0x0a, 0x05,
-0xe6, 0x01, 0x05, 0xe5, 0x04, 0x01, 0x13, 0x07,
-0x0d, 0xe5, 0x12, 0xe5, 0x1a, 0x36, 0x03, 0x14,
-0x01, 0x1b, 0x01, 0x02, 0x06, 0x0a, 0x01, 0x09,
-0x09, 0x06, 0x02, 0x0b, 0xe5, 0x2d, 0x38, 0x02,
-0xe6, 0x1d, 0x13, 0x03, 0x03, 0x01, 0x0d, 0x13,
-0x04, 0xe5, 0xe5, 0x09, 0x02, 0x31, 0x07, 0x2e,
-0x01, 0x01, 0x10, 0x03, 0x01, 0x03, 0x02, 0x01,
-0x04, 0x09, 0x03, 0xe6, 0x01, 0xe5, 0x03, 0xe5,
-0x02, 0x0b, 0x06, 0x0d, 0xe7, 0x01, 0x02, 0x08,
-0xe5, 0x12, 0x26, 0x02, 0x11, 0x1b, 0xe5, 0x3d,
-0x03, 0x09, 0x03, 0x01, 0x07, 0x01, 0x01, 0xe5,
-0x08, 0x3a, 0x09, 0x09, 0xe5, 0xe5, 0x1f, 0xe5,
-0x01, 0xe5, 0x10, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x02, 0x04, 0x01, 0x03, 0x02, 0xe5, 0xe5, 0xe5,
-0xe5, 0x02, 0x01, 0xe5, 0x05, 0x01, 0x04, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x02,
-0x09, 0xe6, 0x07, 0x02, 0x09, 0x13, 0x0d, 0x08,
-0x03, 0x08, 0x19, 0x06, 0x37, 0x0f, 0x27, 0x01,
-0x01, 0xe5, 0x0a, 0x09, 0x05, 0x07, 0x19, 0x05,
-0x02, 0x0a, 0x03, 0xe5, 0x12, 0x52, 0x1e, 0x04,
-0x05, 0x2a, 0x05, 0x03, 0x28, 0x09, 0x03, 0x43,
-0x28, 0x01, 0x01, 0xe5, 0x06, 0x0e, 0xe6, 0x0d,
-0xe5, 0x14, 0x09, 0x01, 0x01, 0x02, 0x02, 0x01,
-0x07, 0x0b, 0x38, 0x02, 0xe7, 0x05, 0x01, 0x07,
-0x24, 0x03, 0x18, 0x06, 0x1d, 0x03, 0x05, 0x04,
-0x02, 0x05, 0x0a, 0x06, 0x03, 0x01, 0x03, 0x07,
-0x2c, 0x0a, 0x04, 0x04, 0x24, 0x01, 0xe5, 0x0f,
-0x01, 0x09, 0x1d, 0xe5, 0x03, 0x03, 0xe5, 0x01,
-0xe6, 0x06, 0x07, 0x03, 0x11, 0xe5, 0x0e, 0x11,
-0x16, 0x03, 0x19, 0x08, 0x0b, 0x01, 0xe6, 0x1e,
-0x06, 0xe5, 0x07, 0x07, 0x06, 0xe5, 0xe5, 0x04,
-0xe5, 0x0d, 0x02, 0x02, 0x07, 0x0a, 0x4a, 0x19,
-0x09, 0x01, 0x26, 0x18, 0x03, 0x07, 0x02, 0x09,
-0x18, 0x37, 0x31, 0x02, 0xe5, 0x01, 0x08, 0x16,
-0x09, 0x15, 0xe6, 0x03, 0x01, 0x06, 0x02, 0x18,
-0x05, 0xe5, 0x3a, 0xe6, 0x0b, 0x22, 0x01, 0x01,
-0x1a, 0x1e, 0x06, 0x01, 0x0b, 0x06, 0x0a, 0x0e,
-0x38, 0x04, 0x01, 0x20, 0xe5, 0x0c, 0xe5, 0x3d,
-0x03, 0x02, 0x05, 0x59, 0x01, 0xe5, 0x2f, 0x04,
-0x02, 0xe5, 0xe5, 0x07, 0x1b, 0x09, 0x09, 0x0f,
-0xe6, 0x17, 0x4e, 0x28, 0x01, 0xe5, 0xe5, 0xe5,
-0x02, 0x18, 0x09, 0x1b, 0x06, 0x02, 0xe5, 0x08,
-0x1d, 0x3b, 0x2a, 0x03, 0x01, 0x01, 0x3b, 0x04,
-0x04, 0x02, 0x55, 0x01, 0x0f, 0x27, 0x01, 0xe5,
-0xe6, 0xe5, 0x3c, 0xe5, 0x07, 0xe6, 0x15, 0x3f,
-0x01, 0x0a, 0xe5, 0x27, 0x01, 0x02, 0x01, 0xe6,
-0x03, 0x37, 0xe5, 0xe5, 0xe5, 0x06, 0x01, 0x56,
-0xe5, 0x03, 0x03, 0x01, 0xe5, 0x28, 0x04, 0xe9,
-0xe5, 0x37, 0xe5, 0x01, 0x01, 0x03, 0xe5, 0x01,
-0x01, 0x56, 0x04, 0xe5, 0x02, 0x04, 0x22, 0xe5,
-0x04, 0x02, 0xe6, 0xe6, 0x3d, 0x01, 0x02, 0x01,
-0x01, 0x02, 0x11, 0x01, 0x43, 0x06, 0x02, 0xe5,
-0x01, 0x02, 0x01, 0x01, 0x24, 0x02, 0xe8, 0x02,
-0x39, 0x04, 0xe5, 0x01, 0x02, 0x01, 0x0f, 0x01,
-0x01, 0x48, 0xe5, 0xe7, 0x03, 0x03, 0x22, 0x03,
-0x02, 0x05, 0x39, 0x01, 0x02, 0x04, 0x01, 0x04,
-0x01, 0x0a, 0x01, 0x4f, 0x04, 0x02, 0x25, 0xe7,
-0xe6, 0x26, 0x01, 0x14, 0x09, 0x01, 0x04, 0x01,
-0x0a, 0x01, 0x47, 0x09, 0x2c, 0xe8, 0x04, 0x03,
-0x3a, 0xe5, 0x01, 0x06, 0x02, 0x57, 0xe5, 0x07,
-0xe6, 0x25, 0xe5, 0xe7, 0x09, 0x01, 0xa1, 0x2f,
-0x01, 0x01, 0xe5, 0x07, 0x05, 0x09, 0x09, 0x09,
-0x09, 0x06, 0x02, 0x04, 0x01, 0x02, 0x02, 0x06,
-0x09, 0x02, 0x06, 0x0b, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x06, 0x02, 0x09, 0x09, 0x09, 0x06, 0x06,
-0x02, 0x01, 0x3b, 0x02, 0x05, 0x03, 0x61, 0x02,
-0xe5, 0x04, 0x1e, 0x02, 0x04, 0x03, 0x01, 0xe5,
-0x3c, 0x09, 0x65, 0x26, 0x0d, 0x3c, 0x0b, 0x66,
-0x2e, 0x01, 0xe6, 0x1d, 0x24, 0x05, 0x01, 0xe5,
-0x5b, 0x07, 0x01, 0x2a, 0x02, 0xe6, 0xaa, 0x33,
-0xe6, 0x14, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x06, 0x01, 0x01, 0x09, 0x1a, 0xe5,
-0x7e, 0x09, 0x32, 0x41, 0x07, 0x01, 0x59, 0x0b,
-0x2e, 0xe6, 0x3e, 0x32, 0x3c, 0x2e, 0xe6, 0xe5,
-0x23, 0x1c, 0x02, 0x65, 0x06, 0x02, 0x2b, 0x01,
-0xe5, 0x3d, 0x09, 0xe5, 0xe5, 0x57, 0xe5, 0xe5,
-0x09, 0x2a, 0x01, 0x01, 0x11, 0x01, 0x07, 0x01,
-0x01, 0x04, 0xe5, 0xe5, 0x06, 0x01, 0x02, 0x04,
-0x01, 0x07, 0xe6, 0x02, 0x03, 0x01, 0x02, 0x04,
-0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x02, 0x01,
-0x04, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x0a, 0x02, 0xe5,
-0x3d, 0x01, 0x24, 0x3e, 0x39, 0x01, 0x01, 0xe5,
-0x09, 0x0a, 0x13, 0x1c, 0xe5, 0x12, 0x03, 0x05,
-0x4d, 0x28, 0xe5, 0x01, 0xe5, 0x2f, 0x09, 0x09,
-0x2c, 0x6d, 0x02, 0xe5, 0x3a, 0x02, 0xe5, 0x09,
-0x59, 0x02, 0x06, 0x01, 0x04, 0x26, 0x02, 0x01,
-0x1d, 0x09, 0x08, 0x0a, 0x01, 0x08, 0xe5, 0xe5,
-0x16, 0x0f, 0x36, 0x08, 0x2d, 0x02, 0xe5, 0x3e,
-0xe5, 0x0c, 0x06, 0x16, 0x03, 0x2c, 0x0b, 0x04,
-0xe6, 0x03, 0x1a, 0x0b, 0x01, 0xe7, 0x07, 0x09,
-0x13, 0x13, 0x03, 0xe5, 0xe5, 0x01, 0x03, 0x09,
-0x17, 0x06, 0xe5, 0x0c, 0x13, 0x49, 0x02, 0xe5,
-0x3b, 0x07, 0x09, 0x09, 0x18, 0x42, 0x2a, 0xe7,
-0x46, 0x07, 0x21, 0x47, 0xe5, 0x22, 0xe6, 0xe5,
-0x70, 0x47, 0x01, 0x23, 0xe7, 0x3e, 0x01, 0x6d,
-0x01, 0xe5, 0x05, 0x01, 0x22, 0xe5, 0xe6, 0x40,
-0xe5, 0x6d, 0x09, 0x23, 0xe7, 0x3f, 0x02, 0x01,
-0x63, 0x06, 0x02, 0x07, 0x23, 0x01, 0xe7, 0x10,
-0xe5, 0x29, 0x7d, 0x1e, 0xe6, 0xe5, 0xe5, 0x01,
-0x01, 0x0f, 0x01, 0x2a, 0x02, 0x71, 0xe5, 0x20,
-0x01, 0x02, 0xe6, 0xe5, 0x03, 0x19, 0xe5, 0xe5,
-0xe5, 0x1a, 0x6c, 0x01, 0x02, 0xe5, 0x09, 0x1b,
-0x04, 0xe8, 0x01, 0x1e, 0x01, 0x18, 0xe5, 0x02,
-0x6a, 0x02, 0x2b, 0x02, 0x01, 0x01, 0x46, 0x01,
-0x64, 0x03, 0x01, 0xe6, 0x01, 0x05, 0x1f, 0x01,
-0x01, 0x02, 0x22, 0x1d, 0x04, 0x66, 0x04, 0x26,
-0x03, 0xe5, 0xe6, 0x1f, 0x01, 0x1d, 0x05, 0x1c,
-0x01, 0x48, 0x04, 0x01, 0x01, 0x04, 0x1f, 0x01,
-0x01, 0xe5, 0x20, 0x01, 0x1b, 0x23, 0xe5, 0x4b,
-0x04, 0x01, 0x29, 0x45, 0x02, 0x6b, 0x09, 0x20,
-0xe7, 0x45, 0x6c, 0x0a, 0x1f, 0x03, 0xe5, 0x0d,
-0x09, 0x09, 0x09, 0x09, 0x06, 0x02, 0x03, 0x05,
-0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x06, 0x02, 0x06, 0x02, 0x09, 0x09, 0x0d,
-0xe6, 0xe6, 0x01, 0x3a, 0x6f, 0xe5, 0x04, 0xe5,
-0x07, 0x1c, 0x02, 0x02, 0xe5, 0xac, 0x31, 0x02,
-0x01, 0x1f, 0x01, 0x11, 0x01, 0x07, 0x01, 0x11,
-0x01, 0x07, 0x01, 0x4f, 0x0e, 0x1d, 0x01, 0x01,
-0x01, 0x21, 0x01, 0xe5, 0x0f, 0x01, 0xe5, 0x07,
-0xe5, 0x0f, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x50,
-0xe5, 0xe5, 0x06, 0x1d, 0x02, 0xe5, 0x01, 0x21,
-0x01, 0x11, 0x01, 0x06, 0xe5, 0xe5, 0x10, 0x01,
-0x07, 0x01, 0x4c, 0x02, 0x0f, 0x21, 0xe5, 0x14,
-0xe5, 0x05, 0xe8, 0xe5, 0x02, 0xe7, 0x05, 0x01,
-0xe6, 0xe5, 0x03, 0xe7, 0xe5, 0x02, 0x01, 0xe5,
-0x07, 0xe6, 0xe5, 0x02, 0x01, 0xe6, 0xe5, 0x02,
-0xe7, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06,
-0xe5, 0x01, 0x16, 0x09, 0x06, 0xe5, 0xe5, 0x08,
-0x07, 0x01, 0xe5, 0xe6, 0x04, 0x10, 0x06, 0xe5,
-0x03, 0x48, 0x09, 0x02, 0x1f, 0x03, 0xe6, 0x14,
-0xe5, 0x05, 0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x01, 0x03, 0x01, 0xe5, 0x07, 0x09, 0x08,
-0xe6, 0x76, 0x02, 0xe5, 0x14, 0x09, 0x09, 0x07,
-0x01, 0x09, 0x01, 0x01, 0xe5, 0x03, 0x09, 0x09,
-0x07, 0x01, 0x0c, 0x3c, 0x09, 0x02, 0x25, 0x1a,
-0x02, 0xe5, 0x08, 0x08, 0xe5, 0x07, 0xe5, 0x01,
-0x01, 0xe5, 0x01, 0xe5, 0x07, 0x09, 0x06, 0x02,
-0xe5, 0x4e, 0x09, 0x23, 0xde, 0x02, 0xe5, 0xe5,
-0x0e, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x05,
-0x01, 0x07, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x02,
-0x04, 0x01, 0xe5, 0xe5, 0x03, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x04, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x08,
-0x01, 0xe6, 0xe5, 0x15, 0x1c, 0x0d, 0xe5, 0x21,
-0x55, 0xe6, 0x1b, 0x04, 0x01, 0xe6, 0x0a, 0x08,
-0x29, 0x01, 0x0e, 0x0f, 0xe5, 0x01, 0x54, 0x23,
-0xe5, 0xe5, 0xe5, 0x39, 0x36, 0x48, 0x23, 0x03,
-0x05, 0x1b, 0x01, 0x0a, 0x08, 0x0a, 0x03, 0x05,
-0x06, 0x02, 0x06, 0x01, 0x59, 0x01, 0x22, 0xe8,
-0x04, 0x02, 0x18, 0x01, 0x03, 0x09, 0x03, 0x07,
-0x06, 0x02, 0x0e, 0x02, 0xe5, 0x01, 0x01, 0x11,
-0x43, 0x03, 0x02, 0x21, 0xe8, 0x12, 0x09, 0x1d,
-0x09, 0x2b, 0x0e, 0x27, 0x01, 0x1b, 0x18, 0x02,
-0x02, 0x02, 0x0a, 0x09, 0x27, 0xe5, 0x04, 0x27,
-0xe5, 0x20, 0x27, 0x13, 0x0f, 0xe6, 0x02, 0x02,
-0x35, 0x06, 0x05, 0x04, 0x02, 0x06, 0x18, 0x6c,
-0x01, 0x01, 0x3f, 0xe6, 0xe6, 0x09, 0x01, 0x1f,
-0x6c, 0xe6, 0xe5, 0x02, 0x3e, 0x01, 0x12, 0x19,
-0x41, 0xe5, 0x28, 0xe5, 0x01, 0x28, 0x18, 0x22,
-0x09, 0x6c, 0x02, 0x03, 0xe5, 0x3f, 0x07, 0x01,
-0x01, 0x8f, 0xe7, 0xe5, 0x31, 0x0c, 0x01, 0x38,
-0x63, 0x02, 0xe5, 0xe5, 0x35, 0x06, 0x02, 0xe5,
-0x14, 0xe5, 0x04, 0xe5, 0x76, 0x02, 0x05, 0x01,
-0x02, 0x3c, 0xe5, 0x06, 0xe5, 0x0c, 0xe5, 0x7f,
-0x02, 0x01, 0xe6, 0x03, 0x26, 0x01, 0x0d, 0xe5,
-0x08, 0xe5, 0xe5, 0xe5, 0x01, 0x12, 0x7c, 0x01,
-0xe6, 0x01, 0x25, 0x02, 0x01, 0x18, 0xe5, 0xe5,
-0xe5, 0x8b, 0x02, 0x01, 0x02, 0xe7, 0x08, 0x01,
-0x1c, 0x15, 0x09, 0x93, 0x02, 0xe6, 0xe5, 0x06,
-0x02, 0x22, 0x11, 0x01, 0x01, 0x02, 0xe5, 0x02,
-0x8d, 0x01, 0x01, 0xe5, 0xe5, 0x2a, 0x01, 0x0d,
-0xe5, 0x07, 0xe5, 0x01, 0x01, 0x91, 0xe7, 0xe5,
-0xe6, 0x27, 0x01, 0x0e, 0x01, 0x07, 0x02, 0x01,
-0x91, 0x01, 0xe8, 0x07, 0x02, 0x38, 0x01, 0xe5,
-0x19, 0x7b, 0xe7, 0x63, 0x01, 0x77, 0xe9, 0x0d,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x02, 0x06, 0x09,
-0x09, 0x05, 0x03, 0x0b, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06, 0xe6,
-0xe6, 0x3d, 0x94, 0x02, 0x04, 0x04, 0x01, 0x3d,
-0x96, 0x09, 0xe5, 0xe6, 0x3e, 0x01, 0x06, 0xe5,
-0x11, 0xe5, 0xe5, 0x7f, 0xe6, 0x3e, 0x01, 0xe5,
-0x05, 0x02, 0x10, 0x01, 0xe5, 0x7d, 0xe8, 0x3f,
-0x07, 0x94, 0xe6, 0xe5, 0x13, 0xe6, 0x07, 0xe5,
-0x07, 0xe5, 0x06, 0xe6, 0x05, 0xe7, 0x07, 0xe6,
-0x06, 0xe5, 0x07, 0xe5, 0x05, 0xe7, 0x07, 0xe5,
-0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x31, 0x0c,
-0x01, 0xe6, 0x18, 0x01, 0x7f, 0xe7, 0x15, 0x1d,
-0x09, 0xe5, 0xe5, 0x1a, 0x01, 0x06, 0x77, 0x03,
-0xe5, 0x12, 0x0a, 0x13, 0x07, 0xe6, 0xe5, 0xe5,
-0x20, 0xe6, 0x77, 0x03, 0x03, 0x10, 0x01, 0x06,
-0x01, 0x11, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0xe6,
-0x1f, 0x01, 0xe5, 0x71, 0x05, 0xe7, 0x48, 0xe5,
-0xe5, 0x8b, 0x04, 0xe5, 0xe6, 0x10, 0x01, 0xe6,
-0x04, 0x01, 0x07, 0x01, 0xe5, 0xe5, 0x03, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x02, 0x04, 0x01, 0x09, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x06, 0x04, 0xe5, 0xe5, 0x4e, 0x8f,
-0xe8, 0x14, 0x2c, 0x18, 0x80, 0xe5, 0x01, 0xe5,
-0x44, 0x06, 0x24, 0x6c, 0xe5, 0xe7, 0x3d, 0xe5,
-0x06, 0xe7, 0x0a, 0x19, 0x6b, 0x01, 0xe7, 0x26,
-0x1b, 0x06, 0x22, 0x03, 0x61, 0x02, 0x08, 0x01,
-0xe6, 0xe5, 0x0f, 0x23, 0xe5, 0x03, 0x0c, 0xe5,
-0x02, 0x04, 0xe5, 0x1a, 0x39, 0x10, 0x20, 0xe6,
-0xe6, 0x0f, 0x25, 0x12, 0x09, 0x01, 0x02, 0x18,
-0x63, 0x0b, 0xe5, 0x05, 0x0a, 0x13, 0x25, 0x02,
-0x22, 0x6c, 0xe5, 0x01, 0x05, 0x37, 0x14, 0x1e,
-0x6d, 0x02, 0x44, 0x2c, 0x6c, 0x03, 0x09, 0x68,
-0x62, 0x09, 0xe7, 0x01, 0x1b, 0x23, 0x05, 0xe5,
-0xe5, 0x02, 0x22, 0x6b, 0xe8, 0xe5, 0x09, 0x57,
-0x79, 0xe8, 0xe5, 0x07, 0x01, 0x03, 0xe5, 0x01,
-0xe5, 0x03, 0xe5, 0x07, 0xe5, 0xb5, 0x04, 0xe5,
-0xe5, 0x01, 0x04, 0xe5, 0x12, 0xe5, 0x2d, 0x8a,
-0x01, 0x03, 0xe7, 0x03, 0x0c, 0x09, 0x09, 0x15,
-0xe5, 0x01, 0x01, 0x04, 0xe5, 0x90, 0x04, 0x03,
-0x02, 0x39, 0x02, 0x01, 0x04, 0xe5, 0xe5, 0x05,
-0xe5, 0x88, 0x01, 0x02, 0x01, 0xe5, 0x07, 0x02,
-0x28, 0x01, 0x05, 0x11, 0x02, 0x06, 0x02, 0x80,
-0xe5, 0xe5, 0xe5, 0x01, 0x06, 0x02, 0x28, 0x01,
-0x01, 0x09, 0x09, 0x02, 0x01, 0x04, 0x02, 0x01,
-0x7e, 0x02, 0xe9, 0x33, 0x01, 0x07, 0x01, 0x09,
-0x91, 0x03, 0xe5, 0x34, 0x01, 0x07, 0x01, 0x07,
-0x09, 0x87, 0x01, 0xea, 0x03, 0xe5, 0x01, 0x02,
-0xcf, 0x01, 0x01, 0xe6, 0x04, 0x04, 0x45, 0x8c,
-0xe6, 0xe7, 0x07, 0x05, 0x09, 0x09, 0x09, 0x09,
-0x02, 0x06, 0x09, 0x03, 0xe5, 0xe5, 0x01, 0x09,
-0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0x04, 0xdb, 0x02, 0xe5,
-0xe6, 0xdd, 0xe8, 0x4a, 0x09, 0x88, 0xe5, 0x01,
-0x48, 0x03, 0x09, 0x87, 0x01, 0x01, 0xe5, 0x50,
-0x02, 0x88, 0xe5, 0x01, 0x13, 0x01, 0xe5, 0x06,
-0xe6, 0x06, 0xe6, 0x07, 0xe5, 0x07, 0xe5, 0x05,
-0xe7, 0x05, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x0a,
-0x46, 0x0e, 0x88, 0x01, 0x01, 0x20, 0x09, 0x1d,
-0x95, 0xe8, 0x12, 0x01, 0x08, 0x09, 0xe5, 0x1a,
-0x01, 0x07, 0x01, 0x03, 0x03, 0x01, 0x82, 0x01,
-0xe6, 0x12, 0x01, 0x0a, 0x06, 0x01, 0xe5, 0x19,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x84, 0xe6,
-0x4a, 0xe5, 0x07, 0xe5, 0x87, 0xe5, 0xe5, 0x10,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x09, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0a,
-0xe6, 0xe5, 0x51, 0x13, 0x78, 0x02, 0xe5, 0x0a,
-0x09, 0x36, 0x16, 0x15, 0x62, 0x01, 0xe7, 0x1d,
-0x52, 0x6b, 0xe5, 0x01, 0xe6, 0x42, 0x04, 0x01,
-0x25, 0x6e, 0x01, 0x43, 0x05, 0x02, 0x24, 0x6b,
-0x01, 0x02, 0xe5, 0x11, 0x31, 0x2b, 0x36, 0x15,
-0x12, 0x0b, 0xe6, 0xe6, 0x4c, 0x0e, 0x14, 0xe5,
-0x68, 0xe6, 0xe5, 0xe5, 0x70, 0x61, 0x0a, 0x03,
-0x4c, 0x0e, 0x15, 0x6d, 0x02, 0x01, 0x6f, 0x70,
-0x0a, 0xd6, 0xe5, 0xde, 0x02, 0x46, 0x09, 0x07,
-0x82, 0x03, 0xe9, 0xd9, 0xe5, 0x01, 0xe6, 0x01,
-0x01, 0xd4, 0x01, 0x02, 0x03, 0x04, 0xd4, 0x07,
-0xe5, 0x01, 0xd8, 0x02, 0x01, 0x01, 0xe1, 0xe5,
-0x01, 0xd8, 0x02, 0x03, 0xe5, 0xdb, 0xe5, 0x02,
-0x02, 0xdb, 0xe5, 0xe6, 0xe5, 0x4c, 0x02, 0x8d,
-0x01, 0x50, 0xe5, 0x8c, 0x01, 0xe6, 0x0d, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0d, 0xe6, 0xe6, 0x01, 0xd8, 0x03,
-0xe7, 0xdd, 0xe6, 0xe5, 0xe5, 0x46, 0x01, 0x90,
-0x01, 0x02, 0xe5, 0x48, 0x01, 0xe5, 0x92, 0x01,
-0xe3, 0xe5, 0x14, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x08, 0x01, 0x49, 0x01, 0x92, 0xe8,
-0x48, 0x01, 0x94, 0x01, 0xde, 0xe5, 0xe6, 0xda,
-0x03, 0xe7, 0xdd, 0xe5, 0xe6, 0xe5, 0x0e, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x08,
-0x01, 0xe6, 0xe5, 0x5b, 0x81, 0x02, 0xe6, 0x50,
-0x31, 0x50, 0x07, 0xe5, 0x01, 0xe5, 0xe5, 0x6e,
-0x6e, 0xe6, 0x70, 0x6c, 0x01, 0xe6, 0x70, 0x6c,
-0xe6, 0xe5, 0x12, 0x5d, 0x36, 0x15, 0x21, 0xe6,
-0x70, 0x6c, 0x02, 0xe5, 0x70, 0x6c, 0x01, 0xe6,
-0x4c, 0x23, 0x6e, 0xe6, 0x02, 0x6d, 0x6c, 0x03,
-0x4d, 0x91, 0x02, 0xe5, 0xdb, 0xe9, 0x01, 0xdb,
-0xe5, 0x01, 0xe6, 0xd9, 0xe6, 0x01, 0xe5, 0x01,
-0x01, 0xd4, 0x01, 0x05, 0xe5, 0x03, 0xd4, 0x04,
-0xe8, 0x01, 0xd8, 0x02, 0xe6, 0xe5, 0xdf, 0xe6,
-0x01, 0xd8, 0x05, 0xe6, 0xdb, 0x03, 0xe5, 0xdd,
-0xe5, 0x01, 0xde, 0x01, 0xe6, 0xdd, 0xe6, 0xe6,
-0x0d, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0d, 0xe6, 0x01, 0x02,
-0xd8, 0x03, 0x01, 0xe5, 0xde, 0xe5, 0xe5, 0xe5,
-0xd9, 0x01, 0xe6, 0xe5, 0xdd, 0x01, 0xe6, 0xde,
-0xe5, 0xe5, 0x14, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x08, 0x01, 0xdf, 0x02, 0xe1, 0xe5,
-0xdd, 0xe8, 0xdd, 0x01, 0xe6, 0x02, 0xdb, 0xe7,
-0xe5, 0x09, 0x04, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x09, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x08, 0x01, 0xe6, 0xe5, 0x51,
-0x13, 0x79, 0x01, 0xe5, 0x14, 0x4d, 0x17, 0x11,
-0x4e, 0xe6, 0x01, 0x71, 0x6c, 0x01, 0xe6, 0x70,
-0x6c, 0x01, 0xe6, 0x70, 0x6c, 0xe6, 0xe5, 0x12,
-0x31, 0x2b, 0x4a, 0x15, 0x0f, 0x31, 0x3f, 0x6d,
-0xe7, 0x70, 0x68, 0x03, 0xe5, 0xe6, 0xe5, 0x6e,
-0x6c, 0xe8, 0x70, 0x6e, 0x01, 0x02, 0xdf, 0xe5,
-0x08, 0xd2, 0x01, 0x01, 0xe5, 0xdf, 0x01, 0xe6,
-0xd9, 0x01, 0xe6, 0xe5, 0x01, 0x01, 0xd4, 0x01,
-0x03, 0x02, 0x04, 0xce, 0xe5, 0x03, 0x05, 0xe7,
-0xd3, 0x06, 0x02, 0x03, 0xd5, 0x07, 0xe5, 0xe7,
-0xda, 0x03, 0x01, 0xe5, 0xdc, 0xe9, 0xdd, 0x02,
-0xe5, 0x08, 0xd3, 0x04, 0x0a, 0x01, 0xd1, 0xe5,
-0xe7, 0x07, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0xe6,
-0xe6, 0x01, 0xd3, 0x04, 0x02, 0x03, 0xd5, 0x08,
-0x01, 0x01, 0xe0, 0x01, 0xde, 0xe5, 0xe6, 0xdf,
-0x01, 0xe5, 0x13, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x09, 0xe5, 0xdd, 0x03, 0xe0, 0x01,
-0xe5, 0xdc, 0xe8, 0xdf, 0x01, 0xdf, 0xe5, 0xe5,
-0x10, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x09,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x07, 0x01, 0x0c, 0xe6, 0xdd, 0xe9, 0x50,
-0x33, 0x56, 0x01, 0x02, 0x01, 0x03, 0x2c, 0x3e,
-0x6c, 0xe5, 0xe7, 0x6f, 0x6b, 0x01, 0xe5, 0xe5,
-0x12, 0x5d, 0x6e, 0xe7, 0x08, 0x1f, 0x09, 0x3c,
-0x4a, 0x15, 0x0a, 0xe9, 0x70, 0x6c, 0x02, 0xe5,
-0x05, 0x6a, 0x6c, 0xe6, 0xe5, 0x70, 0x6e, 0xe6,
-0x70, 0x6d, 0xe7, 0x09, 0x09, 0x09, 0xbf, 0x01,
-0x01, 0xde, 0xe5, 0xe6, 0x26, 0xba, 0xdc, 0x01,
-0x01, 0xe6, 0x01, 0x01, 0xd4, 0x01, 0x03, 0xe7,
-0x03, 0xcf, 0xe5, 0x02, 0x04, 0x02, 0xe5, 0xe6,
-0xd7, 0x03, 0x01, 0xe6, 0xe5, 0x06, 0x01, 0xd0,
-0x02, 0xe6, 0xda, 0x02, 0xe5, 0x01, 0xdd, 0xe6,
-0xe6, 0xda, 0xe5, 0x02, 0xe7, 0x07, 0xd3, 0x01,
-0xe7, 0x09, 0x01, 0xd5, 0xe5, 0x07, 0x05, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x01, 0x06, 0xe9, 0xd5, 0x04,
-0x05, 0xe5, 0xd2, 0x0a, 0x02, 0xe5, 0xdf, 0x01,
-0xdf, 0xe8, 0xdd, 0x01, 0xe5, 0x14, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x01, 0xe5,
-0xd8, 0x05, 0xe7, 0xde, 0xe5, 0xe6, 0xdc, 0x02,
-0xe5, 0x02, 0x08, 0xd3, 0x01, 0x32, 0xab, 0xe6,
-0xe5, 0x10, 0x01, 0x02, 0x04, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x09, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x0a, 0x02, 0xe5, 0xde, 0x02, 0xe5,
-0x64, 0x15, 0x13, 0x4c, 0x02, 0xe6, 0x70, 0x6d,
-0xe5, 0xe6, 0x6f, 0x6b, 0x02, 0x01, 0x13, 0x5d,
-0x64, 0x07, 0xe5, 0xe7, 0x43, 0x2b, 0x61, 0x09,
-0xe5, 0x02, 0x25, 0x4b, 0x6e, 0x01, 0x06, 0x20,
-0x49, 0x6d, 0xe5, 0xe5, 0x70, 0x6c, 0x03, 0x03,
-0x6d, 0x6e, 0xe6, 0xe1, 0xdc, 0x01, 0xe5, 0x01,
-0xe3, 0xe7, 0xd9, 0x03, 0xe6, 0x01, 0x01, 0xd4,
-0x01, 0x02, 0x01, 0x01, 0x04, 0xd4, 0x06, 0x01,
-0xd4, 0xe5, 0x04, 0x02, 0x01, 0xe6, 0xdc, 0x01,
-0x02, 0x02, 0xd8, 0x03, 0x02, 0x01, 0xdb, 0x01,
-0xe5, 0xe5, 0xdd, 0xe5, 0x01, 0xdd, 0x01, 0xe7,
-0xdf, 0xe7, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x02,
-0x01, 0x02, 0xd8, 0x04, 0xe6, 0xdd, 0x02, 0xe5,
-0xdd, 0x01, 0xe6, 0xdd, 0xe5, 0x01, 0xe5, 0xde,
-0x01, 0x15, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x06, 0x01, 0x01, 0xde, 0x01, 0x01, 0xe3,
-0xe6, 0xdc, 0xe5, 0x01, 0xdf, 0xe7, 0x3b, 0x10,
-0x92, 0xe6, 0x10, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x09, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01,
-0x07, 0x01, 0x01, 0x05, 0x01, 0x07, 0x01, 0x0d,
-0xe5, 0x50, 0x34, 0x58, 0x02, 0xe5, 0x50, 0x8a,
-0xe9, 0xe5, 0x02, 0x5f, 0x0a, 0xe5, 0x09, 0x12,
-0x51, 0xe5, 0x03, 0x49, 0x22, 0x14, 0x13, 0x42,
-0xe5, 0x01, 0xe6, 0x01, 0x6d, 0x6f, 0xe6, 0x2b,
-0x24, 0x1e, 0x52, 0xe5, 0x0b, 0x0a, 0xe5, 0x01,
-0xe6, 0x23, 0x05, 0x01, 0x3f, 0x03, 0x6c, 0xe5,
-0xe6, 0x26, 0x06, 0x42, 0x6c, 0x01, 0xe7, 0x6f,
-0x6d, 0xe7, 0x70, 0x6d, 0x01, 0xe5, 0x30, 0x3d,
-0x5f, 0x0e, 0x01, 0x01, 0x2d, 0x97, 0x08, 0xe5,
-0x0d, 0xe5, 0x01, 0x09, 0x23, 0x44, 0x52, 0x08,
-0x11, 0xe6, 0x02, 0x0b, 0xe5, 0x01, 0x06, 0x06,
-0xe7, 0x07, 0xe5, 0x05, 0xe7, 0x05, 0xe7, 0x05,
-0xe7, 0xe5, 0x05, 0xe5, 0x08, 0x08, 0xe5, 0x09,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x0b, 0x02, 0xe6, 0x0d, 0x01,
-0x02, 0x04, 0x01, 0x02, 0x04, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x07, 0x01, 0x02, 0x02, 0x01,
-0x01, 0x08, 0xe5, 0x0d, 0x02, 0x01, 0x0b, 0x09,
-0x09, 0x09, 0x07, 0x01, 0x01, 0xe5, 0x05, 0x09,
-0x09, 0x02, 0x06, 0x09, 0x0d, 0x02, 0xe5, 0x0f,
-0x08, 0x13, 0x09, 0x1d, 0x09, 0x04, 0x04, 0x08,
-0x02, 0x04, 0x04, 0x09, 0x04, 0x04, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0f, 0x02, 0x14, 0x41,
-0x87, 0x01, 0xe6, 0x18, 0x03, 0x05, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x13, 0x0b, 0x09, 0x04, 0x04,
-0x09, 0x04, 0x04, 0x02, 0x06, 0x09, 0x09, 0x09,
-0x09, 0x0e, 0x01, 0x01, 0x0d, 0xe5, 0x07, 0xe6,
-0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe6,
-0x06, 0xe6, 0x06, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x01, 0x03, 0x03, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x0e, 0xe8,
-0x02, 0x05, 0x03, 0x09, 0x01, 0x04, 0x02, 0x01,
-0x07, 0x09, 0x09, 0x01, 0x07, 0x01, 0x07, 0x09,
-0x07, 0x01, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x14, 0x0e, 0x09, 0x09,
-0x09, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0x09,
-0x09, 0xe5, 0xe5, 0x05, 0x09, 0xe5, 0xe5, 0x07,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x0f, 0x0e, 0x09,
-0x01, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x01, 0x07, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0f, 0x01, 0xe6, 0x47,
-0x11, 0x76, 0x0c, 0x01, 0x01, 0x0e, 0x05, 0x03,
-0x05, 0x03, 0x09, 0x05, 0x03, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x06, 0x01, 0x02, 0x05, 0x03, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f,
-0xe8, 0x0f, 0x13, 0x1d, 0x09, 0x24, 0x70, 0x10,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x03,
-0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x0e, 0x01, 0xe5, 0x46,
-0x96, 0x02, 0xe5, 0x70, 0x6e, 0x01, 0x22, 0x1d,
-0x09, 0x13, 0x11, 0xe5, 0x67, 0x06, 0xe5, 0x06,
-0x06, 0x06, 0x02, 0x06, 0x02, 0x06, 0x16, 0x06,
-0x02, 0x13, 0x06, 0x79, 0xe5, 0xe5, 0x3a, 0x1d,
-0x33, 0x1d, 0x09, 0x2a, 0xe6, 0x06, 0x05, 0x08,
-0xe5, 0x07, 0xe5, 0x07, 0x14, 0x08, 0xe5, 0x12,
-0x08, 0x0a, 0x65, 0x06, 0x03, 0x71, 0x66, 0x05,
-0xe5, 0xe6, 0xdd, 0xe5, 0xe6, 0x0c, 0xe5, 0x04,
-0xe8, 0x04, 0xe8, 0x04, 0xe6, 0x06, 0x09, 0x02,
-0xe5, 0x04, 0xe8, 0x04, 0x09, 0x02, 0xe5, 0x04,
-0xe6, 0x06, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x09, 0x09, 0x01, 0xe6, 0x0c,
-0xe6, 0x05, 0xe7, 0x05, 0xe7, 0x05, 0x01, 0xe5,
-0x08, 0x07, 0xe6, 0x05, 0xe7, 0x08, 0x07, 0xe6,
-0x05, 0x02, 0x07, 0x03, 0x09, 0x09, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x08, 0xe5, 0x07, 0xe5, 0x0e,
-0xe5, 0xe5, 0x33, 0x2d, 0x0e, 0x10, 0x13, 0x48,
-0x02, 0x11, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x01, 0x0d, 0x03, 0x05, 0x03, 0x01, 0x0d,
-0x03, 0x01, 0x03, 0x07, 0x09, 0x09, 0x09, 0x09,
-0x03, 0x05, 0x09, 0x09, 0x11, 0x13, 0x01, 0xe5,
-0x0a, 0x06, 0x09, 0x09, 0x04, 0x01, 0x02, 0x01,
-0x03, 0x07, 0x05, 0x09, 0x01, 0x03, 0x07, 0x0e,
-0xe5, 0x02, 0x06, 0xe5, 0x02, 0x04, 0x04, 0x01,
-0x07, 0x04, 0x04, 0x05, 0x03, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x03, 0x03, 0x02, 0x04, 0x04, 0x06,
-0x01, 0x03, 0xe5, 0xe5, 0xe6, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff,
diff --git a/board/esd/du440/Kconfig b/board/esd/du440/Kconfig
deleted file mode 100644 (file)
index b4b3e6b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DU440
-
-config SYS_BOARD
-       default "du440"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "DU440"
-
-endif
diff --git a/board/esd/du440/MAINTAINERS b/board/esd/du440/MAINTAINERS
deleted file mode 100644 (file)
index ba26948..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DU440 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/du440/
-F:     include/configs/DU440.h
-F:     configs/DU440_defconfig
diff --git a/board/esd/du440/Makefile b/board/esd/du440/Makefile
deleted file mode 100644 (file)
index ef41d94..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = du440.o
-extra-y        += init.o
diff --git a/board/esd/du440/config.mk b/board/esd/du440/config.mk
deleted file mode 100644 (file)
index 9cb071e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2002-2010
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/esd/du440/du440.c b/board/esd/du440/du440.c
deleted file mode 100644 (file)
index b168b24..0000000
+++ /dev/null
@@ -1,882 +0,0 @@
-/*
- * (C) Copyright 2008
- * Matthias Fuchs, esd gmbh, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <asm/bitops.h>
-#include <command.h>
-#include <i2c.h>
-#include <asm/ppc440.h>
-#include "du440.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-extern ulong flash_get_size (ulong base, int banknum);
-
-int usbhub_init(void);
-int dvi_init(void);
-int eeprom_write_enable (unsigned dev_addr, int state);
-int board_revision(void);
-
-static int du440_post_errors;
-
-int board_early_init_f(void)
-{
-       u32 sdr0_cust0;
-       u32 sdr0_pfc1, sdr0_pfc2;
-       u32 reg;
-
-       mtdcr(EBC0_CFGADDR, EBC0_CFG);
-       mtdcr(EBC0_CFGDATA, 0xb8400000);
-
-       /*
-        * Setup the GPIO pins
-        */
-       out_be32((void*)GPIO0_OR, 0x00000000 | CONFIG_SYS_GPIO0_EP_EEP);
-       out_be32((void*)GPIO0_TCR, 0x0000001f | CONFIG_SYS_GPIO0_EP_EEP);
-       out_be32((void*)GPIO0_OSRL, 0x50055400);
-       out_be32((void*)GPIO0_OSRH, 0x55005000);
-       out_be32((void*)GPIO0_TSRL, 0x50055400);
-       out_be32((void*)GPIO0_TSRH, 0x55005000);
-       out_be32((void*)GPIO0_ISR1L, 0x50000000);
-       out_be32((void*)GPIO0_ISR1H, 0x00000000);
-       out_be32((void*)GPIO0_ISR2L, 0x00000000);
-       out_be32((void*)GPIO0_ISR2H, 0x00000000);
-       out_be32((void*)GPIO0_ISR3L, 0x00000000);
-       out_be32((void*)GPIO0_ISR3H, 0x00000000);
-
-       out_be32((void*)GPIO1_OR, 0x00000000);
-       out_be32((void*)GPIO1_TCR, 0xc2000000 |
-                CONFIG_SYS_GPIO1_IORSTN |
-                CONFIG_SYS_GPIO1_IORST2N |
-                CONFIG_SYS_GPIO1_LEDUSR1 |
-                CONFIG_SYS_GPIO1_LEDUSR2 |
-                CONFIG_SYS_GPIO1_LEDPOST |
-                CONFIG_SYS_GPIO1_LEDDU);
-       out_be32((void*)GPIO1_ODR, CONFIG_SYS_GPIO1_LEDDU);
-       out_be32((void*)GPIO1_OSRL, 0x0c280000);
-       out_be32((void*)GPIO1_OSRH, 0x00000000);
-       out_be32((void*)GPIO1_TSRL, 0xcc000000);
-       out_be32((void*)GPIO1_TSRH, 0x00000000);
-       out_be32((void*)GPIO1_ISR1L, 0x00005550);
-       out_be32((void*)GPIO1_ISR1H, 0x00000000);
-       out_be32((void*)GPIO1_ISR2L, 0x00050000);
-       out_be32((void*)GPIO1_ISR2H, 0x00000000);
-       out_be32((void*)GPIO1_ISR3L, 0x01400000);
-       out_be32((void*)GPIO1_ISR3H, 0x00000000);
-
-       /*
-        * Setup the interrupt controller polarities, triggers, etc.
-        */
-       mtdcr(UIC0SR, 0xffffffff);      /* clear all */
-       mtdcr(UIC0ER, 0x00000000);      /* disable all */
-       mtdcr(UIC0CR, 0x00000005);      /* ATI & UIC1 crit are critical */
-       mtdcr(UIC0PR, 0xfffff7ff);      /* per ref-board manual */
-       mtdcr(UIC0TR, 0x00000000);      /* per ref-board manual */
-       mtdcr(UIC0VR, 0x00000000);      /* int31 highest, base=0x000 */
-       mtdcr(UIC0SR, 0xffffffff);      /* clear all */
-
-       /*
-        * UIC1:
-        *  bit30: ext. Irq 1: PLD : int 32+30
-        */
-       mtdcr(UIC1SR, 0xffffffff);      /* clear all */
-       mtdcr(UIC1ER, 0x00000000);      /* disable all */
-       mtdcr(UIC1CR, 0x00000000);      /* all non-critical */
-       mtdcr(UIC1PR, 0xfffffffd);
-       mtdcr(UIC1TR, 0x00000000);
-       mtdcr(UIC1VR, 0x00000000);      /* int31 highest, base=0x000 */
-       mtdcr(UIC1SR, 0xffffffff);      /* clear all */
-
-       /*
-        * UIC2
-        *  bit3: ext. Irq 2: DCF77 : int 64+3
-        */
-       mtdcr(UIC2SR, 0xffffffff);      /* clear all */
-       mtdcr(UIC2ER, 0x00000000);      /* disable all */
-       mtdcr(UIC2CR, 0x00000000);      /* all non-critical */
-       mtdcr(UIC2PR, 0xffffffff);      /* per ref-board manual */
-       mtdcr(UIC2TR, 0x00000000);      /* per ref-board manual */
-       mtdcr(UIC2VR, 0x00000000);      /* int31 highest, base=0x000 */
-       mtdcr(UIC2SR, 0xffffffff);      /* clear all */
-
-       /* select Ethernet pins */
-       mfsdr(SDR0_PFC1, sdr0_pfc1);
-       mfsdr(SDR0_PFC2, sdr0_pfc2);
-
-       /* setup EMAC bridge interface */
-       if (board_revision() == 0) {
-               /* 1 x MII */
-               sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SELECT_MASK) |
-                       SDR0_PFC1_SELECT_CONFIG_1_2;
-               sdr0_pfc2 = (sdr0_pfc2 & ~SDR0_PFC2_SELECT_MASK) |
-                       SDR0_PFC2_SELECT_CONFIG_1_2;
-       } else {
-               /* 2 x SMII */
-               sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SELECT_MASK) |
-                       SDR0_PFC1_SELECT_CONFIG_6;
-               sdr0_pfc2 = (sdr0_pfc2 & ~SDR0_PFC2_SELECT_MASK) |
-                       SDR0_PFC2_SELECT_CONFIG_6;
-       }
-
-       /* enable 2nd IIC */
-       sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SIS_MASK) | SDR0_PFC1_SIS_IIC1_SEL;
-
-       mtsdr(SDR0_PFC2, sdr0_pfc2);
-       mtsdr(SDR0_PFC1, sdr0_pfc1);
-
-       /* PCI arbiter enabled */
-       mfsdr(SDR0_PCI0, reg);
-       mtsdr(SDR0_PCI0, 0x80000000 | reg);
-
-       /* setup NAND FLASH */
-       mfsdr(SDR0_CUST0, sdr0_cust0);
-       sdr0_cust0 = SDR0_CUST0_MUX_NDFC_SEL    |
-               SDR0_CUST0_NDFC_ENABLE          |
-               SDR0_CUST0_NDFC_BW_8_BIT        |
-               SDR0_CUST0_NDFC_ARE_MASK        |
-               (0x80000000 >> (28 + CONFIG_SYS_NAND0_CS)) |
-               (0x80000000 >> (28 + CONFIG_SYS_NAND1_CS));
-       mtsdr(SDR0_CUST0, sdr0_cust0);
-
-       return 0;
-}
-
-int misc_init_r(void)
-{
-       uint pbcr;
-       int size_val = 0;
-       u32 reg;
-       unsigned long usb2d0cr = 0;
-       unsigned long usb2phy0cr, usb2h0cr = 0;
-       unsigned long sdr0_pfc1;
-       unsigned long sdr0_srst0, sdr0_srst1;
-       int i, j;
-
-       /* adjust flash start and offset */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       size_val = ffs(gd->bd->bi_flashsize) - 21;
-       pbcr = (pbcr & 0x0001ffff) | gd->bd->bi_flashstart | (size_val << 17);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /*
-        * Re-check to get correct base address
-        */
-       flash_get_size(gd->bd->bi_flashstart, 0);
-
-       /*
-        * USB suff...
-        */
-       /* SDR Setting */
-       mfsdr(SDR0_PFC1, sdr0_pfc1);
-       mfsdr(SDR0_USB0, usb2d0cr);
-       mfsdr(SDR0_USB2PHY0CR, usb2phy0cr);
-       mfsdr(SDR0_USB2H0CR, usb2h0cr);
-
-       usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_XOCLK_MASK;
-       usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_XOCLK_EXTERNAL;
-       usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_WDINT_MASK;
-       usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_WDINT_16BIT_30MHZ;
-       usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DVBUS_MASK;
-       usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DVBUS_PURDIS;
-       usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DWNSTR_MASK;
-       usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DWNSTR_HOST;
-       usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_UTMICN_MASK;
-       usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_UTMICN_HOST;
-
-       /* An 8-bit/60MHz interface is the only possible alternative
-          when connecting the Device to the PHY */
-       usb2h0cr   = usb2h0cr &~SDR0_USB2H0CR_WDINT_MASK;
-       usb2h0cr   = usb2h0cr | SDR0_USB2H0CR_WDINT_16BIT_30MHZ;
-
-       /* To enable the USB 2.0 Device function through the UTMI interface */
-       usb2d0cr = usb2d0cr &~SDR0_USB2D0CR_USB2DEV_EBC_SEL_MASK;
-
-       sdr0_pfc1 = sdr0_pfc1 &~SDR0_PFC1_UES_MASK;
-       sdr0_pfc1 = sdr0_pfc1 | SDR0_PFC1_UES_EBCHR_SEL;
-
-       mtsdr(SDR0_PFC1, sdr0_pfc1);
-       mtsdr(SDR0_USB0, usb2d0cr);
-       mtsdr(SDR0_USB2PHY0CR, usb2phy0cr);
-       mtsdr(SDR0_USB2H0CR, usb2h0cr);
-
-       /*
-        * Take USB out of reset:
-        * -Initial status = all cores are in reset
-        * -deassert reset to OPB1, P4OPB0, OPB2, PLB42OPB1 OPB2PLB40 cores
-        * -wait 1 ms
-        * -deassert reset to PHY
-        * -wait 1 ms
-        * -deassert  reset to HOST
-        * -wait 4 ms
-        * -deassert all other resets
-        */
-       mfsdr(SDR0_SRST1, sdr0_srst1);
-       sdr0_srst1 &= ~(SDR0_SRST1_OPBA1 |              \
-                       SDR0_SRST1_P4OPB0 |             \
-                       SDR0_SRST1_OPBA2 |              \
-                       SDR0_SRST1_PLB42OPB1 |          \
-                       SDR0_SRST1_OPB2PLB40);
-       mtsdr(SDR0_SRST1, sdr0_srst1);
-       udelay(1000);
-
-       mfsdr(SDR0_SRST1, sdr0_srst1);
-       sdr0_srst1 &= ~SDR0_SRST1_USB20PHY;
-       mtsdr(SDR0_SRST1, sdr0_srst1);
-       udelay(1000);
-
-       mfsdr(SDR0_SRST0, sdr0_srst0);
-       sdr0_srst0 &= ~SDR0_SRST0_USB2H;
-       mtsdr(SDR0_SRST0, sdr0_srst0);
-       udelay(4000);
-
-       /* finally all the other resets */
-       mtsdr(SDR0_SRST1, 0x00000000);
-       mtsdr(SDR0_SRST0, 0x00000000);
-
-       printf("USB:   Host(int phy)\n");
-
-       /*
-        * Clear PLB4A0_ACR[WRP]
-        * This fix will make the MAL burst disabling patch for the Linux
-        * EMAC driver obsolete.
-        */
-       reg = mfdcr(PLB4A0_ACR) & ~PLB4Ax_ACR_WRP_MASK;
-       mtdcr(PLB4A0_ACR, reg);
-
-       /*
-        * release IO-RST#
-        * We have to wait at least 560ms until we may call usbhub_init
-        */
-       out_be32((void*)GPIO1_OR, in_be32((void*)GPIO1_OR) |
-                CONFIG_SYS_GPIO1_IORSTN | CONFIG_SYS_GPIO1_IORST2N);
-
-       /*
-        * flash USR1/2 LEDs (600ms)
-        * This results in the necessary delay from IORST# until
-        * calling usbhub_init will succeed
-        */
-       for (j = 0; j < 3; j++) {
-               out_be32((void*)GPIO1_OR,
-                        (in_be32((void*)GPIO1_OR) & ~CONFIG_SYS_GPIO1_LEDUSR2) |
-                        CONFIG_SYS_GPIO1_LEDUSR1);
-
-               for (i = 0; i < 100; i++)
-                       udelay(1000);
-
-               out_be32((void*)GPIO1_OR,
-                        (in_be32((void*)GPIO1_OR) & ~CONFIG_SYS_GPIO1_LEDUSR1) |
-                        CONFIG_SYS_GPIO1_LEDUSR2);
-
-               for (i = 0; i < 100; i++)
-                       udelay(1000);
-       }
-
-       out_be32((void*)GPIO1_OR, in_be32((void*)GPIO1_OR) &
-                ~(CONFIG_SYS_GPIO1_LEDUSR1 | CONFIG_SYS_GPIO1_LEDUSR2));
-
-       if (usbhub_init())
-               du440_post_errors++;
-
-       if (dvi_init())
-               du440_post_errors++;
-
-       return 0;
-}
-
-int pld_revision(void)
-{
-       out_8((void *)CONFIG_SYS_CPLD_BASE, 0x00);
-       return (int)(in_8((void *)CONFIG_SYS_CPLD_BASE) & CPLD_VERSION_MASK);
-}
-
-int board_revision(void)
-{
-       int rpins = (int)((in_be32((void*)GPIO1_IR) & CONFIG_SYS_GPIO1_HWVER_MASK)
-                         >> CONFIG_SYS_GPIO1_HWVER_SHIFT);
-
-       return ((rpins & 1) << 3) | ((rpins & 2) << 1) |
-               ((rpins & 4) >> 1) | ((rpins & 8) >> 3);
-}
-
-#if defined(CONFIG_SHOW_ACTIVITY)
-void board_show_activity (ulong timestamp)
-{
-       if ((timestamp % 100) == 0)
-               out_be32((void*)GPIO1_OR,
-                        in_be32((void*)GPIO1_OR) ^ CONFIG_SYS_GPIO1_LEDUSR1);
-}
-
-void show_activity(int arg)
-{
-}
-#endif /* CONFIG_SHOW_ACTIVITY */
-
-int du440_phy_addr(int devnum)
-{
-       if (board_revision() == 0)
-               return devnum;
-
-       return devnum + 1;
-}
-
-int checkboard(void)
-{
-       char serno[32];
-
-       puts("Board: DU440");
-
-       if (getenv_f("serial#", serno, sizeof(serno)) > 0) {
-               puts(", serial# ");
-               puts(serno);
-       }
-
-       printf(", HW-Rev. 1.%d, CPLD-Rev. 1.%d\n",
-              board_revision(), pld_revision());
-       return (0);
-}
-
-int last_stage_init(void)
-{
-       int e, i;
-
-       /* everyting is ok: turn on POST-LED */
-       out_be32((void*)GPIO1_OR, in_be32((void*)GPIO1_OR) | CONFIG_SYS_GPIO1_LEDPOST);
-
-       /* slowly blink on errors and finally keep LED off */
-       for (e = 0; e < du440_post_errors; e++) {
-               out_be32((void*)GPIO1_OR,
-                        in_be32((void*)GPIO1_OR) | CONFIG_SYS_GPIO1_LEDPOST);
-
-               for (i = 0; i < 500; i++)
-                       udelay(1000);
-
-               out_be32((void*)GPIO1_OR,
-                        in_be32((void*)GPIO1_OR) & ~CONFIG_SYS_GPIO1_LEDPOST);
-
-               for (i = 0; i < 500; i++)
-                       udelay(1000);
-       }
-
-       return 0;
-}
-
-/*
- * read field strength from I2C ADC
- */
-int dcf77_status(void)
-{
-       unsigned int oldbus;
-       uchar u[2];
-       int mv;
-
-       oldbus = I2C_GET_BUS();
-       I2C_SET_BUS(1);
-
-       if (i2c_read (IIC1_MCP3021_ADDR, 0, 0, u, 2)) {
-               I2C_SET_BUS(oldbus);
-               return -1;
-       }
-
-       mv = (int)(((u[0] << 8) | u[1]) >> 2) * 3300 / 1024;
-
-       I2C_SET_BUS(oldbus);
-       return mv;
-}
-
-int do_dcf77(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int mv;
-       u32 pin, pinold;
-       unsigned long long t1, t2;
-       bd_t *bd = gd->bd;
-
-       printf("DCF77: ");
-       mv = dcf77_status();
-       if (mv > 0)
-               printf("signal=%d mV\n", mv);
-       else
-               printf("ERROR - no signal\n");
-
-       t1 = t2 = 0;
-       pinold = in_be32((void*)GPIO1_IR) & CONFIG_SYS_GPIO1_DCF77;
-       while (!ctrlc()) {
-               pin = in_be32((void*)GPIO1_IR) & CONFIG_SYS_GPIO1_DCF77;
-               if (pin && !pinold) { /* bit start */
-                       t1 = get_ticks();
-                       if (t2 && ((unsigned int)(t1 - t2) /
-                                  (bd->bi_procfreq / 1000) >= 1800))
-                               printf("Start of minute\n");
-
-                       t2 = t1;
-               }
-               if (t1 && !pin && pinold) { /* bit end */
-                       printf("%5d\n", (unsigned int)(get_ticks() - t1) /
-                              (bd->bi_procfreq / 1000));
-               }
-               pinold = pin;
-       }
-
-       printf("Abort\n");
-       return 0;
-}
-U_BOOT_CMD(
-       dcf77, 1, 1, do_dcf77,
-       "Check DCF77 receiver",
-       ""
-);
-
-/*
- * initialize USB hub via I2C1
- */
-int usbhub_init(void)
-{
-       int reg;
-       int ret = 0;
-       unsigned int oldbus;
-       uchar u[] = {0x04, 0x24, 0x04, 0x07, 0x25, 0x00, 0x00, 0xd3,
-                    0x18, 0xe0, 0x00, 0x00, 0x01, 0x64, 0x01, 0x64,
-                    0x32};
-       uchar stcd;
-
-       printf("Hub:   ");
-
-       oldbus = I2C_GET_BUS();
-       I2C_SET_BUS(1);
-
-       for (reg = 0; reg < sizeof(u); reg++)
-               if (i2c_write (IIC1_USB2507_ADDR, reg, 1, &u[reg], 1)) {
-                       ret = -1;
-                       break;
-               }
-
-       if (ret == 0) {
-               stcd = 0x03;
-               if (i2c_write (IIC1_USB2507_ADDR, 0, 1, &stcd, 1))
-                       ret = -1;
-       }
-
-       if (ret == 0)
-               printf("initialized\n");
-       else
-               printf("failed - cannot initialize USB hub\n");
-
-       I2C_SET_BUS(oldbus);
-       return ret;
-}
-
-int do_hubinit(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       usbhub_init();
-       return 0;
-}
-U_BOOT_CMD(
-       hubinit, 1, 1, do_hubinit,
-       "Initialize USB hub",
-       ""
-);
-
-#define CONFIG_SYS_BOOT_EEPROM_PAGE_WRITE_BITS 3
-int boot_eeprom_write (unsigned dev_addr,
-                      unsigned offset,
-                      uchar *buffer,
-                      unsigned cnt)
-{
-       unsigned end = offset + cnt;
-       unsigned blk_off;
-       int rcode = 0;
-
-#if defined(CONFIG_SYS_EEPROM_WREN)
-       eeprom_write_enable(dev_addr, 1);
-#endif
-       /*
-        * Write data until done or would cross a write page boundary.
-        * We must write the address again when changing pages
-        * because the address counter only increments within a page.
-        */
-
-       while (offset < end) {
-               unsigned alen, len;
-               unsigned maxlen;
-
-               uchar addr[2];
-
-               blk_off = offset & 0xFF;        /* block offset */
-
-               addr[0] = offset >> 8;          /* block number */
-               addr[1] = blk_off;              /* block offset */
-               alen = 2;
-               addr[0] |= dev_addr;            /* insert device address */
-
-               len = end - offset;
-
-               /*
-                * For a FRAM device there is no limit on the number of the
-                * bytes that can be ccessed with the single read or write
-                * operation.
-                */
-#if defined(CONFIG_SYS_BOOT_EEPROM_PAGE_WRITE_BITS)
-
-#define        BOOT_EEPROM_PAGE_SIZE (1 << CONFIG_SYS_BOOT_EEPROM_PAGE_WRITE_BITS)
-#define BOOT_EEPROM_PAGE_OFFSET(x) ((x) & (BOOT_EEPROM_PAGE_SIZE - 1))
-
-               maxlen = BOOT_EEPROM_PAGE_SIZE -
-                       BOOT_EEPROM_PAGE_OFFSET(blk_off);
-#else
-               maxlen = 0x100 - blk_off;
-#endif
-               if (maxlen > I2C_RXTX_LEN)
-                       maxlen = I2C_RXTX_LEN;
-
-               if (len > maxlen)
-                       len = maxlen;
-
-               if (i2c_write (addr[0], offset, alen - 1, buffer, len) != 0)
-                       rcode = 1;
-
-               buffer += len;
-               offset += len;
-
-#if defined(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS)
-               udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
-#endif
-       }
-#if defined(CONFIG_SYS_EEPROM_WREN)
-       eeprom_write_enable(dev_addr, 0);
-#endif
-       return rcode;
-}
-
-int do_setup_boot_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong sdsdp[4];
-
-       if (argc > 1) {
-               if (!strcmp(argv[1], "533")) {
-                       printf("Bootstrapping for 533MHz\n");
-                       sdsdp[0] = 0x87788252;
-                       /* PLB-PCI-divider = 3 : sync PCI clock=44MHz */
-                       sdsdp[1] = 0x095fa030;
-                       sdsdp[2] = 0x40082350;
-                       sdsdp[3] = 0x0d050000;
-               } else if (!strcmp(argv[1], "533-66")) {
-                       printf("Bootstrapping for 533MHz (66MHz PCI)\n");
-                       sdsdp[0] = 0x87788252;
-                       /* PLB-PCI-divider = 2 : sync PCI clock=66MHz */
-                       sdsdp[1] = 0x0957a030;
-                       sdsdp[2] = 0x40082350;
-                       sdsdp[3] = 0x0d050000;
-               } else if (!strcmp(argv[1], "667")) {
-                       printf("Bootstrapping for 667MHz\n");
-                       sdsdp[0] = 0x8778a256;
-                       /* PLB-PCI-divider = 4 : sync PCI clock=33MHz */
-                       sdsdp[1] = 0x0947a030;
-                       /* PLB-PCI-divider = 3 : sync PCI clock=44MHz
-                        * -> not working when overclocking 533MHz chips
-                        * -> untested on 667MHz chips */
-                       /* sdsdp[1]=0x095fa030; */
-                       sdsdp[2] = 0x40082350;
-                       sdsdp[3] = 0x0d050000;
-               } else if (!strcmp(argv[1], "667-166")) {
-                       printf("Bootstrapping for 667-166MHz\n");
-                       sdsdp[0] = 0x8778a252;
-                       sdsdp[1] = 0x09d7a030;
-                       sdsdp[2] = 0x40082350;
-                       sdsdp[3] = 0x0d050000;
-               }
-       } else {
-               printf("Bootstrapping for 533MHz (default)\n");
-               sdsdp[0] = 0x87788252;
-               /* PLB-PCI-divider = 3 : sync PCI clock=44MHz */
-               sdsdp[1] = 0x095fa030;
-               sdsdp[2] = 0x40082350;
-               sdsdp[3] = 0x0d050000;
-       }
-
-       printf("Writing boot EEPROM ...\n");
-       if (boot_eeprom_write(CONFIG_SYS_I2C_BOOT_EEPROM_ADDR,
-                             0, (uchar*)sdsdp, 16) != 0)
-               printf("boot_eeprom_write failed\n");
-       else
-               printf("done (dump via 'i2c md 52 0.1 10')\n");
-
-       return 0;
-}
-U_BOOT_CMD(
-       sbe, 2, 0, do_setup_boot_eeprom,
-       "setup boot eeprom",
-       ""
-);
-
-#if defined(CONFIG_SYS_EEPROM_WREN)
-/*
- * Input: <dev_addr>  I2C address of EEPROM device to enable.
- *         <state>     -1: deliver current state
- *                      0: disable write
- *                      1: enable write
- * Returns:            -1: wrong device address
- *                      0: dis-/en- able done
- *                    0/1: current state if <state> was -1.
- */
-int eeprom_write_enable (unsigned dev_addr, int state)
-{
-       if ((CONFIG_SYS_I2C_EEPROM_ADDR != dev_addr) &&
-           (CONFIG_SYS_I2C_BOOT_EEPROM_ADDR != dev_addr))
-               return -1;
-       else {
-               switch (state) {
-               case 1:
-                       /* Enable write access, clear bit GPIO_SINT2. */
-                       out_be32((void*)GPIO0_OR,
-                                in_be32((void*)GPIO0_OR) & ~CONFIG_SYS_GPIO0_EP_EEP);
-                       state = 0;
-                       break;
-               case 0:
-                       /* Disable write access, set bit GPIO_SINT2. */
-                       out_be32((void*)GPIO0_OR,
-                                in_be32((void*)GPIO0_OR) | CONFIG_SYS_GPIO0_EP_EEP);
-                       state = 0;
-                       break;
-               default:
-                       /* Read current status back. */
-                       state = (0 == (in_be32((void*)GPIO0_OR) &
-                                      CONFIG_SYS_GPIO0_EP_EEP));
-                       break;
-               }
-       }
-       return state;
-}
-
-int do_eep_wren (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int query = argc == 1;
-       int state = 0;
-
-       if (query) {
-               /* Query write access state. */
-               state = eeprom_write_enable(CONFIG_SYS_I2C_EEPROM_ADDR, -1);
-               if (state < 0)
-                       puts ("Query of write access state failed.\n");
-               else {
-                       printf ("Write access for device 0x%0x is %sabled.\n",
-                               CONFIG_SYS_I2C_EEPROM_ADDR, state ? "en" : "dis");
-                       state = 0;
-               }
-       } else {
-               if ('0' == argv[1][0]) {
-                       /* Disable write access. */
-                       state = eeprom_write_enable(CONFIG_SYS_I2C_EEPROM_ADDR, 0);
-               } else {
-                       /* Enable write access. */
-                       state = eeprom_write_enable(CONFIG_SYS_I2C_EEPROM_ADDR, 1);
-               }
-               if (state < 0)
-                       puts ("Setup of write access state failed.\n");
-       }
-
-       return state;
-}
-
-U_BOOT_CMD(eepwren, 2, 0, do_eep_wren,
-       "Enable / disable / query EEPROM write access",
-       ""
-);
-#endif /* #if defined(CONFIG_SYS_EEPROM_WREN) */
-
-static int got_pldirq;
-
-static int pld_interrupt(u32 arg)
-{
-       int rc = -1; /* not for us */
-       u8 status = in_8((void *)CONFIG_SYS_CPLD_BASE);
-
-       /* check for PLD interrupt */
-       if (status & PWR_INT_FLAG) {
-               /* reset this int */
-               out_8((void *)CONFIG_SYS_CPLD_BASE, 0);
-               rc = 0;
-               got_pldirq = 1; /* trigger backend */
-       }
-
-       return rc;
-}
-
-int do_waitpwrirq(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       got_pldirq = 0;
-
-       /* clear any pending interrupt */
-       out_8((void *)CONFIG_SYS_CPLD_BASE, 0);
-
-       irq_install_handler(CPLD_IRQ,
-                           (interrupt_handler_t *)pld_interrupt, 0);
-
-       printf("Waiting ...\n");
-       while(!got_pldirq) {
-               /* Abort if ctrl-c was pressed */
-               if (ctrlc()) {
-                       puts("\nAbort\n");
-                       break;
-               }
-       }
-       if (got_pldirq) {
-               printf("Got interrupt!\n");
-               printf("Power %sready!\n",
-                      in_8((void *)CONFIG_SYS_CPLD_BASE) &
-                      PWR_RDY ? "":"NOT ");
-       }
-
-       irq_free_handler(CPLD_IRQ);
-       return 0;
-}
-U_BOOT_CMD(
-       wpi,    1,      1,      do_waitpwrirq,
-       "Wait for power change interrupt",
-       ""
-);
-
-/*
- * initialize DVI panellink transmitter
- */
-int dvi_init(void)
-{
-       int i;
-       int ret = 0;
-       unsigned int oldbus;
-       uchar u[] = {0x08, 0x34,
-                    0x09, 0x20,
-                    0x0a, 0x90,
-                    0x0c, 0x89,
-                    0x08, 0x35};
-
-       printf("DVI:   ");
-
-       oldbus = I2C_GET_BUS();
-       I2C_SET_BUS(0);
-
-       for (i = 0; i < sizeof(u); i += 2)
-               if (i2c_write (0x38, u[i], 1, &u[i + 1], 1)) {
-                       ret = -1;
-                       break;
-               }
-
-       if (ret == 0)
-               printf("initialized\n");
-       else
-               printf("failed - cannot initialize DVI transmitter\n");
-
-       I2C_SET_BUS(oldbus);
-       return ret;
-}
-
-int do_dviinit(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       dvi_init();
-       return 0;
-}
-U_BOOT_CMD(
-       dviinit, 1, 1, do_dviinit,
-       "Initialize DVI Panellink transmitter",
-       ""
-);
-
-/*
- * TODO: 'time' command might be useful for others as well.
- *       Move to 'common' directory.
- */
-int do_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       unsigned long long start, end;
-       char c, cmd[CONFIG_SYS_CBSIZE];
-       char *p, *d = cmd;
-       int ret, i;
-       ulong us;
-
-       for (i = 1; i < argc; i++) {
-               p = argv[i];
-
-               if (i > 1)
-                       *d++ = ' ';
-
-               while ((c = *p++) != '\0') {
-                       *d++ = c;
-               }
-       }
-       *d = '\0';
-
-       start = get_ticks();
-       ret = run_command(cmd, 0);
-       end = get_ticks();
-
-       printf("ticks=%ld\n", (ulong)(end - start));
-       us = (ulong)((1000L * (end - start)) / (get_tbclk() / 1000));
-       printf("usec=%ld\n", us);
-
-       return ret;
-}
-U_BOOT_CMD(
-       time,   CONFIG_SYS_MAXARGS,     1,      do_time,
-       "run command and output execution time",
-       ""
-);
-
-extern void video_hw_rectfill (
-       unsigned int bpp,               /* bytes per pixel */
-       unsigned int dst_x,             /* dest pos x */
-       unsigned int dst_y,             /* dest pos y */
-       unsigned int dim_x,             /* frame width */
-       unsigned int dim_y,             /* frame height */
-       unsigned int color              /* fill color */
-       );
-
-/*
- * graphics demo
- * draw rectangles using pseudorandom number generator
- * (see http://www.embedded.com/columns/technicalinsights/20900500)
- */
-unsigned int rprime = 9972;
-static unsigned int r;
-static unsigned int Y;
-
-unsigned int prng(unsigned int max)
-{
-       if (r == 0 || r == 1 || r == -1)
-               r = rprime; /* keep from getting stuck */
-
-       r = (9973 * ~r) + ((Y) % 701); /* the actual algorithm */
-       Y = (r >> 16) % max; /* choose upper bits and reduce */
-       return Y;
-}
-
-int do_gfxdemo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       unsigned int color;
-       unsigned int x, y, dx, dy;
-
-       while (!ctrlc()) {
-               x = prng(1280 - 1);
-               y = prng(1024 - 1);
-               dx = prng(1280- x - 1);
-               dy = prng(1024 - y - 1);
-               color = prng(0x10000);
-               video_hw_rectfill(2, x, y, dx, dy, color);
-       }
-
-       return 0;
-}
-U_BOOT_CMD(
-       gfxdemo,        CONFIG_SYS_MAXARGS,     1,      do_gfxdemo,
-       "demo",
-       ""
-);
diff --git a/board/esd/du440/du440.h b/board/esd/du440/du440.h
deleted file mode 100644 (file)
index df065ba..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * (C) Copyright 2008
- * Matthias Fuchs, esd gmbh, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define SDR0_USB0              0x0320     /* USB Control Register */
-
-#define CONFIG_SYS_GPIO0_EP_EEP        (0x80000000 >> 23)       /* GPIO0_23 */
-#define CONFIG_SYS_GPIO1_DCF77         (0x80000000 >> (42-32))  /* GPIO1_42 */
-
-#define CONFIG_SYS_GPIO1_IORSTN        (0x80000000 >> (55-32))  /* GPIO1_55 */
-#define CONFIG_SYS_GPIO1_IORST2N       (0x80000000 >> (47-32))  /* GPIO1_47 */
-
-#define CONFIG_SYS_GPIO1_HWVER_MASK    0x000000f0 /* GPIO1_56-59 */
-#define CONFIG_SYS_GPIO1_HWVER_SHIFT   4
-#define CONFIG_SYS_GPIO1_LEDUSR1       0x00000008 /* GPIO1_60 */
-#define CONFIG_SYS_GPIO1_LEDUSR2       0x00000004 /* GPIO1_61 */
-#define CONFIG_SYS_GPIO1_LEDPOST       0x00000002 /* GPIO1_62 */
-#define CONFIG_SYS_GPIO1_LEDDU         0x00000001 /* GPIO1_63 */
-
-#define CPLD_VERSION_MASK      0x0f
-#define PWR_INT_FLAG           0x80
-#define PWR_RDY                        0x10
-
-#define CPLD_IRQ               (32+30)
diff --git a/board/esd/du440/init.S b/board/esd/du440/init.S
deleted file mode 100644 (file)
index ab4b6ce..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * (C) Copyright 2008
- * Matthias Fuchs, esd gmbh, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <ppc_asm.tmpl>
-#include <asm/mmu.h>
-#include <config.h>
-
-/*
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- */
-    .section .bootpg,"ax"
-    .globl tlbtab
-
-tlbtab:
-       tlbtab_start
-
-       /*
-        * BOOT_CS (FLASH) must be first. Before relocation SA_I can be off to use the
-        * speed up boot process. It is patched after relocation to enable SA_I
-        */
-       tlbentry( CONFIG_SYS_BOOT_BASE_ADDR, SZ_256M, CONFIG_SYS_BOOT_BASE_ADDR, 1, AC_RWX | SA_G )
-
-#ifdef CONFIG_SYS_INIT_RAM_DCACHE
-       /* TLB-entry for init-ram in dcache (SA_I must be turned off!) */
-       tlbentry( CONFIG_SYS_INIT_RAM_ADDR, SZ_64K, CONFIG_SYS_INIT_RAM_ADDR, 0, AC_RWX | SA_G )
-#endif
-
-       /* TLB-entry for PCI Memory */
-       tlbentry( CONFIG_SYS_PCI_MEMBASE, SZ_256M,  CONFIG_SYS_PCI_MEMBASE, 1, AC_RW | SA_IG )
-       tlbentry( CONFIG_SYS_PCI_MEMBASE1, SZ_256M, CONFIG_SYS_PCI_MEMBASE1, 1, AC_RW | SA_IG )
-       tlbentry( CONFIG_SYS_PCI_MEMBASE2, SZ_256M, CONFIG_SYS_PCI_MEMBASE2, 1, AC_RW | SA_IG )
-       tlbentry( CONFIG_SYS_PCI_MEMBASE3, SZ_256M, CONFIG_SYS_PCI_MEMBASE3, 1, AC_RW | SA_IG )
-
-       /* TLB-entry for PCI IO */
-       tlbentry( CONFIG_SYS_PCI_IOBASE, SZ_64K, CONFIG_SYS_PCI_IOBASE, 1, AC_RW | SA_IG )
-
-       /* TLB-entries for EBC:  CPLD, DUMEM, DUIO */
-       tlbentry( CONFIG_SYS_CPLD_BASE, SZ_1K, CONFIG_SYS_CPLD_BASE, 1, AC_RWX | SA_IG )
-       tlbentry( CONFIG_SYS_DUMEM_BASE, SZ_1M, CONFIG_SYS_DUMEM_BASE, 1, AC_RWX | SA_IG )
-       tlbentry( CONFIG_SYS_DUIO_BASE, SZ_64K, CONFIG_SYS_DUIO_BASE, 1, AC_RWX | SA_IG )
-
-       /* TLB-entry for NAND */
-       tlbentry( CONFIG_SYS_NAND0_ADDR, SZ_1K, CONFIG_SYS_NAND0_ADDR, 1, AC_RWX | SA_IG )
-       tlbentry( CONFIG_SYS_NAND1_ADDR, SZ_1K, CONFIG_SYS_NAND1_ADDR, 1, AC_RWX | SA_IG )
-
-       /* TLB-entry for Internal Registers & OCM */
-       tlbentry( 0xe0000000, SZ_16M, 0xe0000000, 0,  AC_RWX | SA_I )
-
-       /* TLB-entry PCI registers */
-       tlbentry( 0xEEC00000, SZ_1K, 0xEEC00000, 1,  AC_RWX | SA_IG )
-
-       /* TLB-entry for peripherals */
-       tlbentry( 0xEF000000, SZ_16M, 0xEF000000, 1, AC_RWX | SA_IG)
-
-       tlbtab_end
diff --git a/board/esd/hh405/Kconfig b/board/esd/hh405/Kconfig
deleted file mode 100644 (file)
index 8a8623a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_HH405
-
-config SYS_BOARD
-       default "hh405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "HH405"
-
-endif
diff --git a/board/esd/hh405/MAINTAINERS b/board/esd/hh405/MAINTAINERS
deleted file mode 100644 (file)
index b695c7b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-HH405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/hh405/
-F:     include/configs/HH405.h
-F:     configs/HH405_defconfig
diff --git a/board/esd/hh405/Makefile b/board/esd/hh405/Makefile
deleted file mode 100644 (file)
index fba21a3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = hh405.o flash.o \
-       ../common/misc.o \
-       ../common/esd405ep_nand.o \
-       ../common/auto_update.o
diff --git a/board/esd/hh405/flash.c b/board/esd/hh405/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/hh405/fpgadata.c b/board/esd/hh405/fpgadata.c
deleted file mode 100644 (file)
index 620c714..0000000
+++ /dev/null
@@ -1,5034 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x7a, 0x8e, 0xc6, 0x43,
-0x00, 0x03, 0x68, 0x68, 0x34, 0x30, 0x35, 0x5f,
-0x31, 0x5f, 0x30, 0x36, 0x2e, 0x62, 0x69, 0x74,
-0x00, 0xec, 0xfd, 0x7f, 0x7c, 0x14, 0x55, 0x9a,
-0x2f, 0x8e, 0x3f, 0x75, 0xaa, 0x12, 0x4e, 0xba,
-0x3a, 0xe9, 0x22, 0x09, 0x4e, 0x54, 0xc4, 0x4a,
-0x27, 0x30, 0x4d, 0xec, 0x84, 0xa6, 0x83, 0x21,
-0x42, 0x48, 0x2a, 0x9d, 0xe8, 0x44, 0x40, 0xe9,
-0x71, 0xdc, 0x59, 0x76, 0xae, 0x77, 0xb6, 0x65,
-0x98, 0xbd, 0x99, 0xb9, 0xe8, 0x46, 0xc7, 0xbb,
-0x97, 0xf1, 0xce, 0x8f, 0x93, 0x4e, 0x80, 0x4e,
-0x82, 0xd0, 0x20, 0x33, 0x46, 0x87, 0x71, 0x9b,
-0x10, 0x35, 0x2a, 0x33, 0xdb, 0x04, 0x94, 0xf0,
-0x63, 0xb0, 0x12, 0xa3, 0x36, 0x10, 0x20, 0x32,
-0xdc, 0x19, 0x54, 0x46, 0x1b, 0x8c, 0x4c, 0xd4,
-0xe8, 0x04, 0x44, 0x4d, 0xf8, 0xf9, 0x7d, 0x4e,
-0x75, 0xa7, 0xbb, 0x1a, 0x77, 0xf7, 0xce, 0xfd,
-0xdc, 0xd7, 0xf7, 0xf3, 0xda, 0xd7, 0xeb, 0x73,
-0xb3, 0x7f, 0xec, 0x99, 0xea, 0x43, 0x59, 0x75,
-0xea, 0x9c, 0xe7, 0x79, 0x3f, 0xbf, 0xde, 0x0f,
-0x64, 0xd8, 0x46, 0x63, 0xff, 0x07, 0x20, 0xdc,
-0x0f, 0xb6, 0xfa, 0xfa, 0x39, 0xae, 0x5b, 0xff,
-0x7e, 0xf6, 0xdf, 0xbb, 0xca, 0x4a, 0x1e, 0xfc,
-0xde, 0x72, 0x58, 0x06, 0xb2, 0xfb, 0x47, 0xb7,
-0xba, 0xbe, 0xff, 0xc8, 0x43, 0xb3, 0xe7, 0xcc,
-0x81, 0xef, 0xe1, 0xff, 0x72, 0xb9, 0xca, 0x66,
-0xb9, 0x66, 0xcf, 0x9a, 0xed, 0x86, 0xe5, 0x90,
-0x31, 0xbb, 0x7c, 0xde, 0xec, 0x39, 0xf3, 0x4a,
-0x6f, 0x85, 0xef, 0x83, 0x50, 0xda, 0x79, 0x15,
-0xff, 0x5e, 0x78, 0xf2, 0x6f, 0xfe, 0xc1, 0x05,
-0x4c, 0x00, 0x80, 0x49, 0x2e, 0xc1, 0xc7, 0xff,
-0xbf, 0xec, 0x12, 0x54, 0x01, 0x58, 0x55, 0xb1,
-0x0b, 0x74, 0xfe, 0xbf, 0x21, 0xfe, 0x7b, 0x86,
-0x0b, 0x54, 0xf3, 0xff, 0x16, 0x5c, 0xa0, 0x81,
-0x17, 0xb4, 0xb5, 0x6a, 0x36, 0xfc, 0x15, 0x7f,
-0x92, 0xc4, 0x26, 0x86, 0x7f, 0xd5, 0x7c, 0x48,
-0xcc, 0xbf, 0x7a, 0x90, 0xfd, 0x9b, 0x93, 0x92,
-0x7f, 0x55, 0xe7, 0x42, 0xf1, 0x91, 0x4a, 0x5c,
-0xff, 0xeb, 0xe9, 0x42, 0x2d, 0x4c, 0xdc, 0xf5,
-0xbd, 0xb7, 0xff, 0x9a, 0xfb, 0xcf, 0xff, 0x62,
-0xe2, 0xfe, 0xff, 0xbb, 0xf3, 0x41, 0xf9, 0x2b,
-0xa6, 0xe3, 0xfb, 0x4e, 0x0c, 0xde, 0x53, 0x04,
-0x1f, 0xe4, 0xc1, 0x75, 0x90, 0xc6, 0x80, 0x0f,
-0xd2, 0x41, 0xf8, 0x57, 0x06, 0xf3, 0xfb, 0x27,
-0xe6, 0xeb, 0x8d, 0xfb, 0xe0, 0x08, 0x2b, 0x55,
-0xad, 0x11, 0xd1, 0x0d, 0xef, 0xe5, 0x57, 0x45,
-0x96, 0x9c, 0xcb, 0xd9, 0xd7, 0x7c, 0xf5, 0x7b,
-0x73, 0x23, 0xb6, 0x73, 0x62, 0x39, 0x3b, 0x09,
-0x3f, 0x1a, 0xb5, 0x8e, 0xe5, 0x8c, 0x4a, 0x0d,
-0x13, 0xf3, 0xe9, 0x08, 0x6d, 0x65, 0xee, 0x7c,
-0x1a, 0x90, 0xed, 0x70, 0x48, 0x29, 0x19, 0x92,
-0x1b, 0x49, 0xd1, 0xd2, 0x3d, 0xd9, 0x25, 0x47,
-0x6c, 0xfb, 0x48, 0x97, 0x16, 0x90, 0xca, 0x22,
-0x96, 0x1e, 0x31, 0x2c, 0x4d, 0xac, 0x62, 0x44,
-0x5a, 0xbb, 0xa5, 0x55, 0x98, 0xa1, 0x65, 0x30,
-0xbb, 0x0f, 0x1e, 0x17, 0x9c, 0xda, 0x8d, 0x2e,
-0xb2, 0x56, 0xda, 0xa1, 0x3a, 0x41, 0xce, 0x25,
-0x54, 0xd9, 0x20, 0x86, 0x74, 0xea, 0x22, 0xe7,
-0x84, 0xc4, 0xfd, 0xa5, 0x6d, 0xe9, 0xad, 0xcc,
-0xae, 0x65, 0x04, 0x48, 0x3e, 0x6b, 0xcb, 0x2b,
-0xd1, 0x64, 0xd6, 0xba, 0x0d, 0xf6, 0x92, 0x12,
-0x62, 0x09, 0xf6, 0x75, 0x41, 0x06, 0xfb, 0x07,
-0xdd, 0x12, 0xf6, 0x8c, 0x4a, 0xbe, 0xf8, 0xfc,
-0xea, 0x29, 0x2b, 0x20, 0xd2, 0x38, 0x67, 0x4e,
-0x71, 0xab, 0x28, 0xc2, 0xdb, 0x5a, 0xa5, 0xbe,
-0x64, 0x8e, 0xfc, 0x5b, 0xed, 0x62, 0xb0, 0x64,
-0xb0, 0x26, 0x5c, 0x9a, 0x05, 0xdf, 0x09, 0xd9,
-0x7b, 0xad, 0xe1, 0x82, 0x41, 0x98, 0xb8, 0x7f,
-0x48, 0xd8, 0x0c, 0x97, 0x68, 0x15, 0xcb, 0xd2,
-0x73, 0xba, 0xe1, 0x8a, 0x50, 0xa5, 0x2f, 0x89,
-0x36, 0xd5, 0xc3, 0x05, 0xa8, 0xd4, 0xd7, 0x87,
-0x0b, 0x46, 0xd8, 0x85, 0x8c, 0xaa, 0xb3, 0xb6,
-0x51, 0xb1, 0x0b, 0x26, 0xee, 0xdf, 0xaf, 0x6c,
-0x83, 0x71, 0xbf, 0xdb, 0x63, 0x63, 0xe2, 0x29,
-0x38, 0xa8, 0xb9, 0xf5, 0x69, 0x3b, 0x73, 0xb6,
-0xd1, 0x43, 0xe0, 0xde, 0x60, 0xdd, 0x29, 0x3a,
-0xe1, 0x10, 0x2b, 0xd3, 0x97, 0x84, 0x6b, 0x46,
-0x41, 0x8d, 0xcf, 0x3f, 0x91, 0x56, 0x21, 0x6c,
-0xd7, 0xec, 0x63, 0x8b, 0x24, 0x32, 0xcc, 0x5a,
-0xc1, 0x1d, 0x99, 0xda, 0x49, 0x9c, 0xd0, 0x26,
-0xd9, 0x19, 0x2d, 0xc7, 0xc1, 0x3b, 0x7e, 0xbb,
-0x2e, 0x87, 0xc9, 0x17, 0xb8, 0xfb, 0x27, 0xde,
-0x77, 0xb1, 0xb5, 0x5b, 0xdb, 0x16, 0x92, 0x67,
-0xa4, 0xbf, 0xaa, 0x36, 0x0a, 0x85, 0xa1, 0x0c,
-0x17, 0x59, 0x0d, 0x1b, 0x24, 0x9f, 0x6e, 0x71,
-0x10, 0x02, 0xcf, 0xd7, 0xe2, 0x7c, 0x17, 0x19,
-0xc3, 0xb3, 0x12, 0xfb, 0x1b, 0x85, 0xef, 0xb2,
-0x97, 0x59, 0xf1, 0x29, 0xd9, 0x97, 0x7e, 0x4c,
-0x12, 0x98, 0x1a, 0xa5, 0x27, 0x48, 0xb6, 0xba,
-0x69, 0x63, 0x7e, 0xd4, 0x52, 0x8f, 0x83, 0x5d,
-0x41, 0x21, 0x2a, 0xaf, 0xd4, 0xae, 0x24, 0xee,
-0x5f, 0x07, 0x8b, 0xb5, 0x6e, 0xa8, 0x60, 0xb6,
-0x7c, 0x51, 0xef, 0xeb, 0x85, 0x39, 0x8a, 0x1c,
-0x16, 0x9b, 0xc9, 0x9b, 0x10, 0xd6, 0x4a, 0x94,
-0x36, 0x20, 0xef, 0x87, 0x82, 0xba, 0xcd, 0x25,
-0x1e, 0x23, 0x13, 0xfb, 0x41, 0xbb, 0x69, 0xdf,
-0xd0, 0x17, 0x50, 0xaa, 0xdb, 0xb6, 0x88, 0x83,
-0xda, 0x65, 0xe5, 0x95, 0xda, 0x59, 0x1b, 0xc4,
-0xf3, 0xf0, 0x3c, 0x54, 0xd5, 0x66, 0x0e, 0x0a,
-0xe7, 0x16, 0x1f, 0x82, 0xf9, 0xfd, 0xeb, 0xc3,
-0xe2, 0x60, 0xfa, 0xc4, 0xfa, 0x50, 0x69, 0x1b,
-0xf4, 0x41, 0xf7, 0x54, 0x1b, 0x2b, 0x50, 0xe1,
-0x22, 0x71, 0x33, 0x67, 0x38, 0xc7, 0x09, 0x17,
-0xc1, 0xad, 0x5b, 0x43, 0xe2, 0xc8, 0xe4, 0xcf,
-0x04, 0x1c, 0x84, 0xc5, 0x8f, 0x94, 0x89, 0xf5,
-0x8f, 0xe4, 0x6d, 0x66, 0xab, 0xe1, 0xd6, 0x81,
-0x2c, 0x8d, 0x04, 0x95, 0x1d, 0xe9, 0x2a, 0xff,
-0xfa, 0x79, 0xb0, 0x1f, 0x1c, 0x3a, 0xf5, 0x91,
-0x93, 0xf0, 0x12, 0xb9, 0x55, 0xa7, 0x0d, 0xe4,
-0x5c, 0xe2, 0xfb, 0xaa, 0x30, 0x0d, 0x1e, 0x63,
-0xf9, 0x2e, 0x39, 0x42, 0x1e, 0xa7, 0xcf, 0xb1,
-0xfc, 0x10, 0x5d, 0x49, 0x9e, 0x86, 0x57, 0x58,
-0x7e, 0x14, 0x07, 0xef, 0xc2, 0xef, 0x9a, 0xbf,
-0x7e, 0x9a, 0xae, 0xcc, 0x8e, 0x26, 0xd6, 0xbf,
-0x5e, 0x5a, 0x0b, 0x4d, 0x9a, 0x53, 0xb7, 0xe4,
-0x2d, 0x4b, 0x63, 0x3b, 0x74, 0x5c, 0x9f, 0x72,
-0x92, 0xa5, 0xed, 0x08, 0x3a, 0x86, 0xe8, 0x6d,
-0xf0, 0xa9, 0xb6, 0x7d, 0xe3, 0x0c, 0x1f, 0xfe,
-0x17, 0x8f, 0x25, 0xf6, 0xe7, 0xf0, 0x94, 0x7a,
-0xfa, 0x3a, 0xb8, 0x99, 0x6d, 0x79, 0xd3, 0x1e,
-0xeb, 0x47, 0x1d, 0xdd, 0x5d, 0xd6, 0x17, 0xe4,
-0x2e, 0xdc, 0x0f, 0x6e, 0xd6, 0x15, 0x12, 0x87,
-0xe1, 0x0a, 0xcc, 0x60, 0xce, 0x50, 0xc1, 0x85,
-0xc4, 0xf3, 0xd4, 0x55, 0x87, 0xc8, 0x98, 0x5a,
-0xa6, 0xd8, 0x98, 0xff, 0x14, 0x8c, 0x41, 0x25,
-0xe0, 0xc6, 0x88, 0xc2, 0xa8, 0x50, 0x81, 0x83,
-0x9c, 0x51, 0x35, 0x76, 0xa5, 0xe6, 0x18, 0x4c,
-0xdc, 0x9f, 0x2a, 0xcf, 0x06, 0x0e, 0x40, 0x91,
-0x36, 0x29, 0x98, 0xf3, 0x0c, 0x6c, 0xa7, 0x2e,
-0xcd, 0xaa, 0x88, 0x85, 0x30, 0x0e, 0x6e, 0xcd,
-0x1a, 0x14, 0x87, 0xf2, 0x7a, 0x83, 0xc6, 0xa0,
-0x2f, 0xf1, 0x3c, 0x4c, 0xfa, 0x07, 0x68, 0xd1,
-0x7e, 0x78, 0x42, 0xde, 0x44, 0x9e, 0x81, 0xdd,
-0x60, 0xd7, 0xe8, 0x26, 0x9c, 0xbf, 0x1b, 0x88,
-0x46, 0xdb, 0xed, 0x1f, 0x40, 0x8b, 0x5e, 0xa4,
-0xd1, 0x20, 0x89, 0x26, 0xc4, 0x42, 0x79, 0x9a,
-0x04, 0x2d, 0xaf, 0xe3, 0x26, 0x09, 0x6a, 0xcb,
-0xa5, 0x27, 0xe1, 0x96, 0x5a, 0x3a, 0xe8, 0x9f,
-0xa3, 0xfd, 0x0e, 0x44, 0x6d, 0xe6, 0x31, 0x72,
-0x3e, 0xd4, 0xa2, 0xd9, 0xb5, 0xfa, 0xa0, 0xfd,
-0xf5, 0xc4, 0x7e, 0x50, 0x73, 0x25, 0xad, 0x05,
-0x1c, 0xda, 0x8d, 0x0a, 0xe9, 0x87, 0x5b, 0xb5,
-0x7c, 0x8d, 0xde, 0x4b, 0x72, 0xe1, 0x25, 0x2d,
-0xdf, 0x4b, 0xbd, 0xe4, 0x7f, 0x42, 0xa3, 0xe6,
-0xf0, 0x52, 0x85, 0xf4, 0x4d, 0x9e, 0xd8, 0x0f,
-0x2b, 0xad, 0x42, 0x47, 0x44, 0xb0, 0x83, 0x2d,
-0x54, 0x33, 0x0c, 0x4b, 0xa1, 0x1b, 0x9c, 0x4c,
-0x56, 0xf1, 0xc5, 0xbb, 0x21, 0x93, 0x89, 0xa3,
-0x24, 0x22, 0xb9, 0xf1, 0x8a, 0x78, 0x44, 0x9c,
-0xd8, 0x9f, 0xed, 0x69, 0x43, 0xec, 0xa7, 0x50,
-0xa9, 0x2d, 0x69, 0xc8, 0xd9, 0x09, 0xbb, 0x3d,
-0x95, 0x5e, 0xdb, 0x26, 0xf9, 0x19, 0x18, 0xd7,
-0xf8, 0x40, 0xfc, 0x00, 0xae, 0xd6, 0xfe, 0x4e,
-0xb3, 0x05, 0xc5, 0x33, 0xe9, 0x13, 0xfb, 0x21,
-0x6f, 0xca, 0xe7, 0xec, 0x28, 0xae, 0x86, 0x6d,
-0x50, 0xcc, 0x85, 0x71, 0x5f, 0xa9, 0x66, 0x1d,
-0x6c, 0xda, 0xe9, 0x38, 0x30, 0x7b, 0xde, 0x3d,
-0xeb, 0x8f, 0x89, 0x73, 0xd8, 0x61, 0xcd, 0x5d,
-0x6b, 0xf5, 0x8a, 0xe9, 0x89, 0xf3, 0x5b, 0xae,
-0x9c, 0x62, 0x01, 0xb0, 0x83, 0xcc, 0xec, 0x21,
-0x29, 0x90, 0x66, 0x57, 0xa8, 0xbf, 0x49, 0x85,
-0x80, 0xd6, 0xd1, 0xee, 0x58, 0x65, 0x51, 0x03,
-0x01, 0x4f, 0x99, 0x40, 0x99, 0x65, 0x5d, 0x62,
-0x3d, 0xeb, 0x60, 0x15, 0xb4, 0x08, 0x21, 0x4d,
-0x0e, 0xa6, 0x17, 0xc2, 0x86, 0xfb, 0x43, 0xde,
-0x3c, 0x85, 0x34, 0x4b, 0x8d, 0x3e, 0x47, 0x1d,
-0x55, 0xb2, 0xd3, 0xd4, 0x36, 0x9f, 0xaf, 0xce,
-0xa1, 0xcc, 0xc8, 0x4e, 0xc8, 0x9f, 0x76, 0xa9,
-0x33, 0xab, 0x45, 0xb1, 0x57, 0x2f, 0x0a, 0xe2,
-0xfa, 0x37, 0xe2, 0xfa, 0x3b, 0x82, 0x96, 0x4e,
-0xa1, 0x85, 0xd8, 0x35, 0x08, 0x92, 0x42, 0xc8,
-0x50, 0x0a, 0xf9, 0xfa, 0xaf, 0x4e, 0xec, 0x87,
-0x50, 0xda, 0x10, 0x3d, 0x50, 0xe7, 0xbe, 0x47,
-0xde, 0x64, 0xff, 0xba, 0x77, 0x1c, 0xba, 0xf1,
-0xfb, 0xe6, 0x74, 0xfa, 0x0f, 0xe4, 0xcf, 0xf3,
-0x91, 0x8d, 0x62, 0x21, 0x39, 0xa0, 0xbb, 0x35,
-0xa7, 0x52, 0xe3, 0x48, 0xc8, 0xcf, 0x88, 0xd0,
-0x09, 0xe3, 0xac, 0x92, 0x2f, 0xc2, 0x90, 0x3a,
-0x0e, 0x95, 0xcb, 0xe5, 0x60, 0x8d, 0x84, 0xfb,
-0xa1, 0xe2, 0x07, 0xd3, 0xb2, 0xc5, 0x7e, 0x8a,
-0x3f, 0xd5, 0xe3, 0x4f, 0x17, 0x12, 0xf2, 0x87,
-0x42, 0x08, 0x22, 0x3e, 0xb7, 0x62, 0x6b, 0x2e,
-0xb8, 0x1f, 0x4e, 0x80, 0x1b, 0xd6, 0xb2, 0xa6,
-0x7c, 0x88, 0x68, 0x6e, 0xc8, 0x6c, 0x16, 0x55,
-0x75, 0x8c, 0xcc, 0x03, 0x2b, 0x13, 0x2d, 0xd2,
-0xc4, 0xfe, 0x77, 0x4c, 0xe9, 0x82, 0xd5, 0x5a,
-0x47, 0xb0, 0x6d, 0x88, 0x5c, 0xef, 0x68, 0x25,
-0x6a, 0x23, 0x1d, 0xf1, 0x38, 0xa0, 0x55, 0x2a,
-0x62, 0x96, 0xae, 0xec, 0x72, 0x78, 0x19, 0x05,
-0x51, 0x20, 0x5a, 0xb3, 0x30, 0xb1, 0x1f, 0x1c,
-0xd2, 0x83, 0x10, 0x64, 0x8e, 0x63, 0xf2, 0x3f,
-0x7b, 0x96, 0xc0, 0xe3, 0x50, 0x18, 0xbd, 0x7e,
-0x0e, 0x59, 0x47, 0x7f, 0x05, 0x85, 0xba, 0xa5,
-0x9c, 0x58, 0xaa, 0x51, 0x50, 0xeb, 0x54, 0x25,
-0x0b, 0x13, 0xf2, 0x87, 0x29, 0x7f, 0xa2, 0x4f,
-0x6b, 0x33, 0x75, 0x79, 0xd0, 0x52, 0x01, 0x6b,
-0xa0, 0xd0, 0x9b, 0xf1, 0x08, 0xd9, 0xac, 0x3e,
-0xe1, 0x2e, 0xd6, 0x2d, 0x0d, 0xfe, 0x3c, 0x78,
-0x45, 0x7c, 0x20, 0x42, 0x7d, 0x30, 0x3c, 0xb1,
-0x7d, 0x20, 0x10, 0xf8, 0x27, 0x72, 0x9c, 0xdd,
-0x76, 0xda, 0xb6, 0xb4, 0xe6, 0xbb, 0xf0, 0xde,
-0xf0, 0x2f, 0xa2, 0xc5, 0xe5, 0xf2, 0x3a, 0xf2,
-0x7b, 0xf6, 0x5c, 0x64, 0x4d, 0xb9, 0x3c, 0x0d,
-0xae, 0xb2, 0xaa, 0x31, 0x67, 0x3d, 0xfc, 0x30,
-0x21, 0x7f, 0x68, 0xda, 0x33, 0xf8, 0xee, 0x65,
-0xed, 0x36, 0xc5, 0xb6, 0x4d, 0xba, 0xa8, 0xcd,
-0xd3, 0xd7, 0x85, 0xc5, 0x15, 0xf0, 0x31, 0xb8,
-0xfb, 0x32, 0xc3, 0xe2, 0x08, 0xdd, 0x0b, 0xee,
-0xc1, 0x25, 0x21, 0xd1, 0x33, 0x69, 0xe2, 0x7d,
-0x41, 0x7a, 0x4e, 0x3b, 0xc8, 0xaa, 0x42, 0xb6,
-0x88, 0xfc, 0x36, 0xfd, 0x4b, 0x70, 0x7e, 0x74,
-0xc9, 0xd8, 0x8d, 0x95, 0xd2, 0xd1, 0xbe, 0xaa,
-0xd3, 0x4b, 0x7a, 0xc4, 0x32, 0xed, 0xa7, 0x6c,
-0xc7, 0xa8, 0xb5, 0x3e, 0x87, 0xe3, 0x8d, 0xd8,
-0x5f, 0x6b, 0xde, 0x2f, 0x61, 0x75, 0xb8, 0x58,
-0x97, 0xbf, 0x23, 0xde, 0xe7, 0x59, 0xe3, 0xca,
-0x8f, 0xc8, 0x63, 0xe2, 0x66, 0xeb, 0x9a, 0x50,
-0x81, 0x9e, 0xf1, 0x28, 0xe4, 0xc2, 0x0e, 0x96,
-0xaf, 0xd3, 0x1f, 0x0a, 0x2f, 0x24, 0xd6, 0x13,
-0xe0, 0xe9, 0x60, 0xb3, 0x5a, 0xcc, 0xe4, 0x6f,
-0x92, 0x7d, 0xf0, 0x9c, 0x30, 0x53, 0xbf, 0xf1,
-0x11, 0xb2, 0x18, 0xd6, 0xa8, 0xf8, 0xbe, 0x6e,
-0xa2, 0x08, 0x2f, 0xc1, 0x74, 0x9d, 0x2e, 0x4b,
-0xd7, 0x12, 0xf2, 0x47, 0x95, 0xd6, 0x4a, 0x8d,
-0xe0, 0xec, 0x94, 0x15, 0xff, 0x61, 0xad, 0x0d,
-0xd4, 0x08, 0x4a, 0xef, 0xc7, 0xa0, 0xa9, 0x96,
-0x72, 0x41, 0x27, 0xab, 0x3b, 0xa0, 0xb0, 0xdf,
-0xa1, 0x5a, 0x22, 0xd2, 0xc4, 0xf9, 0xed, 0x9a,
-0x32, 0x42, 0x0e, 0x36, 0x57, 0x8e, 0xda, 0x94,
-0x82, 0xd5, 0xf0, 0x2f, 0x30, 0x6f, 0xd0, 0xb6,
-0x4f, 0xbc, 0x0b, 0x8e, 0xde, 0xfe, 0xf7, 0xa8,
-0x8f, 0x64, 0x07, 0xdb, 0xc1, 0xe6, 0x72, 0x41,
-0xfa, 0xc3, 0xc4, 0x7e, 0x63, 0xc2, 0x36, 0xe5,
-0x82, 0x77, 0x9a, 0xb6, 0x7e, 0x93, 0xbc, 0x02,
-0xc5, 0x6c, 0xa5, 0x8e, 0xf3, 0x47, 0xe8, 0x45,
-0x69, 0x86, 0x6e, 0x0b, 0xa3, 0xbc, 0xba, 0xd8,
-0x38, 0x4f, 0xb7, 0x85, 0xc4, 0x50, 0x42, 0xfe,
-0xe4, 0x2b, 0x3b, 0xe1, 0x12, 0xec, 0x3d, 0x6d,
-0x7b, 0xb3, 0xe0, 0x27, 0xea, 0x21, 0xd8, 0x11,
-0x91, 0x47, 0xc5, 0x9f, 0x84, 0xd6, 0xd0, 0xb9,
-0xbd, 0xd6, 0x73, 0xe2, 0x15, 0xf8, 0x29, 0x94,
-0xf6, 0x66, 0x45, 0x45, 0xbd, 0x76, 0x62, 0xfe,
-0x16, 0x69, 0xb9, 0x12, 0xd6, 0xf1, 0x7c, 0x3d,
-0x45, 0xfe, 0x25, 0x70, 0x08, 0xec, 0xa7, 0x6c,
-0xa8, 0xb6, 0x50, 0x53, 0xd8, 0xf5, 0xcc, 0x1e,
-0x72, 0x46, 0xda, 0x3d, 0x50, 0xa4, 0xd3, 0x10,
-0x89, 0x2a, 0x4a, 0xe2, 0x79, 0x0a, 0x61, 0x4f,
-0xc0, 0x1e, 0xb8, 0x31, 0x7c, 0x5d, 0x09, 0xf0,
-0x69, 0x8b, 0x36, 0x93, 0x6d, 0xf0, 0x22, 0xa8,
-0x7a, 0x46, 0xd8, 0x3e, 0xc4, 0x76, 0x37, 0x3a,
-0x7a, 0x2d, 0x21, 0x35, 0x9a, 0xd8, 0x6f, 0x54,
-0x92, 0xe8, 0x1e, 0xb5, 0x5e, 0xbb, 0x31, 0x4c,
-0xd6, 0x92, 0xc7, 0x71, 0xda, 0x8d, 0xc4, 0xb2,
-0x16, 0xb6, 0x42, 0x48, 0xbf, 0xd3, 0x8d, 0x12,
-0x69, 0xaf, 0xaf, 0x5e, 0xaf, 0x53, 0xb5, 0x3e,
-0x21, 0xb1, 0xfc, 0xd6, 0xa9, 0x52, 0x8f, 0x1d,
-0xe5, 0x73, 0x58, 0x74, 0xd2, 0xf5, 0x82, 0xbb,
-0xd7, 0xb6, 0xb1, 0xad, 0x93, 0xfc, 0x19, 0x35,
-0x94, 0x14, 0x46, 0xc1, 0x3b, 0x5e, 0x77, 0x9b,
-0x9e, 0x15, 0x22, 0x7a, 0x42, 0xfe, 0x3c, 0x7b,
-0xd3, 0x25, 0xed, 0x92, 0x32, 0x17, 0x6c, 0xb3,
-0x73, 0x2e, 0xc1, 0x5f, 0xa0, 0x4a, 0xcf, 0x0a,
-0x8a, 0x3f, 0x81, 0x77, 0xb4, 0xf9, 0xba, 0xed,
-0xb8, 0x38, 0x8a, 0x62, 0xa4, 0x0a, 0x55, 0xdb,
-0xd7, 0xea, 0x13, 0xf2, 0x47, 0x9f, 0x72, 0x49,
-0xbf, 0x42, 0x4b, 0x07, 0x6c, 0xdb, 0xc5, 0x4b,
-0x7e, 0x04, 0x42, 0x51, 0xdb, 0x58, 0xc1, 0x15,
-0xb8, 0xaa, 0xe2, 0xa0, 0x4b, 0xfc, 0xae, 0x77,
-0x40, 0xd9, 0xa5, 0x5b, 0xe7, 0x7c, 0xaf, 0x21,
-0xb1, 0x7f, 0x58, 0xde, 0x27, 0xf0, 0x91, 0x66,
-0x3f, 0x2c, 0x7f, 0x41, 0xae, 0x68, 0xad, 0x60,
-0x8f, 0xca, 0x3d, 0xe4, 0x53, 0x78, 0x25, 0x58,
-0x14, 0x95, 0x43, 0x7e, 0x27, 0x8b, 0xa8, 0xf6,
-0x68, 0x66, 0x30, 0x5b, 0x4d, 0xca, 0xff, 0xb4,
-0xc3, 0x28, 0x2b, 0x55, 0x5d, 0x9e, 0x6d, 0x1f,
-0x00, 0x3f, 0x1f, 0xb8, 0xc8, 0x00, 0xec, 0x40,
-0x7d, 0x27, 0xdb, 0xc9, 0x62, 0xf6, 0x94, 0x5a,
-0xa2, 0xd7, 0xd9, 0x09, 0x49, 0xdc, 0x5f, 0x4f,
-0xdb, 0x46, 0x5f, 0xc0, 0x65, 0x6c, 0x0b, 0x93,
-0x11, 0xf0, 0x07, 0x0c, 0xb4, 0x30, 0x02, 0x7b,
-0xa1, 0x48, 0x97, 0x1d, 0xab, 0x8b, 0xa1, 0x9d,
-0xbd, 0x10, 0xba, 0x93, 0x59, 0x5c, 0x89, 0xfd,
-0x00, 0xb9, 0xdb, 0xe0, 0x5c, 0x5e, 0x37, 0xff,
-0xfa, 0x23, 0x88, 0x4f, 0xe2, 0x83, 0x8b, 0x80,
-0xdb, 0x60, 0x9b, 0xf8, 0x5f, 0x73, 0x23, 0xac,
-0xd2, 0x65, 0xdd, 0xd9, 0xa4, 0x24, 0xe4, 0xcf,
-0x29, 0xc4, 0x7b, 0x57, 0x48, 0xa5, 0x7e, 0xf3,
-0x68, 0xc1, 0x25, 0xd4, 0x6e, 0x55, 0xfa, 0xfa,
-0x51, 0xf1, 0x92, 0x72, 0x95, 0x2f, 0x4b, 0x54,
-0xbe, 0xe0, 0xfd, 0x98, 0xe2, 0xd2, 0x0d, 0x89,
-0x63, 0x09, 0xf9, 0xa3, 0x23, 0xfe, 0xb9, 0x40,
-0xf7, 0xa0, 0x12, 0x97, 0x9d, 0x70, 0x10, 0xd5,
-0xba, 0x71, 0xff, 0xcf, 0xf8, 0xc6, 0xeb, 0x14,
-0xdf, 0x87, 0xb7, 0x01, 0xe5, 0xcf, 0x46, 0xd1,
-0x95, 0x38, 0x2f, 0x07, 0xd3, 0x2a, 0x60, 0x0f,
-0x14, 0xf4, 0xd2, 0x51, 0x32, 0x15, 0xf8, 0x8b,
-0x18, 0xcf, 0xff, 0x0a, 0x94, 0xe8, 0xf2, 0x8b,
-0x64, 0x0b, 0x34, 0xf9, 0x10, 0x41, 0xfa, 0x6b,
-0x1e, 0x4e, 0xec, 0x87, 0xd3, 0x69, 0x8b, 0x71,
-0x7d, 0xba, 0x74, 0x84, 0x3d, 0x56, 0x5c, 0x9f,
-0xd0, 0xc4, 0xfa, 0x38, 0x75, 0x19, 0x2c, 0x5d,
-0x69, 0x41, 0xdd, 0xd1, 0x49, 0xc3, 0x9e, 0xf2,
-0x84, 0xfc, 0xf1, 0x09, 0xd3, 0x60, 0x7f, 0x28,
-0x7f, 0x24, 0x63, 0x25, 0xb1, 0xea, 0xcf, 0xb2,
-0xfc, 0x61, 0x99, 0xc3, 0x80, 0x5d, 0xac, 0x38,
-0x2a, 0xd7, 0x59, 0xf6, 0x6a, 0xcd, 0xac, 0x20,
-0x4a, 0x7f, 0x68, 0x5f, 0x9a, 0xc4, 0x3f, 0xd4,
-0xaa, 0x9d, 0x0b, 0x95, 0x0f, 0x67, 0xee, 0x11,
-0xb3, 0xf0, 0xf9, 0x5d, 0x51, 0x44, 0x3b, 0x03,
-0xf8, 0xfc, 0x78, 0xff, 0x2e, 0x31, 0xa0, 0x0d,
-0x42, 0x39, 0xb3, 0xde, 0x20, 0x27, 0x8d, 0x0a,
-0xc4, 0x3f, 0xea, 0x79, 0xa8, 0xea, 0x5f, 0x77,
-0x4e, 0xbc, 0x3c, 0x9b, 0xaf, 0xcf, 0x24, 0x5c,
-0x1f, 0xed, 0x2a, 0xc5, 0xf5, 0x79, 0x7f, 0x51,
-0x8f, 0x36, 0x06, 0x0b, 0xd8, 0x2c, 0x5d, 0x0c,
-0x26, 0xf0, 0x4f, 0x57, 0xda, 0x25, 0x8e, 0x16,
-0xfa, 0xad, 0x2f, 0xb7, 0x39, 0xd9, 0x85, 0x89,
-0xf5, 0xb9, 0xe8, 0xc0, 0xf5, 0x61, 0xa2, 0x43,
-0x42, 0x68, 0xc4, 0xf1, 0x4f, 0x51, 0x42, 0x7f,
-0x45, 0x26, 0x6f, 0x46, 0xb4, 0x93, 0x3f, 0x4c,
-0x1f, 0x21, 0x53, 0xd9, 0xcb, 0x30, 0x53, 0xcf,
-0x6a, 0x40, 0xd8, 0xb3, 0x0b, 0xe5, 0x89, 0xac,
-0x89, 0x2b, 0xe1, 0x8f, 0xb0, 0x85, 0x65, 0x46,
-0x89, 0x3b, 0xf1, 0x7d, 0x75, 0x78, 0x9a, 0xed,
-0x62, 0xd1, 0x28, 0x7d, 0xd4, 0x33, 0x2d, 0xc0,
-0x61, 0x4f, 0xf2, 0x7d, 0xeb, 0x2d, 0x37, 0xc0,
-0xba, 0x80, 0x7a, 0x9a, 0x2e, 0x45, 0x9b, 0x65,
-0x62, 0xfd, 0xeb, 0x72, 0x47, 0x70, 0x3d, 0x7d,
-0x3a, 0x0d, 0x5f, 0x67, 0x85, 0xed, 0xb8, 0xcd,
-0x2c, 0x89, 0xf5, 0x74, 0xf9, 0xeb, 0xb4, 0x5f,
-0x1d, 0x50, 0x07, 0x33, 0xac, 0xad, 0xd9, 0x26,
-0xfc, 0x33, 0x0c, 0x2f, 0xbb, 0xba, 0x99, 0x35,
-0x64, 0x71, 0xc0, 0x15, 0x0d, 0x0f, 0x1a, 0x87,
-0x3d, 0x88, 0x87, 0x99, 0x6d, 0x48, 0x9e, 0x9f,
-0x7d, 0x44, 0x9f, 0x1d, 0xb2, 0x7e, 0x4a, 0xe6,
-0x25, 0xf1, 0x0f, 0xea, 0x23, 0x0e, 0x72, 0x66,
-0xb1, 0x49, 0x51, 0x18, 0xb3, 0x54, 0x42, 0x96,
-0x31, 0x10, 0x38, 0xec, 0x91, 0x4f, 0xa9, 0x63,
-0xda, 0x7e, 0x82, 0x2f, 0x6e, 0xc6, 0x3f, 0x43,
-0x70, 0x00, 0x2a, 0x38, 0xc8, 0x91, 0xc8, 0x01,
-0xae, 0xe8, 0x51, 0xf1, 0xc1, 0x5b, 0x88, 0x10,
-0x6c, 0xed, 0x08, 0x6c, 0x3e, 0xd4, 0xbf, 0xd0,
-0xac, 0x93, 0x45, 0x92, 0x78, 0x9e, 0x90, 0xb4,
-0x1c, 0x41, 0x0e, 0xc2, 0x9e, 0xa0, 0xa5, 0x90,
-0x72, 0xfd, 0x2b, 0x07, 0xc9, 0x10, 0xe2, 0x1f,
-0x34, 0x04, 0x14, 0x32, 0x89, 0x19, 0x3f, 0x6d,
-0x12, 0x7d, 0x26, 0xfc, 0x53, 0x08, 0x2d, 0xf7,
-0x96, 0xe0, 0x7c, 0x4f, 0x21, 0x3c, 0x29, 0xf0,
-0xf9, 0xf6, 0xce, 0xd8, 0xfc, 0x0d, 0x96, 0x42,
-0xed, 0x79, 0xcd, 0xae, 0x3b, 0x82, 0xfe, 0x74,
-0x93, 0xfc, 0x41, 0x3c, 0xc0, 0x41, 0x4e, 0x2e,
-0x91, 0xe0, 0x7a, 0x4d, 0xd5, 0x32, 0x38, 0x10,
-0xda, 0x0e, 0x4e, 0x0d, 0x11, 0xd7, 0x74, 0xc4,
-0x3f, 0x78, 0xff, 0x5c, 0xe2, 0x49, 0xc8, 0x9f,
-0x76, 0xaa, 0x42, 0x04, 0xdf, 0xd7, 0x0a, 0x35,
-0x2a, 0xea, 0xdf, 0xee, 0x18, 0xde, 0x3b, 0x01,
-0x25, 0x60, 0x03, 0x51, 0x45, 0x45, 0x57, 0x26,
-0x2c, 0x66, 0x62, 0x49, 0x12, 0xff, 0xdc, 0xf4,
-0xc1, 0xa4, 0xcb, 0x5a, 0x99, 0xf7, 0x39, 0x8e,
-0x76, 0x3e, 0xe0, 0xaf, 0x19, 0x2c, 0x18, 0xe2,
-0xf8, 0x87, 0x23, 0x9c, 0xf3, 0x70, 0x59, 0xab,
-0xf2, 0xce, 0x3a, 0x3e, 0x29, 0x89, 0x7f, 0x38,
-0x5e, 0xfa, 0xdc, 0xe1, 0x5e, 0x6c, 0x0d, 0xe6,
-0xcc, 0xa1, 0x17, 0xb5, 0xf8, 0xfa, 0x8c, 0xd3,
-0x9f, 0x69, 0xb6, 0x37, 0x27, 0xcd, 0x81, 0x4f,
-0x1c, 0xbb, 0xea, 0xac, 0xc7, 0x9e, 0x98, 0x91,
-0x38, 0xbf, 0x79, 0x4a, 0x34, 0x14, 0x29, 0xec,
-0xb0, 0x52, 0xa9, 0xed, 0x7e, 0x3c, 0x68, 0x1d,
-0x08, 0x84, 0x50, 0x1a, 0xf7, 0xe0, 0x13, 0xca,
-0x4c, 0xf0, 0x85, 0x02, 0xaa, 0x5b, 0xb2, 0x3e,
-0x4b, 0xb2, 0xd2, 0x13, 0x56, 0x6c, 0x5a, 0x7f,
-0x64, 0x8b, 0x23, 0x5a, 0x67, 0xc9, 0x29, 0x4a,
-0x83, 0xdd, 0xaa, 0xaa, 0x59, 0x12, 0xef, 0x8b,
-0x78, 0x86, 0x3d, 0xef, 0x98, 0xa1, 0x51, 0xc5,
-0x4f, 0x84, 0x89, 0xe7, 0xcf, 0x9b, 0xd2, 0x09,
-0x6d, 0x94, 0xaf, 0x3f, 0x59, 0x6e, 0xe0, 0xcf,
-0xf8, 0xfa, 0x17, 0xf1, 0xc1, 0x72, 0x68, 0x53,
-0xed, 0xb5, 0x75, 0x41, 0xcf, 0x1d, 0x09, 0xf9,
-0xd0, 0xa1, 0x74, 0x0a, 0x1f, 0x22, 0x88, 0x75,
-0x06, 0x51, 0x11, 0x6c, 0xd7, 0x89, 0x96, 0x65,
-0x3c, 0x3f, 0xae, 0xbf, 0xed, 0x29, 0x5c, 0xe1,
-0xe7, 0xa1, 0xcc, 0xe3, 0xfc, 0x75, 0x86, 0x23,
-0x21, 0x1f, 0x02, 0xd0, 0x09, 0xa7, 0xd8, 0x3e,
-0xc4, 0xc3, 0x22, 0x02, 0x21, 0xb5, 0x32, 0xfe,
-0xbe, 0x7c, 0xa1, 0x36, 0x35, 0xfd, 0x19, 0xc6,
-0x03, 0xf3, 0xee, 0xcf, 0x0a, 0x36, 0xbd, 0x90,
-0xd8, 0xcf, 0x45, 0x4a, 0x88, 0x8e, 0xe9, 0x6e,
-0xbe, 0xcd, 0x70, 0xe3, 0x69, 0xf1, 0xf5, 0xe7,
-0x3b, 0xf0, 0xee, 0x66, 0xd1, 0xd7, 0x3c, 0x0c,
-0x6e, 0xc5, 0xca, 0x72, 0x0e, 0x26, 0xf1, 0x4f,
-0xad, 0x03, 0x3e, 0x0d, 0xd8, 0x59, 0x5d, 0x48,
-0xac, 0xc7, 0xf5, 0xb1, 0x33, 0x39, 0x44, 0x86,
-0x71, 0xf0, 0x33, 0x26, 0xaf, 0xf0, 0xf4, 0xc0,
-0xea, 0x5a, 0x95, 0x59, 0x86, 0xc4, 0x83, 0x89,
-0xf3, 0xee, 0x48, 0x5b, 0x21, 0xec, 0xe0, 0x68,
-0x07, 0xf5, 0x91, 0x62, 0x88, 0x65, 0xe3, 0xbc,
-0x88, 0x4e, 0x7e, 0x70, 0xee, 0xd2, 0xb6, 0xb2,
-0x68, 0x3f, 0xdd, 0x77, 0xcf, 0xc1, 0x84, 0xfc,
-0xc9, 0x17, 0xa6, 0x0a, 0x2f, 0x93, 0xe9, 0x11,
-0x34, 0x52, 0x36, 0xe3, 0xb1, 0x45, 0x3c, 0x60,
-0x9c, 0x5f, 0x3c, 0xc8, 0x72, 0x83, 0x7f, 0x13,
-0xac, 0xd1, 0x0a, 0xb4, 0xa7, 0x1a, 0xfc, 0x91,
-0x24, 0xbe, 0xa2, 0x37, 0x07, 0xbe, 0x64, 0xbb,
-0x3e, 0xcc, 0xfa, 0x19, 0x9a, 0x2d, 0x57, 0xdf,
-0xbc, 0x2d, 0xba, 0x7e, 0xa5, 0xf8, 0x2e, 0x7c,
-0x89, 0xe7, 0x37, 0x6b, 0x4c, 0x7c, 0x94, 0xfc,
-0x85, 0xcd, 0x8e, 0x3a, 0xeb, 0xc5, 0x83, 0x49,
-0xfc, 0x73, 0xe7, 0x6f, 0xe1, 0x23, 0x98, 0xd7,
-0x6f, 0xeb, 0x7e, 0x15, 0xf5, 0xbb, 0x56, 0x66,
-0xc8, 0x13, 0x6a, 0x28, 0xfa, 0xb0, 0x38, 0x44,
-0x2e, 0xe0, 0x51, 0xc2, 0x13, 0xea, 0x4f, 0xc8,
-0x1f, 0x6d, 0xca, 0x15, 0xf8, 0x04, 0xd5, 0x96,
-0x75, 0x4c, 0xac, 0x60, 0x57, 0x71, 0x90, 0x39,
-0x86, 0x6a, 0xfd, 0xa2, 0xa1, 0xc8, 0xc4, 0xfd,
-0x70, 0xb4, 0x71, 0x76, 0xd4, 0xda, 0x83, 0x5f,
-0x77, 0x62, 0xff, 0x74, 0xa1, 0xfc, 0x61, 0x79,
-0xaa, 0xee, 0x68, 0x58, 0x68, 0xc5, 0xc7, 0x56,
-0x87, 0x65, 0x7c, 0x7e, 0xba, 0x8b, 0xdd, 0xaa,
-0xcb, 0xfa, 0xe4, 0x47, 0x1a, 0xdf, 0xa3, 0xb7,
-0xd6, 0x65, 0xd6, 0xdf, 0xf2, 0x42, 0xe2, 0xfb,
-0x06, 0x61, 0x33, 0x3c, 0x07, 0xf9, 0xfd, 0x28,
-0x9f, 0xa7, 0x6a, 0xbb, 0x00, 0xf1, 0x52, 0xec,
-0x7d, 0xf3, 0xf1, 0x7d, 0xc9, 0x26, 0xba, 0x09,
-0xf1, 0xcf, 0xf5, 0x2e, 0x7b, 0x33, 0x9b, 0x58,
-0x7f, 0x9f, 0x34, 0x00, 0xad, 0xb5, 0x45, 0x31,
-0x79, 0xbe, 0x23, 0x98, 0xd0, 0x77, 0x85, 0xfa,
-0xa2, 0x19, 0x44, 0xa5, 0x7e, 0xad, 0xd0, 0x77,
-0x7d, 0x21, 0x69, 0x4f, 0x9c, 0x77, 0x47, 0xda,
-0x3e, 0xf8, 0xa8, 0xbf, 0x54, 0xcf, 0x1c, 0x45,
-0xeb, 0x78, 0x2e, 0x74, 0x4c, 0xe8, 0x2f, 0x2e,
-0x48, 0x49, 0x17, 0xd9, 0xe8, 0x9d, 0x73, 0x36,
-0xb3, 0x67, 0x92, 0x45, 0x4a, 0x3e, 0xcf, 0x08,
-0x5c, 0xc0, 0x65, 0xc9, 0x0a, 0xe7, 0x8c, 0xc4,
-0xf0, 0x4f, 0x58, 0x48, 0xae, 0x8f, 0x84, 0x83,
-0xd7, 0x8f, 0x36, 0xe1, 0x56, 0x9c, 0xb8, 0xff,
-0x06, 0xb6, 0x82, 0x5e, 0xa4, 0xdd, 0x68, 0x54,
-0x7a, 0x2a, 0x50, 0x0d, 0xa1, 0x61, 0x8b, 0xf2,
-0x1c, 0xff, 0xe1, 0xcd, 0xba, 0xed, 0xbc, 0x5c,
-0x9e, 0xf6, 0x29, 0xda, 0xb3, 0x74, 0x54, 0x8c,
-0xd6, 0x4e, 0xc8, 0x93, 0xde, 0xdc, 0x15, 0x7c,
-0xdb, 0xe8, 0x8e, 0x30, 0xc2, 0x98, 0xbd, 0x90,
-0xd0, 0xbf, 0x0f, 0xea, 0x72, 0x8f, 0xfd, 0x39,
-0xb5, 0x95, 0xbd, 0xa0, 0x77, 0xb1, 0x82, 0x21,
-0x2d, 0x81, 0x7f, 0xd2, 0x9c, 0xfc, 0x98, 0xf4,
-0xde, 0x70, 0xcd, 0x7c, 0xd4, 0x77, 0x0a, 0xf9,
-0x07, 0x61, 0x6f, 0xe3, 0x0b, 0xda, 0x0d, 0xdb,
-0x57, 0x47, 0x13, 0xfb, 0x87, 0x4a, 0x56, 0x08,
-0x23, 0x0c, 0xb0, 0x70, 0x58, 0xb8, 0x17, 0x42,
-0x6f, 0xc5, 0xd6, 0x07, 0x61, 0xb6, 0x2c, 0x10,
-0x26, 0xb5, 0xe0, 0x41, 0xb3, 0xa8, 0xa4, 0x2f,
-0x6d, 0x62, 0x3f, 0xb0, 0x0c, 0xbe, 0x0d, 0xdc,
-0xfa, 0xdd, 0x67, 0x0b, 0x7e, 0x43, 0xbf, 0x04,
-0xf7, 0xdb, 0x71, 0xfd, 0x82, 0xf7, 0x0f, 0x8a,
-0xcb, 0xa5, 0x31, 0x98, 0xa7, 0x65, 0x3d, 0xd1,
-0x94, 0xb4, 0x07, 0x43, 0x99, 0xa8, 0xd6, 0x9d,
-0xaf, 0xf4, 0xdd, 0x85, 0xaf, 0xc9, 0xae, 0x42,
-0x65, 0xc4, 0x78, 0x5f, 0x43, 0xbf, 0xa3, 0x2a,
-0x23, 0x97, 0xa0, 0xaa, 0xfa, 0xae, 0x3e, 0xb1,
-0x2b, 0x2d, 0x89, 0x37, 0x46, 0xd8, 0x21, 0x1f,
-0x82, 0xcc, 0x73, 0xe2, 0xc9, 0x8e, 0xa3, 0xf6,
-0xf9, 0xf8, 0x21, 0xc4, 0x8a, 0xd0, 0x51, 0x75,
-0x7e, 0x24, 0xb3, 0xbb, 0x60, 0x5f, 0x33, 0x02,
-0x21, 0x7d, 0xed, 0x69, 0x03, 0x38, 0xc5, 0xe7,
-0x2b, 0xa7, 0xb4, 0xd6, 0x06, 0xfb, 0x1c, 0xba,
-0x2f, 0x67, 0x16, 0xb4, 0x29, 0x68, 0x7f, 0xfd,
-0xda, 0xf3, 0x75, 0xe8, 0xca, 0xb5, 0x0f, 0xd2,
-0xed, 0x24, 0xa4, 0x7d, 0x18, 0xb4, 0x9f, 0xb5,
-0x6c, 0x23, 0xa3, 0x89, 0xf5, 0x8f, 0xa4, 0x0d,
-0x90, 0x46, 0xfc, 0xfa, 0x01, 0x89, 0x04, 0x50,
-0x5a, 0x39, 0x06, 0xf1, 0x7d, 0xad, 0x92, 0x48,
-0x0a, 0x07, 0xa9, 0xb1, 0x43, 0x88, 0xaa, 0xd4,
-0x4d, 0x4e, 0x37, 0xf9, 0x7f, 0x26, 0x77, 0x49,
-0x68, 0xdf, 0x11, 0xca, 0xfa, 0xba, 0xd4, 0x17,
-0xa8, 0x9d, 0x58, 0x82, 0x7e, 0x14, 0xe3, 0x60,
-0xef, 0xa3, 0xe1, 0xec, 0x90, 0xf0, 0x3c, 0xb5,
-0x03, 0x09, 0x92, 0xa4, 0xff, 0xa7, 0x76, 0xca,
-0x27, 0x70, 0x08, 0x5e, 0x1e, 0x74, 0xce, 0x11,
-0x7f, 0x23, 0xbd, 0xef, 0x41, 0xfc, 0xbc, 0x53,
-0x2e, 0x92, 0x0e, 0xc1, 0x05, 0x65, 0xed, 0xf6,
-0xad, 0xbf, 0x65, 0x17, 0xab, 0xdd, 0xbd, 0xd6,
-0xd0, 0xa4, 0xc1, 0x84, 0xfc, 0x0c, 0x09, 0x61,
-0xbe, 0x6d, 0xd8, 0x92, 0xb0, 0xf8, 0x5d, 0xff,
-0x3b, 0xa1, 0x4a, 0x76, 0x57, 0x58, 0xec, 0x53,
-0x2e, 0xc0, 0x65, 0x98, 0x15, 0x2e, 0x38, 0x5d,
-0xfb, 0xb1, 0x54, 0xd1, 0x67, 0x0b, 0xe1, 0xd6,
-0x9a, 0xb8, 0xff, 0xa0, 0xf2, 0x18, 0xbc, 0x2f,
-0x95, 0x9d, 0xb0, 0x76, 0x4e, 0x9a, 0x89, 0xf8,
-0xca, 0x35, 0x68, 0x9d, 0x23, 0x3e, 0x48, 0x0e,
-0x41, 0x59, 0x30, 0xd3, 0xd5, 0xe4, 0x94, 0x3e,
-0xbe, 0xdf, 0xad, 0xaf, 0x0d, 0x17, 0x84, 0x13,
-0xf2, 0x27, 0x92, 0xe6, 0x60, 0x6d, 0x01, 0x35,
-0x80, 0x20, 0xd9, 0x01, 0x6f, 0x7b, 0xed, 0x3d,
-0x81, 0x30, 0x9a, 0x8d, 0x2f, 0x7e, 0xd3, 0xce,
-0x68, 0x98, 0xe4, 0x4b, 0x4d, 0xba, 0xbd, 0x97,
-0x76, 0x93, 0xb2, 0x84, 0x7c, 0x88, 0x22, 0xfe,
-0xd9, 0xaa, 0xaa, 0x83, 0x68, 0x6d, 0x49, 0x6a,
-0x23, 0x38, 0x22, 0xf8, 0xf5, 0x17, 0xc3, 0x8b,
-0x4c, 0xd5, 0x5b, 0x80, 0x64, 0x0d, 0x76, 0xf7,
-0xab, 0x9f, 0x5b, 0x54, 0xbf, 0xc9, 0xff, 0x23,
-0xa4, 0x6b, 0xab, 0x9f, 0xb9, 0xbf, 0x3e, 0xb0,
-0x92, 0x7c, 0x1b, 0x7e, 0xc1, 0xf2, 0x7d, 0x96,
-0x85, 0xf6, 0x69, 0xd0, 0xd9, 0xae, 0x46, 0x69,
-0x9d, 0x65, 0x1a, 0xec, 0x6c, 0x37, 0x1c, 0x41,
-0x3f, 0x31, 0xe1, 0x9f, 0xac, 0xe0, 0xa9, 0x50,
-0x58, 0x2f, 0xc9, 0x6b, 0xb3, 0xb2, 0x5e, 0xe8,
-0xd1, 0x4b, 0x1c, 0xe2, 0x62, 0x78, 0x35, 0xbc,
-0x53, 0xcf, 0xcc, 0x93, 0xad, 0xec, 0xb3, 0x70,
-0x18, 0x4a, 0xf2, 0x84, 0x63, 0x13, 0xdb, 0x0d,
-0xb4, 0xcc, 0x7d, 0xb9, 0x97, 0x94, 0xf9, 0x75,
-0xb6, 0x37, 0x6b, 0xf6, 0xc1, 0x65, 0xa5, 0xaa,
-0x36, 0x53, 0xc7, 0xfd, 0xf3, 0x27, 0xf8, 0x79,
-0xbf, 0xed, 0x4d, 0x1c, 0x1c, 0x86, 0x2a, 0x29,
-0xf3, 0x44, 0x0a, 0xfe, 0x19, 0x81, 0x8f, 0x05,
-0xbe, 0x08, 0x39, 0x85, 0xca, 0x21, 0xee, 0xf6,
-0x09, 0x17, 0xfc, 0x10, 0xbf, 0x88, 0x5b, 0xcb,
-0x0c, 0x89, 0x88, 0x18, 0x99, 0x5b, 0xc7, 0xc1,
-0x47, 0x26, 0xfc, 0x83, 0x42, 0x12, 0xb8, 0xdb,
-0x87, 0x4a, 0xd0, 0x44, 0x0c, 0xff, 0x4f, 0x00,
-0x9e, 0x05, 0x87, 0x96, 0xe9, 0x43, 0xc4, 0xe8,
-0x17, 0x0c, 0x47, 0xd0, 0xb9, 0xc4, 0xfa, 0x33,
-0xf8, 0x2d, 0x3c, 0xc7, 0x1a, 0xb9, 0xb7, 0x67,
-0x1a, 0x3c, 0xc1, 0xa6, 0xc7, 0x06, 0x5b, 0x63,
-0xfe, 0x9f, 0xbb, 0x61, 0x0d, 0x0a, 0x52, 0x84,
-0x82, 0x51, 0x13, 0xfe, 0x19, 0x80, 0xb6, 0xa0,
-0x3a, 0x44, 0x6f, 0xf3, 0x58, 0xe1, 0x57, 0xc1,
-0xc2, 0x21, 0x5a, 0x4e, 0x1e, 0x53, 0xb7, 0x06,
-0x1d, 0x7d, 0x19, 0xbb, 0x71, 0x61, 0x9b, 0x82,
-0xce, 0x4b, 0x79, 0xa9, 0xfe, 0x9f, 0x2e, 0xc4,
-0xf3, 0x6e, 0xb6, 0x4d, 0x95, 0x29, 0x79, 0x1b,
-0x5e, 0x66, 0x8e, 0xdf, 0x8a, 0x33, 0x51, 0x02,
-0xbb, 0xc3, 0xce, 0x90, 0x5c, 0x4f, 0x0e, 0xc2,
-0x83, 0xc1, 0xcc, 0x17, 0x44, 0x93, 0xff, 0x07,
-0x7c, 0xca, 0xd8, 0xc2, 0x0a, 0xb4, 0xc7, 0x6b,
-0x4e, 0x29, 0xc3, 0x88, 0x7e, 0x6d, 0xac, 0x29,
-0x04, 0xa8, 0x7f, 0xa5, 0x2c, 0x26, 0x32, 0x18,
-0xab, 0xa6, 0xca, 0xcd, 0xfd, 0x29, 0xf8, 0xa7,
-0x1f, 0x0e, 0xe8, 0x95, 0xbe, 0xcc, 0x76, 0xf1,
-0x59, 0x18, 0xd7, 0xc3, 0xdc, 0xff, 0xb3, 0x1c,
-0xc6, 0x37, 0xba, 0xb4, 0xcc, 0x20, 0xe2, 0x9f,
-0x03, 0x50, 0xf9, 0x90, 0x75, 0x43, 0x8a, 0xff,
-0xe7, 0xfb, 0xd0, 0x02, 0x1d, 0xb5, 0x74, 0x13,
-0x99, 0xd1, 0xd7, 0xa2, 0x77, 0x78, 0x2d, 0xdc,
-0xed, 0xb0, 0x9b, 0x75, 0x78, 0x69, 0xd0, 0x5e,
-0x28, 0xb5, 0x68, 0x25, 0xdf, 0xc4, 0x9f, 0x92,
-0xe7, 0x3d, 0x2f, 0x6d, 0x01, 0x3c, 0x06, 0x05,
-0x1e, 0xf9, 0x4d, 0xb2, 0x13, 0x7e, 0xa7, 0x15,
-0x78, 0xe9, 0x20, 0xd9, 0x29, 0x3d, 0x23, 0x18,
-0x83, 0x39, 0xf0, 0x98, 0xef, 0x1f, 0x35, 0x7a,
-0x9c, 0xbc, 0x6e, 0xc2, 0x3f, 0xb9, 0x9e, 0x55,
-0xb5, 0xf9, 0x5a, 0x5d, 0x03, 0xc9, 0x85, 0x34,
-0x2d, 0xdf, 0x4b, 0xbc, 0xe9, 0x31, 0xff, 0x8f,
-0xe3, 0x5e, 0x32, 0x05, 0x56, 0xc1, 0x03, 0x3a,
-0xf5, 0x92, 0xa4, 0xfd, 0x55, 0x9e, 0x79, 0x3f,
-0x87, 0xfd, 0x5c, 0xed, 0x86, 0x60, 0x25, 0x0e,
-0xac, 0x4c, 0xe6, 0xfa, 0xd7, 0x0d, 0x77, 0x81,
-0xac, 0x12, 0x0e, 0x8d, 0x9c, 0x7a, 0xc1, 0x11,
-0xc1, 0x84, 0x7f, 0xd8, 0x59, 0xed, 0x65, 0xee,
-0xed, 0xf9, 0x3e, 0xc2, 0x9e, 0xfd, 0xde, 0xf5,
-0x1c, 0x08, 0x4d, 0xf8, 0x7f, 0x68, 0x7c, 0x60,
-0xf2, 0xff, 0xa4, 0x7d, 0x1e, 0x3a, 0x5c, 0x58,
-0x5a, 0x67, 0x1d, 0x6c, 0x3a, 0x2f, 0x1d, 0x56,
-0x4a, 0xb5, 0xcc, 0x8d, 0xe2, 0x79, 0x76, 0x58,
-0xa9, 0xf4, 0x5a, 0x7f, 0x29, 0x4e, 0x67, 0x87,
-0x0d, 0xc4, 0xe8, 0x37, 0xfb, 0x7f, 0x7a, 0x37,
-0x06, 0x1c, 0x76, 0xa0, 0xcd, 0xe2, 0x16, 0x4d,
-0xf5, 0x86, 0xf2, 0x1c, 0xcc, 0x73, 0x0a, 0x02,
-0xdf, 0x2c, 0x9a, 0x5a, 0xb4, 0x9a, 0xcc, 0x6e,
-0x0e, 0x40, 0x99, 0x22, 0xf7, 0x5b, 0xb2, 0x12,
-0xf6, 0x75, 0x5d, 0x5a, 0x3f, 0x82, 0x3a, 0xd5,
-0x1b, 0xe0, 0xb0, 0xa7, 0x51, 0x55, 0xef, 0x41,
-0x74, 0xd7, 0xaf, 0x35, 0xaa, 0xd3, 0xb5, 0x3a,
-0x7c, 0x5f, 0x65, 0xcb, 0xed, 0x33, 0xbd, 0x8b,
-0xbc, 0x64, 0x63, 0x42, 0xfe, 0x20, 0xfe, 0x61,
-0x2d, 0x6a, 0x87, 0x86, 0xa7, 0xb5, 0x93, 0x6e,
-0x05, 0x1f, 0x07, 0x42, 0x43, 0xf8, 0x45, 0x66,
-0x72, 0x47, 0xd9, 0x1c, 0x61, 0x26, 0xcc, 0xf2,
-0xdc, 0x38, 0x68, 0xf6, 0xff, 0x4c, 0x19, 0x22,
-0x07, 0x98, 0x4b, 0x73, 0x3e, 0x7d, 0xcf, 0x99,
-0xe0, 0x01, 0x35, 0xe6, 0xd6, 0x6b, 0x3a, 0xa0,
-0x96, 0xf9, 0x16, 0x07, 0xe5, 0x42, 0xf2, 0xa1,
-0x7d, 0x5e, 0x83, 0xed, 0x09, 0xb1, 0x2b, 0x21,
-0x7f, 0x86, 0x85, 0x4e, 0x38, 0x4b, 0x11, 0xed,
-0x3c, 0x55, 0x30, 0xd4, 0x81, 0xb0, 0xc7, 0x63,
-0xe0, 0x9f, 0x1f, 0x43, 0x65, 0xdd, 0xcd, 0x7c,
-0xf0, 0x26, 0x94, 0xd5, 0xda, 0x94, 0xa6, 0x47,
-0x13, 0xfb, 0xdf, 0xa1, 0x84, 0x10, 0x7f, 0xce,
-0x83, 0xc7, 0x56, 0x15, 0x44, 0x35, 0xee, 0x76,
-0xcb, 0xe2, 0x8e, 0xe8, 0xc8, 0x20, 0x7e, 0x88,
-0x66, 0x51, 0x31, 0x1c, 0x41, 0xb6, 0x55, 0x05,
-0x26, 0xfc, 0x93, 0x56, 0x0e, 0xeb, 0xd4, 0x02,
-0x46, 0x87, 0x71, 0x37, 0xaf, 0xd3, 0x70, 0x10,
-0x22, 0x11, 0xb5, 0xb5, 0xba, 0x8c, 0x39, 0x42,
-0x76, 0x07, 0x94, 0xac, 0xb5, 0x37, 0x23, 0x22,
-0x3a, 0x98, 0xc4, 0x27, 0x69, 0xcb, 0x09, 0xae,
-0x4f, 0x6d, 0x86, 0x4a, 0x5e, 0x83, 0x1d, 0x2d,
-0x85, 0x67, 0xf1, 0x3c, 0xbe, 0x0e, 0x2d, 0x04,
-0x0c, 0xc7, 0x69, 0x7e, 0xf7, 0x16, 0x90, 0x64,
-0x0a, 0x49, 0xfc, 0x13, 0x12, 0xa6, 0x52, 0x3c,
-0xbf, 0x1a, 0x1e, 0xd2, 0x41, 0xb2, 0x46, 0x9b,
-0x3e, 0x88, 0x40, 0xe8, 0xb8, 0xb4, 0x1a, 0x70,
-0xb0, 0xdc, 0x7e, 0x13, 0xbc, 0x14, 0x03, 0x06,
-0xc3, 0x89, 0xfb, 0x77, 0xd1, 0x6c, 0x78, 0xad,
-0x79, 0x76, 0x34, 0x73, 0x25, 0x39, 0x06, 0x9f,
-0xb3, 0x97, 0xa2, 0xce, 0x95, 0xe2, 0xeb, 0xe4,
-0x55, 0xb6, 0x23, 0xe4, 0x1c, 0x93, 0x2b, 0xc9,
-0x67, 0x6c, 0x7b, 0xd4, 0xb6, 0x52, 0xfc, 0x28,
-0x89, 0x7f, 0x6e, 0xea, 0x52, 0x3e, 0x4b, 0xff,
-0xad, 0xbe, 0x3e, 0x2c, 0xea, 0xca, 0x38, 0xcc,
-0xe3, 0x86, 0xff, 0x10, 0x5c, 0x10, 0x2b, 0xb9,
-0x61, 0x32, 0x82, 0x82, 0x65, 0x1a, 0xbf, 0xd2,
-0x97, 0x90, 0x3f, 0x90, 0xf6, 0x05, 0x9c, 0x64,
-0x93, 0x7c, 0x4b, 0x3e, 0x14, 0xbb, 0xe1, 0xa4,
-0x3e, 0xdf, 0x97, 0xc5, 0xf1, 0xcf, 0x97, 0xac,
-0x6a, 0x85, 0xf5, 0x84, 0xe8, 0x66, 0xff, 0x23,
-0x58, 0x35, 0x64, 0x1b, 0x17, 0xf5, 0xc4, 0xfa,
-0x77, 0x09, 0x53, 0x61, 0x35, 0xdc, 0xba, 0x54,
-0xce, 0x27, 0x5e, 0xed, 0xb8, 0x82, 0xeb, 0xe3,
-0x22, 0xc7, 0xb5, 0x1d, 0xca, 0xad, 0xb5, 0x54,
-0x23, 0x8a, 0xb4, 0x7d, 0x7b, 0x31, 0x57, 0xc4,
-0x1f, 0x25, 0xed, 0x6b, 0x25, 0x08, 0xbf, 0x54,
-0xa6, 0xe3, 0x4b, 0x79, 0x06, 0x51, 0x71, 0xcf,
-0xd4, 0x66, 0xc6, 0xf1, 0x0f, 0xcd, 0x98, 0x4c,
-0xb2, 0x57, 0xed, 0xca, 0x2f, 0xd6, 0xe4, 0x86,
-0x74, 0x3d, 0xe9, 0xff, 0xc9, 0x8d, 0xd4, 0xb5,
-0xfa, 0x0a, 0xcf, 0xa1, 0xf6, 0xd7, 0x70, 0xbe,
-0xbd, 0x19, 0x81, 0x50, 0x3f, 0xec, 0x28, 0x9c,
-0x01, 0x19, 0x40, 0x54, 0x6d, 0x87, 0x84, 0x8a,
-0xbe, 0x1c, 0x8f, 0xcd, 0xc4, 0x79, 0xdf, 0x36,
-0x65, 0x1b, 0xbc, 0xa5, 0x95, 0x55, 0xe3, 0xf9,
-0xea, 0x44, 0xb3, 0x6b, 0x9e, 0x9e, 0xd9, 0x23,
-0x9e, 0x81, 0xcf, 0xa2, 0x38, 0x08, 0x5b, 0x9c,
-0x08, 0xe4, 0x0c, 0x0f, 0xcf, 0x47, 0x26, 0x79,
-0x38, 0xe2, 0xb8, 0x58, 0x5d, 0x59, 0x6b, 0x6b,
-0x16, 0x99, 0xf2, 0x8e, 0x56, 0xd5, 0x77, 0xf7,
-0x76, 0x71, 0x48, 0xbb, 0x00, 0x7b, 0xf4, 0xac,
-0xd0, 0xa4, 0x11, 0xc7, 0xb8, 0x82, 0x5b, 0x6b,
-0x07, 0x22, 0xe4, 0x89, 0xfb, 0x0b, 0xca, 0x88,
-0x78, 0x18, 0x61, 0xcf, 0xfa, 0x80, 0xd8, 0x23,
-0xbc, 0x11, 0x42, 0x45, 0x3f, 0x8a, 0x66, 0xc8,
-0xcf, 0xd5, 0xb9, 0xfd, 0x38, 0xb8, 0x24, 0xad,
-0x27, 0x55, 0x11, 0xab, 0x5e, 0xa3, 0x6b, 0x49,
-0xf9, 0xf3, 0xa0, 0xb7, 0xd5, 0x83, 0x9b, 0x64,
-0x2d, 0x2e, 0xc2, 0x8b, 0x9a, 0x9d, 0xad, 0x0d,
-0xe3, 0xfe, 0xdf, 0xc3, 0xec, 0xc7, 0x96, 0x84,
-0xec, 0x23, 0xd2, 0x3b, 0xcd, 0xf3, 0x74, 0x54,
-0xf4, 0x49, 0xf9, 0xc3, 0xd2, 0xac, 0x6a, 0x40,
-0x2b, 0xea, 0x95, 0xfd, 0xe9, 0x51, 0x16, 0x80,
-0x19, 0x1a, 0x02, 0xa1, 0x21, 0x8d, 0xe3, 0x1f,
-0x1a, 0xcc, 0x8e, 0x4a, 0xcf, 0xeb, 0xce, 0x20,
-0xdd, 0x49, 0xa2, 0xd2, 0xc4, 0x7e, 0x40, 0xfc,
-0x43, 0xfc, 0x92, 0x43, 0xc3, 0x45, 0xd6, 0x71,
-0x6b, 0xab, 0x6c, 0xe1, 0xec, 0xf4, 0x7e, 0x69,
-0x87, 0xf2, 0x43, 0xdd, 0x22, 0x65, 0xeb, 0xc2,
-0x76, 0x5f, 0x91, 0xee, 0x98, 0x63, 0x92, 0x3f,
-0x90, 0xf6, 0x80, 0xa7, 0xf5, 0x9b, 0xf3, 0x74,
-0x43, 0xfe, 0x58, 0x85, 0x32, 0xad, 0x28, 0xec,
-0x19, 0x42, 0x0d, 0x5e, 0x81, 0xf7, 0x2f, 0x88,
-0x4a, 0x1f, 0xd6, 0x57, 0xea, 0xd6, 0x9d, 0xa2,
-0x2e, 0x4e, 0x4c, 0x0f, 0x4d, 0xb9, 0x04, 0x5f,
-0xe4, 0xef, 0x12, 0x6c, 0x7d, 0xe2, 0x20, 0x20,
-0xda, 0x69, 0x44, 0x60, 0x73, 0x1e, 0xae, 0xaa,
-0xbb, 0x74, 0x5b, 0xdf, 0xa4, 0x51, 0xf8, 0x93,
-0x3a, 0x1f, 0xd6, 0xeb, 0xe2, 0xf0, 0xa4, 0x04,
-0xde, 0x48, 0xbb, 0x02, 0xaf, 0xb3, 0xb9, 0xfd,
-0x8b, 0x1b, 0x6a, 0x7e, 0x4a, 0x8e, 0x82, 0x9b,
-0xc3, 0x66, 0xc4, 0x4b, 0x52, 0x15, 0x1f, 0x8c,
-0xfe, 0x62, 0xc4, 0x55, 0x9a, 0x6e, 0xed, 0x15,
-0x5d, 0x09, 0xf9, 0xc3, 0x94, 0x4f, 0xa1, 0x15,
-0x61, 0x1e, 0x0d, 0x7b, 0x16, 0x68, 0xeb, 0xa1,
-0xa3, 0x4f, 0xee, 0x21, 0x57, 0xb5, 0x57, 0x06,
-0x4b, 0xa2, 0x88, 0x0f, 0xcf, 0x68, 0xbb, 0x5d,
-0x88, 0x88, 0xd6, 0x10, 0x35, 0x21, 0xcf, 0x69,
-0xda, 0x30, 0xc2, 0x1e, 0x3b, 0xc7, 0x7b, 0x6b,
-0x59, 0x13, 0xea, 0x77, 0x8e, 0xf7, 0xd0, 0xd0,
-0x58, 0x61, 0x00, 0x63, 0xbe, 0x02, 0xa8, 0x31,
-0x3c, 0xfe, 0x24, 0xfe, 0x99, 0xd2, 0x15, 0x7a,
-0xa1, 0xc5, 0xee, 0xb3, 0xb4, 0x23, 0x3e, 0x6f,
-0x83, 0x22, 0x5d, 0x4c, 0xe0, 0xc9, 0x30, 0xf9,
-0x14, 0xf6, 0xf4, 0x77, 0x6c, 0xa7, 0x9b, 0x49,
-0x38, 0xb1, 0x3f, 0xb5, 0x29, 0x9f, 0x4a, 0x1f,
-0x37, 0x97, 0x8d, 0x96, 0x94, 0xd7, 0xac, 0x80,
-0x43, 0x64, 0xde, 0x04, 0x7e, 0x36, 0xf0, 0xf0,
-0xa7, 0xc2, 0x30, 0x73, 0xab, 0xd6, 0x80, 0x1c,
-0x4c, 0xec, 0xff, 0xa8, 0xb0, 0x8f, 0xbc, 0x47,
-0x5e, 0x41, 0x98, 0x67, 0xc1, 0xd5, 0x81, 0xb9,
-0xdc, 0xbf, 0x31, 0x42, 0x0d, 0x7c, 0xc8, 0xf7,
-0xc3, 0x38, 0xad, 0xf4, 0xcc, 0x6a, 0x10, 0x57,
-0x9a, 0xfc, 0x3f, 0x5d, 0xea, 0xc7, 0x93, 0xcb,
-0x06, 0xb3, 0x7a, 0x26, 0x39, 0xe1, 0x7d, 0xe8,
-0x46, 0xe0, 0x6d, 0x1c, 0xc3, 0xb8, 0xa3, 0xe3,
-0xad, 0xbf, 0x75, 0x7b, 0xad, 0xcd, 0x35, 0xa3,
-0x26, 0xfc, 0x63, 0x61, 0x6d, 0x83, 0xa8, 0xd6,
-0x7f, 0x43, 0x2a, 0x60, 0x7d, 0x0c, 0x0f, 0x5f,
-0x82, 0xf7, 0xa0, 0x0c, 0x07, 0xf6, 0x11, 0x34,
-0xbd, 0xed, 0xf7, 0xd0, 0x5f, 0xa3, 0x7e, 0x9f,
-0xd8, 0x0f, 0xd1, 0xb4, 0x3b, 0xe1, 0x05, 0x44,
-0x3b, 0x84, 0xa3, 0xc1, 0xad, 0x13, 0xfe, 0xb1,
-0x26, 0x44, 0x8c, 0x38, 0x88, 0x40, 0x6b, 0x23,
-0x02, 0x27, 0x35, 0xbd, 0xc7, 0xe4, 0xff, 0xb9,
-0x01, 0x56, 0x1b, 0x61, 0x20, 0x4b, 0x56, 0x5d,
-0x53, 0x63, 0xdc, 0x1f, 0xf2, 0x78, 0xf3, 0xf7,
-0xf9, 0xe0, 0xca, 0x3d, 0xc6, 0x4f, 0xdf, 0xd9,
-0x78, 0x42, 0x99, 0xb8, 0x7f, 0x1d, 0xa5, 0x10,
-0x55, 0xdd, 0x11, 0x8b, 0x1b, 0xef, 0xff, 0xbe,
-0xe0, 0xfa, 0x24, 0x8b, 0xfb, 0x7f, 0x5e, 0x65,
-0xb9, 0xba, 0x6d, 0xb6, 0x38, 0x40, 0xf8, 0x99,
-0x76, 0x5a, 0xc4, 0x8d, 0xa6, 0xf8, 0x57, 0x3b,
-0x1e, 0xc3, 0xbd, 0x6c, 0xc9, 0xe8, 0xa4, 0x4b,
-0xea, 0x55, 0xad, 0xd2, 0x58, 0x16, 0x5f, 0x6c,
-0x7d, 0x6a, 0x4e, 0x2a, 0x57, 0xe0, 0x15, 0x86,
-0x40, 0x68, 0xd0, 0x84, 0x7f, 0x86, 0xe1, 0x6d,
-0x5c, 0x8d, 0xc5, 0x61, 0xd1, 0xc9, 0x0e, 0x55,
-0x77, 0xf7, 0xde, 0x1c, 0x16, 0x3f, 0x51, 0xdf,
-0x71, 0xf1, 0x78, 0x22, 0xae, 0xcf, 0x9f, 0xfc,
-0xa5, 0xd5, 0xb6, 0x68, 0x8a, 0xff, 0xa7, 0x1d,
-0xd6, 0x91, 0xad, 0x3c, 0xc8, 0x55, 0x61, 0x5f,
-0xaf, 0x1a, 0xd2, 0xf2, 0x24, 0xdb, 0xe5, 0x28,
-0xd6, 0x17, 0x71, 0xc1, 0xf2, 0x98, 0x90, 0xaf,
-0xb5, 0x8d, 0x16, 0x99, 0xfd, 0x3f, 0xdd, 0xf0,
-0x4b, 0xee, 0xf6, 0x29, 0xf7, 0x3c, 0xcd, 0x9e,
-0x0b, 0x26, 0xfd, 0x3f, 0xa7, 0x70, 0x70, 0x04,
-0x11, 0xe0, 0xfd, 0x3e, 0xb9, 0x8e, 0x34, 0x98,
-0xf0, 0x4f, 0x44, 0xf3, 0x07, 0xd4, 0x51, 0x4b,
-0x97, 0x79, 0x3d, 0x63, 0xfe, 0x1f, 0xfb, 0x80,
-0xd6, 0xa8, 0x75, 0x34, 0xc8, 0xbf, 0xb0, 0x98,
-0xfd, 0x3f, 0x7b, 0xe0, 0x5d, 0xa9, 0x74, 0xe7,
-0xac, 0x11, 0xb9, 0x0b, 0x5e, 0x80, 0xb8, 0xff,
-0xe7, 0x6d, 0x30, 0xe4, 0xed, 0xdb, 0xf0, 0x2e,
-0x2d, 0xed, 0xb0, 0x0d, 0x8b, 0x8f, 0x9a, 0xf0,
-0x0f, 0x6a, 0x7f, 0x65, 0xbf, 0x94, 0xb9, 0xca,
-0x70, 0x83, 0x70, 0xb7, 0x0f, 0x9e, 0xee, 0x98,
-0xff, 0x47, 0x3c, 0x2d, 0x8d, 0xd1, 0xca, 0x6c,
-0xdb, 0xea, 0x14, 0xfc, 0x73, 0x86, 0x1d, 0xc8,
-0xee, 0xae, 0xce, 0x0a, 0x6e, 0x95, 0xc8, 0x87,
-0xd0, 0x6d, 0xd8, 0xfb, 0x92, 0x61, 0xef, 0x73,
-0x7d, 0x77, 0x40, 0xad, 0xd4, 0x9c, 0x1b, 0x44,
-0x8f, 0x09, 0xff, 0xdc, 0x01, 0x8d, 0xcc, 0xae,
-0xd1, 0x8d, 0xa4, 0x90, 0xb6, 0x4c, 0xf8, 0x1f,
-0x6e, 0xe3, 0xfe, 0x1c, 0x43, 0x11, 0x7b, 0x4a,
-0x1e, 0xa1, 0x4f, 0x5b, 0x54, 0x13, 0xfe, 0x29,
-0x44, 0xed, 0x8c, 0xf6, 0xd4, 0x06, 0xb2, 0x1c,
-0xb6, 0xa4, 0x9b, 0xfd, 0x45, 0xc6, 0xfc, 0x0c,
-0xee, 0x1a, 0x22, 0x66, 0xff, 0x8f, 0x84, 0x9b,
-0x50, 0xf5, 0xd2, 0x5c, 0xcb, 0xed, 0x06, 0x30,
-0x90, 0x15, 0x77, 0xdc, 0x1f, 0xa2, 0xe0, 0xfc,
-0x46, 0xcd, 0x39, 0x08, 0xb9, 0xd9, 0xc4, 0x84,
-0x7f, 0x7c, 0xb8, 0x0d, 0xdd, 0xc2, 0xdd, 0xac,
-0xc6, 0x47, 0x87, 0x05, 0x37, 0xac, 0x9f, 0xf0,
-0x3f, 0x18, 0x8e, 0x08, 0x8e, 0x7f, 0x16, 0x33,
-0x31, 0xcb, 0xe4, 0xff, 0x39, 0x49, 0x7f, 0x07,
-0x55, 0x5e, 0xdb, 0x79, 0xf1, 0x99, 0x98, 0xdb,
-0x27, 0x18, 0xc3, 0x3f, 0x7c, 0xf0, 0x39, 0xb9,
-0x5c, 0x8b, 0x3f, 0x1d, 0xaf, 0x79, 0xd6, 0x84,
-0x7f, 0x8e, 0xa3, 0xed, 0xe1, 0xae, 0xcd, 0xf2,
-0xca, 0x08, 0x0b, 0x35, 0xb7, 0xd7, 0x16, 0xac,
-0x19, 0x32, 0xe2, 0x83, 0x7c, 0x7d, 0xd8, 0x9f,
-0x7c, 0xa5, 0x8b, 0xac, 0xc7, 0x9a, 0x5e, 0x37,
-0xe1, 0x9f, 0x28, 0x84, 0x55, 0xfb, 0x94, 0xba,
-0x55, 0x44, 0x45, 0x79, 0x5b, 0xc6, 0xfd, 0x3f,
-0xa7, 0xa0, 0xc7, 0x1b, 0x1f, 0x04, 0x7c, 0xf6,
-0x3c, 0xfa, 0x2c, 0x39, 0x62, 0x92, 0x3f, 0xfd,
-0xb0, 0x3b, 0xd3, 0x59, 0x67, 0x51, 0xfc, 0xb7,
-0xbb, 0x36, 0x68, 0x6a, 0x35, 0xbe, 0xe6, 0x6b,
-0xf8, 0xbe, 0x2a, 0x7f, 0xdf, 0x37, 0x60, 0x83,
-0xae, 0x7a, 0xea, 0x14, 0x7f, 0x9f, 0x19, 0xff,
-0x18, 0xab, 0x47, 0x37, 0x66, 0xe1, 0x42, 0xa1,
-0x3c, 0x8f, 0xaf, 0x67, 0x7c, 0xd0, 0x22, 0xd8,
-0x3d, 0x34, 0xe8, 0x79, 0xdd, 0x84, 0x7f, 0xce,
-0xc0, 0x59, 0xa8, 0xac, 0xbe, 0x7b, 0x73, 0xc1,
-0x72, 0x78, 0x2b, 0xfe, 0xd8, 0xd2, 0x38, 0x79,
-0x38, 0xee, 0xe8, 0x63, 0x28, 0x1f, 0x36, 0x8b,
-0xc3, 0x26, 0xfd, 0xdb, 0xc9, 0xc6, 0x83, 0xe1,
-0x7a, 0x9b, 0x92, 0x13, 0x77, 0x03, 0xf2, 0x69,
-0x67, 0x63, 0x83, 0x7e, 0xed, 0xac, 0xba, 0x6f,
-0xe1, 0xac, 0xcd, 0x26, 0x7d, 0x87, 0xf8, 0x87,
-0x0d, 0x53, 0x03, 0xed, 0xf8, 0x70, 0xb5, 0x39,
-0xfe, 0x14, 0x63, 0xf8, 0x33, 0xe6, 0x88, 0x63,
-0x6e, 0x65, 0x31, 0xdb, 0xda, 0x6a, 0xc2, 0x3f,
-0xb7, 0xb9, 0xd6, 0x69, 0x7e, 0x46, 0xa3, 0x68,
-0x7f, 0xbd, 0x00, 0x76, 0x96, 0x16, 0xf3, 0xff,
-0xcc, 0x8b, 0x39, 0x82, 0xd6, 0xa5, 0xa1, 0xc6,
-0x1f, 0x21, 0xad, 0x26, 0xfc, 0x73, 0x97, 0x71,
-0x4c, 0x68, 0x79, 0xba, 0x95, 0xb4, 0xf1, 0xb0,
-0xc5, 0x84, 0xbf, 0x82, 0x1f, 0x1c, 0xb2, 0x81,
-0xa9, 0x0d, 0x54, 0x49, 0x6f, 0x35, 0xe1, 0x9f,
-0x4a, 0x58, 0xad, 0xe1, 0xfc, 0x06, 0xff, 0x54,
-0xb6, 0x55, 0x99, 0x39, 0x7c, 0x7d, 0xd2, 0xff,
-0x83, 0x82, 0x6e, 0x0d, 0x0f, 0xa4, 0x5a, 0x49,
-0x57, 0xe2, 0xfe, 0xdb, 0xe8, 0x34, 0xb4, 0x5f,
-0x66, 0x23, 0xec, 0xb1, 0x64, 0xa9, 0x6f, 0x84,
-0x76, 0x8c, 0x64, 0x72, 0xff, 0xcf, 0x67, 0xec,
-0x56, 0x0e, 0x7b, 0xde, 0x55, 0x4e, 0x72, 0x20,
-0xb4, 0xb4, 0xe6, 0x05, 0x13, 0xfe, 0xd9, 0xc6,
-0xbd, 0xaf, 0x7f, 0xc0, 0xd3, 0xb7, 0x4d, 0x7f,
-0xa7, 0xbe, 0xcc, 0xe4, 0xcf, 0x0f, 0x8b, 0x03,
-0x93, 0xae, 0x40, 0x15, 0xb3, 0xe9, 0xa2, 0xc7,
-0x84, 0x7f, 0xae, 0x48, 0x3f, 0x67, 0xf3, 0xa3,
-0xb6, 0xdd, 0xa5, 0x3f, 0xa3, 0x47, 0x59, 0xe9,
-0x69, 0x1b, 0xc7, 0x3f, 0x57, 0xf9, 0x95, 0x1e,
-0x1c, 0xfc, 0x69, 0x53, 0xd5, 0x72, 0x5b, 0x4f,
-0x8d, 0x6e, 0xf2, 0xff, 0xe4, 0xb1, 0x57, 0x82,
-0xf9, 0x43, 0x6d, 0x17, 0x3c, 0x95, 0x6c, 0x0d,
-0xe4, 0x1b, 0xfe, 0x1f, 0x6d, 0x07, 0x7f, 0xfe,
-0x47, 0x71, 0xb0, 0xaa, 0xbc, 0xf8, 0x6e, 0x79,
-0x66, 0x8e, 0x09, 0xff, 0xc0, 0xe6, 0xb4, 0x5d,
-0xf0, 0xbc, 0xde, 0xd6, 0x40, 0xee, 0xf3, 0xaf,
-0x49, 0xfa, 0x7f, 0x70, 0xfe, 0xc3, 0xf8, 0xbe,
-0xcd, 0x88, 0x88, 0x65, 0xaf, 0x3d, 0x05, 0xff,
-0x20, 0x9a, 0x42, 0xb1, 0xa3, 0xfa, 0xad, 0x28,
-0xc6, 0x93, 0xf1, 0x8e, 0x5e, 0x1c, 0x1c, 0x66,
-0x7e, 0xea, 0x6c, 0x91, 0xe7, 0x90, 0x48, 0x62,
-0x7f, 0x76, 0x4d, 0xf9, 0x2d, 0x82, 0x9c, 0xf9,
-0xba, 0x6d, 0x4f, 0xc1, 0x4f, 0xe0, 0xa8, 0x50,
-0x1a, 0x13, 0x9b, 0xb1, 0xf7, 0x15, 0x06, 0xa0,
-0x85, 0x55, 0x36, 0xd8, 0x7e, 0xbd, 0x35, 0xf9,
-0x3c, 0x8c, 0xfb, 0x7f, 0xa0, 0xf2, 0xb4, 0x2d,
-0x5c, 0x33, 0x20, 0xc5, 0xd5, 0xdc, 0x40, 0x2c,
-0x1e, 0xc1, 0x1d, 0x65, 0x1f, 0xf3, 0x83, 0xc6,
-0x4c, 0xf1, 0x2f, 0x01, 0x45, 0xf6, 0x55, 0x68,
-0xd2, 0x9d, 0x0d, 0xe2, 0x3e, 0xcb, 0x22, 0x04,
-0x42, 0x1c, 0xf6, 0xa0, 0xfe, 0x9a, 0x8b, 0xf2,
-0xbc, 0xe0, 0x12, 0x0c, 0xf0, 0xf5, 0xf4, 0x8a,
-0x90, 0x88, 0x7f, 0x35, 0x4a, 0x0f, 0x42, 0xb8,
-0x19, 0xf5, 0x3b, 0x23, 0x4e, 0x90, 0xb9, 0xe2,
-0xe6, 0xfa, 0xf7, 0x45, 0xc9, 0x1d, 0x73, 0xec,
-0x74, 0xbd, 0x5e, 0xe2, 0x96, 0x03, 0x08, 0xe4,
-0x4c, 0xfe, 0x1f, 0xb6, 0x97, 0x39, 0xf4, 0xba,
-0x6e, 0xcf, 0x36, 0x5a, 0x80, 0xef, 0x9b, 0xc7,
-0xa7, 0xb5, 0xc1, 0x8c, 0xd8, 0xfc, 0xdd, 0xbd,
-0x25, 0x3e, 0xb9, 0xa7, 0x43, 0x35, 0xc9, 0x1f,
-0x0a, 0x7b, 0xa9, 0x1a, 0xe1, 0xde, 0x0f, 0x86,
-0x1b, 0x6f, 0x90, 0xfb, 0xe7, 0x25, 0x43, 0x50,
-0xbb, 0x71, 0x7e, 0x08, 0xf0, 0xbf, 0x9a, 0x9e,
-0x9e, 0x94, 0x3f, 0x90, 0xb9, 0x1c, 0x57, 0x63,
-0xbe, 0xbe, 0xb8, 0xdb, 0xb3, 0x4f, 0xfd, 0x0b,
-0x94, 0x0e, 0x5a, 0x0d, 0xfd, 0xab, 0xe0, 0xc6,
-0xe8, 0x6e, 0x1a, 0x99, 0x8c, 0x82, 0xb4, 0xda,
-0xb6, 0xba, 0x0d, 0x12, 0xf2, 0x27, 0x94, 0x39,
-0x86, 0xf3, 0xf7, 0x0f, 0xda, 0x86, 0x70, 0xda,
-0x7b, 0x50, 0xd9, 0x2f, 0x4f, 0xf8, 0x7f, 0x96,
-0x8c, 0x8a, 0x27, 0x15, 0xae, 0xf3, 0x71, 0xff,
-0x0c, 0x27, 0xe3, 0x5f, 0x69, 0xfc, 0xd7, 0x52,
-0xbd, 0x78, 0x54, 0xae, 0xe4, 0xdb, 0x26, 0x92,
-0xf9, 0xd9, 0xab, 0x3f, 0x83, 0xab, 0xae, 0xb9,
-0x3e, 0x9b, 0x2e, 0x8c, 0xe2, 0x89, 0x2b, 0x05,
-0x6b, 0x5f, 0x93, 0x19, 0xff, 0x7c, 0xa2, 0xed,
-0x69, 0x42, 0xf9, 0x3c, 0x46, 0x4a, 0x60, 0xaf,
-0x5a, 0xf4, 0x7b, 0x7a, 0x1e, 0x07, 0xaf, 0xf8,
-0xe6, 0x68, 0xf2, 0x6a, 0x32, 0x4b, 0x0b, 0xe8,
-0xf6, 0xa0, 0xe5, 0x59, 0xbb, 0x19, 0xff, 0x0c,
-0x48, 0x3b, 0x04, 0x55, 0x6f, 0x51, 0xb8, 0xb7,
-0x87, 0x3a, 0x06, 0x32, 0xdc, 0x68, 0x86, 0xef,
-0x50, 0x0a, 0x35, 0x39, 0xd7, 0xaf, 0x01, 0xab,
-0x56, 0x95, 0x3c, 0x78, 0x99, 0x98, 0xf0, 0xcf,
-0x36, 0xd8, 0xdb, 0xbc, 0xac, 0x16, 0x85, 0xb6,
-0xd3, 0x08, 0x7b, 0xa1, 0x21, 0xe6, 0xa4, 0x37,
-0xc2, 0x0c, 0x9f, 0xbc, 0x89, 0x94, 0x08, 0xad,
-0xcd, 0xcb, 0x1a, 0xb3, 0xbb, 0x56, 0xa7, 0xc4,
-0xbf, 0xa4, 0x8b, 0x2c, 0xac, 0x65, 0xf6, 0xc8,
-0x4e, 0x63, 0xdb, 0x64, 0xf2, 0x78, 0xf1, 0x45,
-0x28, 0xd3, 0x6c, 0x9b, 0xe4, 0xef, 0x91, 0x43,
-0xba, 0x7b, 0xbb, 0xb5, 0x5d, 0x84, 0x64, 0xfc,
-0x0b, 0xf6, 0xc5, 0xd0, 0xd1, 0x6e, 0x63, 0x59,
-0xf6, 0xf7, 0xc6, 0xfd, 0x81, 0x55, 0x1a, 0x22,
-0x46, 0xbe, 0x91, 0xf6, 0x6f, 0xb0, 0x35, 0xc8,
-0xa9, 0xf1, 0xaf, 0x8f, 0x89, 0x9b, 0x9b, 0xed,
-0xfc, 0xfe, 0x65, 0xfa, 0x5d, 0xae, 0x1a, 0x1e,
-0xff, 0x9a, 0xa7, 0x65, 0xb9, 0x26, 0x7d, 0x08,
-0xef, 0xf8, 0xf6, 0x04, 0x9d, 0x3b, 0x45, 0x13,
-0xfe, 0x91, 0x2a, 0x59, 0x93, 0xb7, 0xe3, 0x34,
-0x5a, 0xeb, 0x4e, 0xdc, 0xf6, 0x05, 0xbd, 0x75,
-0xa3, 0x46, 0xfc, 0x0b, 0x57, 0xac, 0x3b, 0xfb,
-0x53, 0xd6, 0xba, 0xd0, 0x1e, 0xa0, 0x7b, 0x6a,
-0xba, 0x4d, 0xf8, 0xe7, 0x2e, 0xb6, 0x95, 0x15,
-0x7a, 0x8a, 0x14, 0xbe, 0x2c, 0xec, 0x59, 0x3d,
-0x2f, 0x7e, 0x5e, 0x34, 0x44, 0x2c, 0x01, 0xc1,
-0xdf, 0x5b, 0x42, 0x64, 0xbb, 0x29, 0xff, 0xc7,
-0x87, 0xf2, 0xe7, 0x97, 0xa1, 0xe9, 0xcb, 0xe9,
-0x52, 0xcf, 0x34, 0xd8, 0x15, 0x88, 0xa7, 0xc1,
-0xec, 0x62, 0xf9, 0x3e, 0x5a, 0xef, 0x79, 0x97,
-0x6e, 0x0a, 0x4d, 0xbf, 0xff, 0xc6, 0x1f, 0xa4,
-0xb7, 0x27, 0xfd, 0x3f, 0x75, 0xce, 0xe6, 0xf7,
-0x2d, 0x73, 0x6a, 0x71, 0xdb, 0x5a, 0xe9, 0x67,
-0x30, 0x47, 0x2f, 0x46, 0xfc, 0xa3, 0x7d, 0x86,
-0xe7, 0x31, 0xcb, 0x25, 0xf4, 0x92, 0x63, 0x7a,
-0x45, 0x70, 0x3d, 0xa4, 0xe4, 0xff, 0xe0, 0xfb,
-0xaa, 0xf3, 0x6b, 0x27, 0x8d, 0xe5, 0x5c, 0x82,
-0x2f, 0xf9, 0x42, 0x9d, 0xe5, 0xf1, 0x2f, 0x8e,
-0x7f, 0x76, 0x8a, 0x63, 0xf0, 0x17, 0xdc, 0x8a,
-0x78, 0x82, 0x4c, 0xf8, 0x67, 0xca, 0xa7, 0xda,
-0xef, 0x71, 0x59, 0xd6, 0x05, 0xd7, 0xac, 0xc0,
-0x65, 0x71, 0xf3, 0x83, 0x8c, 0x0b, 0x85, 0x86,
-0x30, 0xce, 0xaf, 0xe7, 0x8e, 0x5c, 0x6e, 0xaf,
-0x99, 0xf1, 0xcf, 0x3e, 0xb6, 0x0a, 0x0a, 0xf4,
-0x3a, 0x6f, 0xf6, 0x54, 0x09, 0x05, 0x4b, 0x44,
-0x3e, 0xbf, 0x71, 0x2a, 0xec, 0x72, 0xdc, 0x5a,
-0x2d, 0x47, 0xc5, 0xfb, 0x94, 0x5d, 0xb0, 0x45,
-0x97, 0x7d, 0xa9, 0xf1, 0x2f, 0x54, 0xb9, 0xd3,
-0x11, 0xff, 0x90, 0x69, 0x14, 0x5f, 0x73, 0xe8,
-0xc9, 0x47, 0xc9, 0x34, 0xd8, 0xf1, 0xcb, 0x7c,
-0x9f, 0xbc, 0x72, 0xf5, 0x34, 0xfe, 0xe2, 0xef,
-0x2f, 0x2a, 0x4f, 0x77, 0xa5, 0xf8, 0x7f, 0x9a,
-0x34, 0xfb, 0x50, 0xcc, 0xff, 0x6c, 0xf8, 0xf3,
-0x2d, 0x56, 0xdc, 0x48, 0xcb, 0x7d, 0x72, 0x37,
-0xb9, 0xab, 0x7a, 0x87, 0x57, 0x1d, 0x95, 0xe7,
-0x98, 0xe3, 0x5f, 0x88, 0xdf, 0x5e, 0xa7, 0x65,
-0x88, 0x76, 0x6c, 0x75, 0x70, 0x0e, 0xdc, 0x8d,
-0x99, 0x21, 0xd1, 0xc1, 0x23, 0x7a, 0x5d, 0xeb,
-0x43, 0xe2, 0x3c, 0xf8, 0x82, 0x95, 0x06, 0x6d,
-0x23, 0x93, 0x52, 0xe2, 0x5f, 0x64, 0xf8, 0xce,
-0x4a, 0xc8, 0x02, 0x31, 0x94, 0x84, 0x01, 0x7c,
-0xb0, 0xa4, 0x59, 0x8c, 0xaa, 0x88, 0x7f, 0xc0,
-0xd6, 0x68, 0xc6, 0x3f, 0x70, 0x26, 0x63, 0xbc,
-0xba, 0xc3, 0xdb, 0x15, 0x94, 0xb9, 0xb7, 0xc7,
-0x8e, 0x6a, 0xee, 0x5b, 0x43, 0x78, 0x6c, 0xcb,
-0x34, 0x67, 0x58, 0x9c, 0xc1, 0xc6, 0x25, 0xf7,
-0x42, 0x5b, 0x9e, 0x29, 0xfe, 0xc5, 0x6a, 0xff,
-0x2c, 0xec, 0xf6, 0xd9, 0x1f, 0xc6, 0xfd, 0x5f,
-0xa8, 0x3c, 0xaf, 0xd9, 0xb5, 0x2c, 0x43, 0xff,
-0x0a, 0x68, 0x71, 0x6f, 0xcc, 0xee, 0xa4, 0xbb,
-0x49, 0xc7, 0x43, 0x59, 0x9b, 0x89, 0x09, 0xff,
-0x48, 0xcf, 0x34, 0xf3, 0xe8, 0x8c, 0x25, 0x98,
-0x5e, 0xa8, 0xb5, 0x68, 0x2f, 0x24, 0xf1, 0x0f,
-0xe5, 0x19, 0x2f, 0xbb, 0xab, 0x11, 0x11, 0xfd,
-0x32, 0x05, 0xff, 0xa4, 0xe1, 0xaf, 0x0e, 0xef,
-0x0d, 0x4a, 0xba, 0x04, 0x5b, 0x34, 0xea, 0xb5,
-0xe4, 0xf2, 0x78, 0x50, 0x6d, 0x11, 0x22, 0xa2,
-0xf4, 0xe6, 0x8c, 0xed, 0x82, 0xca, 0xaf, 0x98,
-0xf0, 0x4f, 0x86, 0x0f, 0x7a, 0x60, 0x9e, 0x25,
-0x8b, 0xa7, 0xd9, 0x70, 0x47, 0x84, 0x81, 0x7f,
-0x78, 0xbc, 0x09, 0x15, 0xb1, 0x4a, 0x57, 0x42,
-0x37, 0x5b, 0xc2, 0xe4, 0x94, 0xf8, 0x97, 0x74,
-0xb9, 0x7a, 0xae, 0x96, 0x36, 0x68, 0x84, 0x75,
-0xca, 0xbc, 0xeb, 0x36, 0xf1, 0x81, 0x36, 0x17,
-0xcf, 0xa3, 0xf8, 0x39, 0xfd, 0x5c, 0xab, 0xf2,
-0x66, 0x1d, 0x37, 0xfb, 0x7f, 0x84, 0xf3, 0x70,
-0xd8, 0x31, 0xf7, 0xef, 0x96, 0x6c, 0xac, 0x39,
-0x9f, 0x7b, 0xb9, 0x16, 0xb7, 0xcd, 0x2f, 0x79,
-0x60, 0xc8, 0x37, 0x4f, 0xb3, 0xfd, 0x41, 0xd8,
-0x09, 0x87, 0xd5, 0xd2, 0xc5, 0xf0, 0x7b, 0x71,
-0x86, 0x39, 0xff, 0xc7, 0x1e, 0x20, 0x76, 0x2a,
-0xaf, 0x42, 0x23, 0x74, 0xa7, 0xda, 0x41, 0x65,
-0x3f, 0xae, 0x46, 0x8f, 0xcf, 0x6e, 0xb1, 0x3d,
-0x6b, 0xc9, 0xc7, 0x27, 0xec, 0xd8, 0x5c, 0xb7,
-0xc6, 0x92, 0x95, 0x58, 0x4f, 0xb8, 0xbd, 0xbf,
-0xbf, 0x05, 0x9c, 0x4b, 0x65, 0xc5, 0xc3, 0x61,
-0x9e, 0xea, 0x91, 0x73, 0x49, 0x33, 0x6c, 0xd7,
-0xd0, 0x02, 0xcd, 0x4d, 0x4f, 0x83, 0xc6, 0x5a,
-0x5c, 0x58, 0x85, 0x10, 0x33, 0xfe, 0x11, 0x5a,
-0xaa, 0xf9, 0x32, 0xa2, 0x99, 0xb9, 0x1d, 0xec,
-0xd5, 0x3c, 0x4c, 0x06, 0xdb, 0x85, 0x65, 0xda,
-0x22, 0x1e, 0x61, 0xcc, 0xc0, 0x2f, 0xa8, 0x6c,
-0x20, 0xe9, 0x49, 0xfc, 0xa3, 0x74, 0xe6, 0x1e,
-0x60, 0x3f, 0xd3, 0x96, 0x24, 0x61, 0x5b, 0x01,
-0x3e, 0xbf, 0x34, 0xef, 0xf6, 0x45, 0x9b, 0xc5,
-0x19, 0xfa, 0x81, 0x90, 0xbb, 0xa1, 0xf0, 0x69,
-0x31, 0x99, 0xff, 0xf3, 0x02, 0xe0, 0xaf, 0xed,
-0x28, 0x9d, 0x9e, 0x2a, 0x8d, 0x87, 0xbd, 0x94,
-0x9a, 0xd8, 0x20, 0xeb, 0x49, 0x71, 0xc8, 0xf2,
-0xa1, 0xbd, 0xa2, 0x76, 0x52, 0x7b, 0x4e, 0x0a,
-0xfe, 0x51, 0x23, 0x9a, 0x1b, 0x8d, 0x47, 0x91,
-0xc7, 0x1f, 0xdd, 0x42, 0x7c, 0xbf, 0x95, 0x41,
-0x66, 0xba, 0x98, 0x2f, 0x8d, 0x79, 0xdc, 0xd4,
-0xda, 0x68, 0xf6, 0xff, 0x48, 0xb7, 0xb9, 0x5e,
-0xd7, 0x9a, 0x98, 0x25, 0x54, 0x5a, 0x04, 0xad,
-0xac, 0xac, 0x51, 0x0e, 0xb9, 0x87, 0x63, 0x81,
-0xb0, 0x21, 0xd2, 0x1a, 0x7c, 0x19, 0xb6, 0x32,
-0x3a, 0x64, 0xf6, 0xff, 0x34, 0xaf, 0x90, 0x1e,
-0xd7, 0x0d, 0x37, 0xec, 0x1d, 0xf0, 0x78, 0x48,
-0x35, 0xcc, 0x04, 0x69, 0x87, 0x84, 0xf8, 0x47,
-0xc5, 0x2b, 0x3b, 0xd4, 0xc2, 0x7b, 0x17, 0xed,
-0xf4, 0x9b, 0xe2, 0x5f, 0xd5, 0x14, 0x9a, 0x68,
-0xfe, 0x69, 0xcb, 0x4a, 0x72, 0x9d, 0xba, 0x8a,
-0x4e, 0xe7, 0x30, 0x00, 0xf1, 0x00, 0x99, 0x8e,
-0xc0, 0xc0, 0xcf, 0x81, 0x01, 0xfe, 0xc3, 0x06,
-0x18, 0x36, 0xc5, 0xbf, 0xee, 0x81, 0x3f, 0x22,
-0xc8, 0xb1, 0x96, 0xcb, 0xdf, 0x85, 0x3f, 0x04,
-0x66, 0x47, 0x6d, 0x3f, 0x46, 0xfc, 0x73, 0x35,
-0x70, 0xeb, 0x70, 0xe6, 0xb0, 0xf8, 0x5d, 0xe9,
-0x4b, 0x36, 0xc5, 0x37, 0xab, 0xde, 0xec, 0xff,
-0xb9, 0x3e, 0x9c, 0x77, 0x51, 0xd8, 0xcf, 0xfd,
-0xf3, 0x03, 0x30, 0xa6, 0x55, 0xf6, 0xdb, 0x5e,
-0xe2, 0x78, 0xc0, 0x3b, 0xef, 0x24, 0x47, 0x44,
-0x5c, 0xf0, 0xf6, 0x6e, 0x36, 0xfb, 0x7f, 0xb4,
-0xb4, 0x0b, 0xda, 0x55, 0x56, 0x15, 0xb5, 0xf6,
-0x88, 0xd7, 0xc1, 0x07, 0x71, 0xd8, 0xa3, 0x5d,
-0x64, 0xa5, 0xa3, 0xd6, 0x61, 0x52, 0xa9, 0x1d,
-0xda, 0x38, 0xb9, 0xf0, 0xbe, 0x1e, 0x53, 0xfe,
-0x67, 0xd7, 0xe4, 0xa7, 0x60, 0x57, 0xa8, 0x38,
-0x80, 0x30, 0x2c, 0x17, 0xfe, 0xa7, 0x92, 0xdf,
-0xdf, 0xb6, 0xd2, 0x8e, 0x8f, 0x1d, 0x9e, 0xdb,
-0x9f, 0xb9, 0x10, 0xa6, 0xde, 0xb3, 0xa6, 0x33,
-0x7f, 0x60, 0xe9, 0x22, 0x62, 0xc6, 0x1b, 0x41,
-0x6d, 0x97, 0x5a, 0xec, 0x47, 0x7b, 0xed, 0x5e,
-0x78, 0xc6, 0x80, 0x79, 0xd9, 0x27, 0x15, 0x1e,
-0xff, 0xa2, 0xf6, 0xac, 0xa9, 0xda, 0x13, 0xe4,
-0x7d, 0xed, 0xb6, 0xef, 0xe1, 0x09, 0x9a, 0x58,
-0x7f, 0x5f, 0xae, 0x8f, 0xe7, 0x56, 0x36, 0x66,
-0xb8, 0xdc, 0x12, 0xcf, 0x1f, 0x8b, 0xe3, 0x1f,
-0xa1, 0x50, 0xcf, 0x90, 0xd2, 0x6d, 0xbe, 0xc7,
-0xeb, 0xd4, 0xc1, 0xeb, 0xb7, 0x5d, 0xf7, 0x76,
-0xc2, 0x3f, 0xc9, 0xf3, 0xb5, 0xc6, 0xa5, 0x4a,
-0xcd, 0x1a, 0xbe, 0x65, 0x39, 0x02, 0xd1, 0xf9,
-0xdc, 0xde, 0x1c, 0x31, 0x34, 0xb2, 0xb5, 0x53,
-0x2c, 0x81, 0xdf, 0xab, 0x6e, 0x5f, 0x46, 0x8f,
-0x78, 0xd0, 0xf4, 0x3c, 0x51, 0x18, 0xf7, 0x56,
-0x2a, 0x86, 0x5b, 0x0c, 0xb7, 0x4d, 0x2f, 0x87,
-0x3d, 0x4a, 0x1c, 0x08, 0x8d, 0x28, 0x1f, 0x42,
-0x65, 0xf4, 0xee, 0x5d, 0xf8, 0x53, 0x12, 0xff,
-0x8c, 0xc2, 0x6b, 0x74, 0x7e, 0x48, 0x0a, 0x4f,
-0x3a, 0xaf, 0x5d, 0xd1, 0x0d, 0xfc, 0xb3, 0x0f,
-0x7e, 0x6e, 0xe4, 0x7b, 0x34, 0x3d, 0x20, 0x5c,
-0x15, 0x4a, 0xfb, 0x6c, 0xa3, 0x72, 0x28, 0x71,
-0x5e, 0x7a, 0x61, 0x19, 0x69, 0x61, 0x76, 0xd5,
-0xc1, 0xa3, 0x69, 0x3d, 0xd0, 0x81, 0xfa, 0xd4,
-0x50, 0xc4, 0x3f, 0xc3, 0xfd, 0x60, 0x71, 0xd2,
-0xdd, 0x8d, 0xf6, 0x21, 0x79, 0x8f, 0x18, 0x32,
-0xe1, 0x1f, 0xbb, 0xd0, 0xa2, 0xff, 0xf0, 0x84,
-0x25, 0x9c, 0x3d, 0x64, 0xc4, 0xbf, 0x22, 0x2e,
-0xb2, 0x4d, 0xda, 0x9b, 0x56, 0xa2, 0x23, 0xde,
-0x76, 0x66, 0xbc, 0xd8, 0x6b, 0x57, 0x6e, 0xec,
-0x9a, 0x11, 0x32, 0xc9, 0x1f, 0x42, 0x1b, 0x55,
-0x95, 0xa1, 0x76, 0x6b, 0xe6, 0xe7, 0x51, 0xbf,
-0xde, 0x85, 0x40, 0x71, 0x87, 0xea, 0xd0, 0x45,
-0x42, 0xac, 0xc2, 0x76, 0x97, 0x0a, 0xbf, 0x22,
-0x66, 0xfc, 0x63, 0x55, 0x03, 0x2d, 0xea, 0x3c,
-0x96, 0x15, 0xf6, 0x73, 0xb7, 0x4f, 0x37, 0x7f,
-0xfe, 0x6d, 0xf0, 0xa5, 0x63, 0x16, 0x4f, 0x73,
-0x72, 0xc2, 0xc7, 0x3c, 0x22, 0xec, 0x6f, 0x0a,
-0x25, 0xf1, 0xcf, 0x4d, 0xd1, 0xda, 0x71, 0x65,
-0x01, 0x7b, 0x60, 0xb4, 0xe0, 0xbc, 0x74, 0x19,
-0xaa, 0x7a, 0x93, 0xf1, 0xaf, 0x46, 0xf1, 0x92,
-0x74, 0x5e, 0xe3, 0xf8, 0xb9, 0xa0, 0xcb, 0x84,
-0x7f, 0x2e, 0xc0, 0x09, 0xa9, 0x72, 0xd0, 0x79,
-0x3e, 0x67, 0x85, 0xf4, 0xde, 0x86, 0xb2, 0x53,
-0xeb, 0x7f, 0x2c, 0xba, 0xc9, 0xd1, 0x6c, 0x23,
-0x7e, 0x7a, 0x3e, 0x34, 0xe0, 0x2e, 0xc8, 0x5f,
-0xfc, 0x6a, 0x8e, 0xcb, 0x14, 0xff, 0xfa, 0x08,
-0x41, 0xe9, 0xac, 0x41, 0xfa, 0x85, 0x7d, 0x41,
-0xf3, 0x8b, 0x50, 0x14, 0xcd, 0xea, 0x26, 0x33,
-0x60, 0x7d, 0x03, 0x4f, 0x04, 0xf2, 0x7c, 0x10,
-0x6e, 0x7f, 0xc4, 0x1e, 0xa2, 0xab, 0x89, 0x2b,
-0x11, 0x7f, 0x8f, 0xa0, 0xfd, 0xc5, 0xc0, 0x79,
-0x82, 0xce, 0x21, 0x77, 0xa9, 0x4d, 0xaa, 0x11,
-0x5f, 0x1e, 0xca, 0x6d, 0x52, 0x63, 0xf6, 0x45,
-0x63, 0x50, 0xb0, 0x03, 0x15, 0x88, 0xdb, 0x14,
-0xff, 0xfa, 0x17, 0xd2, 0xe2, 0x2f, 0x41, 0xd8,
-0x63, 0x5f, 0x81, 0xfb, 0xa1, 0xa8, 0x17, 0xf1,
-0xe7, 0x19, 0x04, 0xd2, 0x06, 0x9e, 0xfc, 0x94,
-0x3c, 0xc5, 0xec, 0x8c, 0xb6, 0x13, 0x57, 0x32,
-0x3f, 0x79, 0xf2, 0x47, 0x10, 0x89, 0x54, 0xea,
-0x8b, 0xc3, 0xf2, 0x0a, 0x84, 0xb5, 0x65, 0xb8,
-0x1f, 0x6a, 0x1e, 0xe4, 0x03, 0x7d, 0x52, 0x58,
-0xfc, 0xb3, 0xe3, 0x40, 0x9f, 0x2b, 0x7b, 0xf1,
-0x66, 0x51, 0x31, 0xc5, 0xbf, 0x7a, 0xd4, 0x71,
-0xbe, 0x2c, 0x61, 0xdc, 0x06, 0x7c, 0x59, 0xe4,
-0xf3, 0xa4, 0x02, 0x07, 0x7b, 0x39, 0x3e, 0x1c,
-0xc2, 0xcd, 0xf5, 0x4a, 0x64, 0x89, 0x26, 0x0f,
-0x9b, 0xe2, 0x5f, 0xdb, 0xb8, 0x76, 0xd3, 0xd7,
-0x86, 0xc5, 0xb5, 0xf4, 0x1d, 0x63, 0x9b, 0xdd,
-0xe8, 0x94, 0x0e, 0x49, 0x71, 0xff, 0xcf, 0x30,
-0x5f, 0xff, 0xb0, 0x19, 0xff, 0xa4, 0x65, 0xb1,
-0xdd, 0x6a, 0x81, 0x4e, 0x47, 0xc5, 0x9f, 0xe0,
-0x7c, 0xdc, 0x06, 0x3d, 0xa8, 0x88, 0xd7, 0x4b,
-0x86, 0x23, 0xe8, 0xe3, 0xbe, 0xc0, 0x52, 0x1c,
-0xfc, 0xda, 0x94, 0xff, 0x8c, 0xf8, 0x07, 0xc2,
-0x43, 0x33, 0x38, 0xcc, 0x5b, 0x8b, 0xaf, 0xe9,
-0xd4, 0x33, 0xb6, 0x27, 0x1d, 0x17, 0x51, 0xd4,
-0x2e, 0x68, 0x98, 0x3b, 0x96, 0x9d, 0x4d, 0xe8,
-0xbb, 0x51, 0x01, 0x95, 0xbe, 0xdf, 0x37, 0x44,
-0x1f, 0x25, 0xdf, 0x5d, 0xf5, 0x04, 0x4f, 0x83,
-0x59, 0x49, 0x2a, 0xd1, 0xc2, 0x9a, 0xce, 0x07,
-0x6f, 0x6b, 0xbf, 0x60, 0xd3, 0x55, 0xb9, 0x8e,
-0x5c, 0x49, 0x9c, 0xaf, 0x3b, 0xa9, 0x55, 0x1a,
-0x0d, 0x3f, 0x32, 0xb2, 0xb8, 0x5c, 0xfe, 0x2d,
-0xbc, 0x2a, 0x54, 0x8c, 0xac, 0x77, 0x89, 0x56,
-0xf8, 0x18, 0xc2, 0xba, 0x6d, 0xbe, 0x18, 0x81,
-0xcf, 0xb4, 0x39, 0x77, 0xd8, 0x2a, 0x9a, 0x7e,
-0x4f, 0x26, 0xe6, 0x6b, 0x37, 0xf1, 0x65, 0xb1,
-0x45, 0xe4, 0xd1, 0xa6, 0xd8, 0xfa, 0xe0, 0xfe,
-0x39, 0x49, 0xde, 0xa1, 0xf3, 0x0c, 0x47, 0x10,
-0x41, 0xfc, 0x03, 0xb6, 0x0d, 0xe2, 0x60, 0xe2,
-0x3c, 0xf2, 0xf8, 0xd7, 0x25, 0xa8, 0x7c, 0x0b,
-0x61, 0xf9, 0x8a, 0xc8, 0xa1, 0xd8, 0x31, 0x74,
-0xc2, 0xa1, 0xe5, 0x95, 0xb1, 0x7c, 0xbc, 0xdf,
-0x08, 0x25, 0x7f, 0xc4, 0xfd, 0x46, 0x92, 0xf9,
-0x9f, 0x1b, 0x36, 0xa3, 0xb4, 0x2c, 0x3e, 0x1e,
-0x98, 0x5d, 0x64, 0x55, 0xd7, 0x40, 0x31, 0xca,
-0x13, 0x71, 0x2a, 0x59, 0xe3, 0xb8, 0x8d, 0xfb,
-0x7f, 0x4e, 0xc0, 0x2a, 0x7e, 0x45, 0xb7, 0xb8,
-0x4d, 0xfe, 0xde, 0xa7, 0x1d, 0xbb, 0xf4, 0x99,
-0xc3, 0x1c, 0xe6, 0x65, 0x3c, 0x67, 0xbc, 0xaf,
-0xe5, 0x0a, 0xc4, 0x5f, 0xfc, 0xa0, 0xb2, 0x6a,
-0x75, 0x71, 0xb4, 0x6d, 0x25, 0xc9, 0x33, 0xe1,
-0x9f, 0x23, 0x46, 0xf6, 0x42, 0x1d, 0x1e, 0x43,
-0x61, 0x2f, 0x77, 0xfb, 0xb4, 0x13, 0x5b, 0xe1,
-0xe3, 0xb1, 0xc4, 0x86, 0x61, 0x7f, 0x8b, 0xb6,
-0x62, 0x50, 0xde, 0x40, 0x6e, 0x48, 0xf1, 0xff,
-0x5c, 0x61, 0xf3, 0x78, 0x92, 0xf3, 0x30, 0xf9,
-0x28, 0xe6, 0xf6, 0x59, 0xa9, 0xc6, 0xfd, 0x3f,
-0xe3, 0xec, 0xc8, 0xd2, 0xca, 0x6e, 0xdb, 0x08,
-0x02, 0xa1, 0x89, 0xe7, 0x37, 0xfc, 0x3f, 0xbd,
-0x3c, 0xdb, 0x59, 0xf0, 0x49, 0xdc, 0xfb, 0xb1,
-0xa4, 0x11, 0x81, 0x50, 0x2c, 0x10, 0x26, 0x46,
-0x09, 0x4a, 0x6c, 0x6a, 0xf8, 0x7f, 0x26, 0x9e,
-0x9f, 0x2a, 0x67, 0xb4, 0x03, 0xfe, 0x79, 0x5a,
-0x49, 0xf0, 0xc6, 0xc2, 0xb8, 0x7e, 0x34, 0x80,
-0x90, 0x1b, 0x35, 0xac, 0xf8, 0x67, 0x38, 0xc0,
-0xdc, 0xb5, 0xb6, 0x8d, 0x84, 0x24, 0x9e, 0x9f,
-0xfb, 0x7f, 0x5a, 0xee, 0xcc, 0xd2, 0x78, 0xb4,
-0x0b, 0x5a, 0x24, 0x44, 0x2f, 0x9b, 0xb2, 0x25,
-0x69, 0xc2, 0x11, 0x64, 0x6f, 0xf1, 0x76, 0xe8,
-0xf2, 0x53, 0x29, 0xfe, 0x9f, 0xe9, 0xd0, 0xa2,
-0x20, 0xfe, 0x51, 0xee, 0x29, 0x84, 0xe7, 0xb9,
-0x9b, 0x62, 0x23, 0xca, 0x2b, 0x9e, 0x38, 0x64,
-0x09, 0x92, 0x4e, 0xee, 0xc1, 0xf0, 0xe0, 0x3f,
-0x5c, 0x97, 0xd8, 0x6f, 0x20, 0x15, 0xe2, 0xaf,
-0xce, 0x6f, 0xd2, 0x5c, 0x82, 0xda, 0x5f, 0x0b,
-0x55, 0xcb, 0x53, 0xef, 0x28, 0xe4, 0x8e, 0x20,
-0xcd, 0x70, 0x8c, 0x34, 0xd6, 0x2c, 0xd7, 0x0e,
-0xe5, 0x66, 0xb7, 0x26, 0xe2, 0xef, 0xe5, 0x99,
-0x3e, 0x88, 0x08, 0xe5, 0x50, 0xc2, 0x64, 0x55,
-0x19, 0x8e, 0xb9, 0x1d, 0x78, 0xd8, 0xcb, 0x08,
-0xc4, 0x44, 0xe1, 0xa0, 0x54, 0xc6, 0xaf, 0xac,
-0x4b, 0xc4, 0xbf, 0x4e, 0xdc, 0x74, 0xde, 0x72,
-0xb9, 0xba, 0xd2, 0xbb, 0xc4, 0x08, 0x7b, 0x71,
-0xfd, 0xee, 0x15, 0x8f, 0x73, 0xff, 0x4f, 0xb5,
-0x2d, 0x28, 0x5e, 0x86, 0xcb, 0x1a, 0x02, 0x9b,
-0xe3, 0xe2, 0x3f, 0x24, 0xf3, 0x79, 0xd2, 0x76,
-0xc2, 0x65, 0x07, 0x0f, 0x1b, 0xb5, 0x15, 0xaa,
-0x07, 0xf8, 0xfc, 0x41, 0x59, 0x82, 0xb7, 0xc0,
-0xf0, 0x9f, 0xec, 0xd4, 0x0e, 0xf3, 0x2b, 0xbf,
-0x8f, 0xa6, 0x27, 0xe6, 0xaf, 0x54, 0x10, 0x7d,
-0x79, 0xec, 0x53, 0xeb, 0x9a, 0x49, 0x3e, 0x04,
-0xa0, 0x44, 0x90, 0x99, 0x47, 0xcd, 0x38, 0x11,
-0xf7, 0xff, 0x68, 0x01, 0x5f, 0x09, 0xc8, 0xcd,
-0x24, 0x2b, 0x71, 0x1e, 0xa9, 0x84, 0xb0, 0x87,
-0xa9, 0x9e, 0xfa, 0xec, 0x3e, 0x29, 0xd4, 0xe8,
-0xc0, 0xd3, 0x94, 0xbd, 0x11, 0xdf, 0xb7, 0xc8,
-0x78, 0xdf, 0x7e, 0xd6, 0x78, 0xa7, 0xb3, 0x5a,
-0xce, 0x26, 0xd9, 0xc2, 0xc4, 0xfc, 0xbc, 0x29,
-0xcf, 0x48, 0xbb, 0x55, 0x23, 0xff, 0x87, 0x3b,
-0xd6, 0x4a, 0x34, 0x3c, 0xb6, 0xcb, 0xe1, 0x49,
-0x5c, 0xd8, 0x1b, 0x71, 0xfd, 0x2d, 0x6d, 0x86,
-0x63, 0xad, 0x23, 0x3d, 0x71, 0xff, 0xd0, 0x64,
-0xee, 0xdd, 0x72, 0x57, 0x5b, 0x83, 0x62, 0x21,
-0x35, 0x9e, 0x3f, 0x4f, 0x4c, 0x6b, 0x8a, 0x01,
-0xdd, 0x9c, 0x3f, 0xd7, 0xb6, 0x6c, 0xc1, 0x2b,
-0x9b, 0xff, 0x8b, 0xc3, 0x14, 0xff, 0x7a, 0x56,
-0x3b, 0x0b, 0xfb, 0xf8, 0x36, 0x18, 0x22, 0xc6,
-0xfa, 0x6c, 0x24, 0x9d, 0x19, 0xa7, 0x62, 0xfe,
-0x9f, 0xd7, 0xe9, 0xb8, 0x13, 0x07, 0xd9, 0xf2,
-0x39, 0x13, 0xfe, 0xd9, 0xa2, 0x8d, 0x4d, 0x9e,
-0x07, 0x25, 0x50, 0x83, 0xeb, 0x2f, 0x54, 0x0a,
-0x7f, 0xcf, 0x81, 0x10, 0x5a, 0x59, 0xb0, 0x8e,
-0x89, 0xa7, 0xd4, 0x08, 0xb8, 0x33, 0x70, 0xfd,
-0x89, 0x39, 0xfe, 0xa5, 0xed, 0xf7, 0xdb, 0x1b,
-0x29, 0xcf, 0xff, 0x69, 0xc5, 0xcf, 0xb6, 0x84,
-0x3b, 0x82, 0x5a, 0x63, 0x89, 0x40, 0x63, 0x70,
-0x44, 0xb3, 0x07, 0xdb, 0x3e, 0x20, 0x16, 0x93,
-0xff, 0xe7, 0x1b, 0xc2, 0x76, 0x9f, 0x43, 0x2f,
-0x72, 0xa5, 0x3b, 0x63, 0xf6, 0x42, 0x39, 0xb1,
-0x8a, 0x4d, 0xb1, 0xc4, 0xb9, 0x37, 0xa0, 0x91,
-0xf9, 0x74, 0x39, 0x0f, 0xe7, 0x27, 0xfd, 0x3f,
-0x79, 0xc2, 0x76, 0x92, 0xff, 0x1a, 0x37, 0x63,
-0xf5, 0x27, 0xf8, 0x69, 0xbd, 0x97, 0x54, 0xd0,
-0xa6, 0x98, 0x23, 0xf7, 0x2d, 0xd8, 0xd4, 0x97,
-0xaf, 0xc9, 0xb5, 0x44, 0x4d, 0xc4, 0x3b, 0xba,
-0x02, 0xd7, 0xa5, 0xbd, 0xc4, 0xe6, 0x8f, 0x94,
-0xfc, 0x4c, 0x9c, 0x06, 0x5f, 0x86, 0x17, 0x44,
-0xe5, 0x31, 0x79, 0x1a, 0xbc, 0x31, 0xbc, 0x20,
-0x9a, 0xb5, 0x52, 0xfc, 0x82, 0x1c, 0x65, 0xdb,
-0x4f, 0xdb, 0xc6, 0xd0, 0xc2, 0x9b, 0xd8, 0x6f,
-0xf4, 0xa6, 0x2e, 0xbe, 0x6d, 0x06, 0xb3, 0x76,
-0xa2, 0x74, 0xfd, 0x18, 0xe5, 0x49, 0x96, 0xc9,
-0x9f, 0x3f, 0xa6, 0x7c, 0xca, 0x07, 0x51, 0xb1,
-0x2f, 0x69, 0xff, 0xfe, 0xe2, 0x0b, 0xe5, 0x32,
-0xab, 0x3a, 0x65, 0xbd, 0x64, 0xab, 0xd4, 0x8e,
-0x06, 0x2a, 0xb9, 0xda, 0xaa, 0x84, 0xa3, 0xec,
-0x96, 0x21, 0x1c, 0x7c, 0x01, 0xbf, 0xe1, 0x89,
-0x40, 0x6f, 0x89, 0x90, 0x38, 0x5f, 0x3c, 0xff,
-0xe7, 0x25, 0xa5, 0x98, 0xe3, 0xbd, 0xcd, 0xfa,
-0x73, 0x80, 0x62, 0xe4, 0x9b, 0x6d, 0x28, 0x7f,
-0x82, 0x5b, 0xb8, 0x7c, 0x18, 0xd4, 0x8e, 0xab,
-0xf9, 0x5a, 0x5b, 0xc6, 0x3d, 0x45, 0xe9, 0x13,
-0xf3, 0x11, 0xd1, 0x23, 0xa8, 0x2b, 0xee, 0x77,
-0xcc, 0x26, 0x3c, 0xf0, 0x37, 0x5d, 0x6f, 0xf5,
-0x5a, 0x2a, 0xe0, 0x71, 0xb8, 0x9f, 0x7b, 0x84,
-0xee, 0x25, 0xab, 0xa4, 0x7c, 0x26, 0xdf, 0x63,
-0x49, 0xe6, 0x3f, 0x17, 0x4a, 0x07, 0xa5, 0xed,
-0x28, 0x76, 0xf0, 0xfe, 0x6b, 0x95, 0xad, 0x5c,
-0xfe, 0xe4, 0x91, 0x4c, 0xf8, 0x55, 0x4c, 0x9e,
-0x1f, 0x80, 0xa7, 0x42, 0x2a, 0x93, 0x0b, 0x49,
-0x5d, 0xf2, 0x79, 0xd2, 0x3a, 0x83, 0xe3, 0xbd,
-0x55, 0xfa, 0xe2, 0xd1, 0x9c, 0x0a, 0x38, 0x1a,
-0x7b, 0xcd, 0x62, 0x78, 0x2f, 0x16, 0x5f, 0xf8,
-0x00, 0x0e, 0x44, 0xdd, 0x41, 0xb9, 0xbd, 0xe9,
-0x87, 0x66, 0xfc, 0xa3, 0x8c, 0x77, 0xc6, 0xdd,
-0x3e, 0xb8, 0x2c, 0xbd, 0x4b, 0x76, 0x8a, 0xdb,
-0xa4, 0x8f, 0x63, 0xff, 0xf0, 0x23, 0x36, 0x06,
-0xfb, 0xed, 0x72, 0xf3, 0xf7, 0x4c, 0xfe, 0x1f,
-0x78, 0x04, 0x0f, 0xdd, 0x02, 0xae, 0x8f, 0x46,
-0x28, 0xb7, 0x5e, 0x6d, 0x51, 0xb9, 0x42, 0x3d,
-0x1a, 0x4b, 0x04, 0xaa, 0x45, 0x69, 0x5e, 0x5a,
-0x2b, 0x87, 0xb7, 0x44, 0x4c, 0xfe, 0x9f, 0x65,
-0xb0, 0x3b, 0xc0, 0xf5, 0xaf, 0x36, 0x02, 0x32,
-0xd7, 0x5f, 0x4e, 0xd4, 0x47, 0xef, 0xf0, 0xfc,
-0x5b, 0x54, 0xc4, 0xca, 0xf3, 0xfd, 0xf6, 0x7b,
-0x50, 0xa2, 0x0e, 0x27, 0xf1, 0xcf, 0x94, 0x19,
-0xd0, 0x23, 0xcc, 0xd0, 0x49, 0x98, 0xac, 0x80,
-0x17, 0xa1, 0xa4, 0xb7, 0xad, 0x3d, 0x7b, 0x85,
-0x10, 0x4f, 0x04, 0x3a, 0x83, 0x50, 0x61, 0x06,
-0xb3, 0x6c, 0x26, 0xa1, 0x14, 0xff, 0x33, 0x5f,
-0x9f, 0xa2, 0x58, 0x98, 0xc3, 0xfa, 0x16, 0x1e,
-0xc3, 0x15, 0x62, 0x3c, 0xf1, 0xac, 0x0f, 0x8d,
-0x4b, 0x15, 0x64, 0x21, 0xbd, 0x6f, 0x55, 0x62,
-0xf9, 0x51, 0xfe, 0x8c, 0x57, 0xdf, 0x3a, 0x58,
-0x74, 0x56, 0xfc, 0x04, 0xad, 0xef, 0x79, 0x11,
-0xdc, 0xed, 0x2b, 0xe0, 0x2f, 0xd4, 0x58, 0x1f,
-0x9e, 0x68, 0xcf, 0x25, 0x52, 0x23, 0x4b, 0xe0,
-0x9f, 0x2d, 0x37, 0x8d, 0xc2, 0x02, 0x87, 0xed,
-0xe0, 0x5d, 0xe7, 0x0a, 0x2e, 0x85, 0x50, 0x7f,
-0x9d, 0xb0, 0x69, 0xe2, 0x66, 0x38, 0x24, 0xa1,
-0x22, 0x3b, 0xd7, 0x34, 0x8a, 0xaa, 0xea, 0x15,
-0xe1, 0x66, 0x26, 0x0e, 0xd7, 0x26, 0xfd, 0x2d,
-0xa3, 0xf0, 0x27, 0x69, 0x2e, 0x58, 0x41, 0xdc,
-0x08, 0x87, 0xd9, 0x5c, 0x75, 0x5a, 0x40, 0xac,
-0x94, 0x06, 0x89, 0x81, 0x7f, 0x2e, 0xb1, 0x0b,
-0x4a, 0xa9, 0x86, 0xd0, 0x7a, 0xd4, 0xe4, 0xff,
-0xf9, 0x02, 0xbf, 0x81, 0xc8, 0x1c, 0x8c, 0xd8,
-0x11, 0x28, 0x16, 0xe5, 0xd3, 0x00, 0x31, 0x22,
-0x62, 0x3c, 0x11, 0xfa, 0x92, 0x8e, 0x2f, 0xfe,
-0x2d, 0x6b, 0x98, 0x44, 0x4d, 0xfe, 0x1f, 0x9d,
-0x34, 0x82, 0x84, 0x76, 0x70, 0x3a, 0x43, 0xc1,
-0x3b, 0x03, 0xbe, 0x03, 0xcb, 0xd6, 0x5a, 0x37,
-0x4a, 0xaa, 0xbe, 0xc8, 0xe5, 0x19, 0x50, 0xc3,
-0x6a, 0xe1, 0xc0, 0x22, 0x97, 0x3d, 0xe9, 0x7f,
-0xd6, 0xd3, 0x50, 0x68, 0x07, 0x10, 0x44, 0x35,
-0x72, 0x7b, 0x16, 0x8a, 0xa8, 0x25, 0x40, 0xb6,
-0x41, 0xab, 0xd2, 0xa1, 0xdf, 0x18, 0x26, 0x23,
-0xca, 0x0e, 0xa9, 0x23, 0x8a, 0x88, 0x28, 0x99,
-0xff, 0xa3, 0x09, 0x9f, 0xc2, 0xab, 0x7a, 0x99,
-0xdd, 0x5a, 0xd8, 0xd4, 0x84, 0xda, 0xa4, 0x8c,
-0x5a, 0xac, 0x05, 0xdb, 0xe0, 0x1d, 0xe6, 0xd6,
-0x6f, 0x0e, 0xe7, 0x8c, 0x48, 0x17, 0xde, 0x76,
-0x8f, 0xe2, 0x42, 0x0d, 0x9a, 0xe2, 0x5f, 0xeb,
-0x5a, 0x0d, 0x27, 0x6a, 0x54, 0x1c, 0x83, 0xcb,
-0xc1, 0xaa, 0xd0, 0x63, 0xfa, 0xa4, 0x4b, 0xea,
-0x95, 0x40, 0x3c, 0xfe, 0x75, 0x89, 0x55, 0xfa,
-0x8b, 0x47, 0xcd, 0xf9, 0xcf, 0xb0, 0x0d, 0x0e,
-0xdd, 0x13, 0x96, 0xac, 0x21, 0x31, 0x9f, 0x46,
-0x94, 0x79, 0x92, 0xb5, 0x39, 0x67, 0x04, 0x0e,
-0x22, 0x10, 0x35, 0x1c, 0x95, 0x28, 0xd8, 0x83,
-0xce, 0x54, 0xfc, 0xe3, 0x94, 0xda, 0x98, 0x7d,
-0x93, 0x23, 0x24, 0x3e, 0xa0, 0x37, 0x82, 0xfa,
-0x0b, 0xf1, 0x31, 0xb0, 0xc1, 0x0b, 0x01, 0xbe,
-0x7f, 0xe0, 0x12, 0x45, 0xc3, 0x7c, 0x23, 0x84,
-0xcd, 0xf1, 0xaf, 0x29, 0x1a, 0x2e, 0x8b, 0x0a,
-0xd4, 0xe2, 0xc1, 0xc1, 0x16, 0x07, 0x64, 0x58,
-0xa5, 0x23, 0x5a, 0x2b, 0xab, 0x8f, 0x25, 0xee,
-0x76, 0xc3, 0x83, 0x0d, 0xe0, 0x4a, 0xf1, 0xff,
-0x5c, 0x07, 0xab, 0x98, 0xda, 0xe9, 0xf8, 0x8e,
-0xff, 0x1e, 0xf2, 0x6b, 0x96, 0xaf, 0x2e, 0xfa,
-0x3b, 0x32, 0x0d, 0x9e, 0x65, 0x3f, 0x30, 0x02,
-0x43, 0xd6, 0x97, 0x43, 0xc5, 0x68, 0x94, 0x13,
-0x73, 0xfc, 0x8b, 0x40, 0x6f, 0xc8, 0x05, 0x56,
-0x8b, 0x58, 0x8d, 0xe0, 0xbe, 0xbc, 0xf6, 0xa6,
-0xcc, 0xa6, 0x01, 0xad, 0xcf, 0x5f, 0xae, 0xdb,
-0xca, 0xc5, 0x81, 0xdc, 0xcf, 0x42, 0x15, 0x41,
-0xeb, 0xfc, 0x14, 0xff, 0xcf, 0x4e, 0xed, 0x32,
-0xec, 0x65, 0x69, 0x83, 0x05, 0xa3, 0xda, 0x9f,
-0x95, 0x2a, 0xcd, 0xa6, 0x15, 0x9c, 0x54, 0x2e,
-0xc0, 0xdc, 0x7e, 0xdb, 0x59, 0xf1, 0x32, 0xbd,
-0xa8, 0x54, 0x81, 0x2d, 0xc5, 0xff, 0x83, 0xf8,
-0x67, 0x9c, 0xd8, 0x17, 0x5a, 0x55, 0xbb, 0xce,
-0xfd, 0xff, 0x5c, 0x1b, 0x6e, 0x83, 0x8b, 0xcc,
-0x48, 0x44, 0xff, 0x54, 0x8f, 0xe0, 0x41, 0x58,
-0x12, 0xae, 0x31, 0xe5, 0xff, 0x08, 0x9b, 0xd4,
-0x57, 0x10, 0xdf, 0xd1, 0x06, 0xc8, 0x23, 0xab,
-0x20, 0x1f, 0xda, 0x78, 0x22, 0xe5, 0xcb, 0xb1,
-0xb4, 0x81, 0x4b, 0xd0, 0x0c, 0x33, 0x41, 0x6e,
-0xf0, 0x24, 0xeb, 0xbf, 0x74, 0xe5, 0x9f, 0xb9,
-0x93, 0x47, 0xa5, 0x11, 0xf7, 0x31, 0xb5, 0x93,
-0xa3, 0x3b, 0xdd, 0xff, 0xb4, 0xd4, 0xcd, 0x66,
-0x1a, 0xef, 0xbb, 0x61, 0x83, 0xff, 0xfe, 0xd0,
-0xa1, 0x95, 0xf6, 0x64, 0xfd, 0x5d, 0x9d, 0x72,
-0x18, 0x76, 0x04, 0x7d, 0x5d, 0xb4, 0x1c, 0x41,
-0xc5, 0xd6, 0x85, 0x85, 0x85, 0x32, 0x2d, 0x5a,
-0x4b, 0xbb, 0xb5, 0x98, 0x23, 0x5a, 0x78, 0xb2,
-0xdd, 0xa1, 0xc8, 0xa9, 0xf9, 0x3f, 0xbb, 0xb5,
-0x2f, 0xd8, 0x8f, 0x98, 0xf5, 0xa3, 0xef, 0x8d,
-0xe1, 0x46, 0x9e, 0xcb, 0x96, 0x0c, 0x93, 0x2e,
-0xeb, 0x15, 0x57, 0x51, 0x2c, 0x10, 0xf6, 0x2e,
-0x2b, 0xdd, 0x88, 0x83, 0x0b, 0x09, 0x79, 0x6e,
-0xe0, 0x1f, 0xad, 0x42, 0x9a, 0xc5, 0x26, 0x9f,
-0x02, 0xaa, 0xed, 0xc9, 0xb6, 0x35, 0x73, 0x7b,
-0x1c, 0x51, 0xa9, 0x81, 0x7f, 0x86, 0x63, 0x1e,
-0xa1, 0xd4, 0xfc, 0xe7, 0xf1, 0x90, 0x9b, 0xa7,
-0xb5, 0x0c, 0xc1, 0x81, 0x66, 0x77, 0x9d, 0x75,
-0x93, 0xd8, 0xa9, 0x8d, 0x37, 0xfe, 0x4c, 0x5b,
-0x1f, 0x4b, 0x7c, 0x75, 0xff, 0xd0, 0xd6, 0x9e,
-0x92, 0xff, 0xb3, 0x9c, 0xee, 0xa6, 0xff, 0xa4,
-0xd1, 0x1b, 0x48, 0xb3, 0xd6, 0xa8, 0xab, 0x3e,
-0x7a, 0x9d, 0xb8, 0x1c, 0x76, 0xb7, 0xcf, 0xd3,
-0x32, 0x0c, 0xc7, 0x8e, 0x54, 0xb4, 0x4c, 0x6e,
-0x47, 0xc4, 0x65, 0x8e, 0x7f, 0xed, 0x26, 0x45,
-0xdf, 0xb8, 0xd3, 0x40, 0x3b, 0xca, 0xe9, 0x18,
-0xec, 0x49, 0xc4, 0xbf, 0x76, 0x73, 0x0f, 0xc6,
-0xc6, 0x94, 0xfc, 0x1f, 0x09, 0x76, 0x6b, 0x2a,
-0xe2, 0x1f, 0x7b, 0xb3, 0xd0, 0x04, 0xaa, 0x56,
-0xa4, 0x78, 0x6a, 0xe9, 0x76, 0xcd, 0xa9, 0x65,
-0x28, 0xf6, 0xd7, 0x84, 0xed, 0x1a, 0xf5, 0xca,
-0xb9, 0xc4, 0x9f, 0xf4, 0xff, 0xa4, 0xf9, 0x10,
-0xff, 0x17, 0x09, 0x99, 0x8c, 0x74, 0x21, 0xde,
-0xeb, 0x66, 0x77, 0x33, 0xc3, 0xf1, 0x55, 0x12,
-0x77, 0x7c, 0x09, 0xd9, 0x7c, 0x60, 0xaa, 0xff,
-0x9a, 0xf2, 0xb9, 0xf4, 0x53, 0xed, 0x15, 0x2f,
-0x82, 0x9c, 0x9d, 0xe4, 0x8f, 0x50, 0xa5, 0xad,
-0xf2, 0x8a, 0x9d, 0x0a, 0x87, 0x3d, 0x93, 0x78,
-0x20, 0xec, 0xb2, 0x76, 0xb3, 0x97, 0xd7, 0x7f,
-0x91, 0x24, 0xfe, 0x19, 0x0a, 0xfd, 0x49, 0xab,
-0xf2, 0x5a, 0x8f, 0xcb, 0x9b, 0xe0, 0x03, 0x98,
-0xab, 0x4d, 0xf3, 0x8a, 0x73, 0xe0, 0xb2, 0x52,
-0xc2, 0xe7, 0xe3, 0xfa, 0xf8, 0xe6, 0xd7, 0xd9,
-0x06, 0xc5, 0xd5, 0x66, 0xff, 0x0f, 0x04, 0x08,
-0x1a, 0x4d, 0x6b, 0xec, 0x2a, 0xc4, 0x0a, 0xc1,
-0xbe, 0xa7, 0x42, 0x8f, 0xf7, 0x41, 0x03, 0xff,
-0x84, 0x7a, 0xf2, 0x4b, 0xa8, 0xec, 0xf7, 0x9b,
-0xe2, 0x5f, 0xb7, 0x0f, 0xc1, 0x06, 0xad, 0xcb,
-0x4b, 0xb3, 0x4b, 0xfa, 0x11, 0x1f, 0x2e, 0x47,
-0xa0, 0x68, 0xa9, 0x85, 0xed, 0xaa, 0x33, 0x1e,
-0x08, 0xf3, 0xad, 0xb8, 0x67, 0x91, 0x92, 0x9d,
-0x1a, 0xff, 0x6a, 0xa9, 0xe1, 0xf1, 0xc7, 0x2c,
-0x2e, 0x7f, 0x96, 0xd5, 0xe0, 0xea, 0x15, 0x26,
-0xd6, 0x53, 0xd9, 0xad, 0x3c, 0xe8, 0xc5, 0x81,
-0x29, 0xfe, 0x35, 0xf9, 0x0c, 0xbc, 0xa5, 0xcd,
-0x7b, 0xd8, 0x19, 0x2c, 0xe8, 0x6f, 0xbe, 0x9f,
-0x95, 0x79, 0xd3, 0x6f, 0x98, 0x8e, 0xdf, 0x4b,
-0x2d, 0x89, 0x27, 0x36, 0xd7, 0xcd, 0xf3, 0xad,
-0x0f, 0x4e, 0xea, 0x4a, 0x8d, 0x7f, 0x75, 0xcd,
-0x5b, 0x6e, 0x53, 0x6a, 0x9e, 0x85, 0xf1, 0xcd,
-0x3c, 0x0d, 0xfe, 0x55, 0x9c, 0xa6, 0xfe, 0x2c,
-0x3e, 0x5f, 0xfa, 0x59, 0x1d, 0x02, 0xa7, 0x8f,
-0x52, 0xf3, 0x7f, 0x48, 0x19, 0x38, 0xd9, 0xab,
-0x3e, 0x38, 0x51, 0x5b, 0xa6, 0x64, 0x35, 0x17,
-0xc4, 0xc2, 0x8e, 0x36, 0x56, 0xc0, 0xb7, 0x62,
-0x59, 0x9e, 0xb5, 0x51, 0x34, 0xe7, 0xff, 0x50,
-0x44, 0x46, 0x05, 0x9b, 0xe8, 0x69, 0x71, 0x65,
-0x60, 0x5d, 0x60, 0x2b, 0x93, 0x47, 0x48, 0x79,
-0x60, 0x9d, 0xab, 0xa4, 0x91, 0xc7, 0xbf, 0xe8,
-0x9e, 0xb4, 0x5b, 0x3a, 0x68, 0x57, 0xb6, 0x39,
-0xff, 0x67, 0x31, 0xb4, 0x09, 0x33, 0x36, 0xd1,
-0x0a, 0xcb, 0x42, 0xd8, 0xa1, 0xab, 0xf5, 0xb2,
-0x74, 0x87, 0xae, 0x36, 0x49, 0xf5, 0x13, 0x81,
-0x1b, 0x55, 0x41, 0x55, 0x9e, 0x92, 0xff, 0x23,
-0x20, 0x6c, 0x66, 0x01, 0x8d, 0xdc, 0x27, 0x3c,
-0x07, 0xf9, 0xe4, 0x46, 0x8d, 0x1d, 0x23, 0x6b,
-0x84, 0x62, 0xfd, 0xc6, 0x06, 0xcf, 0xc9, 0xc6,
-0x5d, 0x9b, 0x66, 0xaa, 0xd4, 0x9c, 0xff, 0xb3,
-0x8d, 0x66, 0xc1, 0x1b, 0xc1, 0x5b, 0x55, 0xeb,
-0x98, 0xfc, 0x5d, 0xeb, 0x97, 0x4d, 0xb3, 0x43,
-0x77, 0xd7, 0xe1, 0xe9, 0x78, 0x83, 0x2d, 0x88,
-0x4e, 0x5a, 0x29, 0xbe, 0x07, 0x9f, 0x85, 0x4a,
-0x55, 0x67, 0x6a, 0xfe, 0xcf, 0xb6, 0xec, 0x8b,
-0xf9, 0x95, 0x60, 0x48, 0xd7, 0x77, 0x0c, 0xb3,
-0x42, 0x06, 0x03, 0xff, 0x18, 0xf5, 0x5f, 0x17,
-0xef, 0xc0, 0x2b, 0xe1, 0x82, 0x3e, 0x32, 0xb1,
-0x3e, 0x90, 0x76, 0x85, 0xbc, 0xde, 0x58, 0xaa,
-0x5a, 0x97, 0xc2, 0xa3, 0xf0, 0x65, 0xb0, 0xb4,
-0xf0, 0xa6, 0x3a, 0xf1, 0x29, 0xfa, 0x06, 0xc2,
-0x9e, 0x25, 0x63, 0xe2, 0x15, 0xe9, 0xe8, 0xe8,
-0xac, 0xce, 0xf5, 0x63, 0x44, 0x33, 0xf9, 0x7f,
-0xd6, 0x6a, 0x7e, 0x4f, 0x7e, 0x00, 0xee, 0xe9,
-0xf8, 0xcf, 0xc1, 0x35, 0xae, 0x5b, 0x21, 0xef,
-0x0e, 0x4b, 0x10, 0xbe, 0x80, 0x05, 0xfc, 0x7d,
-0x4f, 0xc2, 0x9a, 0x40, 0xf1, 0x51, 0xf9, 0x2c,
-0x29, 0x32, 0xc5, 0xbf, 0xd6, 0xc2, 0xba, 0x3c,
-0x94, 0xcf, 0x83, 0xb4, 0x62, 0xce, 0xbf, 0x64,
-0x14, 0xe0, 0x99, 0x3f, 0x18, 0x84, 0xf5, 0x1a,
-0xca, 0xab, 0x87, 0x70, 0x7d, 0xd6, 0xa8, 0x0f,
-0xb0, 0x36, 0x2f, 0x31, 0xc7, 0xbf, 0x8e, 0xd2,
-0x56, 0x4d, 0x9d, 0x5a, 0x97, 0x97, 0xbe, 0x84,
-0xf9, 0xf5, 0x42, 0xa0, 0xb9, 0xcf, 0xb2, 0x78,
-0xfc, 0x9d, 0x0c, 0x48, 0x4d, 0xcc, 0xe9, 0xc1,
-0x8d, 0x17, 0x30, 0xc5, 0xbf, 0x66, 0xb1, 0x03,
-0x7d, 0xee, 0x51, 0xe7, 0x4e, 0xd9, 0x06, 0xef,
-0x33, 0xd7, 0x70, 0xa6, 0x44, 0x98, 0xf4, 0xaa,
-0x6e, 0xe8, 0xf7, 0x4b, 0xc4, 0xd6, 0x5b, 0x19,
-0xe6, 0xc0, 0xc6, 0x1c, 0xff, 0x52, 0xc6, 0x7d,
-0x15, 0x41, 0xdb, 0xce, 0xa6, 0xdf, 0x70, 0x7c,
-0x08, 0x59, 0x9d, 0xb8, 0x0d, 0x2e, 0x7a, 0x2b,
-0xe3, 0x81, 0x42, 0x5a, 0x19, 0x34, 0x80, 0x41,
-0xd2, 0xff, 0x73, 0x32, 0x7f, 0x40, 0xcf, 0x01,
-0xeb, 0x98, 0xf8, 0x13, 0xf8, 0x4b, 0xa4, 0x34,
-0x60, 0x3d, 0x28, 0x36, 0x40, 0x1c, 0xff, 0x9c,
-0xc4, 0xc1, 0x02, 0xee, 0x51, 0xd1, 0x4d, 0xf8,
-0x67, 0x85, 0x25, 0xc0, 0x3a, 0xca, 0xe9, 0x6c,
-0x54, 0xbb, 0x6d, 0x60, 0x57, 0xf1, 0x74, 0x2f,
-0x63, 0x2f, 0xb2, 0xa2, 0x58, 0x3c, 0x0b, 0xf1,
-0x7f, 0xbd, 0x23, 0xec, 0x89, 0xa6, 0xe4, 0x3f,
-0x07, 0xa0, 0x28, 0x54, 0xb4, 0x33, 0x7d, 0x1b,
-0xc3, 0xf9, 0x50, 0xc7, 0x3c, 0x67, 0xa4, 0x36,
-0xdd, 0xc8, 0x57, 0x19, 0x21, 0x88, 0x88, 0x42,
-0x74, 0x23, 0x31, 0xd7, 0x7f, 0x59, 0x81, 0x09,
-0x21, 0x66, 0x99, 0x83, 0xf7, 0x47, 0xf9, 0x03,
-0xbf, 0x12, 0x50, 0x71, 0xbc, 0x08, 0x9d, 0xfa,
-0xa2, 0x39, 0x1c, 0x11, 0xe5, 0x59, 0x75, 0x5e,
-0x7f, 0x6a, 0x8a, 0x7f, 0x3d, 0xa0, 0xad, 0xbd,
-0xb7, 0x08, 0x10, 0x06, 0x77, 0xf2, 0xb4, 0x13,
-0xee, 0x76, 0x1e, 0x82, 0x43, 0xf1, 0xc4, 0x78,
-0x03, 0x31, 0x5a, 0x7f, 0x51, 0xa0, 0x9b, 0xe2,
-0x5f, 0x97, 0xe0, 0x12, 0x99, 0x0b, 0x8f, 0x71,
-0xb3, 0xfd, 0x12, 0xfc, 0x0e, 0xee, 0xee, 0xc3,
-0xf7, 0xbd, 0xec, 0x40, 0xe0, 0x77, 0x4e, 0xbc,
-0x44, 0x2f, 0xda, 0x51, 0xa3, 0x1d, 0x4b, 0x89,
-0x7f, 0x7d, 0x01, 0xaf, 0xb3, 0xd9, 0xbe, 0xc7,
-0xa2, 0x62, 0x8f, 0x76, 0x94, 0x55, 0x45, 0x33,
-0x23, 0xe2, 0x39, 0x1e, 0x91, 0x8c, 0xa2, 0xbe,
-0x73, 0x85, 0x06, 0xd4, 0x52, 0x6a, 0x6b, 0x4a,
-0xc1, 0x3f, 0x67, 0xa0, 0x95, 0xd9, 0x7d, 0xb4,
-0x8b, 0x38, 0x68, 0x1b, 0x73, 0x1e, 0xa0, 0x3d,
-0xea, 0xa7, 0x74, 0xaf, 0x03, 0xf1, 0xcf, 0x17,
-0x24, 0x9f, 0xb5, 0xe4, 0xd9, 0x97, 0xcb, 0x6b,
-0x52, 0xf0, 0x4f, 0x14, 0x5a, 0x89, 0x43, 0xcb,
-0x50, 0x89, 0x93, 0x3d, 0x0e, 0xce, 0x3e, 0x6a,
-0xd4, 0xbf, 0x23, 0xfe, 0x91, 0xcb, 0x88, 0xee,
-0x62, 0x6a, 0x3d, 0xc8, 0x8a, 0x19, 0xff, 0x4c,
-0x79, 0x96, 0xb6, 0x42, 0x91, 0x2f, 0xb0, 0xa5,
-0xb5, 0x18, 0x61, 0x73, 0x89, 0x5e, 0x1f, 0x44,
-0xd8, 0xb3, 0x57, 0xe1, 0x78, 0x32, 0x7d, 0x86,
-0xda, 0xc2, 0x96, 0xd9, 0xe5, 0xf6, 0x74, 0x13,
-0xfe, 0x99, 0x72, 0x06, 0x0e, 0xb1, 0xf2, 0xb1,
-0xcc, 0x2e, 0xb1, 0x88, 0xbc, 0x23, 0xe1, 0x31,
-0xd9, 0x2d, 0x8e, 0xd4, 0x7e, 0xc6, 0xe6, 0x71,
-0x0f, 0xcf, 0x19, 0x1a, 0x89, 0xcc, 0x9b, 0xfd,
-0x8d, 0x40, 0x0a, 0xfe, 0xd9, 0x07, 0x57, 0x36,
-0xed, 0xd2, 0x27, 0xf5, 0x88, 0x17, 0x8d, 0xfa,
-0x38, 0x04, 0x42, 0xa3, 0x70, 0x95, 0xcd, 0xea,
-0x5d, 0x34, 0x2a, 0x2f, 0x57, 0x46, 0xc9, 0x7e,
-0x1d, 0x05, 0x91, 0x39, 0xfe, 0xf5, 0x2c, 0x5c,
-0x94, 0xdc, 0x91, 0xb5, 0x8d, 0xe2, 0x6f, 0xfc,
-0xdc, 0xbf, 0x61, 0x0d, 0x17, 0xcc, 0x82, 0x8b,
-0x19, 0x95, 0xfa, 0x92, 0xed, 0x72, 0xbd, 0x8a,
-0x5f, 0xc4, 0x6b, 0xdd, 0x62, 0xaa, 0xff, 0x8a,
-0xa4, 0xa5, 0xd3, 0xee, 0x41, 0x7b, 0x1f, 0xa5,
-0xc4, 0xa6, 0xb6, 0xf1, 0x34, 0xb0, 0x1d, 0x76,
-0x27, 0xe2, 0x09, 0xdc, 0x0f, 0x9f, 0x93, 0xe9,
-0xac, 0xa5, 0xdd, 0xee, 0xab, 0x0b, 0x12, 0xb7,
-0xc9, 0xff, 0x53, 0x0b, 0x1b, 0x05, 0xd5, 0x15,
-0xa8, 0xd8, 0xd8, 0x82, 0xfb, 0xa1, 0x44, 0xb7,
-0x54, 0x10, 0xab, 0xb4, 0x83, 0x39, 0xb9, 0xe3,
-0xe8, 0x87, 0xd0, 0x01, 0x85, 0x21, 0x4b, 0x11,
-0x59, 0x69, 0xae, 0xff, 0xf2, 0xbe, 0xdc, 0x51,
-0x30, 0x54, 0xbf, 0x32, 0x7b, 0x9a, 0x91, 0xfd,
-0x6b, 0x59, 0x79, 0xc3, 0x34, 0xd8, 0xd5, 0x53,
-0xcc, 0x23, 0x44, 0xd7, 0x01, 0x22, 0x84, 0xf2,
-0xef, 0xfc, 0x5d, 0xb6, 0xb9, 0xfe, 0x0b, 0xe0,
-0x1c, 0x75, 0xf5, 0x5b, 0x5d, 0xe2, 0x36, 0xf6,
-0x2a, 0x54, 0x0c, 0x67, 0x4d, 0x17, 0x41, 0xfa,
-0x2c, 0x7c, 0x1f, 0x2f, 0x7b, 0xd7, 0xe0, 0x14,
-0xec, 0x24, 0xce, 0x12, 0xf1, 0x1e, 0x73, 0xfd,
-0xbb, 0x74, 0xa9, 0xb0, 0xaa, 0xdf, 0xb6, 0x25,
-0xe6, 0x36, 0xec, 0x2f, 0x6e, 0xa8, 0xb9, 0x54,
-0x7b, 0x55, 0xc1, 0x2b, 0xdb, 0x1f, 0xdf, 0x09,
-0x7f, 0x9a, 0x3c, 0x9f, 0x66, 0x06, 0x53, 0xf2,
-0x9f, 0xfb, 0x71, 0xfd, 0xdd, 0x4c, 0x2a, 0x2f,
-0x28, 0x04, 0xee, 0x1f, 0x43, 0x45, 0x70, 0xc4,
-0xf0, 0xbf, 0x2d, 0x09, 0xe7, 0x94, 0x93, 0x23,
-0x50, 0x1a, 0xb5, 0xea, 0xdf, 0x4b, 0xad, 0xff,
-0x5a, 0x2d, 0x6d, 0xd1, 0xeb, 0xbc, 0x84, 0xd7,
-0xcf, 0xce, 0xe2, 0x89, 0x40, 0x27, 0xa5, 0xf5,
-0x88, 0x7f, 0xda, 0xdc, 0xfe, 0x4d, 0xb0, 0x56,
-0xc8, 0xd7, 0xe9, 0xa0, 0xc5, 0x1c, 0xff, 0x7a,
-0x02, 0xfe, 0xd9, 0x7f, 0x4b, 0x88, 0x9e, 0x58,
-0x3d, 0xcd, 0x70, 0xfb, 0x64, 0x20, 0xec, 0xc9,
-0x5d, 0xb3, 0x7a, 0x7a, 0x54, 0x7e, 0x94, 0x58,
-0x84, 0x27, 0x98, 0xea, 0xfb, 0x41, 0x7d, 0x4a,
-0xfd, 0xd7, 0x11, 0xd8, 0xa8, 0x3b, 0xde, 0xa2,
-0x84, 0x14, 0x33, 0xc3, 0x9f, 0x26, 0x2c, 0xeb,
-0xa5, 0xcf, 0x73, 0xfb, 0x2b, 0xcc, 0x81, 0x41,
-0x30, 0xe4, 0x45, 0x20, 0x71, 0x4d, 0xfe, 0x8f,
-0x3e, 0xbf, 0xdb, 0x1a, 0xfd, 0xda, 0x3c, 0xc2,
-0xdd, 0x3e, 0x99, 0x5d, 0x05, 0xc3, 0x9e, 0x83,
-0x21, 0x1e, 0x11, 0xb3, 0xcc, 0x67, 0xef, 0x0a,
-0xa5, 0x2c, 0xf3, 0x8c, 0x68, 0x8e, 0x7f, 0x9d,
-0xb2, 0x0f, 0xcf, 0x2e, 0x83, 0x7f, 0x69, 0x96,
-0x4f, 0x69, 0x3c, 0xec, 0x95, 0x15, 0xe0, 0x69,
-0x18, 0x1e, 0x03, 0xf6, 0x9c, 0x92, 0x02, 0xac,
-0x32, 0x3d, 0xab, 0xf9, 0xf1, 0x6b, 0xf2, 0x7f,
-0x82, 0x95, 0xda, 0xe2, 0x0d, 0x05, 0x67, 0xd8,
-0x87, 0x68, 0xe6, 0x5b, 0x6f, 0xe0, 0xf5, 0xef,
-0xd5, 0x8f, 0x6a, 0x4b, 0x36, 0x8a, 0x33, 0x7c,
-0x07, 0x1a, 0xdd, 0x5e, 0xdb, 0x53, 0x82, 0x29,
-0xfe, 0x05, 0x77, 0xa0, 0xd1, 0xe4, 0x6c, 0xa0,
-0x4f, 0x7f, 0xe3, 0x0c, 0xe1, 0xfe, 0x07, 0xda,
-0xee, 0x41, 0xfd, 0x8b, 0x88, 0x48, 0xde, 0xdc,
-0x8a, 0xfb, 0x67, 0xb0, 0xc3, 0x2b, 0x6f, 0x16,
-0x53, 0xf2, 0x7f, 0x14, 0x9c, 0x56, 0xeb, 0x08,
-0xba, 0x87, 0xf0, 0x35, 0x9d, 0x5a, 0xde, 0x20,
-0xa9, 0x84, 0xdd, 0xa2, 0x51, 0xaf, 0x34, 0x24,
-0xb4, 0x50, 0x3b, 0xf7, 0xff, 0xac, 0x36, 0xcb,
-0x1f, 0xb4, 0x47, 0x4a, 0xb8, 0x90, 0x79, 0xcc,
-0x70, 0x04, 0xe5, 0x9d, 0x20, 0xb9, 0xb0, 0x9d,
-0xfb, 0x7f, 0x72, 0xc9, 0x2a, 0x85, 0x3b, 0x82,
-0x6e, 0x9c, 0x63, 0xc6, 0x3f, 0x99, 0x3e, 0x1a,
-0x11, 0x78, 0xb4, 0x0b, 0x85, 0xd8, 0xb0, 0x11,
-0xf6, 0x92, 0x5d, 0x1c, 0x11, 0xc5, 0xf0, 0x5e,
-0xc4, 0x40, 0xbc, 0xf2, 0x3a, 0x53, 0xfc, 0xeb,
-0x3c, 0xfd, 0x5c, 0x58, 0xc0, 0x9d, 0x3c, 0x9f,
-0x1b, 0xfe, 0x9f, 0x59, 0x5c, 0xad, 0xff, 0x94,
-0x87, 0xe9, 0x37, 0x89, 0xff, 0xcd, 0xa8, 0xff,
-0xc2, 0x9f, 0x66, 0x5c, 0x93, 0xff, 0x53, 0xaa,
-0xdd, 0x75, 0xac, 0xe0, 0x7c, 0xd7, 0x01, 0x7c,
-0x11, 0x3a, 0x58, 0x73, 0x09, 0xa7, 0xb9, 0x35,
-0xdb, 0xef, 0xc5, 0x39, 0xda, 0x61, 0xab, 0xdb,
-0xb3, 0xe2, 0x4d, 0x30, 0xe7, 0x3f, 0x0f, 0x43,
-0x0f, 0x8a, 0x59, 0x8a, 0xda, 0x9c, 0x75, 0x21,
-0x0c, 0xa3, 0xcc, 0x1e, 0x85, 0x1e, 0xbb, 0x1d,
-0x6c, 0xab, 0xc9, 0x16, 0x0f, 0x47, 0x44, 0x74,
-0xd5, 0x3d, 0x59, 0xe6, 0xfc, 0x9f, 0x8c, 0xdd,
-0x92, 0xea, 0x93, 0x27, 0x93, 0xe6, 0x50, 0x23,
-0xac, 0xa8, 0x2b, 0xcf, 0x23, 0xfd, 0x12, 0x5e,
-0xc1, 0xf7, 0xb5, 0x4b, 0x6c, 0x0b, 0x55, 0x35,
-0x9a, 0x6d, 0x49, 0x89, 0x7f, 0x29, 0xbb, 0x05,
-0x7b, 0x5d, 0x2b, 0x8a, 0x1d, 0xc4, 0x4b, 0x3c,
-0x11, 0xc8, 0xf3, 0x81, 0xb6, 0x9b, 0xd9, 0x35,
-0x94, 0x3f, 0xdb, 0xb4, 0xe7, 0x61, 0x99, 0x97,
-0x06, 0x67, 0x98, 0xe2, 0x5f, 0x53, 0xfe, 0xac,
-0x9d, 0x6d, 0x74, 0x35, 0xcc, 0xda, 0x2c, 0x3e,
-0xc7, 0xb3, 0xd9, 0x79, 0xfe, 0xf3, 0x07, 0xd2,
-0x59, 0xe8, 0xd6, 0x96, 0x04, 0xe5, 0xe9, 0x8e,
-0x0f, 0xa3, 0x6e, 0x6d, 0xf1, 0x53, 0x93, 0x1c,
-0x66, 0xfc, 0x83, 0x68, 0x67, 0xbf, 0x76, 0xd7,
-0xa6, 0x9a, 0x21, 0x3f, 0xcf, 0x5e, 0x58, 0x82,
-0x68, 0xd0, 0xc8, 0x07, 0xbb, 0x4e, 0x11, 0x5f,
-0x87, 0xb7, 0x42, 0xfb, 0x86, 0x6d, 0x93, 0x53,
-0xf2, 0x7f, 0xb6, 0x48, 0x91, 0x8c, 0xca, 0xfc,
-0xb5, 0xcd, 0x62, 0xbe, 0x91, 0x6d, 0x6e, 0xe3,
-0xfb, 0x6d, 0x2c, 0xc8, 0x97, 0xdd, 0x88, 0x48,
-0x56, 0xce, 0x41, 0xf9, 0x6c, 0x31, 0xfb, 0x7f,
-0x94, 0x75, 0x74, 0x16, 0x0b, 0x9c, 0x22, 0xe5,
-0xd0, 0x2a, 0x94, 0xb0, 0xef, 0x9e, 0xb6, 0x0f,
-0xab, 0xfb, 0x63, 0xf1, 0xaf, 0xdb, 0xb4, 0xbb,
-0xbf, 0x59, 0xc2, 0xe4, 0x68, 0xba, 0xd9, 0xff,
-0x53, 0xab, 0x6d, 0x00, 0x67, 0x14, 0x66, 0x93,
-0x19, 0x4a, 0x93, 0x80, 0x62, 0xca, 0x81, 0x68,
-0xd9, 0x90, 0xcf, 0x53, 0xc9, 0x37, 0xd2, 0x9e,
-0x6c, 0x76, 0x46, 0x17, 0xe5, 0xa6, 0xf8, 0x7f,
-0xca, 0xa4, 0x4d, 0xc2, 0x2c, 0xaf, 0xa3, 0x3c,
-0x6b, 0x32, 0x1e, 0xcd, 0xe2, 0xde, 0x85, 0xde,
-0xec, 0x93, 0xc0, 0xcb, 0xc0, 0xe5, 0xe5, 0xe4,
-0x3f, 0xd3, 0x55, 0x5a, 0x71, 0xa3, 0xec, 0x25,
-0xf5, 0xa6, 0xfc, 0xe7, 0xeb, 0xf0, 0xd8, 0x2e,
-0x88, 0x5a, 0x97, 0x8a, 0x65, 0x06, 0xec, 0x91,
-0x57, 0x8a, 0xef, 0x4a, 0x57, 0x79, 0xda, 0xf3,
-0x09, 0xf9, 0x61, 0x72, 0xbc, 0x69, 0xc1, 0x69,
-0x1c, 0x14, 0x99, 0xf1, 0x4f, 0xfa, 0x47, 0x78,
-0x6c, 0x51, 0x08, 0x0f, 0x73, 0xfd, 0xde, 0x67,
-0xa8, 0xb9, 0xdd, 0x3c, 0x1f, 0x26, 0x5a, 0xd0,
-0xc3, 0x5d, 0xcd, 0x75, 0x4b, 0x06, 0x4d, 0xf5,
-0x5f, 0x90, 0xf6, 0x07, 0x38, 0xd1, 0x5c, 0x31,
-0x64, 0xfd, 0x50, 0x3c, 0x03, 0x47, 0x83, 0x95,
-0xa7, 0x9d, 0x46, 0xfd, 0x72, 0x33, 0xda, 0xef,
-0x27, 0xc4, 0x32, 0x76, 0x95, 0x55, 0xf9, 0xac,
-0x1f, 0x0a, 0x66, 0xfc, 0xb3, 0xb9, 0xa3, 0xf9,
-0x5c, 0xf1, 0x30, 0xfd, 0x0e, 0x39, 0x16, 0xf9,
-0x23, 0x38, 0x87, 0x2c, 0x5e, 0x5e, 0xff, 0x25,
-0xe4, 0xf7, 0xcb, 0x77, 0x92, 0x5c, 0xf5, 0x25,
-0xa1, 0x18, 0x32, 0x7f, 0x90, 0x6d, 0xc6, 0x3f,
-0x3b, 0xa5, 0xd5, 0x6e, 0x14, 0x53, 0x5a, 0xfa,
-0xf1, 0xc6, 0x35, 0xf0, 0xc0, 0x6b, 0x34, 0x16,
-0xe6, 0x43, 0xfc, 0x73, 0x0f, 0x51, 0x9e, 0x7c,
-0x59, 0x29, 0x5e, 0x4d, 0x3d, 0x59, 0x60, 0xc2,
-0x3f, 0xb5, 0xe0, 0xf7, 0x38, 0x75, 0x9a, 0x99,
-0x1e, 0x0d, 0xa2, 0xbe, 0xe3, 0x34, 0x02, 0x87,
-0xd5, 0x1d, 0x5c, 0xfe, 0xa8, 0xc4, 0xb2, 0xa1,
-0xdb, 0xe5, 0x74, 0x65, 0x38, 0x08, 0x4d, 0xec,
-0xcf, 0x6d, 0x53, 0x56, 0x41, 0x9f, 0xaf, 0xc2,
-0x6f, 0x0d, 0xda, 0x3f, 0x60, 0x87, 0x50, 0x1e,
-0x5a, 0x7b, 0x0c, 0x7f, 0x17, 0xda, 0x8f, 0xc1,
-0x82, 0xaf, 0x4b, 0xe3, 0xac, 0xf2, 0xbc, 0xb5,
-0xbd, 0xa0, 0xc8, 0x84, 0x7f, 0x3e, 0x81, 0x61,
-0x5a, 0xd9, 0x37, 0x2b, 0x38, 0x29, 0x1a, 0xcb,
-0xff, 0x09, 0x8a, 0x23, 0xda, 0x38, 0x33, 0xea,
-0x91, 0x3f, 0xc9, 0xdd, 0x5d, 0x9d, 0xc5, 0x6c,
-0xbf, 0xd8, 0x6a, 0xce, 0xff, 0x19, 0x55, 0x3f,
-0x15, 0x4a, 0xf5, 0x80, 0x17, 0x2f, 0x1a, 0xfa,
-0x6e, 0x74, 0x2b, 0x9e, 0x2f, 0xf8, 0xb9, 0x6e,
-0x53, 0x44, 0x17, 0x9c, 0x97, 0x4a, 0xf9, 0x7f,
-0xc8, 0x84, 0x7f, 0xe0, 0x7b, 0x52, 0xab, 0xd7,
-0xae, 0xd3, 0xcd, 0x4d, 0x45, 0xc0, 0xe3, 0x17,
-0x8b, 0xf6, 0xf9, 0x71, 0xfd, 0x1b, 0x1f, 0xd4,
-0xe5, 0xcd, 0xd9, 0x05, 0xd0, 0xb3, 0x05, 0x0f,
-0xc2, 0xda, 0x26, 0x53, 0xfc, 0x4b, 0x28, 0xf4,
-0x75, 0xc1, 0x32, 0xee, 0xfd, 0x78, 0x96, 0xfb,
-0x7f, 0xb8, 0xbf, 0x7d, 0x44, 0xdb, 0xdb, 0x68,
-0x0c, 0xfe, 0x21, 0xe3, 0x45, 0x3c, 0x38, 0x37,
-0x76, 0xa5, 0x9b, 0xf1, 0x8f, 0x13, 0x98, 0xba,
-0x6c, 0x78, 0xa1, 0xe2, 0xaf, 0x03, 0x5c, 0x9f,
-0x08, 0xa2, 0x41, 0x84, 0xd9, 0x5c, 0xdf, 0x81,
-0x1f, 0x84, 0x30, 0x84, 0xe0, 0x46, 0x65, 0xb5,
-0x3f, 0xc1, 0xbf, 0xc1, 0xfd, 0x3f, 0x1f, 0x11,
-0xb7, 0x9e, 0xe5, 0x47, 0xb3, 0xeb, 0x63, 0x58,
-0x30, 0xc0, 0xdf, 0x17, 0xc6, 0xef, 0x29, 0xd1,
-0x97, 0xf8, 0xe5, 0x42, 0xf8, 0x90, 0xe7, 0x57,
-0xac, 0x31, 0xe3, 0x9f, 0x9b, 0x46, 0xe1, 0x4a,
-0x35, 0xaa, 0x2d, 0x26, 0xec, 0xe6, 0xfa, 0xeb,
-0x04, 0xee, 0x96, 0x4b, 0xf4, 0xbc, 0x5a, 0xc5,
-0x33, 0xa8, 0xb9, 0xff, 0x67, 0x01, 0x2c, 0xf1,
-0x8b, 0x0e, 0x13, 0xfe, 0xb9, 0x42, 0x0e, 0xc3,
-0xdc, 0xa8, 0x6d, 0x18, 0x61, 0xd2, 0x5f, 0xf8,
-0x6e, 0x19, 0x45, 0xf9, 0xc3, 0x81, 0x90, 0x6d,
-0x0c, 0x81, 0xd0, 0x49, 0x4e, 0x0d, 0x74, 0x02,
-0x7f, 0x4a, 0xe2, 0x9f, 0x91, 0x50, 0x0b, 0x8a,
-0x1c, 0xb9, 0x0b, 0x8d, 0xb0, 0x36, 0x56, 0xe2,
-0x0b, 0xf4, 0x20, 0xcc, 0x42, 0x45, 0xcf, 0x57,
-0x20, 0x8a, 0x50, 0x10, 0xa1, 0x72, 0x30, 0x25,
-0xff, 0x79, 0x80, 0xf9, 0xfd, 0x2a, 0x8f, 0x06,
-0xd6, 0xa1, 0xd9, 0xef, 0xd4, 0x1c, 0xdc, 0xac,
-0xd8, 0x4a, 0x0c, 0x3c, 0xac, 0x43, 0x90, 0xcf,
-0x57, 0x88, 0xc7, 0x14, 0xff, 0x42, 0xd8, 0xc9,
-0x66, 0xe8, 0x72, 0x07, 0x71, 0x6a, 0xdc, 0xdb,
-0x1c, 0x08, 0xc3, 0x08, 0x69, 0x83, 0x07, 0x7b,
-0x51, 0x7f, 0x45, 0x0d, 0x8b, 0x0f, 0xef, 0x9f,
-0xcc, 0xff, 0xd1, 0x26, 0xc7, 0xb3, 0x91, 0x9d,
-0xe2, 0xf7, 0x70, 0x7d, 0x2a, 0xfa, 0x79, 0x7e,
-0x94, 0xf4, 0xb1, 0x60, 0x04, 0x46, 0xd1, 0x34,
-0x63, 0xdd, 0xb5, 0x4e, 0x41, 0xf4, 0xa6, 0xe0,
-0x1f, 0x1e, 0xed, 0xb2, 0xe9, 0x1c, 0xf6, 0x00,
-0xbe, 0x26, 0xcf, 0x4f, 0x8e, 0xe7, 0x47, 0x7d,
-0xa1, 0x5d, 0x0e, 0x56, 0xf9, 0x6c, 0x91, 0xd4,
-0xfa, 0x77, 0xe1, 0x9c, 0x8a, 0xbb, 0x6b, 0x6b,
-0xec, 0x3c, 0x9e, 0xb6, 0x85, 0x73, 0xac, 0x4a,
-0x3c, 0x1f, 0xef, 0x8c, 0x8a, 0x1b, 0xcf, 0x67,
-0x6d, 0x6c, 0x72, 0xa5, 0xf8, 0x7f, 0xf6, 0xd6,
-0x72, 0xf4, 0x2b, 0x2e, 0xd1, 0x70, 0xff, 0x0c,
-0x66, 0x8e, 0xa2, 0xa2, 0x8f, 0xe7, 0x6f, 0x9f,
-0x81, 0xdd, 0xac, 0x64, 0x39, 0x0d, 0xa4, 0xe0,
-0x9f, 0x15, 0xb0, 0x43, 0x73, 0xf6, 0xca, 0x4e,
-0xd2, 0x17, 0x5f, 0x16, 0xcb, 0xda, 0x78, 0xe2,
-0x0a, 0xf9, 0x10, 0x5e, 0x28, 0x2c, 0x09, 0x3a,
-0x5c, 0x96, 0xd4, 0xfa, 0xf7, 0x5d, 0x41, 0x5e,
-0xfd, 0x4d, 0xbc, 0x1c, 0x0f, 0x0c, 0x5d, 0xcf,
-0xf9, 0x70, 0x76, 0xc5, 0xe2, 0x41, 0x6f, 0x0b,
-0x2f, 0x37, 0x17, 0x87, 0xe8, 0xca, 0xf4, 0x3c,
-0x93, 0xff, 0x87, 0xa7, 0xc1, 0x54, 0xbc, 0x66,
-0x2b, 0x14, 0x7b, 0x7d, 0xef, 0xf3, 0xea, 0x51,
-0x97, 0xb8, 0x16, 0x3e, 0x0b, 0x97, 0x23, 0xfe,
-0x29, 0x88, 0xb0, 0x73, 0xac, 0xa2, 0x45, 0x0a,
-0x8b, 0xd9, 0x66, 0xfc, 0x03, 0x57, 0x85, 0xaa,
-0x5e, 0x9b, 0x2a, 0x0e, 0xe2, 0xb2, 0x2c, 0xa8,
-0xc6, 0xd7, 0xfc, 0x29, 0x5c, 0x24, 0x86, 0x7f,
-0x6c, 0x0c, 0x2e, 0xb8, 0xaa, 0x98, 0x6d, 0xf7,
-0x35, 0xfe, 0x1f, 0x9e, 0x16, 0x85, 0xf3, 0x83,
-0xf8, 0x21, 0x2a, 0xb4, 0x8c, 0x1e, 0xb9, 0x78,
-0xc2, 0x5f, 0x1d, 0xfb, 0x34, 0x0f, 0x74, 0x5d,
-0x53, 0xff, 0xbe, 0x4b, 0xda, 0xc0, 0x93, 0x7c,
-0x14, 0xfa, 0xb7, 0x50, 0xcc, 0xf1, 0xcf, 0xaf,
-0xd9, 0x2e, 0xb4, 0x1f, 0x33, 0x78, 0x21, 0xea,
-0x1a, 0x1e, 0x58, 0x8f, 0xa6, 0xe4, 0x3f, 0x4f,
-0x83, 0x1d, 0xcd, 0xf9, 0xd1, 0x45, 0xf5, 0xe9,
-0x1b, 0x11, 0xef, 0x4d, 0x5f, 0x96, 0x71, 0x5b,
-0x36, 0x4f, 0x04, 0x9a, 0x7e, 0xaa, 0x8d, 0x27,
-0x3e, 0xad, 0x61, 0x33, 0xa3, 0x19, 0xa9, 0xf8,
-0x87, 0x9f, 0x26, 0x95, 0x8b, 0x71, 0x50, 0xf0,
-0x7c, 0x45, 0x39, 0xde, 0x36, 0xec, 0xaf, 0xeb,
-0x5d, 0xe4, 0x93, 0xb5, 0x4d, 0x50, 0xaf, 0xd3,
-0x42, 0xbf, 0x19, 0xff, 0x74, 0xc1, 0x15, 0x2b,
-0x1e, 0x22, 0x9f, 0xd8, 0x0e, 0x07, 0xa1, 0x32,
-0x14, 0xcf, 0xff, 0xa9, 0x6c, 0xb4, 0x85, 0xc4,
-0x0f, 0xc9, 0x41, 0x6d, 0x4f, 0x10, 0xaf, 0x98,
-0xf1, 0x4f, 0x14, 0x46, 0x11, 0x61, 0xd8, 0x9a,
-0x0a, 0x0c, 0xfe, 0x1f, 0xc5, 0xc6, 0x6a, 0x26,
-0xea, 0xdf, 0xc5, 0xa8, 0x34, 0x46, 0x67, 0x10,
-0xdc, 0x5a, 0xd7, 0xf8, 0x7f, 0x78, 0xda, 0x73,
-0x7b, 0xac, 0xda, 0xcb, 0x8b, 0xfa, 0xb1, 0xdf,
-0x50, 0x94, 0xdc, 0x0d, 0xa2, 0xb5, 0xb0, 0x79,
-0xf7, 0x5f, 0xc3, 0xff, 0xb3, 0x1c, 0x76, 0xfb,
-0xec, 0xd5, 0xf2, 0x66, 0x52, 0xa8, 0xbe, 0x85,
-0xf8, 0xc4, 0xc2, 0xdd, 0x0e, 0xcf, 0xc7, 0xfc,
-0x0f, 0x1f, 0x40, 0x8b, 0xd7, 0xde, 0x40, 0x37,
-0x9b, 0xeb, 0xbf, 0x04, 0x5e, 0x1d, 0x66, 0xd7,
-0x16, 0x6d, 0x68, 0x2d, 0x54, 0x9e, 0xc4, 0x69,
-0x0b, 0x83, 0x9e, 0x21, 0xda, 0x02, 0x59, 0x31,
-0xff, 0xcf, 0x33, 0x30, 0xb3, 0x96, 0x9e, 0x4c,
-0xf1, 0xff, 0xa4, 0xc5, 0xb2, 0x7f, 0x79, 0x7c,
-0x67, 0x03, 0xc7, 0xdb, 0xdc, 0x0d, 0xb2, 0x45,
-0xe3, 0xf9, 0xcf, 0xd9, 0x7f, 0x84, 0x67, 0xf4,
-0xfc, 0x06, 0x7a, 0x6f, 0x4a, 0xfd, 0x97, 0x6f,
-0x22, 0xdb, 0x96, 0xe7, 0x9f, 0x4c, 0x8b, 0x85,
-0xbd, 0x62, 0xfe, 0x07, 0x51, 0xc7, 0x07, 0x29,
-0x07, 0xab, 0x6e, 0xf6, 0xff, 0xdc, 0x34, 0x84,
-0xe8, 0xc5, 0xa8, 0x76, 0xff, 0x1c, 0x7e, 0xcc,
-0xd3, 0xea, 0x12, 0x81, 0xb0, 0x89, 0xc2, 0xff,
-0x7f, 0x4c, 0xe1, 0xff, 0x49, 0x1b, 0x82, 0xc3,
-0xd4, 0x08, 0x93, 0xcd, 0x81, 0x4f, 0xa4, 0x05,
-0x88, 0x1f, 0x5e, 0x1d, 0x92, 0xc6, 0x73, 0x8d,
-0xf9, 0xe7, 0xb5, 0x07, 0xa4, 0x52, 0x2d, 0x73,
-0x30, 0x85, 0xff, 0x27, 0x1a, 0x38, 0xa1, 0x95,
-0x80, 0x1c, 0x12, 0x7f, 0x00, 0x11, 0x52, 0x02,
-0x99, 0xcd, 0xd9, 0xa7, 0xb4, 0x1e, 0x04, 0x42,
-0x32, 0x43, 0x79, 0xd2, 0xa3, 0xda, 0x29, 0xf5,
-0x5b, 0x52, 0xf0, 0x8f, 0xda, 0x18, 0xab, 0x76,
-0x4f, 0x83, 0x2d, 0x46, 0x9a, 0xb7, 0xa7, 0x3f,
-0xb4, 0x5d, 0x75, 0xc6, 0xe2, 0x5f, 0x5b, 0x2c,
-0x3e, 0x4f, 0x06, 0xaf, 0x7f, 0x4f, 0xe2, 0x9f,
-0xe6, 0xdc, 0x5f, 0xf9, 0x8c, 0xd5, 0x5e, 0xae,
-0xb5, 0x90, 0x12, 0x6d, 0x51, 0x10, 0x92, 0xf9,
-0xe4, 0x94, 0x67, 0x04, 0xf1, 0x7c, 0x72, 0x73,
-0xfd, 0x17, 0x1c, 0x90, 0x78, 0x1a, 0x8f, 0xf8,
-0x75, 0x94, 0xc6, 0x25, 0x3e, 0x5b, 0xa2, 0xfe,
-0x9d, 0x0f, 0x78, 0xc6, 0x3b, 0xda, 0x0b, 0xd7,
-0xe0, 0x1f, 0xce, 0xff, 0xb3, 0xa1, 0xe9, 0x75,
-0x15, 0xf1, 0xf0, 0xc3, 0x19, 0x89, 0xfa, 0xf7,
-0x98, 0xff, 0x87, 0x0f, 0x9a, 0x52, 0xfd, 0x3f,
-0x63, 0x3e, 0x23, 0xc8, 0x98, 0x0f, 0x0e, 0x5c,
-0xf6, 0x4c, 0x5c, 0x7f, 0x25, 0x02, 0xc6, 0x95,
-0xa8, 0xce, 0x03, 0xaf, 0x68, 0x11, 0x9b, 0xf3,
-0x9f, 0x1d, 0xb0, 0x5f, 0x42, 0xb4, 0x33, 0xec,
-0x2f, 0x87, 0x3d, 0x50, 0x1c, 0xe6, 0xf9, 0x6a,
-0x84, 0x07, 0xc2, 0x16, 0x85, 0xc8, 0x05, 0x58,
-0x17, 0x28, 0x68, 0x76, 0x0c, 0xa7, 0xc4, 0xbf,
-0x38, 0xff, 0x46, 0xa1, 0xbe, 0xa8, 0x70, 0x61,
-0x06, 0x97, 0xcf, 0xb5, 0x8d, 0xae, 0x74, 0x1e,
-0x98, 0x30, 0xea, 0x53, 0x0e, 0xc3, 0x56, 0xb5,
-0xe4, 0x38, 0xdd, 0x46, 0xcc, 0xf9, 0xcf, 0x53,
-0xb5, 0x5d, 0x2c, 0x9f, 0x47, 0xab, 0xbd, 0x3c,
-0x30, 0x04, 0x79, 0x0d, 0xe4, 0x5d, 0x6d, 0x8d,
-0xc2, 0x03, 0xd9, 0xe4, 0x0f, 0xb0, 0x4a, 0x9a,
-0xae, 0x21, 0x42, 0x70, 0x98, 0xf0, 0xcf, 0xb4,
-0xd0, 0x97, 0xb1, 0x6c, 0xe7, 0x69, 0xf0, 0x67,
-0xb6, 0xc0, 0x97, 0xb9, 0x52, 0xbc, 0xa2, 0xbe,
-0x11, 0xbb, 0xf2, 0x36, 0xf9, 0x94, 0x55, 0x85,
-0x50, 0xbf, 0xa4, 0xe4, 0x3f, 0xb3, 0xcf, 0x24,
-0x43, 0x7a, 0x84, 0xb8, 0x18, 0xd1, 0x0c, 0x31,
-0x72, 0x95, 0xc5, 0xe4, 0x49, 0xee, 0x05, 0x61,
-0x1e, 0x5f, 0x28, 0x73, 0xfd, 0xd7, 0xa7, 0xda,
-0x55, 0x36, 0x97, 0xa7, 0x15, 0xed, 0x21, 0x6f,
-0xa0, 0x21, 0x5f, 0x1c, 0xcb, 0x7f, 0xae, 0x8a,
-0xe5, 0x3f, 0xbf, 0x87, 0x86, 0xfc, 0x92, 0x71,
-0xd1, 0x9c, 0xff, 0xfc, 0x74, 0xf3, 0xae, 0xc9,
-0x88, 0x5e, 0x7e, 0xda, 0xad, 0xa0, 0xfd, 0x75,
-0xab, 0x27, 0xe3, 0x7f, 0x88, 0x9b, 0x61, 0x07,
-0x67, 0x04, 0x7a, 0x94, 0x9c, 0x00, 0x7f, 0xf0,
-0xb6, 0x88, 0xbc, 0x94, 0xa4, 0xe4, 0x3f, 0x33,
-0x03, 0xed, 0x3c, 0x4c, 0xda, 0x79, 0x21, 0xbc,
-0x46, 0x63, 0xf9, 0x4e, 0x0f, 0xf0, 0x2b, 0x27,
-0x10, 0x01, 0xce, 0xd4, 0x70, 0x60, 0xf6, 0xff,
-0xf0, 0x6c, 0x1f, 0xe0, 0xd5, 0xdf, 0x80, 0xf6,
-0x57, 0xa1, 0x4f, 0xe0, 0xf2, 0x67, 0x6f, 0xcc,
-0xff, 0x33, 0x0c, 0xad, 0x9c, 0x48, 0x61, 0xaa,
-0xdf, 0x9c, 0xff, 0xbc, 0x0f, 0xbf, 0x7e, 0x36,
-0x2f, 0xf2, 0x62, 0x9c, 0xe6, 0x48, 0x43, 0xfd,
-0xc5, 0xf9, 0x58, 0xf8, 0xfb, 0x7e, 0x6b, 0x44,
-0x7a, 0x87, 0x2b, 0x9a, 0xee, 0x94, 0x7c, 0xa4,
-0x11, 0x3a, 0x5e, 0xcd, 0x2f, 0x72, 0xb7, 0x0f,
-0x4f, 0x1b, 0x4b, 0x16, 0xc2, 0xe3, 0x41, 0x1b,
-0xd3, 0x2a, 0x19, 0xae, 0x8f, 0xb9, 0xfe, 0xeb,
-0x12, 0x7c, 0x49, 0x11, 0xe4, 0x8c, 0xd9, 0x54,
-0xae, 0xe6, 0x34, 0x2b, 0x2f, 0x02, 0xe7, 0xfe,
-0x9f, 0xac, 0x51, 0x3c, 0x5f, 0x87, 0x95, 0x52,
-0xc5, 0x3a, 0x96, 0xea, 0xff, 0x51, 0xf6, 0xf6,
-0xdb, 0x75, 0x79, 0x81, 0xc5, 0xce, 0xde, 0xc1,
-0xfd, 0xe0, 0x30, 0xf2, 0x9f, 0x8d, 0xfa, 0x1d,
-0xf2, 0x81, 0x1a, 0xa8, 0xb3, 0x4f, 0xa6, 0xed,
-0xc4, 0xe4, 0xff, 0x11, 0x9c, 0x88, 0x8e, 0xec,
-0x5c, 0x3b, 0xdb, 0xb9, 0x9a, 0xf3, 0x5a, 0xc2,
-0xd9, 0x03, 0xb4, 0x2d, 0x96, 0x38, 0x1d, 0x85,
-0x16, 0xb0, 0x07, 0x69, 0xb7, 0x3f, 0xd5, 0xff,
-0xb3, 0x5d, 0xf0, 0xf5, 0xca, 0x2e, 0xbf, 0x4a,
-0x1e, 0x47, 0x1d, 0x6f, 0x71, 0xdb, 0x07, 0x94,
-0xad, 0x79, 0xb8, 0x03, 0xdd, 0x44, 0x27, 0x2c,
-0x23, 0xc4, 0xae, 0xf1, 0xff, 0xfc, 0x24, 0xc6,
-0x06, 0xd0, 0x4d, 0x54, 0xe3, 0x35, 0xb3, 0xc2,
-0x3c, 0x7f, 0x5b, 0x75, 0xf3, 0x81, 0x0e, 0x07,
-0x34, 0x37, 0x58, 0xbb, 0x9b, 0xcc, 0xf8, 0xe7,
-0x52, 0xed, 0x97, 0x1c, 0xe6, 0x85, 0x63, 0xfa,
-0x5d, 0x2b, 0xde, 0xc9, 0xf3, 0x7b, 0x39, 0xfe,
-0x39, 0x8f, 0x57, 0xc6, 0x1c, 0x55, 0x80, 0xf2,
-0xc7, 0xe4, 0xff, 0x99, 0x72, 0x05, 0x61, 0xf9,
-0xdc, 0x83, 0x59, 0x67, 0xc5, 0x8a, 0xf0, 0x49,
-0xa8, 0x2a, 0xb4, 0x1e, 0x10, 0xdd, 0xd2, 0x61,
-0x8e, 0x9f, 0x7b, 0x6a, 0xce, 0xc1, 0x97, 0x6c,
-0xae, 0x8a, 0x78, 0xc0, 0xec, 0xff, 0xf9, 0x94,
-0xb4, 0xb1, 0x82, 0xb3, 0xf4, 0x2c, 0x59, 0x20,
-0x05, 0x06, 0x9d, 0x94, 0x6e, 0xc4, 0x07, 0x6b,
-0x34, 0xe2, 0x5f, 0xf6, 0xd3, 0xbc, 0x50, 0x4e,
-0x45, 0xe0, 0x67, 0xf6, 0xff, 0x8c, 0xd0, 0x17,
-0x49, 0x21, 0x8f, 0x87, 0xe2, 0x41, 0x33, 0xc0,
-0x1f, 0x81, 0xae, 0x46, 0x87, 0x11, 0x8f, 0x78,
-0x3d, 0x63, 0x2f, 0x14, 0x82, 0x0c, 0xc4, 0x1c,
-0xff, 0xfa, 0xad, 0xf4, 0x22, 0x2c, 0xc3, 0xf9,
-0xca, 0x0a, 0x78, 0x9e, 0xa2, 0x7d, 0x17, 0xc6,
-0xfb, 0xb7, 0x18, 0xf1, 0xc4, 0xec, 0x68, 0xf5,
-0x5e, 0xb0, 0xe7, 0xa3, 0xa0, 0x33, 0xf9, 0x7f,
-0xd2, 0xfe, 0xa2, 0xbe, 0x8a, 0x5f, 0x67, 0x71,
-0x98, 0xac, 0xc8, 0xc5, 0xaf, 0x5f, 0xeb, 0x64,
-0x93, 0x66, 0x90, 0x88, 0x62, 0xc4, 0x5f, 0x3e,
-0x82, 0xf1, 0xf4, 0xb2, 0x3a, 0xdb, 0xf3, 0xd7,
-0xf8, 0x7f, 0xde, 0x0d, 0x2d, 0xd0, 0x8b, 0x47,
-0x17, 0xe1, 0x00, 0x66, 0xf9, 0x6c, 0x83, 0xb7,
-0x7c, 0xa1, 0x5d, 0x62, 0x06, 0x11, 0xd0, 0x18,
-0xbc, 0x17, 0x42, 0x89, 0x3d, 0x66, 0xae, 0xff,
-0x82, 0x90, 0xf6, 0xb1, 0x64, 0xac, 0xf6, 0x00,
-0x6a, 0x43, 0x44, 0x3b, 0x21, 0x71, 0x06, 0xd7,
-0x08, 0xb1, 0x7c, 0xfb, 0x0f, 0xa1, 0x8c, 0x5d,
-0x93, 0xff, 0x63, 0x85, 0x36, 0xbd, 0xe0, 0x04,
-0x8c, 0xda, 0x2b, 0x78, 0xfc, 0xf4, 0x11, 0xda,
-0xd3, 0xfa, 0x75, 0xad, 0xa7, 0xc1, 0x88, 0x87,
-0x7e, 0x08, 0x3b, 0xa6, 0x76, 0xf8, 0xe5, 0xb0,
-0xdf, 0x1c, 0xff, 0xba, 0xdb, 0x55, 0xc0, 0xd4,
-0x13, 0x16, 0x0e, 0x7b, 0xd0, 0x30, 0xe7, 0x81,
-0x45, 0x07, 0x27, 0x46, 0x30, 0xf0, 0xa1, 0xba,
-0x15, 0x0a, 0x43, 0x87, 0xe8, 0x75, 0x63, 0x29,
-0xfe, 0x9f, 0xf5, 0x83, 0xea, 0x70, 0xdd, 0x4a,
-0xfb, 0x3a, 0xd6, 0xcc, 0x10, 0xed, 0x9c, 0x20,
-0x37, 0x70, 0x89, 0xc4, 0xeb, 0xa1, 0xfe, 0xa0,
-0xbd, 0xcc, 0xf2, 0x43, 0xf2, 0xdf, 0xa5, 0x9f,
-0x30, 0xf3, 0xff, 0xc0, 0xfb, 0x81, 0xf0, 0x70,
-0x56, 0x58, 0x5e, 0x07, 0xaf, 0xaa, 0x15, 0x9d,
-0xd6, 0x7c, 0x91, 0x6a, 0x9f, 0x81, 0x4b, 0xff,
-0xfb, 0xf9, 0x35, 0x03, 0xf0, 0x3e, 0xcc, 0xd1,
-0x6c, 0xf9, 0x29, 0xf1, 0xaf, 0xcd, 0x70, 0x59,
-0x99, 0xdf, 0x6f, 0x1b, 0x2d, 0x58, 0x80, 0x66,
-0x02, 0xc2, 0x80, 0x87, 0xc4, 0x31, 0x9e, 0x61,
-0x68, 0xc4, 0x07, 0xd5, 0xbd, 0xbc, 0xb4, 0xe7,
-0x54, 0x4e, 0x2a, 0xfe, 0xf9, 0xbd, 0xdf, 0x75,
-0x6c, 0x6d, 0x58, 0x7c, 0x40, 0x7f, 0x12, 0xf7,
-0xe7, 0xcd, 0x8c, 0x13, 0x31, 0x19, 0xe7, 0x31,
-0xe7, 0xfd, 0x19, 0x87, 0xa0, 0x2c, 0x72, 0xf3,
-0xda, 0xa6, 0x6b, 0xfc, 0x3f, 0x90, 0x7f, 0xc2,
-0x31, 0xc7, 0x3f, 0x15, 0x9e, 0x45, 0xfc, 0x93,
-0x85, 0xf6, 0x17, 0x5e, 0x31, 0xe4, 0xe7, 0x71,
-0x58, 0x23, 0xbd, 0xa4, 0xa3, 0xfd, 0x68, 0xc6,
-0x3f, 0xfb, 0xe1, 0x9f, 0xd9, 0x96, 0x61, 0xcb,
-0x4a, 0x72, 0x77, 0x23, 0x87, 0x79, 0x87, 0xea,
-0x11, 0xf6, 0xac, 0x66, 0x46, 0xda, 0xcf, 0x15,
-0x8e, 0x88, 0x46, 0xe4, 0x8b, 0xd9, 0x29, 0xf8,
-0x47, 0x6a, 0xd2, 0x54, 0x7d, 0x21, 0xdf, 0x6f,
-0x3c, 0xfe, 0x6e, 0x84, 0x11, 0xfd, 0x71, 0xff,
-0xb3, 0xd6, 0xa4, 0x17, 0x9e, 0x90, 0xcb, 0xaf,
-0x33, 0xe3, 0x9f, 0x1e, 0x78, 0x57, 0x73, 0x31,
-0x6b, 0xa8, 0xa6, 0x1e, 0xde, 0x55, 0x2b, 0x83,
-0x71, 0xd8, 0x63, 0xe4, 0xff, 0x7c, 0x04, 0xaf,
-0x9f, 0x78, 0xb9, 0xcb, 0xf6, 0x82, 0x9c, 0xe2,
-0xff, 0x61, 0x63, 0xae, 0x4a, 0x25, 0x2d, 0x56,
-0x0f, 0x5e, 0x49, 0xf0, 0x7d, 0xa3, 0xea, 0x25,
-0x1a, 0xf3, 0xff, 0xc0, 0x58, 0xad, 0x61, 0xa1,
-0xa7, 0xe0, 0x1f, 0x72, 0x80, 0x55, 0x36, 0x58,
-0x15, 0xb9, 0xd9, 0x72, 0x00, 0xa6, 0x69, 0x8b,
-0x83, 0xc2, 0x19, 0x76, 0x40, 0x99, 0x20, 0xba,
-0xd1, 0x63, 0xf2, 0xdc, 0x84, 0x7f, 0x6e, 0x57,
-0x5a, 0x58, 0x49, 0xfd, 0x44, 0xfe, 0x49, 0x43,
-0x71, 0xbb, 0xfd, 0xcf, 0xa4, 0x45, 0x7f, 0x19,
-0x15, 0x31, 0xf9, 0x24, 0xf0, 0xa1, 0x6e, 0xd7,
-0xdb, 0x7a, 0x4c, 0xfc, 0x63, 0x79, 0x69, 0x85,
-0xa4, 0x65, 0xf2, 0x0c, 0xcd, 0xc1, 0x69, 0x7f,
-0x5a, 0x24, 0x67, 0x1d, 0xee, 0x87, 0xe3, 0xb0,
-0x0a, 0x96, 0xf1, 0x0c, 0xde, 0x33, 0x9c, 0xb8,
-0xa6, 0xfa, 0xd0, 0x46, 0x4f, 0x6a, 0xfc, 0x8b,
-0xe3, 0x81, 0x58, 0xfe, 0x0f, 0x14, 0x37, 0x5c,
-0x7f, 0x2f, 0xf9, 0x23, 0xac, 0xd2, 0x0b, 0x0d,
-0x60, 0xc0, 0x13, 0xcf, 0x7c, 0x6d, 0xae, 0x14,
-0xfc, 0x53, 0x0f, 0xbc, 0xcc, 0xca, 0xca, 0x08,
-0x0f, 0xc4, 0x54, 0x02, 0x45, 0xd8, 0x03, 0x03,
-0x88, 0x88, 0x26, 0xb1, 0x1c, 0x9e, 0x88, 0xbb,
-0xe7, 0x9a, 0xf8, 0xd7, 0x4d, 0xc7, 0xc9, 0x65,
-0x14, 0x83, 0xb6, 0x4d, 0x05, 0x1f, 0x50, 0x0e,
-0x84, 0xe2, 0x7c, 0x38, 0xc6, 0x6b, 0xf6, 0x53,
-0xce, 0x08, 0xb4, 0x5e, 0x29, 0x30, 0xe3, 0x9f,
-0x93, 0xf0, 0x27, 0x61, 0xee, 0x9d, 0xce, 0xc7,
-0xc5, 0xe5, 0x08, 0x0b, 0x67, 0x79, 0xad, 0x6f,
-0x22, 0x70, 0x3a, 0xac, 0x95, 0x6a, 0x03, 0xfc,
-0x1f, 0x5e, 0x36, 0x1c, 0x29, 0x62, 0x6a, 0xfd,
-0x57, 0x80, 0x27, 0x0d, 0xae, 0x11, 0xf3, 0x23,
-0x5d, 0x50, 0x82, 0x68, 0x07, 0xc5, 0x2c, 0xe3,
-0x66, 0x11, 0x5b, 0x16, 0xcd, 0xeb, 0x21, 0x3c,
-0x22, 0x46, 0x8e, 0x98, 0xf8, 0xc7, 0x06, 0x60,
-0xbb, 0xa4, 0x7e, 0x13, 0x85, 0x6a, 0x6d, 0x7e,
-0x23, 0xc2, 0x3c, 0x07, 0xc2, 0x1e, 0x7f, 0x93,
-0x6a, 0xa4, 0x3d, 0x0f, 0xa0, 0x8d, 0xc8, 0x13,
-0x81, 0x3c, 0xa6, 0xf8, 0xd7, 0xe4, 0x67, 0xc8,
-0xf3, 0xbe, 0x8e, 0x58, 0xf6, 0xf8, 0xf3, 0x3c,
-0x91, 0x23, 0x48, 0xfa, 0xb9, 0xfc, 0xe1, 0x19,
-0x41, 0x1f, 0xc0, 0x6e, 0xcd, 0xae, 0x1f, 0x4a,
-0x89, 0x7f, 0x4d, 0x79, 0x43, 0x1b, 0xd7, 0xdd,
-0xda, 0xda, 0xa0, 0xb8, 0x3c, 0xef, 0x40, 0x61,
-0xa5, 0x66, 0x6d, 0xe7, 0x81, 0x4e, 0x7c, 0x6c,
-0x67, 0x50, 0xfc, 0xa0, 0xf6, 0xac, 0xd6, 0x5d,
-0x67, 0x6b, 0x6f, 0x4a, 0xa9, 0xff, 0x22, 0x6f,
-0x19, 0xfc, 0x87, 0xf2, 0x10, 0xfc, 0x58, 0xe7,
-0xf9, 0x3f, 0xa9, 0xf8, 0x67, 0xff, 0x42, 0xbc,
-0x72, 0x4d, 0xfe, 0xb3, 0x54, 0x4e, 0xb2, 0x40,
-0xd4, 0x29, 0xe2, 0x6d, 0x62, 0x35, 0xf2, 0x7f,
-0x54, 0x77, 0x7c, 0xbf, 0x79, 0x8d, 0x81, 0x39,
-0xfe, 0x75, 0x1b, 0xa4, 0x6b, 0x05, 0x41, 0x1a,
-0xca, 0xe6, 0x34, 0x56, 0x36, 0x1c, 0x90, 0xdb,
-0x60, 0x9d, 0xb6, 0x85, 0xc9, 0xd1, 0xec, 0x61,
-0xba, 0xbf, 0xb9, 0x23, 0x2c, 0x87, 0x3c, 0x29,
-0xf1, 0x2f, 0xd2, 0x74, 0x50, 0x0d, 0xc7, 0x68,
-0xb2, 0x24, 0x2b, 0x2f, 0x7b, 0xb7, 0xb1, 0x16,
-0x50, 0x99, 0xac, 0x1a, 0xf1, 0xaf, 0xd0, 0xa8,
-0xec, 0x4e, 0xa9, 0x7f, 0xaf, 0xe0, 0xd1, 0x1f,
-0x3f, 0x87, 0x01, 0x08, 0x0c, 0x8a, 0xbd, 0xf4,
-0x27, 0xf6, 0x29, 0xb0, 0x86, 0xe4, 0x37, 0xa2,
-0x45, 0x73, 0x02, 0x5e, 0x81, 0xfc, 0x3e, 0x5e,
-0xff, 0x9e, 0xcc, 0xff, 0xa1, 0xd3, 0xd2, 0xdf,
-0x60, 0xae, 0x50, 0xd6, 0xca, 0xa6, 0x77, 0x03,
-0x5f, 0x22, 0xda, 0x71, 0x9e, 0x90, 0xe7, 0x91,
-0xd7, 0xd9, 0xf6, 0x90, 0xad, 0x5e, 0xfc, 0x83,
-0xfa, 0xa5, 0x7f, 0x76, 0xa7, 0xed, 0x07, 0xf8,
-0xbe, 0x13, 0x7f, 0xbc, 0xfe, 0xeb, 0x2c, 0xec,
-0x67, 0xeb, 0x5f, 0x16, 0x47, 0x34, 0xb4, 0x37,
-0xd9, 0x2c, 0x9e, 0x46, 0x38, 0x06, 0x3f, 0xc3,
-0xf3, 0x58, 0xf0, 0x01, 0xfb, 0x0c, 0x7f, 0xc2,
-0xf7, 0x35, 0xe5, 0xff, 0xa4, 0xbd, 0x6d, 0xa4,
-0x6d, 0x3c, 0x36, 0xde, 0x54, 0xc9, 0xd1, 0xce,
-0x90, 0x95, 0xfb, 0x7f, 0x0e, 0xac, 0x72, 0x77,
-0x5a, 0x87, 0x73, 0xae, 0xd4, 0x7e, 0xce, 0x76,
-0x9c, 0xb2, 0xf6, 0xa4, 0xe0, 0x9f, 0xcd, 0xb5,
-0x8d, 0x4a, 0x88, 0x39, 0xce, 0x5a, 0xac, 0xd9,
-0x6b, 0xc0, 0xee, 0xa0, 0x5e, 0x32, 0x08, 0xeb,
-0xba, 0xf2, 0x3b, 0xa9, 0x4f, 0x3c, 0x81, 0x88,
-0x6e, 0x4b, 0x2d, 0xfd, 0x1f, 0xa9, 0xf8, 0x87,
-0x87, 0xe9, 0x59, 0xc6, 0x43, 0xe9, 0x9b, 0xb5,
-0x26, 0x4e, 0x83, 0xe0, 0xc5, 0xf3, 0xf5, 0x84,
-0x3a, 0x3d, 0x90, 0xe1, 0x23, 0xf7, 0x0a, 0xbb,
-0x94, 0x02, 0x9d, 0xa6, 0xe2, 0x9f, 0xc3, 0x7a,
-0xa3, 0x56, 0xc8, 0xa8, 0x2b, 0x7d, 0x1b, 0x3c,
-0xae, 0xa9, 0xe0, 0x08, 0xfa, 0xa3, 0xb4, 0x1d,
-0x0a, 0x59, 0x86, 0x4a, 0xfa, 0xd3, 0x76, 0x68,
-0x21, 0x8d, 0x66, 0xa7, 0xd4, 0x7f, 0x3d, 0x06,
-0x07, 0x6a, 0xe7, 0x30, 0x34, 0x93, 0xf7, 0xd1,
-0x77, 0xd4, 0x79, 0xba, 0x75, 0xe7, 0x37, 0x46,
-0xe0, 0x2d, 0x14, 0xe4, 0xc5, 0x21, 0xf1, 0x13,
-0xb8, 0x18, 0xc5, 0xad, 0xb5, 0x29, 0x25, 0xfe,
-0xf5, 0x09, 0x8c, 0x1f, 0xe4, 0xb4, 0x00, 0x84,
-0xd3, 0x42, 0xa2, 0x7c, 0x0e, 0x8b, 0x1f, 0xd2,
-0x8f, 0xb4, 0x79, 0x2c, 0x2b, 0x24, 0x76, 0xa9,
-0x17, 0x39, 0xbf, 0x44, 0xf8, 0x1a, 0xfc, 0x73,
-0x18, 0xba, 0x19, 0x4f, 0x1b, 0xce, 0x7d, 0xc3,
-0xca, 0xeb, 0xdf, 0x0b, 0x2a, 0xe0, 0x28, 0x2d,
-0xe5, 0x19, 0x20, 0x7b, 0xd8, 0x15, 0xcb, 0x5c,
-0x90, 0xf5, 0x14, 0xfc, 0xf3, 0x8f, 0xb0, 0x85,
-0xd9, 0x43, 0x34, 0x6c, 0x77, 0xc2, 0x3b, 0xc4,
-0x1e, 0x76, 0xf4, 0x90, 0x5b, 0x68, 0x60, 0xd0,
-0xce, 0xf7, 0x83, 0x83, 0xee, 0xa8, 0x76, 0xcf,
-0xe1, 0x8c, 0x5b, 0x26, 0xfc, 0x53, 0x62, 0x6f,
-0xd1, 0xff, 0x61, 0x2b, 0x75, 0x79, 0x78, 0xbc,
-0xac, 0xb0, 0x2e, 0x63, 0x03, 0x99, 0xce, 0x5e,
-0xa4, 0x46, 0xbe, 0x59, 0x27, 0x3c, 0xaf, 0xe1,
-0xc0, 0x9f, 0xe2, 0xff, 0x29, 0x84, 0x10, 0xf8,
-0x82, 0x06, 0xfb, 0xcd, 0xe3, 0xa0, 0x0a, 0x78,
-0x0c, 0x71, 0x57, 0x41, 0xc8, 0xbf, 0xa8, 0xd0,
-0x43, 0xa4, 0xbd, 0xb8, 0x90, 0x68, 0xba, 0x9a,
-0xf1, 0xcf, 0x0a, 0x38, 0xe0, 0x75, 0x0f, 0x5a,
-0x47, 0x73, 0x7e, 0xc3, 0x69, 0x67, 0x16, 0x5b,
-0x83, 0x44, 0xe2, 0x40, 0x91, 0x19, 0x34, 0x8f,
-0x17, 0xf0, 0xd5, 0xb8, 0x21, 0x96, 0x90, 0x3f,
-0x9d, 0x37, 0x9d, 0x87, 0xf3, 0x50, 0x15, 0x98,
-0x85, 0xda, 0x2a, 0x84, 0x30, 0x32, 0x13, 0x0d,
-0xb1, 0x51, 0x7a, 0x52, 0x59, 0xc0, 0x6c, 0xa7,
-0x51, 0x4d, 0x5f, 0x15, 0x6e, 0x03, 0x5b, 0x7f,
-0x0a, 0xfe, 0xf9, 0x14, 0xd1, 0xf2, 0xdc, 0x50,
-0xd6, 0x58, 0xcd, 0xdb, 0x30, 0x80, 0x6a, 0x0e,
-0x17, 0x6a, 0x4c, 0xc5, 0x8d, 0xdf, 0x9f, 0xd5,
-0x23, 0x5e, 0x62, 0x97, 0xdd, 0x55, 0x0b, 0xad,
-0x63, 0xb2, 0x2b, 0x21, 0x1f, 0x18, 0x7c, 0x0a,
-0x7b, 0x79, 0x12, 0x72, 0x37, 0xf9, 0x14, 0xde,
-0xf6, 0xcf, 0x3a, 0x41, 0xbf, 0xf4, 0x9f, 0x22,
-0x81, 0xfa, 0x82, 0x13, 0xb8, 0x50, 0x57, 0xb4,
-0xbd, 0xca, 0x83, 0x75, 0xb8, 0xdf, 0x5c, 0x89,
-0xf5, 0x77, 0xa4, 0x71, 0xf4, 0x1b, 0x62, 0x16,
-0x57, 0xc7, 0x41, 0xd8, 0x20, 0x38, 0x8f, 0x19,
-0xf5, 0x4d, 0xad, 0x4a, 0xac, 0xf0, 0x0d, 0x76,
-0xd8, 0x1d, 0x07, 0x71, 0x29, 0xdc, 0x89, 0xf9,
-0x3a, 0xea, 0x53, 0xbc, 0x7f, 0x3b, 0x0d, 0x67,
-0x7f, 0x04, 0x4f, 0xa2, 0xfc, 0x09, 0x84, 0xc9,
-0x90, 0xda, 0x4a, 0x79, 0xc5, 0x3d, 0x2f, 0x84,
-0x67, 0x25, 0xe1, 0x8c, 0xb0, 0xc9, 0xff, 0x03,
-0xd2, 0x36, 0xeb, 0xf6, 0xba, 0xb2, 0xd1, 0x2c,
-0x8e, 0x76, 0x22, 0x81, 0x4a, 0xdd, 0xc9, 0xbf,
-0xfe, 0x41, 0xcd, 0xdd, 0x6b, 0x24, 0xce, 0xed,
-0x0e, 0x4d, 0x8b, 0x3a, 0xc2, 0xa2, 0x92, 0xd8,
-0xff, 0x5b, 0xc0, 0x48, 0xeb, 0x0d, 0x71, 0xb4,
-0x23, 0x5d, 0xd1, 0xb8, 0x5a, 0x47, 0xb0, 0x72,
-0x85, 0xeb, 0xeb, 0xd1, 0x82, 0x11, 0xb8, 0x42,
-0x2b, 0x39, 0x30, 0x1e, 0x36, 0xe9, 0xdf, 0x6d,
-0xca, 0x78, 0x34, 0x96, 0xcd, 0xab, 0xdd, 0xa9,
-0xf2, 0xf8, 0x57, 0x4d, 0x3e, 0x1c, 0x24, 0x2e,
-0xdd, 0x28, 0xc4, 0x3b, 0xe8, 0x9d, 0xd7, 0x8e,
-0x83, 0xb3, 0x49, 0xfc, 0x73, 0xbb, 0x13, 0xf6,
-0x6a, 0x25, 0x51, 0x44, 0x3b, 0x07, 0xe1, 0xf9,
-0xc0, 0x2c, 0xfd, 0xae, 0x51, 0xd2, 0x85, 0xfa,
-0xf7, 0xbf, 0xf6, 0x1a, 0x8e, 0xa6, 0x56, 0x36,
-0x23, 0x40, 0x5d, 0xe2, 0xcb, 0x49, 0xfe, 0xe7,
-0x5c, 0xee, 0x9f, 0x29, 0xe9, 0x96, 0x5d, 0xe9,
-0x11, 0x95, 0xe9, 0x4e, 0x5e, 0x7f, 0x9a, 0xc1,
-0x18, 0x14, 0xf6, 0x52, 0xbe, 0x3e, 0x8d, 0x8d,
-0x25, 0x0d, 0x38, 0x18, 0x4d, 0xd8, 0xfb, 0x3e,
-0x98, 0xc6, 0x10, 0x06, 0x84, 0xd0, 0x5a, 0xb9,
-0x00, 0xcf, 0xb2, 0xe2, 0xa1, 0x8c, 0x47, 0xd3,
-0x37, 0x6a, 0xcd, 0xc1, 0xe2, 0xa8, 0xe5, 0x51,
-0xf2, 0x2e, 0x59, 0x1d, 0x9e, 0xae, 0xd2, 0x47,
-0xf1, 0x3f, 0x34, 0xf1, 0x57, 0x97, 0x97, 0x25,
-0xed, 0x10, 0x2a, 0xfc, 0xeb, 0x6f, 0x13, 0x23,
-0xb5, 0x7e, 0x52, 0xf9, 0x5a, 0xe6, 0x9e, 0x1a,
-0x07, 0x59, 0x18, 0x44, 0x44, 0x3a, 0x4f, 0x1c,
-0x90, 0xfa, 0xfc, 0x3f, 0x89, 0x38, 0xe7, 0x89,
-0xc7, 0xd2, 0x27, 0xe6, 0x6b, 0x8b, 0x0d, 0xff,
-0x0f, 0x4f, 0xf2, 0x19, 0xc5, 0xd5, 0xa8, 0x7a,
-0xcd, 0x36, 0xda, 0x84, 0x03, 0x32, 0x7f, 0x70,
-0xfd, 0x59, 0x04, 0xd2, 0x57, 0xa4, 0x9f, 0xf3,
-0x9f, 0x82, 0x64, 0xe2, 0x7d, 0x11, 0xdf, 0xc2,
-0x67, 0xcc, 0x28, 0xf2, 0xaa, 0x87, 0x71, 0xb5,
-0xec, 0xb2, 0xf5, 0x65, 0x31, 0x4a, 0x0f, 0xc1,
-0x9e, 0xf3, 0xd6, 0x30, 0xf9, 0x0b, 0x3b, 0x10,
-0xfb, 0xa9, 0x2f, 0xb1, 0xfe, 0xc3, 0xc2, 0x66,
-0xee, 0x3d, 0x66, 0x32, 0xcf, 0x76, 0xde, 0x65,
-0x29, 0xee, 0x43, 0x6b, 0x71, 0x8c, 0x3e, 0x07,
-0x6a, 0x24, 0xb3, 0x81, 0x1c, 0xee, 0xe8, 0x87,
-0x7c, 0x90, 0xcd, 0xfc, 0xcf, 0x00, 0x9c, 0xed,
-0x79, 0x7a, 0x48, 0x5e, 0x79, 0xc7, 0xdb, 0xf0,
-0x04, 0x73, 0x0e, 0x67, 0x3c, 0x4a, 0xfe, 0x40,
-0xfc, 0xac, 0x78, 0x98, 0xae, 0x4c, 0x7f, 0x97,
-0x06, 0xf5, 0xfc, 0xd0, 0x8d, 0x2b, 0xd1, 0x34,
-0x9b, 0x78, 0x1e, 0xee, 0xff, 0xe9, 0x66, 0x85,
-0x5d, 0x72, 0xf8, 0xba, 0x83, 0xea, 0x8e, 0x3a,
-0xa7, 0xde, 0xe2, 0x22, 0x47, 0x7c, 0x1d, 0x11,
-0x5e, 0xd8, 0x6b, 0x1f, 0x40, 0xf4, 0x1d, 0xe2,
-0xf9, 0x3f, 0x6f, 0x9b, 0xea, 0xbf, 0xba, 0xf0,
-0x35, 0xe7, 0x76, 0xa1, 0x74, 0xfd, 0x4f, 0x8d,
-0x17, 0x84, 0x32, 0x36, 0x33, 0x84, 0x30, 0xf8,
-0x48, 0xff, 0xcf, 0x10, 0x11, 0xa1, 0xbd, 0xf6,
-0xb4, 0x56, 0xea, 0x97, 0x43, 0xe2, 0x1e, 0x61,
-0xe2, 0x79, 0xea, 0x14, 0x15, 0xc6, 0x7a, 0xb9,
-0xd2, 0xcf, 0x89, 0x95, 0x7d, 0x19, 0xfe, 0x90,
-0xb1, 0xc9, 0xfb, 0xe3, 0xfe, 0x1f, 0xad, 0x92,
-0x4c, 0x62, 0xe2, 0xb1, 0x64, 0xfe, 0xad, 0xd2,
-0xa9, 0xa0, 0xbd, 0xdf, 0x30, 0x29, 0x28, 0x4e,
-0x07, 0xce, 0x06, 0x6c, 0x53, 0x20, 0x1d, 0xee,
-0xe4, 0xf5, 0x89, 0x86, 0xbe, 0xd3, 0x2a, 0xeb,
-0x96, 0x04, 0x73, 0x4c, 0xf8, 0xa7, 0xb6, 0x13,
-0x76, 0xaf, 0x2d, 0xe1, 0x41, 0xab, 0x42, 0x69,
-0x2b, 0x23, 0x5a, 0x5b, 0xd0, 0x33, 0x03, 0x15,
-0x31, 0xcf, 0x7f, 0xce, 0x1e, 0x82, 0x27, 0xfb,
-0x1e, 0xf4, 0xb6, 0x71, 0xfe, 0xe7, 0x89, 0x3f,
-0x23, 0xff, 0x27, 0xbf, 0x44, 0xab, 0x09, 0xc2,
-0xf2, 0xc2, 0x16, 0x6a, 0xd4, 0x2b, 0x75, 0xd6,
-0x6d, 0xc7, 0xf9, 0x6d, 0x38, 0x9f, 0xee, 0x16,
-0x4a, 0x8c, 0x7c, 0x95, 0xd4, 0xfc, 0x43, 0xc9,
-0xe9, 0x95, 0x73, 0x8b, 0x24, 0x3a, 0x13, 0x42,
-0x3c, 0xdb, 0x67, 0x15, 0x6c, 0xd7, 0xc0, 0x2b,
-0x2b, 0x4a, 0x3f, 0x6c, 0xd0, 0xf0, 0x27, 0xb3,
-0xfd, 0x55, 0x3e, 0xd5, 0x37, 0x51, 0xe6, 0xa6,
-0x2a, 0x11, 0x92, 0x1d, 0x23, 0x02, 0xe2, 0x1e,
-0xa1, 0x35, 0xac, 0x34, 0x0a, 0x17, 0x84, 0x12,
-0x58, 0xc2, 0x26, 0x7d, 0x9a, 0x90, 0x3f, 0x3d,
-0x99, 0x9d, 0x08, 0x5a, 0xaa, 0x0c, 0xef, 0x0d,
-0xda, 0x6b, 0x1c, 0x08, 0x2d, 0xfa, 0x6f, 0xd2,
-0x27, 0xda, 0x7e, 0xaf, 0x51, 0x08, 0x7f, 0xd9,
-0x33, 0x17, 0x07, 0x93, 0x3e, 0x4d, 0xc8, 0x9f,
-0xf2, 0xbf, 0xe9, 0xa4, 0x9f, 0xc3, 0xfc, 0x5a,
-0xba, 0xa9, 0xe6, 0x3c, 0x87, 0x01, 0x0b, 0x79,
-0xda, 0x33, 0xc7, 0x87, 0x8b, 0xac, 0xdc, 0x7f,
-0x75, 0x19, 0x4a, 0xbf, 0x63, 0x1d, 0x14, 0x3f,
-0x4d, 0xec, 0x9f, 0x3c, 0x9e, 0xff, 0x0c, 0x76,
-0xea, 0x60, 0xd9, 0x51, 0xda, 0x23, 0xcd, 0xcb,
-0x93, 0xfd, 0x1b, 0x01, 0x02, 0xde, 0x8e, 0xbc,
-0x4c, 0x46, 0x4e, 0x79, 0x7b, 0xd4, 0x0e, 0x05,
-0x2d, 0x88, 0xd7, 0x13, 0xf2, 0x44, 0xe3, 0xf9,
-0x4e, 0xe0, 0xe0, 0x4a, 0xa7, 0x9f, 0xbb, 0x01,
-0x3d, 0x72, 0xae, 0xe5, 0x19, 0x4e, 0x04, 0xe4,
-0xc9, 0x33, 0x88, 0x10, 0x23, 0xaa, 0x76, 0x83,
-0x42, 0x8e, 0x25, 0xf6, 0x4f, 0x9e, 0xc4, 0xb3,
-0xa7, 0x78, 0x91, 0xbb, 0x7d, 0xc8, 0x17, 0xa7,
-0x3d, 0x2c, 0xa4, 0x8d, 0x3e, 0x7b, 0x3c, 0xff,
-0x0a, 0xec, 0xd5, 0x16, 0x5e, 0xff, 0x3e, 0x31,
-0x3f, 0xc4, 0xe7, 0xd3, 0x72, 0x0d, 0x9f, 0xf6,
-0x8c, 0x32, 0x3e, 0x58, 0xc9, 0xd1, 0x5a, 0xa7,
-0x7a, 0x00, 0x3a, 0x34, 0x89, 0xcf, 0x1f, 0x97,
-0xec, 0xf5, 0x16, 0x1e, 0xca, 0x99, 0x98, 0xff,
-0x11, 0xaf, 0xff, 0x82, 0xfd, 0x75, 0xeb, 0x11,
-0x06, 0x73, 0x7e, 0x1b, 0x44, 0x83, 0x39, 0x43,
-0x64, 0x9c, 0x55, 0xc4, 0xf2, 0xc1, 0xce, 0x7a,
-0x2a, 0x97, 0x67, 0x06, 0xc5, 0x0b, 0x49, 0x3c,
-0xc3, 0xf9, 0x36, 0x95, 0x79, 0x0a, 0xa7, 0xfd,
-0x51, 0xe2, 0x6e, 0xb7, 0x7c, 0x3d, 0x52, 0xed,
-0x16, 0x16, 0x1b, 0xf9, 0x3f, 0xe0, 0x56, 0xad,
-0x66, 0xfc, 0x43, 0x25, 0x07, 0x9c, 0x01, 0x83,
-0xf6, 0xe7, 0xa2, 0x91, 0xff, 0x8c, 0x6a, 0xe8,
-0x57, 0xf0, 0xb6, 0x60, 0x67, 0x16, 0xbe, 0x9f,
-0xf7, 0xeb, 0x5b, 0x99, 0x35, 0x4a, 0xfa, 0x12,
-0xfb, 0x87, 0xfe, 0x82, 0x97, 0x9d, 0x3a, 0x74,
-0x87, 0x8b, 0x1c, 0x62, 0x5b, 0x63, 0x66, 0x82,
-0x8d, 0x26, 0x0a, 0xb7, 0xc3, 0xd1, 0x19, 0xaa,
-0xa0, 0xe2, 0xfc, 0x89, 0xef, 0x9b, 0x3f, 0x79,
-0x2a, 0x5a, 0x24, 0x05, 0xcc, 0xd2, 0x60, 0xbf,
-0x10, 0xab, 0x5f, 0x70, 0x5b, 0x36, 0x2b, 0x4f,
-0x28, 0x31, 0x22, 0x0b, 0xd8, 0xa9, 0xa9, 0x0a,
-0xe5, 0x8c, 0x09, 0x13, 0xfb, 0xcd, 0x51, 0x37,
-0x4d, 0xf9, 0x9c, 0xdd, 0x16, 0xb5, 0xfc, 0x44,
-0x7c, 0x17, 0xfe, 0x1c, 0xb8, 0x69, 0x74, 0xc9,
-0x4f, 0xda, 0xa6, 0xc1, 0x7a, 0xb6, 0xc3, 0xa8,
-0x7f, 0x87, 0x2b, 0xec, 0xd6, 0x10, 0xe7, 0x3f,
-0x4c, 0xc8, 0x1f, 0x3a, 0x79, 0x1b, 0x7c, 0x08,
-0x15, 0x2c, 0xb3, 0x47, 0x8c, 0xa0, 0x84, 0xab,
-0x3c, 0xc1, 0xcd, 0x4c, 0xe9, 0x62, 0x5d, 0x65,
-0xdf, 0x44, 0x22, 0x34, 0x2a, 0x7a, 0x53, 0xfe,
-0x8f, 0x4f, 0xda, 0x8f, 0xfa, 0xab, 0x34, 0x62,
-0x1d, 0xff, 0xde, 0xdb, 0xca, 0xd1, 0xe6, 0xaa,
-0x51, 0xeb, 0x98, 0xe8, 0xe6, 0x57, 0x4e, 0x5b,
-0xb9, 0x23, 0x68, 0x2c, 0x58, 0xa5, 0xae, 0x1f,
-0x36, 0xd5, 0x47, 0x04, 0x60, 0xaa, 0xf6, 0x72,
-0xde, 0xad, 0x7e, 0x3a, 0xdb, 0x3d, 0x28, 0xad,
-0xc9, 0x2b, 0xd6, 0xeb, 0x66, 0x67, 0x2b, 0xf0,
-0xb1, 0x5a, 0x10, 0xcd, 0xe4, 0xfe, 0xe7, 0x70,
-0xe8, 0x01, 0x2a, 0xe7, 0x93, 0xa2, 0xc4, 0x7a,
-0x32, 0xd8, 0x0c, 0x2f, 0x01, 0x82, 0x9c, 0x87,
-0xd2, 0xc7, 0xd4, 0x55, 0x1c, 0x0f, 0x37, 0x90,
-0x3c, 0x6d, 0x97, 0x50, 0x60, 0x04, 0xee, 0xe1,
-0x65, 0xb5, 0xf8, 0xd8, 0x8d, 0x3e, 0x8b, 0x94,
-0xe0, 0x3f, 0xd4, 0x72, 0xd7, 0xe2, 0x69, 0x2a,
-0xec, 0xa2, 0x2e, 0xfb, 0x41, 0xc2, 0x8c, 0x44,
-0x68, 0x0b, 0xe5, 0x69, 0x54, 0x31, 0x62, 0x81,
-0xdd, 0xed, 0x4e, 0xdf, 0x8d, 0x2a, 0xc9, 0x36,
-0xe1, 0xd5, 0x6d, 0x5c, 0x7e, 0x8e, 0x5a, 0x47,
-0x85, 0x03, 0x70, 0x20, 0xa6, 0x7f, 0x4b, 0x50,
-0x43, 0x15, 0xa0, 0x7e, 0x41, 0x7d, 0xb7, 0x47,
-0x2b, 0x09, 0xe1, 0x17, 0xa4, 0x09, 0x3c, 0x1c,
-0x52, 0x46, 0x60, 0xdc, 0x6e, 0xd4, 0x7f, 0x0d,
-0xab, 0xdc, 0x1f, 0xb2, 0xde, 0x25, 0x7e, 0xa8,
-0x7d, 0x3c, 0xe1, 0x6f, 0xbf, 0x40, 0x2a, 0x79,
-0x61, 0xd4, 0xb0, 0x64, 0xc6, 0x3f, 0x57, 0x59,
-0x41, 0xad, 0x51, 0xf6, 0x7e, 0x54, 0x37, 0xcc,
-0xd8, 0x39, 0xec, 0xe8, 0x44, 0x21, 0xfc, 0x15,
-0x28, 0x65, 0x59, 0x51, 0x31, 0x9a, 0xc0, 0x3f,
-0xbd, 0xd2, 0x0a, 0x69, 0xf7, 0xdb, 0x8e, 0x41,
-0xd4, 0xb6, 0x1f, 0x71, 0xb7, 0x61, 0x6f, 0x5b,
-0x98, 0x14, 0xf0, 0xc4, 0x1e, 0xce, 0x88, 0x38,
-0x42, 0xf7, 0xf2, 0xd0, 0x4f, 0xc8, 0x6e, 0xc2,
-0x3f, 0x92, 0x51, 0xa6, 0xdd, 0x87, 0x4a, 0xf9,
-0x23, 0x6e, 0xaf, 0x71, 0x37, 0x85, 0x64, 0x14,
-0xfe, 0xc7, 0xf4, 0xb5, 0x6e, 0xef, 0xc0, 0x8d,
-0x67, 0xe2, 0x3f, 0x84, 0x4c, 0x4e, 0xb3, 0x09,
-0x19, 0x73, 0x70, 0x93, 0x34, 0x09, 0xb8, 0xdf,
-0xe6, 0x10, 0x48, 0xc7, 0xf9, 0x11, 0x3a, 0x1b,
-0xd7, 0x67, 0xbb, 0x1a, 0xd2, 0x10, 0x68, 0xf5,
-0x25, 0xfa, 0x59, 0x40, 0xde, 0x03, 0xbc, 0xac,
-0x5b, 0x2b, 0xde, 0x59, 0x30, 0x0c, 0x07, 0x78,
-0x18, 0xe2, 0x11, 0xb9, 0x10, 0x8e, 0x4e, 0xfe,
-0x91, 0xbe, 0x38, 0x5c, 0x83, 0xfb, 0x21, 0xd7,
-0xad, 0x67, 0x6d, 0x11, 0xa3, 0x89, 0xfa, 0x9d,
-0x50, 0xe6, 0x25, 0xf6, 0x25, 0x2c, 0xd0, 0xb3,
-0xce, 0x15, 0x8c, 0x71, 0xfe, 0x1f, 0x7d, 0xfd,
-0xb9, 0x9a, 0x51, 0x8a, 0x40, 0xa8, 0x9f, 0xe7,
-0xff, 0xc0, 0x65, 0x17, 0x8a, 0xa6, 0x65, 0xe2,
-0x70, 0x73, 0x02, 0xff, 0x08, 0xc7, 0xa0, 0x9f,
-0xcd, 0x8e, 0x2e, 0x1e, 0xcd, 0xf9, 0x29, 0x9c,
-0x64, 0x06, 0xff, 0x0f, 0xe7, 0x8f, 0x2a, 0x1d,
-0x28, 0x79, 0x5d, 0x74, 0xb1, 0xf7, 0x58, 0xa9,
-0x68, 0xed, 0x37, 0xf3, 0xff, 0xc0, 0x19, 0x25,
-0x03, 0xf1, 0x61, 0xdd, 0xcb, 0xd9, 0xc5, 0x7d,
-0x01, 0xd5, 0x1e, 0xcd, 0xe0, 0xfc, 0xcf, 0x7b,
-0x0b, 0xdd, 0x4a, 0x71, 0x30, 0x5b, 0x0d, 0xb5,
-0x51, 0x37, 0xe7, 0x9f, 0x4f, 0xd6, 0x7f, 0xd1,
-0xb4, 0x21, 0x34, 0x33, 0x1d, 0x3a, 0x9d, 0xf3,
-0xec, 0x00, 0x04, 0x68, 0xfc, 0x58, 0xed, 0xa5,
-0xea, 0xa0, 0x9c, 0x4e, 0x40, 0x7f, 0x11, 0xba,
-0x08, 0x95, 0xcc, 0xf5, 0x5f, 0x53, 0x9e, 0x81,
-0x16, 0x56, 0x84, 0xf8, 0x13, 0xf1, 0x24, 0x77,
-0xfb, 0x64, 0xc4, 0x60, 0xcf, 0x0c, 0x2d, 0xa3,
-0xdd, 0x6f, 0x87, 0x36, 0xc5, 0xa2, 0xd2, 0xcd,
-0x5a, 0xb2, 0xfe, 0x0b, 0xd2, 0xce, 0xc0, 0x81,
-0xd0, 0x9e, 0x90, 0x35, 0x8c, 0xe8, 0x65, 0x10,
-0xba, 0x7b, 0xe3, 0xfc, 0xcc, 0x6e, 0x32, 0x8b,
-0xca, 0x5f, 0x27, 0x1f, 0xea, 0x37, 0x34, 0x38,
-0x37, 0x9b, 0xea, 0xdf, 0x43, 0x93, 0x77, 0x91,
-0xcb, 0x64, 0x2e, 0xc3, 0x6d, 0x70, 0x9f, 0xc1,
-0xff, 0xcc, 0xf9, 0xc0, 0xe1, 0xaa, 0x34, 0xef,
-0x03, 0xdc, 0x36, 0xba, 0xf2, 0x27, 0xdc, 0x38,
-0x36, 0x9f, 0x38, 0x6c, 0x8a, 0x7f, 0x3d, 0xc3,
-0xd3, 0x7a, 0xd7, 0x3e, 0xc6, 0x6f, 0x3b, 0xa6,
-0x4d, 0xa4, 0x99, 0xb1, 0x0a, 0x4e, 0xe3, 0x36,
-0x93, 0x1c, 0xa2, 0xdd, 0x9b, 0x9c, 0xbf, 0x14,
-0x1b, 0x4c, 0xfe, 0x1f, 0x89, 0x4b, 0x57, 0x46,
-0x47, 0x55, 0x1e, 0xf6, 0x9a, 0x37, 0xc1, 0x87,
-0x69, 0x8f, 0xa0, 0xfd, 0x58, 0xa0, 0x89, 0x5a,
-0x11, 0xd0, 0xa7, 0x97, 0x99, 0xfb, 0x5f, 0x48,
-0xd2, 0xe3, 0x8c, 0x8d, 0xce, 0x0c, 0x5b, 0xac,
-0x10, 0xc4, 0xf3, 0x22, 0xc6, 0xf9, 0x6a, 0xd8,
-0x7f, 0x55, 0x09, 0x62, 0xe3, 0x60, 0xb4, 0x85,
-0xaa, 0xe4, 0x9c, 0x09, 0xff, 0x94, 0x49, 0x4f,
-0xa0, 0xd2, 0xa7, 0x3f, 0xbe, 0x6e, 0x9a, 0xb4,
-0x33, 0x9e, 0xf6, 0x0c, 0xbb, 0x42, 0x5b, 0x42,
-0xb4, 0x9e, 0x5c, 0x87, 0x82, 0xe5, 0x07, 0x3e,
-0x7a, 0x27, 0xb9, 0x94, 0xe4, 0x7f, 0x03, 0x09,
-0x7e, 0x0f, 0x2e, 0x3d, 0x73, 0xbb, 0x68, 0x15,
-0x06, 0xd5, 0x8a, 0x11, 0x9b, 0xab, 0x60, 0x00,
-0x4f, 0x5c, 0x45, 0xd4, 0xa6, 0x88, 0x69, 0x6a,
-0x9f, 0xe6, 0xf2, 0x5a, 0x6f, 0x10, 0xef, 0x49,
-0xd6, 0x7f, 0x4d, 0xdd, 0x49, 0x3e, 0xe4, 0xd5,
-0x4f, 0x67, 0xc5, 0x6d, 0xc2, 0x65, 0x88, 0xf1,
-0xff, 0x18, 0xf5, 0xef, 0xb3, 0x06, 0xe5, 0xf3,
-0xf0, 0x25, 0x57, 0x6d, 0x83, 0xa6, 0xfa, 0x2f,
-0x3a, 0x65, 0x08, 0xde, 0x49, 0xab, 0x60, 0x88,
-0x96, 0x4b, 0xb4, 0x13, 0x6c, 0x82, 0xff, 0x19,
-0x5f, 0xbc, 0x58, 0x2f, 0xa8, 0xa0, 0x9f, 0xc1,
-0xdc, 0xa8, 0x35, 0x2a, 0x93, 0xa4, 0xff, 0x27,
-0x83, 0xf3, 0x1f, 0x16, 0xb3, 0x00, 0x2f, 0xbb,
-0x5b, 0x23, 0xc5, 0xc5, 0x26, 0x2f, 0x7b, 0x47,
-0x04, 0x97, 0x0b, 0xbb, 0x48, 0xa9, 0x46, 0xa3,
-0xa4, 0x34, 0xe1, 0x5f, 0x52, 0xe1, 0x97, 0x3c,
-0xcd, 0xc9, 0xee, 0x78, 0x34, 0xeb, 0x67, 0xb0,
-0x2f, 0x9e, 0xf6, 0x0c, 0xbb, 0x98, 0x23, 0x9a,
-0xb1, 0x94, 0x4c, 0xe3, 0xd0, 0x28, 0x4a, 0x97,
-0x92, 0x3c, 0x65, 0x62, 0xfd, 0xeb, 0xa5, 0xc3,
-0xd0, 0x74, 0xc8, 0x19, 0x42, 0xf9, 0xb3, 0x18,
-0x78, 0x61, 0xaf, 0xb1, 0xdf, 0x50, 0x6d, 0x0d,
-0xe1, 0xfe, 0x99, 0xee, 0xdb, 0xa1, 0xab, 0xb5,
-0x8e, 0x5c, 0x72, 0x63, 0x42, 0x3f, 0x0e, 0xe7,
-0xee, 0x51, 0x8f, 0x84, 0x8a, 0x43, 0xbc, 0x5e,
-0x86, 0x5e, 0x09, 0x77, 0xc7, 0xf9, 0x9f, 0xd9,
-0xfc, 0x70, 0xe6, 0x90, 0x38, 0x0f, 0xae, 0xe4,
-0xcd, 0x0d, 0x59, 0x3f, 0x16, 0xe7, 0x25, 0xf6,
-0x4f, 0x1d, 0x6c, 0xf1, 0x0f, 0x8b, 0x95, 0x54,
-0xe0, 0x30, 0x60, 0xd8, 0x08, 0x7b, 0x4d, 0x42,
-0x35, 0xe4, 0xad, 0x24, 0xb3, 0x38, 0x23, 0xd0,
-0x98, 0xb6, 0x7f, 0xb2, 0xad, 0xf9, 0x5b, 0xc7,
-0x4c, 0xf6, 0x7b, 0xa7, 0x11, 0xf4, 0x29, 0x36,
-0x87, 0x39, 0xa4, 0xb7, 0x04, 0xb7, 0x96, 0xb9,
-0x59, 0x2e, 0x64, 0x77, 0x42, 0xf7, 0x1d, 0xb6,
-0x1b, 0x4c, 0xf5, 0x3b, 0x21, 0x48, 0x1f, 0x6c,
-0xd1, 0x4b, 0xbc, 0x14, 0xd5, 0x28, 0x4d, 0xa6,
-0x31, 0x6b, 0xbc, 0x11, 0x83, 0xe7, 0x39, 0xd2,
-0x38, 0x58, 0xd4, 0x20, 0xa7, 0xd4, 0xbf, 0xa7,
-0x15, 0x0a, 0x4f, 0xaa, 0x45, 0xdf, 0xa0, 0x41,
-0x69, 0x88, 0xe7, 0xcb, 0xc5, 0xe6, 0x3f, 0x89,
-0x6a, 0x3a, 0x23, 0x98, 0x5d, 0xe8, 0x68, 0xe1,
-0x8e, 0xa0, 0x4d, 0x37, 0x64, 0x99, 0xed, 0x2f,
-0xa1, 0x71, 0xb5, 0xe1, 0xff, 0xe1, 0xb0, 0x27,
-0x16, 0x06, 0xc2, 0x41, 0xc8, 0x4b, 0xe7, 0x10,
-0x4e, 0x0d, 0x5d, 0xcf, 0x11, 0x91, 0x25, 0x51,
-0xff, 0x95, 0x77, 0x93, 0x0f, 0x4e, 0xc0, 0x3c,
-0x61, 0xaa, 0x99, 0xf6, 0x27, 0xf7, 0x6d, 0xc4,
-0x3f, 0x99, 0x2c, 0x47, 0xa5, 0x07, 0xd1, 0x10,
-0x5b, 0x82, 0x36, 0xa0, 0xd9, 0xff, 0x83, 0xa0,
-0xe5, 0x1f, 0xb5, 0xbb, 0x37, 0xd5, 0x3c, 0x23,
-0x7d, 0x3e, 0xe1, 0xd6, 0xf8, 0x1c, 0xaa, 0xbc,
-0xb3, 0xce, 0x8b, 0x9f, 0xe3, 0x4f, 0xaf, 0x70,
-0x6a, 0xa0, 0x33, 0x89, 0xf5, 0x2c, 0x9f, 0x72,
-0x1e, 0x3e, 0x91, 0x6e, 0xd5, 0xac, 0xbf, 0x14,
-0x6f, 0x5d, 0xfb, 0x56, 0x9c, 0x1f, 0x09, 0x2e,
-0x6b, 0x3b, 0xbc, 0xff, 0x78, 0x8f, 0x78, 0x6b,
-0x10, 0xf1, 0x52, 0xb5, 0xf5, 0x58, 0x4d, 0xb2,
-0xfe, 0x3d, 0x0f, 0x42, 0xd6, 0x00, 0x94, 0x80,
-0x75, 0x75, 0x4e, 0x3e, 0xeb, 0x32, 0xf2, 0x9f,
-0x89, 0x81, 0x88, 0xa6, 0x16, 0x37, 0x93, 0x7c,
-0xd6, 0xa3, 0x16, 0xdd, 0x54, 0xb7, 0xba, 0x35,
-0xc9, 0xff, 0x5c, 0x27, 0x3d, 0x0b, 0x5b, 0x61,
-0x86, 0x76, 0x4b, 0x2e, 0xb9, 0x1d, 0x9e, 0xa7,
-0xdc, 0xdb, 0x93, 0xce, 0x0b, 0xe1, 0xeb, 0xf9,
-0x15, 0x4e, 0x05, 0xd0, 0xe9, 0xa1, 0x93, 0xd5,
-0xec, 0x24, 0xfe, 0xc9, 0xe5, 0x69, 0xe4, 0x25,
-0xb7, 0xc7, 0x68, 0x27, 0x35, 0x7b, 0x8c, 0xf6,
-0x79, 0xb7, 0xdd, 0xc1, 0xf1, 0x4f, 0x21, 0xec,
-0xcd, 0x2d, 0x8a, 0xd0, 0x8d, 0x24, 0x3d, 0x31,
-0x3f, 0x94, 0xbb, 0x1a, 0x3e, 0xb4, 0xce, 0xf1,
-0xdd, 0x1d, 0xcc, 0x58, 0x0e, 0x0f, 0x69, 0x46,
-0x59, 0x9f, 0xe1, 0xef, 0xaa, 0x9b, 0x75, 0x5c,
-0x9c, 0xee, 0x3b, 0x0b, 0xd7, 0xd5, 0x39, 0x82,
-0xe6, 0xfe, 0x17, 0xd0, 0xd9, 0xcc, 0x83, 0x5c,
-0xc5, 0x8a, 0x11, 0x1d, 0x4b, 0xb8, 0x7d, 0xca,
-0xb4, 0x59, 0xd9, 0x6d, 0x67, 0x60, 0x5c, 0x2c,
-0xe3, 0x15, 0x64, 0xe6, 0xfa, 0xaf, 0x0e, 0x88,
-0xe8, 0x31, 0xb6, 0x81, 0x44, 0x99, 0x21, 0x7e,
-0x88, 0x79, 0x9c, 0xff, 0x39, 0x1f, 0x22, 0xab,
-0xdd, 0x24, 0xa5, 0xfe, 0x8b, 0x4a, 0xe5, 0xb0,
-0x8e, 0xcc, 0xe2, 0xf8, 0x67, 0x3e, 0xe3, 0x65,
-0x5f, 0x8b, 0x42, 0x62, 0x17, 0xf0, 0xfc, 0x1f,
-0x3a, 0x44, 0xca, 0xb5, 0x75, 0xb0, 0xb5, 0x43,
-0x8e, 0x7a, 0x92, 0xfc, 0x3f, 0x34, 0x6d, 0xb1,
-0x51, 0x76, 0xaa, 0xba, 0x6e, 0xf8, 0x17, 0xbf,
-0x88, 0x82, 0xba, 0x8d, 0x9f, 0x97, 0x3d, 0xdc,
-0x71, 0x0a, 0x64, 0x12, 0x6c, 0x98, 0x8c, 0x08,
-0xf0, 0x06, 0x53, 0xfe, 0x8f, 0x2a, 0x54, 0xa8,
-0xcd, 0xe9, 0xc5, 0x0c, 0xb5, 0xd5, 0xda, 0x8c,
-0xe7, 0x5c, 0x46, 0x20, 0x8c, 0xd7, 0x2f, 0x4c,
-0xd7, 0xa9, 0x87, 0x7c, 0x0b, 0x9e, 0x90, 0x66,
-0x82, 0xfc, 0x08, 0x09, 0x25, 0xfc, 0x3f, 0x8e,
-0xbc, 0xeb, 0x50, 0xbf, 0x14, 0x6f, 0xb1, 0x3e,
-0x9a, 0xf3, 0xb4, 0x70, 0x14, 0x81, 0xd0, 0xa4,
-0x18, 0xec, 0xa9, 0x8a, 0xae, 0xfb, 0x89, 0x5c,
-0x49, 0x4e, 0xb2, 0xdb, 0x7c, 0xb6, 0x13, 0x29,
-0xf5, 0x5f, 0xcd, 0x64, 0x0c, 0xa6, 0xf1, 0xa2,
-0xda, 0x15, 0xc2, 0x3b, 0x6c, 0x42, 0xad, 0xc3,
-0x9e, 0xb7, 0x67, 0xf5, 0x88, 0x3d, 0xa8, 0xfc,
-0xe7, 0x72, 0xfb, 0xcb, 0x93, 0x90, 0x3f, 0x3e,
-0xe9, 0x65, 0xb8, 0x1c, 0x5c, 0x30, 0x64, 0xa8,
-0xad, 0x25, 0xf1, 0xb4, 0x67, 0xbc, 0xff, 0xfc,
-0x53, 0x59, 0x2d, 0x05, 0x65, 0xc2, 0xe1, 0xe0,
-0xdc, 0xa1, 0xb5, 0x27, 0xc4, 0x41, 0x13, 0xfe,
-0xd9, 0x54, 0xb7, 0xf3, 0x77, 0xc5, 0x5d, 0x75,
-0x0d, 0xd9, 0xdf, 0x95, 0xfe, 0x18, 0xe7, 0xff,
-0x81, 0x6e, 0xa9, 0x43, 0xa7, 0x75, 0xfe, 0xc9,
-0xe1, 0x3f, 0xce, 0xce, 0x6f, 0xa6, 0xd9, 0xf0,
-0x91, 0xa9, 0xfe, 0x6b, 0x13, 0xec, 0x54, 0x67,
-0xae, 0xbe, 0xe5, 0x21, 0x44, 0x47, 0xaf, 0x4c,
-0xf0, 0xff, 0xbc, 0x4c, 0x67, 0xf6, 0x5b, 0x7e,
-0x44, 0x36, 0x29, 0xfb, 0x60, 0xfa, 0x1d, 0x75,
-0x5e, 0x4f, 0x73, 0xe2, 0xfe, 0x5a, 0xee, 0x2a,
-0x25, 0xac, 0x3b, 0x55, 0x34, 0xdb, 0x39, 0xcd,
-0x4b, 0x9c, 0xcf, 0xbf, 0x9b, 0x21, 0x1e, 0x70,
-0x5b, 0x7e, 0xcb, 0x5e, 0x04, 0x7b, 0x37, 0xdd,
-0xe6, 0x3f, 0x61, 0xf6, 0x0f, 0x68, 0xb8, 0x5b,
-0x3a, 0x6d, 0xa3, 0x68, 0x4f, 0x7d, 0xa9, 0x71,
-0xf9, 0x39, 0x89, 0xeb, 0x97, 0xf2, 0xfa, 0xbb,
-0x03, 0xe2, 0xb3, 0xb0, 0xdb, 0x5b, 0xe6, 0xb5,
-0xae, 0xdd, 0x15, 0x31, 0xf1, 0x2d, 0x8c, 0x68,
-0x63, 0xc2, 0x34, 0xc4, 0x3f, 0x35, 0x51, 0xf8,
-0x4f, 0x34, 0xbe, 0x3e, 0x88, 0xa8, 0xfb, 0x6c,
-0xcd, 0xc2, 0xfd, 0xca, 0x3b, 0x50, 0x29, 0xa0,
-0x04, 0x3b, 0x65, 0xf2, 0xff, 0x9c, 0x87, 0x81,
-0xc0, 0x7c, 0xe6, 0x1c, 0xcd, 0xe9, 0x46, 0x18,
-0x90, 0x13, 0xe3, 0x7f, 0xbe, 0xa2, 0xcd, 0xd5,
-0xac, 0x4f, 0xe6, 0x8c, 0x28, 0x56, 0x34, 0x94,
-0xac, 0x3a, 0xee, 0xcf, 0xa4, 0xff, 0x67, 0x39,
-0x0b, 0x44, 0x9d, 0xae, 0x3a, 0x84, 0x3d, 0xea,
-0x5e, 0xe8, 0x30, 0xf4, 0x97, 0x14, 0xce, 0x78,
-0x41, 0x77, 0x6c, 0x26, 0xa7, 0xa1, 0x4b, 0xef,
-0x68, 0xa8, 0x5b, 0x8b, 0xa7, 0x21, 0x99, 0xff,
-0xbc, 0x1c, 0x02, 0x6a, 0x56, 0x07, 0xa2, 0x9d,
-0x6d, 0xcd, 0x7b, 0xa1, 0x68, 0x42, 0xdf, 0xcd,
-0xb8, 0x33, 0xc0, 0x36, 0x9e, 0x49, 0x7b, 0xbe,
-0xf1, 0x85, 0x28, 0x5d, 0x7b, 0x8f, 0x89, 0xff,
-0x07, 0xf5, 0x11, 0xa3, 0x4e, 0x12, 0x70, 0x11,
-0x2b, 0xde, 0x3f, 0xc6, 0x07, 0x68, 0x10, 0xf5,
-0x53, 0x42, 0x74, 0x81, 0x21, 0x34, 0xa2, 0xe0,
-0x21, 0x09, 0xf9, 0x03, 0x79, 0x9c, 0xf6, 0xaa,
-0x32, 0x60, 0x0d, 0xe7, 0xac, 0xe5, 0x6a, 0xe5,
-0xf5, 0xd8, 0x7e, 0x50, 0x76, 0x79, 0xad, 0x7e,
-0x31, 0x9a, 0x61, 0xc4, 0x7f, 0x37, 0x08, 0x6a,
-0x4a, 0xfe, 0xcf, 0x4a, 0xbe, 0x08, 0x9c, 0x46,
-0xe0, 0x4b, 0x28, 0x8b, 0xf1, 0x3f, 0x9f, 0x57,
-0x5f, 0x39, 0x68, 0xeb, 0x45, 0x8b, 0xfe, 0x3c,
-0xdf, 0x3f, 0xfa, 0xa4, 0x24, 0xfe, 0x01, 0x20,
-0xcd, 0xb0, 0x85, 0xd3, 0xcd, 0x28, 0xff, 0xce,
-0x00, 0xcc, 0x7f, 0x12, 0xa0, 0x75, 0xa8, 0xa1,
-0x04, 0xfe, 0x77, 0x06, 0xe6, 0xbf, 0x66, 0xb4,
-0xe9, 0x39, 0xb9, 0xe6, 0xbf, 0x37, 0xf8, 0x3f,
-0xb9, 0x3f, 0xe3, 0x39, 0x44, 0x40, 0xfe, 0xdd,
-0x81, 0xe9, 0xef, 0xdf, 0x9f, 0x18, 0x1b, 0xfc,
-0x9f, 0xdc, 0xff, 0x7f, 0xf7, 0xef, 0x3f, 0xd8,
-0xfa, 0x2b, 0xbc, 0x97, 0xdf, 0x00, 0xfc, 0x08,
-0xa6, 0xea, 0xff, 0xce, 0x40, 0xfa, 0x7f, 0x7c,
-0xff, 0xff, 0x3f, 0xaf, 0xbf, 0xa4, 0xb0, 0xbf,
-0x62, 0xcd, 0x05, 0x53, 0x7f, 0x9f, 0xff, 0xbd,
-0xbf, 0x8a, 0x8a, 0xbf, 0x66, 0x96, 0xcd, 0xf6,
-0xff, 0xf0, 0xf6, 0xff, 0x2f, 0xfc, 0x55, 0x5d,
-0xbd, 0x7a, 0x55, 0xff, 0x5f, 0x0c, 0xfe, 0xbf,
-0x3c, 0xff, 0x3f, 0xd8, 0x79, 0xfc, 0xbf, 0xf2,
-0xf0, 0xff, 0xca, 0xc3, 0xff, 0x83, 0xf5, 0xff,
-0xbf, 0xf2, 0xf0, 0x7f, 0xf5, 0xf7, 0x1f, 0x4d,
-0xfe, 0xfc, 0xc7, 0x9a, 0xcf, 0xf9, 0x21, 0x8f,
-0x2a, 0xb3, 0xf5, 0xac, 0x51, 0xb9, 0x0c, 0xfe,
-0x02, 0xa5, 0xaa, 0x4d, 0x17, 0xcb, 0xc9, 0x7a,
-0xb5, 0xca, 0x67, 0x5b, 0x29, 0x56, 0xc0, 0x81,
-0xfe, 0xd9, 0x43, 0xd6, 0xb1, 0x49, 0xe6, 0xfc,
-0xa8, 0xa8, 0xda, 0xa2, 0xd9, 0xcf, 0xd3, 0xcd,
-0xd9, 0x85, 0x6c, 0x7d, 0x6f, 0x91, 0x2a, 0x8b,
-0x7d, 0xbf, 0x91, 0xd6, 0x07, 0x4b, 0x7c, 0x8b,
-0x7a, 0xb2, 0x7f, 0xa7, 0xb6, 0xa9, 0x65, 0x11,
-0xca, 0xf9, 0x04, 0x92, 0xfe, 0xb1, 0x6d, 0x5a,
-0xe3, 0xe4, 0x90, 0x6e, 0x99, 0x4d, 0x9e, 0x55,
-0xb7, 0x56, 0xab, 0xea, 0x0d, 0x1b, 0xd3, 0x1d,
-0x5a, 0x53, 0x7a, 0x21, 0x27, 0x1e, 0xc9, 0x64,
-0x4d, 0x85, 0xf6, 0x6b, 0xfa, 0xc3, 0x4e, 0x19,
-0x22, 0x9c, 0x56, 0x8b, 0xf3, 0x03, 0xb3, 0x36,
-0x20, 0x5a, 0x4e, 0xc0, 0xce, 0x03, 0xaf, 0x25,
-0x20, 0xf7, 0x90, 0x6d, 0xa4, 0x89, 0xf1, 0x40,
-0x61, 0x76, 0x32, 0x3f, 0x4a, 0xc8, 0x7d, 0x96,
-0x1d, 0xd4, 0xed, 0x7a, 0x96, 0xd1, 0x86, 0x03,
-0x1e, 0x66, 0xb6, 0xb5, 0x4d, 0xf9, 0x81, 0x43,
-0xe4, 0x9f, 0x34, 0xb9, 0x47, 0x74, 0xc2, 0x9d,
-0x21, 0x35, 0x6a, 0x0d, 0x93, 0x41, 0x53, 0x7c,
-0xf0, 0x59, 0xed, 0x72, 0xf0, 0x77, 0xba, 0xed,
-0x84, 0xf0, 0x05, 0xa7, 0xc5, 0x4e, 0xb7, 0xe9,
-0x35, 0x97, 0x94, 0x8b, 0xf0, 0x73, 0x2f, 0x07,
-0xd2, 0xf4, 0x15, 0xa1, 0x6a, 0xd4, 0x36, 0x5a,
-0xd0, 0x65, 0xaa, 0x4f, 0xef, 0x14, 0x0e, 0x68,
-0xee, 0x88, 0x75, 0xbb, 0xd8, 0x09, 0xef, 0xd1,
-0xca, 0xe6, 0xcc, 0xa0, 0xa8, 0xa6, 0x1d, 0x62,
-0x2f, 0x6b, 0x06, 0x43, 0xc5, 0x21, 0xcd, 0x48,
-0x9d, 0x32, 0xe5, 0x47, 0x41, 0xba, 0xda, 0x42,
-0x6f, 0x39, 0x96, 0xc9, 0x69, 0xf7, 0xd6, 0xf4,
-0x96, 0x34, 0xa4, 0x03, 0xc9, 0xda, 0xb0, 0x9e,
-0xa7, 0x6d, 0x4c, 0x23, 0x15, 0xf8, 0x22, 0x2f,
-0x9c, 0xb4, 0x86, 0x53, 0xf8, 0x91, 0x6a, 0xa1,
-0x31, 0xa2, 0x0e, 0xd2, 0x6c, 0x14, 0x7e, 0x8f,
-0x6b, 0x4e, 0x6f, 0x0e, 0x90, 0x03, 0x81, 0x26,
-0x5e, 0xbf, 0x53, 0x6e, 0x19, 0x10, 0xb6, 0xf2,
-0xfc, 0x0d, 0x1e, 0x1f, 0x9c, 0xf8, 0xe3, 0xf9,
-0xe1, 0xeb, 0x79, 0x52, 0xf4, 0xca, 0xeb, 0xce,
-0x19, 0xf5, 0x71, 0x37, 0xfc, 0xc0, 0xf3, 0xb6,
-0xb4, 0x26, 0x28, 0x0c, 0x8b, 0x3f, 0xb1, 0x4c,
-0x2b, 0xfc, 0x97, 0xc6, 0x5b, 0x7c, 0x94, 0x27,
-0x0e, 0x4d, 0xfc, 0xd5, 0xf1, 0x36, 0x1c, 0xe0,
-0xea, 0xb5, 0x2a, 0xe2, 0x5a, 0xf8, 0x3d, 0xad,
-0xa0, 0x37, 0x09, 0x72, 0xbd, 0xd4, 0x24, 0xe4,
-0xd6, 0xaf, 0x9f, 0x23, 0x8e, 0x90, 0xf7, 0x83,
-0xae, 0x08, 0xef, 0x0f, 0x9b, 0x8c, 0x0f, 0xde,
-0xb4, 0xcd, 0xf3, 0x99, 0xc2, 0xdd, 0x86, 0x93,
-0x8e, 0x6b, 0x7f, 0xaf, 0x55, 0xe9, 0x37, 0xf7,
-0xe2, 0x7e, 0xf8, 0x79, 0x6d, 0x15, 0xe3, 0x1d,
-0xf4, 0xe0, 0x8f, 0x02, 0x27, 0x56, 0x15, 0x07,
-0x13, 0xf1, 0x41, 0x87, 0xb4, 0x0d, 0x0e, 0x08,
-0xbc, 0xc8, 0xa2, 0xa6, 0x13, 0xde, 0x71, 0x55,
-0x9e, 0xc0, 0xfd, 0x13, 0x52, 0x7e, 0xcf, 0xdc,
-0x5a, 0x5b, 0x58, 0x74, 0x7a, 0x0e, 0x91, 0x69,
-0x3c, 0x90, 0x9a, 0x8c, 0x0f, 0x46, 0x94, 0xcd,
-0xb0, 0x06, 0xf2, 0xa3, 0x4d, 0x0d, 0xf6, 0x5c,
-0xfa, 0x47, 0xa1, 0xf8, 0xd8, 0x22, 0xdd, 0x33,
-0x95, 0x3e, 0xa7, 0x19, 0xfc, 0xba, 0x53, 0xb5,
-0x35, 0xb1, 0x8c, 0x71, 0x73, 0x7c, 0x30, 0x0b,
-0xb6, 0xb2, 0xe7, 0xa3, 0x8b, 0xf2, 0xbc, 0xbf,
-0x74, 0xad, 0x09, 0x15, 0x77, 0xc8, 0x75, 0x64,
-0x23, 0xac, 0x09, 0xe5, 0xfb, 0xe4, 0xfa, 0xec,
-0x69, 0xb0, 0x9a, 0xcd, 0xf2, 0x05, 0x56, 0x92,
-0x13, 0xa6, 0xf8, 0xe0, 0x6f, 0xa0, 0x29, 0xc3,
-0x30, 0x4b, 0x57, 0xb1, 0xc7, 0x89, 0x33, 0x2a,
-0x0b, 0x64, 0x16, 0x6c, 0x85, 0x2e, 0x26, 0x3b,
-0x8a, 0x9c, 0xb0, 0x11, 0x4a, 0x78, 0x7f, 0x58,
-0x53, 0x7c, 0x70, 0xca, 0xde, 0xbe, 0x23, 0x42,
-0x07, 0x93, 0x43, 0x39, 0x7b, 0xe9, 0x41, 0xa8,
-0x64, 0x47, 0x87, 0x6f, 0xd9, 0xcb, 0x0e, 0xc2,
-0x43, 0xcc, 0x76, 0xe6, 0x1b, 0x0e, 0xfa, 0x3a,
-0x94, 0x74, 0x39, 0x43, 0xe2, 0x85, 0xe4, 0xfd,
-0x61, 0xc2, 0x4d, 0x04, 0x3e, 0x83, 0x1f, 0x7b,
-0x12, 0xa7, 0xa9, 0x19, 0x8e, 0xe7, 0xeb, 0xc2,
-0xb0, 0x1a, 0xe3, 0x07, 0x30, 0xc5, 0x07, 0x87,
-0x0c, 0x36, 0xa4, 0x9b, 0x83, 0xe2, 0x72, 0x7a,
-0x00, 0xca, 0x7c, 0x4b, 0x94, 0x58, 0xa2, 0xb8,
-0x66, 0x6d, 0x6f, 0x8a, 0x11, 0x25, 0x19, 0xf9,
-0xe1, 0x13, 0xf3, 0x99, 0xb4, 0x9c, 0x34, 0x56,
-0x93, 0x6a, 0xf9, 0x3a, 0xbb, 0xd1, 0x1f, 0x4d,
-0x6f, 0xe1, 0x81, 0xc5, 0xb7, 0xa4, 0x2c, 0xcd,
-0x92, 0x6b, 0x9f, 0x4e, 0x5b, 0x88, 0xbd, 0xc1,
-0xc1, 0xf3, 0x3f, 0x27, 0xfe, 0xf2, 0xa4, 0x42,
-0xd2, 0x96, 0x61, 0xaf, 0x95, 0x83, 0xa4, 0x5f,
-0x68, 0x01, 0x7b, 0x9d, 0x11, 0xcf, 0x6a, 0x61,
-0x33, 0x34, 0xcb, 0x06, 0xcb, 0xf4, 0x34, 0x7e,
-0x85, 0x9a, 0xe3, 0x83, 0x20, 0xa5, 0x91, 0x38,
-0x1b, 0x52, 0x9a, 0x75, 0x0b, 0x7e, 0xef, 0x0c,
-0xee, 0x26, 0xda, 0x20, 0x65, 0x55, 0x2f, 0x74,
-0x91, 0x34, 0xa1, 0x45, 0x63, 0x0d, 0x29, 0xf9,
-0x99, 0x2b, 0x33, 0xb8, 0x7d, 0xda, 0xd1, 0x78,
-0x23, 0x4f, 0x8b, 0x8a, 0xa7, 0x25, 0x53, 0x12,
-0xc1, 0xf3, 0x98, 0x15, 0x23, 0x4a, 0x32, 0x2a,
-0x76, 0x3f, 0x35, 0xf9, 0xc7, 0x3e, 0x27, 0x57,
-0xb5, 0x12, 0x5e, 0x04, 0xf7, 0x08, 0x79, 0xab,
-0xfa, 0x69, 0x4d, 0x38, 0x2e, 0xbf, 0x04, 0xe3,
-0x5a, 0x95, 0x76, 0xb4, 0x41, 0x7c, 0x2d, 0xed,
-0x32, 0x2f, 0x9d, 0x0b, 0x8a, 0xbf, 0x35, 0xe5,
-0x47, 0x7d, 0x11, 0x3a, 0xdc, 0x3f, 0x77, 0x99,
-0xed, 0x98, 0x38, 0x24, 0x1d, 0xe6, 0xf5, 0x0b,
-0x9b, 0x26, 0xed, 0x84, 0xc3, 0x24, 0xd6, 0x4f,
-0x4d, 0x1b, 0xf7, 0x14, 0x70, 0x62, 0xa5, 0x4f,
-0x4d, 0xf9, 0x51, 0xa7, 0xfd, 0x01, 0x56, 0xa6,
-0x88, 0x8c, 0x0c, 0x33, 0x7c, 0x1e, 0x26, 0x83,
-0x78, 0xbf, 0xb7, 0xeb, 0xde, 0x12, 0x66, 0xf0,
-0x23, 0xf5, 0x48, 0x65, 0x54, 0x4e, 0x89, 0x0f,
-0xa6, 0xf5, 0x77, 0x34, 0xc6, 0xaa, 0xff, 0x3a,
-0xd5, 0x0d, 0x38, 0xf8, 0xd5, 0x26, 0xde, 0x1f,
-0x36, 0xc6, 0x07, 0xde, 0xdf, 0xb8, 0x1b, 0x54,
-0xcf, 0x22, 0x73, 0x7c, 0xb0, 0x7d, 0xca, 0x2a,
-0x83, 0x16, 0x7b, 0x51, 0xac, 0x2d, 0xc8, 0x8c,
-0x5e, 0x5c, 0xcf, 0x5a, 0x2b, 0xcf, 0xcf, 0x17,
-0x63, 0x8e, 0xca, 0x19, 0xb7, 0x1b, 0xfc, 0x00,
-0x13, 0xf3, 0x3b, 0x50, 0x5e, 0xf5, 0xea, 0x46,
-0xb6, 0xdb, 0xeb, 0x9e, 0xb7, 0x78, 0x1a, 0xd8,
-0x66, 0x7f, 0x27, 0x9e, 0x88, 0x9f, 0xf1, 0x7a,
-0x40, 0x1e, 0xff, 0xed, 0xd0, 0x6c, 0xe6, 0xf8,
-0xe0, 0xb0, 0x50, 0x98, 0x68, 0x8b, 0xa6, 0x8c,
-0xd3, 0x58, 0x7e, 0x54, 0x2e, 0x77, 0x9c, 0xae,
-0x37, 0x12, 0xa5, 0x72, 0x8c, 0x44, 0x32, 0x53,
-0x7c, 0x50, 0x51, 0x8d, 0x26, 0x20, 0x95, 0xac,
-0xc9, 0x07, 0x83, 0xb8, 0xda, 0x59, 0xcd, 0xa2,
-0x8f, 0x8e, 0x15, 0x96, 0x29, 0xab, 0x9b, 0x45,
-0xa3, 0x3e, 0x8e, 0xa6, 0xe6, 0x47, 0x09, 0x0e,
-0x58, 0xa7, 0x14, 0xb0, 0xcc, 0x11, 0x82, 0x03,
-0x56, 0xc4, 0xa8, 0x9a, 0x53, 0xae, 0xee, 0x67,
-0xcb, 0x58, 0xc6, 0xb0, 0xf8, 0x63, 0xf0, 0x93,
-0x59, 0x41, 0x39, 0x64, 0x8a, 0x0f, 0x3a, 0x24,
-0x2b, 0x69, 0xd2, 0xba, 0x4e, 0x65, 0xcc, 0x21,
-0x8b, 0x33, 0x1e, 0xd7, 0xd5, 0xa8, 0xec, 0x4a,
-0x5f, 0x2c, 0xec, 0x18, 0x2c, 0xd4, 0x2d, 0xf3,
-0x88, 0xcc, 0x1e, 0x87, 0x15, 0x85, 0x3c, 0x5f,
-0x2e, 0x19, 0x1f, 0x84, 0x5c, 0x58, 0x05, 0xcf,
-0x9f, 0xce, 0xc8, 0xf3, 0x57, 0x80, 0x48, 0xff,
-0xeb, 0xb2, 0x8c, 0x87, 0xc8, 0x54, 0xd8, 0xd5,
-0x9c, 0xaf, 0x67, 0xac, 0xf4, 0xff, 0x27, 0x78,
-0xc2, 0xf5, 0x00, 0x8f, 0xef, 0xd7, 0x25, 0xe3,
-0x83, 0x01, 0xce, 0x56, 0x34, 0xf3, 0x94, 0x75,
-0xe5, 0xdc, 0xef, 0xce, 0xf9, 0x63, 0xa3, 0xc0,
-0xc3, 0x82, 0xdf, 0x81, 0xcf, 0xd8, 0x4b, 0xd1,
-0x75, 0x2b, 0x85, 0x4a, 0xf2, 0x47, 0xff, 0x4f,
-0x43, 0xb6, 0x95, 0x5f, 0x37, 0xc5, 0x07, 0xad,
-0xcf, 0xc0, 0x98, 0x36, 0x47, 0xcf, 0x0c, 0x7e,
-0xe3, 0x30, 0xbb, 0x08, 0x95, 0x6f, 0x67, 0xbd,
-0xcc, 0xdb, 0x9e, 0x72, 0x47, 0xbd, 0xca, 0x19,
-0x93, 0x28, 0x27, 0x0a, 0xf8, 0x86, 0x89, 0x1f,
-0x72, 0xd5, 0xd5, 0xc0, 0x51, 0xbd, 0x34, 0x6a,
-0x7b, 0xd2, 0x56, 0x19, 0xba, 0xcc, 0x4a, 0x4f,
-0x2d, 0xde, 0x57, 0xb3, 0x1f, 0x3e, 0xf6, 0x7f,
-0x2d, 0x7a, 0xf7, 0x78, 0x41, 0x99, 0x72, 0xc8,
-0x3f, 0x57, 0xb5, 0xee, 0x16, 0x93, 0xf2, 0xa1,
-0x6b, 0xf2, 0x2f, 0xa3, 0xab, 0xe8, 0x96, 0x7e,
-0xf9, 0xd1, 0xd5, 0x53, 0xd5, 0x33, 0x70, 0x4b,
-0x5d, 0xe6, 0xff, 0x20, 0xb9, 0xca, 0x9a, 0x90,
-0xa3, 0x8f, 0x8e, 0x91, 0x4d, 0x64, 0x4d, 0x30,
-0x5f, 0x72, 0xac, 0x14, 0x3f, 0x32, 0xc5, 0x07,
-0x9f, 0xae, 0x5b, 0xc3, 0xf2, 0x35, 0xb9, 0x9a,
-0x4c, 0x6d, 0x7f, 0x09, 0x0a, 0x7a, 0xaf, 0x6f,
-0xf0, 0xb7, 0xe3, 0x6b, 0xde, 0xa2, 0x5b, 0xce,
-0x91, 0x5c, 0xf8, 0x67, 0xf2, 0x75, 0x96, 0xf1,
-0x30, 0x79, 0x5d, 0x9b, 0x98, 0xef, 0xcb, 0x7d,
-0x03, 0x02, 0x3a, 0x70, 0xa1, 0x3d, 0x0b, 0x3a,
-0x40, 0x3d, 0x96, 0x31, 0xc7, 0x4e, 0xc8, 0xe3,
-0x50, 0x3f, 0x4a, 0x15, 0x4f, 0x33, 0xfc, 0x8a,
-0xd9, 0xb5, 0x0c, 0x17, 0x09, 0x26, 0xbf, 0x57,
-0xee, 0xb3, 0xe4, 0x80, 0xbf, 0x9b, 0xd9, 0xda,
-0x49, 0x25, 0xcf, 0xf6, 0x39, 0x97, 0x79, 0x9e,
-0x3c, 0xc7, 0x4e, 0x80, 0x7b, 0x28, 0xeb, 0x29,
-0xd1, 0x81, 0x1a, 0xa7, 0x8c, 0x65, 0x86, 0xc9,
-0x11, 0xe6, 0x4b, 0x3c, 0xcf, 0x36, 0xf5, 0xe2,
-0x22, 0x23, 0x09, 0x7c, 0x45, 0xf3, 0x29, 0xa8,
-0x0c, 0xda, 0xba, 0xc5, 0x0f, 0xe1, 0x23, 0xcf,
-0x31, 0x7d, 0x09, 0x8a, 0x05, 0x81, 0x67, 0x94,
-0x65, 0x85, 0x27, 0x99, 0xe3, 0x83, 0xbf, 0xd4,
-0x0e, 0x43, 0x69, 0x08, 0x4f, 0xd3, 0x4f, 0xe0,
-0xa0, 0x32, 0x97, 0x97, 0x45, 0xa7, 0x87, 0x0e,
-0x0a, 0x55, 0x3a, 0x5e, 0x59, 0xc1, 0xae, 0x42,
-0x01, 0x4f, 0x9d, 0x52, 0x4d, 0xf1, 0xc1, 0x12,
-0x68, 0x6d, 0xef, 0xe8, 0x47, 0x6d, 0xe5, 0x54,
-0x9e, 0xaf, 0xb3, 0x87, 0xe4, 0xb0, 0xa5, 0x08,
-0x5e, 0x60, 0x0f, 0xea, 0x87, 0xa6, 0xa6, 0x3f,
-0xcb, 0x03, 0x3d, 0x51, 0xd4, 0xbf, 0x66, 0x7e,
-0x00, 0x9e, 0xc6, 0x69, 0x6f, 0x5a, 0xd4, 0xee,
-0x59, 0xc1, 0xab, 0xb7, 0x6a, 0x2d, 0x61, 0x32,
-0x1d, 0xda, 0xfa, 0x7e, 0x18, 0x6b, 0x14, 0xbb,
-0x17, 0x8a, 0x4e, 0xd3, 0xb0, 0x39, 0x3e, 0x28,
-0x59, 0xed, 0x22, 0x84, 0x98, 0x9c, 0xed, 0xb1,
-0x42, 0x08, 0x54, 0x41, 0x76, 0x3d, 0x05, 0x74,
-0xab, 0xea, 0xec, 0xc7, 0x63, 0xd5, 0x0c, 0x3b,
-0x7c, 0x54, 0xa3, 0x6e, 0xd2, 0xd7, 0x9c, 0xd8,
-0xa0, 0x99, 0xf7, 0xc2, 0x6b, 0xbc, 0x2d, 0xe3,
-0xc6, 0xa6, 0x9f, 0x28, 0x11, 0xe8, 0xd6, 0xb2,
-0xce, 0x7d, 0xa3, 0x10, 0x0e, 0x39, 0xe6, 0x0d,
-0x1a, 0x85, 0x72, 0x57, 0x79, 0x46, 0x59, 0x58,
-0xf4, 0x25, 0xe3, 0x83, 0x37, 0x8d, 0xc4, 0xd8,
-0x2f, 0xbd, 0x39, 0x97, 0x88, 0xc1, 0x86, 0x3d,
-0x6a, 0x24, 0x8a, 0x2f, 0x88, 0xac, 0xdf, 0x20,
-0x9e, 0xa7, 0x5f, 0xfa, 0x5e, 0xd2, 0x6c, 0xe7,
-0x73, 0x4c, 0xfc, 0x48, 0x69, 0x5f, 0xc0, 0x38,
-0x73, 0x83, 0x6d, 0x4c, 0x5c, 0xa6, 0x1d, 0xe5,
-0xcb, 0x3e, 0x26, 0x8e, 0x86, 0x2e, 0x3b, 0xe6,
-0x46, 0x33, 0x07, 0xc5, 0x2b, 0x70, 0xd2, 0x35,
-0x37, 0xcf, 0xaa, 0xdf, 0xe8, 0x4a, 0xf0, 0x99,
-0xe8, 0x01, 0x5e, 0xe4, 0x65, 0x77, 0xf1, 0x6a,
-0xb8, 0x60, 0x9b, 0x6e, 0x47, 0xb4, 0x43, 0xde,
-0x87, 0xdd, 0x7c, 0xb0, 0x8f, 0x8c, 0xb0, 0x40,
-0x83, 0x5d, 0xa1, 0xab, 0xd3, 0x93, 0xf9, 0x51,
-0x11, 0xb4, 0x09, 0xb6, 0x0b, 0x0e, 0x09, 0x6f,
-0xa1, 0x41, 0x53, 0xb5, 0x1a, 0x69, 0xe5, 0x6d,
-0x2f, 0x76, 0x40, 0x61, 0x1f, 0x0a, 0xde, 0x11,
-0x15, 0x37, 0x82, 0xd5, 0x22, 0xf9, 0x93, 0xf1,
-0xc1, 0xa8, 0xd4, 0xa9, 0xe0, 0xfd, 0x19, 0xa2,
-0xa3, 0x57, 0x2d, 0x32, 0xd8, 0x7b, 0x71, 0xf5,
-0x3e, 0x81, 0xbd, 0x0c, 0x70, 0x90, 0x3e, 0x62,
-0x69, 0xd1, 0x79, 0xeb, 0x10, 0x53, 0x7e, 0x94,
-0x90, 0x76, 0x46, 0x39, 0x1b, 0xea, 0xce, 0x46,
-0x34, 0xf2, 0x3d, 0xa3, 0x1a, 0x2b, 0xcb, 0xc8,
-0x27, 0xec, 0x2d, 0xd3, 0xef, 0x0a, 0x8b, 0x07,
-0xf2, 0xde, 0xd2, 0x5f, 0x6e, 0xc8, 0x6a, 0x6f,
-0x4a, 0xe6, 0x47, 0x85, 0x26, 0xef, 0xd4, 0x2e,
-0x93, 0xca, 0xe5, 0x4b, 0x2e, 0xe5, 0x8c, 0x25,
-0xcb, 0xbe, 0x2e, 0x73, 0xfe, 0xa8, 0x28, 0x19,
-0xeb, 0xf8, 0x5c, 0x58, 0xc0, 0x32, 0xf5, 0x9a,
-0x24, 0xfe, 0x39, 0xae, 0x74, 0x6a, 0xe3, 0x3e,
-0xb7, 0x62, 0xe5, 0x69, 0x57, 0x3c, 0x51, 0x1c,
-0x07, 0x1f, 0xc2, 0x21, 0x56, 0xd9, 0x87, 0x83,
-0x4f, 0xe0, 0xed, 0x3b, 0x2b, 0x97, 0xda, 0x76,
-0x9a, 0xf3, 0xa3, 0xd2, 0x66, 0xf0, 0x68, 0x54,
-0x07, 0x0d, 0x7b, 0xa2, 0xa8, 0xe8, 0x63, 0x69,
-0x5d, 0xac, 0x09, 0x1e, 0x3c, 0x41, 0x43, 0x64,
-0xc4, 0xde, 0xb2, 0xb8, 0xc4, 0x27, 0x6e, 0x10,
-0xcd, 0xf1, 0xc1, 0x74, 0x36, 0x5b, 0x57, 0x59,
-0xc6, 0x1c, 0xbf, 0x0e, 0x5b, 0x25, 0xbb, 0x9e,
-0xe1, 0xca, 0x7e, 0x9d, 0x67, 0xf0, 0x0e, 0xd6,
-0x29, 0xe4, 0x48, 0xce, 0x46, 0xe6, 0x0c, 0xb6,
-0x3d, 0x6f, 0x4f, 0xe2, 0x9f, 0x51, 0xe5, 0x3a,
-0xfa, 0xbb, 0x70, 0x7e, 0xe8, 0xce, 0x95, 0xe4,
-0x61, 0xed, 0x39, 0x96, 0x3f, 0x74, 0xcb, 0x4a,
-0x94, 0xf6, 0xab, 0x9a, 0x8b, 0xa3, 0xf4, 0xd1,
-0xec, 0x2b, 0x91, 0xb4, 0x8e, 0xe2, 0x90, 0x7c,
-0x67, 0x7a, 0x32, 0x3f, 0xaa, 0x3e, 0xcf, 0x0a,
-0xa3, 0x3d, 0x2e, 0x5f, 0xa6, 0x0b, 0x41, 0xc8,
-0xfb, 0x92, 0x7b, 0x38, 0xd3, 0xe8, 0x0f, 0x22,
-0x94, 0xe8, 0xce, 0x1b, 0x26, 0x0d, 0xb0, 0xc1,
-0xc9, 0x15, 0xf7, 0xa0, 0x46, 0x36, 0xf5, 0x47,
-0x9b, 0xb2, 0x0f, 0x3e, 0xc7, 0xd5, 0x28, 0x41,
-0x90, 0xa3, 0xbd, 0x87, 0x40, 0xc8, 0xc9, 0x69,
-0x21, 0x0d, 0xf9, 0x73, 0xb6, 0xe0, 0x64, 0xe0,
-0xf2, 0xad, 0x3f, 0x47, 0xf9, 0xfc, 0x8d, 0x60,
-0x62, 0x7d, 0x1c, 0x52, 0x27, 0x9c, 0x65, 0xf3,
-0x98, 0xb5, 0x3c, 0x27, 0x0b, 0xde, 0x31, 0xfa,
-0xa3, 0xe5, 0x8c, 0x28, 0x47, 0x25, 0xa3, 0x3f,
-0xc8, 0x90, 0x74, 0x04, 0x4a, 0xc1, 0x19, 0x15,
-0x3d, 0x89, 0xf5, 0x1f, 0xa1, 0x9b, 0xe0, 0x73,
-0x1e, 0x3d, 0x6f, 0x10, 0xef, 0x83, 0x35, 0x7a,
-0x2c, 0xcd, 0x80, 0xae, 0xf1, 0x17, 0xeb, 0xb2,
-0x2f, 0x9b, 0x27, 0x36, 0x6f, 0x61, 0x54, 0x13,
-0x93, 0xfc, 0x90, 0x3c, 0x3f, 0x6a, 0x17, 0x9b,
-0xe9, 0xcb, 0x58, 0x69, 0x9f, 0x0b, 0x3b, 0x42,
-0x06, 0x1f, 0xf8, 0x11, 0x58, 0xc3, 0x2b, 0x04,
-0x57, 0xce, 0xb8, 0x02, 0xdd, 0x7e, 0xd5, 0x77,
-0x67, 0xb9, 0x29, 0xff, 0x61, 0xb1, 0xb4, 0x16,
-0x76, 0x44, 0xd4, 0x37, 0x33, 0x14, 0xcf, 0x1d,
-0x88, 0x1e, 0x3b, 0x38, 0xba, 0x3e, 0x82, 0x12,
-0xde, 0xa9, 0xcb, 0xd3, 0xc9, 0xe1, 0xc5, 0x19,
-0x5e, 0x7b, 0x43, 0xc6, 0x54, 0x8b, 0x89, 0x1f,
-0x52, 0xea, 0x82, 0x2b, 0xda, 0x6d, 0xcd, 0x99,
-0x5d, 0x8f, 0x97, 0x73, 0x5a, 0x6c, 0x66, 0x45,
-0xb4, 0xc3, 0x8e, 0xf0, 0x08, 0x69, 0x54, 0xbc,
-0x48, 0xee, 0x66, 0xa5, 0xa1, 0xcc, 0x8f, 0xc4,
-0x79, 0x26, 0xfe, 0xa5, 0x90, 0x30, 0xac, 0x54,
-0x42, 0x09, 0xcb, 0x39, 0x05, 0x4b, 0x8d, 0x46,
-0xb1, 0x08, 0x0c, 0x0c, 0x7e, 0x6c, 0xd6, 0x14,
-0x2d, 0x1c, 0x93, 0x2b, 0xd3, 0xb3, 0x58, 0xd3,
-0x46, 0x73, 0x7e, 0x14, 0x8c, 0x4f, 0xae, 0xf4,
-0xf1, 0xb6, 0x59, 0xea, 0x43, 0xc4, 0xcd, 0xab,
-0xa5, 0x86, 0xb4, 0x03, 0x01, 0xa3, 0x90, 0xfc,
-0x8c, 0x72, 0xa0, 0xc3, 0x5d, 0x6f, 0x9d, 0x4a,
-0x88, 0x09, 0xff, 0xfc, 0x17, 0x3c, 0x4d, 0x25,
-0x1e, 0xcb, 0x66, 0xf2, 0x01, 0xdb, 0x0d, 0x65,
-0x9c, 0xef, 0xe8, 0x0c, 0x3c, 0xe6, 0x77, 0x6a,
-0x8e, 0x20, 0x79, 0xc3, 0xd7, 0xc2, 0xec, 0xf5,
-0x46, 0x45, 0xc6, 0xc4, 0x79, 0x2f, 0x4f, 0xfb,
-0x3a, 0x2a, 0xe5, 0xac, 0xda, 0xbc, 0xcd, 0x64,
-0x48, 0xe3, 0xfd, 0x4c, 0x8d, 0x34, 0x9e, 0xb6,
-0xfc, 0x07, 0xef, 0x47, 0xd8, 0xb3, 0x0d, 0x78,
-0xc6, 0x14, 0x35, 0xf3, 0x03, 0xa8, 0xb9, 0x12,
-0x6c, 0x27, 0xce, 0x6a, 0x8b, 0x72, 0x0f, 0x6f,
-0x93, 0x51, 0xe8, 0x35, 0xe2, 0x83, 0x8d, 0xf0,
-0x20, 0x87, 0x3d, 0x1f, 0x18, 0x1d, 0x43, 0xf2,
-0xcc, 0xfc, 0x48, 0x2b, 0x6f, 0x8a, 0xe5, 0x47,
-0x59, 0x63, 0xf9, 0x60, 0x46, 0x58, 0xd0, 0xa8,
-0x8f, 0x13, 0xac, 0x3c, 0x42, 0xca, 0x89, 0x22,
-0x9d, 0x4c, 0xfe, 0xed, 0xa4, 0x44, 0x7e, 0xd4,
-0xe4, 0xf3, 0x3c, 0x3f, 0xea, 0x9b, 0x1c, 0xbd,
-0x48, 0xe3, 0xb1, 0xfc, 0xf0, 0xcf, 0xc9, 0x65,
-0xc4, 0x3f, 0xb6, 0xe3, 0x39, 0xc7, 0x49, 0x8c,
-0x1f, 0xe0, 0x6b, 0x0f, 0x26, 0xf3, 0xa3, 0xa6,
-0xf0, 0xf9, 0xf3, 0xeb, 0xac, 0x83, 0x93, 0x70,
-0xa0, 0x1a, 0x40, 0xe2, 0xbc, 0x7a, 0x94, 0x17,
-0xf2, 0x04, 0xc5, 0x5b, 0x39, 0x3f, 0xb6, 0xc7,
-0x7a, 0xec, 0xf5, 0x4f, 0x93, 0xf9, 0xdb, 0x88,
-0x3f, 0x7b, 0x24, 0xbb, 0x54, 0xc7, 0x48, 0x54,
-0x1d, 0x53, 0xca, 0x2c, 0x94, 0xc7, 0x07, 0x03,
-0xd2, 0x3c, 0x52, 0xd7, 0x28, 0xd6, 0xb3, 0x88,
-0xda, 0x01, 0x8e, 0x66, 0x13, 0xfe, 0xa9, 0x43,
-0xf9, 0xb3, 0x1b, 0x1c, 0x3e, 0xaa, 0x64, 0xf7,
-0x2b, 0xdb, 0x41, 0xad, 0xb3, 0xf0, 0x34, 0xf8,
-0x46, 0xe6, 0xac, 0xc6, 0xf7, 0x2d, 0x64, 0xdb,
-0x7f, 0xa0, 0x2e, 0x8c, 0x64, 0xfb, 0x8f, 0x25,
-0xf2, 0xdf, 0xda, 0x73, 0x8d, 0xfc, 0x28, 0x4e,
-0xe2, 0x31, 0x42, 0x39, 0xdf, 0x26, 0x2e, 0xfb,
-0x10, 0x69, 0x91, 0x68, 0x35, 0x0e, 0x56, 0x68,
-0x6d, 0xd5, 0xf6, 0x85, 0xf4, 0x17, 0x8a, 0x29,
-0x3f, 0x4a, 0x79, 0x96, 0x9e, 0xf5, 0x95, 0x6b,
-0xce, 0x60, 0xf6, 0x19, 0xef, 0x6d, 0x88, 0x66,
-0x79, 0x3e, 0xbc, 0x7e, 0x00, 0xf1, 0x12, 0x3e,
-0xff, 0x8c, 0xc9, 0xe3, 0x9c, 0x3f, 0xa4, 0x5d,
-0x4d, 0xe2, 0x9f, 0x08, 0x74, 0x06, 0x38, 0xfe,
-0x59, 0xb2, 0xc1, 0x7e, 0x46, 0xe2, 0x6d, 0x41,
-0x62, 0xf9, 0xf3, 0xfa, 0xa3, 0x1e, 0x9b, 0x22,
-0x0e, 0xc9, 0xbb, 0x95, 0x4a, 0x5f, 0x0a, 0xfe,
-0xa1, 0xbc, 0x3e, 0x4e, 0x43, 0x50, 0xed, 0xc7,
-0x65, 0x1f, 0x26, 0x7c, 0xfd, 0x0b, 0x4e, 0x41,
-0x24, 0xe3, 0x67, 0xb8, 0xec, 0x46, 0xc5, 0xa2,
-0x9b, 0x2e, 0x5e, 0x95, 0xd3, 0x6a, 0x8a, 0x0f,
-0xce, 0xaf, 0xde, 0xaf, 0xcf, 0x0a, 0xb6, 0x45,
-0x27, 0xf5, 0xb0, 0x56, 0x7f, 0x51, 0x63, 0x16,
-0xef, 0x86, 0xb6, 0x2e, 0xfa, 0x73, 0x96, 0x19,
-0x22, 0x79, 0x64, 0x9d, 0xaf, 0x20, 0x44, 0x87,
-0x26, 0x79, 0x12, 0xa7, 0x8b, 0x4a, 0x77, 0xe1,
-0xb1, 0x72, 0x6e, 0x93, 0x55, 0xf7, 0x80, 0xb2,
-0x05, 0xad, 0xcb, 0xeb, 0x5d, 0x33, 0xfa, 0x01,
-0xcf, 0x0b, 0xef, 0x5f, 0x99, 0xd6, 0xfb, 0xbc,
-0xaf, 0xa3, 0x81, 0x4e, 0x4b, 0x4f, 0xe2, 0x1f,
-0x50, 0xbe, 0x09, 0xbb, 0x68, 0x31, 0x3b, 0xd4,
-0x40, 0xf6, 0xc3, 0x16, 0x3a, 0x93, 0xc7, 0xcb,
-0x0e, 0xe3, 0xb1, 0x9d, 0xa9, 0xd3, 0x51, 0x54,
-0x42, 0xab, 0x20, 0xdf, 0x53, 0xe7, 0x4d, 0x4f,
-0xe2, 0x1f, 0xda, 0xfe, 0x6d, 0x78, 0x99, 0x2d,
-0x40, 0xd8, 0x83, 0x20, 0xf3, 0x19, 0x56, 0x7a,
-0xfa, 0xa6, 0x95, 0xe2, 0xbb, 0xe4, 0xb5, 0xe6,
-0x59, 0xd1, 0xba, 0x95, 0x72, 0x25, 0xfc, 0x89,
-0xfd, 0xc8, 0xe7, 0x5c, 0x2a, 0xb6, 0x26, 0xf1,
-0xcf, 0x94, 0x90, 0x70, 0x21, 0x96, 0xed, 0xc3,
-0xf9, 0xd6, 0x2a, 0x23, 0x3c, 0x0d, 0x95, 0x18,
-0x44, 0xd0, 0x2e, 0x71, 0x94, 0x5c, 0x86, 0x9f,
-0x6b, 0xeb, 0xcd, 0xfc, 0x00, 0xbe, 0xdc, 0x97,
-0xe1, 0x8f, 0x46, 0x37, 0xd8, 0x9a, 0xfd, 0xf4,
-0x28, 0x73, 0x9f, 0x36, 0xfa, 0xa3, 0x0d, 0x18,
-0x8d, 0x62, 0x49, 0x99, 0x7e, 0x94, 0x55, 0x85,
-0xe8, 0x98, 0xb8, 0x34, 0xb1, 0xfe, 0xcf, 0xd3,
-0x0d, 0xb0, 0x2b, 0x3b, 0xbf, 0x5f, 0x6e, 0x10,
-0x37, 0xc3, 0x1f, 0xd5, 0x5b, 0x87, 0xbb, 0x78,
-0xbc, 0xaf, 0x79, 0x72, 0x7e, 0x33, 0x75, 0x89,
-0x0d, 0x1e, 0xb4, 0xc8, 0x02, 0xf4, 0x3b, 0xa4,
-0x28, 0x31, 0x9f, 0x77, 0x64, 0xdd, 0x17, 0xcb,
-0xe7, 0x1c, 0xd5, 0x9e, 0x83, 0xfb, 0x79, 0x63,
-0xdc, 0x01, 0xdc, 0x53, 0xd3, 0xb9, 0xe0, 0x9a,
-0xca, 0x56, 0x41, 0xb1, 0xd0, 0xf5, 0xf0, 0x31,
-0x29, 0x19, 0x1f, 0x94, 0x18, 0x74, 0xab, 0x6a,
-0x50, 0x2e, 0x27, 0x1d, 0xb0, 0x43, 0x98, 0xc1,
-0xe5, 0xcf, 0x61, 0x3f, 0xd3, 0x50, 0x11, 0x54,
-0x90, 0xc5, 0x74, 0xa3, 0x8e, 0x0b, 0xbb, 0xcd,
-0x63, 0xca, 0x8f, 0x9a, 0xa2, 0x4b, 0x9f, 0x69,
-0xee, 0xe7, 0x11, 0xc6, 0x8c, 0xb0, 0x8f, 0x85,
-0x02, 0xae, 0xbf, 0x3e, 0x81, 0x48, 0x75, 0x99,
-0x6e, 0xdd, 0xd7, 0x24, 0x09, 0x91, 0x87, 0x2a,
-0xeb, 0x07, 0x02, 0x45, 0xb6, 0x64, 0x7e, 0x94,
-0xb0, 0x05, 0xe6, 0x7b, 0x2a, 0x79, 0x7e, 0xf8,
-0x27, 0x70, 0xe3, 0x44, 0x7f, 0x90, 0xb1, 0xea,
-0x79, 0x7a, 0x49, 0x58, 0x3c, 0x95, 0x31, 0x0c,
-0x95, 0x75, 0x36, 0xbf, 0xd8, 0x95, 0x90, 0x6f,
-0xf9, 0x4a, 0x18, 0xde, 0x85, 0xd2, 0xd7, 0xf1,
-0x3c, 0x5e, 0xa5, 0xaf, 0x2a, 0xbc, 0x11, 0xad,
-0x78, 0x15, 0x22, 0xb4, 0x6a, 0xd8, 0x1a, 0x6e,
-0xba, 0x44, 0x8e, 0x4f, 0x72, 0xf3, 0x7e, 0x22,
-0xf9, 0xcb, 0x27, 0xe6, 0x6f, 0x91, 0x96, 0x41,
-0x6b, 0xc8, 0xde, 0x2b, 0x6f, 0xf6, 0xfc, 0x05,
-0x5e, 0x94, 0x62, 0xfa, 0x4b, 0x09, 0xf4, 0x97,
-0xf0, 0x8e, 0x81, 0xa7, 0x15, 0x34, 0x3d, 0xca,
-0xe5, 0xcd, 0x7f, 0x36, 0xf3, 0x63, 0x2f, 0x53,
-0x9e, 0x52, 0x3a, 0x74, 0xb9, 0xc7, 0x3f, 0xc4,
-0xf9, 0x94, 0x8c, 0x7c, 0x1e, 0x12, 0xd0, 0x4b,
-0xf4, 0xf6, 0x30, 0x39, 0x23, 0xec, 0x69, 0x26,
-0x21, 0xb9, 0xeb, 0x3a, 0x35, 0x89, 0x7f, 0xf0,
-0x1f, 0xfe, 0xca, 0x30, 0xea, 0x3d, 0xfd, 0x8b,
-0xb7, 0x42, 0x28, 0x02, 0x3c, 0x3e, 0xc8, 0x60,
-0x05, 0xcb, 0xe3, 0x7c, 0xc8, 0x1b, 0x78, 0xbd,
-0x18, 0x31, 0xe1, 0x73, 0x1e, 0x1f, 0x3c, 0xa1,
-0xb8, 0x9b, 0x8d, 0x30, 0xfa, 0x21, 0x98, 0x3d,
-0x98, 0xc9, 0xe3, 0x8f, 0x11, 0xb2, 0x42, 0x77,
-0x6e, 0x37, 0x3a, 0x34, 0x71, 0x7e, 0xec, 0x36,
-0x35, 0x3d, 0x81, 0x7f, 0x7e, 0x31, 0x0a, 0x23,
-0x85, 0x55, 0x8d, 0xf8, 0xbe, 0xc7, 0x11, 0xdd,
-0x55, 0xbd, 0x6d, 0xc4, 0x07, 0x2f, 0xf1, 0xb4,
-0x16, 0x0e, 0x84, 0x46, 0x38, 0xbf, 0x31, 0xcb,
-0xe9, 0x5a, 0x9d, 0xc4, 0x3f, 0xf1, 0x6a, 0xca,
-0x80, 0xf8, 0x85, 0x72, 0x84, 0x55, 0x45, 0xd6,
-0x76, 0x17, 0xb8, 0x39, 0x3f, 0x92, 0x7a, 0x77,
-0x44, 0x1c, 0x27, 0x07, 0x58, 0x29, 0x35, 0xf2,
-0xbd, 0x13, 0xf3, 0xdb, 0x79, 0x7e, 0x78, 0x8c,
-0x0d, 0x80, 0xb5, 0xb1, 0x59, 0x43, 0xf4, 0x12,
-0xb1, 0x2b, 0x78, 0x45, 0xa5, 0xed, 0xe4, 0xc3,
-0x46, 0x94, 0xcf, 0x85, 0xb4, 0x87, 0x03, 0xbb,
-0x89, 0xf3, 0x9e, 0xb6, 0x36, 0xde, 0xed, 0x9d,
-0x0c, 0xa1, 0x6c, 0x72, 0xea, 0x96, 0xd9, 0x37,
-0x30, 0x69, 0x07, 0x94, 0x34, 0x2e, 0x84, 0xec,
-0x68, 0x6d, 0x8b, 0xa4, 0x6e, 0xc1, 0x1d, 0x42,
-0x84, 0x89, 0xf9, 0xba, 0xb4, 0x2d, 0x5e, 0x4d,
-0xef, 0x1f, 0x51, 0xdb, 0x7c, 0x25, 0x7a, 0x7d,
-0x98, 0x84, 0xf8, 0x7f, 0xf1, 0x0e, 0x5e, 0x96,
-0xc8, 0x5b, 0x67, 0xaa, 0xf8, 0x21, 0xc2, 0x89,
-0x7c, 0x83, 0xea, 0x29, 0x71, 0x76, 0xf4, 0xb5,
-0x64, 0x80, 0xf3, 0x1b, 0xf7, 0x2e, 0x0e, 0x17,
-0xbc, 0xa0, 0x5e, 0xd4, 0xf3, 0xd4, 0xac, 0x9e,
-0xff, 0x32, 0xcc, 0x5a, 0xb2, 0xdd, 0x3e, 0x67,
-0x58, 0x54, 0x12, 0x78, 0x2f, 0x24, 0xc4, 0x69,
-0x9f, 0x4f, 0x89, 0x97, 0x24, 0x5e, 0xf6, 0xd5,
-0x36, 0x2a, 0xfe, 0x44, 0xbb, 0x4a, 0x7e, 0x0e,
-0xb8, 0x31, 0x3e, 0x62, 0x57, 0xfd, 0x15, 0x7c,
-0xa1, 0x52, 0xf8, 0xb1, 0x63, 0xf7, 0x5f, 0x25,
-0x3e, 0x03, 0x17, 0xb4, 0x0a, 0xdd, 0xea, 0xca,
-0x99, 0xa9, 0x5d, 0xe4, 0x8d, 0x0b, 0x11, 0x6f,
-0x6b, 0x11, 0xde, 0x5a, 0xbd, 0x7b, 0x52, 0x0a,
-0x3f, 0x64, 0xec, 0xf9, 0xbb, 0x78, 0x98, 0x38,
-0x30, 0x2b, 0x92, 0x39, 0x8a, 0x86, 0xc0, 0x6e,
-0x6f, 0x49, 0x35, 0xbe, 0xd1, 0x21, 0xed, 0x4d,
-0x86, 0xfa, 0xa8, 0xcc, 0xc4, 0x0f, 0xa9, 0x4b,
-0x8b, 0x63, 0xeb, 0x43, 0xd3, 0xfb, 0xa5, 0xb0,
-0xe4, 0xe0, 0xf5, 0xec, 0xcd, 0xea, 0x8e, 0x6a,
-0xa7, 0x26, 0x3a, 0x10, 0x28, 0x36, 0xea, 0x0e,
-0x8d, 0xba, 0xec, 0xc9, 0xfe, 0x68, 0x63, 0xca,
-0x77, 0x99, 0xc1, 0x06, 0xb0, 0x94, 0xfc, 0x01,
-0x76, 0x32, 0x67, 0xb4, 0x7e, 0xfe, 0x0d, 0x4f,
-0x4d, 0x36, 0x32, 0xc6, 0xff, 0x87, 0xe7, 0x5d,
-0xe9, 0x17, 0xe1, 0x99, 0x3e, 0xca, 0x0b, 0x5d,
-0x27, 0xee, 0x5f, 0x47, 0xef, 0xe6, 0xfc, 0x00,
-0xfd, 0x36, 0x59, 0xec, 0x87, 0x73, 0x50, 0x11,
-0xa1, 0xf3, 0xe5, 0x66, 0xf8, 0x4c, 0xaf, 0xe8,
-0x9f, 0x54, 0x24, 0xea, 0xe4, 0xd5, 0x50, 0x39,
-0x73, 0xce, 0x37, 0xfb, 0x7f, 0xa6, 0xc4, 0xd7,
-0xe7, 0x18, 0x0f, 0xa3, 0xd3, 0xaa, 0x41, 0xdb,
-0xf6, 0x9a, 0x7a, 0xb8, 0xc8, 0xf9, 0x91, 0xce,
-0x8a, 0xe7, 0x61, 0xbb, 0x34, 0x97, 0x77, 0x0c,
-0x49, 0xd6, 0xc7, 0x51, 0xfc, 0x5e, 0xc6, 0xfa,
-0xec, 0x79, 0x6e, 0x31, 0xef, 0xf6, 0x35, 0x60,
-0xdb, 0x25, 0x76, 0x06, 0x1e, 0x66, 0xee, 0x7b,
-0x6c, 0xe5, 0x39, 0xe5, 0x70, 0x96, 0x27, 0x42,
-0x87, 0xc5, 0x83, 0xc9, 0xfd, 0x90, 0xc7, 0xf3,
-0xc3, 0x11, 0xed, 0xfc, 0x93, 0x7b, 0xaa, 0xb4,
-0x2a, 0xab, 0x58, 0xcf, 0x98, 0x2d, 0x4e, 0x0d,
-0xbd, 0x0c, 0xb7, 0xb6, 0x2f, 0xe2, 0x88, 0xe8,
-0x25, 0xc8, 0xaf, 0x36, 0xf2, 0xc3, 0x27, 0xe6,
-0xab, 0xf0, 0x34, 0x9d, 0xcb, 0x1e, 0x88, 0xca,
-0x57, 0xc8, 0x3f, 0x49, 0x4f, 0x6c, 0x29, 0x9e,
-0x28, 0x03, 0x9c, 0x39, 0x2c, 0xff, 0x84, 0xdc,
-0x00, 0xfb, 0x74, 0x9e, 0x3a, 0x6e, 0xaa, 0x4f,
-0xa9, 0x97, 0x8c, 0xfd, 0xd6, 0x2b, 0xcf, 0xf1,
-0x97, 0xb0, 0xc7, 0x11, 0xf6, 0xdc, 0xe9, 0x22,
-0x6b, 0xb5, 0xee, 0x66, 0x5c, 0xe1, 0x0a, 0xff,
-0xdd, 0xda, 0x76, 0x9e, 0x98, 0xc7, 0xf9, 0x21,
-0x27, 0xe6, 0x0f, 0x4f, 0xe1, 0x65, 0x44, 0x28,
-0x4f, 0xb6, 0x89, 0x8f, 0xb2, 0xb7, 0x8d, 0xb2,
-0x38, 0x79, 0x18, 0xae, 0xe8, 0xf3, 0x58, 0xdb,
-0x70, 0x41, 0xb9, 0xf4, 0x45, 0xed, 0x7f, 0x67,
-0x06, 0x3f, 0xe4, 0xc4, 0xfb, 0xd6, 0x09, 0xc9,
-0xb6, 0x20, 0x64, 0x98, 0x56, 0x2a, 0x99, 0xcd,
-0xa8, 0x3b, 0xc7, 0xf2, 0x66, 0x20, 0xfe, 0x89,
-0x65, 0x10, 0x11, 0x5b, 0x73, 0x4a, 0x7d, 0x5c,
-0x67, 0x2c, 0x2d, 0xea, 0x29, 0x5e, 0x1d, 0x8f,
-0xfa, 0x7d, 0xf1, 0x0d, 0xe2, 0x72, 0x75, 0x5c,
-0xa8, 0xf4, 0xa6, 0x3d, 0xc9, 0x15, 0x1f, 0xdb,
-0xc3, 0x2b, 0xe8, 0xaf, 0xe1, 0x07, 0x00, 0xdc,
-0x2d, 0x3d, 0x08, 0x63, 0x9a, 0x54, 0xd5, 0x1b,
-0xd8, 0x2c, 0xae, 0x80, 0xdd, 0xd5, 0x25, 0xfa,
-0x9d, 0x86, 0xff, 0x21, 0xdb, 0xe8, 0xf7, 0x11,
-0x35, 0xe1, 0x9f, 0x42, 0xd8, 0x2d, 0xf0, 0x32,
-0xf6, 0xec, 0x21, 0x4e, 0xa3, 0xed, 0xa1, 0xc1,
-0x8d, 0xc6, 0x1d, 0x38, 0x0d, 0xd4, 0x10, 0x22,
-0xa8, 0x22, 0x5f, 0x4a, 0x7e, 0xb8, 0x81, 0x7f,
-0x62, 0xde, 0x8f, 0xd7, 0x84, 0x16, 0x08, 0x71,
-0x18, 0x50, 0x0b, 0xdb, 0x19, 0xe7, 0x87, 0x24,
-0xaf, 0xd1, 0xdd, 0xa0, 0xfa, 0xf0, 0x27, 0x3d,
-0x89, 0x7f, 0x0c, 0x7e, 0x80, 0x12, 0x83, 0x8d,
-0x90, 0x44, 0x24, 0xc3, 0xdb, 0xe3, 0xe3, 0x85,
-0x5a, 0x70, 0x93, 0x41, 0x8c, 0x00, 0xf3, 0xf8,
-0x8b, 0xbf, 0x6b, 0xe2, 0x87, 0x8c, 0xa5, 0x81,
-0x21, 0xa8, 0x36, 0xf2, 0xbd, 0xbd, 0xff, 0xb2,
-0xc9, 0x28, 0x73, 0x8b, 0x33, 0x06, 0xa0, 0xa1,
-0xe1, 0xc5, 0x41, 0x2a, 0x3f, 0x40, 0x3c, 0x6d,
-0x6c, 0xb9, 0x36, 0x1e, 0xcb, 0xbe, 0x93, 0xe8,
-0x65, 0x04, 0x8a, 0x1c, 0x41, 0xa9, 0x08, 0xa5,
-0x38, 0x3f, 0xa4, 0x89, 0x1f, 0x20, 0x8f, 0x67,
-0x43, 0x19, 0x6c, 0x00, 0x51, 0x12, 0x80, 0x92,
-0x5c, 0x79, 0x15, 0xef, 0x0f, 0x02, 0xa4, 0x51,
-0xe6, 0x8d, 0x62, 0x7b, 0x48, 0x89, 0xb2, 0x88,
-0x59, 0xd6, 0x99, 0xf1, 0x4f, 0xc6, 0x44, 0xf7,
-0x37, 0xc6, 0x89, 0x79, 0x71, 0xc0, 0x57, 0xa0,
-0xcb, 0xf0, 0xff, 0x74, 0xe2, 0x8b, 0xf3, 0xfc,
-0xf9, 0xec, 0x04, 0xbe, 0x6a, 0x97, 0x12, 0xec,
-0x9a, 0x1f, 0x68, 0x2d, 0x86, 0xdb, 0xc7, 0x82,
-0x2b, 0xac, 0x16, 0xc5, 0x13, 0xd5, 0x9a, 0x4b,
-0xf8, 0x7a, 0x3e, 0x6b, 0xe2, 0x87, 0x9c, 0x78,
-0xfe, 0x7b, 0xbe, 0xcf, 0xd9, 0x6c, 0xb4, 0xa3,
-0x4a, 0x4e, 0x21, 0x6e, 0x7b, 0xc3, 0x8d, 0x33,
-0x24, 0x8c, 0x43, 0x49, 0x3d, 0x2e, 0x85, 0x29,
-0x3f, 0x4a, 0x88, 0xef, 0x07, 0x4e, 0x3b, 0x90,
-0x74, 0x04, 0x05, 0xca, 0x78, 0xbe, 0xe5, 0x9f,
-0x05, 0x9e, 0x3a, 0xb5, 0x1e, 0xf1, 0x8f, 0x89,
-0x5f, 0x3d, 0xb9, 0xdf, 0xa4, 0x13, 0x42, 0x25,
-0x59, 0xcc, 0xda, 0x78, 0xa2, 0x54, 0x25, 0xb5,
-0x35, 0x8a, 0x51, 0x65, 0xac, 0x19, 0xbf, 0x48,
-0x20, 0xa5, 0x3e, 0xce, 0x01, 0x7b, 0x78, 0x5a,
-0x78, 0xa7, 0x18, 0x80, 0x56, 0x36, 0x2b, 0x68,
-0x1d, 0x26, 0xcf, 0xc3, 0x3a, 0x7f, 0x56, 0x40,
-0xee, 0xb2, 0x8f, 0xa9, 0xfb, 0x59, 0x01, 0x0b,
-0x9c, 0x36, 0xf7, 0x07, 0x91, 0x16, 0x0b, 0x86,
-0xfc, 0x71, 0x73, 0x76, 0xbe, 0x51, 0xe7, 0xa0,
-0xe3, 0x56, 0xb2, 0x9e, 0x6d, 0x55, 0x8c, 0x85,
-0x42, 0x43, 0x55, 0x08, 0x45, 0x03, 0x9c, 0x1f,
-0x32, 0xa1, 0xef, 0x94, 0xfb, 0x62, 0xe7, 0xf7,
-0x91, 0x3b, 0x36, 0xa3, 0xf6, 0x77, 0x46, 0x2d,
-0x08, 0x84, 0xd4, 0x35, 0xf0, 0x80, 0x2e, 0x22,
-0x90, 0x50, 0x5e, 0x09, 0xa8, 0xa3, 0x11, 0x8d,
-0x0c, 0x27, 0xe6, 0x07, 0x02, 0xdf, 0x45, 0xfb,
-0x05, 0xf1, 0xcf, 0xd2, 0x9c, 0xab, 0x9e, 0x37,
-0xd8, 0x02, 0xde, 0x28, 0xe4, 0x69, 0xf8, 0xb3,
-0xff, 0x26, 0xbc, 0x52, 0x70, 0x0c, 0xbe, 0x34,
-0x5a, 0xa7, 0x89, 0x1f, 0xcd, 0x98, 0x98, 0x4f,
-0xa7, 0xc4, 0xe5, 0xc9, 0x2f, 0x39, 0x1e, 0xf0,
-0x55, 0x32, 0x4e, 0x0b, 0xc9, 0x2e, 0x0a, 0x86,
-0xa2, 0x3f, 0x1f, 0x6b, 0x04, 0x16, 0xcc, 0x31,
-0xf1, 0x03, 0x48, 0xfb, 0x8d, 0xfe, 0x20, 0xb6,
-0x4b, 0xdf, 0xb8, 0x92, 0x7b, 0x55, 0xc7, 0xc1,
-0x52, 0xf1, 0x15, 0xb8, 0x1a, 0xfc, 0xf9, 0xf9,
-0x25, 0x27, 0x6a, 0xe6, 0xc1, 0x1b, 0x7e, 0x83,
-0x28, 0x09, 0x12, 0xfb, 0xe7, 0x85, 0xbc, 0xb5,
-0xda, 0x2e, 0xce, 0x06, 0x89, 0xf8, 0x27, 0x80,
-0x2f, 0xc2, 0xeb, 0xdd, 0x14, 0xf5, 0x89, 0x1e,
-0xbc, 0xa2, 0x88, 0x8f, 0x78, 0x57, 0x6f, 0xcf,
-0xef, 0x5f, 0xe4, 0x25, 0x45, 0xcd, 0x89, 0xfb,
-0xc3, 0xe6, 0x3a, 0xe3, 0x7d, 0xff, 0x1b, 0x9a,
-0x69, 0x2f, 0xe3, 0xc0, 0xa2, 0x11, 0x94, 0x60,
-0x85, 0xc5, 0x20, 0x0f, 0xfa, 0x15, 0x58, 0xef,
-0xb9, 0x9f, 0xd7, 0xf3, 0x9a, 0xf8, 0x91, 0xa4,
-0x18, 0xbb, 0x4b, 0x9b, 0x8b, 0x3c, 0xa6, 0x76,
-0x6b, 0x4e, 0x8d, 0x02, 0x5a, 0x37, 0x8f, 0x83,
-0x73, 0xb2, 0xac, 0xf8, 0xbf, 0x0f, 0x7e, 0x09,
-0xe5, 0x8f, 0x62, 0xe2, 0x47, 0xea, 0x9a, 0xc2,
-0xb3, 0x49, 0x4b, 0x74, 0x5b, 0x8f, 0x78, 0x99,
-0xee, 0x85, 0x0a, 0x2d, 0x2b, 0x54, 0xf0, 0x9c,
-0x36, 0xc6, 0x4a, 0x1c, 0x6b, 0xda, 0xc5, 0x62,
-0xcf, 0x21, 0xf6, 0xf0, 0x25, 0xdc, 0x21, 0x45,
-0x89, 0xfd, 0xc3, 0x84, 0xf8, 0xfa, 0x6c, 0x10,
-0x7f, 0xcb, 0x37, 0x92, 0x9e, 0xa5, 0xd6, 0x8c,
-0xd0, 0xb7, 0xc8, 0xbc, 0xbc, 0xf5, 0xc1, 0x9c,
-0x0f, 0xb4, 0x71, 0x65, 0x3f, 0x6f, 0xe4, 0x14,
-0x4d, 0xec, 0x9f, 0x7c, 0x25, 0x2e, 0xcf, 0x2f,
-0x88, 0xfb, 0xa4, 0xa3, 0x28, 0xaf, 0xac, 0x83,
-0xe2, 0x3f, 0x29, 0x97, 0x60, 0x16, 0x6f, 0x1c,
-0x76, 0x1e, 0x0e, 0xf3, 0xfe, 0x5f, 0x83, 0x22,
-0xd4, 0x4e, 0x3c, 0xff, 0x16, 0x69, 0x85, 0xa1,
-0xbf, 0xda, 0x36, 0x93, 0x91, 0xbc, 0x43, 0xc1,
-0x12, 0x46, 0x7f, 0x75, 0xdd, 0x36, 0xe8, 0x61,
-0x25, 0xfa, 0xa2, 0x1e, 0xf2, 0x67, 0xd2, 0xc8,
-0x54, 0xa0, 0xb9, 0xe6, 0xfe, 0x68, 0x42, 0x5c,
-0xdf, 0x75, 0xe2, 0xfe, 0xc1, 0xf3, 0x02, 0x8e,
-0x90, 0xbd, 0xb0, 0x79, 0x0f, 0x2b, 0x51, 0xe4,
-0x0d, 0xe4, 0x53, 0xb5, 0xad, 0xd1, 0xee, 0xa3,
-0x9b, 0x3d, 0xe6, 0xfe, 0x68, 0xd6, 0x38, 0x1e,
-0xf0, 0x0c, 0x20, 0xda, 0x71, 0xaa, 0x54, 0x25,
-0x8c, 0xb7, 0x81, 0x00, 0xc3, 0x10, 0x0b, 0xdc,
-0xaf, 0xfa, 0x1c, 0xe6, 0xfe, 0x44, 0x24, 0x73,
-0xc5, 0x52, 0xe3, 0x7d, 0x9f, 0x11, 0xf7, 0xc5,
-0xba, 0x31, 0xae, 0x92, 0x0b, 0xa5, 0x0b, 0x0f,
-0xe3, 0x89, 0x78, 0x49, 0x1c, 0xa2, 0x87, 0x7c,
-0x68, 0xb1, 0x6e, 0x12, 0x93, 0xfd, 0xd1, 0xb6,
-0xdc, 0x74, 0xc9, 0x6a, 0xbc, 0x6f, 0x9f, 0x78,
-0x89, 0x8e, 0xc0, 0xcd, 0x60, 0xd3, 0x73, 0x46,
-0xe9, 0x05, 0xad, 0x0a, 0x6c, 0x0f, 0xe3, 0xfb,
-0x5e, 0x50, 0x8c, 0x7e, 0x70, 0xc3, 0x49, 0x7f,
-0x8e, 0x70, 0x05, 0xfe, 0xb4, 0xaa, 0x34, 0xc3,
-0xa6, 0x17, 0x9c, 0xd7, 0xbf, 0x64, 0xb1, 0xb6,
-0x20, 0xea, 0x51, 0x1c, 0xf0, 0xfa, 0x02, 0x7a,
-0x72, 0x66, 0x69, 0xbe, 0x55, 0x4f, 0xed, 0x0f,
-0x2b, 0xf5, 0xb0, 0x19, 0x0b, 0xe5, 0x76, 0xcf,
-0x29, 0xcd, 0xc8, 0x96, 0xef, 0x41, 0x43, 0x95,
-0x27, 0x8a, 0xd3, 0x1e, 0x32, 0xd2, 0x1c, 0xf0,
-0xd9, 0x55, 0xda, 0x64, 0x49, 0xe1, 0x47, 0x42,
-0x04, 0xbd, 0xdc, 0xba, 0x48, 0xe0, 0xde, 0xad,
-0x58, 0xd9, 0x7b, 0x24, 0x56, 0xef, 0xe6, 0x22,
-0x23, 0xea, 0x06, 0x8b, 0x9d, 0x51, 0x33, 0x3f,
-0x09, 0xe7, 0x47, 0xda, 0x4d, 0xce, 0xf8, 0xe4,
-0x76, 0x78, 0x1f, 0xe2, 0x34, 0xe3, 0x9f, 0x92,
-0xd6, 0xec, 0x8e, 0x5e, 0x23, 0xdf, 0xbe, 0xc5,
-0x7f, 0xda, 0xe8, 0x0f, 0x92, 0x8c, 0x8f, 0xe0,
-0xfe, 0x41, 0x23, 0xe8, 0x21, 0xdb, 0xda, 0xad,
-0x23, 0xd2, 0xc5, 0x58, 0xd9, 0xfe, 0xfb, 0xfe,
-0x48, 0xc4, 0x7d, 0x0c, 0x61, 0xcf, 0x80, 0xef,
-0x44, 0x28, 0xfc, 0xed, 0xc5, 0x6b, 0x0b, 0x94,
-0x14, 0x7e, 0x80, 0x9f, 0x06, 0xe7, 0x73, 0xb1,
-0x33, 0x3a, 0xd1, 0xff, 0xa2, 0x5f, 0xba, 0xcc,
-0xaa, 0x8e, 0xd9, 0x46, 0x6b, 0xae, 0xd0, 0xcf,
-0xb9, 0xc7, 0xcc, 0xdb, 0x94, 0xda, 0x1f, 0xed,
-0x00, 0x45, 0x6d, 0xfe, 0x78, 0xc1, 0x03, 0x08,
-0x03, 0x8c, 0xfb, 0x7f, 0x02, 0x07, 0x95, 0x6e,
-0xdd, 0xf0, 0xff, 0x7c, 0x04, 0xee, 0xde, 0x25,
-0xcf, 0xa4, 0xf0, 0x43, 0x3a, 0x81, 0x44, 0xec,
-0xdf, 0x14, 0x37, 0x93, 0x7c, 0xed, 0xfd, 0x18,
-0xad, 0xc4, 0xa7, 0xcc, 0xcf, 0xe6, 0x9c, 0xa3,
-0xdd, 0xe4, 0x2f, 0xb5, 0x2d, 0x5e, 0xfb, 0x26,
-0x79, 0x73, 0xcd, 0xc3, 0xa6, 0xf8, 0xd7, 0x62,
-0x60, 0xba, 0x1a, 0x5c, 0xe4, 0x82, 0x66, 0x61,
-0xc7, 0x80, 0x91, 0xcf, 0xdc, 0xcb, 0x18, 0x53,
-0x83, 0x94, 0xd7, 0x73, 0x75, 0x28, 0x85, 0xb0,
-0x48, 0x25, 0xa9, 0xfc, 0x48, 0x8f, 0x05, 0xbf,
-0xef, 0x93, 0x97, 0x5a, 0x9e, 0x16, 0xe2, 0x6d,
-0x41, 0xde, 0xd5, 0x9a, 0x07, 0xb7, 0x86, 0x78,
-0xd8, 0x4b, 0x5a, 0x15, 0xc4, 0x2b, 0x6f, 0x11,
-0x33, 0x3f, 0xa4, 0x15, 0x7a, 0xc1, 0x35, 0xb8,
-0xc4, 0x9d, 0xdd, 0xcc, 0x3e, 0x03, 0x57, 0x14,
-0xcd, 0xa8, 0x08, 0x39, 0x34, 0x59, 0xd5, 0x9d,
-0x2e, 0xb1, 0x5f, 0x1d, 0x56, 0xe6, 0x08, 0xa8,
-0xaf, 0xcd, 0xfc, 0x48, 0x9b, 0xc9, 0x79, 0x98,
-0xaf, 0x2f, 0x19, 0x14, 0x2b, 0x62, 0xeb, 0x63,
-0x94, 0xc5, 0x29, 0x0b, 0xfa, 0xf1, 0xc5, 0x4f,
-0x48, 0x97, 0x95, 0xbd, 0xaf, 0xe3, 0xd2, 0xa5,
-0xf0, 0x03, 0x08, 0xe3, 0x7e, 0xce, 0x46, 0x2e,
-0x6e, 0x83, 0x43, 0x13, 0x65, 0x1a, 0x3a, 0xb8,
-0x86, 0x8d, 0xfa, 0xc1, 0x23, 0x68, 0xff, 0x5e,
-0xd3, 0x1f, 0x76, 0x73, 0xda, 0xcb, 0x52, 0xbe,
-0x66, 0xa4, 0x59, 0x7e, 0x19, 0xa3, 0x05, 0x38,
-0xc9, 0xf3, 0x06, 0x6a, 0x51, 0x90, 0x9e, 0x24,
-0x8f, 0xa5, 0xe5, 0x0f, 0xc8, 0x5e, 0x4b, 0x6a,
-0x7f, 0xb4, 0x7d, 0xfe, 0x99, 0x1c, 0xef, 0x1d,
-0x31, 0xe2, 0x7d, 0x46, 0x5b, 0xd8, 0x75, 0xac,
-0x80, 0xbf, 0xef, 0x17, 0xb0, 0x9a, 0xfd, 0xc0,
-0x27, 0x5f, 0xc3, 0x8f, 0x24, 0xec, 0x18, 0x74,
-0x9c, 0x90, 0xa7, 0xa4, 0x8f, 0x68, 0x8f, 0xc7,
-0xea, 0x7d, 0x0e, 0x6b, 0x6d, 0x4c, 0xb5, 0x52,
-0xce, 0x4f, 0xd2, 0xe2, 0xad, 0x1f, 0x94, 0x37,
-0x91, 0x6b, 0xf8, 0x91, 0x94, 0xf9, 0xc1, 0x25,
-0xc3, 0xe2, 0x18, 0xa7, 0x35, 0x30, 0xd0, 0x0e,
-0x1c, 0x19, 0x75, 0x07, 0x9d, 0x46, 0xa1, 0x9c,
-0xbe, 0xa7, 0xd9, 0xf6, 0x61, 0x53, 0x2a, 0x3f,
-0xd2, 0x98, 0xf0, 0x4b, 0x58, 0xbf, 0x1a, 0x4e,
-0xc5, 0x15, 0x53, 0x41, 0xd4, 0x3e, 0x26, 0xec,
-0x57, 0xb8, 0x86, 0xa2, 0x63, 0xf6, 0x19, 0xc2,
-0x35, 0xf8, 0xc7, 0xd0, 0x8f, 0xcb, 0x6d, 0x1b,
-0x72, 0x86, 0xb4, 0x03, 0x8c, 0xd7, 0x4f, 0x15,
-0xbc, 0x46, 0x0e, 0x4c, 0x76, 0x47, 0x71, 0x19,
-0x9f, 0xe5, 0xfd, 0x41, 0xaa, 0x11, 0x1a, 0x11,
-0x33, 0xfe, 0x91, 0x38, 0x7a, 0x91, 0x37, 0x93,
-0x33, 0xec, 0xf9, 0xc0, 0x44, 0x9b, 0x57, 0x66,
-0x5f, 0x89, 0xf2, 0x61, 0x86, 0xbd, 0x85, 0x9b,
-0x5a, 0x4f, 0xa5, 0xe6, 0x87, 0xc3, 0x5e, 0xca,
-0x8b, 0xe0, 0x3c, 0x38, 0x4d, 0x9d, 0x98, 0x0f,
-0x46, 0x44, 0xac, 0x53, 0x8b, 0x0f, 0x52, 0xfb,
-0xc3, 0x1a, 0xf5, 0x71, 0x88, 0x76, 0xa4, 0x2d,
-0x71, 0x20, 0x04, 0x8d, 0xb5, 0x21, 0x23, 0x22,
-0x86, 0x86, 0x3f, 0xe2, 0x9f, 0x5c, 0x7b, 0xd2,
-0x1e, 0x31, 0xf8, 0x91, 0x38, 0x1f, 0x54, 0x08,
-0xdf, 0x2e, 0x92, 0x6c, 0x0b, 0xeb, 0x8e, 0x15,
-0xca, 0xc5, 0xf9, 0x21, 0xcd, 0xf9, 0xe1, 0x43,
-0xf8, 0x59, 0x67, 0x79, 0x97, 0x4c, 0xf0, 0x43,
-0xda, 0x82, 0xc2, 0xe7, 0xbc, 0x11, 0x21, 0x0e,
-0x6a, 0x8e, 0xc7, 0xa8, 0x93, 0x1e, 0x49, 0xc1,
-0x3f, 0xe7, 0xe1, 0xf3, 0xf4, 0x4a, 0x4f, 0xd6,
-0x60, 0x13, 0x0e, 0x62, 0x40, 0xe8, 0x73, 0xc6,
-0x19, 0x23, 0x51, 0x2c, 0xff, 0x37, 0xf8, 0x93,
-0x03, 0x81, 0xd0, 0xb1, 0xa6, 0x19, 0x29, 0xfc,
-0x00, 0x3d, 0x42, 0x49, 0x3b, 0x6d, 0x26, 0x28,
-0x71, 0x62, 0x40, 0xe8, 0x14, 0x84, 0xa1, 0x43,
-0xa0, 0x8c, 0xa8, 0x81, 0x56, 0x9f, 0x1d, 0xe4,
-0xd5, 0x24, 0x85, 0x1f, 0x89, 0xe3, 0x3d, 0xcf,
-0x42, 0x25, 0xfd, 0xb5, 0xd0, 0x8e, 0x78, 0xd8,
-0x4b, 0x47, 0x18, 0xac, 0xd5, 0xf1, 0xc4, 0xef,
-0x0d, 0x46, 0xc6, 0xb8, 0x3f, 0xb5, 0x3f, 0xda,
-0x6e, 0xc5, 0xa9, 0x59, 0xda, 0x3d, 0x43, 0xd2,
-0x04, 0x10, 0x0a, 0x6c, 0x57, 0x3b, 0xbc, 0x34,
-0x98, 0x3d, 0xbd, 0xf9, 0xc9, 0x6c, 0x94, 0x78,
-0x1b, 0xcd, 0xfc, 0x48, 0xb9, 0xbc, 0x1b, 0x5a,
-0xa5, 0x2f, 0xeb, 0xa9, 0x94, 0x32, 0x7f, 0xdd,
-0xcd, 0xf9, 0x01, 0xfe, 0x0b, 0xbc, 0xa5, 0xb9,
-0x11, 0xcf, 0xc8, 0x8e, 0x84, 0x7c, 0xe8, 0x02,
-0x83, 0x1f, 0x29, 0xf2, 0x58, 0x0a, 0x8d, 0x12,
-0xe2, 0xe1, 0xd8, 0xe0, 0x14, 0xdd, 0xcf, 0xa9,
-0x96, 0x3e, 0x4a, 0xec, 0x67, 0x83, 0x1f, 0x09,
-0x8d, 0xdc, 0x25, 0x2c, 0x27, 0x2a, 0x45, 0x48,
-0x9c, 0x16, 0x20, 0xa2, 0x75, 0x23, 0x10, 0x6d,
-0xc2, 0x2f, 0xa2, 0x55, 0xc2, 0x12, 0x7f, 0x8d,
-0x89, 0x1f, 0x52, 0x72, 0xc0, 0xfe, 0x46, 0xe2,
-0x37, 0xba, 0x8f, 0xac, 0x53, 0x62, 0x6d, 0x41,
-0xf4, 0x75, 0x90, 0x1f, 0xa4, 0x51, 0xf2, 0xce,
-0x0f, 0xd7, 0x31, 0x84, 0x46, 0x1f, 0x11, 0xcb,
-0xc4, 0x71, 0x07, 0x27, 0xca, 0x9f, 0x1d, 0x42,
-0x61, 0x44, 0x94, 0xc9, 0x51, 0xe6, 0xd7, 0x0c,
-0x5a, 0xb6, 0x23, 0xd0, 0x14, 0x50, 0x23, 0xb8,
-0x9e, 0xaf, 0x91, 0x46, 0xdd, 0x19, 0x95, 0xa7,
-0xa6, 0xe4, 0x87, 0x4f, 0x85, 0x97, 0x02, 0xd3,
-0xf5, 0x36, 0x1f, 0x79, 0x87, 0x36, 0x33, 0xa3,
-0xbe, 0xe3, 0x5d, 0xb2, 0x86, 0xe6, 0x33, 0x5a,
-0x4b, 0x4e, 0xd0, 0x66, 0x4b, 0x71, 0x1f, 0xe2,
-0x01, 0x9a, 0xc4, 0x57, 0x74, 0x1a, 0x7c, 0xd1,
-0x78, 0x6b, 0xa7, 0xad, 0xae, 0xe0, 0x20, 0xbc,
-0xc6, 0x76, 0xf3, 0xf8, 0xd7, 0x15, 0x78, 0xa3,
-0x71, 0xb6, 0xea, 0xac, 0x13, 0xbf, 0xc0, 0x2b,
-0x0b, 0x78, 0x7e, 0xb8, 0xc5, 0xcc, 0x8f, 0x94,
-0x87, 0xa0, 0x3a, 0x60, 0x94, 0x69, 0x8c, 0x4d,
-0xc8, 0x93, 0x8b, 0x02, 0xef, 0xc8, 0x63, 0xf0,
-0xfb, 0x55, 0x2a, 0x88, 0x87, 0x4d, 0xf1, 0xaf,
-0x29, 0x57, 0xf8, 0x7a, 0x0e, 0xad, 0x39, 0x31,
-0xe9, 0x8c, 0xf6, 0x09, 0xcb, 0x8e, 0x25, 0x8a,
-0x1f, 0xf5, 0xcf, 0x0e, 0x59, 0xc7, 0xf1, 0xfe,
-0xef, 0xb1, 0xaa, 0xd1, 0x25, 0x11, 0x53, 0x7d,
-0x74, 0xd7, 0xf5, 0x9b, 0xe1, 0xa5, 0x9d, 0xc5,
-0xfb, 0xf0, 0xb1, 0x8f, 0xa9, 0x3b, 0xc1, 0x11,
-0x5d, 0xd4, 0x40, 0xc6, 0x60, 0xb5, 0x94, 0x1f,
-0xa1, 0xdf, 0x24, 0x6f, 0x41, 0xbf, 0xc4, 0xfb,
-0x13, 0xa5, 0xf0, 0x63, 0x6f, 0x86, 0x9d, 0xf0,
-0x00, 0xc5, 0x97, 0x3a, 0x41, 0x9f, 0x89, 0xe7,
-0x87, 0xab, 0x6b, 0x94, 0x7c, 0xa8, 0x6b, 0x20,
-0xe7, 0xb5, 0x27, 0xf2, 0x8a, 0x5f, 0x97, 0x35,
-0x53, 0xbd, 0x80, 0x4f, 0x1a, 0x90, 0xc2, 0xb0,
-0x82, 0xde, 0x98, 0x9d, 0x1e, 0xc1, 0x6d, 0xe9,
-0x88, 0xb5, 0x79, 0x62, 0x83, 0x06, 0x0d, 0xe0,
-0xd1, 0xa0, 0x9f, 0x39, 0x83, 0x72, 0xda, 0x3d,
-0x79, 0x89, 0xfd, 0xe9, 0x40, 0xbc, 0x87, 0xdb,
-0x46, 0x59, 0xb2, 0x96, 0x77, 0x77, 0x8d, 0xe9,
-0xaf, 0x4f, 0xc8, 0x21, 0x70, 0x0f, 0x3b, 0x15,
-0x71, 0x88, 0xbd, 0xa5, 0x57, 0x86, 0x6c, 0x3d,
-0xb2, 0x25, 0xa5, 0x3f, 0xec, 0x18, 0xab, 0xcc,
-0xb5, 0x75, 0x09, 0xc3, 0x2c, 0xbe, 0x3e, 0xc3,
-0xdc, 0x3f, 0x0f, 0x47, 0x37, 0x89, 0xc3, 0x74,
-0xf8, 0xfe, 0xca, 0x41, 0x5b, 0xf8, 0x71, 0x73,
-0x7f, 0xb4, 0x4b, 0x70, 0x89, 0xfe, 0x58, 0xb5,
-0x72, 0x92, 0x9f, 0xcb, 0x31, 0x5a, 0xec, 0xf3,
-0xf6, 0xc3, 0x33, 0x0d, 0xd8, 0x33, 0x87, 0x1c,
-0x86, 0x2a, 0x8b, 0xed, 0xef, 0x44, 0x35, 0xe1,
-0xff, 0x69, 0x44, 0xfc, 0x83, 0xc7, 0xaa, 0xd0,
-0xb1, 0x4d, 0x7b, 0x5f, 0x0a, 0x1b, 0xb4, 0xcc,
-0xe4, 0x34, 0x20, 0xec, 0xe1, 0xfe, 0x8d, 0x26,
-0xa5, 0x45, 0x2f, 0x71, 0xc9, 0x6b, 0xfd, 0xe6,
-0xfe, 0xb0, 0x2b, 0xb8, 0xbf, 0x9a, 0xd1, 0x5f,
-0xc2, 0x69, 0x75, 0x42, 0x5f, 0xab, 0x6d, 0x60,
-0x0f, 0xd1, 0x5f, 0x7a, 0x66, 0x40, 0x9b, 0xce,
-0xa9, 0xcc, 0x88, 0xc9, 0xff, 0x03, 0x56, 0x08,
-0x17, 0x3a, 0x5b, 0x28, 0x78, 0xf4, 0xe6, 0xb0,
-0x5f, 0x35, 0xf2, 0xc3, 0x49, 0x2b, 0x18, 0x7c,
-0x1d, 0x21, 0xde, 0x4a, 0x0c, 0xcf, 0x63, 0x91,
-0x29, 0xc3, 0x8b, 0xae, 0x80, 0x31, 0xc7, 0x3c,
-0x6a, 0xb4, 0x45, 0x1e, 0x87, 0xee, 0xb7, 0x8d,
-0xc6, 0x70, 0xaf, 0x72, 0x43, 0x2c, 0x18, 0x8b,
-0xff, 0xa2, 0x68, 0x2a, 0x50, 0x4d, 0xf1, 0x2f,
-0xc3, 0xdb, 0x23, 0x4d, 0xd2, 0xc5, 0x51, 0xed,
-0x3c, 0x54, 0x1d, 0xe4, 0xef, 0x1b, 0x0b, 0x84,
-0x0d, 0x8a, 0x83, 0xf4, 0x12, 0xe1, 0xfd, 0x61,
-0xbf, 0x65, 0xe6, 0xc7, 0x8e, 0xfb, 0x7f, 0xc6,
-0x73, 0x2a, 0xc8, 0xd3, 0xbe, 0xd2, 0xc8, 0x4d,
-0x11, 0xe1, 0x3e, 0x6d, 0x80, 0xdd, 0xac, 0x4e,
-0x3a, 0x27, 0x56, 0x44, 0xae, 0x2a, 0xf9, 0xaa,
-0xf5, 0x64, 0x0a, 0xfe, 0x19, 0x09, 0x19, 0x6c,
-0xcf, 0x61, 0xb2, 0xc0, 0x1b, 0xa8, 0x2e, 0x88,
-0x5a, 0xba, 0xec, 0x97, 0xf5, 0x00, 0x7b, 0x30,
-0x24, 0xff, 0xc9, 0x52, 0x51, 0xbb, 0xf7, 0x9b,
-0x76, 0x4a, 0xb3, 0x53, 0xf9, 0x21, 0x63, 0x78,
-0x2f, 0x48, 0xac, 0xc0, 0x5c, 0xa1, 0x41, 0x4e,
-0x4b, 0xa2, 0xe0, 0x6b, 0x56, 0x1f, 0x52, 0x97,
-0x59, 0x9b, 0xbb, 0xd5, 0x65, 0x96, 0xba, 0xec,
-0xf4, 0x6b, 0xfa, 0xc3, 0x42, 0x49, 0xaf, 0x1c,
-0xb6, 0x38, 0xa1, 0xd5, 0x6a, 0xd7, 0x2d, 0xdd,
-0xfe, 0x11, 0x12, 0x60, 0x25, 0xfd, 0x62, 0x17,
-0x71, 0x22, 0x10, 0xb5, 0x2b, 0x88, 0x3f, 0xcd,
-0xf8, 0x67, 0x45, 0x0c, 0x0f, 0x97, 0x8b, 0x56,
-0x23, 0x1b, 0x07, 0xad, 0xa1, 0x91, 0x8c, 0x43,
-0x7a, 0x89, 0xdb, 0x66, 0x74, 0x8c, 0x0d, 0xb9,
-0x14, 0xe7, 0x06, 0x53, 0x7d, 0x5c, 0x34, 0xee,
-0xff, 0x59, 0x7f, 0x8e, 0x77, 0x37, 0x83, 0x05,
-0xbd, 0xb6, 0x48, 0x13, 0xe7, 0x87, 0xfc, 0xb9,
-0x6a, 0xf3, 0x71, 0xfe, 0x79, 0x5a, 0x95, 0x8d,
-0xf6, 0x42, 0x2a, 0xfe, 0x89, 0xb3, 0xd3, 0x3b,
-0xd9, 0x01, 0xad, 0x2c, 0x82, 0x68, 0x73, 0x84,
-0xff, 0x87, 0x34, 0x23, 0x03, 0xff, 0xa0, 0x72,
-0x4e, 0x75, 0x6e, 0x4a, 0xc5, 0x3f, 0x0a, 0xc7,
-0xc3, 0x88, 0xd6, 0x2a, 0xa0, 0x15, 0x0a, 0x06,
-0xeb, 0x36, 0xfb, 0x2f, 0x6b, 0x2f, 0x0e, 0xda,
-0xff, 0x49, 0x0e, 0xa5, 0x5f, 0x92, 0x5a, 0xf5,
-0x32, 0x17, 0x6e, 0x24, 0x33, 0x3f, 0xe4, 0x62,
-0xca, 0xd7, 0x27, 0xc3, 0x45, 0xee, 0x92, 0x5a,
-0xa1, 0x70, 0x90, 0x52, 0xcf, 0xa7, 0xd0, 0xa8,
-0xab, 0x2e, 0xdc, 0x18, 0x8f, 0x31, 0x54, 0xdc,
-0x6f, 0xde, 0xe9, 0x58, 0x68, 0xe2, 0xc7, 0xae,
-0x9e, 0x66, 0xb0, 0x41, 0xd2, 0x1f, 0x93, 0x69,
-0x34, 0x97, 0xa9, 0xa7, 0xf2, 0x7e, 0x48, 0xde,
-0x3d, 0xf5, 0x4c, 0x20, 0xbf, 0xf3, 0xc6, 0xbf,
-0xf3, 0xbc, 0xab, 0xad, 0x09, 0x3f, 0x13, 0xcd,
-0x58, 0x71, 0x0d, 0xfe, 0x41, 0xa3, 0xa9, 0x1f,
-0x9f, 0xdf, 0xca, 0x74, 0x61, 0x4e, 0xc4, 0x6a,
-0x21, 0x47, 0x58, 0x6f, 0xb6, 0x0b, 0x6c, 0x20,
-0x0e, 0x80, 0xde, 0xe9, 0xd2, 0xff, 0xb3, 0xfa,
-0x6a, 0x0a, 0x3f, 0x36, 0x5f, 0x9f, 0x5e, 0xdb,
-0xa8, 0xe7, 0x32, 0x7c, 0xa4, 0x54, 0x71, 0xe0,
-0x3d, 0x02, 0x9f, 0x2b, 0x95, 0x8d, 0xb6, 0xfe,
-0x9c, 0x4b, 0x64, 0x6c, 0xce, 0x2b, 0xfd, 0x59,
-0x1f, 0xa6, 0xf0, 0x63, 0x7f, 0x8a, 0xa7, 0xb5,
-0xb2, 0xd7, 0xd6, 0x63, 0xfb, 0x49, 0xa4, 0x95,
-0x97, 0x61, 0xee, 0x28, 0x18, 0xd1, 0x5b, 0xa0,
-0xf2, 0x9c, 0xf5, 0x92, 0xb8, 0xc2, 0xb7, 0x90,
-0xd8, 0xf5, 0xbb, 0x42, 0x35, 0x66, 0xfc, 0xc3,
-0x69, 0xb1, 0x39, 0xec, 0x99, 0x61, 0x85, 0xd7,
-0x84, 0xe2, 0x7e, 0xf9, 0x61, 0x32, 0xe0, 0x58,
-0x03, 0xb3, 0x7a, 0x33, 0x7d, 0xb8, 0x43, 0x9e,
-0x85, 0x02, 0xdd, 0x71, 0x6d, 0x7f, 0x58, 0x03,
-0xf6, 0x8c, 0x91, 0xa7, 0xdb, 0x9b, 0xfd, 0xc5,
-0xa7, 0xc4, 0x47, 0xc9, 0xbb, 0xfe, 0x27, 0x1a,
-0x67, 0x9d, 0xa7, 0x79, 0xfe, 0x69, 0xcd, 0xcd,
-0xbd, 0xf9, 0x5f, 0xe5, 0x87, 0xe4, 0xf5, 0x3e,
-0x8b, 0x6e, 0x23, 0x6b, 0x49, 0x1b, 0x0e, 0x6e,
-0xbc, 0x8d, 0x8c, 0xa4, 0x23, 0x10, 0x1a, 0xce,
-0xa0, 0xad, 0x4e, 0xa1, 0x8b, 0x17, 0xaa, 0xa8,
-0xd7, 0xe0, 0x9f, 0x38, 0xec, 0x19, 0x96, 0xee,
-0xe6, 0xfe, 0x9f, 0x4e, 0x1c, 0xfc, 0xa1, 0xb3,
-0x24, 0xb4, 0x36, 0x9a, 0xee, 0x80, 0x23, 0xac,
-0x9b, 0x65, 0x86, 0xe4, 0x6b, 0xf0, 0x8f, 0x01,
-0x03, 0x2c, 0x9a, 0x32, 0x4c, 0xb3, 0x62, 0xfa,
-0x88, 0xa7, 0xfd, 0x2c, 0x31, 0x0a, 0xe7, 0x9b,
-0xf7, 0x73, 0xfe, 0x8d, 0xaf, 0xe0, 0x9f, 0x58,
-0x59, 0xdc, 0x01, 0x28, 0x5b, 0xbe, 0x24, 0xf8,
-0xea, 0x07, 0xf0, 0x96, 0xdf, 0x08, 0xf4, 0x7c,
-0x00, 0x07, 0x54, 0x77, 0xfd, 0xdd, 0x41, 0x99,
-0x5c, 0xeb, 0xff, 0x89, 0xc3, 0x18, 0xc9, 0xee,
-0xe3, 0xb4, 0x6c, 0xd0, 0x12, 0xb4, 0xf3, 0x13,
-0x34, 0x64, 0x7d, 0x8b, 0xa9, 0x3e, 0xfa, 0xcb,
-0x6b, 0xf0, 0x4f, 0x7c, 0xfe, 0x19, 0xee, 0x1d,
-0xd5, 0x10, 0xdd, 0xf1, 0x42, 0x39, 0x5e, 0xd8,
-0x95, 0xfe, 0x01, 0xbf, 0xe2, 0xfd, 0xe1, 0xd2,
-0x6b, 0xfa, 0xc3, 0x22, 0x1e, 0xe0, 0x45, 0x70,
-0x6f, 0x10, 0x61, 0xa2, 0x2d, 0x5a, 0x1b, 0x44,
-0x71, 0x60, 0x7f, 0x0d, 0x36, 0xe8, 0xf9, 0x5e,
-0x7a, 0xaf, 0x25, 0x69, 0x7f, 0xf5, 0x58, 0x13,
-0xfc, 0x00, 0x51, 0xa5, 0x0e, 0xca, 0xa0, 0x8d,
-0xa1, 0x98, 0x3d, 0x61, 0x28, 0xe2, 0x1c, 0x8e,
-0x88, 0xba, 0xe1, 0x6e, 0x4d, 0x34, 0xe1, 0x9f,
-0xcc, 0xce, 0x89, 0xb6, 0x68, 0xbc, 0x1b, 0x48,
-0x65, 0x9c, 0x16, 0x80, 0x5f, 0x39, 0x2e, 0x7e,
-0x20, 0x7d, 0x5e, 0x1d, 0x23, 0xc6, 0x4c, 0xc8,
-0x9f, 0xf6, 0xb4, 0x4e, 0x85, 0xbb, 0x89, 0xb2,
-0x36, 0x89, 0x9f, 0x4b, 0x07, 0xd4, 0x2a, 0xde,
-0x88, 0xf9, 0x73, 0xf5, 0x70, 0xac, 0x7f, 0xdc,
-0xad, 0xf0, 0xb9, 0x6b, 0x47, 0x6d, 0x66, 0x30,
-0xa5, 0x3f, 0x6c, 0x94, 0xf5, 0x70, 0x5a, 0x24,
-0x0e, 0x7b, 0xba, 0x1c, 0x31, 0x7e, 0x6c, 0xa9,
-0x0b, 0x3a, 0x0c, 0x31, 0x2b, 0xf4, 0x3c, 0x82,
-0xf2, 0x87, 0x90, 0x75, 0x49, 0xf9, 0x23, 0xf5,
-0xab, 0xf8, 0xbe, 0x75, 0x96, 0x6c, 0xf2, 0x1a,
-0x6b, 0xd4, 0x56, 0xa0, 0xfc, 0xf1, 0xd4, 0xf2,
-0x8e, 0x3c, 0xb8, 0x50, 0x96, 0x18, 0x55, 0xe6,
-0x35, 0xfc, 0x90, 0xdc, 0xff, 0x83, 0xf8, 0x67,
-0x43, 0x36, 0xa7, 0xe5, 0x7c, 0x90, 0x87, 0xbd,
-0x86, 0x0c, 0x7e, 0x86, 0x1b, 0x79, 0x62, 0xd5,
-0x6e, 0xb5, 0x83, 0x0b, 0xea, 0xd5, 0x29, 0xfc,
-0x90, 0x46, 0x77, 0xd7, 0x18, 0x2d, 0x52, 0x85,
-0x66, 0x0d, 0x36, 0x2d, 0x87, 0xde, 0x46, 0x77,
-0x5d, 0x8d, 0x52, 0x5a, 0x28, 0xed, 0xa6, 0x6e,
-0xed, 0x3f, 0x73, 0xfc, 0x93, 0xd0, 0xbf, 0x71,
-0xff, 0x0f, 0x0f, 0x83, 0xaa, 0xdc, 0xff, 0x73,
-0x94, 0xf3, 0x85, 0x8e, 0xeb, 0x95, 0xd5, 0x31,
-0xa2, 0x24, 0xb6, 0xdf, 0xf3, 0x4a, 0x58, 0xbc,
-0x86, 0x1f, 0x72, 0x62, 0xfd, 0x71, 0x20, 0xac,
-0x6f, 0x6e, 0x52, 0xa5, 0x13, 0xf1, 0xfe, 0x74,
-0xca, 0xd8, 0x9d, 0x6e, 0x1e, 0x81, 0xb5, 0x7c,
-0xc5, 0xff, 0x23, 0x86, 0xb4, 0x0b, 0x38, 0x98,
-0xc5, 0xd0, 0x30, 0x9f, 0xc7, 0xd6, 0x4d, 0xb6,
-0xaf, 0x31, 0x80, 0xd0, 0xfe, 0xc5, 0x05, 0xc1,
-0xbc, 0x90, 0xb8, 0x30, 0x85, 0x1f, 0x92, 0xcb,
-0x9f, 0x1b, 0x5d, 0xe4, 0x2f, 0xdc, 0x71, 0x71,
-0x4c, 0x9e, 0x43, 0x32, 0xfd, 0x1b, 0xfa, 0xd4,
-0x68, 0xab, 0x2b, 0xfd, 0x88, 0xb0, 0x47, 0x5a,
-0xa6, 0x17, 0xcd, 0x4f, 0xe1, 0xc7, 0x9e, 0xaa,
-0xf1, 0x7e, 0x61, 0x6d, 0x1c, 0x06, 0x18, 0x8e,
-0x91, 0xb1, 0x8d, 0x53, 0x85, 0xc7, 0x68, 0xac,
-0xd0, 0x55, 0x30, 0x1a, 0xa7, 0xfa, 0x52, 0xf8,
-0xb1, 0xa7, 0xb1, 0x2f, 0xd9, 0x82, 0xd3, 0x9c,
-0x0d, 0x40, 0xf9, 0xb2, 0x8b, 0x07, 0xc2, 0x9a,
-0xb2, 0xa4, 0xbf, 0x61, 0xf9, 0xa7, 0xb3, 0x78,
-0xa1, 0xdc, 0x97, 0x8d, 0xa5, 0xa1, 0x59, 0x4b,
-0xc5, 0x14, 0x7e, 0x6c, 0xee, 0x0f, 0x89, 0xd8,
-0x8c, 0xb4, 0x1f, 0x4f, 0x89, 0x51, 0xed, 0xce,
-0x25, 0xd8, 0x09, 0xa3, 0x63, 0xc8, 0x5e, 0xb2,
-0x9f, 0xa1, 0x7d, 0x61, 0xee, 0x0f, 0xfb, 0x69,
-0xdc, 0xff, 0xd3, 0xe4, 0x86, 0xa3, 0xed, 0xff,
-0x7d, 0xc8, 0x7a, 0x40, 0xbc, 0x62, 0xfd, 0x4b,
-0x68, 0xee, 0x72, 0xdb, 0x6e, 0xb1, 0x12, 0x7f,
-0x2a, 0xdd, 0x76, 0xd7, 0xe5, 0x02, 0x13, 0xfe,
-0x99, 0xfc, 0x34, 0xa7, 0x75, 0xd2, 0x6d, 0x0d,
-0xf6, 0x5c, 0x6d, 0x4d, 0xe0, 0x56, 0x66, 0x29,
-0x27, 0x07, 0xd9, 0xea, 0x40, 0x7e, 0x48, 0x5e,
-0x29, 0xde, 0xa4, 0x84, 0x83, 0x5b, 0x9a, 0x1d,
-0xdf, 0xf3, 0x27, 0xf1, 0x8f, 0x62, 0xf0, 0x43,
-0x1a, 0x66, 0x9a, 0x02, 0x6b, 0x54, 0xdc, 0x2d,
-0x1a, 0x39, 0xa9, 0xff, 0x76, 0xf2, 0x96, 0x3a,
-0xd1, 0x9d, 0x7d, 0xaf, 0x84, 0xef, 0x1b, 0xb8,
-0x73, 0x30, 0x3b, 0x19, 0xff, 0xf2, 0xe5, 0xc6,
-0xf4, 0x9d, 0xc5, 0x85, 0x87, 0xb4, 0x49, 0x2b,
-0x04, 0x19, 0x95, 0x34, 0xf5, 0x73, 0xbe, 0xa9,
-0x72, 0x3f, 0xa7, 0xaa, 0x40, 0x7b, 0x3f, 0x9d,
-0x98, 0xf1, 0x0f, 0xef, 0x57, 0x5e, 0x85, 0xcb,
-0x88, 0xda, 0x6d, 0x8d, 0xe6, 0x82, 0xcc, 0xae,
-0xd9, 0x23, 0xe4, 0xe3, 0x46, 0x7b, 0xa3, 0xbc,
-0xbf, 0x66, 0x39, 0x5c, 0x58, 0xdb, 0xcd, 0x6e,
-0xea, 0x42, 0xfc, 0x33, 0xb1, 0x9e, 0x41, 0x88,
-0xb1, 0x41, 0xae, 0xdf, 0x2e, 0xf3, 0x36, 0xb2,
-0xfb, 0xe1, 0xee, 0x5f, 0x18, 0xf9, 0x51, 0xf3,
-0x1a, 0x6e, 0xe6, 0xfc, 0x90, 0xf8, 0x93, 0x32,
-0x2b, 0x84, 0x83, 0x84, 0x3c, 0x51, 0x62, 0xec,
-0xc7, 0x59, 0xa3, 0xe2, 0x72, 0x38, 0x4a, 0x77,
-0xb0, 0xcc, 0xa8, 0x78, 0x92, 0xbe, 0x97, 0x56,
-0xca, 0x16, 0xf3, 0x78, 0xd0, 0x45, 0x44, 0x44,
-0xce, 0x13, 0x62, 0x52, 0x5f, 0x6f, 0x88, 0xfb,
-0x7f, 0x64, 0xfe, 0xfc, 0x08, 0x63, 0xc2, 0x74,
-0x35, 0xf9, 0x0b, 0x6b, 0xf2, 0xab, 0xcb, 0x1d,
-0x61, 0xcf, 0x3f, 0x70, 0xea, 0x9e, 0x10, 0x6d,
-0x4e, 0xc1, 0x3f, 0x71, 0xff, 0x4f, 0x38, 0xbb,
-0x9e, 0xa1, 0xd8, 0xb9, 0xe3, 0xfa, 0x46, 0x32,
-0xa2, 0xb5, 0xae, 0xfe, 0x07, 0x85, 0xf2, 0x7e,
-0x6a, 0x38, 0x3f, 0x4c, 0xed, 0x24, 0xc5, 0xff,
-0xc3, 0x0c, 0x3c, 0x10, 0x26, 0x56, 0xd2, 0xa6,
-0xaa, 0x50, 0x97, 0x4d, 0x22, 0x7e, 0x7f, 0x00,
-0x8f, 0xad, 0xcb, 0x5f, 0x2b, 0x74, 0xe7, 0x85,
-0x10, 0x22, 0x99, 0xe4, 0x0f, 0xcb, 0x5c, 0x11,
-0xe2, 0xeb, 0x63, 0x6b, 0x10, 0x7d, 0xca, 0x1f,
-0xf1, 0x34, 0xdd, 0xd5, 0x5c, 0xf3, 0x49, 0xf3,
-0xdb, 0xea, 0xcb, 0x60, 0xed, 0xe6, 0xe7, 0x45,
-0x75, 0x33, 0x5e, 0x3a, 0x6a, 0xe6, 0x87, 0xe4,
-0xfe, 0x9f, 0xde, 0x9b, 0x47, 0xf3, 0x47, 0x95,
-0x8b, 0x1c, 0xf6, 0x34, 0x35, 0xe9, 0xd1, 0x73,
-0x50, 0x29, 0xdd, 0xcc, 0xfd, 0x5d, 0xe3, 0xea,
-0x02, 0x66, 0xd3, 0xcc, 0xfc, 0x48, 0xab, 0xae,
-0xc0, 0x25, 0x75, 0x3e, 0x0b, 0xd4, 0xd5, 0x9c,
-0x0d, 0x19, 0x1b, 0x69, 0x14, 0xf7, 0xcf, 0x25,
-0x69, 0x6e, 0xf4, 0xae, 0x57, 0x73, 0x5c, 0xfe,
-0x81, 0xa6, 0x52, 0xd7, 0x92, 0xfe, 0x9a, 0x24,
-0xfe, 0xe9, 0xcb, 0xfb, 0x14, 0x76, 0xd7, 0xdb,
-0x7d, 0x34, 0x80, 0xf2, 0x27, 0x1e, 0x08, 0xfb,
-0x94, 0xd3, 0x20, 0x44, 0xe5, 0x26, 0xbb, 0xaa,
-0x07, 0x1a, 0xed, 0x54, 0x6e, 0x36, 0xf5, 0x87,
-0x3d, 0x08, 0x03, 0xd0, 0xad, 0x38, 0x42, 0xf5,
-0x90, 0xae, 0xb3, 0x38, 0xed, 0xf3, 0x00, 0x67,
-0x4f, 0xd3, 0x33, 0xb2, 0x09, 0x14, 0x06, 0xc0,
-0x51, 0x27, 0xa7, 0x93, 0xee, 0x64, 0xfe, 0x4f,
-0xda, 0x36, 0xe8, 0xc9, 0xb3, 0x47, 0xe9, 0x36,
-0x14, 0x3b, 0xf3, 0x63, 0xb4, 0xd2, 0x9c, 0x1f,
-0xa0, 0xa8, 0x57, 0x0e, 0x58, 0x66, 0xa0, 0x3c,
-0x6f, 0xd5, 0xe4, 0x76, 0xd2, 0x93, 0x90, 0x0f,
-0xd5, 0x53, 0x78, 0x7f, 0xd2, 0x79, 0xdc, 0x09,
-0x7c, 0xfa, 0xef, 0x12, 0xb4, 0xcc, 0x17, 0x19,
-0x22, 0x96, 0x56, 0xd1, 0xbe, 0xb6, 0x6f, 0xc3,
-0x0d, 0x4e, 0xdb, 0x66, 0x79, 0x93, 0xa9, 0x3f,
-0xec, 0x3e, 0x8e, 0x9f, 0x61, 0xfd, 0x20, 0x82,
-0x1c, 0xbe, 0x31, 0x32, 0xc3, 0x05, 0x97, 0xe8,
-0x55, 0x98, 0x6b, 0xf4, 0x1f, 0x44, 0x41, 0xf3,
-0x35, 0xbe, 0x3e, 0xf5, 0xc9, 0xfe, 0xb3, 0xbc,
-0x3f, 0xac, 0xe2, 0x6e, 0xb1, 0x36, 0x8b, 0x21,
-0x76, 0x71, 0xa2, 0xff, 0xa9, 0x31, 0xd8, 0x24,
-0x16, 0xb2, 0x61, 0x09, 0x45, 0xd3, 0x2e, 0xf1,
-0x7c, 0x42, 0xfe, 0xe8, 0xb8, 0x1f, 0x7a, 0x26,
-0xab, 0x7d, 0xf4, 0x77, 0x1b, 0xbf, 0xce, 0x8c,
-0x8d, 0x31, 0x4a, 0x78, 0xe3, 0xc5, 0x2c, 0x5d,
-0x6e, 0x6f, 0x9d, 0xce, 0x55, 0xd5, 0x26, 0x54,
-0x55, 0xa9, 0xf1, 0xaf, 0x1e, 0x2d, 0x14, 0xa6,
-0x79, 0x44, 0x9b, 0x68, 0xa3, 0x63, 0xc5, 0x15,
-0xb3, 0xea, 0x72, 0xa7, 0xbf, 0xa4, 0x76, 0xcb,
-0xaf, 0xad, 0x9d, 0x72, 0xa1, 0x96, 0xe4, 0x47,
-0x1a, 0x55, 0xb8, 0x3f, 0x39, 0x3f, 0xea, 0x88,
-0x58, 0xee, 0x61, 0x71, 0x5a, 0x6c, 0xce, 0x17,
-0x8d, 0x83, 0x3b, 0x49, 0xb6, 0xf2, 0x12, 0x0f,
-0x84, 0xd5, 0x99, 0xf9, 0x01, 0xe8, 0xe2, 0x8c,
-0xcf, 0xc0, 0xb5, 0xcd, 0xa9, 0xe4, 0x2c, 0x6c,
-0xfc, 0x0c, 0x38, 0x3f, 0x00, 0x02, 0xc5, 0x73,
-0x50, 0xa1, 0xdb, 0xa0, 0x46, 0xd2, 0x4f, 0xf3,
-0x81, 0x22, 0x1e, 0x4b, 0xf2, 0x03, 0xc4, 0xe2,
-0x5f, 0xec, 0x1f, 0x7b, 0x79, 0xff, 0x5c, 0x05,
-0x81, 0xcd, 0xa8, 0x8c, 0x27, 0x88, 0x03, 0x21,
-0x5d, 0x3c, 0x5f, 0x6b, 0x04, 0xc2, 0x10, 0x48,
-0x27, 0xe5, 0x73, 0x2c, 0xfe, 0xc5, 0x6c, 0x79,
-0x62, 0x61, 0x6c, 0x59, 0x46, 0x8d, 0x7e, 0xcd,
-0xdd, 0x7c, 0x50, 0x0e, 0x17, 0xf3, 0x2b, 0x17,
-0xda, 0xa2, 0xe2, 0xc1, 0x24, 0xfe, 0x89, 0xc5,
-0xbf, 0x98, 0xec, 0xcd, 0x9e, 0x2a, 0xc4, 0x02,
-0x61, 0x24, 0xce, 0xb7, 0xdf, 0xe0, 0xc9, 0x93,
-0x76, 0x29, 0xc5, 0xbd, 0x68, 0x4f, 0x9d, 0x4b,
-0xf0, 0x9f, 0xc4, 0xf2, 0x7f, 0xf0, 0xa5, 0x96,
-0x92, 0x1b, 0x27, 0x68, 0xc0, 0xdf, 0x85, 0x1d,
-0xb8, 0x02, 0x72, 0x1e, 0xb9, 0x0e, 0x5e, 0x0e,
-0x3f, 0xe0, 0xc3, 0x2b, 0x83, 0xa6, 0xf8, 0xd7,
-0x80, 0xb4, 0x63, 0x33, 0x1a, 0x59, 0xd9, 0x64,
-0x56, 0xa2, 0x2d, 0x11, 0xec, 0x08, 0xa8, 0xfa,
-0x8d, 0x9b, 0x88, 0xa4, 0xee, 0xe0, 0x3b, 0x76,
-0x8a, 0xff, 0xed, 0x24, 0x3f, 0xc0, 0x94, 0x61,
-0x4e, 0x13, 0xd1, 0x25, 0x47, 0x6f, 0x28, 0x8f,
-0x05, 0xc2, 0xb8, 0xbc, 0xbd, 0xa2, 0xbb, 0xd9,
-0xfa, 0x4f, 0xc5, 0x79, 0xec, 0x42, 0xa8, 0x32,
-0x6c, 0x1b, 0x16, 0x2f, 0x24, 0xf9, 0x01, 0x62,
-0xf1, 0x2f, 0x5e, 0x94, 0xcd, 0x15, 0x71, 0xdc,
-0x1f, 0xd2, 0xa3, 0xe0, 0x60, 0xb5, 0x6c, 0x34,
-0x8e, 0xbf, 0xce, 0xf0, 0xff, 0x4c, 0x3c, 0x3f,
-0x8f, 0x7f, 0x9d, 0x55, 0xdc, 0xf5, 0x3c, 0xff,
-0xa7, 0xf6, 0xad, 0x09, 0xff, 0xc0, 0x59, 0xa3,
-0x51, 0xac, 0x98, 0x26, 0x1d, 0x10, 0x2a, 0x7b,
-0xad, 0xd9, 0xa2, 0x39, 0xff, 0x07, 0xf1, 0x8f,
-0x47, 0xfd, 0x11, 0x82, 0x1c, 0xae, 0x4f, 0x93,
-0x6d, 0xce, 0xb8, 0xbe, 0x2e, 0xe4, 0x1d, 0x67,
-0x6a, 0x1d, 0x66, 0xff, 0x4f, 0xb9, 0xc0, 0xbb,
-0x87, 0xd8, 0xb5, 0xfa, 0x0d, 0x9e, 0x11, 0xf5,
-0xc9, 0xe4, 0xfc, 0x0e, 0x7e, 0x4c, 0x0a, 0x09,
-0x67, 0x98, 0x47, 0x41, 0x94, 0x95, 0x1a, 0xff,
-0xd2, 0x0c, 0x6b, 0xeb, 0x35, 0x88, 0xa5, 0x01,
-0x1b, 0xf5, 0xf2, 0x46, 0x86, 0x30, 0x67, 0x8c,
-0x74, 0x7a, 0x69, 0xae, 0x25, 0xc9, 0x0f, 0xb0,
-0x32, 0xce, 0x8f, 0x6d, 0xd8, 0x5f, 0x27, 0x26,
-0xde, 0xd7, 0x60, 0xcc, 0x0e, 0xa1, 0xd8, 0x44,
-0xfb, 0x8b, 0xcb, 0x9f, 0xac, 0x44, 0x7f, 0x58,
-0x1e, 0xff, 0xba, 0xac, 0xbd, 0xe2, 0xfd, 0xfb,
-0xc1, 0xaf, 0x7d, 0x4e, 0x8d, 0xfa, 0x77, 0x23,
-0xfe, 0xc5, 0xdd, 0x3e, 0xc7, 0x73, 0x3e, 0x37,
-0x1a, 0x61, 0xd8, 0x8e, 0xd7, 0x9c, 0xc9, 0x35,
-0xc7, 0xbf, 0x2e, 0x53, 0xee, 0xed, 0xa9, 0x99,
-0x13, 0x4a, 0xf8, 0x4f, 0x2e, 0x5b, 0xdc, 0x5a,
-0xe6, 0x1f, 0xc4, 0x39, 0xda, 0x01, 0xa8, 0xaa,
-0xb5, 0x1d, 0xbb, 0x36, 0xfe, 0xa5, 0xd9, 0x39,
-0x09, 0x52, 0x3e, 0x33, 0xfc, 0x3f, 0xcd, 0x1e,
-0xee, 0x11, 0x2a, 0x03, 0xf9, 0x59, 0x4b, 0xbe,
-0x27, 0x22, 0x95, 0x40, 0xdb, 0x6a, 0x7f, 0x56,
-0xa2, 0xbe, 0x9b, 0xe7, 0xff, 0x6c, 0x77, 0x14,
-0x7a, 0xdb, 0x15, 0x52, 0xab, 0x1a, 0x81, 0x30,
-0x5e, 0x98, 0xc0, 0x07, 0x19, 0xb9, 0x44, 0x62,
-0x1b, 0xc0, 0x51, 0x7f, 0xe3, 0x64, 0x53, 0x7f,
-0xd8, 0x76, 0x89, 0xd3, 0x32, 0xcc, 0xe0, 0xf6,
-0x8b, 0x09, 0x88, 0xf2, 0xc1, 0x8d, 0x1b, 0x49,
-0xb1, 0xd7, 0x20, 0x1e, 0xdf, 0x64, 0xe6, 0x07,
-0xe0, 0xf8, 0x27, 0xea, 0xfe, 0x27, 0x6b, 0x9e,
-0xbc, 0x9c, 0x25, 0x80, 0xae, 0x81, 0x70, 0xda,
-0x6b, 0x66, 0x28, 0x6f, 0x45, 0x6f, 0xd0, 0x6c,
-0xed, 0xf2, 0x35, 0xf1, 0xaf, 0x50, 0x8f, 0x66,
-0x7b, 0x2a, 0xe7, 0xd9, 0xc4, 0x7c, 0xe5, 0xac,
-0x32, 0x83, 0xbb, 0x7d, 0x5e, 0xa7, 0xe3, 0x21,
-0xbc, 0xf2, 0x64, 0xcd, 0xb9, 0x94, 0xf8, 0xd7,
-0x28, 0xb8, 0xa9, 0x8d, 0x35, 0xe5, 0xab, 0x27,
-0x12, 0x7c, 0x5c, 0xb1, 0x44, 0xe8, 0xfc, 0xba,
-0x13, 0x9c, 0x1f, 0xd8, 0x9f, 0xd2, 0x1f, 0xd6,
-0x01, 0xfb, 0xeb, 0x4a, 0x39, 0x1b, 0x64, 0xb9,
-0x12, 0xe7, 0x47, 0x1a, 0x86, 0x3d, 0x6a, 0x07,
-0x5b, 0xf4, 0x91, 0x65, 0xbe, 0xd4, 0x1a, 0x2a,
-0xe5, 0x44, 0x01, 0x26, 0x7e, 0x6c, 0x40, 0xfc,
-0x53, 0xa7, 0x9e, 0x97, 0x6f, 0x25, 0x56, 0xe9,
-0x71, 0xb0, 0x4e, 0xb4, 0x45, 0x03, 0xdd, 0xa2,
-0xf8, 0x25, 0x7f, 0x53, 0xa8, 0x70, 0x59, 0x46,
-0x7b, 0x76, 0x12, 0xff, 0xf0, 0xf8, 0x57, 0x37,
-0x3f, 0xad, 0xa3, 0x64, 0x1a, 0x18, 0xfd, 0x61,
-0x1b, 0xd2, 0x4f, 0xe2, 0x7a, 0xe6, 0xeb, 0x37,
-0x7a, 0x49, 0xae, 0xf5, 0x31, 0xf6, 0x83, 0x70,
-0xc6, 0x23, 0xe9, 0xc9, 0xfe, 0xb0, 0x3c, 0xfe,
-0xf5, 0x05, 0x9b, 0x8d, 0xb0, 0x27, 0xa7, 0x12,
-0xfe, 0xc8, 0x78, 0x5b, 0xd8, 0xf4, 0x77, 0x8d,
-0xb0, 0x57, 0x56, 0x44, 0x2c, 0x83, 0xf7, 0x5a,
-0x4b, 0x7d, 0xc5, 0x29, 0xfc, 0x00, 0x46, 0xfc,
-0x6b, 0x8f, 0xb6, 0xc4, 0x75, 0xcb, 0x18, 0x24,
-0x68, 0x7f, 0xc6, 0x79, 0xfc, 0x0b, 0xe5, 0x8f,
-0x32, 0xae, 0xce, 0x65, 0xa8, 0xca, 0x4d, 0xfc,
-0x90, 0xd2, 0x7e, 0xed, 0x12, 0xde, 0xf6, 0xee,
-0xb1, 0x1a, 0xce, 0x0f, 0x59, 0x15, 0xe3, 0xb7,
-0xb9, 0xc8, 0x4a, 0x63, 0x8e, 0xa0, 0x2c, 0x69,
-0x81, 0xcf, 0x7a, 0xc2, 0xd4, 0x1f, 0xf6, 0x05,
-0x94, 0x3f, 0x2f, 0x4d, 0x76, 0xfa, 0xe9, 0x32,
-0x32, 0xc0, 0xd6, 0xa0, 0x59, 0xc4, 0x61, 0x9b,
-0xb6, 0x6b, 0x67, 0x3e, 0x0f, 0x63, 0x1d, 0x87,
-0x35, 0xae, 0xe2, 0x8c, 0xcc, 0x7b, 0x88, 0xb9,
-0x3f, 0xec, 0x66, 0xe5, 0x25, 0x98, 0xa5, 0x5b,
-0x1a, 0xfc, 0xbc, 0x70, 0xa3, 0x38, 0x12, 0xe7,
-0x33, 0xc9, 0xef, 0x95, 0x7d, 0xfe, 0x93, 0xf0,
-0xec, 0xe4, 0x59, 0x9e, 0x3a, 0x73, 0xfc, 0xab,
-0x50, 0x5a, 0xab, 0x74, 0xdb, 0x9d, 0x90, 0x37,
-0x87, 0x1c, 0x30, 0x0c, 0x31, 0x83, 0x6f, 0x61,
-0x07, 0xef, 0xcf, 0x58, 0x41, 0x86, 0x1f, 0x6a,
-0xd2, 0x4a, 0x42, 0x19, 0x9d, 0x33, 0x68, 0x32,
-0x1f, 0x7b, 0xca, 0x88, 0xc2, 0xd3, 0x2a, 0xb2,
-0x42, 0xe2, 0xac, 0xb8, 0xff, 0x9c, 0x8c, 0xc4,
-0x18, 0xa1, 0xdb, 0xc5, 0xf7, 0xc9, 0x21, 0xce,
-0x48, 0xec, 0x97, 0x4d, 0xfd, 0x41, 0x84, 0x6d,
-0xf0, 0x99, 0x82, 0xd3, 0x9e, 0x15, 0xde, 0x30,
-0xad, 0x0f, 0xea, 0xbb, 0xf5, 0xc1, 0x26, 0x83,
-0xa8, 0x3f, 0x68, 0xeb, 0x30, 0xf1, 0x43, 0xf2,
-0xf8, 0xd7, 0x5f, 0x60, 0xee, 0xb3, 0x08, 0x7b,
-0x3e, 0x55, 0x8f, 0xc2, 0x2d, 0xbd, 0x69, 0x3c,
-0x1f, 0xe6, 0x62, 0xc0, 0x90, 0xe7, 0x51, 0x44,
-0x44, 0x68, 0x71, 0x30, 0xb1, 0x2e, 0x91, 0xff,
-0xcc, 0xe3, 0x5f, 0xfb, 0x58, 0x87, 0x82, 0xfa,
-0xfd, 0x23, 0xc6, 0xfb, 0x7d, 0x2c, 0x0a, 0xdb,
-0x47, 0x60, 0x77, 0x10, 0x15, 0xd9, 0x3a, 0xb4,
-0xb0, 0x02, 0x3c, 0xd1, 0x25, 0x40, 0x1c, 0x29,
-0xf8, 0x87, 0xf3, 0xf3, 0x67, 0x04, 0x48, 0x3d,
-0xe3, 0xfd, 0xb0, 0x32, 0xc2, 0x64, 0x1b, 0x3f,
-0x2f, 0xbd, 0x08, 0x0c, 0x3e, 0xa2, 0x01, 0x47,
-0xd1, 0x32, 0x1a, 0xf0, 0x9b, 0xf0, 0x4f, 0xae,
-0x15, 0xc2, 0x6c, 0x06, 0x50, 0xd5, 0xde, 0x0b,
-0x5b, 0x61, 0x85, 0xe1, 0xff, 0x49, 0xdb, 0x2e,
-0x58, 0x79, 0x86, 0x8c, 0x2e, 0x31, 0xc1, 0xa9,
-0x05, 0xc0, 0xe2, 0x37, 0xf5, 0x87, 0x5d, 0x61,
-0x34, 0x81, 0xcd, 0x44, 0xb3, 0x0b, 0xd7, 0x67,
-0xde, 0xc9, 0xbb, 0x38, 0x5f, 0xd6, 0xb8, 0x3a,
-0x4d, 0x8f, 0x3b, 0xa2, 0x2b, 0xb9, 0x23, 0xc8,
-0x14, 0xff, 0x9a, 0xc2, 0xbb, 0x9f, 0xcc, 0xe7,
-0x4d, 0x0a, 0xc6, 0xd8, 0x55, 0x52, 0x39, 0x60,
-0x1b, 0x9d, 0x84, 0x57, 0x62, 0xfa, 0x6b, 0xd4,
-0x70, 0x04, 0xad, 0xd7, 0xc5, 0x7a, 0x53, 0xfe,
-0x33, 0xe7, 0x87, 0x2c, 0x8e, 0x5a, 0xf5, 0x49,
-0x2e, 0x58, 0xab, 0xcc, 0xd7, 0xad, 0x1f, 0x8a,
-0x15, 0xbe, 0xa3, 0x50, 0x15, 0x58, 0x1b, 0x10,
-0xe7, 0x04, 0x0e, 0xb3, 0x02, 0xe0, 0xfc, 0x90,
-0xe6, 0xf8, 0x17, 0xec, 0xe5, 0xfd, 0xeb, 0x03,
-0xbc, 0x3f, 0xa3, 0x7a, 0xcb, 0xc9, 0x4c, 0x95,
-0x2c, 0x80, 0xb6, 0xc7, 0x4b, 0x3a, 0x1d, 0x2a,
-0x29, 0xd2, 0x9e, 0xb7, 0xdb, 0x97, 0x5a, 0x7a,
-0xfe, 0x15, 0xff, 0x0f, 0x85, 0x74, 0x89, 0x30,
-0x70, 0xbc, 0x6a, 0xe9, 0xb0, 0x5b, 0x59, 0x93,
-0xe4, 0x64, 0x14, 0x6e, 0xb0, 0x0a, 0x3b, 0xa8,
-0x7a, 0x8f, 0x83, 0xe7, 0xff, 0x98, 0xfc, 0x3f,
-0xb9, 0x08, 0x1b, 0xfa, 0x21, 0x7c, 0xc7, 0x24,
-0xf0, 0x43, 0x91, 0x3e, 0xb9, 0xab, 0x75, 0x71,
-0x76, 0x9b, 0x54, 0x12, 0xa2, 0x15, 0xf6, 0x99,
-0xda, 0x5e, 0x62, 0xd7, 0x2c, 0xe1, 0x6b, 0xfa,
-0x83, 0x70, 0xb5, 0xeb, 0x0c, 0xdb, 0x54, 0x8a,
-0xeb, 0xa3, 0x67, 0x39, 0x10, 0x9f, 0x2c, 0x82,
-0x69, 0x5d, 0x8b, 0xb7, 0xd5, 0x14, 0xc3, 0x59,
-0xda, 0x1d, 0xa2, 0xae, 0xd4, 0xf8, 0x17, 0x35,
-0xc2, 0x3a, 0x83, 0x08, 0xea, 0x0c, 0x47, 0x47,
-0x34, 0x87, 0x6b, 0x7c, 0x9e, 0xef, 0x9a, 0x73,
-0x02, 0xfe, 0xb2, 0xb5, 0xaa, 0x73, 0x49, 0x4a,
-0x7f, 0x58, 0x05, 0xd1, 0x0e, 0x9e, 0x3e, 0x29,
-0x5f, 0x7e, 0xa0, 0x79, 0xac, 0x76, 0x81, 0x9e,
-0xb9, 0xf3, 0x6f, 0x9d, 0xd2, 0xc7, 0x90, 0x1d,
-0xb4, 0x6e, 0x13, 0x9d, 0xca, 0xa1, 0xba, 0x0a,
-0xfd, 0xda, 0xfe, 0xb0, 0x1c, 0x0f, 0x9f, 0xa1,
-0xe1, 0x9a, 0x12, 0x6e, 0x7f, 0xf5, 0x66, 0x71,
-0x47, 0xd0, 0x7a, 0xc4, 0xff, 0x75, 0x21, 0x52,
-0xd4, 0xd7, 0xa6, 0xcf, 0xeb, 0xb3, 0xa4, 0xf4,
-0x87, 0x35, 0xec, 0xaf, 0x12, 0xdd, 0x42, 0xaf,
-0x93, 0x21, 0xcc, 0x1d, 0x41, 0x2a, 0xe2, 0x9f,
-0x26, 0xc9, 0x51, 0x47, 0x01, 0xd5, 0x56, 0xf6,
-0x31, 0x27, 0xd0, 0xd4, 0xfe, 0xb0, 0xd3, 0x0c,
-0x9a, 0xe8, 0xa2, 0xba, 0xec, 0x69, 0xd2, 0xce,
-0x4e, 0xc4, 0x03, 0x3f, 0xc8, 0x9e, 0xb6, 0x7a,
-0x0d, 0x9b, 0x69, 0xa7, 0x0f, 0x90, 0x79, 0xda,
-0x2f, 0x43, 0x33, 0x7d, 0x96, 0x95, 0x29, 0xf9,
-0x3f, 0x59, 0x08, 0x3b, 0xf1, 0x7c, 0x81, 0x48,
-0x43, 0x67, 0xa3, 0x15, 0xfa, 0xaf, 0x67, 0x5a,
-0x9c, 0xf0, 0x6a, 0x63, 0x79, 0xbf, 0x53, 0x96,
-0xad, 0xf0, 0xfb, 0x70, 0xa5, 0xd7, 0xea, 0x32,
-0xf3, 0x63, 0x67, 0xc6, 0xfc, 0x63, 0x3f, 0x68,
-0x10, 0x0c, 0xc3, 0xa1, 0x2f, 0x2b, 0x2a, 0x5e,
-0x0a, 0xff, 0x11, 0xbe, 0xd6, 0x6c, 0xd3, 0x2d,
-0x27, 0x94, 0xbf, 0xa0, 0x3e, 0xca, 0xbc, 0xb6,
-0x3f, 0x2c, 0x5f, 0xff, 0x92, 0x70, 0x8e, 0x8a,
-0xfb, 0xb3, 0xea, 0x84, 0xd4, 0x25, 0xae, 0x50,
-0x3f, 0x36, 0xdc, 0x92, 0xb2, 0x53, 0x3a, 0x40,
-0x0d, 0xc6, 0xce, 0x8f, 0xcc, 0xf1, 0x2f, 0x23,
-0x7f, 0x80, 0x7a, 0x49, 0xb3, 0x84, 0xf2, 0xe4,
-0x20, 0xd5, 0x2c, 0x53, 0xfd, 0x6b, 0x7c, 0xd3,
-0x41, 0xf6, 0x71, 0x06, 0x7e, 0x32, 0x2b, 0xb5,
-0xfe, 0x4b, 0x8f, 0xe1, 0x9f, 0xa8, 0xc5, 0x31,
-0x78, 0x83, 0xb2, 0x8a, 0x39, 0xa3, 0x74, 0xd8,
-0x3e, 0x8d, 0xad, 0x61, 0xc5, 0xaa, 0x5c, 0x67,
-0xff, 0x2e, 0x59, 0x13, 0x28, 0xe6, 0x19, 0xd1,
-0xa3, 0x29, 0xfe, 0x1f, 0xdc, 0x6f, 0xb7, 0xd7,
-0xcd, 0x59, 0x58, 0x42, 0x9a, 0x98, 0x53, 0xaf,
-0xc7, 0xf5, 0x94, 0x9a, 0xa0, 0xb0, 0x03, 0xcf,
-0xd7, 0x61, 0x78, 0x91, 0x39, 0xef, 0xa5, 0xa9,
-0xfd, 0x61, 0xbb, 0x38, 0xec, 0x09, 0x65, 0x45,
-0x73, 0xe6, 0x91, 0x23, 0x37, 0xa0, 0x36, 0x3f,
-0x23, 0x3a, 0xe0, 0x23, 0xa8, 0xea, 0xb1, 0x0d,
-0x6f, 0xfd, 0x71, 0xe1, 0xc1, 0x37, 0xab, 0x76,
-0x5a, 0x53, 0xf2, 0x7f, 0x12, 0xfe, 0x9f, 0xa6,
-0x28, 0xc2, 0xd2, 0x4a, 0x81, 0x0f, 0x8c, 0x2b,
-0x32, 0x6b, 0xda, 0xe2, 0x30, 0x42, 0x45, 0x5f,
-0xe9, 0x0f, 0xcb, 0xab, 0xbd, 0x26, 0x1b, 0x65,
-0x5f, 0xf3, 0xb4, 0x69, 0xc1, 0x9c, 0x7e, 0x89,
-0x37, 0x0a, 0x59, 0xdf, 0xae, 0x49, 0x70, 0xa8,
-0xd3, 0x55, 0xf7, 0xd5, 0xfe, 0x20, 0x1c, 0x84,
-0xb4, 0x5b, 0xa6, 0xc3, 0x01, 0x81, 0x13, 0x35,
-0x93, 0x21, 0xa9, 0xc5, 0xa0, 0x79, 0xb4, 0x7c,
-0x1d, 0xde, 0x62, 0x76, 0x5f, 0x66, 0xf0, 0xda,
-0xfe, 0x20, 0xa8, 0x9d, 0x39, 0x3f, 0x36, 0x69,
-0xe1, 0x6e, 0x64, 0x4e, 0x23, 0xd9, 0xc2, 0x23,
-0x68, 0x93, 0x5b, 0x3b, 0x7d, 0x2d, 0x82, 0x41,
-0xec, 0x7c, 0x0d, 0x3f, 0x24, 0xac, 0xe0, 0xd9,
-0xce, 0x99, 0x46, 0xb6, 0x33, 0xcd, 0x25, 0xaf,
-0x11, 0x41, 0xe0, 0xc0, 0x20, 0xbd, 0x19, 0x36,
-0xe0, 0x95, 0x7c, 0xe5, 0x2b, 0xfd, 0x41, 0x2a,
-0xc0, 0x3a, 0x11, 0xed, 0x72, 0xf0, 0x7c, 0xef,
-0x00, 0x7f, 0x4d, 0xc0, 0x2b, 0x07, 0x81, 0x07,
-0x62, 0xae, 0xe9, 0x0f, 0xc2, 0xdb, 0x82, 0xcc,
-0x3a, 0x2e, 0x5e, 0x86, 0x4f, 0x6a, 0xcb, 0xbc,
-0x93, 0xbc, 0x05, 0x1f, 0x28, 0x3f, 0xe6, 0x6d,
-0x61, 0x07, 0x6b, 0xfe, 0x86, 0x8e, 0x93, 0x2a,
-0xaf, 0xed, 0xda, 0xfe, 0x20, 0xe3, 0xb0, 0xa0,
-0x36, 0x6b, 0x10, 0xad, 0xb3, 0x03, 0xb4, 0x68,
-0xe1, 0x02, 0xee, 0x18, 0x39, 0x8c, 0x62, 0x39,
-0x3d, 0x98, 0x33, 0x87, 0xbd, 0x06, 0x55, 0x8b,
-0xe9, 0xb5, 0xfc, 0xd8, 0x86, 0xff, 0xa7, 0x99,
-0xdc, 0x4f, 0x02, 0x0e, 0x7b, 0x1e, 0x0d, 0x11,
-0xde, 0x2f, 0xa3, 0x84, 0xa7, 0x4d, 0x86, 0x68,
-0x97, 0x5a, 0xb2, 0xb6, 0x28, 0x95, 0x1f, 0xbb,
-0xdf, 0x8a, 0xef, 0xab, 0x59, 0xf0, 0x35, 0xd5,
-0x46, 0xa8, 0xf7, 0xa0, 0x5a, 0x37, 0x3a, 0x86,
-0xdc, 0xbe, 0x08, 0xf5, 0xbb, 0x67, 0x43, 0xd7,
-0x8a, 0x48, 0x06, 0xbe, 0x6f, 0x9a, 0xc9, 0xff,
-0xa3, 0xe0, 0xfa, 0xfb, 0xe8, 0xe6, 0xf4, 0xd7,
-0x85, 0x16, 0x2f, 0xd1, 0x2c, 0xc1, 0xf4, 0x21,
-0xe9, 0x7a, 0x09, 0x81, 0xd0, 0xe4, 0x8e, 0x67,
-0xe1, 0x79, 0x56, 0x52, 0x27, 0x07, 0xd3, 0x5f,
-0xff, 0xaa, 0xff, 0x87, 0xc3, 0x98, 0x03, 0xd5,
-0xf3, 0xb4, 0xac, 0xcd, 0x1c, 0xb8, 0x8a, 0x95,
-0xda, 0xb4, 0xcd, 0xe2, 0x8c, 0x99, 0x88, 0x6f,
-0xb5, 0xe2, 0xe0, 0xb7, 0x86, 0xbf, 0xe2, 0xff,
-0xe1, 0xf9, 0x4e, 0x12, 0xa7, 0x85, 0xcc, 0x7c,
-0xb2, 0x60, 0x88, 0x7c, 0x08, 0x3f, 0xf3, 0xae,
-0xef, 0xe1, 0x8d, 0x62, 0xa9, 0x71, 0xab, 0xaf,
-0xfa, 0x7f, 0x50, 0xfe, 0x6f, 0x81, 0x88, 0x86,
-0x86, 0x5e, 0x73, 0x8d, 0x1e, 0x8b, 0x48, 0x36,
-0xe7, 0xa8, 0x6a, 0xbc, 0xfe, 0x2e, 0x25, 0xff,
-0x47, 0x41, 0xb1, 0xb3, 0x9a, 0x76, 0x90, 0x0b,
-0xd0, 0x0a, 0x2f, 0xf0, 0xb4, 0x67, 0xc4, 0x3f,
-0x85, 0xff, 0xc8, 0xfb, 0x83, 0x5c, 0x4f, 0xd6,
-0xe9, 0x76, 0x46, 0xa3, 0x62, 0xeb, 0xb5, 0xfe,
-0x9f, 0x68, 0x46, 0x1e, 0xf7, 0x97, 0x0a, 0xcb,
-0x7b, 0x05, 0x57, 0xfa, 0x40, 0xee, 0x8e, 0x26,
-0xc3, 0x70, 0x10, 0xa0, 0xa9, 0x77, 0x06, 0xf7,
-0x97, 0xa6, 0xf4, 0x87, 0x35, 0xda, 0x82, 0x04,
-0x1a, 0xd2, 0x0f, 0xc0, 0x13, 0xea, 0x03, 0x91,
-0x8c, 0x1f, 0xd9, 0x4f, 0xf2, 0xfe, 0x3e, 0x9a,
-0xfc, 0x48, 0x76, 0x5e, 0xce, 0x1a, 0x7d, 0x3a,
-0xf7, 0xff, 0x74, 0x99, 0xfd, 0x3f, 0xb0, 0xab,
-0x71, 0x41, 0xf4, 0xae, 0x95, 0xe2, 0xd3, 0xf0,
-0x6a, 0x68, 0xee, 0x98, 0xf5, 0xd1, 0x57, 0xdf,
-0x0b, 0x7d, 0x89, 0x16, 0xcd, 0xfa, 0x95, 0x6d,
-0x37, 0x40, 0x3f, 0xdb, 0x15, 0x75, 0xd6, 0x5f,
-0xc3, 0x8f, 0xbd, 0x97, 0x9f, 0x2f, 0x5e, 0xc6,
-0xf2, 0xb1, 0xd7, 0x3d, 0x68, 0xeb, 0xce, 0x19,
-0x11, 0xf6, 0x4a, 0x59, 0xc2, 0x92, 0x67, 0x49,
-0x84, 0xe7, 0x9b, 0x71, 0x8f, 0x90, 0x99, 0x1f,
-0x3b, 0x16, 0xbf, 0xc8, 0x1a, 0xcb, 0xf9, 0x27,
-0x58, 0xa2, 0xff, 0x68, 0xf4, 0xe9, 0x71, 0xf1,
-0x8a, 0xf6, 0xd8, 0x86, 0xd2, 0xe8, 0x63, 0x63,
-0x19, 0xd9, 0x10, 0xf1, 0x97, 0x46, 0x9d, 0xc3,
-0x66, 0x7e, 0x6c, 0x83, 0x9f, 0xb6, 0x18, 0x78,
-0x7f, 0x6a, 0xd6, 0xa6, 0xde, 0x1a, 0x91, 0x67,
-0xfb, 0x2f, 0x69, 0x8d, 0xca, 0x4c, 0xaf, 0xec,
-0xf1, 0xe4, 0x41, 0x20, 0x94, 0x5f, 0x83, 0xcf,
-0x6f, 0xe2, 0xc7, 0x56, 0x62, 0xf2, 0xca, 0x32,
-0x87, 0x4c, 0x91, 0xd6, 0x08, 0x31, 0x37, 0x97,
-0xf4, 0x0b, 0xc8, 0xf7, 0xa3, 0xbc, 0xba, 0x4f,
-0x5b, 0xa3, 0x1a, 0xfe, 0x2e, 0x33, 0x3f, 0xb6,
-0xe1, 0xcf, 0x57, 0xe9, 0x6d, 0x16, 0x87, 0xd0,
-0x24, 0x15, 0x22, 0x7e, 0x30, 0x12, 0x5d, 0x1c,
-0xd0, 0xa6, 0x5a, 0xee, 0xa4, 0x4d, 0x7e, 0xb5,
-0x01, 0x15, 0xa5, 0x99, 0x1f, 0x1b, 0xf1, 0x9e,
-0x54, 0x19, 0x4d, 0x47, 0xb3, 0x9a, 0x1c, 0x85,
-0x02, 0x7d, 0x1a, 0xc7, 0x27, 0x4f, 0x12, 0x7b,
-0xa7, 0x2d, 0xfc, 0x8d, 0x3a, 0xa2, 0x0b, 0xdd,
-0x83, 0x8b, 0x43, 0xa9, 0xfd, 0x61, 0xb9, 0xbc,
-0xdd, 0x34, 0x8b, 0xf7, 0x4b, 0xbd, 0x88, 0x40,
-0xe8, 0x66, 0x9e, 0x1f, 0x8e, 0x86, 0x86, 0xd7,
-0xf6, 0x6e, 0xcd, 0xb3, 0x8e, 0x8b, 0xf7, 0x54,
-0x44, 0x78, 0xa8, 0x3a, 0x25, 0xfe, 0xc5, 0xe5,
-0xb9, 0x75, 0x6c, 0xd2, 0x30, 0x7b, 0x03, 0xef,
-0xbf, 0x7e, 0x54, 0xae, 0x80, 0x5e, 0x98, 0x8d,
-0xdf, 0x3c, 0xa7, 0x1c, 0x0e, 0xb3, 0x6c, 0xdd,
-0x1a, 0x4d, 0xed, 0x0f, 0xc2, 0xbb, 0x99, 0x70,
-0x5a, 0xec, 0x28, 0x69, 0x8b, 0xc5, 0xb3, 0x9c,
-0x28, 0x4f, 0xca, 0x5c, 0x01, 0xe7, 0xc6, 0x99,
-0xac, 0x15, 0x0d, 0x2b, 0x7e, 0xe2, 0x52, 0xf0,
-0x0f, 0xc2, 0xa4, 0x65, 0x96, 0xed, 0xd9, 0x43,
-0x46, 0x3f, 0xd0, 0x36, 0xee, 0xd8, 0x79, 0x92,
-0x33, 0x1c, 0xfa, 0x89, 0x63, 0x63, 0xe0, 0x9b,
-0x45, 0x11, 0x3e, 0xdf, 0xec, 0xff, 0xe1, 0xeb,
-0x03, 0x16, 0x17, 0x9a, 0x21, 0x4d, 0x31, 0x7f,
-0x88, 0x55, 0x68, 0x84, 0x42, 0x2d, 0xc0, 0x50,
-0x09, 0xb5, 0x51, 0x87, 0x8e, 0xeb, 0x63, 0xe2,
-0xc7, 0x4e, 0x5b, 0xa1, 0x19, 0x6d, 0x70, 0x79,
-0x3d, 0xd1, 0x51, 0xef, 0xcf, 0x75, 0xdb, 0xe7,
-0x62, 0x05, 0xbc, 0x75, 0x0f, 0x6e, 0x7b, 0x90,
-0x1d, 0xf4, 0x80, 0x30, 0x4f, 0x77, 0x86, 0x4c,
-0xfc, 0xd8, 0xa1, 0x29, 0x97, 0xd8, 0x55, 0x58,
-0x00, 0xc5, 0xa3, 0x9c, 0x0d, 0x5b, 0xdd, 0xc5,
-0xdb, 0x5e, 0x70, 0x44, 0x84, 0xb0, 0xa7, 0xaf,
-0x69, 0x8c, 0x53, 0x01, 0x6b, 0x68, 0x8f, 0xa7,
-0xc6, 0xbf, 0x3e, 0xe7, 0xfc, 0xa2, 0x67, 0xc5,
-0x13, 0xec, 0xaa, 0x56, 0x5a, 0x6b, 0x1d, 0x13,
-0x1f, 0x81, 0xf7, 0x54, 0x1e, 0x11, 0xbb, 0xc5,
-0xd5, 0x3f, 0xe0, 0xaf, 0x92, 0x96, 0xf4, 0xa5,
-0xe6, 0xff, 0xc0, 0xee, 0xa2, 0x82, 0x41, 0xfa,
-0xdf, 0xc8, 0x27, 0xec, 0x57, 0x12, 0x4a, 0xd7,
-0x1e, 0x52, 0x08, 0xeb, 0x83, 0x68, 0x56, 0x77,
-0x93, 0xe9, 0x3a, 0xe2, 0xc3, 0xa5, 0x72, 0x8b,
-0x3d, 0x15, 0xff, 0xec, 0x56, 0xd5, 0x7e, 0x54,
-0x3a, 0x75, 0xbe, 0xbd, 0x21, 0xf5, 0x4e, 0x8b,
-0x2b, 0xbb, 0x56, 0x79, 0x3c, 0xe6, 0x01, 0x03,
-0xa9, 0xb1, 0x79, 0xc5, 0xf5, 0x32, 0xa4, 0x93,
-0xc9, 0x29, 0xf9, 0x3f, 0x31, 0x36, 0xce, 0x0f,
-0x78, 0xa2, 0x78, 0x5d, 0x11, 0x2f, 0x6c, 0x6f,
-0x8b, 0x39, 0x82, 0x8a, 0xf2, 0x03, 0xea, 0x83,
-0xaa, 0xdc, 0x93, 0x6e, 0xc2, 0x3f, 0x53, 0x10,
-0xfd, 0xea, 0xb3, 0xf5, 0xc5, 0xa3, 0x39, 0x0f,
-0xc3, 0x15, 0x56, 0x5a, 0x97, 0x15, 0x16, 0xef,
-0x30, 0x1a, 0x95, 0xe2, 0x09, 0x2a, 0x10, 0x0e,
-0xb2, 0xca, 0xd9, 0x4b, 0x5a, 0x6b, 0x52, 0xf3,
-0x7f, 0x2e, 0x57, 0x57, 0xe9, 0xb3, 0x46, 0xe1,
-0x61, 0xed, 0x42, 0xb0, 0x2a, 0x8a, 0xda, 0xfc,
-0x0b, 0xaf, 0x81, 0x88, 0xc6, 0x5f, 0xed, 0x4f,
-0xbf, 0xc4, 0x2a, 0xfd, 0xeb, 0x35, 0x39, 0x35,
-0xfe, 0x35, 0xe6, 0x75, 0xf7, 0x2d, 0x0e, 0xcb,
-0xd3, 0x21, 0xc2, 0xd0, 0x2c, 0x0d, 0x8b, 0x43,
-0x9a, 0xd1, 0x28, 0x96, 0xa1, 0x46, 0xc3, 0x81,
-0xe2, 0xdc, 0x74, 0x0d, 0xfe, 0xd9, 0xae, 0x17,
-0xe8, 0xf5, 0x9f, 0xf7, 0x15, 0xc2, 0x20, 0x18,
-0x69, 0x4e, 0x67, 0xe0, 0xbd, 0x58, 0x47, 0xce,
-0xaf, 0x73, 0x6a, 0x3b, 0x07, 0x6a, 0xa8, 0x6b,
-0xf0, 0x4f, 0x44, 0x1d, 0xa5, 0xe5, 0x68, 0x94,
-0x89, 0xa0, 0x72, 0xf6, 0x81, 0xd7, 0xfc, 0xbc,
-0x3f, 0x51, 0xc6, 0xad, 0x24, 0x43, 0x0d, 0x82,
-0x93, 0x05, 0xae, 0xc1, 0x3f, 0xf0, 0x3b, 0x96,
-0x3f, 0x44, 0x57, 0x7a, 0x6e, 0x24, 0x4f, 0x34,
-0x7f, 0x2f, 0x6a, 0x59, 0xe9, 0x7f, 0x57, 0x7b,
-0x62, 0x8b, 0xd1, 0x38, 0x35, 0xdb, 0xe8, 0xa0,
-0x4a, 0x17, 0x92, 0xd4, 0xfe, 0x20, 0x67, 0xc1,
-0xdd, 0x47, 0xdd, 0xa2, 0x35, 0xf4, 0xaa, 0x1a,
-0xee, 0xb7, 0xb9, 0xc4, 0x21, 0xcf, 0xab, 0x6c,
-0xaa, 0x9e, 0xd9, 0x2d, 0xd2, 0x65, 0x6f, 0x4e,
-0xaa, 0xf0, 0x2e, 0x2e, 0x4f, 0xe9, 0x0f, 0xb2,
-0x0f, 0x7e, 0x07, 0x25, 0x7d, 0x46, 0x74, 0xef,
-0x2a, 0x54, 0xf4, 0xde, 0x64, 0xf0, 0x43, 0x5a,
-0x16, 0xe8, 0x25, 0xa3, 0xf2, 0x98, 0xc6, 0xf1,
-0x8f, 0xed, 0xab, 0xf8, 0xc7, 0x7d, 0x2c, 0xeb,
-0x65, 0x34, 0x72, 0x0f, 0x05, 0x8d, 0xf8, 0x35,
-0x4f, 0xd4, 0x7f, 0x54, 0xb7, 0xf5, 0xd4, 0xcc,
-0x91, 0xf6, 0x04, 0xd0, 0xb4, 0xd7, 0xaf, 0xc1,
-0x3f, 0x2f, 0xc1, 0x16, 0xdd, 0xe1, 0x6e, 0xa5,
-0xbc, 0xdf, 0x10, 0x2f, 0xac, 0x38, 0x49, 0x9a,
-0x1c, 0x5c, 0xb0, 0x88, 0x86, 0x3f, 0x59, 0xa7,
-0xda, 0x35, 0xf8, 0xe7, 0x25, 0x56, 0x38, 0xcc,
-0xe3, 0x7d, 0xc2, 0xe3, 0xb1, 0x7c, 0xa7, 0xd7,
-0x61, 0x4d, 0x68, 0x66, 0x54, 0x1e, 0x26, 0xd7,
-0x09, 0xff, 0xbc, 0x41, 0xbd, 0x3f, 0xb0, 0x34,
-0x15, 0xff, 0x48, 0xbb, 0xc1, 0xe8, 0x47, 0x63,
-0x53, 0x77, 0x44, 0x0a, 0x43, 0xb2, 0x2b, 0x7b,
-0xc4, 0xe0, 0x6b, 0x95, 0x6f, 0x23, 0xb7, 0xa7,
-0xed, 0x60, 0x1d, 0x3e, 0x7a, 0xfd, 0x35, 0xf8,
-0xe7, 0x8a, 0x56, 0xd6, 0x88, 0x20, 0x67, 0x3e,
-0x79, 0x57, 0x7f, 0x29, 0x6c, 0xf8, 0x7f, 0x0e,
-0x42, 0x39, 0xb3, 0x7d, 0x22, 0x96, 0xb3, 0xa7,
-0x58, 0xe9, 0x46, 0xe7, 0xd0, 0xb5, 0xf8, 0x47,
-0x2a, 0x47, 0xed, 0x23, 0x9e, 0xd2, 0x86, 0x95,
-0x79, 0xe9, 0x71, 0x7f, 0x48, 0xac, 0x3f, 0x48,
-0xe1, 0x98, 0xb7, 0x32, 0x7b, 0x3d, 0x6b, 0xba,
-0x06, 0xff, 0x74, 0x95, 0xf9, 0xac, 0x9b, 0x6f,
-0x94, 0x08, 0x2f, 0x7b, 0x77, 0x6e, 0x10, 0x3f,
-0x40, 0xf9, 0x63, 0x94, 0xbd, 0x7f, 0xc0, 0xed,
-0x7d, 0x9f, 0x35, 0x08, 0xd7, 0xe2, 0x1f, 0xbb,
-0xcf, 0xb1, 0x99, 0x4c, 0x87, 0xc3, 0x46, 0x7f,
-0x58, 0x3c, 0x08, 0x6f, 0x01, 0xd1, 0xe8, 0x3f,
-0x93, 0x0f, 0xd8, 0xde, 0x42, 0x4e, 0x1d, 0x39,
-0x29, 0x94, 0x82, 0x7f, 0xf6, 0xd2, 0x33, 0xb5,
-0x08, 0x63, 0xa6, 0x57, 0xb7, 0x4c, 0x7e, 0xb0,
-0xda, 0x68, 0x63, 0x11, 0xef, 0x67, 0x31, 0x24,
-0x3c, 0x0f, 0x25, 0xf7, 0xd2, 0xd4, 0xfe, 0xb0,
-0xdc, 0xff, 0xe3, 0xf3, 0x3a, 0x0c, 0x6f, 0x8f,
-0x86, 0x77, 0xe3, 0x8e, 0xa0, 0xc9, 0x08, 0x9c,
-0xf0, 0xca, 0x6b, 0x46, 0x68, 0xcc, 0xa1, 0x5c,
-0x97, 0xd2, 0x1f, 0x16, 0x46, 0xa1, 0x8c, 0xb7,
-0x05, 0x89, 0x45, 0xdb, 0xb9, 0x23, 0x48, 0x8a,
-0x40, 0x87, 0x31, 0x10, 0x62, 0x1d, 0x63, 0x85,
-0x75, 0x29, 0xf8, 0xe7, 0x32, 0x4c, 0xf3, 0x2e,
-0xd9, 0x24, 0x5e, 0xce, 0xfe, 0x84, 0x57, 0x7b,
-0x05, 0x0b, 0x3e, 0xe7, 0x34, 0xe0, 0xda, 0x7a,
-0x6f, 0xc1, 0xe7, 0xc2, 0x67, 0x60, 0xf4, 0x87,
-0x7d, 0x36, 0x05, 0xff, 0x5c, 0x86, 0x1d, 0xb5,
-0xb6, 0x63, 0x72, 0x6e, 0xe8, 0xb0, 0xcb, 0xed,
-0xb5, 0x0e, 0xd6, 0x9c, 0xd7, 0x0f, 0xa8, 0xa5,
-0x9a, 0xed, 0x4d, 0x4e, 0x94, 0x8d, 0xf8, 0xc7,
-0x7a, 0x4d, 0x7f, 0x34, 0xe8, 0x91, 0xed, 0x92,
-0xec, 0xf7, 0xab, 0x78, 0x32, 0xec, 0x37, 0x51,
-0x46, 0xde, 0xf7, 0x07, 0x34, 0x83, 0x28, 0x52,
-0x0d, 0xe1, 0xf9, 0xda, 0x4c, 0x9f, 0xf9, 0x4a,
-0xfe, 0x8f, 0xaa, 0xc9, 0x39, 0x44, 0x0a, 0x71,
-0xf6, 0x5d, 0xaa, 0x64, 0xf3, 0x40, 0x98, 0xd1,
-0x21, 0xae, 0xf9, 0x20, 0xf7, 0x80, 0xd5, 0x2b,
-0x77, 0x98, 0xe2, 0x5f, 0x93, 0x3b, 0x71, 0x7d,
-0x8c, 0xe8, 0x61, 0x21, 0x6e, 0xa4, 0x90, 0x56,
-0x1e, 0xcf, 0xa7, 0xd2, 0xe4, 0x97, 0x16, 0x16,
-0xc2, 0xf3, 0xa4, 0xa4, 0x0e, 0x52, 0xfa, 0xa3,
-0xf1, 0xfc, 0x67, 0xaf, 0x9b, 0x17, 0xe9, 0xcf,
-0x90, 0xc6, 0xa5, 0x52, 0xcd, 0x19, 0xac, 0x89,
-0xf5, 0x07, 0xb9, 0x39, 0x57, 0x7c, 0x4e, 0x3d,
-0xa0, 0x55, 0x7a, 0x6b, 0x37, 0xa7, 0xc6, 0xbf,
-0xa4, 0xf1, 0x00, 0xc7, 0x3f, 0x39, 0x43, 0xfe,
-0x5e, 0xdd, 0x00, 0x42, 0xfd, 0x70, 0x36, 0x9e,
-0xff, 0xc3, 0xde, 0x82, 0x8a, 0x65, 0xb6, 0xec,
-0x54, 0xfc, 0x23, 0x8c, 0x81, 0x5b, 0xba, 0x8f,
-0xd9, 0xf2, 0xb5, 0x48, 0x0c, 0x6d, 0x72, 0xb3,
-0xf7, 0xe1, 0x58, 0xc7, 0xba, 0x88, 0x54, 0xa9,
-0x58, 0x9b, 0xe5, 0xd4, 0xf8, 0xd7, 0x7e, 0xb6,
-0x95, 0x39, 0x4e, 0xd5, 0xfc, 0x18, 0xbe, 0x03,
-0x76, 0x4e, 0xf3, 0x3e, 0x06, 0x6f, 0x83, 0x9b,
-0xc9, 0x1f, 0x90, 0xf9, 0x5a, 0xeb, 0x37, 0x67,
-0xa1, 0x21, 0x56, 0x93, 0xda, 0x1f, 0x6d, 0x07,
-0xf3, 0x45, 0xe9, 0x4e, 0xb2, 0xc2, 0xd1, 0xa4,
-0xa8, 0xfa, 0xf5, 0x3c, 0xed, 0x19, 0xed, 0x05,
-0x5d, 0x9e, 0x6a, 0xf9, 0x3a, 0x6d, 0xd2, 0x9c,
-0x0d, 0x16, 0x57, 0x2a, 0xfe, 0x11, 0x76, 0xd1,
-0xfc, 0x28, 0x5d, 0x4e, 0x96, 0xc2, 0xe3, 0xf0,
-0x3d, 0x5e, 0x0f, 0xc5, 0xdb, 0x84, 0xe1, 0xf9,
-0xbd, 0x97, 0x58, 0xf3, 0xd7, 0xd0, 0xe2, 0x37,
-0x71, 0x7e, 0x4a, 0x7f, 0x34, 0x78, 0x85, 0x95,
-0xfa, 0xea, 0x4e, 0x58, 0xbe, 0xcb, 0xfb, 0x97,
-0x8d, 0x66, 0x2e, 0x15, 0xaf, 0xc0, 0xab, 0xec,
-0x99, 0xa8, 0x6d, 0x4c, 0xbe, 0x0e, 0xde, 0x08,
-0x54, 0xf9, 0x4a, 0x56, 0x8a, 0x1f, 0x25, 0xfd,
-0x3f, 0x99, 0xdb, 0x0c, 0x7b, 0xf3, 0x66, 0x96,
-0x33, 0x8c, 0x40, 0x71, 0x9f, 0x3e, 0xcb, 0x20,
-0x5a, 0x27, 0x31, 0xa2, 0x5a, 0xc2, 0x1b, 0x5d,
-0x3d, 0x16, 0x4e, 0xe9, 0x8f, 0x76, 0x05, 0x78,
-0xd9, 0xfb, 0x63, 0x63, 0xa2, 0x5b, 0x3b, 0x1c,
-0x2e, 0x1d, 0xb2, 0x9e, 0xf8, 0xd6, 0x05, 0xe5,
-0x28, 0xab, 0x1a, 0xb2, 0xdd, 0x20, 0xbe, 0xcc,
-0x3b, 0x3e, 0xa8, 0x37, 0xaf, 0x14, 0xc0, 0x14,
-0xff, 0x32, 0xf8, 0xae, 0x23, 0x8e, 0x65, 0x35,
-0x6e, 0xed, 0x25, 0xe5, 0xd6, 0x61, 0x7c, 0xfe,
-0x31, 0xd2, 0xc4, 0xfb, 0xbb, 0xfd, 0x1d, 0x99,
-0x03, 0xcd, 0x50, 0x2c, 0xc9, 0xee, 0xd6, 0xd4,
-0xfc, 0x9f, 0x97, 0x94, 0x7c, 0xad, 0xce, 0x5b,
-0xa6, 0x84, 0x7e, 0xa1, 0xde, 0x1f, 0x45, 0xc3,
-0xed, 0xa4, 0x41, 0x0c, 0xbe, 0x68, 0x90, 0x6c,
-0x32, 0xa0, 0x14, 0x4a, 0x30, 0x73, 0x7f, 0xd8,
-0x01, 0xfc, 0x48, 0x2a, 0xda, 0xfb, 0xa4, 0x1a,
-0x0f, 0x72, 0xe1, 0x71, 0x3c, 0x5f, 0x67, 0x0c,
-0x47, 0x90, 0x5c, 0x48, 0x8a, 0x60, 0x87, 0x52,
-0xd2, 0x2c, 0x97, 0x5f, 0x67, 0xee, 0x0f, 0xbb,
-0x0d, 0x2e, 0x68, 0x3c, 0x9b, 0x54, 0x76, 0xa2,
-0x5a, 0x71, 0x8d, 0xa2, 0xb5, 0xf8, 0x69, 0xcc,
-0x11, 0x94, 0x26, 0x76, 0xbc, 0x7a, 0x91, 0x03,
-0x9b, 0xdf, 0x89, 0x45, 0x29, 0xf8, 0xe7, 0x82,
-0x5e, 0x19, 0xcc, 0xea, 0x14, 0xbb, 0xb8, 0xff,
-0xa7, 0xd7, 0x16, 0x9e, 0x14, 0xe7, 0x07, 0xe0,
-0x1e, 0x12, 0xd9, 0x52, 0x19, 0xf9, 0x4a, 0x7f,
-0x90, 0x2b, 0x74, 0x87, 0xb6, 0x62, 0xa9, 0x5c,
-0xee, 0x3f, 0x10, 0x74, 0xf7, 0x65, 0x5e, 0xc8,
-0xb9, 0x44, 0xde, 0x80, 0x1f, 0xf1, 0xc6, 0xe8,
-0x2e, 0x18, 0x68, 0xac, 0xaa, 0x5e, 0x3b, 0x7a,
-0x0d, 0xfe, 0xd9, 0xf7, 0x50, 0xfe, 0x36, 0xfa,
-0xa6, 0x5f, 0xf1, 0x3f, 0xc6, 0xe6, 0xea, 0x68,
-0x7d, 0x9c, 0x65, 0x6d, 0x70, 0xba, 0xb7, 0x2d,
-0x40, 0xb6, 0xaa, 0x81, 0xd3, 0x25, 0x6a, 0x5d,
-0x58, 0x0c, 0xa5, 0xe0, 0x9f, 0x30, 0x6f, 0x1a,
-0x38, 0xd1, 0xc6, 0x2b, 0x23, 0x9c, 0x3d, 0x22,
-0xb5, 0x09, 0x08, 0x9c, 0x02, 0xc4, 0xae, 0x04,
-0xd4, 0x12, 0xbb, 0xd1, 0x28, 0x6d, 0x62, 0x3f,
-0x18, 0xfd, 0xd1, 0x70, 0xb7, 0x96, 0x03, 0x01,
-0xd6, 0x08, 0x33, 0x5e, 0x45, 0x41, 0x1d, 0x91,
-0x9a, 0x04, 0x94, 0xcf, 0x7e, 0xd2, 0x2c, 0x30,
-0x30, 0xec, 0xfd, 0xa4, 0xfc, 0xe1, 0xfe, 0x9f,
-0x51, 0x4e, 0x62, 0xa9, 0x8a, 0x8e, 0xd0, 0x01,
-0x28, 0xe5, 0x89, 0x28, 0x23, 0x70, 0xc8, 0x6b,
-0xe7, 0x8d, 0x71, 0x39, 0xff, 0x46, 0xa5, 0x56,
-0xb2, 0xdd, 0xdc, 0x1f, 0xf6, 0x7a, 0x9e, 0xff,
-0x63, 0x63, 0x86, 0x77, 0xcb, 0xe0, 0x37, 0x1e,
-0x14, 0xc3, 0xb1, 0x44, 0xd6, 0x5e, 0x79, 0x94,
-0x1a, 0x89, 0x40, 0xe7, 0xc4, 0x2e, 0x13, 0xfe,
-0x79, 0xd7, 0xc0, 0xcf, 0xd6, 0x95, 0xe2, 0xcd,
-0x60, 0xa4, 0x3d, 0x0f, 0x8b, 0x15, 0xf4, 0xb0,
-0x63, 0x07, 0xb3, 0x72, 0xff, 0xe4, 0x40, 0xf3,
-0x6c, 0xd7, 0xe2, 0xa5, 0x05, 0x49, 0xfe, 0x1f,
-0x5d, 0x39, 0xcd, 0xb3, 0xc1, 0x81, 0x67, 0x1b,
-0x2a, 0x01, 0xc6, 0xdb, 0x12, 0xf9, 0xab, 0x48,
-0x8b, 0x6e, 0x0f, 0x5b, 0xda, 0xc9, 0x6f, 0xa1,
-0xad, 0xd1, 0x2e, 0xa0, 0xc4, 0x1e, 0x4d, 0xc4,
-0xbf, 0x22, 0x13, 0xfe, 0x9f, 0xb0, 0xdd, 0x89,
-0xcb, 0xa8, 0xf2, 0xc6, 0xaf, 0x56, 0x4f, 0x23,
-0x51, 0x9b, 0xeb, 0x18, 0xb1, 0x22, 0x30, 0xb6,
-0x53, 0xdc, 0x21, 0xe7, 0x12, 0xf5, 0xa7, 0xfa,
-0x94, 0x90, 0xd2, 0xc3, 0x17, 0x01, 0xef, 0xcf,
-0xf9, 0x04, 0x84, 0x5b, 0xd8, 0x32, 0x27, 0xcf,
-0xff, 0x0c, 0x59, 0x82, 0xfe, 0xdf, 0xaa, 0xbf,
-0x62, 0x46, 0x7f, 0xd8, 0x51, 0x93, 0xbf, 0x28,
-0xe6, 0x7f, 0xb0, 0xf2, 0xb0, 0xd4, 0x21, 0x1e,
-0x76, 0xe9, 0x6c, 0x73, 0xd2, 0x03, 0xcc, 0xd5,
-0x65, 0xcd, 0x10, 0xbf, 0x0e, 0x6f, 0x32, 0x97,
-0xc3, 0xda, 0x62, 0xea, 0x8f, 0x16, 0x12, 0xc2,
-0x60, 0x2c, 0x82, 0x6e, 0x64, 0xd3, 0x55, 0x81,
-0x55, 0xff, 0x16, 0xe2, 0xc3, 0x8c, 0x4a, 0xb6,
-0x7e, 0x50, 0x1c, 0xb5, 0xfc, 0x25, 0xa3, 0x4a,
-0xc2, 0x9f, 0x86, 0x53, 0xf0, 0x0f, 0x47, 0x53,
-0xd6, 0xed, 0x4d, 0xfc, 0xfe, 0x95, 0xfd, 0xa8,
-0x28, 0xd7, 0x2a, 0xe3, 0xe0, 0x6e, 0xcf, 0x6a,
-0x9e, 0x34, 0x9d, 0xf7, 0xa7, 0x53, 0xd7, 0x32,
-0x71, 0xb6, 0x09, 0xff, 0xf0, 0xc7, 0x46, 0x90,
-0x83, 0xdf, 0x57, 0x62, 0xde, 0x12, 0x15, 0x07,
-0x15, 0xb0, 0xdd, 0x83, 0x66, 0xd7, 0x1e, 0x8f,
-0x14, 0x6c, 0x0b, 0xd9, 0x55, 0x7c, 0x71, 0x57,
-0x0a, 0xfe, 0xe1, 0x68, 0x90, 0xce, 0xc9, 0x5e,
-0x0c, 0x4d, 0x7a, 0xc9, 0x58, 0xac, 0x9f, 0xa9,
-0xa6, 0x2a, 0x16, 0xf0, 0x58, 0x0d, 0xc5, 0xed,
-0x70, 0x59, 0x5c, 0x09, 0x7d, 0x17, 0x15, 0xdc,
-0xd0, 0xcc, 0x8a, 0x55, 0x1a, 0x49, 0x7f, 0x18,
-0x9a, 0x03, 0xb3, 0x54, 0xba, 0x94, 0x4c, 0x93,
-0x76, 0xf8, 0xf3, 0x55, 0x5a, 0x87, 0x46, 0xe1,
-0x9a, 0xe0, 0x96, 0x51, 0x3a, 0x46, 0x2a, 0x12,
-0xf1, 0xaf, 0x3b, 0x11, 0xff, 0xfc, 0x5e, 0xaa,
-0xd4, 0x9d, 0xb3, 0xc5, 0xc5, 0xf0, 0x2a, 0x54,
-0xf0, 0xb2, 0xc1, 0xb5, 0x70, 0xd6, 0xe5, 0xa2,
-0xeb, 0x88, 0xc7, 0x4a, 0x5f, 0xd5, 0x5c, 0xba,
-0xd5, 0x25, 0x66, 0x27, 0xe3, 0x5f, 0x37, 0x25,
-0xd6, 0x27, 0xac, 0x5d, 0x52, 0x16, 0x80, 0xed,
-0x4d, 0xe1, 0x32, 0xfc, 0x44, 0xc1, 0x2b, 0x9a,
-0x78, 0x52, 0xfb, 0x52, 0xaa, 0xea, 0xb7, 0x8d,
-0x99, 0xf8, 0xb1, 0xe3, 0xfe, 0x9f, 0xa8, 0x91,
-0xed, 0xfc, 0x31, 0x8b, 0xe7, 0x87, 0x5f, 0x84,
-0x8a, 0x53, 0xd6, 0x80, 0xe8, 0x94, 0x3e, 0x23,
-0x6e, 0xdd, 0xda, 0x65, 0xe6, 0xc7, 0xde, 0x10,
-0x84, 0x9d, 0x28, 0x34, 0x22, 0x1a, 0x19, 0x44,
-0x55, 0x9c, 0x0f, 0x32, 0xca, 0x93, 0xdc, 0x5d,
-0x90, 0xc9, 0x79, 0xd3, 0xa6, 0x1a, 0x44, 0xd9,
-0x68, 0x4f, 0x75, 0x27, 0xe4, 0x1b, 0x83, 0xa7,
-0x95, 0x5d, 0x6c, 0x16, 0x77, 0xf2, 0xbc, 0x0b,
-0xff, 0xc2, 0xc3, 0x5e, 0x3c, 0xdf, 0xfb, 0x25,
-0x56, 0xdc, 0x91, 0x11, 0xf1, 0x4f, 0x33, 0x42,
-0x81, 0x19, 0xf5, 0x84, 0x9a, 0xf0, 0x8f, 0x0e,
-0xf1, 0xfd, 0x13, 0x05, 0x26, 0xa8, 0x20, 0x2b,
-0xe9, 0x03, 0xb0, 0xdd, 0xb7, 0xa2, 0xf1, 0x4e,
-0xb8, 0x27, 0x53, 0xdd, 0xa1, 0xd9, 0xb9, 0x87,
-0xed, 0x29, 0x53, 0xfc, 0x2b, 0x00, 0x17, 0xa0,
-0x84, 0x97, 0xbd, 0x0f, 0x4b, 0x2f, 0x90, 0x38,
-0x3f, 0xf6, 0x15, 0xa8, 0xe2, 0xa1, 0xb6, 0xdb,
-0xe0, 0x0b, 0xcd, 0xcd, 0x8a, 0x3b, 0x53, 0xf8,
-0xb1, 0x63, 0xdb, 0x66, 0x56, 0x3f, 0x19, 0x9d,
-0x58, 0xa8, 0x28, 0xaf, 0x87, 0xca, 0x5e, 0xcb,
-0x33, 0x54, 0xc7, 0x6e, 0x47, 0x53, 0x45, 0x6f,
-0x32, 0xc7, 0xbf, 0x62, 0xfc, 0x3f, 0x78, 0x5a,
-0x0b, 0xf3, 0x0e, 0x28, 0xbc, 0xec, 0xdd, 0xd3,
-0x09, 0xe3, 0x8d, 0x65, 0xf1, 0xc6, 0x58, 0xed,
-0x5f, 0xe5, 0xff, 0x89, 0xa5, 0xf1, 0x3c, 0x6d,
-0xff, 0xba, 0xef, 0x00, 0x2b, 0xd1, 0x8c, 0x46,
-0x69, 0xbb, 0x83, 0x25, 0xf7, 0xb4, 0x6d, 0xbe,
-0xe7, 0x0c, 0xdd, 0xad, 0x95, 0x69, 0x81, 0x6b,
-0xfd, 0x3f, 0x8f, 0x09, 0xdf, 0xbb, 0x5f, 0x7e,
-0xd3, 0x32, 0x07, 0x1e, 0x8b, 0xd5, 0xb3, 0x74,
-0x72, 0x0f, 0xa4, 0x76, 0x63, 0xd0, 0xf3, 0xac,
-0xc4, 0x03, 0x67, 0x74, 0x90, 0x1c, 0x31, 0xf1,
-0xff, 0xf0, 0x69, 0xf9, 0x0d, 0xa8, 0xad, 0xa6,
-0xc0, 0x2f, 0x58, 0xb1, 0x97, 0xde, 0x4b, 0x9a,
-0x73, 0x79, 0x3c, 0xe8, 0xc6, 0xbc, 0xec, 0x7e,
-0x94, 0xd8, 0xcf, 0x34, 0x38, 0xbc, 0xe4, 0x60,
-0x22, 0xfe, 0xc5, 0xf1, 0x4f, 0x3c, 0xdb, 0xd9,
-0x90, 0x36, 0xb8, 0x55, 0x09, 0xf7, 0x48, 0x70,
-0x22, 0xa0, 0x9a, 0x10, 0xbd, 0x20, 0xb8, 0x05,
-0xab, 0x5e, 0x90, 0xf4, 0xff, 0x9c, 0xb8, 0x89,
-0x27, 0xde, 0x56, 0x18, 0x6a, 0x5d, 0x3a, 0xc5,
-0x0b, 0xc1, 0x82, 0xe4, 0xfb, 0xd2, 0x65, 0xad,
-0xea, 0x4d, 0x9b, 0x37, 0xe7, 0x3c, 0x5c, 0x16,
-0x2a, 0x78, 0xa0, 0x27, 0xc9, 0x8f, 0x9d, 0x27,
-0x18, 0x4d, 0x40, 0x6a, 0x11, 0xe4, 0xe4, 0x0a,
-0x87, 0x79, 0xd9, 0xbb, 0x22, 0x0c, 0xb1, 0xcf,
-0x11, 0xff, 0x38, 0x07, 0x6b, 0x2a, 0x38, 0xb1,
-0xb6, 0x66, 0x1d, 0x2c, 0x48, 0xe2, 0x9f, 0x95,
-0xf1, 0xfe, 0x20, 0xd4, 0xc0, 0x3f, 0xf1, 0x44,
-0x20, 0xad, 0x87, 0xd3, 0xce, 0x33, 0x34, 0xbb,
-0x7a, 0x88, 0x71, 0x25, 0xc9, 0x8f, 0x8d, 0xf8,
-0x47, 0xda, 0x2d, 0x15, 0xf2, 0x78, 0x9f, 0xe4,
-0x6a, 0x14, 0x9c, 0x9e, 0x40, 0xb6, 0x9f, 0xf3,
-0x81, 0xab, 0xb7, 0x53, 0x9e, 0x91, 0xc8, 0x3b,
-0x86, 0x38, 0x14, 0x62, 0xe2, 0xc7, 0x9e, 0xd2,
-0x39, 0x75, 0x37, 0x74, 0xf2, 0xf9, 0xdc, 0x9f,
-0xe6, 0xac, 0xae, 0xe7, 0xfd, 0x79, 0x77, 0x6b,
-0x45, 0xdc, 0xb1, 0x36, 0x1d, 0x76, 0xd7, 0x94,
-0xf0, 0x8e, 0x69, 0x29, 0xf1, 0xaf, 0xbc, 0xed,
-0x50, 0x86, 0xb0, 0xc7, 0x22, 0xe1, 0x87, 0xab,
-0xc4, 0x69, 0x46, 0x62, 0xb3, 0xdb, 0x67, 0xdd,
-0x20, 0xce, 0xd0, 0x38, 0xf0, 0x73, 0x9a, 0xfb,
-0xc3, 0x0e, 0x73, 0xff, 0x8f, 0x64, 0x54, 0x87,
-0x2d, 0xe7, 0xde, 0x1e, 0x4f, 0x2c, 0xff, 0xb9,
-0xbd, 0x62, 0xb9, 0x2d, 0x28, 0x9f, 0xe1, 0xae,
-0xa1, 0x1a, 0x1c, 0x9c, 0xbb, 0xc6, 0xff, 0xc3,
-0x9d, 0x3c, 0x3c, 0x91, 0x04, 0x0f, 0xff, 0x7a,
-0xfc, 0x10, 0x92, 0x0e, 0xf3, 0x14, 0x5b, 0xc0,
-0xc8, 0x48, 0x77, 0x0b, 0x46, 0xbf, 0xb0, 0x89,
-0xe7, 0x41, 0xfc, 0x23, 0xec, 0xe1, 0xfd, 0x41,
-0xa2, 0x64, 0x1e, 0x59, 0xc7, 0xe6, 0x06, 0xb3,
-0x42, 0x77, 0x38, 0x60, 0x9d, 0x56, 0x10, 0x90,
-0xeb, 0xc9, 0x30, 0xbc, 0xab, 0xcc, 0x65, 0xb2,
-0x2f, 0xd5, 0xff, 0xa3, 0xec, 0xe0, 0xdd, 0x19,
-0x5c, 0xf8, 0x52, 0x7e, 0xa6, 0x0e, 0xb6, 0xb8,
-0xec, 0x28, 0x76, 0x14, 0xc7, 0xc3, 0xf2, 0x64,
-0xd2, 0xaf, 0x34, 0x49, 0xf6, 0xe3, 0xf2, 0xb5,
-0xfe, 0x9f, 0x57, 0xa0, 0x40, 0xcf, 0x6b, 0x20,
-0xb9, 0xae, 0x35, 0x81, 0xe9, 0x44, 0xbe, 0x40,
-0xb2, 0x60, 0x0d, 0xdc, 0x5f, 0x7d, 0xa3, 0x97,
-0x7c, 0x01, 0xff, 0xdc, 0x38, 0x1d, 0xef, 0x6f,
-0xe2, 0xc7, 0x36, 0xfc, 0x3f, 0x6c, 0x36, 0x57,
-0x2b, 0x88, 0x76, 0x70, 0x90, 0xf1, 0x63, 0xcb,
-0x34, 0xf2, 0x1a, 0xcb, 0xf0, 0x2d, 0x59, 0x9a,
-0xf3, 0x07, 0x8a, 0x57, 0x78, 0xa3, 0xb4, 0xd3,
-0xe6, 0xfc, 0x1f, 0xfa, 0x19, 0xec, 0xd3, 0x66,
-0x31, 0x5c, 0x96, 0xcf, 0x84, 0x4a, 0xb8, 0x7b,
-0x47, 0x2c, 0xfe, 0xc5, 0xcb, 0x48, 0xfb, 0xa5,
-0x8b, 0xb1, 0x08, 0xb5, 0xc9, 0xff, 0xb3, 0xea,
-0x8a, 0x37, 0x5e, 0xb6, 0x53, 0xc6, 0xdb, 0x9a,
-0x0f, 0xdd, 0xbc, 0x9b, 0x5c, 0xc9, 0x43, 0x8d,
-0xf6, 0xc1, 0xda, 0xb7, 0x72, 0xca, 0xea, 0x2e,
-0x06, 0x4b, 0x3b, 0xd7, 0xd6, 0xcb, 0x49, 0x7c,
-0x62, 0xe4, 0xff, 0x38, 0x78, 0x13, 0x37, 0x7b,
-0x2e, 0xac, 0x91, 0x8a, 0x3d, 0x59, 0x8f, 0x92,
-0x93, 0xc1, 0x97, 0x97, 0x67, 0x1e, 0x7f, 0xe1,
-0x9b, 0x1b, 0x73, 0x23, 0xbb, 0x42, 0xb7, 0x34,
-0xd3, 0xfb, 0xfd, 0x2f, 0x98, 0xe3, 0x5f, 0x28,
-0x94, 0xee, 0xe7, 0x2f, 0x35, 0xd5, 0xf7, 0x04,
-0x14, 0xf7, 0xca, 0x0d, 0x7d, 0x27, 0xa5, 0x5d,
-0x5a, 0xb1, 0x9f, 0xea, 0xf6, 0xbf, 0x51, 0x5e,
-0xa9, 0xce, 0x6f, 0xce, 0xf0, 0x5d, 0x83, 0x7f,
-0x76, 0x80, 0x3d, 0x4f, 0xb6, 0x12, 0x1b, 0x79,
-0xdc, 0xeb, 0xf4, 0x59, 0xca, 0xb3, 0x07, 0x94,
-0x6e, 0xe2, 0x1c, 0xb6, 0x48, 0x9e, 0x3b, 0xb4,
-0xed, 0xcd, 0x45, 0x6c, 0xa6, 0x9d, 0x04, 0x4c,
-0xf1, 0xaf, 0xdf, 0x96, 0x7f, 0x06, 0xdd, 0x8a,
-0xed, 0x49, 0xd4, 0x56, 0x6f, 0x1d, 0x2f, 0x39,
-0x6f, 0xbb, 0x64, 0x1f, 0x51, 0x2e, 0x70, 0x8f,
-0x71, 0x8f, 0xb8, 0x02, 0x3e, 0x0b, 0xd9, 0x59,
-0xe6, 0x36, 0xb9, 0xe8, 0x5a, 0xff, 0x8f, 0x62,
-0xdb, 0x22, 0x7f, 0xc0, 0x3e, 0xae, 0xad, 0x0c,
-0x1a, 0x7c, 0xda, 0x17, 0x08, 0x6f, 0x8b, 0xf6,
-0x9f, 0xb6, 0x49, 0x08, 0x1d, 0x95, 0xac, 0x6b,
-0xfc, 0x3f, 0xea, 0x55, 0x3a, 0x37, 0x6a, 0x3d,
-0x11, 0xab, 0xf7, 0xe9, 0xb7, 0x8e, 0x36, 0x71,
-0x84, 0x80, 0xf6, 0x45, 0xb4, 0xe9, 0x11, 0xbc,
-0xf2, 0x23, 0x7d, 0x71, 0x54, 0x8c, 0x24, 0xf0,
-0x0f, 0x33, 0xfc, 0x3f, 0x76, 0x5f, 0xdd, 0x5a,
-0x7f, 0xb4, 0x79, 0xef, 0x01, 0xe7, 0xc6, 0x3a,
-0x1e, 0xff, 0x0a, 0x43, 0xc7, 0xfd, 0xb2, 0x13,
-0xb1, 0xff, 0x6e, 0xcd, 0xee, 0xe2, 0x1e, 0xc5,
-0x6b, 0xf2, 0x7f, 0x66, 0xe4, 0xd1, 0x8d, 0x9e,
-0x4e, 0xb6, 0x97, 0x19, 0xfd, 0x4c, 0x47, 0x60,
-0xb7, 0x6a, 0xf7, 0xc9, 0xed, 0x7e, 0xfc, 0x29,
-0x30, 0x63, 0xcb, 0xb5, 0xfe, 0x1f, 0xb6, 0x83,
-0xb3, 0x58, 0xaa, 0x1e, 0xde, 0xaf, 0xa7, 0x44,
-0xa0, 0x6e, 0xfb, 0x80, 0xd4, 0x83, 0x16, 0xca,
-0xa2, 0x60, 0x3a, 0x9e, 0x47, 0x55, 0xe5, 0x8d,
-0xe4, 0xfa, 0x92, 0xfc, 0xd8, 0x99, 0x3c, 0xbf,
-0xb7, 0x8c, 0x59, 0x15, 0x31, 0x44, 0x79, 0x9a,
-0xb7, 0x73, 0xf4, 0x71, 0xbc, 0x3f, 0x4a, 0xd4,
-0x25, 0x8c, 0xe7, 0xf7, 0xe6, 0x1b, 0xa6, 0xab,
-0xde, 0x94, 0xcc, 0xff, 0xf9, 0x84, 0xbf, 0x26,
-0xcc, 0xd2, 0x73, 0x06, 0xe9, 0x55, 0x81, 0x77,
-0xb3, 0xaa, 0xe6, 0xef, 0xbb, 0xa0, 0x7a, 0x92,
-0x26, 0x5e, 0x82, 0x2f, 0x94, 0x57, 0x38, 0xb1,
-0x89, 0x99, 0xff, 0xe7, 0x2a, 0x77, 0x9b, 0xf0,
-0xfc, 0xf0, 0x15, 0x70, 0x14, 0xdc, 0x51, 0xeb,
-0x69, 0x84, 0x85, 0xb8, 0x3e, 0x14, 0xcd, 0xf6,
-0x39, 0xd5, 0x03, 0xb7, 0x23, 0x42, 0xe8, 0x25,
-0x29, 0xf9, 0xcf, 0x6c, 0x0f, 0xb3, 0xd3, 0xba,
-0xf6, 0xfc, 0x4f, 0x69, 0x2b, 0xf8, 0xa3, 0x34,
-0xe4, 0xb1, 0x43, 0x4f, 0xb0, 0xc8, 0x45, 0x1f,
-0x23, 0xcf, 0xe8, 0x81, 0xea, 0x92, 0xa9, 0x74,
-0xf5, 0x35, 0xf1, 0xaf, 0x3d, 0xa0, 0x12, 0xca,
-0x2c, 0x5c, 0x9b, 0xdb, 0x75, 0x9a, 0x4f, 0x40,
-0xc3, 0xf7, 0x6d, 0xa6, 0x90, 0x2d, 0x01, 0x82,
-0x1b, 0x91, 0x0a, 0xa9, 0xf1, 0x2f, 0xd8, 0x13,
-0xb0, 0x8b, 0x68, 0x8f, 0x8c, 0xb0, 0x56, 0x84,
-0x91, 0x34, 0xe4, 0x57, 0xd5, 0x1e, 0x5a, 0xe4,
-0x77, 0xb0, 0xbe, 0xce, 0x82, 0x17, 0x59, 0xc9,
-0x29, 0xda, 0x05, 0x49, 0xff, 0x8f, 0x3a, 0x79,
-0x04, 0xce, 0xe9, 0xdd, 0x5e, 0x6b, 0x9a, 0x78,
-0x2b, 0x0c, 0x84, 0xc2, 0xba, 0x75, 0x48, 0x9c,
-0x5d, 0x77, 0xc9, 0x5b, 0xaa, 0x58, 0x5f, 0x13,
-0x17, 0x40, 0x40, 0xaf, 0xac, 0xb7, 0x6e, 0x16,
-0xf2, 0x52, 0xfc, 0x3f, 0xa8, 0xdd, 0x1c, 0xb6,
-0x13, 0x4d, 0x73, 0xc8, 0x15, 0xbd, 0xaa, 0x6f,
-0x56, 0x54, 0x3c, 0x0d, 0x63, 0xac, 0x8a, 0xb7,
-0xf5, 0x1c, 0x51, 0xfe, 0x44, 0x2b, 0x61, 0x16,
-0x5c, 0xe3, 0xff, 0xb9, 0xc0, 0xd3, 0x38, 0x9b,
-0x51, 0x2d, 0x1e, 0xa0, 0xa8, 0xdf, 0x3b, 0x39,
-0x2d, 0xbf, 0xe6, 0x0e, 0x5a, 0x9b, 0xc5, 0x62,
-0xfd, 0x84, 0x56, 0xe9, 0x41, 0xfb, 0x2b, 0xb5,
-0xfe, 0x6b, 0x0f, 0xf7, 0xc6, 0xef, 0x13, 0x03,
-0xd0, 0xd6, 0x6c, 0x1f, 0x44, 0xbc, 0x97, 0xaf,
-0xe1, 0x7e, 0x67, 0x99, 0x94, 0x14, 0x2b, 0x19,
-0x91, 0x92, 0x06, 0x5c, 0xa8, 0x64, 0xfe, 0xb3,
-0xce, 0xed, 0x2f, 0x1f, 0xce, 0xbf, 0x95, 0x1c,
-0xd1, 0x5a, 0xfc, 0x6a, 0xbf, 0x1c, 0x26, 0x59,
-0xa4, 0x0d, 0x42, 0x3e, 0x5a, 0x6e, 0xb1, 0xe3,
-0x8a, 0x95, 0x84, 0xa9, 0x83, 0x84, 0x53, 0xfc,
-0x3f, 0x3b, 0x1b, 0x8d, 0xfa, 0xf7, 0x75, 0xad,
-0xab, 0x59, 0xfe, 0x70, 0xdb, 0x4a, 0x32, 0x4d,
-0x5d, 0xe3, 0xcf, 0x5f, 0x96, 0xf1, 0x63, 0x14,
-0xe3, 0xab, 0xb6, 0x14, 0x87, 0x10, 0x11, 0xb5,
-0x27, 0xee, 0x5f, 0x8f, 0xf8, 0xe7, 0x9c, 0x5a,
-0x01, 0x36, 0xd7, 0x37, 0x8e, 0x40, 0xcb, 0xcc,
-0xf0, 0x90, 0x2d, 0x2c, 0x5b, 0xe1, 0x55, 0xd5,
-0x15, 0xb1, 0xce, 0x6f, 0x02, 0xd2, 0xe7, 0xad,
-0xf0, 0x58, 0xcb, 0x9a, 0x9e, 0x4a, 0xf1, 0xff,
-0xec, 0xe7, 0x4e, 0x9e, 0xb3, 0xe2, 0x25, 0x3a,
-0x51, 0xff, 0xa5, 0x5d, 0x84, 0x05, 0xdc, 0xfe,
-0x3a, 0x57, 0xfb, 0x97, 0xd9, 0x46, 0xeb, 0x61,
-0x6f, 0x8a, 0xff, 0xc7, 0x38, 0xad, 0xe1, 0x49,
-0x03, 0x42, 0x44, 0xe8, 0xee, 0xb5, 0xf5, 0x18,
-0x40, 0xd4, 0x68, 0xf4, 0x5c, 0x04, 0x03, 0xb1,
-0xfa, 0xca, 0xd4, 0xfe, 0xb0, 0x2f, 0xa3, 0x9a,
-0x8e, 0x78, 0xb3, 0x4f, 0x12, 0xc6, 0xcd, 0x46,
-0x9e, 0xef, 0xd4, 0xc4, 0x03, 0x37, 0x2e, 0x42,
-0x95, 0xc7, 0xa0, 0x00, 0xa8, 0xf7, 0x9a, 0xfc,
-0xe7, 0x97, 0xf5, 0x62, 0x4e, 0xea, 0xf8, 0x2e,
-0x5d, 0xa5, 0x1b, 0xf8, 0x67, 0x1a, 0x3c, 0xc1,
-0x0c, 0x22, 0xa0, 0x1b, 0xf2, 0x9a, 0x59, 0xfe,
-0xb2, 0xc0, 0x54, 0x73, 0xfe, 0xb3, 0x82, 0xf6,
-0x97, 0xea, 0x5c, 0x46, 0x8d, 0x6e, 0xb0, 0x88,
-0x1e, 0x17, 0xc5, 0x1b, 0x11, 0x72, 0x8f, 0x50,
-0xab, 0xb7, 0x51, 0x08, 0x35, 0x38, 0x36, 0x5f,
-0x5b, 0xff, 0xa5, 0xfd, 0x9c, 0x39, 0x7d, 0xe2,
-0x45, 0x38, 0xa2, 0xf3, 0xb6, 0x83, 0xb2, 0x83,
-0x1c, 0xe3, 0x15, 0x99, 0xaa, 0x5c, 0x4e, 0x8e,
-0x44, 0x4a, 0x43, 0xd6, 0xa1, 0x6b, 0xf3, 0x9f,
-0xb5, 0x4a, 0x09, 0xf7, 0x43, 0x54, 0x1d, 0x8d,
-0xb1, 0x1d, 0xea, 0xa8, 0xd5, 0x8c, 0xfa, 0x94,
-0x87, 0x60, 0x8c, 0xf2, 0xfa, 0xf7, 0xc7, 0xaf,
-0xf1, 0xff, 0x30, 0x54, 0x82, 0x9b, 0x0b, 0x24,
-0x38, 0x90, 0xeb, 0xae, 0xe5, 0xb4, 0x3f, 0x2c,
-0x4e, 0x7b, 0x58, 0x08, 0x67, 0xed, 0x2e, 0x9f,
-0x14, 0x14, 0xaf, 0xc9, 0x7f, 0xc6, 0xf9, 0x68,
-0x44, 0x14, 0x42, 0x8b, 0xae, 0x1a, 0xfe, 0x1c,
-0x3f, 0xe2, 0x7f, 0xbc, 0x22, 0xfe, 0x03, 0xef,
-0x58, 0xe1, 0xa5, 0x4f, 0x5f, 0x9b, 0xff, 0x9c,
-0xe7, 0xe4, 0x30, 0xc9, 0x49, 0x5a, 0xaa, 0x8d,
-0x78, 0xd9, 0x79, 0x78, 0x4c, 0x2d, 0xd0, 0x1c,
-0xc7, 0xc8, 0x1c, 0x6d, 0x37, 0x25, 0x0b, 0x2d,
-0x1b, 0xfe, 0x95, 0xfc, 0x67, 0x8e, 0x07, 0xa0,
-0x51, 0xb3, 0x73, 0xb7, 0xcf, 0x71, 0x61, 0x15,
-0x6f, 0xfc, 0xed, 0x25, 0xff, 0x19, 0x81, 0x7a,
-0xc8, 0xfb, 0x91, 0xb9, 0xfe, 0x34, 0x11, 0xff,
-0x0a, 0xdd, 0x82, 0xfa, 0x97, 0xd8, 0x27, 0xfc,
-0x0f, 0xdc, 0x11, 0x21, 0xbb, 0x10, 0x6a, 0xbb,
-0x61, 0xdd, 0x35, 0xf5, 0x5f, 0xf4, 0x32, 0xcc,
-0x8f, 0x55, 0xbb, 0x5f, 0xf5, 0x54, 0x69, 0xb3,
-0x36, 0xd5, 0x7c, 0x00, 0xe3, 0xbc, 0x3f, 0xda,
-0x26, 0xf1, 0x03, 0x7a, 0x55, 0xab, 0xf2, 0xde,
-0x75, 0xbc, 0x26, 0x25, 0xfe, 0xa5, 0x5d, 0x86,
-0x0a, 0xaf, 0x6d, 0x30, 0x67, 0x8e, 0x83, 0x27,
-0x02, 0xd9, 0xde, 0x16, 0xcb, 0xd4, 0xc3, 0x81,
-0xd2, 0x7a, 0xeb, 0x89, 0xa6, 0xb9, 0x80, 0x88,
-0xc8, 0x6b, 0x7d, 0xb3, 0xe9, 0x8c, 0x92, 0xf4,
-0xff, 0x9c, 0x66, 0x7b, 0x84, 0x12, 0x4e, 0x72,
-0x98, 0xaf, 0xf4, 0xa8, 0x1d, 0x80, 0x66, 0x63,
-0x3e, 0x04, 0xb4, 0x0e, 0xa0, 0xcd, 0x16, 0x1c,
-0xa8, 0x28, 0x81, 0x3b, 0xc9, 0x11, 0xb3, 0xff,
-0x87, 0x19, 0x69, 0x3f, 0x41, 0x5e, 0xe6, 0xcf,
-0xab, 0xbd, 0x72, 0xfd, 0xbc, 0x43, 0xae, 0xca,
-0x57, 0x20, 0x0d, 0x1a, 0xeb, 0x70, 0x29, 0xb2,
-0x4d, 0xfd, 0xa9, 0x8d, 0xfc, 0xe7, 0xe6, 0x92,
-0x3a, 0x79, 0xa3, 0x7d, 0x79, 0xe7, 0x6e, 0x81,
-0x3b, 0x82, 0xec, 0x85, 0x34, 0xee, 0x4f, 0x2b,
-0x14, 0xda, 0xd4, 0x92, 0x41, 0x9a, 0xd2, 0x1f,
-0x36, 0xd7, 0x88, 0x67, 0xf9, 0x6c, 0xfc, 0xeb,
-0x8c, 0x73, 0xa0, 0x3b, 0x88, 0x86, 0x3e, 0x7e,
-0x5f, 0x1f, 0xc2, 0x1e, 0x1c, 0xdc, 0x5e, 0xb9,
-0xdc, 0xda, 0x8e, 0xd0, 0x7a, 0x62, 0x7f, 0x1a,
-0xf5, 0x5f, 0x50, 0x59, 0xbd, 0xa4, 0x5d, 0xee,
-0x84, 0xb3, 0xfa, 0xfe, 0x89, 0x7c, 0xb0, 0x8a,
-0x06, 0x84, 0x85, 0xfd, 0xf8, 0x53, 0x85, 0x6f,
-0xd6, 0xc6, 0x82, 0x6b, 0xea, 0xbf, 0xa8, 0x11,
-0xe4, 0x3a, 0x05, 0x63, 0x8d, 0x0f, 0x1b, 0xb4,
-0x3f, 0x2c, 0x16, 0xf6, 0xca, 0x51, 0x03, 0x11,
-0x1f, 0xff, 0x10, 0x05, 0xd7, 0xd4, 0x7f, 0x05,
-0xca, 0x1a, 0x69, 0xbd, 0x7f, 0x98, 0x37, 0x32,
-0xf3, 0xa3, 0xf6, 0xb9, 0x01, 0x5a, 0x25, 0xb4,
-0xbf, 0x42, 0xe2, 0x3c, 0x78, 0x57, 0x2f, 0x08,
-0xd2, 0xa8, 0x27, 0xc9, 0x30, 0xed, 0x10, 0x16,
-0xa3, 0x76, 0x53, 0x63, 0xdd, 0x18, 0x51, 0x31,
-0x9d, 0x0e, 0x84, 0x49, 0x26, 0x6d, 0xf2, 0xfb,
-0x50, 0xfe, 0x90, 0x3b, 0xd0, 0x3e, 0x55, 0x1f,
-0xa6, 0x79, 0xfe, 0xd4, 0xfa, 0xaf, 0x9d, 0xfe,
-0xaf, 0x0f, 0x53, 0xce, 0xd6, 0xf5, 0x12, 0xe0,
-0x31, 0xf4, 0xfa, 0x33, 0x61, 0x8d, 0x96, 0xef,
-0xa1, 0x8f, 0x90, 0x5c, 0xf5, 0x89, 0x40, 0xbe,
-0x97, 0xde, 0x77, 0x6d, 0xfd, 0x17, 0x7b, 0x68,
-0xcc, 0xc9, 0xb3, 0x9d, 0xaf, 0xb2, 0x2d, 0x51,
-0x5a, 0x21, 0x4e, 0x23, 0xaf, 0xb2, 0xed, 0x3e,
-0x67, 0xb9, 0x7c, 0x37, 0x9c, 0x6c, 0x2e, 0x0d,
-0x39, 0x87, 0x53, 0xeb, 0xbf, 0xe0, 0x1c, 0x54,
-0x46, 0xf0, 0x34, 0x0d, 0xa1, 0xb5, 0x5e, 0x81,
-0x66, 0xbe, 0xcc, 0x35, 0x7e, 0x85, 0xb6, 0x3e,
-0x6c, 0xf4, 0xf3, 0xaa, 0xe2, 0xfa, 0xcb, 0x9c,
-0xff, 0x7c, 0x05, 0x2e, 0x07, 0x77, 0x8d, 0x4e,
-0x7d, 0x4b, 0xac, 0xac, 0x3e, 0x12, 0x2c, 0xf5,
-0x65, 0x1a, 0xf5, 0x5f, 0xc1, 0x2a, 0x9f, 0xf5,
-0x82, 0xf8, 0x05, 0x1c, 0xc6, 0x2b, 0x36, 0xde,
-0x1f, 0xc4, 0xec, 0xff, 0xd9, 0xe9, 0x2a, 0xd0,
-0x03, 0xf7, 0xe7, 0xdc, 0x0b, 0x6b, 0xcb, 0xf3,
-0xbd, 0x75, 0x0d, 0x9e, 0x93, 0xd2, 0x9a, 0x50,
-0x31, 0x97, 0x3f, 0xe7, 0xd9, 0x2a, 0x57, 0xfe,
-0x1d, 0xf2, 0x77, 0x52, 0xfb, 0xc3, 0xc2, 0xcb,
-0x24, 0x5f, 0x77, 0x78, 0xed, 0xd6, 0x8c, 0xd5,
-0xfc, 0x98, 0xf0, 0xfc, 0x9f, 0x55, 0xdc, 0xd0,
-0x78, 0xd8, 0x7e, 0x7c, 0x3a, 0x27, 0xbc, 0x96,
-0x3d, 0xa4, 0x9f, 0x4d, 0xac, 0xbf, 0x2f, 0x77,
-0xc4, 0xda, 0xad, 0x15, 0x0e, 0x52, 0x2b, 0xa9,
-0x55, 0xda, 0x21, 0xa4, 0x39, 0xc2, 0xbc, 0xcd,
-0x25, 0xee, 0x40, 0x87, 0x8b, 0x7c, 0x28, 0xf8,
-0x75, 0xb5, 0x5d, 0xfe, 0xad, 0x89, 0x7f, 0x95,
-0xe7, 0x3f, 0x8f, 0x45, 0x6f, 0xed, 0xb7, 0x86,
-0x9b, 0x0a, 0xe1, 0x10, 0x33, 0xf8, 0xe5, 0x46,
-0xc8, 0xab, 0x3c, 0x91, 0x3e, 0x8c, 0xb0, 0x10,
-0x35, 0x8e, 0xcf, 0xf6, 0x94, 0x78, 0x30, 0xb5,
-0xfe, 0x8b, 0xce, 0x7b, 0xcd, 0xb6, 0x13, 0x77,
-0xcb, 0x30, 0xad, 0x7c, 0x33, 0x2b, 0x68, 0xd8,
-0x9b, 0x06, 0x3e, 0x8c, 0x36, 0x5e, 0xbc, 0xb3,
-0x32, 0xd6, 0x68, 0xcf, 0x84, 0x7f, 0xd0, 0xfa,
-0x29, 0xd5, 0xad, 0xd1, 0xa6, 0xf3, 0xda, 0x9f,
-0xb8, 0xff, 0x64, 0x34, 0xa7, 0x02, 0x8e, 0xaa,
-0xee, 0xda, 0x15, 0xe7, 0xc4, 0x31, 0x18, 0x04,
-0xa3, 0x51, 0xac, 0x6a, 0xf2, 0xff, 0xfc, 0x04,
-0xfc, 0x8d, 0x5b, 0x75, 0x4b, 0xf3, 0xc6, 0x21,
-0xe5, 0xa4, 0xee, 0x68, 0xa0, 0x27, 0x88, 0x0d,
-0xda, 0x58, 0x19, 0x0f, 0xf4, 0x9c, 0x91, 0x02,
-0xba, 0xbd, 0xa1, 0x6d, 0xed, 0x46, 0x73, 0xfd,
-0xfb, 0x0a, 0x08, 0xb0, 0x19, 0x68, 0x14, 0xc0,
-0x10, 0xb4, 0xea, 0x76, 0x5f, 0xc6, 0x76, 0x32,
-0x0b, 0xda, 0xf0, 0xe0, 0xd0, 0x30, 0x9c, 0x56,
-0x51, 0x70, 0x21, 0x10, 0xba, 0xa6, 0xfe, 0x8b,
-0xb1, 0x65, 0xba, 0xc5, 0xe5, 0xe9, 0x9f, 0x14,
-0x84, 0x22, 0x25, 0x4f, 0xe1, 0xc0, 0x40, 0x35,
-0x3c, 0xf6, 0x3a, 0x6a, 0x84, 0x10, 0xc8, 0xa8,
-0x00, 0x13, 0xab, 0xcf, 0xeb, 0xbf, 0x22, 0x30,
-0x57, 0x5f, 0xcb, 0xc8, 0x50, 0x75, 0x84, 0x18,
-0xf1, 0x17, 0xd4, 0x2f, 0x0e, 0x94, 0x9f, 0x1b,
-0x50, 0x10, 0x1d, 0xe0, 0x16, 0xc1, 0x46, 0x31,
-0xa5, 0xfe, 0x4b, 0x39, 0xcf, 0xd5, 0x96, 0x26,
-0x9e, 0x67, 0x23, 0xb0, 0xc0, 0x28, 0xfb, 0x22,
-0x3c, 0x83, 0x7a, 0xc9, 0xb9, 0xb8, 0xc7, 0xc3,
-0xd6, 0xf8, 0x3d, 0x53, 0xfc, 0x2b, 0x93, 0xc7,
-0x4f, 0xe7, 0x46, 0x6d, 0x0d, 0xe2, 0x20, 0x1d,
-0x81, 0x2a, 0x8a, 0x62, 0xf9, 0x13, 0xb6, 0xbe,
-0xbf, 0x52, 0xb4, 0xae, 0x2c, 0xa8, 0x84, 0x48,
-0x6f, 0xe9, 0xd9, 0xcd, 0x63, 0x66, 0xfe, 0x9f,
-0xc0, 0x6f, 0xf3, 0xe2, 0x69, 0xcf, 0x1f, 0xe7,
-0x06, 0x06, 0x4b, 0x6e, 0x40, 0x43, 0xec, 0x92,
-0xde, 0xaa, 0x3a, 0x07, 0x2d, 0x68, 0x7b, 0x19,
-0x08, 0x27, 0x2f, 0x4c, 0x4c, 0xfc, 0x87, 0xd2,
-0x00, 0xc4, 0xd3, 0x9e, 0x5f, 0x95, 0x3a, 0xc0,
-0x29, 0xdd, 0x09, 0xd9, 0x8b, 0xa5, 0x46, 0xe2,
-0x5c, 0xe8, 0x70, 0x79, 0xac, 0xb0, 0x31, 0xbf,
-0xf0, 0x80, 0xc5, 0xbd, 0xda, 0xd4, 0x1f, 0x2d,
-0x6d, 0x82, 0xff, 0x87, 0x7c, 0x0a, 0xad, 0x7d,
-0x25, 0xae, 0x3b, 0x03, 0x88, 0x27, 0x79, 0xfc,
-0xcb, 0xc2, 0x03, 0x61, 0xbf, 0x62, 0x2a, 0x0e,
-0xec, 0x26, 0xfe, 0x43, 0x89, 0xf3, 0xf3, 0xcc,
-0xd3, 0x8d, 0x26, 0xa4, 0x5d, 0xac, 0x32, 0x54,
-0xbc, 0x0f, 0xf7, 0xcf, 0x21, 0xa1, 0xf2, 0x36,
-0x09, 0x17, 0x4a, 0x7d, 0x0b, 0x77, 0x54, 0x51,
-0x98, 0x24, 0xf3, 0xff, 0x37, 0x40, 0x9c, 0x0f,
-0x61, 0xb4, 0xe0, 0x92, 0x51, 0x5f, 0x99, 0x15,
-0xce, 0x19, 0xa1, 0x57, 0xab, 0xab, 0x46, 0x79,
-0xa0, 0xd0, 0xfb, 0x89, 0xf4, 0x0a, 0xee, 0x10,
-0x39, 0xd9, 0x1f, 0x76, 0x14, 0xe2, 0x7c, 0x0b,
-0x61, 0x51, 0x55, 0x3f, 0xf2, 0x3d, 0xdc, 0xbe,
-0x36, 0x54, 0xb0, 0x18, 0xf5, 0xbb, 0xeb, 0x38,
-0xae, 0xff, 0x4c, 0x0d, 0x15, 0x7d, 0x24, 0x33,
-0x5c, 0xf3, 0x48, 0x92, 0x4f, 0x46, 0x8a, 0xe7,
-0xc3, 0x8f, 0x66, 0x3b, 0xa0, 0x15, 0x96, 0x05,
-0x69, 0x07, 0xcf, 0x8f, 0xaa, 0xb3, 0x47, 0x33,
-0x15, 0xf1, 0x6e, 0xa5, 0x89, 0x75, 0x0c, 0xd2,
-0x9d, 0x1d, 0x26, 0xfc, 0x33, 0xc1, 0x87, 0xe0,
-0xba, 0x87, 0x82, 0x7f, 0xd0, 0x8e, 0x68, 0x27,
-0x7d, 0xc0, 0xde, 0x14, 0x50, 0x0f, 0xe0, 0x0e,
-0xc9, 0x64, 0x8d, 0x93, 0x43, 0x83, 0xd0, 0xe3,
-0x9f, 0x58, 0x4d, 0xc0, 0x0d, 0x1b, 0xab, 0xff,
-0x92, 0x7f, 0x8c, 0x62, 0x6d, 0x55, 0x30, 0x5f,
-0xa5, 0x8f, 0x66, 0x3f, 0x0d, 0xab, 0x83, 0xf9,
-0x51, 0x71, 0x8c, 0xfc, 0x8c, 0xae, 0x09, 0x1a,
-0xc0, 0xa0, 0x32, 0x31, 0xbf, 0x0e, 0xb2, 0xf4,
-0xcf, 0xb8, 0x18, 0x71, 0x89, 0xc0, 0xfc, 0x4a,
-0xc8, 0xe2, 0xac, 0x10, 0x8f, 0xf0, 0xe7, 0x8f,
-0x66, 0xb9, 0x44, 0x2b, 0x7b, 0x75, 0xb0, 0x5b,
-0x77, 0x6e, 0x97, 0xb3, 0x93, 0xfc, 0x3f, 0x13,
-0x7c, 0x3e, 0xe1, 0x45, 0xc3, 0xe4, 0x6d, 0x9e,
-0xd6, 0x1b, 0xce, 0x46, 0x04, 0x9e, 0x6e, 0x54,
-0xc0, 0x0d, 0xc0, 0x45, 0x95, 0xaf, 0x98, 0x18,
-0x4c, 0xd8, 0x47, 0x71, 0xfe, 0x9f, 0x28, 0x5e,
-0x0c, 0x81, 0x2e, 0x18, 0xfc, 0x93, 0xc5, 0xec,
-0x10, 0xcc, 0xd3, 0xa6, 0x72, 0x20, 0xd4, 0x1b,
-0xab, 0xe8, 0x4c, 0xe5, 0x7f, 0xe6, 0xf1, 0xf4,
-0x48, 0x03, 0xc9, 0x83, 0x66, 0xc9, 0x88, 0x7f,
-0xdd, 0xe4, 0x59, 0x8f, 0x40, 0xa8, 0xb8, 0x81,
-0x6c, 0x26, 0x6b, 0xe0, 0x79, 0x1e, 0x61, 0x4f,
-0xda, 0xbf, 0xf1, 0xfc, 0x67, 0x0e, 0x7b, 0xfc,
-0xb0, 0x1a, 0xe1, 0x8b, 0x65, 0x65, 0xeb, 0x34,
-0xb6, 0x9e, 0x15, 0x9f, 0xca, 0x38, 0xc1, 0xfd,
-0x5d, 0xb1, 0x88, 0x98, 0x99, 0xff, 0x39, 0xc6,
-0x37, 0x95, 0xe1, 0x22, 0x16, 0xb4, 0x67, 0xed,
-0x21, 0x79, 0x3f, 0xc7, 0x57, 0x5e, 0x3c, 0xa1,
-0x4a, 0xf6, 0x3a, 0xad, 0x69, 0xb0, 0x84, 0x23,
-0xa2, 0xa4, 0xfc, 0x89, 0x48, 0x5d, 0x13, 0x69,
-0xcf, 0x7b, 0xc8, 0xeb, 0xfa, 0x8e, 0x9e, 0xac,
-0x21, 0xd1, 0x01, 0xaf, 0x6b, 0x3f, 0x7f, 0x3e,
-0xa3, 0xa3, 0xe0, 0x06, 0x58, 0x27, 0xfd, 0x53,
-0xac, 0x22, 0x3e, 0x71, 0x7f, 0x88, 0xe5, 0x63,
-0x64, 0x21, 0xfe, 0xf1, 0x8d, 0xe5, 0x5d, 0x21,
-0x36, 0x56, 0xd0, 0xcb, 0x25, 0x92, 0x62, 0x63,
-0x35, 0x51, 0x36, 0x26, 0xcd, 0xe3, 0x16, 0xba,
-0x89, 0xff, 0x19, 0xe2, 0xf5, 0x3e, 0x8a, 0x51,
-0x1f, 0x64, 0xd7, 0xaa, 0x83, 0x39, 0xcb, 0xc9,
-0x01, 0xd6, 0xbd, 0x3c, 0xf3, 0x29, 0xf1, 0xcc,
-0xda, 0x03, 0x8e, 0xaf, 0xf8, 0x7f, 0x12, 0xf5,
-0x5c, 0xdc, 0x9f, 0x60, 0xaf, 0xab, 0x33, 0x80,
-0x90, 0x66, 0xbf, 0x3f, 0xb0, 0x99, 0x9c, 0x81,
-0x46, 0x66, 0x28, 0xe2, 0x68, 0x62, 0x75, 0xf2,
-0xa4, 0x42, 0x69, 0xb7, 0x54, 0xa2, 0x65, 0x04,
-0xfd, 0x9d, 0xd0, 0x22, 0xbc, 0x50, 0x2b, 0x6f,
-0x20, 0xcb, 0xd5, 0x16, 0xf5, 0xb4, 0x07, 0x82,
-0x9e, 0x21, 0xf5, 0x79, 0x1e, 0xaf, 0x0f, 0xda,
-0xcd, 0xfc, 0xcf, 0x09, 0xfe, 0x9f, 0x18, 0x0c,
-0xb0, 0x6c, 0x22, 0x69, 0xd6, 0x36, 0xcd, 0xc0,
-0x03, 0xfd, 0x96, 0x17, 0x8d, 0xd0, 0x18, 0x24,
-0xe3, 0xef, 0x4b, 0x33, 0xa2, 0x13, 0xf9, 0x27,
-0xf1, 0x6a, 0x77, 0x10, 0x35, 0x88, 0x08, 0x2e,
-0x70, 0x86, 0x38, 0x23, 0x5f, 0x9c, 0xff, 0x79,
-0x92, 0x09, 0xff, 0x80, 0xe1, 0xff, 0xc9, 0x35,
-0x68, 0x0f, 0xe7, 0x7a, 0x33, 0x8f, 0x8b, 0x1f,
-0xc0, 0xef, 0x48, 0x95, 0xf7, 0x46, 0xaf, 0x78,
-0x12, 0xfe, 0x14, 0x4b, 0x7d, 0x49, 0xf6, 0x87,
-0xcd, 0xcb, 0x4c, 0xf2, 0xff, 0xb0, 0x0f, 0xd5,
-0xb9, 0x8b, 0xad, 0xbf, 0xaf, 0x29, 0x1c, 0x1c,
-0xd7, 0xaa, 0xfe, 0x6e, 0xea, 0xa0, 0x38, 0x07,
-0x0e, 0x6b, 0x88, 0x18, 0x37, 0x88, 0xd7, 0xf0,
-0x1f, 0xc6, 0xca, 0xde, 0xf3, 0x61, 0xad, 0x17,
-0xad, 0xad, 0x49, 0xa8, 0x9d, 0xf6, 0xa9, 0x25,
-0x79, 0x79, 0xcc, 0xc3, 0x33, 0x12, 0x55, 0x4a,
-0xfb, 0x10, 0x9f, 0x4c, 0x7c, 0x5f, 0x1f, 0xcf,
-0x7f, 0x26, 0xc6, 0xfb, 0x7e, 0x5b, 0x7b, 0x86,
-0x19, 0x8e, 0xa0, 0x5c, 0xe5, 0x25, 0x70, 0x7e,
-0x93, 0xf3, 0x1f, 0x42, 0x8b, 0xca, 0x43, 0x1b,
-0x24, 0xc9, 0x7f, 0xd8, 0x93, 0xdb, 0x69, 0x8d,
-0xaf, 0xff, 0x1c, 0xfa, 0x18, 0x94, 0xd4, 0xd1,
-0xa0, 0x65, 0x0e, 0x2c, 0x10, 0x4a, 0xbc, 0x74,
-0x03, 0x4f, 0x84, 0x68, 0xdc, 0xa2, 0xd3, 0x41,
-0x92, 0xda, 0x1f, 0x36, 0xfe, 0xfc, 0xff, 0x05,
-0x3e, 0xd4, 0x66, 0x78, 0x9c, 0x1b, 0x63, 0x0c,
-0xcf, 0x8f, 0x38, 0xda, 0xc5, 0x19, 0x9e, 0x5e,
-0xc6, 0xbf, 0x6f, 0x4e, 0x0a, 0xff, 0x61, 0x6c,
-0xbe, 0x82, 0xcb, 0x62, 0x64, 0x3b, 0x1b, 0xfc,
-0x3f, 0x3a, 0xae, 0x58, 0xfb, 0xa2, 0xd8, 0x52,
-0xcc, 0x0a, 0x12, 0x13, 0xff, 0x21, 0x84, 0x92,
-0xeb, 0xbf, 0x96, 0x94, 0x11, 0xa7, 0x5f, 0x54,
-0xbd, 0x03, 0x86, 0xdb, 0x27, 0xe7, 0x14, 0x44,
-0x18, 0xf7, 0xc8, 0x99, 0xea, 0xbf, 0x68, 0xb3,
-0x83, 0x1a, 0x65, 0x5f, 0xbc, 0xa9, 0x68, 0x2b,
-0x14, 0x84, 0xa8, 0x4a, 0x8a, 0x24, 0x1c, 0xf4,
-0xd8, 0x56, 0xe0, 0xb6, 0x6f, 0xd5, 0x4a, 0x10,
-0x08, 0x79, 0x92, 0xfa, 0x25, 0xce, 0xc7, 0xc2,
-0x32, 0xb8, 0xdb, 0xd9, 0x0f, 0x33, 0x7c, 0x34,
-0x97, 0xac, 0x25, 0x5b, 0x99, 0x1a, 0x91, 0x15,
-0xff, 0x00, 0x6b, 0x14, 0x9c, 0xa7, 0x10, 0x08,
-0x91, 0x84, 0xfe, 0x12, 0xc0, 0xc8, 0xff, 0x61,
-0x6d, 0x2e, 0x3c, 0xbf, 0x68, 0x7f, 0x79, 0xa8,
-0xf7, 0x8e, 0xa7, 0x26, 0x3f, 0xa7, 0xe7, 0xeb,
-0x16, 0xaf, 0xff, 0x92, 0xba, 0x86, 0x16, 0xf7,
-0xd1, 0x9f, 0x78, 0x68, 0xc2, 0xff, 0x43, 0xd9,
-0xd3, 0xf0, 0x25, 0x5b, 0x10, 0xca, 0xac, 0x17,
-0x9f, 0x4e, 0x5f, 0xcd, 0xe6, 0xfa, 0xac, 0x4b,
-0xf1, 0x44, 0x7e, 0x8a, 0xf8, 0x47, 0x5e, 0x99,
-0xf3, 0x07, 0xf2, 0x7a, 0xf3, 0x82, 0xa8, 0x75,
-0xcc, 0x84, 0x7f, 0x12, 0xf5, 0x14, 0x21, 0x31,
-0x22, 0x9d, 0x8b, 0x2d, 0xec, 0x0a, 0x78, 0x3b,
-0xa6, 0xdf, 0xfb, 0x21, 0x4e, 0x8d, 0x98, 0xf4,
-0xff, 0x68, 0xd2, 0x7e, 0xef, 0x55, 0x56, 0x15,
-0xb2, 0x8d, 0x15, 0x4c, 0x83, 0x77, 0x79, 0x20,
-0x23, 0x22, 0xee, 0xcf, 0x38, 0xec, 0xaf, 0x8a,
-0x66, 0x9e, 0x10, 0xde, 0x85, 0x37, 0x58, 0x29,
-0xcf, 0x7f, 0x4e, 0xca, 0x87, 0x17, 0x60, 0x6d,
-0xac, 0xfe, 0xa2, 0xc1, 0x82, 0xcf, 0xef, 0x98,
-0x15, 0xa1, 0x0b, 0xc9, 0x0d, 0x7d, 0xff, 0x53,
-0x9d, 0x05, 0x16, 0x2f, 0x39, 0xe9, 0x59, 0xa3,
-0xe4, 0x6b, 0x8e, 0x6f, 0x92, 0x24, 0xfe, 0x0c,
-0x29, 0x9b, 0x15, 0x63, 0xbe, 0x8f, 0x4c, 0x45,
-0xf9, 0x53, 0xac, 0xd3, 0x6a, 0xc4, 0x3f, 0xab,
-0x5b, 0x71, 0xf0, 0x10, 0x1a, 0x1a, 0xab, 0xe9,
-0x33, 0xb5, 0x19, 0x4b, 0x49, 0x7f, 0x92, 0xff,
-0x30, 0x26, 0x7f, 0x78, 0x37, 0x79, 0x94, 0xe7,
-0xcc, 0xb9, 0x9d, 0x12, 0xb2, 0x02, 0xfc, 0x21,
-0x67, 0xde, 0x42, 0x17, 0x39, 0xaa, 0xf8, 0x99,
-0xc1, 0x50, 0x3a, 0x68, 0xfa, 0xbe, 0x46, 0xbd,
-0x1b, 0x6f, 0xa2, 0x3d, 0x89, 0xa7, 0x05, 0x7e,
-0xdb, 0xc9, 0xd1, 0x4b, 0x1b, 0xab, 0x3c, 0x46,
-0xc3, 0xe2, 0xc1, 0x3b, 0x5e, 0x65, 0x6e, 0x96,
-0x19, 0x42, 0x89, 0x3d, 0xf1, 0xbe, 0x0c, 0xe2,
-0xeb, 0xc3, 0xd1, 0xd1, 0x87, 0x3e, 0xbe, 0x3e,
-0x93, 0x42, 0x70, 0x51, 0xac, 0xf4, 0x66, 0x05,
-0x6b, 0x3e, 0xd1, 0x2e, 0x6a, 0x95, 0x83, 0xd3,
-0x3a, 0x0b, 0x3e, 0x4c, 0xf2, 0x3f, 0x1b, 0xfa,
-0x6e, 0x3e, 0x07, 0x39, 0x73, 0xd5, 0xc3, 0xbd,
-0x55, 0x9a, 0xed, 0x06, 0xf1, 0xfb, 0xf4, 0x5d,
-0x98, 0xdd, 0x25, 0x45, 0x11, 0x4f, 0x1e, 0xa1,
-0x3b, 0x42, 0xd6, 0xe1, 0x02, 0x33, 0xff, 0xb3,
-0x51, 0xbf, 0xcc, 0xb2, 0x54, 0x1e, 0xcf, 0xf2,
-0x95, 0x9c, 0x5a, 0xd4, 0xe3, 0x2f, 0x04, 0x3f,
-0xb1, 0x97, 0x67, 0x76, 0xf9, 0xff, 0xa2, 0xb4,
-0xe6, 0xdb, 0x07, 0x11, 0x51, 0xab, 0xbe, 0x04,
-0xfe, 0x89, 0xcf, 0xb7, 0x84, 0x2d, 0x78, 0x9a,
-0x84, 0x92, 0xd3, 0x72, 0x30, 0x7d, 0x85, 0xf4,
-0x24, 0xc2, 0x80, 0x85, 0x46, 0x3c, 0x48, 0xb1,
-0x07, 0xea, 0x9e, 0x4d, 0xc1, 0x3f, 0x99, 0xc6,
-0xfa, 0x58, 0x5c, 0xf8, 0xc9, 0x1b, 0xf9, 0x42,
-0x4d, 0x26, 0x0e, 0xd6, 0xc2, 0x61, 0x8f, 0xcb,
-0x33, 0x92, 0xde, 0x56, 0xcd, 0xeb, 0x73, 0x6f,
-0x30, 0x77, 0x38, 0x59, 0x11, 0x6f, 0x0a, 0x2c,
-0xf2, 0xfb, 0xf3, 0xb2, 0xa3, 0x9c, 0x07, 0xaa,
-0xdf, 0x06, 0xf7, 0xf1, 0x69, 0x3c, 0x03, 0x0a,
-0x15, 0x19, 0x73, 0x86, 0xc4, 0x24, 0xff, 0x21,
-0xfb, 0x05, 0xcf, 0xff, 0xa9, 0x62, 0x59, 0x3e,
-0x83, 0x2d, 0x13, 0x15, 0xfd, 0x0e, 0x32, 0xa2,
-0x21, 0x6c, 0x06, 0x04, 0x7e, 0x97, 0xe2, 0x19,
-0xbf, 0xe2, 0xf0, 0x8c, 0x04, 0xde, 0x10, 0x8c,
-0xfc, 0xb1, 0x08, 0x8f, 0xfe, 0x04, 0xfe, 0xc4,
-0xe7, 0xfb, 0x44, 0x17, 0x8b, 0x38, 0x4a, 0x79,
-0x7d, 0xf7, 0x97, 0xc2, 0x80, 0xef, 0xe7, 0x2a,
-0x9a, 0xba, 0xd7, 0xe4, 0x3f, 0xab, 0xb3, 0x3e,
-0x90, 0x7b, 0xee, 0x89, 0x6a, 0x2d, 0x3a, 0x2a,
-0xfa, 0x10, 0xb7, 0xbf, 0x74, 0xfb, 0x23, 0xbc,
-0x50, 0xab, 0x31, 0x80, 0x2b, 0x26, 0xaf, 0x36,
-0xe1, 0x1f, 0x23, 0xff, 0x39, 0xc3, 0xd9, 0x8b,
-0xf8, 0x47, 0x4f, 0x67, 0xda, 0x0a, 0x5d, 0xce,
-0x27, 0x19, 0x92, 0x1f, 0x1c, 0xf8, 0xbe, 0x08,
-0x6c, 0x98, 0x07, 0x07, 0x42, 0x4a, 0x7f, 0xd8,
-0x38, 0xfe, 0xd9, 0xc7, 0x69, 0x5d, 0x01, 0x81,
-0x56, 0xa8, 0xd5, 0xa1, 0xb6, 0xd2, 0xd3, 0xc0,
-0xef, 0x4f, 0xda, 0x78, 0xe9, 0xfd, 0xbe, 0x85,
-0xa6, 0xfa, 0xf7, 0x5c, 0xee, 0xf4, 0xab, 0xea,
-0x5d, 0x72, 0xa2, 0x66, 0x54, 0x3f, 0x0a, 0x55,
-0xf5, 0xb6, 0xa1, 0x9c, 0xd9, 0x68, 0xfa, 0xef,
-0xd0, 0x97, 0xec, 0xac, 0x19, 0x81, 0x8c, 0x96,
-0x79, 0x74, 0xc9, 0xda, 0x6f, 0x25, 0xf1, 0xcf,
-0x29, 0x16, 0xc7, 0x3f, 0x83, 0x1b, 0x4f, 0xc3,
-0x8b, 0xfc, 0x34, 0x45, 0x63, 0xb4, 0x12, 0xb1,
-0xc6, 0x79, 0x97, 0xe9, 0xcd, 0x11, 0x9b, 0x97,
-0x24, 0xf1, 0x8f, 0x51, 0xff, 0x3e, 0xa9, 0xf2,
-0xd5, 0xc5, 0xc1, 0x9a, 0xa8, 0x74, 0x10, 0xba,
-0xfb, 0xad, 0x85, 0xe2, 0x4c, 0x38, 0x58, 0xed,
-0x66, 0xce, 0x55, 0xb2, 0x93, 0x45, 0x3c, 0x06,
-0xff, 0xbc, 0x89, 0xff, 0x59, 0x72, 0x4a, 0x7b,
-0x61, 0xd6, 0xa8, 0x65, 0x63, 0xf6, 0xfb, 0x5a,
-0x2b, 0xb8, 0xcf, 0xd3, 0x17, 0x48, 0x11, 0xf1,
-0x9f, 0x28, 0x63, 0x74, 0x95, 0x25, 0x83, 0xb4,
-0x0c, 0xe0, 0xf3, 0xff, 0xda, 0xf3, 0x45, 0xaa,
-0xff, 0x07, 0x50, 0xc8, 0x80, 0x32, 0x92, 0xdd,
-0x08, 0x85, 0x51, 0x5a, 0x99, 0xfd, 0x75, 0xd6,
-0x88, 0x82, 0x3a, 0xa3, 0x1c, 0xcd, 0xf6, 0x0e,
-0xb6, 0x42, 0x91, 0xcb, 0x53, 0xfb, 0x5f, 0x28,
-0xbb, 0x1a, 0x8b, 0xa3, 0xdf, 0xf9, 0x71, 0xf6,
-0xbb, 0xb0, 0xaa, 0x31, 0xbf, 0xcb, 0xb1, 0x92,
-0x5c, 0xe7, 0x5b, 0x15, 0x9a, 0xee, 0xa3, 0xb7,
-0x91, 0x4a, 0xdf, 0x33, 0x9b, 0x1e, 0x50, 0xe5,
-0xbf, 0x23, 0x97, 0x12, 0xf6, 0x5d, 0xbd, 0x51,
-0xff, 0x5e, 0xd1, 0x37, 0x30, 0x7b, 0xc6, 0x80,
-0xaa, 0xc3, 0xce, 0x11, 0xab, 0x4b, 0x74, 0x6a,
-0xaf, 0xb2, 0x39, 0xe0, 0x9c, 0x2e, 0x5a, 0xe1,
-0x74, 0x2e, 0x1a, 0x56, 0x45, 0x4d, 0xe6, 0xfe,
-0x17, 0x7c, 0x7d, 0x16, 0x1c, 0xb3, 0x9d, 0xfd,
-0xc6, 0x25, 0xb8, 0xc4, 0xaa, 0x9a, 0x6d, 0x67,
-0xe5, 0x4b, 0xda, 0x97, 0x50, 0x55, 0x68, 0xdb,
-0x22, 0x9e, 0x94, 0xde, 0xcb, 0xae, 0xf2, 0xd8,
-0x46, 0x6b, 0x06, 0x13, 0xf8, 0xa7, 0x2b, 0x0d,
-0xd1, 0x94, 0xe0, 0x1e, 0x5e, 0x1c, 0xcc, 0x71,
-0x4a, 0x87, 0x84, 0x6e, 0x01, 0x0f, 0xa6, 0xd1,
-0xd6, 0x41, 0xaf, 0x08, 0x8b, 0xdb, 0xc8, 0x00,
-0x7b, 0x38, 0xb0, 0x44, 0x37, 0xc7, 0xbf, 0x26,
-0x23, 0xc8, 0x91, 0x6e, 0x8d, 0xdc, 0xd5, 0x90,
-0x3d, 0x95, 0xae, 0xe1, 0xd6, 0x93, 0xcb, 0x50,
-0xc4, 0xf9, 0x3c, 0xed, 0xb9, 0x02, 0x0d, 0xab,
-0xfb, 0x9b, 0x65, 0x2f, 0x49, 0xf2, 0x3f, 0xeb,
-0xf0, 0x34, 0x59, 0x6f, 0x78, 0x7b, 0xfc, 0xd3,
-0xe0, 0x59, 0x96, 0xaf, 0x22, 0xda, 0xf9, 0x2e,
-0x87, 0x3d, 0x21, 0xba, 0x14, 0x81, 0x5f, 0x88,
-0x47, 0xc4, 0x28, 0x49, 0xf2, 0xbb, 0xd6, 0xe7,
-0x0e, 0x20, 0x5a, 0x2e, 0xec, 0x6d, 0x29, 0xf7,
-0x5b, 0xc1, 0x1f, 0x54, 0xcb, 0xf1, 0xfe, 0xbc,
-0x03, 0x66, 0x61, 0x27, 0xfd, 0x25, 0x1e, 0xb4,
-0xc6, 0x7c, 0x35, 0x2a, 0x07, 0x3d, 0xdf, 0xb9,
-0xa6, 0xfe, 0xdd, 0xcd, 0xac, 0x43, 0xb2, 0xc3,
-0x7a, 0x84, 0x94, 0x76, 0xdb, 0x42, 0x72, 0x3d,
-0x39, 0x88, 0x98, 0x8b, 0x7e, 0x24, 0xf6, 0xb0,
-0x23, 0x01, 0x77, 0x17, 0xee, 0x90, 0x47, 0xff,
-0x95, 0xfe, 0x17, 0x05, 0x3a, 0xb9, 0x64, 0x0c,
-0x6e, 0xd9, 0x42, 0x46, 0xab, 0x6f, 0x83, 0x9b,
-0x59, 0xac, 0x3f, 0x2c, 0xd8, 0x56, 0x35, 0x6d,
-0x4c, 0xfa, 0x1f, 0x94, 0x58, 0x34, 0xc4, 0xc6,
-0xdb, 0x5e, 0xf4, 0x72, 0x36, 0xa4, 0x20, 0x99,
-0x6e, 0x44, 0xc4, 0x16, 0x6f, 0x12, 0x67, 0xb0,
-0x03, 0x52, 0xa5, 0x36, 0x29, 0x68, 0xe2, 0x7f,
-0x0e, 0xc5, 0xf2, 0x7f, 0x38, 0x69, 0x4f, 0x21,
-0x31, 0xd2, 0x4e, 0x14, 0x92, 0xc6, 0x5a, 0x96,
-0x75, 0x68, 0x81, 0xa0, 0x65, 0x86, 0xf0, 0x96,
-0xb7, 0xa4, 0x7f, 0x51, 0xbb, 0x45, 0x15, 0x26,
-0x3e, 0x70, 0xb9, 0x81, 0x97, 0x78, 0xd9, 0xbb,
-0x65, 0xba, 0xf4, 0x6b, 0xb0, 0x73, 0x36, 0xbf,
-0x9d, 0x86, 0xff, 0xa7, 0x2e, 0x98, 0x6d, 0x48,
-0x24, 0x4d, 0xde, 0xe0, 0xbf, 0x36, 0xff, 0xc7,
-0x28, 0x7b, 0x9f, 0x82, 0xab, 0x1d, 0xe2, 0x85,
-0xf0, 0xbf, 0x20, 0x86, 0xff, 0x27, 0xdb, 0x3f,
-0x09, 0x1a, 0x35, 0xa7, 0xd6, 0x66, 0xe6, 0x7f,
-0xee, 0xa1, 0x6a, 0xac, 0xda, 0x8b, 0xc7, 0xbf,
-0x06, 0xd0, 0xda, 0x92, 0x51, 0xb5, 0xa2, 0x16,
-0x2f, 0x05, 0xa7, 0xbf, 0x46, 0x25, 0xad, 0xbc,
-0xfe, 0x91, 0xd5, 0xfc, 0x36, 0x05, 0xff, 0x7c,
-0x0e, 0x15, 0xde, 0xf5, 0xf7, 0xd6, 0xbc, 0x06,
-0x67, 0x79, 0xfe, 0xcf, 0x26, 0xf1, 0xfb, 0x30,
-0xee, 0xa9, 0xf0, 0xde, 0x7c, 0x4f, 0xd3, 0xf9,
-0xf4, 0x58, 0x21, 0x58, 0x41, 0x92, 0xff, 0xb9,
-0x3d, 0xed, 0x3c, 0x39, 0x00, 0x55, 0x1e, 0xa7,
-0xb7, 0xa9, 0x2c, 0x74, 0xb8, 0xab, 0x74, 0xa1,
-0x75, 0xa9, 0x58, 0xc6, 0x5e, 0x63, 0x55, 0xf5,
-0xd6, 0xe3, 0x4d, 0xb7, 0xe2, 0x79, 0x44, 0xfc,
-0xf0, 0xa6, 0x58, 0x92, 0x92, 0xff, 0x13, 0x20,
-0x3c, 0xfe, 0x9e, 0x9d, 0xaf, 0xb4, 0x6a, 0x45,
-0x79, 0x56, 0x46, 0x42, 0x10, 0x50, 0x50, 0xad,
-0x77, 0x58, 0x54, 0xd6, 0xa3, 0xd9, 0x21, 0xf3,
-0x19, 0x3c, 0x38, 0x09, 0x8b, 0x21, 0xad, 0x5f,
-0x6a, 0xcc, 0xe0, 0x6c, 0xcf, 0x45, 0x92, 0x8a,
-0x78, 0xcf, 0x43, 0xaf, 0xf3, 0xa7, 0xf1, 0xfc,
-0xe7, 0xda, 0x99, 0x8a, 0x05, 0x97, 0xc2, 0xf1,
-0x02, 0xbe, 0x78, 0x6a, 0xfc, 0x0b, 0x5a, 0x48,
-0x89, 0xee, 0x08, 0xfa, 0x79, 0xda, 0x67, 0x51,
-0xf5, 0x9d, 0x41, 0xd2, 0xc9, 0x38, 0x11, 0x62,
-0x46, 0xd0, 0x52, 0x58, 0xb8, 0xdb, 0xf7, 0x43,
-0x6f, 0x46, 0xd0, 0x93, 0x9e, 0xfc, 0x5e, 0xb9,
-0x9d, 0xb1, 0x6e, 0x26, 0x41, 0x79, 0x0e, 0x39,
-0xe0, 0x31, 0x68, 0x7f, 0x0a, 0x11, 0xdf, 0x56,
-0x7a, 0x33, 0x37, 0x89, 0x5f, 0x87, 0x71, 0xad,
-0x5c, 0xb3, 0xfe, 0x5a, 0x76, 0x24, 0xee, 0xdf,
-0x6a, 0xe0, 0x1f, 0x3c, 0x74, 0xd9, 0x22, 0x4f,
-0x14, 0xdf, 0xb7, 0x1c, 0xed, 0xf7, 0x33, 0xbc,
-0xfe, 0x5d, 0xcb, 0xba, 0x41, 0x3c, 0xa3, 0x9d,
-0x45, 0x43, 0xfb, 0x9a, 0xfe, 0x17, 0x06, 0xfe,
-0x51, 0x17, 0x37, 0xcb, 0xc0, 0x22, 0x5a, 0x37,
-0xb1, 0x05, 0x44, 0x1f, 0x44, 0xa8, 0x5b, 0x71,
-0xae, 0x96, 0xf3, 0x61, 0x4c, 0x35, 0x3e, 0x8d,
-0xc9, 0xff, 0xd3, 0x4c, 0x8d, 0xb2, 0x77, 0xfa,
-0xa1, 0x7f, 0x3e, 0xac, 0x86, 0x82, 0xa0, 0xfc,
-0x11, 0x6f, 0x0b, 0x1b, 0xca, 0x37, 0xfa, 0xc3,
-0xc2, 0x7e, 0xcd, 0x1f, 0x90, 0xa3, 0x24, 0xa9,
-0x5f, 0x26, 0xf2, 0x9f, 0x03, 0x4a, 0xb6, 0xa5,
-0xd6, 0x0f, 0xaa, 0x2a, 0x77, 0x91, 0x07, 0x35,
-0x56, 0xab, 0x32, 0xb4, 0xc7, 0x25, 0xc7, 0x76,
-0x56, 0x18, 0x91, 0xdb, 0x37, 0x26, 0xf1, 0x4f,
-0xbe, 0x30, 0x95, 0xee, 0x52, 0x8b, 0x07, 0x03,
-0xde, 0xec, 0x3c, 0xb6, 0x1a, 0xf2, 0x15, 0xde,
-0xb6, 0x86, 0x03, 0xa1, 0x46, 0x3c, 0xbf, 0xb9,
-0x85, 0x2f, 0x69, 0xd3, 0x75, 0xb9, 0xf6, 0x1a,
-0xff, 0xcf, 0x97, 0xd1, 0x8a, 0xa8, 0x73, 0xa9,
-0x38, 0x0f, 0xfa, 0xd8, 0x6c, 0x9f, 0xad, 0x5e,
-0x7c, 0x98, 0xf4, 0xb3, 0x70, 0xc8, 0xca, 0xf3,
-0x7f, 0xae, 0xb0, 0x97, 0x78, 0x22, 0x90, 0x25,
-0xc9, 0xff, 0x7c, 0x53, 0xcc, 0xfe, 0x9a, 0x14,
-0x14, 0x87, 0x3d, 0x7b, 0x50, 0xf1, 0xdd, 0xcc,
-0xf3, 0x09, 0x71, 0x05, 0xd8, 0xdf, 0x73, 0xfe,
-0xc3, 0x2b, 0x30, 0x6f, 0xd0, 0x16, 0x2d, 0x48,
-0xf5, 0xff, 0x5c, 0x65, 0x95, 0x85, 0xd6, 0x95,
-0x35, 0x2f, 0x2c, 0x3c, 0xd2, 0x58, 0xb9, 0xdc,
-0x39, 0x26, 0xfe, 0x0c, 0x06, 0x98, 0xa1, 0xd6,
-0xa7, 0x69, 0x9f, 0xb0, 0x1f, 0x9d, 0xb7, 0x9d,
-0x98, 0x94, 0x67, 0x8a, 0x7f, 0x19, 0xf6, 0x97,
-0xc3, 0xe1, 0xf5, 0xdc, 0xc0, 0x56, 0xe7, 0x95,
-0xd4, 0xd3, 0x51, 0xf2, 0x0b, 0xce, 0x3f, 0xd6,
-0x4c, 0x1f, 0xc5, 0x17, 0xf9, 0x9f, 0x90, 0xdf,
-0x28, 0x6b, 0xe9, 0x49, 0xfe, 0xe7, 0x0d, 0x46,
-0xfc, 0xcb, 0x49, 0x11, 0xed, 0xb4, 0x6b, 0xab,
-0xa1, 0x38, 0x92, 0x81, 0xaf, 0x89, 0xf3, 0x55,
-0x96, 0x61, 0xcf, 0x9e, 0xa3, 0x36, 0xc3, 0x74,
-0xad, 0xcd, 0x4b, 0xfa, 0x4d, 0xfd, 0x2f, 0x06,
-0x14, 0x5c, 0x4f, 0x81, 0x0a, 0xa4, 0x8b, 0xf8,
-0xf3, 0x9d, 0xbc, 0x91, 0x41, 0x33, 0xa2, 0x96,
-0xd0, 0xda, 0x8c, 0xb0, 0x85, 0xc2, 0x53, 0xac,
-0x10, 0xe4, 0x22, 0x13, 0xfe, 0x71, 0x4c, 0xd9,
-0xa6, 0x5c, 0xc5, 0xf7, 0x5d, 0xbc, 0x29, 0xa7,
-0x8b, 0x1c, 0xec, 0xaf, 0x1c, 0xcc, 0x0c, 0x15,
-0x38, 0x89, 0x0e, 0xee, 0x60, 0x31, 0x5a, 0xdc,
-0xf0, 0x61, 0xe0, 0x65, 0xc5, 0xb6, 0x59, 0x4e,
-0xe2, 0x9f, 0xe0, 0x44, 0xfc, 0x2b, 0x28, 0xfc,
-0x80, 0x3b, 0xca, 0xd2, 0xd1, 0xcc, 0xff, 0x0d,
-0x19, 0x33, 0xda, 0x5e, 0x88, 0x51, 0x65, 0xbc,
-0x6e, 0x9e, 0xba, 0xa4, 0x91, 0x24, 0xfb, 0xbd,
-0x6e, 0x88, 0xe5, 0x3f, 0x37, 0xd8, 0x06, 0xb7,
-0xd6, 0xc3, 0x11, 0x69, 0xb6, 0x4e, 0x4f, 0x8b,
-0xcb, 0xd1, 0x7e, 0x99, 0xcd, 0xa6, 0xbe, 0x25,
-0xba, 0xd4, 0xb7, 0x61, 0x6e, 0xba, 0x2d, 0x4c,
-0xa2, 0x26, 0xfc, 0xb3, 0x02, 0x5e, 0x41, 0xfb,
-0xa2, 0x6d, 0x9a, 0x67, 0x9e, 0xd2, 0xca, 0x69,
-0x7c, 0xc6, 0xc8, 0xd7, 0x20, 0x10, 0xe9, 0x60,
-0xb4, 0xa7, 0x48, 0x24, 0x5d, 0xcc, 0x9e, 0xd7,
-0xb6, 0xd6, 0x3f, 0xa4, 0x99, 0xf0, 0x4f, 0x4c,
-0x5f, 0xb7, 0x93, 0x92, 0xf4, 0xa7, 0xc0, 0xbe,
-0xcc, 0x12, 0xc6, 0xd3, 0x19, 0xe0, 0x8d, 0x57,
-0x42, 0xe4, 0x16, 0xe9, 0xc9, 0x80, 0x1d, 0x7f,
-0x4a, 0x8f, 0xa6, 0xf8, 0x7f, 0x70, 0x7d, 0x08,
-0xca, 0x1f, 0x28, 0xf4, 0x43, 0xc8, 0x52, 0xc4,
-0x8f, 0x21, 0x53, 0x1c, 0xcc, 0xe1, 0x46, 0x7b,
-0x24, 0xc4, 0x89, 0x02, 0x72, 0x3d, 0x49, 0xfb,
-0x8b, 0x51, 0x03, 0xff, 0xd4, 0xd9, 0x82, 0xb2,
-0xc3, 0x7f, 0x90, 0xb8, 0x4f, 0x64, 0x85, 0x73,
-0x9c, 0x24, 0xa2, 0xcd, 0x63, 0x14, 0x0d, 0x01,
-0xe9, 0x2d, 0xce, 0xaf, 0x8b, 0x82, 0x37, 0x3d,
-0x19, 0xff, 0xba, 0xa4, 0xf0, 0xf8, 0xd7, 0x12,
-0xc4, 0x33, 0x28, 0x9d, 0xab, 0x5a, 0x33, 0x79,
-0x61, 0xc5, 0x65, 0x75, 0x2e, 0xb3, 0xed, 0xe4,
-0x8a, 0x9e, 0xbc, 0x02, 0x36, 0xbd, 0x60, 0xf8,
-0x1b, 0x13, 0xf2, 0xc4, 0xdc, 0x8f, 0x6f, 0x8d,
-0xeb, 0x3f, 0x40, 0x3f, 0x3e, 0xd3, 0xfd, 0x27,
-0xb9, 0xfe, 0x9a, 0xfb, 0x4f, 0x64, 0x0a, 0x59,
-0x23, 0xc6, 0xa0, 0xd4, 0x9e, 0xb8, 0x02, 0xb4,
-0xc9, 0xad, 0x0e, 0xf0, 0x9f, 0x74, 0xd3, 0xfc,
-0xff, 0xb7, 0xfa, 0x21, 0xc6, 0xff, 0xa3, 0xa5,
-0xe6, 0x6b, 0x3c, 0xe3, 0xec, 0xda, 0x79, 0xff,
-0x4a, 0x1b, 0xc4, 0xaf, 0x7c, 0x88, 0xff, 0x17,
-0xd7, 0xff, 0xdf, 0xe8, 0x87, 0x08, 0xc9, 0x2b,
-0xda, 0x57, 0xfb, 0x21, 0x0e, 0xf0, 0xe4, 0x1d,
-0x7d, 0x8d, 0x2b, 0x3e, 0x30, 0xdf, 0x3f, 0x76,
-0x25, 0x75, 0xfd, 0x1b, 0xc1, 0xa0, 0x03, 0x93,
-0x26, 0x06, 0xa6, 0x85, 0x8c, 0x5d, 0xb9, 0x66,
-0xfd, 0xf3, 0xf9, 0x6f, 0xf1, 0xa7, 0xe5, 0x03,
-0xd3, 0xfa, 0xc7, 0xaf, 0x24, 0x17, 0xc7, 0xe8,
-0x87, 0x38, 0x60, 0xac, 0x7f, 0x7c, 0xb5, 0x53,
-0xbe, 0x7e, 0xec, 0xef, 0xff, 0xf6, 0x43, 0xfc,
-0xf7, 0x07, 0xff, 0x5f, 0x9e, 0x4f, 0x9a, 0xa5,
-0xd8, 0xa1, 0xf3, 0xa4, 0x1e, 0xcc, 0x1f, 0xfd,
-0x5b, 0xe7, 0x31, 0x0d, 0x0f, 0x5d, 0x5a, 0x35,
-0x28, 0xec, 0xaf, 0x3c, 0x8f, 0xab, 0xf9, 0xa6,
-0xf5, 0x88, 0x5f, 0x39, 0x86, 0xf6, 0x7f, 0x4b,
-0x1e, 0x5a, 0x05, 0x20, 0x78, 0x13, 0x2d, 0xf5,
-0xb6, 0x3f, 0xfa, 0x37, 0xe5, 0xa1, 0x85, 0x97,
-0x28, 0xdb, 0x51, 0x09, 0x4d, 0x88, 0xc1, 0xaf,
-0x0c, 0x52, 0xde, 0xd7, 0x70, 0x3a, 0x0a, 0x54,
-0xf3, 0x7f, 0x55, 0xb0, 0x11, 0x85, 0x35, 0x7f,
-0x55, 0x1e, 0x4a, 0x2a, 0xa5, 0x44, 0x04, 0xfd,
-0xab, 0x62, 0xd0, 0xaf, 0xf0, 0xbc, 0x86, 0xaf,
-0xca, 0xc3, 0xf8, 0xac, 0xaf, 0xfc, 0xfd, 0x6b,
-0xf2, 0x30, 0x7b, 0x8d, 0x73, 0x0b, 0x0f, 0x87,
-0x4f, 0xed, 0xc3, 0xd5, 0x1e, 0x98, 0x58, 0xff,
-0x01, 0xb3, 0x3c, 0x4c, 0x91, 0x27, 0x30, 0x49,
-0xc1, 0xf5, 0xf7, 0xfc, 0xf5, 0xf2, 0x70, 0x8d,
-0x9a, 0x0f, 0xd6, 0xea, 0x49, 0x7f, 0xbd, 0x3c,
-0x74, 0x26, 0x84, 0xde, 0x5f, 0xd3, 0x1f, 0x56,
-0x45, 0x63, 0x02, 0xac, 0x35, 0xa2, 0x97, 0xfd,
-0x75, 0xfa, 0x2e, 0x9b, 0xf0, 0xf5, 0x23, 0x19,
-0xe0, 0xf9, 0xeb, 0xf4, 0x91, 0xc2, 0x45, 0xa4,
-0x55, 0x14, 0x81, 0xfd, 0x95, 0xfd, 0x61, 0x05,
-0xfe, 0x70, 0xe2, 0xbf, 0xba, 0xfe, 0x13, 0x7f,
-0x66, 0x79, 0xc8, 0x73, 0x09, 0xb4, 0x7f, 0x7b,
-0xea, 0x35, 0x7f, 0x15, 0x15, 0x28, 0x70, 0x19,
-0x5c, 0xb3, 0xc4, 0xd7, 0xfe, 0x99, 0xe5, 0x21,
-0x59, 0x4a, 0xfe, 0xfa, 0xdb, 0xf3, 0x3f, 0x7c,
-0x21, 0xf6, 0xbf, 0x31, 0x3d, 0x57, 0xc8, 0xce,
-0x77, 0xfd, 0xaf, 0xa7, 0x25, 0xfe, 0xfe, 0xa3,
-0xc9, 0x9f, 0xff, 0x60, 0xf3, 0x5f, 0xab, 0x16,
-0x1b, 0xb4, 0x93, 0xca, 0x5c, 0xc8, 0xec, 0x35,
-0x06, 0xff, 0x3d, 0x37, 0xf3, 0x35, 0xf1, 0xa1,
-0xea, 0xfb, 0xbc, 0x73, 0x8d, 0x81, 0x36, 0xb5,
-0xe1, 0x6b, 0xd2, 0x64, 0x7d, 0x76, 0x62, 0xfe,
-0xed, 0xb5, 0x69, 0x0f, 0x09, 0xf7, 0x69, 0x7f,
-0xab, 0x40, 0xbf, 0x31, 0xf0, 0x2a, 0x53, 0x8c,
-0x81, 0xef, 0x6f, 0x71, 0x20, 0xe4, 0x1b, 0x3f,
-0xa5, 0xe9, 0xb3, 0x27, 0xf0, 0x2a, 0x34, 0x7b,
-0x04, 0x95, 0xd5, 0xa9, 0xd9, 0x14, 0xfa, 0x62,
-0x83, 0x3c, 0xc9, 0x1f, 0xbf, 0x22, 0xad, 0x16,
-0xf2, 0x63, 0x03, 0x96, 0xfc, 0xa0, 0x0c, 0x04,
-0x1f, 0x2c, 0x85, 0xeb, 0xe0, 0x7f, 0x32, 0x63,
-0x70, 0x2f, 0x4d, 0x5b, 0x2d, 0xdc, 0xcf, 0x96,
-0x6a, 0xd7, 0x29, 0x69, 0x78, 0x45, 0x58, 0xaa,
-0x7d, 0x1b, 0xd2, 0x12, 0xe1, 0x68, 0x7c, 0xfe,
-0xa5, 0x69, 0x65, 0xc2, 0x5d, 0xec, 0x5b, 0xd5,
-0x52, 0x20, 0xed, 0x61, 0xe1, 0x3e, 0xfd, 0x6f,
-0xd5, 0x29, 0x91, 0xb4, 0x87, 0xe1, 0x3e, 0xf6,
-0xb7, 0xce, 0x29, 0x07, 0x85, 0x7b, 0x84, 0xfb,
-0xd8, 0xb7, 0xd4, 0x5c, 0xd3, 0xf3, 0xbc, 0xa6,
-0x69, 0xaa, 0x42, 0x25, 0x22, 0x00, 0xef, 0xf0,
-0x99, 0x07, 0xe9, 0x20, 0x30, 0x25, 0x3e, 0x58,
-0x25, 0xf9, 0x58, 0xec, 0x4a, 0xf2, 0x7d, 0x5f,
-0xab, 0x93, 0x96, 0x09, 0x79, 0xec, 0x0e, 0x80,
-0x80, 0x64, 0x17, 0x28, 0xf3, 0xa8, 0x4a, 0x40,
-0xc2, 0x53, 0xce, 0x07, 0xcd, 0x92, 0x2a, 0x50,
-0x3c, 0xd7, 0x8a, 0x79, 0xfe, 0xc2, 0xb4, 0x7b,
-0x1a, 0xef, 0x0d, 0xfd, 0x0d, 0x95, 0x68, 0x9a,
-0xa7, 0xd1, 0x3b, 0x2a, 0x39, 0xa6, 0x58, 0xd2,
-0xb4, 0x46, 0x6f, 0xe8, 0xde, 0xf2, 0x29, 0x62,
-0x9a, 0xc6, 0xbc, 0xea, 0x94, 0xa9, 0x53, 0xb4,
-0xe4, 0xf3, 0xb0, 0xa9, 0xc2, 0xdf, 0xc2, 0xdf,
-0xe8, 0x53, 0xbc, 0xa8, 0x06, 0xf8, 0x60, 0x72,
-0x43, 0xda, 0x7d, 0xc2, 0xb7, 0xd8, 0xbd, 0xfa,
-0x14, 0x17, 0x0e, 0x44, 0xc0, 0x41, 0xb9, 0x94,
-0x30, 0xbf, 0x70, 0x3e, 0xae, 0x1d, 0x64, 0x83,
-0x14, 0x02, 0xee, 0xf4, 0x50, 0x34, 0x81, 0x8b,
-0xc0, 0x1a, 0x2e, 0x0b, 0x15, 0x41, 0x42, 0xa8,
-0x85, 0x6a, 0x4a, 0x81, 0x6a, 0xd3, 0xfa, 0xf8,
-0xb8, 0xa3, 0x1a, 0xcd, 0x0e, 0x30, 0x3c, 0xd6,
-0x80, 0x86, 0xb2, 0x1a, 0xbf, 0x42, 0xd5, 0xf4,
-0xf8, 0x4f, 0xd5, 0xa6, 0xf5, 0xf1, 0x66, 0x2c,
-0x17, 0xfe, 0x0e, 0xbe, 0xad, 0x15, 0xb2, 0xb4,
-0xe5, 0x69, 0x7c, 0x30, 0x25, 0x98, 0xe6, 0x23,
-0x27, 0xe0, 0xdb, 0x80, 0x03, 0x55, 0x38, 0x01,
-0xff, 0x04, 0x0b, 0xcc, 0xef, 0xab, 0x89, 0xbc,
-0x51, 0x6a, 0x99, 0x2a, 0xb1, 0xd8, 0x80, 0x87,
-0x32, 0x96, 0xe1, 0x60, 0x86, 0x31, 0x10, 0x96,
-0xb2, 0xeb, 0xf0, 0x7b, 0x99, 0xf6, 0x8f, 0x47,
-0x72, 0xf5, 0x5a, 0xd5, 0x1a, 0x9a, 0xe7, 0x97,
-0x5c, 0x8d, 0x7c, 0xa0, 0xf4, 0x49, 0x2e, 0xdd,
-0xaa, 0x56, 0x53, 0xe5, 0x55, 0x88, 0x5d, 0xc9,
-0xd3, 0x27, 0x27, 0x9e, 0x07, 0xb8, 0xc4, 0xb2,
-0xc6, 0xe4, 0x5b, 0x7c, 0xa0, 0x4f, 0x0c, 0x22,
-0xb1, 0x81, 0xaa, 0x99, 0x36, 0x35, 0x23, 0x82,
-0x4b, 0x5f, 0xac, 0xe6, 0x50, 0xdc, 0x66, 0x2e,
-0xc6, 0x07, 0xb5, 0x7d, 0x82, 0xab, 0xd1, 0xb8,
-0x72, 0x90, 0xff, 0xe4, 0xfa, 0x96, 0x53, 0xd2,
-0x4d, 0xeb, 0xe3, 0x49, 0xf3, 0x35, 0x2e, 0x55,
-0xbf, 0x8d, 0xf3, 0xe3, 0x83, 0x29, 0x38, 0xe8,
-0x35, 0x06, 0x4d, 0x82, 0xda, 0xbb, 0xd4, 0xf5,
-0x6d, 0xeb, 0x14, 0xf3, 0xfe, 0xf1, 0x18, 0x2b,
-0x97, 0x58, 0xc2, 0xf8, 0x40, 0x32, 0x06, 0x92,
-0xca, 0xac, 0xaa, 0x48, 0x85, 0xd4, 0xf7, 0xf5,
-0x35, 0xe6, 0xa9, 0x77, 0xe0, 0x47, 0xc3, 0xc1,
-0xf5, 0xea, 0x1d, 0x74, 0xb2, 0x5f, 0x5a, 0x8e,
-0xaf, 0x79, 0x47, 0xdd, 0xe4, 0x8d, 0x92, 0xca,
-0xdf, 0xb7, 0x2e, 0x65, 0xff, 0xf8, 0xd2, 0x96,
-0x0a, 0xdf, 0x86, 0xbf, 0x61, 0x69, 0x3e, 0x29,
-0x36, 0x98, 0x82, 0x57, 0xa4, 0x3b, 0xe0, 0x76,
-0x3e, 0xa0, 0xc2, 0x1d, 0x30, 0x99, 0x49, 0xa6,
-0xfd, 0xd3, 0x9b, 0x2e, 0x3c, 0xc4, 0xee, 0xf5,
-0x4d, 0x69, 0x4f, 0xbb, 0x43, 0xa8, 0x66, 0x5e,
-0x5f, 0x6e, 0x9e, 0x90, 0x8e, 0x03, 0x65, 0x62,
-0xc0, 0xaf, 0xa4, 0x25, 0xcc, 0x7d, 0x3c, 0x8f,
-0x5c, 0x8d, 0x50, 0x54, 0x01, 0x4a, 0x36, 0x1e,
-0x81, 0xea, 0xd8, 0x59, 0x90, 0x18, 0x1e, 0x8a,
-0x3a, 0x89, 0x5f, 0xe1, 0x83, 0xdc, 0xa4, 0x7b,
-0x09, 0x5e, 0xbb, 0x83, 0x4c, 0x66, 0xcd, 0xbe,
-0x7c, 0x85, 0xde, 0x21, 0x7e, 0x93, 0x1d, 0xf7,
-0xdd, 0x9a, 0x97, 0xc9, 0x07, 0xf7, 0x1a, 0x83,
-0x49, 0xf1, 0x2b, 0xa6, 0xe7, 0x79, 0x2d, 0x3d,
-0xed, 0xa1, 0x46, 0x94, 0x06, 0x79, 0x53, 0x5e,
-0x97, 0x62, 0x83, 0xb4, 0xd7, 0x13, 0x57, 0x70,
-0x70, 0xd2, 0xf7, 0xdf, 0xf3, 0xa6, 0x98, 0xe5,
-0xc9, 0x1d, 0xe2, 0x43, 0x6c, 0xb3, 0x6f, 0x2e,
-0x4e, 0x23, 0x7c, 0xf0, 0xdf, 0xf3, 0x32, 0x5e,
-0xc7, 0x2b, 0xf7, 0xe1, 0x95, 0xcc, 0xd7, 0x27,
-0x3d, 0xc4, 0xa6, 0xfa, 0xbe, 0x86, 0xf3, 0x27,
-0x9b, 0xe6, 0xc7, 0xee, 0xb6, 0x94, 0xa6, 0xdc,
-0xd6, 0x6a, 0x0c, 0x94, 0xd9, 0x38, 0xa8, 0xe1,
-0xf3, 0x4d, 0xfb, 0x47, 0x50, 0x81, 0x9f, 0x98,
-0xb4, 0x84, 0xd8, 0xe1, 0x83, 0xfb, 0x8c, 0x01,
-0xf0, 0xc1, 0xd7, 0x50, 0xfe, 0x98, 0x76, 0x5b,
-0xfa, 0x64, 0x94, 0x36, 0xbe, 0xeb, 0xf2, 0x62,
-0x62, 0xc7, 0xf7, 0x6d, 0x63, 0xd0, 0x18, 0xbb,
-0x92, 0x96, 0xdf, 0xc8, 0xaf, 0x4c, 0x31, 0xcd,
-0xbf, 0x5d, 0x4b, 0x73, 0x09, 0x8b, 0xc9, 0xb7,
-0x40, 0x62, 0x69, 0x0d, 0xc2, 0x7d, 0xf0, 0x35,
-0xc8, 0xd5, 0x8d, 0xc1, 0xdf, 0xc2, 0x14, 0x1d,
-0x7f, 0x8a, 0x0d, 0x92, 0xcf, 0x73, 0xbb, 0x69,
-0xff, 0xa0, 0xb4, 0x51, 0xa5, 0x89, 0x41, 0x3a,
-0x15, 0xf8, 0xf3, 0x18, 0x03, 0x66, 0x7a, 0xdf,
-0xf8, 0xfe, 0x31, 0x76, 0x57, 0x23, 0xff, 0x87,
-0x93, 0x63, 0x03, 0x0f, 0x55, 0xfc, 0xf8, 0x13,
-0x1f, 0x78, 0xcd, 0xf3, 0x6b, 0xd2, 0xbc, 0xbd,
-0xf7, 0xba, 0xfe, 0x86, 0xae, 0x22, 0x5c, 0xec,
-0xa8, 0xb9, 0xd6, 0x29, 0x1e, 0x49, 0x6b, 0xf6,
-0xaa, 0xf7, 0xd2, 0x29, 0xa2, 0xe0, 0x45, 0xf9,
-0x93, 0x4b, 0xd3, 0xc0, 0xb4, 0x3e, 0x62, 0xbe,
-0x37, 0x72, 0xaf, 0x6b, 0x0a, 0x95, 0xf0, 0x57,
-0xfd, 0x5e, 0x75, 0x8a, 0x35, 0xad, 0x86, 0x0f,
-0x5c, 0x38, 0xf0, 0xc4, 0x06, 0x34, 0x4d, 0x33,
-0xad, 0x0f, 0x68, 0x9a, 0xa2, 0x48, 0x92, 0xa0,
-0xc4, 0x24, 0x1f, 0x82, 0xa6, 0xf8, 0x40, 0x45,
-0x41, 0x14, 0x1b, 0x4c, 0x36, 0xcd, 0xbe, 0x7d,
-0x21, 0x21, 0x8c, 0x85, 0xd4, 0xba, 0x76, 0x3f,
-0x02, 0x21, 0xa6, 0xaa, 0x0e, 0x4a, 0x62, 0x03,
-0x04, 0x99, 0xe9, 0xf1, 0x81, 0xe9, 0x79, 0x6e,
-0xd7, 0xb8, 0x90, 0x47, 0x69, 0x93, 0x8b, 0x27,
-0x40, 0xe0, 0x8a, 0x60, 0x0a, 0x0e, 0xc0, 0x90,
-0x3f, 0xfc, 0x0a, 0x97, 0x3f, 0x53, 0x4c, 0xef,
-0xbb, 0x4a, 0x13, 0xf9, 0xaf, 0xd7, 0xc1, 0x49,
-0x26, 0xc6, 0xe4, 0x4f, 0x1a, 0xcb, 0xf6, 0x49,
-0xf7, 0xc5, 0x04, 0x91, 0x0f, 0x8c, 0x2f, 0x62,
-0xfe, 0xbe, 0x90, 0xeb, 0x12, 0xb8, 0xf4, 0x60,
-0x4c, 0xe2, 0x03, 0x14, 0x9d, 0x3a, 0x0e, 0xf2,
-0x8c, 0x81, 0xa2, 0xe2, 0xe0, 0x8e, 0x54, 0x28,
-0x25, 0xc5, 0x84, 0x8c, 0x86, 0x17, 0x67, 0x83,
-0x55, 0xc3, 0xc1, 0x71, 0x98, 0x03, 0x19, 0x60,
-0x0c, 0x0a, 0x71, 0x40, 0xb4, 0x94, 0xf9, 0x69,
-0xc2, 0x6c, 0x6d, 0xb1, 0x37, 0x27, 0xb8, 0x69,
-0x15, 0x1f, 0x68, 0x62, 0xae, 0xf4, 0x9a, 0x30,
-0xfb, 0x76, 0xbc, 0x92, 0x2b, 0xbd, 0x2e, 0xcc,
-0xae, 0x5e, 0xec, 0xfd, 0x96, 0x52, 0x6b, 0x9e,
-0xff, 0xf5, 0xb4, 0xfa, 0xde, 0xef, 0xb8, 0xbe,
-0x1d, 0x48, 0xdb, 0x8a, 0x83, 0x1b, 0x5c, 0xf7,
-0xac, 0x9d, 0xf2, 0x5c, 0xec, 0xca, 0xda, 0x29,
-0x5b, 0x85, 0xf8, 0xc0, 0x3c, 0x3f, 0x23, 0x06,
-0xf4, 0xf9, 0x7f, 0xd4, 0x48, 0x6a, 0xf4, 0x19,
-0x4d, 0xc5, 0x8c, 0xc7, 0xd8, 0x24, 0xfd, 0x2b,
-0xcf, 0x03, 0xcb, 0x7d, 0x93, 0xf3, 0xa4, 0x3b,
-0x04, 0x08, 0xd4, 0x72, 0x45, 0xe6, 0x11, 0x26,
-0x07, 0xa4, 0x65, 0x93, 0xf3, 0x9a, 0xef, 0xc8,
-0x9f, 0xcc, 0x6a, 0x27, 0x06, 0xe6, 0xf9, 0xb7,
-0x7b, 0x27, 0xdf, 0x2b, 0xdd, 0x8e, 0xa8, 0x32,
-0xcd, 0x3b, 0x39, 0x57, 0xfa, 0x1b, 0x61, 0x8a,
-0x76, 0xbb, 0x17, 0xee, 0x95, 0xfe, 0x06, 0x26,
-0x6b, 0x1f, 0x78, 0x5d, 0xf7, 0x4a, 0x53, 0xf0,
-0x8a, 0x69, 0x3a, 0xcd, 0xe7, 0x7b, 0x59, 0xc1,
-0x2d, 0xc9, 0x83, 0xc5, 0xfe, 0x5c, 0x35, 0xad,
-0x4e, 0xf0, 0x38, 0x14, 0x96, 0x8b, 0xba, 0x31,
-0xff, 0x1e, 0xea, 0x6d, 0xcd, 0x55, 0x57, 0x99,
-0x6f, 0x6f, 0x11, 0x78, 0x16, 0x94, 0xd7, 0x21,
-0xf1, 0x81, 0x16, 0x52, 0x1c, 0xca, 0xc4, 0x60,
-0xe2, 0x8a, 0xd3, 0xec, 0x7d, 0x00, 0x2b, 0x9e,
-0xad, 0x66, 0xfd, 0xfb, 0xae, 0xeb, 0x17, 0x8b,
-0xdf, 0x82, 0xe3, 0x7d, 0xb7, 0xba, 0xa8, 0x31,
-0xd0, 0x6f, 0x75, 0x65, 0x2e, 0x4e, 0xcf, 0x31,
-0x06, 0x29, 0xfb, 0x33, 0x23, 0xed, 0xe1, 0xea,
-0xfb, 0x82, 0x1c, 0x06, 0x48, 0x88, 0x07, 0xd8,
-0x37, 0x62, 0x78, 0xe0, 0x24, 0xe3, 0x57, 0xa6,
-0x2f, 0x13, 0x4e, 0xb2, 0xff, 0x5e, 0xf8, 0xa4,
-0x6e, 0x9a, 0x2f, 0x7f, 0xc7, 0xf3, 0x87, 0xe0,
-0x4b, 0x9d, 0xc5, 0x19, 0xb7, 0x2c, 0xc4, 0xc1,
-0xce, 0xce, 0xe2, 0x3b, 0xe5, 0x7b, 0x16, 0x0e,
-0x6e, 0x7c, 0xa9, 0xf0, 0x37, 0x19, 0xb2, 0x67,
-0xe1, 0x71, 0x63, 0x60, 0x7e, 0x9e, 0xf9, 0x57,
-0xef, 0xbe, 0xfa, 0xfb, 0x57, 0xce, 0x7f, 0x32,
-0x5e, 0xf5, 0x73, 0x1c, 0xec, 0x3a, 0xff, 0x97,
-0xf1, 0xf9, 0x57, 0x96, 0xbc, 0xf7, 0xf8, 0xd5,
-0xa1, 0xcb, 0xe3, 0xf3, 0x7f, 0xb6, 0xe4, 0xaa,
-0x31, 0x80, 0xff, 0x83, 0xbf, 0xca, 0x27, 0x33,
-0x66, 0x78, 0xee, 0x0c, 0x6e, 0x5c, 0x3e, 0x7d,
-0xdc, 0xf6, 0x6c, 0xcd, 0xd5, 0xe0, 0xc6, 0x9f,
-0x56, 0xfe, 0xf3, 0x9d, 0x3f, 0x3f, 0x76, 0xe7,
-0xf9, 0x27, 0x2e, 0x57, 0x5d, 0xbd, 0xf3, 0xeb,
-0x7c, 0x30, 0x64, 0x9e, 0x5f, 0xf5, 0xb3, 0xbb,
-0xdf, 0x7b, 0x7c, 0xd7, 0xd0, 0x27, 0x13, 0x8f,
-0xf1, 0xc9, 0xe5, 0x89, 0x07, 0xc3, 0xf9, 0x77,
-0xbf, 0x67, 0x3c, 0xa1, 0x79, 0x7e, 0xc1, 0xcf,
-0xea, 0xde, 0xdb, 0x38, 0x77, 0x68, 0xed, 0xfd,
-0xf3, 0xf9, 0x3f, 0xdc, 0x3e, 0xf4, 0x18, 0x3e,
-0xf6, 0xdd, 0xef, 0xe6, 0xf0, 0x3b, 0x14, 0xe4,
-0xf1, 0x41, 0xf3, 0xc8, 0xfd, 0xe6, 0xf9, 0x82,
-0xa7, 0x41, 0xdb, 0xac, 0x7c, 0x3d, 0x3b, 0x43,
-0x8f, 0x0d, 0x72, 0x33, 0x5e, 0x4b, 0x6f, 0xd0,
-0xa7, 0x2a, 0x93, 0xa4, 0x8c, 0xd7, 0x08, 0xe2,
-0x43, 0xbc, 0x22, 0x98, 0xd7, 0x53, 0x8a, 0xe1,
-0xc3, 0xa9, 0x71, 0x7c, 0xc8, 0x61, 0xe1, 0xa4,
-0x87, 0xe0, 0x3e, 0xed, 0x6b, 0x0a, 0x17, 0xd4,
-0x38, 0xa8, 0x41, 0x7c, 0x68, 0x9a, 0x2f, 0x4e,
-0xe0, 0x43, 0x43, 0x3e, 0xbb, 0x10, 0xda, 0xb0,
-0x24, 0x3e, 0xe4, 0x83, 0xaf, 0x95, 0xa7, 0x9e,
-0xdf, 0x18, 0x6c, 0x53, 0x58, 0x1c, 0xbf, 0x71,
-0xb1, 0x79, 0xbf, 0x71, 0x45, 0x60, 0x70, 0xbf,
-0x94, 0x47, 0xd2, 0x55, 0xc1, 0x3c, 0x9b, 0xfe,
-0xff, 0xda, 0x39, 0xbf, 0xd8, 0x28, 0x8a, 0x38,
-0x8e, 0xff, 0xe6, 0x6e, 0xef, 0xd8, 0x2b, 0x77,
-0x65, 0xb7, 0xbd, 0xc2, 0x15, 0x9b, 0x66, 0x8f,
-0x2b, 0x47, 0xfd, 0x13, 0xdc, 0x22, 0xc5, 0x1a,
-0x4c, 0x3b, 0xed, 0xed, 0xb5, 0x47, 0xd3, 0xc2,
-0x81, 0x80, 0x40, 0x8c, 0xb9, 0x2a, 0x21, 0xc6,
-0x27, 0xd0, 0x17, 0xa3, 0x41, 0xf6, 0xca, 0x41,
-0x8c, 0xd1, 0xa4, 0xa9, 0x35, 0x96, 0x04, 0xf5,
-0x30, 0x6a, 0x8c, 0x81, 0xf8, 0xe0, 0x9f, 0x90,
-0x18, 0x93, 0x05, 0x8d, 0x48, 0x34, 0x29, 0x0f,
-0xf0, 0xa2, 0x26, 0x42, 0xe4, 0xc5, 0xc4, 0x84,
-0x3e, 0x90, 0x18, 0x1f, 0xea, 0xf9, 0x9b, 0x99,
-0xbd, 0xee, 0x1e, 0x44, 0x88, 0xc8, 0xbe, 0x98,
-0xf9, 0x3e, 0x7d, 0xbb, 0x37, 0x37, 0x3b, 0x37,
-0xf3, 0xbb, 0xdf, 0x7c, 0x7e, 0xdb, 0xdd, 0xb3,
-0x9e, 0x23, 0xf1, 0xc9, 0x5c, 0x18, 0xce, 0x5b,
-0xeb, 0x48, 0x47, 0x65, 0xc4, 0xd0, 0xd9, 0x43,
-0x35, 0x1d, 0x18, 0x18, 0xfa, 0x0f, 0x18, 0x21,
-0x68, 0x54, 0xdd, 0x69, 0xec, 0x3f, 0xa5, 0x56,
-0x42, 0x7c, 0x2b, 0x84, 0x94, 0xc6, 0x68, 0xd0,
-0x32, 0xc4, 0x89, 0xca, 0xee, 0xa9, 0x89, 0x7f,
-0x3c, 0x2a, 0x62, 0x21, 0x26, 0x0d, 0x0b, 0xf9,
-0xf0, 0x29, 0xc6, 0x87, 0x25, 0x6d, 0x56, 0xd9,
-0x27, 0xcc, 0x71, 0x25, 0x5b, 0x8e, 0x31, 0xe3,
-0x6f, 0xff, 0xa0, 0x32, 0x5a, 0x5e, 0x5e, 0xcd,
-0xdb, 0xda, 0x5a, 0x65, 0x4f, 0xb9, 0xa5, 0x6a,
-0x7d, 0xa4, 0xdf, 0x07, 0x7b, 0xce, 0xa0, 0x39,
-0xad, 0xdf, 0x8f, 0x2f, 0xa1, 0x99, 0xf5, 0xe5,
-0x4f, 0xd5, 0x49, 0x40, 0x2b, 0xdb, 0x52, 0x3e,
-0x83, 0x31, 0x4c, 0x5a, 0xc9, 0x0b, 0xb0, 0x9e,
-0x8c, 0x01, 0xee, 0x36, 0x4e, 0xa4, 0x8f, 0x8c,
-0x91, 0x56, 0x58, 0xce, 0x36, 0x19, 0xea, 0xbd,
-0xc1, 0x89, 0x22, 0x0b, 0x22, 0x0d, 0x6e, 0x85,
-0x0a, 0x05, 0xf6, 0x98, 0x20, 0x25, 0x1a, 0x58,
-0x98, 0xc5, 0x94, 0x22, 0xd1, 0xb4, 0xa4, 0xa2,
-0x33, 0xe3, 0xed, 0xef, 0xaa, 0xc3, 0xca, 0x55,
-0xcc, 0xc2, 0x5d, 0xe2, 0x4a, 0x81, 0xc6, 0x36,
-0xa4, 0x10, 0xcb, 0x7a, 0xac, 0x30, 0x6b, 0x61,
-0x65, 0x9f, 0x01, 0xd0, 0xd0, 0x5e, 0x29, 0x11,
-0x06, 0xc9, 0x3c, 0xe3, 0xa7, 0xc8, 0x10, 0xe3,
-0x91, 0x12, 0x99, 0x85, 0x7d, 0x68, 0x22, 0xcc,
-0x0c, 0x43, 0x8f, 0xc7, 0xf3, 0x1a, 0xa1, 0x98,
-0xa1, 0x66, 0x21, 0x6b, 0x20, 0x99, 0x71, 0x03,
-0x31, 0x61, 0xd6, 0xa1, 0x01, 0x66, 0xd6, 0x00,
-0xae, 0x60, 0x5d, 0x94, 0xf1, 0x21, 0x87, 0x22,
-0x38, 0xec, 0xe3, 0x43, 0xd7, 0x70, 0x3e, 0x1c,
-0x56, 0x1d, 0x47, 0x5f, 0x7c, 0x9e, 0x11, 0xfe,
-0x89, 0x0f, 0x43, 0x7e, 0xa3, 0xd5, 0x67, 0x88,
-0x2a, 0x43, 0x60, 0x72, 0x48, 0x83, 0xaf, 0xeb,
-0xe6, 0xec, 0xa2, 0xd1, 0x84, 0xa1, 0x1e, 0x6f,
-0xd0, 0xfa, 0xfe, 0x1b, 0x87, 0x49, 0x77, 0x23,
-0xd6, 0x3d, 0x13, 0xe1, 0x06, 0x3f, 0xf8, 0xe2,
-0xfe, 0x45, 0x09, 0xdf, 0xdf, 0xd3, 0x37, 0xf2,
-0xe1, 0xe2, 0x8e, 0xcf, 0x8d, 0x17, 0x0f, 0x45,
-0x72, 0xab, 0xfe, 0x71, 0xa3, 0xe7, 0xc6, 0x6b,
-0x4f, 0xf3, 0x14, 0xd7, 0x2f, 0x09, 0x79, 0x28,
-0xd6, 0x8d, 0x7e, 0xb3, 0x19, 0x5a, 0x1c, 0x4f,
-0x01, 0x57, 0x6a, 0xd0, 0x4e, 0x96, 0x96, 0xb0,
-0x25, 0xdb, 0x8a, 0x58, 0xa8, 0x20, 0x16, 0x7a,
-0x66, 0x50, 0x18, 0x2f, 0x7c, 0x0a, 0xec, 0x96,
-0x12, 0xbb, 0xce, 0x8b, 0x36, 0x56, 0x18, 0xa2,
-0x56, 0x72, 0x8b, 0x26, 0x43, 0x18, 0xf0, 0x8d,
-0x67, 0x27, 0xd2, 0x20, 0xf2, 0x61, 0x11, 0x76,
-0x22, 0x28, 0x5e, 0xe2, 0x58, 0x18, 0x22, 0x2e,
-0x28, 0x12, 0xe4, 0x43, 0xda, 0x9b, 0x8a, 0x50,
-0x6f, 0x7f, 0x27, 0xc3, 0x88, 0x85, 0x1d, 0xa5,
-0x91, 0x54, 0xfb, 0xb7, 0xae, 0xd1, 0x3d, 0x13,
-0xe5, 0x66, 0x57, 0xbb, 0xe3, 0xf5, 0x4f, 0x86,
-0x39, 0x16, 0xae, 0x41, 0xba, 0x23, 0xc2, 0xc4,
-0x58, 0xb3, 0x9f, 0x27, 0x98, 0x01, 0x71, 0x24,
-0xe9, 0x2c, 0x5e, 0x9e, 0x28, 0xd6, 0xf9, 0x30,
-0x05, 0x47, 0x49, 0x4f, 0xf9, 0x89, 0x09, 0x86,
-0x85, 0x4b, 0x0e, 0x94, 0xc7, 0x38, 0x1f, 0xb6,
-0x09, 0x74, 0xb4, 0xce, 0x7a, 0xeb, 0x05, 0xec,
-0xb7, 0x31, 0x91, 0x0f, 0xa9, 0x32, 0x45, 0x4a,
-0xf6, 0x26, 0x5e, 0x8d, 0x92, 0x2e, 0x7b, 0x97,
-0xd1, 0x52, 0x50, 0xa6, 0x45, 0x22, 0x2a, 0xe0,
-0x91, 0xc5, 0xf8, 0xc1, 0x00, 0x9e, 0xb0, 0x53,
-0xa5, 0xe8, 0x6c, 0xf1, 0x43, 0x34, 0x2b, 0x4b,
-0xd1, 0x14, 0x39, 0x2a, 0x8e, 0xb8, 0x66, 0x22,
-0x9a, 0xc2, 0xf5, 0xaa, 0xb7, 0x87, 0x7c, 0x49,
-0x79, 0x21, 0xdd, 0xac, 0xe6, 0x70, 0xcf, 0x53,
-0xfa, 0x48, 0x27, 0xe4, 0x6c, 0xed, 0xb2, 0xd2,
-0x07, 0x9d, 0x30, 0x62, 0xeb, 0x97, 0xf9, 0x91,
-0x11, 0x9b, 0x38, 0xbe, 0xf8, 0xd9, 0x06, 0xa5,
-0xcb, 0x6a, 0x5f, 0x68, 0x0c, 0xde, 0xc0, 0x52,
-0xaf, 0x5d, 0x84, 0x4d, 0x17, 0xc3, 0xc2, 0x02,
-0x99, 0x16, 0x7c, 0x58, 0xf0, 0xe5, 0x1f, 0x1a,
-0x09, 0x29, 0xc6, 0x09, 0xce, 0x87, 0xaf, 0x56,
-0x90, 0x06, 0xab, 0x22, 0x7e, 0xec, 0x06, 0x3e,
-0xf4, 0xc5, 0x1b, 0xcd, 0x87, 0x14, 0x5a, 0x4e,
-0x1a, 0x79, 0xfc, 0x5e, 0x28, 0xc5, 0xb2, 0x86,
-0x46, 0xcf, 0x41, 0xf1, 0x88, 0x66, 0x58, 0xaa,
-0x1e, 0xe6, 0x47, 0x2c, 0x95, 0x80, 0x6f, 0x7e,
-0xb0, 0xa4, 0x74, 0x92, 0x66, 0x24, 0x6e, 0x8f,
-0x1a, 0xe0, 0x24, 0xab, 0x24, 0x4e, 0xb0, 0xbd,
-0xcd, 0x8e, 0x30, 0xc3, 0x5f, 0x22, 0xd4, 0xfb,
-0xbe, 0x60, 0xd6, 0x30, 0x05, 0x1f, 0x02, 0x0d,
-0x61, 0xfe, 0xe1, 0xf5, 0xa9, 0xcb, 0x87, 0x6a,
-0x52, 0x98, 0x41, 0x7f, 0xfc, 0x0c, 0xad, 0x6a,
-0x61, 0x7c, 0x98, 0xb0, 0x43, 0x59, 0xcc, 0x43,
-0xab, 0xd2, 0xdd, 0x6a, 0x53, 0x9d, 0x0f, 0xeb,
-0xc6, 0xf6, 0x8d, 0x87, 0xd0, 0x0a, 0xcf, 0x3f,
-0x24, 0x6d, 0x1f, 0x45, 0xa3, 0xf2, 0x7a, 0x88,
-0xa5, 0x65, 0x61, 0xd8, 0x4b, 0xa1, 0xdd, 0xbe,
-0xcf, 0x4b, 0xe8, 0x7b, 0x7b, 0xe1, 0x18, 0x64,
-0x07, 0x63, 0x53, 0x93, 0x25, 0x38, 0xd6, 0x94,
-0x65, 0xf7, 0x67, 0xb9, 0x89, 0xc8, 0x35, 0xa1,
-0x98, 0xb7, 0x5e, 0x14, 0xd7, 0xab, 0x8f, 0x34,
-0xe3, 0x32, 0xd9, 0x55, 0xd7, 0xb0, 0xf5, 0x6a,
-0x30, 0x65, 0xcd, 0x5b, 0xaf, 0x22, 0x7e, 0xbc,
-0x47, 0x9c, 0xe6, 0xfd, 0xe1, 0xe3, 0xf6, 0x07,
-0x86, 0xc9, 0x7e, 0xdd, 0x5e, 0x81, 0x2b, 0xe0,
-0x9a, 0x33, 0x75, 0xe3, 0xcb, 0x3f, 0x98, 0x59,
-0x7b, 0x69, 0xa2, 0x18, 0x2e, 0x22, 0x3d, 0xf6,
-0xd0, 0x04, 0x0d, 0x6f, 0x87, 0x4b, 0x0c, 0x2c,
-0x8b, 0xe1, 0x24, 0x33, 0x94, 0x9b, 0xb3, 0xbe,
-0xf9, 0xc9, 0x29, 0xa5, 0xc1, 0xd4, 0x7e, 0x5c,
-0xdf, 0xc3, 0x4a, 0xe9, 0x4c, 0xca, 0x1c, 0x8e,
-0xeb, 0x37, 0x9b, 0x86, 0xf9, 0x11, 0x7c, 0xc8,
-0x2e, 0x46, 0xf2, 0x8b, 0x85, 0xec, 0x8a, 0x70,
-0xc3, 0xe5, 0xc3, 0x86, 0x4b, 0x85, 0x94, 0x14,
-0x2c, 0xc1, 0x87, 0x36, 0xa7, 0x41, 0x34, 0x3e,
-0x2c, 0x64, 0x66, 0x26, 0x97, 0x6e, 0xcc, 0x3f,
-0xd6, 0xf6, 0xf6, 0xb6, 0x68, 0x3e, 0xa7, 0x25,
-0xf7, 0x32, 0x3e, 0xcc, 0x63, 0xc6, 0xb1, 0xb8,
-0xe1, 0xf9, 0x07, 0xcd, 0x20, 0x1a, 0x5f, 0xfc,
-0xf0, 0x48, 0x0c, 0xb9, 0x29, 0x50, 0x9b, 0x8c,
-0x18, 0xa4, 0xc0, 0x62, 0x6a, 0x92, 0x5f, 0x3b,
-0xd9, 0x26, 0x0c, 0xf8, 0x84, 0x10, 0xe8, 0x40,
-0x15, 0xba, 0xa1, 0x09, 0xf8, 0xed, 0xf2, 0xc2,
-0xf8, 0xf9, 0xb0, 0xbb, 0x21, 0xff, 0x8c, 0x87,
-0x1f, 0xa3, 0x95, 0x0b, 0xe9, 0xf5, 0xf6, 0xf8,
-0xaa, 0x56, 0xfa, 0x0d, 0x1a, 0x75, 0x3c, 0xd4,
-0x4a, 0x2f, 0x5e, 0xe8, 0x5d, 0x9f, 0x18, 0x0f,
-0x85, 0xb9, 0x89, 0xfb, 0xc6, 0x43, 0x0a, 0x15,
-0xdc, 0xf4, 0xa7, 0x70, 0xf7, 0x3f, 0xcf, 0xf8,
-0x10, 0x5c, 0xc3, 0x79, 0xe0, 0x3b, 0xd7, 0x24,
-0x1d, 0xdf, 0x78, 0x38, 0x16, 0x32, 0x3e, 0x5c,
-0x3a, 0x3a, 0xea, 0xe7, 0xc3, 0xf7, 0xeb, 0x7c,
-0xb8, 0xb7, 0x91, 0x0f, 0x39, 0x7d, 0x31, 0x3e,
-0xdc, 0x78, 0x68, 0x8b, 0x9f, 0x0f, 0xaf, 0xdf,
-0x25, 0x3e, 0xe4, 0x58, 0xf8, 0xdb, 0x54, 0x6d,
-0x61, 0xe0, 0x4f, 0x01, 0x8a, 0x07, 0xbb, 0xde,
-0x65, 0x58, 0x38, 0xf5, 0xd6, 0xc2, 0xea, 0x9a,
-0x6b, 0xfc, 0xed, 0xf9, 0xd9, 0xff, 0xb8, 0x8a,
-0xed, 0xff, 0x12, 0xa0, 0xb8, 0xb0, 0xf1, 0x10,
-0xc3, 0xc2, 0xab, 0xd7, 0x16, 0x36, 0xd6, 0x5c,
-0xd3, 0xd0, 0xbe, 0xd3, 0xe5, 0xc3, 0x4c, 0xe7,
-0xe6, 0x5f, 0xa6, 0x7b, 0x90, 0x0f, 0x33, 0x2f,
-0x6f, 0x3e, 0xc7, 0x09, 0x33, 0xc3, 0x51, 0xb3,
-0x72, 0xed, 0x3f, 0x8c, 0xdf, 0x04, 0x83, 0xb0,
-0xdb, 0x33, 0x4c, 0xc8, 0xc5, 0xef, 0xbc, 0x17,
-0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
-0x29, 0x29, 0xa9, 0xff, 0xbb, 0x78, 0xed, 0xa0,
-0xc8, 0xda, 0x41, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0xea, 0xd6, 0xe2,
-0xb5, 0x43, 0x54, 0xd6, 0x0e, 0x52, 0x52, 0x52,
-0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52,
-0xb7, 0x16, 0xaf, 0x1d, 0x54, 0x5e, 0x3b, 0xe0,
-0x5f, 0x91, 0xbe, 0x27, 0x77, 0xd3, 0x81, 0xfe,
-0x97, 0x76, 0x07, 0x74, 0xb6, 0xee, 0x73, 0xf0,
-0x00, 0xcd, 0x58, 0xd0, 0x70, 0x13, 0xda, 0x5d,
-0x94, 0xd2, 0xf4, 0xcc, 0x31, 0x7b, 0x69, 0xdb,
-0x97, 0x85, 0x60, 0xba, 0x87, 0x81, 0x39, 0x36,
-0x7e, 0x0a, 0x03, 0x4e, 0x30, 0xfd, 0x2b, 0xc6,
-0xcc, 0x09, 0x67, 0xe5, 0xc5, 0xd7, 0x5f, 0x09,
-0xa6, 0x7b, 0x30, 0xe7, 0xcc, 0xdf, 0x69, 0x66,
-0xbf, 0x63, 0x3a, 0xc1, 0xf4, 0x9f, 0x78, 0xf8,
-0xe0, 0x11, 0xa7, 0xe3, 0x93, 0xa7, 0xb7, 0x04,
-0xd3, 0x3d, 0xce, 0xbf, 0x18, 0x7f, 0x50, 0xf3,
-0x1f, 0x5f, 0x73, 0xdc, 0x86, 0x47, 0x57, 0x54,
-0x83, 0x9b, 0xff, 0x65, 0x18, 0x3f, 0x5b, 0x20,
-0xa8, 0xf9, 0x6f, 0xce, 0x9e, 0x9e, 0x87, 0x7b,
-0x76, 0x7c, 0xbe, 0x29, 0x98, 0xee, 0x71, 0xfe,
-0xc5, 0xf8, 0x03, 0x8b, 0xff, 0xb5, 0x6d, 0x1f,
-0xd3, 0xa5, 0xcf, 0xcf, 0xa8, 0xb7, 0x6f, 0x7a,
-0x47, 0x32, 0xe7, 0x06, 0x30, 0x7e, 0x0e, 0x05,
-0x17, 0xff, 0x1a, 0xd9, 0x00, 0xab, 0x63, 0xf7,
-0x06, 0x17, 0xff, 0x62, 0xfc, 0x41, 0xcd, 0x7f,
-0x22, 0x6d, 0x0d, 0xc3, 0xba, 0xeb, 0xd9, 0xa0,
-0xe2, 0xc7, 0xac, 0x39, 0x2c, 0x7f, 0x9a, 0xf3,
-0x4e, 0x30, 0xfd, 0x2b, 0xea, 0x81, 0x37, 0x9d,
-0x0d, 0x9f, 0xce, 0x04, 0x96, 0xff, 0xdd, 0xf1,
-0xdf, 0xfc, 0xcb, 0x04, 0x77, 0x47, 0x4a, 0x66,
-0xe6, 0x94, 0x93, 0x59, 0x31, 0x1d, 0x58, 0xfe,
-0xa9, 0xcd, 0xb3, 0xfc, 0x39, 0x1f, 0xd4, 0xfc,
-0x2f, 0xeb, 0xff, 0xf5, 0x9a, 0xd3, 0xfb, 0xe3,
-0xe3, 0x73, 0xc1, 0x74, 0x8f, 0xf3, 0x2f, 0xc6,
-0x1f, 0xd8, 0xfc, 0xf7, 0xbf, 0xf6, 0x8e, 0xfd,
-0xd0, 0x8a, 0x93, 0xb1, 0xdb, 0x37, 0xbd, 0x23,
-0x99, 0xb5, 0x39, 0x96, 0x3f, 0x03, 0x8b, 0xff,
-0x68, 0xe7, 0xa9, 0x67, 0xed, 0xec, 0x57, 0x3f,
-0x59, 0xc1, 0x74, 0x8f, 0xf3, 0x2f, 0xc6, 0x1f,
-0xd8, 0xfc, 0xaf, 0xde, 0xf1, 0x05, 0x18, 0x6d,
-0x6f, 0x07, 0x97, 0x7f, 0x6a, 0x2c, 0x7f, 0x06,
-0x17, 0xff, 0x2b, 0x23, 0x69, 0xda, 0x7f, 0x32,
-0xf1, 0x7d, 0x30, 0xdd, 0xb3, 0x1f, 0x39, 0xe1,
-0xe3, 0x0f, 0x66, 0xfe, 0x4d, 0xf6, 0x7c, 0x1c,
-0xbc, 0xd8, 0x6a, 0x82, 0xcd, 0x9e, 0x5a, 0x09,
-0x9b, 0x40, 0xff, 0xf5, 0xff, 0x13, 0xdc, 0xf7,
-0x46, 0x4c, 0xa8, 0x12, 0xaf, 0xcf, 0x2b, 0x7b,
-0x6e, 0x6c, 0xf7, 0x37, 0xea, 0xe7, 0xba, 0x8f,
-0xf0, 0x33, 0x01, 0x00,
diff --git a/board/esd/hh405/hh405.c b/board/esd/hh405/hh405.c
deleted file mode 100644 (file)
index 8bd4223..0000000
+++ /dev/null
@@ -1,895 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2006-2007
- * Matthias Fuchs, esd GmbH, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-#include <malloc.h>
-#include <pci.h>
-#include <sm501.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* FPGA internal regs */
-#define FPGA_CTRL      ((u16 *)(CONFIG_SYS_FPGA_BASE_ADDR + 0x000))
-#define FPGA_STATUS    ((u16 *)(CONFIG_SYS_FPGA_BASE_ADDR + 0x002))
-#define FPGA_CTR       ((u16 *)(CONFIG_SYS_FPGA_BASE_ADDR + 0x004))
-#define FPGA_BL                ((u16 *)(CONFIG_SYS_FPGA_BASE_ADDR + 0x006))
-
-/* FPGA Control Reg */
-#define FPGA_CTRL_REV0      0x0001
-#define FPGA_CTRL_REV1      0x0002
-#define FPGA_CTRL_VGA0_BL   0x0004
-#define FPGA_CTRL_VGA0_BL_MODE 0x0008
-#define FPGA_CTRL_CF_RESET  0x0040
-#define FPGA_CTRL_PS2_PWR   0x0080
-#define FPGA_CTRL_CF_PWRN   0x0100      /* low active */
-#define FPGA_CTRL_CF_BUS_EN 0x0200
-#define FPGA_CTRL_LCD_CLK   0x7000      /* mask for lcd clock */
-#define FPGA_CTRL_OW_ENABLE 0x8000
-
-#define FPGA_STATUS_CF_DETECT 0x8000
-
-#ifdef CONFIG_VIDEO_SM501
-
-#define SWAP32(x)       ((((x) & 0x000000ff) << 24) | (((x) & 0x0000ff00) << 8)|\
-                         (((x) & 0x00ff0000) >>  8) | (((x) & 0xff000000) >> 24) )
-
-#ifdef CONFIG_VIDEO_SM501_8BPP
-#error CONFIG_VIDEO_SM501_8BPP not supported.
-#endif /* CONFIG_VIDEO_SM501_8BPP */
-
-#ifdef CONFIG_VIDEO_SM501_16BPP
-#define BPP    16
-
-/*
- * 800x600 display B084SN03: PCLK = 40MHz
- * => 2*PCLK = 80MHz
- * 336/4 = 84MHz
- * => PCLK = 84MHz
- */
-static const SMI_REGS init_regs_800x600 [] =
-{
-#if 1 /* test-only */
-       {0x0005c, SWAP32(0xffffffff)}, /* set endianess to big endian */
-#else
-       {0x0005c, SWAP32(0x00000000)}, /* set endianess to little endian */
-#endif
-       {0x00004, SWAP32(0x00000000)},
-       /* clocks for pm1... */
-       {0x00048, SWAP32(0x00021807)},
-       {0x0004C, SWAP32(0x221a0a01)},
-       {0x00054, SWAP32(0x00000001)},
-       /* clocks for pm0... */
-       {0x00040, SWAP32(0x00021807)},
-       {0x00044, SWAP32(0x221a0a01)},
-       {0x00054, SWAP32(0x00000000)},
-       /* GPIO */
-       {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
-       /* panel control regs... */
-       {0x80000, SWAP32(0x0f013105)}, /* panel display control: 16-bit RGB 5:6:5 mode */
-       {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
-       {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
-       {0x80010, SWAP32(0x06400640)}, /* panel fb offset/window width */
-       {0x80014, SWAP32(0x03200000)}, /* panel fb width (0x320=800) */
-       {0x80018, SWAP32(0x02580000)}, /* panel fb height (0x258=600) */
-       {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
-       {0x80020, SWAP32(0x02580320)}, /* panel plane br location */
-       {0x80024, SWAP32(0x041f031f)}, /* panel horizontal total */
-       {0x80028, SWAP32(0x00800347)}, /* panel horizontal sync */
-       {0x8002C, SWAP32(0x02730257)}, /* panel vertical total */
-       {0x80030, SWAP32(0x00040258)}, /* panel vertical sync */
-       {0x80200, SWAP32(0x00010000)}, /* crt display control */
-       {0, 0}
-};
-
-/*
- * 1024x768 display G150XG02: PCLK = 65MHz
- * => 2*PCLK = 130MHz
- * 288/2 = 144MHz
- * => PCLK = 72MHz
- */
-static const SMI_REGS init_regs_1024x768 [] =
-{
-       {0x00004, SWAP32(0x00000000)},
-       /* clocks for pm1... */
-       {0x00048, SWAP32(0x00021807)},
-       {0x0004C, SWAP32(0x011a0a01)},
-       {0x00054, SWAP32(0x00000001)},
-       /* clocks for pm0... */
-       {0x00040, SWAP32(0x00021807)},
-       {0x00044, SWAP32(0x011a0a01)},
-       {0x00054, SWAP32(0x00000000)},
-       /* GPIO */
-       {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
-       /* panel control regs... */
-       {0x80000, SWAP32(0x0f013105)}, /* panel display control: 16-bit RGB 5:6:5 mode */
-       {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
-       {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
-       {0x80010, SWAP32(0x08000800)}, /* panel fb offset/window width */
-       {0x80014, SWAP32(0x04000000)}, /* panel fb width (0x400=1024) */
-       {0x80018, SWAP32(0x03000000)}, /* panel fb height (0x300=768) */
-       {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
-       {0x80020, SWAP32(0x03000400)}, /* panel plane br location */
-       {0x80024, SWAP32(0x053f03ff)}, /* panel horizontal total */
-       {0x80028, SWAP32(0x0140040f)}, /* panel horizontal sync */
-       {0x8002C, SWAP32(0x032502ff)}, /* panel vertical total */
-       {0x80030, SWAP32(0x00260301)}, /* panel vertical sync */
-       {0x80200, SWAP32(0x00010000)}, /* crt display control */
-       {0, 0}
-};
-
-#endif /* CONFIG_VIDEO_SM501_16BPP */
-
-#ifdef CONFIG_VIDEO_SM501_32BPP
-#define BPP    32
-
-/*
- * 800x600 display B084SN03: PCLK = 40MHz
- * => 2*PCLK = 80MHz
- * 336/4 = 84MHz
- * => PCLK = 84MHz
- */
-static const SMI_REGS init_regs_800x600 [] =
-{
-#if 0 /* test-only */
-       {0x0005c, SWAP32(0xffffffff)}, /* set endianess to big endian */
-#else
-       {0x0005c, SWAP32(0x00000000)}, /* set endianess to little endian */
-#endif
-       {0x00004, SWAP32(0x00000000)},
-       /* clocks for pm1... */
-       {0x00048, SWAP32(0x00021807)},
-       {0x0004C, SWAP32(0x221a0a01)},
-       {0x00054, SWAP32(0x00000001)},
-       /* clocks for pm0... */
-       {0x00040, SWAP32(0x00021807)},
-       {0x00044, SWAP32(0x221a0a01)},
-       {0x00054, SWAP32(0x00000000)},
-       /* GPIO */
-       {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
-       /* panel control regs... */
-       {0x80000, SWAP32(0x0f013106)}, /* panel display control: 32-bit RGB 8:8:8 mode */
-       {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
-       {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
-       {0x80010, SWAP32(0x0c800c80)}, /* panel fb offset/window width */
-       {0x80014, SWAP32(0x03200000)}, /* panel fb width (0x320=800) */
-       {0x80018, SWAP32(0x02580000)}, /* panel fb height (0x258=600) */
-       {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
-       {0x80020, SWAP32(0x02580320)}, /* panel plane br location */
-       {0x80024, SWAP32(0x041f031f)}, /* panel horizontal total */
-       {0x80028, SWAP32(0x00800347)}, /* panel horizontal sync */
-       {0x8002C, SWAP32(0x02730257)}, /* panel vertical total */
-       {0x80030, SWAP32(0x00040258)}, /* panel vertical sync */
-       {0x80200, SWAP32(0x00010000)}, /* crt display control */
-       {0, 0}
-};
-
-/*
- * 1024x768 display G150XG02: PCLK = 65MHz
- * => 2*PCLK = 130MHz
- * 288/2 = 144MHz
- * => PCLK = 72MHz
- */
-static const SMI_REGS init_regs_1024x768 [] =
-{
-       {0x00004, SWAP32(0x00000000)},
-       /* clocks for pm1... */
-       {0x00048, SWAP32(0x00021807)},
-       {0x0004C, SWAP32(0x011a0a01)},
-       {0x00054, SWAP32(0x00000001)},
-       /* clocks for pm0... */
-       {0x00040, SWAP32(0x00021807)},
-       {0x00044, SWAP32(0x011a0a01)},
-       {0x00054, SWAP32(0x00000000)},
-       /* GPIO */
-       {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
-       /* panel control regs... */
-       {0x80000, SWAP32(0x0f013106)}, /* panel display control: 32-bit RGB 8:8:8 mode */
-       {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
-       {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
-       {0x80010, SWAP32(0x10001000)}, /* panel fb offset/window width */
-       {0x80014, SWAP32(0x04000000)}, /* panel fb width (0x400=1024) */
-       {0x80018, SWAP32(0x03000000)}, /* panel fb height (0x300=768) */
-       {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
-       {0x80020, SWAP32(0x03000400)}, /* panel plane br location */
-       {0x80024, SWAP32(0x053f03ff)}, /* panel horizontal total */
-       {0x80028, SWAP32(0x0140040f)}, /* panel horizontal sync */
-       {0x8002C, SWAP32(0x032502ff)}, /* panel vertical total */
-       {0x80030, SWAP32(0x00260301)}, /* panel vertical sync */
-       {0x80200, SWAP32(0x00010000)}, /* crt display control */
-       {0, 0}
-};
-
-#endif /* CONFIG_VIDEO_SM501_32BPP */
-
-#endif /* CONFIG_VIDEO_SM501 */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/* logo bitmap data - gzip compressed and generated by bin2c */
-unsigned char logo_bmp_320[] =
-{
-#include "logo_320_240_4bpp.c"
-};
-
-unsigned char logo_bmp_320_8bpp[] =
-{
-#include "logo_320_240_8bpp.c"
-};
-
-unsigned char logo_bmp_640[] =
-{
-#include "logo_640_480_24bpp.c"
-};
-
-unsigned char logo_bmp_1024[] =
-{
-#include "logo_1024_768_8bpp.c"
-};
-
-
-/*
- * include common lcd code (for esd boards)
- */
-#include "../common/lcd.c"
-
-#include "../common/s1d13704_320_240_4bpp.h"
-#include "../common/s1d13705_320_240_8bpp.h"
-#include "../common/s1d13806_640_480_16bpp.h"
-#include "../common/s1d13806_1024_768_8bpp.h"
-
-
-/*
- * include common auto-update code (for esd boards)
- */
-#include "../common/auto_update.h"
-
-au_image_t au_image[] = {
-       {"hh405/preinst.img", 0, -1, AU_SCRIPT},
-       {"hh405/u-boot.img", 0xfff80000, 0x00080000, AU_FIRMWARE},
-       {"hh405/pImage_${bd_type}", 0x00000000, 0x00100000, AU_NAND},
-       {"hh405/pImage.initrd", 0x00100000, 0x00200000, AU_NAND},
-       {"hh405/yaffsmt2.img", 0x00300000, 0x01c00000, AU_NAND},
-       {"hh405/postinst.img", 0, 0, AU_SCRIPT},
-};
-
-int N_AU_IMAGES = (sizeof(au_image) / sizeof(au_image[0]));
-
-
-/*
- * Get version of HH405 board from GPIO's
- */
-int board_revision(void)
-{
-       unsigned long osrh_reg;
-       unsigned long isr1h_reg;
-       unsigned long tcr_reg;
-       unsigned long value;
-
-       /*
-        * Setup GPIO pins (BLAST/GPIO0 and GPIO9 as GPIO)
-        */
-       osrh_reg = in_be32((void *)GPIO0_OSRH);
-       isr1h_reg = in_be32((void *)GPIO0_ISR1H);
-       tcr_reg = in_be32((void *)GPIO0_TCR);
-       out_be32((void *)GPIO0_OSRH, osrh_reg & ~0xC0003000);     /* output select */
-       out_be32((void *)GPIO0_ISR1H, isr1h_reg | 0xC0003000);    /* input select  */
-       out_be32((void *)GPIO0_TCR, tcr_reg & ~0x80400000);       /* select input  */
-
-       udelay(1000);            /* wait some time before reading input */
-       value = in_be32((void *)GPIO0_IR) & 0x80400000;         /* get config bits */
-
-       /*
-        * Restore GPIO settings
-        */
-       out_be32((void *)GPIO0_OSRH, osrh_reg);                   /* output select */
-       out_be32((void *)GPIO0_ISR1H, isr1h_reg);                 /* input select  */
-       out_be32((void *)GPIO0_TCR, tcr_reg);  /* enable output driver for outputs */
-
-       if (value & 0x80000000) {
-               /* Revision 1.0 or 1.1 detected */
-               return 1;
-       } else {
-               if (value & 0x00400000) {
-                       /* unused */
-                       return 3;
-               } else {
-                       return 2;
-               }
-       }
-}
-
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, CONFIG_SYS_UIC0_POLARITY);/* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc(EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       return 0;
-}
-
-int cf_enable(void)
-{
-       int i;
-
-       if (gd->board_type >= 2) {
-               if (in_be16(FPGA_STATUS) & FPGA_STATUS_CF_DETECT) {
-                       if (!(in_be16(FPGA_CTRL) & FPGA_CTRL_CF_BUS_EN)) {
-                               out_be16(FPGA_CTRL,
-                                        in_be16(FPGA_CTRL) & ~FPGA_CTRL_CF_PWRN);
-
-                               for (i=0; i<300; i++)
-                                       udelay(1000);
-
-                               out_be16(FPGA_CTRL,
-                                        in_be16(FPGA_CTRL) | FPGA_CTRL_CF_BUS_EN);
-
-                               for (i=0; i<20; i++)
-                                       udelay(1000);
-                       }
-               } else {
-                       out_be16(FPGA_CTRL,
-                                in_be16(FPGA_CTRL) & ~FPGA_CTRL_CF_BUS_EN);
-                       out_be16(FPGA_CTRL,
-                                in_be16(FPGA_CTRL) | FPGA_CTRL_CF_PWRN);
-               }
-       }
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       unsigned char *dst;
-       ulong len = sizeof(fpgadata);
-       int status;
-       int index;
-       int i;
-       char *str;
-       unsigned long contrast0 = 0xffffffff;
-
-       dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
-       if (gunzip (dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
-               printf ("GUNZIP ERROR - must RESET board to recover\n");
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       status = fpga_boot(dst, len);
-       if (status != 0) {
-               printf("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i=0; i<4; i++) {
-                       len = dst[index];
-                       printf("FPGA: %s\n", &(dst[index+1]));
-                       index += len+3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i=20; i>0; i--) {
-                       printf("Rebooting in %2d seconds \r",i);
-                       for (index=0;index<1000;index++)
-                               udelay(1000);
-               }
-               putc ('\n');
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       puts("FPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i=0; i<4; i++) {
-               len = dst[index];
-               printf("%s ", &(dst[index+1]));
-               index += len+3;
-       }
-       putc ('\n');
-
-       free(dst);
-
-       /*
-        * Reset FPGA via FPGA_INIT pin
-        */
-       /* setup FPGA_INIT as output */
-       out_be32((void *)GPIO0_TCR,
-                in_be32((void *)GPIO0_TCR) | FPGA_INIT);
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) & ~FPGA_INIT);  /* reset low */
-       udelay(1000); /* wait 1ms */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) | FPGA_INIT);   /* reset high */
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Write Board revision into FPGA
-        */
-       out_be16(FPGA_CTRL, in_be16(FPGA_CTRL) | (gd->board_type & 0x0003));
-
-       /*
-        * Setup and enable EEPROM write protection
-        */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) | CONFIG_SYS_EEPROM_WP);
-
-       /*
-        * Reset touch-screen controller
-        */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) & ~CONFIG_SYS_TOUCH_RST);
-       udelay(1000);
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) | CONFIG_SYS_TOUCH_RST);
-
-       /*
-        * Enable power on PS/2 interface (with reset)
-        */
-       out_be16(FPGA_CTRL, in_be16(FPGA_CTRL) & ~FPGA_CTRL_PS2_PWR);
-       for (i=0;i<500;i++)
-               udelay(1000);
-       out_be16(FPGA_CTRL, in_be16(FPGA_CTRL) | FPGA_CTRL_PS2_PWR);
-
-       /*
-        * Get contrast value from environment variable
-        */
-       str = getenv("contrast0");
-       if (str) {
-               contrast0 = simple_strtol(str, NULL, 16);
-               if (contrast0 > 255) {
-                       printf("ERROR: contrast0 value too high (0x%lx)!\n",
-                              contrast0);
-                       contrast0 = 0xffffffff;
-               }
-       }
-
-       /*
-        * Init lcd interface and display logo
-        */
-
-       str = getenv("bd_type");
-       if (strcmp(str, "ppc230") == 0) {
-               /*
-                * Switch backlight on
-                */
-               out_be16(FPGA_CTRL,
-                        in_be16(FPGA_CTRL) | FPGA_CTRL_VGA0_BL);
-               out_be16(FPGA_BL, 0x0000);
-
-               lcd_setup(1, 0);
-               lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG, (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                        regs_13806_1024_768_8bpp,
-                        sizeof(regs_13806_1024_768_8bpp)/sizeof(regs_13806_1024_768_8bpp[0]),
-                        logo_bmp_1024, sizeof(logo_bmp_1024));
-       } else if (strcmp(str, "ppc220") == 0) {
-               /*
-                * Switch backlight on
-                */
-               out_be16(FPGA_CTRL,
-                        in_be16(FPGA_CTRL) & ~FPGA_CTRL_VGA0_BL);
-               out_be16(FPGA_BL, 0x0000);
-
-               lcd_setup(1, 0);
-               lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG, (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                        regs_13806_640_480_16bpp,
-                        sizeof(regs_13806_640_480_16bpp)/sizeof(regs_13806_640_480_16bpp[0]),
-                        logo_bmp_640, sizeof(logo_bmp_640));
-       } else if (strcmp(str, "ppc215") == 0) {
-               /*
-                * Set default display contrast voltage
-                */
-               if (contrast0 == 0xffffffff) {
-                       out_be16(FPGA_CTR, 0x0082);
-               } else {
-                       out_be16(FPGA_CTR, contrast0);
-               }
-               out_be16(FPGA_BL, 0xffff);
-               /*
-                * Switch backlight on
-                */
-               out_be16(FPGA_CTRL,
-                        in_be16(FPGA_CTRL) |
-                        FPGA_CTRL_VGA0_BL |
-                        FPGA_CTRL_VGA0_BL_MODE);
-               /*
-                * Set lcd clock (small epson)
-                */
-               out_be16(FPGA_CTRL, in_be16(FPGA_CTRL) | LCD_CLK_06250);
-               udelay(100);               /* wait for 100 us */
-
-               lcd_setup(0, 1);
-               lcd_init((uchar *)CONFIG_SYS_LCD_SMALL_REG, (uchar *)CONFIG_SYS_LCD_SMALL_MEM,
-                        regs_13705_320_240_8bpp,
-                        sizeof(regs_13705_320_240_8bpp)/sizeof(regs_13705_320_240_8bpp[0]),
-                        logo_bmp_320_8bpp, sizeof(logo_bmp_320_8bpp));
-       } else if (strcmp(str, "ppc210") == 0) {
-               /*
-                * Set default display contrast voltage
-                */
-               if (contrast0 == 0xffffffff) {
-                       out_be16(FPGA_CTR, 0x0060);
-               } else {
-                       out_be16(FPGA_CTR, contrast0);
-               }
-               out_be16(FPGA_BL, 0xffff);
-               /*
-                * Switch backlight on
-                */
-               out_be16(FPGA_CTRL,
-                        in_be16(FPGA_CTRL) |
-                        FPGA_CTRL_VGA0_BL |
-                        FPGA_CTRL_VGA0_BL_MODE);
-               /*
-                * Set lcd clock (small epson), enable 1-wire interface
-                */
-               out_be16(FPGA_CTRL,
-                        in_be16(FPGA_CTRL) |
-                        LCD_CLK_08330 |
-                        FPGA_CTRL_OW_ENABLE);
-
-               lcd_setup(0, 1);
-               lcd_init((uchar *)CONFIG_SYS_LCD_SMALL_REG, (uchar *)CONFIG_SYS_LCD_SMALL_MEM,
-                        regs_13704_320_240_4bpp,
-                        sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
-                        logo_bmp_320, sizeof(logo_bmp_320));
-#ifdef CONFIG_VIDEO_SM501
-       } else {
-               pci_dev_t devbusfn;
-
-               /*
-                * Is SM501 connected (ppc221/ppc231)?
-                */
-               devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
-               if (devbusfn != -1) {
-                       puts("VGA:   SM501 with 8 MB ");
-                       if (strcmp(str, "ppc221") == 0) {
-                               printf("(800*600, %dbpp)\n", BPP);
-                               out_be16(FPGA_BL, 0x002d); /* max. allowed brightness */
-                       } else if (strcmp(str, "ppc231") == 0) {
-                               printf("(1024*768, %dbpp)\n", BPP);
-                               out_be16(FPGA_BL, 0x0000);
-                       } else {
-                               printf("Unsupported bd_type defined (%s) -> No display configured!\n", str);
-                               return 0;
-                       }
-               } else {
-                       printf("Unsupported bd_type defined (%s) -> No display configured!\n", str);
-                       return 0;
-               }
-#endif /* CONFIG_VIDEO_SM501 */
-       }
-
-       cf_enable();
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming HH405");
-       } else {
-               puts(str);
-       }
-
-       if (getenv_f("bd_type", str, sizeof(str)) != -1) {
-               printf(" (%s", str);
-       } else {
-               puts(" (Missing bd_type!");
-       }
-
-       gd->board_type = board_revision();
-       printf(", Rev %ld.x)\n", gd->board_type);
-
-       return 0;
-}
-
-#ifdef CONFIG_IDE_RESET
-void ide_set_reset(int on)
-{
-       if (((gd->board_type >= 2) &&
-            (in_be16(FPGA_STATUS) & FPGA_STATUS_CF_DETECT)) ||
-           (gd->board_type < 2)) {
-               /*
-                * Assert or deassert CompactFlash Reset Pin
-                */
-               if (on) {               /* assert RESET */
-                       cf_enable();
-                       out_be16(FPGA_CTRL,
-                                in_be16(FPGA_CTRL) &
-                                ~FPGA_CTRL_CF_RESET);
-               } else {                /* release RESET */
-                       out_be16(FPGA_CTRL,
-                                in_be16(FPGA_CTRL) |
-                                FPGA_CTRL_CF_RESET);
-               }
-       }
-}
-#endif /* CONFIG_IDE_RESET */
-
-
-#if defined(CONFIG_SYS_EEPROM_WREN)
-/* Input: <dev_addr>  I2C address of EEPROM device to enable.
- *         <state>     -1: deliver current state
- *                    0: disable write
- *                    1: enable write
- *  Returns:           -1: wrong device address
- *                      0: dis-/en- able done
- *                  0/1: current state if <state> was -1.
- */
-int eeprom_write_enable (unsigned dev_addr, int state)
-{
-       if (CONFIG_SYS_I2C_EEPROM_ADDR != dev_addr) {
-               return -1;
-       } else {
-               switch (state) {
-               case 1:
-                       /* Enable write access, clear bit GPIO_SINT2. */
-                       out_be32((void *)GPIO0_OR,
-                                in_be32((void *)GPIO0_OR) & ~CONFIG_SYS_EEPROM_WP);
-                       state = 0;
-                       break;
-               case 0:
-                       /* Disable write access, set bit GPIO_SINT2. */
-                       out_be32((void *)GPIO0_OR,
-                                in_be32((void *)GPIO0_OR) | CONFIG_SYS_EEPROM_WP);
-                       state = 0;
-                       break;
-               default:
-                       /* Read current status back. */
-                       state = (0 == (in_be32((void *)GPIO0_OR) &
-                                      CONFIG_SYS_EEPROM_WP));
-                       break;
-               }
-       }
-       return state;
-}
-
-int do_eep_wren (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int query = argc == 1;
-       int state = 0;
-
-       if (query) {
-               /* Query write access state. */
-               state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, -1);
-               if (state < 0) {
-                       puts ("Query of write access state failed.\n");
-               } else {
-                       printf ("Write access for device 0x%0x is %sabled.\n",
-                               CONFIG_SYS_I2C_EEPROM_ADDR, state ? "en" : "dis");
-                       state = 0;
-               }
-       } else {
-               if ('0' == argv[1][0]) {
-                       /* Disable write access. */
-                       state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, 0);
-               } else {
-                       /* Enable write access. */
-                       state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, 1);
-               }
-               if (state < 0) {
-                       puts ("Setup of write access state failed.\n");
-               }
-       }
-
-       return state;
-}
-
-U_BOOT_CMD(eepwren,    2,      0,      do_eep_wren,
-       "Enable / disable / query EEPROM write access",
-       ""
-);
-#endif /* #if defined(CONFIG_SYS_EEPROM_WREN) */
-
-
-#ifdef CONFIG_VIDEO_SM501
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-/*
- * Return text to be printed besides the logo.
- */
-void video_get_info_str (int line_number, char *info)
-{
-       char str[64];
-       char str2[64];
-       int i = getenv_f("serial#", str2, sizeof(str));
-
-       if (line_number == 1) {
-               sprintf(str, " Board: ");
-
-               if (i == -1) {
-                       strcat(str, "### No HW ID - assuming HH405");
-               } else {
-                       strcat(str, str2);
-               }
-
-               if (getenv_f("bd_type", str2, sizeof(str2)) != -1) {
-                       strcat(str, " (");
-                       strcat(str, str2);
-               } else {
-                       strcat(str, " (Missing bd_type!");
-               }
-
-               sprintf(str2, ", Rev %ld.x)", gd->board_type);
-               strcat(str, str2);
-               strcpy(info, str);
-       } else {
-               info [0] = '\0';
-       }
-}
-#endif /* CONFIG_CONSOLE_EXTRA_INFO */
-
-/*
- * Returns SM501 register base address. First thing called in the driver.
- */
-unsigned int board_video_init (void)
-{
-       pci_dev_t devbusfn;
-       u32 addr;
-
-       /*
-        * Is SM501 connected (ppc221/ppc231)?
-        */
-       devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
-       if (devbusfn != -1) {
-               pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_1, (u32 *)&addr);
-               return (addr & 0xfffffffe);
-       }
-
-       return 0;
-}
-
-/*
- * Returns SM501 framebuffer address
- */
-unsigned int board_video_get_fb (void)
-{
-       pci_dev_t devbusfn;
-       u32 addr;
-
-       /*
-        * Is SM501 connected (ppc221/ppc231)?
-        */
-       devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
-       if (devbusfn != -1) {
-               pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_0, (u32 *)&addr);
-               addr &= 0xfffffffe;
-#ifdef CONFIG_VIDEO_SM501_FBMEM_OFFSET
-               addr += CONFIG_VIDEO_SM501_FBMEM_OFFSET;
-#endif
-               return addr;
-       }
-
-       return 0;
-}
-
-/*
- * Called after initializing the SM501 and before clearing the screen.
- */
-void board_validate_screen (unsigned int base)
-{
-}
-
-/*
- * Return a pointer to the initialization sequence.
- */
-const SMI_REGS *board_get_regs (void)
-{
-       char *str;
-
-       str = getenv("bd_type");
-       if (strcmp(str, "ppc221") == 0) {
-               return init_regs_800x600;
-       } else {
-               return init_regs_1024x768;
-       }
-}
-
-int board_get_width (void)
-{
-       char *str;
-
-       str = getenv("bd_type");
-       if (strcmp(str, "ppc221") == 0) {
-               return 800;
-       } else {
-               return 1024;
-       }
-}
-
-int board_get_height (void)
-{
-       char *str;
-
-       str = getenv("bd_type");
-       if (strcmp(str, "ppc221") == 0) {
-               return 600;
-       } else {
-               return 768;
-       }
-}
-
-#endif /* CONFIG_VIDEO_SM501 */
-
-
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-#endif
-}
diff --git a/board/esd/hh405/logo_1024_768_8bpp.c b/board/esd/hh405/logo_1024_768_8bpp.c
deleted file mode 100644 (file)
index 331540f..0000000
+++ /dev/null
@@ -1,5087 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x20, 0xb5, 0x06, 0x40,
-0x00, 0x03, 0x48, 0x6f, 0x6c, 0x7a, 0x2d, 0x48,
-0x65, 0x72, 0x5f, 0x64, 0x74, 0x5f, 0x33, 0x43,
-0x5f, 0x31, 0x30, 0x32, 0x34, 0x78, 0x37, 0x36,
-0x38, 0x5f, 0x32, 0x35, 0x36, 0x2e, 0x62, 0x6d,
-0x70, 0x00, 0xec, 0xbd, 0x0b, 0x74, 0x23, 0xd7,
-0x79, 0xa0, 0x59, 0x14, 0x0d, 0x1d, 0x71, 0xb6,
-0xc9, 0x43, 0x37, 0xe4, 0xe4, 0xa8, 0xa2, 0x0c,
-0x80, 0x58, 0xeb, 0x14, 0x48, 0x77, 0x7a, 0xe2,
-0xb4, 0x2c, 0xcb, 0x56, 0x4b, 0xed, 0xb6, 0x8e,
-0xc2, 0x84, 0x4e, 0x6d, 0x83, 0x05, 0x80, 0x8b,
-0x09, 0x0c, 0xec, 0x28, 0x1c, 0xc3, 0x69, 0x39,
-0x41, 0x4f, 0xec, 0xc4, 0xde, 0x44, 0xc1, 0x60,
-0x6d, 0xb5, 0xdb, 0x8c, 0x9b, 0x09, 0x99, 0x75,
-0xbc, 0xd3, 0xed, 0xce, 0x64, 0xc6, 0x36, 0xd0,
-0x72, 0xa4, 0x90, 0x9d, 0x50, 0x4b, 0xb5, 0x12,
-0xef, 0x78, 0x26, 0xb6, 0x3c, 0x93, 0x2c, 0x8f,
-0x93, 0x33, 0x50, 0x9e, 0x92, 0x10, 0xc2, 0xe3,
-0xcd, 0x61, 0x98, 0xd6, 0x63, 0x77, 0x04, 0xd2,
-0x40, 0x09, 0x38, 0x7b, 0xef, 0xad, 0xd7, 0x7d,
-0x15, 0x50, 0x20, 0xd9, 0x0f, 0xa9, 0xff, 0x0f,
-0x20, 0x88, 0x47, 0xbd, 0xeb, 0xfe, 0x8f, 0xfb,
-0xdf, 0xff, 0xde, 0x7b, 0xfc, 0xa7, 0xde, 0xfd,
-0x96, 0x03, 0x0a, 0xe6, 0xdd, 0x6f, 0x51, 0x14,
-0x0d, 0xbf, 0x41, 0xff, 0x95, 0x61, 0x45, 0x19,
-0x52, 0x6e, 0x53, 0x1c, 0xde, 0xfe, 0x23, 0xd6,
-0x9f, 0xc3, 0x5b, 0x6e, 0x79, 0x8b, 0xf2, 0xe8,
-0xa7, 0x1e, 0x55, 0xee, 0x3c, 0xfe, 0x98, 0xf2,
-0xf5, 0x3f, 0xfe, 0x9a, 0xf2, 0x53, 0x8f, 0xfd,
-0x89, 0xf2, 0xfe, 0x0f, 0x3c, 0xa8, 0xdc, 0x35,
-0xf7, 0x5f, 0x94, 0xf2, 0x97, 0xd6, 0x95, 0xb7,
-0xfe, 0xd0, 0x43, 0xca, 0x0b, 0xdf, 0x79, 0x41,
-0x79, 0xf0, 0xe1, 0xc7, 0x94, 0x7f, 0xf7, 0xcd,
-0x2d, 0x25, 0xfb, 0xf0, 0x9c, 0x72, 0xe1, 0x4b,
-0x17, 0x94, 0x3b, 0x7f, 0xe8, 0x4e, 0xe5, 0xe4,
-0x57, 0xbe, 0xab, 0x1c, 0xf9, 0xd4, 0x15, 0xe5,
-0x87, 0x3e, 0x50, 0x50, 0xde, 0xf6, 0xae, 0x82,
-0xf2, 0x8e, 0x5f, 0xfc, 0xae, 0x72, 0xd7, 0xcc,
-0x57, 0x94, 0x8f, 0x3e, 0xf6, 0xb8, 0xf2, 0xcd,
-0x3f, 0xfb, 0x7b, 0xe5, 0x9f, 0xcd, 0x3d, 0xae,
-0xfc, 0x6f, 0xab, 0xff, 0xa0, 0xdc, 0xfa, 0xd6,
-0xbb, 0x94, 0xff, 0xfe, 0xda, 0x6b, 0xca, 0x4f,
-0xfe, 0xef, 0x57, 0x94, 0x77, 0x7f, 0xec, 0x4f,
-0x94, 0xd8, 0xcc, 0xbc, 0x72, 0xd7, 0x91, 0x1f,
-0x57, 0xfe, 0xbc, 0xf6, 0x9c, 0xf2, 0x63, 0x3f,
-0x76, 0x44, 0x39, 0xfb, 0x9b, 0x9f, 0x57, 0x7e,
-0x74, 0xe6, 0x51, 0xe5, 0xc4, 0xa3, 0x8f, 0x2b,
-0x3f, 0xfb, 0x85, 0xff, 0xac, 0xac, 0xd4, 0xfe,
-0xbb, 0x72, 0xe1, 0xc9, 0xff, 0xa2, 0x7c, 0xf3,
-0x3b, 0xaf, 0x2b, 0x2b, 0xab, 0x4f, 0x29, 0xb7,
-0xdf, 0x7e, 0xbb, 0x72, 0xc2, 0x48, 0x2a, 0x1f,
-0xfd, 0x85, 0x8f, 0x2b, 0xbf, 0xfa, 0xd4, 0x6b,
-0xca, 0x0f, 0xff, 0xc2, 0xf3, 0xca, 0xcf, 0x7c,
-0xe5, 0x35, 0xe5, 0x07, 0x3f, 0xf0, 0xcb, 0xca,
-0xe3, 0x7f, 0xfc, 0x82, 0xb2, 0xf4, 0xc7, 0x3b,
-0x4a, 0xf8, 0xed, 0xef, 0x51, 0xee, 0xfb, 0xb5,
-0x2b, 0xca, 0x1d, 0xef, 0xfb, 0x59, 0xe5, 0xae,
-0x87, 0xff, 0x48, 0x31, 0xce, 0x5f, 0x51, 0x3e,
-0x79, 0xfa, 0x8b, 0x4a, 0xed, 0x85, 0x4d, 0xe5,
-0x6d, 0x93, 0x3f, 0xa9, 0x9c, 0xf9, 0xc2, 0x13,
-0x4a, 0xf6, 0xc3, 0x8f, 0x29, 0x5f, 0xf8, 0xf2,
-0x53, 0xca, 0xdb, 0x67, 0xce, 0x2b, 0xb1, 0xe9,
-0x79, 0xe5, 0x03, 0x9f, 0xfe, 0x1b, 0xe5, 0x7f,
-0xfc, 0xe9, 0x27, 0x94, 0xb1, 0x1f, 0xd0, 0xd0,
-0xf1, 0xff, 0xb4, 0xf2, 0xc2, 0xdf, 0xb7, 0x94,
-0xd0, 0xc8, 0xdb, 0x94, 0x7b, 0x7e, 0x3c, 0xa3,
-0xdc, 0x75, 0xf2, 0x39, 0x25, 0xf9, 0x2f, 0x7f,
-0x59, 0x79, 0xbd, 0xfb, 0xba, 0x72, 0x71, 0xed,
-0x4f, 0x94, 0x5f, 0xfc, 0xea, 0xa6, 0xf2, 0xc3,
-0xbf, 0x7c, 0x45, 0xf9, 0xd0, 0xe7, 0xff, 0x5a,
-0xf9, 0xfc, 0xa5, 0x3f, 0x57, 0xfe, 0xe6, 0xf9,
-0x17, 0x94, 0x7f, 0xbf, 0xfe, 0xba, 0x72, 0xe7,
-0x7d, 0x9f, 0x54, 0x7e, 0xed, 0x73, 0x67, 0x95,
-0x6f, 0xfe, 0xe9, 0xba, 0xf2, 0x8f, 0x57, 0xae,
-0x28, 0xef, 0x7c, 0xe7, 0x3b, 0x95, 0x7b, 0xdf,
-0x77, 0x9f, 0xf2, 0x03, 0x77, 0xde, 0xa9, 0x1c,
-0xf9, 0x95, 0xbf, 0x55, 0xfe, 0xd3, 0x8b, 0xaf,
-0x2b, 0x5f, 0x7d, 0xe2, 0x49, 0xe5, 0xc7, 0x3e,
-0xfd, 0x9a, 0x72, 0xf6, 0xff, 0xdc, 0x52, 0xbe,
-0xf0, 0xc5, 0x0b, 0xca, 0x8f, 0x4e, 0xfd, 0x92,
-0x92, 0xf9, 0xe9, 0xac, 0xf2, 0xf1, 0x5f, 0xfc,
-0xa4, 0xf2, 0xe9, 0x3f, 0x7a, 0x4d, 0x29, 0x7d,
-0xfe, 0x19, 0xe5, 0xae, 0xec, 0x65, 0xe5, 0x77,
-0x9e, 0xf9, 0x2b, 0x65, 0xee, 0x67, 0xfe, 0xa5,
-0x72, 0xef, 0x47, 0x9f, 0x50, 0xde, 0xf7, 0xf1,
-0x3f, 0x54, 0x9e, 0xf9, 0xa3, 0xaf, 0x29, 0x3f,
-0xf6, 0xc8, 0x33, 0x4a, 0xfa, 0xc2, 0x6b, 0xca,
-0xdb, 0xde, 0xf9, 0x3f, 0x2b, 0x6f, 0xff, 0xe0,
-0xbf, 0x51, 0xa6, 0x3f, 0xf7, 0x37, 0x8a, 0xfa,
-0xbe, 0xac, 0xf2, 0x33, 0x5f, 0xfc, 0x1b, 0x65,
-0x7a, 0xfa, 0x83, 0x8a, 0xf6, 0xc8, 0x9f, 0x2a,
-0xef, 0xf9, 0xa9, 0x93, 0xca, 0x07, 0x7f, 0xeb,
-0x35, 0xe5, 0x81, 0x5f, 0xf9, 0x13, 0xe5, 0x83,
-0xa9, 0x39, 0xe5, 0xa9, 0xbf, 0x7d, 0x5d, 0x39,
-0x92, 0xfe, 0xbc, 0x32, 0xf6, 0x83, 0xf7, 0x28,
-0x87, 0x4b, 0xaf, 0x29, 0xbf, 0xf0, 0x95, 0xe7,
-0x95, 0xcd, 0xff, 0xef, 0x75, 0xe5, 0x03, 0x9f,
-0x7b, 0x4d, 0x99, 0xfb, 0xa5, 0xc7, 0x94, 0xfa,
-0x95, 0xd7, 0x95, 0x03, 0xff, 0xc3, 0x01, 0xe5,
-0x7f, 0x2a, 0x9e, 0x53, 0x9e, 0xfb, 0xcb, 0x17,
-0x94, 0x1f, 0xfd, 0x99, 0x0b, 0x8a, 0xfe, 0xa1,
-0x47, 0x95, 0xe2, 0xaf, 0xfe, 0x1b, 0xe5, 0xc7,
-0x3f, 0x74, 0x46, 0xf9, 0xbf, 0xff, 0xf4, 0x39,
-0xe5, 0x17, 0x3e, 0xf7, 0xbb, 0xca, 0xd1, 0xfb,
-0x1f, 0x54, 0x0e, 0xff, 0xc8, 0x11, 0xe5, 0xa3,
-0x3f, 0xff, 0x71, 0xe5, 0x6b, 0x7f, 0xd1, 0x56,
-0x2e, 0xfc, 0xc1, 0x5f, 0x2b, 0x9f, 0xfa, 0xdc,
-0x17, 0x94, 0x27, 0x97, 0x9f, 0x52, 0x96, 0x7e,
-0xfb, 0x19, 0xe5, 0x27, 0x1f, 0xfd, 0x43, 0xe5,
-0x8b, 0x17, 0xbe, 0xa2, 0x7c, 0xed, 0xff, 0xfa,
-0xa6, 0xf2, 0x2f, 0x7e, 0x7e, 0x5e, 0x29, 0x7c,
-0xee, 0x29, 0xc5, 0xf8, 0xb5, 0x75, 0xe5, 0xf7,
-0xd6, 0xff, 0x51, 0x39, 0x92, 0x9d, 0x57, 0x1e,
-0xf8, 0xe9, 0xff, 0x55, 0xf9, 0xf9, 0x27, 0x5f,
-0x53, 0xb2, 0xb9, 0x39, 0x25, 0xfc, 0x8e, 0xa4,
-0x52, 0xfa, 0xed, 0x6f, 0x29, 0x1f, 0xd4, 0x93,
-0xca, 0x67, 0x2e, 0xbd, 0xa0, 0x5c, 0xfe, 0x0f,
-0x7f, 0xad, 0x9c, 0xbe, 0xf8, 0x57, 0xca, 0x07,
-0x3f, 0xfc, 0x79, 0xe5, 0x67, 0x9f, 0xb8, 0xa2,
-0xdc, 0xf9, 0x23, 0xf7, 0x29, 0xf1, 0xec, 0x17,
-0x95, 0xa5, 0xaf, 0x6d, 0x29, 0x9f, 0xfc, 0x95,
-0x47, 0x95, 0x47, 0x1e, 0xf9, 0xa8, 0xf2, 0xb5,
-0x3f, 0x5e, 0x57, 0x9e, 0xff, 0x6f, 0xe8, 0x9e,
-0xbe, 0xfd, 0x9d, 0x4a, 0xf2, 0x17, 0x1e, 0x55,
-0xa2, 0x0f, 0x7d, 0x5e, 0xb9, 0xf3, 0xdd, 0x1f,
-0x57, 0x6e, 0xfb, 0xbe, 0x23, 0xca, 0xa3, 0xa5,
-0xc7, 0x94, 0xc7, 0x3e, 0x73, 0x56, 0x79, 0xf0,
-0xa1, 0x0f, 0x2a, 0x27, 0x7e, 0xe6, 0x33, 0xca,
-0x07, 0x1f, 0xfe, 0xa8, 0xf2, 0xe5, 0xca, 0x93,
-0xca, 0x3d, 0xef, 0xbe, 0x4f, 0xf9, 0xfd, 0xbf,
-0x78, 0x5d, 0x79, 0x6a, 0xed, 0x6b, 0xca, 0xdb,
-0xbe, 0xef, 0x4e, 0x25, 0x95, 0xce, 0x2a, 0xff,
-0xf4, 0x9f, 0xde, 0xa5, 0x2c, 0xfe, 0xee, 0xba,
-0xf2, 0xdc, 0xd6, 0xeb, 0xca, 0xd7, 0xfe, 0xf4,
-0x05, 0xe5, 0x7f, 0x39, 0xf5, 0x79, 0xe5, 0xa3,
-0x9f, 0x79, 0x0a, 0x1d, 0xd3, 0x07, 0x95, 0x3f,
-0xfe, 0xcb, 0x4d, 0xe5, 0xb1, 0x3f, 0xbc, 0xa2,
-0xdc, 0xf5, 0xde, 0x0f, 0x2a, 0x8f, 0xff, 0xc1,
-0x37, 0x95, 0xd8, 0x4f, 0x3e, 0xaa, 0xbc, 0x75,
-0xec, 0x76, 0xe5, 0x41, 0x3d, 0xab, 0xfc, 0xca,
-0xf2, 0xa6, 0xf2, 0xa3, 0xfa, 0x27, 0x94, 0xc7,
-0xd1, 0xb1, 0xde, 0x9b, 0x3b, 0xaf, 0x3c, 0xfa,
-0xbb, 0x2f, 0x28, 0xeb, 0xdf, 0x7e, 0x4e, 0x59,
-0xfe, 0xd6, 0x77, 0x95, 0xfb, 0x3e, 0x73, 0x45,
-0xf9, 0xd1, 0x07, 0x0b, 0xca, 0xb1, 0x0f, 0x3f,
-0xae, 0xa4, 0x7e, 0xeb, 0x1f, 0x94, 0x43, 0xc6,
-0x19, 0xe5, 0xf3, 0xbf, 0x75, 0x4e, 0x39, 0x66,
-0xfc, 0xa2, 0x92, 0x7b, 0xb4, 0xaa, 0x7c, 0xfb,
-0xff, 0x79, 0x5d, 0xf9, 0xc3, 0x6f, 0xfc, 0xa5,
-0x72, 0xe1, 0x5b, 0x6d, 0xe5, 0xc1, 0xb3, 0x57,
-0x94, 0x1f, 0x3e, 0xfa, 0xb3, 0xca, 0xa1, 0xb9,
-0xcb, 0x4a, 0xee, 0xb7, 0xb7, 0x94, 0xb3, 0x9f,
-0xf9, 0xbc, 0xf2, 0x42, 0xfd, 0xbb, 0xca, 0x7b,
-0x72, 0x5f, 0x51, 0x8e, 0x94, 0xfe, 0x51, 0x59,
-0x5f, 0x5f, 0x57, 0x8e, 0xfe, 0xea, 0xdf, 0x2a,
-0x0b, 0x5f, 0x6b, 0x2a, 0x53, 0x3f, 0xff, 0x15,
-0x25, 0xf5, 0xeb, 0x7f, 0xad, 0x68, 0xef, 0xfb,
-0x69, 0xe5, 0xe7, 0xfe, 0xed, 0x0b, 0xca, 0x4b,
-0x2f, 0xbf, 0xa6, 0xfc, 0xeb, 0x5f, 0xff, 0xaa,
-0x72, 0xf6, 0xd7, 0x3f, 0xaf, 0xcc, 0x2d, 0xfc,
-0x67, 0xe5, 0xce, 0x87, 0x3e, 0xa7, 0xfc, 0xc0,
-0xbb, 0x1f, 0x51, 0xee, 0x4a, 0x3f, 0xa1, 0xfc,
-0x93, 0xef, 0xfb, 0x61, 0xe5, 0xae, 0x9f, 0xff,
-0x6b, 0x65, 0xf1, 0x4b, 0xdf, 0x54, 0xee, 0x3b,
-0x79, 0x41, 0x59, 0x5c, 0x7b, 0x41, 0x39, 0x7a,
-0xfa, 0x35, 0x65, 0x67, 0xfb, 0x75, 0xe5, 0x9b,
-0xdf, 0x5a, 0x57, 0xbe, 0xfb, 0xf7, 0x57, 0x94,
-0x77, 0xbc, 0xe3, 0x9d, 0xca, 0xa7, 0x3e, 0xfd,
-0x98, 0xf2, 0x9f, 0xbe, 0xf1, 0x4d, 0xa5, 0xf1,
-0xdf, 0xd0, 0x71, 0xcf, 0x9d, 0x55, 0xfe, 0xfd,
-0x97, 0xbf, 0xa2, 0xbc, 0xfd, 0xed, 0x77, 0x29,
-0x73, 0x5f, 0xbe, 0xa2, 0x4c, 0x01, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x34, 0x85,
-0x09, 0x8f, 0xec, 0x54, 0xf3, 0x7a, 0x1f, 0x0e,
-0x00, 0x00, 0xd7, 0x90, 0x9a, 0xe2, 0x31, 0x77,
-0xbd, 0x0f, 0x06, 0x00, 0x80, 0x6b, 0x0a, 0x2d,
-0xff, 0xd5, 0xeb, 0x7d, 0x30, 0x00, 0x00, 0x5c,
-0x53, 0xc0, 0xfe, 0x03, 0xc0, 0xcd, 0x4b, 0x8c,
-0xb6, 0xff, 0xea, 0xf5, 0x3e, 0x1a, 0x00, 0x00,
-0xae, 0x25, 0x60, 0xff, 0x01, 0xe0, 0xe6, 0x05,
-0xe4, 0x1f, 0x00, 0x6e, 0x5e, 0x40, 0xfe, 0x01,
-0xe0, 0xe6, 0x85, 0xa9, 0xff, 0x5f, 0xef, 0x83,
-0x01, 0x00, 0xe0, 0x9a, 0x02, 0xf6, 0x1f, 0x00,
-0x6e, 0x5e, 0x40, 0xfe, 0x01, 0xe0, 0xe6, 0x05,
-0xf2, 0x7f, 0x00, 0xe0, 0xe6, 0x05, 0xec, 0x3f,
-0x00, 0xdc, 0xbc, 0x40, 0xfe, 0x0f, 0x00, 0xdc,
-0xbc, 0x80, 0xfd, 0x07, 0x80, 0x9b, 0x97, 0x18,
-0xc8, 0x3f, 0x00, 0xdc, 0xb4, 0x80, 0xfc, 0x03,
-0xc0, 0x9b, 0x10, 0x55, 0x35, 0x4c, 0x53, 0xd7,
-0x4d, 0xc3, 0xe8, 0x59, 0xab, 0x97, 0xc7, 0xff,
-0x55, 0x63, 0x07, 0xaf, 0x1a, 0x3c, 0x1e, 0x40,
-0x76, 0x36, 0xd2, 0x6f, 0x67, 0xfb, 0x86, 0x8a,
-0xf6, 0x66, 0x1a, 0xd7, 0x64, 0x57, 0x03, 0xa1,
-0x1a, 0x86, 0x3e, 0x12, 0xf8, 0x1a, 0xb8, 0x77,
-0x28, 0xe8, 0xf2, 0x2a, 0x59, 0x1e, 0xdd, 0x97,
-0x37, 0x40, 0xa0, 0x06, 0x5d, 0x8a, 0x00, 0xc5,
-0x0f, 0xb8, 0x0a, 0x18, 0xba, 0x96, 0xa8, 0x4e,
-0xa4, 0x92, 0xdd, 0x6e, 0x3a, 0x9d, 0xee, 0x26,
-0x53, 0x13, 0xd5, 0xec, 0xb0, 0xe9, 0xb3, 0xac,
-0xa4, 0xfe, 0x6f, 0x66, 0xf2, 0xc5, 0xe8, 0x18,
-0x5e, 0x33, 0x34, 0x97, 0x6d, 0xf4, 0xbd, 0x7d,
-0xaa, 0xae, 0xb5, 0x72, 0xc5, 0x28, 0xd9, 0x57,
-0x37, 0x55, 0x3c, 0xd0, 0xd2, 0x74, 0x7e, 0x9d,
-0x1d, 0x13, 0x95, 0xf4, 0x9e, 0x18, 0xb4, 0x14,
-0x18, 0xde, 0xe2, 0x92, 0xd2, 0xa3, 0x46, 0xb2,
-0x73, 0xa1, 0xe4, 0x18, 0x3a, 0xbc, 0x62, 0x45,
-0x73, 0x4f, 0xcb, 0x40, 0xc5, 0xcd, 0x5a, 0x8d,
-0x96, 0x26, 0x73, 0xc7, 0xdd, 0x03, 0xb3, 0x21,
-0x6a, 0x07, 0xbc, 0xf0, 0xa9, 0xf8, 0xb7, 0x1d,
-0x72, 0x44, 0x26, 0xbf, 0x73, 0x63, 0xc7, 0x3b,
-0x5e, 0xf1, 0x42, 0xe8, 0x5a, 0x85, 0x5c, 0x86,
-0x64, 0x6a, 0x6e, 0x34, 0xe2, 0x6e, 0xce, 0x3e,
-0x2c, 0xc3, 0xdc, 0x61, 0x76, 0x32, 0xdc, 0xa9,
-0xe4, 0x42, 0xd1, 0xe4, 0x98, 0x75, 0x83, 0x2a,
-0x99, 0x48, 0x9f, 0xeb, 0xac, 0x46, 0x3a, 0xf9,
-0x89, 0x54, 0x17, 0x2f, 0x3f, 0xd6, 0x8d, 0x16,
-0x73, 0xad, 0x4c, 0xc3, 0x3d, 0xf2, 0x3e, 0xd7,
-0x6b, 0xc7, 0x3d, 0x66, 0xe6, 0x64, 0x55, 0xeb,
-0x3b, 0xf1, 0x22, 0x18, 0xf6, 0x0f, 0x86, 0x29,
-0x53, 0xb1, 0x86, 0xfb, 0xa3, 0xbf, 0x02, 0xd6,
-0x0b, 0xb1, 0x39, 0x74, 0x29, 0xba, 0xb8, 0x44,
-0x44, 0x43, 0x39, 0xf9, 0xd9, 0xb9, 0x17, 0xc6,
-0x67, 0x37, 0xce, 0x39, 0xed, 0xf8, 0x15, 0x5d,
-0x40, 0xc2, 0x4e, 0x23, 0x3b, 0x97, 0x8a, 0x97,
-0x14, 0x8e, 0x52, 0x37, 0x37, 0xaa, 0xcb, 0x96,
-0x17, 0xe4, 0x5f, 0x6f, 0x25, 0xe9, 0xb5, 0xe3,
-0xa1, 0x6c, 0xcf, 0xeb, 0x5f, 0x8e, 0x15, 0xc7,
-0xf8, 0x9d, 0xa5, 0x43, 0x2d, 0x46, 0x6d, 0x44,
-0x92, 0xa8, 0xcc, 0xf6, 0x79, 0xa6, 0xbb, 0x29,
-0xb7, 0x14, 0xe4, 0xbc, 0xaf, 0xbb, 0xc3, 0xdc,
-0xfe, 0x8c, 0x4c, 0x31, 0x4d, 0x9d, 0x56, 0xb4,
-0x62, 0x9d, 0x95, 0x3a, 0xd7, 0xc5, 0x82, 0x81,
-0x57, 0x2a, 0x7a, 0xbb, 0x6e, 0x50, 0x3b, 0x9e,
-0xa0, 0x8e, 0xc8, 0xef, 0x7b, 0x4c, 0xcc, 0x3d,
-0xa0, 0xb1, 0xee, 0x28, 0xfb, 0x93, 0x5a, 0xf4,
-0x8e, 0xf8, 0xb3, 0x11, 0xee, 0xb7, 0x46, 0x35,
-0x49, 0x5f, 0x82, 0x5c, 0xc1, 0xda, 0x6e, 0xa7,
-0x6b, 0x6d, 0xaa, 0x3b, 0x96, 0x74, 0x4e, 0xa5,
-0xde, 0xa9, 0x86, 0xc6, 0xf8, 0x3b, 0x14, 0x0f,
-0x25, 0xb8, 0x2d, 0xd2, 0xe8, 0x89, 0x50, 0x5a,
-0xe1, 0xd7, 0x48, 0x25, 0xec, 0x5f, 0x27, 0xa9,
-0xeb, 0x95, 0x11, 0xd6, 0x6d, 0x91, 0xef, 0xad,
-0x53, 0xca, 0x52, 0xdf, 0x2f, 0x74, 0xc9, 0xa1,
-0x91, 0x15, 0xe7, 0xa9, 0xef, 0xd7, 0xf1, 0xc5,
-0x19, 0x7b, 0x86, 0xac, 0x70, 0x40, 0xd8, 0x9a,
-0x19, 0x25, 0xab, 0x91, 0xbd, 0x85, 0xa4, 0x0a,
-0xc0, 0xec, 0xe4, 0xba, 0xc2, 0xd9, 0x45, 0x27,
-0x0b, 0xdc, 0xc2, 0xe6, 0x99, 0x31, 0xeb, 0xc2,
-0x60, 0xab, 0x21, 0x14, 0x31, 0xb5, 0x68, 0x5f,
-0x35, 0xf4, 0x8c, 0xf6, 0xb8, 0x30, 0x00, 0xcb,
-0x68, 0x34, 0xce, 0x97, 0x13, 0x97, 0xee, 0xa4,
-0xe4, 0x42, 0x72, 0xf2, 0xaf, 0x8e, 0x26, 0x85,
-0xf5, 0x52, 0x19, 0x5f, 0xdb, 0xd4, 0xa8, 0x0a,
-0xc2, 0x6f, 0xdf, 0xf0, 0x62, 0xc7, 0xbb, 0xdf,
-0x6d, 0xff, 0x63, 0xa2, 0x48, 0x3b, 0x85, 0x40,
-0x0d, 0x79, 0x5f, 0x96, 0x0a, 0xcc, 0xfe, 0xd4,
-0x42, 0x88, 0x5f, 0xad, 0x9b, 0xc0, 0x3b, 0x32,
-0xa2, 0xde, 0xe1, 0x7a, 0x47, 0x5b, 0xa0, 0xca,
-0x61, 0x88, 0x3a, 0x89, 0x36, 0xf5, 0x7d, 0x8a,
-0x3b, 0xb9, 0x21, 0x6a, 0xdb, 0x31, 0xf6, 0x27,
-0x83, 0xba, 0x36, 0xf1, 0x06, 0xf3, 0x53, 0xa4,
-0xca, 0x9f, 0x63, 0x3c, 0x47, 0xae, 0x76, 0xc5,
-0x3b, 0x95, 0xb6, 0x64, 0x0f, 0x34, 0x63, 0xb2,
-0xfb, 0x43, 0x36, 0x9e, 0x97, 0x5f, 0x65, 0x47,
-0xd3, 0x4d, 0x50, 0xdf, 0x75, 0x84, 0xb5, 0x27,
-0xa9, 0x5f, 0x13, 0xd4, 0xf7, 0xa3, 0xd4, 0xf7,
-0x39, 0xea, 0xfb, 0x61, 0xea, 0xe2, 0x14, 0x85,
-0x3b, 0x1f, 0xa1, 0xce, 0x33, 0x29, 0x73, 0x82,
-0x5a, 0x62, 0x01, 0xb2, 0x4e, 0x3f, 0x15, 0x63,
-0x0c, 0x90, 0x4e, 0x9d, 0x53, 0x5a, 0x30, 0x4d,
-0xcc, 0xa5, 0x06, 0xf9, 0x0f, 0x4c, 0xcb, 0xa7,
-0x6c, 0xd9, 0xd7, 0x39, 0x2f, 0x5c, 0x68, 0xb6,
-0xfe, 0x6f, 0xe4, 0x05, 0xcf, 0x01, 0xdf, 0xba,
-0xaa, 0xdc, 0x05, 0x30, 0x87, 0x04, 0xa3, 0x44,
-0x11, 0x72, 0xca, 0xfb, 0x54, 0x23, 0x90, 0xfc,
-0x8f, 0xc9, 0xe4, 0x5f, 0x61, 0xe4, 0xdf, 0x68,
-0xc9, 0xb6, 0x54, 0x44, 0xa2, 0x68, 0x76, 0xbd,
-0xfd, 0x7a, 0x65, 0x96, 0x2e, 0xca, 0x29, 0xca,
-0xfe, 0xb4, 0x7d, 0xbe, 0xe7, 0xaf, 0x60, 0x82,
-0xfd, 0x89, 0x52, 0x32, 0x4a, 0x89, 0x91, 0x7f,
-0x8d, 0xfa, 0xc5, 0xa5, 0x8b, 0x65, 0x71, 0xce,
-0xfd, 0xe8, 0x6a, 0x8c, 0x84, 0xef, 0x25, 0xe8,
-0xd6, 0x24, 0x16, 0x55, 0xcd, 0xfa, 0x48, 0x94,
-0x32, 0x61, 0x2f, 0x91, 0xa3, 0xbe, 0x1b, 0x15,
-0xd6, 0xcf, 0x53, 0xbf, 0xb6, 0xa8, 0xef, 0x3b,
-0x92, 0x2d, 0x61, 0xb6, 0xa9, 0x6b, 0x1c, 0x12,
-0xe5, 0x9f, 0xba, 0xe5, 0x5d, 0xd1, 0x6c, 0xfb,
-0x1e, 0x2b, 0x26, 0x49, 0x1f, 0x9c, 0xee, 0xdd,
-0x31, 0x99, 0xfc, 0x47, 0xbd, 0x5f, 0xd9, 0x4b,
-0x0d, 0xf4, 0x22, 0xdb, 0xe3, 0xf2, 0x63, 0x52,
-0x05, 0x6e, 0x05, 0xc6, 0xfe, 0x9b, 0x55, 0x9f,
-0xd5, 0x8a, 0xb2, 0xba, 0x43, 0x3b, 0xd5, 0x7b,
-0x5f, 0xae, 0xf4, 0x34, 0x64, 0x4a, 0x45, 0x20,
-0xed, 0x54, 0x90, 0x9b, 0x7e, 0xf2, 0x6f, 0xcc,
-0xc9, 0xd7, 0x8c, 0x16, 0xa6, 0x74, 0xaf, 0x58,
-0x52, 0x65, 0x79, 0xc9, 0xc7, 0xce, 0xd3, 0xf2,
-0x1f, 0xe5, 0x8a, 0xf8, 0xb2, 0xec, 0x0c, 0xec,
-0xfd, 0x47, 0xbd, 0x9f, 0xe2, 0x33, 0xde, 0xf7,
-0xcd, 0xac, 0x5c, 0xc1, 0xc5, 0x13, 0x2a, 0x65,
-0x9b, 0xd3, 0x8e, 0x19, 0xeb, 0x71, 0x8f, 0x4a,
-0x55, 0x41, 0x01, 0x98, 0x73, 0xbe, 0x57, 0xcf,
-0x69, 0xaf, 0xd9, 0x5f, 0xf9, 0x6f, 0xfb, 0x38,
-0x4d, 0x16, 0x3a, 0x75, 0xaa, 0x82, 0xfc, 0xeb,
-0xf4, 0x91, 0x48, 0xc8, 0x51, 0xe3, 0x4b, 0x07,
-0x97, 0xff, 0x38, 0xc8, 0x7f, 0x60, 0xb4, 0x7e,
-0xa2, 0x16, 0x1f, 0x65, 0x6f, 0x29, 0x2d, 0xff,
-0x39, 0x1f, 0xf9, 0x42, 0x14, 0x47, 0x84, 0x5d,
-0xad, 0xf6, 0x32, 0xfe, 0x18, 0xd7, 0x7b, 0x0e,
-0xe6, 0xff, 0x4b, 0xed, 0x3f, 0xed, 0xff, 0xab,
-0x7e, 0xda, 0x49, 0x89, 0x46, 0x28, 0x17, 0x83,
-0xaa, 0xb3, 0x0e, 0x07, 0x90, 0xff, 0x7d, 0xf0,
-0xff, 0x33, 0x7e, 0xe7, 0x17, 0xcf, 0x1a, 0x45,
-0xf7, 0x43, 0xd7, 0x29, 0xe4, 0x1d, 0x9f, 0xa5,
-0xad, 0xa3, 0xe7, 0x14, 0x80, 0x5e, 0xf4, 0x5f,
-0xd6, 0x6e, 0xaf, 0x69, 0xd2, 0x52, 0x27, 0xfa,
-0xff, 0xf3, 0xd4, 0xaf, 0xb4, 0x42, 0x5b, 0xa4,
-0xbe, 0xa7, 0xfd, 0xff, 0xf6, 0xae, 0xfd, 0xff,
-0x7e, 0x06, 0x81, 0xd9, 0x0d, 0x2d, 0xff, 0x63,
-0xbd, 0xfd, 0x7f, 0x90, 0xff, 0xc0, 0xb4, 0xfb,
-0x9a, 0xda, 0x78, 0x96, 0x59, 0x81, 0x6e, 0xff,
-0xef, 0x25, 0xa6, 0x7c, 0xb9, 0x54, 0x33, 0xfd,
-0xc4, 0x9f, 0xb2, 0xff, 0x81, 0xe4, 0xff, 0x99,
-0x7e, 0xfe, 0x7f, 0xcd, 0xff, 0xdc, 0x42, 0x9a,
-0xb7, 0x0b, 0xaa, 0x17, 0x93, 0x9f, 0x9c, 0xd3,
-0x0a, 0x69, 0xef, 0xfe, 0x7f, 0xc4, 0xdf, 0xe7,
-0x8d, 0x6b, 0xde, 0xb9, 0xb8, 0xd2, 0xb2, 0xd6,
-0xf3, 0x1e, 0x55, 0xd8, 0x86, 0x8a, 0x1e, 0xe2,
-0xaf, 0x54, 0xec, 0x85, 0x68, 0xf9, 0x67, 0xef,
-0x2e, 0x26, 0x88, 0xfd, 0xa7, 0x05, 0x33, 0xb8,
-0xff, 0xcf, 0xc9, 0x7f, 0xa3, 0x97, 0xef, 0x2f,
-0xec, 0xa6, 0xde, 0xdb, 0xfe, 0x53, 0xdb, 0x02,
-0xff, 0x3f, 0x38, 0x91, 0xbe, 0x52, 0xa9, 0xa4,
-0x99, 0x2a, 0x40, 0xad, 0xef, 0xf2, 0xf6, 0x4d,
-0xa8, 0xb1, 0x3b, 0x2a, 0xf4, 0xdf, 0x91, 0x67,
-0xff, 0x03, 0xf9, 0xff, 0xfd, 0xec, 0x3f, 0x6d,
-0x30, 0x04, 0x8a, 0xde, 0x2e, 0x2a, 0xde, 0x41,
-0x06, 0xf1, 0xff, 0x79, 0xfb, 0xdf, 0xcb, 0xff,
-0x97, 0x1a, 0x25, 0xd5, 0xdf, 0x6b, 0x42, 0x9e,
-0x89, 0x77, 0xd0, 0x51, 0x47, 0xd1, 0xf4, 0x76,
-0x87, 0xe2, 0x74, 0x04, 0xdf, 0xe8, 0xe9, 0x50,
-0x3b, 0x87, 0x17, 0xdc, 0xfe, 0x07, 0x91, 0x7f,
-0xc6, 0xff, 0x17, 0xb6, 0x16, 0xf1, 0xf5, 0xff,
-0x23, 0xd1, 0x5e, 0xc7, 0x2a, 0xec, 0x86, 0x8e,
-0xff, 0x75, 0xc1, 0xfe, 0xef, 0x13, 0x66, 0x2f,
-0x21, 0xb1, 0x89, 0xd2, 0x57, 0x3b, 0xa8, 0xfc,
-0x2b, 0x5d, 0x26, 0x0a, 0xab, 0xf3, 0x37, 0xbb,
-0x94, 0x4e, 0xa6, 0x52, 0x4f, 0x25, 0xd3, 0x54,
-0xe1, 0x19, 0xd0, 0xfe, 0xa7, 0x5d, 0x43, 0x2c,
-0xb7, 0xff, 0x5c, 0x68, 0x33, 0xde, 0x8d, 0xa6,
-0xa2, 0x42, 0x33, 0x9a, 0xc2, 0x94, 0xf1, 0x40,
-0xfe, 0x3f, 0x67, 0xff, 0x7b, 0xf9, 0xff, 0xd4,
-0x49, 0x7b, 0x85, 0xb2, 0xcd, 0x6a, 0xc2, 0x12,
-0x3a, 0xae, 0x54, 0x57, 0x72, 0xc6, 0xae, 0xfc,
-0x3b, 0x97, 0xa3, 0x14, 0x4f, 0xa2, 0x45, 0x93,
-0xfc, 0xa2, 0x74, 0xab, 0x9a, 0x7f, 0xa8, 0x90,
-0x3e, 0xbc, 0xde, 0xf1, 0x7f, 0xda, 0xfe, 0xd3,
-0x0a, 0x6d, 0x77, 0xf5, 0xff, 0xb2, 0x9f, 0xfd,
-0x37, 0xe8, 0xa3, 0x20, 0xa7, 0x87, 0x4b, 0x44,
-0x2a, 0x49, 0xb7, 0x05, 0xe6, 0xa8, 0xcd, 0xf5,
-0xa9, 0xff, 0x83, 0xfc, 0xef, 0x0a, 0xaa, 0x88,
-0x96, 0xe2, 0x63, 0xc9, 0x68, 0xf2, 0x19, 0x89,
-0x84, 0x50, 0x16, 0x92, 0xf1, 0xff, 0x9d, 0xbb,
-0x31, 0xd1, 0x1a, 0x5d, 0x4c, 0xe4, 0x78, 0x4d,
-0x32, 0x49, 0xad, 0xc5, 0xd9, 0xbc, 0x52, 0xaa,
-0x35, 0x5c, 0x36, 0x54, 0xd5, 0xd8, 0x29, 0x17,
-0x62, 0x39, 0x27, 0x7f, 0xc0, 0x2d, 0x6c, 0xc1,
-0xec, 0x7f, 0xb7, 0xb7, 0xff, 0x4f, 0x0b, 0x1f,
-0x12, 0xa6, 0x44, 0xdb, 0x54, 0x37, 0x8d, 0xba,
-0x56, 0x15, 0xfc, 0x10, 0xaa, 0x8c, 0x07, 0xb2,
-0xff, 0x9c, 0xfc, 0xf7, 0xb2, 0xff, 0x9f, 0xa5,
-0x4e, 0xd9, 0x2d, 0x94, 0x15, 0x6a, 0x05, 0x25,
-0x3d, 0xa7, 0xe9, 0x86, 0xba, 0x69, 0x36, 0x12,
-0x42, 0x5d, 0xd8, 0x95, 0x25, 0x52, 0xf2, 0xd3,
-0xc5, 0x56, 0x26, 0x62, 0xe2, 0x45, 0x23, 0xa3,
-0x45, 0xe6, 0xfa, 0x94, 0x34, 0x77, 0x87, 0xdb,
-0x7c, 0xbb, 0x5f, 0x3c, 0x54, 0xdd, 0xea, 0x2c,
-0xc6, 0xf2, 0x45, 0x72, 0x8d, 0x1d, 0x59, 0xbf,
-0x4c, 0x2d, 0x21, 0xc6, 0xff, 0xe8, 0xf6, 0xbf,
-0xab, 0x68, 0xff, 0x13, 0xec, 0x4d, 0x8e, 0xe6,
-0x33, 0x65, 0x53, 0x45, 0xa7, 0xa7, 0xb7, 0x47,
-0xab, 0x4e, 0x89, 0x80, 0xfa, 0xff, 0xd5, 0xc6,
-0x96, 0x9d, 0x52, 0x32, 0x97, 0x28, 0x44, 0xea,
-0xc6, 0x8e, 0xa9, 0x37, 0x6a, 0x13, 0xbc, 0x88,
-0xd0, 0xa6, 0x5c, 0x90, 0xff, 0xf8, 0x64, 0xc3,
-0x8a, 0xd2, 0x96, 0x2b, 0xec, 0x7a, 0x69, 0x6a,
-0x2d, 0x36, 0xcc, 0x18, 0xca, 0x6c, 0x52, 0x87,
-0xd0, 0x34, 0x33, 0xe7, 0xc8, 0x9a, 0xae, 0xf5,
-0x5c, 0x67, 0x37, 0xd4, 0x8d, 0x65, 0x6b, 0xb5,
-0x6c, 0x2d, 0xcb, 0xd1, 0x71, 0xe4, 0xa3, 0x29,
-0xf5, 0xff, 0x19, 0x25, 0x32, 0xe7, 0x15, 0x98,
-0x46, 0x8e, 0xd3, 0x2e, 0x54, 0x0d, 0x78, 0xaf,
-0xf1, 0xbf, 0x20, 0xfe, 0x3f, 0xa3, 0xad, 0xa2,
-0x9e, 0xbb, 0x62, 0x26, 0xb8, 0xcb, 0xee, 0xca,
-0x7f, 0xbd, 0xfb, 0x6c, 0x28, 0x41, 0x67, 0xc4,
-0x6d, 0x76, 0x18, 0x5d, 0xeb, 0x76, 0xc3, 0x50,
-0x39, 0xef, 0x3f, 0x5d, 0xdd, 0x36, 0x9c, 0x6b,
-0x3c, 0xdc, 0x4a, 0xb9, 0x35, 0x85, 0xde, 0xfe,
-0xbf, 0x5f, 0xfb, 0x7f, 0x10, 0xf9, 0x97, 0xc4,
-0xff, 0x7c, 0xda, 0xff, 0xca, 0xcc, 0x29, 0x24,
-0x6b, 0xb4, 0x6a, 0x68, 0x1a, 0x85, 0x49, 0xe2,
-0x06, 0xec, 0xce, 0xfe, 0x43, 0xfd, 0x7f, 0x00,
-0x70, 0x59, 0x88, 0xe6, 0x0b, 0xcc, 0xe5, 0x6f,
-0xe4, 0x39, 0x1f, 0x93, 0x2a, 0x06, 0xbc, 0xff,
-0xdf, 0xed, 0x78, 0x6d, 0x34, 0x19, 0xd6, 0x05,
-0x18, 0x72, 0x7f, 0x50, 0xe9, 0xa8, 0x54, 0xa9,
-0x22, 0x36, 0x5a, 0xaf, 0xe3, 0x2c, 0x10, 0x77,
-0x2f, 0x5c, 0xe0, 0xbe, 0x94, 0x10, 0x96, 0x67,
-0x90, 0xdb, 0x7f, 0xba, 0xb8, 0x16, 0x99, 0x3c,
-0xd6, 0x21, 0x56, 0x01, 0x50, 0xf2, 0xbf, 0xdf,
-0xf6, 0x3f, 0xea, 0xfd, 0xe4, 0xca, 0x3f, 0x53,
-0x8e, 0x99, 0xd0, 0x8a, 0xf6, 0x3d, 0xe6, 0xb8,
-0x5c, 0x59, 0xda, 0x1c, 0xd2, 0x36, 0xb9, 0x53,
-0x66, 0x5a, 0x10, 0xdc, 0x8a, 0xc2, 0x30, 0x7b,
-0xdb, 0xbc, 0x84, 0x0a, 0xeb, 0x68, 0x96, 0x9c,
-0x9b, 0x4c, 0x7b, 0xde, 0xbb, 0x6b, 0xff, 0xf3,
-0xb5, 0xff, 0x81, 0xe3, 0x7f, 0xb4, 0x96, 0x51,
-0x72, 0x62, 0x73, 0x71, 0x3d, 0x9b, 0x2a, 0xf9,
-0xda, 0x7f, 0xa8, 0xff, 0xef, 0x1b, 0x93, 0xa5,
-0x50, 0x47, 0xcc, 0xd6, 0x59, 0x8b, 0xd2, 0xb7,
-0x87, 0xae, 0x62, 0x72, 0xf2, 0xcf, 0x44, 0x9f,
-0xa6, 0x16, 0x98, 0x02, 0xe8, 0x65, 0x69, 0xd2,
-0xe6, 0xbf, 0x94, 0x90, 0x66, 0x07, 0xd6, 0x13,
-0x49, 0xaf, 0xf6, 0xbc, 0xc3, 0xd6, 0x0d, 0xe3,
-0xab, 0x3d, 0x4f, 0x41, 0x2e, 0xff, 0x74, 0xf5,
-0x5f, 0x63, 0x97, 0xcf, 0x33, 0x5b, 0xa7, 0x24,
-0x60, 0xbf, 0xeb, 0xff, 0x32, 0xa3, 0x44, 0x07,
-0x37, 0xe6, 0xd8, 0x4b, 0xb1, 0xc0, 0x78, 0x00,
-0x13, 0x53, 0xfe, 0x30, 0x4d, 0x78, 0x8e, 0xa3,
-0xc5, 0x99, 0xff, 0x09, 0x69, 0xfe, 0x36, 0x86,
-0xf6, 0xff, 0xf7, 0xd7, 0xfe, 0x07, 0xf6, 0xff,
-0xe9, 0x68, 0x9e, 0x32, 0x27, 0xcd, 0x0b, 0xde,
-0xe9, 0xa4, 0xe8, 0x0e, 0xa6, 0xf4, 0x1a, 0x7d,
-0xfc, 0x7f, 0xc8, 0xff, 0x0b, 0xce, 0xda, 0x82,
-0x54, 0x1c, 0x1b, 0x51, 0xba, 0x28, 0x51, 0x57,
-0x94, 0x93, 0xff, 0x16, 0xb3, 0x96, 0xca, 0xa4,
-0xaa, 0x7a, 0xbe, 0x38, 0x5d, 0xfb, 0x9f, 0xf4,
-0x4b, 0x0e, 0xd6, 0xa9, 0x9b, 0xaa, 0xb3, 0x69,
-0xbb, 0x63, 0x6d, 0x9f, 0x75, 0xac, 0xbd, 0x4a,
-0xe5, 0x9f, 0xb2, 0xcb, 0xbc, 0xbb, 0x68, 0x30,
-0x5b, 0xa7, 0x34, 0xd8, 0x7e, 0xc7, 0xff, 0xa9,
-0x8b, 0xe8, 0x1a, 0x25, 0x7a, 0x5b, 0x7c, 0xe3,
-0x1b, 0x13, 0xbe, 0xe3, 0x3b, 0x1a, 0x30, 0x30,
-0x39, 0x41, 0xf6, 0xd5, 0x61, 0x64, 0x4a, 0x49,
-0xf9, 0x8a, 0x7f, 0x1f, 0xff, 0x7f, 0xe0, 0xfc,
-0x9f, 0xdd, 0xb4, 0xff, 0xd1, 0xc5, 0x48, 0xde,
-0x2d, 0x60, 0x0a, 0xf7, 0x4d, 0xa1, 0x3e, 0x80,
-0xff, 0x7f, 0x4d, 0xe9, 0x30, 0x4e, 0xb2, 0x57,
-0x4a, 0xd8, 0xfa, 0x3f, 0xdf, 0x11, 0xc3, 0x8c,
-0xd2, 0xbf, 0x3a, 0xa5, 0x47, 0xa7, 0x6e, 0x4e,
-0x8f, 0x62, 0x49, 0xc3, 0xb5, 0x0d, 0xf7, 0xec,
-0xd2, 0x21, 0x97, 0x7f, 0x4a, 0x15, 0x09, 0x79,
-0xe7, 0x4c, 0x38, 0x42, 0xf3, 0xbe, 0xdf, 0xab,
-0xfd, 0xef, 0x51, 0xff, 0x2f, 0x49, 0xe4, 0xbf,
-0xc4, 0x0b, 0x1f, 0x73, 0xf9, 0x72, 0x53, 0x3d,
-0xa0, 0x85, 0xd1, 0xe9, 0x28, 0xc0, 0xa8, 0xe6,
-0x38, 0x9f, 0xb8, 0x49, 0x11, 0xdc, 0xff, 0x1f,
-0xb8, 0xfe, 0x2f, 0x6c, 0x4d, 0x6e, 0xff, 0xe9,
-0x5b, 0x16, 0xd0, 0x5d, 0xa7, 0xe5, 0xff, 0x19,
-0xf0, 0xff, 0xaf, 0x36, 0x9b, 0x8c, 0x8d, 0xf4,
-0xaa, 0xf2, 0xac, 0xfd, 0x17, 0xb2, 0x47, 0x98,
-0x46, 0x37, 0xa7, 0x06, 0xab, 0xf5, 0x30, 0x79,
-0x7e, 0x70, 0xf9, 0x02, 0x92, 0x7c, 0x42, 0x17,
-0x79, 0xfe, 0x2f, 0x65, 0x4b, 0x05, 0x73, 0xc1,
-0x68, 0x0c, 0xcd, 0xfb, 0x7e, 0x37, 0xf5, 0xff,
-0x80, 0xf9, 0x3f, 0x6e, 0xa1, 0x6c, 0x50, 0x27,
-0xc6, 0xe5, 0x48, 0xb0, 0x0e, 0x40, 0xae, 0x97,
-0xfd, 0xa7, 0x17, 0xb4, 0xfd, 0x2c, 0x95, 0xa9,
-0x34, 0xf5, 0x1a, 0x9b, 0x31, 0xb8, 0xff, 0xbf,
-0xf7, 0xfa, 0xbf, 0x2e, 0x8d, 0xff, 0xd1, 0x5e,
-0x41, 0xc0, 0x51, 0xa4, 0xfb, 0xc4, 0xff, 0xa9,
-0x4b, 0x0d, 0xf6, 0x7f, 0x3f, 0x60, 0x9a, 0xa9,
-0xbc, 0xd2, 0xc4, 0xc8, 0xbf, 0x18, 0x87, 0x61,
-0x42, 0xf7, 0x8e, 0xdd, 0xad, 0xf4, 0x5a, 0xc3,
-0x8f, 0x0e, 0x1b, 0xcc, 0x9a, 0xf3, 0x2f, 0xcf,
-0xf2, 0xfc, 0x9f, 0x55, 0x6a, 0x65, 0xc1, 0x16,
-0xd2, 0xe2, 0xa3, 0x79, 0x5f, 0xef, 0xb7, 0xfd,
-0x97, 0xb5, 0xff, 0x99, 0x94, 0xa5, 0x12, 0x8a,
-0x3e, 0xad, 0x1c, 0x7a, 0x8d, 0xae, 0x64, 0xd2,
-0x0a, 0xcc, 0xb6, 0xff, 0xf4, 0x86, 0x95, 0x78,
-0xaf, 0x1a, 0x53, 0xf0, 0xfc, 0xff, 0x40, 0xf6,
-0x9f, 0xba, 0x51, 0x41, 0xf3, 0x7f, 0x33, 0xc2,
-0xd1, 0xf7, 0x05, 0xda, 0xff, 0xaf, 0x2d, 0x74,
-0x77, 0x4f, 0xaa, 0xbe, 0xc7, 0xc8, 0xbf, 0x58,
-0x44, 0xd5, 0x4b, 0x62, 0x21, 0xa4, 0xa3, 0xff,
-0x3d, 0x9d, 0x5a, 0x76, 0x4b, 0x5c, 0x03, 0xf1,
-0x90, 0xbf, 0x02, 0x90, 0xda, 0xff, 0x1e, 0x71,
-0x36, 0x56, 0xd0, 0x29, 0xe5, 0x70, 0x2d, 0xe2,
-0xff, 0xb4, 0x63, 0x95, 0xe4, 0xab, 0x35, 0x06,
-0x95, 0x05, 0xd0, 0xc3, 0x2e, 0x1a, 0x4c, 0x04,
-0xd3, 0x8e, 0xce, 0x30, 0x69, 0x82, 0xa2, 0x20,
-0x52, 0xec, 0xdd, 0xfe, 0x0f, 0xd0, 0xff, 0x47,
-0x6a, 0xff, 0x29, 0x8b, 0x10, 0xf5, 0xab, 0xfd,
-0xf3, 0x1b, 0x82, 0xf6, 0xff, 0x6b, 0x0a, 0x13,
-0x61, 0x2a, 0xca, 0xed, 0xbf, 0x58, 0x78, 0xd8,
-0xce, 0xea, 0x1a, 0xf9, 0x8a, 0xbe, 0x37, 0x31,
-0x71, 0x0d, 0x3f, 0x54, 0xa6, 0x89, 0x48, 0x29,
-0xf9, 0xd6, 0x1c, 0x7c, 0xf2, 0x7f, 0xe8, 0x12,
-0xc1, 0x8f, 0x72, 0x51, 0xf7, 0x4a, 0x25, 0xdd,
-0x63, 0xe8, 0x2a, 0xd6, 0xff, 0xbd, 0x42, 0x49,
-0xcb, 0x2e, 0xdf, 0x7d, 0x8f, 0x8e, 0xeb, 0xfb,
-0xca, 0xbf, 0x5a, 0x60, 0x93, 0xfc, 0xa3, 0x96,
-0x58, 0xd1, 0xfd, 0x73, 0x94, 0x15, 0xbf, 0x95,
-0x31, 0x7b, 0xef, 0xff, 0xb7, 0xc7, 0xf8, 0x7f,
-0x93, 0xaa, 0xaa, 0xf4, 0x70, 0xec, 0x18, 0xc0,
-0xfe, 0x5f, 0x5b, 0x18, 0xe9, 0x93, 0xcb, 0xbf,
-0xec, 0x42, 0x67, 0xe8, 0xd5, 0x2c, 0x69, 0xa7,
-0x2a, 0x7b, 0x38, 0x57, 0x4d, 0x45, 0x0f, 0xf2,
-0xc2, 0x3f, 0xac, 0x17, 0x0f, 0x2e, 0x99, 0x3d,
-0xad, 0xf9, 0x1c, 0xa9, 0x3c, 0xff, 0x87, 0xc9,
-0x63, 0xef, 0x6a, 0x6c, 0x29, 0xa3, 0xd3, 0x1e,
-0x29, 0xff, 0xf3, 0x2a, 0xda, 0x7f, 0xaf, 0x52,
-0x4a, 0x0f, 0x32, 0x22, 0xe4, 0x42, 0x50, 0x86,
-0x51, 0x2e, 0xff, 0x6a, 0x24, 0x5b, 0xe4, 0xb2,
-0x33, 0x6c, 0x2f, 0x8c, 0x56, 0x44, 0x25, 0x7e,
-0x18, 0x24, 0x86, 0xab, 0xd7, 0xfe, 0xd7, 0x3b,
-0xff, 0xc7, 0xf5, 0xff, 0x55, 0xea, 0xc2, 0xb4,
-0xa6, 0xc8, 0xad, 0x97, 0x15, 0x08, 0xa6, 0x3c,
-0x40, 0xfb, 0xff, 0x35, 0xa5, 0x4e, 0xdd, 0x22,
-0xfa, 0x7e, 0xd3, 0xf2, 0x2f, 0x8e, 0xe7, 0xc0,
-0xe5, 0xee, 0x5b, 0x89, 0xc3, 0x4c, 0x03, 0x51,
-0x6e, 0x22, 0x97, 0x23, 0x7f, 0x3c, 0xe4, 0x3b,
-0xb6, 0x33, 0x5b, 0x9d, 0x6d, 0x05, 0xec, 0xfa,
-0xdc, 0x57, 0x9f, 0xfe, 0x7f, 0xcc, 0x91, 0xc4,
-0xab, 0xcc, 0x08, 0x63, 0xd4, 0x2a, 0x03, 0xdb,
-0x7f, 0xae, 0x88, 0xf7, 0x8a, 0xff, 0x49, 0x0b,
-0xe5, 0x26, 0x63, 0xbd, 0x8b, 0x19, 0x46, 0x03,
-0x50, 0x81, 0x09, 0x89, 0xfc, 0x1b, 0xed, 0x84,
-0x90, 0x9c, 0xe9, 0xb6, 0x22, 0xd0, 0x8d, 0xac,
-0xa2, 0x81, 0xa4, 0xb9, 0x8a, 0xf6, 0xbf, 0x67,
-0xfe, 0xbf, 0x5b, 0x5e, 0xe8, 0x5e, 0x27, 0xa9,
-0x09, 0x79, 0x79, 0xb0, 0x99, 0x74, 0x2e, 0x0f,
-0xb4, 0xff, 0x5d, 0x4b, 0xd8, 0x96, 0x7c, 0x2a,
-0x97, 0x9f, 0x6e, 0xff, 0xe3, 0x45, 0x01, 0x43,
-0xd7, 0xf7, 0xec, 0x22, 0xdc, 0x77, 0x8c, 0x01,
-0xdf, 0xf2, 0xc3, 0x75, 0x11, 0xf3, 0x69, 0x3b,
-0xf4, 0xb1, 0xff, 0x4d, 0xb6, 0xcf, 0x41, 0xba,
-0x18, 0x1b, 0xd6, 0x0d, 0x43, 0x25, 0x50, 0xdd,
-0xec, 0x69, 0x53, 0x79, 0x2d, 0xea, 0xff, 0x7c,
-0xf7, 0xff, 0x52, 0xaa, 0xa2, 0xe1, 0xc4, 0x7e,
-0x8b, 0x1e, 0xf2, 0xaf, 0xb6, 0x2b, 0x29, 0x59,
-0xc7, 0x28, 0xbb, 0xf9, 0x9c, 0xc9, 0xb1, 0xec,
-0x5d, 0xa9, 0xbe, 0xa6, 0xf6, 0x5f, 0x16, 0xff,
-0xd3, 0xfb, 0x77, 0x06, 0x75, 0x70, 0x75, 0x06,
-0xd4, 0xff, 0xaf, 0x25, 0xdc, 0x08, 0x35, 0x5e,
-0xb5, 0x9d, 0xb6, 0xff, 0xb2, 0x20, 0x13, 0x13,
-0x85, 0xb6, 0x3c, 0xd3, 0xdd, 0xcb, 0xff, 0xd4,
-0x12, 0xdb, 0xa1, 0x65, 0x42, 0x3a, 0xae, 0x98,
-0x5f, 0xff, 0x7f, 0x9d, 0xef, 0x5f, 0x8e, 0x7b,
-0x98, 0x15, 0x09, 0x21, 0xef, 0xf4, 0x68, 0xfb,
-0x5f, 0xb8, 0x7a, 0xf5, 0x7f, 0xca, 0x28, 0x89,
-0xe3, 0x92, 0xc4, 0x93, 0xa9, 0x90, 0x75, 0x60,
-0xbe, 0x8d, 0x03, 0x86, 0xc6, 0xbb, 0xfd, 0xce,
-0xba, 0x0b, 0x92, 0xab, 0x20, 0xda, 0x61, 0x9a,
-0x6b, 0x5a, 0xff, 0x97, 0xd9, 0xff, 0x72, 0x70,
-0xf9, 0x77, 0x4d, 0x3d, 0xd4, 0xff, 0xaf, 0x1d,
-0x66, 0x85, 0x2d, 0x6b, 0x94, 0x8c, 0xd0, 0xf6,
-0x5f, 0x96, 0xa1, 0xca, 0x74, 0xbb, 0xb3, 0x8a,
-0x49, 0xcf, 0xf1, 0x6b, 0x58, 0x84, 0x72, 0xbb,
-0xca, 0x1e, 0x88, 0xbc, 0x55, 0xdb, 0x6f, 0xfc,
-0xcf, 0xb5, 0x20, 0xc5, 0x6c, 0xaf, 0xf1, 0xbf,
-0x41, 0xdb, 0xff, 0xf1, 0xe5, 0xbd, 0x10, 0xe4,
-0x5a, 0x30, 0xf2, 0xdf, 0x98, 0xf0, 0x51, 0xa2,
-0x25, 0x47, 0x44, 0x19, 0xf9, 0xef, 0x19, 0xfe,
-0xdf, 0x07, 0xfb, 0x1f, 0x3c, 0xfe, 0x2f, 0xad,
-0xff, 0x07, 0xeb, 0xe0, 0x6d, 0xad, 0x23, 0x93,
-0x7f, 0x49, 0xfd, 0x3f, 0xea, 0xfd, 0x0a, 0xf2,
-0xbf, 0x37, 0xd4, 0x4c, 0x8a, 0x2b, 0x6c, 0x3e,
-0x89, 0x9b, 0xb2, 0x0c, 0x55, 0x89, 0xfc, 0x67,
-0x82, 0xdb, 0x7f, 0x71, 0x8b, 0x5b, 0x6c, 0x5f,
-0xd7, 0x96, 0xb0, 0xc3, 0x5e, 0xe3, 0x7f, 0x6a,
-0x01, 0x46, 0x37, 0x28, 0xed, 0xb1, 0xfd, 0x8f,
-0xb6, 0xff, 0x15, 0xf6, 0x27, 0x5f, 0xa3, 0xa4,
-0xf3, 0x7d, 0xdf, 0x65, 0x54, 0xa9, 0xc1, 0xef,
-0x56, 0xfd, 0x86, 0xca, 0x29, 0xb9, 0xcd, 0xa2,
-0x03, 0xc8, 0xff, 0xde, 0xf3, 0x7f, 0xfd, 0xec,
-0xbf, 0x58, 0x23, 0x94, 0xda, 0xff, 0x41, 0xe4,
-0x5f, 0xe6, 0xff, 0x83, 0xfd, 0xbf, 0x7a, 0x98,
-0x99, 0x90, 0x70, 0x77, 0x28, 0x53, 0xc4, 0xd8,
-0x7f, 0x99, 0xff, 0x1f, 0xa5, 0x16, 0xb0, 0x86,
-0xd6, 0x5b, 0x08, 0x7c, 0xb3, 0x25, 0xe9, 0x01,
-0x4d, 0x76, 0x84, 0xe1, 0xb8, 0xe8, 0xaf, 0xfa,
-0x8f, 0xff, 0x39, 0x35, 0xb5, 0x5d, 0xec, 0xab,
-0x7b, 0xe8, 0xf8, 0x7f, 0x10, 0xfb, 0xdf, 0x6b,
-0xfc, 0x4f, 0x5e, 0xfe, 0xa9, 0x6b, 0xc1, 0x16,
-0xca, 0x1d, 0xbe, 0x87, 0xa5, 0x04, 0xea, 0xa2,
-0x77, 0xfc, 0x1c, 0x99, 0xee, 0xa8, 0xab, 0x24,
-0x76, 0x69, 0xff, 0xc5, 0x56, 0xd5, 0xbd, 0xd8,
-0x7f, 0x31, 0xee, 0x20, 0x8d, 0xff, 0x95, 0x83,
-0xcb, 0xbf, 0x7b, 0xb9, 0x69, 0xf9, 0x8f, 0x43,
-0xfc, 0xef, 0xea, 0xa0, 0x46, 0x86, 0xa2, 0xa2,
-0xc4, 0xd0, 0xc9, 0x64, 0x4c, 0xc7, 0x0d, 0x99,
-0xfc, 0xd3, 0x26, 0xd7, 0xaa, 0xff, 0x17, 0x82,
-0xdb, 0xff, 0x49, 0x71, 0x83, 0x9b, 0x5c, 0x18,
-0x4f, 0xcc, 0x6b, 0xf7, 0xb7, 0xff, 0xa8, 0x5c,
-0xd4, 0xa2, 0x7d, 0x76, 0x39, 0xa8, 0xfd, 0xe7,
-0x3b, 0x13, 0xd0, 0xf6, 0x9f, 0x0b, 0xd9, 0xf5,
-0x28, 0x94, 0x6a, 0xc1, 0xcf, 0xa1, 0x97, 0x6c,
-0xcc, 0x6f, 0xc0, 0xc0, 0x74, 0x95, 0xca, 0x1f,
-0x62, 0x32, 0xaf, 0x64, 0x91, 0x59, 0x0f, 0xda,
-0xfe, 0x0f, 0x09, 0xbf, 0xee, 0xc5, 0xfe, 0x8b,
-0x2d, 0x42, 0xf2, 0xf8, 0x9f, 0xcf, 0x2c, 0x10,
-0x12, 0x42, 0x52, 0xf9, 0x17, 0x72, 0x06, 0xc1,
-0xfe, 0xef, 0x03, 0xa6, 0x96, 0x93, 0x1a, 0x1a,
-0x3a, 0x45, 0x83, 0xb6, 0xff, 0xb2, 0xf9, 0x1c,
-0x18, 0xd7, 0x2e, 0x2f, 0x7e, 0xd5, 0x1b, 0x59,
-0x4f, 0x7f, 0x6e, 0x48, 0x4b, 0xb1, 0x2b, 0x90,
-0x4f, 0xfc, 0xdf, 0x59, 0xbd, 0x53, 0xec, 0x59,
-0x0b, 0xa0, 0xe3, 0xff, 0x41, 0xec, 0x3f, 0xef,
-0x7b, 0xd2, 0xf5, 0x7f, 0x2e, 0x65, 0xbf, 0x67,
-0xa5, 0x74, 0x73, 0xb8, 0x9a, 0xec, 0xa9, 0x02,
-0x5c, 0xf9, 0x97, 0x0f, 0x18, 0x58, 0x4a, 0xe6,
-0x1b, 0x4d, 0x7a, 0x83, 0xb4, 0x54, 0xf7, 0x4e,
-0xb3, 0xa6, 0xed, 0xbf, 0x98, 0xc2, 0xb9, 0x97,
-0xf8, 0xbf, 0xd8, 0xf5, 0x56, 0xea, 0xff, 0xef,
-0xf4, 0x1d, 0xf9, 0x53, 0xdc, 0x13, 0x33, 0x9c,
-0xa3, 0xc6, 0xef, 0x06, 0xec, 0xff, 0x9e, 0x89,
-0x24, 0x24, 0xa6, 0x1f, 0xc3, 0x64, 0xa9, 0xf6,
-0xcb, 0xff, 0x61, 0x06, 0xab, 0xb5, 0x8a, 0x0f,
-0xad, 0xed, 0x8b, 0xd5, 0x39, 0xf2, 0xb0, 0xff,
-0x91, 0x37, 0xd4, 0xcf, 0xe2, 0x6c, 0x54, 0xf8,
-0xc0, 0x9e, 0x62, 0x0e, 0x27, 0xc4, 0x77, 0x05,
-0xea, 0x65, 0xff, 0x31, 0xcd, 0x48, 0x67, 0x32,
-0x94, 0x4c, 0x97, 0xe4, 0x67, 0x37, 0xa8, 0xfd,
-0xe7, 0x4f, 0x9a, 0x96, 0x7f, 0xce, 0x21, 0xea,
-0x53, 0x28, 0x9b, 0x66, 0xa1, 0x35, 0x11, 0x4d,
-0x8b, 0x93, 0xaf, 0x59, 0xb8, 0xf2, 0xbf, 0x2d,
-0x2a, 0xe5, 0x52, 0x72, 0x2e, 0xc3, 0x2b, 0x5f,
-0xda, 0x6e, 0xf7, 0x36, 0x81, 0xb4, 0xa6, 0x10,
-0x7d, 0xb8, 0xbd, 0x8c, 0xff, 0x29, 0x5e, 0xfe,
-0x86, 0x2c, 0xff, 0x4f, 0xa5, 0xd2, 0x9c, 0x53,
-0xb8, 0x18, 0xcc, 0x79, 0xe5, 0x01, 0x97, 0x88,
-0xa8, 0xf7, 0xb3, 0x5b, 0xa5, 0x62, 0xe4, 0x5f,
-0xb0, 0x13, 0xd0, 0xff, 0x7f, 0x8f, 0x34, 0x26,
-0xfd, 0x7c, 0xb2, 0x34, 0x13, 0x22, 0x62, 0xfa,
-0xff, 0x4a, 0x52, 0x72, 0x99, 0x2e, 0xec, 0xd6,
-0x9a, 0x3b, 0xd4, 0xed, 0x14, 0x04, 0xbc, 0x49,
-0xe7, 0xc3, 0xf8, 0xf4, 0x05, 0x69, 0xb3, 0x06,
-0x9c, 0x1f, 0x5a, 0xdc, 0x67, 0xfc, 0x4f, 0x76,
-0x37, 0x66, 0x64, 0x38, 0xb3, 0x18, 0x4b, 0x24,
-0x2a, 0xf9, 0x4a, 0xa5, 0x92, 0xcf, 0x7b, 0x5b,
-0x1c, 0xd4, 0xfe, 0x97, 0xb8, 0x53, 0xa0, 0xc5,
-0x2e, 0xc9, 0xaa, 0xa6, 0x00, 0x41, 0xe9, 0xa6,
-0xa1, 0xb7, 0xb5, 0x4e, 0x2d, 0x91, 0x18, 0xc2,
-0x87, 0x55, 0xa9, 0x50, 0xbe, 0x8e, 0x5b, 0x17,
-0xe2, 0x07, 0xf5, 0x2c, 0x45, 0xf3, 0x9a, 0xd9,
-0x14, 0x36, 0xc5, 0x64, 0x66, 0xf7, 0xec, 0x66,
-0x49, 0xcb, 0x7f, 0x52, 0xf0, 0x14, 0xe8, 0x5f,
-0x07, 0xb5, 0xff, 0xa2, 0x60, 0xb6, 0xa5, 0xfd,
-0x7f, 0xa8, 0x7d, 0x54, 0xa6, 0xb8, 0x53, 0x69,
-0x4e, 0x35, 0xa9, 0x6b, 0xea, 0x9e, 0x08, 0x23,
-0xff, 0x42, 0x9c, 0x88, 0x1e, 0x1d, 0x1c, 0xec,
-0xff, 0xc0, 0xe8, 0x15, 0xdf, 0xa6, 0xb2, 0x67,
-0xd9, 0x94, 0x7d, 0xa6, 0x94, 0x1d, 0x10, 0xab,
-0x99, 0x74, 0xe9, 0x71, 0x44, 0x8b, 0x8a, 0x76,
-0x4b, 0x1c, 0x7c, 0x4a, 0x4a, 0xc6, 0xea, 0xf2,
-0xc3, 0xe3, 0xe6, 0x0e, 0x60, 0xb3, 0x04, 0xfb,
-0xda, 0x7f, 0x09, 0xaa, 0x5c, 0xe7, 0xf8, 0xda,
-0x7f, 0xba, 0x06, 0xc3, 0x35, 0x41, 0xd0, 0xee,
-0x32, 0x27, 0xe4, 0xbb, 0x70, 0x4a, 0x29, 0xf5,
-0xea, 0x58, 0xbe, 0x26, 0x37, 0x18, 0x52, 0x4e,
-0xdb, 0x91, 0xae, 0xca, 0x84, 0x59, 0x7a, 0x0e,
-0x1e, 0xc2, 0x6c, 0x50, 0xb8, 0x60, 0x74, 0x75,
-0x2b, 0x90, 0xfd, 0xa7, 0x2f, 0x8e, 0xb0, 0xdf,
-0x35, 0xea, 0x47, 0x2f, 0x3a, 0xb0, 0x22, 0xdf,
-0x94, 0x83, 0x57, 0x88, 0xbc, 0xc1, 0x4d, 0x19,
-0xf9, 0x17, 0x6a, 0x9e, 0x74, 0x46, 0x11, 0xd4,
-0xff, 0x07, 0x44, 0xed, 0xf8, 0xd7, 0xc7, 0xd2,
-0xa3, 0xac, 0x7a, 0xee, 0xd3, 0xff, 0x97, 0xb9,
-0x4b, 0x4e, 0x55, 0x99, 0xba, 0xdb, 0x92, 0x94,
-0x01, 0xaa, 0x86, 0xe8, 0x1b, 0xb6, 0x62, 0xa7,
-0xf2, 0xe0, 0xe6, 0x16, 0xe8, 0x5d, 0xff, 0x97,
-0xb2, 0x19, 0x95, 0x96, 0x96, 0x20, 0xf6, 0x9f,
-0x3f, 0x05, 0xa6, 0x72, 0xce, 0x9a, 0x5d, 0x73,
-0x70, 0xf9, 0xa7, 0x6a, 0x13, 0x4e, 0x64, 0x8e,
-0x1b, 0xc8, 0x58, 0xf3, 0x5b, 0x95, 0xbd, 0xf4,
-0xbd, 0x76, 0xc7, 0xf4, 0xab, 0xe0, 0x43, 0xae,
-0x9b, 0xf4, 0xee, 0x06, 0x8d, 0xff, 0x33, 0x83,
-0xbe, 0x12, 0xe8, 0x6e, 0xa4, 0x9e, 0xd4, 0x52,
-0x29, 0x61, 0x51, 0x31, 0x88, 0x44, 0x9d, 0xb1,
-0x17, 0x6d, 0x61, 0x4e, 0x8f, 0x1a, 0xf3, 0xd8,
-0x3e, 0x08, 0x4a, 0x09, 0x81, 0xfc, 0x0f, 0x86,
-0x39, 0xe9, 0x1f, 0xa0, 0x4b, 0x69, 0xdc, 0xc2,
-0xec, 0xf8, 0x1f, 0x42, 0x77, 0x3e, 0x66, 0xd8,
-0x20, 0xa7, 0xa9, 0x9c, 0xb2, 0x4c, 0x62, 0xe6,
-0x26, 0x5d, 0xae, 0x24, 0xe1, 0x7f, 0x8b, 0x26,
-0x3b, 0x66, 0x27, 0xdb, 0x9f, 0x6f, 0x17, 0xf6,
-0xdf, 0xf4, 0x2a, 0x3b, 0x74, 0x3c, 0x2f, 0x48,
-0xfd, 0x5f, 0x19, 0x63, 0x8a, 0x38, 0x3b, 0xea,
-0x06, 0x1b, 0x00, 0xa4, 0x63, 0x5f, 0x82, 0x60,
-0xc8, 0xa1, 0xb4, 0x89, 0xa3, 0xe4, 0x46, 0x18,
-0xb9, 0xf6, 0xef, 0x2d, 0xcf, 0x1e, 0x49, 0xbe,
-0xc7, 0x4e, 0xe8, 0xf8, 0x1f, 0x5f, 0x67, 0x61,
-0x63, 0xf3, 0xb4, 0x3e, 0x0b, 0xe4, 0xff, 0x0b,
-0x25, 0x82, 0x76, 0x8f, 0xbc, 0xd6, 0x41, 0x4a,
-0x98, 0x25, 0x1a, 0x9b, 0x8a, 0x19, 0x78, 0xe1,
-0x09, 0x76, 0x3a, 0x17, 0x3e, 0x6c, 0x49, 0xab,
-0x99, 0x80, 0x97, 0x1a, 0xb0, 0xe8, 0x31, 0x09,
-0x63, 0xba, 0x22, 0x28, 0x67, 0x76, 0xfc, 0xaf,
-0x28, 0x57, 0x78, 0xd8, 0x91, 0xf5, 0x1c, 0x71,
-0xa6, 0xed, 0xa0, 0x30, 0xe4, 0x0d, 0x5d, 0x6c,
-0xa5, 0xe1, 0x3f, 0x6b, 0x29, 0x36, 0x06, 0xde,
-0xa5, 0xc5, 0xa0, 0x47, 0xfb, 0xbf, 0x1f, 0x94,
-0x46, 0x4a, 0x52, 0xd1, 0x84, 0x40, 0xf6, 0x9f,
-0x35, 0xf2, 0x06, 0xe3, 0x3a, 0xb1, 0xba, 0x81,
-0xf6, 0xc8, 0x83, 0x0d, 0x7c, 0x42, 0xf7, 0xff,
-0xd7, 0xec, 0xef, 0xe8, 0xaa, 0x2d, 0x3d, 0x59,
-0xa1, 0x00, 0x73, 0x6b, 0x7a, 0x28, 0x0a, 0xd6,
-0xfe, 0xf3, 0x12, 0xcb, 0x74, 0xe0, 0xd4, 0xa8,
-0x1f, 0x82, 0xc9, 0x3f, 0x97, 0x01, 0xb0, 0x49,
-0x4f, 0x6b, 0xe0, 0x65, 0x25, 0xd0, 0x75, 0x1a,
-0x31, 0xa7, 0x93, 0x72, 0x82, 0xbc, 0x8c, 0x0a,
-0x56, 0xfe, 0x79, 0xff, 0x86, 0x2e, 0x1e, 0xb2,
-0x66, 0x29, 0xc0, 0x0f, 0xff, 0x29, 0xa3, 0xe2,
-0x73, 0xed, 0x3e, 0x51, 0x26, 0x64, 0x66, 0xd8,
-0x9b, 0x97, 0x65, 0xca, 0x82, 0x1b, 0x38, 0xa4,
-0x42, 0xca, 0x51, 0x5e, 0x0e, 0x28, 0xcf, 0x6d,
-0xac, 0xec, 0x7f, 0x98, 0x26, 0x5b, 0x0b, 0xa6,
-0x5b, 0x01, 0xfd, 0xe6, 0xff, 0x44, 0xe8, 0x9a,
-0x7c, 0x6b, 0x54, 0x37, 0x5b, 0x5a, 0xce, 0x03,
-0xd9, 0x7f, 0x76, 0xd0, 0x43, 0xae, 0x71, 0x93,
-0xc9, 0x00, 0xa2, 0x9b, 0x06, 0xd8, 0x42, 0xa9,
-0x4a, 0xc6, 0x5c, 0xe6, 0x2e, 0x86, 0xdb, 0xc6,
-0xcd, 0x14, 0x7c, 0x5f, 0x0f, 0x69, 0x8a, 0x9f,
-0xcb, 0x4d, 0x68, 0x26, 0xf1, 0x60, 0xec, 0x3f,
-0x37, 0x51, 0x13, 0x23, 0x49, 0x4c, 0xa5, 0x25,
-0x90, 0xff, 0xcf, 0x87, 0x47, 0x98, 0xe0, 0x00,
-0xa5, 0x35, 0x28, 0x7b, 0x1d, 0xe7, 0xfb, 0x2a,
-0x53, 0x29, 0x64, 0x94, 0x9f, 0xcf, 0x4d, 0xe7,
-0xc6, 0x7a, 0x5a, 0x4c, 0x57, 0x8f, 0xa0, 0x23,
-0x8a, 0x00, 0x53, 0x53, 0x4c, 0xac, 0x95, 0x21,
-0x5d, 0x6d, 0xcb, 0x6a, 0xe3, 0xdc, 0xfc, 0x1f,
-0xec, 0xec, 0xa0, 0xec, 0xa8, 0x9d, 0x9e, 0xc9,
-0xa3, 0x0d, 0x21, 0xa7, 0x31, 0xe8, 0x69, 0xa0,
-0x7a, 0x0e, 0x0e, 0xa4, 0xb3, 0x13, 0xe4, 0xd0,
-0x5d, 0x81, 0xfc, 0xed, 0x7f, 0x21, 0x5d, 0x95,
-0xd9, 0x5d, 0xdd, 0xa7, 0x9b, 0x4d, 0x30, 0xfb,
-0x4f, 0xd7, 0x8a, 0xf9, 0xcb, 0x97, 0xa6, 0x0a,
-0xb3, 0x49, 0x1f, 0x31, 0xdb, 0xce, 0x66, 0xa4,
-0x8a, 0x05, 0xc9, 0xd5, 0xa5, 0xbd, 0x1c, 0x57,
-0x61, 0x30, 0x3d, 0xaa, 0x7a, 0x0d, 0x0a, 0xd8,
-0x64, 0x35, 0xb9, 0xd0, 0x4c, 0xe2, 0xc2, 0x69,
-0xfc, 0x1c, 0xbd, 0x20, 0x23, 0xb0, 0x4c, 0x3a,
-0x4f, 0xa0, 0xf8, 0x1f, 0x37, 0xf0, 0x28, 0x3b,
-0x24, 0x39, 0x75, 0xdd, 0x68, 0x69, 0x2e, 0xb2,
-0x07, 0xaa, 0xd2, 0x83, 0x03, 0x99, 0xd2, 0x35,
-0x10, 0xa5, 0x18, 0x7d, 0x25, 0x98, 0x26, 0x92,
-0x5e, 0x03, 0xa7, 0x01, 0x1c, 0xf2, 0xb9, 0xa8,
-0x4b, 0xa9, 0xc4, 0xba, 0xbc, 0xa4, 0xf1, 0xf3,
-0x7f, 0xc4, 0xb3, 0xde, 0x72, 0x0d, 0xb6, 0xbf,
-0xbe, 0x77, 0x1f, 0xa8, 0xee, 0xb6, 0xdc, 0xf8,
-0xff, 0x6a, 0xc5, 0x13, 0x2d, 0xbe, 0x65, 0x8d,
-0xa3, 0xcd, 0x06, 0x29, 0x3d, 0xb7, 0xb1, 0x47,
-0xfd, 0x5f, 0x2b, 0x29, 0xc9, 0x84, 0x60, 0x08,
-0x19, 0x97, 0x87, 0x4e, 0x28, 0x0e, 0x66, 0xff,
-0x95, 0xb8, 0xd7, 0x22, 0x3a, 0xcc, 0xb7, 0x9b,
-0xa4, 0x5c, 0x6b, 0xaa, 0x32, 0x63, 0xa1, 0xb2,
-0x85, 0xd2, 0xe8, 0xe2, 0x11, 0x09, 0xf8, 0xe3,
-0x52, 0x47, 0xa9, 0x9b, 0xe1, 0x46, 0xd2, 0xe9,
-0xc6, 0x72, 0x25, 0x3e, 0xd3, 0xe3, 0x0a, 0xad,
-0xb1, 0xf7, 0x72, 0x82, 0x4b, 0x39, 0x74, 0xdf,
-0xb1, 0xf6, 0x1f, 0x5d, 0x4a, 0x4f, 0xca, 0x46,
-0x98, 0x64, 0x2b, 0x46, 0x69, 0x05, 0xf3, 0xff,
-0xf1, 0x58, 0x2b, 0xde, 0x6f, 0xac, 0x3f, 0x48,
-0xdf, 0x1b, 0x3a, 0x2e, 0xc0, 0x8e, 0x82, 0x44,
-0x0f, 0xfc, 0x48, 0x65, 0x27, 0xf2, 0xd3, 0xb9,
-0xc6, 0x29, 0x05, 0xc0, 0x0e, 0x16, 0xdb, 0x67,
-0xba, 0x18, 0x80, 0x82, 0xad, 0xb0, 0x3b, 0x77,
-0x70, 0x4e, 0xf3, 0xb5, 0x1d, 0xc2, 0xfc, 0x9f,
-0xa5, 0xaa, 0x3d, 0x35, 0x95, 0x31, 0xca, 0x0a,
-0x68, 0x5c, 0xf3, 0xd6, 0x5a, 0xa5, 0x1b, 0xd0,
-0x27, 0x3d, 0x93, 0x3c, 0x42, 0x67, 0xf7, 0x7b,
-0x7e, 0x9b, 0xa1, 0x65, 0x6c, 0xe8, 0x37, 0xdc,
-0x1c, 0x82, 0x6e, 0x05, 0xb7, 0x47, 0xfd, 0x9f,
-0x54, 0x66, 0xa3, 0x43, 0x0d, 0x36, 0x2c, 0x47,
-0x8b, 0x3f, 0x93, 0x2c, 0x12, 0xd0, 0xfe, 0x2b,
-0xf1, 0x84, 0x69, 0x1f, 0xa7, 0xd8, 0x70, 0x12,
-0xb5, 0x87, 0x1a, 0x32, 0x13, 0x8c, 0x34, 0xb2,
-0x71, 0x0f, 0x62, 0xd3, 0xd3, 0xdc, 0x65, 0x36,
-0x62, 0x74, 0x31, 0xf6, 0x4a, 0x31, 0x33, 0x12,
-0x53, 0x88, 0xf1, 0xd6, 0x8d, 0x46, 0x82, 0xae,
-0x08, 0x71, 0x86, 0x3d, 0xd9, 0xd2, 0x5d, 0x25,
-0x12, 0xc9, 0xce, 0xc9, 0x5a, 0xdf, 0xed, 0x8d,
-0xda, 0xc7, 0xac, 0x36, 0xd8, 0x5c, 0xcb, 0x65,
-0x7a, 0x5f, 0x01, 0xfd, 0x7f, 0x74, 0x75, 0x5a,
-0xf6, 0x0d, 0x1e, 0x61, 0x2f, 0x01, 0x93, 0x6a,
-0x10, 0x79, 0x86, 0xde, 0x9c, 0xa7, 0xa9, 0x8c,
-0x1a, 0xb5, 0x0e, 0x1d, 0xc9, 0x13, 0xa6, 0x73,
-0x2e, 0x39, 0x0a, 0x54, 0xcd, 0x30, 0x77, 0x41,
-0xa8, 0x4f, 0x00, 0xfe, 0x88, 0x7d, 0xf3, 0x4a,
-0xa1, 0x58, 0x8f, 0x6a, 0xb8, 0x74, 0xfe, 0xcf,
-0x5c, 0x2c, 0x53, 0x18, 0xad, 0xf0, 0x9d, 0x06,
-0xe9, 0x3e, 0x28, 0x6c, 0x6c, 0x3a, 0xda, 0x9a,
-0x31, 0xf1, 0x20, 0x1c, 0x91, 0x1a, 0x6d, 0xda,
-0xa8, 0x01, 0xfe, 0x1a, 0x38, 0x27, 0xce, 0x7a,
-0xe2, 0x97, 0x92, 0xfb, 0x9e, 0x5e, 0xdc, 0x95,
-0xf4, 0x1e, 0xf6, 0xdf, 0x0e, 0x66, 0xc5, 0x8b,
-0xad, 0x82, 0x6e, 0x0d, 0xb1, 0xa1, 0x17, 0xf2,
-0x4c, 0x69, 0x61, 0x7a, 0xca, 0x04, 0xb4, 0xff,
-0xf8, 0x14, 0x26, 0x47, 0x0b, 0x99, 0xd8, 0x84,
-0xcc, 0x79, 0x8a, 0x17, 0x13, 0x99, 0x42, 0xa7,
-0xc2, 0x56, 0x57, 0xb8, 0x8c, 0x75, 0xbb, 0x97,
-0x44, 0x29, 0x35, 0x99, 0x89, 0x18, 0xc6, 0x14,
-0x3a, 0xae, 0x91, 0x46, 0x8d, 0x51, 0xc5, 0xf4,
-0x78, 0x21, 0xcc, 0xde, 0x93, 0xad, 0x06, 0x39,
-0x13, 0xc3, 0x6c, 0x64, 0x26, 0x53, 0xf1, 0x12,
-0xed, 0xbf, 0xb4, 0x79, 0x19, 0x19, 0xcb, 0xb5,
-0x32, 0x85, 0x42, 0xa6, 0x36, 0x59, 0x4c, 0x53,
-0xc2, 0xc4, 0xdb, 0x7f, 0x7c, 0xd3, 0x2b, 0x9d,
-0x82, 0x16, 0xe3, 0xd2, 0xbf, 0x59, 0x49, 0x0a,
-0xe8, 0xff, 0x93, 0x63, 0x3c, 0x50, 0xd3, 0x84,
-0x4b, 0xc0, 0x56, 0xef, 0x9a, 0xcc, 0x00, 0x33,
-0x63, 0x93, 0x05, 0x93, 0xdc, 0x9d, 0x0e, 0xd3,
-0x61, 0x6b, 0x92, 0x8a, 0x3f, 0x49, 0xa6, 0x73,
-0x4f, 0x4f, 0xa0, 0x82, 0x97, 0x69, 0x85, 0xd8,
-0xbb, 0xc3, 0x77, 0xd0, 0x04, 0x7a, 0xc0, 0x9b,
-0x82, 0xd2, 0x44, 0xa6, 0xf7, 0xe5, 0xf3, 0x99,
-0xff, 0x5b, 0xd2, 0x69, 0x48, 0xa3, 0x57, 0x6b,
-0x3f, 0xc3, 0xfe, 0x98, 0x2c, 0x4e, 0x14, 0xb9,
-0xd1, 0x6c, 0xa8, 0x6a, 0xe0, 0x76, 0x80, 0x1e,
-0x03, 0x54, 0xa4, 0x8f, 0x2e, 0x67, 0xac, 0xfc,
-0x7b, 0x63, 0x62, 0x96, 0xd2, 0xd1, 0xd0, 0xc4,
-0x44, 0x31, 0xca, 0xe5, 0xdc, 0xb3, 0x53, 0x70,
-0x04, 0xb5, 0xff, 0x3e, 0xa7, 0xdc, 0xe3, 0x37,
-0x6e, 0x8e, 0x1b, 0xdd, 0xbd, 0x1c, 0xa5, 0x78,
-0x32, 0x84, 0xaf, 0x05, 0x3f, 0xad, 0x37, 0x55,
-0xd1, 0x37, 0x39, 0x39, 0x8a, 0x47, 0x8b, 0x13,
-0x13, 0x21, 0x67, 0xce, 0x70, 0x26, 0x7c, 0x2f,
-0x9b, 0xff, 0xdb, 0x39, 0x16, 0x2f, 0xd1, 0x51,
-0x1e, 0xf1, 0x15, 0xcf, 0x27, 0xb4, 0x49, 0x6f,
-0x3b, 0xa8, 0xff, 0xef, 0xb7, 0x35, 0xae, 0xcd,
-0x9e, 0x3b, 0xab, 0x78, 0x37, 0x84, 0xae, 0x02,
-0x9b, 0x83, 0xfa, 0x3d, 0xda, 0xd7, 0x91, 0xc8,
-0xbf, 0x7c, 0x3f, 0xb2, 0x2e, 0xe2, 0x80, 0x1c,
-0x7e, 0x88, 0x9c, 0xd4, 0x6a, 0xbf, 0xd1, 0x58,
-0x29, 0xfb, 0x5f, 0xea, 0x39, 0xbc, 0x46, 0x95,
-0xcb, 0x1b, 0xea, 0xd7, 0xdd, 0x8d, 0x6e, 0xb0,
-0x92, 0x98, 0x14, 0x11, 0xa9, 0xfd, 0xe7, 0xe2,
-0xff, 0x3e, 0xda, 0xca, 0x83, 0x35, 0x16, 0x01,
-0xec, 0x7f, 0xc9, 0xff, 0xd0, 0xd2, 0x3d, 0x7a,
-0xf5, 0x73, 0x75, 0xd2, 0x48, 0xbf, 0x0e, 0x70,
-0x4c, 0x14, 0x2d, 0xdb, 0xeb, 0xda, 0x31, 0x2d,
-0x0e, 0xfe, 0x8d, 0x39, 0x0a, 0xd5, 0x98, 0x47,
-0xdb, 0xff, 0x1e, 0x9b, 0xe6, 0xa6, 0x27, 0x0a,
-0x22, 0xff, 0xbd, 0x0e, 0x94, 0x9f, 0xe6, 0x6b,
-0xad, 0xdf, 0x4d, 0x66, 0x5c, 0x1b, 0x26, 0x2f,
-0xa1, 0xd7, 0x6e, 0x82, 0xcf, 0x30, 0x01, 0x30,
-0x05, 0x1e, 0x71, 0xa0, 0xff, 0xb5, 0xa3, 0x24,
-0x2a, 0xdd, 0xea, 0x71, 0x07, 0xf9, 0xb1, 0xfa,
-0xb8, 0xd1, 0xbc, 0xc5, 0x9b, 0x4d, 0x57, 0x90,
-0x83, 0xf4, 0x18, 0x0c, 0xe4, 0xff, 0x4b, 0x6a,
-0x2b, 0x0c, 0xac, 0x93, 0x12, 0xc4, 0xfe, 0xa7,
-0x13, 0xbe, 0xc7, 0x96, 0xe7, 0x9a, 0x28, 0x28,
-0xf8, 0x42, 0x19, 0xe9, 0x77, 0x82, 0xcc, 0x2c,
-0x89, 0x46, 0xaf, 0xe1, 0x42, 0xd8, 0xc0, 0x62,
-0x5d, 0x16, 0xcf, 0xb1, 0x71, 0x75, 0x10, 0xad,
-0x24, 0xaa, 0x72, 0xb3, 0x8a, 0xe1, 0xe2, 0xf2,
-0x01, 0xea, 0xff, 0xa5, 0x8a, 0xff, 0x79, 0x09,
-0x29, 0x7b, 0xbd, 0xd5, 0x9a, 0xc2, 0x27, 0x06,
-0xd0, 0xf6, 0x7f, 0xd2, 0x3f, 0x5f, 0x55, 0x3a,
-0x42, 0x0c, 0xe0, 0x03, 0x33, 0xc8, 0xbf, 0xcf,
-0xf0, 0x7a, 0x2c, 0x94, 0xfc, 0x8f, 0xad, 0x0f,
-0xf9, 0xde, 0xc1, 0x6e, 0x9b, 0x5f, 0xd1, 0x98,
-0xeb, 0xe9, 0x30, 0x33, 0x39, 0xfd, 0x8d, 0x7e,
-0xce, 0x82, 0xe2, 0x27, 0xff, 0x9c, 0xfd, 0x5f,
-0xf6, 0x5f, 0x9f, 0xd0, 0x62, 0x9d, 0x94, 0x00,
-0xf6, 0x7f, 0x2c, 0xd2, 0xf2, 0x39, 0xb8, 0xa8,
-0x3e, 0x55, 0xf0, 0x13, 0x26, 0x3e, 0x2b, 0xae,
-0x9f, 0x82, 0x0b, 0xb1, 0x77, 0x62, 0x3d, 0xea,
-0xbf, 0x28, 0xd7, 0x68, 0x5a, 0x2e, 0xfa, 0x2e,
-0xe9, 0x7a, 0x0a, 0xcc, 0xf8, 0x1f, 0x1d, 0xbf,
-0x43, 0xe1, 0x33, 0x88, 0x02, 0xd8, 0xff, 0x52,
-0x3b, 0xe6, 0x7b, 0xe7, 0xc4, 0x79, 0x5f, 0x9b,
-0x7e, 0x57, 0xd2, 0xde, 0x07, 0x57, 0x65, 0xa2,
-0xbc, 0xcd, 0x8e, 0xe6, 0xeb, 0x7a, 0x16, 0xa1,
-0xf6, 0x3f, 0x00, 0x4c, 0x13, 0x55, 0xaf, 0x94,
-0x31, 0x17, 0xda, 0xfe, 0xeb, 0x86, 0x5f, 0xf2,
-0x40, 0x52, 0x13, 0xd7, 0x34, 0xf2, 0xfe, 0xb7,
-0x3b, 0xde, 0x62, 0x4a, 0xc7, 0x76, 0x00, 0xf9,
-0x57, 0xdc, 0xea, 0x6c, 0x0f, 0xfb, 0x3f, 0xe4,
-0xbb, 0x36, 0xa6, 0xc4, 0xa7, 0x9e, 0x05, 0xb0,
-0xff, 0x5d, 0x9d, 0x6e, 0xb2, 0xa4, 0x48, 0xaf,
-0xa1, 0x05, 0x57, 0xe5, 0xe5, 0x32, 0xc7, 0x17,
-0xca, 0x3e, 0x01, 0x8e, 0x14, 0x9f, 0xc1, 0xda,
-0x88, 0xfa, 0x2e, 0xcb, 0x77, 0xe0, 0xad, 0xe7,
-0xfc, 0x2e, 0x9e, 0x2b, 0xb4, 0xb4, 0xfd, 0xef,
-0x34, 0x47, 0xe5, 0xc7, 0x2c, 0x8c, 0xb4, 0x14,
-0x40, 0xfe, 0xe3, 0x6d, 0xd5, 0xcf, 0x3d, 0x2a,
-0x4a, 0x6c, 0x8b, 0x5a, 0xf3, 0xaf, 0x41, 0x96,
-0xe6, 0xb8, 0x15, 0x68, 0xfb, 0x3f, 0x3a, 0xb5,
-0xea, 0x53, 0x81, 0xfa, 0x2c, 0xe4, 0xfe, 0x0f,
-0x02, 0x33, 0xc9, 0x5f, 0xcf, 0x3e, 0x63, 0x0e,
-0x8c, 0xfc, 0x4f, 0x19, 0x72, 0x87, 0x2f, 0x24,
-0xd5, 0x24, 0x6a, 0xd6, 0xcf, 0x3c, 0x26, 0x3b,
-0xac, 0x1d, 0x1e, 0xcc, 0xff, 0x9f, 0x3a, 0x43,
-0x7d, 0xcd, 0xca, 0x7f, 0xb6, 0x57, 0x88, 0x22,
-0xdd, 0xe2, 0x4f, 0x38, 0x88, 0xfd, 0xd7, 0xa7,
-0xd4, 0x84, 0x64, 0xab, 0xe9, 0x55, 0xb2, 0xa4,
-0xa4, 0x41, 0x10, 0x95, 0x7d, 0xa1, 0x5a, 0x15,
-0x89, 0xf6, 0x3a, 0xb3, 0x09, 0xb1, 0x01, 0xa6,
-0xec, 0x2b, 0xd5, 0x42, 0xb6, 0x9b, 0xb1, 0xe5,
-0x73, 0x99, 0xdd, 0xa6, 0x0e, 0x2e, 0xfd, 0x41,
-0x93, 0x1d, 0x4c, 0x3a, 0xc6, 0xe7, 0x7e, 0x06,
-0xf1, 0xff, 0xdb, 0x53, 0xea, 0xa2, 0x74, 0xef,
-0x13, 0xf2, 0x9a, 0xe5, 0x9a, 0x5f, 0x8d, 0x29,
-0xdd, 0xda, 0xe4, 0x16, 0xa5, 0xe5, 0xbf, 0x83,
-0xd6, 0x94, 0x1d, 0xb4, 0x12, 0x0d, 0x62, 0xc2,
-0x00, 0x17, 0xc6, 0x7e, 0xf7, 0xea, 0x32, 0xe2,
-0x42, 0xd5, 0xa8, 0x71, 0x5f, 0x9e, 0x66, 0x46,
-0xbc, 0x0f, 0x92, 0x5e, 0x03, 0x36, 0x91, 0x39,
-0x99, 0x60, 0xa7, 0xab, 0x7c, 0x79, 0x0f, 0x12,
-0xff, 0x0b, 0x54, 0xff, 0x6f, 0x36, 0x96, 0xf9,
-0x66, 0x49, 0x77, 0xfd, 0xa2, 0xd8, 0x55, 0xc0,
-0xd7, 0xfe, 0x53, 0x39, 0xca, 0x75, 0xb4, 0xd5,
-0xc2, 0x19, 0x7e, 0xa3, 0x29, 0x67, 0x63, 0xe2,
-0x29, 0x96, 0xe6, 0x24, 0x65, 0xbf, 0x3e, 0x7a,
-0xc1, 0x6f, 0xdc, 0x8f, 0x68, 0x4c, 0xe6, 0xc2,
-0x1a, 0x8b, 0x3e, 0x27, 0x22, 0xc9, 0x76, 0x6f,
-0x54, 0xa5, 0x6a, 0xcf, 0xd5, 0x14, 0xfc, 0xfc,
-0xdf, 0xe5, 0xaa, 0x70, 0xbd, 0x25, 0xdd, 0x0c,
-0x03, 0xb4, 0xff, 0x91, 0x9c, 0x8c, 0x6d, 0x71,
-0x64, 0xb3, 0xf8, 0xa4, 0x5f, 0x89, 0xa8, 0x0f,
-0x3d, 0xc3, 0x2f, 0x8c, 0x97, 0xcf, 0x89, 0x72,
-0xcc, 0xc9, 0xff, 0x94, 0x2e, 0x1e, 0x74, 0x29,
-0x07, 0x3d, 0x7f, 0x06, 0x83, 0xb1, 0xff, 0x81,
-0xe4, 0xbf, 0x93, 0x76, 0xb1, 0x52, 0xf9, 0x75,
-0x76, 0xd8, 0xa0, 0x52, 0x72, 0xb2, 0x21, 0xf6,
-0x1a, 0x70, 0x50, 0xb7, 0xe9, 0xb1, 0x5d, 0xc8,
-0xad, 0x8e, 0x0e, 0x89, 0x2e, 0xdb, 0x7a, 0x32,
-0xdd, 0x17, 0x2a, 0xc2, 0x30, 0x41, 0x7d, 0x2b,
-0x24, 0x7f, 0x18, 0x4b, 0xad, 0x62, 0x57, 0x48,
-0x1e, 0x48, 0x9e, 0xd3, 0x24, 0xde, 0x8e, 0x9f,
-0xfd, 0x6f, 0x74, 0xdd, 0x1d, 0xa4, 0x48, 0x36,
-0xe1, 0x4e, 0xed, 0x29, 0x7a, 0x93, 0x9f, 0x6d,
-0x79, 0x03, 0x17, 0xa8, 0x6b, 0x4c, 0x2b, 0x7a,
-0x29, 0xd4, 0x91, 0xbb, 0x55, 0x6a, 0xa4, 0x96,
-0x8b, 0x0a, 0xba, 0x22, 0x1d, 0xaa, 0xf9, 0x8c,
-0x81, 0x30, 0x65, 0x2e, 0x16, 0xd3, 0x42, 0xaa,
-0x4d, 0xb7, 0xd8, 0x92, 0x68, 0x0b, 0xb5, 0x91,
-0xff, 0xac, 0x70, 0xca, 0xdd, 0x39, 0x67, 0x49,
-0x21, 0xfd, 0x51, 0x6d, 0xcf, 0x31, 0x1a, 0x23,
-0xda, 0x92, 0x1c, 0x44, 0x86, 0xba, 0xf8, 0x74,
-0xd2, 0x34, 0x75, 0x71, 0xac, 0x19, 0x9a, 0xd4,
-0x0c, 0x3b, 0x49, 0x51, 0x7a, 0x62, 0xd8, 0xbf,
-0x44, 0x4c, 0x45, 0x5a, 0xdc, 0x55, 0x28, 0x25,
-0xab, 0xb2, 0xdc, 0x68, 0x33, 0xea, 0xed, 0x9e,
-0x24, 0x8a, 0xaa, 0x4b, 0x73, 0x4c, 0x25, 0x20,
-0x1e, 0xea, 0xdb, 0x78, 0x05, 0x70, 0xf4, 0x48,
-0x51, 0xf5, 0xc1, 0x28, 0x47, 0x30, 0xf8, 0x55,
-0xb7, 0xef, 0xaa, 0xa9, 0xe5, 0x2f, 0x25, 0xc7,
-0xe2, 0xa5, 0x74, 0x3a, 0x59, 0xac, 0x66, 0xfa,
-0x35, 0x21, 0xd4, 0xb5, 0xa1, 0x62, 0xb4, 0x9b,
-0x8e, 0x3f, 0x8b, 0x16, 0x4f, 0xcd, 0x25, 0xda,
-0xb2, 0xc1, 0x2c, 0x54, 0x6b, 0x27, 0xbd, 0x28,
-0x47, 0xbc, 0x9b, 0xad, 0x97, 0xad, 0x03, 0xc2,
-0x7f, 0xb2, 0x92, 0xa6, 0xea, 0x6b, 0x89, 0xea,
-0x25, 0xbc, 0xd3, 0x52, 0x1c, 0xef, 0x35, 0xd7,
-0xd2, 0xe4, 0x47, 0xe9, 0x67, 0xff, 0xa9, 0xe3,
-0x71, 0x56, 0x34, 0xb4, 0x7c, 0xe8, 0x7b, 0xe9,
-0x78, 0x1c, 0x6d, 0xae, 0xca, 0x0d, 0xc5, 0xd5,
-0x6c, 0x20, 0xc9, 0xee, 0x92, 0xdf, 0x8a, 0xf9,
-0x42, 0x8f, 0x78, 0x54, 0xd3, 0x6c, 0x2f, 0xe6,
-0x27, 0x52, 0xdd, 0xb1, 0x34, 0x3e, 0xae, 0x6e,
-0xaa, 0x98, 0xef, 0x34, 0x7a, 0x15, 0x61, 0x35,
-0xb2, 0x58, 0x2d, 0x26, 0xf1, 0x69, 0xa0, 0xa5,
-0xa3, 0xa9, 0xcb, 0x95, 0xd1, 0xed, 0xba, 0xdf,
-0xf2, 0xe6, 0xf0, 0x0a, 0xda, 0x32, 0x3a, 0x08,
-0x7c, 0xc6, 0xd1, 0xd0, 0x5c, 0x42, 0xf3, 0x16,
-0x95, 0x8c, 0xff, 0xdf, 0x8c, 0x74, 0xce, 0xa5,
-0x92, 0xf8, 0x98, 0xbb, 0x21, 0xfe, 0x7c, 0x9c,
-0x33, 0x2e, 0x3b, 0x37, 0x3e, 0x52, 0xa6, 0x17,
-0x50, 0xa9, 0x12, 0x61, 0xef, 0x42, 0x6d, 0xd4,
-0xe6, 0xc8, 0xd6, 0xe2, 0xdd, 0xe8, 0xc4, 0x56,
-0xcf, 0x73, 0x42, 0xec, 0xe0, 0x43, 0x4d, 0x92,
-0xb3, 0xfa, 0x5e, 0x6a, 0xa2, 0xa5, 0xf9, 0xf8,
-0x0a, 0xde, 0x3d, 0x28, 0xdb, 0xd7, 0xb4, 0xa9,
-0x77, 0xaa, 0x67, 0xc8, 0x6e, 0xc6, 0x92, 0xc5,
-0xa1, 0x25, 0x88, 0xfc, 0x0d, 0x0c, 0x13, 0xff,
-0xdf, 0x43, 0xe2, 0x94, 0x6a, 0x96, 0x23, 0x8d,
-0x75, 0xdd, 0xd8, 0x0c, 0xb4, 0x74, 0xd3, 0xd0,
-0x23, 0x8d, 0x06, 0x2a, 0x45, 0xea, 0x35, 0x54,
-0xd8, 0x2a, 0xda, 0xe9, 0x7a, 0x03, 0x95, 0x51,
-0xd3, 0x7f, 0xa7, 0x7e, 0xf6, 0xdf, 0x67, 0x8b,
-0x26, 0x3a, 0xe7, 0x88, 0x7c, 0x73, 0x46, 0x3d,
-0x42, 0x4e, 0xb0, 0xff, 0x71, 0x35, 0xc9, 0xb5,
-0xc3, 0x0b, 0x1b, 0x41, 0xae, 0x86, 0xba, 0x43,
-0xae, 0x5d, 0xa4, 0x1e, 0x60, 0xdb, 0xe8, 0x20,
-0xf0, 0xb2, 0x7a, 0x9d, 0xdb, 0x32, 0x6d, 0xff,
-0xa9, 0xfe, 0x5b, 0x9b, 0x78, 0xcb, 0xbd, 0x2e,
-0xcf, 0x20, 0x34, 0x0d, 0xb3, 0x8c, 0xf7, 0x1d,
-0xe8, 0xa4, 0x48, 0x89, 0xc0, 0x37, 0xc7, 0x54,
-0x7b, 0x78, 0x0a, 0x52, 0xec, 0x92, 0x27, 0x19,
-0x0f, 0x0d, 0xe8, 0x0f, 0x6d, 0xf0, 0xd8, 0x9c,
-0x93, 0x9b, 0x12, 0x3f, 0xfb, 0xff, 0x26, 0xa3,
-0xf7, 0xfc, 0x3f, 0xc0, 0xcd, 0x03, 0x3b, 0x11,
-0x5b, 0xaf, 0xce, 0xa5, 0x37, 0x05, 0x83, 0xd9,
-0xff, 0x37, 0x2c, 0x39, 0x90, 0x7f, 0x80, 0xc0,
-0x4c, 0x1a, 0xcb, 0x75, 0xcd, 0xb5, 0x97, 0xb8,
-0x99, 0x6a, 0x55, 0x37, 0x89, 0xfd, 0xf7, 0xeb,
-0xfe, 0x0c, 0xdc, 0x74, 0xb0, 0x1d, 0x46, 0xe2,
-0x7c, 0x30, 0x79, 0x44, 0xab, 0x8a, 0x8d, 0xd7,
-0x6f, 0x5e, 0x6e, 0x12, 0xfb, 0x4f, 0xb7, 0xff,
-0x81, 0xfd, 0xbf, 0xa9, 0x59, 0xe7, 0xf2, 0xa8,
-0x42, 0xa3, 0x6e, 0x0c, 0xb7, 0xde, 0xc8, 0x56,
-0xa3, 0xa5, 0x9b, 0x6a, 0x34, 0xd5, 0x9b, 0xd0,
-0xfe, 0x83, 0xfc, 0xdf, 0xdc, 0x08, 0x73, 0x4b,
-0x8d, 0x15, 0xab, 0x43, 0xad, 0xa1, 0xc9, 0x5c,
-0xc8, 0xee, 0x91, 0x1a, 0x70, 0x44, 0xed, 0xeb,
-0x8a, 0x3a, 0xa5, 0x5a, 0x4c, 0xed, 0x4d, 0x68,
-0x6f, 0x12, 0xfb, 0x4f, 0xc7, 0xff, 0x06, 0xf1,
-0xff, 0xc9, 0x05, 0xc6, 0xd7, 0xf8, 0xcd, 0x7b,
-0x69, 0x6e, 0x3a, 0xd6, 0xfd, 0xfb, 0x7f, 0xbd,
-0x51, 0x2c, 0x44, 0xb3, 0x95, 0xf3, 0xd8, 0x53,
-0x06, 0x18, 0xd8, 0xff, 0x1e, 0xb4, 0x9d, 0x4b,
-0x3c, 0x91, 0xcb, 0x09, 0xa3, 0x38, 0x03, 0x6f,
-0x54, 0xfc, 0x7b, 0x6c, 0xd9, 0xdc, 0xf0, 0xc3,
-0xa9, 0xed, 0x62, 0xfc, 0x7f, 0x1f, 0x6e, 0x42,
-0xfb, 0x1f, 0x5c, 0xfe, 0x17, 0xa9, 0xb5, 0x7a,
-0x8e, 0xd4, 0x0a, 0xbc, 0x91, 0x50, 0xab, 0x7d,
-0xe4, 0xbf, 0xd7, 0x90, 0xd3, 0x37, 0x06, 0x54,
-0x27, 0x92, 0xbd, 0xd5, 0x56, 0xc0, 0xfe, 0xf7,
-0xc0, 0x2f, 0xff, 0x1f, 0x78, 0x63, 0x63, 0xf6,
-0x1a, 0x33, 0x46, 0x91, 0x4e, 0xd9, 0x75, 0x63,
-0x01, 0xf6, 0x7f, 0x40, 0x76, 0x57, 0xff, 0xf7,
-0xeb, 0xff, 0x07, 0xbc, 0xc1, 0xd9, 0x11, 0x7b,
-0x52, 0xd1, 0x88, 0x33, 0x44, 0xdf, 0x60, 0xec,
-0x62, 0xfe, 0x1f, 0x1f, 0xc0, 0xfe, 0xf7, 0x00,
-0xec, 0xff, 0x9b, 0x15, 0xb5, 0xd6, 0x2b, 0x08,
-0x98, 0xbc, 0xe1, 0x33, 0x80, 0xc0, 0xfe, 0x0f,
-0xc6, 0xde, 0xed, 0x3f, 0xc8, 0xff, 0x9b, 0x8b,
-0x75, 0x79, 0x8f, 0x71, 0xc2, 0x0d, 0x3f, 0xa0,
-0xe2, 0xfe, 0xf9, 0xff, 0x60, 0xff, 0x7b, 0x00,
-0xf2, 0xff, 0x26, 0xa6, 0xd9, 0xc8, 0x47, 0x65,
-0x0d, 0x01, 0xa5, 0x6e, 0x6e, 0xf4, 0x46, 0x17,
-0x04, 0x66, 0xfc, 0x3f, 0x6d, 0x2f, 0x5b, 0xba,
-0x49, 0xec, 0xff, 0xee, 0xf2, 0x7f, 0xa1, 0xfe,
-0xff, 0xe6, 0xc6, 0x5c, 0xab, 0x14, 0x93, 0xce,
-0xa0, 0x34, 0xa5, 0x52, 0x29, 0x9d, 0x3c, 0x33,
-0x17, 0x2b, 0xec, 0x53, 0x77, 0xd0, 0xab, 0x0a,
-0xd8, 0xff, 0xc1, 0xd8, 0x5d, 0xfe, 0x2f, 0xd8,
-0xff, 0x37, 0x3d, 0x4d, 0xb3, 0x51, 0x58, 0xad,
-0x25, 0x12, 0xb1, 0x6c, 0x47, 0x6b, 0xfb, 0xf4,
-0x6c, 0xbf, 0xf1, 0xe8, 0x31, 0xfe, 0xef, 0x80,
-0xd0, 0xf2, 0xcf, 0x0f, 0x57, 0xff, 0xe6, 0xa1,
-0x09, 0xfe, 0x3f, 0xf0, 0x26, 0x62, 0xff, 0xea,
-0xff, 0xed, 0x9b, 0xc3, 0xfe, 0x83, 0xff, 0x0f,
-0xbc, 0x89, 0x68, 0x56, 0xa3, 0x2e, 0xa9, 0xed,
-0xbd, 0x6c, 0x89, 0xae, 0xff, 0xdf, 0xf0, 0xcd,
-0x9e, 0xbb, 0x67, 0x77, 0xf6, 0x5f, 0xf3, 0xae,
-0x72, 0x74, 0xa8, 0xff, 0xe2, 0x00, 0x70, 0x8d,
-0x50, 0x37, 0x55, 0x43, 0xdd, 0x34, 0x54, 0xfc,
-0xd8, 0xd3, 0x86, 0xda, 0xc9, 0x6e, 0x3a, 0x3d,
-0x86, 0x9f, 0x63, 0xe9, 0x40, 0xa3, 0xa1, 0xbf,
-0x31, 0x99, 0x4f, 0x8f, 0x3d, 0x83, 0x4f, 0x33,
-0xdd, 0x4d, 0x77, 0x7b, 0xcf, 0xb9, 0xce, 0x60,
-0xe0, 0xeb, 0x4c, 0x2e, 0xf3, 0xe6, 0x9b, 0xf7,
-0xda, 0x00, 0x37, 0x31, 0x4d, 0x3d, 0xa2, 0xeb,
-0x65, 0xfc, 0x2c, 0x97, 0x03, 0xcc, 0x85, 0xf4,
-0x46, 0x65, 0xc7, 0x3e, 0x4d, 0xfc, 0x02, 0x92,
-0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x4d,
-0x85, 0xaa, 0x1a, 0x23, 0x91, 0x76, 0x41, 0xc3,
-0x14, 0xe0, 0x79, 0xd3, 0x5f, 0x87, 0x5d, 0x9c,
-0xbf, 0xfd, 0x1f, 0xb1, 0xd4, 0xbe, 0xd8, 0xbe,
-0x48, 0xb0, 0xff, 0x79, 0xfc, 0x95, 0xe4, 0x9d,
-0x0f, 0x7d, 0x17, 0xb8, 0x86, 0xac, 0xbf, 0xe7,
-0x71, 0xa3, 0xd9, 0x6c, 0x5e, 0x6f, 0x29, 0xdd,
-0x77, 0x88, 0xd4, 0x6b, 0xd9, 0x44, 0x35, 0x17,
-0x8a, 0x76, 0xd3, 0x25, 0x00, 0xd8, 0x3b, 0xf1,
-0x67, 0x9f, 0x7e, 0xe5, 0x13, 0xef, 0xba, 0xed,
-0xde, 0x93, 0x27, 0x4f, 0x1e, 0x27, 0x0f, 0xeb,
-0xc5, 0x1f, 0xb2, 0x04, 0xf5, 0x9f, 0xfd, 0xc9,
-0xfe, 0x9a, 0xfe, 0x51, 0xfa, 0xd1, 0x5d, 0x9e,
-0xdd, 0xce, 0xf1, 0x93, 0xec, 0x92, 0xf4, 0xcf,
-0xb2, 0xbd, 0x49, 0xd6, 0x42, 0x6f, 0x7f, 0xee,
-0xcf, 0x9e, 0xfb, 0xd4, 0x6f, 0xde, 0xf3, 0xde,
-0x77, 0x14, 0x4e, 0xbf, 0xc7, 0xdc, 0x7c, 0x93,
-0xcc, 0x80, 0x6e, 0x14, 0x86, 0x90, 0xd4, 0xc7,
-0x4b, 0x0a, 0x00, 0x5c, 0x05, 0x9e, 0xbd, 0xe3,
-0xf7, 0x3e, 0x71, 0xdb, 0xd7, 0xcf, 0x9f, 0x47,
-0xcf, 0xdb, 0xd0, 0x83, 0xbc, 0x7c, 0x1d, 0x3d,
-0xbf, 0x8e, 0x9e, 0xe8, 0x05, 0xbd, 0xb3, 0xdf,
-0x5b, 0x9f, 0xbd, 0xff, 0xf7, 0x9e, 0x77, 0xff,
-0x39, 0xdf, 0x93, 0xb7, 0xee, 0xc2, 0xee, 0x4a,
-0x5f, 0xc7, 0xdb, 0xb0, 0x36, 0x69, 0x3d, 0x98,
-0xed, 0xd8, 0xdf, 0xdf, 0x4b, 0x76, 0x46, 0x7d,
-0x6f, 0xaf, 0xe7, 0x7c, 0xbe, 0xd7, 0x5a, 0x84,
-0xfa, 0xfd, 0xfc, 0xbd, 0xe8, 0x89, 0xbf, 0xb0,
-0x0e, 0xfc, 0xeb, 0xd6, 0x4e, 0xf0, 0x89, 0x60,
-0x4d, 0xf0, 0xaf, 0x7e, 0xff, 0x1f, 0x2e, 0x1a,
-0x6f, 0x74, 0x5f, 0x40, 0xcf, 0x54, 0xa3, 0x20,
-0xf9, 0xc0, 0x55, 0xe6, 0xc1, 0x3b, 0x5e, 0xb9,
-0x0d, 0xc9, 0xce, 0xf9, 0x93, 0x44, 0xe4, 0x4e,
-0x7e, 0x9d, 0xbc, 0xb1, 0x44, 0xe9, 0xde, 0xf3,
-0x44, 0x35, 0xa0, 0xef, 0x2c, 0x9c, 0xff, 0xec,
-0x5b, 0x11, 0xe6, 0xc7, 0x7b, 0xed, 0xbf, 0xf3,
-0xde, 0xff, 0x7b, 0xe9, 0xe5, 0xa8, 0xdf, 0xee,
-0x3d, 0xcf, 0xc2, 0xef, 0x44, 0xd8, 0xa9, 0xb5,
-0x0e, 0xd6, 0x43, 0xf6, 0xb1, 0x92, 0xc3, 0xc6,
-0x8a, 0xe1, 0xfc, 0xf1, 0x0f, 0x7d, 0xfa, 0x27,
-0xcc, 0x37, 0xac, 0x0a, 0x30, 0x22, 0xd9, 0x5c,
-0xf7, 0x7a, 0x97, 0x0c, 0xe0, 0x66, 0xe1, 0x41,
-0xe2, 0x05, 0x60, 0x41, 0xc7, 0x56, 0xf5, 0xfc,
-0x49, 0xf4, 0xc0, 0x4f, 0xcc, 0x49, 0x4f, 0xda,
-0x4e, 0x52, 0xff, 0x99, 0x5f, 0xa9, 0x65, 0x24,
-0x1f, 0x99, 0xf5, 0x7a, 0x2d, 0xe7, 0xb7, 0xbc,
-0xdf, 0x7f, 0xe7, 0x93, 0xf3, 0xf9, 0xde, 0xf3,
-0xb6, 0x06, 0x23, 0x9e, 0xc2, 0xbd, 0xe7, 0x4f,
-0xbe, 0xf5, 0x37, 0xef, 0x7b, 0xcf, 0x1b, 0xb0,
-0x26, 0x60, 0xb4, 0x13, 0xa1, 0xf4, 0xf5, 0x2e,
-0x12, 0xc0, 0xcd, 0xc5, 0x1d, 0x9f, 0xb8, 0xed,
-0xa4, 0x25, 0x4c, 0xae, 0xf4, 0x9f, 0xdc, 0x8f,
-0x87, 0xbd, 0xb5, 0x93, 0xf4, 0x16, 0xed, 0xaf,
-0xa9, 0x5f, 0xa9, 0xa5, 0x82, 0x3f, 0x5c, 0x2d,
-0x45, 0x7f, 0xa4, 0x74, 0x17, 0x76, 0x09, 0x7e,
-0xee, 0xc7, 0xdf, 0xfb, 0x57, 0x6f, 0x2c, 0x15,
-0x10, 0xc9, 0xa7, 0xc0, 0xeb, 0x07, 0xae, 0x3d,
-0x0f, 0xbe, 0x72, 0x9b, 0x17, 0x4e, 0x3b, 0x7f,
-0xb0, 0x57, 0x38, 0x70, 0x60, 0xce, 0xe3, 0x17,
-0x9f, 0x4d, 0x1e, 0x64, 0xfe, 0x0d, 0xc0, 0xc1,
-0xf3, 0xf8, 0x79, 0xd2, 0xd2, 0x25, 0xee, 0x9e,
-0x78, 0xe5, 0x70, 0xfe, 0xe7, 0x9e, 0xbb, 0xa7,
-0x7c, 0xbd, 0x85, 0x3a, 0x30, 0x7a, 0x65, 0xec,
-0x7a, 0x97, 0x03, 0xe0, 0x66, 0xa5, 0x74, 0xc7,
-0x6d, 0xbe, 0xc2, 0xb6, 0x07, 0x0e, 0xee, 0x46,
-0xb8, 0x07, 0xdd, 0xbe, 0xf5, 0xa0, 0xf6, 0x84,
-0x9d, 0x0a, 0xa7, 0xb2, 0xf0, 0xd6, 0x7b, 0xea,
-0xd7, 0x5b, 0xb0, 0x03, 0x31, 0x92, 0x48, 0x5e,
-0xef, 0x32, 0x00, 0xdc, 0xd4, 0x20, 0x0d, 0x70,
-0x10, 0xcb, 0xd3, 0x71, 0x22, 0x4d, 0x07, 0x8f,
-0x1f, 0x1f, 0xfc, 0x69, 0x3f, 0xac, 0x95, 0xf1,
-0x2b, 0x81, 0xbc, 0xb1, 0x17, 0x39, 0x69, 0xff,
-0x80, 0x97, 0x71, 0x9f, 0xcc, 0x12, 0x81, 0x9e,
-0x94, 0xd4, 0xf3, 0xfa, 0xc0, 0x53, 0x02, 0xb6,
-0x23, 0xf0, 0xaf, 0xfe, 0xc1, 0xbc, 0xde, 0xc2,
-0xdd, 0x17, 0xa3, 0x16, 0xbd, 0xde, 0xb7, 0x1f,
-0xb8, 0xe9, 0x79, 0xe5, 0xeb, 0x58, 0x03, 0x1c,
-0x44, 0x12, 0x7c, 0x4d, 0x78, 0x69, 0x9f, 0xb7,
-0x67, 0xe9, 0x05, 0x41, 0x09, 0x9c, 0x3f, 0xff,
-0xdc, 0xe2, 0xce, 0xf5, 0x16, 0xf0, 0x9e, 0x18,
-0xa3, 0x50, 0xef, 0x07, 0x6e, 0x00, 0x4a, 0xbf,
-0x77, 0x12, 0x4b, 0xe5, 0x4b, 0x7b, 0x15, 0xcd,
-0x97, 0xdc, 0x57, 0xbf, 0x3f, 0xd9, 0x37, 0x83,
-0xf0, 0xa4, 0xbb, 0x15, 0xf6, 0x3f, 0x86, 0x71,
-0x0d, 0xac, 0x98, 0xc0, 0x73, 0xef, 0xb8, 0x71,
-0x73, 0x02, 0x8c, 0x4c, 0x11, 0xa4, 0x1f, 0xb8,
-0x31, 0x28, 0xdd, 0x76, 0xf0, 0xc4, 0x91, 0x97,
-0x9e, 0x7c, 0xe9, 0xa5, 0x27, 0x91, 0x88, 0x3d,
-0xf9, 0xd2, 0xc1, 0x27, 0x07, 0x7c, 0xbc, 0x84,
-0x56, 0x21, 0x7f, 0xfd, 0x56, 0x7e, 0xc9, 0xfe,
-0xdb, 0xdd, 0xe3, 0xa5, 0x83, 0x47, 0x5e, 0xb2,
-0x0e, 0xf0, 0x04, 0x3a, 0x52, 0xfc, 0x87, 0x3e,
-0x1d, 0xc1, 0x7b, 0xb7, 0xf5, 0xc0, 0x71, 0xc7,
-0x15, 0x20, 0x79, 0x82, 0xe7, 0xcf, 0x1f, 0xff,
-0xd4, 0x37, 0x36, 0x6f, 0x48, 0x0d, 0xa0, 0x16,
-0x26, 0xe2, 0xd7, 0xfb, 0xa6, 0x03, 0x80, 0xcb,
-0x1d, 0x27, 0x9f, 0x3c, 0xb1, 0x4f, 0x3c, 0x49,
-0xbf, 0xdd, 0xb7, 0xad, 0xb2, 0x1b, 0x7f, 0xd2,
-0x7d, 0x12, 0xb0, 0x0a, 0x78, 0xe9, 0xa5, 0x97,
-0x5e, 0x72, 0x1c, 0x01, 0xaf, 0x16, 0x70, 0xfc,
-0x7d, 0x17, 0x6f, 0x40, 0x05, 0x60, 0x4c, 0x82,
-0xf4, 0x03, 0x37, 0x14, 0xa5, 0xdb, 0x90, 0x34,
-0x1d, 0x46, 0xcf, 0xc3, 0xe8, 0xf5, 0xf0, 0x80,
-0xcf, 0x5b, 0xf0, 0x8b, 0xf5, 0x06, 0xbd, 0x92,
-0x2d, 0x58, 0x8f, 0xc3, 0xe4, 0xfb, 0x13, 0xee,
-0x57, 0xc2, 0xef, 0x03, 0xef, 0x87, 0x3c, 0xbc,
-0xa7, 0x07, 0xf6, 0x06, 0x90, 0x0b, 0x63, 0x57,
-0x06, 0x9c, 0xba, 0xc0, 0xf9, 0xf3, 0x2f, 0x3d,
-0xfa, 0x81, 0xeb, 0x2d, 0xee, 0x3c, 0x91, 0xe2,
-0xf5, 0xbe, 0xdb, 0x00, 0xc0, 0xf3, 0xca, 0x4b,
-0xb7, 0xdc, 0x72, 0xe5, 0x96, 0xdd, 0xb3, 0x97,
-0x75, 0x07, 0xe6, 0xb0, 0xf5, 0x77, 0x18, 0x3d,
-0x4e, 0x58, 0x2a, 0x01, 0x7b, 0x05, 0x4f, 0x3a,
-0x6e, 0xc0, 0x4b, 0x07, 0x8f, 0x7b, 0x11, 0xc1,
-0x4f, 0x7d, 0xdf, 0xf5, 0x16, 0x78, 0x96, 0x42,
-0x54, 0x81, 0xaa, 0x3f, 0x70, 0xc3, 0xf1, 0xec,
-0xf1, 0x2b, 0xb7, 0x5c, 0xb9, 0xff, 0xca, 0xd5,
-0xe0, 0x96, 0xab, 0xb2, 0xd5, 0x2b, 0x57, 0xee,
-0xbf, 0x05, 0x6f, 0xdb, 0x52, 0x08, 0x27, 0xb0,
-0x77, 0x81, 0x95, 0xc0, 0xc1, 0x83, 0x47, 0x6c,
-0x27, 0x00, 0xab, 0x80, 0xf3, 0xe7, 0x4f, 0xfe,
-0xd9, 0x4f, 0x5c, 0x6f, 0x91, 0xa7, 0x50, 0x6b,
-0xe9, 0x92, 0x52, 0x02, 0x0d, 0x00, 0xdc, 0x78,
-0xdc, 0x7b, 0xe5, 0x91, 0x27, 0xd0, 0xe3, 0x11,
-0xf2, 0x3a, 0xe8, 0x03, 0xad, 0xe5, 0xac, 0x4c,
-0xfe, 0x59, 0xff, 0x9d, 0xdf, 0x9c, 0x4f, 0xde,
-0xc7, 0xdd, 0x3d, 0xbc, 0xcd, 0x5a, 0x5c, 0x79,
-0xc2, 0xd5, 0x31, 0x96, 0x12, 0xb0, 0x55, 0x80,
-0xd5, 0x34, 0x60, 0xab, 0x80, 0xbf, 0x7d, 0xef,
-0x0d, 0x93, 0x12, 0xbc, 0x53, 0x89, 0x83, 0xec,
-0x03, 0x37, 0x28, 0x9f, 0xb8, 0x72, 0x14, 0x0b,
-0xe7, 0x23, 0xb7, 0xef, 0xe2, 0x71, 0xf4, 0x91,
-0xa3, 0xce, 0x1b, 0xf7, 0xcb, 0xa3, 0xd2, 0x05,
-0x77, 0xb3, 0x75, 0x6f, 0x2f, 0x64, 0x4f, 0x8f,
-0xb8, 0x58, 0x8a, 0xe7, 0x09, 0xe2, 0xb8, 0xdc,
-0x8f, 0x75, 0xc0, 0x61, 0x5b, 0x05, 0x3c, 0x49,
-0x69, 0x80, 0x83, 0x9f, 0xbe, 0x41, 0x5a, 0x02,
-0xcb, 0xb9, 0x12, 0x48, 0x3f, 0x70, 0xc3, 0xf2,
-0xca, 0x2d, 0x2f, 0xbf, 0x7c, 0xfb, 0xd5, 0x67,
-0xbf, 0xf6, 0xf1, 0x08, 0xfe, 0x3b, 0x7a, 0xd4,
-0xf1, 0x27, 0x1c, 0x37, 0x80, 0x68, 0x80, 0x23,
-0x76, 0x8a, 0x81, 0xd5, 0x16, 0xf0, 0xfb, 0xe5,
-0xa9, 0x1b, 0x40, 0x03, 0x0c, 0x87, 0x4a, 0x25,
-0xf0, 0xfe, 0x81, 0x1b, 0x97, 0x3b, 0x4e, 0x1c,
-0x3b, 0xf6, 0x30, 0x92, 0xcf, 0x97, 0x6f, 0x3f,
-0x86, 0x5e, 0x5e, 0x26, 0x6f, 0x6e, 0x47, 0xcf,
-0x63, 0xf8, 0x3f, 0xfe, 0xa3, 0xde, 0xba, 0xff,
-0xf0, 0xc2, 0xf6, 0x0a, 0xb7, 0x93, 0x17, 0xfc,
-0x03, 0xfe, 0x85, 0xbc, 0x7f, 0xf9, 0x65, 0x67,
-0x1b, 0xe4, 0xf1, 0xb2, 0x25, 0xfd, 0xc7, 0x6e,
-0xf7, 0xb6, 0x60, 0xbd, 0xbe, 0xcc, 0x6c, 0x93,
-0x7a, 0x58, 0xdf, 0x91, 0x05, 0xad, 0xed, 0x59,
-0x4f, 0xeb, 0x4b, 0x57, 0x15, 0x20, 0x2d, 0x70,
-0x14, 0x79, 0x02, 0xf7, 0x13, 0x15, 0x40, 0x62,
-0x01, 0x4e, 0x6b, 0x00, 0x51, 0x01, 0x1f, 0xba,
-0x78, 0xbd, 0x85, 0x7f, 0x4a, 0xcd, 0x74, 0x2d,
-0xf1, 0x47, 0x80, 0x06, 0x00, 0x6e, 0x48, 0xee,
-0x38, 0x7c, 0xec, 0x61, 0x82, 0xfd, 0x2f, 0x08,
-0xc7, 0x84, 0x37, 0xb2, 0x1f, 0xf7, 0x8f, 0x63,
-0xce, 0x66, 0x8f, 0xe1, 0xe7, 0xcb, 0x0f, 0x5b,
-0xfa, 0x06, 0xe9, 0x00, 0xe2, 0x08, 0x5c, 0x79,
-0x02, 0x57, 0x04, 0x0e, 0x5b, 0xf9, 0x07, 0x24,
-0x16, 0x78, 0xf2, 0xf8, 0xc9, 0x83, 0xe7, 0xff,
-0xf6, 0xbe, 0xeb, 0x1c, 0x04, 0x50, 0x13, 0xe9,
-0x38, 0x19, 0x8d, 0xed, 0x7a, 0xdf, 0x62, 0x00,
-0xf0, 0xe7, 0xc1, 0x5b, 0xee, 0x7e, 0xf8, 0x6e,
-0x24, 0x5b, 0xb7, 0x92, 0x57, 0xcc, 0xdd, 0xbe,
-0x82, 0x78, 0x9d, 0xb8, 0x55, 0xfc, 0x0a, 0xa9,
-0x01, 0xcb, 0xb1, 0x78, 0xe4, 0x76, 0x12, 0x0e,
-0xc0, 0x5e, 0xc0, 0x61, 0xab, 0x49, 0xd0, 0x49,
-0x08, 0x38, 0xfe, 0xb6, 0xeb, 0x9a, 0x09, 0xa0,
-0xe6, 0xe3, 0x96, 0xf8, 0x63, 0xf9, 0x07, 0x1d,
-0x00, 0xdc, 0xa8, 0x3c, 0x7b, 0xcb, 0xad, 0x98,
-0x87, 0xd1, 0xdf, 0xdd, 0xe4, 0xdd, 0xdd, 0xe4,
-0xef, 0x6e, 0xf7, 0x9d, 0xfd, 0xf5, 0xad, 0xd4,
-0x1b, 0xea, 0x1d, 0xff, 0xc1, 0xfd, 0x78, 0xb7,
-0xf8, 0x8b, 0xfb, 0xeb, 0xdd, 0xec, 0x62, 0xe2,
-0xd2, 0x77, 0xf3, 0x6b, 0x90, 0xff, 0x0f, 0xdf,
-0x7a, 0x37, 0xad, 0x9c, 0x48, 0xad, 0xe0, 0xf6,
-0xdb, 0x8f, 0x12, 0x2f, 0xc0, 0xd6, 0x00, 0x27,
-0x9e, 0xb4, 0xf2, 0x02, 0x71, 0x1d, 0xe0, 0x51,
-0xe3, 0xfa, 0x89, 0x7f, 0x33, 0x86, 0xc4, 0x3f,
-0x6e, 0x89, 0x3f, 0x48, 0x3f, 0x70, 0x03, 0xf3,
-0xec, 0xfd, 0xb7, 0xde, 0x7a, 0xea, 0xd6, 0x87,
-0x44, 0x51, 0xc5, 0x9c, 0x72, 0x5f, 0x7a, 0xd0,
-0xef, 0x77, 0xd9, 0x0a, 0x3d, 0xd6, 0x39, 0xc5,
-0x2e, 0x46, 0x9e, 0xec, 0xe2, 0xae, 0x1a, 0x38,
-0x66, 0x85, 0x04, 0xb0, 0x0a, 0x78, 0x02, 0x6b,
-0x00, 0x92, 0x1a, 0x78, 0xf0, 0x84, 0xed, 0x03,
-0xdc, 0x73, 0xfd, 0xaa, 0x00, 0x99, 0x6e, 0xdc,
-0xb6, 0xff, 0x0a, 0x38, 0x00, 0xc0, 0x0d, 0xcd,
-0x1d, 0x8f, 0x9c, 0x7a, 0x08, 0xc9, 0xff, 0x43,
-0x84, 0x5b, 0xed, 0x3f, 0xfa, 0xed, 0xad, 0xce,
-0x53, 0xf6, 0xce, 0x7a, 0x9e, 0x22, 0x4f, 0xe6,
-0x37, 0xd9, 0x62, 0x92, 0xaf, 0xa4, 0x4b, 0x3b,
-0x1f, 0xc9, 0x66, 0xc9, 0x57, 0xf8, 0x41, 0xb4,
-0xd4, 0x29, 0x5e, 0x09, 0x10, 0x27, 0x00, 0xc7,
-0x02, 0xae, 0xd8, 0x1a, 0xc0, 0x8e, 0x02, 0x1c,
-0x3c, 0xf9, 0xd2, 0xaf, 0x5f, 0x2f, 0x05, 0xd0,
-0x8e, 0xc6, 0xe3, 0xae, 0x03, 0x00, 0xc2, 0x0f,
-0xdc, 0xd0, 0xbc, 0xf2, 0xf2, 0xab, 0xaf, 0x3e,
-0xf4, 0xd0, 0xab, 0xf8, 0x85, 0xf0, 0x2a, 0x79,
-0x50, 0xbc, 0x4a, 0x7e, 0xf4, 0x9e, 0xd6, 0xe3,
-0xd5, 0x57, 0xb9, 0x05, 0x5f, 0x75, 0xb7, 0x41,
-0x7e, 0xb1, 0x9e, 0xec, 0x9a, 0xaf, 0xca, 0xb7,
-0xe9, 0xec, 0xd2, 0xde, 0x1c, 0xb3, 0x2c, 0x77,
-0x2c, 0x96, 0x2e, 0x70, 0x74, 0x80, 0xe5, 0x05,
-0xe0, 0x36, 0x07, 0x1c, 0x0c, 0x74, 0x35, 0x00,
-0xc9, 0x07, 0x3a, 0x79, 0xf2, 0xad, 0xd7, 0x29,
-0x15, 0x50, 0x0f, 0xa5, 0xe3, 0x4f, 0x5b, 0x0a,
-0x00, 0xa4, 0x1f, 0xb8, 0xe1, 0x79, 0xff, 0xc3,
-0xaf, 0x86, 0x5f, 0x25, 0xd8, 0xff, 0xdc, 0xf7,
-0x61, 0xf6, 0x2b, 0x29, 0x61, 0x67, 0x49, 0x6a,
-0xbd, 0x9e, 0x8b, 0xf7, 0x5e, 0x24, 0x2c, 0x7d,
-0xeb, 0x62, 0xeb, 0x85, 0x53, 0x8e, 0x1f, 0x40,
-0x69, 0x80, 0xdb, 0x71, 0x1c, 0x00, 0x87, 0x01,
-0x9e, 0x7c, 0xf2, 0x88, 0xa5, 0x00, 0x3e, 0xf4,
-0x57, 0xd7, 0x43, 0xfc, 0xcd, 0x1c, 0x92, 0xfd,
-0xb4, 0xe3, 0x00, 0x80, 0x06, 0x00, 0x6e, 0x74,
-0xee, 0x3d, 0xf5, 0xea, 0xab, 0x87, 0x0e, 0xd9,
-0xa2, 0x19, 0x76, 0xc5, 0xde, 0x53, 0x0a, 0xec,
-0x93, 0xfb, 0x82, 0xd1, 0x15, 0xee, 0xbb, 0xb0,
-0xb8, 0x20, 0xb5, 0x59, 0xf9, 0x06, 0xc9, 0xbb,
-0x43, 0xaf, 0x7a, 0xfb, 0xa6, 0x37, 0xc8, 0x68,
-0x01, 0xdb, 0x13, 0x38, 0xe5, 0x38, 0x01, 0x2f,
-0x63, 0x0d, 0x80, 0xe3, 0x00, 0x57, 0x48, 0x62,
-0x30, 0x19, 0x37, 0xe0, 0xe0, 0xf1, 0x83, 0xcf,
-0x5d, 0x87, 0x91, 0x01, 0x8d, 0x4a, 0x1a, 0x61,
-0x39, 0x00, 0x90, 0x00, 0x04, 0xbc, 0x11, 0x38,
-0x78, 0x28, 0x1c, 0x46, 0x1a, 0x20, 0xfc, 0x2a,
-0xf5, 0xb0, 0x3e, 0xa1, 0x7f, 0xec, 0xd7, 0xec,
-0x83, 0x2c, 0x77, 0x88, 0xff, 0x6a, 0xf0, 0x07,
-0xbd, 0xde, 0x21, 0x67, 0xa7, 0xce, 0x57, 0xf6,
-0x5e, 0x0e, 0x61, 0xe5, 0x10, 0x66, 0x74, 0x00,
-0x12, 0xff, 0x87, 0x6c, 0x27, 0xc0, 0x6e, 0x0c,
-0x78, 0xe2, 0x91, 0xfb, 0x89, 0x06, 0xb0, 0x9a,
-0x01, 0x0e, 0xbe, 0xef, 0x9a, 0x0f, 0x0b, 0xa6,
-0x6e, 0x75, 0x9f, 0x7e, 0x3a, 0x9d, 0x7e, 0x3a,
-0x1d, 0xb7, 0x14, 0xc0, 0xf5, 0xbe, 0xb5, 0x00,
-0xd0, 0x9f, 0xfb, 0x91, 0xd0, 0x85, 0x2d, 0xb9,
-0xbb, 0x31, 0x71, 0x8e, 0xeb, 0x55, 0x5b, 0xd9,
-0xb8, 0x4a, 0xc0, 0x8e, 0x06, 0x60, 0x15, 0x70,
-0xbb, 0x13, 0x06, 0xb0, 0x9a, 0x02, 0x0f, 0x3e,
-0x89, 0x3c, 0x80, 0x4f, 0x6f, 0x5e, 0x63, 0xf9,
-0x5f, 0x4d, 0x62, 0xf3, 0xff, 0x34, 0xf1, 0x00,
-0x4a, 0xa0, 0x00, 0x80, 0x37, 0x04, 0x77, 0x3c,
-0x7c, 0x5d, 0xa5, 0x7b, 0x30, 0x88, 0x77, 0xe0,
-0x78, 0x02, 0x96, 0x17, 0x60, 0x35, 0x07, 0x1c,
-0x23, 0x95, 0x00, 0xa2, 0x00, 0x0e, 0xe3, 0x96,
-0x40, 0x5c, 0x07, 0x78, 0xef, 0xb5, 0xed, 0x09,
-0xd0, 0x4e, 0xa5, 0x9f, 0x49, 0x77, 0x49, 0x0d,
-0xc0, 0xab, 0x00, 0xdc, 0xe0, 0xc4, 0xd3, 0xd1,
-0xe2, 0x5c, 0xa5, 0xb5, 0xb2, 0x95, 0x68, 0xe5,
-0xe7, 0x8a, 0x4f, 0x8d, 0xc1, 0x78, 0x45, 0x37,
-0x1f, 0x9f, 0x78, 0x28, 0x3c, 0x8d, 0x44, 0x0b,
-0xff, 0xa1, 0x17, 0xf2, 0xcf, 0x7e, 0xb5, 0xbf,
-0x98, 0x66, 0x7f, 0x9f, 0xf6, 0x16, 0x98, 0x76,
-0x57, 0xa1, 0xbf, 0x76, 0x5e, 0xa6, 0xc3, 0xee,
-0x8a, 0xce, 0xa7, 0x69, 0xe6, 0x17, 0x77, 0x77,
-0xde, 0x1e, 0xb9, 0xcf, 0xee, 0x47, 0x4e, 0x0b,
-0xbc, 0x7a, 0xc8, 0xd5, 0x00, 0x0f, 0xe1, 0x14,
-0x26, 0xa2, 0x01, 0x6e, 0x77, 0x34, 0x00, 0xf6,
-0x00, 0x90, 0x02, 0x38, 0xb2, 0x70, 0x2d, 0xc5,
-0x5f, 0xbf, 0x14, 0x1f, 0x1b, 0x1b, 0xeb, 0x76,
-0xbf, 0x6a, 0xd7, 0x00, 0x6c, 0xf9, 0xbf, 0x71,
-0x55, 0x40, 0xa9, 0x7b, 0x39, 0xb1, 0xa4, 0x1b,
-0xaa, 0xa3, 0x25, 0x9b, 0xaa, 0xa1, 0x2f, 0xc5,
-0x2e, 0x77, 0x6f, 0xdc, 0x23, 0x06, 0xae, 0x0a,
-0x47, 0xb0, 0xa0, 0x4d, 0x53, 0xd2, 0xc8, 0x0b,
-0xa5, 0x27, 0xea, 0xf2, 0xef, 0x99, 0xf5, 0x28,
-0xe9, 0x17, 0xde, 0x49, 0x56, 0x65, 0x75, 0xca,
-0x34, 0xa5, 0x71, 0xa6, 0x25, 0xd2, 0x3f, 0xed,
-0x28, 0x80, 0x43, 0x76, 0x4d, 0xc0, 0xd6, 0x00,
-0x77, 0xdb, 0x61, 0x00, 0x4f, 0x01, 0xe0, 0x28,
-0xc0, 0x5b, 0xff, 0xed, 0xb5, 0x13, 0x7f, 0xb5,
-0x8a, 0x44, 0xbf, 0xfb, 0xd5, 0xb1, 0xee, 0x58,
-0x37, 0xed, 0xb4, 0x00, 0x58, 0x97, 0xf7, 0xc6,
-0x94, 0xa7, 0xe4, 0x5c, 0x47, 0x17, 0x92, 0x24,
-0x90, 0x2a, 0x50, 0xeb, 0x99, 0x2a, 0x4c, 0x56,
-0x72, 0x53, 0xf1, 0xe0, 0xcb, 0x8e, 0x59, 0x9e,
-0xa5, 0xe4, 0x6c, 0x9a, 0x12, 0xce, 0x69, 0x1f,
-0x59, 0x95, 0x6a, 0x00, 0x66, 0x61, 0x46, 0xe2,
-0xa7, 0xd9, 0x6d, 0xb0, 0x4a, 0x85, 0x11, 0xf6,
-0x69, 0xc9, 0xc2, 0x9c, 0x76, 0x42, 0x3a, 0xc0,
-0x89, 0x03, 0x38, 0x6d, 0x01, 0x24, 0x1f, 0x88,
-0xe4, 0x02, 0xd8, 0x1e, 0xc0, 0xff, 0xf1, 0xf8,
-0x35, 0x93, 0xff, 0x42, 0x12, 0xd9, 0xfe, 0x6e,
-0x37, 0x89, 0x55, 0x40, 0x3a, 0xcd, 0xe4, 0x00,
-0x06, 0xa0, 0x74, 0x20, 0x91, 0x68, 0xa1, 0xc7,
-0xca, 0x4a, 0xc2, 0x7a, 0x38, 0x9c, 0xf3, 0x59,
-0x21, 0xd9, 0x22, 0x3f, 0xaf, 0xe0, 0x55, 0xdc,
-0xe5, 0xd1, 0xbf, 0x95, 0x54, 0x90, 0xdd, 0xc5,
-0x43, 0x59, 0xdd, 0xbf, 0x72, 0xd4, 0x34, 0x3b,
-0x17, 0xfa, 0x57, 0x04, 0x8a, 0x78, 0x8f, 0x2d,
-0xee, 0x70, 0xe9, 0xb7, 0x3c, 0x15, 0x67, 0xee,
-0xd3, 0x68, 0xc2, 0x5a, 0xa7, 0xb5, 0xe2, 0xad,
-0xc1, 0xaf, 0xb7, 0xc2, 0x7d, 0xf0, 0xce, 0x30,
-0x91, 0x1f, 0xb8, 0x92, 0x12, 0x6d, 0xe1, 0x35,
-0xf1, 0x15, 0x5b, 0x61, 0xb6, 0xdb, 0x8a, 0xfa,
-0xac, 0x90, 0x23, 0x37, 0x43, 0x64, 0x4e, 0xbc,
-0x9d, 0xe9, 0x8a, 0xb5, 0xa9, 0x44, 0x62, 0x65,
-0x45, 0x7a, 0xf6, 0x2b, 0xd4, 0x3b, 0xea, 0x7d,
-0x4b, 0xb8, 0x51, 0xb9, 0x96, 0x64, 0x1d, 0x44,
-0xd5, 0xa7, 0x0c, 0x15, 0x49, 0x91, 0x59, 0x61,
-0xce, 0x09, 0x95, 0x87, 0x44, 0x65, 0xe0, 0xeb,
-0xf3, 0xae, 0x57, 0xa7, 0x89, 0x9c, 0xb9, 0xcc,
-0x62, 0x7f, 0xc0, 0x7e, 0xe3, 0x3c, 0x66, 0xbd,
-0x8f, 0xd4, 0x02, 0xe8, 0x6b, 0xe7, 0xb3, 0xfd,
-0x7e, 0xd6, 0x5a, 0x64, 0x76, 0x9a, 0x5a, 0x94,
-0x5a, 0xd2, 0xdb, 0x86, 0xfd, 0x93, 0xb3, 0xaa,
-0xb5, 0xb0, 0xfd, 0x9c, 0x0d, 0x7b, 0xeb, 0x61,
-0xc8, 0x1a, 0xbc, 0x33, 0xe0, 0xf9, 0x00, 0xa7,
-0xec, 0x38, 0xe0, 0x31, 0x92, 0x11, 0x8c, 0xbb,
-0x05, 0xda, 0xfd, 0x01, 0xee, 0xbb, 0x56, 0xe2,
-0xaf, 0xe6, 0x88, 0xf0, 0x27, 0xf1, 0xcb, 0x18,
-0x09, 0x01, 0x0c, 0xd4, 0x03, 0x30, 0xdd, 0x30,
-0x75, 0xdd, 0x34, 0x54, 0xc1, 0x22, 0x47, 0x7c,
-0x66, 0x0b, 0xaf, 0x1a, 0xba, 0x5e, 0x37, 0x55,
-0x55, 0x90, 0xe2, 0x5a, 0xff, 0x9d, 0xc5, 0x27,
-0xb4, 0xcd, 0x7e, 0xa7, 0x53, 0x98, 0xeb, 0x53,
-0x8a, 0x4a, 0x9a, 0x51, 0x46, 0x47, 0x6c, 0x04,
-0x4f, 0xb4, 0x6c, 0xe6, 0xec, 0x55, 0x5b, 0xf8,
-0xd8, 0x07, 0x59, 0x93, 0x65, 0xf3, 0x52, 0xe0,
-0xcb, 0x6a, 0x53, 0x51, 0x23, 0x65, 0x73, 0xc7,
-0x68, 0x0a, 0x7b, 0x5c, 0xf6, 0xb9, 0x40, 0x05,
-0x13, 0x9f, 0xdb, 0xa6, 0xb0, 0xbc, 0x2e, 0x7a,
-0x46, 0x45, 0x43, 0x47, 0xcb, 0x6e, 0x8a, 0x37,
-0xa2, 0x1f, 0x09, 0x61, 0xa7, 0x3b, 0x11, 0x6b,
-0xa7, 0xdc, 0xa6, 0xcc, 0xa8, 0xf4, 0x20, 0xd3,
-0x11, 0x43, 0x52, 0x5e, 0xd0, 0xca, 0x6a, 0x68,
-0xd0, 0xeb, 0xa3, 0x9c, 0x38, 0x34, 0xed, 0x0a,
-0x34, 0xcf, 0xac, 0xfb, 0x32, 0xcd, 0xbe, 0xe3,
-0xbe, 0x12, 0x17, 0xe1, 0xff, 0x4b, 0xde, 0x30,
-0x1f, 0x85, 0x4d, 0x5b, 0x5a, 0xc6, 0x39, 0xb2,
-0xb0, 0xa5, 0x07, 0x68, 0x05, 0x40, 0xda, 0x05,
-0xdd, 0x40, 0xe0, 0xc3, 0x96, 0x0b, 0x80, 0xf3,
-0x81, 0x6f, 0x39, 0x7c, 0x0b, 0xe9, 0x12, 0xf8,
-0xdc, 0x7f, 0x1c, 0xf4, 0xb6, 0xec, 0x92, 0x4c,
-0xb2, 0xfb, 0xbd, 0xef, 0x75, 0x93, 0x08, 0xa4,
-0x07, 0xc6, 0xe8, 0x00, 0x60, 0x20, 0x25, 0x10,
-0x6f, 0x17, 0x5a, 0x5b, 0xab, 0x85, 0x88, 0xc9,
-0x97, 0x23, 0x49, 0x89, 0x23, 0x1c, 0x30, 0x13,
-0x2b, 0xd9, 0x85, 0xb6, 0x2e, 0x48, 0xd1, 0x68,
-0xbf, 0x5d, 0x95, 0x8a, 0x0b, 0x41, 0xba, 0x47,
-0xa9, 0x4b, 0xb9, 0x9e, 0x47, 0x5e, 0xca, 0xb4,
-0x5b, 0x89, 0x8e, 0xe4, 0x88, 0xfd, 0xa9, 0xda,
-0xab, 0x56, 0xf4, 0x56, 0x62, 0x71, 0xa1, 0x51,
-0x17, 0xe5, 0x2b, 0x10, 0xea, 0x44, 0x90, 0x2b,
-0x4a, 0x53, 0x19, 0x49, 0x24, 0xb2, 0x5a, 0xa3,
-0x2e, 0x5c, 0x2c, 0x5e, 0x06, 0x6d, 0xe2, 0xc3,
-0x1a, 0xba, 0x1b, 0x4b, 0x91, 0x1d, 0xfe, 0x42,
-0x99, 0x12, 0xf9, 0x37, 0x6b, 0x2b, 0xb5, 0x85,
-0x6d, 0xf1, 0x46, 0xf4, 0x23, 0xcb, 0x5f, 0xd0,
-0xf6, 0xd2, 0xd0, 0x59, 0x72, 0x41, 0xb9, 0x05,
-0x37, 0xe5, 0x2e, 0xdd, 0x84, 0xda, 0x46, 0x47,
-0xb8, 0xc9, 0x2e, 0xdb, 0x9c, 0x32, 0x54, 0x7d,
-0xf0, 0x39, 0xe6, 0x9f, 0xbd, 0xdb, 0x15, 0xaf,
-0x69, 0xfb, 0x39, 0x6b, 0x5b, 0x6a, 0x4f, 0x2e,
-0xc3, 0xac, 0xc5, 0x77, 0x2d, 0xfd, 0x34, 0x25,
-0x9c, 0x8e, 0x1d, 0x9f, 0x76, 0xcd, 0xb9, 0x2d,
-0xba, 0xee, 0xb6, 0xdc, 0x5f, 0xad, 0x6f, 0x1c,
-0x11, 0x0f, 0x3b, 0x0b, 0x7a, 0xde, 0x81, 0x77,
-0x20, 0x5e, 0x3d, 0xc2, 0xde, 0x83, 0x57, 0x11,
-0xc0, 0xb5, 0x80, 0xb0, 0x5b, 0x09, 0xb0, 0xda,
-0x01, 0x70, 0x97, 0x20, 0xd2, 0x0e, 0x88, 0xaa,
-0x00, 0xff, 0x70, 0x6d, 0xda, 0x00, 0xcc, 0x62,
-0x97, 0x08, 0xbf, 0xa5, 0x00, 0xbe, 0x3a, 0x96,
-0x1e, 0xb0, 0x05, 0x20, 0x5e, 0x28, 0x2c, 0x27,
-0x16, 0x0b, 0xeb, 0x26, 0xaf, 0xd1, 0x7d, 0x94,
-0xbf, 0x32, 0x61, 0x6e, 0x2d, 0xc7, 0x32, 0x17,
-0xa9, 0xf0, 0x9d, 0x4d, 0xa6, 0xcf, 0x1e, 0x93,
-0xd9, 0xa0, 0x9d, 0x23, 0x37, 0x33, 0xbd, 0xea,
-0x12, 0xa5, 0x4c, 0xa3, 0xf2, 0xe2, 0xa2, 0xb6,
-0x5e, 0x97, 0xd8, 0x20, 0x1f, 0xe6, 0xed, 0x55,
-0xab, 0x23, 0x2b, 0x2d, 0x22, 0x32, 0xbb, 0xbb,
-0x37, 0xcd, 0x03, 0xc1, 0xae, 0xa9, 0xc7, 0x7c,
-0xbd, 0x85, 0x76, 0x78, 0x51, 0xdc, 0xe1, 0x96,
-0xcf, 0xb9, 0x0d, 0x6b, 0xcb, 0x52, 0xdd, 0x26,
-0x11, 0xc5, 0x90, 0x11, 0x5b, 0xae, 0xad, 0x4a,
-0x14, 0x71, 0x3f, 0x16, 0xf9, 0x2d, 0x0d, 0xb7,
-0x2b, 0x67, 0x3b, 0x6b, 0x62, 0x11, 0x68, 0xca,
-0x87, 0x91, 0xcf, 0x18, 0xda, 0x76, 0x59, 0xb8,
-0xfd, 0xaa, 0x11, 0xc4, 0x03, 0x14, 0x38, 0x79,
-0x28, 0xec, 0x48, 0xac, 0x2b, 0x89, 0xd3, 0xb4,
-0x14, 0x7a, 0x4e, 0x7a, 0x78, 0xda, 0xfb, 0x79,
-0xd6, 0x15, 0xd9, 0x69, 0x6a, 0x71, 0x47, 0xca,
-0x69, 0xc3, 0x4d, 0xfd, 0xc8, 0x2e, 0x4f, 0x43,
-0x2f, 0x18, 0xf6, 0xfe, 0xcd, 0xf2, 0x55, 0x11,
-0xc6, 0x0d, 0xb0, 0xe3, 0x00, 0x96, 0x06, 0xf0,
-0x82, 0x00, 0x76, 0x15, 0xe0, 0x70, 0xf9, 0x9a,
-0x28, 0x80, 0x2c, 0x76, 0xfd, 0x93, 0x9f, 0x8d,
-0x7e, 0xc9, 0x56, 0x00, 0x71, 0x77, 0x08, 0x90,
-0x60, 0x2a, 0xa0, 0x54, 0x28, 0x54, 0x2c, 0xf9,
-0xe7, 0x36, 0xbc, 0xe3, 0x23, 0x83, 0x45, 0x3d,
-0xd6, 0xaa, 0x65, 0x24, 0xc5, 0x4e, 0xeb, 0xbd,
-0xbb, 0xb9, 0xc6, 0x54, 0xf0, 0x01, 0xd2, 0xea,
-0xbd, 0xaa, 0xda, 0xa3, 0xeb, 0x43, 0x2b, 0xc8,
-0x8a, 0x9b, 0xc1, 0xad, 0x78, 0xc5, 0x39, 0x86,
-0x91, 0x04, 0x12, 0xc7, 0x36, 0x16, 0xc7, 0x5d,
-0xdd, 0x9c, 0xaa, 0xff, 0x41, 0xf9, 0x9c, 0x74,
-0x3d, 0x81, 0x6c, 0x74, 0x5b, 0xb4, 0xff, 0x3e,
-0xce, 0x52, 0x49, 0x2b, 0xc8, 0x45, 0x51, 0x22,
-0xff, 0x29, 0xb3, 0x36, 0x14, 0x43, 0x37, 0x62,
-0x67, 0x50, 0xf9, 0xe7, 0x15, 0x75, 0x49, 0x6b,
-0x54, 0x56, 0x16, 0xd7, 0x1a, 0xc2, 0x4e, 0xa7,
-0xa4, 0xf2, 0xdf, 0xad, 0x47, 0xd6, 0xd6, 0x85,
-0x33, 0x6a, 0xaa, 0xea, 0xe6, 0x6e, 0x66, 0x9d,
-0x78, 0xf0, 0xe8, 0x74, 0x98, 0xd2, 0x00, 0x9e,
-0x39, 0x77, 0x45, 0x72, 0x36, 0xec, 0x49, 0x3d,
-0x25, 0x9b, 0xae, 0x1e, 0xa0, 0x3e, 0xb2, 0xb5,
-0x7e, 0x6f, 0xe1, 0x30, 0xa5, 0x13, 0x6c, 0xdb,
-0xef, 0xca, 0x33, 0x13, 0x57, 0x70, 0xa3, 0x08,
-0xb3, 0xd3, 0xd3, 0x8c, 0x0e, 0x99, 0xf5, 0x8e,
-0x8c, 0x52, 0x01, 0x87, 0xec, 0x28, 0x80, 0xdd,
-0x2f, 0x88, 0x54, 0x01, 0x1e, 0x21, 0x1e, 0xc0,
-0x91, 0x83, 0x2f, 0x7d, 0x7a, 0xf0, 0x9a, 0xd9,
-0xe0, 0xe8, 0x21, 0x64, 0xfd, 0xbf, 0x14, 0xc5,
-0x7c, 0x29, 0x4a, 0x6a, 0x00, 0x4f, 0x33, 0xf6,
-0xbf, 0xaf, 0x0a, 0x20, 0x37, 0x3f, 0x2b, 0xb9,
-0xf9, 0x7e, 0x95, 0xb9, 0x94, 0x5e, 0x5b, 0x8e,
-0xad, 0xb6, 0x23, 0x82, 0x01, 0x58, 0xea, 0x55,
-0x6f, 0x1f, 0xab, 0x19, 0x53, 0xcd, 0x01, 0xae,
-0x47, 0x33, 0xe3, 0xdf, 0x14, 0x90, 0x8d, 0x2c,
-0xa3, 0x23, 0xde, 0xae, 0x07, 0x75, 0x27, 0x9a,
-0x53, 0x2d, 0x7b, 0xcd, 0x9c, 0x99, 0x58, 0xae,
-0x11, 0xdf, 0x25, 0xf8, 0x91, 0xd0, 0xe4, 0xfb,
-0x5d, 0x4d, 0x9e, 0x09, 0xa2, 0x70, 0x2e, 0x8a,
-0x0a, 0x67, 0x55, 0x7e, 0x63, 0x4a, 0x9d, 0xe1,
-0x65, 0x24, 0x8a, 0xeb, 0x82, 0xfd, 0x97, 0xdc,
-0x8d, 0xa8, 0x99, 0x5d, 0xc6, 0x75, 0x05, 0xe1,
-0x46, 0xf4, 0x63, 0x8d, 0xdf, 0xf7, 0x28, 0x2e,
-0x02, 0xda, 0x69, 0x93, 0xbf, 0xa0, 0x6e, 0xdc,
-0x84, 0xa1, 0xaa, 0x0e, 0x2f, 0x95, 0x05, 0x73,
-0xa1, 0x1a, 0x6a, 0x63, 0x57, 0x39, 0x1c, 0xef,
-0x3a, 0x34, 0xcd, 0x8a, 0xba, 0x23, 0x7d, 0xe4,
-0x93, 0x6b, 0xcf, 0x67, 0x29, 0x6f, 0xc0, 0x5e,
-0x86, 0x96, 0x58, 0x46, 0x4f, 0xb8, 0xda, 0x63,
-0xd6, 0xae, 0x0a, 0x50, 0x51, 0x42, 0x4f, 0x75,
-0x38, 0x72, 0x2d, 0x84, 0x0f, 0xbc, 0xbd, 0xbb,
-0x1a, 0x80, 0xab, 0x24, 0x78, 0x2a, 0xe0, 0x50,
-0xd8, 0x4d, 0x0a, 0xc6, 0xed, 0x00, 0x58, 0x01,
-0xe0, 0xc1, 0xc1, 0x0e, 0x9f, 0x78, 0xf2, 0xe0,
-0x35, 0x19, 0x0f, 0x30, 0xd1, 0xfd, 0x5e, 0x32,
-0x6a, 0x43, 0x1c, 0x80, 0xb1, 0x78, 0x3a, 0x3e,
-0x48, 0x17, 0xa0, 0x52, 0xa7, 0x81, 0xfc, 0x7f,
-0x6d, 0x5d, 0xb0, 0xa6, 0xaa, 0x8f, 0x36, 0x4f,
-0x59, 0xc5, 0xae, 0x2c, 0xc8, 0x50, 0xaf, 0xdb,
-0x1f, 0x2d, 0xa8, 0x53, 0x03, 0xca, 0xdc, 0xba,
-0xaf, 0x35, 0x49, 0x44, 0x5a, 0x2b, 0x59, 0x54,
-0x8b, 0x0f, 0xee, 0xc5, 0x3b, 0x8e, 0xe9, 0x84,
-0x91, 0x68, 0xc5, 0x16, 0xda, 0xe2, 0xb1, 0x07,
-0xa2, 0x39, 0x35, 0x14, 0xec, 0x9a, 0x7a, 0x14,
-0xcd, 0x04, 0x76, 0x96, 0xc4, 0x1d, 0xfa, 0x39,
-0x4b, 0xd9, 0x06, 0xf2, 0xc6, 0x90, 0x28, 0x0a,
-0x77, 0x43, 0x0c, 0x3d, 0x24, 0xeb, 0xa3, 0xe8,
-0x46, 0x14, 0x06, 0x3f, 0x99, 0x36, 0xbf, 0xef,
-0x5a, 0x04, 0xdb, 0xff, 0x19, 0xd1, 0xa1, 0x9a,
-0x93, 0x1c, 0x61, 0x49, 0x33, 0xd7, 0x24, 0x41,
-0x07, 0x75, 0xb3, 0xd9, 0x92, 0x2c, 0x1d, 0x80,
-0xa3, 0x61, 0xda, 0xe0, 0x0b, 0x0e, 0xbc, 0x6b,
-0x8d, 0x5d, 0x15, 0xe1, 0x85, 0x03, 0x1c, 0x7b,
-0xee, 0x48, 0xf4, 0xec, 0x34, 0xad, 0x21, 0xc2,
-0xd3, 0xb4, 0xec, 0x3a, 0xba, 0x40, 0xf0, 0xe9,
-0xc3, 0x94, 0x3b, 0x30, 0x4b, 0xad, 0x45, 0x1d,
-0x8e, 0xa7, 0x8e, 0x9c, 0x8d, 0x7b, 0x2e, 0x00,
-0x69, 0x09, 0x20, 0x83, 0x04, 0xdc, 0x8d, 0x83,
-0x00, 0x76, 0x7f, 0x20, 0x5c, 0x05, 0xf8, 0xd7,
-0x57, 0x7f, 0x28, 0x80, 0x46, 0x0a, 0x09, 0x7d,
-0x34, 0x9a, 0xc2, 0x20, 0x0f, 0x00, 0x57, 0x00,
-0xdc, 0x3e, 0x00, 0x01, 0x23, 0x80, 0xd9, 0xc6,
-0x72, 0x6b, 0x14, 0x4b, 0x13, 0x7f, 0x43, 0x7d,
-0x82, 0x5d, 0x51, 0xdd, 0x2a, 0x76, 0x82, 0xc3,
-0x10, 0xf1, 0x8f, 0xfe, 0x14, 0x1b, 0x53, 0x92,
-0x06, 0x83, 0x29, 0xec, 0x35, 0xe2, 0x07, 0x7a,
-0x4e, 0x35, 0xa7, 0x78, 0x13, 0x69, 0xfa, 0x35,
-0x3f, 0x55, 0x74, 0x5c, 0xa9, 0x6e, 0xe8, 0x72,
-0xff, 0x5f, 0xb6, 0x9b, 0x8e, 0xbd, 0xa6, 0x57,
-0x65, 0x1e, 0xdc, 0x35, 0xc3, 0x6b, 0xf8, 0x44,
-0xed, 0xfc, 0x09, 0x99, 0xc8, 0x59, 0xca, 0x2c,
-0xe9, 0x82, 0xb9, 0x6c, 0xfb, 0x28, 0xcb, 0x44,
-0x03, 0xdb, 0xff, 0x86, 0x10, 0xdb, 0x90, 0x98,
-0xe2, 0xb1, 0x48, 0x67, 0x79, 0xab, 0xb3, 0x14,
-0xd9, 0x19, 0xf4, 0x64, 0x04, 0x45, 0x9d, 0xd0,
-0x97, 0x57, 0x6a, 0xda, 0xb6, 0xa8, 0x50, 0x65,
-0xfe, 0x4e, 0x74, 0x27, 0x82, 0xac, 0x05, 0xbf,
-0x68, 0x53, 0xdd, 0x34, 0x02, 0x35, 0x00, 0x8b,
-0x7c, 0xe2, 0x55, 0x56, 0x64, 0xd9, 0x00, 0x9e,
-0xf7, 0x8b, 0x2b, 0xf8, 0xb3, 0xfc, 0x37, 0xb3,
-0x9c, 0x08, 0x33, 0x91, 0x40, 0xea, 0x0d, 0x5d,
-0x05, 0x90, 0x35, 0x27, 0xb8, 0xbf, 0xda, 0x7b,
-0x98, 0xf5, 0x5c, 0x7e, 0x26, 0x1a, 0xc1, 0xb6,
-0x09, 0x1e, 0x3a, 0xe4, 0xd4, 0x01, 0x88, 0x02,
-0xb0, 0x5b, 0x01, 0x4e, 0x9c, 0x78, 0xe9, 0xc4,
-0x37, 0x06, 0xbb, 0x2f, 0x83, 0xd3, 0xac, 0xb8,
-0xe2, 0x7f, 0x06, 0xfd, 0x11, 0x07, 0x20, 0xfd,
-0xf4, 0x60, 0x19, 0x00, 0x09, 0xe4, 0x4d, 0xbf,
-0x57, 0x9b, 0xd1, 0x05, 0xff, 0x5f, 0xea, 0xfc,
-0x29, 0xca, 0xf7, 0xf4, 0x4e, 0xc5, 0x2a, 0x76,
-0xdc, 0xc1, 0x94, 0xc7, 0xfc, 0x76, 0x91, 0xd3,
-0xa7, 0x24, 0x12, 0xd7, 0x44, 0x3a, 0x41, 0x55,
-0x0d, 0x1b, 0x55, 0x94, 0x66, 0xa3, 0xf2, 0xac,
-0x74, 0x73, 0x93, 0x7a, 0xcb, 0x0a, 0x7c, 0xfb,
-0x5c, 0x14, 0xe4, 0x69, 0x60, 0x8d, 0x62, 0xfd,
-0xe1, 0x0f, 0x6e, 0x8d, 0x17, 0x55, 0x99, 0x91,
-0xee, 0xea, 0x61, 0xff, 0x55, 0x6b, 0x5d, 0x55,
-0xb5, 0xf4, 0x92, 0x6a, 0x29, 0x27, 0x02, 0x3a,
-0xda, 0xc1, 0x03, 0x5c, 0x78, 0x87, 0x31, 0xd9,
-0x0e, 0xfd, 0x9c, 0xa5, 0xa1, 0x08, 0xae, 0x8d,
-0x6d, 0x0b, 0xae, 0xb8, 0x24, 0xf4, 0x90, 0x8e,
-0x64, 0xe4, 0x37, 0xc2, 0xbe, 0x0c, 0xaa, 0x7d,
-0x3a, 0xce, 0xa3, 0x49, 0xce, 0x0c, 0xbd, 0x13,
-0x14, 0x35, 0x52, 0xa8, 0xd6, 0x4e, 0xf9, 0x7b,
-0x24, 0x6b, 0xa5, 0xac, 0xa8, 0x05, 0x51, 0xe7,
-0x34, 0x91, 0xfb, 0x3f, 0xbc, 0xdb, 0x74, 0xb3,
-0x47, 0x68, 0x33, 0x4f, 0x07, 0x01, 0x9d, 0x0a,
-0x00, 0x6d, 0xee, 0x3d, 0x19, 0xa7, 0x7d, 0x00,
-0x46, 0x84, 0x5d, 0xb1, 0x9d, 0xa6, 0xb4, 0x01,
-0x15, 0xdb, 0xa7, 0x43, 0x0c, 0x61, 0xf7, 0x2d,
-0xd3, 0x4c, 0x40, 0x2d, 0x3d, 0xeb, 0x56, 0x30,
-0x5c, 0xd3, 0x3f, 0xcd, 0x06, 0x02, 0x3d, 0x05,
-0x70, 0x2b, 0xc9, 0x05, 0xc4, 0xa9, 0x80, 0x44,
-0x01, 0xfc, 0x93, 0xab, 0xdd, 0x11, 0xb0, 0xfd,
-0xd4, 0xf7, 0xbe, 0x94, 0x24, 0xc2, 0x1f, 0x3a,
-0x43, 0x3c, 0x00, 0x2c, 0xff, 0xe9, 0xb8, 0x3b,
-0x08, 0x70, 0x10, 0x17, 0xa0, 0x85, 0xa5, 0x09,
-0x2b, 0x7f, 0xde, 0xe2, 0xf8, 0x04, 0xbb, 0xc6,
-0x22, 0x19, 0x6c, 0x76, 0xd6, 0x85, 0x26, 0x2a,
-0xbf, 0x06, 0x43, 0x65, 0x4e, 0x6f, 0x4a, 0x04,
-0x0e, 0x95, 0xc4, 0x4d, 0x63, 0xc7, 0xac, 0xd7,
-0x75, 0xbd, 0xac, 0xd7, 0xeb, 0xb8, 0x41, 0xdf,
-0x52, 0x41, 0x5e, 0xc9, 0x52, 0x87, 0xa4, 0x47,
-0x3f, 0x67, 0xae, 0x58, 0x95, 0x6a, 0x89, 0xe1,
-0xc3, 0xc2, 0xba, 0xb9, 0x69, 0xe0, 0x07, 0x52,
-0x2d, 0xa8, 0x54, 0xe2, 0xff, 0xcd, 0x82, 0xbd,
-0x1d, 0x5c, 0x65, 0x8e, 0xe1, 0xe6, 0x35, 0x69,
-0xd3, 0x01, 0x11, 0x79, 0xa2, 0x8c, 0x36, 0x0d,
-0xfa, 0x9f, 0xa3, 0xa1, 0x8c, 0x66, 0x47, 0x76,
-0x38, 0xbd, 0xc0, 0xce, 0x12, 0xda, 0x61, 0x59,
-0xb0, 0xd1, 0x0d, 0x1f, 0x67, 0xa9, 0xa2, 0x57,
-0xac, 0xba, 0x0d, 0x7f, 0x80, 0xa2, 0x29, 0x8e,
-0x37, 0xb4, 0x8a, 0xd5, 0x6c, 0x27, 0xc9, 0xa6,
-0x54, 0xad, 0xeb, 0xe0, 0x5d, 0x03, 0xfc, 0x44,
-0x7f, 0xe8, 0xad, 0x1a, 0x79, 0x86, 0xdb, 0x52,
-0xde, 0xb4, 0x15, 0x2a, 0x7f, 0x3d, 0x63, 0xe2,
-0x01, 0xc6, 0xdb, 0x75, 0x59, 0x7b, 0x26, 0xba,
-0x38, 0x03, 0x07, 0x47, 0x1c, 0xde, 0xf5, 0x2a,
-0x65, 0xaf, 0x67, 0xa7, 0x69, 0x01, 0xf6, 0x6c,
-0x39, 0x1b, 0x13, 0xa4, 0x65, 0x97, 0x8e, 0xe4,
-0x51, 0x3f, 0xcf, 0x7a, 0x6b, 0xb2, 0x75, 0x0b,
-0xc6, 0xa9, 0xe7, 0x32, 0x03, 0x3c, 0xff, 0x62,
-0x96, 0x51, 0x45, 0xb3, 0x9e, 0xba, 0xa0, 0xdc,
-0x0f, 0xfc, 0x24, 0x1d, 0x87, 0xc3, 0xac, 0x02,
-0x40, 0x55, 0x00, 0x5c, 0x03, 0x38, 0x72, 0xe2,
-0xd7, 0x25, 0xa5, 0x6c, 0x1f, 0x51, 0xab, 0xdd,
-0x64, 0xf4, 0xa9, 0x54, 0x2a, 0x44, 0x20, 0xf2,
-0x8f, 0x15, 0x80, 0xeb, 0xff, 0x07, 0x52, 0xc8,
-0xf9, 0x11, 0xeb, 0xe6, 0x0b, 0xa5, 0xc8, 0xe7,
-0x7e, 0xa6, 0x1b, 0x99, 0xe5, 0x17, 0x3b, 0x85,
-0x75, 0xc1, 0xec, 0x48, 0x9a, 0xa8, 0x09, 0x39,
-0x1d, 0x15, 0x3b, 0x51, 0x52, 0x51, 0x79, 0x34,
-0xeb, 0x91, 0xf5, 0xc6, 0xf6, 0xc5, 0xf6, 0xc5,
-0xed, 0xed, 0x46, 0xa4, 0x5c, 0x7f, 0xdc, 0xe0,
-0x93, 0x59, 0x36, 0xa5, 0x19, 0x65, 0x38, 0x8a,
-0x17, 0xb3, 0xa2, 0xf8, 0xc2, 0x46, 0xd1, 0x56,
-0x77, 0x4c, 0xd3, 0x1c, 0x31, 0xeb, 0x23, 0x75,
-0xac, 0x5b, 0xea, 0xba, 0x89, 0x54, 0x8b, 0x23,
-0xff, 0x49, 0x7d, 0xb4, 0x82, 0x8f, 0xbd, 0xbe,
-0x29, 0x56, 0x13, 0x9a, 0x58, 0x1f, 0xa1, 0x55,
-0xb1, 0x42, 0xaa, 0x63, 0xd0, 0xba, 0x75, 0x07,
-0xfc, 0x4e, 0xd7, 0xd5, 0x85, 0x41, 0x4d, 0x5c,
-0xd2, 0xad, 0x2c, 0x71, 0x7b, 0xf3, 0xab, 0x2c,
-0xe5, 0x75, 0x12, 0xdb, 0xd0, 0x85, 0x0b, 0x26,
-0x9a, 0xe2, 0xf8, 0x8c, 0x36, 0xb4, 0xd2, 0x59,
-0x93, 0xc9, 0x3f, 0x3e, 0x15, 0xeb, 0x5c, 0xd0,
-0x45, 0xd0, 0x4d, 0xdd, 0x7a, 0x43, 0xde, 0xd7,
-0xeb, 0x86, 0xce, 0x67, 0x76, 0x55, 0xcd, 0x56,
-0x2b, 0x8b, 0x8a, 0x80, 0xe0, 0x82, 0x49, 0xfc,
-0x9d, 0x90, 0xd1, 0x40, 0xbb, 0xe4, 0xe5, 0x1f,
-0x69, 0x1b, 0xbf, 0xdb, 0x1f, 0x80, 0x63, 0x61,
-0x4e, 0xd8, 0x59, 0x7b, 0x4e, 0x09, 0xac, 0x63,
-0x7a, 0xe9, 0x25, 0xa9, 0xa8, 0xdd, 0x2c, 0xa3,
-0x25, 0xc2, 0x94, 0x1d, 0xa7, 0xf4, 0x05, 0xb5,
-0x29, 0xa6, 0xfa, 0x4f, 0xbb, 0xfb, 0x9e, 0xa8,
-0xd3, 0xaa, 0xc8, 0xab, 0x0a, 0xb8, 0x4b, 0xda,
-0x6e, 0x80, 0x13, 0x04, 0x20, 0x55, 0x00, 0xdc,
-0x0a, 0x78, 0x3f, 0xce, 0x04, 0x3e, 0xf1, 0x5f,
-0x47, 0x84, 0x3b, 0xb3, 0x9f, 0x14, 0xa2, 0xc4,
-0xf9, 0x0f, 0x85, 0x2e, 0x5d, 0xba, 0x84, 0x14,
-0xc0, 0x99, 0x14, 0x92, 0x7f, 0x2f, 0x03, 0x20,
-0xe0, 0x2c, 0x20, 0xe8, 0xe6, 0xaf, 0xc4, 0x2c,
-0xe5, 0xcf, 0x96, 0x39, 0x9f, 0x70, 0x4e, 0xbc,
-0xad, 0x0d, 0x25, 0x16, 0x91, 0xd9, 0xe1, 0x4b,
-0x8b, 0x4f, 0x83, 0x61, 0x11, 0x89, 0xbf, 0xc1,
-0x8b, 0x1b, 0x36, 0xb4, 0x66, 0x7d, 0x7d, 0x66,
-0xa9, 0xb0, 0xb6, 0x90, 0x41, 0x8f, 0x85, 0xb5,
-0x42, 0xfb, 0x74, 0xa4, 0x6e, 0xe7, 0x21, 0x52,
-0x1e, 0x40, 0x5e, 0x72, 0x02, 0x13, 0x46, 0x02,
-0x1d, 0xf1, 0x92, 0x24, 0x8a, 0xaf, 0x36, 0x8d,
-0x1d, 0xbd, 0xbc, 0xde, 0x68, 0x9c, 0x9e, 0x99,
-0x39, 0xbd, 0xdd, 0xd8, 0x6e, 0x9c, 0x6e, 0xe0,
-0xff, 0xa6, 0x53, 0xdb, 0x1e, 0xd3, 0x3b, 0xa8,
-0x7a, 0xad, 0x9d, 0x96, 0x36, 0x00, 0xe0, 0x43,
-0x2a, 0x97, 0xd7, 0xf1, 0x9a, 0x48, 0x1f, 0x6d,
-0xcf, 0x34, 0xf0, 0xff, 0x19, 0xe7, 0x89, 0xd9,
-0x19, 0xd8, 0xc5, 0x7d, 0xc6, 0xf6, 0xd1, 0x85,
-0x7c, 0x39, 0x41, 0x06, 0x6d, 0xe6, 0x48, 0x6c,
-0x43, 0xf4, 0xc6, 0x24, 0xa1, 0x87, 0x52, 0x7b,
-0x98, 0xb4, 0x15, 0x3e, 0xbe, 0x29, 0x3b, 0x95,
-0x11, 0x3d, 0xb2, 0xbe, 0x8e, 0x4e, 0x03, 0x1d,
-0x3c, 0xba, 0x18, 0xe8, 0x6c, 0x66, 0xf0, 0x39,
-0x9d, 0x46, 0x57, 0x46, 0xdf, 0x89, 0x72, 0x5b,
-0xca, 0x19, 0x2b, 0x56, 0xb3, 0x28, 0xbf, 0x53,
-0x89, 0xbf, 0x93, 0x50, 0xd7, 0x24, 0xd5, 0x99,
-0xa6, 0xd1, 0x37, 0xfd, 0xa3, 0x07, 0xf7, 0x86,
-0x05, 0xb9, 0xa4, 0x7c, 0x78, 0xc7, 0x85, 0x0f,
-0xbb, 0x96, 0x98, 0x56, 0x0b, 0x64, 0x71, 0x2a,
-0x28, 0x48, 0x6f, 0xc3, 0x5d, 0x9d, 0x72, 0x0c,
-0x3c, 0x01, 0xef, 0x4b, 0x98, 0xf6, 0x1d, 0xbc,
-0x30, 0x64, 0xd8, 0x0b, 0x33, 0x7a, 0x95, 0x00,
-0x41, 0x01, 0x90, 0x18, 0xe0, 0x91, 0x7f, 0x21,
-0x16, 0xb3, 0x7d, 0x04, 0xd5, 0xfe, 0x2d, 0xf1,
-0x2f, 0x16, 0x2f, 0x14, 0x2f, 0x5d, 0x3a, 0x83,
-0x23, 0x00, 0x5d, 0xb7, 0x0f, 0x80, 0x12, 0x6c,
-0x1c, 0xe0, 0x39, 0x1c, 0xa2, 0x5e, 0x95, 0x44,
-0x74, 0xfd, 0x52, 0xd4, 0x0a, 0x05, 0x64, 0x43,
-0x25, 0x4d, 0x54, 0x86, 0xb4, 0xc1, 0x30, 0x1a,
-0x51, 0x4d, 0xd1, 0x51, 0x47, 0xf6, 0x49, 0x2f,
-0x37, 0x96, 0x16, 0x56, 0x3b, 0x8b, 0x35, 0xc2,
-0x62, 0x67, 0x41, 0x5b, 0xda, 0x2e, 0xd7, 0x91,
-0xaa, 0x60, 0x8e, 0xc3, 0x90, 0x84, 0xa0, 0x8b,
-0x23, 0xb1, 0xe5, 0x98, 0x2c, 0x03, 0x01, 0xf9,
-0x14, 0x3b, 0xfa, 0x7a, 0xbb, 0xb0, 0xa6, 0x69,
-0x6b, 0x0b, 0xe4, 0x6f, 0x81, 0xfc, 0x45, 0x1c,
-0x6f, 0x3b, 0xad, 0x77, 0x2a, 0xe8, 0x64, 0xdb,
-0x65, 0x49, 0xee, 0x40, 0x53, 0xdd, 0x34, 0xcb,
-0x78, 0x65, 0xb4, 0x86, 0xb6, 0x40, 0xd0, 0xd0,
-0xff, 0x35, 0xf2, 0x24, 0x9f, 0x16, 0x74, 0x21,
-0x72, 0xde, 0x0f, 0xe4, 0x2c, 0x55, 0x62, 0xa8,
-0xb2, 0x24, 0xd8, 0x7f, 0x7f, 0x67, 0x09, 0x7b,
-0x63, 0x92, 0x16, 0x4a, 0xd1, 0x14, 0x97, 0xb4,
-0x36, 0xce, 0x83, 0x12, 0x15, 0x31, 0xe9, 0x4f,
-0x59, 0xde, 0x5e, 0xc2, 0x97, 0x01, 0x3f, 0xc8,
-0xa5, 0x40, 0x0f, 0xf2, 0xaa, 0xad, 0xb5, 0x85,
-0xcc, 0xae, 0x09, 0x73, 0xab, 0x55, 0xcb, 0x5c,
-0x7c, 0x8f, 0xb0, 0xd3, 0x8c, 0xe4, 0x84, 0xf4,
-0x35, 0xa4, 0x3e, 0xf9, 0xa6, 0xdc, 0x4d, 0x55,
-0x95, 0xb5, 0x15, 0x04, 0xe4, 0xc1, 0xbb, 0x3d,
-0x01, 0x77, 0x83, 0xfd, 0x54, 0x62, 0xbf, 0xf3,
-0xe5, 0xac, 0x53, 0x43, 0xa0, 0xd5, 0x02, 0x23,
-0xb0, 0xac, 0x89, 0x67, 0x72, 0x02, 0xdd, 0x60,
-0xe1, 0xb4, 0xd3, 0x0c, 0x40, 0xfb, 0x04, 0x52,
-0x17, 0x80, 0x51, 0x34, 0xee, 0x0e, 0xec, 0x2f,
-0xbc, 0x16, 0x04, 0x4b, 0x01, 0x38, 0xdd, 0x01,
-0x48, 0x1e, 0x00, 0xee, 0x0b, 0x80, 0x15, 0xc0,
-0x63, 0x9b, 0x7c, 0x31, 0xdb, 0x47, 0x8c, 0x22,
-0x36, 0xff, 0x44, 0xfa, 0x11, 0x45, 0xe4, 0x02,
-0x20, 0x07, 0xe0, 0x7b, 0x56, 0x00, 0x20, 0x78,
-0x0d, 0x20, 0xa7, 0x93, 0x9c, 0x18, 0x51, 0xa7,
-0xfb, 0x04, 0xbb, 0x4a, 0x85, 0x76, 0x85, 0x34,
-0x51, 0xf3, 0xee, 0xb7, 0xb4, 0xc1, 0x70, 0xac,
-0xa0, 0xea, 0x82, 0xf1, 0x6b, 0x12, 0x39, 0x5d,
-0xd2, 0x56, 0x17, 0x6b, 0x67, 0x13, 0x2b, 0x2b,
-0xcb, 0xad, 0x95, 0x95, 0x95, 0xad, 0xd8, 0x62,
-0x66, 0xad, 0xbd, 0xae, 0xf3, 0xae, 0x65, 0x5d,
-0xdc, 0x6a, 0xca, 0xac, 0xb5, 0x62, 0x19, 0x49,
-0x1b, 0x34, 0x2e, 0xf7, 0xeb, 0x85, 0x85, 0xd5,
-0xc5, 0xc5, 0xc5, 0x6c, 0x36, 0x8b, 0xff, 0x30,
-0x8b, 0xb5, 0x25, 0xc7, 0xdb, 0x8e, 0x47, 0x32,
-0xf9, 0xe5, 0xad, 0x8e, 0xd6, 0xb0, 0x8e, 0x89,
-0x3d, 0x01, 0xd5, 0xa8, 0x97, 0xdb, 0x6b, 0x99,
-0x55, 0xb4, 0x42, 0xb6, 0x96, 0x45, 0xcf, 0x9a,
-0x0b, 0xf9, 0x5c, 0xcb, 0x36, 0xfc, 0xa2, 0xf6,
-0xbe, 0x90, 0x3a, 0x3a, 0x72, 0x96, 0x1e, 0xe7,
-0xfd, 0x79, 0xc1, 0x06, 0xdb, 0x14, 0xf5, 0xc4,
-0x32, 0xbe, 0x1b, 0x42, 0x5a, 0xbf, 0x90, 0xb4,
-0x87, 0x5b, 0x6e, 0xad, 0xb4, 0x9d, 0x4d, 0xbe,
-0x60, 0x34, 0x55, 0x13, 0x9d, 0x09, 0xd2, 0xad,
-0xce, 0x25, 0x60, 0x58, 0x10, 0x02, 0xf5, 0xb8,
-0x95, 0xd2, 0x6a, 0x16, 0xe5, 0x76, 0x2a, 0xb6,
-0x52, 0x4e, 0xa8, 0x6d, 0x49, 0xc4, 0x41, 0x35,
-0x54, 0xdd, 0x37, 0xfa, 0x1b, 0x80, 0x23, 0x61,
-0x2f, 0x2e, 0xef, 0xb9, 0xdb, 0x8e, 0xe5, 0x0e,
-0xd3, 0x5f, 0x92, 0x77, 0xae, 0x5f, 0x3e, 0x4b,
-0xfb, 0xe5, 0x7c, 0x74, 0xc0, 0x75, 0xe2, 0xa9,
-0xf8, 0x21, 0xab, 0x22, 0xe8, 0xaa, 0x83, 0x67,
-0xf1, 0xa9, 0x0c, 0x00, 0xcf, 0xd7, 0x70, 0x74,
-0x13, 0xa5, 0x75, 0xc2, 0x82, 0x07, 0x80, 0x47,
-0x0e, 0xbf, 0xd5, 0x6e, 0x04, 0x20, 0x35, 0x80,
-0xc3, 0xa7, 0xf9, 0x7b, 0xb3, 0x8f, 0xb4, 0x91,
-0xfb, 0x8f, 0xad, 0xff, 0x85, 0x09, 0xcc, 0x85,
-0x22, 0x91, 0x7f, 0xdc, 0x09, 0x88, 0xee, 0x03,
-0xd8, 0x57, 0x03, 0xd8, 0xd6, 0x54, 0xbc, 0xf9,
-0x1d, 0x9f, 0x14, 0x15, 0xad, 0x3d, 0xb4, 0x42,
-0x12, 0x06, 0xf8, 0xe3, 0x91, 0x34, 0x18, 0x96,
-0x62, 0xaa, 0x29, 0x36, 0x2b, 0x21, 0x4b, 0xab,
-0x6f, 0x17, 0x32, 0x8b, 0xb1, 0x44, 0x6b, 0x39,
-0x4f, 0xa8, 0x54, 0x96, 0x57, 0x56, 0x6a, 0x8b,
-0x99, 0x42, 0x03, 0xb7, 0x2b, 0x32, 0xa5, 0xab,
-0xf1, 0x3d, 0x7e, 0xa3, 0x51, 0x12, 0x54, 0xc7,
-0x19, 0x08, 0x42, 0xc2, 0x3a, 0x2a, 0xf7, 0x0b,
-0x8b, 0x35, 0xdc, 0x23, 0x8e, 0x46, 0x33, 0x6d,
-0x6f, 0x3b, 0xbe, 0xad, 0x4d, 0xe6, 0x57, 0x6a,
-0xab, 0x05, 0x31, 0x7f, 0x0d, 0x2b, 0x0f, 0x73,
-0x7d, 0x69, 0xa1, 0x53, 0xdb, 0x4a, 0xac, 0x60,
-0x85, 0xd4, 0xb2, 0x57, 0x6e, 0x79, 0x9f, 0xb4,
-0x1e, 0x4d, 0x9c, 0x72, 0xe2, 0xed, 0xb5, 0x4a,
-0x82, 0xd4, 0xd1, 0xb9, 0xbd, 0xc9, 0x9d, 0x25,
-0x54, 0xbd, 0xd6, 0x13, 0x72, 0x57, 0x5c, 0xe2,
-0x5e, 0x93, 0x3c, 0xa8, 0x85, 0xd3, 0x42, 0x65,
-0x1c, 0x9d, 0x49, 0xbd, 0xb1, 0xb6, 0x9a, 0xdd,
-0x5a, 0xa1, 0xae, 0x83, 0xf7, 0x36, 0x2b, 0x28,
-0xea, 0x94, 0x11, 0x6b, 0x91, 0x22, 0xc0, 0xdf,
-0xd2, 0x25, 0x61, 0xa7, 0xa3, 0x86, 0xcc, 0xfd,
-0x57, 0x0d, 0xa1, 0x53, 0xc1, 0x40, 0xbc, 0xff,
-0x10, 0x25, 0x5d, 0x5e, 0xa4, 0x9f, 0x16, 0x36,
-0x4a, 0xb2, 0xa7, 0x3d, 0xf1, 0x73, 0x7f, 0x9d,
-0x9d, 0xf6, 0x7c, 0x7b, 0x5a, 0xb4, 0x6d, 0x8f,
-0x21, 0xcc, 0xaf, 0xec, 0x1a, 0x79, 0xaf, 0xa2,
-0x41, 0x39, 0x1c, 0x61, 0xaa, 0xd6, 0xe0, 0x55,
-0x44, 0xa6, 0xdd, 0xdf, 0xdd, 0x1d, 0x91, 0x3f,
-0xba, 0x0a, 0x60, 0x75, 0x08, 0xb6, 0x5a, 0x01,
-0xb1, 0x03, 0x70, 0x35, 0x2b, 0x00, 0x2d, 0x62,
-0xfe, 0x8b, 0xc5, 0x89, 0x6f, 0xe5, 0x72, 0x97,
-0x2f, 0x63, 0x05, 0x60, 0xb7, 0x00, 0x3c, 0x3d,
-0x48, 0x1f, 0x80, 0x10, 0xb6, 0xa6, 0xb2, 0x7c,
-0x1e, 0xbf, 0x0a, 0xdd, 0x68, 0x03, 0xa7, 0xdf,
-0x89, 0x9d, 0x68, 0x64, 0x0d, 0x86, 0x07, 0x50,
-0x95, 0x9a, 0x17, 0x53, 0x54, 0xf7, 0x37, 0xcb,
-0xdb, 0xa8, 0x7c, 0x9e, 0x45, 0xd2, 0x3f, 0x39,
-0x39, 0x59, 0xad, 0xce, 0x23, 0xf2, 0xf9, 0xe5,
-0x95, 0xb3, 0xd9, 0xd5, 0xb5, 0x8b, 0xc4, 0xba,
-0xd0, 0x1a, 0xa3, 0xc3, 0x1b, 0x5d, 0x12, 0x54,
-0x93, 0x35, 0x7c, 0x21, 0xbb, 0x17, 0x59, 0x5a,
-0xad, 0x25, 0x96, 0x2b, 0xf9, 0x4a, 0xde, 0x7a,
-0x56, 0xf0, 0xdb, 0x8e, 0xd3, 0x34, 0x51, 0x1a,
-0x5e, 0x9b, 0xcc, 0x57, 0x12, 0xd9, 0x85, 0xa5,
-0x88, 0x24, 0x81, 0xd5, 0x30, 0x23, 0x48, 0x7b,
-0xc4, 0x56, 0x5a, 0x68, 0x25, 0x01, 0xfc, 0x55,
-0x26, 0x32, 0xa8, 0x91, 0x2b, 0x0d, 0x93, 0x7c,
-0x3e, 0x49, 0x76, 0xa5, 0x4f, 0x57, 0xc2, 0x14,
-0x49, 0x18, 0xba, 0x18, 0x11, 0xee, 0x86, 0x24,
-0xf4, 0x90, 0x88, 0x0c, 0x91, 0x1b, 0x21, 0x56,
-0x83, 0x76, 0xf4, 0xed, 0x85, 0x45, 0xa2, 0x5c,
-0x2b, 0xf6, 0xc3, 0x3e, 0x07, 0xfc, 0x48, 0x98,
-0xbc, 0xa2, 0xb6, 0x14, 0x6a, 0x5b, 0xdc, 0xa9,
-0xd0, 0x4a, 0xd9, 0xd5, 0x75, 0x49, 0xe3, 0xff,
-0x14, 0xba, 0xc5, 0xbb, 0xc9, 0xfd, 0xf5, 0x38,
-0x3a, 0x3d, 0xed, 0xba, 0x00, 0x9c, 0xc0, 0xb1,
-0xf9, 0xf7, 0x94, 0xec, 0x3a, 0xd2, 0xef, 0x75,
-0xe4, 0x71, 0x7b, 0xf0, 0x52, 0x71, 0x3d, 0x4f,
-0x03, 0xd0, 0x61, 0x04, 0x46, 0xa9, 0x84, 0xd9,
-0xf7, 0x54, 0x5a, 0x11, 0x95, 0x82, 0x38, 0x4b,
-0x39, 0x14, 0x54, 0x4c, 0x91, 0xaa, 0x3d, 0x84,
-0xc9, 0xd8, 0x40, 0xa7, 0x48, 0x5f, 0x00, 0x3b,
-0x04, 0x70, 0xf8, 0xc4, 0xbf, 0xdb, 0xe4, 0x6f,
-0xce, 0xbe, 0x61, 0x4c, 0x58, 0xde, 0xff, 0xc4,
-0xe5, 0xcb, 0xe7, 0x2c, 0x05, 0x40, 0x22, 0x80,
-0x76, 0x06, 0x40, 0xdc, 0x69, 0x01, 0xec, 0xe7,
-0x03, 0x44, 0x47, 0x6a, 0x2d, 0x69, 0x9b, 0xb8,
-0x5f, 0x8a, 0x1a, 0xce, 0x16, 0x93, 0x66, 0x8b,
-0x8a, 0x35, 0xc0, 0xcf, 0x46, 0x0c, 0x49, 0xac,
-0x78, 0x13, 0x15, 0xcf, 0xb5, 0x4e, 0x6d, 0x65,
-0x19, 0x4b, 0x28, 0x96, 0x7f, 0xa4, 0x01, 0xb0,
-0x0e, 0x40, 0x1a, 0xa0, 0xd6, 0x59, 0xbb, 0xc8,
-0x67, 0x16, 0xa9, 0x7c, 0x43, 0x64, 0x57, 0xef,
-0x2c, 0x27, 0x56, 0x65, 0xf2, 0x8f, 0x2c, 0xb8,
-0xd6, 0xd9, 0x42, 0xc5, 0xbe, 0x3a, 0x39, 0x6f,
-0x31, 0x89, 0x37, 0x5c, 0x73, 0x6a, 0xbc, 0x25,
-0x6d, 0xb8, 0x8a, 0x76, 0x73, 0x76, 0x51, 0x6b,
-0x47, 0x1e, 0x17, 0x15, 0x00, 0x3e, 0xae, 0xd5,
-0xda, 0x4a, 0x05, 0x1d, 0x14, 0x5e, 0xb7, 0x3a,
-0xef, 0x32, 0x49, 0x3e, 0x75, 0x7c, 0x9b, 0x38,
-0xfd, 0x28, 0x65, 0xda, 0xcb, 0xc4, 0x59, 0xe2,
-0x23, 0xa0, 0x7e, 0xf2, 0x12, 0x1d, 0x41, 0xa6,
-0x58, 0x96, 0xa1, 0x24, 0x09, 0x3d, 0x24, 0xf4,
-0x21, 0x79, 0x5b, 0x21, 0xaa, 0x06, 0x5d, 0x5c,
-0x40, 0xe7, 0x91, 0x9f, 0x97, 0xb1, 0x6c, 0xf2,
-0x8a, 0x3a, 0x69, 0x35, 0x8b, 0x96, 0x85, 0x66,
-0x1a, 0xc1, 0xdf, 0x99, 0xc3, 0x8d, 0xff, 0xbc,
-0x32, 0x6b, 0xaa, 0x9b, 0xea, 0xc0, 0x9e, 0x11,
-0xcb, 0xc9, 0xb0, 0x6b, 0xa1, 0x67, 0xbd, 0xea,
-0xbe, 0x17, 0x7d, 0x9b, 0xa5, 0xdc, 0x77, 0xe7,
-0x9b, 0x30, 0x25, 0x83, 0x94, 0x62, 0x60, 0x71,
-0xd3, 0x09, 0xbd, 0x58, 0x80, 0x97, 0xde, 0xeb,
-0x55, 0x05, 0xbc, 0xf4, 0x21, 0x5a, 0x3f, 0x84,
-0xe9, 0xad, 0x78, 0xe1, 0x3f, 0xc7, 0x3f, 0x70,
-0xf7, 0x68, 0xb7, 0x02, 0x90, 0x4e, 0xc1, 0x76,
-0x08, 0xe0, 0xd8, 0xed, 0x47, 0x49, 0x1a, 0xd0,
-0x37, 0xd7, 0xa7, 0xae, 0x16, 0x8d, 0x68, 0x32,
-0x85, 0xcc, 0xff, 0xc4, 0xe5, 0xdc, 0xb9, 0x73,
-0x73, 0x07, 0xce, 0xe5, 0x26, 0x8a, 0x97, 0xac,
-0x0a, 0x80, 0x37, 0x0a, 0x50, 0x10, 0xfb, 0x1f,
-0x1d, 0x59, 0x24, 0xf9, 0xbc, 0x26, 0xdf, 0xfd,
-0x7b, 0xdb, 0x2f, 0x45, 0x8d, 0xa4, 0xdf, 0x6e,
-0x8b, 0x29, 0x6a, 0x42, 0x83, 0x61, 0x69, 0x74,
-0x33, 0x52, 0xe6, 0xe3, 0x84, 0xb8, 0x92, 0xbe,
-0x5d, 0x40, 0x6e, 0x76, 0x2c, 0x33, 0xdc, 0xd0,
-0x75, 0x3d, 0xd2, 0xd0, 0x62, 0x15, 0xa2, 0x03,
-0xe6, 0xf3, 0x95, 0x95, 0xd8, 0xaa, 0xb6, 0xcd,
-0x37, 0xcf, 0x97, 0xa3, 0xec, 0x66, 0xd3, 0xba,
-0x93, 0xf8, 0x22, 0xb4, 0x2a, 0xd4, 0xd7, 0xd7,
-0x16, 0x13, 0x95, 0xc9, 0xf9, 0xaa, 0x07, 0x7a,
-0xbf, 0x55, 0x77, 0x6a, 0xbc, 0x99, 0x36, 0xfa,
-0x22, 0xdf, 0xda, 0x5a, 0xd4, 0x2e, 0x0a, 0x8a,
-0xc9, 0x72, 0x00, 0x34, 0x64, 0x37, 0xf3, 0x93,
-0x78, 0xad, 0x79, 0x67, 0xfd, 0x79, 0x67, 0x3b,
-0x35, 0xbf, 0x3e, 0x91, 0xbe, 0x94, 0x46, 0x1b,
-0xc8, 0xdd, 0xc0, 0xc1, 0x12, 0xee, 0xe6, 0xa9,
-0x97, 0xe5, 0x2b, 0x24, 0xf5, 0xac, 0xdc, 0x14,
-0x4b, 0x42, 0x0f, 0x43, 0xf5, 0x65, 0x54, 0x57,
-0x98, 0xd1, 0x85, 0xd6, 0x15, 0xd5, 0x88, 0xb4,
-0x57, 0x6b, 0xf8, 0x34, 0xbc, 0x6b, 0xe0, 0x51,
-0x31, 0x79, 0x45, 0x9d, 0x34, 0x3b, 0x15, 0xdc,
-0x07, 0x5c, 0xd8, 0x29, 0xdf, 0xa1, 0xd7, 0xce,
-0xfd, 0x15, 0xea, 0x73, 0x86, 0x5f, 0x63, 0x51,
-0x50, 0xde, 0x7f, 0x8a, 0xe4, 0xd5, 0x78, 0x52,
-0x47, 0x39, 0xff, 0x52, 0xbb, 0x4b, 0x35, 0xf4,
-0xb9, 0xe1, 0x01, 0xcf, 0x81, 0x60, 0xea, 0xff,
-0x5e, 0xf8, 0xc0, 0x11, 0x7a, 0x77, 0x43, 0xd3,
-0xb4, 0x5e, 0xf0, 0x92, 0x83, 0xbd, 0x1a, 0x03,
-0x5b, 0x01, 0x61, 0xe2, 0x01, 0xd3, 0xee, 0xca,
-0x61, 0x37, 0x0c, 0x70, 0xc8, 0x76, 0x00, 0x6e,
-0xc5, 0x35, 0x00, 0xac, 0x00, 0x4e, 0xdc, 0xf2,
-0xff, 0x4e, 0x5d, 0x2d, 0x62, 0xc4, 0xfc, 0x4f,
-0x4c, 0xe4, 0xce, 0xfd, 0xc1, 0xdc, 0x1f, 0x1c,
-0x98, 0x3b, 0x77, 0x19, 0x29, 0x00, 0x52, 0x01,
-0x48, 0xa7, 0x07, 0x99, 0x06, 0x20, 0xe9, 0x97,
-0xcf, 0xe7, 0x9b, 0xa2, 0x46, 0x42, 0xd4, 0x12,
-0xb3, 0x23, 0x64, 0xc7, 0x4f, 0x18, 0x65, 0x71,
-0x31, 0x2c, 0x65, 0x4b, 0x9d, 0xce, 0x42, 0xc4,
-0x30, 0x1b, 0x99, 0xc4, 0x50, 0xab, 0xa6, 0x45,
-0x8c, 0x91, 0xe1, 0xc4, 0xfc, 0x1c, 0x2a, 0x9a,
-0xbf, 0x89, 0xa3, 0xf3, 0xa8, 0x84, 0x71, 0x0a,
-0x60, 0x91, 0x3d, 0x8b, 0xf4, 0x7a, 0xa6, 0x92,
-0x58, 0x5d, 0x93, 0x0c, 0x00, 0x40, 0x24, 0x78,
-0x2d, 0x93, 0xe9, 0xb0, 0x68, 0x6e, 0xc4, 0x6b,
-0xb4, 0x81, 0xab, 0x1b, 0x95, 0x95, 0x84, 0xc4,
-0xcf, 0xb0, 0xd6, 0xd7, 0xd7, 0x1b, 0x85, 0xc2,
-0x5a, 0x46, 0x5b, 0xc0, 0xad, 0x92, 0xe4, 0x05,
-0xb7, 0x4f, 0x66, 0x32, 0x5a, 0x66, 0x41, 0x1b,
-0x36, 0xa2, 0x83, 0x16, 0xec, 0x2c, 0xe9, 0x5d,
-0x71, 0x5a, 0x94, 0x19, 0x9f, 0x70, 0x79, 0x57,
-0xcf, 0x5a, 0x03, 0x00, 0xf0, 0xe7, 0x26, 0x31,
-0xb0, 0x93, 0x5e, 0x6f, 0x66, 0x5e, 0x01, 0x98,
-0x7a, 0xa3, 0xa0, 0x65, 0x3a, 0xab, 0xdc, 0x85,
-0xe8, 0x8c, 0xa2, 0x67, 0xc6, 0xe0, 0x15, 0x75,
-0xb7, 0x8c, 0x1d, 0xaa, 0x82, 0xa0, 0xaa, 0x85,
-0x56, 0xca, 0xe4, 0x88, 0xbc, 0xeb, 0x9f, 0xb1,
-0x8b, 0x91, 0x3f, 0x58, 0x8e, 0xba, 0x22, 0x46,
-0x49, 0x18, 0x67, 0xdb, 0x59, 0xd1, 0xa3, 0x24,
-0x92, 0xce, 0xcc, 0xa7, 0xa0, 0x43, 0x00, 0xee,
-0x3f, 0xb6, 0x23, 0x9f, 0xa7, 0x23, 0x98, 0x0a,
-0x3f, 0x5b, 0x63, 0xf0, 0x16, 0x75, 0xfb, 0x06,
-0x86, 0x3d, 0xcf, 0xc2, 0xaa, 0x67, 0x38, 0x83,
-0x02, 0xbc, 0x4a, 0x62, 0x00, 0xcf, 0x5b, 0x35,
-0x00, 0xdc, 0x15, 0xf0, 0x5f, 0x5f, 0xad, 0x4e,
-0x80, 0x6a, 0x0e, 0x99, 0xff, 0x4b, 0xc5, 0x6f,
-0xe5, 0xce, 0x1d, 0x98, 0xab, 0xce, 0xcd, 0xff,
-0x01, 0x52, 0x00, 0x56, 0x04, 0xb0, 0xeb, 0xb5,
-0x00, 0x04, 0x69, 0xff, 0xeb, 0x46, 0x56, 0x97,
-0x5f, 0xec, 0x2c, 0x89, 0x21, 0x2a, 0xdf, 0x14,
-0x95, 0x11, 0x9f, 0x6c, 0x11, 0x3e, 0x5b, 0x2c,
-0x5d, 0xd8, 0x69, 0x0b, 0x42, 0x8a, 0x2b, 0xff,
-0x4b, 0xda, 0x9a, 0x6e, 0xb4, 0x2b, 0x29, 0x4b,
-0xc1, 0x94, 0xd2, 0xc5, 0x58, 0xc4, 0x68, 0x27,
-0x88, 0x0b, 0xb0, 0x8c, 0x3c, 0x00, 0x21, 0x3a,
-0x67, 0xb0, 0x15, 0xd6, 0x78, 0xbb, 0x80, 0x83,
-0xea, 0xeb, 0x62, 0x16, 0x9f, 0x19, 0x89, 0xe8,
-0xe2, 0x43, 0x8f, 0x0c, 0x3b, 0x7e, 0xfb, 0xf2,
-0x4e, 0x0d, 0xef, 0x05, 0xf9, 0x19, 0x9d, 0xc2,
-0xb6, 0xce, 0x28, 0x00, 0xb3, 0xbd, 0xdd, 0x6e,
-0x37, 0xda, 0x3d, 0xc9, 0xf8, 0xb4, 0xda, 0xfb,
-0x83, 0xeb, 0xe8, 0xb5, 0xb5, 0x99, 0xfa, 0x26,
-0x77, 0xa4, 0xcd, 0x79, 0xf9, 0xf2, 0xe9, 0x06,
-0x31, 0xc5, 0x62, 0xdb, 0x46, 0x59, 0xbc, 0x1b,
-0x73, 0xa6, 0x4f, 0x5b, 0xe1, 0xa6, 0x7d, 0xda,
-0xcc, 0x35, 0x70, 0x5f, 0xf4, 0x06, 0x5f, 0xff,
-0x8f, 0xfb, 0x65, 0x12, 0x9b, 0x5c, 0xec, 0xb5,
-0xa2, 0xae, 0x2d, 0x49, 0x7a, 0xfe, 0x6f, 0xaa,
-0x03, 0x37, 0x8c, 0xf2, 0x1c, 0x77, 0x7d, 0x71,
-0xa6, 0x99, 0xdf, 0x92, 0xae, 0x59, 0xef, 0x17,
-0xde, 0x51, 0xa7, 0xcd, 0xb7, 0x27, 0xd3, 0x54,
-0x58, 0x8f, 0x1a, 0xe9, 0xcb, 0xab, 0x1f, 0xf4,
-0x88, 0x29, 0x7a, 0xdb, 0xb4, 0x1b, 0x09, 0x29,
-0xef, 0xc0, 0x79, 0x75, 0xf4, 0x02, 0xdd, 0x5a,
-0x68, 0x57, 0x01, 0xc2, 0x76, 0x2b, 0xa0, 0xd5,
-0x08, 0x78, 0xff, 0x95, 0x5b, 0xfe, 0x6b, 0x79,
-0xea, 0xea, 0x10, 0x49, 0xe1, 0xe0, 0xdf, 0x85,
-0xcb, 0xe7, 0xe6, 0x48, 0x45, 0x15, 0xd5, 0x00,
-0x90, 0x03, 0x80, 0xe5, 0xff, 0xab, 0x48, 0xfe,
-0x9f, 0x8e, 0x3f, 0x6b, 0xb7, 0x00, 0xf4, 0xcd,
-0x02, 0x4a, 0x37, 0x16, 0x96, 0xb1, 0x35, 0x15,
-0xa4, 0x49, 0x52, 0xe2, 0x08, 0x55, 0xbf, 0x6c,
-0x51, 0xbe, 0xc1, 0x30, 0xa7, 0x36, 0xf8, 0x71,
-0x22, 0x9a, 0xb8, 0x95, 0xad, 0x31, 0xdc, 0x30,
-0x1a, 0x55, 0x66, 0xeb, 0xdd, 0x8a, 0x6e, 0x66,
-0xe6, 0x2d, 0xd1, 0xac, 0x2d, 0x2c, 0xa1, 0xca,
-0x39, 0xb3, 0xf1, 0x02, 0xe3, 0x8a, 0x90, 0x21,
-0x0b, 0x48, 0x06, 0x02, 0x77, 0x00, 0xc6, 0x04,
-0xd2, 0x7c, 0xe8, 0x41, 0x5e, 0xe2, 0xee, 0x5b,
-0xf4, 0x74, 0x56, 0x8d, 0x67, 0x8c, 0x98, 0xad,
-0x00, 0x78, 0x3f, 0x43, 0x2f, 0x92, 0x5a, 0x13,
-0x7a, 0x3e, 0x5b, 0xb2, 0x66, 0x52, 0x7d, 0xd6,
-0xfe, 0xc3, 0xba, 0x14, 0xbd, 0x21, 0x53, 0x2b,
-0x0e, 0x4a, 0x02, 0x39, 0x4b, 0x8b, 0x92, 0xec,
-0x6a, 0xbf, 0xae, 0x84, 0x38, 0xbb, 0x72, 0xab,
-0x53, 0x28, 0x0b, 0x77, 0x43, 0x92, 0x30, 0x94,
-0xf3, 0xcb, 0xdc, 0xc8, 0x74, 0x85, 0xeb, 0x40,
-0x7f, 0x14, 0xfc, 0xba, 0x78, 0x43, 0x5b, 0x3e,
-0x4b, 0xb2, 0x14, 0x7a, 0xb7, 0x52, 0xc6, 0x0b,
-0xe6, 0x9a, 0x98, 0x76, 0x89, 0xcc, 0xbf, 0x3b,
-0xc0, 0xc2, 0xae, 0xf9, 0xbd, 0x57, 0xc3, 0xb6,
-0x3d, 0x75, 0x24, 0x8c, 0x1e, 0xe3, 0x87, 0xb3,
-0xf1, 0x54, 0x37, 0x3f, 0xd7, 0x25, 0x77, 0x8c,
-0xbb, 0xe7, 0x07, 0x84, 0xa9, 0x35, 0xb9, 0xfa,
-0x01, 0x9b, 0x3e, 0x4c, 0x8b, 0x34, 0x93, 0x36,
-0xec, 0xec, 0x8d, 0x5e, 0x38, 0xcc, 0x6e, 0xdc,
-0x0d, 0x5b, 0xb8, 0xad, 0x00, 0x56, 0x08, 0xe0,
-0x79, 0x52, 0x03, 0x40, 0xf2, 0x7f, 0xcb, 0x3b,
-0xa6, 0xae, 0x0e, 0x8b, 0x24, 0xf8, 0x3f, 0x81,
-0xac, 0x3f, 0xaa, 0x38, 0xe3, 0x68, 0xd5, 0xb9,
-0xdc, 0xe5, 0x22, 0x15, 0x00, 0x78, 0x36, 0xa0,
-0xff, 0x9f, 0x1e, 0xc6, 0x37, 0x5f, 0x32, 0x00,
-0x88, 0xef, 0x00, 0x60, 0x23, 0x2f, 0x92, 0x26,
-0x2a, 0xc1, 0xfe, 0xf3, 0x6e, 0xfa, 0xf0, 0x4e,
-0x41, 0xe8, 0xa4, 0x8b, 0x43, 0xf4, 0xa8, 0xc4,
-0xd6, 0x84, 0x40, 0x7a, 0x32, 0x8b, 0x3c, 0x82,
-0x2a, 0x89, 0xce, 0x65, 0x49, 0xfb, 0x3c, 0xbd,
-0x16, 0xdb, 0xb4, 0x50, 0xd2, 0x48, 0x50, 0x5d,
-0xd2, 0x49, 0xb6, 0x7f, 0x10, 0x7a, 0x6c, 0xcd,
-0x6c, 0xa1, 0xbd, 0x4c, 0x56, 0x12, 0xb5, 0xcc,
-0xd2, 0x69, 0x46, 0x01, 0x2c, 0x0d, 0x6c, 0xdc,
-0x03, 0x50, 0x31, 0xed, 0xca, 0x12, 0x7f, 0xfb,
-0xfc, 0xb2, 0xab, 0xda, 0x99, 0xe5, 0x18, 0xf1,
-0xc6, 0xfa, 0x27, 0x0c, 0x14, 0x0d, 0x27, 0x73,
-0xa3, 0x6f, 0xb3, 0x7d, 0x6f, 0x4a, 0x6d, 0x67,
-0x0c, 0x18, 0xfe, 0x82, 0xb2, 0x99, 0x02, 0x29,
-0xa3, 0x81, 0x73, 0xa7, 0x79, 0xf7, 0x7f, 0xd3,
-0xf0, 0xcb, 0x66, 0x18, 0xe0, 0x10, 0xee, 0xa6,
-0x42, 0x7b, 0xae, 0x7d, 0xa5, 0x05, 0xd3, 0x91,
-0x5d, 0xaa, 0xf6, 0x4f, 0xa5, 0xe6, 0xb9, 0x4b,
-0x52, 0x95, 0x7f, 0x26, 0x83, 0x80, 0xef, 0xc6,
-0xe3, 0x56, 0xfe, 0x3d, 0xbf, 0x83, 0x0b, 0x39,
-0xd0, 0x6e, 0x3f, 0x0d, 0xb5, 0x6d, 0x4a, 0x45,
-0xb9, 0x11, 0x00, 0x1c, 0x02, 0xb8, 0xf5, 0x94,
-0xdd, 0x06, 0xf0, 0xc8, 0x2d, 0xb7, 0xfc, 0xc5,
-0xd5, 0xa9, 0x00, 0xa8, 0xd5, 0x64, 0x34, 0x74,
-0xe9, 0x42, 0x0e, 0x99, 0xff, 0x49, 0xdc, 0xb2,
-0x33, 0x89, 0x14, 0xc0, 0xe5, 0x62, 0x31, 0x95,
-0x22, 0x01, 0x80, 0xa7, 0xbd, 0x0a, 0x40, 0x3f,
-0x1d, 0x10, 0x2f, 0x14, 0x86, 0xc8, 0xcd, 0xe7,
-0xef, 0xab, 0x5f, 0x8a, 0xda, 0x84, 0x19, 0x4b,
-0x64, 0x65, 0x29, 0xaa, 0x5c, 0x83, 0xe1, 0x39,
-0x63, 0x5b, 0x2c, 0x52, 0xc8, 0xfc, 0xaf, 0x1b,
-0xe6, 0xa4, 0xe4, 0x90, 0xe2, 0x55, 0xbd, 0x51,
-0xa9, 0x4e, 0x56, 0x49, 0xfb, 0x7c, 0x84, 0x0b,
-0x98, 0x33, 0x0e, 0x00, 0x1e, 0x00, 0x8c, 0x0c,
-0x59, 0xc2, 0x87, 0xab, 0xe5, 0xe3, 0x55, 0xb0,
-0x24, 0x67, 0xf4, 0x65, 0x54, 0xd3, 0xc0, 0x6d,
-0x0d, 0x0b, 0x05, 0xdc, 0x0a, 0xe8, 0x6d, 0x43,
-0xdb, 0x5b, 0x0c, 0x5b, 0x4a, 0xd5, 0x4c, 0x6c,
-0x2d, 0xca, 0x82, 0x25, 0x92, 0xae, 0x35, 0x98,
-0x92, 0x35, 0x1c, 0xa3, 0xe8, 0xff, 0x4b, 0x42,
-0x0f, 0x21, 0xd3, 0x6e, 0xb6, 0xe7, 0x97, 0x2d,
-0x0c, 0x2a, 0xff, 0xc3, 0x6d, 0xf9, 0x18, 0x50,
-0x9c, 0x42, 0x6d, 0x59, 0xee, 0x3f, 0xbf, 0x90,
-0x31, 0xb0, 0xc2, 0x91, 0x70, 0x8b, 0x5b, 0xa7,
-0xa6, 0x4d, 0x2b, 0x5b, 0x03, 0xe7, 0x84, 0xd7,
-0x5d, 0x4a, 0xd0, 0x13, 0xb4, 0x1d, 0xf7, 0xec,
-0x79, 0xd8, 0xa9, 0xbf, 0xd3, 0xed, 0x89, 0x5e,
-0xd7, 0xa0, 0xd9, 0x30, 0xbb, 0x19, 0x37, 0x13,
-0x91, 0x8f, 0x28, 0x7a, 0x2d, 0x09, 0x4e, 0xd5,
-0xc4, 0xa9, 0x03, 0x84, 0x9d, 0x46, 0x40, 0xec,
-0x00, 0x3c, 0x7c, 0x3b, 0x09, 0x01, 0x7e, 0xe1,
-0x3d, 0x53, 0x57, 0x03, 0xfd, 0x0c, 0x31, 0xff,
-0xb9, 0x03, 0x48, 0xfc, 0x2b, 0x95, 0x47, 0x91,
-0x02, 0xa8, 0x1e, 0x38, 0x77, 0xc1, 0x75, 0x00,
-0xdc, 0x51, 0x80, 0xfa, 0x0e, 0x03, 0x54, 0x2a,
-0x38, 0x4d, 0xd4, 0xdc, 0x1e, 0xfc, 0xfa, 0x73,
-0x17, 0x47, 0x16, 0xb7, 0x16, 0x65, 0x7d, 0xc0,
-0xd8, 0x52, 0x10, 0xd7, 0x4c, 0x4d, 0xb0, 0x4d,
-0x4d, 0x75, 0xa7, 0x6c, 0xd4, 0x7d, 0xc4, 0x74,
-0x22, 0x82, 0x14, 0x40, 0x35, 0x8f, 0x8a, 0xe2,
-0xc2, 0x36, 0x37, 0xaa, 0xd5, 0x26, 0x53, 0x65,
-0xed, 0xa0, 0x4a, 0xf5, 0x22, 0xaa, 0x54, 0x07,
-0xe8, 0x24, 0x2f, 0x92, 0x8a, 0x44, 0x2a, 0x44,
-0x01, 0x20, 0x25, 0x66, 0x45, 0x1a, 0xdc, 0x69,
-0x48, 0x46, 0xf7, 0x7f, 0x12, 0xa2, 0x39, 0xb3,
-0x16, 0x43, 0x55, 0x95, 0x91, 0x4d, 0xfe, 0xfe,
-0xf9, 0x0d, 0x00, 0x56, 0x68, 0x9f, 0xcd, 0x2e,
-0x48, 0x46, 0x57, 0x52, 0x25, 0x03, 0x80, 0x19,
-0x31, 0x9f, 0xce, 0xc5, 0x83, 0xca, 0xbf, 0x66,
-0xb7, 0x52, 0xf6, 0x1e, 0x00, 0x10, 0xe7, 0xfe,
-0x8a, 0xb7, 0x1d, 0x47, 0xff, 0x06, 0x1e, 0x17,
-0x4d, 0xe4, 0x38, 0x95, 0x02, 0x18, 0x76, 0x83,
-0x6b, 0x6c, 0xb8, 0x9e, 0xd2, 0x04, 0x9c, 0x00,
-0xb3, 0xce, 0x00, 0x15, 0xd6, 0x63, 0x84, 0x9c,
-0x92, 0x69, 0x5a, 0x45, 0x78, 0x9e, 0xbe, 0x53,
-0x05, 0xa1, 0x0e, 0x40, 0xba, 0x2a, 0xdd, 0xdf,
-0xc0, 0x89, 0x0b, 0x38, 0x31, 0x00, 0xa7, 0x11,
-0xf0, 0x79, 0xd2, 0x06, 0x88, 0x6a, 0x00, 0x3f,
-0xc1, 0xdf, 0xfa, 0x7d, 0x21, 0x83, 0xdc, 0xff,
-0x4b, 0xa8, 0xf6, 0x8f, 0x3c, 0xe6, 0x47, 0x97,
-0x5b, 0xcb, 0xcb, 0xf9, 0xdf, 0xad, 0xce, 0xe5,
-0xac, 0x00, 0x40, 0xd7, 0x6b, 0x01, 0x0c, 0x50,
-0x05, 0xb0, 0xbc, 0x69, 0xed, 0xb4, 0x38, 0xe4,
-0x9c, 0x5f, 0x8a, 0x9a, 0x99, 0x59, 0x44, 0xbe,
-0xb3, 0xd8, 0x45, 0x9d, 0x35, 0x3b, 0x21, 0x73,
-0x5b, 0x0c, 0x12, 0x34, 0x0d, 0xd3, 0x30, 0x7c,
-0x4b, 0x4b, 0x11, 0x2b, 0x00, 0x54, 0x03, 0xa8,
-0xad, 0x2e, 0x45, 0xb8, 0xcd, 0x33, 0xc9, 0x88,
-0x24, 0xf1, 0x4d, 0x13, 0x07, 0xc9, 0x08, 0x36,
-0x3e, 0x5f, 0x71, 0xa4, 0x9d, 0xc7, 0x75, 0xa6,
-0xe5, 0xc4, 0x62, 0xa6, 0xbd, 0x4e, 0xb7, 0x02,
-0xaa, 0x89, 0x7d, 0x9f, 0x31, 0x65, 0xc2, 0xe8,
-0x2c, 0x2e, 0x2c, 0x89, 0xce, 0x95, 0xef, 0x00,
-0x60, 0x99, 0x46, 0xb6, 0x43, 0xc6, 0xd7, 0x09,
-0x30, 0x00, 0x98, 0x91, 0x45, 0x75, 0x85, 0x76,
-0x79, 0x87, 0x6f, 0xb9, 0x8d, 0x0c, 0xaa, 0xc7,
-0xb0, 0x43, 0x25, 0x1b, 0x03, 0x8a, 0x55, 0xa8,
-0x45, 0x6b, 0xdc, 0x5f, 0xc1, 0xfd, 0x57, 0xcd,
-0x7d, 0xa8, 0x39, 0xbd, 0xff, 0x90, 0x63, 0xcc,
-0xa9, 0x9a, 0xbd, 0xd0, 0x61, 0x37, 0xcc, 0xfa,
-0xe2, 0xb3, 0xac, 0x00, 0x3b, 0x99, 0x3a, 0x5e,
-0xfa, 0x00, 0xdb, 0x06, 0x40, 0x47, 0xec, 0x3d,
-0x15, 0xc1, 0xb4, 0xfe, 0xb3, 0x29, 0x82, 0xb4,
-0xef, 0xc0, 0x19, 0x7c, 0xca, 0x25, 0xf1, 0xf4,
-0x92, 0x5b, 0x05, 0xb0, 0xf3, 0x80, 0x89, 0x02,
-0x78, 0xdb, 0x55, 0xa9, 0x00, 0x54, 0x3e, 0x9b,
-0x3a, 0x83, 0xcc, 0xff, 0xdc, 0x7c, 0xbe, 0xd2,
-0xc2, 0x2c, 0xe7, 0x49, 0x05, 0x20, 0x74, 0xc6,
-0x6a, 0x01, 0xa4, 0x73, 0x80, 0x7b, 0x87, 0x00,
-0x49, 0x1a, 0x79, 0x76, 0xed, 0xb4, 0x38, 0x00,
-0x90, 0xef, 0x00, 0x60, 0xc3, 0x0b, 0x6b, 0x8d,
-0xb2, 0x50, 0x10, 0xb8, 0x06, 0xc3, 0x84, 0xa1,
-0x89, 0xe3, 0x58, 0xe0, 0x7e, 0xe8, 0x3d, 0x84,
-0x2c, 0x67, 0x6a, 0x93, 0xd5, 0xc9, 0x65, 0x49,
-0xc4, 0x8c, 0x69, 0x79, 0x5f, 0x41, 0xf2, 0x8f,
-0x7c, 0x84, 0x91, 0x40, 0xe3, 0xd5, 0x88, 0x1c,
-0x30, 0x0b, 0x93, 0x24, 0xd2, 0xb0, 0x85, 0xf3,
-0x80, 0xe8, 0x42, 0xbf, 0x59, 0xd9, 0x6f, 0x05,
-0x50, 0x34, 0xd7, 0x16, 0x0a, 0x0d, 0xb1, 0x0b,
-0x84, 0x9f, 0xcb, 0x5c, 0xea, 0xe8, 0xb8, 0x1b,
-0x84, 0x24, 0xa7, 0x47, 0x32, 0x00, 0x98, 0xbe,
-0x58, 0xb1, 0x06, 0x00, 0xe4, 0x96, 0x1d, 0x38,
-0x19, 0x27, 0x8b, 0x1d, 0x2a, 0x6d, 0x46, 0xa8,
-0x50, 0xb1, 0xad, 0x94, 0x59, 0x63, 0xa9, 0x51,
-0x17, 0x14, 0x53, 0xd3, 0xf0, 0xcb, 0x14, 0x1f,
-0x88, 0xd2, 0xdd, 0x94, 0x24, 0x7b, 0xb5, 0x6e,
-0xb7, 0xd3, 0xbd, 0x2b, 0x6e, 0xb4, 0x81, 0xa7,
-0x84, 0x9a, 0xaa, 0xb8, 0xbb, 0xf5, 0xff, 0xf0,
-0xb4, 0xe7, 0xed, 0xf3, 0xb6, 0xde, 0x4d, 0xfa,
-0xa7, 0x25, 0x9e, 0xdb, 0x03, 0x25, 0xfb, 0xd4,
-0x00, 0xc4, 0xb4, 0x42, 0xb0, 0xfe, 0x8d, 0xbb,
-0x9d, 0x8f, 0x5d, 0xf9, 0x77, 0x42, 0x80, 0x48,
-0xfe, 0xff, 0xf4, 0x6a, 0x8c, 0x02, 0xa2, 0xce,
-0x25, 0x91, 0xfb, 0x7f, 0xf9, 0xdc, 0xdc, 0x64,
-0x7e, 0xb9, 0x95, 0xb8, 0x27, 0x41, 0x14, 0xc0,
-0x81, 0x8f, 0x5f, 0xb8, 0x74, 0xe6, 0x29, 0xd7,
-0x01, 0x08, 0x38, 0x0a, 0x18, 0xbe, 0xf9, 0x32,
-0x6b, 0xda, 0xf4, 0x1b, 0x00, 0xcc, 0x8c, 0x2c,
-0x35, 0x22, 0x75, 0x71, 0xe2, 0x09, 0xa6, 0xd8,
-0xa5, 0x1b, 0x11, 0xdc, 0x44, 0xcf, 0x29, 0x09,
-0x24, 0xfe, 0xc3, 0x3d, 0x8c, 0x45, 0xa9, 0x62,
-0x64, 0x71, 0x7e, 0x0e, 0xee, 0xa2, 0xc7, 0x35,
-0x46, 0xd1, 0xa2, 0x3d, 0x54, 0x1e, 0xc2, 0x03,
-0x80, 0xd5, 0x37, 0xf9, 0x6e, 0x68, 0x3e, 0xb3,
-0x6a, 0xf0, 0xe4, 0x8d, 0x0c, 0x49, 0x37, 0x5a,
-0x41, 0x0a, 0x60, 0x9b, 0x49, 0x03, 0x90, 0x75,
-0x37, 0xdc, 0x13, 0x21, 0xa3, 0xd1, 0x3e, 0x5d,
-0xde, 0x11, 0xbb, 0x2a, 0xfa, 0x75, 0x25, 0xce,
-0x9a, 0xed, 0xed, 0x88, 0x28, 0x65, 0xb2, 0xba,
-0x4d, 0xd7, 0xce, 0xdc, 0x10, 0xdb, 0x0a, 0x07,
-0x4d, 0x53, 0xb6, 0x32, 0x89, 0x67, 0x46, 0x7a,
-0x3a, 0x54, 0x63, 0x11, 0x13, 0x1f, 0x99, 0xd8,
-0x93, 0x7b, 0xf0, 0x69, 0x11, 0x64, 0x1c, 0xb5,
-0xbd, 0xed, 0xf0, 0x74, 0xd8, 0x0b, 0xcb, 0xd1,
-0x32, 0xee, 0x39, 0xec, 0xb3, 0x9e, 0x91, 0x0f,
-0x3b, 0x2d, 0x03, 0x5e, 0x98, 0x8f, 0x91, 0x65,
-0x57, 0xd8, 0x3d, 0xe3, 0x1e, 0xe6, 0x1e, 0x8e,
-0x47, 0xc0, 0x37, 0x0e, 0x3a, 0xb5, 0x00, 0x6f,
-0xa0, 0xd1, 0xe9, 0x69, 0x7b, 0xba, 0xc2, 0x69,
-0xae, 0x27, 0x90, 0xab, 0x13, 0x58, 0x05, 0x70,
-0xec, 0xd8, 0x51, 0xe4, 0x00, 0x1c, 0xad, 0xf3,
-0xf7, 0x7e, 0x1f, 0x50, 0x27, 0x90, 0xfb, 0x5f,
-0x44, 0xb5, 0x7f, 0x24, 0xfe, 0xf7, 0x24, 0xb6,
-0xb6, 0x48, 0x2e, 0xfd, 0xdc, 0x39, 0xa7, 0x02,
-0xd0, 0xb5, 0x5b, 0x00, 0x82, 0x54, 0x00, 0xf0,
-0x00, 0x60, 0x48, 0xf9, 0xd3, 0x35, 0x61, 0x6b,
-0x17, 0x3e, 0xb5, 0xe9, 0xa4, 0x6e, 0xba, 0x3d,
-0xf5, 0x19, 0xca, 0xb4, 0x64, 0x17, 0x0d, 0x8d,
-0x8c, 0x7b, 0xc3, 0x17, 0x16, 0xa3, 0x67, 0x61,
-0x49, 0x6b, 0x7a, 0x6b, 0x7e, 0x72, 0xf9, 0xac,
-0x38, 0xac, 0x05, 0x1d, 0x01, 0x9c, 0x1c, 0xf1,
-0x69, 0xf8, 0x0e, 0x38, 0x3e, 0x5f, 0xa9, 0x65,
-0x74, 0x70, 0xb6, 0x41, 0x7e, 0xe5, 0xc5, 0x55,
-0xa4, 0x00, 0x68, 0xe9, 0x34, 0xf7, 0x96, 0xc7,
-0x2e, 0x90, 0x32, 0x74, 0x5d, 0x7f, 0x5c, 0x32,
-0x52, 0x91, 0x5f, 0x76, 0x55, 0x4d, 0x8d, 0xc8,
-0xa7, 0x28, 0x12, 0x35, 0x53, 0xda, 0x19, 0x89,
-0x49, 0x98, 0xba, 0x61, 0xd0, 0x34, 0xe5, 0xa1,
-0xfa, 0xb2, 0x74, 0x0c, 0x28, 0x46, 0xa1, 0xe6,
-0x54, 0x5d, 0xa6, 0x98, 0xd4, 0xbd, 0xe6, 0xfe,
-0xda, 0x1c, 0x0e, 0x87, 0x69, 0x59, 0x62, 0xec,
-0xb4, 0x13, 0x12, 0x70, 0x84, 0x98, 0x6a, 0xe7,
-0x77, 0x17, 0x67, 0xf2, 0x71, 0xbc, 0x66, 0x7f,
-0xb7, 0x0a, 0x4f, 0x8d, 0x29, 0x3c, 0x2d, 0x67,
-0x76, 0x9a, 0x56, 0x26, 0xdc, 0x0f, 0xde, 0xd7,
-0x54, 0x2f, 0xa5, 0xf0, 0x38, 0xbd, 0x80, 0xf5,
-0x95, 0xa7, 0x00, 0x9e, 0x27, 0x4d, 0x00, 0xf7,
-0xff, 0xd2, 0xf7, 0x09, 0xf7, 0x72, 0xef, 0xec,
-0x14, 0xa3, 0x67, 0x2e, 0x5d, 0xc8, 0xcd, 0xfd,
-0x6e, 0xbe, 0xb5, 0xb2, 0xb5, 0x15, 0x8b, 0x9d,
-0x45, 0x0a, 0x60, 0x12, 0x55, 0x00, 0x2e, 0x84,
-0xbc, 0x51, 0xc0, 0xa8, 0x08, 0x40, 0xaf, 0x2a,
-0x40, 0x2b, 0x82, 0x07, 0x00, 0x9b, 0x11, 0x87,
-0x9c, 0xf1, 0xa9, 0x4d, 0x77, 0x23, 0x9b, 0x78,
-0xb0, 0x2e, 0x71, 0x34, 0x6f, 0xa6, 0x89, 0x3a,
-0xb1, 0xb3, 0xda, 0x59, 0xd2, 0xb9, 0x34, 0x36,
-0x54, 0x50, 0x85, 0xde, 0x3c, 0x2c, 0xa1, 0x11,
-0x6d, 0x72, 0x3e, 0x9f, 0x58, 0x5c, 0x38, 0xcd,
-0x59, 0x1a, 0x7a, 0x74, 0x11, 0x77, 0x00, 0xb0,
-0x7e, 0x19, 0x08, 0x7e, 0xc4, 0xb3, 0xc8, 0xcf,
-0x20, 0x69, 0x00, 0x5b, 0x9d, 0xb5, 0x19, 0xa6,
-0x15, 0xb0, 0x7c, 0x26, 0xe0, 0x36, 0x82, 0x11,
-0x35, 0x0d, 0xac, 0x2a, 0x45, 0xf9, 0xf7, 0x13,
-0x9a, 0x98, 0x4a, 0x46, 0x42, 0x13, 0xeb, 0x8c,
-0xfe, 0x03, 0x80, 0x3d, 0xce, 0x4b, 0xed, 0xc0,
-0xcd, 0x71, 0x76, 0x4a, 0x97, 0xd8, 0x4a, 0x49,
-0x4f, 0x53, 0x92, 0x51, 0x91, 0x62, 0x12, 0x0a,
-0x49, 0x73, 0x17, 0xa3, 0x22, 0x4a, 0x39, 0x19,
-0xa6, 0x0c, 0xbe, 0x37, 0x92, 0x0f, 0x1d, 0x82,
-0xe3, 0xad, 0xba, 0x23, 0xf0, 0xd3, 0xde, 0x4a,
-0xf4, 0x42, 0xae, 0xdf, 0xee, 0x55, 0x0a, 0xc2,
-0xec, 0x47, 0xda, 0x03, 0x60, 0xaa, 0x15, 0x4c,
-0x2e, 0x11, 0xbd, 0xc2, 0xac, 0xb7, 0x51, 0xc4,
-0x78, 0x98, 0x96, 0xfd, 0xf0, 0x34, 0x1d, 0x01,
-0x38, 0xe5, 0x46, 0x00, 0xae, 0xc6, 0x5c, 0xc0,
-0x7a, 0x0a, 0x57, 0xff, 0xcf, 0xe1, 0x76, 0xac,
-0xb3, 0x5b, 0xb5, 0x5a, 0x2d, 0xb6, 0x95, 0x40,
-0x15, 0x80, 0x73, 0xb9, 0x0b, 0x5e, 0x04, 0x10,
-0xe7, 0x00, 0x05, 0xe9, 0x06, 0x98, 0xb7, 0x86,
-0xd3, 0x0c, 0x32, 0xe4, 0x1c, 0x21, 0xdd, 0x50,
-0x65, 0x05, 0x9a, 0x35, 0x3b, 0xf1, 0xe1, 0x48,
-0x56, 0xb4, 0xd0, 0x4d, 0xd5, 0xe8, 0x67, 0x5f,
-0x13, 0x46, 0x02, 0x57, 0x00, 0xc4, 0x2e, 0xb0,
-0x94, 0x36, 0x22, 0x89, 0x2f, 0xd2, 0x4e, 0xb2,
-0xc1, 0x8a, 0x1a, 0xce, 0x03, 0x32, 0x13, 0xf3,
-0x56, 0xb6, 0xd1, 0xea, 0xda, 0x4c, 0xdd, 0xa4,
-0x86, 0x1d, 0x6a, 0x44, 0x83, 0x6e, 0x24, 0x08,
-0x49, 0xdd, 0xe7, 0x62, 0xf9, 0x4d, 0xaf, 0xd8,
-0x9a, 0xda, 0x54, 0xc5, 0xe9, 0x02, 0xa7, 0xa4,
-0x03, 0x80, 0x35, 0x48, 0x1e, 0x14, 0x92, 0xff,
-0xde, 0xcd, 0xf6, 0xfd, 0xc1, 0x03, 0x80, 0xf5,
-0x4b, 0xe9, 0x4a, 0x9a, 0x9b, 0xa8, 0x36, 0x27,
-0x1b, 0x37, 0x69, 0xaf, 0xb9, 0xbf, 0x16, 0x9f,
-0x38, 0xe4, 0xb5, 0xaf, 0x31, 0x42, 0xee, 0xd5,
-0xed, 0xd9, 0x66, 0x01, 0xce, 0x63, 0x67, 0xeb,
-0xeb, 0x7c, 0xa2, 0x0e, 0x15, 0x13, 0x70, 0x27,
-0xff, 0xa5, 0xe4, 0xdd, 0xfd, 0xc8, 0xbc, 0x9d,
-0xa6, 0xdd, 0x0b, 0x6f, 0x93, 0xd3, 0x9c, 0x0b,
-0x41, 0x1d, 0x2f, 0x56, 0x10, 0xb3, 0x96, 0x02,
-0xb8, 0x13, 0x55, 0x00, 0x9e, 0x27, 0xf2, 0x7f,
-0x35, 0x1a, 0x00, 0x1a, 0xa9, 0x54, 0xe8, 0xc2,
-0xe5, 0x39, 0x24, 0x2a, 0x89, 0x58, 0x6d, 0x31,
-0xbb, 0x58, 0x8b, 0x9d, 0x5d, 0xa9, 0xcc, 0x57,
-0xad, 0x16, 0x80, 0xcf, 0x92, 0x08, 0xe0, 0xd3,
-0x5e, 0x0d, 0xa0, 0x67, 0x25, 0x60, 0xd2, 0x6f,
-0x52, 0x2c, 0xbf, 0x01, 0xc0, 0x1a, 0x3e, 0x13,
-0x79, 0xd0, 0x66, 0x27, 0xaa, 0xaf, 0x49, 0x2c,
-0xb4, 0x3a, 0xa5, 0xf5, 0x0b, 0x4d, 0x47, 0x23,
-0xc3, 0x93, 0x79, 0xd2, 0x1b, 0x8d, 0xab, 0xd6,
-0x52, 0x01, 0x73, 0x6b, 0x18, 0x7f, 0xc9, 0x00,
-0x60, 0xc1, 0xdb, 0xa1, 0xbb, 0x05, 0x92, 0x07,
-0x94, 0x47, 0x0a, 0x20, 0xc3, 0x45, 0xb5, 0x0a,
-0xfb, 0x99, 0x07, 0x34, 0xa6, 0xfb, 0x4c, 0x7b,
-0x52, 0xf6, 0xd9, 0x4b, 0x5e, 0xf5, 0x59, 0x41,
-0x36, 0x00, 0x58, 0x01, 0xd5, 0xdc, 0x64, 0xcd,
-0xf6, 0x83, 0x4a, 0xe4, 0x01, 0xc3, 0x9e, 0xa6,
-0x8c, 0x6f, 0x49, 0xa0, 0x06, 0x00, 0xab, 0xe2,
-0x3c, 0x5f, 0xc9, 0xe8, 0xea, 0xcd, 0x81, 0x07,
-0x45, 0x91, 0xf3, 0xca, 0x43, 0x61, 0x46, 0x6c,
-0x5d, 0x0f, 0x80, 0xd1, 0x00, 0x4c, 0x3c, 0xc0,
-0x8b, 0xdf, 0xd1, 0x06, 0xdc, 0x5e, 0xdd, 0xf3,
-0x07, 0x66, 0x29, 0xcd, 0xe1, 0xba, 0xee, 0x8e,
-0xe0, 0xd2, 0x3b, 0x65, 0xf5, 0x85, 0xf5, 0xbd,
-0x1b, 0xef, 0xf7, 0x76, 0x49, 0x8d, 0x1a, 0x12,
-0xa6, 0xbe, 0x76, 0xf6, 0x1a, 0xde, 0x38, 0x64,
-0x3b, 0x00, 0x77, 0x3f, 0x7c, 0x0c, 0x29, 0x80,
-0xa3, 0x5f, 0x94, 0xdd, 0xce, 0x3d, 0x52, 0x88,
-0x22, 0xf9, 0xcf, 0x1d, 0x98, 0xac, 0xac, 0x9c,
-0xad, 0x65, 0x17, 0x47, 0x17, 0xb3, 0xb5, 0xd8,
-0x0a, 0x76, 0x00, 0x70, 0x05, 0xc0, 0x1b, 0x05,
-0x2c, 0x5e, 0x0a, 0x30, 0x17, 0xd0, 0x9c, 0x89,
-0x87, 0xd3, 0x93, 0xd4, 0xa6, 0x63, 0xf2, 0x15,
-0xd2, 0x6d, 0x9f, 0x63, 0xa2, 0xc7, 0xb4, 0x98,
-0x30, 0x3a, 0xd9, 0x85, 0x99, 0x3a, 0x9b, 0xc5,
-0xd3, 0x6c, 0x06, 0x68, 0x29, 0x8e, 0x99, 0xad,
-0xbc, 0xed, 0xd6, 0x32, 0x07, 0x44, 0x39, 0xcc,
-0x21, 0xd3, 0x19, 0xb2, 0x84, 0x3b, 0x82, 0x01,
-0xf2, 0x50, 0xa2, 0x8d, 0xf2, 0x10, 0x4e, 0x04,
-0x5c, 0xc6, 0x89, 0x80, 0xeb, 0x4c, 0x7b, 0x5b,
-0x66, 0xd7, 0xf5, 0xd9, 0x92, 0x30, 0xe4, 0x72,
-0x37, 0xe2, 0x73, 0xb1, 0x48, 0x83, 0x86, 0x70,
-0xb8, 0x25, 0x65, 0xd2, 0xef, 0x8e, 0x8b, 0x09,
-0x43, 0x78, 0x00, 0xb0, 0x04, 0x19, 0x00, 0x28,
-0x78, 0x1e, 0xa4, 0x3c, 0x1c, 0x3c, 0x61, 0x8d,
-0x3a, 0xd0, 0x6b, 0xd4, 0x91, 0x78, 0xa1, 0x29,
-0x93, 0xfe, 0xa9, 0xa9, 0xbd, 0xe7, 0xfe, 0x5a,
-0x3c, 0xf8, 0x11, 0xaf, 0x1a, 0xcf, 0x39, 0xfc,
-0xd4, 0xac, 0xdc, 0xb3, 0x6e, 0xf5, 0xde, 0x4b,
-0xf3, 0xb3, 0xeb, 0xf4, 0xae, 0xb0, 0xd3, 0xb2,
-0xee, 0x05, 0x10, 0xc3, 0x5e, 0x1d, 0x21, 0xec,
-0xfd, 0xa3, 0x5e, 0xc3, 0xae, 0xc0, 0xdb, 0xff,
-0xe8, 0x74, 0xe3, 0x69, 0x4e, 0x4d, 0xb8, 0xbd,
-0x01, 0x3c, 0x0d, 0xe0, 0x84, 0x2d, 0xa9, 0x8e,
-0x80, 0x77, 0x93, 0x0a, 0xc0, 0xd5, 0x18, 0x03,
-0x24, 0x13, 0x4d, 0x5d, 0x9a, 0xc8, 0xe1, 0xb6,
-0xb2, 0x58, 0x76, 0xb1, 0x73, 0x5f, 0xa7, 0x93,
-0x8d, 0x6d, 0xb5, 0x2a, 0xf3, 0x07, 0xce, 0x5d,
-0xb8, 0x64, 0x0d, 0x02, 0xf0, 0x4c, 0x9a, 0x0e,
-0x01, 0xf6, 0x72, 0x00, 0x7c, 0xbd, 0x69, 0x3d,
-0x93, 0xc9, 0xac, 0xb2, 0x4f, 0xf2, 0xe7, 0x37,
-0xef, 0x16, 0x5d, 0xec, 0x5a, 0x66, 0xad, 0xb6,
-0x26, 0xd6, 0x29, 0xea, 0xfd, 0x23, 0x53, 0x29,
-0x33, 0x33, 0x69, 0x17, 0x6b, 0xa6, 0xb8, 0x51,
-0xe9, 0x48, 0x21, 0x77, 0x54, 0xfd, 0x41, 0xa6,
-0x20, 0xe3, 0xf7, 0x13, 0x59, 0xcf, 0xdb, 0xf9,
-0xc6, 0x19, 0x76, 0x38, 0x90, 0x66, 0x6d, 0x37,
-0x16, 0x2d, 0xde, 0xc2, 0xfd, 0x0e, 0x33, 0x9d,
-0xd5, 0x4c, 0x07, 0x5d, 0x25, 0xf7, 0x8a, 0xc9,
-0x5c, 0x79, 0xb2, 0x93, 0x42, 0x86, 0x5e, 0xcc,
-0x79, 0x76, 0x1a, 0x7e, 0x77, 0x7c, 0x51, 0x54,
-0x16, 0x99, 0xed, 0xe5, 0xc4, 0xa2, 0xa4, 0x73,
-0xf1, 0x54, 0x5b, 0xd8, 0xae, 0xf3, 0xc4, 0xc7,
-0xd6, 0xc9, 0xf2, 0x0a, 0xae, 0x88, 0x14, 0xaa,
-0x74, 0x0c, 0x38, 0x4f, 0xa1, 0x46, 0x7d, 0xef,
-0xfa, 0x2e, 0xa7, 0xfd, 0x10, 0xce, 0xe6, 0x61,
-0xc7, 0xce, 0xba, 0x63, 0x77, 0xd3, 0x75, 0xfb,
-0x69, 0xf6, 0x9d, 0xf7, 0xc9, 0x79, 0x15, 0xcd,
-0x31, 0x63, 0xcc, 0xa9, 0x6f, 0x19, 0xa8, 0x6e,
-0x3d, 0xb3, 0xdc, 0x97, 0xcc, 0x9b, 0x30, 0x6d,
-0xfa, 0x85, 0xd5, 0x99, 0xe6, 0xc2, 0x0d, 0x3c,
-0x33, 0xa8, 0xe5, 0x00, 0xe0, 0x0a, 0xc0, 0xd1,
-0xff, 0x70, 0x15, 0x12, 0x00, 0x6a, 0xd1, 0x33,
-0xa1, 0xcb, 0xe7, 0x90, 0xfb, 0x7f, 0xb6, 0xb6,
-0xd8, 0x59, 0x45, 0xf7, 0x74, 0x31, 0xbb, 0xb5,
-0x52, 0x99, 0xac, 0x9e, 0x9b, 0xb8, 0x60, 0xa5,
-0x00, 0x5a, 0x5d, 0x40, 0x6c, 0x07, 0xa0, 0x67,
-0x00, 0xb0, 0x48, 0xac, 0xe9, 0xc5, 0xb2, 0xe0,
-0xfc, 0x0d, 0x0a, 0xd5, 0x0e, 0x54, 0xca, 0x44,
-0x70, 0xdb, 0x1a, 0x3f, 0xec, 0x45, 0x33, 0x80,
-0x81, 0x2e, 0x69, 0x91, 0x4a, 0x85, 0x24, 0x24,
-0xb1, 0xa5, 0x91, 0x1a, 0x5e, 0xc4, 0x1e, 0xc6,
-0x5f, 0x9c, 0x55, 0xc7, 0x6f, 0xc8, 0x02, 0x29,
-0x13, 0x23, 0x6d, 0x27, 0x0d, 0x60, 0x81, 0xcd,
-0x03, 0x6a, 0xb6, 0x76, 0xd1, 0xa0, 0x9d, 0x34,
-0xf5, 0xf5, 0xb2, 0x69, 0xe0, 0x1a, 0xcf, 0x55,
-0x49, 0xf8, 0x90, 0xc4, 0x36, 0xb2, 0x78, 0xde,
-0x2e, 0x6d, 0x46, 0x1c, 0x8f, 0xa7, 0x0f, 0x42,
-0xfd, 0x80, 0x64, 0x12, 0xcb, 0x14, 0x6a, 0x63,
-0xa2, 0x58, 0x2c, 0x5e, 0x42, 0x8f, 0x62, 0xcd,
-0x6f, 0x63, 0xfb, 0x90, 0xfb, 0x6b, 0x41, 0x77,
-0x01, 0xf6, 0x9c, 0x00, 0xd7, 0x96, 0x7b, 0xf5,
-0x7a, 0xaa, 0x7d, 0x9e, 0xf6, 0xea, 0xc3, 0x8e,
-0x20, 0x52, 0x4b, 0xcc, 0x3a, 0xff, 0x68, 0x39,
-0x67, 0x5e, 0x7d, 0x34, 0x00, 0x2f, 0xe1, 0xec,
-0x17, 0xcc, 0xc2, 0x4c, 0x8a, 0x91, 0xd5, 0x02,
-0x40, 0x6a, 0x00, 0xa7, 0x4e, 0x9d, 0x42, 0xf2,
-0x7f, 0xec, 0xd8, 0xd1, 0xab, 0xd1, 0x03, 0xa0,
-0x15, 0x3d, 0x53, 0xfc, 0x16, 0xaa, 0xfe, 0x63,
-0xf3, 0xbf, 0x9a, 0x59, 0x58, 0x5d, 0xbd, 0x2f,
-0x5b, 0x3b, 0xbb, 0x8c, 0x1c, 0x80, 0xcb, 0x4e,
-0x0a, 0xc0, 0x33, 0x6e, 0x0d, 0x40, 0xa1, 0xda,
-0x00, 0x3c, 0xdc, 0x8f, 0xa1, 0x11, 0xcb, 0x9a,
-0x0a, 0xd2, 0x34, 0x30, 0x5e, 0x83, 0x61, 0xbc,
-0xdd, 0x4e, 0xc8, 0xda, 0x14, 0x83, 0x4c, 0xa0,
-0x57, 0x35, 0x12, 0x95, 0x56, 0x4d, 0x9c, 0xdf,
-0x73, 0xc5, 0x5d, 0x22, 0x89, 0x3b, 0xc9, 0x77,
-0x24, 0xb3, 0x6a, 0x44, 0x9e, 0x1e, 0xa4, 0xc0,
-0xcd, 0x99, 0x85, 0xaa, 0x33, 0x1c, 0x48, 0x9b,
-0x19, 0x77, 0x50, 0x9d, 0x1f, 0xbc, 0x50, 0xe3,
-0x51, 0x89, 0x6a, 0x1d, 0x49, 0xe6, 0xfe, 0x3e,
-0x21, 0x49, 0xea, 0xf7, 0x46, 0x62, 0x1a, 0xac,
-0x84, 0x09, 0x99, 0x1d, 0x51, 0xb3, 0xd6, 0xda,
-0x92, 0x55, 0xa8, 0xec, 0xb9, 0x8f, 0x36, 0xe5,
-0xb3, 0xb7, 0x11, 0x7c, 0x3a, 0x32, 0x0f, 0xce,
-0xfd, 0xd3, 0xb4, 0x8f, 0x3d, 0x1b, 0xf6, 0x9e,
-0xb4, 0x11, 0xa6, 0x05, 0xcf, 0xa9, 0xd7, 0xdb,
-0xa6, 0x7f, 0x96, 0x75, 0x0f, 0x9c, 0x6f, 0x39,
-0x41, 0xa6, 0x64, 0x57, 0x3e, 0x66, 0xc0, 0x2c,
-0xfb, 0x46, 0xbe, 0x20, 0xed, 0x59, 0xd8, 0x87,
-0x30, 0x4b, 0x1a, 0x03, 0x37, 0xec, 0x34, 0x20,
-0x24, 0xff, 0x87, 0xac, 0x26, 0xc0, 0xa3, 0xdf,
-0xdd, 0xdc, 0xc5, 0xed, 0xee, 0xc3, 0x64, 0x2a,
-0x54, 0x3c, 0x77, 0x60, 0x7e, 0xf9, 0x9e, 0x18,
-0x12, 0x7f, 0x3c, 0x5a, 0xc5, 0x6a, 0xa7, 0x86,
-0x23, 0x80, 0x73, 0xe7, 0x26, 0x2e, 0xb9, 0x0e,
-0x80, 0x55, 0x03, 0x70, 0x67, 0x03, 0xe5, 0xeb,
-0x7e, 0xce, 0xa4, 0x58, 0x7a, 0x16, 0x4f, 0x8a,
-0xb7, 0xcb, 0x49, 0x31, 0x29, 0x28, 0x0b, 0xdd,
-0x8d, 0x68, 0x78, 0xd8, 0x8b, 0x3a, 0xdf, 0xf9,
-0xdf, 0x67, 0xd4, 0x1b, 0x86, 0x94, 0xd9, 0xc1,
-0xc5, 0x7a, 0x9b, 0xef, 0x68, 0xe6, 0x19, 0x40,
-0x2c, 0x6a, 0x67, 0x65, 0xa2, 0x36, 0xe0, 0x20,
-0xb4, 0x15, 0x83, 0xf4, 0x39, 0xce, 0x7b, 0xc3,
-0x81, 0x38, 0x87, 0x6b, 0x04, 0xe9, 0x49, 0xc0,
-0x92, 0x8e, 0xac, 0x0e, 0xbd, 0xb8, 0x9b, 0xe9,
-0xf8, 0x02, 0x22, 0xe9, 0x62, 0xdf, 0xd2, 0xf1,
-0x00, 0xa0, 0x33, 0x03, 0x4c, 0x84, 0x6a, 0x21,
-0xe4, 0x12, 0x45, 0x8d, 0x6c, 0x05, 0xcf, 0x8b,
-0x24, 0x9b, 0xa7, 0xa5, 0x0f, 0xea, 0xe4, 0x7e,
-0x75, 0x9a, 0x38, 0x1c, 0x1e, 0x77, 0x84, 0x99,
-0x97, 0xb7, 0x59, 0x4e, 0x8c, 0xf9, 0xcf, 0xd3,
-0x8c, 0x35, 0xe6, 0x4d, 0xb9, 0x5f, 0x7b, 0x3f,
-0xaf, 0x07, 0x7a, 0xc9, 0xbb, 0xbb, 0x61, 0x4a,
-0xc7, 0x6c, 0x50, 0x31, 0xc6, 0x0d, 0x7a, 0x73,
-0x48, 0xfc, 0x67, 0x67, 0x89, 0x03, 0x80, 0x73,
-0x80, 0x6e, 0xff, 0xf3, 0xfd, 0x4f, 0x00, 0x6c,
-0xce, 0x45, 0x43, 0xc5, 0xdc, 0x5c, 0x7e, 0x39,
-0x51, 0x5b, 0x44, 0xe2, 0x8f, 0x58, 0xe8, 0x2c,
-0xd6, 0x12, 0xcb, 0x79, 0x2b, 0x05, 0x80, 0x44,
-0x00, 0xc6, 0x48, 0x1b, 0xa0, 0xa7, 0x00, 0xfc,
-0x4c, 0x5a, 0x6a, 0x64, 0xd4, 0x8e, 0xb7, 0xef,
-0xb1, 0xe0, 0x52, 0x03, 0x80, 0x45, 0x47, 0x3a,
-0xd6, 0x8c, 0x72, 0x5c, 0xfa, 0x5f, 0x34, 0x40,
-0x39, 0x88, 0x6f, 0xb7, 0x2b, 0xb2, 0xe9, 0x28,
-0xbd, 0x0c, 0x20, 0x32, 0x00, 0xd8, 0xaa, 0x38,
-0x10, 0xdd, 0xa0, 0x89, 0x2f, 0xa5, 0x84, 0x31,
-0x8a, 0x63, 0x80, 0x79, 0x9c, 0x06, 0x80, 0xf3,
-0x80, 0xbc, 0x2d, 0x49, 0x86, 0x1d, 0xef, 0x43,
-0xba, 0xa1, 0x55, 0xb6, 0x16, 0x0b, 0x91, 0x9d,
-0x41, 0xad, 0x71, 0x40, 0x24, 0x09, 0x43, 0x43,
-0x26, 0xee, 0xc5, 0x38, 0x23, 0xb6, 0xdc, 0xf6,
-0x41, 0x18, 0xa9, 0xb1, 0x6b, 0x76, 0x96, 0xa5,
-0x99, 0xc4, 0x01, 0x50, 0x97, 0x72, 0xfb, 0x53,
-0x03, 0x60, 0x12, 0x80, 0x7c, 0x65, 0x35, 0xd0,
-0x22, 0x9e, 0x40, 0x5b, 0xef, 0xc6, 0xd9, 0xc0,
-0xc0, 0xac, 0xb0, 0xa8, 0xcf, 0xb6, 0x25, 0x95,
-0x02, 0x67, 0x5d, 0x3a, 0xf8, 0x60, 0x2f, 0xb2,
-0x81, 0x9f, 0xe8, 0xed, 0x06, 0xf2, 0xff, 0xc3,
-0x56, 0x05, 0xe0, 0xf9, 0xbb, 0xbf, 0xff, 0xd8,
-0xed, 0x7f, 0xb7, 0xff, 0x3d, 0x00, 0x8d, 0x09,
-0x1c, 0xfe, 0xaf, 0x4e, 0x2e, 0x6f, 0xd5, 0x3a,
-0x99, 0x85, 0x6f, 0x68, 0x6b, 0xda, 0x42, 0xa6,
-0x53, 0xdb, 0x5a, 0x21, 0x29, 0x00, 0x9e, 0x03,
-0x80, 0x07, 0x02, 0xb6, 0x47, 0x02, 0xf1, 0xe4,
-0x9f, 0xbf, 0x5b, 0x49, 0x64, 0x4d, 0x63, 0xbb,
-0xbc, 0xf9, 0x2c, 0x9e, 0x77, 0x9f, 0x32, 0xb3,
-0x96, 0x08, 0xb3, 0xb2, 0xe0, 0x37, 0xeb, 0x0d,
-0xcb, 0x68, 0xd9, 0x1e, 0xd7, 0x92, 0x5d, 0x79,
-0xdd, 0x8d, 0x5a, 0xe1, 0xc4, 0x37, 0x6b, 0xc8,
-0x12, 0xee, 0x00, 0x76, 0x06, 0x4c, 0x7c, 0x8b,
-0x67, 0x8d, 0x1a, 0x19, 0x0d, 0xc0, 0x1a, 0x0f,
-0x88, 0xc9, 0x03, 0x1a, 0x34, 0xac, 0x85, 0x07,
-0xd1, 0x48, 0xc8, 0xc6, 0x51, 0xd8, 0x27, 0xd6,
-0x65, 0x03, 0x80, 0xd9, 0x99, 0x1b, 0x83, 0x2a,
-0x1c, 0x3e, 0xb3, 0x63, 0x8c, 0x64, 0x12, 0x17,
-0xc4, 0x0a, 0x55, 0x20, 0xd4, 0xcc, 0x53, 0x03,
-0x5e, 0x2b, 0x29, 0x07, 0x39, 0xa1, 0xa3, 0x9f,
-0x32, 0x61, 0xe5, 0x5d, 0xf5, 0x5e, 0xfa, 0x81,
-0xdf, 0x90, 0x5c, 0xae, 0x59, 0xf5, 0xc0, 0x56,
-0x14, 0x58, 0x55, 0x40, 0x27, 0x23, 0xda, 0xc2,
-0x3f, 0x8b, 0xfb, 0x01, 0x90, 0x3f, 0x1c, 0x02,
-0x9c, 0x3d, 0x44, 0x1c, 0x00, 0x1c, 0x01, 0xfc,
-0xf2, 0xdf, 0xed, 0x7f, 0x02, 0xa0, 0x59, 0x8c,
-0x5e, 0xba, 0x90, 0xc3, 0x19, 0xec, 0xd9, 0xd5,
-0xcc, 0x5a, 0xa1, 0x50, 0x40, 0x0a, 0x60, 0x75,
-0x31, 0x96, 0x58, 0xb6, 0x22, 0x80, 0xa4, 0x13,
-0x50, 0xd7, 0x4e, 0x02, 0xa0, 0x1a, 0x01, 0xa5,
-0x4e, 0x40, 0xd7, 0x1e, 0x4e, 0x53, 0x36, 0x8f,
-0x9c, 0x43, 0x93, 0xfd, 0xf3, 0x29, 0x25, 0x5e,
-0xb6, 0xd8, 0x84, 0x19, 0x93, 0x25, 0x94, 0x4a,
-0xca, 0xb0, 0x84, 0xbc, 0xb9, 0x82, 0xb3, 0xd1,
-0xf9, 0x95, 0x3d, 0xe5, 0x81, 0x07, 0x00, 0xb3,
-0x44, 0x8d, 0x9f, 0x82, 0x68, 0xd0, 0x82, 0x98,
-0xd6, 0x8c, 0x44, 0x75, 0x7e, 0x7e, 0x72, 0x19,
-0x0f, 0x3a, 0xd0, 0x60, 0x14, 0xc0, 0xf6, 0x67,
-0x07, 0xdb, 0x14, 0x19, 0x95, 0x8c, 0x8c, 0x4a,
-0xa4, 0x3a, 0xd7, 0x6c, 0x5f, 0xfd, 0x00, 0xc9,
-0xd8, 0xe3, 0x56, 0x1e, 0xa4, 0x24, 0x73, 0xc3,
-0xa3, 0xe9, 0xdc, 0x2e, 0xe7, 0x68, 0xc8, 0x2b,
-0x1f, 0x86, 0x41, 0xbe, 0xcb, 0xf2, 0x56, 0xe7,
-0x27, 0xc4, 0x9e, 0x04, 0xfc, 0xc6, 0x7c, 0x4e,
-0x49, 0xf7, 0x9b, 0xaa, 0x7d, 0x10, 0x8e, 0x4f,
-0x87, 0xc7, 0xd9, 0x0a, 0xbe, 0x44, 0x56, 0xf9,
-0xa0, 0x9b, 0x4f, 0x40, 0x9e, 0x16, 0xf7, 0x59,
-0xc9, 0x02, 0x4c, 0xfb, 0xc0, 0xac, 0xe4, 0x97,
-0x40, 0xe0, 0x65, 0x37, 0x88, 0xeb, 0x3f, 0x4e,
-0xed, 0x72, 0xc3, 0xea, 0x0b, 0x8c, 0x1c, 0x80,
-0x3b, 0x4f, 0x7d, 0x04, 0x47, 0x00, 0xbf, 0xbc,
-0xff, 0x09, 0x80, 0x7a, 0x28, 0x75, 0xe9, 0xc2,
-0x39, 0x3c, 0x56, 0xc6, 0xe2, 0xaa, 0xa6, 0x15,
-0x96, 0x0a, 0x4b, 0x6b, 0xc8, 0x01, 0xc8, 0x6e,
-0xb5, 0xf2, 0xf3, 0x73, 0x97, 0x89, 0x03, 0x10,
-0x75, 0x23, 0x00, 0x8e, 0x03, 0xe0, 0x57, 0x03,
-0x18, 0x23, 0xd6, 0x74, 0x49, 0x9c, 0xd0, 0x93,
-0xbf, 0xf7, 0xee, 0x9f, 0x1f, 0x5e, 0xb6, 0x18,
-0x69, 0x50, 0x16, 0x73, 0x0a, 0x82, 0xa5, 0x8a,
-0xe4, 0x8c, 0x58, 0x62, 0x51, 0x6b, 0xf0, 0xd2,
-0xed, 0x75, 0x01, 0x2c, 0x15, 0x0a, 0xcb, 0x09,
-0x5a, 0xd4, 0x1c, 0x06, 0x9f, 0x82, 0xbe, 0x3b,
-0xac, 0xb7, 0xec, 0xe1, 0x40, 0xd0, 0x25, 0xa8,
-0xd3, 0x69, 0xcd, 0xda, 0x60, 0x79, 0x40, 0x78,
-0x1c, 0x85, 0x84, 0x3b, 0x2f, 0x92, 0xab, 0x03,
-0x54, 0xe7, 0xea, 0xf9, 0x5e, 0xb8, 0x26, 0x59,
-0xba, 0x69, 0xbf, 0xf1, 0xbd, 0x09, 0x75, 0x9f,
-0x01, 0xc0, 0x32, 0xdb, 0x62, 0xda, 0x8e, 0xb7,
-0x65, 0xf6, 0x9d, 0xa3, 0x02, 0xf8, 0x5c, 0x82,
-0xf8, 0x8c, 0x86, 0xed, 0x7f, 0xe4, 0x71, 0xbf,
-0x46, 0x3e, 0x6a, 0x63, 0x4d, 0xe6, 0x93, 0x8d,
-0x9a, 0xd8, 0x7b, 0x14, 0x80, 0x8c, 0x00, 0xe0,
-0x2b, 0x7e, 0x81, 0xe4, 0x52, 0x74, 0xe6, 0x65,
-0xc2, 0x3f, 0xc8, 0x36, 0xd9, 0xac, 0x42, 0x37,
-0xd6, 0x47, 0xe2, 0xfc, 0xde, 0x52, 0x1b, 0x61,
-0x5b, 0x05, 0xb8, 0x81, 0x80, 0xb0, 0xe3, 0x00,
-0xe0, 0x16, 0x80, 0xfd, 0x4f, 0x00, 0x8c, 0x9c,
-0x49, 0x85, 0x26, 0xce, 0x91, 0x71, 0x2c, 0x33,
-0xdf, 0x28, 0x2c, 0x2d, 0xb5, 0xf1, 0x44, 0x9a,
-0xc8, 0x01, 0x58, 0x59, 0x9e, 0xb7, 0x9b, 0x00,
-0xf1, 0x4c, 0x60, 0x9e, 0x02, 0xa0, 0x67, 0x04,
-0xe7, 0x49, 0xb7, 0xb5, 0x21, 0x9f, 0x79, 0xa4,
-0xc9, 0xad, 0x75, 0x1e, 0xde, 0x0b, 0x79, 0x48,
-0x4a, 0xdc, 0xa8, 0xbb, 0xf5, 0x1c, 0xc9, 0x29,
-0x12, 0x72, 0x0a, 0x82, 0xb5, 0xcf, 0x87, 0x46,
-0x16, 0x65, 0xcd, 0xda, 0x94, 0xfc, 0x5b, 0x89,
-0x2f, 0x92, 0x51, 0xb5, 0x07, 0xef, 0xbd, 0x93,
-0x6a, 0x44, 0x2a, 0x64, 0xee, 0x81, 0xb3, 0xd9,
-0x4c, 0x21, 0xc2, 0xe4, 0x01, 0x75, 0x06, 0xcb,
-0x03, 0xb2, 0x86, 0xfa, 0x47, 0xd2, 0x48, 0xd2,
-0xf7, 0x55, 0x72, 0xb1, 0xec, 0x6b, 0xe5, 0x8f,
-0x73, 0x2d, 0x55, 0x7b, 0x05, 0xdf, 0x6b, 0x2b,
-0xab, 0xdb, 0x20, 0x2d, 0xbb, 0x52, 0xbb, 0x4f,
-0x36, 0x11, 0xa2, 0xb7, 0xed, 0x26, 0x75, 0xe7,
-0xf0, 0x93, 0x1c, 0x0e, 0x9f, 0xb1, 0x1f, 0x1f,
-0x2e, 0x60, 0xf9, 0x17, 0x15, 0xaa, 0xbb, 0x21,
-0x6b, 0x13, 0x4d, 0xef, 0x10, 0x39, 0x9a, 0x03,
-0x5e, 0x2c, 0x09, 0xc7, 0x37, 0x38, 0x21, 0xf6,
-0xf5, 0xfe, 0x05, 0xb7, 0x9f, 0xf7, 0xed, 0x45,
-0xa9, 0x67, 0x72, 0x03, 0xbd, 0x57, 0x7a, 0x16,
-0x01, 0x26, 0x57, 0x88, 0x6e, 0x4f, 0xa0, 0x16,
-0xa2, 0x46, 0x09, 0x22, 0xe1, 0xfe, 0x71, 0xbc,
-0xa7, 0x71, 0xdc, 0x0f, 0x08, 0xd7, 0xfb, 0xd1,
-0x3b, 0xec, 0x0e, 0xa0, 0x2f, 0x91, 0x2a, 0x9b,
-0x25, 0x11, 0x00, 0xe4, 0x00, 0xfc, 0xdd, 0xb1,
-0x3f, 0xec, 0x51, 0x00, 0x76, 0x87, 0x1e, 0x3a,
-0x73, 0x69, 0xe2, 0x5c, 0xb5, 0x82, 0x6e, 0x7f,
-0x46, 0x2b, 0xb4, 0x2f, 0xb6, 0x91, 0x02, 0xd0,
-0x70, 0x04, 0xc0, 0xca, 0x01, 0x74, 0x1c, 0x00,
-0xa7, 0x11, 0xd0, 0x0d, 0x01, 0xc8, 0xea, 0x00,
-0xe8, 0xe6, 0x2f, 0x4b, 0xbd, 0xe9, 0xa9, 0x29,
-0x6b, 0x1a, 0x79, 0xc3, 0x20, 0x4f, 0x6b, 0x2e,
-0x79, 0xc3, 0x20, 0xf3, 0xc8, 0xab, 0xb2, 0x42,
-0xea, 0xa5, 0xe8, 0x56, 0xf1, 0x8c, 0x72, 0xa4,
-0x4d, 0x91, 0x59, 0x2a, 0x98, 0xfd, 0x8f, 0xea,
-0x19, 0x6b, 0x7a, 0x0f, 0xb6, 0x94, 0x79, 0x3d,
-0x80, 0xf0, 0x00, 0x60, 0x44, 0xfe, 0x85, 0xb1,
-0x28, 0x76, 0xd1, 0x13, 0xb5, 0xa8, 0x37, 0xf2,
-0xd5, 0xea, 0x64, 0xa5, 0x75, 0x76, 0x71, 0x61,
-0x29, 0x32, 0xb2, 0xa9, 0x7a, 0xd6, 0xb2, 0xf6,
-0xec, 0x00, 0xdb, 0xc1, 0x43, 0xfd, 0xaf, 0xd4,
-0x32, 0x6d, 0x3c, 0x87, 0xa9, 0x7b, 0xb9, 0xf0,
-0x9b, 0x4d, 0x55, 0x9a, 0x36, 0x4f, 0xd2, 0x21,
-0xc9, 0xd5, 0xa5, 0x2f, 0x2e, 0xb9, 0xbe, 0xaa,
-0x6c, 0x79, 0xd9, 0x00, 0x60, 0x78, 0x00, 0x40,
-0x59, 0xb3, 0xdd, 0x94, 0xd5, 0x72, 0xb7, 0xb9,
-0x69, 0x58, 0xdb, 0xdc, 0x74, 0x8f, 0x07, 0xbf,
-0x37, 0x54, 0x7e, 0x5e, 0x5f, 0xec, 0xbb, 0xe0,
-0x11, 0x95, 0xc5, 0x4c, 0x22, 0xab, 0x0c, 0x6c,
-0xaa, 0xf6, 0x31, 0x3a, 0xe7, 0xa4, 0x8a, 0xf7,
-0x7f, 0x71, 0xaf, 0x0a, 0xe0, 0xb8, 0x6f, 0xfc,
-0x4f, 0xf0, 0xfe, 0xfd, 0x9a, 0xee, 0xb8, 0x65,
-0xdd, 0xf7, 0x61, 0xcf, 0x66, 0x87, 0x9d, 0x4a,
-0xfb, 0xac, 0x97, 0xd7, 0xef, 0xa9, 0x00, 0xbb,
-0x0a, 0xe0, 0xfc, 0x1a, 0x96, 0x56, 0x11, 0x1c,
-0x23, 0x4f, 0xfe, 0x8f, 0x5b, 0x95, 0x00, 0xf7,
-0x2b, 0xcb, 0x0d, 0xd8, 0xc0, 0x0e, 0xc0, 0xa1,
-0x3b, 0xef, 0x44, 0x0a, 0xe0, 0xf9, 0x63, 0x7f,
-0xf7, 0x39, 0xd9, 0xdd, 0xdf, 0x13, 0x66, 0x31,
-0x75, 0x69, 0x62, 0x6e, 0x7e, 0x39, 0x51, 0xeb,
-0x2c, 0xac, 0x2d, 0xb5, 0xb7, 0xdb, 0x8d, 0x8b,
-0x4b, 0xd8, 0x01, 0xa8, 0xe1, 0x4e, 0x00, 0xc4,
-0x01, 0xb0, 0x42, 0x80, 0x63, 0x69, 0x3a, 0x0f,
-0x58, 0xee, 0x00, 0xc4, 0x5d, 0xc7, 0x55, 0x28,
-0x43, 0x78, 0x22, 0xe9, 0x1d, 0x3c, 0x8d, 0xbc,
-0xee, 0x3c, 0x74, 0xfc, 0xbe, 0x5e, 0x37, 0x65,
-0xfd, 0x7f, 0xa7, 0x34, 0x57, 0x5e, 0x72, 0x23,
-0x89, 0x4a, 0x4c, 0x1c, 0xc6, 0x2e, 0x58, 0x4f,
-0xd1, 0xa8, 0xbe, 0x6a, 0xe7, 0x23, 0x31, 0x07,
-0xe3, 0x39, 0xf7, 0xa5, 0x4e, 0xc3, 0x1a, 0xaf,
-0x42, 0x38, 0x86, 0x73, 0x83, 0x17, 0xbb, 0x92,
-0x95, 0x07, 0x34, 0x89, 0xd3, 0x00, 0x16, 0xda,
-0xcc, 0xac, 0x20, 0xea, 0x40, 0x79, 0x40, 0xd9,
-0x48, 0xa5, 0x85, 0x47, 0x15, 0x8e, 0x94, 0xeb,
-0xf8, 0x3a, 0x59, 0x97, 0x4b, 0xaf, 0x8f, 0xd4,
-0x4d, 0x24, 0x31, 0x32, 0x05, 0x80, 0xe4, 0x8a,
-0x5c, 0x5c, 0xef, 0xea, 0x92, 0xf5, 0x4c, 0xf3,
-0x71, 0x43, 0xe2, 0xd1, 0x4b, 0x92, 0xfa, 0x53,
-0x46, 0x6d, 0x88, 0xb4, 0xdc, 0x8a, 0x1d, 0x86,
-0x90, 0x80, 0xe2, 0x6d, 0xeb, 0xe2, 0xc3, 0xd4,
-0xeb, 0x2a, 0x9f, 0x4b, 0x54, 0xd2, 0x6c, 0x85,
-0x2a, 0x6a, 0x12, 0x32, 0x53, 0xfb, 0x8e, 0x8e,
-0x57, 0xd3, 0xed, 0x23, 0x35, 0x31, 0xe2, 0xfd,
-0xaf, 0xed, 0x31, 0x06, 0x70, 0x3c, 0xbc, 0xc1,
-0x8d, 0xd9, 0x23, 0xd1, 0x00, 0x3d, 0xd5, 0x83,
-0xe8, 0xff, 0x0b, 0x5d, 0x79, 0x65, 0xb5, 0x03,
-0xff, 0xfa, 0xff, 0xac, 0xf5, 0x71, 0x43, 0x58,
-0x2c, 0x6c, 0x7d, 0xc7, 0xfc, 0x80, 0x8c, 0xff,
-0x86, 0x15, 0x0f, 0xc0, 0xe7, 0x61, 0x47, 0x00,
-0x3f, 0xf2, 0x91, 0xe7, 0x9f, 0xff, 0xfe, 0x7f,
-0x26, 0xb9, 0xf9, 0x7b, 0x43, 0xcd, 0xa5, 0x2e,
-0x5d, 0x9e, 0x9b, 0xaf, 0x9c, 0xcd, 0xae, 0x22,
-0xf9, 0xdf, 0x9e, 0x69, 0x6c, 0x23, 0x0f, 0x40,
-0xcb, 0x2c, 0x5a, 0x4d, 0x00, 0x38, 0x07, 0x28,
-0xf5, 0x54, 0xd2, 0x76, 0x00, 0x9e, 0xc6, 0x8d,
-0x80, 0x4e, 0x0c, 0x80, 0xcb, 0x50, 0x27, 0x1a,
-0x41, 0x6b, 0xb7, 0xce, 0xca, 0x6a, 0xd3, 0xd6,
-0x34, 0xdd, 0xfa, 0xfa, 0x7a, 0xa3, 0x7d, 0xba,
-0x81, 0xa7, 0x92, 0x27, 0x2f, 0xdb, 0x8d, 0xc6,
-0xf6, 0x0c, 0x2a, 0xe3, 0x92, 0xc5, 0xbd, 0x16,
-0xba, 0x9c, 0xd9, 0x5a, 0xde, 0x12, 0xb7, 0x19,
-0x2c, 0xfe, 0x8f, 0xec, 0x3f, 0x9e, 0x5f, 0xa0,
-0x87, 0xfc, 0x93, 0x01, 0xc0, 0xf0, 0x3c, 0xd4,
-0xfc, 0x11, 0xec, 0x66, 0x20, 0xba, 0x52, 0xd5,
-0xd0, 0x26, 0x71, 0x23, 0x00, 0x92, 0xde, 0x85,
-0x8b, 0xb8, 0xfd, 0xce, 0xdd, 0xf1, 0xe6, 0x20,
-0x71, 0xad, 0x58, 0x64, 0x19, 0x57, 0x22, 0xb0,
-0x3a, 0x9e, 0x69, 0x9c, 0x26, 0x17, 0x0b, 0x5f,
-0xb3, 0xd3, 0xeb, 0xb8, 0x43, 0xbf, 0x44, 0x01,
-0xe0, 0xf9, 0x86, 0xca, 0xe5, 0xf5, 0x19, 0x44,
-0xc3, 0x59, 0x1a, 0xaf, 0xb6, 0xbe, 0x5e, 0xd6,
-0x85, 0xc9, 0xc9, 0x38, 0xf9, 0xb7, 0x0e, 0x2b,
-0x6a, 0x2e, 0xb6, 0xe4, 0x99, 0x5b, 0x78, 0x86,
-0xe5, 0x7a, 0xf9, 0x34, 0x3a, 0x8c, 0x19, 0xfb,
-0xbe, 0x59, 0xff, 0x4e, 0x6f, 0xe3, 0x1b, 0xb8,
-0xc3, 0xf7, 0xc2, 0x42, 0x0a, 0x75, 0x19, 0x4f,
-0x53, 0xa4, 0x8b, 0x2e, 0x20, 0xd2, 0x23, 0x75,
-0x3d, 0x72, 0xfa, 0xf4, 0xb6, 0xb5, 0x05, 0xfc,
-0x77, 0x7a, 0x66, 0x3d, 0x52, 0xc6, 0xd5, 0x1c,
-0x2e, 0xb9, 0x23, 0xd8, 0xe8, 0x4b, 0xf2, 0x7b,
-0x80, 0xfe, 0x8e, 0x58, 0x62, 0xe4, 0x64, 0xd3,
-0x58, 0x4f, 0x2f, 0x24, 0x60, 0x3b, 0xde, 0x6c,
-0x54, 0xde, 0x9b, 0x2d, 0x5c, 0x9a, 0x1b, 0xec,
-0xac, 0xe7, 0xd5, 0x13, 0xc6, 0xa7, 0xed, 0x46,
-0x3a, 0x4b, 0x62, 0xed, 0xd7, 0x59, 0xf7, 0x03,
-0x85, 0xb5, 0x28, 0xa5, 0x01, 0xb0, 0x7f, 0x1f,
-0xde, 0x20, 0xc3, 0xfd, 0x6c, 0x38, 0x3f, 0xb9,
-0x51, 0xff, 0x71, 0xcb, 0x0b, 0xb0, 0xc4, 0x1f,
-0x37, 0x01, 0x62, 0x0f, 0xe0, 0x4e, 0xe4, 0x01,
-0x7c, 0xe4, 0xfb, 0xbf, 0xff, 0x3f, 0x0a, 0xf7,
-0x7e, 0xaf, 0xa8, 0x73, 0xa9, 0x22, 0xaa, 0xff,
-0xb7, 0x90, 0xfc, 0x6b, 0x85, 0x8b, 0xdb, 0x33,
-0xeb, 0x48, 0x28, 0x97, 0x0a, 0x0b, 0xab, 0xd9,
-0xad, 0x44, 0x85, 0x0c, 0x03, 0x70, 0x29, 0x95,
-0xa2, 0xda, 0x00, 0xac, 0x44, 0xe0, 0x67, 0xa9,
-0xc1, 0x00, 0xa8, 0x72, 0x8d, 0xbc, 0x69, 0xc7,
-0xfe, 0x8b, 0x23, 0xbb, 0xd7, 0x23, 0xdb, 0x85,
-0xb5, 0xb5, 0x85, 0x85, 0x05, 0x6d, 0xc1, 0x42,
-0xd3, 0x16, 0x70, 0xc0, 0x51, 0x3a, 0x46, 0xcd,
-0xb6, 0x6b, 0xde, 0x27, 0xf4, 0xad, 0x0a, 0x19,
-0xa2, 0x93, 0xeb, 0xc4, 0x1f, 0x0d, 0x52, 0x18,
-0x52, 0xba, 0xb6, 0x28, 0x19, 0x68, 0x92, 0x1a,
-0x02, 0x2c, 0x51, 0x5e, 0x26, 0x2d, 0x04, 0x82,
-0x0a, 0xda, 0x55, 0x11, 0x2c, 0x91, 0x3c, 0x20,
-0xa2, 0x00, 0x70, 0x1a, 0x00, 0x5d, 0xab, 0xd8,
-0x19, 0xa0, 0x6d, 0x3b, 0xa1, 0x57, 0x2a, 0xa4,
-0x3d, 0x66, 0xc1, 0x41, 0xc3, 0x4f, 0x7c, 0xb1,
-0xca, 0xa6, 0x64, 0x04, 0x10, 0x3c, 0x0b, 0xf2,
-0x0c, 0x8e, 0xdb, 0x2c, 0xb8, 0x97, 0x57, 0xc3,
-0x8f, 0x35, 0x3c, 0x0d, 0xba, 0x98, 0x45, 0xc0,
-0xd5, 0x6d, 0xf0, 0x71, 0x25, 0x47, 0x16, 0xe5,
-0x03, 0x80, 0x22, 0x65, 0xb9, 0xa3, 0x37, 0xda,
-0x68, 0xdb, 0x9a, 0xb7, 0x75, 0xfb, 0x0e, 0xa2,
-0xef, 0xca, 0x7c, 0x2e, 0x11, 0x56, 0xa8, 0xa8,
-0x08, 0x48, 0x1c, 0x2a, 0xbb, 0x08, 0x14, 0x34,
-0xfa, 0x9c, 0xb4, 0x42, 0xe1, 0x62, 0x43, 0x1f,
-0xe1, 0x2b, 0x68, 0x7e, 0x73, 0x1a, 0x07, 0xe4,
-0x70, 0x98, 0x88, 0xce, 0x38, 0x2d, 0x80, 0xe3,
-0xec, 0x7b, 0x52, 0xe7, 0x76, 0x85, 0x7f, 0xdc,
-0x4e, 0xb9, 0xb3, 0xc4, 0x7a, 0x9c, 0x89, 0x19,
-0x8c, 0xcf, 0xba, 0x52, 0x3d, 0xee, 0x1a, 0x6a,
-0xd7, 0x49, 0xa7, 0xcc, 0xf6, 0xac, 0xf8, 0xc1,
-0x8b, 0x3b, 0x58, 0x62, 0x8f, 0x95, 0xcc, 0xc6,
-0xac, 0xbb, 0xa3, 0x0d, 0xa7, 0xa6, 0x30, 0xee,
-0x38, 0xfb, 0x8e, 0xd5, 0xdf, 0xc0, 0xf2, 0x3f,
-0x8e, 0x75, 0xc0, 0xc6, 0x2c, 0x09, 0x01, 0xde,
-0x89, 0x1c, 0x80, 0xe7, 0x9f, 0xff, 0xc8, 0x55,
-0x18, 0x00, 0x28, 0x9f, 0x0a, 0x5d, 0xc6, 0xfe,
-0x3f, 0xb2, 0xff, 0x85, 0xf6, 0x4c, 0x03, 0xd9,
-0xe8, 0x06, 0x76, 0x00, 0x3a, 0xb5, 0x17, 0x71,
-0x13, 0x80, 0xd5, 0x0d, 0xd8, 0x52, 0x00, 0x63,
-0xe9, 0xa7, 0xdd, 0x2a, 0x80, 0xa8, 0x01, 0x4a,
-0xe4, 0xe6, 0xb7, 0x70, 0xbc, 0x5d, 0x18, 0xd8,
-0x1d, 0x8f, 0xd6, 0x19, 0xc1, 0xf3, 0xc8, 0x67,
-0x17, 0xb3, 0xe8, 0x49, 0x1e, 0x35, 0xf4, 0x40,
-0x64, 0xd6, 0xda, 0xe2, 0xc4, 0x9e, 0x94, 0x7b,
-0x1f, 0x32, 0x63, 0x15, 0x6b, 0x92, 0x10, 0x66,
-0x19, 0xbf, 0x21, 0x85, 0x58, 0x42, 0x46, 0x26,
-0x23, 0x8c, 0x6a, 0xd5, 0xa4, 0x93, 0x7b, 0x86,
-0xf4, 0x15, 0x3c, 0xf3, 0xb5, 0x38, 0x05, 0x41,
-0xc0, 0x01, 0xc0, 0x38, 0xe2, 0x31, 0x63, 0xd1,
-0xee, 0x0c, 0x4c, 0x66, 0x05, 0xa1, 0x64, 0x4f,
-0x0f, 0x1e, 0x51, 0xac, 0xe8, 0xcb, 0x93, 0xcb,
-0xcb, 0x89, 0xad, 0x5a, 0xcd, 0xbe, 0x5a, 0x8b,
-0xe4, 0xba, 0x2d, 0x76, 0x70, 0x9d, 0x40, 0x2a,
-0x59, 0xfa, 0xe9, 0xc2, 0x42, 0xa7, 0x63, 0x5f,
-0x57, 0xbc, 0x42, 0x0d, 0xaf, 0xd0, 0x41, 0xb7,
-0xf4, 0xb4, 0x18, 0xd3, 0x93, 0x5c, 0xbb, 0xae,
-0xde, 0xc1, 0x53, 0x37, 0x8b, 0x53, 0xb7, 0x90,
-0x59, 0x56, 0x96, 0x50, 0x7d, 0xd0, 0xbb, 0x71,
-0x78, 0x17, 0xe4, 0x78, 0xd0, 0x1d, 0x6c, 0x08,
-0xb9, 0x44, 0xd6, 0x34, 0x25, 0x33, 0xe2, 0x00,
-0x20, 0x4d, 0x32, 0x57, 0x73, 0xa6, 0xb3, 0x38,
-0xea, 0x6c, 0x29, 0x8b, 0xcf, 0x69, 0x35, 0x53,
-0xb8, 0xb8, 0x2e, 0x58, 0x80, 0xf6, 0x9e, 0x42,
-0x00, 0x87, 0x5d, 0x09, 0x1c, 0x0f, 0xd3, 0x4a,
-0x40, 0x68, 0xb8, 0x67, 0x35, 0xc3, 0x34, 0x35,
-0x06, 0xcf, 0x06, 0xab, 0x31, 0xd8, 0xc6, 0xc0,
-0x0d, 0xdb, 0x0b, 0x40, 0xff, 0xb1, 0x07, 0xb0,
-0xd1, 0xe3, 0xd5, 0x7a, 0x71, 0x96, 0xb5, 0xd5,
-0xc6, 0x86, 0xe3, 0x05, 0x90, 0x18, 0x9f, 0xad,
-0x1d, 0xc8, 0x91, 0xd8, 0x7a, 0x6b, 0xdc, 0x0a,
-0x00, 0x8e, 0x63, 0xeb, 0x3f, 0x6d, 0x2b, 0x00,
-0x6c, 0xff, 0x7f, 0xe3, 0x03, 0xfc, 0x55, 0xdd,
-0x3b, 0x2b, 0x56, 0xfd, 0x7f, 0x6b, 0x31, 0xa3,
-0x15, 0x90, 0xf9, 0x5f, 0x8f, 0xac, 0xaf, 0x6f,
-0xe3, 0x08, 0x40, 0xb6, 0xb6, 0x62, 0xe5, 0x00,
-0x58, 0x93, 0x81, 0x27, 0xbb, 0x63, 0x5d, 0xab,
-0x06, 0x80, 0x83, 0x80, 0x74, 0x26, 0x90, 0x57,
-0x0b, 0x28, 0x25, 0x88, 0xfc, 0x9f, 0x96, 0xcd,
-0x23, 0x5b, 0x6f, 0x14, 0x90, 0x4f, 0x71, 0x76,
-0x25, 0xf1, 0xe2, 0x0a, 0x45, 0xa2, 0x86, 0xe5,
-0x44, 0x74, 0x00, 0x3c, 0xf7, 0x3e, 0x3a, 0x92,
-0xb5, 0x46, 0xf1, 0xe3, 0xa4, 0x38, 0x90, 0x7c,
-0xe6, 0x8c, 0x8c, 0x26, 0x8e, 0x80, 0xab, 0x8e,
-0x78, 0x95, 0x87, 0x49, 0xbd, 0x95, 0x90, 0x54,
-0x11, 0x02, 0x0f, 0x00, 0xc6, 0x13, 0xef, 0x18,
-0xb1, 0x79, 0xac, 0x00, 0x12, 0xb5, 0xd5, 0x82,
-0x35, 0x2b, 0x88, 0xb3, 0xf3, 0x48, 0xe0, 0x26,
-0xc5, 0xaa, 0x3e, 0x84, 0x7c, 0x88, 0xe5, 0xd6,
-0x0a, 0x4b, 0x02, 0xb9, 0x04, 0x85, 0xd3, 0x92,
-0x49, 0xfa, 0x36, 0xcd, 0x72, 0x7b, 0x01, 0x67,
-0x6d, 0xf3, 0x2b, 0xd4, 0xf0, 0xec, 0xa4, 0xa2,
-0x4c, 0x8b, 0x75, 0x1b, 0xdc, 0x72, 0x6b, 0x4f,
-0x16, 0xc0, 0x5d, 0x2b, 0xd5, 0x28, 0xb7, 0xd7,
-0x3a, 0xb5, 0x2d, 0xf6, 0xbe, 0x59, 0x9b, 0x5f,
-0x59, 0x29, 0x08, 0x71, 0x98, 0x21, 0x1d, 0x17,
-0x01, 0x21, 0x5f, 0x93, 0x14, 0x81, 0xd3, 0x56,
-0x11, 0x78, 0x11, 0xaf, 0xb9, 0xb2, 0x82, 0x0f,
-0x37, 0x81, 0xcf, 0x09, 0x77, 0x99, 0xe0, 0xf4,
-0x6f, 0x73, 0x72, 0x77, 0x97, 0xdf, 0xe2, 0x07,
-0x37, 0xc2, 0xe3, 0xae, 0xf5, 0x65, 0x82, 0xff,
-0x1b, 0x9e, 0x35, 0x1e, 0x9f, 0x9d, 0x66, 0x6c,
-0xb6, 0x25, 0xd9, 0x74, 0x35, 0xdd, 0x15, 0x5f,
-0x5b, 0x9e, 0xa9, 0x56, 0x7a, 0x5b, 0x76, 0xdd,
-0x85, 0x5c, 0xd9, 0xb6, 0xff, 0x5b, 0xea, 0xc3,
-0x59, 0xdf, 0xd9, 0x88, 0xf7, 0x9e, 0x71, 0x20,
-0x36, 0xdc, 0xbf, 0x0d, 0x4b, 0xf6, 0x37, 0x1c,
-0x55, 0x80, 0xd4, 0xd7, 0xc6, 0x06, 0xf6, 0xff,
-0x49, 0x05, 0xe0, 0x23, 0x1f, 0xf9, 0x8d, 0xcd,
-0xa9, 0x7d, 0x27, 0x8b, 0xe4, 0xff, 0x1c, 0xb1,
-0xff, 0xa8, 0xfa, 0x8f, 0xaa, 0x63, 0x91, 0xc8,
-0x3a, 0xaa, 0x01, 0x68, 0x0b, 0x38, 0x07, 0xc0,
-0x0e, 0x01, 0xe2, 0x7e, 0xc0, 0x6e, 0x0c, 0x10,
-0xc7, 0x00, 0xe2, 0x25, 0x2f, 0x11, 0x80, 0x1e,
-0x11, 0x20, 0xa1, 0x5b, 0xf6, 0x5f, 0x98, 0xd0,
-0x1b, 0xcf, 0xd4, 0xbb, 0xb0, 0xb8, 0xd5, 0x5a,
-0x26, 0x33, 0xc8, 0x2f, 0xe7, 0x2b, 0x95, 0x0a,
-0x7a, 0xcd, 0x2f, 0x23, 0x2b, 0xb7, 0xb8, 0x20,
-0x8c, 0xd0, 0x49, 0xcf, 0x18, 0x94, 0x8c, 0x64,
-0xf2, 0x38, 0x00, 0x10, 0x31, 0x37, 0x99, 0xb6,
-0xa2, 0x40, 0x9d, 0xc5, 0x2a, 0xc6, 0x42, 0x61,
-0x7d, 0x87, 0x1f, 0x39, 0x9c, 0xb6, 0x2e, 0x55,
-0x2b, 0xf1, 0xe5, 0x3d, 0x42, 0xe2, 0x4b, 0x76,
-0x97, 0x65, 0x6f, 0x4c, 0x1b, 0xd9, 0xc2, 0x0a,
-0x00, 0x55, 0x2b, 0x56, 0x97, 0x1a, 0x75, 0x3a,
-0x13, 0x78, 0x29, 0x68, 0x4e, 0xe1, 0x81, 0x91,
-0xd6, 0xfc, 0xe4, 0x64, 0x1e, 0x4f, 0xc6, 0x52,
-0xb1, 0x9e, 0xe4, 0xdd, 0x32, 0xaa, 0xa4, 0xe1,
-0x49, 0x7a, 0x25, 0xce, 0xd5, 0x7a, 0x61, 0x35,
-0xb6, 0xd2, 0xb2, 0x2f, 0x2b, 0xf9, 0xab, 0xe0,
-0x8b, 0xbb, 0x12, 0xcb, 0xe0, 0x09, 0x50, 0xfa,
-0x0f, 0x6e, 0x1c, 0x27, 0x69, 0x3b, 0x92, 0xc9,
-0x82, 0xb0, 0xd5, 0x5e, 0xca, 0xd4, 0xce, 0xe2,
-0x3b, 0xb7, 0x4c, 0x8e, 0x63, 0xd9, 0x7e, 0x90,
-0xf7, 0x19, 0x21, 0x97, 0x08, 0x4f, 0x53, 0xb4,
-0x28, 0xe9, 0x49, 0x80, 0xdd, 0xff, 0x86, 0x86,
-0x8b, 0x80, 0x73, 0x7c, 0x64, 0x53, 0x48, 0xc9,
-0xd5, 0xf0, 0xc0, 0x69, 0xfc, 0x49, 0xf9, 0x0d,
-0x6a, 0x14, 0x88, 0x2f, 0x4f, 0x0b, 0x02, 0x49,
-0x9c, 0xed, 0x0d, 0x4a, 0x03, 0x84, 0x3d, 0xc3,
-0x3e, 0x4e, 0x2f, 0xe6, 0xfa, 0xea, 0xcc, 0x9a,
-0x94, 0x84, 0x4e, 0xd3, 0x1e, 0x03, 0x53, 0x0d,
-0x10, 0x3e, 0xd2, 0x8c, 0x7b, 0x5a, 0xc0, 0x5e,
-0x6c, 0xdc, 0xd6, 0x11, 0xd8, 0xc9, 0x1f, 0x77,
-0x9d, 0x01, 0xdb, 0xfe, 0x5b, 0x15, 0x00, 0xe2,
-0xb3, 0xcc, 0x6e, 0xcc, 0x22, 0xf9, 0x9f, 0xc5,
-0xf2, 0xff, 0x8f, 0x57, 0x21, 0x1f, 0x3c, 0x63,
-0xcb, 0x3f, 0xb2, 0xff, 0x4b, 0xed, 0x48, 0x24,
-0x52, 0x2e, 0x23, 0x05, 0xd0, 0x5e, 0xd3, 0x56,
-0x71, 0x2f, 0x00, 0x1c, 0x01, 0xc0, 0x35, 0x00,
-0x3b, 0x04, 0x60, 0xc5, 0x00, 0xbc, 0x4c, 0x40,
-0x47, 0x01, 0x38, 0xf6, 0xbf, 0xa2, 0x27, 0x48,
-0xc3, 0xb5, 0xe0, 0x4d, 0xab, 0x3b, 0x48, 0xfe,
-0x91, 0x43, 0x91, 0xcf, 0x4f, 0x5a, 0xcc, 0x93,
-0x67, 0x1e, 0x8f, 0x3a, 0x40, 0xdc, 0x4e, 0xce,
-0xec, 0xe8, 0x51, 0xb7, 0x64, 0xce, 0x14, 0x48,
-0x27, 0xfe, 0x19, 0x2e, 0x37, 0x2d, 0x50, 0x00,
-0x70, 0x74, 0x67, 0xad, 0xcd, 0x8f, 0x1c, 0x38,
-0xa5, 0x36, 0xa9, 0x0e, 0x70, 0x07, 0x46, 0x12,
-0x2b, 0xf2, 0x01, 0xc0, 0x76, 0x1b, 0x83, 0x8e,
-0x0e, 0x23, 0xeb, 0x3d, 0x3f, 0x99, 0x5f, 0x7e,
-0xd1, 0x9e, 0x15, 0xc4, 0xcb, 0xd8, 0x09, 0x9a,
-0x07, 0x34, 0x61, 0xb6, 0xf0, 0x64, 0xe1, 0x93,
-0x14, 0xf9, 0x79, 0x74, 0xe5, 0x96, 0x71, 0xab,
-0xa0, 0xd8, 0x57, 0x19, 0xc9, 0xe8, 0x7a, 0xa1,
-0xb3, 0xd5, 0xca, 0xbb, 0x57, 0xd7, 0x5e, 0x87,
-0xf4, 0x47, 0x94, 0xb4, 0xc6, 0x88, 0xc3, 0x31,
-0xe1, 0x01, 0xc0, 0xa4, 0x69, 0x7b, 0x58, 0xfe,
-0xb1, 0x6e, 0x41, 0x9b, 0x66, 0x37, 0x3e, 0x49,
-0x3e, 0x2f, 0x0a, 0xb7, 0x81, 0xcc, 0xe9, 0xa8,
-0x49, 0x7a, 0x12, 0x20, 0x47, 0x62, 0x7b, 0x21,
-0x7b, 0x16, 0x15, 0x81, 0x79, 0xf6, 0x18, 0xf1,
-0xb8, 0x49, 0xa2, 0x93, 0xb2, 0x87, 0xce, 0x80,
-0xa5, 0xbb, 0x69, 0x49, 0x73, 0xe5, 0xd6, 0x0a,
-0xa6, 0x39, 0x1a, 0x60, 0xc3, 0xd1, 0x08, 0x58,
-0xba, 0x39, 0xf3, 0x8c, 0x7f, 0x70, 0xdb, 0xef,
-0xdd, 0x3a, 0x39, 0x5d, 0xf5, 0x1f, 0x77, 0x6b,
-0x0e, 0xce, 0x3b, 0xf7, 0xe3, 0xb8, 0xfb, 0x81,
-0xf9, 0x4f, 0x29, 0x08, 0x2c, 0xf5, 0x1b, 0x6e,
-0x38, 0xc1, 0xaa, 0x01, 0x58, 0x31, 0x7f, 0xe2,
-0xf4, 0x6f, 0x7c, 0xd2, 0xfe, 0x4f, 0xfe, 0xb0,
-0xfd, 0x1f, 0x47, 0x0a, 0x80, 0xd8, 0xff, 0xbb,
-0xf8, 0x3b, 0xb9, 0x0f, 0xb4, 0x89, 0xfc, 0x57,
-0x90, 0xfd, 0xd7, 0x88, 0xfd, 0xd7, 0x91, 0x02,
-0x38, 0x8d, 0x6b, 0x00, 0x1d, 0xac, 0xac, 0xe7,
-0xab, 0x56, 0x12, 0xc0, 0x53, 0x51, 0xab, 0x23,
-0xc0, 0x33, 0x4e, 0x22, 0x10, 0x35, 0x1e, 0x80,
-0xa7, 0x04, 0xf2, 0x23, 0x89, 0x44, 0x76, 0x41,
-0xec, 0xac, 0x8b, 0xe5, 0xbf, 0x8d, 0xe4, 0xbf,
-0x32, 0x89, 0x8b, 0xf5, 0x3c, 0xa6, 0x3a, 0x89,
-0xff, 0x26, 0xf3, 0x2d, 0xd2, 0xb8, 0xc7, 0x2b,
-0x0c, 0xba, 0x85, 0x3e, 0x82, 0xac, 0x04, 0x6e,
-0x9b, 0x66, 0xe5, 0x58, 0x0d, 0x30, 0xbe, 0x76,
-0xba, 0xa1, 0x0f, 0xaf, 0x8f, 0x08, 0x23, 0x07,
-0xd2, 0x33, 0xe6, 0xe4, 0x0c, 0x22, 0xff, 0x65,
-0x61, 0x0c, 0xf2, 0xdd, 0x77, 0x46, 0x0f, 0x45,
-0x22, 0x43, 0x38, 0x06, 0x88, 0x47, 0x03, 0x58,
-0x5a, 0x67, 0xe2, 0x75, 0x7d, 0x86, 0x2c, 0x75,
-0x28, 0x5a, 0x43, 0x0a, 0xce, 0xcf, 0x4f, 0x5a,
-0xd7, 0xc9, 0xfe, 0x9f, 0xb7, 0x2e, 0x96, 0xd0,
-0x5e, 0x86, 0x64, 0xf4, 0xf4, 0x5a, 0x67, 0x6b,
-0x19, 0x09, 0xe4, 0xbc, 0x0b, 0xe9, 0x8d, 0x54,
-0xb1, 0xba, 0x4e, 0xf3, 0x56, 0x43, 0xac, 0xdb,
-0xc4, 0x87, 0x0b, 0x2d, 0x79, 0xda, 0xce, 0xa6,
-0x19, 0x59, 0x5a, 0x8d, 0xb5, 0x98, 0x6d, 0x5b,
-0xf7, 0x0f, 0x1f, 0x61, 0x56, 0xe8, 0x27, 0x75,
-0x00, 0x5d, 0x50, 0xe9, 0x9c, 0x6e, 0x4d, 0xec,
-0x02, 0x66, 0x57, 0x90, 0xfb, 0x47, 0xce, 0xac,
-0x6a, 0x95, 0x01, 0x54, 0x02, 0xb0, 0x77, 0xc7,
-0x8f, 0xd1, 0x1a, 0x34, 0xc1, 0x43, 0xca, 0xb3,
-0xa7, 0xc2, 0x94, 0x71, 0x75, 0x23, 0x6a, 0x76,
-0x8d, 0xda, 0xf7, 0xc1, 0xfe, 0xc3, 0x06, 0x98,
-0xc0, 0x6f, 0xc4, 0xd9, 0x32, 0xed, 0xf6, 0x6f,
-0x78, 0x6a, 0x81, 0xfd, 0xc2, 0xb5, 0xf6, 0xce,
-0xee, 0xa7, 0xbd, 0xc8, 0xa4, 0x65, 0xe9, 0xad,
-0xad, 0x62, 0x7d, 0x60, 0x45, 0xfe, 0xed, 0xaf,
-0x36, 0xec, 0x20, 0xc0, 0xf8, 0xc6, 0x2c, 0x52,
-0x00, 0x1b, 0x44, 0x01, 0x7c, 0xec, 0x23, 0xbf,
-0x73, 0x15, 0xec, 0x7f, 0x23, 0x14, 0x22, 0xf6,
-0xbf, 0x46, 0xfc, 0xff, 0x72, 0x04, 0xc9, 0x7f,
-0x39, 0xd2, 0xd8, 0x2e, 0x68, 0xb8, 0x1f, 0x30,
-0x09, 0x01, 0x5e, 0x2e, 0xe2, 0x91, 0x80, 0xa2,
-0x4e, 0x2b, 0x20, 0x51, 0x00, 0x4f, 0x13, 0xf1,
-0xa7, 0xc2, 0x00, 0xe4, 0x59, 0x35, 0x63, 0x64,
-0x42, 0x6f, 0x31, 0x8d, 0xbc, 0xb9, 0x53, 0x8f,
-0x6c, 0x2f, 0xd9, 0x61, 0x64, 0x8d, 0x74, 0x33,
-0xd4, 0xd0, 0x07, 0x6d, 0xcb, 0xca, 0x16, 0xdd,
-0xe4, 0x16, 0xa7, 0xd2, 0x6f, 0x5b, 0x23, 0xad,
-0x3c, 0x9e, 0xca, 0x9b, 0x0f, 0x7c, 0x05, 0x98,
-0x2a, 0x22, 0x64, 0x34, 0xf8, 0xe9, 0xbf, 0x48,
-0x7b, 0x36, 0x35, 0xce, 0x14, 0xe9, 0x5e, 0xb0,
-0xd0, 0x7e, 0xcf, 0x5e, 0x06, 0x00, 0xe3, 0x29,
-0xea, 0x0d, 0x54, 0x71, 0x9a, 0xac, 0x90, 0x49,
-0x01, 0x98, 0xe0, 0x66, 0x33, 0x16, 0x2c, 0x6d,
-0xd1, 0x18, 0x5e, 0x20, 0x57, 0xc8, 0x8e, 0xb5,
-0x93, 0x60, 0x3e, 0xfa, 0x9c, 0x20, 0x13, 0xfa,
-0x09, 0x95, 0xa5, 0xa6, 0x8a, 0xd4, 0x6b, 0xa4,
-0x5d, 0x58, 0xd3, 0xac, 0x05, 0xad, 0xeb, 0x8b,
-0x58, 0x24, 0x93, 0x9b, 0x88, 0xbe, 0x8d, 0x38,
-0xcc, 0x6e, 0xa9, 0xd0, 0x46, 0xea, 0x0a, 0x4f,
-0xdd, 0x28, 0x0e, 0xca, 0xbd, 0xa3, 0xaf, 0xb7,
-0x97, 0xd6, 0xec, 0xcd, 0xae, 0x59, 0x07, 0xb3,
-0x60, 0xef, 0xa4, 0xcd, 0xcc, 0xa6, 0x82, 0xb1,
-0x14, 0xaa, 0x64, 0xa7, 0x2a, 0x8e, 0xff, 0x37,
-0x96, 0xec, 0x43, 0x23, 0x85, 0x60, 0x35, 0x86,
-0xae, 0x13, 0xce, 0x97, 0x94, 0xb4, 0xd1, 0xec,
-0xa1, 0x09, 0xe0, 0xfd, 0x87, 0xac, 0xba, 0x33,
-0x91, 0xce, 0x0d, 0x1c, 0x0b, 0x60, 0xed, 0x7b,
-0xd0, 0x87, 0x6b, 0xb3, 0xe9, 0xfa, 0xfb, 0x74,
-0xcf, 0xcd, 0xf8, 0x7f, 0x69, 0x2b, 0x88, 0x0d,
-0x4b, 0x15, 0x58, 0xb2, 0x6d, 0xeb, 0x04, 0xfc,
-0xfa, 0x49, 0xf2, 0xdb, 0xf8, 0xc6, 0x3f, 0xc7,
-0x2a, 0x60, 0x63, 0x7c, 0xfc, 0x93, 0x64, 0x21,
-0xcb, 0x07, 0x18, 0x9f, 0x7d, 0x60, 0x76, 0xf6,
-0x63, 0xb3, 0x77, 0x7e, 0xf8, 0x23, 0xfb, 0x9f,
-0xfe, 0x83, 0x13, 0x00, 0x43, 0xb8, 0xff, 0x0f,
-0x8e, 0xc3, 0x2c, 0x35, 0x70, 0x0b, 0xb3, 0xae,
-0xa3, 0x1a, 0x00, 0x72, 0x00, 0x34, 0xd2, 0x0d,
-0x88, 0xb4, 0x01, 0x5c, 0x08, 0x59, 0x31, 0x40,
-0x32, 0x18, 0xc8, 0x18, 0x89, 0x02, 0x3e, 0x6d,
-0x45, 0x01, 0xe2, 0x94, 0x0f, 0x80, 0x1b, 0xeb,
-0x63, 0x2b, 0xd2, 0x68, 0x9a, 0x39, 0xdc, 0x1e,
-0x1e, 0x76, 0xfe, 0xda, 0xc3, 0xed, 0x36, 0x7e,
-0x41, 0xef, 0x8c, 0x42, 0x4b, 0x32, 0x42, 0x3f,
-0x33, 0x00, 0x50, 0xce, 0x88, 0x4d, 0x2e, 0x6f,
-0x65, 0xd7, 0xf8, 0xad, 0xd6, 0xf9, 0x92, 0x27,
-0x52, 0xd9, 0x8c, 0x44, 0xf8, 0xda, 0xff, 0x14,
-0x3b, 0xcb, 0x44, 0xc8, 0xac, 0xa1, 0xfa, 0xff,
-0x92, 0x38, 0x4b, 0xd6, 0x1e, 0xec, 0x4f, 0xe9,
-0x80, 0x59, 0xa8, 0xe0, 0xb9, 0x54, 0x57, 0xb6,
-0x3a, 0x58, 0x01, 0x50, 0xce, 0x8d, 0xba, 0x1c,
-0x44, 0xad, 0x24, 0x33, 0xc3, 0xec, 0xf5, 0xc2,
-0x57, 0xab, 0x30, 0x6c, 0x68, 0xcb, 0x56, 0x5f,
-0x65, 0x5e, 0x46, 0x1b, 0xee, 0x72, 0xc3, 0xce,
-0xd5, 0x45, 0x7f, 0xc3, 0x11, 0x33, 0x91, 0x88,
-0x2d, 0xcc, 0x88, 0xba, 0x4d, 0x54, 0x9d, 0xa5,
-0x4c, 0xa3, 0x25, 0xed, 0x07, 0x31, 0x15, 0xc1,
-0x9b, 0xb4, 0x8e, 0xc0, 0x7e, 0xd8, 0xef, 0xd1,
-0x01, 0xa1, 0xf7, 0xa3, 0xe2, 0x00, 0x60, 0x35,
-0x6b, 0x0c, 0x38, 0x7e, 0xec, 0x51, 0xa3, 0x6d,
-0x1d, 0xdf, 0x70, 0xc1, 0xd9, 0x0e, 0x5a, 0x48,
-0x1f, 0xad, 0x10, 0x27, 0xe5, 0xb4, 0x2e, 0xec,
-0x78, 0x85, 0x3f, 0xc6, 0xc0, 0xbc, 0xcb, 0xaa,
-0xd3, 0x6f, 0x8c, 0xdb, 0x8d, 0xe8, 0x96, 0x85,
-0x75, 0x85, 0x6d, 0x7c, 0xda, 0x8a, 0xb1, 0xb9,
-0xe2, 0xe7, 0xbc, 0x30, 0x82, 0x69, 0x89, 0x1f,
-0x79, 0x10, 0xdf, 0x7c, 0xc3, 0x5a, 0x60, 0xdc,
-0xb1, 0xd0, 0xe3, 0x8c, 0x4f, 0xe1, 0xfe, 0x6d,
-0x50, 0x32, 0x6d, 0x7f, 0x61, 0x6f, 0xd1, 0x6e,
-0xcf, 0x9b, 0xf6, 0x0e, 0xc9, 0x72, 0x25, 0xb0,
-0xc4, 0x7f, 0x12, 0x3d, 0xad, 0x1d, 0x20, 0xc3,
-0x4f, 0xaa, 0xff, 0xe3, 0x88, 0x0d, 0xeb, 0x6f,
-0xf6, 0xdb, 0x1b, 0x48, 0x01, 0x7c, 0xe7, 0x63,
-0x77, 0x7e, 0xec, 0xc3, 0xfb, 0x9f, 0xfe, 0x83,
-0x5c, 0xed, 0x89, 0x10, 0xee, 0xff, 0x73, 0x4f,
-0x0d, 0xc9, 0xff, 0xcc, 0x7a, 0xa4, 0x6e, 0x29,
-0x00, 0xe4, 0x00, 0xac, 0x91, 0x6e, 0x40, 0x43,
-0xf3, 0xd5, 0xdc, 0xe5, 0x0b, 0x76, 0x08, 0x20,
-0xd9, 0xb5, 0xfa, 0x02, 0x59, 0xdd, 0x81, 0xa9,
-0x38, 0xa0, 0x9d, 0x0e, 0x3c, 0x61, 0xd6, 0xc8,
-0x74, 0x1a, 0x82, 0x89, 0xca, 0x8c, 0xc5, 0x49,
-0xb5, 0xc1, 0x7e, 0x8d, 0xdb, 0xef, 0xc7, 0x0a,
-0x33, 0x2d, 0x92, 0xdc, 0xb3, 0xc9, 0x2d, 0xef,
-0x88, 0x68, 0x89, 0xe4, 0xf0, 0x20, 0x49, 0xc2,
-0x15, 0x00, 0xae, 0x70, 0x26, 0xec, 0x05, 0xe8,
-0x04, 0x04, 0xf7, 0x3f, 0x7e, 0x17, 0x6f, 0x1b,
-0x65, 0xa1, 0x69, 0x01, 0x19, 0x4b, 0xdb, 0x66,
-0x91, 0x85, 0x52, 0x23, 0x59, 0xdc, 0x5f, 0x47,
-0xd4, 0x58, 0x8d, 0xa7, 0xb9, 0x8d, 0x97, 0x64,
-0x4f, 0x6f, 0xb7, 0x25, 0x7a, 0xa1, 0x49, 0x43,
-0x43, 0x15, 0xe6, 0xca, 0xf2, 0x4a, 0x0c, 0xc7,
-0xb6, 0x98, 0xe1, 0x40, 0xaa, 0x25, 0xf7, 0xf8,
-0x58, 0x09, 0xa4, 0x37, 0x19, 0x67, 0xae, 0x92,
-0x7d, 0xd1, 0x92, 0xed, 0xc2, 0x32, 0x76, 0x96,
-0x84, 0xae, 0xb5, 0x6a, 0x31, 0xed, 0x2d, 0x4b,
-0x61, 0xbb, 0xe2, 0xd2, 0xd8, 0x06, 0x93, 0xb9,
-0x51, 0xb2, 0x9a, 0xed, 0x3b, 0x92, 0xcc, 0xcd,
-0x66, 0x95, 0xdd, 0x26, 0xb5, 0x13, 0xfc, 0x3f,
-0x4d, 0xcd, 0x0a, 0x6b, 0x1d, 0x7e, 0x71, 0xc4,
-0xa7, 0x08, 0xb4, 0xbb, 0xf6, 0xa9, 0xb8, 0x1b,
-0x4c, 0x27, 0x73, 0x9a, 0xa1, 0x55, 0x90, 0x53,
-0xb3, 0xd6, 0x10, 0xdb, 0x0b, 0x0a, 0x25, 0x7a,
-0xb3, 0x72, 0xb5, 0xc9, 0xfd, 0x60, 0xbf, 0x3f,
-0x1e, 0xc6, 0xf2, 0x35, 0xee, 0x54, 0xc6, 0x37,
-0x88, 0x49, 0xa5, 0x64, 0x72, 0xc3, 0x09, 0xbb,
-0x09, 0x41, 0x39, 0x2f, 0x0a, 0x4f, 0xd9, 0x7f,
-0xc7, 0x79, 0xb7, 0x1d, 0x74, 0x4a, 0x41, 0xd0,
-0x72, 0x3e, 0xed, 0x68, 0x1b, 0x5e, 0x37, 0xd8,
-0x1f, 0x9d, 0x03, 0xd8, 0xa0, 0x35, 0xc4, 0x86,
-0xe3, 0xfc, 0x6f, 0x58, 0x0e, 0x3f, 0x11, 0x78,
-0xfc, 0x1b, 0x31, 0xfd, 0xe3, 0x0e, 0x0f, 0x8c,
-0x7f, 0xe7, 0x3b, 0xdf, 0xf9, 0xd8, 0xc7, 0x3e,
-0xf6, 0xe1, 0xab, 0x31, 0xff, 0xc7, 0xe6, 0x81,
-0x54, 0x31, 0x47, 0xe6, 0xca, 0x5e, 0x28, 0x6c,
-0xa3, 0xea, 0x7f, 0xbd, 0x6e, 0xd6, 0xb1, 0x02,
-0x68, 0x17, 0x70, 0x08, 0xf0, 0x2c, 0x69, 0x03,
-0xc0, 0x0a, 0x20, 0xe4, 0x54, 0x01, 0x48, 0x33,
-0x00, 0x19, 0x12, 0x10, 0x27, 0x03, 0x32, 0x71,
-0xc0, 0xa2, 0x99, 0x4d, 0x58, 0xd1, 0x34, 0xae,
-0x88, 0xd2, 0xd1, 0x34, 0xfa, 0xed, 0x28, 0x32,
-0x3b, 0x24, 0xfd, 0x9e, 0x8f, 0x16, 0x1f, 0x70,
-0x17, 0x89, 0x0f, 0xb7, 0x2b, 0x56, 0x20, 0x8b,
-0x2b, 0xc8, 0xe5, 0x28, 0xbb, 0xc9, 0x12, 0xbf,
-0xf5, 0x09, 0xc3, 0x94, 0xcc, 0x7e, 0x69, 0xa8,
-0xc3, 0x94, 0xcd, 0x8a, 0xe2, 0x86, 0xef, 0x05,
-0x49, 0xe2, 0x9b, 0x1b, 0xd8, 0xf6, 0x2d, 0x7c,
-0x8a, 0xff, 0x0f, 0xf1, 0x21, 0x03, 0x29, 0xad,
-0x4a, 0x65, 0x05, 0xf7, 0x04, 0x60, 0x23, 0x10,
-0x3b, 0x13, 0xa5, 0x3e, 0x6b, 0xd3, 0xbf, 0xd3,
-0xea, 0x27, 0x3e, 0x3c, 0x8c, 0xc7, 0x2a, 0x13,
-0x6d, 0x34, 0xdd, 0x57, 0x89, 0xde, 0x66, 0xd1,
-0xc0, 0x75, 0x9b, 0x6d, 0x71, 0x2c, 0xbe, 0x82,
-0x70, 0x37, 0x4a, 0xb5, 0xc8, 0x4a, 0x82, 0xc4,
-0x0a, 0x79, 0xdf, 0x62, 0x5e, 0x61, 0x75, 0x05,
-0xb7, 0x13, 0xe1, 0xea, 0xa4, 0x8c, 0xac, 0xdd,
-0x93, 0x80, 0x3b, 0x4a, 0xe9, 0x34, 0x45, 0xe9,
-0x96, 0xa1, 0xe1, 0x61, 0x93, 0xcb, 0x82, 0x05,
-0x98, 0xaa, 0x73, 0x2d, 0x0b, 0xbd, 0x6e, 0x02,
-0x7b, 0x40, 0x87, 0xc7, 0x6d, 0x41, 0xb4, 0xa4,
-0x16, 0x0b, 0x19, 0x19, 0x44, 0xeb, 0xd0, 0x2c,
-0x7a, 0x33, 0xee, 0x35, 0xb0, 0x3b, 0xe6, 0x5f,
-0x78, 0x88, 0xdf, 0x4f, 0x8f, 0x5b, 0x5b, 0xdb,
-0xf0, 0xc4, 0x5b, 0x0c, 0x2b, 0xb0, 0x3a, 0x81,
-0x0e, 0x37, 0xb8, 0xff, 0xdd, 0x8f, 0xae, 0xde,
-0xb0, 0x57, 0xb1, 0x7c, 0x0b, 0xeb, 0xb0, 0x88,
-0x36, 0x70, 0xf8, 0xf6, 0x03, 0xdf, 0x7e, 0x00,
-0x29, 0x80, 0x07, 0x1e, 0x40, 0xf2, 0xff, 0x1b,
-0x57, 0x63, 0x02, 0x70, 0xb5, 0x7a, 0xa6, 0x78,
-0x19, 0xc9, 0x7f, 0xac, 0x83, 0xe4, 0x1f, 0xd9,
-0xff, 0x3a, 0xce, 0x23, 0xc7, 0x6d, 0x00, 0x24,
-0x0b, 0x10, 0x27, 0x01, 0xcc, 0xcf, 0xe1, 0xa1,
-0x80, 0xb0, 0x07, 0xf0, 0x59, 0xa2, 0x00, 0xc6,
-0x9c, 0x20, 0x80, 0xdd, 0x21, 0x30, 0xee, 0x36,
-0x06, 0x86, 0xf4, 0xc5, 0x15, 0xf9, 0xe8, 0xaf,
-0x71, 0xe1, 0x16, 0x92, 0x52, 0x95, 0x8d, 0xd8,
-0x21, 0x6a, 0x7e, 0x85, 0x39, 0xf7, 0xbe, 0x96,
-0xc8, 0x30, 0xde, 0x89, 0xf7, 0x66, 0x2e, 0xf2,
-0x53, 0x59, 0xd3, 0x95, 0x69, 0x51, 0xbf, 0x94,
-0x4a, 0x19, 0xd5, 0x14, 0xb2, 0x65, 0x9b, 0xaa,
-0xc1, 0xa4, 0x97, 0x27, 0xf5, 0x4c, 0xab, 0x46,
-0x86, 0x2c, 0xe1, 0x16, 0x64, 0x03, 0xdb, 0xfd,
-0x0a, 0x5f, 0x89, 0x7d, 0x8b, 0x87, 0x03, 0xe9,
-0xe0, 0xf6, 0xb7, 0x04, 0xf2, 0xaa, 0x1a, 0x65,
-0x26, 0xb8, 0xad, 0x17, 0xf9, 0xb5, 0xe5, 0x1a,
-0x46, 0xf8, 0x2a, 0xae, 0xb5, 0x71, 0x8c, 0x2e,
-0x22, 0x73, 0x96, 0x28, 0x11, 0xf5, 0xb6, 0x16,
-0x32, 0x6a, 0xf2, 0xb6, 0x8d, 0xb6, 0x38, 0x8e,
-0x7b, 0x42, 0x6f, 0x9d, 0xc5, 0xa9, 0x92, 0x82,
-0x1b, 0xee, 0x76, 0xf0, 0x67, 0x0e, 0x54, 0x18,
-0x05, 0xca, 0xfd, 0x10, 0x35, 0xb2, 0xd8, 0xfe,
-0x8b, 0x4a, 0xc7, 0xcb, 0x14, 0x70, 0x37, 0x53,
-0xc2, 0xd3, 0xa7, 0x18, 0x9d, 0xce, 0x9a, 0x64,
-0x32, 0xd0, 0xa9, 0xcd, 0x14, 0x7f, 0x19, 0xfc,
-0xdc, 0x2f, 0x67, 0x31, 0xe7, 0xd8, 0xbe, 0x6c,
-0x3b, 0xec, 0x96, 0xdb, 0xbd, 0x71, 0xe8, 0xd4,
-0xd1, 0x23, 0x5f, 0xff, 0xc4, 0x2b, 0x77, 0xbc,
-0x72, 0xdb, 0xc9, 0xc3, 0x2f, 0x1f, 0xb2, 0x7c,
-0xf4, 0xf0, 0x38, 0x15, 0xaa, 0x97, 0x35, 0xd6,
-0xf1, 0x5f, 0x6f, 0x4c, 0xdb, 0xf9, 0x39, 0x8e,
-0x43, 0xcf, 0xd4, 0x17, 0xdc, 0x76, 0x7b, 0x89,
-0x07, 0xb0, 0xc1, 0x54, 0x30, 0x48, 0x7d, 0xde,
-0xaa, 0x49, 0x38, 0x9a, 0x85, 0xc8, 0xbb, 0xe5,
-0x05, 0x8c, 0xb3, 0xfc, 0xf3, 0xf1, 0x6f, 0x63,
-0x0d, 0x80, 0x55, 0xc0, 0x03, 0x0f, 0xbc, 0x05,
-0xc9, 0xff, 0xe3, 0x53, 0x57, 0x81, 0x56, 0xaa,
-0x78, 0x79, 0x6e, 0x92, 0xc8, 0xff, 0xc5, 0x75,
-0xcb, 0xfe, 0x63, 0x05, 0x80, 0xdb, 0x00, 0x32,
-0xab, 0xd9, 0x2d, 0x9c, 0x05, 0x84, 0x43, 0x00,
-0x97, 0xec, 0x2a, 0x40, 0x72, 0xac, 0x6b, 0xd7,
-0x01, 0x9e, 0x76, 0x7c, 0x80, 0x92, 0xa3, 0x02,
-0x52, 0x66, 0x87, 0xc8, 0xbf, 0x60, 0x4d, 0x9d,
-0x16, 0x77, 0x2e, 0x69, 0xb8, 0x14, 0xc3, 0x09,
-0x43, 0xe8, 0xf6, 0x6f, 0x72, 0xed, 0x05, 0xcd,
-0xbc, 0x77, 0x77, 0x27, 0x8c, 0x6c, 0x1e, 0x27,
-0xd4, 0x16, 0xf8, 0xbc, 0x22, 0xb3, 0x28, 0xfa,
-0xb1, 0x54, 0x69, 0x9c, 0x30, 0x0c, 0x59, 0x16,
-0x8a, 0xe1, 0xa4, 0xbf, 0x91, 0x85, 0x2c, 0xf9,
-0x97, 0x64, 0x20, 0x98, 0x49, 0xca, 0xa9, 0xa0,
-0x8b, 0xad, 0xf7, 0xe7, 0xa7, 0x14, 0xf0, 0x82,
-0x69, 0xcd, 0xe8, 0x24, 0xb6, 0x12, 0xb5, 0xc5,
-0xd5, 0xb5, 0x8b, 0x24, 0x06, 0xe1, 0x9d, 0x5f,
-0x23, 0xa5, 0x48, 0x57, 0xa7, 0x1a, 0x52, 0x4a,
-0xe2, 0x97, 0x56, 0x1d, 0x5d, 0xda, 0xbb, 0xc2,
-0xcb, 0xe7, 0x63, 0x6a, 0x2b, 0xd8, 0x14, 0xa3,
-0x7a, 0x93, 0xd0, 0xfd, 0x09, 0x1d, 0x41, 0x9a,
-0xd9, 0x09, 0xde, 0xe5, 0x90, 0xb9, 0x42, 0x32,
-0xb7, 0x84, 0x96, 0xdb, 0x15, 0xb9, 0xac, 0xd1,
-0xef, 0x98, 0x2a, 0x40, 0xd2, 0x5c, 0xc5, 0xf6,
-0x5f, 0x68, 0x75, 0xc5, 0x23, 0x2a, 0xb2, 0x57,
-0xd4, 0xfa, 0x54, 0x34, 0xb6, 0xd1, 0x15, 0x12,
-0x67, 0x35, 0x9f, 0x9a, 0x62, 0x1c, 0x25, 0x5f,
-0xff, 0x9f, 0xf3, 0x4e, 0xb0, 0x4a, 0x39, 0x45,
-0x24, 0xc9, 0x12, 0xb4, 0xe9, 0x43, 0xc7, 0x8e,
-0xdf, 0xe1, 0xad, 0xf0, 0xe0, 0x2b, 0x27, 0xee,
-0x26, 0x06, 0x16, 0x8b, 0x97, 0x6d, 0x7c, 0x65,
-0x48, 0xbe, 0xb5, 0x6a, 0xe6, 0x96, 0x97, 0xbe,
-0xb1, 0x61, 0x59, 0xec, 0x0d, 0xf6, 0x85, 0xfc,
-0x64, 0x3d, 0x37, 0xdc, 0xf7, 0x4e, 0x26, 0xaf,
-0x67, 0xe2, 0x2d, 0x23, 0xef, 0x46, 0x19, 0x36,
-0x78, 0xb1, 0xc7, 0x82, 0x8f, 0x9f, 0x48, 0xf4,
-0x91, 0xf0, 0x7f, 0x7b, 0xfc, 0x81, 0x1f, 0x7b,
-0xe0, 0x81, 0x8f, 0x62, 0x07, 0xe0, 0x1f, 0x37,
-0x85, 0x8b, 0xb4, 0x0f, 0x68, 0x56, 0x07, 0x80,
-0x2d, 0x9c, 0x8a, 0x8b, 0xe3, 0x7f, 0xa6, 0xb9,
-0x63, 0x62, 0x05, 0xd0, 0xd8, 0x5e, 0x23, 0x1d,
-0x81, 0x57, 0x2a, 0xf9, 0xea, 0x39, 0xab, 0x11,
-0xc0, 0x0e, 0x02, 0x22, 0x15, 0x40, 0xb9, 0x00,
-0xf1, 0x67, 0xf1, 0xfc, 0xc0, 0x24, 0x27, 0x38,
-0x6a, 0x66, 0x56, 0xa4, 0xd1, 0x34, 0x54, 0xe2,
-0xa8, 0x9b, 0xe8, 0xa9, 0xf0, 0x96, 0x9e, 0x38,
-0x9b, 0x5d, 0x9b, 0x11, 0xe5, 0xb4, 0xe5, 0x2c,
-0x56, 0x52, 0xc6, 0x1a, 0xed, 0x7c, 0x05, 0xe7,
-0x27, 0xb4, 0xcb, 0xdc, 0x44, 0x1e, 0x4b, 0x5d,
-0xef, 0xfe, 0x53, 0x26, 0xcd, 0xfa, 0x26, 0xbd,
-0xd6, 0x14, 0x7b, 0x96, 0xa9, 0x48, 0xfe, 0xf5,
-0x24, 0xa5, 0x84, 0xd2, 0x11, 0x6d, 0x65, 0x4b,
-0x96, 0xf8, 0xea, 0xce, 0xaa, 0xe1, 0xb5, 0x6e,
-0xb2, 0xd2, 0x4f, 0x9f, 0x88, 0xf7, 0xe2, 0x7e,
-0x18, 0x1b, 0x36, 0xb4, 0x6c, 0x67, 0x71, 0x55,
-0x2b, 0x34, 0x70, 0xf3, 0x26, 0x7d, 0x3d, 0x96,
-0x92, 0xa5, 0x92, 0x22, 0xae, 0xcf, 0x95, 0x6a,
-0xfc, 0x1d, 0x55, 0xae, 0x71, 0x1d, 0xbd, 0x91,
-0xb0, 0xea, 0xe8, 0x7c, 0x65, 0xa9, 0xca, 0x1d,
-0x81, 0xb5, 0x85, 0x12, 0x1e, 0x3a, 0xb1, 0x26,
-0x9b, 0xdc, 0xc8, 0x35, 0xc5, 0xde, 0x7e, 0x2b,
-0x66, 0x82, 0xb4, 0x15, 0x0a, 0x72, 0x58, 0xe3,
-0x4e, 0x95, 0xba, 0x26, 0xde, 0x55, 0xf7, 0xae,
-0x67, 0xa9, 0xab, 0x67, 0x56, 0x62, 0xc8, 0xa1,
-0x17, 0xae, 0xbd, 0xd9, 0x65, 0x16, 0x77, 0x6e,
-0x5b, 0xbc, 0x61, 0x92, 0x36, 0x12, 0xde, 0xfc,
-0x37, 0x2d, 0x17, 0xd0, 0xbb, 0xec, 0xd2, 0xa7,
-0x77, 0x2f, 0xbc, 0x8b, 0xf8, 0x89, 0x59, 0x22,
-0x68, 0xdf, 0x26, 0x42, 0x76, 0xec, 0x5e, 0x5e,
-0x73, 0xdc, 0x71, 0xe4, 0xd4, 0xb4, 0x55, 0xcd,
-0xb6, 0xa5, 0x7c, 0x5a, 0xf2, 0xa0, 0x05, 0xd4,
-0xfd, 0xce, 0xf1, 0xd6, 0xc7, 0x9d, 0xf5, 0xd9,
-0x97, 0x0d, 0xda, 0xc8, 0x8f, 0xbb, 0xee, 0xfc,
-0xb7, 0x3d, 0x65, 0x34, 0x4e, 0xef, 0x74, 0x83,
-0x11, 0x77, 0xee, 0x8d, 0x2b, 0xfc, 0x98, 0xbf,
-0xf9, 0xf6, 0x47, 0x91, 0x06, 0x78, 0xcb, 0x03,
-0xbf, 0xf1, 0x3b, 0xbf, 0x3c, 0x75, 0x15, 0xd0,
-0x8b, 0x64, 0x00, 0x10, 0xdc, 0xe1, 0xac, 0xdd,
-0x40, 0xf6, 0xdf, 0x7c, 0xdc, 0x34, 0x49, 0x08,
-0x60, 0xbb, 0x5d, 0xc0, 0x1d, 0x81, 0xb7, 0x56,
-0xf2, 0x58, 0x01, 0x50, 0x1e, 0x40, 0xd7, 0x69,
-0x08, 0x24, 0xd9, 0x80, 0xd8, 0x05, 0x78, 0x96,
-0xf4, 0x09, 0x2a, 0x45, 0xcb, 0x19, 0x54, 0xff,
-0x17, 0x26, 0xeb, 0x45, 0x25, 0xee, 0x19, 0x6f,
-0xc8, 0x00, 0xaf, 0xe8, 0x94, 0x4a, 0xa4, 0xd8,
-0xe1, 0xd1, 0x3d, 0xf9, 0xdb, 0xbf, 0xe5, 0x2d,
-0x5a, 0xaa, 0x8d, 0x24, 0xf2, 0x95, 0x95, 0xd8,
-0x2a, 0x49, 0x13, 0x63, 0xb6, 0x8c, 0x6a, 0x00,
-0xec, 0x16, 0xa9, 0x37, 0x43, 0x4d, 0x71, 0xba,
-0x3c, 0xdc, 0x51, 0x6e, 0x6a, 0xd4, 0x6b, 0xb0,
-0x28, 0x95, 0xd2, 0x33, 0x05, 0x92, 0xf8, 0x2e,
-0xcc, 0x7c, 0x69, 0xa4, 0xa4, 0x62, 0xed, 0xf3,
-0xa0, 0x7f, 0xb7, 0x0b, 0x65, 0xb4, 0x61, 0x16,
-0xd6, 0xb4, 0x25, 0x54, 0xa7, 0xd2, 0x77, 0xb8,
-0x94, 0xdd, 0x85, 0xae, 0xe2, 0xbb, 0xb6, 0x75,
-0xca, 0x5e, 0xa1, 0xa7, 0xba, 0x59, 0xd4, 0xf4,
-0x56, 0x0c, 0x77, 0xad, 0xd9, 0xe4, 0xef, 0xe0,
-0x3c, 0x23, 0x51, 0xee, 0x4b, 0x72, 0xc4, 0xf2,
-0xc6, 0x04, 0xdd, 0x56, 0xee, 0xb2, 0x7b, 0x42,
-0x2f, 0xd5, 0x91, 0x2d, 0x67, 0x98, 0x75, 0x96,
-0xd1, 0x12, 0x7f, 0x74, 0x8e, 0xbc, 0x89, 0xa7,
-0x40, 0xb4, 0x75, 0x64, 0x81, 0xd4, 0xff, 0x77,
-0xf8, 0x48, 0x22, 0x52, 0xa8, 0xac, 0xa0, 0xda,
-0x17, 0x56, 0x33, 0xca, 0xa6, 0x6c, 0xb4, 0x60,
-0xb5, 0xc2, 0x5c, 0x54, 0xff, 0x6b, 0x4f, 0x2f,
-0x83, 0xff, 0x1f, 0x1f, 0x1f, 0x77, 0xe4, 0xfb,
-0x63, 0x27, 0xac, 0x7e, 0xe4, 0xcf, 0xbe, 0xff,
-0xb6, 0x7b, 0xef, 0xbd, 0xf7, 0x13, 0xaf, 0x58,
-0x1a, 0xe0, 0xfd, 0xb7, 0xff, 0xff, 0xb4, 0x5d,
-0x5d, 0x6c, 0x1b, 0x57, 0x76, 0xd6, 0x56, 0x21,
-0xb0, 0x46, 0x77, 0x1d, 0xba, 0x7d, 0x48, 0x32,
-0x74, 0x3a, 0xe4, 0x3e, 0x71, 0x28, 0xaf, 0x03,
-0x84, 0xae, 0x90, 0x05, 0xd6, 0xf6, 0x26, 0x70,
-0x01, 0xd6, 0x09, 0x06, 0x25, 0x87, 0xa4, 0x4a,
-0x86, 0x90, 0xf2, 0xa0, 0x84, 0xf1, 0xc2, 0x09,
-0x5d, 0x06, 0xd8, 0x20, 0x25, 0xca, 0x32, 0x0f,
-0x42, 0xe2, 0xc2, 0x02, 0x48, 0x20, 0x05, 0x6c,
-0x40, 0x41, 0x81, 0x75, 0x49, 0x79, 0x1f, 0x2a,
-0x19, 0xa0, 0x41, 0xd9, 0x4f, 0x8b, 0x05, 0x96,
-0x30, 0xd0, 0xaa, 0x04, 0x0c, 0x3e, 0x11, 0xf1,
-0xb2, 0x61, 0x0d, 0xd7, 0x06, 0xf7, 0x61, 0x1f,
-0x1a, 0x89, 0x16, 0x07, 0xa4, 0x7b, 0xce, 0xb9,
-0x77, 0x7e, 0x38, 0x73, 0x65, 0xd1, 0x8b, 0xea,
-0xcc, 0x90, 0x73, 0x67, 0xe6, 0xfe, 0xcd, 0xbd,
-0xf7, 0x3b, 0xe7, 0xdc, 0x7f, 0x52, 0xba, 0x59,
-0x1b, 0x9b, 0x50, 0xfe, 0x33, 0xd5, 0x5c, 0xa0,
-0x13, 0x70, 0x6d, 0x9d, 0xc9, 0xf7, 0xc9, 0x63,
-0x3f, 0x1f, 0xde, 0xf6, 0x8a, 0x54, 0x7b, 0xaf,
-0x57, 0xf4, 0xc8, 0xe4, 0x00, 0x80, 0x7d, 0x6f,
-0x1a, 0xb1, 0x1f, 0x06, 0xea, 0x5c, 0xf4, 0x5d,
-0xbc, 0x78, 0xf1, 0xec, 0x0b, 0x2f, 0xfc, 0xa7,
-0x2b, 0x91, 0xfe, 0x3f, 0x48, 0x9a, 0xf3, 0xac,
-0x5d, 0xbb, 0xbc, 0xb4, 0x99, 0x19, 0x35, 0x2a,
-0x34, 0x1d, 0x77, 0x30, 0x00, 0x15, 0xe0, 0x08,
-0xeb, 0x04, 0x5c, 0x1d, 0x61, 0x27, 0x20, 0xb6,
-0x01, 0xda, 0x19, 0x00, 0x28, 0x00, 0x47, 0xd9,
-0x58, 0x20, 0xac, 0x03, 0xf0, 0xc5, 0xc1, 0xe1,
-0x8c, 0xcb, 0x8d, 0x4d, 0xd6, 0xf8, 0xe3, 0xc8,
-0xcf, 0x52, 0x9c, 0x0b, 0x91, 0xe2, 0x64, 0x7e,
-0x2d, 0x91, 0xd8, 0x01, 0xfd, 0xdf, 0x35, 0xfc,
-0xd6, 0x66, 0x31, 0xa4, 0xa7, 0x96, 0xaa, 0xd5,
-0x28, 0x8d, 0xa6, 0x99, 0x94, 0xa4, 0x52, 0x55,
-0xb1, 0x95, 0x0c, 0xe3, 0xc2, 0x1d, 0x09, 0x56,
-0x9a, 0xdf, 0x91, 0x74, 0x5d, 0x5a, 0xb4, 0x39,
-0x98, 0x51, 0x66, 0x2b, 0xa0, 0xff, 0x67, 0xdd,
-0xf2, 0x5f, 0xf3, 0xb8, 0x3d, 0x16, 0x95, 0x77,
-0xce, 0x47, 0x5c, 0xe1, 0x17, 0x8b, 0x1e, 0x55,
-0xeb, 0xf5, 0x56, 0x64, 0xb9, 0xeb, 0xde, 0xec,
-0xb2, 0x9c, 0xb4, 0x00, 0x5b, 0x9c, 0x74, 0x3d,
-0xe9, 0xfb, 0x04, 0x53, 0x88, 0xaa, 0x51, 0x6a,
-0xa3, 0x73, 0xc9, 0xe8, 0xbd, 0xa2, 0xe5, 0x91,
-0x0d, 0xd5, 0x71, 0x79, 0x75, 0x13, 0xea, 0x36,
-0xee, 0xd1, 0x95, 0xdd, 0xb8, 0x15, 0x00, 0xbf,
-0x2e, 0xeb, 0x81, 0x4d, 0xa1, 0xfc, 0xaf, 0xdb,
-0xbe, 0x69, 0x22, 0x10, 0x11, 0x2c, 0x11, 0xff,
-0xbd, 0x2c, 0xc9, 0x7f, 0x57, 0x15, 0x50, 0xf3,
-0x9b, 0xd1, 0xb3, 0xfb, 0xa4, 0xcc, 0xee, 0x0c,
-0x44, 0x2b, 0x40, 0x48, 0x91, 0xaa, 0x19, 0xbd,
-0x29, 0xc1, 0xcf, 0xfd, 0x3f, 0xd3, 0x32, 0xf0,
-0x75, 0xe9, 0xd7, 0xa4, 0xf3, 0x7f, 0xff, 0xb5,
-0x6f, 0x2e, 0x2d, 0x78, 0x17, 0xde, 0x5e, 0xb8,
-0xf4, 0xb3, 0x53, 0xc4, 0x02, 0xce, 0xbd, 0xf6,
-0xe7, 0x22, 0xec, 0x4d, 0x4b, 0x69, 0x87, 0xa0,
-0x9e, 0xce, 0x89, 0x9b, 0x44, 0x1a, 0x80, 0xed,
-0x01, 0xa0, 0x3f, 0x1d, 0x2e, 0x00, 0xfc, 0x3b,
-0x9d, 0x8b, 0x17, 0xef, 0x9d, 0xfd, 0xea, 0x85,
-0xdf, 0x1f, 0xc2, 0xec, 0x1f, 0xa4, 0x11, 0x6b,
-0x00, 0x6c, 0xff, 0x34, 0x55, 0xd9, 0x25, 0xfd,
-0x1f, 0x57, 0xea, 0x18, 0x50, 0x0d, 0xa0, 0x42,
-0x8b, 0x81, 0x5e, 0xd9, 0x58, 0xb2, 0x18, 0xc0,
-0x2d, 0x62, 0x00, 0xd8, 0x11, 0x68, 0x6b, 0x07,
-0xa4, 0x49, 0x01, 0xcd, 0xe6, 0x18, 0x32, 0x1f,
-0xe4, 0xbf, 0x7b, 0x39, 0x5d, 0xd5, 0x6f, 0xf6,
-0x12, 0x58, 0x08, 0x99, 0xc1, 0x01, 0x43, 0x28,
-0x76, 0x04, 0xa3, 0xc5, 0x46, 0xca, 0x8c, 0xb9,
-0xd2, 0x90, 0x92, 0x55, 0xab, 0xac, 0x2f, 0x6d,
-0x97, 0x55, 0x2b, 0xad, 0xd2, 0xac, 0x5d, 0x56,
-0xcc, 0xf2, 0x49, 0x38, 0x34, 0x4a, 0x96, 0x47,
-0x16, 0xac, 0x9a, 0x89, 0x43, 0x50, 0x1e, 0xf7,
-0xc6, 0x2c, 0x0a, 0x86, 0xdf, 0xc3, 0x28, 0xc8,
-0x7f, 0xf7, 0x92, 0x45, 0x52, 0xce, 0x8e, 0xa6,
-0xa2, 0xed, 0xc2, 0x5d, 0xdb, 0xa1, 0xeb, 0x2c,
-0xd8, 0x06, 0xdf, 0xd2, 0x40, 0x91, 0xa2, 0x4d,
-0xb8, 0x1d, 0x11, 0xd9, 0x89, 0x6e, 0x39, 0x1d,
-0x1a, 0x71, 0xda, 0x87, 0xd0, 0xc2, 0x9e, 0x1e,
-0xc5, 0x4d, 0xc6, 0xdd, 0xca, 0x52, 0xb4, 0x58,
-0x2c, 0xda, 0x7d, 0xe3, 0xe7, 0x1d, 0xa8, 0xdb,
-0xb4, 0x49, 0x15, 0x77, 0x38, 0x18, 0xf8, 0x27,
-0xbe, 0x04, 0x29, 0x34, 0x68, 0x47, 0x69, 0xac,
-0x90, 0x33, 0xd1, 0x82, 0x8a, 0xe0, 0xcb, 0x26,
-0xbf, 0xdc, 0xfe, 0x57, 0x54, 0x62, 0xd9, 0x4d,
-0xe1, 0x4c, 0x42, 0xc9, 0xe3, 0x60, 0x67, 0xcc,
-0x07, 0xbf, 0x2a, 0xde, 0xd5, 0x58, 0x8a, 0x2c,
-0x59, 0xb9, 0x34, 0x0d, 0x19, 0xfe, 0x2a, 0xdf,
-0xb4, 0x38, 0x80, 0x2e, 0x7d, 0x8a, 0x60, 0x7f,
-0xfd, 0xfa, 0xc2, 0xdb, 0xd8, 0x8e, 0xc6, 0x20,
-0x76, 0xfc, 0x4f, 0x90, 0x03, 0x14, 0x8f, 0x2d,
-0x88, 0xc5, 0xef, 0xb3, 0x10, 0xdc, 0x72, 0x21,
-0xd4, 0x7e, 0x1e, 0x84, 0xfd, 0x74, 0x8b, 0xfd,
-0xa5, 0x5b, 0x22, 0x1b, 0xfc, 0x39, 0x58, 0x0d,
-0xc3, 0x01, 0xd0, 0x87, 0x33, 0xcc, 0x84, 0x7f,
-0xa7, 0xe3, 0xeb, 0xbc, 0xd3, 0x79, 0xf8, 0xf0,
-0xe2, 0x57, 0x87, 0x31, 0xfa, 0x0f, 0x49, 0xbe,
-0x99, 0xbb, 0xbd, 0xbc, 0xb4, 0xd7, 0xe7, 0x1d,
-0x00, 0x28, 0xff, 0xe1, 0xe8, 0x76, 0x4b, 0xd8,
-0x07, 0xd0, 0xc0, 0x89, 0x40, 0x57, 0x2c, 0x0d,
-0xe0, 0x0b, 0x5b, 0x1d, 0x80, 0x31, 0x00, 0xde,
-0x17, 0x88, 0x34, 0x1e, 0x56, 0x58, 0x6f, 0x8e,
-0x33, 0xf3, 0xbb, 0x09, 0x71, 0xa6, 0x5d, 0xd3,
-0xdb, 0x0c, 0xff, 0xce, 0xd1, 0x22, 0x29, 0xdb,
-0xd0, 0x82, 0x62, 0x4d, 0x2b, 0x57, 0x97, 0x70,
-0x86, 0x52, 0x76, 0xdb, 0x59, 0x03, 0xd0, 0x36,
-0x92, 0x22, 0xac, 0xe4, 0x7a, 0x3b, 0xee, 0x95,
-0x6c, 0x50, 0xfb, 0x57, 0xa5, 0xbd, 0x09, 0xbb,
-0x4a, 0xaa, 0x87, 0x53, 0x75, 0x05, 0x03, 0xdf,
-0x17, 0x0f, 0x2a, 0x6e, 0x07, 0x92, 0x52, 0xa3,
-0xe5, 0xcd, 0x24, 0xc9, 0xbd, 0x0d, 0x2f, 0x28,
-0x2e, 0x07, 0xbb, 0x77, 0xd2, 0xd2, 0x91, 0x7e,
-0xbf, 0x2c, 0xc2, 0x7f, 0x5b, 0x6c, 0x3f, 0xc9,
-0xb5, 0x31, 0xd7, 0xb7, 0x3d, 0x76, 0xe7, 0x46,
-0x88, 0x65, 0x84, 0xbb, 0xad, 0xa0, 0x72, 0x70,
-0x44, 0x27, 0x92, 0x42, 0x19, 0xee, 0x1a, 0x53,
-0x3a, 0x26, 0x59, 0x09, 0x32, 0x54, 0x81, 0xb3,
-0x8d, 0x88, 0x7b, 0x09, 0x40, 0xb4, 0x2d, 0x45,
-0x6a, 0x4e, 0xaf, 0xa7, 0xa3, 0xd7, 0x17, 0x5a,
-0x04, 0xed, 0xd6, 0xf1, 0xef, 0x93, 0xa8, 0xff,
-0x71, 0xeb, 0xdb, 0x96, 0x97, 0x35, 0xa4, 0x13,
-0xd8, 0x3e, 0xfc, 0x39, 0x72, 0x85, 0xd7, 0x18,
-0xf2, 0x5a, 0x5e, 0x31, 0x78, 0xdd, 0x20, 0x7d,
-0x5e, 0x89, 0xbf, 0x0f, 0x23, 0xb0, 0xaa, 0xfa,
-0x14, 0xa9, 0x74, 0x2b, 0xed, 0x35, 0x23, 0x17,
-0xc6, 0xb3, 0xe5, 0x65, 0xd5, 0xfe, 0x02, 0xa0,
-0xbf, 0x10, 0x06, 0xec, 0xfb, 0x7c, 0x9d, 0x7b,
-0xf7, 0xde, 0x79, 0xf8, 0xf0, 0xe1, 0x57, 0x87,
-0xa3, 0xfe, 0x63, 0x0f, 0x20, 0xcd, 0x00, 0xc2,
-0x06, 0xc0, 0xf5, 0xed, 0x52, 0xb7, 0x3b, 0xd0,
-0x06, 0x9a, 0x8e, 0x6b, 0x3e, 0x95, 0x56, 0x70,
-0x14, 0x00, 0xeb, 0x04, 0x58, 0x9a, 0xa3, 0x46,
-0xc0, 0x1c, 0xf5, 0x03, 0x62, 0x47, 0x20, 0x70,
-0x00, 0x3e, 0x25, 0xd0, 0xe2, 0x00, 0xe3, 0xd9,
-0xe1, 0x15, 0xc4, 0xbf, 0x4b, 0xe3, 0xd4, 0x3c,
-0x94, 0x37, 0x4d, 0x73, 0xc8, 0x30, 0xa7, 0xdb,
-0x47, 0x32, 0x57, 0x32, 0xa2, 0x62, 0x17, 0xb4,
-0xc3, 0x3a, 0xde, 0xeb, 0x6d, 0x2c, 0x6d, 0x50,
-0x67, 0xba, 0xab, 0xa9, 0x48, 0x1a, 0xdd, 0x72,
-0x96, 0x50, 0x45, 0x59, 0x2e, 0x09, 0xbf, 0x53,
-0xd2, 0x4b, 0x83, 0x23, 0x93, 0x65, 0x5f, 0x49,
-0xc9, 0x38, 0xb8, 0xd8, 0xdd, 0xa8, 0xbe, 0x53,
-0x33, 0x6c, 0x88, 0x8b, 0xd9, 0x34, 0xf8, 0x55,
-0xaa, 0x84, 0x7e, 0xd1, 0x22, 0x9c, 0x5a, 0xcd,
-0xe6, 0xc1, 0x94, 0xbc, 0x60, 0x4e, 0x0f, 0xf4,
-0x47, 0xa2, 0xa1, 0x72, 0x65, 0xbb, 0x07, 0x96,
-0x39, 0xd9, 0xab, 0x6c, 0x52, 0xdf, 0xa6, 0x6b,
-0x57, 0x5f, 0x8f, 0xcb, 0xef, 0x9c, 0x96, 0x89,
-0x0a, 0xc7, 0x0a, 0xf7, 0x92, 0x4d, 0x97, 0x65,
-0xe7, 0x67, 0x4e, 0xdc, 0x64, 0xb7, 0x71, 0x05,
-0x74, 0xf7, 0x94, 0x0e, 0x21, 0x43, 0x6d, 0x86,
-0xba, 0xc2, 0x25, 0x4a, 0xb1, 0xed, 0x26, 0xf4,
-0x7c, 0x2c, 0x92, 0xdb, 0x56, 0x4e, 0x71, 0x34,
-0x2d, 0xbc, 0x85, 0x8d, 0x7d, 0xd7, 0xb9, 0x98,
-0x0f, 0x33, 0xe8, 0x61, 0xbd, 0x7a, 0xe1, 0x6f,
-0x90, 0x2f, 0x9c, 0x6e, 0x71, 0x9c, 0xb7, 0x0c,
-0xb1, 0x3c, 0x71, 0xf2, 0x57, 0xec, 0xe0, 0x00,
-0x45, 0xa1, 0xec, 0xe5, 0xa2, 0x3a, 0x6d, 0x3c,
-0xe7, 0x27, 0xf3, 0xdc, 0x10, 0xf2, 0xad, 0xb4,
-0xe1, 0x71, 0xcb, 0x16, 0x06, 0x37, 0x18, 0x66,
-0x66, 0x9f, 0x6c, 0xa4, 0xcd, 0x70, 0xf0, 0x2f,
-0xdc, 0xe2, 0xc2, 0xbf, 0x03, 0xd2, 0xdf, 0xe7,
-0xbb, 0x07, 0xf4, 0xce, 0xbd, 0x87, 0xbf, 0x7f,
-0xe7, 0x90, 0xd4, 0x7f, 0x90, 0x1f, 0x34, 0x02,
-0xf8, 0x0a, 0x8d, 0x00, 0x86, 0x0a, 0xc0, 0x00,
-0x08, 0xeb, 0x00, 0x5d, 0xb5, 0xb4, 0xbd, 0x3b,
-0x6c, 0xac, 0xa6, 0xca, 0xc4, 0x00, 0x50, 0x03,
-0x60, 0x03, 0x81, 0x68, 0x41, 0x90, 0x38, 0x2e,
-0x0b, 0xcc, 0xe7, 0x04, 0x12, 0x03, 0x00, 0x16,
-0x30, 0xce, 0xf6, 0x50, 0xfe, 0xbb, 0x87, 0xa8,
-0x22, 0xf3, 0x57, 0xec, 0x59, 0xc5, 0x4e, 0x10,
-0x3b, 0x65, 0xb1, 0xd8, 0x19, 0xde, 0xb1, 0xac,
-0x29, 0xca, 0x9c, 0x36, 0xaa, 0xe2, 0xc2, 0xda,
-0xb4, 0xa8, 0x8e, 0xb3, 0xf8, 0xcb, 0xb5, 0x31,
-0x1f, 0x89, 0x4c, 0x25, 0x55, 0x51, 0x6e, 0xb5,
-0x35, 0xf7, 0x22, 0xd9, 0x3b, 0x34, 0x92, 0x5d,
-0x95, 0xda, 0xc9, 0x89, 0x88, 0x28, 0x23, 0x39,
-0xda, 0xaf, 0x0b, 0x16, 0x00, 0x8d, 0x2c, 0x59,
-0xf6, 0xac, 0xf8, 0x5a, 0x17, 0xeb, 0x7b, 0x14,
-0xeb, 0xbd, 0x19, 0x63, 0x6e, 0x2b, 0x19, 0xd8,
-0x37, 0xcd, 0xf5, 0x45, 0xa5, 0xa8, 0x58, 0x5d,
-0xa7, 0x07, 0x95, 0x75, 0x6c, 0x5f, 0xfd, 0x81,
-0x9e, 0x89, 0x96, 0xdd, 0xbb, 0x19, 0x90, 0xb2,
-0x64, 0x8f, 0x98, 0x61, 0x4a, 0xce, 0x0e, 0x37,
-0xdb, 0xee, 0xf5, 0x4f, 0x20, 0x37, 0xd6, 0x8a,
-0x4e, 0x07, 0x9e, 0xc1, 0xe8, 0x0a, 0x1b, 0x2b,
-0xe8, 0xec, 0xb6, 0x1f, 0x63, 0x92, 0xd2, 0x29,
-0x3c, 0x9c, 0xe9, 0xc1, 0x18, 0xaa, 0x20, 0xd0,
-0xc8, 0x35, 0xb7, 0xeb, 0xf1, 0x65, 0x55, 0x9c,
-0x3a, 0xb8, 0x4e, 0x68, 0x02, 0x33, 0xd4, 0x3e,
-0xbe, 0xe4, 0x59, 0xb0, 0x37, 0xa7, 0xa3, 0x28,
-0xff, 0xd5, 0x22, 0xed, 0xd9, 0x7b, 0x06, 0xaa,
-0x1b, 0xaf, 0x7c, 0xfe, 0xad, 0xf7, 0xf8, 0xab,
-0xa7, 0x7f, 0xf1, 0x0d, 0x13, 0xaa, 0xde, 0x85,
-0xd3, 0xa7, 0x4f, 0xbf, 0xfa, 0xe1, 0xc2, 0x6b,
-0xc0, 0x00, 0xfe, 0x70, 0xa9, 0xc5, 0xd4, 0x6c,
-0xaf, 0xe8, 0x08, 0xd3, 0x73, 0xd4, 0xc4, 0x51,
-0x24, 0xf3, 0x67, 0xc4, 0x18, 0x40, 0x3f, 0x47,
-0xa3, 0xf9, 0x67, 0x9e, 0xde, 0x82, 0x97, 0xfe,
-0xc2, 0x4c, 0x87, 0x0f, 0x33, 0x9b, 0x69, 0xf6,
-0x96, 0xbc, 0xb1, 0x3c, 0x32, 0x7d, 0x68, 0x71,
-0x7b, 0x2c, 0xce, 0x9c, 0xd2, 0xf0, 0x8c, 0x49,
-0xff, 0x8e, 0x2f, 0xcf, 0xf1, 0xff, 0xf1, 0x3b,
-0x0f, 0x0f, 0x4b, 0xfd, 0x07, 0x1e, 0x9f, 0xcb,
-0xd1, 0x0e, 0x00, 0xf5, 0x60, 0x36, 0x26, 0x97,
-0xd4, 0xc1, 0x00, 0x97, 0x76, 0x1d, 0x20, 0x03,
-0xa0, 0x61, 0x40, 0xc1, 0x3a, 0x54, 0x01, 0x36,
-0xf7, 0x88, 0x01, 0x2c, 0xae, 0xe5, 0xb0, 0x11,
-0x80, 0x37, 0x03, 0x8e, 0xe3, 0x16, 0x07, 0xd8,
-0x02, 0x0e, 0x90, 0x0c, 0xca, 0xd1, 0xb6, 0x68,
-0x88, 0xba, 0x74, 0xbb, 0xd9, 0x34, 0x73, 0xd3,
-0x40, 0x09, 0xdc, 0x79, 0xf4, 0x3a, 0x17, 0x3b,
-0xce, 0x0e, 0xc3, 0x31, 0x5a, 0xa0, 0x13, 0xfe,
-0xe2, 0x31, 0x79, 0xaf, 0x5a, 0xdd, 0xdc, 0xcc,
-0xd4, 0x1b, 0xb1, 0xd2, 0xc0, 0xb5, 0x9e, 0x47,
-0xa5, 0xe6, 0x4f, 0xd2, 0x48, 0x44, 0xa5, 0xa9,
-0x24, 0x13, 0x7b, 0xb2, 0xf0, 0x23, 0x77, 0x1e,
-0x6b, 0xaa, 0xac, 0xab, 0x1e, 0x5b, 0x34, 0xd0,
-0xfb, 0x80, 0x8a, 0x33, 0x9f, 0x04, 0x03, 0xdf,
-0xab, 0x64, 0xab, 0x59, 0x74, 0x17, 0x77, 0x8a,
-0xb9, 0x52, 0xbc, 0xb3, 0x58, 0x23, 0x5a, 0x86,
-0x83, 0xfe, 0x26, 0x0f, 0x7c, 0x56, 0xab, 0xee,
-0x53, 0xbe, 0x23, 0xd8, 0xed, 0xd2, 0xe4, 0xb8,
-0x66, 0xc1, 0x3c, 0xfb, 0xc4, 0x58, 0x2f, 0x02,
-0xfe, 0x47, 0x41, 0xc1, 0xec, 0xaa, 0x46, 0x92,
-0xfb, 0xa2, 0x58, 0xff, 0x80, 0x06, 0x25, 0x1b,
-0x8b, 0x92, 0x28, 0x76, 0x75, 0x83, 0x2c, 0x2a,
-0x66, 0x1a, 0x90, 0xf7, 0xc5, 0x66, 0x02, 0x32,
-0x22, 0x23, 0x1a, 0x2b, 0x34, 0xd8, 0xc3, 0x15,
-0x1b, 0xf6, 0xa1, 0xea, 0x52, 0x35, 0x44, 0x79,
-0x64, 0xa5, 0x10, 0x32, 0x54, 0xc2, 0xbf, 0xbb,
-0x25, 0xd1, 0xe9, 0x7a, 0xa3, 0xdd, 0x13, 0xa9,
-0xfe, 0x40, 0x7f, 0x2f, 0x69, 0x8f, 0xd5, 0x78,
-0x93, 0x25, 0x8f, 0x2d, 0x19, 0x9a, 0x93, 0x86,
-0x26, 0xcb, 0xca, 0xa6, 0xf1, 0x21, 0xc8, 0xa9,
-0xde, 0x5c, 0x20, 0x98, 0xa5, 0x8f, 0xbf, 0x02,
-0xd5, 0xfc, 0x33, 0x00, 0xb1, 0x33, 0x00, 0xf6,
-0x3f, 0x6b, 0x21, 0xd0, 0x18, 0x4f, 0x38, 0xf7,
-0xb3, 0x16, 0xa9, 0x06, 0x6f, 0xa1, 0xbd, 0x30,
-0x80, 0xad, 0xd5, 0x6a, 0x4d, 0x22, 0xb9, 0xc5,
-0x60, 0x89, 0x52, 0xb9, 0x80, 0xb2, 0xb9, 0x65,
-0x81, 0x98, 0x1e, 0x85, 0x5b, 0x84, 0x75, 0xf6,
-0x82, 0xec, 0xe1, 0xd9, 0xe2, 0x30, 0x66, 0x3c,
-0x00, 0x19, 0x48, 0x81, 0x9e, 0xf0, 0x0b, 0xe2,
-0x3b, 0x6d, 0xb0, 0x8a, 0x30, 0xf7, 0x8b, 0x18,
-0x05, 0x5a, 0xa0, 0x58, 0x80, 0x27, 0xcc, 0x40,
-0xe0, 0x07, 0xe9, 0x8f, 0xe8, 0x9f, 0x9f, 0x9f,
-0xbf, 0x0f, 0x04, 0x0c, 0xe0, 0xb0, 0xd4, 0x7f,
-0x9c, 0x4b, 0x7b, 0x33, 0xb4, 0x3c, 0xb7, 0x11,
-0x28, 0xd3, 0x08, 0xa0, 0xae, 0x0e, 0xf8, 0x1f,
-0x3c, 0x06, 0x06, 0xd0, 0xed, 0x96, 0x4a, 0x2b,
-0x96, 0x06, 0xb0, 0x71, 0xb9, 0xb6, 0xbc, 0x78,
-0x1b, 0x1b, 0x01, 0x4c, 0x15, 0x80, 0xe1, 0x7f,
-0x4c, 0x6b, 0x03, 0x21, 0xa5, 0xe4, 0x40, 0x3b,
-0x95, 0x75, 0x8f, 0xe6, 0x94, 0x96, 0xa9, 0x81,
-0x50, 0xe1, 0x65, 0x1d, 0x87, 0x0c, 0x60, 0x9f,
-0xa1, 0xf2, 0x05, 0xc7, 0xbf, 0xbb, 0xc3, 0x30,
-0xde, 0x6c, 0xb2, 0x7e, 0x45, 0x12, 0x3e, 0x35,
-0x2d, 0x85, 0x4d, 0x80, 0x7d, 0x9c, 0x52, 0xaf,
-0x0a, 0x16, 0xa9, 0x2a, 0x8d, 0x6a, 0x6b, 0xb7,
-0xbe, 0xf4, 0x27, 0x42, 0x4b, 0xab, 0xfb, 0x2c,
-0x91, 0x86, 0x6d, 0x7f, 0xdb, 0xb2, 0x14, 0x50,
-0x78, 0xf8, 0x45, 0x1a, 0xbc, 0xac, 0x28, 0x51,
-0xb5, 0x1f, 0x18, 0x35, 0xb6, 0xdd, 0xeb, 0x55,
-0xed, 0x51, 0xf0, 0xcd, 0x49, 0x52, 0xf8, 0x89,
-0x9e, 0xe4, 0x70, 0x7c, 0x11, 0x35, 0xee, 0xed,
-0x60, 0x0d, 0xdf, 0x79, 0x60, 0x15, 0xc8, 0xdd,
-0x06, 0x61, 0xa3, 0xa8, 0x62, 0xf3, 0x5e, 0x39,
-0xe8, 0x80, 0x08, 0x83, 0xb2, 0x14, 0x00, 0x65,
-0xe9, 0x0d, 0x17, 0xb3, 0xac, 0x8c, 0x5d, 0x11,
-0x45, 0x27, 0x5b, 0x20, 0x8a, 0xdb, 0x75, 0xd1,
-0x80, 0xe1, 0x65, 0x7b, 0xc0, 0x98, 0x12, 0x8a,
-0x5f, 0x0d, 0x82, 0xfc, 0x5f, 0x17, 0xee, 0xdb,
-0xb5, 0xff, 0x96, 0x23, 0xf0, 0x85, 0xbd, 0x24,
-0xf9, 0x60, 0x7a, 0xa8, 0x64, 0x90, 0xa1, 0x8a,
-0xd7, 0x80, 0x9f, 0x5a, 0x80, 0x49, 0x9a, 0x2e,
-0x05, 0xb7, 0x8a, 0x46, 0x6a, 0xbb, 0xd3, 0xc8,
-0xba, 0x70, 0x53, 0x91, 0x0a, 0x14, 0xfc, 0x8e,
-0x01, 0xe0, 0x10, 0x6d, 0xa7, 0x00, 0xe2, 0xa7,
-0x10, 0x79, 0xbf, 0x05, 0xc3, 0x47, 0xa4, 0x53,
-0xb7, 0x8e, 0xbf, 0x09, 0xe6, 0x9f, 0x83, 0x82,
-0x7d, 0x09, 0x0c, 0xc5, 0xbf, 0xe4, 0x32, 0x97,
-0x41, 0xce, 0x41, 0x5e, 0x2e, 0x95, 0x6d, 0x0f,
-0x00, 0x96, 0xec, 0x99, 0xd0, 0x01, 0xb1, 0x80,
-0x34, 0x86, 0x13, 0x36, 0xd8, 0x86, 0x69, 0x93,
-0xf1, 0x08, 0x06, 0xf1, 0xb0, 0xd7, 0xf2, 0x10,
-0x0f, 0x23, 0x18, 0xcb, 0x6b, 0xd6, 0xe6, 0x0f,
-0x2c, 0xc0, 0x07, 0x74, 0x81, 0xe0, 0xff, 0xf4,
-0x11, 0x30, 0x80, 0xc3, 0x18, 0xfc, 0xcb, 0xa9,
-0xef, 0x09, 0x5d, 0xab, 0xd1, 0x12, 0x40, 0xc3,
-0x58, 0x49, 0xd5, 0x41, 0x01, 0x40, 0x42, 0x0d,
-0x00, 0x3b, 0x01, 0x70, 0x26, 0x40, 0x3d, 0x83,
-0xeb, 0xcb, 0xd0, 0x50, 0x60, 0x5c, 0x11, 0x8c,
-0x35, 0x03, 0x32, 0x0e, 0xc0, 0xaa, 0x01, 0x47,
-0xb1, 0x25, 0xe0, 0x4e, 0xa6, 0x14, 0x68, 0x8b,
-0x98, 0xbf, 0x54, 0x73, 0xce, 0x22, 0x61, 0x94,
-0x38, 0x92, 0xea, 0x0b, 0xc5, 0x8e, 0xea, 0x6f,
-0x9a, 0x83, 0x8b, 0x80, 0x9e, 0x04, 0x8f, 0x04,
-0xaa, 0x1b, 0xb4, 0x47, 0x69, 0x05, 0xfb, 0xd3,
-0xd1, 0xba, 0x73, 0x7e, 0x99, 0xae, 0xaa, 0xee,
-0xae, 0x71, 0x4e, 0x3b, 0x6c, 0xf6, 0xa9, 0xd6,
-0xf3, 0x5b, 0x63, 0x96, 0x98, 0xcf, 0x55, 0xbd,
-0x8d, 0xfa, 0xbf, 0x73, 0x7f, 0x61, 0xa8, 0x14,
-0x59, 0xa1, 0x8b, 0x29, 0xa4, 0xa7, 0x32, 0xa9,
-0x8a, 0x68, 0xa5, 0xeb, 0xe9, 0xa8, 0xbc, 0xf5,
-0x0c, 0xcf, 0x45, 0x94, 0xd3, 0x46, 0xe2, 0xca,
-0x52, 0x6f, 0x2c, 0x8e, 0xe8, 0x88, 0xa0, 0x58,
-0xea, 0x3a, 0x53, 0x65, 0x67, 0xc9, 0x6e, 0x8b,
-0x9c, 0xfa, 0x71, 0x9b, 0x65, 0x51, 0x46, 0x1c,
-0x44, 0xf2, 0x13, 0x5b, 0x36, 0x21, 0x45, 0xf5,
-0x7e, 0xa0, 0x9e, 0x5d, 0x79, 0xd6, 0x1e, 0x70,
-0xcf, 0x26, 0xc8, 0xab, 0xc7, 0x7a, 0x37, 0x52,
-0x7d, 0xce, 0xd4, 0x61, 0xd1, 0xb8, 0xf3, 0x12,
-0xa1, 0x29, 0x8c, 0xe2, 0xff, 0x95, 0xe3, 0x20,
-0xa5, 0x5b, 0x5c, 0xfe, 0x23, 0xee, 0x50, 0xef,
-0x6f, 0x7e, 0x88, 0x92, 0xf7, 0x34, 0x32, 0x85,
-0x6f, 0xc3, 0xac, 0xae, 0xcd, 0x40, 0x3b, 0x71,
-0x32, 0x9a, 0xb8, 0x65, 0xaa, 0x81, 0x71, 0x9f,
-0xb6, 0xdb, 0x33, 0x4c, 0xe1, 0x96, 0xa1, 0x0b,
-0xd8, 0xd8, 0x82, 0x69, 0x2b, 0x6d, 0x59, 0xb6,
-0x33, 0x90, 0xf0, 0xa4, 0x81, 0x49, 0xfe, 0x02,
-0xd4, 0xfb, 0x41, 0xfa, 0xcf, 0xcf, 0x5f, 0xb8,
-0x7f, 0xe1, 0xe9, 0xfd, 0x47, 0xf7, 0x1f, 0x7d,
-0xfc, 0xf1, 0x7f, 0x1c, 0xca, 0xe0, 0x1f, 0x46,
-0xc3, 0x1c, 0xeb, 0x01, 0xac, 0xe3, 0x12, 0x40,
-0x6a, 0xf7, 0x06, 0xdf, 0xa7, 0x03, 0xbb, 0xaf,
-0x64, 0x1c, 0x06, 0x10, 0xc4, 0xc5, 0x00, 0x70,
-0x2e, 0xd0, 0xd2, 0xe5, 0xe5, 0x65, 0x6c, 0x04,
-0xa0, 0x3a, 0xc0, 0xad, 0x49, 0x0e, 0x30, 0x4e,
-0x8e, 0xc7, 0x81, 0x6e, 0x3b, 0x83, 0x53, 0xf5,
-0x9d, 0xdd, 0x48, 0x54, 0xe2, 0xa0, 0xbc, 0xd3,
-0xc4, 0x41, 0xfe, 0xc3, 0x4b, 0x82, 0x15, 0x3b,
-0xf7, 0x68, 0xb1, 0x6e, 0x82, 0x65, 0xa8, 0x61,
-0x3f, 0xa4, 0xc6, 0xf6, 0xaa, 0x7b, 0x7b, 0x9b,
-0x26, 0x03, 0x78, 0xae, 0xca, 0x10, 0x4e, 0xfa,
-0xd3, 0xe5, 0xf5, 0x92, 0x36, 0x97, 0xb4, 0xf9,
-0x89, 0x71, 0xd8, 0x9a, 0xd3, 0xdb, 0xed, 0x91,
-0x68, 0xfe, 0x59, 0x39, 0xa9, 0x58, 0xf1, 0xe4,
-0xd7, 0x2d, 0xeb, 0x81, 0x82, 0x75, 0x97, 0x7e,
-0x39, 0xf8, 0x47, 0x40, 0x86, 0x53, 0x2a, 0x89,
-0xe1, 0x4f, 0x5d, 0xb4, 0xb7, 0x14, 0x8f, 0x36,
-0xea, 0x0b, 0xf1, 0x2f, 0xc7, 0x15, 0x91, 0x3f,
-0x5b, 0x19, 0xb5, 0xdf, 0xa6, 0x85, 0x13, 0x9c,
-0x89, 0xb5, 0x61, 0xda, 0xdf, 0xe2, 0xf3, 0xf1,
-0xe2, 0x72, 0x16, 0xe4, 0xbf, 0x60, 0xac, 0xd0,
-0x41, 0xa4, 0x7e, 0x49, 0x7e, 0x19, 0x89, 0xa5,
-0x28, 0x7b, 0x7a, 0xa0, 0xfd, 0xd3, 0xac, 0xa0,
-0x41, 0x65, 0x6a, 0x82, 0xcc, 0x02, 0x19, 0xe4,
-0x21, 0x0f, 0xa7, 0x48, 0x1f, 0x23, 0x3b, 0xc9,
-0xfc, 0xcb, 0x05, 0xc0, 0xd0, 0x77, 0x2d, 0x42,
-0xfd, 0x6b, 0xd8, 0x8a, 0x4e, 0xa6, 0x8f, 0xbc,
-0xdf, 0x01, 0xbc, 0x90, 0x27, 0xcc, 0x9c, 0x42,
-0xa9, 0xeb, 0x5d, 0x78, 0x1d, 0xd9, 0x83, 0x01,
-0xcf, 0xb4, 0xeb, 0x34, 0x11, 0xcb, 0xcf, 0xb0,
-0x01, 0xd3, 0xef, 0xcc, 0xd7, 0x96, 0xfa, 0x1f,
-0x36, 0xe5, 0xbc, 0x43, 0x1f, 0x48, 0x0b, 0x38,
-0x00, 0xab, 0x06, 0xa4, 0xbf, 0x6b, 0xb1, 0x7a,
-0x3e, 0x36, 0xf3, 0xe3, 0xf9, 0x1d, 0xeb, 0xed,
-0x43, 0xf4, 0x17, 0x3a, 0xd8, 0xe7, 0x07, 0xf0,
-0x9f, 0xbf, 0x70, 0xe1, 0xc2, 0xc9, 0xfb, 0x4f,
-0x81, 0x5e, 0xfc, 0xec, 0xd1, 0xc7, 0x87, 0x31,
-0xf7, 0xd7, 0x20, 0xed, 0x5a, 0xee, 0xf6, 0x0f,
-0xa8, 0x07, 0x00, 0x2a, 0x00, 0xd4, 0x03, 0xa8,
-0xd1, 0x6e, 0x32, 0xd4, 0x09, 0x20, 0x63, 0x23,
-0x20, 0xf6, 0x02, 0x04, 0x90, 0x01, 0xcc, 0xd5,
-0xae, 0x91, 0x0a, 0xc0, 0x7b, 0x02, 0x19, 0x07,
-0xe0, 0x0c, 0x60, 0x3c, 0x8e, 0x02, 0x9a, 0xea,
-0x15, 0x41, 0xe6, 0x6f, 0xe0, 0xba, 0x61, 0x40,
-0x54, 0xe2, 0xb7, 0x78, 0xa9, 0xdb, 0x02, 0xb1,
-0x93, 0x05, 0xf9, 0x8f, 0x53, 0xd4, 0x1c, 0x0c,
-0x43, 0xf7, 0x60, 0xde, 0xb3, 0x05, 0xc7, 0xd1,
-0x80, 0x13, 0xc5, 0x40, 0x01, 0xd8, 0xbc, 0xd2,
-0xae, 0xaf, 0x56, 0x7a, 0xb8, 0x64, 0xfc, 0xf4,
-0x5f, 0xb7, 0x83, 0xbb, 0x0f, 0x74, 0xb7, 0x87,
-0xbb, 0x52, 0x2a, 0xce, 0xc2, 0x57, 0x58, 0x7b,
-0x25, 0x06, 0x51, 0xd3, 0xda, 0xed, 0xb2, 0x60,
-0xfd, 0x99, 0xc8, 0x2a, 0x0b, 0x7c, 0x4b, 0x7c,
-0x82, 0x37, 0x1e, 0x3d, 0x85, 0x70, 0x74, 0xf3,
-0xae, 0x29, 0x29, 0x38, 0xa6, 0x08, 0x4c, 0x79,
-0x40, 0xa8, 0x1e, 0x75, 0x15, 0x13, 0xcb, 0x3d,
-0x9f, 0xbf, 0xe4, 0x57, 0x84, 0x8e, 0x02, 0x7a,
-0x5f, 0x9c, 0x1b, 0x51, 0xcb, 0x4e, 0x92, 0xf2,
-0x62, 0x6b, 0x2c, 0x57, 0xa0, 0xfe, 0x2f, 0x18,
-0x2b, 0x70, 0x10, 0x11, 0xa3, 0xde, 0xe2, 0x58,
-0xc5, 0xfc, 0xad, 0x6a, 0x01, 0x60, 0xa8, 0xb2,
-0xbb, 0x42, 0x35, 0x1d, 0x41, 0x66, 0x69, 0x83,
-0x92, 0x2c, 0x65, 0xc7, 0x2c, 0x7e, 0x82, 0xcf,
-0x4a, 0xda, 0xfe, 0x9d, 0xc7, 0x8f, 0x00, 0x46,
-0xe9, 0x70, 0xc7, 0xfb, 0x4b, 0x5c, 0x06, 0x08,
-0x51, 0x9b, 0x46, 0xfd, 0xff, 0x2d, 0x04, 0x99,
-0x97, 0x9a, 0xfd, 0x3e, 0x69, 0x11, 0xe6, 0x90,
-0x2b, 0xfc, 0xa2, 0xc5, 0x54, 0xf0, 0xb0, 0x9b,
-0x38, 0x2c, 0x2d, 0x4a, 0x17, 0x5a, 0x05, 0xb2,
-0xcb, 0x14, 0xf9, 0x70, 0x78, 0x42, 0x86, 0x03,
-0x96, 0x0b, 0x4c, 0x84, 0xb3, 0xb6, 0xfb, 0x34,
-0x73, 0x84, 0xf7, 0x05, 0x8a, 0x10, 0x56, 0xec,
-0x0d, 0x9f, 0x99, 0xa8, 0x2f, 0xf0, 0xa0, 0xd9,
-0x7b, 0xb8, 0x16, 0x08, 0xfb, 0xd8, 0xdf, 0xdf,
-0x29, 0x74, 0xf2, 0xbe, 0x7c, 0x1e, 0x85, 0xff,
-0xd3, 0xa7, 0x27, 0x4f, 0x9e, 0xbf, 0xfa, 0xf4,
-0xc5, 0x17, 0x1f, 0x3d, 0x3a, 0xb4, 0xd6, 0x7f,
-0xa4, 0x4d, 0xec, 0x01, 0xa8, 0x52, 0x0f, 0x40,
-0x0c, 0x7b, 0x00, 0x70, 0x6b, 0x26, 0x89, 0x18,
-0x00, 0xcd, 0x05, 0xc4, 0x1d, 0x01, 0x52, 0xa3,
-0x72, 0xfb, 0x77, 0xd4, 0x0d, 0x00, 0x75, 0x80,
-0xdb, 0x6b, 0x6b, 0x37, 0x71, 0x3e, 0x80, 0xc9,
-0x01, 0x40, 0x09, 0xc0, 0xb6, 0x80, 0x4d, 0x3d,
-0x03, 0xf5, 0x7f, 0xc1, 0x92, 0x73, 0x7d, 0xde,
-0x46, 0x68, 0x10, 0x33, 0x6d, 0xf9, 0x7b, 0x95,
-0x7e, 0x39, 0x25, 0x98, 0x7e, 0x33, 0xc8, 0xa1,
-0x1d, 0xb0, 0xf5, 0x26, 0xb7, 0x1d, 0x0f, 0xea,
-0x19, 0x54, 0x00, 0x70, 0x9f, 0xa2, 0xca, 0x4a,
-0x49, 0xb8, 0x6b, 0xd0, 0x7e, 0xf4, 0xf8, 0xf1,
-0x40, 0x95, 0xd7, 0x2b, 0x7a, 0xc9, 0x63, 0x06,
-0xaf, 0x18, 0x51, 0xa8, 0x0d, 0x32, 0x38, 0xb2,
-0xd8, 0x3d, 0xf0, 0xad, 0x71, 0x94, 0xac, 0x4c,
-0x9e, 0xd6, 0x91, 0x4c, 0x26, 0xf4, 0xd5, 0xfe,
-0x48, 0x24, 0x8e, 0xa7, 0xa4, 0xca, 0xd8, 0x4c,
-0x90, 0xad, 0xa9, 0x8e, 0x84, 0x1a, 0x24, 0xf9,
-0xef, 0xaa, 0xa3, 0x77, 0x13, 0x49, 0x51, 0x44,
-0x93, 0xc4, 0x8d, 0x45, 0xb9, 0xd1, 0xb6, 0xe5,
-0x03, 0x1c, 0x5b, 0x5b, 0xc9, 0x78, 0x6c, 0x57,
-0xac, 0x88, 0x1d, 0x44, 0x37, 0x3c, 0xec, 0x2b,
-0xcc, 0xac, 0x5d, 0xd2, 0x70, 0x4d, 0xe7, 0x9e,
-0x63, 0xb9, 0xd6, 0x69, 0x49, 0x8a, 0x68, 0xb8,
-0xe1, 0x80, 0x2a, 0xd5, 0xec, 0xe5, 0x64, 0x32,
-0x91, 0xec, 0xa7, 0xf5, 0x98, 0xe8, 0x57, 0x1f,
-0x20, 0x8a, 0xc2, 0xe1, 0x1f, 0xff, 0x61, 0x66,
-0xe6, 0x27, 0x67, 0x09, 0x50, 0x67, 0x08, 0xff,
-0x80, 0xde, 0x0f, 0xce, 0x81, 0xe9, 0x55, 0x14,
-0xb9, 0x00, 0xb5, 0x4b, 0x4d, 0xe2, 0x0a, 0x4c,
-0xe0, 0x0a, 0x18, 0x40, 0xb8, 0x20, 0x7a, 0x5c,
-0x98, 0xb8, 0xb8, 0xde, 0x15, 0x1c, 0x76, 0x0a,
-0xb6, 0x77, 0xec, 0x7d, 0x61, 0xc2, 0x63, 0x66,
-0x48, 0xdb, 0x1c, 0x81, 0xe6, 0xef, 0x2b, 0xa0,
-0xe6, 0x4f, 0xc2, 0xff, 0xfe, 0xc9, 0xa7, 0x57,
-0x9f, 0x9e, 0xbf, 0x7a, 0xfe, 0xfc, 0xf9, 0x17,
-0x1f, 0x1d, 0xce, 0xd8, 0x7f, 0x83, 0x86, 0xd8,
-0x03, 0x70, 0x99, 0xcf, 0x01, 0x56, 0xb1, 0x05,
-0x90, 0x76, 0x69, 0xc3, 0x6e, 0x00, 0x9c, 0x09,
-0xb0, 0xc2, 0x34, 0x80, 0x1f, 0xb6, 0xfb, 0xd1,
-0x0d, 0xea, 0x08, 0x64, 0x2a, 0xc0, 0xcd, 0x2f,
-0x0c, 0x1d, 0xe0, 0x4b, 0xde, 0x1b, 0xf0, 0x3d,
-0xbd, 0x8c, 0xa3, 0x74, 0xdc, 0x12, 0x27, 0x33,
-0x4e, 0x8a, 0x28, 0xbe, 0x3b, 0xc4, 0xbd, 0xb2,
-0xdc, 0x9d, 0x7a, 0x5a, 0xc8, 0x61, 0x73, 0xec,
-0x91, 0x55, 0x08, 0x7c, 0x73, 0xb3, 0x8f, 0x0c,
-0x00, 0xf7, 0xc1, 0x98, 0x46, 0x54, 0xa1, 0x0d,
-0xa8, 0xfa, 0xdf, 0x50, 0xb7, 0x87, 0x59, 0x55,
-0xaf, 0x61, 0x24, 0x68, 0xcc, 0xd2, 0x1d, 0xd3,
-0xdf, 0x65, 0xad, 0xdc, 0x1e, 0x09, 0xd6, 0x9f,
-0x8a, 0x0c, 0x9f, 0x4c, 0x5a, 0x74, 0x51, 0x42,
-0x6d, 0x04, 0xca, 0x82, 0xe5, 0xc5, 0xa7, 0xa5,
-0x5e, 0x7c, 0x7f, 0xbf, 0xc5, 0x01, 0xca, 0x59,
-0xc8, 0x20, 0x41, 0x85, 0xa3, 0x7b, 0x53, 0xec,
-0xa0, 0xca, 0xf1, 0xef, 0xca, 0x8d, 0xb2, 0x95,
-0x1b, 0xfc, 0x03, 0xc7, 0xb3, 0xb1, 0x3e, 0xc9,
-0x7f, 0x2d, 0xf2, 0xec, 0x3d, 0x86, 0x9d, 0xa4,
-0xe5, 0xd0, 0xb9, 0x0d, 0xa6, 0x35, 0x2d, 0xd3,
-0x1e, 0xe1, 0xc2, 0xa7, 0xcf, 0x99, 0x2a, 0x94,
-0x55, 0xa4, 0xa9, 0xc9, 0xbd, 0x75, 0x2d, 0x36,
-0x65, 0xe2, 0x98, 0x01, 0xbf, 0x49, 0xdf, 0x72,
-0x8c, 0x35, 0x9d, 0x87, 0x3f, 0x44, 0xf5, 0x9f,
-0x44, 0x6a, 0xe7, 0x0c, 0x29, 0xfd, 0x85, 0x30,
-0xb5, 0x08, 0x7e, 0xff, 0x2c, 0xd6, 0xae, 0xc3,
-0x9d, 0xc2, 0xd9, 0x7f, 0x9b, 0x99, 0xf9, 0xb4,
-0x05, 0x70, 0x2b, 0x74, 0xc0, 0x96, 0x80, 0xc2,
-0xae, 0xc7, 0x61, 0xfe, 0x14, 0x9d, 0xd3, 0xdb,
-0xc9, 0xd3, 0xe4, 0x01, 0x78, 0xd3, 0x29, 0x98,
-0x60, 0x67, 0xa6, 0x8e, 0x93, 0x1f, 0xf0, 0x87,
-0x1d, 0xce, 0x37, 0xf0, 0xbd, 0x0f, 0x6e, 0xf3,
-0x1d, 0x42, 0xff, 0xbd, 0x0b, 0xf3, 0xf3, 0x4f,
-0x4f, 0x82, 0xf0, 0xbf, 0x0a, 0x74, 0xf7, 0xfc,
-0xf9, 0x7f, 0x79, 0x74, 0x78, 0xad, 0xff, 0x48,
-0x52, 0xd5, 0x13, 0xba, 0x36, 0xb7, 0x61, 0x28,
-0x00, 0xd4, 0x02, 0x48, 0xf0, 0xd7, 0x06, 0x37,
-0x78, 0x15, 0x80, 0x86, 0x02, 0x67, 0xfa, 0x51,
-0x6c, 0x04, 0x00, 0x06, 0xb0, 0x68, 0x71, 0x00,
-0x6c, 0x07, 0xe0, 0x5a, 0xc0, 0x92, 0x56, 0x2e,
-0xd7, 0x69, 0xd5, 0xdb, 0x89, 0x12, 0xb4, 0x13,
-0x19, 0x19, 0x2d, 0x04, 0xe3, 0x3b, 0x47, 0xe1,
-0x72, 0x94, 0xfe, 0xc7, 0xc9, 0xf8, 0xb0, 0x17,
-0xc0, 0x6a, 0xa7, 0x63, 0xfa, 0x0d, 0x28, 0x81,
-0xd7, 0xd0, 0x22, 0xfe, 0xd0, 0x22, 0x3a, 0x18,
-0x2f, 0x1f, 0xe9, 0x45, 0x71, 0x4d, 0xfc, 0x7e,
-0xa6, 0x8c, 0x2b, 0x95, 0x74, 0x07, 0x9a, 0x60,
-0x60, 0x9d, 0x93, 0x76, 0x68, 0xfb, 0x3a, 0x75,
-0xa5, 0x12, 0xec, 0x69, 0xed, 0x78, 0x92, 0xfc,
-0x42, 0xef, 0x78, 0x7d, 0xe5, 0xce, 0xd1, 0x45,
-0xbd, 0x4e, 0xf2, 0xdf, 0xdd, 0x03, 0x49, 0x4b,
-0x1d, 0x8c, 0xf7, 0xa3, 0xe4, 0xd8, 0xaf, 0x56,
-0x68, 0x81, 0xbf, 0x3f, 0x56, 0xfe, 0xf7, 0xfc,
-0x18, 0x97, 0x3b, 0xfb, 0x86, 0xe0, 0x0a, 0xf1,
-0x16, 0xe0, 0x1f, 0x19, 0x8e, 0x9b, 0x59, 0xe6,
-0x04, 0xd6, 0x21, 0xea, 0x4b, 0x00, 0x45, 0xc8,
-0x0d, 0xe7, 0x0a, 0xa8, 0x91, 0x48, 0xdd, 0x08,
-0xf7, 0x28, 0xff, 0x25, 0x9f, 0x64, 0xe5, 0x00,
-0x6e, 0x5a, 0x28, 0x6a, 0xff, 0x7f, 0x06, 0x41,
-0x46, 0x2d, 0x52, 0x1e, 0x99, 0x27, 0x31, 0x54,
-0x61, 0x82, 0x4e, 0xe1, 0x1b, 0x4e, 0xcf, 0xec,
-0x96, 0x76, 0xb3, 0xb2, 0x54, 0xc3, 0x14, 0x4e,
-0x26, 0xa7, 0x48, 0x16, 0x23, 0x60, 0x28, 0x52,
-0x77, 0x7e, 0xf5, 0x3e, 0x87, 0xd5, 0x75, 0xc0,
-0xfa, 0x4b, 0x0c, 0x68, 0xaf, 0xa2, 0xfc, 0x5f,
-0x38, 0xfb, 0xed, 0xfb, 0x20, 0xfe, 0x8b, 0xd7,
-0x5b, 0x34, 0xaa, 0x06, 0xde, 0xbc, 0x85, 0x0d,
-0x00, 0x85, 0x0e, 0x47, 0x65, 0x87, 0xc6, 0xda,
-0x84, 0x59, 0xc3, 0x3b, 0x5e, 0x09, 0x90, 0xcc,
-0x40, 0x0c, 0xa3, 0xc3, 0x9d, 0x75, 0x38, 0xf8,
-0x99, 0x0b, 0xfb, 0x81, 0xe1, 0x1a, 0x2f, 0x0a,
-0xdc, 0x41, 0x81, 0xdc, 0xa2, 0x4e, 0x4f, 0xa2,
-0x1d, 0x1e, 0xf8, 0x38, 0x47, 0xe8, 0x30, 0x16,
-0x01, 0xa7, 0x0f, 0x71, 0x1f, 0x46, 0xf4, 0x77,
-0x68, 0xb4, 0x1f, 0xc0, 0xff, 0x02, 0x08, 0xff,
-0x93, 0x27, 0x39, 0xf8, 0xaf, 0xde, 0xbd, 0x7b,
-0xfe, 0xee, 0x67, 0x77, 0x0f, 0x55, 0xfd, 0x8f,
-0x44, 0x76, 0x73, 0x21, 0x63, 0x11, 0x20, 0xde,
-0x05, 0x48, 0x0a, 0x00, 0xd6, 0x01, 0x74, 0x63,
-0x39, 0x10, 0xea, 0x07, 0x6c, 0xf7, 0x37, 0x37,
-0x4c, 0x0e, 0x90, 0xcb, 0xb1, 0xae, 0x80, 0x84,
-0xc1, 0x01, 0xe6, 0xb0, 0x4d, 0xfc, 0xaf, 0x51,
-0x9a, 0x4a, 0xb4, 0xd2, 0xae, 0x44, 0x5d, 0x60,
-0x50, 0x10, 0x52, 0x71, 0x61, 0xe6, 0xc5, 0x67,
-0x7b, 0x6d, 0x3e, 0xaa, 0x8f, 0xed, 0x56, 0xbd,
-0xc3, 0x87, 0x83, 0x62, 0x01, 0x70, 0xda, 0xad,
-0x6a, 0xb3, 0xd1, 0xcd, 0xcd, 0xe8, 0x95, 0x00,
-0x6e, 0x55, 0x3a, 0x8c, 0xa9, 0x5d, 0xb6, 0x3f,
-0x36, 0x95, 0x1c, 0x77, 0x59, 0xa2, 0x53, 0xc2,
-0x3d, 0x27, 0x55, 0x79, 0x37, 0x1b, 0x1c, 0x3e,
-0x4e, 0xf9, 0x45, 0x31, 0x08, 0xe9, 0xa9, 0x76,
-0x9d, 0xa4, 0xb8, 0xb4, 0x13, 0x31, 0xe2, 0x80,
-0xd7, 0x6d, 0xa1, 0x75, 0x1b, 0xf9, 0xe5, 0x21,
-0xc0, 0x71, 0x9d, 0x46, 0xba, 0xd1, 0x3e, 0xd6,
-0x6c, 0xf7, 0x6d, 0x6b, 0x9b, 0x73, 0x63, 0x3b,
-0x6e, 0xfe, 0x2f, 0x39, 0xcc, 0x72, 0x62, 0x8a,
-0xd2, 0x3d, 0x11, 0x60, 0x6f, 0x68, 0x6e, 0xe8,
-0x61, 0xdb, 0x3c, 0x5b, 0x8a, 0x3c, 0x0e, 0x09,
-0xed, 0x1f, 0xad, 0x69, 0xa0, 0x8d, 0x61, 0xdb,
-0x86, 0x24, 0x49, 0xf6, 0xd8, 0x45, 0x82, 0xae,
-0xdc, 0x78, 0x92, 0x92, 0xdb, 0x99, 0x54, 0x45,
-0x66, 0x39, 0xe7, 0xfc, 0x8c, 0xc9, 0xc8, 0x5b,
-0x06, 0xb4, 0xb9, 0xe8, 0xf0, 0x69, 0x51, 0x1b,
-0xb5, 0x8d, 0xa9, 0x9a, 0x3b, 0x96, 0x0b, 0xee,
-0x68, 0xc7, 0x91, 0x50, 0x11, 0xea, 0x3c, 0x65,
-0x7b, 0x82, 0x63, 0x83, 0x73, 0x57, 0x96, 0x87,
-0x0d, 0xc8, 0x2b, 0x71, 0x71, 0x79, 0x16, 0x21,
-0x1b, 0xfb, 0xab, 0xb3, 0x88, 0x36, 0x5f, 0x07,
-0x85, 0x7e, 0xf1, 0xc3, 0xb0, 0x0f, 0xa1, 0x87,
-0xf2, 0xbf, 0xf9, 0xe9, 0xeb, 0x6c, 0xf2, 0xdf,
-0x4f, 0x8e, 0xbd, 0xe4, 0x45, 0x88, 0xfb, 0xc2,
-0xc7, 0x66, 0x66, 0xce, 0x1d, 0xa7, 0x01, 0x76,
-0xe0, 0xc0, 0x40, 0xb9, 0x8f, 0x80, 0x88, 0xa7,
-0x0f, 0xbb, 0xdf, 0xf1, 0x81, 0x0f, 0xa1, 0xec,
-0x0b, 0xb3, 0x46, 0xf9, 0x4e, 0xc7, 0x40, 0xb6,
-0x71, 0x74, 0xf8, 0xbd, 0x79, 0xe5, 0xaf, 0x39,
-0xf7, 0x30, 0xd8, 0x06, 0x31, 0x92, 0x4e, 0x87,
-0xb3, 0x03, 0xae, 0x09, 0xf0, 0x1b, 0x1c, 0xe5,
-0x1b, 0xce, 0x63, 0x98, 0x28, 0xf9, 0x7d, 0xa0,
-0xf7, 0x43, 0xc5, 0x9f, 0xc3, 0xff, 0xe5, 0xab,
-0x27, 0x4e, 0xdc, 0x3d, 0x71, 0xf7, 0xfc, 0x67,
-0xff, 0x7c, 0xb8, 0xf0, 0x8f, 0x44, 0xf6, 0x72,
-0xb4, 0x0b, 0x90, 0xd9, 0x05, 0x48, 0x0d, 0x00,
-0x6c, 0x8f, 0x6e, 0x6c, 0x04, 0x2c, 0x6d, 0xe3,
-0xbe, 0xc0, 0x41, 0x6c, 0x04, 0x08, 0x44, 0xf7,
-0x36, 0x96, 0xe6, 0x0c, 0x0e, 0xb0, 0x76, 0xd3,
-0x43, 0xe3, 0x01, 0x12, 0x7e, 0x54, 0x03, 0x6a,
-0x83, 0x14, 0xc8, 0xff, 0x18, 0x62, 0x82, 0x46,
-0xbe, 0x9b, 0x94, 0x75, 0xa2, 0x89, 0x65, 0xb0,
-0x3f, 0x08, 0x62, 0x27, 0x55, 0xd9, 0xc6, 0x3d,
-0x40, 0x69, 0x87, 0x70, 0xd3, 0xc1, 0x92, 0xa0,
-0xfc, 0x47, 0xb5, 0x6c, 0x14, 0x15, 0x80, 0x40,
-0xbb, 0x5e, 0x6f, 0x54, 0x30, 0x9a, 0xc8, 0xa2,
-0xf6, 0xef, 0x9c, 0x26, 0xf4, 0xeb, 0xa5, 0xed,
-0x61, 0x63, 0xb5, 0xa2, 0xcd, 0x7e, 0x01, 0x41,
-0x52, 0x43, 0xe5, 0x93, 0xf1, 0xd8, 0x6c, 0xb0,
-0x1c, 0x87, 0xba, 0xab, 0x6d, 0xda, 0x81, 0x46,
-0x9b, 0x8c, 0xf1, 0xce, 0x81, 0xf0, 0xf4, 0xf7,
-0x76, 0x03, 0xc8, 0xbb, 0x70, 0x4b, 0xce, 0xe7,
-0x26, 0xe0, 0x19, 0xaa, 0x67, 0x6c, 0x8f, 0xc8,
-0xc1, 0x74, 0xab, 0x87, 0xcc, 0x72, 0xb8, 0xdd,
-0xd5, 0x9c, 0xbe, 0x2d, 0x8b, 0x1d, 0xd4, 0x08,
-0x8a, 0x3d, 0x6a, 0x2c, 0xb1, 0xa7, 0x6f, 0x64,
-0x18, 0x77, 0xe2, 0x2b, 0x9e, 0x52, 0xa9, 0x6b,
-0x85, 0x78, 0xea, 0x54, 0xf1, 0x47, 0x42, 0x8c,
-0x2f, 0x3b, 0xbc, 0x0a, 0x69, 0x75, 0xd0, 0x22,
-0x77, 0x6d, 0x81, 0x3e, 0x93, 0x34, 0xe3, 0x82,
-0x8d, 0x4d, 0x2a, 0xb0, 0xea, 0x4a, 0x30, 0xa8,
-0xab, 0xa4, 0xd0, 0x18, 0xc3, 0xcb, 0xa6, 0x23,
-0x1c, 0x8f, 0xfe, 0x12, 0xa2, 0x19, 0x65, 0xeb,
-0x6f, 0x19, 0xba, 0xb9, 0xd1, 0x4e, 0xc5, 0x8f,
-0xfe, 0x1b, 0x65, 0x2f, 0xb2, 0x85, 0x73, 0x1f,
-0xc0, 0xb5, 0x43, 0xa8, 0x46, 0x00, 0x76, 0xf2,
-0x28, 0x9f, 0x41, 0x03, 0x2f, 0xf8, 0x8c, 0xc7,
-0xfc, 0x2c, 0xe0, 0x73, 0x78, 0x8d, 0xef, 0xc3,
-0x93, 0xcf, 0xad, 0x1b, 0x46, 0x86, 0x91, 0x14,
-0x08, 0x88, 0x0d, 0x3a, 0xe0, 0x21, 0x58, 0x3c,
-0x80, 0x98, 0x0b, 0x3c, 0xc5, 0x40, 0x59, 0xd8,
-0x06, 0xf8, 0xb1, 0xde, 0x3f, 0x7f, 0xe1, 0x29,
-0x97, 0xfd, 0x27, 0x80, 0xde, 0x3d, 0xf1, 0xf2,
-0xcb, 0x77, 0xcf, 0xff, 0xef, 0x3f, 0x1c, 0x36,
-0xfe, 0xe5, 0xd0, 0xda, 0x35, 0x63, 0x15, 0x40,
-0xea, 0x02, 0x60, 0x9b, 0xb3, 0x33, 0x0d, 0x00,
-0x47, 0x02, 0xe2, 0x6c, 0xc0, 0x2c, 0xd5, 0x01,
-0x40, 0x05, 0x30, 0x38, 0xc0, 0x6d, 0xa8, 0x05,
-0xe0, 0x78, 0x20, 0xae, 0x05, 0x24, 0x6a, 0x7a,
-0x30, 0x93, 0x6a, 0xac, 0xcb, 0x6c, 0x12, 0xa1,
-0x86, 0x33, 0x09, 0x34, 0xbc, 0x48, 0x43, 0x56,
-0x3f, 0xc0, 0x46, 0x82, 0x89, 0x2b, 0x16, 0xbb,
-0x7a, 0x76, 0xa5, 0x64, 0x39, 0xa0, 0xa1, 0xc7,
-0xda, 0xce, 0xf7, 0xe2, 0x6e, 0xf2, 0xb7, 0xb5,
-0xd9, 0x3e, 0x28, 0x00, 0xd1, 0x00, 0x38, 0x5a,
-0xa5, 0xd5, 0x4a, 0x74, 0x4d, 0xb4, 0x83, 0x7c,
-0x84, 0x84, 0x0b, 0xa1, 0x1f, 0x85, 0x7f, 0x23,
-0x95, 0xd5, 0x86, 0x39, 0x33, 0xcc, 0x27, 0x76,
-0x3f, 0x73, 0x7a, 0x03, 0x1b, 0x14, 0xb6, 0x55,
-0x5d, 0x1f, 0x50, 0xf0, 0x74, 0x82, 0x59, 0xf7,
-0x08, 0x62, 0x30, 0x11, 0x9b, 0xe1, 0x36, 0x40,
-0x06, 0x98, 0x5d, 0x17, 0x62, 0x8c, 0x73, 0xa6,
-0xe8, 0x03, 0x28, 0xfe, 0xe8, 0x09, 0xbb, 0xb5,
-0x9f, 0xe4, 0x35, 0x37, 0x62, 0xba, 0xe4, 0x0e,
-0x08, 0xc0, 0x15, 0xe0, 0x2c, 0x05, 0xc8, 0x13,
-0x8b, 0x05, 0x81, 0xc1, 0x6a, 0x52, 0x4d, 0xec,
-0x60, 0x59, 0xab, 0xb7, 0x47, 0xc1, 0xf5, 0x6d,
-0x95, 0x5b, 0xd5, 0xd8, 0x17, 0xea, 0x52, 0x2f,
-0x31, 0x76, 0xda, 0xcd, 0xe8, 0x98, 0x11, 0xbb,
-0x25, 0x55, 0xbb, 0x31, 0x60, 0xa4, 0xd9, 0xbe,
-0xc4, 0x1e, 0xf3, 0x81, 0x99, 0xb5, 0x78, 0x23,
-0x55, 0xe3, 0x56, 0xa6, 0x22, 0x85, 0x34, 0x64,
-0xa8, 0x15, 0x6a, 0x45, 0xd6, 0x79, 0x24, 0xd1,
-0x8d, 0x3e, 0xe0, 0xf7, 0x46, 0x6a, 0x98, 0x19,
-0x0e, 0xb9, 0x84, 0xd3, 0x4d, 0x54, 0x1c, 0x6e,
-0x0e, 0xb5, 0xcc, 0x94, 0xaa, 0xcd, 0x91, 0x4f,
-0xae, 0x38, 0x3e, 0x8b, 0x90, 0x5b, 0xfc, 0xcf,
-0x59, 0x6a, 0x3c, 0x03, 0x05, 0x80, 0xd0, 0x4d,
-0x26, 0xdf, 0x19, 0x63, 0xe6, 0xf9, 0xcc, 0x39,
-0xc6, 0x01, 0x8e, 0x61, 0x2d, 0xbb, 0xf3, 0x23,
-0xd4, 0x10, 0x18, 0xd8, 0xf1, 0xe8, 0x98, 0x3f,
-0x3a, 0xf8, 0xc3, 0x3c, 0x36, 0xc5, 0xd3, 0x41,
-0xb8, 0xce, 0x23, 0x5a, 0xf1, 0x04, 0x6e, 0xe0,
-0xe3, 0x17, 0xeb, 0xcf, 0x78, 0x80, 0x76, 0xf3,
-0x78, 0x63, 0xd9, 0x60, 0x46, 0x84, 0x39, 0xfc,
-0x00, 0xf0, 0x05, 0x54, 0x2c, 0x38, 0x53, 0xe1,
-0x3a, 0xbf, 0x6f, 0xde, 0x77, 0x81, 0x64, 0xff,
-0xfd, 0x93, 0x17, 0x2c, 0xf4, 0x9f, 0x78, 0x00,
-0x1c, 0xe0, 0xe5, 0xaf, 0xbf, 0xfe, 0xa7, 0xc3,
-0x86, 0x7f, 0x24, 0xd2, 0x06, 0x05, 0x60, 0xc9,
-0x6a, 0x01, 0xd0, 0x09, 0x59, 0x08, 0x7f, 0x89,
-0x0f, 0x05, 0xc6, 0x6e, 0x00, 0xdc, 0x18, 0x10,
-0x54, 0x80, 0x7e, 0x94, 0x2a, 0x01, 0x97, 0x97,
-0x91, 0x03, 0xac, 0x85, 0xd6, 0x72, 0xb9, 0x9b,
-0xc8, 0x01, 0x3c, 0x89, 0x65, 0x3d, 0x58, 0x1e,
-0xe1, 0x3e, 0x22, 0xa5, 0x92, 0xfa, 0x06, 0xee,
-0x59, 0xaf, 0xca, 0x2a, 0x92, 0x26, 0x27, 0x38,
-0x03, 0xf0, 0xd3, 0x69, 0x16, 0xe9, 0x91, 0x9a,
-0x21, 0x07, 0x32, 0x38, 0x28, 0xbd, 0x81, 0x9b,
-0x8f, 0xa0, 0xbb, 0x92, 0x2e, 0x45, 0x27, 0x4a,
-0x3e, 0xbf, 0x26, 0xda, 0x5a, 0x2c, 0x10, 0xbd,
-0xd2, 0xc7, 0x9d, 0x31, 0xa1, 0x0e, 0x40, 0xeb,
-0x95, 0xe2, 0x68, 0x45, 0x10, 0xd7, 0x5c, 0xdb,
-0x8c, 0x30, 0x8d, 0x13, 0xab, 0xfd, 0xc8, 0xb7,
-0x4a, 0x25, 0xea, 0xba, 0x18, 0x6a, 0xc3, 0x90,
-0xdf, 0x1e, 0xae, 0x45, 0x39, 0x75, 0xb6, 0x8d,
-0xe3, 0x1e, 0x7b, 0x2c, 0xa2, 0x10, 0x83, 0x2e,
-0x1c, 0x38, 0x0b, 0xfa, 0x20, 0x78, 0x12, 0x1c,
-0x57, 0x71, 0xca, 0x04, 0xc6, 0x9d, 0x1c, 0x33,
-0xa7, 0x25, 0x95, 0x6e, 0xc9, 0x64, 0x3b, 0xd9,
-0x63, 0xb4, 0x01, 0xdf, 0xd9, 0x05, 0xce, 0x15,
-0x7a, 0x9e, 0xf2, 0x8d, 0x01, 0x66, 0x65, 0x4c,
-0x2c, 0xd0, 0xcf, 0xb8, 0x5f, 0xfc, 0xaf, 0x4b,
-0x18, 0x14, 0xd0, 0xa2, 0x96, 0x2a, 0x97, 0x83,
-0xc8, 0xcf, 0x29, 0x86, 0x14, 0x31, 0x19, 0xd2,
-0xd7, 0xca, 0x0d, 0x33, 0x75, 0xbf, 0x6c, 0x03,
-0xfe, 0x47, 0xb4, 0x02, 0x34, 0xff, 0x12, 0xd5,
-0xfe, 0x25, 0x3c, 0xe2, 0x5d, 0x16, 0x1e, 0x19,
-0xc8, 0x08, 0x61, 0xef, 0xc5, 0x27, 0x72, 0x34,
-0x1e, 0x1a, 0x04, 0x31, 0x41, 0x87, 0x58, 0x04,
-0x54, 0xd3, 0x0b, 0xc3, 0xb1, 0x65, 0x2e, 0x19,
-0xde, 0xb0, 0xc7, 0xb8, 0xed, 0xe4, 0x10, 0x8a,
-0x57, 0x2a, 0x15, 0xd3, 0xa2, 0xc2, 0x9c, 0x3a,
-0x30, 0x79, 0xfc, 0xff, 0x98, 0x67, 0x98, 0xea,
-0x74, 0x5e, 0x45, 0x74, 0x13, 0xe6, 0x48, 0xfe,
-0xbf, 0xfe, 0xf9, 0xbf, 0x5f, 0xff, 0xfc, 0xfa,
-0xf5, 0xeb, 0xc7, 0xb0, 0x12, 0xf0, 0xca, 0x27,
-0xc0, 0x17, 0xf2, 0xa7, 0x80, 0x43, 0x7c, 0x02,
-0xc8, 0xc3, 0xf9, 0x75, 0x04, 0xc1, 0x09, 0xca,
-0x77, 0xf8, 0x1b, 0x1f, 0x7b, 0xcd, 0x2d, 0xe0,
-0x78, 0x7c, 0xe6, 0x80, 0x58, 0x0b, 0xfe, 0x17,
-0xf8, 0x3f, 0xb3, 0x54, 0xc8, 0x9b, 0x36, 0xe9,
-0x71, 0x1e, 0xf9, 0x11, 0x59, 0x61, 0x3c, 0xa0,
-0x80, 0x82, 0x1e, 0x19, 0x0a, 0xf1, 0x11, 0x1e,
-0x16, 0xb6, 0xf6, 0xe7, 0x7d, 0xf3, 0x88, 0x7d,
-0x5e, 0xef, 0x3f, 0xc9, 0xc0, 0xff, 0xde, 0x7b,
-0x0f, 0xde, 0xfb, 0xcd, 0x6f, 0xde, 0x7d, 0xf9,
-0xee, 0xbf, 0x1e, 0x6a, 0xe3, 0x3f, 0xa3, 0xee,
-0x22, 0xb6, 0x00, 0x44, 0x03, 0xb8, 0x0d, 0xf0,
-0x4a, 0x49, 0xbd, 0x61, 0x29, 0x00, 0xc4, 0x00,
-0xa8, 0x15, 0xb0, 0xb7, 0x9b, 0xcd, 0x36, 0x98,
-0x0a, 0x10, 0xc5, 0xcd, 0xbc, 0xa8, 0x33, 0xf0,
-0xda, 0xed, 0x50, 0x88, 0x58, 0xc0, 0xcd, 0x2f,
-0x3c, 0xcb, 0x5a, 0x36, 0x53, 0x4f, 0x05, 0xb3,
-0x43, 0xdc, 0x80, 0x3e, 0x06, 0x27, 0xfd, 0x62,
-0x31, 0x5d, 0xf6, 0xf8, 0xdd, 0x04, 0x59, 0xf6,
-0xc3, 0x2e, 0x14, 0x69, 0x40, 0xf2, 0x3a, 0x5a,
-0xdb, 0x85, 0x63, 0x85, 0xfe, 0xb7, 0xb5, 0x8c,
-0xc0, 0xbe, 0xdf, 0x9f, 0x68, 0xeb, 0x72, 0x39,
-0xda, 0xbf, 0x02, 0x0c, 0x00, 0x77, 0xb7, 0x6d,
-0x54, 0xa0, 0x98, 0x91, 0xe4, 0xd6, 0x26, 0x2a,
-0x1c, 0xd4, 0x70, 0x89, 0xcd, 0x16, 0xb1, 0x61,
-0xa3, 0x51, 0x4f, 0xed, 0x22, 0xfc, 0x19, 0x7d,
-0xe9, 0xf4, 0x31, 0xa7, 0x56, 0x48, 0x99, 0xa8,
-0xac, 0xef, 0x62, 0xc0, 0x10, 0x89, 0xde, 0x2e,
-0xfe, 0x54, 0x6d, 0x51, 0x18, 0x03, 0x1b, 0x05,
-0x41, 0x77, 0x19, 0x61, 0x1c, 0xd6, 0xc1, 0x09,
-0x45, 0xdb, 0x3c, 0x56, 0xe8, 0x7f, 0xf2, 0x5c,
-0xc1, 0x34, 0xb1, 0xee, 0xe5, 0x83, 0x03, 0x70,
-0x7e, 0x7c, 0xaa, 0x84, 0x51, 0xcd, 0x42, 0x80,
-0xcc, 0xfb, 0x15, 0x16, 0xd2, 0xb6, 0xb4, 0x27,
-0x76, 0xb0, 0x88, 0x50, 0xc4, 0x6d, 0xdd, 0xd7,
-0xe1, 0x83, 0x7a, 0x2c, 0x62, 0x2b, 0x10, 0xd3,
-0x6e, 0xc9, 0x9d, 0x1b, 0x6d, 0x7d, 0x04, 0x2c,
-0x35, 0xc8, 0xfc, 0x06, 0x4b, 0xb1, 0x15, 0x7b,
-0x18, 0x2b, 0xae, 0xcf, 0xe1, 0x79, 0xbb, 0x2d,
-0x45, 0x1d, 0x1e, 0x85, 0x8e, 0x64, 0x79, 0x2c,
-0x8d, 0x64, 0x88, 0xd9, 0x5d, 0x99, 0x66, 0x96,
-0x62, 0x90, 0xdf, 0xe8, 0xf7, 0x70, 0xb7, 0x42,
-0xfb, 0x97, 0xa4, 0xea, 0x75, 0x59, 0xca, 0x24,
-0x9e, 0x33, 0x61, 0x38, 0xfd, 0x1d, 0x4d, 0x97,
-0x41, 0x3d, 0x3a, 0xff, 0x39, 0xe0, 0xfc, 0x7a,
-0x9e, 0xcc, 0xd8, 0xfe, 0x77, 0x8a, 0x50, 0x06,
-0x77, 0xef, 0x37, 0x81, 0x31, 0xbc, 0x0f, 0x37,
-0x9d, 0xbf, 0x98, 0x99, 0x79, 0xf3, 0x6c, 0x9e,
-0x3f, 0xcf, 0xfb, 0x8c, 0x83, 0xdb, 0x63, 0xda,
-0x38, 0x37, 0xb3, 0xe7, 0x82, 0xd3, 0x79, 0x47,
-0xee, 0xf2, 0x79, 0xcb, 0xbd, 0x79, 0xcd, 0x1b,
-0x61, 0xb0, 0xab, 0xcf, 0x0a, 0x04, 0x80, 0xef,
-0x9b, 0xc7, 0xde, 0x3e, 0xec, 0xef, 0x37, 0x5a,
-0xfd, 0x18, 0xf8, 0xdf, 0x7b, 0xf0, 0xe0, 0xc1,
-0x9f, 0x3e, 0x78, 0xf0, 0xee, 0xbb, 0x5f, 0xff,
-0xed, 0xe1, 0xc3, 0x3f, 0x12, 0x19, 0xe5, 0x6e,
-0xd7, 0x2e, 0x33, 0x05, 0x80, 0xcb, 0x55, 0xc4,
-0x3e, 0x0d, 0x03, 0x78, 0x0c, 0xda, 0x5b, 0xf7,
-0x08, 0x36, 0x02, 0x50, 0x1d, 0x80, 0x73, 0x80,
-0x3d, 0xdc, 0xce, 0xef, 0x72, 0x0d, 0xaa, 0x01,
-0xc8, 0x02, 0xd6, 0xd6, 0x72, 0x6b, 0x37, 0x97,
-0xf5, 0x0a, 0xe2, 0x32, 0xd8, 0x68, 0x64, 0x91,
-0xf0, 0xbf, 0x92, 0x85, 0x9b, 0x92, 0xba, 0x76,
-0x0b, 0x47, 0x0c, 0x62, 0x1d, 0x01, 0x4f, 0x32,
-0x22, 0x65, 0xf4, 0x72, 0xa6, 0x5c, 0x4f, 0x35,
-0xd0, 0x05, 0x1e, 0x74, 0x56, 0x1a, 0x59, 0x6d,
-0x94, 0xe0, 0x16, 0xfd, 0xec, 0xc7, 0x9c, 0xfb,
-0x3d, 0x51, 0xfd, 0xc8, 0x6a, 0xa0, 0xdd, 0x86,
-0x1a, 0x40, 0x66, 0x54, 0x4f, 0x21, 0xfa, 0x62,
-0x20, 0x69, 0xba, 0xc4, 0x03, 0x34, 0x8a, 0x2a,
-0x1b, 0xb6, 0xc4, 0x36, 0x31, 0x01, 0xd5, 0x3f,
-0x95, 0xda, 0xd6, 0x82, 0x21, 0xc3, 0x27, 0x46,
-0x7e, 0xf3, 0xe7, 0xcf, 0xc9, 0xbb, 0x99, 0xcc,
-0x28, 0xb5, 0xba, 0x8a, 0x11, 0x30, 0x62, 0x00,
-0xbf, 0x15, 0x6d, 0x39, 0xe1, 0x20, 0xbf, 0xe3,
-0x26, 0xd8, 0xcd, 0x60, 0xdc, 0x21, 0xea, 0xec,
-0x3b, 0x27, 0xa8, 0xe2, 0x7a, 0xe2, 0x78, 0x1f,
-0xd3, 0x6a, 0xf6, 0xa8, 0x98, 0x09, 0x33, 0x19,
-0x8c, 0x49, 0xf0, 0xed, 0x8e, 0x00, 0x4d, 0x9f,
-0x2a, 0xda, 0xef, 0xdc, 0x31, 0x44, 0x63, 0x68,
-0xd0, 0x00, 0x0e, 0x95, 0x5a, 0x9d, 0x74, 0x80,
-0xb9, 0x11, 0xb2, 0x25, 0x01, 0xfb, 0x45, 0xb5,
-0x72, 0x19, 0xb8, 0x19, 0x5a, 0xa5, 0x54, 0xb0,
-0xdb, 0xff, 0xbf, 0xf6, 0xce, 0x2e, 0x34, 0xae,
-0x24, 0xbb, 0xe3, 0x6b, 0x14, 0x13, 0x36, 0x9e,
-0x61, 0xc9, 0x4b, 0x18, 0xda, 0xb0, 0x8d, 0x92,
-0x6d, 0xd4, 0x2b, 0x1b, 0x13, 0xed, 0x83, 0x76,
-0x13, 0xe6, 0x65, 0x50, 0x96, 0xf5, 0x86, 0xa4,
-0x45, 0xeb, 0xb2, 0x41, 0xcd, 0x2a, 0x2d, 0x2d,
-0x51, 0xd2, 0x08, 0x26, 0x63, 0xd6, 0x44, 0x84,
-0x35, 0xd1, 0xae, 0x48, 0xf0, 0x4e, 0xa4, 0xb8,
-0x33, 0xea, 0x64, 0xbc, 0xb1, 0x89, 0x97, 0x30,
-0x61, 0x24, 0x7b, 0xf2, 0xd0, 0x3d, 0x44, 0xa8,
-0xc7, 0xac, 0x5e, 0xf2, 0x01, 0xf9, 0x20, 0xca,
-0x43, 0xd2, 0xc4, 0xe8, 0xc1, 0x16, 0x34, 0x7a,
-0xd8, 0x8e, 0x5e, 0x16, 0x12, 0x46, 0xa2, 0xbb,
-0xd3, 0x71, 0xea, 0x9c, 0xfa, 0xae, 0x7b, 0x5b,
-0x1f, 0x1e, 0x4b, 0xf6, 0x86, 0xff, 0xef, 0xde,
-0xbe, 0xb7, 0x6e, 0xd5, 0xa9, 0x53, 0xa7, 0xea,
-0x76, 0xd5, 0xad, 0xfb, 0x55, 0x57, 0x2f, 0xe2,
-0x99, 0x28, 0x95, 0xa2, 0x57, 0xe9, 0xea, 0xaf,
-0x63, 0xe7, 0xb5, 0x5c, 0x47, 0xd4, 0x7f, 0xfb,
-0x1f, 0x88, 0x47, 0x89, 0x21, 0x92, 0xe4, 0x0f,
-0x0b, 0xad, 0xaf, 0xaf, 0x88, 0xce, 0x7f, 0x23,
-0x31, 0xff, 0xe1, 0xae, 0xb3, 0xe5, 0xa2, 0xcb,
-0xee, 0xfc, 0x3b, 0x17, 0x2f, 0xce, 0x51, 0xf5,
-0x13, 0x1d, 0xe9, 0xdf, 0xfa, 0xf6, 0xa7, 0x3e,
-0xf5, 0xeb, 0xa2, 0x5e, 0x99, 0xfa, 0x7f, 0x9d,
-0xba, 0xd7, 0xd7, 0x2f, 0xbe, 0x49, 0x63, 0x02,
-0xfc, 0xe6, 0xf5, 0xeb, 0xa3, 0x6f, 0xbe, 0x21,
-0x7a, 0x05, 0x17, 0x59, 0xf6, 0xe2, 0xf5, 0x39,
-0x55, 0x3f, 0xaf, 0x73, 0xed, 0x55, 0x55, 0x75,
-0xd4, 0xd4, 0xdb, 0xd1, 0xeb, 0xb6, 0x82, 0x3b,
-0x0e, 0xcf, 0xe9, 0x54, 0xf3, 0x8b, 0x36, 0xd4,
-0xb4, 0x01, 0xa4, 0x63, 0x94, 0x8c, 0x90, 0xdb,
-0xa3, 0x2a, 0x85, 0x51, 0x32, 0x6b, 0x74, 0xee,
-0xfa, 0x9c, 0x3a, 0xe9, 0x57, 0xb5, 0xff, 0x8e,
-0x3c, 0xf4, 0x8f, 0x8c, 0x8c, 0x50, 0xf5, 0x7f,
-0xff, 0xeb, 0x17, 0x4e, 0xed, 0xcd, 0x3f, 0x97,
-0x83, 0x35, 0xfe, 0x0e, 0xc0, 0x60, 0xaf, 0x50,
-0xef, 0x4c, 0xa4, 0xbf, 0x94, 0x7b, 0x40, 0xe7,
-0xed, 0xea, 0x70, 0xda, 0x92, 0xe7, 0x00, 0xfc,
-0x24, 0x00, 0xb5, 0x00, 0x05, 0xdd, 0x07, 0xa0,
-0xcf, 0xb9, 0xad, 0x51, 0x27, 0x80, 0x2e, 0x05,
-0x0c, 0xdf, 0x9b, 0xed, 0xde, 0x5f, 0xe9, 0x51,
-0xbd, 0x14, 0xa8, 0x45, 0x81, 0xd6, 0xcd, 0x5c,
-0xf1, 0xfc, 0xdb, 0x3c, 0x9d, 0xff, 0x1a, 0xcd,
-0x66, 0x6a, 0x44, 0xbd, 0x29, 0x8e, 0x21, 0x20,
-0xd1, 0x82, 0x8c, 0x51, 0x38, 0xc8, 0x6a, 0xc1,
-0xb7, 0xdd, 0x18, 0x82, 0xe9, 0x74, 0xd4, 0x59,
-0x11, 0xd5, 0xbf, 0x21, 0xfe, 0xae, 0xeb, 0x54,
-0x19, 0x44, 0x67, 0xa3, 0xc9, 0x3d, 0xdc, 0x1d,
-0xf9, 0xed, 0x02, 0xea, 0x4e, 0x0a, 0x43, 0x9b,
-0x1d, 0xba, 0x63, 0xb1, 0xbe, 0x5e, 0xef, 0x46,
-0xbd, 0x61, 0x19, 0xf9, 0x6b, 0x9e, 0x4e, 0xa9,
-0xee, 0x5a, 0x73, 0xab, 0x21, 0x2c, 0x58, 0x57,
-0xc9, 0x2b, 0x0b, 0xca, 0x85, 0x4a, 0xb4, 0xe4,
-0xa6, 0xab, 0x16, 0xae, 0x45, 0xe7, 0x0b, 0xd4,
-0x76, 0x91, 0x0d, 0x6c, 0xb3, 0x8d, 0xaa, 0x36,
-0x43, 0x2f, 0xa5, 0x5c, 0x2f, 0x4a, 0xd1, 0xaa,
-0x56, 0x29, 0xb5, 0xbf, 0x7d, 0xde, 0xaa, 0xf7,
-0x0b, 0x49, 0x79, 0x9f, 0xef, 0xc9, 0x04, 0x1d,
-0xbd, 0x9c, 0x52, 0x36, 0x7a, 0xd5, 0x35, 0xd3,
-0xaa, 0x1c, 0xee, 0x56, 0x1a, 0x3a, 0x42, 0xd9,
-0xc9, 0x5f, 0xb3, 0x5b, 0x3c, 0xef, 0x25, 0x2d,
-0x16, 0xed, 0x68, 0xbd, 0xc1, 0x99, 0x31, 0xc6,
-0x97, 0x8f, 0x9c, 0x48, 0x28, 0x2a, 0x70, 0x31,
-0x4a, 0xb3, 0xe9, 0x37, 0xbc, 0x48, 0x0d, 0x2a,
-0x6b, 0x8a, 0x67, 0xbe, 0x9c, 0xa0, 0x57, 0x79,
-0xae, 0xaf, 0xf7, 0x7a, 0xbd, 0x52, 0xd4, 0xcd,
-0xf3, 0x1b, 0xe6, 0x09, 0xd9, 0xd7, 0xff, 0x80,
-0xaf, 0x9d, 0x77, 0x0b, 0xe7, 0xfc, 0xdb, 0x6f,
-0xab, 0x8c, 0xfc, 0xbe, 0x38, 0x7d, 0xa6, 0xda,
-0x44, 0x47, 0x53, 0xae, 0xde, 0x6f, 0x52, 0xb5,
-0x1a, 0xfd, 0x77, 0x7a, 0xfe, 0x97, 0xae, 0xaa,
-0x51, 0xd8, 0xc5, 0x5f, 0xa0, 0xe3, 0xff, 0xbf,
-0xc9, 0x06, 0xe2, 0xa7, 0x2f, 0x4a, 0x61, 0xfe,
-0xc9, 0xa8, 0x73, 0xe4, 0x45, 0x35, 0x92, 0xe7,
-0x51, 0xa9, 0xf0, 0xa2, 0xf6, 0x1a, 0xe5, 0x33,
-0x74, 0x25, 0xa8, 0x43, 0x47, 0x9d, 0xa5, 0x74,
-0x71, 0x44, 0x0e, 0xbd, 0x4e, 0x5e, 0x9c, 0x8a,
-0x4c, 0x46, 0xeb, 0xe0, 0xb5, 0xdc, 0x1a, 0xe5,
-0xab, 0xfd, 0x8f, 0x4d, 0xe5, 0xe7, 0x83, 0xbf,
-0xa8, 0xfd, 0x23, 0x92, 0xed, 0xf7, 0xc5, 0xf1,
-0xff, 0x94, 0xef, 0xfd, 0x69, 0xb2, 0xf7, 0x1e,
-0xde, 0x5d, 0xaa, 0xf2, 0x25, 0x40, 0x1e, 0x08,
-0x58, 0x9d, 0x01, 0xa8, 0x8b, 0x80, 0xd4, 0x00,
-0xa8, 0x2e, 0x40, 0xa5, 0x9e, 0xe5, 0xcb, 0x00,
-0xb2, 0x05, 0xa0, 0x0b, 0x01, 0x6b, 0x6b, 0xaf,
-0x70, 0x1b, 0xb0, 0x96, 0x6b, 0xae, 0xf7, 0xd6,
-0x7b, 0x85, 0xc2, 0x3a, 0xcd, 0x62, 0x92, 0x73,
-0x6f, 0xbf, 0x3b, 0x7b, 0xed, 0xfc, 0xb5, 0xf3,
-0x1f, 0x7e, 0xf8, 0xe1, 0xf9, 0x6b, 0xce, 0x74,
-0xfe, 0xda, 0x60, 0xb4, 0x2e, 0xfe, 0xa1, 0xe2,
-0x8f, 0xd7, 0x63, 0xd1, 0x5e, 0x41, 0xce, 0x85,
-0x6e, 0xe9, 0xda, 0xb5, 0xf3, 0xd7, 0x02, 0x61,
-0x5a, 0x7c, 0x78, 0x6d, 0xad, 0x14, 0xe5, 0xca,
-0x2b, 0x0d, 0x71, 0x28, 0xa4, 0x16, 0x80, 0x8f,
-0xdc, 0x15, 0xd1, 0x7b, 0x6f, 0x36, 0xb7, 0xb6,
-0xd2, 0x5b, 0x69, 0x71, 0x1e, 0xb9, 0xd5, 0x6c,
-0xde, 0xef, 0xb0, 0x91, 0xe2, 0x7f, 0xd5, 0x6c,
-0xe5, 0xf2, 0x1c, 0xf7, 0x7c, 0x82, 0x3e, 0x31,
-0x0f, 0x37, 0xd3, 0xa4, 0x87, 0x0d, 0x60, 0x7a,
-0x3c, 0xad, 0x97, 0xa2, 0x73, 0x1f, 0x9e, 0xf7,
-0xd3, 0x76, 0x27, 0xca, 0x47, 0xa1, 0x2b, 0xdb,
-0x2e, 0x1d, 0x53, 0x45, 0x75, 0x3c, 0xa4, 0x97,
-0xe3, 0xdb, 0x5b, 0x37, 0x8b, 0x7a, 0xd4, 0x96,
-0x6a, 0x92, 0xa7, 0x04, 0xaf, 0x0f, 0x7b, 0x51,
-0x4f, 0xd8, 0xba, 0xbe, 0xe2, 0x98, 0x49, 0xa5,
-0x56, 0x88, 0xd6, 0x63, 0x71, 0x59, 0x71, 0xb1,
-0xdb, 0xe1, 0x32, 0xd2, 0x76, 0xb0, 0xb4, 0x28,
-0xdf, 0x4e, 0x34, 0xab, 0x13, 0x36, 0x06, 0xb4,
-0xa3, 0xf2, 0x14, 0xcb, 0xf6, 0x1c, 0xdb, 0x79,
-0x2e, 0xac, 0xbb, 0x79, 0x30, 0x79, 0x51, 0x89,
-0x47, 0x59, 0xba, 0x07, 0xec, 0x24, 0x3e, 0x9c,
-0xde, 0x9a, 0x52, 0x89, 0xae, 0x9b, 0x98, 0x56,
-0x83, 0x53, 0x4c, 0x72, 0x55, 0x50, 0x5e, 0x82,
-0x72, 0xae, 0x95, 0x9e, 0x66, 0x6d, 0xfd, 0x4a,
-0xa5, 0xdf, 0x24, 0xb2, 0xf1, 0xf0, 0x4d, 0x7a,
-0x59, 0x66, 0x8e, 0x7e, 0x8f, 0xe7, 0x46, 0x7f,
-0x5b, 0x9c, 0xde, 0xbf, 0x33, 0x3a, 0xfa, 0x78,
-0x74, 0xee, 0x67, 0xe9, 0x92, 0xdf, 0x63, 0x7e,
-0x9c, 0x6e, 0x6e, 0xf4, 0x27, 0x3e, 0xa2, 0xd3,
-0xfe, 0xb9, 0xc7, 0xa3, 0xbf, 0x4e, 0xed, 0xc0,
-0xe8, 0x63, 0x2d, 0x2e, 0x7e, 0x8f, 0x65, 0xbd,
-0x95, 0x2e, 0xe5, 0x3b, 0x2a, 0x83, 0xd5, 0x82,
-0xb6, 0x84, 0x4a, 0x19, 0x22, 0x9d, 0xde, 0x6c,
-0x84, 0xe7, 0xf4, 0xa6, 0xf2, 0x14, 0x8b, 0xc7,
-0xba, 0x55, 0x18, 0x9d, 0x53, 0xc2, 0x32, 0xfc,
-0xf1, 0xdc, 0x53, 0xe7, 0xc8, 0xaf, 0x7b, 0xfe,
-0xbb, 0x54, 0xfd, 0x2f, 0x6c, 0x6f, 0x8b, 0xe3,
-0xff, 0xc8, 0xfb, 0x5f, 0x3f, 0xf5, 0x7b, 0x7f,
-0x8a, 0xd6, 0xb4, 0xe8, 0x00, 0x2c, 0xb5, 0xf7,
-0xe4, 0x97, 0x80, 0xed, 0x4d, 0x40, 0xdb, 0x02,
-0xec, 0x70, 0xb7, 0x9a, 0x4e, 0x02, 0xea, 0x74,
-0x68, 0x15, 0x7d, 0x80, 0xc1, 0x5b, 0xb5, 0x5a,
-0x95, 0x7b, 0x01, 0xd4, 0x0d, 0x98, 0x5d, 0xca,
-0x6d, 0xad, 0x3b, 0xc8, 0x1d, 0x2c, 0xf6, 0x74,
-0xe5, 0xe0, 0xd2, 0xb5, 0xe1, 0x7b, 0xc3, 0xf4,
-0x13, 0x8b, 0x6b, 0x74, 0xbd, 0x60, 0x98, 0x57,
-0x7b, 0x51, 0x99, 0xaa, 0x7f, 0x4f, 0xfd, 0x03,
-0xcc, 0x9f, 0x25, 0xd7, 0x29, 0x0a, 0xd1, 0x7b,
-0x2c, 0x7c, 0x8f, 0xa3, 0xc9, 0x88, 0xf7, 0x84,
-0xd7, 0xec, 0x54, 0x37, 0x6a, 0x16, 0x74, 0xa5,
-0xa5, 0x63, 0x88, 0xe8, 0x04, 0x88, 0x6e, 0xb0,
-0x38, 0x77, 0x15, 0xd3, 0x7e, 0x47, 0x1c, 0xf8,
-0x85, 0x7d, 0xe2, 0x34, 0xa5, 0x50, 0xa8, 0x74,
-0xa3, 0xca, 0x25, 0x19, 0x97, 0x74, 0x49, 0x15,
-0xfc, 0x13, 0x8a, 0x68, 0xba, 0x56, 0xec, 0xe4,
-0x28, 0xfd, 0x15, 0xf5, 0xa7, 0xec, 0xe9, 0x75,
-0xb6, 0x95, 0x57, 0x62, 0xd7, 0xa4, 0xa0, 0x36,
-0x86, 0x97, 0xac, 0x6a, 0x25, 0x5a, 0xa7, 0x88,
-0x14, 0xc5, 0xb1, 0x5e, 0x67, 0x45, 0xb2, 0x2e,
-0x03, 0xad, 0x72, 0xb3, 0xc8, 0x46, 0x7b, 0x52,
-0xcd, 0x3d, 0x47, 0xab, 0xdd, 0x0a, 0x7f, 0xb4,
-0x7c, 0xf5, 0x60, 0x9d, 0xd3, 0xf3, 0x12, 0x12,
-0x05, 0xdc, 0xcd, 0x0e, 0xcb, 0x42, 0xba, 0xa6,
-0xed, 0xa5, 0xa2, 0xbd, 0x77, 0xaf, 0x98, 0x6b,
-0x8a, 0xc2, 0x5d, 0x5f, 0xf1, 0x8d, 0x5a, 0x17,
-0x47, 0xd9, 0x69, 0xca, 0x99, 0x14, 0x53, 0xd1,
-0x44, 0xfd, 0xf7, 0x75, 0xeb, 0x6c, 0x19, 0x97,
-0x3f, 0x29, 0xbf, 0xf5, 0x4f, 0x97, 0xec, 0xce,
-0x61, 0x2b, 0x8b, 0xe9, 0x34, 0xed, 0xd1, 0x15,
-0x47, 0xc1, 0xba, 0xa3, 0xc1, 0x4d, 0xc1, 0xd5,
-0x25, 0x8e, 0xfd, 0xe9, 0x54, 0xb7, 0x30, 0xab,
-0x76, 0x4b, 0x72, 0x01, 0xf0, 0x7f, 0xe1, 0xda,
-0xb0, 0xb3, 0x63, 0xb4, 0xff, 0xf0, 0xf0, 0x77,
-0xae, 0x5c, 0x11, 0x35, 0x49, 0x1c, 0x4a, 0xe9,
-0xa5, 0x99, 0x2b, 0xff, 0x45, 0xb5, 0x7e, 0xf4,
-0xca, 0xdc, 0x95, 0xb9, 0xef, 0xd1, 0xf3, 0x3f,
-0xef, 0xbe, 0xf9, 0xee, 0xbb, 0xef, 0xbe, 0xf9,
-0x5b, 0xff, 0xf5, 0x0b, 0x74, 0x31, 0xf0, 0x57,
-0xe6, 0x1e, 0x53, 0xff, 0xe0, 0x8d, 0x37, 0x45,
-0x30, 0xd5, 0xbf, 0xb9, 0x2b, 0x4f, 0xb9, 0x16,
-0xd2, 0x61, 0xf8, 0xa9, 0x88, 0x21, 0x9c, 0xa4,
-0x82, 0xea, 0xa5, 0x58, 0x3e, 0x56, 0x42, 0x14,
-0x42, 0xd7, 0xe6, 0x85, 0x38, 0xbb, 0x95, 0xd3,
-0x99, 0x59, 0x92, 0xd7, 0x4f, 0xd5, 0xe6, 0x9c,
-0x8c, 0x28, 0xa2, 0x89, 0x6d, 0xd1, 0xc5, 0x1f,
-0xbd, 0xc2, 0x2f, 0xf4, 0xcd, 0x49, 0x55, 0xaa,
-0xde, 0xcb, 0x0b, 0x7e, 0xfa, 0x82, 0xff, 0x0c,
-0x1f, 0xfb, 0xb7, 0x05, 0xe3, 0xdb, 0x17, 0xc6,
-0xb7, 0x47, 0xde, 0x7f, 0xff, 0xeb, 0xa7, 0x7e,
-0xef, 0x4f, 0xd3, 0x19, 0x1e, 0xbe, 0x2b, 0xbf,
-0x04, 0x54, 0xa7, 0xab, 0xda, 0x3b, 0xdd, 0x83,
-0x96, 0xb9, 0xb7, 0x2d, 0xdf, 0x08, 0xee, 0xaa,
-0x16, 0x80, 0xfa, 0xd6, 0x59, 0xd9, 0x02, 0x50,
-0x27, 0xa0, 0x4d, 0xbd, 0x80, 0x4b, 0xe2, 0x4c,
-0x60, 0x7a, 0x31, 0x57, 0x28, 0x73, 0x67, 0x5e,
-0x1d, 0xfe, 0x55, 0x3b, 0x30, 0x10, 0xb5, 0x8b,
-0x0f, 0x69, 0xfa, 0x9d, 0x87, 0x82, 0x62, 0x91,
-0x66, 0xb1, 0x1e, 0x2e, 0xe6, 0xa3, 0xba, 0x3d,
-0x4e, 0xd2, 0x8a, 0x5a, 0x8b, 0x42, 0xaf, 0xb0,
-0xd8, 0x9c, 0x25, 0x01, 0x31, 0xe9, 0x85, 0x8a,
-0x47, 0xeb, 0xbb, 0xab, 0xa5, 0x56, 0xb4, 0x5f,
-0xa0, 0x3f, 0x0e, 0x1d, 0x82, 0xe8, 0x4c, 0x23,
-0x2b, 0x4f, 0x5c, 0xe9, 0x54, 0x92, 0xc8, 0x66,
-0xc9, 0xb3, 0xd4, 0x4d, 0xe5, 0xa6, 0x66, 0x8b,
-0x32, 0xae, 0x52, 0xa4, 0x94, 0x15, 0xd5, 0xf4,
-0xb0, 0xb8, 0xbf, 0xa3, 0x8e, 0xcc, 0xde, 0xd1,
-0x49, 0x54, 0xcf, 0xa9, 0x87, 0x0f, 0x8d, 0x50,
-0x18, 0x4d, 0x38, 0x87, 0x8b, 0xaf, 0x46, 0x05,
-0x7d, 0xb8, 0xec, 0x05, 0xc7, 0xc8, 0xe0, 0xf8,
-0x5f, 0x88, 0x1f, 0xff, 0xd7, 0xcb, 0xa9, 0x57,
-0x13, 0x54, 0xfb, 0x59, 0xb6, 0xc9, 0x71, 0xd6,
-0xa7, 0xa2, 0xac, 0x31, 0xd2, 0x4d, 0xa8, 0xdb,
-0x29, 0xda, 0xd8, 0x45, 0x53, 0x4c, 0xc5, 0xd9,
-0x9d, 0xb4, 0x96, 0x2a, 0xb8, 0x56, 0x95, 0x52,
-0x55, 0x99, 0xb7, 0x61, 0x1b, 0xad, 0x9d, 0xca,
-0xda, 0x12, 0x70, 0xb3, 0x14, 0xcb, 0x9b, 0x3f,
-0xe5, 0x9a, 0x77, 0x79, 0x47, 0x2a, 0x0b, 0x8a,
-0xc3, 0xaf, 0xa4, 0x73, 0xa6, 0x7b, 0xe0, 0x76,
-0x81, 0xfa, 0x1c, 0xff, 0x65, 0x2f, 0xa2, 0x4c,
-0x2f, 0x0c, 0x74, 0x4b, 0xab, 0x45, 0x95, 0xef,
-0x62, 0x42, 0x09, 0xf8, 0x7b, 0xc3, 0xf1, 0xe4,
-0x7f, 0xd2, 0x9f, 0x8c, 0x9a, 0xea, 0x24, 0x6a,
-0xdf, 0xd3, 0x5f, 0xf9, 0xdd, 0x4f, 0x7d, 0xea,
-0xf3, 0xef, 0xd0, 0x06, 0xd5, 0xff, 0x6f, 0xff,
-0xe8, 0xa3, 0x1f, 0xbd, 0xf1, 0xc6, 0x47, 0x3c,
-0x18, 0xf8, 0xb7, 0xbf, 0xf7, 0xf4, 0xca, 0x53,
-0xea, 0x14, 0xfc, 0x93, 0x13, 0xc1, 0xc2, 0x4f,
-0xdd, 0x3e, 0x95, 0x2b, 0x2f, 0x40, 0x6d, 0x78,
-0x5e, 0x49, 0x3c, 0xbd, 0x62, 0xa2, 0xfa, 0x7a,
-0xe3, 0x72, 0xa6, 0xe6, 0xfb, 0x95, 0x7f, 0x64,
-0x7b, 0x64, 0x7c, 0x7b, 0x9c, 0xe7, 0x0b, 0xe2,
-0xf0, 0x9f, 0x39, 0xab, 0xea, 0x7f, 0x35, 0x55,
-0xe3, 0x87, 0x80, 0x6a, 0x8d, 0x5e, 0xb6, 0xde,
-0xb9, 0x99, 0x36, 0xef, 0x01, 0x98, 0x16, 0xa0,
-0xa5, 0xae, 0xac, 0xf1, 0xf3, 0xc0, 0xb2, 0x05,
-0x10, 0x5d, 0xe0, 0xc6, 0xa0, 0xe8, 0x05, 0xb4,
-0xdb, 0xd5, 0xea, 0xf4, 0x74, 0x35, 0xdd, 0x6d,
-0xd2, 0x11, 0x98, 0xb9, 0xcf, 0xdf, 0xa1, 0xed,
-0x54, 0xc4, 0x2f, 0x9d, 0x6a, 0xcf, 0x4a, 0xc4,
-0x79, 0x02, 0x4d, 0x02, 0xb1, 0x7a, 0x65, 0xf6,
-0x56, 0xd4, 0x1c, 0xa8, 0x74, 0x2a, 0x2c, 0xa4,
-0x21, 0xf7, 0x4e, 0x7a, 0x4d, 0x84, 0xcf, 0x4a,
-0x31, 0x9a, 0x8a, 0x14, 0xb9, 0xa8, 0x22, 0xcf,
-0x2e, 0xed, 0x35, 0x53, 0xd1, 0xcd, 0x92, 0x3a,
-0xa1, 0x2c, 0xab, 0x6f, 0x8a, 0xd3, 0x55, 0xc4,
-0x6c, 0xbd, 0xcc, 0xdf, 0xa8, 0x2e, 0x94, 0x3a,
-0xb9, 0x54, 0xb7, 0x3c, 0x3d, 0xfb, 0xca, 0x5d,
-0x95, 0xa0, 0x56, 0xa6, 0x66, 0x65, 0xc4, 0x6c,
-0x27, 0x52, 0x49, 0xfa, 0x34, 0x53, 0x3d, 0x13,
-0x4d, 0x99, 0xe0, 0x29, 0x12, 0xb6, 0xaf, 0xa4,
-0xf6, 0x4d, 0x44, 0x4f, 0x41, 0x4c, 0x9b, 0xf2,
-0x18, 0x70, 0x16, 0x03, 0xfb, 0xa9, 0xf5, 0x59,
-0x5d, 0x0e, 0x4e, 0x91, 0x98, 0xf4, 0xe4, 0x7c,
-0x57, 0xc1, 0x69, 0x4e, 0x45, 0xcd, 0xca, 0x80,
-0xd5, 0x5e, 0x91, 0x8a, 0x3a, 0x9d, 0x83, 0xce,
-0x9a, 0xb1, 0x52, 0x8b, 0x93, 0xee, 0xb5, 0x74,
-0x57, 0x48, 0x54, 0x94, 0x6c, 0x85, 0xa4, 0x39,
-0xfe, 0x56, 0x2a, 0x4f, 0xf6, 0x7b, 0x05, 0xdc,
-0x4e, 0xa5, 0x79, 0x47, 0x28, 0xf3, 0x2a, 0xa1,
-0xed, 0x7d, 0xb2, 0xd4, 0xe9, 0xa6, 0xd7, 0xdc,
-0x54, 0x85, 0xca, 0x66, 0xd7, 0xa6, 0x79, 0x34,
-0x03, 0x03, 0x9d, 0x66, 0x3a, 0x27, 0xfe, 0x65,
-0x8b, 0x85, 0xea, 0x1a, 0x17, 0xec, 0x5d, 0x5b,
-0x2c, 0x5e, 0xfe, 0x9d, 0x7d, 0x37, 0x7b, 0xf7,
-0x15, 0x31, 0xd1, 0x82, 0xb8, 0xfb, 0xca, 0xec,
-0x2b, 0x5f, 0xf9, 0xdc, 0x9d, 0x2b, 0x3c, 0xbd,
-0xc7, 0xcb, 0x3b, 0x57, 0xfe, 0x47, 0xd4, 0xf0,
-0xcf, 0xbe, 0x25, 0xdc, 0xdf, 0xf3, 0x9f, 0xff,
-0xf9, 0xfc, 0x37, 0x1f, 0x5f, 0xb9, 0xf3, 0x8e,
-0x38, 0x0d, 0xf8, 0xd1, 0xbb, 0x4f, 0xa9, 0xde,
-0x91, 0xec, 0x9d, 0xf7, 0xae, 0xdc, 0x79, 0xaa,
-0x26, 0xda, 0x7e, 0x8f, 0x7f, 0xe4, 0x27, 0xd6,
-0x57, 0x94, 0x42, 0xde, 0x96, 0x4b, 0x39, 0xbd,
-0x27, 0x64, 0xe2, 0x4b, 0x11, 0x4f, 0x49, 0xab,
-0x88, 0x4f, 0xb5, 0x53, 0x2b, 0x72, 0x2a, 0xfd,
-0x1d, 0x75, 0xb5, 0x4f, 0x76, 0xfb, 0x77, 0x65,
-0xdd, 0x17, 0x07, 0xfe, 0xf1, 0xcc, 0xb8, 0x98,
-0x6f, 0x73, 0xfd, 0xbf, 0x70, 0x06, 0xf7, 0xfe,
-0x34, 0xb9, 0xb5, 0x7b, 0xe2, 0x0c, 0xa0, 0x46,
-0xf7, 0x00, 0xf8, 0x8e, 0xb8, 0x7a, 0x11, 0xd0,
-0x3c, 0xab, 0x45, 0x37, 0x02, 0xf8, 0x69, 0x40,
-0xd1, 0x05, 0x50, 0x67, 0x01, 0x74, 0x14, 0xe6,
-0x5e, 0x80, 0xe8, 0x06, 0x88, 0x53, 0x81, 0x7d,
-0xba, 0x65, 0xd0, 0x12, 0x33, 0x9f, 0x31, 0xa4,
-0xe4, 0x38, 0x02, 0x62, 0xea, 0xe6, 0x97, 0xd6,
-0x96, 0xc4, 0x39, 0x02, 0x2f, 0x1d, 0x6a, 0x5d,
-0x7e, 0xc2, 0x20, 0x4a, 0xc9, 0x2b, 0xf7, 0x6a,
-0xdc, 0x01, 0x11, 0xbb, 0x79, 0x49, 0x4b, 0xae,
-0x39, 0x4b, 0xb9, 0x5e, 0x13, 0x8b, 0xd5, 0xa9,
-0x66, 0xaa, 0x95, 0x6b, 0xd6, 0x65, 0xdd, 0x17,
-0x86, 0xc8, 0xea, 0x2f, 0x7e, 0xf4, 0x75, 0xf9,
-0x3a, 0x7d, 0xd1, 0xaf, 0x5b, 0xaa, 0x4d, 0x7b,
-0x3a, 0x94, 0x73, 0x4d, 0x69, 0x91, 0x9b, 0x65,
-0x4a, 0x96, 0x2e, 0x71, 0xb6, 0xa4, 0x05, 0xea,
-0x1e, 0x42, 0x14, 0xf5, 0x9c, 0xb4, 0x55, 0x14,
-0x47, 0x8f, 0x70, 0x0d, 0x72, 0xd6, 0xf4, 0x42,
-0x47, 0x34, 0x1b, 0x8e, 0xb2, 0x94, 0x74, 0xb4,
-0xdc, 0x45, 0x2a, 0xea, 0x69, 0x95, 0x6b, 0x4b,
-0x7e, 0x5e, 0xe3, 0xc5, 0x24, 0xc5, 0x06, 0x23,
-0xcf, 0x44, 0xf9, 0xa3, 0x92, 0x1b, 0x30, 0x22,
-0x46, 0x9c, 0x37, 0x3a, 0xa6, 0xfc, 0x75, 0xb9,
-0xaa, 0x82, 0xce, 0xab, 0x24, 0xac, 0x05, 0xd5,
-0x9c, 0x2c, 0x85, 0x48, 0x16, 0x44, 0xcb, 0xb1,
-0xdf, 0xe6, 0xaa, 0xe5, 0xa5, 0x2c, 0xa7, 0x66,
-0x68, 0x67, 0x29, 0xe5, 0x14, 0x89, 0x96, 0x76,
-0xca, 0xd5, 0x57, 0x43, 0x06, 0x75, 0x73, 0x9d,
-0x42, 0x7e, 0xd5, 0xec, 0x95, 0x35, 0x27, 0xcf,
-0x61, 0x11, 0x04, 0xe5, 0x23, 0x1c, 0x32, 0xa7,
-0xdf, 0x7d, 0xef, 0x8e, 0xcf, 0x5b, 0x5f, 0xa0,
-0x43, 0xbc, 0xa8, 0x8f, 0xdf, 0xf9, 0x82, 0xe0,
-0x83, 0x2f, 0x7c, 0xf0, 0x01, 0x2d, 0x3f, 0xfb,
-0xcd, 0x9f, 0x13, 0x95, 0xfa, 0x73, 0x7f, 0x29,
-0xc2, 0xfe, 0xec, 0xca, 0x9d, 0x24, 0x42, 0x3d,
-0xa7, 0x89, 0xad, 0xfa, 0x33, 0x54, 0xfb, 0xa9,
-0xfa, 0x8f, 0x8f, 0x8c, 0x4b, 0x32, 0xe3, 0x1b,
-0x5c, 0xfd, 0xff, 0xfb, 0x4c, 0xee, 0xfd, 0x69,
-0xf6, 0x8b, 0x7c, 0x06, 0xb0, 0xb7, 0x52, 0x28,
-0x57, 0xe8, 0x1a, 0x20, 0x3d, 0x5f, 0xe7, 0xf4,
-0x00, 0x5a, 0xf2, 0x3a, 0x20, 0xb5, 0x00, 0x8b,
-0xdc, 0x02, 0x0c, 0xd0, 0x79, 0xb6, 0xe8, 0x05,
-0xaf, 0x70, 0x13, 0x30, 0xb8, 0xb7, 0xd7, 0x10,
-0xae, 0x29, 0xe1, 0x9e, 0x12, 0x93, 0x60, 0x70,
-0x50, 0xcc, 0xcc, 0x2a, 0x0f, 0x23, 0xb7, 0xaa,
-0x07, 0x93, 0x33, 0x9b, 0x4f, 0x28, 0xb0, 0x21,
-0xc5, 0x1a, 0x4a, 0x98, 0x54, 0xd5, 0x58, 0x62,
-0x95, 0x7e, 0x4e, 0x84, 0x69, 0xe3, 0x3b, 0xbd,
-0x5a, 0x9d, 0xea, 0x88, 0xc6, 0xa3, 0x9b, 0xee,
-0x0c, 0x94, 0xe4, 0x4d, 0xab, 0xba, 0xba, 0x87,
-0x58, 0x69, 0x2e, 0x8a, 0xbf, 0x72, 0x3a, 0x9b,
-0x37, 0xc3, 0xd4, 0xad, 0x6a, 0x1d, 0x62, 0xae,
-0xb2, 0x0e, 0xe1, 0xac, 0x4a, 0xd5, 0xf4, 0x38,
-0x71, 0x23, 0x2f, 0x2c, 0xd8, 0x13, 0xa9, 0xef,
-0x49, 0x53, 0xf6, 0x84, 0x0d, 0x7b, 0x24, 0x58,
-0x95, 0x56, 0xea, 0x38, 0xab, 0xc6, 0x6e, 0x36,
-0x60, 0xcf, 0x58, 0x3e, 0x68, 0xb3, 0xca, 0x0e,
-0xa1, 0xcc, 0x4c, 0x83, 0x7b, 0xac, 0x4f, 0x06,
-0x52, 0x22, 0x62, 0xc9, 0x11, 0xaa, 0x46, 0x77,
-0x55, 0x9a, 0x46, 0x8e, 0x69, 0xb7, 0x94, 0x94,
-0x5b, 0x26, 0x27, 0x42, 0xf7, 0x54, 0x5c, 0x9b,
-0xcc, 0x20, 0x2b, 0xac, 0xad, 0x4e, 0xbb, 0xf6,
-0xa9, 0x42, 0x5b, 0x5d, 0xa5, 0xbc, 0xed, 0xa9,
-0x1d, 0x20, 0x92, 0x6e, 0x0c, 0x2a, 0x05, 0xf9,
-0xea, 0xb4, 0x91, 0x53, 0xd3, 0x6a, 0x9e, 0x43,
-0xa5, 0x7e, 0xf1, 0x23, 0xbd, 0x0d, 0x55, 0x2a,
-0x7a, 0x0f, 0x35, 0x54, 0x0e, 0x1a, 0x52, 0x90,
-0x33, 0xd7, 0x68, 0x3b, 0x5a, 0x98, 0x5a, 0xbe,
-0xa1, 0x22, 0x88, 0x83, 0x82, 0x13, 0x51, 0x2a,
-0x6f, 0xe8, 0x02, 0x50, 0x1a, 0xc4, 0x76, 0x3e,
-0x5f, 0x5d, 0x5d, 0x9d, 0x76, 0x4c, 0xd7, 0x3b,
-0xbd, 0xea, 0xe4, 0x7f, 0x55, 0xfe, 0x17, 0xec,
-0x9f, 0xc0, 0xfa, 0x8a, 0xe9, 0x8b, 0xef, 0x5d,
-0x96, 0xdc, 0x31, 0xf3, 0x3b, 0x74, 0xab, 0xff,
-0x7f, 0x7e, 0xf9, 0xf2, 0x2f, 0xff, 0xf0, 0x87,
-0x6f, 0x7d, 0xe6, 0xad, 0x1f, 0x3e, 0x16, 0xab,
-0x1f, 0x7e, 0xe6, 0x33, 0x54, 0xdd, 0xde, 0xfa,
-0x6d, 0xee, 0x1b, 0xb0, 0xf4, 0x9d, 0xcb, 0x47,
-0xcc, 0x97, 0xad, 0x62, 0x82, 0x1e, 0xc8, 0x97,
-0xee, 0x64, 0xe9, 0x3b, 0x8e, 0x6c, 0xe0, 0xbc,
-0xac, 0x13, 0xf4, 0x98, 0x91, 0xf7, 0xf9, 0xf9,
-0x5a, 0x3f, 0x75, 0xf9, 0x05, 0x1b, 0x99, 0x0d,
-0x31, 0x8b, 0x26, 0x60, 0x7b, 0xfb, 0xc2, 0xee,
-0x99, 0x56, 0xff, 0xab, 0x57, 0xb3, 0x0f, 0xc5,
-0x19, 0xc0, 0x6a, 0x6d, 0x70, 0x45, 0x1c, 0x42,
-0xe9, 0x1a, 0xe0, 0x0e, 0x37, 0x00, 0xba, 0x0b,
-0xd0, 0x32, 0x77, 0x02, 0x72, 0xd4, 0x02, 0xdc,
-0xdc, 0xdf, 0xe7, 0xeb, 0xec, 0x74, 0xa1, 0x5d,
-0x75, 0x03, 0xa8, 0x23, 0xb0, 0x77, 0x2b, 0x9f,
-0xa7, 0xce, 0x80, 0xa4, 0xdd, 0x6e, 0xd3, 0xcf,
-0x2c, 0x6a, 0x3c, 0xc9, 0x8d, 0x9a, 0xf2, 0xd1,
-0xc1, 0xee, 0xba, 0xea, 0x47, 0xf3, 0x02, 0x55,
-0x78, 0xad, 0x51, 0x6e, 0x1e, 0xf0, 0x68, 0x51,
-0xf4, 0x74, 0xf2, 0x7e, 0x53, 0x40, 0x4f, 0x04,
-0x0b, 0x9f, 0xdc, 0xc0, 0xca, 0x9e, 0x14, 0x57,
-0x51, 0x6a, 0xb5, 0x20, 0xbe, 0x9b, 0x4c, 0xad,
-0xea, 0x24, 0xa0, 0x23, 0x05, 0xb2, 0x35, 0x2f,
-0x92, 0x6f, 0x50, 0xad, 0x1d, 0xdb, 0xac, 0x39,
-0x3a, 0x6a, 0x6e, 0xb6, 0x3d, 0xb5, 0xb5, 0xb8,
-0x5b, 0x47, 0xd6, 0x45, 0x63, 0x8b, 0x4d, 0xfb,
-0xdb, 0xd0, 0x43, 0xcc, 0x65, 0x99, 0x6a, 0x10,
-0xdf, 0x4a, 0x56, 0xdd, 0xa2, 0x77, 0xa2, 0x54,
-0x13, 0x8a, 0xc8, 0xec, 0xaf, 0x24, 0x4c, 0xb1,
-0x3a, 0xe9, 0x78, 0x76, 0x27, 0xe4, 0xd5, 0x0f,
-0x72, 0xf2, 0x11, 0xb7, 0xd3, 0x13, 0xb6, 0x26,
-0xd7, 0x82, 0xd0, 0x5b, 0xff, 0x32, 0x73, 0x39,
-0xe4, 0xb5, 0x9f, 0xa2, 0x93, 0xfd, 0x3f, 0xfb,
-0x8c, 0xaa, 0x63, 0x7c, 0x8c, 0xe5, 0xe9, 0x73,
-0x9f, 0x15, 0x01, 0x1f, 0xfd, 0x29, 0x6f, 0xc4,
-0xa3, 0xf5, 0x25, 0x14, 0x9d, 0x49, 0x9a, 0xe5,
-0x6a, 0xc6, 0x4a, 0xcf, 0x84, 0x91, 0x9c, 0x49,
-0xa4, 0xbe, 0x4b, 0x75, 0x9f, 0xbb, 0xfd, 0x74,
-0xc1, 0x8f, 0x0e, 0xfb, 0x1b, 0x1b, 0xb2, 0xfa,
-0x67, 0xc6, 0x33, 0xb7, 0xb7, 0x2f, 0xbc, 0x9f,
-0x39, 0x93, 0x5b, 0xff, 0x96, 0x8f, 0xa7, 0x86,
-0x8b, 0xb3, 0x3c, 0xd4, 0x76, 0xa1, 0x5e, 0xda,
-0x6f, 0x2e, 0x2e, 0xca, 0x53, 0x00, 0xe7, 0x1c,
-0x80, 0xfb, 0xb2, 0x0f, 0xf8, 0x42, 0xa0, 0x38,
-0x0d, 0xa0, 0xdb, 0xec, 0x15, 0xbe, 0xda, 0x4e,
-0x97, 0xfc, 0xe8, 0xf2, 0xb4, 0x38, 0xfe, 0x37,
-0x56, 0xa8, 0x59, 0xe7, 0x03, 0x07, 0x1f, 0xfd,
-0x08, 0xeb, 0x32, 0xe4, 0xf7, 0xf6, 0x9e, 0xb0,
-0xe3, 0x89, 0xf6, 0x79, 0xe2, 0x86, 0x1d, 0x83,
-0x27, 0x7b, 0x83, 0x53, 0xeb, 0xe6, 0x0d, 0x1c,
-0xb9, 0x38, 0xc8, 0xed, 0xd7, 0x57, 0x1a, 0xa1,
-0x64, 0x7e, 0x30, 0x29, 0x7e, 0xa2, 0xca, 0x44,
-0x7b, 0xfa, 0x0b, 0xc7, 0xb6, 0x93, 0x23, 0x29,
-0xbd, 0x4f, 0x62, 0xbe, 0x49, 0x89, 0x25, 0xe5,
-0xfe, 0x09, 0xe7, 0x60, 0xd0, 0x4b, 0xe6, 0xf0,
-0xf2, 0x8a, 0x65, 0x39, 0x48, 0xdc, 0x8f, 0xf3,
-0x24, 0x3f, 0xd8, 0xa7, 0x8c, 0xac, 0xdc, 0x2d,
-0x67, 0x19, 0xb7, 0xcd, 0x13, 0xf6, 0xb2, 0x75,
-0xcb, 0xf1, 0x92, 0xb2, 0x56, 0xe7, 0x93, 0x3c,
-0x05, 0x1c, 0x67, 0x7f, 0xe7, 0x63, 0x36, 0xdf,
-0xe2, 0xcd, 0xc1, 0xc1, 0x1f, 0x50, 0x35, 0xe2,
-0xaa, 0x64, 0x99, 0xf9, 0xc7, 0xdf, 0xa1, 0xf3,
-0xfd, 0x2f, 0x7f, 0x8e, 0x0e, 0xb0, 0x33, 0x2a,
-0x70, 0xe6, 0xf2, 0x6b, 0xdf, 0xa1, 0xce, 0xff,
-0x47, 0xff, 0x31, 0x13, 0x8b, 0xd0, 0x8f, 0x50,
-0xaf, 0x5e, 0xce, 0xb8, 0xce, 0x5d, 0xab, 0xcf,
-0xac, 0x66, 0xd4, 0xd2, 0x4e, 0xbe, 0x36, 0x7d,
-0x8b, 0x5f, 0x5e, 0xec, 0x17, 0x55, 0x7f, 0x9c,
-0x2a, 0x7f, 0x66, 0x79, 0x7e, 0x39, 0x33, 0x2f,
-0xd6, 0xd4, 0xfd, 0xbf, 0x7d, 0x86, 0x27, 0xff,
-0x92, 0x54, 0x7e, 0x98, 0x2e, 0x01, 0xd4, 0xe8,
-0xf9, 0xfa, 0x0a, 0xbd, 0x09, 0xa4, 0x07, 0x03,
-0xb2, 0x17, 0x01, 0xd4, 0x4b, 0x81, 0xea, 0x4a,
-0xe0, 0x96, 0x38, 0xf2, 0x56, 0x54, 0x1b, 0x50,
-0xa6, 0x73, 0x01, 0xbe, 0xac, 0xbb, 0x42, 0x77,
-0xaa, 0xc5, 0xb9, 0x80, 0x98, 0x78, 0xa1, 0x1c,
-0xb4, 0x66, 0xb4, 0xe7, 0x14, 0xdd, 0xc8, 0x57,
-0xae, 0x29, 0x19, 0xb8, 0xa2, 0xb6, 0xcd, 0x52,
-0xfb, 0xe9, 0x10, 0x8e, 0xa5, 0x82, 0xe8, 0x74,
-0x63, 0xa5, 0xd7, 0x2b, 0x67, 0x4b, 0xa5, 0x81,
-0x81, 0x52, 0x29, 0x5b, 0x28, 0xf4, 0x56, 0x5e,
-0xd5, 0x51, 0x8d, 0x16, 0xa3, 0xc9, 0xd1, 0x60,
-0xbc, 0xa7, 0x6c, 0x02, 0x76, 0x8b, 0x5b, 0x31,
-0xad, 0xc4, 0x11, 0x77, 0x32, 0xe0, 0x84, 0xba,
-0x86, 0x9a, 0x84, 0x9d, 0x85, 0x93, 0x8a, 0x6b,
-0xc6, 0xd4, 0x94, 0x67, 0x88, 0xcc, 0x94, 0xab,
-0x63, 0x65, 0xca, 0xd7, 0x3e, 0x15, 0x2a, 0xd3,
-0x45, 0xe8, 0x18, 0x67, 0xb3, 0xd8, 0x50, 0xc5,
-0xbb, 0x12, 0xa4, 0x4e, 0x8b, 0xc6, 0x54, 0x58,
-0x0e, 0x2b, 0x3a, 0xfd, 0x84, 0x62, 0xb2, 0x16,
-0xab, 0xdd, 0xe5, 0xef, 0x90, 0x70, 0x27, 0x79,
-0x65, 0x6a, 0xa3, 0xd9, 0xe2, 0x8b, 0xed, 0xef,
-0x86, 0x36, 0xe3, 0x55, 0x27, 0x41, 0x27, 0x71,
-0x6f, 0x0f, 0x78, 0x7b, 0x83, 0x16, 0x3f, 0x18,
-0x19, 0xd1, 0x95, 0xc9, 0xb0, 0xbb, 0x3d, 0xf2,
-0xfd, 0x6f, 0xd2, 0x07, 0x04, 0x3f, 0xfa, 0xeb,
-0x3f, 0x9f, 0x61, 0x0f, 0x9a, 0x5f, 0xfb, 0xee,
-0x97, 0x7f, 0x49, 0x56, 0x7f, 0xe5, 0x75, 0x0c,
-0xb6, 0x77, 0x8f, 0x2d, 0x7a, 0x02, 0xb6, 0x69,
-0xe2, 0x9a, 0x7f, 0x5b, 0x9e, 0xed, 0xf3, 0x81,
-0x7f, 0x79, 0x7e, 0x9e, 0x67, 0x3a, 0xfe, 0x8b,
-0xc3, 0xff, 0xf6, 0x99, 0x57, 0x7f, 0xfa, 0xa2,
-0xd6, 0xf0, 0xdd, 0xb5, 0x4b, 0xed, 0x5b, 0xf4,
-0x92, 0x7d, 0x65, 0x82, 0x7a, 0x00, 0xfc, 0x2a,
-0x80, 0xf7, 0xce, 0xa6, 0xbc, 0x17, 0xc8, 0x77,
-0x03, 0xb9, 0x0d, 0x68, 0x36, 0xf9, 0x4c, 0x60,
-0x40, 0x3e, 0xc8, 0x59, 0x2e, 0xeb, 0x1b, 0x80,
-0x9f, 0x8c, 0xde, 0x31, 0x7c, 0xfb, 0xa5, 0x91,
-0x1c, 0xf7, 0x39, 0xd0, 0x4b, 0x74, 0x3e, 0x27,
-0x8d, 0x9f, 0x58, 0xca, 0xc8, 0x3e, 0x93, 0x6d,
-0xa7, 0x56, 0x68, 0x9f, 0x20, 0xed, 0x5e, 0x62,
-0xa0, 0xb9, 0x45, 0x49, 0xbf, 0xbf, 0x1f, 0x19,
-0x17, 0x95, 0x85, 0x8f, 0xa1, 0xde, 0xb4, 0xfd,
-0xfe, 0x57, 0xf8, 0x8e, 0xdf, 0x47, 0x5f, 0xfe,
-0x93, 0x6f, 0x7c, 0xeb, 0xbf, 0xbf, 0xff, 0xfd,
-0x9f, 0xfc, 0xd3, 0xaf, 0xfc, 0xe5, 0xe7, 0xc9,
-0xe3, 0x83, 0xef, 0x52, 0x28, 0x8b, 0x48, 0xd1,
-0x30, 0xa6, 0xa3, 0xc3, 0x48, 0x6c, 0x5b, 0x41,
-0x76, 0x6f, 0x4b, 0x1d, 0x76, 0xad, 0x7f, 0x4a,
-0xf7, 0xf8, 0xb8, 0xeb, 0x39, 0x2e, 0x2b, 0xbb,
-0x42, 0xea, 0xd1, 0xc8, 0x1e, 0xff, 0xb2, 0xa8,
-0xfc, 0x93, 0x93, 0x62, 0x9e, 0xa4, 0x16, 0x40,
-0x74, 0xff, 0x45, 0xfb, 0x70, 0x46, 0x0f, 0xfe,
-0xf9, 0xe4, 0xd6, 0x86, 0x67, 0xd7, 0xa6, 0xdb,
-0xb7, 0xa6, 0xd6, 0x0b, 0xa2, 0x07, 0x20, 0x9f,
-0x03, 0x70, 0x2e, 0x02, 0x9a, 0x93, 0x00, 0xba,
-0x19, 0x48, 0x6f, 0x6d, 0xf2, 0x79, 0x00, 0xf5,
-0x02, 0xe8, 0xbe, 0x9f, 0x68, 0x04, 0x2a, 0xf2,
-0x5a, 0x5c, 0x56, 0x5e, 0x92, 0x2f, 0x8b, 0x5e,
-0x01, 0xb5, 0x09, 0xb4, 0x12, 0x1e, 0xe5, 0xac,
-0x72, 0xd1, 0x8a, 0xb7, 0x79, 0x6d, 0xdc, 0x75,
-0xe9, 0x2e, 0x93, 0xab, 0x6e, 0x5c, 0x1c, 0x85,
-0xb6, 0xe5, 0xdd, 0x3d, 0xbe, 0xc1, 0x57, 0xd7,
-0xf1, 0xca, 0xf2, 0x86, 0x9f, 0x54, 0x4b, 0xbe,
-0xf2, 0xc7, 0x4e, 0xa5, 0x57, 0x2b, 0x95, 0x0e,
-0xed, 0xd4, 0xa9, 0xd6, 0xb3, 0x3a, 0xba, 0x4c,
-0x81, 0x6e, 0x25, 0x2a, 0x47, 0xd9, 0x58, 0xae,
-0x75, 0xd5, 0xcb, 0x3a, 0x29, 0x65, 0x97, 0x34,
-0x4c, 0x7b, 0xb0, 0x09, 0xd2, 0xc0, 0xb2, 0x2b,
-0x56, 0x37, 0xfa, 0x74, 0xfe, 0xb2, 0x32, 0x9d,
-0xba, 0x4d, 0x42, 0x9a, 0xa7, 0xe2, 0xd6, 0x95,
-0x89, 0xca, 0x47, 0xfe, 0xca, 0xda, 0x48, 0xb3,
-0x50, 0xc5, 0x9b, 0x75, 0xf3, 0x5a, 0x77, 0xec,
-0x55, 0x92, 0xb2, 0xb4, 0xf4, 0x0e, 0x90, 0xdb,
-0x59, 0x5d, 0x2c, 0x65, 0x9d, 0xc1, 0xba, 0x63,
-0x88, 0x0a, 0x52, 0x06, 0x94, 0xb5, 0xc1, 0x75,
-0x93, 0x6b, 0x93, 0x4d, 0xbb, 0x37, 0xcb, 0xaa,
-0x10, 0xeb, 0xd6, 0x4f, 0xe5, 0x57, 0xa6, 0x67,
-0x0b, 0x39, 0xab, 0xf7, 0x5d, 0xdd, 0x96, 0x83,
-0xab, 0x46, 0x97, 0x19, 0x4b, 0x1b, 0xb3, 0xf4,
-0x5c, 0x2f, 0x9b, 0xb2, 0x14, 0xbf, 0xaf, 0xde,
-0x56, 0x17, 0xcc, 0xe3, 0x5c, 0xf8, 0xee, 0x1f,
-0xaa, 0xbb, 0x7e, 0xbf, 0xf6, 0xc6, 0x07, 0xff,
-0xfb, 0xd1, 0xb7, 0xe5, 0xc7, 0xc0, 0xbf, 0xfc,
-0x03, 0xbe, 0xc1, 0x66, 0x7e, 0x87, 0x92, 0x09,
-0x1c, 0x4e, 0xc4, 0xcc, 0xb8, 0x5d, 0x67, 0x62,
-0x02, 0x41, 0x64, 0x72, 0xde, 0x76, 0xbc, 0x45,
-0x67, 0x9f, 0x4f, 0xf6, 0x09, 0x51, 0xe1, 0x27,
-0x2d, 0xf3, 0x54, 0xfd, 0x37, 0x32, 0xdb, 0x17,
-0x2e, 0x3c, 0x7a, 0x11, 0xd5, 0xff, 0xea, 0xd5,
-0x9b, 0xb3, 0x0f, 0xef, 0x2e, 0xad, 0xb6, 0xf7,
-0xf8, 0x14, 0x80, 0x9f, 0x04, 0xee, 0x3e, 0x88,
-0x82, 0x16, 0xa0, 0x95, 0xd2, 0x9f, 0x08, 0xa0,
-0xf3, 0x00, 0x6a, 0x02, 0xb8, 0x11, 0xe0, 0x56,
-0x80, 0x9e, 0xc0, 0x13, 0x0d, 0x81, 0x68, 0x09,
-0x4a, 0xa5, 0xca, 0x80, 0x98, 0xed, 0x82, 0x66,
-0xc7, 0xa5, 0xc2, 0xe9, 0xad, 0x10, 0x21, 0x5c,
-0xe1, 0x9f, 0x11, 0x75, 0x5e, 0xa3, 0xa1, 0x10,
-0x9a, 0xad, 0x1f, 0x39, 0x49, 0xac, 0xc4, 0xf2,
-0xe4, 0x57, 0xe1, 0x57, 0x61, 0x64, 0x10, 0xfd,
-0x06, 0xd8, 0x63, 0x40, 0x29, 0x60, 0xfd, 0xa5,
-0x8a, 0x4a, 0x5f, 0xb9, 0x59, 0x66, 0xa0, 0x2e,
-0x23, 0x0e, 0x68, 0xbd, 0x52, 0x95, 0x8c, 0xae,
-0x6c, 0xb2, 0xf1, 0xb4, 0x58, 0x45, 0x5b, 0x32,
-0xe0, 0x98, 0xa0, 0x23, 0x57, 0xb4, 0x6d, 0x15,
-0x6d, 0xa8, 0xb6, 0x42, 0x65, 0x4f, 0x59, 0x4b,
-0xc9, 0xc8, 0x5f, 0xc5, 0xa6, 0x67, 0xf2, 0xac,
-0xed, 0xb5, 0x6f, 0xcc, 0xa8, 0x72, 0x19, 0xa8,
-0xe8, 0xf0, 0x01, 0x55, 0x76, 0xf5, 0xd0, 0x3e,
-0xb3, 0x5d, 0x1f, 0x90, 0xc9, 0xeb, 0x04, 0x28,
-0xa4, 0xae, 0x82, 0x4b, 0x7a, 0x47, 0x68, 0x63,
-0x75, 0x99, 0x56, 0xb8, 0x20, 0x07, 0x6c, 0xb1,
-0x57, 0x6c, 0x2e, 0xb5, 0xa8, 0x7a, 0xbf, 0x49,
-0xca, 0xeb, 0xcc, 0x4a, 0x83, 0x8c, 0x0d, 0x32,
-0xf2, 0x80, 0xde, 0xaf, 0x32, 0xbf, 0x03, 0xa6,
-0x4c, 0x4d, 0x31, 0xe8, 0xc2, 0xac, 0xa8, 0x02,
-0xad, 0x38, 0x89, 0x18, 0x5d, 0xee, 0xda, 0x7d,
-0x97, 0xa8, 0x72, 0x7b, 0x23, 0x09, 0x55, 0xb7,
-0xfe, 0xe8, 0xaf, 0x3e, 0x08, 0xc6, 0xff, 0xf8,
-0xbb, 0x2f, 0xea, 0x08, 0xcb, 0x99, 0xc4, 0x98,
-0xfd, 0x59, 0x3e, 0xa1, 0x7c, 0x8c, 0xf1, 0x65,
-0x6d, 0x17, 0xf5, 0xf5, 0x37, 0x44, 0x47, 0x9f,
-0xab, 0xbe, 0xae, 0xfd, 0x8f, 0xe4, 0x6a, 0x59,
-0x1c, 0xfd, 0x37, 0xc4, 0xc9, 0xff, 0x19, 0x5f,
-0xfa, 0xb7, 0x94, 0x8a, 0xa2, 0x01, 0x98, 0xae,
-0x71, 0x03, 0x50, 0xba, 0x7f, 0x33, 0xad, 0x3e,
-0x09, 0xe2, 0x8f, 0xe9, 0x23, 0x6f, 0x3d, 0xab,
-0xb1, 0x1b, 0xe8, 0x44, 0x80, 0x6f, 0x09, 0x2c,
-0x36, 0xc5, 0xd9, 0xc0, 0xcd, 0xe6, 0xfe, 0xcd,
-0x26, 0xbd, 0x71, 0x2a, 0xe6, 0x0e, 0x3f, 0x0f,
-0xc4, 0x7d, 0x03, 0xbd, 0x26, 0x97, 0xdc, 0x6e,
-0xaa, 0x2d, 0x29, 0xd3, 0x71, 0x7e, 0x2c, 0xdb,
-0xec, 0x34, 0xf7, 0x95, 0xb0, 0x5a, 0x93, 0x20,
-0xb7, 0x30, 0x1c, 0x57, 0xba, 0x45, 0x90, 0x7c,
-0xe6, 0xa8, 0xa9, 0x34, 0x9a, 0x74, 0x38, 0x66,
-0xd3, 0x68, 0x50, 0xfe, 0x4a, 0xbf, 0x9e, 0xb4,
-0xdb, 0x11, 0xd4, 0xf6, 0x68, 0xcf, 0xc0, 0x2e,
-0x19, 0xd8, 0xd4, 0x76, 0xab, 0xdf, 0xbe, 0x13,
-0xd1, 0x78, 0x39, 0x32, 0xfb, 0xd6, 0xbf, 0x63,
-0xf3, 0xe0, 0xe8, 0xb1, 0x89, 0xdb, 0x4c, 0xea,
-0xa8, 0x6e, 0x39, 0x72, 0x86, 0x6d, 0xb8, 0x13,
-0xdf, 0xda, 0x67, 0xe5, 0x3a, 0xa6, 0x48, 0x94,
-0xb7, 0x8c, 0xe1, 0xc9, 0xeb, 0x75, 0xd3, 0xc8,
-0x37, 0x3b, 0x5e, 0xde, 0x3a, 0x89, 0xfa, 0x9d,
-0xe2, 0x30, 0x65, 0x27, 0x7f, 0x5e, 0x7e, 0x9c,
-0xe8, 0xde, 0x7e, 0x76, 0xec, 0x6e, 0x1a, 0x9b,
-0x92, 0xf6, 0x8f, 0xc9, 0x7f, 0x53, 0xea, 0xa6,
-0xd5, 0x3e, 0x17, 0xc1, 0x84, 0x70, 0x64, 0xe6,
-0x97, 0x45, 0x8f, 0x99, 0x3a, 0xcd, 0xc1, 0x6f,
-0x79, 0x79, 0x52, 0x04, 0x65, 0x7e, 0xe3, 0x0f,
-0xde, 0x7e, 0xc3, 0x3c, 0xfc, 0xf3, 0xc1, 0xc3,
-0xff, 0xbc, 0x2d, 0x42, 0x39, 0x58, 0x2c, 0xe7,
-0x13, 0x23, 0x7a, 0xbf, 0x65, 0x29, 0x43, 0x4e,
-0x3a, 0x30, 0x4f, 0xea, 0x2d, 0x15, 0xee, 0x6c,
-0xc8, 0x69, 0x59, 0xea, 0xa6, 0xca, 0xad, 0xb6,
-0x85, 0x21, 0xac, 0x84, 0x27, 0x0d, 0x6f, 0xb9,
-0x3c, 0xe2, 0xda, 0xcf, 0x2d, 0x80, 0x68, 0x66,
-0x32, 0x54, 0xfd, 0xcf, 0xf8, 0xd2, 0xbf, 0x43,
-0x61, 0xb8, 0x38, 0x2b, 0x1a, 0x80, 0x5b, 0x0d,
-0x3a, 0x05, 0xe8, 0xd0, 0x37, 0x01, 0x77, 0x78,
-0x74, 0x9c, 0x60, 0xa0, 0x2b, 0x7e, 0x86, 0xa3,
-0xc5, 0x97, 0x02, 0x76, 0xa8, 0x09, 0xd8, 0xa1,
-0xd1, 0x1c, 0xa8, 0x27, 0xb0, 0x48, 0x6f, 0xe2,
-0xf0, 0xeb, 0x38, 0xf4, 0x52, 0x4e, 0x93, 0x5e,
-0xc9, 0xd9, 0x3a, 0x9c, 0xa3, 0xc2, 0xfb, 0xcb,
-0x9e, 0x24, 0xe6, 0xf3, 0x49, 0xff, 0x74, 0x14,
-0x9c, 0x40, 0x5f, 0x93, 0xa7, 0x67, 0x51, 0x71,
-0x64, 0xac, 0xe3, 0x64, 0xa3, 0x99, 0xe8, 0x7c,
-0x36, 0x9a, 0x87, 0x6e, 0xfa, 0xfe, 0x4e, 0xb6,
-0xf9, 0x2f, 0xd5, 0xa4, 0xbf, 0xd8, 0xe4, 0xd1,
-0xfc, 0xcc, 0x6f, 0xfc, 0xe2, 0xef, 0xfd, 0xf5,
-0x3f, 0xdc, 0xfb, 0x87, 0xaf, 0xfc, 0xc1, 0x1f,
-0xff, 0xfc, 0xf2, 0x31, 0xe4, 0x9f, 0x0b, 0x8f,
-0x0e, 0x0f, 0x1e, 0xe2, 0x89, 0xab, 0xbd, 0x64,
-0xf2, 0x91, 0x6a, 0x02, 0xe6, 0xe7, 0x37, 0x32,
-0xb7, 0xc7, 0xb7, 0x47, 0xce, 0xfa, 0xce, 0x9f,
-0xcb, 0x8d, 0xa9, 0xe1, 0xe2, 0x5d, 0x6e, 0x00,
-0xe8, 0xca, 0x3a, 0x0d, 0x0a, 0xb3, 0x43, 0x63,
-0x4e, 0x45, 0xc1, 0x75, 0x40, 0x7d, 0x16, 0xa0,
-0x3e, 0x17, 0x2a, 0x1a, 0x01, 0xd1, 0x0a, 0xe8,
-0x66, 0x40, 0xb6, 0x05, 0xdc, 0x1e, 0x88, 0x5f,
-0x7a, 0xf1, 0xf0, 0x69, 0xf1, 0x88, 0xf0, 0xfe,
-0xb2, 0x27, 0x89, 0xf9, 0x7c, 0xd2, 0x3f, 0x2d,
-0x0d, 0xc7, 0xd7, 0x27, 0x79, 0x16, 0x0d, 0x47,
-0xc5, 0x3a, 0x4e, 0x2e, 0x16, 0x4f, 0x28, 0x7f,
-0x92, 0xf4, 0xfa, 0xe9, 0x5b, 0x74, 0x72, 0xad,
-0x66, 0x76, 0x7f, 0x69, 0x88, 0x78, 0x34, 0x39,
-0xd4, 0x8f, 0x47, 0x4a, 0x40, 0xf0, 0x60, 0x48,
-0x56, 0xb2, 0xbe, 0xb2, 0xcf, 0xc6, 0x24, 0xa7,
-0x3f, 0x39, 0x64, 0x67, 0xf2, 0x24, 0xaf, 0x47,
-0x93, 0x32, 0xc0, 0xb3, 0xef, 0x91, 0x5e, 0x8a,
-0x4a, 0x4f, 0x3f, 0xb9, 0xd0, 0x6d, 0x80, 0x3c,
-0xfa, 0x8f, 0x8f, 0x8c, 0xdc, 0x7e, 0x81, 0xd5,
-0xff, 0xea, 0xd5, 0xd4, 0x4a, 0xb1, 0x48, 0xcf,
-0x01, 0xd1, 0x07, 0xf7, 0xb2, 0xf2, 0x1c, 0x60,
-0x67, 0x47, 0x7e, 0x17, 0x30, 0x36, 0xd8, 0xa5,
-0xbc, 0x18, 0xa8, 0xee, 0x09, 0x10, 0xd4, 0x17,
-0xe0, 0x76, 0x40, 0x2f, 0xa5, 0xeb, 0x50, 0x8e,
-0x21, 0xd2, 0x47, 0xf6, 0x24, 0x31, 0x9f, 0x4f,
-0xfa, 0xa7, 0xa7, 0xe2, 0xd8, 0xfa, 0x72, 0xc7,
-0x49, 0x2e, 0x51, 0xe2, 0x88, 0x68, 0xc7, 0xc9,
-0x44, 0xae, 0xef, 0xc6, 0xc9, 0x89, 0x45, 0xef,
-0xa7, 0x4f, 0xfd, 0x8f, 0x74, 0xc6, 0x69, 0xb0,
-0x87, 0x5c, 0xae, 0x3b, 0xf6, 0xe8, 0xf8, 0x0c,
-0xc5, 0xea, 0xdb, 0xf3, 0x60, 0xf3, 0xd0, 0x04,
-0x13, 0x85, 0x37, 0xd5, 0xa4, 0x3c, 0x16, 0x8c,
-0x12, 0x3a, 0xfa, 0x2f, 0xd3, 0xd1, 0x7f, 0xe4,
-0x42, 0xe6, 0xcc, 0x5e, 0xfa, 0x4b, 0xe6, 0xe3,
-0xfa, 0x6c, 0x71, 0x76, 0x6d, 0xba, 0x56, 0x93,
-0x83, 0x63, 0xd1, 0x20, 0x3b, 0x39, 0xdd, 0x00,
-0x84, 0x03, 0xbb, 0x46, 0x29, 0xf7, 0x29, 0x6f,
-0x39, 0x28, 0x25, 0xcf, 0x0f, 0x44, 0x53, 0xf0,
-0x40, 0xb4, 0x07, 0xb2, 0x59, 0x38, 0x94, 0x63,
-0x88, 0xf4, 0x91, 0x3d, 0x49, 0xcc, 0xe7, 0x93,
-0xfe, 0xe9, 0xa9, 0x38, 0xb6, 0x3e, 0xd1, 0xd5,
-0xa2, 0xde, 0xd6, 0x11, 0x0a, 0x92, 0x24, 0x8e,
-0xb0, 0x32, 0x29, 0x4e, 0xe8, 0xe5, 0xc9, 0x1c,
-0x6d, 0xc6, 0xe1, 0xe9, 0x1d, 0xc7, 0x00, 0x2d,
-0xf8, 0x80, 0x67, 0xcd, 0x83, 0xee, 0x83, 0xb1,
-0x05, 0xc1, 0x26, 0x2d, 0xd8, 0x95, 0xc8, 0x66,
-0xdf, 0x90, 0x67, 0x61, 0x93, 0xf4, 0x6d, 0xba,
-0xdb, 0x0b, 0xca, 0xc7, 0xf7, 0x74, 0x3c, 0x28,
-0xca, 0xa6, 0xc5, 0x73, 0x3f, 0x12, 0x5b, 0x8f,
-0x36, 0xc7, 0x36, 0x75, 0xf5, 0x9f, 0x5c, 0xce,
-0x64, 0xc4, 0xd1, 0x7f, 0xfb, 0x05, 0x9e, 0xfb,
-0x6b, 0x9a, 0xd3, 0xd4, 0x00, 0x54, 0xf3, 0x7b,
-0x3c, 0x2a, 0x54, 0x87, 0x6e, 0x04, 0x1e, 0xd2,
-0x02, 0xa8, 0xaf, 0x85, 0x58, 0x78, 0x60, 0xd7,
-0x48, 0x8e, 0xfe, 0x7b, 0x00, 0xc0, 0x73, 0x44,
-0x8e, 0x22, 0x7c, 0x70, 0xf0, 0x5c, 0x6b, 0xf6,
-0xf1, 0xb8, 0x21, 0x26, 0x9a, 0xed, 0xf6, 0x09,
-0x88, 0x35, 0x45, 0x9b, 0xb2, 0x75, 0x10, 0xc7,
-0xff, 0x31, 0x59, 0xfd, 0xe9, 0x1e, 0xc1, 0xed,
-0x91, 0xed, 0x07, 0x2f, 0xbe, 0xfa, 0x5f, 0xbd,
-0xda, 0x6d, 0x8b, 0x06, 0xe0, 0x52, 0x95, 0x6e,
-0x03, 0xf0, 0x39, 0xc0, 0xc4, 0x16, 0xb5, 0x00,
-0x0f, 0x64, 0xb5, 0xa6, 0x77, 0xfc, 0x54, 0xd5,
-0xd7, 0x4d, 0x40, 0x2a, 0xd2, 0x1f, 0x0c, 0x08,
-0xdf, 0xfb, 0x72, 0x5e, 0x7b, 0xd3, 0x93, 0xf7,
-0x3a, 0x59, 0xec, 0x45, 0xb3, 0x96, 0x8d, 0xa2,
-0xa3, 0xb9, 0xaf, 0x07, 0x7a, 0xeb, 0xd0, 0x33,
-0x31, 0x0d, 0xf3, 0x7a, 0x9e, 0x11, 0xf0, 0x12,
-0x38, 0x4e, 0xfa, 0xfe, 0x2b, 0x70, 0xad, 0xd0,
-0x1d, 0xaa, 0x88, 0xa2, 0xd0, 0x80, 0x96, 0x93,
-0x92, 0xb3, 0x65, 0xac, 0x0d, 0xf2, 0xe9, 0xd9,
-0xeb, 0xe4, 0x29, 0x7c, 0x9d, 0xce, 0x8b, 0x9f,
-0x94, 0x25, 0x27, 0x69, 0x3f, 0x7e, 0x60, 0x8a,
-0xf3, 0x76, 0x9e, 0x5b, 0x82, 0x6e, 0x3e, 0xfd,
-0x8c, 0xfa, 0xb9, 0x76, 0x4d, 0xf4, 0x33, 0x1c,
-0xec, 0x7c, 0xaf, 0xf8, 0xbc, 0x7d, 0xe8, 0x67,
-0xc8, 0xdb, 0x8d, 0xae, 0x7d, 0x72, 0xa4, 0xc7,
-0x56, 0x4b, 0xd4, 0x3e, 0xaa, 0x8e, 0x37, 0x0e,
-0x63, 0x41, 0xfe, 0x62, 0x42, 0x87, 0xc7, 0x4a,
-0x56, 0xb4, 0x70, 0xc3, 0x54, 0xff, 0x1b, 0x66,
-0x5a, 0x58, 0xd0, 0x89, 0xf8, 0x01, 0x2a, 0x52,
-0x6c, 0x52, 0x8d, 0x86, 0x69, 0x37, 0x36, 0xc7,
-0x16, 0xb8, 0xfb, 0x3f, 0x34, 0x44, 0x0f, 0xfe,
-0x6c, 0x64, 0xe8, 0x49, 0xa1, 0x17, 0xdc, 0xf7,
-0xd7, 0xb4, 0x5e, 0xbd, 0x5b, 0x5c, 0xbb, 0xb4,
-0x5a, 0xbb, 0x45, 0xc3, 0xdc, 0xd2, 0x98, 0xbe,
-0x13, 0x3c, 0xca, 0x5e, 0xf7, 0x81, 0xda, 0x01,
-0x51, 0x42, 0x27, 0x40, 0x2f, 0xe4, 0xee, 0xd5,
-0x4d, 0x02, 0xef, 0x48, 0xf3, 0xa2, 0xaf, 0x16,
-0x90, 0xef, 0x89, 0xa6, 0x28, 0xa4, 0xa5, 0x3d,
-0x64, 0xb0, 0x0d, 0x57, 0xb7, 0x19, 0x53, 0x52,
-0x41, 0x4b, 0x46, 0x96, 0x52, 0x6a, 0xa9, 0x13,
-0x35, 0xfa, 0x65, 0x7c, 0xeb, 0x63, 0xa4, 0xb5,
-0x3e, 0xcf, 0xcc, 0x94, 0x36, 0xee, 0xa8, 0xf4,
-0xad, 0xe1, 0x8e, 0xfd, 0xa1, 0xd3, 0x28, 0xd6,
-0x93, 0x8a, 0xa0, 0xdf, 0x70, 0xd6, 0x59, 0x6d,
-0x85, 0x46, 0xb7, 0x6c, 0x92, 0x8e, 0xa5, 0xae,
-0x7e, 0x9b, 0x29, 0x25, 0xa2, 0x0b, 0x2e, 0x2c,
-0x52, 0xed, 0x6f, 0x2c, 0x69, 0x59, 0xb5, 0x4e,
-0x76, 0x53, 0xc6, 0xc7, 0x14, 0xae, 0x55, 0xeb,
-0xe6, 0xd9, 0x7a, 0xb5, 0xa2, 0x40, 0xb1, 0xd9,
-0x6c, 0x79, 0x91, 0x74, 0xbc, 0xc8, 0x4d, 0xc3,
-0xdf, 0xfd, 0xd6, 0x10, 0xfd, 0x1f, 0xb1, 0xe2,
-0x36, 0xb3, 0x66, 0x4f, 0xe9, 0xfd, 0xe3, 0xe6,
-0xe1, 0xa4, 0x35, 0xf8, 0x6c, 0x59, 0x48, 0xda,
-0x74, 0x1a, 0x11, 0x53, 0xff, 0xf9, 0xd8, 0x2f,
-0x2f, 0xfc, 0xd3, 0x53, 0x42, 0x17, 0x46, 0x32,
-0x2f, 0xe0, 0xa1, 0xdf, 0x64, 0x3e, 0xce, 0xce,
-0xde, 0xe5, 0x73, 0x80, 0xc1, 0x95, 0x15, 0xbe,
-0x13, 0xd8, 0xd9, 0x4a, 0xa7, 0x73, 0x39, 0x7d,
-0x2f, 0x80, 0xfe, 0x0f, 0xfa, 0x99, 0x80, 0x16,
-0x0f, 0x15, 0xec, 0x76, 0x04, 0xe4, 0x7e, 0xe3,
-0x46, 0xdb, 0xfe, 0x1d, 0xdc, 0x7d, 0xea, 0x54,
-0x11, 0x5f, 0x22, 0x15, 0x6e, 0x7a, 0x51, 0xf8,
-0xcf, 0x62, 0xfe, 0xd7, 0x81, 0x96, 0x20, 0xaa,
-0x17, 0xd6, 0x0a, 0x43, 0xe3, 0xe6, 0x1c, 0x9a,
-0xbe, 0x0d, 0x74, 0xea, 0x85, 0x53, 0x19, 0x3c,
-0x53, 0x12, 0xcc, 0x4b, 0x85, 0x3a, 0xfd, 0x76,
-0x25, 0x15, 0x57, 0x95, 0x60, 0x9b, 0x2b, 0xd2,
-0xaf, 0x48, 0x6d, 0x76, 0xfd, 0xb8, 0x47, 0xfa,
-0xc4, 0xd5, 0xb6, 0x4c, 0xcd, 0xb4, 0xba, 0x83,
-0x48, 0x2d, 0x5f, 0x65, 0xac, 0xac, 0xe2, 0x7a,
-0xbd, 0x12, 0x69, 0x45, 0x4e, 0x29, 0x26, 0xab,
-0xf3, 0xf2, 0xa6, 0x7c, 0x5a, 0xa9, 0xb3, 0xaf,
-0xd2, 0xcf, 0xc2, 0xc7, 0x71, 0x2f, 0xbf, 0x05,
-0x10, 0xbd, 0x7f, 0x71, 0xf0, 0x9f, 0x1c, 0xa2,
-0x2b, 0x7f, 0xe3, 0x74, 0xe1, 0x7f, 0xfe, 0x65,
-0xe8, 0xfb, 0x6b, 0x9a, 0x97, 0xf8, 0x1c, 0xa0,
-0xbd, 0xd7, 0xe0, 0x71, 0xa7, 0x2b, 0x9d, 0x89,
-0x9b, 0x69, 0xbe, 0x15, 0xd0, 0x95, 0x4f, 0x04,
-0x45, 0x72, 0xb4, 0x88, 0x94, 0x19, 0x28, 0x98,
-0x1a, 0x81, 0xc8, 0x99, 0x38, 0x44, 0x35, 0x09,
-0xee, 0x1c, 0xf9, 0x62, 0xce, 0x66, 0xcb, 0x6e,
-0x86, 0xeb, 0x20, 0x58, 0x6f, 0x44, 0xc1, 0x56,
-0x2b, 0x14, 0x70, 0xc5, 0x62, 0xd6, 0x85, 0xe6,
-0x24, 0xa7, 0x1f, 0x9a, 0x91, 0x64, 0x7b, 0xdf,
-0xf4, 0xe3, 0xa6, 0x7a, 0x0a, 0x82, 0x90, 0xd0,
-0xbc, 0x84, 0x42, 0x38, 0x2a, 0x0f, 0x09, 0x0a,
-0x12, 0xf2, 0xe0, 0x9b, 0x95, 0xa4, 0x50, 0xee,
-0x58, 0x57, 0xae, 0x8f, 0x9a, 0x84, 0xe2, 0x39,
-0x34, 0x3c, 0x9c, 0x5a, 0xf1, 0x40, 0x3b, 0x87,
-0xde, 0x34, 0xc2, 0xcc, 0xd9, 0xd7, 0xe4, 0xe7,
-0x89, 0xa9, 0xfe, 0x9b, 0xa6, 0xeb, 0x2f, 0xce,
-0xfc, 0x6f, 0x8f, 0x6f, 0xef, 0x6e, 0x8f, 0xbd,
-0x4c, 0xd5, 0xff, 0xea, 0xd5, 0x9d, 0x76, 0xf1,
-0xee, 0xda, 0x12, 0x5d, 0x06, 0xe4, 0x61, 0xfa,
-0xf9, 0x43, 0x1d, 0xa2, 0x05, 0xc8, 0xd1, 0x07,
-0x72, 0xba, 0xea, 0x12, 0x5f, 0x64, 0x47, 0x98,
-0x49, 0x99, 0x2e, 0x5c, 0xca, 0x74, 0xad, 0xc3,
-0x13, 0xd9, 0xf8, 0x6c, 0x4f, 0x35, 0xc3, 0x13,
-0xe1, 0xe0, 0x7c, 0xd1, 0x39, 0x1d, 0x4f, 0x56,
-0xe9, 0x68, 0x48, 0x39, 0x91, 0xc2, 0x53, 0xcf,
-0xf0, 0x0a, 0x41, 0x28, 0x74, 0x1a, 0xe9, 0xfb,
-0x09, 0x87, 0xd1, 0x93, 0xd4, 0x84, 0x25, 0xd4,
-0xd2, 0x43, 0xf3, 0xc4, 0xdc, 0x09, 0xd1, 0x93,
-0x13, 0x71, 0xb2, 0xa0, 0x34, 0xf8, 0x99, 0x76,
-0x4f, 0xf6, 0x53, 0x6e, 0x8e, 0x3d, 0xb9, 0x98,
-0x59, 0x8e, 0x6f, 0x2a, 0xc9, 0x00, 0x2f, 0xef,
-0x89, 0x81, 0x3a, 0x72, 0x4c, 0x4c, 0x4f, 0x29,
-0xa9, 0x59, 0x7a, 0xa7, 0x5e, 0x74, 0x05, 0xfe,
-0x04, 0xd8, 0x43, 0xff, 0xa3, 0x05, 0xd1, 0xf5,
-0xa7, 0x67, 0x05, 0x44, 0xdf, 0x3f, 0xc3, 0xcf,
-0xfc, 0xec, 0x66, 0x5e, 0xb2, 0xea, 0x7f, 0xf5,
-0x6a, 0x34, 0x35, 0x2b, 0x2f, 0x03, 0xe6, 0x1b,
-0xa2, 0x05, 0x28, 0x53, 0x1f, 0x60, 0x7f, 0x62,
-0x4b, 0x7d, 0xdc, 0x49, 0x75, 0x03, 0x6c, 0x2b,
-0xe0, 0xd3, 0x52, 0xd7, 0x6b, 0x5a, 0xea, 0xc7,
-0x32, 0x07, 0xce, 0xcf, 0xfc, 0x23, 0x79, 0x33,
-0x72, 0x9d, 0x32, 0xe8, 0xc0, 0xc4, 0x77, 0xea,
-0x63, 0xe4, 0x44, 0x8e, 0x02, 0x45, 0x56, 0xc3,
-0x81, 0x0a, 0x8d, 0x7c, 0x7f, 0xe3, 0xe1, 0x59,
-0x13, 0x05, 0x52, 0xb1, 0xf4, 0x6d, 0x8c, 0x67,
-0x49, 0x5f, 0xbb, 0x3c, 0x43, 0xbc, 0xf8, 0x61,
-0xbb, 0xa4, 0x17, 0xd6, 0x40, 0x2f, 0x7e, 0x14,
-0x25, 0xc8, 0x78, 0x5a, 0x83, 0xb8, 0xb1, 0x2c,
-0xd8, 0x7d, 0xa4, 0x2c, 0x8a, 0x42, 0x65, 0x91,
-0x31, 0x2f, 0x0a, 0xcd, 0x72, 0x4b, 0xad, 0xe5,
-0xfb, 0x1d, 0x98, 0x62, 0x0b, 0x72, 0xe4, 0xee,
-0x89, 0x58, 0x73, 0x60, 0x92, 0xb4, 0x49, 0x18,
-0x6b, 0x4c, 0x76, 0x23, 0xdd, 0x3a, 0xdd, 0x78,
-0x86, 0xeb, 0x77, 0x9f, 0xac, 0xca, 0x7e, 0x12,
-0xec, 0x29, 0x80, 0x77, 0xc3, 0x80, 0xee, 0xfb,
-0xd3, 0x73, 0x41, 0xa2, 0xf2, 0x6f, 0xf0, 0xeb,
-0x41, 0xdb, 0x23, 0xef, 0xbf, 0xe8, 0xbb, 0xfe,
-0x89, 0x6c, 0xd5, 0x66, 0xb9, 0x0b, 0xc0, 0x2d,
-0x00, 0x8d, 0xb5, 0x5d, 0x11, 0xa7, 0x01, 0x13,
-0xfc, 0xc5, 0x0d, 0x7e, 0x14, 0x43, 0xde, 0xec,
-0x97, 0x5f, 0x89, 0xd4, 0x6d, 0x81, 0xc2, 0xdb,
-0xb0, 0xfb, 0x31, 0x46, 0x2b, 0xfe, 0xd7, 0x3e,
-0xf0, 0x82, 0x9c, 0xea, 0xe9, 0xab, 0xf1, 0x55,
-0xaa, 0x7f, 0x8d, 0x17, 0xc1, 0xd6, 0xca, 0x28,
-0x1e, 0xe0, 0xc5, 0x3c, 0xbd, 0xf4, 0x8d, 0xab,
-0x15, 0xc6, 0x69, 0xb9, 0x31, 0x43, 0x45, 0x07,
-0xbe, 0x9c, 0x1b, 0xdf, 0xb8, 0x83, 0x22, 0x4e,
-0xb4, 0xca, 0xd5, 0x71, 0x10, 0x99, 0xd8, 0xad,
-0xd0, 0xd6, 0x78, 0x66, 0x5a, 0x9e, 0x02, 0x2f,
-0x7f, 0x7e, 0x40, 0xe8, 0x15, 0xda, 0xe5, 0xb5,
-0x00, 0x31, 0x9b, 0xc3, 0x52, 0x90, 0xf6, 0xf8,
-0x62, 0x07, 0x72, 0xfb, 0x80, 0xae, 0xfb, 0x3b,
-0x57, 0xe2, 0xcf, 0x82, 0x1b, 0x0b, 0x0b, 0xe1,
-0x55, 0xfc, 0xf0, 0x36, 0x40, 0x10, 0x18, 0x33,
-0xcc, 0xf7, 0xe2, 0x6e, 0x3f, 0xf5, 0xfb, 0xa9,
-0xe7, 0x4f, 0xef, 0xfa, 0x8f, 0x8f, 0xd3, 0x90,
-0x00, 0x43, 0x2f, 0xba, 0xaa, 0x27, 0x93, 0xda,
-0x6f, 0xcf, 0xce, 0xae, 0x2d, 0xad, 0x56, 0x6b,
-0x7b, 0x83, 0x74, 0x16, 0x50, 0xae, 0x97, 0x2a,
-0x95, 0x7d, 0xd1, 0x0b, 0x48, 0xcb, 0x36, 0x80,
-0x5a, 0x01, 0xf9, 0x74, 0x86, 0x68, 0x08, 0x1e,
-0xd0, 0xb8, 0x00, 0xdc, 0x24, 0xc8, 0x2d, 0xfd,
-0x2c, 0x90, 0xf6, 0x51, 0xab, 0xc4, 0xa9, 0x1b,
-0xca, 0xf4, 0x13, 0xe8, 0x3f, 0x9d, 0x30, 0xe2,
-0x59, 0xa5, 0x6f, 0xa2, 0x1f, 0x19, 0xd3, 0xdb,
-0x0c, 0xbc, 0xdd, 0xf8, 0xc6, 0x7d, 0x10, 0x14,
-0x70, 0xa0, 0xe4, 0x30, 0x4b, 0x7c, 0x7b, 0xd4,
-0x56, 0x52, 0xb4, 0xbe, 0xf9, 0x3b, 0x56, 0x56,
-0x12, 0x05, 0x1e, 0x24, 0x5b, 0x2a, 0x30, 0x21,
-0x07, 0xae, 0x22, 0x89, 0x48, 0xb0, 0xf5, 0xe8,
-0x6c, 0x2a, 0xfd, 0x69, 0x21, 0xfa, 0xfc, 0x63,
-0xba, 0xf2, 0xcf, 0xcf, 0xcf, 0x67, 0xe6, 0x33,
-0x34, 0x7a, 0xc1, 0xc8, 0x85, 0xed, 0xa1, 0x97,
-0xad, 0xeb, 0x6f, 0x49, 0x55, 0xce, 0xcd, 0xce,
-0x2e, 0x2d, 0x4d, 0xb7, 0x6b, 0x7b, 0x8d, 0x06,
-0x7d, 0x72, 0x23, 0x5b, 0x97, 0x5f, 0xa1, 0x6c,
-0x8a, 0x36, 0x80, 0x1e, 0xc5, 0xce, 0xed, 0x2c,
-0xca, 0x47, 0x32, 0x77, 0x3e, 0x4d, 0x8d, 0x01,
-0x3d, 0x01, 0x4c, 0xb3, 0x71, 0xa8, 0xd9, 0xae,
-0x13, 0xfc, 0x0f, 0x0b, 0x39, 0xd4, 0xa7, 0xaf,
-0xda, 0x30, 0x62, 0x77, 0x27, 0xb0, 0xc2, 0x8b,
-0x76, 0x94, 0x76, 0x57, 0xcb, 0xb3, 0xa5, 0x9f,
-0x98, 0x8d, 0xe4, 0x28, 0x7d, 0x8a, 0xab, 0x5f,
-0x92, 0xf1, 0x2c, 0x1d, 0xd7, 0xc0, 0x3e, 0x19,
-0x3f, 0xb2, 0x1c, 0xe2, 0x16, 0x74, 0xe5, 0xfe,
-0x3e, 0x34, 0x33, 0x87, 0x5b, 0x18, 0xfb, 0xbf,
-0x78, 0x19, 0xfc, 0xb4, 0x98, 0x1e, 0x8c, 0x8d,
-0x89, 0xea, 0xff, 0x68, 0x93, 0x9e, 0x9a, 0x3b,
-0x4d, 0xc4, 0x11, 0x7a, 0x8c, 0x1e, 0xcb, 0xa3,
-0x07, 0xf4, 0xa8, 0xa7, 0x2e, 0x16, 0x63, 0x63,
-0xe2, 0x27, 0x66, 0xf6, 0x1e, 0xa3, 0xdb, 0xf6,
-0x0b, 0xb4, 0x16, 0x95, 0x79, 0xc1, 0xfb, 0x91,
-0x34, 0x4d, 0x6c, 0xe1, 0xd8, 0x26, 0xe9, 0xd8,
-0x54, 0xcf, 0xfb, 0xaa, 0xc7, 0x7c, 0xe5, 0x29,
-0x3f, 0xbd, 0x7c, 0x28, 0x4e, 0xfb, 0x79, 0x98,
-0x90, 0xdd, 0x97, 0xe2, 0x89, 0xbf, 0xc3, 0x68,
-0xd5, 0x57, 0x67, 0xd7, 0xd6, 0x96, 0xaa, 0xe2,
-0x2c, 0x60, 0xaf, 0xc1, 0x9f, 0xdd, 0xca, 0xd2,
-0x67, 0xb7, 0x2a, 0xf7, 0xe9, 0x93, 0xb2, 0xcd,
-0x74, 0x3a, 0xad, 0x5f, 0x4b, 0xc9, 0xd1, 0x2b,
-0x3f, 0xb4, 0xa6, 0x39, 0x9d, 0x53, 0x0e, 0xf9,
-0x9d, 0x67, 0xbd, 0xca, 0x2d, 0x26, 0xf9, 0x3b,
-0xde, 0x9e, 0x98, 0x23, 0xeb, 0x2a, 0x71, 0x25,
-0x93, 0x74, 0x86, 0x21, 0xb9, 0xc5, 0xc5, 0xc5,
-0x20, 0x11, 0x37, 0x20, 0x6e, 0x44, 0x3c, 0x0d,
-0x16, 0x4d, 0xb2, 0xf4, 0x98, 0xe9, 0xf7, 0xcd,
-0xb2, 0x9f, 0x23, 0xb3, 0x61, 0x43, 0x62, 0x32,
-0xa1, 0x55, 0x89, 0x3a, 0x92, 0xc4, 0x42, 0xaf,
-0x30, 0xf7, 0x81, 0x5f, 0x62, 0xc2, 0x09, 0xaa,
-0x83, 0xc2, 0x89, 0x67, 0x26, 0x56, 0x42, 0x09,
-0xfa, 0x17, 0x43, 0x2b, 0x5c, 0x69, 0xfa, 0x4e,
-0xf8, 0x97, 0xc6, 0x86, 0x9e, 0xf7, 0xf3, 0xfb,
-0xc7, 0x65, 0xc8, 0xbc, 0x40, 0x30, 0xf4, 0xc8,
-0x73, 0x1e, 0x5f, 0x83, 0x7c, 0x59, 0x88, 0x5f,
-0xff, 0x9b, 0x9f, 0xdf, 0x98, 0xdf, 0xd8, 0x90,
-0x95, 0x7f, 0x64, 0x77, 0x77, 0x64, 0xf2, 0xa5,
-0xb9, 0xe7, 0xdf, 0x97, 0x28, 0x3b, 0x4d, 0x2d,
-0xc0, 0x74, 0xb5, 0x56, 0xdb, 0x6b, 0xc8, 0x2f,
-0xef, 0x65, 0xb3, 0x34, 0x94, 0x44, 0xa7, 0x73,
-0xff, 0xfe, 0xfe, 0x7e, 0x73, 0x42, 0xb4, 0x03,
-0xfa, 0x75, 0xcd, 0x34, 0xbf, 0xfe, 0x4b, 0x7d,
-0x03, 0xf9, 0x49, 0x3e, 0xb9, 0xe6, 0x17, 0x82,
-0xbd, 0x95, 0x72, 0xa5, 0xdd, 0x85, 0xf6, 0x73,
-0x42, 0x7c, 0x71, 0xa5, 0x3b, 0x41, 0xaa, 0x6f,
-0x7c, 0xe5, 0xf6, 0x94, 0x39, 0x86, 0x79, 0xe9,
-0x7b, 0xea, 0x1c, 0x03, 0xd4, 0xec, 0x67, 0xe5,
-0x98, 0xe9, 0xbb, 0xe5, 0xe0, 0x05, 0x6f, 0x05,
-0x4e, 0xdf, 0xcb, 0x3a, 0x02, 0x2b, 0xb6, 0x82,
-0xed, 0xb4, 0xa3, 0xe3, 0x30, 0xd5, 0xe9, 0x78,
-0x4c, 0x2f, 0xf7, 0xbe, 0x95, 0xae, 0x77, 0xb2,
-0x5d, 0xb1, 0x88, 0xfd, 0x83, 0xb6, 0xb6, 0x7c,
-0xe5, 0x89, 0xc5, 0x98, 0x56, 0xf6, 0x84, 0xb9,
-0x4d, 0x37, 0xd3, 0xcd, 0xe6, 0xe2, 0xdf, 0x4c,
-0x4e, 0xda, 0x1a, 0x34, 0xf4, 0xfc, 0x5f, 0xd9,
-0x4d, 0x7e, 0x43, 0xd7, 0xbc, 0xd2, 0xa7, 0xeb,
-0xef, 0x90, 0x7a, 0xd9, 0x4f, 0x86, 0x0f, 0x25,
-0x4f, 0x43, 0xea, 0x5d, 0xc0, 0x98, 0xa5, 0xd4,
-0xe5, 0xdf, 0x90, 0xe3, 0x7b, 0x66, 0xa8, 0xf2,
-0xd3, 0xd0, 0x82, 0x3f, 0x06, 0xb5, 0x9f, 0x38,
-0x28, 0x2c, 0xdd, 0x9d, 0x15, 0x2d, 0xc0, 0xaa,
-0xe8, 0x04, 0xe4, 0x1b, 0xa2, 0x0d, 0xe0, 0xaf,
-0xc5, 0x66, 0xf9, 0xe3, 0x7b, 0xa5, 0x0a, 0x7f,
-0x61, 0x66, 0x5f, 0x9c, 0x14, 0x08, 0xee, 0xd3,
-0x08, 0x11, 0xfb, 0x3c, 0x22, 0x18, 0x7d, 0xdc,
-0x7d, 0xc2, 0x6c, 0x9b, 0xf5, 0x3e, 0x7f, 0x05,
-0x7e, 0x9f, 0x02, 0xf7, 0xd5, 0x40, 0x0e, 0x36,
-0xbc, 0xa3, 0x42, 0x1d, 0x6f, 0xe3, 0xa2, 0x40,
-0xbb, 0xe1, 0xea, 0x63, 0x77, 0x27, 0x90, 0x31,
-0xe1, 0xf7, 0x79, 0x63, 0x62, 0xc2, 0x28, 0x97,
-0x5a, 0x3b, 0x81, 0xfa, 0x8e, 0x1b, 0xfd, 0xf9,
-0xa5, 0xdf, 0x49, 0x8e, 0xc1, 0x62, 0x13, 0xd6,
-0x73, 0xc2, 0x8a, 0x4f, 0xb8, 0xf6, 0xb9, 0xe9,
-0xc7, 0x92, 0x24, 0x59, 0x0a, 0xf7, 0x32, 0x31,
-0xb1, 0x2f, 0x7d, 0x8c, 0xe7, 0x7d, 0x99, 0xb3,
-0x09, 0x47, 0x51, 0x42, 0xe6, 0x4c, 0xfe, 0x3b,
-0x61, 0xf9, 0xa9, 0xad, 0x89, 0x30, 0x82, 0xca,
-0x84, 0xb7, 0x7f, 0x9d, 0x22, 0x0e, 0xb4, 0x38,
-0xc5, 0x3d, 0x91, 0x18, 0xde, 0x99, 0xe8, 0xc8,
-0x8d, 0xfb, 0x26, 0x84, 0xa4, 0x27, 0x26, 0x6e,
-0xfe, 0xcc, 0xdf, 0xcc, 0x4f, 0xda, 0xf1, 0x33,
-0xce, 0x94, 0xd8, 0xc0, 0x1d, 0xd6, 0x11, 0x9f,
-0x28, 0xc4, 0x19, 0xec, 0xc3, 0xc4, 0xdc, 0x98,
-0xcf, 0xd8, 0x41, 0x84, 0xe4, 0xe8, 0x80, 0x54,
-0xf9, 0x77, 0x77, 0x37, 0x5e, 0xc6, 0x8b, 0xfe,
-0xc9, 0x3c, 0x28, 0x9f, 0x5b, 0x13, 0x9d, 0x80,
-0x69, 0xea, 0x04, 0x88, 0xf3, 0x00, 0xf5, 0x09,
-0x6e, 0xfa, 0x00, 0x97, 0xfc, 0xf8, 0x8e, 0xfa,
-0xe4, 0x3b, 0x0d, 0xd2, 0x54, 0x57, 0xc3, 0x48,
-0x55, 0x4a, 0x5f, 0x2d, 0x69, 0x17, 0x0f, 0xcf,
-0xa5, 0xc7, 0xde, 0x92, 0xd3, 0x57, 0x4b, 0xfe,
-0xb6, 0x95, 0x2b, 0xd9, 0xd1, 0xa1, 0xe2, 0x02,
-0xfd, 0x27, 0x3f, 0x7e, 0x2c, 0x50, 0xc7, 0x97,
-0xdb, 0xb1, 0xd4, 0x4f, 0x39, 0xfd, 0x78, 0xfc,
-0x58, 0xd8, 0x91, 0xf1, 0x8f, 0x33, 0x25, 0xc5,
-0x0f, 0x12, 0x7f, 0x26, 0xfb, 0xbd, 0x72, 0x39,
-0x5e, 0xfc, 0xe4, 0xcc, 0x97, 0xc2, 0x50, 0x99,
-0x77, 0xfe, 0xa9, 0xd8, 0x4a, 0x48, 0x6e, 0xde,
-0xff, 0xd7, 0x4c, 0x26, 0x43, 0xa3, 0xe2, 0x7f,
-0xd2, 0x11, 0xb8, 0x4e, 0x80, 0x1a, 0x8a, 0x3f,
-0xd1, 0xff, 0x28, 0x43, 0x32, 0x74, 0x5d, 0x6f,
-0xde, 0x0a, 0x6a, 0x71, 0x35, 0x22, 0x20, 0x8d,
-0x07, 0xca, 0x75, 0x7f, 0x77, 0xe4, 0xc7, 0xa8,
-0xf6, 0x13, 0xa9, 0x5c, 0x36, 0x3f, 0x4d, 0xa7,
-0x01, 0xd3, 0xf4, 0xfd, 0x8d, 0xfc, 0xde, 0x60,
-0x43, 0x7e, 0x86, 0xdb, 0x7c, 0xef, 0x3d, 0x11,
-0x33, 0x48, 0x64, 0xd6, 0x19, 0xe5, 0xd1, 0x8c,
-0x3e, 0x99, 0xf5, 0xc4, 0xcc, 0xa8, 0x93, 0x59,
-0x3d, 0x34, 0xa5, 0xe3, 0x63, 0x06, 0xba, 0x74,
-0xc7, 0x9d, 0x2c, 0x7b, 0xc1, 0x59, 0x47, 0x77,
-0xd6, 0x55, 0x6a, 0x13, 0xf1, 0x2d, 0x0a, 0xcc,
-0xf4, 0x2c, 0x2e, 0x07, 0x91, 0xad, 0xe4, 0x71,
-0xd3, 0x0f, 0x92, 0x8f, 0x67, 0xc5, 0x37, 0x31,
-0x96, 0x5b, 0xcf, 0x20, 0x5f, 0xd8, 0x2d, 0xbb,
-0x20, 0x2c, 0x30, 0xdf, 0x19, 0xc2, 0xd4, 0x75,
-0x79, 0x39, 0x8f, 0xe7, 0x20, 0x29, 0x53, 0x59,
-0x37, 0xe5, 0x6c, 0x98, 0x7e, 0x90, 0xb6, 0x27,
-0xe7, 0x8c, 0x11, 0xaa, 0x2d, 0x73, 0x06, 0x49,
-0x75, 0x34, 0x14, 0xd8, 0xbb, 0x90, 0xd5, 0x83,
-0x84, 0x96, 0xeb, 0xff, 0xfc, 0xaf, 0xb7, 0xf9,
-0x7b, 0x58, 0x6a, 0x20, 0xcd, 0xb3, 0x99, 0xa8,
-0xae, 0x66, 0x36, 0xd4, 0xc8, 0x9d, 0xbc, 0xb5,
-0xa1, 0x8c, 0x38, 0x7c, 0xdc, 0xd0, 0x8c, 0x36,
-0x75, 0xdc, 0x8e, 0x10, 0xaa, 0x90, 0xc3, 0x03,
-0xcb, 0x91, 0xc7, 0xe9, 0x6b, 0x7f, 0xdb, 0xf3,
-0x0b, 0x2f, 0xf7, 0x55, 0xbf, 0x44, 0x3e, 0xee,
-0x76, 0xa6, 0x56, 0xd7, 0x96, 0xd6, 0x2e, 0x89,
-0x13, 0x01, 0x3a, 0x13, 0xa0, 0x46, 0xa0, 0x41,
-0x03, 0xb8, 0x53, 0x43, 0x40, 0x1f, 0x00, 0xd1,
-0x9f, 0xf3, 0xb6, 0x5f, 0x78, 0x5e, 0x31, 0xdf,
-0x8b, 0xf5, 0xbe, 0xfd, 0xea, 0x7e, 0x06, 0xb6,
-0x97, 0xb0, 0x72, 0xc3, 0xfa, 0xc4, 0xf3, 0x57,
-0x61, 0x58, 0xbf, 0x38, 0x7d, 0xd2, 0x38, 0xcd,
-0xf4, 0xfb, 0xe7, 0xdb, 0x93, 0xed, 0xf5, 0x89,
-0xd9, 0x4f, 0x55, 0xbf, 0x8c, 0xf6, 0x13, 0x89,
-0x25, 0xdb, 0xc7, 0xb8, 0x23, 0xca, 0xef, 0xf5,
-0xbe, 0x85, 0x15, 0xfb, 0x52, 0x78, 0xa2, 0xe6,
-0xd7, 0xe3, 0x5f, 0x01, 0x37, 0x2b, 0x11, 0xf6,
-0x7a, 0x6f, 0xe5, 0xf5, 0xf5, 0x95, 0xd7, 0x29,
-0x99, 0xf2, 0xdf, 0xff, 0xb3, 0x1a, 0x3a, 0x7b,
-0x64, 0x44, 0x1e, 0x38, 0xb7, 0xcf, 0x04, 0x99,
-0xce, 0x08, 0x8d, 0xde, 0x4d, 0x1f, 0xe5, 0xa3,
-0x6f, 0xf2, 0x8e, 0x48, 0x97, 0x72, 0x5b, 0x46,
-0xdc, 0xc5, 0x38, 0x8f, 0xeb, 0x2f, 0x05, 0x59,
-0x8f, 0x5c, 0x8c, 0xd3, 0x88, 0xff, 0xf2, 0xc3,
-0x04, 0x23, 0xf2, 0x23, 0x20, 0xe3, 0x93, 0x3f,
-0x5e, 0x47, 0x7e, 0x8f, 0x68, 0xab, 0xd0, 0x5e,
-0xe2, 0x36, 0x40, 0x34, 0x02, 0xf4, 0x75, 0xad,
-0x7c, 0x8d, 0xbe, 0xc5, 0x22, 0xbf, 0x9f, 0xd7,
-0xe0, 0x6f, 0xc4, 0x81, 0x97, 0x93, 0x97, 0x7c,
-0xcf, 0x38, 0xe6, 0x4d, 0xad, 0xbc, 0xfe, 0x83,
-0x5f, 0xfd, 0x5b, 0xea, 0x24, 0xef, 0xea, 0x9a,
-0xf3, 0xfc, 0xbf, 0xc3, 0xd1, 0x87, 0x5d, 0xf3,
-0xc9, 0x8f, 0x5d, 0xb3, 0x18, 0x09, 0x5c, 0xbb,
-0x7e, 0xb0, 0x2f, 0xa8, 0x14, 0x28, 0x21, 0xce,
-0x03, 0x7d, 0x86, 0x88, 0x3e, 0xfa, 0x75, 0x79,
-0x66, 0x24, 0xf3, 0x92, 0xdf, 0xee, 0x3b, 0x06,
-0xa9, 0x5c, 0x7d, 0xb0, 0x4d, 0x5f, 0x68, 0xbc,
-0x24, 0x3f, 0x63, 0x29, 0xda, 0x01, 0x31, 0xd1,
-0xa7, 0xf1, 0x78, 0x62, 0xe8, 0x2b, 0x80, 0x6d,
-0xfb, 0x29, 0xc0, 0x38, 0x22, 0x4c, 0x8a, 0xba,
-0x4b, 0xbb, 0xe6, 0xc8, 0x71, 0x81, 0xbc, 0x27,
-0x9b, 0x3f, 0x56, 0x7c, 0x47, 0x36, 0x31, 0xbe,
-0xef, 0x97, 0x90, 0xbe, 0x23, 0x70, 0x82, 0xf4,
-0x6b, 0x49, 0xf1, 0xad, 0x4c, 0xde, 0xf7, 0x0b,
-0xe1, 0xe4, 0x63, 0xfa, 0xbd, 0xa5, 0x5b, 0xba,
-0x31, 0x4d, 0xed, 0xb8, 0x7e, 0x93, 0xdb, 0x78,
-0xbe, 0x13, 0x0c, 0x69, 0xd7, 0xe2, 0x36, 0x93,
-0x0e, 0xb7, 0x5c, 0xdb, 0xb5, 0xbc, 0x93, 0x9a,
-0x15, 0xcc, 0xc7, 0x8c, 0xb5, 0x36, 0xc4, 0xfe,
-0x14, 0xc6, 0x0c, 0x55, 0xc2, 0xb7, 0x06, 0xbf,
-0xf1, 0xc7, 0x7f, 0xf1, 0x8f, 0xaf, 0xe9, 0x6f,
-0xf4, 0x9d, 0xe0, 0x3b, 0x7d, 0xa7, 0xc2, 0x4c,
-0x82, 0xeb, 0xf2, 0x6e, 0xc2, 0xc2, 0x95, 0x9b,
-0xb1, 0xbe, 0xc2, 0xf9, 0x75, 0xfe, 0xfa, 0x9f,
-0x38, 0xf2, 0x6f, 0x6f, 0xfc, 0x38, 0xf6, 0xfa,
-0x13, 0xa1, 0xaf, 0xed, 0xa5, 0xf7, 0x4b, 0x85,
-0x5e, 0x63, 0x2f, 0xdf, 0xa6, 0x2f, 0xb1, 0x12,
-0xd5, 0xea, 0xea, 0xb9, 0xaa, 0x58, 0xb7, 0x69,
-0x12, 0xcd, 0x42, 0xb5, 0x2d, 0xb6, 0xab, 0xe7,
-0xc4, 0x44, 0xdb, 0xf4, 0x23, 0xb7, 0x58, 0x55,
-0xcf, 0x59, 0x8f, 0xf6, 0x39, 0x13, 0x22, 0xd7,
-0x9e, 0xb8, 0xb7, 0x14, 0x61, 0xa4, 0x97, 0xc3,
-0xce, 0x55, 0x7d, 0xf1, 0xfe, 0xf1, 0xcf, 0xc9,
-0x75, 0x75, 0x35, 0x39, 0xbe, 0x95, 0xd3, 0xa6,
-0x48, 0x8f, 0x78, 0xe2, 0x27, 0x4c, 0x3f, 0x6e,
-0xbc, 0x51, 0x4f, 0xf9, 0x57, 0x92, 0xe7, 0xaa,
-0xee, 0x64, 0x93, 0x0f, 0x4b, 0x20, 0x49, 0x8f,
-0x1f, 0x2f, 0x8c, 0xaf, 0xc5, 0x0f, 0xd7, 0x6b,
-0x97, 0x81, 0xfa, 0x23, 0xf7, 0x0b, 0xaf, 0x57,
-0xdb, 0x26, 0xbe, 0x0a, 0xa8, 0xea, 0x94, 0x7d,
-0x7f, 0x37, 0xbe, 0xa7, 0xe1, 0x1c, 0xfd, 0x47,
-0xaa, 0x74, 0x4d, 0xa9, 0xf6, 0xc5, 0xff, 0xfc,
-0xc6, 0x9f, 0x7f, 0xeb, 0x5b, 0xa2, 0xee, 0xbb,
-0x1f, 0xcb, 0x0d, 0x3f, 0x9b, 0xfb, 0xc2, 0x78,
-0xcd, 0x3a, 0xef, 0x24, 0x2c, 0x3c, 0xf8, 0x9b,
-0xc0, 0x14, 0x61, 0x46, 0x9c, 0xeb, 0x8f, 0x6f,
-0x2c, 0x0f, 0x8d, 0x2d, 0x7c, 0x7c, 0xe3, 0xff,
-0x4b, 0xdd, 0xf7, 0xf9, 0x38, 0x8a, 0xe8, 0x13,
-0x00, 0x06, 0x6f, 0xe3, 0x25, 0xe2, 0x65, 0xb5,
-0x4b, 0xf3, 0xac, 0xf6, 0xbd, 0xec, 0xf9, 0x3a,
-0x1e, 0x3b, 0x3b, 0xf4, 0x84, 0xdf, 0x18, 0x0d,
-0xe7, 0x47, 0x4f, 0xd8, 0x09, 0xc6, 0x36, 0x79,
-0x83, 0xde, 0x93, 0x97, 0x7e, 0x67, 0x35, 0x6d,
-0x06, 0x3f, 0x3d, 0xf1, 0x53, 0x7f, 0xbc, 0x1e,
-0xdb, 0x4c, 0x5a, 0x6c, 0xca, 0x30, 0xf9, 0x90,
-0xa0, 0x7c, 0x78, 0x70, 0x61, 0xe1, 0xc6, 0xc7,
-0xff, 0x3f, 0x6b, 0x3d, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xc4,
-0xff, 0x01, 0x76, 0x49, 0x09, 0x1b, 0x36, 0x04,
-0x0c, 0x00,
diff --git a/board/esd/hh405/logo_320_240_4bpp.c b/board/esd/hh405/logo_320_240_4bpp.c
deleted file mode 100644 (file)
index 52989de..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x9c, 0x03, 0x94, 0x3f,
-0x00, 0x03, 0x48, 0x6f, 0x6c, 0x7a, 0x48, 0x65,
-0x72, 0x5f, 0x4c, 0x6f, 0x67, 0x6f, 0x5f, 0x33,
-0x32, 0x30, 0x78, 0x32, 0x34, 0x30, 0x5f, 0x6d,
-0x69, 0x74, 0x74, 0x65, 0x5f, 0x31, 0x36, 0x67,
-0x2e, 0x62, 0x6d, 0x70, 0x00, 0xed, 0x9c, 0xfd,
-0x6b, 0x1b, 0x47, 0x1a, 0xc7, 0x9f, 0xae, 0xa2,
-0xe8, 0x8c, 0x4b, 0x42, 0xff, 0x03, 0xb1, 0x26,
-0x2f, 0x26, 0xa5, 0x67, 0x2c, 0x52, 0xd7, 0xf8,
-0xb8, 0x1e, 0xb1, 0xfb, 0x62, 0xc2, 0x81, 0xa9,
-0xa3, 0xe6, 0x42, 0x43, 0x02, 0x21, 0xf1, 0x35,
-0x57, 0x38, 0x4c, 0x8a, 0xbd, 0x71, 0x1d, 0xe2,
-0xa3, 0x70, 0x89, 0x4c, 0x8f, 0x62, 0xdc, 0x4b,
-0xed, 0x8d, 0x84, 0xfd, 0xd3, 0x71, 0x77, 0x0e,
-0x94, 0x90, 0x50, 0x7c, 0x3a, 0x09, 0x29, 0xb4,
-0xe4, 0x87, 0x9c, 0x85, 0xfc, 0x17, 0x14, 0x42,
-0x8a, 0x31, 0xc5, 0x62, 0xd7, 0xb4, 0x04, 0x63,
-0x24, 0x76, 0xee, 0x79, 0x66, 0x66, 0x57, 0x2b,
-0xeb, 0xd5, 0x24, 0x75, 0x0b, 0x9d, 0x2f, 0x28,
-0xfb, 0x36, 0x3b, 0xf3, 0xd9, 0x67, 0xe6, 0x79,
-0x66, 0x76, 0x66, 0x9d, 0x13, 0xbf, 0x1f, 0xff,
-0x1c, 0xb8, 0xc6, 0xf1, 0x77, 0x14, 0x7f, 0xbf,
-0x7b, 0x01, 0x60, 0x13, 0xb7, 0x2f, 0xc0, 0x3e,
-0x70, 0x15, 0x6b, 0x17, 0x3f, 0xbf, 0x5e, 0x7a,
-0xe9, 0x25, 0xd0, 0x75, 0x1d, 0x22, 0x91, 0x08,
-0x0c, 0x0c, 0x0c, 0x40, 0x34, 0x1a, 0x85, 0x91,
-0x91, 0x11, 0x30, 0x0c, 0x03, 0x62, 0xb1, 0x18,
-0x98, 0xa6, 0x09, 0x4b, 0x4b, 0x4b, 0x90, 0x4a,
-0xa5, 0x20, 0x97, 0xcb, 0xc1, 0x37, 0xdf, 0x7c,
-0x03, 0x96, 0x65, 0x01, 0x63, 0x8c, 0x7e, 0x4a,
-0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-0x4a, 0x4a, 0x4a, 0x4a, 0xbf, 0x6c, 0x95, 0x72,
-0xf9, 0x9f, 0x1a, 0xa1, 0xa1, 0xbe, 0x87, 0xd0,
-0x4f, 0x8d, 0xd0, 0x50, 0x9b, 0x8a, 0xef, 0x99,
-0xa4, 0xf8, 0xb8, 0x9c, 0xdd, 0xdf, 0xe1, 0xd8,
-0xb4, 0x21, 0x3e, 0xb1, 0x87, 0xb2, 0xaa, 0x53,
-0xd9, 0x55, 0xa7, 0x76, 0xc8, 0xb2, 0x5b, 0x48,
-0xe9, 0xd8, 0x56, 0xd3, 0x8c, 0x2a, 0xf5, 0x34,
-0x0c, 0x10, 0xc8, 0x72, 0xbe, 0xfb, 0x00, 0xbf,
-0xa1, 0x3c, 0x70, 0x0b, 0x93, 0xec, 0x07, 0x9d,
-0x6b, 0x75, 0x5b, 0x3f, 0xc6, 0x9c, 0xaf, 0x00,
-0x12, 0xf7, 0xf4, 0x29, 0xa7, 0x5b, 0xb7, 0xd9,
-0x6c, 0x47, 0x96, 0x6d, 0x77, 0x77, 0x32, 0xf6,
-0xad, 0x7e, 0x8e, 0x15, 0xaf, 0x80, 0xb6, 0x3a,
-0x7b, 0x88, 0x3d, 0x04, 0x71, 0xf3, 0xc6, 0x10,
-0x40, 0x90, 0xe9, 0x3a, 0xe6, 0xf8, 0x8e, 0x3e,
-0xc5, 0x66, 0x71, 0xe7, 0x89, 0xfe, 0x3a, 0x63,
-0x9f, 0xe9, 0xbf, 0xc6, 0x47, 0xc0, 0x8b, 0x81,
-0x38, 0x2b, 0xe9, 0x47, 0xb0, 0x14, 0xbd, 0xa3,
-0x25, 0x52, 0xfa, 0x93, 0x1d, 0x02, 0xdc, 0x84,
-0x20, 0xee, 0x68, 0x98, 0xef, 0x53, 0xfe, 0x67,
-0x3a, 0x18, 0x70, 0xb8, 0xec, 0x2d, 0x68, 0x67,
-0x5b, 0xf4, 0x10, 0x33, 0x30, 0xe5, 0xe0, 0x31,
-0x9b, 0xd1, 0x16, 0xd9, 0x76, 0xb8, 0x8d, 0xb1,
-0x27, 0x70, 0x0e, 0x7f, 0x00, 0x47, 0x46, 0x83,
-0xec, 0x01, 0xdd, 0x7c, 0x9d, 0xb1, 0x2e, 0x20,
-0x3e, 0x00, 0xcc, 0x67, 0x08, 0xce, 0xb3, 0x19,
-0x58, 0xc4, 0x9c, 0x11, 0x6d, 0x16, 0x0e, 0x32,
-0xe7, 0x0a, 0x2f, 0x8b, 0x95, 0x20, 0x68, 0x33,
-0x07, 0xb4, 0x16, 0xf9, 0x0e, 0x75, 0x03, 0x1c,
-0x20, 0x4e, 0x2d, 0x1a, 0xc6, 0xbc, 0xb1, 0x88,
-0x4e, 0x73, 0x8c, 0xf3, 0x91, 0xfd, 0xec, 0x6d,
-0xe4, 0xdb, 0x84, 0x80, 0x89, 0x25, 0x2f, 0x56,
-0xf1, 0x39, 0x43, 0xd0, 0x33, 0x07, 0xd8, 0x34,
-0x1e, 0xf7, 0x24, 0x47, 0xf1, 0x66, 0x7c, 0xb6,
-0xd0, 0x87, 0x15, 0x7c, 0x59, 0xf6, 0xd8, 0xe5,
-0x2b, 0x02, 0x4c, 0xcc, 0x0d, 0x69, 0xc4, 0xc7,
-0x5a, 0xe7, 0xeb, 0x4d, 0x27, 0xc3, 0xf0, 0x22,
-0xf1, 0xf5, 0x59, 0x33, 0xa0, 0x61, 0x2e, 0x58,
-0x7e, 0x61, 0x88, 0xfd, 0x80, 0xb9, 0x99, 0xa6,
-0xc9, 0xf9, 0x1e, 0x40, 0x1f, 0xbb, 0x5f, 0x93,
-0xaf, 0x0b, 0x32, 0xf8, 0x0b, 0xb1, 0xb5, 0x3c,
-0xde, 0xa0, 0xb1, 0xaf, 0x20, 0x30, 0x55, 0x34,
-0xed, 0xda, 0x7c, 0x6b, 0x64, 0xb7, 0xf5, 0x8e,
-0xdd, 0xf1, 0x15, 0x31, 0xd5, 0xd7, 0x10, 0xb2,
-0x91, 0x8f, 0x8a, 0x00, 0xcc, 0xa5, 0x1d, 0xef,
-0x2e, 0xb0, 0x62, 0x17, 0xbc, 0x4c, 0x09, 0x88,
-0xef, 0x2e, 0x16, 0x83, 0x6c, 0x8b, 0xac, 0x8a,
-0x2f, 0x0c, 0x96, 0xbd, 0x4e, 0xae, 0x45, 0x09,
-0xc1, 0x19, 0xc5, 0x27, 0x45, 0x27, 0xa8, 0xcd,
-0x77, 0x17, 0xae, 0x3b, 0xcc, 0xd9, 0xd8, 0x1d,
-0x9f, 0x40, 0x08, 0xac, 0x6e, 0xe2, 0xd3, 0xb3,
-0x52, 0x17, 0xac, 0x8e, 0x52, 0x76, 0xa4, 0xef,
-0x09, 0x46, 0xf0, 0x3d, 0x80, 0x29, 0xaa, 0xf7,
-0x6c, 0x2d, 0xfb, 0x61, 0x53, 0xea, 0xe2, 0xa1,
-0x89, 0x1e, 0x2e, 0x8c, 0x4c, 0xa8, 0x1d, 0x7c,
-0x07, 0x05, 0xdf, 0x90, 0xfc, 0xfb, 0xb1, 0x12,
-0x85, 0xb2, 0xdd, 0xf0, 0x6d, 0x71, 0xbe, 0x00,
-0xde, 0x34, 0x04, 0xd9, 0x51, 0x78, 0xdd, 0xe2,
-0x61, 0x60, 0x9b, 0x0c, 0x26, 0xf8, 0x1e, 0x63,
-0xfd, 0x62, 0xf6, 0xd5, 0x7c, 0x74, 0x12, 0xc9,
-0x89, 0xaf, 0x70, 0x17, 0x9f, 0x10, 0xe8, 0x41,
-0xea, 0xf0, 0x61, 0x85, 0x60, 0xbe, 0x8e, 0x6d,
-0xef, 0x9a, 0x0f, 0x5b, 0xb6, 0x2d, 0xe2, 0x33,
-0xfa, 0xdb, 0x90, 0xf0, 0xdb, 0x73, 0x0c, 0x63,
-0x86, 0x26, 0xf9, 0xc8, 0x7f, 0x23, 0xc0, 0xf9,
-0x58, 0x25, 0xdf, 0x63, 0x74, 0xab, 0x48, 0x18,
-0xeb, 0xf7, 0x1d, 0xbc, 0xe7, 0x98, 0x00, 0xab,
-0xe2, 0x13, 0xf5, 0xbb, 0x1d, 0x16, 0x39, 0x4f,
-0xb9, 0xf5, 0xdb, 0x2a, 0xde, 0x32, 0x70, 0x17,
-0xad, 0xe2, 0x73, 0x78, 0x31, 0xc4, 0xe7, 0xdc,
-0xe5, 0xe7, 0x6a, 0xd8, 0xaf, 0xc8, 0x93, 0x87,
-0xc8, 0xd8, 0x10, 0xca, 0xd4, 0xe1, 0x93, 0xf6,
-0x93, 0x7c, 0x8b, 0xbb, 0x6b, 0x7f, 0x5b, 0x14,
-0xb2, 0xce, 0x33, 0x5e, 0xbf, 0x16, 0xaf, 0xdf,
-0xdf, 0x5a, 0xd6, 0x77, 0xbc, 0x9e, 0xbe, 0x86,
-0xe0, 0x2a, 0xe7, 0x63, 0x8e, 0x95, 0x5b, 0xa1,
-0xaa, 0xe4, 0x7c, 0x78, 0x6d, 0x1b, 0x2d, 0x6e,
-0x7d, 0x4b, 0x0f, 0xc1, 0xac, 0x95, 0xd4, 0x50,
-0x08, 0xdb, 0x7e, 0xe0, 0xba, 0xcd, 0xca, 0xf5,
-0x3b, 0x45, 0xed, 0xd5, 0xc7, 0x37, 0x03, 0x07,
-0x4b, 0x43, 0xf4, 0x77, 0x8c, 0x8f, 0x21, 0x5b,
-0x22, 0xb4, 0x96, 0xf9, 0xee, 0x8a, 0xb0, 0xbc,
-0x49, 0x55, 0x87, 0x4d, 0x64, 0x75, 0x06, 0x5e,
-0xa1, 0x16, 0xb9, 0xc8, 0xab, 0x96, 0xa3, 0xb4,
-0x8b, 0x84, 0x5e, 0xfb, 0x43, 0x2c, 0xf2, 0x28,
-0x6e, 0x3f, 0x92, 0xc3, 0xf9, 0x8e, 0x51, 0x71,
-0x5d, 0xf0, 0xba, 0xe0, 0x3b, 0xcf, 0xb8, 0xaf,
-0x08, 0xbe, 0x03, 0xd4, 0x84, 0x0e, 0xa2, 0x73,
-0xe3, 0xa5, 0x07, 0x80, 0xed, 0x0f, 0x56, 0x5b,
-0x8f, 0x2f, 0x64, 0xf5, 0x04, 0xef, 0x47, 0x6c,
-0x8c, 0x2d, 0x60, 0x3f, 0xa4, 0xec, 0xee, 0x63,
-0x0e, 0xbc, 0x9c, 0x03, 0x82, 0x8f, 0xb2, 0x0a,
-0xc3, 0xaa, 0xe4, 0x7b, 0x19, 0xf9, 0xb1, 0x92,
-0xc9, 0xab, 0xa9, 0xb7, 0x75, 0xb0, 0xb2, 0x67,
-0x84, 0xe1, 0x46, 0xe9, 0x66, 0x7e, 0x9f, 0xcd,
-0x8d, 0x48, 0x7c, 0x9b, 0xd0, 0x46, 0x0f, 0x47,
-0xf1, 0x25, 0xc3, 0x9c, 0x19, 0x40, 0xff, 0xc5,
-0x2b, 0x25, 0x08, 0xb4, 0xda, 0xbf, 0xf5, 0xd8,
-0x62, 0x1b, 0x9c, 0x18, 0xc2, 0x46, 0xeb, 0x74,
-0x69, 0xd7, 0x1e, 0xe1, 0x76, 0x3b, 0x1a, 0x1d,
-0xee, 0xc2, 0x6a, 0xe4, 0x7c, 0x57, 0x4e, 0xe7,
-0x6e, 0xe1, 0xbe, 0xe4, 0x03, 0xea, 0x4c, 0x42,
-0x26, 0xc0, 0x02, 0xdb, 0xd2, 0x26, 0xb1, 0xe2,
-0x0f, 0x60, 0x60, 0x0e, 0x26, 0x96, 0xcf, 0xb2,
-0x6f, 0x01, 0x7a, 0xe7, 0xce, 0x22, 0x9a, 0x76,
-0x66, 0x8c, 0xac, 0x24, 0xec, 0x07, 0x3d, 0xb7,
-0x00, 0x0d, 0xbb, 0x05, 0xc1, 0xdc, 0x3d, 0xde,
-0xbf, 0x61, 0x51, 0x5d, 0x44, 0xdd, 0x82, 0x1e,
-0x43, 0x20, 0x23, 0x38, 0x35, 0xd1, 0xd2, 0xc9,
-0x9b, 0xbb, 0xb1, 0x05, 0x6f, 0xf1, 0xc6, 0x1c,
-0x14, 0xf6, 0x1b, 0x85, 0xe3, 0x80, 0x19, 0x4a,
-0xbe, 0x30, 0x26, 0xd5, 0x00, 0x0d, 0x9f, 0x21,
-0x43, 0x0e, 0x03, 0xda, 0x06, 0x83, 0xdf, 0xa1,
-0xae, 0x17, 0xb9, 0x9b, 0x84, 0xdb, 0x91, 0x8f,
-0x92, 0x04, 0x6c, 0x97, 0x8f, 0xbb, 0x2d, 0x71,
-0x1d, 0xc7, 0xce, 0x13, 0xb7, 0x1a, 0x15, 0xd6,
-0xd7, 0x12, 0xdf, 0x03, 0x19, 0x8e, 0x37, 0xa1,
-0x13, 0x8d, 0x82, 0x1d, 0x10, 0x0f, 0x26, 0x98,
-0xad, 0xe4, 0xe3, 0xf6, 0xc3, 0x5a, 0x41, 0xa2,
-0xf3, 0x92, 0x2f, 0xb4, 0x8e, 0x07, 0x0b, 0x33,
-0x3c, 0x35, 0x0f, 0x1a, 0x21, 0x6c, 0x0c, 0x14,
-0x5f, 0xf0, 0x41, 0x3e, 0x03, 0x7a, 0x0e, 0x00,
-0x1a, 0x03, 0x65, 0xe8, 0xb9, 0x16, 0x91, 0xef,
-0x74, 0x58, 0xd0, 0x7c, 0x49, 0x69, 0x2d, 0xe4,
-0x6b, 0xc3, 0x9b, 0x5b, 0x74, 0x0f, 0x97, 0x6f,
-0xcb, 0xb8, 0xf6, 0xdd, 0x3b, 0x87, 0xa6, 0x70,
-0xcf, 0x59, 0xeb, 0xee, 0x98, 0xb4, 0xd8, 0xb6,
-0x41, 0x9a, 0x60, 0x45, 0x63, 0x12, 0x87, 0x4d,
-0x63, 0xdd, 0x91, 0x04, 0xf7, 0x4f, 0x9b, 0x2d,
-0x4f, 0xd8, 0x63, 0x1d, 0x7d, 0xf6, 0xf6, 0x70,
-0x07, 0x02, 0x38, 0x1b, 0x51, 0xfd, 0x38, 0x8e,
-0x5b, 0x58, 0x61, 0x58, 0xef, 0xa1, 0xed, 0x97,
-0xdd, 0xc7, 0x27, 0x31, 0x59, 0xe6, 0xbe, 0x7e,
-0x1a, 0x8f, 0x96, 0x8d, 0x55, 0xb6, 0x6e, 0x2c,
-0x2c, 0x77, 0x1f, 0xa7, 0x21, 0xa5, 0x3d, 0xa6,
-0x1f, 0x5f, 0xc0, 0xad, 0x31, 0x59, 0xfc, 0x50,
-0xbf, 0xd6, 0x1a, 0x1f, 0xf7, 0x7e, 0xa9, 0x62,
-0x5a, 0x6c, 0x93, 0xa9, 0xea, 0x74, 0xfc, 0x9c,
-0x23, 0xba, 0x3c, 0x56, 0x8a, 0x67, 0x91, 0x59,
-0xa4, 0x2e, 0xa5, 0x56, 0xc5, 0xcd, 0xa9, 0x2c,
-0x3f, 0x4c, 0x66, 0xc9, 0x35, 0xb2, 0xee, 0x69,
-0xc6, 0x47, 0xac, 0xa9, 0x2c, 0x1f, 0xb6, 0xf2,
-0xfb, 0x48, 0x76, 0xb1, 0x46, 0x11, 0x75, 0xf8,
-0xda, 0x1c, 0x7b, 0x25, 0xdb, 0x5a, 0x62, 0xde,
-0x7f, 0xb4, 0x20, 0x19, 0xa6, 0x9f, 0x87, 0x70,
-0x14, 0xd0, 0x31, 0x2c, 0x7a, 0xf5, 0xda, 0x2a,
-0x9a, 0x09, 0x6f, 0xdf, 0xb5, 0x5f, 0x33, 0x79,
-0x7c, 0x49, 0x73, 0xb5, 0x61, 0xc2, 0xe6, 0xc2,
-0xa8, 0x09, 0x20, 0xa2, 0x6a, 0x6d, 0x79, 0xf1,
-0x59, 0x14, 0xbc, 0x3b, 0xbe, 0x51, 0x1e, 0xe7,
-0x9f, 0x49, 0x3f, 0x70, 0xbe, 0xfa, 0xc5, 0x6e,
-0xf9, 0xf8, 0x76, 0x6d, 0xbf, 0x99, 0x67, 0xe7,
-0x73, 0x96, 0x87, 0x8f, 0x4f, 0x34, 0xa8, 0x05,
-0xbf, 0xfd, 0x70, 0x38, 0xba, 0xe7, 0xf6, 0x6b,
-0x2a, 0x9f, 0xf3, 0x38, 0x63, 0xd1, 0x96, 0xf8,
-0xa2, 0x51, 0xf9, 0xc0, 0x85, 0xdc, 0x2e, 0x5f,
-0x27, 0x9f, 0x51, 0xcd, 0x5f, 0x83, 0xb9, 0xac,
-0xea, 0x17, 0x68, 0x25, 0x25, 0x25, 0xa5, 0x5f,
-0x9e, 0xf6, 0x36, 0x42, 0x3f, 0x77, 0xd5, 0x9e,
-0x51, 0x75, 0x0a, 0x49, 0xe3, 0x47, 0xd7, 0x55,
-0xb3, 0xb9, 0xe2, 0x59, 0xab, 0xba, 0x53, 0x2a,
-0xde, 0x82, 0x3d, 0x92, 0x3e, 0x10, 0x69, 0xa6,
-0xee, 0x23, 0xf1, 0x1d, 0x80, 0xc5, 0xa1, 0xbd,
-0xc2, 0x23, 0xc0, 0xa6, 0x8a, 0x44, 0xae, 0x55,
-0xe0, 0xf1, 0x19, 0x8d, 0x3d, 0x93, 0xf6, 0xe6,
-0x48, 0x63, 0x5d, 0x42, 0xc2, 0x41, 0xff, 0xb4,
-0xf9, 0x95, 0xbd, 0xc4, 0x03, 0x38, 0x6c, 0x18,
-0x7f, 0x6c, 0xd0, 0x48, 0x47, 0x46, 0x2e, 0x0e,
-0xf4, 0xeb, 0x9f, 0x96, 0xf9, 0xd6, 0xf7, 0x16,
-0x0f, 0xb4, 0xf7, 0x63, 0x8d, 0x74, 0x13, 0x09,
-0x07, 0x22, 0x9d, 0xde, 0x88, 0xac, 0xa8, 0xef,
-0x31, 0x1f, 0xec, 0x6f, 0xc8, 0x87, 0x32, 0x46,
-0x06, 0xfa, 0x5f, 0x76, 0x0d, 0xf8, 0xf5, 0x9e,
-0xf3, 0x35, 0x31, 0x20, 0x6a, 0xfc, 0x52, 0xff,
-0xab, 0x72, 0xc4, 0xed, 0xe8, 0xe1, 0xbd, 0xe6,
-0x6b, 0x6e, 0xc0, 0x98, 0x71, 0xb1, 0x5f, 0xce,
-0x7a, 0xaf, 0x77, 0xef, 0x3d, 0x9f, 0x76, 0xb9,
-0x19, 0xdf, 0xcd, 0xf1, 0x8b, 0xaf, 0xf1, 0x16,
-0xb8, 0x1d, 0xe9, 0x6e, 0x94, 0x53, 0xcf, 0x84,
-0x11, 0xfe, 0x31, 0x00, 0xe7, 0x9b, 0x03, 0xf6,
-0x0f, 0x12, 0xdf, 0x53, 0x1f, 0x1f, 0xfd, 0x2f,
-0x73, 0x74, 0x33, 0x6e, 0x25, 0x54, 0x67, 0x96,
-0xb1, 0xe5, 0x2e, 0xef, 0xaa, 0xce, 0xaf, 0x68,
-0xba, 0xee, 0xed, 0xbb, 0xe5, 0xc9, 0x03, 0xff,
-0xd6, 0x4d, 0xe1, 0x65, 0xe7, 0xbf, 0xa1, 0x69,
-0x05, 0xc7, 0xc6, 0xfb, 0x5f, 0x25, 0x0f, 0x59,
-0x1b, 0xf6, 0xf8, 0xda, 0x32, 0x16, 0x2d, 0xd8,
-0x41, 0x5b, 0x9a, 0x66, 0x85, 0x49, 0x21, 0xee,
-0x43, 0xeb, 0x3c, 0xd7, 0x5e, 0xbc, 0x4a, 0x7a,
-0x02, 0x67, 0xf2, 0x96, 0xd4, 0x9a, 0x7b, 0x6b,
-0x2f, 0x9e, 0x7a, 0x40, 0xcf, 0xb3, 0x60, 0x59,
-0x5b, 0x88, 0x34, 0xe9, 0xa6, 0x98, 0x11, 0xd9,
-0xd2, 0x74, 0x5c, 0x27, 0x1e, 0x6e, 0xba, 0x37,
-0x34, 0xad, 0xe0, 0xd8, 0x8d, 0x8b, 0x27, 0xc8,
-0x3b, 0x6e, 0x95, 0xf9, 0xda, 0xb3, 0xf4, 0xfe,
-0x4c, 0x19, 0xca, 0x55, 0xc2, 0x3e, 0xe9, 0xe2,
-0x7c, 0xca, 0xb7, 0x37, 0x2b, 0x0e, 0xbe, 0x87,
-0x5e, 0x2f, 0x74, 0x3e, 0x2d, 0xf3, 0x31, 0x3e,
-0xed, 0x18, 0x5a, 0xa0, 0xf9, 0x05, 0xd0, 0xbc,
-0xb9, 0x32, 0xe2, 0xcb, 0x8a, 0x39, 0xed, 0x84,
-0x38, 0x14, 0x6a, 0xee, 0x21, 0xb1, 0xf1, 0x81,
-0x4f, 0xb1, 0xe8, 0xb1, 0x53, 0x7a, 0x5d, 0xbe,
-0x45, 0x46, 0x6f, 0xae, 0xb6, 0xc8, 0xb6, 0x37,
-0xe3, 0xf1, 0x49, 0xc7, 0xb7, 0xec, 0x2d, 0xf7,
-0xd6, 0xd7, 0x7c, 0x7c, 0xdb, 0x64, 0xbf, 0x6a,
-0x3e, 0x2d, 0xed, 0xce, 0xed, 0x90, 0xf6, 0xb5,
-0xc0, 0x77, 0xea, 0x24, 0x3e, 0xec, 0x78, 0x99,
-0x8f, 0x32, 0x9a, 0xf1, 0xf1, 0x75, 0x62, 0x21,
-0x85, 0x54, 0x3c, 0xed, 0xf0, 0x49, 0x51, 0xce,
-0xb7, 0x92, 0x4a, 0xdd, 0x13, 0x7b, 0x56, 0x0a,
-0xf5, 0xa5, 0x7b, 0xeb, 0x91, 0x4a, 0x3e, 0x78,
-0x8f, 0x66, 0xc9, 0x31, 0x71, 0xaa, 0xcc, 0x17,
-0xca, 0x33, 0xe6, 0x3d, 0x4f, 0x2b, 0x0d, 0xf0,
-0xc6, 0xc8, 0x80, 0x5d, 0x9b, 0x2f, 0xcd, 0x67,
-0xd9, 0x00, 0xcb, 0x72, 0xb6, 0x71, 0x44, 0x96,
-0xe1, 0xcb, 0x31, 0x3d, 0x44, 0x95, 0x34, 0xcd,
-0x59, 0xe8, 0xa1, 0x79, 0x48, 0x8b, 0xc6, 0x6a,
-0xb7, 0x1a, 0xf1, 0x95, 0x30, 0xb1, 0x39, 0x2a,
-0xb2, 0xc5, 0xb6, 0xd9, 0x6e, 0x33, 0x77, 0x09,
-0xb9, 0x35, 0xbe, 0x9b, 0x23, 0xfd, 0xd8, 0xf6,
-0x8d, 0x53, 0xe1, 0x7a, 0x7c, 0x18, 0x7f, 0x9c,
-0xa4, 0x11, 0x33, 0x13, 0xb6, 0xb3, 0x56, 0xc1,
-0xc7, 0x87, 0x67, 0x54, 0xfa, 0x5f, 0x77, 0xf2,
-0xed, 0xf7, 0xf1, 0x15, 0x2a, 0xf9, 0x5e, 0xb4,
-0x65, 0xab, 0x11, 0x6a, 0xee, 0x20, 0xe8, 0xc1,
-0x36, 0x4b, 0xce, 0xf9, 0xf8, 0x32, 0xb4, 0xec,
-0x84, 0x46, 0x48, 0xf3, 0x49, 0xb6, 0x10, 0xf2,
-0xad, 0x63, 0x6c, 0x39, 0x1d, 0xe7, 0x6b, 0xa9,
-0x47, 0xf0, 0xaa, 0xf0, 0xd7, 0x80, 0x99, 0xb1,
-0x7d, 0x35, 0xc5, 0x9b, 0x7b, 0x46, 0xf0, 0x05,
-0x91, 0xaf, 0x88, 0xdb, 0x93, 0x7c, 0x6a, 0xba,
-0xfc, 0xd8, 0x78, 0xed, 0x15, 0xc6, 0x31, 0xbd,
-0x27, 0x6a, 0xc1, 0x80, 0x17, 0x17, 0x1c, 0x73,
-0x07, 0x1f, 0x4d, 0xb3, 0xff, 0x4a, 0xf0, 0xd1,
-0xfa, 0x0f, 0x95, 0x19, 0x98, 0xc8, 0xd0, 0x5a,
-0x0c, 0xf1, 0x49, 0x7f, 0x9d, 0x88, 0x5b, 0x4e,
-0xe5, 0x98, 0x2c, 0x98, 0x17, 0xc6, 0x09, 0x66,
-0x04, 0x5f, 0x5f, 0x35, 0xdf, 0x39, 0xbf, 0xfb,
-0xe2, 0x13, 0x4d, 0xb7, 0xc0, 0xf7, 0xe7, 0x9a,
-0x7c, 0xed, 0x16, 0x27, 0xc1, 0x31, 0xac, 0xc3,
-0x43, 0x73, 0x5b, 0x82, 0xec, 0x7a, 0xe4, 0x0b,
-0xaf, 0x7d, 0x07, 0xd1, 0x80, 0x4e, 0x05, 0x5f,
-0x48, 0x56, 0x1e, 0xd9, 0xbc, 0x24, 0xf9, 0xdc,
-0x7c, 0x89, 0xef, 0x09, 0x2d, 0xdc, 0x95, 0x4f,
-0xa1, 0xb4, 0xe6, 0xf6, 0x8b, 0x8d, 0x9c, 0x2c,
-0x99, 0x73, 0xd1, 0xb2, 0x7f, 0x64, 0x68, 0x05,
-0x50, 0xb4, 0xe4, 0xa7, 0x10, 0x48, 0x08, 0x53,
-0x60, 0xa1, 0x09, 0x9b, 0x3d, 0xe4, 0x55, 0x27,
-0xf9, 0x34, 0x03, 0xcf, 0x54, 0xbc, 0x12, 0xd0,
-0x52, 0xe7, 0xa6, 0xe4, 0x74, 0x6a, 0xf2, 0xb5,
-0xd9, 0x6e, 0x76, 0xbb, 0xe0, 0xeb, 0x2b, 0xc5,
-0xe7, 0x2e, 0xf9, 0xfa, 0x0f, 0xc6, 0x36, 0xb0,
-0x4d, 0xd3, 0x8a, 0xc4, 0x16, 0x04, 0xd3, 0x72,
-0xaa, 0x17, 0x02, 0x9f, 0xd0, 0xda, 0x74, 0x50,
-0x36, 0x7d, 0x52, 0x0f, 0x56, 0xf9, 0xb6, 0x57,
-0xd2, 0x19, 0x93, 0xcf, 0x98, 0x93, 0xab, 0xc7,
-0x25, 0xdf, 0x31, 0x4b, 0x38, 0x90, 0xf9, 0x19,
-0x5f, 0x65, 0x65, 0x6b, 0x3a, 0x35, 0xbf, 0xfb,
-0xfe, 0x47, 0x6a, 0x81, 0x6f, 0x7c, 0xb0, 0x94,
-0xfa, 0xcf, 0x58, 0x05, 0x9f, 0xf7, 0x4a, 0xc2,
-0xbd, 0x44, 0xc4, 0x03, 0x8a, 0xb6, 0xa5, 0x0a,
-0x3e, 0x6d, 0x22, 0x61, 0x39, 0xae, 0x7d, 0xb4,
-0x1d, 0x0b, 0x2b, 0x2e, 0x1f, 0xd7, 0x9a, 0xe0,
-0x73, 0x28, 0xca, 0x3b, 0xbb, 0xe7, 0x2b, 0xa6,
-0x92, 0x8d, 0xf8, 0x64, 0x3c, 0x78, 0x8f, 0x56,
-0x67, 0xfd, 0x7c, 0xd0, 0x1b, 0x77, 0xec, 0x2b,
-0xbb, 0xe0, 0x13, 0x17, 0x36, 0x86, 0x76, 0xc9,
-0x77, 0x79, 0x23, 0x95, 0x34, 0x3c, 0xbe, 0xd0,
-0x17, 0x8c, 0x7f, 0x70, 0xe4, 0x58, 0x44, 0x12,
-0x8a, 0x7b, 0x7c, 0x7d, 0xc4, 0x17, 0xf0, 0xf3,
-0x05, 0x27, 0xd2, 0x9e, 0x87, 0x68, 0x93, 0xf2,
-0x23, 0x25, 0xc7, 0xe2, 0x9d, 0x21, 0x9d, 0x6f,
-0xcb, 0xcb, 0xe3, 0x2d, 0x11, 0x73, 0x28, 0x5b,
-0xca, 0xb5, 0x6b, 0x57, 0x7c, 0xc6, 0xe5, 0x52,
-0x2a, 0x79, 0x33, 0xe2, 0xf1, 0x51, 0x46, 0x05,
-0xec, 0x94, 0xf2, 0x3b, 0xf8, 0xce, 0x52, 0xb4,
-0x08, 0x2c, 0xd8, 0xbe, 0x06, 0xde, 0x63, 0x5a,
-0x6c, 0xd4, 0xe5, 0x13, 0xb7, 0xf0, 0x2e, 0x2f,
-0x63, 0x7b, 0x7c, 0x4e, 0x11, 0x8f, 0x1f, 0x4a,
-0x3e, 0xca, 0xd6, 0x12, 0xe3, 0x84, 0xd6, 0xf9,
-0x6e, 0x5e, 0x2e, 0xa5, 0x57, 0xe6, 0x87, 0xc3,
-0x7e, 0xbe, 0x47, 0xa2, 0x95, 0x17, 0xc3, 0xc1,
-0xdb, 0xb6, 0x1b, 0xef, 0xae, 0x93, 0xeb, 0x55,
-0xf2, 0x05, 0xe7, 0xd2, 0x76, 0x49, 0x56, 0xd7,
-0x1f, 0xa8, 0x0f, 0x24, 0xf7, 0x94, 0x0e, 0xe2,
-0xf2, 0x3d, 0x12, 0x3d, 0x20, 0xe7, 0x23, 0xbf,
-0x4b, 0xf8, 0x06, 0x3c, 0xad, 0xf1, 0x7d, 0xe0,
-0xa4, 0x57, 0xcc, 0x61, 0xdd, 0xc7, 0xe7, 0xd0,
-0x2c, 0x0c, 0xf1, 0x75, 0x05, 0x4d, 0x5b, 0xc6,
-0x13, 0x8d, 0x77, 0x0a, 0x5a, 0x05, 0x9f, 0x46,
-0x89, 0xa4, 0x35, 0x4e, 0xe3, 0x2d, 0x69, 0x5b,
-0xdc, 0xfa, 0x49, 0x99, 0xaf, 0xb0, 0x8c, 0xc7,
-0x63, 0x82, 0xcf, 0x79, 0x64, 0x18, 0x57, 0xe3,
-0xbe, 0x06, 0xd2, 0x52, 0x7c, 0xe1, 0x7c, 0xc9,
-0x31, 0x3f, 0x1f, 0x11, 0x04, 0x38, 0x5f, 0xc0,
-0xcc, 0xb3, 0x12, 0x37, 0x2d, 0x85, 0xd6, 0x2d,
-0xd0, 0x12, 0x36, 0x0f, 0xbd, 0x52, 0x87, 0xcc,
-0xbc, 0x0c, 0x3f, 0xbc, 0xb4, 0xb4, 0x7c, 0x98,
-0xf7, 0xca, 0x7c, 0xb3, 0xf2, 0xda, 0x3e, 0x6a,
-0xb8, 0x98, 0x51, 0x47, 0xc2, 0x1f, 0x01, 0x91,
-0x6f, 0x7a, 0xde, 0x6c, 0x02, 0xf8, 0x01, 0x4b,
-0x17, 0x52, 0x63, 0x11, 0x59, 0xc1, 0x6e, 0xe7,
-0xa9, 0x21, 0x1f, 0xd6, 0xdd, 0x60, 0x5a, 0xb6,
-0x17, 0xfa, 0x82, 0x60, 0x96, 0xf3, 0xf9, 0x3b,
-0x8d, 0x78, 0xde, 0xdf, 0x5f, 0x25, 0xaa, 0xf9,
-0xdc, 0x8b, 0x01, 0xc9, 0x07, 0x79, 0xbe, 0xde,
-0xe4, 0x52, 0xc7, 0x3e, 0xd7, 0xbb, 0xb5, 0xcb,
-0x8d, 0xdf, 0x43, 0xae, 0xb3, 0x5c, 0x21, 0x35,
-0xe7, 0xe7, 0x2b, 0x49, 0x3e, 0x67, 0x08, 0x63,
-0x08, 0xe3, 0x5f, 0xcb, 0xd1, 0x7a, 0x35, 0x1e,
-0xc2, 0x0e, 0xbe, 0xb3, 0x16, 0x73, 0x57, 0xea,
-0x7d, 0x7c, 0xb2, 0xe3, 0xa5, 0x50, 0xe5, 0xfa,
-0x02, 0x6f, 0xb8, 0x54, 0x84, 0xed, 0xe7, 0xdb,
-0x3f, 0x3d, 0x7b, 0x24, 0x76, 0xe1, 0x68, 0x63,
-0xfb, 0x7d, 0xca, 0x0a, 0x56, 0xce, 0x8c, 0xca,
-0x37, 0x4c, 0xde, 0x50, 0xb8, 0x69, 0x6c, 0x1a,
-0xe9, 0x06, 0xb1, 0x06, 0x69, 0xe0, 0x77, 0x86,
-0x5c, 0x13, 0xcf, 0x5e, 0xf3, 0xf5, 0xf9, 0x20,
-0x96, 0xe3, 0x4b, 0x5e, 0x40, 0x4b, 0xd8, 0xa2,
-0x6d, 0xc9, 0x8e, 0x8d, 0xf8, 0xee, 0xf9, 0xf9,
-0x30, 0xb0, 0x1c, 0x62, 0xcc, 0xd7, 0x40, 0xde,
-0xbe, 0x81, 0x6c, 0x23, 0x17, 0x1a, 0xc0, 0x99,
-0xf3, 0xb1, 0x3c, 0xf2, 0x15, 0x92, 0x6e, 0x05,
-0x7b, 0x7c, 0xe8, 0xb9, 0x14, 0x3c, 0xae, 0x62,
-0xa3, 0x2a, 0x1a, 0xa7, 0xe9, 0xb1, 0xbf, 0xab,
-0xe0, 0x8b, 0xe7, 0x50, 0x2b, 0x14, 0x72, 0x3d,
-0x03, 0xde, 0xa9, 0xe6, 0x2b, 0xe0, 0x3b, 0x53,
-0x6e, 0x05, 0xb8, 0x63, 0x61, 0x28, 0xcc, 0x53,
-0xc8, 0x2e, 0xfb, 0xc7, 0xd5, 0x8f, 0x8f, 0xbe,
-0x39, 0xaf, 0xff, 0xbd, 0xfe, 0x30, 0x70, 0xda,
-0x34, 0x63, 0xd8, 0xce, 0x2c, 0x2b, 0x65, 0x48,
-0x0f, 0xa6, 0x11, 0x01, 0xe7, 0xfb, 0x48, 0xf2,
-0xc5, 0x99, 0x5c, 0x60, 0x73, 0x1e, 0x56, 0xf0,
-0xa5, 0xbd, 0xbe, 0xc2, 0xe3, 0x8b, 0x57, 0xf3,
-0xb9, 0x9d, 0x09, 0xf1, 0xb9, 0xf2, 0x5e, 0xf8,
-0x20, 0x76, 0xe1, 0xed, 0x37, 0xcd, 0x7d, 0x9f,
-0xbf, 0x5d, 0xdf, 0x7c, 0xa6, 0x79, 0x13, 0x0d,
-0x9e, 0xb7, 0x56, 0x4c, 0x69, 0xc0, 0x80, 0xdb,
-0xc2, 0x3e, 0x12, 0xaf, 0x44, 0xc1, 0xe9, 0x84,
-0xc8, 0xd9, 0x79, 0x44, 0x71, 0x7f, 0xd2, 0xe3,
-0x4b, 0xd4, 0xe4, 0xe3, 0xbe, 0x79, 0x6c, 0x95,
-0x7f, 0xd2, 0xd9, 0x96, 0x2e, 0xf3, 0x41, 0xc2,
-0xe5, 0x73, 0x0a, 0x5e, 0x7c, 0xd6, 0x62, 0x27,
-0x62, 0x03, 0x17, 0xde, 0x32, 0x0f, 0xd7, 0x73,
-0x10, 0xd3, 0xbc, 0xbd, 0x34, 0x8d, 0xb7, 0xe4,
-0xb1, 0x82, 0x0d, 0xf1, 0x8e, 0x19, 0xc0, 0x61,
-0xa7, 0x4d, 0x3b, 0x13, 0x79, 0xc7, 0x26, 0xef,
-0x9b, 0x30, 0x33, 0x54, 0x29, 0x4e, 0x91, 0x37,
-0xa5, 0xc9, 0xbc, 0xb8, 0x4a, 0x30, 0xf4, 0xc1,
-0x1d, 0xfd, 0xbc, 0x01, 0x7b, 0x7c, 0xd5, 0xda,
-0xa0, 0x6d, 0x27, 0x26, 0x22, 0xbe, 0x94, 0x4d,
-0x9d, 0x9d, 0xc8, 0xef, 0x6f, 0x16, 0xef, 0x34,
-0x2d, 0xab, 0x94, 0xf4, 0xda, 0xeb, 0xfe, 0xf9,
-0xfe, 0xd8, 0x89, 0xee, 0xf0, 0x74, 0x3d, 0x3e,
-0xb4, 0xde, 0xd2, 0x12, 0x05, 0x76, 0xac, 0x60,
-0x34, 0x20, 0x07, 0xd4, 0xe8, 0xf3, 0x4d, 0xce,
-0x87, 0xfd, 0x00, 0x75, 0x5e, 0x01, 0xc3, 0xa4,
-0xa6, 0x96, 0xfa, 0x07, 0x37, 0xef, 0x19, 0x79,
-0x15, 0xa0, 0x3c, 0x99, 0xed, 0x05, 0x18, 0x53,
-0x5e, 0x6c, 0xc3, 0x2d, 0xff, 0x96, 0xc8, 0x95,
-0xc8, 0x4e, 0xea, 0x2f, 0x5e, 0xf5, 0x0e, 0xc6,
-0x2e, 0xbc, 0xff, 0x96, 0xf9, 0x71, 0xec, 0xe8,
-0x7c, 0x6c, 0xc7, 0xfc, 0xb8, 0x68, 0x7a, 0xe6,
-0xed, 0x3b, 0xa9, 0xa4, 0x2d, 0xf8, 0x72, 0xc9,
-0xb9, 0xe1, 0x88, 0xee, 0xe3, 0x3b, 0x23, 0x5e,
-0x6c, 0x00, 0x8e, 0x4e, 0x9b, 0xd8, 0x6f, 0x9a,
-0x62, 0xa4, 0xf2, 0xec, 0x7c, 0x63, 0xe5, 0xe1,
-0xc1, 0xc4, 0xf4, 0xc7, 0x83, 0x51, 0xe3, 0xc4,
-0x8d, 0xc1, 0xf9, 0xe9, 0xda, 0xd3, 0xf8, 0x4b,
-0xa9, 0x54, 0x92, 0x37, 0x0a, 0xb4, 0xfb, 0x4a,
-0x72, 0x2e, 0x1a, 0xd1, 0xc3, 0xf4, 0x81, 0x12,
-0xff, 0xa6, 0x09, 0xff, 0x91, 0x7d, 0x4a, 0x10,
-0xf3, 0x36, 0x64, 0xae, 0x9a, 0xbc, 0x0a, 0x10,
-0xf6, 0x8a, 0x09, 0x97, 0x77, 0x34, 0x37, 0x91,
-0xd8, 0x96, 0xd3, 0xf8, 0x92, 0x7b, 0xda, 0x67,
-0x9a, 0xff, 0xc4, 0xf8, 0x32, 0x7d, 0xe1, 0xdf,
-0x75, 0xe9, 0x52, 0xff, 0xcd, 0xb8, 0x7c, 0x85,
-0x95, 0x79, 0x23, 0x1a, 0xe9, 0xf6, 0xa6, 0x7d,
-0x08, 0x4e, 0xcc, 0xea, 0x84, 0x03, 0x11, 0xf4,
-0x1d, 0xbd, 0x4a, 0x6e, 0x91, 0xd5, 0x57, 0xe4,
-0x75, 0x7f, 0x0a, 0x77, 0xb7, 0x3c, 0xaf, 0x04,
-0x97, 0x6f, 0x9b, 0x4b, 0x57, 0xfe, 0x74, 0xe7,
-0x5f, 0x87, 0x97, 0xb0, 0x99, 0xd5, 0x10, 0xbd,
-0xfc, 0xa7, 0xa4, 0x73, 0x0a, 0x03, 0x8e, 0x9d,
-0x8a, 0x44, 0xea, 0x95, 0xf6, 0xdc, 0xd5, 0x11,
-0x5f, 0x4a, 0xdd, 0xb9, 0x7f, 0xd8, 0x38, 0x31,
-0x78, 0xa7, 0x1e, 0x5c, 0x7a, 0x25, 0x23, 0xdd,
-0x9e, 0xa6, 0x99, 0x56, 0x52, 0xa6, 0x71, 0x29,
-0x1a, 0x8d, 0x9e, 0xda, 0xb1, 0x12, 0xf1, 0xc6,
-0x40, 0x74, 0x20, 0xfa, 0x46, 0xf3, 0x15, 0x8b,
-0x5d, 0xea, 0x24, 0x47, 0x48, 0xc6, 0x52, 0x75,
-0x94, 0xcb, 0x61, 0x64, 0x77, 0x3f, 0x21, 0x71,
-0x78, 0x0d, 0x23, 0xa0, 0x61, 0x8c, 0x10, 0x23,
-0xca, 0x5b, 0x8a, 0x88, 0xbe, 0x1b, 0x8d, 0x5e,
-0x92, 0x27, 0xbd, 0x2b, 0xb8, 0x79, 0x57, 0xae,
-0x54, 0xb8, 0x2b, 0x16, 0xd1, 0x2a, 0xbd, 0xeb,
-0xe6, 0x50, 0xb1, 0x2b, 0xee, 0x7f, 0x3f, 0x4d,
-0x1d, 0xd0, 0xff, 0x72, 0xf5, 0x85, 0xdd, 0x5a,
-0xda, 0x8b, 0xea, 0x18, 0xa8, 0x1c, 0x22, 0x4c,
-0xd6, 0x6e, 0xab, 0xcf, 0x5f, 0x19, 0xab, 0xb9,
-0x7c, 0xdf, 0xa1, 0x38, 0xc4, 0x67, 0xe5, 0xea,
-0x19, 0xfb, 0xf9, 0xab, 0x05, 0xbc, 0x42, 0xa6,
-0xcc, 0xc7, 0x24, 0x31, 0x75, 0xfa, 0x3f, 0x3e,
-0x5c, 0x2e, 0x97, 0x6f, 0x48, 0x56, 0x65, 0x3e,
-0xd9, 0x04, 0x7f, 0x4e, 0x2a, 0xec, 0xfc, 0xd3,
-0xb6, 0x9f, 0x1b, 0x60, 0xf5, 0x12, 0x3b, 0x75,
-0xf8, 0x96, 0xe8, 0xc8, 0x6d, 0xb7, 0x3f, 0x77,
-0xc4, 0x38, 0xc0, 0xf2, 0x6f, 0x7c, 0xe7, 0x9d,
-0xca, 0xf3, 0x4d, 0x2f, 0x57, 0xca, 0xa9, 0x95,
-0xab, 0xd8, 0x54, 0xc1, 0xb9, 0x88, 0x75, 0x2e,
-0x3c, 0x2f, 0x59, 0xf4, 0xed, 0x01, 0xfe, 0x53,
-0x63, 0x81, 0x5c, 0x49, 0x49, 0x49, 0x49, 0x49,
-0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-0xe9, 0x67, 0xac, 0xff, 0x03, 0xdc, 0x41, 0xd4,
-0x19, 0x76, 0x96, 0x00, 0x00,
diff --git a/board/esd/hh405/logo_320_240_8bpp.c b/board/esd/hh405/logo_320_240_8bpp.c
deleted file mode 100644 (file)
index 7500448..0000000
+++ /dev/null
@@ -1,1042 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x72, 0xd1, 0xe2, 0x40,
-0x00, 0x03, 0x48, 0x6f, 0x6c, 0x7a, 0x2d, 0x48,
-0x65, 0x72, 0x5f, 0x64, 0x74, 0x5f, 0x33, 0x43,
-0x5f, 0x33, 0x32, 0x30, 0x78, 0x32, 0x34, 0x30,
-0x5f, 0x38, 0x62, 0x70, 0x70, 0x2e, 0x62, 0x6d,
-0x70, 0x00, 0xec, 0x5d, 0x0f, 0x6c, 0x1b, 0xd7,
-0x79, 0xff, 0x12, 0x09, 0xc5, 0xc4, 0xd2, 0x01,
-0x26, 0x0a, 0x03, 0x56, 0x88, 0x1e, 0x59, 0xa9,
-0x14, 0x43, 0xa8, 0xb6, 0x10, 0x08, 0x72, 0x4d,
-0x10, 0xf4, 0xe6, 0x28, 0x09, 0x90, 0x2a, 0x02,
-0x1c, 0x69, 0xe2, 0x98, 0x6a, 0xbc, 0xcd, 0xa3,
-0x38, 0x33, 0x64, 0x4c, 0xd7, 0x54, 0xe4, 0x36,
-0xd3, 0x6c, 0xd4, 0x70, 0x9a, 0xc0, 0xf0, 0xcc,
-0xce, 0x73, 0xb3, 0x2d, 0xd1, 0x42, 0x25, 0xd0,
-0x1c, 0x29, 0x11, 0x27, 0x42, 0x15, 0x25, 0x81,
-0xf3, 0x5a, 0x36, 0x54, 0x77, 0x66, 0xa8, 0x0e,
-0x72, 0xed, 0x25, 0x59, 0x24, 0xb4, 0x69, 0xfe,
-0xac, 0x68, 0xa7, 0x85, 0x4a, 0x42, 0xbb, 0x89,
-0x77, 0x20, 0xf6, 0xbd, 0x3f, 0x47, 0x1e, 0x29,
-0xc9, 0x8a, 0x5d, 0x2b, 0x8e, 0x8b, 0xf7, 0x3b,
-0xfe, 0xb9, 0xf7, 0xee, 0xbd, 0xef, 0xde, 0xfb,
-0xbd, 0xdf, 0xfb, 0xbe, 0x77, 0xf4, 0x9d, 0xbc,
-0xfb, 0x81, 0xb6, 0x96, 0xdb, 0x80, 0xa0, 0xad,
-0x1a, 0xc0, 0x8a, 0xdf, 0x7f, 0x88, 0xc9, 0x15,
-0xfc, 0xbe, 0x0d, 0x7e, 0x87, 0xe6, 0x43, 0xf3,
-0x6d, 0xd0, 0xb0, 0x0d, 0xe8, 0x1b, 0x58, 0x51,
-0xa8, 0xbe, 0xbd, 0x1a, 0x5a, 0x8f, 0x2e, 0x43,
-0xfd, 0xee, 0x41, 0x18, 0x7a, 0xfa, 0x9f, 0xa0,
-0xfb, 0xc1, 0x6e, 0x18, 0xf9, 0x8f, 0x2b, 0xd0,
-0xbc, 0x77, 0x04, 0xbc, 0x67, 0x3e, 0x84, 0xba,
-0x2f, 0xee, 0x84, 0xc1, 0xa3, 0xc7, 0xe0, 0xe2,
-0xc5, 0x57, 0x61, 0x64, 0x7a, 0x1e, 0x9a, 0xef,
-0x6c, 0x86, 0xfa, 0x7b, 0x9e, 0x84, 0xc6, 0xbd,
-0x73, 0xd0, 0xf1, 0xd4, 0x7b, 0x70, 0xf1, 0x57,
-0x0a, 0x34, 0x1e, 0xbc, 0x08, 0x75, 0x4d, 0x3d,
-0x70, 0xf6, 0xdf, 0x52, 0xa0, 0xaf, 0x33, 0x43,
-0xf7, 0xc1, 0x13, 0xd0, 0xdc, 0xf5, 0x04, 0x1c,
-0x4b, 0xe6, 0xa1, 0xfd, 0x1b, 0x67, 0xa1, 0xfb,
-0xe8, 0x1c, 0xcc, 0x2d, 0x2c, 0x41, 0xf0, 0xd9,
-0x25, 0x70, 0xdc, 0x7d, 0x2f, 0x34, 0x3e, 0xfa,
-0x36, 0xd4, 0x7f, 0xc5, 0x0b, 0x43, 0x2f, 0x9e,
-0x85, 0xe5, 0xf7, 0x72, 0x50, 0xff, 0x85, 0x7a,
-0x38, 0x36, 0x7a, 0x11, 0x96, 0x7e, 0xfe, 0x36,
-0x0c, 0xfd, 0xeb, 0xcf, 0xa0, 0xe3, 0xe4, 0x12,
-0x9c, 0xf8, 0x9b, 0x53, 0xd0, 0xfb, 0xe7, 0x7b,
-0xa1, 0xb5, 0x6d, 0x07, 0xe8, 0x7f, 0x7f, 0x3b,
-0x04, 0x1f, 0x09, 0xc1, 0xd9, 0x9f, 0x2a, 0xd0,
-0xf1, 0xe0, 0x1f, 0x43, 0xfd, 0x17, 0x9b, 0xe0,
-0xec, 0xbf, 0x5f, 0x84, 0xc6, 0x9e, 0x97, 0xa0,
-0xf1, 0xb1, 0x65, 0xe8, 0x9f, 0xcc, 0x43, 0xfd,
-0xfd, 0x27, 0xa0, 0xf7, 0x1f, 0xde, 0x84, 0xe5,
-0xcb, 0x1f, 0x43, 0xfb, 0xe3, 0xff, 0x05, 0x8d,
-0x0f, 0xcf, 0x43, 0xf5, 0xe7, 0x6b, 0xa1, 0xdd,
-0x77, 0x02, 0xea, 0xda, 0x82, 0xf0, 0xce, 0xbb,
-0xef, 0xc2, 0xd0, 0xb9, 0x8f, 0xa1, 0xff, 0xd0,
-0x37, 0xe1, 0xec, 0x1b, 0x0a, 0x8c, 0xbf, 0x14,
-0x83, 0xa1, 0xe7, 0x47, 0xa0, 0x7f, 0xf4, 0x2d,
-0xe8, 0x3f, 0x79, 0x16, 0xea, 0xb6, 0xf5, 0x42,
-0xfb, 0xfd, 0x5f, 0x85, 0xba, 0x2f, 0x98, 0xe0,
-0xc4, 0xcb, 0x79, 0xe8, 0xf6, 0x61, 0x1f, 0xbf,
-0x36, 0x0e, 0xcd, 0x9d, 0xc7, 0xc0, 0x71, 0x7c,
-0x19, 0xa6, 0x5e, 0x55, 0xa0, 0x75, 0xff, 0x14,
-0x9c, 0x7d, 0x79, 0x0e, 0x2e, 0xbe, 0xfb, 0x31,
-0x38, 0xec, 0x0e, 0xa8, 0xb7, 0x39, 0xa0, 0xf5,
-0xaf, 0xdf, 0xc4, 0x73, 0x9f, 0x06, 0xef, 0xb3,
-0x6f, 0x42, 0xdd, 0x1d, 0x75, 0x30, 0xfe, 0xca,
-0x0a, 0xb4, 0x3e, 0x18, 0x84, 0xee, 0x1e, 0x17,
-0x34, 0x6f, 0xdb, 0x06, 0xad, 0x07, 0xd1, 0xb6,
-0xa1, 0x0e, 0xbc, 0x78, 0x8e, 0xf9, 0x57, 0xb1,
-0x5f, 0xa7, 0xfe, 0x0e, 0x7a, 0x7d, 0x41, 0x50,
-0x0a, 0x0a, 0xe8, 0xf5, 0x7a, 0x70, 0x1c, 0xfd,
-0x29, 0x4c, 0xfd, 0xe4, 0x23, 0x70, 0x3c, 0x3c,
-0x0e, 0x75, 0xb6, 0x76, 0x38, 0xf6, 0xed, 0xe3,
-0x70, 0xf1, 0x8d, 0x45, 0x98, 0x9a, 0x49, 0x42,
-0x73, 0xdf, 0x59, 0x78, 0xe7, 0x57, 0xbf, 0x84,
-0xf9, 0x85, 0xf3, 0x70, 0xec, 0x29, 0x6c, 0xcb,
-0xc0, 0xcf, 0x61, 0xf9, 0x83, 0x0f, 0x40, 0xbf,
-0x75, 0x07, 0x34, 0xda, 0xb6, 0xc1, 0xfc, 0x2b,
-0x3f, 0x86, 0xc6, 0x47, 0xfe, 0x13, 0xea, 0x9d,
-0x21, 0x18, 0x79, 0xe5, 0xff, 0x60, 0xf0, 0xf0,
-0xb7, 0x60, 0x7c, 0x72, 0x0a, 0x86, 0xce, 0x4c,
-0x41, 0xdd, 0x5d, 0x5e, 0x68, 0xfc, 0xd3, 0x59,
-0xe8, 0x8d, 0x7e, 0x08, 0xcd, 0xbb, 0xbd, 0xd0,
-0x8a, 0xf6, 0x83, 0xff, 0x92, 0x07, 0xbd, 0xa5,
-0x1d, 0xba, 0x9f, 0xcd, 0x43, 0x63, 0xd7, 0x3f,
-0x42, 0xc7, 0xbd, 0x1d, 0xd0, 0xe8, 0xfc, 0x13,
-0xe8, 0xde, 0x3f, 0x04, 0xed, 0x78, 0xfc, 0xd8,
-0x74, 0x1e, 0x8e, 0x3d, 0x3f, 0x0f, 0x8e, 0x07,
-0x07, 0xa1, 0xfb, 0x3b, 0x6f, 0x82, 0xf7, 0xe1,
-0x20, 0x78, 0x8f, 0x4e, 0xc1, 0xe0, 0x53, 0x67,
-0xa1, 0xfd, 0xa1, 0x7e, 0x70, 0x1c, 0x5e, 0x82,
-0x66, 0x67, 0x37, 0xb4, 0x23, 0x1f, 0xc7, 0xbe,
-0x33, 0x0a, 0xa7, 0xff, 0xfe, 0x69, 0x98, 0x7f,
-0x5b, 0x81, 0xd3, 0x67, 0xe6, 0x60, 0xf0, 0xf8,
-0x10, 0x0c, 0x4d, 0xce, 0x41, 0xeb, 0xfd, 0xdf,
-0x80, 0xd3, 0x49, 0x1c, 0x13, 0x3c, 0x57, 0xeb,
-0x63, 0x17, 0xe1, 0x9d, 0x0f, 0x14, 0xac, 0x37,
-0x0f, 0x43, 0x2f, 0x2f, 0x43, 0xf0, 0x60, 0x3f,
-0x74, 0x1c, 0x47, 0x1b, 0x7d, 0x53, 0xd0, 0x7e,
-0x12, 0x35, 0xb7, 0xf5, 0x0f, 0xc0, 0xe1, 0x74,
-0x42, 0xff, 0xd1, 0x21, 0xe8, 0x3e, 0x7e, 0x11,
-0xba, 0x07, 0xc6, 0xe1, 0x9d, 0xf7, 0x50, 0x4f,
-0xbb, 0x83, 0x30, 0x3e, 0x3d, 0x07, 0x8d, 0xf7,
-0x9e, 0x00, 0xef, 0x5e, 0x2f, 0xcc, 0x9d, 0x7b,
-0x05, 0x3a, 0x8e, 0xa2, 0xf6, 0x02, 0x3f, 0x80,
-0x8e, 0xbd, 0x83, 0xd0, 0xd1, 0xf1, 0x00, 0x9c,
-0x4e, 0x7f, 0x08, 0xbd, 0x0f, 0xf5, 0x42, 0xeb,
-0x5d, 0xad, 0xd0, 0x7b, 0xea, 0x22, 0x1c, 0x3b,
-0x7e, 0x02, 0xda, 0x0f, 0x4e, 0xc1, 0xc8, 0x8b,
-0xe3, 0x30, 0xf7, 0xf2, 0x8f, 0xe0, 0xf4, 0xa9,
-0xef, 0xc2, 0xd2, 0x1b, 0x4b, 0x90, 0xff, 0x20,
-0x0f, 0x75, 0x5b, 0xb7, 0x83, 0xfe, 0x73, 0x7a,
-0x18, 0x3f, 0x7f, 0x05, 0x82, 0x2f, 0xe2, 0xd8,
-0x3e, 0x8d, 0x9c, 0x84, 0xcf, 0xe3, 0xf8, 0x61,
-0x5f, 0xee, 0xb9, 0x07, 0x1a, 0xed, 0x7f, 0x06,
-0x23, 0xc9, 0x25, 0x68, 0xfc, 0xd2, 0x97, 0xa0,
-0xf9, 0xaf, 0x96, 0x61, 0xf0, 0x7b, 0x39, 0x68,
-0x7c, 0xe0, 0x49, 0xc8, 0x7f, 0x74, 0x19, 0x75,
-0x7a, 0x00, 0x06, 0x1f, 0x1b, 0x84, 0xb9, 0x37,
-0xf2, 0x30, 0x32, 0x32, 0x02, 0xf5, 0x77, 0xf5,
-0x42, 0xb3, 0x67, 0x14, 0x1c, 0x07, 0xc7, 0x61,
-0xe9, 0xbf, 0x91, 0xc7, 0xaf, 0x7e, 0x17, 0x46,
-0xce, 0x8c, 0x83, 0xf7, 0xb9, 0xf7, 0xa1, 0xae,
-0xf1, 0x7e, 0xe8, 0xf0, 0x0c, 0x42, 0xab, 0x6f,
-0x1c, 0x3a, 0x4e, 0xfd, 0x2f, 0xd4, 0xdf, 0x7b,
-0x1a, 0x1a, 0x7d, 0xf3, 0xb0, 0x84, 0x73, 0xe4,
-0xc4, 0x59, 0x2c, 0x3b, 0xb0, 0x0c, 0x4b, 0x6f,
-0x2d, 0xc3, 0xdc, 0xcf, 0x14, 0xe8, 0x7f, 0x11,
-0xfb, 0xbf, 0xad, 0x03, 0x5a, 0x0f, 0x2f, 0x43,
-0x6b, 0x0f, 0xf2, 0xfd, 0x90, 0x17, 0xf5, 0x82,
-0x7a, 0x7a, 0x74, 0x1e, 0xea, 0x7e, 0xaf, 0x11,
-0xbc, 0xa7, 0xe6, 0x41, 0x7f, 0x47, 0x3d, 0x38,
-0xbe, 0xbd, 0x0c, 0xf3, 0x3f, 0x59, 0x82, 0x63,
-0xa7, 0xa6, 0x90, 0x8f, 0x41, 0x68, 0xde, 0x3f,
-0x0f, 0xa7, 0x7f, 0x84, 0x5a, 0xdc, 0x3b, 0x04,
-0x5e, 0x9f, 0x0f, 0xa6, 0x26, 0x13, 0xd8, 0xa6,
-0x20, 0x9c, 0x98, 0x5e, 0x86, 0xf6, 0x07, 0xfb,
-0xa1, 0x1f, 0x39, 0x6e, 0xdc, 0xda, 0x08, 0xed,
-0xce, 0x76, 0xd4, 0xea, 0x3c, 0x6a, 0xe9, 0x1d,
-0xd4, 0x8c, 0x82, 0x1a, 0x19, 0x84, 0x11, 0x1c,
-0x9f, 0xea, 0xcf, 0xe1, 0x7c, 0x47, 0x9b, 0x43,
-0xcf, 0x3e, 0x0f, 0x5e, 0xe4, 0xc2, 0x23, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf0,
-0x19, 0xc2, 0x58, 0x2c, 0x16, 0x73, 0xde, 0xec,
-0x46, 0xdc, 0xc2, 0x70, 0x02, 0x40, 0xef, 0xcd,
-0x6e, 0xc4, 0x2d, 0x0c, 0xc2, 0xdf, 0xf4, 0xcd,
-0x6e, 0xc4, 0x2d, 0x8c, 0x7e, 0xe4, 0xcf, 0x72,
-0xb3, 0x1b, 0x71, 0x0b, 0x43, 0xcc, 0xdf, 0x6b,
-0x46, 0x70, 0xc6, 0xef, 0xd7, 0xed, 0xe3, 0x09,
-0x36, 0x7f, 0xe5, 0x86, 0x90, 0xce, 0x54, 0x2a,
-0x21, 0x37, 0x60, 0x09, 0x9e, 0x96, 0x65, 0xf5,
-0x45, 0x53, 0xec, 0x0b, 0x77, 0xfa, 0x42, 0x0d,
-0x6c, 0x47, 0x9b, 0x2d, 0xab, 0x47, 0x3d, 0x95,
-0x3b, 0x26, 0x9d, 0xdf, 0x54, 0x2c, 0x8e, 0xa9,
-0x90, 0xdf, 0xae, 0x39, 0x5f, 0x5f, 0xc8, 0x3f,
-0x63, 0xd2, 0x16, 0x57, 0x2d, 0x69, 0x0c, 0x55,
-0x18, 0xf4, 0x78, 0x66, 0x49, 0xad, 0x75, 0x4f,
-0xb8, 0x59, 0xc8, 0xa6, 0x2e, 0x49, 0xa0, 0x48,
-0xee, 0x54, 0x81, 0x9e, 0x88, 0xce, 0x5f, 0x43,
-0xa7, 0xa4, 0x48, 0xd1, 0x3c, 0xe7, 0x74, 0x9f,
-0x57, 0xdf, 0x95, 0x04, 0xc9, 0x1c, 0x9b, 0xc2,
-0x36, 0x5a, 0xf5, 0x69, 0x75, 0x1b, 0x96, 0x3d,
-0x3a, 0x57, 0x5a, 0xef, 0x25, 0xad, 0xac, 0xd2,
-0x4b, 0x49, 0x69, 0xd8, 0x20, 0xc7, 0xf5, 0x69,
-0xa7, 0xc7, 0xa3, 0xd3, 0xb3, 0x6c, 0x9b, 0x3e,
-0x1d, 0x27, 0xb4, 0x98, 0xac, 0x7a, 0x7d, 0x8e,
-0x98, 0x72, 0x62, 0xb5, 0x15, 0xfc, 0xb6, 0x8f,
-0xba, 0x93, 0x8a, 0x39, 0x67, 0x5f, 0x49, 0xeb,
-0xad, 0x41, 0x8f, 0xc1, 0xea, 0xc6, 0xf3, 0x75,
-0x75, 0xb2, 0x16, 0x78, 0xec, 0xf9, 0xb4, 0xa4,
-0x28, 0x92, 0xb9, 0xe0, 0x99, 0x71, 0xe9, 0xd3,
-0x19, 0x9a, 0xd7, 0xa4, 0xd7, 0x5b, 0x4d, 0xc4,
-0xb0, 0x3e, 0x4d, 0x0c, 0x67, 0xd2, 0x7a, 0x17,
-0x1d, 0x2e, 0xbf, 0x5e, 0xaf, 0x9f, 0xa4, 0x25,
-0xfc, 0xa3, 0x51, 0x29, 0xa9, 0x48, 0xe9, 0xd1,
-0x10, 0x39, 0x0f, 0x36, 0xc0, 0x49, 0xb3, 0xe3,
-0x69, 0x7d, 0xcf, 0xa6, 0xf2, 0x67, 0x03, 0x15,
-0x29, 0xd2, 0x55, 0xa2, 0xbf, 0x94, 0xc4, 0x32,
-0xe2, 0x54, 0x21, 0xa1, 0xb4, 0x5a, 0x40, 0xb2,
-0x7b, 0x82, 0xee, 0x62, 0x71, 0x30, 0xcb, 0x1e,
-0x7f, 0x12, 0xc0, 0x46, 0x8c, 0x28, 0xac, 0x40,
-0x04, 0x6b, 0x62, 0xbb, 0xfd, 0x0a, 0xcb, 0xae,
-0xc6, 0x2c, 0xd2, 0x4d, 0x3b, 0xd6, 0x8a, 0x11,
-0x5b, 0x11, 0x2c, 0x94, 0xc5, 0xf4, 0x7e, 0x66,
-0xc1, 0x95, 0xa1, 0x56, 0xb2, 0xaa, 0xc5, 0x51,
-0x59, 0x7b, 0xbe, 0x69, 0x8f, 0x0e, 0xcd, 0x8f,
-0xd2, 0x56, 0xa6, 0x00, 0xdc, 0xd8, 0x3c, 0x3f,
-0x30, 0xc3, 0xa3, 0x68, 0x78, 0x86, 0xe4, 0x8f,
-0xe1, 0x99, 0xf2, 0x64, 0xa7, 0x4a, 0x52, 0x8d,
-0x0c, 0x63, 0x6a, 0x17, 0x7e, 0x17, 0x48, 0xb6,
-0x8c, 0x67, 0xee, 0xdc, 0x54, 0xfe, 0xbc, 0xd8,
-0x14, 0xb3, 0x39, 0x49, 0xce, 0x1c, 0xc3, 0xe6,
-0x3b, 0x29, 0x13, 0xee, 0xcb, 0x7a, 0xf2, 0x3d,
-0x41, 0xfa, 0x6e, 0xc6, 0x9d, 0x74, 0x93, 0xad,
-0x3a, 0x4d, 0xb8, 0x30, 0x11, 0xfe, 0x14, 0xe9,
-0x17, 0x12, 0x22, 0x2d, 0x7b, 0x42, 0x8c, 0xa8,
-0x04, 0x56, 0x97, 0xaa, 0x6d, 0xc3, 0x49, 0x62,
-0xc6, 0x87, 0x14, 0x00, 0xeb, 0x15, 0xf2, 0xd7,
-0x55, 0xc6, 0x5f, 0x15, 0xe3, 0x6f, 0x94, 0x98,
-0x1c, 0x1d, 0x45, 0x8b, 0xf8, 0x2d, 0x7b, 0x7c,
-0x49, 0x7d, 0x93, 0x8d, 0x0e, 0x5a, 0x15, 0x96,
-0x25, 0xf4, 0x25, 0xf5, 0x29, 0xbd, 0x54, 0xf0,
-0xe8, 0xd0, 0x7c, 0xae, 0xc8, 0x1f, 0x4e, 0x07,
-0x1d, 0xe7, 0xaf, 0x09, 0xcf, 0xa7, 0xa3, 0xfc,
-0xf1, 0x33, 0x91, 0x66, 0x27, 0xad, 0x39, 0x5b,
-0xca, 0x4d, 0xf9, 0x2b, 0x14, 0xf9, 0xeb, 0x42,
-0xfe, 0x36, 0x75, 0x06, 0x67, 0x63, 0x59, 0xbb,
-0x2c, 0xeb, 0x72, 0x84, 0xb6, 0x04, 0xd3, 0x1f,
-0x51, 0xa2, 0x6c, 0x49, 0xb2, 0x36, 0xa2, 0x3e,
-0x95, 0xcc, 0x2c, 0x69, 0x8a, 0xa1, 0xda, 0x4e,
-0x29, 0x01, 0xf3, 0x98, 0x9d, 0x02, 0x89, 0x62,
-0xfa, 0xab, 0xc1, 0x4c, 0x32, 0x2d, 0x0b, 0x84,
-0x83, 0x0e, 0x8f, 0x4a, 0xab, 0xa7, 0x99, 0x6a,
-0x76, 0x95, 0xfe, 0x64, 0x3d, 0x80, 0x1e, 0xb5,
-0x6d, 0x22, 0xc6, 0xf4, 0x78, 0x38, 0xe1, 0xe1,
-0x7d, 0xc6, 0x42, 0x0e, 0x72, 0x02, 0x03, 0x76,
-0x79, 0xa6, 0xc1, 0xe3, 0x97, 0xb4, 0xfc, 0xad,
-0xa5, 0x3f, 0x32, 0x72, 0xc8, 0x9f, 0x8c, 0xa4,
-0xbb, 0xfb, 0x49, 0x86, 0xa9, 0x2a, 0xa7, 0xe5,
-0xcf, 0x23, 0x6d, 0xb6, 0xfe, 0xd4, 0xc1, 0x39,
-0x82, 0xa7, 0xac, 0x61, 0x03, 0xe9, 0xd6, 0xa9,
-0x19, 0x16, 0x8f, 0xc9, 0xcc, 0x74, 0xa9, 0x16,
-0x35, 0xc5, 0x31, 0xfb, 0x72, 0x90, 0x57, 0xe2,
-0x13, 0x35, 0xc3, 0xe7, 0xa9, 0x67, 0x02, 0x0f,
-0x8e, 0xb1, 0x6e, 0x72, 0xfd, 0x49, 0x6b, 0xe8,
-0x4f, 0xbe, 0x04, 0xd0, 0x4c, 0x92, 0x0d, 0x6e,
-0xca, 0x1f, 0x03, 0xd1, 0x56, 0x5c, 0x9e, 0x4d,
-0xf3, 0xb1, 0xa0, 0x59, 0x65, 0xf3, 0x57, 0xa3,
-0x3f, 0xc2, 0x5f, 0x1f, 0xc9, 0xe7, 0xf3, 0xd7,
-0xc7, 0xb4, 0x5b, 0x44, 0x99, 0xfe, 0xac, 0x37,
-0x92, 0xae, 0x75, 0x11, 0x06, 0x3a, 0xd6, 0x4e,
-0xe0, 0x5d, 0xa5, 0x6d, 0x68, 0xa2, 0x0d, 0xcc,
-0x6a, 0xcb, 0xcd, 0xa4, 0xf9, 0xc4, 0x26, 0xe0,
-0xfa, 0xcb, 0xaa, 0x8b, 0x6e, 0xb2, 0xe3, 0x2f,
-0x66, 0xaf, 0x9e, 0xbf, 0xdc, 0xff, 0x21, 0x1b,
-0x66, 0x2a, 0x9f, 0x18, 0x52, 0xc6, 0x2c, 0xc9,
-0xba, 0x18, 0x3d, 0x33, 0x61, 0x28, 0xad, 0x8e,
-0x69, 0xf9, 0xfc, 0x35, 0x95, 0xf4, 0xd7, 0xa4,
-0xf5, 0x7f, 0x0e, 0xda, 0x78, 0x77, 0x83, 0xa6,
-0x91, 0xbb, 0xe0, 0x53, 0x9b, 0xbf, 0x1c, 0xb3,
-0x2e, 0xa6, 0x19, 0x12, 0x7f, 0x59, 0xc8, 0x4b,
-0x60, 0xd3, 0x52, 0x94, 0x4f, 0x0c, 0x76, 0x2e,
-0x3d, 0xd9, 0xe2, 0xa4, 0x8d, 0x63, 0xc4, 0x05,
-0x86, 0x59, 0x2d, 0xae, 0x3f, 0x13, 0x0a, 0x2a,
-0xd9, 0x93, 0x35, 0x24, 0x08, 0x3f, 0xa1, 0x52,
-0x37, 0x9b, 0xd7, 0xd6, 0x9f, 0x27, 0x8b, 0xd5,
-0xa2, 0x19, 0x67, 0xa2, 0xe3, 0x08, 0xe7, 0x6f,
-0x26, 0x6c, 0xa5, 0xfe, 0xbf, 0x8a, 0x2a, 0x49,
-0x1d, 0x1d, 0x8f, 0x4e, 0xaa, 0x88, 0x1f, 0x5a,
-0xfd, 0x31, 0xff, 0xc7, 0xe6, 0xef, 0x28, 0x71,
-0x99, 0x2e, 0xde, 0xcc, 0x89, 0x4a, 0xff, 0xf7,
-0x29, 0xb0, 0x67, 0xb0, 0x92, 0x78, 0xe1, 0x64,
-0xfa, 0x9b, 0x2c, 0x36, 0x7e, 0xb8, 0x14, 0x1b,
-0x69, 0x7c, 0xa5, 0x63, 0xee, 0xc4, 0x03, 0x49,
-0xda, 0xba, 0xa2, 0xd0, 0x12, 0xe9, 0x52, 0x21,
-0x3f, 0xf3, 0x7f, 0xea, 0xfc, 0x5d, 0xc3, 0xff,
-0xa1, 0x5e, 0x08, 0x5b, 0x2c, 0x66, 0x13, 0xfe,
-0x22, 0x2c, 0x78, 0x4a, 0x36, 0xd9, 0x43, 0xfe,
-0x77, 0xbc, 0xd1, 0x22, 0x7f, 0x4a, 0xc5, 0xfc,
-0xd5, 0xea, 0x8f, 0xf2, 0x97, 0x60, 0xa3, 0xde,
-0xa3, 0x6d, 0x65, 0x67, 0xa5, 0xff, 0xdb, 0x6c,
-0xfd, 0xd9, 0x2d, 0x71, 0x7a, 0x62, 0x57, 0x90,
-0xf1, 0x47, 0x17, 0x04, 0x1e, 0x03, 0xee, 0x1d,
-0xf1, 0xf8, 0xb0, 0x0b, 0xf1, 0xcb, 0x29, 0xdc,
-0xd2, 0xac, 0x0b, 0x88, 0x5e, 0x64, 0xcd, 0x6d,
-0x20, 0x7b, 0xea, 0x42, 0xc5, 0xb3, 0xcf, 0x12,
-0x4b, 0xbb, 0xdd, 0x6e, 0x6c, 0xad, 0x12, 0x2a,
-0xc5, 0x0f, 0xe4, 0x4f, 0x21, 0xdd, 0xdc, 0xa7,
-0xae, 0x22, 0xb8, 0xfe, 0xb0, 0x84, 0xcd, 0x1a,
-0xc5, 0xf2, 0x49, 0xca, 0xdf, 0x18, 0xa5, 0xcf,
-0xdc, 0x64, 0xe0, 0x67, 0x8d, 0x15, 0xf9, 0x93,
-0xd4, 0xc4, 0x6a, 0xfd, 0x91, 0x38, 0xc5, 0x26,
-0x49, 0x9e, 0x06, 0xb9, 0xe4, 0x30, 0x36, 0x32,
-0x75, 0xb9, 0x8b, 0xd6, 0x28, 0x30, 0x67, 0xfe,
-0xa9, 0xe8, 0x6f, 0xd6, 0x62, 0x66, 0xe3, 0x96,
-0x46, 0xe5, 0x50, 0xfe, 0xe2, 0x74, 0xc0, 0x2c,
-0xb8, 0xf7, 0x84, 0x67, 0x46, 0x52, 0x47, 0x12,
-0xdb, 0xe8, 0x62, 0x35, 0xe4, 0x3c, 0x1e, 0x8a,
-0x12, 0x62, 0x54, 0xfd, 0xd1, 0x5c, 0x93, 0xdd,
-0x8e, 0xb5, 0x93, 0xfe, 0x92, 0x4c, 0xaa, 0x99,
-0xa6, 0x3d, 0x0d, 0x68, 0xc4, 0x4c, 0x16, 0x93,
-0xaa, 0xfe, 0x08, 0x4c, 0x58, 0xbe, 0x99, 0xf6,
-0x8e, 0x84, 0x6f, 0xbd, 0x93, 0x5d, 0xdf, 0x60,
-0x51, 0xc5, 0xad, 0x5e, 0xfa, 0x10, 0xfd, 0x45,
-0x69, 0x22, 0x5e, 0xee, 0xff, 0x08, 0x7f, 0x64,
-0x1d, 0x4d, 0xa7, 0x3b, 0xfa, 0xbf, 0x69, 0xee,
-0x68, 0x3d, 0x9e, 0x34, 0x4d, 0x17, 0xd4, 0x51,
-0x30, 0x6d, 0xba, 0xfe, 0xe4, 0x1e, 0x36, 0x8f,
-0xdc, 0x36, 0x7a, 0x01, 0x45, 0xe2, 0xaf, 0x42,
-0xfa, 0x6c, 0x72, 0xb1, 0x39, 0x80, 0x5f, 0x29,
-0xd2, 0x80, 0xa0, 0x5e, 0xf5, 0xe5, 0xa4, 0x0e,
-0x51, 0xab, 0x49, 0xa3, 0x3f, 0x1d, 0x3b, 0x30,
-0xc9, 0x26, 0xac, 0x3a, 0x7f, 0x91, 0x1e, 0x20,
-0xab, 0xff, 0x84, 0x6a, 0x94, 0x2c, 0xd6, 0x71,
-0x7d, 0xe8, 0xb1, 0xb3, 0x8b, 0x35, 0x19, 0x69,
-0xa9, 0xf6, 0x78, 0xc8, 0x70, 0x44, 0x54, 0xd3,
-0x9d, 0x25, 0xef, 0x4a, 0xe3, 0x2f, 0x3d, 0x42,
-0x02, 0xf5, 0xa5, 0x60, 0xd9, 0xfa, 0x8f, 0xae,
-0x80, 0xe8, 0x6a, 0xc7, 0xc2, 0x88, 0xa6, 0xbf,
-0x7a, 0x24, 0x24, 0x7a, 0x82, 0x02, 0x56, 0x4c,
-0x92, 0x0b, 0x11, 0x9f, 0x56, 0xce, 0x9b, 0x82,
-0x08, 0xa5, 0x4f, 0xef, 0xe5, 0xe1, 0x8b, 0xae,
-0xff, 0xdc, 0x91, 0x19, 0x3f, 0x5d, 0xe8, 0xd9,
-0xe9, 0xd0, 0x02, 0x52, 0x6b, 0xc7, 0x26, 0x27,
-0x71, 0x9d, 0xe6, 0x8b, 0x44, 0x22, 0x55, 0x11,
-0xaf, 0xc4, 0xa2, 0xb5, 0xaa, 0xbf, 0xa0, 0xbe,
-0xc7, 0x30, 0x2b, 0xcb, 0x2b, 0x66, 0x26, 0x5e,
-0xad, 0xfe, 0x94, 0xf0, 0x8c, 0xff, 0x32, 0x31,
-0x1a, 0x75, 0xda, 0x9d, 0x24, 0xf4, 0x90, 0x75,
-0xc7, 0x4a, 0xd4, 0x8b, 0x57, 0xaa, 0xf6, 0x3c,
-0xeb, 0x3d, 0x39, 0x05, 0x59, 0x72, 0xce, 0x38,
-0x65, 0x16, 0xc2, 0x93, 0x39, 0xbf, 0xdd, 0x5f,
-0x25, 0x53, 0x5a, 0xc0, 0x3d, 0xdd, 0x40, 0x63,
-0xf3, 0x11, 0x4f, 0xb9, 0xfe, 0x20, 0x95, 0xb0,
-0x67, 0xd1, 0xa0, 0x42, 0xa6, 0x3d, 0x16, 0xe8,
-0x2a, 0xcc, 0xca, 0x21, 0x17, 0xe3, 0xb5, 0x40,
-0xe7, 0x93, 0xd3, 0x9e, 0xd0, 0xab, 0x42, 0xdd,
-0x2c, 0xd0, 0xf1, 0x8e, 0x3a, 0x8b, 0x12, 0x27,
-0xfa, 0x8b, 0xaa, 0xbe, 0x9d, 0x9e, 0x99, 0x74,
-0x3e, 0xd9, 0x9e, 0xe4, 0x7e, 0x5d, 0xe3, 0xa9,
-0x63, 0x25, 0xfd, 0xcd, 0x46, 0xc9, 0x55, 0x0c,
-0x75, 0x63, 0x64, 0x1d, 0xa3, 0x89, 0x1f, 0xee,
-0x2e, 0x66, 0x2b, 0x39, 0xcc, 0x6b, 0xd1, 0xd5,
-0xd8, 0x14, 0xe1, 0x85, 0x5e, 0xf4, 0x10, 0xaf,
-0xd6, 0x40, 0x1c, 0x88, 0x62, 0xee, 0x52, 0xc8,
-0x1c, 0x97, 0x27, 0xd4, 0x60, 0xb5, 0x8f, 0xfa,
-0x3f, 0x37, 0x6b, 0x0a, 0xd3, 0xaf, 0x36, 0xfe,
-0x76, 0xf1, 0x72, 0xd4, 0xdb, 0xe8, 0xc8, 0xc8,
-0x48, 0xc4, 0x4e, 0x12, 0xaf, 0xd2, 0x29, 0x7f,
-0xdc, 0x2b, 0x41, 0x97, 0x6e, 0x33, 0xf9, 0x23,
-0xeb, 0xe3, 0xa4, 0xaf, 0x94, 0x26, 0xfa, 0xcb,
-0xb2, 0xbe, 0x26, 0xd9, 0x74, 0xdd, 0x17, 0x63,
-0x3d, 0x48, 0x4e, 0x04, 0x19, 0x25, 0x1a, 0xfe,
-0x8a, 0xfa, 0x73, 0xf1, 0xbc, 0x64, 0x8e, 0x5e,
-0xc2, 0x26, 0x8b, 0xeb, 0x97, 0x78, 0x96, 0x5e,
-0x31, 0x2b, 0x36, 0x13, 0x33, 0xe3, 0xa6, 0xd7,
-0x1a, 0x2b, 0xea, 0xd5, 0x6a, 0x3b, 0x5d, 0x2a,
-0x1b, 0xa2, 0x9c, 0x32, 0x32, 0xad, 0x83, 0xa3,
-0x3c, 0x1a, 0xeb, 0xa8, 0xfe, 0x9a, 0x32, 0x2c,
-0x49, 0x0d, 0x6b, 0xe2, 0x6f, 0xd4, 0xc9, 0x08,
-0x32, 0x53, 0x83, 0x9e, 0xc4, 0x7e, 0xd6, 0xca,
-0x2e, 0xba, 0x0e, 0x25, 0xfc, 0xf5, 0xb3, 0xa0,
-0x28, 0x45, 0x3c, 0x9b, 0x09, 0xca, 0x9f, 0x66,
-0x84, 0x74, 0xe1, 0x4c, 0xb8, 0x6f, 0x76, 0x3a,
-0xe6, 0xea, 0xa4, 0xe1, 0x90, 0x40, 0x5e, 0x69,
-0xea, 0x74, 0x75, 0xda, 0x18, 0xc9, 0xd9, 0x4c,
-0x26, 0xe3, 0x08, 0x67, 0x08, 0x30, 0x10, 0x34,
-0xe0, 0x1e, 0x65, 0xc0, 0xe4, 0xcc, 0xa7, 0xe2,
-0xae, 0x94, 0x8d, 0xd5, 0x51, 0xf5, 0x97, 0xcd,
-0x38, 0x22, 0x1e, 0xbf, 0xad, 0x33, 0x1e, 0xc3,
-0xb2, 0x72, 0xb6, 0x3a, 0x6e, 0xcd, 0x85, 0xf8,
-0x69, 0x22, 0x13, 0x9d, 0x2e, 0x6b, 0xcc, 0x3b,
-0xc3, 0x92, 0x76, 0x4b, 0x2c, 0xee, 0x1a, 0x9e,
-0xb0, 0xb0, 0xc0, 0x31, 0x66, 0x1b, 0x8e, 0xc7,
-0x53, 0x79, 0x3b, 0x5f, 0xff, 0x19, 0x46, 0xad,
-0xf1, 0x6a, 0x16, 0x75, 0xec, 0xe1, 0x8c, 0x83,
-0x9c, 0xcf, 0x99, 0xc9, 0x4c, 0xca, 0x0d, 0xe1,
-0x94, 0xab, 0x33, 0xdf, 0xa7, 0x76, 0x64, 0x3a,
-0x86, 0x95, 0x6a, 0x58, 0x57, 0xfc, 0xd8, 0x3c,
-0xbb, 0x29, 0x82, 0x39, 0xc5, 0x5e, 0x6c, 0x12,
-0x88, 0x0b, 0x57, 0xd6, 0xf8, 0xc1, 0x59, 0x2e,
-0x0f, 0x5a, 0x9f, 0x24, 0x84, 0x95, 0xaa, 0xa8,
-0x32, 0xa9, 0xac, 0x5d, 0x6e, 0xb4, 0xc2, 0x66,
-0xf9, 0x31, 0x9a, 0x2a, 0xae, 0xff, 0xd6, 0x3b,
-0x7d, 0x45, 0x23, 0x57, 0x15, 0xfb, 0x14, 0xae,
-0x3c, 0x32, 0x44, 0xe3, 0xe1, 0x90, 0xce, 0x60,
-0x49, 0x5d, 0x8f, 0xa3, 0x58, 0xb3, 0x85, 0xaa,
-0xfe, 0x7e, 0x53, 0x94, 0xae, 0x7f, 0x3f, 0xbb,
-0xb0, 0x97, 0x2e, 0x1d, 0xae, 0x5d, 0xea, 0xfe,
-0x74, 0x34, 0x1a, 0x5e, 0x23, 0xbb, 0x42, 0x7f,
-0xd7, 0x8b, 0xd2, 0xf5, 0x87, 0x9a, 0x11, 0x5d,
-0xf3, 0x7c, 0x37, 0x15, 0x7e, 0xab, 0xca, 0x5f,
-0xd5, 0xc6, 0x85, 0x2b, 0xeb, 0x26, 0xd7, 0x24,
-0xea, 0x86, 0xe9, 0x4f, 0xaa, 0xe4, 0xef, 0x06,
-0x0d, 0xcc, 0x0d, 0xc5, 0x6c, 0xb6, 0xda, 0x15,
-0xbd, 0xe4, 0x4a, 0x65, 0xfa, 0x36, 0x2e, 0x5b,
-0x01, 0xf5, 0x42, 0xad, 0x02, 0x37, 0x52, 0x7f,
-0x39, 0x6d, 0xc6, 0x8d, 0x32, 0x7c, 0xa3, 0x21,
-0x9b, 0x82, 0xd7, 0xe5, 0x6a, 0x67, 0xaa, 0x63,
-0xb1, 0x35, 0xd6, 0x07, 0x7e, 0x49, 0x92, 0x6e,
-0x8c, 0xfe, 0x24, 0xa9, 0x8c, 0xbf, 0x99, 0xd8,
-0x9a, 0xe7, 0xfb, 0x6d, 0x83, 0x6c, 0xb7, 0xdb,
-0x4d, 0x1b, 0x17, 0xfb, 0xd4, 0xec, 0x08, 0x08,
-0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-0x5c, 0x37, 0x82, 0xf6, 0x90, 0xcf, 0xe9, 0x9c,
-0x2a, 0x7f, 0xa9, 0xd0, 0x66, 0x4c, 0xad, 0xca,
-0x9c, 0x52, 0x13, 0xb8, 0x4d, 0xb1, 0x2f, 0x6d,
-0x4d, 0x35, 0x67, 0xbd, 0x97, 0x73, 0x8d, 0x9c,
-0xf5, 0x8a, 0xac, 0x55, 0xbd, 0x7f, 0xe5, 0x8c,
-0xef, 0x8c, 0x8a, 0xd2, 0x5e, 0x65, 0xce, 0xea,
-0x23, 0xc5, 0x12, 0xdb, 0x3e, 0xda, 0xf7, 0x1b,
-0xfd, 0xa4, 0x15, 0x5c, 0xc9, 0xa5, 0xdd, 0x92,
-0xa2, 0xd0, 0x1f, 0xe8, 0x8b, 0x2f, 0x2d, 0x2a,
-0x92, 0xab, 0xa1, 0x68, 0xb6, 0x0d, 0x4a, 0xf3,
-0x42, 0x1b, 0x64, 0x5c, 0xc5, 0x48, 0x45, 0x69,
-0x50, 0x94, 0xba, 0x3b, 0x2f, 0x5c, 0xa8, 0xfd,
-0x0b, 0xba, 0xd5, 0x5e, 0xa8, 0x25, 0xfb, 0x17,
-0x6a, 0xd9, 0x86, 0x19, 0xf8, 0xbe, 0xc0, 0xde,
-0x9a, 0xd7, 0x05, 0x56, 0xb4, 0x96, 0x16, 0xa8,
-0xfd, 0xc1, 0xfc, 0x0f, 0x1f, 0x3f, 0xf9, 0xcb,
-0xeb, 0x64, 0xcf, 0x17, 0x73, 0xaf, 0xd3, 0xd0,
-0x5b, 0x09, 0x75, 0x8f, 0xd4, 0xee, 0x26, 0x1b,
-0xa2, 0x76, 0xf7, 0x7c, 0x71, 0x4f, 0xcd, 0xac,
-0xad, 0x48, 0x14, 0xf7, 0x6a, 0xe9, 0x17, 0x25,
-0xf2, 0x9b, 0xcf, 0x5d, 0xfb, 0x4f, 0x25, 0x9e,
-0x44, 0x6a, 0x43, 0x6d, 0xdd, 0x22, 0xa8, 0xbb,
-0x30, 0xf0, 0xfe, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0,
-0xd6, 0x01, 0xc4, 0xce, 0x79, 0xdc, 0xdd, 0x49,
-0xf6, 0x71, 0x6f, 0x60, 0x7e, 0x27, 0x49, 0xe1,
-0x8b, 0x95, 0xa0, 0xaf, 0xad, 0xb4, 0xe4, 0xb9,
-0x81, 0x81, 0xdd, 0x58, 0x6e, 0x9e, 0xb2, 0x38,
-0xff, 0xdc, 0xd2, 0xb5, 0xb1, 0xd7, 0xd0, 0x23,
-0x6d, 0xdc, 0xb0, 0x5b, 0x06, 0x77, 0x9e, 0xbb,
-0x82, 0xa0, 0x1f, 0x57, 0xbe, 0x4e, 0xdf, 0x6c,
-0xbf, 0x98, 0x49, 0x73, 0xaf, 0x68, 0xf2, 0x68,
-0x89, 0x73, 0x57, 0xce, 0x91, 0x17, 0x92, 0xbe,
-0xbb, 0xf6, 0x87, 0x27, 0xaf, 0xc5, 0x13, 0x1a,
-0xf4, 0x37, 0xbb, 0xcb, 0x37, 0x14, 0xca, 0x8e,
-0x73, 0x0b, 0x5b, 0x16, 0xf6, 0xec, 0x79, 0x61,
-0xcf, 0x0b, 0x0b, 0xaf, 0xd1, 0x6d, 0x0f, 0x49,
-0x63, 0x72, 0x0f, 0xfb, 0xc4, 0xed, 0x2e, 0x9a,
-0xfd, 0x1a, 0x49, 0xd3, 0x4c, 0x5a, 0x60, 0x61,
-0xcb, 0x96, 0x2d, 0x84, 0x50, 0x54, 0x65, 0xed,
-0xbd, 0xf6, 0x8d, 0x79, 0xe3, 0xd8, 0x65, 0xde,
-0xb8, 0x4d, 0xb7, 0x16, 0x76, 0x7c, 0x7d, 0xfb,
-0x75, 0xe1, 0xf0, 0xf6, 0x05, 0xa4, 0xf1, 0xf6,
-0x2b, 0x57, 0x50, 0x83, 0xa7, 0x3f, 0x69, 0x20,
-0xf1, 0x76, 0x49, 0xbf, 0x2d, 0xbe, 0xaf, 0x08,
-0x65, 0xcb, 0x1d, 0xd7, 0x85, 0x43, 0x77, 0x1c,
-0xba, 0x6f, 0xfb, 0xc2, 0x0b, 0x5b, 0x6e, 0xc7,
-0x79, 0xbc, 0xf5, 0xd7, 0x9f, 0x88, 0xbe, 0x6c,
-0x7b, 0x97, 0x04, 0xc9, 0x9b, 0xdd, 0xe1, 0x1b,
-0x8d, 0x1d, 0x7b, 0x0e, 0x70, 0xb4, 0xe1, 0x76,
-0x55, 0xb4, 0x95, 0x76, 0xda, 0x5e, 0x7f, 0xfd,
-0x75, 0x24, 0x71, 0xfb, 0xf6, 0x17, 0x5e, 0xc3,
-0x59, 0xfc, 0xcf, 0x9f, 0xe4, 0x9f, 0x1c, 0x3b,
-0xd2, 0x66, 0xf7, 0x6f, 0x9f, 0xfe, 0x00, 0x7e,
-0x71, 0x87, 0xf1, 0x77, 0x8d, 0x15, 0x08, 0x94,
-0x27, 0xbf, 0x6f, 0xac, 0x2c, 0xb2, 0x78, 0xc0,
-0x88, 0x34, 0xbe, 0x8e, 0x0c, 0x1e, 0x7e, 0xed,
-0xf6, 0x73, 0x3b, 0x1f, 0xdf, 0xd8, 0x07, 0x36,
-0x74, 0x46, 0xa3, 0xf4, 0x4e, 0xbb, 0x6b, 0x83,
-0x3b, 0x66, 0x71, 0xfa, 0x7c, 0x85, 0x7c, 0xfc,
-0xb3, 0xcb, 0xfc, 0x23, 0xc6, 0xc0, 0x62, 0x00,
-0x29, 0xc3, 0xcf, 0x45, 0xfa, 0x69, 0x5c, 0x34,
-0x92, 0xdd, 0x45, 0x9e, 0x63, 0x5c, 0xe4, 0x7b,
-0xa5, 0xcd, 0x48, 0x8a, 0x20, 0x83, 0x07, 0x08,
-0x83, 0x0b, 0x5b, 0xae, 0xbc, 0xff, 0x95, 0x0d,
-0xa3, 0xb0, 0x2d, 0xad, 0xff, 0xb2, 0x59, 0x2a,
-0x13, 0x60, 0x57, 0x76, 0x2a, 0x11, 0x1a, 0x0b,
-0x85, 0xa6, 0x59, 0x52, 0x9a, 0xce, 0x76, 0x8c,
-0x8d, 0x85, 0xc6, 0x7c, 0xa5, 0x25, 0x4e, 0xd4,
-0xa2, 0x0e, 0x8c, 0x1c, 0x6a, 0x2a, 0x72, 0x9f,
-0xda, 0xb5, 0x42, 0xaa, 0xe1, 0x8b, 0xa1, 0x13,
-0xd2, 0x59, 0x67, 0xc2, 0x8f, 0x55, 0xfd, 0xc5,
-0xbc, 0x50, 0x28, 0x52, 0xd1, 0x4d, 0x62, 0x1d,
-0xb3, 0x55, 0xeb, 0xf9, 0x82, 0x81, 0x24, 0xd9,
-0x2d, 0xab, 0x5d, 0x05, 0x67, 0x82, 0x55, 0x25,
-0x16, 0x88, 0x19, 0xda, 0x26, 0x73, 0x81, 0x9a,
-0x55, 0x1b, 0x98, 0xee, 0xa7, 0x85, 0xc6, 0x2c,
-0x15, 0x96, 0xb7, 0x2c, 0xb6, 0xcc, 0x2d, 0xb6,
-0x04, 0x16, 0xe7, 0x8c, 0x73, 0x8b, 0xb8, 0x05,
-0x5a, 0x02, 0x01, 0x7c, 0x2f, 0x06, 0xe6, 0x16,
-0x49, 0xb2, 0x25, 0x30, 0x47, 0x3e, 0xf9, 0x41,
-0xfc, 0xa4, 0xc7, 0x28, 0xd3, 0x28, 0xc3, 0x36,
-0x46, 0xe0, 0xb9, 0x47, 0x37, 0xa0, 0x6f, 0x8c,
-0xdc, 0x15, 0xfc, 0x65, 0xb7, 0xa4, 0x15, 0xa0,
-0x7b, 0x17, 0xbb, 0x5b, 0x71, 0x8c, 0x91, 0xaa,
-0x44, 0x0a, 0x94, 0x2d, 0x93, 0x7a, 0x4b, 0x93,
-0x94, 0x2b, 0xfb, 0x57, 0x9b, 0xb1, 0x38, 0xcf,
-0x8f, 0x45, 0x12, 0x65, 0xc3, 0xd5, 0x03, 0x97,
-0x76, 0xf9, 0x56, 0xfd, 0x03, 0x8f, 0xbf, 0xa2,
-0x97, 0xaa, 0x75, 0xbe, 0x06, 0x08, 0x4f, 0xb3,
-0xc5, 0x7f, 0x5c, 0xdb, 0x12, 0xcd, 0xc9, 0x38,
-0x7f, 0x34, 0x3b, 0xc1, 0x29, 0x0f, 0xcd, 0xd2,
-0xa1, 0xb4, 0x55, 0x58, 0x96, 0xda, 0x16, 0x91,
-0xa2, 0x16, 0xca, 0x8e, 0x71, 0xae, 0xa5, 0x05,
-0xc9, 0x6a, 0x09, 0xb4, 0x50, 0xe2, 0x8c, 0xc8,
-0x26, 0x39, 0x64, 0x2c, 0x52, 0x48, 0x8f, 0x52,
-0x2a, 0x17, 0x89, 0x0e, 0x8d, 0x28, 0xc1, 0xfb,
-0x16, 0x5e, 0xbb, 0x72, 0x7a, 0xe4, 0xea, 0xfc,
-0x35, 0xb9, 0x3a, 0xad, 0xae, 0x74, 0xbb, 0x94,
-0xd4, 0x10, 0x28, 0x15, 0xce, 0xd3, 0x2e, 0xe9,
-0x58, 0x5e, 0xb2, 0xb7, 0x8a, 0xde, 0xfd, 0x37,
-0xdb, 0xae, 0xea, 0x91, 0xb3, 0x34, 0x1b, 0x9c,
-0xa5, 0x7b, 0x26, 0x7e, 0xd7, 0x5a, 0x2a, 0x62,
-0x98, 0xe5, 0x66, 0xe9, 0x03, 0x70, 0x39, 0xc5,
-0x9d, 0xed, 0x2f, 0xf6, 0x5f, 0xe6, 0x98, 0xa9,
-0xd4, 0x5f, 0x84, 0xde, 0x25, 0x34, 0xcb, 0x6f,
-0xb2, 0x72, 0x58, 0x74, 0xd4, 0xe8, 0x30, 0x6b,
-0xc9, 0x14, 0x17, 0xba, 0xcc, 0x5f, 0x7e, 0x7a,
-0x57, 0x5b, 0x61, 0x8a, 0xde, 0x2a, 0xac, 0x63,
-0xed, 0x71, 0xf6, 0xb1, 0x66, 0x5c, 0xaa, 0xb0,
-0x0c, 0x3b, 0xe7, 0x5a, 0x8c, 0x84, 0xab, 0x16,
-0x26, 0xb7, 0x45, 0xc2, 0x18, 0x61, 0xd0, 0x48,
-0xb8, 0x63, 0x94, 0x19, 0x8b, 0x6f, 0xb6, 0x51,
-0x0a, 0x71, 0xa6, 0x07, 0x08, 0x81, 0x87, 0x50,
-0x81, 0x27, 0xaf, 0x4a, 0x9f, 0xc1, 0x35, 0x9c,
-0x4a, 0x59, 0xf7, 0x63, 0x04, 0xd1, 0x5c, 0x8b,
-0x4b, 0x55, 0xbb, 0x68, 0xab, 0x67, 0xf8, 0x94,
-0xb2, 0xb0, 0x1e, 0xca, 0x69, 0x7e, 0x94, 0x91,
-0x64, 0xea, 0x4b, 0xf8, 0x0c, 0x63, 0x0d, 0xf4,
-0xd9, 0x19, 0x46, 0x60, 0x67, 0x95, 0xa1, 0x95,
-0x1d, 0x9a, 0xd1, 0x7d, 0x4d, 0xa7, 0xd3, 0xd9,
-0xa0, 0x6b, 0x2a, 0xcb, 0xfb, 0x6f, 0xea, 0xd3,
-0xf9, 0xd9, 0xe6, 0xaf, 0xf0, 0x98, 0x96, 0x48,
-0x83, 0x5c, 0xb2, 0x0e, 0x79, 0xce, 0x1f, 0xb9,
-0x27, 0x12, 0x94, 0x02, 0xaf, 0x2f, 0xdb, 0x69,
-0x65, 0x9d, 0x8e, 0xdc, 0x41, 0x5a, 0x1c, 0xe0,
-0x06, 0x5a, 0x23, 0xce, 0x9e, 0x2d, 0x94, 0x9d,
-0xab, 0x5c, 0xb1, 0xd4, 0x46, 0xb9, 0xe2, 0x1c,
-0x51, 0x95, 0x2d, 0x32, 0x32, 0x71, 0xe3, 0x74,
-0xd1, 0xcf, 0x40, 0x0b, 0xd7, 0x1f, 0x27, 0x31,
-0x40, 0xdd, 0x60, 0x1b, 0x2a, 0x70, 0xcb, 0xff,
-0x5c, 0x35, 0x84, 0xe4, 0xad, 0xb1, 0xe6, 0x58,
-0xca, 0x15, 0xc5, 0x08, 0x5c, 0x12, 0x60, 0x92,
-0x4f, 0x29, 0x3b, 0xe7, 0xcf, 0x1b, 0x61, 0x71,
-0x9c, 0x5d, 0xa4, 0x64, 0x98, 0xc1, 0x7d, 0x89,
-0x2a, 0x6f, 0x26, 0xec, 0xcd, 0xfa, 0x09, 0x81,
-0x26, 0x72, 0x9b, 0x25, 0xb8, 0x0a, 0x3e, 0xfa,
-0xe4, 0x8c, 0xac, 0xcb, 0xf6, 0x5a, 0x2c, 0x96,
-0xde, 0x3c, 0x24, 0x77, 0x59, 0xc6, 0xf8, 0x8d,
-0xcb, 0x2b, 0x11, 0x0b, 0x83, 0xb3, 0xe2, 0x4a,
-0xd1, 0xdb, 0xcb, 0xac, 0x73, 0x2f, 0x90, 0xb3,
-0xf8, 0x29, 0x7f, 0x6c, 0x48, 0xaa, 0x76, 0xb1,
-0x1b, 0x5f, 0xed, 0xfd, 0xd3, 0xac, 0xf6, 0x14,
-0xe5, 0xaf, 0x8a, 0xd1, 0x6a, 0xa2, 0x8c, 0xd5,
-0x84, 0xd8, 0x43, 0x9d, 0x13, 0xb0, 0x0a, 0x5b,
-0x02, 0x8c, 0x3d, 0x42, 0x10, 0x9b, 0xa8, 0xb8,
-0x17, 0x50, 0x69, 0x22, 0x07, 0x56, 0xeb, 0x8f,
-0x6d, 0xc4, 0x0d, 0x22, 0x81, 0xdb, 0x17, 0x6e,
-0xff, 0xdb, 0xab, 0xd0, 0x67, 0x4a, 0xa5, 0x7a,
-0x9a, 0xde, 0x4a, 0xc5, 0xd3, 0x65, 0x0e, 0x50,
-0x99, 0x66, 0x13, 0x56, 0x7d, 0x1a, 0x10, 0x5d,
-0x92, 0x5c, 0xec, 0xa1, 0xb5, 0x8f, 0xca, 0xcf,
-0x94, 0x38, 0x3f, 0x15, 0xd9, 0x65, 0xb1, 0x39,
-0x22, 0x21, 0xc2, 0x99, 0x9f, 0xf8, 0xc6, 0x74,
-0x61, 0x85, 0x91, 0xe5, 0x8f, 0xd4, 0x84, 0xc3,
-0x61, 0xaf, 0x03, 0xa0, 0x90, 0xaf, 0xf2, 0xb3,
-0xf2, 0x63, 0x11, 0x6f, 0x4d, 0x8d, 0x37, 0x5c,
-0xe3, 0x75, 0x56, 0xfc, 0xca, 0x13, 0xe6, 0xfc,
-0x75, 0xb2, 0x64, 0x93, 0x85, 0xd1, 0x41, 0x9f,
-0x18, 0x83, 0x08, 0x6b, 0x89, 0xa7, 0xc1, 0x59,
-0x43, 0x4c, 0x86, 0xc3, 0xf4, 0x52, 0x49, 0x1d,
-0xe0, 0x20, 0x21, 0x33, 0x69, 0xe0, 0x45, 0xd6,
-0xb8, 0x88, 0x7a, 0xc4, 0x48, 0xb9, 0x33, 0x6a,
-0x94, 0x85, 0x19, 0x8c, 0xc1, 0x16, 0x23, 0xe1,
-0x72, 0x4e, 0xa5, 0x93, 0xd2, 0xd6, 0xc2, 0x4a,
-0x2d, 0x92, 0x32, 0x18, 0x9c, 0x0f, 0xb4, 0x1d,
-0xda, 0xbe, 0xe5, 0x5b, 0x57, 0xe1, 0xcf, 0xd0,
-0xd9, 0x3c, 0x6a, 0xcb, 0xf5, 0x58, 0xd3, 0x18,
-0x81, 0x93, 0x45, 0xf9, 0x2b, 0x7c, 0xc2, 0xce,
-0xf2, 0x16, 0x65, 0x78, 0x0f, 0x53, 0xe4, 0x98,
-0x93, 0x3e, 0x43, 0x2b, 0xf7, 0xf9, 0x7a, 0x70,
-0xd1, 0x9d, 0xaa, 0x0a, 0x3b, 0x0a, 0xf4, 0x20,
-0xb9, 0x53, 0x3b, 0xca, 0xbd, 0xbd, 0x2e, 0xc6,
-0x80, 0x7a, 0xcd, 0x84, 0x1d, 0xbb, 0xc8, 0x7c,
-0x6c, 0xa8, 0x4e, 0x11, 0x5c, 0x26, 0xef, 0x8a,
-0x69, 0x86, 0xd6, 0x65, 0xd5, 0x3a, 0xa2, 0x7a,
-0x7a, 0x8c, 0x26, 0xf3, 0x34, 0xa5, 0xba, 0x8e,
-0x1c, 0x37, 0x19, 0xa3, 0xbf, 0x12, 0x29, 0xdc,
-0x23, 0x93, 0xc7, 0x27, 0x21, 0x15, 0x62, 0x4f,
-0x0a, 0x57, 0xad, 0xa6, 0x0f, 0x94, 0xb6, 0x80,
-0x51, 0x9d, 0xaa, 0x34, 0x82, 0x90, 0x8f, 0x40,
-0x31, 0x8a, 0x68, 0xf4, 0x47, 0x75, 0xc9, 0xb2,
-0xb0, 0xc8, 0x22, 0x0d, 0x2f, 0x24, 0x88, 0xdc,
-0x77, 0x78, 0xe1, 0x2a, 0x13, 0x38, 0x9c, 0x6a,
-0x7a, 0x26, 0xf3, 0xcc, 0x44, 0xbd, 0xde, 0x5c,
-0x36, 0x81, 0x2d, 0x11, 0x1a, 0x03, 0x55, 0x97,
-0xf4, 0x4c, 0x96, 0xf1, 0x47, 0x5c, 0xd2, 0x70,
-0x82, 0x7a, 0xee, 0x59, 0x1f, 0xe3, 0x56, 0xca,
-0x84, 0x6b, 0x0c, 0xa4, 0xfd, 0x33, 0xee, 0x52,
-0x58, 0x0c, 0x95, 0x3a, 0x20, 0x4d, 0x66, 0x1c,
-0xe7, 0x09, 0xe3, 0xd9, 0x75, 0x57, 0x98, 0x36,
-0x6e, 0x9d, 0x07, 0xa1, 0xbb, 0xb3, 0x6c, 0xfe,
-0x86, 0xcb, 0x5a, 0x52, 0xf1, 0xfb, 0x46, 0x6f,
-0x84, 0x69, 0x8e, 0x34, 0x62, 0x9a, 0x95, 0x9f,
-0x3d, 0xb2, 0x96, 0xf1, 0x3d, 0x45, 0xfd, 0x51,
-0x95, 0xb5, 0xd0, 0x65, 0x8c, 0xaa, 0xbf, 0xa2,
-0x22, 0x55, 0xfd, 0x19, 0x79, 0x1e, 0x9d, 0xe3,
-0x64, 0x2d, 0x73, 0x60, 0x19, 0x67, 0xf0, 0xe7,
-0xd7, 0xe7, 0xef, 0xad, 0x98, 0xad, 0x66, 0x32,
-0x9c, 0xbb, 0x3b, 0x8e, 0x2b, 0x18, 0xcd, 0x0c,
-0x0e, 0x47, 0x98, 0x24, 0xf8, 0x6d, 0xcb, 0x79,
-0xf6, 0x2c, 0x38, 0x7d, 0xfc, 0xcf, 0x6b, 0xa0,
-0x2e, 0xce, 0xae, 0xae, 0x59, 0x92, 0x11, 0x47,
-0xd5, 0x0c, 0xef, 0x7e, 0x17, 0x8f, 0x96, 0x3a,
-0x4d, 0x07, 0xdc, 0xd3, 0x8e, 0xb0, 0x93, 0x04,
-0x88, 0xca, 0xc5, 0x59, 0x89, 0x3f, 0xfe, 0x70,
-0xfb, 0x28, 0x4b, 0xa6, 0x74, 0x6c, 0xbc, 0x59,
-0x79, 0xd5, 0x75, 0x58, 0xcb, 0xeb, 0xa8, 0x1e,
-0x99, 0x3c, 0xb4, 0xc3, 0x9f, 0x4c, 0xd7, 0xad,
-0xf9, 0x03, 0xdc, 0x4e, 0xad, 0x77, 0x6b, 0x99,
-0x53, 0x43, 0x09, 0xe5, 0x4c, 0x13, 0x7b, 0x35,
-0x25, 0xd4, 0xa0, 0xdc, 0x42, 0xa3, 0x08, 0xce,
-0xe0, 0x85, 0x3f, 0x5a, 0x97, 0x3e, 0x39, 0x56,
-0xed, 0xb0, 0x44, 0x2c, 0xcf, 0x54, 0x5b, 0xd3,
-0x18, 0x41, 0xa4, 0xe2, 0xef, 0xe1, 0x99, 0x72,
-0x97, 0x94, 0xe3, 0xeb, 0x95, 0x27, 0x50, 0x4f,
-0xd9, 0x0e, 0x9a, 0x28, 0x2d, 0x82, 0xf5, 0x85,
-0x49, 0x2a, 0x80, 0x42, 0xc9, 0xad, 0xdb, 0xb5,
-0x33, 0xd4, 0x5c, 0xf5, 0x8c, 0x77, 0xc5, 0x2e,
-0xb3, 0xa7, 0x6a, 0xd6, 0x42, 0x13, 0xb7, 0xce,
-0x1f, 0xb2, 0xb6, 0xf2, 0x24, 0x9b, 0x8e, 0x61,
-0x4b, 0xc9, 0x75, 0x68, 0x50, 0x33, 0x5d, 0x8c,
-0x39, 0x13, 0x7c, 0x81, 0xb4, 0xf6, 0xf8, 0x5c,
-0xd0, 0x04, 0x57, 0x1e, 0x39, 0x5a, 0x68, 0x28,
-0x61, 0x81, 0x39, 0xc0, 0xdf, 0xc6, 0x62, 0x58,
-0x69, 0x09, 0x18, 0x35, 0x14, 0x06, 0x02, 0x6d,
-0x7f, 0xb9, 0xfd, 0xc9, 0x75, 0xf9, 0x33, 0xa5,
-0x9a, 0x6a, 0x0a, 0xe7, 0x23, 0xe1, 0x89, 0x94,
-0x8b, 0x0a, 0x50, 0x55, 0x60, 0xbe, 0x97, 0xcd,
-0x89, 0x19, 0x1d, 0x85, 0xea, 0x00, 0x32, 0xe4,
-0xa1, 0x89, 0x31, 0x1a, 0x0e, 0x2e, 0x17, 0x5b,
-0xa8, 0x58, 0xbc, 0x09, 0x92, 0x85, 0x8b, 0x45,
-0x29, 0xc2, 0xd6, 0x3d, 0xa6, 0xb2, 0xb9, 0x9a,
-0x2e, 0xd8, 0xbc, 0x06, 0xfb, 0x1a, 0xf1, 0xb1,
-0x33, 0x6b, 0xf0, 0x6b, 0xac, 0xdb, 0xd9, 0xc9,
-0xf8, 0x2d, 0xe3, 0xfc, 0xc9, 0x3a, 0x07, 0x8f,
-0xc6, 0x0d, 0x3a, 0x15, 0x74, 0x4c, 0x1d, 0x7c,
-0x82, 0x78, 0x73, 0xa3, 0x09, 0x5e, 0xbe, 0x42,
-0xa1, 0x1c, 0x77, 0x2e, 0xf2, 0x90, 0x1b, 0x60,
-0x34, 0x1a, 0xf9, 0x64, 0xe5, 0xe1, 0x57, 0x15,
-0x5c, 0xf1, 0x7b, 0xae, 0x18, 0x80, 0x89, 0x33,
-0x9c, 0x23, 0x21, 0xe4, 0xc7, 0xdf, 0x5b, 0x97,
-0xbf, 0x99, 0x54, 0xce, 0x72, 0xfe, 0xcc, 0x79,
-0x4b, 0xee, 0x6e, 0x8c, 0x20, 0xee, 0x2e, 0x45,
-0x0d, 0x21, 0x36, 0xde, 0xea, 0x0a, 0xd4, 0x60,
-0x9f, 0x0b, 0xd4, 0xbb, 0xcb, 0x9a, 0x18, 0x3a,
-0xd1, 0x4b, 0x25, 0x69, 0x72, 0x93, 0x0b, 0x15,
-0xe6, 0xd6, 0xcb, 0xa7, 0x92, 0xb5, 0xca, 0x36,
-0x49, 0x7c, 0xa4, 0xa9, 0x42, 0x44, 0xc3, 0xa5,
-0xe5, 0xf6, 0x1a, 0xf0, 0xad, 0xd3, 0x12, 0xba,
-0x2e, 0xcc, 0x5b, 0xfc, 0x15, 0xc5, 0xe5, 0xe9,
-0x35, 0x7f, 0xc3, 0xac, 0x0b, 0xb4, 0xa8, 0xdc,
-0xb4, 0x14, 0x99, 0x2a, 0xb1, 0x56, 0xcc, 0x53,
-0xbf, 0xf0, 0x13, 0x6b, 0xb0, 0x17, 0xa5, 0x33,
-0xb0, 0x7c, 0xe8, 0xe8, 0xba, 0xd7, 0xc0, 0xfe,
-0xd4, 0x13, 0xd3, 0xfd, 0x06, 0x5f, 0xc4, 0x31,
-0x31, 0xec, 0xba, 0xd4, 0x4e, 0x66, 0x30, 0x53,
-0x4e, 0xd3, 0x74, 0x48, 0xf3, 0x07, 0x2c, 0x8a,
-0x7f, 0xa3, 0x02, 0x2f, 0x37, 0x8f, 0x44, 0x7e,
-0x4d, 0xd7, 0x7b, 0x1a, 0x85, 0x75, 0x66, 0xa9,
-0x24, 0x65, 0xbc, 0x7e, 0xb0, 0xf0, 0xb0, 0x58,
-0xd1, 0x95, 0x58, 0x24, 0xdf, 0x9b, 0x30, 0x69,
-0x9c, 0x26, 0x43, 0x3c, 0xb2, 0x62, 0x22, 0xe6,
-0x4b, 0xcd, 0xd3, 0x9e, 0xcc, 0x40, 0xcb, 0x8c,
-0x5a, 0xd4, 0x96, 0xd0, 0xbf, 0xea, 0x81, 0x1f,
-0xe4, 0xd9, 0x2c, 0xc8, 0x45, 0x8a, 0xd9, 0xac,
-0x92, 0x87, 0xfc, 0x10, 0xb2, 0x06, 0x7f, 0x3b,
-0xbe, 0xaf, 0xa5, 0x2e, 0xc0, 0xc3, 0xeb, 0x9c,
-0x3a, 0xa1, 0x99, 0x36, 0xcb, 0x3c, 0xa0, 0xb1,
-0x85, 0xd1, 0xca, 0x60, 0x0c, 0x2c, 0xbf, 0xb4,
-0x37, 0xe8, 0x59, 0x07, 0x7d, 0x29, 0x5b, 0xc4,
-0x37, 0x96, 0x40, 0x01, 0xc6, 0xd0, 0x03, 0x9a,
-0xdd, 0xea, 0x22, 0xa6, 0x27, 0x32, 0xc6, 0xff,
-0xd6, 0x85, 0x0e, 0xaf, 0x17, 0xc8, 0x1f, 0x27,
-0xa1, 0x49, 0x74, 0x71, 0xa9, 0x69, 0xdf, 0xff,
-0xb7, 0x73, 0xfe, 0x31, 0x6d, 0x5c, 0x77, 0x00,
-0x2f, 0x23, 0x2c, 0xcd, 0x0d, 0x29, 0x6c, 0x66,
-0x4d, 0xd5, 0x45, 0xaa, 0xa9, 0x5b, 0x9b, 0x90,
-0x46, 0x4a, 0x9b, 0x55, 0x48, 0x07, 0x9c, 0xab,
-0x35, 0x5b, 0x07, 0x0d, 0x14, 0x95, 0x0e, 0xea,
-0x0a, 0xe1, 0x4c, 0xb3, 0xbc, 0x5a, 0x49, 0x6b,
-0x05, 0x7b, 0x5a, 0xb4, 0x2d, 0xd5, 0xa4, 0xfc,
-0x31, 0x6d, 0x19, 0x71, 0xb4, 0x69, 0x6b, 0x94,
-0x36, 0x26, 0xaa, 0x32, 0xc9, 0x57, 0x8d, 0x06,
-0x31, 0x1b, 0xbb, 0x06, 0x2a, 0x36, 0xa0, 0x56,
-0x7a, 0xaa, 0x2a, 0x57, 0x1b, 0x12, 0x95, 0xe9,
-0xb6, 0x2e, 0x51, 0x40, 0x5a, 0x16, 0xab, 0x62,
-0x33, 0xd1, 0xc0, 0xdb, 0xf7, 0xfb, 0x7e, 0x9c,
-0xcf, 0x10, 0x08, 0x99, 0xba, 0xfe, 0xf5, 0xfd,
-0xbc, 0x77, 0xef, 0xee, 0x7d, 0xdf, 0xf7, 0x7d,
-0xef, 0xf9, 0xeb, 0xf7, 0xee, 0xde, 0x3b, 0xff,
-0x60, 0xfe, 0xb3, 0xf4, 0xb0, 0x6a, 0x8d, 0xf5,
-0x05, 0xbc, 0x59, 0x8b, 0xd9, 0x46, 0xdf, 0xda,
-0x85, 0x94, 0xcb, 0x09, 0xd3, 0xc4, 0x94, 0xf8,
-0x71, 0xb5, 0xc9, 0x4b, 0x95, 0x6e, 0x1d, 0x6c,
-0x07, 0x92, 0x72, 0x89, 0x92, 0x0c, 0xb0, 0x93,
-0xa9, 0xec, 0x64, 0x6c, 0xa1, 0x76, 0xd7, 0x25,
-0x27, 0xbf, 0x5e, 0xf4, 0xa9, 0x58, 0x08, 0xad,
-0x51, 0x62, 0xfc, 0x0d, 0xd6, 0xe5, 0x3f, 0x9b,
-0xa0, 0x38, 0xc9, 0xaa, 0xa8, 0xb7, 0xf8, 0x10,
-0xa2, 0x56, 0xdc, 0x26, 0xe4, 0x3c, 0x1a, 0x73,
-0x3c, 0xc3, 0xaf, 0x6f, 0xd3, 0x72, 0xd0, 0x4e,
-0x97, 0x7c, 0x86, 0xd2, 0x69, 0x51, 0x30, 0x7d,
-0xe4, 0xed, 0xbf, 0xff, 0xee, 0xe6, 0x46, 0xfe,
-0x53, 0x1f, 0x6e, 0xa8, 0x2c, 0x2c, 0x06, 0xfd,
-0x95, 0xcd, 0xdd, 0x30, 0x87, 0x1e, 0xf4, 0xf0,
-0x6b, 0x60, 0x7a, 0x65, 0x28, 0xc2, 0x2e, 0x69,
-0x7d, 0xa9, 0x40, 0x11, 0xe7, 0xfc, 0xa3, 0x95,
-0xfc, 0x45, 0x68, 0x30, 0xe6, 0x7a, 0xf9, 0xca,
-0xc9, 0xd2, 0xd4, 0x0e, 0x3e, 0x7f, 0xc5, 0xc9,
-0xa2, 0xbc, 0x2d, 0xf6, 0xac, 0x7d, 0x19, 0x0d,
-0xbe, 0xe6, 0x22, 0xce, 0xa3, 0x75, 0xeb, 0xdc,
-0x79, 0x30, 0x12, 0x62, 0x4b, 0x8a, 0x88, 0x70,
-0x91, 0x62, 0xc0, 0x1a, 0x63, 0xd4, 0x59, 0x69,
-0xe3, 0x93, 0x48, 0xfe, 0x9f, 0x15, 0xe2, 0x91,
-0x44, 0x06, 0x5a, 0xc2, 0x56, 0x20, 0x11, 0xf6,
-0x90, 0x60, 0x9b, 0x78, 0x83, 0x53, 0x41, 0x26,
-0x8e, 0xf8, 0x59, 0xa3, 0x6c, 0xeb, 0x9f, 0xa5,
-0xed, 0x39, 0xb2, 0x7f, 0xba, 0xe4, 0x18, 0xcb,
-0xe8, 0x45, 0x2f, 0x09, 0xef, 0x1d, 0xd9, 0x2f,
-0x9d, 0xc6, 0xae, 0x79, 0xa5, 0x0a, 0x15, 0xd3,
-0xd3, 0x9d, 0x9d, 0x47, 0x9e, 0x7b, 0x63, 0x23,
-0xf7, 0xf5, 0xa5, 0xba, 0x1b, 0x22, 0x05, 0x45,
-0xd1, 0xef, 0x77, 0x36, 0x0c, 0x5d, 0xe8, 0x81,
-0x4b, 0x20, 0x38, 0xd0, 0xbb, 0xb2, 0x92, 0x9e,
-0x2c, 0xda, 0x78, 0xab, 0x83, 0x11, 0x1f, 0x83,
-0xaf, 0x2b, 0xe0, 0x92, 0x54, 0x1d, 0xe1, 0x13,
-0xb2, 0x1b, 0xa5, 0x26, 0xc6, 0xf8, 0x02, 0x03,
-0x7f, 0x84, 0x2a, 0xe7, 0x3d, 0xeb, 0x46, 0x92,
-0xd7, 0x17, 0xba, 0x9c, 0xc5, 0x99, 0x88, 0xe5,
-0x19, 0xd8, 0x5d, 0x75, 0xc6, 0x0e, 0xab, 0xf5,
-0x8c, 0xe2, 0xe6, 0x59, 0xb1, 0xb6, 0x65, 0x9a,
-0xf2, 0x91, 0x44, 0x4a, 0xb6, 0x04, 0x17, 0x35,
-0xcc, 0xad, 0x5c, 0x0c, 0xab, 0x1a, 0xdf, 0x8e,
-0xd0, 0x92, 0x18, 0xe5, 0x17, 0xd6, 0xf9, 0xef,
-0xc5, 0xe9, 0x4d, 0xd8, 0x5f, 0xb1, 0x7f, 0xbd,
-0x4c, 0x38, 0xae, 0xa2, 0x02, 0x52, 0x4c, 0x3a,
-0xaf, 0x6c, 0x32, 0x7f, 0x71, 0xdd, 0xa8, 0xb4,
-0x2d, 0x27, 0x95, 0x44, 0x71, 0xc7, 0x8d, 0xa1,
-0x8e, 0x1e, 0x1c, 0xc2, 0x5d, 0xe0, 0x41, 0xb8,
-0x4b, 0xf0, 0x56, 0x87, 0xd9, 0xa2, 0x61, 0xb2,
-0x3b, 0xcb, 0x9f, 0xa2, 0xe8, 0xb8, 0x72, 0xf7,
-0xe1, 0x95, 0xac, 0x2f, 0x68, 0xfa, 0x61, 0x25,
-0xce, 0x06, 0x4f, 0xc6, 0x96, 0x66, 0xb7, 0x45,
-0x66, 0x77, 0x68, 0xdd, 0xeb, 0xf0, 0xf6, 0x86,
-0x7c, 0x1a, 0xf6, 0xd3, 0xa2, 0xac, 0x08, 0x93,
-0xa5, 0x0b, 0xcc, 0xfa, 0xb6, 0x38, 0x9f, 0x75,
-0x27, 0x87, 0xf8, 0xd9, 0x0c, 0xb1, 0xb6, 0x65,
-0x5d, 0xb5, 0xde, 0xcd, 0x5b, 0xe2, 0x9f, 0x94,
-0xb0, 0x4b, 0xc0, 0x64, 0x65, 0x81, 0x8f, 0x08,
-0x26, 0x72, 0xb9, 0x7b, 0xb9, 0xff, 0x46, 0xd7,
-0x9e, 0x76, 0xe5, 0x6b, 0x7f, 0x01, 0x77, 0xbc,
-0x72, 0xe4, 0x8b, 0x47, 0x3a, 0x65, 0x97, 0xea,
-0x14, 0xfe, 0x61, 0x61, 0x83, 0x23, 0xb9, 0x03,
-0x0e, 0x9f, 0x3a, 0xf5, 0xc0, 0x86, 0xfe, 0xeb,
-0x6b, 0x8e, 0xf5, 0xda, 0x94, 0x5c, 0x32, 0xe8,
-0x8f, 0x5c, 0x76, 0x4d, 0x82, 0x03, 0xf7, 0x41,
-0x17, 0x04, 0x0f, 0x0e, 0x67, 0xd9, 0x55, 0x0e,
-0xe6, 0x10, 0x6c, 0x44, 0xc8, 0x75, 0x85, 0x02,
-0xb7, 0x17, 0x5f, 0xc8, 0x60, 0xc3, 0x35, 0x06,
-0xc7, 0x2c, 0x76, 0xf0, 0x6b, 0x63, 0x2a, 0x04,
-0xba, 0x4b, 0x11, 0xb9, 0xf6, 0x4f, 0x63, 0x19,
-0x06, 0x54, 0xc1, 0xbb, 0x92, 0xc7, 0x88, 0x64,
-0x15, 0x34, 0xea, 0x83, 0xec, 0x0a, 0x93, 0xa5,
-0xb9, 0x75, 0x8f, 0xa1, 0xf1, 0x87, 0x51, 0xdc,
-0xb3, 0x69, 0x39, 0x09, 0xaa, 0x43, 0x23, 0xd5,
-0x59, 0xfe, 0x48, 0x42, 0xe3, 0x73, 0xd3, 0x15,
-0xfc, 0x9c, 0x06, 0xae, 0xd1, 0xf2, 0x0d, 0x76,
-0xa3, 0x30, 0x7d, 0xd7, 0xa4, 0xce, 0x2f, 0xa1,
-0x7e, 0x2c, 0xe3, 0x01, 0xcf, 0x01, 0xbb, 0x77,
-0xc0, 0x05, 0x4f, 0xfe, 0xa8, 0xd6, 0x5b, 0xfb,
-0xa5, 0xf3, 0xe8, 0x0d, 0xe6, 0x92, 0x8a, 0x0a,
-0xd1, 0xbb, 0xa6, 0x6f, 0x71, 0xc4, 0x54, 0xa6,
-0x57, 0x2b, 0x2a, 0x56, 0x51, 0x71, 0x61, 0x61,
-0xe1, 0xb1, 0xc7, 0x36, 0x59, 0x7f, 0x64, 0x2f,
-0xf9, 0xfc, 0x8a, 0xaa, 0x2e, 0xeb, 0x5a, 0xef,
-0x92, 0xeb, 0x89, 0xfa, 0xe1, 0x29, 0xe8, 0x82,
-0x57, 0x3d, 0x9e, 0x9e, 0x2c, 0xbf, 0x06, 0x69,
-0xde, 0x34, 0x06, 0x8f, 0x11, 0x16, 0x43, 0x2a,
-0xed, 0x9d, 0x8c, 0xc0, 0x5c, 0x24, 0x83, 0x93,
-0x91, 0x34, 0xfe, 0x1f, 0x52, 0x7a, 0x90, 0xff,
-0xe2, 0x2f, 0xa3, 0xd6, 0x43, 0x21, 0xdc, 0x16,
-0x59, 0x2e, 0x06, 0x37, 0xf2, 0x34, 0xaf, 0x0b,
-0x2a, 0x69, 0x4c, 0xbc, 0x53, 0x87, 0xf8, 0x8d,
-0x21, 0xb3, 0x04, 0x6e, 0x49, 0xb3, 0x72, 0xae,
-0xd2, 0xe5, 0x16, 0xd6, 0xbb, 0x78, 0x5e, 0x4e,
-0x82, 0xa6, 0x40, 0x27, 0x3d, 0xa5, 0xf1, 0x77,
-0xd2, 0xef, 0xe5, 0xfa, 0x60, 0x0a, 0xab, 0x0e,
-0xbb, 0xf9, 0x32, 0x48, 0x43, 0x99, 0xf9, 0x1e,
-0xf6, 0x1d, 0x82, 0x42, 0x50, 0xe4, 0x67, 0x66,
-0xf1, 0x7c, 0xc5, 0xf4, 0xb1, 0x6b, 0x9f, 0xfb,
-0xee, 0xdb, 0xdf, 0x3f, 0xd6, 0xf8, 0x68, 0x45,
-0x39, 0xab, 0xb7, 0x38, 0x2e, 0x97, 0xad, 0x2e,
-0xb4, 0xb6, 0x46, 0x5f, 0x7f, 0xed, 0xcc, 0xc6,
-0xfe, 0x73, 0x74, 0x87, 0xee, 0x0f, 0xa8, 0xe0,
-0xc0, 0x44, 0xdc, 0xb9, 0xe4, 0x1a, 0xea, 0x18,
-0xae, 0x9e, 0xda, 0x07, 0x83, 0xb8, 0x47, 0xe3,
-0x8f, 0x8d, 0x13, 0x5e, 0xc6, 0x55, 0xb1, 0x2e,
-0xb3, 0x43, 0xd7, 0xf4, 0x14, 0x43, 0x95, 0x8b,
-0xec, 0x16, 0xdc, 0x5c, 0xe7, 0xf5, 0x76, 0x4d,
-0x8a, 0x79, 0x98, 0xaa, 0xe1, 0xc0, 0x8f, 0x15,
-0xf9, 0x38, 0x6a, 0xf6, 0x76, 0xf1, 0x9a, 0xde,
-0xae, 0x29, 0x93, 0x6d, 0xf2, 0x1f, 0xc6, 0x2e,
-0x79, 0xcb, 0xf0, 0xb8, 0xb9, 0x75, 0x15, 0xec,
-0x5d, 0x83, 0xd8, 0xcb, 0xfd, 0xd7, 0x57, 0x8d,
-0x36, 0x06, 0x45, 0x4b, 0x82, 0xd5, 0x60, 0xe1,
-0xa5, 0xa9, 0x29, 0xd8, 0x61, 0x1d, 0xf9, 0x06,
-0x1f, 0x42, 0x41, 0x75, 0x87, 0xf8, 0x65, 0x59,
-0x46, 0xf3, 0xf2, 0xbf, 0x3e, 0x32, 0x79, 0xab,
-0x73, 0xe1, 0x9d, 0xda, 0xf3, 0x4f, 0x5e, 0x59,
-0x7d, 0xe5, 0xe5, 0x97, 0x1b, 0x3f, 0xbf, 0xba,
-0xba, 0x5a, 0xc1, 0x7a, 0x16, 0xee, 0xf9, 0xb6,
-0xb0, 0x6a, 0x61, 0xa1, 0x62, 0x81, 0xc9, 0x17,
-0x40, 0xbc, 0x80, 0xb4, 0x46, 0x67, 0x27, 0x0e,
-0x7c, 0x65, 0x63, 0xf7, 0xc1, 0xa2, 0xa9, 0xc1,
-0x48, 0xe4, 0xec, 0x76, 0x55, 0x29, 0xc4, 0x9d,
-0xcd, 0xb1, 0xa1, 0xdd, 0xf5, 0x3d, 0xd0, 0xa0,
-0x7f, 0xf6, 0xc4, 0x79, 0xab, 0x03, 0x1e, 0x06,
-0x8c, 0x5f, 0xfe, 0xb8, 0x08, 0x46, 0xb7, 0x67,
-0x5b, 0xd1, 0x17, 0x67, 0x03, 0xb1, 0x4f, 0xf5,
-0x1b, 0x72, 0x72, 0xab, 0x2a, 0x93, 0x50, 0xd4,
-0xe5, 0x12, 0xfe, 0xf3, 0x79, 0x24, 0x3d, 0x36,
-0xdd, 0x7e, 0x34, 0x95, 0x4a, 0xe1, 0x26, 0xe7,
-0x79, 0x01, 0x4f, 0x19, 0x57, 0xc5, 0xc3, 0xd0,
-0xa3, 0x53, 0x2c, 0xdb, 0x35, 0x5a, 0xe4, 0xff,
-0x92, 0x76, 0x01, 0x73, 0x83, 0x61, 0xf1, 0x01,
-0x40, 0x26, 0x95, 0xc1, 0x98, 0xc9, 0xd8, 0x50,
-0x0c, 0xc3, 0xba, 0x24, 0x36, 0x27, 0x90, 0xea,
-0x65, 0xcf, 0x1a, 0x7e, 0xb3, 0xd0, 0x79, 0xed,
-0xc9, 0x57, 0xbc, 0xe7, 0x17, 0x8e, 0xed, 0x39,
-0xfc, 0xe8, 0x8b, 0x87, 0x17, 0xee, 0x04, 0xe8,
-0x7b, 0xd1, 0x9d, 0x13, 0xcf, 0x3c, 0xf3, 0xe0,
-0x66, 0xfe, 0x33, 0x5c, 0x4e, 0xff, 0xb2, 0x6a,
-0xb7, 0xe7, 0x94, 0x82, 0xd6, 0x7b, 0xf9, 0x27,
-0xdd, 0x43, 0x17, 0xea, 0xa1, 0x0f, 0x0e, 0x8b,
-0x77, 0x3d, 0x59, 0x77, 0xb0, 0x0e, 0xa3, 0xe8,
-0x7f, 0x99, 0xea, 0x83, 0x90, 0xc3, 0x87, 0x98,
-0x4a, 0xd9, 0xa7, 0x12, 0x29, 0x55, 0x77, 0xc2,
-0xb8, 0xaf, 0xab, 0xfb, 0xd8, 0xe0, 0xd3, 0x8a,
-0x48, 0xdd, 0x41, 0x11, 0x86, 0x35, 0xdb, 0xba,
-0x0f, 0x40, 0x1c, 0x75, 0x75, 0xac, 0x4c, 0x24,
-0x83, 0xd2, 0xfa, 0xf0, 0x55, 0x26, 0x19, 0x29,
-0xf2, 0x49, 0xe4, 0x36, 0xcc, 0x0c, 0x86, 0xf3,
-0x6b, 0xea, 0x2b, 0x83, 0x50, 0x47, 0x0e, 0x90,
-0xb2, 0x56, 0xe4, 0x94, 0xfa, 0x3a, 0x8e, 0x3c,
-0xfb, 0xe0, 0x73, 0xad, 0xef, 0xed, 0x69, 0x3d,
-0xd5, 0x78, 0xfe, 0x4a, 0xe3, 0x7b, 0xad, 0x87,
-0x1b, 0xaf, 0xb4, 0x72, 0x06, 0x2c, 0x29, 0xee,
-0xc4, 0x51, 0x39, 0x03, 0xd1, 0xd9, 0x9d, 0x13,
-0x1f, 0x8c, 0x7f, 0xf4, 0x78, 0xfb, 0x66, 0xfe,
-0xb3, 0x5f, 0x6a, 0x36, 0x82, 0xd0, 0x01, 0xa1,
-0x07, 0x26, 0xc2, 0x11, 0xdf, 0x92, 0x6b, 0xdb,
-0xe4, 0xee, 0xfa, 0xfa, 0xfa, 0x70, 0x58, 0xc5,
-0x37, 0xd6, 0x21, 0x86, 0x9e, 0x11, 0x4f, 0xb2,
-0xf7, 0xb9, 0x03, 0x33, 0x3d, 0x06, 0x38, 0x50,
-0x57, 0xcd, 0xee, 0x94, 0xb1, 0x27, 0x0b, 0x5a,
-0x35, 0xd3, 0xeb, 0xce, 0x26, 0xec, 0xa0, 0x96,
-0x32, 0xcc, 0x41, 0x3b, 0x9c, 0xf7, 0xab, 0x99,
-0x12, 0xcc, 0x8a, 0xa3, 0x7a, 0xaa, 0x8c, 0x62,
-0x96, 0x5b, 0xff, 0x17, 0xcf, 0x8e, 0x18, 0x0a,
-0xcb, 0xc6, 0x58, 0x2e, 0xcf, 0x5b, 0x52, 0x22,
-0xd9, 0x83, 0x6d, 0xd0, 0x84, 0xd9, 0x94, 0x48,
-0x52, 0x29, 0x55, 0xd1, 0x9d, 0x53, 0x6b, 0xf8,
-0xf9, 0x40, 0xf4, 0x9d, 0xef, 0x44, 0x4f, 0x79,
-0xef, 0xde, 0x93, 0x3e, 0x76, 0x38, 0x5a, 0xfb,
-0xa7, 0x81, 0x81, 0xe8, 0x40, 0x14, 0x18, 0x60,
-0x1b, 0x0b, 0x48, 0x94, 0x6d, 0x66, 0xca, 0x75,
-0xc0, 0x7b, 0xc7, 0xc7, 0x7f, 0x3d, 0x33, 0xf3,
-0xc9, 0x66, 0xee, 0xeb, 0xeb, 0x8b, 0xdf, 0x38,
-0x0d, 0x77, 0x10, 0x7b, 0xca, 0x9e, 0x5b, 0x0e,
-0xfa, 0xb3, 0xce, 0x50, 0x43, 0xac, 0x1b, 0xe6,
-0x11, 0x79, 0x4d, 0x5f, 0xc4, 0x95, 0x41, 0xfd,
-0x70, 0x0f, 0x86, 0xa2, 0x51, 0xc0, 0x95, 0x41,
-0x72, 0x88, 0x65, 0x77, 0x1b, 0x95, 0xa3, 0x86,
-0x3f, 0x00, 0x95, 0xb0, 0xed, 0x6a, 0x52, 0xf7,
-0xe7, 0x77, 0xb3, 0x82, 0xe1, 0x6e, 0x2d, 0xaf,
-0xe3, 0xe7, 0x14, 0x1a, 0xcb, 0x61, 0xbc, 0x10,
-0xd6, 0xf4, 0x00, 0x47, 0x11, 0x5b, 0x40, 0xe9,
-0x60, 0x85, 0x32, 0x19, 0xae, 0x74, 0x27, 0x98,
-0xf5, 0x6e, 0x2e, 0xf2, 0x15, 0x6d, 0x4c, 0xab,
-0x99, 0x15, 0x6b, 0xf1, 0xc4, 0x62, 0xc0, 0x82,
-0x12, 0xe8, 0x00, 0x69, 0x7d, 0x38, 0xab, 0x2b,
-0x8b, 0x01, 0xfe, 0x89, 0xca, 0x22, 0x46, 0xdd,
-0xe6, 0x8f, 0x77, 0xf0, 0xd6, 0x4a, 0xcb, 0x3d,
-0xc3, 0xf7, 0x46, 0x67, 0xef, 0xf9, 0x73, 0xf4,
-0xb1, 0xc6, 0x7b, 0x7e, 0xf0, 0x8f, 0xda, 0x6f,
-0xce, 0xd6, 0x3e, 0x35, 0x3b, 0x1b, 0xdd, 0x39,
-0x1b, 0xc5, 0x84, 0xa5, 0x6c, 0xdb, 0x69, 0xee,
-0x67, 0x4b, 0xdb, 0xce, 0x89, 0x89, 0x13, 0x1f,
-0x8c, 0x3f, 0x32, 0xb3, 0xeb, 0xc3, 0x4f, 0x36,
-0xed, 0x7e, 0xd0, 0xeb, 0x1b, 0x9a, 0x0d, 0x3d,
-0x69, 0x07, 0x07, 0xaa, 0xc9, 0xc5, 0x42, 0xd8,
-0xed, 0xdc, 0xb1, 0xd4, 0xe0, 0xfa, 0x38, 0x9f,
-0x65, 0x5f, 0x96, 0xd5, 0xe5, 0x94, 0xac, 0x98,
-0xcd, 0x42, 0xd6, 0xd6, 0xc0, 0xb3, 0x0f, 0xbb,
-0xfd, 0x91, 0xac, 0xe6, 0xd7, 0x71, 0x3d, 0x15,
-0x2c, 0xf8, 0x6d, 0x59, 0xa1, 0x36, 0x19, 0x0b,
-0x1b, 0xf1, 0xac, 0x06, 0x75, 0xcd, 0xd9, 0xda,
-0x90, 0xdf, 0x9d, 0x15, 0xdf, 0xe0, 0xcd, 0x62,
-0xc4, 0xcc, 0xa1, 0xee, 0xc9, 0x32, 0xdc, 0xe5,
-0xd6, 0x9d, 0x06, 0xcb, 0xe6, 0x7d, 0x2c, 0x97,
-0x2f, 0xf2, 0x4a, 0x26, 0x36, 0x7c, 0x92, 0xfd,
-0x84, 0x10, 0x67, 0x35, 0xb1, 0x8b, 0x67, 0x4b,
-0xad, 0x30, 0xf9, 0xe3, 0xc4, 0x89, 0x13, 0xf7,
-0x36, 0x1e, 0x78, 0xe8, 0xda, 0x53, 0x07, 0x1e,
-0x7a, 0xeb, 0x9e, 0x37, 0xae, 0xbd, 0x36, 0x31,
-0x71, 0x1c, 0xe2, 0x89, 0x13, 0x13, 0x98, 0x4e,
-0x40, 0x80, 0x23, 0xcc, 0xc0, 0xfe, 0x38, 0x66,
-0x27, 0x58, 0x72, 0xe2, 0x38, 0x30, 0xfe, 0xc3,
-0x47, 0x66, 0x3e, 0xbc, 0x7e, 0xfd, 0x57, 0xcf,
-0x6e, 0xee, 0x3e, 0x58, 0xf4, 0xb8, 0x7c, 0xda,
-0x7d, 0x0e, 0x7b, 0x2a, 0x05, 0x17, 0xc1, 0x64,
-0xb0, 0xa0, 0x19, 0x11, 0x58, 0x2b, 0xe8, 0x40,
-0x42, 0x4f, 0x28, 0x0d, 0x31, 0x57, 0xcc, 0xe5,
-0x72, 0x69, 0x98, 0x49, 0xe8, 0x01, 0x9f, 0x0b,
-0xf3, 0xb1, 0x58, 0xcc, 0x59, 0x38, 0xa4, 0x85,
-0xc3, 0x79, 0xbf, 0x3f, 0x9f, 0x4f, 0xe8, 0x4e,
-0xa6, 0x84, 0xf1, 0xd5, 0xc5, 0x84, 0xce, 0x02,
-0xd4, 0xe1, 0xb2, 0x1b, 0xac, 0x66, 0x81, 0xc5,
-0x04, 0x33, 0x92, 0x00, 0xab, 0x52, 0x9f, 0x19,
-0x77, 0x69, 0x4c, 0x45, 0x0f, 0x8e, 0xb0, 0x6c,
-0x6c, 0x14, 0xaa, 0x80, 0xb6, 0xee, 0x66, 0xc5,
-0x36, 0x66, 0xa0, 0x84, 0x1e, 0x78, 0x15, 0xeb,
-0x09, 0x53, 0x52, 0xa8, 0x27, 0xfc, 0x3e, 0xb3,
-0x15, 0xfc, 0xdc, 0xc0, 0x33, 0xe3, 0xe3, 0xdb,
-0xb7, 0xdf, 0xfd, 0xd7, 0x03, 0xb5, 0x07, 0xf7,
-0xd4, 0x3e, 0xfd, 0xfc, 0x8f, 0x7f, 0x3f, 0xfe,
-0x9f, 0xf1, 0xed, 0x2c, 0xa0, 0x7c, 0x9c, 0xb3,
-0x7d, 0x9c, 0xe7, 0x2d, 0x61, 0x1c, 0x7d, 0x07,
-0xce, 0x6b, 0xaa, 0xaa, 0xea, 0x7f, 0xf3, 0xec,
-0xed, 0xfc, 0xd7, 0x17, 0x69, 0x70, 0xe6, 0x83,
-0x49, 0xfb, 0x4d, 0xb8, 0x43, 0xaa, 0x0e, 0x65,
-0xb1, 0x90, 0x0f, 0x67, 0x23, 0x95, 0x91, 0xd1,
-0xd3, 0xbd, 0x4e, 0xe7, 0x88, 0x58, 0x33, 0xf9,
-0xd8, 0x3a, 0x75, 0xc4, 0x29, 0x72, 0xb8, 0xec,
-0x32, 0x0a, 0x4a, 0x00, 0x07, 0x8e, 0xee, 0xf6,
-0xed, 0xf0, 0xf9, 0xca, 0xf4, 0x2c, 0xf5, 0x4c,
-0x09, 0x70, 0x1a, 0x2d, 0x58, 0xcd, 0xf8, 0x42,
-0xa6, 0x0e, 0x2b, 0x30, 0xab, 0x8c, 0x58, 0xb4,
-0x30, 0x33, 0xc2, 0x2a, 0x4b, 0x03, 0x25, 0x1d,
-0x96, 0x9c, 0x2e, 0x09, 0xd7, 0xf0, 0xc0, 0x49,
-0xe4, 0xf9, 0xda, 0x6f, 0x7c, 0x34, 0x33, 0x33,
-0xf3, 0xf8, 0xb7, 0x0e, 0x3e, 0x3e, 0x73, 0x52,
-0x30, 0x73, 0x72, 0x17, 0x26, 0x10, 0x67, 0xc4,
-0x9e, 0xb1, 0x0b, 0xf7, 0xbb, 0x4e, 0xee, 0xda,
-0xf5, 0xe1, 0x9b, 0xe0, 0xbc, 0xb1, 0xb6, 0xb1,
-0xb1, 0x73, 0xb7, 0x19, 0xbd, 0x48, 0xc6, 0xb7,
-0x14, 0xf1, 0x2f, 0x3a, 0x60, 0x08, 0x43, 0x1f,
-0x54, 0x61, 0x14, 0x07, 0x0b, 0x05, 0x7f, 0x3e,
-0xac, 0x69, 0xf1, 0xfb, 0xb5, 0x78, 0x3c, 0x1b,
-0x8f, 0xe3, 0x18, 0x89, 0x23, 0xb0, 0x63, 0x41,
-0x63, 0x49, 0x56, 0x03, 0x25, 0x5e, 0xc8, 0x02,
-0x26, 0x71, 0xbe, 0x69, 0x59, 0x8c, 0x9c, 0x38,
-0xaf, 0xcb, 0x6a, 0x6b, 0x62, 0xcf, 0x07, 0x39,
-0xd3, 0x81, 0x2d, 0xce, 0xe5, 0x68, 0xa2, 0x94,
-0xc3, 0x53, 0xb3, 0xb3, 0xf0, 0x63, 0x8d, 0xcb,
-0x85, 0xd4, 0x34, 0x19, 0xe7, 0xdf, 0xf3, 0x67,
-0x8a, 0xbc, 0x09, 0xdc, 0x24, 0x6e, 0x5f, 0x68,
-0x42, 0xaa, 0x9a, 0x7e, 0xba, 0xef, 0xe9, 0xdf,
-0x7e, 0xf9, 0x67, 0xfb, 0xfe, 0xf6, 0x00, 0x1c,
-0x5b, 0xc0, 0x4c, 0x3f, 0xa4, 0x18, 0x44, 0x14,
-0x0a, 0x55, 0x55, 0x63, 0x63, 0x6d, 0x2d, 0x40,
-0x5b, 0xff, 0xfc, 0xed, 0xdd, 0x87, 0x33, 0xe1,
-0xa5, 0x08, 0xf4, 0xc0, 0x17, 0xe0, 0x7e, 0x80,
-0xa3, 0x18, 0x5c, 0xb8, 0xac, 0x2c, 0x2e, 0xe2,
-0x97, 0x4e, 0x74, 0x19, 0xe4, 0xce, 0x14, 0x94,
-0x95, 0x95, 0x44, 0x96, 0x02, 0xab, 0x8a, 0x69,
-0x44, 0x96, 0x94, 0xb2, 0x42, 0x8d, 0x7f, 0x69,
-0x46, 0x2f, 0xb3, 0x2c, 0x4f, 0x1c, 0x2c, 0x55,
-0xb4, 0x9c, 0xbb, 0xd4, 0x9e, 0xf2, 0x56, 0xc9,
-0xfd, 0x7d, 0x2d, 0x7b, 0x31, 0xec, 0x6d, 0x69,
-0x79, 0xf6, 0x17, 0x0f, 0xef, 0xfe, 0xf8, 0xf4,
-0xb7, 0x5b, 0x78, 0x76, 0x2f, 0xd0, 0x32, 0x0f,
-0xc7, 0x2c, 0xd3, 0x22, 0xa5, 0x98, 0xe5, 0x85,
-0x50, 0x3a, 0x3f, 0x7f, 0x06, 0xb6, 0xb6, 0xaa,
-0xb6, 0xad, 0xb8, 0x0f, 0xff, 0x36, 0x65, 0xa9,
-0x37, 0xac, 0x2f, 0xab, 0x2f, 0xe0, 0x34, 0xf7,
-0x28, 0x73, 0xa1, 0x9a, 0x53, 0x73, 0x39, 0x47,
-0x4e, 0xa2, 0xb2, 0xd4, 0xa1, 0x62, 0x44, 0xb1,
-0x03, 0x82, 0xa9, 0xa0, 0x8a, 0xd4, 0x54, 0xe7,
-0x4a, 0x0e, 0x2e, 0xc2, 0x52, 0x5e, 0x43, 0x15,
-0xaa, 0x2a, 0x2b, 0x74, 0x70, 0x3d, 0x59, 0x0b,
-0x04, 0x0e, 0x07, 0x2f, 0xc9, 0x99, 0x12, 0xeb,
-0x69, 0x1d, 0xaa, 0x45, 0xb5, 0x74, 0x6a, 0x69,
-0xd7, 0x61, 0x36, 0x43, 0x18, 0x7d, 0xbf, 0xa6,
-0x7d, 0xae, 0x66, 0xae, 0xa6, 0xbd, 0x46, 0x32,
-0x27, 0xe2, 0xfb, 0xb8, 0x13, 0x39, 0xa4, 0x9d,
-0xeb, 0xb4, 0xf3, 0x80, 0xc7, 0xed, 0xed, 0xed,
-0x67, 0xce, 0xcc, 0xb7, 0x8d, 0xb5, 0x6c, 0xf5,
-0x2b, 0xd0, 0x19, 0xb8, 0x06, 0x1a, 0xfe, 0x20,
-0x4e, 0xa4, 0x99, 0x07, 0x53, 0x70, 0x3b, 0xde,
-0x9c, 0xdb, 0x95, 0xdf, 0x46, 0xef, 0x16, 0xe2,
-0xad, 0x5a, 0xdc, 0x22, 0x67, 0xcf, 0xde, 0x84,
-0xc0, 0x92, 0xa3, 0x17, 0x59, 0x6a, 0x4a, 0xf8,
-0xc1, 0xcd, 0x8b, 0x67, 0x21, 0xf0, 0x1c, 0x66,
-0x70, 0x8f, 0xe9, 0xc5, 0x8b, 0x73, 0x73, 0x73,
-0x35, 0x67, 0xf6, 0xb6, 0x55, 0xbd, 0xbb, 0x45,
-0xef, 0x21, 0xf9, 0x86, 0x50, 0x24, 0x6c, 0x0b,
-0x2e, 0x3b, 0xd4, 0xff, 0xcb, 0xab, 0xf9, 0xac,
-0xb9, 0x69, 0x3a, 0x8f, 0x7b, 0x4c, 0x64, 0xce,
-0x96, 0x49, 0x85, 0xd2, 0xcd, 0xb3, 0xd6, 0x80,
-0xee, 0x43, 0xef, 0x8d, 0x35, 0xbd, 0x70, 0x7b,
-0xaf, 0x59, 0xc7, 0x70, 0x64, 0xc9, 0x17, 0x81,
-0x39, 0x5d, 0x50, 0x59, 0x4e, 0xb2, 0x41, 0xe1,
-0x60, 0x83, 0x18, 0x70, 0xb0, 0xc1, 0x2c, 0xf2,
-0xa5, 0xc0, 0x4a, 0x73, 0xa6, 0xd0, 0xc4, 0xac,
-0x67, 0x26, 0x0e, 0xa1, 0x9a, 0x53, 0x73, 0x52,
-0xd7, 0x61, 0x4a, 0xf0, 0x00, 0xab, 0x38, 0x2c,
-0xd6, 0xb8, 0x80, 0x1f, 0x9a, 0x96, 0x73, 0x66,
-0x2b, 0x54, 0x8b, 0x75, 0xa6, 0x21, 0x54, 0x1d,
-0x66, 0x4b, 0xde, 0xc7, 0x2e, 0xc4, 0x37, 0x33,
-0xe2, 0x60, 0x9e, 0x9b, 0x2b, 0x15, 0x48, 0x6a,
-0x4a, 0x7b, 0x8c, 0xed, 0x35, 0x30, 0x72, 0xdb,
-0xaa, 0x9a, 0xe6, 0xef, 0xf8, 0x87, 0x5c, 0xc9,
-0xde, 0xa5, 0x1d, 0xce, 0xa2, 0x96, 0xb7, 0x15,
-0x12, 0x41, 0xcb, 0x97, 0x20, 0xb7, 0x8c, 0xbe,
-0xbe, 0xd2, 0x46, 0x46, 0xee, 0xd0, 0xf8, 0x1d,
-0xa9, 0xeb, 0xf7, 0xbd, 0x6b, 0xde, 0x27, 0x24,
-0x2d, 0xb7, 0x08, 0x82, 0x79, 0x79, 0x34, 0xcf,
-0xf4, 0xda, 0xda, 0xda, 0xc6, 0xaa, 0x9a, 0xae,
-0xb7, 0x7c, 0xf5, 0x4e, 0xbd, 0xc7, 0xfa, 0x60,
-0x21, 0x12, 0x0a, 0x8d, 0x38, 0x2b, 0x8b, 0x45,
-0xb7, 0x81, 0x13, 0x01, 0x43, 0xce, 0x06, 0x3e,
-0x2d, 0x8c, 0x72, 0x63, 0x9f, 0xa6, 0x69, 0xc1,
-0xbf, 0xff, 0xd0, 0xdf, 0xcf, 0x26, 0x21, 0xfd,
-0xa5, 0xd8, 0x6f, 0x39, 0x6a, 0x12, 0xbb, 0xd2,
-0x6c, 0x45, 0x6a, 0x0b, 0xae, 0x7f, 0xfd, 0xfa,
-0x58, 0xfb, 0xff, 0xfe, 0x23, 0xc2, 0xd4, 0x62,
-0xc2, 0xaf, 0xb9, 0xc1, 0x83, 0x88, 0xbb, 0x28,
-0x30, 0x64, 0x14, 0x9b, 0x9b, 0x97, 0xb9, 0x65,
-0x21, 0x1e, 0x72, 0x05, 0x77, 0x49, 0xc0, 0x0f,
-0x4c, 0x1b, 0x5c, 0x2c, 0x8d, 0x18, 0x56, 0xa9,
-0xd0, 0x75, 0x5b, 0xaa, 0x95, 0xb4, 0xdc, 0xb2,
-0xcc, 0xd2, 0x02, 0xf7, 0x9a, 0x16, 0x71, 0xfd,
-0xef, 0xfd, 0xf2, 0xc1, 0x73, 0x4d, 0xe7, 0x9a,
-0xca, 0x58, 0x93, 0x5d, 0xc7, 0x39, 0x8c, 0xe7,
-0xb8, 0xde, 0xb9, 0xa6, 0xfe, 0xb6, 0x96, 0x33,
-0x73, 0x9f, 0xc5, 0xdf, 0x19, 0x13, 0x04, 0x41,
-0x10, 0x04, 0x41, 0x10, 0x04, 0x41, 0x10, 0x04,
-0x41, 0x10, 0x04, 0x41, 0x10, 0x04, 0x41, 0x10,
-0x04, 0x41, 0x10, 0x04, 0x41, 0x10, 0x04, 0x41,
-0x10, 0x04, 0x41, 0x10, 0x04, 0x41, 0x10, 0x04,
-0x41, 0x10, 0x04, 0x41, 0x10, 0x04, 0x41, 0x10,
-0x04, 0x41, 0x10, 0x04, 0x41, 0x10, 0x04, 0x41,
-0x10, 0x04, 0x41, 0x10, 0x04, 0x41, 0x10, 0x04,
-0x41, 0x10, 0x04, 0x41, 0x10, 0x04, 0x41, 0x10,
-0x04, 0x41, 0x10, 0x04, 0x41, 0x10, 0x04, 0x41,
-0x10, 0x04, 0x41, 0x10, 0x5b, 0xe6, 0xbf, 0x9f,
-0xe5, 0x54, 0xe2, 0x36, 0x30, 0x01, 0x00,
diff --git a/board/esd/hh405/logo_640_480_24bpp.c b/board/esd/hh405/logo_640_480_24bpp.c
deleted file mode 100644 (file)
index 3f8bb9e..0000000
+++ /dev/null
@@ -1,8417 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0xc2, 0xbb, 0x0b, 0x40,
-0x00, 0x03, 0x48, 0x6f, 0x6c, 0x7a, 0x2d, 0x48,
-0x65, 0x72, 0x5f, 0x64, 0x74, 0x5f, 0x33, 0x43,
-0x5f, 0x36, 0x34, 0x30, 0x5f, 0x34, 0x38, 0x30,
-0x5f, 0x32, 0x34, 0x62, 0x70, 0x70, 0x2e, 0x62,
-0x6d, 0x70, 0x32, 0x00, 0xec, 0xdd, 0x09, 0x58,
-0x56, 0x55, 0xfe, 0xc0, 0x71, 0x67, 0x46, 0x4d,
-0x51, 0x01, 0xd9, 0x71, 0x21, 0x0b, 0x5c, 0x73,
-0xdf, 0xcd, 0xdd, 0x4c, 0x4d, 0x65, 0xb1, 0x5c,
-0x13, 0x97, 0xd2, 0x6a, 0xfe, 0x93, 0xa2, 0xa9,
-0xa5, 0x36, 0x35, 0x8d, 0xe5, 0x56, 0xa9, 0x65,
-0x8b, 0xb2, 0xa9, 0x28, 0x8b, 0x0a, 0x4e, 0x69,
-0x8a, 0x1b, 0x6e, 0xa0, 0xa0, 0x36, 0xb9, 0x2f,
-0x61, 0x66, 0xa9, 0x60, 0x08, 0x2e, 0xec, 0x28,
-0x4b, 0xff, 0xe7, 0xff, 0x7b, 0xa1, 0xa1, 0xd7,
-0x7b, 0xee, 0x7d, 0x79, 0xe1, 0xdf, 0xf2, 0x3c,
-0xcd, 0xd7, 0xe7, 0x23, 0x4f, 0xca, 0xb9, 0xe7,
-0x9e, 0x7b, 0xee, 0x39, 0xf7, 0x77, 0x7e, 0xe7,
-0xbd, 0xd8, 0x00, 0xef, 0xae, 0xf6, 0xb6, 0xd5,
-0x4c, 0xbf, 0xba, 0xca, 0xef, 0x16, 0xf2, 0xfb,
-0x9f, 0x7f, 0xae, 0x56, 0xed, 0xea, 0x9f, 0xaa,
-0x55, 0xfb, 0x53, 0x35, 0xb7, 0xd2, 0xbf, 0xaf,
-0x26, 0xdf, 0xf7, 0x6c, 0x5b, 0xad, 0xf4, 0xf7,
-0x7f, 0x7e, 0x95, 0xfc, 0x6f, 0x09, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x54, 0x7b, 0xf7, 0xed, 0x5b, 0xf9, 0xf1, 0xc7,
-0x1a, 0x1b, 0xa3, 0xa3, 0x73, 0xf3, 0xf3, 0x8b,
-0x4b, 0x7e, 0xff, 0xe6, 0x01, 0x00, 0xf0, 0x87,
-0x34, 0x71, 0xe2, 0x73, 0xd5, 0xff, 0x5c, 0x5d,
-0xa3, 0x6b, 0xe7, 0xae, 0xe9, 0xb7, 0x32, 0x7e,
-0xf7, 0xb6, 0x01, 0x00, 0xf0, 0x47, 0x35, 0xc1,
-0x28, 0xfe, 0x66, 0xa4, 0xff, 0xee, 0x6d, 0x03,
-0x00, 0xe0, 0x8f, 0xca, 0x7f, 0xc2, 0x64, 0x9d,
-0xf8, 0xdb, 0xa5, 0x5b, 0xda, 0xcd, 0xb4, 0xdf,
-0xbd, 0x6d, 0x00, 0x00, 0xfc, 0x51, 0xe9, 0xee,
-0x3f, 0x77, 0xee, 0xd4, 0x25, 0xfd, 0x16, 0xf9,
-0x2f, 0x00, 0x00, 0xbf, 0x96, 0xf1, 0x13, 0x26,
-0xe9, 0xe6, 0xbf, 0x19, 0x7c, 0xfe, 0x0b, 0x00,
-0xc0, 0xaf, 0x86, 0xfc, 0x17, 0x00, 0x80, 0xdf,
-0x9e, 0xfe, 0xfb, 0xcf, 0xe4, 0xbf, 0x00, 0x00,
-0xfc, 0x9a, 0x78, 0xff, 0x0a, 0x00, 0x80, 0xdf,
-0x9e, 0x6e, 0xfc, 0xed, 0xd2, 0xa9, 0x0b, 0x3f,
-0x7f, 0x04, 0x00, 0xc0, 0xaf, 0x67, 0x9c, 0xff,
-0x44, 0x3e, 0xff, 0x05, 0x00, 0xc0, 0x82, 0xc2,
-0xe2, 0xc2, 0xdb, 0x77, 0xef, 0x5c, 0xbc, 0x94,
-0x7c, 0x28, 0x3e, 0xfe, 0xb3, 0xad, 0x5b, 0xd7,
-0x85, 0x85, 0x05, 0x06, 0x05, 0x7f, 0xf4, 0xf1,
-0x27, 0xc1, 0x21, 0xa1, 0x11, 0x91, 0x91, 0xb1,
-0xbb, 0x76, 0x1e, 0xff, 0xf2, 0xf8, 0xf7, 0xd7,
-0xaf, 0x16, 0xdc, 0x2f, 0xb0, 0xbe, 0xce, 0x0a,
-0x3f, 0xff, 0x2d, 0xfe, 0xb1, 0xf8, 0x66, 0x46,
-0x7a, 0xd2, 0xb1, 0x63, 0x31, 0x5b, 0xb6, 0xac,
-0x0a, 0x0a, 0xfe, 0xf8, 0x93, 0x4f, 0xe5, 0xbc,
-0xdb, 0x63, 0x63, 0x4f, 0x9d, 0x39, 0x9d, 0x95,
-0x9d, 0x25, 0xdf, 0xad, 0xfa, 0xe5, 0x14, 0x15,
-0xa6, 0x65, 0xa4, 0x7f, 0x75, 0xea, 0xe4, 0xee,
-0xbd, 0x7b, 0x36, 0x84, 0x87, 0xaf, 0x0e, 0x0c,
-0xfa, 0x78, 0xd5, 0x27, 0x21, 0xa1, 0xa1, 0x91,
-0x1b, 0x37, 0xee, 0x89, 0xdb, 0x7b, 0xe2, 0xd4,
-0x49, 0xf9, 0xae, 0x94, 0xb1, 0x50, 0x43, 0x5e,
-0x41, 0x41, 0x7e, 0x41, 0x7e, 0x4e, 0x5e, 0x6e,
-0xd5, 0xc8, 0xb1, 0x79, 0xf9, 0x79, 0xf7, 0xee,
-0xdf, 0x53, 0xfb, 0x59, 0xfe, 0x5e, 0x68, 0x0a,
-0x17, 0x95, 0x14, 0x59, 0xbe, 0xa2, 0xfb, 0x45,
-0xf7, 0xaf, 0xa5, 0xa6, 0xc4, 0x27, 0xc4, 0x47,
-0x44, 0x45, 0x7d, 0x1a, 0xb8, 0x3a, 0x28, 0x38,
-0xe4, 0xf3, 0xad, 0x9f, 0x9f, 0x3c, 0x7d, 0xea,
-0xd6, 0x9d, 0xdb, 0x9a, 0x92, 0x05, 0xf7, 0x0a,
-0x44, 0x59, 0xb5, 0x65, 0xf5, 0xcb, 0x1f, 0xd5,
-0x0a, 0xe5, 0x8c, 0xb9, 0xf9, 0xda, 0x0b, 0x94,
-0x43, 0x74, 0xbb, 0x5d, 0x0a, 0xab, 0xbd, 0x21,
-0xd5, 0x16, 0x97, 0x18, 0xde, 0x23, 0xa9, 0x27,
-0x4f, 0x3a, 0xc1, 0x74, 0x94, 0x5c, 0x6c, 0x5e,
-0xd9, 0x55, 0xcb, 0x1f, 0x2d, 0x77, 0x7b, 0xc1,
-0xbd, 0x7b, 0xa5, 0xe5, 0x1f, 0x68, 0x52, 0x85,
-0xa3, 0xae, 0xa8, 0xa4, 0x58, 0x6e, 0xe8, 0xb1,
-0x2f, 0x8f, 0xcb, 0x40, 0x92, 0xbb, 0xfc, 0x69,
-0xe0, 0xaa, 0x4d, 0xd1, 0xd1, 0x49, 0x47, 0x93,
-0x6e, 0xa4, 0xdd, 0xd0, 0x76, 0x63, 0xe1, 0xfd,
-0xdc, 0xd2, 0x66, 0xe4, 0x96, 0xdf, 0xa6, 0x02,
-0x9d, 0xca, 0xa5, 0xf1, 0xf2, 0xad, 0x6b, 0xa9,
-0xd7, 0x4e, 0x94, 0x0e, 0xa1, 0xc8, 0xa8, 0xa8,
-0xa0, 0xd0, 0x10, 0x99, 0x0e, 0xd2, 0xed, 0x51,
-0x1b, 0x37, 0xee, 0x3f, 0x78, 0xe0, 0x62, 0xf2,
-0xd7, 0xd9, 0xb9, 0x39, 0x55, 0x1e, 0xa2, 0xd2,
-0x80, 0x6f, 0xbf, 0xfb, 0xee, 0x50, 0x42, 0xc2,
-0xe6, 0x98, 0x98, 0xc0, 0x10, 0xd3, 0x44, 0x93,
-0xe9, 0x16, 0xba, 0x76, 0xcd, 0x96, 0x7f, 0xfd,
-0x2b, 0x6e, 0xff, 0xbe, 0xf3, 0x17, 0x2f, 0xc8,
-0xbc, 0x90, 0xa1, 0xf2, 0x8b, 0x8c, 0x1c, 0xe9,
-0x70, 0xf3, 0x1b, 0x2d, 0x17, 0x2e, 0x67, 0x97,
-0x7b, 0x57, 0x54, 0xac, 0x73, 0xa0, 0x14, 0x2e,
-0xaf, 0xd9, 0xfc, 0x46, 0xeb, 0x16, 0x2e, 0xbb,
-0xc5, 0xe5, 0xe5, 0xcb, 0x6a, 0x96, 0xee, 0xd5,
-0x2d, 0xfc, 0xc0, 0xfd, 0x2a, 0x96, 0xb1, 0x97,
-0x57, 0x7e, 0x96, 0xb2, 0xaf, 0x79, 0x06, 0x63,
-0xcf, 0xc8, 0xdd, 0xac, 0xcc, 0xe4, 0x6f, 0x2f,
-0xef, 0x3f, 0x70, 0x60, 0x73, 0x74, 0xf4, 0x9a,
-0xb5, 0xeb, 0xe4, 0xe9, 0x21, 0xd3, 0x5c, 0x26,
-0xfb, 0xe7, 0xdb, 0xb6, 0x25, 0x1e, 0x4d, 0xfa,
-0xfe, 0xda, 0x55, 0xa9, 0xb0, 0xc2, 0x4a, 0x64,
-0x86, 0xfe, 0xdc, 0x80, 0xfc, 0xbc, 0xb2, 0x56,
-0xa9, 0xd3, 0x56, 0x25, 0x87, 0x68, 0x66, 0x84,
-0x74, 0xf2, 0xbd, 0xc2, 0xfb, 0x55, 0x1b, 0x0f,
-0xf8, 0xef, 0x94, 0x7f, 0x2f, 0xff, 0xc4, 0xa9,
-0xd3, 0x1b, 0x22, 0x23, 0x67, 0xcc, 0x98, 0xf9,
-0xc4, 0xc0, 0x81, 0x8f, 0xb5, 0x6a, 0xdd, 0xb0,
-0x41, 0x23, 0x87, 0xfa, 0x8e, 0xf5, 0xea, 0xd6,
-0xab, 0x6b, 0x53, 0xd7, 0xa6, 0xb6, 0x4d, 0x9d,
-0xda, 0x75, 0x6c, 0xeb, 0xd9, 0x3a, 0x39, 0x3a,
-0x37, 0xf1, 0x68, 0xd2, 0xb1, 0x63, 0xc7, 0x89,
-0x93, 0x26, 0x85, 0xae, 0x5b, 0x73, 0xf9, 0xca,
-0xb7, 0xf7, 0x0a, 0x2b, 0x1e, 0xa2, 0x16, 0xde,
-0x7f, 0x96, 0x89, 0x96, 0x72, 0x23, 0x25, 0x30,
-0x28, 0x48, 0x4e, 0xda, 0xe4, 0xe1, 0x47, 0x1c,
-0xec, 0x1d, 0x6c, 0xe4, 0x57, 0x6d, 0x1b, 0x39,
-0xaf, 0xb3, 0xa3, 0xb3, 0x97, 0x67, 0x53, 0x1f,
-0x5f, 0xdf, 0x55, 0x41, 0x41, 0x29, 0x37, 0x52,
-0x2b, 0x7c, 0xbc, 0x98, 0x93, 0x6a, 0x33, 0xb3,
-0x33, 0x63, 0x77, 0xef, 0x9d, 0x35, 0x67, 0x4e,
-0xaf, 0xde, 0xbd, 0x3d, 0x1f, 0xf1, 0x74, 0x75,
-0x71, 0xb3, 0xab, 0x67, 0x27, 0x57, 0x21, 0x95,
-0xcb, 0x15, 0xd9, 0xd9, 0xda, 0xbb, 0xb9, 0xb8,
-0x79, 0x3e, 0xea, 0xd5, 0xab, 0x57, 0xef, 0xe9,
-0x01, 0x33, 0x24, 0x84, 0xfd, 0x70, 0x33, 0x4d,
-0x42, 0x9b, 0xa6, 0x1e, 0x09, 0x6a, 0x2f, 0xbc,
-0xf8, 0x92, 0x8f, 0x9f, 0xb4, 0xc2, 0x6f, 0xb8,
-0x8f, 0xb7, 0xf9, 0x57, 0xf9, 0x2b, 0x6f, 0x5f,
-0x9f, 0xb2, 0xaf, 0xe5, 0xff, 0x21, 0x5f, 0x35,
-0xc5, 0xfc, 0xfc, 0x46, 0x78, 0x7b, 0xfb, 0xcc,
-0x98, 0xf9, 0x4a, 0xfe, 0x83, 0xb1, 0x4f, 0x9e,
-0xae, 0x23, 0x47, 0x8d, 0xf2, 0xf1, 0xf3, 0x35,
-0x3f, 0x76, 0xc4, 0x88, 0xa7, 0xaf, 0x5c, 0xbd,
-0x62, 0x74, 0x51, 0xd2, 0xd5, 0xc7, 0x8e, 0x1f,
-0x7f, 0x6d, 0xee, 0xbc, 0x6e, 0xdd, 0x7b, 0xc8,
-0xdd, 0xb1, 0xb7, 0xb3, 0x97, 0xae, 0x92, 0x6b,
-0x71, 0xa8, 0xef, 0xe0, 0xe5, 0xd5, 0x74, 0xd8,
-0xb0, 0xe1, 0xe1, 0x91, 0x91, 0x69, 0xe9, 0x69,
-0x65, 0xcf, 0x2e, 0x79, 0x02, 0x04, 0x04, 0xcc,
-0x90, 0x4a, 0x4d, 0x35, 0xfb, 0xfd, 0xd4, 0xc8,
-0x79, 0xf3, 0xe7, 0x6b, 0x1e, 0xe6, 0xa6, 0x96,
-0xc4, 0xc5, 0x8d, 0x78, 0x7a, 0xa4, 0xe6, 0x8a,
-0x26, 0x4e, 0x9a, 0x7c, 0x31, 0x39, 0x59, 0x6d,
-0x43, 0xdc, 0xbe, 0xb8, 0x67, 0x9e, 0xd1, 0x2d,
-0xfc, 0xb5, 0x51, 0xb3, 0x2f, 0x7f, 0x77, 0x65,
-0xea, 0x8b, 0x2f, 0x4a, 0x1b, 0xa4, 0xb0, 0x89,
-0x4f, 0xe9, 0x57, 0x3f, 0xdf, 0x5d, 0x71, 0xbb,
-0x8d, 0x0e, 0xb9, 0x5f, 0x54, 0x38, 0x77, 0xde,
-0x3c, 0xf3, 0x53, 0x94, 0x1e, 0xe2, 0xf3, 0xee,
-0x7b, 0xcb, 0xf2, 0x0a, 0xf2, 0x74, 0x0f, 0x91,
-0xeb, 0xfa, 0x3a, 0x39, 0x79, 0xd9, 0xf2, 0xe5,
-0xfd, 0xfb, 0x0f, 0x28, 0x1b, 0x48, 0x75, 0x6c,
-0xea, 0x08, 0xe9, 0x25, 0x8f, 0xc6, 0x1e, 0x3d,
-0x7b, 0xf5, 0x5a, 0xf1, 0xe1, 0x87, 0x97, 0x2e,
-0x5f, 0x2e, 0x1f, 0x45, 0xcb, 0x56, 0x7c, 0x20,
-0xb7, 0xa6, 0xac, 0x7f, 0xca, 0xba, 0xe8, 0xf9,
-0x29, 0x53, 0x7e, 0xb8, 0x79, 0xc3, 0xac, 0x0d,
-0xf7, 0x0f, 0xc4, 0x27, 0xbc, 0xf5, 0xcf, 0x05,
-0xa3, 0xc6, 0x8c, 0xee, 0xd4, 0xa9, 0x93, 0x0c,
-0x15, 0x17, 0x67, 0x57, 0x7b, 0x5b, 0xfb, 0xba,
-0x75, 0xea, 0x96, 0x0d, 0x21, 0xa9, 0xd9, 0xdd,
-0xad, 0x41, 0xcb, 0x16, 0xad, 0x7c, 0xfd, 0xfc,
-0x3e, 0x5c, 0xb9, 0x32, 0xf9, 0xf2, 0x25, 0x6b,
-0xe6, 0x42, 0x19, 0x69, 0x46, 0x6a, 0xda, 0x8d,
-0xe8, 0x98, 0x98, 0x67, 0xc7, 0xfb, 0xb7, 0x6f,
-0xdf, 0xa1, 0x51, 0xc3, 0xc6, 0xf5, 0xed, 0xea,
-0x4b, 0x6b, 0x4d, 0x13, 0xad, 0xb4, 0xd9, 0xf2,
-0x47, 0x37, 0x57, 0xf7, 0xe6, 0xcd, 0x5a, 0xf4,
-0xed, 0xdb, 0x4f, 0xda, 0x90, 0x95, 0x93, 0x55,
-0x7e, 0x6c, 0x42, 0x52, 0xe2, 0xe8, 0x31, 0x63,
-0x34, 0x23, 0x47, 0xae, 0xe5, 0xdc, 0x85, 0x0b,
-0x96, 0x4f, 0x1a, 0xbd, 0x65, 0x8b, 0x77, 0xe9,
-0x2d, 0x90, 0xe2, 0x3f, 0x75, 0xa9, 0x8f, 0xef,
-0x8b, 0x2f, 0xfd, 0xf5, 0xca, 0xd5, 0xef, 0xd5,
-0xc2, 0x07, 0x0e, 0x25, 0x48, 0x31, 0x53, 0x49,
-0x9f, 0x9f, 0x07, 0xbf, 0xff, 0xa4, 0x89, 0x67,
-0xce, 0x9d, 0x53, 0x0b, 0x9f, 0x3e, 0x7b, 0x6e,
-0xe4, 0x48, 0xd3, 0xa8, 0x30, 0x0d, 0x0c, 0x9f,
-0x11, 0xc3, 0x7d, 0x4d, 0xc3, 0x7e, 0xec, 0xb8,
-0x67, 0x65, 0xdd, 0x6b, 0xb9, 0x49, 0xdb, 0x77,
-0xec, 0x90, 0xe1, 0x54, 0x76, 0xa2, 0xa1, 0xde,
-0xc3, 0xe4, 0x28, 0xa9, 0xc1, 0x7f, 0xc2, 0xc4,
-0x6b, 0xd7, 0xaf, 0x57, 0xd8, 0x87, 0x32, 0x12,
-0xce, 0x9e, 0x3f, 0x2f, 0xb7, 0x55, 0xe6, 0x57,
-0xeb, 0xd6, 0x6d, 0x1b, 0xb8, 0x35, 0x90, 0x4e,
-0xfb, 0xe9, 0x61, 0x65, 0x53, 0xc7, 0xb6, 0xae,
-0xad, 0xa3, 0x83, 0x53, 0xe3, 0x46, 0x1e, 0x1d,
-0xda, 0x77, 0x94, 0x53, 0x7c, 0x1a, 0x14, 0x24,
-0x85, 0x73, 0x0d, 0x06, 0x8f, 0x04, 0xe8, 0xb7,
-0x17, 0x2e, 0x32, 0x8d, 0x04, 0x1f, 0x9f, 0xb2,
-0x39, 0x3b, 0xdc, 0xdb, 0x74, 0xbd, 0x0b, 0xde,
-0x7e, 0xc7, 0x72, 0xec, 0x96, 0x59, 0x36, 0x65,
-0xca, 0x54, 0x39, 0xca, 0x7c, 0xee, 0xfb, 0x8c,
-0xf0, 0x0b, 0x59, 0xb3, 0x46, 0x7d, 0x98, 0x00,
-0x46, 0x76, 0xc7, 0xed, 0x71, 0x71, 0x76, 0xa9,
-0x59, 0xbd, 0xa6, 0x1a, 0x28, 0x8d, 0x48, 0xe1,
-0x66, 0xcd, 0x5b, 0xbc, 0xb5, 0x60, 0x41, 0xf2,
-0x37, 0x97, 0x2c, 0x57, 0x6e, 0x94, 0xff, 0xde,
-0x4c, 0xbf, 0xf9, 0xd5, 0x89, 0x13, 0x7d, 0xfa,
-0xf6, 0xa9, 0xfd, 0x50, 0x6d, 0x0b, 0x27, 0x7a,
-0xa8, 0x66, 0xad, 0xde, 0xbd, 0xfb, 0xc4, 0xee,
-0xdc, 0x69, 0xe5, 0xaa, 0x52, 0xb2, 0xa4, 0xad,
-0xdb, 0xb7, 0xc9, 0x83, 0xa6, 0x6e, 0xdd, 0xba,
-0x56, 0x5e, 0x4b, 0xed, 0x5a, 0xb5, 0xbb, 0x77,
-0xef, 0x21, 0x73, 0xf9, 0x6e, 0xd6, 0x5d, 0xf3,
-0xaa, 0xae, 0xa7, 0x5c, 0x6f, 0xd6, 0xac, 0xb9,
-0xf5, 0x7d, 0x62, 0xa4, 0x5d, 0xfb, 0x76, 0x99,
-0xd9, 0x3f, 0x3f, 0x42, 0x25, 0x44, 0x06, 0x87,
-0x86, 0xca, 0xb3, 0x42, 0x7b, 0xa5, 0x35, 0x1e,
-0x92, 0xa7, 0x84, 0xee, 0x45, 0xa5, 0xdd, 0x4c,
-0x5b, 0xb2, 0x74, 0xa9, 0xab, 0xab, 0x9b, 0x85,
-0xb3, 0xd8, 0xd4, 0xb2, 0x79, 0xf2, 0xc9, 0x41,
-0x87, 0xe2, 0x0f, 0x49, 0x30, 0xba, 0x9b, 0x95,
-0xd5, 0xa8, 0x51, 0x63, 0x4d, 0x81, 0x41, 0x83,
-0x86, 0xdc, 0x57, 0xfa, 0x30, 0x30, 0x38, 0x50,
-0xce, 0xab, 0x29, 0xe9, 0xee, 0xde, 0xf0, 0x48,
-0x52, 0x92, 0xda, 0x8c, 0x90, 0xd0, 0x35, 0x6a,
-0x61, 0x89, 0x14, 0x87, 0x13, 0x13, 0x8d, 0x6e,
-0xc7, 0x89, 0xd3, 0x27, 0x3d, 0x1f, 0xf5, 0x54,
-0x5b, 0xbb, 0x2a, 0x28, 0xd8, 0xe8, 0x10, 0x49,
-0x40, 0x64, 0x5d, 0xa4, 0x1e, 0x32, 0x66, 0xcc,
-0x18, 0xf3, 0x48, 0x54, 0x2e, 0x37, 0x3f, 0x77,
-0x43, 0x78, 0x44, 0x8b, 0xe6, 0x2d, 0x2c, 0x0c,
-0x60, 0x69, 0xb6, 0x44, 0x3a, 0x49, 0x60, 0x0b,
-0x4a, 0x93, 0x1a, 0xe9, 0x0a, 0x4d, 0x01, 0x2f,
-0x2f, 0x2f, 0xb9, 0xdd, 0xe5, 0x75, 0xde, 0xc9,
-0xbc, 0x33, 0xf0, 0xc9, 0x81, 0xd6, 0xcf, 0x05,
-0xaf, 0x66, 0xcd, 0x16, 0x2d, 0x59, 0x9a, 0x7a,
-0x43, 0x9b, 0x68, 0xeb, 0xb5, 0x36, 0x2f, 0x62,
-0x63, 0x54, 0x8f, 0xc7, 0x7b, 0xca, 0xa8, 0xb3,
-0xa6, 0xf2, 0x96, 0x2d, 0x5b, 0xa5, 0xde, 0x48,
-0x2d, 0x3f, 0x7c, 0x73, 0x4c, 0xb4, 0x6d, 0x3d,
-0x3b, 0xb5, 0x58, 0x42, 0xe2, 0x61, 0xcb, 0xe7,
-0x5d, 0xbc, 0xf4, 0x5d, 0xf5, 0xa8, 0xa6, 0x9e,
-0x4d, 0x4f, 0x9f, 0x39, 0xa3, 0x16, 0x0e, 0x8f,
-0x8a, 0x50, 0x0b, 0xcb, 0x8d, 0xde, 0x7f, 0xf0,
-0xa0, 0x5a, 0x78, 0xef, 0xbe, 0x7d, 0x12, 0xf5,
-0x34, 0x85, 0x65, 0xfd, 0xfc, 0xc5, 0xf6, 0x1d,
-0x96, 0x9b, 0xf4, 0xfe, 0xf2, 0x15, 0x6a, 0x27,
-0xc8, 0x83, 0xe8, 0xcc, 0x59, 0x9d, 0x28, 0x6f,
-0x3e, 0x7d, 0x64, 0x51, 0xf7, 0xf2, 0xb4, 0x69,
-0xb2, 0xd0, 0xb2, 0xfe, 0x06, 0x79, 0x78, 0x34,
-0x91, 0xc5, 0xc6, 0xa9, 0xb3, 0xa7, 0xd4, 0x0a,
-0x65, 0x6e, 0x0e, 0xf3, 0x1e, 0xae, 0x1e, 0x35,
-0xe4, 0xa9, 0xa7, 0xcc, 0xa7, 0xad, 0x2a, 0x3b,
-0x37, 0xa7, 0xc9, 0xc3, 0x4d, 0xd4, 0x73, 0xcd,
-0x98, 0x39, 0xb3, 0xc0, 0x8a, 0xdc, 0x19, 0x28,
-0x73, 0x30, 0x21, 0xa1, 0xc6, 0x5f, 0x6a, 0x58,
-0x39, 0x98, 0xcd, 0xd5, 0x7e, 0xc8, 0xa6, 0x5d,
-0xbb, 0xf6, 0xb1, 0xbb, 0x76, 0x4a, 0x06, 0x6d,
-0x54, 0xb9, 0x6e, 0xfc, 0xed, 0xd4, 0xb1, 0x73,
-0x58, 0xd8, 0xfa, 0xf6, 0x6d, 0x3b, 0x58, 0x73,
-0x5e, 0x29, 0xe3, 0xd1, 0xf8, 0xe1, 0x95, 0x2b,
-0x3f, 0xba, 0x57, 0x54, 0xc1, 0xa8, 0x4e, 0xb9,
-0x91, 0x3a, 0x73, 0xd6, 0x2c, 0x99, 0xc2, 0x55,
-0xb8, 0x9c, 0x86, 0xee, 0x0d, 0x8f, 0x1e, 0x3f,
-0xfe, 0x40, 0x6d, 0xa9, 0x29, 0x5e, 0x9e, 0x5e,
-0x55, 0xe8, 0x16, 0x8d, 0xb6, 0xed, 0xdb, 0x67,
-0xe5, 0xe4, 0x96, 0x57, 0x5b, 0xfc, 0x63, 0x49,
-0x68, 0xe8, 0x3a, 0x35, 0xfe, 0x4a, 0x9b, 0x75,
-0xe3, 0xaf, 0x3c, 0x7e, 0xc7, 0x8d, 0x7d, 0x56,
-0x92, 0x77, 0x6b, 0x3a, 0x4a, 0x1a, 0xbc, 0x69,
-0xf3, 0x66, 0xc9, 0x20, 0x1c, 0x1c, 0x1c, 0x34,
-0xdf, 0x7d, 0x66, 0xd4, 0x68, 0xb5, 0xf2, 0xa0,
-0xe0, 0x10, 0xdd, 0x90, 0x9a, 0x68, 0x75, 0xfc,
-0x75, 0x71, 0x71, 0x3d, 0x62, 0x1c, 0x7f, 0x25,
-0x09, 0x7a, 0xf4, 0x51, 0x9d, 0x3e, 0x5c, 0x15,
-0x18, 0x68, 0x74, 0x88, 0xc4, 0x5f, 0x59, 0x71,
-0xa9, 0x87, 0x8c, 0x19, 0x3b, 0x56, 0x7d, 0x1e,
-0x66, 0x65, 0xe7, 0xcc, 0x9d, 0xff, 0xba, 0x24,
-0x3b, 0xd6, 0x74, 0x8e, 0xb3, 0x93, 0xf3, 0xd2,
-0x77, 0xdf, 0xbb, 0x9b, 0x95, 0xd9, 0xb9, 0x4b,
-0x57, 0xcd, 0x77, 0xdb, 0xb4, 0x69, 0x9b, 0x96,
-0xfe, 0xf3, 0x0b, 0x09, 0x99, 0x39, 0x59, 0x3e,
-0xbe, 0x7e, 0x95, 0xba, 0xcb, 0x75, 0xeb, 0xd4,
-0x1b, 0x3c, 0x68, 0xc8, 0xe5, 0x2b, 0x57, 0x2c,
-0x6c, 0x9f, 0x5e, 0xbd, 0x76, 0x2d, 0x20, 0x60,
-0x86, 0x43, 0x7d, 0x47, 0xeb, 0xc7, 0xa7, 0xe6,
-0x4d, 0x09, 0x49, 0x63, 0xed, 0xf4, 0xe2, 0x6f,
-0x7c, 0x62, 0xbc, 0xe5, 0xa9, 0xb1, 0x64, 0xe9,
-0x7b, 0xea, 0x51, 0x5e, 0x9e, 0x4d, 0x4f, 0x9d,
-0x39, 0xad, 0x16, 0x8e, 0x88, 0x88, 0x52, 0x0b,
-0xcb, 0xa8, 0xd8, 0x77, 0xf0, 0x80, 0x5a, 0x78,
-0x4f, 0xdc, 0x3e, 0x75, 0x09, 0xed, 0xe4, 0xe8,
-0xbc, 0xed, 0x8b, 0xed, 0x96, 0x9b, 0xb4, 0xe2,
-0x83, 0x0f, 0x6b, 0x3d, 0x54, 0x4b, 0x73, 0xa0,
-0xdc, 0xa3, 0xd3, 0x67, 0xcf, 0x1a, 0x1d, 0x22,
-0xcf, 0x99, 0xc8, 0xa8, 0x8d, 0x6d, 0xdb, 0xb6,
-0x57, 0xc7, 0x61, 0x85, 0xe4, 0x90, 0x37, 0xfe,
-0xf1, 0x96, 0xfa, 0xff, 0x5c, 0x93, 0x41, 0x25,
-0x49, 0xb4, 0x5a, 0x7e, 0xc8, 0x50, 0x6b, 0xe2,
-0xaf, 0x76, 0x0d, 0x20, 0xf1, 0x77, 0xa6, 0x29,
-0xfe, 0x56, 0xe2, 0x13, 0x3a, 0xfc, 0x97, 0x3b,
-0x77, 0xe1, 0x82, 0x95, 0xab, 0x71, 0x5d, 0x8f,
-0x3c, 0xf2, 0x48, 0xe4, 0xa6, 0x8d, 0x46, 0x95,
-0xeb, 0xfe, 0xfb, 0x57, 0xee, 0xee, 0x0d, 0x9a,
-0x78, 0x68, 0x97, 0x8e, 0x96, 0x99, 0x56, 0xd4,
-0x3b, 0x63, 0x0b, 0x8d, 0x3f, 0x54, 0xba, 0x91,
-0xf6, 0xc3, 0xd4, 0x17, 0x5e, 0xb2, 0x9c, 0x4d,
-0x5b, 0xaa, 0xdf, 0xc9, 0x59, 0x93, 0xf4, 0x5d,
-0x4f, 0x4d, 0x69, 0xfe, 0x8b, 0xe4, 0xbf, 0x1d,
-0x3a, 0x5a, 0x93, 0xff, 0xca, 0xcc, 0x55, 0xe3,
-0xaf, 0x04, 0xa3, 0x39, 0x73, 0x5e, 0x93, 0xdc,
-0xd6, 0xfa, 0xd3, 0xb5, 0x7e, 0xac, 0xcd, 0xfa,
-0xf0, 0x08, 0xdb, 0x7a, 0xb6, 0x9a, 0xbf, 0x9f,
-0xfc, 0xdc, 0xf3, 0x6a, 0xa7, 0x85, 0x84, 0xea,
-0xc7, 0xdf, 0xa4, 0xa3, 0x47, 0xd5, 0xc2, 0xa1,
-0x6b, 0xd7, 0xaa, 0xe3, 0xc4, 0x94, 0xff, 0x1e,
-0x39, 0x62, 0x74, 0x53, 0x4e, 0x1a, 0xe6, 0xbf,
-0x41, 0x46, 0x87, 0x18, 0xe5, 0xbf, 0xa3, 0x47,
-0x8d, 0xd6, 0xe4, 0xbf, 0x92, 0xe9, 0xaf, 0x0d,
-0x0b, 0x73, 0x74, 0x70, 0xb4, 0xbe, 0x73, 0xdc,
-0xdc, 0xdc, 0x25, 0xf4, 0x4b, 0xb4, 0xd5, 0xfc,
-0x7d, 0xd7, 0xae, 0xdd, 0xee, 0x64, 0x66, 0x96,
-0xd7, 0x9c, 0x93, 0x97, 0x3b, 0xde, 0x7f, 0x62,
-0x15, 0x56, 0x71, 0x23, 0x47, 0x8f, 0x91, 0x61,
-0xa3, 0x7b, 0x5d, 0xd9, 0xb9, 0xb9, 0xfe, 0xfe,
-0x13, 0xac, 0x59, 0x47, 0x99, 0x93, 0xae, 0xb8,
-0x75, 0xe7, 0x56, 0x79, 0x25, 0xd1, 0x31, 0xfa,
-0xf1, 0x57, 0x96, 0xd0, 0x96, 0xe7, 0xf8, 0xe2,
-0x25, 0x95, 0x88, 0xbf, 0xe1, 0x7a, 0xf1, 0xd7,
-0xdd, 0xad, 0xc1, 0xc1, 0xf8, 0x43, 0x6a, 0xe1,
-0xb8, 0xfd, 0x07, 0xeb, 0xd8, 0x68, 0x2f, 0xca,
-0xc9, 0x94, 0xff, 0x56, 0x10, 0x7f, 0x75, 0xf3,
-0x5f, 0x37, 0x57, 0x37, 0xdd, 0x5d, 0xee, 0x92,
-0xd2, 0x0f, 0x05, 0xd6, 0x6f, 0xd8, 0xd0, 0x58,
-0xd9, 0xd8, 0xb1, 0xde, 0xdc, 0xf9, 0xf3, 0xd5,
-0x6a, 0xb3, 0x72, 0x72, 0xbc, 0xbd, 0x7d, 0xd5,
-0xc2, 0xd6, 0xc4, 0x5f, 0xb5, 0x31, 0x35, 0xaa,
-0xd7, 0x08, 0x98, 0x1e, 0x40, 0xfc, 0x85, 0xf5,
-0x52, 0xd3, 0xd2, 0x9c, 0x9c, 0x9c, 0xab, 0x3c,
-0xaa, 0x45, 0xe3, 0xc6, 0x1e, 0x71, 0xfb, 0xf7,
-0x17, 0xe9, 0xbd, 0x87, 0xa3, 0x9b, 0xff, 0x56,
-0x4d, 0x9b, 0x36, 0xed, 0x4e, 0x9e, 0xd2, 0xd9,
-0x41, 0x2a, 0x29, 0xfd, 0x10, 0x67, 0xbc, 0xff,
-0x84, 0x5a, 0x35, 0xb5, 0xcb, 0xe9, 0x72, 0x32,
-0xd3, 0x1d, 0xea, 0x3b, 0x48, 0xb0, 0x70, 0x71,
-0x76, 0xb3, 0xb3, 0xb5, 0x53, 0xf7, 0x2a, 0x9d,
-0x9d, 0x5c, 0x8e, 0x3c, 0x18, 0x74, 0x24, 0x8b,
-0xd4, 0x8d, 0x1d, 0x95, 0xd5, 0xae, 0x43, 0xbb,
-0xec, 0x9c, 0x9c, 0xf2, 0x6a, 0x25, 0xfe, 0x4a,
-0x20, 0xd3, 0xd9, 0x7f, 0xae, 0xa9, 0xb3, 0xff,
-0x1c, 0xbb, 0x6b, 0x97, 0x1a, 0x49, 0xcb, 0xd4,
-0xac, 0x51, 0x53, 0x2e, 0xc4, 0xd5, 0xc5, 0xcd,
-0xc9, 0xd1, 0x49, 0xf3, 0x1c, 0x6b, 0xf2, 0x70,
-0x13, 0xa9, 0x4d, 0x53, 0x3e, 0x60, 0xc6, 0x4c,
-0xb5, 0xdf, 0x8c, 0xf2, 0x5f, 0xdd, 0xf8, 0x6b,
-0xb4, 0xff, 0x5c, 0x51, 0xfe, 0x5b, 0xf9, 0xf8,
-0xdb, 0xb3, 0x97, 0x7a, 0xc8, 0xb8, 0x71, 0xe3,
-0x34, 0xf1, 0xf7, 0xfc, 0xc5, 0x8b, 0xcd, 0x9b,
-0xea, 0x2f, 0x90, 0x24, 0x74, 0x4a, 0x9c, 0x92,
-0xce, 0x71, 0x71, 0x76, 0xad, 0x5b, 0xe7, 0x81,
-0xae, 0x36, 0x7d, 0x92, 0x6b, 0x57, 0x5f, 0x53,
-0xbe, 0x4f, 0x9f, 0xbe, 0x72, 0xde, 0xf2, 0x9a,
-0x25, 0xcf, 0x9a, 0x3e, 0x3d, 0xc0, 0x7c, 0x90,
-0xc8, 0xba, 0xce, 0xb1, 0xbe, 0xe3, 0x4f, 0x15,
-0x2a, 0xf7, 0xae, 0x9c, 0x8c, 0xc0, 0x39, 0xaf,
-0xbe, 0xaa, 0x7e, 0xce, 0x9e, 0x99, 0x9d, 0x29,
-0xfd, 0x5f, 0x85, 0xc1, 0x33, 0x64, 0xc8, 0x50,
-0xf3, 0x8f, 0x45, 0x36, 0xc7, 0xc4, 0xe8, 0xee,
-0x3f, 0x5b, 0xf8, 0x08, 0xa0, 0xcc, 0xa2, 0xc5,
-0x3a, 0xfb, 0xcf, 0x86, 0xf9, 0x6f, 0x94, 0x6e,
-0xfc, 0x75, 0x3f, 0x70, 0x48, 0x67, 0xff, 0x79,
-0x4f, 0x5c, 0x9c, 0x9a, 0xc6, 0x3a, 0x3a, 0x38,
-0xed, 0x88, 0x8d, 0xb5, 0xdc, 0xa4, 0x65, 0xcb,
-0x3f, 0x50, 0x57, 0xcb, 0x32, 0x0d, 0x75, 0xf3,
-0xdf, 0xa2, 0xe2, 0xa2, 0xa8, 0x4d, 0x9b, 0x2c,
-0xac, 0xb5, 0x64, 0x64, 0xda, 0xdb, 0xd9, 0xcb,
-0x0d, 0x92, 0x01, 0x29, 0x33, 0x5d, 0x77, 0x1d,
-0xfe, 0xda, 0xbc, 0x79, 0xea, 0xee, 0x84, 0x04,
-0xd9, 0xa1, 0xc3, 0x87, 0xa9, 0x85, 0x87, 0x0d,
-0x1b, 0x5e, 0x85, 0xf8, 0x4b, 0xfe, 0x8b, 0xca,
-0xca, 0xce, 0xc9, 0x36, 0xdf, 0x48, 0x91, 0x67,
-0x48, 0x7d, 0xbb, 0xfa, 0x1e, 0x8d, 0x3d, 0x1e,
-0x6b, 0xd3, 0xba, 0xc7, 0xe3, 0x8f, 0xf7, 0x7c,
-0xbc, 0x67, 0xab, 0x56, 0x6d, 0xdc, 0x5c, 0xdc,
-0x2d, 0x2c, 0xdd, 0x65, 0xd4, 0x0d, 0x1b, 0xe6,
-0x9d, 0x71, 0xfb, 0x96, 0x5a, 0xf9, 0xb3, 0x7a,
-0xf9, 0xaf, 0xf9, 0x73, 0x52, 0x26, 0x4b, 0xdf,
-0x7e, 0xfd, 0x67, 0xcd, 0x9e, 0xbd, 0x60, 0xe1,
-0xa2, 0x97, 0xa7, 0x4d, 0xef, 0xd6, 0xad, 0x47,
-0xbd, 0x3a, 0xf5, 0x8c, 0xa6, 0xd8, 0x8c, 0x59,
-0xb3, 0xd5, 0x77, 0xb1, 0xee, 0x17, 0x15, 0x86,
-0x87, 0x47, 0xe8, 0x3e, 0x15, 0xe5, 0x5a, 0x9a,
-0x7a, 0x35, 0x9b, 0x3c, 0xf9, 0xf9, 0xb0, 0x0d,
-0xeb, 0xf7, 0xc6, 0xed, 0x93, 0xb0, 0x72, 0xf0,
-0x50, 0xc2, 0xd6, 0x2f, 0x62, 0x65, 0xed, 0xed,
-0x3f, 0x61, 0x52, 0xeb, 0xc7, 0x5a, 0xdb, 0xd9,
-0xda, 0x97, 0xa5, 0x39, 0x92, 0x5f, 0x6b, 0x1e,
-0x62, 0xd7, 0x52, 0xae, 0x1b, 0xed, 0x3f, 0x97,
-0x3d, 0xde, 0xe5, 0x51, 0xec, 0xe2, 0xe4, 0x6a,
-0xfa, 0x6a, 0x51, 0xff, 0xfe, 0x03, 0x64, 0xaa,
-0x96, 0x57, 0x6b, 0x8a, 0xbf, 0x6b, 0x74, 0xe2,
-0xaf, 0xba, 0xff, 0x9c, 0x7f, 0xaf, 0x60, 0xea,
-0xd4, 0x17, 0x74, 0xfb, 0x41, 0x5a, 0xbe, 0x68,
-0xf1, 0x92, 0x6d, 0x5f, 0x6c, 0x3f, 0x7c, 0x24,
-0x69, 0xdf, 0xfe, 0x03, 0xa1, 0x6b, 0xc3, 0x7c,
-0x7c, 0x7c, 0x25, 0x85, 0xb7, 0x90, 0xb2, 0xcd,
-0x9d, 0x3b, 0x4f, 0xbd, 0x3b, 0xbf, 0x48, 0xfc,
-0x8d, 0x3f, 0x6c, 0xf8, 0xe1, 0xa3, 0x61, 0xfc,
-0xb5, 0xb8, 0xff, 0xdc, 0xab, 0xa7, 0xce, 0xfe,
-0xb3, 0x9a, 0xff, 0x7e, 0xf4, 0xc9, 0x27, 0xea,
-0x32, 0x43, 0x86, 0xa2, 0xac, 0x06, 0x5f, 0x99,
-0x35, 0x5b, 0x52, 0x45, 0x49, 0xcc, 0x0f, 0x1e,
-0x3a, 0x1c, 0x1d, 0x13, 0x33, 0x65, 0xca, 0x54,
-0x8f, 0xc6, 0x0f, 0x5b, 0xf8, 0x80, 0x78, 0xd0,
-0xa0, 0xc1, 0xe6, 0xef, 0xbb, 0xde, 0x2b, 0xbc,
-0xff, 0xf7, 0x37, 0xde, 0x94, 0x01, 0xef, 0x60,
-0xef, 0xd0, 0xa3, 0xc7, 0xe3, 0xd3, 0xa6, 0x4d,
-0x0f, 0x0e, 0x09, 0xdd, 0xb5, 0x67, 0x8f, 0x54,
-0x78, 0xe0, 0x60, 0x42, 0xd4, 0xe6, 0x4d, 0x7f,
-0xfd, 0xdb, 0xff, 0xc8, 0x04, 0xd1, 0xad, 0xb0,
-0x79, 0xb3, 0x16, 0x97, 0x2e, 0x7f, 0xa3, 0xb9,
-0xa8, 0x4d, 0xd1, 0x31, 0x2e, 0x2e, 0x2e, 0x46,
-0x73, 0x47, 0x6e, 0x5c, 0xcf, 0x9e, 0xbd, 0x5e,
-0x7e, 0x79, 0xfa, 0x82, 0xb7, 0x17, 0xbd, 0xf9,
-0xd6, 0xdb, 0x53, 0x5f, 0x78, 0xa9, 0x7f, 0xbf,
-0x01, 0x8d, 0x1a, 0x36, 0x92, 0x89, 0xf0, 0xf4,
-0xd3, 0x23, 0xb3, 0x72, 0xb2, 0xcd, 0xeb, 0xd1,
-0x8d, 0xbf, 0xf1, 0x89, 0x15, 0xe4, 0xbf, 0x0b,
-0xf5, 0x3e, 0xff, 0xad, 0x64, 0xfc, 0x6d, 0x60,
-0x7d, 0xfc, 0x95, 0x35, 0xe1, 0x8e, 0x9d, 0x3b,
-0x2d, 0x37, 0xc9, 0x94, 0xff, 0xea, 0xc4, 0x5f,
-0xfd, 0xfd, 0x67, 0x99, 0x1a, 0xdd, 0xba, 0x75,
-0xd7, 0x9d, 0x89, 0xf5, 0xed, 0x1c, 0x64, 0xf0,
-0x2f, 0x59, 0xfa, 0xde, 0xb6, 0xed, 0xb1, 0xb2,
-0x14, 0x3c, 0x92, 0x78, 0x54, 0x4e, 0xbd, 0x66,
-0xdd, 0xba, 0xd9, 0x73, 0x66, 0xf7, 0xe8, 0xde,
-0xc3, 0xd5, 0xc5, 0xb5, 0x7c, 0xd0, 0x1a, 0xc5,
-0x5f, 0xfd, 0xfd, 0xe7, 0x61, 0x55, 0xc9, 0x7f,
-0x89, 0xbf, 0xa8, 0x2c, 0x59, 0x5b, 0x76, 0xec,
-0xd8, 0x59, 0x06, 0x8f, 0x2c, 0x20, 0x07, 0x0c,
-0x78, 0xe2, 0xf5, 0xd7, 0xff, 0xbe, 0x63, 0x67,
-0xec, 0xc5, 0x4b, 0xc9, 0xe9, 0xb7, 0x6f, 0xe7,
-0xe4, 0xe6, 0x65, 0x66, 0xe7, 0xdc, 0xcc, 0x48,
-0xff, 0xf7, 0x57, 0x27, 0x96, 0x2d, 0x5f, 0x21,
-0x53, 0xc0, 0xe8, 0x93, 0x17, 0xc9, 0x32, 0x3e,
-0xfb, 0x7c, 0xab, 0x5a, 0xb9, 0xee, 0xbf, 0xbf,
-0x51, 0xae, 0x5d, 0xdb, 0x76, 0xe1, 0x11, 0x1b,
-0x33, 0xb3, 0x7e, 0x1e, 0xe7, 0x69, 0xe9, 0x19,
-0x2b, 0x56, 0x7e, 0xd8, 0xc0, 0xbd, 0x81, 0x6e,
-0x79, 0xc9, 0xec, 0xce, 0x5c, 0xd0, 0x4e, 0xcf,
-0x6f, 0x2e, 0x5f, 0xee, 0xdc, 0xb9, 0x8b, 0x5a,
-0x58, 0x32, 0xc7, 0xbf, 0x4d, 0x9b, 0x26, 0x59,
-0x52, 0x61, 0xb1, 0x4e, 0x62, 0x5e, 0x58, 0x54,
-0x2c, 0x11, 0x36, 0x3c, 0x72, 0xe3, 0xa8, 0xd1,
-0x63, 0x65, 0xbd, 0x51, 0x9a, 0xff, 0x3e, 0xb0,
-0xff, 0x7c, 0x37, 0x2b, 0x6b, 0xf0, 0x60, 0xed,
-0x8b, 0x3a, 0xd5, 0xff, 0x13, 0x01, 0x9f, 0x7e,
-0x66, 0x64, 0x7c, 0xe2, 0x91, 0x63, 0x5f, 0xfe,
-0xfb, 0xf8, 0x57, 0x5f, 0x99, 0x9c, 0x30, 0x74,
-0xee, 0xc2, 0x79, 0xf3, 0x35, 0x43, 0xf1, 0x8f,
-0x12, 0xc8, 0xf4, 0xf2, 0x5f, 0xe5, 0xfd, 0xab,
-0xab, 0xd7, 0xaf, 0x75, 0xec, 0xd0, 0x49, 0x3d,
-0xfb, 0xc0, 0x27, 0x06, 0x9e, 0x55, 0xf6, 0xe8,
-0x72, 0xf3, 0x73, 0x25, 0x39, 0x6a, 0xd6, 0xbc,
-0x99, 0x51, 0x08, 0xfe, 0xc7, 0x82, 0xb7, 0xd5,
-0x4e, 0x08, 0x0a, 0xf9, 0x05, 0xe2, 0xaf, 0x85,
-0xe4, 0xcb, 0x30, 0xfe, 0xae, 0x5e, 0x6d, 0x74,
-0x88, 0xd1, 0xfe, 0xb3, 0x26, 0xff, 0xcd, 0x2b,
-0xc8, 0x1f, 0xf7, 0xec, 0x78, 0xb5, 0x58, 0x8b,
-0xe6, 0x2d, 0x63, 0x77, 0xed, 0xd2, 0xd4, 0x29,
-0xf1, 0x34, 0xe1, 0xc8, 0x91, 0xde, 0x7d, 0xfa,
-0xd5, 0xac, 0xae, 0x3f, 0x7a, 0x65, 0xf5, 0x68,
-0xfe, 0x72, 0x5a, 0x61, 0x71, 0x51, 0xc8, 0x9a,
-0xb5, 0xd3, 0xa6, 0xcf, 0xdc, 0x1e, 0x1b, 0x7b,
-0x27, 0xf3, 0xae, 0xfa, 0xd0, 0x2e, 0x2c, 0x2a,
-0xda, 0x1b, 0x17, 0xd7, 0xb6, 0x6d, 0x3b, 0xb5,
-0x2a, 0x09, 0x9a, 0x61, 0x61, 0xeb, 0xcd, 0x0f,
-0xb9, 0x75, 0x27, 0xa3, 0x6f, 0xdf, 0xbe, 0xba,
-0xe7, 0x95, 0xf5, 0xe1, 0x53, 0x43, 0x87, 0xee,
-0xdc, 0xbd, 0xfb, 0xce, 0x5d, 0xb3, 0x77, 0xff,
-0x7e, 0x2c, 0xc9, 0xcd, 0xcb, 0x3f, 0x7b, 0xfe,
-0x6c, 0x60, 0x70, 0xf0, 0xea, 0xc0, 0x60, 0xf3,
-0x97, 0xe7, 0x7f, 0x9b, 0xf7, 0xaf, 0x8c, 0xe2,
-0xaf, 0xee, 0xfe, 0xb3, 0x6e, 0xfc, 0xb5, 0xe6,
-0xfd, 0xab, 0x65, 0x2b, 0x3e, 0x50, 0x5f, 0xdc,
-0x32, 0x7a, 0xff, 0x6a, 0x5a, 0xc0, 0x2b, 0xba,
-0xbb, 0x5b, 0x7d, 0xfb, 0xf6, 0xfb, 0x6c, 0xeb,
-0x56, 0xdd, 0x17, 0x95, 0x8b, 0x4b, 0x4a, 0x32,
-0xb3, 0x32, 0x0f, 0x27, 0x25, 0x05, 0xcc, 0x9c,
-0xd5, 0xb2, 0x65, 0xab, 0x9a, 0x35, 0x6a, 0xbe,
-0x36, 0x77, 0x9e, 0xfa, 0xb3, 0x72, 0x46, 0xf1,
-0x77, 0x68, 0x55, 0xf3, 0xdf, 0x80, 0x00, 0xf6,
-0x9f, 0x51, 0x39, 0xcf, 0x4d, 0x79, 0xf1, 0xb9,
-0xe7, 0xa7, 0xc4, 0xed, 0xdf, 0x2f, 0x39, 0xac,
-0xd1, 0x4f, 0x52, 0x14, 0x16, 0x17, 0x7e, 0x77,
-0xf5, 0xea, 0xdc, 0xb9, 0xf3, 0x8d, 0xf6, 0xdf,
-0xa4, 0x06, 0x75, 0x22, 0x58, 0xd8, 0x7f, 0xf6,
-0xf0, 0xf0, 0x38, 0x7a, 0xfc, 0x98, 0xba, 0x59,
-0x27, 0x0d, 0xf8, 0x74, 0x75, 0x90, 0xee, 0x5e,
-0x93, 0x4d, 0xed, 0x3a, 0x4b, 0xdf, 0x7b, 0x5f,
-0xf3, 0x7a, 0xff, 0xfb, 0xcb, 0x96, 0xab, 0x1f,
-0x24, 0xc9, 0x5a, 0xe2, 0x9d, 0x77, 0x16, 0x9a,
-0xe7, 0x0e, 0xba, 0xe4, 0x39, 0x29, 0x65, 0xf6,
-0xc4, 0xed, 0x9f, 0x1e, 0x10, 0x70, 0x52, 0x79,
-0x16, 0x1d, 0x4e, 0x4c, 0xea, 0xd4, 0x49, 0x27,
-0xb2, 0x0b, 0x49, 0xdb, 0x57, 0x07, 0x85, 0x54,
-0xe1, 0x45, 0x47, 0xa3, 0xcf, 0x7f, 0x85, 0x26,
-0xfe, 0x9e, 0x3a, 0x73, 0x46, 0x32, 0x14, 0x4d,
-0x19, 0xc9, 0xf8, 0xb6, 0x7c, 0xf6, 0x99, 0xee,
-0x4b, 0x3e, 0xd2, 0x93, 0x3b, 0x77, 0xed, 0x96,
-0x44, 0x4f, 0xb7, 0xc1, 0x0b, 0x17, 0x2f, 0x52,
-0x0f, 0x09, 0x0a, 0x09, 0xfe, 0xff, 0xc7, 0xdf,
-0x04, 0x4b, 0xf9, 0xef, 0x09, 0x83, 0xfd, 0x67,
-0x8b, 0xef, 0x3f, 0xeb, 0xed, 0x3f, 0x6b, 0xf2,
-0xdf, 0x8c, 0x5b, 0x19, 0xfd, 0xfa, 0xf5, 0x53,
-0x8b, 0xbd, 0xf1, 0xe6, 0x5b, 0xba, 0x3f, 0xb9,
-0x29, 0x3d, 0x76, 0xe6, 0xdc, 0xf9, 0x6e, 0xdd,
-0x7b, 0xe8, 0x76, 0x8e, 0xac, 0xa6, 0x34, 0x4f,
-0xe6, 0xdc, 0x82, 0x3c, 0x21, 0x8b, 0x25, 0xa3,
-0x76, 0x4a, 0x08, 0x5e, 0xb5, 0x3a, 0x48, 0xad,
-0x4a, 0xba, 0x68, 0xce, 0xab, 0xaf, 0x95, 0x4f,
-0x22, 0x59, 0x7a, 0x85, 0x47, 0x46, 0xd8, 0xdb,
-0xda, 0xab, 0x25, 0x25, 0xfb, 0x9b, 0xfc, 0xdc,
-0xf3, 0xd7, 0x53, 0x53, 0x8c, 0x5e, 0xd9, 0x92,
-0x63, 0x35, 0x93, 0x71, 0x73, 0xcc, 0x16, 0x83,
-0xfd, 0x67, 0xc3, 0x8f, 0xe0, 0xcb, 0x2c, 0xd2,
-0x8d, 0xbf, 0x5e, 0x4d, 0x4f, 0x9f, 0xad, 0x44,
-0xfc, 0x35, 0xca, 0x7f, 0xd5, 0xd9, 0x67, 0xcd,
-0xfe, 0xf3, 0xfb, 0xcb, 0x97, 0x5b, 0xb9, 0xff,
-0x2c, 0x8f, 0x1d, 0x17, 0x57, 0xed, 0xee, 0x81,
-0x44, 0xba, 0xc1, 0x83, 0x86, 0x7c, 0x9d, 0x9c,
-0x5c, 0xe1, 0xcf, 0x0b, 0xcb, 0x02, 0xe6, 0x62,
-0xf2, 0xa5, 0x05, 0xef, 0x2c, 0x0c, 0xd2, 0x1b,
-0x75, 0x46, 0xfb, 0xcf, 0x4f, 0x0d, 0x1f, 0x5a,
-0xb5, 0xf8, 0xfb, 0xca, 0x2b, 0xb3, 0x78, 0xff,
-0x19, 0x95, 0x72, 0xf5, 0x7a, 0x4a, 0x6e, 0x5e,
-0xae, 0x35, 0x25, 0xb3, 0x73, 0xb2, 0x7d, 0x7c,
-0xfd, 0x6a, 0x54, 0xd7, 0x49, 0xb2, 0x3a, 0x77,
-0xea, 0x7c, 0x2d, 0x45, 0xfb, 0xb3, 0x7b, 0xba,
-0xef, 0x5f, 0x55, 0x2f, 0x7d, 0x5f, 0x74, 0xe1,
-0xe2, 0x25, 0x46, 0x67, 0xc9, 0xb8, 0x9d, 0x31,
-0xde, 0xdf, 0x5f, 0xf7, 0x40, 0x5f, 0x5f, 0x3f,
-0xf3, 0x79, 0x21, 0xb3, 0x60, 0xd0, 0xa0, 0xc1,
-0x6a, 0xb1, 0x71, 0xe3, 0xfd, 0xd3, 0xd2, 0x6f,
-0x5a, 0xdf, 0x03, 0xa6, 0x7f, 0x61, 0x40, 0x59,
-0xb5, 0x4a, 0x44, 0xdb, 0xb3, 0x77, 0xaf, 0x93,
-0xc1, 0xeb, 0xb5, 0x9e, 0x9e, 0x9e, 0x3b, 0x62,
-0x2b, 0xd8, 0x64, 0x53, 0x59, 0x1f, 0x7f, 0x75,
-0x83, 0x97, 0xb3, 0x93, 0xf3, 0xa9, 0xd3, 0x3a,
-0x7b, 0x86, 0xe5, 0x0d, 0x7e, 0x75, 0xee, 0x5c,
-0xdd, 0x7d, 0xd1, 0xe5, 0x2b, 0x3e, 0x50, 0xcb,
-0xff, 0x22, 0xf1, 0xd7, 0xc2, 0xfb, 0x57, 0x86,
-0xf1, 0xd7, 0x72, 0xfe, 0x6b, 0x45, 0xfc, 0xfd,
-0xe1, 0x66, 0x5a, 0x77, 0x25, 0x98, 0x4a, 0xf3,
-0x36, 0x44, 0x46, 0x5a, 0xe8, 0xfc, 0xb0, 0xf5,
-0x1b, 0xec, 0x6c, 0x75, 0xe2, 0xd7, 0xe8, 0x31,
-0x63, 0x2d, 0xfc, 0x2b, 0x22, 0x46, 0xe2, 0x0f,
-0x1f, 0x56, 0xab, 0xaa, 0xf1, 0x97, 0xff, 0x63,
-0xef, 0xba, 0x83, 0xa2, 0x4a, 0xb6, 0xfe, 0x3f,
-0xc6, 0x05, 0x95, 0x8c, 0x84, 0x25, 0x09, 0x0a,
-0x98, 0x40, 0x17, 0x30, 0xad, 0x88, 0x04, 0x73,
-0x76, 0x15, 0x31, 0x3e, 0x15, 0x10, 0x94, 0xa4,
-0xae, 0x6b, 0x40, 0x05, 0xc3, 0xaa, 0x80, 0xa8,
-0xa0, 0xa2, 0x6b, 0x06, 0x23, 0x62, 0xc2, 0x8c,
-0xa8, 0xeb, 0x02, 0x4a, 0x0e, 0x2a, 0xa0, 0x32,
-0x60, 0x24, 0x07, 0x45, 0xb2, 0xb0, 0x55, 0xdf,
-0x19, 0x46, 0xe7, 0x0d, 0xb7, 0x4f, 0xdf, 0x49,
-0xb8, 0xaf, 0xde, 0xf7, 0xa6, 0xea, 0x57, 0x16,
-0x33, 0xf6, 0xed, 0xb9, 0xb7, 0x6f, 0x77, 0xff,
-0xce, 0x39, 0x7d, 0x42, 0x47, 0x67, 0x17, 0x57,
-0x7e, 0x44, 0x00, 0xcc, 0xab, 0x05, 0x0b, 0x17,
-0xa1, 0xeb, 0x05, 0xd4, 0xfc, 0xdc, 0x97, 0x42,
-0xc2, 0xf7, 0x18, 0x38, 0x1f, 0x19, 0x89, 0xfa,
-0x03, 0x08, 0xb5, 0x3f, 0xef, 0xdc, 0x15, 0x48,
-0x5e, 0x25, 0x26, 0xff, 0xe2, 0xe7, 0xbf, 0x31,
-0xf7, 0xee, 0x91, 0xfe, 0x81, 0x30, 0x4b, 0x6f,
-0x11, 0x56, 0x08, 0x06, 0x44, 0xe4, 0x5f, 0x58,
-0x2f, 0x87, 0xfe, 0x38, 0x42, 0xde, 0x0f, 0x70,
-0xdf, 0x93, 0xc4, 0x44, 0xd1, 0x93, 0x75, 0x34,
-0x7e, 0x69, 0xfa, 0x84, 0xf1, 0x29, 0x4d, 0xff,
-0x1d, 0x37, 0x4e, 0x42, 0xfd, 0xd7, 0xcb, 0xcb,
-0x4b, 0xa6, 0xff, 0xca, 0xf0, 0xfd, 0x70, 0x27,
-0x26, 0x16, 0x16, 0x23, 0x39, 0x63, 0xf5, 0xf5,
-0xf4, 0x13, 0x93, 0x13, 0x19, 0x8d, 0x69, 0xfa,
-0xaf, 0xa5, 0xe5, 0x90, 0xd7, 0xef, 0xde, 0xb2,
-0xfc, 0xca, 0xa3, 0xb8, 0x78, 0xd4, 0xef, 0xd7,
-0x40, 0xdf, 0xe0, 0x15, 0x87, 0xc3, 0x6f, 0x96,
-0x92, 0x9e, 0xae, 0xa9, 0xa1, 0xc5, 0x68, 0x03,
-0xec, 0x96, 0x4a, 0xf1, 0xd4, 0x92, 0x00, 0x27,
-0xc3, 0xc3, 0x35, 0x35, 0x99, 0x3f, 0xc1, 0x83,
-0x9e, 0xae, 0x5e, 0x4a, 0x5a, 0x8a, 0x58, 0x19,
-0x7b, 0x68, 0xf1, 0x47, 0xa4, 0xff, 0x73, 0x76,
-0x6e, 0xae, 0x71, 0x1f, 0x13, 0x46, 0x33, 0xb9,
-0x1f, 0xe4, 0x59, 0xce, 0x5b, 0x5b, 0xb8, 0xf9,
-0x10, 0x9e, 0x1a, 0x19, 0xf5, 0x26, 0x6f, 0x35,
-0x78, 0xef, 0x3e, 0xb2, 0x71, 0xfb, 0x9c, 0xff,
-0xd2, 0x9d, 0x6f, 0xa9, 0xfe, 0xcf, 0xac, 0xfc,
-0x3b, 0xf2, 0x67, 0xc4, 0x5a, 0xcb, 0x88, 0xff,
-0xad, 0xfc, 0x58, 0x39, 0x7e, 0x02, 0xa2, 0xb6,
-0x84, 0x86, 0x1e, 0x60, 0x19, 0x9c, 0xa2, 0xe2,
-0x22, 0x7b, 0x7b, 0x07, 0xf2, 0x2a, 0x27, 0xa7,
-0xb9, 0x2c, 0xae, 0xf5, 0x28, 0x40, 0x39, 0x85,
-0x89, 0x41, 0x76, 0x05, 0xfc, 0xbb, 0xd4, 0xd9,
-0x85, 0x9f, 0x2a, 0x24, 0x2f, 0x9f, 0x43, 0x1a,
-0x31, 0x3a, 0xb4, 0x5a, 0x9e, 0xaf, 0xdf, 0xbc,
-0x29, 0x6e, 0xee, 0xac, 0x48, 0x8a, 0xfe, 0x2b,
-0xd4, 0xfe, 0x8c, 0xea, 0xbf, 0xe2, 0x9e, 0xff,
-0xa2, 0xf6, 0x67, 0x94, 0x7f, 0x45, 0xf1, 0x7f,
-0xde, 0xb3, 0x77, 0x1f, 0xa9, 0x38, 0x93, 0xfc,
-0x5b, 0xf9, 0xa9, 0x6a, 0xe6, 0x2f, 0xb3, 0xc8,
-0x41, 0x5e, 0x8b, 0x39, 0x33, 0x4b, 0x00, 0x69,
-0xce, 0x7f, 0xc9, 0xf8, 0x5f, 0x99, 0xff, 0xb3,
-0x0c, 0xdf, 0x1b, 0xcf, 0x73, 0xb3, 0x8d, 0xfb,
-0x18, 0x63, 0x2b, 0x54, 0x23, 0xf6, 0xfe, 0x7d,
-0x46, 0x63, 0x1a, 0xff, 0xae, 0x59, 0xb3, 0x96,
-0xb4, 0x3c, 0x0b, 0xa2, 0xba, 0xa6, 0xc6, 0xb4,
-0x6f, 0x7f, 0xf2, 0x42, 0x90, 0xff, 0x1f, 0xfc,
-0xf9, 0x75, 0x1f, 0x80, 0xed, 0x2b, 0xe2, 0xcc,
-0x99, 0xee, 0xf2, 0x4c, 0x8d, 0xc0, 0xc2, 0xc2,
-0xaa, 0x1d, 0x4d, 0x40, 0x9f, 0x6b, 0x3e, 0xef,
-0xd8, 0xb1, 0xb3, 0x1b, 0xf1, 0x2b, 0x3c, 0x38,
-0x38, 0x38, 0x64, 0xe7, 0x0a, 0xc9, 0x3e, 0xc4,
-0xc0, 0xb1, 0x13, 0x22, 0xc5, 0xff, 0x96, 0x94,
-0x96, 0x8e, 0x1c, 0x89, 0x78, 0x22, 0xf9, 0xfb,
-0x6f, 0x61, 0x59, 0xe0, 0x65, 0x95, 0x65, 0x13,
-0x30, 0x7b, 0x5a, 0xe8, 0x7e, 0x84, 0x98, 0xbe,
-0x37, 0xff, 0x4a, 0x76, 0xfe, 0x8b, 0xc6, 0xff,
-0x3a, 0x3a, 0x3a, 0x0a, 0xf2, 0x6f, 0x7d, 0x63,
-0xa3, 0xb3, 0xcb, 0x32, 0xb2, 0xd9, 0xac, 0xd9,
-0xb3, 0x51, 0x3f, 0xc0, 0x6f, 0x57, 0x35, 0xac,
-0x5d, 0xbb, 0x8e, 0xbc, 0x6a, 0xf1, 0xe2, 0x25,
-0x62, 0xbd, 0xc1, 0xc6, 0x2f, 0x8d, 0x89, 0x49,
-0x49, 0x23, 0x46, 0x20, 0xf7, 0xd9, 0xa9, 0x63,
-0xa7, 0x95, 0xab, 0x57, 0xf3, 0xa7, 0xdf, 0xfd,
-0x07, 0x0f, 0x51, 0x8d, 0xb5, 0x5f, 0xbf, 0xfe,
-0xa8, 0x3a, 0xc6, 0x8e, 0xff, 0x20, 0xff, 0xb6,
-0xe6, 0xdf, 0x40, 0xe3, 0x7f, 0x11, 0xfb, 0xb3,
-0x14, 0xfc, 0xcb, 0xf4, 0xbf, 0xe2, 0x14, 0x14,
-0xf0, 0xbc, 0x53, 0x18, 0xfd, 0xdf, 0xbd, 0x7b,
-0x57, 0xdc, 0xd1, 0x43, 0x21, 0xf3, 0xbf, 0x92,
-0xe1, 0xbf, 0x0b, 0xe9, 0x59, 0x59, 0xbd, 0x30,
-0x91, 0x5e, 0x4d, 0x45, 0x8d, 0x3c, 0xf4, 0x41,
-0xf9, 0xb7, 0x4b, 0xe7, 0x2e, 0xd7, 0x6f, 0x08,
-0x71, 0xcf, 0x00, 0xcc, 0x5f, 0x88, 0xd4, 0x6e,
-0x00, 0x84, 0x9f, 0x3d, 0xcb, 0x6b, 0xd0, 0xf8,
-0xa5, 0xc9, 0x7f, 0xcb, 0x16, 0x86, 0x63, 0x06,
-0x10, 0x99, 0x8b, 0x9b, 0x7b, 0x4b, 0xab, 0x5f,
-0x19, 0xd7, 0xf1, 0xe9, 0x6f, 0xee, 0x1f, 0xcd,
-0x2d, 0xcd, 0x00, 0xf8, 0xc8, 0xfd, 0x12, 0xfd,
-0xf8, 0x37, 0xf7, 0x23, 0xef, 0x7b, 0xf2, 0x4e,
-0x60, 0xab, 0xf4, 0xf4, 0xf2, 0xee, 0x8a, 0xe9,
-0xe3, 0xb0, 0xe2, 0x66, 0xce, 0x9a, 0x5d, 0x5a,
-0x21, 0x6a, 0x39, 0x63, 0xd1, 0xfd, 0xaf, 0x40,
-0x3e, 0xf1, 0xf0, 0x44, 0x82, 0x56, 0x0c, 0xf4,
-0x0d, 0xa2, 0x2e, 0x5f, 0xa6, 0xe5, 0xd7, 0x85,
-0x9d, 0x9f, 0x0c, 0x75, 0x81, 0xce, 0x81, 0x6a,
-0xc9, 0xc6, 0xed, 0xe2, 0x7f, 0xd5, 0xee, 0xfc,
-0x2b, 0x62, 0xfe, 0xab, 0xe3, 0x27, 0x4e, 0x02,
-0xd9, 0x31, 0x9a, 0x29, 0x29, 0x28, 0xfd, 0xbe,
-0x63, 0x07, 0x35, 0x79, 0xef, 0xdf, 0x2d, 0x27,
-0x4e, 0x21, 0x4a, 0xeb, 0x92, 0x25, 0x4b, 0x45,
-0x7c, 0x7d, 0xb0, 0xeb, 0xa6, 0xa4, 0xa7, 0x6f,
-0xdd, 0xb6, 0x8d, 0x16, 0x1b, 0xde, 0x4d, 0xae,
-0xdb, 0xf1, 0xe3, 0x27, 0xf8, 0xb1, 0x78, 0x61,
-0x87, 0xff, 0x20, 0xdb, 0xc0, 0x14, 0x5d, 0xd6,
-0x3a, 0x45, 0xc5, 0x45, 0x64, 0x94, 0x84, 0xfc,
-0xfb, 0xcf, 0xfb, 0x5f, 0xdd, 0x14, 0xc5, 0xff,
-0x59, 0x84, 0xfc, 0x57, 0x49, 0xc9, 0xa9, 0x5a,
-0x9a, 0xda, 0x8c, 0x66, 0x03, 0xfa, 0x0d, 0xc8,
-0x7d, 0xf1, 0x82, 0xbf, 0xba, 0xbf, 0xe2, 0xdb,
-0xfa, 0x65, 0xff, 0xc8, 0xb8, 0x8d, 0x76, 0xf7,
-0xbf, 0x92, 0xf1, 0xaf, 0x0c, 0xdf, 0x0f, 0xc0,
-0x53, 0xc1, 0xfb, 0x42, 0xd0, 0x24, 0x00, 0x9a,
-0x1a, 0x5a, 0x0f, 0xff, 0x62, 0xe6, 0xe1, 0x99,
-0x3f, 0x1f, 0xe1, 0x5f, 0x58, 0x65, 0xa4, 0x07,
-0x2f, 0x09, 0xd8, 0x48, 0xc9, 0xa5, 0x0d, 0x08,
-0x08, 0x0a, 0xe2, 0x35, 0xa8, 0xad, 0xaf, 0x73,
-0x73, 0x5f, 0x4e, 0x1e, 0x77, 0x9a, 0x9a, 0xf6,
-0x9d, 0x35, 0xdb, 0x11, 0xe0, 0x38, 0xc7, 0xe9,
-0x17, 0xd0, 0x88, 0x1c, 0xe7, 0xc0, 0x1f, 0x3c,
-0xc0, 0xdf, 0xe4, 0xc7, 0x5f, 0xa0, 0x71, 0xeb,
-0x97, 0x8b, 0x16, 0x2f, 0x79, 0x9c, 0xc8, 0x34,
-0xa1, 0xf3, 0x50, 0x5c, 0x5a, 0x36, 0xc7, 0x69,
-0x2e, 0x1a, 0x57, 0x28, 0xd7, 0x55, 0xce, 0xc3,
-0xd3, 0xb3, 0xb2, 0xaa, 0x52, 0xc4, 0x01, 0x44,
-0xf9, 0x17, 0xcd, 0xbf, 0x11, 0x17, 0x17, 0xaf,
-0x4a, 0x84, 0x66, 0xc3, 0xee, 0x0d, 0x9b, 0xa1,
-0xaf, 0xaf, 0x6f, 0x7c, 0x42, 0x42, 0x71, 0x69,
-0x71, 0x6d, 0x7d, 0x2d, 0xa8, 0x63, 0x5c, 0x59,
-0xa2, 0x15, 0x8d, 0x4d, 0x8d, 0x5b, 0xb7, 0x6d,
-0x67, 0x5c, 0x02, 0xbc, 0x79, 0x08, 0x0b, 0xb9,
-0x6d, 0x97, 0xf3, 0x5f, 0x96, 0xf8, 0xdf, 0xf4,
-0x8c, 0x8c, 0x5e, 0x68, 0xfe, 0x2b, 0xf1, 0xcf,
-0x7f, 0x19, 0xfa, 0x2f, 0x20, 0xbf, 0xe0, 0xcd,
-0x20, 0xf3, 0x41, 0xa4, 0xbf, 0x77, 0x77, 0xf9,
-0xee, 0xce, 0xce, 0x2e, 0xb7, 0xef, 0xdc, 0x79,
-0xf7, 0xe1, 0x3d, 0x6c, 0x92, 0x0d, 0x4d, 0x0d,
-0xfc, 0xc1, 0x01, 0x80, 0xe0, 0x47, 0x76, 0xce,
-0xce, 0xbf, 0x20, 0x08, 0x7d, 0x28, 0x2a, 0xbc,
-0x77, 0xff, 0xfe, 0xf6, 0xdf, 0x77, 0xd8, 0xda,
-0xd9, 0x6b, 0x6a, 0x6a, 0xb1, 0x64, 0x44, 0xe9,
-0x6d, 0xd4, 0xfb, 0x79, 0x4e, 0x36, 0xff, 0x5d,
-0xc3, 0x6b, 0x42, 0x26, 0xcc, 0x0f, 0x72, 0xfb,
-0x0f, 0x1e, 0x94, 0x60, 0xf5, 0xd1, 0xf3, 0x5f,
-0x09, 0xcb, 0xbf, 0x21, 0x56, 0xfe, 0x2b, 0xa9,
-0xf9, 0x57, 0x14, 0xfd, 0x77, 0xf7, 0x9e, 0x7d,
-0xa4, 0x40, 0x4b, 0xda, 0x9f, 0x6f, 0xde, 0xba,
-0x4d, 0x7a, 0xaf, 0xa9, 0xa9, 0xa9, 0x4f, 0x9c,
-0x34, 0x99, 0xbf, 0xba, 0xd1, 0x45, 0x4d, 0xfb,
-0x78, 0xf4, 0xc4, 0x09, 0x41, 0x07, 0x4e, 0x7a,
-0xfe, 0x2b, 0x49, 0xfc, 0xaf, 0x64, 0xf6, 0x67,
-0x19, 0xbe, 0x2b, 0x9e, 0x66, 0x67, 0xf7, 0xee,
-0x83, 0x1c, 0x2f, 0x76, 0xe0, 0xfa, 0x23, 0x19,
-0x91, 0x2e, 0xc4, 0x68, 0xfc, 0x91, 0xa1, 0xa1,
-0xd1, 0xeb, 0xb7, 0x6f, 0x84, 0xfe, 0x16, 0xa8,
-0x6c, 0x68, 0x2c, 0xb0, 0x9f, 0x9f, 0x3f, 0xaf,
-0xc1, 0xe7, 0xba, 0x56, 0xe7, 0x16, 0x89, 0x92,
-0x67, 0xa2, 0x50, 0x56, 0x52, 0xb9, 0x1a, 0x1d,
-0x4d, 0xbb, 0x9f, 0xec, 0xdc, 0x5c, 0x6b, 0x1b,
-0x1b, 0xf4, 0x42, 0xd0, 0x4a, 0xf6, 0x86, 0x84,
-0x8a, 0xb2, 0xee, 0xc4, 0xe2, 0xdf, 0xea, 0xcf,
-0x9f, 0x81, 0x4a, 0xd0, 0x98, 0xaf, 0xce, 0x9d,
-0x3a, 0xeb, 0x68, 0xeb, 0xd8, 0xda, 0xd9, 0x2d,
-0x75, 0x71, 0x5e, 0xb7, 0x7e, 0x7d, 0x40, 0x40,
-0x20, 0x0f, 0x3b, 0x77, 0xee, 0x1a, 0x3f, 0x9e,
-0x69, 0x7f, 0x86, 0x1e, 0xc2, 0x0e, 0x23, 0x21,
-0xb7, 0x61, 0x87, 0xda, 0x81, 0x7f, 0x59, 0xf5,
-0xdf, 0xef, 0xe5, 0x7f, 0xd5, 0xd2, 0x1a, 0x55,
-0xb4, 0x2f, 0x24, 0x04, 0x9d, 0x21, 0x30, 0x25,
-0xd4, 0xd5, 0x7a, 0x0e, 0x1b, 0x36, 0x62, 0xfe,
-0x82, 0x85, 0x6b, 0xd7, 0xad, 0xfb, 0x7d, 0xc7,
-0x4e, 0xfe, 0xf8, 0x38, 0xbb, 0xb8, 0x90, 0xed,
-0x59, 0xf8, 0xf7, 0x7d, 0x51, 0xe1, 0xfe, 0x03,
-0x07, 0x6c, 0x6d, 0xed, 0x7a, 0xaa, 0xf7, 0x24,
-0xd5, 0x6d, 0x06, 0xba, 0x74, 0xea, 0xf2, 0xeb,
-0x9a, 0x7f, 0xd7, 0xb9, 0x68, 0xfa, 0xd2, 0x04,
-0x7a, 0x2e, 0xd9, 0x4c, 0x49, 0x51, 0xf9, 0xd2,
-0xe5, 0xcb, 0x12, 0xac, 0xbe, 0xff, 0x22, 0xfe,
-0xbd, 0x75, 0x5b, 0x12, 0xfd, 0x97, 0xe4, 0xdf,
-0xa8, 0xcb, 0x57, 0xbb, 0xc9, 0xe3, 0x09, 0x01,
-0x24, 0x83, 0xb3, 0xab, 0xab, 0x60, 0x98, 0x86,
-0x34, 0xf9, 0x27, 0x65, 0xfa, 0xaf, 0x0c, 0xff,
-0x18, 0xca, 0x2b, 0x2b, 0x0e, 0x84, 0x85, 0xf5,
-0xc1, 0x4e, 0x7e, 0x79, 0x18, 0x6d, 0x33, 0xba,
-0xb4, 0x9c, 0x69, 0x86, 0x45, 0xfd, 0x9f, 0x4d,
-0xfb, 0xf6, 0x2b, 0x2c, 0x12, 0x9e, 0xac, 0xfe,
-0xec, 0xb9, 0x73, 0x68, 0xe0, 0x06, 0x3f, 0x8f,
-0x5c, 0x75, 0x4d, 0xf5, 0xac, 0x59, 0xb3, 0xdb,
-0x71, 0x6d, 0xc2, 0xf2, 0x67, 0x37, 0x8c, 0xbf,
-0xcc, 0xcb, 0xef, 0xdb, 0xb7, 0x3f, 0xca, 0xf8,
-0xaa, 0xca, 0xaa, 0xa8, 0x8e, 0x49, 0x02, 0x3d,
-0xff, 0x45, 0xf3, 0x5f, 0xb5, 0x70, 0x1d, 0x7d,
-0x4b, 0xa6, 0xcf, 0x98, 0x29, 0x71, 0x5e, 0xcd,
-0xaf, 0x9d, 0x77, 0xec, 0x7c, 0x30, 0x0c, 0xe1,
-0xdf, 0x76, 0xd1, 0x7f, 0x25, 0xf0, 0xbf, 0xda,
-0x17, 0x1a, 0x4a, 0xbb, 0x44, 0xc4, 0xf8, 0xdf,
-0xaf, 0x8d, 0xeb, 0xeb, 0xd6, 0xac, 0xdd, 0x80,
-0x52, 0x92, 0x58, 0x00, 0xfe, 0x25, 0x43, 0x8d,
-0xa0, 0xf3, 0xa8, 0x4b, 0x97, 0x40, 0x56, 0x44,
-0xbd, 0x97, 0x49, 0xc0, 0xde, 0xbb, 0x78, 0xe9,
-0x92, 0x92, 0xb2, 0x7f, 0xa7, 0x6b, 0x06, 0xfe,
-0x75, 0x71, 0x45, 0x0e, 0xa9, 0xd1, 0x93, 0x1a,
-0x51, 0x40, 0x3b, 0xff, 0x15, 0x9e, 0xff, 0x4a,
-0xea, 0xf8, 0x23, 0x96, 0xf3, 0x5f, 0x2c, 0xff,
-0x95, 0xf2, 0x95, 0x6b, 0xd7, 0xd8, 0x6f, 0x09,
-0x8d, 0xff, 0x55, 0x57, 0x53, 0x67, 0xe4, 0x9f,
-0x3c, 0x7d, 0xfa, 0x34, 0xd9, 0x4c, 0x1a, 0x78,
-0x7a, 0x79, 0x89, 0xc2, 0xbf, 0xa2, 0xe4, 0xbf,
-0x42, 0xeb, 0x2f, 0xc8, 0xf8, 0x57, 0x86, 0x76,
-0x04, 0x08, 0xf3, 0xef, 0x0a, 0xdf, 0x47, 0x5d,
-0xba, 0x3c, 0x65, 0xea, 0x54, 0x50, 0x0f, 0x69,
-0xca, 0x26, 0x7c, 0xbf, 0x69, 0xd3, 0x66, 0xd2,
-0x89, 0x14, 0xe5, 0x5f, 0x13, 0xd3, 0xbe, 0xa2,
-0x54, 0x19, 0x3b, 0x15, 0x1e, 0xd1, 0x03, 0xe3,
-0xdf, 0x75, 0xbe, 0x1b, 0x79, 0x0d, 0x3e, 0xd7,
-0xd6, 0x38, 0x39, 0xcd, 0x6f, 0xc7, 0xb5, 0xa9,
-0xa1, 0x81, 0x07, 0x39, 0x0a, 0x22, 0x3a, 0xfa,
-0x16, 0xe9, 0x96, 0xcc, 0x1b, 0x01, 0x5d, 0x1d,
-0xdd, 0xbf, 0x12, 0xfe, 0x62, 0xaf, 0x96, 0x48,
-0xf3, 0x7f, 0xee, 0x40, 0xc4, 0x1f, 0xf1, 0xf1,
-0x8a, 0xc3, 0xf1, 0xf0, 0xf4, 0x06, 0x7e, 0x17,
-0xab, 0x46, 0x95, 0x20, 0xb8, 0xe7, 0xbf, 0x47,
-0xd0, 0xf3, 0x5f, 0x69, 0xf9, 0x57, 0x4d, 0x55,
-0x8d, 0x35, 0xfe, 0x17, 0x3f, 0xff, 0xdd, 0x15,
-0x18, 0x44, 0xbb, 0x84, 0xc6, 0xbf, 0xa4, 0xfd,
-0x99, 0x87, 0x92, 0xb2, 0xb2, 0x80, 0xc0, 0x60,
-0x6d, 0x2d, 0x6d, 0x09, 0x72, 0xf2, 0xf3, 0xc1,
-0xd5, 0x7f, 0xdb, 0xf2, 0x2f, 0xbc, 0xc4, 0xb0,
-0xc3, 0x87, 0x75, 0x45, 0xcb, 0x52, 0x0e, 0xef,
-0xa5, 0xa7, 0x5a, 0x4f, 0x67, 0x57, 0xe7, 0xc2,
-0xe2, 0xe2, 0x36, 0x6b, 0x87, 0xcb, 0xbf, 0x6e,
-0x64, 0x7b, 0xa1, 0x62, 0x1e, 0x0d, 0x34, 0xfe,
-0x8d, 0x15, 0x36, 0x69, 0xff, 0x61, 0xfe, 0x05,
-0xb1, 0xf9, 0xdc, 0xb9, 0xf3, 0xec, 0xb7, 0x14,
-0xbc, 0x27, 0x04, 0x75, 0x9c, 0x66, 0xe8, 0xbf,
-0x17, 0x22, 0xa3, 0x7e, 0xf8, 0xa1, 0x3d, 0xf9,
-0x77, 0xfd, 0xfa, 0x0d, 0x82, 0x9e, 0x9f, 0x34,
-0xfe, 0xb5, 0xb3, 0xb3, 0xaf, 0xfa, 0xf4, 0x91,
-0xe5, 0xfe, 0x65, 0xf6, 0x67, 0x19, 0xbe, 0x2b,
-0x60, 0x16, 0xa5, 0x65, 0x66, 0xec, 0x0c, 0x08,
-0x18, 0x3c, 0x78, 0x30, 0x2d, 0x27, 0x24, 0x1f,
-0x7a, 0xba, 0xfa, 0xa8, 0x2d, 0x0b, 0xb5, 0x3f,
-0xeb, 0xfc, 0xa8, 0xf3, 0xe2, 0x15, 0x33, 0x47,
-0x1f, 0x89, 0x7d, 0x21, 0x21, 0xa8, 0xe8, 0xbb,
-0x75, 0xeb, 0xd7, 0x54, 0x12, 0x75, 0x0d, 0x75,
-0xee, 0xee, 0xee, 0x12, 0xb3, 0x12, 0x09, 0x03,
-0xfd, 0x5e, 0xa9, 0xe9, 0x42, 0xea, 0x96, 0x36,
-0x35, 0x37, 0x9f, 0x3f, 0x1f, 0x09, 0xbc, 0x83,
-0xf6, 0x60, 0x69, 0x69, 0x95, 0xc6, 0x1a, 0xfa,
-0x24, 0xba, 0xff, 0x95, 0x20, 0x1a, 0x1a, 0x1b,
-0xae, 0x45, 0x5f, 0x9f, 0x3b, 0x6f, 0x3e, 0x2d,
-0xed, 0x21, 0x3b, 0xb8, 0xe7, 0xbf, 0x7f, 0xa0,
-0xfa, 0xaf, 0xb4, 0xfe, 0x57, 0x0a, 0x3d, 0x14,
-0xae, 0xdf, 0xa0, 0xaa, 0x72, 0xb4, 0xfa, 0x83,
-0xbe, 0xbe, 0x1b, 0x69, 0xf1, 0xb6, 0xe2, 0xd6,
-0x1f, 0x6c, 0x69, 0x75, 0xb4, 0x4b, 0x78, 0xf2,
-0xc4, 0xcb, 0xdb, 0xcb, 0xb8, 0x8f, 0xb1, 0x64,
-0x95, 0x44, 0x98, 0xf6, 0xe7, 0xbf, 0x5b, 0x92,
-0x92, 0x53, 0xd0, 0x93, 0x6b, 0x06, 0xe0, 0x5d,
-0x68, 0xf4, 0xd4, 0x70, 0x74, 0x9c, 0x73, 0xfb,
-0xf6, 0x5d, 0x32, 0xf9, 0x0c, 0x3c, 0xa3, 0xb7,
-0xcf, 0x2a, 0xf2, 0x2a, 0x50, 0xd8, 0x4f, 0x45,
-0x44, 0x48, 0xb0, 0x24, 0x69, 0xfe, 0x57, 0x67,
-0xce, 0xb1, 0x45, 0x3d, 0xb7, 0xfc, 0xe3, 0xfe,
-0x57, 0xb0, 0x6c, 0x43, 0x42, 0xf7, 0xb3, 0xdf,
-0x92, 0x88, 0xfe, 0x57, 0x37, 0x6e, 0xdd, 0x56,
-0x50, 0x40, 0x84, 0x70, 0x89, 0xb1, 0x7b, 0xcf,
-0x1e, 0xc1, 0xb0, 0x2f, 0x1a, 0xff, 0xc2, 0x42,
-0x7e, 0x2f, 0x50, 0xf9, 0x91, 0x84, 0x2c, 0xff,
-0x95, 0x0c, 0xdf, 0x09, 0xc5, 0xa5, 0x25, 0x57,
-0xae, 0x5d, 0x75, 0x72, 0x9a, 0xab, 0xa3, 0xa3,
-0x2b, 0x4a, 0xf1, 0x1d, 0xd8, 0x84, 0x77, 0x05,
-0x06, 0xa2, 0xb3, 0x0e, 0xe5, 0x5f, 0x79, 0x39,
-0xf9, 0x98, 0xd8, 0x7b, 0x42, 0x6f, 0x03, 0xf6,
-0x2e, 0x94, 0x6b, 0x0e, 0x7d, 0xcb, 0x63, 0xd3,
-0xf8, 0xa5, 0x71, 0x93, 0xbf, 0x1f, 0x99, 0x98,
-0x6e, 0xd8, 0xd0, 0x61, 0xfe, 0xfe, 0x5b, 0x00,
-0x7e, 0xfe, 0xfe, 0x7e, 0x7e, 0xfe, 0x5b, 0xb6,
-0x6e, 0x85, 0x7f, 0xb9, 0xf0, 0xf7, 0xff, 0xfa,
-0xbd, 0xdf, 0x96, 0xd5, 0xab, 0x7f, 0x55, 0x55,
-0x65, 0xba, 0x36, 0x0d, 0x1c, 0x60, 0x56, 0x80,
-0x55, 0x24, 0x67, 0xa0, 0xb6, 0xbe, 0x76, 0xcf,
-0xde, 0x10, 0x65, 0x45, 0x24, 0x43, 0x17, 0xdc,
-0xb0, 0xbd, 0xc3, 0x18, 0xce, 0x9b, 0x7c, 0xda,
-0xb5, 0xa2, 0xe7, 0x7f, 0x26, 0x2f, 0x84, 0x25,
-0xff, 0x3c, 0x27, 0xf7, 0x64, 0x44, 0xc4, 0xca,
-0xd5, 0xbf, 0x4e, 0x9e, 0x3a, 0x75, 0xf8, 0xf0,
-0xe1, 0x03, 0x06, 0x98, 0xf5, 0xe9, 0x6d, 0xdc,
-0xdb, 0xb0, 0xb7, 0xbe, 0x9e, 0x01, 0x0f, 0x20,
-0x08, 0x91, 0x09, 0x43, 0x68, 0xe7, 0xbf, 0xd2,
-0xc7, 0x1f, 0xc1, 0xf4, 0x38, 0x71, 0xf2, 0x24,
-0xed, 0x9e, 0xd3, 0x32, 0x70, 0xfe, 0x5d, 0xb2,
-0xd4, 0xb9, 0x9e, 0x92, 0x66, 0x4d, 0xf4, 0xf3,
-0xdf, 0xb6, 0x83, 0xc3, 0x35, 0x17, 0x73, 0xf2,
-0x5f, 0x5f, 0xb9, 0x76, 0xcd, 0x77, 0xd3, 0xe6,
-0x99, 0x33, 0x7f, 0xb1, 0x1e, 0x35, 0xca, 0x6c,
-0xa0, 0xb9, 0x71, 0x1f, 0x13, 0x18, 0x1c, 0x03,
-0x7d, 0x03, 0xfe, 0xf8, 0x90, 0xd1, 0xe2, 0xbc,
-0xfb, 0x69, 0xfb, 0x7e, 0xeb, 0x3c, 0x3c, 0xbd,
-0xc9, 0xe4, 0xd2, 0x7c, 0xc8, 0x75, 0x95, 0x03,
-0x76, 0x1e, 0x3b, 0x6e, 0x5c, 0x70, 0xf0, 0xde,
-0x94, 0xb4, 0xd4, 0xea, 0x9a, 0x6a, 0x5a, 0x24,
-0x6f, 0x60, 0x50, 0x30, 0x79, 0x39, 0xcc, 0xd8,
-0xcd, 0x7e, 0x7e, 0x12, 0x2c, 0xcc, 0x8b, 0x94,
-0xf3, 0x5f, 0x98, 0xe2, 0xa0, 0x6b, 0xb3, 0x5c,
-0xe8, 0xb7, 0x65, 0x1b, 0x79, 0xd5, 0xf7, 0x3b,
-0xff, 0x85, 0xc9, 0xec, 0xed, 0xb3, 0x92, 0xfd,
-0x59, 0x50, 0xef, 0x4a, 0x32, 0xfe, 0xe8, 0x49,
-0x52, 0x12, 0x19, 0x7d, 0xaf, 0xa5, 0xa5, 0xed,
-0xb3, 0x72, 0x15, 0xac, 0xe8, 0xcd, 0x9b, 0xfd,
-0x5a, 0x97, 0x73, 0x9b, 0xd5, 0x0d, 0xeb, 0xdd,
-0xdf, 0x9f, 0xbb, 0xe4, 0xad, 0xac, 0x90, 0x74,
-0x67, 0x51, 0x57, 0xae, 0x08, 0xf6, 0x4f, 0xe3,
-0x5f, 0xc3, 0x5e, 0x86, 0xe9, 0x99, 0x6c, 0x82,
-0xf4, 0xc7, 0xea, 0x6a, 0x6d, 0x2d, 0xa6, 0x63,
-0x36, 0xd7, 0xfe, 0xec, 0xe3, 0x23, 0xcb, 0x7f,
-0x25, 0x83, 0x64, 0x68, 0x68, 0x6a, 0x78, 0x14,
-0x17, 0x37, 0x7e, 0xc2, 0x44, 0x65, 0x15, 0xe1,
-0x35, 0x55, 0xbf, 0xed, 0xed, 0x5d, 0xe6, 0x2d,
-0x58, 0x58, 0x5e, 0x59, 0x81, 0x76, 0x48, 0xcb,
-0xff, 0xbc, 0x7d, 0x57, 0x00, 0xbb, 0x9d, 0x16,
-0x60, 0x87, 0xa5, 0x4a, 0x00, 0x0a, 0xb8, 0x16,
-0xfd, 0x35, 0xd1, 0x74, 0x6b, 0x2d, 0xa1, 0x13,
-0xf2, 0x84, 0x6e, 0xbe, 0x70, 0xe1, 0xbf, 0xd8,
-0x7b, 0x6e, 0x6e, 0x69, 0x79, 0x95, 0xc7, 0x21,
-0xcb, 0x77, 0xda, 0xda, 0xdb, 0x55, 0x54, 0xb1,
-0x19, 0x9d, 0xf8, 0x00, 0x2a, 0x5c, 0xe1, 0xe1,
-0x81, 0x46, 0x24, 0x75, 0xe9, 0xdc, 0x75, 0xa9,
-0x8b, 0x6b, 0xe5, 0xc7, 0x2a, 0xfc, 0xa7, 0x29,
-0xf5, 0x8f, 0x3a, 0xd0, 0xed, 0xcf, 0xe8, 0xfd,
-0x7f, 0xfa, 0x5c, 0x5d, 0x54, 0x52, 0x94, 0xc7,
-0xc9, 0x7f, 0x96, 0x93, 0x9d, 0xf5, 0xec, 0x69,
-0x72, 0x6a, 0x2a, 0x10, 0x01, 0x20, 0x31, 0x39,
-0xd9, 0x0b, 0x8b, 0x3f, 0x3a, 0x72, 0x14, 0xb3,
-0x3f, 0x8b, 0xc3, 0xbf, 0x68, 0xfd, 0x41, 0xd8,
-0x69, 0x7d, 0xbf, 0x1d, 0x07, 0x90, 0x78, 0x92,
-0x9c, 0xac, 0xab, 0x83, 0xd4, 0x49, 0x1f, 0x33,
-0x66, 0x4c, 0x45, 0x15, 0x3e, 0x61, 0x24, 0xe3,
-0x5f, 0xc6, 0xe0, 0xd4, 0xd4, 0xd5, 0x16, 0x97,
-0x95, 0xe6, 0xbf, 0x2e, 0xc8, 0xce, 0xcd, 0x81,
-0xc1, 0x49, 0xcd, 0xe0, 0x8e, 0x0c, 0x6f, 0x88,
-0x0e, 0x84, 0x1d, 0x22, 0x3b, 0x77, 0x5b, 0xbe,
-0x42, 0xb0, 0x87, 0xe2, 0x92, 0x32, 0x0b, 0x0b,
-0x2b, 0x74, 0xde, 0x02, 0x75, 0x5a, 0x58, 0x5a,
-0x05, 0x04, 0x05, 0x43, 0x6f, 0x30, 0xe7, 0xc9,
-0x7a, 0xb2, 0x0c, 0x5c, 0xbc, 0x74, 0x19, 0x35,
-0x8c, 0xdb, 0x39, 0x8c, 0x69, 0x64, 0x65, 0x4c,
-0x14, 0xb4, 0xfc, 0x57, 0xb3, 0x66, 0xcd, 0x66,
-0x37, 0x96, 0xae, 0x5c, 0x89, 0xa8, 0xe1, 0xed,
-0x93, 0x7f, 0x23, 0x36, 0x96, 0xac, 0x3f, 0x08,
-0xb0, 0x19, 0x6d, 0xcb, 0xfe, 0x80, 0xbf, 0xad,
-0xdd, 0x80, 0x96, 0x21, 0x63, 0xf0, 0xef, 0x2b,
-0x0e, 0x07, 0x84, 0x4c, 0x46, 0x33, 0x63, 0x63,
-0xd3, 0x9c, 0x17, 0xb9, 0x2c, 0xd9, 0x41, 0xe1,
-0xbd, 0xc0, 0xff, 0x2e, 0x58, 0xc8, 0x0c, 0xbe,
-0x00, 0x99, 0xea, 0x71, 0x72, 0x9b, 0x32, 0xdf,
-0x34, 0xfe, 0x55, 0x52, 0x54, 0x8e, 0xbc, 0x78,
-0x91, 0xe5, 0xfe, 0x8b, 0x4b, 0xcb, 0xc8, 0xb2,
-0x71, 0xb2, 0xfc, 0x57, 0x32, 0x48, 0x06, 0xe0,
-0x85, 0x97, 0x1c, 0x0e, 0x28, 0x02, 0x62, 0x79,
-0x1b, 0x2a, 0xf6, 0x50, 0xf4, 0xdd, 0xbc, 0xb1,
-0xbc, 0x92, 0x1a, 0x7a, 0x43, 0xcb, 0xbf, 0x31,
-0xd2, 0x7a, 0xd4, 0x87, 0xe2, 0x22, 0x96, 0xfb,
-0x79, 0x99, 0x97, 0xa7, 0xa4, 0xc8, 0x2c, 0x22,
-0xcf, 0x5d, 0xa1, 0xaa, 0x6a, 0x82, 0x46, 0xb3,
-0xe4, 0xd4, 0x34, 0xe0, 0x0b, 0xe6, 0xf2, 0x34,
-0x31, 0x41, 0x53, 0xb2, 0x0b, 0xe2, 0x4e, 0xcc,
-0x3d, 0x39, 0x82, 0x04, 0x3d, 0xbd, 0x7d, 0x84,
-0x4a, 0x05, 0x7c, 0xc0, 0x53, 0xbb, 0x2e, 0x73,
-0x43, 0x35, 0x74, 0xd8, 0x72, 0x7f, 0x5b, 0xbb,
-0x0e, 0xcd, 0x3e, 0x4d, 0x3b, 0xff, 0xa5, 0xf9,
-0x5f, 0x89, 0x8b, 0x86, 0xa6, 0xa6, 0x95, 0xab,
-0x57, 0x33, 0x3a, 0x87, 0x1d, 0xf2, 0xfc, 0x85,
-0x0b, 0x64, 0x63, 0xe9, 0xcf, 0x7f, 0x01, 0xf6,
-0x63, 0x1c, 0x68, 0xa3, 0xfd, 0xf0, 0xe1, 0x43,
-0x54, 0xdf, 0x04, 0xe5, 0x31, 0x25, 0x2d, 0x0d,
-0xbd, 0xa4, 0xa2, 0xaa, 0x12, 0xad, 0xa6, 0x31,
-0xc7, 0x71, 0x4e, 0xb5, 0xb0, 0x6c, 0xde, 0xa2,
-0xe0, 0x42, 0x64, 0x24, 0xd9, 0xf9, 0xea, 0x35,
-0xbf, 0x0a, 0xb6, 0x79, 0x9e, 0x93, 0x8d, 0x66,
-0x78, 0x03, 0x65, 0x3f, 0x78, 0xcf, 0x5e, 0xa1,
-0x49, 0xc5, 0x05, 0xf1, 0x2c, 0x3b, 0x5b, 0x1b,
-0x2b, 0x59, 0x0b, 0xab, 0x2c, 0x29, 0x39, 0x45,
-0xdc, 0x9b, 0xa7, 0xf9, 0x3f, 0x1b, 0xc0, 0x78,
-0xa6, 0xa7, 0xd2, 0xae, 0xaa, 0xad, 0xab, 0x9f,
-0x39, 0x8b, 0x99, 0x42, 0xaa, 0x43, 0x6b, 0xa9,
-0xa6, 0x67, 0xd9, 0xc8, 0x94, 0x93, 0xfe, 0xfc,
-0x97, 0xf7, 0x80, 0x59, 0xac, 0xf3, 0xd9, 0x71,
-0xae, 0x13, 0x79, 0x95, 0xa6, 0x86, 0xe6, 0xf3,
-0xec, 0x36, 0xd9, 0x6c, 0x40, 0x8e, 0xfd, 0x85,
-0xc8, 0x7f, 0xa5, 0xd0, 0x43, 0x21, 0xea, 0x92,
-0x10, 0x07, 0xf2, 0xaa, 0x8f, 0x55, 0x16, 0x16,
-0x96, 0x8c, 0x0b, 0xb5, 0xb4, 0xb5, 0x2b, 0xaa,
-0xda, 0x08, 0xc6, 0x34, 0xfe, 0xed, 0xd8, 0xa1,
-0xe3, 0xc2, 0x45, 0x6c, 0x62, 0x7c, 0xfa, 0xd3,
-0x4c, 0xf2, 0x74, 0xac, 0x53, 0xc7, 0x4e, 0xab,
-0x56, 0xad, 0x92, 0xf1, 0xaf, 0x0c, 0x62, 0x01,
-0xc8, 0x37, 0xf3, 0x69, 0xd6, 0x98, 0xb1, 0xe3,
-0x45, 0x77, 0x35, 0x94, 0xeb, 0x2a, 0x67, 0x65,
-0x35, 0x04, 0xd4, 0x4f, 0xf6, 0xed, 0x88, 0x96,
-0xff, 0x59, 0x45, 0x59, 0xf5, 0x64, 0xc4, 0x29,
-0x9a, 0xd5, 0xae, 0xbe, 0xb1, 0x61, 0x57, 0x60,
-0x20, 0xea, 0xeb, 0x65, 0x61, 0x39, 0x44, 0x30,
-0xb1, 0x33, 0x90, 0x20, 0x99, 0x07, 0x18, 0x36,
-0x84, 0xfb, 0x0f, 0x1e, 0xb2, 0x24, 0xf7, 0x6b,
-0x68, 0x6a, 0x5c, 0x43, 0xe4, 0x41, 0x02, 0x26,
-0x8d, 0xf8, 0x96, 0xd9, 0x43, 0x44, 0x7c, 0x28,
-0x2a, 0x1c, 0x65, 0x6d, 0x83, 0xb2, 0x92, 0x9a,
-0xaa, 0xda, 0x9e, 0xbd, 0xfb, 0xc8, 0x1c, 0x5f,
-0x34, 0xfe, 0x65, 0xb1, 0x3f, 0xc3, 0x83, 0xd4,
-0x36, 0x08, 0x11, 0x27, 0xf8, 0x00, 0xfe, 0x9a,
-0x3a, 0x6d, 0x1a, 0xa3, 0x73, 0x90, 0x64, 0xee,
-0xc5, 0xc6, 0x92, 0x8d, 0xdb, 0x85, 0x7f, 0x35,
-0x35, 0xb5, 0x92, 0x52, 0xf1, 0xcd, 0xff, 0xf4,
-0x99, 0x33, 0xa8, 0x07, 0x7b, 0xb7, 0x6e, 0xdd,
-0xf6, 0x86, 0x86, 0xa0, 0x97, 0x80, 0xbe, 0xa3,
-0xaf, 0x6f, 0x40, 0x5e, 0xe2, 0xe2, 0xba, 0xac,
-0x46, 0xa0, 0x44, 0xaf, 0x20, 0xea, 0x1a, 0xea,
-0x44, 0x94, 0x9a, 0x1a, 0x9b, 0x1a, 0x37, 0xfb,
-0xf9, 0x93, 0x23, 0x1f, 0x14, 0x1c, 0x2c, 0xd8,
-0x2c, 0x2d, 0x23, 0x53, 0x45, 0x19, 0xb1, 0xff,
-0x0c, 0xb2, 0xb0, 0xac, 0xa9, 0x13, 0x29, 0x4d,
-0xba, 0xe0, 0xeb, 0x80, 0x65, 0x85, 0x2e, 0x01,
-0x67, 0x17, 0xd7, 0xf2, 0x4a, 0x6a, 0xaa, 0x2e,
-0x14, 0x34, 0xfe, 0x05, 0xad, 0x7c, 0x93, 0xbf,
-0x3f, 0x6d, 0x10, 0x0a, 0xde, 0xbc, 0x1e, 0x34,
-0x08, 0x29, 0xa4, 0xc5, 0x3d, 0x6d, 0xc1, 0xc2,
-0x00, 0xa5, 0xb7, 0x3f, 0xf3, 0x00, 0x43, 0x5d,
-0xdf, 0x80, 0x33, 0x51, 0x75, 0x4d, 0x1d, 0x9a,
-0xdd, 0xae, 0xb7, 0x51, 0xef, 0xd7, 0x6f, 0xda,
-0xdc, 0x52, 0x53, 0xf3, 0x97, 0xc0, 0xdd, 0x4c,
-0x1b, 0x3e, 0x37, 0x81, 0xc9, 0x32, 0x37, 0x5a,
-0xe7, 0x3c, 0xfc, 0x15, 0x17, 0xa7, 0xae, 0xd6,
-0x93, 0x71, 0xe1, 0xb8, 0xf1, 0x13, 0x18, 0xdb,
-0x02, 0x8d, 0x7f, 0x01, 0xda, 0xda, 0xda, 0x9c,
-0x7c, 0x0e, 0xda, 0x39, 0x74, 0x72, 0xf2, 0xd4,
-0x29, 0xf2, 0x92, 0xae, 0x9d, 0xbb, 0x6e, 0xdb,
-0xbe, 0x5d, 0x02, 0xcb, 0x86, 0x0c, 0xff, 0xcb,
-0x28, 0x78, 0xfd, 0x86, 0x0c, 0x1a, 0xa5, 0x01,
-0xe6, 0x18, 0x68, 0x28, 0x41, 0x41, 0xbb, 0x5f,
-0xbf, 0x7d, 0xcb, 0x62, 0x02, 0xe2, 0x81, 0xa5,
-0xfe, 0x60, 0xbf, 0x7e, 0xfd, 0x05, 0x33, 0x39,
-0x0b, 0xe2, 0x71, 0xe2, 0x13, 0x13, 0xd3, 0xbe,
-0xe4, 0x25, 0x40, 0x91, 0x6e, 0x6e, 0xee, 0x0c,
-0x6d, 0x6b, 0xe3, 0x66, 0x7f, 0x52, 0x09, 0x9d,
-0x3a, 0x75, 0xda, 0x87, 0x42, 0x6a, 0x88, 0x53,
-0x6a, 0x5a, 0x9a, 0x29, 0xd1, 0xbf, 0x9e, 0xbe,
-0x5e, 0xae, 0x08, 0x5e, 0x61, 0x0c, 0xa4, 0x65,
-0x64, 0x0c, 0x1d, 0x3a, 0x1c, 0x7d, 0x40, 0x65,
-0x25, 0xe5, 0x1b, 0xb7, 0x6e, 0x33, 0x29, 0xf8,
-0xef, 0x96, 0x63, 0x98, 0xfd, 0x99, 0xc5, 0xff,
-0x0a, 0xb6, 0x08, 0xd8, 0x82, 0x92, 0x92, 0x93,
-0x18, 0x85, 0x9f, 0x50, 0x3c, 0x49, 0x4a, 0x24,
-0xf9, 0x4b, 0x5f, 0xcf, 0x00, 0xad, 0xda, 0x20,
-0xbd, 0xff, 0x15, 0xf7, 0xce, 0x3b, 0x75, 0x59,
-0xbe, 0x7c, 0x05, 0x49, 0x8e, 0xcd, 0x2d, 0x2d,
-0xf0, 0xb2, 0x68, 0xde, 0x62, 0x66, 0x66, 0xe6,
-0xa5, 0xe5, 0xcc, 0x02, 0x19, 0x5f, 0x5a, 0x9a,
-0xcf, 0x9d, 0x3f, 0x8f, 0x3a, 0xbd, 0xaf, 0xf7,
-0xf5, 0x45, 0x1f, 0x1f, 0x86, 0xf7, 0xf8, 0x89,
-0x93, 0x57, 0xaf, 0x45, 0x0b, 0x16, 0x59, 0xa6,
-0x01, 0xf6, 0x76, 0xeb, 0x91, 0xcc, 0xe4, 0xd2,
-0xc0, 0x68, 0xc0, 0x6b, 0x82, 0xcd, 0xd2, 0x33,
-0x33, 0x51, 0xff, 0x3a, 0x6b, 0x1b, 0x5b, 0x5a,
-0xda, 0x31, 0x1a, 0x80, 0x3e, 0xf6, 0xec, 0x0b,
-0x41, 0x6b, 0x67, 0x83, 0x64, 0xb2, 0x6b, 0x77,
-0x90, 0x28, 0xef, 0x94, 0x0f, 0x9a, 0xff, 0x55,
-0x87, 0x56, 0x07, 0xc8, 0x84, 0xc7, 0x8f, 0x51,
-0x99, 0x33, 0x3c, 0x22, 0x02, 0x35, 0x25, 0xd9,
-0xdb, 0x3b, 0xa0, 0x56, 0x6b, 0xba, 0xfe, 0x8b,
-0xd6, 0x5f, 0x88, 0xa5, 0x09, 0xed, 0xba, 0x3a,
-0xba, 0xf7, 0xee, 0xc7, 0x92, 0x97, 0xc0, 0x4d,
-0xde, 0xbc, 0x7d, 0x1b, 0xf5, 0x94, 0x1b, 0x3e,
-0x7c, 0x04, 0x29, 0x93, 0x3c, 0xcb, 0x7d, 0x4e,
-0x5a, 0xdd, 0x35, 0x7a, 0x6a, 0xdc, 0x7f, 0x10,
-0x4b, 0x93, 0xb1, 0x3f, 0x55, 0x7f, 0x22, 0x03,
-0xe7, 0xe1, 0x2d, 0x90, 0x8e, 0xf7, 0x2c, 0xfc,
-0x0b, 0x58, 0xe6, 0xe6, 0x5e, 0x5e, 0x81, 0x1c,
-0x94, 0x94, 0x95, 0x97, 0x4d, 0x9f, 0x3e, 0x83,
-0x6c, 0x4f, 0x56, 0x9f, 0x94, 0x41, 0x06, 0x76,
-0x80, 0xd8, 0xec, 0xbe, 0x7c, 0x85, 0x50, 0xcd,
-0x17, 0x64, 0x6c, 0x3d, 0x5d, 0xbd, 0x29, 0x53,
-0xa7, 0x9d, 0x3b, 0x7f, 0x01, 0xf8, 0x5a, 0xc4,
-0x7d, 0x63, 0x3e, 0xbd, 0xfe, 0x20, 0x08, 0xb1,
-0x76, 0xf6, 0x0e, 0x8f, 0xe2, 0xe2, 0x04, 0xcd,
-0x35, 0x0d, 0x4d, 0x0d, 0x4f, 0x92, 0x9e, 0xd8,
-0x8c, 0xb6, 0x45, 0xf7, 0x6d, 0x6e, 0x5d, 0x6f,
-0x22, 0x70, 0xf2, 0x49, 0x52, 0x92, 0x91, 0x21,
-0x33, 0x25, 0x88, 0xdc, 0x0f, 0xf2, 0x40, 0x0a,
-0xef, 0x0b, 0x0b, 0x19, 0x6b, 0x01, 0x1e, 0xf6,
-0xcd, 0xbb, 0xb7, 0xe3, 0x27, 0x4c, 0x64, 0x78,
-0x6d, 0xc1, 0xcf, 0x2d, 0x59, 0xb2, 0x94, 0x51,
-0x04, 0x0a, 0x14, 0xab, 0x92, 0xb2, 0x52, 0x50,
-0xb7, 0xf9, 0x60, 0x7c, 0xe4, 0x21, 0xf2, 0x62,
-0x14, 0xe9, 0x09, 0xc9, 0xc3, 0x80, 0x7e, 0x03,
-0x92, 0x92, 0x93, 0x05, 0xfb, 0xe4, 0xe6, 0xdf,
-0xc0, 0xfc, 0xaf, 0x3a, 0xd0, 0xcf, 0x7f, 0x4b,
-0xcb, 0xcb, 0x40, 0x6e, 0xd7, 0xd3, 0xd1, 0xf3,
-0xf2, 0xf2, 0x4e, 0x4a, 0x4b, 0xfa, 0xf4, 0xf9,
-0x13, 0xba, 0xc0, 0xe1, 0xcb, 0xfc, 0xd7, 0x05,
-0x20, 0x78, 0x90, 0x43, 0x37, 0xda, 0xd6, 0xb6,
-0xa8, 0x04, 0xb1, 0xf6, 0x4b, 0xef, 0x7f, 0xc5,
-0x83, 0x92, 0x82, 0x52, 0x48, 0x68, 0xa8, 0xe0,
-0x91, 0x37, 0x0c, 0x5d, 0xec, 0x83, 0x58, 0x35,
-0x55, 0x75, 0xda, 0xdb, 0x87, 0x9b, 0x74, 0x75,
-0x73, 0xe3, 0x14, 0x14, 0xf0, 0x9f, 0x05, 0xa8,
-0xea, 0x79, 0x76, 0xb6, 0xf5, 0xc8, 0x51, 0xa8,
-0xdd, 0x23, 0x3c, 0x1c, 0x77, 0x18, 0x6e, 0x68,
-0x6a, 0xf4, 0xf6, 0xf1, 0x51, 0x53, 0x51, 0x9b,
-0x3b, 0x77, 0xde, 0x83, 0x87, 0x0f, 0xca, 0x2a,
-0xca, 0x69, 0xbb, 0x5f, 0x69, 0x45, 0xf9, 0x9a,
-0x75, 0xbf, 0xc9, 0xcb, 0x31, 0x47, 0xde, 0xd0,
-0xd0, 0x28, 0xbd, 0xad, 0xcb, 0x3a, 0x08, 0x96,
-0x86, 0x58, 0x0d, 0x0b, 0x45, 0x05, 0xc5, 0xf8,
-0xc4, 0x44, 0xb4, 0x52, 0x03, 0xfc, 0x28, 0xa8,
-0xc6, 0x45, 0x25, 0xc5, 0xe4, 0xff, 0xbe, 0xe2,
-0xe4, 0xa3, 0x95, 0x82, 0xb9, 0xf3, 0x59, 0x45,
-0x75, 0xe3, 0xa6, 0xcd, 0xf9, 0x05, 0xf9, 0x0d,
-0x4d, 0x8d, 0x8c, 0xde, 0x40, 0x71, 0x7e, 0x99,
-0xf7, 0x8a, 0x21, 0xbc, 0xd1, 0xe2, 0x8f, 0x78,
-0xab, 0x69, 0x88, 0xd5, 0xd0, 0xd8, 0x07, 0x0f,
-0xf8, 0xa5, 0x1f, 0x5a, 0x5a, 0x1d, 0x14, 0x33,
-0x9f, 0x65, 0x0e, 0x1c, 0x68, 0x86, 0x0e, 0xa9,
-0x87, 0xa7, 0x37, 0xea, 0xb5, 0x25, 0x76, 0xfd,
-0x41, 0x4a, 0x70, 0x3a, 0xfc, 0xa8, 0xb9, 0xd9,
-0xa0, 0x3b, 0x31, 0x31, 0x82, 0x46, 0x83, 0xc6,
-0xe6, 0xc6, 0x94, 0xb4, 0x54, 0x34, 0xc5, 0x37,
-0xb7, 0x74, 0x94, 0x40, 0xe9, 0x0a, 0xc1, 0x35,
-0x3b, 0x7d, 0xc6, 0x2c, 0xc6, 0xac, 0x86, 0xc6,
-0x56, 0x96, 0x43, 0xe2, 0x1f, 0x27, 0x90, 0x1b,
-0x11, 0x2c, 0x90, 0x7d, 0x21, 0xa1, 0x8a, 0x3d,
-0x14, 0x19, 0xfd, 0x9b, 0x98, 0x98, 0x64, 0x64,
-0x31, 0x5d, 0xaa, 0xd8, 0xf9, 0xb7, 0x47, 0xf7,
-0x1e, 0x9e, 0xde, 0x3e, 0x6f, 0xdf, 0xbf, 0x13,
-0x9c, 0x54, 0xd5, 0x35, 0xd5, 0x3b, 0x03, 0x02,
-0x50, 0xc3, 0x4e, 0x4f, 0xf5, 0x9e, 0x89, 0x49,
-0x78, 0x02, 0x3d, 0x19, 0x64, 0x40, 0xf1, 0xe2,
-0xe5, 0x4b, 0x5a, 0x34, 0x0d, 0x7f, 0xab, 0x34,
-0x36, 0x36, 0x5d, 0xb3, 0x76, 0x43, 0x7c, 0x42,
-0x02, 0xcd, 0xad, 0x88, 0x06, 0x9a, 0xfd, 0x99,
-0xbf, 0x88, 0x4c, 0xfa, 0x98, 0xac, 0xdb, 0xb0,
-0xe1, 0x56, 0x4c, 0x0c, 0x28, 0x1d, 0x77, 0x62,
-0xef, 0xfa, 0x6d, 0xd9, 0xd2, 0xb7, 0x6f, 0x5f,
-0x9a, 0xd2, 0x34, 0x72, 0xa4, 0x35, 0xe9, 0xe8,
-0xf5, 0xb9, 0xb6, 0x66, 0xe5, 0xaa, 0x5f, 0xc9,
-0xc6, 0x20, 0xee, 0x4e, 0x9e, 0x32, 0x2d, 0xfa,
-0xc6, 0xcd, 0x0f, 0xc5, 0xc5, 0xf5, 0x8d, 0x0d,
-0x75, 0x0d, 0xf5, 0xa5, 0xe5, 0xe5, 0x57, 0xae,
-0x5e, 0x03, 0x2e, 0xc3, 0x1c, 0x3f, 0x54, 0x6f,
-0xdc, 0xba, 0xc5, 0xd8, 0xba, 0x63, 0xee, 0xdd,
-0x1b, 0x3f, 0x7e, 0xc2, 0x68, 0x1b, 0x5b, 0xd0,
-0x14, 0x78, 0xff, 0xda, 0xda, 0xda, 0xf3, 0xfe,
-0xb0, 0xb7, 0x73, 0xb0, 0xb3, 0xb5, 0x07, 0xd8,
-0xdb, 0x8f, 0x19, 0x65, 0x6d, 0x03, 0xfb, 0x3f,
-0x7a, 0xc3, 0xad, 0x89, 0x1f, 0xdb, 0x54, 0x1d,
-0xa5, 0xe5, 0xbf, 0xea, 0x40, 0xe7, 0x5f, 0xa0,
-0x78, 0xf8, 0x51, 0xde, 0x8b, 0x30, 0xec, 0x65,
-0xb8, 0x68, 0xd1, 0xbf, 0x80, 0x8c, 0x5e, 0x71,
-0x38, 0xb0, 0x75, 0xc0, 0x73, 0xf1, 0x00, 0x94,
-0x11, 0x79, 0xf1, 0xd2, 0x98, 0x31, 0x63, 0xd1,
-0x32, 0xe5, 0x6b, 0xd7, 0xad, 0x43, 0xcb, 0x3a,
-0xb7, 0x17, 0xff, 0x76, 0x68, 0x3d, 0x50, 0x98,
-0x3f, 0x7f, 0xc1, 0xa5, 0xe8, 0xab, 0xa9, 0x19,
-0xe9, 0x0f, 0xe3, 0xe2, 0xfc, 0xb7, 0x6e, 0x33,
-0x31, 0x31, 0x65, 0x79, 0xf5, 0xbc, 0x17, 0x34,
-0x76, 0xec, 0x38, 0xd0, 0x17, 0x12, 0x93, 0x93,
-0x93, 0x52, 0x52, 0xc2, 0x0e, 0xff, 0x61, 0x63,
-0x33, 0x1a, 0xf5, 0x3a, 0x06, 0xe1, 0x90, 0x16,
-0xd5, 0x05, 0xaf, 0x75, 0x85, 0x87, 0x27, 0x6f,
-0x2e, 0x69, 0x69, 0x68, 0x81, 0x56, 0xb2, 0x3f,
-0xec, 0x50, 0xd6, 0xb3, 0x67, 0x30, 0x51, 0xe1,
-0x91, 0x81, 0xd7, 0x60, 0x70, 0x3e, 0x94, 0x7c,
-0xb8, 0xff, 0xe0, 0xe1, 0xbc, 0xf9, 0x0b, 0x15,
-0x7a, 0x20, 0x7b, 0xe6, 0xc4, 0x89, 0x13, 0xcb,
-0xda, 0xa6, 0xef, 0xfe, 0x58, 0xfd, 0x91, 0x5b,
-0x64, 0x13, 0xe3, 0xac, 0xa1, 0x43, 0x86, 0x9d,
-0x3e, 0x73, 0xa6, 0xa4, 0xb4, 0x04, 0x7e, 0x17,
-0x7a, 0xae, 0xad, 0xaf, 0x83, 0x09, 0xf9, 0x2c,
-0xfb, 0xf9, 0xb1, 0x53, 0xa7, 0x5c, 0x5c, 0x5d,
-0x5d, 0x97, 0x2d, 0x2b, 0xad, 0x28, 0x65, 0xdc,
-0x61, 0x73, 0x4b, 0xf3, 0xf6, 0x1d, 0x3b, 0x48,
-0x67, 0x03, 0x1e, 0x60, 0x26, 0x80, 0xd2, 0xe7,
-0xbf, 0x75, 0xeb, 0xdd, 0x98, 0x98, 0xcc, 0xa7,
-0x4f, 0xe1, 0x31, 0x6f, 0xdd, 0x8d, 0x09, 0x3d,
-0x70, 0x70, 0xfa, 0x8c, 0x99, 0x13, 0x26, 0x4e,
-0x2a, 0x6d, 0x5b, 0x4b, 0x82, 0x85, 0x7f, 0x79,
-0x30, 0xec, 0x65, 0xe4, 0xe9, 0xe5, 0x7d, 0xfd,
-0xe6, 0x4d, 0x58, 0x4d, 0x8f, 0x12, 0x12, 0x02,
-0x02, 0x83, 0x2c, 0x29, 0x8e, 0x64, 0xa0, 0x7e,
-0x5e, 0xb8, 0x88, 0xb8, 0x04, 0xb4, 0x88, 0x5b,
-0x7f, 0x90, 0xe2, 0x7f, 0xc5, 0x5f, 0xe0, 0xa0,
-0x05, 0xfb, 0xac, 0x5c, 0x75, 0xf9, 0x6a, 0x74,
-0x7a, 0x56, 0x56, 0xfc, 0xe3, 0xc7, 0x7b, 0x43,
-0x43, 0x06, 0x0f, 0xfe, 0x09, 0xcd, 0x24, 0x06,
-0xca, 0xe3, 0xd1, 0x63, 0xc7, 0xbe, 0x60, 0x81,
-0x69, 0xd1, 0x37, 0x6f, 0x69, 0x68, 0x68, 0x92,
-0x97, 0xf4, 0xef, 0xdf, 0x7f, 0xd7, 0xee, 0xa0,
-0xbc, 0xfc, 0xfc, 0x9a, 0xba, 0x3a, 0x78, 0x1d,
-0xb0, 0x15, 0xc0, 0x18, 0xae, 0x58, 0xe1, 0xa1,
-0xae, 0x86, 0x08, 0x7e, 0xcb, 0x3d, 0xbd, 0xeb,
-0xea, 0x99, 0x26, 0x6b, 0x76, 0xfe, 0xe5, 0xcd,
-0x52, 0x3b, 0x3b, 0xfb, 0xfd, 0x07, 0x0f, 0x3e,
-0x8a, 0x8f, 0x87, 0x51, 0xbd, 0x16, 0x1d, 0xed,
-0xe2, 0xe2, 0x4a, 0xdb, 0x30, 0xad, 0x86, 0x0c,
-0xa9, 0x10, 0xf3, 0x4c, 0x41, 0x86, 0xff, 0x65,
-0x80, 0x80, 0xbd, 0x63, 0xe7, 0x4e, 0xda, 0xdc,
-0x6b, 0x35, 0x35, 0x5b, 0x46, 0x9c, 0x39, 0x2b,
-0x98, 0xd5, 0x47, 0x2c, 0xa0, 0xf6, 0x67, 0xd8,
-0x4e, 0xc9, 0xcd, 0x8d, 0x25, 0xdc, 0x83, 0x07,
-0x98, 0xf3, 0x17, 0x29, 0x4e, 0x17, 0x85, 0xc5,
-0x45, 0xe6, 0xe6, 0x16, 0xe8, 0x86, 0x09, 0x94,
-0x01, 0x8b, 0x71, 0xd0, 0xa0, 0xc1, 0x66, 0x66,
-0xe6, 0x9a, 0x9a, 0x5a, 0x78, 0x9b, 0x4e, 0x9d,
-0x61, 0xcd, 0x92, 0x0c, 0x75, 0xfc, 0x64, 0xb8,
-0x94, 0xb9, 0x77, 0x80, 0x31, 0x0f, 0x10, 0xb9,
-0x16, 0x8f, 0x1c, 0x3d, 0x4a, 0x6e, 0x59, 0x68,
-0xfe, 0x49, 0x1e, 0x40, 0x8b, 0x1f, 0x31, 0x9c,
-0x69, 0x35, 0x95, 0x97, 0xef, 0xa6, 0xa3, 0xab,
-0x37, 0xd0, 0xcc, 0x7c, 0xf0, 0x4f, 0x16, 0x7d,
-0xfa, 0x18, 0xc3, 0xe0, 0xd0, 0xd2, 0x34, 0xa9,
-0x28, 0xab, 0x64, 0xe7, 0xe4, 0xa0, 0x3d, 0x4b,
-0x7f, 0xfe, 0xdb, 0xa5, 0x73, 0x17, 0x86, 0x30,
-0xc3, 0xfe, 0x1e, 0x79, 0x99, 0x21, 0x99, 0x25,
-0x33, 0x3a, 0x74, 0x64, 0x0f, 0x6a, 0x1e, 0x3e,
-0xe2, 0xe7, 0x3a, 0xca, 0x61, 0x1f, 0xe8, 0x56,
-0x8b, 0x9d, 0x99, 0x29, 0x25, 0x61, 0x78, 0xb5,
-0x34, 0xb5, 0xfa, 0x0f, 0x18, 0x08, 0x5b, 0xbd,
-0x89, 0x69, 0x5f, 0x98, 0x00, 0x34, 0xc9, 0x01,
-0xee, 0x24, 0x32, 0xea, 0x12, 0x69, 0x24, 0x39,
-0x7d, 0xf6, 0x1c, 0x68, 0xbb, 0xb4, 0x47, 0x00,
-0x35, 0x07, 0x94, 0xca, 0x9f, 0x2c, 0x2c, 0x8d,
-0x4d, 0x4c, 0x35, 0x34, 0xb5, 0xf8, 0xa6, 0xd4,
-0x9f, 0x2c, 0xac, 0xd0, 0x13, 0xd5, 0xd2, 0xb2,
-0x52, 0x47, 0xc7, 0x39, 0x42, 0x67, 0x0b, 0x63,
-0xe8, 0x74, 0x7e, 0xd4, 0xc9, 0xcb, 0xcf, 0x13,
-0xec, 0x87, 0x76, 0xfe, 0x4b, 0x8e, 0x9e, 0xd0,
-0xd5, 0x64, 0x69, 0x39, 0xe4, 0x43, 0x21, 0xee,
-0x00, 0xd9, 0x2e, 0xf1, 0x47, 0x12, 0x2c, 0xf0,
-0x01, 0x03, 0x06, 0xbe, 0x7d, 0xff, 0x1e, 0xbd,
-0xa5, 0xfa, 0xc6, 0x7a, 0xdf, 0x4d, 0x7e, 0xb4,
-0x1e, 0x14, 0x15, 0x95, 0x60, 0x09, 0x0c, 0x1a,
-0xfc, 0x93, 0x41, 0xaf, 0x5e, 0xb4, 0x64, 0x1d,
-0xfd, 0xfb, 0x0f, 0xcc, 0x79, 0xf1, 0x82, 0xec,
-0x19, 0xf8, 0x77, 0xc2, 0xa4, 0x89, 0xa2, 0x0c,
-0xa9, 0xd0, 0x47, 0x80, 0xdd, 0x72, 0x57, 0x40,
-0x60, 0xfb, 0xee, 0xcf, 0x32, 0xfc, 0xff, 0x06,
-0xa8, 0x09, 0x33, 0x67, 0x20, 0xbe, 0x91, 0xbc,
-0xe9, 0xe4, 0xbc, 0xcc, 0xed, 0x79, 0x4e, 0x8e,
-0x34, 0xc7, 0x19, 0x64, 0xfd, 0x85, 0x4e, 0x1d,
-0x3b, 0xdb, 0x3b, 0x38, 0x18, 0x60, 0x3e, 0x36,
-0x6c, 0x5b, 0x53, 0xc7, 0xce, 0x5e, 0xde, 0x3e,
-0x95, 0x55, 0x54, 0xed, 0xfb, 0x4a, 0x74, 0x34,
-0x08, 0xff, 0x12, 0xe4, 0x82, 0x86, 0x4b, 0x46,
-0x8d, 0xb2, 0x79, 0x8e, 0x31, 0x54, 0x78, 0x44,
-0x84, 0x28, 0xe1, 0xcf, 0x2c, 0x00, 0x39, 0x9f,
-0x91, 0xf8, 0x11, 0x06, 0xf3, 0x8f, 0xa3, 0x47,
-0x45, 0xcc, 0xff, 0xcc, 0xc3, 0x9b, 0xf7, 0xef,
-0xac, 0xac, 0x86, 0x49, 0x76, 0x03, 0x20, 0xbd,
-0xaf, 0xf0, 0xf0, 0xa2, 0x79, 0xe6, 0x48, 0xcf,
-0xbf, 0xc3, 0x46, 0x8c, 0x30, 0x37, 0x33, 0x17,
-0x7d, 0xd8, 0x55, 0x95, 0x55, 0x41, 0xb9, 0xb3,
-0xb6, 0xb6, 0x11, 0x3d, 0x8b, 0x48, 0x37, 0xf9,
-0xee, 0xbb, 0x83, 0xf7, 0xd0, 0xde, 0x7b, 0x75,
-0xcd, 0xe7, 0x79, 0x0b, 0x24, 0xcc, 0x81, 0x06,
-0xf7, 0x60, 0x67, 0x3f, 0x06, 0x3d, 0x03, 0x2d,
-0xab, 0x28, 0x9f, 0x32, 0x05, 0xb1, 0xe4, 0xb3,
-0xc3, 0xd4, 0xd8, 0x34, 0xf7, 0x25, 0xb2, 0xc9,
-0xc3, 0x4b, 0x7f, 0x9e, 0xf3, 0x62, 0xe0, 0x40,
-0x73, 0xb1, 0x3a, 0x54, 0x53, 0x51, 0x7b, 0xd2,
-0xd6, 0x98, 0x49, 0xe3, 0xdf, 0xb1, 0x63, 0xc7,
-0xf5, 0xe8, 0x2e, 0x46, 0x12, 0x4e, 0xe8, 0x24,
-0x34, 0x74, 0x3f, 0xed, 0x08, 0x49, 0x7a, 0xff,
-0x67, 0x3d, 0x3d, 0xfd, 0x61, 0xc3, 0x86, 0x8b,
-0xb5, 0x18, 0x41, 0x64, 0xfa, 0x7d, 0xe7, 0x2e,
-0x16, 0x3f, 0xba, 0x77, 0x1f, 0xde, 0x4f, 0x9e,
-0x32, 0x55, 0xb2, 0x2c, 0x67, 0xea, 0xaa, 0xea,
-0xa7, 0xc2, 0xc3, 0xd1, 0xe7, 0xe5, 0xf2, 0xef,
-0x44, 0x84, 0x7f, 0x1d, 0xc6, 0x8e, 0x23, 0xdd,
-0xb7, 0xd8, 0x31, 0x64, 0xc8, 0xd0, 0xec, 0x5c,
-0x5c, 0xd0, 0x95, 0x41, 0x06, 0x14, 0x6f, 0xde,
-0xbd, 0x45, 0xa3, 0xd4, 0x61, 0xa3, 0x98, 0x34,
-0x69, 0x72, 0x51, 0x49, 0xb1, 0x94, 0xfd, 0x93,
-0xf1, 0x47, 0x20, 0x43, 0xae, 0x5d, 0xbf, 0xfe,
-0xc8, 0xb1, 0xa3, 0x5a, 0x58, 0x64, 0x0a, 0x0a,
-0x90, 0x04, 0x26, 0x4c, 0x9c, 0xc4, 0x52, 0xd7,
-0xb5, 0xa5, 0x55, 0x91, 0xbf, 0x7c, 0xf9, 0x0a,
-0x37, 0x5b, 0xaf, 0x38, 0xab, 0x1e, 0x1e, 0xd3,
-0xdc, 0x7c, 0x50, 0x46, 0x66, 0x26, 0x2a, 0x63,
-0x9c, 0x3c, 0x19, 0x2e, 0x4d, 0x56, 0x43, 0x5e,
-0xff, 0x61, 0x87, 0xdb, 0xe8, 0xbf, 0x34, 0xfe,
-0x65, 0xf1, 0xbf, 0xe2, 0xbc, 0xce, 0x37, 0x37,
-0x47, 0xfc, 0x57, 0x85, 0xff, 0x7a, 0xc7, 0x4e,
-0x33, 0xa6, 0xcf, 0x78, 0xf7, 0x9e, 0x9a, 0xc6,
-0x47, 0x7a, 0xff, 0xab, 0xa5, 0xae, 0xce, 0xd1,
-0x37, 0x6e, 0x18, 0x19, 0xf5, 0x16, 0x65, 0xd8,
-0xe1, 0x3d, 0xba, 0x2f, 0xf7, 0xa8, 0xad, 0xaf,
-0x7d, 0x14, 0x17, 0x07, 0x64, 0x24, 0xe2, 0x53,
-0x4c, 0x9a, 0x34, 0xe5, 0x43, 0x11, 0x35, 0x54,
-0x0d, 0xf6, 0x4f, 0x51, 0x54, 0x4b, 0x14, 0xa0,
-0x03, 0x26, 0xa5, 0x50, 0x83, 0x80, 0xd2, 0x33,
-0xb3, 0x46, 0xdb, 0x8c, 0x16, 0xab, 0x43, 0x5d,
-0x5d, 0xfd, 0x74, 0x7a, 0xf6, 0xb3, 0xa4, 0xe4,
-0x34, 0x5b, 0x3b, 0x7b, 0xa1, 0x45, 0x1c, 0xf8,
-0x50, 0xec, 0xa1, 0x78, 0xfd, 0x66, 0x9b, 0x34,
-0x95, 0x34, 0xff, 0xab, 0xcb, 0x57, 0xa3, 0x57,
-0x78, 0x7a, 0x88, 0x68, 0xab, 0x81, 0x97, 0xe8,
-0xe8, 0x34, 0xa7, 0xea, 0x13, 0x55, 0x94, 0x95,
-0x5e, 0xff, 0x1d, 0x3e, 0x7c, 0xc4, 0x9f, 0x71,
-0xf1, 0x5c, 0x3b, 0xb3, 0xc8, 0xf2, 0x86, 0xe3,
-0x1c, 0x27, 0x96, 0xb7, 0xcc, 0x43, 0x5e, 0x1e,
-0x07, 0x26, 0x83, 0xb8, 0xb9, 0xd0, 0x35, 0x7a,
-0x6a, 0x04, 0xef, 0xd9, 0x4b, 0x13, 0x36, 0x60,
-0xfe, 0x8c, 0x9f, 0x80, 0xf0, 0xef, 0xe1, 0xa3,
-0x47, 0x82, 0x82, 0xf7, 0xca, 0xcb, 0xe3, 0xa7,
-0x06, 0x24, 0x94, 0x14, 0x94, 0xaf, 0x5f, 0xbf,
-0x2e, 0x7a, 0xf4, 0xa2, 0x0c, 0x32, 0x00, 0xf2,
-0xf2, 0x39, 0x66, 0xd8, 0x4e, 0xd8, 0x5d, 0xbe,
-0xfb, 0xa9, 0x88, 0x08, 0xf4, 0x2c, 0x46, 0x2c,
-0x90, 0xfa, 0x2f, 0xf0, 0xef, 0xfa, 0x8d, 0xbe,
-0x30, 0xed, 0x23, 0xa3, 0x2e, 0x19, 0x1b, 0x9b,
-0xb0, 0x13, 0x1c, 0xec, 0xea, 0x6a, 0xaa, 0x6a,
-0xde, 0x2b, 0x57, 0xa1, 0x66, 0x3d, 0x06, 0x60,
-0x89, 0xfd, 0x95, 0x90, 0x30, 0x6e, 0xfc, 0x04,
-0xd4, 0x35, 0x82, 0xec, 0x59, 0x45, 0x59, 0x65,
-0xd1, 0xa2, 0xc5, 0x59, 0x59, 0xcf, 0x68, 0x0a,
-0xfe, 0xa9, 0x70, 0x69, 0xf5, 0x5f, 0x6e, 0xe2,
-0xa9, 0x43, 0xcc, 0xc4, 0x53, 0x47, 0x8f, 0x9d,
-0x40, 0x4f, 0x03, 0x69, 0xfc, 0x5b, 0x52, 0x56,
-0xba, 0xdc, 0xc3, 0x43, 0x5b, 0xeb, 0x47, 0xd1,
-0x77, 0x9e, 0x56, 0x33, 0xaf, 0xba, 0x9b, 0xbb,
-0xfb, 0x1b, 0xd6, 0x71, 0x13, 0x2f, 0xff, 0xc6,
-0xb1, 0xe3, 0xe4, 0xe1, 0xf2, 0xd2, 0x65, 0xce,
-0x9f, 0x3e, 0x57, 0x3f, 0x78, 0xf8, 0xa7, 0xf5,
-0x28, 0x1b, 0xd4, 0xcb, 0x97, 0x0f, 0x79, 0xb9,
-0x6e, 0xae, 0xcb, 0xdc, 0xdf, 0xb6, 0x0a, 0x03,
-0x4d, 0xcd, 0x5f, 0x12, 0x53, 0x52, 0x7e, 0x1e,
-0xf1, 0x33, 0x7b, 0x5e, 0x53, 0xf8, 0x39, 0x9b,
-0x51, 0xa3, 0x69, 0xd2, 0x11, 0x0f, 0xc0, 0xe6,
-0xbb, 0x02, 0x83, 0x7a, 0x19, 0xf4, 0x82, 0x21,
-0x15, 0x5d, 0xf4, 0x52, 0xe8, 0xa1, 0x38, 0x71,
-0xf2, 0x94, 0xe4, 0xd4, 0x74, 0x96, 0x0d, 0x13,
-0x7e, 0x34, 0x2f, 0xbf, 0xc0, 0xc9, 0x69, 0x1e,
-0xe8, 0x41, 0x22, 0xf6, 0x0c, 0x1a, 0xeb, 0x43,
-0xcc, 0x49, 0x58, 0xa0, 0xc3, 0x7c, 0x9f, 0x95,
-0xab, 0x75, 0x7e, 0xd4, 0x15, 0x85, 0x85, 0x61,
-0xc4, 0x8e, 0x1d, 0x3b, 0x2e, 0xf8, 0xec, 0x91,
-0x51, 0x17, 0x51, 0xfe, 0xfd, 0x33, 0xfe, 0x51,
-0x79, 0x55, 0xf9, 0xd6, 0xed, 0xbf, 0xeb, 0xea,
-0xe8, 0xb1, 0x53, 0x1e, 0x08, 0x7e, 0x8b, 0x16,
-0x2f, 0x79, 0xc5, 0xa1, 0xe6, 0x67, 0x6b, 0x11,
-0x5f, 0xff, 0x25, 0x3d, 0x99, 0x87, 0x0e, 0x1d,
-0x56, 0x58, 0x5c, 0x94, 0x9e, 0x91, 0xe5, 0x38,
-0x67, 0xae, 0xd0, 0xea, 0x18, 0xdd, 0xe4, 0xbb,
-0x4f, 0x9e, 0x32, 0xad, 0x35, 0x98, 0x42, 0xf8,
-0x6e, 0x03, 0x5a, 0xb0, 0xef, 0x26, 0x3f, 0x0d,
-0x0d, 0x4d, 0x51, 0x98, 0x5d, 0x5e, 0x4e, 0x1e,
-0x64, 0x80, 0x2b, 0x57, 0xaf, 0xd1, 0x22, 0xd7,
-0x5a, 0xe8, 0xe7, 0xbf, 0xa7, 0xcf, 0x9e, 0xa9,
-0x6b, 0xa8, 0xdf, 0x17, 0xb2, 0xdf, 0xd4, 0xd8,
-0x94, 0xfd, 0x65, 0xc1, 0xdc, 0x30, 0x32, 0xea,
-0x73, 0x30, 0xec, 0x90, 0x58, 0xae, 0xec, 0x32,
-0xc8, 0xd0, 0xd2, 0xca, 0xbf, 0xa8, 0x26, 0x02,
-0xe2, 0xdc, 0x9d, 0x98, 0x18, 0xe9, 0xfb, 0x77,
-0x71, 0x73, 0x57, 0x52, 0x52, 0x16, 0x84, 0xaa,
-0xaa, 0xda, 0x96, 0x6d, 0xdb, 0x60, 0xae, 0x36,
-0xb7, 0xb4, 0xc4, 0x3f, 0x7e, 0xbc, 0x78, 0xf1,
-0x92, 0xff, 0x63, 0xef, 0x3c, 0xa0, 0xa2, 0x3a,
-0xba, 0x07, 0x7e, 0xce, 0x5f, 0x41, 0x84, 0x28,
-0x20, 0xbb, 0x2c, 0x65, 0x17, 0x0b, 0x6f, 0x05,
-0x2c, 0x08, 0x28, 0x0a, 0x24, 0x46, 0xc5, 0x5e,
-0x40, 0x50, 0x54, 0x96, 0x2a, 0xbd, 0xaa, 0x08,
-0x46, 0x45, 0xfd, 0x54, 0x94, 0x58, 0x62, 0x12,
-0x03, 0x6a, 0xa2, 0x11, 0x6b, 0xc4, 0x12, 0x5b,
-0x34, 0xc6, 0x12, 0xfb, 0x17, 0x35, 0x08, 0x96,
-0x88, 0x62, 0x49, 0xfc, 0x8c, 0x05, 0x6c, 0xa0,
-0x91, 0x26, 0xb8, 0xe8, 0x39, 0xff, 0x3b, 0xf3,
-0x76, 0x97, 0xc7, 0x16, 0x14, 0x05, 0x57, 0xc8,
-0xdd, 0xf3, 0x3b, 0x73, 0x66, 0xee, 0xdc, 0x99,
-0xb9, 0x33, 0xaf, 0xdc, 0x37, 0x6f, 0xdf, 0x9b,
-0x07, 0x12, 0xb5, 0xe7, 0x37, 0x63, 0x23, 0xe3,
-0x01, 0x03, 0x07, 0x6f, 0xdb, 0xb6, 0xbd, 0xf6,
-0x0f, 0x91, 0x28, 0x01, 0x47, 0xe8, 0xca, 0x55,
-0x19, 0xbd, 0x7a, 0xb9, 0x68, 0x7a, 0xe2, 0xa5,
-0x39, 0x5d, 0xc4, 0x63, 0xb8, 0xc7, 0xf0, 0xad,
-0xdb, 0xb6, 0x16, 0x69, 0xbe, 0xa1, 0x0d, 0x64,
-0x6e, 0xd9, 0x66, 0x66, 0x66, 0xae, 0x64, 0x7f,
-0x9d, 0x80, 0x86, 0xd6, 0xac, 0x5d, 0xa7, 0x54,
-0xed, 0xc6, 0x4d, 0x9b, 0xe0, 0x04, 0xa2, 0xaa,
-0x99, 0x77, 0x4d, 0xc3, 0x7a, 0x05, 0xaf, 0x5e,
-0x3e, 0x2b, 0x2e, 0x3e, 0x7e, 0xf2, 0x64, 0x4a,
-0x4a, 0xaa, 0xbb, 0x7b, 0x7f, 0x70, 0xac, 0xb5,
-0x9c, 0x7c, 0x74, 0x9a, 0x93, 0x2b, 0x16, 0x2f,
-0x6f, 0x9f, 0x6d, 0xdb, 0xb7, 0xbf, 0x76, 0xc1,
-0xa8, 0x3a, 0xf9, 0xdf, 0x4d, 0x99, 0x99, 0xa6,
-0xa6, 0x02, 0x25, 0xb3, 0x27, 0x4d, 0x49, 0x2c,
-0xab, 0x28, 0xaf, 0x7a, 0xf5, 0xf2, 0xea, 0xf5,
-0x1b, 0x33, 0x67, 0xce, 0xb1, 0x30, 0x17, 0xaa,
-0xfd, 0x1b, 0xda, 0xce, 0xb6, 0xf3, 0xfc, 0xd4,
-0x85, 0x45, 0x35, 0x3f, 0x91, 0xfc, 0xe7, 0xcd,
-0xbf, 0x52, 0xe6, 0x7d, 0xde, 0xb1, 0xa3, 0x8d,
-0xda, 0xee, 0xc0, 0x80, 0x84, 0x47, 0x44, 0x5e,
-0xbd, 0x7e, 0xed, 0xb5, 0x17, 0x81, 0x70, 0x9e,
-0xcc, 0xb9, 0x70, 0x6e, 0x69, 0x5a, 0xba, 0x87,
-0xa7, 0x57, 0xdb, 0xb6, 0xed, 0xd4, 0x3e, 0x81,
-0xa6, 0x18, 0x1c, 0xc3, 0xd6, 0x86, 0x9f, 0x7e,
-0xda, 0x77, 0xf9, 0x8a, 0x95, 0xf9, 0x0f, 0xee,
-0xbf, 0xc9, 0x09, 0xbf, 0xb0, 0xa8, 0x68, 0xeb,
-0x8f, 0xdb, 0x87, 0x0f, 0xf7, 0x84, 0xab, 0xb5,
-0x5a, 0x86, 0x1d, 0x86, 0x11, 0x14, 0xfa, 0xf7,
-0x1f, 0x90, 0x55, 0xf3, 0x71, 0x77, 0x55, 0x4a,
-0xcb, 0x4b, 0x0f, 0x1e, 0x3a, 0x18, 0x1a, 0x1a,
-0x2e, 0x30, 0x35, 0xaf, 0xe5, 0xcb, 0x4a, 0xd0,
-0x96, 0xa5, 0xa5, 0x70, 0xdd, 0xba, 0xf5, 0xdc,
-0x2b, 0x04, 0xd8, 0xa6, 0xea, 0xfd, 0xef, 0xe9,
-0x13, 0xec, 0x38, 0xec, 0x3f, 0x70, 0xc0, 0xd7,
-0x57, 0xa2, 0x69, 0x09, 0x9d, 0x4e, 0x9d, 0x3a,
-0xc3, 0x80, 0x3f, 0x7e, 0xdd, 0x03, 0x42, 0xd0,
-0x8a, 0xea, 0x9e, 0x6c, 0x63, 0x63, 0xfb, 0xdb,
-0xe9, 0x53, 0xaa, 0xca, 0x27, 0x4e, 0x9e, 0x50,
-0x3d, 0x46, 0x06, 0x0e, 0x1c, 0xf4, 0x88, 0x3e,
-0x31, 0x72, 0xff, 0xe1, 0xc3, 0xf4, 0xe5, 0xcb,
-0xbb, 0xf7, 0x70, 0x56, 0xbb, 0x52, 0x1c, 0xf4,
-0xd1, 0x9a, 0x11, 0x2f, 0x5c, 0xbc, 0xf0, 0xf6,
-0x5d, 0xf5, 0x7f, 0xfb, 0x6a, 0xda, 0xdc, 0xfb,
-0x0e, 0xee, 0xf7, 0x0f, 0x08, 0x34, 0x13, 0x68,
-0xbc, 0x2e, 0xd2, 0x6f, 0xa9, 0xef, 0xe8, 0xe0,
-0x98, 0xfa, 0xf9, 0x82, 0xbc, 0x6b, 0xd7, 0x6a,
-0xaf, 0xad, 0xb8, 0xb4, 0x64, 0xec, 0xd8, 0x71,
-0xaa, 0xfd, 0xdd, 0x46, 0x17, 0xbf, 0xaa, 0x78,
-0x51, 0xf9, 0xdb, 0xe9, 0xd3, 0xc1, 0xc1, 0xa1,
-0x7c, 0x53, 0xe5, 0xa5, 0xae, 0x58, 0x60, 0x77,
-0x1a, 0x36, 0xdc, 0xf3, 0xc8, 0xb1, 0x63, 0xb8,
-0xe6, 0x06, 0xf2, 0x16, 0xdc, 0xbe, 0x7b, 0xbb,
-0x67, 0x4f, 0x35, 0x4f, 0x48, 0xc2, 0xfc, 0x37,
-0x73, 0xf3, 0xe6, 0x77, 0x7f, 0x91, 0x0d, 0x1c,
-0xdc, 0xdd, 0xfc, 0xfc, 0x3b, 0xf7, 0xee, 0x01,
-0x77, 0xf3, 0xef, 0xd3, 0x30, 0xff, 0x59, 0x71,
-0x89, 0xe2, 0x73, 0x33, 0x70, 0x7a, 0xb9, 0x79,
-0xeb, 0xd6, 0x0f, 0x99, 0x5b, 0xa6, 0x27, 0xcf,
-0x0c, 0x0e, 0x0d, 0x19, 0x37, 0xce, 0x17, 0xae,
-0xcf, 0xa7, 0x4d, 0x9b, 0xbe, 0x72, 0xe5, 0xaa,
-0xcb, 0x79, 0x79, 0x6a, 0x9f, 0xda, 0x7d, 0x13,
-0xe0, 0x20, 0xbd, 0x98, 0x9b, 0x9b, 0xb1, 0x76,
-0xcd, 0xd4, 0xa9, 0xd3, 0x43, 0xc3, 0xc3, 0xe1,
-0xa4, 0x14, 0x18, 0x14, 0x1c, 0x1d, 0x1b, 0x97,
-0x9a, 0xba, 0x60, 0xfb, 0xf6, 0x1d, 0x7f, 0xdf,
-0xb9, 0x5b, 0x29, 0x7d, 0xfd, 0x9d, 0xa2, 0x92,
-0xb2, 0xb2, 0xbb, 0xf9, 0x05, 0xac, 0xf1, 0x6f,
-0x07, 0x74, 0xb9, 0xa4, 0x4c, 0x79, 0xc5, 0x06,
-0x38, 0xe4, 0xef, 0x15, 0x3c, 0xe0, 0x0c, 0x08,
-0x84, 0x64, 0x88, 0xa4, 0x55, 0xaf, 0xef, 0x17,
-0xcc, 0x1c, 0xc1, 0xa4, 0xe3, 0x27, 0x4e, 0x7e,
-0xb7, 0x72, 0x55, 0xf2, 0x8c, 0x59, 0x61, 0x11,
-0x11, 0x12, 0x89, 0xbf, 0xaf, 0x44, 0x32, 0x3e,
-0x34, 0x74, 0x62, 0x42, 0xc2, 0x92, 0x2f, 0xbf,
-0xda, 0xf7, 0xcb, 0x2f, 0x37, 0xff, 0x7e, 0xfd,
-0x12, 0xd6, 0x2c, 0x75, 0xfa, 0xff, 0x57, 0xed,
-0x68, 0x3c, 0x7d, 0x56, 0xc3, 0xc5, 0xdf, 0xbb,
-0x5f, 0xb0, 0x63, 0xe7, 0xee, 0xe9, 0xc9, 0xb3,
-0x82, 0x43, 0x42, 0x24, 0x7e, 0xfe, 0x11, 0x51,
-0x51, 0x73, 0x53, 0x52, 0x7e, 0xd9, 0xbf, 0x5f,
-0xd3, 0xf2, 0xa4, 0xb0, 0x1b, 0x14, 0x15, 0x3d,
-0xd9, 0x7f, 0xe0, 0xd0, 0xfc, 0xd4, 0xcf, 0x23,
-0x22, 0xa3, 0xfd, 0xfd, 0xfd, 0x83, 0x82, 0xc7,
-0x7f, 0xf6, 0xd9, 0x54, 0x98, 0x6b, 0xdf, 0xba,
-0xfd, 0xb7, 0xda, 0x37, 0x7d, 0x6a, 0x01, 0xc6,
-0xef, 0xe1, 0xe3, 0xc7, 0x59, 0xd9, 0xe7, 0xd7,
-0xae, 0xdb, 0x30, 0x37, 0x65, 0x7e, 0x64, 0x4c,
-0x74, 0x60, 0x50, 0xd0, 0xb8, 0x71, 0xe3, 0x82,
-0x43, 0x42, 0x63, 0xe3, 0xe2, 0xa1, 0x89, 0x1f,
-0x77, 0xec, 0xbc, 0x92, 0x97, 0xf7, 0x16, 0xcb,
-0x23, 0x80, 0x25, 0x30, 0x17, 0xde, 0xb1, 0x6b,
-0x77, 0x4a, 0xca, 0xbc, 0x98, 0xd8, 0xb8, 0x80,
-0xc0, 0x40, 0xd8, 0x51, 0xa1, 0x8f, 0x13, 0x26,
-0x26, 0xcc, 0x99, 0x9b, 0xb2, 0x6e, 0xc3, 0xc6,
-0x53, 0xbf, 0x9f, 0xbe, 0x9b, 0xff, 0xa0, 0x4e,
-0x35, 0xdf, 0xbb, 0x9f, 0xbf, 0xff, 0xd0, 0xa1,
-0x85, 0x8b, 0x16, 0x47, 0xc7, 0xc6, 0x83, 0x9d,
-0x12, 0x89, 0x24, 0x28, 0x98, 0xec, 0xa2, 0x33,
-0x66, 0xcc, 0x5c, 0xbe, 0x7c, 0xc5, 0xb1, 0xe3,
-0xc7, 0x61, 0x27, 0x51, 0x1a, 0x01, 0x4d, 0xcf,
-0x3f, 0x9f, 0xe4, 0x7c, 0x82, 0x0a, 0xf6, 0xa2,
-0xab, 0xd7, 0xaf, 0xaf, 0xdb, 0xb0, 0xe9, 0xb3,
-0xa9, 0xd3, 0xc9, 0x56, 0x90, 0x48, 0x60, 0x2b,
-0xa4, 0xcc, 0x9b, 0x5f, 0xdb, 0x56, 0x50, 0xde,
-0xd0, 0xa5, 0xec, 0x9e, 0xa9, 0xd8, 0x45, 0x81,
-0x82, 0x07, 0x8f, 0xd4, 0xba, 0x18, 0x38, 0xd0,
-0x38, 0xca, 0x05, 0xec, 0xc1, 0xfe, 0xa8, 0xb0,
-0x90, 0x7b, 0xd9, 0x50, 0x5c, 0x5a, 0x9c, 0x75,
-0x36, 0x7b, 0xe9, 0xd2, 0xf4, 0xc9, 0x89, 0x49,
-0x70, 0x18, 0xfa, 0xf9, 0xf9, 0x85, 0x85, 0x87,
-0xcf, 0x4d, 0x99, 0xb7, 0xe7, 0xe7, 0x5f, 0x6a,
-0x79, 0x5f, 0xac, 0x76, 0xe0, 0xaa, 0x0c, 0xae,
-0xb4, 0x77, 0xee, 0xde, 0x33, 0x3f, 0x75, 0x41,
-0x74, 0x4c, 0x8c, 0x9f, 0x7f, 0x80, 0x9f, 0x9f,
-0x7f, 0x68, 0x78, 0x04, 0x9c, 0x46, 0x56, 0x67,
-0xac, 0x3d, 0x9b, 0x93, 0xf3, 0xda, 0x15, 0xf0,
-0x14, 0x3c, 0x2a, 0x2c, 0xaa, 0xfd, 0xb0, 0x85,
-0xfd, 0xea, 0xf6, 0x9d, 0xbb, 0xbb, 0x76, 0xef,
-0x9e, 0x39, 0x6b, 0x76, 0x58, 0x44, 0xa4, 0x9f,
-0x3f, 0x38, 0xff, 0xa0, 0xb8, 0x09, 0xf1, 0x2b,
-0x57, 0xad, 0xba, 0xf0, 0xc7, 0xa5, 0xb7, 0x3e,
-0x47, 0x21, 0x48, 0xe1, 0x93, 0xc2, 0x11, 0x1e,
-0x1e, 0x6a, 0xaf, 0xe7, 0xe3, 0xe2, 0xe3, 0xeb,
-0xba, 0xda, 0xcf, 0xbb, 0x00, 0x97, 0x9a, 0xb0,
-0xcf, 0x3f, 0x2b, 0x29, 0x86, 0x10, 0xe2, 0xf5,
-0xf3, 0x0e, 0xfb, 0x2b, 0x45, 0xb5, 0xcf, 0xc0,
-0xeb, 0xc1, 0x21, 0x09, 0x27, 0xb4, 0xa6, 0xf1,
-0x76, 0x3c, 0xf4, 0xa2, 0x52, 0xca, 0x76, 0xad,
-0x04, 0xce, 0x6f, 0x10, 0x81, 0x33, 0x61, 0x5d,
-0xbb, 0x56, 0x27, 0xff, 0xfb, 0xe6, 0x80, 0x61,
-0x30, 0xda, 0xb0, 0x29, 0x4b, 0xcb, 0xcb, 0x54,
-0x57, 0x00, 0x53, 0x0b, 0x9c, 0xae, 0x4b, 0xcb,
-0xcb, 0xd9, 0xad, 0xff, 0xbc, 0xb2, 0xe2, 0x5d,
-0xb7, 0xd1, 0x2b, 0xf2, 0x51, 0x24, 0xd8, 0xdc,
-0xd4, 0x0c, 0xd8, 0xf4, 0x64, 0x70, 0xde, 0xd0,
-0x92, 0xda, 0x81, 0x4a, 0x68, 0xb5, 0xc5, 0x60,
-0x2a, 0xdd, 0xa3, 0xde, 0xb5, 0x5a, 0xe8, 0x38,
-0xc7, 0x4e, 0xb2, 0x8b, 0x92, 0x5b, 0x43, 0x1a,
-0xba, 0xaf, 0xd1, 0xff, 0x9e, 0x52, 0x33, 0x33,
-0x85, 0x61, 0x64, 0xab, 0xa5, 0xbb, 0xbd, 0xf6,
-0x57, 0x64, 0x92, 0x56, 0x55, 0xc1, 0x56, 0x60,
-0x77, 0x0c, 0xd8, 0xca, 0xf5, 0x65, 0x12, 0x1c,
-0xd1, 0xdc, 0xa3, 0x00, 0x2e, 0x81, 0x5e, 0xbb,
-0x28, 0xd0, 0x5b, 0x03, 0x95, 0xc3, 0x2e, 0x0d,
-0x0d, 0xb1, 0x5b, 0xaa, 0xe1, 0x1a, 0x42, 0xfe,
-0x25, 0xc0, 0x41, 0x0a, 0xd7, 0xc9, 0x6a, 0x6f,
-0xad, 0x08, 0x2d, 0x85, 0x47, 0x8e, 0x1e, 0xd5,
-0xf4, 0x9d, 0x38, 0x05, 0x15, 0x95, 0x15, 0xf8,
-0xd4, 0x41, 0x23, 0xa5, 0x4e, 0xcf, 0x5f, 0x21,
-0x5a, 0x67, 0xfb, 0x4e, 0xf5, 0xcf, 0x3f, 0xff,
-0xf7, 0xb4, 0xc6, 0x4f, 0x30, 0x23, 0x08, 0xf2,
-0x21, 0xf3, 0xeb, 0xe1, 0x23, 0x6a, 0x57, 0x70,
-0xd5, 0x69, 0xa6, 0xe3, 0xd0, 0xcd, 0x71, 0x53,
-0x66, 0xe6, 0xe3, 0xa2, 0xc7, 0xdc, 0x8b, 0x55,
-0xb8, 0x38, 0x87, 0xeb, 0x58, 0x10, 0x5e, 0xba,
-0x7c, 0x69, 0xed, 0x86, 0xf5, 0x01, 0x01, 0x81,
-0x47, 0x8e, 0xa9, 0x79, 0x30, 0x03, 0xf9, 0xf0,
-0xa9, 0xd3, 0xff, 0xbf, 0x88, 0xd6, 0xd1, 0xf4,
-0xfd, 0x23, 0xb5, 0xff, 0xcc, 0x22, 0x08, 0xf2,
-0xe1, 0x53, 0x5c, 0x5a, 0xda, 0xcd, 0x41, 0xf9,
-0x0b, 0x5f, 0x0a, 0xda, 0x18, 0x9b, 0x0c, 0xf7,
-0x18, 0x31, 0x3f, 0x35, 0x75, 0xcb, 0x8f, 0x5b,
-0x76, 0xef, 0xd9, 0xbd, 0x79, 0xfb, 0xb6, 0xa5,
-0x69, 0x69, 0x93, 0x13, 0x93, 0x86, 0x0d, 0x1b,
-0x6e, 0xdb, 0xd1, 0xb6, 0x95, 0x41, 0x2b, 0xf0,
-0xdd, 0xab, 0x33, 0xd6, 0x68, 0xbd, 0x17, 0x8d,
-0x8b, 0x4a, 0xe9, 0x0b, 0x40, 0xb1, 0x7a, 0x55,
-0xa5, 0xb4, 0x52, 0x2b, 0x6b, 0xb6, 0xa3, 0xff,
-0x6d, 0x5c, 0x68, 0xbc, 0xff, 0x7c, 0xfa, 0xbf,
-0xf5, 0xdb, 0xd0, 0x8b, 0x2a, 0xe9, 0x73, 0x7a,
-0x5f, 0x8b, 0x0d, 0x21, 0x89, 0xdf, 0x14, 0x40,
-0x90, 0x06, 0x62, 0xcb, 0xb6, 0xed, 0x02, 0x41,
-0xdd, 0x5e, 0x36, 0xe7, 0x32, 0x37, 0x25, 0x45,
-0xeb, 0x5d, 0x68, 0x2c, 0x54, 0xbd, 0x7a, 0xf9,
-0xd3, 0x4f, 0x3f, 0xf7, 0xe9, 0xdb, 0xcf, 0xd5,
-0xed, 0x63, 0x25, 0xfe, 0xba, 0x55, 0xdb, 0x5b,
-0x21, 0x0d, 0x41, 0x03, 0xfd, 0xff, 0x8b, 0x34,
-0x10, 0x9a, 0xd6, 0xdf, 0xf8, 0xed, 0xf4, 0xe9,
-0x7a, 0x6c, 0x65, 0xff, 0x81, 0x43, 0xdc, 0xdd,
-0xd2, 0xc5, 0xd5, 0xad, 0x97, 0x8b, 0xeb, 0xb0,
-0xe1, 0x1e, 0xe7, 0x2f, 0x5c, 0xd0, 0xfa, 0x08,
-0x20, 0x48, 0xd3, 0xe3, 0x9f, 0x92, 0x67, 0x53,
-0xa7, 0x4e, 0x7b, 0xeb, 0x77, 0x5d, 0xa3, 0x62,
-0x62, 0xb5, 0xde, 0x85, 0x46, 0x84, 0xda, 0xf5,
-0x27, 0xeb, 0xeb, 0xfb, 0xbf, 0x75, 0x02, 0xfd,
-0x6f, 0xe3, 0x42, 0xb3, 0xff, 0xad, 0xcf, 0xfb,
-0xcf, 0x9b, 0x36, 0xd5, 0x61, 0xfd, 0x0d, 0x04,
-0x41, 0xde, 0x9d, 0x87, 0x8f, 0x1f, 0xc7, 0xc7,
-0x4f, 0x7c, 0x93, 0x95, 0x2b, 0x54, 0xf1, 0x1c,
-0xe9, 0x85, 0x8f, 0x60, 0xbd, 0x21, 0x30, 0xff,
-0xad, 0xeb, 0xf7, 0x17, 0x1a, 0x0e, 0x7c, 0xfe,
-0xaa, 0x71, 0xa1, 0x69, 0xfd, 0xab, 0xfa, 0x7d,
-0xfe, 0xaa, 0x4e, 0xdf, 0x1f, 0x44, 0x10, 0xa4,
-0x5e, 0xf8, 0xe7, 0xd9, 0xb3, 0xf4, 0x65, 0xcb,
-0xed, 0xbb, 0x76, 0xab, 0x65, 0x05, 0x03, 0xb5,
-0xb8, 0xb9, 0xb9, 0xa9, 0xbe, 0xe5, 0x8a, 0x68,
-0x62, 0xcd, 0xba, 0x75, 0x1f, 0x8a, 0xff, 0xc5,
-0xff, 0x7f, 0x1b, 0x15, 0xef, 0xe7, 0xff, 0xdf,
-0x3a, 0xad, 0x3f, 0x89, 0x20, 0x48, 0x7d, 0x51,
-0x29, 0xad, 0xcc, 0xcd, 0xcd, 0x4b, 0x4c, 0x4c,
-0xb2, 0xb5, 0xed, 0xf4, 0x26, 0x4b, 0x1f, 0xb7,
-0xd0, 0x6d, 0xc1, 0x30, 0xe2, 0xc9, 0x49, 0x89,
-0xb5, 0xac, 0xf0, 0x86, 0x70, 0xd1, 0xb8, 0xfe,
-0xb3, 0x6e, 0x8b, 0x0b, 0x97, 0x2e, 0xbd, 0x67,
-0x63, 0xd0, 0xff, 0x36, 0x2e, 0x34, 0xbd, 0x7f,
-0xf4, 0x1e, 0xfc, 0xaf, 0xa6, 0xf5, 0x27, 0x11,
-0x04, 0xa9, 0x77, 0x8a, 0x9e, 0x3e, 0x3d, 0x7a,
-0xfc, 0xc4, 0xe2, 0xc5, 0x4b, 0x42, 0x43, 0x43,
-0x87, 0x0c, 0x19, 0xf6, 0xb1, 0x5b, 0xef, 0x9e,
-0xce, 0xbd, 0x5c, 0x5c, 0xdc, 0xfa, 0xf5, 0x73,
-0x1f, 0x31, 0xc2, 0x23, 0x30, 0x38, 0x38, 0x79,
-0xc6, 0xac, 0xf5, 0x1b, 0x36, 0x66, 0xe5, 0xe4,
-0xfc, 0x53, 0x5c, 0xdc, 0x34, 0x56, 0xb4, 0x78,
-0x6f, 0xa8, 0x9d, 0xff, 0xd6, 0xf2, 0xfd, 0xa3,
-0x86, 0xe3, 0xfb, 0x8c, 0x95, 0xaa, 0xfe, 0xd7,
-0xdc, 0xdc, 0xe2, 0xf4, 0x99, 0x33, 0x5a, 0x1f,
-0x25, 0x44, 0x95, 0x2d, 0xdb, 0x34, 0xbd, 0x7f,
-0x54, 0x9f, 0xcf, 0x5f, 0xe1, 0xfc, 0x17, 0x41,
-0x3e, 0x04, 0xa4, 0x55, 0x55, 0x25, 0x65, 0x25,
-0x8f, 0x0a, 0x0b, 0xef, 0x15, 0xe4, 0xdf, 0xbe,
-0x73, 0xfb, 0x0e, 0x59, 0x98, 0xad, 0xa0, 0xf0,
-0x49, 0x51, 0x71, 0x69, 0x09, 0x2e, 0x36, 0xfe,
-0x76, 0xc0, 0xb5, 0xca, 0x9a, 0xb5, 0xeb, 0xda,
-0x18, 0xb5, 0xd1, 0xd7, 0xd3, 0xe7, 0x02, 0x1e,
-0xf9, 0x72, 0x5e, 0xde, 0x7b, 0x36, 0x66, 0x75,
-0x46, 0x86, 0x7a, 0xff, 0x8b, 0xf3, 0xdf, 0x0f,
-0x12, 0x4d, 0xcf, 0x5f, 0xd5, 0xef, 0xfc, 0x77,
-0xf3, 0xd6, 0xad, 0x4a, 0x3b, 0x27, 0x60, 0x25,
-0xb2, 0x42, 0xff, 0x8b, 0x20, 0x48, 0x63, 0x27,
-0x2f, 0xef, 0xea, 0x8a, 0x6f, 0x57, 0xa6, 0xa5,
-0xa7, 0xa7, 0x2f, 0x5b, 0xfe, 0x4d, 0x5a, 0x3a,
-0x8d, 0x2c, 0x5b, 0xb6, 0x62, 0x45, 0xe1, 0x93,
-0x27, 0x0d, 0xdd, 0xb4, 0x12, 0x6b, 0xd7, 0x6d,
-0x10, 0x98, 0x0a, 0x8c, 0x0c, 0x8d, 0x8c, 0x8c,
-0x8d, 0x64, 0xa1, 0xb1, 0x91, 0xb8, 0xa3, 0x4d,
-0xb6, 0xe6, 0xaf, 0xf2, 0x21, 0x5a, 0xe4, 0xa7,
-0xbd, 0x7b, 0x2d, 0x2c, 0x2d, 0x8d, 0x8d, 0x4d,
-0x8c, 0xd8, 0x9f, 0xa1, 0x91, 0x49, 0x1b, 0x13,
-0xe0, 0x4c, 0x56, 0x56, 0x3d, 0xb6, 0x72, 0xed,
-0xc6, 0x75, 0xd8, 0x27, 0xd3, 0xd2, 0x97, 0x43,
-0xf8, 0x4d, 0xda, 0x32, 0xd8, 0x39, 0x21, 0xf2,
-0x7d, 0xc6, 0x9a, 0x7b, 0x05, 0x75, 0xf8, 0x4a,
-0x02, 0x82, 0x20, 0xc8, 0x87, 0x89, 0xf4, 0x65,
-0x95, 0xf4, 0x25, 0x59, 0x89, 0x9a, 0x0d, 0x59,
-0xde, 0xbf, 0x19, 0x8f, 0x0b, 0x8b, 0xb2, 0xb2,
-0xb3, 0xb3, 0xcf, 0x9d, 0xcb, 0xca, 0x39, 0xc7,
-0x86, 0xc0, 0xf9, 0x8b, 0x97, 0x4a, 0xca, 0x4a,
-0xb4, 0x3e, 0x44, 0x88, 0x2a, 0x45, 0x4f, 0xff,
-0xc9, 0x39, 0x7f, 0x3e, 0x2b, 0x27, 0xe7, 0x6c,
-0xce, 0xb9, 0xb3, 0xe7, 0xc8, 0x26, 0xcb, 0x3e,
-0x77, 0x1e, 0x28, 0x29, 0xad, 0xe7, 0xa7, 0x1f,
-0xe9, 0x9e, 0x49, 0x76, 0x4e, 0x08, 0xd9, 0x9d,
-0xf3, 0xdd, 0x3f, 0x45, 0x8a, 0x20, 0x08, 0x82,
-0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08,
-0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20,
-0x08, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82,
-0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08,
-0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20,
-0x08, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82,
-0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08,
-0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20,
-0x08, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82,
-0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08,
-0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x20,
-0x08, 0x82, 0x20, 0x08, 0x82, 0xd4, 0x17, 0x55,
-0xaf, 0xaa, 0xa4, 0x2f, 0xa5, 0x95, 0xd2, 0xca,
-0xf2, 0x8a, 0xf2, 0xd2, 0xe7, 0x65, 0x25, 0xe5,
-0xa5, 0x40, 0x29, 0x0b, 0x4d, 0xd6, 0x12, 0x96,
-0x2a, 0x34, 0x51, 0xb9, 0x71, 0x2a, 0xe3, 0xe6,
-0x6e, 0xda, 0xca, 0x0d, 0xbe, 0x7d, 0x39, 0xc9,
-0xb2, 0xe7, 0x65, 0x94, 0xf2, 0xf2, 0x8a, 0xe7,
-0x70, 0x32, 0x29, 0xab, 0x78, 0xce, 0x52, 0x2e,
-0x8f, 0x68, 0xa6, 0xe2, 0x0d, 0x24, 0x75, 0xe2,
-0x1d, 0x8b, 0x37, 0x05, 0xca, 0x2b, 0x2b, 0x2a,
-0xa4, 0xd2, 0x17, 0x2f, 0xa5, 0x55, 0xaf, 0xe0,
-0x24, 0xaf, 0x7d, 0x47, 0x83, 0x00, 0xe0, 0x6a,
-0x4b, 0xcb, 0x4a, 0x1f, 0x16, 0x3d, 0xbe, 0x79,
-0xeb, 0x7f, 0xe7, 0x2e, 0x5e, 0x38, 0x72, 0xf4,
-0x48, 0xe6, 0x96, 0x2d, 0xcb, 0x56, 0xac, 0x98,
-0x35, 0xe7, 0x3f, 0xb1, 0x71, 0xf1, 0x21, 0x21,
-0xa1, 0x41, 0xc1, 0xe3, 0x81, 0xf1, 0x21, 0xa1,
-0xc1, 0xe3, 0x43, 0x42, 0xd8, 0x30, 0x34, 0x0c,
-0x24, 0x4a, 0xa1, 0x22, 0x17, 0x12, 0xa8, 0xdc,
-0x78, 0x95, 0x71, 0x73, 0x37, 0x6d, 0xe5, 0x86,
-0xde, 0xbe, 0xdc, 0x64, 0x58, 0x58, 0x78, 0x44,
-0x44, 0x64, 0x74, 0x54, 0x7c, 0xd4, 0x84, 0xcf,
-0xa2, 0x12, 0xe6, 0x44, 0x25, 0x2e, 0x88, 0x99,
-0xf6, 0x75, 0xcc, 0xb4, 0xf4, 0xd8, 0xe4, 0xb4,
-0x98, 0xe9, 0xe9, 0x31, 0xd3, 0x97, 0xc5, 0x24,
-0x2f, 0x83, 0x24, 0x09, 0xd9, 0x88, 0x9c, 0xe8,
-0xe9, 0x2b, 0xb8, 0x49, 0xb5, 0x12, 0x59, 0x41,
-0x45, 0xa8, 0x9a, 0x54, 0x5b, 0x9c, 0xcd, 0x85,
-0xa6, 0xb9, 0xad, 0xab, 0x2d, 0x95, 0xbc, 0x4c,
-0xa6, 0xc6, 0x52, 0x4b, 0xbb, 0x5c, 0x61, 0xed,
-0x15, 0x2a, 0x45, 0x94, 0x92, 0x5c, 0xab, 0x54,
-0x73, 0xd5, 0xa2, 0xa9, 0x15, 0x55, 0x9b, 0xa7,
-0xa5, 0x4f, 0x98, 0xb5, 0x62, 0xc6, 0x57, 0x3f,
-0x7c, 0x93, 0xb1, 0x6b, 0xf3, 0xce, 0xe3, 0xfb,
-0x8f, 0xe6, 0xfc, 0xfe, 0xc7, 0x5f, 0x7f, 0xdd,
-0xba, 0xfd, 0xe0, 0xf1, 0xd3, 0xe2, 0xd2, 0xd2,
-0xca, 0x17, 0x2f, 0xb4, 0xee, 0x89, 0xfe, 0x3d,
-0x80, 0xcf, 0x2d, 0x7a, 0xfa, 0xe4, 0xe2, 0x1f,
-0x17, 0x57, 0xaf, 0x59, 0xe3, 0x1f, 0x14, 0xf0,
-0x49, 0xef, 0xde, 0x5d, 0xba, 0x74, 0xb1, 0x12,
-0x59, 0x09, 0x4c, 0xcd, 0x4c, 0x8c, 0x4d, 0x0c,
-0x5b, 0x19, 0x1a, 0xb4, 0x34, 0xd0, 0xd3, 0xd5,
-0xd3, 0x6d, 0xae, 0xab, 0xd3, 0x4c, 0x07, 0x41,
-0x10, 0xe4, 0xad, 0x81, 0xd3, 0x88, 0xae, 0x8e,
-0x9e, 0x8e, 0x8e, 0xbe, 0xae, 0xee, 0x47, 0x2d,
-0xf5, 0xdb, 0xb4, 0x34, 0xee, 0x60, 0x20, 0xb0,
-0x37, 0xb4, 0xfa, 0xc4, 0xd8, 0x7a, 0xb0, 0x89,
-0x8d, 0x97, 0x89, 0x8d, 0xb7, 0x49, 0x47, 0x6f,
-0x13, 0x9b, 0x51, 0x26, 0x1d, 0xbd, 0x48, 0x84,
-0xc4, 0xbd, 0x64, 0x72, 0x9b, 0x91, 0x26, 0x36,
-0xa3, 0x69, 0x48, 0x23, 0x1d, 0x3d, 0x89, 0x1a,
-0xc1, 0x9b, 0x67, 0x4b, 0xe5, 0x24, 0xf4, 0x32,
-0xb1, 0xf5, 0x92, 0xa9, 0xd5, 0x48, 0x7a, 0xf1,
-0xec, 0x46, 0xb2, 0xca, 0x10, 0xf2, 0x6c, 0x47,
-0xf2, 0x6a, 0xe6, 0x92, 0xd0, 0x56, 0x11, 0x82,
-0xdc, 0xbb, 0x5a, 0x4e, 0x9a, 0xf3, 0x96, 0xd5,
-0x26, 0x13, 0x12, 0x78, 0x32, 0x1d, 0x0f, 0x5a,
-0xa7, 0x17, 0x55, 0x18, 0x4d, 0xe3, 0xde, 0x8a,
-0xda, 0x78, 0xb6, 0x9e, 0xca, 0x56, 0xb1, 0xc6,
-0xd8, 0x92, 0x0a, 0xa9, 0x19, 0xb4, 0x20, 0xe9,
-0xcb, 0x18, 0xa2, 0xac, 0x30, 0x40, 0xd1, 0x90,
-0xac, 0xa0, 0xbc, 0xac, 0x3c, 0x97, 0xed, 0x02,
-0xed, 0x94, 0x97, 0x6a, 0x2e, 0x3b, 0x62, 0x3c,
-0xbb, 0x51, 0xd0, 0x11, 0x9e, 0x1d, 0xb4, 0x05,
-0x11, 0x68, 0xd4, 0xc7, 0x44, 0x3c, 0xb2, 0x8d,
-0xd8, 0x93, 0xb5, 0x13, 0x6c, 0xe0, 0xdb, 0x79,
-0x99, 0x75, 0xf2, 0xb1, 0xb4, 0x1f, 0xd3, 0xce,
-0xc9, 0xd7, 0xba, 0xe7, 0x78, 0xbb, 0xde, 0x11,
-0xf6, 0x83, 0xe3, 0xdc, 0x7d, 0x12, 0xc7, 0x44,
-0xa6, 0x2e, 0x5c, 0xfe, 0xe3, 0x89, 0x33, 0xb9,
-0x77, 0x0a, 0x0a, 0x2b, 0x5e, 0x54, 0x6a, 0xdd,
-0x43, 0x35, 0x55, 0x4a, 0xca, 0x4a, 0x2f, 0xe6,
-0xe6, 0x2e, 0x4d, 0x4b, 0xf3, 0xf2, 0xf2, 0xb6,
-0x6e, 0x6f, 0xad, 0xaf, 0xa7, 0xdf, 0xfc, 0xff,
-0x9a, 0x23, 0x08, 0x82, 0xbc, 0x57, 0x74, 0x0c,
-0x74, 0x5b, 0x1a, 0xb7, 0x34, 0xea, 0xd0, 0x5a,
-0xe4, 0x66, 0x22, 0xf6, 0xe0, 0xd9, 0xf8, 0x80,
-0xe7, 0xe5, 0xd9, 0x81, 0x63, 0x1a, 0xc5, 0x23,
-0x9e, 0x82, 0x7a, 0x1c, 0x3b, 0x1f, 0x9e, 0xdd,
-0x58, 0x93, 0x8e, 0x24, 0x62, 0xd2, 0xd1, 0x87,
-0x47, 0x7c, 0xb4, 0x0f, 0xf1, 0x29, 0x36, 0x10,
-0x1f, 0x03, 0x9a, 0x90, 0x64, 0xa1, 0x6a, 0x4a,
-0x49, 0xaa, 0x66, 0xeb, 0xa3, 0x2c, 0x54, 0x89,
-0x2b, 0xa1, 0x54, 0x55, 0x8d, 0x2c, 0xf0, 0xe3,
-0x90, 0xcb, 0x3a, 0x47, 0x85, 0x32, 0x27, 0xa9,
-0x30, 0x52, 0xb5, 0x2a, 0xae, 0xbc, 0xba, 0x2f,
-0xca, 0xca, 0x1a, 0xcd, 0xa8, 0x53, 0x2e, 0xed,
-0x3b, 0xb1, 0x8a, 0x1a, 0x3c, 0x86, 0x8c, 0x1e,
-0xbd, 0x42, 0x90, 0x0f, 0xa0, 0x17, 0xbd, 0xd4,
-0x21, 0xd0, 0x81, 0x85, 0x01, 0xf7, 0x84, 0xeb,
-0x01, 0x18, 0x7c, 0xc6, 0x35, 0x78, 0xc0, 0xb8,
-0x99, 0xb3, 0xbe, 0xdc, 0x70, 0xf0, 0xe4, 0xb9,
-0xa2, 0xe2, 0xb2, 0xaa, 0x57, 0x55, 0x5a, 0x77,
-0x58, 0x4d, 0x83, 0x82, 0x07, 0xf7, 0xf7, 0xed,
-0xdf, 0x3f, 0x29, 0x61, 0x72, 0xf7, 0xee, 0x3d,
-0x0c, 0xf4, 0x3f, 0xd2, 0xfe, 0xd1, 0x87, 0x20,
-0x08, 0x42, 0xd1, 0x69, 0xd1, 0x5a, 0x9f, 0x67,
-0x63, 0xd4, 0xae, 0x0f, 0xf8, 0x02, 0x7e, 0xe7,
-0x71, 0xfc, 0x4e, 0xe3, 0x78, 0x14, 0x88, 0xf3,
-0x6c, 0xc7, 0xf2, 0x3a, 0x4b, 0x78, 0xb6, 0x34,
-0xce, 0x0a, 0xa9, 0x5c, 0x0b, 0xc9, 0x2e, 0xbe,
-0x3c, 0xb9, 0x61, 0x60, 0x15, 0x9b, 0xcb, 0xeb,
-0x24, 0x51, 0x52, 0xa6, 0xf8, 0x72, 0xcb, 0x42,
-0x41, 0xd2, 0x23, 0x3b, 0x5f, 0x7e, 0x17, 0x49,
-0x75, 0xb2, 0x93, 0xa4, 0xe1, 0x6c, 0x26, 0x56,
-0xd9, 0xc9, 0x43, 0x18, 0x40, 0x00, 0x22, 0x76,
-0x74, 0x60, 0xed, 0xc6, 0xb2, 0xa3, 0x4a, 0x42,
-0x92, 0x3b, 0x86, 0xe6, 0x12, 0x1d, 0x7a, 0x3d,
-0x00, 0x49, 0x2f, 0x1a, 0x8e, 0xe9, 0xd4, 0x37,
-0x2c, 0x64, 0xf2, 0xd7, 0x6b, 0xb6, 0xfd, 0x7a,
-0xfd, 0xe6, 0x9d, 0x4a, 0x29, 0xde, 0x9d, 0x7e,
-0x1b, 0xe0, 0x02, 0xa6, 0xe8, 0x9f, 0x27, 0x3b,
-0x76, 0xed, 0x1a, 0x38, 0x64, 0x90, 0xc0, 0xd4,
-0x4c, 0xa7, 0x99, 0x8e, 0xd6, 0x8f, 0x35, 0x04,
-0x41, 0x10, 0x65, 0x9a, 0xe9, 0xe8, 0xe8, 0x1a,
-0x18, 0xb4, 0x69, 0x6f, 0xd8, 0xb6, 0x0f, 0xaf,
-0x93, 0x0f, 0x71, 0x52, 0x5d, 0xfd, 0x68, 0x28,
-0xe1, 0x77, 0xf5, 0x27, 0x61, 0x17, 0x4a, 0x57,
-0x16, 0xdf, 0x5a, 0x43, 0x25, 0xea, 0xa4, 0x5c,
-0x93, 0x2e, 0x2a, 0x55, 0x39, 0x04, 0x91, 0xd0,
-0x3e, 0x48, 0x56, 0xdc, 0xde, 0x5f, 0xb9, 0xa1,
-0x2e, 0x6a, 0x9b, 0xa0, 0xdd, 0x21, 0x48, 0x6a,
-0x74, 0x8a, 0xc8, 0xdf, 0xdd, 0x66, 0x15, 0x05,
-0xb0, 0xaa, 0x33, 0xc4, 0x03, 0x64, 0x83, 0xd6,
-0x2d, 0x88, 0xf8, 0xe8, 0xae, 0x81, 0x7c, 0xfb,
-0x40, 0x92, 0x05, 0x80, 0x84, 0x98, 0x11, 0x40,
-0xc2, 0xce, 0xd4, 0x24, 0x12, 0xa9, 0xf6, 0xce,
-0xec, 0x9c, 0x1a, 0xbc, 0xb0, 0x65, 0x37, 0x3f,
-0x17, 0x8f, 0xc9, 0x9f, 0xa7, 0x6f, 0xbe, 0x75,
-0xf7, 0x01, 0x7a, 0xe1, 0x3a, 0x51, 0x51, 0x59,
-0xf1, 0xd3, 0xde, 0xbd, 0xde, 0xa3, 0x46, 0xb5,
-0x6e, 0xd5, 0x5a, 0xfb, 0xc7, 0x17, 0x82, 0x20,
-0xc8, 0x6b, 0x69, 0xa6, 0xab, 0xd7, 0x5a, 0x64,
-0xd4, 0xa1, 0x3f, 0xf1, 0x71, 0xdd, 0xc6, 0x13,
-0x9c, 0xc2, 0xf9, 0x0e, 0xc1, 0x7c, 0x87, 0x30,
-0x82, 0x53, 0x18, 0x49, 0x3a, 0x85, 0xf2, 0x9d,
-0x22, 0xf8, 0x4e, 0x21, 0x2a, 0x61, 0x28, 0xcd,
-0x0d, 0xe3, 0x50, 0x57, 0x65, 0x36, 0x12, 0x41,
-0x09, 0x97, 0xb7, 0x18, 0x46, 0x94, 0x1d, 0xd9,
-0xaa, 0x42, 0x64, 0x38, 0x2a, 0xaa, 0xaa, 0xd9,
-0x90, 0xc3, 0x78, 0x12, 0x2a, 0x72, 0xa1, 0x94,
-0x63, 0x84, 0x80, 0x9b, 0xe5, 0x10, 0x42, 0x94,
-0x1d, 0x69, 0x16, 0x29, 0xfe, 0xee, 0x36, 0xab,
-0x28, 0x43, 0x43, 0xa4, 0x5d, 0x0a, 0x3b, 0x6e,
-0xec, 0x48, 0x2a, 0x13, 0x48, 0x1c, 0x31, 0x00,
-0x7e, 0x19, 0xfc, 0xaf, 0x3d, 0xeb, 0xaf, 0x7d,
-0xd9, 0x99, 0xbe, 0x6c, 0x4e, 0x4d, 0x67, 0xc7,
-0xa6, 0x76, 0x63, 0x5d, 0x86, 0x4d, 0xfa, 0x6e,
-0xdd, 0x4f, 0xf7, 0xf2, 0x1f, 0x68, 0xdd, 0xaf,
-0x7d, 0xf8, 0x3c, 0x2b, 0x79, 0x76, 0xe8, 0xf0,
-0xaf, 0xfe, 0x81, 0x01, 0x7c, 0x13, 0xbe, 0x6e,
-0x73, 0x5d, 0xed, 0x1f, 0x53, 0x08, 0x82, 0x20,
-0x6f, 0x8c, 0xae, 0xae, 0xbe, 0xbe, 0xb1, 0xb5,
-0x89, 0xad, 0x97, 0x59, 0xf7, 0x48, 0x81, 0x73,
-0xac, 0xb9, 0x73, 0x8c, 0xb9, 0x73, 0x9c, 0xa0,
-0x7b, 0x8c, 0xa9, 0x53, 0xb4, 0x69, 0xf7, 0x18,
-0x1a, 0x89, 0x82, 0x88, 0x0c, 0x10, 0x52, 0x79,
-0x7d, 0x25, 0x05, 0xdd, 0xd9, 0x30, 0xc6, 0xac,
-0x07, 0x10, 0x6b, 0xda, 0x5d, 0x16, 0x17, 0x50,
-0x1d, 0x22, 0x71, 0x8a, 0x86, 0xf0, 0x4d, 0x92,
-0x60, 0x27, 0x1b, 0x17, 0xf4, 0xa8, 0xce, 0xa2,
-0x5d, 0x88, 0x65, 0x93, 0xf5, 0x6b, 0xb9, 0x3c,
-0x19, 0x6d, 0xe6, 0x1c, 0x6f, 0xe6, 0x1c, 0xcb,
-0xca, 0x89, 0xf1, 0x64, 0x0c, 0xe3, 0x48, 0xbb,
-0xd4, 0x18, 0xe8, 0x0b, 0x4d, 0xc2, 0x18, 0x46,
-0x09, 0x9c, 0x22, 0xf9, 0x4e, 0x91, 0xa6, 0x10,
-0x3a, 0x84, 0xca, 0xe8, 0x16, 0x40, 0xe7, 0xf5,
-0x7e, 0xb2, 0xbb, 0x10, 0xf4, 0x1f, 0x01, 0x40,
-0xe8, 0xe0, 0xff, 0x89, 0x67, 0xe2, 0xda, 0xed,
-0xc7, 0xff, 0xbe, 0xfb, 0x48, 0x5a, 0x85, 0x7f,
-0x0d, 0xab, 0x41, 0xfa, 0x52, 0x9a, 0x7b, 0xe5,
-0x4a, 0xdc, 0x84, 0x09, 0x6d, 0x45, 0x6d, 0xf1,
-0x6e, 0x33, 0x82, 0x20, 0x8d, 0x17, 0x3d, 0x3d,
-0xc3, 0x56, 0x42, 0x37, 0x0b, 0xe7, 0x58, 0xa1,
-0xdb, 0x14, 0xa1, 0xdb, 0x67, 0x80, 0x85, 0xeb,
-0x14, 0x4b, 0x57, 0x36, 0x92, 0x08, 0x11, 0x16,
-0x10, 0xb2, 0xf2, 0xfa, 0x4a, 0x0a, 0xdd, 0x92,
-0x2c, 0x5c, 0x93, 0xa0, 0x15, 0x4b, 0xb7, 0x24,
-0x2a, 0x4f, 0xb2, 0x74, 0xa3, 0x61, 0xaf, 0x24,
-0x35, 0x45, 0x7a, 0x25, 0x02, 0x9a, 0x2b, 0x4c,
-0x84, 0xaa, 0x64, 0x95, 0x34, 0x80, 0xa9, 0x1a,
-0x92, 0x49, 0x16, 0x6e, 0x89, 0x96, 0x2e, 0x93,
-0x59, 0x39, 0x19, 0x2e, 0x17, 0x08, 0xa7, 0x58,
-0xba, 0x24, 0x09, 0x3f, 0x9e, 0x2a, 0x74, 0x99,
-0x62, 0xee, 0x92, 0x68, 0xd9, 0x33, 0xc9, 0xa2,
-0x57, 0x82, 0x45, 0xcf, 0x04, 0x61, 0xcf, 0xc9,
-0x70, 0xbd, 0x01, 0x83, 0x2c, 0x20, 0x4e, 0x19,
-0xdc, 0x74, 0x2c, 0x99, 0x56, 0x3b, 0xd2, 0xf9,
-0x3e, 0xb9, 0x53, 0x1d, 0x2c, 0xbb, 0x49, 0x0e,
-0x93, 0x62, 0xbb, 0x71, 0x26, 0xb6, 0x63, 0x84,
-0x8e, 0x01, 0x23, 0x82, 0xe7, 0xee, 0x3d, 0x78,
-0xa6, 0xfc, 0x39, 0x3e, 0x26, 0x5d, 0x83, 0x92,
-0xb2, 0xd2, 0x85, 0x8b, 0xbf, 0xb0, 0xb4, 0x10,
-0x6a, 0xfd, 0xc0, 0x41, 0x10, 0x04, 0x79, 0x77,
-0x60, 0x12, 0x61, 0x60, 0x68, 0x69, 0xda, 0x45,
-0x22, 0xec, 0x9d, 0x2c, 0x72, 0x9f, 0x2d, 0xec,
-0x33, 0x5b, 0xd4, 0x7f, 0xb6, 0xb0, 0xef, 0x7f,
-0x00, 0x36, 0x52, 0x23, 0x74, 0x9f, 0x2d, 0xea,
-0x37, 0x5b, 0x16, 0x2a, 0x22, 0xee, 0x2a, 0x6a,
-0xaf, 0x53, 0x16, 0xf6, 0x4b, 0x61, 0x93, 0xc2,
-0x7e, 0x73, 0xa8, 0xf2, 0x5c, 0x61, 0x9f, 0x39,
-0x24, 0x97, 0x2d, 0xd8, 0x4f, 0x56, 0x44, 0x61,
-0x06, 0x01, 0x92, 0x7d, 0x38, 0x56, 0x55, 0xeb,
-0xbc, 0xa6, 0x6c, 0x03, 0x76, 0x81, 0xd3, 0x10,
-0x65, 0x26, 0x35, 0x72, 0x96, 0xc8, 0x7d, 0x96,
-0xf0, 0x53, 0x4a, 0x9f, 0x99, 0xc2, 0x4f, 0x92,
-0x85, 0x9f, 0x26, 0x0b, 0x7b, 0x4f, 0x27, 0x50,
-0x07, 0x0d, 0x13, 0x67, 0xcb, 0x9e, 0x93, 0x2c,
-0x9c, 0xe3, 0xc1, 0x1d, 0x03, 0x30, 0x95, 0x36,
-0x75, 0x0c, 0x37, 0x05, 0x2f, 0x4c, 0xee, 0x54,
-0x07, 0xb3, 0x93, 0x62, 0x70, 0xc4, 0x82, 0xae,
-0x81, 0x92, 0xb8, 0x45, 0x17, 0xaf, 0xe5, 0x6b,
-0xdd, 0xeb, 0x7d, 0x20, 0xdc, 0xcd, 0xbf, 0x97,
-0x3c, 0x73, 0x66, 0x1b, 0xa3, 0x36, 0xec, 0x4b,
-0xbb, 0x5a, 0x3f, 0x70, 0x10, 0x04, 0x41, 0xea,
-0x85, 0x96, 0xfa, 0x26, 0x3c, 0x9b, 0xc1, 0x96,
-0xfd, 0xe7, 0x8b, 0x06, 0x7d, 0xd1, 0x76, 0xf0,
-0x17, 0xa2, 0x81, 0x5f, 0x88, 0x06, 0x2d, 0xa9,
-0x66, 0x60, 0x4d, 0x49, 0x3d, 0x26, 0x07, 0x7f,
-0x29, 0x93, 0x28, 0xb5, 0xa8, 0x16, 0x85, 0xa6,
-0x42, 0xb9, 0x96, 0x52, 0x0d, 0x67, 0xb3, 0x6a,
-0x52, 0x26, 0x5c, 0xac, 0x88, 0x58, 0x0d, 0x5a,
-0x6c, 0x35, 0x70, 0x01, 0x44, 0x84, 0xee, 0xa9,
-0xc2, 0xfe, 0xa9, 0x42, 0xf7, 0x79, 0x42, 0x77,
-0xb8, 0xe4, 0x98, 0x23, 0xfc, 0x74, 0xa6, 0xf0,
-0xd3, 0xd9, 0xc2, 0x8f, 0xa7, 0xc1, 0x7c, 0x5f,
-0x08, 0xb3, 0xe9, 0x9e, 0x09, 0xe4, 0x8e, 0x7a,
-0x4f, 0x7a, 0xb7, 0xdf, 0x29, 0xdc, 0xd4, 0x21,
-0x94, 0x3c, 0xb2, 0x65, 0x1f, 0x48, 0x6f, 0x4a,
-0xfb, 0x9a, 0x75, 0x91, 0xf4, 0x1d, 0x3d, 0xed,
-0xd4, 0x85, 0x1b, 0xff, 0xf2, 0xe7, 0xb2, 0xaa,
-0x5e, 0x55, 0x5d, 0xce, 0xbb, 0x3a, 0xd2, 0xcb,
-0xbb, 0x75, 0xab, 0xd6, 0xe4, 0x55, 0x77, 0xf2,
-0xb6, 0x3b, 0xfe, 0xe7, 0x8b, 0x20, 0x48, 0x93,
-0xc2, 0xa8, 0x7d, 0x6f, 0xab, 0x01, 0x0b, 0xac,
-0x47, 0xac, 0xec, 0x30, 0xec, 0x3b, 0x08, 0xad,
-0x47, 0x7c, 0xcf, 0xd2, 0x61, 0xc4, 0x6a, 0xa0,
-0x21, 0x92, 0xd6, 0x9e, 0xab, 0x3a, 0x8c, 0xf8,
-0x8e, 0x15, 0x32, 0x9e, 0x20, 0x5f, 0x45, 0xda,
-0xf5, 0x58, 0x0d, 0xd0, 0x24, 0xab, 0xb3, 0xda,
-0x9a, 0x8d, 0x0f, 0x5f, 0x05, 0x30, 0x9e, 0x19,
-0x00, 0x49, 0x7a, 0x50, 0x09, 0x55, 0xa6, 0x9a,
-0x2b, 0x89, 0x9a, 0x07, 0x95, 0x37, 0xa4, 0xcd,
-0x9c, 0xe4, 0x2a, 0x6a, 0xff, 0x6a, 0x12, 0x0e,
-0xff, 0x0e, 0xb0, 0x86, 0x70, 0xe8, 0xb7, 0x0a,
-0xda, 0x0d, 0x59, 0xd6, 0x6e, 0x68, 0x3a, 0x60,
-0x35, 0xe8, 0x1b, 0xab, 0x41, 0x4b, 0xad, 0x86,
-0x2c, 0x11, 0x0e, 0x5c, 0x24, 0x1c, 0xb0, 0xc8,
-0x6a, 0xe0, 0x7c, 0x98, 0xb6, 0x8b, 0xfa, 0xce,
-0x12, 0xf5, 0x49, 0x16, 0xba, 0x4d, 0xb3, 0x74,
-0x99, 0x62, 0xee, 0x3c, 0xc9, 0xbc, 0x47, 0xbc,
-0xb9, 0xf3, 0x04, 0x41, 0xf7, 0x68, 0x72, 0x5f,
-0x1a, 0x26, 0xc2, 0xf6, 0x01, 0xfc, 0xae, 0xfe,
-0xbc, 0xce, 0x7e, 0x0e, 0x83, 0x13, 0x36, 0x6c,
-0x3f, 0x5a, 0x51, 0xf9, 0x2f, 0xbd, 0x17, 0xfd,
-0xbc, 0xf2, 0xf9, 0x81, 0x43, 0x87, 0x5d, 0x5d,
-0xdd, 0x3e, 0x32, 0xf8, 0x48, 0xb1, 0x5c, 0x95,
-0xd6, 0x8f, 0x14, 0x04, 0x41, 0x90, 0x7a, 0xa6,
-0x99, 0xae, 0x81, 0xa0, 0xb3, 0xa8, 0xff, 0x02,
-0x66, 0xcc, 0x66, 0xc6, 0x67, 0x0b, 0x33, 0x6a,
-0x13, 0x25, 0x93, 0x19, 0x9d, 0x29, 0x8b, 0x8c,
-0xa2, 0x91, 0xd1, 0x14, 0x36, 0x17, 0xb2, 0x14,
-0xc9, 0xd1, 0x0a, 0x32, 0x95, 0xcb, 0x2a, 0x14,
-0x46, 0x6d, 0xaa, 0x96, 0x90, 0xb2, 0x3f, 0xc8,
-0x93, 0xf2, 0xca, 0x95, 0xea, 0x1f, 0xc5, 0x29,
-0xe2, 0x93, 0x29, 0xb3, 0x61, 0x74, 0x66, 0xcd,
-0xe6, 0x38, 0x35, 0xd7, 0x68, 0x2e, 0x93, 0xf1,
-0xfe, 0x41, 0xd9, 0x36, 0x25, 0x33, 0x46, 0x71,
-0xfb, 0xc2, 0xa9, 0xa4, 0x3a, 0x57, 0xa5, 0x0b,
-0xd5, 0x92, 0xcc, 0x6a, 0x05, 0x9f, 0x9a, 0x66,
-0x7b, 0x6f, 0x60, 0xbc, 0x37, 0x42, 0xeb, 0xd6,
-0x23, 0x33, 0xac, 0xbd, 0x33, 0xd8, 0x8b, 0x04,
-0x70, 0xd0, 0xed, 0x87, 0xad, 0x68, 0x3f, 0x74,
-0x85, 0xd5, 0xd0, 0xaf, 0x45, 0x83, 0x60, 0xe2,
-0xbf, 0x48, 0xd8, 0xff, 0x73, 0xd9, 0xa4, 0xf8,
-0x13, 0xe2, 0x88, 0xcd, 0x5d, 0x27, 0x9a, 0xf5,
-0x88, 0x33, 0xa3, 0x37, 0xa5, 0xf9, 0x8e, 0x11,
-0xe4, 0x01, 0x75, 0x98, 0x0b, 0x77, 0xf6, 0x65,
-0x5c, 0xc3, 0xe6, 0x2f, 0xdd, 0xf2, 0xb0, 0xf0,
-0x69, 0xd5, 0x4b, 0xed, 0x3b, 0xc4, 0xf7, 0x09,
-0x4c, 0xfc, 0xd7, 0x6f, 0xdc, 0xd0, 0xb5, 0x6b,
-0x57, 0x70, 0xbe, 0x7a, 0x2d, 0xf4, 0xf4, 0x74,
-0xf5, 0x88, 0xff, 0x6d, 0xae, 0xd3, 0x42, 0xa7,
-0x85, 0xf6, 0x0f, 0x16, 0x04, 0x41, 0x90, 0xfa,
-0xa5, 0x99, 0xae, 0x3e, 0xbf, 0x53, 0xdb, 0x61,
-0x4b, 0x98, 0x80, 0x9f, 0x19, 0xc9, 0x5e, 0x16,
-0xb1, 0xdf, 0x2e, 0x12, 0xf1, 0xfb, 0x99, 0xc0,
-0x0a, 0xfd, 0xe4, 0xf8, 0xff, 0x2c, 0x4b, 0x42,
-0xe8, 0xcf, 0x11, 0xfa, 0xc9, 0xca, 0x12, 0xa1,
-0xef, 0x1e, 0x12, 0xca, 0xd4, 0x48, 0x5c, 0x2c,
-0xd9, 0x49, 0x75, 0x68, 0x59, 0x88, 0xf8, 0xee,
-0x66, 0xfc, 0xf6, 0xc8, 0x6b, 0xe6, 0x94, 0x65,
-0x8b, 0x40, 0x71, 0xaa, 0x49, 0xcc, 0x90, 0x15,
-0x91, 0xd7, 0xe9, 0xcf, 0xb1, 0x84, 0xd5, 0x07,
-0x39, 0xd1, 0x97, 0x35, 0x54, 0xdd, 0x34, 0x5b,
-0x55, 0xb5, 0x19, 0x9c, 0x86, 0xb8, 0xa6, 0x4a,
-0xf6, 0xc8, 0xd4, 0xb8, 0x35, 0x2b, 0x75, 0x01,
-0x0a, 0xfa, 0x73, 0xfa, 0x4e, 0x3b, 0x22, 0xf6,
-0xdf, 0x45, 0xc3, 0xdd, 0x72, 0xcb, 0x49, 0x8f,
-0xc4, 0xbe, 0x3b, 0x99, 0x71, 0xbb, 0x08, 0x3e,
-0x9b, 0x09, 0xe0, 0x9d, 0xbd, 0xd7, 0x33, 0x5e,
-0xeb, 0xad, 0x3d, 0xc8, 0x7c, 0xb9, 0xfd, 0xd0,
-0xe5, 0x6d, 0x87, 0xa6, 0x59, 0x0d, 0xfc, 0x4a,
-0x34, 0x68, 0x91, 0xc8, 0x7d, 0x9e, 0xa8, 0xdf,
-0x1c, 0xf2, 0x1f, 0xf1, 0xc7, 0xd3, 0x2c, 0x7b,
-0x4d, 0x86, 0xe9, 0xb0, 0xc0, 0x39, 0x9a, 0xdf,
-0x3d, 0x8a, 0xef, 0x14, 0xc5, 0xb7, 0x97, 0xf0,
-0xed, 0xfd, 0x2c, 0x9c, 0x42, 0x26, 0xfe, 0x67,
-0xd5, 0xed, 0x82, 0x87, 0x5a, 0xf7, 0x89, 0xef,
-0x8d, 0xa2, 0x27, 0x4f, 0x52, 0x53, 0x17, 0xf0,
-0x4d, 0x4d, 0x5b, 0xb5, 0x6a, 0x05, 0xfe, 0x17,
-0x60, 0xdd, 0x2e, 0xbe, 0x70, 0x84, 0x20, 0x48,
-0x13, 0x46, 0xdf, 0xa8, 0x9d, 0xd5, 0xe0, 0x2f,
-0x98, 0x90, 0xe3, 0xcc, 0xf8, 0xe3, 0x4c, 0xf0,
-0x31, 0x66, 0xfc, 0x49, 0x26, 0x14, 0x22, 0x47,
-0x98, 0xe0, 0xa3, 0x24, 0x09, 0x84, 0x1c, 0xa1,
-0x91, 0xa3, 0x44, 0x18, 0x74, 0x98, 0xc6, 0xe5,
-0xb9, 0x6c, 0x52, 0x26, 0x54, 0xc0, 0x29, 0x2b,
-0x83, 0x96, 0xad, 0x21, 0x91, 0xa3, 0x5c, 0x56,
-0x53, 0x96, 0xbc, 0x86, 0x5a, 0xf4, 0x55, 0x0b,
-0xca, 0x22, 0x35, 0x5b, 0xaf, 0x51, 0x43, 0xcd,
-0x8e, 0xbc, 0x89, 0xcd, 0xa0, 0x19, 0x7a, 0xaa,
-0x46, 0x32, 0xe8, 0x08, 0xe5, 0x10, 0x13, 0x70,
-0x50, 0xce, 0x01, 0x71, 0xc0, 0x3e, 0xe2, 0xdf,
-0xc1, 0x1d, 0x8f, 0xfd, 0x91, 0xdc, 0x5e, 0x20,
-0x13, 0xe4, 0x0d, 0x1d, 0x46, 0xac, 0x6a, 0x3f,
-0xe4, 0xdb, 0xb6, 0x83, 0xbf, 0xb1, 0x1a, 0xfc,
-0xb5, 0x70, 0xc0, 0x22, 0x51, 0xff, 0x14, 0xf2,
-0xe0, 0x96, 0xdb, 0x34, 0x21, 0x7d, 0x52, 0x4b,
-0xd0, 0x23, 0x86, 0xb8, 0x60, 0xf6, 0x6d, 0x62,
-0x7b, 0xbf, 0x5e, 0x5e, 0xd3, 0xb3, 0x73, 0x6f,
-0x56, 0xbd, 0x6c, 0xfa, 0xaf, 0x26, 0x3d, 0xaf,
-0xa8, 0x58, 0xbc, 0xe4, 0x4b, 0x91, 0x48, 0x64,
-0x64, 0x68, 0xc4, 0xfa, 0x5f, 0x83, 0x96, 0x06,
-0x30, 0xf9, 0x6d, 0xa1, 0xdb, 0x02, 0x6f, 0x41,
-0x23, 0x08, 0xd2, 0x84, 0x81, 0xf3, 0x5b, 0xeb,
-0x36, 0xed, 0xda, 0x8d, 0x5e, 0x2f, 0x8e, 0xf8,
-0xbd, 0x63, 0x54, 0x36, 0x13, 0x99, 0xc3, 0x44,
-0x9c, 0x95, 0x93, 0xcd, 0x84, 0x9f, 0x65, 0xc2,
-0xb3, 0xe4, 0xc9, 0x2c, 0x1a, 0x07, 0xe1, 0xef,
-0x90, 0x24, 0xca, 0x11, 0x10, 0xc9, 0x16, 0x47,
-0xfe, 0x2e, 0x8e, 0xcc, 0xae, 0xd6, 0xe7, 0x16,
-0xaf, 0x8e, 0x67, 0xd1, 0xac, 0x6c, 0x59, 0x28,
-0xcf, 0x65, 0xcb, 0x8a, 0x69, 0x52, 0x1c, 0xc1,
-0x51, 0xa8, 0x6e, 0x97, 0x53, 0x09, 0x57, 0x18,
-0xae, 0x21, 0x8c, 0xa0, 0x3a, 0x34, 0xde, 0x31,
-0x2a, 0x4b, 0x1e, 0x9e, 0x55, 0xcd, 0xa5, 0xa1,
-0xbc, 0x6b, 0x35, 0x84, 0x50, 0x84, 0x55, 0x96,
-0x09, 0x89, 0x85, 0x91, 0x20, 0xa4, 0x61, 0x34,
-0x11, 0x42, 0x9c, 0x76, 0xff, 0x2c, 0x19, 0x0a,
-0x52, 0x16, 0xc2, 0x33, 0x4c, 0xd8, 0x29, 0xe2,
-0x9a, 0x81, 0x10, 0x70, 0xcd, 0x87, 0x99, 0xc0,
-0x5f, 0x99, 0xc0, 0x43, 0x8c, 0xff, 0x2f, 0x8c,
-0xff, 0x3e, 0xb1, 0xdf, 0x0e, 0xe2, 0x88, 0xc9,
-0xa4, 0x78, 0xa3, 0xf5, 0xc8, 0x8c, 0x0e, 0x23,
-0x56, 0xb6, 0x1d, 0x92, 0x6e, 0x35, 0x08, 0xbc,
-0xf0, 0x02, 0x61, 0xbf, 0x14, 0x61, 0xef, 0x19,
-0x64, 0x2e, 0xec, 0x9a, 0x20, 0x20, 0x5e, 0x38,
-0x56, 0xb6, 0xe8, 0x47, 0x57, 0x89, 0x47, 0xc8,
-0xfc, 0xcb, 0xd7, 0xff, 0xd6, 0xba, 0x7f, 0x6c,
-0x50, 0x2a, 0xa5, 0x2f, 0xb6, 0x6c, 0xdd, 0xca,
-0x30, 0x62, 0x1e, 0x8f, 0x67, 0x6c, 0x6c, 0x6c,
-0xd8, 0xda, 0x90, 0xf8, 0x5f, 0x7d, 0x03, 0xbd,
-0x16, 0x7a, 0x30, 0x05, 0x26, 0x1f, 0x1c, 0xc1,
-0xe7, 0xaf, 0x10, 0x04, 0x69, 0xd2, 0x7c, 0x64,
-0xee, 0xd8, 0x61, 0xec, 0x56, 0x26, 0xee, 0x32,
-0x13, 0x93, 0xcb, 0xc4, 0x5e, 0x66, 0xe2, 0xaf,
-0x32, 0x71, 0x79, 0x4c, 0xec, 0x15, 0x26, 0xfa,
-0x0f, 0x12, 0x82, 0x04, 0x00, 0x09, 0x57, 0x18,
-0x73, 0x89, 0xca, 0xaf, 0x90, 0x22, 0x71, 0xa0,
-0x93, 0xcb, 0xc4, 0xe7, 0x11, 0x21, 0x94, 0x05,
-0x61, 0x1c, 0x5b, 0x84, 0x53, 0x96, 0xa8, 0xe5,
-0x11, 0x35, 0x36, 0x64, 0xe5, 0x20, 0x8c, 0xb9,
-0x2c, 0x8e, 0x23, 0x49, 0x71, 0xdc, 0x25, 0xaa,
-0xc6, 0xd6, 0x90, 0x2b, 0xab, 0x99, 0x94, 0xa5,
-0xad, 0xb0, 0x59, 0xb2, 0xb2, 0x57, 0xaa, 0xeb,
-0xa9, 0x51, 0xe7, 0x15, 0x99, 0x32, 0x6b, 0xa1,
-0xc2, 0x4e, 0xae, 0x0e, 0x54, 0xce, 0x5a, 0x22,
-0xb3, 0x47, 0x6e, 0x5e, 0xf4, 0x25, 0x99, 0x90,
-0x2d, 0x28, 0xeb, 0xac, 0x5c, 0x27, 0x26, 0x17,
-0x8c, 0x14, 0x83, 0x91, 0xf1, 0x97, 0x69, 0xc7,
-0x69, 0xb5, 0xa0, 0x16, 0xfd, 0x87, 0x38, 0x36,
-0x57, 0x1c, 0x7d, 0x11, 0x92, 0xe2, 0xe8, 0x0b,
-0xe2, 0xa8, 0x1c, 0x26, 0xf2, 0x1c, 0x21, 0x9c,
-0x5e, 0xab, 0x10, 0x8f, 0x7c, 0x92, 0xdc, 0x58,
-0x60, 0x67, 0xc7, 0x7e, 0xfb, 0x18, 0xdf, 0x5d,
-0xcc, 0x98, 0xad, 0xe4, 0x4f, 0xe4, 0x91, 0x6b,
-0xac, 0x89, 0x17, 0x4e, 0x13, 0x0d, 0xfa, 0x12,
-0xe6, 0xc2, 0xc2, 0xbe, 0x73, 0xc0, 0x0b, 0x5b,
-0xba, 0x4c, 0xb1, 0x70, 0x99, 0x24, 0x20, 0x4b,
-0x94, 0x44, 0xf1, 0x1d, 0xc3, 0x4d, 0xed, 0x03,
-0x7c, 0x27, 0x7c, 0x5d, 0xf0, 0xf8, 0xa9, 0xd6,
-0xbd, 0x64, 0x03, 0xf1, 0xa2, 0x4a, 0x7a, 0xe4,
-0xd8, 0x71, 0x47, 0xa7, 0xee, 0xa6, 0xa6, 0x02,
-0x3e, 0x5f, 0x00, 0x2e, 0xd8, 0xd0, 0xd0, 0x10,
-0x66, 0xc1, 0x2d, 0x5b, 0xb4, 0x04, 0xe7, 0x8b,
-0x37, 0x9f, 0x11, 0x04, 0xf9, 0x57, 0xd0, 0x4c,
-0xb7, 0xb5, 0xa8, 0x87, 0xf5, 0xf8, 0xc3, 0xe2,
-0x84, 0x9b, 0xe2, 0x49, 0x37, 0x28, 0x7f, 0x42,
-0x9c, 0x99, 0xf4, 0x27, 0x33, 0x91, 0xc4, 0x99,
-0x89, 0xd7, 0x69, 0x78, 0x83, 0x24, 0x27, 0xdf,
-0x94, 0xe7, 0x92, 0xb8, 0x4c, 0x58, 0xad, 0xa3,
-0x1c, 0xaa, 0xcf, 0x9a, 0x74, 0x83, 0x2d, 0xce,
-0xd6, 0x46, 0x1a, 0x4a, 0xf8, 0x4b, 0x6d, 0x43,
-0xd5, 0x95, 0xb0, 0x45, 0xe4, 0x91, 0x5a, 0xda,
-0xfd, 0x7f, 0xf6, 0xae, 0x04, 0x28, 0xaa, 0x63,
-0x6b, 0x57, 0xfd, 0x7f, 0xa2, 0x68, 0x54, 0x04,
-0x15, 0x95, 0x1d, 0x66, 0x98, 0x61, 0x53, 0x14,
-0x17, 0x10, 0x71, 0x21, 0x8a, 0x46, 0x5f, 0xf4,
-0x99, 0xc4, 0xbc, 0x3f, 0x31, 0x9a, 0xf8, 0x34,
-0x89, 0xbe, 0x24, 0x3e, 0x05, 0x44, 0x86, 0x31,
-0xc6, 0x0d, 0x17, 0x16, 0x41, 0x56, 0x51, 0x54,
-0x44, 0x11, 0x10, 0x45, 0x40, 0x01, 0x51, 0x41,
-0x10, 0x14, 0x35, 0x88, 0xca, 0xa2, 0x6c, 0x82,
-0x6c, 0xb3, 0x30, 0x0c, 0xfb, 0x3a, 0xa0, 0x55,
-0xff, 0xe9, 0xee, 0x3b, 0x97, 0x11, 0x99, 0x71,
-0xa2, 0x12, 0x2b, 0x29, 0xca, 0x53, 0x63, 0xdf,
-0xbe, 0xdd, 0xa7, 0x4f, 0x77, 0xdf, 0xdb, 0x5f,
-0x7f, 0x7d, 0xfa, 0x36, 0x94, 0x55, 0xd8, 0xc8,
-0x57, 0x12, 0x14, 0xd3, 0xf2, 0x92, 0x2a, 0x52,
-0x65, 0x9c, 0xd7, 0x68, 0x33, 0x95, 0x5e, 0x9a,
-0xb2, 0x48, 0xd6, 0x12, 0x1c, 0x2f, 0xab, 0xaa,
-0x88, 0x92, 0x4d, 0x85, 0x08, 0xdc, 0xe1, 0x17,
-0xcf, 0x52, 0xd8, 0x3f, 0xe5, 0x18, 0x6d, 0xcc,
-0xc6, 0x3c, 0x1a, 0xa8, 0xfd, 0x1d, 0xc4, 0x8b,
-0xbf, 0x4d, 0x61, 0xae, 0x49, 0x06, 0x46, 0x8c,
-0xbc, 0xdb, 0x88, 0x0e, 0x47, 0x30, 0x56, 0x84,
-0x1a, 0xfc, 0x23, 0x58, 0x7f, 0xa9, 0x9f, 0xce,
-0x22, 0x4f, 0xed, 0x8f, 0xdd, 0x74, 0xec, 0xb6,
-0x6b, 0xdb, 0x70, 0x80, 0x08, 0xa3, 0x23, 0xb6,
-0x80, 0x08, 0x4f, 0x59, 0xa7, 0x35, 0x7d, 0xed,
-0xe6, 0x9d, 0xa7, 0xc4, 0x8d, 0xcd, 0xef, 0x1d,
-0x2b, 0x07, 0x42, 0xf2, 0x1e, 0x17, 0x2c, 0xfd,
-0xf4, 0xd3, 0x09, 0x13, 0x27, 0x82, 0x68, 0x68,
-0x4c, 0x00, 0xfc, 0x55, 0x57, 0x53, 0x1f, 0x35,
-0x72, 0x14, 0xf1, 0xff, 0x0e, 0x53, 0x19, 0x36,
-0x74, 0xc8, 0xe0, 0xe6, 0xab, 0x41, 0x19, 0x94,
-0x41, 0xf9, 0xfb, 0xcb, 0x87, 0x1f, 0x0c, 0x1d,
-0x63, 0xfe, 0xa5, 0xd1, 0x2f, 0x79, 0x2c, 0xa7,
-0x4a, 0xa3, 0x2d, 0xc5, 0x6c, 0xc7, 0x32, 0x04,
-0x5e, 0x0e, 0xe5, 0x46, 0x8e, 0xcf, 0xd0, 0x2f,
-0x84, 0x1d, 0xcb, 0xc9, 0x25, 0xcb, 0xe1, 0xa9,
-0x34, 0x06, 0x85, 0x59, 0x90, 0x00, 0x49, 0x39,
-0x95, 0xde, 0xa1, 0xcc, 0xc8, 0xb1, 0x82, 0x84,
-0x11, 0xa4, 0x42, 0xb8, 0xcf, 0x25, 0xd1, 0x89,
-0x05, 0x65, 0x77, 0x78, 0x4a, 0x15, 0x01, 0x19,
-0x5f, 0x2e, 0x48, 0x56, 0x95, 0x6c, 0x2e, 0x1c,
-0x53, 0x46, 0xe5, 0x92, 0x5b, 0xae, 0xd4, 0xec,
-0x3e, 0xe5, 0xd2, 0x79, 0xfb, 0x15, 0x9c, 0x98,
-0xe5, 0x54, 0xce, 0xda, 0x5a, 0xc9, 0x72, 0x2c,
-0x83, 0xaa, 0x81, 0x48, 0x6b, 0x41, 0x8a, 0xab,
-0xc0, 0x97, 0x95, 0xa8, 0x5c, 0x7c, 0x97, 0xe5,
-0x50, 0x82, 0x72, 0xfd, 0xb7, 0x88, 0xe5, 0x50,
-0x0a, 0xb7, 0x5e, 0x82, 0x63, 0x90, 0xff, 0xe4,
-0x23, 0x82, 0xbf, 0x31, 0x07, 0xd1, 0xe1, 0x0d,
-0x39, 0xcc, 0x75, 0x99, 0xc8, 0xc3, 0x2e, 0xcb,
-0x85, 0x3f, 0x0f, 0x63, 0xae, 0x38, 0x61, 0xb0,
-0x34, 0x48, 0x7f, 0xb1, 0xaf, 0xee, 0x22, 0xf4,
-0xf9, 0xb0, 0xce, 0xbc, 0x5f, 0x35, 0xad, 0x9d,
-0x26, 0xce, 0xf8, 0x19, 0xb9, 0x83, 0x2d, 0xd7,
-0xeb, 0xcc, 0xfc, 0xe1, 0x48, 0xe8, 0xe5, 0x8e,
-0xbf, 0xdd, 0x47, 0x49, 0x35, 0x3c, 0xfe, 0xb2,
-0xe5, 0x9f, 0x4d, 0xd4, 0xd4, 0x99, 0xa8, 0xa9,
-0x0d, 0xa2, 0xa9, 0xa5, 0x3d, 0x76, 0xec, 0x38,
-0x80, 0xe0, 0xd1, 0xa3, 0x47, 0x03, 0xfe, 0x02,
-0x05, 0x7e, 0xef, 0x6f, 0xc4, 0xa0, 0x0c, 0xca,
-0xa0, 0x0c, 0xca, 0x9f, 0x29, 0x13, 0x6c, 0x1d,
-0x11, 0x26, 0x3a, 0xd7, 0x80, 0xb0, 0x01, 0x83,
-0xb6, 0x56, 0x21, 0xc1, 0x97, 0x83, 0xf2, 0x8a,
-0x54, 0xbf, 0xd4, 0x38, 0x10, 0x76, 0xc4, 0xc0,
-0xed, 0x54, 0xc1, 0x72, 0x7a, 0x86, 0x29, 0x73,
-0xb1, 0x11, 0x8d, 0xc8, 0x40, 0x8d, 0x37, 0x3e,
-0x42, 0xab, 0xd6, 0xc4, 0xdd, 0xbc, 0xfe, 0x16,
-0xb5, 0x28, 0xfd, 0x55, 0x2c, 0xf3, 0x5f, 0xe7,
-0x18, 0x2b, 0x4e, 0x31, 0x96, 0x87, 0xe8, 0x2f,
-0xf6, 0x47, 0xc7, 0x7a, 0x2c, 0xdc, 0xab, 0x3d,
-0x9f, 0xab, 0x3d, 0x87, 0xa3, 0x69, 0xe5, 0x30,
-0x61, 0xc6, 0x26, 0x8d, 0x69, 0x3f, 0x30, 0xe6,
-0x6e, 0x3a, 0x7a, 0x36, 0xf9, 0xef, 0xf4, 0x45,
-0x52, 0x5d, 0x7d, 0x9d, 0xeb, 0xf6, 0x1d, 0xba,
-0xfa, 0xfa, 0xda, 0xba, 0xba, 0x7a, 0x7a, 0xfa,
-0x9a, 0xda, 0x3a, 0x5a, 0xda, 0xda, 0x63, 0xc7,
-0x69, 0x00, 0x04, 0xab, 0x8d, 0x56, 0x23, 0x5b,
-0xa0, 0x87, 0x7c, 0x38, 0x64, 0xf0, 0xfc, 0x2b,
-0x65, 0x64, 0xe8, 0x87, 0x43, 0xd5, 0x54, 0xd5,
-0x0c, 0x0d, 0x19, 0x33, 0x67, 0x5a, 0xad, 0x58,
-0xf1, 0xd9, 0x86, 0x0d, 0xff, 0x71, 0x74, 0x72,
-0x76, 0xe1, 0x6c, 0x77, 0x76, 0xde, 0xb6, 0x61,
-0xc3, 0x4f, 0x2b, 0x57, 0x7e, 0x69, 0x63, 0x63,
-0x6b, 0xc4, 0x62, 0xa9, 0xab, 0x8d, 0x51, 0x19,
-0xa2, 0xf2, 0xde, 0xad, 0x1d, 0x94, 0x41, 0x19,
-0x14, 0x79, 0xa2, 0x32, 0x4a, 0x5b, 0x67, 0xc5,
-0x09, 0xd6, 0x36, 0x3e, 0x6b, 0x1b, 0x0f, 0x84,
-0xed, 0x22, 0x40, 0x01, 0xc0, 0x62, 0x17, 0x01,
-0x0a, 0x3b, 0xa3, 0x30, 0x15, 0x2f, 0x8b, 0x44,
-0x38, 0x86, 0x4a, 0x23, 0x9b, 0x57, 0xe6, 0x16,
-0x8e, 0xe7, 0xf7, 0xcd, 0x2e, 0x93, 0xb8, 0x6f,
-0x7a, 0xd9, 0x94, 0x7d, 0x02, 0xd2, 0x4b, 0xca,
-0x3c, 0x10, 0xfa, 0x52, 0xe6, 0xb7, 0xf7, 0x2e,
-0x29, 0x9a, 0xca, 0xd5, 0x1b, 0x23, 0x63, 0x06,
-0xef, 0xa5, 0xbb, 0x32, 0x05, 0x51, 0x97, 0x74,
-0x59, 0xfd, 0x56, 0xff, 0x55, 0x5c, 0x46, 0xd0,
-0x8c, 0xd0, 0x99, 0xed, 0x84, 0x19, 0xf7, 0x96,
-0x12, 0x6a, 0xa5, 0x1a, 0xb9, 0xb6, 0xf3, 0x99,
-0x1b, 0x1e, 0x20, 0x2e, 0xfc, 0x7d, 0x16, 0xb5,
-0x83, 0x7a, 0x75, 0x22, 0xfa, 0x4a, 0x6b, 0xe5,
-0x59, 0xc6, 0x8a, 0x93, 0x06, 0x9f, 0x06, 0xa1,
-0x7d, 0x59, 0xf6, 0xfb, 0xd1, 0xd1, 0x97, 0xb6,
-0x2e, 0x9a, 0xe8, 0x03, 0xa5, 0x9f, 0x34, 0x2c,
-0x37, 0x18, 0xdb, 0x3b, 0xdc, 0xbd, 0x9f, 0xdf,
-0xfd, 0xb7, 0xd8, 0x0e, 0xdd, 0xfd, 0xbc, 0xdb,
-0xd7, 0x2f, 0xc0, 0xc8, 0x88, 0xad, 0xc3, 0x60,
-0x80, 0x18, 0x32, 0x0c, 0x75, 0x0c, 0x19, 0x3a,
-0xba, 0xba, 0x13, 0x26, 0x6a, 0x8d, 0x1b, 0x37,
-0x4e, 0x5d, 0x5d, 0x5d, 0x55, 0x55, 0x95, 0x3e,
-0x82, 0x83, 0xa0, 0xf0, 0xa0, 0x2f, 0xb8, 0x5f,
-0x19, 0x35, 0x72, 0xd4, 0xac, 0x59, 0x36, 0x9b,
-0xb7, 0x38, 0xc4, 0xc5, 0x5f, 0x2e, 0x2a, 0x29,
-0x6d, 0x6a, 0x6e, 0xea, 0x92, 0x48, 0x7a, 0x5e,
-0xc8, 0xb4, 0xf6, 0x8b, 0xe7, 0x12, 0x49, 0x77,
-0x53, 0x73, 0xf3, 0xd3, 0xf2, 0x8a, 0x84, 0x2b,
-0xc9, 0xdb, 0x7f, 0xdd, 0x69, 0x6f, 0xbf, 0x08,
-0xc0, 0xfa, 0xbd, 0x5b, 0x3e, 0x28, 0x83, 0x32,
-0x28, 0xfd, 0xca, 0x47, 0x1a, 0x26, 0xac, 0x4d,
-0x05, 0x08, 0x9e, 0x38, 0x42, 0x82, 0x62, 0xa6,
-0xae, 0x7c, 0x63, 0x97, 0x5e, 0x7c, 0xa1, 0xf1,
-0x51, 0x8a, 0x89, 0x04, 0xcb, 0xf8, 0xb2, 0x38,
-0x0b, 0x79, 0x09, 0x58, 0x4b, 0x71, 0x99, 0x2f,
-0x05, 0x41, 0x2a, 0x31, 0x05, 0x82, 0x94, 0xc2,
-0x57, 0xee, 0xf6, 0x29, 0x08, 0xb4, 0x6d, 0xe3,
-0xcb, 0x96, 0x4b, 0x03, 0x3d, 0xc9, 0x8b, 0x8b,
-0xab, 0x91, 0x01, 0x53, 0xbe, 0x34, 0x25, 0xad,
-0x53, 0x40, 0x83, 0x66, 0xef, 0x24, 0x41, 0x9e,
-0xe6, 0xbe, 0x20, 0x4e, 0x9a, 0x82, 0x4f, 0x27,
-0x86, 0xaa, 0xf5, 0xd6, 0xd7, 0xf9, 0xa5, 0x96,
-0x91, 0x69, 0x16, 0x52, 0x41, 0x84, 0xc5, 0x6c,
-0x67, 0x4c, 0x8d, 0x1d, 0xcb, 0x7b, 0xb9, 0x30,
-0x46, 0x61, 0xa3, 0x0d, 0xf7, 0x98, 0xeb, 0x33,
-0x99, 0x6b, 0x53, 0x99, 0xab, 0xaf, 0xa0, 0x4f,
-0x89, 0xbf, 0x88, 0x64, 0x7e, 0x7e, 0x8a, 0xf1,
-0xe9, 0x31, 0xdd, 0x45, 0x87, 0xb5, 0xed, 0xdd,
-0xd1, 0x07, 0x4a, 0xb6, 0xae, 0xda, 0xd6, 0x4e,
-0xf8, 0xcf, 0x3f, 0x6d, 0x9c, 0xbf, 0x6a, 0x57,
-0x5e, 0x49, 0xd5, 0x7b, 0x47, 0xcf, 0xb7, 0x97,
-0xdc, 0xfc, 0x7c, 0xdb, 0x39, 0xb6, 0x00, 0xbb,
-0x4c, 0x26, 0x8b, 0x09, 0xc4, 0x8c, 0xc5, 0xd2,
-0x63, 0xb2, 0xf5, 0x0d, 0xf5, 0x81, 0x02, 0x8f,
-0x1f, 0x8f, 0x76, 0x61, 0x11, 0x17, 0xf0, 0xf0,
-0x61, 0xc3, 0x01, 0x76, 0xdf, 0xd5, 0xf9, 0x1b,
-0x13, 0xc6, 0x4f, 0xfc, 0x6d, 0xf7, 0x1e, 0xaf,
-0x43, 0xde, 0x20, 0x87, 0x0f, 0xfb, 0xfa, 0xfa,
-0x05, 0x06, 0x04, 0x1d, 0x09, 0x08, 0x44, 0x12,
-0x18, 0x84, 0x24, 0xe8, 0x48, 0xaf, 0xf8, 0xfa,
-0xf9, 0xcf, 0x99, 0x33, 0x5f, 0x49, 0xea, 0x0d,
-0x76, 0xae, 0x5b, 0xb7, 0xfe, 0x90, 0xb7, 0x8f,
-0xb7, 0xcf, 0x61, 0xc8, 0x08, 0x9a, 0xfd, 0x03,
-0x40, 0x8e, 0xf8, 0x05, 0xf4, 0xd5, 0x0c, 0x65,
-0xc1, 0xef, 0x7f, 0x37, 0x3b, 0x8e, 0xfc, 0x68,
-0xe4, 0xdb, 0xd4, 0x05, 0xda, 0x84, 0xc9, 0x34,
-0x5a, 0xbb, 0xee, 0xfb, 0xc4, 0xe4, 0x64, 0x3e,
-0x5f, 0xd8, 0xde, 0xd9, 0xde, 0xf3, 0x42, 0xa9,
-0x89, 0x59, 0xa7, 0xa4, 0xab, 0x4e, 0x5c, 0x9f,
-0x9e, 0x91, 0xe1, 0xbc, 0x8d, 0x63, 0x6e, 0x66,
-0x3e, 0x5c, 0x65, 0xf8, 0x9b, 0x19, 0x00, 0x2d,
-0xf3, 0xed, 0x77, 0x6b, 0xbd, 0x7d, 0x7c, 0xa1,
-0xca, 0xde, 0xf0, 0x9f, 0x5f, 0x40, 0x00, 0xae,
-0x29, 0xa9, 0x60, 0x1f, 0x09, 0x08, 0xea, 0x27,
-0x52, 0x81, 0x40, 0xeb, 0x7d, 0xba, 0xfc, 0x9f,
-0xb2, 0xc5, 0x99, 0x9a, 0x98, 0x41, 0xcb, 0x7a,
-0x7a, 0x41, 0x0b, 0xfb, 0xf9, 0xf9, 0x05, 0xf8,
-0xf9, 0xfb, 0xd3, 0x05, 0xc9, 0x96, 0xa8, 0xb8,
-0x20, 0x79, 0x77, 0x89, 0x86, 0x80, 0x57, 0xba,
-0xc9, 0xcf, 0x3f, 0x60, 0xa1, 0xfd, 0xe2, 0x81,
-0x1b, 0x66, 0x57, 0xaf, 0xf9, 0x16, 0x3f, 0x8d,
-0x87, 0x7d, 0x0e, 0xa3, 0x4a, 0x05, 0x06, 0x06,
-0xf9, 0x07, 0xca, 0x35, 0xd2, 0xd1, 0x69, 0xeb,
-0x18, 0xf5, 0xb1, 0x4a, 0x6a, 0x36, 0x33, 0x33,
-0x77, 0xdb, 0xb7, 0xdf, 0xc3, 0xf3, 0x10, 0xe8,
-0x87, 0x5a, 0x80, 0x66, 0x05, 0xcd, 0xe2, 0xe1,
-0xe1, 0x69, 0x6a, 0x62, 0xaa, 0x58, 0xe1, 0xd8,
-0xb1, 0xe3, 0x7e, 0xdd, 0xf1, 0x9b, 0xd7, 0x21,
-0xea, 0x09, 0x47, 0xd6, 0x06, 0xf5, 0xf3, 0x78,
-0xcb, 0x6d, 0xf9, 0x57, 0x9e, 0x8a, 0x7e, 0x5f,
-0x3a, 0xdc, 0xe6, 0x81, 0xf3, 0xe7, 0xdb, 0x29,
-0xb0, 0x44, 0x4f, 0x4f, 0x7f, 0xc7, 0xce, 0x5d,
-0x50, 0x2f, 0x6c, 0x48, 0x00, 0xd8, 0x41, 0xf4,
-0xf4, 0x6b, 0x06, 0xbc, 0xe6, 0xb6, 0xb3, 0x6d,
-0x95, 0x6c, 0x34, 0x7d, 0x3d, 0xfd, 0x5d, 0xbb,
-0xf7, 0xc0, 0xb8, 0x00, 0x4f, 0x17, 0x98, 0x41,
-0x2a, 0xd8, 0xcf, 0xc3, 0x09, 0xdd, 0x14, 0x10,
-0x08, 0xcf, 0xbb, 0xfd, 0xe2, 0x01, 0x7b, 0x36,
-0xfe, 0xf7, 0xc3, 0xf1, 0x36, 0x9b, 0x58, 0x8e,
-0xcf, 0xd8, 0x2e, 0x42, 0x36, 0x47, 0x04, 0xbf,
-0xc6, 0xdc, 0x3a, 0x63, 0xd7, 0x3a, 0xb6, 0x54,
-0x4c, 0x5d, 0x05, 0xc6, 0x1c, 0x3e, 0x04, 0x58,
-0x9c, 0x5a, 0x12, 0x63, 0xee, 0x0a, 0x40, 0x56,
-0x6b, 0xc2, 0xe1, 0xa3, 0x18, 0x8e, 0xc8, 0xc4,
-0x55, 0x00, 0x97, 0xe6, 0xdc, 0x1a, 0x3a, 0xb1,
-0x09, 0x07, 0xc5, 0x20, 0x6d, 0xd2, 0xc4, 0x6c,
-0x57, 0x11, 0xb9, 0x04, 0x31, 0xe3, 0xf2, 0x8d,
-0x5d, 0x6b, 0x51, 0x2e, 0x5a, 0x15, 0x17, 0x69,
-0x06, 0x0d, 0xa4, 0x08, 0x08, 0x98, 0xa0, 0x12,
-0x51, 0x16, 0x9c, 0x58, 0x84, 0x2e, 0x51, 0x76,
-0xa2, 0xb0, 0x9a, 0xe4, 0x25, 0x62, 0xe2, 0x2a,
-0x84, 0x42, 0x71, 0x7a, 0x62, 0x5b, 0x35, 0xa4,
-0x34, 0x46, 0x06, 0x08, 0xe9, 0x34, 0x28, 0x92,
-0xe4, 0xe5, 0x52, 0xc5, 0x81, 0x4e, 0xd0, 0x0c,
-0x91, 0x94, 0x19, 0xd8, 0x78, 0xfa, 0x97, 0x24,
-0xa3, 0x12, 0xbb, 0xf6, 0xea, 0xc1, 0x22, 0x02,
-0xf6, 0x4d, 0x6a, 0xc7, 0x72, 0x11, 0x62, 0xcc,
-0xed, 0x65, 0xcd, 0xb2, 0xa4, 0x98, 0xbd, 0xb5,
-0x82, 0xf8, 0x94, 0xf1, 0xf6, 0x2d, 0x84, 0xc2,
-0xac, 0x9f, 0x1e, 0xa1, 0x2d, 0xd3, 0xdf, 0xe3,
-0xdd, 0x59, 0x6b, 0xae, 0xa1, 0xf3, 0x3d, 0xfe,
-0x15, 0xcd, 0xfc, 0x3c, 0x8c, 0xb1, 0xec, 0x98,
-0xfe, 0x12, 0x5f, 0xdd, 0xc5, 0xee, 0xda, 0x76,
-0x7b, 0xb5, 0xe7, 0x72, 0xb5, 0xac, 0x1c, 0x35,
-0x67, 0xfe, 0x32, 0x7e, 0xfa, 0x46, 0xae, 0x67,
-0x78, 0xbb, 0xa4, 0xfb, 0xbd, 0x03, 0xe8, 0xdb,
-0x08, 0x80, 0xc5, 0xee, 0x3d, 0x7b, 0xd9, 0x6c,
-0x13, 0x23, 0x23, 0x13, 0x36, 0xdb, 0xd8, 0xcc,
-0xcc, 0xcc, 0xc4, 0xc4, 0x84, 0xc5, 0x62, 0x1b,
-0x30, 0x0c, 0x35, 0x75, 0x34, 0x09, 0xfe, 0x8e,
-0x1c, 0x81, 0xbe, 0x02, 0xa6, 0xf7, 0x5f, 0xbd,
-0x93, 0x5d, 0x58, 0xc6, 0xc6, 0xc6, 0x77, 0xee,
-0xde, 0x3b, 0x77, 0xfe, 0x42, 0x42, 0xd2, 0xb5,
-0xbc, 0x82, 0xc7, 0x02, 0x61, 0x6d, 0x17, 0xb4,
-0xe4, 0x8b, 0xfe, 0x8d, 0x04, 0x9c, 0xda, 0xb5,
-0x7b, 0xb7, 0x92, 0x3e, 0xe8, 0xd1, 0xa3, 0x46,
-0x87, 0x47, 0x44, 0xc6, 0xc6, 0x5d, 0xba, 0x10,
-0x7b, 0xe9, 0xee, 0xbd, 0xfb, 0x95, 0x55, 0xd5,
-0xad, 0x6d, 0x8a, 0x00, 0x31, 0xfb, 0xc1, 0xfd,
-0xf1, 0xe3, 0xc6, 0xbf, 0x71, 0x45, 0xd4, 0xd5,
-0xd4, 0x57, 0x7d, 0xb3, 0x26, 0xe3, 0xf6, 0xad,
-0xe6, 0xd6, 0xd6, 0x37, 0xee, 0x85, 0xce, 0xae,
-0xce, 0x47, 0x79, 0xb9, 0x5b, 0x9d, 0x39, 0x5a,
-0x5a, 0x6f, 0xf2, 0x17, 0xa6, 0x54, 0x86, 0xaa,
-0x84, 0x9d, 0x09, 0xbf, 0x9c, 0x90, 0x74, 0x31,
-0x2e, 0xfe, 0xde, 0xef, 0xd9, 0x95, 0xd5, 0x35,
-0xed, 0x1d, 0x9d, 0xef, 0xcc, 0x3f, 0xf2, 0xe2,
-0xf9, 0xf1, 0x13, 0x27, 0x65, 0x8b, 0xfb, 0xe7,
-0x8a, 0xcf, 0xa0, 0x94, 0xa8, 0x73, 0xe7, 0x53,
-0x52, 0x33, 0x8b, 0x8b, 0x4b, 0x1b, 0x1a, 0x5b,
-0xfe, 0x84, 0x63, 0xd2, 0x25, 0x3d, 0xdd, 0x1e,
-0x5e, 0xde, 0x03, 0x35, 0xc6, 0xfe, 0xcf, 0x07,
-0x61, 0xe1, 0x67, 0x12, 0xaf, 0x5c, 0xb9, 0x10,
-0x1b, 0x9f, 0x75, 0x2f, 0xbb, 0xb2, 0x92, 0xd7,
-0xdc, 0xd2, 0xa2, 0xe0, 0x99, 0x79, 0x98, 0x9b,
-0xcb, 0x64, 0x18, 0x29, 0xa9, 0xf9, 0x8b, 0x95,
-0x5f, 0xa4, 0xa6, 0xa5, 0x9d, 0x8d, 0x8c, 0x4e,
-0x4d, 0xcb, 0x7c, 0x52, 0x54, 0x5a, 0xdf, 0xd0,
-0x04, 0x75, 0x91, 0xa7, 0xb9, 0xb9, 0xb5, 0x65,
-0xe5, 0xca, 0x95, 0xaf, 0x79, 0x77, 0xd8, 0xc6,
-0xb7, 0x6e, 0x67, 0x45, 0x46, 0xc5, 0x24, 0x26,
-0x5d, 0x7b, 0x94, 0x57, 0x28, 0x12, 0x89, 0xe1,
-0x05, 0x19, 0xa0, 0x66, 0x07, 0xa0, 0x57, 0x60,
-0xc9, 0xac, 0x59, 0x36, 0x59, 0x77, 0xef, 0x87,
-0x9e, 0x09, 0x4f, 0xba, 0x7a, 0xbd, 0xe0, 0x71,
-0xa1, 0xa8, 0x4e, 0x2c, 0xe9, 0x96, 0x5b, 0xb5,
-0x4e, 0x89, 0x84, 0xbb, 0x7d, 0x87, 0x92, 0x8d,
-0xb6, 0xf6, 0xdf, 0xeb, 0x8a, 0x4b, 0x4a, 0x0b,
-0x1e, 0x17, 0x09, 0x6b, 0xc5, 0x5d, 0xf2, 0xc7,
-0xd8, 0xee, 0x1e, 0x74, 0x5e, 0x01, 0x74, 0xd6,
-0xe6, 0x2d, 0x0e, 0x03, 0xf7, 0x6c, 0x0c, 0x1f,
-0x39, 0xc1, 0xe0, 0xab, 0x28, 0x29, 0xc2, 0x8a,
-0x64, 0xa4, 0x8e, 0x0e, 0x98, 0x6d, 0x17, 0x00,
-0x2e, 0x9b, 0x6f, 0xe7, 0x41, 0x1a, 0x94, 0x8c,
-0x2b, 0x36, 0xe5, 0x0a, 0xe1, 0x92, 0x04, 0xe0,
-0x97, 0xc2, 0x26, 0xea, 0x56, 0x2d, 0x44, 0x82,
-0x90, 0x4b, 0x3a, 0x6f, 0xaf, 0x66, 0x3a, 0x17,
-0x17, 0xe5, 0xa2, 0x52, 0xba, 0x8a, 0x00, 0x97,
-0x21, 0x31, 0xc6, 0x71, 0x3e, 0xbe, 0x8b, 0x04,
-0x6e, 0x11, 0x6d, 0x18, 0xa6, 0x21, 0x6f, 0x1d,
-0xca, 0x4b, 0x12, 0x03, 0x7c, 0x63, 0x85, 0x10,
-0x03, 0x45, 0xa0, 0x4b, 0x50, 0xc8, 0x15, 0x23,
-0x84, 0xe5, 0xa2, 0x78, 0x0c, 0xa9, 0xc8, 0x2a,
-0xfa, 0x2e, 0xd2, 0xe6, 0xca, 0x27, 0xb9, 0x88,
-0x66, 0x52, 0x04, 0x6d, 0x1b, 0xb1, 0xb9, 0xb7,
-0x68, 0x57, 0x01, 0x0b, 0x43, 0x39, 0x41, 0x67,
-0x84, 0xb9, 0x48, 0x04, 0x74, 0x00, 0x01, 0x3d,
-0x47, 0x68, 0xee, 0x5a, 0x05, 0xa0, 0xdc, 0x97,
-0x1d, 0x13, 0x97, 0x3a, 0xa0, 0xb0, 0x43, 0xa9,
-0x91, 0x43, 0x19, 0xde, 0x2c, 0x5d, 0xc0, 0xfc,
-0xf1, 0x3e, 0xfa, 0xe2, 0x98, 0x1c, 0xeb, 0xb1,
-0x3a, 0xc9, 0xe8, 0xff, 0xa2, 0x99, 0x2b, 0x23,
-0x18, 0xcb, 0x43, 0xf4, 0x16, 0xf9, 0xa2, 0x3f,
-0xf4, 0xb0, 0x60, 0xa7, 0xf6, 0x6c, 0x8e, 0xb6,
-0x8d, 0xf3, 0xf8, 0x69, 0x1b, 0xa7, 0x2c, 0xd9,
-0x76, 0x2f, 0xf7, 0x99, 0x3c, 0xd4, 0xf8, 0x4b,
-0x48, 0xc6, 0xad, 0xdb, 0x53, 0xa7, 0x5a, 0x02,
-0xe0, 0x02, 0xf2, 0x4e, 0x9e, 0x6c, 0x61, 0x32,
-0x69, 0xaa, 0xb9, 0xb9, 0x39, 0x84, 0x81, 0xd0,
-0x69, 0x33, 0x58, 0x13, 0xb5, 0xb4, 0x34, 0x34,
-0x34, 0xc8, 0x16, 0x2c, 0xb2, 0x0b, 0x1a, 0x86,
-0xfa, 0x77, 0x72, 0x0a, 0x07, 0x83, 0xc1, 0xb8,
-0x7a, 0x3d, 0xe5, 0xc0, 0x41, 0xcf, 0xc0, 0xa0,
-0x90, 0xf4, 0x8c, 0xdb, 0xe5, 0x15, 0x55, 0xed,
-0x1d, 0x1d, 0xf2, 0x46, 0x3c, 0x49, 0x8f, 0x04,
-0x66, 0xfb, 0x40, 0x6c, 0x95, 0xd1, 0x3c, 0x72,
-0xc4, 0xa8, 0xa0, 0xe0, 0xa3, 0xfe, 0x41, 0xc7,
-0xdc, 0xbd, 0x7c, 0xe2, 0x13, 0xae, 0x3c, 0x2e,
-0x2c, 0x6e, 0x6c, 0x6a, 0x92, 0x74, 0xcb, 0x1d,
-0x4b, 0x0b, 0x9e, 0x3c, 0xd1, 0xd5, 0xd1, 0x7d,
-0x83, 0x2a, 0xc0, 0x7c, 0xe0, 0x93, 0xc5, 0x9f,
-0xa4, 0x65, 0x64, 0xbc, 0xab, 0x13, 0xc2, 0xbb,
-0x9f, 0xf7, 0x14, 0x95, 0x94, 0x7e, 0xb3, 0xfa,
-0x3b, 0x75, 0xb5, 0x31, 0x7f, 0xc8, 0x12, 0xe8,
-0x97, 0x90, 0x13, 0x27, 0x8e, 0x1e, 0x0f, 0x39,
-0xec, 0x1d, 0x1c, 0x13, 0x9b, 0xf0, 0xb8, 0xb0,
-0xb4, 0xb1, 0xa9, 0x45, 0xf2, 0xee, 0x30, 0xf1,
-0x6c, 0xe4, 0x39, 0xd9, 0xe2, 0x16, 0x7c, 0xbc,
-0x20, 0x25, 0xfd, 0xc6, 0xbe, 0x03, 0xee, 0xa7,
-0x4e, 0x47, 0x66, 0xdd, 0xcd, 0xae, 0xe1, 0xf3,
-0x25, 0x92, 0xe7, 0x03, 0xbd, 0x1d, 0xa2, 0xe7,
-0xc5, 0xf3, 0x90, 0x13, 0xa1, 0x03, 0x37, 0xc6,
-0x06, 0x04, 0x1d, 0x0b, 0x39, 0x7e, 0x12, 0xf8,
-0xef, 0xc5, 0xb8, 0x24, 0x00, 0xb5, 0xc6, 0xc6,
-0x66, 0x05, 0x87, 0xed, 0x14, 0x14, 0x3e, 0x31,
-0x66, 0x9b, 0x28, 0xa9, 0x79, 0xd9, 0xb2, 0x65,
-0x30, 0x2f, 0xda, 0xed, 0xe6, 0x7e, 0x26, 0x22,
-0x0a, 0x9a, 0x4b, 0x58, 0x2b, 0xea, 0x90, 0xff,
-0xe7, 0x4d, 0x3b, 0xba, 0x24, 0xdf, 0xfd, 0x7b,
-0xbd, 0x62, 0x85, 0x06, 0x06, 0x8c, 0x94, 0x1b,
-0x69, 0x7b, 0x0f, 0xb8, 0x1f, 0x0d, 0x09, 0x4d,
-0x4d, 0xbb, 0x09, 0xd3, 0xad, 0xb6, 0xf6, 0xf6,
-0x01, 0x6a, 0x76, 0x20, 0xee, 0x0a, 0x5e, 0xf6,
-0x69, 0x96, 0xd3, 0x6e, 0x66, 0x64, 0xfc, 0xba,
-0xcb, 0x2d, 0xe4, 0xc4, 0x99, 0xf4, 0x8c, 0x3b,
-0xd5, 0x3c, 0x7e, 0x6b, 0x5b, 0x9b, 0x82, 0x1e,
-0xf4, 0x52, 0x6e, 0x06, 0x35, 0x5c, 0x65, 0x78,
-0x5c, 0xfc, 0xe5, 0xcc, 0xac, 0xbb, 0x39, 0x0f,
-0x61, 0x66, 0x2e, 0xea, 0xe8, 0xec, 0x92, 0x37,
-0xc6, 0x76, 0xf7, 0xf4, 0x00, 0xf8, 0x3e, 0x29,
-0x2c, 0x9e, 0x62, 0x31, 0x75, 0xe0, 0x9e, 0x0d,
-0x10, 0x55, 0x03, 0x3b, 0xd6, 0xe6, 0xc7, 0x08,
-0x41, 0x5c, 0x10, 0xd6, 0x00, 0x78, 0x01, 0x0e,
-0x9a, 0x72, 0x90, 0xa7, 0x15, 0x63, 0x2b, 0x0d,
-0xc7, 0x04, 0x2e, 0x05, 0x14, 0x58, 0x13, 0xe4,
-0xe2, 0x02, 0x09, 0x45, 0x94, 0x16, 0x2e, 0x09,
-0x48, 0xf5, 0x42, 0x1b, 0x86, 0x4b, 0x1a, 0xda,
-0xa4, 0x18, 0x5a, 0x47, 0x40, 0x1c, 0xa8, 0x25,
-0xca, 0x45, 0x53, 0x4b, 0xba, 0x20, 0x29, 0x28,
-0x9b, 0x70, 0x78, 0x00, 0x7f, 0xd2, 0x52, 0x08,
-0x10, 0x03, 0x75, 0xa5, 0x26, 0x00, 0x94, 0x49,
-0xbd, 0xe6, 0x91, 0xcb, 0x3a, 0x5c, 0x05, 0x11,
-0xad, 0x93, 0x32, 0xa3, 0xd7, 0x7e, 0x12, 0xdf,
-0x1b, 0xc6, 0x6a, 0x05, 0x32, 0x91, 0xc0, 0xbb,
-0x85, 0x50, 0x23, 0xc2, 0xb8, 0xb1, 0x91, 0x54,
-0x45, 0x28, 0x86, 0x8e, 0x27, 0x1b, 0x04, 0xd9,
-0x81, 0xec, 0x4b, 0xb9, 0xb6, 0x88, 0x64, 0x24,
-0xab, 0xd6, 0xf4, 0x62, 0x3b, 0x85, 0xc5, 0x5b,
-0x2b, 0xd8, 0x4e, 0xe5, 0xd4, 0xee, 0x2c, 0xbc,
-0x4d, 0x9a, 0x85, 0x88, 0xf0, 0x5d, 0xe6, 0xda,
-0x74, 0x74, 0x6a, 0xc7, 0x57, 0xb1, 0xe8, 0x1b,
-0xe1, 0x15, 0xa7, 0x0c, 0x96, 0x04, 0xe9, 0x2e,
-0xf2, 0x42, 0x7f, 0x53, 0x69, 0x0e, 0x47, 0xcb,
-0xda, 0x51, 0xd3, 0xea, 0xe7, 0x1f, 0xb8, 0xc7,
-0x1b, 0x1a, 0x5b, 0x7b, 0xfe, 0x9a, 0x10, 0xdc,
-0xd8, 0xdc, 0x08, 0xf3, 0x46, 0x63, 0x63, 0x13,
-0x53, 0x73, 0x0b, 0x33, 0x8b, 0x69, 0x96, 0x96,
-0xd3, 0x2d, 0x2c, 0x67, 0x98, 0x4e, 0x99, 0x31,
-0xc9, 0x62, 0x2a, 0x70, 0x61, 0x43, 0x86, 0x91,
-0x96, 0x9e, 0x8e, 0x86, 0xc6, 0x04, 0x35, 0x35,
-0xb5, 0x57, 0xf1, 0x17, 0xb9, 0x83, 0x3f, 0x78,
-0x73, 0x14, 0xd6, 0xd3, 0xd5, 0x4b, 0xb9, 0x71,
-0x63, 0xff, 0x41, 0x0f, 0xdf, 0x80, 0xe0, 0x1b,
-0x69, 0x99, 0xe5, 0x15, 0x95, 0x30, 0x86, 0xc8,
-0xc3, 0x5f, 0x00, 0xa6, 0xe0, 0x63, 0x21, 0x23,
-0x86, 0x8f, 0x50, 0x46, 0xf3, 0x47, 0xc3, 0x47,
-0x78, 0x79, 0xfb, 0x04, 0x05, 0x1f, 0x3f, 0xe8,
-0xe9, 0x13, 0x1b, 0x9f, 0x98, 0x9b, 0xff, 0x58,
-0x31, 0xfe, 0x3e, 0x2d, 0x7b, 0xc6, 0x64, 0x30,
-0xff, 0xa8, 0xfd, 0x30, 0x2d, 0x71, 0x70, 0x74,
-0x2a, 0x2b, 0x2f, 0xef, 0xea, 0xea, 0x06, 0xdd,
-0xef, 0xb0, 0x53, 0x6a, 0x45, 0xe2, 0xc0, 0x23,
-0xc1, 0x86, 0x06, 0x86, 0x7f, 0x68, 0x92, 0xe3,
-0x17, 0x14, 0x74, 0x3c, 0x34, 0xcc, 0xd3, 0xdb,
-0x3f, 0x26, 0x2e, 0x31, 0xaf, 0xa0, 0xa8, 0xbe,
-0xb1, 0x49, 0xc9, 0x35, 0xf0, 0xd7, 0x0a, 0xd4,
-0x2e, 0x2e, 0xfe, 0x92, 0x6c, 0x59, 0x36, 0x36,
-0xb6, 0xe9, 0x99, 0x19, 0x6e, 0xfb, 0xdc, 0x43,
-0xc3, 0xc2, 0x33, 0x6e, 0x67, 0xd7, 0xf0, 0xf8,
-0x30, 0x03, 0x19, 0xe8, 0x57, 0x00, 0xf4, 0x47,
-0x44, 0x45, 0x0d, 0xdc, 0x00, 0x7b, 0xc0, 0xc3,
-0xe3, 0xe4, 0xa9, 0x53, 0x18, 0x7f, 0x13, 0x1f,
-0xe6, 0x3d, 0x01, 0xfc, 0x85, 0xb1, 0x5d, 0xde,
-0xa4, 0xa2, 0xb4, 0xac, 0x4c, 0xf9, 0x01, 0x7f,
-0xa1, 0xfd, 0xa2, 0xb8, 0x4b, 0xf1, 0xbb, 0xf6,
-0x1e, 0x0c, 0x0d, 0x8b, 0xcc, 0xbc, 0x9d, 0x2d,
-0x50, 0x88, 0xbf, 0x5d, 0xdd, 0x92, 0x1f, 0x37,
-0x6c, 0x54, 0xac, 0x50, 0x5b, 0x4b, 0x27, 0xf9,
-0x5a, 0xca, 0x7e, 0x77, 0xcf, 0xc0, 0xe0, 0x13,
-0xd7, 0xae, 0xa7, 0xc3, 0xdc, 0x15, 0xad, 0xf0,
-0x0c, 0xcc, 0xfc, 0xc7, 0x2f, 0x20, 0x48, 0x81,
-0xcb, 0xc9, 0xdc, 0x7c, 0x52, 0xca, 0x8d, 0xd4,
-0x1d, 0x3b, 0xf7, 0x04, 0x1d, 0x3d, 0x71, 0x23,
-0xfd, 0x16, 0x5e, 0x78, 0x91, 0x3b, 0x13, 0x80,
-0x1e, 0x0c, 0x08, 0x08, 0x52, 0xa6, 0xc5, 0xa6,
-0x4f, 0x9b, 0xfe, 0x28, 0x37, 0x0f, 0x86, 0x85,
-0xa2, 0x92, 0xf2, 0x86, 0x26, 0x45, 0x4f, 0x72,
-0x7b, 0x47, 0x67, 0x73, 0x73, 0xcb, 0xd9, 0xb3,
-0x91, 0xaa, 0x23, 0x55, 0x07, 0xee, 0xd9, 0x00,
-0x19, 0xa2, 0xa2, 0xaa, 0xbb, 0xdc, 0x17, 0x3b,
-0x3d, 0x6b, 0x09, 0x12, 0x01, 0x61, 0x04, 0xac,
-0x34, 0x77, 0x45, 0x88, 0x43, 0xb0, 0x15, 0x68,
-0x20, 0x01, 0x1d, 0x7a, 0xb9, 0x98, 0x60, 0x31,
-0x5a, 0x70, 0xc6, 0x64, 0xd3, 0x18, 0xd0, 0x87,
-0x4b, 0xc5, 0x93, 0x95, 0x61, 0xb6, 0x34, 0x2f,
-0x0d, 0x91, 0x88, 0xb4, 0x72, 0xf9, 0x38, 0xa5,
-0x98, 0x5e, 0x25, 0xc6, 0xb8, 0x46, 0x2d, 0xf3,
-0x22, 0xfe, 0xcb, 0x01, 0xc8, 0xa3, 0xd2, 0x93,
-0xb2, 0x30, 0x93, 0xad, 0x46, 0x3a, 0x09, 0xab,
-0xc5, 0x34, 0x1c, 0x2f, 0x65, 0xf3, 0xa4, 0x3c,
-0xb7, 0x1a, 0x2b, 0x47, 0xe9, 0xb1, 0x49, 0xa4,
-0x68, 0x1a, 0x40, 0x45, 0xc6, 0x32, 0xf8, 0x8b,
-0xd6, 0xab, 0x5d, 0x85, 0x38, 0x2f, 0x21, 0xd4,
-0x62, 0x52, 0x0a, 0x5a, 0xca, 0x86, 0xbc, 0xae,
-0x78, 0x46, 0xc1, 0x15, 0x99, 0x63, 0x72, 0x4d,
-0xda, 0x01, 0x13, 0x6d, 0x0c, 0xd0, 0xc8, 0xb6,
-0x3a, 0xc2, 0xa3, 0xe9, 0x2a, 0x60, 0x1b, 0x70,
-0x0c, 0x2e, 0x17, 0x4d, 0x63, 0x38, 0x98, 0x1a,
-0xcb, 0xfa, 0x8b, 0xd1, 0x06, 0xad, 0x4a, 0xe4,
-0x14, 0xde, 0x5c, 0xdc, 0xbb, 0x2f, 0xeb, 0xfb,
-0xbb, 0x46, 0xeb, 0x6f, 0xa2, 0xcf, 0x84, 0x57,
-0x25, 0x30, 0x3f, 0x0f, 0x07, 0x16, 0x6c, 0xb0,
-0x34, 0x50, 0x77, 0x91, 0x07, 0xda, 0x14, 0x3d,
-0x0f, 0xed, 0x88, 0x36, 0x5b, 0xb8, 0x35, 0xe5,
-0xd6, 0xa3, 0xbf, 0x28, 0xfe, 0x5e, 0x4e, 0x48,
-0xb0, 0xb2, 0xb2, 0x36, 0x33, 0x33, 0xb7, 0xb4,
-0x9c, 0x36, 0x63, 0xa6, 0xd5, 0x4c, 0x2b, 0x6b,
-0x90, 0x19, 0x33, 0x66, 0x4e, 0x9a, 0x62, 0x69,
-0x62, 0x6e, 0xc1, 0x60, 0x30, 0x75, 0x0c, 0x19,
-0x13, 0x26, 0x4c, 0x20, 0xbb, 0xb0, 0xc8, 0x12,
-0x34, 0xc1, 0xdf, 0xb7, 0xf7, 0x02, 0x6b, 0x4e,
-0xd4, 0x4c, 0x48, 0x4a, 0x72, 0xf7, 0xf0, 0x0e,
-0x08, 0x3a, 0x72, 0x35, 0x25, 0xed, 0x69, 0x79,
-0x65, 0x4b, 0x6b, 0x9b, 0xbc, 0x59, 0x2e, 0xbc,
-0x80, 0x61, 0xa7, 0x4f, 0x03, 0xb1, 0x55, 0x46,
-0xf3, 0xf0, 0x61, 0x1f, 0x79, 0x78, 0x7a, 0x1d,
-0x0b, 0x0d, 0xdd, 0x7f, 0xd0, 0xfb, 0xc2, 0xc5,
-0x04, 0xe0, 0x32, 0xf5, 0x0d, 0x0d, 0x0a, 0x16,
-0x48, 0x79, 0x02, 0xbe, 0xa9, 0xe9, 0x6b, 0x3c,
-0x6e, 0x7d, 0x44, 0x6b, 0xa2, 0xd6, 0xe9, 0x33,
-0x67, 0x1a, 0x1a, 0x1b, 0x3b, 0x3b, 0x95, 0xc2,
-0x1d, 0x40, 0x7f, 0x2c, 0xdd, 0x5d, 0x12, 0x09,
-0x04, 0xd0, 0xbf, 0xe7, 0x88, 0x30, 0x42, 0xde,
-0x7e, 0xb3, 0x4b, 0x7a, 0xba, 0x53, 0xd3, 0xd2,
-0xad, 0xad, 0xac, 0x95, 0xdf, 0xe7, 0xb6, 0xff,
-0xa0, 0x7b, 0xd8, 0x99, 0x70, 0x0f, 0x2f, 0x9f,
-0xe8, 0x0b, 0xf1, 0x05, 0x8f, 0x9f, 0x88, 0xeb,
-0x9b, 0x24, 0x3d, 0x4a, 0xe1, 0xaf, 0x32, 0xe3,
-0x76, 0xda, 0xcd, 0x0c, 0xd9, 0xb2, 0x2c, 0xa6,
-0x4c, 0xbd, 0x73, 0xef, 0x77, 0xb7, 0x03, 0xee,
-0xc7, 0x43, 0xc3, 0x33, 0x6f, 0xdf, 0x05, 0xfc,
-0xed, 0xe8, 0xe8, 0x1c, 0xd0, 0x55, 0x20, 0xd2,
-0x5c, 0x71, 0x09, 0xf1, 0x03, 0x37, 0xc0, 0xee,
-0xda, 0xb3, 0xf7, 0xf4, 0x99, 0xb3, 0x07, 0x3d,
-0xbd, 0xcf, 0xc7, 0xc4, 0x3e, 0x78, 0x94, 0x5f,
-0x57, 0x5f, 0xdf, 0xfd, 0x5c, 0xee, 0xb2, 0x67,
-0x35, 0xaf, 0x66, 0xd6, 0x2c, 0x1b, 0x25, 0x35,
-0xcf, 0xb2, 0xb6, 0xb9, 0x9c, 0x90, 0xb8, 0x7b,
-0xef, 0xfe, 0x93, 0xa7, 0x22, 0x32, 0x32, 0xef,
-0xf0, 0x04, 0xa2, 0x56, 0xf9, 0x74, 0x15, 0x7a,
-0xcd, 0x69, 0xeb, 0x36, 0xc5, 0x0a, 0xc7, 0x8e,
-0x1b, 0x7b, 0x29, 0x31, 0xc9, 0xdd, 0xcb, 0x27,
-0x20, 0xe8, 0x78, 0xf2, 0xd5, 0xd4, 0xb2, 0x67,
-0x18, 0x7f, 0x07, 0xa6, 0xfd, 0x4f, 0x85, 0x85,
-0x29, 0xf0, 0xfb, 0xb0, 0x59, 0xc6, 0xd7, 0x53,
-0x6e, 0xfc, 0xb6, 0x6b, 0x5f, 0x50, 0xf0, 0x89,
-0xeb, 0x69, 0x19, 0xcf, 0x2a, 0x6b, 0x5a, 0x5a,
-0x14, 0x31, 0xf1, 0xd3, 0x67, 0xc2, 0x5f, 0xdb,
-0x5c, 0x2a, 0x43, 0x54, 0x9c, 0xb7, 0x71, 0x72,
-0x1e, 0xe5, 0x01, 0xa1, 0xae, 0xaa, 0xe1, 0xb5,
-0xb6, 0x75, 0xc8, 0x7d, 0x2a, 0x5e, 0x3c, 0x6f,
-0x6b, 0xef, 0x68, 0x6c, 0x6a, 0x5b, 0xb5, 0x6a,
-0xf5, 0xc0, 0x3d, 0x18, 0xb4, 0xa8, 0xea, 0x58,
-0x31, 0x7f, 0xc9, 0x23, 0x80, 0x88, 0xf8, 0x2f,
-0x97, 0x4f, 0x13, 0x5e, 0xe2, 0x2a, 0xa5, 0xe9,
-0x21, 0x75, 0x89, 0x91, 0xab, 0xf7, 0x17, 0xe2,
-0xb7, 0xf3, 0xd9, 0xb2, 0x54, 0x54, 0x26, 0x31,
-0xb5, 0x50, 0x4c, 0xa7, 0xe4, 0xf2, 0x64, 0x16,
-0xb7, 0x31, 0x68, 0xba, 0xf2, 0x41, 0xb0, 0x37,
-0x56, 0x44, 0x80, 0x15, 0x63, 0x9f, 0xc8, 0x94,
-0x53, 0x43, 0xad, 0x06, 0xcb, 0x64, 0xa7, 0xa9,
-0xae, 0x6c, 0x41, 0x68, 0x85, 0x59, 0x6a, 0x33,
-0xc1, 0x65, 0x74, 0x89, 0xb3, 0x98, 0x62, 0xfd,
-0xb2, 0x35, 0x92, 0x2d, 0xb7, 0x4f, 0xa4, 0xac,
-0x6d, 0x78, 0xc9, 0x5a, 0xfc, 0x92, 0x91, 0xdc,
-0x5a, 0xa9, 0x91, 0xd2, 0x16, 0xe0, 0x8a, 0xf1,
-0x8c, 0x42, 0x40, 0x99, 0x8d, 0x17, 0xc0, 0x49,
-0x5b, 0xf5, 0xdd, 0x2a, 0x46, 0x3e, 0xf2, 0x72,
-0x7a, 0xc6, 0xda, 0x82, 0x8f, 0xf5, 0x40, 0x10,
-0x9c, 0x63, 0xf4, 0xe3, 0x3d, 0x74, 0x6a, 0xd6,
-0x9a, 0xab, 0xe8, 0x4f, 0x3c, 0x7c, 0x19, 0xce,
-0x04, 0x08, 0x5e, 0x12, 0xa0, 0x6d, 0xef, 0xae,
-0x6d, 0xb7, 0x0b, 0xfd, 0xd5, 0x06, 0x6b, 0x87,
-0xaf, 0x1d, 0x8e, 0xd5, 0x35, 0x34, 0x0d, 0xdc,
-0xe0, 0x33, 0x40, 0xd2, 0xdc, 0xd2, 0xfa, 0xd5,
-0xd7, 0xdf, 0x98, 0x4e, 0xb2, 0x98, 0x32, 0x65,
-0xea, 0xcc, 0x99, 0x56, 0xb3, 0x66, 0xcf, 0xb1,
-0xb1, 0x9d, 0x63, 0x3b, 0xc7, 0x6e, 0xd6, 0x6c,
-0xdb, 0x19, 0x56, 0xd6, 0x93, 0x26, 0x5b, 0x18,
-0x1b, 0x1b, 0x1b, 0x18, 0x32, 0x27, 0x6a, 0xa2,
-0x0f, 0x81, 0x47, 0xab, 0x52, 0x4b, 0xd0, 0xe8,
-0x20, 0xca, 0x21, 0xd4, 0x59, 0x58, 0x6f, 0xb3,
-0x0a, 0x3d, 0x6e, 0xcc, 0xb8, 0x8b, 0x71, 0xf1,
-0x1e, 0x9e, 0x87, 0x3d, 0x7c, 0x43, 0xae, 0x5c,
-0x4f, 0x2d, 0x2a, 0x29, 0x6b, 0x69, 0x6d, 0x95,
-0x37, 0xd1, 0x85, 0xf8, 0xa8, 0xe8, 0xf3, 0xaa,
-0xa3, 0x94, 0x9a, 0xe2, 0xaa, 0x0c, 0x1d, 0xf6,
-0xdb, 0xae, 0x3d, 0xa1, 0x61, 0xa7, 0xf7, 0x1d,
-0xf0, 0x3a, 0x1f, 0x13, 0xf7, 0xe0, 0x61, 0x7e,
-0x9d, 0xb8, 0x51, 0xc1, 0x58, 0x5a, 0x5b, 0x27,
-0x9e, 0x62, 0x39, 0x45, 0x79, 0xcb, 0x27, 0x4f,
-0x9a, 0x7c, 0xfe, 0xc2, 0xc5, 0xe6, 0x96, 0x66,
-0x20, 0xec, 0x8a, 0x99, 0x2f, 0x10, 0x28, 0xc0,
-0x7d, 0x98, 0x57, 0x34, 0x35, 0xb7, 0x88, 0xc4,
-0xf5, 0x42, 0x51, 0x9d, 0xb0, 0xb6, 0x16, 0xe8,
-0x0f, 0x04, 0x80, 0x9f, 0x36, 0x35, 0xb7, 0x4a,
-0x00, 0x93, 0x69, 0xc3, 0x5e, 0xf4, 0xad, 0x72,
-0xce, 0x83, 0x07, 0xcb, 0x97, 0xaf, 0x50, 0xb2,
-0x91, 0xb7, 0xef, 0xd8, 0x19, 0x7e, 0x36, 0xd2,
-0xdd, 0xd3, 0xe7, 0xdc, 0xf9, 0xb8, 0x07, 0xb9,
-0x05, 0xe2, 0xfa, 0x86, 0xee, 0xd7, 0xe2, 0xef,
-0x0b, 0xb4, 0xb0, 0xd0, 0x25, 0xe9, 0xee, 0xec,
-0x92, 0x74, 0x74, 0x75, 0xb6, 0xb5, 0x75, 0xc0,
-0x68, 0x86, 0x02, 0x40, 0x2a, 0x24, 0xf8, 0x17,
-0xc7, 0x43, 0xdc, 0xef, 0xd9, 0xf7, 0xa1, 0xdf,
-0xe9, 0xb2, 0x8c, 0x8c, 0x58, 0xb7, 0xef, 0xdc,
-0x73, 0xdb, 0xef, 0x19, 0x1c, 0x12, 0x76, 0x33,
-0xf3, 0x4e, 0x65, 0x35, 0xaf, 0xbd, 0xb3, 0x43,
-0x99, 0xf1, 0x1f, 0xc3, 0x68, 0x0f, 0xd6, 0xd9,
-0x0e, 0x59, 0xa0, 0xc4, 0xd6, 0xb6, 0x36, 0xe8,
-0x77, 0x54, 0x34, 0x15, 0x6e, 0x03, 0x28, 0x81,
-0x00, 0x5c, 0x42, 0x18, 0x6e, 0x81, 0xa0, 0xdb,
-0x9d, 0xc8, 0x8c, 0x94, 0xd4, 0xb4, 0x81, 0x1b,
-0x5d, 0x5d, 0x5c, 0xb9, 0x67, 0x23, 0xcf, 0xb9,
-0x1d, 0xf4, 0x8a, 0x8a, 0x8e, 0xcd, 0x79, 0x98,
-0x0f, 0x0d, 0xa8, 0xc0, 0x95, 0x29, 0xaa, 0x13,
-0xd9, 0xd9, 0x29, 0xda, 0x98, 0x24, 0x2b, 0x53,
-0x2d, 0x2d, 0x2f, 0x25, 0x24, 0xec, 0xdc, 0xbd,
-0x2f, 0x24, 0xf4, 0x74, 0xda, 0xcd, 0xdb, 0x35,
-0x7c, 0x41, 0x47, 0xa7, 0x5c, 0x4c, 0x01, 0xd9,
-0xb3, 0xd7, 0xed, 0x35, 0x40, 0xa0, 0xaa, 0x1a,
-0x1b, 0x7f, 0xc9, 0xf3, 0x90, 0x8f, 0x7f, 0x60,
-0xc8, 0x95, 0xab, 0xa9, 0x25, 0x4f, 0x9f, 0x41,
-0x13, 0x29, 0x5e, 0xee, 0xc0, 0x33, 0x3d, 0x34,
-0xf1, 0x83, 0x0e, 0x86, 0x49, 0x60, 0x5b, 0x07,
-0xea, 0xe2, 0x8e, 0x2e, 0xd4, 0xdd, 0xd0, 0xb6,
-0xf4, 0x25, 0xea, 0x15, 0xd4, 0x3b, 0x9d, 0xd0,
-0xf8, 0x10, 0xe8, 0x94, 0x74, 0x45, 0x45, 0x47,
-0x8f, 0x1c, 0x21, 0x77, 0x77, 0xa2, 0x81, 0x81,
-0x61, 0xd2, 0xd5, 0x6b, 0x7b, 0xdc, 0x0e, 0x04,
-0x04, 0x87, 0x5c, 0x4f, 0xcd, 0x44, 0x4c, 0xbc,
-0x45, 0x51, 0xd5, 0x2e, 0xc6, 0x5f, 0x7e, 0x6d,
-0x73, 0x69, 0x8c, 0x1b, 0x7f, 0xe5, 0xea, 0xb5,
-0x9b, 0x99, 0xb7, 0xb3, 0x73, 0x72, 0x45, 0xe2,
-0x86, 0xce, 0x2e, 0xf9, 0x0e, 0xe5, 0x4e, 0x09,
-0xbc, 0x46, 0xf9, 0x05, 0x05, 0x06, 0xfa, 0x06,
-0x03, 0xf7, 0x60, 0xd0, 0xf2, 0xe1, 0x07, 0x43,
-0x75, 0x97, 0x1e, 0x46, 0xac, 0x4d, 0xea, 0x08,
-0x36, 0xe1, 0x0a, 0x09, 0x3c, 0x91, 0xdd, 0x50,
-0x80, 0x68, 0x78, 0xb9, 0x58, 0x44, 0x31, 0x44,
-0xc4, 0x22, 0x79, 0x98, 0xbd, 0xf2, 0x28, 0xd6,
-0x2c, 0x75, 0x19, 0x03, 0x0c, 0xe1, 0x3d, 0x4e,
-0xb5, 0xb4, 0x2a, 0xc8, 0x0b, 0xa4, 0x15, 0x40,
-0xaa, 0x97, 0x0e, 0x73, 0xc5, 0x14, 0xe0, 0x72,
-0x29, 0x24, 0xc5, 0x2c, 0x55, 0x76, 0xa7, 0x53,
-0x1d, 0x1b, 0xfb, 0x6d, 0xa5, 0xa4, 0x5b, 0x88,
-0xb9, 0x27, 0x45, 0x93, 0x91, 0xc3, 0x17, 0xac,
-0xe2, 0x52, 0x5b, 0xb0, 0x28, 0xbf, 0x2d, 0x6d,
-0xa4, 0xd4, 0x1f, 0x8d, 0xb3, 0xd4, 0xd2, 0xd4,
-0x5b, 0xca, 0xcd, 0x45, 0x24, 0x0b, 0x11, 0xc2,
-0x9d, 0x21, 0xa6, 0x77, 0x83, 0x19, 0x46, 0x7f,
-0xec, 0x44, 0x46, 0xf6, 0xa3, 0xea, 0x03, 0xd5,
-0x75, 0xed, 0xad, 0x3e, 0xae, 0x20, 0x22, 0xcb,
-0x64, 0xdf, 0x17, 0x61, 0xe5, 0xf4, 0x92, 0xb8,
-0xb1, 0x0b, 0x0f, 0xc1, 0x2e, 0x87, 0x54, 0x5f,
-0xc8, 0x76, 0x11, 0x52, 0x1b, 0xa4, 0x09, 0x0b,
-0x06, 0x14, 0x76, 0x2c, 0xc3, 0x67, 0x76, 0x91,
-0xcf, 0x84, 0x1f, 0xe2, 0x0f, 0x84, 0xb3, 0xd0,
-0x8e, 0xac, 0xaf, 0xe3, 0x98, 0x2b, 0x23, 0x19,
-0x2b, 0x8e, 0x1b, 0x2c, 0x09, 0x44, 0xbe, 0x60,
-0xbb, 0x1d, 0xda, 0xb6, 0x2e, 0xac, 0x05, 0xce,
-0x27, 0x2f, 0xa4, 0xff, 0x39, 0xa0, 0xf9, 0xae,
-0x04, 0x5e, 0xc6, 0xcb, 0x89, 0x89, 0x66, 0xa6,
-0x93, 0xcc, 0x2c, 0xa6, 0x03, 0xf6, 0x02, 0xf2,
-0xce, 0xb3, 0x5b, 0x30, 0xcf, 0xee, 0xe3, 0xf9,
-0x76, 0x0b, 0x6d, 0xe7, 0xce, 0xb3, 0x9e, 0x65,
-0x33, 0x6d, 0xda, 0x74, 0xe2, 0x05, 0xd6, 0xd5,
-0xd5, 0xa3, 0xf9, 0x2f, 0x39, 0x08, 0x1a, 0xc0,
-0x97, 0x7c, 0xb8, 0xfa, 0x36, 0x5f, 0x21, 0x8d,
-0x51, 0x1b, 0x13, 0x1d, 0x13, 0x83, 0xb7, 0xec,
-0x06, 0x24, 0x25, 0xa7, 0x16, 0x16, 0x2b, 0xc2,
-0x5f, 0x90, 0xa4, 0xa4, 0x64, 0xf5, 0xd1, 0xea,
-0xca, 0x68, 0x86, 0xe9, 0x81, 0xb3, 0xcb, 0xb6,
-0xd3, 0xe1, 0x11, 0xfb, 0xf7, 0x79, 0x47, 0x5f,
-0xb8, 0x98, 0x9d, 0x93, 0x27, 0x12, 0x37, 0x2a,
-0xf0, 0xe5, 0xd5, 0x37, 0x36, 0x5a, 0x5b, 0xcf,
-0x52, 0xd2, 0x6c, 0x3d, 0x5d, 0xfd, 0x8b, 0xb1,
-0x71, 0xf5, 0x0d, 0xf0, 0xde, 0xb7, 0x29, 0xfe,
-0x63, 0x1c, 0x50, 0x97, 0x96, 0xb6, 0x56, 0x71,
-0x43, 0x43, 0x0d, 0x4f, 0x58, 0x58, 0xfc, 0x34,
-0x2f, 0xff, 0xc9, 0xef, 0x39, 0x05, 0x77, 0xb3,
-0x1f, 0xde, 0xcb, 0xc9, 0x7b, 0x98, 0xfb, 0xf8,
-0x49, 0x51, 0x49, 0x45, 0x25, 0x8f, 0x2f, 0x02,
-0x45, 0x2d, 0x00, 0x73, 0xfd, 0x12, 0x61, 0xd0,
-0x50, 0x58, 0x52, 0x62, 0x65, 0x3d, 0x4b, 0x99,
-0xd5, 0x06, 0xa7, 0xad, 0xce, 0xe7, 0xce, 0xc7,
-0xb8, 0x1d, 0xf0, 0x8c, 0x8c, 0x8e, 0xbd, 0xff,
-0x30, 0x4f, 0x2c, 0xae, 0x97, 0x48, 0x5e, 0x83,
-0xbf, 0x30, 0xf0, 0x36, 0x35, 0x37, 0x8b, 0xeb,
-0x1b, 0x05, 0xc2, 0x3a, 0x1e, 0x5f, 0x58, 0x2d,
-0xe0, 0x57, 0xf3, 0x84, 0x35, 0x7c, 0x7e, 0x0d,
-0x4f, 0x50, 0xc3, 0xab, 0xad, 0xaa, 0xe6, 0x55,
-0xd7, 0x08, 0x78, 0xfc, 0x5a, 0x61, 0xad, 0xe8,
-0xc1, 0xc3, 0x47, 0xc3, 0x54, 0x86, 0xc9, 0x34,
-0x82, 0x5e, 0x66, 0x56, 0x16, 0xf0, 0xdf, 0x23,
-0xc1, 0x27, 0x53, 0x6e, 0xdc, 0x2c, 0x2e, 0xad,
-0x80, 0xd1, 0x5a, 0xc1, 0x0a, 0x3f, 0x92, 0x17,
-0x08, 0x7c, 0xdb, 0xda, 0x3b, 0x9b, 0x9a, 0x5a,
-0x41, 0x21, 0x14, 0x57, 0x55, 0x2d, 0xa8, 0xa8,
-0xac, 0xae, 0xac, 0x16, 0x54, 0x61, 0xa9, 0xac,
-0xe2, 0x55, 0x55, 0xf3, 0xb1, 0x08, 0x64, 0xa5,
-0xb2, 0xaa, 0x06, 0x7e, 0xab, 0xc1, 0x2c, 0xbe,
-0xf0, 0x76, 0xd6, 0xbd, 0x81, 0x3b, 0x81, 0x6d,
-0xf3, 0x96, 0x2d, 0x91, 0x17, 0xce, 0xb9, 0x1d,
-0xf0, 0x8a, 0x88, 0xba, 0xf8, 0xfb, 0xfd, 0x5c,
-0xa1, 0x48, 0xd1, 0x56, 0xa2, 0xba, 0x7a, 0xb1,
-0xfd, 0xa2, 0x45, 0x4a, 0x6a, 0xb6, 0x98, 0x3c,
-0x25, 0xf1, 0x4a, 0xf2, 0xee, 0xbd, 0x07, 0x8e,
-0x9e, 0x38, 0x95, 0x7e, 0x33, 0xb3, 0xb2, 0x8a,
-0xdf, 0xd6, 0xd6, 0xa9, 0xa0, 0xad, 0x3c, 0x0f,
-0x1d, 0x56, 0xac, 0x10, 0xde, 0xc4, 0xf3, 0x17,
-0x63, 0x7d, 0xfc, 0x7d, 0xbd, 0xfd, 0x82, 0x13,
-0x92, 0xae, 0x16, 0x97, 0x3e, 0x6d, 0x6e, 0x79,
-0x8d, 0xbb, 0x1f, 0x1a, 0xbf, 0xb5, 0xbd, 0x03,
-0x9e, 0xb6, 0x3a, 0x71, 0x3d, 0x5f, 0x20, 0x82,
-0x67, 0x12, 0xba, 0x18, 0x3a, 0x1a, 0x1a, 0x16,
-0xfa, 0xa2, 0x86, 0x07, 0x9d, 0x5e, 0x4b, 0xba,
-0x9b, 0xfc, 0xe2, 0xde, 0x47, 0xf3, 0xc4, 0x0b,
-0x31, 0xb1, 0xaa, 0xa3, 0x46, 0xcb, 0x7d, 0x1d,
-0x74, 0xf4, 0x92, 0x92, 0xaf, 0xee, 0xd9, 0xbb,
-0xcf, 0x3f, 0xe8, 0x68, 0xf2, 0xb5, 0xf4, 0xd2,
-0xb2, 0x67, 0x8a, 0xf9, 0xef, 0xd5, 0x94, 0xd4,
-0xd7, 0x36, 0x97, 0xcd, 0x6c, 0xdb, 0xc2, 0xa2,
-0xe2, 0xd4, 0xf4, 0xcc, 0xe2, 0xd2, 0xb2, 0x86,
-0x46, 0x45, 0x33, 0x67, 0x98, 0x2c, 0xc0, 0x03,
-0x1c, 0x7c, 0x34, 0x64, 0xc4, 0xdb, 0x7d, 0xbf,
-0xa0, 0xbc, 0x8c, 0x36, 0x9c, 0xc7, 0xda, 0x5c,
-0x88, 0x36, 0x17, 0xd1, 0xbe, 0x5d, 0xe2, 0xb7,
-0xc5, 0xbb, 0xa1, 0x00, 0xda, 0x10, 0x6c, 0x51,
-0x6c, 0xb4, 0x8e, 0x46, 0x1c, 0x0a, 0xb6, 0xb8,
-0x62, 0xe9, 0xb2, 0xb0, 0x88, 0x30, 0x68, 0x82,
-0x68, 0xb4, 0x2a, 0x16, 0xd9, 0x78, 0x4c, 0xbb,
-0x4a, 0x65, 0xb8, 0xb0, 0x74, 0x71, 0x58, 0x84,
-0x49, 0x2b, 0x8f, 0xf6, 0xb4, 0x82, 0x90, 0xe5,
-0x68, 0x0c, 0xd6, 0x02, 0x44, 0x87, 0xb9, 0xb5,
-0x64, 0xa5, 0x9a, 0xd2, 0x2c, 0xf5, 0xf0, 0xa2,
-0x6f, 0xa6, 0x08, 0x4a, 0x72, 0x04, 0xb2, 0xe5,
-0xca, 0xd8, 0x4c, 0x79, 0xa5, 0x89, 0x85, 0x64,
-0x0b, 0x16, 0xbd, 0x3b, 0x0b, 0x8a, 0x00, 0xcd,
-0x34, 0x3a, 0xcb, 0xa6, 0x91, 0x7a, 0x87, 0x31,
-0x52, 0xbb, 0x56, 0x4b, 0x9b, 0x85, 0x22, 0xc8,
-0xa6, 0x1c, 0x1e, 0xde, 0x01, 0xce, 0x27, 0x2e,
-0x60, 0xd2, 0x74, 0xa6, 0x5c, 0xaa, 0xdd, 0x88,
-0x33, 0x1d, 0x7f, 0xcd, 0x24, 0x24, 0xbb, 0xb3,
-0xd8, 0x14, 0x0a, 0xa3, 0x73, 0x3c, 0xd0, 0xf1,
-0x59, 0x9b, 0x4b, 0x90, 0x3b, 0x98, 0x82, 0xe0,
-0x4c, 0xe6, 0x9a, 0x64, 0xa3, 0x55, 0xb1, 0x64,
-0x21, 0x5a, 0x7f, 0xb1, 0x8f, 0x8e, 0xfd, 0x01,
-0xed, 0xb9, 0xbf, 0x6a, 0xd9, 0x6e, 0x9d, 0xbb,
-0xfa, 0x50, 0x53, 0xeb, 0x5f, 0x89, 0x02, 0xf3,
-0x04, 0xfc, 0x55, 0xdf, 0xac, 0xb6, 0xb0, 0xb0,
-0x98, 0x31, 0xd3, 0x6a, 0xf6, 0x9c, 0xb9, 0x76,
-0x0b, 0x16, 0xda, 0x2f, 0x5e, 0xba, 0xf8, 0x93,
-0x65, 0xf6, 0x8b, 0x97, 0x7c, 0xbc, 0x70, 0xf1,
-0x9c, 0xb9, 0x1f, 0xc3, 0xb0, 0x6f, 0x6e, 0x6e,
-0x6e, 0x60, 0x64, 0xa2, 0xa3, 0xa7, 0x2b, 0xfb,
-0x15, 0x12, 0x40, 0x30, 0x39, 0x0b, 0x9a, 0x96,
-0x37, 0x7b, 0x92, 0xd5, 0x54, 0xd5, 0xce, 0x46,
-0x44, 0x1e, 0xf6, 0xf5, 0xf7, 0xf4, 0xf6, 0xbd,
-0x9c, 0x78, 0x1d, 0xf0, 0xa8, 0xb9, 0xb9, 0x95,
-0x2c, 0x33, 0xf6, 0x6b, 0xf0, 0xcd, 0x8c, 0x8c,
-0xb1, 0x63, 0x94, 0xfa, 0xe2, 0x03, 0x4c, 0xfa,
-0xcf, 0x4f, 0x3f, 0x47, 0x44, 0x47, 0xef, 0xdb,
-0x77, 0x30, 0xf2, 0x5c, 0x4c, 0x76, 0xce, 0x23,
-0x18, 0x4b, 0xd1, 0x16, 0x0e, 0x39, 0x4d, 0x01,
-0x53, 0xfd, 0x05, 0x0b, 0x95, 0x1a, 0x4b, 0x75,
-0x75, 0xf4, 0xe2, 0xe2, 0x2f, 0xd5, 0x01, 0xb6,
-0x35, 0x34, 0xc0, 0xd8, 0xac, 0x80, 0xf1, 0xc1,
-0x00, 0x0b, 0x08, 0x5d, 0x51, 0x55, 0x93, 0x5f,
-0x50, 0x9c, 0x96, 0x79, 0xe7, 0xd2, 0xe5, 0xe4,
-0xf3, 0x31, 0x97, 0x4e, 0x87, 0x47, 0x11, 0x89,
-0x88, 0x8a, 0x89, 0xbb, 0x94, 0x90, 0x7a, 0x23,
-0x33, 0xfb, 0x7e, 0x6e, 0x71, 0xe9, 0x33, 0x20,
-0xe0, 0x2d, 0xad, 0x2d, 0x80, 0xe6, 0xfd, 0x56,
-0xff, 0x49, 0x51, 0x91, 0xbd, 0x12, 0xe6, 0xfd,
-0xfc, 0xcb, 0xa6, 0x98, 0xb8, 0xb8, 0x7d, 0xee,
-0x87, 0x22, 0xce, 0x5d, 0xb8, 0x9f, 0xf3, 0x08,
-0x8c, 0x54, 0x3c, 0x20, 0x03, 0xbb, 0x69, 0x6c,
-0x6c, 0xa9, 0xac, 0xe6, 0xe7, 0xe6, 0x3f, 0xc9,
-0xba, 0x93, 0x9d, 0x91, 0x79, 0x2b, 0x3d, 0xe3,
-0x4e, 0xea, 0xcd, 0x5b, 0x69, 0xe9, 0x59, 0xff,
-0xcf, 0xdc, 0x75, 0x87, 0x45, 0x71, 0x6e, 0xfd,
-0x3f, 0xbe, 0x2f, 0xc6, 0x98, 0x28, 0x12, 0xa3,
-0xb1, 0x80, 0x1a, 0xa5, 0x69, 0xe2, 0x0d, 0x26,
-0x96, 0xe4, 0xea, 0x35, 0xd6, 0x60, 0x01, 0xb1,
-0xd7, 0xa8, 0xd8, 0xaf, 0x0a, 0xb8, 0x34, 0x69,
-0xd2, 0x61, 0xe9, 0x4b, 0x97, 0xde, 0x7b, 0xef,
-0xbd, 0x2e, 0x6d, 0x01, 0xe9, 0x45, 0xa4, 0x08,
-0x48, 0xef, 0x4d, 0x51, 0x24, 0xb9, 0xdf, 0xf3,
-0x9d, 0x77, 0x66, 0x76, 0x76, 0x21, 0xcc, 0x40,
-0x92, 0x6b, 0x12, 0x9e, 0xf3, 0xf0, 0xcc, 0xcc,
-0xee, 0xbe, 0xf3, 0x4e, 0x7b, 0x7f, 0xe7, 0x77,
-0xde, 0xdf, 0x39, 0x93, 0x93, 0x5b, 0x90, 0xcd,
-0xce, 0x63, 0xe7, 0x72, 0xb2, 0xd8, 0xf9, 0x59,
-0xd9, 0x85, 0x45, 0xc5, 0xa5, 0x65, 0x15, 0x95,
-0x4b, 0x05, 0x78, 0x83, 0xf0, 0xb2, 0xe5, 0xcb,
-0xf2, 0x0b, 0x39, 0x4c, 0x33, 0x4b, 0x96, 0x8d,
-0x53, 0x4c, 0x5c, 0x52, 0x55, 0x75, 0x3d, 0x8c,
-0xea, 0x73, 0x4a, 0x70, 0xdf, 0x4e, 0x4e, 0x8e,
-0x8c, 0x8e, 0xc1, 0x39, 0xa9, 0xac, 0xae, 0x2f,
-0x2c, 0x2e, 0xcd, 0x84, 0xbd, 0xe4, 0x14, 0x66,
-0x64, 0xe5, 0x65, 0x66, 0xe7, 0xc1, 0xff, 0x2c,
-0x76, 0x5e, 0x16, 0xac, 0x66, 0xe7, 0xa5, 0xc3,
-0x96, 0x9c, 0x82, 0xf4, 0x6c, 0xd8, 0x8e, 0xfe,
-0x03, 0xab, 0x02, 0x83, 0x2f, 0xe4, 0x73, 0x4a,
-0x4b, 0xcb, 0xcb, 0xf9, 0xdd, 0x80, 0xff, 0xae,
-0xc9, 0xc9, 0xdd, 0x8c, 0x88, 0x8a, 0x36, 0x64,
-0x9a, 0x05, 0x06, 0x87, 0x15, 0x95, 0x94, 0x0f,
-0x0e, 0x0d, 0xc1, 0x29, 0xa2, 0x3a, 0x96, 0xd1,
-0xf1, 0x31, 0xd9, 0x13, 0x27, 0xe7, 0xd9, 0xb2,
-0xb8, 0xa8, 0x78, 0x4c, 0x6c, 0xbc, 0x91, 0x31,
-0xd3, 0xc5, 0xd5, 0x2b, 0x35, 0x23, 0xef, 0x65,
-0x47, 0xd7, 0x38, 0xad, 0x54, 0xde, 0xc5, 0xd5,
-0x8d, 0xbe, 0x41, 0xf0, 0x81, 0x83, 0x42, 0x42,
-0x1c, 0x9e, 0x38, 0xd9, 0xd8, 0xbb, 0xc7, 0xc6,
-0x27, 0x3f, 0x6b, 0x6c, 0x1d, 0x1e, 0xa5, 0xe5,
-0xbf, 0xff, 0x41, 0xbe, 0x16, 0x1c, 0x51, 0x53,
-0x6b, 0x4b, 0x59, 0x45, 0x75, 0x5e, 0xe1, 0xd3,
-0x2c, 0x76, 0x01, 0x5c, 0x65, 0x38, 0xcf, 0x99,
-0xec, 0x82, 0x2c, 0x36, 0x27, 0x83, 0x8d, 0xce,
-0x79, 0x4e, 0x1e, 0xda, 0x92, 0x93, 0x9b, 0x9f,
-0x91, 0x93, 0xcf, 0xce, 0x2d, 0xca, 0x61, 0x73,
-0x38, 0x4f, 0xcb, 0x12, 0x93, 0x52, 0x57, 0x7c,
-0xb6, 0x82, 0xaa, 0x27, 0xab, 0x56, 0xae, 0x8a,
-0x8d, 0x8f, 0x37, 0x31, 0xb5, 0xb4, 0x77, 0x74,
-0x4e, 0x4c, 0xc9, 0x68, 0x68, 0x7e, 0x09, 0x80,
-0x48, 0x73, 0x68, 0x05, 0x1c, 0x0e, 0xfd, 0xa1,
-0x81, 0x7f, 0xc5, 0x64, 0x9a, 0x56, 0x54, 0xd5,
-0x72, 0x8a, 0xcb, 0x3a, 0xba, 0xba, 0x81, 0xe1,
-0xd2, 0xcc, 0x6b, 0x8c, 0x8d, 0x4f, 0xf4, 0xf5,
-0xf7, 0x4b, 0x4b, 0xcb, 0xfc, 0x69, 0x45, 0x81,
-0x3e, 0xfc, 0x48, 0x50, 0xf8, 0x84, 0x2b, 0x02,
-0x29, 0x7e, 0xd9, 0x15, 0x2c, 0x70, 0x21, 0x06,
-0x57, 0x55, 0x11, 0xb2, 0x28, 0x9c, 0x54, 0x6a,
-0x74, 0x13, 0xa0, 0x89, 0x01, 0x10, 0x57, 0x52,
-0x05, 0x24, 0xb1, 0x17, 0xcf, 0xdc, 0x41, 0xc9,
-0x44, 0x00, 0x8e, 0xfc, 0x2a, 0x2c, 0x20, 0xce,
-0x28, 0x8a, 0xdb, 0x45, 0x22, 0x1d, 0x4e, 0x42,
-0x49, 0x70, 0xe4, 0x05, 0x84, 0xf9, 0x65, 0xd5,
-0x24, 0x5d, 0xd5, 0xee, 0x42, 0xa8, 0x87, 0x08,
-0x69, 0x1f, 0x29, 0x69, 0xe6, 0xcf, 0x0f, 0xc2,
-0x02, 0xce, 0x98, 0x5e, 0x5a, 0x13, 0x65, 0x48,
-0xa1, 0x2f, 0x13, 0x60, 0x3a, 0x40, 0xe8, 0xac,
-0xa6, 0xeb, 0xaf, 0xa6, 0xfd, 0x16, 0x03, 0x7a,
-0x22, 0x86, 0x3c, 0x5d, 0xb5, 0x45, 0x3a, 0x12,
-0xe4, 0x7e, 0x71, 0x65, 0x17, 0x37, 0x56, 0xc0,
-0x0d, 0x65, 0x63, 0x47, 0xba, 0x09, 0x57, 0x80,
-0xa3, 0xcc, 0xac, 0x1e, 0xec, 0x5c, 0x61, 0xaa,
-0x30, 0x24, 0xcd, 0xe2, 0xe5, 0x41, 0x8b, 0xa9,
-0xbe, 0xc4, 0x4b, 0x59, 0x62, 0x10, 0x5c, 0x89,
-0x02, 0xd1, 0x37, 0xb1, 0x40, 0xf4, 0x45, 0x24,
-0xc7, 0xc2, 0xde, 0x9a, 0x64, 0x2b, 0x74, 0x80,
-0x29, 0xb4, 0x47, 0x67, 0xcd, 0x2e, 0x65, 0xaf,
-0x88, 0x82, 0xff, 0x96, 0xe2, 0xe5, 0x4f, 0x30,
-0x4e, 0x51, 0xd1, 0xae, 0x5d, 0xbb, 0xbe, 0xf9,
-0xe6, 0xdb, 0xef, 0x77, 0xed, 0xde, 0x77, 0xe0,
-0xc7, 0x23, 0x47, 0x8e, 0x1d, 0x93, 0x39, 0x21,
-0x7d, 0xfc, 0xb4, 0xf4, 0xf1, 0x53, 0x52, 0x47,
-0x64, 0xf6, 0xee, 0x3f, 0x04, 0xa0, 0xfc, 0xf5,
-0xd7, 0x92, 0xe2, 0xe2, 0x9b, 0xd7, 0xad, 0x5f,
-0xbf, 0x6a, 0xf5, 0x6a, 0x54, 0x88, 0x12, 0x7b,
-0x1d, 0x21, 0xa2, 0xc0, 0x0b, 0x16, 0x82, 0xfd,
-0xc1, 0xd7, 0x11, 0x0a, 0x2c, 0x16, 0x70, 0xf7,
-0xf4, 0xb4, 0x77, 0x74, 0xb2, 0x62, 0xd9, 0xc5,
-0x25, 0xa4, 0xd6, 0xd4, 0x21, 0x95, 0x32, 0x4d,
-0x3d, 0x93, 0xa2, 0xe2, 0x92, 0x79, 0x66, 0x09,
-0x41, 0x97, 0x6e, 0xde, 0xba, 0x1d, 0x19, 0x1d,
-0x63, 0x60, 0x68, 0x1a, 0x18, 0x1c, 0x59, 0xf4,
-0xb4, 0xb2, 0xa7, 0xaf, 0x7f, 0x92, 0x26, 0x8a,
-0xf5, 0x6e, 0x52, 0x46, 0xe6, 0xf8, 0x9c, 0xcd,
-0x0a, 0x0a, 0x0a, 0x9a, 0x5b, 0x5a, 0x76, 0x02,
-0x79, 0x18, 0x18, 0xc0, 0xc2, 0x7d, 0xb3, 0xb7,
-0xf6, 0x33, 0x1a, 0xeb, 0x26, 0xfb, 0x06, 0x86,
-0x9a, 0x5b, 0xda, 0x38, 0x45, 0x65, 0x71, 0x09,
-0x29, 0x3e, 0x7e, 0xa1, 0x76, 0x8e, 0x6e, 0x96,
-0xd6, 0x76, 0x4c, 0x33, 0x6b, 0x23, 0x63, 0x73,
-0xa6, 0xa9, 0xa5, 0xa9, 0x39, 0x8b, 0x65, 0xeb,
-0xe4, 0xe2, 0xe1, 0x13, 0x11, 0x15, 0x97, 0x95,
-0x93, 0x57, 0x53, 0xf7, 0xbc, 0xbd, 0x13, 0x25,
-0xbc, 0xcc, 0xea, 0xea, 0xc3, 0x4d, 0x05, 0x43,
-0xe2, 0x26, 0x89, 0xcd, 0xf4, 0xa7, 0xfa, 0x9a,
-0x9c, 0x5c, 0x74, 0x5c, 0x82, 0x89, 0xa9, 0x45,
-0x40, 0x70, 0x68, 0x31, 0x1c, 0x72, 0x6f, 0xdf,
-0xe4, 0x14, 0x25, 0x20, 0x42, 0x27, 0x27, 0x26,
-0xde, 0xc2, 0xb1, 0x00, 0x13, 0x4f, 0x4a, 0xc9,
-0x00, 0x7f, 0xc0, 0xcb, 0x27, 0xc8, 0xc3, 0x3b,
-0xc0, 0xcd, 0xcb, 0xd7, 0xc3, 0xdb, 0xdf, 0xdd,
-0xdb, 0xcf, 0xcd, 0xcb, 0x07, 0x96, 0xc1, 0xdc,
-0xbd, 0xfc, 0x03, 0x02, 0xc3, 0x4a, 0x4a, 0x2b,
-0x96, 0xf1, 0x39, 0x3f, 0x02, 0x02, 0x02, 0xb9,
-0xf9, 0x05, 0x86, 0xc6, 0xa6, 0x26, 0xa6, 0x56,
-0x7e, 0x01, 0xc1, 0xb9, 0x79, 0x05, 0xad, 0x2f,
-0x3b, 0x46, 0x81, 0x82, 0xfd, 0x8c, 0x11, 0x79,
-0x0a, 0x0f, 0x0a, 0xf0, 0x17, 0x3c, 0x8d, 0xfa,
-0x86, 0x96, 0xac, 0x9c, 0xfc, 0xa8, 0x98, 0x38,
-0x1f, 0xff, 0x10, 0x0f, 0x2f, 0x7f, 0x57, 0x0f,
-0x6f, 0x17, 0x77, 0x6f, 0x20, 0x86, 0xae, 0xee,
-0xde, 0x2e, 0x6e, 0x5e, 0xae, 0xee, 0x5e, 0x00,
-0x52, 0xae, 0x6e, 0xde, 0xf8, 0x7f, 0xec, 0x53,
-0x2f, 0xf4, 0xa9, 0x9b, 0x57, 0x50, 0x68, 0x38,
-0xb8, 0x02, 0x70, 0x07, 0xbe, 0xa7, 0xa1, 0xf5,
-0xd2, 0xa5, 0x4b, 0xd1, 0xb1, 0x71, 0x7a, 0xc6,
-0x66, 0xbe, 0x01, 0xa1, 0x9c, 0xe2, 0xd2, 0xce,
-0xde, 0xa1, 0xb7, 0x6f, 0x29, 0xef, 0x99, 0x57,
-0x13, 0x13, 0x17, 0xe7, 0x3d, 0xe7, 0xb8, 0x6e,
-0xdd, 0x7a, 0x40, 0x76, 0x63, 0x13, 0x33, 0x67,
-0x57, 0xcf, 0xd4, 0xf4, 0xec, 0x96, 0xb6, 0x4e,
-0x70, 0xf9, 0x68, 0xa6, 0xdd, 0x7d, 0x7d, 0x03,
-0xe9, 0xaf, 0x35, 0x3c, 0x7d, 0x6e, 0x1e, 0x9e,
-0xce, 0xae, 0x6e, 0x2c, 0xd6, 0x93, 0xe8, 0xd8,
-0xa4, 0xfa, 0x86, 0xc6, 0x91, 0x51, 0xba, 0xd8,
-0xd1, 0xd4, 0xcf, 0xe0, 0x10, 0xbe, 0x79, 0xd1,
-0xda, 0x5e, 0x58, 0x54, 0x1a, 0x1d, 0x9b, 0x0c,
-0x1e, 0xa0, 0x97, 0x4f, 0xa0, 0xbb, 0xb7, 0x2f,
-0x6e, 0xd8, 0xb5, 0x46, 0x97, 0x1b, 0x5b, 0xe6,
-0x37, 0x9f, 0xc0, 0x90, 0x88, 0xe4, 0x94, 0xd4,
-0x95, 0x9f, 0xaf, 0xa2, 0xea, 0x09, 0x40, 0x73,
-0x68, 0x78, 0x84, 0x99, 0xb9, 0xa5, 0x8d, 0xbd,
-0x23, 0xdc, 0x48, 0xf5, 0x8d, 0xad, 0xe0, 0x62,
-0xd1, 0x4c, 0xca, 0x94, 0x56, 0x54, 0xd0, 0xd7,
-0x7c, 0x83, 0x73, 0x95, 0x99, 0x95, 0x0d, 0xee,
-0x1f, 0xb8, 0x85, 0xe0, 0x43, 0xbe, 0x9d, 0xa4,
-0xf4, 0x21, 0xe1, 0xf6, 0x86, 0x7d, 0x15, 0x3f,
-0x7d, 0xba, 0x72, 0xe5, 0xca, 0xf7, 0x74, 0x4b,
-0xcc, 0x62, 0xff, 0xf3, 0xc1, 0xa7, 0x9b, 0xa5,
-0x51, 0x99, 0x0b, 0x9c, 0x3c, 0xa2, 0xf8, 0x2d,
-0x01, 0x58, 0x28, 0xc4, 0x8a, 0x89, 0x7b, 0x31,
-0x38, 0x06, 0x68, 0xc3, 0xd3, 0x63, 0x51, 0x30,
-0x96, 0x2f, 0xce, 0x8c, 0x54, 0x5b, 0x38, 0x10,
-0xa3, 0x38, 0xb0, 0x46, 0x0f, 0x01, 0x46, 0x58,
-0xb0, 0xf7, 0x2b, 0x8d, 0x76, 0xf2, 0xb7, 0x5c,
-0x3a, 0xd9, 0xc9, 0x1f, 0xb5, 0x26, 0xdb, 0x97,
-0x20, 0x76, 0x4a, 0xce, 0x38, 0x13, 0x79, 0x4f,
-0xb8, 0xd4, 0x0a, 0xe3, 0xd1, 0xfd, 0x5c, 0xfd,
-0x15, 0xa6, 0xbb, 0xd6, 0x24, 0x34, 0x63, 0xb0,
-0xca, 0x8d, 0x7b, 0x93, 0x41, 0xe6, 0x01, 0x9c,
-0x0e, 0x73, 0x15, 0x56, 0x44, 0x9e, 0x32, 0xae,
-0x98, 0xc2, 0x40, 0x93, 0xc8, 0xff, 0xe5, 0x6b,
-0xbc, 0x0f, 0xeb, 0x39, 0x26, 0x72, 0x46, 0x84,
-0x97, 0xe8, 0x09, 0x9e, 0x44, 0x4c, 0x92, 0x6e,
-0x6e, 0x9b, 0xfd, 0xbc, 0x43, 0xc0, 0x52, 0x86,
-0xc9, 0xdf, 0x12, 0x31, 0x73, 0xd4, 0x0d, 0x8c,
-0xb3, 0xe3, 0x67, 0x06, 0x7c, 0x0c, 0x7e, 0x69,
-0xb4, 0xca, 0x4b, 0x94, 0x97, 0x04, 0x2c, 0x58,
-0xfe, 0x99, 0xf8, 0xfd, 0x72, 0xf4, 0xfa, 0x86,
-0xeb, 0x39, 0x22, 0x3f, 0x25, 0x89, 0x5c, 0x08,
-0x17, 0x39, 0xe9, 0xbd, 0x51, 0xda, 0x79, 0xed,
-0x61, 0x0b, 0xa1, 0x7d, 0x86, 0x42, 0xbb, 0x35,
-0x6f, 0x69, 0xf9, 0x8c, 0x8e, 0xff, 0xfe, 0x0c,
-0xd0, 0x3f, 0xd9, 0xec, 0xec, 0xed, 0x25, 0x25,
-0x25, 0x81, 0xfc, 0xee, 0xdd, 0x7f, 0x40, 0xea,
-0xf0, 0x51, 0xe9, 0x13, 0x67, 0x4e, 0x9e, 0xbd,
-0x70, 0xe6, 0xdc, 0x85, 0x53, 0x67, 0x2f, 0xc8,
-0xc8, 0x9e, 0xfa, 0x51, 0xea, 0xf0, 0xee, 0x3d,
-0x3f, 0x00, 0x3a, 0x03, 0x05, 0xde, 0xb0, 0x71,
-0x03, 0x56, 0x0b, 0x7a, 0xc5, 0xb2, 0x65, 0xcb,
-0xf0, 0x44, 0xe0, 0x45, 0x1f, 0x2d, 0xc2, 0x69,
-0xc8, 0x1f, 0x51, 0x61, 0x7d, 0xf2, 0xf1, 0x62,
-0x07, 0x27, 0xc7, 0x27, 0xae, 0xee, 0xa6, 0x56,
-0xac, 0xe8, 0xd8, 0xc4, 0xea, 0x9a, 0xe7, 0x08,
-0x7f, 0xa9, 0x63, 0x98, 0x55, 0x35, 0xd5, 0xc2,
-0x42, 0xf3, 0xca, 0x12, 0x82, 0xb1, 0xeb, 0xfc,
-0xc5, 0x0b, 0x31, 0x71, 0x71, 0x06, 0xc6, 0x66,
-0x7e, 0x81, 0xa1, 0x45, 0x25, 0x65, 0xdd, 0xbd,
-0x83, 0x93, 0xef, 0x28, 0x1f, 0x64, 0x40, 0xbd,
-0xb3, 0xe7, 0xce, 0xcf, 0xd9, 0xec, 0xdd, 0xfb,
-0x0f, 0x5e, 0xb4, 0xb6, 0xb5, 0xbd, 0xec, 0x84,
-0xa7, 0x9e, 0x4a, 0xda, 0x04, 0x03, 0x0f, 0xa0,
-0xcc, 0xe0, 0xd0, 0x48, 0x7d, 0x43, 0x73, 0x36,
-0xbb, 0x30, 0x38, 0x2c, 0xc2, 0xc6, 0xd1, 0x0d,
-0x30, 0x51, 0x43, 0x5b, 0x47, 0x49, 0x4d, 0x83,
-0xa1, 0xac, 0xca, 0x50, 0x52, 0x61, 0x28, 0x3f,
-0x52, 0x56, 0xd3, 0x50, 0xd7, 0xd4, 0xd1, 0xd5,
-0x37, 0xb1, 0x64, 0x39, 0xba, 0x79, 0xfa, 0x26,
-0x26, 0xa5, 0x15, 0x3d, 0xad, 0x6a, 0xef, 0x84,
-0x61, 0xf9, 0x15, 0x90, 0xd6, 0x5f, 0x8f, 0xcc,
-0x80, 0x6b, 0x01, 0x81, 0x41, 0xcb, 0xa9, 0x69,
-0x08, 0xd8, 0xb9, 0x73, 0xe7, 0xe3, 0x12, 0x13,
-0x0d, 0x4d, 0x2c, 0x7c, 0xfc, 0x82, 0x39, 0xc5,
-0xe5, 0xbd, 0x7d, 0x40, 0xf9, 0xa9, 0x83, 0x9c,
-0xff, 0x41, 0x0c, 0xbd, 0xa9, 0xa5, 0x8d, 0x9d,
-0xc7, 0xf1, 0xf1, 0x0b, 0xb1, 0x66, 0xd9, 0x1b,
-0x1a, 0x33, 0x75, 0xf4, 0x8c, 0x90, 0xe9, 0x1b,
-0x3d, 0xd6, 0x35, 0x84, 0xff, 0xb0, 0xac, 0x6b,
-0x60, 0x0c, 0x0b, 0xa6, 0x16, 0xd6, 0xc0, 0x80,
-0xd7, 0xac, 0x5e, 0xc3, 0x77, 0xed, 0x3e, 0xc9,
-0xc8, 0xca, 0xd1, 0x33, 0x62, 0x6a, 0x6a, 0xeb,
-0xda, 0xda, 0x3b, 0x85, 0x47, 0xc6, 0x3e, 0x2d,
-0xab, 0x6e, 0xef, 0xe8, 0x7e, 0x3d, 0x41, 0xa3,
-0xa0, 0x03, 0xc4, 0x9f, 0x04, 0xd7, 0xa5, 0xee,
-0x79, 0x63, 0x4a, 0x6a, 0x96, 0x8f, 0x5f, 0x90,
-0x95, 0x8d, 0xa3, 0x31, 0xd3, 0x4c, 0x47, 0xdf,
-0x10, 0x76, 0x87, 0x4c, 0x47, 0x9f, 0x58, 0xe0,
-0xae, 0x6a, 0xe3, 0x5b, 0x74, 0x0c, 0x74, 0xf4,
-0xd0, 0x16, 0x33, 0x0b, 0x56, 0x5e, 0x21, 0x67,
-0xd9, 0x67, 0xbf, 0x2d, 0x33, 0x6b, 0xfe, 0x76,
-0xea, 0xf4, 0xa9, 0x84, 0xa4, 0x24, 0x03, 0x23,
-0xa6, 0xaf, 0x7f, 0x70, 0x7e, 0x61, 0x71, 0x6f,
-0x5f, 0x3f, 0x4d, 0x5a, 0x19, 0xf8, 0x6c, 0x77,
-0xee, 0xde, 0x9f, 0x67, 0xcb, 0xab, 0x56, 0xad,
-0x09, 0x8f, 0x8c, 0x62, 0x9a, 0x9a, 0xb9, 0xb8,
-0x7a, 0xa4, 0xa4, 0x67, 0xc3, 0x5d, 0x44, 0xcf,
-0x7f, 0x63, 0xe3, 0x63, 0xf9, 0x67, 0xdb, 0x67,
-0x35, 0x1b, 0x3b, 0x7b, 0x0f, 0x6f, 0x1f, 0x4b,
-0x96, 0x7d, 0x64, 0x74, 0xc2, 0xb3, 0x67, 0x80,
-0xbf, 0x74, 0xd9, 0x52, 0xef, 0xde, 0x4d, 0xc1,
-0x3d, 0x59, 0xfb, 0xac, 0x21, 0x21, 0x29, 0x1d,
-0x9c, 0x1c, 0xa6, 0xb9, 0x95, 0x1e, 0x5c, 0x59,
-0xee, 0xe5, 0xc6, 0x0d, 0xce, 0xb0, 0x2e, 0x76,
-0x9e, 0xf9, 0xb7, 0x33, 0xcd, 0x2d, 0x53, 0xd2,
-0xd2, 0xd6, 0xaf, 0xa3, 0x9c, 0x5d, 0x15, 0x14,
-0x10, 0x0c, 0x08, 0x0a, 0xb2, 0xb0, 0xb6, 0xb5,
-0xb2, 0x73, 0x48, 0x48, 0x4a, 0x79, 0x86, 0x92,
-0xc1, 0xe9, 0xf8, 0x6f, 0x43, 0x63, 0x33, 0xdc,
-0x3c, 0x34, 0xc7, 0x75, 0xfa, 0xcc, 0xe9, 0xea,
-0xba, 0xba, 0xcc, 0xec, 0xdc, 0x17, 0x2d, 0x2f,
-0xc7, 0xc6, 0x29, 0x53, 0x99, 0xc0, 0x5e, 0x4f,
-0x4c, 0xc0, 0x69, 0x34, 0x61, 0x9a, 0xbe, 0xa7,
-0xfb, 0x81, 0xca, 0x3e, 0x5c, 0x24, 0x20, 0x76,
-0xbf, 0x14, 0xc1, 0x87, 0x7a, 0x37, 0x46, 0xe2,
-0x78, 0xc4, 0x73, 0xc6, 0x2a, 0x4f, 0x13, 0x85,
-0x2d, 0xcc, 0x90, 0x54, 0x71, 0x67, 0x69, 0x31,
-0xb5, 0x12, 0x57, 0x8f, 0x34, 0xf3, 0xb7, 0x38,
-0x68, 0x6a, 0x63, 0xb3, 0xba, 0xe4, 0x74, 0x30,
-0x26, 0xd9, 0xc2, 0xf5, 0xc6, 0xd0, 0x26, 0x86,
-0xb0, 0x44, 0x3e, 0x11, 0x2e, 0xca, 0xe2, 0xed,
-0x08, 0x6b, 0x04, 0x7e, 0xb2, 0x59, 0x8b, 0x97,
-0x08, 0xcc, 0xe5, 0xa1, 0xfd, 0xd3, 0xf8, 0x3b,
-0x85, 0x2a, 0x8c, 0xb7, 0x91, 0xaf, 0x1b, 0xf8,
-0x8e, 0x50, 0x40, 0x5b, 0x0b, 0xa7, 0xd2, 0x7c,
-0x82, 0x2b, 0x24, 0xb5, 0xea, 0xe2, 0xe2, 0xfe,
-0xb4, 0x5e, 0x91, 0x34, 0x79, 0x66, 0x27, 0x7f,
-0xad, 0x37, 0xe3, 0xe6, 0x28, 0x11, 0x05, 0xb5,
-0x80, 0x05, 0xab, 0xb4, 0xa1, 0xda, 0xd1, 0x8a,
-0x75, 0x62, 0xf7, 0x9e, 0x22, 0x16, 0x7c, 0x3d,
-0x47, 0xf4, 0xa7, 0x04, 0xd1, 0x73, 0x21, 0x22,
-0xb2, 0xde, 0x48, 0x8b, 0x75, 0xd0, 0x4c, 0x78,
-0x9f, 0xce, 0xce, 0x33, 0x16, 0xd5, 0x0d, 0x9d,
-0x7f, 0x2d, 0xaa, 0xce, 0xd3, 0xc6, 0xc6, 0xc7,
-0x2e, 0x5d, 0xfe, 0xe9, 0xdb, 0x6f, 0xb7, 0x01,
-0xc9, 0x3d, 0x24, 0x75, 0x44, 0xf6, 0xc4, 0xa9,
-0xb3, 0xe7, 0x2f, 0x5f, 0xbc, 0x7c, 0xfd, 0xf2,
-0x95, 0xab, 0xe7, 0x2f, 0x5e, 0x3d, 0x7d, 0xf6,
-0xc2, 0xd1, 0x63, 0xb2, 0x7b, 0xf7, 0x1d, 0xdc,
-0xb1, 0xf3, 0xbb, 0x2d, 0x5b, 0xb6, 0x88, 0x88,
-0x88, 0xae, 0x11, 0x12, 0x5e, 0xbe, 0xe2, 0xf3,
-0x4f, 0x3f, 0xfd, 0x74, 0xe9, 0xd2, 0xa5, 0x00,
-0xc1, 0x78, 0x21, 0x2c, 0xdc, 0xd0, 0x4b, 0x81,
-0xff, 0xf7, 0x83, 0xdf, 0x11, 0x85, 0x5e, 0xb4,
-0x70, 0x91, 0xb9, 0x95, 0x85, 0x9b, 0xbb, 0x17,
-0x8c, 0xab, 0x51, 0x31, 0x89, 0x55, 0x35, 0xcf,
-0x87, 0x47, 0xb0, 0x59, 0x5a, 0x8a, 0x01, 0xfc,
-0x79, 0x53, 0xd3, 0xfa, 0x79, 0xab, 0x2c, 0xa4,
-0x8f, 0xc9, 0xc4, 0x27, 0xc2, 0x58, 0x6a, 0xea,
-0x1d, 0x10, 0x58, 0x50, 0x58, 0xda, 0xdd, 0xdb,
-0x4f, 0xa3, 0x7f, 0x9e, 0x9a, 0xfa, 0x45, 0x4e,
-0xee, 0x06, 0x4d, 0x6b, 0x00, 0xe8, 0x5b, 0xb6,
-0x7c, 0x5d, 0xf3, 0xac, 0xbe, 0xa1, 0xe9, 0x45,
-0x77, 0x6f, 0xdf, 0xc4, 0x1b, 0x4a, 0x85, 0xc9,
-0xe4, 0xe4, 0xbb, 0x81, 0xa1, 0xd1, 0xc6, 0xe6,
-0xd6, 0x8c, 0xac, 0x3c, 0xff, 0xc0, 0x10, 0x96,
-0x9d, 0x93, 0xb9, 0x95, 0x8d, 0xa5, 0x35, 0xb0,
-0x5d, 0x7b, 0x73, 0x6b, 0x1b, 0x63, 0x53, 0x33,
-0xed, 0xc7, 0x3a, 0x00, 0xc1, 0xf2, 0xf2, 0x0c,
-0x05, 0x05, 0x65, 0xc5, 0x87, 0x6a, 0x6a, 0x8f,
-0x1e, 0x03, 0xbe, 0x39, 0xbb, 0x78, 0x44, 0xc5,
-0x24, 0x71, 0x4a, 0x2a, 0x51, 0x64, 0xf2, 0xf5,
-0xeb, 0x59, 0x83, 0x00, 0x00, 0x6d, 0x8a, 0x8a,
-0x0c, 0x1a, 0x25, 0xaa, 0xb4, 0xb4, 0x4c, 0x72,
-0x6a, 0x1a, 0x1c, 0xb2, 0x8f, 0x6f, 0x10, 0xd0,
-0x9c, 0xae, 0x9e, 0x01, 0x1a, 0x97, 0x03, 0x20,
-0x1e, 0x06, 0xb7, 0x86, 0xa6, 0x96, 0xe4, 0xd4,
-0x4c, 0xd8, 0xbb, 0x8e, 0xae, 0x91, 0x8a, 0xaa,
-0x86, 0xbc, 0x22, 0x43, 0xe1, 0xa1, 0x0a, 0x32,
-0x45, 0x15, 0xee, 0x02, 0x6c, 0x51, 0x55, 0xd7,
-0xd0, 0xc9, 0x2b, 0xe0, 0x6c, 0xf8, 0x62, 0x23,
-0xb9, 0x2f, 0xa0, 0x30, 0x89, 0x29, 0xc9, 0xfa,
-0x86, 0x86, 0x0c, 0xa5, 0x47, 0x3a, 0x7a, 0x26,
-0xf6, 0x4e, 0x1e, 0xf1, 0x49, 0x29, 0x4f, 0xcb,
-0xab, 0xdb, 0xbb, 0xfb, 0x68, 0x84, 0x40, 0xef,
-0xa6, 0x7e, 0x19, 0x19, 0x1d, 0x6f, 0x69, 0x6b,
-0x07, 0xd0, 0x0f, 0x0e, 0x8d, 0x66, 0xd9, 0x38,
-0x3e, 0xd6, 0xd5, 0x57, 0x7a, 0xa4, 0xae, 0xc0,
-0x50, 0x55, 0x50, 0x54, 0x85, 0x1d, 0xc9, 0x2b,
-0x30, 0xd0, 0xae, 0x71, 0x7b, 0x88, 0xb6, 0xa0,
-0x05, 0x06, 0xde, 0x13, 0x65, 0x2d, 0x6d, 0xbd,
-0xfc, 0x42, 0x8e, 0xb0, 0xb0, 0xf0, 0x7b, 0x1a,
-0x57, 0xa5, 0xa4, 0xa4, 0x10, 0xfe, 0x1a, 0x9a,
-0x7a, 0x7a, 0x07, 0xe6, 0xe6, 0x17, 0x77, 0xf5,
-0xf4, 0x00, 0xc8, 0x52, 0xb1, 0x54, 0x70, 0x93,
-0x14, 0x14, 0x18, 0xf3, 0x6c, 0x19, 0x1c, 0xa7,
-0x90, 0xf0, 0x30, 0x33, 0x4b, 0x6b, 0x3b, 0x27,
-0x57, 0x20, 0x89, 0x2d, 0x6d, 0x08, 0x7f, 0x69,
-0xf8, 0x6f, 0x6a, 0x7a, 0xfa, 0x9c, 0x61, 0x76,
-0x4b, 0x6b, 0x6b, 0x6f, 0x7f, 0x3f, 0x4b, 0x6b,
-0x5b, 0x70, 0x7e, 0x6a, 0xea, 0xea, 0x07, 0x87,
-0x87, 0x69, 0x6a, 0x7a, 0x80, 0x87, 0x39, 0x34,
-0x3c, 0x52, 0x5e, 0x55, 0x1b, 0x11, 0x9d, 0x08,
-0xbe, 0x16, 0x78, 0x83, 0x0f, 0x95, 0xd4, 0xb8,
-0xe7, 0x19, 0x99, 0x22, 0x7e, 0xaa, 0xf9, 0x0d,
-0xdb, 0xae, 0xa6, 0xae, 0x0d, 0xcf, 0x91, 0xa8,
-0x08, 0x65, 0xa5, 0x91, 0x25, 0x8b, 0x97, 0x78,
-0x79, 0x7b, 0xb3, 0x6c, 0x1d, 0x2d, 0x6d, 0x1c,
-0x62, 0x62, 0x93, 0x9f, 0x3d, 0x47, 0xf8, 0x4b,
-0xc3, 0x7f, 0xc1, 0xc9, 0x84, 0x61, 0x84, 0xe6,
-0x41, 0xf3, 0xf2, 0xf2, 0x29, 0x2a, 0x29, 0xe5,
-0x14, 0x97, 0x75, 0xf7, 0xf4, 0xd2, 0x3d, 0x68,
-0xef, 0xa6, 0x80, 0xf2, 0xb7, 0x77, 0x76, 0xec,
-0xdf, 0x7f, 0xe0, 0x3d, 0xdd, 0x0f, 0x34, 0x26,
-0x24, 0x65, 0x46, 0x50, 0x60, 0x0c, 0x71, 0xbe,
-0xd2, 0xea, 0xc0, 0x15, 0x47, 0xdc, 0x40, 0x31,
-0x91, 0x89, 0xc3, 0x9f, 0x7f, 0x84, 0xf2, 0x95,
-0x34, 0x89, 0x02, 0x53, 0x78, 0x69, 0xa9, 0x4d,
-0x5c, 0x52, 0x4c, 0x84, 0x67, 0xb9, 0xba, 0x29,
-0xfe, 0xa2, 0x52, 0xb8, 0x86, 0x0a, 0x87, 0x39,
-0x7e, 0x08, 0x43, 0xfc, 0x54, 0x83, 0xa8, 0xb0,
-0x81, 0x7f, 0x4a, 0x56, 0xde, 0x40, 0x1f, 0x61,
-0xf2, 0x2a, 0xee, 0x84, 0x2f, 0x11, 0x19, 0xc6,
-0x65, 0x57, 0x5f, 0x62, 0x7a, 0x30, 0x42, 0x5b,
-0x85, 0x61, 0x25, 0x29, 0x03, 0xc3, 0x25, 0x55,
-0xa4, 0x86, 0x8a, 0xd7, 0x25, 0x74, 0x20, 0x1d,
-0xc4, 0x16, 0xac, 0xa2, 0x17, 0xbe, 0x1d, 0x7d,
-0x0d, 0x0b, 0x02, 0x10, 0x95, 0xb5, 0xb8, 0x94,
-0x16, 0xdf, 0x3b, 0x4e, 0x9f, 0x79, 0xac, 0x9c,
-0x5b, 0xfe, 0x8b, 0xa4, 0xc3, 0x78, 0x92, 0x32,
-0x57, 0x24, 0x36, 0x28, 0x81, 0x57, 0x05, 0xd1,
-0xc4, 0xb3, 0x93, 0xa0, 0xfd, 0x3e, 0x4c, 0x1a,
-0xdd, 0x47, 0x54, 0xc5, 0x54, 0x69, 0x15, 0xc3,
-0x21, 0x58, 0xbe, 0x56, 0xfc, 0x5e, 0x09, 0xaa,
-0x14, 0x2d, 0x97, 0x29, 0x72, 0x39, 0x4e, 0xe4,
-0x6c, 0xd0, 0x46, 0x59, 0xb7, 0xb5, 0x87, 0x59,
-0x42, 0x07, 0x4d, 0xd7, 0x1f, 0x7a, 0xec, 0x1b,
-0x9d, 0xff, 0x97, 0x63, 0xeb, 0x7c, 0xac, 0xb2,
-0xa6, 0x66, 0xef, 0xbe, 0xfd, 0x00, 0xaf, 0x7b,
-0xf7, 0x1f, 0x94, 0x3e, 0x2e, 0x0b, 0xb4, 0xf7,
-0xc2, 0xd5, 0x1b, 0x97, 0xaf, 0xdf, 0xbd, 0x70,
-0xe3, 0xee, 0xb5, 0xeb, 0xb7, 0xce, 0x5f, 0xbc,
-0x22, 0x23, 0x7b, 0xf2, 0x90, 0xd4, 0xd1, 0x9d,
-0xdf, 0x7d, 0x2f, 0x29, 0xb9, 0x55, 0x42, 0x42,
-0x42, 0x48, 0x58, 0x98, 0x98, 0x02, 0x86, 0xbf,
-0xc5, 0x4b, 0x70, 0xfe, 0xfb, 0x07, 0xf3, 0x7f,
-0xa1, 0x05, 0x13, 0x53, 0xa6, 0xa7, 0x37, 0x52,
-0x29, 0x47, 0x44, 0xc6, 0x55, 0x54, 0xd6, 0x0d,
-0x0c, 0x8d, 0x00, 0xf4, 0x50, 0xc5, 0x75, 0x3b,
-0x3a, 0x3b, 0xc5, 0xc5, 0xc4, 0xe7, 0xd9, 0xf8,
-0x81, 0x83, 0x07, 0x92, 0x52, 0x52, 0x8d, 0x4c,
-0xcc, 0xbd, 0x7c, 0x02, 0x80, 0xcb, 0x74, 0xf5,
-0xf4, 0xd3, 0xa7, 0x25, 0xca, 0x2b, 0x2a, 0xd0,
-0xb4, 0x26, 0xb8, 0x54, 0xd0, 0xc9, 0xf9, 0x49,
-0x7d, 0xc3, 0x8b, 0xe7, 0x8d, 0x2d, 0x43, 0x23,
-0x23, 0x54, 0xba, 0x62, 0x24, 0xb8, 0x1a, 0x7f,
-0xd5, 0xde, 0xd1, 0xc9, 0x29, 0x2a, 0x0b, 0x0e,
-0x0d, 0x0b, 0x0c, 0x0e, 0xcf, 0xce, 0xcd, 0x2f,
-0x29, 0x2d, 0xcd, 0xc8, 0xcc, 0x0c, 0x0c, 0x0e,
-0xf2, 0x0f, 0x0c, 0x8c, 0x4f, 0x48, 0x02, 0x04,
-0xc9, 0x64, 0x67, 0x3b, 0x38, 0x3a, 0x30, 0x94,
-0x54, 0xef, 0xdd, 0x93, 0x07, 0xc4, 0x91, 0x57,
-0x06, 0x9e, 0x61, 0x02, 0x20, 0x18, 0x1b, 0x9f,
-0x5a, 0x5a, 0x5e, 0x0d, 0x5d, 0x7d, 0xfd, 0x66,
-0xf6, 0x3c, 0xe8, 0xaa, 0xea, 0xda, 0xad, 0x5b,
-0xbf, 0xa5, 0xea, 0xe4, 0x8f, 0x52, 0x87, 0x53,
-0xd2, 0x32, 0xf4, 0x0c, 0x8c, 0xbc, 0x7d, 0x03,
-0xf3, 0x0b, 0x4b, 0x3a, 0xbb, 0x7b, 0xdf, 0x4c,
-0x50, 0xcf, 0xff, 0x62, 0x13, 0x82, 0x00, 0xf7,
-0x45, 0x25, 0x65, 0x11, 0x91, 0xb1, 0xce, 0x6e,
-0xee, 0x36, 0xf6, 0x8e, 0xd6, 0x2c, 0x9b, 0x59,
-0x0c, 0x15, 0xb3, 0x74, 0x2a, 0x2d, 0xaf, 0x12,
-0x9d, 0x7e, 0xf2, 0x63, 0xe2, 0x63, 0x8d, 0x4c,
-0x98, 0x0f, 0xe4, 0x15, 0x95, 0x55, 0xd5, 0xe1,
-0x3c, 0xbb, 0xb8, 0x79, 0x26, 0xa4, 0x64, 0x55,
-0x54, 0xd7, 0xf7, 0x80, 0x7f, 0x42, 0x21, 0xee,
-0x85, 0xf3, 0x0c, 0x2e, 0xc1, 0xe8, 0xd8, 0xd8,
-0x8b, 0xd6, 0xd6, 0x92, 0xb2, 0xf2, 0xe4, 0x94,
-0xf4, 0xc0, 0xe0, 0x10, 0x77, 0x6f, 0x3f, 0xac,
-0xf8, 0xa1, 0x9b, 0x83, 0x93, 0x8b, 0xa3, 0x93,
-0x2b, 0x98, 0x83, 0xa3, 0xb3, 0xa3, 0x93, 0x8b,
-0x03, 0x32, 0xb4, 0x8c, 0x0a, 0x36, 0x3e, 0x41,
-0xab, 0x1e, 0x5e, 0xde, 0xd5, 0xb5, 0x35, 0x5f,
-0x7c, 0xb1, 0xe1, 0x3d, 0x0d, 0xaa, 0xff, 0xda,
-0xf3, 0x43, 0x62, 0x72, 0xb2, 0x91, 0xb1, 0xa9,
-0xa7, 0x4f, 0x00, 0x3b, 0xaf, 0x18, 0xae, 0x23,
-0x4d, 0x96, 0x2e, 0x5c, 0x20, 0x2d, 0xad, 0xc7,
-0xf3, 0x6c, 0x19, 0xee, 0x9f, 0x80, 0xa0, 0x60,
-0x4b, 0x96, 0xad, 0xad, 0x83, 0x4b, 0x42, 0x62,
-0x3a, 0x78, 0x71, 0x63, 0xe3, 0x74, 0xf8, 0x9b,
-0x93, 0x97, 0xb7, 0x64, 0x2e, 0xa9, 0xbf, 0x9e,
-0xb1, 0x91, 0x7f, 0x50, 0xa8, 0xb9, 0x85, 0x55,
-0x68, 0x78, 0x4c, 0x45, 0x35, 0x26, 0x77, 0x9f,
-0xfa, 0x85, 0x0a, 0xf8, 0xa0, 0xb7, 0xe0, 0x17,
-0xd5, 0x37, 0x34, 0xe6, 0xe4, 0xe4, 0x05, 0x06,
-0x87, 0x3a, 0x3a, 0xbb, 0xb0, 0x6c, 0x1d, 0x66,
-0x5c, 0xe5, 0x19, 0xd7, 0x1d, 0x2b, 0x96, 0xc9,
-0xb2, 0x73, 0xb0, 0xcf, 0xce, 0x61, 0x7f, 0xf5,
-0xe5, 0x16, 0xaa, 0x6e, 0x2c, 0xfe, 0x78, 0xf1,
-0x13, 0x67, 0xb8, 0x76, 0xce, 0x16, 0x96, 0x36,
-0x51, 0x31, 0x09, 0x40, 0xb1, 0x91, 0x62, 0x8a,
-0x1a, 0x7f, 0xbb, 0x7b, 0x7b, 0x57, 0x2c, 0xa7,
-0x0c, 0xe3, 0xc0, 0x47, 0x15, 0x35, 0xd5, 0xd9,
-0xec, 0xc2, 0xea, 0xda, 0x06, 0x24, 0x20, 0xa4,
-0xf6, 0x28, 0x26, 0x27, 0xa7, 0x60, 0x47, 0xe9,
-0x99, 0x99, 0xab, 0x56, 0xae, 0x7e, 0x4f, 0xf7,
-0x03, 0x8d, 0x2d, 0xdb, 0x24, 0x2d, 0xae, 0xdc,
-0x4c, 0xe2, 0x2f, 0x0f, 0x19, 0x49, 0xe9, 0xd1,
-0x74, 0x32, 0x3b, 0x7d, 0xfa, 0x75, 0x96, 0x1a,
-0x1d, 0x98, 0x44, 0xaa, 0x87, 0xff, 0x0b, 0xe4,
-0xa7, 0xf8, 0x6f, 0xb9, 0xd3, 0xc1, 0x03, 0x3c,
-0x14, 0xe3, 0x56, 0xa0, 0xe2, 0xb6, 0xd6, 0x4b,
-0x4e, 0x07, 0xe3, 0x22, 0x28, 0xfe, 0xd9, 0xe1,
-0x19, 0xb3, 0xb4, 0xf8, 0x97, 0x31, 0xc0, 0x1d,
-0xc0, 0xe5, 0x58, 0x64, 0x57, 0x91, 0x00, 0x5b,
-0xa3, 0x9b, 0x8b, 0xbf, 0xdd, 0xe4, 0x4f, 0x70,
-0x74, 0xc6, 0x89, 0x33, 0x31, 0xff, 0x8b, 0xc1,
-0x3d, 0xde, 0x1a, 0xb7, 0x7c, 0xe5, 0x8c, 0xe3,
-0x25, 0x96, 0xc9, 0x39, 0x6b, 0xcc, 0xb5, 0xe8,
-0xe5, 0x86, 0xd6, 0x09, 0xa5, 0x16, 0x7f, 0x55,
-0x2e, 0x82, 0x98, 0xe3, 0xc5, 0xb2, 0xe0, 0xb7,
-0xfc, 0xaf, 0x81, 0x50, 0x6d, 0x17, 0x53, 0x6a,
-0x14, 0x51, 0xac, 0x17, 0x53, 0xa8, 0x11, 0xfb,
-0x77, 0x89, 0xc4, 0xad, 0x5c, 0x54, 0x1a, 0xeb,
-0x62, 0x84, 0xc8, 0x29, 0xbf, 0x0d, 0xd2, 0x2e,
-0x08, 0x82, 0xf7, 0xe9, 0xdd, 0x35, 0x08, 0xfd,
-0xfb, 0xbf, 0x14, 0x09, 0xee, 0x6a, 0x37, 0x0f,
-0x8f, 0xed, 0x3b, 0x76, 0x00, 0xf9, 0x3d, 0x72,
-0x54, 0x46, 0xfa, 0xe4, 0xc5, 0x2b, 0x57, 0x6f,
-0xdc, 0xbc, 0x73, 0xef, 0xfe, 0x7d, 0xf9, 0x7b,
-0xf7, 0x15, 0x7f, 0xba, 0xfd, 0xe0, 0xda, 0xf5,
-0xdb, 0x67, 0xce, 0x5e, 0x3a, 0x7c, 0xe4, 0xe8,
-0x9e, 0xbd, 0xfb, 0xb6, 0x6d, 0xdb, 0x2e, 0x26,
-0xb1, 0x19, 0x06, 0x3d, 0xfc, 0x75, 0x48, 0x4b,
-0x05, 0x04, 0x05, 0x96, 0x08, 0xe0, 0x89, 0x48,
-0x78, 0x16, 0x30, 0x1e, 0x82, 0xfe, 0x1d, 0xfc,
-0x17, 0x38, 0x94, 0x86, 0x86, 0xa6, 0xaf, 0x7f,
-0xa8, 0x89, 0xb1, 0x55, 0x78, 0x44, 0x6c, 0x59,
-0x45, 0xf5, 0xc0, 0xe0, 0x30, 0x8d, 0x64, 0xa8,
-0xa7, 0xaf, 0xff, 0xab, 0x2d, 0x94, 0xe3, 0xc0,
-0x0c, 0xdb, 0xf5, 0xcf, 0xdd, 0xa9, 0x19, 0xe9,
-0x46, 0xc6, 0x4c, 0x2f, 0x5f, 0x18, 0x4b, 0x8b,
-0x3a, 0x3a, 0x7b, 0x68, 0xc6, 0x52, 0x30, 0xad,
-0xc7, 0x74, 0x45, 0xf6, 0xce, 0x9c, 0x3d, 0x5b,
-0xff, 0xbc, 0x11, 0xa0, 0xaa, 0xbd, 0xa3, 0x6b,
-0x62, 0x62, 0xf6, 0x84, 0x5f, 0xb8, 0xee, 0xe0,
-0xae, 0xf7, 0xf6, 0x0d, 0x94, 0x57, 0xd4, 0xa4,
-0x67, 0x66, 0x97, 0x95, 0x57, 0xa5, 0xa5, 0x67,
-0xfc, 0xfb, 0xde, 0x7d, 0x11, 0x51, 0x31, 0x72,
-0xc2, 0x0b, 0xce, 0xd5, 0xca, 0x95, 0xab, 0x8e,
-0x4a, 0xcb, 0xf8, 0xfa, 0x83, 0x57, 0x50, 0xe8,
-0xec, 0xe2, 0xaa, 0xf8, 0x50, 0x49, 0x5e, 0xfe,
-0x21, 0x43, 0x59, 0x43, 0xcf, 0xc0, 0xc4, 0xc1,
-0xd9, 0x1d, 0xc8, 0x51, 0x55, 0xcd, 0xf3, 0xbe,
-0xc1, 0xe1, 0x59, 0xa9, 0x2b, 0x5c, 0x38, 0x00,
-0x2c, 0xaa, 0xe9, 0xb3, 0x5d, 0xbb, 0x76, 0xa5,
-0x67, 0x66, 0xe9, 0x18, 0x18, 0xbb, 0x79, 0xfa,
-0xe7, 0xe6, 0x17, 0x75, 0x76, 0x53, 0xe2, 0x20,
-0xd6, 0xdb, 0x9f, 0x39, 0xc5, 0xc5, 0x56, 0x58,
-0x89, 0x6c, 0x64, 0xb6, 0x68, 0xf8, 0xb5, 0xb1,
-0xb5, 0x03, 0x83, 0x55, 0x7c, 0x04, 0xb6, 0xb5,
-0xb3, 0x27, 0x3f, 0x35, 0x66, 0x1a, 0x7f, 0x36,
-0xbd, 0xdc, 0xb1, 0xa1, 0xb1, 0x59, 0x42, 0x62,
-0xb2, 0x92, 0x0a, 0x90, 0x56, 0x25, 0x25, 0x15,
-0x75, 0x23, 0x53, 0x0b, 0x00, 0xc8, 0x94, 0xb4,
-0xac, 0xea, 0xda, 0xfa, 0x9e, 0xbe, 0x81, 0x5f,
-0x97, 0x32, 0x9b, 0x9c, 0x7a, 0x07, 0x27, 0xc4,
-0xd8, 0xc4, 0x4c, 0xdf, 0xc0, 0xd0, 0xc8, 0xc8,
-0x08, 0xfe, 0xeb, 0xe9, 0x1b, 0xe8, 0xe9, 0x19,
-0xc0, 0x7f, 0x58, 0x26, 0x56, 0xf5, 0x0d, 0x75,
-0xf5, 0xf4, 0xf5, 0xf5, 0x61, 0x19, 0x5f, 0x45,
-0x06, 0x5b, 0x60, 0x15, 0xbe, 0x00, 0x0b, 0x6a,
-0x8f, 0xd4, 0x97, 0xbe, 0xb7, 0x77, 0x55, 0xec,
-0xd8, 0xbe, 0x33, 0x29, 0x35, 0xd5, 0xc0, 0x98,
-0xe9, 0xee, 0xe9, 0x97, 0x99, 0x5b, 0xd0, 0xde,
-0xd9, 0x47, 0x13, 0xc0, 0x87, 0xcb, 0xcd, 0x34,
-0xb3, 0x98, 0x67, 0xcb, 0x8b, 0x3f, 0x59, 0xec,
-0xee, 0xee, 0x6e, 0x63, 0xe7, 0x60, 0x63, 0xe7,
-0x1c, 0x13, 0x97, 0xd8, 0xd0, 0xd4, 0x06, 0x4e,
-0x08, 0x4d, 0xb8, 0xb8, 0xb8, 0xa4, 0x54, 0x50,
-0x70, 0x0e, 0xa9, 0xbf, 0x9a, 0x9a, 0x7a, 0x48,
-0x68, 0x98, 0xb9, 0xa5, 0x4d, 0x70, 0x68, 0x54,
-0x69, 0x65, 0x2d, 0xbd, 0xdc, 0x6e, 0xfc, 0xf5,
-0xab, 0xc8, 0xa8, 0x18, 0xfc, 0x2a, 0xdb, 0xd9,
-0x3b, 0xcc, 0x7a, 0xb9, 0x61, 0xbb, 0x35, 0x76,
-0xb9, 0xc9, 0x05, 0x1b, 0x54, 0x95, 0xdd, 0x41,
-0x45, 0x55, 0x75, 0x05, 0xb5, 0xee, 0x62, 0xe1,
-0x87, 0x0b, 0xcd, 0x2d, 0x2c, 0x5c, 0xdd, 0x3d,
-0xcd, 0xac, 0xec, 0xa2, 0x63, 0x12, 0xe0, 0xea,
-0x0f, 0x0d, 0x8f, 0xd2, 0x8c, 0x81, 0x83, 0xc3,
-0x23, 0x42, 0x42, 0xeb, 0x66, 0x6d, 0x0a, 0xc6,
-0x90, 0xab, 0xd7, 0xe4, 0xea, 0x1b, 0x9a, 0xb2,
-0x73, 0x0a, 0x5e, 0xb6, 0x77, 0x4e, 0x4c, 0x50,
-0x16, 0x50, 0x85, 0x07, 0x10, 0xe5, 0xa6, 0xbd,
-0x9e, 0x78, 0x20, 0xaf, 0xf0, 0x47, 0x28, 0xc0,
-0xef, 0xb6, 0x8f, 0x96, 0xae, 0x5b, 0x2f, 0x97,
-0x81, 0x15, 0x91, 0x20, 0xf0, 0x51, 0x02, 0x43,
-0x2b, 0xa2, 0xb6, 0x24, 0xca, 0x81, 0xc5, 0xca,
-0x43, 0x91, 0xa0, 0x86, 0xe9, 0x91, 0x48, 0x49,
-0x15, 0x2e, 0x43, 0xc2, 0x91, 0x8e, 0x20, 0x80,
-0x5c, 0x39, 0xd6, 0xaf, 0xeb, 0x5b, 0x12, 0x45,
-0x1d, 0x79, 0xf5, 0xac, 0xfa, 0x71, 0xc1, 0x33,
-0x9f, 0x68, 0x8a, 0xc0, 0x38, 0x6e, 0x53, 0x3c,
-0xe0, 0x03, 0xd0, 0xc4, 0xeb, 0x6e, 0x21, 0x1e,
-0xaa, 0x4e, 0x56, 0x69, 0xe6, 0x17, 0x6b, 0x71,
-0x2b, 0x71, 0x11, 0x90, 0x3a, 0x30, 0xcd, 0x9d,
-0xd0, 0xe4, 0x95, 0x0a, 0xe1, 0x09, 0xae, 0xf0,
-0x2a, 0x5b, 0x98, 0xbe, 0x0b, 0x8b, 0x6c, 0xf7,
-0x92, 0x01, 0x64, 0xb2, 0xfc, 0x26, 0xfc, 0xc7,
-0xf6, 0x4b, 0xb4, 0x43, 0xc8, 0xcf, 0x88, 0xca,
-0x1e, 0xdd, 0x44, 0xbc, 0x9d, 0xcb, 0x85, 0xb1,
-0x99, 0xdf, 0x41, 0xd2, 0xc1, 0xe0, 0x75, 0x49,
-0xa3, 0x0b, 0x97, 0x63, 0xf1, 0xde, 0x13, 0xa1,
-0xda, 0x86, 0x0a, 0x64, 0x29, 0xd4, 0x8b, 0x3e,
-0xa8, 0x16, 0xbb, 0x5b, 0x2c, 0x7a, 0x23, 0x57,
-0xf4, 0xa7, 0x24, 0xf4, 0xb2, 0xc2, 0x93, 0x5e,
-0x1b, 0xa4, 0x6d, 0x84, 0x0e, 0x99, 0xed, 0xbc,
-0x68, 0xd3, 0xd2, 0xde, 0xf7, 0x97, 0x23, 0x2c,
-0xbd, 0x8d, 0x8e, 0x8f, 0x3d, 0x90, 0x7f, 0xb8,
-0x7d, 0xfb, 0x8e, 0x3d, 0x7b, 0xf7, 0xcb, 0x1c,
-0x3f, 0x71, 0xe1, 0xd2, 0xb5, 0xeb, 0x37, 0xef,
-0x3c, 0x50, 0x50, 0x66, 0x28, 0x3d, 0x52, 0x64,
-0xa8, 0xdd, 0x97, 0x57, 0xba, 0x79, 0xfb, 0xdf,
-0x17, 0x2e, 0x5d, 0x39, 0x2e, 0x7b, 0xf2, 0x87,
-0x7d, 0xfb, 0xb7, 0x6d, 0xdf, 0xb1, 0xf9, 0xab,
-0x2d, 0x1b, 0x36, 0x6c, 0xc4, 0xf1, 0x77, 0xd9,
-0xb2, 0xcf, 0x96, 0x2c, 0x16, 0xf8, 0x78, 0xd1,
-0xc7, 0x40, 0x81, 0x3f, 0x5c, 0x80, 0xc0, 0x17,
-0x97, 0x60, 0xfd, 0x0e, 0x15, 0x16, 0xfc, 0x56,
-0x91, 0xa1, 0x18, 0x18, 0x12, 0x66, 0x68, 0x6a,
-0x15, 0x16, 0x11, 0x55, 0x52, 0x5a, 0xd9, 0x0f,
-0x1e, 0x2f, 0xf5, 0x18, 0x32, 0x30, 0x34, 0x04,
-0x7d, 0x9e, 0x67, 0xe3, 0x5b, 0xbf, 0xd9, 0x96,
-0x9a, 0x9e, 0xc1, 0x64, 0x5a, 0x78, 0x7a, 0xfb,
-0x67, 0xb3, 0x0b, 0x00, 0x7f, 0x27, 0xde, 0xd0,
-0x65, 0x7c, 0x00, 0xeb, 0x59, 0xf0, 0xc1, 0xec,
-0x2e, 0x84, 0xe0, 0xd2, 0x4f, 0x43, 0xc2, 0x42,
-0x4b, 0xcb, 0x2b, 0x2b, 0xab, 0xeb, 0xfa, 0xfa,
-0x07, 0xa9, 0x92, 0x7a, 0xc0, 0xe7, 0x1f, 0x7f,
-0xf5, 0xaa, 0xe9, 0x45, 0x6b, 0x79, 0x65, 0x75,
-0x4d, 0x5d, 0x9d, 0xd6, 0x63, 0x6d, 0x51, 0x51,
-0x51, 0xaa, 0x64, 0x19, 0xc0, 0x32, 0x59, 0xd9,
-0x13, 0x71, 0x09, 0x89, 0xc1, 0x21, 0x61, 0xaa,
-0x6a, 0x8f, 0x1e, 0x28, 0x30, 0x54, 0xd4, 0x34,
-0x0d, 0x99, 0x2c, 0x2f, 0xbf, 0x20, 0x76, 0x5e,
-0x7e, 0x6b, 0x7b, 0x27, 0xd5, 0xfc, 0xe0, 0xf0,
-0xe8, 0xc8, 0xce, 0x9d, 0xdf, 0xcd, 0x7a, 0xb6,
-0xc1, 0x53, 0x4a, 0xcb, 0x4c, 0x07, 0x1c, 0x77,
-0x73, 0xf7, 0xc9, 0x61, 0x17, 0xb5, 0x77, 0x74,
-0xd3, 0x14, 0x2e, 0x98, 0xfa, 0x79, 0xca, 0xca,
-0xca, 0x1a, 0x8f, 0x63, 0x80, 0x91, 0x0b, 0xfc,
-0x36, 0x63, 0xe3, 0x8c, 0xdd, 0x09, 0x09, 0x09,
-0x39, 0xbb, 0xba, 0x87, 0x84, 0x85, 0x33, 0x18,
-0xca, 0x00, 0xc1, 0xaa, 0xea, 0x9a, 0xa6, 0xe6,
-0x56, 0x3e, 0xbe, 0x81, 0x59, 0xd9, 0x05, 0x75,
-0xf5, 0x4d, 0x03, 0x43, 0x23, 0x33, 0xd0, 0x1f,
-0xe0, 0xb8, 0xbc, 0xa2, 0x6a, 0xc7, 0x8e, 0xef,
-0x50, 0x15, 0x71, 0xac, 0x8a, 0x1a, 0x76, 0xff,
-0xa0, 0xff, 0xb0, 0x4c, 0xac, 0x2e, 0x58, 0x88,
-0x3e, 0xe2, 0xaa, 0xfb, 0xf0, 0xff, 0xc8, 0xc7,
-0x5b, 0x80, 0x7d, 0x81, 0xeb, 0xec, 0xbd, 0x27,
-0xdb, 0x2a, 0xf9, 0x4d, 0x7a, 0x46, 0xa6, 0x31,
-0xd3, 0xdc, 0xcd, 0xc3, 0x37, 0x9b, 0x9d, 0xd7,
-0xde, 0x31, 0x47, 0x96, 0xae, 0xe3, 0x13, 0xa7,
-0x79, 0xb6, 0x0c, 0x67, 0x12, 0xbd, 0x0b, 0xe3,
-0x89, 0xab, 0x8d, 0xc3, 0x93, 0xd8, 0xf8, 0xe4,
-0xe7, 0x8d, 0x2f, 0x30, 0x91, 0x12, 0x25, 0xfe,
-0x56, 0xd7, 0x3e, 0x5b, 0xbd, 0x6a, 0x0e, 0x5a,
-0x77, 0xff, 0x81, 0x7c, 0x64, 0x74, 0x8c, 0x99,
-0x85, 0x55, 0x70, 0x68, 0x64, 0x69, 0x79, 0x55,
-0xff, 0xc0, 0x20, 0x92, 0x0a, 0x53, 0x34, 0xd8,
-0x37, 0xd0, 0x2f, 0x23, 0x73, 0x9c, 0xfe, 0x72,
-0x53, 0x5d, 0x77, 0xfa, 0x84, 0x2f, 0xb8, 0x22,
-0xe0, 0x30, 0xf9, 0xf8, 0x07, 0x98, 0x5a, 0x58,
-0x47, 0x44, 0xc6, 0x56, 0x54, 0xd5, 0x0d, 0x0e,
-0xcf, 0xee, 0x3d, 0xe2, 0xf6, 0xfa, 0xcd, 0x1b,
-0x31, 0x8a, 0x28, 0x16, 0x3c, 0x68, 0xbe, 0x7e,
-0xfe, 0x85, 0x9c, 0xe2, 0xa2, 0x92, 0xf2, 0xae,
-0x9e, 0x01, 0x9a, 0x84, 0x85, 0x29, 0x34, 0x91,
-0xf1, 0x0a, 0xdc, 0xbc, 0x4d, 0x73, 0xbd, 0xa8,
-0xe2, 0x3d, 0xd9, 0x82, 0x05, 0x8b, 0x84, 0x65,
-0x9d, 0xc5, 0xb1, 0x54, 0x1a, 0x09, 0x0d, 0x22,
-0x48, 0x8b, 0xea, 0x41, 0x91, 0x68, 0xa5, 0xd1,
-0x0b, 0xab, 0x78, 0x02, 0x2c, 0x1f, 0x7a, 0x12,
-0x88, 0x83, 0x2b, 0x9d, 0xd0, 0x4b, 0x1c, 0x90,
-0x8c, 0x8a, 0x40, 0x67, 0x5c, 0x8e, 0x85, 0x89,
-0xb5, 0x7a, 0x79, 0x60, 0xad, 0xc5, 0x95, 0x22,
-0xe3, 0xca, 0x2b, 0x3e, 0x32, 0xbb, 0x49, 0xab,
-0x0f, 0x4f, 0xbc, 0x25, 0xf3, 0x8f, 0x88, 0xce,
-0x68, 0xf1, 0xe4, 0x58, 0x58, 0xd0, 0x9b, 0xab,
-0x40, 0xd6, 0xe2, 0xbe, 0x3d, 0x41, 0xb3, 0x03,
-0x2f, 0xae, 0xc5, 0x1f, 0xac, 0x86, 0xae, 0x4a,
-0x68, 0x12, 0x99, 0x4d, 0x78, 0x08, 0x9d, 0xac,
-0x58, 0x85, 0xff, 0x56, 0x9c, 0x1b, 0x97, 0xc6,
-0x8f, 0x85, 0x54, 0x88, 0x4d, 0xd3, 0x63, 0x13,
-0x9d, 0xec, 0x27, 0xdd, 0x09, 0x7e, 0xa6, 0xcc,
-0xcf, 0xfd, 0xc5, 0x79, 0x51, 0x6e, 0x0c, 0x9d,
-0x31, 0xfe, 0x8b, 0x52, 0x9b, 0x35, 0xb0, 0x97,
-0x43, 0x61, 0xbc, 0x1e, 0x8f, 0xa8, 0x4f, 0xab,
-0x91, 0x85, 0x2a, 0x45, 0x37, 0x8b, 0x32, 0x1a,
-0x44, 0x15, 0x6a, 0xc5, 0xee, 0x96, 0x88, 0xdf,
-0xe5, 0x88, 0x5e, 0x4b, 0x17, 0xbd, 0x1c, 0x2b,
-0x72, 0x3a, 0x70, 0xa3, 0xac, 0xdb, 0xba, 0xc3,
-0x36, 0x62, 0xc7, 0x2c, 0xa2, 0x32, 0x6b, 0xfe,
-0xe6, 0xb5, 0xb0, 0x1a, 0x9a, 0x9a, 0xf6, 0x1f,
-0x38, 0xf8, 0xdd, 0xf7, 0xff, 0x3c, 0x24, 0x75,
-0xe4, 0xd4, 0xd9, 0xf3, 0x57, 0xe4, 0x6e, 0xde,
-0x07, 0x0a, 0xa3, 0xa6, 0xfe, 0x48, 0x43, 0x4b,
-0x49, 0x53, 0x17, 0x16, 0xe4, 0x15, 0x19, 0x57,
-0xe4, 0x6e, 0x9d, 0x3c, 0x75, 0xee, 0x47, 0xa9,
-0xc3, 0xdf, 0xef, 0xda, 0x2d, 0x29, 0x29, 0x29,
-0x26, 0x2e, 0x2e, 0xbc, 0x76, 0xed, 0xe7, 0x2b,
-0xd7, 0xa0, 0x42, 0x1c, 0xd8, 0x14, 0x30, 0x5e,
-0x88, 0x03, 0xe5, 0x02, 0x7f, 0x40, 0xbc, 0x11,
-0xe9, 0xb7, 0x8e, 0x8d, 0xe0, 0xee, 0xde, 0xbe,
-0x73, 0x27, 0x22, 0x3a, 0xd2, 0x88, 0x69, 0x16,
-0x14, 0x1c, 0x59, 0xfc, 0xb4, 0x1c, 0xd0, 0x8d,
-0xe6, 0xc9, 0x1d, 0x7b, 0x35, 0xbe, 0x67, 0xcf,
-0x0f, 0xf3, 0x6c, 0x1c, 0x1e, 0xcc, 0xb4, 0xac,
-0x4c, 0x96, 0x9d, 0x93, 0x6f, 0x40, 0x48, 0x7e,
-0x61, 0x71, 0x67, 0x57, 0xef, 0x6b, 0xea, 0xf8,
-0x33, 0x18, 0x30, 0x82, 0x59, 0xfb, 0x0f, 0x48,
-0x77, 0xe4, 0xa8, 0x74, 0x45, 0x55, 0x4d, 0x46,
-0x56, 0xce, 0xf3, 0xc6, 0x96, 0xd1, 0xb1, 0x71,
-0xaa, 0x9c, 0xd0, 0xb7, 0x93, 0xef, 0xfa, 0xfa,
-0x87, 0x1a, 0x9b, 0xdb, 0xaa, 0x6a, 0xea, 0xae,
-0xca, 0xdd, 0x98, 0xf3, 0x6c, 0x40, 0xcb, 0x1b,
-0xbe, 0xd8, 0xe0, 0xe2, 0xea, 0x16, 0x9f, 0x98,
-0xc8, 0x50, 0x56, 0x91, 0x57, 0x78, 0xa8, 0xa9,
-0xad, 0x6b, 0x67, 0xff, 0x24, 0x22, 0x2a, 0xae,
-0xaa, 0xf6, 0x19, 0x8c, 0x2d, 0x54, 0x3b, 0x02,
-0xd4, 0xe3, 0x4f, 0x05, 0x22, 0xed, 0xeb, 0x7f,
-0x48, 0x66, 0xb3, 0xd9, 0xba, 0x86, 0x86, 0xce,
-0x6e, 0xde, 0x59, 0xec, 0xfc, 0xb6, 0xf6, 0xae,
-0x57, 0xd4, 0x49, 0xa6, 0xc0, 0x2c, 0x1c, 0x9d,
-0x5c, 0xfe, 0xe0, 0x28, 0xb4, 0x7e, 0xdd, 0x17,
-0x61, 0x91, 0x51, 0xde, 0xbe, 0x01, 0x8a, 0x8a,
-0x0f, 0x15, 0x14, 0x14, 0xd5, 0x35, 0x1f, 0x9b,
-0x99, 0xb3, 0xfc, 0x83, 0x42, 0xb3, 0x72, 0x72,
-0x1b, 0x9b, 0x5f, 0x0e, 0x0d, 0x8f, 0xbc, 0xc3,
-0x0a, 0x73, 0xf2, 0xef, 0x37, 0x2d, 0x33, 0x6b,
-0xf3, 0x97, 0x7f, 0xcd, 0x98, 0x39, 0xa7, 0x6d,
-0x96, 0xd8, 0x9c, 0x9a, 0x96, 0xce, 0xb2, 0x75,
-0xf4, 0xf1, 0x0f, 0xce, 0xcd, 0xe3, 0xb4, 0x77,
-0x75, 0xd3, 0x09, 0xd8, 0xfe, 0xef, 0x17, 0x0f,
-0x9f, 0xf9, 0x16, 0xa3, 0x86, 0x9b, 0x01, 0x88,
-0x24, 0x34, 0xeb, 0xe4, 0xea, 0x99, 0x98, 0x9c,
-0xd6, 0xd8, 0xdc, 0x82, 0x5e, 0xee, 0x40, 0x4d,
-0x12, 0x9b, 0x9a, 0x9b, 0x85, 0xe7, 0x2a, 0x48,
-0x2e, 0x77, 0xe3, 0x66, 0x54, 0x5c, 0x82, 0xb1,
-0xa9, 0x05, 0x9c, 0xf0, 0xa7, 0x65, 0x95, 0xd8,
-0x8b, 0x0f, 0x28, 0x9f, 0x9d, 0xe1, 0xd1, 0xe1,
-0x93, 0xf3, 0xce, 0x96, 0xfa, 0x4d, 0x06, 0x4f,
-0xb1, 0xba, 0xa6, 0x46, 0x50, 0x68, 0x38, 0x13,
-0xd5, 0x2d, 0x89, 0x2a, 0xaf, 0x44, 0xf8, 0x3b,
-0x45, 0x1b, 0x37, 0x96, 0x94, 0x9c, 0xbd, 0x6e,
-0x27, 0x38, 0x90, 0xe0, 0xe4, 0xa6, 0x65, 0xb0,
-0xeb, 0xea, 0x9b, 0x47, 0x68, 0x6b, 0x4e, 0xbe,
-0x7d, 0x3b, 0x09, 0x5f, 0x48, 0x4c, 0x4e, 0x7e,
-0xaf, 0xfe, 0x18, 0xbd, 0xad, 0xd8, 0x76, 0x0b,
-0xd5, 0xa2, 0x44, 0xd5, 0x20, 0x67, 0x96, 0xb4,
-0x22, 0x51, 0x8c, 0x1f, 0x6e, 0x28, 0x15, 0x47,
-0xd3, 0xb3, 0x78, 0x66, 0x6a, 0xb4, 0x90, 0xc4,
-0xba, 0x17, 0x17, 0x2d, 0x23, 0x0d, 0x95, 0x16,
-0x2a, 0xd0, 0xc1, 0xab, 0x52, 0xf5, 0xab, 0xba,
-0xd3, 0x33, 0x45, 0x53, 0x64, 0x95, 0x2a, 0xed,
-0x69, 0x82, 0x2b, 0xb4, 0xaa, 0xd1, 0x4b, 0xaf,
-0x83, 0xe2, 0x2f, 0xe1, 0x85, 0x2b, 0xac, 0xbe,
-0xd4, 0xee, 0xc5, 0x6b, 0x70, 0x71, 0x03, 0xec,
-0x98, 0xb2, 0x8b, 0xaf, 0xe0, 0x15, 0xa1, 0xec,
-0xc2, 0xaa, 0x5d, 0x91, 0x0d, 0x92, 0x9f, 0x4e,
-0x2b, 0xf0, 0x85, 0x5e, 0x39, 0x01, 0x9e, 0x43,
-0x37, 0x56, 0xcc, 0x84, 0xa7, 0x0a, 0xe3, 0x95,
-0xe1, 0xe2, 0x2a, 0xc7, 0x90, 0xff, 0xc0, 0xcf,
-0x82, 0x55, 0x3b, 0xc4, 0x95, 0x5f, 0x88, 0xa0,
-0x89, 0xe0, 0x6a, 0xd1, 0xbb, 0xc5, 0x12, 0xb7,
-0xd8, 0xe2, 0x57, 0x53, 0x44, 0x81, 0x02, 0x9f,
-0xf2, 0xda, 0x70, 0xcc, 0x61, 0xed, 0x61, 0x0b,
-0x15, 0xab, 0x98, 0xd7, 0xd4, 0x9e, 0xdb, 0xdf,
-0xc1, 0xc2, 0x23, 0xa3, 0xb6, 0x6d, 0xdb, 0xb1,
-0x7b, 0xcf, 0xde, 0xa3, 0xd2, 0x40, 0x7e, 0xaf,
-0xde, 0xbd, 0x27, 0xaf, 0xa4, 0xa2, 0xae, 0xa2,
-0x65, 0xa8, 0x6f, 0x60, 0xf4, 0x58, 0xd7, 0x58,
-0x4d, 0x53, 0xe7, 0x36, 0x43, 0xf5, 0xe6, 0xad,
-0x3b, 0x67, 0xce, 0x5d, 0x94, 0x3a, 0x7c, 0x64,
-0xd7, 0xbf, 0xf6, 0x6c, 0xdd, 0xba, 0x15, 0x5c,
-0xd6, 0xb5, 0xeb, 0xd6, 0xad, 0x5a, 0xbd, 0x7a,
-0xf9, 0xf2, 0xe5, 0x82, 0x82, 0x82, 0xf8, 0xeb,
-0x80, 0x17, 0x2d, 0x5c, 0xf4, 0xd1, 0x87, 0x1f,
-0x01, 0x49, 0x21, 0x6b, 0x61, 0xfd, 0x26, 0x16,
-0x0c, 0x5f, 0xbe, 0x72, 0xf5, 0x5a, 0x54, 0xcc,
-0xff, 0x33, 0x77, 0xdd, 0x51, 0x51, 0x5c, 0x5d,
-0xfc, 0x9f, 0x2f, 0x45, 0x4d, 0x62, 0x47, 0x9a,
-0x25, 0xd4, 0x05, 0x14, 0xa3, 0x31, 0x92, 0xc4,
-0x44, 0x8c, 0x1a, 0x5b, 0x62, 0x10, 0xe5, 0x4b,
-0xfc, 0x10, 0x35, 0x46, 0x63, 0x01, 0x14, 0x69,
-0xd2, 0x7b, 0xef, 0x45, 0x7a, 0x51, 0x90, 0xde,
-0xdb, 0xb2, 0x2c, 0x48, 0xef, 0x28, 0x76, 0x50,
-0x94, 0x5e, 0x64, 0x97, 0xa5, 0x85, 0x2a, 0x96,
-0x9c, 0xf3, 0xbd, 0x37, 0x6f, 0x76, 0x18, 0x16,
-0x76, 0x58, 0x8d, 0x68, 0x38, 0xf7, 0xec, 0x99,
-0x9d, 0x9d, 0x79, 0xf3, 0x66, 0x98, 0x99, 0xdf,
-0xfb, 0xdd, 0x77, 0xef, 0xef, 0xa6, 0xd9, 0xd8,
-0x39, 0x47, 0xc5, 0x24, 0x56, 0x55, 0x03, 0xfc,
-0xed, 0xa5, 0xc8, 0x21, 0x1d, 0x7b, 0x36, 0xb1,
-0x77, 0xef, 0x4f, 0x02, 0x36, 0x2e, 0x21, 0x21,
-0x55, 0x54, 0x5a, 0x1a, 0x15, 0x93, 0x90, 0x49,
-0xcf, 0xa9, 0xbd, 0xf5, 0x80, 0xc5, 0xe6, 0x4c,
-0x50, 0x66, 0xa7, 0x06, 0x87, 0x84, 0xcc, 0xe8,
-0xd7, 0x85, 0xa5, 0x1c, 0x02, 0x83, 0x8a, 0xcb,
-0xaa, 0xf2, 0x0b, 0xcb, 0xda, 0x3a, 0x3a, 0x29,
-0x48, 0xf4, 0xf0, 0xc8, 0x18, 0x8b, 0xdd, 0xd3,
-0xda, 0xd6, 0x76, 0x44, 0x5d, 0x83, 0x3a, 0xc3,
-0x82, 0x6c, 0xe2, 0xa2, 0xe2, 0x6e, 0xee, 0x1e,
-0xa9, 0xe9, 0xe9, 0x7a, 0x06, 0x86, 0x17, 0xf5,
-0x2e, 0x81, 0x4b, 0x11, 0x16, 0x1e, 0x5d, 0x5a,
-0x5e, 0x0d, 0x15, 0x05, 0xc7, 0x66, 0x0e, 0xfe,
-0x6c, 0x6c, 0x6e, 0x06, 0x14, 0x78, 0x7a, 0x53,
-0x34, 0x59, 0xb9, 0xdc, 0x82, 0x42, 0x2b, 0x5b,
-0xc7, 0x80, 0xe0, 0xf0, 0xfc, 0xc2, 0x92, 0xd6,
-0x76, 0x58, 0xf5, 0x89, 0xe2, 0x94, 0x01, 0xd7,
-0xf8, 0x87, 0xaf, 0x20, 0xf0, 0x1f, 0x54, 0x90,
-0x57, 0x48, 0xcd, 0x4c, 0x0f, 0x0d, 0xbb, 0x72,
-0x4e, 0xf3, 0xfc, 0x05, 0x1d, 0x7d, 0x63, 0x13,
-0x4b, 0x37, 0x0f, 0xef, 0x6b, 0xd1, 0xf1, 0x65,
-0x15, 0xd5, 0x8d, 0xcd, 0xad, 0x50, 0x76, 0x7b,
-0xea, 0xab, 0x18, 0xfc, 0x7f, 0xe9, 0x8c, 0x1c,
-0x51, 0x11, 0xb1, 0x77, 0x96, 0xb0, 0x29, 0xb8,
-0x7d, 0xbe, 0x46, 0x22, 0xf7, 0x7a, 0x7e, 0x64,
-0x54, 0x7c, 0x7a, 0x66, 0x4e, 0xcd, 0xcd, 0xbb,
-0xec, 0x9e, 0xde, 0xd1, 0x31, 0x2a, 0xfe, 0x1b,
-0x9f, 0x98, 0x2c, 0xe0, 0x3f, 0x1a, 0xc0, 0x84,
-0xa3, 0xb3, 0x73, 0x16, 0x23, 0x27, 0x2e, 0x31,
-0xa5, 0xb8, 0xb4, 0xaa, 0xad, 0xbd, 0x73, 0x78,
-0x64, 0x84, 0x62, 0x92, 0xb4, 0xb5, 0xbd, 0x4d,
-0x4a, 0x4a, 0x86, 0xba, 0x4d, 0x75, 0x75, 0x75,
-0x7a, 0x4e, 0xae, 0x8d, 0x83, 0x4b, 0x44, 0x54,
-0xec, 0x8d, 0xda, 0x3b, 0xec, 0x1e, 0x88, 0xbf,
-0xfc, 0xda, 0x04, 0x63, 0xd7, 0x23, 0x1a, 0x73,
-0xa5, 0xd0, 0x78, 0x4e, 0x13, 0x30, 0xf1, 0x34,
-0x7b, 0x27, 0xb7, 0x98, 0xf8, 0xe4, 0xda, 0x3b,
-0x0f, 0x7a, 0x7a, 0x07, 0x28, 0xe2, 0xc6, 0xc1,
-0xa0, 0xf2, 0xdb, 0x6f, 0xb7, 0xcc, 0xd8, 0x8e,
-0xbe, 0xbe, 0xc1, 0xfd, 0xba, 0xfa, 0xaa, 0xea,
-0xda, 0x8e, 0x2e, 0xd6, 0xd0, 0x30, 0x5f, 0x29,
-0x78, 0xe8, 0x7c, 0x1e, 0x7e, 0xd6, 0xdb, 0xdf,
-0x7f, 0xe6, 0xec, 0xb9, 0xf7, 0x78, 0xb7, 0x2c,
-0x5c, 0xbd, 0x09, 0x96, 0x0c, 0xe0, 0x4e, 0xf8,
-0xe2, 0x24, 0x0e, 0x8f, 0x2c, 0xc2, 0x68, 0x1d,
-0x06, 0x1c, 0x6b, 0x4d, 0x27, 0x25, 0xad, 0x30,
-0x75, 0x29, 0xf4, 0x95, 0x43, 0x84, 0x63, 0xc9,
-0x4c, 0x09, 0x4c, 0x9a, 0x12, 0x61, 0x45, 0x4c,
-0xaa, 0x4e, 0x8a, 0x6f, 0xe0, 0xed, 0x70, 0x48,
-0xde, 0x5a, 0x54, 0x7f, 0x10, 0x9f, 0x9f, 0x45,
-0x81, 0xc7, 0x28, 0x25, 0x0a, 0x6a, 0x4f, 0xa1,
-0x6a, 0x0e, 0xa6, 0xbd, 0x44, 0xea, 0x10, 0x69,
-0x62, 0x1a, 0x75, 0x80, 0x83, 0xdc, 0xc5, 0xdc,
-0x22, 0x11, 0x6c, 0x1a, 0x11, 0x76, 0x05, 0x29,
-0x7c, 0x0f, 0x6c, 0xc1, 0x84, 0x54, 0x95, 0x09,
-0xd3, 0x76, 0xe6, 0x46, 0x94, 0x71, 0x05, 0xaf,
-0x48, 0x73, 0xc1, 0x93, 0xfd, 0xe4, 0x4e, 0x1c,
-0x63, 0x8c, 0x1e, 0xe7, 0xb9, 0x48, 0x33, 0x04,
-0x75, 0x15, 0xcd, 0xfc, 0x62, 0xd5, 0x91, 0x38,
-0x93, 0x9e, 0x7c, 0x53, 0x5c, 0x58, 0x7b, 0x1d,
-0x46, 0xc0, 0x61, 0x30, 0x39, 0xe8, 0x06, 0x24,
-0xc5, 0x6c, 0xa2, 0x82, 0x21, 0xbc, 0xec, 0x7a,
-0x8d, 0x80, 0x05, 0xcb, 0x6a, 0xd5, 0x4a, 0x9d,
-0xbe, 0x21, 0x73, 0xa2, 0x48, 0x5a, 0x23, 0x4b,
-0xea, 0xd7, 0x38, 0x40, 0x81, 0xd7, 0xec, 0x73,
-0xdf, 0x7e, 0x2a, 0xa4, 0x8b, 0x3d, 0xf8, 0xde,
-0x41, 0x96, 0xef, 0xfd, 0xff, 0xea, 0x85, 0x93,
-0x93, 0xf3, 0x97, 0x9b, 0x36, 0x6f, 0xdf, 0xf1,
-0xe3, 0x01, 0x55, 0xb5, 0x63, 0xc7, 0x4f, 0x6a,
-0x5d, 0xd0, 0x35, 0x36, 0xb1, 0xb0, 0xb5, 0x77,
-0xb0, 0x76, 0xf4, 0x72, 0x70, 0x74, 0xb2, 0xb6,
-0xb1, 0x37, 0x34, 0x32, 0x3f, 0xa7, 0xa5, 0xa3,
-0xa6, 0xfe, 0xc7, 0xde, 0x7d, 0xbf, 0x6c, 0x55,
-0xde, 0xf9, 0xd5, 0x26, 0x25, 0x05, 0x05, 0x05,
-0x34, 0x05, 0x2c, 0x24, 0x24, 0x04, 0x13, 0x81,
-0xb1, 0x72, 0x48, 0xf3, 0xe7, 0xcd, 0x47, 0x5a,
-0x58, 0x84, 0x73, 0xf2, 0x75, 0x67, 0x81, 0x55,
-0x0f, 0x1e, 0xca, 0xc2, 0x32, 0x3e, 0x22, 0xa2,
-0x63, 0xc1, 0x73, 0xd7, 0xcd, 0xa6, 0xc2, 0x5f,
-0xf0, 0x72, 0x51, 0x55, 0x3d, 0x24, 0x60, 0xcb,
-0x2b, 0xc5, 0x57, 0x55, 0x56, 0x57, 0x17, 0x16,
-0x95, 0x55, 0xd7, 0xdc, 0x78, 0xfc, 0xa4, 0x75,
-0x60, 0x70, 0x84, 0xc2, 0x3b, 0x07, 0x2c, 0x2e,
-0x3e, 0x7e, 0xc6, 0xb4, 0x08, 0x49, 0x09, 0xc9,
-0xaa, 0xea, 0x9a, 0x8c, 0x2c, 0x66, 0x59, 0x45,
-0xcd, 0x53, 0x56, 0xcf, 0x28, 0xff, 0x80, 0xcc,
-0xfe, 0x81, 0x81, 0xde, 0xbe, 0x3e, 0x2f, 0x6f,
-0xcf, 0xd7, 0xd5, 0x81, 0x17, 0x13, 0x15, 0x07,
-0x6f, 0xe6, 0x80, 0xd0, 0x50, 0xed, 0x0b, 0x17,
-0x4d, 0x4c, 0x2d, 0xbd, 0x7d, 0xfc, 0x33, 0xe9,
-0xcc, 0xba, 0x87, 0xb0, 0x4a, 0xdd, 0x8c, 0xaf,
-0xa0, 0x89, 0x17, 0xcf, 0x8d, 0x8c, 0x4c, 0x66,
-0xe8, 0xaa, 0xa4, 0x14, 0x3d, 0x87, 0x69, 0x65,
-0x6b, 0xeb, 0x1f, 0x10, 0x72, 0x3d, 0xbf, 0xb8,
-0xa5, 0xbd, 0x63, 0x64, 0x64, 0x82, 0xe2, 0x25,
-0x9f, 0x98, 0x9c, 0xf6, 0x56, 0x5e, 0x44, 0xca,
-0xdb, 0xb6, 0x97, 0x96, 0x57, 0xd8, 0x39, 0x3a,
-0x69, 0x69, 0x9d, 0xbf, 0x70, 0xd1, 0xd0, 0xd4,
-0xcc, 0xc6, 0xd3, 0x2b, 0x20, 0x31, 0x25, 0xbd,
-0xb2, 0xa6, 0xb6, 0xad, 0xfd, 0xe9, 0xf0, 0xc8,
-0x28, 0x4f, 0x52, 0xf3, 0xc4, 0x8b, 0x17, 0x80,
-0x0c, 0x2e, 0x13, 0xb8, 0x78, 0xee, 0x3b, 0x33,
-0x71, 0xf1, 0x95, 0x79, 0xf9, 0xf9, 0x80, 0xbc,
-0x57, 0x56, 0xd6, 0x3e, 0x69, 0x6a, 0x1b, 0x18,
-0x1c, 0xa4, 0x1e, 0xb3, 0xd1, 0x19, 0xf4, 0x59,
-0xb3, 0x84, 0x90, 0x81, 0xc1, 0x86, 0xa5, 0xb5,
-0xcd, 0xcd, 0x5b, 0xb7, 0xc1, 0x40, 0xee, 0x7e,
-0x5d, 0x43, 0x4f, 0x6f, 0xdf, 0xd8, 0x18, 0x15,
-0xb3, 0xee, 0xea, 0xea, 0x5e, 0xb7, 0x6e, 0x3d,
-0x75, 0x9b, 0x2a, 0x2a, 0x07, 0xb2, 0x19, 0xb9,
-0xd6, 0xb6, 0x0e, 0x11, 0xd7, 0x60, 0xb8, 0x7b,
-0x37, 0x8b, 0x4d, 0x3d, 0xff, 0x7b, 0xe2, 0xd4,
-0x2c, 0x35, 0x95, 0xde, 0xd8, 0x8e, 0x1c, 0x39,
-0x9a, 0x91, 0x9d, 0xe5, 0xe0, 0xec, 0x0a, 0xf0,
-0xb7, 0xfa, 0xd6, 0x6d, 0x4e, 0x5f, 0xdf, 0x04,
-0xff, 0xa4, 0x5d, 0x60, 0x3b, 0x66, 0x8a, 0x58,
-0xfe, 0xe4, 0x93, 0x4f, 0xd2, 0xb3, 0xe8, 0x77,
-0xee, 0xd6, 0xd5, 0xd5, 0x37, 0x40, 0x3f, 0xd8,
-0x04, 0xff, 0x5c, 0xaa, 0x17, 0x2f, 0x47, 0x46,
-0x46, 0x1f, 0xd4, 0xd7, 0x2b, 0x2a, 0xce, 0x72,
-0x89, 0xe6, 0xd4, 0xe6, 0x2f, 0x14, 0x95, 0x3e,
-0x57, 0x83, 0x9c, 0xb1, 0x6b, 0x8d, 0xdb, 0x27,
-0xa7, 0x5c, 0x21, 0x68, 0xf6, 0xa2, 0x82, 0x47,
-0xb2, 0x48, 0x67, 0xc3, 0xb8, 0x9b, 0x90, 0xb4,
-0xc2, 0x93, 0x67, 0x51, 0xd6, 0x2d, 0xee, 0x9d,
-0xe6, 0xfa, 0x93, 0x71, 0x2e, 0x09, 0x95, 0x37,
-0x88, 0xa2, 0x09, 0x93, 0x9c, 0x14, 0xf3, 0x18,
-0x83, 0xc6, 0xa7, 0x48, 0x4b, 0x4d, 0xce, 0xa5,
-0xce, 0x98, 0x43, 0x04, 0x21, 0x4f, 0x9e, 0x5b,
-0x08, 0x98, 0xd8, 0x77, 0x12, 0xbb, 0x49, 0x8a,
-0x1f, 0x48, 0xe1, 0x4a, 0x0e, 0x0f, 0xaf, 0xea,
-0xc6, 0x05, 0xaf, 0x60, 0x61, 0x41, 0xf2, 0xcc,
-0x32, 0x69, 0x62, 0x1a, 0x1d, 0xce, 0x78, 0xf2,
-0x70, 0xa8, 0x93, 0x5c, 0x28, 0xef, 0xc3, 0xa8,
-0x3a, 0xa1, 0x37, 0x42, 0x38, 0xcf, 0x7b, 0x91,
-0x7a, 0x27, 0x76, 0x44, 0xcc, 0x67, 0x6e, 0xc4,
-0xc2, 0x87, 0x19, 0xd8, 0xfc, 0x32, 0x9c, 0xa4,
-0xc6, 0x16, 0x68, 0x66, 0x7d, 0x72, 0x66, 0x78,
-0x05, 0x46, 0x4c, 0xd8, 0x84, 0x45, 0x92, 0x89,
-0x06, 0x14, 0xb8, 0x49, 0x46, 0xf7, 0x89, 0xac,
-0xf6, 0x5d, 0xd9, 0xb3, 0x35, 0x32, 0xa7, 0x2a,
-0x68, 0xbf, 0x33, 0xa4, 0xd5, 0x93, 0x24, 0x55,
-0xc3, 0x24, 0xf6, 0x5f, 0x96, 0x3e, 0xe0, 0x7b,
-0xf7, 0x51, 0xe7, 0xfb, 0x05, 0x59, 0x0a, 0x1b,
-0x9f, 0x98, 0x00, 0x54, 0x4b, 0xe9, 0xeb, 0x6f,
-0x7f, 0xdc, 0xf5, 0x93, 0xda, 0x7f, 0x7f, 0x3b,
-0x71, 0x46, 0x4b, 0xd7, 0xd0, 0xc4, 0xc6, 0xd6,
-0xd1, 0xce, 0xc5, 0xcf, 0xdd, 0xcb, 0xd7, 0xd9,
-0xd3, 0xdf, 0xd6, 0xc9, 0xc3, 0xcc, 0xdc, 0x46,
-0xfb, 0xa2, 0xde, 0xef, 0x27, 0x4e, 0xab, 0xa8,
-0xaa, 0xed, 0xd8, 0xb9, 0x0b, 0xcb, 0x42, 0x52,
-0x94, 0x92, 0x92, 0x5e, 0xb3, 0xe6, 0x73, 0x61,
-0x61, 0x61, 0x80, 0xbf, 0x8b, 0x17, 0x2e, 0x41,
-0x5a, 0x58, 0x90, 0xff, 0x62, 0x5e, 0x68, 0x54,
-0x0e, 0x09, 0xdd, 0x99, 0x82, 0xa3, 0xf0, 0xae,
-0x1f, 0x77, 0x67, 0x66, 0xe7, 0xd8, 0xda, 0xbb,
-0x00, 0xd2, 0x51, 0x5a, 0x05, 0xbd, 0xc4, 0xe3,
-0xe3, 0xcf, 0xf8, 0x41, 0x06, 0x60, 0x52, 0x1a,
-0x1a, 0x47, 0x05, 0x6c, 0x79, 0x85, 0xd0, 0x8a,
-0xf2, 0xca, 0xaa, 0xa6, 0x96, 0xb6, 0xce, 0x2e,
-0x16, 0x40, 0x46, 0x18, 0xcb, 0x41, 0x29, 0x8d,
-0x92, 0x9a, 0x9e, 0xb9, 0x68, 0x26, 0x91, 0x3d,
-0x70, 0x44, 0x40, 0x2e, 0x12, 0x93, 0x33, 0x6a,
-0x6f, 0x3f, 0xe0, 0xf4, 0x0e, 0xf2, 0xf3, 0x09,
-0x4f, 0x4c, 0xbc, 0x18, 0x1d, 0x1f, 0x03, 0x88,
-0xbf, 0x7a, 0xf5, 0x9a, 0x37, 0x78, 0x96, 0xb7,
-0x2a, 0x6f, 0xcb, 0x2f, 0x2e, 0xb2, 0xb6, 0x73,
-0xd0, 0xd1, 0x37, 0xb2, 0x71, 0x70, 0x8b, 0x8d,
-0x4b, 0xae, 0xb9, 0x09, 0x18, 0x0d, 0xdf, 0x29,
-0xb0, 0x92, 0xb2, 0xf2, 0xa5, 0xd3, 0xa4, 0xc0,
-0x56, 0xae, 0x5c, 0x9d, 0xc9, 0xc8, 0xb6, 0xb3,
-0x77, 0xbe, 0xec, 0x17, 0x44, 0x67, 0x16, 0x63,
-0x4e, 0x4e, 0xaa, 0x24, 0xd3, 0x9c, 0xdc, 0xdc,
-0xb7, 0xf2, 0x22, 0xfa, 0xe0, 0x3f, 0x1f, 0x6c,
-0xd9, 0xf2, 0x1d, 0x38, 0x77, 0x57, 0x37, 0x77,
-0x2d, 0x2d, 0xed, 0xf3, 0x3a, 0x06, 0xa6, 0xe6,
-0xd6, 0x5e, 0x9e, 0x41, 0x09, 0x49, 0xa9, 0x95,
-0x35, 0xb7, 0xdb, 0x3a, 0xba, 0xe1, 0x5c, 0xe7,
-0x54, 0x08, 0x1e, 0x9f, 0x18, 0xf7, 0xf0, 0xf4,
-0xa6, 0x50, 0x35, 0x7c, 0x2f, 0xb6, 0x42, 0x48,
-0x18, 0xe0, 0x6f, 0x4b, 0x5b, 0x7b, 0x7b, 0xe7,
-0x53, 0x4e, 0xff, 0x20, 0x45, 0xfc, 0x0f, 0xb2,
-0xb2, 0xf2, 0x32, 0xf0, 0x14, 0x08, 0xd8, 0xb8,
-0xa9, 0xb9, 0xe5, 0x53, 0x16, 0xab, 0xb5, 0xbd,
-0x83, 0xd3, 0xdb, 0x37, 0x34, 0x34, 0x4c, 0xa1,
-0x33, 0x03, 0x8c, 0xd3, 0xc7, 0x51, 0xda, 0x3c,
-0x83, 0x8b, 0x83, 0x6c, 0x3b, 0x76, 0xee, 0x04,
-0x6c, 0xdd, 0xda, 0xce, 0xe5, 0x4a, 0x64, 0x74,
-0x45, 0xe5, 0xcd, 0xce, 0xee, 0x5e, 0x8a, 0x70,
-0xbb, 0xf1, 0x89, 0x67, 0x7a, 0xfa, 0x06, 0x73,
-0x74, 0xdd, 0xf6, 0xab, 0xfc, 0x92, 0x9b, 0x5f,
-0x68, 0xef, 0xe8, 0x7a, 0x2d, 0x3a, 0xae, 0xaa,
-0xe6, 0x0e, 0x18, 0xa6, 0x52, 0x17, 0x83, 0x3e,
-0x74, 0xe8, 0xf0, 0xf4, 0x46, 0xb6, 0x6e, 0x55,
-0x6e, 0x6e, 0x69, 0x7d, 0xf4, 0xb8, 0xb1, 0x9b,
-0xc5, 0x19, 0x19, 0x1d, 0xa7, 0xb8, 0xf2, 0x2f,
-0x5e, 0xbe, 0x1c, 0x1b, 0x1f, 0x0f, 0x0a, 0x0e,
-0x99, 0xf7, 0xb1, 0x40, 0xd5, 0x48, 0xe7, 0xc8,
-0x3e, 0x9a, 0xb7, 0x78, 0xcd, 0xe1, 0x04, 0x98,
-0x23, 0x43, 0x84, 0x27, 0x21, 0x87, 0x30, 0x14,
-0xc7, 0x40, 0xa9, 0xaf, 0xbd, 0x84, 0xb4, 0x23,
-0x2a, 0xda, 0xcb, 0x8d, 0x70, 0xe6, 0x4c, 0x91,
-0xa5, 0xe2, 0x55, 0xa9, 0x9a, 0x04, 0x44, 0x5c,
-0x4a, 0x0b, 0x01, 0xe8, 0x54, 0xa2, 0x8d, 0xb7,
-0xcc, 0xdd, 0x18, 0xc5, 0x15, 0x13, 0xb9, 0x3c,
-0x48, 0x77, 0x1a, 0x57, 0xc9, 0x20, 0xa2, 0x8e,
-0xb9, 0xdd, 0x20, 0xb0, 0x1b, 0x05, 0x6b, 0x71,
-0xd9, 0x77, 0xef, 0xf4, 0x29, 0xda, 0x29, 0xe1,
-0x58, 0xa6, 0x44, 0x38, 0x56, 0x2f, 0x79, 0x5f,
-0x80, 0x98, 0x04, 0xc4, 0xf3, 0xa0, 0x3f, 0xe1,
-0x8e, 0xc6, 0x3c, 0xde, 0xa8, 0xe2, 0x12, 0x1b,
-0x0d, 0x3f, 0xc0, 0x57, 0x39, 0xae, 0xfc, 0x17,
-0x96, 0x59, 0x0c, 0xcb, 0x1f, 0x43, 0x7d, 0x4b,
-0x73, 0x0e, 0x5a, 0x40, 0x5a, 0x9d, 0x28, 0x2f,
-0x09, 0xa5, 0x54, 0xc3, 0xaf, 0xdc, 0x74, 0x24,
-0x19, 0x83, 0x0e, 0x40, 0x81, 0x31, 0x08, 0xbe,
-0x2d, 0x73, 0xb6, 0x86, 0xf6, 0x47, 0xa1, 0xf4,
-0x91, 0x2c, 0x58, 0x23, 0x58, 0x25, 0x94, 0xa6,
-0xe2, 0x5d, 0x50, 0xd5, 0xf2, 0x7e, 0x41, 0x96,
-0xc2, 0x06, 0x87, 0x86, 0x4e, 0x9d, 0x3e, 0xb3,
-0xe5, 0x3b, 0xe5, 0xbd, 0x3f, 0xfd, 0x72, 0x58,
-0xfd, 0xa8, 0xe6, 0xf9, 0x8b, 0xc6, 0x66, 0xd6,
-0xf6, 0x2e, 0x5e, 0x1e, 0xde, 0x01, 0xbe, 0xfe,
-0x41, 0xde, 0x7e, 0x41, 0xae, 0x9e, 0x7e, 0xb6,
-0xf6, 0xce, 0xfa, 0x06, 0xc6, 0x27, 0xff, 0xd4,
-0x54, 0xfb, 0xf5, 0x7f, 0x7b, 0xf7, 0xfd, 0xfc,
-0xdd, 0xf7, 0x5b, 0x37, 0x6e, 0xfc, 0x52, 0x56,
-0x96, 0x06, 0xf0, 0x57, 0x54, 0x4c, 0x6c, 0xb9,
-0x90, 0x30, 0x78, 0xf9, 0x83, 0x97, 0x27, 0xf2,
-0x42, 0x43, 0x39, 0x4a, 0x2c, 0x48, 0x06, 0xa6,
-0x23, 0x61, 0x4e, 0x45, 0xc1, 0x5d, 0x8b, 0x5b,
-0xbf, 0xdf, 0x86, 0xb2, 0x84, 0xc2, 0xaf, 0x46,
-0x95, 0x94, 0xe3, 0xf8, 0x4b, 0xd1, 0xf9, 0x73,
-0xe7, 0xb4, 0x04, 0x6c, 0x79, 0xd1, 0xa2, 0xc5,
-0xc5, 0x25, 0xa5, 0x7f, 0x0d, 0x41, 0xf5, 0xfe,
-0xf1, 0x67, 0x33, 0x28, 0x5a, 0xf0, 0x18, 0x23,
-0x87, 0xb9, 0x74, 0x5a, 0xc9, 0xdd, 0xf9, 0x1f,
-0xcf, 0xf7, 0xf6, 0xf5, 0x66, 0xe4, 0xe6, 0x27,
-0xa7, 0x65, 0xdf, 0xbe, 0x57, 0x8f, 0x26, 0x34,
-0x67, 0xdc, 0x1d, 0xe0, 0xef, 0x5f, 0x43, 0x43,
-0xfa, 0xfa, 0x06, 0xfc, 0x82, 0xb8, 0xa8, 0x0d,
-0x1c, 0xc8, 0xdc, 0xd2, 0x32, 0x83, 0x4e, 0xd7,
-0x33, 0x30, 0xb6, 0xb0, 0xb4, 0x09, 0xbf, 0x1a,
-0x5d, 0x5c, 0x52, 0x09, 0x63, 0xad, 0xf9, 0xd0,
-0xed, 0x6e, 0x16, 0x6b, 0xf3, 0x57, 0x4a, 0x3c,
-0x8d, 0x88, 0x8a, 0x88, 0xa6, 0x65, 0x64, 0x3a,
-0x3a, 0xb9, 0xf8, 0xfa, 0x05, 0x32, 0x98, 0x05,
-0x4f, 0x9a, 0x9a, 0x87, 0x86, 0x87, 0x29, 0x4e,
-0x19, 0x20, 0xe6, 0xdb, 0x72, 0x02, 0x83, 0xff,
-0xfe, 0xf1, 0xdf, 0x4f, 0xe4, 0xe5, 0x17, 0x58,
-0x5a, 0xd9, 0x6a, 0x9f, 0xbf, 0x08, 0x58, 0x30,
-0x0c, 0xe7, 0xf6, 0x0f, 0x4e, 0xcd, 0x60, 0xdc,
-0xbc, 0x73, 0xbf, 0xa3, 0xab, 0x7b, 0x64, 0x0c,
-0x4f, 0x6a, 0x26, 0x06, 0x57, 0x7d, 0x03, 0x03,
-0xfa, 0x06, 0x86, 0x9f, 0xbe, 0x2b, 0xd9, 0x5e,
-0x41, 0x6c, 0xe9, 0x92, 0xa5, 0x99, 0x74, 0x3a,
-0xb8, 0x68, 0xf0, 0x9e, 0x19, 0x9f, 0xa0, 0x86,
-0x48, 0x74, 0x01, 0xc1, 0x2e, 0x02, 0x36, 0xae,
-0xa7, 0x6f, 0x38, 0x32, 0x3a, 0x36, 0x3c, 0x3c,
-0x3a, 0x3a, 0x36, 0x3e, 0x6b, 0xcb, 0x7d, 0x03,
-0xfd, 0xdb, 0xb6, 0xcd, 0x92, 0xd6, 0xaa, 0xac,
-0xac, 0x5c, 0x54, 0x5c, 0x6c, 0x69, 0x63, 0x1f,
-0x7e, 0xf5, 0x5a, 0x59, 0x45, 0x75, 0xdb, 0x53,
-0x0e, 0x05, 0xfe, 0x82, 0xb1, 0xab, 0x85, 0x95,
-0xf5, 0x1c, 0x5d, 0xb7, 0x9d, 0x3b, 0x77, 0x15,
-0x14, 0x17, 0xd9, 0x3b, 0x3a, 0x45, 0x46, 0xc5,
-0x81, 0x11, 0xd7, 0xd3, 0x6e, 0xd6, 0x8b, 0x17,
-0x7c, 0xb3, 0x08, 0x81, 0x1d, 0x3b, 0x76, 0x82,
-0xa7, 0x05, 0x30, 0x8c, 0xb7, 0xb6, 0xb1, 0x65,
-0x73, 0xfa, 0x59, 0xec, 0xbe, 0xe1, 0x91, 0x51,
-0x0a, 0xd9, 0xed, 0x57, 0x58, 0xe8, 0x02, 0x18,
-0xeb, 0xaa, 0x1e, 0x14, 0xd4, 0x15, 0x36, 0x47,
-0xf6, 0xc1, 0x87, 0x0b, 0xc4, 0xf6, 0x7a, 0x40,
-0x38, 0x40, 0x62, 0xcb, 0x18, 0x71, 0x23, 0xd2,
-0x5d, 0x91, 0xd3, 0x15, 0x5f, 0x30, 0xc5, 0xbd,
-0xc7, 0x08, 0x6e, 0x48, 0x04, 0x16, 0xa6, 0xdc,
-0x92, 0xd5, 0xa2, 0x88, 0xf5, 0x44, 0x84, 0x12,
-0x11, 0x5c, 0x4d, 0x82, 0x36, 0xdc, 0x23, 0x4d,
-0xae, 0xa1, 0x80, 0xef, 0x6b, 0x4c, 0x94, 0x3f,
-0x80, 0x65, 0x1a, 0x70, 0xa1, 0x2d, 0xae, 0xf3,
-0x19, 0x92, 0x71, 0x44, 0xc3, 0xf1, 0x04, 0x5b,
-0x8c, 0x81, 0x62, 0x75, 0x00, 0x01, 0x4c, 0xcb,
-0x18, 0x61, 0x71, 0xd4, 0x46, 0x88, 0xb3, 0xf7,
-0x10, 0x6e, 0x61, 0xe4, 0x73, 0x96, 0xc1, 0x0c,
-0x2f, 0x1a, 0xc8, 0x2d, 0x20, 0x28, 0x8b, 0x44,
-0x38, 0x4d, 0x7a, 0xe4, 0x8c, 0x9e, 0x72, 0x57,
-0xe2, 0x83, 0x01, 0xe2, 0x94, 0x51, 0xd5, 0x09,
-0x54, 0xa6, 0x10, 0xed, 0x02, 0xa3, 0xce, 0xf0,
-0x88, 0x2f, 0x0e, 0x5e, 0x39, 0x82, 0x48, 0xfe,
-0x35, 0xc3, 0x89, 0xbc, 0x9c, 0x29, 0x87, 0x7b,
-0x25, 0x51, 0x91, 0x47, 0x7c, 0x24, 0x40, 0x33,
-0xea, 0x06, 0x64, 0x59, 0xc1, 0xb8, 0x83, 0x76,
-0xa9, 0x53, 0x56, 0xbf, 0x19, 0x40, 0xb0, 0xec,
-0x85, 0x7a, 0x05, 0x2d, 0x40, 0x81, 0xcb, 0xe5,
-0x4f, 0x30, 0xa5, 0x0f, 0x27, 0x48, 0x1e, 0x0c,
-0x97, 0xd8, 0xef, 0x9b, 0x94, 0x77, 0xf7, 0xdd,
-0x03, 0xab, 0x80, 0xc6, 0x62, 0xb3, 0xd4, 0x8f,
-0x68, 0x7c, 0xaf, 0xbc, 0x6d, 0xbf, 0x8a, 0xda,
-0xd1, 0xe3, 0x7f, 0x5c, 0xd4, 0xbf, 0x64, 0x6d,
-0xe7, 0xe8, 0xe6, 0xed, 0x17, 0x10, 0x1c, 0x1e,
-0x72, 0xe5, 0x6a, 0x70, 0x68, 0x24, 0x80, 0x60,
-0x47, 0x37, 0x1f, 0x13, 0x33, 0xab, 0x0b, 0x3a,
-0x7a, 0x00, 0xa0, 0x7f, 0xfe, 0x45, 0x15, 0x6c,
-0xbc, 0xe9, 0x2b, 0xa5, 0x75, 0x6b, 0x15, 0x25,
-0x24, 0x24, 0xc5, 0x57, 0xae, 0x14, 0x16, 0x11,
-0x5d, 0xb6, 0x6c, 0xf9, 0xd2, 0x25, 0x50, 0x0e,
-0x1a, 0x69, 0x71, 0x00, 0xf8, 0x40, 0xb1, 0xa9,
-0xaf, 0x1b, 0x88, 0xb5, 0x59, 0xe9, 0x9b, 0xbc,
-0xc2, 0x02, 0x07, 0x27, 0xd7, 0xd0, 0x2b, 0xd7,
-0x0a, 0x4b, 0xaa, 0x3b, 0xba, 0xa8, 0x32, 0x2e,
-0x81, 0x5d, 0x32, 0x36, 0x11, 0x90, 0x5c, 0x83,
-0xbe, 0x15, 0x16, 0x15, 0x81, 0xe7, 0x58, 0xc0,
-0xcb, 0x52, 0x54, 0x5c, 0x3a, 0x5d, 0x64, 0x0f,
-0x7a, 0x86, 0xb3, 0x19, 0x11, 0x51, 0xb1, 0xa9,
-0x19, 0x39, 0xf7, 0xea, 0x1e, 0x43, 0xda, 0x32,
-0x23, 0x37, 0xff, 0xfb, 0xd5, 0xb3, 0x67, 0x2f,
-0xee, 0xde, 0xbb, 0xa7, 0xa0, 0xb0, 0xf6, 0x8d,
-0x1f, 0x67, 0x1a, 0x4d, 0xae, 0xa8, 0xac, 0xd4,
-0xc6, 0xc1, 0xd1, 0xd8, 0xd4, 0xc2, 0x27, 0x10,
-0x16, 0x95, 0x6b, 0x68, 0x6a, 0xc3, 0x54, 0x0a,
-0x67, 0xd2, 0xe2, 0x18, 0x1f, 0x3b, 0x73, 0x56,
-0x93, 0xe7, 0x52, 0x2c, 0x5f, 0x26, 0x94, 0x94,
-0x92, 0xea, 0xe4, 0xea, 0xee, 0xe1, 0xe3, 0x97,
-0x9d, 0x93, 0xf7, 0xb8, 0xb1, 0x99, 0x5a, 0x89,
-0xb7, 0xf6, 0xce, 0x9d, 0xb7, 0xa8, 0xa5, 0x0c,
-0xee, 0x01, 0x4d, 0x4d, 0x2d, 0x40, 0xcc, 0x4d,
-0xcc, 0x4c, 0xb5, 0xb5, 0x75, 0x74, 0x0d, 0x8c,
-0x2c, 0x6d, 0x1c, 0x02, 0x83, 0x42, 0xb3, 0x19,
-0xb9, 0xb7, 0xef, 0xd6, 0xb3, 0x7a, 0x7a, 0x46,
-0x47, 0x79, 0xe9, 0x64, 0xdf, 0x40, 0x1f, 0x40,
-0x6d, 0x0a, 0x45, 0x91, 0xb7, 0x6b, 0xe4, 0x9b,
-0x73, 0xc6, 0x5b, 0x74, 0xe1, 0x67, 0x0b, 0x53,
-0xd2, 0xd2, 0xa0, 0x04, 0xb7, 0x60, 0xd5, 0x9c,
-0x6f, 0xdd, 0xb9, 0x27, 0xbc, 0x42, 0x58, 0x90,
-0x1b, 0x1e, 0x6c, 0x70, 0xfa, 0xac, 0xe6, 0x8b,
-0x57, 0x30, 0x1c, 0x4d, 0x90, 0xe0, 0xcc, 0x81,
-0xbf, 0x06, 0xf7, 0xec, 0xdd, 0x37, 0xcb, 0xb3,
-0xb3, 0x59, 0xe9, 0x7a, 0x61, 0x91, 0x95, 0xad,
-0x43, 0x48, 0x68, 0x64, 0x69, 0x59, 0x25, 0x18,
-0xe4, 0x50, 0x04, 0x27, 0xc0, 0x59, 0x27, 0x67,
-0x97, 0xd7, 0xba, 0x5c, 0x68, 0x38, 0x0d, 0xc6,
-0x93, 0xb3, 0x0e, 0xd2, 0x94, 0xbe, 0xdd, 0x52,
-0x5a, 0x5e, 0xee, 0xe0, 0xe8, 0x1c, 0x11, 0x19,
-0x53, 0x52, 0x79, 0xab, 0xab, 0xbb, 0x1b, 0xd0,
-0x6d, 0x8a, 0x11, 0xaf, 0xa6, 0x96, 0x36, 0x4f,
-0x9b, 0x62, 0xa2, 0x62, 0x95, 0x55, 0xd5, 0xa3,
-0xb0, 0x26, 0x16, 0x96, 0xdc, 0x37, 0xdb, 0x25,
-0xaa, 0xbd, 0x75, 0x5b, 0x5c, 0x6c, 0xae, 0x64,
-0x58, 0x04, 0xb4, 0x0f, 0xfe, 0xf3, 0x91, 0xe8,
-0x56, 0x7d, 0xda, 0x25, 0x7c, 0xea, 0x56, 0x01,
-0x77, 0xa2, 0x72, 0xeb, 0xfb, 0x90, 0xaa, 0x13,
-0x12, 0x11, 0x4d, 0x72, 0x28, 0x8a, 0x69, 0x6a,
-0x0c, 0x15, 0x1e, 0xda, 0xc4, 0x55, 0x8b, 0x22,
-0x97, 0x05, 0x44, 0x13, 0xca, 0xe8, 0x2b, 0x6a,
-0x84, 0x54, 0x7f, 0xb0, 0x87, 0x3b, 0xdb, 0x3b,
-0x25, 0x86, 0x0a, 0x05, 0x3e, 0x21, 0x57, 0x36,
-0xe1, 0x61, 0x9e, 0xb6, 0x2f, 0x87, 0xbc, 0x2f,
-0x26, 0x4a, 0xf9, 0x94, 0x90, 0xe1, 0x22, 0x89,
-0x65, 0xf5, 0x4c, 0x6f, 0x8a, 0xe0, 0xb9, 0x28,
-0x2a, 0x8c, 0x38, 0x5f, 0xbc, 0x1b, 0xdc, 0x08,
-0xab, 0xc9, 0x8a, 0x8a, 0x53, 0x7c, 0xe3, 0xb8,
-0x8b, 0x00, 0x46, 0x7f, 0x71, 0x3f, 0xe1, 0x71,
-0xc1, 0x09, 0x9a, 0xb1, 0x61, 0x16, 0xb0, 0xd9,
-0x64, 0xc4, 0x17, 0x37, 0x27, 0x1a, 0x45, 0x9d,
-0x75, 0x63, 0x64, 0x99, 0x85, 0x76, 0x91, 0x35,
-0xea, 0x56, 0x00, 0xec, 0x1b, 0xcd, 0x02, 0xeb,
-0x34, 0x40, 0x0a, 0x7c, 0xa6, 0x4a, 0xea, 0x44,
-0x81, 0xb4, 0x46, 0x9a, 0x94, 0x5a, 0x8c, 0xa4,
-0x6a, 0x88, 0x6f, 0xc2, 0x8d, 0xb9, 0x86, 0xd1,
-0x37, 0xb6, 0xa6, 0x96, 0x66, 0x55, 0xd5, 0x43,
-0xca, 0x3f, 0xec, 0x3c, 0xa8, 0xf6, 0xeb, 0xc9,
-0x3f, 0xcf, 0x18, 0x18, 0x9b, 0xda, 0x39, 0x7a,
-0xf8, 0x06, 0x86, 0x00, 0x06, 0x1a, 0x1e, 0x95,
-0x1c, 0x19, 0x15, 0x13, 0x14, 0x76, 0xc5, 0xc3,
-0xc7, 0xdf, 0xc6, 0xd6, 0x41, 0x57, 0xdf, 0xe8,
-0xd8, 0x89, 0x3f, 0x0f, 0x1c, 0xfc, 0x6d, 0xfb,
-0xce, 0x3d, 0x5f, 0x7f, 0xb3, 0x45, 0x51, 0x71,
-0x3d, 0xe6, 0x82, 0x86, 0xb3, 0xc0, 0xcb, 0xb1,
-0xbf, 0x45, 0x9f, 0x2d, 0x26, 0xbc, 0xd0, 0xc0,
-0x20, 0x05, 0xc6, 0x62, 0xa1, 0x05, 0x0f, 0xc4,
-0x52, 0x5c, 0xb7, 0x1e, 0x90, 0x26, 0xf0, 0xe4,
-0x86, 0x86, 0x47, 0x16, 0x14, 0x97, 0x77, 0x74,
-0x76, 0x61, 0xd2, 0x13, 0x7c, 0x3b, 0x7f, 0xaf,
-0xee, 0x41, 0x42, 0x52, 0x52, 0x7c, 0x22, 0xb4,
-0xb8, 0x84, 0x24, 0xb0, 0x3c, 0xfd, 0x13, 0xfd,
-0x9a, 0x94, 0x92, 0xc2, 0x62, 0xb3, 0x05, 0xbf,
-0x2c, 0x37, 0x6e, 0xde, 0x5c, 0xbd, 0x8a, 0x37,
-0x2d, 0x11, 0x70, 0x4c, 0x80, 0xcb, 0xfe, 0x81,
-0xa1, 0x59, 0xd9, 0x79, 0x75, 0x0f, 0x1b, 0x07,
-0x87, 0xf8, 0x56, 0xd4, 0x05, 0x38, 0xef, 0x1f,
-0x10, 0x2c, 0xb8, 0x37, 0x72, 0xba, 0x2d, 0x98,
-0xb7, 0xc0, 0xc9, 0xc5, 0x35, 0x2a, 0x36, 0xce,
-0xd0, 0xc4, 0xd4, 0xdb, 0x27, 0x20, 0x3d, 0x2b,
-0xe7, 0x61, 0xc3, 0x93, 0x81, 0x81, 0xe1, 0x19,
-0xb3, 0x54, 0xc0, 0xeb, 0x34, 0x20, 0x20, 0xe8,
-0x93, 0xf9, 0x53, 0x26, 0xac, 0x01, 0x7f, 0x87,
-0x22, 0x0f, 0x1e, 0x3e, 0x6e, 0xde, 0x97, 0x33,
-0xe9, 0xcc, 0x47, 0x8f, 0x9b, 0xa1, 0x9e, 0x27,
-0x7f, 0x28, 0xa9, 0x7b, 0xf8, 0xf8, 0xed, 0x6a,
-0x29, 0x2f, 0xfc, 0x74, 0xa1, 0xb1, 0x89, 0x59,
-0x16, 0x83, 0x69, 0x68, 0x64, 0xa2, 0xa5, 0xad,
-0x03, 0xb8, 0xbc, 0xb5, 0x9d, 0x6b, 0x50, 0xd8,
-0x55, 0x70, 0xf5, 0xee, 0xd7, 0x3f, 0x62, 0xb1,
-0x39, 0xd3, 0xc3, 0x89, 0x9b, 0x9a, 0x5b, 0x0f,
-0x1f, 0x56, 0x9f, 0xd3, 0x58, 0x2c, 0x70, 0x43,
-0xaa, 0x1e, 0x3c, 0x18, 0x7e, 0x25, 0x22, 0xec,
-0x4a, 0x44, 0xc4, 0xb5, 0xa8, 0x6b, 0x51, 0x31,
-0x71, 0xf1, 0x49, 0xb1, 0xf1, 0x09, 0xb1, 0xf1,
-0xbc, 0x37, 0x12, 0xb8, 0x67, 0xda, 0x3b, 0x5f,
-0x63, 0xe6, 0xe8, 0xaf, 0xa1, 0xe1, 0x8c, 0xac,
-0x2c, 0xac, 0x91, 0x64, 0xa2, 0x11, 0xd4, 0x26,
-0x4f, 0xcb, 0xf1, 0x89, 0x89, 0xd5, 0x35, 0x35,
-0xaf, 0xd1, 0xf2, 0xf0, 0xd0, 0x21, 0xb5, 0xdf,
-0xa8, 0x2f, 0xcb, 0x17, 0x5f, 0x6c, 0xc8, 0x2b,
-0x28, 0xb6, 0xc6, 0xf0, 0xb7, 0xa8, 0xa4, 0xb2,
-0x1d, 0x3c, 0x3b, 0x94, 0xd1, 0x62, 0x8f, 0x1e,
-0x37, 0x50, 0x77, 0x92, 0xe7, 0x33, 0x26, 0x2e,
-0x11, 0x74, 0x1b, 0x9c, 0x5a, 0x54, 0x4c, 0x8c,
-0x8a, 0xea, 0x41, 0x8a, 0x9e, 0xac, 0x5f, 0xff,
-0x45, 0x49, 0x79, 0xa5, 0xbd, 0x93, 0xeb, 0x95,
-0x88, 0x98, 0xd2, 0x8a, 0xea, 0xce, 0xae, 0x59,
-0xe2, 0xc6, 0x2d, 0x2c, 0xad, 0x84, 0x85, 0x84,
-0x85, 0x96, 0x09, 0x2d, 0x5f, 0x0a, 0x0d, 0x2c,
-0xa8, 0xa8, 0x1c, 0x18, 0x1e, 0x85, 0xfa, 0xd5,
-0x02, 0x95, 0xd2, 0x7e, 0xf9, 0xdc, 0xc3, 0xd3,
-0x6b, 0xfe, 0xbc, 0x05, 0x73, 0x77, 0xcf, 0x08,
-0x62, 0xe0, 0xbf, 0x23, 0xbc, 0xf1, 0x98, 0x8c,
-0x41, 0x3b, 0x21, 0x22, 0x21, 0x3b, 0xa9, 0x53,
-0xd1, 0x4b, 0x8e, 0x74, 0x22, 0x18, 0x2e, 0x16,
-0xbc, 0x44, 0x44, 0x67, 0x71, 0x48, 0x9b, 0x71,
-0xb8, 0x14, 0xb5, 0x97, 0xf8, 0x95, 0x87, 0x0e,
-0x73, 0xb3, 0x75, 0x7a, 0x70, 0xa1, 0x2d, 0xae,
-0xba, 0x32, 0x62, 0x9a, 0xe8, 0x57, 0x8c, 0x4b,
-0x4e, 0x1e, 0x14, 0x65, 0x39, 0x91, 0xa9, 0x37,
-0x16, 0x8b, 0xd5, 0x87, 0x0a, 0x1f, 0x20, 0xfa,
-0x89, 0xb8, 0x27, 0x0d, 0x5b, 0xa6, 0x99, 0x90,
-0x98, 0x26, 0xc6, 0xe5, 0xd1, 0x36, 0x18, 0x4b,
-0x7d, 0x8a, 0xf6, 0xc5, 0x17, 0xb8, 0xdb, 0xa0,
-0x35, 0xc4, 0x32, 0xbe, 0x06, 0xf3, 0x1b, 0x13,
-0xed, 0x13, 0x5e, 0x71, 0xb4, 0x25, 0xf1, 0x2b,
-0xb1, 0x0d, 0x8d, 0xfb, 0x15, 0x73, 0x35, 0xa3,
-0xa0, 0x2f, 0x8e, 0x2c, 0x51, 0x2b, 0x0a, 0xa7,
-0xcc, 0x78, 0x4f, 0x50, 0xa5, 0xa4, 0xb5, 0x26,
-0x2c, 0x39, 0xc3, 0x0e, 0x19, 0xfd, 0x56, 0x48,
-0x81, 0xcf, 0xdf, 0x97, 0xd5, 0xbc, 0x21, 0x75,
-0xaa, 0x58, 0xee, 0xf7, 0x2c, 0xa9, 0x5f, 0x63,
-0xa5, 0x0e, 0x85, 0x39, 0x84, 0x96, 0x08, 0x38,
-0x84, 0x7e, 0xf7, 0x76, 0xef, 0xc1, 0xfd, 0x7d,
-0xfb, 0x7e, 0xde, 0xbe, 0x63, 0xb7, 0x8a, 0x9a,
-0xc6, 0xd9, 0x73, 0x17, 0x4c, 0xcd, 0x2c, 0x9d,
-0x3d, 0x2f, 0x07, 0x85, 0x46, 0x5c, 0x8b, 0x4e,
-0x88, 0x4f, 0x4c, 0x8b, 0x8e, 0x4d, 0x0a, 0x89,
-0x48, 0xf2, 0x0b, 0x0c, 0xb1, 0x73, 0xf2, 0x34,
-0x32, 0x35, 0x3f, 0x7d, 0x4e, 0x5b, 0xed, 0xb7,
-0x23, 0x7b, 0xf6, 0xa9, 0x6c, 0xf9, 0x6e, 0xdb,
-0xc6, 0x8d, 0x9b, 0xe4, 0xe4, 0xe4, 0x24, 0x24,
-0xa4, 0xc4, 0x57, 0xae, 0x16, 0x16, 0x11, 0x01,
-0xf8, 0xbb, 0x74, 0xe9, 0xd2, 0x45, 0x0b, 0x17,
-0x01, 0xd6, 0x80, 0xf0, 0x17, 0xcf, 0xe2, 0xc4,
-0xe4, 0x28, 0x67, 0x7c, 0x75, 0x20, 0xbd, 0x0e,
-0xf2, 0x1a, 0x69, 0x29, 0x19, 0xe6, 0xf5, 0x3c,
-0x7b, 0x47, 0x37, 0xff, 0x90, 0xf0, 0xeb, 0x85,
-0x65, 0xcd, 0x2d, 0x1d, 0xa3, 0x63, 0x54, 0xba,
-0xf4, 0x73, 0x78, 0x59, 0xee, 0xdf, 0x93, 0x94,
-0x90, 0xe2, 0xe9, 0xf0, 0x81, 0x03, 0xaa, 0xf9,
-0x85, 0x45, 0x97, 0xfd, 0x42, 0x32, 0x19, 0xcc,
-0xba, 0x47, 0x18, 0xfe, 0x42, 0x38, 0x9c, 0x61,
-0x77, 0xb0, 0x52, 0xe3, 0xd8, 0xd1, 0x7f, 0x88,
-0x23, 0xbb, 0x76, 0xed, 0x2e, 0x2c, 0x2e, 0x36,
-0xb7, 0xb2, 0x76, 0x73, 0xf7, 0x4a, 0x4d, 0xcf,
-0x7e, 0x50, 0xf7, 0xa4, 0x7f, 0x60, 0x80, 0xdf,
-0xb4, 0x75, 0x6e, 0x5e, 0x01, 0x8f, 0xc3, 0x1c,
-0xd6, 0xb3, 0x08, 0x0b, 0xf7, 0xf4, 0xb9, 0xec,
-0xee, 0xe5, 0x9b, 0x96, 0xc1, 0x78, 0xd8, 0xd0,
-0xd4, 0x3f, 0x40, 0x85, 0xbf, 0x2d, 0x6d, 0xed,
-0x0b, 0x3f, 0x7b, 0xcb, 0x5a, 0x16, 0xa0, 0x4b,
-0x7e, 0x01, 0x01, 0x19, 0xd9, 0x0c, 0x2d, 0x2d,
-0x6d, 0xc0, 0x82, 0xf5, 0x0d, 0x4d, 0x9d, 0x9c,
-0xdd, 0x43, 0xc3, 0xa3, 0xf3, 0x0b, 0x8b, 0x1f,
-0x3e, 0x6a, 0xec, 0xeb, 0x1f, 0x00, 0xcc, 0x68,
-0xca, 0x5c, 0xf0, 0xdf, 0xaf, 0x1a, 0x9b, 0x9a,
-0xbf, 0xd8, 0xb0, 0x69, 0xee, 0x54, 0x14, 0xc0,
-0x3d, 0x69, 0x63, 0x6b, 0x47, 0x67, 0x30, 0x63,
-0xe2, 0x92, 0x8b, 0x4b, 0xcb, 0x9e, 0x34, 0xc2,
-0x24, 0x32, 0x01, 0x5f, 0xf5, 0xef, 0xcb, 0x46,
-0xc6, 0x46, 0x8e, 0x1d, 0xff, 0x9d, 0xfa, 0x76,
-0xa2, 0xc9, 0xca, 0xe7, 0x15, 0x14, 0x5a, 0x58,
-0xd9, 0xc2, 0x70, 0xf7, 0xa2, 0xb2, 0xb6, 0x0e,
-0x88, 0xbf, 0xd4, 0xd5, 0xa8, 0xdf, 0xcc, 0x00,
-0x65, 0x77, 0x73, 0xf7, 0xa4, 0xe8, 0x09, 0x78,
-0x8a, 0xcb, 0x2a, 0xaa, 0x9c, 0x5c, 0xdc, 0x42,
-0xc2, 0x23, 0xc0, 0x42, 0x07, 0xc2, 0x5f, 0xfe,
-0x97, 0xb7, 0xbe, 0xfe, 0x51, 0x36, 0x83, 0x41,
-0xcf, 0xce, 0xce, 0xa4, 0x67, 0xa7, 0x67, 0x64,
-0x83, 0x85, 0xbb, 0x77, 0x1f, 0x08, 0xde, 0x9f,
-0xfe, 0xc1, 0x81, 0x5d, 0xbb, 0x67, 0x71, 0x0e,
-0xbc, 0x1b, 0x5b, 0x4a, 0xdb, 0x27, 0x63, 0x88,
-0x87, 0x40, 0x4f, 0x82, 0x2c, 0xc6, 0xf5, 0xd6,
-0xa2, 0x60, 0x24, 0x2c, 0x1d, 0x18, 0xaa, 0x53,
-0x1a, 0xb3, 0x71, 0x89, 0x27, 0xf2, 0xf4, 0x28,
-0xb7, 0x3a, 0xf0, 0xd4, 0x68, 0xe7, 0x29, 0xc2,
-0x17, 0x44, 0xd1, 0x40, 0x9c, 0x87, 0x72, 0xdd,
-0xd4, 0xdc, 0x5f, 0x67, 0x98, 0x78, 0xc5, 0x8a,
-0x15, 0x62, 0x32, 0x20, 0xc6, 0x4f, 0x09, 0xb0,
-0x46, 0x81, 0x4c, 0xe0, 0x13, 0xcd, 0xb4, 0xe2,
-0xb0, 0x88, 0x4f, 0xbc, 0x42, 0x62, 0x8e, 0x60,
-0x51, 0x1e, 0xd5, 0x24, 0x32, 0x65, 0x13, 0xf4,
-0x13, 0x6d, 0x4c, 0xb4, 0x80, 0x16, 0x10, 0x4a,
-0x12, 0x4d, 0x11, 0xa8, 0x8a, 0x3e, 0x27, 0x27,
-0x6d, 0x49, 0x6b, 0x78, 0x0c, 0xb5, 0xcc, 0xd5,
-0xee, 0xe8, 0x25, 0x0e, 0x84, 0x0b, 0x98, 0x60,
-0x61, 0xcf, 0xe8, 0x58, 0xe8, 0x40, 0xeb, 0xcc,
-0xf1, 0x91, 0x83, 0xa2, 0x39, 0x5b, 0xc1, 0xb8,
-0x53, 0xd6, 0x88, 0x25, 0x67, 0xd4, 0x0d, 0x07,
-0x3f, 0xfa, 0xcd, 0x34, 0x9d, 0x07, 0xb2, 0x17,
-0xee, 0xc9, 0x9c, 0xae, 0x94, 0x3f, 0xc1, 0x90,
-0x3e, 0x92, 0x22, 0xa5, 0x16, 0xa9, 0xef, 0xc9,
-0x9c, 0x78, 0x4e, 0x35, 0x85, 0xf1, 0x1e, 0xad,
-0xbc, 0xa2, 0xea, 0xc7, 0x5d, 0x7b, 0x76, 0xed,
-0xde, 0xa3, 0xae, 0x71, 0xfc, 0x9c, 0x96, 0x8e,
-0x85, 0x8d, 0xab, 0x87, 0x4f, 0x50, 0xc4, 0xb5,
-0xf8, 0x84, 0xa4, 0x94, 0xd4, 0x8c, 0xcc, 0x94,
-0x74, 0x7a, 0x5c, 0x42, 0x5a, 0xd8, 0x95, 0x48,
-0x57, 0x4f, 0x7f, 0x2b, 0x1b, 0x7b, 0xed, 0xf3,
-0xba, 0xc7, 0x8e, 0x9f, 0xdc, 0xaf, 0x72, 0x68,
-0xdb, 0xf6, 0x1d, 0x4a, 0x5f, 0x7f, 0xa3, 0xa8,
-0xa8, 0x28, 0x2d, 0x2d, 0xb3, 0xfa, 0xf3, 0x35,
-0x80, 0x02, 0x43, 0x39, 0xca, 0xe5, 0x42, 0x4b,
-0x16, 0xe3, 0x10, 0x0c, 0xd3, 0x81, 0x31, 0xf1,
-0x04, 0xa2, 0x34, 0x30, 0xbf, 0xb4, 0x7d, 0xf2,
-0xfa, 0xd5, 0xab, 0xd7, 0x64, 0xe7, 0x31, 0x9d,
-0x5c, 0x3d, 0x82, 0x42, 0xae, 0x5e, 0x2f, 0x28,
-0x69, 0x69, 0x83, 0x29, 0x33, 0xef, 0xe5, 0xc5,
-0x58, 0x57, 0xd7, 0x20, 0x2f, 0xa7, 0xc0, 0xd3,
-0x55, 0x4d, 0x2d, 0xad, 0x0c, 0x3a, 0xdd, 0xe7,
-0x72, 0x20, 0x9d, 0x71, 0xfd, 0xe1, 0xa3, 0x66,
-0x7e, 0xde, 0x60, 0x60, 0x63, 0xe3, 0x63, 0xeb,
-0x15, 0x37, 0xfe, 0xc3, 0xc7, 0x59, 0x78, 0x85,
-0x08, 0x83, 0x79, 0xdd, 0xdd, 0xcb, 0xdb, 0xd5,
-0xc3, 0x37, 0x29, 0x2d, 0xe3, 0xee, 0xfd, 0x86,
-0xbe, 0xfe, 0x21, 0x7e, 0x12, 0x7c, 0x0f, 0x1b,
-0x1e, 0xf1, 0x54, 0xa3, 0x58, 0x30, 0x7f, 0x81,
-0x9f, 0x7f, 0x80, 0x7f, 0x60, 0xb0, 0x93, 0x9b,
-0x6f, 0x6a, 0x7a, 0xd6, 0x83, 0xfa, 0xc7, 0x30,
-0x13, 0x93, 0x7f, 0xed, 0x54, 0x36, 0x87, 0xb3,
-0x42, 0x44, 0xa0, 0x7a, 0x52, 0xaf, 0x65, 0x2b,
-0x84, 0x84, 0x43, 0x42, 0xc3, 0x12, 0x92, 0x92,
-0x2f, 0xea, 0xea, 0x69, 0x9f, 0xbf, 0x68, 0x70,
-0xc9, 0xd4, 0xde, 0xd1, 0x25, 0x32, 0x2a, 0x36,
-0xb7, 0xa0, 0xac, 0xfe, 0x51, 0x53, 0x5f, 0x3f,
-0x0c, 0x2a, 0xe6, 0x81, 0x89, 0x1b, 0xb5, 0xb7,
-0x36, 0x7f, 0x35, 0x4b, 0xb8, 0xd1, 0x1b, 0x1b,
-0xb8, 0x27, 0x0d, 0x2f, 0x19, 0x5d, 0x8b, 0x8e,
-0x73, 0x74, 0x70, 0x4b, 0x4c, 0x4a, 0xbb, 0x75,
-0x17, 0x16, 0x83, 0x9e, 0x78, 0xfe, 0xaf, 0xc6,
-0xdf, 0xb1, 0x67, 0x63, 0x9a, 0x9a, 0x5a, 0xd4,
-0x63, 0x12, 0x49, 0x09, 0xc9, 0xbc, 0xfc, 0x7c,
-0x2b, 0x1b, 0x27, 0x30, 0x5a, 0x66, 0xe6, 0x17,
-0x37, 0xb7, 0x76, 0x0e, 0x53, 0x56, 0x2b, 0x78,
-0x63, 0x03, 0xff, 0xab, 0xc0, 0x40, 0xaa, 0x7a,
-0x88, 0xab, 0x56, 0xae, 0xba, 0x71, 0xeb, 0x16,
-0xe0, 0xbf, 0x60, 0x18, 0x5f, 0x58, 0x5c, 0xd1,
-0xde, 0xd9, 0x39, 0x32, 0xf2, 0x6c, 0xee, 0x2e,
-0x2f, 0xc0, 0x5f, 0x13, 0x33, 0x0b, 0x30, 0x5a,
-0x7e, 0xef, 0x29, 0x6c, 0x8b, 0x25, 0x95, 0x65,
-0x75, 0x1b, 0xf0, 0x08, 0x2b, 0x0c, 0xcb, 0x28,
-0x10, 0x87, 0x07, 0xa7, 0xc8, 0xd0, 0xc6, 0xb3,
-0x2f, 0x4f, 0x0b, 0xc4, 0xaf, 0xe4, 0x16, 0x08,
-0x40, 0x24, 0x35, 0x38, 0xf9, 0x15, 0x41, 0x2a,
-0xce, 0x8e, 0xd1, 0xaf, 0xe6, 0x7d, 0x64, 0xbf,
-0x2e, 0xc2, 0x32, 0x1a, 0xce, 0x3a, 0x39, 0x88,
-0xdb, 0x12, 0x08, 0x4b, 0x6e, 0x50, 0x6e, 0x2a,
-0x22, 0x4f, 0x3f, 0x3b, 0x9e, 0x35, 0x33, 0x62,
-0x37, 0x3a, 0x05, 0xd4, 0x14, 0x1a, 0x18, 0x90,
-0x8f, 0x8b, 0x3a, 0xa6, 0x68, 0x4e, 0x56, 0xc5,
-0xe4, 0xe0, 0x40, 0x8f, 0x45, 0x41, 0xc3, 0x65,
-0x33, 0xac, 0x4b, 0xdc, 0x88, 0xe8, 0xf5, 0xa6,
-0x9d, 0x00, 0x7f, 0xe5, 0x2e, 0xb5, 0x29, 0x1a,
-0x37, 0x02, 0x0a, 0x4c, 0xd3, 0xae, 0xa5, 0x69,
-0xdd, 0xa0, 0x9d, 0x2a, 0x92, 0x3b, 0x9e, 0x2a,
-0xfd, 0x5b, 0xfc, 0x1f, 0x36, 0xcc, 0x21, 0xfe,
-0xd2, 0x43, 0xef, 0xd7, 0xe8, 0x74, 0xc6, 0xb6,
-0x1f, 0xb6, 0xef, 0xde, 0xf3, 0xf3, 0x91, 0xa3,
-0xc7, 0xcf, 0xeb, 0xe8, 0xd9, 0xd9, 0xbb, 0xfa,
-0xf9, 0x07, 0xc7, 0xc4, 0x25, 0x24, 0xa7, 0x65,
-0xa7, 0xd1, 0x73, 0x33, 0xb3, 0x99, 0xc9, 0x69,
-0x59, 0xd1, 0xb1, 0xf1, 0x7e, 0x01, 0xc1, 0x8e,
-0xce, 0x1e, 0x7a, 0xfa, 0x46, 0x27, 0x4e, 0x9e,
-0x39, 0xf4, 0xdf, 0xff, 0xed, 0xdc, 0xb5, 0xef,
-0xbb, 0xef, 0x95, 0x37, 0x6c, 0xd8, 0x20, 0x2f,
-0x2f, 0x2f, 0x21, 0x29, 0x29, 0xbe, 0x6a, 0xa5,
-0xb0, 0xb0, 0xd8, 0xf2, 0xe5, 0x30, 0x17, 0x09,
-0x40, 0x30, 0x51, 0x17, 0x78, 0xc1, 0xbc, 0x05,
-0x28, 0x16, 0x9a, 0x78, 0x34, 0x90, 0x3b, 0x9a,
-0xdf, 0x0d, 0x2c, 0x22, 0x22, 0xca, 0xc8, 0x65,
-0xba, 0xba, 0x7b, 0xf9, 0x07, 0x87, 0x33, 0xf3,
-0x8a, 0x9b, 0x5a, 0xdb, 0x28, 0xea, 0xfa, 0xf1,
-0x7d, 0x3f, 0xfc, 0xcd, 0xf7, 0xab, 0xe0, 0x4d,
-0x35, 0x36, 0x37, 0x6f, 0xd8, 0xc0, 0x0b, 0xa0,
-0xc6, 0x66, 0x66, 0xf1, 0x49, 0xc9, 0x1e, 0x5e,
-0x97, 0xc1, 0x65, 0xa9, 0x7b, 0xd8, 0xf8, 0xd7,
-0xd0, 0x10, 0xbf, 0x12, 0xf3, 0x00, 0xcb, 0x44,
-0x66, 0x13, 0x2c, 0x9a, 0xd5, 0x3e, 0xfc, 0xe0,
-0xc3, 0x90, 0xf0, 0xf0, 0xb0, 0x88, 0xab, 0x6e,
-0x9e, 0xbe, 0x49, 0xa9, 0x19, 0x0f, 0xea, 0x1a,
-0xb0, 0x88, 0xaf, 0x99, 0x3b, 0xdc, 0xf9, 0xb4,
-0x5b, 0x7e, 0xea, 0x74, 0xf3, 0xfc, 0x8f, 0xe7,
-0xbb, 0x7b, 0x7a, 0x05, 0x87, 0x86, 0xbb, 0xba,
-0x79, 0xa6, 0xa4, 0x65, 0x23, 0x25, 0x40, 0x8a,
-0x50, 0x9f, 0xfe, 0xc1, 0xa1, 0x55, 0xb3, 0x89,
-0x3c, 0xbc, 0x81, 0x81, 0x7f, 0xf7, 0x9a, 0x35,
-0x6b, 0xd2, 0x33, 0x33, 0xaf, 0x46, 0x44, 0x9e,
-0xbf, 0xa0, 0xa3, 0xad, 0x63, 0x70, 0xc9, 0xc4,
-0xcc, 0xc5, 0xdd, 0x07, 0x20, 0x60, 0x71, 0x69,
-0xe5, 0x93, 0xa6, 0x56, 0x70, 0x5c, 0x9e, 0x2c,
-0x33, 0x30, 0xc6, 0xc8, 0x61, 0x5e, 0x97, 0x94,
-0x94, 0x9e, 0x8b, 0x37, 0x2a, 0xb8, 0xaa, 0xba,
-0xba, 0xba, 0xb1, 0x09, 0x49, 0xf6, 0x8e, 0xae,
-0x09, 0x89, 0x29, 0x50, 0x66, 0xad, 0xb7, 0x0f,
-0x0a, 0x44, 0xfc, 0x8b, 0xf1, 0x77, 0x7c, 0xe2,
-0x99, 0xbe, 0xe1, 0x25, 0xea, 0x69, 0x65, 0x30,
-0x76, 0xa5, 0xe7, 0xe6, 0xd8, 0xda, 0x3b, 0x5d,
-0xf6, 0x0b, 0x66, 0x5e, 0x07, 0xf8, 0xdb, 0x41,
-0x5d, 0xf8, 0xfe, 0x9f, 0x3c, 0x4a, 0x31, 0xb1,
-0x71, 0x14, 0x3d, 0x59, 0x26, 0xb4, 0xac, 0xa2,
-0xaa, 0x1a, 0xf0, 0xdf, 0x40, 0x8c, 0x89, 0xb7,
-0xb4, 0x75, 0x8d, 0x8d, 0xcf, 0x21, 0xfe, 0xbe,
-0x82, 0xfe, 0x81, 0xd1, 0x92, 0xd2, 0x32, 0x0d,
-0x8d, 0xe3, 0xef, 0x37, 0x7e, 0xef, 0x33, 0x71,
-0x25, 0xe9, 0x8b, 0x4f, 0x68, 0xa6, 0xc4, 0xb4,
-0x26, 0x0b, 0x39, 0x54, 0xc9, 0xf4, 0x90, 0x0c,
-0xa9, 0x44, 0x40, 0x2f, 0xe1, 0x80, 0x05, 0x6b,
-0x90, 0x03, 0x96, 0xfc, 0x2b, 0x0d, 0x6b, 0x0a,
-0xed, 0xcb, 0xf3, 0x2b, 0xfa, 0x44, 0xbf, 0x12,
-0x3e, 0x5b, 0x2e, 0x9e, 0x72, 0xc8, 0x8d, 0x23,
-0x6f, 0x2d, 0xee, 0xb3, 0xc5, 0x42, 0x9b, 0xd6,
-0xc2, 0xa8, 0xe9, 0x49, 0x1c, 0x24, 0x6f, 0x40,
-0x84, 0x39, 0xe1, 0x94, 0xd6, 0xa4, 0x77, 0x7a,
-0x83, 0xe4, 0xce, 0xa3, 0x8e, 0x11, 0xfd, 0x21,
-0x9f, 0xaf, 0x1c, 0x4c, 0xda, 0x9d, 0xe2, 0x43,
-0x26, 0x63, 0x34, 0xd9, 0xf9, 0xcc, 0xf5, 0x6c,
-0x73, 0x85, 0xa3, 0xd1, 0x57, 0xe3, 0x0e, 0xec,
-0xc4, 0xf1, 0xa6, 0x68, 0x66, 0x7d, 0xeb, 0xcc,
-0x61, 0xaf, 0xd6, 0x9a, 0xf7, 0x82, 0x21, 0x84,
-0xbc, 0x59, 0xaf, 0xa2, 0x05, 0x5c, 0x09, 0xeb,
-0x23, 0x1b, 0xb3, 0xd7, 0x9b, 0x76, 0xc9, 0x1b,
-0x36, 0x29, 0x18, 0x36, 0xd2, 0x74, 0xea, 0xe4,
-0xb4, 0x6e, 0xc8, 0x9e, 0x2a, 0x92, 0xff, 0x23,
-0x5b, 0x46, 0x3d, 0xe6, 0xb0, 0x69, 0x16, 0xbb,
-0xff, 0x5f, 0x5a, 0x88, 0x30, 0x3a, 0x36, 0x0e,
-0x20, 0xe9, 0x9e, 0x7d, 0x07, 0x8e, 0x1e, 0x3f,
-0xa9, 0xab, 0x67, 0xe8, 0xe2, 0xe6, 0x1d, 0x14,
-0x7a, 0x35, 0x3e, 0x31, 0x35, 0x8b, 0xc1, 0xcc,
-0xcb, 0x2f, 0xca, 0xbd, 0x5e, 0x98, 0x95, 0x9d,
-0x97, 0x90, 0x94, 0x1e, 0x76, 0xf5, 0x9a, 0x87,
-0xcf, 0x65, 0x13, 0x73, 0x2b, 0x40, 0x61, 0xd4,
-0x8f, 0x1c, 0xff, 0x69, 0xff, 0xc1, 0x1f, 0x76,
-0xec, 0xfa, 0x6a, 0xb3, 0x12, 0xd4, 0xc2, 0x92,
-0x91, 0x41, 0xb9, 0xc0, 0x22, 0x22, 0x50, 0x0e,
-0x0b, 0xab, 0x0b, 0x8c, 0x4f, 0x04, 0xa3, 0xa4,
-0x60, 0x48, 0x81, 0xb1, 0xbc, 0xe0, 0x59, 0x5f,
-0xa7, 0x4b, 0x96, 0x2e, 0xc9, 0x62, 0x30, 0xdc,
-0x3d, 0x7d, 0x00, 0xdc, 0x33, 0x73, 0x8b, 0x1e,
-0x37, 0xb6, 0x50, 0x70, 0x4c, 0xbe, 0x2f, 0x8d,
-0x57, 0x5c, 0xfb, 0xfb, 0x15, 0x2a, 0x3e, 0x4b,
-0x54, 0xb1, 0x17, 0xdc, 0x95, 0x0d, 0x06, 0xed,
-0xdf, 0x7c, 0xcd, 0x2b, 0x0b, 0xe0, 0xe8, 0xe2,
-0x1a, 0x11, 0x15, 0xed, 0xee, 0xe1, 0x93, 0x96,
-0x09, 0xe3, 0xaf, 0xa0, 0xb0, 0x3c, 0x1f, 0x3a,
-0xd9, 0xd8, 0xdc, 0xb2, 0x78, 0xd1, 0x5b, 0xf0,
-0xe5, 0x9a, 0x9a, 0x59, 0x00, 0xe6, 0xeb, 0xe9,
-0xed, 0x97, 0x96, 0x99, 0x5d, 0xf7, 0xb0, 0x61,
-0x70, 0x90, 0x6f, 0xa1, 0x43, 0xc0, 0x02, 0xbe,
-0x56, 0xfa, 0x86, 0xbc, 0xef, 0x47, 0x1f, 0x7e,
-0x64, 0x6e, 0x61, 0x19, 0x19, 0x1d, 0xeb, 0xe2,
-0xe6, 0x9e, 0x9c, 0x9a, 0x8e, 0x2b, 0x01, 0xf2,
-0xaf, 0x7a, 0x3c, 0x34, 0x32, 0x2c, 0x2d, 0x25,
-0x68, 0x3d, 0x8b, 0xd7, 0xb5, 0x0d, 0x1b, 0xbf,
-0x64, 0x30, 0x19, 0xfe, 0xfe, 0x01, 0xe7, 0x2f,
-0xe8, 0x6a, 0x5f, 0xb8, 0x68, 0x66, 0x61, 0xeb,
-0xe6, 0xe1, 0x1b, 0x13, 0x97, 0x5c, 0x51, 0x79,
-0xa3, 0xb1, 0xb9, 0x63, 0x68, 0x78, 0x78, 0xe2,
-0xf9, 0x14, 0x69, 0xac, 0xe7, 0x2f, 0x9f, 0xc7,
-0x27, 0x26, 0x8b, 0x89, 0x89, 0xbf, 0xf5, 0x9e,
-0x80, 0xfb, 0xf0, 0xcc, 0xd9, 0xb3, 0xc9, 0x69,
-0xa9, 0xb6, 0x8e, 0x6e, 0xb1, 0xf1, 0x29, 0x50,
-0x58, 0x83, 0xc3, 0x41, 0x89, 0x5d, 0x2f, 0x61,
-0xb1, 0x8f, 0x97, 0xe4, 0x3b, 0x87, 0x2c, 0xdc,
-0xf4, 0xba, 0xb7, 0x10, 0xb1, 0x31, 0x6a, 0x84,
-0xbc, 0x3b, 0x58, 0x43, 0x21, 0x09, 0x35, 0xdd,
-0xc0, 0xf8, 0xc4, 0xcc, 0xd2, 0x92, 0x5a, 0xdc,
-0x43, 0x4c, 0x44, 0x2c, 0x3d, 0x33, 0xcb, 0x01,
-0x0b, 0x77, 0x67, 0xe6, 0x15, 0x82, 0x3b, 0x70,
-0x68, 0x78, 0x54, 0x90, 0xe0, 0x25, 0x68, 0x7f,
-0x73, 0x4f, 0x19, 0x15, 0x6b, 0xe6, 0xf3, 0xe0,
-0x10, 0x9f, 0x19, 0x0c, 0x3a, 0x45, 0x4f, 0xc0,
-0x9d, 0x5f, 0x54, 0x5a, 0xe6, 0xea, 0xe1, 0x1d,
-0x18, 0x1c, 0xc6, 0x28, 0x28, 0x7b, 0xdc, 0xdc,
-0x3e, 0x3a, 0xf6, 0xda, 0x23, 0x81, 0xc9, 0x6e,
-0x10, 0xbd, 0x42, 0xeb, 0xf9, 0x9f, 0x11, 0xb8,
-0x81, 0x5d, 0x5d, 0xdd, 0xc8, 0x65, 0x31, 0xdf,
-0xb1, 0x7d, 0x2a, 0xfa, 0x85, 0xb4, 0x4e, 0xbd,
-0x82, 0x19, 0xcc, 0xb2, 0x21, 0x26, 0x34, 0x91,
-0xdf, 0x95, 0xc2, 0x90, 0xee, 0x13, 0xd9, 0x13,
-0x8b, 0xf6, 0x15, 0xe4, 0x2b, 0x4f, 0x3b, 0x3c,
-0x9f, 0xb2, 0xfc, 0x43, 0x9b, 0x66, 0xdc, 0x1d,
-0x83, 0x63, 0x36, 0x79, 0x47, 0xfc, 0x14, 0x4c,
-0xba, 0x79, 0x8e, 0x32, 0xfd, 0x2b, 0xcf, 0xfa,
-0x29, 0x46, 0x88, 0x45, 0xff, 0x9f, 0xb9, 0xeb,
-0x8e, 0x8a, 0xea, 0xd8, 0xff, 0xff, 0xc4, 0xbc,
-0xf7, 0xce, 0xcf, 0x34, 0x35, 0x46, 0x23, 0x79,
-0xb1, 0x25, 0x20, 0x6d, 0x45, 0xd0, 0x24, 0x26,
-0xcf, 0x18, 0x93, 0x98, 0x68, 0x62, 0x34, 0x9a,
-0x44, 0x93, 0x97, 0x97, 0x58, 0xd2, 0x5e, 0x0c,
-0x28, 0xbd, 0x6c, 0x01, 0xa4, 0x77, 0x56, 0xfa,
-0xc2, 0xd2, 0x11, 0x29, 0x02, 0x22, 0xd2, 0x61,
-0xc1, 0x65, 0x97, 0x2e, 0x20, 0x45, 0x10, 0xa5,
-0xee, 0x2e, 0x2c, 0x4b, 0x57, 0x9a, 0x9a, 0x73,
-0x7e, 0xdf, 0x99, 0xb9, 0x7b, 0x25, 0xab, 0xbb,
-0x26, 0xb1, 0xe4, 0x9d, 0xf3, 0x3d, 0xf7, 0xdc,
-0x32, 0x77, 0x66, 0xee, 0xdc, 0xef, 0xcc, 0x67,
-0x3e, 0x33, 0xdf, 0xf9, 0xce, 0x9d, 0xed, 0x21,
-0xe6, 0x6d, 0x18, 0xa1, 0x7c, 0x3a, 0x3f, 0x93,
-0xda, 0xf4, 0xd6, 0x8d, 0xe8, 0x3e, 0x12, 0x1d,
-0xea, 0x04, 0xa1, 0xad, 0x1e, 0xeb, 0xce, 0x77,
-0x91, 0xa7, 0xfa, 0x4c, 0x62, 0xdf, 0xd5, 0xaf,
-0x67, 0xdb, 0x03, 0xf8, 0xab, 0x6b, 0xd9, 0xa1,
-0x67, 0x56, 0xaf, 0xfb, 0xd3, 0x05, 0xdd, 0x23,
-0x05, 0xaf, 0xfc, 0x3b, 0x6d, 0x87, 0x65, 0x56,
-0x8f, 0x74, 0xf8, 0x8f, 0x6a, 0xe0, 0xe3, 0x91,
-0xa8, 0xe8, 0xd8, 0xb7, 0xb6, 0xbc, 0xb3, 0xe3,
-0xa3, 0x4f, 0xbe, 0x3d, 0xf8, 0xbd, 0x95, 0xb5,
-0x9d, 0xa7, 0x4f, 0x60, 0x54, 0x4c, 0x62, 0x6a,
-0xc6, 0xf9, 0xfc, 0xc2, 0x92, 0xe2, 0x52, 0x91,
-0xa0, 0x5c, 0x58, 0x50, 0x24, 0xc8, 0x3a, 0x97,
-0x97, 0x90, 0x94, 0x1a, 0x14, 0xc6, 0x3b, 0xe1,
-0xea, 0x65, 0x6e, 0x69, 0x77, 0xe4, 0xbb, 0x9f,
-0x3e, 0xdd, 0xb7, 0xff, 0xfd, 0x0f, 0x3e, 0x7a,
-0x63, 0xf3, 0x9b, 0xc6, 0xc6, 0x26, 0x7a, 0x7a,
-0x06, 0x40, 0x55, 0x5e, 0x5e, 0xb9, 0x72, 0x85,
-0x16, 0xb5, 0x29, 0xd2, 0xe2, 0x45, 0x4b, 0x9e,
-0x79, 0x8a, 0x5a, 0x8e, 0x44, 0xfc, 0x62, 0xa1,
-0x7d, 0x09, 0x9f, 0xa4, 0x56, 0x24, 0x69, 0x40,
-0x61, 0x78, 0x25, 0x25, 0x3d, 0x2d, 0x30, 0x38,
-0x28, 0x30, 0x38, 0x02, 0xf0, 0xbf, 0xfd, 0x0a,
-0xda, 0x17, 0x46, 0xc3, 0xa6, 0x27, 0x44, 0x00,
-0x04, 0xa1, 0xb9, 0x9e, 0x9e, 0x9d, 0xbd, 0x31,
-0x3d, 0x35, 0x35, 0x3d, 0x3d, 0x3d, 0x03, 0x32,
-0x03, 0xc4, 0x19, 0x4e, 0x66, 0x66, 0xc9, 0xc9,
-0xcc, 0xd4, 0xcc, 0x34, 0x3c, 0x25, 0x77, 0x66,
-0xd5, 0xfb, 0x05, 0xa2, 0x45, 0x32, 0x20, 0xdd,
-0xf6, 0xae, 0xea, 0x8a, 0x0f, 0xff, 0x40, 0x6e,
-0x4c, 0x6c, 0xbc, 0xa7, 0x6f, 0x40, 0x7a, 0xe6,
-0xb9, 0x86, 0xa6, 0xe6, 0x91, 0xd1, 0x51, 0x75,
-0x2b, 0x23, 0x5a, 0x2f, 0x77, 0x3c, 0x88, 0xf1,
-0x15, 0x2d, 0x07, 0x0f, 0x1f, 0x86, 0x3f, 0xc1,
-0x3d, 0x19, 0x9a, 0x9d, 0x83, 0x4a, 0x63, 0x6c,
-0x62, 0x42, 0xdd, 0xfc, 0x2f, 0x3c, 0xda, 0xb2,
-0x65, 0xab, 0x0a, 0xd0, 0x58, 0x58, 0x5a, 0x25,
-0xa7, 0xa4, 0x7a, 0x7a, 0xf9, 0x9c, 0x4e, 0xcd,
-0xba, 0xd8, 0xd8, 0x2a, 0x1f, 0x52, 0x68, 0x18,
-0x7f, 0x86, 0x02, 0x54, 0xe7, 0x09, 0xf0, 0xa1,
-0xa0, 0xde, 0x96, 0x2d, 0x6f, 0x17, 0x95, 0x94,
-0xf8, 0xfa, 0x05, 0x98, 0x9a, 0x59, 0x1c, 0x33,
-0xb7, 0x06, 0x08, 0xf6, 0xe5, 0x86, 0xa7, 0xa4,
-0x67, 0x8a, 0x2a, 0x6b, 0xba, 0x7b, 0x7b, 0xc7,
-0x27, 0xae, 0x53, 0x83, 0x09, 0xca, 0xd6, 0x75,
-0xe6, 0xe6, 0x6c, 0x70, 0x48, 0xd8, 0xa3, 0xd8,
-0xce, 0xe6, 0xc0, 0x81, 0x2f, 0x33, 0xb2, 0xce,
-0x3a, 0xbb, 0x78, 0xc6, 0x25, 0x9c, 0x2e, 0x17,
-0x56, 0xf6, 0xf4, 0x49, 0x46, 0x47, 0xc7, 0xf0,
-0xc2, 0xb4, 0x59, 0x40, 0x8a, 0x69, 0xac, 0x33,
-0xa0, 0x27, 0xa0, 0x33, 0x53, 0x48, 0x73, 0x40,
-0x69, 0x66, 0x40, 0x09, 0xef, 0xbb, 0x4a, 0x88,
-0x06, 0x0e, 0x08, 0x39, 0x3b, 0x37, 0x0b, 0xe5,
-0x09, 0xda, 0x88, 0xb4, 0x6e, 0x7a, 0x0e, 0x62,
-0xa3, 0x74, 0x92, 0x52, 0x48, 0xa4, 0xa5, 0x28,
-0xfe, 0xe9, 0x29, 0xd4, 0xf1, 0xd0, 0xb8, 0x14,
-0xfd, 0x36, 0x1e, 0x10, 0xf0, 0xf2, 0xf6, 0xd5,
-0x6c, 0x19, 0xbe, 0x74, 0xe9, 0x0b, 0xc8, 0xdc,
-0xdd, 0xcb, 0x87, 0x1b, 0x14, 0x9e, 0x79, 0xbe,
-0xe8, 0xca, 0xd5, 0xfb, 0x98, 0xbb, 0xdf, 0x56,
-0xc2, 0x19, 0xa8, 0x04, 0xaa, 0x20, 0xa8, 0x6e,
-0xa0, 0x1a, 0x82, 0x6a, 0x0a, 0x14, 0xc2, 0xcc,
-0xcc, 0x8d, 0xa9, 0x69, 0xba, 0x34, 0xc8, 0x11,
-0x04, 0x4a, 0x03, 0x3a, 0x03, 0xc5, 0xa5, 0x02,
-0x4d, 0x30, 0xb4, 0xf0, 0xa9, 0x62, 0x41, 0x89,
-0x8f, 0x7f, 0x60, 0x48, 0x18, 0xbf, 0xa8, 0x44,
-0xd0, 0x71, 0xb5, 0x9b, 0x18, 0x53, 0xdd, 0x2f,
-0x27, 0xb7, 0xe6, 0x6e, 0x42, 0x41, 0xcd, 0x92,
-0xf2, 0x99, 0x42, 0x19, 0x98, 0x82, 0xd3, 0x69,
-0x9c, 0x1f, 0x54, 0xaf, 0xa1, 0x0c, 0x71, 0x31,
-0x22, 0x1d, 0x56, 0x03, 0xc1, 0x10, 0x2c, 0x35,
-0x2d, 0x7d, 0xd5, 0xaa, 0x35, 0x7f, 0xc9, 0x58,
-0x34, 0xe0, 0xaf, 0xae, 0xf9, 0x65, 0x6d, 0xe2,
-0xc9, 0x59, 0x49, 0x4b, 0xe7, 0x13, 0x3d, 0xfa,
-0xa8, 0x9c, 0x69, 0x55, 0xa8, 0xd8, 0x29, 0xd1,
-0x4c, 0x50, 0x85, 0x96, 0xce, 0xe7, 0xce, 0x77,
-0x8f, 0x4e, 0xab, 0x30, 0x53, 0x6d, 0xa5, 0xb9,
-0x14, 0x0d, 0xa0, 0xf3, 0x58, 0x2d, 0x35, 0xd4,
-0x8c, 0x3c, 0x56, 0xd9, 0x93, 0x7d, 0x06, 0xd1,
-0x1e, 0x82, 0xda, 0xd8, 0x75, 0xd5, 0x1d, 0xd3,
-0x2c, 0x07, 0xca, 0x19, 0x35, 0x8e, 0x4d, 0x41,
-0x16, 0x52, 0xad, 0x23, 0x7b, 0x17, 0x2a, 0xed,
-0xa0, 0x88, 0x1f, 0xad, 0x57, 0xe9, 0x0d, 0x07,
-0x89, 0x7f, 0x48, 0x07, 0xe4, 0x80, 0x9a, 0x5e,
-0xe8, 0x44, 0x76, 0x4e, 0x54, 0x82, 0xec, 0xfc,
-0x17, 0xb1, 0x45, 0x34, 0xd9, 0x67, 0xc1, 0x4e,
-0x46, 0x26, 0xaf, 0x11, 0xc3, 0x45, 0x8b, 0xb3,
-0x10, 0xcf, 0x65, 0xb0, 0x65, 0xc4, 0xe1, 0x06,
-0x83, 0x33, 0xa8, 0xc7, 0x42, 0x88, 0xac, 0xcf,
-0x06, 0x92, 0x2b, 0xd7, 0x67, 0x2b, 0x0c, 0xa1,
-0xf4, 0x00, 0x70, 0x59, 0x0a, 0x74, 0x07, 0xe8,
-0x30, 0x1b, 0xc1, 0xb1, 0x21, 0x1b, 0x95, 0x95,
-0x9e, 0x9d, 0x44, 0xd7, 0x5e, 0x6a, 0x68, 0xdb,
-0xa9, 0x63, 0x71, 0x45, 0xff, 0x58, 0x83, 0xee,
-0x51, 0xb1, 0xde, 0x0f, 0x45, 0x8c, 0x83, 0x99,
-0xdb, 0xcd, 0xb3, 0xdb, 0x7a, 0x14, 0x8f, 0x01,
-0x4c, 0xff, 0x84, 0x24, 0x25, 0x9f, 0x7e, 0x7b,
-0xeb, 0xbb, 0x3b, 0x77, 0xed, 0x39, 0x7c, 0xf8,
-0x07, 0x6b, 0x5b, 0xa6, 0x9f, 0x3f, 0x97, 0x1f,
-0x97, 0x9c, 0x79, 0xf6, 0x7c, 0x51, 0x49, 0x79,
-0x79, 0x45, 0x75, 0x85, 0x48, 0x2c, 0xb8, 0x50,
-0x95, 0x57, 0x50, 0x92, 0x9a, 0x9e, 0x15, 0xc5,
-0x4f, 0xf0, 0xf1, 0x3d, 0x69, 0xe7, 0xc0, 0xf9,
-0xef, 0xcf, 0xc7, 0x0e, 0x7c, 0x85, 0x28, 0xf0,
-0x96, 0xad, 0xef, 0xe0, 0x1d, 0x09, 0xd7, 0xeb,
-0xe8, 0xe8, 0xac, 0x59, 0xb3, 0x56, 0xeb, 0xe5,
-0x7f, 0x22, 0x8f, 0x58, 0x04, 0x82, 0x17, 0xe3,
-0xe5, 0x48, 0x4f, 0x3d, 0x45, 0x06, 0xa2, 0x89,
-0x53, 0x4a, 0x72, 0xd4, 0xb0, 0x62, 0x08, 0x02,
-0x27, 0xa7, 0x24, 0x03, 0xf9, 0xe5, 0x06, 0x85,
-0x9c, 0x3b, 0x5f, 0x70, 0xb9, 0xe3, 0x2a, 0x46,
-0x1c, 0x4d, 0xad, 0x07, 0x34, 0x77, 0x50, 0x61,
-0xc7, 0xc6, 0xc7, 0x07, 0xe5, 0x23, 0x12, 0xe9,
-0x40, 0x9f, 0x44, 0xde, 0xdb, 0x27, 0xe9, 0xed,
-0x93, 0xf5, 0x4b, 0x64, 0x7d, 0xfd, 0x70, 0x1c,
-0xe8, 0xed, 0xeb, 0xef, 0xeb, 0x87, 0xa3, 0x14,
-0x2e, 0x25, 0x52, 0xb9, 0x6c, 0x60, 0x10, 0x78,
-0x2b, 0xd4, 0x62, 0xcd, 0x0d, 0xc2, 0xe0, 0x90,
-0x7c, 0xe7, 0x8e, 0x5d, 0x2a, 0xd9, 0x0b, 0xe0,
-0x72, 0xf9, 0x31, 0x31, 0xae, 0x9e, 0xde, 0xa7,
-0x52, 0x32, 0x6a, 0xeb, 0x9b, 0x06, 0xe5, 0x43,
-0xea, 0xf0, 0xf7, 0x5a, 0x77, 0xf7, 0x43, 0xe1,
-0xbf, 0xfb, 0xf7, 0x1f, 0x28, 0x28, 0x2a, 0x0d,
-0x8d, 0x88, 0x2c, 0x2c, 0xa9, 0xc0, 0xb3, 0xe1,
-0x6a, 0xf6, 0xd2, 0xfd, 0x15, 0xed, 0xde, 0xbb,
-0xed, 0xdd, 0xf7, 0x54, 0x20, 0xef, 0xe8, 0x2f,
-0xa6, 0x19, 0x99, 0x19, 0xee, 0x9e, 0x40, 0xf4,
-0x32, 0x6a, 0x1b, 0x9a, 0x14, 0xc3, 0xc8, 0xde,
-0x49, 0x03, 0x70, 0xbc, 0xf1, 0xc6, 0x5b, 0x8f,
-0xae, 0x75, 0x82, 0xbf, 0xff, 0xd9, 0xe7, 0x5f,
-0x08, 0x84, 0xe5, 0xce, 0xae, 0xee, 0x47, 0xd1,
-0x0e, 0x0d, 0x36, 0x1c, 0x27, 0xd7, 0xe0, 0x90,
-0xa8, 0xf4, 0x8c, 0x9c, 0xba, 0x86, 0x86, 0x7e,
-0xa9, 0xec, 0x6e, 0x93, 0xd7, 0xf1, 0x89, 0x49,
-0x37, 0x57, 0x0f, 0xcd, 0x0e, 0xff, 0xff, 0x84,
-0xec, 0xd9, 0xbb, 0x37, 0xfb, 0xfc, 0x79, 0x47,
-0x67, 0x97, 0xb0, 0xc8, 0xe8, 0xdc, 0xfc, 0x92,
-0xc6, 0x4b, 0x6d, 0xd7, 0xba, 0xfa, 0x40, 0x49,
-0x7a, 0x7a, 0xfb, 0xb1, 0xce, 0x80, 0xe6, 0x80,
-0xb6, 0x48, 0x7b, 0x7a, 0xfb, 0xfa, 0x24, 0x03,
-0x7d, 0x52, 0xd9, 0xa0, 0x5c, 0x31, 0x82, 0x00,
-0x5a, 0xad, 0x0b, 0xc4, 0xf9, 0x02, 0x38, 0x31,
-0x31, 0x39, 0x25, 0x1f, 0x1a, 0x91, 0x0d, 0x0c,
-0x41, 0x9c, 0x10, 0x61, 0x2f, 0x3a, 0xa2, 0x08,
-0x89, 0x4e, 0xa2, 0x3b, 0x7d, 0x24, 0x21, 0xa9,
-0x74, 0x00, 0x02, 0x8e, 0x01, 0xfd, 0xbf, 0x79,
-0xfb, 0xde, 0x86, 0x7c, 0xca, 0x5f, 0x73, 0x2b,
-0x34, 0x2c, 0xfc, 0xff, 0x34, 0x9a, 0xf8, 0x2e,
-0x7a, 0x6e, 0x71, 0x4a, 0x5a, 0x9a, 0x97, 0x8f,
-0x2f, 0xae, 0x3b, 0xc8, 0xdc, 0x7d, 0x72, 0xf2,
-0x86, 0x66, 0xc7, 0x17, 0x00, 0x64, 0x00, 0xb4,
-0x63, 0xe3, 0x93, 0xf0, 0x81, 0x12, 0xe9, 0x10,
-0x54, 0x1c, 0xc8, 0x21, 0xd4, 0x14, 0x54, 0x6b,
-0x70, 0x95, 0xc1, 0xe7, 0x54, 0x9e, 0xe9, 0x4f,
-0x80, 0xef, 0x12, 0x8a, 0x44, 0x1a, 0x72, 0xf2,
-0x8f, 0xbf, 0xff, 0x03, 0x3a, 0x5a, 0x01, 0xdc,
-0x20, 0x6e, 0x30, 0x2f, 0xbf, 0x10, 0x8d, 0x62,
-0x8d, 0x4d, 0x68, 0xf2, 0xde, 0x7c, 0x1b, 0xfb,
-0xb0, 0x02, 0xe8, 0x84, 0x0e, 0xed, 0x80, 0x7c,
-0xa4, 0xaf, 0x5f, 0xa2, 0xac, 0xbc, 0x32, 0x5c,
-0x73, 0xa9, 0x5c, 0x49, 0x65, 0x03, 0xf0, 0x2b,
-0xa0, 0xd2, 0x69, 0xae, 0xbf, 0xd0, 0xf3, 0x89,
-0x8d, 0x4b, 0x58, 0x72, 0x97, 0x3b, 0x9a, 0xc7,
-0x20, 0x80, 0xbf, 0xaf, 0x9a, 0xb5, 0xe8, 0x52,
-0x83, 0xa8, 0x77, 0xc6, 0x63, 0xd5, 0xc9, 0x7c,
-0x4b, 0x27, 0x25, 0xbd, 0x1d, 0x54, 0x09, 0x43,
-0x4f, 0xcb, 0xaa, 0xc8, 0x6f, 0xdf, 0x92, 0xd3,
-0x80, 0x3b, 0x7f, 0xda, 0x57, 0x5b, 0x69, 0xf8,
-0x44, 0x27, 0x44, 0x6f, 0x6e, 0x48, 0xb0, 0x92,
-0xc4, 0x4c, 0x25, 0x4a, 0xdc, 0x80, 0x28, 0xbd,
-0x82, 0x90, 0xf9, 0x62, 0xcc, 0x40, 0xa9, 0x35,
-0xb9, 0x78, 0x36, 0x56, 0x41, 0x8c, 0x96, 0xb5,
-0x95, 0xdb, 0x23, 0xd2, 0x89, 0xd2, 0x27, 0x64,
-0xb4, 0x59, 0x47, 0x69, 0x38, 0xad, 0x6f, 0xdf,
-0x4f, 0xf9, 0x0c, 0xc1, 0x83, 0xde, 0xf4, 0x8c,
-0xed, 0x7c, 0xbb, 0x2f, 0xfa, 0x12, 0x9e, 0x22,
-0x8b, 0x71, 0x16, 0xd5, 0x69, 0x61, 0xb0, 0x31,
-0x2f, 0x66, 0x61, 0x47, 0x1c, 0x78, 0xb6, 0x57,
-0x1b, 0xcf, 0xfc, 0xea, 0x61, 0xe4, 0x25, 0x4f,
-0x19, 0x1c, 0x85, 0x1e, 0x0b, 0x47, 0xcb, 0x1c,
-0x36, 0x72, 0xe8, 0x61, 0x38, 0x48, 0x00, 0x7f,
-0x0d, 0x6d, 0x3a, 0x0c, 0x2c, 0x5a, 0xf4, 0x8e,
-0x8a, 0x8d, 0x7e, 0x2e, 0xd4, 0x3f, 0x92, 0xfb,
-0x89, 0x5d, 0x6e, 0xa7, 0x74, 0xfc, 0x2f, 0x87,
-0xda, 0x7b, 0x4a, 0x51, 0x71, 0xf1, 0x7b, 0xef,
-0x7f, 0xb0, 0x6b, 0xf7, 0xbe, 0xc3, 0x47, 0x7e,
-0xb4, 0xb1, 0x63, 0x7a, 0x73, 0xc3, 0xe3, 0x12,
-0x53, 0xb2, 0x73, 0xf2, 0x4b, 0xca, 0x2a, 0x2b,
-0xaa, 0xeb, 0x6a, 0x6a, 0x2f, 0x8a, 0xc4, 0x55,
-0x82, 0x72, 0x71, 0x76, 0x4e, 0x5e, 0x42, 0x62,
-0xea, 0xc9, 0xe0, 0x70, 0x77, 0x0f, 0x5f, 0x73,
-0x2b, 0xdb, 0x43, 0x87, 0x7f, 0xdc, 0xfb, 0xd9,
-0x57, 0xef, 0x6d, 0xff, 0xf8, 0xcd, 0xb7, 0xde,
-0x36, 0x31, 0xd9, 0x64, 0x60, 0x60, 0xb0, 0x76,
-0xed, 0x2b, 0xd8, 0x16, 0xfa, 0x9f, 0xcb, 0x5f,
-0xd4, 0x7a, 0x7e, 0xe9, 0x8b, 0x4b, 0x97, 0x2e,
-0x5d, 0xf4, 0x2c, 0x82, 0x60, 0xbc, 0x28, 0xf8,
-0x69, 0x6a, 0x20, 0x7a, 0xc1, 0x93, 0xd4, 0xb6,
-0x35, 0x4f, 0xaa, 0x2e, 0x4a, 0x22, 0x6d, 0x2c,
-0x3c, 0x8d, 0x89, 0x8b, 0xe7, 0x45, 0xf2, 0x03,
-0x82, 0x22, 0xb2, 0x73, 0x10, 0xfe, 0xe2, 0x39,
-0x56, 0xf5, 0xfc, 0x17, 0xef, 0x5a, 0x2b, 0x57,
-0x8c, 0x76, 0x74, 0x5e, 0x03, 0x40, 0x14, 0x8a,
-0x6a, 0x4a, 0x4a, 0xcb, 0x05, 0x65, 0xe2, 0xd2,
-0x32, 0x61, 0xa9, 0x40, 0x58, 0x5c, 0x2a, 0x2c,
-0x11, 0x08, 0xe1, 0xbc, 0x18, 0x1f, 0xcb, 0x2e,
-0x08, 0x05, 0x17, 0x44, 0x10, 0xac, 0xad, 0xfd,
-0x1a, 0xf1, 0xe5, 0xab, 0x01, 0xd9, 0x87, 0x47,
-0x47, 0x3f, 0xff, 0x62, 0xbf, 0x4a, 0xfd, 0x82,
-0xc6, 0x2d, 0x32, 0x2a, 0xe6, 0x84, 0xab, 0x57,
-0x3c, 0xf0, 0x26, 0xb4, 0x21, 0xbb, 0x7c, 0x4a,
-0xcd, 0x12, 0x0f, 0xb9, 0x62, 0x78, 0xc5, 0x8b,
-0x0f, 0x61, 0xec, 0xf4, 0xc0, 0x97, 0x5f, 0x15,
-0x0b, 0xca, 0x80, 0xa6, 0x09, 0x45, 0xd5, 0xd0,
-0x0a, 0xa9, 0xdd, 0x33, 0xe2, 0x57, 0x80, 0xaa,
-0xeb, 0x5b, 0xdf, 0xd9, 0x36, 0xff, 0xdd, 0x05,
-0x4f, 0x2c, 0xf8, 0xf6, 0xe0, 0x21, 0xf8, 0x95,
-0xae, 0x1e, 0xbe, 0x49, 0x29, 0xe9, 0x35, 0x75,
-0x97, 0x06, 0x06, 0xe5, 0x1a, 0xf8, 0x2f, 0xc8,
-0xf6, 0xed, 0x1f, 0x3e, 0xd2, 0x06, 0x0a, 0x7e,
-0xfd, 0x37, 0xdf, 0x7c, 0x5b, 0x21, 0x16, 0x3b,
-0xb0, 0x1d, 0x01, 0x81, 0x8f, 0x5b, 0xdb, 0x3a,
-0x9e, 0x70, 0x09, 0x0a, 0x8b, 0xcc, 0xc8, 0xce,
-0xab, 0xa9, 0x6b, 0xea, 0x97, 0x0e, 0x5e, 0x9f,
-0x9a, 0x56, 0xf1, 0x9a, 0x38, 0x3d, 0x3b, 0x67,
-0x76, 0xcc, 0xfc, 0x99, 0xfb, 0xed, 0x7e, 0xfb,
-0x87, 0xe4, 0xc3, 0x1d, 0x1f, 0xe5, 0xe4, 0x15,
-0x30, 0xd9, 0xce, 0x5e, 0xfe, 0x21, 0xb1, 0x09,
-0x49, 0xd9, 0xe7, 0x0a, 0x0a, 0x8a, 0x04, 0x45,
-0x02, 0x61, 0x59, 0xb9, 0xa8, 0xa4, 0xb4, 0xa2,
-0x14, 0x6b, 0x8b, 0xa0, 0x4c, 0x58, 0x54, 0x2a,
-0x14, 0x94, 0x57, 0x08, 0x2b, 0x6a, 0x6a, 0xeb,
-0x1b, 0x41, 0x67, 0xe0, 0x9f, 0xa2, 0xd9, 0x10,
-0x8d, 0xc3, 0xb9, 0x80, 0x23, 0x00, 0x67, 0xbd,
-0xfd, 0x92, 0xfa, 0xc6, 0x56, 0x71, 0x55, 0x5d,
-0xc9, 0x05, 0x51, 0x11, 0xa8, 0x62, 0x39, 0xd2,
-0x43, 0xa4, 0x8a, 0x44, 0x1b, 0x4b, 0xe1, 0x28,
-0x16, 0x20, 0x85, 0xac, 0x14, 0x57, 0xd5, 0x37,
-0x35, 0x5f, 0xee, 0x96, 0x0c, 0x8e, 0xdf, 0xa7,
-0x9f, 0x79, 0x2b, 0x3a, 0x26, 0x6e, 0xe1, 0xbd,
-0x26, 0x37, 0xc9, 0xb0, 0xd2, 0x13, 0x78, 0xb5,
-0x32, 0x3f, 0x36, 0x86, 0x7b, 0x32, 0xdc, 0x17,
-0x2f, 0x37, 0x6b, 0x6b, 0xbf, 0x0a, 0x38, 0xa5,
-0xb9, 0xee, 0xdf, 0xb8, 0x31, 0x0b, 0x3d, 0x8b,
-0xce, 0x6b, 0xbd, 0x75, 0xf5, 0x97, 0x84, 0x15,
-0x55, 0x90, 0xab, 0x62, 0x65, 0xc5, 0x41, 0x35,
-0xa8, 0x8c, 0xce, 0x2d, 0x16, 0x81, 0xb8, 0xa8,
-0x04, 0xbe, 0x42, 0x54, 0x55, 0x53, 0x27, 0xaa,
-0xaa, 0xbd, 0xa7, 0x77, 0x56, 0x22, 0x80, 0xbf,
-0x99, 0xd9, 0xd9, 0xd0, 0x56, 0x70, 0x83, 0x42,
-0x73, 0xf3, 0x4b, 0x5b, 0xdb, 0xaf, 0xdc, 0x40,
-0x0e, 0xac, 0xd4, 0xe2, 0x2f, 0x7c, 0x38, 0x54,
-0x46, 0xe8, 0x88, 0x40, 0x9f, 0xa1, 0xb6, 0xbe,
-0x41, 0x28, 0xac, 0x21, 0x7f, 0x81, 0x24, 0x0d,
-0x89, 0x16, 0xe3, 0xa2, 0x83, 0x56, 0xe8, 0x82,
-0xa8, 0xaa, 0xba, 0xae, 0xa1, 0xa5, 0xad, 0x5d,
-0x3a, 0x20, 0x1b, 0x1d, 0x9f, 0x54, 0xe7, 0xd6,
-0x72, 0xee, 0xd6, 0x4d, 0x6f, 0x1f, 0xdf, 0xc7,
-0x39, 0x17, 0x4c, 0x9a, 0xaf, 0x67, 0x57, 0x6e,
-0xd6, 0xb6, 0xe8, 0x24, 0x28, 0x43, 0x4f, 0xc8,
-0xce, 0x67, 0xbe, 0x0c, 0x36, 0x3e, 0x32, 0x11,
-0x3a, 0xd3, 0x00, 0xb4, 0x0e, 0x11, 0x3d, 0x85,
-0x01, 0x53, 0x42, 0x66, 0x8a, 0x29, 0xac, 0xb9,
-0x0b, 0x52, 0xe1, 0x5d, 0xfa, 0x29, 0x8d, 0xdd,
-0x06, 0xac, 0x41, 0x32, 0x60, 0x3b, 0xdf, 0xc2,
-0x8a, 0xb6, 0x25, 0x5e, 0xa7, 0x5c, 0x38, 0x4c,
-0x99, 0x4e, 0xcd, 0x4b, 0x88, 0xc0, 0x19, 0x4d,
-0xa5, 0x19, 0xd8, 0x22, 0x8b, 0x98, 0x36, 0x21,
-0x6a, 0x79, 0xc7, 0xa6, 0x4b, 0xae, 0xcb, 0x44,
-0x33, 0xad, 0x24, 0x12, 0x00, 0x3e, 0x1d, 0x26,
-0x61, 0xdc, 0xf2, 0x75, 0xcc, 0x21, 0xb8, 0x54,
-0xe9, 0x33, 0xd0, 0x66, 0xd5, 0x10, 0x33, 0x70,
-0x52, 0x1d, 0x5c, 0x14, 0x10, 0x21, 0xba, 0x64,
-0x21, 0x37, 0xd7, 0xf0, 0xc8, 0x90, 0x4d, 0x8d,
-0x72, 0xc3, 0x7d, 0x06, 0x1b, 0x65, 0xd2, 0x80,
-0x35, 0xa4, 0x8b, 0x27, 0x76, 0x21, 0x66, 0xb8,
-0xa9, 0x07, 0x09, 0xb1, 0xe0, 0x29, 0xf9, 0x3a,
-0x3c, 0x95, 0x8c, 0x49, 0x2e, 0x46, 0x5b, 0x24,
-0x10, 0x18, 0x22, 0x81, 0xdc, 0x9a, 0x70, 0x14,
-0xfa, 0xac, 0xe1, 0xf5, 0x9c, 0xe1, 0xf5, 0x6c,
-0x84, 0xdd, 0x46, 0xcc, 0x01, 0x06, 0x53, 0x66,
-0x60, 0xd7, 0xcd, 0xb0, 0xbb, 0xba, 0xde, 0xb2,
-0x71, 0xbd, 0x45, 0xbd, 0xe1, 0x2f, 0x15, 0xeb,
-0x7f, 0xc8, 0x39, 0xe0, 0x52, 0x3c, 0x34, 0xfe,
-0x48, 0x6c, 0x11, 0x1f, 0x5c, 0x2a, 0xab, 0xab,
-0x77, 0xec, 0xfc, 0xf8, 0xe3, 0x5d, 0x7b, 0x8e,
-0x1c, 0xf9, 0xd1, 0xd6, 0x9e, 0xe3, 0xcf, 0x0d,
-0x89, 0x4f, 0x4a, 0x39, 0x97, 0x9b, 0x5f, 0x56,
-0x51, 0x59, 0x55, 0x5b, 0x5f, 0x77, 0xb1, 0xb9,
-0xae, 0xee, 0xa2, 0xa8, 0xb2, 0x1a, 0x1a, 0xa8,
-0xb4, 0x33, 0x59, 0xbc, 0xa8, 0x18, 0x3f, 0x9f,
-0x93, 0x0e, 0x4c, 0xce, 0xd1, 0x5f, 0x8e, 0x7f,
-0xfd, 0x9f, 0x83, 0xbb, 0x76, 0x7f, 0xba, 0xed,
-0xdd, 0xf7, 0x81, 0x02, 0x1b, 0x1b, 0x9b, 0x10,
-0x08, 0x5e, 0xb9, 0x7a, 0x95, 0xd6, 0xcb, 0x2f,
-0xbd, 0xb0, 0x4c, 0xeb, 0x85, 0x17, 0x90, 0x5f,
-0xca, 0x45, 0x8b, 0x16, 0x01, 0x0d, 0x7c, 0x7a,
-0xe1, 0xd3, 0x4f, 0x2f, 0x7c, 0x96, 0xb0, 0x60,
-0x6a, 0x69, 0xd2, 0x93, 0x94, 0x83, 0x4a, 0xda,
-0x1c, 0x0b, 0x0d, 0x4d, 0x3f, 0xb1, 0x00, 0xf0,
-0x37, 0x24, 0x3c, 0x22, 0x3a, 0x36, 0x2e, 0x90,
-0x1b, 0x92, 0x71, 0xf6, 0x7c, 0x6b, 0xdb, 0x95,
-0xe1, 0x51, 0x4d, 0xf8, 0x0b, 0x94, 0x61, 0x62,
-0xe2, 0xfa, 0xb5, 0xee, 0x1e, 0x71, 0x55, 0x4d,
-0xe6, 0xd9, 0xdc, 0xf8, 0xc4, 0xd3, 0x51, 0x31,
-0x89, 0x3c, 0xb4, 0xb4, 0x33, 0x21, 0x32, 0x3a,
-0x81, 0xc7, 0x8f, 0x07, 0x89, 0x8c, 0x8a, 0x8f,
-0xe4, 0x23, 0xe1, 0xc7, 0x24, 0xc5, 0xc5, 0x9f,
-0x06, 0x6a, 0x7f, 0xa1, 0xa2, 0xb2, 0xf3, 0x5a,
-0x37, 0x72, 0xe7, 0xab, 0x3e, 0xe6, 0x89, 0xeb,
-0x93, 0xdf, 0x1e, 0x52, 0x75, 0xcb, 0xc3, 0x76,
-0x72, 0x8a, 0x49, 0x48, 0x02, 0xd6, 0xc6, 0x8b,
-0x8c, 0x85, 0xc6, 0x19, 0xef, 0x68, 0x70, 0xef,
-0xdf, 0x3a, 0x35, 0x33, 0xbd, 0xe9, 0x7e, 0x0e,
-0x03, 0x7f, 0x8f, 0x7c, 0xf7, 0xfd, 0x0f, 0x17,
-0x84, 0x15, 0x19, 0x59, 0x39, 0xf5, 0x0d, 0x4d,
-0xd0, 0xfe, 0xab, 0x1b, 0x8a, 0xbf, 0x79, 0x0b,
-0xb9, 0x68, 0x78, 0xe3, 0x8d, 0xcd, 0x2a, 0xaf,
-0xef, 0xd9, 0xfb, 0x69, 0x7e, 0x61, 0x89, 0xbb,
-0x97, 0x5f, 0xfc, 0xa9, 0x94, 0xea, 0xda, 0xa6,
-0x81, 0x41, 0x85, 0x06, 0xfe, 0x0b, 0xb2, 0x7b,
-0xf7, 0x23, 0x77, 0x22, 0x04, 0x30, 0x61, 0x7a,
-0xdc, 0xbc, 0xb8, 0xb4, 0xcc, 0xde, 0x81, 0xfd,
-0x8b, 0x99, 0xb9, 0xb5, 0xad, 0x83, 0xb3, 0xab,
-0x47, 0x14, 0x3f, 0x3e, 0x27, 0xb7, 0x18, 0x78,
-0xa8, 0x74, 0x00, 0x79, 0x4d, 0x54, 0x71, 0x97,
-0xd4, 0xdb, 0xdf, 0x7f, 0xf0, 0xe0, 0xe1, 0xdf,
-0xbf, 0x87, 0xc5, 0x7d, 0x65, 0xeb, 0xd6, 0x77,
-0x72, 0xf3, 0x0b, 0xad, 0xec, 0x1c, 0x38, 0x4e,
-0x6e, 0x5e, 0x3e, 0xfe, 0xc1, 0xa1, 0xbc, 0x70,
-0x5e, 0x74, 0x04, 0x3f, 0x36, 0x12, 0xab, 0x0d,
-0x48, 0x54, 0x74, 0x22, 0x1c, 0xe1, 0x0e, 0x9c,
-0xc4, 0x25, 0x24, 0xa7, 0x9d, 0x39, 0x57, 0x2e,
-0xac, 0xba, 0xd2, 0x89, 0x16, 0x50, 0xa3, 0x2d,
-0x9c, 0xd4, 0x01, 0xe5, 0xaf, 0x88, 0xfc, 0x0e,
-0x0c, 0x0e, 0x5d, 0x6a, 0x6e, 0xcf, 0xcd, 0x2f,
-0x4e, 0x4e, 0x49, 0x8f, 0x89, 0x4f, 0xa6, 0x94,
-0x10, 0x09, 0x15, 0x33, 0x2f, 0x2a, 0x0e, 0x29,
-0x67, 0x74, 0x5c, 0x6c, 0xfc, 0xa9, 0xe4, 0x94,
-0x4c, 0xf8, 0x41, 0x97, 0x9a, 0x3b, 0x80, 0xd6,
-0x69, 0xd8, 0xea, 0x0b, 0xf0, 0x37, 0x39, 0x25,
-0x55, 0x9d, 0x23, 0x71, 0x52, 0x83, 0x00, 0x10,
-0x43, 0xc2, 0xc2, 0x42, 0x42, 0x23, 0x00, 0x7f,
-0xb3, 0xb2, 0xf3, 0x5b, 0xda, 0xae, 0x8c, 0x8e,
-0x4d, 0x68, 0xe0, 0xbf, 0x10, 0x27, 0xf0, 0xee,
-0xee, 0x1e, 0x49, 0x65, 0x55, 0x4d, 0x56, 0x36,
-0xd4, 0x9d, 0x54, 0x94, 0x37, 0x7e, 0x9c, 0xb2,
-0x04, 0x12, 0x54, 0x72, 0x4e, 0xca, 0x27, 0x8a,
-0x9f, 0x70, 0xea, 0x74, 0x5a, 0x6d, 0x6d, 0x9d,
-0x86, 0xa5, 0xe2, 0x90, 0x9f, 0xd3, 0xa9, 0x69,
-0x61, 0x11, 0x91, 0xd0, 0x19, 0xc8, 0xce, 0x2b,
-0x68, 0x69, 0xef, 0x9c, 0xbc, 0x3e, 0xa9, 0x81,
-0xff, 0x82, 0xf6, 0x4e, 0x4c, 0x5e, 0xbf, 0xda,
-0xd5, 0x57, 0x21, 0xae, 0xcd, 0x3c, 0x9b, 0x13,
-0x97, 0x98, 0xcc, 0x87, 0x4e, 0x38, 0x3f, 0xee,
-0x4e, 0x2d, 0x8e, 0x89, 0xc7, 0xa9, 0xc7, 0xc5,
-0xc4, 0x41, 0xe2, 0x99, 0xf9, 0x45, 0x25, 0xd5,
-0x75, 0x4d, 0xdd, 0xbd, 0x52, 0xe8, 0xb4, 0xdc,
-0x54, 0x63, 0x00, 0x29, 0x95, 0x49, 0xf7, 0xee,
-0xfb, 0xfc, 0x51, 0x2b, 0xb3, 0x8a, 0x3c, 0xb7,
-0x76, 0xab, 0xb6, 0xe5, 0x35, 0x64, 0xda, 0xc4,
-0x1c, 0xd4, 0x65, 0x62, 0xe4, 0xc2, 0x74, 0x4f,
-0x9f, 0x4d, 0x0d, 0x0e, 0xc3, 0x1d, 0x72, 0x84,
-0x3b, 0x78, 0x84, 0x19, 0xd0, 0x50, 0x0a, 0x98,
-0x48, 0xc6, 0x5a, 0x91, 0x00, 0x7a, 0x02, 0x0e,
-0x12, 0x5b, 0x23, 0x78, 0x8a, 0x29, 0x9e, 0x21,
-0x7b, 0x88, 0xbc, 0x85, 0x9e, 0x32, 0xd1, 0x18,
-0xb2, 0x3e, 0x82, 0x1b, 0xfa, 0x52, 0x61, 0xc0,
-0x1a, 0x40, 0xc0, 0xca, 0xa2, 0x5e, 0xd1, 0x65,
-0x62, 0xa3, 0x2f, 0x26, 0x40, 0x24, 0x9a, 0x30,
-0xc5, 0x6c, 0x51, 0x4e, 0x27, 0x44, 0xc5, 0x80,
-0xf1, 0x17, 0x6e, 0x02, 0xae, 0x19, 0xe0, 0x73,
-0x3d, 0x02, 0xee, 0xf8, 0x92, 0x02, 0x41, 0xa6,
-0xdc, 0x10, 0x81, 0xa0, 0x82, 0x04, 0x30, 0x60,
-0xc9, 0x11, 0x2c, 0x32, 0xa5, 0x70, 0x07, 0xa2,
-0x05, 0x7c, 0xc4, 0xeb, 0x80, 0x14, 0x0c, 0x74,
-0x82, 0x02, 0xc3, 0xbb, 0x10, 0x1e, 0x92, 0x60,
-0xe0, 0xb7, 0x20, 0x1b, 0xe4, 0x45, 0x06, 0x6b,
-0x00, 0x9e, 0x1a, 0x00, 0x4b, 0x45, 0xb8, 0x4f,
-0x72, 0x25, 0x27, 0xa4, 0x95, 0x5c, 0xae, 0x43,
-0x91, 0xc3, 0xf9, 0x10, 0xb1, 0xaa, 0x22, 0x93,
-0xbc, 0x80, 0xb0, 0xc8, 0xc2, 0x0a, 0xf7, 0x0a,
-0xa0, 0xb8, 0xc8, 0x38, 0x33, 0x70, 0x5e, 0x94,
-0x0a, 0x46, 0x61, 0x84, 0xbc, 0x8e, 0x28, 0x18,
-0x03, 0x1d, 0x87, 0x0d, 0x1c, 0x06, 0x8d, 0xd8,
-0x43, 0xd0, 0xb7, 0x31, 0x74, 0xe8, 0x33, 0xb0,
-0xeb, 0x32, 0xb0, 0x6e, 0xdf, 0x60, 0x51, 0xc7,
-0x30, 0x15, 0x19, 0xfd, 0x98, 0xf3, 0x13, 0xb7,
-0x72, 0x62, 0x4a, 0xd3, 0x40, 0xd0, 0x5f, 0x28,
-0x97, 0x5a, 0x5b, 0x77, 0xef, 0xfd, 0x6c, 0xe7,
-0xae, 0x3d, 0x87, 0x10, 0xff, 0xe5, 0x04, 0x06,
-0x85, 0x26, 0x26, 0xa7, 0xe5, 0x15, 0x14, 0x57,
-0x88, 0xeb, 0xea, 0x1a, 0x9a, 0x1b, 0x2f, 0x5d,
-0xbe, 0xd8, 0xd4, 0x52, 0x53, 0xd7, 0x28, 0x28,
-0xaf, 0x04, 0x42, 0x9a, 0x78, 0x2a, 0x35, 0x24,
-0x3c, 0xd2, 0xd5, 0xdd, 0xdb, 0xc2, 0xc6, 0xee,
-0xc7, 0x9f, 0x8e, 0xee, 0xfb, 0xe2, 0xcb, 0x8f,
-0x76, 0xed, 0xd9, 0xb2, 0x75, 0xdb, 0xa6, 0xd7,
-0x5e, 0x67, 0x30, 0x18, 0x7a, 0x7a, 0x7a, 0xab,
-0xd7, 0xae, 0x59, 0xb9, 0x6a, 0xe5, 0x8b, 0x5a,
-0x5a, 0xcb, 0x96, 0x6b, 0x2d, 0x59, 0xb2, 0x14,
-0xf9, 0xc5, 0x7a, 0x0e, 0x99, 0x63, 0x11, 0x0a,
-0x4c, 0x04, 0xba, 0xc7, 0xc4, 0x1c, 0x8b, 0x5a,
-0x97, 0x34, 0x6f, 0x17, 0x57, 0x20, 0xc8, 0x7e,
-0xfe, 0x01, 0x71, 0x09, 0x89, 0x08, 0x7f, 0xb3,
-0x72, 0x5a, 0x5a, 0x01, 0x7f, 0x47, 0x35, 0xf4,
-0x9c, 0xe7, 0xe6, 0x6e, 0x02, 0x8c, 0xb6, 0xb4,
-0x75, 0xe4, 0xe6, 0x17, 0x85, 0x47, 0xc6, 0xba,
-0x7b, 0xfb, 0x73, 0x5c, 0x3c, 0x9c, 0x9c, 0x5c,
-0x39, 0x8e, 0xae, 0xd0, 0xb4, 0xb2, 0x1d, 0x5d,
-0x38, 0xce, 0xae, 0x6c, 0x27, 0x17, 0x47, 0x67,
-0x77, 0x16, 0xe7, 0x84, 0xd3, 0x09, 0x0f, 0x77,
-0x4f, 0xdf, 0x90, 0xd0, 0xc8, 0x8c, 0xac, 0xdc,
-0x8b, 0x8d, 0x2d, 0xd0, 0xdf, 0x9e, 0x51, 0xef,
-0x16, 0xfe, 0xfa, 0xd4, 0x8d, 0x9f, 0x8f, 0xfe,
-0xa2, 0x52, 0xbf, 0xcc, 0x8e, 0x1f, 0x3b, 0x9d,
-0x96, 0x0e, 0xdd, 0x8f, 0x93, 0xc1, 0x40, 0xcf,
-0xd1, 0xb6, 0xad, 0xd0, 0xc4, 0xa9, 0x9b, 0x8d,
-0x3a, 0x74, 0xf8, 0xfb, 0x07, 0x9f, 0x84, 0x62,
-0x73, 0x1c, 0x85, 0xa2, 0xca, 0xe2, 0xd2, 0xf2,
-0xce, 0x6b, 0x3d, 0xe3, 0x13, 0x93, 0xea, 0xfc,
-0x77, 0x41, 0x23, 0x24, 0x91, 0x49, 0x0c, 0x19,
-0xaa, 0xfe, 0xe7, 0xdf, 0xdf, 0xfe, 0x61, 0x51,
-0x89, 0xc0, 0xc3, 0xcb, 0x1b, 0x18, 0xb4, 0xb8,
-0xba, 0xa1, 0x5f, 0x36, 0xa8, 0xc1, 0xfe, 0x0a,
-0xe4, 0xeb, 0xff, 0x7c, 0xf3, 0x18, 0x9a, 0x29,
-0x50, 0x00, 0x4f, 0x5f, 0xef, 0x73, 0xf9, 0xf9,
-0x56, 0x36, 0x0e, 0xa6, 0x66, 0x16, 0x56, 0x36,
-0xf6, 0xf0, 0x5f, 0x22, 0xa3, 0xe3, 0x0b, 0x0a,
-0xcb, 0x80, 0xda, 0x0c, 0xca, 0x47, 0x6e, 0x4c,
-0x4d, 0xa9, 0x0c, 0xc6, 0x76, 0xf5, 0xf6, 0xec,
-0xdc, 0xf9, 0xf1, 0xc3, 0xda, 0x5d, 0xce, 0x64,
-0xe3, 0xa6, 0xf3, 0x05, 0x79, 0x96, 0x36, 0xf6,
-0x66, 0x56, 0x36, 0xb6, 0x0e, 0x6c, 0x16, 0xdb,
-0x09, 0x94, 0x84, 0x08, 0x74, 0xae, 0xe8, 0x73,
-0xd0, 0x1f, 0xc7, 0x13, 0x6e, 0x6e, 0x1e, 0xde,
-0x81, 0x21, 0xbc, 0xb4, 0x33, 0x67, 0x2f, 0x36,
-0xb6, 0x92, 0x19, 0x07, 0x0d, 0x03, 0xc5, 0xd7,
-0x6f, 0x4c, 0x77, 0xf5, 0xf4, 0x57, 0x88, 0xab,
-0xe3, 0x13, 0x53, 0xfc, 0x03, 0x43, 0x1c, 0x5d,
-0x3c, 0x41, 0x03, 0x91, 0x40, 0xb4, 0x8e, 0x94,
-0x2a, 0x92, 0xc8, 0x1d, 0x9d, 0x3d, 0x4e, 0xb8,
-0x7a, 0xfa, 0x05, 0x04, 0x27, 0x9c, 0x4a, 0x11,
-0x56, 0xd6, 0xf4, 0xa0, 0x2d, 0x9e, 0x35, 0x91,
-0xeb, 0xdc, 0xbc, 0xbc, 0x45, 0xcf, 0x2e, 0xd2,
-0x5c, 0xaa, 0xde, 0xbe, 0x68, 0xc9, 0xad, 0x8f,
-0x5f, 0x50, 0x66, 0x56, 0x4e, 0x73, 0x6b, 0x3b,
-0x5a, 0x6e, 0x76, 0x53, 0xad, 0xb5, 0x12, 0x68,
-0xc2, 0xe8, 0xf8, 0x38, 0xd0, 0x64, 0xa8, 0xec,
-0xbc, 0xa8, 0x58, 0x2f, 0x5f, 0xae, 0x8b, 0xab,
-0x27, 0x55, 0x71, 0x94, 0x45, 0x81, 0xc5, 0x0d,
-0xf2, 0x8c, 0xb2, 0xed, 0x88, 0x0b, 0xc4, 0xd9,
-0xc5, 0xd7, 0xff, 0x24, 0xf4, 0xcd, 0x17, 0x2f,
-0xd1, 0xe4, 0x69, 0x33, 0x26, 0x21, 0x3e, 0x22,
-0x32, 0x8a, 0x1b, 0x14, 0x7e, 0x36, 0x27, 0xbf,
-0xb5, 0xbd, 0x73, 0x0c, 0x55, 0x13, 0xf5, 0xbb,
-0x07, 0xce, 0xce, 0x29, 0x86, 0x47, 0xa0, 0xb2,
-0x43, 0x9d, 0x0a, 0xe5, 0x45, 0xbb, 0x7a, 0xfa,
-0x72, 0x9c, 0xdc, 0x1d, 0x9d, 0xdc, 0x9c, 0x4e,
-0x50, 0x65, 0xc5, 0x76, 0x76, 0x87, 0x6c, 0x40,
-0x66, 0x5c, 0xdc, 0x3c, 0xbd, 0x7c, 0x03, 0x20,
-0xb7, 0xd9, 0x39, 0xb9, 0x17, 0x9b, 0x5a, 0x65,
-0x83, 0x43, 0x6a, 0xfb, 0x93, 0xbf, 0xde, 0x2e,
-0xaf, 0x10, 0x3d, 0x14, 0x1b, 0x8c, 0xdf, 0x2f,
-0xcf, 0x1b, 0x7c, 0xa4, 0x67, 0xd3, 0xa3, 0x87,
-0xe0, 0x09, 0x61, 0xa8, 0x21, 0x6b, 0x90, 0xd8,
-0x5f, 0x11, 0x03, 0x21, 0x6c, 0x29, 0x84, 0xd8,
-0xa8, 0x21, 0x53, 0xb6, 0x0e, 0x39, 0x40, 0xa6,
-0x46, 0x4d, 0xf1, 0x42, 0x1b, 0x02, 0x61, 0xc8,
-0x94, 0x48, 0x17, 0xf1, 0x41, 0x19, 0x86, 0x27,
-0xf2, 0xae, 0x8c, 0xb6, 0x38, 0xc2, 0x4f, 0xe5,
-0xd8, 0x00, 0x78, 0x90, 0x80, 0x3b, 0x36, 0x9a,
-0xa2, 0x2c, 0x94, 0x68, 0x53, 0x25, 0x94, 0x1c,
-0x6b, 0x98, 0x8e, 0x5f, 0x0f, 0xd9, 0x5c, 0x11,
-0x23, 0x25, 0xe8, 0x12, 0xa0, 0x77, 0xf5, 0x99,
-0x0a, 0x3a, 0x24, 0xc4, 0xac, 0xc3, 0x9c, 0x17,
-0x98, 0xa9, 0x1c, 0x25, 0xc6, 0x27, 0xb4, 0xe1,
-0x93, 0xb6, 0xc3, 0x6f, 0x92, 0xa0, 0x2f, 0xa9,
-0xc0, 0xac, 0xdf, 0x04, 0xa6, 0xdf, 0xa5, 0xe2,
-0x64, 0x23, 0xdc, 0x24, 0xb9, 0x22, 0xa3, 0xca,
-0xb4, 0x49, 0x15, 0x15, 0x21, 0xe6, 0xd1, 0xd4,
-0x11, 0x07, 0x33, 0x44, 0x53, 0xba, 0x48, 0x7e,
-0x73, 0xc9, 0xa1, 0x6e, 0x12, 0xd9, 0xe0, 0x88,
-0x21, 0x98, 0x5c, 0x72, 0x80, 0x6e, 0x2b, 0x36,
-0xb0, 0x65, 0xc6, 0x6c, 0xa9, 0x11, 0xb3, 0xd7,
-0x98, 0xd9, 0xa9, 0x6f, 0xdd, 0xb9, 0xd1, 0xa6,
-0x61, 0x93, 0x45, 0xa5, 0xf1, 0xd1, 0x02, 0x7b,
-0xfe, 0xc5, 0x59, 0x35, 0xfd, 0xb4, 0xbf, 0x5c,
-0xba, 0x7a, 0x7a, 0xf6, 0x7f, 0xf9, 0x6f, 0xc0,
-0xdf, 0x6f, 0x0f, 0xfd, 0x60, 0x6d, 0xcb, 0x0e,
-0xe4, 0x06, 0x27, 0x25, 0xa7, 0xe6, 0xe6, 0x97,
-0x88, 0xc4, 0x35, 0x8d, 0x97, 0x5a, 0x9a, 0x5b,
-0x3b, 0xa0, 0x23, 0xdd, 0xd0, 0xd4, 0x5a, 0x5d,
-0x53, 0x5f, 0x58, 0x5c, 0x96, 0x9e, 0x79, 0x0e,
-0x58, 0x24, 0x84, 0x61, 0x72, 0x4e, 0x98, 0x1e,
-0xb3, 0xf8, 0xfa, 0x9b, 0x23, 0x9f, 0xee, 0xdb,
-0xbf, 0xfd, 0x83, 0x9d, 0x6f, 0xfe, 0x6b, 0xcb,
-0xc6, 0x4d, 0xaf, 0x19, 0x19, 0x19, 0x69, 0x6b,
-0xeb, 0x20, 0x16, 0xbc, 0x6a, 0x95, 0xd6, 0x4b,
-0x2f, 0x2d, 0x7f, 0x71, 0xc5, 0xd2, 0xa5, 0xcb,
-0x9e, 0x5f, 0x82, 0xa6, 0x83, 0x9f, 0x79, 0xe6,
-0x59, 0x7a, 0x9b, 0x60, 0x95, 0x6d, 0x1a, 0x08,
-0x16, 0x3f, 0xa1, 0x74, 0xc7, 0xe1, 0xe2, 0xee,
-0x9e, 0x9c, 0x02, 0x6d, 0x57, 0x30, 0xa4, 0x05,
-0x84, 0x68, 0x78, 0x64, 0x7c, 0xee, 0xd6, 0x9c,
-0xba, 0x76, 0x09, 0xf8, 0xe0, 0xd0, 0xf0, 0x58,
-0x53, 0x73, 0x2b, 0x90, 0x5f, 0x68, 0xca, 0x98,
-0x6c, 0x67, 0x4b, 0x2b, 0x3b, 0x53, 0x73, 0x2b,
-0x53, 0x0b, 0x6b, 0x33, 0x0b, 0x1b, 0x74, 0x34,
-0xb7, 0x86, 0x4b, 0x33, 0x73, 0x1b, 0x38, 0x9a,
-0x5b, 0xd9, 0xd9, 0xd8, 0xb3, 0x3d, 0x7d, 0x02,
-0xa0, 0xab, 0x5f, 0x59, 0x5d, 0x2f, 0x95, 0x0d,
-0xcd, 0xdc, 0xb5, 0xf2, 0x94, 0x96, 0x1b, 0xd3,
-0x53, 0x96, 0x56, 0xd6, 0x2a, 0xf5, 0xeb, 0xf3,
-0x2f, 0xf6, 0xe7, 0xe4, 0xe5, 0x5b, 0xdb, 0x31,
-0xbd, 0x7d, 0x02, 0x4e, 0xa7, 0xa2, 0xa5, 0xa3,
-0x68, 0x5b, 0xde, 0xb9, 0x7b, 0xff, 0x59, 0x5e,
-0x14, 0xff, 0x01, 0x47, 0x4d, 0xff, 0xf6, 0xe4,
-0xdf, 0x62, 0x13, 0xe2, 0x2b, 0xab, 0xeb, 0x6a,
-0xeb, 0x1b, 0x24, 0x32, 0xf9, 0xd4, 0xf4, 0xec,
-0xbd, 0xdb, 0x52, 0x34, 0x08, 0x3f, 0xdb, 0xd6,
-0xde, 0x71, 0xb7, 0xc3, 0xae, 0xb7, 0xfe, 0xf5,
-0xb6, 0x40, 0x58, 0xee, 0xe1, 0xe5, 0x17, 0x1b,
-0x9f, 0x8c, 0x76, 0x3d, 0x96, 0x0d, 0xce, 0x68,
-0xdc, 0x0a, 0xd3, 0xf4, 0xd8, 0xf1, 0x3f, 0xba,
-0x65, 0xd5, 0x9f, 0x93, 0xe5, 0xcb, 0x96, 0xfb,
-0x05, 0xf8, 0x65, 0x64, 0x9f, 0xb5, 0xb4, 0xb1,
-0x43, 0x6b, 0x82, 0xed, 0xd8, 0x1e, 0x1e, 0x01,
-0x90, 0xc9, 0xa2, 0x92, 0xb2, 0xe6, 0xd6, 0xce,
-0xe1, 0x91, 0x91, 0xe9, 0x99, 0x39, 0xf8, 0x2e,
-0xfa, 0xef, 0x00, 0x7b, 0x6a, 0x6e, 0x6b, 0x05,
-0xde, 0xfa, 0x50, 0xb2, 0xa7, 0xab, 0xa7, 0x9f,
-0x57, 0x58, 0x68, 0x65, 0x6d, 0x07, 0x04, 0xdc,
-0xf4, 0x98, 0x95, 0xa9, 0x39, 0x68, 0x0b, 0x12,
-0xa4, 0x2a, 0x16, 0xd4, 0xb9, 0xb9, 0xa5, 0xed,
-0x31, 0x73, 0xeb, 0xe3, 0x96, 0x36, 0x36, 0x76,
-0x2c, 0x77, 0x54, 0x80, 0x49, 0x55, 0xb5, 0x75,
-0x12, 0xa9, 0x6c, 0x46, 0xc3, 0x04, 0xfa, 0xaf,
-0xb7, 0xa7, 0xa6, 0x66, 0xbb, 0x7a, 0xfa, 0xca,
-0xca, 0x45, 0x11, 0x68, 0x9e, 0xc2, 0x03, 0xba,
-0x16, 0x16, 0x56, 0xb6, 0x28, 0x66, 0x2c, 0x38,
-0x66, 0x1b, 0x9c, 0x90, 0xa5, 0x99, 0xa5, 0x0d,
-0x74, 0x3f, 0x4e, 0xb8, 0xb8, 0x87, 0x85, 0x47,
-0x17, 0x96, 0x96, 0x5d, 0xed, 0xea, 0x55, 0x37,
-0x96, 0x42, 0x44, 0x50, 0x5e, 0xae, 0x79, 0x8b,
-0x28, 0xa8, 0x47, 0x6e, 0xee, 0x6e, 0x71, 0x09,
-0x49, 0xde, 0xbe, 0xdc, 0xd3, 0x19, 0xe7, 0x1b,
-0x9a, 0xdb, 0xf0, 0x72, 0x6f, 0xf5, 0xac, 0xf3,
-0xe6, 0xed, 0xe1, 0x91, 0x51, 0xa8, 0xe0, 0xa8,
-0xee, 0x9c, 0x0c, 0x61, 0xb2, 0x9d, 0xa0, 0x82,
-0x98, 0x5b, 0xda, 0x90, 0x1c, 0xce, 0xcb, 0x33,
-0xb9, 0x03, 0xb5, 0xc9, 0xca, 0xdc, 0x12, 0xdd,
-0xb7, 0xe7, 0x38, 0x43, 0x9f, 0x70, 0xd9, 0x32,
-0x55, 0xef, 0xac, 0xf3, 0x25, 0x2c, 0x02, 0xd4,
-0x3f, 0x06, 0xaa, 0x64, 0x56, 0x4e, 0x5e, 0x73,
-0x5b, 0xa7, 0x86, 0x95, 0x02, 0xb7, 0xf1, 0x06,
-0x58, 0x80, 0xbf, 0xd0, 0xbd, 0x49, 0x3d, 0x73,
-0xd6, 0x27, 0x30, 0xcc, 0x9e, 0xe9, 0x08, 0xbf,
-0xc6, 0xcc, 0x9c, 0x2e, 0x2b, 0x2b, 0x3a, 0x3f,
-0x90, 0x43, 0x3b, 0x07, 0x96, 0x9b, 0xbb, 0x4f,
-0x74, 0x6c, 0x42, 0x69, 0x99, 0x08, 0x28, 0x33,
-0x14, 0x9a, 0xba, 0x6f, 0x84, 0x76, 0xe3, 0x93,
-0xdd, 0x7b, 0x1f, 0x9b, 0x21, 0x16, 0x24, 0xb4,
-0xfc, 0xf5, 0xef, 0xd6, 0xd9, 0x4a, 0xf4, 0x31,
-0xa2, 0x01, 0x1c, 0xe8, 0xd0, 0x50, 0x88, 0x05,
-0x53, 0x48, 0x05, 0x26, 0x86, 0x98, 0xdc, 0xe1,
-0x11, 0x57, 0x32, 0xf4, 0x8a, 0x2f, 0x09, 0x17,
-0x06, 0xac, 0xc1, 0x8f, 0x30, 0x7d, 0x46, 0xe4,
-0x14, 0xd0, 0x16, 0x0d, 0x02, 0xa3, 0x77, 0xd7,
-0x29, 0x63, 0x33, 0x60, 0x0d, 0xd3, 0x91, 0x60,
-0xeb, 0xa3, 0xe1, 0x75, 0xf6, 0x98, 0x72, 0xa2,
-0x09, 0x5c, 0x84, 0xe0, 0x7a, 0x4c, 0x74, 0x4e,
-0x02, 0x93, 0x08, 0x11, 0x8a, 0x51, 0x89, 0x52,
-0x88, 0x89, 0xd7, 0xf2, 0x50, 0x1c, 0x13, 0xd9,
-0x32, 0x61, 0x0c, 0x05, 0x9a, 0x49, 0x11, 0x52,
-0x0e, 0xc6, 0x50, 0xcc, 0x3a, 0xe1, 0x11, 0x7d,
-0x49, 0x07, 0x46, 0x14, 0x1e, 0xd3, 0x52, 0xcc,
-0xc7, 0x29, 0x9c, 0x55, 0xb9, 0xd4, 0x57, 0xc6,
-0x46, 0x60, 0x9a, 0x9e, 0xa8, 0xd5, 0xc5, 0x94,
-0x96, 0xe2, 0xb3, 0xf8, 0x84, 0xc4, 0x6c, 0x88,
-0xe9, 0x2d, 0x61, 0xb8, 0x78, 0x88, 0x60, 0x18,
-0xb8, 0xed, 0x7a, 0x84, 0xad, 0x28, 0x03, 0x10,
-0x18, 0x8e, 0x46, 0x00, 0xbb, 0xec, 0x31, 0xe0,
-0xbf, 0x46, 0xf8, 0xd2, 0xd8, 0x11, 0x3d, 0x35,
-0x72, 0x02, 0x38, 0x56, 0x18, 0x73, 0x06, 0x4d,
-0x38, 0x03, 0x26, 0x9c, 0x7e, 0x13, 0x56, 0x97,
-0xb1, 0xc3, 0x95, 0x8d, 0xd6, 0xf5, 0x9b, 0x2c,
-0xab, 0x36, 0x9a, 0x16, 0x79, 0xa7, 0xb7, 0xfe,
-0xcf, 0xae, 0xee, 0x97, 0x0f, 0xc9, 0x0f, 0x1d,
-0xf9, 0x6e, 0xc7, 0xc7, 0x9f, 0x60, 0xfc, 0x65,
-0xf9, 0x07, 0x72, 0xe3, 0x12, 0x53, 0xf2, 0x0a,
-0x04, 0xa2, 0x4a, 0x80, 0x97, 0xcb, 0xad, 0x97,
-0x3b, 0x5a, 0x2f, 0x5f, 0x6d, 0x69, 0xeb, 0xac,
-0x6f, 0x68, 0xae, 0x10, 0xd7, 0xe4, 0xe4, 0x16,
-0x24, 0x25, 0xa7, 0x85, 0x47, 0x44, 0xbb, 0x78,
-0xfa, 0xd9, 0xda, 0xb1, 0x7e, 0xfa, 0xaf, 0xe9,
-0x57, 0x5f, 0x7d, 0xb3, 0xeb, 0x93, 0x7d, 0xdb,
-0xde, 0xfb, 0x60, 0xf3, 0x9b, 0x5b, 0x8c, 0x8d,
-0x4d, 0x0c, 0x0d, 0x0d, 0x75, 0x74, 0x74, 0x56,
-0xaf, 0x5e, 0xf3, 0xf2, 0xcb, 0x6b, 0x56, 0x68,
-0x69, 0xd1, 0xe6, 0x58, 0x4b, 0x16, 0xbf, 0x40,
-0xfb, 0xe5, 0x78, 0x7a, 0xe1, 0x33, 0x64, 0x3a,
-0x98, 0xec, 0x57, 0x08, 0xfd, 0x76, 0x62, 0x1d,
-0x4d, 0x88, 0x30, 0x30, 0xbe, 0xb4, 0xcc, 0x4c,
-0x1f, 0xff, 0x00, 0xa8, 0x8c, 0x0d, 0x80, 0xbf,
-0xc3, 0xa3, 0x37, 0x6f, 0xa9, 0x35, 0x4d, 0x81,
-0x66, 0xf9, 0xfa, 0x8d, 0x99, 0xce, 0x6b, 0xbd,
-0xa2, 0xca, 0x9a, 0x33, 0x19, 0x39, 0xd0, 0x48,
-0x86, 0x46, 0x44, 0x87, 0x84, 0xf1, 0x82, 0xc3,
-0xa2, 0x42, 0xc2, 0xa3, 0x42, 0x23, 0x90, 0x84,
-0x84, 0xf3, 0x42, 0x23, 0xf8, 0x61, 0xe1, 0xfc,
-0x50, 0x5e, 0x94, 0xb7, 0x1f, 0xf7, 0x84, 0x9b,
-0x47, 0x4c, 0x7c, 0x92, 0xb8, 0xaa, 0xa6, 0x47,
-0x32, 0xa4, 0xc1, 0x41, 0x2e, 0x5a, 0xf1, 0xc1,
-0xe6, 0xa8, 0x54, 0xb1, 0x37, 0x37, 0xbf, 0x55,
-0x54, 0x5a, 0xec, 0xc0, 0x74, 0x74, 0x71, 0xf7,
-0xe1, 0xc7, 0x26, 0x56, 0x88, 0xab, 0x7a, 0xfa,
-0xa4, 0x78, 0x1e, 0xf9, 0x1e, 0x2d, 0x40, 0x43,
-0x63, 0xe3, 0x3a, 0x9d, 0x75, 0x0f, 0x52, 0xa3,
-0xb5, 0x56, 0xbc, 0x24, 0xae, 0xac, 0xac, 0xaa,
-0xa9, 0xed, 0xb8, 0xda, 0x35, 0x32, 0x36, 0xa6,
-0x6e, 0x1c, 0x00, 0x3a, 0x21, 0x40, 0x18, 0x4b,
-0xcb, 0xcb, 0x96, 0x2c, 0x7e, 0x5e, 0x25, 0x86,
-0x8d, 0xaf, 0xbd, 0x0e, 0x4d, 0xa5, 0xa7, 0x37,
-0x82, 0x36, 0xa1, 0xb8, 0xa6, 0x5f, 0xa6, 0xd0,
-0xec, 0x89, 0xc8, 0xc2, 0xca, 0xfa, 0xf1, 0xe0,
-0x2f, 0xc8, 0xea, 0x55, 0xab, 0x53, 0xd3, 0xd2,
-0x13, 0x4f, 0x25, 0x1d, 0x43, 0x7d, 0x24, 0x0b,
-0x7b, 0x96, 0xa3, 0x9f, 0x7f, 0x48, 0xe2, 0xa9,
-0xf4, 0xb2, 0x0b, 0x95, 0x57, 0xbb, 0xba, 0xef,
-0x69, 0x5b, 0x5e, 0x2a, 0x28, 0xd7, 0x37, 0x30,
-0x7c, 0xf0, 0xa4, 0x5f, 0x59, 0xfb, 0x6a, 0x85,
-0x58, 0xc4, 0x8f, 0x89, 0x0b, 0x45, 0xba, 0x81,
-0x54, 0x25, 0x18, 0x24, 0x14, 0xa9, 0x0a, 0xd1,
-0x1c, 0x24, 0x61, 0xa0, 0x3c, 0x3c, 0xd0, 0x19,
-0x3f, 0xff, 0x93, 0x6e, 0xee, 0x9e, 0x3c, 0x7e,
-0x82, 0x50, 0x54, 0x25, 0x91, 0xca, 0x35, 0xb8,
-0x52, 0x24, 0xf8, 0x2b, 0x1f, 0x1a, 0x6e, 0x6a,
-0xbe, 0x9c, 0x5f, 0x58, 0x9c, 0x78, 0x2a, 0x25,
-0x82, 0x1f, 0x0b, 0x31, 0x28, 0x63, 0xbb, 0xa3,
-0x93, 0xa1, 0xe1, 0x11, 0xa1, 0x11, 0x91, 0xdc,
-0xe0, 0x70, 0xa0, 0x78, 0x41, 0x21, 0x91, 0xb9,
-0x05, 0x25, 0xd8, 0xd4, 0x41, 0xd3, 0x20, 0xad,
-0xb8, 0xaa, 0x6a, 0xe9, 0x92, 0xa5, 0x1a, 0x3e,
-0x0a, 0xea, 0x0e, 0x93, 0xc5, 0x3c, 0x75, 0x3a,
-0xd5, 0xc7, 0xef, 0x64, 0xda, 0x19, 0xb4, 0xdc,
-0x6c, 0x48, 0xa1, 0x69, 0xb9, 0xd9, 0x6d, 0x64,
-0x33, 0x3f, 0xd9, 0xdd, 0x2b, 0x11, 0x57, 0xd5,
-0x9d, 0xc9, 0x3a, 0x17, 0x1b, 0x77, 0x2a, 0x34,
-0xf2, 0x4e, 0x0e, 0xc3, 0x79, 0x31, 0x90, 0xe7,
-0x10, 0xba, 0x34, 0xd0, 0x27, 0xf0, 0x50, 0x81,
-0x44, 0x44, 0xf1, 0x63, 0xe3, 0x1b, 0x9a, 0x2e,
-0xad, 0xd4, 0xb8, 0xb1, 0x57, 0x60, 0x50, 0x70,
-0x7c, 0x42, 0xa2, 0x5f, 0x40, 0x50, 0xe6, 0xd9,
-0xbc, 0x4b, 0x2d, 0xed, 0x9a, 0xf1, 0x17, 0x14,
-0x78, 0x7c, 0x62, 0x02, 0x7a, 0x20, 0x17, 0x2a,
-0x2a, 0xcf, 0x64, 0x9e, 0xe3, 0xf1, 0x63, 0x22,
-0xa2, 0xa2, 0x95, 0x95, 0x97, 0xa4, 0x1b, 0x75,
-0x32, 0x38, 0x1c, 0x6a, 0xdd, 0x31, 0x40, 0x64,
-0x73, 0x0b, 0x26, 0xc7, 0x25, 0x30, 0x84, 0x97,
-0x97, 0x5f, 0xd2, 0x76, 0xf9, 0xea, 0xd8, 0x98,
-0xa6, 0x25, 0xed, 0x91, 0x7c, 0xfe, 0x63, 0xdb,
-0x54, 0x6b, 0xc1, 0x82, 0xbf, 0xaf, 0x78, 0x97,
-0xa9, 0x6f, 0x3f, 0xc0, 0xe0, 0x20, 0x50, 0xd3,
-0xc7, 0x43, 0xac, 0x04, 0x62, 0x10, 0x70, 0x38,
-0xc8, 0x31, 0x7d, 0x53, 0x50, 0x63, 0xad, 0x6c,
-0xc4, 0xe9, 0x08, 0x86, 0x1a, 0x60, 0x3c, 0xc5,
-0x9c, 0x4e, 0xf1, 0x7b, 0x2e, 0xf5, 0x10, 0x46,
-0x53, 0xd1, 0x12, 0x3c, 0x55, 0x09, 0xac, 0xaf,
-0x14, 0x62, 0xa4, 0x64, 0x88, 0x5f, 0x31, 0xc0,
-0xf0, 0x4a, 0x20, 0x98, 0x81, 0x87, 0x76, 0x09,
-0x2c, 0x1a, 0x12, 0x2b, 0x62, 0x14, 0x1e, 0xf5,
-0x0d, 0xee, 0x50, 0x4e, 0x14, 0x9b, 0x62, 0x3e,
-0xd6, 0x93, 0x4b, 0x3c, 0x33, 0x4b, 0xa5, 0x8b,
-0x9f, 0x2a, 0x68, 0x58, 0x9f, 0x7f, 0xa9, 0x7f,
-0xa7, 0xcb, 0x71, 0x27, 0x5d, 0xf8, 0x6a, 0x54,
-0x38, 0x38, 0x03, 0x7a, 0x04, 0x52, 0x71, 0x59,
-0x19, 0x60, 0x28, 0x07, 0xa8, 0x85, 0x4b, 0x7d,
-0x8c, 0xda, 0x50, 0x56, 0x00, 0xbb, 0x0c, 0xf6,
-0x98, 0x2e, 0x35, 0xc8, 0x8c, 0x06, 0x9c, 0x37,
-0x38, 0xe1, 0x4b, 0x8e, 0x02, 0x98, 0x2f, 0xa0,
-0xf0, 0x06, 0xc7, 0x31, 0x88, 0x01, 0x42, 0xc2,
-0xe5, 0x06, 0x8c, 0xbf, 0x0c, 0xb6, 0xdc, 0xc4,
-0x71, 0x08, 0xf0, 0x77, 0xb3, 0x63, 0x97, 0x09,
-0xf3, 0xca, 0xff, 0x33, 0x77, 0xe5, 0x61, 0x51,
-0xde, 0x5a, 0xff, 0x8f, 0xab, 0x40, 0x15, 0x14,
-0x10, 0x14, 0x2b, 0x2e, 0xe0, 0x2e, 0x9b, 0xc8,
-0x6a, 0x15, 0xdc, 0xb5, 0xa8, 0xb5, 0x2e, 0x55,
-0x5b, 0x6d, 0xaf, 0x5a, 0xef, 0x75, 0x6f, 0x2d,
-0x55, 0xac, 0x45, 0x18, 0x66, 0x98, 0x61, 0xdf,
-0x11, 0x41, 0x45, 0x51, 0x44, 0x10, 0x15, 0x17,
-0x44, 0x40, 0x10, 0x64, 0x11, 0x64, 0x17, 0x54,
-0x14, 0x41, 0x16, 0xd9, 0xb7, 0x19, 0x86, 0x45,
-0x5c, 0xaa, 0xf7, 0x7b, 0xbe, 0x93, 0xe4, 0x9d,
-0xf0, 0x3a, 0xc3, 0x8c, 0xbd, 0xf7, 0x9f, 0x76,
-0x9e, 0x3c, 0x79, 0x92, 0x4c, 0x72, 0x72, 0x92,
-0x9c, 0xe4, 0x97, 0x93, 0x37, 0xcb, 0x5c, 0xc7,
-0x47, 0x56, 0x0e, 0x45, 0xd6, 0xf6, 0xe9, 0x91,
-0x29, 0x35, 0x7f, 0x5b, 0xfc, 0xed, 0xee, 0xed,
-0x3d, 0xf0, 0xf3, 0xc1, 0x15, 0x76, 0xab, 0x7f,
-0xd8, 0xf6, 0xa3, 0xfd, 0xaf, 0x0e, 0x3e, 0x81,
-0xa7, 0x00, 0x7f, 0x93, 0xee, 0xa4, 0xe5, 0x17,
-0x96, 0x94, 0x3e, 0x2a, 0xaf, 0xaa, 0x7e, 0x59,
-0x55, 0x5d, 0xf7, 0xbc, 0xaa, 0xfa, 0x71, 0x79,
-0x45, 0x61, 0x51, 0x69, 0x5a, 0xfa, 0xfd, 0xf8,
-0x84, 0xe4, 0xc8, 0xa8, 0xd8, 0xc0, 0x90, 0x30,
-0xbe, 0x9b, 0x27, 0x28, 0x2f, 0xbb, 0x77, 0xef,
-0xdb, 0xf4, 0xed, 0x96, 0x55, 0x5f, 0xad, 0x5b,
-0xb2, 0x74, 0x99, 0xf5, 0xdc, 0x2f, 0x08, 0x04,
-0xcf, 0x9a, 0x35, 0x0b, 0xdd, 0x8b, 0x35, 0x49,
-0x5f, 0x77, 0x22, 0x68, 0xc1, 0x00, 0xc1, 0xe8,
-0x5c, 0xb0, 0xb6, 0xf6, 0x98, 0x51, 0x9a, 0x5a,
-0x1a, 0xea, 0xe8, 0xa5, 0x42, 0xf6, 0xd1, 0x24,
-0x02, 0xc4, 0xe4, 0x5b, 0x30, 0xd8, 0x07, 0x7f,
-0xf9, 0xf5, 0x7a, 0x7c, 0x82, 0xb7, 0x5f, 0xf0,
-0xe5, 0xb8, 0xf8, 0x92, 0xb2, 0x72, 0xf4, 0xd1,
-0x53, 0xfe, 0x37, 0xac, 0xee, 0xde, 0x9e, 0x88,
-0xc8, 0x08, 0x9e, 0x2b, 0x8f, 0xeb, 0xca, 0xe1,
-0xf2, 0xb8, 0x2e, 0x3c, 0x0e, 0x8f, 0xef, 0x42,
-0x1c, 0x60, 0x73, 0x79, 0x3c, 0x17, 0x9e, 0x0b,
-0x71, 0x40, 0xf8, 0xc9, 0xf0, 0x53, 0x79, 0x85,
-0x45, 0x02, 0x77, 0xef, 0xb3, 0xe7, 0xa3, 0xb2,
-0x73, 0xf2, 0x1b, 0x9b, 0x5b, 0x14, 0xbc, 0xde,
-0x0b, 0xc3, 0x85, 0x5f, 0x40, 0xe0, 0x40, 0xe7,
-0xc2, 0xbb, 0xc5, 0x40, 0xc1, 0xbc, 0x9d, 0x94,
-0xcc, 0xf7, 0xf0, 0x76, 0xe2, 0xf0, 0x83, 0x42,
-0xc2, 0x92, 0x53, 0xd2, 0xcb, 0x9f, 0x55, 0x02,
-0x32, 0x0e, 0xca, 0x61, 0xff, 0x9b, 0xd7, 0x07,
-0x0f, 0xda, 0x93, 0xe4, 0x04, 0xd4, 0x06, 0x85,
-0x36, 0xa9, 0x40, 0xba, 0x3f, 0x1c, 0xb2, 0xfb,
-0x7a, 0xed, 0x3a, 0xa8, 0x7c, 0xc8, 0xa2, 0xa3,
-0x53, 0xd4, 0x2f, 0xff, 0xfb, 0xc5, 0x9b, 0xb7,
-0xef, 0x7a, 0xfb, 0xfa, 0x4e, 0x85, 0x87, 0xd3,
-0xfd, 0x39, 0x94, 0xc8, 0x8c, 0x99, 0xb3, 0xee,
-0xe7, 0x3d, 0xf0, 0xf6, 0xf1, 0x3f, 0x77, 0x3e,
-0x3a, 0x2b, 0x3b, 0xbf, 0xa9, 0xa5, 0x45, 0xf1,
-0x4d, 0x08, 0x7c, 0x81, 0x9b, 0x8a, 0xf2, 0x67,
-0xf2, 0xb8, 0x25, 0x95, 0xc0, 0xfe, 0x57, 0x9e,
-0x2d, 0x5b, 0x3a, 0xea, 0x20, 0x44, 0x90, 0x19,
-0x32, 0x74, 0xca, 0xd4, 0x69, 0x71, 0x37, 0x6e,
-0x46, 0x5f, 0x8a, 0x85, 0x71, 0xd5, 0xfe, 0xf0,
-0x6f, 0x4e, 0xce, 0xae, 0xbe, 0x01, 0xc7, 0x2f,
-0x5e, 0x8a, 0xbd, 0x8f, 0x0e, 0x05, 0xd7, 0x75,
-0x89, 0x7b, 0xa0, 0x62, 0xd9, 0x53, 0x2f, 0x80,
-0xa7, 0x9c, 0xdc, 0x7c, 0xbd, 0x89, 0x7a, 0x74,
-0xcf, 0xc0, 0x27, 0x67, 0x0b, 0x94, 0x2b, 0xf6,
-0x7e, 0x3f, 0x8d, 0x91, 0x1a, 0xfb, 0xf6, 0xef,
-0x77, 0xe1, 0x39, 0x63, 0x51, 0x21, 0x36, 0x07,
-0x1c, 0x44, 0x90, 0x78, 0x7c, 0x1e, 0x97, 0xe7,
-0x02, 0x92, 0xc3, 0x71, 0xe1, 0x06, 0x04, 0x05,
-0xe4, 0x15, 0x16, 0x7a, 0x78, 0xf9, 0x9f, 0x3e,
-0x13, 0x89, 0x1e, 0x15, 0x6a, 0x68, 0x62, 0x5e,
-0x04, 0x90, 0x53, 0x81, 0x45, 0x45, 0x45, 0x6e,
-0xee, 0x7c, 0x4a, 0x13, 0x6c, 0x10, 0x3c, 0xf0,
-0xba, 0x60, 0x82, 0x5c, 0x9e, 0x2b, 0xb1, 0x21,
-0x5c, 0xe0, 0xce, 0xcf, 0xcd, 0x2f, 0x38, 0x11,
-0x1a, 0xe6, 0x17, 0x74, 0x3c, 0xf1, 0x4e, 0x7a,
-0x79, 0x65, 0x9d, 0xb8, 0x5b, 0xd1, 0x26, 0xe1,
-0xb2, 0xc7, 0x8f, 0xc7, 0xeb, 0x8e, 0x97, 0xf7,
-0xa6, 0x27, 0xaa, 0x8a, 0xa1, 0x4a, 0xfb, 0xf6,
-0x1f, 0x88, 0xbf, 0x95, 0xe0, 0xed, 0xeb, 0x07,
-0xf8, 0x0b, 0xea, 0x24, 0x7a, 0x78, 0x57, 0xc1,
-0xf7, 0xdf, 0x0f, 0x00, 0x4f, 0x67, 0x48, 0xc7,
-0xc1, 0x3d, 0xc5, 0x19, 0x3b, 0xb8, 0x98, 0x73,
-0xc2, 0x2d, 0x57, 0xd2, 0x9b, 0x24, 0xcc, 0x73,
-0x71, 0x04, 0x57, 0x8e, 0xfd, 0xa1, 0x5f, 0xa0,
-0x0b, 0xb3, 0x1b, 0x54, 0x4a, 0x00, 0xf8, 0x02,
-0x41, 0x74, 0xcc, 0x65, 0x5f, 0xbf, 0xc0, 0xeb,
-0x37, 0x13, 0x4b, 0x1f, 0x97, 0x8b, 0xba, 0x7a,
-0xe4, 0x2d, 0x13, 0xe1, 0x5e, 0xdc, 0x1d, 0x7e,
-0xe6, 0x2c, 0x54, 0x3b, 0x6a, 0x02, 0x5c, 0x5d,
-0x1c, 0x2e, 0x3b, 0x5f, 0xc8, 0x94, 0xe3, 0x1f,
-0x10, 0x98, 0x74, 0xe7, 0x4e, 0xe6, 0xfd, 0x2c,
-0x81, 0x87, 0xa7, 0x13, 0x87, 0x7b, 0x22, 0x34,
-0x3c, 0x31, 0x39, 0xed, 0x59, 0x45, 0x15, 0xde,
-0x3a, 0x2e, 0x17, 0xd9, 0x2b, 0x2a, 0x2b, 0x0d,
-0x66, 0x19, 0x52, 0xae, 0x64, 0x05, 0xf8, 0xcf,
-0x98, 0x3f, 0xd9, 0x79, 0x95, 0x94, 0x55, 0xf5,
-0xd7, 0x05, 0x1b, 0x3a, 0x75, 0x18, 0x73, 0x18,
-0xfc, 0x22, 0x20, 0x02, 0x6e, 0x80, 0x95, 0xd9,
-0xce, 0x08, 0xbc, 0xc0, 0x06, 0x4d, 0x8d, 0xfc,
-0x65, 0x8c, 0xb5, 0x45, 0x82, 0x20, 0x44, 0xdd,
-0x03, 0x88, 0x31, 0x92, 0x24, 0x04, 0x83, 0xfe,
-0x75, 0x62, 0xfe, 0x45, 0x38, 0x8e, 0xe3, 0x90,
-0x7f, 0xa5, 0xbc, 0x28, 0x32, 0x8e, 0x4f, 0xdc,
-0x78, 0x93, 0x52, 0x27, 0x36, 0x12, 0xe2, 0x4e,
-0x42, 0x53, 0x80, 0x2d, 0xbc, 0x55, 0x18, 0xa0,
-0x0a, 0x01, 0x1f, 0x80, 0x9d, 0x33, 0x86, 0x36,
-0x92, 0x11, 0xb3, 0xba, 0xcb, 0x68, 0x9a, 0x46,
-0x1c, 0x19, 0x26, 0x49, 0x71, 0x9c, 0x31, 0x29,
-0x97, 0x4e, 0x26, 0x89, 0x24, 0x47, 0x23, 0x27,
-0x16, 0x05, 0xac, 0x99, 0x12, 0x07, 0x89, 0x86,
-0x72, 0xc4, 0xb6, 0x09, 0x0e, 0x37, 0x71, 0x26,
-0xf5, 0x83, 0x15, 0x58, 0x56, 0x11, 0x88, 0xda,
-0x6b, 0xc4, 0xe9, 0x32, 0xe2, 0x88, 0x66, 0x23,
-0xde, 0xc4, 0x10, 0x01, 0x40, 0x16, 0xea, 0x70,
-0x36, 0x42, 0xdb, 0x4e, 0xc8, 0xd7, 0x9c, 0xdb,
-0x39, 0x9b, 0x8b, 0xa2, 0x99, 0x71, 0x3b, 0xcd,
-0x79, 0x42, 0x73, 0x57, 0x21, 0xb2, 0x19, 0x47,
-0x27, 0xd8, 0x16, 0xdc, 0xe6, 0x2f, 0xf8, 0x6d,
-0xd6, 0x2e, 0x75, 0xf3, 0x38, 0x55, 0xb6, 0x4e,
-0xe5, 0xf3, 0x8e, 0x16, 0xd8, 0x1c, 0xcd, 0x4e,
-0x2a, 0x6c, 0xf8, 0xcb, 0x71, 0x56, 0x9e, 0x79,
-0xfd, 0xf6, 0xed, 0x31, 0x0e, 0x6f, 0xe9, 0xb2,
-0x15, 0xdf, 0xff, 0xb0, 0xdd, 0xde, 0xfe, 0xb0,
-0xa7, 0xef, 0x71, 0xd0, 0x95, 0x40, 0xcf, 0x85,
-0x59, 0x31, 0x60, 0x2e, 0xe0, 0x6f, 0x4d, 0x5d,
-0x63, 0x4d, 0x5d, 0x43, 0x45, 0x65, 0xcd, 0xa3,
-0x27, 0x4f, 0x1f, 0xe4, 0x17, 0xa4, 0xdc, 0x4d,
-0xbf, 0x12, 0x77, 0x03, 0x86, 0x23, 0x2f, 0xff,
-0x10, 0x67, 0x17, 0xee, 0xcf, 0xbf, 0x1c, 0xda,
-0xf1, 0xe3, 0xae, 0x0d, 0xdf, 0x6c, 0x59, 0xb5,
-0x6a, 0xcd, 0x82, 0x45, 0x8b, 0xc9, 0x89, 0x60,
-0x43, 0x43, 0x23, 0x72, 0x22, 0x49, 0x4f, 0x1f,
-0x41, 0x30, 0xba, 0x9a, 0xe3, 0xf3, 0x71, 0xa0,
-0x08, 0x03, 0x06, 0xa3, 0x4d, 0x59, 0xea, 0x5a,
-0xa0, 0x02, 0x83, 0x3a, 0x0c, 0xf8, 0x4b, 0x56,
-0xa4, 0xc9, 0x72, 0x34, 0x51, 0x84, 0xf7, 0xec,
-0xdd, 0x77, 0x2b, 0x31, 0xd9, 0xcf, 0x3f, 0xe8,
-0xf2, 0x95, 0x9b, 0xc5, 0x78, 0xd3, 0xd1, 0x9b,
-0x37, 0x72, 0xc7, 0x90, 0xb6, 0x8e, 0xb6, 0x95,
-0xab, 0x57, 0x43, 0x42, 0x62, 0x08, 0x11, 0xb0,
-0xd1, 0x5e, 0x2f, 0xbc, 0xbe, 0x4d, 0x0c, 0xf9,
-0xd7, 0xdc, 0xc2, 0x3c, 0xed, 0xde, 0x3d, 0xfc,
-0xb8, 0xc3, 0x85, 0xcc, 0xec, 0xfc, 0xfa, 0xc6,
-0x96, 0x57, 0xaf, 0xe4, 0x2e, 0xc6, 0xc2, 0xe8,
-0x74, 0x02, 0x5f, 0xb2, 0x47, 0x9f, 0x50, 0x04,
-0x03, 0x3c, 0x87, 0x9e, 0x0c, 0x3d, 0x13, 0x71,
-0xee, 0xe8, 0xef, 0x4e, 0x5e, 0x3e, 0xfe, 0xd1,
-0xb1, 0xd7, 0xf2, 0x0b, 0x4b, 0x9b, 0x9a, 0xe5,
-0x6e, 0x4b, 0xce, 0xbe, 0x9f, 0xab, 0xab, 0x3b,
-0x9e, 0x4d, 0x64, 0x08, 0x5e, 0x55, 0xa6, 0x0e,
-0xd9, 0x40, 0x3a, 0x9a, 0x8d, 0x50, 0x1d, 0x11,
-0x76, 0xea, 0x54, 0x3d, 0x3e, 0x8b, 0xd1, 0xf7,
-0xaa, 0x5f, 0xde, 0x3a, 0xf9, 0x7b, 0x74, 0xf2,
-0xa8, 0x4f, 0x28, 0x12, 0xd9, 0x1f, 0xb2, 0x57,
-0x96, 0xec, 0x50, 0xa2, 0x44, 0xf4, 0xf5, 0x26,
-0xe7, 0xe4, 0xe5, 0xf9, 0xfa, 0x05, 0x9c, 0x39,
-0x77, 0x11, 0x94, 0x8b, 0xba, 0x97, 0x8d, 0x8a,
-0x6f, 0xc2, 0xf7, 0x0d, 0x08, 0x80, 0xb9, 0x10,
-0xe5, 0x84, 0x6c, 0x8a, 0xa3, 0x7b, 0xe4, 0x28,
-0x74, 0x4a, 0x95, 0x48, 0xca, 0x96, 0x2a, 0x8b,
-0x54, 0xb9, 0x06, 0xf0, 0x17, 0x1b, 0x1b, 0x5b,
-0xdb, 0xe4, 0xd4, 0x94, 0x90, 0xd0, 0x93, 0x47,
-0x7e, 0x3b, 0xe6, 0x08, 0xd3, 0x1a, 0x0f, 0xdf,
-0x90, 0xb0, 0xb3, 0x09, 0x89, 0x77, 0x8b, 0x4b,
-0x1f, 0x37, 0xb5, 0xb6, 0xc8, 0x7e, 0x08, 0x86,
-0xc1, 0x16, 0x14, 0xb0, 0x49, 0x13, 0xf5, 0xa4,
-0x68, 0xb2, 0x99, 0xa4, 0xb6, 0x54, 0xf3, 0xb1,
-0xab, 0x5d, 0x45, 0x69, 0x40, 0x36, 0x40, 0x5a,
-0xc0, 0x86, 0x82, 0xb3, 0x05, 0x89, 0x48, 0x11,
-0xcc, 0x24, 0xef, 0x65, 0xa6, 0xfb, 0xf8, 0x05,
-0x9c, 0x0a, 0x8f, 0x80, 0x39, 0x5b, 0x5d, 0x7d,
-0xa3, 0xbc, 0xe5, 0x0e, 0xdc, 0x16, 0xef, 0xcf,
-0x9f, 0x8f, 0xd4, 0xd4, 0xd0, 0xa4, 0x94, 0x29,
-0x7d, 0x76, 0x08, 0x31, 0x1a, 0xea, 0x1a, 0x67,
-0x23, 0xce, 0x85, 0x9d, 0x3e, 0x13, 0x10, 0x74,
-0x22, 0x31, 0x19, 0x26, 0x72, 0x55, 0x78, 0x73,
-0x97, 0x5c, 0x90, 0xaa, 0x7c, 0xf1, 0x62, 0xe2,
-0x84, 0x49, 0x52, 0xd3, 0x18, 0xb6, 0x14, 0xc1,
-0x5f, 0xdb, 0x77, 0xec, 0x4c, 0x48, 0x4a, 0xf1,
-0xf6, 0x0d, 0xb8, 0x74, 0xf9, 0xfa, 0xc3, 0xb2,
-0xf2, 0xb6, 0xf6, 0x0e, 0x79, 0xdb, 0x93, 0x88,
-0xe4, 0xd8, 0xd9, 0xad, 0xa6, 0xec, 0x49, 0x31,
-0xc9, 0x66, 0x9e, 0xba, 0xe9, 0x82, 0x15, 0x04,
-0x92, 0x86, 0x96, 0x6a, 0x05, 0x6a, 0x3b, 0xbb,
-0x70, 0x62, 0xaf, 0xc6, 0x01, 0xfe, 0x5e, 0xbb,
-0x71, 0x0b, 0x66, 0xd1, 0xa2, 0x2e, 0xb1, 0x02,
-0xc1, 0x6b, 0xef, 0xec, 0x58, 0xb2, 0x64, 0x89,
-0x54, 0xbe, 0xec, 0xba, 0x02, 0x03, 0x03, 0x85,
-0x9e, 0x9e, 0xfe, 0x2f, 0xf6, 0xbf, 0xe6, 0x3c,
-0xc8, 0x0b, 0x39, 0x11, 0x76, 0xee, 0xfc, 0xc5,
-0x8c, 0xac, 0x07, 0xa0, 0x32, 0xe3, 0x43, 0x61,
-0x72, 0xe5, 0x59, 0x24, 0xee, 0x5e, 0x61, 0x67,
-0x37, 0xa8, 0x18, 0x50, 0xf1, 0x96, 0x5a, 0xa0,
-0x56, 0x2c, 0xd8, 0xec, 0xae, 0xca, 0xc6, 0x5f,
-0x08, 0x54, 0x19, 0x3e, 0x6a, 0xda, 0xf6, 0x9b,
-0x00, 0x73, 0xc6, 0x68, 0x5b, 0x2f, 0x82, 0x24,
-0x40, 0x1c, 0xaa, 0xcd, 0x99, 0x72, 0x3a, 0x0c,
-0x8e, 0x36, 0x1b, 0x1d, 0x46, 0x0f, 0xd4, 0x4e,
-0xdd, 0x93, 0x3b, 0x75, 0x6f, 0x9e, 0xc1, 0xc1,
-0x87, 0x06, 0x0e, 0x35, 0x86, 0x47, 0x9b, 0x4c,
-0xf1, 0x77, 0x4c, 0x13, 0xb4, 0xac, 0x8a, 0x50,
-0xc6, 0xc0, 0x89, 0x49, 0x42, 0x00, 0x14, 0xdc,
-0xb3, 0xb1, 0xc3, 0x14, 0xa9, 0x87, 0xc8, 0x2d,
-0xeb, 0x35, 0x72, 0x66, 0x22, 0x1b, 0x38, 0x31,
-0x91, 0x4d, 0x58, 0x28, 0x6c, 0x8a, 0x41, 0xd6,
-0xd8, 0x05, 0xb1, 0x64, 0x22, 0x81, 0xd4, 0xd9,
-0x14, 0x07, 0x25, 0xd1, 0x0c, 0x25, 0x90, 0x4a,
-0xbd, 0x86, 0xc4, 0x4b, 0xd4, 0x52, 0x8c, 0xb0,
-0x14, 0xd0, 0x3f, 0x82, 0x6c, 0x0e, 0xc5, 0x68,
-0x26, 0x84, 0x50, 0x66, 0x78, 0xc0, 0x0a, 0x38,
-0x49, 0x0b, 0x30, 0x2a, 0xc9, 0x9a, 0x01, 0x77,
-0x02, 0xcd, 0xe4, 0x5f, 0xa8, 0x3a, 0x13, 0x52,
-0x28, 0x2e, 0x8a, 0x09, 0x6e, 0x33, 0x2e, 0x0a,
-0x24, 0x5e, 0x33, 0x1e, 0x8e, 0xc3, 0x45, 0xff,
-0x42, 0xb8, 0x39, 0x1b, 0x7f, 0x5d, 0x45, 0xc8,
-0xe1, 0x2a, 0x9c, 0x27, 0x68, 0x03, 0x33, 0x9f,
-0xdf, 0x38, 0xdf, 0xb5, 0xc1, 0xd6, 0xb5, 0x76,
-0x31, 0xf7, 0xc9, 0xc2, 0x63, 0x05, 0x4b, 0x8e,
-0x65, 0x17, 0x56, 0xb4, 0xfe, 0xe5, 0x38, 0x2b,
-0x1f, 0x68, 0xde, 0x07, 0x06, 0x06, 0x2d, 0x59,
-0xba, 0xfc, 0xbb, 0xef, 0x7e, 0xf8, 0xe9, 0xa0,
-0xbd, 0x87, 0x4f, 0xc0, 0xd9, 0xf3, 0x17, 0x12,
-0x12, 0xef, 0x64, 0xe7, 0x16, 0x97, 0x3d, 0xae,
-0x78, 0x51, 0xd3, 0x50, 0xfb, 0xb2, 0x09, 0xcc,
-0x8b, 0x9a, 0xc6, 0xf2, 0x0a, 0xb4, 0x0a, 0x9d,
-0x9d, 0x53, 0x90, 0x94, 0x9c, 0x16, 0x7d, 0x29,
-0xee, 0x64, 0x78, 0x84, 0x9b, 0x87, 0xdf, 0x11,
-0x47, 0xce, 0xbe, 0x03, 0x07, 0xb7, 0x6d, 0xdf,
-0xb9, 0xee, 0x9b, 0xcd, 0xcb, 0xbf, 0x5c, 0x65,
-0xbb, 0x70, 0x31, 0x68, 0xc1, 0xa6, 0x73, 0x24,
-0x0b, 0xd1, 0x53, 0xf4, 0x01, 0x82, 0x27, 0x4c,
-0x44, 0x17, 0x44, 0x7f, 0x3e, 0x0e, 0x7f, 0x0e,
-0xd6, 0x06, 0x1c, 0x66, 0x14, 0x61, 0xf4, 0x5e,
-0xd2, 0x08, 0xf4, 0x64, 0x21, 0xfb, 0xb2, 0xac,
-0x6d, 0x3b, 0x7e, 0x4c, 0xba, 0x73, 0xd7, 0xdb,
-0x17, 0xf0, 0xf7, 0x46, 0x51, 0x49, 0x59, 0x2b,
-0xda, 0xf1, 0x22, 0x17, 0x7f, 0x3b, 0x45, 0xc2,
-0x6f, 0x36, 0x6e, 0x62, 0xfa, 0xc2, 0x50, 0x25,
-0xa2, 0x10, 0xd1, 0x0d, 0x5d, 0xa4, 0x8b, 0xd1,
-0x7b, 0xb7, 0x0c, 0x8d, 0x8c, 0xef, 0xa4, 0xdf,
-0x73, 0xf3, 0xf0, 0x3a, 0x1d, 0x7e, 0x21, 0x23,
-0x2b, 0x07, 0x2f, 0x1d, 0x4b, 0x0f, 0xef, 0x03,
-0xe6, 0x3f, 0x1f, 0x22, 0x23, 0x2f, 0x4a, 0x3d,
-0xa1, 0x08, 0xa4, 0xfe, 0xb5, 0x7b, 0x4f, 0x4a,
-0x5a, 0xda, 0x51, 0x47, 0x27, 0x1e, 0x5f, 0x10,
-0x12, 0x1e, 0x75, 0xe7, 0x6e, 0x46, 0x65, 0x55,
-0xad, 0xb8, 0x7b, 0xf0, 0x6b, 0xa9, 0xfa, 0x5e,
-0xbf, 0x3a, 0x7c, 0xe4, 0x08, 0x94, 0x6b, 0x80,
-0x1f, 0xfc, 0x1c, 0x30, 0x7b, 0xbf, 0x19, 0x55,
-0xe2, 0xa4, 0x32, 0x82, 0x6a, 0xac, 0xa9, 0xad,
-0x6d, 0x46, 0xa7, 0x95, 0x7b, 0x14, 0xdc, 0x95,
-0x84, 0x76, 0xd1, 0x88, 0xc5, 0xcd, 0x2d, 0xcd,
-0x0b, 0x17, 0x2e, 0x66, 0x5f, 0xf2, 0x49, 0x1c,
-0xa0, 0x31, 0xe5, 0x15, 0x14, 0xfa, 0x07, 0x04,
-0x9d, 0x39, 0x1b, 0x95, 0x99, 0xfd, 0x00, 0x8a,
-0xdc, 0xff, 0x5a, 0x2e, 0x7c, 0x80, 0x39, 0x75,
-0x3a, 0x1c, 0xe6, 0x18, 0x52, 0x44, 0x68, 0x4d,
-0xca, 0x32, 0xc9, 0x40, 0x80, 0xc4, 0x4b, 0xb4,
-0x30, 0xa9, 0x68, 0xf2, 0xd2, 0x92, 0xc8, 0x30,
-0x70, 0xd9, 0x2e, 0x5c, 0x58, 0x58, 0x52, 0x12,
-0x7e, 0xf6, 0xbc, 0xc0, 0xdd, 0xdb, 0xcb, 0xdb,
-0x1f, 0x54, 0x9b, 0xcb, 0x57, 0xe3, 0xb3, 0x72,
-0x0a, 0x5e, 0xd4, 0x36, 0x88, 0xbb, 0x7b, 0xdf,
-0xc9, 0x7c, 0x7d, 0x78, 0xfd, 0xf6, 0x75, 0x68,
-0x58, 0x18, 0xc0, 0x1c, 0xe5, 0x53, 0xea, 0x25,
-0x41, 0xfa, 0x4c, 0x1e, 0xcd, 0x97, 0x2d, 0x1b,
-0xe4, 0x5f, 0xa9, 0x22, 0x30, 0xd1, 0x28, 0x57,
-0x92, 0xb2, 0xeb, 0x4d, 0xd2, 0x4b, 0x4d, 0x4b,
-0xf3, 0xf5, 0x0f, 0x0a, 0x0b, 0x8f, 0xc8, 0xcc,
-0xce, 0xad, 0x7d, 0xd9, 0x80, 0x1e, 0x15, 0x92,
-0x33, 0xe0, 0x43, 0xc5, 0x5e, 0x8c, 0x89, 0x19,
-0x39, 0x42, 0x5d, 0x5e, 0x5d, 0x11, 0xae, 0x48,
-0xc8, 0xf0, 0x61, 0xaa, 0x21, 0xa1, 0x30, 0x97,
-0x8b, 0xf4, 0x0f, 0x08, 0x49, 0x48, 0x4c, 0x29,
-0x7f, 0x56, 0xa9, 0x58, 0xff, 0x6d, 0x68, 0x6c,
-0x98, 0x36, 0x6d, 0xfa, 0xa0, 0xcf, 0x7a, 0x52,
-0xca, 0x1b, 0x37, 0x6f, 0xba, 0x9b, 0x9e, 0xe1,
-0xe9, 0x1b, 0x04, 0xf8, 0x5b, 0x52, 0xf2, 0xb8,
-0xbd, 0x43, 0xd1, 0x71, 0x6f, 0x30, 0xeb, 0x37,
-0x7c, 0xc3, 0xae, 0x2b, 0x59, 0x26, 0xd9, 0xff,
-0xca, 0xcb, 0x97, 0x56, 0x1d, 0x5b, 0x18, 0x0e,
-0x3b, 0x38, 0xc4, 0xdd, 0xb8, 0xe5, 0xeb, 0x17,
-0x74, 0xed, 0x66, 0xc2, 0xc3, 0x47, 0x4f, 0x85,
-0x22, 0x31, 0xba, 0x36, 0x43, 0x2e, 0x4a, 0x8a,
-0x57, 0xd8, 0x7d, 0x49, 0x5f, 0x36, 0xa4, 0xad,
-0x20, 0xd5, 0x82, 0xe0, 0x85, 0xae, 0x74, 0x31,
-0x3a, 0x26, 0x33, 0x3b, 0xe7, 0x56, 0x62, 0x6a,
-0xd9, 0xe3, 0xf2, 0xd6, 0x76, 0x21, 0x7a, 0x1f,
-0x5c, 0x3e, 0xfe, 0x82, 0xf0, 0xec, 0xdd, 0x7f,
-0x80, 0xbe, 0xc1, 0xcd, 0xb4, 0x85, 0x9c, 0x02,
-0xca, 0x16, 0x5f, 0x9e, 0xb4, 0x0f, 0xda, 0x9d,
-0xd5, 0xc7, 0xe8, 0x19, 0xfe, 0x52, 0x86, 0x17,
-0x42, 0x91, 0x31, 0xc3, 0x6b, 0xa4, 0x04, 0xad,
-0x8c, 0x0f, 0x57, 0xe9, 0x6d, 0x8a, 0x1a, 0x6d,
-0xbe, 0x73, 0xe4, 0x04, 0xcb, 0x61, 0x9a, 0xfa,
-0x4a, 0xc3, 0xb5, 0x95, 0x55, 0xc7, 0xa8, 0x6a,
-0xcf, 0xd2, 0x9c, 0xba, 0x4c, 0xc7, 0xc6, 0x61,
-0xfa, 0xce, 0x0c, 0x23, 0xc7, 0x16, 0xb4, 0xa0,
-0x8a, 0xb0, 0x12, 0xeb, 0x8f, 0x58, 0xc5, 0x33,
-0xa1, 0xc9, 0xff, 0x84, 0x01, 0x54, 0x52, 0x1c,
-0x1f, 0x58, 0x02, 0x14, 0x9b, 0x8d, 0x3f, 0x95,
-0x1a, 0x62, 0xcd, 0x17, 0x19, 0x0e, 0x59, 0xc8,
-0x65, 0xb6, 0x33, 0xc9, 0x3a, 0x4c, 0xb1, 0x9a,
-0x3c, 0x90, 0x16, 0x27, 0x99, 0x8d, 0x59, 0x45,
-0xff, 0x72, 0x18, 0x22, 0x24, 0x89, 0xa9, 0x84,
-0x26, 0x56, 0x75, 0xf1, 0xbf, 0x1c, 0x26, 0xfe,
-0x6c, 0x56, 0x64, 0x62, 0x93, 0x8f, 0xb6, 0x28,
-0x17, 0x1e, 0x2b, 0x2d, 0x36, 0xe6, 0x5c, 0xc6,
-0x20, 0x37, 0x0f, 0xbb, 0x09, 0xd4, 0xb2, 0x0d,
-0x5f, 0xcc, 0xb2, 0xbb, 0xac, 0x05, 0x22, 0x6b,
-0x81, 0x10, 0xcc, 0x5c, 0x41, 0xe7, 0x42, 0xf7,
-0xc6, 0x45, 0x6e, 0xf5, 0xcb, 0xdd, 0x2b, 0x97,
-0xf1, 0x9f, 0x2d, 0x72, 0x2e, 0x5a, 0xc5, 0xcd,
-0x7d, 0xde, 0x20, 0xfa, 0xcb, 0x71, 0x56, 0x81,
-0x49, 0x4e, 0x4d, 0x5d, 0xba, 0x74, 0xd9, 0x86,
-0x8d, 0x9b, 0x77, 0xed, 0xfd, 0x19, 0xc6, 0xc0,
-0x53, 0xe1, 0xe7, 0xc9, 0x21, 0x9d, 0xb2, 0xc7,
-0x4f, 0xab, 0xaa, 0xeb, 0xea, 0xea, 0x9b, 0xea,
-0x9b, 0xda, 0x60, 0xe8, 0xae, 0xae, 0x6d, 0x7c,
-0xf2, 0xac, 0xb2, 0xf8, 0x61, 0x59, 0x7a, 0x46,
-0xee, 0xcd, 0x5b, 0xb7, 0xa3, 0x62, 0x62, 0x83,
-0x8f, 0x9f, 0x74, 0xf7, 0xf4, 0xfb, 0xed, 0xf7,
-0x63, 0xfb, 0xf6, 0xff, 0xb4, 0xf5, 0x87, 0xed,
-0xeb, 0xd6, 0x6f, 0x5a, 0xfe, 0xe5, 0x6a, 0x9b,
-0x05, 0x8b, 0xc9, 0x42, 0xb4, 0x91, 0x91, 0xd1,
-0x2c, 0x83, 0x59, 0xd3, 0xa7, 0xcf, 0xd0, 0x9b,
-0xac, 0x37, 0x69, 0x12, 0x7a, 0x29, 0xf8, 0xf3,
-0x71, 0xba, 0x3a, 0x63, 0xc7, 0x8e, 0x1e, 0x3d,
-0x5a, 0x0b, 0x2b, 0xc2, 0x5a, 0xa3, 0x40, 0x17,
-0x1e, 0x45, 0x56, 0xa4, 0x61, 0xd8, 0x47, 0x40,
-0xac, 0x3a, 0x72, 0xcb, 0x96, 0xad, 0x69, 0xf7,
-0x32, 0x7d, 0x7c, 0x83, 0x62, 0xaf, 0xdc, 0x28,
-0x2c, 0x2e, 0x6b, 0xef, 0xe8, 0x54, 0xa0, 0xff,
-0x76, 0xf7, 0x76, 0xff, 0x73, 0xdb, 0x76, 0xf2,
-0xed, 0x18, 0x9d, 0x69, 0x1a, 0x32, 0x94, 0x76,
-0x25, 0xe6, 0xc6, 0x0f, 0xd6, 0x16, 0xaf, 0x99,
-0x33, 0x66, 0xa6, 0xdc, 0x4d, 0xf3, 0xf4, 0xf6,
-0x0f, 0x3b, 0x7d, 0x2e, 0x3d, 0x33, 0x07, 0x74,
-0x19, 0xd0, 0x1c, 0x15, 0x4c, 0x9e, 0x6f, 0xc6,
-0x27, 0x90, 0x65, 0x52, 0xf2, 0x90, 0x04, 0x9a,
-0xe2, 0x2a, 0xab, 0x18, 0x99, 0x18, 0x65, 0xe7,
-0xe4, 0xb8, 0x0a, 0xdc, 0x1d, 0x9d, 0x5d, 0x02,
-0x82, 0x42, 0x62, 0xaf, 0x5c, 0xcb, 0x2f, 0x2a,
-0xad, 0x6f, 0x6a, 0x97, 0x77, 0x33, 0x46, 0x75,
-0x4d, 0xad, 0xed, 0x82, 0x45, 0x04, 0x68, 0x98,
-0xd7, 0x28, 0x24, 0x2c, 0x91, 0x93, 0x9b, 0x0c,
-0xb7, 0x24, 0x50, 0x89, 0xf9, 0x6b, 0xb4, 0xf6,
-0xe8, 0x88, 0x73, 0x51, 0x3d, 0x3d, 0x7d, 0xe8,
-0x62, 0x46, 0xf9, 0xd3, 0x8f, 0x77, 0xef, 0xff,
-0xe8, 0xed, 0xeb, 0x83, 0x49, 0x48, 0x56, 0xce,
-0x7d, 0x9d, 0x31, 0x3a, 0x74, 0x4b, 0x1b, 0x19,
-0x22, 0x80, 0xac, 0x96, 0x96, 0xf6, 0xfd, 0xbc,
-0xfc, 0xc0, 0xe0, 0xd0, 0x93, 0xe1, 0x91, 0x19,
-0x68, 0xbf, 0x4a, 0x23, 0x7e, 0xcf, 0x51, 0xee,
-0x20, 0x7f, 0x21, 0xea, 0xa2, 0xa6, 0xba, 0x26,
-0x99, 0xea, 0x33, 0x5f, 0x04, 0x86, 0xa2, 0x9a,
-0x24, 0x73, 0x7e, 0xba, 0x6b, 0x9d, 0xba, 0x65,
-0xbd, 0x52, 0x75, 0xce, 0x4e, 0x4b, 0x63, 0xb2,
-0x8b, 0x8f, 0x8e, 0xa4, 0xa9, 0x7c, 0xb6, 0x79,
-0xcb, 0xe6, 0xfc, 0x82, 0xfc, 0xab, 0xd7, 0x6f,
-0x44, 0x5e, 0xbc, 0x14, 0x7d, 0xe9, 0xda, 0xed,
-0xe4, 0x94, 0xfc, 0x82, 0x62, 0xd0, 0x6e, 0x44,
-0x5d, 0x3d, 0x6f, 0xdf, 0x0e, 0xb2, 0xdf, 0xb8,
-0xbb, 0xb7, 0xc7, 0xd5, 0xd5, 0x0d, 0x6a, 0x89,
-0x66, 0xca, 0xa6, 0x4c, 0x38, 0x67, 0xaa, 0x42,
-0x52, 0xc9, 0x74, 0xed, 0x91, 0xde, 0x86, 0xca,
-0x2e, 0x02, 0x89, 0x2c, 0x45, 0x0d, 0xd2, 0xea,
-0x8e, 0xd3, 0xbd, 0x9d, 0x94, 0x1c, 0x04, 0x82,
-0x7e, 0xfa, 0x4c, 0x5a, 0x46, 0x4e, 0x4d, 0x5d,
-0x7d, 0x5f, 0x5f, 0xbf, 0xdc, 0x01, 0xff, 0x3f,
-0x1f, 0xe2, 0xe3, 0x6f, 0x6b, 0x8d, 0xd2, 0x1e,
-0x28, 0xe3, 0xc7, 0x2d, 0x4e, 0x9b, 0x18, 0x28,
-0x83, 0xcc, 0x7b, 0xfa, 0x78, 0x45, 0x46, 0x45,
-0x03, 0xfe, 0xde, 0xba, 0x9d, 0xfa, 0xe4, 0xe9,
-0xf3, 0xae, 0xee, 0x6e, 0x05, 0x4b, 0xa9, 0xad,
-0xed, 0xed, 0xc6, 0xc6, 0x26, 0x6c, 0xa4, 0xa0,
-0xa5, 0x60, 0x54, 0xb9, 0x7f, 0x0c, 0x5d, 0xfd,
-0xd5, 0x9a, 0xcc, 0xec, 0xfb, 0xa0, 0x75, 0x46,
-0xc7, 0xc6, 0xe5, 0x17, 0x97, 0xb5, 0xb6, 0x89,
-0x14, 0xe3, 0xef, 0xb6, 0x6d, 0x3b, 0x68, 0x25,
-0x0c, 0xc1, 0x3b, 0xb8, 0x68, 0xc7, 0x21, 0x02,
-0xcf, 0x4c, 0x5a, 0x94, 0x94, 0x89, 0x61, 0x84,
-0x41, 0xd2, 0x17, 0x48, 0xbe, 0x6c, 0x49, 0xa6,
-0x4d, 0xbc, 0x6b, 0xcf, 0x9e, 0x9b, 0xb7, 0x12,
-0xbd, 0x7c, 0x03, 0xaf, 0x5e, 0xbb, 0x51, 0xfc,
-0xf0, 0x49, 0xa7, 0xa8, 0xeb, 0xf5, 0x1b, 0xb9,
-0xdf, 0x7a, 0x7a, 0x5f, 0xf5, 0xad, 0x5d, 0xb7,
-0x9e, 0x2d, 0x2d, 0xa4, 0xa2, 0xc8, 0x44, 0x68,
-0x40, 0x14, 0x71, 0x84, 0xad, 0x5b, 0xb7, 0x56,
-0x54, 0x56, 0x15, 0x97, 0x3e, 0xa9, 0x6f, 0x6c,
-0xee, 0xee, 0xe9, 0x53, 0xa0, 0xe0, 0x7f, 0xc0,
-0xc7, 0xb1, 0xb9, 0x5c, 0x1e, 0x61, 0x52, 0x4a,
-0x3c, 0x08, 0x65, 0x3a, 0x6e, 0x7c, 0xd4, 0x46,
-0x1f, 0x0b, 0x30, 0x5b, 0xbc, 0xe9, 0x4c, 0x83,
-0xca, 0x33, 0xbd, 0xd6, 0x6f, 0xd4, 0xd4, 0x25,
-0xe6, 0xce, 0x4d, 0x26, 0x18, 0x32, 0x4c, 0x88,
-0xbe, 0x06, 0xb0, 0xe2, 0x58, 0xa7, 0xff, 0x6d,
-0x8c, 0x86, 0xde, 0x17, 0x2a, 0xc3, 0x34, 0x87,
-0xfc, 0x03, 0x92, 0x7f, 0xa6, 0xfc, 0x99, 0xa6,
-0x8a, 0xea, 0x68, 0x15, 0x55, 0x6d, 0x65, 0x95,
-0x91, 0x10, 0x32, 0x74, 0x88, 0xb2, 0xca, 0x88,
-0x09, 0x5a, 0x73, 0x7e, 0x98, 0xb6, 0x2b, 0xd3,
-0xd4, 0xa5, 0xc3, 0x9c, 0x87, 0x16, 0xa8, 0xe7,
-0x70, 0x19, 0xed, 0x0f, 0x88, 0x98, 0x62, 0x37,
-0xc0, 0xab, 0x29, 0x97, 0x71, 0x0f, 0xea, 0x85,
-0x98, 0x00, 0xb2, 0x00, 0x46, 0x8a, 0x23, 0x03,
-0xd8, 0x21, 0x28, 0xe4, 0x32, 0x90, 0x3d, 0x47,
-0xa2, 0x5a, 0x9a, 0xb9, 0x30, 0xf9, 0x9a, 0x61,
-0xdb, 0x94, 0xcb, 0xe4, 0x3e, 0x1b, 0xb3, 0xc1,
-0x94, 0x08, 0xaf, 0xfd, 0x12, 0x3d, 0xd4, 0x9c,
-0xda, 0xac, 0xf2, 0x22, 0x5c, 0xe6, 0x76, 0x92,
-0x8c, 0x80, 0x13, 0x16, 0x29, 0xa4, 0xd8, 0x9a,
-0xb9, 0xe2, 0xdc, 0x25, 0xcc, 0x80, 0x17, 0x8c,
-0x31, 0xc9, 0x9d, 0x87, 0xbd, 0xd8, 0xc1, 0x82,
-0x57, 0x11, 0x1b, 0x70, 0xcd, 0x3e, 0x0e, 0xb1,
-0x70, 0x15, 0x59, 0x80, 0xcd, 0x17, 0x59, 0x09,
-0x44, 0x73, 0xdd, 0x84, 0xf3, 0xdd, 0x85, 0xf3,
-0x3d, 0xb0, 0xf1, 0x14, 0x2e, 0xf6, 0x6e, 0x5f,
-0xe1, 0x53, 0xbf, 0xd4, 0xa3, 0x76, 0x85, 0xdb,
-0xd3, 0x15, 0xae, 0x65, 0xfb, 0x4e, 0x14, 0x37,
-0x77, 0x29, 0xea, 0x05, 0x7f, 0xb9, 0xa9, 0xa9,
-0xab, 0x5b, 0xb7, 0x61, 0xe3, 0xda, 0xf5, 0x9b,
-0x76, 0xed, 0xf9, 0xf9, 0x98, 0xb3, 0x2b, 0x8c,
-0x35, 0x71, 0xd7, 0x6f, 0x65, 0x64, 0xe5, 0x3e,
-0x7c, 0xf4, 0xe4, 0x79, 0x55, 0x1d, 0x20, 0x6f,
-0x43, 0x73, 0x27, 0x48, 0x7b, 0x7d, 0x63, 0xeb,
-0xf3, 0xea, 0xea, 0xb2, 0x27, 0xcf, 0x1e, 0xe4,
-0x97, 0xa4, 0xde, 0xcd, 0x8c, 0xbb, 0x7e, 0x1b,
-0xb4, 0xaa, 0x80, 0xe0, 0x50, 0x9e, 0xab, 0xbb,
-0xc3, 0x91, 0xdf, 0xf7, 0xec, 0x3d, 0xf0, 0xdd,
-0xd6, 0x7f, 0xae, 0x5d, 0xbf, 0x71, 0xf9, 0x97,
-0x5f, 0xd9, 0x2c, 0x58, 0x04, 0x10, 0x3c, 0x67,
-0x8e, 0x19, 0x40, 0xb0, 0x81, 0x81, 0xc1, 0xf4,
-0xe9, 0xd3, 0xf5, 0x27, 0xeb, 0x4f, 0xd0, 0x9b,
-0x34, 0x7e, 0xfc, 0x04, 0xdd, 0xf1, 0x13, 0x91,
-0x22, 0x3c, 0x06, 0x74, 0x61, 0xf2, 0x43, 0xba,
-0xb0, 0xa6, 0x86, 0xd6, 0xc8, 0x11, 0x23, 0x41,
-0x1d, 0x06, 0xfb, 0x9b, 0x8d, 0x1b, 0xd3, 0x33,
-0xb2, 0x7d, 0xfc, 0x60, 0x0e, 0x1f, 0x07, 0xf8,
-0xdb, 0xd6, 0xa1, 0x68, 0xfd, 0x19, 0x7a, 0xee,
-0x9e, 0x3d, 0xfb, 0xd9, 0x23, 0x3f, 0x5d, 0xbc,
-0xa2, 0x5e, 0x02, 0x22, 0xc3, 0x54, 0x86, 0x4d,
-0xd6, 0x9f, 0x02, 0xf8, 0xeb, 0xed, 0xe3, 0x7b,
-0x3a, 0xfc, 0x3c, 0x64, 0x01, 0xf3, 0x8a, 0xbe,
-0x3e, 0x45, 0x9b, 0x81, 0x53, 0xd3, 0xef, 0x81,
-0x3e, 0x4e, 0x46, 0x72, 0xd2, 0x4f, 0xc1, 0x31,
-0x66, 0xf4, 0x98, 0xe8, 0xd8, 0xd8, 0xf0, 0xb3,
-0x11, 0x30, 0xeb, 0x70, 0x75, 0xf3, 0x08, 0x3f,
-0x1b, 0x95, 0x9c, 0x9a, 0x01, 0xca, 0x4b, 0xa7,
-0x50, 0x2c, 0xef, 0xd3, 0x2a, 0x0c, 0xe0, 0x33,
-0x66, 0xcc, 0x04, 0x7e, 0xc8, 0x92, 0x1a, 0xe9,
-0xfb, 0x74, 0x79, 0x8d, 0x70, 0x0b, 0x21, 0x64,
-0x71, 0x8f, 0x98, 0xbd, 0xfb, 0xf7, 0xb7, 0xb4,
-0xb6, 0xf5, 0xf7, 0xbf, 0x51, 0x74, 0xda, 0xf4,
-0xff, 0x3e, 0x80, 0x4e, 0xd1, 0xd1, 0x29, 0x6c,
-0xef, 0xec, 0x74, 0xf7, 0xf2, 0x84, 0x02, 0x32,
-0xc9, 0x95, 0x54, 0x08, 0xa8, 0x01, 0x4d, 0x7c,
-0x13, 0x6f, 0x76, 0xf0, 0xf1, 0xd0, 0xd3, 0x67,
-0x2f, 0x40, 0x91, 0x5f, 0x7c, 0x0a, 0x7f, 0xaf,
-0xc4, 0xc5, 0x69, 0x6b, 0x8d, 0x26, 0x44, 0x08,
-0x05, 0x30, 0xc3, 0x87, 0x0d, 0x27, 0x03, 0x2f,
-0xe2, 0x56, 0x99, 0xb5, 0x2a, 0x88, 0x33, 0xa2,
-0x23, 0x1b, 0x5d, 0x33, 0xa4, 0x05, 0x24, 0xad,
-0x80, 0x02, 0x07, 0x4b, 0xcb, 0xd4, 0x00, 0x1e,
-0x72, 0x41, 0x99, 0xdd, 0x7f, 0xe0, 0xa7, 0xaa,
-0xea, 0x9a, 0xdc, 0xbc, 0xfc, 0x9c, 0x9c, 0xc2,
-0x82, 0xe2, 0x92, 0xa7, 0x15, 0x2f, 0x9a, 0x5a,
-0xda, 0x61, 0x06, 0x02, 0x73, 0x8c, 0x41, 0xd7,
-0x28, 0x40, 0x69, 0xfa, 0xf7, 0xae, 0xbd, 0xaa,
-0xaa, 0x6a, 0x94, 0x0d, 0x3a, 0x2a, 0x32, 0xc4,
-0xd9, 0x0e, 0x59, 0x9e, 0x95, 0x98, 0xac, 0x99,
-0xb4, 0x43, 0x86, 0x4a, 0x95, 0x88, 0x0c, 0xb9,
-0x08, 0x7f, 0x13, 0x93, 0x83, 0x43, 0x4e, 0x9c,
-0x08, 0x3b, 0x93, 0x9a, 0x9e, 0x05, 0xf8, 0xdb,
-0xdb, 0xa7, 0x68, 0x01, 0xe1, 0x6e, 0x7a, 0x3a,
-0x48, 0x08, 0xad, 0x0d, 0x54, 0x0f, 0xca, 0x1f,
-0xad, 0xa3, 0x12, 0x2f, 0x50, 0x06, 0x55, 0x8e,
-0xc7, 0x77, 0x8d, 0xbe, 0x74, 0x15, 0xf0, 0xf7,
-0xe6, 0xad, 0x64, 0x98, 0xeb, 0x0a, 0x45, 0xdd,
-0x6f, 0xdf, 0xbd, 0x93, 0xb7, 0x20, 0xd3, 0x29,
-0x12, 0x5b, 0x59, 0x5a, 0x4b, 0x31, 0x49, 0xd5,
-0x61, 0xe2, 0x5d, 0xb2, 0x78, 0x69, 0x66, 0x4e,
-0x8e, 0xb7, 0x5f, 0x10, 0xe0, 0x6f, 0x5e, 0x71,
-0x69, 0x4b, 0xab, 0x50, 0x31, 0xfe, 0x82, 0x6e,
-0x48, 0xd2, 0x92, 0xb5, 0x77, 0xa9, 0xe2, 0x0f,
-0xb4, 0x11, 0x6b, 0xb2, 0x44, 0x32, 0xa5, 0xb2,
-0x41, 0x04, 0x98, 0xa9, 0x46, 0xfc, 0x2f, 0x01,
-0xcd, 0x6d, 0x3b, 0xb7, 0xdd, 0x4e, 0x4a, 0x61,
-0xf0, 0xb7, 0xe4, 0x09, 0x3a, 0x26, 0xf0, 0x5e,
-0x6e, 0x2f, 0x06, 0x99, 0xdc, 0xba, 0xf5, 0x7b,
-0x22, 0x66, 0x6c, 0xca, 0xb4, 0x15, 0x68, 0x3b,
-0x82, 0xbd, 0x76, 0xdd, 0xda, 0x86, 0x86, 0xe6,
-0xc6, 0xe6, 0x36, 0x71, 0x77, 0x8f, 0x82, 0xf3,
-0x83, 0x4c, 0x07, 0x79, 0xf7, 0xd6, 0xdb, 0xd7,
-0x57, 0x45, 0x72, 0xf9, 0x3c, 0x25, 0x28, 0xc5,
-0xb3, 0xac, 0x3c, 0x0f, 0x2a, 0x0c, 0x84, 0x37,
-0x46, 0x72, 0x58, 0x5d, 0x03, 0x6c, 0x70, 0xeb,
-0xda, 0x1c, 0xb0, 0x12, 0x30, 0x2b, 0xa2, 0x00,
-0x34, 0x00, 0x3a, 0xc6, 0x8e, 0x0d, 0x13, 0x17,
-0x1e, 0x1e, 0xae, 0xa6, 0x83, 0xd4, 0x67, 0x65,
-0x75, 0x75, 0x3d, 0xdb, 0x49, 0x4b, 0x1c, 0xa7,
-0x6c, 0x0c, 0x9f, 0xb1, 0xfd, 0xea, 0xe4, 0xef,
-0xaf, 0xe8, 0xaf, 0x3f, 0xa1, 0x63, 0xb5, 0x6b,
-0xb8, 0xce, 0x4c, 0xac, 0x4a, 0x2b, 0xa9, 0xe9,
-0x98, 0xe8, 0x6f, 0xb9, 0x82, 0x20, 0x98, 0x82,
-0x0e, 0x06, 0x23, 0x80, 0x2a, 0x69, 0xd5, 0x6f,
-0x50, 0xc3, 0x1b, 0x4c, 0x49, 0x94, 0x31, 0x84,
-0x9a, 0x19, 0xe6, 0x10, 0xa7, 0x12, 0x99, 0xf3,
-0x30, 0xae, 0xf1, 0xba, 0xe4, 0x92, 0xfa, 0x24,
-0x65, 0x99, 0x7f, 0xe7, 0x0c, 0x20, 0x29, 0x20,
-0x66, 0x97, 0xa2, 0xb4, 0x8a, 0xb2, 0x90, 0x4d,
-0x3b, 0xe0, 0xb5, 0xe0, 0x83, 0x11, 0x5b, 0xf2,
-0x41, 0xe7, 0xed, 0x02, 0xf0, 0xb5, 0x76, 0x17,
-0x2f, 0xf0, 0x16, 0xcf, 0xf7, 0x16, 0x2e, 0xf4,
-0x11, 0x2e, 0xf7, 0x6d, 0x5f, 0xe5, 0x57, 0xf7,
-0x75, 0x40, 0x9d, 0x9d, 0xfb, 0xb3, 0xaf, 0xdd,
-0x8b, 0x8e, 0xdf, 0xaa, 0x79, 0xfd, 0x77, 0x3d,
-0x7c, 0x44, 0x4c, 0x5f, 0x7f, 0x9f, 0xe3, 0x31,
-0x97, 0xd5, 0x5f, 0x7d, 0xbd, 0x63, 0xc7, 0xbf,
-0x1c, 0x8f, 0x71, 0x02, 0x82, 0x42, 0x2f, 0xc4,
-0xde, 0xb8, 0x9b, 0x9e, 0x5d, 0x54, 0xf2, 0xe8,
-0x79, 0x55, 0xcd, 0xcb, 0x86, 0xa6, 0xe6, 0xd6,
-0x8e, 0xc6, 0xe6, 0x76, 0x0c, 0xc1, 0xed, 0x80,
-0xc8, 0xa5, 0x8f, 0x9e, 0xe4, 0x3e, 0x28, 0x4c,
-0x4a, 0x49, 0x03, 0x08, 0x8e, 0x38, 0x1f, 0xed,
-0x13, 0x14, 0xea, 0xcc, 0xf3, 0x3a, 0xe4, 0x80,
-0x20, 0x18, 0x69, 0xc1, 0x1b, 0x36, 0xad, 0xb0,
-0x5b, 0x63, 0xbb, 0x70, 0xf1, 0x17, 0xf3, 0xd0,
-0xa1, 0x24, 0x13, 0x13, 0x13, 0x43, 0x43, 0x43,
-0x00, 0x20, 0x40, 0xe1, 0xc9, 0x93, 0x27, 0x03,
-0x0a, 0x03, 0x04, 0xa3, 0xe5, 0xe8, 0xcf, 0x3f,
-0x1f, 0x33, 0x66, 0x0c, 0x81, 0x60, 0x2d, 0xad,
-0xd1, 0xa3, 0x46, 0xa1, 0x2b, 0x2b, 0x35, 0xd5,
-0xb5, 0x56, 0xae, 0x5c, 0x95, 0x91, 0x75, 0x1f,
-0xe3, 0xef, 0xb5, 0xbc, 0x82, 0x87, 0x90, 0xb5,
-0x82, 0x13, 0x1f, 0xf8, 0x94, 0xd0, 0x91, 0x81,
-0x93, 0xc5, 0xf8, 0x72, 0x0f, 0xe2, 0x20, 0xf7,
-0x5e, 0xa2, 0x81, 0x45, 0x19, 0x7d, 0xae, 0x02,
-0x78, 0x9a, 0x38, 0x61, 0x52, 0xc2, 0xed, 0x24,
-0xbf, 0x80, 0x60, 0x50, 0xf0, 0x53, 0xd3, 0xd1,
-0x03, 0x6d, 0x48, 0xff, 0x95, 0x7f, 0x96, 0x33,
-0x37, 0x2f, 0x0f, 0xe6, 0x03, 0x90, 0x96, 0x4d,
-0x1f, 0x94, 0xf4, 0xcd, 0x9b, 0xbf, 0xcd, 0xca,
-0xce, 0x71, 0xe6, 0xba, 0x3a, 0x71, 0xf8, 0x3e,
-0xfe, 0x41, 0x31, 0xb1, 0x71, 0xf7, 0x73, 0x0b,
-0xf0, 0xa7, 0xa8, 0x57, 0xef, 0xc8, 0xf8, 0xf9,
-0x31, 0x62, 0x02, 0x82, 0xa4, 0xa5, 0x67, 0x18,
-0x1a, 0x1a, 0xa3, 0x9d, 0x66, 0x2a, 0xc3, 0x08,
-0x41, 0xc2, 0x15, 0xe9, 0xc2, 0x94, 0x73, 0x15,
-0xfc, 0x59, 0x10, 0xe8, 0xb7, 0x77, 0x08, 0x19,
-0xbd, 0x4f, 0x01, 0xf8, 0xbe, 0x7d, 0xdb, 0x25,
-0x16, 0x43, 0xeb, 0x54, 0x3c, 0x7f, 0x61, 0x6b,
-0xbb, 0x80, 0x96, 0x9a, 0x6e, 0x6c, 0x03, 0xca,
-0x1a, 0x1a, 0x1a, 0xa9, 0x77, 0xd3, 0x40, 0x77,
-0x3b, 0x75, 0x26, 0x32, 0x2d, 0xfd, 0x7e, 0x55,
-0x75, 0xad, 0xe2, 0xfd, 0x57, 0xc9, 0x77, 0x52,
-0x60, 0x8e, 0x44, 0xd2, 0x02, 0x35, 0x60, 0x98,
-0x54, 0x1d, 0x9b, 0x67, 0xf0, 0x7e, 0x54, 0xc3,
-0xd8, 0x8b, 0x9e, 0x9b, 0xc4, 0xc3, 0x38, 0x78,
-0x69, 0x13, 0xb0, 0x5b, 0x81, 0x31, 0xf8, 0x5f,
-0x42, 0x59, 0xca, 0x0b, 0x05, 0x3f, 0xfa, 0xbb,
-0x63, 0x13, 0xba, 0x65, 0xb0, 0xad, 0xa5, 0xb5,
-0x43, 0xd4, 0xd5, 0xd5, 0xdb, 0xdb, 0xa7, 0xf8,
-0xb4, 0x54, 0x6b, 0x5b, 0xc7, 0xee, 0x3d, 0xfb,
-0x99, 0xbd, 0xf4, 0x2c, 0xae, 0x10, 0x41, 0xc9,
-0xbe, 0x3e, 0x52, 0x04, 0x5a, 0x2d, 0x7f, 0xde,
-0x10, 0x52, 0x00, 0xa6, 0xd7, 0xe3, 0xe3, 0x43,
-0xc3, 0xc2, 0x4f, 0x9e, 0x8a, 0x48, 0xbd, 0x07,
-0x13, 0x98, 0xba, 0x9e, 0x1e, 0x45, 0xa7, 0x74,
-0x41, 0x66, 0x74, 0x75, 0xc7, 0x13, 0x96, 0x68,
-0xa5, 0xc9, 0x4a, 0x26, 0xd8, 0x23, 0xd4, 0x46,
-0xfe, 0x76, 0xf4, 0xd8, 0x95, 0xb8, 0x9b, 0x80,
-0xbf, 0xf1, 0x09, 0x89, 0x30, 0xd5, 0xc5, 0x1b,
-0xf9, 0xe4, 0x0e, 0x14, 0xbd, 0xaf, 0x5e, 0x2f,
-0x5a, 0xbc, 0x44, 0x96, 0x32, 0xdb, 0x58, 0x59,
-0xcf, 0xcd, 0xcd, 0x2b, 0x0a, 0x08, 0x0c, 0xbe,
-0x18, 0x13, 0xf7, 0xa0, 0xa0, 0xa4, 0xa9, 0xa5,
-0x45, 0xf1, 0xfc, 0xed, 0xa8, 0xa3, 0x93, 0x9a,
-0x9a, 0x9a, 0x82, 0x46, 0x61, 0x7b, 0x69, 0xc5,
-0xb2, 0x73, 0x27, 0x72, 0xc2, 0xae, 0x31, 0x62,
-0x36, 0x6d, 0xfe, 0x36, 0x39, 0x35, 0xdd, 0xd3,
-0x37, 0x30, 0xe6, 0xf2, 0x8d, 0x82, 0xa2, 0x87,
-0x1d, 0x9d, 0x62, 0x98, 0x09, 0xc8, 0x3d, 0x45,
-0xf8, 0xc7, 0xbb, 0xbd, 0xfb, 0xf6, 0x93, 0x09,
-0xe4, 0xa0, 0xf9, 0x12, 0x2f, 0x09, 0xf7, 0xf0,
-0xf4, 0x86, 0x59, 0x37, 0xba, 0x53, 0xfb, 0x53,
-0x83, 0x2a, 0xba, 0xd7, 0xfa, 0xed, 0x1b, 0x0f,
-0x0f, 0x4f, 0xc2, 0xb3, 0xbc, 0x4a, 0xfb, 0xdf,
-0x8c, 0x14, 0x93, 0x23, 0x35, 0xb4, 0x0c, 0xb6,
-0x46, 0x5a, 0x0b, 0x28, 0x3a, 0x88, 0xcd, 0x7e,
-0xaf, 0xd2, 0x9e, 0xb3, 0x6d, 0xe8, 0x10, 0x95,
-0x21, 0x43, 0x54, 0x34, 0x67, 0xae, 0x34, 0xd8,
-0x79, 0x6d, 0x0e, 0xa7, 0x05, 0x54, 0x36, 0x1c,
-0xa7, 0xcb, 0x9c, 0x2f, 0x02, 0xec, 0x40, 0x31,
-0x9d, 0x6a, 0xf5, 0xbe, 0xf2, 0x57, 0x1b, 0x8b,
-0x4e, 0xee, 0xab, 0xaa, 0x8f, 0x99, 0xb2, 0xd6,
-0x87, 0x22, 0x11, 0x86, 0x18, 0x69, 0xdc, 0x91,
-0x67, 0x58, 0x91, 0xe5, 0x1a, 0x33, 0x7e, 0x8f,
-0x95, 0x40, 0x41, 0x84, 0x2e, 0x04, 0x79, 0x58,
-0xcd, 0xc4, 0xca, 0xa6, 0x90, 0x6d, 0xff, 0xb7,
-0x86, 0x9d, 0xca, 0x42, 0x20, 0xc6, 0xbc, 0x75,
-0x61, 0xc4, 0xec, 0x92, 0x78, 0x29, 0xe7, 0x10,
-0x2e, 0xc4, 0xb5, 0x01, 0x75, 0xc2, 0x60, 0x2e,
-0x8e, 0x89, 0xaa, 0xc8, 0x4a, 0x80, 0x40, 0xd6,
-0x52, 0x80, 0x34, 0x62, 0x88, 0x36, 0x17, 0xa0,
-0xd6, 0x0d, 0x02, 0x85, 0xf3, 0xdc, 0x85, 0xa0,
-0xf6, 0xda, 0x7a, 0x74, 0xcd, 0xf7, 0x12, 0xda,
-0x7a, 0x75, 0xd9, 0x00, 0xf2, 0xfa, 0x0a, 0x97,
-0xf9, 0x09, 0x97, 0x07, 0x08, 0xed, 0x02, 0x85,
-0x1b, 0x83, 0xeb, 0xd7, 0xfb, 0xd7, 0x6c, 0xf0,
-0x7b, 0xbe, 0x25, 0xf0, 0x51, 0xde, 0x33, 0xe1,
-0xdf, 0xf9, 0x69, 0x33, 0x22, 0xa8, 0x97, 0xaf,
-0xc4, 0xad, 0x5e, 0xb3, 0x1e, 0x14, 0xd8, 0xc3,
-0x0e, 0x8e, 0xde, 0xbe, 0xc1, 0x51, 0xd1, 0x97,
-0x93, 0xee, 0xa4, 0xe7, 0x15, 0xa2, 0x6b, 0xf7,
-0x6a, 0x5f, 0x36, 0xb7, 0xb4, 0x09, 0x9b, 0x5b,
-0x3b, 0x9b, 0x5a, 0x5a, 0x01, 0x85, 0x41, 0x6d,
-0xac, 0xa8, 0xac, 0x2d, 0x2e, 0x7e, 0x9c, 0x9d,
-0xf3, 0x20, 0xf1, 0x4e, 0x6a, 0xec, 0xd5, 0x6b,
-0xe1, 0x11, 0x17, 0xbc, 0xfd, 0x43, 0x5c, 0x78,
-0xee, 0xf6, 0x87, 0x7e, 0xdb, 0xbd, 0xf7, 0xc0,
-0x96, 0xef, 0xb7, 0xad, 0xdf, 0xb0, 0x79, 0xe5,
-0xca, 0xd5, 0x0b, 0x17, 0x2f, 0x9d, 0x67, 0x63,
-0x6b, 0x69, 0x65, 0x6d, 0x6a, 0x3a, 0xc7, 0xd8,
-0xc8, 0x84, 0x6c, 0x8a, 0x9e, 0x3a, 0x6d, 0x9a,
-0xfe, 0xe4, 0x29, 0x13, 0xf5, 0x26, 0xea, 0x8e,
-0x1f, 0x4f, 0x3e, 0x0a, 0x8f, 0x05, 0x20, 0xd6,
-0xd1, 0xd1, 0xc6, 0x3f, 0x2d, 0x2d, 0xad, 0x2f,
-0xed, 0xec, 0x32, 0xb3, 0xb3, 0x7d, 0x02, 0x4e,
-0xc4, 0xc4, 0x5e, 0xc9, 0x2f, 0x2c, 0xc3, 0xf8,
-0x2b, 0xf7, 0x94, 0x2e, 0xcc, 0x6f, 0x5d, 0x78,
-0xae, 0x74, 0x1f, 0x17, 0x39, 0xd9, 0x44, 0x6c,
-0x12, 0xc2, 0xb6, 0x01, 0x7f, 0xaf, 0x5e, 0xbf,
-0x1e, 0x18, 0x72, 0x32, 0xf4, 0x74, 0x04, 0xe0,
-0x6f, 0x75, 0x4d, 0x5d, 0x4f, 0x6f, 0xaf, 0x82,
-0xd1, 0xa9, 0xa4, 0xb4, 0x54, 0x5b, 0x4b, 0x9b,
-0x26, 0xa7, 0x06, 0x66, 0x11, 0x89, 0x49, 0x49,
-0xa7, 0xc3, 0x41, 0x05, 0x76, 0xe6, 0xbb, 0x79,
-0x07, 0x87, 0x46, 0xdc, 0x44, 0xd7, 0x27, 0x96,
-0x01, 0x70, 0xf4, 0xf6, 0xf5, 0x0d, 0xca, 0x2a,
-0xd4, 0x70, 0x6a, 0x5a, 0xfa, 0x9a, 0x35, 0xeb,
-0x60, 0xb6, 0xc1, 0xa6, 0xa6, 0x36, 0x7c, 0xc0,
-0x3d, 0x42, 0x6d, 0xc4, 0xb8, 0x71, 0xba, 0x3f,
-0xfd, 0x74, 0xf0, 0x45, 0x75, 0xcd, 0x1f, 0xe8,
-0xac, 0x91, 0xa2, 0x9d, 0x33, 0x7f, 0x7c, 0x78,
-0xdf, 0xf7, 0xaa, 0xbf, 0xa1, 0xb1, 0xb9, 0xae,
-0xbe, 0x39, 0x2a, 0xe6, 0x22, 0x24, 0x94, 0x62,
-0x92, 0xb0, 0x0d, 0xf8, 0x9b, 0x9c, 0x92, 0x7a,
-0x2a, 0xfc, 0x1c, 0xe0, 0x6f, 0x6a, 0x5a, 0x26,
-0xe0, 0x6f, 0x5f, 0x7f, 0xbf, 0x82, 0xf3, 0x1a,
-0xd9, 0x59, 0xb9, 0x93, 0xf5, 0xa7, 0x50, 0x52,
-0xe4, 0x06, 0x6f, 0xd9, 0x9a, 0x94, 0xcd, 0x88,
-0x89, 0xfc, 0xf1, 0xbf, 0xe0, 0x95, 0x4d, 0x2b,
-0x65, 0xd3, 0x38, 0x60, 0x74, 0x75, 0x75, 0x43,
-0x42, 0xc3, 0x60, 0x52, 0xf1, 0x0a, 0x34, 0xff,
-0x37, 0xef, 0x60, 0x80, 0xfd, 0xe4, 0x63, 0x43,
-0x2f, 0x1b, 0xea, 0xed, 0xec, 0xec, 0xc8, 0xd1,
-0x72, 0x76, 0x65, 0xc2, 0xc4, 0x89, 0x4d, 0xf9,
-0x7f, 0x30, 0x24, 0xad, 0x8e, 0xce, 0xd8, 0x98,
-0x2b, 0x57, 0xc3, 0xc2, 0x23, 0x10, 0xfe, 0xa6,
-0x65, 0x31, 0x0f, 0x72, 0xc9, 0xd7, 0x7f, 0x8b,
-0x4b, 0x4a, 0xf5, 0xf5, 0x27, 0xcb, 0xd6, 0x15,
-0xbb, 0x26, 0xc9, 0x5f, 0x10, 0x72, 0xc8, 0xe1,
-0xf0, 0x8d, 0xf8, 0x24, 0xc0, 0x5f, 0xb4, 0x49,
-0xf8, 0x51, 0x39, 0x68, 0xb8, 0x52, 0xef, 0x30,
-0x4a, 0x89, 0xba, 0xdd, 0xca, 0xd5, 0x83, 0x56,
-0x23, 0xa5, 0x69, 0x66, 0x6e, 0x51, 0x58, 0x5c,
-0x12, 0x10, 0x14, 0x82, 0xf0, 0x37, 0x1f, 0xe1,
-0xaf, 0xe2, 0xed, 0x76, 0x1e, 0x9e, 0x5e, 0x1a,
-0xea, 0xa3, 0x68, 0x2b, 0x48, 0x35, 0x87, 0x62,
-0x2f, 0x2d, 0x05, 0x3b, 0x02, 0xfd, 0x6b, 0xfd,
-0x86, 0x0d, 0xf7, 0x32, 0x73, 0x7c, 0xfc, 0x82,
-0x2f, 0x5d, 0xbe, 0x5e, 0x58, 0x5c, 0x0a, 0xfa,
-0x6f, 0xbf, 0xfc, 0x83, 0x6f, 0xd0, 0xce, 0x0e,
-0x47, 0x8e, 0x2a, 0xc8, 0x17, 0xa0, 0x13, 0x6c,
-0x4d, 0x8d, 0x51, 0xf3, 0x6d, 0x16, 0x54, 0xd7,
-0xbe, 0x44, 0xbd, 0xe3, 0xd3, 0xaf, 0x39, 0x7c,
-0x78, 0xd5, 0xff, 0xa6, 0xaf, 0xff, 0xd5, 0x61,
-0x87, 0x23, 0xe4, 0xd8, 0xa3, 0xea, 0x30, 0x55,
-0x59, 0x3e, 0xff, 0x5b, 0x79, 0xf8, 0x48, 0xc0,
-0xd4, 0x06, 0x44, 0x4e, 0x5b, 0xcf, 0x74, 0x8e,
-0x7d, 0xbe, 0x25, 0xc6, 0x11, 0x84, 0x71, 0x9c,
-0xc6, 0x89, 0xcb, 0x9c, 0x94, 0x94, 0xd4, 0x94,
-0x3e, 0x53, 0x1f, 0x3b, 0x77, 0xa7, 0x89, 0x43,
-0x85, 0x99, 0x73, 0xbd, 0xb9, 0x73, 0x83, 0xb9,
-0x4b, 0xab, 0xb5, 0xfb, 0x80, 0xee, 0x66, 0xc1,
-0x6b, 0x83, 0x40, 0x0b, 0xa7, 0x6a, 0x83, 0x9d,
-0x09, 0xea, 0x93, 0x6c, 0x86, 0xfc, 0x43, 0x49,
-0x65, 0xe4, 0x78, 0xc3, 0xdd, 0x77, 0x2d, 0xf9,
-0x9d, 0x16, 0x98, 0x0e, 0x31, 0x08, 0x95, 0xf8,
-0x62, 0x2b, 0x01, 0xb2, 0x01, 0xbe, 0x2d, 0x90,
-0x1b, 0x81, 0x1a, 0x06, 0x26, 0xb1, 0xa5, 0x40,
-0x64, 0x85, 0x10, 0x4d, 0x64, 0x21, 0xe8, 0xc2,
-0x91, 0x85, 0xd4, 0x26, 0x9f, 0x44, 0x2d, 0xf8,
-0x04, 0xf4, 0x21, 0x44, 0x84, 0x09, 0xa2, 0x05,
-0x5b, 0x4b, 0xb4, 0x72, 0x2b, 0x94, 0xa4, 0x15,
-0x12, 0xca, 0x00, 0x6d, 0x24, 0x32, 0xb5, 0x09,
-0x29, 0x4b, 0x1c, 0x87, 0x24, 0x81, 0x7c, 0x11,
-0x27, 0x78, 0x89, 0x18, 0x51, 0x73, 0x13, 0x59,
-0xb9, 0x21, 0x00, 0x25, 0x69, 0xe1, 0xdf, 0xb9,
-0x6e, 0x22, 0x36, 0x11, 0x88, 0x69, 0x29, 0x10,
-0x93, 0x7c, 0x2d, 0xb1, 0x4d, 0x81, 0x1e, 0x7d,
-0xb4, 0x45, 0xa9, 0x50, 0x38, 0x72, 0x08, 0xba,
-0x21, 0xe4, 0x0b, 0xf7, 0x2e, 0x4b, 0x3e, 0x01,
-0x59, 0x94, 0x0a, 0x58, 0xb5, 0x46, 0x7c, 0x22,
-0x07, 0x62, 0x1b, 0x3b, 0xe6, 0x7b, 0x8a, 0xe6,
-0xb9, 0x8b, 0xe6, 0x7b, 0x0a, 0x6d, 0x3c, 0x45,
-0x36, 0xde, 0xff, 0xcf, 0xdc, 0x75, 0xc7, 0x45,
-0x75, 0x7c, 0xfb, 0x3f, 0xde, 0x4b, 0xf2, 0xcb,
-0xcf, 0x42, 0xef, 0xbd, 0x59, 0x7e, 0x1a, 0x63,
-0x07, 0x96, 0xb6, 0x54, 0x15, 0x51, 0xec, 0x85,
-0x98, 0xe8, 0x4b, 0x4c, 0xd1, 0xa8, 0x3f, 0x4d,
-0x62, 0x30, 0x1a, 0x4b, 0x50, 0xea, 0x02, 0x16,
-0xea, 0xd2, 0x51, 0xa9, 0x22, 0x1a, 0x0b, 0x6a,
-0x54, 0x7a, 0x13, 0x3b, 0x88, 0x74, 0x11, 0xa4,
-0xed, 0x72, 0xb7, 0x01, 0x2a, 0x3f, 0xd0, 0xcf,
-0xe7, 0x9d, 0x33, 0xb3, 0xbb, 0x20, 0xca, 0xa6,
-0x99, 0xf7, 0xb2, 0x9f, 0xc3, 0x30, 0x33, 0xf7,
-0xdc, 0x33, 0x67, 0xce, 0xcc, 0x9d, 0xef, 0x9c,
-0x7b, 0xe7, 0xce, 0x15, 0xb0, 0x39, 0x02, 0x74,
-0x7b, 0x43, 0x05, 0x0b, 0x8e, 0x31, 0x4b, 0xc2,
-0xbb, 0x97, 0x87, 0xf3, 0x57, 0x47, 0xb4, 0xaf,
-0x0d, 0x6f, 0x5e, 0x1b, 0xfa, 0x60, 0x5b, 0x5c,
-0x4d, 0x97, 0x48, 0xd1, 0x1c, 0xfe, 0x6f, 0x42,
-0x0f, 0x6b, 0x6b, 0x57, 0xae, 0x5a, 0xbd, 0x72,
-0xb5, 0xd7, 0xbf, 0xb7, 0x7f, 0xeb, 0xe3, 0x17,
-0x1c, 0x97, 0x78, 0xf2, 0xe7, 0x0b, 0x39, 0x45,
-0x25, 0xe5, 0x55, 0xd5, 0x35, 0x0d, 0x4d, 0x2d,
-0x6d, 0x1d, 0x4c, 0x17, 0x4f, 0x00, 0x17, 0x51,
-0x17, 0x9f, 0x01, 0x08, 0x6e, 0x6a, 0x6e, 0xad,
-0xae, 0x6d, 0xa8, 0xb8, 0x5d, 0x59, 0x50, 0x54,
-0x72, 0x3e, 0xe7, 0x0a, 0x38, 0x80, 0x31, 0xf1,
-0x89, 0x9c, 0xd0, 0xb0, 0x7d, 0x07, 0x0e, 0x7d,
-0xf3, 0x9d, 0x37, 0xf5, 0x82, 0x41, 0x94, 0xfb,
-0xc2, 0x45, 0xce, 0xae, 0xf3, 0x10, 0x82, 0xad,
-0xac, 0x67, 0xcf, 0x99, 0x4b, 0x1d, 0xe1, 0xc9,
-0x93, 0x09, 0x0a, 0x5b, 0x4c, 0x30, 0x33, 0x33,
-0x37, 0x36, 0x31, 0x31, 0x30, 0x34, 0x24, 0xab,
-0xa3, 0x75, 0x75, 0x74, 0xf4, 0x74, 0x74, 0x70,
-0xd7, 0x68, 0x67, 0x57, 0xd7, 0xe2, 0xb2, 0xb2,
-0xd0, 0xc3, 0x47, 0x4f, 0xa6, 0x66, 0x96, 0x96,
-0xdf, 0x7a, 0xd2, 0xde, 0xf1, 0x6c, 0xf4, 0x57,
-0x6f, 0xf0, 0x2d, 0xa1, 0xd0, 0x23, 0x4a, 0xe3,
-0x94, 0x95, 0x95, 0x94, 0xc9, 0x2e, 0x97, 0x4a,
-0x70, 0x5d, 0xd0, 0x4d, 0xa7, 0x61, 0x4c, 0x7e,
-0x25, 0x1c, 0x3b, 0xde, 0xd0, 0xd0, 0x88, 0x6c,
-0x8b, 0x97, 0xc0, 0x8d, 0x49, 0xba, 0x72, 0x2d,
-0xbf, 0xa1, 0xe9, 0x11, 0x6e, 0xba, 0x3b, 0xfa,
-0x08, 0xdf, 0xd0, 0xd8, 0x08, 0x5a, 0x29, 0x29,
-0xe1, 0x52, 0x6d, 0xf8, 0x29, 0xa1, 0x18, 0xfc,
-0xa9, 0xaa, 0xa8, 0x7e, 0xb5, 0x79, 0x4b, 0x49,
-0x59, 0xf9, 0xee, 0x1f, 0xf7, 0xed, 0xde, 0x7b,
-0x20, 0x20, 0xe8, 0x48, 0x42, 0xf2, 0x89, 0x9c,
-0xcb, 0xb9, 0x95, 0xd5, 0x75, 0x5d, 0x3c, 0xa6,
-0xef, 0x69, 0xdf, 0x68, 0xb3, 0x85, 0xf6, 0xce,
-0x8e, 0x23, 0x47, 0x8e, 0x81, 0xaf, 0xaa, 0xa3,
-0xad, 0x83, 0xd2, 0x88, 0xce, 0x28, 0x5c, 0x49,
-0x19, 0x8c, 0xb0, 0xc0, 0x7d, 0x21, 0x4c, 0x39,
-0x24, 0x3d, 0xf8, 0xcd, 0x1a, 0xc5, 0xb8, 0x33,
-0x30, 0xf0, 0xa2, 0xa7, 0xf7, 0x59, 0x27, 0x8f,
-0x5f, 0x5b, 0xdf, 0xf8, 0xa4, 0xbd, 0x1d, 0xec,
-0xac, 0xac, 0xa4, 0x82, 0x0f, 0xd0, 0x49, 0xc5,
-0xc1, 0x02, 0x68, 0x84, 0xf1, 0x28, 0x19, 0x86,
-0xac, 0xec, 0x73, 0xe7, 0x13, 0x12, 0x93, 0x62,
-0xe2, 0x8e, 0x5f, 0xfe, 0x25, 0x1f, 0xe0, 0x43,
-0xd2, 0xd3, 0xa7, 0xe0, 0x21, 0x63, 0xc5, 0xad,
-0x9b, 0x93, 0x27, 0x4d, 0xa1, 0x46, 0x03, 0x0d,
-0xe5, 0x96, 0x04, 0x23, 0x00, 0x94, 0x4b, 0x2d,
-0x49, 0x24, 0xcb, 0x6d, 0x4b, 0x92, 0x2a, 0xb4,
-0x50, 0x30, 0x97, 0x95, 0xa5, 0x95, 0xad, 0x8d,
-0xad, 0x94, 0x6c, 0xed, 0x90, 0x48, 0xc4, 0x86,
-0x65, 0x63, 0x67, 0x67, 0xc7, 0xb2, 0x86, 0x04,
-0x84, 0x2c, 0x88, 0x43, 0x8e, 0x94, 0x81, 0xf2,
-0x10, 0xb6, 0x65, 0x2b, 0x56, 0x40, 0xeb, 0xff,
-0xae, 0xae, 0x7b, 0xf7, 0xfe, 0x7d, 0x37, 0xb7,
-0x79, 0x44, 0x25, 0xd4, 0x41, 0x69, 0x1c, 0x74,
-0x00, 0xac, 0xbe, 0x12, 0x31, 0x2c, 0x59, 0x57,
-0x30, 0x9e, 0x1a, 0x87, 0xd6, 0x08, 0x43, 0x5c,
-0xf6, 0x47, 0xac, 0x44, 0x3b, 0xcc, 0x58, 0x64,
-0x96, 0xb2, 0xc9, 0x98, 0xb1, 0xd6, 0xe3, 0x94,
-0x75, 0xb4, 0x74, 0x13, 0x92, 0x8f, 0xc7, 0x25,
-0x25, 0x47, 0x45, 0xc7, 0x42, 0x9f, 0xa9, 0xa9,
-0x6f, 0x22, 0x6f, 0xe9, 0x2a, 0xba, 0x8e, 0x26,
-0x4d, 0x9a, 0x4c, 0xbf, 0xbf, 0x49, 0x3a, 0x8d,
-0xb4, 0xcf, 0xd0, 0x72, 0xa9, 0x25, 0xa9, 0xad,
-0x20, 0xb9, 0x79, 0xcb, 0xe6, 0xf3, 0x97, 0x2e,
-0x03, 0x5c, 0x66, 0x9f, 0xbd, 0x70, 0xe7, 0xfe,
-0x03, 0x3e, 0xc3, 0x28, 0x78, 0x9a, 0x09, 0x9e,
-0xec, 0xea, 0x35, 0x5e, 0x64, 0xa5, 0x84, 0x8a,
-0x12, 0xd9, 0xce, 0x46, 0xd6, 0xb1, 0x87, 0xaa,
-0x30, 0x75, 0xea, 0xb4, 0x9b, 0xb7, 0xef, 0x1d,
-0x0e, 0x8b, 0x4e, 0x4e, 0x49, 0x2f, 0x2d, 0xbf,
-0x89, 0xf8, 0xab, 0x70, 0x79, 0x52, 0x5a, 0x46,
-0x96, 0xab, 0xeb, 0x3c, 0x67, 0x17, 0x57, 0x24,
-0x67, 0x29, 0x39, 0x39, 0xbb, 0x38, 0x39, 0x21,
-0x8d, 0x96, 0xa4, 0xfc, 0xe6, 0x16, 0x13, 0xc0,
-0xc6, 0xf8, 0x52, 0xbf, 0x92, 0xf4, 0xa2, 0xa3,
-0x7d, 0x83, 0xd6, 0xce, 0x7d, 0xa1, 0xc7, 0xb5,
-0xbc, 0xfc, 0xa0, 0x50, 0xa9, 0xff, 0xdb, 0xd9,
-0x85, 0xb3, 0x68, 0x05, 0x8d, 0x18, 0xc5, 0x8d,
-0x53, 0x54, 0xae, 0x8b, 0xab, 0xc7, 0xa2, 0x25,
-0x3e, 0x3e, 0x07, 0xab, 0x6b, 0x6a, 0x7e, 0x63,
-0xaf, 0xe8, 0xeb, 0x1f, 0x10, 0x89, 0x7b, 0xba,
-0x19, 0xa1, 0xd7, 0x47, 0xeb, 0xd0, 0x38, 0xe3,
-0x95, 0xe5, 0x44, 0x4c, 0xf7, 0x6a, 0xeb, 0x8f,
-0x7b, 0xb5, 0xf5, 0x49, 0x8e, 0xb4, 0xab, 0x8c,
-0xc5, 0xae, 0x82, 0xef, 0x6b, 0x28, 0x93, 0xeb,
-0x6b, 0xac, 0xb4, 0x82, 0x23, 0xba, 0x8a, 0x91,
-0x95, 0x97, 0xd5, 0xfe, 0x16, 0x5b, 0x3f, 0x04,
-0x2c, 0x96, 0xaf, 0x68, 0xf2, 0x27, 0x99, 0x63,
-0x94, 0xf5, 0xde, 0x7d, 0xe7, 0x5d, 0x5d, 0xd6,
-0x57, 0x73, 0xf7, 0x35, 0xcd, 0xd8, 0x59, 0xa5,
-0x63, 0xf9, 0x3f, 0xda, 0x53, 0x16, 0x4f, 0x58,
-0x99, 0x08, 0x68, 0xc2, 0xf2, 0x03, 0x42, 0xbc,
-0x9b, 0xe8, 0x75, 0x5c, 0x73, 0xea, 0x52, 0xf5,
-0xa9, 0x9e, 0x13, 0xbd, 0x12, 0x67, 0x6c, 0x2f,
-0x1b, 0x6f, 0x30, 0x1b, 0xd7, 0x71, 0x59, 0xb8,
-0xce, 0xf4, 0x7e, 0xc8, 0x22, 0x70, 0x63, 0x83,
-0xee, 0x9e, 0x08, 0x42, 0x16, 0x71, 0xfa, 0x58,
-0xc4, 0xfb, 0xa3, 0x21, 0x02, 0x13, 0x09, 0x31,
-0x49, 0xf0, 0xcb, 0xc6, 0x1f, 0x99, 0x59, 0x7e,
-0x02, 0x2b, 0x3f, 0x00, 0x62, 0x01, 0xcb, 0x57,
-0x68, 0xe5, 0x2b, 0x04, 0x34, 0x04, 0x44, 0xb3,
-0xf6, 0x43, 0xe8, 0x24, 0x0c, 0x00, 0x61, 0x90,
-0x04, 0x06, 0x31, 0xe4, 0xb3, 0xfc, 0xe1, 0x28,
-0x38, 0x95, 0xc8, 0x03, 0x87, 0xac, 0xfc, 0x44,
-0x24, 0x29, 0xa2, 0xa2, 0x6c, 0xfc, 0x01, 0x1f,
-0x85, 0x18, 0x1e, 0x82, 0x10, 0x94, 0x11, 0xd1,
-0x52, 0xec, 0xfc, 0x45, 0x96, 0xbe, 0x88, 0xbc,
-0x2c, 0x7f, 0xa1, 0x15, 0xde, 0xfb, 0x85, 0x4c,
-0x94, 0x09, 0x49, 0xd9, 0x89, 0xc8, 0xcc, 0xf2,
-0x47, 0xb5, 0xb1, 0x22, 0x44, 0x7f, 0x99, 0x28,
-0x54, 0x18, 0xe7, 0x06, 0x58, 0x10, 0x92, 0x25,
-0x32, 0x88, 0x48, 0xe9, 0x0c, 0x09, 0xe5, 0xa2,
-0x04, 0x20, 0xd6, 0x06, 0x4a, 0x24, 0x55, 0xb0,
-0xf5, 0x47, 0xa3, 0xe1, 0x13, 0x5e, 0x3f, 0x2c,
-0x97, 0x15, 0x20, 0x72, 0x08, 0xc4, 0x1b, 0xce,
-0x8e, 0x1c, 0x91, 0x53, 0x08, 0x33, 0xff, 0xa8,
-0x68, 0x61, 0xb8, 0xc8, 0x33, 0x8a, 0x59, 0x11,
-0xdd, 0xed, 0xc5, 0xe5, 0x7f, 0xc4, 0xed, 0x5a,
-0x1f, 0xdd, 0xf8, 0x71, 0x44, 0x5d, 0x64, 0xce,
-0xe3, 0xdf, 0xf5, 0xc1, 0xd0, 0xff, 0x2f, 0x7a,
-0xd6, 0xff, 0xfc, 0x9b, 0x6f, 0x77, 0x2e, 0xf2,
-0x5c, 0xf6, 0xe5, 0x57, 0x5f, 0xef, 0xd9, 0xe7,
-0x13, 0x1e, 0x15, 0x9b, 0x95, 0x7d, 0xfe, 0x5a,
-0x7e, 0xc9, 0x9d, 0xfb, 0x0f, 0xeb, 0x1b, 0x1f,
-0x03, 0xe6, 0xf2, 0xba, 0x85, 0x3c, 0xbe, 0xb0,
-0x9b, 0x11, 0x75, 0xf2, 0x98, 0x96, 0x27, 0xbc,
-0x86, 0xa6, 0xd6, 0x07, 0x0f, 0x1b, 0x6f, 0x54,
-0xdc, 0x2b, 0x28, 0x2a, 0x3d, 0x7f, 0xf1, 0x0a,
-0x5c, 0xc8, 0x31, 0xf1, 0xc9, 0x30, 0xdd, 0xdd,
-0xff, 0x93, 0xff, 0xce, 0xef, 0xf7, 0x6c, 0xda,
-0xbc, 0x75, 0xfd, 0x86, 0x4f, 0x57, 0xac, 0xf2,
-0x5a, 0xe4, 0xb9, 0xdc, 0xd5, 0x6d, 0x81, 0x83,
-0xa3, 0x13, 0xcb, 0xd6, 0x6e, 0xce, 0x9c, 0xb9,
-0x33, 0x67, 0xce, 0x9a, 0x36, 0x6d, 0x1a, 0xb9,
-0x1d, 0x8d, 0xdb, 0x64, 0x01, 0xd1, 0x77, 0x94,
-0x4c, 0x4c, 0x4d, 0xf4, 0x0c, 0xf5, 0xe9, 0x7e,
-0x1d, 0xf6, 0x6c, 0xc7, 0x82, 0xe2, 0x92, 0xc3,
-0x61, 0x11, 0x29, 0xa9, 0x99, 0x65, 0x37, 0x6e,
-0x3d, 0x69, 0xeb, 0x7c, 0x3a, 0xfa, 0x4d, 0x48,
-0x80, 0x92, 0x18, 0x6e, 0x2c, 0xae, 0xe3, 0x52,
-0x51, 0x53, 0x53, 0x81, 0x50, 0x15, 0x08, 0x21,
-0x52, 0x59, 0x0d, 0xf0, 0x42, 0x4d, 0x55, 0x8d,
-0x12, 0x59, 0xe5, 0xa5, 0x02, 0xf8, 0x7b, 0x22,
-0x25, 0x35, 0x36, 0x3e, 0x99, 0x1b, 0x93, 0x78,
-0xf9, 0x97, 0x3c, 0x70, 0x06, 0x45, 0x62, 0x45,
-0x9b, 0xde, 0xb7, 0xb6, 0xb5, 0x99, 0x9a, 0x98,
-0xa9, 0x2a, 0xe3, 0xe7, 0x14, 0x69, 0x08, 0x43,
-0x9f, 0x9a, 0x1a, 0x8a, 0xfa, 0xd7, 0xbf, 0xa6,
-0x64, 0x9f, 0x39, 0x9b, 0x90, 0x9c, 0xbc, 0x7b,
-0xef, 0xfe, 0x03, 0x3e, 0x01, 0xa1, 0x47, 0xc3,
-0x8f, 0xa7, 0x64, 0x5e, 0xcf, 0x2f, 0x82, 0xd9,
-0x0a, 0xaf, 0x5b, 0xd0, 0xd7, 0x27, 0x7d, 0xc6,
-0xfa, 0xba, 0xf0, 0xfe, 0x81, 0xfe, 0xc7, 0x2d,
-0xad, 0x17, 0x72, 0x2e, 0xed, 0xd9, 0xb3, 0x6f,
-0xc3, 0x86, 0x8d, 0xab, 0x57, 0xaf, 0xfd, 0xf4,
-0xb3, 0xcf, 0x0f, 0xfc, 0x74, 0xe8, 0xea, 0xf5,
-0xfc, 0x4e, 0x5e, 0x97, 0xe2, 0x8f, 0x23, 0xc8,
-0xaa, 0x0c, 0x9e, 0x6f, 0x1f, 0x8f, 0xcf, 0x54,
-0x3f, 0xac, 0xaf, 0x6f, 0x6c, 0x4a, 0xcd, 0xc8,
-0xd4, 0xd2, 0xd2, 0xa2, 0x15, 0xc4, 0x9a, 0xaa,
-0x60, 0x04, 0xb4, 0x45, 0x55, 0x55, 0xd5, 0xd4,
-0xd5, 0xd5, 0x53, 0xd3, 0x33, 0x92, 0x4f, 0xa4,
-0x45, 0xc7, 0x26, 0x40, 0x95, 0x6b, 0xea, 0x1e,
-0xe1, 0x26, 0x4b, 0xa3, 0x57, 0x19, 0xb0, 0x6c,
-0xfa, 0xf4, 0x19, 0x70, 0x3a, 0x08, 0x54, 0x55,
-0x51, 0x57, 0x51, 0x52, 0x03, 0x22, 0x49, 0xa4,
-0xa1, 0x24, 0x9a, 0x1a, 0x19, 0x80, 0x8d, 0x3e,
-0xbe, 0x47, 0x66, 0x65, 0x15, 0x0f, 0x8f, 0x45,
-0xf7, 0x2b, 0x2b, 0x8b, 0x4b, 0x4b, 0xef, 0xdc,
-0xbd, 0x57, 0x53, 0x5b, 0xf7, 0xb8, 0xa5, 0xa5,
-0xb3, 0x8b, 0xd7, 0xde, 0xd1, 0xd9, 0xd1, 0xc1,
-0xe3, 0xf1, 0xf9, 0x40, 0x5d, 0x3c, 0x7e, 0x57,
-0x17, 0x0f, 0x68, 0x44, 0x12, 0x03, 0x3e, 0x84,
-0x7c, 0xe0, 0x97, 0xf4, 0xf6, 0xfc, 0xae, 0xae,
-0x0b, 0xa6, 0x0e, 0x8f, 0x88, 0x52, 0x53, 0xd5,
-0x50, 0xc5, 0x86, 0x7e, 0x45, 0x67, 0x6c, 0x7d,
-0xa2, 0x2a, 0x28, 0x49, 0x7a, 0x82, 0xb4, 0x9f,
-0x90, 0xa4, 0x3a, 0xd5, 0x5c, 0x8d, 0x92, 0xea,
-0xeb, 0xcc, 0x50, 0x41, 0x55, 0x5d, 0x1d, 0xdd,
-0x98, 0xb8, 0x78, 0x30, 0x60, 0x64, 0x74, 0xfc,
-0xa5, 0x5f, 0xf0, 0x2d, 0x5d, 0xb1, 0x58, 0xa2,
-0xe0, 0xce, 0xe7, 0xa3, 0xe6, 0x96, 0x19, 0x33,
-0x66, 0xbd, 0xd1, 0x74, 0xf2, 0x38, 0x12, 0x51,
-0x66, 0xfd, 0x86, 0xcf, 0xae, 0x5c, 0xcb, 0x3d,
-0x7c, 0x24, 0x1c, 0xbf, 0x00, 0x75, 0xa7, 0x0a,
-0x5f, 0xb5, 0x1b, 0x1d, 0xa4, 0x00, 0x7f, 0x37,
-0x6e, 0xfc, 0x02, 0xcd, 0xfe, 0x6a, 0x73, 0x60,
-0xb7, 0x1c, 0xaf, 0xa2, 0x46, 0xda, 0x02, 0xa0,
-0xbf, 0xfc, 0xe6, 0xad, 0x63, 0x51, 0x71, 0xc7,
-0x53, 0x32, 0x0a, 0x4b, 0x6e, 0xb6, 0xb4, 0xfe,
-0xca, 0xeb, 0xde, 0x4f, 0x9f, 0x3f, 0xed, 0x16,
-0x30, 0xfc, 0x6e, 0x06, 0xa0, 0x1f, 0x42, 0x88,
-0xff, 0x16, 0xe2, 0xe1, 0x92, 0x03, 0xc6, 0xe7,
-0xe0, 0x41, 0x0d, 0x0d, 0x4d, 0x15, 0x25, 0x55,
-0x54, 0x49, 0x75, 0x64, 0x7d, 0x5d, 0xdc, 0xdc,
-0xf2, 0x0a, 0x0a, 0x43, 0x8f, 0x84, 0xa5, 0xa6,
-0x67, 0x97, 0x94, 0xdd, 0x84, 0xb9, 0xe2, 0xb3,
-0x67, 0x8a, 0xf0, 0x17, 0x1c, 0x55, 0x54, 0x80,
-0x19, 0xb5, 0x50, 0xa1, 0x58, 0xa4, 0xf8, 0x59,
-0xf6, 0xb0, 0xfe, 0x80, 0xc3, 0x82, 0xb8, 0xa7,
-0xb7, 0xad, 0xa3, 0xb3, 0xb6, 0xbe, 0xde, 0xc6,
-0xc6, 0x1e, 0x86, 0x02, 0xd2, 0x51, 0xd5, 0xe4,
-0xd7, 0xf2, 0x70, 0x7a, 0x43, 0xeb, 0xab, 0xd1,
-0x4e, 0x42, 0xe2, 0x43, 0xbd, 0x45, 0x4d, 0xd6,
-0x85, 0xb0, 0xab, 0x03, 0x0b, 0xed, 0xfc, 0x78,
-0x95, 0xa9, 0x6a, 0x4d, 0xfd, 0x24, 0xde, 0xfa,
-0x10, 0x63, 0x1f, 0x80, 0x58, 0x69, 0xf9, 0x53,
-0xa7, 0x8a, 0x85, 0x13, 0x38, 0xb3, 0xaa, 0x16,
-0x8e, 0x33, 0xbc, 0x1f, 0xda, 0x04, 0x30, 0x33,
-0xb6, 0x17, 0x8f, 0x51, 0x37, 0x03, 0x6c, 0x35,
-0x72, 0xdd, 0x05, 0x5e, 0x1b, 0x81, 0x27, 0xc1,
-0xdc, 0x5d, 0x55, 0xca, 0x46, 0xb3, 0x20, 0x53,
-0x49, 0x7b, 0xea, 0xb4, 0xad, 0xa5, 0x90, 0x39,
-0xf1, 0xe3, 0x8c, 0xf7, 0x95, 0xf5, 0xde, 0x7b,
-0xef, 0x9f, 0x26, 0x8b, 0x83, 0x6d, 0x08, 0x48,
-0xd9, 0x12, 0x4e, 0x40, 0x34, 0x3c, 0xcb, 0x8f,
-0x26, 0x65, 0x0b, 0x8d, 0x46, 0x10, 0xb9, 0x1f,
-0xcb, 0x42, 0xcc, 0x82, 0xa4, 0x40, 0xba, 0x1e,
-0x49, 0x1a, 0x0a, 0xe8, 0x89, 0x04, 0x28, 0x09,
-0x0a, 0xcb, 0x8e, 0x02, 0xc6, 0x59, 0xfb, 0x8b,
-0xc8, 0x51, 0x8a, 0xb0, 0x94, 0x13, 0x4f, 0xa7,
-0x21, 0x3d, 0xd7, 0x16, 0x01, 0x54, 0xc8, 0x22,
-0x71, 0x8a, 0xcb, 0x38, 0x25, 0x00, 0xec, 0xf6,
-0x85, 0x1c, 0x11, 0x99, 0x0f, 0x88, 0x48, 0x59,
-0x00, 0xfd, 0x22, 0x02, 0x94, 0x90, 0x2f, 0x40,
-0x1c, 0x0f, 0x10, 0xd0, 0x43, 0x36, 0xa8, 0x12,
-0xc0, 0x28, 0xb8, 0xde, 0x42, 0xc4, 0x65, 0xbf,
-0x21, 0xb5, 0x59, 0x44, 0x6d, 0x79, 0x45, 0xa4,
-0xba, 0xc9, 0x72, 0xac, 0x65, 0x55, 0x00, 0x7d,
-0x40, 0x55, 0x74, 0x78, 0x03, 0x05, 0x0e, 0x41,
-0x22, 0x7b, 0x8e, 0xc0, 0x25, 0x58, 0xc0, 0x0e,
-0x66, 0x5c, 0x42, 0x44, 0xee, 0x61, 0x02, 0x8f,
-0x08, 0xc1, 0x32, 0xae, 0x78, 0x65, 0xac, 0x60,
-0x5d, 0x3c, 0xb3, 0x21, 0x9e, 0xb7, 0x31, 0xa9,
-0x73, 0x63, 0x5c, 0xeb, 0x67, 0x31, 0x75, 0xb9,
-0x55, 0xfc, 0xb7, 0x8e, 0x95, 0x7f, 0x11, 0xc5,
-0x27, 0x26, 0x2f, 0xf4, 0x58, 0xb4, 0x7e, 0xc3,
-0xc6, 0xef, 0xbd, 0xf7, 0xc0, 0x85, 0x93, 0x92,
-0x76, 0xfa, 0xca, 0xd5, 0xbc, 0xf2, 0x9b, 0xb7,
-0xc1, 0xc9, 0x7a, 0xd4, 0x0a, 0xc3, 0x23, 0xc3,
-0x08, 0x44, 0x78, 0x81, 0x30, 0x22, 0x88, 0xb7,
-0x3c, 0x69, 0x07, 0x08, 0xbe, 0x57, 0x59, 0x45,
-0xb6, 0x86, 0x2e, 0x39, 0x7b, 0xfe, 0x22, 0x5c,
-0x68, 0xdc, 0xb8, 0xf8, 0x90, 0xc3, 0xe1, 0x07,
-0x0e, 0x06, 0x7c, 0xe7, 0xfd, 0xc3, 0x96, 0xad,
-0x3b, 0x00, 0x5f, 0xd6, 0xac, 0xfd, 0xc8, 0x73,
-0xc9, 0xca, 0x79, 0xf3, 0xdd, 0x1d, 0x9d, 0xdd,
-0xc0, 0xf5, 0xb1, 0xb4, 0x62, 0xcd, 0x99, 0x6d,
-0x09, 0x23, 0x3c, 0xa0, 0xf0, 0x94, 0x29, 0x53,
-0xc0, 0x17, 0x36, 0x37, 0x9f, 0x68, 0x66, 0x86,
-0x28, 0x6c, 0x6c, 0x66, 0x62, 0x64, 0x6c, 0x0c,
-0x10, 0x69, 0x67, 0xcf, 0xce, 0x2d, 0x28, 0x09,
-0x8b, 0xe4, 0x02, 0xa2, 0x95, 0x94, 0x57, 0xb4,
-0xb6, 0xe1, 0x5b, 0x42, 0xa3, 0xbe, 0xfd, 0xfa,
-0x62, 0xf0, 0xc4, 0x89, 0x54, 0x5c, 0x4a, 0x4d,
-0xf6, 0xf7, 0xd0, 0xc0, 0xb7, 0x9b, 0x74, 0xe4,
-0x49, 0xf2, 0x6f, 0x28, 0x04, 0x5f, 0x3b, 0x36,
-0x21, 0x3e, 0xe9, 0xc4, 0xc9, 0xe8, 0x98, 0xc4,
-0x4b, 0x57, 0xae, 0xd5, 0xa1, 0x2f, 0xa3, 0x68,
-0x83, 0x7a, 0xf0, 0xf7, 0x01, 0x67, 0xd5, 0x65,
-0x3f, 0xdc, 0x3f, 0x44, 0x4d, 0x2a, 0x19, 0xfc,
-0xf4, 0xe5, 0x2b, 0x57, 0x55, 0xdc, 0xbd, 0x13,
-0x14, 0x12, 0xba, 0x77, 0xbf, 0x8f, 0x1f, 0x7e,
-0xf4, 0x9c, 0x9b, 0x9a, 0x9e, 0x95, 0x57, 0x50,
-0x5a, 0x53, 0xd7, 0x04, 0x5e, 0x70, 0x2f, 0xf1,
-0x82, 0x15, 0x4c, 0xbd, 0x06, 0x06, 0x07, 0x7a,
-0xfb, 0x7a, 0x45, 0x12, 0x31, 0x72, 0xfe, 0xb6,
-0x0f, 0xcb, 0xbe, 0xc0, 0x6f, 0xab, 0x0d, 0x02,
-0xb8, 0x03, 0x48, 0xd5, 0xd4, 0x35, 0xde, 0xbc,
-0x5d, 0x75, 0xbf, 0xea, 0xc1, 0x22, 0x4f, 0xcf,
-0xe1, 0xf5, 0x55, 0x57, 0xa3, 0x21, 0x4d, 0x42,
-0xa8, 0x13, 0x9b, 0x90, 0x94, 0x96, 0x9e, 0x15,
-0x13, 0x0b, 0x53, 0x8e, 0x5c, 0x68, 0x4a, 0x89,
-0xa4, 0x47, 0x41, 0x71, 0x35, 0xb5, 0xf5, 0x56,
-0x56, 0x2c, 0x59, 0x8d, 0x87, 0x4c, 0x37, 0xc2,
-0x92, 0xc3, 0x42, 0x0d, 0x39, 0x03, 0xfc, 0x16,
-0x7b, 0x2e, 0x29, 0x2a, 0x29, 0x8f, 0xe2, 0x26,
-0x9c, 0x3e, 0x73, 0xfe, 0xce, 0xbd, 0xca, 0x2e,
-0x3e, 0xbf, 0x7f, 0xf4, 0x1b, 0xaa, 0x6f, 0x91,
-0x32, 0x32, 0xb3, 0xc8, 0xf7, 0x3e, 0xb0, 0xbe,
-0xea, 0x6f, 0xf3, 0xa7, 0xa9, 0xab, 0xa7, 0x1f,
-0xcd, 0x8d, 0x49, 0x49, 0x4b, 0x8f, 0x88, 0x44,
-0xfc, 0x7d, 0x58, 0x5b, 0xaf, 0xf8, 0x2d, 0xa1,
-0x8e, 0xce, 0x4e, 0x6b, 0x6b, 0x6b, 0x69, 0x2b,
-0xfc, 0xca, 0x4f, 0x63, 0x8d, 0xd7, 0xba, 0xdc,
-0xfc, 0xc2, 0xa3, 0xc7, 0x22, 0x4f, 0x9d, 0x3e,
-0x77, 0xfb, 0x2e, 0x98, 0x8b, 0x51, 0xb0, 0x49,
-0x05, 0xc0, 0xca, 0xf6, 0x1d, 0x3b, 0x87, 0x5b,
-0x5b, 0xde, 0x10, 0x64, 0x05, 0x05, 0xfe, 0x2c,
-0x2c, 0x2c, 0x4a, 0x6f, 0x54, 0x84, 0x45, 0xc7,
-0xc3, 0xb5, 0x53, 0x5c, 0x5a, 0x0e, 0xf8, 0xab,
-0x78, 0xb9, 0xdd, 0x9f, 0xa1, 0xc8, 0xa8, 0x18,
-0x5d, 0x5d, 0xfd, 0x11, 0x0a, 0xd0, 0x2e, 0x01,
-0x11, 0x7b, 0x07, 0x87, 0xbc, 0xc2, 0xa2, 0xc3,
-0x61, 0x91, 0xc9, 0xe9, 0x3f, 0x97, 0x94, 0xde,
-0xec, 0xe8, 0xe2, 0xf7, 0xf6, 0x8d, 0xf2, 0xe9,
-0xae, 0xb7, 0x4d, 0x03, 0x83, 0x38, 0x41, 0x6d,
-0xef, 0xe0, 0x3d, 0x7a, 0x0c, 0x13, 0xdd, 0x2b,
-0x60, 0x13, 0xaa, 0xd8, 0x08, 0xd3, 0xfd, 0x81,
-0x9f, 0x4c, 0x82, 0x06, 0xd9, 0xd9, 0x7e, 0x28,
-0x5b, 0xd7, 0x78, 0xf2, 0xdc, 0xdd, 0xd5, 0x00,
-0x25, 0x76, 0x80, 0x3e, 0x7e, 0x82, 0xe9, 0x5f,
-0x5f, 0x7f, 0xe7, 0xdd, 0xb1, 0xef, 0xfe, 0x43,
-0x69, 0xe2, 0x9a, 0x78, 0x16, 0xde, 0x2c, 0x15,
-0xce, 0xdc, 0x5e, 0x36, 0x46, 0xdd, 0x02, 0xdf,
-0x07, 0x74, 0xd9, 0x65, 0x03, 0xf8, 0x05, 0x60,
-0xea, 0xcb, 0x33, 0xf7, 0x0c, 0x01, 0x36, 0xc8,
-0x34, 0x5b, 0xb0, 0xdf, 0xfa, 0x50, 0xa7, 0x4d,
-0x80, 0x70, 0xce, 0xbe, 0x56, 0x1d, 0xcb, 0x0d,
-0xe8, 0x02, 0x9b, 0x3b, 0x58, 0x1f, 0x68, 0x61,
-0x91, 0x65, 0x45, 0x80, 0xbc, 0xb6, 0xd4, 0x27,
-0xf5, 0x23, 0xe8, 0x46, 0x33, 0x87, 0x85, 0x08,
-0x4c, 0x24, 0x2e, 0xa7, 0x37, 0x33, 0x03, 0xb0,
-0x4a, 0xa1, 0x1f, 0x11, 0x0d, 0x7c, 0x58, 0xf9,
-0x51, 0x29, 0xbc, 0x82, 0xb3, 0xe9, 0x37, 0x0c,
-0x34, 0x03, 0x18, 0x69, 0xe8, 0x2f, 0x92, 0x42,
-0xb9, 0x4c, 0x32, 0x30, 0xd3, 0x53, 0xe4, 0x25,
-0x42, 0x1c, 0xcf, 0x45, 0x57, 0x1d, 0x51, 0x1b,
-0xbd, 0x69, 0x99, 0xe6, 0x72, 0x06, 0xf9, 0x51,
-0xf4, 0xeb, 0x09, 0xee, 0xdb, 0x20, 0x82, 0x4b,
-0x28, 0xd6, 0x43, 0x12, 0xd7, 0x50, 0x05, 0x92,
-0xb3, 0x02, 0x71, 0x19, 0x33, 0xde, 0x5e, 0xf6,
-0x95, 0x25, 0x09, 0xc1, 0x51, 0x72, 0xb7, 0x59,
-0xec, 0x1c, 0xcc, 0x38, 0x71, 0x04, 0xf3, 0x0e,
-0x0b, 0xdc, 0xc3, 0x98, 0x85, 0xe1, 0xe2, 0xa5,
-0x88, 0xbc, 0x92, 0x8f, 0x12, 0x7b, 0x3f, 0x49,
-0x60, 0x3e, 0x3b, 0x2e, 0xf8, 0x3c, 0x99, 0xb7,
-0x29, 0xf9, 0xc9, 0x96, 0xc4, 0x06, 0xef, 0xd4,
-0xfa, 0x66, 0xfe, 0xdf, 0xf4, 0xb3, 0x47, 0xaf,
-0x13, 0x0c, 0xe6, 0x2b, 0x57, 0xad, 0x5d, 0xb9,
-0x66, 0xdd, 0xe6, 0x2d, 0x3b, 0x7c, 0x7c, 0x39,
-0x31, 0xf1, 0xc7, 0xcf, 0x9e, 0xbb, 0x50, 0x50,
-0x72, 0xeb, 0x5e, 0x55, 0x75, 0x53, 0xf3, 0x93,
-0xb6, 0x8e, 0x6e, 0x98, 0xa0, 0x32, 0x02, 0xb1,
-0x40, 0x88, 0x28, 0xdc, 0xd1, 0x85, 0x2b, 0xa2,
-0xeb, 0x1b, 0x5b, 0xab, 0xaa, 0xeb, 0x6e, 0xde,
-0xae, 0xcc, 0x2f, 0x2c, 0xbd, 0x78, 0xe9, 0x97,
-0xf4, 0xcc, 0xec, 0xb8, 0xc4, 0xe3, 0xa1, 0x61,
-0xdc, 0x43, 0x87, 0x82, 0x7e, 0xd8, 0xb3, 0x7f,
-0xdb, 0xf6, 0x6f, 0x37, 0x7e, 0xbe, 0x69, 0xdd,
-0xc7, 0x9f, 0x2e, 0x5b, 0xb1, 0x66, 0xd1, 0xe2,
-0x65, 0xae, 0xf3, 0x3c, 0xd8, 0x8e, 0x6e, 0x2c,
-0x5b, 0x7c, 0x22, 0x3c, 0x7b, 0xf6, 0x9c, 0x99,
-0x33, 0x67, 0xca, 0x96, 0x66, 0x4d, 0x99, 0x30,
-0x01, 0x51, 0xd8, 0xc2, 0x02, 0x42, 0x73, 0x5b,
-0x3b, 0xfb, 0xfc, 0x82, 0xa2, 0x88, 0xc8, 0x98,
-0x93, 0x30, 0x86, 0xc0, 0x1c, 0xfe, 0x49, 0x7b,
-0x8f, 0xc2, 0x2b, 0xf7, 0xec, 0xb9, 0x8b, 0x30,
-0x48, 0x6a, 0x69, 0xe9, 0x68, 0x69, 0xeb, 0x6b,
-0x6a, 0x49, 0x23, 0x30, 0x1a, 0x6b, 0x69, 0xeb,
-0x6a, 0x69, 0xeb, 0x01, 0x1e, 0xd3, 0x85, 0x5e,
-0x90, 0xd4, 0x37, 0x30, 0x8a, 0x88, 0x88, 0xcc,
-0x38, 0x75, 0x26, 0x0a, 0xf1, 0xf7, 0x3a, 0x38,
-0x83, 0xe8, 0xff, 0xbe, 0x78, 0x83, 0x97, 0x4a,
-0x89, 0x11, 0x8a, 0x66, 0xcf, 0xb1, 0x04, 0x81,
-0x20, 0x43, 0x5b, 0x47, 0x0f, 0x23, 0xba, 0x06,
-0x54, 0x14, 0xa0, 0x3c, 0xb8, 0xea, 0x21, 0xa1,
-0x87, 0x61, 0x90, 0xd9, 0xef, 0xe3, 0xbb, 0xff,
-0x27, 0xdf, 0x83, 0x01, 0x87, 0x41, 0xe7, 0xb4,
-0x8c, 0xec, 0xdc, 0xbc, 0xe2, 0x87, 0x35, 0xf5,
-0xed, 0x9d, 0x5d, 0x30, 0x08, 0x28, 0x58, 0xf3,
-0xf9, 0xbb, 0xe9, 0x25, 0x82, 0xaf, 0x58, 0xd2,
-0x07, 0x43, 0xd9, 0xfd, 0x07, 0x75, 0x45, 0x25,
-0x37, 0x1a, 0x9a, 0x1e, 0xef, 0xfa, 0x61, 0xb7,
-0x81, 0x81, 0x81, 0xbc, 0xbe, 0xda, 0xda, 0x3a,
-0x9a, 0xa4, 0xbe, 0xda, 0x3a, 0xba, 0x58, 0x7d,
-0x30, 0x85, 0x96, 0x4e, 0x4c, 0x6c, 0x5c, 0xc6,
-0xa9, 0x6c, 0x98, 0x72, 0xe4, 0x5c, 0xce, 0xab,
-0xae, 0x69, 0x12, 0x8b, 0x7b, 0x15, 0x3c, 0x59,
-0x6e, 0x6e, 0x69, 0x65, 0x3b, 0x39, 0xa3, 0x28,
-0x1d, 0xba, 0x3a, 0x0e, 0x42, 0x6d, 0x10, 0x49,
-0x42, 0xb0, 0x83, 0x0e, 0x4d, 0x6a, 0x6a, 0x62,
-0x08, 0xb6, 0xd5, 0xc4, 0x0f, 0x4d, 0x6a, 0x61,
-0x8e, 0x16, 0x96, 0xb8, 0xc0, 0x7d, 0x61, 0x69,
-0x79, 0x45, 0x78, 0x64, 0x6c, 0x7a, 0x56, 0x36,
-0xf4, 0x0a, 0x98, 0x27, 0x28, 0x7e, 0xdd, 0xf8,
-0x6d, 0xd1, 0x85, 0x9c, 0xcb, 0x06, 0x06, 0x86,
-0x52, 0x35, 0x48, 0xad, 0xb1, 0x8d, 0x34, 0x09,
-0x11, 0xb5, 0x89, 0xce, 0x7f, 0x20, 0x09, 0x3d,
-0x4b, 0x3f, 0x98, 0x6c, 0x85, 0x0a, 0x95, 0xca,
-0xb9, 0x7c, 0xbd, 0xaa, 0xb6, 0x59, 0x28, 0x12,
-0x0f, 0xbc, 0xe9, 0x5d, 0x6f, 0x4a, 0x7c, 0x46,
-0xe8, 0xe4, 0xec, 0x82, 0xa6, 0x23, 0xca, 0x50,
-0x7d, 0x34, 0x34, 0xa5, 0xfa, 0x40, 0x08, 0x71,
-0x20, 0x7a, 0x68, 0xe9, 0xf2, 0x15, 0x85, 0xc5,
-0xa5, 0xc7, 0xc2, 0xa3, 0xc1, 0xff, 0xad, 0xb8,
-0x45, 0xbf, 0x4e, 0xa5, 0x68, 0xba, 0xb2, 0x6f,
-0xff, 0x4f, 0xb4, 0x6a, 0x52, 0x22, 0x92, 0xc9,
-0xfe, 0x72, 0xda, 0x54, 0xb2, 0xb1, 0x89, 0x59,
-0x59, 0xc5, 0x6d, 0x6e, 0x0c, 0xe2, 0x6f, 0x41,
-0x51, 0x79, 0x6b, 0x5b, 0x87, 0xe2, 0x0f, 0xff,
-0xfd, 0x19, 0x4a, 0x3a, 0x91, 0x6e, 0x6c, 0x62,
-0xa2, 0x89, 0x6f, 0xf3, 0x63, 0x57, 0xc1, 0x3a,
-0x4a, 0x75, 0xc3, 0x2b, 0xc5, 0xc6, 0x96, 0x5d,
-0x54, 0x5c, 0x02, 0x55, 0x4b, 0x49, 0x3b, 0x55,
-0x52, 0x7a, 0xe3, 0x49, 0x7b, 0x17, 0xcc, 0xc4,
-0xfe, 0x22, 0x4d, 0xe4, 0x04, 0x6e, 0x6f, 0x7f,
-0xff, 0x80, 0xa4, 0xa7, 0xa7, 0xad, 0x83, 0x57,
-0x55, 0x5d, 0xdb, 0xc9, 0xe3, 0x6d, 0xdb, 0xf6,
-0x6f, 0x1d, 0xb8, 0x66, 0x65, 0xb6, 0x92, 0xf7,
-0x8d, 0xe1, 0x06, 0x94, 0xb7, 0x14, 0x6d, 0x1a,
-0xe8, 0xf9, 0x1a, 0x9a, 0x34, 0x07, 0x38, 0x75,
-0x64, 0xf1, 0x91, 0x7d, 0x63, 0x98, 0x28, 0xfd,
-0xc9, 0xae, 0x5f, 0x82, 0x53, 0x66, 0x1b, 0x24,
-0xb0, 0x0e, 0x00, 0xa8, 0xea, 0x36, 0x72, 0xf3,
-0x06, 0x0c, 0x55, 0x33, 0x9a, 0x6d, 0xbd, 0xff,
-0x31, 0x5d, 0x1d, 0x34, 0x0d, 0xf1, 0x17, 0xfd,
-0x5f, 0x03, 0xa7, 0xef, 0x68, 0xce, 0xec, 0xef,
-0x6f, 0x8f, 0xd5, 0xc6, 0x8d, 0xb9, 0xc6, 0x19,
-0xcc, 0xb0, 0xf1, 0x79, 0x6c, 0x1f, 0x28, 0x62,
-0x07, 0x8a, 0x01, 0x5c, 0xa6, 0x6d, 0xce, 0x7d,
-0xef, 0x9d, 0x7f, 0xbc, 0x3f, 0x46, 0x6d, 0xe6,
-0xa6, 0x1c, 0x0a, 0x3a, 0xc0, 0x8c, 0x61, 0x90,
-0xd0, 0x36, 0x88, 0x51, 0x40, 0x70, 0x2e, 0x70,
-0x02, 0x1b, 0xf2, 0xbf, 0x89, 0xc1, 0x2a, 0x00,
-0x57, 0x08, 0xe3, 0x22, 0x61, 0x99, 0x4c, 0x04,
-0xd6, 0x00, 0x69, 0x1c, 0x79, 0x02, 0x87, 0x80,
-0x6f, 0x04, 0x01, 0x27, 0x3b, 0x48, 0x0c, 0xbe,
-0xa7, 0x7d, 0x80, 0x90, 0xb2, 0xa1, 0x1f, 0x1a,
-0x20, 0x90, 0x0a, 0x09, 0x92, 0xaa, 0x27, 0x15,
-0x05, 0x40, 0x49, 0x96, 0x22, 0x83, 0x35, 0xec,
-0x02, 0xb1, 0x38, 0xeb, 0x00, 0xac, 0x1a, 0xf0,
-0x40, 0x88, 0x00, 0x3a, 0x5c, 0x54, 0x00, 0x33,
-0x5c, 0x25, 0x38, 0x0b, 0x92, 0xac, 0x00, 0x21,
-0x5a, 0x92, 0x32, 0x73, 0x24, 0x58, 0x29, 0x0e,
-0x28, 0x00, 0xca, 0x0b, 0x5d, 0x43, 0x90, 0xdc,
-0x0e, 0x8b, 0xe6, 0x1f, 0x11, 0x03, 0xf2, 0x7a,
-0x46, 0xf5, 0x2c, 0x8f, 0x11, 0xaf, 0x8e, 0x13,
-0x6f, 0x48, 0x12, 0x7e, 0x99, 0x22, 0xfc, 0x22,
-0x45, 0xb2, 0x3d, 0x43, 0xb8, 0x2d, 0x5d, 0xb8,
-0x35, 0xa5, 0x63, 0x4b, 0x52, 0x73, 0xc2, 0xf5,
-0x8e, 0xa7, 0xff, 0xf9, 0x6b, 0x47, 0x9e, 0xb7,
-0x48, 0xdd, 0x02, 0xe6, 0x7b, 0xef, 0x1f, 0x96,
-0x2c, 0x5d, 0xf1, 0xc5, 0x57, 0x5f, 0xff, 0xf0,
-0xa3, 0xcf, 0xd1, 0x08, 0x2e, 0xe0, 0xe9, 0xf5,
-0xbc, 0xc2, 0x9b, 0x77, 0x2a, 0xeb, 0x1b, 0x9b,
-0x5b, 0xdb, 0x3a, 0x79, 0xc4, 0x05, 0x86, 0xf1,
-0x47, 0x28, 0x02, 0x08, 0x16, 0xf1, 0xf8, 0xdd,
-0x8f, 0x5b, 0xbb, 0xea, 0x1a, 0x9a, 0x2b, 0x1f,
-0xd4, 0xde, 0xa8, 0xb8, 0x5f, 0x50, 0x54, 0x7a,
-0xee, 0xe2, 0xe5, 0x8c, 0x53, 0xa7, 0x13, 0x8f,
-0x9f, 0x3c, 0x16, 0x16, 0x1d, 0x18, 0x14, 0xba,
-0xe7, 0x47, 0xfc, 0x1a, 0xc2, 0xa6, 0xcd, 0xdb,
-0x3e, 0x5e, 0xbf, 0x71, 0xd5, 0x9a, 0x4f, 0x16,
-0x2f, 0x5d, 0xb1, 0x60, 0xe1, 0x62, 0x67, 0x57,
-0x77, 0x7b, 0x07, 0x17, 0x96, 0x8d, 0xbd, 0xa5,
-0xa5, 0x35, 0x41, 0xe1, 0x59, 0xd3, 0xa6, 0x7d,
-0x38, 0xed, 0x03, 0xfc, 0x76, 0x12, 0x79, 0x53,
-0x69, 0x92, 0x8d, 0xad, 0xed, 0xb5, 0xbc, 0x3c,
-0x6e, 0x6c, 0xd2, 0xc9, 0xd4, 0x4c, 0x70, 0xa6,
-0x5a, 0x5a, 0xdb, 0x7b, 0x7a, 0x47, 0x9d, 0xc3,
-0x00, 0x74, 0x02, 0x33, 0x38, 0xce, 0xfa, 0x06,
-0x06, 0x74, 0x41, 0x97, 0x34, 0x62, 0x20, 0x8d,
-0x00, 0xe8, 0x42, 0x9c, 0xe6, 0x1b, 0x19, 0x9b,
-0x84, 0x84, 0x1e, 0x39, 0x7d, 0xf6, 0x3c, 0x37,
-0x36, 0x39, 0xe7, 0xf2, 0xd5, 0xea, 0x9a, 0x46,
-0x40, 0xd8, 0xd1, 0xfc, 0x5f, 0xdc, 0x57, 0xaa,
-0xb7, 0xd7, 0xce, 0xde, 0x41, 0x0f, 0x24, 0x50,
-0x32, 0xd0, 0xd7, 0x35, 0x30, 0x92, 0x17, 0x04,
-0x49, 0x6b, 0x6b, 0x56, 0x56, 0xf6, 0x99, 0xac,
-0xec, 0xec, 0x9f, 0x7c, 0xfc, 0x7c, 0x0e, 0x06,
-0x04, 0x06, 0x1d, 0x8e, 0x88, 0x8a, 0x4d, 0x3f,
-0x75, 0x26, 0x37, 0xaf, 0xf4, 0x5e, 0x65, 0x4d,
-0x7b, 0x47, 0x27, 0xd9, 0xf6, 0xa7, 0xff, 0xcf,
-0x3c, 0x80, 0x20, 0x37, 0xd3, 0xf0, 0x16, 0xeb,
-0xb3, 0xfe, 0xe7, 0x30, 0x5b, 0x68, 0x6e, 0xe3,
-0x81, 0xb5, 0xf3, 0x8b, 0xf0, 0xd5, 0xb0, 0xcc,
-0xac, 0xec, 0x19, 0x33, 0x66, 0x92, 0xaa, 0x81,
-0x56, 0x86, 0x44, 0x31, 0x43, 0xd0, 0x93, 0xa8,
-0x67, 0x20, 0xb7, 0x43, 0x64, 0x64, 0xf4, 0xe9,
-0x33, 0x17, 0x62, 0xe2, 0x70, 0xca, 0x51, 0x5d,
-0xd3, 0x80, 0x9b, 0x2c, 0x8d, 0xbe, 0x9b, 0x47,
-0x7b, 0x67, 0xa7, 0xbb, 0xc7, 0x22, 0x2a, 0xc1,
-0xc0, 0xd0, 0x58, 0x2a, 0x47, 0x1e, 0x0e, 0x8f,
-0xc8, 0xcc, 0x32, 0x2c, 0xa9, 0xef, 0x3a, 0x6f,
-0x7e, 0xd9, 0x8d, 0xdb, 0x11, 0xdc, 0xf8, 0xf4,
-0x53, 0xd9, 0xb7, 0xee, 0x54, 0xc2, 0x00, 0x08,
-0xd5, 0xff, 0x3f, 0x58, 0x7c, 0x58, 0x50, 0x58,
-0x64, 0x6e, 0x6e, 0x8e, 0xa6, 0xd0, 0x1f, 0x56,
-0xf7, 0x91, 0xea, 0xfd, 0x91, 0x24, 0x74, 0x2d,
-0xbf, 0x80, 0xc0, 0xb3, 0xe7, 0x2f, 0x44, 0xc7,
-0x24, 0x5c, 0xc4, 0x3e, 0x53, 0x47, 0xf0, 0x57,
-0xc1, 0x56, 0x12, 0x12, 0x8f, 0xc5, 0x4b, 0x5f,
-0x31, 0x9a, 0xac, 0x39, 0xe4, 0xa1, 0x9e, 0x4c,
-0x49, 0x8f, 0xc5, 0x9e, 0x85, 0xc5, 0x25, 0xe1,
-0x11, 0x5c, 0xf0, 0x7f, 0x71, 0xfd, 0x9e, 0x82,
-0xaf, 0xf9, 0x10, 0x0a, 0x08, 0x0c, 0x31, 0x34,
-0x32, 0x92, 0x57, 0x50, 0xda, 0x4c, 0x06, 0xb8,
-0xb9, 0x8d, 0x9e, 0x9e, 0x01, 0x90, 0xa9, 0xa9,
-0x59, 0x61, 0x69, 0x09, 0xcc, 0x81, 0xa5, 0xf8,
-0xfb, 0xa4, 0xa3, 0xa7, 0x0f, 0xdf, 0x70, 0xa7,
-0x0b, 0xe9, 0x47, 0xbb, 0x89, 0xf4, 0xc7, 0xe8,
-0xf4, 0x99, 0x9f, 0x27, 0x4e, 0x9a, 0x0c, 0x0a,
-0xe8, 0xe2, 0x63, 0xa3, 0xa1, 0x4b, 0x8f, 0x92,
-0x35, 0xcb, 0x06, 0x1a, 0x25, 0x22, 0x3a, 0x36,
-0x35, 0xed, 0x54, 0x31, 0xe0, 0x6f, 0x5b, 0xd7,
-0xd3, 0x67, 0xfd, 0x7f, 0xc5, 0x4c, 0x4c, 0x3e,
-0x7f, 0x7e, 0xfe, 0x9f, 0xfe, 0xa7, 0xcf, 0x9f,
-0x09, 0x45, 0x92, 0xc7, 0xad, 0xed, 0xf7, 0x2b,
-0x1f, 0xdc, 0xb9, 0xf7, 0xa0, 0xb2, 0xfa, 0xe1,
-0x87, 0xd3, 0xa7, 0x53, 0xc5, 0xc8, 0xb3, 0x2d,
-0x83, 0xe1, 0x1a, 0xca, 0x0d, 0xf8, 0x7a, 0xa3,
-0xeb, 0xe9, 0x8d, 0x0c, 0x01, 0xc4, 0x87, 0xc6,
-0x01, 0x52, 0x59, 0x2d, 0x7d, 0x53, 0x64, 0x36,
-0x34, 0x32, 0x98, 0xf0, 0xe1, 0xac, 0x4d, 0x3f,
-0x03, 0x52, 0x38, 0x70, 0x10, 0x65, 0xac, 0x7d,
-0x5a, 0x34, 0x3e, 0xf0, 0x04, 0x60, 0xd5, 0x63,
-0x7d, 0xe9, 0x14, 0x24, 0x06, 0xec, 0x70, 0x08,
-0x12, 0xcf, 0xf9, 0xb6, 0x6c, 0x8c, 0x06, 0xfa,
-0xbf, 0x86, 0xae, 0xbb, 0x1d, 0x70, 0xed, 0x10,
-0xdf, 0x74, 0xa1, 0x0f, 0xae, 0xb6, 0xfa, 0xa7,
-0xfa, 0x94, 0xd5, 0xe1, 0x36, 0x81, 0x02, 0x47,
-0x0e, 0xc0, 0x13, 0x84, 0x42, 0xfb, 0x83, 0xad,
-0xef, 0x2b, 0x1b, 0xbf, 0xf3, 0xee, 0x18, 0x8b,
-0xe5, 0x61, 0x6c, 0x00, 0x23, 0x8e, 0xc8, 0x89,
-0x23, 0x76, 0xe4, 0x88, 0x41, 0x38, 0x20, 0x11,
-0x90, 0xa3, 0x8c, 0xd8, 0xaf, 0x46, 0xd8, 0x52,
-0x12, 0x03, 0x7e, 0x0d, 0x4b, 0x0e, 0x1d, 0xa5,
-0x21, 0xe8, 0x43, 0x23, 0x20, 0x19, 0x71, 0x2d,
-0x48, 0xc8, 0xe6, 0x08, 0xd9, 0x44, 0x3e, 0x89,
-0x43, 0x44, 0xe4, 0x20, 0x0d, 0x45, 0x34, 0xc9,
-0x96, 0x1d, 0xa2, 0x18, 0x4a, 0x23, 0x6c, 0xd4,
-0x47, 0x7a, 0xd4, 0x91, 0x30, 0xd3, 0x43, 0x32,
-0x99, 0x58, 0x10, 0x64, 0x3a, 0x22, 0x1b, 0x03,
-0x49, 0x7a, 0x0a, 0x41, 0x52, 0x01, 0x95, 0x43,
-0x18, 0xc4, 0xb8, 0x6e, 0x59, 0x5a, 0x3b, 0x21,
-0x91, 0x29, 0xb0, 0xe7, 0x08, 0x01, 0xb5, 0xd9,
-0x1c, 0xea, 0xea, 0x0a, 0x50, 0x32, 0x47, 0xe0,
-0x12, 0x0a, 0xa2, 0x84, 0xf3, 0x8e, 0x88, 0xd0,
-0xe7, 0x3d, 0x26, 0xf2, 0x08, 0x17, 0x2d, 0x8e,
-0x14, 0x2f, 0x8f, 0x96, 0xac, 0x8c, 0x15, 0x7e,
-0x92, 0x24, 0xfe, 0xf4, 0x84, 0x64, 0x63, 0x4a,
-0xef, 0xd7, 0x19, 0xbd, 0xdb, 0x32, 0x25, 0x3b,
-0xb2, 0x24, 0xbb, 0x4e, 0x75, 0x79, 0x67, 0xb4,
-0x7f, 0x77, 0xbc, 0xa9, 0xac, 0x86, 0xf9, 0xdb,
-0x6e, 0xfb, 0xfc, 0x86, 0x9e, 0xfc, 0x72, 0x30,
-0xbf, 0xb0, 0x18, 0x86, 0x5f, 0xaf, 0x8f, 0xd7,
-0x7f, 0xb3, 0xd3, 0xdb, 0x8f, 0x73, 0x34, 0x21,
-0x29, 0xf5, 0xfc, 0xc5, 0x2b, 0x05, 0x25, 0x15,
-0x30, 0x99, 0x6c, 0x6e, 0x69, 0x03, 0x17, 0x18,
-0x3c, 0x5f, 0xe8, 0xe1, 0x30, 0x04, 0x09, 0x84,
-0x42, 0xa0, 0x0e, 0x1e, 0xd3, 0xd2, 0xd6, 0x01,
-0x5e, 0x70, 0x65, 0x75, 0x6d, 0x05, 0x7e, 0xc2,
-0xbb, 0x0c, 0x70, 0x0d, 0x26, 0xf3, 0xc9, 0x27,
-0xd2, 0xc2, 0xa3, 0x63, 0x83, 0x43, 0x8e, 0x1c,
-0xf0, 0xf1, 0xdd, 0xb9, 0x6b, 0xcf, 0xd6, 0x6d,
-0x3b, 0x36, 0x7e, 0xbe, 0xd9, 0x6b, 0xdd, 0x86,
-0x55, 0xab, 0xbd, 0x00, 0xdf, 0x17, 0xb8, 0x2f,
-0x72, 0x9b, 0xe7, 0x6e, 0xcf, 0x76, 0xb6, 0xb1,
-0x63, 0xe3, 0x1d, 0xe9, 0xb9, 0x96, 0xb3, 0x66,
-0xcd, 0x06, 0x20, 0x9e, 0x3e, 0x7d, 0x3a, 0xb8,
-0xc3, 0x00, 0x79, 0xbf, 0x5c, 0xbf, 0x9e, 0x98,
-0x9c, 0x72, 0x32, 0x2d, 0x2b, 0xb7, 0xa8, 0xe2,
-0x51, 0x73, 0x9b, 0x58, 0x22, 0xc1, 0xb5, 0xb0,
-0x2f, 0x5f, 0x90, 0x4f, 0xbf, 0x81, 0xef, 0x31,
-0x88, 0x2b, 0x63, 0x5f, 0xe2, 0xe2, 0x58, 0xf8,
-0x2b, 0x2d, 0x2f, 0x27, 0xee, 0xb3, 0x39, 0x3e,
-0x4a, 0x36, 0x31, 0x85, 0xd0, 0xd4, 0xd4, 0xdc,
-0xc4, 0x0c, 0xf7, 0xdd, 0x82, 0x04, 0x64, 0x60,
-0x9c, 0xe4, 0x03, 0x05, 0x06, 0x05, 0xe6, 0x5c,
-0xba, 0xcc, 0x8d, 0x4b, 0xca, 0xb9, 0x74, 0xad,
-0xea, 0x61, 0x3d, 0xaf, 0x5b, 0x40, 0xa7, 0xe5,
-0x03, 0x64, 0x70, 0xa2, 0x40, 0x49, 0x47, 0x57,
-0x88, 0xc3, 0x60, 0xe8, 0xe1, 0xe1, 0x69, 0x62,
-0x6a, 0x6e, 0x6a, 0x86, 0xa7, 0x1b, 0x13, 0x81,
-0x44, 0x26, 0x0a, 0x04, 0xb1, 0x50, 0xd0, 0x42,
-0x0f, 0x8f, 0xa2, 0xd2, 0xe2, 0x13, 0x29, 0x27,
-0x0f, 0xfa, 0x06, 0xf8, 0xfa, 0x07, 0x07, 0x84,
-0x84, 0x45, 0x44, 0xc7, 0xa5, 0x67, 0x9e, 0xbe,
-0x72, 0x35, 0xff, 0xd6, 0x9d, 0xfb, 0x8d, 0x8f,
-0x5a, 0xf9, 0xdd, 0x4c, 0x4f, 0xcf, 0xd3, 0xe7,
-0xfd, 0xc3, 0x50, 0xf8, 0xe5, 0xa8, 0x1e, 0xf7,
-0xf0, 0x51, 0x45, 0x36, 0xb6, 0x0c, 0x02, 0x84,
-0xf5, 0xf4, 0xf6, 0xc2, 0xdc, 0xa7, 0xf1, 0xd1,
-0xe3, 0xdb, 0x77, 0x2b, 0xaf, 0x5e, 0x2b, 0x00,
-0x1f, 0xb3, 0xb0, 0xa8, 0xd8, 0xcd, 0x6d, 0x3e,
-0xd5, 0x04, 0xd4, 0x02, 0x32, 0x91, 0xa9, 0x47,
-0x6b, 0x4a, 0x09, 0x74, 0x0e, 0x0a, 0x0e, 0x39,
-0x77, 0xe1, 0x12, 0xb8, 0x44, 0x17, 0x2f, 0x5f,
-0xab, 0xac, 0x06, 0xf8, 0x10, 0xe1, 0x0e, 0xc6,
-0x2f, 0xb0, 0x9a, 0x40, 0x83, 0x44, 0x19, 0x79,
-0x12, 0x4a, 0x59, 0xb9, 0x6a, 0x35, 0xda, 0xf0,
-0x35, 0x51, 0xbf, 0x4a, 0xa0, 0x89, 0xb3, 0x8b,
-0x6b, 0xc5, 0xad, 0x3b, 0x91, 0xdc, 0x04, 0x98,
-0xb9, 0x95, 0x55, 0xdc, 0x47, 0xff, 0xeb, 0xe9,
-0x33, 0xda, 0x64, 0x68, 0x55, 0xf2, 0x60, 0x8e,
-0x96, 0x45, 0xed, 0x4c, 0x92, 0xd2, 0xa3, 0xb2,
-0x24, 0x99, 0x72, 0x50, 0xdd, 0xb0, 0x45, 0x46,
-0x1c, 0x1d, 0x24, 0x34, 0xf2, 0xdc, 0xb2, 0xf2,
-0xf2, 0x0f, 0x3e, 0x98, 0x26, 0x6f, 0xfd, 0xdf,
-0xa5, 0xf6, 0xaf, 0x92, 0xcf, 0xc1, 0x43, 0xe0,
-0x5f, 0x47, 0x71, 0x13, 0x2f, 0x5e, 0xb9, 0x5e,
-0xf9, 0xa0, 0xa6, 0x5b, 0x20, 0xc4, 0x2f, 0x14,
-0x0f, 0xca, 0x4a, 0x7f, 0x31, 0x20, 0x87, 0x63,
-0x88, 0xf4, 0x3d, 0x7b, 0xb6, 0x7a, 0xcd, 0xda,
-0x5f, 0x95, 0x49, 0xcd, 0x3b, 0xdf, 0x7d, 0x41,
-0xd9, 0x8d, 0x8a, 0xa8, 0x98, 0x78, 0xc0, 0xdf,
-0x1b, 0x15, 0xf7, 0xda, 0x3a, 0x3a, 0x7a, 0xfb,
-0xfa, 0x68, 0x87, 0x94, 0x57, 0x53, 0x6a, 0x28,
-0x12, 0x81, 0xbe, 0x65, 0x61, 0x31, 0x41, 0x5e,
-0x41, 0x79, 0x1b, 0x99, 0x98, 0xd1, 0x8a, 0x43,
-0x30, 0xe9, 0x7a, 0x5e, 0x7e, 0x72, 0x4a, 0xda,
-0xf1, 0x94, 0xf4, 0x82, 0xc2, 0xd2, 0xfa, 0xc6,
-0x16, 0x49, 0x4f, 0x2f, 0xfd, 0xac, 0x30, 0xb9,
-0x5e, 0x06, 0x87, 0xeb, 0x3c, 0xa2, 0x0a, 0xc3,
-0x93, 0xb4, 0x68, 0x4c, 0xbe, 0x1c, 0x1c, 0xd1,
-0x28, 0xf2, 0x0e, 0x7c, 0xe5, 0xea, 0xd5, 0x0f,
-0xa7, 0xcf, 0x84, 0xae, 0x47, 0x4b, 0x97, 0xea,
-0x60, 0x26, 0xed, 0x84, 0x96, 0x56, 0x56, 0xb9,
-0x79, 0xf9, 0xdc, 0xd8, 0xc4, 0x94, 0xb4, 0xec,
-0xdc, 0xa2, 0xd2, 0x96, 0x27, 0xed, 0xa0, 0x09,
-0xfd, 0x74, 0xe3, 0x50, 0xb3, 0x82, 0xc8, 0x61,
-0x5a, 0xc9, 0x0a, 0x7d, 0xf1, 0x7a, 0xb9, 0xb4,
-0xe7, 0x48, 0x2f, 0xcc, 0x97, 0xf8, 0xd5, 0x51,
-0x68, 0x7e, 0x0c, 0x88, 0x92, 0x60, 0xb1, 0xde,
-0x3e, 0x40, 0x5e, 0x31, 0x4c, 0x60, 0x1a, 0x9a,
-0x9a, 0x61, 0xe2, 0x07, 0x5e, 0x43, 0x4d, 0x5d,
-0xc3, 0xde, 0x7d, 0xfb, 0x68, 0xb7, 0x84, 0x4b,
-0x03, 0x5c, 0xf5, 0x3f, 0xd9, 0x0d, 0x68, 0xbd,
-0x4c, 0x65, 0x95, 0x35, 0x36, 0x33, 0x31, 0xc6,
-0x85, 0x2b, 0xa6, 0x1f, 0x38, 0xaf, 0x77, 0x38,
-0xd4, 0x0c, 0xf0, 0xe1, 0x18, 0x2c, 0x70, 0x0b,
-0x15, 0xb2, 0xf6, 0x3e, 0x54, 0x36, 0xb1, 0xc6,
-0xdd, 0x7e, 0x56, 0x84, 0xb2, 0x43, 0x18, 0x76,
-0x30, 0x80, 0x88, 0x70, 0xf6, 0x4e, 0x29, 0xfe,
-0x6a, 0x4c, 0x74, 0x9b, 0xb8, 0x24, 0xd0, 0x64,
-0x81, 0xcf, 0x58, 0xe2, 0x0e, 0x8f, 0xd3, 0x34,
-0x9d, 0xbc, 0x36, 0xc2, 0x72, 0x6f, 0x8d, 0x23,
-0x79, 0x71, 0xd5, 0x9e, 0xc3, 0x38, 0x04, 0x33,
-0x6a, 0x13, 0xec, 0xff, 0xfb, 0xbf, 0xde, 0x33,
-0x64, 0x7f, 0xeb, 0x18, 0xc8, 0x87, 0x4c, 0xc7,
-0x10, 0xc6, 0x31, 0x18, 0x97, 0x18, 0xd9, 0x23,
-0x90, 0x0d, 0x11, 0xe4, 0x3b, 0x70, 0x90, 0x1c,
-0xe9, 0xa1, 0x10, 0x24, 0x27, 0x0e, 0x80, 0x9a,
-0xc0, 0x09, 0x4f, 0x41, 0x51, 0x4e, 0xa1, 0x8c,
-0xa3, 0x8c, 0x99, 0xcd, 0xa1, 0xfc, 0x02, 0xa7,
-0x60, 0x40, 0x3a, 0xc6, 0x39, 0x18, 0x40, 0x13,
-0x43, 0x36, 0x9e, 0x82, 0x04, 0x9c, 0x94, 0x19,
-0xf2, 0x9d, 0x48, 0xc4, 0x29, 0x78, 0x28, 0xe9,
-0x84, 0x0c, 0x78, 0x2e, 0xa0, 0x2d, 0x9c, 0xe5,
-0x44, 0xf2, 0x51, 0x32, 0x82, 0x2c, 0x8a, 0x72,
-0xe4, 0x50, 0x0d, 0x45, 0xf4, 0x14, 0x59, 0x12,
-0x5c, 0x63, 0xcc, 0x94, 0x9d, 0x2b, 0x70, 0x0e,
-0x15, 0x92, 0xa4, 0x48, 0x06, 0xb8, 0x42, 0x72,
-0x0a, 0x26, 0xed, 0x11, 0x70, 0x45, 0x58, 0xdf,
-0x10, 0x91, 0x4b, 0xa8, 0xd0, 0x31, 0x44, 0xe0,
-0x18, 0x8a, 0x49, 0xe7, 0x50, 0xd1, 0xbc, 0x23,
-0x8c, 0x7b, 0x98, 0x08, 0xc8, 0x23, 0x42, 0xb8,
-0x94, 0xdb, 0x0b, 0x3e, 0xef, 0xaa, 0x38, 0xf1,
-0xba, 0xc4, 0x9e, 0xcf, 0x4e, 0xf6, 0x6d, 0x4c,
-0xe9, 0xdb, 0x92, 0xd9, 0xb7, 0xe3, 0x74, 0xef,
-0x37, 0xd9, 0x3d, 0xbb, 0x7f, 0x16, 0xef, 0x3e,
-0xc3, 0xec, 0x3e, 0xd3, 0xed, 0x9d, 0xd9, 0xee,
-0x7f, 0xa1, 0xad, 0xe7, 0xf9, 0xdf, 0xfa, 0xb5,
-0xdf, 0xd7, 0xa9, 0x7f, 0xa0, 0xff, 0x7b, 0xef,
-0x5d, 0xcb, 0x56, 0xac, 0xfa, 0x6a, 0xd3, 0xd6,
-0xbd, 0xfb, 0x0f, 0x85, 0x45, 0x72, 0x33, 0xb3,
-0xce, 0x5d, 0xcb, 0x2b, 0xbc, 0x75, 0xf7, 0x41,
-0x5d, 0x43, 0x53, 0x6b, 0x5b, 0x17, 0xa0, 0x89,
-0x40, 0x28, 0xf9, 0x5f, 0xf6, 0xbe, 0x03, 0xba,
-0xad, 0xe3, 0x4a, 0xf4, 0x9c, 0xbf, 0xb6, 0x9c,
-0xea, 0x6c, 0x36, 0xbb, 0xc9, 0xa6, 0x6f, 0x49,
-0xbc, 0xb1, 0x1d, 0xa7, 0x6c, 0x62, 0x27, 0x9b,
-0x38, 0x2e, 0x92, 0x2d, 0xd9, 0x6a, 0xee, 0x56,
-0xb3, 0x64, 0x5b, 0xb6, 0x7a, 0xb1, 0x2d, 0xc9,
-0xea, 0x14, 0x29, 0x51, 0xec, 0x9d, 0x94, 0x28,
-0xf6, 0xde, 0x2b, 0x40, 0x90, 0x00, 0x3b, 0x89,
-0xca, 0xde, 0x7b, 0x27, 0xd8, 0x2b, 0x0a, 0x09,
-0x56, 0xe0, 0x9f, 0xf3, 0xef, 0x9d, 0x79, 0xef,
-0xe1, 0xa1, 0x50, 0x96, 0x5c, 0xe2, 0x55, 0x7e,
-0x74, 0xae, 0xc7, 0x77, 0x66, 0xee, 0xdc, 0x3e,
-0xb8, 0x6f, 0xc0, 0x87, 0xf7, 0xe0, 0x0c, 0x05,
-0x35, 0x71, 0x66, 0x76, 0x16, 0x60, 0x72, 0x7a,
-0x7a, 0x68, 0x04, 0xff, 0x16, 0x0c, 0xc7, 0x49,
-0xa8, 0x38, 0x32, 0x65, 0x75, 0x41, 0x91, 0x54,
-0x90, 0x93, 0x9b, 0x98, 0x9c, 0x1a, 0x1a, 0x16,
-0xeb, 0x17, 0x14, 0xec, 0xe6, 0xe1, 0x75, 0xf9,
-0x8a, 0xf3, 0xe9, 0xb3, 0x17, 0x8e, 0x9d, 0xf8,
-0x68, 0xff, 0xfb, 0x87, 0xdf, 0xda, 0xf7, 0xee,
-0x1b, 0x3b, 0x76, 0xbf, 0xf4, 0xf2, 0xab, 0x9b,
-0xb7, 0xbe, 0xfc, 0xdc, 0xc6, 0xcd, 0xeb, 0x9f,
-0xdb, 0x44, 0xef, 0xce, 0xfa, 0xe3, 0xff, 0xfc,
-0xe9, 0x89, 0x27, 0xfe, 0x07, 0x0a, 0xf1, 0xfa,
-0xf5, 0x1b, 0xa0, 0x88, 0x27, 0x24, 0xa7, 0x42,
-0xfd, 0x2d, 0x91, 0x2a, 0xdb, 0x3a, 0x7b, 0xc7,
-0x27, 0xa1, 0xe8, 0x6b, 0xb5, 0xfa, 0x39, 0x1d,
-0xc0, 0xdc, 0x3c, 0xc0, 0xdc, 0x1c, 0x3e, 0x18,
-0x0a, 0x76, 0x34, 0x1c, 0x8d, 0x1b, 0x9a, 0x9a,
-0xe0, 0xb3, 0x97, 0xde, 0x53, 0x4d, 0xe1, 0x67,
-0x3f, 0xfb, 0x39, 0xbf, 0xfb, 0x8b, 0x5f, 0xfc,
-0x82, 0x45, 0x1e, 0x76, 0xba, 0x76, 0xad, 0xa0,
-0xb8, 0x24, 0x2c, 0x22, 0x2e, 0x27, 0x37, 0xbf,
-0xbe, 0xb1, 0x0d, 0x2e, 0x2a, 0xc0, 0x16, 0x60,
-0x05, 0xff, 0xe9, 0xf5, 0xf3, 0x3a, 0x3d, 0x32,
-0x07, 0xd3, 0xe0, 0xe4, 0x0b, 0x83, 0xf3, 0x86,
-0x05, 0xf8, 0x2c, 0xe5, 0xb3, 0xb2, 0x05, 0xe0,
-0xb9, 0x77, 0xdf, 0xdb, 0x32, 0xb9, 0x3c, 0x29,
-0x39, 0xc5, 0xc5, 0xd5, 0xd3, 0xd5, 0xc3, 0xd7,
-0xdb, 0xff, 0x46, 0x70, 0x48, 0x44, 0x5c, 0x42,
-0x7a, 0xae, 0xb8, 0x58, 0xa6, 0xac, 0x6a, 0x6d,
-0xef, 0x1e, 0x1c, 0x1a, 0x02, 0x47, 0x69, 0xb5,
-0x3a, 0xf8, 0xa0, 0xa0, 0xbf, 0xc7, 0xfc, 0xc4,
-0xfa, 0xbb, 0x0a, 0xd7, 0x18, 0x2b, 0x46, 0xa8,
-0xda, 0x50, 0x79, 0x61, 0xed, 0xe0, 0xd0, 0x30,
-0xf0, 0x51, 0x56, 0x54, 0xe7, 0x8a, 0x8b, 0x4a,
-0xcb, 0x15, 0x95, 0xd5, 0x55, 0x7b, 0xf6, 0xee,
-0x03, 0xd1, 0x3f, 0xff, 0xf9, 0x7f, 0x3d, 0xf4,
-0x10, 0xb5, 0x0e, 0x90, 0x87, 0xe1, 0x3a, 0x84,
-0xed, 0x9a, 0xc1, 0xc5, 0xcd, 0x03, 0x4e, 0xbe,
-0x11, 0x91, 0x71, 0xc2, 0x5c, 0x09, 0x7c, 0x34,
-0x8d, 0x8c, 0x8e, 0xc1, 0xa9, 0x1c, 0x8e, 0xd2,
-0x3a, 0xb0, 0x9a, 0xf8, 0x90, 0x02, 0x78, 0x00,
-0x3c, 0x3c, 0x39, 0x39, 0xb3, 0xef, 0x9d, 0x77,
-0x6f, 0x6f, 0xf2, 0x6d, 0x60, 0xfd, 0x86, 0x0d,
-0x95, 0xd5, 0xb5, 0x21, 0x11, 0x31, 0x49, 0xc9,
-0x99, 0x60, 0x7b, 0x57, 0xef, 0xc0, 0xd4, 0xb4,
-0x86, 0x08, 0x9a, 0xc7, 0xf0, 0x11, 0x71, 0x24,
-0x88, 0x73, 0x8c, 0x9f, 0x49, 0x34, 0xe9, 0x2c,
-0x13, 0x05, 0x42, 0x40, 0x70, 0x3d, 0x4b, 0x8c,
-0x94, 0xcc, 0x5a, 0x56, 0x55, 0xd2, 0xc5, 0x29,
-0x8d, 0x16, 0xa2, 0x84, 0x39, 0xf0, 0xfb, 0xc7,
-0x9f, 0x00, 0x05, 0xc0, 0x09, 0x9f, 0x5a, 0x79,
-0xbb, 0xf0, 0x5f, 0xff, 0xf5, 0x0b, 0x27, 0xa7,
-0xab, 0x25, 0x25, 0x65, 0x21, 0xa1, 0x31, 0xa2,
-0xbc, 0x7c, 0xb8, 0xc8, 0x1c, 0x1a, 0x19, 0xd7,
-0xd0, 0x9c, 0x61, 0x95, 0x67, 0x70, 0xa2, 0x36,
-0x24, 0xcd, 0x81, 0x83, 0x87, 0xee, 0x90, 0xf9,
-0xa6, 0x4d, 0x2f, 0x54, 0x56, 0x55, 0x87, 0x86,
-0x47, 0xa5, 0xa6, 0x0b, 0x14, 0xaa, 0xea, 0x6e,
-0x70, 0xd7, 0xcc, 0xac, 0x56, 0xcf, 0x59, 0x8a,
-0x11, 0xd1, 0xea, 0x19, 0x04, 0x8a, 0x7e, 0x42,
-0x62, 0xd2, 0xa3, 0xbf, 0xfc, 0xe5, 0x6d, 0x18,
-0x3e, 0xfc, 0xf0, 0x23, 0xf9, 0x45, 0xc5, 0x49,
-0x29, 0xe9, 0xb1, 0xf1, 0x29, 0x25, 0x65, 0xf2,
-0xd6, 0xf6, 0xde, 0xc9, 0xa9, 0xa9, 0x59, 0x8c,
-0xf5, 0x3c, 0x4f, 0x5b, 0x46, 0x55, 0x9e, 0xa0,
-0x79, 0x9a, 0x0c, 0xe6, 0xa0, 0x70, 0x31, 0x62,
-0xac, 0x9b, 0x83, 0x28, 0x32, 0x09, 0x33, 0x3f,
-0x3f, 0x0b, 0x7b, 0x66, 0x6e, 0x5e, 0x2e, 0x97,
-0xff, 0xe9, 0x4f, 0x7f, 0xb2, 0xdd, 0x6e, 0x14,
-0x9e, 0xf8, 0xc3, 0x1f, 0x8b, 0x4b, 0x4a, 0x23,
-0x63, 0x12, 0x12, 0x93, 0x33, 0x8a, 0x4a, 0x65,
-0xf0, 0xe9, 0x31, 0x3e, 0x39, 0xc5, 0x8a, 0xe6,
-0x84, 0xb2, 0xdb, 0xcd, 0x1c, 0x7a, 0x73, 0x4a,
-0xe8, 0x99, 0xfc, 0x9c, 0xa3, 0x1b, 0x9f, 0x9b,
-0xd5, 0x90, 0x1d, 0x0b, 0x18, 0xfc, 0x1f, 0x3e,
-0x17, 0x20, 0x97, 0x27, 0x26, 0xa7, 0xd4, 0xc3,
-0x63, 0x9d, 0xdd, 0xbd, 0x8d, 0xcd, 0x6d, 0xa5,
-0xe5, 0xca, 0x5c, 0x49, 0x41, 0x5d, 0x43, 0x53,
-0x4a, 0x5a, 0xfa, 0xe3, 0x4c, 0x4a, 0x60, 0x10,
-0x1f, 0x7e, 0xf8, 0x73, 0x4e, 0x0c, 0xf8, 0x87,
-0xdb, 0xff, 0x91, 0x5f, 0xff, 0xf1, 0x68, 0xc6,
-0x46, 0xbf, 0xd9, 0x0d, 0x50, 0x26, 0x7c, 0x66,
-0x9f, 0xf7, 0xd1, 0xfe, 0xf9, 0x72, 0xf3, 0xb7,
-0x7e, 0xfc, 0xbb, 0xfb, 0xef, 0xff, 0xda, 0x63,
-0x7b, 0x22, 0x9e, 0xf3, 0x9d, 0x85, 0x3a, 0xf8,
-0x9c, 0xb7, 0xf6, 0x8f, 0x1f, 0x33, 0xf7, 0x5f,
-0xad, 0xbb, 0xef, 0x81, 0x07, 0x1e, 0xf8, 0xc6,
-0xba, 0x75, 0x5f, 0xbb, 0x1f, 0xd0, 0x7f, 0x58,
-0x77, 0xff, 0x3f, 0xac, 0x7b, 0xe0, 0xab, 0xdf,
-0xfa, 0xa7, 0x7f, 0xff, 0xfd, 0x6f, 0x0f, 0x64,
-0xac, 0xf7, 0xd6, 0x3e, 0xe7, 0x03, 0xa5, 0x4d,
-0xf3, 0xfd, 0xdf, 0xbc, 0x06, 0x53, 0xff, 0xf6,
-0xd4, 0xe1, 0x0d, 0x1e, 0x13, 0xb0, 0x16, 0x78,
-0xc2, 0xf8, 0x46, 0xdf, 0xd9, 0xe7, 0x7d, 0x75,
-0xeb, 0x41, 0x84, 0xbf, 0x6e, 0x83, 0x8f, 0xe6,
-0x39, 0x5f, 0x1d, 0x54, 0xa8, 0xe7, 0x7d, 0xb5,
-0x2c, 0xe8, 0x80, 0xec, 0x79, 0x9f, 0xd9, 0xe7,
-0x7c, 0x74, 0xd8, 0x7a, 0x43, 0xab, 0xd9, 0xe0,
-0xcd, 0xe0, 0x38, 0x48, 0xc8, 0x36, 0x78, 0xcf,
-0x6c, 0xf4, 0xd3, 0x3f, 0xe3, 0x0d, 0x53, 0x9a,
-0x8d, 0xc0, 0x0d, 0x75, 0x83, 0x25, 0xb8, 0x70,
-0x83, 0x17, 0xb3, 0x9c, 0xea, 0x00, 0xcb, 0x9f,
-0xf3, 0xd6, 0xd0, 0xd9, 0xe7, 0x90, 0x09, 0xb4,
-0x33, 0xcf, 0xa3, 0x81, 0xf8, 0x1b, 0x5b, 0x42,
-0x8c, 0x2d, 0x21, 0x00, 0x1b, 0xb5, 0xd4, 0xcc,
-0xf5, 0xde, 0xb3, 0xcf, 0xfb, 0x41, 0xd5, 0xd6,
-0x42, 0xbb, 0x81, 0x5b, 0x0b, 0x3c, 0xfd, 0xf0,
-0xc7, 0xb9, 0x4f, 0x33, 0xb7, 0x4b, 0xa1, 0x4f,
-0x80, 0x72, 0x03, 0x0c, 0x7a, 0x69, 0x40, 0x87,
-0xe7, 0xfd, 0x50, 0x1f, 0xb2, 0x56, 0x0b, 0x3e,
-0x44, 0xdd, 0xfc, 0x34, 0x1b, 0xfd, 0xb5, 0xcf,
-0xf9, 0x81, 0xb1, 0xf4, 0x2f, 0xbc, 0x50, 0x76,
-0x75, 0xdb, 0x82, 0xe1, 0xcc, 0x3b, 0xf7, 0x7a,
-0x98, 0x66, 0x47, 0x24, 0x54, 0x5e, 0xfd, 0xfe,
-0xf8, 0xf9, 0x83, 0x49, 0x86, 0x13, 0xe9, 0x86,
-0x0f, 0x33, 0x0d, 0xe7, 0x84, 0x86, 0xcb, 0x22,
-0x83, 0x63, 0x9e, 0xc1, 0x39, 0x4f, 0x77, 0x55,
-0x34, 0xe3, 0x24, 0x9c, 0xb8, 0x2a, 0x18, 0x55,
-0xf4, 0xe8, 0xbf, 0xf4, 0x7a, 0xfa, 0x29, 0x00,
-0x0e, 0x56, 0x3b, 0x77, 0xbd, 0xb5, 0xef, 0xed,
-0x77, 0x3f, 0x3e, 0x7b, 0xd1, 0xc5, 0x33, 0x20,
-0x3a, 0x2e, 0x19, 0x3e, 0xb7, 0xe5, 0xaa, 0x9a,
-0xa6, 0xd6, 0xf6, 0x7e, 0x28, 0x03, 0xa3, 0xe3,
-0x53, 0xd3, 0xd3, 0xb0, 0x05, 0x70, 0x5f, 0xe8,
-0xf0, 0x14, 0x0c, 0xf9, 0x3f, 0x3e, 0x09, 0x25,
-0x78, 0xa2, 0x6f, 0x60, 0xa8, 0xb5, 0xbd, 0xa3,
-0xa1, 0xb1, 0x59, 0x59, 0x51, 0x07, 0x67, 0x34,
-0x51, 0x5e, 0x51, 0x52, 0x4a, 0x56, 0x64, 0x4c,
-0xfc, 0xcd, 0xe0, 0x08, 0x4f, 0x2f, 0x7f, 0x67,
-0x17, 0x8f, 0x73, 0x17, 0x1d, 0x3e, 0x3a, 0x7d,
-0xee, 0xc8, 0xb1, 0x0f, 0xdf, 0x79, 0xe7, 0xc0,
-0xae, 0x3d, 0xef, 0xbe, 0xf6, 0xfa, 0xae, 0xed,
-0x2f, 0xbd, 0x01, 0x55, 0x78, 0xd3, 0x0b, 0x9b,
-0xc9, 0x3d, 0xd2, 0x1b, 0x9e, 0x7c, 0xea, 0x99,
-0x3f, 0x3f, 0xf9, 0x97, 0xe7, 0x37, 0x6e, 0x12,
-0xe5, 0x8a, 0x93, 0xd3, 0x32, 0xe3, 0x13, 0x53,
-0x24, 0x85, 0x65, 0xd5, 0xb5, 0x4d, 0xed, 0x9d,
-0x7d, 0xbd, 0x7d, 0x83, 0x3d, 0x83, 0xe3, 0xfd,
-0x83, 0xea, 0x81, 0xc1, 0x61, 0x28, 0x9a, 0xbd,
-0xfd, 0x03, 0xfd, 0x03, 0x83, 0x03, 0xa0, 0xcf,
-0xc8, 0x68, 0x67, 0x77, 0x37, 0x7c, 0xf6, 0x3e,
-0xf6, 0xd8, 0x63, 0xbf, 0x64, 0xff, 0x3d, 0x46,
-0xfe, 0xfd, 0xea, 0x57, 0xbf, 0xa6, 0xdd, 0x47,
-0x1e, 0x79, 0x84, 0x1b, 0xbf, 0x70, 0xf1, 0x12,
-0x9c, 0xf1, 0xa1, 0xfe, 0xa6, 0x67, 0x66, 0xcb,
-0xe4, 0xd5, 0x4d, 0x2d, 0x70, 0x99, 0x0c, 0xac,
-0xd4, 0x5d, 0xfd, 0xf8, 0x74, 0xcd, 0xbe, 0xfe,
-0x21, 0xb8, 0x90, 0xe8, 0x1e, 0x18, 0x05, 0xce,
-0x7d, 0xfd, 0x6a, 0x28, 0xf9, 0xef, 0x1f, 0x7c,
-0xff, 0x97, 0xf6, 0xfe, 0xd1, 0xbf, 0x5c, 0xd3,
-0x7f, 0xbf, 0xfa, 0xd5, 0xaf, 0x8e, 0x9f, 0xfc,
-0xa0, 0xae, 0xbe, 0x2e, 0x36, 0x29, 0xd5, 0xc3,
-0xdb, 0xcf, 0xcd, 0xfb, 0x86, 0x6f, 0xc0, 0xcd,
-0xe0, 0x5b, 0x11, 0xd1, 0x71, 0x89, 0x59, 0x82,
-0x3c, 0xb8, 0x14, 0xaf, 0xae, 0x6b, 0xec, 0xe8,
-0xea, 0x05, 0x5d, 0x27, 0xa7, 0xe0, 0xa3, 0x6b,
-0x6e, 0x61, 0x11, 0x7f, 0xd0, 0x0c, 0x87, 0xeb,
-0x55, 0xe6, 0x9a, 0x9f, 0x3d, 0xea, 0x42, 0xcd,
-0x35, 0xae, 0xc2, 0x69, 0x65, 0x69, 0x79, 0xc5,
-0xb0, 0xb8, 0x00, 0x9f, 0x36, 0x70, 0xb1, 0x03,
-0xd7, 0x36, 0xa0, 0x61, 0x55, 0x4d, 0x03, 0x7c,
-0x9c, 0x66, 0x0b, 0xf3, 0xca, 0xa4, 0xb2, 0xd6,
-0xb6, 0xf6, 0xf7, 0x0e, 0x1c, 0xfc, 0xed, 0x6f,
-0x7f, 0xcb, 0x37, 0x19, 0xfe, 0x3d, 0xfa, 0xa8,
-0x5d, 0x4d, 0x7f, 0x79, 0xf5, 0x9a, 0x73, 0xa9,
-0xb4, 0x3c, 0x34, 0x2c, 0x1a, 0x94, 0x29, 0x93,
-0x57, 0xb5, 0xb4, 0xb5, 0xf5, 0xf4, 0x81, 0xf3,
-0x86, 0x20, 0x9a, 0x70, 0x3c, 0x87, 0xa8, 0xf5,
-0x0f, 0x8e, 0x02, 0xf4, 0x92, 0x07, 0x7d, 0x43,
-0x75, 0x3e, 0x7a, 0xec, 0xb8, 0x7d, 0x46, 0x77,
-0xf0, 0x6f, 0xc3, 0x86, 0x0d, 0x70, 0x36, 0x8f,
-0x8c, 0x8a, 0x87, 0x4f, 0xdd, 0xfc, 0xa2, 0x92,
-0x5a, 0x34, 0xbc, 0x8f, 0x7a, 0xb5, 0x6f, 0x40,
-0x4d, 0x00, 0x90, 0x61, 0x10, 0x47, 0x9e, 0x2b,
-0x3e, 0x4c, 0xba, 0x2c, 0xf4, 0x33, 0x23, 0xd8,
-0x72, 0xf8, 0x00, 0xd3, 0x02, 0x3d, 0xe8, 0xdc,
-0x4b, 0xdb, 0x7e, 0x80, 0xe1, 0x5e, 0x60, 0xd2,
-0x8f, 0xac, 0xc0, 0xb1, 0x2d, 0x6d, 0xed, 0x7f,
-0x79, 0xea, 0xe9, 0x4f, 0xad, 0xf6, 0x6d, 0xfe,
-0x81, 0x93, 0xcf, 0x5d, 0x38, 0x5f, 0x2a, 0x95,
-0x87, 0x86, 0xc7, 0xa6, 0x65, 0x64, 0x4a, 0xe5,
-0xaa, 0xa6, 0xd6, 0x2e, 0x88, 0x08, 0x6b, 0x0b,
-0x75, 0x20, 0x55, 0x69, 0x70, 0x50, 0x3d, 0x3c,
-0x3d, 0xa3, 0xf9, 0xe8, 0xf4, 0xe9, 0x3b, 0x64,
-0xfe, 0xfc, 0xf3, 0x1b, 0x2b, 0xab, 0xab, 0xa3,
-0xa2, 0x13, 0x13, 0x92, 0xd3, 0x0a, 0x4a, 0xca,
-0x6b, 0xeb, 0x5b, 0x3a, 0xbb, 0xfb, 0xbb, 0x7b,
-0xc1, 0x5e, 0x64, 0x08, 0x56, 0x53, 0x04, 0xce,
-0x74, 0xdd, 0x83, 0xe3, 0xa3, 0xe3, 0xe3, 0x99,
-0xd9, 0x82, 0xff, 0xfe, 0xef, 0xdf, 0xd9, 0x55,
-0x92, 0x66, 0xfb, 0x63, 0x8f, 0xfd, 0x3a, 0x27,
-0x57, 0x9c, 0x92, 0x9a, 0x19, 0x1d, 0x93, 0x84,
-0xaf, 0x50, 0xa9, 0xaa, 0x6f, 0x6d, 0xef, 0xea,
-0xee, 0x47, 0x55, 0x49, 0xac, 0xd1, 0xed, 0x9c,
-0x6f, 0xa9, 0xcf, 0x2d, 0x42, 0xc0, 0x73, 0xb8,
-0xe5, 0x08, 0x05, 0xec, 0xe2, 0xd6, 0x20, 0x39,
-0x53, 0x51, 0x55, 0xf5, 0xec, 0xb3, 0xcf, 0x52,
-0xe9, 0xb6, 0x2a, 0xfd, 0xe9, 0xcf, 0x7f, 0x2e,
-0x2c, 0x2e, 0x8b, 0x8d, 0x4f, 0x8e, 0x8d, 0x4b,
-0xcd, 0xcb, 0x2f, 0xaa, 0xa9, 0x6b, 0x80, 0x5d,
-0x4c, 0xb8, 0x0d, 0x0e, 0xa8, 0x47, 0x7b, 0xd8,
-0x38, 0xb2, 0xe1, 0x56, 0x43, 0xee, 0xd1, 0xd9,
-0xde, 0x7e, 0x6b, 0xb9, 0x64, 0x84, 0xa7, 0x55,
-0xff, 0x10, 0xc9, 0x55, 0x35, 0xb8, 0xa5, 0xb7,
-0x5f, 0xdd, 0xd6, 0xd9, 0x0d, 0xbb, 0xb8, 0xba,
-0xb6, 0x51, 0x2a, 0xab, 0xcc, 0x93, 0x94, 0xc0,
-0xbe, 0x2e, 0x2a, 0x93, 0x56, 0xd5, 0xd4, 0x6c,
-0x7f, 0xf9, 0x15, 0x4e, 0x99, 0x47, 0xd7, 0xda,
-0x1b, 0x9f, 0xe1, 0x1f, 0x7c, 0xaa, 0x80, 0xd7,
-0xff, 0xb8, 0x71, 0xf7, 0x26, 0xf7, 0xfe, 0xe7,
-0x7c, 0xf4, 0x2f, 0x06, 0xce, 0x6c, 0xf2, 0xd3,
-0xbe, 0x10, 0xa0, 0x7d, 0xd2, 0xa1, 0xe5, 0x5b,
-0x3f, 0x7d, 0x62, 0xdd, 0xfd, 0x5f, 0x79, 0x6c,
-0xf7, 0xcd, 0x17, 0x03, 0x34, 0x70, 0x70, 0x83,
-0x41, 0xae, 0xfe, 0x7e, 0xfb, 0x27, 0xbf, 0xf9,
-0xf9, 0xd3, 0xef, 0xff, 0xe4, 0x2f, 0xef, 0xff,
-0xf8, 0xc9, 0xf7, 0x7f, 0xf4, 0xe4, 0xc1, 0x7f,
-0x7e, 0xe8, 0xc9, 0x75, 0x0f, 0xe0, 0x2d, 0x58,
-0xdf, 0xf9, 0xaf, 0xf5, 0xcf, 0x79, 0x8e, 0xbc,
-0xe0, 0xaf, 0x7d, 0x31, 0x40, 0xfb, 0xbd, 0x47,
-0x5f, 0x80, 0xba, 0xfc, 0x1f, 0xcf, 0x1c, 0xdb,
-0xe4, 0x3b, 0xf1, 0x62, 0xe0, 0x2c, 0x14, 0xa3,
-0x17, 0x90, 0x0f, 0x54, 0xa5, 0xd9, 0x17, 0xfc,
-0x67, 0x01, 0x47, 0xf0, 0xd7, 0xc0, 0x14, 0x74,
-0x61, 0x1c, 0x00, 0xbb, 0x40, 0xe3, 0xa7, 0x23,
-0xf4, 0x30, 0x0e, 0x38, 0x8e, 0x43, 0x77, 0x13,
-0xe9, 0xc2, 0x12, 0xe4, 0xe3, 0x3f, 0x03, 0x83,
-0x9b, 0x03, 0xa1, 0xf8, 0xce, 0xbc, 0x18, 0xa0,
-0xc7, 0xae, 0x1f, 0xd1, 0x10, 0xc7, 0xb5, 0xb0,
-0x10, 0x88, 0x37, 0x11, 0x1c, 0x46, 0x36, 0xfa,
-0xe2, 0x08, 0x28, 0x8f, 0x83, 0x84, 0x8c, 0xc8,
-0x02, 0x73, 0xa0, 0xab, 0xdf, 0xe4, 0x87, 0xab,
-0x88, 0xdc, 0x59, 0x34, 0x1c, 0xc7, 0x75, 0xa8,
-0xa4, 0xaf, 0x6e, 0xa3, 0xaf, 0xfe, 0xc5, 0x80,
-0x99, 0x17, 0x03, 0x75, 0x30, 0x4e, 0x96, 0x00,
-0x9f, 0x19, 0x1c, 0x87, 0x59, 0x50, 0x38, 0x40,
-0xf7, 0x2c, 0xfe, 0x5c, 0x08, 0x2b, 0x2c, 0x0c,
-0x6e, 0xf2, 0xd7, 0x3f, 0xef, 0x0f, 0x45, 0x19,
-0x34, 0x47, 0xf5, 0x36, 0x07, 0x69, 0x36, 0x05,
-0x40, 0xab, 0x63, 0x6b, 0x2e, 0xc0, 0x0c, 0x9c,
-0x76, 0x01, 0x76, 0x46, 0x68, 0xdf, 0x8c, 0x30,
-0xbc, 0x1d, 0x83, 0x95, 0x17, 0xce, 0xbc, 0x87,
-0x92, 0x0d, 0x67, 0xb2, 0xd9, 0xca, 0x2b, 0x36,
-0x38, 0xe7, 0x1b, 0xdc, 0x0a, 0x0d, 0x57, 0xf3,
-0xb5, 0xee, 0xe2, 0x69, 0x27, 0xe1, 0x78, 0x94,
-0x7c, 0x4a, 0xbb, 0xf0, 0xe5, 0x17, 0xd3, 0x4f,
-0x01, 0x70, 0x99, 0xed, 0xed, 0xeb, 0xff, 0xda,
-0x1b, 0x3b, 0x8e, 0x1e, 0x3b, 0x71, 0xc5, 0xf1,
-0x9a, 0x7f, 0x70, 0x78, 0x4a, 0x5a, 0x76, 0x61,
-0x49, 0x59, 0x75, 0x0d, 0xd4, 0x41, 0xd8, 0x37,
-0xe3, 0x50, 0x6d, 0xe9, 0x5f, 0x81, 0xe1, 0x68,
-0x06, 0x75, 0x18, 0xea, 0x2f, 0xb9, 0x04, 0xd5,
-0x40, 0x69, 0x1e, 0x1c, 0x1a, 0x03, 0x12, 0xd8,
-0x0e, 0x35, 0xb5, 0x0d, 0x52, 0x99, 0xaa, 0xa0,
-0xa8, 0x34, 0x4b, 0x98, 0x97, 0x90, 0x84, 0x0f,
-0xe8, 0x08, 0xba, 0x19, 0xea, 0xe5, 0xe3, 0x7f,
-0xcd, 0xd9, 0xfd, 0xfc, 0x05, 0x87, 0xd3, 0x67,
-0xce, 0x9f, 0xf8, 0xe0, 0xd4, 0x81, 0x83, 0x47,
-0xdf, 0xdd, 0x7f, 0x70, 0xc7, 0xce, 0xbd, 0xaf,
-0xbf, 0xb9, 0xeb, 0xe5, 0x57, 0xdf, 0xd8, 0xba,
-0xed, 0xa5, 0x17, 0x36, 0xbf, 0xf4, 0xfc, 0xc6,
-0x2d, 0x5b, 0xb6, 0xbe, 0x24, 0x96, 0xe4, 0xe3,
-0x0b, 0x49, 0xe3, 0x92, 0xd3, 0x33, 0x05, 0xe2,
-0x02, 0x10, 0xae, 0x90, 0xc9, 0x2b, 0xa5, 0xf2,
-0x0a, 0x99, 0xa2, 0xaa, 0x4c, 0x56, 0x51, 0xae,
-0x50, 0xc9, 0x15, 0xd5, 0xe5, 0x8a, 0x8a, 0x52,
-0xb9, 0xaa, 0xa2, 0xba, 0xae, 0xbd, 0xab, 0xe7,
-0xe9, 0x67, 0x36, 0x3c, 0xfe, 0xc4, 0x1f, 0x10,
-0x1e, 0xc7, 0xf6, 0xf7, 0xbf, 0x7f, 0x1c, 0xdb,
-0xc7, 0x9f, 0xe0, 0x0f, 0xfe, 0x0e, 0x07, 0x9f,
-0x38, 0x73, 0xfe, 0x2c, 0x1c, 0x34, 0xc2, 0x22,
-0x62, 0x13, 0x92, 0xd2, 0x85, 0x22, 0x89, 0xa4,
-0xa8, 0xbc, 0x54, 0xaa, 0x2a, 0x53, 0xa8, 0xca,
-0xe4, 0x08, 0xe5, 0x72, 0x95, 0x54, 0x5e, 0x55,
-0x8e, 0x48, 0x25, 0x9c, 0x32, 0xfb, 0xfa, 0x07,
-0xcf, 0x9c, 0x3b, 0xcf, 0x67, 0x85, 0x08, 0xc1,
-0xa9, 0x08, 0xca, 0x19, 0xda, 0x27, 0x9e, 0xf8,
-0x23, 0x5c, 0xb1, 0x54, 0xd6, 0xd4, 0xe6, 0x17,
-0x95, 0x06, 0xde, 0x08, 0xf1, 0xf2, 0x0f, 0xf6,
-0x0f, 0xba, 0x75, 0x2b, 0x24, 0x12, 0x2e, 0x3f,
-0x92, 0x52, 0x32, 0x85, 0x39, 0x92, 0xc2, 0xa2,
-0xf2, 0xaa, 0x9a, 0x46, 0xb8, 0x86, 0xe9, 0xe9,
-0x1b, 0x04, 0x2f, 0x8d, 0x4d, 0x80, 0x13, 0xb5,
-0x33, 0xb3, 0x1a, 0x3c, 0xd9, 0x11, 0xa0, 0x97,
-0xf7, 0xe0, 0x4f, 0xa8, 0xd1, 0x30, 0x3b, 0x34,
-0x32, 0xd6, 0xd5, 0x33, 0xd8, 0xdc, 0xda, 0x0d,
-0x06, 0x96, 0x96, 0xcb, 0x05, 0x39, 0xe2, 0xb4,
-0x0c, 0x81, 0x52, 0x55, 0xad, 0xac, 0xa8, 0x3c,
-0x70, 0xf8, 0x88, 0x59, 0x19, 0xd4, 0xe4, 0x0f,
-0x8c, 0x99, 0x7c, 0xc3, 0x59, 0x25, 0x01, 0x1c,
-0x9d, 0xae, 0x96, 0x4b, 0x55, 0xb7, 0xc2, 0xa0,
-0x28, 0xa6, 0x65, 0x0b, 0xc5, 0x92, 0x42, 0x69,
-0x49, 0x39, 0xb1, 0x57, 0xca, 0x98, 0x2c, 0x63,
-0x0c, 0x47, 0x00, 0x93, 0x2f, 0x3b, 0x38, 0x70,
-0x0c, 0xed, 0x82, 0xd9, 0xb1, 0x56, 0xe3, 0xbf,
-0x7f, 0xfc, 0xb9, 0x8d, 0x9b, 0x94, 0x95, 0xd5,
-0xd1, 0xb1, 0x09, 0x91, 0xd1, 0xf1, 0x19, 0x59,
-0x22, 0x71, 0x7e, 0x71, 0x51, 0xa9, 0x42, 0x4a,
-0xf8, 0x43, 0xbc, 0x10, 0x28, 0xce, 0x03, 0x0c,
-0x2b, 0x04, 0x57, 0x51, 0x49, 0x70, 0x6c, 0xcb,
-0x65, 0x2a, 0x73, 0xcb, 0x82, 0x5c, 0x51, 0x05,
-0x23, 0x72, 0x79, 0x95, 0xed, 0xac, 0x12, 0x5f,
-0xd4, 0xd5, 0xba, 0x65, 0xeb, 0x36, 0x6b, 0x27,
-0xf0, 0x42, 0xc6, 0xd7, 0x99, 0x89, 0xdd, 0x9d,
-0xc0, 0xe3, 0xb8, 0xfc, 0xd4, 0xc7, 0x67, 0x41,
-0xb1, 0x10, 0x74, 0x60, 0x86, 0x50, 0x24, 0x2e,
-0x2c, 0x2e, 0x2f, 0x2a, 0x53, 0x96, 0xb1, 0xd2,
-0x65, 0xf2, 0x2a, 0x30, 0x01, 0x35, 0x04, 0x84,
-0xdc, 0x14, 0xe7, 0x78, 0xe5, 0x9a, 0x95, 0x5b,
-0xec, 0xfa, 0x0a, 0xda, 0x8d, 0x9b, 0x5e, 0x50,
-0x55, 0xd6, 0x82, 0xbb, 0xa2, 0xa2, 0x93, 0xd2,
-0xb3, 0x20, 0xd5, 0x4b, 0x0b, 0x4b, 0x31, 0x0a,
-0x32, 0x85, 0x4a, 0xca, 0x19, 0x2e, 0xaf, 0x02,
-0xdb, 0x41, 0x5c, 0x5d, 0x43, 0x2b, 0x1c, 0xc0,
-0x9f, 0xfc, 0xcb, 0x53, 0xd6, 0x06, 0x5a, 0x76,
-0x05, 0x42, 0x91, 0x40, 0x98, 0x1b, 0x11, 0x15,
-0x97, 0x92, 0x9e, 0x95, 0x2b, 0x2e, 0x2c, 0x2a,
-0x95, 0xd3, 0x70, 0x63, 0x62, 0x2b, 0x80, 0x73,
-0x25, 0xd5, 0x96, 0xfa, 0x10, 0x98, 0x97, 0x11,
-0x13, 0x64, 0xe8, 0xf9, 0x4a, 0xb3, 0xc3, 0x65,
-0x76, 0x5a, 0x39, 0xc3, 0x01, 0xec, 0xad, 0x92,
-0xab, 0xaa, 0x6a, 0xeb, 0xeb, 0xb6, 0x6e, 0xdf,
-0x0e, 0x72, 0xed, 0x1a, 0xf8, 0xd4, 0xd3, 0xcf,
-0xe6, 0x4a, 0xc4, 0x29, 0x69, 0x19, 0x11, 0x91,
-0x89, 0xc9, 0xa9, 0xd9, 0x79, 0x92, 0xa2, 0xa2,
-0x12, 0x69, 0x19, 0x31, 0xc7, 0x3a, 0x07, 0x78,
-0x52, 0x98, 0x64, 0xe0, 0x34, 0xe1, 0xa2, 0xac,
-0x30, 0x23, 0xe0, 0x0d, 0x74, 0x88, 0x4c, 0x55,
-0x2a, 0x55, 0x16, 0x97, 0xc9, 0x0a, 0x0a, 0xcb,
-0xc5, 0xf9, 0x85, 0xf0, 0x39, 0x93, 0x9a, 0x91,
-0x9d, 0x98, 0x94, 0x0e, 0xbb, 0x1b, 0xae, 0x00,
-0xdf, 0xdc, 0xb5, 0x1b, 0x0e, 0xe0, 0x77, 0x1a,
-0x65, 0xdb, 0xed, 0xb3, 0x46, 0x32, 0x58, 0x90,
-0xfd, 0xfe, 0xf1, 0x3f, 0xfe, 0x65, 0xc3, 0x86,
-0x73, 0x85, 0x5b, 0x6e, 0x68, 0xb6, 0x05, 0xeb,
-0xa1, 0x5e, 0x6c, 0xb9, 0x81, 0xf5, 0x62, 0xa3,
-0xe7, 0xc0, 0xbf, 0x3e, 0xba, 0x01, 0x4a, 0xea,
-0x43, 0x2f, 0x9c, 0xdb, 0x7a, 0x13, 0x8b, 0x08,
-0x4c, 0x3d, 0x79, 0xb9, 0xf6, 0xeb, 0xdf, 0xc5,
-0xef, 0x9f, 0xff, 0x73, 0xb3, 0x03, 0xd0, 0x6f,
-0x0f, 0xd6, 0x6f, 0xbb, 0x89, 0xf4, 0x2f, 0xf8,
-0xa8, 0xff, 0xf3, 0xcf, 0x6f, 0xc3, 0xf8, 0x83,
-0xdf, 0xf9, 0xd1, 0x7a, 0xa7, 0xba, 0x6d, 0x37,
-0xe7, 0x37, 0xfb, 0x4f, 0x7d, 0xe7, 0x47, 0x0f,
-0xad, 0x5b, 0xf7, 0xd5, 0x47, 0x5f, 0x77, 0xdb,
-0x12, 0xa4, 0x83, 0xd3, 0xdf, 0xf6, 0x5b, 0xf3,
-0x50, 0x95, 0xe0, 0xe8, 0xb7, 0xf5, 0x26, 0x48,
-0x01, 0x6e, 0x7a, 0x52, 0x9b, 0xe6, 0x08, 0x0e,
-0x08, 0xce, 0x92, 0xae, 0x86, 0xfc, 0x0c, 0x47,
-0xcf, 0x91, 0x91, 0x2e, 0x8c, 0xcf, 0x82, 0x56,
-0x30, 0x02, 0x5d, 0x32, 0xae, 0xa1, 0x0b, 0xc9,
-0x88, 0x86, 0x22, 0xec, 0xa0, 0x86, 0x32, 0x27,
-0xa0, 0xe7, 0xd1, 0xeb, 0x59, 0x02, 0x1d, 0xbb,
-0x16, 0x24, 0xce, 0xb3, 0x5d, 0x0d, 0xa1, 0xa4,
-0x42, 0x51, 0x0a, 0xdb, 0x65, 0x38, 0x6f, 0xbd,
-0x89, 0xc4, 0xd0, 0x52, 0xff, 0x80, 0x45, 0x54,
-0x67, 0xd2, 0xe5, 0x14, 0xc0, 0x2f, 0x96, 0xb7,
-0x07, 0xeb, 0x00, 0xb6, 0xdd, 0xd4, 0xbd, 0x1a,
-0x3a, 0xfb, 0xf2, 0x2d, 0xed, 0x2b, 0xa1, 0x73,
-0x6f, 0x84, 0xeb, 0xde, 0x0c, 0x9f, 0xdf, 0x19,
-0xa9, 0xdb, 0x1d, 0x3d, 0xb7, 0x37, 0xc6, 0xf0,
-0x5e, 0x02, 0x96, 0x5d, 0x38, 0xf3, 0x7e, 0x94,
-0x65, 0xb8, 0x24, 0x32, 0x5c, 0x11, 0x1b, 0xae,
-0x15, 0x18, 0x5c, 0x8a, 0x0c, 0xde, 0xa5, 0x8b,
-0xfe, 0xa5, 0x0b, 0xb7, 0xca, 0xb5, 0x3e, 0x45,
-0x06, 0xdf, 0xfc, 0x19, 0x5f, 0xc9, 0x58, 0xfb,
-0xd8, 0xe7, 0x77, 0xe3, 0xeb, 0x5f, 0x1d, 0x9a,
-0x5b, 0xdb, 0xf7, 0xee, 0x7d, 0x1b, 0x0a, 0xca,
-0x47, 0xa7, 0xce, 0xba, 0x79, 0x05, 0x44, 0xc6,
-0xc4, 0xc1, 0xe7, 0xbf, 0x54, 0xa1, 0xaa, 0x6b,
-0x6c, 0xe9, 0xe8, 0x55, 0xf7, 0x0f, 0x4f, 0x4c,
-0x4e, 0x41, 0xe9, 0xd0, 0xd2, 0xaf, 0x7f, 0x49,
-0x15, 0x9e, 0x83, 0x4a, 0x32, 0x35, 0x3d, 0x3b,
-0x32, 0x36, 0x3d, 0x88, 0x37, 0x45, 0x0f, 0x92,
-0xd7, 0x34, 0xb4, 0xc0, 0x66, 0x87, 0x4d, 0x27,
-0x12, 0x17, 0xa4, 0x65, 0x0a, 0xe3, 0x93, 0xd2,
-0x42, 0xc2, 0xa2, 0x03, 0x6f, 0xdc, 0xf2, 0xf4,
-0xf2, 0xbb, 0x7a, 0xcd, 0xed, 0xc2, 0xa5, 0x2b,
-0x50, 0x85, 0x4f, 0x7e, 0x70, 0xfa, 0xf0, 0x91,
-0xe3, 0xfb, 0xf7, 0x1f, 0xda, 0xb3, 0x77, 0xff,
-0xce, 0xdd, 0xfb, 0x5e, 0x7f, 0x63, 0xf7, 0x2b,
-0xaf, 0xbd, 0xf1, 0xea, 0xeb, 0x3b, 0x73, 0x44,
-0xb9, 0xc2, 0xdc, 0xe2, 0x98, 0xb8, 0xc4, 0x84,
-0xa4, 0x34, 0x28, 0xc1, 0x99, 0xd9, 0x79, 0x70,
-0xf4, 0xcb, 0xcc, 0xce, 0x81, 0x16, 0x0e, 0x71,
-0x80, 0x64, 0x09, 0x72, 0x33, 0xb3, 0x85, 0x80,
-0x8b, 0x25, 0x45, 0x6d, 0x1d, 0x9d, 0xdb, 0x5f,
-0x7e, 0xf5, 0xa9, 0xa7, 0xd7, 0x43, 0x15, 0x7e,
-0xea, 0xe9, 0x0d, 0x4f, 0x3d, 0xb3, 0x01, 0x8e,
-0x42, 0x4f, 0x3d, 0xf3, 0x2c, 0x6d, 0x01, 0x9e,
-0x7c, 0xea, 0x69, 0x80, 0xbf, 0x3c, 0xfd, 0x0c,
-0xc0, 0xe9, 0x8f, 0xcf, 0xd5, 0x37, 0x34, 0x86,
-0x46, 0x46, 0x47, 0xc7, 0x24, 0xc2, 0xf9, 0x3a,
-0x35, 0x3d, 0x0b, 0x2e, 0x98, 0x33, 0xb2, 0x84,
-0x99, 0xd9, 0x22, 0xd2, 0xe6, 0x00, 0x92, 0x25,
-0x40, 0x1c, 0xda, 0xc6, 0xe6, 0xb6, 0xeb, 0x6e,
-0xee, 0xb0, 0xea, 0xe9, 0x67, 0xd7, 0x53, 0x26,
-0x4f, 0x3d, 0xb3, 0x1e, 0x00, 0x46, 0x9e, 0x02,
-0x40, 0x11, 0xcf, 0x50, 0xce, 0x4f, 0x3f, 0xb3,
-0xfe, 0x99, 0xf5, 0x1b, 0xc0, 0x96, 0x82, 0xe2,
-0xe2, 0x8a, 0xaa, 0x1a, 0xb8, 0x72, 0x80, 0xeb,
-0x8d, 0x5b, 0xa1, 0xd1, 0xa1, 0xe1, 0x31, 0xf8,
-0x87, 0xec, 0xc4, 0xf4, 0xd4, 0xf4, 0xec, 0x5c,
-0xbc, 0x92, 0x80, 0xcf, 0x8f, 0x9a, 0xda, 0xba,
-0x26, 0xb8, 0x44, 0x81, 0xe3, 0x40, 0x4f, 0xef,
-0x00, 0xbd, 0xfe, 0x1f, 0x1c, 0x1a, 0x81, 0x16,
-0x0e, 0xf5, 0x70, 0x49, 0xdf, 0xde, 0xd9, 0xdb,
-0xdc, 0xd6, 0x59, 0x57, 0xd7, 0xac, 0x54, 0x55,
-0x15, 0x97, 0xca, 0x73, 0xc5, 0x45, 0xe9, 0x99,
-0x22, 0xa8, 0x9b, 0xb5, 0xf5, 0x8d, 0xe5, 0x52,
-0xf9, 0xc1, 0x23, 0x47, 0x41, 0x99, 0xbf, 0x30,
-0xd2, 0x19, 0x03, 0x29, 0xa0, 0x81, 0x4f, 0xa1,
-0xb1, 0x40, 0x40, 0xbb, 0x4f, 0x3f, 0xf3, 0x2c,
-0x00, 0xd4, 0x53, 0x65, 0x45, 0x75, 0x70, 0x68,
-0x44, 0x54, 0x74, 0x02, 0xf8, 0x33, 0x2d, 0x23,
-0x0b, 0x2a, 0x63, 0x46, 0x16, 0x78, 0x55, 0x44,
-0x7c, 0x2b, 0x22, 0x00, 0x86, 0x0b, 0x33, 0xb2,
-0x72, 0x1a, 0x9b, 0xda, 0x5c, 0xdd, 0x3c, 0x28,
-0x7f, 0x86, 0x27, 0x01, 0x4e, 0x28, 0x95, 0xcb,
-0xef, 0x82, 0xdb, 0x09, 0xc1, 0x06, 0x28, 0x0d,
-0xdb, 0x5e, 0x7a, 0x59, 0x55, 0x59, 0x15, 0x97,
-0x98, 0x1a, 0x1a, 0x11, 0x0b, 0xee, 0x4d, 0x4a,
-0xcd, 0x04, 0x9e, 0x00, 0xc0, 0x9f, 0xb8, 0x97,
-0xf1, 0x30, 0x01, 0x73, 0x97, 0x28, 0x23, 0xa4,
-0x2d, 0x0b, 0x9c, 0x56, 0x39, 0xdc, 0x12, 0xaa,
-0x33, 0x0f, 0xa1, 0x3c, 0x45, 0x39, 0x79, 0x92,
-0xc6, 0xe6, 0x96, 0x5d, 0x7b, 0xde, 0xa2, 0x61,
-0x7a, 0x9a, 0xda, 0xce, 0x86, 0x0c, 0xbd, 0x01,
-0xb9, 0x41, 0x7c, 0xc2, 0x5a, 0xf4, 0x2c, 0xa7,
-0xbc, 0x95, 0x99, 0xd6, 0x56, 0x43, 0xb8, 0x9f,
-0x7e, 0xf6, 0xd4, 0x99, 0xb3, 0x95, 0xd5, 0x75,
-0xa1, 0x11, 0xd1, 0x91, 0xd1, 0x89, 0x89, 0xc9,
-0xe9, 0x69, 0x19, 0x98, 0x30, 0xc4, 0x28, 0x11,
-0x5f, 0x0d, 0xd0, 0x2a, 0x4b, 0x90, 0xd3, 0xd0,
-0xd4, 0xec, 0xe3, 0xe7, 0xff, 0x24, 0x1b, 0x1a,
-0x73, 0xaa, 0xf0, 0xdc, 0x48, 0x7d, 0x05, 0x34,
-0x2f, 0x6e, 0xd9, 0xaa, 0xaa, 0xac, 0x89, 0x4f,
-0x48, 0x85, 0x0b, 0xc2, 0xb8, 0x84, 0xe4, 0x94,
-0x34, 0xc8, 0x46, 0x01, 0x44, 0xc7, 0xd2, 0x4c,
-0xc6, 0xea, 0x92, 0xd2, 0xf2, 0xe2, 0x92, 0xb2,
-0x17, 0x36, 0x6f, 0x7d, 0xfa, 0x19, 0x26, 0xca,
-0xa4, 0x65, 0x58, 0xd1, 0x2e, 0x30, 0x4f, 0xcf,
-0xc8, 0x10, 0xe5, 0x15, 0x84, 0x86, 0xc5, 0xc4,
-0xc6, 0x27, 0x25, 0xa5, 0x30, 0x0c, 0x81, 0x15,
-0x41, 0x04, 0x9c, 0xeb, 0xf8, 0x8e, 0xa5, 0xe1,
-0xe0, 0x5b, 0x64, 0x39, 0x6b, 0x1b, 0x05, 0xdc,
-0x1d, 0xcd, 0x2d, 0x2d, 0x3b, 0x76, 0xed, 0xe2,
-0x25, 0x1b, 0xbb, 0x35, 0x48, 0x3e, 0x3c, 0xbf,
-0xf1, 0x05, 0xb8, 0xbe, 0x85, 0xab, 0xe8, 0x30,
-0xf8, 0xf8, 0x48, 0x48, 0x4a, 0x4c, 0xc9, 0x82,
-0x0b, 0x48, 0x2e, 0x82, 0x34, 0xdf, 0x6c, 0x22,
-0xcb, 0x09, 0x12, 0xf2, 0x68, 0xac, 0x93, 0x01,
-0x44, 0xd3, 0x41, 0x62, 0x51, 0x0e, 0x6c, 0xe1,
-0xa4, 0x94, 0x8c, 0x04, 0xf8, 0x2f, 0x4b, 0x00,
-0xa7, 0xec, 0xe2, 0xd2, 0xf2, 0xc3, 0x64, 0x8f,
-0xd0, 0x10, 0xac, 0x15, 0x59, 0x36, 0xf4, 0x1b,
-0xf8, 0x5d, 0x2e, 0x73, 0xec, 0x12, 0x63, 0x9e,
-0x3f, 0xb5, 0x9e, 0x1d, 0x7c, 0x16, 0x12, 0x63,
-0xd3, 0x9e, 0xf3, 0x2f, 0xdd, 0x98, 0x7c, 0x2d,
-0x54, 0xff, 0x6a, 0xe8, 0x1c, 0x69, 0xb5, 0xaf,
-0x84, 0xe8, 0x5e, 0xb9, 0x39, 0xf5, 0xb3, 0xe7,
-0x8e, 0x40, 0x49, 0xfd, 0xc1, 0x2f, 0x37, 0xbe,
-0x1c, 0x34, 0xf6, 0x5a, 0x18, 0xde, 0xa0, 0xbb,
-0xc1, 0xb1, 0xf2, 0x41, 0x52, 0x7f, 0x1f, 0xda,
-0x7a, 0x9e, 0x9c, 0xe6, 0x90, 0x12, 0x90, 0x57,
-0x6e, 0xcd, 0x3e, 0xbc, 0xcd, 0x11, 0xeb, 0xef,
-0x3f, 0xff, 0x64, 0xd3, 0xb5, 0x7a, 0x60, 0xf2,
-0xdc, 0xd5, 0xda, 0xaf, 0x7e, 0xed, 0x9b, 0x5f,
-0xf9, 0xda, 0xb7, 0x9f, 0x38, 0x9a, 0x02, 0x0c,
-0x09, 0x4f, 0x3d, 0x50, 0xbe, 0x4a, 0xf8, 0xbf,
-0x86, 0xdd, 0xb9, 0x57, 0x42, 0x61, 0x04, 0xbb,
-0x2f, 0xdd, 0xd2, 0xbf, 0x16, 0x0a, 0x53, 0xda,
-0xd7, 0xb1, 0xab, 0x7f, 0x39, 0x04, 0x08, 0xe6,
-0x5f, 0x0d, 0xd5, 0x11, 0x11, 0x73, 0x2f, 0x07,
-0x6b, 0x51, 0x3a, 0x10, 0x84, 0xe8, 0x70, 0x30,
-0x14, 0x2b, 0xda, 0x2b, 0x21, 0xda, 0x57, 0x81,
-0x5b, 0x08, 0x10, 0x23, 0x93, 0x97, 0x6e, 0x51,
-0x62, 0x04, 0xc0, 0x29, 0x2b, 0x1c, 0x04, 0xd1,
-0xc8, 0x53, 0xf7, 0x72, 0x08, 0xc1, 0x43, 0x75,
-0x68, 0x5a, 0x28, 0x43, 0xf6, 0x1a, 0x22, 0x7a,
-0xb2, 0x4a, 0x4f, 0x96, 0xcc, 0xbd, 0x8a, 0x6a,
-0x00, 0x4f, 0xdd, 0xcb, 0xb7, 0xf4, 0x94, 0xe6,
-0xa5, 0x60, 0x0d, 0x08, 0x02, 0x71, 0xa0, 0x24,
-0x99, 0x05, 0x04, 0xb9, 0x11, 0x1c, 0x67, 0x5f,
-0x0b, 0x9b, 0x67, 0x4d, 0xd3, 0x51, 0xfe, 0x50,
-0x6d, 0x01, 0x5e, 0x0f, 0xd7, 0xbe, 0x11, 0xae,
-0xdd, 0x15, 0xa9, 0x7f, 0x3b, 0x66, 0x6e, 0x5f,
-0xac, 0xfe, 0x5d, 0x72, 0xda, 0x05, 0x38, 0x9a,
-0x6a, 0x38, 0xce, 0x7d, 0xdb, 0x9c, 0x6b, 0xb8,
-0x96, 0x6f, 0x70, 0x2f, 0x5e, 0xf0, 0x2b, 0x5f,
-0xf4, 0x97, 0x2e, 0x06, 0xca, 0x97, 0x82, 0x64,
-0x8b, 0xc1, 0xb2, 0x45, 0xbf, 0x62, 0xad, 0x4f,
-0xfe, 0x8c, 0xb0, 0x4e, 0xb7, 0xb8, 0xf6, 0xef,
-0xf8, 0xfe, 0xf7, 0xc3, 0xe2, 0xf2, 0xd2, 0xad,
-0xb0, 0xc8, 0x37, 0xde, 0xdc, 0x75, 0xf0, 0xd0,
-0xd1, 0x8b, 0x97, 0xaf, 0xfa, 0x06, 0xdc, 0x84,
-0xa3, 0x53, 0x5e, 0x7e, 0xa1, 0x52, 0x55, 0xdb,
-0xd4, 0xda, 0x01, 0x57, 0xf8, 0x63, 0xe3, 0xf8,
-0x77, 0xe0, 0x99, 0x59, 0x3c, 0x02, 0xcf, 0xcd,
-0xd3, 0x3f, 0xc5, 0xce, 0xc1, 0x29, 0x18, 0x46,
-0xc7, 0x27, 0x67, 0x86, 0x46, 0x26, 0x7a, 0x07,
-0xd4, 0x1d, 0x5d, 0xfd, 0x0d, 0x4d, 0x6d, 0x55,
-0x35, 0x0d, 0x50, 0x85, 0xf3, 0x0b, 0xcb, 0x72,
-0x72, 0xf3, 0xd3, 0x32, 0x84, 0xb1, 0xf1, 0x29,
-0x61, 0xe1, 0xb1, 0x01, 0x70, 0x42, 0xf4, 0x0d,
-0x70, 0xbc, 0xee, 0xe9, 0xe0, 0xe4, 0x7c, 0xf6,
-0xbc, 0xc3, 0xa9, 0x33, 0xe7, 0x3e, 0xfc, 0xf0,
-0xd4, 0xc1, 0xc3, 0xc7, 0x0f, 0x1c, 0x3c, 0xb2,
-0xff, 0xbd, 0x43, 0xef, 0xee, 0x3f, 0x20, 0xc8,
-0xc9, 0x2d, 0x29, 0x95, 0xc7, 0x25, 0xa4, 0x81,
-0x5c, 0xb2, 0xb9, 0x32, 0x68, 0x9b, 0x98, 0x0c,
-0x6d, 0x1a, 0x8c, 0xc3, 0xc7, 0x20, 0x00, 0xa9,
-0x26, 0x42, 0x28, 0x58, 0x7b, 0xdf, 0x7e, 0x77,
-0xf3, 0x96, 0x6d, 0x5b, 0xb6, 0x6e, 0x7f, 0x71,
-0xf3, 0xb6, 0x17, 0xb7, 0xbc, 0xbc, 0x65, 0x1b,
-0x20, 0x5b, 0x36, 0x6f, 0xd9, 0xba, 0x75, 0xdb,
-0x76, 0x38, 0x4d, 0x03, 0x0e, 0x87, 0x23, 0xe8,
-0x6e, 0xde, 0xba, 0xed, 0xcc, 0xb9, 0x4b, 0xcd,
-0x2d, 0xed, 0x91, 0x31, 0x89, 0x51, 0x31, 0x09,
-0x70, 0xee, 0x88, 0x4b, 0x48, 0x85, 0xcf, 0xbd,
-0xf8, 0xc4, 0x54, 0xd8, 0xbf, 0x71, 0x09, 0x29,
-0xa4, 0x4d, 0x25, 0x22, 0x52, 0x80, 0x3f, 0x7c,
-0xea, 0xde, 0xbc, 0x15, 0xb2, 0x6d, 0xfb, 0x2b,
-0xc0, 0x67, 0xf3, 0x96, 0xed, 0x94, 0x0f, 0x91,
-0x82, 0xac, 0x36, 0x6f, 0xdd, 0xbe, 0x75, 0xfb,
-0x4b, 0xf0, 0x11, 0xba, 0x99, 0xc0, 0x0b, 0x38,
-0xf8, 0xf2, 0xbe, 0xb7, 0xdf, 0x49, 0x49, 0x4b,
-0x6f, 0xeb, 0xe8, 0x2a, 0x29, 0x91, 0x46, 0x46,
-0xc7, 0x85, 0x45, 0xc6, 0x12, 0x41, 0xc9, 0xc0,
-0x16, 0x3e, 0x5d, 0xe1, 0x93, 0x10, 0xae, 0x64,
-0xc4, 0xf9, 0x25, 0x85, 0x25, 0x72, 0x38, 0xe0,
-0x28, 0x94, 0x55, 0x70, 0xfc, 0x51, 0x55, 0x37,
-0x00, 0x54, 0xd5, 0xd4, 0x57, 0x54, 0xd5, 0xc1,
-0x79, 0x5e, 0x2a, 0x57, 0x16, 0x95, 0xca, 0x24,
-0x05, 0x65, 0x42, 0x51, 0x01, 0xf9, 0x6c, 0x17,
-0x94, 0x4b, 0x95, 0x5d, 0xdd, 0xbd, 0xa9, 0x19,
-0x59, 0xc0, 0x7c, 0x33, 0x31, 0x04, 0x64, 0x6d,
-0x41, 0x95, 0xb6, 0xd2, 0x2e, 0x00, 0x98, 0xc9,
-0x74, 0xb7, 0x6e, 0xdf, 0x0c, 0x26, 0x53, 0x6f,
-0x6c, 0xd9, 0x06, 0x3a, 0x3b, 0x5d, 0xbd, 0x56,
-0x53, 0x5b, 0x1f, 0x19, 0x95, 0xc0, 0x9a, 0x8c,
-0x36, 0x82, 0x63, 0xe3, 0x13, 0xd3, 0x09, 0x6e,
-0x01, 0x55, 0x35, 0x75, 0xc1, 0xa1, 0x21, 0x60,
-0x20, 0xac, 0x05, 0x93, 0x29, 0x5b, 0xca, 0x6a,
-0xcb, 0xb6, 0x97, 0x88, 0x57, 0xb7, 0x93, 0x91,
-0x6d, 0xc4, 0xa5, 0x8c, 0x9f, 0x01, 0x27, 0xf4,
-0x5b, 0xdf, 0x78, 0x73, 0xa7, 0x42, 0x55, 0x09,
-0x1f, 0x89, 0x70, 0xf0, 0x27, 0xb2, 0x92, 0x59,
-0x71, 0x76, 0x64, 0x7d, 0x5e, 0x00, 0x8e, 0x85,
-0xfa, 0x7b, 0xec, 0xf8, 0xc9, 0x17, 0x36, 0x6f,
-0x79, 0x71, 0xeb, 0x76, 0x6b, 0x6f, 0xb0, 0x01,
-0xe2, 0x3b, 0x6a, 0x0b, 0x8e, 0x53, 0xd7, 0xd1,
-0xb0, 0x6e, 0x27, 0xb0, 0xcd, 0xaa, 0x0b, 0xf8,
-0x8b, 0x5b, 0xb6, 0x7f, 0x7c, 0xfe, 0x7c, 0x5d,
-0x43, 0x73, 0x4c, 0x5c, 0x52, 0x44, 0x54, 0x42,
-0x6c, 0x7c, 0x32, 0x20, 0x60, 0x0e, 0xb1, 0x28,
-0x99, 0x1a, 0x08, 0xce, 0x24, 0xc9, 0x93, 0x06,
-0x50, 0x59, 0x5d, 0x1d, 0x16, 0x11, 0x4d, 0xa2,
-0xb3, 0x8d, 0xf2, 0xa1, 0x4e, 0xa3, 0x72, 0x31,
-0x70, 0xc4, 0x99, 0x9b, 0xb1, 0xdd, 0xfe, 0xda,
-0xeb, 0x6f, 0x56, 0x54, 0x55, 0x67, 0x64, 0xe6,
-0x44, 0x46, 0x27, 0xc0, 0x35, 0x1b, 0xec, 0x0e,
-0x5b, 0x47, 0x91, 0x9c, 0x4c, 0x06, 0xce, 0xb0,
-0x29, 0x54, 0xaa, 0x8a, 0x37, 0x77, 0xbc, 0x45,
-0xd7, 0x6e, 0xa1, 0xa6, 0x21, 0xdb, 0xed, 0x4c,
-0x50, 0xb6, 0x61, 0xe8, 0x53, 0xd3, 0xd2, 0xe1,
-0x84, 0x0e, 0xe7, 0x5f, 0x08, 0x37, 0xcf, 0xff,
-0x69, 0xac, 0xce, 0xd6, 0xde, 0xa3, 0x99, 0x7f,
-0xe7, 0x40, 0x58, 0x81, 0xa5, 0x19, 0xcd, 0x6d,
-0xad, 0x87, 0x8e, 0x1c, 0x25, 0xe6, 0x6c, 0xc5,
-0x8d, 0x00, 0xbe, 0x62, 0x93, 0x01, 0x60, 0xeb,
-0xf6, 0x57, 0x84, 0xb9, 0x79, 0xb9, 0x92, 0x42,
-0x30, 0x2d, 0x3a, 0x06, 0xac, 0x4b, 0x61, 0x1d,
-0x95, 0xfa, 0x19, 0xc3, 0x0d, 0xd7, 0x75, 0xac,
-0x21, 0xc0, 0x0d, 0x9c, 0x96, 0x90, 0x91, 0x95,
-0xad, 0x54, 0x55, 0x76, 0x74, 0xf5, 0xc0, 0x66,
-0xd9, 0xb5, 0x67, 0x1f, 0xb8, 0x17, 0xfc, 0x8c,
-0xdf, 0xa7, 0x81, 0x42, 0xdb, 0x5e, 0x62, 0x76,
-0x0a, 0x8d, 0xac, 0x55, 0x77, 0xab, 0x45, 0x8c,
-0xcc, 0x79, 0xc2, 0xee, 0x23, 0xbb, 0xc4, 0x34,
-0xcd, 0x5e, 0xde, 0xf1, 0xce, 0x9b, 0xde, 0x75,
-0xbb, 0xa2, 0xe6, 0xde, 0x8e, 0xd1, 0xec, 0x89,
-0xd2, 0xef, 0x8d, 0xd6, 0xed, 0x8c, 0x98, 0x7b,
-0x2b, 0x7a, 0x6e, 0x4f, 0x94, 0xf6, 0x2f, 0x1f,
-0xa6, 0xe0, 0xfb, 0x25, 0xff, 0xf1, 0x87, 0xcf,
-0x3b, 0x94, 0xed, 0x8e, 0xd2, 0xee, 0x89, 0xd2,
-0xbd, 0x78, 0xad, 0xfa, 0x1f, 0xbf, 0xf7, 0x33,
-0x18, 0xfc, 0xc5, 0xe6, 0x33, 0xaf, 0x05, 0x0d,
-0xbe, 0x41, 0xe0, 0x25, 0xdf, 0xbe, 0xf5, 0xe7,
-0xf3, 0x7f, 0xf8, 0xf0, 0x53, 0x30, 0xfe, 0x4f,
-0x3f, 0xfd, 0xfd, 0xab, 0x81, 0xc3, 0xbb, 0xc2,
-0xa6, 0xfe, 0xfb, 0x4d, 0x37, 0xfc, 0x9a, 0xfa,
-0x47, 0x8f, 0xbc, 0xe4, 0xdb, 0x05, 0x0b, 0x81,
-0x33, 0x30, 0xdc, 0x19, 0xc9, 0x70, 0xde, 0x1b,
-0xad, 0xd9, 0x1d, 0xa5, 0xdf, 0x17, 0xa3, 0x27,
-0x53, 0x9a, 0xbd, 0x31, 0x73, 0xbb, 0xa3, 0xe6,
-0x76, 0xe1, 0xac, 0x6e, 0x4f, 0x34, 0xde, 0x8f,
-0xb4, 0x37, 0x5a, 0x0b, 0x23, 0x7b, 0x63, 0xb0,
-0xbb, 0x2f, 0x46, 0x0b, 0x2a, 0xed, 0x8e, 0xd4,
-0xed, 0x8b, 0x86, 0x72, 0x86, 0xcb, 0x61, 0x2d,
-0xd4, 0x35, 0xd0, 0x79, 0x6f, 0x94, 0x66, 0x27,
-0x8e, 0xe8, 0x28, 0x67, 0x50, 0x12, 0x06, 0x41,
-0xd6, 0xce, 0x48, 0x3d, 0x1d, 0xdc, 0x8d, 0x42,
-0xe7, 0x61, 0xed, 0x2e, 0xe4, 0x4f, 0x5b, 0x3d,
-0x2c, 0xdf, 0x1d, 0xa9, 0x45, 0xfa, 0x48, 0x2d,
-0x35, 0x96, 0x2c, 0xd7, 0x33, 0xc4, 0x51, 0x38,
-0x45, 0xc8, 0x70, 0x76, 0x0f, 0x3a, 0x44, 0xc7,
-0x10, 0x47, 0xce, 0xef, 0x88, 0x00, 0x26, 0xc0,
-0x59, 0xb7, 0x23, 0x12, 0x7f, 0x2e, 0x04, 0x83,
-0xd0, 0xdd, 0xcd, 0xca, 0x02, 0xf5, 0xde, 0x8e,
-0xd1, 0xbd, 0x13, 0xab, 0x47, 0x88, 0x9b, 0x07,
-0x78, 0x3f, 0x61, 0x0e, 0x8e, 0xba, 0x00, 0x47,
-0x52, 0x0c, 0x27, 0x33, 0x0c, 0x67, 0x05, 0x08,
-0x17, 0x45, 0x06, 0xa7, 0x7c, 0xc3, 0xd5, 0x02,
-0x83, 0x07, 0x1c, 0x78, 0xcb, 0x97, 0x82, 0xe5,
-0x2b, 0xb7, 0x14, 0x2b, 0x51, 0x15, 0x0b, 0x91,
-0xaa, 0xc5, 0x70, 0xd5, 0xd2, 0x4d, 0xe9, 0x42,
-0x40, 0xa9, 0xe6, 0x66, 0xf1, 0xb4, 0x7a, 0xf6,
-0x1e, 0x78, 0xe0, 0xe4, 0xed, 0x61, 0x40, 0xad,
-0x86, 0xa3, 0xd6, 0x8e, 0x5d, 0x6f, 0x9d, 0x38,
-0xf9, 0xa1, 0xd3, 0x35, 0xf7, 0x9b, 0x21, 0xe1,
-0xe9, 0x99, 0xc2, 0xfc, 0xc2, 0x72, 0xb8, 0xc2,
-0x6c, 0x6d, 0xef, 0xee, 0x1f, 0x1c, 0x19, 0x1d,
-0x9f, 0x9e, 0x9e, 0xd1, 0xc2, 0xc9, 0x17, 0x4e,
-0xc1, 0xf3, 0x06, 0x03, 0x85, 0x59, 0x8d, 0x06,
-0xea, 0x32, 0x54, 0x61, 0x98, 0x1d, 0x50, 0x8f,
-0xf4, 0xf4, 0xa9, 0xdb, 0x3a, 0x7a, 0x1a, 0x9a,
-0x5a, 0xab, 0x6a, 0x6a, 0xcb, 0xa4, 0xaa, 0xfc,
-0xc2, 0x52, 0x61, 0xae, 0x24, 0x35, 0x5d, 0x08,
-0x1b, 0x07, 0x2e, 0xf8, 0x6f, 0x04, 0x87, 0xf9,
-0x07, 0x04, 0xbb, 0x7b, 0xfa, 0x5e, 0x73, 0x71,
-0xbf, 0x7c, 0xc5, 0xf9, 0xfc, 0xc5, 0xcb, 0xa7,
-0x3e, 0x3e, 0xff, 0xd1, 0xa9, 0x73, 0x27, 0x3f,
-0x38, 0x05, 0x45, 0xaa, 0xba, 0xb6, 0x1e, 0x5a,
-0x72, 0x1a, 0x85, 0x2b, 0x5e, 0xe6, 0xd2, 0x17,
-0xea, 0x17, 0x5c, 0xf4, 0x42, 0xcd, 0x4d, 0xcf,
-0xcc, 0x49, 0xcb, 0xc8, 0x81, 0x56, 0x90, 0x23,
-0xea, 0xeb, 0xef, 0xff, 0xe8, 0xf4, 0x99, 0x5d,
-0xbb, 0xf7, 0x12, 0x78, 0xeb, 0xf5, 0x9d, 0xef,
-0xec, 0xd8, 0xb5, 0x77, 0xc7, 0xce, 0xb7, 0x76,
-0x42, 0x77, 0xcf, 0x5e, 0xc4, 0x77, 0xbd, 0x05,
-0x2d, 0xcc, 0xbe, 0xb9, 0x6b, 0xf7, 0xb9, 0x0b,
-0x0e, 0x9d, 0xdd, 0x3d, 0xc0, 0x36, 0x2d, 0x5d,
-0x98, 0x8a, 0x90, 0x0d, 0x97, 0xe5, 0x04, 0x84,
-0x14, 0x81, 0x2d, 0x0c, 0x38, 0x5c, 0x57, 0xc3,
-0xb9, 0xb8, 0xb2, 0xba, 0x3e, 0x31, 0x29, 0x69,
-0xcf, 0x9e, 0xb7, 0xe9, 0x72, 0xe4, 0xb3, 0x13,
-0x91, 0x9d, 0xbb, 0x10, 0x90, 0x21, 0x48, 0xd9,
-0xb5, 0x77, 0x37, 0x8e, 0xec, 0x01, 0x71, 0x30,
-0xbb, 0x73, 0xe7, 0xde, 0x7d, 0xef, 0x1c, 0x70,
-0xf3, 0xf4, 0x92, 0x2b, 0x2b, 0xdb, 0xda, 0x3b,
-0x8b, 0x8a, 0xcb, 0x81, 0x27, 0x7c, 0x78, 0x26,
-0x26, 0x67, 0x26, 0xa7, 0x66, 0x90, 0x03, 0x8e,
-0x30, 0x23, 0x3b, 0x37, 0x3b, 0x27, 0x0f, 0x4e,
-0x6d, 0x70, 0xb6, 0xcd, 0x93, 0x14, 0x4b, 0x0a,
-0x8b, 0x25, 0x05, 0xa5, 0x80, 0x50, 0xc8, 0xc9,
-0x2b, 0x10, 0x88, 0xf0, 0x8c, 0x0f, 0xc7, 0x87,
-0xb2, 0x72, 0x79, 0x67, 0x57, 0x0f, 0xb8, 0xc2,
-0xc5, 0xdd, 0xe3, 0x9d, 0xfd, 0x07, 0x76, 0x11,
-0x11, 0xd4, 0xb4, 0x9d, 0x68, 0xd7, 0x5e, 0x46,
-0x28, 0x51, 0x8c, 0xe2, 0xbb, 0x98, 0x11, 0x6a,
-0x38, 0x12, 0x3b, 0x5f, 0x77, 0x6d, 0x6a, 0xe9,
-0x64, 0x2c, 0x4d, 0x07, 0x33, 0xb3, 0x08, 0x64,
-0x83, 0x26, 0x9c, 0xd5, 0xd0, 0x25, 0x04, 0xc2,
-0x9a, 0xba, 0xfa, 0xc4, 0xe4, 0x54, 0x8e, 0x03,
-0x0a, 0xda, 0xfd, 0x16, 0xc7, 0x16, 0xdc, 0xbb,
-0x73, 0x27, 0x63, 0x3e, 0x43, 0xb0, 0x0b, 0x95,
-0x21, 0x08, 0x78, 0x63, 0xcf, 0xbb, 0xef, 0xbd,
-0xaf, 0xac, 0xa8, 0x10, 0x4b, 0x8a, 0x88, 0x6f,
-0xb3, 0xd8, 0x48, 0x09, 0x52, 0xd3, 0x51, 0x04,
-0x15, 0x44, 0x25, 0x82, 0x38, 0x0a, 0x44, 0x07,
-0x0b, 0xe0, 0x05, 0x25, 0x9b, 0x84, 0x43, 0xc0,
-0x52, 0x0a, 0x2c, 0x81, 0xae, 0x85, 0xa3, 0x53,
-0x6e, 0x47, 0x57, 0xf7, 0x45, 0x87, 0x2b, 0xa0,
-0xde, 0x9b, 0x3b, 0x31, 0x4c, 0x3b, 0xa9, 0xc2,
-0x8c, 0x9e, 0x6f, 0xe1, 0xc8, 0x2e, 0xd6, 0x33,
-0x3c, 0x8b, 0x30, 0x94, 0x38, 0xc2, 0xcc, 0xd2,
-0x25, 0x94, 0x78, 0x27, 0xd3, 0x45, 0xfc, 0xfc,
-0x25, 0x87, 0xe6, 0xd6, 0x36, 0x38, 0x73, 0x81,
-0x45, 0xc4, 0x10, 0x21, 0x5f, 0x0d, 0x9e, 0x6e,
-0xa8, 0x7c, 0x45, 0x55, 0x6d, 0x7a, 0x66, 0xd6,
-0x9e, 0xbd, 0xfb, 0xa8, 0x0f, 0x49, 0xa4, 0x18,
-0x86, 0xc0, 0x8d, 0x26, 0x24, 0xe3, 0x3d, 0x48,
-0x95, 0xb7, 0xf7, 0xc3, 0x75, 0x57, 0x41, 0x51,
-0x31, 0xe1, 0x8c, 0x7c, 0xc0, 0x5d, 0x90, 0x7b,
-0x10, 0x20, 0xea, 0x3d, 0xc2, 0x9f, 0xb6, 0x39,
-0xb9, 0xe2, 0xc2, 0x86, 0xc6, 0xa6, 0x43, 0x87,
-0x8e, 0xef, 0x60, 0xb5, 0x7d, 0x73, 0xe7, 0x2e,
-0xea, 0x7c, 0x36, 0x3a, 0xc8, 0x36, 0x23, 0x33,
-0x4b, 0x51, 0x51, 0xc9, 0x31, 0x64, 0x15, 0xcb,
-0xa6, 0x4c, 0x78, 0x51, 0xa0, 0x99, 0xc0, 0x84,
-0x89, 0x06, 0x82, 0x5d, 0x92, 0x6d, 0x69, 0x1a,
-0xd7, 0x65, 0x32, 0x87, 0x76, 0xdb, 0x3a, 0x3a,
-0xce, 0x5f, 0x74, 0xc0, 0x84, 0x04, 0x7f, 0x62,
-0xfe, 0xa3, 0x9f, 0xd9, 0x6d, 0x88, 0x5e, 0xcd,
-0x15, 0xe7, 0xcb, 0x14, 0x15, 0xa9, 0xe9, 0x99,
-0x5c, 0x32, 0xc0, 0x9e, 0x65, 0x53, 0x42, 0xc8,
-0x72, 0x36, 0x8b, 0xe6, 0x38, 0xb3, 0x99, 0x90,
-0x6d, 0x19, 0x77, 0x73, 0x02, 0x40, 0xea, 0xc2,
-0xd5, 0x88, 0x28, 0xaf, 0xb0, 0xb4, 0x5c, 0xd1,
-0xd4, 0xdc, 0xd2, 0xda, 0xd6, 0x55, 0x58, 0x54,
-0xe2, 0xe0, 0x74, 0x6d, 0xdf, 0x3b, 0xfb, 0x77,
-0xd2, 0x10, 0xef, 0x62, 0x74, 0xa0, 0x59, 0xca,
-0x86, 0xfe, 0xad, 0x1d, 0xdc, 0xbe, 0xc0, 0xc1,
-0xb7, 0x76, 0xb0, 0x1b, 0x99, 0x06, 0x9a, 0x64,
-0xce, 0x5b, 0x5c, 0x6e, 0xb3, 0xf9, 0x4f, 0x70,
-0x20, 0x26, 0xc8, 0x9b, 0x64, 0xbb, 0xbd, 0xbe,
-0x7b, 0xdf, 0x3e, 0x67, 0xe1, 0xfe, 0xd8, 0x59,
-0x38, 0x97, 0x1d, 0x48, 0x84, 0x03, 0xda, 0xfc,
-0x81, 0xa4, 0xb9, 0xf7, 0x12, 0xb0, 0x6a, 0xbc,
-0x13, 0x37, 0xf7, 0x76, 0x98, 0xfa, 0xdb, 0x3f,
-0x7a, 0x6c, 0xdd, 0x7d, 0x0f, 0x3c, 0xb2, 0xfe,
-0xed, 0x7d, 0x11, 0x63, 0x40, 0xf3, 0x8a, 0x7b,
-0xd5, 0x3f, 0x7e, 0x1f, 0xcf, 0xbf, 0xdf, 0xf8,
-0xf6, 0x0f, 0xbe, 0xfb, 0x6f, 0xbf, 0xf9, 0xce,
-0xbf, 0xff, 0xee, 0x5f, 0xfe, 0xf3, 0x77, 0xdf,
-0xfd, 0xd1, 0x23, 0x5f, 0x7f, 0xf0, 0xbb, 0xf7,
-0xdf, 0xf7, 0xc0, 0x37, 0x1f, 0xfc, 0xa7, 0x27,
-0x76, 0xbb, 0xbc, 0x1f, 0xaf, 0x7b, 0xd5, 0x4d,
-0xf5, 0xcf, 0x3f, 0xfd, 0x0d, 0x8c, 0xfc, 0x7a,
-0xeb, 0xa9, 0xf7, 0xe3, 0xb5, 0x07, 0x08, 0x73,
-0x7a, 0x8b, 0x2f, 0x70, 0x7e, 0x3f, 0x11, 0x60,
-0xde, 0x8c, 0x80, 0x50, 0xec, 0xea, 0x0f, 0x24,
-0xe8, 0xdf, 0x43, 0x5c, 0x8f, 0x78, 0xa2, 0x0e,
-0xd4, 0x38, 0x80, 0x5d, 0xdd, 0xfb, 0x09, 0x86,
-0xf7, 0x12, 0x98, 0x3b, 0x84, 0xa1, 0x3d, 0x40,
-0x5a, 0xa0, 0xa1, 0x6b, 0x09, 0x4f, 0x3d, 0xea,
-0x9c, 0x48, 0xe9, 0x81, 0x15, 0xe2, 0xef, 0x31,
-0xb3, 0x88, 0x98, 0xf1, 0x04, 0x82, 0x27, 0x30,
-0x38, 0x19, 0x24, 0x6b, 0x51, 0x22, 0x8f, 0x55,
-0xc2, 0xdc, 0x7b, 0x3c, 0x1a, 0x22, 0xce, 0xb0,
-0x9f, 0x08, 0xdd, 0x9f, 0x40, 0x8f, 0xb1, 0xcc,
-0xf8, 0xfe, 0x78, 0xb3, 0x56, 0x07, 0x12, 0xe7,
-0x80, 0xc9, 0xc1, 0x24, 0x03, 0x00, 0x1c, 0x72,
-0x01, 0xa0, 0xe0, 0xc2, 0x39, 0xf7, 0x83, 0x0c,
-0xe6, 0x7b, 0x66, 0x87, 0x3c, 0xc3, 0x55, 0xb1,
-0xc1, 0xa5, 0x68, 0xc1, 0xb5, 0x78, 0xc1, 0xbf,
-0x6c, 0x31, 0x50, 0xb6, 0x14, 0xa2, 0x5c, 0x09,
-0xab, 0x58, 0x89, 0xa9, 0x36, 0xc6, 0xd5, 0x1a,
-0x63, 0xaa, 0x57, 0xe3, 0x6a, 0xa0, 0x0a, 0x2f,
-0xdd, 0x92, 0xcf, 0x07, 0x14, 0x4d, 0x49, 0x5a,
-0xe7, 0x57, 0xef, 0x9d, 0xdf, 0x1c, 0xad, 0x05,
-0x46, 0x93, 0x31, 0x3d, 0x23, 0xeb, 0xf5, 0x37,
-0xf1, 0xe9, 0x88, 0xa7, 0xcf, 0x5c, 0x74, 0xf3,
-0x0a, 0x0c, 0x8f, 0x8e, 0xcb, 0x12, 0xe4, 0x96,
-0x4a, 0x95, 0xe4, 0xa6, 0x9a, 0x9e, 0x01, 0xf5,
-0xe8, 0xc4, 0xd4, 0x0c, 0x54, 0xdb, 0x59, 0x8d,
-0x9e, 0xab, 0xbf, 0x00, 0xf4, 0x20, 0x4c, 0x9f,
-0x91, 0x45, 0xbe, 0x56, 0x1d, 0x6a, 0xef, 0xec,
-0x6b, 0x6e, 0xed, 0xac, 0xa9, 0x6b, 0xae, 0xa8,
-0xac, 0x92, 0xca, 0x54, 0x92, 0x82, 0x12, 0xa1,
-0x28, 0x3f, 0x3d, 0x53, 0x04, 0xd7, 0xb1, 0x70,
-0x89, 0x1e, 0x1a, 0x1e, 0x1d, 0x10, 0x1c, 0xea,
-0xeb, 0x8f, 0x85, 0xd8, 0xc5, 0xcd, 0xd3, 0xe9,
-0x9a, 0xdb, 0x15, 0x27, 0x17, 0xa8, 0xb3, 0xe3,
-0x93, 0x93, 0x83, 0xea, 0xa1, 0xfe, 0x81, 0x91,
-0x01, 0x35, 0xbd, 0x4b, 0x64, 0xa0, 0xb7, 0x7f,
-0xa0, 0xbb, 0x6f, 0xa0, 0x7f, 0xb0, 0xbf, 0xb7,
-0x7f, 0xb0, 0xa7, 0xaf, 0xaf, 0xa7, 0x77, 0x10,
-0x90, 0xbe, 0x01, 0x38, 0x8c, 0x4f, 0x5e, 0x76,
-0x70, 0x3c, 0x7c, 0xe4, 0xd8, 0x91, 0xa3, 0x27,
-0x8f, 0x1c, 0x3d, 0x71, 0xe4, 0xc8, 0xf1, 0x43,
-0x47, 0x8e, 0x1d, 0x3a, 0x72, 0xf2, 0x30, 0x81,
-0x83, 0x87, 0x11, 0x28, 0x7e, 0xe8, 0xe8, 0xc9,
-0x0b, 0x0e, 0xce, 0xa3, 0x63, 0x63, 0x7d, 0xfd,
-0x7d, 0x7d, 0xfd, 0x83, 0xdd, 0xbd, 0xfd, 0x7d,
-0x84, 0x15, 0xc3, 0x90, 0x45, 0x7a, 0xfb, 0x60,
-0x0a, 0xf1, 0x91, 0xb1, 0x89, 0xd4, 0xf4, 0x8c,
-0x23, 0x47, 0x8f, 0xe3, 0xf2, 0xa3, 0xc8, 0x07,
-0xd8, 0x1e, 0x3a, 0x7c, 0xec, 0x30, 0xc7, 0xfc,
-0xd0, 0x11, 0x22, 0x14, 0x06, 0x8f, 0x73, 0x53,
-0x07, 0x0f, 0x1d, 0x07, 0x1d, 0xce, 0x9c, 0xbd,
-0x9c, 0x90, 0x94, 0xdc, 0xdc, 0xd2, 0x32, 0x30,
-0x38, 0x52, 0x59, 0x5d, 0x2b, 0xce, 0x2f, 0x86,
-0x0f, 0x0d, 0x80, 0x4c, 0x01, 0x16, 0x5f, 0x38,
-0xdb, 0x66, 0x09, 0x73, 0xb3, 0x45, 0x50, 0x85,
-0xf3, 0x73, 0xf2, 0x0a, 0x73, 0xc5, 0xc5, 0x70,
-0x65, 0x22, 0x10, 0x89, 0x01, 0xb2, 0x84, 0x79,
-0x50, 0x85, 0xab, 0x6b, 0xeb, 0xfa, 0x07, 0x07,
-0x3b, 0x3a, 0xbb, 0x12, 0x93, 0xd2, 0x2e, 0x5c,
-0x74, 0x44, 0xe9, 0xd4, 0x84, 0xc3, 0x27, 0x40,
-0x16, 0xb5, 0x88, 0xd1, 0x07, 0xc7, 0x61, 0xe4,
-0x38, 0xea, 0xc0, 0xce, 0x82, 0x26, 0x9c, 0xe1,
-0x2e, 0x2e, 0x6e, 0x3d, 0x7d, 0xfd, 0xc4, 0xba,
-0x7e, 0x72, 0xef, 0xca, 0x40, 0x5f, 0xbf, 0x9a,
-0x58, 0xda, 0x4f, 0xad, 0x66, 0x0d, 0xc7, 0x2e,
-0x38, 0x27, 0x33, 0x5b, 0x40, 0xac, 0x3b, 0x01,
-0x86, 0x50, 0xfe, 0x87, 0x18, 0xe6, 0xe0, 0x87,
-0xe3, 0x38, 0x8e, 0x6c, 0x4f, 0x10, 0xa1, 0x27,
-0x39, 0x4d, 0x50, 0xb7, 0x23, 0xc7, 0x4e, 0x7c,
-0x78, 0xa6, 0x5c, 0xae, 0xc4, 0x4b, 0xaf, 0x5e,
-0xc6, 0xb1, 0x0c, 0xe7, 0xde, 0x41, 0x4b, 0x59,
-0xe0, 0xe4, 0x81, 0x5e, 0x94, 0x68, 0xa1, 0x86,
-0x99, 0x86, 0x99, 0xed, 0xeb, 0xe3, 0x85, 0x06,
-0xf4, 0xe7, 0xa9, 0x8a, 0x69, 0x40, 0x68, 0xfa,
-0x21, 0x29, 0xd4, 0xc3, 0x23, 0x2e, 0xae, 0xee,
-0x54, 0x37, 0x50, 0x1b, 0x10, 0x9e, 0xce, 0x5c,
-0x0e, 0xa0, 0xce, 0xac, 0xc7, 0xd0, 0x45, 0x00,
-0x18, 0xbb, 0x23, 0x27, 0x69, 0x7b, 0x88, 0xa5,
-0xe4, 0xec, 0x3a, 0x70, 0x08, 0xdc, 0x78, 0xe2,
-0xb2, 0xa3, 0x53, 0x1f, 0xba, 0x4e, 0xdd, 0xd3,
-0xdb, 0xd3, 0xdd, 0x63, 0x61, 0x45, 0x0f, 0x63,
-0x02, 0xf1, 0xed, 0x00, 0xa8, 0xd4, 0x3f, 0x3c,
-0x32, 0x2e, 0xc8, 0xc9, 0x39, 0x7a, 0xec, 0x03,
-0x2a, 0x91, 0x1f, 0x14, 0x0a, 0x6c, 0x9e, 0x80,
-0xf4, 0x13, 0x90, 0xae, 0x0a, 0x55, 0x85, 0x7a,
-0x68, 0xb4, 0xa7, 0xaf, 0xb7, 0xa7, 0x77, 0x80,
-0x58, 0x04, 0x86, 0x0f, 0xd1, 0xf4, 0xa6, 0x6c,
-0x41, 0x22, 0xe4, 0x7c, 0x77, 0x4f, 0x7f, 0xff,
-0xe0, 0x30, 0x54, 0x9a, 0x8f, 0xcf, 0x5e, 0x00,
-0x3f, 0x1f, 0x3e, 0x42, 0x93, 0x90, 0x4b, 0x06,
-0xb3, 0x20, 0x38, 0xcf, 0xaa, 0x87, 0x60, 0xcb,
-0xf4, 0xf7, 0xf6, 0xa9, 0xf1, 0xae, 0xc5, 0xde,
-0x1e, 0x1a, 0x6e, 0xf4, 0x1e, 0x2f, 0x0a, 0x2c,
-0x0c, 0x90, 0xbb, 0x98, 0xcc, 0xbb, 0xc0, 0xa2,
-0x65, 0xa3, 0xc0, 0xee, 0xb8, 0x81, 0x5e, 0x42,
-0x4c, 0xa1, 0x7f, 0x60, 0xe0, 0xba, 0x8b, 0xfb,
-0x61, 0x1b, 0xa7, 0xb1, 0x1e, 0x3e, 0x26, 0x10,
-0x8a, 0x46, 0xc6, 0xc6, 0x30, 0x52, 0x7d, 0xe6,
-0x6d, 0xc5, 0x77, 0x1d, 0xb7, 0xef, 0xac, 0x92,
-0xd0, 0xaa, 0xcb, 0x53, 0x89, 0xa6, 0x44, 0x2f,
-0x86, 0x63, 0x60, 0x00, 0x2e, 0xba, 0x2a, 0xab,
-0x6a, 0x93, 0x53, 0xd2, 0xdc, 0x3c, 0x7c, 0x3e,
-0xf8, 0xf0, 0xf4, 0x21, 0x46, 0x01, 0xd8, 0xfb,
-0xf8, 0x21, 0x60, 0xf6, 0x36, 0x93, 0xc0, 0x27,
-0x6c, 0xe3, 0xcb, 0xb9, 0x0e, 0xa2, 0x4c, 0xf3,
-0x99, 0xd9, 0x56, 0x87, 0x8f, 0x1d, 0x80, 0x1d,
-0x74, 0xe4, 0x24, 0x03, 0x87, 0x4f, 0x1c, 0x3c,
-0x72, 0xfc, 0xc0, 0xe1, 0x23, 0x07, 0x0e, 0x1f,
-0x3d, 0x48, 0xf2, 0xfc, 0xd0, 0x59, 0xf7, 0x63,
-0x49, 0x63, 0xc7, 0xd3, 0xf0, 0x1b, 0xd1, 0x13,
-0x14, 0x32, 0xe6, 0x68, 0x17, 0x6a, 0x07, 0x20,
-0xff, 0xf3, 0x96, 0xf3, 0xba, 0x07, 0xbe, 0xf1,
-0xb5, 0x6f, 0x7c, 0x7b, 0xe3, 0x87, 0xb1, 0xc7,
-0xd2, 0xe7, 0x76, 0xfb, 0xd7, 0xfd, 0xf0, 0xd1,
-0x67, 0xbf, 0xf9, 0xbd, 0x9f, 0x3f, 0xf8, 0xbd,
-0xff, 0xfc, 0xd6, 0xf7, 0xfe, 0xe3, 0xdb, 0xdf,
-0xfb, 0x31, 0x41, 0xfe, 0xfd, 0x1f, 0x7f, 0xf0,
-0xd0, 0xbf, 0x3d, 0xfa, 0xe4, 0x73, 0x07, 0x7d,
-0xde, 0x8b, 0x1a, 0x3e, 0x96, 0x30, 0xf6, 0xcb,
-0xe7, 0xdf, 0x5d, 0x77, 0xff, 0x03, 0xdf, 0xf9,
-0xc1, 0xcf, 0x5e, 0x75, 0x55, 0x1c, 0x4f, 0x9f,
-0x07, 0x56, 0x94, 0x1b, 0xb6, 0xe9, 0x00, 0x73,
-0x20, 0xe8, 0x78, 0xda, 0x1c, 0x42, 0xfa, 0xfc,
-0x09, 0x02, 0x47, 0xd3, 0xf4, 0x30, 0x7b, 0x8c,
-0x10, 0x03, 0x25, 0xab, 0x06, 0xd3, 0x3d, 0x46,
-0x97, 0xa4, 0xb3, 0x4c, 0xd2, 0x0c, 0x74, 0x96,
-0xea, 0x4c, 0xba, 0x66, 0x56, 0x88, 0x67, 0xcc,
-0x1d, 0x63, 0xbb, 0xb0, 0xf6, 0x78, 0x3a, 0x99,
-0xcd, 0x98, 0x3f, 0x96, 0x36, 0x4f, 0x38, 0xcf,
-0xb1, 0x38, 0x76, 0x8f, 0xf1, 0xcc, 0x67, 0x39,
-0xb3, 0xde, 0xa0, 0x0c, 0xd9, 0x71, 0x18, 0x39,
-0x96, 0xca, 0x9f, 0x65, 0xbe, 0x4c, 0xa6, 0x5a,
-0x51, 0x38, 0x9d, 0x8d, 0xd5, 0xf6, 0x9c, 0x10,
-0xef, 0xaa, 0xba, 0x90, 0x63, 0x70, 0xc8, 0x35,
-0x38, 0x88, 0x99, 0x1b, 0xab, 0x3c, 0x8a, 0x16,
-0xfc, 0x4a, 0x17, 0x03, 0x64, 0x4b, 0xb7, 0x54,
-0x2b, 0x00, 0x51, 0xd5, 0xc6, 0x98, 0x1a, 0x53,
-0x5c, 0x9d, 0x31, 0xbe, 0xce, 0x98, 0xda, 0xb8,
-0x94, 0xda, 0x64, 0x8c, 0xab, 0x5e, 0x89, 0x54,
-0xce, 0x05, 0x95, 0xeb, 0xa2, 0xe4, 0x93, 0x63,
-0xfa, 0x4f, 0x7e, 0x84, 0xef, 0x3d, 0x01, 0xf3,
-0x0b, 0x0b, 0x91, 0x31, 0xb1, 0xaf, 0xbf, 0xb9,
-0xfb, 0xc0, 0xc1, 0xc3, 0x50, 0x02, 0xbc, 0x7c,
-0x82, 0xa2, 0x62, 0x12, 0xa1, 0x70, 0x94, 0x41,
-0x09, 0xae, 0xc7, 0xfb, 0x86, 0xfb, 0x06, 0xd4,
-0x93, 0x53, 0xcc, 0x17, 0xd1, 0xfc, 0x53, 0x30,
-0x94, 0x60, 0x28, 0xca, 0x70, 0x16, 0x86, 0xb9,
-0xb1, 0x89, 0xe9, 0xa1, 0x91, 0xf1, 0xbe, 0x81,
-0x61, 0x52, 0x85, 0xbb, 0x1b, 0x1a, 0x5b, 0xaa,
-0x6b, 0x1a, 0xa4, 0xb2, 0x8a, 0xe2, 0xd2, 0x72,
-0x71, 0x7e, 0x89, 0x20, 0x47, 0x02, 0x97, 0xb5,
-0x70, 0x36, 0x8c, 0x89, 0x4b, 0x0e, 0x8b, 0x8c,
-0x09, 0x09, 0x8d, 0x0c, 0xb8, 0x11, 0xea, 0x17,
-0x18, 0x1c, 0x78, 0x23, 0xe4, 0x56, 0x48, 0x74,
-0x50, 0x70, 0x58, 0x00, 0x9c, 0x91, 0x03, 0x6f,
-0x06, 0xdc, 0xb8, 0xe9, 0x1b, 0x70, 0xd3, 0xd7,
-0xff, 0xa6, 0xaf, 0xdf, 0x0d, 0x1f, 0xbf, 0x20,
-0x0f, 0xdf, 0x00, 0x6f, 0xdf, 0x40, 0x77, 0x6f,
-0x5f, 0x0f, 0x1f, 0x7f, 0x68, 0x01, 0x2e, 0x39,
-0x38, 0x02, 0x5c, 0xb8, 0xe8, 0x70, 0xf1, 0xd2,
-0x95, 0x4b, 0x97, 0x29, 0x7e, 0xe5, 0xe2, 0x25,
-0x47, 0x80, 0x4b, 0x0e, 0x57, 0xf0, 0x2d, 0x09,
-0x97, 0xb0, 0x7b, 0xd9, 0xc1, 0x09, 0xba, 0x1e,
-0xee, 0xfe, 0x74, 0xad, 0x17, 0x01, 0xca, 0x04,
-0x10, 0x6f, 0x5f, 0x7f, 0x8e, 0x27, 0x76, 0x01,
-0xf1, 0xf2, 0x85, 0xeb, 0x01, 0xe4, 0xe9, 0xe0,
-0x04, 0xed, 0xe5, 0x2b, 0x0c, 0x43, 0x22, 0x08,
-0xc5, 0x01, 0xce, 0x75, 0x39, 0x41, 0x97, 0x2e,
-0x5f, 0x61, 0x95, 0x71, 0x72, 0xbc, 0xea, 0x12,
-0x19, 0x13, 0xaf, 0xaa, 0xac, 0xee, 0xc5, 0x3b,
-0x8e, 0x47, 0xda, 0x3b, 0x3a, 0x6b, 0x1b, 0xea,
-0xe5, 0xca, 0x6a, 0xf0, 0x61, 0x49, 0xa9, 0xac,
-0xa8, 0x44, 0x06, 0x6d, 0x69, 0x99, 0xac, 0x4c,
-0xaa, 0x50, 0x56, 0x54, 0xd5, 0xd4, 0xd6, 0xb7,
-0x77, 0x74, 0x41, 0xbd, 0x1e, 0x1a, 0x1e, 0x52,
-0x56, 0xd4, 0xc6, 0x26, 0x24, 0x5e, 0xbd, 0xe6,
-0x02, 0x7c, 0xcc, 0xe2, 0x2e, 0xa3, 0x0e, 0x97,
-0x2e, 0x3b, 0x71, 0x5d, 0x2a, 0x17, 0x46, 0xd0,
-0x6a, 0x94, 0xcb, 0xe8, 0x73, 0xf9, 0xca, 0x55,
-0xaa, 0x1e, 0xb1, 0xfa, 0x9a, 0x9b, 0xa7, 0x9f,
-0x97, 0x6f, 0x80, 0x97, 0xb7, 0xbf, 0x97, 0xb7,
-0x9f, 0xa7, 0x8f, 0x9f, 0xa7, 0xb7, 0x9f, 0x17,
-0x9a, 0xe9, 0x07, 0xe0, 0x0d, 0xe3, 0xbe, 0x01,
-0x68, 0xb8, 0x17, 0x1a, 0xee, 0xed, 0x13, 0xe0,
-0x74, 0xcd, 0x15, 0x59, 0x5d, 0x76, 0x74, 0x70,
-0x44, 0x26, 0x17, 0x2e, 0x51, 0xb9, 0x57, 0xa9,
-0xa0, 0x8b, 0x97, 0xaf, 0x70, 0x82, 0x38, 0xc7,
-0x5e, 0xbc, 0x8c, 0x0e, 0x47, 0xb9, 0x0e, 0x8e,
-0xce, 0x2e, 0x1e, 0x94, 0x2d, 0x08, 0xf2, 0x40,
-0x60, 0xfc, 0x89, 0xae, 0x26, 0x08, 0x1d, 0xa1,
-0xb3, 0x5e, 0x84, 0xcc, 0xcb, 0x3b, 0x00, 0xe4,
-0x7a, 0xf9, 0x50, 0x0d, 0x03, 0x18, 0xf5, 0xbc,
-0x7c, 0x3d, 0xbc, 0xfd, 0x19, 0xad, 0x7c, 0x03,
-0x3d, 0xc8, 0x42, 0x0f, 0xa2, 0x3c, 0x8d, 0x3e,
-0xb2, 0xf2, 0xc2, 0xe8, 0xfb, 0x80, 0xfe, 0x5e,
-0xbe, 0x97, 0x1d, 0xae, 0x5a, 0x79, 0x83, 0xea,
-0x0c, 0x8a, 0x61, 0x7a, 0x10, 0x8b, 0xcc, 0xae,
-0x73, 0xa0, 0x34, 0x8e, 0xb4, 0x4b, 0x5a, 0xa4,
-0xa4, 0x19, 0x42, 0x1d, 0x4b, 0x3c, 0xec, 0x04,
-0x0e, 0xbf, 0x7c, 0x05, 0x1c, 0xe8, 0xeb, 0xee,
-0xe3, 0xe7, 0xed, 0x83, 0x6a, 0x80, 0xce, 0x68,
-0x82, 0x0f, 0xda, 0x88, 0x26, 0x60, 0xaa, 0x04,
-0x82, 0x02, 0xa0, 0x39, 0xb5, 0xf7, 0xda, 0x75,
-0x77, 0xe2, 0x25, 0x3b, 0xbe, 0x82, 0x2e, 0xfa,
-0xd3, 0x81, 0x4b, 0x4e, 0x70, 0x97, 0x27, 0xba,
-0xcb, 0x27, 0x90, 0x66, 0x32, 0xe3, 0x2e, 0x5f,
-0x74, 0x02, 0xd8, 0xe5, 0x41, 0x62, 0x44, 0x42,
-0x86, 0x31, 0xba, 0xee, 0x0a, 0x9c, 0x9d, 0x88,
-0x15, 0x4c, 0x4e, 0x02, 0x07, 0xe4, 0xcc, 0x13,
-0xe4, 0x74, 0xcd, 0xd9, 0x0b, 0xd4, 0xf0, 0x06,
-0x0d, 0xfd, 0xdd, 0x30, 0xa0, 0x16, 0xbe, 0x02,
-0xb6, 0x8c, 0xce, 0xbe, 0x18, 0x11, 0xda, 0xa5,
-0xbe, 0xc5, 0xae, 0x0f, 0x33, 0xeb, 0x41, 0x94,
-0xf1, 0xe2, 0xf6, 0x08, 0x5d, 0x4b, 0x33, 0xc7,
-0x9b, 0xd9, 0x35, 0x1e, 0x9e, 0xde, 0x0e, 0x8e,
-0x4e, 0xd4, 0x0a, 0x7e, 0x6e, 0x70, 0x2e, 0xbd,
-0xea, 0xec, 0xea, 0x45, 0xf8, 0x13, 0x5f, 0x05,
-0xb2, 0xac, 0x30, 0xb2, 0x14, 0xa7, 0x22, 0x08,
-0x67, 0x10, 0xcd, 0x76, 0xbd, 0x30, 0xa0, 0x54,
-0x2b, 0x26, 0x0d, 0x68, 0xe6, 0x78, 0x33, 0xca,
-0xf8, 0x40, 0x32, 0x78, 0xfb, 0xb9, 0xb9, 0x7b,
-0xc0, 0xe6, 0xe2, 0xb6, 0x24, 0xb7, 0x17, 0x78,
-0x5d, 0x6e, 0x1b, 0x3a, 0x92, 0xdc, 0xa0, 0xf9,
-0x69, 0x19, 0x5f, 0x07, 0x92, 0x1b, 0xcc, 0xee,
-0x76, 0xa2, 0x39, 0x70, 0x89, 0x8d, 0x1d, 0x6f,
-0xb3, 0x63, 0xf2, 0xa0, 0x2c, 0x74, 0xb2, 0xd3,
-0x25, 0x17, 0xff, 0xb3, 0x49, 0x5d, 0x58, 0x20,
-0x58, 0x80, 0xaa, 0x61, 0xd5, 0x1e, 0x4f, 0x18,
-0xfd, 0xf5, 0xb3, 0xbb, 0xf1, 0x9b, 0xe4, 0xef,
-0xfe, 0x78, 0xeb, 0x47, 0xa1, 0xe7, 0xb2, 0x34,
-0x67, 0x52, 0xc6, 0x3f, 0x4a, 0x1e, 0x39, 0x95,
-0x3e, 0x7e, 0x3a, 0x65, 0xe4, 0x64, 0xf2, 0xf4,
-0x99, 0x94, 0x51, 0xd2, 0x9d, 0x3c, 0x93, 0xa5,
-0xbb, 0x22, 0x36, 0x9c, 0x4a, 0x1c, 0xf8, 0xf5,
-0xb6, 0x0f, 0xd6, 0x3d, 0xf0, 0xf5, 0xaf, 0x3c,
-0xf0, 0xb5, 0x97, 0xcf, 0x84, 0x5f, 0x14, 0xe2,
-0xe0, 0x85, 0x5c, 0xc3, 0xf9, 0x1c, 0x3b, 0xfc,
-0x2f, 0x8b, 0xb0, 0x42, 0xc1, 0xc1, 0xf0, 0x62,
-0x0e, 0xc2, 0x25, 0xd2, 0x85, 0x41, 0x5b, 0x35,
-0xac, 0x00, 0xb8, 0x5d, 0xc9, 0x63, 0x70, 0x47,
-0x91, 0x8e, 0xd2, 0xd0, 0xb5, 0x80, 0x5c, 0x14,
-0x19, 0x2e, 0x91, 0xf6, 0x32, 0x0c, 0x92, 0x11,
-0xab, 0xf6, 0x32, 0x99, 0xe5, 0x46, 0x40, 0x43,
-0x4a, 0x0c, 0x08, 0x5f, 0x0a, 0x9d, 0xb5, 0x0b,
-0x94, 0xff, 0x05, 0x72, 0xeb, 0x14, 0x42, 0x1e,
-0x01, 0x52, 0x67, 0x1d, 0x25, 0xf8, 0x03, 0xa2,
-0xab, 0x12, 0x83, 0x5b, 0x11, 0x82, 0x57, 0x09,
-0xd6, 0xdc, 0x20, 0xd9, 0xd2, 0x4d, 0xc5, 0x72,
-0xb0, 0x72, 0x39, 0xa6, 0xda, 0x14, 0x5d, 0x6d,
-0x4c, 0xa8, 0x5f, 0x4d, 0x6e, 0x30, 0xa5, 0x34,
-0x9a, 0x04, 0xad, 0xcb, 0xc2, 0x36, 0xa3, 0xa0,
-0x75, 0x29, 0xad, 0x69, 0x35, 0xa9, 0x7e, 0x25,
-0xb1, 0x66, 0x21, 0x52, 0x31, 0x17, 0xa6, 0xd0,
-0x8d, 0x68, 0xbf, 0xfc, 0xba, 0xf9, 0x39, 0x82,
-0x46, 0xab, 0x87, 0x6d, 0xb4, 0x67, 0xef, 0xbe,
-0x13, 0x27, 0x3e, 0x84, 0x63, 0xa9, 0x5f, 0x40,
-0x70, 0x62, 0x4a, 0x9a, 0x28, 0xaf, 0xb0, 0x5c,
-0x56, 0x51, 0xdf, 0xd0, 0xdc, 0xd6, 0xd1, 0x3b,
-0x38, 0x44, 0x1f, 0x8a, 0x05, 0xa7, 0x60, 0xe6,
-0x5e, 0x2c, 0x5a, 0x82, 0x29, 0x0e, 0x07, 0x61,
-0xf2, 0x03, 0x61, 0xa8, 0xc2, 0x53, 0x03, 0x43,
-0x70, 0x25, 0x3c, 0xd4, 0xd5, 0xd3, 0xdf, 0xd2,
-0xd6, 0x53, 0xdf, 0xd8, 0x5a, 0x5d, 0xd3, 0x04,
-0x15, 0xa7, 0xa4, 0x54, 0x51, 0x50, 0x54, 0x26,
-0xca, 0x2b, 0x82, 0x73, 0x5f, 0x5a, 0x86, 0x20,
-0x25, 0x0d, 0xff, 0xbc, 0x0b, 0xb5, 0x38, 0x32,
-0x2a, 0x2e, 0x22, 0x2a, 0x2e, 0x38, 0x34, 0x32,
-0xe8, 0x56, 0x78, 0x70, 0x48, 0x44, 0xe0, 0x8d,
-0x5b, 0xfe, 0x81, 0xc1, 0x20, 0xdd, 0xdb, 0xff,
-0x06, 0x82, 0xdf, 0x0d, 0x2f, 0xbf, 0x20, 0x2f,
-0xbf, 0x40, 0x6f, 0xdf, 0x20, 0x2f, 0x9f, 0x40,
-0xfc, 0xdc, 0xf6, 0x0b, 0x44, 0xf0, 0x25, 0xe0,
-0xc3, 0x82, 0xb9, 0x4b, 0x3e, 0xdb, 0xe1, 0x33,
-0xc7, 0x3b, 0xc8, 0xcb, 0x0b, 0x3e, 0xea, 0x83,
-0xb0, 0xeb, 0x15, 0xe8, 0xe5, 0xcd, 0x92, 0x51,
-0x1a, 0x4f, 0xd2, 0x9a, 0x97, 0x04, 0x7a, 0xe2,
-0x47, 0x1f, 0xe2, 0x66, 0x41, 0xbe, 0x41, 0x0c,
-0x37, 0x0e, 0x21, 0x94, 0x96, 0x82, 0x08, 0xe2,
-0x0d, 0x48, 0x10, 0x59, 0x7b, 0xc3, 0xdf, 0x2f,
-0x24, 0x3c, 0x2a, 0x36, 0x2b, 0x27, 0x4f, 0x8e,
-0x3f, 0x07, 0xee, 0x82, 0xf3, 0x88, 0x7a, 0x68,
-0x44, 0x3d, 0x34, 0x4c, 0x61, 0x68, 0x78, 0x58,
-0x3d, 0x3c, 0x0c, 0xa7, 0xed, 0xf6, 0x8e, 0x6e,
-0x55, 0x65, 0x4d, 0xb6, 0x40, 0x1c, 0x1d, 0x9b,
-0xe0, 0x1f, 0x18, 0xe2, 0xcd, 0xd7, 0x9f, 0x11,
-0x47, 0xba, 0xf0, 0x41, 0xe4, 0x17, 0xc8, 0xca,
-0xb5, 0x54, 0x83, 0xd5, 0xdc, 0x8c, 0xfb, 0x06,
-0xc1, 0x47, 0x37, 0x75, 0x85, 0xa7, 0x05, 0x01,
-0x4b, 0xe6, 0x49, 0x5a, 0xc6, 0x2d, 0x3c, 0xef,
-0x79, 0x06, 0xda, 0x61, 0xcb, 0x57, 0x83, 0xb3,
-0xd7, 0xcc, 0x99, 0x25, 0xf3, 0xb4, 0x8c, 0x82,
-0x95, 0x67, 0xbc, 0x78, 0x0e, 0xf7, 0xe5, 0xac,
-0xe3, 0xd3, 0xb3, 0x94, 0xbe, 0x6c, 0xd7, 0x8b,
-0x20, 0x74, 0xa1, 0xa7, 0x45, 0x8c, 0x2c, 0x34,
-0x24, 0xf1, 0x45, 0xf0, 0x0e, 0xb0, 0xb1, 0x25,
-0xd0, 0xcc, 0x93, 0x71, 0x8b, 0x9f, 0x59, 0x3d,
-0x36, 0x6d, 0xbc, 0x39, 0x03, 0x09, 0x19, 0x26,
-0x0c, 0x97, 0x12, 0x5c, 0x82, 0x79, 0xb1, 0xdc,
-0xbc, 0x69, 0x0a, 0x81, 0xc4, 0x20, 0x36, 0x49,
-0x68, 0xd0, 0x21, 0x73, 0x7c, 0xbd, 0xcd, 0x46,
-0x05, 0x78, 0x59, 0xc4, 0x28, 0x80, 0x21, 0xb6,
-0x4a, 0x57, 0x9e, 0x5c, 0xb3, 0xd5, 0x36, 0x6e,
-0x21, 0xd1, 0xa4, 0x82, 0xfc, 0x2d, 0x6c, 0xe4,
-0x04, 0xa1, 0x07, 0xfc, 0xbc, 0xfd, 0x83, 0xd0,
-0x46, 0x9f, 0xb5, 0x7c, 0xc5, 0x1f, 0x21, 0xac,
-0x2c, 0xc8, 0x02, 0xdd, 0xe8, 0xd6, 0x80, 0x6b,
-0x21, 0x1f, 0xa8, 0xfb, 0x56, 0xcb, 0xf9, 0x09,
-0xcf, 0x3a, 0xc4, 0x37, 0xc0, 0x1c, 0x38, 0xa2,
-0x9e, 0xa7, 0xb7, 0xbf, 0x05, 0x99, 0x97, 0x65,
-0x0a, 0xb1, 0x31, 0x42, 0x41, 0x5c, 0xb0, 0xbc,
-0x38, 0x13, 0xcc, 0x3b, 0x11, 0xc3, 0x64, 0x65,
-0x82, 0x77, 0xa0, 0xa7, 0x97, 0x1f, 0xcd, 0x58,
-0x44, 0xd8, 0x90, 0x81, 0x4b, 0xbd, 0x7d, 0x03,
-0xbc, 0x7d, 0x83, 0xac, 0xdd, 0xc2, 0xcb, 0x40,
-0x5e, 0x7c, 0xf9, 0x1b, 0xc7, 0x9f, 0x11, 0xc4,
-0x7a, 0x86, 0x61, 0xc2, 0x12, 0xbb, 0x99, 0x3d,
-0x10, 0xe8, 0x15, 0x70, 0xd3, 0x33, 0xb9, 0xca,
-0xbd, 0x68, 0xce, 0xb3, 0x68, 0xc1, 0xb5, 0xd0,
-0x00, 0xad, 0x5d, 0x70, 0x2f, 0x34, 0x7c, 0x18,
-0x5e, 0xf3, 0xd0, 0x2f, 0x9f, 0x58, 0x77, 0xdf,
-0x03, 0x0f, 0x7e, 0xfb, 0x7b, 0x5b, 0x8f, 0xf9,
-0x9e, 0x4d, 0xee, 0xb9, 0x56, 0xa0, 0xf7, 0x28,
-0x59, 0x70, 0x29, 0xc6, 0x55, 0x50, 0x5f, 0xbc,
-0x8a, 0x17, 0xdc, 0x8b, 0x16, 0x1c, 0x45, 0x9a,
-0x23, 0x37, 0x15, 0xbf, 0x7d, 0xf1, 0xdd, 0xaf,
-0x7c, 0xf5, 0x9b, 0x5f, 0xff, 0xfa, 0xb7, 0x9e,
-0xdc, 0x7e, 0xc8, 0x39, 0x6f, 0xca, 0xb3, 0x78,
-0xc1, 0x8d, 0xd0, 0x00, 0xb2, 0x96, 0x88, 0x3b,
-0x04, 0x37, 0x16, 0xf1, 0x28, 0x24, 0xdc, 0x8a,
-0x2d, 0xa6, 0xdc, 0x59, 0x1c, 0x6d, 0x29, 0x5e,
-0x70, 0x2d, 0xc2, 0x9b, 0x9a, 0xe0, 0xbc, 0xe9,
-0x45, 0xc8, 0xdc, 0x88, 0xaa, 0x5c, 0x0b, 0xe3,
-0xee, 0x64, 0x9c, 0x9b, 0xf5, 0x62, 0xbb, 0x6e,
-0x45, 0x0c, 0xd0, 0x71, 0xae, 0x0b, 0x6c, 0x01,
-0xcc, 0xb3, 0x44, 0x01, 0xba, 0xd0, 0xab, 0x98,
-0xe9, 0x02, 0xe2, 0x0d, 0xd5, 0x56, 0xba, 0xe4,
-0x5b, 0xbe, 0xe4, 0x2f, 0x5d, 0x0a, 0x90, 0x2e,
-0x85, 0x28, 0x96, 0xc2, 0x94, 0xab, 0xe1, 0xaa,
-0x55, 0xa8, 0xb9, 0x31, 0xd5, 0xc6, 0xd4, 0x86,
-0x65, 0xa8, 0xb9, 0x19, 0xcd, 0x50, 0x76, 0xa1,
-0xe6, 0x2e, 0x8a, 0xdb, 0x57, 0xc5, 0x1d, 0xc6,
-0x9c, 0xb6, 0x25, 0x61, 0xbb, 0x31, 0xb3, 0xd9,
-0x90, 0x54, 0xbf, 0x14, 0x53, 0x31, 0x17, 0xa9,
-0x9a, 0xab, 0x1e, 0x5c, 0xb8, 0x87, 0x9e, 0x76,
-0x75, 0x87, 0xa0, 0x1e, 0x1a, 0xba, 0x70, 0xf9,
-0xca, 0xde, 0x7d, 0xef, 0x9c, 0xfc, 0xf0, 0xb4,
-0xe3, 0x35, 0x97, 0xc0, 0xe0, 0xf0, 0xc4, 0xe4,
-0xb4, 0x5c, 0x71, 0xb1, 0x54, 0x51, 0x55, 0xdb,
-0xd0, 0xd8, 0xd9, 0x3d, 0xd8, 0xaf, 0x1e, 0x1f,
-0x9b, 0xc4, 0x2f, 0xa2, 0xb5, 0x3a, 0xfa, 0xcc,
-0x0a, 0xf3, 0x77, 0xd1, 0xe4, 0xd6, 0x68, 0x1d,
-0xf9, 0xa3, 0x30, 0xbe, 0xd9, 0x64, 0x74, 0x7c,
-0x42, 0x3d, 0x3c, 0x36, 0xa0, 0x1e, 0xe9, 0xec,
-0x1e, 0x68, 0xeb, 0xec, 0x6e, 0x6e, 0xed, 0xac,
-0x6f, 0x6c, 0xae, 0xaa, 0x6d, 0x54, 0xaa, 0xf0,
-0xe7, 0x0f, 0xa5, 0xe5, 0xf2, 0x82, 0x22, 0xfc,
-0x29, 0x81, 0x50, 0x94, 0x9f, 0x2d, 0x14, 0xa7,
-0x65, 0xe6, 0xa4, 0xa6, 0x0b, 0x53, 0xd2, 0xb2,
-0x92, 0x52, 0xd2, 0xc8, 0x9d, 0x2d, 0x29, 0x31,
-0x71, 0x29, 0xb1, 0xf1, 0x29, 0xd1, 0xb1, 0xc9,
-0x51, 0x00, 0x31, 0x49, 0xd1, 0xb1, 0x29, 0x51,
-0xb1, 0x49, 0x80, 0x20, 0xc4, 0x26, 0x93, 0x71,
-0x32, 0x48, 0xba, 0x91, 0x31, 0x09, 0x14, 0x28,
-0x31, 0x19, 0x64, 0xc6, 0x01, 0x8f, 0x8c, 0x66,
-0xa7, 0xe8, 0x08, 0xaf, 0xe5, 0x77, 0xcd, 0x23,
-0xdc, 0x20, 0xb2, 0x4a, 0x24, 0x48, 0x22, 0xc3,
-0x16, 0x90, 0xd8, 0x24, 0xbc, 0xa1, 0x8b, 0x21,
-0x48, 0x24, 0x5a, 0x25, 0x46, 0x46, 0xb3, 0x23,
-0x64, 0x36, 0x26, 0x9e, 0x72, 0x4b, 0x04, 0x13,
-0xc0, 0x9c, 0xd4, 0x74, 0x41, 0x96, 0x20, 0x57,
-0x20, 0xca, 0x15, 0xe4, 0xe4, 0x66, 0x66, 0x8b,
-0x92, 0xd3, 0xb2, 0x12, 0x93, 0xd3, 0xc1, 0xc0,
-0xe8, 0xb8, 0x04, 0xc2, 0x3f, 0xde, 0x5a, 0x19,
-0x9e, 0x09, 0xec, 0x14, 0x23, 0x88, 0x55, 0x83,
-0x67, 0x20, 0x75, 0x11, 0xeb, 0x1c, 0xce, 0x15,
-0xb6, 0x96, 0x5a, 0x4d, 0x31, 0xe3, 0x51, 0x09,
-0x1c, 0x2b, 0x76, 0x9c, 0x31, 0xd0, 0x46, 0x8d,
-0x78, 0xea, 0x0d, 0x4b, 0x55, 0xad, 0x19, 0x52,
-0x25, 0xad, 0x3c, 0x6c, 0xe5, 0x49, 0xce, 0x22,
-0x3e, 0x2b, 0xbb, 0x4a, 0xda, 0x1a, 0x62, 0x25,
-0x88, 0x70, 0x8b, 0xb7, 0xf6, 0x55, 0x34, 0xdf,
-0x15, 0x89, 0x56, 0x06, 0xda, 0xb4, 0x68, 0x2f,
-0xdf, 0x96, 0xb5, 0xc0, 0x42, 0x2e, 0x89, 0x2f,
-0x08, 0x8a, 0x64, 0xbb, 0xfc, 0x28, 0x30, 0xa9,
-0x12, 0x63, 0x11, 0x5f, 0x86, 0x38, 0x36, 0x39,
-0x22, 0x2a, 0x9e, 0x6f, 0xfe, 0x5a, 0xde, 0xa0,
-0x94, 0xb7, 0x0f, 0x37, 0xe3, 0x81, 0xe8, 0x04,
-0xce, 0x5e, 0x5b, 0x5f, 0xd9, 0x06, 0xd4, 0x92,
-0x80, 0xaf, 0x55, 0x82, 0x45, 0x7a, 0xaf, 0xed,
-0x76, 0x7b, 0x39, 0x99, 0x68, 0xe9, 0x2e, 0x7b,
-0x19, 0x4b, 0x76, 0x0a, 0xab, 0xa7, 0x79, 0x3b,
-0x5b, 0xa7, 0x90, 0xdd, 0x1d, 0xca, 0xc5, 0x9a,
-0xf5, 0x46, 0x74, 0xbc, 0x85, 0x81, 0xfc, 0x80,
-0xb2, 0x42, 0x13, 0x58, 0x8b, 0xe2, 0xa3, 0x2c,
-0x37, 0x8e, 0x65, 0x4e, 0xf2, 0xf5, 0x64, 0xb6,
-0x03, 0xde, 0xbe, 0x18, 0x97, 0x12, 0x92, 0x5d,
-0x15, 0xa2, 0x5c, 0x8a, 0x50, 0x1a, 0x6e, 0x29,
-0xf0, 0xe6, 0x9f, 0x10, 0xd5, 0x2a, 0x03, 0xca,
-0x15, 0x04, 0xb6, 0x1b, 0x0a, 0x53, 0x8a, 0xe5,
-0x4b, 0x31, 0x35, 0x8f, 0x3d, 0xb1, 0xfe, 0x81,
-0xfb, 0x1e, 0x78, 0x60, 0xdd, 0x57, 0x1f, 0xfa,
-0xd5, 0xe3, 0xaf, 0x9f, 0xf4, 0xbe, 0x10, 0x26,
-0xbf, 0x2e, 0x18, 0xf6, 0x2d, 0x9c, 0xf2, 0x92,
-0x4c, 0x5e, 0x4b, 0xef, 0x3d, 0xe6, 0x23, 0x7a,
-0xe1, 0xad, 0xd3, 0xff, 0xf2, 0xfd, 0xff, 0xb8,
-0xef, 0x1f, 0xd6, 0x7d, 0xed, 0xeb, 0x0f, 0x6e,
-0xdd, 0xfb, 0xb1, 0xa7, 0x64, 0x92, 0xb2, 0xa5,
-0xfc, 0xf9, 0x22, 0x42, 0xed, 0x09, 0xba, 0x4d,
-0x97, 0x2e, 0x8f, 0xa8, 0x40, 0x84, 0x8e, 0x73,
-0x0c, 0x43, 0x2b, 0x56, 0xad, 0xc8, 0xf8, 0x88,
-0x15, 0x31, 0xd7, 0xa5, 0x34, 0x76, 0x67, 0x81,
-0x21, 0xf2, 0xa4, 0x04, 0x96, 0x3c, 0xa1, 0x0d,
-0x92, 0x2f, 0x73, 0xe6, 0xf0, 0x81, 0xaa, 0x01,
-0x1a, 0x46, 0x54, 0x02, 0x18, 0xa3, 0xab, 0x10,
-0xa0, 0xe0, 0x26, 0xd5, 0x2d, 0xa5, 0x36, 0x99,
-0xd2, 0x9a, 0x56, 0x32, 0x9a, 0x8d, 0xa2, 0xd6,
-0x15, 0x51, 0x9b, 0x29, 0xaf, 0x7d, 0xb5, 0xb0,
-0xcb, 0x98, 0xdf, 0x6d, 0x2a, 0xe9, 0x31, 0x15,
-0xf7, 0x98, 0xf2, 0x3b, 0x8d, 0x79, 0x9d, 0xc6,
-0x9c, 0x56, 0xa8, 0xcb, 0xcb, 0x09, 0xd5, 0x0b,
-0xe1, 0xca, 0x45, 0x55, 0xef, 0xea, 0xf2, 0xbd,
-0xf0, 0x9e, 0xc1, 0xbb, 0x05, 0xe3, 0xff, 0x35,
-0xb6, 0xb6, 0x77, 0x1c, 0x3f, 0xfe, 0xc1, 0xbb,
-0xfb, 0x0f, 0x7c, 0xf0, 0xd1, 0x99, 0x6b, 0x2e,
-0x1e, 0x81, 0xb7, 0xa0, 0x04, 0xa7, 0xe7, 0x8a,
-0x8b, 0xe0, 0x14, 0x5c, 0x5b, 0xdf, 0xd0, 0xda,
-0xde, 0x83, 0xcf, 0x6d, 0x18, 0x9f, 0x9a, 0x9a,
-0x86, 0x53, 0x30, 0x79, 0x30, 0xd0, 0xfc, 0x3c,
-0xbf, 0x0a, 0x03, 0x40, 0x15, 0xd6, 0x68, 0x75,
-0x70, 0x16, 0x9e, 0x9a, 0xd6, 0x8e, 0x8e, 0x4f,
-0x0e, 0x8f, 0x8e, 0x91, 0xd7, 0x27, 0xf5, 0x77,
-0xf7, 0xf6, 0xc1, 0x21, 0xba, 0xa9, 0xa5, 0xbd,
-0xae, 0xa1, 0xad, 0xa6, 0xb6, 0x5e, 0x55, 0x59,
-0xaf, 0xac, 0xa8, 0x96, 0x29, 0x94, 0x65, 0xe5,
-0xca, 0x92, 0x72, 0x79, 0x71, 0xa9, 0x54, 0x52,
-0x50, 0x9a, 0x5f, 0x50, 0x2c, 0x96, 0x14, 0xe7,
-0x8a, 0x0b, 0xe1, 0xdc, 0x2d, 0xcc, 0x15, 0x0b,
-0x73, 0x25, 0x39, 0xb9, 0xf9, 0x82, 0x9c, 0xbc,
-0xec, 0x1c, 0xb1, 0x50, 0x24, 0x16, 0xe5, 0x61,
-0xb1, 0x86, 0x71, 0x41, 0x0e, 0x82, 0x30, 0x97,
-0x8e, 0xe7, 0x01, 0xb0, 0x23, 0xe2, 0x6c, 0x82,
-0x64, 0x0b, 0xf3, 0x04, 0x22, 0x32, 0x4b, 0x68,
-0xb0, 0x9b, 0x23, 0xce, 0x12, 0x88, 0xe9, 0x5f,
-0x5d, 0x85, 0xa4, 0xcd, 0xc9, 0x2d, 0xa0, 0x9c,
-0x05, 0x84, 0x09, 0x19, 0x97, 0x08, 0x72, 0x24,
-0xd0, 0x66, 0x09, 0xb0, 0x4b, 0x56, 0x41, 0x37,
-0x9f, 0xe0, 0xb0, 0x04, 0xbb, 0xa0, 0x0f, 0x8c,
-0x13, 0xad, 0x80, 0x58, 0x9c, 0x93, 0x57, 0x80,
-0x1c, 0x44, 0xa8, 0x6a, 0xb6, 0x50, 0x22, 0x60,
-0xa4, 0x8b, 0x29, 0x67, 0x10, 0x81, 0xd2, 0x09,
-0x01, 0x0c, 0x66, 0xe7, 0x10, 0x0e, 0x79, 0x05,
-0xa8, 0x09, 0x0a, 0x45, 0x73, 0xa8, 0x81, 0x22,
-0x1c, 0xcc, 0xa3, 0xe3, 0x84, 0x3e, 0x8f, 0xf2,
-0xa1, 0xea, 0x31, 0x20, 0xa2, 0x7c, 0xf2, 0xa8,
-0x39, 0xb4, 0xcb, 0x20, 0x66, 0x1a, 0x9c, 0x42,
-0x9e, 0x38, 0x2b, 0x41, 0x27, 0x10, 0x62, 0xa1,
-0xa8, 0x80, 0xf8, 0x07, 0x34, 0xcc, 0x47, 0x07,
-0xd2, 0x71, 0x11, 0xd5, 0x30, 0x8f, 0xf5, 0x86,
-0x7d, 0x41, 0xe8, 0x55, 0x62, 0x32, 0x75, 0x02,
-0x8d, 0x05, 0x99, 0x25, 0x1e, 0x13, 0x81, 0x63,
-0xf3, 0x72, 0xf2, 0xc4, 0xac, 0x2d, 0x12, 0xc6,
-0x52, 0xe4, 0x99, 0x9f, 0xcd, 0x06, 0x85, 0xf2,
-0x67, 0x14, 0xa3, 0x6e, 0x27, 0xac, 0xd8, 0x08,
-0xe6, 0x53, 0xd1, 0xd4, 0x63, 0x8c, 0x32, 0x18,
-0xf1, 0x82, 0x6c, 0x7b, 0x5a, 0x51, 0x13, 0x04,
-0xf8, 0xb7, 0xf5, 0x7c, 0xe2, 0x46, 0x26, 0xbe,
-0x64, 0x9c, 0xcf, 0x59, 0x42, 0xc3, 0xc4, 0x31,
-0xe7, 0x3c, 0x46, 0xe5, 0x42, 0xc8, 0x70, 0x39,
-0xe1, 0x93, 0x2d, 0xcc, 0x25, 0x16, 0x15, 0xb0,
-0xa6, 0x59, 0x68, 0xc5, 0x86, 0x8c, 0xf1, 0x12,
-0x2c, 0x01, 0x1a, 0x9a, 0x90, 0x34, 0xc1, 0xf8,
-0xbe, 0x22, 0x6b, 0x25, 0xd4, 0x39, 0xd6, 0x9e,
-0x44, 0x59, 0x12, 0x22, 0x17, 0xf9, 0xa0, 0x81,
-0x42, 0xd6, 0x1b, 0x42, 0x92, 0x45, 0x9c, 0xa5,
-0x39, 0xe2, 0x5c, 0x71, 0x01, 0xe1, 0xc6, 0xa4,
-0x28, 0x97, 0x57, 0x44, 0x07, 0xde, 0x2a, 0x91,
-0x84, 0x4d, 0x15, 0x9a, 0xf3, 0x94, 0x83, 0x84,
-0x28, 0x99, 0xc7, 0x0f, 0x2b, 0x3f, 0x46, 0xe8,
-0x40, 0xd4, 0x13, 0xe9, 0x61, 0x90, 0xf8, 0x2a,
-0x9f, 0xba, 0x4e, 0xc0, 0xd8, 0x8e, 0xb9, 0x4a,
-0x39, 0xb3, 0xd2, 0x99, 0x9d, 0xc2, 0xe8, 0x6c,
-0x56, 0x00, 0xe9, 0x99, 0x0c, 0x21, 0x9e, 0xcf,
-0xe6, 0xfb, 0x1c, 0xd3, 0x9e, 0x31, 0x9f, 0xda,
-0x0b, 0xba, 0x91, 0x5d, 0x4c, 0x93, 0x90, 0xee,
-0x26, 0x76, 0xf3, 0xd2, 0xbd, 0xc6, 0x25, 0x83,
-0x90, 0xb3, 0x88, 0xc4, 0x5d, 0x44, 0xf3, 0x87,
-0x11, 0x41, 0x73, 0x98, 0x68, 0x45, 0xf7, 0x29,
-0x7f, 0xc3, 0xd2, 0x8c, 0x35, 0xef, 0x5f, 0x9a,
-0x93, 0x6c, 0xcb, 0x24, 0x09, 0xbb, 0x91, 0x25,
-0xac, 0x21, 0x6c, 0x32, 0xe4, 0xe4, 0xa5, 0x17,
-0xd6, 0xa6, 0xd4, 0xce, 0x27, 0xd6, 0x9b, 0x92,
-0xea, 0x8d, 0xc9, 0x8d, 0xab, 0x49, 0x0d, 0x46,
-0xc0, 0x29, 0x24, 0x10, 0x30, 0x77, 0xeb, 0x8c,
-0x09, 0xa4, 0x0d, 0x12, 0x75, 0xec, 0x78, 0xff,
-0xdc, 0x3f, 0x7d, 0xef, 0x87, 0x70, 0x10, 0xfe,
-0xca, 0x57, 0xbe, 0xfe, 0x9d, 0xef, 0xfc, 0xeb,
-0x4f, 0x7f, 0xf6, 0xe8, 0x4f, 0x1e, 0xf9, 0xc3,
-0xcf, 0x1f, 0xfd, 0xdd, 0x0f, 0x7e, 0xf2, 0xd0,
-0x37, 0x1f, 0xfc, 0xce, 0xba, 0x75, 0x5f, 0xf9,
-0xca, 0x57, 0xbf, 0xf1, 0xd0, 0x23, 0xbf, 0x3f,
-0x7e, 0x2d, 0x22, 0x42, 0xaa, 0x49, 0x6b, 0x5a,
-0x86, 0x85, 0xc0, 0x39, 0xbd, 0x11, 0x11, 0xe8,
-0x26, 0xf2, 0xd8, 0xda, 0x11, 0xb4, 0x76, 0x97,
-0xbf, 0x9c, 0x0e, 0x52, 0x9d, 0x93, 0x2c, 0x67,
-0x53, 0x1b, 0x57, 0x12, 0x89, 0x21, 0xd8, 0x6d,
-0x30, 0xa6, 0x36, 0xad, 0x24, 0x70, 0xb3, 0x6c,
-0x97, 0x6a, 0x45, 0x5b, 0x0a, 0x9c, 0xf9, 0x74,
-0x90, 0x53, 0x80, 0xf2, 0xe4, 0xd4, 0x00, 0x9a,
-0x94, 0xc6, 0xd5, 0x54, 0x62, 0x4b, 0x4a, 0xfd,
-0x52, 0x7c, 0xed, 0x2a, 0xe7, 0x1c, 0x90, 0x0b,
-0xb3, 0x80, 0xa4, 0x37, 0xc1, 0x31, 0x16, 0xab,
-0xad, 0xb0, 0xd5, 0x28, 0x6c, 0x35, 0x09, 0xda,
-0x4c, 0xa2, 0x76, 0x93, 0xa4, 0xc3, 0x24, 0xe9,
-0x36, 0x42, 0xa9, 0x2d, 0xeb, 0x35, 0x96, 0xf5,
-0x9a, 0x64, 0xfd, 0x26, 0x69, 0x9f, 0xa9, 0xbc,
-0x0f, 0xdb, 0xa2, 0x1e, 0x93, 0xa4, 0xcb, 0x94,
-0xd7, 0xb6, 0x22, 0x68, 0x5d, 0x49, 0xac, 0x5d,
-0x8c, 0x52, 0xe9, 0x4b, 0xba, 0x16, 0x0d, 0xf7,
-0xce, 0x7b, 0x16, 0xee, 0x16, 0x56, 0x4d, 0xab,
-0x32, 0xb9, 0xe2, 0x9d, 0x77, 0x0f, 0xec, 0x7b,
-0xe7, 0xe0, 0x99, 0xb3, 0x17, 0x5c, 0xdc, 0xbc,
-0x6f, 0x86, 0x86, 0x27, 0xa5, 0x64, 0xc0, 0x29,
-0xb8, 0x54, 0xaa, 0xac, 0xa9, 0x6b, 0x69, 0xeb,
-0xec, 0xe9, 0x85, 0x63, 0xed, 0xd8, 0x14, 0x7d,
-0x41, 0x03, 0x3e, 0xc5, 0x51, 0xaf, 0xb7, 0x2a,
-0xc1, 0x70, 0x30, 0x26, 0x8f, 0xac, 0xd4, 0x92,
-0xbb, 0xb3, 0x66, 0xc9, 0x1b, 0x0c, 0x47, 0xa0,
-0x0a, 0x0f, 0x0e, 0x8d, 0xf6, 0x0d, 0xa8, 0xbb,
-0x7a, 0xd4, 0xed, 0x9d, 0xdd, 0xed, 0xf8, 0x28,
-0x9b, 0xae, 0xc6, 0xa6, 0xb6, 0xba, 0x86, 0xd6,
-0xea, 0xda, 0xfa, 0xaa, 0x9a, 0x86, 0x4a, 0xf2,
-0x93, 0x1c, 0xa5, 0xaa, 0x56, 0xa5, 0xc2, 0x1f,
-0xdd, 0x2b, 0x54, 0x95, 0x52, 0x7c, 0x14, 0x43,
-0xa5, 0x4c, 0x21, 0x97, 0xca, 0x95, 0x00, 0xe5,
-0x72, 0x39, 0xfe, 0x5a, 0x5f, 0x26, 0x23, 0xc0,
-0x74, 0xcb, 0x64, 0x52, 0x80, 0x72, 0x99, 0x1c,
-0x46, 0xa4, 0x0a, 0x65, 0x69, 0x39, 0x99, 0x95,
-0x2b, 0xe4, 0x0a, 0x45, 0x99, 0x54, 0x8e, 0xb3,
-0x52, 0x05, 0xe9, 0x2a, 0x71, 0x09, 0x5d, 0x28,
-0x83, 0x71, 0x98, 0x55, 0x92, 0x85, 0x2a, 0x5c,
-0xcb, 0xb2, 0x82, 0x59, 0xb9, 0x42, 0x25, 0x95,
-0xc9, 0x41, 0x6e, 0x69, 0x39, 0xce, 0xc2, 0x72,
-0x20, 0x96, 0xe2, 0x23, 0x2c, 0xa4, 0xe4, 0xb1,
-0x00, 0x0a, 0xa0, 0x07, 0x02, 0x64, 0x2b, 0xa3,
-0x3c, 0x51, 0xae, 0x14, 0x15, 0x40, 0x3d, 0xc9,
-0x78, 0x05, 0x61, 0x58, 0x51, 0x8e, 0x7c, 0x80,
-0x40, 0x05, 0x5a, 0x95, 0x49, 0x65, 0x32, 0x5c,
-0x5b, 0x21, 0x67, 0x95, 0x24, 0x94, 0x0c, 0x67,
-0x54, 0x15, 0x04, 0x11, 0x55, 0xd1, 0x52, 0x62,
-0x0e, 0x37, 0x42, 0x65, 0x41, 0x4b, 0x95, 0xa4,
-0x04, 0x44, 0xab, 0x4a, 0x86, 0x46, 0x46, 0xfc,
-0x83, 0x34, 0x52, 0xb4, 0x8b, 0xd1, 0xad, 0xa2,
-0x0c, 0x69, 0xa1, 0xcb, 0x39, 0x87, 0x5a, 0x84,
-0x5a, 0x11, 0x1a, 0x19, 0x27, 0x05, 0xac, 0xb6,
-0x75, 0x0e, 0x27, 0x08, 0x57, 0xc9, 0x2c, 0xbc,
-0x41, 0xed, 0xa5, 0x0b, 0x29, 0x2b, 0x30, 0x90,
-0xa8, 0x2a, 0x27, 0x16, 0xc1, 0x94, 0x92, 0xf8,
-0x4a, 0xc6, 0x2a, 0x46, 0x65, 0xc9, 0xcd, 0x6e,
-0x67, 0xec, 0x52, 0x41, 0x7c, 0xa9, 0xbd, 0x7c,
-0x7d, 0x28, 0x31, 0xd0, 0x80, 0xaf, 0xa4, 0x0a,
-0xbe, 0xbd, 0x72, 0x6a, 0x8e, 0x4c, 0x01, 0x5d,
-0x05, 0x55, 0xc3, 0x2a, 0xbe, 0x2c, 0x07, 0xd4,
-0x99, 0x58, 0x2a, 0xe7, 0x22, 0x45, 0x81, 0xb8,
-0x48, 0xc9, 0x59, 0x04, 0x1c, 0x64, 0x0a, 0xc6,
-0x22, 0x7e, 0x5e, 0xb1, 0x5e, 0x85, 0xd9, 0x0a,
-0xf3, 0x72, 0x39, 0x89, 0x11, 0xe6, 0x80, 0x92,
-0x04, 0x8b, 0x11, 0x64, 0xdf, 0x57, 0x52, 0x25,
-0x13, 0x32, 0x85, 0x92, 0xe4, 0x30, 0x2c, 0x64,
-0xb4, 0xe2, 0xfc, 0xcc, 0xc5, 0x9a, 0xa4, 0x22,
-0xa6, 0x4a, 0xb9, 0x9c, 0x71, 0x9a, 0x14, 0x95,
-0xc7, 0xac, 0x23, 0xae, 0xe0, 0xb4, 0xe2, 0x65,
-0x2c, 0x99, 0x95, 0x11, 0x7d, 0x20, 0x63, 0x09,
-0x67, 0x42, 0x0c, 0x3a, 0x93, 0x18, 0x49, 0x15,
-0x66, 0xc7, 0xda, 0xc4, 0x48, 0xca, 0x85, 0x9b,
-0xd3, 0x99, 0x84, 0x4c, 0x49, 0x93, 0x84, 0x78,
-0x89, 0xea, 0x86, 0x3e, 0x21, 0xaa, 0x82, 0x4a,
-0x72, 0x2e, 0x3f, 0x69, 0x8c, 0xa4, 0x0a, 0xc6,
-0x57, 0x5c, 0x14, 0x48, 0x7a, 0xf3, 0xc2, 0xc1,
-0x73, 0x0e, 0xc7, 0x0a, 0x16, 0xd2, 0x08, 0xf2,
-0xd5, 0x20, 0x22, 0x50, 0x49, 0xa0, 0x67, 0x59,
-0x99, 0x33, 0x56, 0x46, 0x77, 0xb4, 0x94, 0x91,
-0x4b, 0xd3, 0x9b, 0xef, 0x1c, 0xbe, 0x27, 0x49,
-0xa2, 0x32, 0x51, 0x90, 0xe2, 0xa6, 0xae, 0xa4,
-0x21, 0x23, 0x79, 0x8e, 0x41, 0x91, 0x92, 0xdd,
-0x2a, 0x63, 0xed, 0x25, 0x5d, 0x15, 0xb1, 0x02,
-0xa3, 0x50, 0xac, 0x6c, 0x14, 0xb5, 0xe8, 0x0b,
-0x3b, 0x4d, 0x92, 0x76, 0x63, 0x7e, 0x97, 0x49,
-0xdc, 0x6e, 0xcc, 0xed, 0x34, 0x41, 0x17, 0x5a,
-0x7b, 0xdd, 0x15, 0x20, 0x83, 0x6e, 0x1e, 0x40,
-0xa3, 0xe1, 0x6a, 0x54, 0xee, 0xb6, 0x1d, 0x87,
-0xbf, 0xff, 0xe3, 0x9f, 0xdd, 0x7f, 0xdf, 0x03,
-0xf7, 0xfd, 0x9f, 0xfb, 0x38, 0x78, 0xf0, 0xc1,
-0x6f, 0x3f, 0xfc, 0xe8, 0x6f, 0xf6, 0x9f, 0x72,
-0x0d, 0xcf, 0x69, 0xcc, 0xe9, 0x58, 0xc9, 0xeb,
-0x32, 0x15, 0x74, 0x18, 0xf3, 0x3a, 0x4c, 0x00,
-0x05, 0x5d, 0xab, 0x79, 0x04, 0x47, 0x9e, 0x1d,
-0x58, 0x71, 0x80, 0xa1, 0xa8, 0xf3, 0xee, 0xba,
-0xa0, 0x15, 0x00, 0xed, 0x52, 0x25, 0x45, 0x54,
-0x25, 0xc2, 0x16, 0xba, 0x05, 0x30, 0x88, 0xb2,
-0x4c, 0x56, 0x82, 0x28, 0x31, 0x7f, 0x56, 0xdc,
-0x85, 0x00, 0xb3, 0xf9, 0x5d, 0x26, 0xfe, 0x2c,
-0x15, 0x91, 0xd3, 0x8e, 0xab, 0xf8, 0xb3, 0xe8,
-0x87, 0x36, 0xa3, 0x84, 0xcc, 0x72, 0x6b, 0xd1,
-0xb4, 0x4e, 0x53, 0x4e, 0xc7, 0x2a, 0xa8, 0x41,
-0x01, 0x88, 0xf3, 0x3a, 0x57, 0x0b, 0xba, 0xb0,
-0xd4, 0x96, 0xf6, 0x18, 0x01, 0x8a, 0x7b, 0xb1,
-0xce, 0x96, 0xb1, 0xd5, 0x56, 0x35, 0x88, 0xa0,
-0x18, 0x60, 0x00, 0xab, 0x70, 0xaf, 0xa9, 0xa0,
-0xcd, 0x98, 0xdd, 0xb2, 0x92, 0x54, 0xbf, 0x12,
-0xa1, 0xd0, 0x0b, 0x9a, 0x97, 0x75, 0x8b, 0x5f,
-0x7e, 0x95, 0xfc, 0xa2, 0x41, 0x24, 0x29, 0xdc,
-0xf7, 0xce, 0xbb, 0xfb, 0xdf, 0x3b, 0xf4, 0xe1,
-0x47, 0xe7, 0xae, 0xba, 0x78, 0xfb, 0xdf, 0x08,
-0x8f, 0x4f, 0x4c, 0x11, 0xe5, 0x15, 0x95, 0x94,
-0x49, 0x2b, 0x6a, 0xea, 0x9a, 0x5b, 0x3b, 0xbb,
-0x7b, 0x07, 0xd5, 0xc3, 0xf8, 0x64, 0x27, 0xf2,
-0x74, 0x0e, 0x8b, 0x3b, 0xb2, 0x2c, 0x6f, 0x90,
-0x36, 0xc0, 0x2c, 0x79, 0x76, 0x34, 0x3e, 0x5f,
-0x11, 0x88, 0xc7, 0xc6, 0xa7, 0x47, 0x46, 0x27,
-0xd5, 0xc3, 0xe3, 0xfd, 0x83, 0x50, 0x8b, 0x87,
-0x7b, 0xf0, 0x3e, 0xc9, 0x81, 0x8e, 0xae, 0x81,
-0xb6, 0x8e, 0x6e, 0xa8, 0xec, 0x2d, 0x6d, 0xdd,
-0xcd, 0xad, 0x1d, 0x4d, 0x2d, 0x1d, 0x8d, 0x2d,
-0x1d, 0x80, 0x34, 0x36, 0xb7, 0x37, 0x35, 0xb7,
-0x34, 0x34, 0x01, 0xd2, 0xd6, 0xd0, 0x04, 0xd0,
-0x5e, 0xdf, 0xd0, 0x04, 0x2d, 0x85, 0xfa, 0xc6,
-0x36, 0x80, 0x3b, 0xef, 0x36, 0x34, 0xb6, 0x7e,
-0xea, 0xb5, 0x6b, 0x77, 0xdb, 0xd6, 0x98, 0x65,
-0x15, 0xfe, 0xdc, 0x04, 0xfd, 0x2f, 0xb1, 0xf7,
-0xce, 0xba, 0x28, 0xba, 0xe3, 0xcb, 0x35, 0xff,
-0xf3, 0xd1, 0xaa, 0xb1, 0x85, 0x09, 0xe5, 0xe7,
-0x60, 0xd1, 0x5a, 0xa9, 0xc2, 0x75, 0x5b, 0x69,
-0xce, 0x7c, 0xa9, 0xe1, 0xb6, 0x55, 0xf2, 0x33,
-0x69, 0xf5, 0x85, 0x25, 0xf0, 0x5d, 0x69, 0xc5,
-0x27, 0x26, 0x6c, 0x79, 0x9c, 0x89, 0xc9, 0xf8,
-0x21, 0x03, 0xb1, 0x6e, 0x22, 0x9f, 0x33, 0x8d,
-0xad, 0xdd, 0xb2, 0x01, 0x13, 0x05, 0xa8, 0x02,
-0x70, 0x1c, 0xe3, 0xba, 0x77, 0x02, 0xca, 0x41,
-0x58, 0xb2, 0x5a, 0xd0, 0x30, 0x15, 0x2e, 0xac,
-0x70, 0x0a, 0x4e, 0xf9, 0xf8, 0x7a, 0xf0, 0x39,
-0xd7, 0x10, 0xaf, 0x88, 0x9c, 0xc4, 0x82, 0xb6,
-0xa2, 0x36, 0x03, 0xad, 0x2c, 0x77, 0xc5, 0xf0,
-0xaf, 0x03, 0xd2, 0x7e, 0xb3, 0xbd, 0x14, 0x97,
-0x71, 0x6d, 0xbf, 0x05, 0x59, 0xd5, 0x10, 0x8e,
-0x00, 0xa5, 0xbc, 0x1f, 0x81, 0x9b, 0xb5, 0xeb,
-0x2b, 0x24, 0x63, 0x71, 0xd5, 0x90, 0x49, 0x0e,
-0x15, 0x56, 0x6d, 0xaa, 0x18, 0xc2, 0xf1, 0x9a,
-0x61, 0x64, 0x55, 0x3b, 0x62, 0xaa, 0x1f, 0x65,
-0x00, 0xba, 0x00, 0x95, 0x6a, 0x6c, 0xa1, 0xf8,
-0x96, 0xf4, 0xe0, 0x15, 0x8e, 0xa0, 0x75, 0x39,
-0xa9, 0xd6, 0x10, 0xaa, 0x5a, 0xc9, 0x6c, 0x34,
-0x68, 0xe6, 0xef, 0xe1, 0x47, 0x6d, 0xdc, 0x39,
-0xe8, 0x0d, 0x0b, 0xd9, 0xc2, 0xbc, 0x77, 0xdf,
-0x3b, 0xf0, 0xfe, 0xfb, 0x87, 0x4e, 0x7f, 0x7c,
-0xc1, 0xd9, 0xd5, 0x2b, 0x30, 0x28, 0x38, 0x2e,
-0x21, 0x35, 0x3b, 0x27, 0x37, 0xbf, 0xa8, 0x4c,
-0xa6, 0xac, 0x83, 0x2c, 0xed, 0xec, 0x1e, 0xe8,
-0x1f, 0x1c, 0x1e, 0x19, 0x9b, 0x1c, 0x9f, 0xa4,
-0x3f, 0x4d, 0x82, 0x2a, 0x6c, 0xa7, 0x04, 0xd3,
-0xbb, 0xb3, 0xe8, 0x2f, 0x95, 0xc8, 0x3d, 0x5a,
-0x1a, 0x38, 0x17, 0x4f, 0x4e, 0xcf, 0x4c, 0x4e,
-0x4d, 0x4f, 0x4c, 0x4d, 0xc3, 0x72, 0x38, 0x17,
-0x93, 0xa3, 0xf1, 0x48, 0xff, 0xe0, 0x08, 0x79,
-0xfe, 0x2d, 0x3e, 0xfe, 0x17, 0xea, 0x7b, 0x4f,
-0xff, 0x70, 0x37, 0xfe, 0x3a, 0x43, 0xdd, 0xd5,
-0x0b, 0x35, 0x5a, 0x8d, 0x23, 0x7d, 0x4c, 0x4b,
-0x81, 0x0c, 0xaa, 0xef, 0xa6, 0xfb, 0x59, 0xd6,
-0xda, 0xef, 0x76, 0x33, 0xba, 0x59, 0xcf, 0x72,
-0x83, 0x9f, 0x97, 0xa0, 0xff, 0x25, 0xf6, 0xde,
-0x71, 0x17, 0x22, 0x38, 0xf0, 0x65, 0x9b, 0xff,
-0xf9, 0x68, 0xc5, 0x8f, 0xe9, 0x17, 0x91, 0x2a,
-0xfc, 0x2e, 0xb9, 0x6b, 0x71, 0xe0, 0x53, 0x87,
-0x9b, 0x27, 0xeb, 0x36, 0x6a, 0xdc, 0xb5, 0x92,
-0x54, 0xab, 0x2f, 0x23, 0x9f, 0x6f, 0x97, 0xc0,
-0x77, 0xa5, 0x15, 0xeb, 0x58, 0xf2, 0xc1, 0x02,
-0x38, 0xf3, 0x61, 0xd2, 0x4f, 0x08, 0xf0, 0x4e,
-0x51, 0x6a, 0x38, 0x20, 0x3d, 0x83, 0x63, 0xad,
-0x23, 0x0b, 0x50, 0x0b, 0xea, 0x48, 0x45, 0x68,
-0x00, 0x84, 0x57, 0x20, 0xee, 0x04, 0x1a, 0xc6,
-0x58, 0x84, 0xb4, 0xb0, 0xbc, 0x7a, 0xd8, 0xd4,
-0x34, 0xba, 0x0a, 0x2d, 0x1d, 0xac, 0xb9, 0x4b,
-0x86, 0x9f, 0x1d, 0xea, 0x58, 0x73, 0xea, 0xd6,
-0x98, 0x6d, 0x1c, 0x47, 0x3d, 0xeb, 0xa8, 0xbd,
-0xa3, 0x0c, 0x6e, 0x4b, 0x46, 0xcd, 0x01, 0x1a,
-0x28, 0x9a, 0xfc, 0xba, 0x49, 0xf9, 0xe3, 0x38,
-0x0f, 0x1a, 0xc6, 0xb1, 0x45, 0x02, 0x70, 0xc8,
-0x38, 0x76, 0x1b, 0x27, 0x10, 0x07, 0x04, 0x5c,
-0x04, 0xd0, 0x44, 0x90, 0x96, 0x09, 0x53, 0x23,
-0xe0, 0x13, 0x66, 0x6e, 0x15, 0x6a, 0x2c, 0xeb,
-0x45, 0x3d, 0xa6, 0x82, 0xf6, 0x55, 0x61, 0xeb,
-0x62, 0x4a, 0xfd, 0x42, 0x58, 0xc5, 0x52, 0x7a,
-0xc3, 0xfc, 0x88, 0xe6, 0x6f, 0xe4, 0xd7, 0x46,
-0x77, 0x02, 0x46, 0x93, 0xa9, 0x5c, 0x2a, 0x3f,
-0x75, 0xfa, 0xe3, 0xf7, 0xdf, 0x3b, 0x70, 0xea,
-0xd4, 0xc7, 0x8e, 0x57, 0x5d, 0x03, 0x02, 0x83,
-0x23, 0xa3, 0x93, 0x32, 0xb2, 0x72, 0x24, 0x05,
-0x25, 0xe5, 0x72, 0x25, 0x9e, 0x83, 0xf1, 0x21,
-0xd1, 0x83, 0x83, 0x43, 0xe3, 0x63, 0x13, 0xd3,
-0xdc, 0xfb, 0x82, 0xf1, 0x30, 0x6c, 0xef, 0x2c,
-0xcc, 0xfe, 0x5e, 0x58, 0x4f, 0xde, 0xe3, 0x00,
-0x87, 0x62, 0x1d, 0xbd, 0x53, 0x0b, 0x60, 0x6a,
-0x1a, 0x61, 0x62, 0x72, 0x66, 0x7c, 0x62, 0x0a,
-0xda, 0xd1, 0xf1, 0xa9, 0xd1, 0xf1, 0x99, 0x61,
-0x6c, 0x27, 0xf1, 0x3e, 0xae, 0xd1, 0x89, 0x91,
-0x31, 0x80, 0xa9, 0xe1, 0xd1, 0xc9, 0xe1, 0xd1,
-0x89, 0x4f, 0x0d, 0x23, 0x63, 0xd3, 0x9f, 0x65,
-0xb9, 0x3d, 0x98, 0x24, 0x5a, 0xd9, 0x9d, 0xfa,
-0xac, 0xda, 0x7e, 0x76, 0xf8, 0x02, 0xec, 0xbd,
-0x67, 0xa4, 0x7f, 0xae, 0x5a, 0x4d, 0x0e, 0x8d,
-0x40, 0x34, 0xa7, 0xd4, 0xc3, 0x9f, 0x25, 0xa0,
-0x94, 0xc9, 0x17, 0xe8, 0x37, 0x58, 0xa8, 0x1e,
-0xfe, 0x64, 0xb2, 0xa1, 0x91, 0x4f, 0xa7, 0xe4,
-0xf4, 0x6d, 0x17, 0x7e, 0x59, 0xc1, 0xba, 0x0b,
-0xad, 0x28, 0xb7, 0x21, 0xb2, 0x31, 0xd5, 0xa3,
-0x0c, 0x67, 0xf8, 0x78, 0x61, 0xdd, 0x32, 0xae,
-0x1e, 0x9d, 0x1a, 0x1c, 0xd7, 0xf4, 0x4d, 0xad,
-0xf6, 0xcf, 0x98, 0x00, 0x7a, 0xa6, 0x4d, 0x14,
-0xe9, 0x9b, 0x32, 0x52, 0xe4, 0x0e, 0xa1, 0x17,
-0x96, 0xdc, 0x0d, 0xfd, 0x5f, 0x03, 0x66, 0x79,
-0x60, 0x77, 0x96, 0xe8, 0xdc, 0xcb, 0xb6, 0x76,
-0x4d, 0xa0, 0x83, 0xd4, 0x2d, 0x9c, 0x73, 0x38,
-0x5f, 0xd1, 0x55, 0x5d, 0xd3, 0x0c, 0x74, 0x4c,
-0x9b, 0x3a, 0x09, 0x02, 0x53, 0xdd, 0xd3, 0xe6,
-0x71, 0x0e, 0x3a, 0xc9, 0x54, 0xfb, 0x94, 0xa9,
-0x75, 0xd2, 0xd4, 0x31, 0x89, 0x55, 0xb8, 0x79,
-0xcc, 0x48, 0x8f, 0xc0, 0x70, 0xf2, 0x2d, 0xeb,
-0x35, 0xe5, 0x77, 0x18, 0x33, 0x5b, 0x96, 0xd3,
-0x1a, 0xe6, 0x43, 0x54, 0xab, 0x65, 0x9d, 0x8b,
-0x5a, 0xc3, 0x97, 0x5f, 0x13, 0xff, 0xca, 0xb0,
-0x6a, 0x5a, 0xed, 0xea, 0xe9, 0xb9, 0x76, 0xfd,
-0xfa, 0x81, 0x83, 0x87, 0x8f, 0x9f, 0xfc, 0xd0,
-0xc1, 0xe9, 0xba, 0xa7, 0x4f, 0x60, 0x68, 0x64,
-0x4c, 0x72, 0x6a, 0x86, 0x50, 0x24, 0x29, 0x2c,
-0x91, 0x2a, 0x2a, 0x6b, 0xea, 0x1a, 0x5b, 0xda,
-0x3a, 0x7a, 0xe0, 0xd2, 0x71, 0x60, 0x18, 0x8b,
-0xd1, 0xe4, 0xf4, 0x2c, 0xd4, 0x53, 0x38, 0x0b,
-0x6b, 0x75, 0x73, 0x5a, 0xdd, 0x3c, 0x77, 0x77,
-0x16, 0xf7, 0x37, 0x62, 0xfa, 0x10, 0x4b, 0xf2,
-0x1a, 0x82, 0x39, 0x72, 0xa7, 0x96, 0x16, 0xca,
-0x31, 0x7d, 0xb9, 0x21, 0x2c, 0x24, 0x88, 0x0e,
-0x6a, 0xf1, 0xf4, 0x8c, 0x66, 0x7a, 0x56, 0xcb,
-0x8d, 0xc3, 0xf9, 0x9a, 0xb4, 0xf8, 0xac, 0x8f,
-0xe9, 0x59, 0xa8, 0xdd, 0x1a, 0x7c, 0xa3, 0x81,
-0x46, 0x47, 0xde, 0x6b, 0x00, 0x83, 0x1a, 0xac,
-0xe6, 0x58, 0xd0, 0x67, 0x09, 0x0d, 0xe9, 0xce,
-0xe0, 0xe3, 0xb9, 0xe8, 0x20, 0xa1, 0xc7, 0x76,
-0x6a, 0x7a, 0x96, 0x2c, 0xe7, 0x06, 0x81, 0x1b,
-0x6d, 0xad, 0xd6, 0x22, 0x5b, 0x1e, 0x31, 0x2a,
-0xc3, 0x48, 0x27, 0x64, 0x53, 0x48, 0x46, 0x89,
-0x11, 0x61, 0xbb, 0x74, 0x96, 0x12, 0xcf, 0x52,
-0xce, 0x33, 0xb3, 0x0c, 0xab, 0x19, 0xb6, 0x4b,
-0x89, 0x19, 0x7a, 0xaa, 0x36, 0xcb, 0x8a, 0x59,
-0xc8, 0x37, 0x81, 0x4c, 0xd1, 0x9f, 0x5d, 0xe3,
-0x20, 0x79, 0xf2, 0x36, 0xa7, 0xd5, 0x0c, 0x23,
-0x88, 0xb1, 0x88, 0xb5, 0x02, 0x56, 0xe9, 0xa8,
-0xc4, 0xcf, 0x66, 0xaf, 0x86, 0x21, 0x63, 0xa5,
-0xb0, 0x6a, 0x50, 0xdc, 0x8e, 0x9f, 0xa7, 0x67,
-0x74, 0x66, 0x1d, 0xb0, 0x9d, 0x9d, 0xe6, 0xdc,
-0xc2, 0xf3, 0x06, 0x8f, 0x9b, 0xa5, 0xeb, 0xb8,
-0x20, 0xb2, 0x2d, 0x35, 0x81, 0x68, 0x6e, 0x61,
-0x02, 0x67, 0x11, 0xb7, 0x9c, 0x24, 0x83, 0x8e,
-0xc7, 0xc4, 0x22, 0x64, 0xbc, 0xe8, 0xcc, 0xb2,
-0xb3, 0x3a, 0x1b, 0x89, 0x56, 0x89, 0xa4, 0xb1,
-0xb1, 0x45, 0x33, 0xcd, 0xda, 0x6b, 0x91, 0x75,
-0x76, 0x58, 0xcd, 0x12, 0x7d, 0x2c, 0xe5, 0x12,
-0x6f, 0xd0, 0x71, 0x3e, 0x0d, 0x9b, 0xcf, 0x8c,
-0x9f, 0x69, 0x14, 0x78, 0x72, 0x35, 0x5c, 0x02,
-0xb3, 0xe3, 0x34, 0x0a, 0x1c, 0x67, 0x2b, 0x25,
-0x75, 0x34, 0x91, 0x30, 0x55, 0xa8, 0x73, 0x18,
-0x9d, 0x19, 0xe7, 0x5b, 0x27, 0x83, 0x65, 0x9a,
-0x99, 0x83, 0x02, 0xba, 0xf1, 0xec, 0xa5, 0xe6,
-0x53, 0x7b, 0x51, 0x43, 0xe2, 0x1c, 0x73, 0x12,
-0xb2, 0x26, 0x58, 0xac, 0x9d, 0xd1, 0xce, 0x58,
-0x45, 0x5f, 0x63, 0x76, 0x14, 0x2f, 0x81, 0xb5,
-0xd3, 0xfc, 0xad, 0xa1, 0xd1, 0xf1, 0x13, 0x98,
-0x6f, 0x35, 0x97, 0x24, 0x3c, 0x13, 0xb8, 0x2e,
-0x27, 0x57, 0x6b, 0x4e, 0x60, 0x36, 0x63, 0xa7,
-0x78, 0x7b, 0xdf, 0x1c, 0x0b, 0x70, 0xf5, 0x0c,
-0xc9, 0x79, 0xa6, 0xab, 0x99, 0xd2, 0x2c, 0xa8,
-0x35, 0xc6, 0x31, 0xbd, 0x69, 0x58, 0x6b, 0x1a,
-0xd5, 0x99, 0xc6, 0x74, 0xa6, 0x71, 0xfd, 0x5d,
-0x03, 0xac, 0x85, 0x16, 0x98, 0x8c, 0x10, 0x0e,
-0xa3, 0xb7, 0x65, 0x42, 0x89, 0xbf, 0x20, 0x00,
-0xe6, 0x54, 0x0d, 0x40, 0x46, 0x88, 0x45, 0x43,
-0x1a, 0x6c, 0xa1, 0x4b, 0x0d, 0x04, 0xe0, 0x66,
-0xd5, 0x1a, 0xd4, 0x16, 0x75, 0x66, 0xd7, 0xe2,
-0xb8, 0xe5, 0x92, 0x11, 0x1d, 0xb3, 0x8a, 0x33,
-0xca, 0x96, 0x95, 0x5a, 0x63, 0xee, 0x02, 0x0e,
-0x23, 0x03, 0xb3, 0x08, 0x74, 0x6a, 0x48, 0x6b,
-0x2e, 0xd9, 0xb4, 0xbe, 0xb7, 0x4f, 0x1a, 0xbb,
-0x26, 0x8d, 0x2d, 0xe4, 0x20, 0x0c, 0x27, 0x6b,
-0xa5, 0x1a, 0xff, 0x10, 0x5c, 0xdc, 0x65, 0xcc,
-0x69, 0x37, 0x66, 0xb5, 0x2c, 0x47, 0x57, 0x2e,
-0x47, 0x57, 0x2f, 0xa9, 0x06, 0x8c, 0x0b, 0xab,
-0xff, 0x5f, 0x7c, 0xed, 0x6c, 0x0b, 0xc6, 0xff,
-0x6b, 0x1a, 0x9b, 0x98, 0xf4, 0xf1, 0x0b, 0x78,
-0x77, 0xff, 0x81, 0xa3, 0xc7, 0x4f, 0x9e, 0xbf,
-0x78, 0xc5, 0xd5, 0xc3, 0xf7, 0xc6, 0xad, 0xf0,
-0x98, 0xb8, 0x94, 0xf4, 0x4c, 0x01, 0x1c, 0x84,
-0xa5, 0xf2, 0x0a, 0x28, 0xc2, 0xe4, 0x15, 0x03,
-0xdd, 0xf8, 0x9c, 0x1c, 0xf5, 0xf8, 0x08, 0x9c,
-0x5a, 0xf1, 0x49, 0x1d, 0x58, 0x86, 0x49, 0x21,
-0xd6, 0xeb, 0xe7, 0x0c, 0xe4, 0x65, 0xa9, 0xf3,
-0xdc, 0x1f, 0x85, 0xc9, 0x0b, 0x0d, 0xa1, 0x04,
-0x73, 0xb5, 0x58, 0x4f, 0xbf, 0xa0, 0xa6, 0x6f,
-0x05, 0xa2, 0x07, 0x64, 0x52, 0x9a, 0xe1, 0x40,
-0x3d, 0x4f, 0xab, 0x30, 0xf9, 0xee, 0x5a, 0x4b,
-0x66, 0xb5, 0x74, 0x96, 0xc2, 0x2c, 0xd2, 0xea,
-0x68, 0x8b, 0x2f, 0x09, 0x9d, 0x65, 0x10, 0x42,
-0xa3, 0xa3, 0x53, 0x50, 0xeb, 0x09, 0x01, 0xae,
-0x25, 0xef, 0xc3, 0xd5, 0xb1, 0x5d, 0x0d, 0xbd,
-0x06, 0x20, 0x0b, 0xf1, 0x66, 0x32, 0xab, 0x29,
-0x8e, 0x33, 0x3b, 0x4b, 0xc7, 0xf5, 0x3c, 0xb9,
-0x5a, 0xfa, 0x5a, 0x46, 0x82, 0xeb, 0x88, 0xbd,
-0x0c, 0x31, 0xd8, 0x42, 0xc7, 0x29, 0x19, 0xd5,
-0x99, 0xd5, 0x87, 0x79, 0x93, 0x14, 0x4b, 0xcc,
-0x57, 0x92, 0x92, 0xe9, 0x39, 0xb9, 0x64, 0x9c,
-0xb1, 0x88, 0x95, 0xc8, 0x99, 0xa0, 0xe3, 0xf8,
-0x40, 0x97, 0x1d, 0x47, 0x59, 0xf4, 0xb5, 0xbf,
-0x9f, 0xc5, 0x5e, 0x90, 0xcb, 0xe9, 0x46, 0xa7,
-0xa8, 0x8d, 0x40, 0xcc, 0xad, 0x25, 0x23, 0x7a,
-0x2a, 0x82, 0xef, 0x7c, 0xfe, 0x20, 0x15, 0x67,
-0x13, 0x2f, 0x1d, 0x5f, 0x79, 0x6a, 0x1a, 0xe7,
-0x0d, 0x3a, 0xc2, 0x99, 0x40, 0x43, 0xc9, 0x76,
-0xf9, 0x7a, 0x82, 0x1b, 0xf5, 0x1c, 0x67, 0xee,
-0xfd, 0x5c, 0x94, 0x1b, 0x2f, 0x64, 0xe6, 0x64,
-0xa0, 0x4a, 0x72, 0xa6, 0xf1, 0x75, 0xa6, 0x88,
-0xa5, 0xdb, 0x35, 0xf4, 0xfb, 0x1c, 0x9e, 0xb6,
-0x16, 0xd1, 0xe1, 0xe5, 0x86, 0x6d, 0xee, 0xf1,
-0x89, 0xcd, 0xa9, 0xc8, 0x73, 0x05, 0x43, 0xc3,
-0xda, 0xc5, 0x77, 0x3e, 0x23, 0x97, 0x53, 0x83,
-0xd3, 0x81, 0x17, 0x11, 0x7e, 0x36, 0x52, 0xff,
-0x58, 0x65, 0x3b, 0xf3, 0xc2, 0x50, 0xd6, 0x76,
-0x3d, 0x2f, 0x51, 0xf9, 0xc9, 0xa0, 0xb3, 0x49,
-0x33, 0x26, 0x4c, 0x24, 0x4b, 0xed, 0x98, 0x30,
-0x4b, 0xde, 0x48, 0xca, 0xcf, 0x0d, 0x2e, 0x46,
-0x96, 0x6b, 0xb5, 0xac, 0x2b, 0xf4, 0x6c, 0xc2,
-0xeb, 0x6c, 0xac, 0x30, 0xfb, 0x84, 0xd2, 0x70,
-0x16, 0x59, 0xba, 0x85, 0x1a, 0xa8, 0xb1, 0xf2,
-0x00, 0xcf, 0x69, 0xfc, 0x2d, 0x69, 0x26, 0x63,
-0x89, 0x2d, 0xf6, 0x02, 0x1d, 0xe7, 0x88, 0xe9,
-0x87, 0x8c, 0x46, 0x6f, 0x98, 0x9c, 0x33, 0x4e,
-0xcc, 0x99, 0xfe, 0x0e, 0x9f, 0x08, 0x50, 0xa3,
-0x39, 0x5c, 0x63, 0x58, 0x73, 0x8a, 0xe2, 0xd0,
-0x0e, 0x69, 0xd8, 0x6a, 0xae, 0xb5, 0x3e, 0x53,
-0xc3, 0xf9, 0xb7, 0x79, 0xdc, 0xd4, 0x34, 0x6a,
-0xaa, 0x1c, 0x36, 0x29, 0x06, 0x4d, 0xa5, 0xbd,
-0xf8, 0x6b, 0xa3, 0x8c, 0x16, 0x7c, 0xd4, 0x55,
-0x64, 0xd5, 0x4a, 0x64, 0xe5, 0x42, 0xf3, 0xe8,
-0xea, 0xca, 0xdf, 0xe2, 0x4f, 0x8d, 0xee, 0x0a,
-0x16, 0x16, 0x17, 0x84, 0x79, 0x62, 0x38, 0x05,
-0x03, 0x7c, 0x74, 0xe6, 0xfc, 0x15, 0x27, 0x67,
-0x6f, 0xdf, 0xc0, 0x90, 0xf0, 0xd8, 0xf8, 0xc4,
-0xd4, 0x2c, 0x41, 0x6e, 0x41, 0x61, 0x79, 0x99,
-0x4c, 0x51, 0x59, 0xdd, 0x54, 0xd7, 0xd8, 0xdc,
-0xde, 0xd9, 0x0b, 0x67, 0xe1, 0xfe, 0x41, 0xb5,
-0x7a, 0x78, 0x6c, 0x64, 0x6c, 0x72, 0x72, 0x7a,
-0x7a, 0x6a, 0x1a, 0xdf, 0xd4, 0x40, 0xee, 0xbf,
-0xc2, 0xeb, 0x67, 0x9a, 0xff, 0x50, 0x82, 0xe9,
-0x5b, 0xb6, 0xe1, 0x83, 0x9a, 0x54, 0xde, 0x39,
-0xfa, 0xf3, 0x61, 0xba, 0x7f, 0xe9, 0xd1, 0x98,
-0x6e, 0x5e, 0x42, 0x83, 0xff, 0xa3, 0xe3, 0xec,
-0x27, 0x8f, 0x8e, 0xfd, 0x60, 0xd4, 0x10, 0x02,
-0xda, 0x6a, 0x29, 0x25, 0xf7, 0x69, 0xc0, 0x2b,
-0xe5, 0x3a, 0x5e, 0x2d, 0x60, 0x76, 0x37, 0xd9,
-0x8c, 0xf3, 0xdc, 0xc7, 0x17, 0xe5, 0x43, 0xd8,
-0xea, 0x59, 0x89, 0x3a, 0x8e, 0x33, 0xd7, 0xa5,
-0x6c, 0x89, 0x9e, 0x8c, 0x20, 0x4e, 0x2b, 0xf6,
-0x23, 0x68, 0x8e, 0xee, 0x77, 0xae, 0x6a, 0xb0,
-0xbb, 0x1e, 0xd4, 0x9e, 0x67, 0xbb, 0x80, 0xcf,
-0x91, 0xda, 0xa1, 0x23, 0x2f, 0x19, 0xe7, 0xaa,
-0xc6, 0x1c, 0x8f, 0x8f, 0x9e, 0x76, 0xe9, 0x12,
-0xbe, 0x15, 0xdc, 0xd5, 0x05, 0xcf, 0x2e, 0x8a,
-0xd0, 0x0f, 0xbd, 0x39, 0x6a, 0x26, 0xdb, 0xfd,
-0x34, 0xf6, 0xb2, 0x4a, 0xea, 0x78, 0x06, 0x9a,
-0xe5, 0xd2, 0x4f, 0x66, 0xbe, 0x6f, 0x6d, 0xd6,
-0x7e, 0x0a, 0x7b, 0x39, 0x9d, 0xf5, 0x56, 0xa6,
-0xf1, 0x8c, 0xe5, 0x2c, 0xd2, 0xf2, 0x56, 0x99,
-0xed, 0xe5, 0xae, 0xdc, 0x38, 0x1a, 0x2e, 0x64,
-0x9c, 0x27, 0xb9, 0x80, 0xf2, 0xbb, 0x2c, 0xa2,
-0x21, 0xea, 0xe9, 0x59, 0x9d, 0xf5, 0x3c, 0x0e,
-0x3a, 0x22, 0x48, 0x67, 0x45, 0x6c, 0xc3, 0x8a,
-0xaf, 0x80, 0x39, 0xfa, 0x3c, 0x8b, 0xcc, 0x41,
-0xb1, 0xea, 0x72, 0x51, 0xe0, 0x2e, 0x3f, 0xc8,
-0x5a, 0xba, 0x17, 0x68, 0xb2, 0xcd, 0xf1, 0x7d,
-0xc2, 0x6a, 0x6b, 0xf6, 0x15, 0xe1, 0x60, 0x91,
-0x03, 0x5c, 0xe1, 0xa3, 0x51, 0x63, 0x4b, 0x2a,
-0xcd, 0x2e, 0xeb, 0x80, 0x52, 0xcd, 0xf9, 0xdb,
-0x8a, 0xe7, 0x3a, 0xab, 0x7d, 0xc4, 0x2c, 0xe1,
-0x5d, 0x86, 0x31, 0xd7, 0x0c, 0x3c, 0x6e, 0xd6,
-0x51, 0xe0, 0x4c, 0x63, 0xcd, 0xd4, 0xdb, 0xc6,
-0x77, 0xed, 0x08, 0x32, 0xa9, 0xc2, 0xca, 0xb5,
-0x93, 0x21, 0x34, 0x10, 0xfc, 0x0d, 0x4b, 0xfd,
-0xc3, 0xed, 0x1a, 0xde, 0x27, 0x80, 0x79, 0x83,
-0x68, 0x74, 0x86, 0x49, 0xfd, 0xea, 0x97, 0x5e,
-0xd4, 0xfe, 0x56, 0x81, 0x9e, 0x94, 0xa1, 0xf8,
-0x0e, 0x6a, 0x10, 0xfa, 0xd9, 0x2f, 0xb1, 0xbb,
-0x26, 0x4d, 0xad, 0x13, 0xa6, 0xea, 0x11, 0x53,
-0xd5, 0x08, 0xde, 0x94, 0x05, 0xc7, 0xde, 0x82,
-0x8e, 0x15, 0x41, 0xcb, 0x72, 0x46, 0xd3, 0x4a,
-0x6c, 0xd5, 0x62, 0x88, 0x62, 0x29, 0xad, 0x6e,
-0x79, 0x56, 0x6f, 0xfc, 0xdb, 0x7b, 0xc8, 0xc6,
-0xa7, 0x83, 0xa5, 0x95, 0xe5, 0xa2, 0x92, 0xd2,
-0x73, 0xe7, 0x2f, 0x1d, 0x38, 0x70, 0xf8, 0xf8,
-0x89, 0x0f, 0x2f, 0x5c, 0x72, 0x74, 0xf3, 0xf0,
-0x09, 0xbc, 0x11, 0x12, 0x1e, 0x15, 0x97, 0x9c,
-0x92, 0x95, 0x9d, 0x93, 0x97, 0x5f, 0x88, 0x77,
-0xfb, 0xab, 0xaa, 0xeb, 0x6a, 0x1b, 0x5a, 0x9a,
-0x5a, 0x3b, 0x3b, 0xba, 0xfa, 0xf0, 0x91, 0xcb,
-0x03, 0x43, 0xea, 0xe1, 0xd1, 0xa1, 0x91, 0xb1,
-0xd1, 0xf1, 0x69, 0x72, 0xc3, 0xd5, 0x2c, 0xf9,
-0x53, 0xef, 0x2c, 0xad, 0xc5, 0xf4, 0x7b, 0x24,
-0xfa, 0x1e, 0x07, 0xee, 0x5b, 0x68, 0x7a, 0x69,
-0x4a, 0x5a, 0xfa, 0x0d, 0x15, 0xfd, 0x76, 0x48,
-0x07, 0x75, 0x1c, 0x6f, 0xdc, 0x9a, 0x62, 0xbe,
-0x2f, 0x9d, 0x9c, 0x66, 0xbe, 0x01, 0x26, 0xdf,
-0xbf, 0xe1, 0x97, 0x4e, 0x64, 0x4a, 0x3b, 0x85,
-0x5d, 0x1d, 0x61, 0xae, 0xe1, 0xbe, 0x70, 0xa3,
-0x4c, 0x38, 0x9a, 0x19, 0xde, 0x17, 0x98, 0xf8,
-0xcd, 0xd5, 0x34, 0x25, 0xd6, 0x4c, 0x9b, 0xbf,
-0x19, 0xe6, 0xbe, 0xfe, 0x62, 0x66, 0x27, 0xa7,
-0xb4, 0x2c, 0x43, 0x8d, 0xf9, 0xbb, 0x47, 0x86,
-0x03, 0xa3, 0x1b, 0x65, 0xcb, 0x8e, 0x33, 0xaa,
-0xb2, 0xc0, 0x17, 0x4a, 0x6f, 0x08, 0xa7, 0xf7,
-0xa1, 0xd1, 0xaf, 0xdd, 0x38, 0x87, 0x68, 0xd8,
-0x85, 0x16, 0x7a, 0xf2, 0x95, 0x9f, 0x62, 0x74,
-0x63, 0x74, 0xe6, 0xba, 0xc0, 0x61, 0x92, 0x51,
-0x83, 0xea, 0xc3, 0xb7, 0xe8, 0xae, 0xed, 0xa5,
-0xab, 0xf8, 0x7e, 0xfe, 0xab, 0xd8, 0x4b, 0xbf,
-0xc6, 0x64, 0xbc, 0xcd, 0x19, 0x4e, 0x97, 0x93,
-0xaf, 0x1f, 0x75, 0x9c, 0xce, 0x66, 0xe2, 0x69,
-0x8b, 0x2e, 0x6f, 0x96, 0xaf, 0xa4, 0x86, 0x33,
-0x81, 0xcb, 0x3d, 0x2a, 0x05, 0xec, 0x9d, 0xb6,
-0x30, 0x41, 0xc3, 0x7e, 0x95, 0x6a, 0x56, 0x9b,
-0xfb, 0xfb, 0x05, 0x97, 0x4b, 0xf4, 0x85, 0xce,
-0xb8, 0x76, 0xc6, 0x92, 0xd5, 0x8c, 0x96, 0xfb,
-0x66, 0x95, 0x67, 0xbe, 0xc5, 0x2c, 0x97, 0x84,
-0x96, 0x16, 0x51, 0xc7, 0xf2, 0xff, 0x28, 0x30,
-0xcb, 0x7e, 0x83, 0xcd, 0xb4, 0x2c, 0x37, 0x9e,
-0x3f, 0x59, 0x85, 0xd9, 0xbf, 0x83, 0x50, 0x7d,
-0xd0, 0xcf, 0xec, 0xd6, 0xa0, 0x5f, 0xed, 0x92,
-0x54, 0x99, 0xd6, 0xb2, 0xb8, 0x96, 0x73, 0x02,
-0x31, 0x87, 0xd2, 0x98, 0x63, 0xc4, 0xdb, 0x56,
-0xb3, 0x6c, 0x1c, 0xcd, 0x16, 0xb1, 0x5f, 0x7a,
-0xf3, 0x36, 0xdd, 0x34, 0x33, 0x4b, 0xf5, 0x59,
-0x3b, 0x0a, 0x9c, 0x9f, 0xf9, 0x19, 0xc5, 0xfd,
-0x09, 0x89, 0xef, 0x3a, 0x3b, 0x11, 0x64, 0xf3,
-0x47, 0x43, 0x53, 0xd4, 0x2a, 0x3d, 0x88, 0x74,
-0x6e, 0x84, 0xa6, 0x10, 0x9d, 0xe2, 0xb6, 0x3f,
-0xfd, 0x63, 0x16, 0xdf, 0x03, 0xda, 0x29, 0xed,
-0xe2, 0xe4, 0xdc, 0x2a, 0x54, 0x07, 0xae, 0x58,
-0x70, 0x25, 0xe3, 0x1e, 0x85, 0x51, 0xf6, 0x3b,
-0x64, 0xab, 0x0a, 0xc8, 0xef, 0x5a, 0xb5, 0x76,
-0x69, 0xec, 0x76, 0xd7, 0x12, 0x3a, 0x3b, 0x6f,
-0x4d, 0x43, 0xbf, 0x7f, 0x06, 0x18, 0xd1, 0x9a,
-0x06, 0xb9, 0xbf, 0x2f, 0x4f, 0x9b, 0x3a, 0xa7,
-0x4c, 0x9d, 0x93, 0xf8, 0x6d, 0x73, 0xed, 0x30,
-0xb9, 0xcf, 0x6a, 0xd0, 0x54, 0xd6, 0x87, 0x3f,
-0x59, 0xca, 0x6e, 0x5d, 0x4e, 0x6b, 0x5a, 0x8a,
-0xaf, 0x5d, 0x8e, 0xac, 0x5c, 0x09, 0x96, 0x1b,
-0xc4, 0xed, 0x10, 0x97, 0xbf, 0x17, 0x5f, 0x6b,
-0x18, 0x1d, 0x9f, 0x48, 0x49, 0xcd, 0x3c, 0x75,
-0xfa, 0xec, 0xe1, 0xc3, 0xc7, 0x4f, 0x9d, 0x3a,
-0x7b, 0xd9, 0xd1, 0xd9, 0xdd, 0xd3, 0x37, 0xe0,
-0x66, 0x48, 0x44, 0x74, 0x6c, 0x52, 0x4a, 0x16,
-0x9c, 0x85, 0xc5, 0xf9, 0xa5, 0x25, 0xe5, 0xb2,
-0x72, 0x45, 0x65, 0x55, 0x4d, 0x63, 0x6d, 0x63,
-0x6b, 0x4b, 0x5b, 0x67, 0x7b, 0x67, 0x77, 0x67,
-0xf7, 0x60, 0x4f, 0xdf, 0x20, 0x79, 0xf5, 0xed,
-0xd8, 0x80, 0x7a, 0x8c, 0xb9, 0x65, 0x62, 0x7c,
-0x1a, 0xb8, 0x41, 0x5d, 0x1e, 0x9f, 0x9c, 0x1e,
-0x1e, 0xc7, 0x3b, 0xaf, 0xc6, 0x27, 0xa7, 0xc6,
-0x27, 0x26, 0xe9, 0x5d, 0x58, 0xb4, 0x3b, 0x32,
-0x3e, 0x33, 0x06, 0xdd, 0xc9, 0xe9, 0x89, 0x49,
-0x20, 0x9b, 0xe2, 0x6e, 0xd0, 0x62, 0x5a, 0x1c,
-0xe4, 0x60, 0x8a, 0x5d, 0xb5, 0x46, 0x97, 0xb2,
-0x35, 0x77, 0x29, 0x62, 0x66, 0x38, 0x8e, 0xf7,
-0x7d, 0x31, 0xb3, 0x13, 0xbc, 0x59, 0xfb, 0xc4,
-0x2c, 0x2b, 0xab, 0x2e, 0x23, 0xd7, 0xac, 0x9b,
-0xb5, 0x1a, 0x63, 0x13, 0x40, 0x3f, 0xc3, 0xd2,
-0x98, 0x6d, 0x21, 0xe6, 0x4c, 0x8d, 0x5b, 0x77,
-0xc9, 0x2a, 0x96, 0xd8, 0xaa, 0xcb, 0x90, 0x59,
-0xb2, 0xb2, 0x52, 0x83, 0xb3, 0xe8, 0xde, 0xb0,
-0xd7, 0x92, 0x15, 0x0c, 0x8e, 0xdd, 0x95, 0x5c,
-0xa0, 0x1f, 0xb7, 0x34, 0x81, 0x4d, 0x24, 0x72,
-0x53, 0x1f, 0x43, 0x4c, 0x54, 0xb2, 0xc9, 0x9c,
-0xdb, 0xcb, 0xe5, 0xf9, 0x99, 0x2f, 0xc8, 0x26,
-0x21, 0x3f, 0x21, 0xeb, 0x26, 0xcc, 0x42, 0xad,
-0x2d, 0xb2, 0x0d, 0x8a, 0x55, 0x7a, 0xf3, 0xb5,
-0xe2, 0xbb, 0x8e, 0x1f, 0x23, 0x6b, 0x7d, 0x18,
-0x86, 0xbc, 0x54, 0xb1, 0x09, 0xe8, 0x5a, 0x31,
-0xb2, 0xde, 0x29, 0x3c, 0x4f, 0xf2, 0x77, 0xe8,
-0xed, 0xf3, 0xea, 0x36, 0x21, 0x03, 0xa1, 0x63,
-0x96, 0x5d, 0x1a, 0x94, 0x91, 0x89, 0x35, 0xf7,
-0x2f, 0xdf, 0xcf, 0x54, 0x67, 0x0c, 0xeb, 0x84,
-0x45, 0x22, 0x61, 0x68, 0x70, 0xdc, 0x42, 0x67,
-0xd6, 0x04, 0x5c, 0x42, 0x67, 0xc7, 0x26, 0x26,
-0xc6, 0x27, 0xb5, 0x43, 0xd3, 0xcb, 0x50, 0x17,
-0x06, 0x66, 0xb1, 0x40, 0xd0, 0x62, 0x01, 0x5d,
-0xda, 0xde, 0xbb, 0x00, 0xfa, 0x0f, 0xb0, 0x08,
-0x85, 0x41, 0x9e, 0x81, 0x74, 0x96, 0x6f, 0xa9,
-0x5d, 0x1a, 0xdb, 0xee, 0xc0, 0xac, 0x79, 0xfc,
-0xf6, 0xd2, 0x29, 0x31, 0xff, 0xd6, 0xac, 0xee,
-0x49, 0x63, 0x37, 0xb9, 0xc3, 0x0a, 0xca, 0x2e,
-0x9c, 0x76, 0x2b, 0x87, 0x4c, 0x0a, 0xb5, 0xa9,
-0xb8, 0xcf, 0x54, 0xd4, 0x67, 0xca, 0xef, 0x5c,
-0x11, 0xb6, 0x2e, 0xa6, 0x36, 0xad, 0x26, 0xd6,
-0x2e, 0x86, 0x57, 0xae, 0x86, 0xc8, 0x0d, 0x69,
-0x8d, 0xab, 0x6d, 0xe3, 0xa6, 0xbf, 0x7f, 0xe7,
-0xbc, 0x16, 0x2c, 0xaf, 0xae, 0x0c, 0x0c, 0xaa,
-0x93, 0x52, 0x52, 0x4f, 0x9f, 0x3e, 0x0b, 0x07,
-0xe1, 0x8f, 0x4e, 0x9d, 0xbd, 0xe2, 0xe4, 0xec,
-0xe6, 0xe9, 0x17, 0x18, 0x74, 0x2b, 0x22, 0x2a,
-0x3e, 0x21, 0x29, 0x2d, 0x3d, 0x4b, 0x28, 0x14,
-0x49, 0xf2, 0x0b, 0xa1, 0x10, 0xcb, 0xcb, 0xe5,
-0xd5, 0xca, 0xca, 0x1a, 0xa8, 0xc5, 0xf5, 0xcd,
-0x2d, 0x8d, 0xcd, 0xed, 0x2d, 0x6d, 0xdd, 0x6d,
-0x1d, 0x3d, 0x5d, 0x3d, 0xfd, 0x1d, 0x5d, 0xfd,
-0xdc, 0x3d, 0xff, 0xf8, 0xeb, 0x80, 0x01, 0xfc,
-0x69, 0x40, 0xdf, 0xc0, 0x70, 0x6f, 0xff, 0x50,
-0x6f, 0xff, 0x30, 0x9c, 0x9a, 0x7b, 0xf1, 0x2d,
-0x48, 0x88, 0x90, 0xdf, 0x08, 0x0f, 0x93, 0x29,
-0xda, 0x0e, 0x71, 0x2d, 0x9d, 0x22, 0xef, 0xb2,
-0x1f, 0x66, 0x89, 0x87, 0x78, 0xc4, 0x43, 0x2c,
-0x31, 0x33, 0x0b, 0x22, 0x80, 0x98, 0x2e, 0xa7,
-0x08, 0x8f, 0x06, 0x46, 0xcc, 0x6b, 0x79, 0x64,
-0x8c, 0x20, 0x4b, 0x86, 0x43, 0x54, 0x31, 0xbe,
-0x5c, 0x4b, 0x0d, 0xad, 0xbb, 0x1c, 0x4f, 0x8a,
-0xf3, 0x75, 0xb3, 0x94, 0x6b, 0x26, 0x66, 0xc9,
-0xcc, 0xfc, 0x39, 0x35, 0x38, 0xfe, 0x36, 0x5d,
-0x86, 0x6c, 0x2d, 0x7b, 0x79, 0x16, 0x59, 0x38,
-0x87, 0xb6, 0x24, 0x04, 0x56, 0xd2, 0xb9, 0xa0,
-0x20, 0xc2, 0x99, 0xf0, 0x45, 0xda, 0xcb, 0x59,
-0x3a, 0xc4, 0x6b, 0xed, 0x08, 0xb2, 0x55, 0x83,
-0xe5, 0x3c, 0xc4, 0x33, 0x6a, 0x88, 0xeb, 0x72,
-0x89, 0xc4, 0x85, 0x98, 0xd7, 0xe5, 0xb3, 0xb2,
-0x23, 0x97, 0x70, 0xe6, 0x54, 0x1d, 0xb2, 0xa4,
-0x19, 0xe2, 0x99, 0x69, 0x27, 0xeb, 0x6c, 0xfd,
-0x6c, 0xcf, 0xc3, 0x76, 0x12, 0x18, 0x04, 0xf1,
-0x73, 0x80, 0x8b, 0xaf, 0x8d, 0x37, 0x86, 0x2c,
-0xd7, 0x0e, 0xf1, 0xad, 0xb8, 0x4d, 0x02, 0xf3,
-0x77, 0x0a, 0xd9, 0x47, 0x7c, 0x65, 0xac, 0xcc,
-0xb7, 0xe3, 0x7c, 0x8e, 0x33, 0x9d, 0x5d, 0x8b,
-0x33, 0xd7, 0x5d, 0x2b, 0x55, 0xac, 0x9d, 0xc3,
-0x9b, 0xb5, 0xb1, 0x97, 0xa6, 0x28, 0xa7, 0xc0,
-0xf0, 0x5a, 0x9b, 0x9d, 0x6e, 0x0d, 0x7e, 0x76,
-0xd1, 0xc1, 0x9e, 0x81, 0xc1, 0xde, 0x41, 0x75,
-0x8f, 0x7a, 0xbc, 0x6b, 0xd4, 0xd0, 0x31, 0xb6,
-0xd2, 0x3e, 0x61, 0x6a, 0x9b, 0xc0, 0xfb, 0x6f,
-0x01, 0x9a, 0xc7, 0x19, 0xe4, 0x9e, 0x80, 0x76,
-0x0a, 0x13, 0x46, 0x80, 0x8e, 0x09, 0xbc, 0x7f,
-0xa9, 0x75, 0x02, 0x8f, 0x96, 0x1d, 0x93, 0x68,
-0x11, 0xd8, 0x02, 0x78, 0xf3, 0x98, 0xb1, 0x6b,
-0x7c, 0x15, 0xc7, 0x81, 0x60, 0xc2, 0x04, 0x64,
-0x6d, 0xe3, 0xc6, 0xe6, 0x09, 0x3c, 0x7e, 0xb6,
-0x4d, 0x18, 0xbb, 0xc8, 0x20, 0x10, 0x77, 0x10,
-0x3e, 0x2d, 0x63, 0xc6, 0xd6, 0x71, 0xec, 0xb6,
-0x8f, 0x1b, 0x81, 0xb3, 0x55, 0xb7, 0x71, 0x0c,
-0xc5, 0x35, 0x13, 0xce, 0xd4, 0x51, 0xb4, 0x6d,
-0xa3, 0x6b, 0x27, 0x98, 0xd9, 0x16, 0x02, 0x30,
-0x05, 0xf4, 0x8d, 0xe3, 0xcc, 0x8f, 0x95, 0x00,
-0xe0, 0xa8, 0xab, 0x52, 0xe3, 0x9f, 0x77, 0xcb,
-0xfa, 0x4c, 0x25, 0xbd, 0xa6, 0xfc, 0x6e, 0x93,
-0xa4, 0xd3, 0x98, 0xdd, 0xbe, 0x9a, 0xd1, 0xbc,
-0x18, 0x57, 0x63, 0x8c, 0xae, 0xc6, 0x07, 0x78,
-0x06, 0xcb, 0x17, 0x53, 0xea, 0x57, 0x41, 0xd5,
-0xbf, 0xe1, 0x67, 0x5b, 0x7d, 0xae, 0x55, 0x78,
-0xb5, 0xad, 0xa3, 0x23, 0x2c, 0x22, 0xf2, 0xf8,
-0xf1, 0x93, 0x50, 0x85, 0x4f, 0x9d, 0x3e, 0xef,
-0x70, 0xc5, 0xd9, 0xd5, 0xdd, 0xc7, 0xd7, 0x3f,
-0x38, 0x34, 0x2c, 0x3a, 0x3a, 0x36, 0x39, 0x29,
-0x25, 0x23, 0x23, 0x2b, 0x27, 0x27, 0xb7, 0x20,
-0x2f, 0xbf, 0xa8, 0xb0, 0x44, 0x51, 0x2a, 0x55,
-0x28, 0x94, 0x55, 0x0a, 0x55, 0x8d, 0xb2, 0xaa,
-0xa1, 0xaa, 0xa6, 0xa1, 0xae, 0xa1, 0xb1, 0xb6,
-0xbe, 0xb5, 0x81, 0xf9, 0x8d, 0x3c, 0x3e, 0x67,
-0x03, 0x00, 0x10, 0xf2, 0xcc, 0x0d, 0x6c, 0x29,
-0xde, 0xd4, 0xda, 0xd6, 0x44, 0x1e, 0xc4, 0xc1,
-0x01, 0xd7, 0x05, 0x32, 0x8a, 0x43, 0x8b, 0xc0,
-0x22, 0x1c, 0x07, 0x8e, 0xc0, 0xee, 0x72, 0x8e,
-0x92, 0xcf, 0xc4, 0x8a, 0x8c, 0xe1, 0xcc, 0xe2,
-0x94, 0x98, 0xbf, 0x84, 0x23, 0xb6, 0x56, 0xc6,
-0x9e, 0x5c, 0xfe, 0xaa, 0x3b, 0x91, 0x6b, 0x6b,
-0x02, 0x15, 0xc4, 0x67, 0x68, 0xa5, 0xe1, 0x5a,
-0x0c, 0x6d, 0x67, 0x39, 0x56, 0x4d, 0xad, 0x8c,
-0xeb, 0x6e, 0xa3, 0x2d, 0x9f, 0x89, 0x5d, 0xfd,
-0x3f, 0x2f, 0x7b, 0x9b, 0xed, 0x69, 0x62, 0x35,
-0xc8, 0x0f, 0x37, 0x63, 0x82, 0x8d, 0xd3, 0xac,
-0x42, 0x6c, 0xe1, 0x40, 0x7b, 0x6a, 0xd8, 0x8a,
-0xb0, 0x6b, 0xf5, 0x6d, 0x54, 0xb2, 0x52, 0x8f,
-0x6f, 0x2f, 0x5f, 0xc9, 0xdb, 0xbb, 0x71, 0x2d,
-0x32, 0xbb, 0xb1, 0xb0, 0x82, 0x46, 0x4a, 0xdc,
-0x86, 0x48, 0x4b, 0x9b, 0x59, 0xa8, 0x55, 0x86,
-0xf0, 0xb7, 0x8f, 0xad, 0x73, 0xd6, 0x8a, 0x91,
-0xfd, 0xe5, 0x6d, 0x4c, 0x97, 0x8a, 0xb3, 0x4e,
-0x54, 0xa2, 0x86, 0xdd, 0xdc, 0xe0, 0x13, 0xdb,
-0xa6, 0xae, 0x15, 0x6e, 0xab, 0x4c, 0x23, 0xdb,
-0xa5, 0xfc, 0x41, 0x0d, 0x8e, 0xa7, 0x99, 0x5b,
-0x9b, 0x05, 0xe7, 0xe6, 0xd6, 0xf6, 0xa6, 0x96,
-0xb6, 0xa6, 0xe6, 0xe6, 0xe6, 0xb6, 0x9e, 0x9a,
-0xee, 0xa9, 0xea, 0x81, 0xc5, 0x8a, 0x61, 0x7c,
-0x04, 0x84, 0x52, 0xcd, 0x3c, 0x70, 0x09, 0x00,
-0xba, 0x1c, 0x7e, 0xaf, 0x40, 0x85, 0x9a, 0xc0,
-0x90, 0x59, 0xf9, 0x4a, 0x82, 0x57, 0x0e, 0x23,
-0xa8, 0x08, 0xa2, 0x02, 0x4b, 0x87, 0xd1, 0x52,
-0x6a, 0x2f, 0x52, 0xaa, 0x99, 0x11, 0x95, 0xda,
-0xec, 0x04, 0xca, 0x04, 0x81, 0xc7, 0xd3, 0x6e,
-0x97, 0x32, 0xa7, 0x08, 0x9d, 0xb5, 0xf5, 0x9e,
-0x9c, 0xf7, 0xb0, 0x8e, 0xc2, 0x5e, 0x53, 0x41,
-0x8f, 0x51, 0xd2, 0xb9, 0x22, 0xee, 0x5c, 0x16,
-0x75, 0x9a, 0x04, 0x6d, 0x8b, 0xe9, 0x4d, 0xab,
-0xe9, 0xcd, 0xcb, 0xd1, 0x55, 0xc6, 0xb0, 0x8a,
-0xd5, 0x9b, 0x8a, 0xe5, 0x80, 0xf2, 0xa5, 0xe8,
-0xaa, 0xe5, 0xda, 0xe1, 0x55, 0xed, 0xd2, 0x97,
-0x5f, 0xd7, 0xee, 0x2d, 0x58, 0x35, 0x19, 0x7b,
-0xfa, 0xfa, 0x6f, 0x86, 0x46, 0x9d, 0x3a, 0x73,
-0xf6, 0xe8, 0xb1, 0x13, 0x1f, 0x7c, 0x78, 0xfa,
-0xec, 0xf9, 0x4b, 0x8e, 0x57, 0x5d, 0xdc, 0xdc,
-0xbd, 0xfc, 0xfc, 0x6f, 0xdc, 0x08, 0x8e, 0x08,
-0x8f, 0x88, 0x8f, 0x8d, 0x4b, 0x4d, 0x4c, 0x4e,
-0x4d, 0xcb, 0x10, 0x66, 0x0a, 0xa0, 0x1c, 0xe7,
-0xe7, 0x89, 0x0b, 0xa1, 0x22, 0xe7, 0x17, 0x96,
-0x17, 0x95, 0x94, 0x17, 0x15, 0x4b, 0x8b, 0x4b,
-0x65, 0xa5, 0xe5, 0xf2, 0x92, 0x72, 0x7c, 0xe6,
-0x9b, 0x54, 0x5e, 0x09, 0x08, 0x79, 0x36, 0x5d,
-0x45, 0xb9, 0xac, 0x82, 0x3c, 0x50, 0xae, 0x82,
-0x3c, 0x7e, 0xb0, 0xb2, 0x48, 0x56, 0x55, 0x26,
-0x83, 0x22, 0x5e, 0x49, 0x1f, 0xe8, 0xc7, 0x01,
-0x79, 0x92, 0x5e, 0x15, 0x25, 0xa6, 0x80, 0xcf,
-0x7e, 0x54, 0x30, 0xdd, 0x62, 0x39, 0xae, 0x2a,
-0x97, 0x57, 0x90, 0x07, 0xf7, 0x29, 0x99, 0x59,
-0x96, 0x98, 0x63, 0x55, 0xce, 0x4c, 0xa9, 0x40,
-0x10, 0xed, 0xd2, 0x67, 0xd0, 0xf1, 0x78, 0xaa,
-0xca, 0xe5, 0x4a, 0x0b, 0x11, 0x0c, 0x30, 0x4b,
-0x6c, 0x39, 0xf3, 0xbb, 0xbc, 0x25, 0x4a, 0xbe,
-0x5c, 0x46, 0x96, 0x25, 0x13, 0xfa, 0x90, 0x49,
-0xfe, 0x2a, 0xb0, 0xda, 0xac, 0x24, 0x3e, 0x3d,
-0xaf, 0x82, 0xd1, 0x4d, 0x51, 0xc9, 0x29, 0x09,
-0xb3, 0x68, 0x2c, 0x4f, 0xee, 0x27, 0xdb, 0x2b,
-0x37, 0xaf, 0xfd, 0x5f, 0x63, 0x2f, 0xfb, 0x6c,
-0x40, 0x5b, 0xb9, 0x72, 0x3b, 0x72, 0x19, 0x13,
-0x14, 0xf6, 0xd6, 0x2a, 0xac, 0x56, 0x29, 0x2d,
-0xe3, 0x6b, 0x23, 0xd7, 0xc6, 0x5e, 0x4e, 0x73,
-0x1b, 0xd3, 0x78, 0x82, 0x14, 0xe6, 0xb5, 0xe8,
-0x70, 0x85, 0xa5, 0x7a, 0x76, 0xfc, 0x4c, 0xe4,
-0x5a, 0xfa, 0xb0, 0xa4, 0x9c, 0x51, 0x95, 0x3c,
-0xb6, 0x54, 0x69, 0x35, 0x6b, 0xdf, 0xb1, 0x72,
-0xa5, 0xd4, 0xc6, 0x1b, 0x56, 0xf1, 0xa5, 0x4f,
-0x86, 0xbc, 0x4d, 0x5e, 0x59, 0x38, 0xc7, 0x5e,
-0x32, 0xd8, 0x71, 0xbb, 0xc2, 0x4e, 0xb8, 0xd7,
-0xda, 0x47, 0xb6, 0x26, 0x58, 0xf9, 0x93, 0xcb,
-0x90, 0xb5, 0x92, 0xd0, 0x2a, 0x16, 0x64, 0x84,
-0x6e, 0xf6, 0x2a, 0x62, 0x91, 0x1c, 0xa2, 0xcc,
-0xe7, 0x59, 0x2a, 0xad, 0xe2, 0xb2, 0x85, 0x8c,
-0x57, 0x91, 0xe8, 0x80, 0x3e, 0x55, 0xa5, 0x95,
-0xcd, 0x65, 0x0d, 0x23, 0x85, 0xad, 0x1a, 0x49,
-0x97, 0xb1, 0xa0, 0xcb, 0x28, 0xea, 0x34, 0x72,
-0x0f, 0x45, 0xbc, 0xa7, 0x81, 0x7d, 0xba, 0xa3,
-0xd9, 0x22, 0x49, 0x17, 0xf3, 0xf4, 0x48, 0x2b,
-0xca, 0x7c, 0x7c, 0x26, 0xe4, 0x2a, 0xcc, 0xe6,
-0x92, 0x55, 0xd6, 0x4f, 0x98, 0xbc, 0x6d, 0x57,
-0x44, 0x9e, 0xb4, 0x89, 0x8f, 0x94, 0xec, 0x34,
-0x8a, 0xbb, 0x8d, 0xf9, 0x5d, 0xab, 0x00, 0xb9,
-0xac, 0x08, 0x60, 0xcb, 0x4a, 0x41, 0x35, 0x72,
-0x3a, 0x80, 0xbf, 0x51, 0x88, 0x4f, 0x6c, 0x36,
-0x65, 0xb5, 0xac, 0x66, 0x35, 0x9b, 0x32, 0x9b,
-0x4d, 0xe9, 0xcd, 0xa6, 0xe4, 0x7a, 0x7c, 0x93,
-0x6f, 0x78, 0xe5, 0x6a, 0xa8, 0x72, 0x25, 0x48,
-0xba, 0xe4, 0x5f, 0xbe, 0xe8, 0x57, 0xb6, 0x18,
-0x5b, 0xb9, 0x5c, 0x39, 0x68, 0x9c, 0xff, 0xfb,
-0x99, 0xf7, 0x33, 0xc0, 0xdc, 0xc2, 0x42, 0xdf,
-0x40, 0x7f, 0x7e, 0x41, 0x61, 0xd0, 0x8d, 0xe0,
-0xcb, 0x0e, 0x8e, 0xa7, 0x3f, 0x3e, 0xf7, 0xf1,
-0xb9, 0x4b, 0x17, 0xc8, 0x2b, 0x41, 0xdd, 0xdc,
-0x7d, 0x7c, 0x7c, 0x03, 0xfd, 0x82, 0x6e, 0xdd,
-0x0a, 0x8b, 0x0c, 0x8f, 0x8a, 0x8b, 0x8c, 0x4e,
-0x8c, 0x4b, 0x48, 0x89, 0x4f, 0x4c, 0x4d, 0x4c,
-0xc9, 0x4a, 0x4d, 0xcf, 0x4a, 0xcb, 0xc8, 0x86,
-0x33, 0x72, 0x66, 0x36, 0x40, 0x2e, 0x00, 0x79,
-0x01, 0x41, 0x5e, 0xb6, 0x40, 0x9c, 0x95, 0x4d,
-0x10, 0xa1, 0x18, 0x71, 0x82, 0x64, 0x64, 0xe3,
-0x3b, 0x11, 0xe8, 0x43, 0xef, 0xcd, 0xef, 0x1d,
-0xc0, 0x07, 0xb0, 0xe7, 0xe2, 0x5b, 0x06, 0xc8,
-0xd3, 0xdd, 0x81, 0x98, 0x79, 0x40, 0xbd, 0x90,
-0x79, 0x79, 0x41, 0xa6, 0x50, 0x42, 0x97, 0x73,
-0xb3, 0x54, 0x04, 0xf3, 0x8a, 0x04, 0x91, 0x65,
-0x9b, 0x83, 0xa2, 0x29, 0xe7, 0x2c, 0x21, 0x90,
-0xe5, 0x66, 0x33, 0x6f, 0x52, 0xa0, 0x2f, 0x62,
-0xc8, 0xb3, 0xec, 0x9a, 0x75, 0x33, 0x3f, 0xfa,
-0x5e, 0x68, 0x7e, 0x4d, 0x40, 0x96, 0x9d, 0x59,
-0xf3, 0x2b, 0x15, 0xe8, 0x38, 0xdb, 0xcd, 0xe5,
-0xba, 0x40, 0x46, 0xcc, 0xb4, 0x94, 0x2b, 0x10,
-0x33, 0x80, 0xfa, 0xe7, 0x92, 0x87, 0xe7, 0xb3,
-0x83, 0x64, 0x2d, 0xd5, 0x39, 0x43, 0x28, 0xc9,
-0x66, 0x38, 0xf0, 0xe9, 0xad, 0xed, 0x35, 0xc3,
-0x6d, 0xed, 0x35, 0x2b, 0xcf, 0x30, 0xf9, 0x02,
-0xed, 0xe5, 0x1e, 0xb9, 0x4f, 0x1e, 0xb6, 0x6f,
-0x21, 0x97, 0xfa, 0x99, 0x89, 0xaf, 0x90, 0x0a,
-0x62, 0x63, 0x4d, 0x25, 0x0a, 0x2c, 0x7d, 0xc5,
-0x99, 0x29, 0xb0, 0x8d, 0x6f, 0xae, 0xb9, 0x9b,
-0x23, 0xe6, 0xe4, 0x72, 0x06, 0x62, 0x57, 0x40,
-0xa7, 0xc4, 0xf6, 0xa3, 0xc0, 0x2d, 0x64, 0x15,
-0xa0, 0x3a, 0x98, 0x63, 0x24, 0xb4, 0xb5, 0x08,
-0x53, 0x94, 0x7b, 0x1f, 0x01, 0xe5, 0xcc, 0x7b,
-0xc5, 0x00, 0x25, 0x96, 0x70, 0x1c, 0x98, 0x74,
-0x15, 0x31, 0x6b, 0xa9, 0x62, 0x36, 0xb1, 0x60,
-0x94, 0xc9, 0xce, 0x61, 0xa5, 0x0b, 0x59, 0xe5,
-0xd7, 0x90, 0x7b, 0x1b, 0x3f, 0x9b, 0x83, 0xc2,
-0x86, 0x29, 0xdb, 0x9c, 0x84, 0x16, 0x6e, 0xe7,
-0xf2, 0xca, 0xdc, 0x15, 0xb2, 0xbe, 0xe5, 0x98,
-0x8b, 0xcc, 0xf1, 0xe5, 0xbc, 0x61, 0xc5, 0x0a,
-0x45, 0xe7, 0x98, 0x23, 0x6b, 0x2d, 0x57, 0xc0,
-0x99, 0x9f, 0xc7, 0x4f, 0x24, 0x22, 0x94, 0x4d,
-0x7e, 0xa1, 0x84, 0xe5, 0x2f, 0xc9, 0x84, 0x4f,
-0x00, 0x58, 0x48, 0xe8, 0x33, 0x61, 0x4a, 0x04,
-0x78, 0x5e, 0x16, 0xb3, 0x17, 0x0a, 0x04, 0xb9,
-0x25, 0x59, 0xc5, 0xb5, 0xd9, 0xca, 0x81, 0x94,
-0x6a, 0x5d, 0x5a, 0xe3, 0x62, 0x5a, 0xe3, 0x6a,
-0x42, 0xbd, 0x31, 0xb1, 0xde, 0x98, 0xd6, 0xb8,
-0x9c, 0xd2, 0xb0, 0x9a, 0xdc, 0xb0, 0x9a, 0xda,
-0xb8, 0x92, 0xd6, 0xb4, 0x0c, 0x90, 0xdc, 0xb8,
-0x9a, 0xdc, 0x78, 0x8f, 0x75, 0x53, 0x1a, 0x4d,
-0xd4, 0x84, 0x8c, 0x66, 0x98, 0x32, 0xe2, 0x20,
-0x79, 0xf7, 0x41, 0x42, 0x1d, 0xe0, 0x46, 0x98,
-0x02, 0x1b, 0x53, 0x9b, 0x4c, 0xa9, 0x8d, 0x40,
-0x6c, 0x24, 0xaf, 0x48, 0x58, 0x4d, 0x69, 0x5c,
-0x49, 0x20, 0x2f, 0xb2, 0xe7, 0xde, 0xad, 0x60,
-0x17, 0xe2, 0xe9, 0x1b, 0x25, 0x58, 0x84, 0xfa,
-0x2a, 0x05, 0xe5, 0x1a, 0x13, 0xf1, 0x35, 0x0a,
-0xe0, 0xc6, 0xd5, 0xc4, 0x06, 0xee, 0x75, 0x0c,
-0x46, 0xde, 0x7b, 0x19, 0x8c, 0x74, 0x49, 0x5c,
-0x8d, 0x31, 0xb6, 0xc6, 0x18, 0x55, 0x49, 0x5e,
-0xc9, 0xa4, 0x5c, 0x81, 0x73, 0x6e, 0xa0, 0x6c,
-0xe9, 0x86, 0x6c, 0xc9, 0xab, 0x74, 0xe1, 0xa6,
-0x6c, 0x11, 0x0e, 0xbc, 0xf9, 0x9d, 0xab, 0x9d,
-0xe3, 0x46, 0xcd, 0xa2, 0x69, 0xf5, 0xef, 0x37,
-0x59, 0x7d, 0x4e, 0xb0, 0xb2, 0x6a, 0x1c, 0x9f,
-0x9c, 0x50, 0x55, 0x55, 0x25, 0x24, 0xa5, 0x5c,
-0x77, 0x71, 0xfb, 0xe0, 0xd4, 0xc7, 0x1f, 0x9d,
-0xfe, 0xf8, 0xcc, 0xd9, 0x0b, 0x17, 0x2e, 0x3b,
-0x39, 0x5d, 0x75, 0x76, 0x76, 0x71, 0x77, 0xf3,
-0xf4, 0xf6, 0xf2, 0x0d, 0xf4, 0xf5, 0x0b, 0xf2,
-0x0b, 0x0c, 0x09, 0xb8, 0x11, 0x7a, 0xe3, 0x66,
-0xc4, 0xcd, 0x5b, 0x11, 0xb7, 0xc2, 0x22, 0x42,
-0xc2, 0xa2, 0x00, 0xc2, 0xc2, 0xa3, 0x43, 0xc3,
-0xa2, 0x42, 0x23, 0xa2, 0x23, 0x22, 0xe3, 0xc2,
-0x23, 0x62, 0x22, 0x22, 0x63, 0xa1, 0x0d, 0x8f,
-0x88, 0x85, 0x2e, 0x81, 0xd8, 0xd0, 0xb0, 0x18,
-0x32, 0x15, 0x4b, 0x06, 0x63, 0x09, 0x1e, 0xcd,
-0xcd, 0x92, 0xc1, 0x78, 0xfe, 0x2c, 0x25, 0x86,
-0x41, 0x7b, 0xb3, 0xf1, 0x7c, 0xce, 0x1c, 0xf1,
-0x6d, 0x66, 0xef, 0x5c, 0x10, 0x47, 0x60, 0xbb,
-0xf6, 0xf6, 0x82, 0xd8, 0xf1, 0xbb, 0x22, 0x8e,
-0xff, 0x1b, 0xb3, 0xf7, 0x6e, 0x03, 0x6a, 0xa9,
-0x86, 0x7d, 0xce, 0x6b, 0x39, 0xf6, 0xae, 0x7c,
-0xb5, 0x06, 0x31, 0xdf, 0xc0, 0xf8, 0xbb, 0x95,
-0x6b, 0x4b, 0x1c, 0x1e, 0x19, 0x17, 0x46, 0x92,
-0x9f, 0xb3, 0xee, 0x0e, 0x1c, 0xfb, 0x09, 0x72,
-0xef, 0x2a, 0xaf, 0xc2, 0x22, 0xe2, 0x42, 0x23,
-0xec, 0x08, 0xb2, 0xab, 0x33, 0x3b, 0x1b, 0x7d,
-0x5b, 0xb9, 0xf1, 0x76, 0x05, 0x59, 0x11, 0x53,
-0xb9, 0x36, 0x8e, 0x8d, 0x5e, 0x83, 0x15, 0xce,
-0x86, 0x46, 0xc4, 0xdc, 0x8a, 0x48, 0x00, 0x1a,
-0x68, 0x43, 0xc3, 0xa2, 0x43, 0x22, 0x92, 0x42,
-0xc3, 0x63, 0xc3, 0x62, 0x92, 0x42, 0x12, 0x44,
-0xe1, 0x69, 0xc5, 0xa1, 0x79, 0x6d, 0x61, 0xc5,
-0x63, 0x41, 0xb2, 0xe5, 0x60, 0x19, 0xf3, 0x46,
-0x3c, 0x2c, 0x01, 0xe4, 0xed, 0x78, 0x30, 0x12,
-0xac, 0x5c, 0x09, 0xb6, 0xf7, 0x9a, 0xbc, 0x7b,
-0x05, 0xa8, 0x09, 0x37, 0x88, 0x69, 0x60, 0xc8,
-0x4d, 0x39, 0x8b, 0xc0, 0xa0, 0x7c, 0x39, 0x48,
-0xbe, 0x0c, 0x23, 0xc1, 0x04, 0xbf, 0xa1, 0x40,
-0xb0, 0xea, 0x32, 0x1c, 0xe4, 0x3c, 0x6e, 0x0a,
-0x9c, 0xa5, 0xbe, 0x0a, 0xb2, 0x44, 0x60, 0x21,
-0x2c, 0xc7, 0x59, 0xa0, 0x84, 0xd3, 0xab, 0x8c,
-0xe1, 0x40, 0x17, 0x9a, 0xb5, 0x92, 0xaf, 0x00,
-0x43, 0x7f, 0xe9, 0x12, 0x10, 0xf8, 0x94, 0x2d,
-0x7a, 0x95, 0x2d, 0x7a, 0x96, 0x2d, 0x7a, 0x94,
-0x2e, 0xba, 0x15, 0x2d, 0xba, 0x15, 0x2e, 0xf8,
-0x49, 0x17, 0x12, 0x6a, 0x96, 0x2a, 0xfa, 0x57,
-0xfb, 0x66, 0x4d, 0x0b, 0xab, 0x5f, 0x7e, 0xb5,
-0xfa, 0x1b, 0x86, 0xe5, 0xd5, 0x65, 0x8d, 0x4e,
-0xd3, 0xde, 0xd9, 0x25, 0xcc, 0x15, 0x87, 0x47,
-0x46, 0x07, 0xde, 0x08, 0xf1, 0xf1, 0x0d, 0x70,
-0xf5, 0xf4, 0x71, 0x71, 0xf5, 0x80, 0x43, 0xb1,
-0xa3, 0x93, 0xb3, 0xe3, 0x55, 0x17, 0x07, 0x47,
-0x67, 0x47, 0xa7, 0xeb, 0x8e, 0x57, 0xaf, 0x3b,
-0x39, 0xbb, 0x39, 0x5d, 0x73, 0x83, 0xea, 0xec,
-0xec, 0xe2, 0x01, 0xed, 0x35, 0x44, 0x3c, 0x5d,
-0x5c, 0xbd, 0x00, 0xdc, 0xdc, 0xa1, 0xf5, 0x86,
-0x71, 0x82, 0x78, 0x5d, 0x77, 0xf3, 0xba, 0xee,
-0xea, 0x8d, 0xad, 0x9b, 0x97, 0x8b, 0x9b, 0xf7,
-0x75, 0xa4, 0xf1, 0x26, 0x94, 0x64, 0xd0, 0x95,
-0x01, 0xda, 0x75, 0x25, 0x70, 0xdd, 0xd5, 0xf3,
-0x3a, 0x70, 0x73, 0x23, 0x04, 0x2e, 0x1e, 0x74,
-0x21, 0xb2, 0x72, 0x71, 0xbf, 0xee, 0xea, 0x65,
-0xdd, 0x45, 0xf0, 0x66, 0x45, 0x7b, 0x62, 0x97,
-0x2e, 0x21, 0x83, 0xce, 0x48, 0xc3, 0xcc, 0x5e,
-0x77, 0xf5, 0xc0, 0x41, 0x10, 0xe1, 0xce, 0xa8,
-0x01, 0x4a, 0x12, 0x04, 0x18, 0x52, 0x3e, 0x9e,
-0xae, 0x6e, 0x8c, 0x5c, 0xe7, 0xcf, 0x26, 0xd7,
-0xc5, 0x8d, 0xb1, 0xc8, 0xc5, 0xd5, 0x9d, 0x32,
-0xbf, 0x43, 0xb9, 0xd7, 0x19, 0xbf, 0x51, 0xdc,
-0xdd, 0x85, 0x95, 0x6b, 0xee, 0xf2, 0x5c, 0x87,
-0x72, 0xc9, 0x12, 0x32, 0x4e, 0x99, 0xbb, 0xbb,
-0xba, 0x71, 0x8e, 0xfd, 0xa2, 0xec, 0x75, 0x71,
-0xfd, 0x04, 0xb9, 0x34, 0xe2, 0x5c, 0xb8, 0xa9,
-0x5c, 0x1a, 0x5f, 0x17, 0x92, 0x09, 0x9c, 0x38,
-0x3a, 0xce, 0x00, 0x95, 0x62, 0x99, 0x2a, 0x9c,
-0xbd, 0x44, 0x84, 0xb5, 0xaf, 0x78, 0xde, 0x70,
-0x67, 0x4c, 0xe3, 0x19, 0x0e, 0x59, 0x04, 0xf4,
-0x8c, 0x14, 0xea, 0x58, 0x1b, 0x41, 0x98, 0x6c,
-0x40, 0x63, 0x93, 0xa2, 0x36, 0x72, 0xcd, 0xa9,
-0x68, 0xab, 0xa4, 0x2b, 0x26, 0xc0, 0x9a, 0x4a,
-0x5a, 0x07, 0xd4, 0x95, 0xe1, 0xe6, 0xc2, 0x7a,
-0xcc, 0x85, 0xe7, 0xae, 0xdb, 0xfb, 0xd9, 0x6e,
-0x50, 0xe8, 0x46, 0xb3, 0x4d, 0x42, 0xda, 0x75,
-0x75, 0x47, 0xc4, 0x95, 0x65, 0xee, 0xea, 0xe6,
-0x41, 0x23, 0x65, 0xb9, 0x07, 0x3d, 0xaf, 0xd3,
-0x9d, 0xeb, 0xc6, 0x68, 0x62, 0xb3, 0x71, 0xac,
-0x37, 0xac, 0xb5, 0x5c, 0x57, 0xf3, 0x5a, 0x7e,
-0xd7, 0xcd, 0xc3, 0xcb, 0xd9, 0x95, 0x38, 0x07,
-0x63, 0x01, 0xa9, 0xe8, 0xe3, 0xe2, 0xe6, 0x79,
-0xdd, 0x3d, 0xc0, 0xc5, 0xeb, 0x96, 0x8b, 0x5f,
-0xe4, 0xb5, 0xa0, 0x44, 0xd7, 0x30, 0x91, 0x7b,
-0xac, 0xea, 0x6a, 0x5a, 0x9f, 0xa3, 0x60, 0xfc,
-0x9a, 0x58, 0xe7, 0x24, 0x99, 0x77, 0x2e, 0x30,
-0x38, 0x89, 0x11, 0x1c, 0xc5, 0x0c, 0x82, 0x78,
-0x1e, 0x82, 0x93, 0xf8, 0xde, 0x06, 0x6a, 0x82,
-0x5d, 0x43, 0xae, 0x4a, 0x10, 0xac, 0x06, 0x9d,
-0xf3, 0xe7, 0x6c, 0x29, 0x9d, 0x25, 0x0b, 0x9f,
-0x88, 0xd8, 0x8a, 0xb8, 0x96, 0x4f, 0x10, 0x22,
-0xc2, 0x21, 0xd7, 0xe0, 0x5a, 0x60, 0x1e, 0x77,
-0x29, 0x5c, 0xf0, 0x2a, 0x32, 0xf8, 0x96, 0x2c,
-0x04, 0x4a, 0x17, 0x6f, 0xc9, 0x17, 0xa2, 0xaa,
-0x16, 0x13, 0xaa, 0x96, 0xb2, 0x9b, 0x56, 0x6a,
-0x87, 0x8d, 0xd3, 0xf3, 0x46, 0xc3, 0xaa, 0xe9,
-0xef, 0x3f, 0x29, 0xfa, 0x2b, 0xc3, 0xca, 0xea,
-0x8a, 0x61, 0x71, 0x49, 0xa3, 0xd3, 0x4e, 0x4c,
-0x4d, 0x0d, 0x0e, 0xa9, 0xbb, 0x7a, 0xba, 0x9b,
-0x9a, 0xdb, 0x55, 0x15, 0x15, 0x85, 0xc5, 0xa5,
-0xb9, 0xe2, 0xfc, 0x3c, 0x09, 0x03, 0xe2, 0xfc,
-0x42, 0x84, 0x82, 0x02, 0x49, 0x41, 0x31, 0x74,
-0x25, 0x05, 0x85, 0x00, 0xe2, 0x7c, 0xe8, 0x16,
-0xe5, 0x49, 0x0a, 0xfe, 0x5f, 0x7b, 0x75, 0xd0,
-0xda, 0x36, 0x0c, 0x05, 0x00, 0xf8, 0xff, 0xff,
-0x9d, 0xb6, 0x89, 0x65, 0x99, 0x30, 0x56, 0x76,
-0x18, 0x8c, 0x41, 0x21, 0xb1, 0xc7, 0x0e, 0xa3,
-0xb0, 0xc3, 0x60, 0x3b, 0xb4, 0x30, 0x36, 0x12,
-0xb7, 0x39, 0x4c, 0xb6, 0xec, 0xd4, 0x49, 0x9b,
-0xac, 0x2b, 0xec, 0xb0, 0xf1, 0xc1, 0x87, 0x78,
-0xcf, 0x96, 0xf4, 0x9e, 0x8c, 0x42, 0xe6, 0xa1,
-0xea, 0xd2, 0xb2, 0x0b, 0xba, 0xb1, 0x9b, 0x56,
-0xe5, 0xb7, 0xc3, 0xcc, 0x9d, 0xfe, 0xe1, 0xbc,
-0x7f, 0xd8, 0xab, 0xc6, 0x27, 0x0f, 0xe3, 0x64,
-0xfe, 0x41, 0x1a, 0xc7, 0x85, 0xd5, 0x64, 0x61,
-0x9c, 0x96, 0x18, 0xf6, 0xcc, 0x0b, 0x63, 0xdf,
-0x4f, 0xd8, 0x6f, 0x26, 0xe6, 0x69, 0x0f, 0x75,
-0x73, 0xcf, 0x2f, 0xae, 0x9b, 0xaa, 0x4c, 0xd2,
-0x45, 0xf7, 0xf6, 0x79, 0x75, 0x9f, 0x3a, 0x42,
-0x5a, 0x3b, 0x49, 0xc3, 0x70, 0xae, 0xa1, 0xee,
-0x7e, 0x57, 0xbb, 0x53, 0xe7, 0x93, 0xfe, 0xc5,
-0xf3, 0x9e, 0xac, 0xbb, 0xdb, 0x6d, 0x5a, 0x77,
-0x3e, 0xf6, 0x3f, 0x96, 0x1b, 0xda, 0xc8, 0x77,
-0x63, 0xd8, 0x27, 0x2e, 0x0e, 0xae, 0xca, 0x6f,
-0xee, 0xc6, 0xee, 0x6d, 0x7c, 0x5e, 0x1b, 0xf1,
-0x78, 0xa1, 0x93, 0x75, 0x0f, 0x0a, 0xbd, 0xb0,
-0xc9, 0xa7, 0xee, 0xe4, 0xa3, 0x9d, 0x4f, 0x7d,
-0xe7, 0x3f, 0xbb, 0xfc, 0x63, 0x9a, 0x82, 0xd0,
-0x5f, 0xa1, 0xfd, 0xdf, 0xc2, 0xfe, 0x45, 0x0a,
-0xe5, 0x5e, 0xcf, 0x47, 0x26, 0x1f, 0xab, 0x7b,
-0x70, 0xde, 0xe9, 0x27, 0x9d, 0x85, 0xd0, 0xf7,
-0x50, 0x85, 0xf8, 0xaa, 0x5a, 0x5c, 0xc6, 0xd7,
-0xef, 0xc2, 0x65, 0x1d, 0xdf, 0x5e, 0x97, 0xef,
-0xbf, 0xce, 0xae, 0x6e, 0x8b, 0xe5, 0x8f, 0x62,
-0xb5, 0x2e, 0x9a, 0x76, 0x5e, 0xb7, 0x65, 0xbd,
-0x99, 0x37, 0x6d, 0xfc, 0xd0, 0x05, 0x5d, 0x5c,
-0xb7, 0x29, 0xcd, 0xf1, 0x2c, 0x8d, 0xcd, 0x26,
-0xc7, 0x65, 0x8e, 0xff, 0xcd, 0x34, 0x9f, 0xa8,
-0x48, 0x67, 0x4c, 0xc1, 0xa3, 0xf4, 0x60, 0xf2,
-0xc5, 0x6a, 0x7d, 0xd1, 0x7f, 0x96, 0x21, 0xad,
-0xdb, 0x62, 0xd5, 0x8d, 0xf9, 0xe1, 0xf9, 0x18,
-0x9c, 0xad, 0xfa, 0xa0, 0xe9, 0x82, 0x59, 0xdd,
-0x86, 0x26, 0x8d, 0xc3, 0xce, 0x39, 0x0d, 0xcb,
-0xf5, 0x59, 0x5a, 0xdb, 0xb4, 0xe7, 0xcb, 0x4d,
-0x1a, 0xfb, 0x1d, 0xd2, 0x3e, 0x9b, 0xf4, 0xa9,
-0xdf, 0x7c, 0x6a, 0xaf, 0x3e, 0xdf, 0x7d, 0xfc,
-0x76, 0x7f, 0x7d, 0xb3, 0xfd, 0xf2, 0x7d, 0x7b,
-0xfb, 0xf3, 0x7e, 0x7d, 0xb7, 0x4d, 0xb6, 0xfe,
-0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6b, 0xbf,
-0x00, 0xff, 0xcf, 0xfd, 0x4c, 0x36, 0x10, 0x0e,
-0x00,
diff --git a/board/esd/hub405/Kconfig b/board/esd/hub405/Kconfig
deleted file mode 100644 (file)
index 2b9556a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_HUB405
-
-config SYS_BOARD
-       default "hub405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "HUB405"
-
-endif
diff --git a/board/esd/hub405/MAINTAINERS b/board/esd/hub405/MAINTAINERS
deleted file mode 100644 (file)
index e84a1d9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-HUB405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/hub405/
-F:     include/configs/HUB405.h
-F:     configs/HUB405_defconfig
diff --git a/board/esd/hub405/Makefile b/board/esd/hub405/Makefile
deleted file mode 100644 (file)
index 99e18b5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = hub405.o flash.o \
-       ../common/misc.o \
-       ../common/esd405ep_nand.o \
diff --git a/board/esd/hub405/flash.c b/board/esd/hub405/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/hub405/hub405.c b/board/esd/hub405/hub405.c
deleted file mode 100644 (file)
index 1423744..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-int board_revision(void)
-{
-       unsigned long osrl_reg;
-       unsigned long isr1l_reg;
-       unsigned long tcr_reg;
-       unsigned long value;
-
-       /*
-        * Get version of HUB405 board from GPIO's
-        */
-
-       /*
-        * Setup GPIO pin(s) (IRQ6/GPIO23)
-        */
-       osrl_reg = in_be32((void *)GPIO0_OSRH);
-       isr1l_reg = in_be32((void *)GPIO0_ISR1H);
-       tcr_reg = in_be32((void *)GPIO0_TCR);
-       out_be32((void *)GPIO0_OSRH, osrl_reg & ~0x00030000);     /* output select */
-       out_be32((void *)GPIO0_ISR1H, isr1l_reg | 0x00030000);    /* input select  */
-       out_be32((void *)GPIO0_TCR, tcr_reg & ~0x00000100);       /* select input  */
-
-       udelay(1000);            /* wait some time before reading input */
-       value = in_be32((void *)GPIO0_IR) & 0x00000100;         /* get config bits */
-
-       /*
-        * Restore GPIO settings
-        */
-       out_be32((void *)GPIO0_OSRH, osrl_reg);                   /* output select */
-       out_be32((void *)GPIO0_ISR1H, isr1l_reg);                 /* input select  */
-       out_be32((void *)GPIO0_TCR, tcr_reg);  /* enable output driver for outputs */
-
-       if (value & 0x00000100) {
-               /* Revision 1.1 or 1.2 detected */
-               return 1;
-       }
-
-       /* Revision 1.0 */
-       return 0;
-}
-
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF9F);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       return 0;
-}
-
-#define LED_REG (DUART0_BA + 0x20)
-int misc_init_r (void)
-{
-       unsigned long val;
-       int delay, flashcnt;
-       char *str;
-       char hw_rev[4];
-
-       /*
-        * Enable interrupts in exar duart mcr[3]
-        */
-       out_8((void *)(DUART0_BA + 4), 0x08);
-       out_8((void *)(DUART1_BA + 4), 0x08);
-       out_8((void *)(DUART2_BA + 4), 0x08);
-       out_8((void *)(DUART3_BA + 4), 0x08);
-
-       /*
-        * Set RS232/RS422 control (RS232 = high on GPIO)
-        */
-       val = in_be32((void *)GPIO0_OR);
-       val &= ~(CONFIG_SYS_UART2_RS232 | CONFIG_SYS_UART3_RS232 |
-                CONFIG_SYS_UART4_RS232 | CONFIG_SYS_UART5_RS232);
-
-       str = getenv("phys0");
-       if (!str || (str && (str[0] == '0')))
-               val |= CONFIG_SYS_UART2_RS232;
-
-       str = getenv("phys1");
-       if (!str || (str && (str[0] == '0')))
-               val |= CONFIG_SYS_UART3_RS232;
-
-       str = getenv("phys2");
-       if (!str || (str && (str[0] == '0')))
-               val |= CONFIG_SYS_UART4_RS232;
-
-       str = getenv("phys3");
-       if (!str || (str && (str[0] == '0')))
-               val |= CONFIG_SYS_UART5_RS232;
-
-       out_be32((void *)GPIO0_OR, val);
-
-       /*
-        * check board type and setup AP power
-        */
-       str = getenv("bd_type"); /* this is only set on non prototype hardware */
-       if (str != NULL) {
-               if ((strcmp(str, "swch405") == 0) || ((!strcmp(str, "hub405") && (gd->board_type >= 1)))) {
-                       unsigned char led_reg_default = 0;
-                       str = getenv("ap_pwr");
-                       if (!str || (str && (str[0] == '1')))
-                               led_reg_default = 0x04 | 0x02 ; /* U2_LED | AP_PWR */
-
-                       /*
-                        * Flash LEDs
-                        */
-                       for (flashcnt = 0; flashcnt < 3; flashcnt++) {
-                               /* LED_A..D off */
-                               out_8((void *)LED_REG, led_reg_default);
-                               for (delay = 0; delay < 100; delay++)
-                                       udelay(1000);
-                               /* LED_A..D on */
-                               out_8((void *)LED_REG, led_reg_default | 0xf0);
-                               for (delay = 0; delay < 50; delay++)
-                                       udelay(1000);
-                       }
-                       out_8((void *)LED_REG, led_reg_default);
-               }
-       }
-
-       /*
-        * Reset external DUARTs
-        */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) | CONFIG_SYS_DUART_RST); /* set reset to high */
-       udelay(10); /* wait 10us */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) & ~CONFIG_SYS_DUART_RST); /* set reset to low */
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Store hardware revision in environment for further processing
-        */
-       sprintf(hw_rev, "1.%ld", gd->board_type);
-       setenv("hw_rev", hw_rev);
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming HUB405");
-       } else {
-               puts(str);
-       }
-
-       if (getenv_f("bd_type", str, sizeof(str)) != -1) {
-               printf(" (%s", str);
-       } else {
-               puts(" (Missing bd_type!");
-       }
-
-       gd->board_type = board_revision();
-       printf(", Rev 1.%ld)\n", gd->board_type);
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-
-       return 0;
-}
index 97006116f4ed6ee2479a28b2a0b4da3a5f519be0..cda1d7bccc5911b5a471e43c249f150ce08fe16c 100644 (file)
@@ -199,8 +199,10 @@ int checkboard(void)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/esd/ocrtc/Kconfig b/board/esd/ocrtc/Kconfig
deleted file mode 100644 (file)
index 44b402d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_OCRTC
-
-config SYS_BOARD
-       default "ocrtc"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "OCRTC"
-
-endif
diff --git a/board/esd/ocrtc/MAINTAINERS b/board/esd/ocrtc/MAINTAINERS
deleted file mode 100644 (file)
index 85c1a12..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-OCRTC BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/ocrtc/
-F:     include/configs/OCRTC.h
-F:     configs/OCRTC_defconfig
diff --git a/board/esd/ocrtc/Makefile b/board/esd/ocrtc/Makefile
deleted file mode 100644 (file)
index 44b7d5d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = ocrtc.o flash.o ../common/misc.o cmd_ocrtc.o
diff --git a/board/esd/ocrtc/cmd_ocrtc.c b/board/esd/ocrtc/cmd_ocrtc.c
deleted file mode 100644 (file)
index 6dcbd8b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <pci.h>
-#include <pci_ids.h>
-#include <asm/4xx_pci.h>
-
-
-#if defined(CONFIG_CMD_BSP)
-
-/*
- * Set device number on pci board
- */
-int do_setdevice(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int idx = 1;      /* start at 1 (skip device 0) */
-       pci_dev_t bdf = 0;
-       u32 addr;
-
-       while (bdf >= 0) {
-               if ((bdf = pci_find_device(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_405GP, idx++)) < 0) {
-                       break;
-               }
-               printf("Found device nr %d at %x!\n", idx-1, bdf);
-               pci_read_config_dword(bdf, PCI_BASE_ADDRESS_1, &addr);
-               addr &= ~0xf;
-               *(u32 *)addr = (bdf & 0x0000f800) >> 11;
-               printf("Wrote %x at %x!\n", (bdf & 0x0000f800) >> 11, addr);
-       }
-
-       return 0;
-}
-U_BOOT_CMD(
-       setdevice,      1,      1,      do_setdevice,
-       "Set device number on pci adapter boards",
-       ""
-);
-
-
-/*
- * Get device number on pci board
- */
-int do_getdevice(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       u32 device;
-       char str[32];
-
-       device = *(u32 *)0x0;
-       device = 0x16 - device;      /* calculate vxworks bp slot id */
-       sprintf(str, "%d", device);
-       setenv("slot", str);
-       printf("Variabel slot set to %x\n", device);
-
-       return 0;
-}
-U_BOOT_CMD(
-       getdevice,      1,      1,      do_getdevice,
-       "Get device number and set slot env variable",
-       ""
-);
-
-#endif
diff --git a/board/esd/ocrtc/flash.c b/board/esd/ocrtc/flash.c
deleted file mode 100644 (file)
index 279746e..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0, size_b1;
-       int i;
-       uint pbcr;
-       unsigned long base_b0, base_b1;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       base_b0 = FLASH_BASE0_PRELIM;
-       size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0 << 20);
-       }
-
-       base_b1 = FLASH_BASE1_PRELIM;
-       size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
-       /* Re-do sizing to get full correct info */
-
-       if (size_b1) {
-               mtdcr (EBC0_CFGADDR, PB0CR);
-               pbcr = mfdcr (EBC0_CFGDATA);
-               mtdcr (EBC0_CFGADDR, PB0CR);
-               base_b1 = -size_b1;
-               switch (size_b1) {
-               case 1 << 20:
-                       size_val = 0;
-                       break;
-               case 2 << 20:
-                       size_val = 1;
-                       break;
-               case 4 << 20:
-                       size_val = 2;
-                       break;
-               case 8 << 20:
-                       size_val = 3;
-                       break;
-               case 16 << 20:
-                       size_val = 4;
-                       break;
-               }
-               pbcr = (pbcr & 0x0001ffff) | base_b1 | (size_val << 17);
-               mtdcr (EBC0_CFGDATA, pbcr);
-               /*          printf("PB1CR = %x\n", pbcr); */
-       }
-
-       if (size_b0) {
-               mtdcr (EBC0_CFGADDR, PB1CR);
-               pbcr = mfdcr (EBC0_CFGDATA);
-               mtdcr (EBC0_CFGADDR, PB1CR);
-               base_b0 = base_b1 - size_b0;
-               switch (size_b1) {
-               case 1 << 20:
-                       size_val = 0;
-                       break;
-               case 2 << 20:
-                       size_val = 1;
-                       break;
-               case 4 << 20:
-                       size_val = 2;
-                       break;
-               case 8 << 20:
-                       size_val = 3;
-                       break;
-               case 16 << 20:
-                       size_val = 4;
-                       break;
-               }
-               pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-               mtdcr (EBC0_CFGDATA, pbcr);
-               /*            printf("PB0CR = %x\n", pbcr); */
-       }
-
-       size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
-       flash_get_offsets (base_b0, &flash_info[0]);
-
-       /* monitor protection ON by default */
-       flash_protect (FLAG_PROTECT_SET,
-                       base_b0 + size_b0 - monitor_flash_len,
-                       base_b0 + size_b0 - 1, &flash_info[0]);
-
-       if (size_b1) {
-               /* Re-do sizing to get full correct info */
-               size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
-               flash_get_offsets (base_b1, &flash_info[1]);
-
-               /* monitor protection ON by default */
-               flash_protect (FLAG_PROTECT_SET,
-                               base_b1 + size_b1 - monitor_flash_len,
-                               base_b1 + size_b1 - 1, &flash_info[1]);
-               /* monitor protection OFF by default (one is enough) */
-               flash_protect (FLAG_PROTECT_CLEAR,
-                               base_b0 + size_b0 - monitor_flash_len,
-                               base_b0 + size_b0 - 1, &flash_info[0]);
-       } else {
-               flash_info[1].flash_id = FLASH_UNKNOWN;
-               flash_info[1].sector_count = -1;
-       }
-
-       flash_info[0].size = size_b0;
-       flash_info[1].size = size_b1;
-
-       return (size_b0 + size_b1);
-}
diff --git a/board/esd/ocrtc/ocrtc.c b/board/esd/ocrtc/ocrtc.c
deleted file mode 100644 (file)
index b815961..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include "ocrtc.h"
-#include <asm/processor.h>
-#include <i2c.h>
-#include <command.h>
-
-
-extern void lxt971_no_sleep(void);
-
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);     /* disable all ints */
-       mtdcr (UIC0CR, 0x00000000);     /* set all to be non-critical */
-       mtdcr (UIC0PR, 0xFFFFFF81);     /* set int polarities */
-       mtdcr (UIC0TR, 0x10000000);     /* set int trigger levels */
-       mtdcr (UIC0VCR, 0x00000001);    /* set vect base=0,INT0 highest priority */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-
-       /*
-        * EBC Configuration Register: clear EBTC -> high-Z ebc signals between
-        * transfers, set device-paced timeout to 256 cycles
-        */
-       mtebc (EBC0_CFG, 0x20400000);
-
-       return 0;
-}
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof (str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-#ifdef CONFIG_OCRTC
-               puts ("### No HW ID - assuming OCRTC");
-#endif
-#ifdef CONFIG_ORSG
-               puts ("### No HW ID - assuming ORSG");
-#endif
-       } else {
-               puts (str);
-       }
-
-       putc ('\n');
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-
-       return (0);
-}
diff --git a/board/esd/ocrtc/ocrtc.h b/board/esd/ocrtc/ocrtc.h
deleted file mode 100644 (file)
index 029e27e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- *                          Start Address    Length
- * +-----------------------+ 0x4000_0000     Start of Flash -----------------
- * | MON8xx code           | 0x4000_0100     Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused)              |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses    |                 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) |                 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address          |                 0x04
- * +-----------------------+ 0x4001_FFC0                     ^
- * | Hardware Information  |                 0x40            | MON8xx
- * +=======================+ 0x4002_0000 (sector border)    -----------------
- * | Autostart Header      |                                 | Applications
- * | ...                   |                                 v
- *
- *****************************************************************************/
diff --git a/board/esd/pci405/Kconfig b/board/esd/pci405/Kconfig
deleted file mode 100644 (file)
index 0a6524d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_PCI405
-
-config SYS_BOARD
-       default "pci405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "PCI405"
-
-endif
diff --git a/board/esd/pci405/MAINTAINERS b/board/esd/pci405/MAINTAINERS
deleted file mode 100644 (file)
index cf9c1c9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PCI405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/pci405/
-F:     include/configs/PCI405.h
-F:     configs/PCI405_defconfig
diff --git a/board/esd/pci405/Makefile b/board/esd/pci405/Makefile
deleted file mode 100644 (file)
index 9e659c7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = pci405.o flash.o ../common/misc.o cmd_pci405.o
-obj-y  += writeibm.o
diff --git a/board/esd/pci405/cmd_pci405.c b/board/esd/pci405/cmd_pci405.c
deleted file mode 100644 (file)
index 55c20d0..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * (C) Copyright 2002-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <net.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <asm/4xx_pci.h>
-#include <asm/processor.h>
-
-#include "pci405.h"
-
-#if defined(CONFIG_CMD_BSP)
-
-/*
- * Command loadpci: wait for signal from host and boot image.
- */
-int do_loadpci(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       unsigned int *ptr = 0;
-       int count = 0;
-       int count2 = 0;
-       int i;
-       char addr[16];
-       char str[] = "\\|/-";
-       char *local_args[2];
-
-       /*
-        * Mark sync address
-        */
-       ptr = 0;
-       *ptr = 0xffffffff;
-       puts("\nWaiting for image from pci host -");
-
-       /*
-        * Wait for host to write the start address
-        */
-       while (*ptr == 0xffffffff) {
-               count++;
-               if (!(count % 100)) {
-                       count2++;
-                       putc(0x08); /* backspace */
-                       putc(str[count2 % 4]);
-               }
-
-               /* Abort if ctrl-c was pressed */
-               if (ctrlc()) {
-                       puts("\nAbort\n");
-                       return 0;
-               }
-
-               udelay(1000);
-       }
-
-       if (*ptr == PCI_RECONFIG_MAGIC) {
-               /*
-                * Save own pci configuration in PRAM
-                */
-               memset((char *)PCI_REGS_ADDR, 0, PCI_REGS_LEN);
-               ptr = (unsigned int *)PCI_REGS_ADDR + 1;
-               for (i=0; i<0x40; i+=4) {
-                       pci_read_config_dword(PCIDEVID_405GP, i, ptr++);
-               }
-               ptr = (unsigned int *)PCI_REGS_ADDR;
-               *ptr = crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4);
-
-               printf("\nStoring PCI Configuration Regs...\n");
-       } else {
-               sprintf(addr, "%08x", *ptr);
-
-               /*
-                * Boot image via bootm
-                */
-               printf("\nBooting Image at addr 0x%s ...\n", addr);
-               setenv("loadaddr", addr);
-
-               local_args[0] = argv[0];
-               local_args[1] = NULL;
-               do_bootm (cmdtp, 0, 1, local_args);
-       }
-
-       return 0;
-}
-U_BOOT_CMD(
-       loadpci,        1,      1,      do_loadpci,
-       "Wait for pci-image and boot it",
-       ""
-);
-#endif
diff --git a/board/esd/pci405/flash.c b/board/esd/pci405/flash.c
deleted file mode 100644 (file)
index 113111d..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -monitor_flash_len,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/pci405/fpgadata.c b/board/esd/pci405/fpgadata.c
deleted file mode 100644 (file)
index d145826..0000000
+++ /dev/null
@@ -1,1492 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0xcd, 0x78, 0x61, 0x3f,
-0x00, 0x03, 0x70, 0x63, 0x69, 0x34, 0x30, 0x35,
-0x5f, 0x31, 0x5f, 0x30, 0x34, 0x2e, 0x62, 0x69,
-0x74, 0x00, 0xed, 0x9c, 0x7f, 0x78, 0x14, 0xc7,
-0x99, 0xe7, 0xdf, 0xae, 0xee, 0x11, 0x2d, 0xcd,
-0x88, 0x69, 0x89, 0x11, 0x1e, 0x3b, 0x32, 0xdb,
-0x1a, 0x09, 0x3c, 0xc1, 0x23, 0x69, 0x18, 0x61,
-0x85, 0x60, 0x79, 0xd4, 0x8c, 0x04, 0x19, 0x1b,
-0xd9, 0x4c, 0x6c, 0x27, 0x61, 0xf3, 0xf8, 0xc9,
-0x8e, 0x1d, 0x92, 0x23, 0x59, 0x92, 0x47, 0x90,
-0xdc, 0x2e, 0x49, 0x9c, 0x6c, 0x8d, 0x24, 0xd0,
-0x00, 0xb2, 0x19, 0x30, 0x97, 0xb0, 0x59, 0xce,
-0x3b, 0x60, 0x12, 0x0b, 0x9b, 0x64, 0x07, 0x61,
-0x1b, 0x61, 0x88, 0xdd, 0x92, 0x85, 0x23, 0x40,
-0x06, 0x85, 0xf5, 0x79, 0xb1, 0xcd, 0xe2, 0xc1,
-0x91, 0xbd, 0xb2, 0x23, 0x63, 0x19, 0xb3, 0x8e,
-0x00, 0x19, 0xdd, 0x5b, 0xdd, 0x3d, 0xdd, 0x2d,
-0xe1, 0xfd, 0x71, 0xb7, 0xf7, 0xdc, 0xde, 0xf3,
-0x9c, 0xdb, 0x7f, 0xb8, 0x50, 0xa9, 0xba, 0xab,
-0xab, 0xde, 0xfa, 0xd4, 0xf7, 0x7d, 0xdf, 0x6a,
-0x41, 0xbe, 0x7b, 0x54, 0xff, 0x0f, 0x80, 0xbb,
-0x1f, 0xa4, 0xe6, 0xaf, 0x7f, 0x6b, 0x7e, 0xf0,
-0x96, 0x3f, 0x9b, 0xf7, 0x67, 0xc1, 0xf9, 0x55,
-0xdf, 0xfd, 0xfa, 0x0a, 0x78, 0x00, 0x0a, 0x42,
-0xdf, 0x9b, 0x77, 0xcb, 0xf7, 0x57, 0xcf, 0x9b,
-0x3f, 0x1f, 0xbe, 0x0e, 0xce, 0x50, 0x30, 0x58,
-0x53, 0x1d, 0x5c, 0x50, 0x1d, 0xba, 0x05, 0x56,
-0x40, 0xfe, 0xbc, 0x05, 0x0b, 0x83, 0xb7, 0x2c,
-0x9c, 0x57, 0x03, 0xdf, 0x00, 0x88, 0x27, 0x27,
-0xf0, 0x7a, 0xe2, 0xaf, 0xbf, 0xf4, 0xcd, 0x20,
-0x50, 0x0e, 0x00, 0xa6, 0x05, 0xb9, 0x38, 0xfb,
-0x7f, 0x5e, 0x90, 0x93, 0x39, 0xa0, 0xf5, 0x95,
-0x41, 0x50, 0xd9, 0xbf, 0xc1, 0xa8, 0xcf, 0x0f,
-0x82, 0x6c, 0xff, 0x37, 0x17, 0x04, 0x05, 0x62,
-0xe0, 0xf9, 0x0e, 0x14, 0x4b, 0x30, 0xe5, 0xe2,
-0x14, 0x81, 0xea, 0xa5, 0x7f, 0xad, 0x8e, 0x4c,
-0xad, 0x62, 0xd7, 0xbf, 0xa3, 0xae, 0xf8, 0x13,
-0xaa, 0x84, 0xff, 0x58, 0xdd, 0x84, 0x04, 0x71,
-0xf0, 0x42, 0x1e, 0x70, 0xd4, 0x2c, 0xd4, 0xf7,
-0xe9, 0x75, 0xaa, 0x63, 0x5c, 0x7e, 0xbd, 0x68,
-0x46, 0x9f, 0xbb, 0x9f, 0x8c, 0xd3, 0x93, 0x05,
-0x3e, 0xa5, 0x70, 0x8c, 0x0f, 0x42, 0xb3, 0xde,
-0x23, 0xe9, 0x3d, 0xba, 0x59, 0x29, 0xff, 0x47,
-0x67, 0x92, 0x5c, 0x8d, 0x6c, 0x96, 0x7d, 0x59,
-0x31, 0x58, 0x20, 0x0b, 0x41, 0xad, 0x2e, 0xe9,
-0x18, 0x96, 0x1f, 0x89, 0x77, 0xf6, 0x3b, 0x81,
-0x74, 0xc0, 0x63, 0xa2, 0x4f, 0xc9, 0x0f, 0x92,
-0x5d, 0x9c, 0xde, 0x4e, 0x2d, 0xe9, 0x74, 0x3c,
-0x29, 0xcc, 0x55, 0x9d, 0x69, 0x18, 0x11, 0x9e,
-0x04, 0xd6, 0x8e, 0x64, 0x84, 0xb8, 0xde, 0xa7,
-0x92, 0x63, 0xf0, 0xba, 0xb0, 0x50, 0x75, 0xb7,
-0xf1, 0x7b, 0xe1, 0x0f, 0x10, 0x6a, 0x2e, 0xcc,
-0xf0, 0x54, 0xd0, 0xdb, 0x65, 0xb9, 0x27, 0x94,
-0xd7, 0xe1, 0x73, 0x3d, 0xee, 0x97, 0x1b, 0x46,
-0xe0, 0x1f, 0xe0, 0x79, 0xd5, 0x3d, 0xca, 0xaf,
-0x05, 0xbd, 0x9d, 0x22, 0xed, 0x26, 0xc7, 0x21,
-0xa4, 0xba, 0x93, 0xfc, 0x00, 0x1c, 0x87, 0xae,
-0xd8, 0xf4, 0x0c, 0x2f, 0x09, 0xb2, 0x56, 0xd7,
-0xef, 0xa8, 0xfb, 0xb6, 0x9b, 0x94, 0xab, 0xce,
-0xa7, 0xc8, 0x55, 0x79, 0x33, 0xc8, 0xaa, 0x98,
-0x21, 0x21, 0x9c, 0x3f, 0xed, 0x9e, 0x8e, 0x3b,
-0xc9, 0x26, 0xfc, 0x91, 0x33, 0xd8, 0x32, 0x00,
-0x8f, 0x80, 0x4c, 0x0b, 0x82, 0x64, 0x01, 0xce,
-0x2c, 0xbb, 0xe2, 0xdc, 0xac, 0xb6, 0x76, 0x5a,
-0x96, 0x75, 0xfe, 0x29, 0x39, 0x0b, 0x3f, 0xa3,
-0xe5, 0x9d, 0xe2, 0x5a, 0xe2, 0x35, 0xda, 0x45,
-0x45, 0x11, 0x5e, 0x68, 0x09, 0x1e, 0x75, 0xcf,
-0xe7, 0x07, 0x92, 0xaf, 0xd3, 0xe0, 0xf0, 0x5d,
-0x41, 0x67, 0xb1, 0x31, 0x6f, 0xca, 0x8d, 0xdd,
-0xf4, 0x7d, 0x8e, 0x75, 0xaf, 0x61, 0x5c, 0x7e,
-0x1f, 0x6e, 0xa3, 0xee, 0x0f, 0xf8, 0xc1, 0x3c,
-0xbd, 0x9f, 0x9d, 0xdc, 0xb0, 0xe0, 0xfc, 0x76,
-0x78, 0x60, 0x73, 0x95, 0x33, 0x90, 0xbe, 0x22,
-0x97, 0x52, 0x57, 0x86, 0x7f, 0xd7, 0x18, 0xcf,
-0x68, 0xd1, 0xc6, 0x64, 0xbb, 0x5c, 0x39, 0xe0,
-0x8c, 0xb5, 0x94, 0xc2, 0x81, 0x95, 0x95, 0x54,
-0x6c, 0x26, 0xa7, 0x8c, 0x71, 0xa1, 0xf0, 0xa8,
-0xf2, 0xf8, 0xb6, 0xca, 0xec, 0xa6, 0xe1, 0xbc,
-0x59, 0x70, 0x80, 0x56, 0xa7, 0xb1, 0x2f, 0x59,
-0x30, 0xde, 0x4f, 0x3a, 0x91, 0x78, 0x0c, 0x56,
-0xa9, 0xce, 0xd0, 0xcc, 0x26, 0xd8, 0x0f, 0x81,
-0x14, 0x8e, 0xe7, 0x05, 0x63, 0x1e, 0x86, 0x4b,
-0x0e, 0xb5, 0xbc, 0x0b, 0x61, 0xea, 0x4e, 0xf3,
-0x7e, 0xb8, 0x0c, 0xf5, 0x89, 0x1d, 0x69, 0xfe,
-0xb2, 0x71, 0xcf, 0x28, 0x8e, 0xe8, 0x69, 0x78,
-0x10, 0x70, 0xac, 0xd3, 0x30, 0x06, 0x61, 0x52,
-0xdf, 0xc6, 0x9f, 0x02, 0xbd, 0x9d, 0x28, 0x1d,
-0x81, 0xa3, 0x10, 0x52, 0x2a, 0xbb, 0xf8, 0x21,
-0xe1, 0x28, 0xd4, 0xad, 0x3c, 0x91, 0x2a, 0xef,
-0x35, 0xee, 0x49, 0x85, 0x6f, 0x8a, 0xac, 0x4e,
-0xdc, 0xe6, 0xeb, 0x53, 0x36, 0x40, 0x55, 0x5c,
-0xfc, 0x29, 0xf6, 0x45, 0xb7, 0x75, 0xaf, 0xa3,
-0x02, 0xb6, 0x80, 0x6f, 0x91, 0xb8, 0x2d, 0x6f,
-0x08, 0x36, 0xc0, 0x77, 0x55, 0x48, 0x91, 0x17,
-0x8d, 0x31, 0x13, 0x85, 0x42, 0x92, 0x50, 0xe4,
-0x2f, 0x8a, 0x52, 0xde, 0x8b, 0x90, 0x50, 0x56,
-0x2d, 0x12, 0x3d, 0xa4, 0x97, 0xd3, 0xc7, 0xac,
-0xbb, 0x30, 0x4e, 0xfa, 0xb9, 0x10, 0xb8, 0x28,
-0x9f, 0x25, 0xfd, 0x10, 0x86, 0x2a, 0xca, 0x9f,
-0xe7, 0xf5, 0x79, 0xd8, 0x7e, 0xe3, 0x3f, 0xc3,
-0x3b, 0xca, 0xb3, 0x31, 0x77, 0x6a, 0xc6, 0x5b,
-0x70, 0x49, 0xa9, 0xc7, 0x02, 0xff, 0x76, 0x9e,
-0x3e, 0x66, 0xdb, 0x1d, 0xaf, 0xc0, 0xab, 0x10,
-0x56, 0x02, 0x29, 0x7e, 0x08, 0x2e, 0x49, 0xf5,
-0x77, 0xb8, 0x07, 0xf9, 0x39, 0xc6, 0x78, 0x2e,
-0x90, 0x7e, 0xff, 0x66, 0x52, 0xae, 0x12, 0x45,
-0x8a, 0xdd, 0xeb, 0xf6, 0x54, 0x49, 0xce, 0x16,
-0x32, 0xdd, 0x78, 0x07, 0xd1, 0xd1, 0xe7, 0xdc,
-0x19, 0x0d, 0xdc, 0x1d, 0x95, 0x48, 0x9f, 0xb2,
-0x8f, 0x0b, 0x64, 0x9d, 0x52, 0x4b, 0x8b, 0x61,
-0x9f, 0xde, 0x92, 0x5f, 0x90, 0x3d, 0x10, 0x50,
-0xc4, 0x54, 0xde, 0x08, 0x77, 0x10, 0xaa, 0x14,
-0x67, 0x8a, 0xac, 0x37, 0xc6, 0x2c, 0x5d, 0xf4,
-0xb6, 0xe7, 0x92, 0x10, 0x56, 0x5c, 0xf8, 0x3c,
-0xe9, 0x12, 0x84, 0xb1, 0x2f, 0xce, 0x4e, 0xc3,
-0xce, 0xfc, 0xdc, 0xe3, 0x70, 0x3d, 0x84, 0x17,
-0xb9, 0xbb, 0xf8, 0x11, 0xc0, 0x3a, 0x65, 0x5a,
-0x8a, 0xbf, 0xc3, 0x98, 0x23, 0xbf, 0x44, 0xd9,
-0x10, 0x83, 0xbb, 0x85, 0x97, 0xe5, 0x31, 0xe8,
-0x02, 0x57, 0x92, 0x3f, 0x96, 0x6b, 0xe7, 0x58,
-0xa8, 0x6c, 0xe4, 0xaa, 0xa8, 0x73, 0x37, 0xff,
-0x2d, 0xcf, 0xb3, 0xe0, 0xa3, 0xe2, 0x30, 0x39,
-0x66, 0x2c, 0x51, 0xbf, 0x63, 0x19, 0xd7, 0x0a,
-0x01, 0xb4, 0x4f, 0x52, 0x88, 0x73, 0x2b, 0x2b,
-0x62, 0x37, 0xd6, 0xe9, 0xe3, 0x92, 0xe6, 0x4a,
-0xe5, 0xf6, 0xda, 0xca, 0x7e, 0xe7, 0x18, 0xb9,
-0x0f, 0x6d, 0xa2, 0x3c, 0xee, 0x6f, 0x6e, 0xe9,
-0x37, 0xc6, 0xba, 0x53, 0x9c, 0x05, 0xff, 0x44,
-0x7f, 0x7c, 0xd9, 0x3d, 0x7c, 0xdd, 0x2c, 0xf8,
-0x50, 0x9d, 0x17, 0x77, 0xad, 0xe5, 0x8f, 0x19,
-0xf6, 0x29, 0x16, 0xee, 0x26, 0x7f, 0xa8, 0x08,
-0x9f, 0x76, 0xaf, 0xff, 0xc2, 0x5b, 0xe9, 0x2b,
-0x2b, 0xeb, 0x14, 0x77, 0x86, 0xef, 0x35, 0xec,
-0x53, 0x71, 0x5c, 0x90, 0x4e, 0xaa, 0x37, 0x0f,
-0x09, 0xe3, 0x0d, 0x0b, 0x61, 0x82, 0xd6, 0xc7,
-0x5d, 0x63, 0xbc, 0x64, 0x8c, 0x67, 0x67, 0x51,
-0x86, 0x6c, 0xce, 0x94, 0xab, 0xe2, 0xb7, 0xf8,
-0xe5, 0xd8, 0x97, 0xca, 0x95, 0xe2, 0xa8, 0x6f,
-0xae, 0x31, 0x2e, 0xc5, 0x90, 0x8a, 0xff, 0x5d,
-0xf1, 0xfd, 0x6a, 0xb4, 0xb9, 0xc5, 0x0b, 0x07,
-0xa0, 0xb2, 0x49, 0x8c, 0x13, 0x81, 0xea, 0xef,
-0x17, 0x97, 0xfa, 0x0b, 0x1e, 0x83, 0xb4, 0xda,
-0x29, 0x10, 0x45, 0x44, 0xfb, 0x8c, 0x8b, 0x69,
-0xe2, 0x6d, 0xd3, 0xe7, 0xa1, 0xb3, 0xe4, 0xd7,
-0xe4, 0x7d, 0xa8, 0x51, 0x5d, 0xdb, 0xf8, 0x0a,
-0x98, 0xe0, 0xea, 0xd4, 0x8e, 0x94, 0xb3, 0xaa,
-0x4d, 0xbf, 0x67, 0x0a, 0xde, 0x83, 0xbf, 0x87,
-0x9f, 0xa8, 0x38, 0xdd, 0x23, 0x70, 0x05, 0x66,
-0x0d, 0x60, 0x21, 0x6b, 0xd8, 0x67, 0x42, 0x1a,
-0x87, 0x93, 0x30, 0x4f, 0xed, 0x18, 0x69, 0xbd,
-0x40, 0xeb, 0xd1, 0x18, 0x5d, 0x83, 0xbc, 0xdc,
-0xa8, 0xd7, 0xad, 0x13, 0x16, 0x93, 0x4d, 0x42,
-0x48, 0xf5, 0x27, 0x23, 0xbf, 0x87, 0x43, 0xe0,
-0x8b, 0x8b, 0x29, 0x52, 0xa1, 0xe8, 0xf6, 0x49,
-0x1d, 0x15, 0xf2, 0x26, 0xf0, 0xa9, 0xf8, 0xa3,
-0x21, 0x7c, 0x07, 0x5f, 0xa3, 0xd8, 0x45, 0x64,
-0x63, 0x3c, 0x45, 0x01, 0xa0, 0x35, 0x88, 0x78,
-0x20, 0x64, 0x00, 0xeb, 0x1e, 0x68, 0xc2, 0x75,
-0x44, 0x0c, 0xfb, 0xa4, 0x85, 0x71, 0xf1, 0xa4,
-0xbf, 0x46, 0x15, 0xbb, 0x5a, 0xb3, 0x30, 0xa1,
-0x74, 0x29, 0xae, 0x34, 0x2f, 0x13, 0x63, 0x1e,
-0x6e, 0x1c, 0x13, 0xae, 0xc8, 0xb7, 0xaa, 0x6e,
-0xe0, 0x47, 0x61, 0xc2, 0x1f, 0x5e, 0xee, 0xce,
-0xf2, 0xc3, 0xd3, 0x0c, 0xd6, 0x39, 0xc6, 0xc9,
-0x49, 0x39, 0x2c, 0xbb, 0x2f, 0xf0, 0x21, 0xe5,
-0x64, 0x4b, 0x38, 0x1b, 0x18, 0xc3, 0x5f, 0xca,
-0xf1, 0x73, 0x42, 0xd8, 0x1c, 0xac, 0x2a, 0x70,
-0x7e, 0x44, 0xfc, 0x74, 0x13, 0xad, 0xca, 0xe2,
-0xdc, 0x66, 0x4d, 0x7e, 0xbe, 0x84, 0xd8, 0x5c,
-0x45, 0x9d, 0xf3, 0x5a, 0x28, 0x7d, 0x0c, 0x0d,
-0x00, 0xfb, 0xf2, 0xa6, 0xc9, 0xcf, 0xbd, 0xf0,
-0x24, 0x54, 0x25, 0x9d, 0x19, 0x5f, 0x27, 0x2b,
-0x30, 0x9e, 0x8d, 0x9a, 0xfc, 0x1c, 0x41, 0x6c,
-0xe2, 0xf3, 0x32, 0xce, 0x5f, 0xf8, 0xb0, 0xa0,
-0x22, 0x5f, 0x54, 0x93, 0x9f, 0x87, 0xe1, 0x0d,
-0xa8, 0x97, 0x91, 0x4b, 0x3f, 0x66, 0x05, 0xc6,
-0xcf, 0x31, 0x93, 0x9f, 0x7b, 0x71, 0x88, 0x71,
-0x18, 0x33, 0xb8, 0x8e, 0xae, 0x40, 0xb8, 0x67,
-0x73, 0x86, 0x1f, 0x34, 0xf9, 0x59, 0x2a, 0xd4,
-0xc3, 0x2e, 0x05, 0xa7, 0x7b, 0x04, 0xc7, 0x13,
-0x8d, 0x31, 0x43, 0x2e, 0x98, 0xfc, 0x6c, 0x12,
-0xf7, 0x0b, 0x15, 0x8a, 0x98, 0x51, 0xb2, 0x8c,
-0x3d, 0xcc, 0x50, 0xc7, 0x8c, 0xf1, 0x94, 0x39,
-0x44, 0xd5, 0xb6, 0x9b, 0x56, 0x46, 0x7f, 0x40,
-0x5e, 0x81, 0x03, 0xe9, 0xca, 0xac, 0x73, 0x2d,
-0xe9, 0x37, 0xf9, 0x39, 0x1d, 0x1f, 0x33, 0x7f,
-0xcc, 0x15, 0xe4, 0x55, 0xf8, 0x30, 0x5d, 0x97,
-0x75, 0x07, 0xf9, 0x53, 0x26, 0x3f, 0x0f, 0xc3,
-0x44, 0xf4, 0xf3, 0x7d, 0xd5, 0xa3, 0x5a, 0x5f,
-0xb4, 0x7e, 0x9a, 0xfc, 0x74, 0x0c, 0xc8, 0xc7,
-0x69, 0xed, 0x76, 0xf7, 0xf3, 0x4b, 0xfd, 0xf4,
-0x0a, 0xd4, 0x65, 0x27, 0xf1, 0x73, 0x07, 0xb4,
-0x42, 0x59, 0xeb, 0xd2, 0xd5, 0xa4, 0x54, 0xf9,
-0x19, 0x54, 0xa2, 0x31, 0xda, 0xf9, 0xa9, 0x3e,
-0x4e, 0x59, 0x17, 0x8a, 0xbf, 0x5a, 0x76, 0x00,
-0x0b, 0x76, 0x7e, 0x7a, 0x06, 0xb0, 0x9d, 0xff,
-0x02, 0x76, 0xfd, 0x2e, 0xdc, 0x03, 0x02, 0xaa,
-0xd7, 0xce, 0xcf, 0x4e, 0x62, 0xf0, 0xf3, 0xcf,
-0x91, 0x9f, 0x61, 0x1a, 0x98, 0xc4, 0x4f, 0x61,
-0x0c, 0x6a, 0x05, 0x37, 0x9d, 0x91, 0x96, 0xb5,
-0xc5, 0x4d, 0x4d, 0x7e, 0x26, 0xa5, 0x3e, 0xc6,
-0x25, 0xb4, 0x5d, 0xa2, 0xb3, 0x00, 0x6d, 0xf7,
-0x4d, 0x93, 0x9f, 0x2b, 0xc4, 0x0d, 0xa4, 0x6a,
-0x91, 0x33, 0x55, 0x3c, 0x04, 0x06, 0x5f, 0xec,
-0xfc, 0xfc, 0x6b, 0xfd, 0x47, 0x66, 0x9d, 0xc5,
-0x4f, 0x01, 0xb1, 0x19, 0x88, 0x2d, 0xf5, 0x2c,
-0x39, 0x02, 0xfb, 0x10, 0x50, 0x4e, 0xc9, 0xce,
-0x4f, 0x38, 0xcd, 0xba, 0x00, 0xb8, 0x44, 0x8c,
-0xbe, 0x58, 0xfc, 0x64, 0xd8, 0xac, 0x52, 0xdc,
-0xdb, 0x18, 0x23, 0xf5, 0xbe, 0xe4, 0xf8, 0xe9,
-0x75, 0x5c, 0x4c, 0x5f, 0x82, 0xda, 0x98, 0x6b,
-0x8b, 0x56, 0x57, 0xcf, 0xea, 0x5e, 0x34, 0xf9,
-0x79, 0xce, 0x95, 0x91, 0x11, 0x47, 0xeb, 0x8a,
-0xb3, 0xb4, 0x1b, 0xef, 0xb9, 0x94, 0x92, 0x13,
-0x16, 0x3f, 0x61, 0x5f, 0x14, 0x6d, 0xa2, 0x98,
-0xf4, 0x95, 0x99, 0x7d, 0x31, 0xee, 0x59, 0xb4,
-0x5b, 0x3a, 0x88, 0x7b, 0x40, 0x32, 0x15, 0x62,
-0xef, 0x30, 0x57, 0x7b, 0x87, 0x1c, 0x3f, 0x4b,
-0xf0, 0x31, 0x42, 0x28, 0xe6, 0xd2, 0x78, 0x8d,
-0xef, 0x87, 0xcf, 0x1b, 0x36, 0xec, 0xd3, 0xcf,
-0xed, 0x86, 0x0f, 0x20, 0xbc, 0xa2, 0x3a, 0x65,
-0xf5, 0xf3, 0x98, 0x61, 0x9f, 0x7e, 0x29, 0x0d,
-0xfd, 0x10, 0x92, 0x02, 0x74, 0x46, 0x16, 0xfa,
-0xf5, 0xf7, 0xb3, 0xf8, 0xe9, 0x27, 0x4f, 0xc0,
-0xae, 0x84, 0x98, 0x2e, 0x1e, 0x86, 0xd7, 0x70,
-0xe7, 0x70, 0xa6, 0x91, 0x91, 0x8a, 0x51, 0xd7,
-0x84, 0x73, 0xeb, 0x63, 0xcb, 0x67, 0x00, 0x66,
-0xe8, 0xf6, 0x69, 0xf1, 0x33, 0x0c, 0xed, 0xc1,
-0xb2, 0x01, 0x71, 0x0d, 0xb9, 0x4a, 0x99, 0xbd,
-0x38, 0x9b, 0xc9, 0xb0, 0xc9, 0xcf, 0x30, 0xfc,
-0xb6, 0xf3, 0x7b, 0xef, 0xba, 0x7e, 0xc0, 0x5f,
-0x95, 0xff, 0x81, 0xde, 0x96, 0x75, 0xaf, 0xe5,
-0xdf, 0xcd, 0xf1, 0xf3, 0x46, 0x5c, 0x2b, 0xf1,
-0x70, 0xbf, 0x7b, 0x1f, 0xff, 0x9e, 0x7a, 0x85,
-0x4d, 0xb2, 0xc5, 0x4f, 0x70, 0x5c, 0xa5, 0x88,
-0xcd, 0x21, 0xd7, 0x25, 0x7e, 0x16, 0x9c, 0xa4,
-0xf5, 0x59, 0xf7, 0x18, 0x1a, 0x78, 0x8e, 0x9f,
-0x0f, 0x2b, 0xed, 0x50, 0x39, 0x2c, 0xfe, 0x30,
-0x52, 0x8a, 0x9d, 0xaa, 0xec, 0xc3, 0xe7, 0xbd,
-0x9b, 0x5b, 0xb7, 0xd0, 0xb1, 0x08, 0xbb, 0xd0,
-0x27, 0xd6, 0x90, 0x3a, 0x78, 0x5c, 0xef, 0x8b,
-0x6a, 0xd8, 0xa7, 0xec, 0x19, 0x10, 0xd9, 0x1e,
-0xe0, 0xc7, 0x3d, 0x80, 0x1a, 0x9b, 0x41, 0xbf,
-0x90, 0xe3, 0xe7, 0x5e, 0x6d, 0x29, 0xbb, 0x46,
-0xf9, 0x3a, 0xf2, 0x07, 0xbd, 0x2f, 0xef, 0x9a,
-0x36, 0x3f, 0x02, 0x7f, 0xa3, 0xff, 0xe8, 0x3c,
-0xae, 0x5b, 0xad, 0x90, 0xe3, 0x27, 0x87, 0xfc,
-0x9c, 0xe0, 0xea, 0x7b, 0xdc, 0xcd, 0x33, 0xea,
-0xe0, 0x0d, 0x4e, 0x5b, 0x63, 0xaa, 0xc1, 0xcf,
-0x84, 0xb0, 0x4a, 0x3c, 0x04, 0x55, 0x3d, 0xb8,
-0xcc, 0x03, 0xa8, 0xa5, 0xaa, 0xd8, 0x7a, 0xcf,
-0xe6, 0xf8, 0xc9, 0x05, 0xf0, 0x56, 0x73, 0xd8,
-0x8f, 0x5c, 0xb0, 0xc9, 0xa8, 0xb3, 0xf6, 0x77,
-0xd8, 0xcf, 0xad, 0xea, 0xc7, 0xee, 0xb9, 0xa0,
-0x55, 0x0a, 0xf4, 0x61, 0x21, 0x67, 0x9f, 0x50,
-0xb8, 0x0a, 0x26, 0x84, 0x5b, 0x06, 0xdc, 0xa3,
-0xce, 0x3a, 0xbc, 0x67, 0x78, 0x10, 0xfb, 0xa2,
-0xf2, 0x39, 0x7e, 0xbe, 0x07, 0x13, 0xec, 0x47,
-0xfb, 0xf8, 0x71, 0x78, 0x5f, 0xef, 0xcb, 0x70,
-0x5e, 0x8e, 0x9f, 0x57, 0x61, 0x9c, 0xd6, 0xa8,
-0x9b, 0xc6, 0xf8, 0xab, 0xf0, 0x47, 0x24, 0xbd,
-0x6b, 0xd8, 0xd4, 0x9f, 0xaa, 0x74, 0x1e, 0xba,
-0xc5, 0xf2, 0x51, 0x67, 0x26, 0x82, 0xef, 0x97,
-0xa8, 0x92, 0xc5, 0x4e, 0x12, 0x34, 0xde, 0xaf,
-0xdf, 0x31, 0x00, 0x87, 0x7c, 0xfe, 0x41, 0x67,
-0x30, 0xaf, 0x83, 0x71, 0x89, 0x8a, 0x32, 0x09,
-0xd9, 0xf8, 0x89, 0xdb, 0x02, 0x76, 0x3d, 0x8f,
-0xf1, 0xac, 0x2a, 0x85, 0xfb, 0x51, 0xd0, 0xe2,
-0xa7, 0x30, 0x46, 0xbb, 0x7a, 0xb0, 0x7b, 0x7b,
-0xa5, 0x1f, 0x31, 0x7e, 0xa6, 0x79, 0x00, 0x93,
-0x9f, 0xc2, 0x78, 0x8a, 0x75, 0xaf, 0x15, 0x07,
-0x0f, 0x6e, 0x53, 0x91, 0xf3, 0x63, 0x46, 0xbb,
-0x18, 0xf2, 0xf3, 0x55, 0x65, 0x21, 0x1b, 0x62,
-0xb6, 0x57, 0x85, 0x06, 0x5d, 0xbb, 0xf8, 0x12,
-0x93, 0x9f, 0x01, 0x61, 0x83, 0x50, 0x3d, 0x88,
-0xfa, 0x93, 0x3d, 0xcf, 0xd7, 0x23, 0xfa, 0x5b,
-0x72, 0xfa, 0x73, 0x18, 0xed, 0x73, 0x3b, 0x17,
-0xe8, 0x75, 0xde, 0x42, 0x06, 0x38, 0xb6, 0xbf,
-0xe7, 0xcb, 0xc5, 0x41, 0x63, 0xc8, 0x46, 0x91,
-0x9f, 0x6d, 0x88, 0xcd, 0x4d, 0x6b, 0x51, 0x7f,
-0x1e, 0xa0, 0x8f, 0xad, 0xfd, 0xec, 0x30, 0x1a,
-0x87, 0x7e, 0x45, 0x45, 0x17, 0x9c, 0xca, 0x2e,
-0x50, 0xdd, 0x0b, 0x50, 0xef, 0x7e, 0x08, 0xa1,
-0x6c, 0xa1, 0xcc, 0x17, 0xe7, 0xe9, 0x75, 0xca,
-0x8d, 0x3b, 0xe0, 0x6a, 0x10, 0xa7, 0xfb, 0x83,
-0x69, 0xe3, 0x1a, 0x3f, 0xa7, 0xcb, 0xce, 0xc1,
-0x3c, 0xbd, 0x2f, 0xc8, 0x4f, 0x38, 0x4e, 0xd7,
-0x5c, 0x78, 0x30, 0xd3, 0x10, 0x60, 0x9c, 0xcf,
-0xe2, 0xfb, 0xf5, 0x1a, 0xef, 0xd7, 0x5f, 0xb4,
-0xc3, 0xd3, 0x2e, 0x96, 0xfd, 0x4e, 0x6c, 0x2e,
-0x46, 0xfd, 0xc9, 0xf6, 0x9c, 0x38, 0x72, 0x3e,
-0x67, 0x4b, 0x8f, 0x92, 0xf6, 0x64, 0xd9, 0x3b,
-0xc9, 0xb5, 0xa1, 0x59, 0x22, 0xe3, 0xa7, 0x7f,
-0x25, 0xb2, 0x5c, 0xbf, 0x67, 0x94, 0xf1, 0x53,
-0xd0, 0x64, 0xb5, 0x4b, 0xdb, 0x03, 0x70, 0xac,
-0x5f, 0x33, 0xf9, 0x99, 0x84, 0x63, 0xd0, 0x45,
-0x5d, 0x69, 0xa7, 0xa6, 0x3f, 0xa9, 0x2b, 0xcb,
-0x5f, 0xce, 0xb5, 0x03, 0x44, 0x15, 0x0d, 0x4b,
-0xb8, 0x94, 0x35, 0x66, 0xc9, 0x8c, 0x9f, 0x39,
-0xbe, 0x48, 0x43, 0xa8, 0xe7, 0xc3, 0xcd, 0xee,
-0x9f, 0xa3, 0x2e, 0x30, 0x58, 0x40, 0x8c, 0xf1,
-0x44, 0x7e, 0x02, 0xf2, 0x53, 0xd9, 0x84, 0xdb,
-0xba, 0xce, 0x48, 0xa9, 0x40, 0xe6, 0x2c, 0x7e,
-0x6e, 0xd0, 0xb1, 0x89, 0x75, 0x0a, 0x2b, 0xf8,
-0xf2, 0x72, 0xf6, 0xd9, 0x88, 0xfc, 0x6c, 0x44,
-0x54, 0x79, 0x88, 0xa0, 0xf3, 0x73, 0x7b, 0x1e,
-0xb1, 0xf1, 0x53, 0x65, 0x9c, 0xa7, 0x4e, 0x19,
-0xba, 0x75, 0xbe, 0x54, 0x4d, 0xcb, 0xf1, 0x93,
-0xe1, 0xa8, 0x2e, 0xe6, 0x96, 0x74, 0x46, 0xc6,
-0x50, 0x63, 0x9e, 0x37, 0xf5, 0xe7, 0x45, 0xbd,
-0x7b, 0x83, 0x3a, 0xb3, 0x98, 0x58, 0x39, 0x6f,
-0xf2, 0x13, 0x65, 0xa7, 0x5c, 0x05, 0x4e, 0x4d,
-0x7f, 0x72, 0x55, 0x9e, 0xa5, 0x2a, 0xb2, 0x5c,
-0x7f, 0xbf, 0x28, 0xe3, 0xa7, 0x18, 0x88, 0x39,
-0x8b, 0xd3, 0x7d, 0xae, 0x7d, 0xf0, 0x1d, 0xc5,
-0x19, 0x23, 0xa7, 0x8c, 0x71, 0xf1, 0x96, 0xec,
-0xce, 0xa1, 0x9f, 0xf1, 0xb3, 0x3a, 0xee, 0x1c,
-0x44, 0x7e, 0xea, 0x75, 0x69, 0xcf, 0xee, 0xd2,
-0x4b, 0x85, 0xa8, 0x31, 0x91, 0x91, 0x22, 0x3e,
-0x2f, 0xce, 0xf8, 0x69, 0xb4, 0x5b, 0x09, 0xd8,
-0x2e, 0xa5, 0x75, 0x81, 0xb5, 0x9b, 0xc5, 0xc6,
-0xec, 0xb5, 0x1c, 0x23, 0xa5, 0xb4, 0x38, 0x06,
-0x21, 0x7c, 0xad, 0x06, 0x36, 0xd6, 0xb5, 0x38,
-0x4b, 0xc8, 0x4f, 0xfd, 0xdd, 0xfd, 0x82, 0x1f,
-0x9e, 0x15, 0x7c, 0x4f, 0x39, 0xb3, 0x91, 0x61,
-0x09, 0xf5, 0x67, 0xba, 0x3f, 0x4d, 0x7a, 0x0d,
-0x3b, 0xf3, 0x3b, 0xee, 0x62, 0xb2, 0x73, 0xd4,
-0x39, 0x0f, 0x98, 0x26, 0xaa, 0x60, 0x73, 0xdb,
-0x6b, 0xee, 0xef, 0xa5, 0x15, 0xcf, 0xa7, 0xcb,
-0x5a, 0x9c, 0x71, 0x72, 0x06, 0x9e, 0xa7, 0x15,
-0xbb, 0xc4, 0x15, 0xe6, 0xfe, 0xee, 0x47, 0xfd,
-0xf9, 0xc7, 0xd4, 0x3c, 0x86, 0xcd, 0xb3, 0x70,
-0x95, 0xde, 0x92, 0x65, 0xfa, 0xd3, 0xb0, 0x4f,
-0xe4, 0xa7, 0xf4, 0x61, 0x71, 0x78, 0x2b, 0xee,
-0xa9, 0x23, 0x68, 0x13, 0x0b, 0xe9, 0x24, 0xfd,
-0xf9, 0x0a, 0x4c, 0xa4, 0x34, 0x7e, 0x86, 0xe1,
-0x4a, 0x1a, 0xf5, 0x67, 0x3f, 0xef, 0x35, 0xde,
-0xaf, 0xb3, 0x68, 0x1b, 0xb4, 0xd2, 0x4a, 0x15,
-0x97, 0x2b, 0xda, 0x67, 0x22, 0x10, 0x10, 0xd5,
-0x82, 0xb9, 0x46, 0x9d, 0x04, 0xdb, 0x14, 0x94,
-0x9d, 0x70, 0x7b, 0x73, 0xde, 0x0e, 0x78, 0x06,
-0xc7, 0xd3, 0x7f, 0x1a, 0x27, 0x59, 0xaf, 0x8b,
-0x7b, 0xfa, 0x60, 0x93, 0x10, 0x80, 0x7c, 0x19,
-0x7d, 0xd1, 0x2e, 0x08, 0xa0, 0x71, 0x91, 0xe2,
-0x36, 0xbd, 0xae, 0xbb, 0xa4, 0x43, 0x98, 0x40,
-0x3d, 0x5f, 0x89, 0xeb, 0x9d, 0xad, 0x07, 0xb6,
-0xde, 0xfd, 0x34, 0x67, 0xf3, 0xb8, 0x94, 0xb9,
-0x3a, 0xb8, 0x2b, 0x73, 0xf3, 0x2a, 0xac, 0x7b,
-0x90, 0x89, 0x80, 0x61, 0xc3, 0x3e, 0x13, 0xa9,
-0xf1, 0xc6, 0x93, 0x10, 0x1a, 0x2e, 0x1d, 0xc5,
-0x5f, 0xb8, 0x8a, 0x6b, 0xac, 0x63, 0x94, 0xcf,
-0x9a, 0xfa, 0x73, 0x15, 0xa2, 0xd1, 0x97, 0x10,
-0x67, 0x22, 0x3f, 0x9f, 0xc5, 0xfd, 0x08, 0x17,
-0x46, 0x36, 0x9e, 0xd3, 0x9f, 0x58, 0x27, 0xe0,
-0xbe, 0xd9, 0x45, 0xf6, 0x0a, 0x87, 0x84, 0x2a,
-0x45, 0x73, 0x4e, 0x0c, 0xfd, 0xd9, 0x88, 0xd8,
-0x94, 0x65, 0xc5, 0x2b, 0x61, 0x3f, 0xf7, 0xcf,
-0x0e, 0x80, 0x1f, 0x48, 0x6f, 0x42, 0x1f, 0x33,
-0x9a, 0xbf, 0x0a, 0x4e, 0x06, 0x43, 0xe0, 0xdf,
-0xc7, 0xef, 0x15, 0x2e, 0x97, 0x85, 0xff, 0x14,
-0x37, 0xd0, 0xec, 0x7a, 0xbd, 0xdd, 0xce, 0x1b,
-0xc7, 0xf3, 0xae, 0x04, 0xeb, 0xc1, 0x7d, 0x8a,
-0x7f, 0x10, 0xae, 0x4a, 0x75, 0x37, 0xa0, 0x31,
-0x0e, 0xdf, 0x94, 0xe3, 0xe7, 0x08, 0x9c, 0x9c,
-0x8f, 0x36, 0x71, 0x10, 0xf9, 0x39, 0xae, 0xd6,
-0xf7, 0xe3, 0x7e, 0x14, 0x14, 0x72, 0xfc, 0x9c,
-0x88, 0x6c, 0x2e, 0xaa, 0xbe, 0xe8, 0xec, 0x22,
-0x08, 0x52, 0xa8, 0xce, 0x3a, 0xbb, 0x49, 0x90,
-0x98, 0xfc, 0x94, 0x5a, 0x67, 0x6b, 0x5b, 0xcd,
-0x00, 0xec, 0x93, 0x91, 0xe5, 0x19, 0x3b, 0x3f,
-0x05, 0x86, 0xfe, 0x4d, 0x19, 0xc6, 0x33, 0x89,
-0xed, 0x01, 0x05, 0x41, 0x83, 0x13, 0x12, 0xea,
-0xcf, 0xe3, 0xda, 0x56, 0x83, 0x75, 0x63, 0x69,
-0x6d, 0xcf, 0x01, 0x53, 0x7f, 0xea, 0x43, 0xbc,
-0x6c, 0x14, 0x39, 0x3f, 0x4e, 0x27, 0xe9, 0x4f,
-0xc6, 0xcf, 0xe3, 0x24, 0x84, 0x72, 0xd5, 0x19,
-0x40, 0xb1, 0xd2, 0xc5, 0xda, 0xd9, 0xf4, 0x27,
-0x6c, 0x16, 0xca, 0x5f, 0x2e, 0xc8, 0x44, 0xd8,
-0xe6, 0x53, 0xce, 0xf6, 0x9c, 0x8f, 0x2c, 0xfd,
-0x79, 0x43, 0x2b, 0xc8, 0x7d, 0xb8, 0xbf, 0xbb,
-0x84, 0x2e, 0xe6, 0xc8, 0x67, 0x22, 0x17, 0x0c,
-0xdb, 0x65, 0xfc, 0x6c, 0xdf, 0x57, 0x36, 0x52,
-0xb0, 0xd6, 0x37, 0x0b, 0x9e, 0x62, 0x8e, 0xfc,
-0x5a, 0x32, 0x6e, 0xd4, 0x31, 0xfd, 0xf9, 0x82,
-0x1c, 0x1c, 0x69, 0x3a, 0x34, 0xcd, 0x85, 0x36,
-0x18, 0x54, 0xff, 0x0c, 0xf5, 0xa7, 0xc9, 0xcf,
-0xc3, 0x70, 0x65, 0x85, 0x16, 0x5e, 0x38, 0x8c,
-0x73, 0xab, 0xbd, 0x83, 0xc5, 0xcf, 0x97, 0x94,
-0xe3, 0x50, 0x3b, 0xd2, 0x91, 0x99, 0x36, 0x22,
-0x7d, 0x48, 0xbb, 0x8e, 0xa1, 0x4e, 0xb6, 0xf1,
-0x33, 0xdd, 0x0e, 0xf2, 0x31, 0xb1, 0xf9, 0xcb,
-0x67, 0xe0, 0x69, 0xb1, 0x8c, 0xed, 0xe1, 0x36,
-0x7e, 0x42, 0xfb, 0xd6, 0xd9, 0x4c, 0x76, 0x9e,
-0x15, 0x9e, 0x6f, 0x29, 0x1b, 0xd1, 0xb4, 0xb0,
-0x7e, 0xcf, 0xa8, 0x67, 0x04, 0xfd, 0x15, 0x59,
-0x4d, 0x06, 0x35, 0xbf, 0x83, 0x05, 0x23, 0x6c,
-0xfc, 0xec, 0x44, 0x7e, 0xd6, 0xa2, 0xec, 0x44,
-0x69, 0x72, 0x19, 0x42, 0xcc, 0x06, 0x27, 0xf1,
-0x53, 0x47, 0x95, 0x06, 0x52, 0x4d, 0x7f, 0x1a,
-0x63, 0x86, 0xfc, 0x14, 0x98, 0x8f, 0xee, 0x4e,
-0x95, 0x6b, 0x7a, 0x9e, 0xb1, 0xa0, 0xd7, 0xe4,
-0xe7, 0x37, 0x85, 0x0d, 0xc4, 0x87, 0x7c, 0x89,
-0xd8, 0xf4, 0xa7, 0x7e, 0x21, 0x3f, 0xe9, 0x06,
-0xf0, 0x45, 0x36, 0x7d, 0xa2, 0xfe, 0xac, 0x40,
-0xfd, 0x29, 0x33, 0x7e, 0x22, 0xbc, 0x94, 0xa9,
-0xfa, 0x93, 0xa8, 0x24, 0x04, 0x39, 0x96, 0x6b,
-0xfa, 0xd3, 0xe4, 0xe7, 0x5b, 0xc2, 0x25, 0xe5,
-0x39, 0x74, 0x95, 0x1b, 0x34, 0x46, 0x32, 0xff,
-0xdd, 0xc6, 0xcf, 0xdd, 0x97, 0x3e, 0x3b, 0x5f,
-0xd9, 0x9c, 0x9a, 0x81, 0x9c, 0x57, 0xc2, 0x91,
-0xbd, 0x58, 0xc7, 0x99, 0xfa, 0x13, 0xba, 0x57,
-0xf8, 0x90, 0x9f, 0x05, 0x32, 0x64, 0xe4, 0x85,
-0x52, 0x94, 0x4e, 0xe2, 0xe7, 0x41, 0xb1, 0x22,
-0xe6, 0x94, 0xb6, 0x0a, 0x12, 0x63, 0x39, 0xae,
-0xe9, 0x53, 0x9c, 0x3e, 0xd6, 0x1a, 0x3f, 0x05,
-0x1f, 0xeb, 0xde, 0x0a, 0xfc, 0xa5, 0xb9, 0xe8,
-0xc8, 0x5b, 0xfc, 0x64, 0xfa, 0x13, 0x6a, 0xd9,
-0x70, 0xe8, 0xfb, 0x8a, 0xcb, 0xc6, 0x4f, 0xd4,
-0x9f, 0x3a, 0xc2, 0xcb, 0xb1, 0xa0, 0x2e, 0x9c,
-0xc2, 0x4f, 0x18, 0x86, 0x85, 0x5a, 0x7c, 0x02,
-0xc6, 0x94, 0x20, 0x37, 0x49, 0x7f, 0xce, 0x95,
-0x37, 0x82, 0x6f, 0x4f, 0x12, 0xe7, 0x88, 0xf1,
-0x93, 0xe9, 0x4f, 0x8b, 0x9f, 0x8d, 0xe8, 0xa2,
-0xf9, 0x75, 0xfd, 0xb9, 0x1f, 0x9d, 0x60, 0xa6,
-0x89, 0x4c, 0xfd, 0x39, 0x13, 0xda, 0xe5, 0xb2,
-0x38, 0xee, 0xb7, 0x67, 0xd0, 0x3f, 0xd2, 0xec,
-0xc5, 0xf2, 0xdf, 0x67, 0xc2, 0xef, 0x33, 0x9f,
-0xcf, 0x8a, 0x3f, 0xe2, 0xcf, 0x4a, 0x7f, 0x4c,
-0x6a, 0x20, 0xb5, 0xf8, 0xd9, 0x06, 0x57, 0xe4,
-0xb0, 0xb8, 0x6c, 0x5f, 0x03, 0x02, 0xaa, 0x79,
-0x92, 0xfe, 0x54, 0x1c, 0x1f, 0x29, 0x27, 0x93,
-0xe1, 0x8b, 0xee, 0x4b, 0xfc, 0x55, 0x65, 0x22,
-0x15, 0x1e, 0x42, 0xff, 0xfd, 0xb4, 0xc9, 0xcf,
-0x9f, 0x42, 0x7b, 0x51, 0x65, 0xdc, 0xd9, 0xdc,
-0xb0, 0x43, 0x39, 0x90, 0xae, 0x1e, 0x12, 0x51,
-0x7f, 0x1a, 0x75, 0xc5, 0xd0, 0xd1, 0xd2, 0xae,
-0xc9, 0xce, 0xe2, 0x33, 0xe2, 0x01, 0xb9, 0xba,
-0x1f, 0xeb, 0x5e, 0x34, 0xf9, 0xc9, 0xf6, 0xf7,
-0x00, 0x38, 0x83, 0xbe, 0x0e, 0x7d, 0x7f, 0x0f,
-0x92, 0xdc, 0xda, 0xec, 0xc4, 0xb1, 0x3e, 0xc9,
-0xf6, 0xcd, 0x51, 0x64, 0xf9, 0x84, 0xac, 0xf9,
-0x9b, 0xe7, 0x0d, 0x9b, 0x4f, 0x81, 0x66, 0x7a,
-0x0c, 0xef, 0x9a, 0xd6, 0x50, 0xab, 0x33, 0x16,
-0x3f, 0xa5, 0x8b, 0x28, 0xa1, 0xea, 0x47, 0xb1,
-0xdd, 0xb8, 0xc4, 0xb4, 0x14, 0x0a, 0xd8, 0xec,
-0x0a, 0xbd, 0x6e, 0x0b, 0xee, 0xef, 0x28, 0xcb,
-0xb6, 0x38, 0x35, 0xbe, 0xe8, 0xfe, 0x6d, 0x36,
-0x66, 0xfa, 0xef, 0xcc, 0xe5, 0x25, 0xa8, 0xdd,
-0x56, 0x69, 0x75, 0xc9, 0x8c, 0xc5, 0x4f, 0xf4,
-0x8f, 0xf6, 0x93, 0x00, 0x71, 0xce, 0xcb, 0xc3,
-0xb1, 0x96, 0x03, 0xfd, 0x62, 0xd0, 0x9c, 0x07,
-0x5a, 0xb8, 0x2a, 0xfa, 0x3e, 0x84, 0xa3, 0xac,
-0x9f, 0x12, 0xf6, 0xb3, 0x37, 0x90, 0x99, 0x91,
-0x9d, 0xa3, 0xdf, 0x73, 0xd7, 0x8d, 0x23, 0xca,
-0xf3, 0x50, 0x4f, 0xdc, 0x17, 0xca, 0x51, 0x2f,
-0x49, 0x53, 0xf4, 0xe7, 0xbb, 0xae, 0xe3, 0xf7,
-0x3f, 0x5d, 0xe6, 0x4a, 0xf2, 0x3e, 0xd4, 0xf3,
-0xe8, 0xa7, 0x2e, 0x37, 0xfd, 0x77, 0x55, 0x7a,
-0x1b, 0x1e, 0x6a, 0x08, 0xa5, 0x45, 0x28, 0xf0,
-0xc1, 0x93, 0x89, 0xaa, 0xac, 0x73, 0x3b, 0x19,
-0xcd, 0xcb, 0xf1, 0x73, 0x48, 0x68, 0x9d, 0xef,
-0x03, 0xc4, 0x3b, 0x00, 0xd3, 0xec, 0x05, 0x12,
-0xb9, 0x90, 0xe3, 0x67, 0xd1, 0x2f, 0x51, 0xa3,
-0xa0, 0x5f, 0xd5, 0xd2, 0x52, 0x2e, 0x3e, 0xc9,
-0x84, 0xf6, 0x56, 0x32, 0x6a, 0x8c, 0x19, 0x94,
-0xf4, 0xb2, 0xf0, 0x65, 0x28, 0xd0, 0xc6, 0x13,
-0x0d, 0xa4, 0x0f, 0xa7, 0x6c, 0xfe, 0xfb, 0x53,
-0x79, 0x1f, 0x7b, 0x6f, 0x3d, 0xea, 0x56, 0xf9,
-0x51, 0x32, 0xc1, 0xfc, 0xe2, 0xd3, 0x36, 0xff,
-0x7d, 0x37, 0xfc, 0x1e, 0x9e, 0x15, 0xa7, 0xb7,
-0xf1, 0xe7, 0xe4, 0x3f, 0xcc, 0xd7, 0xe6, 0x21,
-0x65, 0xcc, 0xd1, 0x69, 0xa6, 0x89, 0x16, 0xc9,
-0x59, 0x51, 0x24, 0xb2, 0x7c, 0x85, 0x6a, 0xe3,
-0x19, 0x34, 0xf5, 0x67, 0x14, 0x76, 0x12, 0xb9,
-0xb9, 0xc0, 0x89, 0x6b, 0xfa, 0x31, 0x35, 0x70,
-0x2a, 0x2a, 0x91, 0x2e, 0xc3, 0x17, 0x45, 0x7e,
-0x0e, 0xb6, 0x67, 0xca, 0xe4, 0xe4, 0x1d, 0x64,
-0x26, 0xda, 0x4b, 0xe5, 0x88, 0xf7, 0x34, 0xa9,
-0x13, 0xf4, 0x3a, 0xe4, 0x27, 0x7d, 0x87, 0x06,
-0xcf, 0x4f, 0x2f, 0xe0, 0x7b, 0x07, 0x7f, 0x9f,
-0xae, 0x1b, 0x09, 0x78, 0xf9, 0xad, 0x44, 0xaf,
-0x53, 0x6e, 0xec, 0x50, 0xae, 0xa4, 0xff, 0x8a,
-0xba, 0x53, 0xce, 0x41, 0x98, 0x90, 0xea, 0xfb,
-0x70, 0x1d, 0x0d, 0x1a, 0x3a, 0xb9, 0xd3, 0xd1,
-0x0f, 0x47, 0xe5, 0x50, 0xc4, 0x4d, 0xcb, 0x2b,
-0xf2, 0x5f, 0x67, 0xfa, 0x33, 0x65, 0xe7, 0x27,
-0xd9, 0x2c, 0x96, 0x29, 0x4b, 0xb3, 0x3e, 0x0f,
-0xd7, 0x4e, 0x70, 0xa3, 0x8f, 0x91, 0x0b, 0x86,
-0x5d, 0x53, 0xf8, 0x5b, 0xf8, 0x6f, 0x0c, 0xe1,
-0x51, 0x12, 0x92, 0x7e, 0xc6, 0xfc, 0xf7, 0xe5,
-0x36, 0x7e, 0x9e, 0x60, 0xa1, 0x5b, 0xd5, 0xe9,
-0x9d, 0x5b, 0x40, 0x36, 0xe1, 0x58, 0xef, 0xb9,
-0x9e, 0xbc, 0x06, 0x39, 0x7e, 0xfe, 0x1c, 0x5e,
-0x13, 0xba, 0xda, 0xdc, 0x2b, 0xf9, 0x05, 0xe8,
-0x1b, 0x86, 0x51, 0x88, 0xa2, 0xff, 0x6e, 0xc4,
-0x0b, 0x90, 0x9f, 0xc3, 0x80, 0xfa, 0x33, 0xc1,
-0x9f, 0x53, 0xc6, 0xe0, 0x27, 0x30, 0x9d, 0xf9,
-0xef, 0xfa, 0xf3, 0x90, 0x9f, 0x70, 0x94, 0x2e,
-0x64, 0x5a, 0x6a, 0x05, 0xbc, 0x23, 0xd7, 0x2a,
-0xcb, 0x6c, 0xfc, 0x84, 0x15, 0x90, 0x50, 0x7d,
-0xb7, 0x3b, 0x53, 0xfc, 0x62, 0xd8, 0x90, 0xf5,
-0x4d, 0xf1, 0xdf, 0xc9, 0x86, 0xf8, 0xdc, 0x45,
-0x9f, 0xd9, 0x8e, 0xec, 0xd9, 0x03, 0x73, 0x58,
-0xdd, 0x09, 0xcb, 0x7f, 0xe7, 0x12, 0x11, 0xe4,
-0xe7, 0x0e, 0xb2, 0x4a, 0xda, 0xc0, 0x3a, 0x2c,
-0x91, 0x63, 0x0e, 0x7d, 0xda, 0xbb, 0x5d, 0x32,
-0xba, 0xb5, 0x0b, 0x19, 0x36, 0xe3, 0xd2, 0x30,
-0xea, 0x33, 0xbb, 0xff, 0x5e, 0x38, 0x0e, 0x1f,
-0x2b, 0x61, 0x65, 0xd9, 0xe0, 0x8c, 0x97, 0x99,
-0x10, 0x65, 0x62, 0xf3, 0x6d, 0x21, 0xc7, 0xcf,
-0x97, 0xe1, 0xe3, 0x2c, 0x72, 0xfe, 0x5e, 0xde,
-0x23, 0xfe, 0x23, 0xfa, 0xef, 0x1d, 0xe8, 0xdb,
-0x9b, 0xfc, 0xc4, 0xf7, 0x4b, 0xef, 0xe2, 0x9c,
-0x2c, 0xa6, 0xda, 0x49, 0xaa, 0x98, 0x31, 0x9e,
-0x30, 0xec, 0x33, 0xba, 0xb8, 0x0f, 0xb6, 0xc4,
-0xe3, 0x0a, 0x9a, 0x9e, 0x20, 0x3e, 0x82, 0xfc,
-0xf4, 0xdb, 0xf8, 0x59, 0xb4, 0x9b, 0xee, 0x11,
-0x7c, 0x8b, 0xb0, 0xee, 0x3d, 0x7c, 0x87, 0xef,
-0x2a, 0xe2, 0x76, 0x93, 0x05, 0xe9, 0xa2, 0x7f,
-0x82, 0x57, 0xa1, 0x2b, 0xee, 0x7e, 0x94, 0x73,
-0x60, 0xa1, 0x4e, 0xe3, 0xa7, 0xd1, 0x97, 0x95,
-0xdc, 0x2f, 0xe1, 0x1d, 0x40, 0xbf, 0x38, 0xc5,
-0xff, 0x42, 0x34, 0x34, 0xfb, 0x29, 0x9b, 0xff,
-0x9e, 0x95, 0xbb, 0xc0, 0xdd, 0x76, 0xb3, 0x0c,
-0xc3, 0x72, 0x2d, 0xd3, 0xfa, 0xbd, 0x96, 0xff,
-0x0e, 0x0f, 0x53, 0x1f, 0xfd, 0xcc, 0xf9, 0x19,
-0xb8, 0x3b, 0x2e, 0x2e, 0xef, 0xdc, 0x34, 0xc9,
-0x7f, 0x57, 0x1e, 0xeb, 0xa9, 0x50, 0x9d, 0xcf,
-0x90, 0x24, 0xde, 0xa2, 0x82, 0x6e, 0x9a, 0xec,
-0xbf, 0xb7, 0xe6, 0x7f, 0x43, 0x75, 0x8e, 0x16,
-0x5c, 0x84, 0x9f, 0xd2, 0xd9, 0x09, 0xe4, 0x67,
-0x56, 0xd0, 0xdb, 0xe9, 0xf1, 0xcf, 0xa7, 0x87,
-0x96, 0xae, 0x75, 0xfe, 0x1c, 0xde, 0x46, 0xfd,
-0x39, 0x6d, 0x2d, 0xff, 0xa6, 0xe5, 0xbf, 0x0b,
-0x87, 0x60, 0x2e, 0xe3, 0x52, 0x1c, 0x46, 0x0d,
-0xfd, 0x69, 0xd8, 0xa7, 0x82, 0xfe, 0xe6, 0xc7,
-0xb4, 0x26, 0xeb, 0xfe, 0x01, 0x3f, 0x57, 0x39,
-0x43, 0xeb, 0x57, 0x04, 0xc6, 0xf8, 0x41, 0x93,
-0x9f, 0x8f, 0x76, 0xfe, 0x86, 0xca, 0xc3, 0xce,
-0x1f, 0x92, 0x99, 0x74, 0xd7, 0xce, 0xca, 0x0a,
-0xe4, 0xcb, 0xbb, 0x86, 0x2e, 0x90, 0x94, 0x1d,
-0xf4, 0x69, 0x98, 0xdd, 0xef, 0xbc, 0x40, 0x96,
-0xd3, 0x9f, 0x49, 0x95, 0xa2, 0xbf, 0x19, 0x17,
-0x94, 0x5e, 0xb7, 0x52, 0x3a, 0x99, 0xda, 0xd7,
-0x32, 0x67, 0x97, 0x13, 0x0a, 0x14, 0x48, 0xa3,
-0xfe, 0x44, 0x47, 0xfe, 0x35, 0xa3, 0xee, 0x89,
-0x92, 0x76, 0x38, 0x94, 0xfc, 0x28, 0xe3, 0x0e,
-0xb6, 0xc6, 0x0b, 0x5e, 0x83, 0x3a, 0x08, 0x30,
-0x46, 0xea, 0x7d, 0x61, 0xfc, 0xbc, 0x1c, 0x59,
-0xe8, 0x71, 0x67, 0x5a, 0xd3, 0xca, 0x65, 0xb6,
-0xa7, 0x5a, 0xfe, 0x7b, 0x22, 0xf5, 0x91, 0xf4,
-0xcf, 0x52, 0x0d, 0xc3, 0x66, 0x08, 0xde, 0x97,
-0x6b, 0x04, 0x2c, 0x98, 0x6c, 0x45, 0x7e, 0x26,
-0x49, 0x6d, 0x45, 0xc1, 0xe1, 0x02, 0x50, 0x06,
-0x1d, 0xbe, 0x20, 0xae, 0xf7, 0x61, 0xcb, 0x7f,
-0xa7, 0x07, 0x15, 0x5f, 0x4b, 0xf4, 0x99, 0xe9,
-0x32, 0x74, 0x82, 0xaf, 0x25, 0x69, 0xf9, 0xef,
-0x05, 0x82, 0x8b, 0x52, 0xf9, 0x97, 0xde, 0x82,
-0xae, 0x02, 0x59, 0x4e, 0x65, 0xe4, 0x94, 0x38,
-0x9f, 0xf4, 0x1a, 0xf6, 0x49, 0x1f, 0x5a, 0x95,
-0xbd, 0x1c, 0xec, 0xea, 0x77, 0x75, 0xf1, 0x38,
-0x7f, 0x62, 0x68, 0xbb, 0xeb, 0x29, 0x3e, 0xdb,
-0x9a, 0xf3, 0xdf, 0x47, 0xe8, 0xe5, 0xe0, 0x5c,
-0xaf, 0x7b, 0xdf, 0x23, 0x83, 0xf2, 0x58, 0xd9,
-0xe1, 0x36, 0xc6, 0xcf, 0x0a, 0xdd, 0x26, 0x7a,
-0x8b, 0x26, 0xa4, 0x37, 0x3a, 0x6b, 0xc6, 0x02,
-0x97, 0x51, 0xcf, 0x9f, 0x84, 0x9a, 0x81, 0x55,
-0xef, 0x58, 0xfe, 0x3b, 0xbc, 0x4f, 0x5a, 0xd3,
-0xe9, 0x61, 0x71, 0x61, 0x6f, 0x55, 0xf0, 0xef,
-0xfa, 0xca, 0x87, 0xc5, 0x27, 0xd0, 0x0f, 0x37,
-0xf8, 0x09, 0x0f, 0xb5, 0x3c, 0x36, 0x37, 0xbd,
-0x5c, 0xac, 0x61, 0xb1, 0x84, 0xa8, 0xfc, 0x52,
-0x81, 0xaf, 0xc0, 0xd4, 0x9f, 0x9e, 0xbd, 0x79,
-0x9b, 0x38, 0x59, 0x11, 0x33, 0x92, 0x0b, 0x1e,
-0x83, 0x5d, 0x6a, 0x81, 0xe5, 0xbf, 0x73, 0xc2,
-0x5e, 0xe1, 0x34, 0x84, 0xd2, 0xae, 0xc3, 0x5c,
-0x00, 0x1d, 0xc8, 0x2e, 0xb5, 0x2a, 0xdd, 0x90,
-0xd3, 0x9f, 0x3d, 0xd2, 0xe1, 0xbc, 0x8b, 0x72,
-0xf5, 0xee, 0xea, 0x71, 0xe7, 0x38, 0x79, 0x03,
-0x9e, 0x57, 0x0b, 0xb3, 0x24, 0xc7, 0xcf, 0x66,
-0xa9, 0x03, 0x5e, 0x25, 0x0b, 0x23, 0x81, 0x67,
-0xf8, 0x40, 0x23, 0xb6, 0xeb, 0xb5, 0xf9, 0xef,
-0xc3, 0x42, 0x80, 0xdb, 0xa0, 0xa0, 0x8c, 0x38,
-0x5c, 0xf0, 0xab, 0xc8, 0xe6, 0x58, 0xfd, 0xef,
-0x84, 0x27, 0xcc, 0xfc, 0x51, 0xbf, 0x20, 0x42,
-0x6b, 0x81, 0x3c, 0x88, 0x4b, 0x6b, 0xba, 0xc0,
-0x02, 0x4d, 0xb7, 0xa7, 0x8b, 0x73, 0xf9, 0xa3,
-0x53, 0x52, 0x01, 0x69, 0x4f, 0x7d, 0x36, 0xeb,
-0xfd, 0x16, 0x39, 0xab, 0xb4, 0xd3, 0x00, 0xae,
-0x46, 0x74, 0x08, 0xf4, 0x76, 0x51, 0xc0, 0x76,
-0x5c, 0xb0, 0xdf, 0x25, 0xb5, 0xb2, 0x18, 0x4b,
-0xb0, 0x9f, 0xf9, 0xef, 0xb9, 0xf8, 0xa7, 0xa7,
-0x5b, 0x78, 0x1f, 0xaa, 0x99, 0x4e, 0x3e, 0x8c,
-0x9b, 0xe4, 0xe7, 0xd4, 0x65, 0xe8, 0x01, 0x1a,
-0x1c, 0x14, 0x3d, 0x7b, 0x51, 0x0f, 0x86, 0x12,
-0x55, 0x2d, 0xac, 0x9d, 0x1c, 0xea, 0x0f, 0xa4,
-0xcd, 0xf8, 0x67, 0x3f, 0xec, 0x80, 0x57, 0xe0,
-0x69, 0x5a, 0x28, 0xdf, 0x71, 0x18, 0x36, 0x07,
-0x76, 0x1e, 0xf3, 0xa3, 0xff, 0x6e, 0xc6, 0x97,
-0x1e, 0x85, 0xc7, 0x13, 0x72, 0x76, 0xe3, 0xf2,
-0x99, 0xb3, 0xa4, 0xf6, 0xcc, 0xec, 0x11, 0xe7,
-0x4a, 0x33, 0xfe, 0x19, 0xf5, 0x74, 0x08, 0x8f,
-0x0c, 0xee, 0x1e, 0xcc, 0x0f, 0x92, 0x0e, 0xd2,
-0x8a, 0x3e, 0x1e, 0xea, 0x97, 0x9c, 0x1f, 0xde,
-0xef, 0xd9, 0x13, 0xc3, 0xe7, 0x51, 0x1c, 0x46,
-0x3f, 0x1c, 0x73, 0xd4, 0x26, 0xaa, 0xb3, 0xb6,
-0xf8, 0x67, 0x1a, 0x46, 0xc5, 0xc3, 0xbc, 0xae,
-0xf9, 0x22, 0x0b, 0x39, 0x81, 0xda, 0xf2, 0x47,
-0xbb, 0xe1, 0xa8, 0x14, 0x52, 0x6e, 0x4c, 0x91,
-0x15, 0xe4, 0x28, 0xcd, 0x30, 0x4e, 0xf8, 0xcc,
-0xf8, 0xe7, 0x4d, 0x64, 0x0f, 0xf8, 0x50, 0x96,
-0x15, 0x20, 0x2c, 0x59, 0x60, 0x79, 0x2b, 0x91,
-0x73, 0xfc, 0x14, 0x5c, 0xca, 0x43, 0x62, 0xb9,
-0x72, 0x73, 0x73, 0x71, 0x1b, 0x8a, 0x84, 0xb9,
-0x8a, 0x37, 0x05, 0x39, 0xff, 0x1d, 0x04, 0x07,
-0xfc, 0x42, 0xd9, 0x19, 0x9b, 0xfb, 0x7d, 0xb2,
-0x8e, 0x25, 0x92, 0x62, 0x0b, 0x3c, 0x91, 0x9c,
-0xff, 0x7e, 0x1a, 0x92, 0x68, 0x4f, 0x21, 0xd8,
-0xac, 0xf2, 0x69, 0x1c, 0xa0, 0x05, 0xd0, 0x48,
-0x9d, 0x55, 0x56, 0xfc, 0x53, 0x3a, 0xa8, 0x84,
-0x63, 0x85, 0xdb, 0x1a, 0x56, 0xc0, 0xa5, 0x48,
-0x98, 0xf9, 0xef, 0x66, 0xfe, 0x08, 0xf5, 0xe0,
-0x51, 0x12, 0x8a, 0xba, 0x52, 0x9b, 0x56, 0xc0,
-0x51, 0x31, 0xa4, 0xb8, 0xb6, 0x98, 0xf1, 0x4f,
-0xaf, 0xb8, 0x53, 0x3e, 0xbd, 0xa6, 0x16, 0xc4,
-0x36, 0x92, 0xc6, 0xcd, 0xc6, 0xe7, 0x89, 0xaa,
-0x66, 0xfc, 0x53, 0x69, 0xdc, 0x76, 0x6c, 0x9d,
-0x6b, 0xe7, 0x57, 0xf3, 0xef, 0x6e, 0xb9, 0x57,
-0x5e, 0x27, 0x96, 0x45, 0xc4, 0xbb, 0x23, 0xa7,
-0x0c, 0xfb, 0xdc, 0x2e, 0x6c, 0x83, 0x5f, 0x35,
-0xce, 0xbe, 0x57, 0x1c, 0x94, 0x9f, 0x82, 0x87,
-0x48, 0xd9, 0x22, 0x71, 0xd0, 0x8a, 0x7f, 0xa2,
-0x8f, 0xbe, 0x01, 0xba, 0x16, 0x15, 0x6e, 0xe5,
-0xf0, 0x79, 0x5c, 0x48, 0x09, 0xa4, 0x1a, 0x72,
-0xfc, 0xfc, 0xb6, 0xb4, 0xbb, 0x68, 0x0b, 0x62,
-0xb3, 0x3a, 0xe5, 0x1c, 0x92, 0xdf, 0xe1, 0x9e,
-0x43, 0x7e, 0x22, 0x27, 0xf4, 0x76, 0xc8, 0x4f,
-0xbe, 0x1f, 0x6a, 0x85, 0xa6, 0xb6, 0x06, 0x99,
-0xa8, 0xb8, 0x51, 0x34, 0xa9, 0xce, 0x82, 0x9c,
-0xd6, 0x17, 0xe6, 0xc2, 0x1d, 0xd4, 0x97, 0xf1,
-0x77, 0xf2, 0x7f, 0x2e, 0x6d, 0xa4, 0xbe, 0x74,
-0xb4, 0x93, 0x14, 0xe4, 0xf6, 0x9c, 0x36, 0x17,
-0x3c, 0x42, 0x2b, 0x2e, 0x88, 0xdd, 0xd3, 0x7f,
-0xa5, 0xb4, 0x26, 0xfc, 0xe7, 0x56, 0x2e, 0xc0,
-0x3a, 0x7d, 0x5c, 0x38, 0x28, 0x2d, 0x5b, 0x2f,
-0xca, 0x54, 0x6c, 0x6e, 0x19, 0xe4, 0xd6, 0x8b,
-0x65, 0xbd, 0xb0, 0xb6, 0xc5, 0x9f, 0x6b, 0x87,
-0xee, 0xc4, 0x0b, 0xcc, 0x6d, 0xf7, 0x3b, 0x9f,
-0x43, 0xdd, 0x73, 0x6b, 0xb6, 0x69, 0xd8, 0x39,
-0xd7, 0xb0, 0x4f, 0xbf, 0x77, 0x2f, 0xf9, 0x91,
-0xa6, 0xeb, 0xa6, 0xc5, 0x05, 0x2d, 0xfe, 0x99,
-0x36, 0xf5, 0x67, 0xc4, 0xf5, 0x0c, 0xf7, 0x5e,
-0xe2, 0xc0, 0x39, 0xd7, 0x69, 0x3e, 0x4c, 0x5e,
-0xca, 0xd4, 0xac, 0xc2, 0x42, 0x2e, 0x7e, 0xd6,
-0x09, 0xdb, 0xa0, 0x43, 0xbe, 0x45, 0xf5, 0x8f,
-0x92, 0x3a, 0xe8, 0x90, 0xca, 0x1b, 0x71, 0x5c,
-0x72, 0xf9, 0xa3, 0x0c, 0x3d, 0x0c, 0x8f, 0x93,
-0x9d, 0x7d, 0xfe, 0x45, 0xe8, 0xdb, 0xb7, 0x97,
-0x95, 0xdd, 0x2e, 0x46, 0xf1, 0x69, 0xfa, 0xfb,
-0x29, 0xc2, 0x5e, 0xa9, 0x55, 0x98, 0xa3, 0x8a,
-0x9f, 0xc7, 0xe5, 0xd3, 0x4a, 0x70, 0xe1, 0x03,
-0x11, 0x8d, 0x79, 0xd8, 0x2e, 0x74, 0xba, 0xfe,
-0x40, 0xba, 0x14, 0xcd, 0x6f, 0xc4, 0x75, 0x4b,
-0x03, 0x19, 0x67, 0xee, 0x9e, 0x6d, 0xb8, 0x79,
-0x5d, 0x80, 0x30, 0xe7, 0xce, 0x94, 0x67, 0x59,
-0xec, 0xde, 0x1e, 0xff, 0x4c, 0xd0, 0xc3, 0x05,
-0x88, 0x23, 0xc5, 0x15, 0xcf, 0x3f, 0x0c, 0xbf,
-0x85, 0x9a, 0xb4, 0x6b, 0xd8, 0x09, 0x86, 0xff,
-0xde, 0xe3, 0xa9, 0x44, 0x19, 0x31, 0xb7, 0x62,
-0x6e, 0x86, 0xc8, 0xe4, 0x75, 0xce, 0x77, 0xd1,
-0xff, 0x59, 0xd3, 0x3e, 0x29, 0xc8, 0x72, 0xbe,
-0xa0, 0xe5, 0x8f, 0xf6, 0xb2, 0x3d, 0x3c, 0x85,
-0x6c, 0x95, 0x73, 0x63, 0xa6, 0xd5, 0xfb, 0xd5,
-0x82, 0x60, 0x41, 0x07, 0xc2, 0x5b, 0x0b, 0x88,
-0xe5, 0xec, 0xb3, 0x05, 0x9a, 0xd8, 0x32, 0x57,
-0x03, 0x94, 0x47, 0x47, 0x17, 0x17, 0x54, 0x47,
-0x9a, 0x07, 0xc3, 0x3e, 0x13, 0x25, 0xe3, 0xc5,
-0x9a, 0x9c, 0x1b, 0x2d, 0x7f, 0x10, 0xde, 0x67,
-0x85, 0xac, 0x4d, 0x7f, 0x9e, 0x85, 0x37, 0xd4,
-0x7d, 0x2b, 0x5c, 0x1f, 0xa2, 0xfe, 0x7c, 0x83,
-0xab, 0xc9, 0xba, 0xa2, 0xe5, 0xf6, 0xf8, 0xe7,
-0x26, 0xa6, 0x23, 0xf7, 0x11, 0x99, 0x6e, 0x6a,
-0xf3, 0xb1, 0x7d, 0xda, 0x1e, 0xff, 0xdc, 0x2a,
-0xfb, 0x92, 0x2b, 0xbb, 0x50, 0xf3, 0xa1, 0xdf,
-0x81, 0x9d, 0x9b, 0x14, 0xff, 0xdc, 0x84, 0xfb,
-0x6d, 0x32, 0x53, 0x20, 0xd3, 0x3d, 0xc5, 0x3e,
-0x19, 0xe1, 0x65, 0xc6, 0x3f, 0x3d, 0xbb, 0x71,
-0x2d, 0x85, 0x4e, 0xa1, 0x7c, 0x94, 0x59, 0x1c,
-0x33, 0x1b, 0x00, 0x5e, 0x30, 0x9e, 0x77, 0x0e,
-0x9e, 0x62, 0x9a, 0x3d, 0xb9, 0x79, 0x94, 0xbf,
-0x00, 0x6f, 0xd0, 0xfa, 0x9e, 0x65, 0xbd, 0x66,
-0xfc, 0x93, 0xe5, 0x8f, 0xd0, 0x3f, 0xa2, 0xae,
-0x0c, 0x37, 0x0c, 0xbf, 0x17, 0xbb, 0x7a, 0xf1,
-0x45, 0xb7, 0x19, 0xf6, 0xa9, 0x0a, 0x2e, 0xd8,
-0x44, 0xe4, 0x6d, 0xe2, 0x1a, 0x72, 0x3c, 0x9e,
-0xaf, 0xf8, 0x62, 0xe2, 0x3a, 0x5b, 0xfe, 0xbd,
-0x29, 0xb2, 0x87, 0xf8, 0x15, 0x71, 0x7e, 0x4b,
-0x2f, 0x94, 0xc7, 0x7c, 0x83, 0x49, 0x20, 0x19,
-0xbd, 0x27, 0xd0, 0x8d, 0xfb, 0xfb, 0xe6, 0x54,
-0xf9, 0x88, 0xf8, 0x43, 0xf2, 0x11, 0x6d, 0x4d,
-0x97, 0x0d, 0x47, 0x5f, 0xb3, 0xc5, 0x3f, 0xa7,
-0xa3, 0xb6, 0x59, 0x30, 0xec, 0x5a, 0xd0, 0x70,
-0x82, 0x9e, 0xcb, 0x86, 0xf6, 0xb8, 0x44, 0x7e,
-0x6b, 0xce, 0x7f, 0x2f, 0xdc, 0x3b, 0x78, 0xc5,
-0x51, 0xdf, 0x53, 0x3d, 0xca, 0x0f, 0x28, 0x57,
-0x83, 0xcf, 0x53, 0x1c, 0x4f, 0xcb, 0x7f, 0x1f,
-0xc2, 0xa5, 0xac, 0xe5, 0xb9, 0x1a, 0x91, 0x9f,
-0x17, 0x7a, 0x06, 0xa8, 0x4d, 0x7f, 0x6e, 0x83,
-0x76, 0x28, 0x53, 0xc5, 0xe6, 0x3c, 0x8f, 0x70,
-0x4a, 0xfa, 0xba, 0x2a, 0x2a, 0x93, 0xfc, 0xf7,
-0x6d, 0xb4, 0x3c, 0xcb, 0x2d, 0x58, 0x12, 0x96,
-0x7f, 0x91, 0x2c, 0x1f, 0xbd, 0x23, 0x3a, 0x29,
-0xfe, 0xf9, 0x08, 0xa4, 0x87, 0xf6, 0x64, 0x48,
-0x25, 0xec, 0x4b, 0xec, 0x1a, 0x2b, 0xf0, 0xd9,
-0xfc, 0xf7, 0x8d, 0xf0, 0x68, 0xac, 0x3c, 0x9d,
-0x9f, 0x75, 0xfe, 0x40, 0x7a, 0x97, 0x7e, 0x2f,
-0x35, 0x3d, 0x6e, 0xf7, 0xdf, 0x15, 0x26, 0xf5,
-0xa6, 0xa3, 0xde, 0x10, 0xbc, 0xe2, 0x73, 0x50,
-0x49, 0x39, 0xd3, 0x7f, 0x8f, 0xa1, 0xec, 0x84,
-0x2e, 0x25, 0x2f, 0xc5, 0xcf, 0x49, 0x1f, 0x57,
-0xbb, 0x94, 0x8e, 0xad, 0x7c, 0x8b, 0x5d, 0x7f,
-0x2a, 0x3e, 0xc5, 0x9f, 0xe2, 0xff, 0x0b, 0x1a,
-0xb2, 0x96, 0xdf, 0x94, 0x8d, 0x71, 0xf1, 0xa2,
-0x8f, 0xbe, 0x47, 0x94, 0x99, 0xcb, 0x5b, 0x09,
-0x7b, 0x14, 0xad, 0x6e, 0xbd, 0xa5, 0x3f, 0x85,
-0x0d, 0x88, 0x4d, 0x71, 0x1b, 0x59, 0x0c, 0x3b,
-0x41, 0x5e, 0x8d, 0x3e, 0x33, 0xe1, 0xf4, 0x96,
-0xdd, 0xa2, 0x8c, 0x6a, 0x58, 0xcb, 0xbf, 0xcb,
-0x64, 0x18, 0x0b, 0x1d, 0xe9, 0xa2, 0x5f, 0xe7,
-0xfc, 0xf7, 0x42, 0xd4, 0x98, 0x70, 0x9b, 0x72,
-0xe7, 0x36, 0xfe, 0x22, 0xbc, 0xde, 0x58, 0xaf,
-0x54, 0x5b, 0xf1, 0x4f, 0xaf, 0xe3, 0x22, 0x8f,
-0x6e, 0x4a, 0xa3, 0xfb, 0xe7, 0x0d, 0x8d, 0xf0,
-0x92, 0x7c, 0xeb, 0xa2, 0xa6, 0x41, 0x9b, 0xff,
-0x9e, 0x85, 0xa4, 0xb8, 0x90, 0xc5, 0x3f, 0x83,
-0xa8, 0xde, 0x7c, 0x2d, 0xa2, 0xe5, 0xbf, 0x2b,
-0x8e, 0x3e, 0x71, 0x1d, 0x87, 0xbe, 0xe8, 0x97,
-0x5b, 0x3c, 0x3b, 0x13, 0x5c, 0xfa, 0xf6, 0x02,
-0x9b, 0xfe, 0xfc, 0xe2, 0x6e, 0x6e, 0x03, 0xdc,
-0x1c, 0x75, 0x0e, 0x2e, 0xf1, 0xc8, 0x1b, 0xa6,
-0x3d, 0x70, 0x7f, 0x81, 0xcd, 0x7f, 0xdf, 0xb6,
-0x1e, 0x36, 0x7c, 0xa3, 0x2a, 0xee, 0x4e, 0xe5,
-0xdf, 0x24, 0x6d, 0x50, 0x42, 0xb1, 0xaf, 0x6d,
-0xb5, 0xc5, 0x3f, 0x1f, 0x97, 0x5e, 0x85, 0x85,
-0x71, 0xfd, 0x9c, 0x40, 0xaa, 0x56, 0xa9, 0xdc,
-0xda, 0x3a, 0xc9, 0x7f, 0x5f, 0x1c, 0x42, 0xb7,
-0xfd, 0x9e, 0x0f, 0xe0, 0xb4, 0x58, 0xeb, 0x45,
-0xfb, 0xdc, 0x98, 0xab, 0x13, 0x16, 0x0a, 0x1b,
-0x13, 0xa8, 0x3f, 0xd3, 0xc5, 0x63, 0xf0, 0x4a,
-0x23, 0x4f, 0xa3, 0x6f, 0x92, 0xdc, 0x11, 0x1c,
-0x16, 0xff, 0x2c, 0xa7, 0x15, 0x2c, 0xe4, 0xd4,
-0x5f, 0x4c, 0xa5, 0x39, 0x83, 0x20, 0x90, 0x16,
-0x83, 0x9f, 0x65, 0xdc, 0xfc, 0x8a, 0xcd, 0x1b,
-0xef, 0xa7, 0x4e, 0x85, 0x8c, 0x71, 0x8f, 0xc2,
-0x6c, 0x35, 0x7a, 0x9a, 0x88, 0x66, 0xfc, 0x33,
-0x2c, 0xbd, 0x4d, 0xff, 0x6b, 0xd6, 0xb9, 0x96,
-0x7f, 0x05, 0x5e, 0xa2, 0x9f, 0x8b, 0xbb, 0x96,
-0xf3, 0x1b, 0x73, 0xfe, 0xfb, 0x9d, 0xbb, 0xe1,
-0x4d, 0x78, 0x96, 0xe2, 0xbe, 0x39, 0xc4, 0xe2,
-0x9f, 0x8a, 0x5b, 0xb2, 0xf9, 0xef, 0x57, 0xe1,
-0x1f, 0xe9, 0xfc, 0x2c, 0xba, 0xed, 0x0b, 0x95,
-0xfe, 0x74, 0xcd, 0x90, 0xeb, 0xa0, 0xcd, 0x7f,
-0x7f, 0x98, 0x6e, 0xd8, 0x25, 0xa7, 0xc5, 0x02,
-0xdf, 0x0d, 0x0a, 0xed, 0xf2, 0x65, 0xa3, 0x0b,
-0x4c, 0xff, 0x9d, 0xc2, 0x61, 0x65, 0x5b, 0xb0,
-0x5c, 0x8d, 0xae, 0xc9, 0xab, 0x6d, 0xa3, 0xc1,
-0x77, 0x9a, 0xc4, 0x25, 0xa6, 0xfe, 0x44, 0xff,
-0x5d, 0xa4, 0x51, 0x1c, 0x7e, 0x20, 0x0e, 0xa0,
-0x89, 0xb9, 0x8c, 0x9f, 0xa7, 0x4c, 0xff, 0xbd,
-0x03, 0x5e, 0x5f, 0xb7, 0x6b, 0x6d, 0x20, 0xb3,
-0xf4, 0xb3, 0xa4, 0x27, 0xbe, 0x70, 0x91, 0x6b,
-0x07, 0x8e, 0x67, 0xce, 0xe6, 0xd1, 0x7f, 0x2f,
-0x62, 0x3e, 0xc9, 0x8c, 0x61, 0x72, 0x59, 0x9e,
-0x13, 0xdf, 0x9c, 0x34, 0x35, 0x26, 0x17, 0x1b,
-0x87, 0xf3, 0xb0, 0xbf, 0xb1, 0x63, 0x94, 0x9f,
-0x2f, 0x0f, 0xa4, 0xea, 0xa1, 0x63, 0x70, 0x46,
-0x2e, 0xfe, 0xd9, 0x83, 0xfa, 0xb3, 0x05, 0x98,
-0xef, 0x7b, 0x83, 0x00, 0xaf, 0x29, 0xbe, 0xfb,
-0xc5, 0x0e, 0x2b, 0xfe, 0x89, 0xf2, 0x57, 0xdb,
-0xfb, 0x83, 0xc4, 0x0f, 0xc9, 0xc6, 0x5f, 0x3f,
-0x20, 0x76, 0x14, 0x9b, 0xfe, 0x3b, 0x5a, 0xdf,
-0x06, 0xbf, 0x4c, 0xfc, 0x04, 0xeb, 0xb6, 0x06,
-0xd3, 0x31, 0x7f, 0x9e, 0xe9, 0xbf, 0x2b, 0xe2,
-0xaa, 0xce, 0xe1, 0xb2, 0x35, 0x5f, 0x74, 0xd5,
-0xb6, 0xce, 0x56, 0xfb, 0x85, 0xf0, 0x72, 0x9c,
-0x3f, 0xcb, 0x7f, 0x1f, 0x08, 0x8e, 0xf9, 0xeb,
-0x0b, 0x96, 0xb5, 0x3c, 0x72, 0x84, 0x8e, 0xc7,
-0xc3, 0xcb, 0x37, 0xf7, 0xd9, 0xf8, 0x79, 0x01,
-0x50, 0xc6, 0xf7, 0x3f, 0x74, 0x61, 0x46, 0x80,
-0x0e, 0xd0, 0x9a, 0xa0, 0x6b, 0xcc, 0xe6, 0xbf,
-0x67, 0xdb, 0x0e, 0xfa, 0xab, 0x47, 0x9d, 0x1f,
-0x9e, 0x3a, 0xac, 0x26, 0x65, 0xec, 0x70, 0x37,
-0x19, 0xcd, 0xe9, 0x1e, 0x47, 0x3f, 0x7a, 0x2b,
-0x81, 0x41, 0x96, 0xcb, 0xc2, 0x1d, 0x52, 0x66,
-0xb1, 0x84, 0x0b, 0xd6, 0xf9, 0x25, 0x38, 0x28,
-0x68, 0xa9, 0xaf, 0x0e, 0x42, 0x25, 0xd9, 0x9e,
-0x7f, 0x97, 0x4a, 0xb2, 0xf4, 0x34, 0x6e, 0x35,
-0x85, 0x99, 0xb2, 0x00, 0x1c, 0x8b, 0x6e, 0x15,
-0x03, 0x99, 0x06, 0x5b, 0xfe, 0x5d, 0x1c, 0xdf,
-0xf6, 0x27, 0xaa, 0xbb, 0x19, 0x39, 0x7f, 0x1b,
-0xd4, 0x53, 0xf7, 0x28, 0xb1, 0xe2, 0x9f, 0x69,
-0x0d, 0xb7, 0xae, 0xcc, 0xd7, 0x03, 0x70, 0x19,
-0xf1, 0xd8, 0x91, 0xe1, 0xff, 0x87, 0x95, 0x3f,
-0x82, 0x83, 0x50, 0xde, 0x23, 0xb2, 0x7d, 0xf3,
-0x20, 0x02, 0xbf, 0xd0, 0x9e, 0x7f, 0x6f, 0x84,
-0x0c, 0xdb, 0x6a, 0x50, 0xbb, 0x89, 0x5b, 0xd8,
-0x98, 0x5a, 0xf9, 0xf7, 0x51, 0x6e, 0x26, 0x3c,
-0x4f, 0xe5, 0x6c, 0x74, 0x2d, 0x79, 0xb4, 0xed,
-0x99, 0xf4, 0xcd, 0x7e, 0x8e, 0xc5, 0x3f, 0xf5,
-0x76, 0xc8, 0x4f, 0xb5, 0x8b, 0x0b, 0xf6, 0xa1,
-0xbb, 0xf1, 0x30, 0xbd, 0x94, 0x5e, 0x38, 0x72,
-0x26, 0x58, 0x6e, 0xcb, 0xbf, 0x0b, 0x07, 0xe0,
-0x6a, 0xaf, 0x7b, 0xb4, 0xf5, 0xc1, 0xf8, 0x55,
-0xa9, 0xb6, 0xe7, 0x4f, 0x6c, 0xf9, 0xf7, 0x92,
-0x73, 0x28, 0xff, 0xc3, 0x3d, 0xee, 0xa7, 0xca,
-0xdf, 0x73, 0x1c, 0xf7, 0x85, 0xa3, 0x6e, 0x2b,
-0xff, 0xde, 0x7f, 0xfd, 0x0e, 0xf9, 0x19, 0xa8,
-0x3c, 0xe6, 0x5c, 0x4d, 0x06, 0x7a, 0xda, 0xa5,
-0xca, 0xbe, 0xa5, 0xcd, 0xbe, 0x0b, 0x66, 0x2e,
-0xf2, 0x11, 0x38, 0x40, 0xbf, 0x33, 0xec, 0x5c,
-0x5b, 0x7c, 0xb6, 0xad, 0x3d, 0x51, 0x19, 0x5f,
-0x6a, 0xe5, 0xdf, 0xa3, 0xc2, 0x00, 0x1c, 0x12,
-0x8d, 0x58, 0x73, 0xeb, 0x9a, 0x00, 0x4b, 0x20,
-0x9e, 0x32, 0xf9, 0xf9, 0xa4, 0x96, 0x76, 0x67,
-0xa1, 0x77, 0x38, 0xa6, 0x86, 0xbb, 0xdd, 0x93,
-0xf2, 0xef, 0x34, 0x17, 0xff, 0x24, 0x53, 0xf2,
-0xef, 0xa2, 0xa4, 0xa5, 0xe1, 0x98, 0x0b, 0xda,
-0xa7, 0x07, 0xa4, 0x99, 0xff, 0x6e, 0xe6, 0xdf,
-0x05, 0x1c, 0xc6, 0x98, 0x96, 0x5f, 0x61, 0x89,
-0xa4, 0x29, 0xf9, 0xf7, 0x83, 0x40, 0xe2, 0x7a,
-0x9d, 0x30, 0x25, 0xfe, 0xe9, 0x10, 0xf6, 0x35,
-0xa6, 0x59, 0xfc, 0xf3, 0x88, 0x96, 0x88, 0x9f,
-0x1c, 0xff, 0x94, 0xc6, 0x84, 0x10, 0xd5, 0xb4,
-0x30, 0xcb, 0x4f, 0x6f, 0xb6, 0xe7, 0xdf, 0x8d,
-0xb0, 0xe7, 0xb6, 0x86, 0xb7, 0xc8, 0x94, 0xfc,
-0xfb, 0x76, 0x07, 0xea, 0x4f, 0x21, 0x7c, 0xc7,
-0xe6, 0xd4, 0x63, 0x43, 0xe4, 0xa8, 0x1e, 0x1b,
-0x7d, 0xdb, 0x96, 0x3f, 0x4a, 0xca, 0x55, 0x92,
-0x13, 0xc8, 0x39, 0x48, 0xfa, 0xaa, 0xec, 0xf9,
-0xf7, 0xa8, 0xa3, 0x6f, 0x77, 0x42, 0x5c, 0xa5,
-0x38, 0xa5, 0xad, 0x47, 0xb0, 0xa0, 0xc5, 0x62,
-0x4f, 0x99, 0xf9, 0xf7, 0x36, 0xd8, 0x10, 0x60,
-0x5d, 0x7f, 0x80, 0x9d, 0xc1, 0xaa, 0xc2, 0x17,
-0x8d, 0x98, 0xfa, 0xd3, 0xb3, 0x9b, 0x3d, 0x46,
-0x59, 0xc6, 0xe2, 0xc2, 0xc6, 0xf3, 0x4c, 0xff,
-0x1d, 0x7e, 0x19, 0xfd, 0x81, 0x80, 0x73, 0x9b,
-0xe2, 0x87, 0xb8, 0x4b, 0x04, 0xe7, 0x36, 0xc5,
-0xdb, 0xf4, 0xa7, 0xd4, 0xaf, 0x84, 0x89, 0x96,
-0x1f, 0x1b, 0x9b, 0x92, 0x7f, 0x17, 0xfc, 0xd2,
-0x46, 0xa8, 0x4a, 0x2d, 0x4d, 0x13, 0xbf, 0x70,
-0xf9, 0x93, 0xf2, 0xef, 0x6c, 0x1d, 0x3d, 0x10,
-0xc8, 0x9d, 0x0f, 0x39, 0x66, 0xe5, 0x8f, 0x8e,
-0xb5, 0x57, 0x7c, 0x47, 0x59, 0xfa, 0x43, 0x96,
-0xcf, 0x81, 0xca, 0x7e, 0x5b, 0xfe, 0x1d, 0xf9,
-0x29, 0xff, 0x36, 0x7b, 0xdb, 0x39, 0xf7, 0x83,
-0xfc, 0xac, 0xc4, 0x1f, 0x53, 0xb7, 0x8d, 0x4e,
-0xca, 0xbf, 0xff, 0x2a, 0x75, 0x85, 0x84, 0xbf,
-0x8a, 0x7e, 0xf1, 0x48, 0xd9, 0x1f, 0x82, 0xe1,
-0xde, 0x49, 0xf1, 0xcf, 0xb3, 0xf4, 0xa4, 0x1a,
-0x4e, 0x77, 0x1c, 0xe4, 0xaf, 0xca, 0x2c, 0x01,
-0xe5, 0x62, 0xfe, 0x7b, 0x2e, 0xff, 0xde, 0x41,
-0xff, 0x01, 0x2a, 0x2b, 0xfc, 0x6b, 0x23, 0x67,
-0x8a, 0xf6, 0x77, 0xa6, 0xfb, 0xfc, 0x56, 0xfe,
-0x5d, 0x82, 0xc3, 0xbf, 0x63, 0x26, 0x8b, 0x1a,
-0xe5, 0x0c, 0x3c, 0x0f, 0xe5, 0xaa, 0x3d, 0xfe,
-0x29, 0x9d, 0x80, 0x47, 0xd4, 0xc0, 0x22, 0x31,
-0xe8, 0x1b, 0x80, 0xfd, 0xaa, 0x76, 0x98, 0xe0,
-0xb4, 0x99, 0x7f, 0x3f, 0x2c, 0x9c, 0x14, 0xc3,
-0xcc, 0x0f, 0x1f, 0x87, 0x89, 0x96, 0x1a, 0x2d,
-0xfe, 0x69, 0xfa, 0xef, 0x23, 0xca, 0x15, 0x61,
-0xfa, 0xa0, 0x3b, 0xc8, 0x72, 0xc2, 0x42, 0x38,
-0x6b, 0xd3, 0x9f, 0x5b, 0x52, 0xe3, 0xfe, 0x89,
-0xfc, 0x79, 0x32, 0xcb, 0xdb, 0xc3, 0x84, 0xa8,
-0xe7, 0x8f, 0x4c, 0xff, 0x7d, 0x95, 0x74, 0x2b,
-0xd4, 0xd6, 0x89, 0x2c, 0xff, 0x7e, 0xab, 0x16,
-0xff, 0xf4, 0xe5, 0xec, 0x93, 0xe5, 0x8f, 0xf6,
-0x83, 0x2f, 0x11, 0xcd, 0xf8, 0x02, 0x66, 0x6c,
-0x34, 0xe7, 0xbf, 0x03, 0x4b, 0xbf, 0x56, 0x50,
-0x96, 0x0b, 0x61, 0xe7, 0xac, 0xd8, 0x81, 0x81,
-0x9c, 0x7d, 0xd2, 0xe4, 0x8f, 0x51, 0xbb, 0x21,
-0xd1, 0x46, 0x9d, 0x75, 0x0a, 0x8b, 0xc9, 0x61,
-0x3f, 0xb3, 0x66, 0xfe, 0x7d, 0x7c, 0xf7, 0x04,
-0xf7, 0x79, 0x61, 0xf3, 0x07, 0x0d, 0xd7, 0xc6,
-0x3f, 0x0b, 0x47, 0xe1, 0xb7, 0xf2, 0x3c, 0xb5,
-0x29, 0x8a, 0x7a, 0xbe, 0x8f, 0xd6, 0xa8, 0x85,
-0xb6, 0xf3, 0x4b, 0xb8, 0x8b, 0x6d, 0x5e, 0x59,
-0x7e, 0x4a, 0x4c, 0x3a, 0xbf, 0x0b, 0x49, 0x8a,
-0xe3, 0x62, 0xf1, 0x33, 0x09, 0xb4, 0x38, 0x51,
-0xec, 0x5f, 0x2e, 0xd2, 0x3c, 0x17, 0x6c, 0x04,
-0xb9, 0xc7, 0xce, 0xcf, 0xc6, 0xb4, 0xb8, 0x07,
-0x70, 0x1b, 0x4a, 0xe6, 0xad, 0x82, 0x64, 0x4f,
-0x3a, 0x2e, 0x66, 0x22, 0xa3, 0x96, 0xff, 0x4e,
-0x8e, 0xd3, 0x85, 0x4a, 0x40, 0xe4, 0x03, 0xa0,
-0xd2, 0x90, 0xfd, 0xfc, 0x52, 0x0f, 0xec, 0x10,
-0xde, 0x48, 0x3d, 0xad, 0xb8, 0x55, 0x7e, 0x1c,
-0x41, 0xa6, 0xf5, 0x73, 0xdc, 0xb0, 0xcf, 0x38,
-0xec, 0x45, 0x7f, 0xb3, 0xab, 0x0f, 0xf5, 0xcb,
-0x2a, 0xb8, 0x9c, 0x0c, 0xb5, 0x05, 0xac, 0xfc,
-0xd1, 0xb0, 0x27, 0x50, 0xb1, 0x61, 0x90, 0x64,
-0xc5, 0x87, 0x88, 0x0b, 0xba, 0x15, 0x5f, 0x5a,
-0xb4, 0xf2, 0x47, 0xaa, 0xc0, 0x53, 0x94, 0xf1,
-0x47, 0xfd, 0x37, 0x22, 0x7b, 0x10, 0xa4, 0x3d,
-0x7e, 0x8b, 0x9f, 0x00, 0xc5, 0xea, 0xba, 0x44,
-0x59, 0x56, 0x3c, 0x4d, 0x1e, 0xa5, 0x87, 0xdb,
-0xd2, 0xa3, 0xe2, 0xda, 0x88, 0xc9, 0x4f, 0x20,
-0xf4, 0x05, 0x1a, 0x54, 0x5c, 0x25, 0xfc, 0x09,
-0xfa, 0x21, 0x3a, 0xf2, 0x8d, 0xb6, 0xf3, 0x4b,
-0x9e, 0x14, 0x99, 0xc8, 0xd4, 0xc7, 0xd1, 0xcd,
-0xac, 0x43, 0xe1, 0xc4, 0x38, 0xcf, 0x0f, 0x12,
-0xbd, 0x9f, 0xa2, 0xf0, 0x50, 0xe6, 0x68, 0x3c,
-0xb4, 0x1c, 0xfb, 0x79, 0x9e, 0x71, 0xa9, 0x7f,
-0x95, 0xed, 0xfc, 0x92, 0xb2, 0x03, 0x5d, 0xde,
-0x9d, 0x11, 0xbf, 0x82, 0x36, 0xd8, 0x0e, 0x81,
-0x3e, 0xb4, 0x41, 0xbb, 0xff, 0xde, 0x8e, 0x2c,
-0x17, 0x9b, 0xc8, 0xa3, 0xb0, 0x9e, 0x56, 0xda,
-0xcf, 0x7f, 0x46, 0x3d, 0x0f, 0xa9, 0xad, 0xc2,
-0xae, 0x3e, 0x7f, 0x05, 0x19, 0xe0, 0x5a, 0x06,
-0x03, 0xcc, 0x00, 0x4c, 0xff, 0x5d, 0x78, 0x12,
-0x4e, 0x40, 0x57, 0xda, 0x35, 0xc4, 0x77, 0xc2,
-0x09, 0x29, 0xdc, 0x39, 0xe9, 0xfc, 0x12, 0xc5,
-0x77, 0x7d, 0x8e, 0x9d, 0x49, 0xd4, 0xf8, 0x29,
-0x57, 0xdb, 0xf8, 0x89, 0x7e, 0x6a, 0x0f, 0xf2,
-0x33, 0xb0, 0x95, 0xe5, 0xb5, 0x53, 0xb5, 0x6a,
-0xc0, 0xe2, 0xa7, 0x2a, 0x54, 0x44, 0x36, 0x28,
-0xbb, 0x62, 0xe8, 0x6e, 0x0c, 0x09, 0xfb, 0x34,
-0x47, 0xde, 0xe2, 0xa7, 0x30, 0x1b, 0x36, 0x88,
-0xbe, 0x88, 0x76, 0xbe, 0xee, 0xa0, 0x52, 0xf1,
-0xa6, 0x88, 0xec, 0xc9, 0xf9, 0xef, 0xe0, 0x41,
-0x6c, 0xa6, 0x63, 0x28, 0x3b, 0xfb, 0x70, 0x03,
-0x95, 0x63, 0x51, 0x8b, 0x9f, 0xa7, 0xbd, 0x2c,
-0xf7, 0x11, 0x32, 0xf2, 0x2b, 0x2c, 0x3f, 0x4d,
-0x1b, 0xec, 0xe7, 0x97, 0x3e, 0x56, 0xb4, 0xb4,
-0x7b, 0x1f, 0x7c, 0xcc, 0x85, 0x63, 0xd5, 0xb6,
-0xf3, 0x4b, 0x85, 0x17, 0xe1, 0x63, 0x75, 0xff,
-0x37, 0x5c, 0x31, 0xe7, 0x7c, 0x38, 0x02, 0xe1,
-0x48, 0xc0, 0xe2, 0xa7, 0x17, 0x3d, 0x96, 0xee,
-0xf4, 0xae, 0xf9, 0x28, 0x3b, 0x65, 0x92, 0x64,
-0x79, 0x5f, 0x8b, 0x9f, 0x71, 0x68, 0x8b, 0x1d,
-0x8c, 0xcb, 0xd1, 0xe5, 0x12, 0x11, 0xa4, 0x9d,
-0x10, 0x88, 0x88, 0x16, 0x3f, 0xbb, 0x95, 0xdd,
-0x70, 0x50, 0xf6, 0x35, 0xb2, 0x63, 0x83, 0xb0,
-0x47, 0xae, 0x6a, 0x14, 0x6d, 0xe7, 0x97, 0xda,
-0x58, 0x8e, 0x28, 0x14, 0x0f, 0x78, 0xf9, 0x0a,
-0x78, 0x27, 0x59, 0x15, 0x0d, 0x58, 0xfc, 0x8c,
-0xc2, 0x6e, 0xe9, 0x12, 0x3c, 0x17, 0x77, 0xff,
-0x35, 0x8e, 0xd9, 0xab, 0x22, 0xae, 0x77, 0x8b,
-0x9f, 0x22, 0xba, 0x60, 0x63, 0x34, 0x48, 0x02,
-0x2d, 0x3c, 0x3b, 0xc8, 0x34, 0x5f, 0x0a, 0x58,
-0xfc, 0x14, 0x3d, 0x0b, 0x83, 0x1f, 0x41, 0x79,
-0xda, 0xff, 0x6e, 0xb1, 0x57, 0x3c, 0x2b, 0xa2,
-0x7d, 0x5a, 0xfc, 0x14, 0xd1, 0x77, 0xaa, 0xa1,
-0xd9, 0xd1, 0xfc, 0x8a, 0x82, 0x24, 0xfe, 0xb3,
-0xa2, 0x4b, 0xb4, 0xf8, 0x59, 0x06, 0xa5, 0xb0,
-0x5f, 0x29, 0xeb, 0xcd, 0x6f, 0x26, 0x0b, 0xe0,
-0xa7, 0xb4, 0xac, 0x45, 0xb4, 0xf1, 0x93, 0xce,
-0x82, 0x3f, 0xd2, 0x4c, 0xb6, 0x70, 0x25, 0xff,
-0x2c, 0xbc, 0x48, 0x6f, 0x91, 0x03, 0x36, 0x7e,
-0x4a, 0x9d, 0xec, 0x8c, 0xa0, 0x3a, 0x3d, 0x83,
-0x7b, 0x2a, 0xce, 0xfb, 0x6b, 0x76, 0x7e, 0x0a,
-0x0f, 0x47, 0x5e, 0xa0, 0xdf, 0xcb, 0xba, 0x0e,
-0x3a, 0x6f, 0x20, 0x27, 0xe8, 0xad, 0x69, 0x57,
-0xb7, 0xc9, 0xcf, 0x3d, 0xd2, 0xc3, 0x89, 0x44,
-0xba, 0x2c, 0x8a, 0xfe, 0x58, 0x81, 0xba, 0x1e,
-0x2a, 0x7b, 0xb0, 0xf0, 0xae, 0xa9, 0x15, 0x77,
-0xc0, 0xdf, 0xa2, 0x14, 0xba, 0x7d, 0xb4, 0xc5,
-0x4b, 0xdb, 0x44, 0x3f, 0x45, 0x90, 0xe6, 0xf4,
-0xa7, 0xe2, 0x49, 0xa2, 0x9f, 0xee, 0x83, 0x0d,
-0x0b, 0x0a, 0x44, 0xa0, 0x34, 0x30, 0x24, 0x5a,
-0xf9, 0xcd, 0xa4, 0xb0, 0x9b, 0xc5, 0x93, 0x95,
-0x4a, 0x3f, 0xca, 0xbe, 0x5e, 0xba, 0x50, 0xb5,
-0xc5, 0x3f, 0x29, 0xda, 0xe0, 0x3b, 0xb8, 0x57,
-0x4d, 0x4f, 0x39, 0x87, 0xe1, 0xb2, 0xa0, 0xe5,
-0x8f, 0xcc, 0xf3, 0x4b, 0xca, 0x53, 0xd2, 0xc7,
-0x52, 0x4d, 0x63, 0x65, 0x96, 0xef, 0x86, 0xf1,
-0x74, 0xcd, 0x9b, 0x01, 0x8b, 0x9f, 0x3d, 0xa8,
-0x3d, 0x0f, 0x46, 0x7d, 0x77, 0x27, 0xbb, 0xf9,
-0x95, 0x52, 0xf7, 0xb9, 0xda, 0xc1, 0x68, 0xc6,
-0xb4, 0x4f, 0x2a, 0xcc, 0x81, 0x6e, 0xd0, 0xa4,
-0x1e, 0x8a, 0x38, 0x90, 0x5f, 0xb6, 0xf1, 0x53,
-0x04, 0x61, 0x67, 0x57, 0x34, 0x4d, 0x17, 0x04,
-0x49, 0x54, 0xc9, 0x40, 0x05, 0xb2, 0xa0, 0x25,
-0x17, 0xff, 0x54, 0xc4, 0x15, 0x74, 0x4c, 0x41,
-0x7e, 0x76, 0x39, 0x3b, 0x51, 0x74, 0x84, 0xd4,
-0x40, 0x17, 0x9f, 0xe5, 0xf4, 0x79, 0xa0, 0xd7,
-0x8f, 0xc9, 0x57, 0x65, 0x5c, 0xe6, 0xdf, 0xe7,
-0x3b, 0xd5, 0x71, 0xe3, 0xfc, 0x52, 0x2e, 0xc7,
-0xee, 0xb8, 0xea, 0x99, 0x98, 0x59, 0xa3, 0x36,
-0x1d, 0x2d, 0x0f, 0x7b, 0xaf, 0xe8, 0xe7, 0xc1,
-0x46, 0x6d, 0xfe, 0xfb, 0xf3, 0xf1, 0xf2, 0xd3,
-0x62, 0x31, 0xa9, 0xf2, 0x1e, 0xa2, 0x55, 0x2c,
-0xff, 0x6e, 0xe9, 0x4f, 0xdc, 0x6a, 0x24, 0xf9,
-0x54, 0x94, 0xf1, 0xd3, 0xd8, 0x37, 0x2d, 0xfd,
-0xb9, 0x57, 0xda, 0x4f, 0xf4, 0x18, 0x84, 0xb6,
-0x07, 0x38, 0x2d, 0xfd, 0x49, 0x8b, 0x98, 0xee,
-0x09, 0xaa, 0xae, 0xb6, 0x56, 0x3d, 0xe7, 0x86,
-0x73, 0xdb, 0x67, 0xe9, 0x4f, 0x89, 0xc5, 0x19,
-0xaa, 0x2f, 0x2e, 0x7d, 0x10, 0x26, 0x3e, 0xe1,
-0xfc, 0xa7, 0x23, 0xd4, 0x83, 0xdb, 0xba, 0xde,
-0x0e, 0xb9, 0xfb, 0xb2, 0x4d, 0x7f, 0x3e, 0xcf,
-0x97, 0xab, 0xc7, 0x59, 0x1e, 0xef, 0x50, 0xac,
-0x4a, 0x9d, 0xa4, 0x3f, 0x9b, 0x38, 0x2d, 0x65,
-0x9d, 0x2e, 0x6e, 0x12, 0x8d, 0xdc, 0x60, 0x8e,
-0x9f, 0x59, 0x6e, 0x96, 0xba, 0x7f, 0x27, 0xcb,
-0xd9, 0xe8, 0x67, 0xd6, 0xb3, 0xf9, 0x93, 0xf4,
-0x67, 0x72, 0x7f, 0x2a, 0x38, 0xec, 0x5e, 0xc8,
-0xdf, 0xe5, 0xf9, 0x30, 0x1d, 0xee, 0x73, 0xd9,
-0xf8, 0xf9, 0xdf, 0x0f, 0x2b, 0xcf, 0x37, 0xd4,
-0xf7, 0x6f, 0xde, 0x32, 0x6d, 0x9c, 0xe5, 0x8f,
-0x26, 0x9f, 0xff, 0x3c, 0x5f, 0x7c, 0x5c, 0x0e,
-0x0f, 0xba, 0xe6, 0xb2, 0x7e, 0xe2, 0xfe, 0x60,
-0xd7, 0x9f, 0x5b, 0x0e, 0x43, 0xfb, 0x0a, 0xdc,
-0xc3, 0xe3, 0x2d, 0xa5, 0x28, 0x60, 0xf5, 0xfc,
-0xbb, 0x31, 0x2e, 0x09, 0xe4, 0x5c, 0x7b, 0x7a,
-0xd5, 0x50, 0x74, 0x6c, 0x09, 0xeb, 0x8b, 0x76,
-0x16, 0xc0, 0xe4, 0xe7, 0xb6, 0x01, 0xa9, 0x95,
-0x6d, 0xa5, 0x0b, 0xb4, 0xb1, 0xd6, 0xf2, 0xef,
-0x96, 0xfe, 0x64, 0xf9, 0xf7, 0x30, 0x75, 0x3d,
-0xa1, 0x9d, 0x9f, 0xd7, 0xf3, 0xef, 0x96, 0xfe,
-0xd4, 0xa4, 0x50, 0xb5, 0x9e, 0x13, 0x9e, 0xa2,
-0x3f, 0x87, 0x28, 0x93, 0x7a, 0x4d, 0x99, 0x72,
-0x76, 0x2e, 0xdd, 0xc8, 0xbf, 0xe7, 0xf4, 0xe7,
-0x37, 0xb5, 0xd4, 0x3a, 0x63, 0xa4, 0x78, 0x30,
-0xae, 0x9d, 0x51, 0x9a, 0xac, 0x3f, 0xab, 0x94,
-0xce, 0x4f, 0xc8, 0xbf, 0x03, 0xb2, 0x60, 0x1f,
-0xca, 0x4e, 0x51, 0xcb, 0xbf, 0x5f, 0x7b, 0xfe,
-0x93, 0xf5, 0xc5, 0x65, 0xcf, 0xbf, 0x1b, 0xfc,
-0x3c, 0x7d, 0xe3, 0x90, 0x74, 0x49, 0x61, 0x52,
-0x0f, 0xfb, 0xf2, 0xc1, 0x35, 0xfa, 0x53, 0xba,
-0x34, 0x37, 0x74, 0x87, 0x71, 0x1e, 0xb3, 0x4b,
-0xd9, 0x6c, 0xf1, 0x73, 0xad, 0x94, 0xf5, 0x74,
-0xc7, 0x7d, 0xde, 0xa4, 0x76, 0x7e, 0x09, 0x58,
-0x22, 0xde, 0xe4, 0x27, 0x68, 0xe7, 0x97, 0xfc,
-0x11, 0xd1, 0xfb, 0x62, 0x9f, 0x0b, 0xd7, 0xd1,
-0x24, 0xfd, 0xc9, 0xf2, 0xef, 0xdc, 0xb7, 0x17,
-0x89, 0xa9, 0x3c, 0xf6, 0x0e, 0xbe, 0x49, 0xe7,
-0x3f, 0xb7, 0xe0, 0x63, 0xb8, 0x05, 0x8a, 0x2b,
-0xd5, 0x30, 0x54, 0x7a, 0x89, 0x84, 0xec, 0xe7,
-0x3f, 0x57, 0x72, 0x7b, 0xa5, 0x0f, 0xe0, 0x19,
-0xa5, 0x3a, 0x35, 0xc3, 0x3c, 0xb3, 0x60, 0xd3,
-0x9f, 0x2c, 0x57, 0xc7, 0x64, 0x75, 0xf6, 0x1a,
-0xfd, 0xe9, 0xb8, 0x19, 0x9e, 0x75, 0x54, 0xd3,
-0xa5, 0x69, 0xbe, 0x53, 0x7a, 0x36, 0x31, 0x45,
-0x7f, 0xde, 0xd9, 0x53, 0x03, 0x2e, 0x9c, 0xd2,
-0x25, 0xe8, 0x64, 0x78, 0xa6, 0x9c, 0xff, 0xd4,
-0x64, 0xe7, 0xc0, 0xa6, 0x35, 0x84, 0x9d, 0x19,
-0x9a, 0x72, 0xfe, 0xf3, 0x86, 0xe0, 0x3f, 0x0d,
-0xdf, 0x36, 0xe2, 0xfe, 0x49, 0xeb, 0x59, 0x40,
-0xfd, 0x39, 0xf9, 0xfc, 0x67, 0xa7, 0xf7, 0x8a,
-0x1c, 0xee, 0xd7, 0xce, 0xf9, 0x5f, 0x8e, 0x4f,
-0xca, 0xbf, 0xe3, 0x7a, 0x5f, 0x74, 0x32, 0x15,
-0x66, 0xb2, 0x93, 0x25, 0x92, 0xb4, 0xf5, 0x6e,
-0xe9, 0xcf, 0x87, 0x23, 0xad, 0xa9, 0xc0, 0x48,
-0x32, 0x18, 0x19, 0x70, 0x3d, 0x95, 0xae, 0x1c,
-0xb6, 0x9f, 0xff, 0xa4, 0x29, 0xda, 0x2e, 0xe3,
-0xf2, 0xf9, 0x7e, 0xcb, 0x19, 0x38, 0x20, 0x6b,
-0x5a, 0x38, 0xa7, 0x3f, 0x65, 0x8f, 0x0a, 0x2c,
-0xad, 0x89, 0xcc, 0x1a, 0x60, 0x12, 0x8e, 0xbd,
-0xc3, 0x69, 0xd3, 0x3e, 0x59, 0xfe, 0xbd, 0x5e,
-0xc5, 0xe7, 0x8d, 0x88, 0xc6, 0x7a, 0x3f, 0x6f,
-0xf2, 0x73, 0x48, 0x0f, 0xcf, 0x66, 0x66, 0x8c,
-0xe4, 0x58, 0x90, 0xe3, 0xa7, 0x2a, 0x7d, 0x84,
-0x08, 0xd8, 0x8f, 0xba, 0xd5, 0x59, 0x07, 0x86,
-0x96, 0xca, 0x9a, 0xf6, 0xf9, 0x8d, 0x18, 0x3b,
-0x1f, 0xa9, 0xe9, 0xcf, 0xee, 0x32, 0xc6, 0x17,
-0x9b, 0xfe, 0xf4, 0xcb, 0x87, 0xf4, 0xd0, 0x26,
-0x3a, 0xa5, 0x74, 0xca, 0xf9, 0x4f, 0x91, 0xee,
-0x97, 0xe5, 0x01, 0xa6, 0x3f, 0xa5, 0x7d, 0xb2,
-0xe6, 0xc7, 0x99, 0xfa, 0xb3, 0x30, 0xae, 0x4c,
-0x04, 0x51, 0x1e, 0x7f, 0xc0, 0x57, 0xb2, 0xb5,
-0xa2, 0x6e, 0xb6, 0xeb, 0x4f, 0x55, 0xbd, 0x12,
-0xac, 0x3f, 0xed, 0xbe, 0xc0, 0x8f, 0xa7, 0xc7,
-0x56, 0x86, 0x07, 0x27, 0xe5, 0xdf, 0xdf, 0xc6,
-0xe9, 0xae, 0x89, 0xbb, 0xbb, 0xf9, 0x5a, 0x54,
-0x52, 0x28, 0xaa, 0xec, 0xe7, 0x3f, 0x07, 0x44,
-0xc6, 0x41, 0xed, 0x9c, 0xea, 0xdf, 0x30, 0x0e,
-0xa6, 0x89, 0x6c, 0xe7, 0xa7, 0xbe, 0x94, 0x0d,
-0x7e, 0xca, 0xc4, 0x67, 0x3f, 0xff, 0xd9, 0xe2,
-0xeb, 0x33, 0xdb, 0x7d, 0x46, 0xb6, 0xc5, 0x3f,
-0x7f, 0x0d, 0x57, 0x8e, 0x22, 0x07, 0x33, 0xce,
-0x2a, 0x7d, 0xcc, 0xac, 0xfc, 0xd1, 0x39, 0xf8,
-0x0d, 0xfc, 0x51, 0x1b, 0xaa, 0x86, 0xab, 0x54,
-0x3b, 0x3f, 0x9f, 0x75, 0xda, 0xf9, 0x79, 0x1c,
-0xba, 0x7a, 0x10, 0x9b, 0x23, 0x1e, 0xe6, 0x6f,
-0xba, 0x76, 0x59, 0xdf, 0x1f, 0x09, 0x81, 0xb6,
-0x4d, 0x12, 0x1b, 0x4f, 0xdf, 0x08, 0x3b, 0x33,
-0xdb, 0x2f, 0x3e, 0x61, 0x8f, 0x7f, 0x92, 0x56,
-0xd8, 0xcd, 0xc6, 0x93, 0x1d, 0x42, 0x0f, 0x28,
-0xf9, 0xb2, 0xf9, 0xfd, 0x51, 0x86, 0x0b, 0xab,
-0xed, 0x99, 0x9b, 0xb2, 0xe2, 0x0f, 0x7d, 0x67,
-0x51, 0xfc, 0x55, 0x66, 0xf3, 0x87, 0xad, 0xef,
-0x8f, 0xa2, 0xd3, 0x53, 0x2f, 0xd0, 0xda, 0xfe,
-0xa6, 0xcf, 0x37, 0x9c, 0x27, 0x2f, 0xc8, 0x61,
-0xb5, 0xd2, 0x96, 0x3f, 0xba, 0x71, 0xaf, 0x74,
-0x05, 0x6e, 0x50, 0xab, 0xbb, 0x1a, 0xf4, 0x79,
-0xd7, 0xce, 0x7f, 0xea, 0xfd, 0x44, 0x7e, 0xba,
-0xd8, 0x77, 0x52, 0xae, 0xee, 0x72, 0x16, 0x2f,
-0x0f, 0xb1, 0xd8, 0xbd, 0xc9, 0xcf, 0xa2, 0xc3,
-0x9c, 0x1e, 0xff, 0x44, 0x7f, 0xec, 0xef, 0x18,
-0x3f, 0xe3, 0xf6, 0xf3, 0xf3, 0xa4, 0x95, 0x3e,
-0xc6, 0xce, 0x2f, 0x85, 0xe1, 0x67, 0x8c, 0x9f,
-0xf6, 0xfc, 0x11, 0x76, 0x3d, 0x2b, 0xb3, 0x6d,
-0x7d, 0xba, 0x82, 0x83, 0x3e, 0x84, 0x63, 0x6d,
-0x9d, 0x9f, 0xef, 0x86, 0x13, 0xca, 0xbc, 0x74,
-0x20, 0xed, 0xf4, 0xc2, 0x6b, 0xd0, 0xc5, 0x62,
-0xb1, 0x36, 0x7e, 0x2a, 0x63, 0x92, 0x71, 0x7e,
-0x69, 0x78, 0xaa, 0xff, 0xce, 0x50, 0xd5, 0xa5,
-0x7d, 0x67, 0xa3, 0x7d, 0x6c, 0xe4, 0x62, 0xe7,
-0x3f, 0xed, 0xfe, 0xfb, 0x03, 0x1a, 0x3f, 0xd9,
-0x41, 0x0a, 0x2c, 0xf0, 0x71, 0x53, 0x7f, 0x56,
-0x68, 0xc8, 0xd1, 0xea, 0x12, 0xec, 0x7b, 0x19,
-0x89, 0x98, 0xe7, 0x3f, 0xc1, 0x81, 0xfc, 0xf4,
-0xc5, 0xfc, 0x1e, 0xf2, 0x16, 0x61, 0x42, 0x14,
-0x0b, 0x91, 0x1c, 0x3f, 0x45, 0xc6, 0x4f, 0x1f,
-0x7a, 0x50, 0xcc, 0x7f, 0xe7, 0x42, 0x30, 0x40,
-0x79, 0x2b, 0x7f, 0x84, 0x1a, 0x53, 0xa9, 0x64,
-0x38, 0x7a, 0x59, 0x3f, 0x23, 0x3f, 0x68, 0x3b,
-0x3f, 0xff, 0x16, 0x1c, 0x95, 0x6b, 0x95, 0xc0,
-0x16, 0x9e, 0x1d, 0xb2, 0x7f, 0x30, 0xe6, 0xda,
-0x66, 0xf9, 0xef, 0x90, 0xa5, 0x49, 0xa6, 0x35,
-0x5a, 0x88, 0x4a, 0xbb, 0xa1, 0x0a, 0x44, 0x5b,
-0xfe, 0xc8, 0xf1, 0xf2, 0xba, 0x75, 0x2b, 0x67,
-0x47, 0xc4, 0xd8, 0xcc, 0x97, 0xdb, 0x9e, 0x86,
-0x4a, 0x45, 0x8c, 0x59, 0xe7, 0xe7, 0x4b, 0x9e,
-0x12, 0x1f, 0x52, 0xca, 0x14, 0x71, 0x30, 0x72,
-0x11, 0x7e, 0x23, 0x54, 0x47, 0xed, 0xf9, 0x23,
-0xcf, 0xee, 0xc8, 0x51, 0x5a, 0x1b, 0x77, 0x31,
-0x4c, 0xb3, 0xf3, 0xf3, 0x36, 0xfd, 0xf9, 0x6d,
-0xf8, 0x25, 0x7c, 0xa0, 0x84, 0xef, 0x76, 0xa7,
-0x5a, 0xdf, 0x92, 0x2f, 0x89, 0xe1, 0xc8, 0xb5,
-0xe7, 0xe7, 0xb5, 0xf8, 0x2e, 0x2b, 0x70, 0xae,
-0x5e, 0x33, 0x7f, 0x84, 0xfe, 0xbb, 0xe3, 0x35,
-0xf0, 0xa5, 0xc4, 0xdd, 0xe4, 0xb3, 0xc2, 0x46,
-0xc5, 0x97, 0x2a, 0x1c, 0x36, 0xf3, 0x47, 0xfe,
-0x75, 0xab, 0x84, 0x47, 0x40, 0x1e, 0xf4, 0xd7,
-0xf9, 0xee, 0x24, 0xad, 0xaa, 0x6f, 0x50, 0xf4,
-0x9b, 0xf9, 0xa3, 0xb2, 0xa2, 0xf9, 0xf0, 0x53,
-0x0e, 0xed, 0xe5, 0x41, 0xf2, 0x35, 0x68, 0x57,
-0xcb, 0x17, 0xe5, 0xaf, 0x34, 0xf3, 0x47, 0x7e,
-0xef, 0x2c, 0xf8, 0x5b, 0xba, 0x1f, 0x39, 0xe8,
-0xfc, 0x1a, 0x9c, 0xa4, 0xfb, 0xb2, 0xae, 0xe1,
-0xf2, 0x5c, 0xfe, 0x48, 0x2c, 0x6a, 0x83, 0x77,
-0x75, 0x1c, 0xed, 0xd5, 0x39, 0x9f, 0xb6, 0xf9,
-0xef, 0xe7, 0x95, 0xe3, 0x28, 0x3b, 0xc5, 0x7e,
-0x7e, 0x2e, 0x8b, 0xd7, 0xa5, 0x5d, 0xa7, 0xcb,
-0xad, 0xef, 0x8f, 0x7e, 0x2a, 0xac, 0x4f, 0xa3,
-0xcc, 0x8d, 0x90, 0x82, 0x6c, 0x1b, 0xca, 0x5f,
-0x71, 0x30, 0x6f, 0xae, 0x69, 0x9f, 0xb8, 0xf7,
-0x4b, 0x7b, 0xa8, 0xa8, 0xa0, 0x86, 0xc6, 0xba,
-0x36, 0x71, 0xb9, 0x99, 0x3f, 0x8a, 0x7b, 0x5e,
-0x54, 0x36, 0xaa, 0x28, 0xab, 0x81, 0xcc, 0x95,
-0x58, 0x02, 0x07, 0xfd, 0x0e, 0xaf, 0xe9, 0xbf,
-0x77, 0xc2, 0xd1, 0xe4, 0xc2, 0x78, 0x20, 0xe3,
-0x9c, 0xc3, 0xf2, 0xc5, 0xc3, 0x68, 0xa8, 0xd6,
-0x3d, 0x99, 0x5b, 0xf4, 0x1c, 0xfb, 0x3c, 0x6a,
-0x28, 0xd7, 0x4f, 0xeb, 0xfc, 0xfc, 0x18, 0x1c,
-0xf5, 0xd6, 0x34, 0xa2, 0xff, 0x7e, 0x11, 0x96,
-0xe9, 0x2c, 0x90, 0x4d, 0xff, 0xe8, 0x7e, 0x39,
-0xc9, 0x6c, 0x30, 0x43, 0xde, 0x56, 0x36, 0xb1,
-0x3d, 0x5c, 0x26, 0x72, 0x2e, 0xff, 0x2e, 0x88,
-0xcc, 0x64, 0x41, 0x3b, 0xf6, 0xd9, 0xc9, 0x62,
-0x25, 0x29, 0x2b, 0x7f, 0x24, 0x71, 0x2d, 0x34,
-0x98, 0xc6, 0xf9, 0xb8, 0xbb, 0xa7, 0x82, 0x9d,
-0x13, 0xc0, 0xba, 0x5c, 0xfe, 0x48, 0x11, 0xbf,
-0x45, 0x8e, 0x46, 0x83, 0x9c, 0x4b, 0xe0, 0x7b,
-0x5a, 0xb2, 0x50, 0x47, 0x71, 0x6e, 0xe5, 0x1c,
-0x3f, 0x4b, 0x06, 0x15, 0x44, 0x38, 0xe7, 0xee,
-0x45, 0x69, 0x79, 0x06, 0xea, 0x81, 0x9d, 0xff,
-0x34, 0xf9, 0x39, 0x9e, 0x1d, 0x4b, 0xe0, 0x36,
-0x74, 0x94, 0xaf, 0xa3, 0x7f, 0x35, 0x59, 0x7f,
-0x52, 0xe9, 0x63, 0x86, 0xf0, 0xac, 0x93, 0xfa,
-0xc2, 0xca, 0x21, 0x59, 0xd3, 0x9f, 0xd6, 0xf7,
-0x47, 0x03, 0x29, 0x6d, 0xab, 0x21, 0xec, 0xcc,
-0x97, 0x1e, 0x9c, 0xb3, 0x7d, 0x7f, 0xc4, 0x3d,
-0xcb, 0xe2, 0x9f, 0xc2, 0xb5, 0xfa, 0x13, 0x50,
-0x7f, 0x8e, 0xe5, 0xe1, 0xdc, 0x6e, 0x77, 0x32,
-0x08, 0x69, 0x93, 0xac, 0x4e, 0xd1, 0x9f, 0xee,
-0xcb, 0xfc, 0x2a, 0x61, 0x82, 0xbb, 0x46, 0x7f,
-0x8e, 0x21, 0xc6, 0x98, 0xfe, 0x24, 0xc7, 0x85,
-0xf0, 0xe4, 0xf3, 0x9f, 0x75, 0xae, 0x67, 0x95,
-0xe9, 0x88, 0xf7, 0x45, 0x3f, 0xc9, 0x7d, 0x73,
-0x60, 0xd7, 0x9f, 0x99, 0x56, 0x0d, 0xef, 0x2e,
-0xa1, 0x55, 0x98, 0xfa, 0xfd, 0xd1, 0xf2, 0xa7,
-0x77, 0xe0, 0x36, 0x3b, 0x7c, 0xc7, 0xd7, 0xe4,
-0x76, 0x3a, 0xe5, 0xfb, 0x23, 0x17, 0x7c, 0x98,
-0xa9, 0x1b, 0x76, 0xef, 0x6b, 0x98, 0x0e, 0x2f,
-0x40, 0x9d, 0x3a, 0xe9, 0xfb, 0xa3, 0xdf, 0xcc,
-0x9b, 0x90, 0xc2, 0x7d, 0xd8, 0x85, 0xc3, 0xb9,
-0x78, 0x88, 0xc5, 0xcf, 0x91, 0x36, 0x55, 0xc5,
-0xfd, 0x61, 0xdb, 0xb4, 0x91, 0xa4, 0xf1, 0x7e,
-0xd6, 0xf7, 0x47, 0x87, 0x93, 0xd3, 0x24, 0x26,
-0x3b, 0xd7, 0x9f, 0x91, 0x0f, 0xe8, 0x7a, 0xc2,
-0xe2, 0xe7, 0x73, 0xc9, 0x42, 0x15, 0xb1, 0xb9,
-0x9c, 0x9c, 0xbd, 0xf7, 0x40, 0x5b, 0xa5, 0x5d,
-0x7f, 0x6a, 0xdf, 0x1f, 0x51, 0x59, 0x8f, 0x7f,
-0xe6, 0xb4, 0xbe, 0x5d, 0x7f, 0x52, 0x94, 0x9d,
-0x7b, 0xf9, 0xe1, 0x5c, 0x20, 0xd4, 0xc6, 0xcf,
-0x3c, 0x4d, 0x0a, 0x25, 0x5a, 0x55, 0x4d, 0x13,
-0x15, 0x4e, 0xe6, 0xe7, 0x71, 0x12, 0xd6, 0x6d,
-0xf7, 0xa8, 0xae, 0xb3, 0x6c, 0xdf, 0x1f, 0xc1,
-0x06, 0xaa, 0x9d, 0x9f, 0x1f, 0x92, 0x19, 0x3f,
-0x79, 0x7b, 0xfc, 0x53, 0x20, 0x9b, 0x64, 0xe3,
-0xec, 0x79, 0xc2, 0xd0, 0x6e, 0x56, 0xfc, 0x13,
-0x7f, 0xa4, 0x9d, 0x9f, 0xef, 0x23, 0xda, 0x41,
-0xd0, 0xc9, 0xfa, 0xb3, 0x5f, 0x60, 0xfa, 0xac,
-0x21, 0x2b, 0xf4, 0xa3, 0x4a, 0x99, 0xfa, 0xfd,
-0x91, 0x26, 0xe7, 0xe4, 0xb7, 0x84, 0xa9, 0xdf,
-0x1f, 0x95, 0xbc, 0x45, 0x7b, 0xd8, 0x8f, 0xb6,
-0xf1, 0x43, 0xc2, 0xa5, 0xc6, 0xf0, 0xa4, 0xef,
-0x8f, 0xbc, 0xe7, 0x90, 0x9f, 0x55, 0x80, 0xdb,
-0x3a, 0x3a, 0xf2, 0x30, 0x87, 0x73, 0x4e, 0xfa,
-0xfe, 0x48, 0xdd, 0xa9, 0x4b, 0xe0, 0x23, 0xec,
-0x7c, 0xf2, 0x22, 0xfb, 0xf7, 0x47, 0xdc, 0x6e,
-0xb2, 0x61, 0x63, 0x95, 0xf2, 0x19, 0x76, 0x80,
-0xe6, 0xa0, 0x7e, 0x06, 0xcb, 0xe4, 0x27, 0x3b,
-0x97, 0xa0, 0x75, 0x61, 0x06, 0x13, 0xa2, 0x2c,
-0x10, 0x6a, 0x7d, 0x7f, 0x04, 0x6d, 0xf0, 0x23,
-0x91, 0xd5, 0x35, 0x8c, 0x7c, 0xd2, 0xf7, 0x47,
-0x63, 0x4a, 0x88, 0x9b, 0x8e, 0x7b, 0x95, 0x3c,
-0xf5, 0xfb, 0x23, 0x76, 0x7e, 0x5e, 0x65, 0xc7,
-0x3e, 0xf9, 0x27, 0xe9, 0x6b, 0x64, 0x6a, 0xfc,
-0x93, 0xdb, 0x1f, 0x93, 0xd5, 0x82, 0x20, 0x79,
-0x09, 0xf7, 0xf7, 0x55, 0x53, 0xe2, 0x9f, 0x83,
-0x07, 0xe8, 0xfd, 0xaa, 0x73, 0x8d, 0xef, 0x39,
-0xf8, 0x99, 0x3c, 0x49, 0x7f, 0xb2, 0xf3, 0xf3,
-0xff, 0x9c, 0x9a, 0x97, 0x9d, 0xbe, 0x16, 0x75,
-0xe4, 0x6f, 0x07, 0xa7, 0x7e, 0x7f, 0x44, 0xaf,
-0x54, 0x84, 0x55, 0xe7, 0x3e, 0x16, 0x57, 0x54,
-0xa6, 0x9c, 0xff, 0x9c, 0xf0, 0x9c, 0x48, 0xe1,
-0x32, 0x7f, 0x90, 0xbf, 0xf5, 0xda, 0xef, 0x8f,
-0x9e, 0xa3, 0xeb, 0x68, 0x80, 0x3d, 0xa6, 0x45,
-0xd0, 0x0f, 0x7b, 0xda, 0xbe, 0x3f, 0xda, 0xa1,
-0xb6, 0xb1, 0x1f, 0x8d, 0x92, 0x1d, 0xb4, 0x7d,
-0xf2, 0xf7, 0x47, 0xec, 0xfc, 0x67, 0x42, 0xd1,
-0x3e, 0xfb, 0x6b, 0xd3, 0x84, 0xe8, 0xa4, 0xef,
-0x8f, 0x0e, 0x13, 0x2d, 0xbc, 0x3e, 0xca, 0x6b,
-0x07, 0x41, 0x27, 0x7f, 0x7f, 0x34, 0x20, 0x5c,
-0xee, 0xc7, 0x1f, 0x75, 0x17, 0xbf, 0xe5, 0x9a,
-0xa2, 0x3f, 0x39, 0x69, 0x5c, 0x78, 0x09, 0x59,
-0xb0, 0x6c, 0xb4, 0x21, 0x24, 0x4c, 0x40, 0xcd,
-0x94, 0xef, 0x8f, 0x60, 0xa3, 0xbe, 0xcc, 0x7d,
-0x54, 0xff, 0x50, 0xc7, 0xfa, 0xfe, 0xc8, 0x81,
-0x75, 0x8a, 0x76, 0xe4, 0xdc, 0x4f, 0x0f, 0x09,
-0xbe, 0x49, 0xfa, 0x13, 0x77, 0x37, 0x5a, 0x16,
-0xe8, 0x5b, 0x1a, 0x2c, 0x06, 0xc5, 0x10, 0x7f,
-0xe6, 0xf7, 0x47, 0xe2, 0x83, 0xb4, 0x3f, 0x18,
-0x1e, 0xdc, 0x3c, 0xca, 0xfb, 0x53, 0x13, 0xa0,
-0x9d, 0x2f, 0xb7, 0xbe, 0x3f, 0x1a, 0x89, 0xac,
-0x9d, 0xc7, 0x96, 0xf9, 0x0c, 0xf5, 0xb4, 0xe1,
-0x17, 0xe7, 0xf8, 0x09, 0x47, 0x16, 0x73, 0xcd,
-0xca, 0x7d, 0xd2, 0xe7, 0x3c, 0x8e, 0x1e, 0x2c,
-0x9c, 0x91, 0xae, 0x13, 0x0a, 0xd5, 0x79, 0xc6,
-0x3d, 0x8f, 0x28, 0x79, 0xf3, 0xb8, 0xfb, 0x94,
-0xaf, 0x48, 0x45, 0x7d, 0xd3, 0x56, 0x03, 0x2b,
-0x94, 0xa8, 0xf3, 0x8c, 0xd8, 0x21, 0x25, 0x5c,
-0x33, 0x8d, 0xca, 0xc5, 0xa2, 0xd0, 0xc2, 0xc9,
-0x7a, 0xc1, 0xf8, 0x1c, 0x96, 0x0d, 0xcc, 0xce,
-0x38, 0xb7, 0x1c, 0x66, 0x4a, 0x0e, 0x95, 0x8b,
-0xc3, 0x72, 0xf8, 0x32, 0x38, 0xcc, 0xba, 0x23,
-0x51, 0xc7, 0x5f, 0x2c, 0x12, 0xe9, 0x75, 0x72,
-0x49, 0xbf, 0x63, 0x0d, 0xdc, 0x47, 0xef, 0x91,
-0xad, 0x7b, 0x1e, 0xb9, 0x1b, 0xe2, 0x92, 0x08,
-0x4b, 0x44, 0xf6, 0xa1, 0x3e, 0xa7, 0x7f, 0xa8,
-0x6f, 0xf5, 0x45, 0x28, 0xe3, 0x44, 0x88, 0xc8,
-0x12, 0x15, 0x64, 0xa3, 0x60, 0xd6, 0xdd, 0xc3,
-0x29, 0x54, 0x91, 0xef, 0xf5, 0x97, 0xf0, 0x9c,
-0x92, 0x88, 0xc9, 0x25, 0xfe, 0x12, 0x30, 0xfb,
-0xe9, 0xe2, 0xae, 0x83, 0x2f, 0xa9, 0xd2, 0xf7,
-0xa1, 0x14, 0x0b, 0x8a, 0x5a, 0xd2, 0x2c, 0xe0,
-0xce, 0x9a, 0xeb, 0x27, 0x7c, 0x46, 0x66, 0xe3,
-0x1e, 0x03, 0x36, 0xdd, 0x54, 0xc0, 0x79, 0x33,
-0xfb, 0x19, 0x47, 0x9d, 0xba, 0x11, 0xe4, 0xb6,
-0xa8, 0x4c, 0xbc, 0x5c, 0x0b, 0xc8, 0x54, 0xe4,
-0xcc, 0x7e, 0xc6, 0xa6, 0xad, 0xe0, 0x5e, 0x85,
-0xbb, 0x15, 0x4f, 0xca, 0xb1, 0x82, 0x8b, 0xc2,
-0x5f, 0x28, 0x1e, 0x5b, 0x3f, 0xf3, 0xd7, 0xe0,
-0x2b, 0xd7, 0x22, 0xac, 0xf0, 0xdd, 0x4f, 0xd3,
-0x99, 0x58, 0x30, 0xeb, 0x22, 0x79, 0x72, 0xc2,
-0x25, 0xf3, 0x62, 0xac, 0x37, 0x4f, 0xa2, 0x2e,
-0x79, 0x91, 0x28, 0x59, 0xe3, 0x29, 0x2a, 0x41,
-0xa6, 0x5e, 0x40, 0x97, 0x31, 0x80, 0x05, 0xd5,
-0xec, 0xa7, 0x93, 0x0b, 0x26, 0x9a, 0x32, 0x33,
-0x44, 0xe1, 0x38, 0x17, 0x52, 0x9b, 0x82, 0xf7,
-0x88, 0x82, 0x6a, 0xf6, 0xb3, 0x61, 0x76, 0x73,
-0x62, 0x79, 0xb0, 0x58, 0x2c, 0x69, 0x15, 0xe2,
-0xea, 0xf2, 0xe0, 0x97, 0xc5, 0x12, 0x6a, 0xf6,
-0x33, 0x02, 0x71, 0x7c, 0x4c, 0x44, 0xc4, 0xfe,
-0x37, 0x27, 0x44, 0x7c, 0x30, 0x58, 0x7d, 0xb9,
-0x5b, 0xa8, 0x48, 0x14, 0xca, 0x91, 0xa8, 0xb4,
-0x15, 0x0b, 0x5e, 0xb9, 0x21, 0x5a, 0x64, 0xd5,
-0xb1, 0xc1, 0x5f, 0x02, 0x31, 0x5a, 0x82, 0x05,
-0x2e, 0x02, 0x45, 0xb4, 0x44, 0x31, 0xfb, 0x99,
-0xc7, 0x2d, 0xa2, 0xf7, 0xc6, 0x4b, 0xbc, 0x8e,
-0x3c, 0xee, 0x8b, 0x34, 0x16, 0xf7, 0x78, 0x1d,
-0x60, 0xce, 0x7b, 0x31, 0x27, 0xd0, 0x7c, 0x59,
-0x8a, 0x0a, 0xc5, 0x0e, 0x01, 0x27, 0x04, 0x0b,
-0xd6, 0xbc, 0x37, 0xf2, 0x5f, 0xa4, 0x6d, 0xf1,
-0x6f, 0x78, 0x5d, 0x4b, 0xc8, 0x17, 0x13, 0x2f,
-0xc7, 0x6f, 0xf1, 0x16, 0x9a, 0xf7, 0x3c, 0xb2,
-0x64, 0xda, 0xea, 0xc4, 0x99, 0xf8, 0x57, 0xbc,
-0x25, 0xeb, 0x1d, 0xab, 0x13, 0xf7, 0xc5, 0xff,
-0xd2, 0x5b, 0x62, 0xda, 0xe0, 0xe2, 0x25, 0xdc,
-0x6a, 0xba, 0x3c, 0x7e, 0x9d, 0xb7, 0xf0, 0x45,
-0x2c, 0x9c, 0x61, 0x05, 0xb5, 0xc8, 0xac, 0xcb,
-0x9b, 0x47, 0x5d, 0xf1, 0x7b, 0xbc, 0x9e, 0x17,
-0x67, 0xce, 0xa3, 0xa5, 0xf1, 0x06, 0x6c, 0x57,
-0x94, 0x8b, 0x6d, 0x03, 0x0e, 0x7f, 0x93, 0x4c,
-0xc4, 0xc5, 0x2d, 0x5c, 0x1c, 0x27, 0xf1, 0x3a,
-0xb4, 0xcf, 0x5c, 0x8d, 0x90, 0xc7, 0x95, 0x25,
-0x96, 0xc7, 0x67, 0x7a, 0x1d, 0xeb, 0xb9, 0x32,
-0x1a, 0x8d, 0x7f, 0xd9, 0xeb, 0xa0, 0xb9, 0x75,
-0xb4, 0x58, 0x11, 0x9a, 0xb9, 0x26, 0x98, 0x01,
-0x92, 0xea, 0x68, 0x86, 0x26, 0xf8, 0x0a, 0x78,
-0xcc, 0x7b, 0x2e, 0x26, 0x10, 0x4f, 0x8b, 0x38,
-0x9e, 0xd0, 0x02, 0x71, 0x1c, 0x4f, 0xd4, 0x3a,
-0xd4, 0xec, 0x4b, 0x44, 0x90, 0x77, 0x7a, 0xe5,
-0x25, 0xfe, 0xa2, 0x16, 0x41, 0x4e, 0x48, 0x72,
-0xc4, 0x5f, 0x64, 0xab, 0x2b, 0x53, 0x54, 0x4f,
-0xf0, 0x4b, 0xae, 0x92, 0x08, 0xa7, 0xf4, 0xdc,
-0x5b, 0xe6, 0x71, 0x95, 0x28, 0x66, 0x3f, 0x09,
-0x17, 0xeb, 0xbf, 0x17, 0x4d, 0xd6, 0x11, 0xe1,
-0x62, 0xf4, 0xde, 0x20, 0x16, 0x94, 0x5c, 0x5f,
-0x70, 0xc5, 0xc7, 0x8b, 0x24, 0x10, 0x60, 0x91,
-0x28, 0x28, 0xe0, 0x45, 0xfb, 0x34, 0x6b, 0x60,
-0xf1, 0xdd, 0x11, 0x5f, 0x82, 0xca, 0xb2, 0x28,
-0x12, 0x22, 0xeb, 0x05, 0x30, 0xfb, 0xa9, 0x2c,
-0x63, 0xeb, 0xef, 0x2f, 0xa0, 0x84, 0x3a, 0x72,
-0x85, 0x5c, 0x5f, 0x8e, 0x28, 0x8b, 0x9a, 0xd9,
-0x09, 0x18, 0x5c, 0x92, 0x0e, 0xa6, 0x94, 0xaf,
-0x83, 0x3b, 0xcd, 0x71, 0x01, 0x98, 0x13, 0xe7,
-0x4a, 0x81, 0xe0, 0xbb, 0xcf, 0x94, 0xf1, 0xe1,
-0x4b, 0xa0, 0x48, 0x35, 0xab, 0x24, 0x98, 0x0d,
-0xf9, 0x40, 0x14, 0x78, 0x05, 0x2a, 0x58, 0xc1,
-0xfc, 0x8b, 0x1d, 0x78, 0x55, 0x70, 0xf3, 0xee,
-0x6f, 0x52, 0x8a, 0x25, 0xa1, 0x8f, 0x2b, 0x83,
-0x68, 0xec, 0x1e, 0x49, 0xb0, 0xda, 0xf9, 0x1c,
-0xdf, 0x3a, 0xf7, 0xd5, 0xe0, 0xcc, 0x8e, 0x92,
-0xc7, 0xb9, 0x95, 0xea, 0xdd, 0xc1, 0x2f, 0x77,
-0x94, 0x50, 0xdb, 0x3d, 0x6b, 0xf1, 0x56, 0x11,
-0x05, 0x52, 0x78, 0x8b, 0x29, 0xf7, 0x14, 0x85,
-0x60, 0x91, 0x57, 0x58, 0xc2, 0x15, 0x25, 0x95,
-0x78, 0x91, 0xb7, 0x0d, 0x0b, 0xb6, 0x7e, 0xf6,
-0x14, 0x89, 0xf7, 0x0a, 0x5f, 0xe2, 0x4b, 0x94,
-0xfb, 0x63, 0x45, 0xf7, 0x0a, 0x25, 0xdc, 0x97,
-0x14, 0xab, 0x5d, 0x59, 0x44, 0x54, 0x5a, 0x3c,
-0xf2, 0xba, 0x28, 0x16, 0xee, 0x65, 0x05, 0xab,
-0xae, 0x60, 0x31, 0xa1, 0xc0, 0x04, 0x68, 0x81,
-0x83, 0x50, 0x25, 0x2d, 0xf9, 0xad, 0x3b, 0x82,
-0x8b, 0xbf, 0x07, 0xda, 0x7a, 0x56, 0x07, 0x45,
-0x2c, 0x70, 0xdb, 0xd4, 0x5b, 0x82, 0xa2, 0xed,
-0x9e, 0x8e, 0x35, 0xdc, 0x7d, 0xf4, 0x2b, 0xf2,
-0xf5, 0xfd, 0x5a, 0xe1, 0x2f, 0x91, 0x59, 0x66,
-0x1d, 0x8f, 0x50, 0x91, 0x82, 0x82, 0x8b, 0x63,
-0x85, 0xa2, 0x90, 0xe0, 0x2a, 0xb2, 0xee, 0x59,
-0x3f, 0xb1, 0x6c, 0xe2, 0xef, 0x27, 0x2e, 0x4e,
-0x7c, 0x6c, 0x16, 0xe0, 0xdf, 0x75, 0x85, 0xdf,
-0x58, 0x76, 0xb5, 0xf7, 0xa5, 0xcc, 0xfe, 0x1f,
-0x87, 0x5f, 0x77, 0xd6, 0xb2, 0xc2, 0x2a, 0xdb,
-0x3d, 0xeb, 0x97, 0x4d, 0xcc, 0xa8, 0xe9, 0x1b,
-0xf8, 0xb8, 0xbe, 0xae, 0xe9, 0x24, 0x2b, 0x7c,
-0x60, 0xab, 0xf3, 0x46, 0xcf, 0x16, 0xcf, 0x6b,
-0xeb, 0xf8, 0xc1, 0xad, 0xde, 0xe8, 0x8b, 0x33,
-0x0e, 0x60, 0xc1, 0xaa, 0x9b, 0x06, 0xab, 0x95,
-0x1d, 0xb1, 0x9b, 0x3c, 0xf9, 0x47, 0x48, 0xb3,
-0x52, 0x2a, 0xdd, 0x24, 0xe4, 0x5b, 0xef, 0x20,
-0x98, 0x9c, 0x77, 0xac, 0xe6, 0x74, 0xce, 0x9b,
-0x75, 0x1a, 0xe7, 0xe3, 0xc5, 0x5e, 0x61, 0xbd,
-0xc9, 0x79, 0xab, 0x5d, 0xfc, 0x7e, 0xed, 0xef,
-0xa9, 0x08, 0x16, 0xaf, 0xad, 0x31, 0x13, 0xd6,
-0x24, 0x4a, 0xd5, 0x2f, 0xc8, 0x45, 0xfd, 0xc2,
-0x1a, 0xae, 0x94, 0x62, 0xc1, 0xba, 0x27, 0x00,
-0xb6, 0x93, 0xf3, 0x44, 0xdb, 0x1f, 0x64, 0x31,
-0x6b, 0x24, 0x61, 0x0e, 0x97, 0x4f, 0x23, 0xcd,
-0xd2, 0xcf, 0x85, 0xd9, 0x9c, 0x48, 0x19, 0xe7,
-0xcd, 0xba, 0x32, 0x58, 0x9a, 0x28, 0x4e, 0x37,
-0x76, 0x16, 0x55, 0x09, 0x51, 0xaa, 0x15, 0xcc,
-0xa7, 0xa9, 0x55, 0xb8, 0x66, 0x3d, 0xd4, 0x11,
-0xe4, 0xee, 0x82, 0x7b, 0x70, 0xcd, 0x62, 0xc1,
-0xd8, 0x52, 0xd9, 0x81, 0x5a, 0xe1, 0x16, 0x28,
-0x52, 0x84, 0xe5, 0x9c, 0x07, 0xbe, 0x40, 0xd9,
-0x82, 0xe2, 0x8c, 0x6d, 0x1a, 0xdb, 0x29, 0x44,
-0x62, 0xa7, 0xde, 0xd8, 0x01, 0x32, 0x30, 0x0a,
-0x56, 0x9d, 0xc0, 0x00, 0x88, 0xcb, 0x80, 0x62,
-0x61, 0x3b, 0x5b, 0x0f, 0xd4, 0xa8, 0x93, 0x38,
-0x05, 0x55, 0xc7, 0x76, 0x98, 0x03, 0xf9, 0x94,
-0x3c, 0x80, 0xef, 0x80, 0x85, 0x16, 0xe3, 0x71,
-0xca, 0xe2, 0xbb, 0xf3, 0xe2, 0xc8, 0xf9, 0x06,
-0x51, 0xea, 0x15, 0x82, 0x7a, 0x21, 0xc7, 0x10,
-0x05, 0x6f, 0x2f, 0x1b, 0x78, 0xc7, 0xe7, 0x18,
-0x05, 0xa3, 0x1d, 0x38, 0x21, 0x48, 0xd9, 0xfe,
-0x00, 0xbd, 0x10, 0xec, 0xd1, 0x0a, 0x66, 0xdd,
-0xe2, 0x06, 0xa1, 0x19, 0x31, 0xbd, 0x44, 0x44,
-0xbe, 0xc4, 0x7b, 0xb4, 0x02, 0xcd, 0xdd, 0x93,
-0x63, 0x9c, 0x17, 0x91, 0x75, 0xc0, 0xf6, 0x29,
-0x17, 0x2b, 0xe4, 0xc6, 0x2c, 0xc6, 0x21, 0x97,
-0xcc, 0x76, 0xd8, 0x17, 0xd6, 0xce, 0xbc, 0xa7,
-0x82, 0xef, 0xe1, 0x81, 0xc5, 0x6c, 0x6c, 0x70,
-0x0b, 0x64, 0x85, 0x88, 0x71, 0xcf, 0x28, 0x4e,
-0xca, 0x22, 0x2a, 0xc5, 0x05, 0xaf, 0x90, 0x2b,
-0x98, 0xec, 0x89, 0x6a, 0xe7, 0x6c, 0x10, 0xef,
-0xa2, 0x80, 0xee, 0x9b, 0x5e, 0x00, 0xf3, 0x9e,
-0x8c, 0xf3, 0x0c, 0xef, 0xf9, 0x4b, 0x8c, 0x42,
-0xa1, 0xc9, 0x3a, 0x6e, 0x89, 0xb0, 0x3a, 0x51,
-0x1a, 0xff, 0x82, 0xb7, 0xe8, 0x45, 0x61, 0xf5,
-0xba, 0x1d, 0xac, 0x60, 0xbe, 0x1f, 0x8e, 0xf2,
-0x6a, 0xba, 0x23, 0x7e, 0x93, 0x37, 0xff, 0x45,
-0xb2, 0x9a, 0xde, 0xc7, 0x0a, 0xb9, 0xba, 0x18,
-0xe3, 0x3c, 0x6e, 0x0b, 0xb8, 0x3f, 0xbc, 0xe8,
-0x60, 0x37, 0xc0, 0x42, 0xaf, 0x39, 0x9e, 0xc5,
-0x50, 0x41, 0x6f, 0x97, 0x8b, 0xa3, 0xc2, 0x56,
-0xae, 0x82, 0x36, 0xd9, 0xed, 0x53, 0xc1, 0x77,
-0x28, 0xa3, 0xde, 0x78, 0x9e, 0x97, 0x5b, 0x0f,
-0xf7, 0x27, 0xb4, 0x82, 0x69, 0x4b, 0x8b, 0xe3,
-0x8e, 0x05, 0xdc, 0x2c, 0x34, 0x87, 0xa2, 0xac,
-0xb0, 0x56, 0x2f, 0x98, 0x73, 0xc4, 0xdd, 0x0d,
-0x2b, 0xe8, 0xf5, 0x72, 0x5e, 0x94, 0xdb, 0x8a,
-0x05, 0xc3, 0x50, 0x73, 0xfd, 0x64, 0xe3, 0xc9,
-0xf6, 0x00, 0xa9, 0x25, 0x57, 0xb0, 0xc6, 0x33,
-0x02, 0x31, 0x44, 0x7f, 0xa3, 0x58, 0x44, 0x04,
-0x85, 0x6a, 0x05, 0x30, 0xfb, 0x49, 0x20, 0x86,
-0x7b, 0x80, 0xc3, 0xc5, 0x35, 0xe4, 0x0a, 0x8a,
-0xd9, 0x4f, 0x51, 0x78, 0x00, 0x72, 0xba, 0x46,
-0x2f, 0x58, 0xe3, 0x19, 0x21, 0x40, 0x0d, 0xce,
-0x1b, 0x05, 0xf3, 0x9e, 0x9c, 0x52, 0x11, 0x77,
-0x78, 0x61, 0x92, 0x7d, 0x9a, 0xfd, 0x54, 0x80,
-0xfd, 0xa5, 0x85, 0x39, 0x4a, 0x7e, 0x8a, 0xac,
-0x80, 0x52, 0xcd, 0x50, 0xcd, 0x7b, 0xc6, 0xe7,
-0xf8, 0xb9, 0xe9, 0xd0, 0x40, 0xa5, 0xac, 0xb0,
-0x80, 0xbb, 0x81, 0x15, 0x72, 0xef, 0x1e, 0xc3,
-0xa5, 0x51, 0xa6, 0xb8, 0x62, 0xbc, 0x07, 0x8e,
-0xd0, 0x79, 0x8a, 0x28, 0xf1, 0x82, 0xcd, 0x3e,
-0x05, 0x98, 0xad, 0x14, 0x4a, 0xfc, 0xbd, 0xf0,
-0x3b, 0x98, 0xbf, 0x48, 0xfb, 0xa5, 0x5e, 0xab,
-0x9f, 0xc2, 0xfd, 0x3d, 0xde, 0xe0, 0x92, 0xd2,
-0xa2, 0x56, 0x66, 0x9f, 0xc1, 0x25, 0x2e, 0x9b,
-0x7d, 0x2a, 0x68, 0xea, 0xb6, 0xf5, 0x65, 0xe3,
-0xbc, 0xc2, 0x45, 0x1b, 0x43, 0x0c, 0xef, 0x65,
-0x45, 0x1d, 0x8d, 0x0f, 0x5c, 0xaf, 0x15, 0x6c,
-0xf6, 0xa9, 0x4a, 0x3f, 0xf0, 0xcc, 0x5a, 0x5c,
-0xb4, 0x45, 0x69, 0x8c, 0xc5, 0x3c, 0xc2, 0x62,
-0xae, 0x48, 0xb1, 0xd6, 0x11, 0x1b, 0x7a, 0x22,
-0x94, 0x25, 0xc4, 0xb8, 0xa2, 0x4f, 0x06, 0x98,
-0x57, 0x0e, 0xef, 0x42, 0x01, 0x67, 0x14, 0xac,
-0xf1, 0xbc, 0x93, 0xbf, 0x47, 0x79, 0x79, 0xf0,
-0x96, 0xf9, 0x85, 0x66, 0xc1, 0xbc, 0x27, 0x17,
-0xad, 0x58, 0x53, 0x58, 0x4a, 0xbe, 0x50, 0x56,
-0xa4, 0x36, 0xae, 0xc9, 0xdf, 0x31, 0x99, 0x59,
-0x33, 0x6c, 0x9c, 0xef, 0x29, 0x0a, 0x35, 0x36,
-0x6d, 0xb1, 0x9e, 0xf7, 0xbf, 0xcb, 0xf9, 0x4a,
-0x5b, 0xbb, 0xab, 0x53, 0x38, 0x5f, 0x63, 0xbf,
-0xe7, 0x14, 0xce, 0xdf, 0xea, 0xbd, 0xeb, 0x8d,
-0x47, 0x0e, 0x0c, 0xbd, 0x77, 0xe9, 0xd6, 0x9f,
-0xdc, 0x75, 0x76, 0x06, 0x2b, 0x58, 0x75, 0xe8,
-0xc3, 0xec, 0x04, 0xbf, 0x52, 0x50, 0xda, 0x6b,
-0x14, 0x24, 0xab, 0x4e, 0x23, 0x1f, 0x8e, 0x9d,
-0x64, 0x15, 0xac, 0x4b, 0x8b, 0x38, 0x31, 0x1a,
-0x9a, 0x85, 0x6b, 0xda, 0x95, 0xaa, 0xd7, 0xb6,
-0x63, 0xd9, 0x67, 0x48, 0xea, 0x21, 0x1f, 0xbd,
-0x60, 0xd6, 0x4c, 0x99, 0x71, 0xa3, 0x60, 0xd4,
-0x5d, 0xdb, 0xce, 0x56, 0x77, 0x4d, 0x4b, 0xeb,
-0x4f, 0x86, 0x15, 0xb4, 0x87, 0x76, 0x42, 0xa7,
-0x32, 0x57, 0x2a, 0x68, 0x23, 0x5a, 0xa1, 0xb4,
-0xd7, 0x6c, 0xa7, 0xf5, 0x73, 0x12, 0x99, 0xac,
-0x7b, 0x5e, 0xfb, 0x7e, 0x66, 0x9d, 0xc4, 0xfe,
-0x3e, 0xda, 0x40, 0xee, 0xfd, 0x06, 0xe0, 0x7b,
-0x50, 0xda, 0x6b, 0x5a, 0x8c, 0xfe, 0x27, 0x34,
-0x14, 0x52, 0xaa, 0x1a, 0x05, 0xc9, 0xea, 0x0b,
-0x11, 0x58, 0x0c, 0x96, 0x7d, 0x6f, 0x6d, 0x14,
-0xec, 0x93, 0xab, 0x3d, 0x06, 0x72, 0xcf, 0xb3,
-0xff, 0xd1, 0x33, 0x89, 0xf2, 0x41, 0x18, 0xc8,
-0xfd, 0x4b, 0x2f, 0x18, 0xbe, 0xf6, 0xbf, 0x76,
-0xd5, 0xd5, 0x5d, 0xfb, 0x33, 0xb7, 0xfb, 0xdf,
-0x6c, 0xf6, 0x1f, 0xb8, 0xea, 0x27, 0x26, 0x26,
-0xd4, 0x49, 0x85, 0xff, 0x37, 0xeb, 0x72, 0x36,
-0x2f, 0x91, 0xff, 0xf3, 0x36, 0xff, 0x49, 0xed,
-0xa6, 0xda, 0xae, 0x35, 0xb7, 0xff, 0x97, 0x6c,
-0xde, 0x6e, 0xd7, 0xd6, 0x26, 0xfc, 0xbf, 0x6c,
-0xf3, 0x80, 0xa6, 0xae, 0xbd, 0xdf, 0x54, 0x9b,
-0xff, 0x17, 0xdb, 0xc1, 0x27, 0xbc, 0x9f, 0xed,
-0xfa, 0x17, 0xde, 0x1c, 0x98, 0xcd, 0xc3, 0x35,
-0xd7, 0xa7, 0x36, 0xff, 0x1f, 0xa8, 0xfb, 0x97,
-0x2f, 0xf6, 0xb7, 0x1c, 0x89, 0xf6, 0xff, 0x45,
-0xbf, 0xfd, 0xf7, 0xb6, 0xf9, 0xf4, 0xfa, 0xf4,
-0xfa, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4,
-0xfa, 0xff, 0xe5, 0xd2, 0xf6, 0x49, 0xa2, 0xed,
-0x93, 0xea, 0x7f, 0x76, 0x5f, 0x3e, 0xbd, 0x3e,
-0xbd, 0x3e, 0xbd, 0x3e, 0xbd, 0x3e, 0xbd, 0x3e,
-0xbd, 0xfe, 0x33, 0xae, 0x20, 0xfb, 0x73, 0x09,
-0x50, 0xf9, 0x6b, 0xe3, 0xef, 0xff, 0xf3, 0x41,
-0x50, 0xa6, 0xfd, 0xeb, 0xbf, 0xaf, 0xfd, 0x9e,
-0x23, 0x08, 0x69, 0xce, 0x6a, 0xbf, 0x3b, 0x35,
-0xb5, 0xaf, 0xff, 0x13, 0x87, 0x7b, 0xf6, 0xdd,
-0xd4, 0x60, 0x00, 0x00,
diff --git a/board/esd/pci405/pci405.c b/board/esd/pci405/pci405.c
deleted file mode 100644 (file)
index 566f6f7..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-#include <pci.h>
-#include <asm/4xx_pci.h>
-#include <asm/io.h>
-
-#include "pci405.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* Prototypes */
-unsigned long fpga_done_state(void);
-unsigned long fpga_init_state(void);
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* predefine these here */
-#define FPGA_DONE_STATE (fpga_done_state())
-#define FPGA_INIT_STATE (fpga_init_state())
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-#define FPGA_DONE_STATE_V11 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_DONE)
-#define FPGA_DONE_STATE_V12 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_DONE_V12)
-
-#define FPGA_INIT_STATE_V11 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_INIT)
-#define FPGA_INIT_STATE_V12 (in_be32((void*)GPIO0_IR) & CONFIG_SYS_FPGA_INIT_V12)
-
-
-int board_revision(void)
-{
-       unsigned long CPC0_CR0Reg;
-       unsigned long value;
-
-       /*
-        * Get version of PCI405 board from GPIO's
-        */
-
-       /*
-        * Setup GPIO pins (CS2/GPIO11 and CS3/GPIO12 as GPIO)
-        */
-       CPC0_CR0Reg = mfdcr(CPC0_CR0);
-       mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x03000000);
-       out_be32((void*)GPIO0_ODR, in_be32((void*)GPIO0_ODR) & ~0x00100200);
-       out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) & ~0x00100200);
-       udelay(1000);                   /* wait some time before reading input */
-       value = in_be32((void*)GPIO0_IR) & 0x00100200;       /* get config bits */
-
-       /*
-        * Restore GPIO settings
-        */
-       mtdcr(CPC0_CR0, CPC0_CR0Reg);
-
-       switch (value) {
-       case 0x00100200:
-               /* CS2==1 && IRQ5==1 -> version 1.0 and 1.1 */
-               return 1;
-       case 0x00000200:
-               /* CS2==0 && IRQ5==1 -> version 1.2 */
-               return 2;
-       case 0x00000000:
-               /* CS2==0 && IRQ5==0 -> version 1.3 */
-               return 3;
-#if 0 /* not yet manufactured ! */
-       case 0x00100000:
-               /* CS2==1 && IRQ5==0 -> version 1.4 */
-               return 4;
-#endif
-       default:
-               /* should not be reached! */
-               return 0;
-       }
-}
-
-
-unsigned long fpga_done_state(void)
-{
-       if (gd->board_type < 2) {
-               return FPGA_DONE_STATE_V11;
-       } else {
-               return FPGA_DONE_STATE_V12;
-       }
-}
-
-
-unsigned long fpga_init_state(void)
-{
-       if (gd->board_type < 2) {
-               return FPGA_INIT_STATE_V11;
-       } else {
-               return FPGA_INIT_STATE_V12;
-       }
-}
-
-
-int board_early_init_f (void)
-{
-       unsigned long CPC0_CR0Reg;
-
-       /*
-        * First pull fpga-prg pin low, to disable fpga logic (on version 1.2 board)
-        */
-       out_be32((void*)GPIO0_ODR, 0x00000000);        /* no open drain pins      */
-       out_be32((void*)GPIO0_TCR, CONFIG_SYS_FPGA_PRG);      /* setup for output        */
-       out_be32((void*)GPIO0_OR,  CONFIG_SYS_FPGA_PRG);      /* set output pins to high */
-       out_be32((void*)GPIO0_OR, 0);                  /* pull prg low            */
-
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) CAN2; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) CAN3; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) unused; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) FPGA Timestamp; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) PCI Reset; active low; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);        /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);        /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);        /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF80);        /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);        /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);       /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);        /* clear all ints */
-
-       /*
-        * Setup GPIO pins (IRQ4/GPIO21 as GPIO)
-        */
-       CPC0_CR0Reg = mfdcr(CPC0_CR0);
-       mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x00008000);
-
-       /*
-        * Setup GPIO pins (CS6+CS7 as GPIO)
-        */
-       mtdcr(CPC0_CR0, CPC0_CR0Reg | 0x00300000);
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 25 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       unsigned char *dst;
-       ulong len = sizeof(fpgadata);
-       int status;
-       int index;
-       int i;
-       unsigned int *ptr;
-       unsigned int *magic;
-
-       /*
-        * On PCI-405 the environment is saved in eeprom!
-        * FPGA can be gzip compressed (malloc) and booted this late.
-        */
-
-       dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
-       if (gunzip (dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
-               printf ("GUNZIP ERROR - must RESET board to recover\n");
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       status = fpga_boot(dst, len);
-       if (status != 0) {
-               printf("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i=0; i<4; i++) {
-                       len = dst[index];
-                       printf("FPGA: %s\n", &(dst[index+1]));
-                       index += len+3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i=20; i>0; i--) {
-                       printf("Rebooting in %2d seconds \r",i);
-                       for (index=0;index<1000;index++)
-                               udelay(1000);
-               }
-               putc ('\n');
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       puts("FPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i=0; i<4; i++) {
-               len = dst[index];
-               printf("%s ", &(dst[index+1]));
-               index += len+3;
-       }
-       putc ('\n');
-
-       /*
-        * Reset FPGA via FPGA_DATA pin
-        */
-       SET_FPGA(FPGA_PRG | FPGA_CLK);
-       udelay(1000); /* wait 1ms */
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Check if magic for pci reconfig is written
-        */
-       magic = (unsigned int *)0x00000004;
-       if (*magic == PCI_RECONFIG_MAGIC) {
-               /*
-                * Rewrite pci config regs (only after soft-reset with magic set)
-                */
-               ptr = (unsigned int *)PCI_REGS_ADDR;
-               if (crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4) == *ptr) {
-                       puts("Restoring PCI Configurations Regs!\n");
-                       ptr = (unsigned int *)PCI_REGS_ADDR + 1;
-                       for (i=0; i<0x40; i+=4) {
-                               pci_write_config_dword(PCIDEVID_405GP, i, *ptr++);
-                       }
-               }
-               mtdcr(UIC0SR, 0xFFFFFFFF);        /* clear all ints */
-
-               *magic = 0;      /* clear pci reconfig magic again */
-       }
-
-       /*
-        * Decrease PLB latency timeout and reduce priority of the PCI bridge master
-        */
-#define PCI0_BRDGOPT1 0x4a
-       pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, 0x3f20);
-
-       /*
-        * Enable fairness and high bus utilization
-        */
-       mtdcr(PLB0_ACR, 0x98000000);
-
-       free(dst);
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming PCI405");
-       } else {
-               puts (str);
-       }
-
-       gd->board_type = board_revision();
-       printf(" (Rev 1.%ld", gd->board_type);
-
-       if (gd->board_type >= 2) {
-               unsigned long CPC0_CR0Reg;
-               unsigned long value;
-
-               /*
-                * Setup GPIO pins (Trace/GPIO1 to GPIO)
-                */
-               CPC0_CR0Reg = mfdcr(CPC0_CR0);
-               mtdcr(CPC0_CR0, CPC0_CR0Reg & ~0x08000000);
-               out_be32((void*)GPIO0_ODR, in_be32((void*)GPIO0_ODR) & ~0x40000000);
-               out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) & ~0x40000000);
-               udelay(1000);                   /* wait some time before reading input */
-               value = in_be32((void*)GPIO0_IR) & 0x40000000;       /* get config bits */
-               if (value) {
-                       puts(", 33 MHz PCI");
-               } else {
-                       puts(", 66 MHz PCI");
-               }
-       }
-
-       puts(")\n");
-
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-#define UART1_MCR 0xef600404
-int wpeeprom(int wp)
-{
-       int wp_state = wp;
-
-       if (wp == 1) {
-               out_8((void *)UART1_MCR, in_8((void *)UART1_MCR) & ~0x02);
-       } else if (wp == 0) {
-               out_8((void *)UART1_MCR, in_8((void *)UART1_MCR) | 0x02);
-       } else {
-               if (in_8((void *)UART1_MCR) & 0x02) {
-                       wp_state = 0;
-               } else {
-                       wp_state = 1;
-               }
-       }
-       return wp_state;
-}
-
-int do_wpeeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int wp = -1;
-       if (argc >= 2) {
-               if (argv[1][0] == '1') {
-                       wp = 1;
-               } else if (argv[1][0] == '0') {
-                       wp = 0;
-               }
-       }
-
-       wp = wpeeprom(wp);
-       printf("EEPROM write protection %s\n", wp ? "ENABLED" : "DISABLED");
-       return 0;
-}
-
-U_BOOT_CMD(
-       wpeeprom,       2,      1,      do_wpeeprom,
-       "Check/Enable/Disable I2C EEPROM write protection",
-       "wpeeprom\n"
-       "    - check I2C EEPROM write protection state\n"
-       "wpeeprom 1\n"
-       "    - enable I2C EEPROM write protection\n"
-       "wpeeprom 0\n"
-       "    - disable I2C EEPROM write protection"
-);
diff --git a/board/esd/pci405/pci405.h b/board/esd/pci405/pci405.h
deleted file mode 100644 (file)
index a62c9c2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _PCI405_H_
-#define _PCI405_H_
-
-#define PCI_REGS_LEN    0x100
-#define PCI_REGS_ADDR   ((unsigned long)0x01000000 - PCI_REGS_LEN)
-
-#define PCI_RECONFIG_MAGIC  0x07081967
-
-#endif /* _PCI405_H_ */
diff --git a/board/esd/pci405/writeibm.S b/board/esd/pci405/writeibm.S
deleted file mode 100644 (file)
index 03eaf97..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * SPDX-License-Identifier:    GPL-2.0 IBM-pibs
- */
-/*----------------------------------------------------------------------------- */
-/* Function:     ext_bus_cntlr_init */
-/* Description:  Initializes the External Bus Controller for the external */
-/*             peripherals. IMPORTANT: For pass1 this code must run from */
-/*             cache since you can not reliably change a peripheral banks */
-/*             timing register (pbxap) while running code from that bank. */
-/*             For ex., since we are running from ROM on bank 0, we can NOT */
-/*             execute the code that modifies bank 0 timings from ROM, so */
-/*             we run it from cache. */
-/*     Bank 0 - Flash and SRAM */
-/*     Bank 1 - NVRAM/RTC */
-/*     Bank 2 - Keyboard/Mouse controller */
-/*     Bank 3 - IR controller */
-/*     Bank 4 - not used */
-/*     Bank 5 - not used */
-/*     Bank 6 - not used */
-/*     Bank 7 - FPGA registers */
-/*----------------------------------------------------------------------------- */
-#include <asm/ppc4xx.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-
-       .globl  write_without_sync
-write_without_sync:
-               /*
-                * Write one values to host via pci busmastering
-                * ptr = 0xc0000000 -> 0x01000000 (PCI)
-                * *ptr = 0x01234567;
-                */
-       addi    r31,0,0
-       lis     r31,0xc000
-
-start1:
-       lis     r0,0x0123
-       ori     r0,r0,0x4567
-       stw     r0,0(r31)
-
-               /*
-                * Read one value back
-                * ptr = (volatile unsigned long *)addr;
-                * val = *ptr;
-                */
-
-       lwz     r0,0(r31)
-
-               /*
-                * One pci config write
-                * ibmPciConfigWrite(0x2e, 2, 0x1234);
-                */
-               /* subsystem id */
-
-       li      r4,0x002C
-       oris    r4,r4,0x8000
-       lis     r3,0xEEC0
-       stwbrx  r4,0,r3
-
-       li      r5,0x1234
-       ori     r3,r3,0x4
-       stwbrx  r5,0,r3
-
-       b       start1
-
-       blr     /* never reached !!!! */
-
-       .globl  write_with_sync
-write_with_sync:
-               /*
-                * Write one values to host via pci busmastering
-                * ptr = 0xc0000000 -> 0x01000000 (PCI)
-                * *ptr = 0x01234567;
-                */
-       addi    r31,0,0
-       lis     r31,0xc000
-
-start2:
-       lis     r0,0x0123
-       ori     r0,r0,0x4567
-       stw     r0,0(r31)
-
-               /*
-                * Read one value back
-                * ptr = (volatile unsigned long *)addr;
-                * val = *ptr;
-                */
-
-       lwz     r0,0(r31)
-
-               /*
-                * One pci config write
-                * ibmPciConfigWrite(0x2e, 2, 0x1234);
-                */
-               /* subsystem id */
-
-       li      r4,0x002C
-       oris    r4,r4,0x8000
-       lis     r3,0xEEC0
-       stwbrx  r4,0,r3
-       sync
-
-       li      r5,0x1234
-       ori     r3,r3,0x4
-       stwbrx  r5,0,r3
-       sync
-
-       b       start2
-
-       blr     /* never reached !!!! */
-
-       .globl  write_with_less_sync
-write_with_less_sync:
-               /*
-                * Write one values to host via pci busmastering
-                * ptr = 0xc0000000 -> 0x01000000 (PCI)
-                * *ptr = 0x01234567;
-                */
-       addi    r31,0,0
-       lis     r31,0xc000
-
-start2b:
-       lis     r0,0x0123
-       ori     r0,r0,0x4567
-       stw     r0,0(r31)
-
-               /*
-                * Read one value back
-                * ptr = (volatile unsigned long *)addr;
-                * val = *ptr;
-                */
-
-       lwz     r0,0(r31)
-
-               /*
-                * One pci config write
-                * ibmPciConfigWrite(0x2e, 2, 0x1234);
-                */
-               /* subsystem id */
-
-       li      r4,0x002C
-       oris    r4,r4,0x8000
-       lis     r3,0xEEC0
-       stwbrx  r4,0,r3
-       sync
-
-       li      r5,0x1234
-       ori     r3,r3,0x4
-       stwbrx  r5,0,r3
-/*        sync */
-
-       b       start2b
-
-       blr     /* never reached !!!! */
-
-       .globl  write_with_more_sync
-write_with_more_sync:
-               /*
-                * Write one values to host via pci busmastering
-                * ptr = 0xc0000000 -> 0x01000000 (PCI)
-                * *ptr = 0x01234567;
-                */
-       addi    r31,0,0
-       lis     r31,0xc000
-
-start3:
-       lis     r0,0x0123
-       ori     r0,r0,0x4567
-       stw     r0,0(r31)
-       sync
-
-               /*
-                * Read one value back
-                * ptr = (volatile unsigned long *)addr;
-                * val = *ptr;
-                */
-
-       lwz     r0,0(r31)
-       sync
-
-               /*
-                * One pci config write
-                * ibmPciConfigWrite(0x2e, 2, 0x1234);
-                */
-               /* subsystem id (PCIC0_SBSYSVID)*/
-
-       li      r4,0x002C
-       oris    r4,r4,0x8000
-       lis     r3,0xEEC0
-       stwbrx  r4,0,r3
-       sync
-
-       li      r5,0x1234
-       ori     r3,r3,0x4
-       stwbrx  r5,0,r3
-       sync
-
-       b       start3
-
-       blr     /* never reached !!!! */
diff --git a/board/esd/pmc405/Kconfig b/board/esd/pmc405/Kconfig
deleted file mode 100644 (file)
index 3738c68..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_PMC405
-
-config SYS_BOARD
-       default "pmc405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "PMC405"
-
-endif
diff --git a/board/esd/pmc405/MAINTAINERS b/board/esd/pmc405/MAINTAINERS
deleted file mode 100644 (file)
index 148a596..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PMC405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/pmc405/
-F:     include/configs/PMC405.h
-F:     configs/PMC405_defconfig
diff --git a/board/esd/pmc405/Makefile b/board/esd/pmc405/Makefile
deleted file mode 100644 (file)
index ad98207..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-# Objects for Xilinx JTAG programming (CPLD)
-CPLD    = ../common/xilinx_jtag/lenval.o \
-         ../common/xilinx_jtag/micro.o \
-         ../common/xilinx_jtag/ports.o
-
-obj-y  = pmc405.o ../common/misc.o ../common/cmd_loadpci.o $(CPLD)
diff --git a/board/esd/pmc405/pmc405.c b/board/esd/pmc405/pmc405.c
deleted file mode 100644 (file)
index e67ff30..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2005-2009
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000); /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF81); /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001); /* set vect base=0, INT0 highest priority */
-       mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
-
-       /*
-        * EBC Configuration Register:
-        * set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000);
-
-       /*
-        * Setup GPIO pins
-        */
-       mtdcr(CPC0_CR0, mfdcr(CPC0_CR0) | ((CONFIG_SYS_FPGA_INIT |
-                                       CONFIG_SYS_FPGA_DONE |
-                                       CONFIG_SYS_XEREADY |
-                                       CONFIG_SYS_NONMONARCH |
-                                       CONFIG_SYS_REV1_2) << 5));
-
-       if (!(in_be32((void *)GPIO0_IR) & CONFIG_SYS_REV1_2)) {
-               /* rev 1.2 boards */
-               mtdcr(CPC0_CR0, mfdcr(CPC0_CR0) | ((CONFIG_SYS_INTA_FAKE |
-                                               CONFIG_SYS_SELF_RST) << 5));
-       }
-
-       out_be32((void *)GPIO0_OR, CONFIG_SYS_VPEN);
-       /* setup for output */
-       out_be32((void *)GPIO0_TCR, CONFIG_SYS_FPGA_PRG | CONFIG_SYS_FPGA_CLK |
-                CONFIG_SYS_FPGA_DATA | CONFIG_SYS_XEREADY | CONFIG_SYS_VPEN);
-
-       /*
-        * - check if rev1_2 is low, then:
-        * - set/reset CONFIG_SYS_INTA_FAKE/CONFIG_SYS_SELF_RST
-        *   in TCR to assert INTA# or SELFRST#
-        */
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       /* adjust flash start and offset */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       /* deassert EREADY# */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) | CONFIG_SYS_XEREADY);
-       return (0);
-}
-
-ushort pmc405_pci_subsys_deviceid(void)
-{
-       ulong val;
-
-       val = in_be32((void *)GPIO0_IR);
-       if (!(val & CONFIG_SYS_REV1_2)) { /* low=rev1.2 */
-               /* check monarch# signal */
-               if (val & CONFIG_SYS_NONMONARCH)
-                       return CONFIG_SYS_PCI_SUBSYS_DEVICEID_NONMONARCH;
-               return CONFIG_SYS_PCI_SUBSYS_DEVICEID_MONARCH;
-       }
-       return CONFIG_SYS_PCI_SUBSYS_DEVICEID_NONMONARCH;
-}
-
-/*
- * Check Board Identity
- */
-int checkboard (void)
-{
-       ulong val;
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1)
-               puts ("### No HW ID - assuming PMC405");
-       else
-               puts(str);
-
-       val = in_be32((void *)GPIO0_IR);
-       if (!(val & CONFIG_SYS_REV1_2)) { /* low=rev1.2 */
-               puts(" rev1.2 (");
-               if (val & CONFIG_SYS_NONMONARCH) /* monarch# signal */
-                       puts("non-");
-               puts("monarch)");
-       } else
-               puts(" <=rev1.1");
-
-       putc ('\n');
-
-       return 0;
-}
-
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-#endif
-}
index 4409ea6524feb0d708af89d540bdd0cec0644069..3e1713247d34c13cb052be830ae5706b529070b9 100644 (file)
@@ -300,7 +300,7 @@ int pci_pre_init(struct pci_controller *hose)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int rc;
 
@@ -318,6 +318,8 @@ void ft_board_setup(void *blob, bd_t *bd)
                               fdt_strerror(rc));
                }
        }
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
index 062ae67276157e3287a0fdec2bde0fd235281e34..15c3151b8421587947d447504323be366e72efce 100644 (file)
@@ -882,7 +882,7 @@ int board_usb_cleanup(int index, enum usb_init_type init)
 #endif /* defined(CONFIG_USB_OHCI) && defined(CONFIG_SYS_USB_OHCI_BOARD_INIT) */
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int rc;
 
@@ -899,5 +899,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                        printf("err=%s\n", fdt_strerror(rc));
                }
        }
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/esd/tasreg/Kconfig b/board/esd/tasreg/Kconfig
deleted file mode 100644 (file)
index 85417d4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_TASREG
-
-config SYS_CPU
-       default "mcf52x2"
-
-config SYS_BOARD
-       default "tasreg"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "TASREG"
-
-endif
diff --git a/board/esd/tasreg/MAINTAINERS b/board/esd/tasreg/MAINTAINERS
deleted file mode 100644 (file)
index 10bc7a4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-TASREG BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/tasreg/
-F:     include/configs/TASREG.h
-F:     configs/TASREG_defconfig
diff --git a/board/esd/tasreg/Makefile b/board/esd/tasreg/Makefile
deleted file mode 100644 (file)
index 46f2550..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = tasreg.o flash.o
diff --git a/board/esd/tasreg/config.mk b/board/esd/tasreg/config.mk
deleted file mode 100644 (file)
index 40f7570..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-CONFIG_SYS_TEXT_BASE = 0xffc00000
diff --git a/board/esd/tasreg/flash.c b/board/esd/tasreg/flash.c
deleted file mode 100644 (file)
index 7138881..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-/*#include <asm/ppc4xx.h>*/
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* test-only: todo: Re-do sizing to get full correct info */
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           CONFIG_SYS_FLASH_BASE,
-                           CONFIG_SYS_FLASH_BASE+CONFIG_SYS_MONITOR_LEN-1,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/tasreg/fpgadata.c b/board/esd/tasreg/fpgadata.c
deleted file mode 100644 (file)
index 427b1d0..0000000
+++ /dev/null
@@ -1,10661 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x5a, 0x90, 0xc1, 0x41,
-0x00, 0x03, 0x72, 0x61, 0x73, 0x72, 0x65, 0x67,
-0x2e, 0x62, 0x69, 0x74, 0x00, 0xac, 0xfd, 0x7d,
-0x78, 0x14, 0xd7, 0x95, 0x2e, 0x8a, 0xaf, 0xde,
-0xd5, 0x88, 0x52, 0x57, 0x4b, 0x5d, 0x96, 0x48,
-0x0e, 0xb1, 0x19, 0x5c, 0x6a, 0x09, 0xd2, 0xe0,
-0x96, 0xd4, 0x6e, 0xb0, 0x90, 0x65, 0xd1, 0x2a,
-0x04, 0x33, 0xa3, 0x00, 0x13, 0x34, 0x9e, 0xdc,
-0xf3, 0x78, 0xe6, 0xe4, 0xe6, 0xd7, 0xf6, 0x90,
-0x0c, 0x93, 0x43, 0x3c, 0xc4, 0xf1, 0x9d, 0x4b,
-0x1c, 0x1f, 0x67, 0xab, 0x5b, 0x36, 0x02, 0x61,
-0xd3, 0x60, 0x32, 0xc1, 0x89, 0x27, 0xd3, 0x7c,
-0x24, 0x66, 0x6c, 0x92, 0x69, 0x24, 0x6c, 0xc4,
-0x47, 0xec, 0x92, 0xac, 0x38, 0xe2, 0xc3, 0xa0,
-0x38, 0x3e, 0x09, 0xb6, 0x19, 0xa7, 0xf1, 0xc8,
-0x8e, 0x6c, 0xcb, 0xb6, 0xf8, 0x48, 0x2c, 0x21,
-0x01, 0x77, 0xad, 0xbd, 0xab, 0xba, 0xab, 0x05,
-0x73, 0x7e, 0x7f, 0x9c, 0xe3, 0x3c, 0x8f, 0xb3,
-0xbc, 0xab, 0xba, 0xd4, 0xbd, 0x77, 0xed, 0xbd,
-0xd7, 0xbb, 0xdf, 0xb5, 0xde, 0x05, 0xc5, 0x81,
-0x51, 0xf9, 0x3f, 0x00, 0xcf, 0xbd, 0xa0, 0x3d,
-0x70, 0xef, 0xb7, 0x1e, 0xf8, 0xea, 0xdf, 0xd5,
-0xdc, 0xff, 0xb7, 0xab, 0xe1, 0x3e, 0xd0, 0xa2,
-0xdf, 0x8a, 0x46, 0x22, 0x5f, 0xfb, 0xbb, 0x85,
-0x77, 0xd4, 0xc1, 0xdf, 0xe2, 0x7f, 0x45, 0x22,
-0x0b, 0x6b, 0x6f, 0x8f, 0xd6, 0xde, 0x5e, 0x07,
-0xab, 0xa1, 0xf8, 0xf6, 0x85, 0x0d, 0x0b, 0x23,
-0x0d, 0x0b, 0xa3, 0xf0, 0x55, 0x60, 0x9b, 0x97,
-0x5d, 0xc3, 0x7f, 0x9e, 0x7d, 0xea, 0xff, 0xfa,
-0x5a, 0x04, 0xb8, 0x07, 0x00, 0xa6, 0x47, 0x3c,
-0x71, 0xfa, 0xff, 0x9b, 0x22, 0x1e, 0xc3, 0x03,
-0xbc, 0xa9, 0x3a, 0x02, 0x16, 0xfd, 0x37, 0xd8,
-0xd7, 0x8b, 0x23, 0x60, 0xb8, 0xff, 0xdb, 0x13,
-0x01, 0x13, 0x5a, 0xe1, 0xa9, 0x57, 0xa0, 0xcc,
-0x80, 0xff, 0x9d, 0x7f, 0x3c, 0xe0, 0xe5, 0xc2,
-0xf8, 0x3f, 0xf5, 0x1c, 0xf6, 0xbf, 0xf5, 0x18,
-0xfa, 0x27, 0xf5, 0x7f, 0xe8, 0x39, 0xfc, 0xff,
-0xe8, 0x73, 0xca, 0xff, 0xb7, 0x9f, 0x63, 0x89,
-0x7f, 0x97, 0xfd, 0xef, 0x3e, 0xc6, 0xcb, 0xe9,
-0xdf, 0xd7, 0xca, 0xc0, 0x07, 0xf7, 0x71, 0x3d,
-0x5d, 0x14, 0xf2, 0xfc, 0x00, 0xbe, 0xc6, 0x3f,
-0x97, 0x2e, 0x5a, 0x63, 0x1b, 0xde, 0x35, 0xee,
-0x96, 0x22, 0xfe, 0xb9, 0xac, 0x77, 0x0d, 0xcc,
-0x86, 0x3f, 0xe7, 0x9e, 0x34, 0xac, 0x97, 0x46,
-0xd6, 0xbb, 0xbe, 0xa9, 0x5f, 0x3c, 0xc7, 0x9a,
-0x76, 0x15, 0x2e, 0xf3, 0x5a, 0xcb, 0xcf, 0x15,
-0x03, 0x26, 0x21, 0x06, 0x81, 0xbe, 0x64, 0x26,
-0x35, 0x64, 0xdc, 0xa5, 0x96, 0x0e, 0x2a, 0x55,
-0xcb, 0x5e, 0x6f, 0x6f, 0xca, 0x06, 0x2e, 0x24,
-0x47, 0xf9, 0x30, 0xc4, 0xfa, 0xfc, 0xa3, 0x4a,
-0x38, 0x7d, 0xda, 0x88, 0x0e, 0xa0, 0xd1, 0x08,
-0xbd, 0x6a, 0xd4, 0xf2, 0x72, 0x25, 0x02, 0xeb,
-0xe8, 0x39, 0x5c, 0xff, 0x18, 0x0e, 0x43, 0x8d,
-0x05, 0x19, 0x08, 0xf3, 0xbb, 0x78, 0xcd, 0xb9,
-0xce, 0xa3, 0xbe, 0x9f, 0x99, 0xcf, 0x59, 0xf3,
-0x47, 0x97, 0xef, 0x63, 0xe1, 0xc1, 0x4e, 0xa8,
-0xc9, 0x6a, 0x93, 0xec, 0x63, 0xe8, 0xe4, 0x35,
-0xd0, 0xd2, 0xce, 0x0c, 0xe8, 0x80, 0x20, 0xa8,
-0xdc, 0x67, 0x98, 0x9b, 0xcc, 0x79, 0x83, 0x6a,
-0x07, 0x33, 0xbc, 0x11, 0x7a, 0x4e, 0xc7, 0xb4,
-0x93, 0xd0, 0x05, 0x61, 0x53, 0x8d, 0x30, 0x30,
-0xba, 0xf1, 0x59, 0x1a, 0x30, 0x0e, 0x69, 0x33,
-0xa4, 0xfb, 0xb6, 0x32, 0x3f, 0x7f, 0x12, 0xc2,
-0xd6, 0x8a, 0x08, 0x3b, 0x69, 0xee, 0xd6, 0xc3,
-0xd0, 0xe1, 0xc5, 0xc1, 0xe5, 0x66, 0xc8, 0x3b,
-0xdf, 0x43, 0x06, 0x18, 0xfd, 0xaa, 0xde, 0x1c,
-0xf4, 0x88, 0xef, 0x63, 0x7d, 0x66, 0x1f, 0x7d,
-0x9f, 0xde, 0x0e, 0x68, 0x0e, 0xeb, 0x3d, 0x50,
-0x63, 0x6a, 0x99, 0xe0, 0x3e, 0x78, 0x0e, 0xe6,
-0x5b, 0x2c, 0xad, 0x86, 0x41, 0x83, 0x52, 0x4b,
-0xcb, 0xb0, 0x8f, 0xa0, 0x73, 0x59, 0x0d, 0x84,
-0xf0, 0xe3, 0xad, 0x1c, 0x9e, 0x85, 0xe5, 0xf4,
-0xb6, 0x74, 0xc0, 0xb3, 0xd6, 0xde, 0x1d, 0x2c,
-0xe2, 0x8d, 0x8b, 0xee, 0xfe, 0xcc, 0x08, 0x5c,
-0x6e, 0x89, 0x59, 0xf8, 0x45, 0x42, 0xc6, 0x18,
-0xc4, 0x58, 0x80, 0x2b, 0x69, 0x18, 0x86, 0x06,
-0xf8, 0xa2, 0xbe, 0xb4, 0xc6, 0x7c, 0x0b, 0x2f,
-0x05, 0x32, 0xca, 0x30, 0x7c, 0x00, 0x31, 0x33,
-0xdc, 0xa3, 0xd5, 0xb0, 0x01, 0xfa, 0xb3, 0x19,
-0xa5, 0xb6, 0xef, 0x98, 0x11, 0xb5, 0xfc, 0x9b,
-0x14, 0xf0, 0x8a, 0xef, 0x93, 0xf5, 0x1c, 0x55,
-0xaf, 0x06, 0x9b, 0x86, 0xf0, 0xe6, 0x4b, 0x70,
-0x0d, 0x9a, 0xac, 0xc0, 0x3a, 0x65, 0x12, 0x8d,
-0xc5, 0x56, 0x20, 0xab, 0x9c, 0x85, 0x6b, 0x56,
-0x93, 0x75, 0xeb, 0xa8, 0x32, 0x04, 0x57, 0xa0,
-0x89, 0x07, 0x06, 0x94, 0x0b, 0x78, 0xa9, 0xce,
-0x2a, 0xe9, 0x53, 0x2e, 0x78, 0xaf, 0xd2, 0xcd,
-0x90, 0x1c, 0x03, 0xf1, 0x7d, 0x4c, 0x7d, 0x1f,
-0x5c, 0x4e, 0xff, 0xa3, 0x19, 0xe8, 0x2a, 0x0f,
-0x15, 0x9f, 0x80, 0x18, 0xc7, 0xef, 0x03, 0xfa,
-0x20, 0xd4, 0x41, 0x49, 0x4a, 0x09, 0xc3, 0x5b,
-0xd0, 0x45, 0xdf, 0x67, 0x99, 0xe7, 0x18, 0x5e,
-0xf2, 0xf3, 0xce, 0xb4, 0x72, 0x02, 0x70, 0xbc,
-0x78, 0x79, 0x05, 0xb3, 0xf4, 0xe8, 0x40, 0x4d,
-0x87, 0xa2, 0x7b, 0x0d, 0x7a, 0xce, 0xc0, 0xb4,
-0xb0, 0x7a, 0xc4, 0xc2, 0x41, 0xe1, 0x89, 0x2a,
-0xfc, 0xc9, 0xd4, 0x3f, 0xca, 0x5a, 0xe8, 0x84,
-0xa0, 0x55, 0x92, 0x66, 0x61, 0x2f, 0x19, 0xda,
-0xa8, 0xaf, 0x0a, 0x36, 0xb2, 0x9a, 0x94, 0xca,
-0xa7, 0xc7, 0xef, 0xeb, 0x4c, 0xed, 0x3a, 0x53,
-0xb2, 0x91, 0x55, 0x40, 0x47, 0xeb, 0xa2, 0xd7,
-0x4a, 0xb6, 0xfb, 0xa2, 0xb8, 0x00, 0xd1, 0xef,
-0x9a, 0xb6, 0x12, 0xc7, 0xab, 0x26, 0xdd, 0xe9,
-0x65, 0x5e, 0xe0, 0x2c, 0x6c, 0xe2, 0x78, 0x99,
-0xde, 0x14, 0xab, 0x02, 0x4d, 0x67, 0x27, 0xa1,
-0x1b, 0xd6, 0x58, 0x5a, 0xa4, 0xc8, 0x0b, 0x6d,
-0x50, 0x93, 0x50, 0xa9, 0x7b, 0x93, 0xd6, 0x5c,
-0x4b, 0x85, 0xe5, 0xcd, 0x09, 0xce, 0x83, 0xe7,
-0x7c, 0xde, 0xe6, 0x7a, 0x5c, 0xc6, 0xf0, 0x9f,
-0xb8, 0x67, 0xb6, 0xfa, 0x42, 0xa2, 0x3a, 0xad,
-0xad, 0x63, 0x37, 0xf3, 0x0d, 0xbc, 0x7a, 0xaf,
-0x76, 0xe7, 0xcd, 0x8f, 0xc0, 0x16, 0x6e, 0x64,
-0xb5, 0x61, 0xf6, 0xb6, 0xe7, 0xdf, 0xf8, 0xbc,
-0xac, 0x56, 0xcf, 0xfe, 0x06, 0x1e, 0x4b, 0x57,
-0x7f, 0x6d, 0xe6, 0x7a, 0x36, 0xdb, 0x6a, 0xf7,
-0xff, 0xd8, 0x28, 0x5e, 0x5f, 0xf4, 0x45, 0x63,
-0x0b, 0x9f, 0x33, 0x34, 0x6f, 0x39, 0x9b, 0x29,
-0xbf, 0x4f, 0x8b, 0xea, 0x87, 0x0b, 0x89, 0xf0,
-0x6f, 0x02, 0x77, 0x2a, 0x73, 0x21, 0x09, 0x8d,
-0xc3, 0x01, 0x50, 0x4c, 0x18, 0x84, 0x85, 0x10,
-0xd0, 0x95, 0x8f, 0xe1, 0x22, 0x84, 0xac, 0xc0,
-0xed, 0x8a, 0x0a, 0x09, 0x1e, 0x7b, 0x30, 0x7c,
-0x20, 0x51, 0xdb, 0xd7, 0xa1, 0x1f, 0x30, 0xfc,
-0x07, 0x92, 0x2b, 0xa1, 0xb7, 0x2d, 0x32, 0x5c,
-0x73, 0xcb, 0xd2, 0x32, 0xb9, 0x60, 0x98, 0x7f,
-0x72, 0x14, 0x2e, 0xeb, 0xd8, 0xf3, 0x2f, 0x2b,
-0x63, 0xe6, 0x51, 0x88, 0x79, 0x03, 0xa3, 0xda,
-0x59, 0x98, 0x80, 0x98, 0x55, 0xb2, 0x46, 0x6b,
-0x84, 0xdf, 0xc1, 0x22, 0xec, 0xe7, 0xf2, 0x1e,
-0x76, 0x15, 0xc7, 0x3d, 0x70, 0x5e, 0x7b, 0xd8,
-0x9c, 0x84, 0xbb, 0x60, 0x7a, 0x46, 0xd9, 0x07,
-0xe3, 0xbc, 0x69, 0xb0, 0x36, 0xa5, 0x0c, 0x16,
-0x89, 0xf1, 0xda, 0x3b, 0x6d, 0x44, 0x7c, 0x6a,
-0x3a, 0xc7, 0xd1, 0x39, 0xc3, 0xa3, 0x71, 0x3f,
-0x28, 0x69, 0x75, 0x0c, 0x7a, 0x8c, 0x40, 0x4a,
-0x0b, 0x8b, 0x4b, 0x81, 0x17, 0x14, 0xbc, 0xc7,
-0x13, 0xf3, 0xd0, 0x1c, 0x64, 0x67, 0x20, 0xea,
-0x09, 0xd3, 0x64, 0x1c, 0x80, 0x58, 0xbf, 0x9f,
-0x57, 0x7e, 0x20, 0xe7, 0x57, 0xcb, 0x4d, 0x4f,
-0xc3, 0x41, 0x6f, 0xb5, 0xa5, 0x44, 0x7c, 0x50,
-0x96, 0x84, 0x34, 0x0f, 0xad, 0x63, 0xb3, 0x60,
-0x37, 0x54, 0x58, 0x25, 0x06, 0x1a, 0x07, 0xa1,
-0xda, 0xd2, 0xfe, 0x31, 0x31, 0x08, 0x07, 0xd0,
-0x08, 0x8d, 0xb2, 0x59, 0xfa, 0x06, 0xbc, 0xa4,
-0xae, 0x63, 0x4f, 0xc3, 0x06, 0xa8, 0x1d, 0x68,
-0x89, 0xb3, 0xd7, 0xe4, 0xfb, 0x6c, 0xc1, 0x8f,
-0xe0, 0xf9, 0x8e, 0xea, 0xac, 0x86, 0x7d, 0x08,
-0x1b, 0x78, 0x45, 0xb6, 0x78, 0x80, 0xf5, 0xc1,
-0x1e, 0x7e, 0x9b, 0xe1, 0xbb, 0xc7, 0xf8, 0x0a,
-0x1c, 0xb4, 0xc4, 0xa5, 0x6d, 0x91, 0x03, 0x78,
-0x4f, 0xf1, 0xfa, 0xb2, 0xd9, 0x7a, 0x12, 0xef,
-0x51, 0xeb, 0xd9, 0x57, 0xe0, 0x51, 0x5e, 0x9d,
-0x55, 0xef, 0x61, 0xa3, 0x20, 0xde, 0x9f, 0x96,
-0x19, 0x27, 0x8b, 0xf7, 0x2f, 0x5f, 0x6b, 0x69,
-0x20, 0xa7, 0x1e, 0xee, 0x50, 0x6c, 0x25, 0x7e,
-0x1f, 0xc3, 0x2a, 0x36, 0xd8, 0x17, 0xa1, 0x9b,
-0x87, 0x71, 0xdc, 0xd9, 0x6b, 0x70, 0x80, 0xcf,
-0x79, 0xb7, 0x98, 0xbe, 0xea, 0x86, 0xc1, 0x8a,
-0xd7, 0xf1, 0xfb, 0x9c, 0x65, 0x8f, 0xe2, 0x14,
-0x0e, 0x2d, 0x4c, 0xbc, 0x26, 0xe7, 0xfb, 0xf0,
-0x67, 0xf6, 0xc2, 0x1f, 0xcd, 0xa6, 0x54, 0x20,
-0xad, 0xcc, 0x87, 0xe3, 0x10, 0xe5, 0x25, 0x69,
-0x31, 0x9b, 0x1a, 0x78, 0x69, 0x5a, 0xf9, 0x3a,
-0x5c, 0x35, 0xf1, 0x0d, 0x4f, 0x2b, 0x7b, 0xe1,
-0x32, 0xbe, 0xcf, 0x25, 0x69, 0x2d, 0xc4, 0xf0,
-0x9e, 0xb4, 0x3f, 0xad, 0xac, 0xc1, 0x9b, 0xf1,
-0x0d, 0x1f, 0x52, 0x2e, 0xcb, 0xdf, 0xd5, 0x02,
-0x59, 0x10, 0xd3, 0xd3, 0x9a, 0x3e, 0x6a, 0x8e,
-0x40, 0x13, 0xce, 0x6f, 0x25, 0x05, 0xc2, 0x30,
-0x95, 0xb4, 0x39, 0xa6, 0xe2, 0xca, 0xc6, 0x95,
-0x51, 0x5c, 0xe2, 0x9a, 0x74, 0xbc, 0x34, 0x0a,
-0x43, 0x66, 0x93, 0x1e, 0x30, 0x95, 0x8c, 0x58,
-0xf4, 0x6a, 0xdb, 0xcb, 0x5f, 0x03, 0xf1, 0x7d,
-0x54, 0x7d, 0x08, 0xc6, 0xf5, 0x88, 0xe9, 0xd7,
-0xb5, 0x2a, 0xf5, 0x0d, 0x78, 0xc4, 0xc4, 0xd7,
-0xa6, 0x0a, 0x7e, 0x05, 0x51, 0x33, 0x90, 0x52,
-0xf6, 0xc0, 0x46, 0x98, 0x4d, 0xc6, 0x10, 0x9c,
-0x87, 0x07, 0xf0, 0x1e, 0xc5, 0x6b, 0x1e, 0x6b,
-0x89, 0x7c, 0xcd, 0xbf, 0x43, 0xf1, 0xc2, 0xb1,
-0x54, 0x74, 0x99, 0x7f, 0xbb, 0xd2, 0x27, 0x7f,
-0x17, 0xc7, 0x2d, 0xff, 0x90, 0x15, 0x34, 0x43,
-0xdf, 0x5b, 0xba, 0x1a, 0x3f, 0x85, 0xf3, 0x8b,
-0x3e, 0xf5, 0xaf, 0x50, 0x47, 0xc6, 0x6a, 0xb6,
-0x11, 0x5f, 0x9b, 0x15, 0x29, 0x36, 0x04, 0x87,
-0x20, 0xf8, 0xa0, 0xfa, 0xcf, 0x49, 0xbc, 0xc7,
-0xac, 0x5b, 0xa7, 0x3e, 0x95, 0xfc, 0x3b, 0x73,
-0xa3, 0xb5, 0x6b, 0x5d, 0xc9, 0x3f, 0xb1, 0x2c,
-0xe8, 0xf4, 0x9c, 0x99, 0xd3, 0xaa, 0xf0, 0x9e,
-0x5d, 0x66, 0xcb, 0x76, 0xf6, 0x25, 0xf8, 0x67,
-0xa8, 0xc5, 0x8f, 0xb3, 0x85, 0xf0, 0xcf, 0x9e,
-0xcf, 0x9b, 0x9d, 0x83, 0x6c, 0x19, 0x3e, 0x90,
-0x9e, 0x8c, 0xcf, 0xf9, 0x39, 0x54, 0xb4, 0x76,
-0x0c, 0xe2, 0xa5, 0xc7, 0xd5, 0xcf, 0x37, 0xab,
-0x83, 0x45, 0x0f, 0x1a, 0x6d, 0x60, 0x98, 0x6a,
-0x8a, 0xbd, 0x22, 0xe7, 0x85, 0xea, 0xf5, 0xc2,
-0x21, 0x6e, 0x2c, 0x57, 0xef, 0x4e, 0xcc, 0x78,
-0xf7, 0xd1, 0x50, 0xf5, 0x72, 0xed, 0xee, 0xc4,
-0xf6, 0xf4, 0x8f, 0x43, 0x73, 0xd0, 0x78, 0x6c,
-0x59, 0xb6, 0x0d, 0x54, 0x13, 0x27, 0xec, 0xeb,
-0xe9, 0xe7, 0x43, 0x3b, 0x97, 0xcf, 0xbc, 0x7b,
-0xd3, 0x97, 0x77, 0x3d, 0x8a, 0x97, 0x42, 0x77,
-0x6f, 0xfa, 0xd2, 0xae, 0x0d, 0xa1, 0xf4, 0x40,
-0x71, 0x59, 0xa2, 0x4f, 0xb8, 0x1f, 0xd0, 0x53,
-0x12, 0xc7, 0x7e, 0x0e, 0xaa, 0xfe, 0x04, 0xbb,
-0x97, 0x9f, 0x31, 0x6a, 0xd5, 0x40, 0x82, 0x19,
-0x68, 0xd4, 0xa9, 0x81, 0x3e, 0xe5, 0x5e, 0xdc,
-0x26, 0x6a, 0x20, 0x90, 0xd8, 0x95, 0xe5, 0x63,
-0x15, 0x86, 0x1a, 0x4e, 0x28, 0xc0, 0x3b, 0x8c,
-0x85, 0x78, 0xb3, 0x62, 0xf2, 0x93, 0x15, 0x51,
-0xc0, 0x96, 0x8f, 0x15, 0x31, 0xdf, 0x77, 0xfc,
-0x09, 0xae, 0x75, 0xa1, 0x97, 0x96, 0x07, 0xba,
-0x92, 0x43, 0x7c, 0x9c, 0x26, 0x11, 0xf6, 0x0f,
-0x93, 0xc6, 0x5f, 0x5d, 0xe2, 0x57, 0x42, 0xb2,
-0x05, 0xc6, 0xa7, 0xc5, 0x96, 0x07, 0xb6, 0x25,
-0x87, 0xd2, 0xe3, 0xf3, 0xa5, 0xb1, 0x07, 0x2f,
-0x7d, 0x31, 0x30, 0xa8, 0xbc, 0x57, 0x24, 0xe6,
-0xc5, 0x8e, 0x69, 0xb4, 0x66, 0x2e, 0x30, 0xb1,
-0x65, 0x08, 0x8e, 0xc9, 0xe7, 0x54, 0xc1, 0xfb,
-0x38, 0x5e, 0xa5, 0x34, 0x5e, 0xc7, 0xe4, 0xc0,
-0x55, 0xe9, 0xe3, 0x78, 0x8f, 0x9f, 0x96, 0x81,
-0x57, 0x3d, 0x0b, 0x70, 0x3d, 0x50, 0x16, 0x7a,
-0x7f, 0x81, 0x0b, 0x03, 0x6e, 0x64, 0x73, 0xe5,
-0xfc, 0xaa, 0xd7, 0xb3, 0x6a, 0x0f, 0xbe, 0xcb,
-0x1a, 0xc7, 0x9e, 0xdf, 0x8b, 0xbf, 0x02, 0x0d,
-0x5a, 0xe7, 0x83, 0xe0, 0x47, 0x83, 0x3d, 0x0b,
-0xf3, 0xa1, 0x94, 0xe3, 0x5b, 0x77, 0x18, 0xe6,
-0x73, 0x1f, 0x5d, 0x7a, 0x16, 0x82, 0x5c, 0xe5,
-0x2c, 0x24, 0x36, 0xb2, 0x10, 0x67, 0xa5, 0x72,
-0xdc, 0xd5, 0x69, 0xfd, 0xb0, 0x9f, 0x1b, 0xd8,
-0x99, 0x65, 0xfd, 0x6a, 0x1b, 0x6e, 0x64, 0x9a,
-0x8e, 0xab, 0xe8, 0x4e, 0xdc, 0xc1, 0x7c, 0x3a,
-0x6b, 0xc7, 0x37, 0x81, 0x2e, 0xb1, 0xf6, 0x19,
-0xb7, 0xd3, 0xe8, 0xe8, 0x8c, 0x16, 0xc6, 0xb8,
-0x63, 0x18, 0x4b, 0x42, 0x33, 0x9b, 0x99, 0xdc,
-0xbf, 0x66, 0x7e, 0x66, 0x8f, 0x18, 0x77, 0x6d,
-0x5b, 0xb0, 0xdf, 0xfb, 0xaf, 0x66, 0x4d, 0x4b,
-0x31, 0xad, 0xa9, 0x1b, 0x21, 0xb8, 0x44, 0xb5,
-0x0d, 0x1a, 0x5c, 0x7c, 0x7f, 0x8c, 0xf9, 0xa6,
-0x6f, 0x1b, 0xdb, 0xc3, 0x77, 0x42, 0xb0, 0x45,
-0xdd, 0x8e, 0x5b, 0xa4, 0xb8, 0x27, 0xc3, 0x8a,
-0xe4, 0xbc, 0x48, 0x7f, 0x06, 0xfb, 0x10, 0xa2,
-0x2d, 0x81, 0xed, 0xd4, 0x3f, 0x56, 0x2c, 0x8e,
-0xbd, 0xe1, 0xcd, 0xf5, 0x8f, 0x79, 0x6c, 0x70,
-0x9b, 0x39, 0x3d, 0xa5, 0xfc, 0x18, 0xc6, 0xcd,
-0x07, 0x5a, 0xfd, 0xdb, 0x94, 0x2a, 0x7e, 0xcc,
-0xec, 0x6a, 0x0d, 0xa7, 0xb4, 0x2a, 0x76, 0xac,
-0xa5, 0xcb, 0xf4, 0x6f, 0xd7, 0x42, 0x72, 0xff,
-0x0a, 0x79, 0xf6, 0xc0, 0xf8, 0xb6, 0xd8, 0x6a,
-0x39, 0x28, 0xf4, 0x1c, 0x1d, 0x8d, 0x73, 0xd8,
-0xe1, 0x35, 0xba, 0xf2, 0x1e, 0xd0, 0xc0, 0x95,
-0xea, 0xca, 0xdf, 0x91, 0xb1, 0x4c, 0xde, 0xa3,
-0xc7, 0xcc, 0x92, 0xad, 0x49, 0x34, 0x8c, 0x58,
-0xf3, 0xbf, 0xe9, 0xca, 0x71, 0xb9, 0x7f, 0x85,
-0xf4, 0x34, 0x8c, 0x71, 0x9c, 0x8c, 0xed, 0x4a,
-0x56, 0x1f, 0xc0, 0x6d, 0x0b, 0x17, 0xbd, 0x38,
-0x9c, 0xc1, 0x81, 0x29, 0x21, 0x63, 0x8c, 0x3c,
-0x10, 0x3e, 0x1d, 0x77, 0x2b, 0x33, 0xa3, 0x37,
-0x16, 0x55, 0x7a, 0x5a, 0x06, 0xcc, 0x3f, 0x96,
-0xd1, 0x7a, 0x18, 0x1f, 0x80, 0x28, 0xdd, 0x7c,
-0x5c, 0xee, 0x5f, 0xa1, 0x69, 0x21, 0x78, 0x11,
-0x6a, 0xf6, 0x6a, 0x43, 0x6c, 0x58, 0xdd, 0xc4,
-0x70, 0x2c, 0xd2, 0x38, 0x16, 0x9b, 0x40, 0x18,
-0x7b, 0x71, 0x4b, 0x9a, 0xcb, 0xb5, 0x34, 0x7e,
-0xeb, 0x4d, 0xac, 0xb2, 0x4b, 0x7d, 0x8f, 0xdd,
-0xe5, 0x7d, 0xe2, 0x8d, 0x05, 0xe9, 0x92, 0xec,
-0xdd, 0x0d, 0xf0, 0x76, 0xa6, 0x32, 0xa5, 0x66,
-0x9b, 0x8f, 0xcb, 0x79, 0x11, 0xc2, 0xfd, 0xeb,
-0x08, 0x0d, 0xd3, 0xe2, 0xc4, 0x49, 0x86, 0xeb,
-0xaa, 0x35, 0x2f, 0xe2, 0x5b, 0xc9, 0x9e, 0x84,
-0x2a, 0x34, 0xd8, 0x88, 0xa7, 0x1b, 0xd6, 0x5a,
-0xff, 0x2d, 0x52, 0xe6, 0x87, 0x27, 0xc1, 0x78,
-0x07, 0x97, 0x41, 0xbf, 0x91, 0x34, 0x83, 0x43,
-0x6a, 0x0f, 0x2b, 0x41, 0x4f, 0x26, 0x38, 0xa8,
-0x46, 0x71, 0x3d, 0x12, 0xef, 0x73, 0x7a, 0xc9,
-0x2c, 0x78, 0x9e, 0x16, 0xe1, 0x75, 0xc1, 0x93,
-0x3c, 0x89, 0xdb, 0x16, 0x2e, 0x7a, 0x7e, 0xdc,
-0x80, 0x0c, 0x6b, 0xe6, 0xba, 0xa2, 0xb3, 0x9e,
-0x83, 0xfa, 0x1c, 0xeb, 0x96, 0x08, 0x2e, 0xb9,
-0xdf, 0x87, 0x0a, 0x3e, 0xb3, 0x95, 0xd6, 0x43,
-0xa8, 0x30, 0x8b, 0x1f, 0xc4, 0x7b, 0x9e, 0x86,
-0x8a, 0x3e, 0xf5, 0x41, 0x36, 0x2c, 0xbf, 0xcf,
-0x5e, 0x75, 0x36, 0xfc, 0x91, 0x2f, 0x8e, 0x07,
-0xd6, 0x2b, 0x6f, 0xa7, 0x7f, 0xc9, 0x6f, 0xcf,
-0x3e, 0x5e, 0xaf, 0x7c, 0x05, 0x7e, 0xcb, 0xef,
-0xc8, 0x96, 0xa0, 0x61, 0x7e, 0x7a, 0x60, 0x71,
-0x76, 0xfa, 0x7a, 0x56, 0x0a, 0x4f, 0xf2, 0x08,
-0x2e, 0xcb, 0x5a, 0x11, 0xeb, 0x45, 0xc3, 0x3f,
-0xac, 0x95, 0xc1, 0x2f, 0x79, 0x26, 0xeb, 0x5f,
-0xaf, 0x7c, 0x20, 0xf7, 0x2f, 0xf5, 0x4f, 0x70,
-0x27, 0xf2, 0xce, 0xc6, 0x4d, 0x8a, 0x7d, 0x64,
-0x4e, 0x78, 0x66, 0x5b, 0xa5, 0x19, 0x65, 0xc4,
-0xfb, 0x1d, 0x10, 0xee, 0x4a, 0xd8, 0x9c, 0x30,
-0xc9, 0x58, 0x3a, 0x02, 0x1f, 0x92, 0x0b, 0x41,
-0x2f, 0xd2, 0xb8, 0xa7, 0xc1, 0xc4, 0x95, 0x96,
-0x56, 0xd1, 0x17, 0xf9, 0x96, 0xcc, 0xd2, 0x3e,
-0xb9, 0x7f, 0x99, 0xe8, 0x1f, 0x5e, 0xe3, 0x4d,
-0xab, 0xfd, 0x63, 0xca, 0x55, 0xf8, 0x84, 0xa3,
-0x37, 0x38, 0xa6, 0xc4, 0xb0, 0x65, 0x01, 0x19,
-0x57, 0xcd, 0x0f, 0xd1, 0x58, 0x35, 0x3e, 0xfd,
-0x2a, 0x9c, 0x36, 0x9a, 0xe2, 0xd5, 0xc3, 0xe5,
-0xb1, 0xe2, 0xcb, 0xbc, 0x6b, 0xc8, 0x7f, 0x46,
-0x8b, 0x35, 0x9f, 0xe6, 0xd1, 0x21, 0xfc, 0xd4,
-0xa0, 0x9c, 0x5f, 0x7b, 0x71, 0xff, 0x7a, 0x3e,
-0x5d, 0x6d, 0xe1, 0x2f, 0x9d, 0xf4, 0x4e, 0x07,
-0xdc, 0x65, 0x70, 0x53, 0x30, 0x36, 0xf0, 0x3b,
-0xde, 0xf3, 0x3d, 0x80, 0xc6, 0x96, 0x5d, 0x15,
-0x16, 0xee, 0x3b, 0x67, 0xf9, 0x06, 0xbd, 0xda,
-0xf0, 0x99, 0x6c, 0x96, 0xfa, 0x35, 0x5e, 0xb1,
-0x46, 0xfd, 0x12, 0x8b, 0xe1, 0xa4, 0xa9, 0xd8,
-0x33, 0xff, 0xdb, 0xec, 0x03, 0xf9, 0x3e, 0xeb,
-0xd8, 0x5f, 0x07, 0xe3, 0xe1, 0xe6, 0x0e, 0xdc,
-0x4a, 0xe0, 0x19, 0xb5, 0xba, 0x8f, 0x9e, 0x03,
-0xcf, 0xe0, 0x66, 0xb7, 0x7c, 0x5d, 0xd9, 0xd3,
-0xb0, 0xa8, 0x7e, 0x0e, 0x0e, 0x01, 0x3b, 0xab,
-0x6e, 0x50, 0xab, 0x97, 0xa8, 0x71, 0x36, 0x03,
-0x37, 0x44, 0xdc, 0x07, 0x4d, 0xa6, 0x73, 0x7b,
-0x43, 0xec, 0x97, 0xfb, 0x57, 0x7c, 0xc6, 0x49,
-0xd8, 0x0f, 0xe1, 0xac, 0xba, 0x7f, 0xdb, 0xc9,
-0x78, 0xf2, 0x9d, 0xf0, 0x98, 0x76, 0x87, 0x0f,
-0xbd, 0xac, 0x48, 0x55, 0x56, 0x6d, 0xc0, 0x41,
-0x79, 0xd2, 0xac, 0xa2, 0xfd, 0xeb, 0x34, 0x54,
-0x5a, 0xe1, 0x1d, 0xbe, 0x52, 0x5f, 0xb1, 0xb1,
-0xcb, 0x30, 0xea, 0xd5, 0x20, 0x0b, 0xf1, 0x8d,
-0x59, 0xa3, 0xd7, 0xb7, 0x90, 0xbd, 0x29, 0xe7,
-0x7b, 0x0f, 0xfa, 0x99, 0xb8, 0x89, 0xc7, 0xfd,
-0x07, 0x94, 0x6b, 0xf0, 0x21, 0x8f, 0x65, 0x03,
-0x07, 0x94, 0x1a, 0xf8, 0x8f, 0xe6, 0xe8, 0xe8,
-0x13, 0x47, 0x93, 0x47, 0xd5, 0x6b, 0xa9, 0x3a,
-0xea, 0xf0, 0x4f, 0x8c, 0x4e, 0x2b, 0x76, 0xc6,
-0xff, 0xe2, 0x8a, 0x50, 0x6a, 0xc2, 0x78, 0xa0,
-0x27, 0xdc, 0xa5, 0x84, 0xf9, 0x09, 0xb3, 0xab,
-0x37, 0xbc, 0x5f, 0xf9, 0x58, 0xfe, 0x2e, 0x8e,
-0x7b, 0xd5, 0x38, 0x8d, 0x4e, 0x5a, 0x91, 0x0e,
-0x43, 0xa0, 0x4b, 0x39, 0x69, 0xe0, 0xe8, 0x0c,
-0x94, 0x92, 0x53, 0xf1, 0x21, 0x3c, 0xd4, 0x1b,
-0x88, 0x28, 0x23, 0xec, 0x2d, 0x88, 0xa5, 0x4a,
-0xb7, 0xe3, 0x16, 0x39, 0x41, 0x33, 0xe5, 0x80,
-0xf2, 0x11, 0x8c, 0xe9, 0x31, 0x6b, 0xcb, 0x51,
-0x1c, 0x38, 0xb9, 0xef, 0xe8, 0xe4, 0x55, 0xde,
-0xbe, 0xc6, 0x3f, 0x8e, 0x2e, 0xfa, 0x35, 0xf8,
-0x2e, 0xfd, 0xf5, 0xb5, 0x9e, 0x13, 0xe4, 0x4c,
-0x46, 0x18, 0xb5, 0x54, 0xa2, 0x5f, 0xe7, 0xf1,
-0x1b, 0xbf, 0x54, 0xeb, 0xb2, 0x34, 0x3a, 0xfc,
-0x18, 0x6f, 0xda, 0xeb, 0xdf, 0xb5, 0x34, 0xaa,
-0x9f, 0xb6, 0x6e, 0x5f, 0xe7, 0x5f, 0xa7, 0xd8,
-0x7e, 0xf8, 0x56, 0xef, 0x5a, 0xe8, 0x6e, 0x0f,
-0x5a, 0xea, 0x01, 0x16, 0xc6, 0x09, 0x52, 0x83,
-0xbd, 0xd1, 0x1c, 0x46, 0xff, 0xd0, 0xb0, 0x54,
-0x72, 0x14, 0x5f, 0x22, 0x47, 0x31, 0x53, 0xb4,
-0x8f, 0x3c, 0xc6, 0xa0, 0xba, 0x33, 0xf1, 0x1f,
-0xea, 0x19, 0xde, 0x90, 0x52, 0x37, 0xb3, 0xb9,
-0xb0, 0xa9, 0x65, 0x17, 0x84, 0x8e, 0x06, 0x0d,
-0x53, 0xec, 0x5f, 0x7c, 0x1a, 0x7e, 0x9c, 0xef,
-0xc2, 0x4f, 0xd9, 0xcf, 0xb9, 0x25, 0xc3, 0x46,
-0xf0, 0x53, 0x73, 0xad, 0xe2, 0x0c, 0xdb, 0x87,
-0xf3, 0x6b, 0x3e, 0xf9, 0xe1, 0xd8, 0xe2, 0xa9,
-0x5a, 0x36, 0x33, 0xcd, 0xde, 0x87, 0x4d, 0xb8,
-0xfa, 0xe0, 0x52, 0x19, 0x6e, 0x26, 0x17, 0x54,
-0xed, 0x29, 0x8b, 0x3b, 0xfb, 0x97, 0x1f, 0xf6,
-0x67, 0xf0, 0xaf, 0x2f, 0x44, 0x37, 0x03, 0x71,
-0xc1, 0x00, 0x7e, 0xca, 0xcf, 0x3a, 0xd5, 0xb9,
-0x7d, 0x10, 0x69, 0x46, 0x3f, 0xd3, 0x88, 0xf7,
-0xaa, 0x91, 0xc4, 0x49, 0x48, 0xea, 0x55, 0xf7,
-0x84, 0x80, 0xfd, 0x02, 0xb6, 0x56, 0x85, 0xf4,
-0x10, 0x62, 0x24, 0x8e, 0xce, 0x89, 0xaa, 0x96,
-0xb1, 0x66, 0xb9, 0x7f, 0xf1, 0x92, 0xb5, 0x30,
-0x11, 0x8a, 0x5a, 0x9b, 0xb7, 0x6b, 0x8d, 0xe6,
-0x04, 0xd4, 0x9c, 0xc4, 0xfe, 0xc1, 0xbf, 0x6e,
-0xd4, 0x0d, 0x94, 0x64, 0xb4, 0xa7, 0xcd, 0x6b,
-0xa1, 0x06, 0x4b, 0xeb, 0x62, 0x23, 0xec, 0x84,
-0xa7, 0xee, 0x16, 0xdc, 0xdf, 0xcf, 0xc1, 0x80,
-0xa7, 0xf1, 0x1e, 0x7f, 0x4a, 0x33, 0xc0, 0x6a,
-0xcd, 0xdc, 0xe3, 0x3f, 0x58, 0x1e, 0x97, 0xfb,
-0x57, 0xfa, 0x4f, 0x26, 0x61, 0xc2, 0x40, 0xff,
-0x70, 0x54, 0x39, 0xca, 0xaf, 0x41, 0xec, 0x24,
-0x1a, 0x0f, 0xe3, 0xa0, 0x34, 0x50, 0xcb, 0xc3,
-0xd8, 0x52, 0x4b, 0x3d, 0x7f, 0xd4, 0x73, 0xcd,
-0x68, 0x80, 0x00, 0xfa, 0x1b, 0x7c, 0x52, 0x6f,
-0xf2, 0x06, 0xac, 0xca, 0x73, 0xe4, 0x81, 0x9c,
-0x0a, 0xec, 0x56, 0xf6, 0xca, 0xfd, 0x8b, 0xf0,
-0xd7, 0x04, 0xe0, 0x6c, 0x1a, 0x15, 0x70, 0x40,
-0x3c, 0x10, 0x5b, 0x8c, 0x06, 0xab, 0x94, 0x66,
-0xdc, 0x35, 0x63, 0x11, 0x0f, 0x65, 0xc4, 0xa5,
-0x98, 0x95, 0xbf, 0x27, 0xf3, 0x57, 0x23, 0xa9,
-0x31, 0x7d, 0xc1, 0x71, 0x74, 0x3c, 0x5c, 0xf8,
-0xeb, 0x25, 0x1e, 0xcc, 0xe2, 0x97, 0xcf, 0x42,
-0x0f, 0xaf, 0x31, 0xb4, 0x0e, 0x44, 0x5b, 0x47,
-0xf8, 0x7c, 0xdc, 0xd6, 0xd0, 0x78, 0xc9, 0xaa,
-0x41, 0xaf, 0x9b, 0x09, 0x78, 0x06, 0x2b, 0x1c,
-0x43, 0xbb, 0x82, 0xfe, 0xeb, 0x61, 0xa8, 0xec,
-0x0d, 0x65, 0x10, 0xfe, 0xe7, 0xf0, 0x57, 0x37,
-0x8e, 0xb2, 0x86, 0x9d, 0x99, 0xde, 0x2f, 0xf6,
-0x2f, 0x72, 0xe3, 0xcd, 0x90, 0xe9, 0x43, 0xd8,
-0x05, 0x4f, 0xea, 0x61, 0xae, 0x46, 0xe4, 0x10,
-0x70, 0x2d, 0x22, 0x3c, 0xfc, 0x2a, 0x5c, 0x21,
-0xd9, 0xab, 0xb0, 0xd3, 0x88, 0xd3, 0x28, 0xbb,
-0xf0, 0xd7, 0x11, 0x1c, 0x41, 0x1c, 0xee, 0x73,
-0x70, 0xd8, 0xac, 0x49, 0x69, 0x7b, 0x70, 0x94,
-0x8f, 0xc0, 0x7c, 0xb3, 0x23, 0x23, 0x8c, 0xb0,
-0xa5, 0xb6, 0xb1, 0xac, 0x59, 0x3f, 0xa3, 0x66,
-0x99, 0x46, 0x46, 0x8f, 0x5e, 0xe3, 0x15, 0x6f,
-0xc2, 0x11, 0x9d, 0xc6, 0xdd, 0xc1, 0x5f, 0x26,
-0xe2, 0xaf, 0x6b, 0x10, 0xc5, 0x9f, 0x5c, 0x39,
-0x24, 0xe7, 0x45, 0x46, 0x4c, 0x90, 0x06, 0x93,
-0x16, 0x34, 0xc4, 0x3b, 0xe8, 0x04, 0xee, 0x55,
-0x3e, 0x40, 0x0c, 0x8b, 0x53, 0xcf, 0x36, 0xd2,
-0xe2, 0x9e, 0x31, 0x84, 0x42, 0x2b, 0x19, 0xe2,
-0x1d, 0x07, 0x7f, 0xc1, 0xa7, 0xb2, 0x7b, 0xc7,
-0x68, 0x08, 0x68, 0x50, 0x26, 0xb1, 0xe5, 0x0e,
-0x57, 0xaf, 0x9e, 0x51, 0xfe, 0x08, 0x57, 0x78,
-0x93, 0xe1, 0x18, 0xf1, 0xc0, 0xa8, 0x67, 0x04,
-0xfe, 0x88, 0x9d, 0x17, 0x18, 0x64, 0x2e, 0xfc,
-0x35, 0x21, 0xbe, 0x8f, 0xf2, 0x55, 0xdc, 0x34,
-0x63, 0xad, 0xb8, 0xb1, 0xee, 0xb3, 0xbf, 0xd8,
-0x52, 0x31, 0x73, 0xb9, 0x5f, 0xba, 0xa9, 0x5d,
-0x3c, 0x9c, 0x33, 0xe8, 0xfb, 0x1c, 0x83, 0x86,
-0x7e, 0x1c, 0xaf, 0x3c, 0xfe, 0x12, 0x93, 0x08,
-0x7f, 0xf2, 0x30, 0x21, 0x46, 0xdc, 0xad, 0xf0,
-0xb7, 0xbf, 0x24, 0x80, 0x98, 0x34, 0x2c, 0x9f,
-0x6b, 0xa3, 0x97, 0x06, 0x8c, 0xb2, 0x49, 0x9c,
-0x3b, 0xb5, 0xa3, 0x6a, 0xaa, 0xd9, 0x85, 0xbf,
-0xe4, 0x78, 0x21, 0xf2, 0xec, 0xa2, 0x41, 0x31,
-0xd8, 0x66, 0x1a, 0x1d, 0xcb, 0x1e, 0x1d, 0x1c,
-0x2f, 0x1d, 0x17, 0xbd, 0x9d, 0xe8, 0x6f, 0xf8,
-0x6c, 0x37, 0x83, 0xc0, 0xf5, 0x49, 0x48, 0xc3,
-0xfc, 0x0b, 0xf8, 0x4a, 0xd8, 0xf8, 0xcb, 0xf0,
-0xcc, 0x86, 0xee, 0x74, 0x05, 0x3a, 0xff, 0xc1,
-0xdf, 0xc0, 0xf3, 0xbc, 0x3a, 0xae, 0xdd, 0x53,
-0xf6, 0x36, 0x1c, 0xe4, 0x02, 0x0e, 0xa0, 0xa1,
-0x57, 0x67, 0x7d, 0x6b, 0xd8, 0x9b, 0xf0, 0x18,
-0xaf, 0x48, 0xb3, 0x35, 0xec, 0x66, 0x04, 0x62,
-0x15, 0x7b, 0x8b, 0xf1, 0x12, 0xdf, 0x93, 0xc6,
-0x55, 0xf4, 0x2b, 0x4c, 0xf5, 0xe6, 0xf0, 0xd7,
-0x45, 0x1e, 0xb1, 0x02, 0x51, 0x65, 0xc0, 0x3b,
-0x0a, 0x8d, 0x80, 0xf8, 0x6b, 0x33, 0x5c, 0x4c,
-0x37, 0xae, 0x5d, 0x15, 0x29, 0x3f, 0xa9, 0x5e,
-0xdc, 0x83, 0xfd, 0x73, 0x8b, 0xd2, 0x0f, 0xe7,
-0xbc, 0x91, 0x70, 0x69, 0x19, 0xba, 0x22, 0xbd,
-0xe9, 0xc8, 0x6a, 0x7f, 0x83, 0x72, 0x0a, 0xb2,
-0xd9, 0xfa, 0x7e, 0xff, 0xcd, 0x8a, 0x7d, 0x3e,
-0x42, 0xf8, 0xcb, 0x9e, 0x0e, 0x36, 0x5e, 0x1e,
-0xa3, 0x61, 0x9a, 0xd9, 0x64, 0x96, 0x9c, 0x57,
-0x26, 0xcd, 0x6b, 0x91, 0x26, 0x02, 0xce, 0xf5,
-0x40, 0xe8, 0xb8, 0x24, 0xab, 0x8c, 0x79, 0xaf,
-0xea, 0x4d, 0xbc, 0xf4, 0x79, 0x65, 0xe4, 0xde,
-0xb3, 0xd0, 0xf4, 0x72, 0x6d, 0xab, 0x32, 0x38,
-0x23, 0x8f, 0xbf, 0x24, 0x48, 0x37, 0x08, 0xa4,
-0x73, 0xb9, 0xc0, 0x72, 0x74, 0x0b, 0xc5, 0x8b,
-0x34, 0x10, 0x45, 0x98, 0x2c, 0x76, 0x3d, 0x74,
-0x1d, 0x6d, 0x63, 0x66, 0xe0, 0x90, 0x52, 0xc3,
-0x11, 0x5c, 0xf7, 0x05, 0x78, 0xe5, 0x7c, 0x17,
-0xfe, 0x32, 0x71, 0x7f, 0x1f, 0x0d, 0x36, 0xaa,
-0xff, 0x93, 0x55, 0x9b, 0x9d, 0xad, 0xec, 0xcb,
-0x08, 0xbb, 0x2a, 0x10, 0xc8, 0xe3, 0x4e, 0xd4,
-0x1d, 0x47, 0x20, 0x46, 0x06, 0x02, 0x31, 0xae,
-0xd9, 0x46, 0x9f, 0x16, 0x65, 0xfe, 0xf4, 0x06,
-0xa8, 0x1e, 0x58, 0xd1, 0xca, 0xca, 0xf2, 0xf8,
-0x8b, 0x7a, 0x75, 0xc5, 0xfa, 0x60, 0x19, 0xc2,
-0xae, 0x6a, 0x43, 0x6b, 0xc1, 0xee, 0x95, 0x3d,
-0x4f, 0xfd, 0x9c, 0xae, 0x48, 0xab, 0x2d, 0x02,
-0x37, 0x55, 0x1b, 0xb7, 0x48, 0xe3, 0x1b, 0x06,
-0x5e, 0xfa, 0x11, 0x82, 0x35, 0x1c, 0x8b, 0x7b,
-0x58, 0x24, 0x87, 0xbf, 0xec, 0x51, 0x0e, 0x96,
-0xa2, 0x9b, 0x21, 0x86, 0x5b, 0xbc, 0x09, 0xa6,
-0x3d, 0xee, 0x08, 0xc4, 0x5e, 0x60, 0x1f, 0x75,
-0x1c, 0x89, 0x87, 0x7b, 0x35, 0x34, 0xda, 0xef,
-0x8a, 0xd7, 0x9c, 0x41, 0x0f, 0x64, 0x73, 0x71,
-0xb2, 0x15, 0x17, 0x73, 0xfd, 0xe6, 0xb2, 0x3c,
-0xfe, 0xba, 0x2c, 0xba, 0x45, 0x9b, 0x8f, 0x3e,
-0xad, 0xe8, 0x9f, 0x61, 0x6c, 0x29, 0xdb, 0x25,
-0x0d, 0x6f, 0xb4, 0xcd, 0xbf, 0x67, 0xe9, 0xfb,
-0x70, 0x99, 0x80, 0xd8, 0x1e, 0xe5, 0x7d, 0x78,
-0x08, 0xe7, 0xb2, 0x40, 0x64, 0xa7, 0x2c, 0x6c,
-0xc9, 0x2a, 0x0d, 0x05, 0xf8, 0x4b, 0x80, 0x2c,
-0x53, 0xce, 0xaf, 0xa5, 0xd2, 0x9d, 0x2b, 0x95,
-0xbd, 0x2a, 0x66, 0x9c, 0xc0, 0x5f, 0xa0, 0xa1,
-0xe1, 0x15, 0xf7, 0xa0, 0xcb, 0xc7, 0x08, 0x9a,
-0x6d, 0xe9, 0x50, 0xdc, 0xf8, 0x4b, 0xb8, 0xf1,
-0xd3, 0xab, 0xc0, 0xc1, 0x05, 0xb6, 0xb1, 0x74,
-0x48, 0x1f, 0xf7, 0xc6, 0x4c, 0x7f, 0x6a, 0x69,
-0x95, 0xed, 0xd8, 0xdb, 0x86, 0x5f, 0xde, 0x13,
-0x35, 0xc3, 0x29, 0x85, 0xd9, 0xf8, 0xcb, 0x8b,
-0xf8, 0x4b, 0x80, 0xa3, 0x9b, 0x69, 0xee, 0x34,
-0x08, 0x94, 0xe4, 0x39, 0x84, 0xcf, 0xd1, 0x24,
-0xec, 0xaa, 0x31, 0xab, 0x09, 0x29, 0x6c, 0xf4,
-0x04, 0xa9, 0xa5, 0x0a, 0x91, 0x94, 0xe3, 0x51,
-0x43, 0xb0, 0xb9, 0x23, 0xd5, 0x6c, 0xb8, 0xf1,
-0x57, 0x8d, 0xd9, 0xa9, 0xa3, 0x2f, 0x21, 0xf0,
-0xd7, 0xa0, 0xfd, 0x71, 0xfb, 0x39, 0x61, 0x53,
-0x15, 0xb0, 0x0b, 0x3e, 0x4f, 0x97, 0xc8, 0xa8,
-0xc4, 0xe7, 0x94, 0x0d, 0x79, 0xf7, 0xc3, 0xdc,
-0xb8, 0x3a, 0x93, 0x15, 0xe5, 0xf0, 0x97, 0xbe,
-0x3f, 0x14, 0x36, 0x6f, 0x29, 0x4f, 0xcc, 0xc8,
-0x3e, 0x1a, 0x9a, 0x47, 0xf8, 0x0b, 0x91, 0x02,
-0x18, 0xcb, 0x35, 0x9a, 0x9e, 0xfb, 0x59, 0xf5,
-0xf2, 0x8d, 0x08, 0xcd, 0xd2, 0x8f, 0x0a, 0x44,
-0x26, 0x8c, 0x8a, 0xe5, 0xb8, 0x6d, 0xf5, 0xf3,
-0xfd, 0xc6, 0x9e, 0x96, 0x90, 0xee, 0x63, 0x2e,
-0xfc, 0x65, 0x60, 0x3f, 0x3f, 0xc6, 0x2a, 0xb6,
-0x9e, 0x31, 0x62, 0x04, 0xbb, 0x70, 0xc1, 0x0f,
-0xd5, 0xa8, 0xf2, 0xed, 0x0d, 0x35, 0x22, 0xda,
-0xd2, 0x8c, 0xc4, 0x80, 0xf1, 0x82, 0xba, 0x45,
-0x1a, 0xdd, 0x6a, 0x58, 0x5c, 0xfa, 0x52, 0xdd,
-0x0c, 0x3f, 0x68, 0x35, 0x36, 0xfe, 0xfa, 0x9c,
-0xec, 0xd5, 0x55, 0xdb, 0x96, 0x0e, 0xf1, 0x6f,
-0xe7, 0xfb, 0xb9, 0xc9, 0xdc, 0x92, 0xaa, 0x1c,
-0x52, 0xf1, 0xd2, 0xf2, 0x2d, 0xdb, 0x92, 0x7b,
-0xd2, 0xe3, 0xa1, 0x06, 0x1b, 0x7f, 0x85, 0x10,
-0x7f, 0x6d, 0x55, 0x86, 0xcc, 0x2b, 0x7a, 0xc3,
-0xb2, 0xc0, 0x6b, 0x49, 0x1b, 0x7f, 0xcd, 0x9c,
-0xe6, 0x8c, 0x8e, 0x40, 0xc7, 0x51, 0xd3, 0x4b,
-0xbd, 0xea, 0x1a, 0x38, 0x1a, 0x9d, 0xf2, 0x3d,
-0x5e, 0x7b, 0x98, 0x10, 0x9a, 0x79, 0xea, 0x9c,
-0xf1, 0xea, 0x26, 0xfc, 0x55, 0x94, 0xc3, 0x5f,
-0xd0, 0x23, 0x61, 0x97, 0x73, 0x36, 0x88, 0x86,
-0xdd, 0x82, 0x97, 0x58, 0x9d, 0x6c, 0xe9, 0x90,
-0xb0, 0x2b, 0x77, 0x0f, 0x7d, 0x2a, 0x88, 0xff,
-0x51, 0xf6, 0x84, 0x0b, 0x7f, 0x79, 0xc2, 0x34,
-0x5e, 0xed, 0x62, 0xad, 0x9b, 0x49, 0x8b, 0xde,
-0x7e, 0xa8, 0x32, 0x65, 0x3f, 0xe7, 0x61, 0x17,
-0xad, 0x87, 0x65, 0x5e, 0xef, 0x56, 0x06, 0xa6,
-0x9a, 0xbb, 0x34, 0xd3, 0x57, 0x80, 0xbf, 0x68,
-0x94, 0x9b, 0xe5, 0xda, 0x3b, 0x93, 0x5e, 0x12,
-0x6c, 0x69, 0xb1, 0xc7, 0x7d, 0x6e, 0x7e, 0x59,
-0xbe, 0x99, 0x8c, 0xa7, 0xc4, 0xfb, 0x53, 0x44,
-0x97, 0xc4, 0x9f, 0x78, 0xcc, 0x8d, 0xbf, 0xa8,
-0x37, 0xd8, 0x1e, 0xfb, 0x5d, 0x5d, 0x2a, 0xfa,
-0x27, 0x9e, 0xeb, 0x9f, 0x10, 0xee, 0x8d, 0x74,
-0xa9, 0xb5, 0x94, 0x2e, 0xbd, 0xc1, 0x9c, 0xf7,
-0x39, 0x8e, 0xef, 0xf3, 0x0e, 0xc5, 0x8d, 0xbf,
-0x64, 0xaf, 0xf6, 0xfb, 0xce, 0x07, 0x8f, 0xb6,
-0xfc, 0xb4, 0x4c, 0x1b, 0xca, 0xf7, 0xf3, 0x79,
-0x68, 0x34, 0x03, 0x7a, 0x65, 0x3f, 0x3b, 0x0f,
-0x47, 0xcd, 0x6a, 0x5d, 0xeb, 0x67, 0xbd, 0xec,
-0xa8, 0x59, 0x9b, 0x9b, 0x3b, 0x4f, 0x23, 0xfe,
-0x92, 0xb8, 0x89, 0xf0, 0x17, 0xce, 0x4a, 0x0d,
-0xe8, 0x88, 0xc9, 0x13, 0x83, 0x55, 0xf6, 0xa2,
-0x07, 0xce, 0xea, 0x07, 0xe2, 0x28, 0x18, 0x0d,
-0x5d, 0xbe, 0x36, 0x4c, 0x5c, 0x32, 0x60, 0x94,
-0xf0, 0x57, 0x42, 0xf3, 0xe5, 0xf1, 0x97, 0xbd,
-0x6d, 0x21, 0xec, 0xf2, 0xd4, 0xf0, 0xd2, 0x74,
-0x7e, 0x23, 0x93, 0x86, 0x40, 0x64, 0x64, 0x74,
-0xa4, 0x83, 0xc3, 0x33, 0x0f, 0x7b, 0xe9, 0x52,
-0x59, 0x08, 0x17, 0xe1, 0x4a, 0xae, 0x0e, 0x6b,
-0xcb, 0xe5, 0xfb, 0x1c, 0x12, 0xfb, 0x97, 0x58,
-0xbe, 0xfc, 0xce, 0x3a, 0x76, 0xb2, 0x60, 0xff,
-0xb2, 0x42, 0x11, 0x9f, 0xbf, 0xb0, 0x85, 0xd6,
-0x3a, 0x74, 0x1d, 0x8d, 0xac, 0xba, 0xd0, 0xe7,
-0xb3, 0xf1, 0x97, 0xc7, 0x3e, 0x04, 0x7b, 0xa0,
-0x68, 0x16, 0xba, 0xfa, 0xd5, 0x96, 0xcf, 0x5e,
-0x84, 0x7b, 0xe5, 0x6a, 0xec, 0xad, 0xb6, 0x3a,
-0xa2, 0x74, 0x50, 0xa6, 0xd3, 0x3d, 0xd4, 0x12,
-0x41, 0x63, 0x2c, 0xf8, 0x65, 0x78, 0xc6, 0x30,
-0xfa, 0xd4, 0x78, 0x62, 0x4d, 0x1e, 0x7f, 0x1d,
-0x4c, 0x2c, 0xce, 0x06, 0x26, 0x94, 0x98, 0xf1,
-0x4b, 0x8e, 0x06, 0x02, 0x31, 0xf8, 0x34, 0x6f,
-0x34, 0x8e, 0x86, 0x1f, 0x49, 0xce, 0x36, 0x3e,
-0xed, 0x68, 0xca, 0x6a, 0x0f, 0x2b, 0xbf, 0x33,
-0x3e, 0xdd, 0x5b, 0xf2, 0x0e, 0xee, 0x4d, 0x5f,
-0x81, 0x6b, 0x83, 0x15, 0x88, 0xbf, 0xb4, 0xf9,
-0x79, 0xfc, 0x25, 0xbd, 0x02, 0x66, 0xfb, 0xf3,
-0x99, 0xca, 0x11, 0xb7, 0x03, 0x13, 0x7b, 0x33,
-0x90, 0xf9, 0x5b, 0x61, 0xbc, 0xe2, 0x27, 0x37,
-0x1e, 0x8d, 0xde, 0x40, 0xa6, 0x1c, 0xbd, 0xa6,
-0x38, 0x0e, 0x4a, 0x5a, 0xb1, 0xf1, 0x17, 0x90,
-0x7f, 0x98, 0x42, 0xd8, 0x75, 0x28, 0xf9, 0xf1,
-0xda, 0xd3, 0x12, 0x7f, 0x5d, 0x35, 0xaf, 0x51,
-0xcb, 0x58, 0xe5, 0xc7, 0x26, 0x01, 0xb1, 0xcd,
-0xd8, 0x12, 0x9f, 0x20, 0xff, 0x67, 0x52, 0xa1,
-0x96, 0xd8, 0xef, 0x71, 0xd3, 0x8c, 0xc1, 0x77,
-0x52, 0x75, 0xab, 0xfd, 0x3d, 0x0a, 0xe4, 0xf1,
-0x17, 0xee, 0x3b, 0xd6, 0x52, 0xdc, 0x65, 0x56,
-0x3f, 0x33, 0xb3, 0xfa, 0x15, 0xed, 0x9b, 0x09,
-0xd1, 0x3f, 0xaf, 0x60, 0xff, 0xbc, 0xcd, 0xbb,
-0xf5, 0x0a, 0xec, 0xb1, 0xc4, 0x97, 0xe3, 0x07,
-0x77, 0x54, 0x7f, 0x80, 0x97, 0xde, 0xce, 0x76,
-0xcf, 0xf4, 0xbf, 0xa7, 0x7d, 0x5b, 0xc1, 0xde,
-0xa0, 0x03, 0xc0, 0xbf, 0x4e, 0x3c, 0x6b, 0x9f,
-0x87, 0x13, 0xfe, 0x32, 0xaa, 0x05, 0xc8, 0x82,
-0x0d, 0x20, 0x0d, 0x75, 0x11, 0x2b, 0xb1, 0xec,
-0x5d, 0xaf, 0xc2, 0x42, 0xaf, 0xe0, 0xcb, 0x5e,
-0x7c, 0xf2, 0x49, 0x6a, 0xe1, 0x68, 0x0c, 0x68,
-0xdf, 0xa2, 0xbd, 0x52, 0xdd, 0xb9, 0x0c, 0xf1,
-0x17, 0xc8, 0xf7, 0xd0, 0x98, 0x71, 0xd2, 0x63,
-0x0f, 0xe5, 0xab, 0xb0, 0xdb, 0x0c, 0x0f, 0x6a,
-0x0b, 0xc9, 0xbd, 0x44, 0x44, 0x66, 0x8f, 0x72,
-0x70, 0x50, 0x6b, 0x64, 0x7f, 0x81, 0x6b, 0x84,
-0xb8, 0xf4, 0x2a, 0x74, 0x2f, 0x43, 0x83, 0x5e,
-0x12, 0x1c, 0x77, 0x8f, 0xda, 0xc8, 0x3a, 0xbc,
-0x62, 0x7d, 0xde, 0xfb, 0x19, 0xbb, 0x9f, 0x47,
-0xcb, 0xaf, 0xea, 0x27, 0xa8, 0x13, 0x7a, 0x64,
-0xf7, 0x9e, 0xa3, 0x7e, 0xd6, 0x27, 0xbc, 0xdd,
-0x83, 0x25, 0x63, 0x4b, 0x1f, 0x41, 0xdf, 0x58,
-0x76, 0x9d, 0x34, 0x08, 0xc2, 0x5c, 0xe3, 0xd1,
-0xb6, 0xc6, 0x3b, 0xb5, 0xf9, 0x79, 0xfc, 0x25,
-0x87, 0x00, 0x61, 0xd7, 0x45, 0xb5, 0xb1, 0x2f,
-0x10, 0x49, 0xba, 0xc6, 0xeb, 0x22, 0x01, 0xb1,
-0x48, 0x72, 0xa5, 0x73, 0xe9, 0x64, 0x95, 0x30,
-0xe8, 0x4f, 0x5c, 0x24, 0x9f, 0x3f, 0x5d, 0x6e,
-0xe3, 0x2f, 0x8f, 0x9e, 0x73, 0xe3, 0x1b, 0xe1,
-0x34, 0xdc, 0x65, 0x09, 0xae, 0xc4, 0x6e, 0x99,
-0x14, 0xae, 0xa3, 0x9f, 0x90, 0xc2, 0x69, 0x58,
-0x64, 0xa9, 0x78, 0xc9, 0x73, 0x1a, 0x16, 0x20,
-0x92, 0xa2, 0x4b, 0xde, 0x6e, 0x5e, 0x32, 0xaa,
-0xc0, 0x32, 0xf1, 0x9c, 0x36, 0xc4, 0x5f, 0x02,
-0x76, 0x65, 0x04, 0xec, 0x0a, 0x0a, 0x00, 0xe5,
-0x91, 0x2d, 0xd2, 0x91, 0xa6, 0x57, 0x8b, 0x2e,
-0x45, 0xe9, 0x92, 0x00, 0x62, 0x96, 0x5f, 0x5e,
-0x0a, 0x96, 0xe3, 0xd4, 0x73, 0xe3, 0x2f, 0x01,
-0xdf, 0x58, 0xee, 0x39, 0x6b, 0xd5, 0x23, 0x0e,
-0xec, 0x22, 0x17, 0x3d, 0x44, 0xcf, 0x79, 0x0e,
-0x0d, 0x1f, 0x5e, 0x82, 0x1f, 0xca, 0x7b, 0xe8,
-0x52, 0x1c, 0xd0, 0x48, 0xe7, 0xf1, 0x17, 0x8e,
-0x05, 0x3e, 0x67, 0x93, 0x3f, 0x41, 0xe7, 0x24,
-0x38, 0x2b, 0xe5, 0xcc, 0x5d, 0x11, 0x09, 0x9e,
-0xec, 0xe8, 0x5e, 0x12, 0xb2, 0xb4, 0x85, 0x3e,
-0x3f, 0x1d, 0xa1, 0x0c, 0x3c, 0x14, 0xf1, 0x9d,
-0x4c, 0x24, 0x4d, 0xde, 0x1f, 0x8a, 0x26, 0x5e,
-0xe5, 0xdd, 0x0d, 0xe9, 0x01, 0x75, 0x2b, 0xb3,
-0xf7, 0x2f, 0x20, 0xfc, 0x45, 0x87, 0x0f, 0x17,
-0x94, 0x59, 0xc6, 0x09, 0xea, 0x0d, 0x1a, 0x8b,
-0x23, 0x7a, 0xc3, 0x20, 0xcd, 0x14, 0x63, 0xc2,
-0x5c, 0x20, 0xfb, 0x67, 0x0b, 0x2c, 0x38, 0x59,
-0x4a, 0x48, 0xea, 0x77, 0xb0, 0xe0, 0x4d, 0x7f,
-0x17, 0x0e, 0xc1, 0xb5, 0x78, 0x44, 0xad, 0x8e,
-0x24, 0x21, 0x8f, 0xbf, 0xae, 0xe9, 0xb7, 0x5a,
-0x6e, 0xdc, 0x84, 0x1e, 0xa3, 0xd1, 0x74, 0x1c,
-0x9d, 0xf6, 0x49, 0x32, 0xe8, 0x4f, 0xd0, 0x3d,
-0x77, 0x9d, 0x7c, 0x7c, 0x54, 0x59, 0x7c, 0x13,
-0xb5, 0x94, 0x76, 0x25, 0x3f, 0xe2, 0x68, 0xe8,
-0x1b, 0x46, 0x95, 0x61, 0x1b, 0x7f, 0xe1, 0xcd,
-0xa7, 0x43, 0x88, 0xa4, 0x2e, 0x24, 0x1b, 0xf9,
-0xe9, 0x50, 0xd3, 0x2f, 0xfc, 0x17, 0x08, 0x76,
-0xe1, 0x03, 0xfd, 0x63, 0x5a, 0xac, 0xec, 0x2d,
-0xab, 0x29, 0x1b, 0x46, 0x03, 0xfe, 0x00, 0x8b,
-0xfa, 0xfd, 0x63, 0x08, 0x97, 0xc4, 0x3b, 0x86,
-0x2f, 0x52, 0xd1, 0x69, 0xd6, 0x60, 0xae, 0x32,
-0x97, 0xe6, 0xf0, 0xd7, 0x15, 0xd8, 0x62, 0x56,
-0x0e, 0xaa, 0x93, 0x77, 0xc7, 0x5a, 0xb7, 0xf4,
-0xd7, 0x9e, 0x2c, 0x99, 0x6c, 0x46, 0xd8, 0xd5,
-0x5e, 0x53, 0x21, 0x76, 0x2b, 0x6e, 0xd4, 0xd0,
-0x6e, 0x15, 0x4e, 0x1d, 0xe1, 0xf3, 0xce, 0x22,
-0xba, 0x19, 0x21, 0x22, 0x2c, 0xab, 0x91, 0xb1,
-0x05, 0x82, 0x71, 0x34, 0xd2, 0x39, 0xfe, 0xcb,
-0xa4, 0x53, 0xf4, 0x10, 0xba, 0x6a, 0x62, 0x3d,
-0x54, 0x6f, 0xb7, 0x17, 0x3d, 0x55, 0xac, 0x90,
-0xf2, 0x5c, 0xdd, 0x6f, 0xe0, 0x6e, 0x35, 0x80,
-0x2d, 0x23, 0x34, 0x65, 0xa8, 0x65, 0x84, 0xce,
-0x9a, 0xce, 0x69, 0x91, 0xa2, 0x3c, 0xfe, 0x2a,
-0xa3, 0x31, 0x6d, 0xc9, 0x94, 0x85, 0xbd, 0x9d,
-0xde, 0x9a, 0x5e, 0x7b, 0x4c, 0xf1, 0x6b, 0x48,
-0x92, 0x2b, 0x4c, 0x46, 0xd8, 0x8b, 0x08, 0x51,
-0x0e, 0xf7, 0x0f, 0x11, 0x92, 0x4b, 0x24, 0x0e,
-0xbb, 0xd2, 0x5a, 0xcf, 0x2b, 0x99, 0x3c, 0xfe,
-0xfa, 0x50, 0x0c, 0x93, 0xb6, 0x8f, 0x9d, 0x60,
-0x31, 0xcb, 0xa0, 0x73, 0xa4, 0x97, 0xd0, 0x51,
-0x5c, 0xd9, 0x55, 0x19, 0xe6, 0xc7, 0x70, 0x5e,
-0xac, 0xec, 0x2a, 0x0f, 0xeb, 0x47, 0x3a, 0xc4,
-0x50, 0x9e, 0xf4, 0x9c, 0x90, 0x53, 0xe6, 0x24,
-0xe0, 0xe0, 0xc6, 0x71, 0xdf, 0xc9, 0xf1, 0x5f,
-0xfb, 0xe0, 0x2d, 0x0f, 0xd1, 0x5e, 0x7f, 0x75,
-0xd6, 0x3b, 0xc1, 0x9a, 0x72, 0x03, 0xd7, 0x5a,
-0xdb, 0x5b, 0x39, 0x6a, 0x7e, 0x0c, 0x88, 0x8e,
-0x7b, 0xb1, 0xe5, 0x8f, 0xfe, 0xc5, 0xbd, 0xff,
-0x86, 0x97, 0xd8, 0x27, 0x62, 0x4c, 0x2b, 0xf1,
-0x1e, 0x6f, 0x1d, 0x04, 0xd6, 0x29, 0x39, 0xfc,
-0xb5, 0x19, 0x5e, 0x86, 0x68, 0xd6, 0x2f, 0x57,
-0xd1, 0x88, 0x9c, 0x9e, 0x1f, 0x42, 0x23, 0x17,
-0x93, 0x7a, 0x5c, 0x42, 0x33, 0xbc, 0x54, 0x24,
-0xbe, 0x8f, 0x38, 0xe0, 0x12, 0x2d, 0xe6, 0x87,
-0x38, 0x4f, 0xfd, 0xfb, 0xf3, 0xf8, 0xab, 0x11,
-0xb6, 0xb4, 0x56, 0x5a, 0xea, 0xa7, 0x08, 0xa9,
-0x5e, 0xc2, 0xc9, 0xa8, 0x8d, 0x3a, 0xf8, 0x8b,
-0x9c, 0x8a, 0xc3, 0xe8, 0x54, 0xa0, 0x81, 0x3d,
-0xc6, 0x76, 0xe3, 0xf4, 0x64, 0x23, 0xbc, 0xd3,
-0x99, 0x7a, 0x38, 0x5e, 0x1d, 0x2d, 0x3f, 0x67,
-0x2e, 0xfc, 0x95, 0x5c, 0x86, 0x53, 0xa6, 0x9e,
-0x39, 0xc0, 0x19, 0x8d, 0xdd, 0x20, 0x88, 0x30,
-0x0b, 0x11, 0x99, 0x01, 0x3e, 0x28, 0xa2, 0xb3,
-0xa6, 0x35, 0x34, 0x82, 0xa7, 0xe8, 0x12, 0xdd,
-0x73, 0x0a, 0x67, 0x5c, 0xc8, 0xc4, 0x75, 0x6c,
-0x7d, 0x0e, 0x7f, 0xb1, 0x0d, 0x69, 0x23, 0x3b,
-0x73, 0x7d, 0xd9, 0xdb, 0xde, 0x83, 0x7c, 0x0e,
-0xc2, 0x81, 0x66, 0x84, 0x03, 0x6d, 0xd5, 0x7b,
-0x05, 0x2e, 0x78, 0x7e, 0xa7, 0x0d, 0x10, 0x9e,
-0xdf, 0xf1, 0xf7, 0x43, 0x04, 0xbb, 0x60, 0x43,
-0x1a, 0xe1, 0xc0, 0x43, 0xec, 0x6d, 0x73, 0x43,
-0xba, 0xa2, 0x5e, 0x5d, 0xcf, 0xee, 0xc9, 0xf3,
-0x5f, 0x2f, 0x23, 0xfe, 0xf2, 0x47, 0xa6, 0x9f,
-0xc4, 0x55, 0x2b, 0x32, 0x1c, 0x88, 0xe0, 0x58,
-0xfc, 0x07, 0x6f, 0x5c, 0x83, 0x40, 0x0c, 0xbf,
-0x4f, 0x22, 0x02, 0x5b, 0x54, 0x6c, 0x39, 0x0f,
-0xf5, 0xc3, 0xfe, 0x08, 0xf6, 0xcf, 0xdf, 0x26,
-0x1a, 0x87, 0x03, 0xf5, 0xca, 0xc7, 0xfc, 0xc3,
-0xf4, 0xfa, 0x35, 0xd8, 0x72, 0x77, 0x9e, 0xff,
-0x9a, 0x80, 0xa6, 0xc1, 0x5a, 0xea, 0xc3, 0x6b,
-0x10, 0xeb, 0x97, 0xe3, 0xd5, 0xda, 0xd4, 0x8e,
-0xc6, 0x08, 0x5c, 0x21, 0x6a, 0x6c, 0xac, 0x9c,
-0x16, 0xb4, 0x3a, 0xeb, 0x4f, 0x47, 0xf3, 0xf7,
-0x60, 0xcf, 0xeb, 0x31, 0xc0, 0x4f, 0xa5, 0x1c,
-0xfe, 0xeb, 0x23, 0xf3, 0xc4, 0x60, 0x5d, 0x7f,
-0xe0, 0x40, 0x72, 0x84, 0x4f, 0x44, 0x62, 0xa7,
-0xfc, 0x99, 0xe4, 0x88, 0x3a, 0xd1, 0x1a, 0xb5,
-0xfd, 0x0d, 0x7e, 0x98, 0x00, 0xc2, 0xc7, 0x74,
-0x22, 0x7d, 0x01, 0x97, 0xc1, 0x8f, 0xe1, 0x84,
-0xa7, 0x31, 0xbb, 0x99, 0xfa, 0xf9, 0x04, 0x9d,
-0xaa, 0x65, 0x94, 0x3c, 0xff, 0x95, 0xde, 0xa2,
-0x56, 0x88, 0xbd, 0x3b, 0x4d, 0x9b, 0xb8, 0xfa,
-0xa0, 0xd8, 0x6e, 0xee, 0xc8, 0xef, 0x3b, 0x68,
-0x4c, 0xc2, 0xa3, 0x70, 0xdb, 0x19, 0xd5, 0xd9,
-0x9b, 0x54, 0x6a, 0x41, 0x03, 0xd0, 0xc8, 0xf1,
-0x5f, 0x4f, 0x24, 0x36, 0x50, 0xf7, 0x7e, 0x9b,
-0xbd, 0xdd, 0x4a, 0x40, 0x4c, 0x5d, 0x2f, 0xf1,
-0x17, 0x01, 0x31, 0x42, 0x5b, 0x15, 0x86, 0x0f,
-0x11, 0x99, 0xfa, 0x0c, 0x51, 0x63, 0xeb, 0x83,
-0x5f, 0x61, 0x1b, 0x9c, 0x7b, 0x36, 0xf0, 0x70,
-0x1c, 0x8d, 0x3c, 0xff, 0x25, 0x4e, 0x77, 0x3b,
-0xc5, 0xe9, 0x93, 0x9c, 0x9e, 0xe2, 0x05, 0x38,
-0x93, 0xc3, 0x5f, 0x5a, 0x04, 0xe8, 0x9e, 0x50,
-0xaf, 0xb8, 0x44, 0x73, 0xb9, 0x03, 0x0d, 0x15,
-0x0d, 0x1d, 0x67, 0xb7, 0x8b, 0xff, 0x3a, 0x0e,
-0x75, 0x0e, 0xec, 0xa2, 0xd3, 0x03, 0x61, 0x04,
-0x53, 0x76, 0x4b, 0x94, 0x88, 0xb0, 0x61, 0xf8,
-0xd8, 0x8c, 0xb6, 0xfd, 0x09, 0x79, 0x56, 0x44,
-0x7b, 0xa9, 0xd4, 0x72, 0x1c, 0x9a, 0x52, 0xfe,
-0x6c, 0x9e, 0xff, 0xb2, 0xd8, 0x98, 0x89, 0x9e,
-0x03, 0xb8, 0xdd, 0xb9, 0x51, 0x7c, 0xa3, 0x73,
-0xb0, 0x0b, 0x8d, 0xac, 0x3a, 0x76, 0xcf, 0x14,
-0x97, 0x0f, 0x7f, 0x50, 0x8c, 0x05, 0xdc, 0xf8,
-0x8b, 0x09, 0x1a, 0x65, 0x07, 0xfa, 0xea, 0xe7,
-0x21, 0xba, 0xc4, 0xaf, 0x0b, 0x7f, 0x3e, 0x5a,
-0x08, 0xc4, 0xe0, 0x3c, 0x77, 0xb5, 0x68, 0x29,
-0xe5, 0x3d, 0x5c, 0x0a, 0xa2, 0xeb, 0x02, 0xba,
-0x92, 0xc8, 0xe3, 0xaf, 0x8d, 0xab, 0x6b, 0x96,
-0x68, 0x3b, 0x7c, 0x55, 0x5e, 0x84, 0x54, 0xe6,
-0x72, 0xe9, 0x3f, 0x07, 0xf3, 0xf8, 0x4b, 0x1a,
-0x03, 0xc4, 0x88, 0xb1, 0xdf, 0x7b, 0xed, 0x96,
-0xdf, 0xc3, 0x1b, 0x10, 0x6c, 0x45, 0xc3, 0x85,
-0xbf, 0x36, 0x42, 0x4d, 0x7c, 0xc5, 0xb6, 0xe6,
-0x2a, 0xe9, 0x5a, 0xcb, 0xe7, 0xec, 0x22, 0xb4,
-0x75, 0x09, 0x7e, 0x9a, 0x43, 0x64, 0xba, 0x78,
-0xf2, 0xbb, 0xad, 0x02, 0xac, 0xa5, 0x58, 0xbf,
-0x17, 0x3d, 0xf3, 0x66, 0x6d, 0x2b, 0x7b, 0x2c,
-0x87, 0xbf, 0xd2, 0x6d, 0xa1, 0xf0, 0x0a, 0xad,
-0x2c, 0xe1, 0x4d, 0xef, 0x0f, 0x19, 0x5f, 0xf4,
-0xa1, 0x81, 0x88, 0xac, 0x62, 0xb9, 0xd6, 0xca,
-0x5e, 0x87, 0xe7, 0xf5, 0x6a, 0x53, 0x6b, 0x2d,
-0xea, 0x37, 0xf7, 0x87, 0xaa, 0x96, 0xd9, 0x48,
-0x21, 0x6c, 0x2a, 0x74, 0xf6, 0xb5, 0x15, 0xd2,
-0xcb, 0xb5, 0x9b, 0x13, 0x79, 0xfc, 0xc5, 0x07,
-0x08, 0x76, 0xed, 0x52, 0x0c, 0x3e, 0x66, 0x64,
-0x66, 0x12, 0xda, 0x82, 0xb1, 0xe0, 0x03, 0x88,
-0xbf, 0x70, 0xdd, 0xc8, 0xe2, 0x10, 0x60, 0x3f,
-0x9f, 0x43, 0x8c, 0x16, 0xbd, 0x59, 0xe3, 0x9e,
-0x5e, 0xd3, 0xf6, 0x9f, 0xb3, 0x6c, 0x60, 0x5e,
-0x14, 0x11, 0x99, 0xf2, 0xb3, 0x1c, 0xff, 0x25,
-0x21, 0x95, 0xe8, 0x43, 0x4f, 0xac, 0x25, 0xdf,
-0xbd, 0x88, 0xb6, 0xf6, 0x8d, 0x1b, 0xb1, 0x15,
-0x1a, 0x1a, 0xfc, 0x0f, 0x20, 0x2e, 0x5d, 0x72,
-0x5c, 0xfd, 0x4b, 0xf8, 0xa9, 0x26, 0x33, 0xcf,
-0x7f, 0x11, 0xfe, 0x7a, 0x15, 0x16, 0x99, 0xfe,
-0xc1, 0xa5, 0xce, 0x30, 0x05, 0xe5, 0x73, 0x42,
-0x44, 0x7b, 0xe1, 0x24, 0x12, 0xb0, 0x4b, 0xfd,
-0x08, 0xca, 0xcc, 0xcd, 0xf4, 0x9c, 0x63, 0x20,
-0x3e, 0x4e, 0x06, 0x11, 0x61, 0xf0, 0xb5, 0x3c,
-0xfe, 0xea, 0xf0, 0x12, 0x93, 0x55, 0x66, 0xe8,
-0x3d, 0x72, 0xf5, 0x93, 0x88, 0xcc, 0x46, 0x5b,
-0x73, 0xd1, 0x08, 0x1a, 0x9e, 0x4d, 0xd0, 0x88,
-0x13, 0x96, 0x65, 0x59, 0x87, 0x03, 0xcd, 0xce,
-0x00, 0x42, 0xb3, 0x34, 0x2b, 0x85, 0x1c, 0xfe,
-0x6a, 0x03, 0xef, 0x12, 0x55, 0xc2, 0x2e, 0xc3,
-0x5c, 0xa1, 0x83, 0xec, 0x4c, 0x1b, 0x76, 0x55,
-0x99, 0x1d, 0x64, 0xec, 0x04, 0x83, 0xee, 0xe9,
-0x9f, 0xd6, 0xe6, 0x09, 0x4b, 0x68, 0xd6, 0x06,
-0xab, 0xe3, 0xd8, 0xd2, 0x3c, 0x2d, 0x87, 0xbf,
-0x08, 0x5b, 0xb5, 0x88, 0xe1, 0xf6, 0x88, 0xc1,
-0x5d, 0xed, 0xa1, 0xc1, 0xb5, 0x61, 0x97, 0xc0,
-0x5f, 0x5e, 0x9b, 0x5a, 0xc5, 0x8f, 0xe7, 0x8c,
-0xa7, 0xc8, 0x81, 0x49, 0xb9, 0xf9, 0xaf, 0x63,
-0x50, 0x67, 0xae, 0x4c, 0x69, 0x44, 0x02, 0x76,
-0xd9, 0x2f, 0xad, 0x38, 0x46, 0x20, 0x92, 0x0b,
-0x2f, 0x09, 0xb6, 0x6b, 0xa7, 0x69, 0xc3, 0xae,
-0x63, 0x0e, 0xa4, 0x3a, 0x06, 0x3f, 0x69, 0x6d,
-0x4c, 0x29, 0x6b, 0x72, 0xf8, 0x8b, 0xe1, 0x30,
-0x21, 0x3a, 0x56, 0x86, 0xdc, 0xf0, 0xb6, 0x71,
-0x89, 0x6d, 0xd4, 0xc9, 0x79, 0x31, 0xbe, 0xb7,
-0x91, 0x98, 0x35, 0xf7, 0x3d, 0x9e, 0xc6, 0xd5,
-0x81, 0xb2, 0x3c, 0xff, 0xc5, 0x8b, 0x06, 0xd4,
-0x18, 0x94, 0x70, 0x3a, 0x52, 0xc6, 0x39, 0x18,
-0xe6, 0x95, 0xce, 0x64, 0xfc, 0x5b, 0x9c, 0x9e,
-0x68, 0x6c, 0x91, 0x2d, 0x51, 0x78, 0x1c, 0x5f,
-0x1b, 0x63, 0x58, 0xce, 0x53, 0xc3, 0xc0, 0x7e,
-0xf6, 0xfa, 0xdb, 0x2b, 0xf3, 0xf8, 0x4b, 0x7d,
-0xa2, 0x0d, 0x41, 0xd6, 0x1a, 0x41, 0x7b, 0xd5,
-0xb4, 0x0d, 0x14, 0xe2, 0x2f, 0x44, 0x64, 0xc5,
-0x68, 0xa8, 0x2f, 0xa6, 0x83, 0x6d, 0x38, 0x3a,
-0x97, 0xed, 0x4b, 0xf7, 0xdd, 0x85, 0x37, 0x57,
-0x6e, 0x6f, 0x79, 0x97, 0xf9, 0xf2, 0xfc, 0x57,
-0xa7, 0x59, 0x63, 0x15, 0xcf, 0x6b, 0x26, 0xfc,
-0xb5, 0xd6, 0x59, 0xc7, 0xc2, 0x72, 0xb3, 0xeb,
-0x96, 0xbb, 0xde, 0x49, 0xc8, 0xfc, 0x99, 0x61,
-0x6d, 0x74, 0xed, 0x5f, 0xab, 0xcc, 0x1f, 0x82,
-0x31, 0x1a, 0x8a, 0x14, 0xe5, 0xf1, 0x17, 0x7f,
-0x4c, 0xad, 0x36, 0xd5, 0x75, 0x65, 0xa5, 0xb8,
-0xe4, 0x86, 0x87, 0xd1, 0x38, 0x2b, 0x11, 0x19,
-0xae, 0xc6, 0x04, 0x07, 0x06, 0xbe, 0x40, 0xcb,
-0x72, 0x46, 0xb2, 0x30, 0x67, 0x8d, 0x83, 0xf0,
-0x8d, 0x5e, 0x6d, 0x7d, 0xd1, 0x97, 0x20, 0xa9,
-0x93, 0xb7, 0x93, 0x08, 0x39, 0xf8, 0xab, 0x09,
-0x5e, 0xe1, 0x4d, 0xf1, 0x92, 0xf5, 0xca, 0x6c,
-0x86, 0xf8, 0x6b, 0xc8, 0x5f, 0x88, 0xbf, 0xf6,
-0x2e, 0x1e, 0x0d, 0x3c, 0x94, 0x7c, 0xbb, 0xe3,
-0x0f, 0x7c, 0x7f, 0xb6, 0x64, 0xbd, 0xe7, 0x4d,
-0xf8, 0x3d, 0x27, 0x46, 0x4c, 0xf9, 0x47, 0xf8,
-0x6d, 0xfa, 0xf6, 0xec, 0x4a, 0xc4, 0x5f, 0x90,
-0xc3, 0x5f, 0x97, 0x69, 0x08, 0x68, 0x8f, 0xfb,
-0x0e, 0x7a, 0x29, 0x0e, 0xec, 0xb2, 0x70, 0x27,
-0xfa, 0x88, 0x5c, 0xd0, 0xd7, 0x4a, 0x5e, 0x60,
-0x1f, 0x51, 0x48, 0xcf, 0x20, 0x05, 0xf0, 0x20,
-0x52, 0x78, 0xc4, 0xc2, 0x9b, 0xf7, 0xc0, 0x04,
-0x43, 0x7f, 0x9e, 0x2b, 0x7d, 0xde, 0x1c, 0xfe,
-0x3a, 0x95, 0xea, 0xce, 0xfa, 0xdf, 0x27, 0xd8,
-0xc5, 0x17, 0xbc, 0x23, 0x88, 0xb0, 0x6b, 0x02,
-0x4d, 0x24, 0xaf, 0xc5, 0xaf, 0x75, 0x10, 0x11,
-0x96, 0xbc, 0x6a, 0x5c, 0x4a, 0x55, 0x5e, 0xf0,
-0x8e, 0x29, 0x7f, 0x6c, 0x11, 0x97, 0x0e, 0xe1,
-0x46, 0x76, 0x2d, 0xb5, 0x60, 0x28, 0xe0, 0xe2,
-0xbf, 0x8e, 0x9a, 0xc9, 0x74, 0x85, 0xd9, 0xf1,
-0x50, 0xd9, 0xdb, 0x88, 0x89, 0xe6, 0x67, 0xb1,
-0x13, 0xbe, 0x2c, 0xfb, 0x99, 0xf0, 0xd7, 0x35,
-0xda, 0xbf, 0x22, 0xd8, 0x3f, 0x07, 0xda, 0x17,
-0x66, 0x11, 0xba, 0xfe, 0x91, 0xff, 0x12, 0xaa,
-0x47, 0xb4, 0x7a, 0x76, 0x9a, 0x4f, 0xf0, 0x8a,
-0x93, 0xda, 0x03, 0xc1, 0x0f, 0xf2, 0xf8, 0xeb,
-0xb1, 0xa0, 0xc7, 0x54, 0xbf, 0x45, 0xa7, 0x8e,
-0x30, 0x67, 0x40, 0xb5, 0x71, 0xae, 0xe8, 0x67,
-0x13, 0xf7, 0xc1, 0x3e, 0xb1, 0x21, 0x1e, 0x40,
-0xff, 0xb0, 0x63, 0x1d, 0x1b, 0x6c, 0xb3, 0x31,
-0xda, 0x20, 0xfe, 0xd1, 0x8a, 0x54, 0xe7, 0xba,
-0xc7, 0xfa, 0x73, 0xf8, 0x8b, 0x25, 0xe8, 0xc8,
-0x02, 0x37, 0x29, 0xbd, 0xdb, 0x5b, 0x43, 0x7b,
-0x93, 0xf0, 0xe7, 0xcf, 0x68, 0x31, 0x1c, 0xe5,
-0x23, 0x26, 0x6e, 0x64, 0x0b, 0x13, 0x23, 0x90,
-0x79, 0x7a, 0xae, 0xe5, 0x8b, 0x30, 0xcb, 0x63,
-0x63, 0xf3, 0x2c, 0xec, 0xf6, 0x18, 0x5c, 0xf3,
-0xb3, 0x33, 0x72, 0x9d, 0xdf, 0xfb, 0x99, 0xa3,
-0x14, 0xb6, 0x61, 0xad, 0x4c, 0x89, 0xd3, 0xef,
-0x45, 0x96, 0xdf, 0xe9, 0x67, 0xed, 0xb2, 0x72,
-0xc5, 0xb8, 0x96, 0xee, 0x1e, 0x0d, 0x4c, 0xe2,
-0xf6, 0x33, 0x6a, 0x2d, 0x10, 0x97, 0x98, 0xf4,
-0x0f, 0xff, 0x9c, 0x7c, 0xad, 0xae, 0x5f, 0x91,
-0xe3, 0x91, 0xc7, 0x5f, 0x17, 0x70, 0xbc, 0x6a,
-0x33, 0x95, 0x27, 0xe9, 0x78, 0x9f, 0xd8, 0xae,
-0xb5, 0xf4, 0x9c, 0x7e, 0x1a, 0x38, 0xfe, 0xa1,
-0x8a, 0x9f, 0xda, 0x5f, 0x39, 0xe2, 0x1d, 0x73,
-0x21, 0x68, 0x32, 0xde, 0x25, 0x63, 0x30, 0x70,
-0x40, 0xc9, 0xe3, 0x2f, 0x15, 0x37, 0x4d, 0x13,
-0x91, 0xd4, 0xa4, 0x7a, 0x1a, 0x1d, 0xce, 0xbf,
-0x18, 0x2d, 0x6f, 0xf4, 0x3a, 0xf8, 0x4b, 0xbf,
-0x06, 0x0b, 0x7a, 0x85, 0x57, 0x79, 0xf2, 0xa6,
-0x45, 0x04, 0x34, 0x72, 0xd8, 0xe1, 0x12, 0x3f,
-0x0d, 0x8b, 0x07, 0xfc, 0x97, 0x93, 0x36, 0xff,
-0x45, 0xf8, 0xeb, 0x70, 0x3b, 0xf6, 0xcf, 0xd1,
-0x04, 0xb9, 0xc4, 0x35, 0x04, 0x8e, 0x6c, 0x24,
-0x45, 0x87, 0xf0, 0x47, 0x04, 0x8f, 0x56, 0x36,
-0x02, 0x1d, 0xd6, 0x7c, 0xf2, 0x0f, 0x87, 0x6c,
-0xb0, 0xc6, 0x7e, 0xcf, 0x9e, 0x83, 0x9a, 0x41,
-0x75, 0x13, 0xab, 0xca, 0xe3, 0xaf, 0x9e, 0x8e,
-0xa0, 0x55, 0x8c, 0xae, 0xbe, 0x4e, 0xcf, 0x29,
-0xce, 0x3d, 0xc7, 0xc1, 0x5f, 0x5a, 0xa6, 0x68,
-0x04, 0x36, 0x99, 0x73, 0xc9, 0x0f, 0xff, 0x20,
-0x7f, 0x89, 0x6e, 0x0e, 0x65, 0x82, 0x46, 0x1e,
-0x7f, 0x65, 0xaa, 0xd2, 0x38, 0x5e, 0x65, 0xe4,
-0x4b, 0xac, 0x3d, 0xa9, 0xda, 0xa7, 0x22, 0xfd,
-0x14, 0x0e, 0x87, 0xf8, 0x3d, 0x6d, 0x69, 0x88,
-0x14, 0x18, 0x37, 0x42, 0x03, 0x5f, 0x88, 0xb0,
-0x3e, 0x6c, 0x09, 0x9f, 0xe9, 0x8c, 0xb2, 0x7e,
-0x2b, 0xf9, 0xb9, 0x2a, 0x9a, 0xd4, 0x2e, 0xfc,
-0x35, 0x16, 0xc1, 0xfe, 0xc1, 0x3e, 0x4c, 0x9c,
-0xa0, 0xc3, 0xf3, 0x8c, 0x62, 0x87, 0x21, 0x61,
-0x6f, 0x18, 0x2f, 0x21, 0xfe, 0x0a, 0x8c, 0xfe,
-0x97, 0x49, 0x18, 0x80, 0x45, 0xaf, 0xe3, 0x78,
-0x65, 0x0d, 0xbc, 0xf4, 0x5a, 0xa0, 0x3b, 0x39,
-0x04, 0xe8, 0xfc, 0xeb, 0xde, 0x8c, 0x66, 0xe4,
-0xf1, 0xd7, 0x58, 0xa4, 0xc9, 0xd4, 0xf6, 0x97,
-0x7f, 0x84, 0x43, 0x19, 0x3b, 0x43, 0x1f, 0xf7,
-0x5e, 0x53, 0x9b, 0x06, 0x02, 0xa3, 0xf8, 0x26,
-0x5c, 0xf3, 0x36, 0xf5, 0x06, 0x2e, 0x78, 0x26,
-0xbd, 0xe8, 0x93, 0x0c, 0xe2, 0xa5, 0x2c, 0x22,
-0x32, 0xf1, 0x27, 0xfe, 0xc0, 0x27, 0x8c, 0xa6,
-0x13, 0x81, 0x3c, 0xfe, 0x22, 0x7e, 0x19, 0x08,
-0xf4, 0x25, 0xd1, 0x08, 0x35, 0x0d, 0x95, 0x8e,
-0x2f, 0x45, 0x23, 0xd5, 0x74, 0xac, 0x94, 0x00,
-0xdd, 0xef, 0xb9, 0xa0, 0xc6, 0x8e, 0x9a, 0x43,
-0xbc, 0x69, 0xa0, 0x64, 0x54, 0x50, 0xcf, 0x4d,
-0xd9, 0x55, 0x99, 0xca, 0x30, 0x9c, 0x36, 0x16,
-0xd0, 0xc9, 0xff, 0xba, 0x3c, 0xff, 0xd5, 0x03,
-0xbb, 0x2c, 0x75, 0x52, 0xb0, 0x5d, 0xe1, 0x01,
-0xb5, 0x8b, 0xf8, 0x2f, 0xa3, 0x66, 0x48, 0xed,
-0x60, 0x41, 0xe8, 0xe0, 0xbb, 0x0c, 0xad, 0x43,
-0x89, 0x43, 0x47, 0x7b, 0x2d, 0x62, 0x22, 0x56,
-0x03, 0x47, 0x08, 0x7f, 0xfd, 0xa1, 0xec, 0x9f,
-0x4d, 0x81, 0xda, 0x32, 0xda, 0xba, 0x7c, 0xfc,
-0x21, 0x6e, 0x5b, 0x3c, 0xb7, 0x0c, 0xfa, 0xa2,
-0xe4, 0xcf, 0x1b, 0x68, 0x00, 0x22, 0x32, 0xdc,
-0xb6, 0xac, 0x9b, 0x0d, 0xb6, 0xb9, 0x2d, 0x0d,
-0x6b, 0x07, 0x8b, 0x11, 0x88, 0x79, 0x76, 0x03,
-0x22, 0xdf, 0x48, 0xd9, 0x4a, 0xd6, 0xad, 0x87,
-0xfa, 0x11, 0x52, 0x45, 0xdd, 0xf1, 0x87, 0xf8,
-0x1c, 0x1b, 0x76, 0x59, 0x6e, 0x23, 0x4d, 0x81,
-0x0a, 0x20, 0x9c, 0x9c, 0x0e, 0xb8, 0xdf, 0x05,
-0xed, 0x11, 0xf4, 0xa9, 0xbb, 0x11, 0x9b, 0xe3,
-0xfe, 0xb5, 0x2e, 0x8f, 0xbf, 0xf0, 0x7d, 0x86,
-0xb0, 0xf3, 0xce, 0x97, 0x3a, 0xa0, 0x06, 0x8d,
-0x1f, 0xc3, 0x07, 0x10, 0x6d, 0x2f, 0x4d, 0x51,
-0xa4, 0xca, 0x60, 0x4c, 0x0c, 0xa5, 0x47, 0xe2,
-0x9d, 0xf2, 0x30, 0x9b, 0x80, 0xc3, 0x96, 0x7f,
-0xaf, 0xa2, 0x4f, 0x33, 0x24, 0xfe, 0x3a, 0x8a,
-0x18, 0xb6, 0x29, 0xe4, 0xc6, 0xcb, 0x34, 0x1d,
-0x16, 0x5b, 0xe8, 0xae, 0xdc, 0x43, 0x61, 0x87,
-0x71, 0x11, 0x88, 0x78, 0xd5, 0xbe, 0xe4, 0xc5,
-0x11, 0xb4, 0x4e, 0x8f, 0x26, 0x27, 0xe1, 0x77,
-0xea, 0x1d, 0x7d, 0xb5, 0xe3, 0x8a, 0x8b, 0xff,
-0x22, 0xae, 0xc4, 0x9e, 0xe6, 0x8f, 0x38, 0x20,
-0x0b, 0x61, 0x17, 0x28, 0x73, 0xf4, 0x61, 0x23,
-0xca, 0x4b, 0xc8, 0x05, 0x1d, 0xc0, 0x96, 0xcd,
-0x22, 0xd2, 0x40, 0x7e, 0x1f, 0x7c, 0xd9, 0x3c,
-0x88, 0xbf, 0x82, 0x6e, 0xfe, 0x0b, 0x47, 0xc7,
-0x54, 0x6d, 0xd8, 0xe5, 0xf4, 0x0f, 0x4e, 0xab,
-0x8c, 0xb2, 0x06, 0x92, 0xb4, 0xe3, 0x53, 0x4b,
-0x07, 0x2c, 0x3a, 0x5b, 0xf2, 0x29, 0xfb, 0x37,
-0x93, 0xfa, 0x67, 0xc5, 0xa8, 0xf2, 0x73, 0xd8,
-0x62, 0x55, 0x5e, 0x08, 0x1d, 0x08, 0xd6, 0xe5,
-0xf1, 0xd7, 0x93, 0x3c, 0x6c, 0xda, 0xe3, 0x85,
-0xf3, 0x4b, 0xe2, 0x2f, 0x1a, 0x14, 0xa6, 0x92,
-0x21, 0x2f, 0x71, 0x10, 0xf3, 0x2b, 0x20, 0xf1,
-0x72, 0xa3, 0x00, 0xd7, 0x86, 0xa5, 0x1a, 0xac,
-0x21, 0xcf, 0x7f, 0x1d, 0x48, 0x57, 0xc7, 0x85,
-0xab, 0x4f, 0x07, 0x65, 0x02, 0x64, 0x1d, 0x84,
-0x79, 0x59, 0xc4, 0x71, 0x5e, 0xde, 0xce, 0xe7,
-0xa5, 0xb5, 0x96, 0xa2, 0xd7, 0xe0, 0xe9, 0xf4,
-0x6a, 0x04, 0x62, 0x65, 0x3f, 0x32, 0xf1, 0x9e,
-0x61, 0xed, 0xdb, 0x89, 0x1f, 0x99, 0x1b, 0x3a,
-0x2a, 0xde, 0xc5, 0x5d, 0x38, 0x9c, 0xc7, 0x5f,
-0xe7, 0x33, 0x31, 0x35, 0xdc, 0xa0, 0x10, 0xfe,
-0x0a, 0xf7, 0x97, 0x10, 0xfe, 0xfa, 0x50, 0xaf,
-0xb7, 0x02, 0x1e, 0xa6, 0x59, 0x15, 0x6a, 0x8f,
-0x59, 0x62, 0x2c, 0x1d, 0x61, 0x56, 0xba, 0x6a,
-0xd8, 0x9f, 0x29, 0x2f, 0x6d, 0xff, 0xb5, 0xb7,
-0x31, 0x1b, 0x68, 0x50, 0x9e, 0x40, 0x80, 0x89,
-0xe3, 0x95, 0xd6, 0x5c, 0xf1, 0x87, 0x57, 0xbd,
-0xe8, 0xb4, 0x9f, 0x97, 0xe3, 0x35, 0x50, 0x2a,
-0x0c, 0x63, 0x51, 0x5f, 0xe0, 0x02, 0x2e, 0x56,
-0x97, 0x3d, 0x8b, 0x38, 0x7a, 0x71, 0x17, 0xe0,
-0x23, 0xbd, 0xa9, 0xbf, 0x44, 0x52, 0xcf, 0xd8,
-0xcf, 0x7f, 0x58, 0xfa, 0x53, 0xf3, 0x1a, 0xad,
-0x87, 0xe7, 0xdd, 0xf1, 0x87, 0xb8, 0x0f, 0xa6,
-0xfd, 0x3d, 0x4a, 0x58, 0x9d, 0x50, 0x11, 0x38,
-0xf7, 0x38, 0xf3, 0x3d, 0xa3, 0xbc, 0x03, 0xef,
-0xe0, 0xef, 0x5f, 0x95, 0xf2, 0x64, 0x29, 0xa2,
-0x75, 0x00, 0xd1, 0xf1, 0x29, 0x20, 0x98, 0x1c,
-0x38, 0xaa, 0x94, 0xc0, 0x09, 0x35, 0xda, 0x1f,
-0x4e, 0x57, 0xce, 0xf7, 0x88, 0x79, 0x81, 0xf8,
-0xcb, 0xfb, 0xbc, 0xa7, 0x84, 0xab, 0x0f, 0x24,
-0x66, 0xc1, 0x41, 0xf3, 0x36, 0xcb, 0x37, 0xca,
-0x9e, 0x06, 0x71, 0xb8, 0x67, 0xe2, 0x76, 0xf3,
-0x3f, 0x69, 0xff, 0x8a, 0xa3, 0xd1, 0x8e, 0x3f,
-0x39, 0x87, 0xbf, 0x10, 0xac, 0xcd, 0x6a, 0xdb,
-0x62, 0x1a, 0x03, 0xd8, 0xcf, 0x51, 0x39, 0xee,
-0x16, 0xfc, 0x68, 0xc6, 0x81, 0xf6, 0xb5, 0xd9,
-0xe2, 0xbb, 0xd8, 0x6c, 0xe8, 0x46, 0x20, 0x56,
-0x4c, 0x81, 0x88, 0x82, 0x67, 0x6c, 0x11, 0x81,
-0x88, 0xf3, 0x24, 0xed, 0xb5, 0x87, 0x57, 0x0f,
-0xa9, 0xeb, 0x8b, 0x68, 0x2c, 0xe6, 0x65, 0x6f,
-0xb9, 0x93, 0x3d, 0x42, 0x38, 0x37, 0x8b, 0xfd,
-0x9c, 0x76, 0xf1, 0x5f, 0xf1, 0xf0, 0x50, 0x71,
-0x24, 0x48, 0xcb, 0xa0, 0x18, 0xee, 0xcd, 0xd0,
-0xcd, 0xd6, 0x4a, 0x70, 0x9d, 0x5c, 0x69, 0x9c,
-0xb9, 0x05, 0x77, 0x4f, 0xe0, 0x3c, 0x6c, 0xcd,
-0x8c, 0xc8, 0xa3, 0x45, 0x8a, 0xc0, 0xa1, 0x43,
-0x30, 0x5c, 0x25, 0xee, 0x64, 0xdb, 0xf2, 0xf8,
-0x0b, 0xdf, 0xf9, 0x54, 0x75, 0x5a, 0x09, 0x61,
-0x47, 0xd5, 0x51, 0xfc, 0x21, 0x9d, 0x5a, 0x4b,
-0x22, 0xcc, 0xd8, 0x05, 0x0d, 0x08, 0xc4, 0x92,
-0x1f, 0xf0, 0x8f, 0x77, 0x34, 0x38, 0xd0, 0xac,
-0x81, 0x2e, 0xd5, 0x8b, 0x60, 0x45, 0x7f, 0x76,
-0xc5, 0xe1, 0xc2, 0xf8, 0x43, 0xc1, 0x76, 0x8d,
-0x7a, 0x73, 0xb4, 0x57, 0xcc, 0xc6, 0x5f, 0xa6,
-0xe4, 0xbf, 0x22, 0x39, 0x68, 0x36, 0xec, 0x3e,
-0x72, 0x0f, 0x80, 0xe7, 0xee, 0xa9, 0xfc, 0x97,
-0xcd, 0x0e, 0x04, 0x52, 0x95, 0x76, 0x8b, 0xae,
-0xac, 0x86, 0x71, 0x53, 0xc0, 0xae, 0xd5, 0xc2,
-0x4d, 0x45, 0x68, 0x36, 0xd7, 0xb9, 0xf9, 0x5d,
-0x76, 0x4c, 0xef, 0x22, 0x0f, 0xd6, 0x85, 0xbf,
-0x0e, 0xe9, 0x39, 0x96, 0xaa, 0xce, 0x31, 0x1a,
-0x24, 0xdb, 0x75, 0xe8, 0xd8, 0x7c, 0xd9, 0x82,
-0x6e, 0xf3, 0xea, 0x50, 0xca, 0x37, 0xc7, 0x14,
-0xf8, 0x6b, 0x3b, 0xc3, 0x27, 0x9b, 0xc1, 0xd6,
-0xd0, 0x76, 0x5f, 0x01, 0xff, 0x35, 0xdf, 0xbc,
-0x45, 0xd2, 0x67, 0x41, 0xc2, 0x56, 0x39, 0xf8,
-0xf6, 0x20, 0xfc, 0x1c, 0x2a, 0x09, 0x7f, 0x7d,
-0x89, 0x4e, 0x33, 0x5a, 0x8b, 0xf1, 0x92, 0x21,
-0x2e, 0x3d, 0x8d, 0xf7, 0x3c, 0xa5, 0x06, 0x5b,
-0x71, 0xc6, 0xe5, 0xf1, 0x17, 0xec, 0x0f, 0x85,
-0x6d, 0xb6, 0x0b, 0xaa, 0x96, 0xdd, 0x72, 0x13,
-0x19, 0x7a, 0xc8, 0xd4, 0xee, 0x4e, 0x7c, 0x29,
-0xfd, 0x3c, 0xcc, 0x23, 0xe3, 0xf5, 0xec, 0x4e,
-0x44, 0x0a, 0xc5, 0x65, 0x36, 0xfe, 0xc2, 0xc9,
-0xb0, 0x92, 0xb7, 0x19, 0x46, 0x8b, 0x7a, 0xf3,
-0xa6, 0x02, 0xfe, 0xab, 0x41, 0x0d, 0x24, 0x12,
-0x59, 0xef, 0xd8, 0xfc, 0xa8, 0x4e, 0x81, 0x64,
-0x80, 0xbb, 0x8c, 0x2f, 0x90, 0x50, 0xe2, 0x9c,
-0xdc, 0x66, 0x34, 0xfe, 0x32, 0x81, 0xdd, 0x3b,
-0xbb, 0xf8, 0x51, 0xbb, 0x7b, 0xa7, 0x3f, 0xaa,
-0x9c, 0x6b, 0x3d, 0xd3, 0x1a, 0x9d, 0xe1, 0x4f,
-0xb0, 0x9f, 0xe5, 0xf9, 0xaf, 0x2b, 0xa1, 0xa6,
-0xe5, 0x5a, 0x6a, 0x89, 0xe8, 0xde, 0x2f, 0x04,
-0xb6, 0x51, 0x87, 0x1b, 0x0d, 0x92, 0xc9, 0x72,
-0x86, 0x80, 0xff, 0x3b, 0x05, 0xb6, 0x6d, 0x75,
-0x28, 0x2d, 0xe2, 0xbf, 0xc6, 0xf5, 0xd8, 0x14,
-0xfe, 0xeb, 0x0a, 0xc4, 0x96, 0xb8, 0xd0, 0xb1,
-0xfd, 0xf1, 0xe9, 0xd4, 0xf2, 0x87, 0x3c, 0x70,
-0x6e, 0x42, 0x8c, 0xa6, 0xcc, 0x90, 0xf8, 0x62,
-0x50, 0x59, 0x88, 0xa8, 0x8d, 0x22, 0x12, 0x6f,
-0xc0, 0x7f, 0x39, 0x46, 0x33, 0xc5, 0x1f, 0xd6,
-0xc0, 0xad, 0xb2, 0xe5, 0x59, 0xb0, 0x0f, 0xa6,
-0x6c, 0x44, 0x76, 0x06, 0x1a, 0xb0, 0x05, 0x87,
-0x89, 0x23, 0xfe, 0x0a, 0xf1, 0xe5, 0xee, 0xf8,
-0x43, 0x08, 0x2f, 0xc9, 0x61, 0x58, 0x8a, 0x36,
-0x74, 0x0c, 0x41, 0x72, 0xe5, 0x2f, 0x49, 0x44,
-0x86, 0xf8, 0x6b, 0x85, 0x5e, 0xe6, 0x65, 0x6d,
-0x40, 0xde, 0x05, 0xbb, 0xdb, 0xc5, 0x7f, 0xf1,
-0xfb, 0x5b, 0xdd, 0x68, 0xbd, 0x4a, 0x84, 0x9b,
-0xb2, 0xad, 0xa2, 0xc5, 0x7e, 0x7f, 0x0e, 0x19,
-0x61, 0x81, 0xc8, 0x7c, 0x4f, 0x51, 0x8b, 0x8e,
-0xf7, 0x10, 0xc4, 0x53, 0xb7, 0x17, 0x39, 0xf8,
-0xeb, 0x26, 0xd1, 0x2d, 0x7f, 0xb9, 0x4a, 0x80,
-0x23, 0x57, 0xff, 0x2c, 0xd1, 0x7e, 0x80, 0xdd,
-0x72, 0x28, 0x85, 0xfd, 0xb3, 0x1d, 0xbd, 0x8b,
-0x43, 0x66, 0x4c, 0x00, 0xb1, 0x5c, 0x0c, 0x27,
-0x13, 0x64, 0xd9, 0x0e, 0x17, 0xfe, 0x9a, 0x4a,
-0x07, 0xa3, 0xf1, 0xbe, 0x3c, 0xa9, 0xc0, 0x96,
-0x0e, 0xf7, 0x25, 0x5d, 0x19, 0x32, 0x5c, 0x31,
-0xa5, 0x38, 0xa6, 0xdb, 0x94, 0x37, 0x5d, 0xf1,
-0x87, 0x10, 0xd3, 0x6d, 0x92, 0xab, 0xce, 0x99,
-0x83, 0x51, 0xf0, 0xb7, 0xdb, 0x86, 0x7c, 0xa3,
-0x96, 0x44, 0xa7, 0x89, 0xc0, 0x80, 0x33, 0x5e,
-0x9b, 0xff, 0xc2, 0x1d, 0x8d, 0xe1, 0xab, 0xb5,
-0xdc, 0xc5, 0x7f, 0x19, 0x44, 0x72, 0x89, 0xa0,
-0xd0, 0x20, 0xc1, 0x2e, 0x69, 0xa8, 0x84, 0xbf,
-0x5e, 0xe8, 0x98, 0x8f, 0x2d, 0x41, 0x42, 0x64,
-0xb7, 0x71, 0xf5, 0x03, 0xf6, 0x86, 0xb1, 0x89,
-0xf8, 0xaf, 0x6c, 0x73, 0x03, 0x3c, 0x01, 0x0b,
-0xd2, 0xda, 0x10, 0x73, 0xc5, 0x1f, 0xee, 0xe7,
-0xf6, 0xe9, 0x2e, 0xc5, 0xd2, 0x08, 0xb4, 0x45,
-0xc7, 0x47, 0x22, 0xde, 0x66, 0x3f, 0x37, 0x1c,
-0xda, 0xcb, 0xe8, 0xc3, 0x7b, 0x5e, 0x76, 0xce,
-0x7b, 0xc3, 0x66, 0x12, 0xaa, 0x06, 0xf1, 0x95,
-0xc8, 0xe3, 0x2f, 0x0f, 0xae, 0xc6, 0xb8, 0x66,
-0x12, 0xd5, 0xc2, 0x2b, 0xec, 0x63, 0xb1, 0xb4,
-0x91, 0x15, 0xab, 0xf1, 0x01, 0x36, 0x4f, 0xb6,
-0xbc, 0xc4, 0x43, 0x5c, 0x8d, 0xb3, 0x41, 0xb9,
-0x3e, 0xc7, 0x8b, 0x66, 0xc2, 0x06, 0xb5, 0xa2,
-0x15, 0xd7, 0xf0, 0xbd, 0x79, 0xfe, 0xeb, 0x53,
-0xde, 0xf8, 0x4e, 0xb8, 0x5e, 0x99, 0x0d, 0x17,
-0x13, 0x77, 0x4c, 0x06, 0x1e, 0x46, 0xd8, 0x75,
-0x0d, 0xb1, 0x55, 0x29, 0xe1, 0xaf, 0x4b, 0xfc,
-0x76, 0x01, 0xc4, 0xac, 0x4f, 0xf9, 0xed, 0xf1,
-0x95, 0xeb, 0x71, 0xa1, 0xfe, 0x2d, 0x41, 0x33,
-0x55, 0x29, 0x85, 0x5f, 0xf0, 0x3b, 0xd2, 0x81,
-0x33, 0xca, 0xd7, 0x0b, 0xf8, 0xaf, 0x33, 0x82,
-0xf6, 0x3a, 0x22, 0xb7, 0x1b, 0xe1, 0xcf, 0xa3,
-0x03, 0x2c, 0x82, 0x73, 0xec, 0x80, 0x99, 0x8b,
-0x34, 0x4c, 0x14, 0x76, 0x28, 0xb6, 0x24, 0xfe,
-0xe7, 0x23, 0x04, 0x55, 0x97, 0x94, 0xa4, 0x5c,
-0xfc, 0x97, 0x39, 0x61, 0x10, 0xc8, 0x62, 0x31,
-0xc4, 0x56, 0x77, 0x65, 0x05, 0xfe, 0x9a, 0xd8,
-0x11, 0x1b, 0x12, 0x6c, 0xce, 0x25, 0x8a, 0x3f,
-0xec, 0xf1, 0x5c, 0x35, 0xae, 0xf1, 0xba, 0x21,
-0xff, 0x19, 0xe5, 0x6e, 0xf8, 0x24, 0x65, 0xe3,
-0xaf, 0x13, 0x89, 0x05, 0xd9, 0xf0, 0x80, 0x9b,
-0xff, 0x3a, 0x82, 0xdd, 0xb2, 0x22, 0xe2, 0x9b,
-0x25, 0x4e, 0x0b, 0x25, 0x3f, 0x48, 0xfb, 0xce,
-0xba, 0xc4, 0x49, 0x38, 0x90, 0x99, 0xd7, 0x17,
-0xf8, 0x8e, 0x80, 0x54, 0x46, 0xda, 0x17, 0xc7,
-0xdf, 0xb0, 0x21, 0xdd, 0x68, 0x69, 0x6b, 0xd8,
-0x9b, 0xe6, 0xa3, 0xe9, 0x45, 0x5c, 0x35, 0x95,
-0xaf, 0xe7, 0xf0, 0x97, 0x77, 0x91, 0x29, 0xba,
-0x77, 0x96, 0x8a, 0xee, 0x81, 0x55, 0x80, 0xbf,
-0xe0, 0x05, 0xb0, 0x7b, 0xfe, 0x25, 0x98, 0x03,
-0xea, 0x5f, 0x32, 0x1d, 0x9e, 0xa1, 0x4b, 0x26,
-0x7b, 0x1d, 0xd7, 0xb1, 0x0a, 0x0a, 0xc5, 0xc9,
-0xf3, 0x5f, 0xce, 0x71, 0xb1, 0x5f, 0xcd, 0x0d,
-0x37, 0x39, 0x9c, 0xb7, 0xd4, 0x27, 0x5e, 0x35,
-0x32, 0x2d, 0x7b, 0xdf, 0xf1, 0x45, 0x12, 0x9f,
-0x40, 0xf7, 0x40, 0x10, 0x98, 0xc1, 0x54, 0x96,
-0xa4, 0x3d, 0x8e, 0xe3, 0xcc, 0xe5, 0x50, 0xc5,
-0xd5, 0xed, 0xac, 0xc5, 0xc1, 0x5f, 0xd8, 0xcf,
-0xe8, 0x09, 0x07, 0xa4, 0x1b, 0x2f, 0xf8, 0xa6,
-0x11, 0x19, 0x2d, 0x76, 0x00, 0x3b, 0x61, 0x9c,
-0x47, 0x2d, 0xed, 0x80, 0x72, 0xcd, 0xb8, 0x98,
-0xad, 0xb3, 0x38, 0x7a, 0xef, 0xb8, 0xbf, 0xd7,
-0x58, 0x62, 0xa6, 0x1c, 0x67, 0x51, 0xcb, 0xdf,
-0xa6, 0xb8, 0xf8, 0xaf, 0x8b, 0xf4, 0xa9, 0x48,
-0x0e, 0x5b, 0x2d, 0xcd, 0xf3, 0x5f, 0x26, 0x05,
-0x19, 0x06, 0xf6, 0xcb, 0x4b, 0x74, 0xd2, 0xbe,
-0x53, 0x5c, 0xba, 0x35, 0xa3, 0x9c, 0x23, 0x28,
-0x6d, 0x8a, 0x13, 0x45, 0xc3, 0xc6, 0x5f, 0x70,
-0x4d, 0xff, 0x16, 0x7d, 0xaa, 0x91, 0x0e, 0x90,
-0xd1, 0x99, 0x5c, 0x9a, 0x77, 0x38, 0x11, 0x08,
-0x2e, 0x92, 0x40, 0xe3, 0x77, 0x50, 0x97, 0x45,
-0xbf, 0x25, 0x02, 0xa7, 0xf1, 0xd2, 0x2a, 0x4b,
-0xb9, 0x0d, 0x7f, 0xd9, 0x82, 0x34, 0xae, 0x87,
-0xa6, 0x9b, 0xff, 0xaa, 0xb4, 0x56, 0xe4, 0xe1,
-0x92, 0xb2, 0x36, 0xcf, 0x7f, 0x65, 0xa0, 0xce,
-0x7a, 0x42, 0xa0, 0x24, 0x36, 0x3f, 0xee, 0x3b,
-0xc0, 0x14, 0xdc, 0x80, 0xf0, 0xd2, 0xbf, 0x34,
-0x3f, 0x87, 0x48, 0x6a, 0x7e, 0x3c, 0xb4, 0x83,
-0x19, 0x76, 0xbc, 0x9f, 0xe0, 0xbf, 0x04, 0xb5,
-0xb1, 0xd6, 0x0d, 0xbb, 0x6c, 0xa3, 0xc7, 0x61,
-0x3d, 0x10, 0x88, 0xf5, 0xcf, 0xd7, 0x13, 0x55,
-0x71, 0x71, 0xce, 0x9f, 0x62, 0xed, 0xc6, 0x0f,
-0xd4, 0xaa, 0x16, 0x75, 0x2f, 0xcb, 0xe3, 0x2f,
-0x7f, 0xb7, 0xb1, 0x87, 0x40, 0x56, 0x8e, 0xb0,
-0x16, 0x71, 0x56, 0xc7, 0x3b, 0x11, 0x41, 0x9b,
-0x19, 0x56, 0x25, 0xe7, 0x69, 0xa7, 0x19, 0x02,
-0x84, 0x66, 0x40, 0xe7, 0x24, 0xfd, 0x5a, 0x94,
-0xb5, 0xf1, 0xad, 0x6a, 0x18, 0xd4, 0xfa, 0x02,
-0xfe, 0x2b, 0xfe, 0x79, 0x1c, 0x1d, 0x8d, 0xa6,
-0xc3, 0x62, 0x49, 0x10, 0x1f, 0x91, 0x07, 0x14,
-0x1f, 0xc1, 0x65, 0xe3, 0x05, 0xf2, 0x96, 0x27,
-0xe1, 0x2d, 0x88, 0x4e, 0x9b, 0xa5, 0x2b, 0x86,
-0x79, 0x82, 0xdc, 0xb9, 0xa4, 0xb6, 0x93, 0xef,
-0x30, 0xea, 0x00, 0x9d, 0x6d, 0x37, 0xff, 0x55,
-0x7f, 0x97, 0x4d, 0x7b, 0x51, 0x1f, 0x92, 0x13,
-0x78, 0xcd, 0xb4, 0xfb, 0x79, 0x4c, 0x6f, 0xb2,
-0x4a, 0x2f, 0x21, 0x50, 0xfd, 0xd4, 0xb8, 0xcb,
-0x5b, 0x3a, 0x5a, 0x3e, 0xca, 0x27, 0xe8, 0xc4,
-0xfe, 0xd7, 0x0a, 0x25, 0x47, 0xdc, 0x05, 0x78,
-0xcf, 0x5e, 0x37, 0xfe, 0x6a, 0x4a, 0x94, 0x58,
-0x95, 0xf8, 0xf5, 0x8d, 0x6e, 0xff, 0xda, 0x0b,
-0x74, 0xd0, 0x01, 0x4d, 0xbd, 0xd3, 0x71, 0x7e,
-0xb1, 0xd3, 0xbc, 0x3b, 0x5b, 0x35, 0x36, 0x3d,
-0xe6, 0x7d, 0x9e, 0x37, 0x01, 0x8e, 0x8e, 0x18,
-0x2f, 0xa3, 0xb4, 0x47, 0xa9, 0x81, 0xd3, 0xbc,
-0xc9, 0xc4, 0xe7, 0x8c, 0xe6, 0xf0, 0x97, 0x8e,
-0xbd, 0x9a, 0x52, 0x7f, 0x0e, 0xd5, 0xd9, 0xce,
-0xfe, 0xe0, 0x49, 0x75, 0x63, 0xd1, 0x08, 0x7f,
-0xc9, 0xb0, 0x77, 0x34, 0x3b, 0x5a, 0x23, 0x9c,
-0x3a, 0xc4, 0xd1, 0xe7, 0xdf, 0x81, 0xb3, 0xa0,
-0x93, 0xd7, 0x18, 0x25, 0x11, 0x5f, 0x18, 0x92,
-0x0c, 0x37, 0x97, 0x31, 0xf4, 0x99, 0x5c, 0xf1,
-0x87, 0x94, 0xf6, 0x55, 0x06, 0xbc, 0x4d, 0x37,
-0x00, 0x5d, 0xc7, 0x93, 0xde, 0x6e, 0xd5, 0x66,
-0xff, 0x85, 0xd3, 0xae, 0x0b, 0xfe, 0x0b, 0x7b,
-0x55, 0x67, 0x1c, 0x5b, 0x6a, 0x00, 0xe7, 0xce,
-0x66, 0x26, 0x38, 0x97, 0x08, 0xbb, 0x90, 0xc3,
-0x5f, 0xf4, 0x7d, 0xb8, 0x2f, 0xd3, 0x1c, 0xe6,
-0x9b, 0xe4, 0x91, 0x20, 0xf5, 0xf3, 0x5c, 0x58,
-0xc1, 0xcb, 0x2c, 0xa0, 0x1d, 0x14, 0x9f, 0x3c,
-0x82, 0xfb, 0x57, 0x4d, 0xb3, 0xda, 0xc3, 0x42,
-0x04, 0xb7, 0x67, 0x16, 0xd3, 0x98, 0x76, 0x42,
-0x69, 0x1c, 0x5f, 0x89, 0xd1, 0x7c, 0xfe, 0xd7,
-0x84, 0x1c, 0x9d, 0x2a, 0x71, 0xd0, 0x21, 0x38,
-0xd6, 0x6b, 0x34, 0x0b, 0x0e, 0x2b, 0x23, 0xfc,
-0x04, 0x65, 0xc3, 0x75, 0xe1, 0xd4, 0x1b, 0xa7,
-0xa3, 0xfb, 0xa3, 0xda, 0x5c, 0xc4, 0xd4, 0x31,
-0x60, 0x14, 0xb2, 0x7b, 0x02, 0x6a, 0x42, 0x81,
-0x8c, 0xc7, 0xca, 0xc7, 0x1f, 0xd2, 0x74, 0x28,
-0x01, 0xed, 0x38, 0xfc, 0xc1, 0xbb, 0x58, 0xc4,
-0x1f, 0x7a, 0xae, 0xb1, 0xa6, 0xd6, 0xc0, 0x31,
-0x8a, 0x98, 0x12, 0xd1, 0xa1, 0x5a, 0x23, 0x22,
-0xb2, 0xc6, 0xa1, 0xda, 0x75, 0xca, 0xd5, 0x65,
-0x38, 0x04, 0x86, 0x88, 0x29, 0x6d, 0xa2, 0x15,
-0x92, 0xc6, 0x34, 0x87, 0xbf, 0x88, 0xf6, 0x2a,
-0xa1, 0xef, 0x73, 0x82, 0xf0, 0x97, 0x0c, 0x18,
-0x46, 0x5f, 0x34, 0x33, 0x7d, 0x44, 0x9d, 0x98,
-0x16, 0xb3, 0xa6, 0xa7, 0x96, 0x8e, 0x78, 0x8f,
-0x79, 0xa3, 0x29, 0xe2, 0xe3, 0xb6, 0x9f, 0xf0,
-0xc4, 0xf4, 0x2d, 0xb8, 0x38, 0xb4, 0x4f, 0x40,
-0x17, 0xbd, 0x3f, 0xaf, 0x17, 0xc6, 0x1f, 0x9a,
-0x32, 0x85, 0xe1, 0x7e, 0x50, 0x53, 0xf8, 0x9d,
-0x5f, 0x82, 0xf9, 0x2d, 0x2a, 0xcd, 0x65, 0xe1,
-0x81, 0xd0, 0x93, 0x3b, 0xe1, 0xb3, 0x96, 0xfa,
-0x63, 0xf6, 0x11, 0x6c, 0xa1, 0x48, 0xc2, 0x03,
-0x89, 0x6a, 0x38, 0xd2, 0x1a, 0x34, 0xd5, 0xcb,
-0xec, 0x82, 0x3b, 0xfe, 0x30, 0x6d, 0x15, 0xc3,
-0xcd, 0x2a, 0x2e, 0x22, 0x6b, 0xc1, 0xe1, 0x41,
-0x4c, 0x0a, 0x37, 0xf5, 0x88, 0x28, 0x53, 0x1c,
-0x41, 0x8a, 0xb7, 0xa1, 0xf1, 0x5a, 0x82, 0xc8,
-0x2e, 0x0c, 0x9b, 0x1a, 0x37, 0xd1, 0x66, 0xb7,
-0x86, 0xfc, 0x8d, 0xb1, 0x5c, 0xfe, 0x17, 0x05,
-0xbf, 0x65, 0x43, 0x0f, 0xb1, 0xcf, 0xc2, 0x86,
-0xc4, 0xda, 0x6c, 0x47, 0x8b, 0xc0, 0x5f, 0xb8,
-0x66, 0xae, 0x67, 0x3f, 0xe2, 0xdf, 0x6f, 0xab,
-0xce, 0x16, 0xdf, 0x83, 0x2d, 0x8f, 0xb7, 0xcd,
-0x09, 0xa9, 0xf7, 0xb0, 0xd7, 0xf8, 0x06, 0x5e,
-0x1b, 0xf2, 0x21, 0x76, 0xd0, 0x0f, 0xb6, 0xfd,
-0x3d, 0xa1, 0xb6, 0x91, 0x3c, 0xfe, 0xba, 0xc8,
-0x83, 0x56, 0x89, 0x4f, 0xf1, 0x25, 0x7a, 0x21,
-0x1c, 0xf2, 0x1b, 0xca, 0x49, 0xff, 0x44, 0x59,
-0xf0, 0x4f, 0xfd, 0xc0, 0xfa, 0xf8, 0xa8, 0x4e,
-0x11, 0x89, 0xb8, 0x25, 0xf5, 0xa6, 0x22, 0x59,
-0xff, 0x0c, 0xc4, 0x3b, 0x2f, 0x43, 0x63, 0xa8,
-0xb4, 0x41, 0x29, 0x4d, 0x5d, 0x4c, 0xd7, 0x0f,
-0x23, 0x6a, 0x7b, 0x2d, 0x8f, 0xbf, 0x68, 0x5a,
-0xd5, 0x9e, 0x57, 0x2e, 0x99, 0x08, 0x10, 0xfa,
-0xab, 0x07, 0x25, 0xbf, 0xdc, 0x41, 0x88, 0xcc,
-0x9c, 0x90, 0x11, 0x89, 0x47, 0xd9, 0x15, 0x6f,
-0x53, 0xbf, 0x08, 0x25, 0x9d, 0x80, 0x46, 0x28,
-0x39, 0xaf, 0x8d, 0x98, 0xd7, 0xf4, 0xba, 0xfe,
-0x42, 0xfc, 0x45, 0x6b, 0x66, 0x49, 0x46, 0x0b,
-0xe3, 0xfb, 0xd3, 0x90, 0x15, 0x5c, 0xf6, 0xc4,
-0x3d, 0x0d, 0x10, 0xa0, 0xe3, 0x88, 0x33, 0xe4,
-0xfc, 0x53, 0x3f, 0x8f, 0x53, 0xfe, 0x57, 0x0a,
-0x7b, 0xbe, 0x13, 0xbf, 0x21, 0x01, 0x79, 0xfd,
-0x04, 0x08, 0xb0, 0x96, 0xc7, 0x5f, 0x08, 0xbb,
-0x6a, 0x71, 0x27, 0x62, 0x11, 0xfd, 0x51, 0xa8,
-0x05, 0xd5, 0x4c, 0xe4, 0x68, 0x2f, 0x3b, 0xf4,
-0xa5, 0xf5, 0xbf, 0x3c, 0x0d, 0xcf, 0xd3, 0xa5,
-0x56, 0x36, 0xaa, 0x6f, 0x30, 0x04, 0xed, 0xd5,
-0x08, 0x22, 0xee, 0x3d, 0xe2, 0xc2, 0x5f, 0xd8,
-0xcf, 0xd5, 0x69, 0x5c, 0x91, 0x28, 0xff, 0xab,
-0xfa, 0xdc, 0xa6, 0x35, 0xc4, 0x7f, 0x71, 0xc1,
-0x7f, 0x95, 0x89, 0xb0, 0x43, 0x11, 0x91, 0xf8,
-0x3c, 0x5e, 0xa2, 0x0e, 0xf7, 0x6c, 0x48, 0xd6,
-0xc6, 0x37, 0x3a, 0xc9, 0x62, 0xd8, 0xcf, 0x86,
-0x3b, 0xfe, 0xb0, 0x66, 0x87, 0x5a, 0x5a, 0xe6,
-0xe1, 0x08, 0xb2, 0x3e, 0xeb, 0xd3, 0xc5, 0x71,
-0x71, 0xe8, 0xcc, 0x7f, 0x93, 0x9e, 0x8c, 0x40,
-0x5b, 0x9b, 0xd1, 0xc3, 0x47, 0x48, 0x3e, 0x8d,
-0x9d, 0xec, 0x4d, 0x42, 0x58, 0x45, 0x38, 0xe0,
-0xa7, 0x18, 0xf2, 0x21, 0xfc, 0x3e, 0x85, 0xf1,
-0x87, 0x29, 0xff, 0x3e, 0x65, 0x1e, 0x1c, 0x57,
-0x63, 0x99, 0xd2, 0xb4, 0x47, 0xc4, 0x1f, 0x22,
-0xec, 0xd2, 0x42, 0x76, 0x68, 0x22, 0x3a, 0x54,
-0x97, 0x79, 0x13, 0xf7, 0x0c, 0x97, 0x5f, 0x46,
-0xbf, 0xa9, 0xb6, 0x43, 0x60, 0xb4, 0x4d, 0xb0,
-0x20, 0x85, 0x2f, 0xff, 0x94, 0xf8, 0xc3, 0x9a,
-0x5e, 0x9b, 0xed, 0x2a, 0xb1, 0x04, 0xff, 0x75,
-0x90, 0x26, 0x5a, 0xc6, 0xe6, 0xbf, 0xca, 0x85,
-0xef, 0xe7, 0xfd, 0x19, 0x4f, 0x5a, 0xe2, 0xe6,
-0x5a, 0x4e, 0x4c, 0x8d, 0x4c, 0xea, 0x9c, 0x12,
-0x7f, 0xe8, 0xd7, 0x35, 0x2f, 0x11, 0x61, 0x4b,
-0xb6, 0x48, 0x2e, 0x20, 0xe8, 0xf6, 0x3c, 0x99,
-0xf4, 0x45, 0x4b, 0x77, 0x08, 0xda, 0x2b, 0x66,
-0xa2, 0xbb, 0xf2, 0x13, 0x27, 0xd5, 0xa8, 0xcf,
-0x85, 0xbf, 0xd0, 0x5b, 0x9e, 0x29, 0xd9, 0x8a,
-0x06, 0xf3, 0x04, 0x7a, 0xcb, 0xfa, 0x1b, 0x39,
-0xfe, 0xcb, 0x53, 0x63, 0x9e, 0x4e, 0x35, 0xa3,
-0xa1, 0xe0, 0x7a, 0xb8, 0x9d, 0xbd, 0x07, 0x1b,
-0x3d, 0x7e, 0x74, 0xa4, 0x77, 0x55, 0xb1, 0x37,
-0x88, 0xdb, 0x4a, 0x15, 0x65, 0x0b, 0xe3, 0x0f,
-0x67, 0xca, 0xd8, 0xc2, 0x5a, 0x07, 0xb5, 0xfd,
-0x4c, 0xf2, 0x5f, 0x3f, 0x77, 0x47, 0x24, 0x36,
-0x7c, 0x8f, 0x2e, 0xe1, 0x72, 0xda, 0x81, 0xfb,
-0x97, 0xb9, 0x51, 0x30, 0x62, 0x65, 0xaf, 0x14,
-0xe2, 0x2f, 0xca, 0xff, 0xca, 0x3e, 0x1a, 0xaa,
-0xfe, 0x22, 0xa2, 0xad, 0x65, 0xad, 0x5b, 0xeb,
-0xe7, 0x2c, 0x2f, 0x6e, 0x2d, 0x7a, 0x9d, 0x52,
-0x57, 0x4c, 0xad, 0x15, 0xfa, 0x4d, 0xc2, 0x05,
-0x66, 0x59, 0xa2, 0x3f, 0xd1, 0x66, 0xdc, 0x2f,
-0x01, 0xc2, 0x56, 0x19, 0xa3, 0xe8, 0xce, 0xff,
-0x32, 0x62, 0x6a, 0x28, 0x51, 0x5e, 0x41, 0x44,
-0xd8, 0xcc, 0x40, 0x1f, 0xf6, 0x61, 0x47, 0x3c,
-0xa6, 0x06, 0x1c, 0xe6, 0x71, 0x95, 0xf5, 0x79,
-0xec, 0xd5, 0x69, 0xb1, 0xd9, 0x9b, 0x12, 0xe5,
-0xe7, 0xcc, 0x01, 0xe2, 0x38, 0xa6, 0x55, 0xfe,
-0x6b, 0x73, 0x5f, 0x6b, 0x94, 0x50, 0xdb, 0xc7,
-0xae, 0xf8, 0x43, 0xc9, 0x7f, 0xad, 0xe6, 0xe8,
-0xa2, 0xb7, 0x4c, 0x1f, 0x44, 0xb4, 0x85, 0xf8,
-0x2b, 0x1f, 0x6d, 0x58, 0x8a, 0x46, 0xfb, 0x15,
-0x9b, 0xae, 0x42, 0xd8, 0xd5, 0x24, 0x89, 0x95,
-0x2b, 0xb0, 0x98, 0x3e, 0xe5, 0xca, 0xff, 0x22,
-0x34, 0xe1, 0xb7, 0xd3, 0xbe, 0xa4, 0x41, 0x68,
-0xab, 0x94, 0x8c, 0x63, 0x1e, 0xbb, 0xe5, 0x1c,
-0x9d, 0x09, 0x13, 0xec, 0x3a, 0x06, 0x8d, 0x04,
-0xbb, 0x16, 0xc2, 0xff, 0x84, 0x88, 0xe9, 0x6f,
-0x55, 0x5e, 0x29, 0xc4, 0x5f, 0x44, 0x72, 0xe1,
-0xab, 0x65, 0x40, 0x89, 0x13, 0x7f, 0xe8, 0x8a,
-0x36, 0x44, 0x14, 0xd0, 0xc1, 0xe6, 0xf3, 0x6a,
-0x82, 0x5d, 0x1d, 0x32, 0x94, 0x82, 0x3b, 0x5b,
-0xdb, 0xa9, 0x02, 0xfc, 0x25, 0xc3, 0x0e, 0x29,
-0xed, 0x4b, 0xb0, 0x54, 0x2e, 0xfe, 0x4b, 0x66,
-0x7b, 0xe9, 0x1b, 0x99, 0x61, 0x16, 0xcf, 0xa4,
-0x96, 0xa2, 0x1a, 0xa7, 0x9f, 0xab, 0xc8, 0x78,
-0xcd, 0xc6, 0x5f, 0x37, 0xc9, 0xf8, 0x43, 0xb5,
-0x20, 0x08, 0x9c, 0x5a, 0xdc, 0x61, 0xe1, 0x5e,
-0xb6, 0xd1, 0x3b, 0xdf, 0x2c, 0xde, 0xc6, 0xe6,
-0x70, 0x04, 0xf2, 0xf7, 0x84, 0xf4, 0xe0, 0x1e,
-0xdc, 0x10, 0xe7, 0x2e, 0xa3, 0xbc, 0xbf, 0xc2,
-0xf8, 0xc3, 0xb0, 0xe8, 0x1f, 0x33, 0x6a, 0xaa,
-0x33, 0x3a, 0x25, 0x98, 0xad, 0x91, 0xfc, 0x57,
-0x97, 0x19, 0xde, 0xa1, 0x89, 0xfe, 0x59, 0x57,
-0xb2, 0xdd, 0x43, 0x2d, 0x8d, 0xad, 0x7e, 0xfa,
-0x13, 0x6f, 0x08, 0x6a, 0x4c, 0x19, 0xb6, 0xf1,
-0x4e, 0x0e, 0x7f, 0x69, 0x43, 0xb0, 0x9f, 0x35,
-0x3a, 0xb1, 0x85, 0x8d, 0xf4, 0xf2, 0x3b, 0xc4,
-0xe5, 0x52, 0x71, 0x4f, 0x8b, 0xe6, 0x64, 0x84,
-0xd9, 0x53, 0xe6, 0x70, 0xfc, 0x74, 0xaa, 0x10,
-0x7f, 0x45, 0xc0, 0xef, 0xc4, 0x1f, 0xb6, 0x3b,
-0x6c, 0x57, 0xfe, 0x30, 0x84, 0x97, 0x67, 0x19,
-0xa2, 0x2d, 0xbd, 0xa6, 0x43, 0xf2, 0x5f, 0x7a,
-0x09, 0x25, 0xc6, 0x0e, 0xc0, 0x03, 0x14, 0x9a,
-0xe8, 0xe2, 0xbf, 0x0e, 0x3b, 0x69, 0x5f, 0xc7,
-0x69, 0xa3, 0x17, 0xf8, 0xcb, 0x1b, 0xdc, 0xa9,
-0xe5, 0x89, 0xb0, 0xfb, 0x86, 0x45, 0x46, 0xd8,
-0xe3, 0x59, 0x04, 0x81, 0x9b, 0x18, 0xde, 0x93,
-0x4d, 0x20, 0xfe, 0xe2, 0x95, 0x5c, 0xcd, 0x32,
-0x9f, 0xc7, 0x94, 0xcf, 0x91, 0xfb, 0xd7, 0x3c,
-0x74, 0x45, 0xd8, 0x93, 0x2e, 0x1e, 0x3f, 0xee,
-0x76, 0x14, 0xc9, 0xf1, 0x08, 0xf6, 0xaa, 0x15,
-0xb8, 0x0f, 0x12, 0xff, 0x55, 0x1c, 0x29, 0xab,
-0xd1, 0x93, 0x70, 0x1f, 0xb9, 0x22, 0xae, 0xf8,
-0x43, 0x5c, 0x45, 0x7f, 0x41, 0x69, 0x5f, 0x14,
-0x7f, 0x48, 0xbc, 0xcc, 0x97, 0x4d, 0xdc, 0xd1,
-0xfa, 0xb4, 0x6f, 0xb1, 0xb3, 0xed, 0x07, 0xf5,
-0xea, 0x01, 0x0a, 0x5d, 0x68, 0xd9, 0x02, 0x3b,
-0x8f, 0xe1, 0x3d, 0x27, 0x29, 0x2d, 0xd7, 0x9a,
-0xdf, 0xca, 0x66, 0x1a, 0x5b, 0x9a, 0xef, 0xb5,
-0x70, 0x47, 0x53, 0x5d, 0xf8, 0x2b, 0x13, 0xa1,
-0x6c, 0xaf, 0xd9, 0x84, 0xad, 0x86, 0xfc, 0xeb,
-0x97, 0x0a, 0xfc, 0x15, 0x0f, 0x3c, 0x84, 0xb0,
-0xeb, 0x60, 0x7a, 0xf1, 0xe8, 0xbf, 0x7c, 0x57,
-0xb9, 0xba, 0xe7, 0x97, 0x3c, 0x32, 0x8a, 0x88,
-0xec, 0x37, 0x82, 0xff, 0x2a, 0x59, 0x83, 0x37,
-0xff, 0x12, 0xd7, 0x67, 0xff, 0x3d, 0x8a, 0xaf,
-0x30, 0xfe, 0xb0, 0x34, 0xcf, 0x95, 0xa0, 0x03,
-0x3c, 0xe1, 0x79, 0xc4, 0xe6, 0xbf, 0x5a, 0x62,
-0xaf, 0x4d, 0x77, 0x2e, 0xa1, 0x7b, 0x30, 0x04,
-0x22, 0x35, 0x2c, 0xa5, 0x88, 0xd3, 0xc2, 0x7e,
-0x5a, 0xc7, 0x98, 0xf4, 0x37, 0x28, 0xfe, 0xb0,
-0x63, 0x01, 0xc1, 0xae, 0x98, 0x71, 0x9a, 0x47,
-0xdf, 0x2b, 0xb5, 0xf1, 0x57, 0x9c, 0x80, 0x18,
-0xc2, 0xae, 0x5b, 0xb3, 0x7f, 0x4e, 0x2d, 0xa7,
-0xdb, 0xeb, 0x86, 0x4a, 0xc7, 0x3d, 0x0d, 0x70,
-0x3a, 0x75, 0xfb, 0x10, 0xe2, 0xaf, 0xb9, 0xb8,
-0xe0, 0x2d, 0x18, 0xda, 0xf2, 0x39, 0x45, 0xcf,
-0xe3, 0xaf, 0xee, 0x74, 0x45, 0x7f, 0xf5, 0xed,
-0x3e, 0xbf, 0xb1, 0x81, 0x92, 0xe9, 0x1c, 0xfc,
-0xa5, 0x52, 0x6f, 0x48, 0x00, 0x95, 0x7c, 0x1a,
-0x51, 0x6d, 0x90, 0x5a, 0xfc, 0xb0, 0x61, 0x17,
-0x42, 0xd7, 0x33, 0xbe, 0x28, 0x74, 0xa6, 0xc2,
-0x59, 0x6d, 0xa6, 0x6f, 0xbe, 0x2b, 0xff, 0xcb,
-0x30, 0x68, 0x98, 0x56, 0x22, 0x26, 0xfa, 0x71,
-0xbf, 0x4f, 0xc6, 0x31, 0xe2, 0xfc, 0xca, 0x45,
-0xdd, 0x7f, 0x13, 0x8d, 0x2d, 0x74, 0xe9, 0xc1,
-0x84, 0x1e, 0xdf, 0x60, 0x54, 0x1e, 0xd7, 0xe2,
-0xb8, 0x45, 0x3e, 0x0a, 0x73, 0x7a, 0x3b, 0x5b,
-0x1d, 0xfc, 0x15, 0x9f, 0x71, 0x52, 0x27, 0xf2,
-0x45, 0x5d, 0xc8, 0x56, 0x41, 0xb2, 0x75, 0x6e,
-0x5f, 0xc7, 0xc2, 0xe6, 0x11, 0x19, 0xc8, 0x71,
-0x27, 0x3b, 0xd5, 0xda, 0xdd, 0x1a, 0x3e, 0xb3,
-0x74, 0x61, 0x62, 0xb3, 0x17, 0x51, 0xb6, 0xe5,
-0xab, 0xc7, 0xe9, 0x89, 0x9e, 0xe7, 0x28, 0x4e,
-0xab, 0x30, 0x85, 0x4e, 0x59, 0xb8, 0x1e, 0xce,
-0x94, 0xf3, 0x3d, 0xfd, 0x19, 0xf2, 0x9a, 0x16,
-0x58, 0xea, 0x8b, 0xec, 0x11, 0x38, 0xe1, 0x59,
-0x74, 0x1e, 0x7d, 0x63, 0xc2, 0x3b, 0x35, 0xaf,
-0x87, 0x2f, 0x11, 0x51, 0x68, 0x35, 0x8d, 0x4e,
-0x9f, 0xf4, 0x4c, 0xb2, 0x13, 0x7c, 0xd1, 0xaf,
-0x7c, 0x7b, 0x95, 0x30, 0x3b, 0xe1, 0xe9, 0xca,
-0x22, 0xb6, 0x0a, 0xe3, 0xfb, 0x5c, 0x89, 0x1d,
-0xbe, 0xd4, 0xfe, 0x5d, 0xed, 0x60, 0x0f, 0x53,
-0x54, 0xd9, 0x6c, 0x5c, 0x54, 0x1b, 0xac, 0x5b,
-0x23, 0xc9, 0x11, 0xcf, 0x04, 0x65, 0x53, 0xe2,
-0x30, 0x55, 0xe4, 0x03, 0x47, 0xf5, 0x06, 0x89,
-0xa0, 0x45, 0x4b, 0x5a, 0x1b, 0x86, 0x31, 0xb3,
-0x81, 0x02, 0x11, 0x5d, 0xf9, 0x5f, 0x9f, 0x50,
-0x48, 0xe1, 0xa8, 0x46, 0x41, 0x86, 0x64, 0x2c,
-0x6d, 0xf4, 0xa2, 0xd3, 0xde, 0x1f, 0x18, 0x4d,
-0x0a, 0x82, 0xa6, 0x17, 0xe1, 0x00, 0x7d, 0xc3,
-0xfd, 0x2f, 0xfb, 0x75, 0x74, 0xe3, 0x2f, 0x82,
-0xd2, 0x57, 0x32, 0xa2, 0x44, 0xcd, 0xd3, 0x70,
-0x93, 0xe5, 0xff, 0x4b, 0x77, 0xfc, 0xe1, 0x4b,
-0x22, 0x7e, 0x2c, 0xb8, 0x0f, 0x3a, 0x3d, 0x32,
-0xfe, 0x90, 0x9c, 0x64, 0x53, 0xf0, 0x5f, 0x2f,
-0xe1, 0xdb, 0x4b, 0x11, 0x53, 0x7a, 0x37, 0x43,
-0x5f, 0x6b, 0x07, 0xf1, 0x29, 0xe4, 0x99, 0xef,
-0x49, 0xe0, 0xe2, 0x39, 0x38, 0x5f, 0x72, 0x1c,
-0xae, 0xf8, 0xc3, 0x20, 0x7a, 0x82, 0xf7, 0x85,
-0xe1, 0x87, 0x38, 0x65, 0x04, 0xff, 0xa5, 0x79,
-0x28, 0xcf, 0xa5, 0x6c, 0xc4, 0x5b, 0x40, 0x84,
-0x91, 0x1f, 0x6e, 0x52, 0x68, 0xe2, 0x3c, 0x5c,
-0x7f, 0x8c, 0x0e, 0xc9, 0x83, 0xc4, 0xe5, 0xfc,
-0x12, 0xf1, 0x87, 0x2d, 0x34, 0xee, 0x9f, 0xf5,
-0xfb, 0x9e, 0x84, 0xac, 0xe4, 0xbf, 0x92, 0x6a,
-0x78, 0x20, 0x17, 0x15, 0x2c, 0x4e, 0xfe, 0x8f,
-0x40, 0x9c, 0xf8, 0x2f, 0xbf, 0xde, 0xad, 0xce,
-0xb7, 0x5a, 0x18, 0x83, 0x3e, 0x6e, 0xc4, 0x07,
-0xd4, 0xc8, 0xb6, 0x3e, 0x09, 0xbf, 0x28, 0xff,
-0xeb, 0x53, 0x33, 0x6a, 0x95, 0x1c, 0x98, 0x5e,
-0x6d, 0xbe, 0x05, 0xb7, 0x0f, 0x3c, 0x4e, 0xc0,
-0xf9, 0x84, 0x11, 0x6b, 0x11, 0x3e, 0x76, 0x13,
-0xfa, 0x75, 0xa5, 0xa3, 0xca, 0x59, 0xec, 0xe7,
-0xe8, 0x99, 0xa7, 0x33, 0xca, 0x3c, 0x73, 0xc2,
-0x38, 0x7c, 0xa6, 0xba, 0x5d, 0x33, 0x32, 0xc7,
-0x42, 0x87, 0x07, 0xfc, 0xff, 0xa4, 0x98, 0x4c,
-0xb7, 0xf1, 0x97, 0x47, 0xa0, 0xda, 0x0b, 0xc9,
-0xa3, 0xfc, 0x13, 0x68, 0x3a, 0x79, 0x9a, 0x82,
-0xd6, 0xb0, 0xe5, 0x17, 0x02, 0xde, 0xe6, 0x00,
-0xef, 0xa7, 0xde, 0xa6, 0xd3, 0x76, 0xe4, 0x67,
-0xdd, 0xa9, 0xe9, 0xaf, 0x24, 0x47, 0xf9, 0x64,
-0xe8, 0x91, 0x57, 0x6a, 0x2f, 0x24, 0x73, 0xf8,
-0xeb, 0x32, 0x9c, 0x4c, 0xdd, 0x19, 0x0f, 0x5f,
-0x50, 0x2e, 0xa5, 0x9d, 0xf8, 0x5e, 0x9b, 0x5f,
-0xa6, 0x89, 0x56, 0xd0, 0x42, 0x6c, 0xd7, 0x30,
-0xdc, 0x25, 0xe0, 0x80, 0x89, 0x2d, 0x03, 0xfe,
-0xd1, 0x05, 0x76, 0xfc, 0xa1, 0xa5, 0x0f, 0x1b,
-0x38, 0x77, 0x98, 0x7a, 0x94, 0x7d, 0xf2, 0x19,
-0x19, 0x5b, 0xa8, 0xfc, 0x4c, 0x92, 0x5c, 0x94,
-0xff, 0x75, 0xa4, 0x5d, 0xb4, 0x7c, 0x2c, 0x5b,
-0xd2, 0xbe, 0x1a, 0x78, 0x8e, 0x07, 0xd3, 0x76,
-0xcf, 0xd7, 0xf6, 0x23, 0x80, 0x8a, 0xc8, 0xf7,
-0x79, 0x60, 0xda, 0x48, 0x19, 0xf6, 0x7c, 0x4b,
-0xcb, 0xc2, 0xb2, 0xfe, 0xc2, 0x78, 0xec, 0x4e,
-0xdb, 0xe8, 0xcd, 0x87, 0x61, 0x1b, 0x38, 0x3a,
-0x7b, 0x21, 0x44, 0xb0, 0x6b, 0x33, 0x27, 0xf2,
-0x05, 0x9f, 0x93, 0xe7, 0xbf, 0xcc, 0x4e, 0x78,
-0x96, 0xab, 0x99, 0xe6, 0x11, 0xc3, 0x8e, 0x9d,
-0xdb, 0x77, 0x1d, 0x00, 0x17, 0x18, 0xcd, 0xc2,
-0x15, 0x5b, 0xc4, 0xa6, 0x72, 0xba, 0xc4, 0xef,
-0x92, 0x64, 0x6b, 0x4e, 0x7f, 0xe3, 0x38, 0xfa,
-0xac, 0xf5, 0xc4, 0x37, 0x7d, 0xd4, 0xac, 0xb1,
-0x1c, 0xf9, 0x5b, 0x43, 0x87, 0x0f, 0xce, 0xf2,
-0xe5, 0x84, 0x58, 0x8f, 0x2a, 0xad, 0xea, 0x10,
-0xdc, 0xb5, 0x84, 0xa0, 0x34, 0xff, 0x8e, 0x5c,
-0xfd, 0x72, 0xf1, 0x87, 0x87, 0xf1, 0x9d, 0x5f,
-0xc4, 0x03, 0x07, 0xec, 0xf0, 0x4e, 0x37, 0x70,
-0x76, 0x1d, 0x50, 0xb8, 0x0d, 0xbe, 0xe2, 0x12,
-0x25, 0x82, 0xf5, 0xc7, 0x2c, 0x77, 0xfc, 0xe1,
-0x4f, 0xd8, 0x30, 0x3f, 0x4c, 0x91, 0x69, 0xf3,
-0xe0, 0xc4, 0x14, 0x32, 0x7a, 0xaa, 0xb1, 0x5f,
-0xca, 0x38, 0xd0, 0x97, 0x7f, 0x9f, 0x5a, 0xc8,
-0xf9, 0xb7, 0xf9, 0xaf, 0x33, 0x9e, 0x1a, 0xbd,
-0x93, 0x3f, 0x9b, 0x2e, 0x91, 0x2e, 0xb1, 0x9d,
-0x17, 0x79, 0xc4, 0x23, 0xfb, 0x47, 0xff, 0x50,
-0x71, 0x77, 0x54, 0x8f, 0x9c, 0x7a, 0x6d, 0xea,
-0xf3, 0x65, 0x62, 0xbc, 0x5e, 0x67, 0x57, 0x99,
-0xcd, 0x7f, 0x0d, 0x4f, 0x6b, 0x81, 0x34, 0xec,
-0x45, 0x24, 0x75, 0xb3, 0xbf, 0xa8, 0xdb, 0x73,
-0xa3, 0xf8, 0xf9, 0xbc, 0xb1, 0x57, 0x68, 0x35,
-0x54, 0x49, 0x12, 0x19, 0xc7, 0xab, 0x17, 0x57,
-0x3f, 0x3b, 0xff, 0x2b, 0xe3, 0xb9, 0x19, 0x36,
-0xa4, 0x6e, 0x33, 0x8a, 0x29, 0xb9, 0xf8, 0x99,
-0x5c, 0xda, 0x57, 0xda, 0x36, 0x44, 0xcb, 0x43,
-0x8c, 0x42, 0x13, 0xab, 0x87, 0xb5, 0x10, 0xc1,
-0x8a, 0x74, 0x6d, 0x3a, 0xf4, 0xd7, 0xcd, 0x82,
-0x2c, 0x1b, 0x62, 0xeb, 0x71, 0x05, 0xb0, 0xf1,
-0x57, 0x18, 0xb2, 0xa9, 0x1e, 0xe2, 0x26, 0x10,
-0x88, 0xe9, 0x8d, 0xf8, 0xd7, 0x89, 0x08, 0x4b,
-0x37, 0x8e, 0x88, 0x40, 0xc4, 0x8b, 0x99, 0x46,
-0x6b, 0x55, 0xc3, 0xd2, 0x93, 0xea, 0x45, 0x92,
-0xe6, 0x30, 0x34, 0xc3, 0xb4, 0xd2, 0xe8, 0x8f,
-0x89, 0x4b, 0xd0, 0x68, 0xa1, 0x91, 0xe7, 0xbf,
-0xd8, 0x84, 0xd1, 0x24, 0x52, 0xf9, 0xcc, 0xdf,
-0x79, 0xb1, 0x33, 0xcf, 0xe7, 0x47, 0x67, 0x44,
-0x1a, 0xe7, 0xc5, 0xb4, 0x9a, 0xdd, 0x8f, 0xf3,
-0x62, 0x84, 0x5f, 0xd3, 0x1f, 0x4e, 0x0b, 0xea,
-0x19, 0xfb, 0xf9, 0x65, 0xfc, 0x54, 0x0e, 0x7f,
-0x0d, 0xb3, 0x01, 0x6f, 0x24, 0xcf, 0x57, 0x96,
-0xfe, 0x2f, 0xc6, 0xab, 0x5e, 0xd9, 0x45, 0xbc,
-0x0c, 0xa5, 0x86, 0x85, 0x55, 0x3a, 0xbd, 0xc4,
-0x4f, 0xd9, 0xf9, 0x5f, 0x03, 0x37, 0xf5, 0xc0,
-0xef, 0xe0, 0x0e, 0xae, 0x3a, 0xd9, 0x04, 0x9a,
-0xfb, 0xdc, 0x6f, 0x5a, 0xee, 0x00, 0xd0, 0x36,
-0x28, 0xbf, 0xfb, 0x1b, 0x1c, 0x57, 0xc8, 0x59,
-0xde, 0x83, 0xf0, 0x0f, 0x27, 0xf1, 0x53, 0x51,
-0xe7, 0x9c, 0xed, 0x47, 0x46, 0x3b, 0xdf, 0x1d,
-0x6f, 0x59, 0x1f, 0x94, 0xe9, 0x75, 0x9b, 0x6c,
-0xc2, 0xd1, 0xee, 0x70, 0xee, 0xee, 0xf0, 0x31,
-0xd6, 0x45, 0x44, 0x58, 0x5c, 0x5b, 0x97, 0x90,
-0x1c, 0x99, 0x7a, 0xa7, 0x2f, 0x87, 0xbf, 0x3e,
-0xf6, 0x3e, 0x09, 0x73, 0xdb, 0x11, 0xc7, 0xbd,
-0x6a, 0xfe, 0x27, 0xc3, 0x1d, 0x29, 0xb2, 0x8d,
-0x85, 0x32, 0xb7, 0x82, 0x6b, 0xf5, 0xc1, 0x6a,
-0xe8, 0xd6, 0x29, 0xa5, 0x22, 0x87, 0xbf, 0x66,
-0xec, 0x85, 0x3e, 0x88, 0xf2, 0x2f, 0x3f, 0x8b,
-0x6f, 0x38, 0xa1, 0xad, 0x52, 0x27, 0x10, 0x31,
-0x50, 0x60, 0xd8, 0xa9, 0x73, 0x7b, 0xe1, 0x1d,
-0x7c, 0xce, 0xaa, 0xb4, 0x52, 0x6f, 0xd0, 0xa5,
-0x95, 0x05, 0xf8, 0x4b, 0x6c, 0x0b, 0xe8, 0xc5,
-0xb5, 0x3b, 0x5e, 0x9c, 0x2b, 0xaf, 0x84, 0xc5,
-0x3c, 0x5b, 0xf2, 0x0e, 0x5e, 0xd2, 0x8e, 0x48,
-0x6c, 0x47, 0x07, 0x6f, 0xcc, 0x23, 0x80, 0x58,
-0x0e, 0x7f, 0xed, 0xe1, 0x14, 0x94, 0x85, 0x4e,
-0xfb, 0x7b, 0x66, 0x2e, 0xda, 0x70, 0xdc, 0x01,
-0x62, 0xd7, 0x53, 0x00, 0x14, 0x79, 0xe5, 0x27,
-0xde, 0x41, 0x30, 0x62, 0x37, 0x69, 0xb9, 0xfc,
-0xaf, 0xaf, 0xc1, 0x46, 0x33, 0x68, 0xce, 0x4f,
-0x21, 0xb6, 0x42, 0xb7, 0x79, 0x89, 0x9b, 0xff,
-0x42, 0xc3, 0x4b, 0x8c, 0x46, 0xd1, 0x90, 0x0c,
-0x3b, 0xfc, 0x9e, 0xcd, 0x91, 0xb5, 0x7c, 0xdf,
-0x47, 0x7e, 0x6f, 0x4d, 0x6b, 0x68, 0x87, 0x3b,
-0xff, 0xeb, 0x71, 0xcf, 0x4f, 0x96, 0xa8, 0x85,
-0x51, 0x8b, 0x6e, 0x63, 0x85, 0xc0, 0x71, 0x92,
-0x3e, 0x23, 0x44, 0xb6, 0x9b, 0x5c, 0xf4, 0x3d,
-0x08, 0xe8, 0xc2, 0xcd, 0x14, 0x87, 0x96, 0xc7,
-0x5f, 0x8f, 0xf3, 0x0a, 0xd3, 0x87, 0xd8, 0x6a,
-0xa7, 0x8b, 0x8e, 0x09, 0x99, 0x6e, 0xa6, 0x46,
-0x1a, 0xb7, 0x94, 0xb1, 0xd7, 0xf9, 0xcf, 0x8d,
-0xbf, 0x6b, 0xf1, 0x95, 0xb1, 0x76, 0xbe, 0xd5,
-0x1b, 0x6e, 0x51, 0xcb, 0x5c, 0xf1, 0x87, 0x14,
-0x9b, 0xe1, 0xd9, 0x9c, 0x08, 0x66, 0x79, 0x41,
-0xda, 0x8e, 0xcb, 0x60, 0x32, 0x6d, 0x47, 0x93,
-0xfc, 0xd7, 0x02, 0x28, 0x7d, 0x54, 0xd9, 0x89,
-0x40, 0x6c, 0xf6, 0x0c, 0x7f, 0x42, 0x71, 0xf2,
-0xbf, 0xfe, 0xe4, 0xd2, 0xb3, 0xe3, 0xa1, 0xa6,
-0xe5, 0x81, 0xc1, 0x4a, 0x19, 0x5b, 0xb8, 0xca,
-0x0e, 0x44, 0xcc, 0x07, 0xc8, 0xe5, 0xfb, 0x79,
-0xab, 0xd2, 0x8f, 0xf8, 0xab, 0x61, 0x59, 0xf5,
-0xaf, 0x94, 0x07, 0xcd, 0x2b, 0x21, 0xf4, 0x49,
-0xb6, 0xe5, 0xf9, 0xaf, 0x3f, 0xc0, 0xab, 0xe6,
-0x7e, 0x73, 0xed, 0x0f, 0x9e, 0xfc, 0x8d, 0x7e,
-0xcc, 0x3d, 0x3a, 0x5f, 0xbc, 0x7e, 0xbc, 0xce,
-0x20, 0x4c, 0x7e, 0x3f, 0x1d, 0xfb, 0xba, 0x2d,
-0xd6, 0x21, 0xf9, 0x2f, 0x8f, 0x8d, 0xbf, 0x3e,
-0x80, 0x8e, 0xf6, 0x60, 0x48, 0x6d, 0x67, 0xef,
-0x9b, 0x84, 0xad, 0x02, 0x79, 0x22, 0x4c, 0xe4,
-0x7f, 0x91, 0x51, 0xe6, 0xb4, 0xf8, 0x0c, 0xbc,
-0x87, 0xf8, 0x2f, 0x74, 0xf5, 0xf7, 0xc2, 0x7c,
-0xc2, 0x5f, 0xa5, 0xf6, 0xbc, 0x98, 0xd6, 0xcf,
-0xdb, 0x8c, 0x74, 0x33, 0x7a, 0xe6, 0x43, 0xd0,
-0xe6, 0xee, 0x55, 0x1f, 0x1a, 0xde, 0xfd, 0x5e,
-0x57, 0x8b, 0x76, 0x3b, 0xbe, 0x36, 0x3b, 0x6f,
-0x12, 0xfc, 0xd7, 0x90, 0x4c, 0x8c, 0xd5, 0x59,
-0xd9, 0xb4, 0x88, 0x83, 0xbf, 0xda, 0x9c, 0x94,
-0xc0, 0x8d, 0x12, 0x76, 0xfd, 0x67, 0x2f, 0x00,
-0xd1, 0x5e, 0x6c, 0x23, 0xf1, 0x5f, 0xdb, 0xb0,
-0xe5, 0x5f, 0x8d, 0x90, 0xe9, 0x8a, 0x3f, 0x9c,
-0xf1, 0x63, 0x13, 0x41, 0xa8, 0x19, 0x7e, 0xaa,
-0xbc, 0x5f, 0x04, 0xd6, 0x6a, 0x4e, 0x6f, 0xe4,
-0xa2, 0x04, 0x65, 0xcf, 0xe3, 0x73, 0x6c, 0xe9,
-0x12, 0x9b, 0x3a, 0x3c, 0x26, 0xf3, 0x19, 0x43,
-0x72, 0xbf, 0x58, 0x03, 0x3f, 0x41, 0x10, 0xf3,
-0xe2, 0xb2, 0x29, 0x2f, 0x7f, 0xc1, 0x30, 0xa5,
-0x40, 0xce, 0x94, 0x40, 0x2a, 0xe9, 0x18, 0xce,
-0x24, 0xd2, 0xb5, 0x37, 0x9d, 0xfc, 0xaf, 0x9d,
-0x6c, 0x60, 0xa6, 0x50, 0xd2, 0xa0, 0x20, 0x8d,
-0x1b, 0xbf, 0x3f, 0x6e, 0xc3, 0x96, 0xdd, 0x10,
-0xfc, 0x97, 0xba, 0x92, 0xe7, 0xf2, 0xbf, 0xbc,
-0x21, 0x78, 0xc2, 0xb4, 0xd9, 0xae, 0x37, 0x73,
-0x61, 0x87, 0x5e, 0x57, 0xfe, 0x57, 0xde, 0x18,
-0x62, 0x2d, 0xb0, 0xc9, 0x1b, 0x24, 0xd8, 0x15,
-0xc2, 0x9b, 0x6f, 0xcb, 0x84, 0x10, 0x7f, 0x49,
-0x7f, 0x2c, 0x34, 0x6d, 0x2d, 0x4b, 0xb6, 0xbf,
-0x63, 0xe5, 0x62, 0xa4, 0xff, 0x57, 0xfb, 0xd7,
-0x42, 0x26, 0x35, 0x3a, 0xe6, 0x37, 0x88, 0x84,
-0x17, 0x81, 0x02, 0x7c, 0x4e, 0xfc, 0xc6, 0x0c,
-0xf4, 0xf0, 0xff, 0x76, 0x89, 0x08, 0xf9, 0xfe,
-0xfe, 0x94, 0xd5, 0xf8, 0x46, 0x86, 0x38, 0xce,
-0x7a, 0x98, 0x6d, 0xb6, 0xbe, 0x5f, 0xf1, 0xf7,
-0x29, 0xb5, 0xd5, 0xc1, 0x5f, 0x21, 0x35, 0x06,
-0xa7, 0xf8, 0xfe, 0x6c, 0x98, 0xd8, 0xae, 0x29,
-0xf9, 0x5f, 0xd3, 0x85, 0x71, 0x2e, 0xd7, 0xa2,
-0xb5, 0xd0, 0xf9, 0x21, 0x5f, 0x97, 0xf5, 0x8d,
-0x69, 0x3f, 0x32, 0x4f, 0xf3, 0x48, 0xd6, 0x3b,
-0xa6, 0xd8, 0xbf, 0x8b, 0xf0, 0xd7, 0x18, 0xbc,
-0x68, 0xfe, 0xaf, 0xdc, 0x83, 0xcc, 0xd2, 0x11,
-0xef, 0x04, 0xb9, 0x34, 0x5c, 0x59, 0x8b, 0xdb,
-0xcd, 0x6c, 0xab, 0x24, 0xbd, 0x74, 0x2d, 0x9f,
-0xe0, 0xa4, 0xc8, 0xe1, 0xc4, 0x1f, 0x0a, 0xfd,
-0x8d, 0xd4, 0x82, 0x73, 0xfe, 0xf1, 0x4a, 0x04,
-0x59, 0xfc, 0xae, 0xa1, 0x42, 0xff, 0x50, 0x18,
-0xa3, 0xb6, 0x71, 0xeb, 0x38, 0x1a, 0x9f, 0xf2,
-0xef, 0x0c, 0xf9, 0x07, 0xd0, 0xd3, 0x3b, 0xdd,
-0xd1, 0x94, 0x5d, 0xe9, 0x8a, 0x3f, 0xdc, 0x1e,
-0x3f, 0x92, 0x5e, 0x64, 0xaa, 0xeb, 0x65, 0x6c,
-0x46, 0x56, 0x74, 0x42, 0x37, 0xd4, 0x8b, 0xf8,
-0x43, 0x0b, 0xbb, 0xa5, 0x5f, 0xc4, 0x1f, 0x7e,
-0x9f, 0x87, 0x87, 0x65, 0x47, 0x19, 0x15, 0xc3,
-0xaa, 0x49, 0x71, 0xef, 0x50, 0x6d, 0xfa, 0xbe,
-0xc4, 0x5c, 0xf1, 0x87, 0x07, 0x23, 0x3b, 0x5f,
-0x99, 0xf7, 0x80, 0x0c, 0xad, 0x1f, 0xf8, 0xcf,
-0xfb, 0x79, 0x60, 0x45, 0x3c, 0x78, 0x16, 0x5e,
-0xf2, 0xdc, 0x26, 0xb8, 0x36, 0x02, 0xc5, 0x5c,
-0xfd, 0x26, 0xb3, 0x72, 0xf8, 0xcb, 0x7b, 0xa4,
-0x75, 0x6e, 0x6b, 0x31, 0xee, 0x5f, 0xee, 0x71,
-0x0f, 0xd9, 0x7e, 0x26, 0xb3, 0x5b, 0x04, 0xdd,
-0x09, 0xec, 0x74, 0x4b, 0xf7, 0xa0, 0x71, 0xc9,
-0x17, 0x62, 0xa7, 0x21, 0xc9, 0x6b, 0x00, 0x27,
-0x63, 0x2e, 0xfe, 0x70, 0x33, 0x9d, 0x7e, 0x5f,
-0xfa, 0x46, 0xcf, 0xd2, 0x53, 0xc1, 0x13, 0x14,
-0xbb, 0x72, 0xe3, 0x0e, 0x27, 0x3f, 0x4a, 0x30,
-0x2c, 0x13, 0x66, 0xc3, 0x60, 0xe9, 0x8e, 0x27,
-0x7f, 0x87, 0x60, 0x16, 0xf7, 0x0b, 0xae, 0x7c,
-0xe0, 0xec, 0xcb, 0x38, 0x65, 0x54, 0xf4, 0x18,
-0xf7, 0xa3, 0x2f, 0x41, 0x7e, 0x82, 0xfc, 0xb8,
-0x32, 0xf5, 0x81, 0x6f, 0xd9, 0x06, 0x9f, 0x30,
-0x62, 0x03, 0xf3, 0x52, 0x76, 0xbe, 0x43, 0x20,
-0xe5, 0x8a, 0x3f, 0x84, 0xb7, 0xa1, 0x7b, 0x20,
-0x3c, 0x5a, 0x7e, 0xc9, 0x43, 0xdc, 0xd6, 0x96,
-0x1b, 0xbb, 0x97, 0x94, 0xde, 0xb2, 0xea, 0x57,
-0xca, 0x2c, 0xf8, 0x25, 0xdc, 0x6e, 0xe1, 0x32,
-0xd8, 0x68, 0xac, 0xc2, 0xf5, 0x70, 0xf3, 0x39,
-0x05, 0xbe, 0x64, 0xef, 0x5f, 0x6b, 0xe9, 0x64,
-0xe9, 0x1c, 0x7a, 0xc2, 0x43, 0xcd, 0x6f, 0xb9,
-0xdd, 0xe6, 0x5b, 0x9d, 0x9f, 0x23, 0x5a, 0x3e,
-0x94, 0x74, 0x95, 0x9d, 0xdb, 0xa5, 0x36, 0xef,
-0xa3, 0x93, 0x8a, 0x39, 0xea, 0x76, 0x27, 0x7e,
-0x9e, 0x7b, 0xd6, 0xda, 0xb0, 0xab, 0x48, 0x86,
-0x14, 0x16, 0xf2, 0x5f, 0x85, 0x86, 0xe1, 0x3c,
-0xa7, 0xc3, 0xce, 0x08, 0x2b, 0xe6, 0x79, 0xfc,
-0x55, 0xe5, 0x4d, 0xfa, 0xd3, 0x96, 0x16, 0x9d,
-0x2b, 0xe6, 0xa9, 0x80, 0x5d, 0x22, 0x83, 0x8f,
-0x88, 0xcb, 0x76, 0x72, 0x2a, 0x44, 0x06, 0x5f,
-0xb7, 0x51, 0x65, 0x69, 0x2a, 0x25, 0x82, 0xdd,
-0x94, 0x3e, 0x16, 0x02, 0xb6, 0x2f, 0xf8, 0x1c,
-0xae, 0xab, 0xc5, 0xba, 0xaf, 0x59, 0xbe, 0x3d,
-0x50, 0xbc, 0x16, 0xde, 0xd2, 0xa3, 0x56, 0x35,
-0x9d, 0x39, 0xe0, 0xf7, 0xc9, 0xc7, 0xe5, 0x6a,
-0xc2, 0x30, 0x05, 0x71, 0x89, 0x46, 0x48, 0xcc,
-0x8b, 0x30, 0x88, 0x1c, 0xb1, 0x54, 0xf9, 0x2c,
-0xfe, 0x21, 0x64, 0x78, 0x75, 0xda, 0x85, 0xbf,
-0x60, 0xc2, 0xd3, 0x44, 0xe3, 0xf5, 0xba, 0x2e,
-0x73, 0x4f, 0x88, 0x67, 0x54, 0x9b, 0xfa, 0xb0,
-0x7b, 0x7f, 0x0a, 0x42, 0x7f, 0xe3, 0x82, 0x32,
-0xe9, 0xf9, 0x90, 0xc5, 0x5e, 0x13, 0xe7, 0xf3,
-0xd7, 0x8c, 0xc6, 0xfe, 0x80, 0x85, 0x2f, 0xed,
-0xef, 0x3c, 0x4d, 0x50, 0x3a, 0x58, 0x59, 0xa8,
-0xbf, 0x61, 0xd9, 0x61, 0xbd, 0x31, 0x1b, 0x76,
-0x59, 0x75, 0x64, 0x3c, 0x82, 0x5e, 0xca, 0x82,
-0x6c, 0xc9, 0x76, 0x11, 0x76, 0x18, 0x35, 0xf7,
-0x49, 0xe9, 0x9b, 0x26, 0xc3, 0x9f, 0x56, 0x1e,
-0x61, 0x27, 0x48, 0xb5, 0xa3, 0xc7, 0xad, 0xbf,
-0x71, 0x04, 0x76, 0x71, 0xa1, 0xb6, 0x81, 0x20,
-0x0b, 0x9d, 0xf6, 0xf2, 0x91, 0x74, 0xb7, 0x31,
-0x9f, 0xbc, 0xf7, 0x1a, 0x11, 0x9a, 0xa8, 0x95,
-0x11, 0xfe, 0x82, 0x60, 0x5c, 0x15, 0xf1, 0x87,
-0xac, 0xc6, 0x28, 0xd9, 0x8b, 0xfd, 0x9c, 0xf4,
-0xc6, 0xb2, 0x38, 0x04, 0x2e, 0xfd, 0x43, 0xd2,
-0x8f, 0x6a, 0xa1, 0xe4, 0x11, 0xa2, 0x17, 0x35,
-0x11, 0xde, 0x69, 0x50, 0xa6, 0x09, 0x23, 0xa9,
-0x3d, 0xa3, 0x97, 0x54, 0x05, 0xe8, 0xcc, 0x8a,
-0xdb, 0x31, 0x03, 0xf3, 0x89, 0x58, 0x59, 0x49,
-0x07, 0x14, 0x04, 0xcd, 0x5c, 0xfa, 0x1b, 0x87,
-0x88, 0x73, 0x71, 0xa3, 0x2d, 0x34, 0x9e, 0x25,
-0x23, 0x8c, 0xcf, 0x09, 0x5a, 0x5a, 0x7d, 0x42,
-0x68, 0x74, 0xa4, 0xd5, 0x88, 0xe4, 0x58, 0xf5,
-0xcf, 0xfd, 0x13, 0x0b, 0xeb, 0x9d, 0xde, 0x9f,
-0xd1, 0xd4, 0x73, 0xe9, 0x6f, 0x8c, 0xb9, 0xe3,
-0x0f, 0xed, 0x84, 0xd6, 0xa8, 0x24, 0xf4, 0xc7,
-0x2d, 0x84, 0xd2, 0x47, 0x19, 0x51, 0xcf, 0x65,
-0xeb, 0xfc, 0x92, 0x83, 0x6e, 0x34, 0xd0, 0x2d,
-0x5c, 0x2b, 0x06, 0x6e, 0x55, 0x46, 0x73, 0xe9,
-0x6f, 0x5c, 0x82, 0x26, 0x73, 0x2a, 0xc8, 0xba,
-0x4b, 0x1a, 0xe3, 0x96, 0xd3, 0xc2, 0x16, 0x9b,
-0x74, 0x52, 0x41, 0xf7, 0x54, 0x05, 0x42, 0x42,
-0xa3, 0xe3, 0xa0, 0x54, 0xed, 0xb0, 0xf1, 0xd7,
-0x3e, 0xb8, 0xec, 0x9d, 0xcd, 0xfd, 0x53, 0xa6,
-0xf9, 0x03, 0x24, 0x98, 0x83, 0x7f, 0x1d, 0xa1,
-0x3d, 0xba, 0xa9, 0x68, 0xa8, 0x51, 0x8e, 0xa3,
-0x23, 0x42, 0x0e, 0x48, 0xa3, 0x23, 0x2c, 0xde,
-0x3a, 0xc2, 0x05, 0x36, 0xff, 0xe5, 0x09, 0xc3,
-0xe1, 0x74, 0x8d, 0xe5, 0xa7, 0x79, 0xe1, 0x9a,
-0x05, 0x75, 0x96, 0xd6, 0x48, 0x09, 0x89, 0xf8,
-0xe5, 0x35, 0xfa, 0x39, 0x47, 0x38, 0xc2, 0x52,
-0xa1, 0x81, 0xb3, 0x4e, 0x2c, 0x3b, 0x61, 0xd8,
-0xd2, 0x8a, 0x43, 0xb9, 0x3f, 0xe1, 0xe2, 0xbf,
-0xba, 0x78, 0xd8, 0xfa, 0x42, 0xc1, 0x6e, 0x75,
-0xc4, 0x66, 0xf6, 0x21, 0x43, 0x86, 0x8e, 0xc6,
-0x11, 0x33, 0xb4, 0x7a, 0x05, 0xf9, 0xe1, 0xdd,
-0x9e, 0x2a, 0xf8, 0x1c, 0xe0, 0x73, 0x9e, 0x14,
-0xa1, 0x1d, 0x45, 0x63, 0xf9, 0xf8, 0xc3, 0x17,
-0xf0, 0xfd, 0x56, 0xa7, 0xc0, 0x01, 0x4a, 0x04,
-0x63, 0x5f, 0xd1, 0x0f, 0xa4, 0x2a, 0xfa, 0xb5,
-0x7b, 0xd8, 0x57, 0xb0, 0xe5, 0x5f, 0xd7, 0x08,
-0xed, 0xbe, 0x83, 0xe9, 0xda, 0x90, 0xd6, 0x42,
-0xbc, 0x4c, 0xa6, 0x82, 0xb2, 0x99, 0x06, 0xf2,
-0xfc, 0xd7, 0x68, 0x26, 0x66, 0x56, 0xd3, 0xd7,
-0xb8, 0x08, 0xe1, 0xe1, 0x80, 0x30, 0xd2, 0x06,
-0xe2, 0xaf, 0xa4, 0x1f, 0xce, 0xa7, 0x33, 0xfd,
-0x81, 0x9b, 0x15, 0xbf, 0x39, 0xa1, 0xd6, 0x87,
-0x10, 0x91, 0xf9, 0x09, 0x9a, 0x19, 0xd5, 0xaa,
-0x16, 0x86, 0x5f, 0xa7, 0x23, 0x56, 0xa0, 0x80,
-0xff, 0x9a, 0xa4, 0xa4, 0x3c, 0x7b, 0xbc, 0xec,
-0xfc, 0x2f, 0x22, 0x91, 0xd7, 0x55, 0x4e, 0xb6,
-0xfc, 0x7c, 0x06, 0xe1, 0x2f, 0xed, 0xa8, 0x79,
-0xcd, 0xb3, 0xc8, 0x2b, 0xa5, 0x2c, 0xf5, 0xc5,
-0x50, 0xba, 0x95, 0xce, 0x40, 0x54, 0x31, 0x94,
-0x2e, 0xfe, 0x6b, 0x9c, 0x92, 0xca, 0xe5, 0x30,
-0x35, 0xd8, 0xf1, 0xe1, 0x1c, 0xc7, 0xa2, 0x1e,
-0x3b, 0xe1, 0x59, 0x16, 0xa5, 0x53, 0xc7, 0xb0,
-0x77, 0x22, 0x11, 0x05, 0x7b, 0x28, 0xeb, 0xe0,
-0x56, 0xc1, 0x69, 0x7a, 0xa2, 0x74, 0x32, 0xe9,
-0xd2, 0xdf, 0x20, 0x92, 0x22, 0x17, 0x6e, 0x61,
-0x1b, 0x42, 0xee, 0xe9, 0x69, 0x19, 0x77, 0x81,
-0x68, 0x0b, 0x11, 0x48, 0x05, 0xd0, 0x06, 0xa4,
-0xa3, 0xe1, 0xa9, 0x8e, 0x8b, 0x8d, 0x8c, 0x72,
-0xc4, 0xa0, 0x40, 0x7f, 0x23, 0x9c, 0xef, 0x67,
-0x34, 0xbe, 0x82, 0xbb, 0xde, 0x1c, 0xa9, 0x88,
-0xb8, 0x1b, 0xbd, 0x02, 0xec, 0x67, 0x91, 0xf5,
-0x1c, 0x5f, 0x21, 0xef, 0xf9, 0x7c, 0x66, 0xfe,
-0x9a, 0xb2, 0xb7, 0x45, 0xb0, 0x22, 0xde, 0x53,
-0xa8, 0xbf, 0x31, 0x94, 0x8b, 0x3b, 0xb5, 0x0d,
-0x21, 0x86, 0xb3, 0x19, 0x70, 0xb7, 0xa2, 0xf9,
-0x25, 0xb2, 0x95, 0x67, 0xca, 0xad, 0x8d, 0x19,
-0x65, 0xc5, 0x77, 0x8a, 0x77, 0x8c, 0x82, 0x7c,
-0x7c, 0x2e, 0xfe, 0xeb, 0x45, 0xa8, 0x4d, 0x85,
-0x5d, 0xf9, 0x5f, 0x6b, 0xd0, 0x47, 0x8a, 0x12,
-0xda, 0x0a, 0x15, 0x7f, 0x6c, 0xa2, 0xf1, 0x9e,
-0x08, 0x4d, 0x5c, 0xe0, 0x64, 0x84, 0xdd, 0x91,
-0x2e, 0xcd, 0x92, 0xc1, 0xc4, 0x3d, 0x6e, 0xfe,
-0x4b, 0x6d, 0x64, 0x53, 0xbd, 0xb8, 0x06, 0xdb,
-0x30, 0x72, 0x88, 0xec, 0xc5, 0x1b, 0x7b, 0x7a,
-0x53, 0xf9, 0x2f, 0xc7, 0xab, 0xcc, 0x1d, 0xef,
-0x4f, 0xdf, 0xce, 0x86, 0xf4, 0xf3, 0x44, 0x72,
-0xe9, 0x42, 0x4f, 0xaf, 0x31, 0xee, 0xa7, 0x40,
-0xc4, 0x71, 0x9e, 0x4b, 0x9c, 0x11, 0x1c, 0x19,
-0x2b, 0x8c, 0x3f, 0xcc, 0xe1, 0x26, 0x35, 0x07,
-0xbb, 0x7e, 0x94, 0x8b, 0x1f, 0x5b, 0x8a, 0xf7,
-0xf0, 0x9a, 0xd5, 0x92, 0xda, 0xb0, 0x76, 0x09,
-0x1f, 0xdb, 0xbb, 0x91, 0xf8, 0xaf, 0xed, 0x6c,
-0x8a, 0xfe, 0x46, 0xb1, 0xf3, 0x9c, 0xe2, 0x02,
-0xf7, 0xfb, 0x08, 0xd8, 0xf2, 0x1d, 0x87, 0x0c,
-0x1c, 0x02, 0xbd, 0x79, 0x35, 0xec, 0x27, 0x7a,
-0x3a, 0x55, 0x36, 0x54, 0x24, 0x1c, 0xf2, 0x54,
-0xa2, 0xa8, 0x90, 0xff, 0x9a, 0x67, 0x3b, 0xff,
-0xcb, 0x28, 0xf9, 0xc8, 0xdc, 0xaf, 0xbb, 0x81,
-0x58, 0x79, 0x62, 0x19, 0x5d, 0x5a, 0xae, 0xce,
-0x64, 0x64, 0x04, 0x11, 0xac, 0xe1, 0xa5, 0x64,
-0x28, 0x4d, 0x22, 0x7e, 0x85, 0xfa, 0x1b, 0x6a,
-0x89, 0xec, 0xba, 0x46, 0xe2, 0x26, 0xce, 0xc1,
-0xa8, 0x59, 0x63, 0x77, 0x66, 0x08, 0x5f, 0xe3,
-0xc7, 0xa4, 0x7e, 0x82, 0x2a, 0xa4, 0xed, 0xc6,
-0x5a, 0xa3, 0x9e, 0xcd, 0x78, 0x8f, 0x39, 0xf0,
-0x20, 0x8e, 0xc5, 0xb4, 0x3c, 0xfe, 0x92, 0xf1,
-0x87, 0x0e, 0x0a, 0x10, 0xf9, 0x5f, 0xfc, 0x50,
-0x95, 0x9d, 0x11, 0x76, 0x85, 0xa8, 0xb1, 0x0b,
-0xe5, 0xc4, 0x91, 0x35, 0x99, 0xb5, 0xdb, 0x92,
-0x7b, 0x10, 0x9a, 0xe1, 0xc2, 0x78, 0x3e, 0xef,
-0xfc, 0xbb, 0xe2, 0x0f, 0xaf, 0x5d, 0x0f, 0x8a,
-0x09, 0x17, 0x0c, 0x96, 0xe3, 0xe8, 0x88, 0x41,
-0x29, 0xaf, 0x82, 0x8f, 0xa4, 0x46, 0x62, 0x15,
-0x5c, 0x81, 0x75, 0x62, 0xbc, 0xd4, 0x8f, 0x64,
-0x20, 0xa2, 0xc3, 0x7f, 0xc1, 0x94, 0xf8, 0x43,
-0x37, 0xfe, 0x32, 0xd0, 0x8d, 0xaf, 0x93, 0x8a,
-0x88, 0x3d, 0x2c, 0x48, 0xfa, 0x51, 0x86, 0x90,
-0xdd, 0x10, 0xfa, 0x1b, 0x5c, 0xde, 0xe3, 0xf0,
-0x5f, 0x7f, 0xda, 0xaf, 0x16, 0x80, 0x59, 0xb7,
-0xb1, 0xcc, 0xbb, 0xdf, 0x43, 0x19, 0x61, 0xcd,
-0x5e, 0xef, 0x4e, 0x88, 0x53, 0x20, 0xa2, 0x57,
-0xf4, 0xb3, 0xaa, 0x97, 0xf5, 0x7b, 0x29, 0xf2,
-0xb3, 0x93, 0x78, 0xc6, 0x29, 0xfa, 0x1b, 0x72,
-0xb8, 0x97, 0x2c, 0x77, 0xc6, 0xfd, 0x16, 0x49,
-0x84, 0xcd, 0x35, 0x6f, 0xd9, 0xca, 0x84, 0x46,
-0x62, 0x5c, 0x84, 0x1d, 0xe2, 0x73, 0xbe, 0x14,
-0xda, 0x66, 0x83, 0x35, 0xad, 0x90, 0xff, 0x4a,
-0xe5, 0xd4, 0x36, 0x5c, 0xf8, 0x4b, 0x84, 0xd1,
-0x8e, 0x0f, 0x52, 0xfc, 0xa1, 0x52, 0xa5, 0xbe,
-0x0f, 0xd1, 0x35, 0xab, 0x28, 0xfe, 0x70, 0x1c,
-0xd2, 0x71, 0xff, 0xd3, 0x14, 0x5b, 0xc8, 0xc4,
-0x3d, 0xc3, 0x05, 0xf1, 0x87, 0x6b, 0xa6, 0x1e,
-0x3e, 0xe4, 0x0f, 0x28, 0xdc, 0x86, 0xbc, 0x14,
-0x97, 0xa1, 0x89, 0xa2, 0x25, 0x79, 0xbc, 0x20,
-0xfe, 0xd0, 0x99, 0x7a, 0x8f, 0x80, 0xdf, 0x35,
-0x07, 0x0d, 0x7c, 0x91, 0xba, 0xe8, 0x54, 0x04,
-0xef, 0x99, 0xd9, 0xf0, 0x99, 0xcd, 0x6d, 0xe2,
-0x45, 0x8a, 0xde, 0x24, 0x42, 0x13, 0xcf, 0x18,
-0x82, 0x23, 0xf3, 0x15, 0xc6, 0x1f, 0x6a, 0xe9,
-0x66, 0x01, 0xb2, 0xda, 0xfc, 0x0e, 0xda, 0xba,
-0x65, 0x4d, 0x2e, 0x22, 0x71, 0x7a, 0x08, 0x3e,
-0x36, 0x6b, 0xd2, 0x02, 0x76, 0xbd, 0x98, 0xee,
-0x42, 0xb0, 0x86, 0x37, 0xff, 0xac, 0x17, 0x2f,
-0x65, 0xdd, 0xf9, 0x5f, 0xfb, 0xb9, 0x0b, 0x64,
-0x15, 0x4b, 0x63, 0x6d, 0xaf, 0x16, 0x2b, 0xf3,
-0x7b, 0xbb, 0x3d, 0x06, 0x85, 0x60, 0x9d, 0xa4,
-0xfd, 0x2b, 0xab, 0x1a, 0x52, 0x7e, 0x01, 0xd7,
-0xba, 0xb2, 0x7d, 0xfa, 0x93, 0x78, 0xa9, 0xb3,
-0xb1, 0x68, 0x93, 0xcd, 0x7f, 0xdd, 0x64, 0x07,
-0x21, 0xac, 0x2b, 0x12, 0xeb, 0x73, 0xb6, 0x58,
-0x88, 0x3f, 0x30, 0x6c, 0x79, 0x90, 0x7d, 0xd9,
-0x73, 0x50, 0xe6, 0x37, 0x91, 0x46, 0x62, 0x38,
-0x2e, 0xf4, 0x0f, 0x5f, 0x80, 0xcf, 0x5b, 0x21,
-0xd2, 0x83, 0xfd, 0xb1, 0x55, 0x61, 0xdd, 0xf2,
-0x30, 0x73, 0xf2, 0xbf, 0x80, 0xd6, 0xde, 0x1c,
-0xec, 0xaa, 0xfd, 0xa0, 0x64, 0x7d, 0xf9, 0xdb,
-0xfc, 0xd3, 0x8e, 0xea, 0x4b, 0xda, 0x7a, 0x8a,
-0x48, 0xe4, 0xb7, 0x8f, 0x06, 0x1e, 0x4e, 0xbc,
-0xad, 0x7e, 0xca, 0xef, 0x44, 0x8c, 0xa6, 0xcd,
-0x86, 0x2b, 0xfc, 0x76, 0x92, 0x3d, 0xbc, 0x0a,
-0xbf, 0xa1, 0xd0, 0xc4, 0x61, 0xed, 0x59, 0x9b,
-0xff, 0x92, 0xba, 0x10, 0xaf, 0x3b, 0xee, 0xe5,
-0x20, 0x9d, 0xfb, 0x99, 0x13, 0x71, 0x3b, 0xc2,
-0xed, 0x48, 0x9c, 0x42, 0x13, 0xd1, 0x78, 0x5f,
-0x9e, 0x78, 0xa0, 0x93, 0xe3, 0x91, 0xae, 0x3e,
-0xb3, 0x33, 0x8c, 0xdc, 0xfa, 0x1b, 0x91, 0x05,
-0xa3, 0xe8, 0x4b, 0x08, 0x6d, 0x8d, 0xf7, 0x02,
-0x63, 0x9e, 0xab, 0x02, 0x5b, 0x6d, 0x1e, 0x50,
-0x6a, 0xcc, 0x6b, 0x03, 0xe5, 0xa3, 0x5e, 0xf2,
-0x18, 0xc7, 0x79, 0x6c, 0xd8, 0x3f, 0x2c, 0xfc,
-0xc3, 0xfa, 0x6c, 0x78, 0x5c, 0x89, 0x55, 0x7c,
-0xb8, 0x2d, 0x3a, 0x14, 0x78, 0xca, 0x39, 0x7f,
-0x26, 0xfe, 0xeb, 0xa5, 0x36, 0xec, 0x84, 0xef,
-0x30, 0xca, 0xff, 0x12, 0xf8, 0x6b, 0x12, 0x9e,
-0x41, 0x37, 0x55, 0x7d, 0x50, 0xf9, 0x0a, 0xef,
-0x86, 0x4a, 0x4b, 0x64, 0x84, 0xbd, 0x90, 0xbe,
-0x33, 0x8e, 0x28, 0x69, 0x16, 0x7a, 0x68, 0x6b,
-0xb3, 0x25, 0x0f, 0x29, 0x8f, 0xf0, 0xc7, 0x78,
-0xc5, 0x70, 0xe7, 0x1a, 0x36, 0xdf, 0xad, 0xbf,
-0x51, 0x31, 0x15, 0xcc, 0x3a, 0x1b, 0x62, 0xb7,
-0x9d, 0x5e, 0x47, 0x3a, 0x27, 0xcb, 0x84, 0x44,
-0xf0, 0xf3, 0xf4, 0x27, 0xa2, 0x6c, 0x16, 0x7f,
-0xc6, 0x53, 0x61, 0x75, 0x9a, 0xb9, 0xf8, 0x43,
-0x5d, 0xc6, 0x94, 0x2a, 0xce, 0xb8, 0xaf, 0x20,
-0x0d, 0x81, 0xdd, 0x82, 0x00, 0xf5, 0x49, 0x07,
-0x46, 0x5d, 0x5c, 0xb4, 0x12, 0xa7, 0x79, 0xe8,
-0x9e, 0x62, 0xe9, 0xc9, 0x84, 0x47, 0x8b, 0x17,
-0xc2, 0x5a, 0x22, 0xc7, 0x09, 0x29, 0xa8, 0xae,
-0xf8, 0x43, 0x6f, 0xe5, 0xa0, 0xdd, 0xcf, 0xa4,
-0x4d, 0x87, 0x7e, 0xf8, 0x69, 0xfc, 0xa3, 0xb4,
-0xd1, 0x7b, 0xae, 0x41, 0xb7, 0xe5, 0x1f, 0x9d,
-0x2e, 0xb5, 0x0d, 0xfd, 0x19, 0xa1, 0x78, 0xbc,
-0x7e, 0xc0, 0xff, 0x7c, 0x79, 0xa3, 0xfa, 0xa1,
-0x90, 0xaa, 0xd6, 0xe6, 0x83, 0x8d, 0xbf, 0x28,
-0xfe, 0xf0, 0x91, 0x1b, 0xc1, 0xb7, 0x03, 0x6c,
-0xad, 0xdd, 0x32, 0x7d, 0xad, 0x78, 0x4e, 0xe9,
-0x76, 0x79, 0x96, 0x3b, 0x20, 0x86, 0x72, 0xdc,
-0x2b, 0x88, 0x4b, 0xb7, 0xfe, 0x86, 0xbe, 0xc8,
-0x71, 0x26, 0x9b, 0x2c, 0x4a, 0x04, 0x83, 0xdf,
-0xe5, 0x85, 0x38, 0x16, 0x58, 0x25, 0xeb, 0x92,
-0x0f, 0xeb, 0x57, 0x20, 0x32, 0xb4, 0xf2, 0x3c,
-0xb6, 0x5c, 0x85, 0xa6, 0xde, 0xcd, 0x74, 0xe9,
-0x14, 0x5e, 0x0a, 0x64, 0x99, 0x65, 0xba, 0xe2,
-0x0f, 0x17, 0xe4, 0xc1, 0x11, 0x39, 0xd2, 0xea,
-0x09, 0x05, 0x3b, 0x73, 0x61, 0x90, 0x28, 0xbf,
-0x4a, 0x4a, 0x23, 0x0a, 0xe3, 0xfe, 0x35, 0xdf,
-0x52, 0xb7, 0xa1, 0xd1, 0x23, 0xef, 0x09, 0xc3,
-0x5e, 0xbe, 0xcb, 0x5a, 0x91, 0x62, 0x59, 0xb7,
-0xfe, 0x46, 0xd0, 0x79, 0x4e, 0x98, 0xf8, 0x2f,
-0x12, 0x5b, 0xc0, 0x7e, 0xee, 0x12, 0x5e, 0x77,
-0x95, 0xfc, 0xd4, 0x21, 0x1e, 0xec, 0x0d, 0x09,
-0x3f, 0x9c, 0xd7, 0x48, 0x45, 0x8e, 0x8d, 0xc6,
-0xdc, 0xde, 0xce, 0x6d, 0xb8, 0xc0, 0xda, 0xfb,
-0x17, 0x4e, 0x3d, 0x75, 0x0f, 0xe2, 0x2f, 0x82,
-0x03, 0x10, 0x3e, 0xd3, 0xe1, 0x1c, 0x98, 0xa8,
-0x32, 0x10, 0x91, 0x92, 0xbc, 0x7c, 0x38, 0x4c,
-0x86, 0x31, 0x30, 0x53, 0x47, 0x63, 0x7f, 0x7b,
-0xcd, 0x49, 0x1c, 0x77, 0xbf, 0x91, 0xfe, 0xdb,
-0xaa, 0x97, 0x35, 0x28, 0xeb, 0x73, 0xc7, 0x1f,
-0xe2, 0xef, 0xea, 0x4a, 0x8a, 0xf1, 0x1a, 0xa0,
-0x44, 0x30, 0xf8, 0x5d, 0x6b, 0x93, 0xb5, 0x12,
-0x47, 0xa7, 0xfd, 0x5a, 0xeb, 0x22, 0xab, 0xe4,
-0x0f, 0x52, 0x48, 0x61, 0xd9, 0xe6, 0x08, 0x3a,
-0xc0, 0x63, 0x77, 0xe3, 0xc0, 0xed, 0xd7, 0xc2,
-0xbc, 0xd7, 0xac, 0x1b, 0x08, 0x14, 0x29, 0x96,
-0x2b, 0xfe, 0x30, 0x24, 0xbd, 0x77, 0xf3, 0x1a,
-0xdc, 0x7a, 0x46, 0x76, 0xb8, 0x81, 0xf8, 0x0b,
-0xbd, 0x41, 0xf3, 0x25, 0xe3, 0x2e, 0xa9, 0xbf,
-0x31, 0x79, 0xd3, 0x4b, 0xcb, 0x70, 0x97, 0x41,
-0xa3, 0xaa, 0xe9, 0x24, 0x21, 0x3b, 0xef, 0xa4,
-0x89, 0x97, 0x5e, 0x4e, 0xe6, 0xf2, 0xbf, 0x26,
-0x11, 0x29, 0xc8, 0xdc, 0xc0, 0x0e, 0x9c, 0x5f,
-0x74, 0xbe, 0x31, 0x99, 0x3e, 0x6d, 0x35, 0x91,
-0xf1, 0x09, 0xfc, 0x9e, 0x40, 0xd6, 0xc0, 0xf4,
-0x46, 0xf8, 0x90, 0x37, 0x65, 0xa5, 0x22, 0x22,
-0xd4, 0x99, 0xa5, 0xd6, 0x6d, 0x8b, 0xf9, 0x27,
-0xc6, 0x02, 0x8a, 0x48, 0xcc, 0xe5, 0x7f, 0x4d,
-0xea, 0x22, 0xb3, 0xe3, 0x28, 0xbb, 0x6a, 0x62,
-0x1f, 0x0e, 0xfc, 0xb7, 0x1e, 0xe5, 0x25, 0x78,
-0xce, 0x10, 0xec, 0xc9, 0x49, 0xfe, 0x6f, 0x56,
-0x30, 0xab, 0xf1, 0x4d, 0x35, 0x14, 0x76, 0x68,
-0xf9, 0x08, 0xa3, 0x61, 0x87, 0x5b, 0x7f, 0xc1,
-0x59, 0x23, 0x7f, 0x06, 0xa2, 0x06, 0x7a, 0x20,
-0x2e, 0xfc, 0xc5, 0x11, 0xb1, 0xc2, 0x42, 0xb7,
-0x3f, 0x8f, 0xfd, 0x7c, 0x4c, 0x0a, 0x3b, 0xe8,
-0xb8, 0xe8, 0x25, 0x70, 0x3a, 0xec, 0xb6, 0x91,
-0x2f, 0xce, 0x8b, 0x2a, 0x40, 0x9c, 0x5b, 0xbd,
-0x35, 0xa9, 0x57, 0x51, 0xcc, 0xdb, 0x7d, 0x0e,
-0xfe, 0xda, 0x0c, 0x1d, 0xb8, 0xd9, 0x49, 0xfc,
-0xc5, 0x6c, 0x7c, 0xf1, 0x5c, 0x3e, 0xb9, 0x2f,
-0x48, 0xd1, 0xbc, 0x82, 0xd6, 0x91, 0xa9, 0x4f,
-0xb8, 0x9f, 0xb6, 0x15, 0x1b, 0x89, 0xb0, 0x67,
-0x37, 0x6d, 0x88, 0x3b, 0xf3, 0xf8, 0x6b, 0x12,
-0x06, 0x18, 0xe1, 0x2f, 0xe6, 0x82, 0xc9, 0x27,
-0x24, 0x6b, 0x4f, 0xf0, 0x1f, 0x27, 0xd1, 0xce,
-0x44, 0xd8, 0xc9, 0x08, 0x1b, 0x21, 0xe8, 0x1a,
-0x2a, 0x6d, 0xc7, 0x89, 0xf6, 0xe1, 0xb4, 0xba,
-0x90, 0xff, 0x07, 0x9e, 0xd6, 0x9c, 0xfe, 0x06,
-0xbb, 0x84, 0xc8, 0x37, 0x20, 0xc8, 0x5f, 0x8f,
-0x70, 0xd1, 0x9f, 0x9e, 0x72, 0x2e, 0x91, 0x55,
-0x4e, 0xda, 0x2d, 0x9e, 0x49, 0x18, 0x4b, 0x35,
-0x76, 0xac, 0xea, 0x15, 0x97, 0x7a, 0xbc, 0xb5,
-0x33, 0xcb, 0xf3, 0xf8, 0x4b, 0xc5, 0xbf, 0x9e,
-0xda, 0xe2, 0x4c, 0xcf, 0x3f, 0xcf, 0x94, 0x8f,
-0x80, 0x2d, 0xe4, 0x82, 0x3f, 0x10, 0x57, 0x51,
-0x85, 0x8b, 0xe8, 0x35, 0xfb, 0xfb, 0xe0, 0x8e,
-0xe6, 0x2d, 0xd9, 0x2e, 0x80, 0x7c, 0x17, 0xf7,
-0x73, 0x2d, 0xaf, 0xbf, 0x41, 0xe9, 0x90, 0xdc,
-0xce, 0xa6, 0x14, 0xdd, 0x42, 0xda, 0x86, 0xb6,
-0x1a, 0xc9, 0x33, 0x9e, 0x20, 0x1d, 0xfb, 0x34,
-0x8a, 0x23, 0x02, 0xd1, 0x72, 0x88, 0x80, 0x6a,
-0xa6, 0x81, 0x54, 0x3b, 0x82, 0x3c, 0xc4, 0x0b,
-0xf4, 0x37, 0x78, 0x98, 0xaf, 0x88, 0x14, 0x8e,
-0x97, 0x38, 0x1b, 0x1c, 0x11, 0x89, 0x60, 0x9d,
-0x20, 0xb2, 0xbd, 0x6a, 0xe4, 0x78, 0x75, 0x61,
-0x4b, 0x31, 0x4d, 0xb4, 0x27, 0xc1, 0xe0, 0x2d,
-0x7a, 0x73, 0x4f, 0x1e, 0x7f, 0x6d, 0x08, 0x55,
-0xa7, 0x73, 0x2c, 0x4c, 0xf1, 0xfa, 0xb2, 0x53,
-0x32, 0x76, 0x8e, 0x44, 0x0e, 0x85, 0x52, 0x7a,
-0x0b, 0x7b, 0xda, 0x4b, 0x21, 0x73, 0x02, 0x3b,
-0x3c, 0x9f, 0x9e, 0x37, 0xac, 0xde, 0xc9, 0x4a,
-0xf9, 0xf7, 0xf9, 0xbc, 0xb4, 0x7a, 0x4f, 0x59,
-0x87, 0x9c, 0x5e, 0x84, 0xbf, 0xac, 0x54, 0xe3,
-0x4c, 0x44, 0x52, 0xa7, 0xf8, 0xc5, 0xcf, 0x34,
-0x0e, 0x6f, 0x21, 0x6e, 0xeb, 0x84, 0x1e, 0xed,
-0xf7, 0x47, 0x94, 0x53, 0xd6, 0x7f, 0xa8, 0xf5,
-0xfd, 0xab, 0xb8, 0xb6, 0xd9, 0x7c, 0x39, 0x85,
-0xfd, 0x23, 0x68, 0x2f, 0xb3, 0x7e, 0xef, 0xe3,
-0x1e, 0xad, 0x14, 0x7e, 0x0d, 0x91, 0x7e, 0xbf,
-0xce, 0xb6, 0xe5, 0xf9, 0xaf, 0x31, 0x91, 0xff,
-0x95, 0x9c, 0x8c, 0xd3, 0xf9, 0x06, 0xd1, 0x94,
-0x6c, 0xc2, 0x98, 0x3d, 0x40, 0xb4, 0x97, 0x2e,
-0x80, 0x18, 0x9f, 0xfe, 0xb0, 0x75, 0xcd, 0x6b,
-0xeb, 0x82, 0x5e, 0x35, 0x16, 0xb5, 0x07, 0x76,
-0x0a, 0x9d, 0x13, 0x92, 0xa6, 0x57, 0x5a, 0xa7,
-0x1b, 0x36, 0xfe, 0xe2, 0x63, 0xe4, 0xa2, 0x67,
-0x94, 0x6a, 0xe3, 0x04, 0x51, 0x90, 0xe2, 0xf0,
-0x2a, 0x4f, 0xa4, 0x22, 0x48, 0xe7, 0x4b, 0xc3,
-0x36, 0x95, 0xb9, 0x74, 0x1f, 0x1c, 0x46, 0x68,
-0x16, 0xce, 0xdc, 0x52, 0x3d, 0x70, 0x42, 0x15,
-0xf1, 0x6c, 0xcf, 0xe6, 0xf5, 0x37, 0x8e, 0x32,
-0x8f, 0xd9, 0xf2, 0x00, 0x23, 0x7d, 0xad, 0x5a,
-0xb1, 0xcb, 0xa4, 0x6d, 0xfc, 0x45, 0x6a, 0x5a,
-0xf3, 0x2c, 0xad, 0x55, 0xf9, 0xb2, 0xd8, 0x89,
-0x4a, 0x45, 0xc6, 0x81, 0x67, 0x01, 0xed, 0xef,
-0x8d, 0xe6, 0x6f, 0x83, 0x15, 0xa6, 0xd6, 0xca,
-0x5e, 0x03, 0x07, 0x7f, 0x99, 0x07, 0xb9, 0x41,
-0x92, 0xf2, 0xa5, 0x9c, 0x48, 0x2e, 0xdf, 0x7a,
-0x78, 0xdb, 0xcc, 0x03, 0xde, 0x14, 0xe2, 0xaf,
-0x81, 0x44, 0xa9, 0xb9, 0x41, 0xb6, 0xfc, 0x08,
-0xba, 0xdb, 0xe6, 0x64, 0xd1, 0x21, 0x9f, 0xcd,
-0x37, 0xa4, 0xe6, 0x10, 0x34, 0x73, 0xe9, 0x6f,
-0x74, 0x0f, 0x89, 0xcc, 0x56, 0xca, 0xc1, 0xa4,
-0x65, 0x10, 0x84, 0x92, 0xb3, 0xed, 0xc9, 0xd0,
-0xf9, 0xe1, 0x2c, 0x71, 0x2a, 0x62, 0xcf, 0xd3,
-0x6e, 0x33, 0x3e, 0xa8, 0x12, 0x00, 0xff, 0x21,
-0xec, 0xe9, 0xd7, 0x22, 0xcd, 0x2e, 0xfd, 0x8d,
-0xab, 0x89, 0x05, 0x3d, 0x61, 0x0a, 0x29, 0xfc,
-0xe0, 0x06, 0xfc, 0x17, 0x82, 0xac, 0x21, 0x11,
-0x62, 0x64, 0xf3, 0x5f, 0x57, 0xcd, 0x83, 0x29,
-0x7f, 0x56, 0xa3, 0x96, 0x45, 0x99, 0xc0, 0x07,
-0x2e, 0xfd, 0x0d, 0x18, 0xbb, 0xa9, 0x9e, 0xf0,
-0x97, 0x05, 0xf7, 0xe4, 0x1d, 0x3c, 0x04, 0xb3,
-0xc2, 0xf0, 0x10, 0x10, 0x4b, 0x66, 0x59, 0xde,
-0xf7, 0x33, 0x1e, 0x81, 0x80, 0xb7, 0x93, 0x72,
-0x97, 0x1a, 0x58, 0x00, 0xf2, 0xf8, 0xeb, 0x3d,
-0x7e, 0x8c, 0x89, 0xdc, 0x2e, 0xa2, 0xa2, 0x72,
-0xb4, 0x17, 0x23, 0x37, 0x7e, 0xc8, 0x7b, 0x3e,
-0x45, 0x3a, 0x03, 0xca, 0x32, 0xef, 0x31, 0xf4,
-0x45, 0x6d, 0x8c, 0xd6, 0xf8, 0x75, 0xa9, 0x3f,
-0xcf, 0x33, 0xe4, 0xd8, 0x3b, 0xf8, 0x0b, 0xbe,
-0x0a, 0x1b, 0xf5, 0x9a, 0x25, 0xaa, 0x4c, 0x16,
-0xab, 0x11, 0xf1, 0x87, 0x38, 0x89, 0xbe, 0x6e,
-0x7b, 0xd4, 0x88, 0xb6, 0x34, 0x5d, 0x59, 0xad,
-0xbf, 0x01, 0x35, 0xeb, 0x72, 0xd4, 0x46, 0xc9,
-0x3f, 0xe3, 0x62, 0xf6, 0x06, 0x5e, 0x52, 0x53,
-0xb9, 0xfc, 0x2f, 0x4f, 0x95, 0x87, 0x3c, 0xea,
-0x96, 0x54, 0x59, 0x95, 0xe3, 0x5a, 0xe3, 0xcd,
-0x2c, 0xe7, 0x99, 0x4b, 0x65, 0x06, 0x78, 0xca,
-0x13, 0x76, 0x61, 0xbd, 0xed, 0x54, 0x39, 0x22,
-0x2e, 0x24, 0x1a, 0xf2, 0xf8, 0x6b, 0x7f, 0x1b,
-0xc5, 0x1f, 0x22, 0x0a, 0x60, 0x6d, 0x88, 0xbf,
-0x08, 0x0e, 0x00, 0xe2, 0xaf, 0x65, 0xc5, 0x02,
-0x88, 0x91, 0x70, 0xe5, 0x56, 0xb6, 0x2c, 0x8d,
-0x97, 0xac, 0x9b, 0x05, 0x64, 0x30, 0xc2, 0x2d,
-0xc5, 0x65, 0xcc, 0xcb, 0xb7, 0x1a, 0x55, 0x2d,
-0x21, 0x17, 0xff, 0xb5, 0x46, 0xe8, 0x6f, 0x84,
-0x13, 0x49, 0x23, 0x3d, 0x00, 0x31, 0x9d, 0x3a,
-0x33, 0x3d, 0x66, 0xd6, 0xe8, 0x1a, 0x01, 0xb1,
-0xcb, 0x84, 0xbf, 0xda, 0x3f, 0x1f, 0xe7, 0x3b,
-0x3c, 0x31, 0x50, 0x6d, 0xd7, 0x7a, 0x86, 0xff,
-0x51, 0xa5, 0x62, 0x99, 0xd5, 0x5a, 0x07, 0xc4,
-0x7f, 0x79, 0x1c, 0xfc, 0xf5, 0x13, 0xc2, 0x5f,
-0xe4, 0xab, 0xeb, 0x84, 0xbf, 0x04, 0xe7, 0x32,
-0x6e, 0x34, 0x48, 0x20, 0x76, 0x9e, 0x92, 0x86,
-0xee, 0xae, 0x14, 0x8a, 0xf4, 0x36, 0x22, 0x2b,
-0x6b, 0xea, 0x0f, 0xfc, 0x4a, 0xe4, 0x7f, 0xdd,
-0x55, 0x90, 0xff, 0x75, 0x89, 0xf2, 0xbf, 0x1c,
-0xc9, 0x88, 0x98, 0x18, 0x26, 0x61, 0x14, 0x61,
-0x8b, 0xf7, 0x17, 0x60, 0xe7, 0xeb, 0xbd, 0x4f,
-0xf9, 0x5f, 0x8e, 0xec, 0x61, 0x89, 0x04, 0x62,
-0x02, 0x65, 0x17, 0x79, 0x9d, 0xf8, 0x43, 0x6f,
-0x8f, 0xc7, 0xc6, 0x5f, 0x21, 0x08, 0x13, 0xfe,
-0x8a, 0x43, 0x1a, 0xb1, 0x55, 0x31, 0xb6, 0xa8,
-0x7b, 0x11, 0x6d, 0x75, 0xca, 0x88, 0xc4, 0x70,
-0x5e, 0xf6, 0x50, 0x05, 0x25, 0xee, 0xc4, 0x28,
-0x16, 0xe6, 0x7f, 0x91, 0x74, 0x49, 0xbf, 0xcd,
-0x7f, 0x05, 0xfb, 0xf3, 0x44, 0x18, 0x91, 0x5c,
-0xb7, 0x20, 0xfe, 0x22, 0x8c, 0xb6, 0x84, 0x60,
-0x17, 0xde, 0x1c, 0x37, 0x8b, 0xf5, 0xa0, 0x1d,
-0xa3, 0x38, 0x93, 0xe5, 0xf5, 0x0f, 0xbd, 0x87,
-0x96, 0x12, 0x6d, 0x5a, 0x34, 0xa4, 0xfe, 0xab,
-0x83, 0xdf, 0xc9, 0xf8, 0x02, 0x89, 0x6c, 0x90,
-0x5a, 0xa6, 0x56, 0xf6, 0x75, 0x02, 0x62, 0x61,
-0x4b, 0x8e, 0xbb, 0x2e, 0xc8, 0x32, 0x11, 0xf5,
-0xda, 0xaa, 0x6e, 0x75, 0xe9, 0x6f, 0xa8, 0x88,
-0xbf, 0xf2, 0xdd, 0x42, 0xf8, 0x4b, 0x77, 0x89,
-0x6c, 0x74, 0x99, 0x81, 0x1d, 0x5a, 0x95, 0x13,
-0xa3, 0x88, 0xfd, 0x93, 0x8e, 0xb6, 0x56, 0xff,
-0x73, 0x52, 0x6a, 0x24, 0x86, 0x53, 0x38, 0xd1,
-0x1c, 0xfc, 0x55, 0x35, 0xce, 0x04, 0xfe, 0xea,
-0x77, 0xd0, 0xd6, 0x6a, 0xfb, 0x80, 0x62, 0xe9,
-0x90, 0xe7, 0xbc, 0x37, 0x9f, 0x59, 0xd6, 0x1c,
-0x48, 0x4d, 0xcf, 0xc1, 0x2e, 0x1b, 0x5c, 0xef,
-0x28, 0xd0, 0x9f, 0x67, 0x42, 0xe4, 0x30, 0x3b,
-0x83, 0xa8, 0x67, 0x2f, 0xa7, 0x99, 0x0b, 0x36,
-0x23, 0x36, 0xa6, 0xd2, 0x3c, 0x65, 0x86, 0x4b,
-0x42, 0xc7, 0x6c, 0x84, 0x12, 0x0f, 0x01, 0x31,
-0x23, 0x42, 0x2d, 0x8e, 0x8e, 0xe2, 0xb4, 0x7a,
-0x43, 0xe6, 0x7f, 0x21, 0xec, 0xfa, 0x01, 0x6e,
-0x64, 0xcb, 0x25, 0xff, 0x25, 0x19, 0x31, 0xef,
-0x8b, 0xf7, 0x06, 0xa5, 0x34, 0xe2, 0x61, 0xa8,
-0x4d, 0xab, 0xb4, 0x6e, 0x1c, 0xf6, 0xd4, 0xa4,
-0x5b, 0x46, 0x08, 0x88, 0xc9, 0x64, 0xb1, 0x5c,
-0xfe, 0xd7, 0x17, 0x9d, 0xfc, 0xaf, 0x02, 0xfc,
-0x65, 0xd8, 0x2d, 0x66, 0xc8, 0xb2, 0x55, 0xef,
-0xd0, 0xfd, 0xb6, 0x09, 0x91, 0x6c, 0x31, 0xad,
-0x63, 0xbb, 0x79, 0x9c, 0xa4, 0x03, 0x8e, 0xe7,
-0xe3, 0x0f, 0x0f, 0x7a, 0xaa, 0x47, 0x84, 0xf3,
-0xff, 0x7d, 0xa8, 0x1e, 0x96, 0x28, 0x20, 0x55,
-0x31, 0x44, 0x06, 0x7f, 0x9e, 0xf0, 0xd7, 0xb7,
-0x64, 0xa0, 0x78, 0xb3, 0x28, 0x0b, 0x72, 0x10,
-0xc2, 0x64, 0xcc, 0xe2, 0x07, 0x11, 0x7f, 0x69,
-0xdf, 0x2c, 0x72, 0xe9, 0xcf, 0x7f, 0xca, 0x9b,
-0xde, 0x09, 0xdb, 0x24, 0xd7, 0x50, 0x89, 0x30,
-0x3a, 0x16, 0x0c, 0x93, 0x10, 0x07, 0xff, 0x94,
-0xcf, 0xcb, 0x06, 0x2e, 0x27, 0x67, 0xbb, 0x14,
-0x39, 0xda, 0x17, 0xc7, 0x4b, 0xd6, 0x28, 0xb7,
-0xf2, 0x6b, 0x7c, 0x7f, 0x36, 0xf0, 0x90, 0x4b,
-0x7f, 0xde, 0x3b, 0x01, 0xb3, 0x7b, 0xc5, 0x71,
-0xf1, 0x7f, 0xb3, 0xfd, 0x79, 0x55, 0xe0, 0x2f,
-0xb1, 0x01, 0x09, 0xc7, 0x5e, 0x46, 0x6b, 0x10,
-0x47, 0x46, 0x20, 0x82, 0x12, 0xc1, 0xb4, 0x8f,
-0x68, 0xed, 0x2d, 0xc0, 0x5f, 0x7f, 0x04, 0x77,
-0x58, 0xd4, 0x7b, 0xc2, 0x38, 0x2d, 0xb5, 0x35,
-0xae, 0x19, 0xc7, 0x49, 0x1f, 0xe0, 0xdb, 0x8a,
-0x50, 0x0c, 0xb0, 0x53, 0xc3, 0xd0, 0x28, 0x3d,
-0xa3, 0x34, 0xc1, 0x24, 0x17, 0x51, 0x8b, 0x96,
-0xc3, 0x7f, 0x1d, 0x30, 0x7f, 0x9b, 0xa9, 0xa6,
-0x48, 0x1e, 0xfa, 0xed, 0xb5, 0x43, 0x22, 0xff,
-0x6b, 0x0b, 0xa2, 0x48, 0x01, 0xc4, 0x7e, 0xc2,
-0x85, 0xfe, 0xbc, 0xe8, 0x9f, 0xb8, 0x14, 0xf2,
-0x4d, 0x57, 0x5b, 0xf7, 0xbc, 0xce, 0xfc, 0xe6,
-0x01, 0xb8, 0xc3, 0x42, 0x44, 0x96, 0xe3, 0xbf,
-0x76, 0xc0, 0xf7, 0x83, 0x0e, 0xc9, 0xa5, 0xdb,
-0x3a, 0x93, 0x1b, 0xbc, 0xf6, 0x3e, 0xf8, 0xa4,
-0x21, 0xce, 0x21, 0xf1, 0x4f, 0x4c, 0x73, 0x8e,
-0x28, 0xeb, 0xab, 0x4d, 0xdf, 0xbd, 0xbe, 0x2f,
-0x4b, 0x17, 0x7d, 0x9d, 0xc3, 0x7f, 0x19, 0x33,
-0x06, 0xca, 0x70, 0x6f, 0xea, 0xf5, 0xd9, 0x69,
-0x44, 0x0e, 0x01, 0x1a, 0x72, 0x90, 0x78, 0xda,
-0x52, 0x16, 0x6e, 0xf2, 0x4f, 0xeb, 0xa6, 0x23,
-0x2f, 0xd1, 0x42, 0x49, 0xee, 0x86, 0xa0, 0x00,
-0xc4, 0xae, 0x37, 0x90, 0xc7, 0x5f, 0x3f, 0x44,
-0x98, 0x43, 0xd1, 0x74, 0x2a, 0xe1, 0x2f, 0xe1,
-0x74, 0x9d, 0x66, 0xc2, 0x07, 0x98, 0x44, 0xa7,
-0x22, 0x6a, 0x05, 0x1e, 0x94, 0x0a, 0xd5, 0x76,
-0x0c, 0x0c, 0x02, 0xd5, 0x9a, 0xc3, 0xda, 0xc3,
-0x30, 0xc1, 0xea, 0x08, 0x13, 0x7d, 0x30, 0x25,
-0xff, 0x4b, 0x7a, 0x05, 0xa5, 0xe2, 0x39, 0x6c,
-0xc2, 0x26, 0xd4, 0x3c, 0x1f, 0xe6, 0x79, 0x34,
-0x31, 0x5e, 0x23, 0x3a, 0x3d, 0xb0, 0x36, 0x22,
-0x9e, 0xdc, 0x68, 0x21, 0x3a, 0x76, 0xe1, 0xaf,
-0x4f, 0xf4, 0x05, 0x79, 0xaf, 0xb2, 0x84, 0xd0,
-0x5f, 0xde, 0xcf, 0x4c, 0x89, 0x4b, 0x0f, 0x93,
-0x0b, 0x0a, 0x9b, 0x45, 0x8b, 0xda, 0x68, 0x96,
-0xbc, 0x51, 0xde, 0x08, 0xbf, 0x48, 0x29, 0xf4,
-0x7d, 0x2c, 0x3b, 0xfe, 0x10, 0xd6, 0xda, 0x6a,
-0x00, 0xd3, 0xd7, 0xba, 0xf5, 0x13, 0x62, 0xae,
-0x83, 0x7a, 0x7a, 0xa3, 0xf0, 0xd2, 0x42, 0x87,
-0xe3, 0xa0, 0x7d, 0x87, 0xf0, 0xd7, 0x7c, 0x02,
-0x50, 0x39, 0xfc, 0x55, 0x65, 0xe3, 0xaf, 0xa0,
-0x0b, 0x7f, 0xe5, 0x84, 0xe8, 0x0f, 0x4b, 0x68,
-0x16, 0x16, 0x71, 0x68, 0x3e, 0xe1, 0xa2, 0xa3,
-0xaf, 0xbe, 0x91, 0x97, 0xf9, 0xf5, 0x0e, 0xe9,
-0x8b, 0xe6, 0xf0, 0x97, 0xd7, 0xd3, 0x6d, 0xa4,
-0xa5, 0x44, 0x03, 0x8e, 0x57, 0x9f, 0x9c, 0x9e,
-0xaa, 0x3d, 0x5e, 0x51, 0xb5, 0xca, 0x2a, 0xee,
-0x92, 0x53, 0xb8, 0xc5, 0x49, 0xe5, 0x1b, 0x2c,
-0x06, 0x56, 0xa2, 0xa6, 0xa5, 0xf2, 0x5b, 0x0e,
-0x7f, 0xad, 0x11, 0xf8, 0x0b, 0x51, 0xed, 0x88,
-0xc8, 0x22, 0x29, 0x11, 0xf9, 0x44, 0xc1, 0x9a,
-0x3e, 0x31, 0x5e, 0xc2, 0x1f, 0x1b, 0x9d, 0x8e,
-0x30, 0xb9, 0xb5, 0xd1, 0x0c, 0x4b, 0x0f, 0x7f,
-0x76, 0x6b, 0x09, 0xaf, 0x6c, 0x24, 0xfd, 0x70,
-0xf2, 0xb1, 0x73, 0xf8, 0x6b, 0x0c, 0x26, 0xd6,
-0x52, 0xfc, 0x61, 0xdb, 0xc3, 0xfc, 0x9a, 0x27,
-0xd6, 0x67, 0x07, 0x19, 0x4a, 0x6f, 0x70, 0xaf,
-0xe8, 0xf0, 0x03, 0xca, 0xa4, 0x7a, 0xcd, 0x88,
-0xb5, 0x96, 0xd8, 0x47, 0xf7, 0x66, 0x8d, 0xa5,
-0x4c, 0xf2, 0x49, 0x39, 0x16, 0x2e, 0xfd, 0x0d,
-0x11, 0x64, 0xd8, 0x43, 0x31, 0x54, 0x3c, 0x36,
-0x20, 0x40, 0xd6, 0x08, 0x61, 0xe1, 0x31, 0xe5,
-0x63, 0xf6, 0x89, 0x28, 0xf4, 0x10, 0x68, 0x4c,
-0xe3, 0x6b, 0x73, 0x4e, 0xc1, 0x16, 0x38, 0x89,
-0x3d, 0x5f, 0x3a, 0xa6, 0xf9, 0xe0, 0x55, 0x62,
-0x85, 0x52, 0x05, 0xfc, 0x97, 0x8c, 0x36, 0xbc,
-0x86, 0x46, 0xed, 0x25, 0x01, 0xb2, 0x0e, 0xab,
-0x24, 0x24, 0x05, 0x54, 0x51, 0x25, 0x68, 0xe0,
-0x06, 0xfd, 0x5d, 0xbc, 0x54, 0x35, 0x20, 0x64,
-0x0f, 0x3b, 0x28, 0xd0, 0x37, 0xc2, 0x42, 0xea,
-0x4e, 0xbc, 0x84, 0x5e, 0x41, 0xa4, 0x20, 0xff,
-0xcb, 0x12, 0xba, 0xa0, 0x0e, 0xbd, 0x08, 0x3b,
-0x0d, 0x23, 0x2b, 0xfa, 0x19, 0xf7, 0xaf, 0x6c,
-0x67, 0xe4, 0x6e, 0x3a, 0x98, 0x0a, 0xf7, 0x09,
-0xa6, 0x38, 0x4d, 0x01, 0xba, 0x11, 0x84, 0x6f,
-0x49, 0x6f, 0x9c, 0x23, 0xfe, 0xea, 0x72, 0xe9,
-0xcf, 0x7b, 0x6b, 0x0a, 0xf1, 0x3b, 0x45, 0xfc,
-0xd2, 0x0e, 0x6b, 0x41, 0x82, 0x0c, 0xb0, 0x53,
-0x0b, 0xbf, 0x80, 0x97, 0x58, 0x87, 0x10, 0x88,
-0x80, 0xd0, 0x8e, 0xdd, 0x1d, 0xef, 0x80, 0xaa,
-0xb2, 0x4c, 0x41, 0xfe, 0x97, 0x3d, 0x2f, 0x3c,
-0x31, 0xeb, 0x8b, 0x94, 0xd0, 0x3a, 0x6c, 0x44,
-0x29, 0xa7, 0x78, 0x84, 0x7f, 0x40, 0xfb, 0x57,
-0x17, 0x0b, 0x3b, 0xe9, 0x90, 0x78, 0x29, 0x8b,
-0xfd, 0x93, 0xf1, 0xcc, 0x83, 0x81, 0xfe, 0x68,
-0xcb, 0xe6, 0xc3, 0x3e, 0x9e, 0xe7, 0xbf, 0x5c,
-0x68, 0x6b, 0xb1, 0x34, 0x46, 0xe1, 0x25, 0x7e,
-0x6b, 0x56, 0x19, 0x35, 0xa9, 0xec, 0xd7, 0xad,
-0x02, 0x6d, 0x79, 0x17, 0xc9, 0x88, 0xc4, 0x4b,
-0xa9, 0x6f, 0x5b, 0xb6, 0x58, 0xfd, 0xe2, 0x65,
-0x68, 0xac, 0xcf, 0xf3, 0x5f, 0x0e, 0x07, 0x2d,
-0x0c, 0x81, 0xdf, 0x3f, 0x90, 0x6e, 0xc6, 0x08,
-0x1d, 0x4d, 0xe3, 0xf4, 0xfc, 0x2b, 0xca, 0x3e,
-0x8b, 0xf5, 0x6e, 0xa6, 0x14, 0xce, 0x13, 0x66,
-0x94, 0x44, 0x4d, 0x43, 0xfc, 0xb8, 0xd9, 0x45,
-0xd2, 0xf4, 0x6e, 0xfd, 0x8d, 0x3c, 0xec, 0xaa,
-0x95, 0xf3, 0xeb, 0x30, 0xcc, 0x4f, 0x77, 0xa6,
-0xf1, 0x9d, 0x3f, 0xe2, 0x41, 0x68, 0xc6, 0xc5,
-0x25, 0x7b, 0xea, 0x6d, 0xfc, 0x4b, 0x9c, 0x8c,
-0xcf, 0x97, 0x21, 0x88, 0x4e, 0x05, 0xef, 0x54,
-0xff, 0x0d, 0x5c, 0xfa, 0x1b, 0x39, 0xd8, 0xf5,
-0xa4, 0xb3, 0x7f, 0x61, 0x3f, 0xa6, 0x35, 0x03,
-0xfb, 0x79, 0xb7, 0x29, 0x2a, 0xb8, 0x9d, 0x04,
-0x05, 0x48, 0x87, 0x01, 0x5f, 0xac, 0x36, 0xd3,
-0xb0, 0xb4, 0x43, 0x2c, 0x81, 0x46, 0x95, 0x82,
-0xe3, 0x5e, 0xef, 0xca, 0xff, 0x42, 0x9f, 0x7f,
-0xc5, 0x43, 0xec, 0x14, 0x49, 0xed, 0x49, 0x91,
-0xc3, 0x17, 0xf8, 0xbc, 0xb8, 0x76, 0x4f, 0xd1,
-0xdb, 0x94, 0x97, 0x14, 0xc7, 0xf5, 0xf9, 0x14,
-0xc9, 0x1e, 0x8e, 0x80, 0x94, 0xe3, 0xab, 0xa0,
-0x9b, 0x1b, 0xac, 0x47, 0x3b, 0xaa, 0xd2, 0xf0,
-0xd7, 0x6c, 0xbe, 0x3b, 0xff, 0xab, 0xd1, 0x12,
-0xf8, 0xeb, 0xd7, 0xd0, 0x38, 0x5c, 0x12, 0x59,
-0x2a, 0xd4, 0x0e, 0x13, 0x01, 0x43, 0xe9, 0x23,
-0x9d, 0xe4, 0x76, 0x74, 0xb6, 0x4f, 0x36, 0xbf,
-0x9c, 0x6e, 0xcc, 0x22, 0x22, 0xfb, 0x18, 0x4e,
-0x18, 0x91, 0x6c, 0xa0, 0x5e, 0x49, 0xf0, 0x5e,
-0x58, 0x98, 0xf5, 0xdf, 0xe2, 0x8a, 0x3f, 0x14,
-0xfc, 0xb2, 0xc8, 0xf6, 0x22, 0xfc, 0x55, 0x6a,
-0xcf, 0x2f, 0x13, 0x9d, 0xc0, 0x49, 0x3a, 0x35,
-0x32, 0x71, 0xca, 0x4c, 0x4a, 0xea, 0xf9, 0xbc,
-0x0c, 0xfd, 0xa5, 0x9b, 0xc7, 0x9a, 0xaf, 0xe8,
-0x77, 0x59, 0xff, 0xc6, 0xa7, 0xd6, 0xff, 0x12,
-0xb1, 0x07, 0x38, 0x28, 0xc3, 0x62, 0x11, 0x1e,
-0x97, 0xf9, 0x0e, 0x71, 0xb8, 0xcc, 0x85, 0x31,
-0x92, 0x9e, 0xb0, 0xa1, 0x19, 0x21, 0x0e, 0xba,
-0x79, 0x3e, 0x3a, 0xff, 0x51, 0x73, 0x56, 0x6a,
-0xa9, 0x5b, 0x7f, 0x5e, 0x1e, 0xf7, 0xfd, 0x3b,
-0x49, 0xca, 0xbf, 0x29, 0x36, 0x97, 0x8f, 0xc0,
-0x4e, 0xeb, 0xfe, 0x03, 0xec, 0x44, 0xa3, 0xf9,
-0xdf, 0x69, 0x6b, 0xb3, 0x36, 0xd9, 0x99, 0xc8,
-0x14, 0x9b, 0x71, 0x14, 0xda, 0x19, 0x62, 0xd8,
-0x56, 0x27, 0xfe, 0xd0, 0xd1, 0x9f, 0xef, 0x5c,
-0x2f, 0xfb, 0x39, 0x6b, 0x13, 0x61, 0x15, 0x86,
-0xb6, 0x92, 0xdd, 0x2d, 0xf4, 0x0f, 0x45, 0xfe,
-0x57, 0x5e, 0x1a, 0x91, 0x57, 0x0c, 0x61, 0xcf,
-0xdf, 0x0c, 0x29, 0x0a, 0x98, 0x51, 0xe7, 0x17,
-0xe4, 0x7f, 0xd9, 0xb2, 0xf3, 0x8e, 0xb6, 0x21,
-0xa9, 0x40, 0x88, 0x37, 0x41, 0xdf, 0x0d, 0xb9,
-0xbc, 0x75, 0x07, 0x7f, 0x65, 0x0d, 0x7a, 0xd9,
-0x36, 0x72, 0xbe, 0xdc, 0x38, 0x83, 0xf3, 0xeb,
-0x3a, 0xfd, 0x79, 0x45, 0x6a, 0x1b, 0x0a, 0x91,
-0x8d, 0xab, 0x67, 0x10, 0x76, 0xed, 0x15, 0xe7,
-0xd8, 0xd1, 0x29, 0xd2, 0x88, 0x57, 0xe3, 0x5d,
-0xd4, 0x72, 0x27, 0xa2, 0xc6, 0xee, 0xd4, 0xe6,
-0x8f, 0x6f, 0xa0, 0x3f, 0xef, 0x32, 0x86, 0xa1,
-0x09, 0x6e, 0x15, 0x6a, 0xf3, 0x96, 0xd0, 0xdf,
-0x90, 0x69, 0x5f, 0xb7, 0x3a, 0xf7, 0xdc, 0x6a,
-0x6b, 0x47, 0x40, 0x6d, 0x7b, 0xf2, 0x3a, 0xfd,
-0x79, 0xf4, 0x33, 0xdf, 0x28, 0x14, 0xe2, 0xd0,
-0x88, 0x26, 0xb0, 0x19, 0x04, 0xe7, 0x92, 0x4a,
-0x97, 0x56, 0x89, 0x9c, 0x23, 0x23, 0xb2, 0x6c,
-0x65, 0xaa, 0xf2, 0x3a, 0xfd, 0xf9, 0x3c, 0x25,
-0x91, 0x83, 0x4b, 0xc4, 0x76, 0xdd, 0xf0, 0xd2,
-0xf6, 0x4d, 0x55, 0xea, 0x21, 0x2b, 0x7a, 0x8f,
-0xfa, 0xb4, 0x6f, 0x0a, 0xff, 0x25, 0xee, 0x79,
-0x2a, 0x7f, 0xf3, 0x2e, 0xc2, 0xd4, 0x0b, 0xe1,
-0xe7, 0x71, 0x3b, 0xff, 0x2b, 0x77, 0x69, 0x3f,
-0xfa, 0xe1, 0x3f, 0x24, 0x9e, 0x5a, 0x10, 0x2b,
-0x37, 0xb9, 0xe3, 0x0f, 0xf7, 0xe7, 0x51, 0x80,
-0xc3, 0xcb, 0xe8, 0x42, 0xff, 0x70, 0x86, 0xad,
-0x7f, 0x28, 0x2f, 0xd9, 0xfa, 0x87, 0x86, 0xb1,
-0xfc, 0x16, 0x41, 0xd0, 0x54, 0xa5, 0x5b, 0xd4,
-0xe8, 0x7d, 0x6e, 0xfe, 0xcb, 0xee, 0xde, 0xf4,
-0x19, 0x88, 0xf9, 0x64, 0x87, 0xaf, 0x89, 0xaa,
-0x36, 0x7f, 0x21, 0x04, 0x4f, 0xc4, 0x25, 0x84,
-0x66, 0xec, 0x9c, 0x39, 0xd6, 0xda, 0xa5, 0x06,
-0xa6, 0x21, 0xfe, 0xba, 0xdc, 0xda, 0x05, 0xe1,
-0x47, 0x5d, 0xfc, 0x97, 0xf7, 0x90, 0xdd, 0x87,
-0x7a, 0x8e, 0x34, 0xb9, 0x62, 0x08, 0xd9, 0xf9,
-0xa1, 0xf4, 0x38, 0xad, 0x63, 0xdb, 0x12, 0x79,
-0x6a, 0x0c, 0xfe, 0xc7, 0x0c, 0xa9, 0x7f, 0x08,
-0x57, 0xf4, 0x3b, 0x97, 0xe1, 0x1c, 0x2c, 0xcc,
-0xff, 0xba, 0x8e, 0xff, 0x5a, 0x60, 0x89, 0xea,
-0x00, 0xaf, 0x12, 0x8f, 0x6f, 0x2b, 0xae, 0x4b,
-0xfc, 0x75, 0x85, 0x6a, 0xba, 0x0d, 0xa2, 0x07,
-0x72, 0x65, 0xda, 0x02, 0x73, 0xe5, 0xff, 0x4a,
-0x7f, 0xc3, 0x06, 0x59, 0x01, 0x99, 0xff, 0x55,
-0x27, 0x89, 0x30, 0xba, 0xe4, 0x13, 0x01, 0x96,
-0x9e, 0xfb, 0x49, 0x44, 0x9d, 0xf0, 0x97, 0x50,
-0xa4, 0x9f, 0x82, 0xbf, 0x5c, 0xb4, 0x57, 0x50,
-0x6a, 0xcb, 0x6b, 0x8e, 0xec, 0xbc, 0x86, 0xf8,
-0xcb, 0xc9, 0x08, 0xcb, 0x89, 0x75, 0xac, 0x14,
-0x51, 0x1f, 0x88, 0xbf, 0xca, 0x6e, 0xcc, 0x7f,
-0xe5, 0x5f, 0x12, 0x91, 0xff, 0xd5, 0x06, 0x73,
-0xed, 0x17, 0x89, 0x22, 0x1b, 0x05, 0x34, 0xfb,
-0x9c, 0xb8, 0xe7, 0x6b, 0xe2, 0xdd, 0x28, 0xd4,
-0x3f, 0x74, 0xf7, 0x8f, 0x14, 0x2a, 0x39, 0x94,
-0xee, 0xc2, 0x9b, 0x29, 0xff, 0x8b, 0xcb, 0x17,
-0xdb, 0x93, 0xeb, 0x1f, 0x4a, 0xd0, 0x96, 0x49,
-0x79, 0xe6, 0xae, 0x07, 0xc3, 0x54, 0xff, 0x4b,
-0xe2, 0x9d, 0x1b, 0xea, 0x6f, 0x88, 0x61, 0x72,
-0x1b, 0xde, 0xfc, 0x25, 0x6e, 0x23, 0xb2, 0xf3,
-0x29, 0x51, 0x2c, 0xec, 0xcd, 0x1b, 0xf2, 0x5f,
-0x04, 0xc4, 0x58, 0x56, 0x68, 0xcb, 0x93, 0xda,
-0xbc, 0x2a, 0x13, 0xc1, 0x2a, 0x25, 0x73, 0x6d,
-0x53, 0x63, 0x2f, 0x90, 0xa2, 0x4b, 0x85, 0x31,
-0x06, 0x0f, 0x02, 0x6f, 0xbb, 0x81, 0xfe, 0xbc,
-0xa4, 0xbd, 0x5a, 0x48, 0xed, 0xf0, 0x30, 0x1d,
-0x12, 0x52, 0xcb, 0x8b, 0x3c, 0xc8, 0x3b, 0x5d,
-0x42, 0xf4, 0xc3, 0xfa, 0x8b, 0x3a, 0xc2, 0xae,
-0x91, 0x6d, 0x77, 0xaa, 0x2f, 0xb6, 0x56, 0xee,
-0x53, 0x47, 0x0a, 0xf3, 0xbf, 0x44, 0x1d, 0x8d,
-0x42, 0x1d, 0x57, 0x53, 0x38, 0x8a, 0xdd, 0x1d,
-0x86, 0xa3, 0xc8, 0x11, 0xb2, 0xa1, 0x19, 0xed,
-0x5f, 0x54, 0xff, 0x8b, 0x8c, 0x96, 0xc6, 0x5d,
-0x53, 0xf5, 0xe7, 0x6d, 0x5e, 0x26, 0x2b, 0xe9,
-0x18, 0x5d, 0x26, 0x3a, 0x99, 0x07, 0xd5, 0x3c,
-0x65, 0xf3, 0x2a, 0x51, 0x63, 0x6d, 0x2f, 0x10,
-0xe2, 0x68, 0x2d, 0x9b, 0x85, 0x3e, 0xa4, 0xc0,
-0x7a, 0xee, 0xfc, 0x2f, 0x97, 0xda, 0x7c, 0xd6,
-0xd6, 0x3f, 0xbc, 0x3d, 0xfe, 0x27, 0xdf, 0x46,
-0xe3, 0x2a, 0x91, 0x5c, 0xdf, 0x11, 0x2d, 0x77,
-0x0d, 0xff, 0xc5, 0xfa, 0xf2, 0xdf, 0xb5, 0x5f,
-0x4c, 0x08, 0x45, 0x8e, 0xd9, 0xfa, 0xa7, 0x7c,
-0x27, 0xdd, 0x3c, 0x25, 0xff, 0x6b, 0x0a, 0x9f,
-0x62, 0x9f, 0xfb, 0x19, 0x6e, 0x69, 0x7a, 0xaa,
-0x30, 0xb5, 0x96, 0x74, 0x8d, 0xac, 0x00, 0xbf,
-0x6d, 0x44, 0x8a, 0xef, 0x71, 0x25, 0x5f, 0xff,
-0x4b, 0x97, 0x6a, 0xf3, 0x04, 0xbb, 0x78, 0x93,
-0x1d, 0x7f, 0x98, 0x5a, 0x90, 0x2d, 0x1d, 0x4b,
-0x5e, 0x85, 0x71, 0x34, 0x02, 0xe3, 0x49, 0x51,
-0x1a, 0xec, 0x52, 0x60, 0xac, 0x9c, 0xf0, 0x97,
-0x10, 0x4b, 0x8c, 0x79, 0xaf, 0x25, 0x62, 0x54,
-0xff, 0xcb, 0x95, 0xff, 0x85, 0x90, 0x4a, 0xaa,
-0xf1, 0x3f, 0xe3, 0xc4, 0x1f, 0x1e, 0xe4, 0x8b,
-0xe2, 0xea, 0xba, 0xc4, 0x59, 0x38, 0x8a, 0xbd,
-0x11, 0x10, 0xa1, 0x89, 0x7a, 0xf5, 0x90, 0x2d,
-0x5d, 0x72, 0x87, 0xd5, 0x12, 0x62, 0x37, 0xc7,
-0x5f, 0xc8, 0x56, 0x53, 0x56, 0xb8, 0x9b, 0xff,
-0x92, 0xfd, 0x7c, 0x32, 0xa7, 0x3f, 0x8f, 0x7d,
-0x68, 0x0b, 0x7a, 0x1c, 0xa0, 0x0d, 0xf1, 0x81,
-0x44, 0x5e, 0x9a, 0x1e, 0x76, 0xeb, 0x82, 0x11,
-0xfb, 0x13, 0x38, 0x68, 0xe0, 0xe0, 0xde, 0xe7,
-0xca, 0xff, 0xca, 0xfb, 0x2d, 0xbb, 0x73, 0xc7,
-0x86, 0x89, 0x2a, 0x53, 0x8d, 0xa1, 0xe7, 0xd9,
-0xd3, 0x62, 0x0c, 0xfb, 0x1c, 0x86, 0x45, 0x70,
-0x64, 0x0b, 0x52, 0x24, 0x17, 0xe6, 0x53, 0xd1,
-0xe1, 0xf3, 0x0f, 0xa9, 0x75, 0x4e, 0xfe, 0x97,
-0xa3, 0x3f, 0xbf, 0xca, 0x39, 0x96, 0x17, 0xfd,
-0x4c, 0xd1, 0x62, 0x5f, 0xbc, 0x84, 0xee, 0xc1,
-0x04, 0x1c, 0x1e, 0xd6, 0x2e, 0x21, 0x92, 0xfa,
-0x10, 0xf7, 0x21, 0xf2, 0xf0, 0x71, 0x07, 0x21,
-0x9d, 0x76, 0x8f, 0xdf, 0x3b, 0x61, 0x86, 0x71,
-0xc7, 0x77, 0x7e, 0x57, 0xca, 0xc9, 0xff, 0xca,
-0x78, 0x0a, 0x64, 0xe7, 0x1b, 0xff, 0x8c, 0xc4,
-0xd3, 0x2c, 0x74, 0xbf, 0xa7, 0x0c, 0x25, 0xd1,
-0x94, 0xb7, 0xa2, 0xcb, 0x87, 0xcf, 0xc1, 0x95,
-0xb6, 0x20, 0xff, 0xeb, 0x46, 0xc9, 0x2c, 0x0b,
-0x96, 0xf9, 0xa5, 0xfe, 0x06, 0xe1, 0xaf, 0xe4,
-0x49, 0xf8, 0x5d, 0xee, 0xd2, 0xb6, 0x88, 0xb5,
-0x92, 0xf8, 0xaf, 0x5f, 0xaa, 0x0b, 0xb2, 0x9b,
-0x33, 0x4e, 0xfe, 0xd7, 0xa3, 0x39, 0xfd, 0xf9,
-0xc2, 0x28, 0xc1, 0x5d, 0xa4, 0xd8, 0x36, 0x29,
-0x68, 0x2f, 0x6d, 0x54, 0x71, 0x85, 0x14, 0x1e,
-0x4e, 0x50, 0xdc, 0xe0, 0xfc, 0x5a, 0x78, 0xd6,
-0x0a, 0xde, 0x83, 0x1e, 0xa3, 0xe1, 0xce, 0xff,
-0xba, 0xfe, 0x39, 0x8e, 0xc8, 0xbc, 0x3e, 0x7f,
-0xca, 0xa5, 0xfd, 0x74, 0xc9, 0xc3, 0x3e, 0x0f,
-0x9d, 0x7a, 0x70, 0x40, 0xad, 0xc7, 0xe7, 0xe4,
-0xf3, 0xbf, 0xaa, 0xc2, 0x42, 0xe4, 0xd0, 0xec,
-0x06, 0x27, 0xed, 0x2b, 0x28, 0x94, 0xd2, 0x4f,
-0x2e, 0xe9, 0x22, 0x20, 0x26, 0x94, 0xfa, 0xca,
-0xaa, 0xfa, 0x04, 0x17, 0xb0, 0x1f, 0x11, 0xb4,
-0xc9, 0xa2, 0xd5, 0xc6, 0x2e, 0xd5, 0x68, 0x51,
-0x1b, 0x98, 0x5d, 0x07, 0x5a, 0xd4, 0xff, 0xaa,
-0xcf, 0x77, 0xa6, 0xac, 0xff, 0x35, 0x11, 0x0a,
-0x1e, 0x13, 0xfd, 0x33, 0x06, 0x0d, 0x32, 0xc1,
-0x04, 0xa1, 0x19, 0x11, 0xc4, 0x1f, 0xf9, 0x27,
-0x8c, 0xe8, 0xeb, 0xfe, 0xcf, 0x28, 0x73, 0x52,
-0x27, 0x8c, 0x2e, 0x2b, 0xfc, 0xbc, 0x02, 0xae,
-0xf8, 0xc3, 0xe0, 0xad, 0x82, 0xe4, 0x72, 0xea,
-0x7f, 0x4d, 0x4a, 0xbd, 0xca, 0x51, 0x07, 0x64,
-0xed, 0x57, 0x8e, 0xc2, 0xef, 0x8c, 0xd8, 0x71,
-0x89, 0xc8, 0xf4, 0xa6, 0x81, 0x40, 0x9b, 0xf0,
-0xfd, 0xbe, 0xfb, 0x4a, 0x60, 0xff, 0xd2, 0x1c,
-0xfe, 0xba, 0x54, 0x2c, 0xb9, 0xad, 0xe9, 0x93,
-0xde, 0x3f, 0xf2, 0xc3, 0xfd, 0x5b, 0x64, 0xda,
-0x57, 0xd4, 0x3e, 0xf1, 0x30, 0x16, 0x0c, 0xf8,
-0xf7, 0x2e, 0x6d, 0xc0, 0xa9, 0xf7, 0x08, 0xb6,
-0x2c, 0x7d, 0x44, 0x54, 0x9e, 0xdd, 0x4c, 0x1c,
-0xd9, 0x49, 0x59, 0x35, 0x6c, 0xd4, 0xc9, 0xff,
-0x7a, 0x4f, 0x70, 0x5b, 0x2a, 0x95, 0xa4, 0x3d,
-0xc2, 0x82, 0x67, 0x03, 0x84, 0xbf, 0x3e, 0x44,
-0x90, 0x55, 0x8c, 0xc6, 0xb4, 0x97, 0xac, 0xca,
-0x51, 0x35, 0x9d, 0x78, 0x16, 0xde, 0x42, 0x8c,
-0xb6, 0xa2, 0x07, 0xb1, 0xf0, 0x73, 0x6d, 0xc1,
-0x38, 0xde, 0x7c, 0x05, 0x3a, 0x8c, 0xe0, 0x39,
-0xa1, 0x77, 0x61, 0xe7, 0x7f, 0xb5, 0xc3, 0x4e,
-0xe9, 0xb3, 0xbd, 0x8a, 0x83, 0x12, 0x1a, 0xd8,
-0x28, 0x1c, 0x7b, 0xd5, 0xb0, 0xe3, 0x72, 0x4d,
-0x63, 0xf0, 0xe6, 0x20, 0x45, 0x2d, 0xda, 0xbe,
-0xdf, 0x4d, 0x19, 0xa8, 0x32, 0x8b, 0x23, 0x45,
-0x27, 0xa7, 0xa5, 0xfd, 0xa2, 0xc5, 0xd1, 0xdf,
-0x98, 0xf1, 0x13, 0xef, 0xbf, 0xd2, 0xb9, 0x96,
-0xc8, 0xf2, 0xeb, 0x08, 0xda, 0xe0, 0x5a, 0xd9,
-0x25, 0x46, 0x59, 0xa5, 0x17, 0xc0, 0xb7, 0x37,
-0xf8, 0xac, 0xf1, 0x43, 0xc4, 0x68, 0x2b, 0xe8,
-0xd2, 0xde, 0x9b, 0x82, 0x4b, 0x8a, 0x69, 0xa5,
-0xdd, 0xa8, 0x12, 0x36, 0x87, 0x9c, 0xfe, 0xc6,
-0x7b, 0xfc, 0x39, 0x4e, 0x5c, 0x12, 0xde, 0x33,
-0xc6, 0x1b, 0xec, 0x30, 0x51, 0x47, 0xe6, 0x9d,
-0xe2, 0xf4, 0xbe, 0xd8, 0xf3, 0xb2, 0x46, 0x6a,
-0x1b, 0x22, 0x22, 0xd1, 0x3b, 0x3e, 0x50, 0x47,
-0xc1, 0xa5, 0x23, 0x6c, 0xc0, 0x7c, 0x91, 0x5a,
-0x72, 0xfa, 0x1b, 0xdb, 0xe1, 0x6d, 0x66, 0x4b,
-0xca, 0x5f, 0x01, 0x57, 0x31, 0xb5, 0x92, 0x51,
-0xcf, 0xc3, 0xf0, 0x29, 0xfc, 0xdc, 0xaa, 0xce,
-0x22, 0xda, 0xba, 0xe6, 0x48, 0xd6, 0x8c, 0xb5,
-0x37, 0x9a, 0xc2, 0xe7, 0xff, 0xa3, 0x90, 0xc4,
-0xcc, 0xc7, 0x1f, 0xfe, 0xd8, 0x95, 0x57, 0xdb,
-0x4b, 0x5c, 0x49, 0x3e, 0x2a, 0x78, 0xad, 0x40,
-0x88, 0x25, 0x7b, 0x64, 0x39, 0x0f, 0x5c, 0x13,
-0xd8, 0x88, 0x71, 0xce, 0x7c, 0x81, 0xee, 0xd9,
-0x87, 0xdf, 0x07, 0x5f, 0xad, 0xee, 0xca, 0x5f,
-0xd9, 0xf9, 0x5f, 0xd3, 0xe6, 0x9a, 0x87, 0x67,
-0xd6, 0x5c, 0x52, 0x09, 0x7f, 0x75, 0x0f, 0x56,
-0xe6, 0xf5, 0x21, 0xc5, 0x2f, 0x7d, 0x49, 0xa9,
-0xb5, 0x14, 0xda, 0xbf, 0xa8, 0x45, 0xa1, 0x42,
-0xd5, 0x3b, 0x44, 0x32, 0xa6, 0x40, 0x64, 0x41,
-0x4b, 0xbb, 0xc4, 0xfe, 0xe8, 0xe0, 0xaf, 0x65,
-0x22, 0x0e, 0xcd, 0x3e, 0x73, 0x08, 0xe1, 0x56,
-0x52, 0xb4, 0x52, 0xf0, 0xcb, 0x76, 0x41, 0xa8,
-0x30, 0xf1, 0x8c, 0x96, 0xda, 0x0d, 0x55, 0xbd,
-0xb8, 0x8e, 0x7d, 0x04, 0xdb, 0xa4, 0xd6, 0xd0,
-0x66, 0xe2, 0xbf, 0x2c, 0xad, 0xde, 0xd1, 0xdf,
-0x18, 0xf3, 0x94, 0xc1, 0xc1, 0x76, 0xdb, 0xe7,
-0x7f, 0x09, 0x7d, 0x7e, 0x89, 0x0b, 0x52, 0x44,
-0xd0, 0x34, 0xbf, 0x0d, 0x8b, 0x10, 0x0e, 0x28,
-0x7f, 0x5f, 0xf6, 0x9a, 0x13, 0x9a, 0x78, 0x16,
-0xfe, 0x29, 0x5d, 0x11, 0xf7, 0xd1, 0x3d, 0x29,
-0xee, 0xc9, 0xde, 0xb2, 0x1e, 0x9f, 0x23, 0xbe,
-0x4f, 0x8b, 0xea, 0x35, 0xce, 0xdb, 0xdc, 0x16,
-0xef, 0x96, 0x22, 0xf3, 0x2b, 0xe1, 0xd7, 0x32,
-0xff, 0x6b, 0xa5, 0x79, 0x31, 0x8d, 0xd0, 0xec,
-0x36, 0x65, 0x00, 0x2e, 0xea, 0x0b, 0xb3, 0xab,
-0x6e, 0x57, 0x46, 0xcc, 0x73, 0x3b, 0x23, 0x4b,
-0x4a, 0xe9, 0x1c, 0xe9, 0xd7, 0x50, 0x4f, 0xb1,
-0x19, 0xb9, 0xf8, 0xc3, 0x03, 0xae, 0xe5, 0x4b,
-0x5f, 0x94, 0x8f, 0x3f, 0x14, 0x83, 0xf2, 0x5d,
-0xe2, 0xbf, 0xce, 0x29, 0x63, 0xcb, 0x48, 0xa6,
-0x92, 0xf0, 0x17, 0xff, 0x48, 0xbf, 0xcb, 0x2c,
-0xa1, 0x99, 0xfb, 0x91, 0xfe, 0x92, 0x3b, 0xfe,
-0xd0, 0x93, 0x2b, 0x1b, 0xf7, 0x09, 0x7f, 0x19,
-0xba, 0x6c, 0xbd, 0x4a, 0x1e, 0xb5, 0x0f, 0x24,
-0xf7, 0x46, 0x87, 0x11, 0x56, 0x18, 0xce, 0x3d,
-0x1f, 0x13, 0x06, 0x11, 0x97, 0x12, 0xc4, 0x69,
-0x6e, 0xe9, 0x51, 0xbe, 0xee, 0xe4, 0x7f, 0x6d,
-0x47, 0x47, 0x44, 0xec, 0x29, 0xaf, 0xa6, 0x9f,
-0x81, 0x8a, 0x41, 0x3b, 0xfe, 0xd0, 0xd6, 0x9f,
-0x47, 0x87, 0xe1, 0x78, 0x28, 0xdb, 0xac, 0xdb,
-0x7b, 0x13, 0x4e, 0x7c, 0x0a, 0x9b, 0x0f, 0xac,
-0x63, 0x57, 0xcc, 0xc7, 0xe8, 0xe8, 0xf5, 0x42,
-0x3e, 0xff, 0xeb, 0x9f, 0x0c, 0x59, 0xff, 0xab,
-0xec, 0x6d, 0xef, 0x16, 0x7e, 0xef, 0xb0, 0x83,
-0xbf, 0x08, 0x91, 0x51, 0x87, 0xcf, 0x19, 0x52,
-0xd7, 0xb0, 0x1f, 0x60, 0xcb, 0x37, 0x24, 0x23,
-0xf6, 0x98, 0x4d, 0x8d, 0x71, 0x2a, 0xc4, 0xac,
-0x7d, 0x9b, 0x65, 0x1d, 0xfc, 0x75, 0x4a, 0xef,
-0xb2, 0x55, 0x71, 0xd4, 0xe7, 0xe4, 0x91, 0xa0,
-0x3c, 0x37, 0xee, 0x74, 0x02, 0x11, 0xd5, 0x10,
-0xeb, 0x10, 0x2f, 0x80, 0x42, 0xf2, 0x38, 0xc9,
-0x99, 0xe1, 0x7e, 0xc9, 0x8d, 0xea, 0x02, 0x9a,
-0xe5, 0xf4, 0x0f, 0x0f, 0x79, 0xae, 0x66, 0x6d,
-0xfc, 0x75, 0x8a, 0x64, 0x64, 0x64, 0xb6, 0x57,
-0xd0, 0x96, 0xdd, 0x80, 0xb9, 0x7c, 0x66, 0x5c,
-0xd9, 0x21, 0xf0, 0x97, 0x78, 0x21, 0xbf, 0xc8,
-0x63, 0xe9, 0x55, 0xe9, 0x4a, 0xbc, 0x99, 0x0b,
-0x20, 0x76, 0xd9, 0xae, 0xfb, 0x86, 0x33, 0x6c,
-0xcc, 0xa6, 0x63, 0x3c, 0xf9, 0xb0, 0xc3, 0x9c,
-0xa7, 0xe7, 0x69, 0x80, 0x5b, 0xdb, 0x2a, 0xe3,
-0x85, 0xbe, 0x9f, 0x14, 0x4b, 0x94, 0x29, 0x4b,
-0x79, 0xfd, 0x43, 0x63, 0xdc, 0x94, 0x3e, 0xe4,
-0xb4, 0x71, 0xc8, 0xe4, 0x03, 0x11, 0x6f, 0xcd,
-0x7b, 0x9e, 0x17, 0x05, 0x35, 0x86, 0xb0, 0xab,
-0x32, 0xa7, 0x33, 0xf0, 0xde, 0x75, 0xfa, 0x1b,
-0x5f, 0xa3, 0x9c, 0x1a, 0x5b, 0xbf, 0xce, 0xdc,
-0x65, 0x96, 0xa0, 0xa1, 0xbe, 0xef, 0x25, 0xe7,
-0x36, 0xef, 0x51, 0xef, 0x61, 0x6f, 0x38, 0xb2,
-0xf3, 0x39, 0xfd, 0xf9, 0x8d, 0x02, 0x88, 0xe5,
-0xea, 0x2f, 0x7b, 0xab, 0x38, 0x5e, 0x5a, 0x66,
-0x3f, 0x27, 0x98, 0xe7, 0x41, 0x6c, 0x87, 0xfc,
-0x7e, 0xe9, 0x87, 0x3b, 0xf8, 0x2b, 0x6d, 0x3f,
-0xe7, 0xd1, 0x66, 0x7a, 0xce, 0x2d, 0xdb, 0x5d,
-0xf5, 0x97, 0xd3, 0x3b, 0x5d, 0x2a, 0x7c, 0xcb,
-0x8a, 0xf5, 0xa2, 0x7e, 0xd8, 0xa9, 0x53, 0x5e,
-0x52, 0x11, 0xb5, 0xac, 0x25, 0xfe, 0x6b, 0x0f,
-0xdb, 0x9a, 0xbb, 0xc7, 0x08, 0xb7, 0x90, 0x41,
-0xd9, 0x4c, 0xa6, 0x96, 0xaf, 0xbf, 0x5c, 0x1c,
-0xe7, 0x3d, 0x38, 0x16, 0x1a, 0xe1, 0xaf, 0x1e,
-0x88, 0xdc, 0x2c, 0x9c, 0xe4, 0x6c, 0xf3, 0x23,
-0xa0, 0xc9, 0xf8, 0x43, 0x44, 0x64, 0xed, 0x8a,
-0x21, 0x85, 0x65, 0x28, 0xec, 0xd0, 0xee, 0xf0,
-0x9d, 0xe6, 0x40, 0xab, 0x90, 0x46, 0xcc, 0xd5,
-0x5f, 0x26, 0xde, 0x6a, 0xf6, 0x72, 0xe2, 0x65,
-0xf4, 0x2b, 0x21, 0x47, 0x7f, 0xde, 0x70, 0x7b,
-0xf8, 0xaf, 0xe5, 0x64, 0xe7, 0xa7, 0x0f, 0x51,
-0xc5, 0x07, 0x91, 0x7c, 0x64, 0x5e, 0xd1, 0x6b,
-0xcc, 0x7c, 0xfe, 0xd7, 0x0e, 0xc1, 0x7f, 0x35,
-0xc9, 0x4f, 0x7d, 0x82, 0x43, 0xf0, 0x76, 0x01,
-0xd0, 0x18, 0x17, 0x85, 0x86, 0xff, 0xca, 0x9b,
-0x93, 0xaf, 0xcf, 0x1b, 0xc7, 0xbc, 0x51, 0x02,
-0x62, 0x73, 0x6f, 0x80, 0xbf, 0x0e, 0xc3, 0x2e,
-0x98, 0x79, 0x1d, 0x10, 0x53, 0x81, 0x11, 0x76,
-0xa8, 0x91, 0x27, 0x78, 0x87, 0x05, 0x59, 0xf6,
-0x59, 0x12, 0xa2, 0x27, 0x68, 0xe6, 0xb3, 0xf1,
-0x57, 0xcb, 0xb4, 0x7e, 0xef, 0x7e, 0x96, 0xef,
-0x67, 0x73, 0xd3, 0x94, 0x40, 0x44, 0x59, 0x06,
-0xd1, 0x73, 0x7d, 0x8c, 0xa2, 0x84, 0x66, 0x39,
-0xfc, 0x75, 0xd3, 0x4f, 0x72, 0xb0, 0x4b, 0xdf,
-0x6f, 0x04, 0x49, 0x53, 0x65, 0x28, 0x97, 0x48,
-0x28, 0x94, 0x30, 0x55, 0x3d, 0xb8, 0xc7, 0x3c,
-0x04, 0xa5, 0xb9, 0x8c, 0xc2, 0x65, 0x52, 0x88,
-0xde, 0x14, 0xd0, 0x2c, 0x87, 0xbf, 0x7e, 0xcf,
-0x0b, 0xf4, 0x3c, 0x7d, 0x02, 0x64, 0x89, 0x32,
-0xe2, 0xa2, 0xea, 0x2e, 0xf6, 0xcf, 0xd6, 0xe4,
-0xdc, 0x8d, 0xf9, 0xd0, 0x44, 0xf1, 0xf2, 0xb3,
-0x21, 0xe7, 0x7d, 0xb6, 0xeb, 0x7f, 0xad, 0xf1,
-0xec, 0x51, 0xf3, 0xa3, 0xc3, 0x5f, 0xb4, 0x0d,
-0x96, 0x7b, 0xf2, 0x51, 0x29, 0x84, 0xf8, 0x7e,
-0xee, 0x6f, 0x99, 0x85, 0x8a, 0x88, 0x6e, 0xfc,
-0x35, 0x33, 0xa6, 0x6e, 0x71, 0xe5, 0x76, 0x39,
-0x93, 0x71, 0x7a, 0xda, 0x33, 0xea, 0x2d, 0xa5,
-0x42, 0xcc, 0x22, 0x6d, 0x59, 0x4c, 0x4f, 0xdc,
-0xb6, 0xba, 0xc4, 0x84, 0xe5, 0x74, 0x33, 0x3a,
-0x30, 0xb9, 0xfa, 0xcb, 0x77, 0xc1, 0x8b, 0x56,
-0xed, 0x5e, 0x81, 0xbf, 0x4e, 0x81, 0x10, 0x99,
-0xc7, 0x75, 0xc3, 0xce, 0xff, 0x9a, 0x46, 0x89,
-0x60, 0x6a, 0xfa, 0x3e, 0x21, 0x4d, 0x4f, 0xa5,
-0xc1, 0x2e, 0x8b, 0xfc, 0x2f, 0xbc, 0x34, 0xc1,
-0x48, 0x91, 0x43, 0x1b, 0x76, 0xe9, 0x1f, 0xf2,
-0x6e, 0x27, 0xfe, 0x30, 0x49, 0x85, 0x62, 0xdd,
-0xa7, 0x46, 0xba, 0xcd, 0x88, 0x51, 0xfd, 0xe5,
-0xb5, 0xf9, 0xd0, 0x0e, 0xa9, 0xb4, 0x26, 0xf7,
-0xaf, 0x1c, 0xff, 0xf5, 0x19, 0x5c, 0x7b, 0xbf,
-0xc1, 0x71, 0x35, 0x3e, 0x05, 0xdf, 0x33, 0xef,
-0x1d, 0x70, 0xa2, 0xe0, 0xf2, 0x91, 0x72, 0x33,
-0xd7, 0x15, 0xc5, 0xe0, 0xfb, 0x4c, 0xb4, 0xbc,
-0x59, 0x95, 0xe4, 0xf7, 0x8a, 0xc3, 0x34, 0xd8,
-0x20, 0xa3, 0xe9, 0x0a, 0xf8, 0xaf, 0xc5, 0x71,
-0x8d, 0x60, 0xd7, 0x29, 0xde, 0x3d, 0x22, 0xf1,
-0x57, 0xc7, 0x62, 0xa9, 0x7f, 0x78, 0x10, 0x11,
-0x59, 0xc9, 0xc3, 0xc9, 0xd9, 0x52, 0xf6, 0x50,
-0xe6, 0x88, 0x09, 0xfc, 0x75, 0x01, 0x5e, 0xce,
-0xec, 0x27, 0x23, 0xc7, 0x7f, 0xed, 0x71, 0xb8,
-0xad, 0x11, 0xca, 0x29, 0x96, 0x79, 0x2e, 0x1f,
-0xc6, 0xed, 0x03, 0xdb, 0xef, 0x50, 0xd8, 0xc6,
-0x01, 0x2d, 0xa7, 0xe4, 0x3c, 0xec, 0x6c, 0x40,
-0x59, 0x98, 0x58, 0x87, 0x9e, 0x43, 0x3a, 0x8f,
-0xbf, 0x2e, 0xc3, 0xc5, 0xd4, 0x82, 0x34, 0x49,
-0x1a, 0x9a, 0x1f, 0x39, 0xfa, 0x1b, 0x76, 0xfe,
-0x97, 0xac, 0xff, 0x85, 0x46, 0xa3, 0xf7, 0x44,
-0x22, 0x96, 0xdd, 0x62, 0xe7, 0xb0, 0x0c, 0xd9,
-0x60, 0x8d, 0xa0, 0x99, 0x2b, 0xff, 0x0b, 0x9e,
-0xe7, 0x15, 0xad, 0x62, 0x4f, 0xd9, 0xa2, 0x57,
-0x64, 0x73, 0x81, 0xf4, 0x01, 0xa7, 0xfe, 0x17,
-0x6e, 0x5b, 0x67, 0xad, 0x67, 0xd2, 0xd5, 0x94,
-0xff, 0x75, 0x06, 0xa1, 0x2b, 0x1a, 0xa4, 0xa4,
-0xf1, 0x5b, 0xda, 0xbf, 0x5a, 0x5d, 0xfc, 0x97,
-0x71, 0xd0, 0xa8, 0x30, 0xb5, 0x07, 0x70, 0x08,
-0xf6, 0xe4, 0x74, 0x14, 0x6d, 0xb4, 0x35, 0xf3,
-0xa0, 0x8c, 0xc3, 0x6f, 0x6c, 0x7d, 0xc6, 0x10,
-0xa9, 0x61, 0xaf, 0x4b, 0x89, 0x60, 0x09, 0xd6,
-0xe8, 0x88, 0xb2, 0xe8, 0x15, 0x07, 0x7f, 0xfd,
-0xc2, 0x40, 0xe4, 0x6b, 0x8a, 0xa1, 0x4c, 0x98,
-0x90, 0x8f, 0x9f, 0xcf, 0xd7, 0x4f, 0x59, 0xc8,
-0x5e, 0x35, 0x76, 0x83, 0x9f, 0x5a, 0x2c, 0xe8,
-0x36, 0xec, 0xfd, 0xeb, 0x49, 0x3a, 0x48, 0xe4,
-0xf9, 0xfc, 0xaf, 0x9f, 0xc0, 0x44, 0x3b, 0x45,
-0x12, 0x96, 0x8f, 0x78, 0x3f, 0x6c, 0xde, 0x2d,
-0x1d, 0xb3, 0x6b, 0x79, 0x78, 0xdb, 0x45, 0x44,
-0x46, 0xd8, 0xfb, 0x21, 0x13, 0xfe, 0xe1, 0xb0,
-0xcc, 0x30, 0x12, 0x1c, 0x99, 0x21, 0x52, 0x0f,
-0x3e, 0x70, 0xf0, 0x17, 0xfa, 0x09, 0x96, 0x40,
-0x52, 0xe8, 0x67, 0xaa, 0x2e, 0xfd, 0x43, 0x27,
-0x61, 0xbc, 0x37, 0xb0, 0xff, 0xc9, 0x1c, 0xfe,
-0x1a, 0x9e, 0x02, 0xae, 0x69, 0xa2, 0x89, 0xef,
-0x93, 0xd2, 0x27, 0x3d, 0xd7, 0xd2, 0x0b, 0x20,
-0x40, 0x22, 0x12, 0x6f, 0xc3, 0x7e, 0xcb, 0x5f,
-0xa0, 0x7f, 0xf8, 0x56, 0xbe, 0x34, 0x98, 0xdd,
-0x62, 0x1b, 0x83, 0x9c, 0xa2, 0xe0, 0x70, 0x3d,
-0x34, 0x9c, 0xfd, 0xeb, 0xef, 0xa0, 0x9b, 0x07,
-0xe3, 0x5a, 0x26, 0xb8, 0x96, 0x12, 0x99, 0xc5,
-0xcf, 0xf1, 0x14, 0x20, 0xa9, 0xd2, 0x48, 0x70,
-0xb3, 0xde, 0x29, 0x43, 0xcb, 0xde, 0x77, 0x34,
-0x16, 0xce, 0xc1, 0x73, 0x54, 0xdb, 0x2b, 0x77,
-0x7e, 0xc8, 0xa7, 0xd5, 0x12, 0x0b, 0x33, 0x20,
-0x3e, 0xb5, 0xd5, 0x0c, 0x5a, 0xea, 0x14, 0x20,
-0x56, 0x23, 0x13, 0x82, 0x7e, 0x28, 0x2b, 0x82,
-0x0d, 0x40, 0xee, 0x39, 0x49, 0xf2, 0x33, 0x77,
-0x24, 0x8c, 0xfc, 0xf9, 0xe1, 0x11, 0x15, 0x77,
-0xa2, 0x48, 0xe2, 0x24, 0x47, 0x1f, 0x72, 0xc0,
-0xe6, 0xa9, 0xe5, 0xa0, 0xb4, 0x2f, 0x30, 0x71,
-0xc2, 0xee, 0x6f, 0xde, 0xe7, 0x7d, 0xd2, 0x10,
-0xd0, 0x6c, 0x00, 0x92, 0x66, 0x58, 0x0e, 0x9c,
-0xd0, 0xe2, 0xd6, 0xa3, 0x2c, 0x5f, 0x7f, 0xf9,
-0x70, 0x04, 0x57, 0xb6, 0x2e, 0x65, 0xa4, 0xea,
-0x0c, 0x7c, 0x53, 0xfa, 0x63, 0x2f, 0xe9, 0xb1,
-0x5f, 0xad, 0xca, 0x4c, 0x1f, 0xe1, 0x6f, 0x99,
-0xc2, 0x33, 0x0f, 0xb3, 0xb7, 0xd4, 0x86, 0xdf,
-0x60, 0xf7, 0x0e, 0x51, 0xbd, 0x80, 0xe3, 0x62,
-0x5e, 0x9c, 0x06, 0x31, 0x5e, 0x39, 0xfd, 0x79,
-0x51, 0x16, 0xd6, 0x14, 0x64, 0xe2, 0x27, 0xd0,
-0xf4, 0x5a, 0x81, 0x8c, 0x03, 0x45, 0x24, 0x5a,
-0xa5, 0x0f, 0xe0, 0x10, 0x7c, 0x02, 0xdf, 0x1d,
-0x10, 0x28, 0xe9, 0x9a, 0x2c, 0xd6, 0x3c, 0x2a,
-0xef, 0x19, 0x2c, 0xd0, 0x9f, 0x27, 0x49, 0xf9,
-0x71, 0xbc, 0x84, 0x90, 0xea, 0x98, 0x8f, 0xe6,
-0xce, 0xa4, 0xc4, 0x56, 0x31, 0x84, 0x78, 0x4d,
-0xd9, 0x62, 0x7b, 0xc6, 0x19, 0x92, 0x5f, 0xe6,
-0xb1, 0x2c, 0x29, 0x88, 0xc3, 0xef, 0xda, 0x62,
-0x1e, 0xbf, 0x55, 0xe9, 0xe6, 0xbf, 0x48, 0x64,
-0xa3, 0x2b, 0x4a, 0xdc, 0xd6, 0x6d, 0xa3, 0x22,
-0x11, 0xac, 0x9e, 0x2a, 0x32, 0x5f, 0x61, 0x3f,
-0x83, 0x97, 0x52, 0x35, 0x02, 0x88, 0x11, 0x47,
-0x66, 0x84, 0x9c, 0x1c, 0x31, 0x95, 0x52, 0xc3,
-0x48, 0xc0, 0x50, 0xd5, 0x95, 0xd1, 0x29, 0xfc,
-0x57, 0x94, 0x59, 0x2c, 0x01, 0xc6, 0xa0, 0x94,
-0x81, 0x15, 0x8b, 0x5e, 0xb3, 0x3f, 0xcf, 0xb0,
-0x74, 0xd3, 0xa7, 0x9c, 0xa5, 0x12, 0x77, 0x46,
-0x2f, 0x1d, 0x62, 0x70, 0x97, 0xfe, 0xfc, 0x4d,
-0x39, 0xb5, 0x8d, 0x0f, 0xa0, 0x43, 0x0f, 0x3a,
-0xfc, 0x0e, 0xcb, 0x0b, 0x71, 0x14, 0x0b, 0x49,
-0x4c, 0x56, 0x3a, 0xc3, 0x7e, 0x25, 0x84, 0x40,
-0x7a, 0xd0, 0x78, 0xae, 0x28, 0xdc, 0xde, 0xb2,
-0xbd, 0x79, 0x34, 0x9f, 0xff, 0x25, 0xb1, 0x4c,
-0xe5, 0x87, 0xde, 0x63, 0xe8, 0x36, 0x97, 0x12,
-0xff, 0x75, 0x59, 0xc4, 0xee, 0x52, 0x52, 0x95,
-0x60, 0xa0, 0xfe, 0x4e, 0xdc, 0x13, 0xc9, 0xe5,
-0x64, 0xf9, 0x79, 0xb2, 0x06, 0x3e, 0xf4, 0xc4,
-0xd6, 0xf9, 0xf7, 0x2a, 0x1e, 0x17, 0xff, 0xc5,
-0x6c, 0xf5, 0x86, 0xf1, 0x8e, 0x7f, 0xb3, 0x44,
-0x20, 0xe2, 0x15, 0xf8, 0x2f, 0x96, 0xcc, 0x1e,
-0x2a, 0xca, 0x1f, 0x59, 0x54, 0xe4, 0xcf, 0x2e,
-0x4c, 0x6d, 0x00, 0x01, 0x6f, 0xcd, 0xbd, 0xb5,
-0x6f, 0x94, 0x17, 0xd4, 0x5f, 0x16, 0x53, 0xef,
-0x7d, 0xf6, 0xb2, 0x99, 0x71, 0xce, 0x49, 0xea,
-0xf2, 0xf1, 0x6c, 0x7f, 0x4e, 0x33, 0xf7, 0x08,
-0xd8, 0x73, 0x19, 0x6f, 0x7e, 0x07, 0xdd, 0xd4,
-0x3d, 0x54, 0x6c, 0x6e, 0xd0, 0xbf, 0x4f, 0x4b,
-0x5d, 0xc7, 0x7f, 0x7d, 0x62, 0x1e, 0x33, 0x2b,
-0x5d, 0xe5, 0x18, 0xa4, 0x22, 0x7d, 0x3e, 0x64,
-0x17, 0xf2, 0x33, 0x25, 0xcd, 0x2a, 0x40, 0x33,
-0x82, 0xbf, 0x08, 0xe9, 0xca, 0xba, 0x42, 0xfe,
-0xab, 0x98, 0x4a, 0x63, 0xa4, 0x4c, 0x7b, 0x6f,
-0xca, 0xe4, 0x13, 0x5a, 0x73, 0x3c, 0x48, 0x15,
-0xd8, 0x46, 0xcd, 0xa0, 0x06, 0x0c, 0x3c, 0x4a,
-0xda, 0x20, 0x97, 0xc6, 0x15, 0x7f, 0x78, 0x30,
-0x2d, 0x7c, 0xfe, 0xdf, 0x08, 0x6e, 0x4b, 0x2c,
-0xd4, 0x19, 0x5e, 0x31, 0xac, 0xad, 0x77, 0x17,
-0x08, 0xfe, 0x3e, 0xaf, 0x0e, 0x09, 0xa4, 0xb0,
-0x88, 0x16, 0xea, 0x06, 0x74, 0x57, 0x36, 0xa4,
-0x2a, 0xaa, 0xd4, 0xfb, 0xd9, 0xc3, 0x85, 0xfc,
-0x57, 0x49, 0xa4, 0xbc, 0x37, 0xfe, 0x9a, 0x69,
-0xd7, 0xff, 0x3a, 0x8f, 0xdb, 0x96, 0xd4, 0xdf,
-0xa0, 0xd2, 0xcc, 0xf5, 0xca, 0x49, 0xf3, 0xa2,
-0xde, 0x18, 0x9a, 0x2e, 0x5b, 0xc2, 0xa4, 0xdf,
-0x9b, 0xf0, 0xbe, 0x9c, 0xca, 0xac, 0x0f, 0xdf,
-0xac, 0x6c, 0x73, 0xf1, 0x5f, 0xf2, 0x10, 0x23,
-0x4b, 0xcb, 0xe9, 0x6f, 0xa6, 0x8b, 0x20, 0x43,
-0x8a, 0x2d, 0x3c, 0x9f, 0xc4, 0x05, 0xb6, 0xac,
-0xa9, 0xff, 0xd6, 0x51, 0x71, 0xc0, 0x15, 0x03,
-0x7b, 0xbc, 0x84, 0x46, 0x47, 0x96, 0x46, 0x79,
-0x59, 0xed, 0xe8, 0xf5, 0xfc, 0x97, 0x08, 0xaa,
-0x69, 0xb0, 0x49, 0x2e, 0x4e, 0x0b, 0x1a, 0x3e,
-0x67, 0xc2, 0xd9, 0x10, 0xc5, 0x73, 0x9c, 0xf7,
-0x27, 0x4c, 0xf5, 0xd6, 0x27, 0x28, 0x5e, 0x34,
-0xbd, 0xe2, 0x7a, 0xfe, 0x4b, 0x57, 0x2f, 0x52,
-0xf1, 0x3b, 0x8a, 0x96, 0x7f, 0x5e, 0x1c, 0xf7,
-0xd1, 0x06, 0xb4, 0xc6, 0xde, 0xe8, 0xbf, 0xef,
-0xaa, 0xbf, 0x4c, 0xb4, 0x97, 0xee, 0x7d, 0x09,
-0x2a, 0xdb, 0xfc, 0xf1, 0xa9, 0xfc, 0x17, 0x76,
-0x66, 0xb9, 0xf7, 0x05, 0x41, 0x72, 0x95, 0xbd,
-0xed, 0xe9, 0xce, 0xe1, 0xaf, 0x74, 0x75, 0xf6,
-0x0b, 0x52, 0x76, 0xbe, 0xda, 0xc8, 0x09, 0x71,
-0xa8, 0xf5, 0xcd, 0x65, 0x94, 0x8b, 0x37, 0x5a,
-0x5c, 0xcf, 0xa6, 0xf0, 0x5f, 0x88, 0xb6, 0x14,
-0x78, 0xce, 0x10, 0xf8, 0x8b, 0xde, 0x04, 0xd5,
-0x99, 0x9e, 0xf9, 0x94, 0x8a, 0xd6, 0x1c, 0x11,
-0xa6, 0xde, 0x5e, 0xe6, 0x81, 0x23, 0xde, 0xaa,
-0x51, 0xb5, 0xfe, 0x7a, 0xfe, 0x4b, 0xbb, 0xcb,
-0x7c, 0x31, 0x47, 0x72, 0x59, 0x51, 0x74, 0x96,
-0x44, 0xfd, 0xe5, 0x18, 0x2f, 0x96, 0xfc, 0xd7,
-0xe2, 0x54, 0x4e, 0x88, 0xc3, 0x9f, 0x55, 0xea,
-0xcd, 0xcb, 0xf8, 0x0a, 0x94, 0x64, 0xb5, 0x42,
-0xfe, 0xcb, 0xe3, 0x4e, 0xfb, 0x8a, 0xab, 0xe8,
-0xe9, 0x49, 0xb6, 0xeb, 0x0c, 0x94, 0x4a, 0xd8,
-0x85, 0xb8, 0xc0, 0xeb, 0x92, 0x9d, 0x4f, 0x8a,
-0x9b, 0xcb, 0x02, 0x9e, 0xa9, 0xf9, 0x5f, 0x88,
-0xb6, 0xe6, 0xc2, 0x31, 0x7d, 0x6a, 0xd9, 0x2f,
-0x37, 0x05, 0xb0, 0xd4, 0x49, 0x0d, 0x5b, 0x87,
-0xc6, 0xdc, 0x65, 0xe3, 0x66, 0x34, 0x1e, 0xbe,
-0x41, 0xfd, 0xe5, 0xb2, 0x2a, 0xb6, 0x71, 0x20,
-0x2a, 0x9d, 0xe4, 0xf7, 0x25, 0x5c, 0x72, 0xf0,
-0x97, 0x92, 0xd3, 0xb8, 0x13, 0x2d, 0x71, 0x35,
-0xe5, 0x9b, 0x43, 0x1c, 0xc7, 0xba, 0x96, 0xd4,
-0xd4, 0xfc, 0xaf, 0x4e, 0x74, 0xda, 0xcd, 0xa7,
-0xe0, 0x6b, 0xee, 0x8f, 0x97, 0x0d, 0x79, 0x0a,
-0x28, 0x12, 0x99, 0x1a, 0xe6, 0x09, 0xa3, 0x51,
-0x36, 0xc7, 0x7b, 0x08, 0x8c, 0x16, 0x75, 0x07,
-0x2b, 0x92, 0xfb, 0x8e, 0xc3, 0x7f, 0xdd, 0x72,
-0x93, 0xcf, 0x6b, 0xb6, 0xe9, 0x69, 0xe9, 0xf3,
-0xef, 0xb4, 0xeb, 0x02, 0x3b, 0x70, 0x80, 0x94,
-0xd2, 0x6b, 0x1c, 0x5e, 0x66, 0x6d, 0x5c, 0xa5,
-0xf8, 0xc3, 0x6e, 0x48, 0x0f, 0xa8, 0x37, 0xfb,
-0xa6, 0xf0, 0x5f, 0x9a, 0x57, 0xa9, 0xd8, 0x79,
-0x66, 0x4d, 0x9d, 0xcd, 0x7f, 0x85, 0x6a, 0x10,
-0x5b, 0xb5, 0x09, 0xfc, 0x95, 0x87, 0xb7, 0x22,
-0x47, 0x6c, 0x3d, 0xe9, 0x82, 0x8a, 0x88, 0xb2,
-0xff, 0x1a, 0x9d, 0xe1, 0x7f, 0x74, 0x69, 0x0d,
-0x93, 0xf8, 0x2b, 0x57, 0x7f, 0x59, 0xb9, 0xc4,
-0x7f, 0x6e, 0x90, 0xe6, 0x83, 0x87, 0x72, 0xb2,
-0x66, 0xdb, 0xdd, 0xeb, 0x99, 0x4d, 0xac, 0xe2,
-0x1e, 0xf4, 0xf0, 0x9b, 0x2c, 0xa7, 0xc3, 0x97,
-0x07, 0x7e, 0x55, 0x79, 0xc9, 0x1c, 0x87, 0x26,
-0x17, 0xff, 0xe5, 0xd4, 0x5f, 0x2e, 0x25, 0x48,
-0xf5, 0xef, 0x1e, 0xbb, 0x9f, 0x85, 0xe6, 0xf9,
-0x75, 0x99, 0x4a, 0x12, 0x4a, 0x7b, 0x05, 0x58,
-0x5b, 0x08, 0xaf, 0x7a, 0x49, 0x7f, 0x43, 0xbb,
-0x1e, 0x7f, 0x59, 0x42, 0xd2, 0x30, 0x07, 0xbb,
-0xa6, 0x32, 0x62, 0x35, 0x4e, 0xfc, 0x61, 0x58,
-0x30, 0x62, 0x8c, 0x43, 0xd0, 0x83, 0xeb, 0xd8,
-0x0d, 0xf8, 0x2f, 0x75, 0xbf, 0x37, 0xed, 0x80,
-0x2c, 0x47, 0xe7, 0x04, 0x47, 0xe7, 0x16, 0xd9,
-0x52, 0x63, 0xce, 0xcf, 0xe3, 0x2f, 0x5f, 0x91,
-0xc0, 0x5f, 0x21, 0xfd, 0x46, 0xfc, 0x97, 0xf1,
-0xaf, 0x7a, 0x30, 0xcf, 0x7f, 0x91, 0xe1, 0x2d,
-0x18, 0x77, 0xb7, 0x34, 0xc7, 0x5c, 0xa1, 0xda,
-0xd1, 0xb2, 0xfd, 0xc6, 0xfc, 0x17, 0x8f, 0xda,
-0x05, 0xbc, 0x5a, 0x1a, 0x44, 0x44, 0x62, 0xb1,
-0x2d, 0xbb, 0x21, 0x5f, 0xe3, 0x9c, 0x22, 0x07,
-0x22, 0xa9, 0x39, 0x14, 0x9a, 0xb8, 0xc6, 0x9f,
-0xd2, 0x6e, 0x50, 0x7f, 0x59, 0x7f, 0x43, 0xb5,
-0xe3, 0x72, 0xcf, 0xa7, 0xaf, 0x97, 0xa3, 0x11,
-0xd3, 0xc1, 0x51, 0x44, 0x54, 0xfa, 0x55, 0xc9,
-0x60, 0x2e, 0xbd, 0x9e, 0xff, 0xaa, 0xe0, 0x16,
-0x42, 0x57, 0x89, 0xbf, 0xcc, 0x9c, 0xfe, 0x61,
-0x57, 0xae, 0x72, 0x84, 0x9e, 0x2b, 0x21, 0x41,
-0x62, 0x89, 0xa4, 0x88, 0x48, 0xf5, 0xbb, 0xdd,
-0xfc, 0x97, 0x2c, 0xa9, 0x7c, 0x97, 0xf7, 0x09,
-0x84, 0x54, 0x94, 0xff, 0x35, 0xf3, 0xb0, 0x04,
-0x59, 0xc3, 0x5e, 0x5b, 0x91, 0x9e, 0xf8, 0xaf,
-0xb0, 0xd3, 0x52, 0x4b, 0x1a, 0x89, 0xa4, 0x3f,
-0x4f, 0xfa, 0x87, 0xc9, 0xe5, 0xf9, 0xfc, 0x2f,
-0x5b, 0x2c, 0xc8, 0x0f, 0xdc, 0xac, 0xba, 0x81,
-0x1f, 0x9e, 0x53, 0x26, 0x77, 0x8c, 0x3e, 0x11,
-0x74, 0x4d, 0xfe, 0xa1, 0x3a, 0x93, 0x4d, 0xe5,
-0xbf, 0xbe, 0xc3, 0x6e, 0xc2, 0xe7, 0x48, 0xd9,
-0x79, 0x4f, 0xb7, 0x13, 0x1f, 0xde, 0xfd, 0x58,
-0x8e, 0xff, 0xfa, 0x86, 0x6d, 0xb0, 0x6f, 0xa4,
-0x11, 0x3b, 0xf8, 0x0d, 0x3a, 0x1f, 0xeb, 0x30,
-0x83, 0xee, 0xfa, 0xcb, 0x84, 0xad, 0xc6, 0x95,
-0xd9, 0xd0, 0xcf, 0xef, 0x70, 0xf8, 0xaf, 0xe7,
-0x1d, 0x46, 0x8c, 0x84, 0xe8, 0x3d, 0x52, 0x7f,
-0xa3, 0x54, 0xb6, 0x54, 0x67, 0xfd, 0xf5, 0xca,
-0xcd, 0x08, 0xc4, 0x22, 0xe9, 0xf0, 0x3d, 0xca,
-0x75, 0xf5, 0x97, 0x65, 0x1f, 0x3a, 0xee, 0x01,
-0xc5, 0xb3, 0xa1, 0x03, 0x43, 0x3a, 0xc9, 0xd7,
-0xa5, 0x1a, 0x71, 0x61, 0xd8, 0xf9, 0x44, 0xae,
-0xfc, 0x2f, 0xc1, 0x7f, 0x8d, 0x2b, 0x57, 0xcd,
-0x57, 0xf9, 0x22, 0x97, 0xfe, 0xc6, 0x05, 0x91,
-0xed, 0xb5, 0x60, 0x48, 0xc1, 0x4b, 0xde, 0x6b,
-0x89, 0xc5, 0x43, 0xa5, 0xa2, 0x34, 0x33, 0x5e,
-0x7a, 0xe2, 0x10, 0x5e, 0x3a, 0xbd, 0xed, 0xd6,
-0x21, 0xff, 0x98, 0xc7, 0xad, 0x7f, 0xc8, 0xab,
-0x29, 0xc8, 0xf0, 0x2a, 0xfc, 0x18, 0x8c, 0xac,
-0x7d, 0x6c, 0x28, 0xea, 0x7f, 0xcd, 0x86, 0x45,
-0xba, 0x5d, 0xff, 0xeb, 0x60, 0x3a, 0x4c, 0xf5,
-0xbf, 0x70, 0x03, 0xd2, 0x6b, 0xf7, 0xaa, 0xf5,
-0xca, 0x29, 0x9e, 0xa0, 0x1f, 0xa8, 0x26, 0x0a,
-0xf2, 0xbf, 0xc4, 0x66, 0xf7, 0xba, 0xd1, 0xee,
-0x84, 0x7f, 0x88, 0x9e, 0x8f, 0x88, 0xa8, 0xce,
-0x9d, 0xd6, 0x0a, 0x29, 0xdf, 0x51, 0x3b, 0x20,
-0x64, 0x37, 0x08, 0x7f, 0xe1, 0xc0, 0x7d, 0x2e,
-0x41, 0x75, 0x30, 0x8b, 0x1f, 0x28, 0xd4, 0x9f,
-0x17, 0x55, 0xde, 0xfa, 0x61, 0x6f, 0xca, 0x09,
-0x3b, 0xb4, 0x72, 0xc2, 0xe6, 0x46, 0x4e, 0xe7,
-0xed, 0x82, 0x3d, 0xee, 0x88, 0xe8, 0x89, 0x61,
-0xa1, 0x88, 0x05, 0xf5, 0xe6, 0x02, 0xfe, 0xcb,
-0x23, 0x9c, 0x76, 0x3a, 0x3b, 0x3d, 0x2c, 0xd2,
-0x52, 0x3c, 0x36, 0xc8, 0xda, 0xe7, 0xc9, 0x1d,
-0xd4, 0x63, 0xf7, 0x8e, 0x3a, 0x48, 0x8a, 0x97,
-0x1e, 0x60, 0xd5, 0x14, 0x0c, 0xbc, 0xa4, 0x64,
-0xbb, 0x52, 0x58, 0x7f, 0xd9, 0x52, 0x70, 0xbc,
-0x42, 0x13, 0x2d, 0x65, 0xb6, 0x5f, 0xa7, 0x0b,
-0x46, 0x6c, 0xad, 0xd7, 0x3d, 0x4c, 0xfd, 0xf9,
-0xf1, 0xda, 0xaf, 0xec, 0x83, 0x31, 0x4f, 0x4c,
-0xaf, 0xcd, 0xe1, 0x2f, 0xa7, 0xfe, 0xf2, 0xaa,
-0x51, 0x74, 0xd1, 0x8f, 0xc3, 0xed, 0x32, 0xff,
-0xeb, 0x9a, 0xba, 0x80, 0xfc, 0xcc, 0x87, 0xa5,
-0x4b, 0xe3, 0xb8, 0x97, 0x7e, 0x69, 0xd4, 0x82,
-0x7f, 0x9d, 0x06, 0x94, 0xff, 0xe5, 0xc5, 0xf9,
-0xee, 0xaa, 0xff, 0x65, 0xfb, 0x87, 0x06, 0xdf,
-0x94, 0xce, 0xe1, 0xa6, 0x3a, 0x09, 0x97, 0x1c,
-0x00, 0xa5, 0x53, 0x48, 0xe1, 0x72, 0x5b, 0xba,
-0x6d, 0xbb, 0x2f, 0xc3, 0xaa, 0xa0, 0x63, 0x30,
-0xa8, 0xe3, 0x8e, 0x56, 0x51, 0xc8, 0x7f, 0xe1,
-0x25, 0x15, 0x36, 0xa1, 0xdb, 0x53, 0x9c, 0x2f,
-0xfb, 0x55, 0xa8, 0x48, 0x3f, 0x5f, 0x52, 0x24,
-0x47, 0xa8, 0x7c, 0x58, 0x86, 0xdd, 0x8f, 0xa0,
-0x6f, 0x7e, 0x9f, 0xe0, 0xbf, 0x6c, 0xfc, 0xe5,
-0x77, 0x70, 0x81, 0xca, 0x93, 0x10, 0x97, 0x45,
-0x6d, 0x68, 0x9e, 0x92, 0x2e, 0x04, 0x97, 0xa5,
-0x99, 0xa9, 0xc5, 0xa8, 0x39, 0x49, 0xe3, 0x65,
-0x60, 0x4b, 0xdb, 0xf2, 0x48, 0xa2, 0x04, 0x78,
-0xd0, 0xe0, 0x7b, 0x67, 0x26, 0x0a, 0xf4, 0xe7,
-0x11, 0xd5, 0x8e, 0x26, 0x0c, 0x3e, 0x00, 0x5d,
-0xfd, 0xd2, 0xfb, 0xd2, 0xa3, 0xfd, 0x92, 0xbf,
-0x30, 0x1d, 0x9d, 0xff, 0x50, 0xec, 0xb8, 0x5f,
-0xcc, 0x14, 0x33, 0xe6, 0xf7, 0xbf, 0xa0, 0xfc,
-0xbd, 0x71, 0xbc, 0xbe, 0x67, 0xd6, 0xe6, 0xd4,
-0x52, 0x57, 0xfd, 0xaf, 0x89, 0xbf, 0x17, 0x9c,
-0x66, 0xd6, 0x9c, 0xcc, 0xd5, 0x87, 0x35, 0xa8,
-0xfe, 0x97, 0xb2, 0xcf, 0x94, 0xd2, 0x88, 0xcd,
-0x82, 0x11, 0x1b, 0x10, 0x3e, 0xff, 0x77, 0x21,
-0xd6, 0x1e, 0xb8, 0x90, 0xdc, 0x47, 0xa2, 0x55,
-0xfe, 0x40, 0x2a, 0xe9, 0xc6, 0x5f, 0x89, 0xa6,
-0xec, 0x96, 0x71, 0xdc, 0xbf, 0x3e, 0x81, 0xbb,
-0x72, 0x81, 0xbe, 0xf2, 0x9c, 0xff, 0xf7, 0x94,
-0xb8, 0x97, 0xc5, 0xdd, 0xea, 0xb4, 0x14, 0xba,
-0x89, 0xc0, 0xe9, 0xc4, 0x22, 0xe7, 0x9e, 0xbb,
-0x38, 0x22, 0xb2, 0xbc, 0xfe, 0xbc, 0x2a, 0xe2,
-0x0f, 0xbb, 0xd8, 0x10, 0xa7, 0xd8, 0x42, 0xcd,
-0x41, 0x5b, 0xd0, 0xc1, 0xde, 0xa1, 0x1d, 0xcd,
-0x50, 0x79, 0x62, 0x2e, 0x3c, 0x47, 0xf7, 0xd0,
-0x36, 0xf1, 0x5c, 0xee, 0x1e, 0x7a, 0x9f, 0x73,
-0xfc, 0x97, 0x2b, 0xfe, 0xf0, 0xa4, 0xb1, 0x33,
-0x1f, 0x8e, 0x5b, 0x03, 0x3e, 0x60, 0x14, 0xc7,
-0x18, 0x02, 0xb5, 0xac, 0xcc, 0x4f, 0x32, 0xe6,
-0x78, 0xa9, 0x4c, 0x85, 0x64, 0x91, 0x2b, 0x79,
-0x56, 0x75, 0xeb, 0xcf, 0xe7, 0xc4, 0x63, 0xf9,
-0x46, 0x1c, 0xf7, 0x15, 0xe2, 0x6d, 0x61, 0xf6,
-0xee, 0x29, 0x45, 0x83, 0x9b, 0xc3, 0x32, 0x23,
-0x8c, 0xc2, 0x75, 0x76, 0xc3, 0xfc, 0x5e, 0x07,
-0x68, 0x70, 0xd5, 0xad, 0x3f, 0xef, 0xb7, 0x59,
-0xfb, 0x77, 0xe0, 0x43, 0x2b, 0x27, 0x47, 0xd3,
-0x28, 0xcf, 0x25, 0xa8, 0x5a, 0x93, 0xfa, 0xd3,
-0xe9, 0x35, 0x44, 0x3d, 0x0f, 0x05, 0x32, 0x5a,
-0x88, 0xbb, 0x34, 0x09, 0x1b, 0x48, 0xa5, 0xd0,
-0x72, 0xc7, 0x1f, 0xd6, 0xd2, 0xcb, 0x7f, 0x09,
-0xfe, 0xe8, 0x9a, 0x05, 0xe6, 0xaa, 0xac, 0x1d,
-0x91, 0x58, 0xdb, 0x72, 0xdb, 0xbf, 0x7b, 0xae,
-0xa5, 0xe9, 0xd2, 0xf4, 0xb3, 0xfa, 0x35, 0xd5,
-0x49, 0xa2, 0xc4, 0x99, 0x5b, 0xa8, 0xbf, 0x91,
-0x9b, 0x8c, 0xc7, 0x4d, 0x79, 0xf0, 0x02, 0xdf,
-0x81, 0x06, 0x3e, 0xcd, 0x49, 0x78, 0x09, 0x6c,
-0xd7, 0xc2, 0x06, 0xae, 0x09, 0x83, 0x61, 0xaa,
-0xe4, 0x75, 0x42, 0x8f, 0x3a, 0x35, 0x01, 0x1b,
-0x29, 0x02, 0x79, 0x30, 0x8f, 0xbf, 0xee, 0x82,
-0x52, 0x19, 0x85, 0xbb, 0xc9, 0xb0, 0xd1, 0x16,
-0xe9, 0x3a, 0xaa, 0x69, 0xf1, 0x1a, 0x07, 0xad,
-0x27, 0x38, 0xab, 0x35, 0x8e, 0x38, 0x69, 0x95,
-0x9d, 0x66, 0x5d, 0x6f, 0x3e, 0xd0, 0x17, 0xfb,
-0xa7, 0x00, 0x7f, 0xd1, 0x62, 0xd5, 0x4f, 0x52,
-0xd5, 0xce, 0x58, 0x50, 0xb4, 0x46, 0xf4, 0xa4,
-0x6a, 0xcb, 0x54, 0x9e, 0x96, 0x84, 0x48, 0xa6,
-0xd9, 0x84, 0xa4, 0x95, 0x3b, 0x6b, 0x0a, 0xf7,
-0xa3, 0x71, 0xd9, 0xad, 0x3f, 0x2f, 0x70, 0xc1,
-0x6f, 0xf8, 0xf7, 0x1c, 0xfc, 0xf5, 0x0c, 0xaf,
-0x35, 0x80, 0xd4, 0xe6, 0x8f, 0xf2, 0x79, 0x86,
-0x9d, 0x1a, 0x56, 0x3b, 0x0c, 0xf7, 0x40, 0x33,
-0x62, 0xb4, 0xcf, 0x0f, 0x38, 0x22, 0x12, 0x06,
-0x1a, 0x93, 0x85, 0xf8, 0x4b, 0x6b, 0x50, 0xde,
-0x83, 0x37, 0xcc, 0x88, 0x84, 0x5d, 0xdd, 0x7a,
-0x3d, 0x94, 0xc0, 0xd2, 0x3e, 0x6b, 0x14, 0xbd,
-0xc1, 0xc0, 0x76, 0x76, 0xd2, 0xfc, 0x56, 0x66,
-0x21, 0x85, 0x02, 0xb6, 0xb0, 0x97, 0xf5, 0xe8,
-0x88, 0xa3, 0x7f, 0xc8, 0xfd, 0x91, 0xa9, 0xfa,
-0xf3, 0x22, 0xfe, 0xf0, 0xa3, 0xdc, 0x78, 0x51,
-0xe1, 0x80, 0x41, 0x65, 0xd4, 0x1c, 0xf3, 0x2c,
-0x82, 0xd2, 0x4b, 0xe5, 0x54, 0x2f, 0x60, 0x71,
-0x7f, 0x60, 0xb0, 0xbc, 0x07, 0x2e, 0x7a, 0x05,
-0x07, 0x8d, 0xd0, 0x4c, 0x17, 0x93, 0x71, 0x2a,
-0xfe, 0xea, 0x51, 0x0c, 0x3a, 0x87, 0x74, 0xed,
-0x7a, 0xf5, 0x76, 0xf0, 0xf6, 0x13, 0x42, 0x2f,
-0xc5, 0x23, 0x2e, 0x85, 0x0a, 0x36, 0x44, 0x28,
-0xa8, 0xbf, 0x2c, 0x77, 0x99, 0x51, 0xb6, 0x10,
-0xda, 0x5d, 0x81, 0x2e, 0x4b, 0x72, 0xfa, 0xf3,
-0xea, 0xba, 0x22, 0x69, 0x74, 0xae, 0xf3, 0x3d,
-0xed, 0x0e, 0x86, 0xa9, 0xe5, 0xe8, 0x0c, 0x5c,
-0xb8, 0x0e, 0x7f, 0x7d, 0x56, 0xdd, 0xd3, 0x91,
-0x97, 0x3d, 0x4c, 0x6b, 0x03, 0x89, 0x6d, 0xc6,
-0x01, 0x5e, 0x5b, 0xe1, 0x3b, 0xc3, 0xbe, 0x12,
-0x11, 0xf7, 0xd4, 0xb3, 0x9b, 0x55, 0xb7, 0x34,
-0x22, 0xf5, 0x73, 0xf6, 0xba, 0xf8, 0x43, 0xf4,
-0x5b, 0xe2, 0xb9, 0x39, 0x58, 0x3d, 0x8a, 0x37,
-0xff, 0x89, 0x1d, 0x81, 0x13, 0x2c, 0xa5, 0xdc,
-0x8a, 0x88, 0x76, 0x3b, 0xdb, 0x02, 0xdd, 0xde,
-0x9c, 0x36, 0x8b, 0x10, 0xeb, 0x70, 0xe5, 0x7f,
-0xd9, 0xd5, 0xbe, 0xea, 0xe1, 0x63, 0x2b, 0x2f,
-0x7b, 0x98, 0x58, 0x95, 0x56, 0x9e, 0x83, 0xcb,
-0xa3, 0xb1, 0x03, 0xa5, 0x69, 0xa5, 0x05, 0x2e,
-0xa7, 0x9b, 0xf6, 0x04, 0xf6, 0x2a, 0x0d, 0x6d,
-0xae, 0xd4, 0xb0, 0xef, 0x66, 0x36, 0xa7, 0xf3,
-0xf9, 0x5f, 0x37, 0x56, 0x51, 0x5b, 0xac, 0x06,
-0x2c, 0x65, 0x90, 0x5f, 0x32, 0x17, 0x7b, 0x03,
-0xa6, 0x26, 0xd4, 0xe6, 0x09, 0x7f, 0x59, 0x86,
-0x5b, 0x04, 0xc0, 0x5b, 0x7b, 0x9d, 0xfe, 0x06,
-0x39, 0x93, 0x46, 0xaf, 0xbb, 0xec, 0xf2, 0x2c,
-0x91, 0x2f, 0x23, 0xd4, 0x36, 0xa6, 0x57, 0x99,
-0x94, 0xd2, 0x45, 0x15, 0xc1, 0x3c, 0x79, 0xcd,
-0x3d, 0x4f, 0xdd, 0x7d, 0xfe, 0xeb, 0xf4, 0xe7,
-0x65, 0x90, 0x21, 0x77, 0x95, 0x5d, 0x96, 0x8a,
-0x76, 0x69, 0x5b, 0x51, 0xfc, 0x0d, 0xa7, 0xb4,
-0xd3, 0x1b, 0x66, 0x43, 0xce, 0xc7, 0x8e, 0x97,
-0xa4, 0xd8, 0x14, 0xfd, 0xf9, 0x15, 0xa9, 0xb2,
-0x7e, 0xd8, 0x68, 0xb8, 0x9e, 0x53, 0x3c, 0xca,
-0x2e, 0xc1, 0xe3, 0x7a, 0xa5, 0xe9, 0x1b, 0x14,
-0x82, 0xe4, 0xf7, 0x5b, 0x22, 0x11, 0x4c, 0x06,
-0x34, 0x16, 0xd1, 0x3d, 0x73, 0xfb, 0x49, 0x87,
-0x7c, 0x4a, 0xfc, 0xe1, 0x4d, 0xac, 0xff, 0x9d,
-0xb6, 0x90, 0x61, 0xc3, 0x01, 0x56, 0xbd, 0xbc,
-0xe2, 0xee, 0xc4, 0xeb, 0xbb, 0x1e, 0x0d, 0xed,
-0x5c, 0x3e, 0xff, 0xaf, 0x36, 0xf9, 0xd3, 0x5b,
-0x3d, 0x6b, 0x89, 0xed, 0xf2, 0xf2, 0xb6, 0x1c,
-0x64, 0x00, 0x63, 0x79, 0x71, 0xa1, 0xfe, 0x3c,
-0x75, 0x5d, 0xbb, 0x72, 0x8e, 0x0f, 0x18, 0x5d,
-0xb9, 0x0e, 0x57, 0x8b, 0x13, 0x44, 0x52, 0xac,
-0x8b, 0xaa, 0xbe, 0x57, 0x98, 0xd1, 0x3e, 0x00,
-0xb3, 0x89, 0xed, 0x8a, 0xb3, 0x4d, 0xad, 0xf9,
-0x5c, 0x3c, 0xd5, 0xcf, 0x97, 0xe6, 0xf8, 0xaf,
-0x9c, 0x8b, 0x7e, 0x89, 0x5f, 0x99, 0xef, 0x72,
-0xe3, 0x73, 0x28, 0xa0, 0xa4, 0x4c, 0x21, 0x39,
-0x47, 0x84, 0x4b, 0xaf, 0x25, 0x2f, 0xb5, 0x3a,
-0x90, 0xca, 0x3b, 0x3e, 0xaf, 0xe9, 0xb8, 0x9b,
-0xff, 0x72, 0x39, 0xff, 0x57, 0x0a, 0xcb, 0x64,
-0x2b, 0x7b, 0xbc, 0x1f, 0x41, 0x84, 0x8c, 0x07,
-0x85, 0x52, 0xba, 0xb8, 0xf4, 0xaa, 0xa8, 0x14,
-0x5c, 0x39, 0x24, 0x0a, 0x31, 0x93, 0xca, 0xe5,
-0x0d, 0xe3, 0x0f, 0x0b, 0x61, 0x97, 0xe1, 0x20,
-0x32, 0x19, 0x7f, 0xa8, 0xc8, 0x1d, 0x64, 0x97,
-0xb8, 0x47, 0xdf, 0x2b, 0x11, 0xd9, 0xa9, 0xeb,
-0xf1, 0x97, 0x08, 0x63, 0xcb, 0x93, 0x5c, 0x24,
-0x4a, 0xb9, 0x93, 0x5a, 0x52, 0xcc, 0xeb, 0x75,
-0xd1, 0x5e, 0x02, 0x02, 0x4b, 0xb1, 0xc4, 0x8e,
-0xeb, 0xf4, 0xe7, 0xa9, 0xa6, 0x36, 0x27, 0xde,
-0xd3, 0x19, 0xf7, 0xff, 0x4b, 0xfb, 0x1e, 0x9b,
-0xc3, 0x93, 0x66, 0xb0, 0x55, 0xa3, 0x2c, 0xbf,
-0x43, 0xfa, 0xfd, 0x2d, 0x74, 0x89, 0x77, 0x3a,
-0xb5, 0xe1, 0xec, 0x64, 0x31, 0x97, 0xfe, 0x86,
-0x1d, 0xe7, 0xf9, 0x9e, 0x3e, 0x6e, 0xd9, 0xf5,
-0x97, 0x45, 0xcb, 0x4c, 0xa5, 0x1d, 0xde, 0x87,
-0xae, 0xb8, 0xb6, 0x43, 0xa9, 0x5a, 0x32, 0xee,
-0xa9, 0xb9, 0x9b, 0xee, 0x61, 0x6d, 0xa2, 0x7f,
-0xe8, 0x55, 0xf7, 0xc4, 0xd6, 0x85, 0xa7, 0xea,
-0x6f, 0xd8, 0xdd, 0x5b, 0x00, 0xbb, 0x76, 0x10,
-0x0b, 0x9c, 0x46, 0x90, 0xb5, 0x4d, 0xf9, 0x89,
-0x13, 0x76, 0xf8, 0x4a, 0x01, 0x22, 0x23, 0x72,
-0xf3, 0x7a, 0xfc, 0x75, 0x0e, 0x06, 0x4c, 0x97,
-0xec, 0x7c, 0x69, 0x3b, 0x15, 0xf2, 0x56, 0xa3,
-0x02, 0xb6, 0xb7, 0x0e, 0x40, 0xcc, 0x2d, 0xcd,
-0xb1, 0x34, 0xeb, 0x54, 0x0d, 0xbb, 0x51, 0xfc,
-0xe1, 0x9b, 0x6c, 0x57, 0x81, 0xec, 0x61, 0x08,
-0x5e, 0xec, 0x0f, 0xb6, 0xb5, 0x18, 0x6c, 0x1c,
-0x9e, 0x85, 0x06, 0x49, 0x8d, 0xbd, 0x98, 0x76,
-0x05, 0x2b, 0x62, 0x8b, 0x6f, 0x2a, 0xfe, 0x72,
-0x28, 0x2d, 0x17, 0xda, 0x42, 0x97, 0xcf, 0x32,
-0xa8, 0x8e, 0xc6, 0x31, 0x9e, 0x04, 0x57, 0x8e,
-0x98, 0x16, 0x91, 0xa5, 0x99, 0xb3, 0xa1, 0xc8,
-0x75, 0xf8, 0xeb, 0x5b, 0x65, 0x6f, 0xf3, 0xad,
-0x50, 0x51, 0x80, 0x0b, 0x66, 0xc1, 0x7e, 0xb5,
-0x32, 0xeb, 0x7b, 0x80, 0xbd, 0x09, 0xcf, 0xc0,
-0x7f, 0xcf, 0xaa, 0x0f, 0x88, 0xf8, 0xf0, 0xfc,
-0x1a, 0x3e, 0xa8, 0x3e, 0xe4, 0x0b, 0x5d, 0x17,
-0x7f, 0x78, 0xca, 0xb2, 0xb9, 0x2d, 0x07, 0x6d,
-0x31, 0xba, 0x24, 0x48, 0xae, 0x37, 0xf5, 0x5f,
-0xb6, 0xfd, 0x49, 0xb6, 0xea, 0xe1, 0x82, 0xd2,
-0xcc, 0xbc, 0x29, 0x1e, 0x9e, 0xbc, 0x01, 0xfe,
-0xfa, 0xc8, 0x1a, 0xb7, 0xf7, 0x94, 0xbc, 0x1b,
-0x4f, 0x2d, 0x25, 0xdd, 0xbf, 0x1e, 0x70, 0xee,
-0x59, 0xeb, 0xda, 0x77, 0xf4, 0xd8, 0x92, 0x7c,
-0xfe, 0x97, 0xd0, 0x9f, 0x27, 0xfc, 0x35, 0x49,
-0x90, 0x2a, 0x25, 0xf4, 0xd9, 0x5e, 0xc4, 0x16,
-0x61, 0xc4, 0xe0, 0x54, 0xea, 0x2e, 0x4a, 0x5d,
-0x79, 0xd3, 0xc4, 0x4b, 0x43, 0xe2, 0xd2, 0xb5,
-0x6d, 0xb7, 0xe6, 0x7c, 0x48, 0xd2, 0xa8, 0x1f,
-0x74, 0xeb, 0xcf, 0x57, 0xcb, 0xfd, 0xe2, 0xd1,
-0x48, 0x78, 0x44, 0x96, 0x4b, 0xe6, 0x82, 0xed,
-0xf2, 0xc3, 0xe6, 0x3d, 0xd8, 0x63, 0x0f, 0xf9,
-0x66, 0x5a, 0xbf, 0x86, 0x70, 0x56, 0xec, 0x68,
-0x07, 0xd2, 0xe1, 0xdc, 0xfe, 0x45, 0x89, 0xcc,
-0x1f, 0xb8, 0xf4, 0xe7, 0x73, 0x1a, 0xbf, 0xa6,
-0x00, 0xb3, 0xd8, 0x12, 0xac, 0x26, 0xd6, 0x63,
-0x96, 0xb9, 0xc1, 0x98, 0xd7, 0xa7, 0x3d, 0xc0,
-0x76, 0x78, 0x37, 0xa8, 0xdf, 0x38, 0x29, 0x2f,
-0xb9, 0xfa, 0xb9, 0x19, 0x9f, 0xd3, 0xef, 0x8a,
-0x3f, 0x14, 0x5b, 0x52, 0x59, 0xc0, 0x6a, 0x6b,
-0xcf, 0xfb, 0x90, 0xa3, 0x5a, 0x3d, 0x3a, 0xed,
-0x49, 0xd3, 0x18, 0xd5, 0x5e, 0x0c, 0x02, 0xd5,
-0x36, 0x3d, 0xa9, 0xdd, 0xc9, 0x4a, 0x68, 0x0a,
-0xdb, 0xfb, 0x97, 0xa7, 0x26, 0x8e, 0x6f, 0xc2,
-0x99, 0xbc, 0xfe, 0xbc, 0xcc, 0xfa, 0xd1, 0x1a,
-0xd9, 0x09, 0x43, 0xc2, 0x2e, 0x3a, 0xfd, 0x7e,
-0x2f, 0x70, 0xf4, 0x96, 0x1a, 0x76, 0x62, 0xa0,
-0xa1, 0x3f, 0x70, 0x55, 0xd9, 0x0b, 0x27, 0xda,
-0x63, 0xa3, 0xda, 0x18, 0x73, 0x39, 0x6f, 0xe8,
-0xd7, 0x3d, 0x88, 0x08, 0xe8, 0xe3, 0x29, 0xfa,
-0xf3, 0xce, 0xe8, 0xe4, 0xfd, 0x04, 0x84, 0x03,
-0xd6, 0x84, 0x60, 0xc4, 0x2a, 0xf3, 0xb4, 0x57,
-0xfb, 0xe5, 0x9c, 0x58, 0x87, 0x57, 0xb0, 0x9c,
-0x53, 0xe2, 0x0f, 0x57, 0x8d, 0xa2, 0x4b, 0xf3,
-0xcb, 0x7c, 0x22, 0xd8, 0x62, 0x42, 0x5b, 0x6b,
-0xe1, 0x6a, 0xc2, 0xae, 0x54, 0x45, 0xd2, 0xf4,
-0xa5, 0x11, 0xa1, 0xbf, 0xb1, 0xc0, 0x9a, 0x6e,
-0xc7, 0x28, 0x0e, 0xaf, 0x1c, 0x55, 0xb2, 0x39,
-0xfc, 0xa5, 0x4a, 0xff, 0x39, 0x38, 0xa2, 0x93,
-0xff, 0x5c, 0x90, 0xc8, 0x03, 0x3d, 0xfd, 0xc2,
-0xb5, 0xd6, 0x12, 0xbb, 0x99, 0x70, 0xad, 0xc3,
-0x9e, 0xc3, 0x96, 0x0c, 0x2d, 0xf3, 0x12, 0xb6,
-0x12, 0x15, 0x99, 0xaf, 0x8f, 0x3f, 0xec, 0x84,
-0x29, 0xcf, 0x51, 0x0f, 0xeb, 0xe2, 0xd2, 0xd7,
-0x6d, 0x44, 0xd6, 0x1c, 0xd6, 0xbb, 0xf9, 0x7d,
-0xb2, 0x22, 0xb3, 0x88, 0x75, 0x74, 0xe5, 0x7f,
-0xf9, 0x89, 0x82, 0x14, 0x43, 0xc0, 0xd0, 0xcf,
-0x3c, 0x63, 0xa3, 0xad, 0xf0, 0x31, 0x31, 0x2b,
-0xbb, 0x6c, 0x68, 0xc6, 0x8e, 0x40, 0x1a, 0xdf,
-0x84, 0x90, 0x1f, 0xba, 0x0c, 0xc8, 0x1d, 0xa1,
-0x98, 0xf3, 0x72, 0xf9, 0x5f, 0x22, 0xfe, 0x70,
-0x3d, 0xf6, 0xe1, 0x37, 0x95, 0x2b, 0xb8, 0x89,
-0x47, 0xa5, 0x0a, 0xcd, 0x84, 0x11, 0xeb, 0x0b,
-0x8b, 0x28, 0xdc, 0x60, 0xcc, 0xda, 0xb2, 0xee,
-0xbf, 0xac, 0x21, 0x21, 0xbb, 0xb7, 0x03, 0xa4,
-0x97, 0x72, 0x38, 0xe4, 0x20, 0x68, 0x52, 0x91,
-0xc5, 0x7e, 0x76, 0xe9, 0x6f, 0x48, 0x4a, 0x6b,
-0x92, 0xf4, 0xe7, 0x05, 0xfe, 0xf2, 0x08, 0x59,
-0x00, 0x34, 0x42, 0x97, 0x67, 0x34, 0x59, 0x5b,
-0x2e, 0xa1, 0xd3, 0xfe, 0x49, 0xa8, 0x69, 0x40,
-0x48, 0x50, 0x5e, 0x86, 0xa6, 0xbe, 0x9c, 0x28,
-0x4a, 0x61, 0xfe, 0x97, 0x10, 0x39, 0xb4, 0x94,
-0x08, 0x0e, 0xdd, 0x02, 0x72, 0x2f, 0x63, 0x70,
-0xad, 0xbd, 0xe9, 0xe5, 0x92, 0x31, 0xdc, 0xfe,
-0x4e, 0x52, 0x46, 0x21, 0x55, 0x4b, 0x39, 0x4d,
-0x97, 0x5c, 0xd4, 0xf3, 0x25, 0xe2, 0x97, 0x71,
-0x28, 0x6f, 0x73, 0xf1, 0x5f, 0x24, 0xa9, 0xa1,
-0x72, 0x5c, 0x49, 0x0e, 0xb1, 0x60, 0x6f, 0xe7,
-0x0e, 0x26, 0xf4, 0xe7, 0x47, 0x11, 0x64, 0x0d,
-0xb1, 0x0e, 0x1e, 0xcc, 0x86, 0x52, 0xc1, 0xb9,
-0xc4, 0x2a, 0xe6, 0xa0, 0x19, 0x19, 0x96, 0x2a,
-0x5a, 0x32, 0x65, 0x2e, 0xfd, 0x0d, 0x12, 0xcd,
-0x2b, 0x36, 0x70, 0x1d, 0xc1, 0xad, 0x9f, 0xb2,
-0xb4, 0xfc, 0xf9, 0x15, 0x32, 0x21, 0x96, 0xc1,
-0x3f, 0xf3, 0xe3, 0xa7, 0x0c, 0x70, 0x2f, 0x95,
-0x24, 0x56, 0x3f, 0x4c, 0x43, 0xe9, 0xd2, 0x3f,
-0xec, 0xa1, 0x70, 0x82, 0xbd, 0xec, 0x36, 0x72,
-0x69, 0x46, 0x3b, 0x3b, 0xf2, 0xfa, 0xf3, 0xef,
-0x51, 0x90, 0x0f, 0x49, 0x85, 0xd4, 0xcc, 0xa7,
-0x57, 0x62, 0x85, 0x8b, 0x09, 0x3d, 0x07, 0x49,
-0xf6, 0x75, 0x32, 0x22, 0xf9, 0xfc, 0xaf, 0x31,
-0x12, 0x39, 0x3c, 0xac, 0xdc, 0x86, 0x46, 0x57,
-0x7a, 0x55, 0x8f, 0x26, 0xb3, 0xbd, 0x10, 0x38,
-0xff, 0xde, 0x38, 0x46, 0x6c, 0x57, 0x87, 0xf6,
-0x79, 0xef, 0x89, 0x54, 0x57, 0x8e, 0x6f, 0x22,
-0x68, 0xf6, 0x9e, 0x79, 0xc2, 0x8b, 0x60, 0xed,
-0x33, 0x79, 0xfd, 0xf9, 0xa3, 0x70, 0x5e, 0xc8,
-0x81, 0x2e, 0x18, 0x83, 0x2b, 0x69, 0x19, 0x7f,
-0xa8, 0xda, 0x63, 0x31, 0x84, 0xb3, 0xe0, 0xe7,
-0x56, 0x09, 0x28, 0x67, 0xd9, 0xa7, 0x6a, 0x13,
-0xe4, 0x0e, 0x28, 0x10, 0x88, 0x11, 0x5f, 0xb9,
-0x88, 0x28, 0x6c, 0x77, 0xfd, 0x65, 0xf3, 0x82,
-0x55, 0x92, 0x4e, 0x7e, 0xa8, 0x9e, 0x6f, 0x8d,
-0x6e, 0xf5, 0x47, 0x02, 0xe1, 0x5c, 0x84, 0x9b,
-0x10, 0xe2, 0x40, 0xa7, 0xb4, 0x9a, 0x64, 0xf4,
-0x52, 0x61, 0x81, 0xdf, 0xe5, 0xa5, 0x21, 0x38,
-0x61, 0x44, 0x7b, 0x11, 0x9a, 0xb9, 0xf2, 0xbf,
-0xb0, 0x5b, 0x2e, 0xa9, 0x07, 0xd8, 0xfb, 0x26,
-0x0e, 0xdc, 0x76, 0x35, 0xa3, 0xd1, 0x71, 0x44,
-0xad, 0x2c, 0x62, 0x9e, 0xe4, 0x8b, 0x2c, 0xdf,
-0xb3, 0xec, 0x36, 0xf3, 0x88, 0x15, 0xe4, 0x6e,
-0xca, 0xf8, 0x65, 0xab, 0xd3, 0x5c, 0x60, 0x69,
-0xcf, 0xbb, 0xf5, 0x37, 0x32, 0xd8, 0xbd, 0xc5,
-0xed, 0x38, 0x04, 0x5d, 0x03, 0x86, 0x21, 0xb4,
-0x28, 0xed, 0xf1, 0x1a, 0x06, 0x4e, 0x11, 0x89,
-0x3a, 0x5b, 0xa6, 0x13, 0xff, 0xe5, 0xde, 0xbf,
-0x68, 0xbc, 0xe8, 0x8c, 0xd1, 0xe7, 0xca, 0xff,
-0x7a, 0xbe, 0xa3, 0xe2, 0x1d, 0xb5, 0x05, 0xf1,
-0xd7, 0x0b, 0xa9, 0x73, 0x41, 0xb5, 0xc1, 0xa9,
-0x0b, 0xbc, 0x9e, 0xfd, 0xda, 0x6c, 0xa7, 0x40,
-0xc4, 0x16, 0xf6, 0x5f, 0x61, 0x51, 0x8f, 0x91,
-0x6d, 0x59, 0x0f, 0x39, 0x8d, 0xc4, 0xdf, 0xc0,
-0x86, 0x54, 0xc5, 0x30, 0x22, 0x85, 0x99, 0x2e,
-0xfd, 0x43, 0x13, 0x57, 0x00, 0x35, 0xd9, 0x67,
-0x4d, 0x40, 0xc4, 0x1f, 0x06, 0xdf, 0x4a, 0xa1,
-0x2d, 0x8f, 0x40, 0xec, 0x14, 0xef, 0x53, 0xeb,
-0x2d, 0xbf, 0xae, 0x2c, 0x8b, 0x5f, 0x4c, 0x2f,
-0xbc, 0xd3, 0x4f, 0xdf, 0x07, 0x2f, 0x11, 0x46,
-0xeb, 0xf7, 0xbe, 0x9c, 0x3e, 0x90, 0x0d, 0xc4,
-0xdc, 0xf9, 0x5f, 0x57, 0x68, 0x08, 0x2c, 0x85,
-0x72, 0x5a, 0x9a, 0x96, 0x05, 0xde, 0x91, 0x83,
-0x42, 0x93, 0xe8, 0x92, 0x79, 0x1e, 0xee, 0xc0,
-0x4b, 0x5a, 0xc6, 0xbc, 0x36, 0x43, 0x4e, 0x3d,
-0x73, 0x42, 0xb7, 0x87, 0xf2, 0xda, 0x8c, 0xbb,
-0xac, 0xc2, 0xfa, 0x5f, 0xe2, 0xf8, 0x11, 0x9d,
-0x1c, 0x5d, 0x64, 0x37, 0xa4, 0xb4, 0xdc, 0x78,
-0x0d, 0x53, 0x90, 0x8f, 0x55, 0xca, 0xd1, 0xab,
-0x9c, 0x80, 0xa8, 0x99, 0xe3, 0x4f, 0xa5, 0xc6,
-0x0b, 0x71, 0x64, 0xe9, 0x02, 0xfd, 0x43, 0x26,
-0x4a, 0x49, 0xea, 0x8e, 0xc8, 0x61, 0x2e, 0xe3,
-0x60, 0x10, 0x1e, 0x83, 0x3b, 0x86, 0xd5, 0xd6,
-0x20, 0x85, 0x5b, 0x54, 0x98, 0x05, 0x25, 0x29,
-0xd9, 0x06, 0xa8, 0x18, 0xd4, 0xb2, 0xcc, 0xa5,
-0x7f, 0x48, 0xb4, 0x97, 0xe6, 0x67, 0x9f, 0x85,
-0xe7, 0xf9, 0x4e, 0x43, 0x9b, 0x29, 0xfb, 0x59,
-0xf2, 0x8c, 0x1b, 0xda, 0xab, 0x46, 0xb0, 0x9f,
-0x7f, 0x43, 0xd9, 0x28, 0xd9, 0x9c, 0x46, 0x62,
-0xb1, 0x24, 0x25, 0xbf, 0x3a, 0xbc, 0x62, 0xaa,
-0xfe, 0x21, 0x89, 0xb4, 0x54, 0x50, 0xa0, 0xc2,
-0x42, 0xad, 0x29, 0x3f, 0x4f, 0xfb, 0x59, 0xd2,
-0xaa, 0x22, 0x56, 0xba, 0x0f, 0x9f, 0x93, 0x1e,
-0x73, 0x8d, 0xbb, 0x28, 0x5e, 0x2f, 0xce, 0x96,
-0x5d, 0xfc, 0xd7, 0xd5, 0x34, 0x42, 0xaa, 0xac,
-0x72, 0x27, 0x5c, 0x6d, 0x59, 0x90, 0x0e, 0x0c,
-0xdb, 0x65, 0xbf, 0xb4, 0x34, 0xbe, 0xf3, 0xa7,
-0xb2, 0x75, 0xbc, 0x74, 0xa8, 0xf2, 0x32, 0x5c,
-0xe6, 0x0b, 0x3a, 0xfc, 0x4e, 0x22, 0x58, 0x09,
-0xc2, 0x2e, 0x7e, 0xdc, 0x5b, 0x47, 0x9f, 0x72,
-0xf3, 0x5f, 0x24, 0x72, 0x98, 0xd0, 0xb2, 0x7c,
-0x54, 0x8d, 0xb1, 0x5c, 0x39, 0x2a, 0xe9, 0xe0,
-0xa9, 0x42, 0x76, 0x3e, 0xdb, 0x32, 0x46, 0x6a,
-0xbd, 0x7c, 0x7a, 0x36, 0xef, 0x04, 0x8e, 0x99,
-0xa2, 0x16, 0x9b, 0x0b, 0x7f, 0x9d, 0x4f, 0xdb,
-0x6e, 0x3c, 0x85, 0x60, 0xad, 0x94, 0xf5, 0xa4,
-0xec, 0x3a, 0x47, 0xbd, 0xb0, 0xd0, 0xf4, 0xff,
-0x40, 0x99, 0x66, 0xfc, 0x0a, 0x5f, 0x11, 0xbf,
-0x80, 0x03, 0x8e, 0x64, 0xfa, 0x31, 0x3e, 0xcb,
-0xf4, 0x17, 0xf2, 0x5f, 0x1c, 0x9d, 0xe4, 0x54,
-0xe2, 0x5d, 0xb6, 0xd1, 0xdc, 0xd5, 0x1a, 0x4a,
-0xf9, 0xaa, 0x6c, 0xfc, 0x15, 0x7c, 0x57, 0xdd,
-0x78, 0x26, 0x68, 0x86, 0xb6, 0x93, 0x6c, 0xf8,
-0xb2, 0x60, 0x5e, 0x37, 0x83, 0x9c, 0x6d, 0x26,
-0xce, 0x57, 0xb7, 0x6e, 0x2a, 0xe0, 0xbf, 0xe6,
-0x36, 0xd3, 0x25, 0xda, 0xbf, 0x5a, 0x5b, 0x9c,
-0x3a, 0x50, 0xc5, 0x29, 0xd6, 0x6f, 0x6c, 0x84,
-0xb9, 0x2d, 0xa1, 0x19, 0x6c, 0x0e, 0x6c, 0x54,
-0xe7, 0xe7, 0x9f, 0xe3, 0x43, 0xf7, 0x9b, 0x6d,
-0x8c, 0x8b, 0x02, 0x5e, 0x05, 0xf9, 0x5f, 0x55,
-0xcb, 0x08, 0x7f, 0x99, 0x6d, 0xba, 0xb1, 0x4c,
-0xd5, 0x7d, 0xf9, 0x2c, 0x24, 0x13, 0x51, 0xc0,
-0x72, 0x15, 0x61, 0x57, 0xba, 0x2d, 0x14, 0x22,
-0x16, 0xa6, 0x1f, 0x6e, 0x97, 0x00, 0xe1, 0x24,
-0x29, 0x72, 0xe0, 0xa5, 0x02, 0xfe, 0x2b, 0xf4,
-0x82, 0x1e, 0x78, 0x2c, 0x79, 0x2e, 0x73, 0x7c,
-0x4d, 0xf4, 0x66, 0x7f, 0xa2, 0x53, 0xa8, 0x25,
-0xf8, 0xd0, 0x6d, 0xee, 0xdd, 0x35, 0x10, 0x7a,
-0x41, 0xf5, 0x27, 0x34, 0xa3, 0xfd, 0x8c, 0x71,
-0xd8, 0xe7, 0x96, 0xb6, 0xeb, 0xb5, 0xac, 0xbf,
-0x8c, 0xa9, 0x05, 0xf9, 0x5f, 0x38, 0xbf, 0x1a,
-0x5a, 0xb6, 0xbc, 0x86, 0xf8, 0x0b, 0x37, 0xb2,
-0x16, 0xa1, 0x09, 0xef, 0x04, 0x07, 0xf2, 0x3f,
-0x10, 0xda, 0x7a, 0x6d, 0xf7, 0x25, 0xb8, 0x12,
-0x5a, 0x54, 0x00, 0xa9, 0xec, 0x00, 0xc2, 0x7c,
-0xfe, 0x97, 0x67, 0x08, 0xec, 0x1a, 0x61, 0x8d,
-0xb2, 0xa4, 0x72, 0xca, 0x29, 0xd6, 0x4c, 0x37,
-0xdb, 0x45, 0x96, 0x17, 0xe2, 0x3d, 0x75, 0xf9,
-0xe7, 0xac, 0x4a, 0x09, 0x64, 0x47, 0x75, 0x15,
-0x61, 0xee, 0x14, 0xfd, 0xc3, 0x34, 0x33, 0x58,
-0x47, 0xd1, 0x7c, 0x08, 0xa5, 0x73, 0xd1, 0x86,
-0xc1, 0x61, 0x76, 0x06, 0x48, 0x64, 0xde, 0x67,
-0x38, 0x19, 0x61, 0x2e, 0xb2, 0xac, 0xc7, 0x2b,
-0x8c, 0x42, 0xfe, 0xcb, 0x72, 0xb2, 0xbd, 0x2c,
-0x51, 0xed, 0xcb, 0x46, 0x5b, 0x43, 0xcc, 0x16,
-0x99, 0xff, 0x33, 0x1a, 0x0b, 0x6c, 0x29, 0xba,
-0x5e, 0x23, 0x91, 0xb9, 0xf8, 0x2f, 0x92, 0x11,
-0xde, 0x41, 0x83, 0x0b, 0xf3, 0x9b, 0x3b, 0x44,
-0xfd, 0x65, 0xaf, 0x44, 0xf4, 0x8c, 0xaa, 0x2d,
-0x87, 0x66, 0x92, 0xda, 0x86, 0x11, 0x6c, 0xb9,
-0x81, 0x22, 0x7d, 0xa6, 0x80, 0xff, 0xca, 0xe2,
-0x2f, 0xdd, 0xae, 0xcd, 0x81, 0x63, 0x66, 0xb4,
-0x75, 0x25, 0x89, 0x1c, 0x1e, 0x92, 0xd1, 0x86,
-0xef, 0xb2, 0x5e, 0x23, 0x6a, 0xaa, 0x4f, 0x27,
-0xfe, 0x4e, 0x94, 0x51, 0xa0, 0xfe, 0xf1, 0x8c,
-0x53, 0x7e, 0x9c, 0xa3, 0x1b, 0xbf, 0x6a, 0x5b,
-0xf9, 0x54, 0xfe, 0x4b, 0x57, 0xfa, 0x29, 0x8b,
-0xb6, 0x60, 0x50, 0xf0, 0xe6, 0x94, 0x04, 0xbc,
-0xfc, 0x7c, 0x0e, 0x41, 0x17, 0x4a, 0xd3, 0x6b,
-0x6e, 0xfd, 0x0d, 0x82, 0xe4, 0x88, 0xb6, 0xe2,
-0x63, 0x3c, 0xaa, 0x7f, 0x11, 0x34, 0xc3, 0x4e,
-0x04, 0x53, 0xce, 0xe9, 0x67, 0xcc, 0xa8, 0x17,
-0x5f, 0xa4, 0xb4, 0x4b, 0x91, 0x23, 0x27, 0x44,
-0x3f, 0x55, 0xff, 0xd0, 0x43, 0x94, 0x96, 0x76,
-0x8e, 0xdd, 0x09, 0x2f, 0xaa, 0x8b, 0x52, 0xa5,
-0xb2, 0x10, 0xb3, 0xc0, 0x56, 0x6f, 0xc2, 0x13,
-0x33, 0x8d, 0xb4, 0xfa, 0xd1, 0xae, 0x31, 0x78,
-0x91, 0xd9, 0x1a, 0xf5, 0x36, 0x34, 0x1b, 0x83,
-0x27, 0xf8, 0x14, 0xfd, 0x43, 0x2f, 0xfa, 0xe1,
-0xbd, 0xb7, 0x14, 0x33, 0x56, 0x8c, 0x8e, 0xc7,
-0x4c, 0x9f, 0x53, 0xbe, 0x50, 0xa5, 0x3a, 0xf2,
-0x09, 0xca, 0x6e, 0x68, 0x64, 0x03, 0xb8, 0xc4,
-0xc5, 0x0b, 0xf0, 0xd7, 0x2b, 0x89, 0xe4, 0xa0,
-0x48, 0x04, 0x9b, 0x82, 0xbf, 0x6e, 0x31, 0xd9,
-0x0c, 0x4f, 0x06, 0xe6, 0x98, 0x3e, 0x8a, 0x4f,
-0x38, 0x08, 0x6b, 0x05, 0x11, 0x66, 0x3c, 0x46,
-0x55, 0x57, 0x5a, 0x71, 0x59, 0xee, 0x32, 0x9d,
-0xd0, 0x3b, 0x8f, 0x58, 0x9f, 0x7f, 0x0b, 0x8f,
-0x51, 0x22, 0xd8, 0xea, 0x42, 0xfd, 0xc3, 0xea,
-0x6c, 0xe0, 0x8c, 0x52, 0x06, 0x7f, 0xe0, 0xb7,
-0x1b, 0x5f, 0xac, 0xd7, 0x24, 0x22, 0xf3, 0xaf,
-0x57, 0x2e, 0xc3, 0xaf, 0xf9, 0xf3, 0x54, 0xed,
-0xeb, 0x47, 0xd8, 0x92, 0x71, 0xa8, 0x31, 0x81,
-0xbf, 0x7e, 0xc3, 0x4e, 0x13, 0x34, 0x1b, 0xd3,
-0x5c, 0xf8, 0x8b, 0xdc, 0x78, 0x05, 0x37, 0x17,
-0x58, 0xcf, 0xec, 0x40, 0x44, 0x67, 0x73, 0x11,
-0xc2, 0x0e, 0xff, 0xc6, 0xa7, 0xf0, 0x5f, 0xc2,
-0x4f, 0x60, 0x13, 0x05, 0xfa, 0x1b, 0x12, 0x7f,
-0x2d, 0x38, 0x17, 0x18, 0x50, 0x2e, 0xc0, 0x49,
-0x1e, 0xab, 0x12, 0xb4, 0xd7, 0x84, 0x40, 0x5b,
-0x9e, 0x3f, 0xc2, 0x6f, 0x12, 0x77, 0xc6, 0x4b,
-0x7b, 0x2a, 0x1f, 0x82, 0x5f, 0xf2, 0xe8, 0x90,
-0xd4, 0xd0, 0x4e, 0x89, 0x1c, 0xb1, 0x3f, 0xc2,
-0x8a, 0xed, 0x0b, 0xb2, 0xb8, 0xeb, 0x0d, 0xba,
-0xf3, 0xbf, 0x2a, 0xac, 0x4e, 0x2f, 0xba, 0x58,
-0x8f, 0x42, 0x75, 0x48, 0xee, 0x5f, 0x5c, 0x24,
-0x82, 0x8d, 0xc0, 0x63, 0x59, 0xdc, 0xb6, 0xd6,
-0x2b, 0xb3, 0x20, 0x61, 0x18, 0x59, 0xa9, 0xbf,
-0xc1, 0x05, 0x10, 0x1b, 0x5c, 0xb6, 0x69, 0x67,
-0x68, 0x58, 0xd3, 0x0a, 0xf0, 0x17, 0xd5, 0x5f,
-0x36, 0x71, 0xd7, 0xfb, 0x1e, 0x55, 0x2d, 0x14,
-0xcf, 0x31, 0x9c, 0x7d, 0x30, 0x34, 0xcf, 0xf4,
-0x3d, 0xc8, 0x66, 0x19, 0xdf, 0x87, 0xaf, 0x5a,
-0xc5, 0x92, 0x08, 0x13, 0xf1, 0x87, 0x16, 0x22,
-0x9c, 0x39, 0x54, 0x82, 0xcd, 0xc6, 0x5f, 0x6b,
-0x66, 0xd8, 0x51, 0x55, 0x5e, 0xd6, 0x0b, 0x5b,
-0x13, 0x35, 0x71, 0x47, 0x65, 0xc5, 0xf6, 0x33,
-0x2d, 0x83, 0x8a, 0x93, 0x96, 0xc2, 0x93, 0x50,
-0xd5, 0xe7, 0x8e, 0xe8, 0x78, 0xc5, 0x14, 0xf5,
-0xbf, 0xea, 0x1d, 0xfc, 0xd5, 0x73, 0xd3, 0x3e,
-0x99, 0x8d, 0x82, 0x7b, 0x53, 0xd1, 0x9b, 0x9b,
-0x62, 0x7b, 0x03, 0x0d, 0x4a, 0x78, 0xd6, 0x84,
-0x57, 0x44, 0x1b, 0x8e, 0xb0, 0xe3, 0x56, 0xbd,
-0xf9, 0x44, 0x5a, 0xa9, 0x85, 0x37, 0xe0, 0x85,
-0xc1, 0x12, 0x99, 0xb1, 0x22, 0xfb, 0x19, 0x9d,
-0xff, 0x3a, 0x2b, 0x70, 0xd8, 0xc1, 0x5f, 0x82,
-0xff, 0x62, 0x42, 0xfc, 0xfc, 0xfd, 0x35, 0x1f,
-0xc4, 0x63, 0x3c, 0x27, 0xb0, 0x86, 0xc6, 0x7f,
-0xa8, 0xef, 0x34, 0xc7, 0xcc, 0x2d, 0xed, 0xb7,
-0xec, 0x63, 0x1f, 0x40, 0xa4, 0x3f, 0x90, 0x99,
-0xee, 0xf2, 0xeb, 0x48, 0xb8, 0xb2, 0x73, 0x0f,
-0x6e, 0x64, 0x39, 0xfc, 0x75, 0x51, 0xc0, 0xae,
-0xe4, 0x59, 0x78, 0x05, 0x16, 0x24, 0xd0, 0xa9,
-0x78, 0xd8, 0xd1, 0xd9, 0xfe, 0x1b, 0x38, 0xb5,
-0x79, 0x91, 0xf9, 0x78, 0xb1, 0x56, 0x65, 0xfc,
-0x3f, 0xa4, 0xd8, 0x86, 0x7e, 0x8b, 0xd7, 0x76,
-0x41, 0xdf, 0x46, 0x0f, 0x7f, 0x51, 0x6f, 0xe0,
-0xd8, 0x52, 0x17, 0xff, 0x85, 0xfb, 0x57, 0xe6,
-0xd6, 0xa3, 0xe8, 0xab, 0x6f, 0x3a, 0x57, 0xd7,
-0xd3, 0x81, 0xfe, 0xa1, 0x67, 0x42, 0x38, 0x81,
-0xcd, 0xef, 0x18, 0xcf, 0x0e, 0x06, 0xe3, 0x25,
-0x9b, 0x8b, 0x6a, 0x8d, 0x23, 0xdb, 0x82, 0x0e,
-0x6f, 0x45, 0xb9, 0x39, 0x78, 0xf3, 0x73, 0x29,
-0x44, 0x52, 0x9b, 0x99, 0x91, 0xd3, 0x3f, 0xf4,
-0x1e, 0x61, 0xe8, 0xe1, 0xef, 0x65, 0x1f, 0x78,
-0x36, 0x25, 0x48, 0xc3, 0xed, 0x66, 0x87, 0xf6,
-0x0a, 0x0e, 0x2d, 0xd9, 0xe4, 0x99, 0xbb, 0xac,
-0x38, 0x9d, 0xa8, 0x21, 0x41, 0x60, 0x6b, 0xa6,
-0x78, 0x8e, 0x52, 0x63, 0x6d, 0x42, 0xf8, 0xc6,
-0xc9, 0x45, 0xd7, 0xf4, 0xb2, 0x02, 0xfe, 0xcb,
-0x30, 0x6f, 0xf6, 0x30, 0x7c, 0xa7, 0x61, 0x35,
-0xd5, 0x12, 0x5d, 0x49, 0x31, 0x6f, 0x03, 0xb7,
-0x44, 0x8a, 0x2c, 0x7d, 0x97, 0x8a, 0x20, 0x2b,
-0x48, 0x32, 0x95, 0xfa, 0xb0, 0x0c, 0x99, 0xeb,
-0x36, 0x04, 0x77, 0x63, 0xb1, 0xb4, 0x61, 0xf4,
-0x6b, 0x1e, 0xc6, 0x6e, 0xca, 0xe3, 0xaf, 0x10,
-0x3e, 0x39, 0xad, 0xbc, 0x0f, 0xc7, 0xa1, 0xab,
-0x63, 0xa5, 0xf0, 0x7b, 0x05, 0xbc, 0x55, 0xce,
-0xb5, 0x0e, 0x18, 0x2f, 0x98, 0x7f, 0xc1, 0x8b,
-0x70, 0x07, 0x31, 0x1b, 0xce, 0x08, 0x7f, 0xec,
-0x3b, 0x86, 0x1d, 0xa0, 0x3b, 0x00, 0x5d, 0xd6,
-0xaa, 0xc7, 0x3a, 0x1d, 0xfe, 0xeb, 0x73, 0x02,
-0x49, 0x51, 0xb2, 0xf3, 0x68, 0x7a, 0x12, 0x9a,
-0x74, 0x47, 0xe7, 0x9f, 0xbc, 0xc1, 0x51, 0x7e,
-0x99, 0x35, 0x99, 0xd3, 0xfb, 0x15, 0x8a, 0x70,
-0xb3, 0x53, 0x57, 0x26, 0x66, 0x34, 0xbc, 0x32,
-0x9d, 0xc8, 0x97, 0xc9, 0xfa, 0x58, 0x7f, 0xa0,
-0xaf, 0x20, 0xfe, 0x10, 0x04, 0xa4, 0xb2, 0x6b,
-0xe2, 0xe0, 0x03, 0xc5, 0x8e, 0x56, 0x7a, 0x46,
-0xb9, 0x08, 0xff, 0x5d, 0x14, 0xf9, 0x5a, 0x3a,
-0xca, 0x11, 0x88, 0xf9, 0xfc, 0x7d, 0xc9, 0x51,
-0x18, 0xf0, 0x2e, 0xf0, 0xd1, 0x3d, 0xfc, 0x64,
-0x45, 0x13, 0x6c, 0xb1, 0x6e, 0xa0, 0xbf, 0xe1,
-0x18, 0xf0, 0x31, 0x1c, 0x16, 0x41, 0x86, 0x41,
-0x44, 0xbe, 0xfc, 0xf3, 0x43, 0xea, 0x24, 0x3b,
-0x67, 0x76, 0xe8, 0x35, 0xba, 0xda, 0x8e, 0x73,
-0xb0, 0xc3, 0x0c, 0xea, 0x5a, 0x3b, 0xb5, 0xb4,
-0xd6, 0x6c, 0xd7, 0x1e, 0x2f, 0xd0, 0xdf, 0xd0,
-0xed, 0xd0, 0x4d, 0x51, 0xbd, 0x17, 0xd0, 0xd8,
-0x2f, 0x40, 0x56, 0xf3, 0x49, 0x79, 0x0c, 0xb5,
-0x10, 0x5b, 0xd0, 0x2b, 0xf0, 0xf8, 0x74, 0xf6,
-0x0b, 0x8a, 0x79, 0x03, 0x9c, 0x44, 0x32, 0xa9,
-0x7c, 0x85, 0xe1, 0xaa, 0xff, 0x75, 0x5d, 0x94,
-0xe9, 0x5a, 0x5a, 0x84, 0x2d, 0x75, 0x3f, 0x23,
-0xa1, 0x80, 0x22, 0xa2, 0x63, 0x06, 0xe8, 0xb8,
-0x98, 0x64, 0xd5, 0xb3, 0xf0, 0x03, 0x79, 0xc2,
-0x39, 0x44, 0xc5, 0x5f, 0xbc, 0xb8, 0x50, 0x3b,
-0xfa, 0x87, 0x37, 0xe5, 0x5e, 0x75, 0xd7, 0x5e,
-0x40, 0x2b, 0xdb, 0xec, 0x1e, 0xe5, 0x63, 0xfd,
-0x04, 0x7b, 0x84, 0xd8, 0xa5, 0x8f, 0x94, 0x01,
-0x2b, 0x36, 0x58, 0xb3, 0x19, 0xc7, 0xf4, 0xad,
-0x96, 0xae, 0x75, 0x81, 0x4d, 0xca, 0x70, 0x62,
-0x80, 0xf2, 0x22, 0xb7, 0x6b, 0x33, 0x0a, 0xeb,
-0x2f, 0x17, 0xe6, 0x45, 0x5e, 0x45, 0xe3, 0xd6,
-0x51, 0xe5, 0x6a, 0xf3, 0xef, 0x60, 0xb1, 0xf5,
-0x6f, 0xa3, 0xca, 0x88, 0x31, 0xf6, 0x54, 0xec,
-0xb5, 0x92, 0x8d, 0xca, 0xe5, 0xc4, 0x27, 0x10,
-0x5b, 0x1d, 0x38, 0xa6, 0x5c, 0x8e, 0xa0, 0x57,
-0xc9, 0x03, 0xed, 0x85, 0xfc, 0x57, 0xb4, 0xe0,
-0xfb, 0xc4, 0xe5, 0x71, 0x96, 0x70, 0xda, 0x3d,
-0x31, 0x52, 0xdb, 0x38, 0xc7, 0x8e, 0x9b, 0x5d,
-0xa9, 0xf0, 0x1e, 0xcd, 0xaf, 0x8e, 0xeb, 0xb1,
-0x1d, 0x08, 0xdb, 0x87, 0xf5, 0x89, 0x96, 0xae,
-0xbb, 0xc3, 0x0b, 0xf1, 0xfb, 0xe4, 0xf0, 0x97,
-0x0c, 0x32, 0x54, 0x72, 0x1d, 0x15, 0xa6, 0x68,
-0x0d, 0xab, 0x44, 0x9e, 0x54, 0x04, 0x88, 0x6a,
-0xf9, 0x10, 0x36, 0xb5, 0x04, 0x33, 0xea, 0x3e,
-0x76, 0x9b, 0x7a, 0x64, 0xb0, 0xa6, 0x47, 0x3d,
-0x90, 0xf8, 0x10, 0x0e, 0x37, 0x07, 0x75, 0xdc,
-0xd1, 0xa2, 0x6e, 0xfe, 0x4b, 0x1c, 0x1b, 0x9a,
-0xce, 0x78, 0x99, 0xc2, 0x97, 0x28, 0xc6, 0xf1,
-0x2a, 0x4a, 0x7a, 0x56, 0x92, 0xb2, 0xeb, 0xcb,
-0xde, 0x84, 0x19, 0x8c, 0xb4, 0x84, 0x12, 0xac,
-0xaa, 0xc7, 0x13, 0x4e, 0xb7, 0x44, 0x12, 0xe7,
-0xcc, 0x2e, 0xd3, 0x98, 0xa1, 0x1a, 0x6c, 0xbd,
-0x2b, 0xfe, 0x50, 0xd2, 0x5e, 0x3f, 0x92, 0x70,
-0x60, 0x0c, 0x71, 0xc1, 0x0b, 0x08, 0xbb, 0xe6,
-0x09, 0x5c, 0xf0, 0x58, 0x35, 0x25, 0x1f, 0xbd,
-0x66, 0xe0, 0x6e, 0x15, 0x1c, 0xf8, 0xfb, 0xc4,
-0x67, 0xbd, 0xcf, 0x4b, 0xb1, 0xfa, 0xd7, 0xc4,
-0xa7, 0xd0, 0x58, 0xeb, 0xe2, 0xbf, 0xd2, 0x11,
-0x6b, 0x55, 0x44, 0xa1, 0xf7, 0xa7, 0x31, 0x84,
-0x7e, 0xb8, 0x89, 0x1e, 0x75, 0x63, 0xf6, 0xa7,
-0x11, 0xe5, 0x23, 0x78, 0x39, 0xd3, 0x68, 0x6d,
-0x69, 0x50, 0x7e, 0x61, 0xbe, 0x6c, 0x46, 0x46,
-0xbd, 0x9f, 0x29, 0xf7, 0x57, 0x8d, 0xee, 0x6f,
-0x3c, 0xb3, 0xd2, 0xa0, 0x18, 0xc5, 0x96, 0xc8,
-0xa0, 0xbf, 0x4a, 0xb9, 0xdb, 0x15, 0x7f, 0xa8,
-0x37, 0x49, 0xae, 0xff, 0xbb, 0xf4, 0x02, 0x50,
-0x98, 0xe8, 0x55, 0xbe, 0xb8, 0xbf, 0xf6, 0xbc,
-0x32, 0x62, 0xe6, 0xeb, 0x7f, 0x51, 0x84, 0xc0,
-0xaf, 0x9c, 0xf8, 0xc3, 0x73, 0xb8, 0xa0, 0x8d,
-0x83, 0xf8, 0x54, 0xca, 0xcd, 0x7f, 0xc9, 0xf1,
-0x62, 0xb2, 0xde, 0x8d, 0x46, 0xe3, 0x45, 0x81,
-0xa3, 0x0b, 0x48, 0x31, 0x09, 0x27, 0xe3, 0xcf,
-0x2b, 0xc3, 0x52, 0xe1, 0x21, 0xa3, 0x18, 0x84,
-0x2f, 0xa4, 0x0f, 0x89, 0x86, 0x67, 0x0a, 0xff,
-0x15, 0xb7, 0x8f, 0x55, 0x7f, 0xeb, 0x1c, 0x00,
-0xbe, 0x20, 0xe4, 0x76, 0xcb, 0xce, 0x7a, 0x71,
-0xeb, 0x3f, 0xae, 0x3d, 0xd0, 0x37, 0x0b, 0x7e,
-0xee, 0xad, 0x30, 0xb5, 0xd1, 0xe0, 0x0c, 0xdc,
-0xfa, 0x9b, 0x4c, 0x75, 0xb0, 0x79, 0x86, 0x23,
-0x56, 0xef, 0xe2, 0xbf, 0x6c, 0x25, 0xf9, 0x3e,
-0x68, 0xa7, 0x20, 0x43, 0x95, 0x95, 0x21, 0x4a,
-0x9a, 0xf3, 0x8e, 0xef, 0x61, 0x47, 0xf9, 0xbf,
-0x1e, 0xa1, 0xd9, 0xc1, 0x76, 0xba, 0x27, 0x31,
-0x9b, 0x94, 0x4f, 0xb0, 0x7b, 0x9b, 0xbf, 0x02,
-0x07, 0x3b, 0x44, 0x76, 0x5e, 0x01, 0xff, 0x55,
-0x65, 0xad, 0x90, 0x39, 0x11, 0x36, 0x11, 0xd6,
-0xe5, 0xa9, 0xca, 0xaa, 0xf5, 0x65, 0xa7, 0x5b,
-0xed, 0xfa, 0x29, 0x35, 0xd0, 0xad, 0x56, 0x9d,
-0xd5, 0x1a, 0x71, 0x23, 0xeb, 0x7e, 0x30, 0x3c,
-0xa6, 0xd6, 0xb1, 0x95, 0xf1, 0x6e, 0x5a, 0x13,
-0xea, 0xdc, 0xfc, 0xd7, 0x65, 0xa8, 0x93, 0x94,
-0x56, 0x02, 0xc2, 0x94, 0xf6, 0x15, 0x82, 0x0b,
-0x30, 0x97, 0x97, 0xa6, 0xa7, 0x8f, 0x79, 0x2e,
-0x7b, 0x1f, 0xa1, 0x4b, 0x77, 0xf1, 0xab, 0x7d,
-0x07, 0x33, 0x81, 0x21, 0xad, 0x81, 0x3f, 0x62,
-0xfd, 0x43, 0x57, 0x78, 0xe4, 0xb6, 0xef, 0xd0,
-0xdc, 0xe1, 0xfe, 0xa1, 0x42, 0xfe, 0x4b, 0x84,
-0x1d, 0x8e, 0xc2, 0x59, 0xb9, 0x8e, 0x51, 0xd9,
-0xe5, 0x06, 0x7d, 0x36, 0x25, 0x8f, 0x8c, 0x11,
-0xef, 0xc9, 0xa9, 0xda, 0x57, 0x59, 0x03, 0x62,
-0x07, 0xf4, 0xf4, 0x10, 0x76, 0xe9, 0x81, 0x47,
-0x95, 0x9d, 0xa4, 0xbf, 0xa1, 0x17, 0xf2, 0x5f,
-0xe7, 0x21, 0x2a, 0xb3, 0x87, 0xa8, 0x04, 0x6d,
-0x09, 0xa9, 0xe7, 0x91, 0x16, 0x4a, 0x0d, 0x29,
-0xc8, 0x8d, 0x7b, 0x4b, 0xa9, 0xe5, 0x5d, 0x38,
-0x66, 0x45, 0xe3, 0x9b, 0x77, 0x28, 0x73, 0xe1,
-0x8d, 0x74, 0x34, 0xee, 0x9f, 0x49, 0xc1, 0x8a,
-0x46, 0xf4, 0xde, 0x02, 0xfe, 0xcb, 0x6b, 0x47,
-0x8b, 0xf5, 0x0b, 0x69, 0x7a, 0xf2, 0xc3, 0xc9,
-0x91, 0x6e, 0xcd, 0xa1, 0xa4, 0x16, 0x82, 0x54,
-0x1b, 0xad, 0x20, 0xe9, 0xcf, 0xcf, 0x41, 0xd7,
-0x5a, 0xe8, 0xc6, 0xcf, 0x69, 0xdf, 0x18, 0x0f,
-0xae, 0x43, 0x23, 0x9b, 0xd3, 0x3f, 0xcc, 0x45,
-0x9d, 0xc1, 0x3f, 0xc3, 0xe7, 0xcd, 0xe2, 0x41,
-0xf6, 0x20, 0x1a, 0x86, 0xb9, 0xdc, 0x15, 0x76,
-0xf8, 0x63, 0x59, 0x3d, 0xea, 0x26, 0xe6, 0x4f,
-0xb5, 0x31, 0xe3, 0xcf, 0xd4, 0xad, 0xcd, 0x5e,
-0x84, 0x54, 0xc1, 0x65, 0xa1, 0x29, 0xfc, 0x57,
-0x9c, 0x3c, 0xfc, 0x4b, 0xe9, 0x7f, 0x0e, 0x55,
-0x2e, 0x57, 0x5f, 0x4b, 0x2c, 0x4c, 0x3f, 0x1e,
-0x32, 0x8e, 0xab, 0x88, 0x02, 0x5a, 0x1c, 0x20,
-0x96, 0xf6, 0xcc, 0x4f, 0x23, 0xda, 0x3a, 0xee,
-0x47, 0x20, 0x66, 0xa0, 0xf1, 0x98, 0x77, 0x57,
-0x5b, 0x28, 0x7d, 0x5c, 0xcd, 0xe7, 0x7f, 0x09,
-0xfc, 0x65, 0xa7, 0xe4, 0x9c, 0x31, 0xea, 0xd4,
-0x92, 0x84, 0x12, 0xe7, 0x67, 0x8d, 0xa8, 0x5a,
-0x6a, 0x17, 0xb3, 0xf6, 0x95, 0x24, 0x76, 0xa7,
-0x13, 0xc7, 0x8d, 0x68, 0x47, 0x78, 0x97, 0x62,
-0x24, 0xde, 0x34, 0xba, 0xd4, 0xf0, 0x2e, 0xcd,
-0xe0, 0x03, 0x46, 0x04, 0xa1, 0x99, 0xe2, 0xe6,
-0xbf, 0x98, 0x0c, 0x7e, 0xf3, 0xe4, 0x93, 0x86,
-0xe0, 0xa5, 0xe5, 0x54, 0x6d, 0xd9, 0x49, 0x59,
-0x9a, 0x4c, 0x0b, 0x8d, 0xc4, 0xd7, 0x92, 0x97,
-0xc8, 0x38, 0x1e, 0xb8, 0x40, 0xc6, 0x7c, 0xaa,
-0x1a, 0x56, 0x18, 0x7f, 0x68, 0xe3, 0xe5, 0xf3,
-0x10, 0x31, 0x37, 0x93, 0x71, 0x4e, 0xd4, 0x5f,
-0x26, 0xc5, 0x3f, 0x2f, 0x95, 0x66, 0x6e, 0xbe,
-0x04, 0x1f, 0x61, 0xcb, 0x96, 0x41, 0x45, 0x26,
-0x8b, 0x95, 0x0e, 0x2e, 0x95, 0xf1, 0x87, 0x82,
-0xa9, 0x71, 0xf8, 0x2f, 0x5d, 0xd2, 0x5e, 0xe8,
-0xfc, 0xf7, 0x78, 0xee, 0x13, 0x61, 0x12, 0xd3,
-0x3a, 0xec, 0x68, 0x43, 0x34, 0xe6, 0x52, 0x14,
-0x65, 0x56, 0x94, 0x5d, 0x5e, 0xe1, 0x0a, 0x44,
-0x74, 0xa8, 0x31, 0x28, 0xe0, 0xbf, 0x0c, 0x8a,
-0x17, 0x25, 0x23, 0x4d, 0x60, 0x76, 0x88, 0x32,
-0x9a, 0x4d, 0x9f, 0x60, 0xbb, 0x58, 0x5e, 0x76,
-0x23, 0x0f, 0xbb, 0x54, 0x1b, 0xac, 0xc5, 0xb5,
-0x3c, 0xff, 0x25, 0xe2, 0x0f, 0x83, 0x92, 0x35,
-0x3b, 0xe4, 0x2a, 0x04, 0x46, 0x6a, 0xcf, 0xfd,
-0x08, 0xd2, 0x8b, 0x64, 0xcb, 0x53, 0x66, 0x4d,
-0xab, 0xb6, 0xdd, 0xa1, 0x56, 0x75, 0x02, 0x6b,
-0xf1, 0xe0, 0x54, 0xfd, 0x79, 0xe8, 0x72, 0xba,
-0x97, 0x9e, 0xa3, 0x10, 0x47, 0x16, 0x33, 0x67,
-0xa7, 0x3c, 0xef, 0xb6, 0x6d, 0x44, 0x43, 0xcd,
-0xa1, 0xa4, 0xad, 0xca, 0x7b, 0x9c, 0x08, 0x2c,
-0xdc, 0x90, 0x49, 0x9a, 0x43, 0x7c, 0xca, 0xc5,
-0x7f, 0x9d, 0x07, 0x47, 0x52, 0xc3, 0x9b, 0x2f,
-0xbb, 0xbc, 0x7a, 0x4b, 0x6a, 0xfa, 0x90, 0x18,
-0xaf, 0x5a, 0x9c, 0x17, 0xc6, 0xfb, 0xdb, 0x71,
-0xdb, 0xda, 0x41, 0xa5, 0xb4, 0x77, 0xc4, 0xbe,
-0x16, 0x78, 0x2a, 0xf9, 0x8a, 0x89, 0x0f, 0x5c,
-0xb6, 0x65, 0xdb, 0x54, 0xfe, 0x4b, 0x93, 0xc1,
-0xc0, 0x75, 0x32, 0x48, 0xb5, 0x43, 0xa2, 0xad,
-0x73, 0xe8, 0xe4, 0x88, 0x79, 0x0a, 0x80, 0xab,
-0xbf, 0x1a, 0x48, 0x10, 0xc7, 0x8a, 0xf3, 0x92,
-0xea, 0xf4, 0x59, 0x76, 0x9d, 0xf4, 0xe3, 0x2e,
-0xfe, 0x8b, 0xd9, 0x94, 0xd6, 0x26, 0x19, 0x7f,
-0x38, 0x80, 0x46, 0x45, 0xca, 0x27, 0x5b, 0x4a,
-0xe9, 0x52, 0x3d, 0xbc, 0x38, 0x50, 0xbb, 0x53,
-0x1b, 0x61, 0xe3, 0xf0, 0x84, 0x5a, 0x99, 0xd1,
-0x86, 0x12, 0x88, 0xc8, 0x8c, 0xda, 0x6d, 0x6e,
-0xfd, 0xc3, 0x5c, 0xfc, 0x21, 0xe9, 0x47, 0x55,
-0x89, 0xf0, 0x69, 0x96, 0x04, 0xa3, 0x65, 0x5e,
-0xc1, 0xca, 0xd6, 0x3d, 0x20, 0xbc, 0xee, 0x53,
-0x90, 0xb4, 0x8c, 0xf3, 0xa2, 0xd2, 0xd0, 0x91,
-0x74, 0x78, 0x14, 0x2f, 0x1d, 0x2f, 0xc4, 0x5f,
-0xc5, 0xeb, 0xca, 0xae, 0x7a, 0xb7, 0x48, 0x35,
-0x75, 0xd2, 0xf7, 0x33, 0x08, 0x20, 0x9c, 0x55,
-0x85, 0x1c, 0xc4, 0x7a, 0xc4, 0x05, 0x07, 0xa0,
-0x5a, 0xd7, 0xbe, 0x84, 0x1b, 0x59, 0x3b, 0xaf,
-0x60, 0x22, 0x41, 0xe9, 0x80, 0x8c, 0x18, 0x1f,
-0x9e, 0x12, 0x7f, 0x88, 0xd8, 0x4a, 0xfd, 0x2d,
-0xbf, 0x23, 0x5b, 0xb2, 0x5e, 0x39, 0x45, 0x49,
-0x5e, 0x06, 0x1a, 0xd7, 0x2c, 0xaa, 0x08, 0xb6,
-0xaa, 0xbe, 0x7c, 0x36, 0x42, 0xb3, 0xc5, 0xd9,
-0x2d, 0xeb, 0x95, 0xab, 0xac, 0x8f, 0x60, 0x57,
-0x0b, 0x76, 0x2f, 0x65, 0x8d, 0xb9, 0xf3, 0xbf,
-0x1c, 0xaa, 0x05, 0xbf, 0xaa, 0x0b, 0x64, 0xbd,
-0x08, 0x45, 0xa2, 0x0a, 0x95, 0x08, 0xe9, 0xb9,
-0x6d, 0x88, 0xc6, 0xc2, 0xc4, 0x05, 0x76, 0x48,
-0xcd, 0xdd, 0x73, 0x59, 0x46, 0xc2, 0xbb, 0xe3,
-0x0f, 0xb9, 0x1d, 0x7f, 0x78, 0x2d, 0xa7, 0xbf,
-0xc1, 0x17, 0x1b, 0xf7, 0x8f, 0x29, 0x6f, 0x9b,
-0xa7, 0xdb, 0x9a, 0x86, 0xd8, 0x98, 0x52, 0xb7,
-0x6c, 0x32, 0x81, 0x68, 0x6b, 0x18, 0x31, 0x9a,
-0xb8, 0x87, 0x8c, 0xab, 0xbc, 0x29, 0x1e, 0x70,
-0xe9, 0x1f, 0x3e, 0x0d, 0xdd, 0x19, 0xd1, 0x09,
-0x14, 0x5b, 0x28, 0xb0, 0xd5, 0x59, 0x12, 0x52,
-0x00, 0xec, 0xa8, 0xb7, 0x4d, 0xec, 0x9f, 0x7e,
-0x35, 0xca, 0xb6, 0xc3, 0x50, 0xda, 0x98, 0xd4,
-0xe2, 0xec, 0x7f, 0xc2, 0xa7, 0x61, 0xdc, 0x89,
-0x5a, 0x25, 0x51, 0x48, 0xfd, 0xe3, 0xae, 0xff,
-0x45, 0x9d, 0xf9, 0x80, 0x1d, 0x5b, 0xe8, 0x70,
-0x5b, 0x0c, 0x01, 0xef, 0xa4, 0x41, 0x95, 0xd7,
-0x96, 0xe3, 0xce, 0x18, 0xd9, 0x6f, 0x54, 0x80,
-0xf8, 0xf8, 0xf3, 0x50, 0xdd, 0x81, 0xc6, 0x19,
-0xea, 0x67, 0xd0, 0x5c, 0xfa, 0x87, 0xb9, 0x22,
-0x95, 0xaf, 0xea, 0xdd, 0x5f, 0x0a, 0xbf, 0x8e,
-0x63, 0x7a, 0xda, 0xec, 0x36, 0xf1, 0xfb, 0xdc,
-0xce, 0x4e, 0x19, 0x4f, 0x82, 0x1f, 0xe1, 0x76,
-0x70, 0x33, 0xa4, 0xc1, 0xe0, 0x38, 0x2b, 0x2d,
-0x23, 0x4d, 0x4a, 0x62, 0x06, 0x4d, 0xd8, 0x96,
-0xf0, 0xdd, 0x5a, 0xd4, 0xad, 0x7f, 0xe8, 0xe4,
-0x6e, 0x4b, 0x55, 0xc9, 0xc3, 0xd4, 0xbd, 0xe9,
-0xc6, 0x73, 0xa5, 0x3d, 0x38, 0x3a, 0x6f, 0xc1,
-0x6c, 0xf2, 0xde, 0xe7, 0x8a, 0x6c, 0x02, 0xb1,
-0xc7, 0x1d, 0xa2, 0xf8, 0x0d, 0x5e, 0x29, 0xe6,
-0x0e, 0x55, 0x83, 0xfd, 0xa0, 0x30, 0xfe, 0x10,
-0x9f, 0x73, 0xd2, 0xb8, 0xa8, 0x36, 0xf6, 0x05,
-0x22, 0xc9, 0x11, 0x7e, 0x51, 0xe0, 0x82, 0xf2,
-0x11, 0xf8, 0x90, 0x89, 0xc2, 0x01, 0xe7, 0xe0,
-0x43, 0xb3, 0x91, 0xaf, 0xaa, 0xc2, 0x96, 0x89,
-0x16, 0x6c, 0x59, 0xa8, 0x0c, 0xc0, 0x79, 0xb3,
-0x31, 0x93, 0xe7, 0xbf, 0x3c, 0x39, 0xfd, 0x8d,
-0xca, 0x49, 0x95, 0x48, 0x2e, 0x04, 0x59, 0xb3,
-0x88, 0x3d, 0x19, 0x2c, 0x19, 0x2d, 0xa7, 0xb4,
-0x2f, 0x01, 0x0c, 0x1b, 0xc4, 0xe8, 0xf8, 0x07,
-0x95, 0x19, 0xe6, 0x2f, 0xf9, 0x82, 0xf8, 0xaa,
-0x33, 0x4a, 0x23, 0x3f, 0x45, 0x47, 0x55, 0x79,
-0xfd, 0x43, 0xb7, 0xfe, 0x86, 0x53, 0x7f, 0x59,
-0xed, 0x84, 0xe0, 0xa0, 0xa8, 0xfa, 0x24, 0xb3,
-0xb4, 0x96, 0xfe, 0x7d, 0xfc, 0xc8, 0x99, 0x9a,
-0x21, 0x75, 0x7b, 0x62, 0xbe, 0xb7, 0x23, 0x15,
-0xf4, 0x6b, 0x3f, 0x45, 0xf8, 0xdc, 0xd9, 0x1a,
-0xfc, 0xac, 0xe0, 0xad, 0x6e, 0xcc, 0x7f, 0xd9,
-0x75, 0x9c, 0x83, 0x9c, 0x0a, 0x31, 0x7b, 0x3a,
-0xe1, 0x7e, 0x8a, 0x3a, 0x33, 0x64, 0x54, 0xd5,
-0x4e, 0xdc, 0xfa, 0x37, 0xa9, 0xb8, 0x7c, 0xa5,
-0xb1, 0xa5, 0x53, 0x15, 0x27, 0xff, 0x71, 0x17,
-0xfe, 0x8a, 0x08, 0x92, 0x0b, 0xa7, 0xa7, 0x37,
-0xdd, 0x17, 0x8a, 0x50, 0x91, 0x2f, 0xaa, 0x42,
-0x95, 0xf1, 0x85, 0x8d, 0xa4, 0xbe, 0x9a, 0xa4,
-0x39, 0x5a, 0x68, 0x4c, 0x57, 0x92, 0x9a, 0x0d,
-0xce, 0x82, 0xb4, 0x4a, 0x87, 0x60, 0x5e, 0x4a,
-0xd8, 0x5c, 0xe3, 0xd2, 0x3f, 0x44, 0xfc, 0xb5,
-0x46, 0xbe, 0xea, 0xa9, 0x13, 0x10, 0x3d, 0x2b,
-0x8a, 0x46, 0x9d, 0x68, 0x0d, 0xa6, 0x4a, 0x32,
-0xe5, 0x8d, 0xcc, 0x8e, 0x5e, 0x0b, 0xc1, 0xe5,
-0xaa, 0xd8, 0x0f, 0xc2, 0x74, 0x54, 0x35, 0xd0,
-0x1a, 0xc5, 0x65, 0x47, 0x0b, 0x89, 0x52, 0xf5,
-0xfe, 0xcc, 0x52, 0x97, 0xfe, 0x3c, 0xf9, 0xf3,
-0x5b, 0xf6, 0x97, 0x93, 0x37, 0x28, 0x82, 0x0c,
-0x05, 0x23, 0xb6, 0x49, 0x04, 0x41, 0xbd, 0x44,
-0xd4, 0xd8, 0x05, 0x74, 0x45, 0x44, 0x75, 0x36,
-0x51, 0xff, 0x6b, 0x0e, 0x1d, 0xf7, 0x09, 0x09,
-0x14, 0xc1, 0xb0, 0x4c, 0xd1, 0x3f, 0xdc, 0x6c,
-0x29, 0x31, 0xbc, 0x84, 0xcb, 0x20, 0xcd, 0xaf,
-0xb7, 0xa8, 0x10, 0x58, 0x76, 0x41, 0x8a, 0xa8,
-0x31, 0x12, 0xb6, 0x6a, 0x34, 0x4e, 0x43, 0xf4,
-0xb8, 0xff, 0x02, 0x0e, 0x93, 0x18, 0xd3, 0x56,
-0x2d, 0xc6, 0x3e, 0xe4, 0x77, 0x40, 0x5e, 0x7f,
-0x83, 0xf0, 0x57, 0x0f, 0xaf, 0xe1, 0xea, 0x0e,
-0x56, 0xe3, 0x3f, 0x34, 0x2d, 0x08, 0x25, 0x24,
-0x72, 0xf8, 0x1c, 0x2f, 0xcd, 0x6a, 0x1d, 0xc1,
-0x30, 0x5e, 0x22, 0x92, 0x8b, 0xa5, 0x09, 0x76,
-0x51, 0xd6, 0x0f, 0xa7, 0x6d, 0xcb, 0xab, 0xee,
-0x61, 0x7e, 0x6f, 0x67, 0xd1, 0x7c, 0x43, 0xdb,
-0x51, 0x56, 0x18, 0x7f, 0x48, 0x99, 0x5c, 0xa2,
-0xda, 0x17, 0xcf, 0x17, 0x46, 0xa4, 0x4f, 0xe1,
-0xd6, 0xd6, 0x8f, 0xfd, 0x0c, 0x14, 0x62, 0x8d,
-0x63, 0xc2, 0xc0, 0xe4, 0xba, 0x01, 0xc5, 0x6d,
-0xa4, 0x07, 0xab, 0x08, 0x46, 0xec, 0x82, 0x2b,
-0xff, 0x8b, 0xd5, 0x6c, 0x55, 0x49, 0x64, 0xfe,
-0x30, 0x37, 0x32, 0x42, 0xff, 0x50, 0x46, 0x1b,
-0x06, 0xab, 0x1c, 0xdd, 0x4b, 0xfc, 0x1a, 0xcb,
-0x76, 0xe5, 0xb7, 0xd1, 0x62, 0xce, 0xfc, 0xac,
-0x93, 0x0e, 0x36, 0x77, 0xf0, 0xd1, 0x3c, 0xfe,
-0xba, 0x6c, 0xc5, 0x46, 0xc3, 0xcf, 0xe2, 0x30,
-0x5d, 0x6e, 0x8b, 0xe2, 0x73, 0x14, 0x5b, 0xe8,
-0xe6, 0x59, 0xdc, 0xa9, 0x2f, 0x1b, 0x51, 0x1e,
-0xd8, 0xf3, 0x5f, 0x0c, 0x1c, 0x9d, 0xe8, 0xa8,
-0xff, 0x28, 0x0e, 0xdc, 0x71, 0x3d, 0xda, 0x5e,
-0x52, 0xa6, 0x90, 0x22, 0x7d, 0xdd, 0x70, 0xe0,
-0xa8, 0xc7, 0x15, 0x7f, 0x78, 0xb5, 0xaa, 0x69,
-0x68, 0xd5, 0xb7, 0x85, 0x4c, 0x4a, 0x13, 0x17,
-0x63, 0x41, 0x55, 0xf0, 0x02, 0xcb, 0xca, 0x2f,
-0x9b, 0xa3, 0xf0, 0x92, 0x29, 0xca, 0x04, 0x5c,
-0x80, 0xc5, 0xde, 0xda, 0x2f, 0x68, 0xaf, 0x27,
-0xfe, 0xd0, 0xf1, 0xf3, 0xfb, 0x6a, 0x64, 0x68,
-0xe2, 0x2d, 0x43, 0x38, 0x82, 0x85, 0xf8, 0xab,
-0x37, 0xc0, 0xa7, 0x8f, 0xe8, 0x97, 0xe3, 0xd1,
-0x6d, 0xf6, 0xba, 0xfa, 0x08, 0x55, 0x8b, 0x33,
-0xbc, 0x27, 0xf0, 0x25, 0x29, 0xd5, 0x95, 0x30,
-0xff, 0x00, 0xa2, 0xb3, 0x56, 0xb6, 0x69, 0x55,
-0xe2, 0x0c, 0xdf, 0x2f, 0x0a, 0xc9, 0x19, 0x38,
-0xb8, 0x7b, 0x94, 0xbf, 0x74, 0xe7, 0x7f, 0x05,
-0x07, 0x35, 0x3a, 0x04, 0xfb, 0xa0, 0x3f, 0xc8,
-0x65, 0xfd, 0x65, 0x7c, 0x8e, 0x96, 0x4a, 0xcc,
-0x31, 0xdf, 0x94, 0x3b, 0x75, 0x18, 0x36, 0x65,
-0xff, 0x11, 0x4a, 0x3a, 0xd8, 0x5c, 0x6b, 0xa3,
-0xba, 0xcb, 0x54, 0xdb, 0x95, 0xb5, 0xac, 0x33,
-0x1d, 0x5c, 0x88, 0x3d, 0xf6, 0xc7, 0x3c, 0xfe,
-0xda, 0x4f, 0xe1, 0x55, 0x24, 0x72, 0xd8, 0xa3,
-0x1b, 0xdf, 0xc4, 0x21, 0xf8, 0x78, 0x99, 0xac,
-0x56, 0x99, 0x00, 0x51, 0x4a, 0x00, 0x1d, 0x8f,
-0x55, 0x7a, 0xa2, 0x03, 0xdd, 0x2f, 0xc6, 0x1e,
-0x63, 0x6d, 0x56, 0x7a, 0x5d, 0x48, 0x4d, 0x94,
-0x9a, 0x9d, 0x2f, 0x1b, 0x91, 0x8e, 0x32, 0x37,
-0xfe, 0x7a, 0x7e, 0xf0, 0xde, 0x51, 0xed, 0xaf,
-0x11, 0x7f, 0xfd, 0x38, 0x51, 0xb1, 0x5a, 0xa6,
-0x23, 0xf1, 0x79, 0xc3, 0xda, 0x3c, 0x16, 0xe3,
-0x8f, 0xa6, 0x8c, 0xb4, 0xef, 0xeb, 0x3e, 0xd2,
-0xe5, 0x31, 0x88, 0x8e, 0xb9, 0x19, 0x1e, 0xcb,
-0x54, 0xa4, 0xd5, 0xb1, 0xc4, 0xff, 0xaf, 0x6f,
-0xc3, 0x9e, 0x8a, 0xa0, 0x7a, 0x4f, 0x41, 0xfc,
-0xe1, 0x8e, 0x88, 0x15, 0x20, 0x9d, 0x9c, 0x51,
-0x33, 0xf3, 0x75, 0xcd, 0x4e, 0xf2, 0x1a, 0x0e,
-0xe8, 0xf8, 0xda, 0xb4, 0xa5, 0x23, 0xa9, 0xd2,
-0x67, 0x93, 0x66, 0xbc, 0x57, 0x87, 0x51, 0x7f,
-0x44, 0x51, 0xe1, 0x38, 0x8f, 0x6e, 0xf2, 0xeb,
-0x4a, 0x69, 0xff, 0x89, 0x4c, 0x66, 0x18, 0x0d,
-0x17, 0xfe, 0xfa, 0x94, 0x90, 0x14, 0xa9, 0xcd,
-0x7f, 0x04, 0xb7, 0x4e, 0xcb, 0xe9, 0x6f, 0x6c,
-0x19, 0xd5, 0x26, 0x53, 0xd7, 0xa6, 0x35, 0xf1,
-0x92, 0xac, 0x32, 0xca, 0xff, 0x47, 0xd5, 0x77,
-0x85, 0xec, 0xa1, 0x80, 0x03, 0x81, 0x37, 0x28,
-0xf5, 0x52, 0xff, 0x6e, 0x7f, 0xed, 0xaf, 0xdc,
-0xfc, 0xd7, 0x45, 0x1e, 0xb5, 0x36, 0xef, 0xa5,
-0x5a, 0x12, 0x3c, 0x8a, 0x90, 0x6a, 0xe9, 0xc7,
-0xb6, 0x50, 0x12, 0x02, 0xb1, 0xe3, 0x52, 0x60,
-0xd6, 0xd0, 0xdd, 0x65, 0x46, 0xc9, 0x08, 0x8b,
-0xa5, 0x00, 0x0d, 0x77, 0xfe, 0x97, 0x47, 0x6c,
-0xeb, 0xb3, 0xe0, 0x28, 0x54, 0xe2, 0xb6, 0xd5,
-0x7c, 0x56, 0x7f, 0x06, 0xb7, 0x9b, 0xa5, 0x71,
-0xfa, 0x5d, 0xc4, 0x88, 0x59, 0x78, 0xe9, 0x19,
-0xd8, 0x6d, 0x55, 0x8f, 0xfa, 0xa8, 0x40, 0xc3,
-0x3c, 0xcb, 0xbf, 0xce, 0xd7, 0x48, 0x62, 0x53,
-0x96, 0x6a, 0xba, 0xf3, 0xbf, 0x5e, 0x22, 0xc4,
-0xda, 0x78, 0x37, 0x61, 0xab, 0x8a, 0x38, 0xe5,
-0x7f, 0x79, 0x37, 0xb4, 0xe3, 0x66, 0x37, 0xb3,
-0xac, 0xcc, 0xb3, 0x81, 0xcf, 0x0b, 0x2a, 0x2d,
-0x89, 0x2f, 0xc2, 0xf7, 0x7b, 0x2b, 0xb2, 0x26,
-0x45, 0xbc, 0x6c, 0x40, 0xb0, 0xd6, 0x71, 0x8f,
-0x30, 0x42, 0x59, 0x55, 0x2d, 0xc8, 0xff, 0x52,
-0x71, 0x39, 0xad, 0xa7, 0x43, 0x27, 0x6b, 0x97,
-0x21, 0xe6, 0xa9, 0x2d, 0x24, 0xe5, 0xf5, 0x24,
-0x53, 0xa4, 0xa3, 0xe8, 0xfb, 0xbf, 0xd5, 0x97,
-0x10, 0x21, 0x6e, 0x24, 0xf9, 0xa9, 0x67, 0xcc,
-0xea, 0xc1, 0x8e, 0x56, 0x11, 0xe8, 0x8b, 0x40,
-0xcc, 0xbb, 0xc9, 0xcd, 0x7f, 0x99, 0x0b, 0x7a,
-0xc2, 0x44, 0x7b, 0x5d, 0x85, 0x05, 0x7b, 0xfd,
-0x52, 0x08, 0xb1, 0x46, 0x30, 0x62, 0xe8, 0xef,
-0x34, 0xf0, 0x5b, 0xd3, 0xca, 0xd7, 0xf9, 0x9b,
-0x3c, 0xca, 0x67, 0xa5, 0x03, 0x24, 0x3b, 0x5f,
-0xc7, 0x49, 0xac, 0x1e, 0x1d, 0x9f, 0xbb, 0x32,
-0xe1, 0xa1, 0x02, 0xfe, 0xcb, 0xfb, 0xa2, 0x5d,
-0xff, 0x6b, 0x66, 0xcc, 0xc8, 0x57, 0x5b, 0x06,
-0x85, 0x1b, 0x63, 0xb0, 0x18, 0x6e, 0x35, 0x95,
-0xad, 0xb8, 0xcb, 0x35, 0x41, 0xa9, 0xa9, 0x0c,
-0xc2, 0x25, 0x0a, 0xbf, 0x35, 0x11, 0x14, 0x23,
-0xfe, 0x9a, 0x31, 0xa5, 0xfe, 0x17, 0xcf, 0x69,
-0xcb, 0xbb, 0x0a, 0x81, 0x09, 0xcf, 0xf3, 0x57,
-0x54, 0x6d, 0x79, 0xab, 0x32, 0xc7, 0x38, 0xa6,
-0x77, 0xb5, 0xcc, 0xda, 0xa6, 0xcc, 0x8d, 0x1f,
-0xdb, 0x1b, 0xfd, 0x9a, 0x7f, 0x6b, 0x39, 0x4d,
-0xb4, 0x46, 0xd3, 0xaf, 0x97, 0x17, 0xe6, 0x7f,
-0xad, 0x93, 0x68, 0x6b, 0x59, 0x0d, 0xc1, 0xae,
-0x77, 0x6d, 0x92, 0x22, 0x51, 0x25, 0x44, 0x36,
-0x70, 0xa9, 0x9c, 0x4b, 0x46, 0xab, 0xc0, 0x5f,
-0xc2, 0xd8, 0x4e, 0x81, 0x88, 0x71, 0xbc, 0xf9,
-0x69, 0x77, 0xfe, 0xd7, 0x91, 0xb8, 0x93, 0x23,
-0xa6, 0xd6, 0xb4, 0xa8, 0xa9, 0xe6, 0x77, 0xa5,
-0xfe, 0xc6, 0x36, 0xb6, 0xc7, 0xdc, 0x08, 0x73,
-0x49, 0x90, 0x6a, 0xa1, 0xf1, 0x73, 0xf5, 0xc7,
-0xad, 0xea, 0x68, 0x62, 0x21, 0x3c, 0xce, 0xce,
-0xb5, 0xae, 0xa1, 0xe7, 0x3c, 0xc5, 0x6a, 0x5a,
-0x5a, 0xb6, 0x25, 0x0a, 0xf5, 0x0f, 0x57, 0x0b,
-0x6e, 0x6b, 0xbf, 0x1e, 0xee, 0x97, 0xf5, 0xbf,
-0x24, 0x0a, 0xf0, 0x36, 0x6f, 0x85, 0x8a, 0xe5,
-0xa1, 0xbb, 0x37, 0xcd, 0xd8, 0xf5, 0x7c, 0xe8,
-0xc7, 0x64, 0xcc, 0xda, 0xb5, 0x21, 0x74, 0xef,
-0x72, 0xf5, 0xee, 0x4d, 0x7e, 0xd8, 0x0a, 0x54,
-0x7f, 0x79, 0x53, 0x61, 0xfe, 0x97, 0xee, 0x4f,
-0x50, 0xea, 0xdc, 0x9a, 0xd8, 0xcd, 0x61, 0xae,
-0xf4, 0x52, 0x60, 0x2d, 0x04, 0x12, 0xc9, 0x9d,
-0xe9, 0x81, 0x50, 0x1d, 0x81, 0x2c, 0x83, 0x8f,
-0x22, 0x34, 0x0b, 0x91, 0x41, 0xb0, 0x6b, 0x73,
-0x73, 0xb9, 0x81, 0x1e, 0x50, 0x8c, 0x87, 0x5d,
-0xf5, 0x97, 0x87, 0x54, 0x84, 0x42, 0x92, 0xf6,
-0xba, 0x62, 0xd4, 0x4a, 0xd9, 0xf9, 0x71, 0x29,
-0x4e, 0x78, 0x89, 0x53, 0x71, 0x2e, 0x21, 0x84,
-0x78, 0x6c, 0x7e, 0xc3, 0xf1, 0xe9, 0x64, 0x4c,
-0x84, 0x66, 0x0b, 0x20, 0xb6, 0x6b, 0x3c, 0xd4,
-0xd4, 0xbf, 0x25, 0x8f, 0xbf, 0xbc, 0x54, 0xff,
-0x4b, 0x20, 0xa9, 0x2a, 0x81, 0xad, 0xfc, 0x42,
-0x5b, 0x03, 0x62, 0x92, 0x11, 0x13, 0xd0, 0x6c,
-0x50, 0x59, 0xc8, 0x04, 0xda, 0x1a, 0x64, 0x68,
-0x78, 0x16, 0x98, 0x6b, 0x5b, 0x95, 0x19, 0xf0,
-0x2a, 0xdd, 0x3c, 0x45, 0x7f, 0xc3, 0x15, 0x64,
-0x48, 0xb0, 0x8b, 0x75, 0x48, 0x46, 0x2c, 0xed,
-0xdd, 0x24, 0x2f, 0x71, 0x6c, 0x89, 0x91, 0x10,
-0x3d, 0x6e, 0x54, 0x30, 0x1f, 0x42, 0xe8, 0x91,
-0x21, 0x34, 0xbb, 0xdf, 0x53, 0x92, 0xd3, 0xdf,
-0x50, 0xbd, 0xfd, 0x54, 0x3c, 0xe8, 0x5e, 0x59,
-0xdb, 0x8b, 0x87, 0xcd, 0xf9, 0x39, 0xfd, 0xf9,
-0x88, 0x2f, 0xaf, 0x7f, 0xa8, 0x4b, 0xc3, 0xe7,
-0x65, 0x5b, 0xbd, 0x55, 0x88, 0x9b, 0x8a, 0xbc,
-0x2c, 0xc9, 0xc2, 0xbd, 0x2d, 0x53, 0xf4, 0x0f,
-0x83, 0x71, 0x8a, 0x4d, 0xf5, 0x1e, 0x81, 0xb9,
-0x54, 0x4a, 0xbb, 0x5f, 0x04, 0x97, 0xde, 0xb2,
-0xa3, 0xb9, 0xba, 0x95, 0xde, 0x16, 0x6d, 0xbb,
-0x6f, 0x8e, 0x2c, 0xbb, 0x4c, 0x04, 0xe8, 0x53,
-0x04, 0xed, 0xb7, 0x33, 0xaf, 0xe0, 0x4f, 0x8b,
-0x0b, 0xf4, 0x0f, 0xcf, 0xcf, 0xc4, 0x4e, 0xd8,
-0xda, 0x59, 0x45, 0x2f, 0xb6, 0x4c, 0xf2, 0x12,
-0xfd, 0xf3, 0x34, 0xfe, 0xf6, 0xf7, 0xad, 0xae,
-0xf8, 0xad, 0x29, 0xcf, 0x5c, 0x38, 0x96, 0x09,
-0xae, 0xd3, 0x76, 0x54, 0xce, 0x65, 0x6f, 0xf0,
-0x68, 0xdc, 0x4f, 0x8e, 0x07, 0x3e, 0x67, 0x5d,
-0x78, 0xbb, 0xe2, 0xe6, 0xbf, 0x92, 0x2f, 0x4a,
-0x91, 0x8d, 0xf1, 0x9c, 0x5e, 0x8a, 0x64, 0xc4,
-0xde, 0x83, 0xf7, 0x0d, 0x6c, 0xf9, 0x81, 0x32,
-0x14, 0x17, 0x69, 0x7a, 0xdb, 0xba, 0x87, 0x52,
-0xe7, 0x2a, 0x28, 0x22, 0x51, 0xdb, 0x23, 0x33,
-0xcb, 0x0a, 0xf5, 0x37, 0x5a, 0x62, 0xe0, 0xf7,
-0x92, 0xa4, 0xbc, 0x27, 0x56, 0x16, 0xb6, 0xb3,
-0x32, 0x05, 0x23, 0xd6, 0x67, 0xa1, 0x51, 0x4c,
-0xb2, 0x1b, 0x56, 0x3c, 0xaa, 0xfb, 0xb1, 0x7b,
-0x71, 0x61, 0x8c, 0xcd, 0xf4, 0xb7, 0x29, 0x86,
-0x81, 0xd0, 0x4c, 0x47, 0xc3, 0x15, 0x7f, 0xf8,
-0x62, 0x73, 0x2d, 0x71, 0x5b, 0x68, 0xb4, 0xd4,
-0x12, 0xfe, 0x1a, 0x17, 0x6a, 0x1b, 0x5a, 0x96,
-0xd5, 0xcf, 0x20, 0x43, 0xcd, 0xb2, 0xbb, 0xe0,
-0x89, 0x65, 0x95, 0x09, 0xff, 0xc7, 0x94, 0xf6,
-0x75, 0x6f, 0xed, 0x8e, 0xc7, 0x47, 0xca, 0xee,
-0x84, 0x27, 0xe8, 0x53, 0x43, 0x53, 0xe2, 0x0f,
-0x55, 0x95, 0xf2, 0xbf, 0x32, 0x56, 0x0d, 0xb9,
-0x97, 0xa7, 0x0d, 0x51, 0x75, 0xb7, 0x8e, 0x05,
-0x75, 0x72, 0x3c, 0x8a, 0x0f, 0x24, 0xee, 0x37,
-0x93, 0x56, 0x7c, 0x50, 0xad, 0x2f, 0xaa, 0xb1,
-0x92, 0x3f, 0xae, 0x19, 0x6d, 0x39, 0xcc, 0xfe,
-0x02, 0x92, 0xa4, 0xa7, 0x57, 0xd5, 0x57, 0xc8,
-0x7f, 0xc5, 0xef, 0x59, 0x17, 0x9c, 0x85, 0xae,
-0x7e, 0x98, 0x16, 0xea, 0x7f, 0x77, 0x54, 0xf8,
-0x3e, 0xab, 0x6f, 0x80, 0x70, 0x56, 0x9d, 0x51,
-0x34, 0x0b, 0x1e, 0xf3, 0xc5, 0xe3, 0xc5, 0xad,
-0x6c, 0x26, 0x7c, 0x8f, 0x9e, 0x9c, 0xc5, 0x97,
-0x98, 0xee, 0x09, 0x19, 0xcc, 0x15, 0x7f, 0xb8,
-0x88, 0x37, 0x19, 0xe1, 0x7a, 0x05, 0x41, 0x56,
-0x42, 0xd2, 0x5e, 0x4c, 0xa8, 0x6d, 0xd4, 0x2b,
-0xa0, 0x6f, 0x40, 0xa3, 0xe4, 0x1e, 0xed, 0xbf,
-0xb2, 0x24, 0xc2, 0x2e, 0x74, 0xd5, 0x3e, 0xcb,
-0x10, 0x91, 0xc5, 0xfd, 0xeb, 0xb5, 0xbf, 0x81,
-0x5f, 0xb6, 0x35, 0x66, 0xfd, 0x6b, 0xb4, 0xc2,
-0xf8, 0x43, 0x49, 0x7b, 0x51, 0xf5, 0x79, 0xb7,
-0xc8, 0xc6, 0x10, 0x7c, 0x47, 0x1a, 0xab, 0xc5,
-0x71, 0x5f, 0x29, 0x55, 0x8f, 0x7a, 0x5f, 0x02,
-0xb1, 0xb4, 0xbc, 0x27, 0x5d, 0x50, 0xff, 0x2b,
-0xd1, 0x64, 0x04, 0x0e, 0x29, 0x35, 0xea, 0x24,
-0x8f, 0xa6, 0xc3, 0xc4, 0x6d, 0x7d, 0x22, 0x83,
-0xa0, 0xde, 0x31, 0x4f, 0x4b, 0xfd, 0x8d, 0x87,
-0xe0, 0x8d, 0x54, 0x8c, 0x6f, 0xa6, 0x88, 0xc4,
-0xd3, 0x78, 0x0f, 0x7e, 0xb1, 0x9a, 0x66, 0x52,
-0x75, 0xf3, 0x0f, 0x17, 0xe8, 0x1f, 0x66, 0xab,
-0xcd, 0x15, 0xeb, 0x7d, 0xb3, 0xf9, 0xf3, 0xba,
-0x90, 0xe5, 0x7f, 0x5d, 0xf6, 0xcf, 0x37, 0x83,
-0x7f, 0x4c, 0x27, 0x29, 0x62, 0xf3, 0x3c, 0x9b,
-0x69, 0xb4, 0xa7, 0x17, 0x87, 0xd5, 0xd6, 0xe6,
-0x99, 0x91, 0x8d, 0xb0, 0x33, 0xad, 0xae, 0x66,
-0x41, 0x73, 0xc3, 0xce, 0xf0, 0x60, 0xcb, 0xea,
-0x02, 0xfd, 0xc3, 0x75, 0xd5, 0xe4, 0xe9, 0x7d,
-0xd9, 0x7a, 0x1e, 0xe6, 0x6c, 0x54, 0x89, 0xf6,
-0x7a, 0xc6, 0x8e, 0x03, 0xb1, 0xc4, 0x73, 0x5a,
-0xd1, 0xe3, 0x78, 0x14, 0xc2, 0x9b, 0x71, 0x28,
-0x67, 0xc0, 0x33, 0x24, 0x5a, 0xf8, 0xcd, 0x04,
-0xee, 0x8c, 0x86, 0x18, 0x94, 0x3f, 0x73, 0xe3,
-0xaf, 0x9a, 0x25, 0xa4, 0x12, 0xe6, 0xdd, 0x6f,
-0x56, 0xe9, 0x2a, 0x1d, 0xf8, 0x0b, 0x3f, 0xf3,
-0xf6, 0x60, 0x3f, 0x4b, 0xb6, 0x1a, 0xa3, 0xda,
-0x2c, 0xc6, 0x38, 0xef, 0x9d, 0xff, 0x60, 0xa8,
-0x86, 0x4d, 0x87, 0xb4, 0x85, 0x3e, 0xa4, 0x97,
-0x19, 0xaa, 0x86, 0xf7, 0x74, 0x2c, 0x64, 0xf7,
-0x14, 0xe0, 0xaf, 0x5d, 0x01, 0xa9, 0x21, 0xf9,
-0xc2, 0x97, 0xa4, 0xbe, 0x16, 0x1d, 0x83, 0x1f,
-0x50, 0x3e, 0x84, 0x4e, 0xab, 0xeb, 0xbd, 0xc0,
-0xd3, 0x49, 0xf4, 0xbe, 0x66, 0x96, 0x5a, 0xfe,
-0x9f, 0x69, 0xb5, 0xec, 0x59, 0x88, 0x66, 0xd1,
-0xb1, 0x0f, 0xb3, 0xe7, 0x60, 0x96, 0xe5, 0xdf,
-0x77, 0xcb, 0xd7, 0x5d, 0xf8, 0xcb, 0x8a, 0xbd,
-0x16, 0xc8, 0x24, 0xf7, 0xe9, 0x97, 0x5b, 0x1a,
-0xcc, 0x55, 0x19, 0x11, 0x15, 0x13, 0xa3, 0xba,
-0xae, 0x1f, 0x71, 0x5b, 0x64, 0xe3, 0xa7, 0xf0,
-0xc1, 0xb2, 0x58, 0x73, 0xa0, 0x5d, 0x79, 0x9f,
-0xef, 0x80, 0xd8, 0x20, 0x1a, 0x62, 0x4c, 0x53,
-0xb5, 0x7b, 0x71, 0x6f, 0x72, 0xe3, 0x2f, 0x8f,
-0x9f, 0x34, 0xb8, 0x2e, 0xc3, 0xe2, 0x21, 0xff,
-0xe8, 0x74, 0x1b, 0x91, 0xb5, 0x7a, 0xea, 0xe1,
-0xb4, 0xba, 0xd8, 0xf2, 0x0f, 0x26, 0xdf, 0xa3,
-0xe8, 0xb5, 0x81, 0x95, 0x6b, 0x70, 0x19, 0x3c,
-0xb5, 0x79, 0xc1, 0x7d, 0xfe, 0xb3, 0xc9, 0x7a,
-0xf3, 0x77, 0xb0, 0x20, 0xbb, 0xd2, 0x48, 0xe4,
-0xf9, 0x2f, 0xcf, 0x11, 0xab, 0x26, 0x2e, 0xe0,
-0xd2, 0xe1, 0xfe, 0x1a, 0x23, 0x90, 0x29, 0x7b,
-0xd7, 0x10, 0xfc, 0xd7, 0xbe, 0xe0, 0x4f, 0x11,
-0x40, 0xc5, 0xac, 0x59, 0x3b, 0x12, 0xc3, 0xf1,
-0x8d, 0x33, 0x83, 0x5d, 0xa1, 0xa7, 0x95, 0xbf,
-0x87, 0x37, 0xf5, 0x60, 0x44, 0xdd, 0xc7, 0x42,
-0xac, 0x93, 0xe3, 0x46, 0xb6, 0xd3, 0xa5, 0x7f,
-0xe8, 0x3d, 0x92, 0xa8, 0x21, 0xf7, 0x9b, 0x6a,
-0xeb, 0xdc, 0x0f, 0xc5, 0x99, 0xe6, 0x61, 0x53,
-0x20, 0xb2, 0xa3, 0xb8, 0x85, 0xff, 0x10, 0x6a,
-0x7a, 0xd5, 0x8e, 0xb2, 0x01, 0xca, 0x5a, 0xe5,
-0xc5, 0x3b, 0x13, 0xe1, 0x74, 0x42, 0x35, 0x1e,
-0x2b, 0xd6, 0xd9, 0x5a, 0xf8, 0x21, 0x0f, 0x0e,
-0xa8, 0xbc, 0x28, 0x5d, 0x98, 0xff, 0xb5, 0x46,
-0xcc, 0x53, 0x71, 0xbc, 0x2f, 0xb4, 0x35, 0xd6,
-0x0e, 0xae, 0x88, 0xb0, 0x01, 0x96, 0x34, 0x43,
-0x96, 0xea, 0xfd, 0xaf, 0xfd, 0x8c, 0x1b, 0x69,
-0x56, 0x0c, 0xcc, 0xc4, 0x6d, 0x2b, 0xdd, 0x32,
-0x4f, 0x9f, 0xdf, 0xb2, 0xa9, 0xad, 0xc3, 0x48,
-0x75, 0x40, 0x69, 0x22, 0x8f, 0xbf, 0x0e, 0x47,
-0x62, 0x26, 0xba, 0xf1, 0xfb, 0xf8, 0x65, 0x68,
-0x6c, 0x0f, 0x93, 0xe8, 0xc7, 0x11, 0x33, 0x46,
-0x15, 0xdc, 0xb2, 0x89, 0xb7, 0xcc, 0x1a, 0x2b,
-0xd4, 0xbe, 0x34, 0x4b, 0xd4, 0x18, 0xe2, 0x7e,
-0x05, 0x1d, 0xe5, 0xd6, 0x2e, 0x28, 0x01, 0xe5,
-0x1b, 0x37, 0xbd, 0x15, 0xef, 0x1a, 0x44, 0xe7,
-0x2d, 0x9d, 0xc7, 0x5f, 0x57, 0xee, 0x6b, 0xa2,
-0x92, 0x94, 0x57, 0x44, 0xa1, 0xd8, 0x52, 0xa1,
-0xad, 0x11, 0x12, 0xf9, 0x5f, 0xfb, 0x55, 0x0a,
-0x4d, 0x2c, 0xed, 0x23, 0x4a, 0x4b, 0xff, 0x2e,
-0x2b, 0xb5, 0x14, 0xaa, 0x28, 0x85, 0xf7, 0x58,
-0xca, 0xa1, 0xf4, 0xe4, 0x7c, 0xbc, 0x27, 0xab,
-0xac, 0xb1, 0xf1, 0x97, 0xc7, 0xd6, 0x9f, 0x3f,
-0xa4, 0xdc, 0xaf, 0xbe, 0xc4, 0x63, 0xa3, 0x74,
-0xbe, 0xe1, 0xfd, 0x14, 0x44, 0xfe, 0x57, 0x18,
-0x70, 0x50, 0xda, 0x71, 0x93, 0x72, 0x14, 0x11,
-0xa7, 0xbb, 0x6a, 0x34, 0xdb, 0x73, 0xd0, 0x85,
-0xbf, 0xb0, 0x57, 0x29, 0xff, 0xab, 0x86, 0xf8,
-0xaf, 0x01, 0x41, 0x84, 0xe1, 0x46, 0x66, 0xa8,
-0x1d, 0x2c, 0x08, 0x3d, 0x89, 0xa0, 0xaa, 0xf6,
-0x50, 0xfd, 0x65, 0x1e, 0xec, 0x5b, 0xd1, 0xd3,
-0x9c, 0x27, 0xcb, 0xbc, 0xb6, 0x71, 0x5d, 0xfe,
-0x57, 0x91, 0x2b, 0x30, 0x3b, 0x13, 0x12, 0xf9,
-0x5f, 0x9c, 0x42, 0x13, 0xc9, 0x9f, 0x3f, 0x89,
-0x5b, 0x52, 0xe8, 0x98, 0xe4, 0x19, 0xbd, 0x6b,
-0xf3, 0x31, 0xdb, 0xda, 0xf5, 0xf9, 0x5f, 0x91,
-0x5c, 0xb6, 0x60, 0x33, 0x15, 0xf9, 0xaa, 0xf1,
-0xa8, 0xa2, 0x8c, 0xa6, 0x11, 0x04, 0xd2, 0x4b,
-0xe1, 0x47, 0xd8, 0x7c, 0x3b, 0xfe, 0xd0, 0x53,
-0x53, 0x10, 0x88, 0x98, 0xcf, 0xff, 0x9a, 0x1a,
-0x23, 0xbd, 0x34, 0x97, 0xff, 0xb5, 0x4f, 0x7d,
-0x0b, 0xf1, 0x97, 0x3f, 0x03, 0x23, 0xde, 0x8b,
-0xa3, 0x3f, 0xa0, 0xb3, 0x26, 0x51, 0x97, 0xc1,
-0x12, 0x04, 0xb1, 0x5d, 0xb2, 0xc1, 0xba, 0xa1,
-0xfe, 0xbc, 0x2d, 0x72, 0x78, 0x25, 0xd5, 0xd4,
-0x1a, 0x58, 0xa7, 0x3d, 0x8c, 0xde, 0xe0, 0xcf,
-0xd1, 0x6d, 0xa6, 0xee, 0x05, 0x3b, 0xed, 0xeb,
-0xa5, 0x29, 0x64, 0xd9, 0x8d, 0xf2, 0xbf, 0x84,
-0xd6, 0x87, 0x58, 0x60, 0x29, 0xed, 0xcb, 0x4e,
-0xb2, 0xb0, 0xc3, 0xd8, 0xcc, 0x86, 0xde, 0x92,
-0xcc, 0xd2, 0x7d, 0xde, 0x09, 0x2f, 0x89, 0x87,
-0x78, 0x72, 0x9f, 0xfa, 0x9f, 0x85, 0xfa, 0x1b,
-0x9d, 0x4e, 0x59, 0x07, 0x59, 0xe4, 0x0b, 0xd7,
-0x3b, 0xcd, 0xae, 0x86, 0x66, 0x39, 0xa5, 0xd3,
-0x7a, 0xdd, 0xf1, 0x87, 0x39, 0xc3, 0x55, 0x7f,
-0xf9, 0x49, 0x1e, 0xa6, 0x20, 0x79, 0xa7, 0x7e,
-0x0a, 0x14, 0xe4, 0x2f, 0x23, 0x94, 0xa6, 0xa8,
-0x33, 0xa7, 0xb4, 0x8a, 0xc7, 0xa5, 0xcc, 0x50,
-0x45, 0x9f, 0x1a, 0x73, 0xf3, 0x5f, 0xb6, 0xd4,
-0x1e, 0xf1, 0x5f, 0x42, 0x7f, 0xfe, 0x28, 0xaf,
-0x48, 0x6b, 0x2d, 0xec, 0x35, 0xfe, 0x52, 0xe2,
-0x36, 0x23, 0x84, 0x2d, 0x9e, 0x83, 0x89, 0xea,
-0x73, 0x60, 0xc7, 0xc5, 0x0d, 0xdf, 0xe2, 0x2a,
-0xd6, 0xec, 0xe0, 0xaf, 0x16, 0xbf, 0xf7, 0x62,
-0x87, 0xd4, 0x9f, 0x1f, 0xbc, 0x08, 0xb1, 0x6c,
-0x09, 0xe1, 0xaf, 0x0b, 0xb0, 0x50, 0x45, 0x3f,
-0xbc, 0x2f, 0x35, 0x8a, 0x4e, 0xf2, 0xd3, 0xa4,
-0x48, 0xff, 0xad, 0x4c, 0x43, 0x76, 0x5a, 0x64,
-0xc1, 0xc9, 0xe2, 0x6f, 0x41, 0xe3, 0x70, 0x20,
-0xf2, 0xf9, 0xcd, 0x7f, 0x7d, 0x11, 0x1a, 0xfb,
-0xff, 0x25, 0xf2, 0x79, 0x57, 0xfe, 0xd7, 0x84,
-0x4d, 0x72, 0xb5, 0x5e, 0x83, 0x06, 0xa9, 0x3f,
-0x2f, 0x92, 0x8f, 0x88, 0x20, 0xfe, 0x54, 0xbf,
-0x43, 0x0f, 0x64, 0xca, 0x29, 0x82, 0x34, 0x66,
-0xfd, 0x0b, 0xde, 0x33, 0xed, 0x1a, 0xfb, 0x2e,
-0x75, 0xef, 0xe4, 0x4d, 0xf8, 0xa9, 0xde, 0x5b,
-0x33, 0x37, 0xc8, 0xff, 0x0a, 0x0b, 0x98, 0x2c,
-0xd2, 0x06, 0x2f, 0x3a, 0x72, 0xb2, 0xf8, 0x92,
-0x6c, 0x2d, 0x95, 0x99, 0x77, 0x8f, 0xe0, 0x30,
-0x11, 0x23, 0xc6, 0x1e, 0xb1, 0xdc, 0x01, 0x06,
-0xd7, 0xe7, 0x7f, 0xd1, 0x46, 0xff, 0x0f, 0x56,
-0x07, 0x9d, 0xfb, 0xbd, 0x0b, 0x39, 0x46, 0x6c,
-0x8e, 0x55, 0x10, 0x76, 0x68, 0x1b, 0x9f, 0x75,
-0x8c, 0xe6, 0xeb, 0xf3, 0xbf, 0x6c, 0xc1, 0x7f,
-0xea, 0xc3, 0x17, 0x29, 0xbd, 0xae, 0x85, 0x3d,
-0x00, 0x7b, 0x78, 0x75, 0xdc, 0xb7, 0x3e, 0x81,
-0xbd, 0xda, 0x56, 0x9d, 0x3d, 0xb1, 0x3e, 0x88,
-0x46, 0x42, 0x88, 0xd5, 0xbf, 0xed, 0x24, 0x82,
-0x5d, 0x97, 0xff, 0x15, 0xf4, 0xe7, 0x06, 0x17,
-0x9e, 0x61, 0x15, 0x83, 0xda, 0xfa, 0xa2, 0xb3,
-0xb0, 0x81, 0xcd, 0xb1, 0x66, 0xd6, 0xb3, 0x57,
-0xd0, 0xa5, 0x71, 0x86, 0xdb, 0xeb, 0x88, 0x3c,
-0x4b, 0x6a, 0xac, 0x80, 0xff, 0x12, 0x29, 0x5d,
-0x21, 0x77, 0xd9, 0xaf, 0x06, 0x1e, 0xd8, 0x9b,
-0xf8, 0xef, 0xc6, 0xb3, 0x10, 0x3b, 0x4a, 0x15,
-0xc1, 0x42, 0x57, 0x79, 0x3e, 0x35, 0xcc, 0x31,
-0x6a, 0x88, 0x2c, 0xcb, 0xf3, 0x5f, 0xde, 0xeb,
-0xb5, 0x0d, 0x47, 0xe0, 0x3b, 0x8c, 0xc6, 0xcb,
-0xb8, 0x04, 0x8b, 0xec, 0x4b, 0xba, 0x4b, 0x7f,
-0xfe, 0x3f, 0xab, 0xbf, 0xac, 0xbb, 0x42, 0xa7,
-0xe4, 0x39, 0xbf, 0x1a, 0x46, 0xc7, 0x3e, 0xd9,
-0x2f, 0x44, 0xf3, 0x24, 0x22, 0x53, 0xf3, 0xc2,
-0x05, 0x05, 0x46, 0x9e, 0xff, 0xd2, 0x9d, 0x90,
-0x30, 0xaf, 0x4b, 0x64, 0xa3, 0xc1, 0x26, 0x32,
-0xbc, 0x85, 0x61, 0x87, 0xd2, 0xe8, 0x74, 0xb5,
-0x64, 0x6f, 0xa0, 0x3f, 0x4f, 0x62, 0xe3, 0x76,
-0xfd, 0xe5, 0x5a, 0x53, 0x1d, 0x64, 0x14, 0x44,
-0x57, 0x61, 0xfa, 0x52, 0x5e, 0xf9, 0x27, 0x96,
-0xbb, 0x14, 0x11, 0x73, 0xcf, 0xb9, 0x41, 0xfe,
-0x17, 0x1a, 0x7e, 0x51, 0x7f, 0x19, 0x9e, 0x6f,
-0xf8, 0x7b, 0x44, 0x5b, 0x89, 0xd7, 0x77, 0xfd,
-0x38, 0xb4, 0xf3, 0x8b, 0xbe, 0xb2, 0x84, 0xbc,
-0x74, 0xc3, 0xda, 0xc1, 0x39, 0xfe, 0xcb, 0xee,
-0xb1, 0x76, 0xd2, 0x60, 0xf7, 0xc6, 0x74, 0x59,
-0x88, 0x39, 0x1e, 0x23, 0xd8, 0x95, 0xe5, 0x63,
-0xc6, 0xed, 0x33, 0x6b, 0x12, 0x1e, 0x99, 0xad,
-0x53, 0x34, 0x35, 0x7f, 0x87, 0xfa, 0x39, 0xcf,
-0x7f, 0x79, 0xd1, 0x8d, 0xa7, 0xfc, 0x2f, 0x97,
-0xc8, 0xfc, 0xb8, 0xd1, 0x60, 0x4e, 0x4f, 0x29,
-0xfd, 0xea, 0x1b, 0xd8, 0x52, 0x22, 0xe8, 0xaa,
-0x69, 0x6e, 0x57, 0xdf, 0x1d, 0xf3, 0x96, 0xe7,
-0xbf, 0xae, 0x4c, 0xb9, 0x64, 0xe7, 0x91, 0xe9,
-0x68, 0xfc, 0xca, 0x41, 0xd0, 0xef, 0xcb, 0xb0,
-0xba, 0x1b, 0x3c, 0xc7, 0x85, 0xbf, 0x9c, 0xfa,
-0x5f, 0x3d, 0x9e, 0xb0, 0x87, 0x0c, 0x2f, 0xee,
-0x17, 0xbc, 0x84, 0xb3, 0x61, 0xef, 0x80, 0x40,
-0x64, 0xcd, 0x59, 0x47, 0xff, 0xf0, 0x7a, 0xb1,
-0xfa, 0x29, 0xf9, 0x5f, 0x2b, 0xa8, 0xa4, 0x32,
-0xa9, 0x6d, 0x2c, 0x75, 0xd4, 0x36, 0x7c, 0xfa,
-0x67, 0xfb, 0xbd, 0x6e, 0xd9, 0x79, 0xb3, 0xf8,
-0x46, 0xfd, 0xfc, 0xda, 0xf5, 0xfa, 0x1b, 0x2e,
-0x43, 0x00, 0xf0, 0xc4, 0x10, 0x3f, 0x64, 0x12,
-0xa2, 0x87, 0x21, 0xf3, 0x50, 0x45, 0xee, 0x9e,
-0x52, 0xf7, 0xcd, 0x77, 0x3b, 0xfc, 0xd7, 0x8c,
-0x1b, 0xe9, 0xc6, 0x1f, 0x4a, 0xc5, 0x5a, 0x7d,
-0x3b, 0x94, 0x77, 0x61, 0xbc, 0x8d, 0x92, 0xbc,
-0xca, 0x87, 0x3c, 0xef, 0xc7, 0xef, 0xbf, 0xae,
-0x7f, 0x6a, 0xdc, 0xfc, 0x17, 0xdc, 0x50, 0x7f,
-0x1e, 0xec, 0x11, 0x3c, 0x46, 0xf8, 0x2b, 0x55,
-0xfe, 0x9e, 0x4b, 0xff, 0x70, 0x8a, 0x71, 0x5d,
-0xfe, 0xd7, 0x74, 0x47, 0x7f, 0x5e, 0xbc, 0x24,
-0x51, 0x1d, 0x81, 0xd8, 0xbd, 0xe8, 0x0a, 0xd5,
-0xe9, 0x42, 0xff, 0x90, 0xaa, 0x42, 0xf8, 0x6f,
-0x34, 0x4f, 0x1d, 0xfe, 0xcb, 0x1b, 0x22, 0x09,
-0x4a, 0x3b, 0xa5, 0x8b, 0xd5, 0xf0, 0x95, 0x32,
-0xc8, 0x70, 0x21, 0xef, 0x20, 0x44, 0x46, 0x8c,
-0x98, 0x6a, 0x47, 0x24, 0x8a, 0xfc, 0x2f, 0x6f,
-0x81, 0x58, 0xfd, 0x8d, 0xf8, 0x2f, 0x26, 0xb3,
-0x95, 0x73, 0xf5, 0xbf, 0x8a, 0x65, 0x65, 0x8d,
-0x1a, 0x32, 0x36, 0xe7, 0x96, 0x38, 0x6f, 0x2e,
-0x8f, 0xd5, 0xfe, 0xd4, 0x71, 0x67, 0xff, 0x72,
-0xf2, 0xbf, 0x64, 0xfd, 0x65, 0xbb, 0xfe, 0x17,
-0xaf, 0xb0, 0xd4, 0x31, 0xf6, 0x15, 0xd8, 0xc2,
-0xe7, 0x59, 0x2d, 0xf5, 0xec, 0xac, 0xe7, 0x20,
-0x7c, 0xe3, 0x5d, 0xcf, 0x0d, 0x16, 0x6a, 0x87,
-0xff, 0x0a, 0x39, 0xfc, 0xd7, 0xb7, 0x99, 0x8c,
-0x2d, 0x14, 0xf5, 0xbf, 0xae, 0x65, 0x0d, 0x32,
-0xbe, 0x08, 0xbf, 0xe4, 0x4d, 0xc3, 0x68, 0xfc,
-0x08, 0xfe, 0x5f, 0x34, 0xa6, 0xad, 0x2f, 0xcc,
-0xff, 0x5a, 0x9c, 0xbd, 0x11, 0xff, 0xa5, 0x88,
-0xc0, 0xb6, 0x9c, 0x68, 0x43, 0xaf, 0x48, 0x50,
-0x9a, 0x90, 0x82, 0x5d, 0xc2, 0xa5, 0x19, 0x70,
-0x74, 0x21, 0xdc, 0x81, 0x88, 0xd3, 0x5d, 0xf1,
-0x87, 0xd7, 0x52, 0x8b, 0x88, 0xff, 0x8a, 0xf9,
-0xaf, 0xf1, 0xc0, 0x25, 0x5b, 0x7f, 0xbe, 0xfb,
-0xdd, 0xc0, 0x98, 0xf6, 0xb6, 0xf9, 0x1c, 0x6f,
-0xba, 0x50, 0x42, 0xb2, 0x1b, 0xa7, 0xf9, 0x77,
-0x2f, 0xf9, 0xc7, 0x2a, 0x6d, 0x67, 0xd2, 0x95,
-0xa8, 0xe2, 0x8a, 0x3f, 0x7c, 0x29, 0x4d, 0xbb,
-0x55, 0x33, 0x76, 0x94, 0x5e, 0x92, 0xb5, 0xf3,
-0xbf, 0xe6, 0x89, 0x6c, 0x2f, 0xeb, 0x19, 0x5e,
-0x6d, 0x95, 0xac, 0x67, 0x5f, 0x36, 0x37, 0x78,
-0xbe, 0x31, 0x54, 0xb2, 0x2e, 0x48, 0xa5, 0xd3,
-0xee, 0x2c, 0xd8, 0xc8, 0xdc, 0xfc, 0x97, 0x4e,
-0xaa, 0x26, 0x86, 0x4b, 0xf0, 0xbf, 0x1b, 0x2a,
-0xde, 0xc0, 0xb1, 0x68, 0x54, 0x45, 0x41, 0xe7,
-0x75, 0xdb, 0x26, 0xf5, 0x67, 0x70, 0x43, 0xec,
-0x14, 0x1f, 0xf7, 0x56, 0xdb, 0x81, 0x88, 0xf2,
-0x66, 0x77, 0xfe, 0x97, 0x8c, 0xdb, 0xf1, 0xeb,
-0x79, 0x9f, 0x64, 0x07, 0xb6, 0x34, 0xb0, 0x12,
-0xd8, 0xcd, 0xc3, 0x97, 0x10, 0x91, 0x7d, 0x11,
-0x92, 0x7a, 0xee, 0x95, 0x08, 0xb9, 0xc6, 0x3d,
-0x93, 0xd7, 0x3f, 0xa4, 0xd2, 0x69, 0x75, 0x94,
-0xff, 0x15, 0x46, 0x5f, 0xab, 0xc9, 0xc9, 0xed,
-0x8a, 0x5a, 0xab, 0x1a, 0x5f, 0xae, 0x1d, 0x78,
-0xee, 0x9e, 0x26, 0x4b, 0xed, 0x59, 0xfa, 0x71,
-0xf0, 0x65, 0xab, 0xc9, 0x2a, 0x96, 0x11, 0x2f,
-0x35, 0x4e, 0x3f, 0x93, 0xc1, 0x5c, 0xf1, 0x87,
-0x85, 0x69, 0x5f, 0xb6, 0x91, 0x95, 0x3a, 0x6f,
-0xac, 0x71, 0xa0, 0x56, 0x8e, 0xd7, 0x23, 0x52,
-0xeb, 0xde, 0x1e, 0x4a, 0x57, 0x74, 0xd6, 0x14,
-0xfd, 0x0d, 0x77, 0x9c, 0xd5, 0xef, 0xc1, 0x29,
-0xfb, 0x85, 0x2d, 0x61, 0x81, 0xc8, 0xd4, 0x05,
-0xb6, 0x92, 0xb3, 0x14, 0x25, 0xa0, 0x9b, 0x6f,
-0xb5, 0x66, 0x8f, 0x2a, 0x53, 0xf4, 0x37, 0x56,
-0x4c, 0xf1, 0xfd, 0x82, 0x79, 0xfd, 0x0d, 0xd5,
-0xc9, 0xf6, 0x52, 0xa4, 0x10, 0x47, 0xcc, 0xed,
-0x1f, 0x2a, 0xf7, 0x3a, 0xf8, 0x6b, 0xad, 0x90,
-0xda, 0xbb, 0x5e, 0x7f, 0x5e, 0xcb, 0x14, 0xad,
-0x75, 0xa4, 0x39, 0xe4, 0x73, 0x92, 0xf9, 0x7b,
-0xca, 0x64, 0x20, 0x62, 0x67, 0x26, 0xa7, 0xbf,
-0x01, 0x7e, 0x92, 0xe4, 0x25, 0x17, 0xe2, 0x55,
-0xb7, 0xba, 0x57, 0xba, 0x0f, 0x1f, 0xe8, 0x37,
-0xbb, 0x2b, 0x29, 0x40, 0x2e, 0x41, 0xd9, 0x79,
-0xdc, 0xf2, 0xd8, 0xf1, 0x87, 0x52, 0xaf, 0x72,
-0x81, 0x1c, 0xaf, 0x66, 0x1b, 0x7f, 0xa9, 0xb6,
-0xc8, 0xc6, 0xff, 0x23, 0x44, 0xc2, 0xed, 0x00,
-0xa7, 0x0f, 0xd5, 0xe8, 0x40, 0x20, 0xb3, 0x60,
-0xad, 0x70, 0xf9, 0x4a, 0xbb, 0xf0, 0xaf, 0x4f,
-0xfc, 0xe5, 0xed, 0xb6, 0x34, 0xbd, 0xe7, 0xfe,
-0x5e, 0x51, 0x14, 0xe0, 0x3b, 0x32, 0xb1, 0xc8,
-0xad, 0xbf, 0x51, 0xdf, 0x24, 0x8b, 0x2c, 0x5f,
-0x73, 0xf4, 0x37, 0x9c, 0xfa, 0x5f, 0x6d, 0xd7,
-0xcc, 0xc5, 0x14, 0x90, 0x76, 0x16, 0x72, 0xd2,
-0xf4, 0xd7, 0xcc, 0xa6, 0x01, 0xb7, 0x3f, 0xef,
-0xe2, 0xbf, 0xae, 0x7a, 0x17, 0x98, 0xe2, 0x18,
-0xea, 0xac, 0x37, 0x0a, 0xa7, 0xc7, 0x96, 0x52,
-0x46, 0x58, 0x37, 0xf8, 0x2d, 0x44, 0x7f, 0x38,
-0x89, 0xa0, 0x84, 0xca, 0x3a, 0x1c, 0x21, 0xd8,
-0x35, 0xb8, 0x94, 0x18, 0xcc, 0x68, 0xf6, 0x56,
-0x2a, 0x04, 0x36, 0x01, 0x77, 0x99, 0x7e, 0x2b,
-0xaf, 0x3f, 0xff, 0xb1, 0x88, 0xbb, 0x50, 0x7b,
-0xd8, 0xfd, 0xd0, 0x41, 0x21, 0xd6, 0x88, 0xad,
-0xf4, 0x7a, 0x08, 0x76, 0x20, 0xbc, 0x9d, 0x4b,
-0xbd, 0x6a, 0xa8, 0x8e, 0xec, 0xa1, 0xb6, 0x43,
-0x30, 0x98, 0xbb, 0x64, 0xb0, 0xe2, 0x21, 0x1e,
-0x3c, 0x87, 0x18, 0x2d, 0xa7, 0x3f, 0x4f, 0xc9,
-0x74, 0x86, 0x19, 0xa2, 0xb0, 0xc3, 0x6d, 0xe2,
-0x9d, 0x6f, 0x16, 0xf5, 0xa4, 0x9a, 0x71, 0xdb,
-0x52, 0xa9, 0xe7, 0x41, 0x4c, 0x87, 0x27, 0x65,
-0x8c, 0xbd, 0x1f, 0x12, 0x76, 0xce, 0xec, 0x8c,
-0xfd, 0xac, 0x8a, 0xf2, 0x97, 0x5d, 0xf8, 0x2b,
-0xc3, 0xd1, 0xc9, 0xe1, 0xa4, 0x2f, 0xc1, 0xe7,
-0x67, 0x85, 0x5a, 0x4b, 0x8f, 0x3e, 0xbf, 0x5d,
-0x6d, 0x67, 0x06, 0x09, 0x69, 0x82, 0xcf, 0x81,
-0x5d, 0x5a, 0xcf, 0xb3, 0xfe, 0x99, 0xf9, 0xdc,
-0x40, 0xfd, 0x27, 0x99, 0x50, 0x07, 0x73, 0xe9,
-0x1f, 0x5e, 0xa6, 0x63, 0x9f, 0x84, 0xf2, 0x1f,
-0xf0, 0x96, 0xd5, 0x10, 0x95, 0x07, 0x4a, 0xd0,
-0x60, 0xf8, 0x7f, 0x5a, 0x4e, 0x1e, 0x75, 0x63,
-0x56, 0x04, 0xfe, 0x09, 0x05, 0xf8, 0x9e, 0x72,
-0xa2, 0x2d, 0xa2, 0x32, 0x7f, 0xe7, 0x32, 0xaf,
-0x8b, 0xfb, 0x3b, 0x92, 0xbf, 0xca, 0xe1, 0x2f,
-0x15, 0x21, 0x70, 0x15, 0x4e, 0xa2, 0xbb, 0x5b,
-0x2f, 0xc2, 0x22, 0xc9, 0x7f, 0x5d, 0xe5, 0x0b,
-0xb3, 0xb5, 0x6b, 0x10, 0x7d, 0x5d, 0x53, 0x9b,
-0x86, 0x4a, 0x72, 0xa3, 0x13, 0x51, 0x26, 0x0d,
-0x1c, 0x2f, 0x4b, 0x68, 0x24, 0x7e, 0xca, 0x6f,
-0x47, 0x9f, 0x1f, 0xec, 0xfa, 0x5f, 0xad, 0xfa,
-0x3e, 0xf5, 0xb2, 0x1a, 0x6d, 0x29, 0x49, 0x2b,
-0x15, 0x14, 0x64, 0x98, 0x90, 0x09, 0x9b, 0x66,
-0x70, 0x89, 0x7f, 0xfb, 0x93, 0xa1, 0x76, 0x4d,
-0x26, 0x63, 0x8a, 0xb5, 0xb7, 0x7f, 0xcb, 0x01,
-0x65, 0x1f, 0x3b, 0x6e, 0x90, 0x46, 0xc7, 0x5f,
-0x8d, 0xe8, 0x97, 0xa1, 0xab, 0xd5, 0xbf, 0x5d,
-0x79, 0x3d, 0x8f, 0xbf, 0x7a, 0xe2, 0xc1, 0xf5,
-0xb8, 0x37, 0x19, 0x9e, 0x4e, 0x4f, 0x30, 0xa5,
-0x39, 0x40, 0xac, 0x24, 0xc1, 0x2a, 0x49, 0x96,
-0x44, 0x1e, 0x9d, 0x09, 0x4c, 0xfd, 0x63, 0xd6,
-0x64, 0xe4, 0xfb, 0xc7, 0x08, 0xbe, 0xa0, 0x7e,
-0x2f, 0xe1, 0xc2, 0x5f, 0x54, 0xb2, 0x61, 0x1e,
-0x30, 0x74, 0x50, 0x70, 0x6d, 0x13, 0x40, 0xec,
-0x48, 0xca, 0x00, 0xb5, 0xd1, 0xe7, 0x59, 0x82,
-0xc3, 0x04, 0x8e, 0x6c, 0xd4, 0xf0, 0x2d, 0x3a,
-0x0b, 0xc0, 0x46, 0x27, 0xc7, 0x39, 0xd5, 0x61,
-0xac, 0x53, 0xbd, 0x0e, 0xfe, 0xea, 0x21, 0xfe,
-0x4b, 0xd0, 0x31, 0xac, 0xb4, 0xa3, 0x9d, 0xdf,
-0x1b, 0x92, 0xb2, 0x87, 0xa9, 0x39, 0x46, 0x71,
-0x88, 0x7d, 0x56, 0xfd, 0x7e, 0x5b, 0xf5, 0xea,
-0x62, 0x47, 0xa0, 0x4f, 0xbb, 0x87, 0xfd, 0xc8,
-0x7a, 0xd4, 0xd1, 0xe8, 0xd8, 0x9f, 0xda, 0x59,
-0xa5, 0xb6, 0xe0, 0x17, 0x93, 0xf8, 0x4b, 0xf5,
-0xc3, 0x79, 0x33, 0xd2, 0x52, 0x72, 0xb3, 0x4f,
-0xe1, 0xdc, 0x8c, 0xac, 0x91, 0xfa, 0x1b, 0xa6,
-0x41, 0x69, 0x5f, 0x3e, 0xf3, 0xd7, 0xd0, 0xd8,
-0x5e, 0x1a, 0x51, 0x36, 0xc3, 0xc5, 0x74, 0x63,
-0x36, 0x70, 0x93, 0xb6, 0x99, 0x1f, 0x37, 0x22,
-0xd9, 0xe9, 0x54, 0x9a, 0xf9, 0xb5, 0x74, 0x66,
-0x99, 0x5f, 0x2f, 0x77, 0xe1, 0xaf, 0xa3, 0xf0,
-0x92, 0x59, 0xfb, 0xab, 0x72, 0xa2, 0x8c, 0x63,
-0x5e, 0x67, 0xee, 0xe0, 0x58, 0xb0, 0x51, 0xf8,
-0x84, 0x64, 0x37, 0x32, 0x0a, 0x62, 0xea, 0x9b,
-0x70, 0xea, 0x59, 0xca, 0xc3, 0x69, 0x67, 0xad,
-0xf3, 0x1e, 0xf1, 0x2c, 0xf6, 0xd6, 0x0e, 0x16,
-0xe6, 0x7f, 0x51, 0xe5, 0xeb, 0xf2, 0x1a, 0x2a,
-0x7b, 0x6a, 0x88, 0x7a, 0x01, 0xc3, 0xf0, 0x13,
-0xf0, 0x67, 0x64, 0x22, 0x18, 0xcf, 0xa5, 0x7d,
-0xa1, 0x97, 0x32, 0x42, 0x19, 0xf1, 0xf6, 0x02,
-0x4b, 0x07, 0xd1, 0xdc, 0xc1, 0x5f, 0x03, 0xb8,
-0x7f, 0x1d, 0x80, 0x34, 0x84, 0x22, 0x6c, 0x16,
-0xba, 0xd2, 0xb5, 0x20, 0xf6, 0xf7, 0x3a, 0xa8,
-0x34, 0x7d, 0x71, 0x96, 0x0b, 0x32, 0xb4, 0x77,
-0x99, 0xd6, 0xe0, 0x59, 0xfe, 0xa8, 0x03, 0xcd,
-0xba, 0x61, 0x1e, 0xa8, 0x71, 0x27, 0xfe, 0x90,
-0x23, 0xfe, 0xca, 0xd8, 0xfd, 0xec, 0x69, 0x47,
-0xb4, 0x45, 0x49, 0x5e, 0xfa, 0x1d, 0xd8, 0x99,
-0x2d, 0x33, 0x83, 0x37, 0x53, 0xd4, 0xfd, 0xae,
-0x16, 0x12, 0xfc, 0x17, 0x68, 0xeb, 0x1e, 0xec,
-0xde, 0x9f, 0x38, 0xfd, 0x7c, 0x10, 0x8c, 0xb8,
-0x7a, 0x8f, 0x1b, 0x7f, 0x65, 0x4c, 0x1c, 0xc1,
-0x3b, 0x8b, 0x02, 0x4b, 0x38, 0x0f, 0xcf, 0x14,
-0xfc, 0xd7, 0x11, 0xee, 0xb3, 0x36, 0x15, 0x33,
-0x85, 0x86, 0x7b, 0x70, 0x7e, 0x6e, 0xb7, 0x2a,
-0x41, 0x4f, 0x26, 0x97, 0xdb, 0x7e, 0x04, 0xe7,
-0xf6, 0xcc, 0x98, 0x1b, 0x7f, 0x5d, 0xd5, 0x17,
-0x64, 0xc2, 0x59, 0xa5, 0x9e, 0x9d, 0xb2, 0x9a,
-0x52, 0x52, 0xff, 0x30, 0xbb, 0x20, 0xe5, 0x1d,
-0x56, 0xee, 0x34, 0x2e, 0x43, 0x53, 0x26, 0x2c,
-0x85, 0xe8, 0x45, 0x8e, 0xd8, 0x30, 0x7c, 0xec,
-0x04, 0x72, 0x5c, 0x35, 0x16, 0xf0, 0xf0, 0x48,
-0x61, 0xfc, 0x61, 0x63, 0x91, 0x0c, 0x32, 0x8c,
-0x48, 0x9f, 0x4d, 0xa5, 0x74, 0x7e, 0x32, 0x42,
-0x63, 0x42, 0x85, 0xcf, 0xf1, 0xe2, 0x12, 0xa2,
-0xd2, 0x90, 0xe3, 0xd7, 0xb5, 0xc4, 0x8c, 0x40,
-0xdb, 0x94, 0xf8, 0xc3, 0x75, 0x61, 0x5d, 0xa6,
-0x11, 0xad, 0x93, 0xb2, 0xf3, 0xa9, 0x68, 0x73,
-0x09, 0x45, 0x1b, 0x8e, 0xf3, 0xc3, 0x77, 0xe7,
-0x65, 0xe2, 0x74, 0xa5, 0x68, 0xd9, 0xb1, 0x9c,
-0xd4, 0x1e, 0x8f, 0xae, 0xc3, 0x16, 0x37, 0xff,
-0x65, 0x52, 0x24, 0xa1, 0x0f, 0x1d, 0x69, 0x4f,
-0xcd, 0x3a, 0xc2, 0x4d, 0x2a, 0x09, 0x29, 0xf8,
-0x66, 0xb3, 0xb9, 0x70, 0x8e, 0x3f, 0x9b, 0xc3,
-0x5f, 0x6b, 0xb5, 0xa7, 0xa8, 0x5c, 0x72, 0xab,
-0xa3, 0xb1, 0x30, 0x18, 0x5c, 0x83, 0x2b, 0xa4,
-0x3b, 0xff, 0x2b, 0x2e, 0x38, 0x32, 0x01, 0xc4,
-0x6c, 0x41, 0x7b, 0x35, 0x68, 0x16, 0x6f, 0x83,
-0xaa, 0xd4, 0x21, 0xe3, 0x59, 0x6b, 0x53, 0x4e,
-0x91, 0x5e, 0x24, 0x94, 0xa9, 0xf3, 0xe5, 0x73,
-0x8e, 0x50, 0xf4, 0xda, 0xb6, 0x82, 0xfc, 0x2f,
-0x91, 0xf6, 0xc5, 0x04, 0x10, 0xa3, 0xb2, 0xcb,
-0x54, 0x7f, 0x39, 0x8d, 0x2d, 0xc1, 0x22, 0xd8,
-0xa9, 0xef, 0xb5, 0xf2, 0x71, 0x71, 0x65, 0x8f,
-0x79, 0x79, 0x5b, 0x44, 0x6a, 0x47, 0xe8, 0x47,
-0x42, 0xc6, 0x72, 0xe5, 0xe6, 0x84, 0x9b, 0xff,
-0x12, 0x69, 0x5f, 0x49, 0x23, 0x3d, 0x16, 0x8a,
-0xdd, 0x2c, 0x02, 0xc9, 0x46, 0xb1, 0xa5, 0x84,
-0x5a, 0x2e, 0x9b, 0x0d, 0xbe, 0x52, 0x57, 0x3f,
-0xe3, 0x42, 0x6c, 0x3a, 0xb5, 0x00, 0x8c, 0xa8,
-0x1a, 0x48, 0x68, 0xee, 0xfc, 0xaf, 0x8a, 0x97,
-0x88, 0xff, 0x12, 0x31, 0x81, 0x2d, 0x1e, 0x21,
-0xa0, 0x21, 0x12, 0xc1, 0xe6, 0x5d, 0x82, 0xf7,
-0x8d, 0x97, 0x72, 0x4a, 0x11, 0xcb, 0x03, 0x83,
-0x95, 0x43, 0xd9, 0x2b, 0xb7, 0xdb, 0x02, 0xe9,
-0x57, 0x3c, 0x22, 0xdb, 0xab, 0x00, 0x7f, 0xdd,
-0x4e, 0xb5, 0x83, 0xab, 0x1c, 0x49, 0x8d, 0x21,
-0x91, 0xed, 0x55, 0x2a, 0x9f, 0xbc, 0xc0, 0x89,
-0x94, 0x6b, 0x72, 0x88, 0xb0, 0x9c, 0x58, 0x87,
-0x48, 0x0d, 0x73, 0xd7, 0xff, 0xf2, 0xee, 0x82,
-0x90, 0x8c, 0x85, 0xa8, 0x81, 0x6a, 0x2a, 0xbb,
-0x2c, 0x64, 0xe7, 0x25, 0xc8, 0xda, 0x25, 0xcb,
-0x49, 0x93, 0x62, 0xef, 0x0f, 0xe9, 0x9e, 0x44,
-0x81, 0x34, 0xbd, 0x5b, 0x7f, 0x5e, 0x56, 0xf2,
-0xc2, 0x7e, 0xa6, 0x3a, 0xd7, 0x0e, 0xda, 0xaa,
-0xa2, 0x63, 0xc3, 0x57, 0xc4, 0x16, 0x99, 0x87,
-0x5d, 0xf5, 0x22, 0xec, 0x30, 0x07, 0xc4, 0xa6,
-0xd6, 0xff, 0xc2, 0x75, 0x75, 0xb9, 0x18, 0xf7,
-0x8d, 0xaa, 0x8d, 0xdf, 0xf7, 0x9b, 0x73, 0x4d,
-0xdf, 0x0e, 0x86, 0xb0, 0x0b, 0x82, 0x08, 0xc4,
-0x98, 0x8d, 0xd1, 0xb6, 0xf9, 0xbc, 0xb0, 0xd1,
-0x90, 0x92, 0x98, 0x70, 0xa8, 0x22, 0xe1, 0xae,
-0xff, 0x75, 0x13, 0x49, 0xc1, 0x77, 0xb5, 0x86,
-0x7f, 0x44, 0xb1, 0x10, 0x3c, 0xd6, 0x6c, 0x47,
-0x1b, 0xbe, 0x70, 0x5f, 0xe9, 0xd3, 0xc9, 0x77,
-0x05, 0x3f, 0x58, 0x22, 0x15, 0x23, 0xb1, 0x7b,
-0x9f, 0x2e, 0xaf, 0xf2, 0xe0, 0x3d, 0x4e, 0x8f,
-0x45, 0x5b, 0xf2, 0xfc, 0xd7, 0x1a, 0x3b, 0xff,
-0xab, 0xf6, 0x07, 0x54, 0x7f, 0xd9, 0x68, 0x5c,
-0x67, 0x63, 0xab, 0xfa, 0x96, 0x12, 0xc2, 0xb0,
-0x85, 0x68, 0x4b, 0xa7, 0xba, 0x78, 0xdc, 0x69,
-0x69, 0x6f, 0x6c, 0x9e, 0xa2, 0x3f, 0xaf, 0x46,
-0x20, 0x4c, 0xfc, 0xd7, 0xb0, 0x89, 0xb0, 0xdd,
-0xd6, 0x3f, 0xd4, 0xfd, 0x8f, 0x49, 0x91, 0xc3,
-0x22, 0x67, 0x9e, 0xaa, 0xa5, 0x7c, 0xfa, 0x3b,
-0x42, 0xa3, 0x83, 0xde, 0x31, 0xef, 0x98, 0xda,
-0x05, 0x2b, 0xb9, 0x5b, 0xff, 0xf0, 0xc5, 0x78,
-0x25, 0x82, 0xac, 0xf2, 0x35, 0x6c, 0x13, 0xd4,
-0xee, 0x2a, 0x15, 0x22, 0x1b, 0xd9, 0x20, 0x0f,
-0x65, 0x59, 0x83, 0xfe, 0x04, 0x9f, 0xb7, 0xd5,
-0x4e, 0xfb, 0xaa, 0xcd, 0xa8, 0x54, 0x76, 0xfd,
-0x09, 0x5b, 0x11, 0xd1, 0xfb, 0xc2, 0xc0, 0xa2,
-0x6d, 0xea, 0x50, 0xc2, 0xcd, 0x7f, 0x59, 0xe9,
-0x5e, 0x95, 0xd4, 0x95, 0x77, 0x43, 0x38, 0x12,
-0x92, 0xce, 0x9b, 0x61, 0xa9, 0x2a, 0xf3, 0x44,
-0x36, 0xa6, 0x42, 0xf1, 0x8d, 0xf6, 0x3a, 0x96,
-0xd5, 0xe8, 0xfb, 0x25, 0xa9, 0xec, 0xb2, 0x68,
-0x31, 0x43, 0xe7, 0x5b, 0x1a, 0x13, 0x79, 0xfe,
-0xcb, 0xd3, 0x0d, 0xbb, 0xa9, 0xfc, 0xca, 0x97,
-0xe1, 0x19, 0xf2, 0x52, 0xd6, 0x89, 0xe0, 0xb7,
-0x8a, 0x01, 0x75, 0x16, 0x2b, 0x33, 0x1e, 0x85,
-0x50, 0x2e, 0x2d, 0x97, 0x2a, 0x82, 0xf5, 0xfb,
-0x36, 0x74, 0xdc, 0x6b, 0x7d, 0x4e, 0xb6, 0xec,
-0xa3, 0xcc, 0x32, 0x17, 0xff, 0x75, 0x90, 0xdf,
-0x9e, 0xf6, 0xaf, 0x57, 0x4a, 0xe1, 0xf7, 0x7c,
-0xb1, 0xe1, 0x5f, 0x5f, 0x89, 0xf8, 0x8b, 0x47,
-0x86, 0xfd, 0x2d, 0x1a, 0xd3, 0x4f, 0xf1, 0x3b,
-0x0d, 0x81, 0xc8, 0xfe, 0x5f, 0x42, 0x37, 0xeb,
-0xd9, 0x9b, 0xf0, 0x0b, 0x47, 0xa3, 0xe3, 0x22,
-0xbf, 0x33, 0x1b, 0x5e, 0xef, 0xd6, 0xdf, 0xb8,
-0xec, 0xf0, 0x5f, 0x6f, 0xb1, 0x18, 0x94, 0x66,
-0x0c, 0xe1, 0xe1, 0xf7, 0x07, 0xec, 0xb4, 0x2f,
-0x70, 0x32, 0x8c, 0xcc, 0x2d, 0x22, 0x8d, 0x28,
-0xef, 0xf3, 0xbf, 0xe0, 0xca, 0xff, 0x92, 0xf1,
-0x87, 0x54, 0xed, 0x4b, 0xa8, 0x1d, 0x36, 0x55,
-0x09, 0xb4, 0x75, 0x2d, 0x75, 0xd7, 0x50, 0xe9,
-0xb0, 0xd6, 0x80, 0x6f, 0xd4, 0x82, 0x0a, 0xa9,
-0x48, 0xdf, 0xd6, 0xb4, 0x7a, 0xe3, 0xfb, 0xf8,
-0x35, 0x4e, 0x6c, 0x5d, 0x90, 0x9d, 0x46, 0xfe,
-0xe1, 0x35, 0x5e, 0x79, 0x6e, 0xe5, 0x18, 0xae,
-0x00, 0x79, 0xfe, 0x8b, 0x57, 0xf4, 0x57, 0xdb,
-0x69, 0xcb, 0x86, 0xc0, 0x5f, 0x8b, 0x28, 0x12,
-0xc3, 0x64, 0x9f, 0x33, 0x1f, 0xe7, 0x15, 0x2a,
-0xfe, 0x0a, 0x44, 0x64, 0x50, 0xbb, 0x26, 0x20,
-0xa8, 0x31, 0xbc, 0xb9, 0xf8, 0x9b, 0xec, 0x6d,
-0xf3, 0xf9, 0xbd, 0x15, 0x03, 0x2d, 0xdf, 0x2c,
-0xd0, 0x3f, 0xc4, 0xe5, 0x13, 0x9d, 0x8a, 0x59,
-0x06, 0x3e, 0xa7, 0xe5, 0x16, 0x7a, 0x4e, 0x04,
-0x42, 0x03, 0x3e, 0xaa, 0xcc, 0xf4, 0x4f, 0x9e,
-0x0a, 0x8f, 0x9d, 0x79, 0x57, 0xbd, 0x4c, 0x74,
-0xf8, 0x6e, 0x7b, 0x1f, 0x6c, 0x79, 0x41, 0xdf,
-0xb9, 0x6d, 0xe3, 0x3a, 0xb7, 0xfe, 0x61, 0x86,
-0x44, 0x90, 0x16, 0xfa, 0x4a, 0xa0, 0xbb, 0xb9,
-0x46, 0x17, 0x65, 0x53, 0x52, 0xdb, 0x8c, 0xac,
-0x0a, 0x09, 0x95, 0x8a, 0xe3, 0xe8, 0xb6, 0x10,
-0x22, 0x31, 0xd7, 0x38, 0x3d, 0x77, 0x99, 0x86,
-0x04, 0x62, 0x19, 0xcb, 0x48, 0x17, 0x37, 0x32,
-0xd5, 0x85, 0xbf, 0xb2, 0xd1, 0x77, 0x7c, 0x99,
-0x64, 0x35, 0x39, 0xf6, 0xa3, 0x76, 0x0c, 0xe7,
-0x91, 0xdf, 0x94, 0xb6, 0x2b, 0x73, 0x28, 0x70,
-0x7d, 0x86, 0x7d, 0xbe, 0x1a, 0xb3, 0xc2, 0x07,
-0xca, 0x47, 0x7c, 0x1f, 0x40, 0xd4, 0xc6, 0x4d,
-0x66, 0xd7, 0xe8, 0x37, 0x32, 0x5a, 0xa1, 0xfe,
-0xa1, 0x9d, 0xa6, 0xa7, 0xc6, 0x36, 0xdb, 0x7e,
-0x66, 0xa3, 0x85, 0x73, 0xa7, 0x8f, 0xbf, 0x0f,
-0x8d, 0x79, 0x79, 0x81, 0xc0, 0x51, 0xc4, 0x0e,
-0x37, 0x23, 0x10, 0x73, 0x94, 0x93, 0xad, 0xd2,
-0x03, 0x6e, 0xfc, 0xf5, 0x29, 0x74, 0xb7, 0xfb,
-0x47, 0x93, 0xe8, 0x43, 0xc2, 0x74, 0x91, 0xe4,
-0x05, 0xbf, 0x81, 0xcf, 0x93, 0x8c, 0xde, 0x33,
-0xb8, 0x7b, 0x36, 0x81, 0x3f, 0xe7, 0x67, 0x0e,
-0xbe, 0x7c, 0x95, 0xff, 0xa2, 0x65, 0x81, 0x25,
-0x72, 0x97, 0x26, 0xd4, 0x60, 0x3c, 0x10, 0x49,
-0xda, 0xf5, 0xbf, 0x38, 0xe2, 0xaf, 0xc3, 0xf1,
-0xbc, 0x5c, 0x7c, 0x46, 0xca, 0x6e, 0x98, 0xf3,
-0xad, 0x92, 0xc7, 0x9b, 0xe7, 0x52, 0xa9, 0x29,
-0xdd, 0x91, 0x2b, 0x5c, 0x87, 0xbb, 0xd5, 0x90,
-0xda, 0x61, 0x4a, 0xff, 0xd0, 0xdb, 0x3d, 0x1a,
-0x8c, 0x97, 0x1e, 0x2d, 0xac, 0xff, 0x95, 0xcb,
-0x11, 0x9b, 0x8b, 0xcf, 0x21, 0x6d, 0x0d, 0x13,
-0xe1, 0xdb, 0x01, 0xbc, 0x67, 0x23, 0xaf, 0xd9,
-0xa4, 0xda, 0x82, 0xe4, 0xbb, 0xb4, 0x9e, 0xc4,
-0xab, 0xd0, 0xb1, 0x24, 0x48, 0xb0, 0x8b, 0x5a,
-0x9e, 0x7d, 0x5d, 0x3b, 0xea, 0xd6, 0x3f, 0xec,
-0xaa, 0x40, 0x5c, 0x60, 0x1f, 0xe6, 0xef, 0x90,
-0xc9, 0x98, 0xca, 0xde, 0xbe, 0x62, 0x8a, 0x6b,
-0xda, 0x49, 0xe7, 0xfc, 0xa4, 0x4e, 0xb9, 0xa0,
-0x2c, 0xdc, 0x27, 0x34, 0x3a, 0x38, 0x80, 0x38,
-0xef, 0x4d, 0xed, 0xd7, 0x43, 0xd6, 0xdf, 0x50,
-0x5e, 0xad, 0x7c, 0x7d, 0x4a, 0xd6, 0xc2, 0xc5,
-0x50, 0x84, 0xd7, 0x3c, 0x5f, 0xf9, 0x91, 0x79,
-0x04, 0xea, 0xee, 0x11, 0xfe, 0xd8, 0x58, 0x30,
-0x36, 0xe0, 0x4f, 0x6b, 0x15, 0x2d, 0x94, 0x21,
-0x12, 0xee, 0x4a, 0x8a, 0x5e, 0x95, 0xd2, 0x1c,
-0xc5, 0x46, 0x94, 0xa8, 0xb1, 0x9f, 0xf2, 0xcb,
-0x6b, 0x1a, 0x60, 0x55, 0x46, 0x83, 0x3c, 0xfe,
-0x1a, 0x87, 0x1c, 0xfe, 0xaa, 0xf1, 0x0b, 0xff,
-0x70, 0x8c, 0xb2, 0x51, 0x28, 0x39, 0xeb, 0xdf,
-0xf5, 0xc5, 0x14, 0xc4, 0x4b, 0x11, 0x89, 0xb8,
-0x7f, 0x8d, 0xc2, 0x25, 0x75, 0x52, 0x6f, 0x3a,
-0x8e, 0x1e, 0xfe, 0x95, 0xcc, 0x84, 0xb1, 0xc8,
-0x2a, 0xcd, 0x5e, 0x57, 0x7f, 0x99, 0xa6, 0xd5,
-0xa4, 0x51, 0xa7, 0xae, 0xea, 0xc3, 0x8f, 0x8f,
-0x19, 0xb1, 0x92, 0x00, 0x1a, 0xed, 0x93, 0x15,
-0x4d, 0xc5, 0xab, 0x12, 0xc4, 0xa3, 0x55, 0xc5,
-0x54, 0xdc, 0xbf, 0xde, 0xa6, 0x18, 0x21, 0xd3,
-0xef, 0x3a, 0xdf, 0xc8, 0xf1, 0x5f, 0x23, 0x92,
-0xd2, 0xea, 0x4a, 0x8c, 0x78, 0x26, 0xfa, 0x6b,
-0x46, 0xb1, 0xeb, 0xfe, 0x01, 0x8e, 0x58, 0x0d,
-0xfd, 0x68, 0x7c, 0xdc, 0x72, 0x24, 0x55, 0x33,
-0xa4, 0x1d, 0xaa, 0xfc, 0x04, 0x5b, 0xd0, 0xd8,
-0x47, 0xa5, 0x99, 0x41, 0xd4, 0xff, 0xca, 0x11,
-0x61, 0xd9, 0xeb, 0xf5, 0x0f, 0x3b, 0x32, 0x7a,
-0xd8, 0xab, 0x79, 0x98, 0x65, 0xa2, 0x01, 0x64,
-0xe4, 0x32, 0xc2, 0x9c, 0x96, 0x53, 0x54, 0x8e,
-0xdc, 0x74, 0x27, 0xc6, 0xbe, 0x73, 0x83, 0xfc,
-0xaf, 0xbd, 0x72, 0xaf, 0xbc, 0x17, 0x7a, 0xd4,
-0xf9, 0xa0, 0xb5, 0xb1, 0x73, 0x74, 0x68, 0xe9,
-0xd5, 0x78, 0x5f, 0xba, 0x8a, 0xb2, 0xa7, 0x3b,
-0x11, 0xa3, 0xe9, 0x87, 0xf9, 0xdc, 0xb8, 0xfd,
-0xb2, 0xdd, 0x7f, 0x63, 0xfe, 0x6b, 0x04, 0x0e,
-0xa5, 0x63, 0x77, 0x07, 0xb6, 0xe3, 0xb6, 0x85,
-0x8b, 0xd5, 0xdd, 0x81, 0xa7, 0x5f, 0x7e, 0x17,
-0x0e, 0x5b, 0x35, 0x6b, 0x02, 0x9b, 0xd9, 0x87,
-0x14, 0xa3, 0xb8, 0x26, 0xf0, 0x23, 0x5c, 0xc7,
-0x2e, 0xa7, 0xeb, 0xd6, 0xe5, 0x3c, 0xea, 0x55,
-0x99, 0xca, 0x1b, 0xf1, 0x5f, 0x97, 0xb7, 0x37,
-0xed, 0x09, 0xbc, 0xaf, 0xac, 0x31, 0xaf, 0xe9,
-0x4d, 0xed, 0xe8, 0x55, 0xbe, 0x8f, 0x0e, 0x1e,
-0x3a, 0xf6, 0x87, 0x94, 0xa1, 0x96, 0x2b, 0xdb,
-0x63, 0x7b, 0x03, 0x1f, 0x28, 0x54, 0x5c, 0xa0,
-0x1e, 0x6a, 0xff, 0xff, 0xf0, 0x5f, 0x97, 0xcd,
-0x68, 0xca, 0xbf, 0x47, 0x99, 0x47, 0xb2, 0x1b,
-0xd2, 0x38, 0x46, 0xf5, 0x6a, 0x0f, 0x90, 0x7a,
-0xb0, 0x97, 0x1c, 0xfb, 0xa5, 0x43, 0x70, 0xdc,
-0x6c, 0x68, 0xcd, 0x7b, 0xf8, 0x2e, 0xfd, 0xc3,
-0x6a, 0x33, 0xd7, 0x3f, 0x87, 0xc5, 0x69, 0x21,
-0x6e, 0x01, 0x9d, 0x8e, 0xb1, 0x91, 0x76, 0xab,
-0x8c, 0xd4, 0x67, 0xa3, 0x28, 0xdc, 0x21, 0x0a,
-0xc7, 0x05, 0xf5, 0x3f, 0xe1, 0xbf, 0x9c, 0xe3,
-0x88, 0x2e, 0x48, 0xf3, 0x90, 0xe1, 0x53, 0xd9,
-0x6e, 0xc7, 0x68, 0x83, 0x2c, 0xa7, 0xc0, 0x1b,
-0x72, 0x45, 0xb0, 0x05, 0xa1, 0xf4, 0x46, 0x5e,
-0x28, 0x24, 0x35, 0x56, 0x58, 0x7f, 0x59, 0xb8,
-0xfa, 0xcf, 0x73, 0x63, 0x0d, 0xba, 0x22, 0x9f,
-0xc5, 0xa7, 0xa0, 0xcf, 0x3f, 0x13, 0x3e, 0x4b,
-0x49, 0xca, 0xab, 0xb5, 0x2f, 0xb0, 0x9b, 0xf5,
-0x7f, 0xe2, 0xd5, 0xab, 0x45, 0xb4, 0x21, 0x3f,
-0x30, 0x27, 0x2f, 0x10, 0x81, 0x9f, 0x3a, 0x33,
-0xa5, 0xfe, 0x32, 0xc2, 0x2e, 0xf3, 0xbc, 0x11,
-0x89, 0x23, 0xec, 0xf2, 0xe2, 0x97, 0x88, 0xac,
-0x51, 0xc9, 0xe8, 0xb3, 0x22, 0x66, 0xc0, 0xa7,
-0xa8, 0xbc, 0x2f, 0xde, 0xb8, 0xda, 0x0f, 0xca,
-0x80, 0xf9, 0x32, 0xde, 0xbc, 0x32, 0x32, 0xfd,
-0xa4, 0x49, 0xfc, 0x57, 0xa0, 0x50, 0xff, 0xd0,
-0x56, 0xb3, 0x51, 0xff, 0x87, 0x74, 0xde, 0x2e,
-0x99, 0x67, 0x75, 0xa1, 0x7d, 0x7d, 0x09, 0x21,
-0x43, 0xd3, 0x12, 0x9c, 0x20, 0x63, 0xf0, 0xb1,
-0x07, 0x8d, 0xde, 0xe9, 0x63, 0xd6, 0x55, 0x99,
-0xe2, 0x9a, 0xab, 0x35, 0x9f, 0xc3, 0x5f, 0x1f,
-0xe7, 0xcb, 0x32, 0x12, 0x89, 0x5c, 0xed, 0x9c,
-0x6b, 0xf9, 0x73, 0x46, 0x8f, 0x52, 0x03, 0x27,
-0xda, 0xa2, 0x59, 0xff, 0xb3, 0x4a, 0x95, 0x8e,
-0x43, 0x69, 0x6e, 0x71, 0x8d, 0x57, 0x8e, 0xff,
-0x3a, 0x9a, 0xaf, 0x29, 0x99, 0xc1, 0x3d, 0x44,
-0xa5, 0x04, 0xe4, 0x03, 0x04, 0xc4, 0xd0, 0xf0,
-0x1e, 0xa0, 0x40, 0x7a, 0x60, 0x22, 0xe0, 0x13,
-0x31, 0x44, 0x62, 0x06, 0x6c, 0x41, 0xa7, 0xd4,
-0x7d, 0xbe, 0xfa, 0x5a, 0x8e, 0xff, 0xd2, 0xbe,
-0x9f, 0x97, 0x34, 0xfc, 0xf1, 0x3b, 0x76, 0x1f,
-0xce, 0xb3, 0x3b, 0xd3, 0xaa, 0xce, 0x86, 0xd6,
-0xfb, 0x66, 0x07, 0x37, 0x58, 0x3f, 0xce, 0xae,
-0x59, 0xef, 0x5b, 0x80, 0xfb, 0xe0, 0xce, 0x9c,
-0xfe, 0x21, 0x19, 0xa3, 0x79, 0xfc, 0xf5, 0xa4,
-0x3c, 0x59, 0x3a, 0x89, 0x7f, 0x62, 0x8e, 0xa5,
-0x3e, 0xcc, 0xfe, 0x9d, 0xee, 0xb9, 0xa0, 0x7e,
-0x93, 0xfd, 0x3b, 0x3f, 0xe8, 0xa9, 0xfe, 0xa3,
-0xfa, 0x5d, 0x8a, 0x87, 0x8c, 0xe3, 0x30, 0x3d,
-0x84, 0x5f, 0x2c, 0xd9, 0x6c, 0xbc, 0xe6, 0x3e,
-0x37, 0x76, 0xe1, 0xaf, 0x37, 0x73, 0x94, 0x56,
-0xb6, 0x2e, 0x53, 0xb2, 0x53, 0xf9, 0xe0, 0x57,
-0x87, 0xf5, 0x86, 0x84, 0x7f, 0x1f, 0xfb, 0x80,
-0xe3, 0xb4, 0xe2, 0xfe, 0x7d, 0xca, 0x6d, 0xb0,
-0xc9, 0xaa, 0x4b, 0x63, 0xff, 0x20, 0x46, 0xcb,
-0x2e, 0xb0, 0xa5, 0xe9, 0xe5, 0xa7, 0x72, 0xf8,
-0xeb, 0x9c, 0x8c, 0x82, 0x23, 0xe7, 0x6d, 0xd2,
-0xb8, 0x8b, 0xad, 0xea, 0x55, 0x06, 0x3d, 0x93,
-0x33, 0x9a, 0x20, 0x20, 0xc2, 0x00, 0x54, 0x99,
-0xd9, 0x6a, 0x9c, 0x85, 0xbb, 0x8a, 0xa8, 0x40,
-0x30, 0x8c, 0xdd, 0xd7, 0xf0, 0x9f, 0xf0, 0x5f,
-0xa6, 0xed, 0x4c, 0x56, 0xe5, 0x34, 0x04, 0x8a,
-0xde, 0x98, 0x8e, 0x5e, 0x4a, 0x5e, 0x7f, 0xbe,
-0xdc, 0x65, 0xe4, 0xf1, 0x57, 0x21, 0xff, 0x05,
-0x5f, 0xe3, 0x92, 0x89, 0x58, 0xea, 0x12, 0x42,
-0x3c, 0xe6, 0x66, 0x34, 0xfe, 0x9b, 0x43, 0x8d,
-0xad, 0xa0, 0xd0, 0xb2, 0x5f, 0x41, 0xb0, 0x80,
-0xec, 0xc8, 0xf3, 0x5f, 0x8e, 0xc8, 0x3c, 0xe2,
-0x2f, 0xe5, 0x1f, 0x4c, 0x6d, 0xb0, 0xec, 0x92,
-0xfe, 0x38, 0x88, 0xb2, 0xcb, 0x97, 0xbc, 0x3f,
-0xf7, 0xd4, 0x9a, 0x2b, 0x84, 0xc1, 0xc4, 0xa5,
-0x21, 0xfd, 0x29, 0x2a, 0xa4, 0x72, 0x43, 0xfe,
-0xcb, 0x63, 0xf3, 0x5f, 0xcb, 0xcc, 0xe7, 0x2b,
-0xbe, 0xd1, 0xa2, 0xdd, 0xcd, 0x5e, 0xe7, 0x8f,
-0x1a, 0xd5, 0x2b, 0xb5, 0xbb, 0xa3, 0xaf, 0xf3,
-0xe7, 0x8d, 0x6a, 0xd9, 0xf2, 0xbc, 0x21, 0x2e,
-0x0d, 0xc1, 0x53, 0x86, 0xb1, 0xfc, 0x86, 0xfc,
-0x97, 0xad, 0x3f, 0xdf, 0xae, 0x54, 0xb8, 0xb4,
-0x11, 0xec, 0xca, 0x6b, 0xf9, 0xd4, 0x1e, 0x71,
-0x89, 0xfa, 0xf9, 0x4d, 0x68, 0x50, 0xff, 0xc5,
-0xd5, 0xcf, 0x79, 0xfe, 0x2b, 0xed, 0xb0, 0x27,
-0x7c, 0x62, 0x46, 0x6c, 0x19, 0xc9, 0x7c, 0x99,
-0xe3, 0x7a, 0x6c, 0xe5, 0xaa, 0xad, 0xca, 0xd0,
-0xb2, 0x71, 0xbd, 0x66, 0x99, 0x34, 0xca, 0xd0,
-0x63, 0xdc, 0xaa, 0xbc, 0x0e, 0x57, 0xea, 0x9b,
-0x6e, 0xc4, 0x7f, 0x51, 0xfd, 0xaf, 0x5c, 0xb5,
-0x2f, 0xbb, 0x64, 0x95, 0x1d, 0x74, 0x2d, 0x0c,
-0x4f, 0xcc, 0x64, 0x92, 0xff, 0x0a, 0x92, 0xf4,
-0x7a, 0x15, 0xfc, 0x42, 0x96, 0x71, 0xb9, 0x21,
-0xff, 0xc5, 0x6c, 0x48, 0xd5, 0xe1, 0x94, 0x5d,
-0xde, 0x2b, 0xf1, 0x97, 0xa1, 0x3b, 0x89, 0x60,
-0x9f, 0xe9, 0x71, 0x0a, 0x31, 0x3b, 0xfa, 0x87,
-0xff, 0x09, 0xff, 0xa5, 0x48, 0x6d, 0xc3, 0xb4,
-0x0c, 0x32, 0x24, 0x43, 0xd5, 0x7d, 0xed, 0xac,
-0xcd, 0x1b, 0x96, 0xf2, 0x26, 0x3b, 0x3d, 0x94,
-0x8b, 0xe7, 0xab, 0x72, 0xca, 0x7e, 0xb9, 0xfa,
-0xd9, 0xc1, 0x5f, 0xce, 0xb8, 0xf7, 0xc3, 0x46,
-0x3d, 0xd8, 0x4a, 0x65, 0x97, 0x3d, 0x1b, 0xcd,
-0xe0, 0x3d, 0xea, 0xf7, 0x28, 0x5a, 0x95, 0xf8,
-0xaf, 0x6d, 0x89, 0x77, 0x5b, 0x0e, 0x79, 0x83,
-0x22, 0xa2, 0xb5, 0xa2, 0xb3, 0xf0, 0xfd, 0x09,
-0xba, 0xf3, 0xbf, 0xf0, 0x35, 0x5e, 0x81, 0xd0,
-0x8c, 0x82, 0xe4, 0x11, 0xa4, 0x2b, 0x9f, 0x87,
-0x63, 0xfd, 0xc1, 0xf8, 0xac, 0xed, 0xca, 0x4f,
-0xe0, 0x58, 0x5b, 0x4d, 0xdc, 0xbf, 0x9d, 0xfa,
-0xe7, 0x0b, 0xc1, 0xd6, 0xc0, 0x8e, 0xf2, 0x2a,
-0x76, 0x2c, 0x81, 0x6e, 0x98, 0xab, 0x7f, 0x6e,
-0xa8, 0x7f, 0xd8, 0x1e, 0x6b, 0x09, 0x6c, 0x27,
-0xfa, 0xcc, 0x6c, 0x34, 0x6b, 0x77, 0x48, 0xfd,
-0x8d, 0xd5, 0x25, 0xa9, 0x4a, 0x84, 0x5d, 0xd6,
-0x8b, 0xab, 0x03, 0xf4, 0x40, 0x34, 0x0a, 0x88,
-0xcb, 0xe3, 0x53, 0xf9, 0x2f, 0xc4, 0x5f, 0x83,
-0xa6, 0xd0, 0x96, 0x07, 0x51, 0x7f, 0xd9, 0xef,
-0x2d, 0x07, 0x9d, 0xb2, 0xbd, 0xfc, 0xed, 0x95,
-0x06, 0x58, 0xcb, 0xea, 0x28, 0x46, 0xb1, 0xc2,
-0x2e, 0xcf, 0x77, 0x3d, 0xff, 0x35, 0xad, 0x1e,
-0x0e, 0x2b, 0xb6, 0xda, 0xe1, 0x26, 0x29, 0xbb,
-0x11, 0xca, 0x6f, 0x64, 0x76, 0x46, 0x98, 0x43,
-0x84, 0x31, 0x55, 0x7f, 0xb1, 0x23, 0xf8, 0xbf,
-0xe2, 0xbf, 0x7c, 0xb2, 0xc8, 0x57, 0xd8, 0xa2,
-0xbc, 0x12, 0x3a, 0x57, 0x47, 0xa3, 0x54, 0x24,
-0x98, 0x58, 0xf3, 0x65, 0xa6, 0xc9, 0x5e, 0xfb,
-0x92, 0x3f, 0xd4, 0xdb, 0x79, 0x3d, 0xff, 0x85,
-0xf8, 0xcb, 0x10, 0x2b, 0xed, 0x43, 0x6c, 0x16,
-0xdf, 0x40, 0xb2, 0x1b, 0x24, 0x7b, 0xd8, 0x4d,
-0x85, 0x42, 0x22, 0x45, 0xb3, 0x70, 0x15, 0x35,
-0x2c, 0x1f, 0x85, 0x1c, 0x24, 0xe1, 0xef, 0xe5,
-0xa5, 0xc5, 0x05, 0x1a, 0x89, 0xae, 0xfc, 0xaf,
-0xcf, 0x4a, 0xb5, 0xc3, 0xcb, 0x4b, 0x9b, 0xac,
-0xdf, 0x0a, 0xd9, 0x8d, 0x72, 0x81, 0xc8, 0xb2,
-0x02, 0x91, 0xbd, 0x4c, 0xfa, 0xf3, 0xf5, 0x68,
-0xfc, 0x92, 0xcf, 0xa4, 0x16, 0x92, 0xe6, 0xb8,
-0xf3, 0xc6, 0xfc, 0x97, 0x8c, 0x24, 0xdc, 0xb2,
-0x5f, 0x44, 0xaf, 0xd5, 0xb8, 0xb9, 0x12, 0x96,
-0x8f, 0x9c, 0x51, 0x73, 0x02, 0xe9, 0xe3, 0x90,
-0xd3, 0x76, 0xbe, 0x4e, 0x7f, 0x83, 0x7f, 0x77,
-0x88, 0xea, 0x7f, 0xe9, 0xa7, 0x9d, 0xd8, 0x27,
-0xf4, 0xfd, 0xde, 0x09, 0x48, 0x90, 0x25, 0xe2,
-0x0f, 0xaf, 0x7a, 0x26, 0x52, 0xb1, 0x73, 0x76,
-0xd9, 0xaf, 0xe8, 0x7f, 0xc6, 0x7f, 0x1d, 0xcc,
-0x7c, 0xc3, 0xd2, 0xbe, 0xcd, 0xae, 0xd2, 0x46,
-0x96, 0x95, 0x65, 0x53, 0xa0, 0xba, 0x4f, 0xa3,
-0xfa, 0x5f, 0x0b, 0x8c, 0x0a, 0x12, 0xc7, 0x38,
-0x6b, 0xfe, 0x7e, 0xeb, 0xe2, 0x6c, 0x31, 0x5d,
-0x7a, 0x4e, 0xdf, 0x39, 0xec, 0xee, 0x1f, 0x9b,
-0xff, 0x9a, 0x69, 0xe7, 0x7f, 0x91, 0xc8, 0x3c,
-0xdf, 0x20, 0x0c, 0x49, 0x38, 0xf6, 0xd3, 0xcd,
-0xed, 0x4f, 0x7a, 0x76, 0x5a, 0x4b, 0x6d, 0xd9,
-0x0d, 0xba, 0x34, 0x89, 0x7f, 0xab, 0x62, 0xc0,
-0xfd, 0x9c, 0x1c, 0xff, 0x35, 0x90, 0xf3, 0x33,
-0xf5, 0x64, 0x2a, 0x3c, 0xd2, 0x79, 0x67, 0xd9,
-0x29, 0xb3, 0x3b, 0x15, 0x1e, 0x5c, 0x71, 0x27,
-0x43, 0xc3, 0x32, 0x86, 0xb4, 0xc5, 0xec, 0xb4,
-0xb9, 0x9b, 0x87, 0x46, 0x8b, 0xef, 0xa4, 0xd0,
-0x7a, 0xd5, 0xd1, 0xdc, 0x93, 0x9f, 0x72, 0xf4,
-0x37, 0x72, 0xfa, 0x87, 0xe8, 0xaa, 0x9d, 0x00,
-0x11, 0xc6, 0x46, 0x7d, 0xd8, 0x94, 0x5d, 0x41,
-0xea, 0x67, 0x6f, 0x0d, 0x60, 0xf7, 0x1e, 0x60,
-0x1f, 0xc1, 0x91, 0x81, 0x9a, 0x0b, 0x81, 0x4c,
-0x70, 0x04, 0x7a, 0x21, 0x58, 0xd0, 0xcf, 0x1f,
-0x5f, 0x97, 0xff, 0x25, 0xf0, 0x97, 0x45, 0xe5,
-0x69, 0x8c, 0x09, 0x4a, 0x04, 0x13, 0x86, 0x51,
-0xd7, 0x47, 0x25, 0xab, 0xf8, 0x87, 0x46, 0x6c,
-0xa0, 0x84, 0x2a, 0xd7, 0x4c, 0x25, 0xcb, 0x72,
-0xfa, 0x87, 0x97, 0xf2, 0xb5, 0xbd, 0x7e, 0x0b,
-0xb7, 0x5b, 0xfe, 0x75, 0xca, 0x2c, 0xf8, 0x25,
-0x25, 0x0d, 0xad, 0x5b, 0x4a, 0x46, 0xae, 0x45,
-0x18, 0x42, 0xb3, 0xa8, 0x20, 0xce, 0x2a, 0xa7,
-0x7f, 0x18, 0xcf, 0xd7, 0x56, 0x76, 0xe7, 0x6d,
-0xb9, 0x8d, 0x32, 0x32, 0xe6, 0x53, 0x8b, 0x1f,
-0x36, 0x5a, 0x4e, 0x25, 0x65, 0xaf, 0x14, 0xb2,
-0x73, 0xf4, 0x37, 0x9c, 0x64, 0x31, 0xec, 0xba,
-0x1f, 0xde, 0xf0, 0x39, 0xc5, 0x84, 0xb6, 0x72,
-0x97, 0x3a, 0xda, 0x83, 0x05, 0x64, 0x99, 0x4b,
-0xff, 0x30, 0x39, 0x57, 0xe6, 0x7f, 0xe1, 0x24,
-0x4a, 0x9f, 0x94, 0xd3, 0xd3, 0x4c, 0x8b, 0x59,
-0x19, 0xa4, 0x24, 0xaf, 0x79, 0x11, 0xdf, 0x66,
-0x96, 0xf4, 0x1b, 0xc7, 0x20, 0x52, 0x8a, 0xcf,
-0xd1, 0xf7, 0x0e, 0xb8, 0xc7, 0x2b, 0xaf, 0x7f,
-0xc8, 0x4e, 0x84, 0x28, 0xaa, 0x33, 0x49, 0xd5,
-0xd0, 0x84, 0x36, 0x78, 0x18, 0x4e, 0x98, 0xd1,
-0x41, 0x69, 0x40, 0x17, 0xa1, 0xda, 0x7d, 0x9e,
-0xb7, 0xa0, 0x6b, 0x30, 0x9c, 0x29, 0x0f, 0xb3,
-0x63, 0x9e, 0xe8, 0x89, 0x82, 0x7e, 0x76, 0xf0,
-0xd7, 0x18, 0x91, 0x26, 0x96, 0x5d, 0xed, 0xab,
-0xe9, 0xa4, 0x93, 0xff, 0x75, 0xfc, 0xcf, 0xa5,
-0xe0, 0x3f, 0x05, 0x10, 0x26, 0x89, 0x70, 0xac,
-0x7d, 0x53, 0xd4, 0x62, 0xbb, 0x62, 0x14, 0xc6,
-0xb3, 0x4d, 0xa9, 0xff, 0x55, 0x62, 0xeb, 0x6f,
-0x64, 0x03, 0x24, 0xa9, 0x71, 0x9a, 0x37, 0x59,
-0x7e, 0x4b, 0xd9, 0x86, 0x8b, 0xde, 0x02, 0xf8,
-0x22, 0xd1, 0xca, 0xd7, 0xda, 0x44, 0xfe, 0xf2,
-0x42, 0xdc, 0x6a, 0x17, 0x11, 0xff, 0x95, 0xa5,
-0xf3, 0x43, 0x97, 0xfe, 0xbc, 0x95, 0xd3, 0xdf,
-0x68, 0x26, 0x7f, 0x1e, 0x8d, 0xf4, 0x9f, 0xa1,
-0x3f, 0xcf, 0x6b, 0xfb, 0x7d, 0x9c, 0xcd, 0x57,
-0x0f, 0xf1, 0x60, 0x5a, 0xed, 0x99, 0x4e, 0xf7,
-0xcc, 0x8d, 0x97, 0xa6, 0x98, 0x17, 0x12, 0x50,
-0x47, 0xb0, 0xeb, 0x1d, 0xdc, 0x2f, 0x0c, 0x08,
-0x21, 0xfe, 0x2a, 0xca, 0xf1, 0x5f, 0x76, 0x8f,
-0x59, 0x1e, 0x51, 0x46, 0x0a, 0xf0, 0x01, 0x49,
-0xb9, 0x42, 0x3e, 0x46, 0xd4, 0x58, 0x4e, 0x46,
-0xcf, 0x94, 0xda, 0xd7, 0x32, 0xd4, 0x6d, 0x80,
-0x9c, 0x52, 0x4a, 0x16, 0x7b, 0xc7, 0x13, 0x9f,
-0x82, 0xbf, 0x3e, 0x80, 0xc3, 0xbc, 0xd4, 0x5a,
-0xb1, 0x97, 0x3d, 0x1b, 0xc1, 0x37, 0xa1, 0xd7,
-0xb7, 0x97, 0xd5, 0xd0, 0xc1, 0x66, 0xbb, 0x8d,
-0xbb, 0x4b, 0xef, 0xf3, 0xed, 0x28, 0x43, 0x10,
-0xa6, 0xce, 0xa5, 0x4c, 0xc0, 0x61, 0x38, 0xc4,
-0x0d, 0xa1, 0x3f, 0x2f, 0xf7, 0x41, 0xf3, 0x33,
-0x42, 0x24, 0x81, 0x06, 0xe5, 0x43, 0x98, 0x48,
-0xcf, 0xb6, 0x02, 0x2f, 0xb2, 0x67, 0x85, 0x47,
-0x5d, 0xba, 0x4f, 0xa3, 0x25, 0x2e, 0x1a, 0x09,
-0xdb, 0x0b, 0x5a, 0x26, 0xd0, 0xa1, 0xcc, 0xe5,
-0x03, 0x26, 0x95, 0x48, 0x50, 0xce, 0xc1, 0x78,
-0x7a, 0x17, 0x9f, 0xaa, 0x3f, 0xdf, 0x54, 0xe0,
-0xa2, 0xdf, 0x23, 0x8d, 0x34, 0xf6, 0xe1, 0xb8,
-0xf7, 0xe7, 0x82, 0x11, 0xd3, 0xaf, 0xc1, 0x22,
-0x5e, 0x64, 0x29, 0xaf, 0x1b, 0x93, 0xd2, 0x9f,
-0x1f, 0x86, 0x3f, 0xc8, 0x7c, 0xbd, 0xb1, 0x1c,
-0xff, 0xe5, 0xc9, 0xd5, 0xff, 0x12, 0xb5, 0x7a,
-0x77, 0x57, 0xbe, 0x8f, 0x0b, 0x6c, 0xe3, 0xc9,
-0xc0, 0x41, 0x6d, 0x2e, 0xf4, 0xb5, 0x45, 0x5b,
-0x4b, 0x6d, 0xfe, 0x4b, 0xc7, 0x99, 0x1b, 0x42,
-0xc4, 0x41, 0xeb, 0xea, 0x9f, 0xbf, 0x8b, 0x3d,
-0xd4, 0xf0, 0x7a, 0xa1, 0xfe, 0xbc, 0x53, 0xff,
-0x2b, 0xde, 0xd9, 0x5a, 0x63, 0x95, 0xee, 0x41,
-0x1f, 0xe5, 0x08, 0xfc, 0x43, 0x16, 0x97, 0x8b,
-0x90, 0x5d, 0x31, 0x4d, 0x3c, 0x87, 0xb2, 0xe1,
-0xd8, 0x6d, 0x89, 0x4d, 0x0e, 0xff, 0x85, 0xd0,
-0xec, 0x75, 0x5f, 0x0e, 0x7f, 0x0d, 0xe7, 0xe3,
-0x37, 0xfa, 0x20, 0x45, 0x46, 0x47, 0x51, 0xbf,
-0xde, 0xed, 0x0d, 0x8f, 0x6a, 0x1d, 0x02, 0x0e,
-0xa4, 0xcd, 0x5c, 0xfd, 0x14, 0xed, 0x79, 0xd1,
-0x22, 0x78, 0x7c, 0x72, 0x4e, 0x42, 0x34, 0x5e,
-0xa3, 0xd2, 0xcf, 0x4c, 0xe7, 0xf0, 0x57, 0xd1,
-0x6f, 0x60, 0x3b, 0x17, 0x6a, 0x87, 0xbf, 0x11,
-0x65, 0x97, 0x7d, 0x2d, 0xcd, 0x0d, 0x9e, 0x47,
-0xd3, 0x46, 0xdc, 0xf7, 0x10, 0xa1, 0x80, 0xf6,
-0xea, 0x61, 0xed, 0x9e, 0x60, 0x99, 0xb9, 0x61,
-0xb4, 0x42, 0xea, 0xf2, 0x6d, 0xe1, 0x15, 0x06,
-0x6e, 0x6d, 0x67, 0xbc, 0xba, 0x83, 0xbf, 0xba,
-0x33, 0x02, 0x7f, 0xf5, 0xe2, 0xf7, 0x69, 0xcc,
-0x06, 0x40, 0xe9, 0x87, 0x6f, 0x65, 0xc2, 0x59,
-0xed, 0xb3, 0x0a, 0x98, 0x7d, 0xe9, 0x48, 0x2b,
-0xee, 0x5f, 0x24, 0x7b, 0x38, 0x6b, 0x0d, 0xf6,
-0x21, 0x78, 0x7b, 0xf7, 0x53, 0xd9, 0x65, 0x76,
-0x9a, 0x1f, 0xe3, 0xf5, 0x29, 0xa1, 0x3f, 0xaf,
-0x3b, 0xf8, 0xcb, 0xd6, 0x4b, 0xa1, 0x30, 0x36,
-0xec, 0xe7, 0x5e, 0xfc, 0xaa, 0xd7, 0x3c, 0x4d,
-0x7d, 0xe4, 0x55, 0xea, 0x93, 0x7a, 0x93, 0x39,
-0x6d, 0x54, 0x39, 0x4a, 0x01, 0x84, 0xcb, 0x48,
-0x91, 0x9e, 0x64, 0xe7, 0xc5, 0xe0, 0x2e, 0xa3,
-0xe4, 0xbe, 0x55, 0x88, 0xbf, 0xbc, 0x36, 0xfe,
-0x72, 0xad, 0x90, 0x62, 0xcd, 0xa4, 0x12, 0x1b,
-0x13, 0x4a, 0xec, 0xcd, 0x6f, 0x70, 0x59, 0x76,
-0x99, 0xe7, 0xc3, 0x3f, 0xd2, 0x4a, 0x50, 0x27,
-0x45, 0xc4, 0x12, 0x2a, 0x76, 0x70, 0x82, 0x53,
-0x68, 0xab, 0xd2, 0x97, 0xe7, 0xbf, 0x72, 0x6a,
-0x87, 0x07, 0x40, 0x08, 0x21, 0xce, 0xf0, 0x92,
-0x36, 0xaf, 0x4a, 0x8a, 0x88, 0xcf, 0x43, 0x35,
-0x17, 0xc7, 0x7d, 0xbf, 0xa7, 0x4b, 0x96, 0x4f,
-0xa7, 0x8c, 0x30, 0x4b, 0x14, 0xb2, 0xdc, 0x00,
-0xb7, 0x43, 0x09, 0xe2, 0xaf, 0x22, 0x7b, 0x9d,
-0xcf, 0xc5, 0x1f, 0xbe, 0x06, 0x07, 0x48, 0x7f,
-0x7e, 0x66, 0x90, 0x6a, 0x7b, 0x55, 0xbf, 0xaf,
-0xaa, 0x08, 0x78, 0x5f, 0xe8, 0x5b, 0x9b, 0xf5,
-0xd9, 0x68, 0x2b, 0x8e, 0xf7, 0xfc, 0x19, 0x7a,
-0x0e, 0xf3, 0xe8, 0xe6, 0x57, 0x20, 0xc9, 0xbf,
-0x9a, 0x56, 0xd7, 0x37, 0x0f, 0x5c, 0xa7, 0x3f,
-0x9f, 0x35, 0x7b, 0xd0, 0xe8, 0xdc, 0x58, 0x14,
-0x34, 0x85, 0x6e, 0x98, 0xbf, 0xcf, 0x63, 0x64,
-0xe2, 0xe1, 0xb3, 0x4e, 0x46, 0x58, 0x7c, 0xc5,
-0xf6, 0x32, 0x93, 0x39, 0x75, 0x4b, 0x8d, 0xa4,
-0x2e, 0x8a, 0x27, 0xbe, 0x09, 0x53, 0xe3, 0x0f,
-0x27, 0xe0, 0x6a, 0x0a, 0x8d, 0x21, 0xe5, 0x4e,
-0xd1, 0xe2, 0xff, 0x58, 0xfb, 0x1c, 0xa5, 0x09,
-0x67, 0x4a, 0x25, 0xda, 0xa2, 0x93, 0x8a, 0xe9,
-0xeb, 0xe1, 0x14, 0xce, 0x66, 0x29, 0x8d, 0xc8,
-0x3f, 0x9f, 0xf2, 0x1b, 0x88, 0xbf, 0x24, 0x3e,
-0xbd, 0x4e, 0x7f, 0xbe, 0x9d, 0x88, 0x30, 0x34,
-0x9e, 0x68, 0x5f, 0x9a, 0x9d, 0x36, 0x66, 0x52,
-0x5e, 0x7f, 0x65, 0x96, 0x30, 0xda, 0xb4, 0x40,
-0x7b, 0x72, 0x37, 0x8c, 0x71, 0x79, 0xb3, 0x39,
-0x06, 0x2f, 0x4a, 0xfc, 0x15, 0xb7, 0xf1, 0x57,
-0xce, 0x33, 0x4f, 0x93, 0xbf, 0xfa, 0xc5, 0xd4,
-0x06, 0x52, 0x9b, 0x6f, 0x5c, 0x56, 0xb2, 0x43,
-0x11, 0x0c, 0x82, 0x93, 0x11, 0x56, 0xb3, 0x24,
-0xb0, 0x43, 0x59, 0x6d, 0x9e, 0x17, 0x15, 0x7e,
-0x45, 0x4b, 0x98, 0xa4, 0x11, 0x99, 0x9c, 0x5f,
-0xae, 0xfa, 0x5f, 0xbf, 0x67, 0x1b, 0x07, 0x77,
-0x99, 0xda, 0xd3, 0x42, 0x25, 0xbe, 0x26, 0xae,
-0x6e, 0x23, 0xe3, 0x17, 0x0d, 0xae, 0xf8, 0xc3,
-0x1f, 0xb0, 0xcf, 0x1b, 0x87, 0x5c, 0xfe, 0x73,
-0x73, 0x68, 0x07, 0x4b, 0x5f, 0x17, 0x7f, 0xf8,
-0x2e, 0xd5, 0xc1, 0x34, 0xb5, 0x6d, 0x89, 0x2a,
-0x83, 0x72, 0x7c, 0x3e, 0x77, 0x13, 0xa5, 0x8f,
-0xc5, 0xa5, 0xec, 0xa1, 0x47, 0xf0, 0x5f, 0x5b,
-0x99, 0x4b, 0xac, 0xc3, 0x0e, 0x7a, 0x2c, 0x9d,
-0x12, 0x7f, 0xa8, 0x4b, 0xfd, 0x43, 0x04, 0x62,
-0x3e, 0x6f, 0x73, 0x1b, 0x84, 0x97, 0xa9, 0x37,
-0xb1, 0x2a, 0x66, 0x17, 0x9f, 0x72, 0x50, 0x40,
-0x91, 0x37, 0xdd, 0x6d, 0xa4, 0x45, 0xa5, 0x2a,
-0xbe, 0x3f, 0x14, 0x5e, 0xae, 0xea, 0x6c, 0xd3,
-0xb4, 0x02, 0xfc, 0x45, 0xd2, 0x91, 0xe9, 0x81,
-0x35, 0x51, 0x28, 0x7d, 0x2c, 0x51, 0x91, 0x46,
-0xfc, 0xf5, 0x83, 0x92, 0xc7, 0x3a, 0x0d, 0x18,
-0x08, 0x35, 0xe4, 0x64, 0x0f, 0x7d, 0x81, 0x44,
-0x32, 0xce, 0xc7, 0x5a, 0x1d, 0x8d, 0x71, 0xa3,
-0x51, 0x5d, 0xc9, 0xdd, 0xfa, 0x87, 0x39, 0xb5,
-0xc3, 0x2b, 0x46, 0xcc, 0x5c, 0x45, 0x42, 0x88,
-0xe3, 0x0c, 0x1d, 0x7b, 0x34, 0xd4, 0x2b, 0x70,
-0x97, 0x83, 0xb6, 0x9a, 0x4c, 0xed, 0xb5, 0xce,
-0x4b, 0xe9, 0x2b, 0x32, 0x28, 0xf4, 0x52, 0x8b,
-0x50, 0xe4, 0xc0, 0xd1, 0xf1, 0xba, 0xf4, 0x37,
-0x72, 0x6a, 0x87, 0x51, 0xf3, 0x56, 0xda, 0xa4,
-0xc6, 0x1d, 0x45, 0xc4, 0x02, 0x45, 0xfa, 0xd2,
-0x41, 0xe5, 0x41, 0x8a, 0xdf, 0x30, 0x6d, 0xb0,
-0x26, 0xf8, 0xaf, 0x1b, 0xe8, 0xcf, 0x33, 0xc2,
-0x5f, 0xb7, 0x72, 0xb6, 0x57, 0x26, 0x82, 0x91,
-0x1b, 0xdf, 0xe3, 0xa9, 0xcb, 0xa3, 0xad, 0x2d,
-0x5c, 0xcb, 0x82, 0x9d, 0x11, 0x36, 0x2c, 0xc0,
-0x5a, 0x08, 0xf1, 0x57, 0x51, 0x9e, 0xff, 0x22,
-0x0d, 0x7f, 0x01, 0xb2, 0xb0, 0x57, 0x57, 0xd8,
-0x84, 0xe3, 0x12, 0x9f, 0xcc, 0x08, 0x4b, 0x2f,
-0xa1, 0x4b, 0x33, 0x28, 0x22, 0xf1, 0xe6, 0x94,
-0x6f, 0xd9, 0x8c, 0x36, 0xaf, 0x2c, 0xc1, 0xe6,
-0x48, 0x23, 0xbe, 0x26, 0xe7, 0x57, 0x61, 0xfd,
-0x2f, 0xd8, 0xb5, 0xc4, 0xb7, 0xbd, 0x48, 0xb6,
-0x74, 0x44, 0x9b, 0x09, 0x92, 0x07, 0x5b, 0xf3,
-0x68, 0xeb, 0x7b, 0x37, 0xff, 0x1e, 0x92, 0x86,
-0x28, 0xbb, 0x3c, 0x64, 0xe2, 0x4b, 0x12, 0x17,
-0x75, 0x07, 0x8c, 0x1c, 0xfe, 0x72, 0x70, 0xd3,
-0xfb, 0x46, 0x17, 0x71, 0x88, 0x73, 0x66, 0x11,
-0x22, 0x2b, 0xdd, 0x4e, 0x27, 0x0c, 0xf8, 0x46,
-0x39, 0xfd, 0x83, 0xfb, 0xb2, 0xf6, 0x35, 0x76,
-0xcc, 0x14, 0x42, 0x88, 0xbf, 0x87, 0x63, 0x66,
-0xd7, 0xdd, 0xfe, 0x1c, 0xfe, 0x5a, 0x93, 0xc7,
-0x5f, 0xfd, 0x22, 0xaa, 0x93, 0x48, 0x2e, 0x43,
-0xd6, 0x0b, 0x58, 0x31, 0xc4, 0xcf, 0xa7, 0xdc,
-0x6a, 0xf3, 0x3b, 0x88, 0x23, 0x83, 0xc3, 0x05,
-0x78, 0xf9, 0xb5, 0x1c, 0xfe, 0xf2, 0x38, 0xf3,
-0x94, 0x8f, 0xb5, 0xd0, 0xbb, 0x51, 0x79, 0x8e,
-0x91, 0xec, 0x86, 0xbf, 0x9d, 0xf4, 0x5b, 0x8c,
-0xc2, 0x53, 0x11, 0x83, 0x0d, 0xc4, 0x85, 0xd8,
-0x4b, 0x2f, 0x89, 0x17, 0xdd, 0x84, 0xaf, 0x56,
-0x9f, 0x4b, 0x7f, 0xc3, 0x33, 0x97, 0x90, 0xd4,
-0xb8, 0xf7, 0x45, 0x04, 0x59, 0xa5, 0x43, 0x6c,
-0x0c, 0x07, 0xa5, 0x96, 0xfb, 0xb2, 0xcd, 0xc3,
-0xf0, 0xa2, 0x64, 0xbb, 0xd6, 0xc0, 0x0f, 0x3c,
-0x61, 0x5e, 0x1a, 0x67, 0x0d, 0xfc, 0x09, 0xcb,
-0xc6, 0x5f, 0x4f, 0x40, 0xed, 0x5e, 0xf5, 0x46,
-0xf1, 0x87, 0x16, 0x44, 0x5a, 0x71, 0x8d, 0x62,
-0xac, 0x97, 0x80, 0x18, 0x11, 0xfa, 0xfd, 0x90,
-0xe1, 0x2e, 0x45, 0x7a, 0xad, 0x1e, 0x67, 0x53,
-0x92, 0xdb, 0x71, 0x68, 0xe4, 0x55, 0xae, 0xd1,
-0xa7, 0xea, 0x6f, 0x08, 0x49, 0x8d, 0xe7, 0x65,
-0xc9, 0xe0, 0x3e, 0x92, 0x83, 0x00, 0x9f, 0x50,
-0x81, 0x20, 0xc9, 0xbe, 0x75, 0x45, 0x5f, 0xa6,
-0xfa, 0x8c, 0x96, 0xef, 0x41, 0xa6, 0x42, 0x52,
-0xb5, 0xf1, 0xd7, 0x06, 0x1d, 0x97, 0xee, 0x56,
-0x96, 0xf5, 0xda, 0xf8, 0x2b, 0xa7, 0xbf, 0xf1,
-0x1a, 0x4c, 0x0a, 0x6d, 0x8d, 0xf2, 0xd7, 0xe0,
-0xb7, 0x54, 0x7d, 0x75, 0x7d, 0x39, 0x15, 0xc4,
-0xdc, 0x2f, 0xd1, 0xd6, 0xff, 0xfb, 0x28, 0xde,
-0x73, 0x46, 0xfb, 0x2c, 0x02, 0x31, 0x81, 0xbf,
-0x4e, 0xc1, 0x2f, 0xd3, 0x8d, 0x69, 0xff, 0x3d,
-0xca, 0x3b, 0xee, 0xf8, 0x43, 0x11, 0x64, 0x38,
-0xe4, 0xa5, 0x7d, 0x47, 0xb0, 0xd2, 0x1f, 0xca,
-0x5e, 0x25, 0x82, 0xa6, 0xce, 0x3a, 0x4d, 0xf1,
-0x6c, 0x14, 0xb7, 0xb3, 0x25, 0x4d, 0x65, 0x97,
-0xc5, 0x71, 0xb1, 0x62, 0x17, 0x96, 0xa2, 0x73,
-0x24, 0x31, 0x5e, 0x2e, 0xfd, 0x8d, 0x0b, 0xf8,
-0x7d, 0x9a, 0x86, 0x02, 0x03, 0xca, 0x1f, 0xc9,
-0x3f, 0xa4, 0x6a, 0xb0, 0x2f, 0xc0, 0x23, 0x88,
-0xbf, 0xfc, 0xe3, 0x92, 0xff, 0xca, 0xae, 0x38,
-0x53, 0x1e, 0x03, 0x51, 0x23, 0x8c, 0xc4, 0x3a,
-0x7e, 0xc7, 0x17, 0xc5, 0xfd, 0x67, 0x10, 0x7f,
-0x19, 0x36, 0xfe, 0x9a, 0xd9, 0xad, 0x23, 0x4a,
-0x5a, 0xdf, 0xfc, 0x2b, 0x38, 0x60, 0x84, 0x87,
-0x71, 0xff, 0xba, 0x14, 0xc7, 0xdd, 0x01, 0x4a,
-0xff, 0x92, 0xcd, 0x4e, 0xff, 0x9e, 0x84, 0xa4,
-0x44, 0xfd, 0xaf, 0x4c, 0x78, 0x64, 0xc5, 0xdd,
-0x6c, 0x26, 0x6c, 0xd1, 0x6f, 0xcf, 0x6a, 0xeb,
-0xf0, 0x97, 0x26, 0x37, 0xdf, 0x9e, 0xfa, 0x8b,
-0xbf, 0x64, 0x1f, 0x14, 0x89, 0xe7, 0xb8, 0xf4,
-0x37, 0x5e, 0x37, 0x0e, 0xa8, 0xf8, 0x40, 0x3a,
-0x87, 0x44, 0x20, 0x66, 0xaa, 0x0f, 0xb2, 0xa7,
-0xf9, 0x7e, 0x9d, 0x04, 0xa9, 0x8a, 0xa4, 0xec,
-0xe1, 0x0f, 0x89, 0x6b, 0x7b, 0x54, 0xe0, 0xaf,
-0xb2, 0x93, 0x1d, 0xdf, 0x37, 0x2a, 0x00, 0xfb,
-0xb9, 0x6f, 0xaa, 0xfe, 0x06, 0xae, 0xab, 0x19,
-0x8e, 0xfb, 0x97, 0x56, 0x46, 0xf9, 0x44, 0x61,
-0x72, 0x37, 0x4b, 0x60, 0xb7, 0x69, 0xb8, 0x4e,
-0x89, 0xc1, 0x57, 0x6c, 0x24, 0xb2, 0x69, 0xba,
-0xf9, 0x09, 0xf3, 0xc9, 0xac, 0x91, 0x99, 0xa7,
-0xe3, 0xc6, 0x2a, 0x7f, 0x57, 0x5e, 0x7f, 0xe3,
-0x03, 0xb8, 0x3c, 0x88, 0x9d, 0xb9, 0x07, 0x0d,
-0x91, 0xbb, 0x9d, 0x86, 0xcd, 0x30, 0x96, 0x8a,
-0x0e, 0x87, 0x65, 0xaf, 0x96, 0xd2, 0xb1, 0xcf,
-0x3c, 0x11, 0x8f, 0x24, 0xfc, 0xa8, 0xdf, 0x59,
-0x75, 0x67, 0x70, 0x7e, 0x5d, 0x8f, 0xbf, 0xde,
-0xe7, 0x0d, 0x34, 0x28, 0x07, 0x94, 0x8f, 0x0c,
-0x59, 0x2c, 0x0c, 0x61, 0xd7, 0x98, 0xd5, 0xe8,
-0x42, 0xd0, 0x3b, 0xc8, 0x97, 0x30, 0x1b, 0x9c,
-0x14, 0x86, 0xc6, 0x1d, 0xb5, 0xa9, 0xeb, 0xf5,
-0x37, 0x70, 0x8b, 0xfc, 0x9d, 0x14, 0xe2, 0x18,
-0xa3, 0x28, 0x38, 0x1e, 0x38, 0xa6, 0xc4, 0xa0,
-0x9f, 0x47, 0x2d, 0x6f, 0x4e, 0x91, 0x5e, 0x57,
-0xe6, 0x52, 0x05, 0x01, 0x0a, 0x44, 0x3c, 0x2b,
-0x50, 0x1b, 0x1a, 0xc3, 0x4e, 0xfc, 0xc6, 0x5a,
-0xa7, 0x48, 0xee, 0x7f, 0x40, 0x67, 0x87, 0x08,
-0x5a, 0xfb, 0x90, 0xb8, 0x89, 0xc8, 0x8a, 0xf6,
-0x9b, 0x6b, 0xa0, 0xe3, 0x0c, 0xf9, 0x87, 0xd3,
-0xa5, 0x8f, 0xed, 0xa3, 0x0c, 0xa3, 0x0e, 0xab,
-0xc1, 0x01, 0x6b, 0xe2, 0xc4, 0x7e, 0x38, 0xa7,
-0x7f, 0x98, 0xf7, 0xc3, 0x7f, 0x40, 0xc1, 0x6f,
-0xfb, 0x8a, 0x3e, 0x30, 0x10, 0xa3, 0x8d, 0xe2,
-0x64, 0x0c, 0x53, 0xa5, 0xaa, 0x5c, 0xd9, 0x2f,
-0x6b, 0xe6, 0x0e, 0xa6, 0xa6, 0x3b, 0xf2, 0xa0,
-0xaf, 0xc6, 0xf4, 0x6d, 0x2b, 0xd0, 0x9f, 0x97,
-0x22, 0xf3, 0x03, 0x42, 0x05, 0x5d, 0x33, 0xe4,
-0xe8, 0xa4, 0xa8, 0x2e, 0x30, 0xe7, 0x54, 0xa7,
-0xef, 0x76, 0xe2, 0x2b, 0x0d, 0x44, 0x0a, 0x3a,
-0x03, 0xc6, 0x6f, 0x0a, 0x0b, 0x71, 0xb0, 0x44,
-0xd2, 0x58, 0xcb, 0x71, 0x5d, 0xed, 0x93, 0xfb,
-0x97, 0xd0, 0xdf, 0x68, 0xb5, 0xd5, 0xa7, 0xcf,
-0x40, 0xec, 0xe4, 0xaa, 0x74, 0x79, 0x56, 0x9f,
-0xb8, 0xbb, 0x66, 0x30, 0x00, 0xd3, 0xc3, 0xbb,
-0x06, 0x5a, 0xa3, 0x56, 0x8d, 0xed, 0xcf, 0x9f,
-0xdd, 0x4c, 0x02, 0x08, 0x03, 0x66, 0x43, 0x1f,
-0xf5, 0xb3, 0x75, 0xa2, 0xbe, 0xd1, 0x2c, 0xcd,
-0x94, 0xbb, 0xf5, 0xe7, 0xb1, 0xc7, 0x4a, 0xf6,
-0x0b, 0xdc, 0x44, 0x41, 0x50, 0x1e, 0x51, 0x64,
-0x99, 0x4e, 0x1d, 0x47, 0x60, 0x92, 0xe1, 0xa5,
-0x0b, 0xe8, 0x1f, 0x4e, 0x98, 0xb1, 0x93, 0x01,
-0xab, 0x9c, 0xee, 0x69, 0x10, 0xfe, 0xa1, 0x75,
-0xb1, 0x4a, 0x88, 0x3f, 0x0c, 0x43, 0x1e, 0x7f,
-0x25, 0x24, 0x93, 0xd5, 0x3e, 0x69, 0x34, 0xa9,
-0xab, 0xfa, 0xfe, 0x6a, 0x94, 0x3f, 0x0c, 0x4d,
-0x82, 0x08, 0x6b, 0x3f, 0x5b, 0xd5, 0xa4, 0xca,
-0x03, 0x64, 0xa3, 0xc9, 0x44, 0x8c, 0xb6, 0x10,
-0x5e, 0x7d, 0x6c, 0x11, 0x38, 0xfc, 0x57, 0xdc,
-0xbf, 0xbe, 0x00, 0x7f, 0x51, 0xfd, 0xe5, 0x1e,
-0xe5, 0xe3, 0x56, 0x62, 0xbb, 0x4a, 0x0f, 0xb1,
-0x8f, 0xcd, 0x23, 0x56, 0xcd, 0xbb, 0x9a, 0x30,
-0x52, 0x35, 0xbf, 0xd0, 0x5e, 0x50, 0x6a, 0xbd,
-0x68, 0xec, 0x11, 0xc4, 0x4a, 0x1b, 0x1d, 0x2d,
-0xba, 0x0a, 0x31, 0xbb, 0xe2, 0x0f, 0x73, 0xeb,
-0x61, 0x4e, 0xff, 0x30, 0xa3, 0x87, 0x3d, 0xd2,
-0xa0, 0x16, 0xef, 0x36, 0xde, 0x2a, 0x8c, 0x08,
-0xae, 0x35, 0x9d, 0x8e, 0xb0, 0x39, 0x1d, 0x5e,
-0x61, 0x3f, 0x77, 0x5d, 0xc7, 0x7f, 0x89, 0x4d,
-0x53, 0xdd, 0xd4, 0xde, 0x9c, 0xed, 0xe8, 0xb9,
-0x89, 0x76, 0xd8, 0xe6, 0x2c, 0xef, 0xf1, 0xd4,
-0x78, 0x35, 0x48, 0x18, 0xd0, 0x13, 0x16, 0xd4,
-0x33, 0xdc, 0xd7, 0xa9, 0xe3, 0x3b, 0x94, 0xab,
-0x4d, 0x90, 0xca, 0xc5, 0x1f, 0xce, 0xd8, 0xe7,
-0x84, 0xda, 0x7e, 0x20, 0x6a, 0x4f, 0x07, 0x8e,
-0x8a, 0xd8, 0xcb, 0xd8, 0x57, 0xd1, 0x78, 0x8f,
-0xbf, 0x41, 0x75, 0x4f, 0x9e, 0x5a, 0xfa, 0x93,
-0xc1, 0x71, 0x2b, 0x46, 0xfa, 0xa2, 0x73, 0x58,
-0xaf, 0xa7, 0x2e, 0x6a, 0xcf, 0xb8, 0xd8, 0x3a,
-0x7f, 0x8f, 0xa7, 0x3f, 0x87, 0xbf, 0x74, 0x7b,
-0x5e, 0xfc, 0x58, 0x9f, 0x5c, 0xd2, 0x64, 0x7c,
-0xb1, 0xbf, 0xfc, 0x82, 0x77, 0xd2, 0xd3, 0xd4,
-0xb6, 0xaa, 0xbf, 0x7c, 0xcc, 0x7b, 0xf5, 0x4f,
-0x9b, 0x76, 0xad, 0xca, 0x96, 0x0f, 0xcf, 0xb8,
-0x4a, 0x3d, 0x7f, 0xbe, 0x73, 0x94, 0x5d, 0xe1,
-0x4d, 0x55, 0x4e, 0x5c, 0xee, 0x6a, 0xa1, 0xf0,
-0xe0, 0xe0, 0x2f, 0x47, 0xaa, 0x68, 0x88, 0xe2,
-0x37, 0xf4, 0x40, 0xfb, 0xd2, 0x73, 0x64, 0x6c,
-0xc5, 0x05, 0x56, 0x26, 0xce, 0x30, 0x4a, 0xa5,
-0xf9, 0xc0, 0x6c, 0x30, 0xd1, 0x71, 0x1d, 0x22,
-0x6a, 0xcc, 0x44, 0x20, 0x2f, 0x12, 0xd3, 0x5a,
-0x6b, 0x52, 0x49, 0xfd, 0x3a, 0xfc, 0x35, 0x24,
-0xe2, 0x6d, 0xe4, 0xc1, 0xaf, 0xa7, 0xa1, 0x4d,
-0xe5, 0xe2, 0x90, 0x30, 0x98, 0x28, 0xb5, 0xcf,
-0x0f, 0x4d, 0x75, 0x4f, 0x22, 0xfb, 0xca, 0x1b,
-0xcc, 0x68, 0x71, 0xf8, 0x2f, 0xd2, 0x07, 0xa8,
-0x2b, 0xac, 0xbf, 0x2c, 0x4a, 0x00, 0xa4, 0x61,
-0xad, 0x18, 0xaf, 0x99, 0x69, 0x08, 0x73, 0x1f,
-0x14, 0x0d, 0x40, 0x97, 0x37, 0x94, 0xf2, 0x19,
-0x8c, 0x0e, 0x8b, 0xd7, 0x00, 0xce, 0x8b, 0x01,
-0x68, 0xf3, 0x86, 0xca, 0xec, 0x95, 0x6d, 0x2e,
-0xf8, 0x6e, 0x62, 0xf5, 0xf9, 0xf8, 0x43, 0xbb,
-0xfe, 0xd7, 0x9b, 0xe8, 0xf3, 0x57, 0xbf, 0x8b,
-0xd8, 0xea, 0x94, 0xb9, 0x81, 0xf8, 0xaf, 0xf5,
-0xcd, 0xbf, 0x69, 0xdd, 0xfa, 0x68, 0xc5, 0x57,
-0xd5, 0x7b, 0xd8, 0x3f, 0xe9, 0x6d, 0x69, 0x23,
-0xeb, 0xfb, 0x6b, 0xf6, 0x9a, 0xf9, 0x3d, 0xae,
-0xee, 0x71, 0xf8, 0xaf, 0x75, 0x78, 0xe9, 0xa8,
-0x5b, 0xff, 0xb0, 0xd1, 0x2a, 0xad, 0x67, 0x27,
-0xac, 0xff, 0x80, 0xc6, 0x11, 0x11, 0x7f, 0xb8,
-0x1b, 0x1a, 0x5b, 0x4a, 0x17, 0x2a, 0xaf, 0xa0,
-0xb7, 0xdc, 0x60, 0xfa, 0x52, 0x5a, 0x3b, 0x9c,
-0xcb, 0xd4, 0xa7, 0x4b, 0x6f, 0xc2, 0x4b, 0xbd,
-0x50, 0x1f, 0x5e, 0x29, 0xeb, 0x7f, 0xc5, 0x5a,
-0x4b, 0x75, 0xb7, 0xfe, 0xbc, 0xe0, 0xbf, 0xce,
-0xd3, 0xf2, 0xa5, 0xcb, 0x80, 0x6a, 0xef, 0x35,
-0x1d, 0xdd, 0xc2, 0xd1, 0xf2, 0x4b, 0x33, 0xc6,
-0x11, 0x7f, 0x95, 0xfe, 0xaa, 0xfc, 0x41, 0xf3,
-0xca, 0xb4, 0xa6, 0xcd, 0x25, 0xbf, 0x2a, 0x3f,
-0x8b, 0xc3, 0xfd, 0x29, 0x77, 0xea, 0xb5, 0x2d,
-0xab, 0x1d, 0x54, 0x5a, 0xa7, 0xd6, 0x5f, 0x16,
-0xfc, 0x57, 0x5d, 0xb6, 0xa4, 0xa7, 0xf2, 0x7e,
-0x76, 0x82, 0x8b, 0x9d, 0xf1, 0x63, 0xf8, 0xa1,
-0x12, 0xcb, 0x96, 0x64, 0xca, 0xc3, 0x34, 0xa6,
-0x3d, 0xe1, 0xd4, 0xf4, 0x10, 0x1c, 0x73, 0x72,
-0xfa, 0xb0, 0xc5, 0xf0, 0xa7, 0xa6, 0x7f, 0xc0,
-0xae, 0xc7, 0x5f, 0x82, 0xff, 0x02, 0x9d, 0xe3,
-0xaa, 0x5d, 0x01, 0xc5, 0xb8, 0x01, 0xa9, 0xed,
-0xb0, 0x12, 0x54, 0x13, 0x97, 0x86, 0x03, 0xe4,
-0x51, 0xb7, 0x16, 0x3d, 0xcd, 0x1e, 0xcd, 0x47,
-0x24, 0xd6, 0x9a, 0xb8, 0xef, 0x5c, 0x00, 0x17,
-0xfe, 0x12, 0x90, 0xea, 0x6d, 0xcf, 0xc1, 0x4d,
-0x5f, 0x7d, 0x47, 0x5b, 0xff, 0xd8, 0x57, 0x8c,
-0x0d, 0x89, 0xaf, 0x52, 0xdd, 0xae, 0x53, 0xea,
-0xf7, 0xa5, 0xda, 0xfc, 0x6c, 0xca, 0xf6, 0x7a,
-0x47, 0x1d, 0x60, 0x77, 0xd3, 0x58, 0xe4, 0x78,
-0x46, 0x8a, 0x3f, 0x4c, 0x17, 0xe2, 0xaf, 0x13,
-0x11, 0xf6, 0xb6, 0xf7, 0x60, 0x7b, 0xc5, 0x28,
-0xac, 0x9f, 0xfb, 0x15, 0xd8, 0x60, 0x55, 0x0c,
-0x16, 0x7f, 0x93, 0x12, 0xcf, 0xbd, 0x73, 0xce,
-0xa9, 0x93, 0xcd, 0xff, 0xb7, 0x7e, 0xb0, 0x1f,
-0x91, 0x9d, 0xb7, 0xf9, 0x94, 0x99, 0x64, 0x6b,
-0x2f, 0x74, 0x38, 0x27, 0x27, 0xe4, 0x67, 0x5e,
-0x97, 0xff, 0xf5, 0x41, 0xfc, 0xb2, 0x59, 0xc7,
-0x03, 0x3b, 0x95, 0x35, 0xe6, 0x71, 0xb5, 0xee,
-0x40, 0x60, 0x9f, 0x32, 0xcc, 0xdf, 0xd4, 0x63,
-0xed, 0x25, 0x7b, 0x95, 0x79, 0xd6, 0x65, 0x8e,
-0x88, 0xec, 0x5e, 0xed, 0x6f, 0xe0, 0x78, 0xba,
-0xa9, 0x27, 0x6c, 0x23, 0x32, 0x12, 0xe2, 0xb8,
-0xbe, 0xfe, 0x57, 0x8e, 0xed, 0xca, 0xd8, 0x82,
-0xae, 0xc9, 0x51, 0xef, 0xe4, 0x67, 0x9b, 0x66,
-0x04, 0x7a, 0x15, 0x34, 0xf4, 0x26, 0xba, 0x67,
-0xa7, 0xbb, 0xfe, 0x57, 0x6c, 0x06, 0x82, 0xb5,
-0x1b, 0xd4, 0xff, 0x02, 0x84, 0x03, 0xcd, 0x5b,
-0x84, 0x51, 0x1c, 0x13, 0x85, 0x6b, 0x0d, 0x6c,
-0x59, 0x77, 0x6b, 0x6a, 0x77, 0x95, 0x3a, 0xae,
-0x22, 0x64, 0xa0, 0x88, 0xc4, 0x63, 0x50, 0x5f,
-0xa0, 0xd1, 0x91, 0xb8, 0x41, 0xfd, 0xaf, 0xa7,
-0x6c, 0x43, 0x64, 0x84, 0x05, 0x6c, 0xda, 0xeb,
-0x5b, 0xb3, 0x53, 0xac, 0x4a, 0x27, 0x1c, 0x87,
-0x5b, 0xdb, 0xe7, 0xd9, 0x1b, 0x38, 0xd1, 0x4a,
-0x6c, 0x8f, 0xfa, 0x3e, 0x74, 0xc8, 0x8d, 0x1b,
-0xe4, 0x7f, 0xbd, 0x44, 0xe5, 0x21, 0x06, 0xd9,
-0xa4, 0x63, 0x5c, 0x82, 0x9f, 0x2b, 0xb5, 0x66,
-0xe7, 0x20, 0x5b, 0x08, 0x3f, 0x27, 0x46, 0x0c,
-0xf1, 0x57, 0xba, 0xcd, 0x55, 0xd0, 0xf9, 0x5e,
-0x6c, 0x79, 0xec, 0x3a, 0xfc, 0xe5, 0xb0, 0x5d,
-0xcd, 0x5f, 0x12, 0x86, 0x7a, 0x77, 0xd1, 0xeb,
-0xfc, 0x0e, 0x34, 0x7c, 0x7f, 0xc5, 0x66, 0xf0,
-0x1f, 0x13, 0xff, 0x95, 0x61, 0x5e, 0xbe, 0x15,
-0xaa, 0x5a, 0xf2, 0x91, 0x72, 0x29, 0x36, 0xa5,
-0xfe, 0xb2, 0xe8, 0xba, 0x1e, 0xb7, 0xe1, 0xd0,
-0x5e, 0x33, 0x34, 0xaf, 0x46, 0x12, 0x16, 0xd8,
-0xcf, 0x8f, 0x6a, 0x15, 0xe6, 0x40, 0x6b, 0xe3,
-0x8c, 0x70, 0xae, 0x9f, 0xd3, 0xca, 0xcf, 0x3c,
-0x53, 0xf1, 0xd7, 0xd0, 0xb2, 0xcf, 0xdd, 0x64,
-0xf3, 0x5f, 0x13, 0x7a, 0x6c, 0x99, 0xb2, 0xb5,
-0x7c, 0x68, 0xd9, 0xf8, 0x8c, 0xd8, 0xb2, 0x55,
-0xdd, 0x78, 0xe9, 0x3b, 0x54, 0x4d, 0xaf, 0x55,
-0x79, 0xdd, 0xbc, 0xc2, 0xee, 0x5a, 0x56, 0xea,
-0x8a, 0x24, 0x74, 0xe1, 0xaf, 0xf7, 0x8b, 0x24,
-0x5e, 0x9e, 0x81, 0xe8, 0xf8, 0xeb, 0xfe, 0x1d,
-0xc9, 0xb9, 0xc6, 0x78, 0x47, 0xf4, 0xef, 0xff,
-0xe2, 0x07, 0xca, 0x5c, 0xfe, 0x06, 0x5f, 0x70,
-0x1f, 0xb6, 0x7c, 0x2d, 0x74, 0x6c, 0x6f, 0xf4,
-0xbe, 0x55, 0x83, 0xca, 0x97, 0xd8, 0xab, 0x4e,
-0x8c, 0x22, 0x3d, 0xa7, 0xe4, 0x06, 0xf8, 0xab,
-0x48, 0x48, 0xf2, 0xea, 0x25, 0xed, 0xac, 0x02,
-0x7a, 0xcc, 0x20, 0xa9, 0xf5, 0x1a, 0x7a, 0x87,
-0x77, 0x7e, 0x4a, 0x6d, 0x6f, 0x36, 0xa0, 0x63,
-0x59, 0xd0, 0xe1, 0xbf, 0xd0, 0xcd, 0x10, 0x88,
-0xcc, 0xeb, 0xae, 0xff, 0xd5, 0xe2, 0xaa, 0xff,
-0xc5, 0xb6, 0xa2, 0xd1, 0x23, 0xf1, 0x97, 0x41,
-0x38, 0x77, 0x1a, 0xdb, 0x6a, 0x0a, 0x90, 0xb5,
-0x4c, 0xd2, 0x5e, 0x33, 0x85, 0x51, 0x98, 0x11,
-0x76, 0x7d, 0xfe, 0xd7, 0xbb, 0x1d, 0x14, 0x5b,
-0x68, 0x47, 0x1b, 0x06, 0xff, 0x7a, 0xf9, 0x56,
-0x01, 0xe4, 0xe7, 0xb7, 0xa8, 0xa9, 0xa0, 0x90,
-0x6d, 0x31, 0x4f, 0xe8, 0x2c, 0x0c, 0x1b, 0x13,
-0xce, 0xb8, 0x7b, 0x6a, 0x9a, 0xd5, 0xad, 0x6e,
-0xfd, 0x43, 0x99, 0x93, 0xc5, 0x7e, 0x0f, 0xb8,
-0x5b, 0xad, 0x57, 0x53, 0xca, 0xe7, 0x61, 0xdc,
-0x8a, 0xae, 0x2b, 0xf9, 0xc1, 0x5f, 0x7d, 0x9e,
-0xbf, 0x11, 0x8f, 0xc6, 0xfd, 0x4f, 0x2b, 0x7f,
-0x67, 0x1e, 0xc3, 0x96, 0xc0, 0x76, 0xe5, 0x6b,
-0x09, 0xec, 0xc3, 0xd6, 0xb0, 0xfd, 0x3e, 0x3f,
-0x58, 0x7d, 0x23, 0xfc, 0x25, 0x41, 0xd6, 0xaa,
-0xed, 0xb7, 0x7c, 0x15, 0xc6, 0x97, 0xbc, 0x68,
-0x7e, 0x63, 0xc7, 0x2d, 0x43, 0xed, 0xe3, 0xfa,
-0x0b, 0xf1, 0x7f, 0xd8, 0xae, 0xbd, 0xc7, 0xc6,
-0xff, 0xf4, 0xc5, 0xd6, 0x92, 0x54, 0xf9, 0x10,
-0xff, 0xb6, 0x4b, 0xa3, 0xfe, 0xbe, 0x1b, 0xd6,
-0xff, 0xb2, 0x60, 0xd8, 0x13, 0x81, 0x22, 0x28,
-0x4f, 0xcf, 0xc8, 0x42, 0x3d, 0x94, 0x82, 0xc2,
-0x61, 0xb0, 0xa8, 0xfe, 0xa6, 0x2f, 0x52, 0xa2,
-0x77, 0x16, 0x1a, 0x28, 0x85, 0xb3, 0x0d, 0x06,
-0x78, 0x2c, 0xe2, 0xbc, 0x3f, 0x10, 0x4e, 0x14,
-0xe8, 0x1f, 0x8a, 0xfa, 0xcb, 0x45, 0x52, 0xff,
-0x90, 0x88, 0x30, 0xcf, 0x9b, 0x0e, 0xff, 0x75,
-0x18, 0x2a, 0x33, 0x25, 0x69, 0x44, 0xd0, 0x82,
-0xff, 0xca, 0xfa, 0xea, 0xe1, 0x6d, 0xb5, 0x36,
-0xed, 0x44, 0x24, 0x92, 0x34, 0xc7, 0x75, 0xf8,
-0x2b, 0xb8, 0x19, 0xb7, 0x89, 0x21, 0x5c, 0xd0,
-0xa2, 0x9b, 0xfd, 0xdd, 0x2c, 0x84, 0x3b, 0x5a,
-0x11, 0x85, 0x9f, 0x85, 0x3e, 0xed, 0xa4, 0x38,
-0xb4, 0xdd, 0xde, 0x35, 0xb4, 0xc7, 0x6d, 0x26,
-0x89, 0x86, 0xac, 0xbd, 0x7f, 0xd5, 0xe8, 0xea,
-0xc2, 0x1c, 0xfe, 0x02, 0x57, 0x3a, 0xd2, 0x06,
-0x2e, 0x74, 0x14, 0x11, 0xac, 0x81, 0x70, 0xe3,
-0x05, 0x11, 0x66, 0xa9, 0x0b, 0xd0, 0xc0, 0x96,
-0xac, 0xba, 0x1a, 0x77, 0x3d, 0x04, 0x62, 0x7d,
-0x4e, 0x44, 0x22, 0x05, 0x93, 0xbb, 0xf4, 0x0f,
-0x89, 0xc9, 0xd2, 0xd6, 0x2b, 0x4f, 0xc0, 0x7f,
-0xb4, 0xdf, 0x71, 0xae, 0x74, 0xbd, 0xf2, 0x23,
-0xfd, 0x20, 0x82, 0xac, 0xb7, 0xd7, 0x57, 0xfe,
-0x48, 0xff, 0x94, 0xdf, 0x99, 0xee, 0x7c, 0x28,
-0xf9, 0xc4, 0xb4, 0xdf, 0x27, 0xef, 0xcc, 0x3e,
-0xf1, 0xc1, 0xd2, 0x1f, 0x79, 0x49, 0x76, 0x63,
-0x96, 0x5d, 0xff, 0x0b, 0x31, 0x5a, 0x8e, 0xff,
-0x9a, 0xe5, 0x8a, 0x93, 0x21, 0x6d, 0xf0, 0x52,
-0xd2, 0x7f, 0x26, 0xd9, 0xc3, 0x5b, 0x72, 0x6e,
-0xfc, 0x81, 0xdc, 0xa9, 0xfe, 0xd2, 0x21, 0x57,
-0x85, 0x5f, 0x36, 0x55, 0xff, 0x50, 0xd4, 0xff,
-0x92, 0x2e, 0x5f, 0xdd, 0xd0, 0x86, 0xb1, 0x8a,
-0xab, 0x7c, 0x22, 0x5d, 0x3a, 0x82, 0xc6, 0x23,
-0xd2, 0x09, 0xec, 0x12, 0xa1, 0x89, 0xb1, 0x93,
-0x25, 0x63, 0xc9, 0x59, 0xfc, 0x14, 0xbf, 0xcb,
-0x08, 0xdb, 0xfe, 0xa1, 0x51, 0xf2, 0x6d, 0xb7,
-0xfe, 0xc6, 0x45, 0x5e, 0x4d, 0xe7, 0xa2, 0x9b,
-0xe1, 0xa0, 0x6e, 0xd8, 0xdc, 0x96, 0x5d, 0xff,
-0xcb, 0x3c, 0xb8, 0xad, 0xc4, 0xab, 0x8e, 0xb3,
-0x59, 0x66, 0xb7, 0x1e, 0x7e, 0x5f, 0x8b, 0xb3,
-0x1d, 0xf0, 0x18, 0x0f, 0xe7, 0xf6, 0xaf, 0xcf,
-0xa1, 0x71, 0x7d, 0xfd, 0x65, 0xba, 0x34, 0xa7,
-0x5f, 0xfb, 0x26, 0x3b, 0xbb, 0x5d, 0xf4, 0xfc,
-0xed, 0x14, 0x76, 0xe8, 0x45, 0x30, 0xfb, 0x80,
-0x0c, 0x71, 0x3c, 0xa9, 0xf5, 0xa2, 0xf1, 0x98,
-0xec, 0xde, 0xb3, 0xd8, 0xe1, 0xf3, 0xe0, 0x0b,
-0xeb, 0xca, 0xda, 0xf3, 0xf8, 0x6b, 0xb7, 0xf4,
-0x5b, 0x4e, 0x99, 0xdd, 0x83, 0x55, 0xa4, 0xfa,
-0x7b, 0x8a, 0x77, 0x93, 0xe8, 0xfd, 0x9d, 0xac,
-0xd4, 0xec, 0x4e, 0x84, 0xd3, 0x2d, 0x77, 0x92,
-0x6c, 0x6f, 0x0a, 0xa1, 0x62, 0x84, 0xb5, 0x43,
-0x22, 0x1f, 0xb7, 0x53, 0xb3, 0xae, 0x25, 0xc2,
-0x76, 0xe4, 0xe3, 0x0f, 0x65, 0xea, 0x93, 0x08,
-0x29, 0xac, 0x7b, 0x27, 0x70, 0xf4, 0xe5, 0x4f,
-0x8c, 0x89, 0x63, 0xb1, 0x0b, 0xd8, 0xbd, 0xd8,
-0xe1, 0x27, 0x63, 0x17, 0xbc, 0x97, 0x58, 0xad,
-0x81, 0x7e, 0xf8, 0x85, 0x92, 0x75, 0x4a, 0x2d,
-0x3b, 0xa6, 0x36, 0x58, 0xb6, 0x7f, 0xd8, 0x70,
-0x77, 0x49, 0x46, 0x7b, 0xf6, 0x3a, 0xfc, 0xb5,
-0xcf, 0x98, 0xa8, 0x68, 0x10, 0x6c, 0x97, 0x67,
-0xa2, 0x22, 0x36, 0x40, 0x46, 0x64, 0xc2, 0x88,
-0x0d, 0xd4, 0x12, 0xff, 0x35, 0x51, 0x85, 0xbe,
-0x28, 0xee, 0x95, 0xa9, 0x71, 0x53, 0xa4, 0x86,
-0x89, 0xfa, 0x5f, 0xf7, 0xd4, 0x1e, 0x50, 0xbe,
-0x7a, 0x1d, 0xfe, 0x3a, 0x0b, 0x2f, 0x0b, 0x92,
-0xab, 0x72, 0x96, 0xff, 0x97, 0xca, 0xed, 0xd6,
-0xe6, 0x75, 0xe5, 0x44, 0x7b, 0x7d, 0x33, 0x33,
-0x6b, 0x9d, 0xf2, 0x65, 0xc9, 0x7f, 0x65, 0x95,
-0x7a, 0x78, 0x95, 0x0c, 0x87, 0x97, 0xf1, 0x0f,
-0x7a, 0xb2, 0x2e, 0xfc, 0xc5, 0x0a, 0xf8, 0xaf,
-0xe9, 0x6b, 0xd1, 0x99, 0x0c, 0xf6, 0xaa, 0x99,
-0x66, 0xe2, 0xad, 0xfe, 0x91, 0x70, 0x13, 0x1a,
-0x5e, 0x6a, 0xa9, 0x5c, 0x01, 0x6f, 0x8c, 0xd6,
-0x59, 0x21, 0xdb, 0x3f, 0x1c, 0x55, 0xbb, 0x6e,
-0xa4, 0x7f, 0xe8, 0xe9, 0x84, 0xfb, 0xac, 0x2f,
-0x64, 0xee, 0x0e, 0xcf, 0x20, 0xb6, 0x6b, 0x87,
-0xf8, 0xf8, 0xb4, 0xe0, 0x12, 0xa2, 0xbd, 0x8a,
-0xed, 0x3a, 0x50, 0x35, 0xf0, 0x24, 0x9b, 0x9f,
-0x8b, 0xb3, 0x8a, 0x87, 0xba, 0x0a, 0xf0, 0x97,
-0x29, 0xf9, 0xca, 0x15, 0x49, 0x6f, 0xd6, 0xda,
-0x48, 0x89, 0x7b, 0x49, 0xc3, 0xe8, 0xdb, 0x21,
-0xe8, 0x69, 0x95, 0xc8, 0x97, 0x4d, 0xfe, 0xe2,
-0xa4, 0x9e, 0x1d, 0x28, 0x36, 0x7c, 0x6b, 0xe0,
-0xc9, 0x0a, 0x51, 0x5e, 0x56, 0xfa, 0x1b, 0xa1,
-0x42, 0xfd, 0xc3, 0x78, 0x4d, 0xaf, 0xf6, 0xbc,
-0xf2, 0x11, 0xf9, 0xc6, 0x67, 0xaa, 0x33, 0xbe,
-0x30, 0x7b, 0x0b, 0xba, 0x06, 0x70, 0x50, 0xc2,
-0xe6, 0x09, 0x23, 0x0d, 0xa1, 0x51, 0x26, 0xd3,
-0x88, 0xaa, 0xb9, 0x12, 0xc2, 0x4b, 0x3d, 0x90,
-0x8b, 0x1f, 0xf3, 0xa7, 0x96, 0xba, 0xf1, 0x57,
-0x3c, 0x4f, 0x69, 0xbd, 0x59, 0x4a, 0x82, 0x93,
-0x32, 0x62, 0xaa, 0x72, 0x32, 0x25, 0x15, 0xf6,
-0xa6, 0x1f, 0x25, 0x21, 0xc4, 0x57, 0x4a, 0xd7,
-0xa1, 0x0f, 0x39, 0xa1, 0x2f, 0x70, 0xe5, 0x7f,
-0x65, 0x6f, 0xc0, 0x7f, 0x51, 0xda, 0x97, 0xd0,
-0x17, 0x1d, 0x25, 0x6d, 0x0d, 0x58, 0x65, 0x2d,
-0x25, 0x45, 0xc4, 0x05, 0x20, 0xe3, 0x7b, 0xf9,
-0x22, 0xca, 0x08, 0x6b, 0x14, 0x37, 0x6f, 0x11,
-0x2d, 0x89, 0x05, 0xd6, 0x8d, 0xf8, 0x2f, 0xec,
-0xba, 0x1f, 0x40, 0x78, 0x40, 0x70, 0x5b, 0x9d,
-0xd4, 0xc2, 0x99, 0xdf, 0x3b, 0xce, 0x83, 0xb9,
-0xfc, 0xaf, 0x78, 0x68, 0xaf, 0x72, 0x7f, 0x5e,
-0xac, 0xbe, 0x1b, 0x7b, 0xbe, 0x85, 0x50, 0x52,
-0x01, 0xfe, 0x92, 0xa1, 0xb6, 0x0e, 0x10, 0xdb,
-0x4d, 0x55, 0xec, 0xa9, 0x10, 0x18, 0xf1, 0x5f,
-0x0e, 0x9f, 0x82, 0xa8, 0xb6, 0x59, 0x80, 0x62,
-0xa7, 0x52, 0xf9, 0x5e, 0x4b, 0xbd, 0x2e, 0xfe,
-0x50, 0xc8, 0xfa, 0xfd, 0x40, 0x26, 0x00, 0x0e,
-0x19, 0x9d, 0x70, 0x7f, 0x5a, 0xe3, 0x89, 0x1a,
-0x0a, 0xda, 0x2f, 0x72, 0x46, 0x99, 0x4e, 0x38,
-0xd7, 0x7a, 0xee, 0xb2, 0x5f, 0x12, 0xef, 0x11,
-0xf8, 0x3a, 0x7d, 0x1f, 0x57, 0xfe, 0x97, 0xe4,
-0xbf, 0x96, 0xa2, 0xd1, 0x21, 0xcb, 0x04, 0xd0,
-0x39, 0x52, 0x45, 0xa0, 0x47, 0x99, 0xaf, 0x5e,
-0x84, 0xae, 0x51, 0x27, 0xbe, 0x37, 0xee, 0x27,
-0xbc, 0x4c, 0x7a, 0x17, 0xf6, 0x49, 0x45, 0x03,
-0x39, 0xd2, 0xb6, 0xfe, 0xea, 0x68, 0x8e, 0xff,
-0xaa, 0x94, 0xb2, 0xf3, 0x38, 0x16, 0x96, 0x49,
-0xea, 0x0d, 0x81, 0x87, 0x3b, 0x27, 0x71, 0x69,
-0x68, 0xcc, 0x3a, 0x95, 0xf2, 0x5a, 0x03, 0x26,
-0x71, 0x64, 0xde, 0xef, 0x5a, 0x36, 0x23, 0x76,
-0x07, 0xd5, 0x9c, 0x1a, 0xb3, 0xbf, 0x4f, 0x9e,
-0xff, 0x1a, 0x31, 0x4e, 0x98, 0xc2, 0x57, 0x1f,
-0xa6, 0xf3, 0x16, 0xee, 0x3f, 0xa0, 0x54, 0xc1,
-0x71, 0x4a, 0x64, 0xb6, 0xf9, 0x2f, 0x1e, 0x48,
-0x91, 0xf0, 0x4e, 0x2e, 0xe4, 0x20, 0x18, 0xc5,
-0x89, 0xef, 0xd4, 0xff, 0x3a, 0xe3, 0xe2, 0xbf,
-0x60, 0x93, 0x5e, 0x63, 0x95, 0xe4, 0xce, 0x2e,
-0x0e, 0x34, 0xd7, 0xf0, 0x0e, 0x23, 0x1f, 0x6d,
-0x38, 0xa3, 0x33, 0xcd, 0x1a, 0xf3, 0x64, 0xf4,
-0x11, 0xf3, 0x39, 0x2a, 0x50, 0x1e, 0x2d, 0xc4,
-0x5f, 0x38, 0x04, 0xa7, 0x4d, 0x0e, 0xf6, 0x1a,
-0x85, 0x9b, 0x14, 0xb4, 0x78, 0xd9, 0x13, 0x06,
-0x77, 0xf1, 0x95, 0xe9, 0xc2, 0x52, 0x6e, 0x47,
-0x70, 0x93, 0xc2, 0x4b, 0x11, 0x39, 0x2d, 0x32,
-0x79, 0xfc, 0xf5, 0x36, 0xe9, 0xa2, 0x13, 0x0a,
-0x20, 0x20, 0xf6, 0x8d, 0xb8, 0xda, 0xc2, 0x7e,
-0xd4, 0xfa, 0xe8, 0xeb, 0x15, 0x86, 0x6a, 0xe7,
-0x7f, 0xc5, 0x6f, 0x59, 0x43, 0xda, 0x11, 0xed,
-0xe2, 0xe6, 0xaf, 0xf0, 0x83, 0x29, 0x11, 0x88,
-0xa8, 0xca, 0xe7, 0x08, 0xfe, 0x4b, 0xc6, 0x1f,
-0x7e, 0xcc, 0x2d, 0x68, 0x1c, 0xf6, 0x47, 0x97,
-0xf6, 0xb3, 0xa5, 0xd0, 0x08, 0xd8, 0x2d, 0x5b,
-0x12, 0x7d, 0x7a, 0xc6, 0xf2, 0x4a, 0x45, 0xc4,
-0xc6, 0x5d, 0x01, 0x3d, 0xe9, 0x67, 0x17, 0x09,
-0xa3, 0xdd, 0xae, 0x9c, 0x82, 0x8b, 0x7b, 0xeb,
-0xa8, 0x33, 0xcb, 0x8a, 0xf2, 0xf8, 0x0b, 0x6e,
-0x15, 0x43, 0xd0, 0x3c, 0x29, 0xcb, 0x3a, 0x5c,
-0x12, 0xf5, 0xb2, 0x45, 0x1e, 0xeb, 0x98, 0xde,
-0xd4, 0xef, 0xcc, 0x26, 0x08, 0xdc, 0x4b, 0xb1,
-0x07, 0x37, 0x39, 0xe4, 0xa6, 0x7e, 0x97, 0x8c,
-0x3f, 0x34, 0x6c, 0xfc, 0xe5, 0xa5, 0xda, 0xca,
-0x22, 0xa4, 0xf0, 0x18, 0xef, 0xb2, 0xc3, 0x0e,
-0xbd, 0xc2, 0x03, 0x09, 0xc3, 0x87, 0x2c, 0x9a,
-0x5d, 0xe9, 0xcc, 0x6e, 0x74, 0x7b, 0x04, 0x10,
-0xa3, 0xb0, 0x55, 0x4a, 0x05, 0x8d, 0x52, 0x6a,
-0xe1, 0xf5, 0xfc, 0xd7, 0x59, 0x78, 0x5c, 0xea,
-0x1b, 0x9f, 0x81, 0x83, 0x6c, 0x0e, 0xc9, 0x1e,
-0x36, 0xc2, 0xaf, 0x68, 0x7f, 0x97, 0x5b, 0x12,
-0xba, 0x73, 0xc0, 0x6e, 0x75, 0xe7, 0x77, 0x57,
-0x0c, 0xe0, 0xa5, 0xd7, 0xdc, 0xf8, 0x4b, 0xf6,
-0xb3, 0xda, 0x2e, 0xa5, 0xfb, 0x65, 0x6d, 0x65,
-0x52, 0xe4, 0x30, 0x7e, 0xe2, 0x6a, 0x49, 0xab,
-0xf7, 0xd8, 0x1a, 0x1d, 0xb6, 0xce, 0x49, 0xc5,
-0x08, 0x0e, 0xca, 0xf5, 0xfc, 0xd7, 0x08, 0x70,
-0xcb, 0xb0, 0x3a, 0xc4, 0x46, 0x06, 0x61, 0x5d,
-0x5b, 0xe8, 0x2b, 0xed, 0xe0, 0xcd, 0xc6, 0xa0,
-0x33, 0xee, 0xd0, 0x31, 0x2f, 0xe8, 0x1e, 0x77,
-0xfa, 0xaa, 0x19, 0xf6, 0xe6, 0x75, 0xf8, 0x6b,
-0x18, 0x4e, 0x9d, 0x89, 0x72, 0x3f, 0x71, 0x5b,
-0x87, 0x69, 0xf9, 0x22, 0x22, 0xec, 0x67, 0x19,
-0xda, 0x09, 0x6d, 0xfe, 0xcb, 0x3f, 0xa4, 0x15,
-0x68, 0x74, 0x44, 0x45, 0x21, 0x30, 0xcf, 0x54,
-0xfc, 0x75, 0x4e, 0x24, 0xef, 0x0b, 0x07, 0x6f,
-0x0c, 0xea, 0x58, 0xa0, 0x2d, 0x99, 0x55, 0x47,
-0xa5, 0x78, 0x75, 0x3e, 0xff, 0xcb, 0x45, 0x96,
-0x79, 0x45, 0xec, 0xdc, 0x6b, 0x72, 0x5e, 0xb8,
-0xf1, 0x17, 0x97, 0xb5, 0x95, 0x97, 0xda, 0x7a,
-0x71, 0x33, 0x95, 0x2a, 0x21, 0x44, 0x6f, 0x7b,
-0x95, 0x8d, 0x2d, 0x22, 0xb4, 0xf5, 0x98, 0x92,
-0x73, 0x4a, 0x1f, 0x88, 0x6b, 0x85, 0xf5, 0xbf,
-0x6c, 0xdc, 0xc4, 0x37, 0xe6, 0x0a, 0x31, 0x93,
-0xf1, 0x74, 0x70, 0x2e, 0x3b, 0x06, 0xbb, 0x72,
-0x2c, 0xd5, 0xfa, 0x50, 0x8a, 0xf2, 0xb6, 0xf2,
-0xa1, 0x89, 0xc1, 0x75, 0x68, 0x18, 0xf2, 0x7d,
-0x76, 0xd5, 0x5f, 0xc6, 0x8f, 0xeb, 0xf9, 0xe7,
-0x58, 0xda, 0xd6, 0x44, 0x91, 0xf1, 0xd4, 0x8c,
-0xa0, 0x53, 0x6d, 0xb9, 0xc6, 0xec, 0xd8, 0x21,
-0x29, 0xb6, 0xdc, 0x73, 0xee, 0x59, 0x91, 0x2a,
-0xac, 0xff, 0x25, 0x71, 0x41, 0x73, 0x52, 0x0f,
-0x2f, 0x93, 0x9c, 0x8b, 0x77, 0xad, 0x20, 0xc2,
-0xcc, 0xad, 0xdc, 0x15, 0x05, 0x07, 0x33, 0x7d,
-0xde, 0xb4, 0x28, 0xe7, 0x41, 0x2d, 0xdd, 0x90,
-0x5e, 0xae, 0xe9, 0xbe, 0xeb, 0xf1, 0x57, 0x2f,
-0x0c, 0xac, 0x89, 0xe9, 0x04, 0xbb, 0x88, 0xff,
-0xf2, 0x05, 0x1e, 0x4b, 0x56, 0x4c, 0x3b, 0x33,
-0x2f, 0xaa, 0x39, 0xfd, 0xec, 0xa3, 0x1c, 0x31,
-0x3e, 0xe0, 0xf4, 0xf3, 0x68, 0xab, 0x31, 0x2b,
-0xc0, 0xb5, 0x9a, 0xe9, 0xd7, 0xe1, 0x2f, 0xe2,
-0xbf, 0x5a, 0x3a, 0x65, 0x6d, 0x2f, 0xaa, 0xb6,
-0x2c, 0xf4, 0x0f, 0x9d, 0x68, 0x43, 0x99, 0xed,
-0x25, 0xb0, 0xb0, 0x5b, 0xf3, 0x21, 0xf9, 0xb1,
-0x5b, 0x7f, 0xde, 0xc5, 0x7f, 0x39, 0xf7, 0x2c,
-0x99, 0x45, 0x44, 0xd8, 0xab, 0xde, 0x1c, 0x3b,
-0x29, 0xd4, 0x0e, 0x1d, 0x30, 0x42, 0xa9, 0x61,
-0x52, 0x7f, 0xfe, 0xd4, 0x75, 0xfc, 0x97, 0x85,
-0x4e, 0xbb, 0x91, 0x67, 0xbb, 0x4a, 0x08, 0x6d,
-0x9d, 0x81, 0xfb, 0x9c, 0x44, 0xb0, 0x1a, 0x78,
-0x3c, 0x1d, 0xcc, 0xe6, 0xcf, 0xac, 0xec, 0x88,
-0xc4, 0x57, 0xe0, 0x3a, 0xfc, 0x55, 0x10, 0x5b,
-0x78, 0xaf, 0x14, 0x99, 0xe7, 0x46, 0x9c, 0x84,
-0xe8, 0xbd, 0xfb, 0x3d, 0x6b, 0xe3, 0x04, 0xbb,
-0x18, 0x49, 0xd3, 0xdf, 0xa2, 0x7f, 0x56, 0xe6,
-0x7f, 0xdd, 0x72, 0x23, 0xfe, 0x8b, 0xd4, 0xe6,
-0x83, 0xf4, 0x02, 0xbc, 0x2b, 0x22, 0x5a, 0x43,
-0xc4, 0x9f, 0xfe, 0xd0, 0x10, 0x24, 0x97, 0x1c,
-0xf7, 0x8d, 0xdb, 0x9c, 0x57, 0x2b, 0x05, 0x43,
-0xb0, 0xdf, 0x33, 0x77, 0x89, 0xd0, 0x9f, 0x17,
-0xcf, 0x29, 0xe0, 0xbf, 0x8e, 0x99, 0x51, 0x19,
-0x72, 0x49, 0x2d, 0xea, 0x36, 0xed, 0xf3, 0xfc,
-0x98, 0xb9, 0xcb, 0xe9, 0x9f, 0xd8, 0x83, 0x7e,
-0xc4, 0x4d, 0xec, 0x5f, 0x25, 0x58, 0xcb, 0xa9,
-0xfa, 0x0f, 0xdb, 0xf5, 0x92, 0x0a, 0xf1, 0xd7,
-0x8b, 0xce, 0x01, 0x45, 0x23, 0x05, 0x19, 0xbe,
-0x6b, 0xd8, 0x55, 0xd5, 0xc4, 0xbc, 0xa0, 0xf0,
-0xc5, 0x7e, 0xef, 0x75, 0xfa, 0x1b, 0x36, 0x6e,
-0xca, 0xe3, 0xaf, 0x2c, 0x1f, 0x68, 0xe9, 0x12,
-0x22, 0x1b, 0xde, 0x33, 0xe4, 0xf3, 0x7b, 0xff,
-0xca, 0xd0, 0x2d, 0x3d, 0x02, 0xb3, 0xf2, 0x14,
-0xb6, 0x46, 0x7a, 0xb0, 0x4e, 0x8c, 0xab, 0x1e,
-0x9b, 0x92, 0xff, 0x65, 0x47, 0x12, 0x5e, 0x16,
-0xb9, 0x5d, 0x84, 0xad, 0xf4, 0x4d, 0x45, 0x52,
-0xff, 0xd0, 0xfb, 0x04, 0xec, 0xe2, 0xf5, 0xe9,
-0x32, 0x99, 0xff, 0xa5, 0x0d, 0x23, 0x22, 0x7b,
-0xd3, 0x11, 0xeb, 0x78, 0xa2, 0x57, 0xa8, 0x26,
-0x4a, 0x98, 0xe2, 0xe6, 0xbf, 0x4e, 0x43, 0x47,
-0xab, 0xcd, 0x7a, 0x88, 0xc8, 0x6a, 0x48, 0x84,
-0x19, 0xe7, 0x62, 0x65, 0xa3, 0x75, 0x6c, 0x6d,
-0x58, 0xf3, 0xf7, 0xf9, 0x1d, 0x45, 0x7a, 0xdc,
-0xe3, 0x06, 0xc2, 0x59, 0xf4, 0x52, 0x58, 0x21,
-0xff, 0x45, 0x9a, 0x0f, 0xb8, 0xeb, 0x55, 0x0c,
-0xab, 0xeb, 0x9a, 0xdf, 0x96, 0x11, 0xe3, 0xcb,
-0x8a, 0x66, 0x48, 0x20, 0x66, 0xa3, 0x2d, 0x53,
-0xbb, 0x27, 0xe1, 0x17, 0x44, 0x18, 0x85, 0xde,
-0xd1, 0x3d, 0xa3, 0xc5, 0x0f, 0xe1, 0xfe, 0x25,
-0xe6, 0xa9, 0xab, 0xfe, 0xf2, 0xdb, 0xac, 0xbf,
-0xed, 0xf6, 0xff, 0xf0, 0x13, 0xb7, 0x25, 0xf4,
-0x0f, 0x67, 0x6a, 0x0d, 0x22, 0xdb, 0x4b, 0xc5,
-0x4b, 0xde, 0x4f, 0xdb, 0x16, 0x1b, 0x81, 0xd0,
-0xd2, 0xd9, 0xf0, 0xe7, 0x8e, 0xfe, 0xc6, 0x2b,
-0xe8, 0x98, 0x55, 0x4f, 0x2a, 0x3e, 0xb9, 0x7f,
-0xb9, 0xf4, 0x37, 0xb2, 0xa4, 0x33, 0xf9, 0xba,
-0x90, 0x31, 0x17, 0x27, 0xc9, 0x14, 0x06, 0xe0,
-0x8e, 0x5e, 0x83, 0x92, 0xd4, 0xd2, 0xbc, 0xf8,
-0xb9, 0x58, 0x60, 0x4b, 0xaf, 0xd7, 0x9f, 0x1f,
-0x2b, 0xbf, 0xa0, 0x9f, 0x4c, 0x75, 0x89, 0x22,
-0x5f, 0xde, 0xd3, 0x74, 0x62, 0x3f, 0x80, 0xb0,
-0x6b, 0x84, 0x44, 0x0e, 0x7b, 0x84, 0x7f, 0x18,
-0x33, 0xfc, 0xd8, 0xc2, 0x3e, 0x49, 0xd8, 0xc9,
-0x2c, 0x76, 0xfd, 0xe5, 0x33, 0x39, 0xfe, 0x0b,
-0xfb, 0x50, 0xfc, 0xe4, 0x91, 0x65, 0x8f, 0x46,
-0x82, 0x43, 0x3e, 0xc4, 0x4d, 0xfc, 0x97, 0x14,
-0x7f, 0x68, 0x32, 0x83, 0x6f, 0x48, 0x55, 0x5b,
-0xd3, 0x1e, 0x12, 0xd9, 0xca, 0xe1, 0xbd, 0xea,
-0xbd, 0x24, 0x57, 0x98, 0x6e, 0xa4, 0x9b, 0x4f,
-0xa1, 0x13, 0x58, 0x6b, 0x52, 0xfd, 0x65, 0xb0,
-0x57, 0x44, 0xd7, 0x39, 0x64, 0xfb, 0x17, 0x2a,
-0x48, 0x87, 0xea, 0xa4, 0x94, 0xf7, 0x07, 0x36,
-0xcb, 0xfb, 0x0c, 0x79, 0x20, 0x32, 0xb2, 0x31,
-0xec, 0x47, 0x9c, 0x4b, 0xb2, 0x87, 0x79, 0x9d,
-0x93, 0x7e, 0xf5, 0x06, 0xfa, 0xf3, 0xcc, 0x52,
-0x69, 0x94, 0xd1, 0xab, 0x7c, 0x95, 0x06, 0x77,
-0x50, 0x54, 0xb4, 0x4c, 0x9a, 0x42, 0x7f, 0x9e,
-0xee, 0xf1, 0x83, 0x6a, 0x30, 0x3f, 0xdb, 0xed,
-0xe8, 0x6f, 0xf4, 0x40, 0xb8, 0x0d, 0xf7, 0x2f,
-0x3b, 0x8e, 0xc8, 0xc5, 0x7f, 0x8d, 0xb0, 0x13,
-0x7c, 0x81, 0xb5, 0x39, 0xb3, 0x94, 0x1c, 0xfb,
-0x9a, 0x41, 0xdc, 0xa4, 0xe6, 0xc0, 0xfb, 0x3a,
-0x29, 0x9b, 0x89, 0x7e, 0x9e, 0x9d, 0xd9, 0xbc,
-0x59, 0x23, 0x59, 0xec, 0x1a, 0x27, 0xe0, 0x13,
-0x7d, 0xb6, 0x51, 0xe5, 0x03, 0x67, 0x5f, 0xce,
-0x9f, 0xd3, 0x7a, 0x2f, 0xdb, 0x5c, 0x24, 0x17,
-0x1a, 0x6e, 0x7b, 0xb4, 0xf7, 0xf8, 0xb8, 0x95,
-0x1b, 0xaf, 0xc6, 0x35, 0x01, 0xa8, 0x74, 0xd2,
-0x5b, 0xec, 0xe7, 0xa0, 0x61, 0xf3, 0x56, 0x2e,
-0xfc, 0x25, 0x6a, 0xfe, 0x4a, 0x20, 0x76, 0x9a,
-0xea, 0x96, 0xae, 0x53, 0xea, 0xcd, 0x5f, 0xf0,
-0x7c, 0xb4, 0xa1, 0xd7, 0xff, 0xb4, 0xe2, 0xb7,
-0x83, 0x15, 0x19, 0x25, 0xb9, 0x2f, 0x58, 0xed,
-0x1f, 0x2d, 0x87, 0x2f, 0xe5, 0xf0, 0xd7, 0x0f,
-0x1d, 0xfe, 0xe2, 0xb0, 0x65, 0x6b, 0x62, 0x08,
-0x27, 0x70, 0xaf, 0x2f, 0x04, 0x1b, 0x07, 0xf3,
-0x51, 0x82, 0xba, 0xfa, 0x34, 0x22, 0xa9, 0xb7,
-0x1c, 0xff, 0xb0, 0x27, 0x15, 0x8c, 0xa2, 0xff,
-0x6c, 0x5c, 0xc7, 0x7f, 0x65, 0x29, 0xf9, 0x28,
-0xc7, 0x6d, 0x91, 0xfe, 0xa1, 0xd0, 0x01, 0xce,
-0x3d, 0x67, 0x50, 0x6d, 0xc7, 0xe7, 0x3c, 0x97,
-0xd7, 0xe8, 0x30, 0xc8, 0x05, 0x35, 0xe4, 0xfc,
-0x42, 0xfc, 0xe5, 0x92, 0x49, 0xf1, 0x86, 0x4f,
-0x76, 0xda, 0x7e, 0x26, 0x11, 0x61, 0xc0, 0xda,
-0x8c, 0xb4, 0x0c, 0x4d, 0xec, 0x5e, 0xb6, 0xf6,
-0x4c, 0x08, 0xfd, 0xcc, 0xd2, 0x27, 0x55, 0x79,
-0x33, 0x4f, 0x49, 0x17, 0xd4, 0x9e, 0xef, 0x02,
-0x7f, 0x99, 0x72, 0x5e, 0x98, 0x63, 0xd0, 0x74,
-0x5c, 0x74, 0xf8, 0x09, 0xd2, 0x0f, 0x47, 0xef,
-0x4b, 0x44, 0x1f, 0x69, 0x5d, 0x02, 0x4a, 0xc7,
-0x6e, 0xf6, 0x73, 0x8d, 0x64, 0xc3, 0x69, 0xee,
-0x50, 0x4b, 0x6b, 0x97, 0x89, 0xfe, 0x33, 0x14,
-0xc9, 0x78, 0x2d, 0xc4, 0x5f, 0xbf, 0x0b, 0x89,
-0xee, 0x1d, 0xe5, 0xe8, 0x1f, 0xba, 0xb0, 0x95,
-0xa5, 0x8c, 0x19, 0xe3, 0xa6, 0x5d, 0x9f, 0xe8,
-0x9a, 0x2c, 0x85, 0x33, 0xe9, 0x04, 0x53, 0x7d,
-0x64, 0x5c, 0xaf, 0x3f, 0x9f, 0xc3, 0x5f, 0xd7,
-0x0c, 0x1c, 0xa6, 0x0b, 0x4a, 0xa3, 0x71, 0x4d,
-0x6d, 0x3a, 0x7e, 0xfa, 0xc2, 0xae, 0x46, 0xcf,
-0x44, 0xae, 0x82, 0x76, 0xa8, 0xe9, 0xb8, 0x4c,
-0xd3, 0x03, 0x8a, 0xf8, 0x65, 0x57, 0xe1, 0x8a,
-0xe7, 0x26, 0x63, 0xd5, 0x20, 0xb8, 0xea, 0x7f,
-0x4d, 0x08, 0x48, 0xa5, 0xfc, 0x0c, 0x5e, 0xc2,
-0xcf, 0x04, 0x26, 0xd9, 0x4b, 0x68, 0xd4, 0x8e,
-0x6a, 0x93, 0xec, 0xe7, 0xf0, 0x49, 0xbc, 0x72,
-0xf4, 0x96, 0x49, 0x76, 0xcd, 0xf3, 0x92, 0xd5,
-0x34, 0xaa, 0x5d, 0x61, 0xd7, 0x48, 0x08, 0xd1,
-0xd6, 0xdf, 0x48, 0xa0, 0xb1, 0xa3, 0xa0, 0xfe,
-0x97, 0xe8, 0xe7, 0xbb, 0x4f, 0x7a, 0xbb, 0x75,
-0x3f, 0x1d, 0x6b, 0xf8, 0x9d, 0x0c, 0xa3, 0xc7,
-0x11, 0x02, 0xa7, 0x07, 0xb5, 0x85, 0x64, 0x40,
-0x4e, 0x0b, 0xc5, 0x8e, 0x10, 0xd8, 0x4f, 0x13,
-0x44, 0xbf, 0xbe, 0xfe, 0x57, 0x33, 0x19, 0x73,
-0x7b, 0x97, 0x4b, 0x03, 0x91, 0x6f, 0xc6, 0xdc,
-0xe7, 0x08, 0xb9, 0x88, 0x71, 0xef, 0x95, 0xd2,
-0xeb, 0x4e, 0x8d, 0xef, 0x9e, 0x8e, 0xf9, 0xf8,
-0x7d, 0x82, 0x91, 0xc2, 0xfc, 0xaf, 0x12, 0xfb,
-0x68, 0xc8, 0xea, 0xcc, 0x54, 0xa2, 0x93, 0xcc,
-0xc8, 0xa3, 0x46, 0xe3, 0x08, 0x8b, 0x5a, 0x4a,
-0xa6, 0x72, 0x9f, 0x4a, 0x67, 0x20, 0x5b, 0x32,
-0x7f, 0xeb, 0x0a, 0xa8, 0x9e, 0xe0, 0x0d, 0xd9,
-0x55, 0x3b, 0xca, 0x5d, 0xf5, 0x97, 0x3f, 0x91,
-0x43, 0x60, 0x03, 0xb1, 0x75, 0xce, 0x78, 0x65,
-0xda, 0xa4, 0x10, 0xbd, 0xac, 0x42, 0xee, 0xbd,
-0x45, 0x76, 0xf8, 0x41, 0x68, 0xea, 0x15, 0xc6,
-0x05, 0x52, 0x44, 0x34, 0x92, 0x37, 0xd4, 0x3f,
-0x64, 0x39, 0x3d, 0x46, 0x01, 0xb2, 0xd6, 0x8a,
-0x3a, 0x11, 0x5b, 0x32, 0x41, 0x92, 0xd1, 0xab,
-0xc1, 0xa5, 0xa0, 0x92, 0x14, 0x1e, 0x9c, 0xef,
-0x13, 0x6f, 0xc8, 0x9e, 0xe4, 0x8a, 0xab, 0xfe,
-0xd7, 0x87, 0xf6, 0xab, 0xae, 0xfe, 0x0b, 0x1d,
-0xa7, 0x8f, 0xca, 0x73, 0xf5, 0x5e, 0x5c, 0xac,
-0x1a, 0x61, 0x0b, 0x19, 0x76, 0xcb, 0x70, 0xc9,
-0x28, 0x3b, 0x8a, 0xfd, 0x53, 0x97, 0x4b, 0x16,
-0xb3, 0xd4, 0x9f, 0xb8, 0xf0, 0x97, 0x5e, 0xe9,
-0x96, 0x34, 0xd4, 0x72, 0xfb, 0x17, 0x1a, 0xde,
-0xe7, 0x3c, 0xc4, 0x02, 0x3b, 0xfa, 0x87, 0x54,
-0xa2, 0x77, 0xbf, 0x9e, 0x1b, 0x2f, 0x63, 0x23,
-0x7a, 0x20, 0x0d, 0xf9, 0xfc, 0xaf, 0x67, 0x9c,
-0xbc, 0xa4, 0xef, 0xf3, 0xea, 0x11, 0x61, 0x2c,
-0xe2, 0xd5, 0xe7, 0x3a, 0xbf, 0xdd, 0xf7, 0x23,
-0xc1, 0xc2, 0x24, 0x1d, 0xd9, 0xc3, 0xe2, 0x3b,
-0x45, 0x8e, 0xd8, 0x1c, 0x89, 0x0b, 0x0e, 0x74,
-0xec, 0xce, 0xaa, 0x7f, 0x8d, 0xdf, 0x59, 0x7c,
-0x1f, 0xc2, 0x5f, 0xff, 0x61, 0xe7, 0x7f, 0xc9,
-0xda, 0xca, 0xb7, 0x2b, 0x27, 0x4d, 0x44, 0x5b,
-0x64, 0x8c, 0xb4, 0xec, 0xc6, 0x55, 0x7d, 0xc3,
-0x9d, 0xb8, 0x62, 0x5f, 0xd4, 0x1b, 0x87, 0x1f,
-0x8f, 0xe0, 0xfa, 0x73, 0x71, 0xdb, 0xba, 0x01,
-0x71, 0xf3, 0x79, 0xa8, 0xb7, 0x56, 0xe6, 0xf9,
-0xaf, 0xcf, 0x51, 0x6c, 0x61, 0x93, 0xb5, 0x94,
-0xba, 0xee, 0x77, 0x4b, 0x28, 0xb6, 0x70, 0xe9,
-0x15, 0xa9, 0x3f, 0x7f, 0x5e, 0xf9, 0x86, 0x71,
-0xad, 0x15, 0x07, 0xee, 0x0f, 0xca, 0x15, 0x5a,
-0x0f, 0x5f, 0xa7, 0x31, 0xf5, 0x7c, 0xea, 0xb5,
-0x83, 0xc0, 0xc7, 0xa8, 0x2a, 0x44, 0x2a, 0x97,
-0xff, 0xe5, 0x71, 0xf3, 0x5f, 0xe6, 0x23, 0x03,
-0xfe, 0x2e, 0x12, 0xde, 0x31, 0x62, 0x03, 0x81,
-0x28, 0x95, 0xc9, 0x36, 0x1f, 0x18, 0x08, 0x1c,
-0x50, 0x7e, 0x4a, 0x2d, 0x83, 0x81, 0xc3, 0x4a,
-0x38, 0xbf, 0x33, 0xa2, 0xff, 0x93, 0x5d, 0x99,
-0xf2, 0xcc, 0x9f, 0xa2, 0x7f, 0x68, 0x07, 0xb7,
-0xbf, 0xe6, 0x7b, 0x30, 0x71, 0xd6, 0x73, 0xb0,
-0x65, 0xf1, 0x6b, 0xda, 0x83, 0xc9, 0x2f, 0xf3,
-0x83, 0xf7, 0xdd, 0x71, 0x3c, 0x20, 0x4a, 0xa2,
-0xcc, 0xab, 0x1e, 0x08, 0x3c, 0xb0, 0x9b, 0xb4,
-0x79, 0xed, 0x9b, 0x0f, 0xc0, 0x4e, 0x4b, 0x35,
-0x3f, 0xeb, 0xd2, 0x9f, 0xcf, 0xc9, 0x1e, 0x1e,
-0x4c, 0x85, 0xdf, 0xef, 0x78, 0x88, 0xbd, 0x6d,
-0x22, 0xaa, 0x1d, 0xd6, 0x1e, 0x0a, 0x8a, 0x12,
-0x6c, 0x43, 0x9d, 0xdf, 0xa6, 0x96, 0x54, 0xf5,
-0x90, 0x76, 0x27, 0x9b, 0x6d, 0xe5, 0x92, 0xf2,
-0xf6, 0xf3, 0x9d, 0x59, 0x55, 0x2d, 0x35, 0xae,
-0xc3, 0x5f, 0xb9, 0x1a, 0xe8, 0x8e, 0x48, 0x54,
-0x91, 0x1f, 0x16, 0xe0, 0x5f, 0xf2, 0x45, 0xe0,
-0xa4, 0xba, 0x00, 0xfc, 0x96, 0xd0, 0xf8, 0xcd,
-0x6b, 0x99, 0x42, 0xfc, 0x92, 0x5a, 0x54, 0x53,
-0x76, 0x03, 0xfc, 0x25, 0xc2, 0x0e, 0xf3, 0xda,
-0x86, 0x3e, 0x42, 0x5b, 0x0c, 0xbd, 0x26, 0xcf,
-0x30, 0x3c, 0x84, 0x6e, 0x99, 0xd0, 0x48, 0xbc,
-0xe0, 0xdc, 0x7c, 0x15, 0x16, 0xa4, 0xfc, 0x43,
-0x4a, 0x34, 0xc7, 0x7f, 0xe5, 0xe2, 0x9a, 0xd4,
-0x31, 0x7c, 0x1b, 0x02, 0x20, 0xf0, 0x17, 0xf9,
-0x75, 0x85, 0x2a, 0x6a, 0x8f, 0xd0, 0xb9, 0xba,
-0xe5, 0x6a, 0x59, 0x12, 0xf3, 0x14, 0xd6, 0xff,
-0x1a, 0xcf, 0x6b, 0xe5, 0x3d, 0xe2, 0xa4, 0x11,
-0x35, 0x52, 0x6c, 0xe1, 0x32, 0xc4, 0xb9, 0x79,
-0x0f, 0x7f, 0xb5, 0x9f, 0xb4, 0xb8, 0x8f, 0x79,
-0xec, 0xfc, 0xaf, 0xf3, 0x6a, 0xc3, 0x03, 0x81,
-0x9b, 0xdc, 0xf8, 0x6b, 0x3c, 0x0f, 0x85, 0xee,
-0x17, 0x75, 0xc4, 0x04, 0xc8, 0x5a, 0xf3, 0x23,
-0xe5, 0x27, 0x20, 0x64, 0xc3, 0x73, 0xe5, 0x92,
-0x29, 0x7f, 0xf9, 0x5f, 0x73, 0x71, 0x83, 0x54,
-0xcd, 0x61, 0xfb, 0x0d, 0xf9, 0xaf, 0x43, 0x1e,
-0xe2, 0x38, 0x9a, 0x25, 0xc8, 0x22, 0x65, 0x06,
-0xf3, 0xa9, 0x82, 0x68, 0xc3, 0xad, 0xe4, 0x87,
-0x73, 0xe7, 0xe6, 0xd6, 0xf9, 0xcd, 0x5a, 0xca,
-0xad, 0x3f, 0xbf, 0x33, 0x27, 0xb5, 0x67, 0x84,
-0x5b, 0x8a, 0xcb, 0xd8, 0xb2, 0xb6, 0x36, 0x83,
-0xb4, 0xe5, 0xcb, 0xda, 0xad, 0xad, 0x91, 0x50,
-0xcb, 0x2d, 0x65, 0x14, 0x6d, 0x58, 0x11, 0x6e,
-0xf1, 0x91, 0xb1, 0xd3, 0xa8, 0x72, 0x6e, 0x46,
-0x10, 0x51, 0xe6, 0xf3, 0xe5, 0xf1, 0x17, 0x61,
-0x10, 0xbb, 0x33, 0x6b, 0x9c, 0xa2, 0x09, 0x42,
-0xad, 0x6e, 0x1e, 0x0c, 0x9a, 0xd1, 0x1c, 0xab,
-0x28, 0xf5, 0xeb, 0x06, 0xf2, 0x3d, 0x2f, 0x42,
-0xcb, 0xae, 0x8b, 0x3f, 0xf4, 0x08, 0xc1, 0xc9,
-0x3f, 0x0d, 0xc8, 0xb4, 0xaf, 0xd8, 0xb2, 0x2d,
-0x5b, 0xa7, 0xef, 0x19, 0x7c, 0x3f, 0x12, 0x5b,
-0x86, 0x2d, 0xab, 0xcd, 0xf1, 0x32, 0x61, 0x0c,
-0x99, 0x57, 0x6e, 0xb2, 0xfb, 0xf9, 0x8a, 0xbe,
-0x98, 0xea, 0x2f, 0xff, 0xde, 0xc9, 0xff, 0x2a,
-0x90, 0xda, 0x6b, 0x70, 0x62, 0x0b, 0x63, 0x66,
-0x69, 0x2b, 0xe2, 0xaf, 0xbf, 0xce, 0x8f, 0xd7,
-0xad, 0x84, 0xbf, 0xaa, 0xec, 0x88, 0xc4, 0xa5,
-0xa4, 0x5a, 0xff, 0x5f, 0xe8, 0x2c, 0xe5, 0x6b,
-0xd7, 0xc7, 0x1f, 0x42, 0x8f, 0x27, 0x08, 0xab,
-0x48, 0xff, 0xf0, 0x8c, 0xc8, 0xff, 0x52, 0x4c,
-0x2f, 0xa9, 0xcd, 0xbb, 0x10, 0x99, 0x5d, 0x88,
-0x59, 0x93, 0xdc, 0x5f, 0xf0, 0xfa, 0xfa, 0xcb,
-0x0e, 0xec, 0x0a, 0x49, 0x63, 0x2b, 0x1a, 0x22,
-0xfe, 0x70, 0xab, 0x8d, 0xc8, 0x44, 0x2e, 0x1e,
-0x7a, 0x05, 0x82, 0x1a, 0xb3, 0x6f, 0xe6, 0xab,
-0xe3, 0x2b, 0x66, 0xb2, 0xbb, 0x6f, 0xa8, 0x7f,
-0x68, 0x8f, 0xf2, 0xe7, 0x3c, 0x41, 0x13, 0x7d,
-0x92, 0xd5, 0xf8, 0x02, 0xf8, 0xf2, 0xaf, 0x56,
-0xb1, 0xc8, 0x0d, 0xd4, 0x09, 0xa3, 0x51, 0x8b,
-0xf7, 0x3d, 0xba, 0xe4, 0xae, 0xbf, 0xec, 0xee,
-0x9f, 0x2d, 0xa9, 0xca, 0x21, 0x78, 0x83, 0x35,
-0x98, 0x4f, 0xe8, 0x95, 0x55, 0x2a, 0x9d, 0x27,
-0x6c, 0xb1, 0xa9, 0x5e, 0x73, 0x73, 0xaa, 0xb2,
-0xca, 0x9b, 0x2f, 0x16, 0x66, 0xd6, 0x99, 0xa7,
-0xb7, 0x2b, 0x6b, 0x6e, 0x94, 0xff, 0x25, 0x45,
-0xcb, 0xfb, 0x9d, 0x8a, 0x60, 0x32, 0xc5, 0xec,
-0xd6, 0x02, 0xd9, 0xc3, 0xf3, 0xdc, 0x29, 0x16,
-0xa6, 0x36, 0x7c, 0x6d, 0x8a, 0xfe, 0x46, 0x0e,
-0x92, 0x3b, 0xc6, 0x30, 0xe0, 0x96, 0xd3, 0x96,
-0x8c, 0x1b, 0x16, 0xee, 0x2b, 0x9d, 0xb6, 0x90,
-0xaf, 0xf3, 0xfe, 0xd0, 0x6b, 0x23, 0x14, 0x35,
-0x5f, 0x80, 0xcd, 0x3c, 0x99, 0x98, 0xca, 0x7f,
-0xd9, 0x29, 0x5d, 0xa5, 0xb9, 0xdc, 0xae, 0x21,
-0x76, 0x27, 0x22, 0xe8, 0xf9, 0x7c, 0x45, 0x3a,
-0x48, 0x2d, 0x46, 0x5a, 0x8d, 0xb3, 0xe1, 0xa2,
-0x4d, 0x4e, 0xfe, 0xd7, 0x8b, 0x56, 0x65, 0x4a,
-0x1d, 0x46, 0x7f, 0xcc, 0x9c, 0x82, 0xbf, 0x5c,
-0xeb, 0x98, 0xa8, 0xa3, 0xa1, 0x16, 0xfd, 0x1d,
-0xe4, 0xbc, 0x6e, 0xaa, 0xfd, 0x4a, 0xd0, 0xcc,
-0x93, 0xcc, 0xb5, 0xe8, 0x46, 0x36, 0xd4, 0xc8,
-0x36, 0x5d, 0x17, 0x7f, 0x28, 0x53, 0x8d, 0x7c,
-0xb6, 0xd1, 0xab, 0x99, 0x45, 0x9f, 0x41, 0x14,
-0x30, 0xcf, 0xbe, 0xc4, 0xe7, 0x34, 0xab, 0xad,
-0x08, 0x2b, 0x36, 0xe4, 0xf5, 0x91, 0x2a, 0x46,
-0xd5, 0x48, 0xa2, 0x40, 0x7f, 0xc3, 0x25, 0x69,
-0x58, 0x4a, 0xc6, 0xef, 0xf9, 0xe2, 0x73, 0xab,
-0x5a, 0x96, 0xfe, 0x0d, 0xfb, 0x64, 0xe0, 0x4e,
-0x47, 0x6d, 0xe3, 0x0e, 0x8a, 0x3e, 0x7a, 0xdb,
-0xfb, 0x8b, 0xf6, 0x5c, 0xfe, 0x97, 0xc8, 0x11,
-0x7b, 0xf6, 0x46, 0xfa, 0x87, 0x52, 0xba, 0x4d,
-0xe2, 0x2f, 0x8d, 0x97, 0x0f, 0xc3, 0x5b, 0x66,
-0x4e, 0x3d, 0xaf, 0x7e, 0x89, 0x70, 0x41, 0xcf,
-0xe7, 0x6f, 0xae, 0xb7, 0xb6, 0xa4, 0x2b, 0xf3,
-0xf9, 0x5f, 0xe6, 0x94, 0xfa, 0x5f, 0xe5, 0x57,
-0xbd, 0xd7, 0xda, 0x9a, 0xce, 0x05, 0x86, 0x95,
-0x3f, 0xb6, 0x7f, 0xc2, 0x03, 0x43, 0x7e, 0xaa,
-0xc8, 0x7c, 0x3a, 0xd5, 0xb4, 0xac, 0x68, 0x3d,
-0x1a, 0x57, 0x52, 0x0b, 0x1c, 0xb2, 0xac, 0x32,
-0xbb, 0x6a, 0xcc, 0xd3, 0xea, 0xaa, 0xff, 0xb5,
-0xb3, 0xda, 0x52, 0x64, 0xfd, 0xaf, 0x99, 0x43,
-0xf4, 0xdb, 0xa9, 0x4e, 0x4d, 0xbf, 0xb6, 0x44,
-0xf9, 0x2d, 0xd5, 0xff, 0xa2, 0x9e, 0x47, 0xb8,
-0xc4, 0xeb, 0x57, 0x63, 0xd7, 0xe1, 0x66, 0x17,
-0xa9, 0xc8, 0x3a, 0xe7, 0x87, 0xf7, 0x68, 0x0f,
-0x38, 0xfc, 0x97, 0x0e, 0x4f, 0x7b, 0x0f, 0x1a,
-0xdf, 0xb8, 0xbe, 0xfe, 0x17, 0x05, 0xe4, 0xb7,
-0x13, 0xec, 0xea, 0x15, 0xc2, 0x95, 0xdf, 0xa7,
-0x3a, 0x50, 0xad, 0xf8, 0xc0, 0xe7, 0x3d, 0x4e,
-0x9e, 0x9d, 0xb9, 0xb3, 0xaf, 0xf3, 0xc1, 0xa2,
-0x65, 0x6e, 0xfd, 0xc3, 0xdc, 0xb8, 0x93, 0x4f,
-0xd2, 0xec, 0xe0, 0x6e, 0xd6, 0x5f, 0x4c, 0x86,
-0x42, 0xcf, 0xb1, 0x5f, 0x89, 0xcd, 0xb2, 0x58,
-0xb3, 0xbc, 0x39, 0x4e, 0x4a, 0x2c, 0x33, 0xaf,
-0xab, 0xff, 0x55, 0xa0, 0x5b, 0x38, 0x9b, 0x74,
-0x33, 0xf6, 0x88, 0xaa, 0xa0, 0x25, 0x22, 0xce,
-0xd3, 0x83, 0x53, 0x06, 0x84, 0x06, 0x72, 0x97,
-0xe3, 0x0c, 0x44, 0x87, 0x56, 0xf5, 0x68, 0xb6,
-0xfe, 0xfc, 0xf6, 0x82, 0xfc, 0x2f, 0xb0, 0x0f,
-0x6c, 0x2f, 0x92, 0x83, 0xd7, 0x8e, 0xcf, 0xf9,
-0x50, 0x8c, 0xe0, 0xf4, 0x7d, 0xf0, 0xa1, 0x57,
-0x2c, 0x71, 0xee, 0xfc, 0x2f, 0x33, 0x96, 0x0a,
-0x1c, 0x55, 0xde, 0xcd, 0xd7, 0x5f, 0x76, 0xf0,
-0x97, 0xfa, 0xa9, 0x10, 0xd3, 0x16, 0xfa, 0xf3,
-0x68, 0x0c, 0x28, 0xeb, 0xe1, 0x1a, 0xfb, 0xa6,
-0xc8, 0xff, 0xf2, 0xfe, 0x92, 0xe1, 0xfb, 0x63,
-0x29, 0x8d, 0xde, 0xf3, 0xbc, 0x52, 0xfa, 0x2d,
-0x17, 0x8d, 0x05, 0xa4, 0x1a, 0xed, 0xe8, 0x1f,
-0x82, 0x53, 0xff, 0x4b, 0xd9, 0xa7, 0x1f, 0xb1,
-0x73, 0xd6, 0xd0, 0xb9, 0x0d, 0x5a, 0x25, 0x9b,
-0xd9, 0xb3, 0xb0, 0x02, 0xfe, 0x91, 0x4e, 0xec,
-0xf7, 0x21, 0xec, 0x9a, 0x1f, 0x2f, 0xf9, 0x51,
-0xe5, 0x5a, 0x38, 0x94, 0x72, 0x3c, 0x6a, 0x1e,
-0x4c, 0xe1, 0x7a, 0x18, 0xbf, 0x41, 0xfd, 0x2f,
-0xf4, 0xc3, 0xa5, 0x0e, 0x39, 0x19, 0x2b, 0x12,
-0xbe, 0xfb, 0xa0, 0x9b, 0x05, 0xad, 0x9b, 0x6d,
-0x8a, 0xad, 0x65, 0x63, 0x87, 0x50, 0x56, 0xb4,
-0xf3, 0xc8, 0x0e, 0x9b, 0xbb, 0x2c, 0xed, 0x80,
-0xab, 0xfe, 0x97, 0x47, 0xd6, 0x05, 0x2e, 0xda,
-0xec, 0x41, 0x37, 0x63, 0x50, 0x25, 0x7a, 0x7a,
-0x37, 0xc4, 0xfb, 0x6f, 0x06, 0x1f, 0x37, 0x76,
-0xd3, 0xe8, 0x2c, 0xc4, 0xe9, 0xf9, 0xa4, 0x4f,
-0x25, 0x69, 0xa9, 0x95, 0x24, 0x8f, 0x23, 0x84,
-0x38, 0xbc, 0x14, 0x2c, 0x84, 0x46, 0x73, 0x2e,
-0xff, 0x4b, 0x7e, 0x1f, 0x04, 0x59, 0xed, 0x47,
-0xbc, 0x75, 0x6f, 0xc8, 0x2f, 0xd6, 0x8a, 0xce,
-0x2d, 0x57, 0xd6, 0xf0, 0x97, 0x60, 0x97, 0x9c,
-0x29, 0x27, 0x8c, 0xba, 0xe6, 0x12, 0xae, 0x84,
-0xbd, 0xe3, 0xe6, 0x61, 0xcb, 0xd6, 0x54, 0x21,
-0x47, 0x5a, 0x73, 0xeb, 0x1f, 0xa2, 0x37, 0x38,
-0xfd, 0x80, 0xa8, 0xff, 0x55, 0x27, 0xf3, 0xbf,
-0xbe, 0x6b, 0x34, 0x0d, 0x94, 0x98, 0xe8, 0x9c,
-0x9c, 0x56, 0xed, 0xf8, 0xc3, 0xef, 0x88, 0x4a,
-0x28, 0x95, 0x54, 0x88, 0xb9, 0xae, 0x20, 0xff,
-0x6b, 0x6f, 0x1e, 0x7f, 0x5d, 0x91, 0x92, 0x1a,
-0xa3, 0x74, 0x88, 0x01, 0xc2, 0xb8, 0x02, 0x95,
-0xe8, 0x37, 0x95, 0x47, 0xd0, 0xcb, 0x6d, 0x52,
-0x15, 0x4e, 0x72, 0x7c, 0x10, 0x3d, 0x5e, 0x92,
-0xab, 0xff, 0x75, 0x77, 0x32, 0x46, 0xa9, 0x61,
-0x56, 0x5e, 0xff, 0x50, 0xd4, 0xff, 0x82, 0xba,
-0xb4, 0x4a, 0xf8, 0xeb, 0x08, 0xd1, 0x28, 0x3d,
-0x62, 0x3d, 0xdc, 0x65, 0xa8, 0x9c, 0xfd, 0x84,
-0xbc, 0x02, 0xab, 0x9a, 0x18, 0xb1, 0x1e, 0x6b,
-0x7e, 0xc5, 0x0a, 0x2e, 0xf3, 0x80, 0xbc, 0x2d,
-0x7b, 0x58, 0x0d, 0xfa, 0x63, 0x41, 0x2b, 0xd4,
-0xa1, 0xb8, 0xf4, 0x37, 0xba, 0x28, 0x5b, 0x39,
-0x52, 0x66, 0x11, 0xe0, 0x5d, 0x22, 0xea, 0x32,
-0xe0, 0xcb, 0xcf, 0x07, 0x28, 0x2c, 0x61, 0xab,
-0x37, 0xdc, 0x7f, 0xdb, 0xed, 0x65, 0x96, 0x37,
-0xb3, 0x4c, 0x94, 0x5d, 0xe6, 0x26, 0xbf, 0x89,
-0x62, 0x41, 0xa8, 0x08, 0x91, 0x8c, 0x9f, 0x77,
-0xf1, 0x5f, 0x87, 0xcc, 0xb9, 0x1d, 0x21, 0x2a,
-0xc9, 0x7d, 0x44, 0x86, 0xa4, 0x7e, 0x10, 0x3a,
-0xcc, 0x77, 0xa5, 0xd5, 0xc7, 0x48, 0x77, 0x45,
-0x86, 0xb6, 0xc6, 0x49, 0xd1, 0x45, 0x14, 0x76,
-0xc1, 0x67, 0xa8, 0xa4, 0x60, 0x10, 0x86, 0x1e,
-0x95, 0xbe, 0x0f, 0xcb, 0xe4, 0xf9, 0xaf, 0xb1,
-0x54, 0xd7, 0x6b, 0x7e, 0x91, 0xff, 0x45, 0x21,
-0x10, 0x14, 0x88, 0x38, 0x9e, 0x8e, 0x76, 0x61,
-0x4b, 0x92, 0xbf, 0x85, 0xae, 0xfe, 0x96, 0x8c,
-0xe7, 0x63, 0x3e, 0xa1, 0x47, 0xd3, 0x81, 0x1e,
-0x5c, 0xe0, 0x4f, 0xf0, 0xa8, 0x15, 0xde, 0x86,
-0xc0, 0x79, 0x8c, 0x72, 0xfa, 0x36, 0x33, 0x57,
-0xfe, 0xd7, 0x15, 0xde, 0x94, 0xa6, 0x9e, 0x27,
-0x92, 0xab, 0x25, 0x30, 0x5a, 0x39, 0x1c, 0xba,
-0x0a, 0x8b, 0xf9, 0x96, 0xf5, 0xda, 0x25, 0x7e,
-0xa5, 0xac, 0x09, 0x34, 0x4b, 0xb9, 0x08, 0x97,
-0xa0, 0xa9, 0x35, 0xd0, 0xaf, 0x3d, 0xec, 0xb9,
-0xb4, 0xa3, 0x49, 0x0d, 0x50, 0xfd, 0xaf, 0xc9,
-0xf4, 0x4b, 0x7d, 0xb8, 0x49, 0xb9, 0xf0, 0xd7,
-0x18, 0x44, 0xf0, 0x4d, 0x98, 0xfe, 0x3e, 0x3b,
-0xa1, 0x47, 0x4d, 0xf1, 0xc5, 0x7a, 0x4d, 0x51,
-0xcb, 0x2f, 0xcb, 0x4f, 0x40, 0xd4, 0x28, 0xe1,
-0xe5, 0xe7, 0xd4, 0x0e, 0xa8, 0x8b, 0xfb, 0xa7,
-0xe3, 0x6b, 0x33, 0xa0, 0x47, 0x29, 0x6c, 0x63,
-0x1f, 0x5c, 0x34, 0xeb, 0x07, 0xc3, 0xdb, 0x35,
-0x57, 0xfc, 0xe1, 0xa1, 0xbb, 0x85, 0xc8, 0xc6,
-0x88, 0xde, 0x69, 0x05, 0xff, 0x2b, 0x85, 0xec,
-0xc2, 0xa6, 0xc1, 0x3a, 0xae, 0xfd, 0x3c, 0x91,
-0x55, 0x37, 0xca, 0xc4, 0xf3, 0x38, 0x76, 0xcb,
-0x3f, 0x9a, 0x25, 0x9b, 0x9b, 0x47, 0xac, 0x0e,
-0x2b, 0x68, 0xa8, 0x9b, 0x95, 0xb5, 0x02, 0xba,
-0x56, 0xff, 0x73, 0xc2, 0xc5, 0x7f, 0x1d, 0x91,
-0x4b, 0x93, 0x05, 0xc9, 0x6c, 0xc8, 0x98, 0x29,
-0x73, 0xbb, 0xf6, 0x99, 0x2b, 0xd4, 0xe6, 0x93,
-0x9e, 0x36, 0x7c, 0xf9, 0x8b, 0x29, 0x70, 0x94,
-0x93, 0x4c, 0x8a, 0x4a, 0xba, 0x34, 0x66, 0xa8,
-0x4c, 0x85, 0x3f, 0xf3, 0x93, 0x40, 0x68, 0xaa,
-0x45, 0x85, 0xfa, 0xbc, 0xfe, 0xfc, 0xfe, 0x6d,
-0x42, 0xea, 0xe1, 0x37, 0x94, 0xad, 0x9c, 0x9e,
-0xb9, 0x3e, 0xf8, 0x1a, 0x3c, 0xfe, 0x83, 0x1f,
-0x93, 0x2e, 0xfa, 0x29, 0x78, 0x9c, 0x1b, 0xc4,
-0xcb, 0xac, 0xa4, 0x4b, 0xbc, 0x98, 0x72, 0x97,
-0x36, 0x20, 0x52, 0x50, 0xc7, 0x8a, 0xbe, 0xc2,
-0x0f, 0x66, 0x8c, 0x1f, 0x17, 0xb7, 0x38, 0xe7,
-0x87, 0x22, 0xfe, 0x90, 0xfa, 0x27, 0xc2, 0x7a,
-0xe1, 0x04, 0xd4, 0xaf, 0x09, 0x47, 0x94, 0xfe,
-0xe6, 0x5e, 0x68, 0x5c, 0x16, 0x88, 0xb2, 0x01,
-0xa3, 0x2d, 0x13, 0xb1, 0x4a, 0xea, 0x11, 0x91,
-0xbd, 0x0c, 0x55, 0x7b, 0xfc, 0x0b, 0xd1, 0x0f,
-0x4f, 0x5a, 0x3d, 0xaf, 0xf9, 0xf5, 0xe4, 0x13,
-0x70, 0x31, 0x55, 0xdf, 0x1a, 0x9e, 0xe1, 0x8e,
-0x3f, 0xbc, 0x22, 0x67, 0xca, 0x28, 0x4d, 0x99,
-0x76, 0xc1, 0x7f, 0xd9, 0xb9, 0x78, 0xa3, 0xf0,
-0x3f, 0xa6, 0xc9, 0x25, 0x8e, 0x0b, 0x45, 0xc4,
-0xf3, 0x95, 0x94, 0xff, 0x85, 0x78, 0xf9, 0x8d,
-0xf2, 0x49, 0x47, 0xb5, 0xc3, 0xa5, 0x7f, 0x88,
-0x2e, 0x0d, 0x4d, 0x6a, 0x91, 0x10, 0xcd, 0x79,
-0xa6, 0x62, 0x88, 0x40, 0xb1, 0x39, 0x9d, 0x2b,
-0x55, 0xec, 0x04, 0x22, 0x1c, 0x3f, 0x95, 0x5d,
-0xb6, 0xfd, 0xd5, 0x7c, 0xfd, 0x2f, 0xd2, 0x64,
-0xe6, 0xe1, 0x82, 0xfa, 0x5f, 0xb4, 0x05, 0xb4,
-0xd0, 0xb9, 0x9f, 0xad, 0x76, 0xd8, 0x8a, 0x7b,
-0xc1, 0x4e, 0x13, 0xf7, 0x1d, 0xef, 0xff, 0xd7,
-0xde, 0xdf, 0x87, 0xc7, 0x51, 0x5c, 0x69, 0xc3,
-0x78, 0xf5, 0x87, 0xe4, 0xd6, 0xf4, 0x48, 0xd3,
-0xfa, 0x80, 0x15, 0xe0, 0x98, 0xd6, 0x48, 0x36,
-0x83, 0x33, 0x92, 0xc6, 0x23, 0x63, 0x8c, 0x2c,
-0x8f, 0xda, 0x92, 0x70, 0x06, 0xec, 0xc4, 0x0a,
-0x61, 0x13, 0xef, 0x2e, 0x4f, 0x9e, 0xb1, 0xe3,
-0xdd, 0xf5, 0xe6, 0x75, 0x76, 0x05, 0xcb, 0xb5,
-0xeb, 0x90, 0xbc, 0xa4, 0x34, 0x12, 0x58, 0xb6,
-0x0c, 0x1e, 0x1b, 0x67, 0x63, 0x12, 0x27, 0xcf,
-0xd8, 0x38, 0xc1, 0x04, 0x36, 0x19, 0xc9, 0x06,
-0xcb, 0x1f, 0xd8, 0x2d, 0x23, 0x88, 0xfc, 0x81,
-0x2d, 0x58, 0x6f, 0x62, 0x12, 0x2f, 0x8c, 0x89,
-0x20, 0x02, 0x0c, 0xc8, 0xe0, 0x10, 0xc9, 0x9f,
-0xef, 0x39, 0x55, 0xdd, 0x3d, 0x3d, 0x92, 0x08,
-0xfb, 0x64, 0xf7, 0x79, 0x7f, 0xef, 0xf5, 0xbb,
-0x18, 0xfe, 0xe0, 0x5c, 0x55, 0xa5, 0xf6, 0x4c,
-0x55, 0x77, 0xd7, 0xb9, 0xeb, 0x9c, 0x73, 0xdf,
-0xb0, 0x9b, 0x57, 0x93, 0x7c, 0x02, 0xdb, 0xd6,
-0xf7, 0x78, 0x97, 0x57, 0xa9, 0x06, 0xd8, 0xe5,
-0x09, 0x79, 0x26, 0x93, 0x9d, 0xb2, 0x4e, 0x3d,
-0x86, 0x58, 0x94, 0xc1, 0x5f, 0x4f, 0xd3, 0xb2,
-0xf4, 0x1a, 0x2e, 0x5d, 0x1d, 0x4c, 0xdb, 0x1a,
-0xd6, 0xba, 0x34, 0x5b, 0xfc, 0xbe, 0xf6, 0x5d,
-0x5a, 0xa9, 0x93, 0x68, 0xee, 0x14, 0xab, 0xcb,
-0x3f, 0x45, 0x9e, 0x84, 0xb2, 0x5f, 0x8b, 0xc5,
-0x29, 0xf2, 0x0e, 0xfa, 0xe3, 0xb4, 0x52, 0x0a,
-0xa0, 0xca, 0xc1, 0x5f, 0xbb, 0x8b, 0xf4, 0x34,
-0xec, 0x4d, 0x07, 0xe9, 0x0e, 0x4c, 0x39, 0x08,
-0x89, 0xf3, 0xc8, 0xde, 0x04, 0x09, 0xe5, 0x3d,
-0x2b, 0xc6, 0x49, 0x2b, 0xad, 0x9c, 0x9d, 0xf7,
-0x05, 0x91, 0x61, 0xc6, 0x01, 0xa5, 0xc5, 0xf3,
-0x19, 0xe5, 0x71, 0xf0, 0x37, 0x3c, 0xcd, 0xf0,
-0x9c, 0xee, 0xd5, 0x2a, 0x06, 0xa7, 0xcf, 0x8c,
-0xbb, 0xf5, 0xbf, 0x68, 0x4d, 0xb2, 0x20, 0x29,
-0x8d, 0xea, 0x7b, 0x48, 0x7d, 0x9c, 0xc5, 0xbf,
-0xa0, 0x65, 0xbb, 0xef, 0x8c, 0xba, 0x87, 0xfe,
-0x9a, 0x46, 0x7a, 0xbc, 0x3f, 0xb5, 0xa8, 0xe9,
-0xa1, 0x6b, 0x7a, 0xc5, 0x61, 0xb2, 0x07, 0x0d,
-0x14, 0x0b, 0xdb, 0x45, 0x95, 0x6c, 0xfd, 0xaf,
-0x58, 0x9d, 0x9c, 0xc3, 0xa8, 0xd2, 0x78, 0xb4,
-0x2b, 0x16, 0x60, 0xb5, 0x5d, 0xed, 0xe0, 0x3f,
-0x0f, 0x69, 0xf5, 0x64, 0x11, 0xca, 0x7e, 0x9d,
-0x20, 0x73, 0xb9, 0xc4, 0xfc, 0x39, 0xf2, 0x19,
-0xcd, 0x67, 0xa0, 0xa7, 0xa7, 0xcc, 0x1e, 0xcb,
-0x3f, 0x4f, 0x6c, 0x92, 0x79, 0x70, 0x80, 0xb9,
-0x61, 0xde, 0xd3, 0xe0, 0x4b, 0xb4, 0x4d, 0x23,
-0x6f, 0x91, 0x3a, 0x63, 0xb2, 0xc5, 0xf0, 0xd0,
-0xb0, 0x70, 0x53, 0xb9, 0x9c, 0x3c, 0xa4, 0x87,
-0x97, 0x79, 0x37, 0x96, 0x63, 0x29, 0x0d, 0xfc,
-0x55, 0x36, 0xff, 0x21, 0xdd, 0x6a, 0x04, 0x2c,
-0x70, 0xd4, 0x6c, 0x19, 0x5b, 0x0d, 0xf5, 0x5f,
-0x3c, 0x15, 0x89, 0xd5, 0x62, 0x15, 0xf2, 0x42,
-0xb0, 0x03, 0xc0, 0x98, 0xf2, 0x43, 0x71, 0x2a,
-0x79, 0xc5, 0xf0, 0x63, 0x5a, 0x2f, 0x2b, 0xe0,
-0x5a, 0x1a, 0xc8, 0xd2, 0xff, 0x42, 0x44, 0xa6,
-0x30, 0x6a, 0x3b, 0x83, 0x49, 0x3b, 0x31, 0xfa,
-0x3b, 0xc6, 0xc8, 0x61, 0x30, 0x20, 0x86, 0xf9,
-0x87, 0x3f, 0x24, 0xe5, 0x4d, 0x79, 0xcd, 0xf1,
-0x9b, 0xc8, 0x43, 0x46, 0x79, 0x03, 0xd3, 0x11,
-0x63, 0x14, 0x79, 0xeb, 0xdd, 0xf8, 0x0b, 0x3c,
-0x46, 0x2b, 0xd5, 0x4d, 0x0b, 0xf6, 0xdd, 0xa8,
-0x89, 0x47, 0x8d, 0x1d, 0xac, 0x10, 0x8c, 0xb1,
-0xf0, 0x55, 0x7e, 0xc1, 0x83, 0xfa, 0x5f, 0xdf,
-0x0d, 0x6c, 0xb9, 0xfd, 0xc6, 0x3b, 0x0e, 0x96,
-0x74, 0xa3, 0x11, 0xb8, 0x63, 0x0d, 0xfc, 0x95,
-0x9e, 0xbe, 0x5d, 0x29, 0x8a, 0x5b, 0xe7, 0x87,
-0x16, 0xff, 0xa1, 0x67, 0x2d, 0x86, 0xbd, 0x46,
-0x8c, 0xc8, 0xb5, 0xf9, 0x58, 0x08, 0x36, 0xb2,
-0xdc, 0xef, 0x59, 0xf4, 0x60, 0x9b, 0xbe, 0x15,
-0xd5, 0x9a, 0xa2, 0x28, 0xfb, 0x75, 0x52, 0x0f,
-0x2b, 0x9f, 0x17, 0x99, 0xec, 0x72, 0x58, 0x51,
-0x0e, 0xe2, 0x1d, 0xde, 0x1c, 0x56, 0xbc, 0xc8,
-0x7f, 0xa8, 0xd9, 0xf8, 0xeb, 0x92, 0x5e, 0x8f,
-0xa2, 0xbd, 0xe7, 0x0a, 0x77, 0xeb, 0xf5, 0xd1,
-0x82, 0x84, 0x80, 0x85, 0x60, 0x3c, 0xfe, 0x05,
-0x8f, 0x5e, 0xd5, 0x6d, 0x8b, 0xd0, 0x7b, 0xc7,
-0x70, 0x95, 0xb8, 0xa1, 0xf5, 0x4c, 0x72, 0x34,
-0x10, 0xb9, 0xdd, 0xf7, 0x72, 0x2b, 0xe2, 0x2f,
-0xae, 0xbf, 0x3c, 0xc9, 0x89, 0x7f, 0x5d, 0xb2,
-0x4b, 0xf0, 0xfe, 0x6f, 0xa1, 0x1e, 0x55, 0x0b,
-0x2f, 0x92, 0x17, 0x61, 0xf7, 0x5e, 0x37, 0x20,
-0xed, 0x84, 0x15, 0xac, 0xe6, 0x5d, 0xbc, 0xda,
-0xab, 0x11, 0x63, 0x64, 0x35, 0x46, 0xb0, 0x99,
-0x01, 0xb1, 0x9a, 0x79, 0xc1, 0x6c, 0xfe, 0xc3,
-0x0c, 0xdb, 0x21, 0xe6, 0x16, 0xfa, 0x59, 0x6d,
-0x17, 0x65, 0xfa, 0x5f, 0x3d, 0x76, 0xb6, 0xe1,
-0x76, 0x00, 0x62, 0x96, 0x34, 0x18, 0x32, 0x22,
-0x02, 0x10, 0xdb, 0x93, 0xc5, 0x7f, 0xc8, 0xf0,
-0x17, 0x4d, 0x22, 0xda, 0xea, 0xd3, 0x38, 0xdb,
-0xbc, 0x9f, 0xd5, 0xba, 0x22, 0x23, 0xc7, 0x83,
-0x08, 0xcd, 0xb0, 0x3c, 0xa1, 0x49, 0xb1, 0xaa,
-0xbd, 0x00, 0x9a, 0x09, 0xac, 0xf2, 0x0e, 0x81,
-0x58, 0xd2, 0x54, 0x4a, 0x45, 0xd1, 0x85, 0xbf,
-0x60, 0xdd, 0x3d, 0x5c, 0x36, 0x2e, 0xd7, 0xd6,
-0x5f, 0x66, 0xfa, 0x20, 0x15, 0xe4, 0x16, 0x52,
-0x15, 0x85, 0x55, 0x7e, 0x83, 0x3c, 0x61, 0x4c,
-0xff, 0x22, 0x76, 0xd1, 0x47, 0x0d, 0xff, 0x9d,
-0xca, 0x46, 0x0f, 0xac, 0xbb, 0xee, 0x4f, 0x2b,
-0x9b, 0xb2, 0xf1, 0x97, 0x13, 0x04, 0xe4, 0xb9,
-0x85, 0xda, 0x21, 0x52, 0xdb, 0xe2, 0xdb, 0x2c,
-0x3d, 0x8e, 0xc8, 0xb7, 0xe5, 0x61, 0x9b, 0xba,
-0xe4, 0xa9, 0x1f, 0x49, 0x6f, 0x88, 0x80, 0xc8,
-0x62, 0xc1, 0x47, 0x55, 0xbc, 0x9f, 0xbb, 0x17,
-0x7b, 0x91, 0xff, 0x50, 0x77, 0xe3, 0x2f, 0xa4,
-0x46, 0xd4, 0x46, 0x09, 0xd7, 0x5f, 0x16, 0xcf,
-0x7a, 0x23, 0xcd, 0x8c, 0x41, 0x05, 0xc3, 0x5e,
-0xea, 0x7a, 0xe9, 0x05, 0x63, 0x34, 0x19, 0x59,
-0x8e, 0x78, 0x99, 0xbc, 0x95, 0x8c, 0x2c, 0xe1,
-0x62, 0x61, 0x00, 0xc4, 0xd6, 0x69, 0xd2, 0x61,
-0xfe, 0xde, 0x60, 0xf8, 0x4b, 0x0f, 0x59, 0x64,
-0xa4, 0x42, 0xa4, 0x04, 0x6e, 0xa4, 0xd3, 0x3a,
-0xe3, 0x9f, 0x97, 0x55, 0x3f, 0x93, 0x2d, 0x08,
-0x72, 0x68, 0x06, 0xaf, 0xc1, 0xb8, 0x5a, 0xa6,
-0xf7, 0x2b, 0x61, 0x31, 0x48, 0xdb, 0x90, 0x91,
-0xbe, 0x5b, 0xf1, 0xb5, 0xba, 0xf3, 0x0f, 0xf7,
-0x1b, 0x3f, 0xa5, 0x84, 0x41, 0xaa, 0x8e, 0xea,
-0x76, 0x25, 0xe9, 0x1f, 0xd1, 0xf6, 0x0b, 0x98,
-0x6d, 0x28, 0xce, 0xc6, 0xb0, 0xd7, 0x46, 0x2b,
-0xdb, 0x50, 0x7f, 0x0c, 0xd0, 0xd6, 0x1c, 0xf9,
-0x61, 0xa5, 0xbc, 0x43, 0x79, 0x1b, 0xc5, 0xc2,
-0x92, 0xe5, 0xeb, 0x3b, 0x31, 0xff, 0x90, 0xd8,
-0xf8, 0x6b, 0xbb, 0xa1, 0x9b, 0x02, 0xea, 0x2f,
-0xa7, 0x3a, 0x56, 0x68, 0xe0, 0xbd, 0x9f, 0x26,
-0x29, 0x03, 0xd6, 0x42, 0x89, 0x13, 0x74, 0xbf,
-0x9b, 0xed, 0x93, 0x25, 0xc3, 0x33, 0x13, 0xdc,
-0x95, 0x4e, 0xc3, 0x3f, 0xac, 0xec, 0xc4, 0xf7,
-0x18, 0x1e, 0xd8, 0x86, 0xdd, 0xf5, 0x5f, 0x3b,
-0xc9, 0x8d, 0xf0, 0xee, 0xf5, 0xe3, 0x91, 0x57,
-0xa5, 0x91, 0x07, 0x2f, 0x6a, 0xe5, 0x26, 0xcc,
-0x36, 0xbc, 0x53, 0x2c, 0x64, 0x61, 0xaf, 0xdb,
-0x39, 0xda, 0x42, 0x22, 0x8e, 0xb8, 0xa6, 0xb7,
-0x8a, 0x84, 0x2a, 0x5c, 0x4c, 0x84, 0x01, 0x84,
-0xfe, 0x0c, 0xfe, 0x4a, 0xd3, 0x10, 0xa7, 0x9d,
-0x3f, 0x47, 0xeb, 0x90, 0xed, 0xf0, 0x65, 0xd2,
-0x82, 0xd8, 0x4a, 0x51, 0x8b, 0x00, 0x64, 0xd5,
-0xc5, 0x0a, 0x38, 0xda, 0x7a, 0x34, 0x5d, 0x35,
-0xa4, 0x46, 0xc4, 0x5f, 0xd0, 0xae, 0x98, 0x77,
-0xb1, 0x3a, 0x05, 0x10, 0x19, 0x23, 0x42, 0x3c,
-0x9c, 0xc1, 0x5f, 0xa3, 0x80, 0x35, 0x99, 0x7b,
-0x09, 0xb3, 0x3a, 0xef, 0x0b, 0x2c, 0x10, 0x06,
-0x2d, 0x0c, 0xf0, 0xc2, 0x4e, 0x34, 0xcf, 0x61,
-0xcf, 0xcb, 0x4f, 0x16, 0xb3, 0x88, 0x18, 0x61,
-0x8e, 0xfd, 0xf9, 0x2c, 0xfe, 0x0d, 0x8c, 0x7f,
-0x8d, 0xd0, 0x9a, 0xf4, 0xda, 0x11, 0xe9, 0x3d,
-0xe5, 0x28, 0x8d, 0x54, 0x78, 0x47, 0xa5, 0x8f,
-0xc4, 0xa3, 0xf1, 0xf2, 0xd3, 0x8b, 0xfa, 0x1b,
-0xfd, 0x0c, 0x9a, 0x79, 0x46, 0xd5, 0x08, 0x39,
-0x42, 0x23, 0x83, 0xeb, 0x4e, 0x72, 0xfd, 0xaf,
-0xb4, 0x3c, 0xa4, 0x56, 0x19, 0x17, 0x00, 0x88,
-0x81, 0x33, 0xe9, 0xca, 0x3f, 0xdc, 0x99, 0xde,
-0x82, 0x99, 0x18, 0xaf, 0xc6, 0x1f, 0x20, 0x95,
-0x7a, 0xa0, 0x45, 0x3c, 0x4b, 0x1e, 0x20, 0x4f,
-0xf4, 0xab, 0xa6, 0x58, 0x04, 0x2f, 0x22, 0xe4,
-0x8d, 0x8f, 0x4f, 0x26, 0xab, 0x92, 0x95, 0x43,
-0x0b, 0x9a, 0xe3, 0x09, 0xda, 0xaa, 0xdc, 0xb8,
-0x15, 0x80, 0x73, 0x01, 0xbc, 0xe5, 0xcb, 0x11,
-0xcc, 0xba, 0xf2, 0x0f, 0x53, 0x7a, 0x39, 0x93,
-0x5f, 0xa1, 0xed, 0x4c, 0xbe, 0x99, 0x0c, 0xc4,
-0x28, 0x6c, 0x76, 0xb0, 0x0f, 0x4e, 0xa6, 0x5c,
-0x02, 0xdb, 0x3f, 0x59, 0x7f, 0x5c, 0xaf, 0x04,
-0x64, 0xe7, 0x81, 0x17, 0x32, 0xd1, 0xa3, 0x0a,
-0x76, 0x3d, 0x0d, 0xab, 0x73, 0x63, 0x16, 0xff,
-0x61, 0x8f, 0x5e, 0x81, 0x49, 0x1a, 0x2f, 0xc2,
-0x63, 0x1e, 0x14, 0xf3, 0xb0, 0x80, 0x9d, 0x15,
-0xa7, 0x13, 0x91, 0xe8, 0x3b, 0x68, 0xc5, 0x70,
-0x5e, 0x9d, 0xe8, 0xe5, 0x48, 0x5c, 0x8e, 0x77,
-0xfa, 0xa9, 0x19, 0x18, 0x56, 0x82, 0xcc, 0xcf,
-0x0c, 0xa4, 0xc1, 0xd5, 0x77, 0xe1, 0xaf, 0x91,
-0x68, 0x18, 0xb3, 0xd7, 0x30, 0xec, 0x15, 0xd9,
-0xc0, 0xfc, 0xb1, 0xc3, 0x4a, 0xf7, 0x80, 0x2f,
-0x89, 0xfc, 0xc6, 0x4a, 0x24, 0x0c, 0xf3, 0x5c,
-0x4d, 0xde, 0x39, 0x19, 0x59, 0x0c, 0x28, 0xa9,
-0x52, 0x3f, 0x3c, 0x0f, 0xdc, 0xc2, 0x67, 0x3c,
-0xb8, 0xbf, 0xef, 0x49, 0xe7, 0xed, 0x94, 0x5c,
-0xfc, 0x87, 0x23, 0xc6, 0x6c, 0x56, 0x95, 0x80,
-0x65, 0x5f, 0x09, 0x44, 0x01, 0xf4, 0x83, 0x28,
-0x5b, 0x8b, 0xd7, 0xd1, 0x8d, 0x2f, 0x2d, 0x00,
-0xc8, 0x20, 0xfe, 0x15, 0xb9, 0x1f, 0x0f, 0x6c,
-0xd9, 0x01, 0x57, 0x62, 0x11, 0x46, 0x6a, 0x46,
-0xc8, 0xd5, 0x7d, 0x05, 0x3d, 0xd9, 0xf5, 0x5f,
-0x35, 0x07, 0x83, 0x98, 0x8a, 0x73, 0x99, 0x73,
-0x6b, 0x9c, 0x24, 0xc7, 0xa0, 0xc5, 0x17, 0x03,
-0xfc, 0x75, 0x1c, 0xb6, 0x3f, 0x6f, 0x48, 0x0a,
-0xea, 0x57, 0xe4, 0x6a, 0x73, 0xd1, 0x76, 0xa9,
-0x4e, 0x39, 0xa6, 0xd4, 0x2c, 0xf5, 0xbe, 0x24,
-0xd5, 0x11, 0x58, 0x2f, 0x70, 0x45, 0xda, 0xdc,
-0xfa, 0xcb, 0xe6, 0x56, 0xce, 0x7f, 0xb8, 0xa7,
-0xdf, 0x3f, 0xa4, 0x62, 0x21, 0x58, 0x87, 0x09,
-0x38, 0xe5, 0x29, 0x51, 0xa4, 0x9d, 0xa4, 0xca,
-0x6f, 0xf3, 0x16, 0x62, 0x26, 0x46, 0x99, 0xb2,
-0x26, 0xe1, 0x0f, 0x05, 0xe4, 0x02, 0x26, 0xb6,
-0x3b, 0xac, 0xec, 0x13, 0xd3, 0x56, 0xfc, 0x4b,
-0x66, 0xe2, 0xbf, 0xd6, 0x75, 0xa8, 0x3f, 0xf9,
-0x03, 0x74, 0xc8, 0xc1, 0xe1, 0x34, 0x3b, 0x7b,
-0xfc, 0xcb, 0xe8, 0x0f, 0x48, 0x55, 0x5a, 0xb1,
-0x09, 0xed, 0x55, 0xad, 0xc8, 0x47, 0xb6, 0x2a,
-0xfa, 0x0b, 0x79, 0xc9, 0x78, 0x90, 0xa4, 0x14,
-0x78, 0x8f, 0xf5, 0xc4, 0xd3, 0x82, 0x8d, 0xbf,
-0x60, 0xdd, 0x79, 0x78, 0x9a, 0x76, 0x89, 0xba,
-0xf7, 0x3a, 0x1e, 0xff, 0xaa, 0xc0, 0xbf, 0xd2,
-0xf5, 0x47, 0x34, 0x40, 0x0a, 0x33, 0x1a, 0x18,
-0x5f, 0x65, 0x3f, 0x38, 0x9c, 0x72, 0x51, 0x6b,
-0x61, 0x52, 0x84, 0xbd, 0x12, 0xfe, 0x4a, 0xd9,
-0x8a, 0x75, 0x49, 0x07, 0xf9, 0xdd, 0x43, 0xf2,
-0x56, 0xc0, 0xa2, 0x20, 0xed, 0x86, 0x88, 0xb7,
-0x7a, 0x37, 0x65, 0x85, 0x60, 0x87, 0x11, 0x5b,
-0x25, 0xa5, 0x15, 0x14, 0xcb, 0x21, 0x31, 0x11,
-0x11, 0xcf, 0xc3, 0x8f, 0x41, 0x8b, 0x4e, 0x86,
-0xe0, 0x45, 0x04, 0x9e, 0x55, 0xd0, 0x18, 0xd5,
-0x99, 0xb3, 0x6d, 0x4a, 0x4e, 0xfc, 0x0b, 0xbc,
-0x77, 0x9c, 0x5e, 0xa6, 0xff, 0xe5, 0x55, 0x87,
-0xb1, 0xba, 0x01, 0x43, 0x4f, 0xe8, 0x5d, 0xbc,
-0x8f, 0x1b, 0xd9, 0x07, 0x9c, 0x76, 0xde, 0x9c,
-0x64, 0xf2, 0x02, 0x2e, 0x52, 0x60, 0x0a, 0x17,
-0x0d, 0x56, 0x1c, 0x91, 0xc9, 0x3f, 0x94, 0x39,
-0xff, 0xe1, 0xa2, 0x9e, 0xe2, 0xf7, 0xe4, 0x2b,
-0xa4, 0xa0, 0xdf, 0x22, 0x54, 0xe4, 0xc9, 0x54,
-0xed, 0x57, 0xca, 0x6a, 0xfa, 0x8f, 0x62, 0xcb,
-0x85, 0xf2, 0x5a, 0x3b, 0xc4, 0x16, 0xe6, 0xfc,
-0x87, 0x97, 0xc1, 0xed, 0xca, 0xd4, 0x7f, 0xd1,
-0x4c, 0xfe, 0xe1, 0x7b, 0xe4, 0xc0, 0x40, 0xf5,
-0x39, 0x75, 0x54, 0xbc, 0x82, 0xfc, 0xdd, 0xc3,
-0x9d, 0xe7, 0xc4, 0xcb, 0xc6, 0x81, 0x8d, 0x9f,
-0x1d, 0x7c, 0x88, 0xb5, 0x24, 0xaa, 0x07, 0x31,
-0xfe, 0x65, 0x20, 0x3d, 0x32, 0xcb, 0x48, 0xdc,
-0xc3, 0x52, 0x13, 0x1b, 0x6c, 0xfd, 0x2f, 0xd9,
-0x7d, 0x2e, 0xc1, 0xa5, 0x82, 0x5e, 0xc4, 0xcc,
-0x4f, 0x0c, 0x7b, 0x1d, 0xcd, 0xdb, 0x41, 0x62,
-0x6c, 0x09, 0x0c, 0x3e, 0xa6, 0x08, 0x35, 0x3b,
-0x02, 0x3c, 0xc3, 0xad, 0x8b, 0x31, 0xbf, 0x8d,
-0xd3, 0xff, 0x1a, 0xab, 0x5d, 0xd5, 0x6b, 0x01,
-0xf0, 0xe9, 0x88, 0xbf, 0xdc, 0x5d, 0xc6, 0xf4,
-0x98, 0x7d, 0x93, 0xe8, 0x4a, 0x2a, 0x3e, 0x26,
-0xff, 0x70, 0x9c, 0x2e, 0x03, 0x0b, 0x3c, 0xc9,
-0x17, 0x04, 0x5c, 0x4a, 0x56, 0x5d, 0x65, 0x95,
-0x43, 0x9e, 0xd7, 0xf6, 0x58, 0xfc, 0x87, 0x66,
-0x38, 0xe0, 0xdd, 0x26, 0x0d, 0xb8, 0xf8, 0x37,
-0x64, 0x4b, 0xf6, 0x0b, 0xa7, 0x97, 0x9d, 0x6f,
-0xb8, 0x14, 0xc1, 0xe6, 0x66, 0xa1, 0x63, 0xa4,
-0xa6, 0xbf, 0xc9, 0x60, 0xfc, 0x87, 0x97, 0xd1,
-0x63, 0xfc, 0x58, 0xfd, 0xaf, 0x5e, 0x1f, 0xa7,
-0x6d, 0xb1, 0x14, 0xca, 0x3e, 0x74, 0x55, 0x0f,
-0xf1, 0x23, 0x8b, 0x0f, 0x48, 0x77, 0x29, 0x1b,
-0x03, 0x77, 0x9d, 0x0e, 0x2f, 0xd8, 0x8d, 0x0e,
-0xfe, 0xd2, 0x9c, 0xdf, 0x7e, 0x80, 0xc7, 0xbf,
-0xf6, 0x91, 0x9f, 0x93, 0xea, 0xde, 0xbc, 0x73,
-0x62, 0x9d, 0x72, 0x40, 0xae, 0x1e, 0x51, 0x86,
-0xed, 0x4a, 0x13, 0x34, 0x60, 0x5a, 0x5a, 0x98,
-0xf4, 0x43, 0x77, 0xd4, 0x2f, 0xa8, 0xbb, 0x27,
-0xc8, 0x3f, 0x74, 0x16, 0xce, 0x2b, 0xb7, 0x61,
-0xd8, 0x6b, 0x66, 0x9c, 0x75, 0xf5, 0x2b, 0x59,
-0xa1, 0xb1, 0x2e, 0x9d, 0xa6, 0x19, 0x71, 0x4a,
-0x8a, 0x02, 0x82, 0x0e, 0x88, 0x7b, 0xb2, 0xf5,
-0xbf, 0x78, 0xaa, 0x5b, 0xa2, 0xf2, 0x2d, 0x00,
-0x62, 0x3f, 0x62, 0x11, 0xb1, 0x3c, 0xae, 0x54,
-0x15, 0x34, 0x19, 0x53, 0x3a, 0xcb, 0x18, 0x67,
-0x1c, 0x89, 0x9b, 0xb6, 0x0c, 0xc1, 0x17, 0x9b,
-0x42, 0xf6, 0x91, 0xb2, 0x90, 0x3a, 0x02, 0x5f,
-0x8c, 0x7d, 0x1f, 0x8b, 0xff, 0xb0, 0xcf, 0x37,
-0x1b, 0x53, 0x0a, 0x51, 0xdb, 0x6b, 0x86, 0xe4,
-0x25, 0xcf, 0x11, 0x84, 0xc9, 0xd2, 0x17, 0xfa,
-0x90, 0xe4, 0xd0, 0x1b, 0xc6, 0xd0, 0x58, 0x12,
-0x65, 0xbf, 0x00, 0x88, 0x8d, 0x16, 0xb5, 0xbc,
-0xed, 0xeb, 0x82, 0x31, 0x23, 0x5a, 0x88, 0xf8,
-0xb4, 0xb6, 0x0d, 0xe3, 0xf5, 0xbf, 0x8c, 0x2b,
-0x18, 0xb0, 0x1e, 0xfe, 0x1a, 0x46, 0xbb, 0x22,
-0x03, 0xf9, 0xe7, 0xe0, 0x89, 0xbb, 0x22, 0xd5,
-0x9f, 0x84, 0xd7, 0xe0, 0x25, 0xe3, 0x4a, 0x73,
-0x64, 0xc0, 0xf7, 0x7b, 0x58, 0xa6, 0x4b, 0xda,
-0x15, 0x94, 0x4a, 0xbc, 0x48, 0x46, 0xca, 0x10,
-0x91, 0x8d, 0xd3, 0xff, 0x62, 0x8b, 0x92, 0xa8,
-0x3d, 0xec, 0xdb, 0x55, 0x7c, 0xa6, 0xe9, 0xc2,
-0xf4, 0x70, 0x9f, 0x6f, 0xb7, 0x1a, 0xc4, 0x82,
-0x97, 0xbe, 0x02, 0x56, 0xf9, 0xb2, 0x01, 0x5a,
-0xba, 0x98, 0x26, 0x85, 0xa5, 0xe0, 0x86, 0x88,
-0x2c, 0x3f, 0xe0, 0xc6, 0x5f, 0xbf, 0xcb, 0xc4,
-0xbf, 0xca, 0x06, 0xd4, 0x7b, 0xe2, 0xa7, 0x3a,
-0x0e, 0x18, 0x79, 0xfd, 0xea, 0x07, 0xb8, 0xef,
-0x84, 0x2a, 0x59, 0xde, 0x05, 0xdd, 0xa1, 0x73,
-0xba, 0x27, 0x73, 0x07, 0x29, 0x37, 0x58, 0xc6,
-0xcb, 0x4e, 0xa1, 0x12, 0x8d, 0x31, 0xf1, 0x2f,
-0x4e, 0xef, 0xef, 0x14, 0x82, 0x31, 0x92, 0x79,
-0x80, 0x5d, 0xdf, 0x63, 0xa1, 0x31, 0x03, 0xc7,
-0x30, 0x7a, 0x93, 0x57, 0x8d, 0xef, 0xd9, 0xf5,
-0x5f, 0x3b, 0x3b, 0x82, 0xb1, 0xbc, 0xc5, 0x6e,
-0xfd, 0xe5, 0xc7, 0xb2, 0xcf, 0x0f, 0xf9, 0xd9,
-0x20, 0x8f, 0x7f, 0x59, 0x29, 0xc4, 0x70, 0x03,
-0x88, 0xb6, 0x12, 0x9c, 0xa6, 0xf3, 0xba, 0x09,
-0x54, 0x04, 0x53, 0x66, 0x36, 0x8c, 0x8b, 0x7f,
-0x89, 0x96, 0xec, 0x97, 0x9d, 0x5b, 0x88, 0xd1,
-0x2e, 0xe5, 0xd7, 0xa4, 0x2e, 0xab, 0x65, 0x48,
-0xb8, 0x4c, 0xeb, 0x93, 0x2c, 0x23, 0xf1, 0xb2,
-0x56, 0x4f, 0xf3, 0x4f, 0xab, 0x73, 0x6c, 0xfc,
-0x95, 0x74, 0x07, 0xb9, 0xea, 0x6c, 0x83, 0x71,
-0x6b, 0x30, 0x44, 0xa6, 0x15, 0xd0, 0x49, 0xd8,
-0xb2, 0x92, 0xb5, 0x08, 0x23, 0xca, 0x94, 0x12,
-0x3b, 0x52, 0x33, 0xe3, 0xe3, 0xea, 0xbf, 0x6c,
-0xf5, 0xa8, 0x2e, 0x58, 0x14, 0x94, 0x97, 0x15,
-0x90, 0xa6, 0x20, 0x3f, 0x51, 0xc3, 0xa1, 0xd9,
-0x42, 0x3e, 0xa6, 0x02, 0xc6, 0x60, 0xbe, 0x16,
-0xad, 0x8b, 0xe6, 0x6f, 0xce, 0xe8, 0x7f, 0x65,
-0xe9, 0x76, 0x55, 0xd9, 0xb5, 0x5d, 0x7e, 0x24,
-0xe2, 0xc0, 0x20, 0x45, 0xed, 0x9d, 0xcc, 0xa3,
-0x7e, 0xcb, 0xdd, 0xc5, 0x33, 0xca, 0xbe, 0x58,
-0xd5, 0xac, 0xfc, 0xe8, 0x63, 0xf4, 0xbf, 0x9c,
-0xda, 0xae, 0x69, 0xc6, 0x75, 0x36, 0xfd, 0x78,
-0x5e, 0x56, 0x57, 0x17, 0xf9, 0xa9, 0xc9, 0x8c,
-0xbd, 0x4a, 0x15, 0xa2, 0xbf, 0xb1, 0xfa, 0x5f,
-0xae, 0xf8, 0x57, 0x1f, 0xed, 0x0a, 0x55, 0x44,
-0xd5, 0x1a, 0x3f, 0x18, 0xfa, 0x72, 0xde, 0xb2,
-0x45, 0x5f, 0xc1, 0x8c, 0x44, 0x97, 0x1e, 0xb8,
-0xdd, 0xae, 0x4b, 0xea, 0x57, 0xb2, 0xf8, 0x0f,
-0x7b, 0x32, 0xf3, 0x8c, 0x87, 0x06, 0x28, 0x04,
-0x66, 0xcc, 0x22, 0x0b, 0xda, 0xa5, 0x24, 0x76,
-0xd1, 0x7c, 0xea, 0x8e, 0x7f, 0x8d, 0x34, 0xd7,
-0x76, 0x38, 0xf5, 0x3b, 0x0b, 0xb3, 0xf5, 0xbf,
-0x9c, 0x79, 0xd6, 0x22, 0x4d, 0x2a, 0x06, 0xb9,
-0x46, 0x43, 0xb5, 0x4d, 0xbe, 0x47, 0xc0, 0xd8,
-0xad, 0xd5, 0x35, 0x15, 0x60, 0xcb, 0x5b, 0xd0,
-0xd5, 0xb9, 0x1e, 0x89, 0x61, 0x8b, 0x6a, 0x6e,
-0xb7, 0x78, 0xe3, 0xeb, 0x9b, 0x0a, 0xb2, 0xf8,
-0xe7, 0xc7, 0x4a, 0x56, 0x59, 0x0b, 0xc7, 0xb2,
-0x16, 0xc9, 0xdc, 0x0c, 0xbf, 0x3a, 0xeb, 0x42,
-0xfc, 0xc5, 0xd6, 0xeb, 0xf7, 0xa4, 0x1e, 0x76,
-0x15, 0xe9, 0x85, 0x0c, 0xfe, 0x1a, 0xca, 0xc4,
-0xbf, 0xaa, 0xc8, 0x02, 0x30, 0x4a, 0x86, 0x48,
-0x01, 0x43, 0x5b, 0x88, 0xbf, 0x84, 0x7c, 0x4a,
-0xf0, 0xb7, 0xd7, 0xf2, 0x31, 0x27, 0x19, 0xfe,
-0xb2, 0x22, 0x62, 0xca, 0x38, 0xfe, 0x43, 0x17,
-0xa5, 0xe1, 0x1d, 0x7d, 0x72, 0x97, 0xec, 0x65,
-0x40, 0x4c, 0xee, 0x22, 0x2b, 0xb2, 0x65, 0xbf,
-0xe4, 0x56, 0xb2, 0xdc, 0xa9, 0xff, 0x8a, 0x45,
-0x27, 0xa8, 0xff, 0xca, 0x75, 0xe9, 0x7f, 0x21,
-0xcb, 0x8a, 0x8d, 0xe8, 0x71, 0xdd, 0x31, 0xc7,
-0x75, 0xfa, 0x3c, 0x26, 0x1b, 0xb7, 0x9e, 0x0b,
-0x79, 0x43, 0x97, 0x09, 0x77, 0xc2, 0x46, 0x77,
-0xfd, 0x97, 0xfd, 0xdb, 0xb5, 0x51, 0x77, 0xb8,
-0xca, 0x29, 0x5a, 0xcc, 0x4f, 0x4c, 0x73, 0xe7,
-0x28, 0x92, 0x3d, 0x2d, 0xbc, 0xfe, 0xcb, 0xa8,
-0x6b, 0x59, 0xbb, 0xc9, 0xcd, 0x7f, 0x38, 0x5e,
-0xdb, 0xeb, 0x2d, 0x57, 0x91, 0x17, 0x52, 0x50,
-0x2e, 0xb3, 0x43, 0x90, 0x7d, 0x24, 0xa3, 0xe9,
-0x46, 0x18, 0x46, 0x9b, 0x28, 0xfe, 0x65, 0xcb,
-0x56, 0x0a, 0x2c, 0x36, 0xda, 0x6a, 0xdd, 0x24,
-0xd6, 0xfd, 0x83, 0x81, 0x54, 0xcc, 0x3f, 0xa4,
-0xdd, 0x8e, 0x46, 0x98, 0xe8, 0xed, 0xc8, 0xaa,
-0xff, 0x22, 0x4e, 0xfc, 0xcb, 0x4f, 0x17, 0x80,
-0x91, 0xc3, 0x5a, 0xd2, 0xac, 0xa5, 0x32, 0xe1,
-0xe3, 0x5d, 0xd3, 0x61, 0x4c, 0x51, 0x40, 0x7c,
-0xb8, 0xb5, 0x86, 0xe5, 0x28, 0x92, 0xfd, 0x5f,
-0x2c, 0x4f, 0x4e, 0x54, 0xff, 0xc5, 0xfc, 0x8d,
-0x0a, 0x3b, 0x5b, 0x83, 0xf9, 0xe1, 0x6c, 0x47,
-0x2b, 0xb5, 0xe4, 0x9f, 0x96, 0xa1, 0x5a, 0x25,
-0xe6, 0x1f, 0x4e, 0x7b, 0xdd, 0xda, 0xd1, 0xf4,
-0x74, 0x40, 0x98, 0x80, 0x7f, 0x83, 0xcb, 0x7e,
-0xa9, 0x2d, 0x45, 0x9c, 0x85, 0x0f, 0x70, 0x01,
-0x0b, 0xd0, 0x88, 0x3c, 0xda, 0x45, 0x2b, 0x91,
-0xc7, 0x03, 0x80, 0x86, 0x52, 0x36, 0xc0, 0xde,
-0xcf, 0x07, 0x3a, 0xf4, 0x83, 0x00, 0x10, 0xc6,
-0xd4, 0x7f, 0xd9, 0x41, 0x2e, 0x6e, 0xec, 0x32,
-0x6f, 0x49, 0xfb, 0xa2, 0x3c, 0x22, 0x06, 0x88,
-0x8c, 0x49, 0x83, 0xb1, 0x2e, 0x64, 0x44, 0xbc,
-0x19, 0x69, 0xe7, 0x79, 0xfc, 0x2b, 0x18, 0x9d,
-0x48, 0xff, 0x4b, 0xc1, 0x04, 0x78, 0x5f, 0xea,
-0x6b, 0xd6, 0x4e, 0x84, 0xfc, 0x1b, 0xdf, 0x72,
-0xa8, 0xce, 0xc1, 0x6f, 0x99, 0xc4, 0x53, 0xe2,
-0xef, 0xb7, 0x36, 0x29, 0x61, 0x3f, 0x5d, 0x44,
-0xb3, 0xf2, 0x0f, 0x9d, 0xfa, 0xaf, 0x44, 0x3d,
-0xe6, 0x1f, 0x02, 0x9e, 0xa6, 0x73, 0xd2, 0x05,
-0xfd, 0xd2, 0x7e, 0xf2, 0x0e, 0x9d, 0x9b, 0xcc,
-0xff, 0x40, 0xba, 0x1f, 0x19, 0x39, 0x70, 0x4c,
-0x84, 0xf4, 0x24, 0x6a, 0x62, 0x0e, 0x3f, 0xb6,
-0xf7, 0x90, 0x5d, 0x7f, 0xc1, 0xf8, 0x0f, 0x93,
-0xf9, 0x6c, 0x7e, 0xb4, 0x5d, 0xe1, 0xca, 0x33,
-0x6b, 0x5a, 0xc4, 0xcd, 0xc6, 0xe7, 0x60, 0x97,
-0xf1, 0x00, 0x38, 0x32, 0x56, 0xd1, 0x4a, 0xe2,
-0x59, 0x89, 0xf1, 0x2f, 0x52, 0x99, 0xf6, 0xdd,
-0x23, 0xdd, 0x45, 0x76, 0xa2, 0x74, 0x1a, 0xe7,
-0xf0, 0xaf, 0xec, 0x87, 0xf9, 0x71, 0xeb, 0x7f,
-0x39, 0xf3, 0x2c, 0x54, 0xf6, 0xe1, 0x2e, 0xd3,
-0x8c, 0x41, 0xc9, 0x6b, 0x0d, 0x58, 0x94, 0x5d,
-0x62, 0x25, 0xc9, 0xc3, 0x0d, 0x08, 0x03, 0x6a,
-0xb7, 0x21, 0xf3, 0xe4, 0x4e, 0x7f, 0x19, 0xdf,
-0x07, 0x77, 0x69, 0x95, 0x03, 0x4a, 0x53, 0x7c,
-0x7c, 0xfe, 0xa1, 0x6d, 0xb0, 0xf8, 0x17, 0x78,
-0xf8, 0x44, 0x64, 0x94, 0xce, 0x84, 0x51, 0x62,
-0x5a, 0x7b, 0xdc, 0x42, 0x3c, 0xde, 0x4f, 0x70,
-0x3f, 0xb3, 0x3d, 0xd8, 0xae, 0x28, 0x62, 0xbf,
-0x85, 0xbf, 0x4a, 0xc6, 0xc4, 0xbf, 0x30, 0xda,
-0x25, 0x1e, 0x67, 0x05, 0x77, 0x12, 0xb8, 0x85,
-0x42, 0x1d, 0x79, 0x08, 0xbd, 0x26, 0xcb, 0x43,
-0x63, 0xf9, 0x48, 0xcd, 0xbc, 0xfe, 0x2b, 0x1a,
-0x49, 0x07, 0x03, 0xd2, 0xdb, 0xd9, 0xf5, 0x5f,
-0xd7, 0xdb, 0xd7, 0x79, 0x18, 0xab, 0x48, 0x58,
-0xfe, 0x61, 0x88, 0x1b, 0x82, 0xc5, 0xab, 0x66,
-0x49, 0x88, 0x8e, 0xd8, 0x2b, 0x78, 0x5e, 0x8f,
-0x98, 0xd5, 0xc9, 0x0c, 0xfe, 0xda, 0x67, 0xe9,
-0x7f, 0xb1, 0xb0, 0x17, 0xfa, 0x2d, 0xc5, 0x96,
-0x57, 0x99, 0x80, 0x59, 0xfd, 0x15, 0x29, 0xaf,
-0x60, 0xfc, 0x87, 0x00, 0xc4, 0xcc, 0xb5, 0xcc,
-0xe1, 0x8c, 0x87, 0x1b, 0x2c, 0xcf, 0x33, 0x84,
-0xfc, 0x1b, 0xc4, 0x85, 0xbf, 0x1c, 0xdf, 0xd8,
-0x2a, 0x04, 0x13, 0x30, 0xcb, 0xcb, 0xb7, 0x96,
-0x30, 0xda, 0xc3, 0xd9, 0xf9, 0x58, 0x11, 0xf6,
-0x1b, 0x4b, 0xc0, 0x8b, 0xa4, 0xd2, 0xe1, 0x18,
-0x1b, 0xdc, 0x4d, 0xfc, 0x9a, 0xb2, 0x39, 0xae,
-0x4f, 0x18, 0xff, 0xb2, 0xb5, 0xbd, 0x58, 0xfe,
-0x21, 0x0b, 0xb1, 0x4d, 0x27, 0xd3, 0xed, 0x8c,
-0x44, 0x4e, 0x71, 0xaf, 0x4d, 0x8f, 0xd9, 0x71,
-0xb4, 0x17, 0x3c, 0xdb, 0x5d, 0xf1, 0x2f, 0xc6,
-0xad, 0xe1, 0x5a, 0xaf, 0x5c, 0xfe, 0x9c, 0xe2,
-0x32, 0x19, 0x6d, 0x4a, 0x80, 0xa8, 0xa8, 0xff,
-0xf5, 0x88, 0xe6, 0x3d, 0xca, 0x0e, 0x4c, 0x7a,
-0xf4, 0x80, 0xc1, 0x06, 0x87, 0xa8, 0x6e, 0x06,
-0x92, 0x8e, 0xfe, 0x17, 0xe6, 0x1f, 0xae, 0x84,
-0x5f, 0xf1, 0x34, 0x97, 0x5b, 0x3a, 0xc5, 0x0b,
-0x24, 0x15, 0x16, 0xe9, 0xfb, 0x06, 0xc0, 0xae,
-0x5a, 0x52, 0xd0, 0x0d, 0xb8, 0xf2, 0x88, 0x11,
-0x39, 0xcc, 0xdc, 0xb0, 0x61, 0xbd, 0xd6, 0x7e,
-0x52, 0xc2, 0x38, 0xf3, 0x86, 0x2b, 0xfe, 0xc5,
-0x7c, 0x75, 0x01, 0x83, 0x53, 0xa8, 0xff, 0x25,
-0x5c, 0xc4, 0xe2, 0x91, 0x3e, 0x16, 0x34, 0xc1,
-0xb4, 0x43, 0xb8, 0x13, 0x90, 0xff, 0x30, 0xc2,
-0x70, 0x93, 0x7c, 0x51, 0xab, 0x11, 0xdd, 0xf5,
-0x5f, 0xae, 0xf8, 0xd7, 0x08, 0xa9, 0x11, 0xf2,
-0x91, 0xd2, 0xf0, 0x14, 0x62, 0xbd, 0x01, 0x29,
-0x05, 0xf7, 0x02, 0x66, 0x2d, 0xaa, 0x15, 0xf0,
-0x58, 0xcd, 0x21, 0x0b, 0xcd, 0xf2, 0x16, 0x72,
-0xa4, 0x3d, 0x02, 0xf0, 0x8d, 0x9d, 0x6f, 0x44,
-0xd2, 0x93, 0xf0, 0xf9, 0xc2, 0xf8, 0x17, 0x5d,
-0x29, 0xb9, 0xf2, 0x0f, 0x77, 0x8b, 0x7e, 0x5e,
-0xff, 0xf5, 0x04, 0x1e, 0x09, 0x6e, 0x42, 0x32,
-0x49, 0xfe, 0x86, 0x94, 0x31, 0xbc, 0xa8, 0xa3,
-0xd4, 0x14, 0xe6, 0x28, 0x26, 0x03, 0x94, 0xe9,
-0x7f, 0x55, 0xa5, 0x17, 0x70, 0x8d, 0x66, 0xff,
-0x69, 0x25, 0x2b, 0xff, 0x10, 0x23, 0x86, 0xf0,
-0x58, 0xf5, 0x6b, 0x78, 0x48, 0x18, 0xd5, 0x8a,
-0x3a, 0xe4, 0x38, 0xea, 0x61, 0x03, 0xaa, 0x25,
-0x6d, 0x22, 0xcb, 0xd4, 0x55, 0x3c, 0x6d, 0x24,
-0x28, 0xcc, 0xd6, 0x44, 0x3b, 0x1f, 0xdb, 0x7f,
-0x94, 0xc7, 0xbf, 0x92, 0xee, 0xfc, 0xc3, 0x2e,
-0x4c, 0x71, 0x44, 0xde, 0x95, 0x27, 0x62, 0x22,
-0x85, 0x7f, 0xa2, 0x4a, 0x5f, 0x43, 0xab, 0xda,
-0xaf, 0xdb, 0x4e, 0x2a, 0xe4, 0x4e, 0xd1, 0x4f,
-0x3d, 0x81, 0x5c, 0xd2, 0xbc, 0x17, 0x15, 0x99,
-0x93, 0x62, 0x50, 0xb3, 0xeb, 0x9b, 0xe4, 0x9e,
-0x52, 0x7f, 0x19, 0xdc, 0x09, 0x21, 0x57, 0xfc,
-0xcb, 0x0c, 0x7f, 0x80, 0x94, 0x74, 0xb4, 0xdf,
-0xe8, 0x0e, 0x04, 0xb7, 0x4b, 0x8f, 0x91, 0x77,
-0xfa, 0x23, 0x2d, 0xbe, 0x7d, 0x35, 0xd3, 0x94,
-0x23, 0xa4, 0xb6, 0xa9, 0x60, 0x8d, 0x34, 0x2d,
-0xc1, 0x18, 0x6f, 0x9e, 0x52, 0x83, 0x19, 0xb2,
-0x71, 0xf8, 0xab, 0x61, 0xef, 0xb6, 0x72, 0x39,
-0x83, 0xbf, 0x46, 0x6c, 0x6c, 0xf5, 0x7b, 0x32,
-0x57, 0xae, 0x6e, 0x51, 0x2f, 0xe6, 0x5e, 0xc6,
-0x24, 0xc3, 0x16, 0xe9, 0xf7, 0xe2, 0x95, 0xfc,
-0xfd, 0x7a, 0x7e, 0xfa, 0x07, 0x3f, 0x61, 0x0a,
-0x53, 0xf9, 0xa7, 0xda, 0x2e, 0x02, 0x54, 0xe5,
-0xf5, 0x5f, 0x4c, 0x9a, 0xd9, 0x77, 0x2e, 0x2b,
-0xfe, 0x65, 0x76, 0x0f, 0x30, 0xd8, 0x7e, 0x48,
-0x0b, 0x1b, 0x8b, 0x92, 0xea, 0x13, 0xe4, 0xc2,
-0xbc, 0x7b, 0x4a, 0xaa, 0x76, 0xe2, 0xbf, 0x2e,
-0x46, 0xb0, 0x9e, 0x28, 0x70, 0xf0, 0x08, 0xee,
-0x8c, 0x37, 0x61, 0x45, 0x21, 0xfb, 0x3e, 0x88,
-0x10, 0x1b, 0xc2, 0xda, 0xba, 0x6d, 0x5f, 0x73,
-0xc7, 0xbf, 0xee, 0xc4, 0x90, 0xf1, 0xd5, 0xef,
-0x1a, 0xab, 0xe3, 0xfe, 0x7d, 0x9d, 0xa9, 0xf2,
-0xff, 0x4b, 0xd9, 0xb3, 0x61, 0x56, 0xbb, 0xb2,
-0x1d, 0xeb, 0x22, 0xfb, 0x83, 0x54, 0xd9, 0x27,
-0x95, 0xe1, 0x32, 0xcd, 0x54, 0x53, 0x0b, 0xfe,
-0xc1, 0xe8, 0x6c, 0x40, 0x31, 0x3e, 0x06, 0x5d,
-0xfd, 0xba, 0x1a, 0x76, 0xf3, 0x6f, 0xa4, 0x78,
-0xf8, 0x3e, 0x4d, 0xe2, 0xc9, 0x40, 0xf2, 0x3a,
-0xcd, 0xb3, 0x95, 0xa6, 0xcc, 0x0a, 0xa2, 0xe6,
-0xc1, 0x6d, 0xdc, 0x69, 0x06, 0x09, 0xc9, 0x13,
-0x45, 0x7c, 0x8f, 0x19, 0xaa, 0x17, 0xae, 0xdc,
-0xe6, 0x3c, 0x44, 0xba, 0xbe, 0x0c, 0x3c, 0x10,
-0x57, 0xfc, 0xeb, 0xe9, 0x44, 0x19, 0xe6, 0xc5,
-0xfd, 0xb2, 0xac, 0x95, 0xde, 0x18, 0xeb, 0x2c,
-0xf5, 0xdc, 0xa1, 0xef, 0xfc, 0xae, 0x5e, 0x91,
-0x17, 0x15, 0x7f, 0x44, 0xe1, 0xfd, 0x1c, 0x52,
-0xa2, 0xe2, 0xb5, 0xf3, 0x00, 0x91, 0x6d, 0x57,
-0x6f, 0x13, 0xbf, 0x8a, 0x19, 0x89, 0x1c, 0x88,
-0xed, 0x48, 0x95, 0x2d, 0x51, 0xef, 0x2a, 0x72,
-0xe5, 0x1f, 0x0e, 0xa7, 0x75, 0xd3, 0x37, 0x43,
-0x7c, 0x9d, 0x1e, 0x24, 0x3d, 0x43, 0x8b, 0xc2,
-0x8d, 0x94, 0x8e, 0x28, 0xdb, 0x4e, 0xac, 0x6b,
-0x97, 0x1e, 0xd6, 0x9f, 0xd3, 0x82, 0x46, 0x30,
-0xa1, 0x7a, 0x8d, 0xdf, 0xd2, 0xba, 0xbf, 0xf1,
-0x25, 0x05, 0x06, 0xcd, 0x10, 0xa3, 0x01, 0x22,
-0x4b, 0x84, 0x34, 0xdf, 0xcc, 0x72, 0x37, 0xff,
-0x86, 0x7c, 0x3d, 0x16, 0x79, 0x0d, 0x1b, 0x17,
-0xc9, 0xcd, 0x60, 0xa8, 0xe7, 0xf0, 0xa0, 0xa3,
-0x6f, 0xa1, 0xc9, 0x1e, 0xab, 0x6a, 0xf4, 0x1c,
-0x2e, 0xce, 0x7f, 0x0d, 0x7d, 0x89, 0x34, 0xe7,
-0x20, 0xb5, 0x2a, 0xc2, 0x4a, 0xea, 0xc9, 0xa2,
-0xe1, 0x6c, 0xfd, 0xaf, 0x30, 0x96, 0x7d, 0xa1,
-0xa8, 0x7a, 0x98, 0x82, 0x2f, 0xb1, 0xb4, 0xe4,
-0x50, 0x7b, 0xb7, 0xf1, 0x05, 0x0a, 0xce, 0xc9,
-0x05, 0x31, 0x12, 0xf3, 0x52, 0x5f, 0x05, 0x39,
-0x22, 0x30, 0xfd, 0xaf, 0xa0, 0xcc, 0x73, 0x4a,
-0xd9, 0x0b, 0x16, 0x81, 0x98, 0xe8, 0xd2, 0x5f,
-0x7e, 0x9a, 0x94, 0xf5, 0x06, 0x5a, 0x18, 0xdd,
-0x53, 0x00, 0x7c, 0xb6, 0xa2, 0x10, 0x16, 0x82,
-0x19, 0x4a, 0xb3, 0x78, 0x42, 0xd9, 0x25, 0x04,
-0x89, 0x82, 0xe5, 0x99, 0xb0, 0x7f, 0x51, 0x98,
-0xd5, 0xcd, 0xf2, 0xae, 0x4c, 0xfe, 0x61, 0x99,
-0x11, 0x6d, 0x11, 0x5d, 0xfa, 0xcb, 0x3b, 0x69,
-0xf2, 0x34, 0x0b, 0x7b, 0x3d, 0x82, 0x20, 0x6b,
-0x79, 0xd1, 0x1d, 0xf2, 0xc6, 0x76, 0xc0, 0x5f,
-0x51, 0xf1, 0x35, 0x06, 0xcd, 0x60, 0x9e, 0xa7,
-0x28, 0xdf, 0x8b, 0x33, 0xfe, 0x43, 0x44, 0xbe,
-0xdf, 0xb0, 0xc0, 0x9a, 0xb9, 0x4c, 0xdf, 0x34,
-0x46, 0x7f, 0x39, 0x79, 0x14, 0xb6, 0xa4, 0x5e,
-0xfa, 0x48, 0xf3, 0x74, 0x33, 0x6f, 0x6e, 0x7c,
-0x9e, 0x9c, 0x38, 0x1c, 0x3b, 0x98, 0x27, 0xc7,
-0xd9, 0x1b, 0x72, 0x67, 0x80, 0x34, 0x78, 0x43,
-0x60, 0xcc, 0xb6, 0x85, 0x54, 0xac, 0x75, 0x37,
-0x63, 0xa4, 0x74, 0x4e, 0x96, 0xfe, 0x17, 0xa9,
-0x49, 0x79, 0x93, 0xd2, 0x28, 0x79, 0x95, 0xd6,
-0xd0, 0xfc, 0x33, 0xea, 0x37, 0x73, 0x5f, 0x4d,
-0xd7, 0x24, 0xaa, 0xdf, 0x44, 0x46, 0x29, 0x52,
-0xdd, 0xee, 0x7d, 0x63, 0xd2, 0x6c, 0xf2, 0x6b,
-0xa1, 0x3e, 0xe9, 0x1b, 0x74, 0x6b, 0x34, 0x5f,
-0x36, 0x77, 0x51, 0x6f, 0x5a, 0x3a, 0xcf, 0x79,
-0xc3, 0x58, 0xfc, 0x8b, 0x46, 0x04, 0xe6, 0xd7,
-0xa5, 0xa3, 0xf0, 0xb2, 0x22, 0x6a, 0x52, 0x1f,
-0x12, 0x2c, 0x21, 0xe6, 0x11, 0x46, 0x90, 0x3e,
-0x89, 0x0a, 0x43, 0xa4, 0x4e, 0xf6, 0xb5, 0xaf,
-0x72, 0x67, 0x24, 0xea, 0x11, 0xfd, 0x1f, 0xb2,
-0xe3, 0x5f, 0xf4, 0x03, 0x63, 0x5d, 0x62, 0xd2,
-0x9b, 0xc2, 0x21, 0x58, 0x82, 0x85, 0x09, 0x1f,
-0x0a, 0x81, 0xd5, 0x19, 0xf9, 0x93, 0xb1, 0xda,
-0x2b, 0x51, 0x1b, 0xf3, 0xad, 0x97, 0xa6, 0x29,
-0x87, 0xc0, 0xab, 0xf4, 0x96, 0x20, 0xff, 0x86,
-0x6e, 0xf3, 0xcf, 0x1b, 0x21, 0xf4, 0x69, 0x0f,
-0xba, 0xe2, 0x5f, 0x64, 0xab, 0xb1, 0x00, 0xfc,
-0x67, 0x56, 0xbf, 0x13, 0x40, 0xef, 0x74, 0x37,
-0x8a, 0x41, 0x30, 0x45, 0x27, 0x5a, 0xfb, 0x4f,
-0x6a, 0x22, 0xbe, 0x8d, 0xac, 0x16, 0xaa, 0x62,
-0x81, 0x8d, 0x5b, 0xa7, 0x8a, 0x8c, 0xdb, 0xd0,
-0x02, 0x62, 0xf3, 0xc0, 0x7f, 0x76, 0xe1, 0xaf,
-0x2e, 0x9d, 0x75, 0xf5, 0xcd, 0x5b, 0x4d, 0xa6,
-0x81, 0x8f, 0xed, 0xa9, 0xc8, 0xd9, 0x6d, 0x4c,
-0x6f, 0x66, 0x59, 0x67, 0xf0, 0xe7, 0x28, 0xf5,
-0x5b, 0xd1, 0x06, 0x06, 0x56, 0xad, 0xe6, 0x18,
-0xad, 0x86, 0x95, 0xd9, 0xd8, 0x85, 0x80, 0x6e,
-0xfd, 0x41, 0x37, 0xfe, 0xd2, 0x78, 0xaa, 0x1b,
-0xf2, 0x1f, 0x36, 0x29, 0x5a, 0x41, 0xae, 0xd1,
-0xa5, 0x05, 0x9a, 0x02, 0x85, 0x9e, 0xdc, 0xc6,
-0x36, 0x26, 0xfb, 0x25, 0xb6, 0x37, 0xb6, 0x62,
-0x01, 0x45, 0x51, 0x5c, 0x26, 0xad, 0xd6, 0x60,
-0x78, 0x4e, 0x93, 0x0b, 0xb2, 0xf1, 0xd7, 0xf0,
-0x72, 0xbf, 0xc7, 0x47, 0x8b, 0x7a, 0x93, 0x6b,
-0x96, 0xcf, 0xba, 0x76, 0x61, 0x7c, 0x4d, 0xd9,
-0xb6, 0x91, 0xe5, 0xb5, 0xd7, 0xe6, 0x3f, 0xd8,
-0x56, 0x96, 0xec, 0xbf, 0xe3, 0x7e, 0x8f, 0xef,
-0x01, 0xa9, 0x2c, 0x19, 0x25, 0x11, 0xcf, 0xc2,
-0xb8, 0xaa, 0x6b, 0xfd, 0x8e, 0xfe, 0x17, 0xc6,
-0xbf, 0x68, 0x79, 0x06, 0x7f, 0x91, 0x2b, 0x15,
-0xf5, 0x86, 0x84, 0xfc, 0x87, 0x57, 0x98, 0xec,
-0x17, 0xa6, 0x01, 0xe8, 0x73, 0xa2, 0x05, 0x8c,
-0x08, 0x91, 0x5c, 0x67, 0xf8, 0x5e, 0x2a, 0x3f,
-0x47, 0x77, 0xb3, 0x8a, 0xb0, 0x47, 0x06, 0x93,
-0xa3, 0xba, 0xe5, 0xf3, 0x5f, 0x29, 0xb9, 0xde,
-0xa8, 0xce, 0xe0, 0x2f, 0x61, 0xd0, 0x26, 0x39,
-0x3c, 0x67, 0x61, 0x2b, 0xe9, 0x5c, 0xee, 0x8b,
-0x72, 0x8d, 0x51, 0x30, 0xc0, 0x5a, 0xb0, 0x7c,
-0x4c, 0x98, 0x49, 0xf2, 0xb0, 0xfe, 0x6b, 0x18,
-0x2b, 0xc2, 0x88, 0x68, 0xe5, 0x31, 0xc2, 0x60,
-0x5f, 0x73, 0x36, 0xff, 0x86, 0x3f, 0xc3, 0x3f,
-0xaf, 0x20, 0xff, 0xe1, 0xaf, 0x09, 0x53, 0x04,
-0xc3, 0x96, 0x02, 0x87, 0x76, 0x03, 0x5b, 0x92,
-0x22, 0xb5, 0xf9, 0xe7, 0x53, 0x30, 0xf8, 0xc8,
-0x18, 0xfc, 0xb5, 0x2d, 0x53, 0xff, 0xb5, 0x38,
-0x81, 0x46, 0x8e, 0xce, 0x22, 0x62, 0x8c, 0x6d,
-0x03, 0xba, 0x64, 0x0d, 0x8d, 0xa8, 0x56, 0x25,
-0xbb, 0x6b, 0xc4, 0xf4, 0xb4, 0x5a, 0xda, 0xe0,
-0xc2, 0x5f, 0x5d, 0x94, 0xdf, 0x12, 0x21, 0xb8,
-0x7f, 0x1a, 0x90, 0x7f, 0x83, 0xae, 0x26, 0x7a,
-0x94, 0x6c, 0xcc, 0x54, 0x14, 0x56, 0x50, 0xc6,
-0xa8, 0x59, 0x08, 0x48, 0xbc, 0x35, 0x93, 0x89,
-0x0a, 0xc6, 0xa6, 0x2c, 0xfc, 0x65, 0x32, 0x4a,
-0xc3, 0x37, 0x1b, 0x0e, 0x19, 0xdd, 0x2d, 0xc1,
-0x4d, 0xea, 0x20, 0x59, 0x6d, 0x84, 0x17, 0xe7,
-0xe2, 0x24, 0xac, 0x46, 0x72, 0x8c, 0x1f, 0x76,
-0x56, 0xc4, 0xe1, 0x7e, 0x8e, 0x29, 0xdf, 0xb7,
-0xa8, 0xfb, 0xf9, 0xfd, 0x6c, 0x76, 0x37, 0x4f,
-0xc8, 0x3f, 0xff, 0x82, 0xc8, 0xb0, 0xd5, 0x06,
-0xb5, 0x8f, 0x9c, 0xdd, 0xc4, 0x23, 0x62, 0xfe,
-0x51, 0x94, 0x69, 0xd3, 0xa4, 0x37, 0x75, 0x7c,
-0x52, 0x16, 0x6d, 0x6a, 0x73, 0x83, 0xe2, 0x1b,
-0x23, 0xcb, 0x16, 0x8d, 0xe1, 0xdf, 0x60, 0x49,
-0xaa, 0xa7, 0xe9, 0x10, 0xbc, 0x3d, 0xe0, 0x7d,
-0x58, 0x46, 0x47, 0x8c, 0x6e, 0xcd, 0x0b, 0x68,
-0x4b, 0x3c, 0x09, 0xfe, 0x8f, 0x17, 0x65, 0xe3,
-0xfa, 0x49, 0x44, 0xc9, 0x6f, 0x57, 0xf5, 0x78,
-0x3f, 0xb1, 0x33, 0x5a, 0x0d, 0x8c, 0x88, 0x49,
-0x6e, 0xfd, 0xaf, 0x56, 0x16, 0x9d, 0x3c, 0xaf,
-0x3f, 0x1c, 0xbd, 0x39, 0x11, 0xd5, 0xc5, 0xd9,
-0xfa, 0x7e, 0xbd, 0x3c, 0x01, 0xfb, 0xd7, 0x6c,
-0xf2, 0xb0, 0x0c, 0x20, 0x6b, 0x68, 0xc3, 0x1c,
-0xf2, 0x53, 0x52, 0x4d, 0x37, 0xbd, 0x27, 0xce,
-0x21, 0x0f, 0xb7, 0xdb, 0xf9, 0x87, 0xd4, 0x4f,
-0x3b, 0xd2, 0x1e, 0xb7, 0xfe, 0x17, 0x78, 0x68,
-0xd7, 0xb1, 0x38, 0x88, 0xa1, 0x87, 0x14, 0x24,
-0xf5, 0x4a, 0x99, 0xfa, 0x88, 0x07, 0x35, 0xb9,
-0x28, 0xa9, 0xd0, 0xa3, 0xb3, 0x3d, 0xcc, 0xcd,
-0x28, 0x53, 0x66, 0x82, 0x1b, 0xd2, 0x96, 0xb4,
-0x75, 0x0c, 0x4d, 0xbd, 0x57, 0x99, 0x2c, 0x66,
-0xf4, 0xbf, 0xc8, 0x0e, 0x65, 0x8b, 0x79, 0x1d,
-0xbe, 0x9f, 0x5b, 0xc9, 0xd4, 0xe6, 0xbc, 0x16,
-0x8f, 0x06, 0xf7, 0xc6, 0x92, 0x01, 0xcf, 0xca,
-0xb8, 0x40, 0xda, 0xe9, 0x8f, 0xb7, 0x2a, 0xba,
-0xa8, 0xe9, 0x8f, 0x93, 0x60, 0x33, 0xfc, 0x13,
-0x8b, 0xf5, 0x55, 0xca, 0x12, 0x0b, 0x44, 0x28,
-0xc9, 0x74, 0xe0, 0x94, 0x5b, 0xff, 0xeb, 0x0f,
-0x3c, 0x92, 0x75, 0x99, 0xf4, 0xd1, 0x90, 0x1e,
-0x9c, 0x2d, 0x15, 0x91, 0x73, 0xb4, 0x26, 0x59,
-0x35, 0x22, 0x4d, 0x21, 0xa7, 0xe8, 0x4c, 0xdd,
-0xbb, 0x18, 0xdc, 0xb0, 0xcf, 0x01, 0x10, 0xab,
-0x5c, 0xac, 0xde, 0x4f, 0x5e, 0xb0, 0xf5, 0xbf,
-0x58, 0xfe, 0xe1, 0x62, 0xb7, 0xfe, 0x97, 0x55,
-0x8a, 0x8e, 0xf1, 0x40, 0xf4, 0xde, 0x05, 0xb6,
-0x28, 0x94, 0x89, 0xbb, 0xe1, 0x12, 0xfc, 0x1c,
-0x9d, 0xf6, 0x6f, 0xa1, 0x54, 0x7d, 0x42, 0xda,
-0x6e, 0x87, 0xbd, 0xce, 0x28, 0xcc, 0x48, 0x94,
-0x8f, 0xd7, 0xff, 0xba, 0x4c, 0x2e, 0xd2, 0x1a,
-0x1d, 0x1c, 0xc5, 0x59, 0x48, 0x84, 0x88, 0xdc,
-0x86, 0x1f, 0x18, 0xa3, 0x89, 0x7a, 0x3d, 0xd8,
-0x5f, 0x7e, 0x99, 0x1c, 0x6f, 0xad, 0x4f, 0xae,
-0xc3, 0xae, 0x51, 0x9e, 0x7f, 0xf8, 0x9e, 0x71,
-0x19, 0x8d, 0x93, 0x59, 0xfc, 0xf3, 0x06, 0x83,
-0x54, 0xaf, 0x18, 0x4f, 0x37, 0xdd, 0xb8, 0x54,
-0xb9, 0x5b, 0x4c, 0x60, 0xa0, 0xb0, 0x1d, 0x5a,
-0x06, 0xcc, 0x07, 0x00, 0x96, 0xc2, 0xbe, 0xf3,
-0x1f, 0xe4, 0x71, 0xa1, 0x72, 0x44, 0x1d, 0x16,
-0x35, 0xb2, 0x2f, 0x01, 0x18, 0xf6, 0x6e, 0xd8,
-0x77, 0x9e, 0xa1, 0x65, 0x7d, 0xea, 0x3c, 0x37,
-0xfe, 0x7a, 0xda, 0x28, 0x3b, 0xe8, 0xb1, 0x78,
-0x26, 0x15, 0x25, 0xe4, 0xb9, 0x53, 0x87, 0xeb,
-0x60, 0x56, 0xe7, 0x09, 0x6d, 0x9b, 0x5e, 0xa9,
-0xa1, 0x81, 0xf8, 0xeb, 0x2f, 0xf3, 0x9a, 0xc5,
-0x12, 0xe3, 0x69, 0x2b, 0xcf, 0x93, 0x76, 0xc1,
-0x5a, 0xa8, 0xcd, 0xf1, 0xbe, 0x0c, 0xfe, 0xea,
-0xc2, 0x48, 0x4d, 0xa8, 0xe8, 0x39, 0xba, 0x3b,
-0x31, 0x9d, 0x28, 0x61, 0xf1, 0x79, 0x92, 0x32,
-0x82, 0x49, 0xa5, 0x54, 0xec, 0x13, 0x28, 0x46,
-0xd6, 0x64, 0xf1, 0x4d, 0xc6, 0xdf, 0x0b, 0x7e,
-0x0b, 0xbc, 0xf8, 0xec, 0x33, 0xc6, 0x1e, 0x92,
-0xec, 0xbd, 0x4e, 0x71, 0xeb, 0x2f, 0x9f, 0x27,
-0xdd, 0xa7, 0x0b, 0x30, 0x6e, 0x75, 0x9e, 0x51,
-0x16, 0xab, 0x5f, 0x27, 0x17, 0x34, 0xc0, 0x56,
-0x07, 0x60, 0x93, 0x7a, 0x5b, 0x88, 0x34, 0x3f,
-0x05, 0x5e, 0x2e, 0x05, 0x37, 0x2c, 0xa4, 0x6e,
-0xe9, 0xb4, 0xf3, 0x0f, 0xcb, 0x79, 0x56, 0x8c,
-0xaf, 0x24, 0x0b, 0x7f, 0x35, 0xb3, 0xb4, 0xc3,
-0x37, 0xc8, 0xf9, 0x86, 0x48, 0x47, 0x41, 0xa8,
-0xfc, 0x09, 0x85, 0x2b, 0xb8, 0x95, 0x9f, 0x26,
-0xef, 0x88, 0xe0, 0xce, 0xb5, 0x4a, 0x69, 0x01,
-0xdc, 0x03, 0xd8, 0x90, 0xe0, 0xca, 0x0e, 0xe8,
-0x63, 0x0f, 0xda, 0xbf, 0xd8, 0xf9, 0x87, 0x18,
-0xff, 0x3a, 0x4f, 0xc2, 0x07, 0xd7, 0x21, 0xfe,
-0x7a, 0x5b, 0xf1, 0xd3, 0x85, 0xc3, 0x52, 0xa9,
-0x7e, 0x5c, 0xb8, 0x3f, 0x95, 0x8f, 0x11, 0xb1,
-0x63, 0xb0, 0x0f, 0x7a, 0xfb, 0x56, 0x9d, 0x21,
-0xc7, 0xc5, 0xb9, 0xc4, 0xdb, 0x2f, 0xcd, 0x2d,
-0x3d, 0x9a, 0xb4, 0xf2, 0x0f, 0xaf, 0x68, 0x33,
-0xfa, 0xbc, 0x2f, 0x65, 0xe9, 0x2f, 0x9f, 0x60,
-0x2a, 0xc9, 0x83, 0x64, 0x8d, 0xe9, 0x4f, 0x82,
-0x4b, 0x3c, 0x9d, 0x76, 0x9a, 0xf7, 0xeb, 0xde,
-0xf5, 0xe2, 0xef, 0x62, 0xdb, 0x3b, 0xaa, 0x8a,
-0x94, 0xf6, 0x49, 0xa7, 0x3d, 0x9d, 0x28, 0xec,
-0xbb, 0xf9, 0xda, 0x72, 0xa5, 0x83, 0x72, 0xfe,
-0x43, 0x65, 0x0f, 0xee, 0x3b, 0x1b, 0xdc, 0xfa,
-0x5f, 0xdd, 0xbc, 0xd8, 0xa7, 0x1f, 0x75, 0x78,
-0x87, 0x3b, 0x52, 0x9e, 0xe9, 0xf2, 0x9a, 0x83,
-0x41, 0xcc, 0xa3, 0xee, 0x57, 0xc0, 0x21, 0xa7,
-0xd1, 0x76, 0x78, 0x2a, 0xe1, 0x3a, 0x72, 0xc7,
-0x96, 0x78, 0x0e, 0x23, 0xb4, 0x57, 0x31, 0xb2,
-0xd6, 0x83, 0x79, 0x71, 0x19, 0xfd, 0x65, 0xc0,
-0x5f, 0x35, 0x32, 0x5b, 0x82, 0x43, 0x18, 0xa6,
-0x34, 0x4a, 0x43, 0x05, 0x2c, 0x89, 0x8e, 0x28,
-0x21, 0xbf, 0x29, 0x3c, 0xa6, 0xac, 0x40, 0xe0,
-0xdc, 0x81, 0xcf, 0x69, 0xa2, 0x14, 0xd3, 0xe1,
-0xe2, 0x7a, 0xe0, 0x25, 0x96, 0x7f, 0x98, 0x08,
-0x25, 0xcd, 0xd9, 0xba, 0x5b, 0xff, 0x6b, 0x44,
-0xc3, 0x25, 0x10, 0x4f, 0x8b, 0x6b, 0xc8, 0x9e,
-0xf6, 0x60, 0xaa, 0x38, 0x20, 0x1e, 0x86, 0xd7,
-0x29, 0x80, 0xe2, 0xb7, 0x94, 0xc3, 0x3a, 0x92,
-0xfc, 0xf8, 0xd3, 0xe4, 0x48, 0x73, 0xa4, 0x14,
-0x7c, 0x12, 0x5d, 0x3c, 0x24, 0xd7, 0xa2, 0xb3,
-0xfd, 0x14, 0x19, 0x8d, 0x76, 0x9b, 0xde, 0xac,
-0xfc, 0x43, 0x44, 0x52, 0x12, 0xd6, 0x7f, 0xd5,
-0x91, 0x59, 0x32, 0x4b, 0x8b, 0xc2, 0xda, 0x2e,
-0xd8, 0x77, 0x86, 0x93, 0x17, 0xc9, 0xf5, 0xc4,
-0xd7, 0x5a, 0x8c, 0x8c, 0x88, 0x91, 0x52, 0x16,
-0x11, 0xbb, 0xa8, 0xcd, 0x61, 0x40, 0x0c, 0x8b,
-0xce, 0x4c, 0xd8, 0xbf, 0x26, 0xd0, 0xff, 0x22,
-0x17, 0xf5, 0x88, 0xc2, 0x54, 0x72, 0x18, 0x7b,
-0xf0, 0x41, 0x56, 0x59, 0x36, 0x07, 0x33, 0x79,
-0xe0, 0x82, 0x65, 0x11, 0x65, 0xdd, 0x00, 0xbc,
-0x01, 0x8e, 0xdb, 0x83, 0xf1, 0x7c, 0x23, 0x38,
-0x94, 0x1d, 0xff, 0x2a, 0xe0, 0xf1, 0xaf, 0xbd,
-0xb4, 0xea, 0xb4, 0xda, 0x43, 0xde, 0xc3, 0x82,
-0x3b, 0xbb, 0xc5, 0x93, 0x46, 0x21, 0x30, 0x99,
-0xc5, 0xc8, 0xb6, 0x8b, 0x3f, 0x23, 0x4f, 0x52,
-0xa7, 0xab, 0xaa, 0x55, 0xe9, 0x29, 0xb2, 0xf8,
-0xe7, 0x59, 0xfd, 0x97, 0xec, 0xb5, 0x4a, 0x45,
-0x0c, 0xd4, 0xff, 0x02, 0x9f, 0x31, 0x35, 0x0f,
-0x69, 0x0f, 0x8b, 0x4c, 0x23, 0x55, 0x98, 0x24,
-0x92, 0x8c, 0x44, 0x88, 0xac, 0x0b, 0x3c, 0x90,
-0x36, 0x31, 0x03, 0x8a, 0xa9, 0x27, 0x2b, 0xff,
-0xd0, 0xe1, 0x6f, 0xe9, 0x89, 0xe1, 0xc1, 0xa6,
-0x3f, 0xa6, 0xf5, 0xe8, 0x55, 0x02, 0xf2, 0x1f,
-0x92, 0x1e, 0xaf, 0xdf, 0xa3, 0xd2, 0x78, 0x5a,
-0xef, 0x09, 0x54, 0x49, 0xb0, 0x8d, 0x26, 0x5d,
-0x75, 0x7f, 0x72, 0x15, 0xf5, 0xf4, 0xc4, 0x87,
-0xf9, 0x7e, 0x91, 0xa5, 0xff, 0x35, 0x82, 0x47,
-0x79, 0xfb, 0x1a, 0xdf, 0x05, 0x5f, 0xab, 0x6a,
-0xc0, 0xb7, 0x53, 0xc2, 0x22, 0x8b, 0xf0, 0x80,
-0xef, 0xbb, 0xe5, 0xef, 0x1a, 0xa3, 0x66, 0xe4,
-0x84, 0xef, 0x47, 0x92, 0xd7, 0x25, 0xf6, 0x84,
-0x7c, 0x7a, 0xdb, 0x27, 0xd0, 0xff, 0xfa, 0x36,
-0x02, 0xe7, 0xed, 0xbe, 0x43, 0xd2, 0xeb, 0x0f,
-0x5c, 0x46, 0x61, 0xdf, 0x56, 0xe9, 0x6d, 0xfa,
-0x11, 0x89, 0xe8, 0x8b, 0xb6, 0x17, 0xbf, 0xae,
-0x9d, 0xa7, 0x11, 0xdd, 0xb7, 0xd5, 0x1d, 0x08,
-0x03, 0xe3, 0xb9, 0xfc, 0xb1, 0xf1, 0x2f, 0x3b,
-0x79, 0x9b, 0xf9, 0xf3, 0xa7, 0x85, 0xdb, 0x79,
-0xd2, 0x5a, 0x00, 0x3c, 0xfc, 0x88, 0x36, 0x79,
-0x1b, 0xe0, 0xa6, 0xc3, 0x80, 0xb6, 0xc0, 0xe7,
-0xaf, 0xf0, 0x1e, 0x71, 0xf8, 0x40, 0x68, 0x78,
-0x38, 0xb8, 0x73, 0x02, 0xfe, 0x79, 0xf8, 0xc9,
-0x39, 0x5b, 0xe9, 0x72, 0x4c, 0xaa, 0x39, 0x4f,
-0x3e, 0x02, 0xef, 0xe2, 0xda, 0x00, 0xdc, 0x99,
-0x55, 0xa4, 0x32, 0xe9, 0x8b, 0x81, 0x01, 0x1e,
-0x48, 0x68, 0x8d, 0x2e, 0xff, 0x86, 0xd4, 0xda,
-0xf3, 0xe3, 0x1f, 0x26, 0x3d, 0x0d, 0x1f, 0x8c,
-0x8f, 0x7f, 0x69, 0x35, 0x24, 0x46, 0x15, 0xd2,
-0x60, 0x6a, 0x22, 0xe0, 0x29, 0x42, 0x72, 0x15,
-0x12, 0x97, 0x59, 0xf9, 0x2a, 0xc1, 0x04, 0x1b,
-0x81, 0x04, 0x1a, 0x6c, 0xbc, 0xdc, 0x00, 0xeb,
-0x15, 0xf3, 0x0f, 0x28, 0xb3, 0x6d, 0xfe, 0xf9,
-0x2c, 0xfd, 0xaf, 0x9d, 0xdf, 0x8b, 0xc5, 0x14,
-0xac, 0x42, 0x6a, 0x4d, 0x94, 0x9d, 0x51, 0xbe,
-0x79, 0xf5, 0xd5, 0xc6, 0x03, 0x89, 0xca, 0xc1,
-0xe8, 0x62, 0x71, 0x0a, 0x18, 0x65, 0x43, 0xca,
-0x5f, 0x14, 0x45, 0xc8, 0xf7, 0x92, 0x37, 0xda,
-0xba, 0x54, 0x65, 0xe9, 0xe8, 0xb7, 0x8b, 0x5c,
-0xfc, 0xf3, 0x1f, 0xa6, 0xea, 0xf8, 0x2d, 0x31,
-0x4c, 0x42, 0xcb, 0xbc, 0x33, 0xa4, 0x17, 0xe1,
-0x3a, 0x7a, 0x1a, 0x0c, 0x99, 0xf4, 0x26, 0xea,
-0xfa, 0xe0, 0x05, 0xeb, 0x35, 0x7a, 0xb5, 0xd0,
-0x19, 0xaf, 0x00, 0x2d, 0xcf, 0xa5, 0xec, 0x62,
-0x31, 0x2d, 0x7c, 0xd2, 0x1b, 0x6a, 0x73, 0xf1,
-0xcf, 0x7f, 0xc7, 0x5e, 0x82, 0x6f, 0x93, 0xfa,
-0x26, 0x0c, 0x84, 0x35, 0x61, 0x46, 0xe2, 0xa4,
-0xb3, 0x98, 0x1f, 0x25, 0x00, 0xda, 0xfa, 0x37,
-0x78, 0x9a, 0x2e, 0x15, 0x56, 0xf7, 0x21, 0xb1,
-0x9e, 0xe1, 0x88, 0x0b, 0xfc, 0x81, 0xa7, 0x26,
-0x8e, 0xe7, 0x9f, 0xc7, 0x25, 0x80, 0x07, 0xbf,
-0x47, 0xad, 0x12, 0x8f, 0xd0, 0xee, 0x74, 0xd0,
-0x32, 0x4c, 0xc7, 0xf0, 0xfd, 0x44, 0x0d, 0x2a,
-0xac, 0x14, 0xd4, 0xba, 0x7f, 0x8c, 0x0c, 0xff,
-0x7c, 0x56, 0xfd, 0xd7, 0x30, 0xb9, 0x89, 0x74,
-0x1a, 0x92, 0x41, 0xda, 0xc9, 0x4c, 0x4b, 0xf6,
-0x4b, 0xd6, 0x6d, 0xfd, 0x2f, 0xc0, 0xcc, 0x85,
-0x78, 0xbe, 0x4a, 0xe6, 0xb2, 0x62, 0x70, 0xb2,
-0x4b, 0xc4, 0xd4, 0x8e, 0x22, 0x8b, 0x7f, 0x3e,
-0x2b, 0xfe, 0xb5, 0xab, 0x7d, 0xc9, 0xe9, 0xeb,
-0x66, 0xcf, 0x9f, 0x42, 0xda, 0xe8, 0x12, 0x0c,
-0x72, 0x4d, 0x29, 0x5c, 0x45, 0xcb, 0x86, 0x4b,
-0x11, 0x76, 0x81, 0xf1, 0x7a, 0xe7, 0x4a, 0x40,
-0xd9, 0x58, 0x79, 0xd7, 0x69, 0xeb, 0x7f, 0x05,
-0x26, 0xe2, 0xdf, 0x38, 0x4a, 0x30, 0xb7, 0x50,
-0x5d, 0x19, 0xff, 0x4c, 0xc7, 0xaa, 0x8e, 0xb2,
-0x11, 0xe5, 0x7e, 0xf8, 0xd7, 0x27, 0x19, 0x65,
-0xc3, 0x70, 0xc1, 0xeb, 0xe9, 0xaa, 0x58, 0x99,
-0x29, 0xad, 0x8c, 0x13, 0x92, 0xa9, 0x9b, 0x20,
-0x55, 0x67, 0x60, 0xdd, 0xc7, 0xf3, 0xcf, 0x0f,
-0x91, 0x3d, 0x69, 0xff, 0x3e, 0xdf, 0xcf, 0xc4,
-0xcf, 0x92, 0xdb, 0xd3, 0xfe, 0x1e, 0xef, 0x56,
-0xe9, 0xb3, 0x1d, 0x6b, 0x0c, 0xb8, 0xc3, 0x7f,
-0x26, 0x7d, 0x96, 0x02, 0x74, 0x4d, 0xa9, 0x49,
-0xa9, 0x14, 0x5f, 0x95, 0x76, 0x44, 0xac, 0x3e,
-0x19, 0x7c, 0xbb, 0x71, 0x22, 0xfe, 0xf9, 0x8b,
-0x32, 0x57, 0xfb, 0x32, 0xf0, 0x7d, 0xb8, 0x8e,
-0xbd, 0xfd, 0x42, 0x73, 0x15, 0x24, 0x42, 0x24,
-0xc8, 0x7f, 0xb8, 0x68, 0x1e, 0x43, 0x64, 0x53,
-0x9c, 0xfa, 0x2f, 0x80, 0x66, 0xe2, 0x78, 0xfe,
-0x79, 0x30, 0x14, 0x34, 0xca, 0xed, 0x48, 0x4d,
-0x23, 0x27, 0xdc, 0xb6, 0xd9, 0xe1, 0x1a, 0x7c,
-0xdf, 0xbf, 0xae, 0x82, 0x53, 0x73, 0x38, 0x31,
-0x97, 0xcd, 0x36, 0x3f, 0x76, 0x16, 0xff, 0x61,
-0xc6, 0x10, 0x5d, 0x2d, 0xd1, 0x84, 0x9f, 0x1b,
-0x9d, 0xc8, 0x9b, 0xf1, 0x84, 0x33, 0x26, 0xa7,
-0x6a, 0xb1, 0xb2, 0xf9, 0x63, 0xe2, 0x5f, 0x2c,
-0x18, 0x7d, 0x2e, 0x13, 0x95, 0x46, 0xda, 0x43,
-0x85, 0x11, 0x21, 0x72, 0x45, 0x30, 0x37, 0xff,
-0x06, 0xad, 0x8a, 0x06, 0x12, 0x0d, 0xc7, 0x26,
-0x88, 0x7f, 0xb9, 0xd4, 0xbe, 0xa6, 0x72, 0xe3,
-0xbb, 0x8c, 0x08, 0xd1, 0xa1, 0x46, 0x64, 0xfc,
-0xb4, 0xd6, 0x60, 0xc6, 0x57, 0x09, 0xf3, 0x3e,
-0x8e, 0x7f, 0x9e, 0x4f, 0xf8, 0x3a, 0x5a, 0x8c,
-0x62, 0xd6, 0xf7, 0x8f, 0x29, 0xfb, 0xb2, 0xf4,
-0xbf, 0x74, 0xb1, 0x5f, 0xcc, 0x74, 0x95, 0x64,
-0xc5, 0xbf, 0xb4, 0xac, 0xf8, 0x97, 0x6f, 0xfd,
-0x9f, 0x0d, 0xa2, 0xfe, 0x57, 0x1f, 0x2f, 0x04,
-0x2b, 0x8c, 0x34, 0x2d, 0x62, 0x44, 0x88, 0x60,
-0x5c, 0xbf, 0x5e, 0x3a, 0xe5, 0x5a, 0x14, 0xa1,
-0x1e, 0xf0, 0x57, 0xb1, 0xc5, 0x7f, 0x68, 0xd5,
-0x7f, 0xcd, 0xb3, 0x96, 0xc0, 0x92, 0xfd, 0xc2,
-0x28, 0x0c, 0x33, 0xde, 0xe2, 0x11, 0xcc, 0x0a,
-0x9e, 0x83, 0x37, 0x20, 0x54, 0x64, 0xae, 0x73,
-0x89, 0x33, 0x72, 0x64, 0xf0, 0x97, 0x96, 0xa9,
-0xff, 0x22, 0xff, 0x44, 0x3e, 0x43, 0xc5, 0x80,
-0x30, 0x62, 0xe9, 0x7f, 0x15, 0x9e, 0xc4, 0xbb,
-0x8e, 0x36, 0xd8, 0xd9, 0x86, 0xe0, 0x15, 0x6c,
-0x72, 0x07, 0xcb, 0x14, 0x87, 0x7f, 0xde, 0x8e,
-0x7f, 0x35, 0x72, 0x92, 0x8d, 0xa4, 0x71, 0xbb,
-0x76, 0x6d, 0xbb, 0x3c, 0x03, 0x8c, 0xe9, 0x9a,
-0xa7, 0x5d, 0x41, 0xfd, 0x2f, 0x34, 0x60, 0xcc,
-0x76, 0x63, 0xbb, 0x36, 0xbf, 0x5d, 0xce, 0x0a,
-0x96, 0x05, 0x32, 0xfc, 0x1b, 0x85, 0xb6, 0xfe,
-0x57, 0x03, 0xa7, 0x52, 0xf1, 0x00, 0xfe, 0x32,
-0x10, 0xc8, 0xa3, 0x21, 0xc0, 0x2a, 0x37, 0x29,
-0x89, 0x07, 0x31, 0x46, 0x36, 0xbd, 0x51, 0x49,
-0xac, 0xc9, 0x2a, 0x16, 0xab, 0x5a, 0xaa, 0xfc,
-0xcb, 0x84, 0xfc, 0xf3, 0xa3, 0xc3, 0xf0, 0xe7,
-0x3f, 0x92, 0x60, 0xf0, 0xc9, 0xf0, 0xbd, 0x05,
-0x3f, 0x6c, 0xfb, 0x71, 0x6c, 0x75, 0x7f, 0xc4,
-0xf0, 0x6c, 0x94, 0xb6, 0xc5, 0x76, 0x0f, 0xd4,
-0xc6, 0xbc, 0x9b, 0xa4, 0xec, 0x22, 0xaf, 0x66,
-0xef, 0x84, 0xfa, 0x5f, 0x25, 0x67, 0x49, 0xdd,
-0x92, 0xca, 0x0d, 0x8d, 0xcb, 0xb4, 0x51, 0x79,
-0xe6, 0xbc, 0x7c, 0xad, 0xb1, 0x49, 0x7c, 0x65,
-0x63, 0xdd, 0x3c, 0xdf, 0xb5, 0x8d, 0x7f, 0xa3,
-0x9d, 0x6d, 0x9f, 0xf9, 0xc5, 0xfc, 0x8d, 0x0b,
-0xfe, 0x9a, 0xbc, 0xe2, 0x7e, 0x2e, 0x16, 0x25,
-0xda, 0x5e, 0x1e, 0x1f, 0xff, 0x12, 0xb0, 0x7e,
-0x30, 0x9f, 0x48, 0x3a, 0xbc, 0x95, 0x9c, 0x3b,
-0x2a, 0x8c, 0x09, 0xc3, 0xa7, 0x99, 0xa2, 0x9c,
-0xb7, 0x1d, 0xbc, 0xc1, 0x11, 0xd9, 0xe6, 0xdf,
-0xd0, 0x59, 0xcb, 0xc1, 0xec, 0xf8, 0x57, 0x1e,
-0x42, 0xaa, 0xaf, 0x83, 0x61, 0x24, 0x03, 0x01,
-0xe2, 0x21, 0x05, 0x34, 0x37, 0x49, 0x86, 0xc0,
-0x09, 0x14, 0xa9, 0x04, 0x06, 0xb4, 0xe4, 0x82,
-0x93, 0x46, 0x5d, 0xc1, 0xb2, 0x87, 0xe5, 0xea,
-0xed, 0xcb, 0xb3, 0xe2, 0x5f, 0x8f, 0xc9, 0xce,
-0x71, 0x3a, 0xea, 0x7f, 0xe5, 0x7a, 0xc5, 0xb6,
-0x4c, 0x64, 0x84, 0xb1, 0x8e, 0x1f, 0x65, 0x2d,
-0x01, 0xcd, 0xe3, 0x0a, 0x96, 0xb5, 0x91, 0xaa,
-0x97, 0xf3, 0x42, 0xd9, 0xf1, 0xaf, 0x6f, 0xc0,
-0xfb, 0xd9, 0x7f, 0x0a, 0x0f, 0xc1, 0x30, 0x4b,
-0xa7, 0x80, 0x19, 0x1e, 0x1e, 0xf6, 0x2a, 0xe3,
-0x6c, 0x12, 0xab, 0x50, 0x2a, 0x51, 0xe3, 0x02,
-0xc1, 0xd8, 0x72, 0x99, 0xac, 0xf2, 0x56, 0x1a,
-0x79, 0xf7, 0xda, 0x3c, 0x6f, 0x88, 0xbf, 0x7e,
-0x67, 0xc7, 0xbf, 0x76, 0xd1, 0x3a, 0x2e, 0xf2,
-0xf5, 0x8b, 0x4c, 0x45, 0x98, 0x85, 0xb6, 0x7e,
-0x81, 0x5d, 0x8b, 0xa5, 0xaf, 0xda, 0xc1, 0xb2,
-0xcb, 0xd0, 0x52, 0xbf, 0x24, 0x7f, 0x65, 0x36,
-0xff, 0xbc, 0x5d, 0xb7, 0x6e, 0xd7, 0x7f, 0xfd,
-0xc6, 0x66, 0x78, 0xb8, 0x90, 0x31, 0x66, 0xe1,
-0xb9, 0xdf, 0x53, 0x2e, 0xfe, 0x43, 0xd4, 0x26,
-0x48, 0x14, 0x67, 0xe9, 0x7f, 0x81, 0xcb, 0xb7,
-0x5b, 0x7a, 0x4f, 0xb9, 0x92, 0x88, 0x0c, 0x32,
-0xdf, 0xef, 0x40, 0x82, 0x55, 0x84, 0xa1, 0xfe,
-0x57, 0x3d, 0x63, 0x9b, 0x47, 0x6a, 0xe8, 0x41,
-0xdf, 0x62, 0x56, 0x08, 0xc6, 0x34, 0xc2, 0x2e,
-0x62, 0xd7, 0x0a, 0xef, 0x88, 0x8b, 0x7f, 0x5e,
-0xdb, 0xb5, 0x05, 0x7e, 0x32, 0x6c, 0x25, 0x98,
-0x25, 0xf8, 0x36, 0x6e, 0x64, 0xba, 0x35, 0x09,
-0xaf, 0xc6, 0x76, 0x04, 0xf8, 0xd6, 0xa6, 0xb3,
-0xbd, 0xe9, 0x8b, 0xf1, 0xc9, 0xe4, 0x43, 0x52,
-0xc9, 0xea, 0xbf, 0x8c, 0x5d, 0x5f, 0xac, 0x46,
-0x25, 0x65, 0x8b, 0x7f, 0xbe, 0xd4, 0xe6, 0x3f,
-0x64, 0xf5, 0x5f, 0xf2, 0x37, 0xfa, 0x38, 0x86,
-0x95, 0xf1, 0xcf, 0xe7, 0x9f, 0x6a, 0xde, 0x25,
-0x54, 0x5a, 0xfa, 0x5f, 0x58, 0x1a, 0xd6, 0x2c,
-0xd6, 0xc1, 0x84, 0x7f, 0xa3, 0x97, 0x5f, 0x87,
-0x54, 0x46, 0x4b, 0x5b, 0x44, 0x47, 0xff, 0xcb,
-0x1d, 0xff, 0x0a, 0x05, 0x07, 0xc0, 0x38, 0x46,
-0xa1, 0xe5, 0xa8, 0x5a, 0x23, 0x1e, 0xa5, 0x3b,
-0x92, 0xde, 0xa3, 0x9d, 0x35, 0xd8, 0x12, 0x0a,
-0x9e, 0x90, 0xae, 0x15, 0xbd, 0xd4, 0x95, 0xec,
-0x11, 0x6c, 0x5a, 0x3c, 0xd3, 0xe6, 0x9f, 0xef,
-0xc9, 0xaa, 0xff, 0x32, 0x22, 0xc3, 0x93, 0xf6,
-0x90, 0xf7, 0x51, 0xa8, 0x08, 0xb3, 0x9f, 0xdf,
-0x97, 0x2f, 0x98, 0x11, 0x74, 0x14, 0xdf, 0xc7,
-0xae, 0x01, 0xdf, 0x64, 0xb5, 0x12, 0xf0, 0x45,
-0xc6, 0x3f, 0x6c, 0xf1, 0x96, 0x8c, 0x8d, 0x7f,
-0xb1, 0xae, 0x0f, 0x31, 0x68, 0x12, 0x6a, 0x3b,
-0x4a, 0x2e, 0x28, 0xe8, 0x9c, 0x94, 0x1f, 0xd5,
-0x3e, 0xe4, 0x81, 0x30, 0x56, 0xd2, 0xde, 0xbf,
-0x28, 0x91, 0x95, 0x8b, 0x65, 0x44, 0x16, 0xc3,
-0xab, 0x72, 0x5c, 0xfd, 0x57, 0x39, 0x1a, 0xc8,
-0x6d, 0xd8, 0x58, 0xc7, 0xf5, 0xbf, 0x86, 0xa5,
-0x3a, 0x80, 0x5d, 0x35, 0xe6, 0xf5, 0xcc, 0xc0,
-0x96, 0x57, 0xc0, 0x17, 0x3d, 0xee, 0xf2, 0x33,
-0x89, 0x77, 0xa0, 0x2d, 0xe0, 0xc2, 0x5f, 0x99,
-0xb8, 0xd5, 0x56, 0x73, 0x7a, 0xca, 0xf3, 0x14,
-0xa0, 0xad, 0x9f, 0x32, 0x43, 0x04, 0xa3, 0x57,
-0x45, 0xe6, 0xc0, 0x4e, 0xe8, 0x0a, 0xf4, 0x48,
-0x0b, 0x33, 0xfc, 0x1b, 0xbb, 0x1f, 0x08, 0x86,
-0x94, 0xcd, 0x34, 0x30, 0x8e, 0x7f, 0x83, 0x1d,
-0xdd, 0x67, 0xeb, 0x7f, 0xc9, 0x3f, 0xe0, 0xd0,
-0xcc, 0x6a, 0x49, 0x88, 0x2b, 0x5c, 0x3c, 0x6f,
-0x14, 0xde, 0x63, 0x9b, 0xdc, 0xf8, 0x8b, 0xc5,
-0xbf, 0xc2, 0xb8, 0x3a, 0x44, 0x3f, 0xa9, 0xf0,
-0x60, 0x34, 0xd2, 0x7c, 0x35, 0x78, 0xf5, 0x47,
-0x78, 0xfd, 0x17, 0xb4, 0xe8, 0x31, 0xcc, 0xd6,
-0x58, 0x41, 0x1e, 0x31, 0x82, 0x87, 0x6d, 0x7f,
-0xc3, 0x50, 0x34, 0x8f, 0xc8, 0xf7, 0x2f, 0x9a,
-0xbf, 0x42, 0x71, 0xc5, 0x2b, 0x6d, 0xd9, 0x2f,
-0x70, 0xe3, 0x37, 0x83, 0x41, 0x7f, 0xc3, 0x54,
-0xa4, 0xb1, 0x45, 0x0f, 0x9f, 0xf0, 0x26, 0x8a,
-0x57, 0x88, 0x47, 0x0c, 0x58, 0x0b, 0x6b, 0xbd,
-0xc8, 0xc2, 0x84, 0xe4, 0xc6, 0x5f, 0xa5, 0xf5,
-0xe6, 0x3a, 0x96, 0x0d, 0x25, 0x66, 0xf4, 0xbf,
-0x60, 0x7a, 0x27, 0x5d, 0x94, 0xdf, 0x0f, 0xd8,
-0xb3, 0x6a, 0x54, 0xf7, 0x2d, 0x1a, 0x90, 0x4e,
-0x69, 0x99, 0xc4, 0x36, 0xd8, 0x77, 0xc0, 0x27,
-0xb1, 0xde, 0xab, 0xa6, 0x80, 0xda, 0x0d, 0xf6,
-0xd3, 0xdd, 0x5a, 0x93, 0xfe, 0x21, 0xc7, 0x56,
-0x73, 0x38, 0xc8, 0xe2, 0xd0, 0xac, 0x91, 0x73,
-0xd4, 0xb3, 0x33, 0x90, 0x77, 0x58, 0x8b, 0xf0,
-0x1e, 0x60, 0xbd, 0x9b, 0xd3, 0xc1, 0x01, 0x3b,
-0xfe, 0xc5, 0xf8, 0x0f, 0x5b, 0x6d, 0x48, 0x15,
-0x9f, 0x75, 0x7a, 0xb3, 0x4b, 0x5b, 0xf9, 0x3d,
-0x6d, 0xaf, 0x0b, 0x6d, 0xe1, 0xcc, 0xbf, 0x47,
-0xe6, 0xd8, 0x2d, 0xc8, 0xe7, 0xe0, 0x41, 0xbe,
-0x8b, 0x10, 0xc7, 0x05, 0x9c, 0xf6, 0xd0, 0x83,
-0x21, 0x2d, 0x5e, 0x58, 0x54, 0x74, 0x54, 0x70,
-0x9e, 0x14, 0xac, 0x8b, 0xc4, 0x0c, 0x01, 0x79,
-0x07, 0xbc, 0x54, 0x3d, 0xf0, 0xce, 0xcc, 0x90,
-0x3f, 0x74, 0x71, 0xae, 0x57, 0x37, 0xff, 0x06,
-0xad, 0xfa, 0x85, 0xda, 0xe5, 0xe7, 0xe5, 0x7e,
-0x6b, 0x9e, 0x46, 0x15, 0x3c, 0x52, 0xd5, 0xaf,
-0xa6, 0xfc, 0x67, 0x84, 0xbd, 0xd7, 0xb2, 0x48,
-0x28, 0x4a, 0x60, 0x57, 0x2d, 0xe9, 0x18, 0x93,
-0xa3, 0xe8, 0x37, 0xa7, 0x6f, 0xcf, 0x8a, 0x7f,
-0x91, 0xc8, 0xe9, 0x82, 0x7d, 0xd2, 0x19, 0xfd,
-0xc3, 0x64, 0x78, 0x58, 0xed, 0x61, 0xf7, 0xfc,
-0xb5, 0x1f, 0xf8, 0x9e, 0x96, 0xde, 0x35, 0xe0,
-0xb5, 0x03, 0xcf, 0x17, 0xcc, 0xc6, 0x05, 0xa3,
-0x76, 0x78, 0x0a, 0x2e, 0xd3, 0x3b, 0x58, 0x7a,
-0xc9, 0xc1, 0xda, 0x33, 0xe6, 0xc2, 0x4d, 0xe5,
-0x19, 0xfe, 0x0d, 0xc5, 0x5a, 0x82, 0xcb, 0x09,
-0x16, 0xc7, 0x1f, 0x6e, 0xbc, 0x6c, 0x5c, 0x31,
-0x38, 0x98, 0x55, 0xae, 0xb4, 0xd7, 0xbf, 0x71,
-0xfd, 0x59, 0xe1, 0x7e, 0xab, 0x7a, 0xa8, 0xcd,
-0x85, 0xbf, 0x3e, 0x4a, 0x82, 0x41, 0x5c, 0xfc,
-0xf3, 0x1a, 0x6c, 0x52, 0x03, 0x05, 0x3b, 0xcb,
-0x57, 0x90, 0x77, 0x8c, 0xf0, 0xc0, 0xda, 0x9d,
-0xd2, 0xbb, 0x60, 0x30, 0x3a, 0xd9, 0x4a, 0xf2,
-0x4e, 0x53, 0x18, 0x9f, 0xf7, 0x77, 0x15, 0x7c,
-0xde, 0x6d, 0x1a, 0x7c, 0xfe, 0xa6, 0x1d, 0xf5,
-0xd6, 0xf6, 0xc1, 0xcd, 0x56, 0xe2, 0xc6, 0x5f,
-0xce, 0xe3, 0x30, 0xcb, 0x52, 0x61, 0xc8, 0xa9,
-0xe2, 0x87, 0x0f, 0x4e, 0x15, 0xe4, 0x5e, 0x01,
-0xd6, 0x6b, 0x5f, 0x91, 0x7b, 0x7e, 0xcc, 0xad,
-0xe7, 0xf2, 0x1f, 0xcf, 0xca, 0x3f, 0xa4, 0xba,
-0xb9, 0x06, 0x63, 0xf4, 0x58, 0x05, 0x59, 0xea,
-0xd4, 0x2f, 0xc3, 0x46, 0x06, 0xab, 0x83, 0xf1,
-0xca, 0x30, 0x7b, 0x0a, 0x4c, 0xf0, 0xba, 0x5d,
-0x2f, 0xbd, 0x94, 0x36, 0xdd, 0x54, 0x4a, 0x3c,
-0x16, 0xff, 0xc6, 0x76, 0xc4, 0x5f, 0x66, 0x79,
-0x5a, 0x19, 0x15, 0xc1, 0xa7, 0x8b, 0xdf, 0x70,
-0xd4, 0x56, 0xa1, 0x4a, 0xab, 0x23, 0x45, 0x3f,
-0x32, 0x0e, 0x60, 0xa6, 0xdc, 0x7d, 0x57, 0x23,
-0x64, 0xf8, 0x46, 0xda, 0x26, 0x42, 0xc4, 0x94,
-0xb9, 0x57, 0x69, 0x2a, 0x55, 0x96, 0xce, 0x8b,
-0x66, 0xe5, 0x1f, 0x46, 0x43, 0x66, 0x41, 0x08,
-0xde, 0x09, 0xbf, 0x25, 0xa1, 0x73, 0x5e, 0x7c,
-0x6b, 0xfd, 0x16, 0x75, 0xe4, 0x67, 0x48, 0x5e,
-0xe3, 0x6b, 0x89, 0x96, 0x01, 0xdf, 0x6c, 0xe9,
-0xa8, 0x0c, 0x2f, 0xb4, 0x73, 0x32, 0xbe, 0xe2,
-0x76, 0x24, 0x19, 0xfe, 0x3a, 0x46, 0x86, 0xcd,
-0x5a, 0x54, 0xc4, 0x70, 0xc5, 0xbf, 0xfe, 0xe0,
-0xc4, 0x97, 0xb5, 0xb9, 0xec, 0xec, 0x42, 0x61,
-0xfa, 0x5f, 0x2d, 0x6d, 0x67, 0xe0, 0x65, 0xce,
-0xa3, 0x93, 0x65, 0x17, 0x4a, 0x23, 0xbd, 0x36,
-0xed, 0x7c, 0x9f, 0xef, 0xac, 0x70, 0x11, 0x3c,
-0xfc, 0xef, 0x60, 0x0e, 0xf0, 0x98, 0xfc, 0xc3,
-0x45, 0x3d, 0x8d, 0x3c, 0x36, 0xba, 0x88, 0x65,
-0x1b, 0x26, 0xc2, 0xe6, 0xa2, 0x54, 0xf1, 0x7b,
-0xf2, 0x91, 0xc2, 0xc8, 0xe0, 0x17, 0x76, 0x17,
-0x07, 0xc9, 0x87, 0x14, 0x5a, 0x7a, 0x58, 0x7e,
-0x42, 0xe6, 0xe5, 0x80, 0x8c, 0x88, 0x6f, 0x8f,
-0xe1, 0x3f, 0xbc, 0x07, 0xf5, 0x3d, 0x63, 0x95,
-0xfd, 0x9d, 0xb0, 0xd1, 0xc3, 0x46, 0x76, 0x23,
-0x93, 0xad, 0x6c, 0x5f, 0xa5, 0x57, 0xf6, 0x5b,
-0xbc, 0xbb, 0x37, 0x21, 0x9d, 0x91, 0x2b, 0x19,
-0xe6, 0x00, 0x4a, 0xab, 0x18, 0x76, 0xfc, 0xcb,
-0xe2, 0x3f, 0xc4, 0xf4, 0xe0, 0x08, 0x62, 0xab,
-0x33, 0xea, 0x7d, 0xb0, 0x21, 0x1e, 0x60, 0xf9,
-0x87, 0xe2, 0x95, 0x5b, 0x57, 0x6d, 0xa9, 0x1e,
-0xf5, 0x9c, 0x17, 0xa7, 0xd0, 0x03, 0x49, 0xd6,
-0xf2, 0x55, 0x17, 0x58, 0xa3, 0x5b, 0xd2, 0x81,
-0xc5, 0x59, 0xf1, 0x2f, 0xac, 0x87, 0x9d, 0x3d,
-0xbd, 0xa0, 0x81, 0xb9, 0x2b, 0x33, 0xe3, 0x47,
-0xf5, 0x1d, 0xc9, 0x00, 0x66, 0xd7, 0x1c, 0x57,
-0xda, 0xcc, 0xe0, 0x80, 0x32, 0xab, 0xc8, 0x67,
-0xec, 0x48, 0x54, 0xbc, 0xe4, 0x09, 0xa1, 0xdf,
-0x22, 0xd8, 0xfb, 0x57, 0x33, 0xdc, 0x75, 0xb9,
-0x59, 0xf1, 0x2f, 0xad, 0x3e, 0x85, 0x6c, 0x87,
-0xc6, 0xb1, 0xe6, 0xfa, 0xc4, 0xba, 0x65, 0xd2,
-0x28, 0xb9, 0x2c, 0xd7, 0xac, 0xf5, 0xbd, 0x2f,
-0x8d, 0x82, 0xc3, 0x52, 0xbf, 0xb1, 0x20, 0x2d,
-0xcd, 0x21, 0x97, 0x9b, 0x6b, 0x12, 0x80, 0xbf,
-0x96, 0x33, 0xb0, 0xa6, 0xf2, 0xf8, 0x17, 0x40,
-0xb3, 0xc1, 0x2c, 0xfe, 0xf9, 0x79, 0x11, 0x2b,
-0x8b, 0x49, 0x8b, 0xe4, 0xa2, 0x61, 0x80, 0x01,
-0xce, 0x5b, 0x63, 0x9a, 0xa2, 0xb1, 0xa8, 0x55,
-0x65, 0x1c, 0x1d, 0x8a, 0x0f, 0x5d, 0x33, 0x74,
-0x02, 0xaf, 0xb7, 0xe2, 0x5f, 0xda, 0xd8, 0xfa,
-0x2f, 0x2c, 0x1f, 0x6b, 0x03, 0x97, 0x4f, 0x08,
-0x73, 0xa1, 0xd8, 0x93, 0x56, 0x5a, 0x94, 0x3c,
-0xa2, 0x70, 0x6f, 0x50, 0x3f, 0x09, 0x48, 0x6a,
-0xb2, 0xed, 0x5e, 0x1e, 0x67, 0x84, 0x03, 0x09,
-0x70, 0xfe, 0x4b, 0x55, 0x77, 0xfd, 0xd7, 0x6d,
-0x55, 0xe4, 0xaf, 0x90, 0x4f, 0x2f, 0xc9, 0x03,
-0x2b, 0x14, 0xbc, 0xca, 0x20, 0x89, 0xba, 0x44,
-0x7b, 0x4d, 0x8c, 0xa7, 0xb4, 0x28, 0x1b, 0xb3,
-0x30, 0x9a, 0xe1, 0x37, 0x96, 0x8f, 0xa9, 0xff,
-0xaa, 0x22, 0x0b, 0x92, 0x45, 0x18, 0x85, 0x79,
-0x1d, 0xfe, 0xaa, 0x48, 0x47, 0xc1, 0x59, 0x92,
-0x87, 0xcc, 0xdb, 0xec, 0x3a, 0x49, 0x31, 0x2d,
-0x7f, 0x5f, 0x08, 0xb6, 0x04, 0x12, 0xf1, 0x31,
-0xd7, 0x09, 0x74, 0x4d, 0xc0, 0x7f, 0x88, 0x69,
-0x6c, 0xba, 0xd1, 0x09, 0x6e, 0xbc, 0xc8, 0xc8,
-0xea, 0x19, 0x52, 0xb0, 0xbb, 0x50, 0x11, 0x2c,
-0x50, 0xc8, 0xe0, 0xc0, 0x0a, 0x3b, 0x59, 0x31,
-0x69, 0x60, 0xfd, 0x97, 0xa0, 0xbb, 0xf0, 0x97,
-0xa7, 0x33, 0xfe, 0x58, 0x3a, 0xd9, 0x1f, 0x08,
-0x7b, 0x7c, 0xf1, 0xe7, 0x74, 0x30, 0x22, 0x9e,
-0xfc, 0x78, 0x5b, 0x3a, 0x39, 0x12, 0x60, 0xb2,
-0x5f, 0xe9, 0x6d, 0x27, 0xa7, 0x33, 0x6f, 0xd9,
-0x1d, 0x67, 0x6c, 0x0e, 0x51, 0xc0, 0xd4, 0x2e,
-0xfe, 0x0d, 0x44, 0x40, 0xbe, 0xe6, 0xc6, 0x53,
-0x25, 0x48, 0x2b, 0x3a, 0x09, 0xc3, 0x55, 0x6f,
-0x70, 0x6e, 0xf9, 0x13, 0xd0, 0x35, 0x17, 0x83,
-0x53, 0x17, 0xc9, 0x25, 0xb1, 0x3e, 0x5a, 0xb0,
-0xc1, 0x9d, 0xf3, 0x76, 0x49, 0xab, 0x62, 0xf5,
-0x5f, 0x99, 0xfc, 0xc3, 0x4b, 0x24, 0xb2, 0xdc,
-0xf7, 0xfd, 0xe2, 0x17, 0x12, 0xbd, 0xc9, 0x30,
-0x18, 0x8d, 0x6f, 0xd2, 0x51, 0x8a, 0x2d, 0xd2,
-0x9b, 0xf4, 0xd0, 0x36, 0x30, 0x36, 0x81, 0x31,
-0xba, 0x65, 0x8e, 0xb9, 0x70, 0x20, 0xc3, 0x1d,
-0xc1, 0xe3, 0x5f, 0xde, 0x31, 0xf5, 0x5f, 0x2c,
-0xed, 0xf0, 0x34, 0xe9, 0x30, 0x66, 0x69, 0x6a,
-0x3b, 0x18, 0x7b, 0x9a, 0xf0, 0xbc, 0x8e, 0x55,
-0x7b, 0xc1, 0x3c, 0x6f, 0x63, 0x99, 0x96, 0x7e,
-0x1e, 0x11, 0x73, 0xc0, 0x5a, 0x0a, 0x96, 0x57,
-0x71, 0xf8, 0x37, 0x2c, 0xfe, 0xc3, 0x66, 0xb5,
-0x44, 0x7c, 0x43, 0x5c, 0x6d, 0xe8, 0x2d, 0x60,
-0x3c, 0x4f, 0xba, 0x0c, 0xde, 0x42, 0x5a, 0xb9,
-0xf1, 0x3c, 0xd9, 0x5d, 0x18, 0x70, 0xd2, 0x0e,
-0x79, 0x68, 0xac, 0x8b, 0x2c, 0x03, 0x9c, 0xbb,
-0xb4, 0xc8, 0x95, 0x7f, 0x68, 0x56, 0x45, 0xd5,
-0x0d, 0x2c, 0xda, 0x85, 0xda, 0x5e, 0xf1, 0x41,
-0x1d, 0xb5, 0xe1, 0xae, 0xdb, 0x28, 0xbe, 0x41,
-0x57, 0xcb, 0x55, 0x0d, 0x2a, 0xc3, 0xef, 0x8a,
-0x6e, 0x94, 0xe2, 0x72, 0xdf, 0x62, 0xaf, 0x7b,
-0x97, 0x51, 0x81, 0x39, 0x8a, 0xee, 0xfa, 0x2f,
-0x23, 0xf2, 0x25, 0x5f, 0xa2, 0xed, 0x79, 0xad,
-0xd7, 0x08, 0x2f, 0xf3, 0x3d, 0x8a, 0xfc, 0x87,
-0x46, 0xa4, 0x99, 0x09, 0x28, 0x1f, 0x4a, 0x45,
-0xee, 0xf5, 0xfd, 0x50, 0xfa, 0xdd, 0xbc, 0xb3,
-0x89, 0xe9, 0xf7, 0xac, 0xcd, 0x70, 0x6b, 0xb0,
-0x8c, 0xcd, 0x59, 0x86, 0xf2, 0x5d, 0xd5, 0xaa,
-0xff, 0x5a, 0x2e, 0x6c, 0x13, 0x38, 0xce, 0x6d,
-0xc4, 0xd0, 0x18, 0x27, 0xfc, 0xe7, 0xd5, 0x5e,
-0x9b, 0x5d, 0x99, 0x8d, 0x85, 0x6f, 0xb9, 0xd2,
-0x0e, 0x1d, 0xd2, 0x8f, 0x86, 0x6a, 0xe4, 0xdf,
-0xd0, 0x1d, 0xfc, 0x65, 0x46, 0x2c, 0x90, 0xe5,
-0x62, 0x6b, 0xd1, 0xb8, 0xfe, 0x97, 0x01, 0x06,
-0x95, 0x4e, 0x8b, 0xfd, 0x86, 0x1b, 0xc8, 0xdb,
-0xd0, 0xcc, 0xdb, 0xe6, 0xce, 0x3f, 0x7c, 0x6f,
-0xad, 0x05, 0xa9, 0x7e, 0x4a, 0xb6, 0x5a, 0x89,
-0x88, 0x39, 0x55, 0xd4, 0x93, 0x14, 0xfb, 0x19,
-0xda, 0xf2, 0x20, 0xff, 0xc6, 0x1a, 0x52, 0x9d,
-0x50, 0xde, 0x8d, 0x43, 0x97, 0xcd, 0x7f, 0xb8,
-0x9f, 0x7e, 0x96, 0x2a, 0x83, 0xee, 0xfa, 0x2f,
-0x17, 0xa4, 0xd2, 0x4d, 0x47, 0x5b, 0x59, 0xc9,
-0x18, 0x0d, 0x8c, 0x69, 0xed, 0xf5, 0x3c, 0xe2,
-0xde, 0xbf, 0x76, 0xd0, 0x6d, 0x66, 0x60, 0xb6,
-0x1b, 0x7f, 0x3d, 0xce, 0x75, 0x81, 0x2f, 0x92,
-0x9f, 0x67, 0xb4, 0x95, 0xab, 0xd3, 0x8e, 0xe1,
-0x69, 0xf1, 0x33, 0xe9, 0xe1, 0x97, 0xf2, 0x0c,
-0x9b, 0x32, 0x82, 0xc7, 0xbf, 0xb0, 0x42, 0xd6,
-0x5d, 0xff, 0xe5, 0xe4, 0x1f, 0xfe, 0xc2, 0x89,
-0x6d, 0xb5, 0xa2, 0x10, 0x33, 0x1a, 0x71, 0xcb,
-0x00, 0xb4, 0x95, 0xac, 0x5c, 0x9c, 0x91, 0x5d,
-0x7e, 0x95, 0x7c, 0x44, 0x6f, 0xc2, 0x2e, 0xbb,
-0xfe, 0xeb, 0x1a, 0x2b, 0x7b, 0x2d, 0xbb, 0x6e,
-0x42, 0xac, 0xb3, 0x88, 0x38, 0xc0, 0x60, 0x6c,
-0x87, 0x4c, 0x61, 0x8a, 0xba, 0xc7, 0xbc, 0x02,
-0xfb, 0x4e, 0xb5, 0xbb, 0xfe, 0x2b, 0xfa, 0x1d,
-0x2e, 0xb2, 0x1c, 0x31, 0xae, 0xd0, 0x1a, 0xcc,
-0x3f, 0x9c, 0x62, 0x1c, 0x07, 0xd8, 0x75, 0xfd,
-0xa8, 0xb4, 0xdf, 0xb8, 0xe2, 0x9c, 0xc6, 0x27,
-0xea, 0x97, 0xb1, 0x8c, 0x44, 0xce, 0xd1, 0x01,
-0x2d, 0x97, 0xc6, 0xd5, 0x7f, 0xed, 0xc2, 0x48,
-0x56, 0x0b, 0x60, 0xc6, 0x5d, 0x44, 0x1f, 0xf2,
-0xb4, 0x48, 0x9b, 0xc9, 0xaf, 0xc8, 0xdc, 0xa3,
-0x30, 0x09, 0x53, 0x18, 0x5c, 0x02, 0xbf, 0x0e,
-0x66, 0x63, 0x4b, 0xd5, 0xdf, 0x28, 0xa6, 0x38,
-0x19, 0xe1, 0x12, 0x9f, 0xba, 0xbd, 0xb4, 0xbc,
-0x29, 0x8b, 0x7f, 0x5e, 0xae, 0x8f, 0x6e, 0xc1,
-0xd3, 0xa7, 0xc9, 0xc9, 0x03, 0xe4, 0x86, 0xfe,
-0xbc, 0x61, 0xf1, 0xdb, 0xc2, 0x2a, 0x0d, 0x26,
-0x73, 0x38, 0xbc, 0xb9, 0x83, 0xcf, 0x6a, 0x9c,
-0xe3, 0x2f, 0x8f, 0x81, 0x05, 0xc8, 0x9a, 0xc5,
-0xd1, 0xb1, 0x53, 0x29, 0x33, 0x03, 0xcb, 0xdc,
-0xf5, 0x5f, 0xe0, 0xc6, 0x0f, 0xab, 0xb7, 0x88,
-0x9f, 0xd7, 0x77, 0xf4, 0x57, 0x0c, 0x48, 0xb3,
-0xc5, 0x87, 0x0b, 0xc1, 0xbd, 0x1c, 0x56, 0x67,
-0x13, 0xa4, 0x50, 0x66, 0xab, 0x7c, 0x0c, 0x8c,
-0xaa, 0x01, 0x25, 0x8b, 0xb7, 0x79, 0x37, 0xf5,
-0x13, 0x45, 0xf7, 0xb8, 0xea, 0xbf, 0x3e, 0xa4,
-0xa1, 0x41, 0x1f, 0x8a, 0x62, 0x7f, 0x48, 0x67,
-0xbd, 0xfe, 0x50, 0x8f, 0xf4, 0xf7, 0xc2, 0x73,
-0x1d, 0x91, 0x93, 0xbe, 0x1e, 0xe9, 0x67, 0x3a,
-0xf8, 0x87, 0xaf, 0x43, 0xd7, 0xbb, 0x1d, 0x17,
-0x68, 0xd5, 0x17, 0xab, 0x92, 0xd2, 0x53, 0xd9,
-0x87, 0xb1, 0xde, 0xac, 0xfa, 0x2f, 0x96, 0xbd,
-0x86, 0xda, 0xca, 0x17, 0xb4, 0x3d, 0xe6, 0xc3,
-0x5d, 0x6d, 0x67, 0x62, 0x17, 0x94, 0x5a, 0xd3,
-0xd7, 0x85, 0xfa, 0xcb, 0xa5, 0x11, 0x4b, 0x88,
-0x39, 0x14, 0x59, 0xec, 0x12, 0x0e, 0xb0, 0xeb,
-0xf5, 0x76, 0x8e, 0xa9, 0xff, 0xea, 0xcd, 0x1f,
-0x96, 0xbe, 0x2d, 0xbf, 0x86, 0x65, 0x5f, 0xdc,
-0x39, 0xa9, 0x39, 0xf8, 0x30, 0x1a, 0xef, 0x03,
-0xec, 0x9a, 0x04, 0xf8, 0x0b, 0x7d, 0xd1, 0x40,
-0x3e, 0xef, 0xaa, 0x36, 0xd7, 0x71, 0x5c, 0x50,
-0xd3, 0xee, 0xed, 0x91, 0xac, 0xfa, 0x2f, 0xc6,
-0x3f, 0x9f, 0x76, 0xfc, 0x43, 0xdb, 0x1b, 0x24,
-0xd3, 0x01, 0x76, 0xe5, 0x9e, 0x51, 0x76, 0x30,
-0xdc, 0xe4, 0x41, 0x1f, 0xb2, 0x96, 0x28, 0xfb,
-0x5c, 0xfe, 0xb3, 0xdc, 0x43, 0xfc, 0x89, 0xfc,
-0x67, 0xb3, 0xf8, 0xe7, 0x29, 0x13, 0x59, 0x5e,
-0x41, 0x7e, 0x20, 0x22, 0xc9, 0x7c, 0x11, 0x72,
-0x8c, 0xe3, 0x9f, 0x83, 0x67, 0xfe, 0x24, 0x18,
-0x3f, 0xb0, 0xea, 0xbf, 0xb4, 0xbc, 0xa7, 0x9c,
-0xeb, 0xe4, 0x02, 0x8e, 0x53, 0xfc, 0xcd, 0xca,
-0xce, 0x86, 0xb4, 0xc3, 0x7f, 0x48, 0xf6, 0xea,
-0xfc, 0xfb, 0xd0, 0x4e, 0x31, 0xf0, 0x32, 0xcb,
-0x0a, 0xde, 0xcb, 0x0e, 0x75, 0x8b, 0x16, 0x92,
-0xbd, 0x5a, 0xcc, 0xec, 0x4c, 0x71, 0x9a, 0x65,
-0x51, 0x61, 0xcf, 0xa9, 0xb6, 0x82, 0xeb, 0x2f,
-0x77, 0xeb, 0x49, 0xf3, 0xef, 0x42, 0x4e, 0xfd,
-0x57, 0xfe, 0x0a, 0xc6, 0xa4, 0xc1, 0x49, 0x51,
-0xc0, 0x91, 0x5e, 0x84, 0xb1, 0x48, 0x9e, 0x5b,
-0x28, 0x22, 0xe1, 0x64, 0xb7, 0xe9, 0x7b, 0xba,
-0x38, 0x28, 0x5f, 0xd0, 0xef, 0x4f, 0x3c, 0x94,
-0xc4, 0xd4, 0x44, 0x4e, 0x96, 0xf8, 0xae, 0x81,
-0x42, 0x96, 0xf0, 0x46, 0x32, 0x45, 0xa7, 0xfe,
-0xeb, 0x6c, 0x03, 0xd2, 0xe8, 0x7d, 0xe9, 0x8c,
-0xf1, 0xcf, 0x00, 0x8a, 0x39, 0x9f, 0x9e, 0xc0,
-0x88, 0xf5, 0xde, 0xe5, 0xde, 0xfb, 0x07, 0xc5,
-0xc8, 0xd1, 0x51, 0x1b, 0x67, 0xfc, 0x87, 0x57,
-0x04, 0x40, 0x0a, 0x8c, 0x9f, 0x2d, 0x54, 0x6f,
-0x56, 0x8f, 0xe3, 0x3f, 0xc4, 0x23, 0x0b, 0xfa,
-0x3e, 0xf2, 0x28, 0x7e, 0x80, 0x24, 0xf3, 0x7a,
-0x8d, 0x19, 0x04, 0xcf, 0x93, 0xbc, 0x86, 0xa4,
-0x28, 0xc3, 0xad, 0x17, 0x03, 0x57, 0x94, 0x62,
-0x58, 0xca, 0x36, 0x18, 0x4c, 0x2c, 0x68, 0x76,
-0x91, 0xd4, 0x24, 0xbd, 0xc3, 0xaa, 0x1b, 0x7f,
-0x71, 0x48, 0x75, 0x05, 0xe0, 0x1d, 0xbc, 0x76,
-0x46, 0xfc, 0x11, 0xb2, 0xcb, 0x28, 0x1f, 0x50,
-0x30, 0x97, 0xee, 0xe7, 0xa4, 0xdc, 0x54, 0x47,
-0xa4, 0x2b, 0xe4, 0x80, 0xf9, 0xd9, 0x61, 0xf5,
-0xa2, 0xf4, 0x1e, 0x18, 0x16, 0xff, 0x61, 0x97,
-0x08, 0xf7, 0x73, 0x87, 0xc7, 0x85, 0xbf, 0xac,
-0x5b, 0x7d, 0x6d, 0xe9, 0x63, 0x58, 0xf6, 0x35,
-0xc3, 0xe3, 0x35, 0x76, 0x18, 0xfa, 0xf3, 0x1d,
-0x33, 0xb5, 0x17, 0x95, 0x1d, 0x9a, 0xde, 0x37,
-0xa6, 0xe4, 0xa4, 0xc9, 0x3a, 0x57, 0x4f, 0x22,
-0xff, 0xbc, 0x7e, 0xfb, 0x38, 0xfe, 0x43, 0xb8,
-0x25, 0x2c, 0x4c, 0x1d, 0x2c, 0xdd, 0xc1, 0x11,
-0xc7, 0x19, 0xe1, 0x49, 0xf1, 0xa7, 0x48, 0x4d,
-0xff, 0x94, 0xb0, 0xd7, 0x0e, 0x77, 0xe2, 0x2d,
-0xd1, 0xc9, 0xf0, 0x3b, 0x9d, 0xfe, 0x1c, 0x78,
-0x44, 0x16, 0xfe, 0x92, 0xdd, 0xf1, 0xaf, 0x77,
-0x6c, 0xda, 0x43, 0x0c, 0x22, 0x03, 0xba, 0x39,
-0xaa, 0x5c, 0x10, 0x91, 0x14, 0xa5, 0x08, 0x53,
-0xac, 0xfd, 0xd0, 0x25, 0xf2, 0x84, 0x6a, 0x8e,
-0xbf, 0xe8, 0x9e, 0xe1, 0x85, 0x49, 0xb5, 0x70,
-0x5c, 0xfc, 0xeb, 0x14, 0xcf, 0xcb, 0x75, 0xf8,
-0x0f, 0xf9, 0x53, 0x70, 0x33, 0x2f, 0x0d, 0x63,
-0x3e, 0x7f, 0x4a, 0xba, 0x28, 0xfc, 0x21, 0x93,
-0xac, 0x78, 0xf3, 0x90, 0xaf, 0x4c, 0x9d, 0xb0,
-0xfe, 0x4b, 0x88, 0x58, 0x5a, 0x12, 0x0a, 0xbb,
-0xa3, 0x78, 0xf6, 0x5a, 0x3e, 0x3b, 0xd7, 0x12,
-0x19, 0x8d, 0x79, 0xd0, 0xfa, 0x3e, 0xc5, 0x67,
-0xb4, 0x93, 0xa4, 0x76, 0xc0, 0xbb, 0xdf, 0xc6,
-0x5f, 0x2e, 0xfe, 0x79, 0x5e, 0xe4, 0xc5, 0xaa,
-0xbd, 0xea, 0xcd, 0x72, 0x33, 0x7f, 0x58, 0x7c,
-0x96, 0x42, 0xcb, 0xeb, 0x76, 0xfd, 0xd7, 0x90,
-0x3a, 0xdc, 0x10, 0xd4, 0x0e, 0xc8, 0x16, 0xbf,
-0xcd, 0x6e, 0xf2, 0xd3, 0x81, 0x8e, 0x9d, 0x62,
-0xf7, 0xc7, 0xd7, 0x7f, 0x81, 0x31, 0xe0, 0xef,
-0xcd, 0x0b, 0x15, 0x15, 0xd0, 0xbd, 0x84, 0x91,
-0xf4, 0xb2, 0xae, 0x93, 0xac, 0x34, 0x6c, 0x87,
-0x1d, 0x07, 0x49, 0xc4, 0xfc, 0xb1, 0x7e, 0xcd,
-0x7f, 0x0b, 0x7f, 0xbe, 0x86, 0x5d, 0xf1, 0x2f,
-0x93, 0x91, 0x1c, 0x62, 0xf1, 0x11, 0xf8, 0xfc,
-0x6f, 0xdc, 0xb8, 0x52, 0x44, 0x01, 0x14, 0x56,
-0x08, 0x66, 0xc3, 0x2e, 0x78, 0x63, 0xef, 0xa0,
-0x16, 0x40, 0xd8, 0x99, 0x78, 0xf2, 0x0e, 0x40,
-0x64, 0x4f, 0x39, 0xf8, 0x0b, 0xd9, 0x0e, 0x0f,
-0xb1, 0xfa, 0xaf, 0x1d, 0xc8, 0x7f, 0xc8, 0x4f,
-0x8d, 0xc2, 0x66, 0x4e, 0x48, 0x2a, 0x18, 0xf8,
-0x50, 0x8b, 0x98, 0x0f, 0x85, 0x8a, 0x31, 0xdb,
-0x90, 0xd5, 0x7f, 0x21, 0x59, 0xc7, 0x6c, 0xae,
-0x11, 0x36, 0x60, 0xd4, 0xf6, 0x2d, 0x2c, 0x52,
-0x33, 0xf8, 0x8b, 0x1f, 0x59, 0x58, 0x24, 0xa2,
-0x03, 0x05, 0xec, 0xa0, 0xc3, 0xa8, 0x1f, 0x98,
-0x74, 0x6f, 0xdb, 0x25, 0x80, 0xdb, 0xac, 0x85,
-0xd5, 0x57, 0x9e, 0xf0, 0x9d, 0x53, 0x1d, 0x7e,
-0x51, 0x1c, 0xbc, 0xff, 0x68, 0x36, 0xff, 0x86,
-0xad, 0x74, 0x4f, 0x50, 0xbc, 0xde, 0xd7, 0x2d,
-0xbd, 0x47, 0xdf, 0xd1, 0x6b, 0x87, 0xbc, 0xb5,
-0x52, 0xa5, 0xb1, 0xd7, 0x5f, 0xd5, 0xef, 0xdd,
-0x81, 0xef, 0x1f, 0xbd, 0x6a, 0xc8, 0xbb, 0xc3,
-0x5a, 0x38, 0x0b, 0xbf, 0x23, 0x46, 0x53, 0xa7,
-0x8f, 0xe3, 0x9f, 0x7f, 0xb1, 0x7f, 0x52, 0xb4,
-0x72, 0x40, 0xbd, 0x17, 0x1d, 0x06, 0xfd, 0xb3,
-0xa6, 0x07, 0xb3, 0xe5, 0xff, 0x40, 0xaa, 0xb1,
-0xce, 0xee, 0x87, 0xe6, 0x2e, 0x74, 0x18, 0x5a,
-0x1a, 0x60, 0x03, 0x6a, 0x99, 0xca, 0xf7, 0xf7,
-0xa7, 0x01, 0x91, 0xa9, 0x21, 0xe9, 0x9e, 0x2c,
-0xfc, 0xc5, 0xf9, 0xe7, 0x6f, 0x60, 0xb4, 0x87,
-0x30, 0xcf, 0x8f, 0x27, 0x6e, 0x1c, 0x54, 0x18,
-0x99, 0xff, 0x86, 0xca, 0xc1, 0x8e, 0xfb, 0xe6,
-0x4f, 0x51, 0xd0, 0x88, 0xde, 0xe7, 0x7f, 0x35,
-0x83, 0xbf, 0x52, 0xf4, 0x09, 0x34, 0xc6, 0xf0,
-0x1f, 0x1e, 0xe1, 0x7e, 0x8b, 0xb5, 0xee, 0x9d,
-0x0c, 0x6e, 0xe7, 0x22, 0x12, 0x5f, 0x61, 0xce,
-0x46, 0x49, 0x1d, 0x97, 0x27, 0x63, 0x17, 0x82,
-0x91, 0xa7, 0x46, 0x00, 0xb5, 0xdd, 0xe1, 0xe0,
-0x2f, 0xe5, 0x3c, 0x99, 0xc2, 0x43, 0x5a, 0x6f,
-0xdb, 0x81, 0xb0, 0xb7, 0x49, 0x2d, 0x92, 0x6c,
-0x44, 0x95, 0x3d, 0x8c, 0x76, 0xa3, 0xdc, 0xe6,
-0xdf, 0x28, 0x1f, 0x72, 0xe5, 0x1f, 0x1a, 0x73,
-0x7a, 0x7c, 0x67, 0xb2, 0xf8, 0x37, 0xc6, 0xd7,
-0x7f, 0x19, 0x76, 0x8b, 0xe8, 0x96, 0x66, 0xce,
-0x36, 0x94, 0x9f, 0x10, 0x9f, 0xd0, 0x96, 0xc1,
-0x5f, 0xc2, 0xa8, 0xc0, 0xd5, 0xbe, 0xc8, 0x59,
-0x16, 0x4f, 0x11, 0x59, 0x2e, 0x96, 0xc1, 0x44,
-0x69, 0x57, 0x93, 0x3a, 0x83, 0xd3, 0xce, 0x8f,
-0xab, 0x85, 0x81, 0x31, 0xb7, 0x2e, 0x4a, 0x34,
-0x8e, 0xe3, 0x9f, 0xf7, 0xf3, 0x94, 0x30, 0x5e,
-0x85, 0x64, 0x2e, 0x65, 0x8a, 0x4e, 0xfa, 0x13,
-0xa4, 0xaa, 0x39, 0x3f, 0x51, 0x8e, 0x44, 0x76,
-0x55, 0x2d, 0x63, 0x62, 0x64, 0xe6, 0xd6, 0xe6,
-0xce, 0x8d, 0x0d, 0xe3, 0xf5, 0x97, 0x31, 0x7c,
-0xc6, 0x89, 0x38, 0xe4, 0xdd, 0x76, 0xb2, 0x22,
-0x5c, 0xa7, 0x21, 0x2f, 0x51, 0x54, 0x21, 0xaf,
-0x16, 0xaa, 0xe6, 0x67, 0x5f, 0xa7, 0x0b, 0xc7,
-0x6c, 0x8a, 0x4f, 0xc0, 0x3f, 0x4f, 0xbb, 0xf4,
-0x98, 0x5d, 0xed, 0xa5, 0x2f, 0x54, 0x99, 0x11,
-0x0a, 0x2e, 0x44, 0x46, 0x44, 0x8a, 0x8c, 0x88,
-0xd8, 0xe2, 0x2e, 0x16, 0x4b, 0x9a, 0x6a, 0x91,
-0x27, 0x9e, 0x5d, 0xff, 0xa5, 0xf2, 0xaa, 0x3a,
-0xab, 0x36, 0x07, 0xf6, 0x5c, 0x8d, 0x13, 0xd9,
-0x81, 0xff, 0x9c, 0xc3, 0x64, 0x73, 0x9d, 0xe9,
-0x0d, 0x38, 0xf8, 0x2b, 0x7c, 0xd5, 0x3a, 0xaa,
-0x8e, 0xd7, 0x5f, 0x66, 0x61, 0xaf, 0xa6, 0x49,
-0xac, 0xfe, 0x6b, 0x76, 0x64, 0x21, 0xc6, 0xbf,
-0xe6, 0x8d, 0x86, 0xb8, 0x61, 0xd8, 0xa5, 0x61,
-0x2e, 0xfc, 0x55, 0x72, 0x00, 0xf9, 0x0f, 0xdf,
-0x9c, 0x90, 0xff, 0xd0, 0x89, 0x6d, 0xcd, 0xe1,
-0xf9, 0x87, 0xb7, 0x01, 0xc8, 0xf2, 0xd8, 0xfc,
-0xf3, 0xbe, 0x44, 0xf9, 0x36, 0xf7, 0x98, 0x1a,
-0xc0, 0x7a, 0xea, 0x18, 0xfc, 0x25, 0x65, 0x61,
-0x2b, 0x3c, 0x6c, 0xc8, 0xb7, 0x69, 0x37, 0x3c,
-0xbc, 0x2b, 0xc2, 0x13, 0x11, 0x33, 0xc1, 0x32,
-0xf9, 0x19, 0xda, 0x49, 0x1b, 0xdc, 0xf8, 0x4b,
-0xf4, 0xba, 0xeb, 0xbf, 0x44, 0x14, 0x62, 0x0e,
-0xd8, 0xf9, 0x87, 0x7a, 0x06, 0x76, 0x41, 0x57,
-0xbb, 0xbb, 0x58, 0x2c, 0x69, 0x2c, 0xd0, 0x72,
-0x37, 0x64, 0xd5, 0x7f, 0xcd, 0x73, 0xaf, 0xe9,
-0x32, 0x46, 0xd7, 0x8c, 0x45, 0x5e, 0x85, 0x37,
-0x92, 0xe9, 0x18, 0x08, 0x73, 0xba, 0xf8, 0x4d,
-0x22, 0x61, 0xcb, 0x0e, 0xe3, 0x6f, 0xa2, 0xea,
-0xc6, 0xdc, 0x07, 0x1d, 0xfc, 0xa5, 0xb8, 0xf5,
-0xec, 0x0c, 0x1f, 0xaf, 0x3a, 0x44, 0x19, 0xc4,
-0xf2, 0x41, 0x72, 0x48, 0xb6, 0xa8, 0x66, 0x76,
-0x13, 0x8b, 0xae, 0xd0, 0x35, 0x99, 0xe1, 0x66,
-0x5f, 0x42, 0xdd, 0x3e, 0xb1, 0xfe, 0x17, 0x2f,
-0xf2, 0x3a, 0xeb, 0x88, 0x02, 0xc8, 0x63, 0x29,
-0x28, 0x33, 0x83, 0x99, 0x34, 0xf3, 0x82, 0xbf,
-0x74, 0xc5, 0xbf, 0xe4, 0x29, 0xe3, 0x9e, 0x41,
-0x76, 0x23, 0x19, 0xc4, 0x84, 0xa7, 0xd0, 0x67,
-0xd1, 0x66, 0x2a, 0x5e, 0x22, 0xda, 0x85, 0x60,
-0x6c, 0x4c, 0x18, 0x7c, 0xb0, 0xb6, 0xf1, 0xfc,
-0xf3, 0x8c, 0xf6, 0xb0, 0x95, 0x9d, 0xc9, 0xec,
-0xa7, 0xe5, 0x9b, 0x94, 0xa4, 0x38, 0x1b, 0x10,
-0xd9, 0xcd, 0x09, 0xec, 0x12, 0xd7, 0x90, 0x1b,
-0x7a, 0x38, 0x11, 0x87, 0x6c, 0xe7, 0x1f, 0x0a,
-0x4f, 0xa6, 0x94, 0xb4, 0xe2, 0xce, 0x3f, 0x1c,
-0xb7, 0x7f, 0x3d, 0x66, 0x4c, 0x3b, 0x08, 0xcb,
-0x84, 0x65, 0xe6, 0x01, 0xbf, 0x05, 0xcd, 0x82,
-0xac, 0xcc, 0x5c, 0x73, 0xd5, 0xba, 0x56, 0x9c,
-0x54, 0x34, 0x72, 0xfb, 0xf8, 0xfa, 0x2f, 0x81,
-0x1b, 0x45, 0x9b, 0xc9, 0xd3, 0xca, 0x54, 0x33,
-0x70, 0xd7, 0xfc, 0x84, 0xb2, 0xa3, 0x82, 0xd5,
-0x7f, 0x21, 0xdb, 0x7c, 0x45, 0x8c, 0x95, 0x23,
-0xd5, 0x50, 0x07, 0xa3, 0x55, 0xa6, 0x95, 0x66,
-0x71, 0xb9, 0x1b, 0x7f, 0x55, 0x66, 0xf8, 0x0f,
-0x7d, 0xf8, 0xee, 0x1d, 0x44, 0x6c, 0xb5, 0x58,
-0xfa, 0x25, 0xf9, 0xc3, 0xe9, 0x5b, 0x62, 0xab,
-0x90, 0x91, 0x1e, 0xf3, 0x0f, 0x99, 0x22, 0xb3,
-0x13, 0x11, 0xbb, 0xc4, 0x0b, 0xc1, 0xbe, 0x3e,
-0x2e, 0xff, 0x30, 0x2b, 0x81, 0xe7, 0x5a, 0xd3,
-0xa7, 0x15, 0x37, 0x01, 0x34, 0x9b, 0x65, 0x38,
-0xa7, 0xfa, 0x3e, 0x56, 0xa9, 0xe4, 0x9c, 0xd3,
-0x92, 0x3d, 0xc8, 0xdd, 0x17, 0x77, 0xc5, 0xbf,
-0x32, 0xfa, 0x5f, 0x2c, 0xfe, 0x15, 0x81, 0x96,
-0xee, 0xc1, 0x82, 0x11, 0xf1, 0x5f, 0xe0, 0x4f,
-0xeb, 0x75, 0x5f, 0x4f, 0x39, 0x9e, 0xe1, 0xcf,
-0xae, 0x58, 0x38, 0x52, 0x8c, 0x40, 0xcc, 0xe6,
-0x3f, 0x4c, 0xed, 0x38, 0xbd, 0xf0, 0x15, 0x89,
-0x64, 0xf3, 0x1f, 0xb2, 0xa9, 0x83, 0x4d, 0x0a,
-0x65, 0xbf, 0x26, 0x93, 0xfd, 0xc9, 0xb2, 0x21,
-0xe5, 0xee, 0x22, 0x42, 0x7f, 0x95, 0xac, 0x24,
-0x3e, 0xce, 0x3f, 0x1f, 0x48, 0xe6, 0x63, 0x0c,
-0x71, 0x17, 0x9d, 0x69, 0xcd, 0x4f, 0xe8, 0xe6,
-0x5e, 0xe5, 0x2b, 0xd2, 0xd7, 0x1d, 0xfe, 0x43,
-0xb7, 0xfe, 0x17, 0xbb, 0xe0, 0x64, 0xb2, 0x53,
-0x2f, 0xeb, 0xf3, 0xb4, 0x88, 0x1b, 0xc9, 0x2a,
-0xb9, 0xd2, 0xc0, 0x03, 0x49, 0x70, 0xbf, 0xcb,
-0x88, 0x62, 0xd1, 0x4b, 0x5a, 0x79, 0xf8, 0x2d,
-0x65, 0x7d, 0x4a, 0x4b, 0x2e, 0x99, 0x90, 0xff,
-0x90, 0xd7, 0xad, 0x33, 0xaf, 0x92, 0xb1, 0x92,
-0x3e, 0x42, 0xbc, 0x86, 0xcd, 0xbb, 0x42, 0xf2,
-0xb2, 0xf6, 0xaf, 0xdd, 0xb4, 0x22, 0xad, 0x5c,
-0x23, 0x46, 0xf9, 0xf3, 0xce, 0xe2, 0x5f, 0x62,
-0xd6, 0x3c, 0x5f, 0x17, 0x84, 0xc9, 0x0c, 0xf7,
-0x16, 0xe0, 0xd3, 0x74, 0x5c, 0x9c, 0x42, 0x55,
-0xab, 0xce, 0x8e, 0x78, 0x53, 0xc2, 0x99, 0x0c,
-0x1f, 0xf5, 0x79, 0x3d, 0xdc, 0xfb, 0xd4, 0x46,
-0xd5, 0xc2, 0x5f, 0xed, 0x63, 0xe2, 0x5f, 0x76,
-0x6e, 0x21, 0xc0, 0x64, 0xad, 0xf1, 0x0d, 0xec,
-0xd2, 0xb0, 0x05, 0xb5, 0x87, 0x0c, 0xd7, 0xbf,
-0x35, 0x09, 0xae, 0x63, 0x00, 0x6a, 0xd3, 0xda,
-0xd2, 0xe3, 0xf9, 0x0f, 0x11, 0x76, 0x71, 0xe3,
-0x22, 0xe9, 0x1e, 0xca, 0x4f, 0x34, 0x7e, 0x99,
-0x62, 0xb4, 0x8b, 0xa1, 0x2d, 0x40, 0x0a, 0x84,
-0xd5, 0x7f, 0x1d, 0x70, 0xe2, 0x32, 0x85, 0x3b,
-0x4c, 0x78, 0x15, 0x10, 0x17, 0xfe, 0x12, 0x9d,
-0x90, 0xc4, 0x2c, 0x0e, 0x97, 0x7a, 0xf8, 0xfb,
-0xe7, 0x06, 0xd2, 0x29, 0x56, 0xb5, 0x2c, 0xe0,
-0x5d, 0x41, 0xdd, 0x93, 0x15, 0xbf, 0xd8, 0x63,
-0x6c, 0x8f, 0x29, 0x9b, 0xc5, 0xe4, 0x84, 0xf5,
-0x5f, 0x96, 0x0f, 0x09, 0x7e, 0x38, 0xc9, 0xdb,
-0x20, 0xfe, 0x35, 0x46, 0xbb, 0x52, 0x36, 0xb2,
-0xd3, 0x95, 0xec, 0xeb, 0x90, 0xad, 0xe9, 0x68,
-0x76, 0xfc, 0x4b, 0x08, 0xf2, 0x3c, 0x61, 0x58,
-0x8b, 0x7e, 0x76, 0x4e, 0xd2, 0xcd, 0x39, 0x1f,
-0x64, 0xb1, 0x8d, 0x54, 0x50, 0xb6, 0x3a, 0x35,
-0x46, 0x50, 0xb9, 0x9d, 0xad, 0x97, 0xdf, 0x5a,
-0xdc, 0x6e, 0xf2, 0xd3, 0x34, 0x20, 0xb2, 0x78,
-0x86, 0xff, 0xf0, 0xc2, 0x12, 0xf0, 0x8d, 0x9f,
-0x66, 0xb5, 0xf6, 0xe1, 0x53, 0xc8, 0xc3, 0x20,
-0x8f, 0xe8, 0x61, 0x05, 0x09, 0x8a, 0x8d, 0x23,
-0x65, 0xe0, 0x5d, 0x58, 0xfc, 0xf3, 0x0a, 0x27,
-0x52, 0x08, 0x44, 0x06, 0xd8, 0x84, 0x7f, 0x80,
-0xe7, 0xe1, 0x54, 0x22, 0x56, 0xfc, 0xeb, 0x1a,
-0x98, 0xc3, 0xd9, 0x08, 0xb2, 0x38, 0x09, 0xdb,
-0x8b, 0x56, 0x0e, 0x67, 0xbd, 0xe6, 0x83, 0x7d,
-0x87, 0x5e, 0xd0, 0xea, 0xe9, 0xa4, 0xb3, 0x3c,
-0x22, 0x96, 0xeb, 0xe3, 0xbc, 0xf1, 0xf5, 0x87,
-0x31, 0x28, 0x29, 0x5f, 0x26, 0x07, 0xe8, 0x22,
-0x53, 0x1a, 0x12, 0x1d, 0xfc, 0x75, 0x89, 0x30,
-0x25, 0x2f, 0x06, 0xc4, 0x8c, 0x02, 0x3b, 0xb7,
-0xd0, 0x87, 0xb1, 0x2d, 0x70, 0xc9, 0xd3, 0x3e,
-0xb3, 0x78, 0x84, 0x1c, 0xa7, 0xd5, 0xd6, 0x63,
-0x45, 0x8a, 0xad, 0xc1, 0x3c, 0xa6, 0xe9, 0xc2,
-0x5f, 0xbb, 0x29, 0x32, 0x96, 0x60, 0xb4, 0xeb,
-0x81, 0xaa, 0x5e, 0x8f, 0x13, 0xff, 0x4a, 0x14,
-0xe9, 0xa5, 0x7b, 0xc0, 0xc8, 0xdb, 0x04, 0x6f,
-0xfe, 0x4e, 0x27, 0x46, 0x86, 0x13, 0xce, 0xea,
-0xbf, 0xe8, 0xf4, 0xb4, 0x12, 0xca, 0xc6, 0x5f,
-0x31, 0x1a, 0xb5, 0xf2, 0x01, 0x8c, 0xe9, 0xae,
-0x02, 0x49, 0x45, 0x5e, 0x2f, 0xc2, 0x12, 0x10,
-0xd8, 0xdd, 0xdb, 0x08, 0x97, 0xb7, 0x66, 0xd4,
-0x88, 0x76, 0x3d, 0xac, 0x19, 0x18, 0x13, 0xff,
-0xf2, 0xaf, 0xb1, 0xd6, 0x34, 0x98, 0xb6, 0x6e,
-0x92, 0x02, 0x53, 0x4d, 0xc4, 0xa7, 0xe3, 0xee,
-0x19, 0xbb, 0x8e, 0x1a, 0x83, 0x99, 0x70, 0x67,
-0x17, 0x9d, 0x7e, 0x82, 0x0f, 0xa6, 0xd3, 0xcd,
-0x8e, 0xae, 0xb8, 0x8b, 0x7f, 0x7e, 0xb4, 0x3f,
-0xac, 0x7b, 0x2d, 0xbc, 0xd3, 0x5d, 0xc5, 0xf1,
-0x32, 0xdc, 0xfc, 0x0f, 0xa9, 0x55, 0xf8, 0x38,
-0x7c, 0x00, 0xe8, 0x66, 0xc8, 0xc8, 0xa4, 0x1d,
-0x52, 0xd4, 0x3b, 0xe6, 0x86, 0xe9, 0xdd, 0x27,
-0xb9, 0xea, 0xbf, 0x86, 0x61, 0xe6, 0xab, 0xad,
-0x58, 0x89, 0x8b, 0x6d, 0xe3, 0xa4, 0x74, 0x31,
-0x07, 0x95, 0x1a, 0xf2, 0x5f, 0x92, 0x5e, 0x17,
-0xb1, 0xe5, 0x7a, 0xf6, 0x38, 0xe4, 0xd4, 0x25,
-0xad, 0xfa, 0x2f, 0x78, 0x06, 0x47, 0x5c, 0xf8,
-0x4b, 0x38, 0x4f, 0x42, 0x0e, 0xc9, 0x06, 0xad,
-0xb4, 0x1f, 0x46, 0xef, 0x46, 0x69, 0x3b, 0xec,
-0x83, 0xe1, 0x01, 0x35, 0xd9, 0x76, 0x48, 0x77,
-0x18, 0x39, 0x60, 0x8f, 0x5b, 0xef, 0xb5, 0xe2,
-0xd4, 0x87, 0xbc, 0x3b, 0x55, 0x8b, 0x7f, 0xc3,
-0x84, 0xe7, 0x62, 0x8f, 0x07, 0xb5, 0xf3, 0x78,
-0x7d, 0xe5, 0x70, 0x3e, 0xaf, 0xed, 0x42, 0xed,
-0xe9, 0xa2, 0x1b, 0x9b, 0x7a, 0xfc, 0x7e, 0x53,
-0x6a, 0x8f, 0x9f, 0x26, 0x9d, 0x82, 0x9d, 0xc3,
-0xa9, 0x30, 0xa6, 0x1a, 0x1c, 0x53, 0x7d, 0x52,
-0x99, 0x6d, 0xc7, 0xbf, 0x86, 0x60, 0xff, 0xea,
-0xe2, 0x4a, 0x5e, 0x47, 0x39, 0xf9, 0x8c, 0x65,
-0xa4, 0x95, 0x9d, 0x71, 0x4a, 0x92, 0x31, 0x9d,
-0x4a, 0xc1, 0xdc, 0xde, 0x4c, 0x46, 0x47, 0x57,
-0x2c, 0xb8, 0x2c, 0x73, 0xb4, 0x58, 0xea, 0x19,
-0xc9, 0xe0, 0xaf, 0xa7, 0xf1, 0xcd, 0xb6, 0x32,
-0xf7, 0x55, 0x6d, 0x57, 0x6b, 0xe5, 0xeb, 0xb7,
-0xf1, 0x98, 0xcb, 0x37, 0xd2, 0x4a, 0xa9, 0x58,
-0x64, 0x3e, 0x93, 0x00, 0xb4, 0xb5, 0xf8, 0xea,
-0x5f, 0xb2, 0x74, 0x38, 0xc6, 0x61, 0xfb, 0x34,
-0xca, 0x01, 0x5b, 0x31, 0x32, 0xc4, 0x0e, 0xdf,
-0xce, 0xc4, 0xbf, 0xba, 0xc8, 0x4c, 0x33, 0x68,
-0xf3, 0xcf, 0x57, 0x5a, 0xc6, 0x41, 0x6f, 0x48,
-0x8a, 0xd3, 0xb3, 0x24, 0xd4, 0xe7, 0xd3, 0x8b,
-0x7b, 0xc5, 0xe7, 0xa8, 0x05, 0xcd, 0xce, 0x1a,
-0x75, 0x69, 0x7b, 0x70, 0x9f, 0x57, 0xef, 0x7c,
-0xd9, 0xcd, 0x7f, 0x38, 0xa7, 0xcf, 0x87, 0x49,
-0xbd, 0xb0, 0x28, 0x47, 0x17, 0xd9, 0x34, 0x29,
-0xd5, 0x2f, 0x09, 0xc3, 0xcd, 0x23, 0x32, 0x23,
-0xba, 0x39, 0xc7, 0xe2, 0x95, 0x12, 0x3e, 0x68,
-0xa3, 0x24, 0xa3, 0x08, 0xd6, 0x57, 0x7d, 0x5a,
-0x4a, 0xb8, 0xea, 0xbf, 0xf0, 0x4e, 0xe0, 0xa7,
-0x8e, 0x6e, 0x76, 0x14, 0x4c, 0x8b, 0x3a, 0xc2,
-0xb2, 0xc1, 0xd5, 0x15, 0xae, 0xb2, 0x41, 0x7c,
-0xcc, 0xf9, 0x98, 0x3a, 0x78, 0x1f, 0xba, 0xf1,
-0xd7, 0x4e, 0x97, 0x88, 0x8c, 0x19, 0x70, 0x36,
-0xa0, 0x01, 0x51, 0x13, 0xe3, 0xb8, 0xcb, 0x20,
-0xdd, 0xee, 0xaf, 0x9c, 0xb2, 0x2f, 0x39, 0x33,
-0xb8, 0x3f, 0xc3, 0xbf, 0x81, 0xf8, 0x2b, 0x95,
-0x11, 0xf9, 0x0a, 0xbe, 0x1e, 0x70, 0xe2, 0x8c,
-0x8b, 0xc5, 0x5c, 0xfd, 0x01, 0xe8, 0xba, 0x26,
-0x20, 0x16, 0xe8, 0x30, 0xcf, 0xa7, 0x2d, 0xd8,
-0x95, 0x51, 0x04, 0xc3, 0x79, 0x76, 0xe1, 0xaf,
-0x14, 0x61, 0xf9, 0xf3, 0x8c, 0x27, 0xe7, 0xa4,
-0xb3, 0xa6, 0x6a, 0xb1, 0x58, 0xae, 0x53, 0x5d,
-0x1f, 0x56, 0x05, 0xb1, 0x5a, 0x7b, 0xc4, 0x96,
-0xe7, 0x4b, 0x19, 0xc9, 0x41, 0x67, 0x4c, 0x47,
-0x86, 0xff, 0xb0, 0x90, 0xd5, 0x7f, 0x6d, 0x0f,
-0x22, 0xc9, 0x3c, 0x3c, 0x05, 0xa9, 0xa0, 0x4d,
-0x44, 0xef, 0x3b, 0xa3, 0xce, 0xd6, 0x8e, 0x99,
-0x35, 0xa9, 0xfc, 0x33, 0xd2, 0x1c, 0x4c, 0xac,
-0x75, 0x68, 0xe7, 0x29, 0xe7, 0xdf, 0x40, 0x44,
-0x36, 0xa8, 0xba, 0xf1, 0x17, 0xdd, 0x27, 0x72,
-0xb6, 0x0d, 0x40, 0x5b, 0xff, 0x60, 0xd1, 0x6e,
-0x20, 0x11, 0x7d, 0x9a, 0x0c, 0x6b, 0x11, 0xd9,
-0x27, 0xb7, 0x9d, 0x9e, 0x08, 0xa3, 0xc1, 0xe0,
-0x6a, 0x92, 0x5d, 0xff, 0x15, 0x31, 0xaa, 0x2c,
-0x31, 0xa3, 0x0c, 0x4d, 0x01, 0xac, 0xd7, 0x8f,
-0xc9, 0xa1, 0x44, 0xf8, 0x76, 0xdf, 0x26, 0x69,
-0x9a, 0x7e, 0xc8, 0xa1, 0x7a, 0x50, 0x6a, 0xed,
-0x31, 0x75, 0xc6, 0xc2, 0x4d, 0xe5, 0x6e, 0xfc,
-0x95, 0xe0, 0xdc, 0x1a, 0xb2, 0x4d, 0x8e, 0xc1,
-0xf4, 0x97, 0x99, 0xda, 0xf2, 0xea, 0x34, 0x23,
-0xe2, 0x98, 0xea, 0x4a, 0x17, 0x34, 0x6d, 0xfe,
-0x0d, 0x52, 0x75, 0xa7, 0x92, 0x1d, 0xff, 0x42,
-0x8e, 0x7a, 0xab, 0xab, 0xc1, 0x51, 0x7d, 0x82,
-0xeb, 0x3c, 0xc5, 0x09, 0xf1, 0xfe, 0x45, 0x9c,
-0x9a, 0x91, 0x18, 0xeb, 0x0a, 0x4c, 0xe7, 0xd7,
-0x41, 0x9d, 0xf4, 0xc0, 0x77, 0xc7, 0xc6, 0xbf,
-0x6c, 0xf2, 0x87, 0x68, 0xc0, 0x41, 0x01, 0x85,
-0xa2, 0x4c, 0x79, 0x15, 0x92, 0x47, 0x6e, 0x70,
-0xd2, 0x0e, 0xb1, 0x58, 0x2c, 0x60, 0x93, 0x75,
-0x04, 0x8a, 0xb2, 0xf4, 0xbf, 0x02, 0x11, 0x4f,
-0x81, 0xcd, 0x5f, 0x17, 0xa4, 0x8d, 0x96, 0x23,
-0xfd, 0x93, 0xb6, 0x27, 0x8c, 0xfe, 0x00, 0x78,
-0xcb, 0x71, 0x2c, 0x04, 0x73, 0xe6, 0x79, 0x79,
-0xad, 0xc7, 0x09, 0x64, 0x78, 0x73, 0x8a, 0xdd,
-0xf1, 0x2f, 0xc1, 0x16, 0xf9, 0x92, 0xea, 0x9b,
-0x32, 0x4e, 0xfb, 0xcb, 0xd2, 0x39, 0xe3, 0x12,
-0x39, 0x60, 0xb0, 0x8d, 0x0c, 0xb1, 0x30, 0x0b,
-0x2f, 0x5e, 0xd1, 0xad, 0xc1, 0x57, 0x50, 0xac,
-0x39, 0x0b, 0x7f, 0x5d, 0x22, 0x05, 0xf6, 0x12,
-0xd4, 0x1b, 0x6b, 0x1d, 0xb4, 0x85, 0xfa, 0x5f,
-0x97, 0xc8, 0x0c, 0x6e, 0x1c, 0x22, 0x53, 0x32,
-0xb0, 0x6b, 0xa1, 0x3d, 0xc6, 0x3b, 0x20, 0x4d,
-0xcb, 0xc2, 0x5f, 0x54, 0x61, 0xd9, 0xe9, 0x62,
-0x15, 0x29, 0x75, 0x01, 0x31, 0x5d, 0xe6, 0xa5,
-0x61, 0x57, 0x63, 0x24, 0xd4, 0xc9, 0x51, 0xb4,
-0xf9, 0x37, 0x44, 0x54, 0x90, 0xf4, 0x64, 0xc7,
-0xbf, 0x32, 0x20, 0x2b, 0xe0, 0x42, 0x5b, 0xb2,
-0xdc, 0x25, 0xe8, 0x48, 0x32, 0x2f, 0xbb, 0xd3,
-0x3b, 0x33, 0x88, 0x0c, 0xf7, 0x2f, 0x77, 0xfc,
-0x8b, 0x3a, 0x74, 0x2b, 0x41, 0xc3, 0xb5, 0xee,
-0x71, 0xb8, 0x25, 0xda, 0xfd, 0x51, 0x06, 0xbb,
-0x1e, 0x75, 0x32, 0x5a, 0xa9, 0x7f, 0x31, 0x1f,
-0xa3, 0x31, 0x8d, 0x30, 0x77, 0xfc, 0x2b, 0xc9,
-0xb4, 0x29, 0x39, 0x10, 0x0b, 0x64, 0xee, 0x67,
-0xb5, 0xc2, 0x1c, 0xed, 0xef, 0x6e, 0xf6, 0x21,
-0x6b, 0x22, 0x9e, 0x27, 0x70, 0x02, 0x79, 0x33,
-0x6c, 0x65, 0xd8, 0x9a, 0x11, 0x83, 0xf1, 0x1f,
-0xba, 0xf1, 0x57, 0xb4, 0xda, 0x42, 0x5b, 0x0d,
-0x6e, 0x90, 0xf5, 0x66, 0x19, 0x23, 0xa2, 0xd7,
-0xda, 0xfa, 0x32, 0x42, 0x60, 0x67, 0x65, 0x26,
-0x04, 0xc6, 0x9f, 0x0b, 0xdf, 0x98, 0xfa, 0xaf,
-0x3a, 0xcd, 0xae, 0xca, 0x14, 0x72, 0x32, 0x40,
-0x0c, 0x1e, 0xcf, 0x93, 0x19, 0x1a, 0x58, 0xfb,
-0xfe, 0xa1, 0x61, 0x27, 0x10, 0xa6, 0x7b, 0xbd,
-0x59, 0xfa, 0x5f, 0x42, 0x15, 0x97, 0xfd, 0xda,
-0x43, 0xaa, 0x13, 0x95, 0x16, 0x10, 0xdb, 0xaa,
-0x0e, 0x16, 0x8d, 0x56, 0x3c, 0xfc, 0x4a, 0x15,
-0x35, 0x5e, 0x67, 0x40, 0xcc, 0x0e, 0x7b, 0x59,
-0x1a, 0x61, 0x96, 0xfe, 0xb2, 0x67, 0x0c, 0xfe,
-0xf2, 0x58, 0xfe, 0xc6, 0x70, 0x5e, 0xe8, 0x0e,
-0x04, 0x59, 0x41, 0xd4, 0x2d, 0x7d, 0x8e, 0x50,
-0x33, 0x68, 0x10, 0x39, 0x57, 0xc8, 0x94, 0x39,
-0x60, 0x99, 0x9e, 0xa3, 0xeb, 0x0a, 0x0b, 0xe7,
-0xaa, 0xff, 0xda, 0xa5, 0x20, 0xf7, 0x6c, 0xee,
-0x29, 0x65, 0x97, 0x58, 0x39, 0x70, 0x23, 0x7f,
-0xf7, 0x7e, 0x03, 0xf9, 0x37, 0x7e, 0x49, 0x1e,
-0x24, 0xd5, 0x4b, 0x15, 0x72, 0x75, 0x21, 0x8b,
-0x91, 0xb1, 0xf7, 0x73, 0x17, 0xb1, 0xf8, 0x37,
-0x90, 0x1a, 0x11, 0x8c, 0x2c, 0xfe, 0xf9, 0x3a,
-0x4e, 0x3b, 0xff, 0x87, 0xd6, 0xfa, 0x74, 0xa5,
-0x03, 0xc4, 0x16, 0x4b, 0x1f, 0x88, 0x27, 0xda,
-0xe7, 0xa6, 0x17, 0x46, 0xd5, 0x70, 0x26, 0x23,
-0xf1, 0xf7, 0x34, 0x64, 0xf3, 0x6f, 0xcc, 0x8d,
-0x79, 0x4b, 0xdd, 0xf5, 0x5f, 0xa3, 0xac, 0x4e,
-0xa1, 0x78, 0x2c, 0x6f, 0x58, 0x42, 0xe2, 0xfa,
-0x5f, 0xd5, 0xf8, 0xe4, 0xba, 0xba, 0xf6, 0xdb,
-0x46, 0x9d, 0x91, 0x89, 0x7f, 0x19, 0x56, 0xfd,
-0x97, 0x97, 0x49, 0x7a, 0xb5, 0xd7, 0xeb, 0x55,
-0x8e, 0x7f, 0xd8, 0x2f, 0x85, 0xc9, 0x45, 0x4c,
-0x94, 0x5a, 0x5d, 0x3c, 0x8b, 0x1c, 0x6f, 0xab,
-0x67, 0xb4, 0x00, 0xc6, 0x25, 0x18, 0x9c, 0x6f,
-0x8d, 0x89, 0xad, 0xed, 0x2f, 0x76, 0xc7, 0xbf,
-0xc8, 0x96, 0x3e, 0x5b, 0xa4, 0x92, 0x3a, 0x1b,
-0x99, 0x6a, 0x16, 0x1b, 0xc6, 0xcc, 0x54, 0xd9,
-0x41, 0xf5, 0x3e, 0x51, 0xd3, 0xc0, 0x4f, 0xe8,
-0xcb, 0x63, 0xc7, 0x86, 0x71, 0xdd, 0x01, 0x59,
-0x9a, 0x62, 0xd8, 0xf1, 0x2f, 0x85, 0xf1, 0x6f,
-0x94, 0x33, 0xe9, 0x6a, 0x05, 0xa7, 0xce, 0xe3,
-0x5c, 0xa7, 0x59, 0x6c, 0x26, 0x3b, 0x8d, 0x1b,
-0x4d, 0xd8, 0x77, 0x34, 0xae, 0xbc, 0x06, 0x5d,
-0x25, 0x4f, 0x1b, 0x36, 0xce, 0xd5, 0x60, 0x9e,
-0xb5, 0xb8, 0x9c, 0xc1, 0x5f, 0xf6, 0x52, 0xca,
-0x3b, 0xa4, 0xaa, 0x3e, 0x0b, 0x5c, 0xc3, 0x2a,
-0x7f, 0x5f, 0x9c, 0x07, 0x7b, 0x81, 0x6e, 0x4a,
-0x44, 0x14, 0x8c, 0x36, 0x4e, 0x24, 0xc5, 0x70,
-0x37, 0x38, 0xc4, 0xb8, 0xee, 0xb1, 0x20, 0x09,
-0x94, 0xda, 0xfc, 0x87, 0x0c, 0x7f, 0x19, 0xe1,
-0x74, 0xc0, 0x9a, 0xde, 0xe6, 0x2a, 0x67, 0x9e,
-0xd7, 0x4a, 0x7f, 0x67, 0x7c, 0xd3, 0xa8, 0x35,
-0xd5, 0x7d, 0xb7, 0x7f, 0x96, 0xed, 0xef, 0x9d,
-0x08, 0xa0, 0x46, 0x49, 0x68, 0xc8, 0x59, 0x8b,
-0xe0, 0xa6, 0xac, 0xf8, 0x97, 0x5c, 0xe7, 0x2c,
-0x53, 0xfc, 0x1f, 0x9c, 0xeb, 0xb4, 0x7e, 0xe9,
-0xdd, 0x12, 0x3c, 0x37, 0xf6, 0x4d, 0x97, 0x5e,
-0x8c, 0x3b, 0x39, 0xa5, 0xa3, 0x0e, 0x10, 0xa3,
-0xcc, 0x18, 0xcc, 0xe0, 0xaf, 0x0b, 0xdb, 0xeb,
-0xd1, 0x33, 0x67, 0xae, 0x48, 0x73, 0x90, 0x1b,
-0xd7, 0x63, 0x02, 0xcf, 0x64, 0xd8, 0x46, 0x6b,
-0x5e, 0x2f, 0xe8, 0x85, 0x87, 0xfa, 0xe7, 0x82,
-0x05, 0xc4, 0xce, 0x9a, 0x35, 0xaf, 0x5b, 0x83,
-0x67, 0xe1, 0xfb, 0x50, 0xcf, 0xe8, 0x2f, 0xef,
-0xa6, 0x16, 0x27, 0x06, 0x4a, 0x2a, 0xdb, 0xda,
-0xca, 0x48, 0xda, 0x50, 0x45, 0x3b, 0x07, 0xfc,
-0xe9, 0x87, 0xdb, 0x1b, 0xa6, 0x8b, 0x8e, 0xff,
-0xbc, 0x27, 0x66, 0xf1, 0xd7, 0x81, 0xb3, 0x7d,
-0x27, 0x3c, 0x17, 0x65, 0xd9, 0xf8, 0xcb, 0xbe,
-0x4e, 0xc2, 0x36, 0x0c, 0xb5, 0x03, 0xd6, 0x74,
-0x7b, 0x93, 0xbf, 0x4f, 0xdd, 0x28, 0x56, 0xe9,
-0x4e, 0xf9, 0xcf, 0x6e, 0xe2, 0xef, 0xb7, 0xc6,
-0x4c, 0x33, 0xc6, 0xe4, 0x1f, 0xf2, 0x37, 0xe4,
-0x98, 0xf0, 0xb4, 0x5a, 0xea, 0xcf, 0x83, 0xe9,
-0xd3, 0xcd, 0x23, 0x21, 0x8f, 0x97, 0x3c, 0x26,
-0xae, 0xe0, 0x01, 0x9a, 0x2e, 0x25, 0x60, 0x2e,
-0xb7, 0xc6, 0x20, 0x19, 0x85, 0xe8, 0xe0, 0x2f,
-0x76, 0xd4, 0xb0, 0xd9, 0xba, 0xd5, 0xfb, 0xbc,
-0xa9, 0x2f, 0x9d, 0xd1, 0xf6, 0xf2, 0x3a, 0x3b,
-0x5d, 0x5c, 0x1e, 0x00, 0x7f, 0x2c, 0x0e, 0xef,
-0x9f, 0x77, 0x4a, 0x32, 0x32, 0x40, 0xb6, 0xcf,
-0x36, 0x0b, 0x77, 0x99, 0xac, 0xfa, 0xaf, 0xb1,
-0xa4, 0x79, 0xdc, 0x28, 0x1e, 0xa6, 0x58, 0xe4,
-0x35, 0xa5, 0x77, 0xfe, 0x30, 0x79, 0x8d, 0xd4,
-0xf7, 0x33, 0x7f, 0x7e, 0x34, 0xa7, 0xde, 0x8a,
-0x45, 0x8a, 0x6c, 0x6f, 0xca, 0x8e, 0x7f, 0x19,
-0xa5, 0x1c, 0x52, 0xd5, 0xf3, 0x34, 0x51, 0x34,
-0x0a, 0xd0, 0xb8, 0x40, 0x32, 0x7a, 0x6d, 0xfd,
-0x8b, 0x3e, 0x28, 0xae, 0xa3, 0x56, 0xb1, 0xd8,
-0x30, 0x39, 0x4a, 0x9f, 0x4e, 0x2f, 0x1c, 0x2a,
-0xcf, 0x8e, 0x7f, 0xc5, 0x18, 0xa4, 0x7a, 0x7f,
-0xa0, 0xfa, 0x9c, 0xe7, 0x92, 0x78, 0xc0, 0x38,
-0xd0, 0x5c, 0xfd, 0xef, 0xca, 0x25, 0xff, 0x01,
-0xe3, 0x7d, 0xf3, 0xe6, 0x73, 0xea, 0x25, 0xe9,
-0x0a, 0x59, 0x67, 0xde, 0x30, 0x88, 0xb9, 0x4f,
-0x86, 0x15, 0x2c, 0x7b, 0x53, 0xfb, 0x29, 0x6a,
-0x6a, 0x6f, 0x17, 0x33, 0xf8, 0x4b, 0x81, 0x19,
-0x8b, 0x71, 0x37, 0x1e, 0x00, 0x6f, 0x34, 0x54,
-0xe4, 0x95, 0x77, 0x08, 0x01, 0xf3, 0xf6, 0x90,
-0x06, 0x4b, 0xa0, 0x21, 0x43, 0x11, 0x40, 0xe0,
-0xc7, 0x8c, 0xa0, 0xd9, 0x89, 0x13, 0x6e, 0x09,
-0x34, 0x20, 0x83, 0x0a, 0x43, 0x01, 0xdd, 0x59,
-0xf1, 0x2f, 0xfb, 0x96, 0x98, 0x86, 0xf9, 0x75,
-0x3c, 0x22, 0xd6, 0xc1, 0x0c, 0x21, 0x97, 0x87,
-0xbd, 0x7e, 0x20, 0x4c, 0xe3, 0x09, 0xa8, 0x16,
-0xee, 0x7e, 0x8f, 0x3c, 0x89, 0x28, 0x72, 0x9f,
-0xcd, 0x3f, 0x0f, 0xf8, 0x0b, 0xd7, 0x2b, 0xe6,
-0xe4, 0x51, 0x7b, 0x39, 0x89, 0x4d, 0x2d, 0x5c,
-0x50, 0x65, 0x07, 0x1d, 0xb0, 0x4c, 0x0d, 0x67,
-0xac, 0x58, 0xbf, 0x80, 0x5d, 0x55, 0x18, 0xe2,
-0xff, 0x2d, 0x39, 0x42, 0x9f, 0xf9, 0xc0, 0xdb,
-0xa3, 0xd2, 0x0c, 0xfe, 0x3a, 0x20, 0xc3, 0x4e,
-0xc4, 0xa3, 0xc0, 0x73, 0xdd, 0xfa, 0x5f, 0x6d,
-0x17, 0x2d, 0x69, 0xb0, 0x2f, 0xa1, 0xf1, 0x9d,
-0xac, 0x35, 0x45, 0xcd, 0x5f, 0x94, 0x53, 0x93,
-0xbe, 0x99, 0x15, 0xff, 0x3a, 0x58, 0x90, 0x91,
-0xfd, 0xb2, 0x72, 0xd5, 0x58, 0x44, 0x15, 0xab,
-0x87, 0x10, 0xd1, 0x03, 0xfe, 0xaa, 0x35, 0xd7,
-0x85, 0xb2, 0x72, 0x0f, 0x74, 0xb8, 0x91, 0x9e,
-0x96, 0xb2, 0xf5, 0x97, 0x07, 0x14, 0xce, 0x7f,
-0x78, 0x83, 0xad, 0xff, 0x55, 0x9e, 0x56, 0xbe,
-0x2d, 0xd6, 0x81, 0x1b, 0x5f, 0xdf, 0xdb, 0x39,
-0x9c, 0xfb, 0x1f, 0xda, 0xcf, 0x15, 0x1f, 0x74,
-0xc1, 0xf7, 0xe1, 0x22, 0xef, 0xb8, 0x28, 0xe2,
-0xac, 0x2f, 0x2b, 0x37, 0x09, 0xff, 0x94, 0xc1,
-0x5f, 0xa8, 0xba, 0xeb, 0x71, 0x1e, 0x07, 0x6e,
-0xf8, 0x4d, 0x46, 0x7f, 0xd7, 0xc6, 0x54, 0xf0,
-0x1a, 0x5e, 0x94, 0xdb, 0xa8, 0xe2, 0x1c, 0x1b,
-0xa2, 0xd1, 0x47, 0xba, 0x0d, 0x98, 0x67, 0xdd,
-0xe6, 0xdf, 0x60, 0xf1, 0xaf, 0xf6, 0x4a, 0xbf,
-0xe2, 0xc0, 0x01, 0x1e, 0xed, 0xd2, 0x87, 0x94,
-0x95, 0xf1, 0x08, 0xf9, 0x1e, 0xfd, 0xbb, 0x34,
-0x46, 0x6a, 0x6c, 0x8d, 0xb0, 0x1f, 0x09, 0xbb,
-0x38, 0x77, 0xdf, 0x2f, 0xc9, 0x33, 0xe4, 0x06,
-0x54, 0x7c, 0xba, 0x3f, 0x2b, 0xfe, 0x65, 0x14,
-0xd8, 0xf8, 0x8b, 0xfd, 0xa3, 0x17, 0x68, 0xe8,
-0xbd, 0xfc, 0x10, 0xcc, 0xcf, 0x73, 0x34, 0x68,
-0xfa, 0x66, 0xdf, 0x71, 0xb4, 0xe4, 0x39, 0x79,
-0xf6, 0x99, 0x45, 0xd8, 0xf5, 0x21, 0x80, 0x47,
-0x00, 0x62, 0x7d, 0xe4, 0x42, 0x28, 0x84, 0xe7,
-0x3f, 0xae, 0xfc, 0xc3, 0x0b, 0x5a, 0x3d, 0x51,
-0xf1, 0xcc, 0xea, 0x3b, 0xc6, 0xac, 0x13, 0x3e,
-0x1e, 0xff, 0x3a, 0xd0, 0x07, 0xc6, 0xbb, 0x78,
-0x7c, 0x74, 0x70, 0xc1, 0x39, 0xe9, 0x14, 0xcf,
-0xeb, 0xfe, 0xbd, 0x74, 0x71, 0x19, 0xcf, 0x3f,
-0x84, 0xf5, 0xba, 0x80, 0x64, 0xf5, 0xeb, 0xc7,
-0xc4, 0xbf, 0x08, 0xbf, 0x7f, 0xb0, 0xbc, 0xa5,
-0x4b, 0xfa, 0x99, 0x71, 0x44, 0x8b, 0xbc, 0x00,
-0xc6, 0x0a, 0xe3, 0x42, 0x0b, 0x52, 0xf1, 0x20,
-0xe5, 0x2c, 0xef, 0x7a, 0xcf, 0x06, 0x62, 0x8c,
-0xa3, 0x1e, 0x6f, 0xb6, 0xec, 0xfc, 0x43, 0x7e,
-0xa6, 0xb7, 0x4b, 0xaf, 0xec, 0xbf, 0xee, 0x1e,
-0xf1, 0x28, 0xfd, 0x15, 0x18, 0xea, 0x3d, 0xd2,
-0x5d, 0x74, 0x57, 0xa0, 0xf2, 0x28, 0x3b, 0xf7,
-0xfb, 0x1d, 0x6b, 0x11, 0x4f, 0x99, 0xb8, 0x01,
-0xf9, 0xb0, 0x48, 0x19, 0xf3, 0x0f, 0xb7, 0xb7,
-0x64, 0xe7, 0x1f, 0x06, 0xf5, 0xdb, 0x00, 0xe7,
-0x66, 0xe6, 0x79, 0x15, 0xb5, 0xa2, 0x8a, 0x18,
-0x79, 0x5c, 0xb0, 0x72, 0xda, 0x29, 0xc3, 0xea,
-0x3a, 0x46, 0x57, 0xd9, 0xfc, 0x1b, 0x98, 0xa3,
-0x18, 0x18, 0xc3, 0xbf, 0x11, 0xd4, 0x95, 0xac,
-0x75, 0x7f, 0xc4, 0x66, 0x8b, 0x72, 0x18, 0x8a,
-0x30, 0x10, 0x66, 0x1f, 0x20, 0xf3, 0x8c, 0x8e,
-0xbd, 0x86, 0x9f, 0x96, 0x86, 0xe2, 0xae, 0xfc,
-0x43, 0xac, 0xe4, 0xca, 0x77, 0x60, 0x57, 0x92,
-0xf1, 0xc1, 0xde, 0xcf, 0xd5, 0xbe, 0x5c, 0xd4,
-0x88, 0xbc, 0xec, 0x4b, 0xb4, 0x80, 0xd8, 0x79,
-0xba, 0xdf, 0xac, 0x89, 0x07, 0x07, 0xdb, 0xce,
-0x67, 0xc5, 0xbf, 0xbc, 0x59, 0xe7, 0xea, 0x93,
-0x33, 0xf8, 0xcb, 0x0e, 0x84, 0x0d, 0x65, 0xa8,
-0x11, 0x23, 0x64, 0x0a, 0x18, 0x1a, 0xcb, 0x51,
-0x1c, 0xc3, 0x7f, 0x58, 0x17, 0x75, 0xc3, 0x2e,
-0xcb, 0xd8, 0x24, 0xc9, 0xc2, 0xa1, 0x64, 0x88,
-0xbb, 0xfa, 0x2f, 0xb1, 0xd0, 0x58, 0x23, 0x2f,
-0x0d, 0x5b, 0x84, 0xb1, 0x80, 0x57, 0xf2, 0x6a,
-0x8d, 0x82, 0xf5, 0xe5, 0x59, 0xfc, 0x1b, 0x08,
-0x97, 0xfc, 0xae, 0x98, 0xd4, 0x28, 0xb9, 0xbf,
-0x19, 0x60, 0xd7, 0x36, 0xe5, 0x89, 0xe4, 0x2c,
-0x80, 0x66, 0xc5, 0xed, 0xf2, 0x6a, 0xea, 0xb7,
-0xf9, 0x0f, 0x6d, 0x6d, 0xe5, 0x7e, 0x7f, 0x33,
-0xf8, 0xcf, 0x63, 0xea, 0xbf, 0x1c, 0xf7, 0xfb,
-0x3a, 0xae, 0xf1, 0x54, 0x75, 0x67, 0xe7, 0x77,
-0xc5, 0x0a, 0xe1, 0x51, 0xdc, 0xa4, 0x12, 0xe2,
-0x36, 0xf9, 0x51, 0xdd, 0xcf, 0xf3, 0xd0, 0xac,
-0xeb, 0x9c, 0x21, 0xab, 0x5b, 0xab, 0x9a, 0x3d,
-0xd9, 0xfc, 0x87, 0x82, 0x0d, 0xbb, 0xac, 0x20,
-0x17, 0xdd, 0x12, 0x0a, 0x2c, 0xbc, 0xae, 0x48,
-0x6c, 0xa7, 0x5d, 0x7a, 0x05, 0x46, 0xc4, 0x1e,
-0xa4, 0xad, 0x7a, 0x32, 0xfa, 0x17, 0x8c, 0x1a,
-0xd1, 0x0e, 0x96, 0xb5, 0x92, 0x0a, 0x04, 0x11,
-0x2e, 0xfe, 0x0d, 0x9c, 0x3a, 0x84, 0x1e, 0x0a,
-0x9f, 0x67, 0xc4, 0x20, 0x46, 0x95, 0xc6, 0x12,
-0x35, 0x37, 0x31, 0xd9, 0xa6, 0xcf, 0x25, 0x4b,
-0x4e, 0x92, 0x7b, 0xb2, 0xf3, 0xc7, 0xc4, 0xfe,
-0xe6, 0xba, 0x92, 0x02, 0x77, 0xfd, 0x17, 0x22,
-0xa0, 0x26, 0x57, 0xfd, 0x17, 0xe3, 0x3f, 0x8c,
-0x2c, 0xf4, 0x15, 0x4a, 0x83, 0x77, 0xbe, 0xc5,
-0x5a, 0x1a, 0xb7, 0x61, 0xfc, 0xeb, 0xd6, 0x75,
-0xac, 0x8b, 0x87, 0x5a, 0xce, 0x35, 0xbd, 0x4b,
-0xe6, 0xe0, 0x5b, 0x34, 0x2b, 0xfe, 0x05, 0x48,
-0x2a, 0x51, 0xec, 0x04, 0x71, 0xac, 0x96, 0xe6,
-0x46, 0xae, 0xf6, 0x05, 0xeb, 0x85, 0x42, 0xcc,
-0x63, 0x63, 0x64, 0xef, 0x92, 0x1d, 0xc6, 0xc2,
-0x81, 0x72, 0x37, 0xff, 0x86, 0x5c, 0x45, 0x64,
-0x1e, 0xce, 0xab, 0xb2, 0x7e, 0x17, 0xa9, 0x25,
-0xd3, 0xb1, 0x3a, 0xb8, 0x07, 0xfc, 0x77, 0x0f,
-0x1a, 0xdb, 0xc9, 0xfd, 0x36, 0xfe, 0xb2, 0x88,
-0x10, 0x3b, 0x04, 0x96, 0x91, 0x78, 0xcc, 0xa5,
-0xbf, 0x2c, 0x20, 0xb7, 0x46, 0x11, 0xd6, 0x7f,
-0xb9, 0x02, 0x61, 0x79, 0x0c, 0x7f, 0x01, 0xda,
-0x2a, 0xd5, 0x72, 0x5d, 0xf8, 0x0b, 0x07, 0x5b,
-0x31, 0x32, 0x1d, 0x2b, 0x83, 0x5e, 0xce, 0xc9,
-0xe0, 0x2f, 0xa1, 0xaa, 0xe5, 0x36, 0x4e, 0x72,
-0x58, 0x65, 0xdc, 0x8e, 0x8b, 0xfb, 0xa8, 0xe0,
-0x37, 0xf2, 0x12, 0x9e, 0x6d, 0x36, 0x24, 0xdf,
-0x46, 0x9e, 0xcc, 0x08, 0xc9, 0x71, 0x43, 0x5f,
-0x6d, 0xe8, 0x46, 0xc7, 0x06, 0x87, 0x7f, 0xa3,
-0x90, 0xfd, 0xe4, 0x98, 0x5d, 0xb4, 0x08, 0x63,
-0x2c, 0x23, 0x5f, 0x93, 0x2a, 0xac, 0x08, 0x2f,
-0xa3, 0xdd, 0xa8, 0xca, 0x9a, 0x9f, 0x37, 0xc9,
-0x5b, 0x03, 0xe1, 0x95, 0xde, 0x8d, 0xc2, 0x90,
-0x1b, 0x7f, 0xd5, 0x19, 0x55, 0x89, 0xc6, 0xec,
-0x40, 0x58, 0xc3, 0xc3, 0xe3, 0x9f, 0x14, 0x6e,
-0x30, 0xd2, 0x8f, 0x3e, 0xcc, 0x05, 0x6d, 0x86,
-0x67, 0x67, 0x0c, 0xff, 0xe1, 0xa2, 0xcc, 0xbd,
-0x51, 0xee, 0x94, 0x0d, 0xc6, 0xf8, 0xa9, 0x08,
-0x61, 0xfc, 0x1b, 0xb3, 0x9c, 0x40, 0x18, 0x17,
-0x55, 0xef, 0x37, 0x6b, 0x43, 0xde, 0xf6, 0x2c,
-0xfe, 0xc3, 0x9c, 0xea, 0x24, 0x0b, 0x7b, 0xed,
-0x21, 0xd3, 0x5a, 0x11, 0x64, 0x29, 0x7b, 0x48,
-0x7d, 0x22, 0xff, 0x74, 0x43, 0x80, 0xec, 0x3f,
-0x0d, 0x3e, 0x62, 0x72, 0xd2, 0x4a, 0xf2, 0x6a,
-0x88, 0x87, 0xbd, 0xe4, 0x35, 0x2c, 0x6f, 0x59,
-0x1c, 0x12, 0x1f, 0x26, 0xe5, 0xb4, 0xe3, 0xad,
-0x31, 0xfc, 0x87, 0x69, 0x5e, 0x92, 0x9c, 0xe1,
-0x55, 0xab, 0x42, 0xfa, 0x85, 0x85, 0x78, 0x5a,
-0x88, 0x09, 0x4e, 0x51, 0xa3, 0xd5, 0x60, 0x1c,
-0x1d, 0x59, 0xb1, 0xfe, 0x80, 0xa9, 0xcc, 0x1c,
-0xc3, 0x7f, 0x78, 0x50, 0x6d, 0x11, 0xdd, 0x04,
-0x7d, 0xa1, 0x00, 0x51, 0x9a, 0xc4, 0xc9, 0xf2,
-0xd3, 0x3c, 0x52, 0xd3, 0x4f, 0xbe, 0xcb, 0xc3,
-0x5e, 0xaf, 0x0a, 0x16, 0x40, 0x38, 0x8a, 0x42,
-0x60, 0x86, 0xd2, 0x1c, 0x1f, 0xc7, 0x7f, 0xc8,
-0xf6, 0x41, 0xa7, 0xec, 0xab, 0x32, 0xa6, 0x44,
-0xa5, 0xaf, 0x02, 0xda, 0x62, 0x5d, 0x5f, 0x25,
-0xbd, 0x9c, 0xff, 0xf0, 0x58, 0x06, 0x88, 0x1d,
-0x6f, 0x9d, 0x93, 0x04, 0x20, 0xf6, 0x36, 0xb1,
-0xf1, 0x97, 0xfc, 0x2d, 0x21, 0x42, 0xff, 0xa7,
-0xe5, 0x3a, 0xc2, 0x9e, 0xc2, 0x09, 0xdf, 0x8c,
-0xcf, 0x62, 0xb6, 0x21, 0x20, 0x68, 0x84, 0x66,
-0xcb, 0x1d, 0x19, 0x29, 0xd1, 0xca, 0xdb, 0x59,
-0x61, 0x47, 0xc4, 0x0e, 0x5a, 0xf5, 0x17, 0x32,
-0xf3, 0x0f, 0x97, 0x79, 0x47, 0x8a, 0x2f, 0x1b,
-0xdf, 0x49, 0xcc, 0xe1, 0xf1, 0xaf, 0xe3, 0x74,
-0x8e, 0xee, 0x8b, 0x5e, 0x77, 0x59, 0x79, 0x9f,
-0x7b, 0x83, 0x2f, 0x93, 0x17, 0x13, 0x73, 0x38,
-0xff, 0xe1, 0x15, 0xc0, 0x8c, 0xeb, 0xd0, 0x99,
-0x7c, 0x8f, 0x32, 0xfd, 0x65, 0x1b, 0x7f, 0x69,
-0x9b, 0xc9, 0x0e, 0x9a, 0xdf, 0xc7, 0xf7, 0x77,
-0xa2, 0x0f, 0xb1, 0x89, 0x6a, 0xd3, 0xf4, 0xc2,
-0x02, 0x03, 0xf9, 0xb5, 0xd8, 0xfc, 0x48, 0x03,
-0xf4, 0xdf, 0x13, 0x33, 0x87, 0x16, 0xb4, 0x48,
-0x58, 0x1f, 0x77, 0xcb, 0x10, 0x9b, 0xc3, 0x55,
-0x5a, 0x35, 0x0d, 0xb4, 0xb8, 0xf4, 0xbf, 0xd8,
-0xf4, 0x22, 0xff, 0xfc, 0xda, 0x1d, 0x42, 0x3e,
-0xe6, 0x8b, 0xde, 0x05, 0x8b, 0x72, 0x23, 0xea,
-0xb0, 0xac, 0xa5, 0xd6, 0xcc, 0x9f, 0x20, 0x0f,
-0x90, 0xb2, 0xfe, 0xbc, 0x16, 0x9e, 0x87, 0xcf,
-0xf3, 0x0f, 0x01, 0xf9, 0x12, 0x00, 0x6b, 0xb9,
-0x96, 0x9e, 0x38, 0xdf, 0xbf, 0x3a, 0xb2, 0x73,
-0x33, 0xda, 0xe0, 0xf1, 0xf4, 0x10, 0x71, 0xad,
-0xbd, 0x91, 0x99, 0x64, 0x3d, 0xef, 0x5a, 0x48,
-0xac, 0xbc, 0x1d, 0xa6, 0xd1, 0xfc, 0xa6, 0xa7,
-0x62, 0xac, 0xfe, 0x97, 0xab, 0xd6, 0x63, 0x3e,
-0xe3, 0x3f, 0xa4, 0x70, 0xd3, 0x3e, 0x65, 0x4f,
-0x6f, 0x3f, 0xe9, 0xe5, 0xd3, 0xeb, 0xd4, 0x17,
-0xbc, 0x8b, 0xc9, 0x30, 0xc3, 0x05, 0x4e, 0xfe,
-0x61, 0x82, 0xb0, 0xd8, 0x96, 0xed, 0xce, 0x31,
-0x22, 0x7a, 0x76, 0xe5, 0x04, 0x5e, 0x47, 0x7b,
-0x8b, 0x77, 0x6d, 0x27, 0xa3, 0x0d, 0x4e, 0xee,
-0xd3, 0x7d, 0xcc, 0xd0, 0xc1, 0x03, 0x31, 0x04,
-0x37, 0xfe, 0x92, 0xaf, 0xe0, 0x59, 0x0a, 0xfa,
-0x6c, 0x7f, 0x60, 0x21, 0x12, 0x00, 0xe0, 0x7f,
-0x20, 0x37, 0x1b, 0xb0, 0x3a, 0xdf, 0x26, 0xbf,
-0xe7, 0xf9, 0x87, 0x23, 0xe4, 0x45, 0x2c, 0x0d,
-0x4b, 0x65, 0xfc, 0xcc, 0x33, 0x98, 0x0d, 0x4e,
-0xbd, 0xc3, 0xad, 0x19, 0xfc, 0x25, 0x80, 0x7f,
-0xa8, 0x5f, 0x67, 0x05, 0xa7, 0xd0, 0xbd, 0x44,
-0xb5, 0x2f, 0x7f, 0xda, 0x97, 0x07, 0xde, 0xf2,
-0x6e, 0x3a, 0xab, 0xb7, 0x00, 0xc9, 0xc1, 0x5e,
-0x31, 0xb1, 0x0b, 0xc6, 0xfc, 0xc0, 0x01, 0x50,
-0x66, 0x15, 0xe9, 0xa8, 0x74, 0xf1, 0x6f, 0x68,
-0x7b, 0xa5, 0xaa, 0x25, 0x4e, 0xfc, 0xcb, 0x62,
-0x1d, 0x9f, 0x96, 0x54, 0xdb, 0xc5, 0x15, 0x64,
-0x6f, 0x07, 0x8b, 0x88, 0x3d, 0x49, 0x3a, 0xa8,
-0xdf, 0x5c, 0x9d, 0x5d, 0x07, 0xd4, 0x81, 0x1c,
-0x1d, 0xf1, 0xa4, 0x0b, 0x7f, 0x85, 0x9c, 0xfa,
-0xaf, 0xc0, 0x2b, 0x79, 0x48, 0xea, 0xd5, 0x66,
-0xe8, 0x09, 0x58, 0x2f, 0x2f, 0xed, 0x36, 0x2a,
-0x4c, 0xcf, 0x4c, 0x78, 0x59, 0x24, 0x02, 0x81,
-0xa3, 0x0c, 0x3b, 0x3c, 0x62, 0x04, 0x79, 0xfe,
-0x61, 0x0d, 0x82, 0xfd, 0x54, 0x83, 0x2b, 0xfe,
-0xc5, 0xd0, 0x1f, 0x4c, 0x1d, 0xdd, 0x4b, 0xc2,
-0x27, 0xf3, 0x39, 0xf9, 0xf9, 0x2c, 0x4d, 0xa5,
-0xd2, 0x0a, 0xba, 0xdb, 0x08, 0xf3, 0x79, 0x3e,
-0x4c, 0x8a, 0x7e, 0x9d, 0x6f, 0x85, 0x2d, 0x2c,
-0x20, 0x26, 0x30, 0xf1, 0xa9, 0xa4, 0x8b, 0xff,
-0x30, 0x56, 0x4f, 0x30, 0x17, 0xd4, 0x80, 0x09,
-0xe7, 0xb9, 0x85, 0xdf, 0x21, 0xf5, 0x1d, 0x3e,
-0x13, 0x16, 0x17, 0x89, 0x02, 0x0a, 0x3e, 0x80,
-0x79, 0x1e, 0x76, 0x42, 0x2d, 0xa2, 0x35, 0x86,
-0xa9, 0x1a, 0xc5, 0xa4, 0xe5, 0x6e, 0xfc, 0xc5,
-0xf4, 0xbf, 0xce, 0xc1, 0x32, 0xed, 0xe6, 0xdc,
-0xf2, 0xef, 0x23, 0xbf, 0x68, 0x8b, 0x9a, 0xe2,
-0x07, 0x1d, 0x14, 0xd9, 0xe6, 0x49, 0x37, 0xea,
-0xb5, 0x5d, 0xc6, 0x35, 0xe5, 0x81, 0x30, 0x3c,
-0x5a, 0x5c, 0x3b, 0xe0, 0xe6, 0x3f, 0x44, 0x31,
-0x35, 0xc0, 0x5f, 0x6f, 0x2b, 0x7b, 0xe3, 0x7e,
-0x1e, 0x2b, 0xe9, 0x44, 0x90, 0x95, 0x12, 0xa7,
-0x73, 0x46, 0x8e, 0x04, 0x67, 0x9b, 0x37, 0x02,
-0xdb, 0x59, 0x68, 0xcc, 0xca, 0x3f, 0x84, 0x96,
-0x25, 0xb0, 0x5b, 0xe9, 0x2e, 0xfe, 0x0d, 0x92,
-0xe4, 0x38, 0xb7, 0x8b, 0x04, 0x08, 0x53, 0x9f,
-0x47, 0x19, 0x44, 0x8f, 0x2e, 0x12, 0xfe, 0x86,
-0xd4, 0xc5, 0xa3, 0xb6, 0xda, 0x17, 0x7b, 0x76,
-0xf8, 0x01, 0xfb, 0x1e, 0xce, 0x1d, 0xea, 0x77,
-0xe3, 0x2f, 0xfd, 0x20, 0x7c, 0x8d, 0xf7, 0x49,
-0x0f, 0xdd, 0x6a, 0x7d, 0x1f, 0xb6, 0xb8, 0x64,
-0x3a, 0x5b, 0x65, 0xa9, 0x47, 0x3c, 0x23, 0xf4,
-0xc0, 0x6e, 0xa5, 0xb4, 0xb2, 0xb0, 0xd7, 0x34,
-0x6b, 0xdd, 0x2b, 0x60, 0x70, 0x47, 0x7c, 0xb6,
-0x9b, 0x7f, 0x23, 0xdc, 0x02, 0x33, 0xff, 0x3b,
-0x70, 0xe3, 0xf7, 0xbc, 0xc5, 0xb0, 0xf0, 0x3b,
-0xc8, 0x2f, 0x9a, 0x90, 0x9e, 0xe4, 0x4f, 0xd3,
-0x4f, 0xfd, 0x67, 0xc8, 0xf9, 0x86, 0xf0, 0xb0,
-0xd2, 0x81, 0x61, 0x65, 0xe5, 0x27, 0x56, 0x10,
-0x39, 0x16, 0x0e, 0x7b, 0xf7, 0x49, 0x24, 0x2b,
-0xff, 0xb0, 0xaf, 0x1a, 0x6f, 0xf5, 0x8f, 0x94,
-0x67, 0xcd, 0x6a, 0x87, 0x17, 0xf4, 0x2c, 0x2c,
-0x93, 0x45, 0x4a, 0x09, 0x8f, 0x8c, 0x56, 0x3f,
-0x04, 0xee, 0x25, 0xa6, 0xe3, 0xce, 0xb1, 0x16,
-0x4e, 0x9e, 0x4b, 0x00, 0xac, 0x65, 0xe5, 0x1f,
-0x86, 0x4f, 0xb2, 0x2c, 0xee, 0x43, 0x06, 0xc7,
-0xe6, 0x94, 0x7d, 0x0d, 0x22, 0xdd, 0xc8, 0x4b,
-0x6e, 0xb7, 0x72, 0xf5, 0xa8, 0xfe, 0x82, 0x7f,
-0x51, 0x83, 0xe4, 0x03, 0xc3, 0xd6, 0x5f, 0x46,
-0x16, 0xbe, 0xa7, 0x24, 0x17, 0xff, 0x21, 0x3c,
-0x56, 0x1c, 0x7f, 0x75, 0x20, 0x05, 0xe5, 0xb3,
-0xbc, 0x3e, 0x0e, 0x26, 0x21, 0x1e, 0xe0, 0x46,
-0x8f, 0x27, 0xc8, 0x55, 0x84, 0xe2, 0xf0, 0xc4,
-0xed, 0x11, 0x1d, 0xc5, 0x6a, 0x7f, 0xab, 0xb2,
-0xcd, 0x5d, 0xff, 0xb5, 0x37, 0x0a, 0x4f, 0x01,
-0x42, 0xaa, 0xd6, 0x84, 0x7e, 0xab, 0x32, 0x9b,
-0xc5, 0x97, 0x61, 0x99, 0x6a, 0xc5, 0x76, 0x66,
-0xe4, 0xc9, 0x28, 0xbb, 0x1c, 0xd3, 0x5b, 0x3c,
-0x58, 0x20, 0xe9, 0xe8, 0x18, 0x76, 0x13, 0x7d,
-0x9e, 0xa2, 0xc5, 0x43, 0x6e, 0xfe, 0x8d, 0x40,
-0x3a, 0x8a, 0x90, 0xaa, 0x9d, 0x96, 0xb5, 0x04,
-0x56, 0xc6, 0xed, 0xfa, 0x2f, 0x63, 0x03, 0x37,
-0xfe, 0x12, 0x00, 0x42, 0xf7, 0xda, 0xb2, 0x98,
-0xb2, 0x1c, 0x8c, 0x67, 0x79, 0x81, 0x12, 0x92,
-0xa8, 0x97, 0xb5, 0x28, 0x8b, 0xe1, 0x7d, 0x98,
-0xe1, 0xdf, 0x20, 0x21, 0x0a, 0xf8, 0xab, 0x4f,
-0xec, 0x25, 0xa1, 0x26, 0xaf, 0x05, 0xc4, 0x4c,
-0x9f, 0x2e, 0xb4, 0x23, 0x34, 0x33, 0xf3, 0x57,
-0xb7, 0x79, 0xc1, 0xf1, 0x48, 0xc4, 0x0a, 0x34,
-0xcc, 0x3f, 0x4c, 0x86, 0x78, 0x65, 0xeb, 0x07,
-0x38, 0xb8, 0x08, 0xf0, 0x97, 0xc3, 0xbf, 0x61,
-0x51, 0x1a, 0x9e, 0x23, 0x17, 0xb5, 0x03, 0x2e,
-0x50, 0x7c, 0x56, 0x6a, 0x61, 0x61, 0xaf, 0x45,
-0xa6, 0x64, 0xa9, 0x03, 0x98, 0x3c, 0xf4, 0xdc,
-0x67, 0x15, 0xbd, 0xd6, 0xcf, 0xab, 0x36, 0xb3,
-0xf9, 0x37, 0xba, 0x69, 0x30, 0xc5, 0x93, 0x73,
-0xe6, 0xb9, 0x13, 0x42, 0x2a, 0x34, 0x87, 0x10,
-0x78, 0x14, 0x65, 0x77, 0x6c, 0x68, 0xcf, 0xf2,
-0x0a, 0x60, 0xbd, 0x04, 0x70, 0x60, 0x3c, 0x6e,
-0xfe, 0x8d, 0x72, 0xb3, 0x92, 0x53, 0x1a, 0x6e,
-0x31, 0x16, 0x38, 0xe7, 0x7e, 0x2d, 0x9e, 0x12,
-0x5b, 0x80, 0x12, 0x5b, 0x6e, 0x32, 0x00, 0xd5,
-0xba, 0xea, 0xbf, 0x76, 0x88, 0x65, 0x44, 0x6d,
-0x16, 0x8b, 0xdc, 0xfc, 0x1b, 0x65, 0xc9, 0x00,
-0x97, 0x54, 0x76, 0x38, 0x4c, 0x6e, 0x4c, 0x7b,
-0x96, 0x8b, 0x45, 0xbc, 0xfc, 0x39, 0x5a, 0xf4,
-0xaa, 0xd2, 0x15, 0x2f, 0x4b, 0xe7, 0x2d, 0x16,
-0x5d, 0xa4, 0x28, 0xa8, 0x11, 0xa6, 0x2a, 0x76,
-0xfe, 0xbc, 0xc5, 0x7f, 0x08, 0x28, 0xbb, 0xe1,
-0x98, 0x99, 0x92, 0xf5, 0xb4, 0x3b, 0x91, 0x43,
-0x02, 0xc3, 0x6b, 0xaa, 0x0f, 0x62, 0x8b, 0x81,
-0x94, 0x10, 0x1e, 0x27, 0xa3, 0x1e, 0x5b, 0x92,
-0x04, 0xae, 0x73, 0xad, 0x9b, 0x7f, 0x83, 0x85,
-0xb4, 0x46, 0x61, 0x32, 0xf7, 0xa6, 0x2c, 0x6e,
-0x8d, 0x5a, 0xe4, 0xf2, 0xb9, 0x85, 0xe3, 0xaf,
-0xc1, 0xb6, 0x21, 0x61, 0x3f, 0xa9, 0xd9, 0x9e,
-0x9f, 0x46, 0xd9, 0xaf, 0xb4, 0xc5, 0x51, 0x7f,
-0x39, 0x51, 0xde, 0xaa, 0x0e, 0xa9, 0xb5, 0x59,
-0xfc, 0x1b, 0x1a, 0x77, 0xe7, 0xf2, 0x00, 0x88,
-0x39, 0xc5, 0x47, 0x60, 0xd0, 0x11, 0xc1, 0x96,
-0x7c, 0x55, 0x2c, 0x46, 0xc4, 0x61, 0xc5, 0xe2,
-0x85, 0x18, 0xd6, 0x22, 0x21, 0xdf, 0x43, 0x52,
-0x16, 0xff, 0x86, 0x15, 0x02, 0x38, 0x4b, 0x9f,
-0x41, 0x1f, 0xf2, 0x0d, 0xf2, 0x4d, 0x2c, 0x8a,
-0xd9, 0x24, 0x39, 0xec, 0x0d, 0xcb, 0x08, 0xaa,
-0x81, 0x00, 0x52, 0xe0, 0xc4, 0x0e, 0x76, 0xbe,
-0x56, 0xcc, 0xf7, 0xa8, 0x24, 0xba, 0xf8, 0x37,
-0x0c, 0x7f, 0x4b, 0xc0, 0x2e, 0xc5, 0x52, 0xbf,
-0x1b, 0xff, 0x1d, 0x07, 0x47, 0x9b, 0xc5, 0x0a,
-0x57, 0xda, 0x98, 0xe1, 0xbf, 0x53, 0xb5, 0xe4,
-0xba, 0x32, 0x49, 0x86, 0xd9, 0xfa, 0xcb, 0x5d,
-0x24, 0xc9, 0xc9, 0xea, 0xf7, 0x36, 0x4f, 0x8b,
-0x76, 0x26, 0xc4, 0x37, 0x38, 0x33, 0x43, 0x21,
-0xee, 0x83, 0xd6, 0x75, 0x30, 0x23, 0x71, 0x00,
-0x9e, 0x5c, 0xf7, 0x75, 0xc8, 0xd6, 0x26, 0xb5,
-0x44, 0x2c, 0xc8, 0xe2, 0x3f, 0x6c, 0xe2, 0xa1,
-0x16, 0x5d, 0x8f, 0xa9, 0x85, 0x4e, 0xfc, 0xcb,
-0x23, 0x73, 0xb4, 0x15, 0xe6, 0x2a, 0x54, 0x4d,
-0x18, 0x08, 0x73, 0xe9, 0x02, 0xeb, 0x7a, 0x14,
-0xf5, 0x97, 0x33, 0xfc, 0x1b, 0xf0, 0x4a, 0xb9,
-0x16, 0xb1, 0x55, 0x72, 0x84, 0xcc, 0xf2, 0x60,
-0x21, 0x8f, 0xc1, 0xe6, 0x79, 0x5a, 0x1b, 0x97,
-0xb1, 0xf3, 0x3d, 0xa0, 0x82, 0x11, 0x08, 0x69,
-0xbe, 0x38, 0xb6, 0x04, 0xba, 0x9d, 0xfa, 0x1d,
-0xba, 0xe8, 0x81, 0x46, 0x77, 0xfe, 0xa1, 0xff,
-0x00, 0xd6, 0x0a, 0x9d, 0x53, 0x2e, 0xe1, 0xf3,
-0x65, 0x17, 0x79, 0x2d, 0xc2, 0xf8, 0x17, 0x9b,
-0xe7, 0x97, 0x24, 0x16, 0x23, 0x8b, 0xfa, 0xb0,
-0x6e, 0xeb, 0x92, 0x9d, 0xea, 0x76, 0x49, 0xab,
-0x67, 0xf1, 0xaf, 0x0c, 0xff, 0xc6, 0x25, 0x4e,
-0x7b, 0x68, 0xa7, 0x14, 0xc2, 0x03, 0xcb, 0xb2,
-0x43, 0x87, 0xed, 0xf5, 0x1a, 0x90, 0x2a, 0x94,
-0x67, 0xa1, 0xeb, 0x7f, 0x0d, 0x64, 0x56, 0x10,
-0xff, 0xad, 0x9a, 0x79, 0xbe, 0xec, 0xf8, 0x97,
-0xc8, 0xb8, 0x35, 0x86, 0xb4, 0x1e, 0xf2, 0x53,
-0x92, 0x29, 0xfb, 0x4a, 0x8a, 0x01, 0xd2, 0x23,
-0xfc, 0x3d, 0x1a, 0x98, 0x76, 0x98, 0x24, 0xd7,
-0x25, 0x9d, 0xfc, 0x43, 0x46, 0xb9, 0xef, 0x27,
-0x0b, 0x88, 0x58, 0xe0, 0xe6, 0xdf, 0x00, 0x04,
-0x64, 0xc7, 0xb6, 0x38, 0x11, 0xa2, 0xc8, 0xe3,
-0x5f, 0x4e, 0x20, 0xcc, 0xee, 0x72, 0x8b, 0x02,
-0x50, 0x68, 0x29, 0xf5, 0x14, 0x59, 0xfc, 0x1b,
-0x2c, 0xff, 0x30, 0xc9, 0x70, 0x37, 0xdd, 0x4d,
-0xa7, 0xa3, 0xec, 0xd7, 0xa0, 0x1d, 0x2d, 0x75,
-0xdf, 0x3f, 0xd4, 0x1f, 0x85, 0x6d, 0xd4, 0x69,
-0xc1, 0xbf, 0xf2, 0xc7, 0xe0, 0x41, 0xcb, 0x75,
-0xf3, 0x6f, 0x84, 0x2d, 0xfc, 0x75, 0x3a, 0x1c,
-0x63, 0xf8, 0x8b, 0xcd, 0xcf, 0x46, 0x75, 0x2a,
-0x67, 0xec, 0xdf, 0x88, 0x6a, 0x5f, 0x34, 0xbc,
-0x54, 0xdd, 0xec, 0xa9, 0xb0, 0xd2, 0x05, 0xf9,
-0xfd, 0xbc, 0xdc, 0xe7, 0xc4, 0xbf, 0x2c, 0xfe,
-0x0d, 0x2e, 0x01, 0x70, 0x36, 0xbb, 0xc8, 0xab,
-0xd3, 0x32, 0xae, 0xc1, 0x2e, 0x25, 0x12, 0xf3,
-0x69, 0x6d, 0x3c, 0x88, 0xcc, 0xc7, 0x1c, 0xdc,
-0x0f, 0x46, 0x36, 0xff, 0xc6, 0x56, 0xf0, 0x89,
-0xb0, 0xda, 0x2b, 0xca, 0xaa, 0xbd, 0x5e, 0xe7,
-0xf7, 0x8f, 0xac, 0x96, 0x59, 0x69, 0xab, 0x6d,
-0x08, 0xed, 0xc3, 0x9a, 0xb7, 0xbd, 0x31, 0x83,
-0xdf, 0x51, 0x11, 0xac, 0xc8, 0x4b, 0x55, 0xd1,
-0xc5, 0x7f, 0x48, 0xcb, 0x13, 0x9c, 0x52, 0xbe,
-0xa9, 0x9a, 0x2a, 0x67, 0xc4, 0xf3, 0xc4, 0xe2,
-0x9f, 0x0f, 0x60, 0x81, 0x24, 0x55, 0xcf, 0x00,
-0xa8, 0xd9, 0x6f, 0x7c, 0x76, 0x3b, 0x74, 0x21,
-0x34, 0x73, 0x92, 0x15, 0x1f, 0x4b, 0x44, 0x87,
-0x44, 0x57, 0xfc, 0x6b, 0xaf, 0x1d, 0xd2, 0xea,
-0x32, 0x82, 0x69, 0x25, 0x02, 0x98, 0x9a, 0xbd,
-0xc7, 0xea, 0x6c, 0x76, 0x65, 0x99, 0xbd, 0xb5,
-0xc0, 0x4f, 0xc8, 0xae, 0xff, 0x22, 0xfa, 0xef,
-0x95, 0x3a, 0x77, 0xfc, 0xeb, 0x19, 0x65, 0xcb,
-0x41, 0x85, 0xd1, 0xce, 0x8b, 0xc1, 0x61, 0xa5,
-0x25, 0xce, 0x85, 0x1a, 0xd5, 0x7b, 0xe1, 0x19,
-0x5c, 0x65, 0xbf, 0x9f, 0x77, 0x90, 0x1b, 0xd3,
-0x4a, 0x2c, 0xee, 0xae, 0xff, 0xc2, 0x7f, 0xbd,
-0x25, 0xae, 0xcb, 0x36, 0xfe, 0x92, 0x2f, 0xb7,
-0xd6, 0xa4, 0x17, 0xb2, 0xd8, 0x56, 0xfb, 0x5c,
-0x8c, 0x6d, 0xfd, 0x92, 0x23, 0xb2, 0xd9, 0xaa,
-0x45, 0xc4, 0xc1, 0xcb, 0xbe, 0x66, 0xe8, 0xc1,
-0xc5, 0x8d, 0xae, 0xfa, 0x2f, 0xd4, 0xff, 0x82,
-0xc1, 0xfe, 0x4c, 0xfc, 0xeb, 0x3c, 0xcc, 0xd0,
-0x24, 0x2b, 0x56, 0xd2, 0xcb, 0xc2, 0x5e, 0xce,
-0x76, 0x93, 0x31, 0x00, 0xa3, 0xf9, 0xb2, 0xea,
-0xbf, 0x2c, 0xc3, 0xc6, 0x5f, 0xae, 0xf8, 0x17,
-0x79, 0x91, 0xd6, 0x9c, 0xf6, 0x9d, 0x94, 0xc2,
-0x76, 0xc5, 0x4a, 0xc4, 0x0e, 0x84, 0x61, 0x8e,
-0x62, 0x5d, 0x6c, 0x6d, 0xbf, 0x14, 0x91, 0xaf,
-0xc0, 0x73, 0x63, 0x25, 0x2b, 0x5a, 0xf5, 0x5f,
-0x6c, 0xbd, 0x30, 0xfe, 0xb5, 0xdf, 0xb0, 0x28,
-0xe5, 0x57, 0x69, 0x65, 0x48, 0x16, 0x54, 0xc8,
-0x27, 0xe1, 0xac, 0x67, 0x72, 0x6c, 0x07, 0x16,
-0x70, 0xcd, 0xc3, 0xd9, 0x40, 0xa4, 0x39, 0x0f,
-0xf6, 0xaf, 0x1d, 0xda, 0x16, 0xab, 0x74, 0xae,
-0xa8, 0x8c, 0x06, 0xee, 0x16, 0xa7, 0x73, 0xfe,
-0x0d, 0xc4, 0x5f, 0xcf, 0xd8, 0xd2, 0x2a, 0xed,
-0x46, 0x59, 0x1f, 0x6c, 0x6d, 0xd6, 0xf6, 0x17,
-0xb3, 0x77, 0x3d, 0xbe, 0x0f, 0xc2, 0x2d, 0x21,
-0xe3, 0x75, 0x5c, 0x3a, 0xd7, 0x27, 0x94, 0x98,
-0xfd, 0x5c, 0x60, 0xfc, 0xab, 0x1b, 0xd5, 0x69,
-0x43, 0xe2, 0x71, 0x14, 0xe3, 0xbb, 0x03, 0x9e,
-0x1d, 0xcb, 0xbd, 0x9c, 0x1c, 0xcf, 0xe7, 0x46,
-0x2e, 0xae, 0xb2, 0x0e, 0xde, 0x3b, 0x78, 0xf8,
-0xae, 0xbc, 0x53, 0xd4, 0x86, 0x0b, 0x89, 0xa5,
-0x19, 0xfe, 0x0d, 0x78, 0x52, 0x3e, 0x90, 0x11,
-0x52, 0x1d, 0x22, 0xa9, 0x01, 0x5f, 0x4a, 0x0d,
-0xb0, 0x39, 0x54, 0xf7, 0x49, 0xd5, 0xec, 0xd4,
-0xda, 0xb7, 0x8d, 0x9d, 0x7e, 0x47, 0xb4, 0x8a,
-0x76, 0x54, 0x04, 0x63, 0x5a, 0xc6, 0x58, 0xa8,
-0x82, 0x75, 0xd0, 0xa9, 0xeb, 0x5c, 0xf1, 0xaf,
-0x51, 0xb2, 0xff, 0x20, 0xaa, 0x1a, 0xf5, 0xc3,
-0x9f, 0x9f, 0x58, 0x94, 0x92, 0xde, 0xe2, 0x6b,
-0xd1, 0xa5, 0x02, 0xc8, 0x22, 0xb6, 0x22, 0xb3,
-0x01, 0xcf, 0x57, 0x9d, 0x3b, 0x47, 0xf1, 0x43,
-0x2d, 0xd2, 0xec, 0xdb, 0xd9, 0x66, 0xe1, 0xaf,
-0x84, 0x86, 0xd9, 0x86, 0x30, 0xf3, 0xe8, 0x67,
-0x9e, 0x35, 0x61, 0x1f, 0xc6, 0x14, 0xb5, 0x2b,
-0x22, 0x82, 0x2c, 0x75, 0x32, 0x67, 0xdb, 0x68,
-0xc1, 0x08, 0x8b, 0x50, 0x33, 0xdd, 0x0a, 0xb5,
-0x38, 0x11, 0x96, 0x90, 0xe9, 0x0d, 0x48, 0x2e,
-0xfe, 0x8d, 0x9e, 0x81, 0xad, 0x14, 0xc3, 0x5e,
-0xca, 0xee, 0xb8, 0xff, 0xef, 0x94, 0xcd, 0x62,
-0x39, 0x77, 0x0b, 0x57, 0x17, 0x05, 0x79, 0xd8,
-0x6b, 0x1f, 0x86, 0x2d, 0x4c, 0x3d, 0x04, 0xae,
-0x63, 0x30, 0x93, 0x5b, 0x08, 0xc6, 0xb7, 0x95,
-0x9d, 0xa2, 0x8b, 0x7f, 0x63, 0x07, 0xf1, 0x2f,
-0xee, 0x60, 0xd7, 0x11, 0xb6, 0x9e, 0x56, 0x30,
-0x5f, 0x80, 0x5d, 0x27, 0x84, 0x95, 0x65, 0x98,
-0xe2, 0xf8, 0x14, 0x6e, 0x64, 0x1d, 0x7e, 0x0d,
-0xde, 0xbd, 0xec, 0x3a, 0xbd, 0x19, 0xb2, 0x8e,
-0x0d, 0xd9, 0xf1, 0x2f, 0xdd, 0x91, 0x9a, 0x32,
-0x94, 0x90, 0x47, 0x71, 0x12, 0x47, 0x35, 0xf6,
-0x9c, 0x32, 0x37, 0x43, 0xf2, 0xdf, 0xc1, 0xeb,
-0xf5, 0x0c, 0xbd, 0xdf, 0x7e, 0x4e, 0x0d, 0x00,
-0x11, 0x19, 0xfe, 0x0d, 0xe4, 0xab, 0xe4, 0x21,
-0xad, 0x11, 0x21, 0x2c, 0x78, 0x93, 0x36, 0x28,
-0xa6, 0xc8, 0x1f, 0x8e, 0x68, 0x6b, 0x8b, 0x14,
-0x54, 0xce, 0x57, 0x84, 0x4b, 0xbd, 0xd8, 0x72,
-0x21, 0xe3, 0x3f, 0x63, 0xcd, 0x91, 0x9b, 0xff,
-0xf0, 0x32, 0x32, 0x93, 0xc3, 0xd4, 0x79, 0x2f,
-0xc9, 0x2c, 0xa4, 0x35, 0xe2, 0x0a, 0x84, 0x21,
-0xff, 0xc6, 0xc1, 0x46, 0xe6, 0x16, 0x2a, 0xdc,
-0x3f, 0x24, 0x07, 0xfa, 0xdc, 0x81, 0x15, 0x9b,
-0x7f, 0x23, 0xe7, 0xb2, 0x32, 0x4c, 0x66, 0xdc,
-0x06, 0x8f, 0x67, 0x15, 0x2c, 0x1c, 0x23, 0xad,
-0x1a, 0xa6, 0xfb, 0x96, 0x20, 0x81, 0x58, 0x6e,
-0x1a, 0xf3, 0x0f, 0x15, 0x24, 0x23, 0xa4, 0x98,
-0x8f, 0x0d, 0xff, 0xc4, 0xab, 0x00, 0xcd, 0x66,
-0xb1, 0x62, 0x31, 0xe5, 0x45, 0x71, 0x86, 0xee,
-0x1d, 0xc8, 0xf0, 0x1f, 0x9e, 0x11, 0xf6, 0x9a,
-0x5b, 0x53, 0x18, 0x4c, 0x44, 0xda, 0xc3, 0x61,
-0xf5, 0x59, 0x00, 0x3e, 0x7b, 0xb5, 0xaa, 0x93,
-0xea, 0x3e, 0x3f, 0x18, 0x03, 0x55, 0x28, 0xca,
-0x56, 0x1d, 0xed, 0x34, 0xab, 0xce, 0xa9, 0x4f,
-0x60, 0x98, 0x89, 0x30, 0xfc, 0x95, 0x26, 0x9d,
-0x02, 0x13, 0x02, 0xb3, 0xf5, 0xbf, 0x90, 0x7f,
-0x63, 0x9e, 0xde, 0x0c, 0x5e, 0x81, 0x17, 0x49,
-0x0e, 0x35, 0x95, 0x80, 0x1b, 0x9d, 0xd2, 0x57,
-0x5c, 0xab, 0xca, 0x0d, 0xbd, 0x42, 0x8a, 0x04,
-0xb5, 0xe9, 0x72, 0x11, 0x11, 0xa9, 0x11, 0x24,
-0xd0, 0x75, 0x86, 0x4b, 0xb0, 0xe1, 0x3c, 0xe3,
-0x39, 0xad, 0x42, 0x1a, 0xb2, 0xf4, 0xbf, 0xfc,
-0x54, 0xbd, 0x0a, 0x25, 0x95, 0xad, 0xa4, 0x91,
-0x24, 0x37, 0xe2, 0xec, 0x84, 0x53, 0x51, 0xe8,
-0x41, 0xce, 0x27, 0x0c, 0x5d, 0xbc, 0x12, 0x90,
-0x91, 0x64, 0xae, 0x96, 0xa7, 0xc5, 0x02, 0x5b,
-0x0f, 0x0e, 0x67, 0xf2, 0x0f, 0xf7, 0xe1, 0xb6,
-0x8e, 0xfc, 0x09, 0x23, 0x14, 0x5e, 0x56, 0x1b,
-0x61, 0x4f, 0x39, 0xff, 0xfd, 0x48, 0xb7, 0x6f,
-0x9b, 0xf8, 0x46, 0xe8, 0x42, 0x2a, 0xf2, 0x81,
-0x37, 0x51, 0x5e, 0x65, 0x1c, 0xe9, 0xaf, 0x1a,
-0x54, 0xe3, 0x52, 0x1f, 0x66, 0x56, 0x63, 0x20,
-0xec, 0x8c, 0x79, 0x44, 0x9f, 0xa5, 0x7b, 0x37,
-0x36, 0xba, 0xf9, 0x0f, 0xe5, 0xef, 0x50, 0x46,
-0x0d, 0x74, 0x41, 0x83, 0xfd, 0x6b, 0x1b, 0xea,
-0x38, 0x4b, 0xf0, 0xec, 0x3c, 0x0a, 0x0f, 0xda,
-0xc5, 0xd6, 0xb9, 0x65, 0xbe, 0xaf, 0xc3, 0x64,
-0xb2, 0xd3, 0xf8, 0x9d, 0x2c, 0xec, 0xc5, 0x48,
-0x6c, 0x30, 0x23, 0x71, 0x8e, 0xe1, 0xdb, 0x24,
-0x5e, 0x74, 0xf0, 0x17, 0xaa, 0x55, 0x36, 0x78,
-0x7f, 0xc2, 0x9e, 0xe5, 0xb0, 0x01, 0xf7, 0xcf,
-0x8d, 0x8c, 0x34, 0x18, 0x3c, 0x90, 0x80, 0xc6,
-0xf6, 0xaf, 0x6d, 0x78, 0x7e, 0x08, 0x00, 0x89,
-0xf1, 0x67, 0x1e, 0xa1, 0xd6, 0x73, 0xda, 0xab,
-0xd7, 0xc6, 0xbc, 0x9b, 0x33, 0xf8, 0xab, 0x52,
-0xde, 0xa1, 0xcd, 0xa2, 0xca, 0xce, 0x38, 0xde,
-0xf3, 0x5b, 0x8d, 0xaf, 0x27, 0x3d, 0x01, 0x71,
-0xb5, 0xf8, 0x36, 0xec, 0xf8, 0x9e, 0x40, 0xee,
-0x76, 0x54, 0xc0, 0xf9, 0x57, 0xe9, 0x6b, 0x4d,
-0x1d, 0xc2, 0x56, 0x12, 0x48, 0x7a, 0x74, 0x3b,
-0x51, 0xf3, 0x8d, 0xd8, 0x6a, 0xc5, 0x1f, 0x0b,
-0x50, 0x87, 0x7f, 0x5e, 0xf8, 0xbc, 0x91, 0x1a,
-0xd0, 0x5b, 0xa2, 0xb3, 0xf1, 0x9e, 0x17, 0x00,
-0x52, 0xe9, 0xa2, 0xa2, 0xb4, 0xb2, 0xdc, 0x8c,
-0x22, 0x45, 0x4b, 0x10, 0x58, 0xa6, 0xb2, 0x22,
-0x62, 0x70, 0xa6, 0x50, 0xa6, 0x3b, 0xc0, 0xe3,
-0x20, 0x22, 0x35, 0xfd, 0x34, 0x10, 0x6a, 0xb0,
-0xe2, 0x5f, 0x88, 0xbf, 0x0e, 0xd0, 0xc7, 0xb7,
-0x02, 0x7c, 0x9b, 0x42, 0x76, 0xb6, 0x97, 0x6d,
-0x03, 0x48, 0x75, 0xb5, 0xf1, 0x20, 0xad, 0x4c,
-0x76, 0x2c, 0x01, 0xe3, 0x7b, 0x89, 0xca, 0x41,
-0x75, 0xb1, 0xf8, 0x55, 0x79, 0x15, 0x56, 0x2a,
-0xdd, 0xe6, 0x8f, 0x18, 0x56, 0xc8, 0xe6, 0x97,
-0x72, 0x1b, 0x8f, 0xcb, 0xb8, 0xf9, 0xe7, 0x69,
-0x28, 0xea, 0xad, 0x95, 0x0a, 0xcc, 0x61, 0x2d,
-0xb4, 0xdd, 0x5b, 0x28, 0xc9, 0xe4, 0x60, 0x51,
-0x05, 0xf5, 0x96, 0x49, 0xb9, 0xc6, 0xbf, 0xb1,
-0x84, 0x6a, 0xc9, 0x6b, 0x3c, 0x97, 0x9c, 0x3d,
-0x08, 0x5d, 0x60, 0xd8, 0x35, 0x62, 0x26, 0xe9,
-0x69, 0x0a, 0xfa, 0x5d, 0xf1, 0x2f, 0xe3, 0x02,
-0x99, 0x93, 0xac, 0xfe, 0x80, 0xa5, 0x4f, 0x47,
-0xda, 0x99, 0x5f, 0x77, 0x5e, 0x0c, 0xd3, 0xea,
-0x34, 0x18, 0x18, 0xaf, 0xcc, 0xd7, 0xa4, 0x53,
-0x25, 0x57, 0xb4, 0x69, 0x26, 0x78, 0x83, 0x17,
-0x0d, 0x4b, 0x76, 0x19, 0x07, 0xd7, 0xf7, 0xfa,
-0x86, 0x27, 0x65, 0xf1, 0xcf, 0x47, 0x38, 0xb6,
-0xfa, 0x0d, 0xfc, 0x5b, 0x6b, 0x53, 0xd2, 0x7b,
-0xe2, 0x02, 0x12, 0x49, 0x57, 0x39, 0x44, 0x88,
-0xd8, 0xf5, 0x21, 0x0d, 0xa7, 0x83, 0x3f, 0x03,
-0x47, 0x68, 0x01, 0xb5, 0x9e, 0x77, 0x24, 0xab,
-0xf7, 0x25, 0x26, 0x4d, 0xd7, 0x6c, 0xfc, 0xa5,
-0xc1, 0xe6, 0x82, 0x69, 0x1b, 0x98, 0x88, 0x58,
-0x49, 0x14, 0x43, 0x34, 0x49, 0xbb, 0x5c, 0x69,
-0xd3, 0x1e, 0xc2, 0xab, 0xc9, 0x68, 0xd0, 0xb4,
-0x9d, 0x68, 0x14, 0xc2, 0x96, 0xb4, 0x8a, 0xef,
-0x3b, 0x27, 0xd9, 0xf9, 0x2a, 0x38, 0x78, 0x2e,
-0xfd, 0xaf, 0x9d, 0x34, 0x18, 0x53, 0xbe, 0x2d,
-0xfe, 0x88, 0xa7, 0x77, 0x62, 0x20, 0xec, 0x71,
-0xcc, 0xfc, 0xfc, 0xb6, 0x38, 0x45, 0x58, 0xd5,
-0x5b, 0x36, 0x4c, 0x66, 0x7b, 0x00, 0x76, 0xc5,
-0x59, 0xda, 0x61, 0x0d, 0x12, 0x21, 0x32, 0xfc,
-0xa5, 0x7f, 0x97, 0x96, 0xc5, 0xd4, 0xc5, 0x63,
-0xea, 0xbf, 0xa8, 0x32, 0x33, 0xbe, 0x16, 0x8b,
-0xf2, 0x70, 0x63, 0x7d, 0x55, 0x5f, 0x95, 0xa8,
-0x44, 0x99, 0xb6, 0xc9, 0xfa, 0xe3, 0x66, 0xd9,
-0xb0, 0x32, 0xd2, 0x00, 0x1b, 0xa2, 0x56, 0x76,
-0x10, 0xae, 0x2c, 0xb1, 0xda, 0x76, 0x58, 0xf7,
-0xf7, 0xc5, 0xf5, 0x8d, 0x5b, 0x97, 0x00, 0x2e,
-0x70, 0xe9, 0x7f, 0x7d, 0x80, 0x99, 0x84, 0x67,
-0x54, 0x00, 0x62, 0x79, 0x91, 0xe4, 0xd1, 0xad,
-0xd2, 0x3b, 0x58, 0x08, 0xd6, 0x51, 0x00, 0x37,
-0x76, 0xc7, 0x61, 0x33, 0xdc, 0xe5, 0xfd, 0xf1,
-0x86, 0xcf, 0xc6, 0xce, 0xbf, 0x14, 0x4e, 0x29,
-0x3f, 0x95, 0xae, 0x13, 0x0f, 0xa3, 0x66, 0x62,
-0x52, 0xba, 0x40, 0x5e, 0x05, 0x44, 0xe6, 0x73,
-0xe5, 0x1f, 0x9e, 0x26, 0x17, 0x8d, 0x7a, 0x86,
-0xb6, 0x70, 0x09, 0x64, 0x64, 0x3b, 0x64, 0xfc,
-0x87, 0x8c, 0xfd, 0xf5, 0x94, 0x8e, 0xaf, 0xc1,
-0x46, 0xc6, 0x10, 0x2b, 0xaf, 0x3b, 0x08, 0x88,
-0xec, 0xa4, 0xed, 0xd7, 0x0d, 0x95, 0x62, 0x8c,
-0xcc, 0x55, 0xff, 0xa5, 0x8d, 0x96, 0x84, 0x97,
-0x2d, 0x7a, 0x94, 0xfb, 0xea, 0x0d, 0x93, 0x2c,
-0x22, 0xc4, 0x06, 0x1f, 0xb2, 0x5b, 0x8c, 0xf2,
-0x34, 0xb6, 0x76, 0xe4, 0xeb, 0x9e, 0xe7, 0xc3,
-0x98, 0xcb, 0x21, 0x81, 0xc7, 0x0b, 0x74, 0xeb,
-0x19, 0x74, 0xf2, 0x0f, 0xff, 0xda, 0xd8, 0x9d,
-0xf4, 0x1b, 0x0b, 0x36, 0x58, 0xbe, 0x71, 0x9e,
-0x1d, 0xc8, 0xb0, 0x18, 0xed, 0xaa, 0x10, 0x64,
-0x4d, 0x63, 0x04, 0xf2, 0x3c, 0xec, 0xc5, 0xfd,
-0xe7, 0x37, 0xc4, 0xd5, 0xa6, 0x3f, 0xa6, 0x24,
-0xa4, 0x98, 0x3b, 0xfe, 0x55, 0x6e, 0x2c, 0xd0,
-0xe0, 0x3a, 0x7b, 0x6d, 0xfe, 0x43, 0x8b, 0xed,
-0xd0, 0x31, 0xf6, 0x91, 0x87, 0xb0, 0x6b, 0x20,
-0xec, 0x5c, 0x67, 0x70, 0x4b, 0x6b, 0x00, 0xaf,
-0x93, 0xc9, 0x3f, 0xf4, 0x92, 0x67, 0x03, 0x65,
-0xb7, 0xab, 0xc8, 0x2d, 0xff, 0x74, 0x45, 0x65,
-0x34, 0xef, 0x0e, 0xf1, 0x4e, 0xfa, 0x74, 0xa8,
-0x72, 0x61, 0xde, 0x1d, 0x4b, 0x4f, 0xd0, 0xa7,
-0xfd, 0x95, 0xb7, 0x35, 0x7e, 0x20, 0x4e, 0x4e,
-0x3c, 0xa0, 0x57, 0x46, 0x3b, 0xef, 0x40, 0x22,
-0x8e, 0x84, 0x1d, 0xff, 0xd2, 0x61, 0xb3, 0x2b,
-0xb2, 0xf5, 0x53, 0x58, 0xfc, 0x4b, 0xaf, 0x51,
-0x7c, 0x93, 0x54, 0xdd, 0x95, 0xcc, 0x69, 0x44,
-0x34, 0x57, 0xe4, 0x51, 0x48, 0xb2, 0xb0, 0xc5,
-0x22, 0x53, 0x4a, 0x8b, 0xa6, 0x81, 0xb1, 0x24,
-0xa9, 0xd7, 0x30, 0x9b, 0xc3, 0x25, 0xe0, 0x75,
-0x67, 0xf0, 0x57, 0x72, 0xb7, 0xb0, 0xdf, 0x58,
-0x84, 0xd8, 0xca, 0x0a, 0xfe, 0x62, 0xfc, 0x6b,
-0xca, 0x42, 0x5f, 0x57, 0xf9, 0x20, 0xea, 0xe2,
-0xb1, 0x88, 0x58, 0xb3, 0xc5, 0x88, 0x78, 0x82,
-0x58, 0xfc, 0xf3, 0xe7, 0x9a, 0x19, 0x58, 0x3b,
-0x9b, 0x89, 0x7f, 0x9d, 0x23, 0x97, 0xb6, 0xd7,
-0x2c, 0xf7, 0x36, 0xb3, 0xf5, 0xaa, 0x99, 0xc7,
-0xa3, 0x39, 0xc2, 0x7d, 0x1c, 0x91, 0xb1, 0x45,
-0x69, 0xc6, 0xf8, 0x97, 0x88, 0x71, 0x46, 0x78,
-0x15, 0xbc, 0xc8, 0x0b, 0x94, 0x38, 0x35, 0x7d,
-0x70, 0x58, 0xcd, 0xca, 0x3f, 0xf4, 0x6b, 0x51,
-0x8c, 0xe2, 0x21, 0xa4, 0xca, 0xa7, 0xe0, 0xc6,
-0x77, 0xe4, 0x2c, 0x25, 0x2c, 0x23, 0x11, 0x19,
-0xe9, 0x09, 0xc2, 0xae, 0x35, 0xb2, 0xc5, 0x7f,
-0x98, 0xe4, 0x1b, 0xc7, 0x10, 0xe9, 0xc8, 0xad,
-0x72, 0xf1, 0x6f, 0x30, 0xfc, 0x25, 0xfa, 0x07,
-0x14, 0x4e, 0x72, 0x98, 0x44, 0xea, 0x2d, 0x59,
-0x6c, 0x25, 0xdb, 0x78, 0x22, 0xe2, 0x16, 0x64,
-0xa4, 0xd7, 0x3c, 0x4d, 0x52, 0x2b, 0xef, 0x72,
-0xf1, 0x4c, 0xb6, 0x61, 0xb6, 0xa1, 0xd6, 0xe0,
-0xce, 0x3f, 0x44, 0xd9, 0x82, 0x9d, 0x78, 0xff,
-0x68, 0x2c, 0xb8, 0x89, 0x27, 0x19, 0xd3, 0x0c,
-0x65, 0x3d, 0x06, 0xb9, 0x88, 0xbf, 0x21, 0x9a,
-0xf0, 0x2f, 0x23, 0xab, 0x75, 0x96, 0xb6, 0x3a,
-0x35, 0xc3, 0x9f, 0xb9, 0xba, 0x1d, 0x79, 0x2f,
-0x9d, 0xfc, 0xc3, 0x42, 0x87, 0x16, 0x72, 0x1b,
-0xe6, 0x16, 0xb6, 0x44, 0x37, 0x4b, 0x37, 0x90,
-0x43, 0x7a, 0xd5, 0x3f, 0xad, 0xdd, 0x2c, 0xbd,
-0x99, 0xf3, 0x77, 0x46, 0xf8, 0x5e, 0xef, 0x46,
-0x61, 0x59, 0xec, 0x90, 0x19, 0x6e, 0x5e, 0x98,
-0x80, 0x7b, 0x63, 0x35, 0x9f, 0x9f, 0xdf, 0x89,
-0xab, 0x5b, 0x99, 0x58, 0xb3, 0x0b, 0x7f, 0x9d,
-0x25, 0x0c, 0x49, 0xc1, 0x75, 0xe4, 0xba, 0x96,
-0xea, 0xcd, 0xa8, 0xb6, 0xbc, 0x8d, 0x0d, 0xfe,
-0x45, 0xee, 0x59, 0x6d, 0x5f, 0xac, 0xfa, 0xfb,
-0xd2, 0x83, 0xa8, 0x82, 0xb7, 0xac, 0xfa, 0x1a,
-0x57, 0x8d, 0x18, 0x45, 0x83, 0xf1, 0x6f, 0xd8,
-0xf8, 0x8b, 0xf6, 0x6b, 0xdd, 0x02, 0x8b, 0x96,
-0x0e, 0x1b, 0x00, 0xb2, 0x64, 0x66, 0x84, 0x84,
-0x85, 0xed, 0x28, 0xd2, 0xdd, 0x54, 0x84, 0x2d,
-0xa7, 0x43, 0x66, 0x4e, 0x98, 0x4c, 0x6a, 0x87,
-0xa7, 0xa0, 0x5f, 0x67, 0xfa, 0x05, 0xa7, 0xe3,
-0xfd, 0x34, 0x12, 0xf2, 0xb9, 0xe2, 0x5f, 0xb3,
-0xc9, 0xc3, 0xa4, 0x2c, 0xa1, 0x2e, 0x97, 0x96,
-0x33, 0xfd, 0x2f, 0x2f, 0xc2, 0xe4, 0x3d, 0x3c,
-0xc9, 0x10, 0x8d, 0xad, 0x74, 0x76, 0x5a, 0xbd,
-0x4f, 0x5f, 0xc3, 0x14, 0xb4, 0x73, 0x87, 0xc8,
-0xab, 0x26, 0x0b, 0x84, 0x8d, 0xc2, 0x5f, 0xcd,
-0x45, 0xc3, 0x89, 0x7f, 0x7d, 0x9e, 0xb4, 0x75,
-0xe8, 0x07, 0xd5, 0x52, 0xa6, 0x5a, 0xb8, 0xcd,
-0xfc, 0x2c, 0x4f, 0xaa, 0x41, 0x1f, 0xdb, 0xe3,
-0x15, 0x1e, 0x11, 0x74, 0x4c, 0xe4, 0x78, 0x51,
-0x7c, 0x44, 0x4e, 0x5b, 0x21, 0x12, 0x1a, 0xb0,
-0xfd, 0x0d, 0xb6, 0x70, 0x4e, 0xfc, 0xeb, 0x6a,
-0xc2, 0x92, 0xc0, 0xd3, 0x1b, 0xee, 0x82, 0x3f,
-0x9f, 0x8a, 0x7f, 0xc5, 0x9c, 0xff, 0x7e, 0x65,
-0xb6, 0x85, 0x02, 0xf2, 0x62, 0xe2, 0x5d, 0xe4,
-0x11, 0x30, 0xae, 0x43, 0x8e, 0x8e, 0xef, 0x75,
-0xb0, 0xf7, 0xf3, 0x09, 0x1d, 0xa0, 0x99, 0x01,
-0x20, 0xc2, 0x89, 0x7f, 0xcd, 0x12, 0x57, 0x61,
-0x49, 0xd7, 0x72, 0x09, 0x03, 0x61, 0x33, 0x11,
-0x5b, 0xa1, 0x51, 0xce, 0x89, 0x10, 0xff, 0x40,
-0x43, 0xe9, 0xbc, 0x16, 0xe9, 0x18, 0xf9, 0x15,
-0x2b, 0xfb, 0x12, 0xbf, 0xaa, 0xfd, 0x82, 0xde,
-0xc2, 0x64, 0x97, 0x49, 0x1f, 0x00, 0xb1, 0xff,
-0xb5, 0x38, 0xa3, 0xff, 0xb5, 0x4d, 0x19, 0xcd,
-0x40, 0xaa, 0x5a, 0x8b, 0x76, 0xc3, 0x0d, 0xb2,
-0x0a, 0xf8, 0x49, 0x72, 0xc4, 0x09, 0x7b, 0x99,
-0x4c, 0xd4, 0x66, 0x04, 0x0f, 0x00, 0x13, 0x99,
-0xfc, 0xc3, 0xf3, 0xe4, 0x38, 0x56, 0x9f, 0x0d,
-0x31, 0xb4, 0x75, 0x73, 0x5a, 0x65, 0x89, 0x88,
-0x1d, 0xe5, 0x6f, 0xaa, 0x23, 0xe2, 0x65, 0xe3,
-0x42, 0xa2, 0x7e, 0xd0, 0xf7, 0x4d, 0xe8, 0xb2,
-0x18, 0x11, 0x91, 0xb1, 0xcd, 0x3a, 0x9f, 0x07,
-0xb0, 0x16, 0xbb, 0xfe, 0x2f, 0x54, 0x27, 0xff,
-0x70, 0x23, 0xf9, 0xd5, 0xa6, 0x32, 0xe2, 0x5d,
-0x22, 0xb2, 0x44, 0xcd, 0xf7, 0x50, 0xbf, 0x92,
-0x1c, 0xd8, 0x04, 0x9b, 0x0b, 0x18, 0xcb, 0x77,
-0xfd, 0xb4, 0xf2, 0x98, 0xfa, 0x75, 0xe9, 0x7f,
-0x34, 0xed, 0xba, 0xa5, 0xf2, 0x4d, 0x46, 0xdb,
-0xfb, 0x2c, 0x0f, 0x14, 0x0e, 0xfb, 0x1f, 0x50,
-0xb6, 0x34, 0xc1, 0xfc, 0x38, 0xf1, 0xaf, 0x8d,
-0xc8, 0x21, 0xd9, 0xa7, 0xc4, 0x3c, 0x99, 0xd8,
-0x96, 0xb2, 0x4b, 0x67, 0x83, 0xef, 0x82, 0xed,
-0x66, 0x2a, 0xb2, 0xfe, 0x4e, 0x46, 0x21, 0x30,
-0x73, 0x41, 0x4b, 0xc3, 0x29, 0xe3, 0x19, 0xde,
-0xc5, 0x22, 0x62, 0x03, 0x6a, 0xf3, 0x56, 0x27,
-0xfe, 0xd5, 0x47, 0x1e, 0x31, 0xf4, 0x84, 0x52,
-0x21, 0xb2, 0xb3, 0xc1, 0x01, 0x75, 0x76, 0xee,
-0xd1, 0x7e, 0xa6, 0x44, 0x50, 0x8b, 0x11, 0x16,
-0x3d, 0x88, 0x15, 0x46, 0x9f, 0x37, 0xa0, 0xab,
-0x1f, 0x19, 0x11, 0x2d, 0x91, 0x1d, 0xd8, 0x73,
-0x5b, 0x1b, 0xf4, 0xb4, 0x3a, 0xd9, 0x1d, 0xff,
-0x3a, 0x44, 0x9f, 0xb9, 0xe8, 0xdd, 0x88, 0xfe,
-0x18, 0x8d, 0x0c, 0xfb, 0x7a, 0x30, 0x3d, 0x86,
-0xd6, 0x0c, 0xf9, 0xf6, 0x49, 0xe0, 0xf7, 0x9a,
-0xd3, 0x86, 0x61, 0x32, 0x2b, 0x31, 0x00, 0x31,
-0xec, 0xdb, 0x29, 0xf2, 0x54, 0x25, 0x56, 0x11,
-0x76, 0xa8, 0x39, 0xbc, 0xd4, 0xf7, 0xac, 0x54,
-0x65, 0xc7, 0xbf, 0xde, 0x25, 0x67, 0xa3, 0x75,
-0x1c, 0xac, 0x7d, 0xe8, 0xa9, 0xeb, 0x5f, 0x17,
-0x7a, 0xec, 0x28, 0xf9, 0x50, 0xa9, 0x3b, 0xe8,
-0x0b, 0x15, 0x1f, 0x55, 0x3e, 0xc4, 0x12, 0xb3,
-0x19, 0x6d, 0x43, 0xf4, 0x43, 0xc6, 0x88, 0x98,
-0x59, 0xca, 0xa3, 0xf4, 0x3c, 0x7f, 0xd0, 0x9c,
-0xfa, 0xaf, 0x8f, 0x60, 0xdd, 0x6b, 0x0c, 0x6f,
-0xba, 0xad, 0xce, 0x2e, 0x11, 0xaa, 0x13, 0x8e,
-0x3b, 0xfc, 0x87, 0x60, 0x5c, 0x8f, 0xf9, 0xd8,
-0xc7, 0xc9, 0xcd, 0x3c, 0xc3, 0xcd, 0xe6, 0x3f,
-0xa4, 0xbd, 0x1a, 0x00, 0xb1, 0x11, 0x29, 0x6d,
-0xe3, 0xaf, 0x7f, 0xa0, 0xbb, 0xd3, 0xfe, 0x25,
-0xd1, 0x99, 0x0c, 0x13, 0x75, 0x9b, 0x81, 0x94,
-0x27, 0x38, 0xe9, 0x37, 0xc2, 0x56, 0x66, 0x30,
-0xda, 0xc3, 0xcf, 0xec, 0xf3, 0x14, 0x10, 0xc6,
-0x7f, 0x98, 0x82, 0x47, 0xc6, 0xe2, 0x3f, 0x7c,
-0x9f, 0x76, 0x2c, 0xf5, 0xb7, 0xa8, 0xeb, 0xfd,
-0x0e, 0xff, 0x46, 0xc0, 0x60, 0x75, 0x49, 0x3c,
-0xc7, 0x6c, 0x9a, 0x19, 0x4d, 0x15, 0x05, 0x95,
-0x27, 0x19, 0x0f, 0x43, 0x6e, 0x50, 0x03, 0xe7,
-0xdf, 0x54, 0x37, 0x8b, 0xc1, 0x8d, 0x4f, 0x0a,
-0x16, 0x23, 0x62, 0xa7, 0x6c, 0xc5, 0xbf, 0x3a,
-0x89, 0x3f, 0x04, 0x46, 0x3a, 0xb3, 0x7f, 0x75,
-0xe9, 0x49, 0xa2, 0xa4, 0xa6, 0xe3, 0xe3, 0x19,
-0xeb, 0xb7, 0xf9, 0x0f, 0xe1, 0x39, 0x85, 0x27,
-0xb7, 0xad, 0x0c, 0x8c, 0x70, 0x91, 0x97, 0x3c,
-0x66, 0xc4, 0x50, 0x53, 0x3b, 0x48, 0xd6, 0xdb,
-0x3a, 0x47, 0x71, 0x58, 0x70, 0xd5, 0xc9, 0xdf,
-0xa0, 0xf9, 0x06, 0x19, 0x6d, 0x0e, 0x1b, 0x81,
-0x9b, 0x60, 0x51, 0x2e, 0x90, 0x59, 0xc7, 0x58,
-0x3e, 0xdb, 0x93, 0x7a, 0xb8, 0xdf, 0x9b, 0x12,
-0x82, 0xc6, 0x91, 0x00, 0xac, 0x4e, 0x02, 0x5a,
-0xde, 0x31, 0x8a, 0x4e, 0x16, 0xa4, 0x0a, 0x83,
-0x98, 0x6f, 0x73, 0x82, 0x3d, 0x32, 0x87, 0xc0,
-0xf1, 0x58, 0x94, 0x6a, 0x4c, 0xdb, 0xf5, 0x5f,
-0x23, 0x64, 0x14, 0xfd, 0x0d, 0xf0, 0x0f, 0x93,
-0x57, 0x48, 0xe4, 0x10, 0x2f, 0xf2, 0xc2, 0xdd,
-0x6a, 0xb8, 0xf1, 0xa2, 0x00, 0x80, 0xb7, 0xd7,
-0xb7, 0xb3, 0x1c, 0x09, 0x34, 0xee, 0x3b, 0xc9,
-0xa8, 0xdb, 0x2e, 0x5a, 0xfe, 0xa1, 0xc8, 0x7c,
-0x92, 0xb1, 0xf9, 0x87, 0xb6, 0x64, 0x5e, 0x0d,
-0x9d, 0x74, 0x12, 0x73, 0x0b, 0x49, 0x7d, 0x3a,
-0x7f, 0xc4, 0x7f, 0x86, 0x1c, 0x8f, 0x57, 0x13,
-0x96, 0x6d, 0x78, 0x11, 0xcf, 0xd0, 0x50, 0xff,
-0x0b, 0x0c, 0x7e, 0xf4, 0xf1, 0x7b, 0xb2, 0x03,
-0x0b, 0xc1, 0x5c, 0xfc, 0xf3, 0x7b, 0x90, 0x2b,
-0x8f, 0xd7, 0x76, 0xf9, 0xf5, 0xce, 0x04, 0x97,
-0x4d, 0x41, 0x90, 0x75, 0x14, 0x03, 0x61, 0x3a,
-0x18, 0x4b, 0xc9, 0x6e, 0xb8, 0xc3, 0x3b, 0x3a,
-0x00, 0xa3, 0xf5, 0xb4, 0xa2, 0x38, 0x97, 0x07,
-0xc0, 0x5a, 0x3b, 0xab, 0x1a, 0x73, 0xe3, 0xaf,
-0x4c, 0x7a, 0xa7, 0x4e, 0x61, 0xea, 0xfa, 0x49,
-0x5c, 0x08, 0x9a, 0xd7, 0x84, 0x58, 0xd9, 0xd7,
-0x0a, 0xac, 0xb3, 0x33, 0x05, 0x16, 0xff, 0x42,
-0x9c, 0xdb, 0x0d, 0xf8, 0x0b, 0x9e, 0x14, 0xaf,
-0xd2, 0xcd, 0x6b, 0x27, 0x5d, 0xf8, 0x6b, 0x4f,
-0x87, 0x95, 0x77, 0xba, 0xc3, 0x58, 0x1a, 0xba,
-0x6e, 0x93, 0xf8, 0x36, 0xf9, 0x3e, 0x75, 0x16,
-0xf7, 0x0b, 0x5b, 0xc1, 0x58, 0x42, 0xad, 0x8a,
-0x42, 0xc4, 0x68, 0x3f, 0xe1, 0x8c, 0x2e, 0x7b,
-0x44, 0x7f, 0x0a, 0xfe, 0xca, 0xad, 0xbf, 0x6c,
-0x44, 0x8a, 0xac, 0x12, 0xaa, 0x70, 0x72, 0xdd,
-0xe6, 0xe7, 0xde, 0x23, 0x47, 0xfa, 0x58, 0x16,
-0xee, 0xdb, 0x70, 0x1f, 0x4e, 0x49, 0xb2, 0x6c,
-0xb1, 0xf3, 0x26, 0xec, 0x71, 0x18, 0x30, 0x1a,
-0x35, 0x66, 0xf1, 0x40, 0xf3, 0x48, 0x7f, 0x38,
-0x04, 0x7f, 0x35, 0x90, 0x15, 0xff, 0x6a, 0xae,
-0x46, 0x99, 0x80, 0x2b, 0xda, 0x01, 0xc2, 0x88,
-0x38, 0xde, 0xb6, 0x18, 0x11, 0x0d, 0x58, 0x2f,
-0x0a, 0x0b, 0xf7, 0x11, 0xae, 0x69, 0x93, 0xef,
-0x36, 0x16, 0x3b, 0xb6, 0xe2, 0x5f, 0x17, 0xb5,
-0x3a, 0xc2, 0xaa, 0xc6, 0x6c, 0xfc, 0x45, 0x2e,
-0x98, 0x8c, 0x99, 0xfc, 0x3d, 0xfd, 0x08, 0x09,
-0x6f, 0xf0, 0xf5, 0x94, 0x0f, 0x91, 0x0b, 0xd1,
-0x6e, 0xf6, 0x30, 0xe2, 0xeb, 0x34, 0x61, 0x57,
-0x0b, 0x1a, 0xec, 0xd6, 0x3a, 0x6f, 0x74, 0xf3,
-0xef, 0x73, 0xd6, 0xf0, 0x17, 0xb2, 0xef, 0x63,
-0xe1, 0x2f, 0x78, 0x1c, 0x7a, 0xab, 0x0c, 0x1e,
-0x16, 0xd4, 0xfd, 0xa1, 0x05, 0xbb, 0xc5, 0xb7,
-0xe4, 0xbd, 0x8a, 0xdf, 0x61, 0x2c, 0xa1, 0x6a,
-0x2a, 0x74, 0x86, 0xf4, 0xe8, 0xd3, 0xd3, 0x6c,
-0x7e, 0xf6, 0xd8, 0x4c, 0xa1, 0xe0, 0x15, 0x4c,
-0x86, 0xbf, 0xfa, 0x28, 0x13, 0xff, 0xea, 0x8a,
-0x55, 0x11, 0xa6, 0x23, 0xdf, 0x26, 0x54, 0x24,
-0x61, 0xbd, 0x7a, 0x75, 0x40, 0xd0, 0xa6, 0x14,
-0x02, 0xe7, 0x8d, 0xc9, 0x7e, 0x85, 0xc0, 0x1b,
-0xdb, 0x91, 0x06, 0x6f, 0x90, 0x30, 0xf9, 0x78,
-0x1d, 0xaf, 0x83, 0x81, 0x30, 0xc0, 0xcb, 0x21,
-0x71, 0x24, 0x4b, 0x7f, 0xb9, 0x25, 0x0a, 0xae,
-0xbe, 0xb8, 0x8e, 0x4e, 0x4d, 0xaa, 0x28, 0x50,
-0xb5, 0xd3, 0x72, 0xfe, 0x93, 0x80, 0xb6, 0x74,
-0x16, 0x85, 0xb9, 0x89, 0xde, 0xf8, 0xb6, 0x12,
-0x00, 0x8c, 0x96, 0xe2, 0x5d, 0x53, 0xc8, 0xb3,
-0x89, 0xa9, 0xba, 0xb2, 0xb2, 0xe1, 0x4c, 0x06,
-0x7f, 0x61, 0x31, 0x02, 0x2b, 0xe9, 0x3a, 0x48,
-0x66, 0xc6, 0x7d, 0x7a, 0x63, 0x2f, 0xee, 0xef,
-0xf8, 0xd6, 0x3a, 0x8c, 0x44, 0x88, 0x06, 0x18,
-0xfd, 0x18, 0xed, 0x5a, 0xee, 0x25, 0x18, 0xff,
-0x32, 0x42, 0x67, 0x60, 0x7e, 0xbc, 0xc6, 0x59,
-0x32, 0xd3, 0xf0, 0x86, 0x24, 0x57, 0xfd, 0x17,
-0x40, 0x2a, 0x3c, 0x45, 0x3f, 0xa5, 0x7c, 0x44,
-0xe6, 0x50, 0x5b, 0xdf, 0xc1, 0xb4, 0x03, 0xcd,
-0x04, 0xa3, 0x5d, 0xe8, 0xe1, 0x37, 0xad, 0xc3,
-0xfa, 0xaf, 0x4b, 0xec, 0xf9, 0x52, 0x31, 0xbe,
-0xbc, 0x97, 0x8c, 0xe1, 0xdf, 0xa0, 0x61, 0x56,
-0xe3, 0x0c, 0x1d, 0x08, 0xa9, 0xc4, 0x37, 0xc5,
-0x57, 0x28, 0x5b, 0x94, 0xb4, 0x78, 0x84, 0x67,
-0x71, 0xa7, 0x31, 0xed, 0x90, 0xaf, 0x17, 0xe6,
-0x1b, 0xc3, 0x3b, 0x3c, 0x08, 0x6f, 0x51, 0xf6,
-0x57, 0x2e, 0xfd, 0xaf, 0x03, 0x80, 0xa4, 0x16,
-0xa0, 0xbe, 0xcc, 0x2e, 0x52, 0x46, 0x71, 0x6f,
-0x02, 0xfc, 0x55, 0x66, 0x27, 0xb1, 0xc0, 0x26,
-0xde, 0x72, 0xc7, 0x09, 0xf2, 0xef, 0x72, 0xb5,
-0xa1, 0xc4, 0xec, 0x73, 0x3f, 0x24, 0x42, 0xec,
-0x22, 0x65, 0x44, 0xcd, 0xd2, 0xff, 0xda, 0x85,
-0x48, 0x0a, 0x27, 0xf3, 0xbb, 0xad, 0x5b, 0x92,
-0x9d, 0xcb, 0xc5, 0x5f, 0x56, 0x50, 0x6b, 0x9e,
-0x89, 0x35, 0xcf, 0x87, 0xe5, 0x07, 0xe9, 0x37,
-0x62, 0x9b, 0x66, 0xb3, 0xf8, 0x97, 0x35, 0xcf,
-0x4f, 0x77, 0x6c, 0xc1, 0x2e, 0x77, 0xfe, 0x61,
-0xae, 0xbf, 0x59, 0x0d, 0x15, 0x1d, 0x37, 0x30,
-0xa6, 0xf9, 0x57, 0x3d, 0xb0, 0x37, 0x51, 0x4d,
-0x77, 0xb2, 0x0d, 0x65, 0x30, 0x8e, 0xeb, 0x00,
-0xc0, 0x63, 0xa5, 0x73, 0x70, 0x8f, 0xeb, 0xc0,
-0x2e, 0x78, 0x51, 0x77, 0x99, 0x7a, 0x08, 0xba,
-0xb2, 0xf4, 0xbf, 0x76, 0x3c, 0xb5, 0x2e, 0x29,
-0x8d, 0x18, 0x00, 0xa9, 0xa8, 0xef, 0x6d, 0x69,
-0x84, 0x1c, 0xe3, 0x6a, 0xcb, 0xa3, 0x0d, 0x6b,
-0x48, 0x7d, 0x92, 0x65, 0x1b, 0x1e, 0x23, 0x91,
-0xed, 0xc1, 0xb4, 0x1a, 0x20, 0x97, 0x93, 0xdd,
-0x3c, 0x35, 0xf1, 0xb2, 0x51, 0xb3, 0x0d, 0xbb,
-0x5c, 0xf9, 0x87, 0xad, 0x4e, 0xcd, 0xc8, 0x7e,
-0x74, 0xd5, 0x4e, 0xeb, 0x23, 0x51, 0xd6, 0xd2,
-0x8b, 0xb8, 0x40, 0xf4, 0x21, 0xdf, 0xe0, 0xb0,
-0x9d, 0x91, 0x98, 0x39, 0x57, 0x57, 0x22, 0x25,
-0xe3, 0xf8, 0x0f, 0xed, 0x7a, 0x22, 0x78, 0x88,
-0xd6, 0x83, 0xcf, 0x6b, 0x39, 0xff, 0x6f, 0xc2,
-0x4b, 0xd8, 0xaa, 0x08, 0x3b, 0x64, 0x76, 0xf3,
-0xc4, 0xad, 0xb3, 0x99, 0xf8, 0xd7, 0x38, 0xfd,
-0xaf, 0x78, 0x15, 0x22, 0xa0, 0x37, 0x49, 0x97,
-0xa1, 0xdf, 0x13, 0xdc, 0x28, 0xde, 0x60, 0x07,
-0x29, 0x7e, 0xc7, 0xca, 0xb5, 0x58, 0x48, 0xeb,
-0x15, 0x86, 0xb6, 0xb2, 0xe2, 0x5f, 0xc4, 0xdf,
-0x1c, 0x48, 0x64, 0xe5, 0x1f, 0x62, 0x5e, 0x77,
-0x22, 0xf7, 0x4d, 0xa4, 0xe6, 0x88, 0x2a, 0x1b,
-0xc5, 0x6d, 0xba, 0x9d, 0xac, 0x48, 0x57, 0x8b,
-0xd6, 0x75, 0x3a, 0x0d, 0x7d, 0x82, 0xeb, 0x28,
-0xd9, 0xf9, 0x87, 0x1b, 0x83, 0xcb, 0x18, 0x0a,
-0xd8, 0x4d, 0xf4, 0x28, 0x80, 0xf4, 0x76, 0x74,
-0x33, 0x98, 0xf3, 0xdf, 0xd0, 0x4a, 0x56, 0xf0,
-0xd4, 0xc4, 0xf5, 0x44, 0x5f, 0xa6, 0x8c, 0x89,
-0x7f, 0x25, 0xa3, 0x63, 0xf4, 0x97, 0x8d, 0x48,
-0x21, 0xcb, 0x2d, 0x1c, 0x6e, 0x0e, 0x0b, 0xde,
-0x76, 0x75, 0x8b, 0x31, 0xd2, 0xcc, 0x18, 0x39,
-0x4e, 0x6f, 0xed, 0xb7, 0xf8, 0xe7, 0xb7, 0xf5,
-0x4f, 0x0f, 0x6b, 0x41, 0x27, 0xfe, 0xf5, 0x80,
-0xcd, 0x5f, 0x97, 0x95, 0x7f, 0x78, 0x09, 0x65,
-0xbf, 0x10, 0x0a, 0x31, 0x49, 0xe5, 0x97, 0xa5,
-0x7b, 0x8d, 0x4b, 0x1a, 0x07, 0x59, 0x94, 0xa7,
-0x26, 0x16, 0x9f, 0x73, 0xe2, 0x5f, 0xca, 0x25,
-0xe2, 0x8e, 0x7f, 0x25, 0xdc, 0xfc, 0x87, 0x57,
-0x58, 0xfe, 0x21, 0x5c, 0xe7, 0x1f, 0xec, 0xf8,
-0x97, 0x35, 0xf8, 0x9c, 0x80, 0x81, 0x1e, 0x05,
-0xff, 0x0a, 0x1c, 0x8f, 0x79, 0x8b, 0x18, 0x77,
-0x1f, 0xef, 0xaa, 0xb0, 0xb2, 0x16, 0xdd, 0xfa,
-0xcb, 0xb0, 0x7f, 0x71, 0x6e, 0xc3, 0x35, 0x5c,
-0xdb, 0x8b, 0xd5, 0x13, 0xb1, 0x83, 0x3b, 0x01,
-0x77, 0x2c, 0x85, 0x13, 0x71, 0x6c, 0xb5, 0xf3,
-0x0f, 0x59, 0xfc, 0x2b, 0x36, 0xb1, 0xfe, 0x72,
-0x0c, 0x66, 0xec, 0x0c, 0xa0, 0xad, 0x58, 0x2c,
-0x8b, 0x88, 0x43, 0x6c, 0xb5, 0x4b, 0xc3, 0x5a,
-0xe9, 0xf2, 0x2c, 0x8e, 0x0e, 0xd9, 0xfe, 0xab,
-0x31, 0xfa, 0xcb, 0xb8, 0xb8, 0x46, 0x2b, 0x79,
-0xdd, 0x58, 0xb0, 0x9e, 0x38, 0xc9, 0xa5, 0xbf,
-0x53, 0xe0, 0xfe, 0x61, 0x6a, 0xcb, 0xf4, 0x09,
-0xf2, 0x75, 0x53, 0xdd, 0x68, 0x95, 0x7d, 0x31,
-0x8e, 0x8e, 0xdd, 0xcd, 0xec, 0xaf, 0xdc, 0xfa,
-0x5f, 0x34, 0xd2, 0x04, 0xbf, 0xf4, 0x0d, 0xfd,
-0xad, 0x44, 0xf7, 0x17, 0xd7, 0x6d, 0x90, 0x7e,
-0x67, 0xd8, 0x89, 0x88, 0xe2, 0x6a, 0x5b, 0x4f,
-0xe1, 0x90, 0x51, 0x3b, 0x8f, 0xa7, 0x26, 0xea,
-0xf6, 0xfc, 0xd0, 0x2a, 0xc4, 0x5f, 0x6e, 0xfe,
-0x79, 0xfb, 0x29, 0x80, 0x0b, 0xce, 0xf3, 0x31,
-0x91, 0xaf, 0xed, 0x4e, 0xb0, 0xac, 0x0e, 0x97,
-0xf2, 0x05, 0x4c, 0x3b, 0x64, 0xa1, 0x31, 0x25,
-0x13, 0xff, 0xa2, 0x75, 0x46, 0x75, 0x76, 0xfd,
-0x57, 0x0c, 0x95, 0xe0, 0xa4, 0xd3, 0xf4, 0xe4,
-0xed, 0x61, 0x0c, 0x84, 0x95, 0x3b, 0x6c, 0x2d,
-0xba, 0x53, 0xf6, 0x35, 0xa0, 0x87, 0xc5, 0x0c,
-0x23, 0x3d, 0x82, 0x35, 0x24, 0x7b, 0x01, 0xc3,
-0x95, 0x7f, 0xb8, 0x9f, 0x94, 0x23, 0xda, 0x3a,
-0xa9, 0x3c, 0x6c, 0x94, 0x6f, 0x54, 0x06, 0x51,
-0xf6, 0xcb, 0x60, 0x41, 0xae, 0xf3, 0x3c, 0xfe,
-0xc5, 0xd8, 0xe6, 0xa9, 0x94, 0x70, 0x34, 0x9a,
-0xd5, 0xa4, 0x07, 0xa1, 0x59, 0x79, 0x16, 0xfe,
-0x5a, 0x08, 0xee, 0x81, 0x9f, 0x9f, 0xab, 0x3f,
-0x62, 0x6c, 0x1b, 0x04, 0xb8, 0x14, 0x27, 0xd4,
-0x60, 0xce, 0xdb, 0xbb, 0x86, 0x93, 0x6d, 0x98,
-0x38, 0x21, 0x6b, 0x56, 0x6a, 0xa2, 0xb5, 0x7f,
-0x81, 0x81, 0x95, 0x26, 0x99, 0xfc, 0x43, 0xe5,
-0x69, 0xca, 0x38, 0x1f, 0x2e, 0x96, 0x3e, 0xa0,
-0xe0, 0x71, 0x56, 0xee, 0x23, 0xa4, 0xdd, 0x0e,
-0x72, 0xd9, 0xe5, 0x48, 0x5a, 0x82, 0x4c, 0x15,
-0x58, 0x7d, 0x13, 0xd3, 0x68, 0xbe, 0x1b, 0x91,
-0x02, 0x65, 0x2f, 0x73, 0x57, 0xfe, 0xe1, 0x25,
-0x7c, 0x2e, 0x57, 0x4a, 0xaf, 0x2a, 0xbf, 0x42,
-0xe0, 0x33, 0xa2, 0x76, 0x33, 0x6c, 0x65, 0x91,
-0xcc, 0xcf, 0xe5, 0x69, 0x87, 0xbf, 0xa4, 0x4f,
-0x9f, 0x76, 0xc2, 0x5e, 0x3e, 0x94, 0x06, 0xfb,
-0x90, 0x13, 0x71, 0xb8, 0xf4, 0x97, 0x61, 0x95,
-0x05, 0xe6, 0x15, 0x7c, 0x08, 0x98, 0x7a, 0x1d,
-0x1e, 0xe9, 0x8c, 0x08, 0x5c, 0x0c, 0x54, 0xbc,
-0x60, 0xb3, 0x34, 0x0f, 0xd9, 0x74, 0x61, 0x59,
-0xa4, 0x5e, 0xbe, 0x54, 0x96, 0xfe, 0x72, 0x7b,
-0x8d, 0xce, 0xfc, 0xc3, 0xe3, 0xad, 0x73, 0xd2,
-0x12, 0xc6, 0xbf, 0x2e, 0x25, 0x6a, 0x06, 0x7d,
-0x80, 0xbf, 0xc8, 0x11, 0x1b, 0x76, 0xbd, 0x48,
-0xeb, 0x2b, 0xbc, 0x9c, 0x9a, 0x63, 0x87, 0x1d,
-0x1a, 0xc3, 0x31, 0x6e, 0xfd, 0xe5, 0x67, 0xb5,
-0x72, 0x96, 0x3f, 0x6f, 0xac, 0xd2, 0xe0, 0xb7,
-0x37, 0x88, 0x25, 0x64, 0x1f, 0x99, 0x81, 0xd3,
-0x72, 0x91, 0xae, 0x4a, 0x31, 0x6a, 0xfa, 0x53,
-0x06, 0xcc, 0xd8, 0xf4, 0x40, 0x0b, 0x9f, 0x16,
-0xbe, 0x7f, 0xed, 0x52, 0xca, 0xda, 0x61, 0x8c,
-0x4b, 0xff, 0x6b, 0x27, 0x61, 0xf3, 0x7c, 0x42,
-0x5c, 0x47, 0xca, 0x0e, 0xaa, 0x03, 0x4b, 0x35,
-0x63, 0x27, 0xf9, 0x6b, 0x44, 0xb5, 0xa7, 0xc8,
-0xf7, 0x2c, 0x6a, 0x7a, 0xb2, 0x4a, 0x63, 0xd2,
-0xcc, 0x88, 0xd1, 0xd8, 0x16, 0xc9, 0x36, 0xc4,
-0x01, 0x30, 0x5c, 0xfa, 0xcb, 0xbb, 0xd7, 0xa0,
-0xdc, 0x5b, 0xee, 0x0b, 0xb0, 0x5b, 0x25, 0x75,
-0xb5, 0x24, 0x57, 0x10, 0x7a, 0x14, 0xb6, 0x7f,
-0x1d, 0xa7, 0x8f, 0x90, 0xe0, 0xcb, 0x2c, 0xdb,
-0x90, 0x02, 0xac, 0xc8, 0x9b, 0x81, 0xcb, 0xad,
-0xd9, 0xeb, 0x4e, 0xd9, 0x98, 0xfe, 0x0c, 0xfe,
-0x1a, 0xe9, 0x0f, 0x5d, 0x0d, 0x7b, 0xf7, 0xfb,
-0xc6, 0x11, 0x12, 0x1a, 0xf6, 0x3d, 0xad, 0xa2,
-0xb3, 0xf4, 0x0c, 0xce, 0xe1, 0xfb, 0xf4, 0x37,
-0x24, 0x32, 0x80, 0x68, 0x4b, 0xea, 0x37, 0x23,
-0xfa, 0x43, 0xfb, 0xec, 0xf8, 0xd7, 0x30, 0xc6,
-0x5c, 0x68, 0x18, 0x89, 0x1d, 0x5c, 0xfc, 0xf3,
-0x23, 0x78, 0x94, 0x07, 0x1e, 0xbe, 0x31, 0x6a,
-0x44, 0xcc, 0x45, 0xfb, 0xa4, 0x21, 0x9d, 0x2f,
-0x4a, 0xf9, 0xa0, 0x0d, 0x93, 0x8f, 0xea, 0x23,
-0x6b, 0xaa, 0xb4, 0x2f, 0x30, 0x8e, 0xc4, 0x0c,
-0x59, 0xc7, 0x7e, 0xca, 0x5c, 0x08, 0xf6, 0x7d,
-0x04, 0x1e, 0xff, 0xa2, 0xac, 0xa4, 0x0b, 0xb0,
-0xd5, 0xc1, 0xfc, 0x61, 0xe9, 0x24, 0x79, 0x98,
-0x07, 0xb9, 0x2e, 0x33, 0xfe, 0x8d, 0x82, 0xe1,
-0x49, 0x67, 0x70, 0xbd, 0xce, 0x7a, 0x5b, 0x58,
-0x85, 0x11, 0x73, 0x69, 0x10, 0xac, 0xcd, 0x18,
-0x82, 0xbf, 0x32, 0x33, 0xfa, 0xcb, 0xe0, 0xa2,
-0xff, 0x16, 0x3c, 0xbd, 0x83, 0xa4, 0x33, 0x56,
-0x15, 0x8b, 0x6e, 0x8e, 0xbf, 0xa3, 0x74, 0x98,
-0xcc, 0x09, 0x3c, 0x68, 0x9d, 0xc6, 0x4b, 0x67,
-0x38, 0x7f, 0x2f, 0xb8, 0x85, 0xca, 0x5e, 0xae,
-0x4f, 0xf4, 0x94, 0xcd, 0xaa, 0xed, 0xe2, 0x3f,
-0xec, 0xa1, 0x7e, 0xac, 0x03, 0xfa, 0x99, 0x0e,
-0x4f, 0x65, 0x2c, 0xaf, 0x47, 0x7c, 0x9f, 0x3c,
-0x09, 0xd7, 0x41, 0x42, 0x06, 0x47, 0x75, 0x97,
-0xac, 0x01, 0x1f, 0xb2, 0xc3, 0x55, 0x07, 0xc4,
-0x83, 0x02, 0x4a, 0x16, 0xfe, 0x4a, 0x51, 0x3f,
-0x7a, 0x8c, 0x83, 0x00, 0xa9, 0xaa, 0x0c, 0xe4,
-0xd9, 0x16, 0x1f, 0xe3, 0xa0, 0xf8, 0x4d, 0xd2,
-0xa6, 0xaf, 0xc0, 0xd4, 0xc4, 0xb5, 0x22, 0x25,
-0x2b, 0x8a, 0x4a, 0x43, 0x19, 0xbe, 0x4a, 0x4c,
-0x25, 0xd5, 0x69, 0x20, 0x64, 0xef, 0x5f, 0x4c,
-0xff, 0x0b, 0x90, 0xd4, 0xda, 0x94, 0xb4, 0x8d,
-0x39, 0x5d, 0x95, 0x38, 0x75, 0x6f, 0x03, 0x8a,
-0x2c, 0x40, 0x37, 0xfe, 0x88, 0x0e, 0xb3, 0xda,
-0x0d, 0xdf, 0xe7, 0x08, 0xa9, 0xdb, 0x14, 0x4c,
-0xe1, 0x7a, 0x95, 0xdd, 0x7f, 0xc2, 0x4a, 0x1c,
-0x0d, 0xcf, 0x83, 0x55, 0x36, 0x33, 0xf1, 0x2f,
-0xf0, 0xfd, 0xd0, 0x2d, 0x3c, 0x81, 0xa4, 0x79,
-0xc4, 0xd7, 0x8c, 0xc7, 0xbc, 0x96, 0x7f, 0x98,
-0xba, 0x62, 0xd4, 0x9b, 0xd7, 0x77, 0xf1, 0xa3,
-0x7b, 0xc5, 0xa2, 0xe6, 0xe0, 0xfa, 0x5f, 0x4e,
-0xfc, 0xcb, 0xc6, 0x5f, 0xc3, 0xe0, 0x1d, 0xcf,
-0x25, 0xbe, 0x3e, 0x69, 0x06, 0x40, 0xf0, 0x59,
-0xcd, 0xbe, 0x93, 0xd2, 0x07, 0x02, 0x78, 0xf8,
-0x26, 0x2c, 0xdc, 0x25, 0xfd, 0x38, 0x99, 0x73,
-0xcc, 0xbb, 0x03, 0xd0, 0xf1, 0x71, 0x12, 0x4e,
-0xae, 0x73, 0x4a, 0x2f, 0x47, 0x04, 0xc4, 0x68,
-0x35, 0x74, 0x51, 0xba, 0xd1, 0x85, 0xbf, 0xac,
-0x6c, 0xc3, 0x20, 0xbc, 0xfd, 0xfc, 0x66, 0x01,
-0x07, 0x62, 0x55, 0xc4, 0x33, 0x02, 0xcf, 0xd7,
-0x6b, 0xc6, 0x67, 0xe1, 0x82, 0xf0, 0xc0, 0xbe,
-0x46, 0xa7, 0x27, 0x8b, 0xad, 0x2e, 0x84, 0x66,
-0x6f, 0x93, 0x27, 0xe2, 0xfe, 0xa4, 0xba, 0x5d,
-0x4c, 0xdb, 0xf8, 0x0b, 0xbc, 0x38, 0x0c, 0x9a,
-0x88, 0xa2, 0xde, 0xbe, 0x85, 0x54, 0xb0, 0x18,
-0xa2, 0x0c, 0xef, 0x23, 0x02, 0x4f, 0xc1, 0x51,
-0xda, 0x36, 0x2f, 0x60, 0x6e, 0x9f, 0x29, 0x1e,
-0x35, 0xda, 0xb4, 0x18, 0xe5, 0x54, 0xb1, 0x8a,
-0x95, 0xa9, 0xbb, 0x15, 0xff, 0x4a, 0x77, 0xeb,
-0x7f, 0x01, 0x94, 0x66, 0x22, 0x05, 0xb0, 0x5e,
-0x4e, 0x6c, 0xb4, 0x4a, 0xc3, 0x75, 0x17, 0x1f,
-0x21, 0xd3, 0x59, 0x26, 0xaa, 0xf2, 0x03, 0x32,
-0xfd, 0x75, 0x97, 0x36, 0x37, 0xee, 0xb0, 0xda,
-0xcf, 0x88, 0x9a, 0x0c, 0xdb, 0xf1, 0xaf, 0x42,
-0x27, 0x05, 0x9d, 0x90, 0xb7, 0x78, 0x6c, 0xeb,
-0x7d, 0x7d, 0x2f, 0xb9, 0x3f, 0xc5, 0x68, 0x06,
-0xb1, 0xcc, 0xca, 0x8b, 0xd9, 0x62, 0x47, 0x50,
-0x9f, 0xc8, 0xf5, 0x1e, 0x4b, 0xd3, 0xb7, 0xda,
-0x01, 0x38, 0xef, 0x94, 0x32, 0xf1, 0x2f, 0xd9,
-0x25, 0x01, 0x30, 0xc5, 0x2c, 0x38, 0x27, 0x5d,
-0x9e, 0x07, 0x2d, 0x83, 0xac, 0xe5, 0x80, 0xc0,
-0xbb, 0xe4, 0x0b, 0x7c, 0x4d, 0x9d, 0x65, 0x3a,
-0x49, 0x2f, 0xd1, 0xf2, 0xa4, 0xaf, 0x3b, 0x93,
-0x7f, 0x98, 0x14, 0x46, 0xf4, 0xb0, 0x8e, 0x6c,
-0xd8, 0x8c, 0x2a, 0xd6, 0xcb, 0x0e, 0xaf, 0x84,
-0x48, 0x2b, 0xdc, 0x3f, 0x5e, 0x01, 0x49, 0x1b,
-0xe0, 0x8b, 0x79, 0xc9, 0x0f, 0x48, 0x78, 0xfd,
-0x9f, 0xa5, 0xbe, 0x74, 0xa6, 0xe4, 0x5b, 0x02,
-0x13, 0x0b, 0x7b, 0x43, 0x3b, 0xe8, 0x8f, 0x34,
-0xaf, 0xdb, 0x96, 0x89, 0x7f, 0x79, 0x19, 0x2f,
-0xa8, 0x82, 0x69, 0xbd, 0x6b, 0xee, 0xf4, 0xf7,
-0xe6, 0x5b, 0xf9, 0xe1, 0x3b, 0x4b, 0x87, 0xc5,
-0x7d, 0x85, 0x07, 0xc8, 0x77, 0x4c, 0x05, 0xbf,
-0xc6, 0xaf, 0x5e, 0x9a, 0x8e, 0x9a, 0xec, 0x0e,
-0x99, 0xe4, 0x20, 0x39, 0x19, 0x2b, 0xf0, 0xab,
-0x4f, 0x64, 0xf2, 0x0f, 0x8d, 0xb2, 0x54, 0xb3,
-0x4e, 0xf2, 0xe8, 0xd5, 0xa6, 0xbc, 0x7e, 0x9e,
-0x6e, 0x44, 0x43, 0x57, 0xc3, 0x7a, 0x09, 0x55,
-0x7d, 0x9e, 0x50, 0x11, 0x7f, 0x0a, 0xf2, 0x42,
-0xfe, 0x85, 0xf2, 0x8e, 0x79, 0x15, 0x82, 0x3b,
-0x45, 0xad, 0x8f, 0x6c, 0x30, 0x82, 0xdd, 0x6a,
-0xa9, 0x98, 0x89, 0x7f, 0xe9, 0xbb, 0xb6, 0x94,
-0x63, 0xcc, 0x65, 0x3f, 0x6c, 0x9a, 0x65, 0xe9,
-0x6b, 0x00, 0x0e, 0x68, 0xbb, 0xe8, 0x8d, 0xdb,
-0x95, 0xd9, 0x61, 0x56, 0xed, 0x35, 0xa8, 0xdc,
-0x92, 0xfb, 0x2a, 0xdd, 0xd5, 0xf1, 0x8d, 0xe4,
-0x9a, 0x95, 0x56, 0xec, 0x06, 0x0b, 0x94, 0xc8,
-0x77, 0x69, 0xe5, 0x36, 0x75, 0x65, 0xbc, 0xd4,
-0xc6, 0x5f, 0x04, 0x9e, 0xd3, 0x10, 0xc9, 0x27,
-0x70, 0x4b, 0xbc, 0x44, 0x42, 0x43, 0x5e, 0xf8,
-0x47, 0xe9, 0x87, 0xc9, 0xaa, 0xd3, 0xb7, 0x87,
-0xbe, 0x86, 0x2f, 0xcf, 0x2a, 0x33, 0xbf, 0x56,
-0x5a, 0x08, 0x6f, 0xad, 0x99, 0x41, 0x35, 0x24,
-0xc0, 0xde, 0xc4, 0xf9, 0xe7, 0xfb, 0xc9, 0xcb,
-0x7a, 0xdd, 0x9d, 0x3e, 0x41, 0x1d, 0xc7, 0x3f,
-0x0f, 0x30, 0xf9, 0x23, 0x7a, 0x80, 0x73, 0xcb,
-0xf3, 0x20, 0x57, 0xf1, 0xc5, 0xd8, 0x95, 0xc6,
-0x7a, 0x53, 0xfd, 0xfd, 0xa2, 0xcd, 0x89, 0xd7,
-0x8c, 0x39, 0xd4, 0xa6, 0xbe, 0xc1, 0xc1, 0x23,
-0xf8, 0x54, 0xe6, 0xb8, 0xf9, 0xe7, 0xed, 0xfb,
-0x47, 0x5d, 0x0a, 0xeb, 0x35, 0x0b, 0xd5, 0xb1,
-0x71, 0x8f, 0x9b, 0x45, 0xf3, 0x0f, 0x48, 0xc1,
-0xed, 0x47, 0xb4, 0xf0, 0xb9, 0x60, 0xf7, 0xa4,
-0xe0, 0x9b, 0x47, 0x96, 0x22, 0xda, 0x2a, 0xe6,
-0xb4, 0x2d, 0x0c, 0xd1, 0x1f, 0xa1, 0xdd, 0xb1,
-0x0c, 0xff, 0x3c, 0xe2, 0xaf, 0x55, 0x36, 0xdd,
-0xd3, 0x83, 0xa4, 0xcc, 0xe6, 0xd6, 0xa8, 0xe9,
-0x55, 0xee, 0x6e, 0xbc, 0xab, 0x5d, 0x22, 0x37,
-0xf5, 0xe5, 0x7f, 0xd0, 0x30, 0x99, 0xac, 0x5a,
-0xc6, 0x76, 0x73, 0x4e, 0x3b, 0xcf, 0x8c, 0x1f,
-0x13, 0xbd, 0x15, 0x06, 0xbf, 0x6c, 0xe3, 0xaf,
-0x0d, 0xa4, 0x1d, 0x41, 0x56, 0x54, 0x2c, 0x22,
-0x0f, 0xd0, 0xa9, 0xaf, 0xe7, 0xd9, 0x1a, 0x6a,
-0x79, 0xb5, 0x00, 0xb2, 0x26, 0x61, 0xc1, 0xdd,
-0xb7, 0xc4, 0x82, 0x4d, 0x8f, 0x61, 0xb6, 0xa1,
-0xdd, 0xc5, 0xe6, 0x39, 0x4e, 0x59, 0xe6, 0xe7,
-0x70, 0x06, 0x7f, 0xb5, 0xd9, 0xb4, 0x51, 0x71,
-0x52, 0x91, 0xce, 0x9b, 0x0d, 0x40, 0x6c, 0x2f,
-0x21, 0x23, 0x0a, 0xb2, 0xcd, 0x63, 0x54, 0x3a,
-0x8f, 0x9f, 0x50, 0x25, 0xa9, 0x45, 0xc9, 0xc2,
-0x5e, 0x95, 0x2f, 0xd2, 0xa4, 0xa2, 0x2b, 0x4a,
-0xb5, 0x1b, 0x7f, 0x1d, 0x24, 0x75, 0x1c, 0x52,
-0x1d, 0x26, 0xb3, 0xe8, 0xe7, 0xb7, 0x4f, 0x1a,
-0x21, 0xe7, 0xc9, 0x97, 0x52, 0x95, 0xd0, 0x22,
-0xae, 0x41, 0x85, 0xbb, 0x64, 0x71, 0x80, 0xfc,
-0x14, 0xa1, 0x19, 0x4f, 0x4d, 0xe4, 0xd0, 0x8c,
-0x1c, 0x6b, 0xa8, 0xe9, 0x71, 0xf3, 0xcf, 0x9f,
-0xe5, 0x27, 0x4b, 0x66, 0x31, 0xde, 0xc8, 0xb5,
-0x64, 0x4a, 0x2b, 0x13, 0x18, 0xaa, 0x93, 0xdd,
-0x44, 0x88, 0xa7, 0x39, 0xfe, 0x72, 0xd5, 0x25,
-0x99, 0x3c, 0x6b, 0x31, 0xab, 0xfe, 0x0b, 0x96,
-0x09, 0x63, 0x25, 0xcb, 0xc8, 0x68, 0x32, 0x6c,
-0x5c, 0x9f, 0x28, 0x46, 0xd9, 0xaf, 0xb0, 0x51,
-0x90, 0x90, 0xfa, 0xe4, 0x5e, 0x44, 0x5b, 0x9a,
-0x94, 0xdb, 0xc1, 0x65, 0x6a, 0x05, 0x57, 0xc1,
-0xcb, 0xa1, 0xc2, 0x88, 0xb1, 0x6e, 0x7d, 0x06,
-0x7f, 0x35, 0xc9, 0xab, 0x89, 0x7f, 0x49, 0x07,
-0x62, 0xa2, 0xae, 0x0e, 0xff, 0x3c, 0x17, 0xb6,
-0xf2, 0x0f, 0x92, 0xb7, 0xb8, 0x4a, 0xf2, 0x36,
-0xf2, 0x04, 0xfd, 0xe9, 0x18, 0x8d, 0xb0, 0xd5,
-0x1d, 0x55, 0xcd, 0x9d, 0x3f, 0x72, 0xe1, 0x2f,
-0xfd, 0x87, 0xf4, 0x86, 0xe8, 0x6d, 0xcd, 0xe2,
-0xbd, 0xe4, 0x59, 0xd8, 0x92, 0xac, 0xc1, 0x4b,
-0x79, 0x41, 0x10, 0x57, 0x6d, 0x5e, 0x5a, 0xa1,
-0xaf, 0xd6, 0x6d, 0xd8, 0x95, 0x53, 0x35, 0xaf,
-0x33, 0x71, 0xc7, 0x60, 0xc9, 0x6a, 0xb9, 0xaa,
-0x05, 0x1e, 0x58, 0x07, 0x7f, 0xcd, 0x4c, 0x3e,
-0x14, 0x28, 0xbf, 0x3d, 0xfa, 0xa5, 0x35, 0x25,
-0xe9, 0x67, 0x6f, 0xd1, 0xbf, 0x60, 0x91, 0x6c,
-0xc4, 0x96, 0x77, 0x14, 0xc5, 0xfb, 0x86, 0xba,
-0x6a, 0x03, 0x5f, 0xe8, 0x2c, 0x8e, 0xb7, 0x27,
-0xb7, 0x04, 0x02, 0x36, 0xff, 0x46, 0xd0, 0x90,
-0xc0, 0x48, 0x58, 0x8c, 0x88, 0x19, 0xfc, 0x45,
-0x4f, 0xea, 0xb3, 0x94, 0xfc, 0x07, 0x1b, 0xe7,
-0xd1, 0x73, 0xb1, 0x50, 0xa9, 0xca, 0x80, 0x98,
-0x11, 0x2e, 0xa9, 0x8a, 0x4b, 0xbd, 0xad, 0xfd,
-0xb1, 0x70, 0xa9, 0xef, 0x41, 0x49, 0x6f, 0xed,
-0xd7, 0x1d, 0xd9, 0xdc, 0x08, 0x99, 0xc4, 0xea,
-0xbf, 0xf8, 0x84, 0x3b, 0xf8, 0xab, 0x4f, 0x63,
-0x7c, 0xe6, 0x1b, 0xa4, 0x41, 0x3a, 0xca, 0xf4,
-0x97, 0xb1, 0x48, 0x59, 0x87, 0x07, 0x0d, 0x26,
-0x93, 0xbe, 0xa5, 0xa3, 0xc2, 0xaf, 0x88, 0x5c,
-0x94, 0xf5, 0x26, 0x77, 0xe3, 0x75, 0x56, 0xa0,
-0x74, 0xb1, 0xc9, 0xce, 0x3f, 0xcc, 0xc4, 0xbf,
-0x9e, 0x27, 0xc5, 0x80, 0xa4, 0xca, 0x2b, 0x84,
-0x17, 0x79, 0xcd, 0x11, 0x12, 0xfd, 0xdd, 0xcc,
-0x74, 0x81, 0x01, 0x88, 0xb1, 0xa2, 0xe9, 0x73,
-0xca, 0x1b, 0x19, 0x98, 0x6c, 0xad, 0xd7, 0x8b,
-0x9c, 0x7f, 0xde, 0x15, 0xff, 0xea, 0xb0, 0xb5,
-0xbd, 0xb6, 0xdb, 0x42, 0xcc, 0x58, 0x11, 0x66,
-0xd1, 0x1e, 0xea, 0x0c, 0x7f, 0x89, 0xdb, 0xad,
-0xd4, 0x44, 0x25, 0x65, 0x13, 0x71, 0xc0, 0x5f,
-0xd1, 0x8e, 0xac, 0xf8, 0x57, 0xab, 0xa0, 0x1b,
-0xcb, 0xb5, 0x6b, 0x65, 0x59, 0x10, 0x2a, 0x60,
-0x32, 0xfd, 0xed, 0xac, 0xc8, 0x6b, 0x9e, 0x56,
-0x84, 0xa1, 0xb1, 0x0a, 0x8e, 0xbf, 0xb6, 0x08,
-0xc8, 0x76, 0x58, 0xd4, 0x97, 0xd1, 0xff, 0x6a,
-0xa5, 0xba, 0xa1, 0x94, 0x7a, 0x44, 0x07, 0x7f,
-0xe1, 0xfd, 0x03, 0x48, 0xaa, 0x41, 0x26, 0x4f,
-0x20, 0xa6, 0x5e, 0x3f, 0x6d, 0xd0, 0x70, 0x55,
-0x02, 0x62, 0x97, 0x7f, 0x30, 0xf7, 0x89, 0x4c,
-0xfd, 0x97, 0x7d, 0xff, 0xc8, 0xfe, 0x58, 0x36,
-0xff, 0xfc, 0x21, 0xbb, 0xc8, 0x6b, 0x35, 0x9f,
-0x9f, 0xc7, 0x19, 0x5d, 0x3c, 0xce, 0x8f, 0xf2,
-0x4d, 0x68, 0x09, 0x62, 0xf5, 0xe2, 0x69, 0x18,
-0xa3, 0x26, 0x26, 0x39, 0x35, 0x62, 0x18, 0x87,
-0xed, 0x8e, 0x79, 0x5d, 0xf9, 0x87, 0xed, 0xe2,
-0x59, 0x65, 0xdf, 0x3c, 0xb8, 0xf9, 0xd9, 0x98,
-0x65, 0xd7, 0x27, 0x26, 0xbd, 0x89, 0x65, 0x44,
-0x4d, 0x59, 0xb3, 0xaa, 0x73, 0xc9, 0x3c, 0xd6,
-0xc2, 0xd6, 0xeb, 0x79, 0x72, 0xd6, 0x88, 0x60,
-0xa6, 0xee, 0x61, 0x07, 0x7f, 0x69, 0x27, 0xb5,
-0x59, 0x64, 0x1d, 0x40, 0x2a, 0xad, 0x9f, 0x41,
-0x72, 0x96, 0x64, 0x58, 0xc7, 0xeb, 0x07, 0xfb,
-0xb5, 0x59, 0xbc, 0xf2, 0xae, 0x9f, 0x14, 0x69,
-0x6e, 0xfc, 0x05, 0x2d, 0xb4, 0x0e, 0xf5, 0x97,
-0x1d, 0xfc, 0x55, 0x4b, 0x1e, 0x6e, 0x62, 0x21,
-0xad, 0x00, 0xb8, 0x97, 0x2e, 0x6e, 0x8d, 0x7c,
-0x68, 0x11, 0xb0, 0xc5, 0xc3, 0xa2, 0x5d, 0xfd,
-0x7e, 0x5a, 0x60, 0xe1, 0xaf, 0x56, 0x0b, 0x91,
-0x55, 0xf7, 0x28, 0x67, 0xdc, 0xf8, 0x6b, 0x3d,
-0x65, 0x25, 0x0c, 0x5e, 0xb1, 0x93, 0x85, 0xbd,
-0xf8, 0x26, 0xa5, 0x30, 0xb6, 0xde, 0x27, 0x85,
-0x69, 0xe6, 0x6a, 0x3c, 0xf8, 0x7d, 0xc4, 0x48,
-0x3b, 0x69, 0x87, 0xcc, 0x10, 0x29, 0x0d, 0x2a,
-0x01, 0x25, 0x83, 0xbf, 0xea, 0xf4, 0x87, 0xd0,
-0xc3, 0xff, 0x47, 0xd4, 0x07, 0x31, 0xca, 0x86,
-0x6c, 0x7e, 0x09, 0x92, 0xc7, 0xe4, 0x14, 0xc9,
-0x92, 0x7e, 0x4f, 0x0b, 0x39, 0x49, 0xbe, 0x27,
-0xda, 0x74, 0x10, 0xc9, 0x32, 0x53, 0x62, 0x49,
-0x74, 0x4a, 0x90, 0x28, 0x46, 0xa6, 0xfe, 0xeb,
-0x5a, 0xf2, 0xef, 0x58, 0xdb, 0x35, 0xd2, 0xe6,
-0xd3, 0xdb, 0x90, 0xef, 0x1d, 0x40, 0x96, 0xf7,
-0x0f, 0xf1, 0xef, 0xc4, 0x7c, 0xb3, 0xa5, 0x48,
-0xc7, 0xcf, 0x5b, 0x6f, 0x3a, 0x93, 0xff, 0x9d,
-0xc2, 0x97, 0xc5, 0x5f, 0x39, 0xd4, 0xf4, 0xdd,
-0x33, 0x38, 0x22, 0xeb, 0x43, 0x46, 0xc4, 0x68,
-0x06, 0x7f, 0xad, 0x25, 0x0c, 0x64, 0xa1, 0x3c,
-0xcd, 0x79, 0x57, 0xd8, 0x0b, 0x3c, 0x7c, 0xf5,
-0xdd, 0xe4, 0x05, 0x79, 0xca, 0x89, 0xfc, 0xd4,
-0xd7, 0x4c, 0xed, 0x1d, 0x3b, 0x10, 0x76, 0xa1,
-0x65, 0xbf, 0x69, 0x13, 0x76, 0x19, 0x30, 0xe1,
-0x2e, 0xfe, 0x8d, 0xd1, 0xc4, 0x67, 0x62, 0xde,
-0x5b, 0xa4, 0x9f, 0x91, 0xe3, 0x34, 0xfc, 0x26,
-0x80, 0xac, 0x57, 0xc9, 0xf1, 0xfe, 0x9b, 0xf5,
-0xea, 0x11, 0xe9, 0xbd, 0x65, 0xc7, 0xe3, 0x37,
-0x63, 0x92, 0x61, 0xed, 0xe4, 0x23, 0xf1, 0x70,
-0x7a, 0x2d, 0xf7, 0x0f, 0xc3, 0xbc, 0xfe, 0xeb,
-0x18, 0xad, 0xd1, 0x7d, 0x43, 0x19, 0xfe, 0xf9,
-0x8d, 0xb1, 0xa7, 0xdf, 0xc6, 0xec, 0x88, 0xa2,
-0x08, 0x59, 0x47, 0x6e, 0x4c, 0x33, 0xde, 0x8c,
-0x55, 0x82, 0x50, 0xe4, 0x41, 0x5a, 0xc8, 0xc7,
-0x78, 0x6a, 0x62, 0x29, 0x7d, 0x90, 0x96, 0x9d,
-0x61, 0x5d, 0x7b, 0xb5, 0x32, 0x5e, 0xff, 0xf5,
-0x13, 0xad, 0x4c, 0xcc, 0xc4, 0xbf, 0x4a, 0xc9,
-0x26, 0xf2, 0x74, 0xa8, 0x12, 0xe9, 0x9a, 0x37,
-0xd3, 0x07, 0xc8, 0xd4, 0x83, 0x00, 0x66, 0x2f,
-0xc6, 0x1e, 0xd7, 0x2a, 0x9a, 0xd8, 0xe0, 0x36,
-0x8d, 0x5d, 0xc7, 0x90, 0x57, 0x91, 0x27, 0xfb,
-0xad, 0x25, 0x98, 0xca, 0x62, 0x64, 0x0d, 0xad,
-0x18, 0x2d, 0x25, 0x19, 0xfe, 0x0d, 0xa6, 0x0a,
-0x71, 0x42, 0xa9, 0x69, 0xf0, 0x19, 0x74, 0xc0,
-0xaa, 0x4d, 0xee, 0x24, 0x15, 0x86, 0xc7, 0x2a,
-0x04, 0xc3, 0x3b, 0xc1, 0xc4, 0xe8, 0x49, 0x9f,
-0x27, 0xab, 0x46, 0x0c, 0xf6, 0xaf, 0x24, 0xe6,
-0xcf, 0xdb, 0xfc, 0x1b, 0x3f, 0x23, 0xe7, 0x69,
-0xc4, 0x0c, 0x9e, 0x13, 0x9f, 0x25, 0x47, 0x8c,
-0x9b, 0xd3, 0xf9, 0x3d, 0xd2, 0xfb, 0x80, 0x30,
-0x66, 0xa5, 0x90, 0xc5, 0x9a, 0x2c, 0x20, 0x48,
-0x24, 0x2e, 0x2d, 0xd7, 0x8e, 0x90, 0xd9, 0x03,
-0xec, 0x0c, 0xff, 0x0a, 0xf3, 0x21, 0xa5, 0xf7,
-0xc4, 0x43, 0xb4, 0xbb, 0xc5, 0xb7, 0x49, 0x75,
-0xf2, 0x0f, 0x8f, 0xea, 0x1f, 0x46, 0xeb, 0x0e,
-0xfa, 0x58, 0x39, 0x89, 0x5e, 0x6b, 0x16, 0x74,
-0xb1, 0xf5, 0x5a, 0x59, 0xca, 0xab, 0xf3, 0x8c,
-0x3d, 0xbd, 0x98, 0xd9, 0xe8, 0x01, 0x4f, 0xaf,
-0x7f, 0x11, 0x5b, 0x2f, 0xb9, 0x16, 0x5a, 0x1a,
-0x8f, 0x1a, 0xf8, 0xaf, 0xc3, 0x86, 0xe8, 0xe2,
-0xdf, 0x38, 0x06, 0xff, 0xe8, 0x94, 0x61, 0xe9,
-0x2e, 0xf2, 0x0b, 0x3c, 0xcb, 0x1d, 0x2e, 0xde,
-0xa7, 0x1f, 0x17, 0x76, 0x80, 0x61, 0x9c, 0x51,
-0x3e, 0xd2, 0x0b, 0xd1, 0x63, 0x9c, 0x8d, 0xe8,
-0x98, 0x73, 0x74, 0x7c, 0x87, 0x41, 0x33, 0x80,
-0xe4, 0x47, 0x8d, 0xb9, 0xc4, 0x7b, 0xc8, 0xa5,
-0xbf, 0xac, 0x77, 0xf6, 0xfa, 0x07, 0x59, 0x2c,
-0x69, 0x0d, 0x2f, 0xe7, 0xc7, 0x20, 0x97, 0x1f,
-0xd1, 0xd6, 0x0a, 0xf2, 0x6b, 0x00, 0x50, 0x05,
-0x29, 0xcf, 0x74, 0x6d, 0x07, 0xf8, 0x90, 0xf9,
-0x59, 0xdc, 0x86, 0x27, 0x0f, 0x56, 0x9d, 0x83,
-0xe7, 0x42, 0xcf, 0xe4, 0x1f, 0x76, 0x32, 0x3f,
-0x13, 0xfe, 0xea, 0x49, 0x47, 0xed, 0x4b, 0x04,
-0x9f, 0x9f, 0xb3, 0x6d, 0x7c, 0xdd, 0xec, 0x08,
-0xf9, 0xa7, 0xdb, 0xdc, 0xf2, 0x58, 0xba, 0xb2,
-0xd4, 0xec, 0x4c, 0x15, 0x9d, 0x81, 0xad, 0xad,
-0x4a, 0x53, 0x5c, 0xfa, 0xcb, 0xb2, 0xd8, 0x16,
-0x4b, 0x9a, 0x81, 0x6e, 0xd1, 0x1b, 0x07, 0xa7,
-0xe2, 0x24, 0x73, 0xec, 0xdb, 0x0c, 0x05, 0xd5,
-0xcc, 0x17, 0xd2, 0x56, 0x23, 0x60, 0x7a, 0x42,
-0x77, 0x78, 0x48, 0xb7, 0xbe, 0xf5, 0x24, 0xf7,
-0x37, 0xe6, 0xf1, 0xfc, 0x43, 0x71, 0x03, 0xf2,
-0x6f, 0xcc, 0x76, 0xf1, 0x6f, 0x28, 0x47, 0x8c,
-0x30, 0xdc, 0x3f, 0x37, 0x7c, 0x1b, 0xfc, 0xf9,
-0x1a, 0x40, 0xc7, 0xc5, 0x41, 0x71, 0x95, 0xc1,
-0xb0, 0xf0, 0x45, 0xd2, 0xd3, 0x70, 0x8b, 0xd9,
-0x34, 0x5c, 0x1e, 0x54, 0x46, 0xc5, 0xf0, 0x80,
-0xc2, 0xd6, 0xcb, 0x08, 0x1f, 0xb6, 0xe2, 0x5f,
-0x11, 0x14, 0xdb, 0x75, 0xf2, 0x0f, 0xcf, 0x21,
-0xf7, 0xb5, 0xe9, 0x3b, 0x57, 0x76, 0x09, 0x5d,
-0xbe, 0x97, 0x2c, 0x32, 0xff, 0x9b, 0x0d, 0x98,
-0xcc, 0x4b, 0x04, 0x70, 0x3f, 0xe0, 0xdc, 0xb6,
-0x8b, 0xf2, 0x47, 0xc6, 0xdc, 0x01, 0x9f, 0xcd,
-0xf3, 0xbf, 0x08, 0x6b, 0x8e, 0x18, 0x6a, 0x33,
-0x8b, 0x5d, 0xf1, 0xaf, 0xdf, 0xf3, 0xfa, 0xaf,
-0xcb, 0xa8, 0xad, 0x8c, 0xa1, 0xb1, 0x61, 0x2e,
-0xb2, 0x8c, 0x59, 0x8b, 0xfd, 0xa4, 0x3e, 0xe6,
-0x1b, 0x91, 0xee, 0x67, 0xb0, 0xcb, 0x6b, 0x4a,
-0xb3, 0x78, 0xd7, 0x90, 0x74, 0xd1, 0xce, 0x01,
-0x1e, 0x76, 0xf1, 0x6f, 0x10, 0x3f, 0xf2, 0x6f,
-0x9c, 0x21, 0x9d, 0xed, 0x58, 0x3d, 0x64, 0xd7,
-0x7f, 0x6d, 0x17, 0xdf, 0x2b, 0x59, 0xd3, 0x1e,
-0xe4, 0xec, 0x16, 0x7b, 0x69, 0xd0, 0x0c, 0x6c,
-0xf2, 0x04, 0x79, 0x17, 0x2d, 0x7a, 0xd3, 0x62,
-0xad, 0x97, 0x2c, 0xfd, 0x65, 0xc6, 0x7f, 0x48,
-0xf5, 0x98, 0xe2, 0xaa, 0x75, 0xe5, 0x6c, 0x87,
-0x80, 0xad, 0xfa, 0xe0, 0x71, 0xc0, 0x78, 0x8a,
-0xe5, 0xc6, 0x2b, 0xba, 0x47, 0xe6, 0x95, 0x92,
-0xae, 0xc4, 0xec, 0xd7, 0xb3, 0xf8, 0x0f, 0x75,
-0xbb, 0xec, 0x0b, 0xfe, 0x89, 0xf8, 0xdb, 0x1c,
-0xb6, 0x6f, 0x17, 0xdf, 0xd4, 0xd7, 0xd0, 0x2a,
-0x03, 0x95, 0x08, 0x90, 0xad, 0xc5, 0x64, 0xf5,
-0x4d, 0xac, 0x7e, 0x70, 0xad, 0xff, 0x75, 0x1b,
-0x68, 0xa4, 0x9c, 0xfa, 0x2f, 0xf9, 0x02, 0xdd,
-0x9a, 0xf6, 0xa6, 0x18, 0x28, 0x8e, 0xc0, 0x23,
-0x23, 0xbd, 0x4e, 0x8e, 0x60, 0x38, 0x78, 0xb3,
-0xf4, 0x3e, 0xe9, 0x5f, 0x1d, 0x59, 0xe2, 0xc0,
-0x2e, 0xef, 0x5a, 0xd8, 0xe3, 0x98, 0xc4, 0x61,
-0x52, 0x7a, 0x8f, 0xd7, 0x64, 0xa5, 0xc4, 0xac,
-0xf8, 0xd7, 0x5c, 0x07, 0x5b, 0x21, 0x26, 0x3a,
-0xc5, 0xf5, 0x02, 0x92, 0xe0, 0xfc, 0x9f, 0x27,
-0xf5, 0xcb, 0x32, 0xb0, 0xab, 0x59, 0xfa, 0x28,
-0xfe, 0x3e, 0xaf, 0x08, 0x4b, 0xdb, 0x40, 0x2c,
-0xa3, 0xff, 0x85, 0x48, 0xbc, 0x8f, 0x3d, 0x95,
-0xf0, 0x7d, 0x5e, 0x82, 0x17, 0x6c, 0x80, 0x9f,
-0x93, 0xec, 0x54, 0xfd, 0xe4, 0xb0, 0x11, 0x5e,
-0x88, 0xd4, 0x1c, 0x32, 0x3e, 0xa7, 0x6b, 0xb7,
-0xc2, 0x86, 0xc8, 0xba, 0xb6, 0x4a, 0x4f, 0x89,
-0x16, 0xb1, 0x83, 0x3b, 0xfe, 0xa5, 0xb3, 0xa7,
-0xe0, 0x7d, 0x9c, 0x96, 0xa3, 0x60, 0x04, 0xec,
-0xdf, 0x8e, 0x02, 0x43, 0xb0, 0x94, 0xcf, 0x5a,
-0xb0, 0x34, 0xf0, 0x20, 0xa7, 0x53, 0x33, 0x61,
-0xff, 0x2a, 0x33, 0xac, 0x23, 0x8b, 0x0f, 0x32,
-0xfc, 0x1b, 0x7b, 0xb0, 0x72, 0x21, 0x24, 0x9e,
-0xa1, 0x6d, 0xdc, 0x97, 0x10, 0xf8, 0x5a, 0x10,
-0x46, 0xf3, 0xa5, 0x0f, 0xd8, 0xd4, 0x1c, 0x03,
-0x9e, 0xd9, 0xe2, 0x1b, 0xbc, 0xab, 0x42, 0xa4,
-0xf6, 0xd1, 0xa2, 0xa5, 0xbf, 0x8c, 0xfc, 0x1b,
-0x07, 0x06, 0xca, 0x42, 0x2c, 0xd5, 0x6d, 0x15,
-0xad, 0x8c, 0x01, 0x40, 0xb8, 0x9a, 0x17, 0x1f,
-0xa1, 0xd1, 0x9e, 0x2c, 0x4b, 0xa3, 0x22, 0x33,
-0x63, 0xe1, 0xf3, 0x2c, 0x66, 0xda, 0xc1, 0xd0,
-0xb5, 0x5c, 0x2c, 0xb2, 0x13, 0x11, 0xfb, 0x89,
-0xbb, 0xfe, 0xcb, 0x60, 0x31, 0xfa, 0xe7, 0x48,
-0x5d, 0xb3, 0x4f, 0x53, 0x05, 0x5e, 0xff, 0x25,
-0xa3, 0xfe, 0x72, 0x32, 0x65, 0x14, 0xd4, 0xb6,
-0xb1, 0x8a, 0xb0, 0xa1, 0x02, 0x1d, 0x1c, 0x8f,
-0x0f, 0xc9, 0x64, 0xcc, 0xf8, 0xa5, 0x98, 0x88,
-0x88, 0x40, 0xec, 0xe5, 0xac, 0xfa, 0x2f, 0x62,
-0x2f, 0x0a, 0x3f, 0x57, 0x67, 0x6b, 0x81, 0xb4,
-0x87, 0xe8, 0x04, 0xae, 0xb3, 0xd9, 0x0e, 0xf3,
-0x4d, 0x27, 0x5f, 0x54, 0x1a, 0x6e, 0xb6, 0x8c,
-0xec, 0xf8, 0x97, 0x11, 0x74, 0xb6, 0xbf, 0x04,
-0x0f, 0x7b, 0x39, 0x3c, 0x54, 0x86, 0xc5, 0xe8,
-0x12, 0x81, 0x7b, 0x4c, 0xad, 0xe0, 0xf8, 0x3d,
-0xc9, 0x23, 0x62, 0xec, 0x1c, 0x32, 0xc3, 0xbf,
-0x71, 0x80, 0x58, 0x9c, 0xba, 0x56, 0xed, 0xc0,
-0xb0, 0x5d, 0x56, 0x30, 0x40, 0x76, 0x92, 0x6a,
-0x23, 0xd0, 0xc2, 0x53, 0x32, 0x4c, 0xa5, 0xd9,
-0xce, 0x84, 0x8f, 0xc1, 0xed, 0x87, 0x63, 0x0a,
-0x00, 0x7f, 0xe5, 0x5a, 0xef, 0x79, 0x84, 0xae,
-0xc9, 0x98, 0x9b, 0xe7, 0xe4, 0x65, 0xce, 0xbf,
-0x11, 0x65, 0x01, 0x47, 0x64, 0x95, 0x2c, 0x42,
-0xc0, 0x5b, 0x99, 0x56, 0x02, 0xf6, 0x12, 0x2c,
-0x17, 0x0f, 0x12, 0x67, 0x9e, 0x1d, 0xfc, 0xb5,
-0xe3, 0xa4, 0x95, 0x8f, 0xcd, 0x0a, 0xd8, 0xe7,
-0x6e, 0xe8, 0xa5, 0x6d, 0xa8, 0x64, 0x4a, 0xe2,
-0x4c, 0x1e, 0x3d, 0xa6, 0xd8, 0xc7, 0x50, 0x0a,
-0x11, 0x73, 0xad, 0xca, 0xcd, 0x78, 0x2f, 0x7b,
-0x96, 0xe1, 0x96, 0x70, 0xe9, 0x2f, 0x5f, 0xa6,
-0x35, 0x09, 0xaf, 0x25, 0xa9, 0xfc, 0x14, 0xdc,
-0xf3, 0xa3, 0x9c, 0xed, 0x70, 0x10, 0xee, 0xf9,
-0xcb, 0x24, 0xd2, 0x11, 0x48, 0x4a, 0x5c, 0xa3,
-0xd9, 0x9b, 0x96, 0xa6, 0x53, 0x56, 0x11, 0xf6,
-0xf7, 0xd2, 0x88, 0x43, 0xc4, 0xe1, 0xaa, 0xff,
-0x92, 0x23, 0xa5, 0x0c, 0x64, 0xf1, 0x42, 0x30,
-0x6e, 0xa0, 0xa7, 0xf7, 0x3a, 0xb1, 0x75, 0xbb,
-0xc8, 0x48, 0x56, 0xfc, 0x8b, 0x95, 0x86, 0x71,
-0x5c, 0x90, 0x55, 0xff, 0x55, 0x17, 0xb3, 0x29,
-0x0d, 0xd1, 0xe8, 0x33, 0x58, 0xbd, 0x8c, 0x26,
-0x4d, 0x12, 0x0f, 0xa1, 0xa8, 0xfa, 0x7a, 0x9e,
-0x9a, 0x18, 0x93, 0x36, 0xab, 0x4e, 0x3d, 0x51,
-0x93, 0xcd, 0x48, 0x9f, 0xad, 0xbf, 0xfc, 0x37,
-0xe8, 0x2d, 0x63, 0xb8, 0x0a, 0x83, 0x53, 0x6f,
-0xd8, 0xc9, 0x81, 0xd3, 0x18, 0xed, 0xbc, 0x82,
-0xe5, 0x36, 0xc8, 0xd1, 0xa1, 0x6e, 0xf6, 0x5b,
-0xa1, 0xb1, 0x0d, 0x19, 0x46, 0xc4, 0xf1, 0xfc,
-0x1b, 0x6f, 0xa2, 0x11, 0x55, 0x5c, 0xc9, 0x8a,
-0xe8, 0x51, 0x07, 0x9b, 0x3d, 0x1a, 0x4f, 0x71,
-0x6c, 0x52, 0x77, 0xc2, 0x95, 0xad, 0xeb, 0xfc,
-0xb5, 0x3d, 0xc6, 0xa5, 0xbf, 0xbc, 0x43, 0xe3,
-0x74, 0x7c, 0x06, 0xf8, 0xfc, 0xac, 0x10, 0x8c,
-0xb2, 0x1c, 0xaa, 0x22, 0x78, 0x8b, 0x02, 0xc8,
-0xc2, 0x16, 0x16, 0x85, 0x69, 0x82, 0x47, 0xd8,
-0x6b, 0x30, 0x5c, 0x90, 0x60, 0xd4, 0x88, 0x3c,
-0xcf, 0xca, 0xa5, 0xbf, 0x6c, 0x44, 0x90, 0xd2,
-0x90, 0x4d, 0xef, 0xf7, 0x83, 0xf1, 0xb6, 0xb7,
-0x1a, 0x2c, 0x6c, 0xa5, 0x23, 0xed, 0xa1, 0x56,
-0x30, 0x95, 0x45, 0x2b, 0xea, 0xb0, 0xfe, 0xab,
-0xcc, 0xaa, 0x08, 0x93, 0x62, 0xe3, 0xf0, 0x57,
-0x86, 0xd2, 0x10, 0xa3, 0x5d, 0x88, 0xbf, 0x9c,
-0xb2, 0x2f, 0xf6, 0x7c, 0x39, 0x15, 0x46, 0x51,
-0x4e, 0x84, 0xc8, 0x2b, 0xb9, 0xac, 0x31, 0x89,
-0xec, 0xfa, 0x2f, 0x86, 0xd1, 0xce, 0xd9, 0x21,
-0xad, 0x73, 0xf6, 0xa2, 0x60, 0x21, 0x18, 0x23,
-0x39, 0x74, 0xd8, 0x0e, 0x4b, 0xec, 0x8a, 0xb0,
-0x73, 0xf6, 0x7a, 0xbd, 0x90, 0xcd, 0x3f, 0xef,
-0xc4, 0xb6, 0x14, 0x17, 0xff, 0xe1, 0x90, 0x7c,
-0x12, 0x36, 0xf1, 0x40, 0xa6, 0xcb, 0x63, 0xd7,
-0x7f, 0x35, 0x58, 0x35, 0x62, 0x8e, 0xfe, 0xb2,
-0xc5, 0x7f, 0x98, 0x09, 0x7b, 0xb9, 0xd9, 0xe6,
-0x79, 0xd2, 0x9a, 0x02, 0xb0, 0x4b, 0xe8, 0xe2,
-0xaa, 0xd6, 0x32, 0xe7, 0xdf, 0x40, 0xdf, 0xcf,
-0x9a, 0x67, 0x5b, 0x7f, 0xf9, 0xaa, 0x6d, 0xbc,
-0x4e, 0xdc, 0xc2, 0x56, 0x4d, 0x19, 0xfe, 0xc3,
-0x44, 0xfc, 0x4d, 0xf2, 0xa8, 0xc2, 0xee, 0x28,
-0xde, 0xb2, 0x7d, 0xbd, 0xbf, 0xc2, 0x2e, 0x2d,
-0x74, 0xee, 0x0d, 0xb7, 0xfe, 0x32, 0x32, 0x60,
-0xd8, 0x93, 0x19, 0xdc, 0xd8, 0xf6, 0xa6, 0x69,
-0xf1, 0xc9, 0xbc, 0x49, 0x0e, 0x51, 0x27, 0xd4,
-0xcb, 0xd4, 0xc3, 0xa7, 0xf1, 0xf9, 0x61, 0xd2,
-0x60, 0x7c, 0x7e, 0xdc, 0xfc, 0x1b, 0xba, 0x8b,
-0xf6, 0xb0, 0x7a, 0x3d, 0x06, 0xc2, 0x70, 0xcc,
-0x06, 0x78, 0x8b, 0x5a, 0xa1, 0x31, 0x87, 0xa9,
-0x06, 0xd7, 0xf4, 0x7e, 0x96, 0x7f, 0x68, 0xaf,
-0x85, 0xbb, 0xfe, 0xcb, 0xa5, 0xed, 0x35, 0x19,
-0xe3, 0xd4, 0xd4, 0x21, 0xd9, 0x40, 0x92, 0xc3,
-0x02, 0x1e, 0xed, 0x82, 0x31, 0xe4, 0x91, 0x34,
-0xbf, 0xb5, 0xda, 0x33, 0xf8, 0xdd, 0xa5, 0xbf,
-0xbc, 0x5f, 0xa9, 0xde, 0x0a, 0xb0, 0xeb, 0x02,
-0xc2, 0xae, 0x24, 0xec, 0x4d, 0x17, 0x28, 0x86,
-0xbd, 0x3a, 0x2d, 0x20, 0xb6, 0xbd, 0x63, 0x90,
-0x25, 0x22, 0x56, 0x27, 0x95, 0x21, 0x71, 0x04,
-0xde, 0x37, 0x55, 0x54, 0x1d, 0x14, 0x47, 0xec,
-0xd0, 0x98, 0x3b, 0xfe, 0x45, 0x79, 0xbe, 0x8d,
-0xbe, 0x03, 0xfd, 0x04, 0xf4, 0xba, 0xdb, 0xec,
-0x43, 0x42, 0x6c, 0xf1, 0xd4, 0xc5, 0xf1, 0x3d,
-0xf6, 0xf7, 0x69, 0x45, 0x16, 0x5f, 0x10, 0xd9,
-0x2b, 0x6e, 0x56, 0xc6, 0x39, 0xc9, 0xe2, 0xdf,
-0x08, 0xa6, 0xe1, 0xfd, 0xfc, 0xef, 0x8c, 0xd2,
-0x10, 0xde, 0xcf, 0x2f, 0xdb, 0x61, 0xaf, 0x13,
-0x32, 0x7b, 0x2d, 0xaf, 0x60, 0xb2, 0xcb, 0xdf,
-0x38, 0xa8, 0xdc, 0x29, 0xfe, 0x52, 0xfc, 0x5e,
-0x86, 0x7f, 0x83, 0x19, 0x69, 0xa7, 0xfe, 0x8b,
-0x95, 0x74, 0x05, 0x33, 0xfc, 0xf3, 0xd2, 0x07,
-0xa2, 0x15, 0xf6, 0xe2, 0x85, 0x60, 0x9e, 0x11,
-0x15, 0xc7, 0xd4, 0x27, 0xbd, 0xcb, 0xa5, 0x5f,
-0x7b, 0xac, 0xae, 0x5f, 0xdb, 0xa1, 0xb1, 0x31,
-0xfa, 0xcb, 0x2c, 0x32, 0x72, 0xc1, 0xce, 0xb2,
-0xb0, 0x5a, 0x06, 0x35, 0xab, 0x85, 0x8d, 0xa1,
-0xb0, 0x3a, 0xf6, 0xb9, 0x71, 0xe3, 0xc4, 0xf5,
-0x5f, 0xf5, 0x69, 0x9b, 0x1f, 0x1b, 0x8d, 0x0f,
-0x2c, 0xdf, 0x6f, 0xd2, 0x47, 0xbc, 0xc8, 0xeb,
-0xa4, 0x1a, 0x61, 0xfa, 0x5f, 0xde, 0x7e, 0xe9,
-0x23, 0xee, 0x1f, 0x66, 0x0e, 0xea, 0x25, 0x33,
-0x53, 0xff, 0x05, 0x93, 0x80, 0xfc, 0x87, 0x27,
-0x90, 0x8a, 0xf0, 0xcf, 0x03, 0x2d, 0xf1, 0x13,
-0xf6, 0x46, 0xf6, 0xcb, 0xa6, 0x5d, 0x5a, 0x39,
-0xba, 0xdf, 0x18, 0xf6, 0x82, 0x1b, 0xdb, 0x10,
-0xcf, 0x59, 0xd3, 0xe2, 0x77, 0x36, 0xbb, 0xb7,
-0x33, 0xf5, 0x5f, 0xf0, 0xe7, 0x03, 0xfc, 0x3a,
-0x9c, 0x3a, 0xd2, 0xaa, 0xb3, 0x6b, 0x89, 0xff,
-0xbb, 0x81, 0xd1, 0x2e, 0xbe, 0xfd, 0x85, 0x2a,
-0x09, 0x18, 0x27, 0xf9, 0x75, 0x96, 0x89, 0xaf,
-0xd8, 0xd7, 0x31, 0x5d, 0xfc, 0x1b, 0x34, 0x88,
-0xf1, 0x94, 0x3e, 0xe4, 0x79, 0x6b, 0x51, 0xea,
-0xc4, 0x5e, 0xab, 0xee, 0x2f, 0x6e, 0xb1, 0x92,
-0x5a, 0xfb, 0x17, 0x21, 0x25, 0xac, 0xce, 0x05,
-0xc5, 0x2e, 0x33, 0x7e, 0xa6, 0xb5, 0x0f, 0x32,
-0xfe, 0x0d, 0x33, 0xa3, 0xb5, 0xba, 0xc1, 0xdb,
-0xc3, 0x88, 0xcd, 0x61, 0x0e, 0xf7, 0x61, 0x66,
-0x75, 0x7f, 0x77, 0xda, 0xde, 0xdf, 0xcd, 0xe0,
-0x5a, 0x78, 0x64, 0xd8, 0xb6, 0xbe, 0xc7, 0x1e,
-0xe3, 0xc4, 0xbf, 0x12, 0xc8, 0x7f, 0xd8, 0x6c,
-0x51, 0x73, 0x5c, 0x20, 0x5c, 0xf3, 0x37, 0x66,
-0xaf, 0x17, 0x96, 0x8f, 0xf5, 0xf1, 0x3a, 0x32,
-0x12, 0x49, 0x2c, 0xf2, 0xc2, 0x75, 0x1c, 0x51,
-0x1b, 0x67, 0x95, 0x6d, 0xfc, 0xa5, 0x5d, 0x51,
-0xea, 0x4c, 0x6f, 0x86, 0x67, 0xbb, 0xcd, 0xa9,
-0x4b, 0x7a, 0x0d, 0xfe, 0xf5, 0x7a, 0x13, 0x96,
-0x89, 0xf9, 0x2d, 0xcb, 0x7d, 0xe9, 0xb6, 0xd9,
-0x3c, 0xff, 0x70, 0x40, 0x2a, 0xb5, 0x13, 0x11,
-0xfb, 0x33, 0xfc, 0xf3, 0x7b, 0xcc, 0xaa, 0x73,
-0xc8, 0x9f, 0xa0, 0xb3, 0x58, 0x49, 0x4a, 0x7c,
-0x27, 0x43, 0x52, 0xd7, 0x89, 0xaf, 0xaf, 0x6d,
-0x71, 0xe6, 0x1f, 0xce, 0x56, 0x1f, 0x16, 0xab,
-0x14, 0xe6, 0x16, 0x96, 0x32, 0xb1, 0x30, 0x36,
-0x66, 0xc8, 0xa5, 0xbf, 0x4c, 0x19, 0xed, 0xa1,
-0x15, 0x73, 0x71, 0x5d, 0x87, 0xd1, 0x8f, 0xa7,
-0x95, 0x2e, 0x3b, 0xfc, 0xb1, 0x05, 0xf6, 0x2f,
-0xf6, 0xe7, 0x3d, 0x62, 0x05, 0xed, 0xb4, 0x03,
-0x22, 0xd6, 0xfe, 0x85, 0x19, 0x53, 0x41, 0x9b,
-0xea, 0x3c, 0x5b, 0x38, 0xa0, 0x0f, 0x80, 0x58,
-0x95, 0xc5, 0x4a, 0x2a, 0x04, 0x3b, 0x98, 0xe7,
-0xc9, 0xd6, 0x2b, 0x25, 0x3a, 0x5a, 0xea, 0x07,
-0x33, 0xf5, 0x5f, 0x78, 0xcf, 0x07, 0x39, 0xc5,
-0x59, 0xf6, 0x73, 0x71, 0x86, 0x1e, 0xc1, 0x57,
-0xd3, 0x03, 0xbc, 0x5e, 0xef, 0x4e, 0xf0, 0x2e,
-0x74, 0x72, 0x44, 0x66, 0xfe, 0x98, 0x6e, 0xfb,
-0x63, 0xd9, 0xf1, 0x2f, 0xd3, 0xa2, 0xc8, 0x63,
-0x89, 0x52, 0xc3, 0xf6, 0x3c, 0xbf, 0x21, 0xa3,
-0x10, 0x33, 0xe3, 0x73, 0xb8, 0x60, 0x44, 0x64,
-0x9f, 0xcb, 0x3f, 0x9c, 0xa0, 0xfe, 0x8b, 0x65,
-0xc2, 0x7b, 0x4f, 0x4e, 0xda, 0x87, 0x49, 0x1a,
-0xd4, 0x6b, 0x48, 0x21, 0xf9, 0xa2, 0x6c, 0x25,
-0xf1, 0x1e, 0x6f, 0xaf, 0xb1, 0xa3, 0xc9, 0x3b,
-0xe0, 0xd1, 0x6b, 0xbc, 0x2c, 0x3b, 0x2d, 0xc7,
-0x79, 0xa2, 0xaf, 0x13, 0xff, 0x7a, 0x93, 0x74,
-0xc0, 0xb3, 0xd3, 0xb1, 0x49, 0xac, 0x22, 0xeb,
-0xcc, 0xe9, 0x49, 0x98, 0xf0, 0x0a, 0xa4, 0xed,
-0x4d, 0x33, 0x20, 0xa6, 0x92, 0xe9, 0xf8, 0x66,
-0xfb, 0x99, 0x17, 0x30, 0x1a, 0xa7, 0x82, 0xef,
-0xc4, 0x16, 0xc4, 0xc2, 0x76, 0x21, 0x98, 0x1d,
-0xff, 0x3a, 0xc3, 0x76, 0x22, 0x8f, 0x45, 0x6f,
-0x62, 0xe4, 0x11, 0xbf, 0x82, 0x5c, 0x0d, 0xe6,
-0x75, 0x21, 0xff, 0x51, 0xb9, 0x93, 0xc4, 0x60,
-0x32, 0x8b, 0xbc, 0xc2, 0x0e, 0x41, 0x37, 0x0d,
-0x46, 0x43, 0x24, 0x04, 0xa0, 0xcb, 0xe3, 0x95,
-0xdb, 0x58, 0x97, 0xf8, 0x3a, 0x7f, 0x2e, 0xcc,
-0xc2, 0x9f, 0x90, 0x8e, 0x83, 0x55, 0xb1, 0xe9,
-0x9b, 0xf1, 0x96, 0x10, 0xa6, 0xc7, 0x18, 0x4f,
-0xf0, 0x1e, 0xd3, 0x12, 0xf9, 0x62, 0x8a, 0x72,
-0x5d, 0x62, 0xe5, 0x6d, 0x08, 0xdb, 0xf9, 0xf7,
-0xd1, 0xa7, 0xf7, 0x41, 0x8b, 0x17, 0xbe, 0xcf,
-0x52, 0x58, 0xb8, 0x86, 0x61, 0x3e, 0x3f, 0xe4,
-0xaa, 0x63, 0xe4, 0x90, 0x19, 0x59, 0x5a, 0x50,
-0x5a, 0x84, 0x10, 0x26, 0x1c, 0x9f, 0xfa, 0x94,
-0xf4, 0x59, 0x72, 0x9e, 0x76, 0xbf, 0xec, 0xdb,
-0x59, 0xfc, 0xae, 0x08, 0x50, 0xba, 0xdf, 0xd7,
-0xd3, 0x59, 0x4d, 0x2e, 0x0c, 0x84, 0xcf, 0x79,
-0x77, 0xb7, 0xbd, 0x47, 0x8f, 0x74, 0xd4, 0x1e,
-0xf4, 0xa5, 0x1e, 0xa9, 0xf2, 0x1f, 0xe9, 0xe8,
-0x36, 0x8e, 0xa7, 0xca, 0xcd, 0x26, 0x07, 0x7f,
-0x5d, 0x24, 0x75, 0x46, 0xfe, 0x80, 0x74, 0x94,
-0x2d, 0xc1, 0xba, 0x98, 0x3a, 0xa4, 0x9f, 0x57,
-0x98, 0xe0, 0xda, 0xc5, 0x0e, 0x58, 0xaf, 0x61,
-0x0c, 0x10, 0x73, 0x68, 0x06, 0xc0, 0x99, 0xc2,
-0xeb, 0x8b, 0x85, 0x5a, 0x0c, 0x78, 0xb3, 0x35,
-0x67, 0xf0, 0x97, 0xa1, 0x3d, 0x45, 0x0f, 0xc9,
-0x91, 0x06, 0x7c, 0xde, 0xe5, 0xe7, 0x48, 0x68,
-0x60, 0x61, 0xb2, 0xf3, 0x46, 0xf1, 0x30, 0x2b,
-0x12, 0x6c, 0x44, 0x44, 0xf6, 0x01, 0x13, 0x62,
-0x56, 0x2e, 0xdc, 0x16, 0x1e, 0xb8, 0x3e, 0xe5,
-0xab, 0x24, 0x47, 0x94, 0x6e, 0xd3, 0xd7, 0x8d,
-0xa5, 0x85, 0x5a, 0xb7, 0xe1, 0xc6, 0x5f, 0xd3,
-0x49, 0x87, 0x5e, 0xd5, 0xac, 0x1c, 0x10, 0x2f,
-0x92, 0xe3, 0xb2, 0xdf, 0x54, 0x7e, 0x22, 0x7d,
-0x83, 0xac, 0x31, 0x66, 0xe1, 0xfc, 0xbc, 0x3f,
-0xaf, 0xb3, 0x94, 0x55, 0x89, 0x62, 0x58, 0x59,
-0x87, 0x0b, 0xae, 0x5a, 0x41, 0xfe, 0x4d, 0x0f,
-0x9b, 0xea, 0x33, 0x30, 0x99, 0xbf, 0x19, 0x08,
-0x1b, 0x19, 0xfc, 0x95, 0xce, 0xf9, 0xbc, 0xd1,
-0x4a, 0x56, 0xc4, 0x84, 0x3a, 0x7e, 0x6a, 0x44,
-0x3d, 0x5e, 0xb1, 0x55, 0x5e, 0x6d, 0xe0, 0x61,
-0x51, 0xd1, 0x99, 0xd2, 0x27, 0xf1, 0xd4, 0xa8,
-0x7b, 0xfe, 0xc2, 0xc2, 0xbd, 0x66, 0xb2, 0xff,
-0xaf, 0x30, 0x97, 0xb8, 0x8d, 0x92, 0x5e, 0x58,
-0xee, 0x02, 0xa1, 0xd3, 0x64, 0x07, 0x4a, 0x23,
-0x99, 0xfa, 0x2f, 0x79, 0xa0, 0x32, 0x96, 0xb7,
-0xbc, 0xe1, 0x55, 0xa1, 0x8d, 0xea, 0xc9, 0x6b,
-0x17, 0x7b, 0xbe, 0x8c, 0x01, 0x1a, 0x26, 0xb2,
-0xbc, 0x7c, 0x55, 0x62, 0x6a, 0xda, 0xf3, 0xcd,
-0x69, 0x5f, 0xcd, 0xdb, 0xf5, 0x54, 0xd9, 0x90,
-0x07, 0x4f, 0x14, 0xbf, 0x47, 0x97, 0x0c, 0x5d,
-0xc7, 0x0d, 0x16, 0xa0, 0x39, 0x99, 0xc9, 0x3f,
-0x34, 0x69, 0xb0, 0x21, 0x7f, 0xb6, 0x78, 0x4c,
-0x7c, 0x2e, 0x27, 0x94, 0xfe, 0x82, 0xa0, 0xb6,
-0xc2, 0x1d, 0x35, 0xb3, 0xcf, 0x77, 0x93, 0xf4,
-0x3e, 0x7d, 0xd2, 0x40, 0xfe, 0x4c, 0xcf, 0x42,
-0xf3, 0x82, 0x19, 0x1a, 0x66, 0xb7, 0xdf, 0x11,
-0x3d, 0x94, 0xc6, 0xf8, 0xb2, 0xff, 0x48, 0x05,
-0x8c, 0x71, 0xe5, 0x1f, 0x6e, 0xf6, 0x5c, 0xd4,
-0xea, 0xfb, 0xe4, 0x5e, 0xe9, 0xa2, 0xfc, 0xbe,
-0x76, 0xc0, 0x44, 0x81, 0x47, 0xfe, 0xc4, 0x9d,
-0x95, 0x2e, 0x6a, 0xdf, 0x62, 0xd4, 0xf4, 0xd2,
-0xbe, 0x66, 0x47, 0x6b, 0xfe, 0x02, 0xb9, 0x9e,
-0xf1, 0x8b, 0x8a, 0xe3, 0xf1, 0xd7, 0x37, 0x49,
-0xb7, 0xe1, 0x9d, 0x0d, 0x4b, 0xa0, 0x86, 0xc2,
-0xad, 0xe8, 0x78, 0x78, 0x47, 0xec, 0x03, 0xc9,
-0x23, 0x98, 0xa8, 0xd0, 0x83, 0x61, 0x6e, 0x0d,
-0xd5, 0xbe, 0xca, 0xe1, 0xe5, 0x20, 0xf3, 0xfc,
-0x43, 0xfb, 0x79, 0x3f, 0x6c, 0xe1, 0x1d, 0x81,
-0xe5, 0x5d, 0x18, 0x4a, 0x4c, 0xfa, 0x0f, 0xed,
-0x31, 0x2d, 0x40, 0x3d, 0xcd, 0x0c, 0x76, 0x55,
-0xf6, 0xab, 0xf7, 0x62, 0xfe, 0x06, 0x66, 0xb9,
-0x9f, 0x13, 0x27, 0xd3, 0x5d, 0x7a, 0x59, 0xbf,
-0x7a, 0x0f, 0xb1, 0x0d, 0x71, 0x72, 0x7c, 0x95,
-0xce, 0x84, 0xc0, 0x5e, 0xb6, 0x74, 0x07, 0x00,
-0x7f, 0xed, 0xa0, 0x15, 0xfa, 0x8d, 0x2b, 0xb1,
-0x2a, 0x9c, 0x96, 0xbd, 0xae, 0x44, 0xe3, 0x2f,
-0x23, 0x99, 0x3f, 0x13, 0x62, 0x36, 0x57, 0x6d,
-0x2c, 0x1b, 0x5c, 0x70, 0x9f, 0x7f, 0x8a, 0xb9,
-0x6b, 0x4b, 0xd9, 0xbb, 0xea, 0x37, 0xe3, 0x53,
-0x86, 0x76, 0x6d, 0x28, 0x7b, 0x1d, 0x0d, 0x73,
-0x55, 0xa2, 0x72, 0x18, 0xe6, 0xd9, 0xb4, 0xf1,
-0xd7, 0x11, 0xd2, 0x9d, 0xd4, 0x4f, 0x5e, 0x13,
-0xf0, 0x30, 0x7a, 0x9c, 0xb4, 0xe7, 0x61, 0xf1,
-0xb7, 0x34, 0xd5, 0x1e, 0xec, 0x53, 0x67, 0x88,
-0xc7, 0xc5, 0xb6, 0x0e, 0xbd, 0x4f, 0x8d, 0xf8,
-0x7d, 0x78, 0x0c, 0x35, 0xa0, 0xd6, 0x79, 0x0a,
-0x30, 0xff, 0x70, 0x18, 0x0c, 0xdf, 0xbc, 0x36,
-0xb3, 0x22, 0xcd, 0xf2, 0x0f, 0x75, 0x8e, 0xbf,
-0xf6, 0x18, 0x97, 0xe9, 0xcd, 0x89, 0xfc, 0xb7,
-0x55, 0x8c, 0x7f, 0x01, 0x10, 0x3b, 0x23, 0x5d,
-0x20, 0x97, 0x7b, 0xeb, 0x37, 0xae, 0x7b, 0x43,
-0x1a, 0xd1, 0x8f, 0xb5, 0x97, 0x23, 0xff, 0xc6,
-0x1c, 0x72, 0x39, 0xd6, 0xb5, 0x09, 0xd5, 0xbe,
-0xc8, 0x65, 0xa5, 0x2b, 0x01, 0xd0, 0xec, 0x1a,
-0x72, 0xcc, 0x8c, 0x60, 0x6a, 0xe2, 0x88, 0x53,
-0xff, 0x65, 0x8c, 0x34, 0xd7, 0x82, 0x6f, 0xc5,
-0xfd, 0x3a, 0x96, 0xbc, 0x64, 0x8c, 0x4c, 0xe1,
-0xb0, 0x8b, 0x8e, 0x68, 0xb5, 0x0a, 0x7a, 0x71,
-0x31, 0x00, 0x62, 0xe2, 0x22, 0xda, 0x96, 0xa4,
-0xe0, 0x04, 0x32, 0x91, 0xe5, 0xd0, 0x48, 0x29,
-0x0b, 0xd0, 0xb8, 0xe2, 0x5f, 0x67, 0x69, 0x08,
-0x99, 0xe4, 0xfb, 0x48, 0xaf, 0x1c, 0x36, 0xf2,
-0x1f, 0x95, 0x96, 0xa1, 0x2f, 0xca, 0x74, 0x9c,
-0x49, 0x3f, 0x92, 0xa2, 0xac, 0x46, 0x66, 0xfb,
-0x44, 0x58, 0x87, 0xa5, 0xf4, 0x1b, 0x60, 0x70,
-0x67, 0xb2, 0x9f, 0x86, 0x39, 0xfe, 0xca, 0xe4,
-0x1f, 0x1a, 0x7e, 0xee, 0x24, 0xbf, 0x42, 0x66,
-0xf2, 0x22, 0x9d, 0xd5, 0xac, 0x18, 0x4a, 0x3c,
-0x2d, 0x76, 0x18, 0x7e, 0xa2, 0xae, 0x45, 0x79,
-0x23, 0xea, 0x97, 0x95, 0x76, 0xd1, 0x4f, 0x7a,
-0x4c, 0x3f, 0xc9, 0x47, 0xcd, 0xdf, 0x0e, 0xd3,
-0xef, 0xc6, 0x5f, 0x42, 0x05, 0xdd, 0x5d, 0xba,
-0xb4, 0x69, 0xf1, 0xfa, 0xf8, 0x20, 0x79, 0x94,
-0xf8, 0x8d, 0xbc, 0x94, 0x38, 0xd5, 0x58, 0xdd,
-0x5c, 0x45, 0xae, 0xa3, 0xa2, 0x99, 0xa4, 0x78,
-0x1d, 0x2c, 0x68, 0x4d, 0x11, 0xbf, 0xa8, 0x90,
-0x0d, 0xba, 0x9c, 0xca, 0xc3, 0x20, 0xce, 0x86,
-0xd3, 0x84, 0xc6, 0xfc, 0xdc, 0x0f, 0x77, 0xf0,
-0xd7, 0x0c, 0x5d, 0x8f, 0x96, 0x02, 0x1c, 0x78,
-0xb0, 0x55, 0x98, 0x16, 0x55, 0x8a, 0x8a, 0xe4,
-0x44, 0xab, 0xbe, 0x22, 0xea, 0x29, 0x12, 0xfb,
-0x3a, 0x5a, 0x19, 0xc9, 0x06, 0x53, 0x04, 0xf3,
-0x47, 0x03, 0x45, 0x00, 0xbb, 0xba, 0xb8, 0x31,
-0x18, 0xc7, 0xfa, 0x2f, 0xc0, 0x05, 0xcf, 0x59,
-0xf1, 0xaf, 0x9c, 0xe5, 0x2c, 0x24, 0x11, 0x44,
-0x7a, 0xff, 0x4d, 0x81, 0x6e, 0x92, 0xff, 0x63,
-0xb5, 0xac, 0xa1, 0x9f, 0xe5, 0x1f, 0x16, 0x9f,
-0x6e, 0x30, 0x9b, 0x31, 0xdb, 0xb0, 0x3c, 0x4d,
-0xba, 0xc1, 0x58, 0x98, 0xa3, 0x96, 0x19, 0xc3,
-0x60, 0x28, 0x39, 0x52, 0xaf, 0xd1, 0xdf, 0xdc,
-0xcd, 0xf1, 0x17, 0xfb, 0x5d, 0x9b, 0xae, 0x39,
-0x47, 0xe6, 0x16, 0xfd, 0xbc, 0x6f, 0xdd, 0x80,
-0x7f, 0xb0, 0x69, 0x54, 0x64, 0x21, 0xad, 0x73,
-0x98, 0x7f, 0xd8, 0xc4, 0xd9, 0x0e, 0x8b, 0x6c,
-0x46, 0xc4, 0x12, 0xdb, 0xb0, 0x34, 0xc2, 0xa2,
-0xa3, 0x1a, 0x43, 0x6d, 0xbf, 0x9b, 0x14, 0xe3,
-0xf8, 0xeb, 0x9c, 0x9b, 0x76, 0x23, 0xcc, 0x8d,
-0x17, 0x49, 0x38, 0xf6, 0xbf, 0xbe, 0x2f, 0x7d,
-0x44, 0x2f, 0xd1, 0xf0, 0x72, 0xdf, 0xaf, 0xa5,
-0x69, 0xf4, 0x52, 0xb2, 0x7e, 0x79, 0xfe, 0xaf,
-0xa5, 0x59, 0xed, 0x97, 0xb6, 0xde, 0xff, 0x75,
-0xdf, 0xc9, 0xb6, 0x59, 0xfa, 0x8b, 0xdb, 0xc3,
-0x3c, 0x9b, 0xce, 0x5d, 0xff, 0x65, 0x87, 0xb4,
-0xa6, 0x53, 0x8b, 0x7f, 0x63, 0xeb, 0x46, 0xf5,
-0x01, 0xf1, 0x74, 0xf3, 0xec, 0xa6, 0xad, 0x25,
-0xea, 0x8f, 0xa5, 0x32, 0xad, 0x07, 0x56, 0xf0,
-0xf6, 0xa4, 0xf8, 0x84, 0xd1, 0xd3, 0xfc, 0xf7,
-0x09, 0x55, 0x17, 0x03, 0x62, 0xd2, 0x60, 0x19,
-0x89, 0x99, 0xfc, 0x43, 0xb9, 0x4b, 0xb6, 0x69,
-0x37, 0x04, 0xdb, 0xb0, 0x92, 0x39, 0xb5, 0x19,
-0x06, 0x1a, 0xfe, 0x26, 0xa3, 0xab, 0x68, 0x45,
-0x73, 0xde, 0x46, 0x17, 0x23, 0x87, 0xd8, 0x4a,
-0x58, 0xe4, 0xd1, 0x9d, 0x7f, 0xd8, 0x01, 0x3b,
-0xe3, 0x26, 0x11, 0xb3, 0x04, 0xa7, 0x5b, 0xe9,
-0xa6, 0xc4, 0xdf, 0xa4, 0xae, 0x17, 0x07, 0x63,
-0x28, 0x4e, 0xaa, 0x16, 0x8a, 0x53, 0xe9, 0xee,
-0xc2, 0xbf, 0x9f, 0xaf, 0x6c, 0x40, 0xda, 0x0d,
-0xa5, 0x0a, 0x57, 0x50, 0xa6, 0x5b, 0x78, 0x68,
-0x35, 0x93, 0x7f, 0xa8, 0x8f, 0x9a, 0x78, 0xd2,
-0x5e, 0x3c, 0x28, 0xc2, 0xfc, 0x2c, 0xf3, 0xfd,
-0x0b, 0xca, 0x52, 0x27, 0xc3, 0xcd, 0x0b, 0x36,
-0x14, 0xbf, 0xa1, 0x8d, 0x0e, 0x84, 0x9b, 0x7d,
-0x1b, 0xd5, 0xbf, 0x26, 0xa3, 0xb7, 0x47, 0x9a,
-0xf3, 0x37, 0x4a, 0x53, 0xc9, 0xa8, 0x59, 0xd5,
-0xb2, 0x68, 0x93, 0x7a, 0x03, 0x4c, 0x66, 0xad,
-0x0b, 0x7f, 0xf1, 0xfa, 0x2f, 0x44, 0x52, 0x6d,
-0x7d, 0x99, 0x18, 0xe2, 0x68, 0x85, 0x93, 0x64,
-0x18, 0x59, 0xc6, 0x53, 0x13, 0x05, 0xc0, 0x68,
-0x80, 0xec, 0x8c, 0x51, 0x33, 0x12, 0x43, 0x43,
-0x19, 0xd5, 0x59, 0xd0, 0xcd, 0xc9, 0x3f, 0x7c,
-0x4c, 0xb0, 0xd8, 0x0e, 0xd3, 0xb2, 0x49, 0xba,
-0x35, 0x1f, 0xed, 0x2c, 0xa3, 0x23, 0x2d, 0x08,
-0xb2, 0xbe, 0x74, 0x5a, 0xeb, 0xc7, 0x8a, 0x30,
-0xfa, 0x35, 0x9d, 0xf4, 0x47, 0xc3, 0x72, 0x3e,
-0x12, 0x41, 0xf7, 0xcf, 0x0f, 0x83, 0xab, 0x51,
-0xac, 0xcb, 0x23, 0x62, 0x38, 0x2b, 0xff, 0xb0,
-0x96, 0xee, 0xd7, 0xab, 0x3b, 0x4a, 0xd3, 0xf3,
-0x87, 0xc8, 0x4f, 0xe5, 0xa5, 0xd4, 0x37, 0x24,
-0xad, 0xac, 0xb8, 0x4c, 0xd9, 0x99, 0xcc, 0x08,
-0x79, 0x95, 0xce, 0xa2, 0x9f, 0x79, 0x5d, 0x5a,
-0x2e, 0xbf, 0x2a, 0xde, 0x94, 0x50, 0x96, 0x01,
-0x10, 0x7b, 0x95, 0xf8, 0x69, 0xe7, 0xbb, 0xf1,
-0x5a, 0x65, 0x3f, 0x4b, 0x44, 0xcc, 0xe0, 0x2f,
-0x83, 0xa4, 0xd2, 0xc1, 0xd3, 0x8a, 0xdc, 0x00,
-0xfb, 0x97, 0xac, 0x9b, 0xaa, 0xde, 0x50, 0x4e,
-0x7a, 0x0c, 0x9b, 0xe4, 0x90, 0xea, 0xa6, 0x32,
-0xbb, 0xc1, 0x0b, 0xae, 0x48, 0x85, 0x91, 0x87,
-0x35, 0xce, 0x6d, 0xed, 0x31, 0xa4, 0xe6, 0x28,
-0x90, 0x77, 0xc0, 0xcb, 0x94, 0xe1, 0x2f, 0x8d,
-0xe3, 0x2f, 0x8d, 0xcc, 0x44, 0xfc, 0xd5, 0x2c,
-0x1e, 0x15, 0x1e, 0x07, 0x14, 0xe0, 0x59, 0xfe,
-0xa0, 0x46, 0xb6, 0x89, 0x37, 0x9a, 0x6b, 0x5a,
-0x8a, 0xba, 0xc9, 0xff, 0x52, 0x6e, 0x48, 0xe7,
-0xa5, 0xc5, 0xfb, 0xc9, 0xff, 0xa2, 0x53, 0x0d,
-0xe5, 0x5e, 0xb1, 0x9e, 0xfc, 0x8b, 0xc9, 0xf3,
-0xe2, 0x74, 0x2b, 0x41, 0x6e, 0x88, 0x5f, 0x67,
-0xbb, 0x52, 0x84, 0x87, 0x60, 0x5c, 0xf2, 0x03,
-0x4b, 0x9b, 0xd5, 0x11, 0xf1, 0x6a, 0xf9, 0x69,
-0x76, 0xf6, 0xe5, 0xe7, 0x8a, 0xcc, 0x0a, 0x16,
-0x82, 0xfd, 0x82, 0xde, 0x14, 0xcb, 0x1f, 0x52,
-0xaf, 0x86, 0xb9, 0xe9, 0x4a, 0x2f, 0x5a, 0xae,
-0x5e, 0x2b, 0x9f, 0x03, 0x83, 0xe5, 0x1f, 0x6a,
-0x1c, 0x7f, 0x31, 0x9e, 0x49, 0xe3, 0x06, 0x57,
-0x4a, 0x21, 0x7b, 0x31, 0x62, 0x3e, 0x9b, 0x49,
-0x3e, 0x40, 0xfd, 0xe5, 0x10, 0xc1, 0x5a, 0x8f,
-0x3a, 0xf4, 0x0a, 0xfa, 0x78, 0xb1, 0x18, 0x1e,
-0x82, 0xd9, 0xf8, 0xcb, 0x8a, 0x7f, 0x09, 0x1f,
-0x18, 0x23, 0x48, 0x29, 0x7f, 0xb2, 0xfc, 0xab,
-0x18, 0xff, 0x4a, 0x17, 0x20, 0xed, 0x7c, 0x7f,
-0xa2, 0xee, 0x0d, 0xf4, 0x06, 0x09, 0xb2, 0xcd,
-0xfb, 0x7a, 0x1a, 0x23, 0xe4, 0x32, 0x4d, 0x2d,
-0xf7, 0x9e, 0x04, 0xb7, 0x10, 0x65, 0x97, 0xe1,
-0x6b, 0xcc, 0x82, 0x6f, 0xc8, 0xfc, 0xc3, 0x01,
-0x2b, 0xfe, 0x25, 0xac, 0xd7, 0xbb, 0x28, 0x80,
-0xa3, 0x12, 0x70, 0x89, 0x57, 0x91, 0xc0, 0x50,
-0xe7, 0x52, 0xf8, 0xa2, 0xed, 0x5b, 0x2b, 0x11,
-0xb1, 0x9a, 0xf4, 0xc0, 0x56, 0xd8, 0xad, 0xbe,
-0x2e, 0x4d, 0x26, 0xdd, 0xba, 0x1e, 0x53, 0xd2,
-0x28, 0xe9, 0x95, 0x84, 0x1d, 0xc4, 0x10, 0xf7,
-0x91, 0xc7, 0xb5, 0x1b, 0xcd, 0x4c, 0xfe, 0xa1,
-0x46, 0x36, 0x96, 0xec, 0x34, 0xca, 0x0e, 0x2a,
-0xc3, 0xf1, 0xc9, 0x58, 0xda, 0xdc, 0xbf, 0xe0,
-0xce, 0x5c, 0xb8, 0x0e, 0xca, 0x5f, 0xb6, 0x88,
-0xa7, 0xe4, 0xa7, 0xf5, 0xb2, 0x5e, 0xf5, 0x8e,
-0xf8, 0x5d, 0xfa, 0xae, 0x3c, 0xa1, 0x09, 0x70,
-0x1c, 0x52, 0x73, 0x4c, 0xc5, 0x3c, 0x46, 0x8d,
-0xac, 0x55, 0xd8, 0x3c, 0xbf, 0x60, 0xc7, 0xbf,
-0x5e, 0x60, 0x54, 0x60, 0xca, 0x2c, 0x96, 0xa4,
-0x11, 0x18, 0x50, 0xf5, 0x5c, 0x42, 0xa9, 0x11,
-0x1c, 0x50, 0x66, 0x02, 0x10, 0xeb, 0x36, 0x60,
-0xdb, 0xda, 0x28, 0xe6, 0xc3, 0x9d, 0xa0, 0x2f,
-0x0d, 0x4c, 0xf7, 0xc0, 0x4b, 0x78, 0xb8, 0xe2,
-0x23, 0xf5, 0x21, 0xf1, 0xa7, 0xfa, 0x93, 0xfd,
-0xac, 0x00, 0xf0, 0xa4, 0x9d, 0x7f, 0xf8, 0xc4,
-0xbc, 0xf3, 0x04, 0x40, 0x16, 0xd6, 0x7f, 0x81,
-0x7f, 0x38, 0x50, 0xf0, 0x94, 0x74, 0x23, 0x9e,
-0x1f, 0x9a, 0xc1, 0x3a, 0xf0, 0x37, 0xce, 0x4f,
-0xe9, 0x7e, 0x01, 0x9e, 0xaf, 0xbf, 0x37, 0x46,
-0x13, 0xa1, 0x93, 0xde, 0x9e, 0xb6, 0x0a, 0xfd,
-0x82, 0xf9, 0x4c, 0xda, 0xb7, 0x59, 0xaa, 0x14,
-0x8f, 0xf0, 0x44, 0x97, 0xf7, 0xf8, 0xf3, 0x95,
-0x30, 0xde, 0xc5, 0xd5, 0xe9, 0x28, 0xd8, 0x88,
-0xa0, 0x58, 0xde, 0x6f, 0xfa, 0xb6, 0xab, 0x43,
-0xe2, 0x79, 0x05, 0x0b, 0x63, 0xdb, 0xde, 0xd5,
-0x47, 0x39, 0x5f, 0xca, 0x53, 0x28, 0xe1, 0x37,
-0xc0, 0x9e, 0xb8, 0xf3, 0xbc, 0x4c, 0xef, 0x8c,
-0x31, 0x62, 0xe3, 0x2f, 0x8e, 0xe3, 0xb4, 0x11,
-0x3c, 0x7f, 0x46, 0xfc, 0x75, 0x8a, 0x3c, 0x27,
-0xd7, 0x1c, 0xbc, 0x1e, 0xc1, 0xf5, 0x1f, 0xb8,
-0x10, 0x73, 0x98, 0x5c, 0x36, 0x6b, 0x4c, 0xdf,
-0xe9, 0x36, 0xc6, 0xbf, 0x61, 0x3c, 0x34, 0x24,
-0x9d, 0x93, 0x31, 0x58, 0xb6, 0xce, 0x84, 0x96,
-0xa3, 0xbc, 0x46, 0x2c, 0xcd, 0x9f, 0xaf, 0x56,
-0xf9, 0xff, 0x22, 0x17, 0x0e, 0x6e, 0x0d, 0x29,
-0x9b, 0x18, 0x37, 0xc2, 0x2c, 0xf3, 0xfa, 0x4d,
-0xe2, 0x3b, 0xfa, 0x9e, 0x7e, 0xe6, 0x3f, 0xeb,
-0x2d, 0x23, 0x4d, 0x7e, 0x53, 0xdd, 0x86, 0x65,
-0x3b, 0x09, 0x7f, 0xec, 0xa1, 0x4d, 0xe2, 0x9b,
-0x46, 0x07, 0xc6, 0xb6, 0x56, 0x8b, 0x95, 0xa4,
-0xe3, 0x2f, 0x75, 0x96, 0x7f, 0x68, 0xe3, 0xaf,
-0xe9, 0xe8, 0x75, 0xc7, 0x4a, 0x37, 0xf1, 0x92,
-0x2e, 0x53, 0xdd, 0x5e, 0xf4, 0x9e, 0xb6, 0x97,
-0x2e, 0xe5, 0x81, 0xb0, 0x94, 0xe1, 0xc7, 0xf4,
-0x69, 0x2c, 0xff, 0xf1, 0xb7, 0xe4, 0xad, 0x47,
-0xda, 0x5e, 0x56, 0x02, 0x53, 0x34, 0x95, 0x0d,
-0xce, 0xce, 0x3f, 0x2c, 0x37, 0x98, 0xda, 0xd7,
-0x8b, 0xe4, 0x31, 0xa9, 0x02, 0xe9, 0xf8, 0xfa,
-0xe1, 0x6e, 0x49, 0xf6, 0xb3, 0xa4, 0xd0, 0x2d,
-0x24, 0xc9, 0xf9, 0x37, 0x52, 0x44, 0x57, 0x6e,
-0x24, 0xe2, 0x51, 0x8d, 0x7a, 0xd3, 0x18, 0x02,
-0xf0, 0x8a, 0x14, 0xaf, 0xe3, 0xe4, 0x1f, 0xd2,
-0x9c, 0x15, 0xa4, 0x36, 0x16, 0x36, 0x82, 0xa8,
-0xff, 0x05, 0xeb, 0xf5, 0x8a, 0xc5, 0x07, 0x8b,
-0x41, 0x2e, 0xb5, 0xac, 0xa9, 0xa7, 0x02, 0x16,
-0x45, 0x2c, 0x0f, 0x92, 0x0f, 0x9b, 0xbb, 0xef,
-0xca, 0xa7, 0xd2, 0xa0, 0x78, 0xd0, 0x8f, 0xa1,
-0x31, 0xb5, 0x02, 0xb6, 0xfe, 0x6e, 0x73, 0x61,
-0xaa, 0xd8, 0xa9, 0xff, 0x02, 0x48, 0x15, 0xab,
-0x27, 0x52, 0xb3, 0x74, 0xb1, 0x1d, 0x5c, 0xbe,
-0x5f, 0xb3, 0x32, 0xf3, 0x8b, 0x06, 0x3f, 0x84,
-0x07, 0x7f, 0x03, 0x3c, 0xfc, 0xbe, 0xf2, 0x8b,
-0x1a, 0x78, 0x8c, 0xb7, 0xae, 0x43, 0xfc, 0x35,
-0x42, 0xaa, 0x0f, 0x4f, 0x32, 0x25, 0x07, 0xb5,
-0x65, 0xd5, 0x7f, 0x55, 0x67, 0x1d, 0x59, 0x5c,
-0xe6, 0xb2, 0x5f, 0x23, 0xb0, 0x82, 0xc7, 0x01,
-0x05, 0xd8, 0x47, 0x1f, 0x94, 0x55, 0x7b, 0xe1,
-0xf9, 0x86, 0x77, 0x80, 0xe1, 0xaf, 0xfa, 0x2c,
-0xfc, 0xe5, 0xe8, 0x2f, 0xe3, 0xf4, 0x66, 0x0c,
-0x93, 0x91, 0x1c, 0x76, 0x62, 0xd8, 0xcb, 0x52,
-0x04, 0x4b, 0x2a, 0x3d, 0x0d, 0xaf, 0x8b, 0x9d,
-0xf1, 0x2a, 0x13, 0x26, 0xd3, 0x0a, 0x84, 0x65,
-0xd5, 0x7f, 0x8d, 0xd7, 0x43, 0xec, 0xb6, 0x8d,
-0x36, 0x7c, 0xc5, 0xb1, 0x8c, 0x44, 0x11, 0xb0,
-0xb0, 0x6e, 0x85, 0xc6, 0xb0, 0x54, 0xd6, 0x3e,
-0x8f, 0xca, 0xe2, 0xdf, 0x70, 0x74, 0xdf, 0x6c,
-0x23, 0x53, 0xff, 0x55, 0x95, 0xe4, 0xd4, 0xf4,
-0x42, 0x55, 0x87, 0xb2, 0x4f, 0x4c, 0xeb, 0xc8,
-0x0b, 0xa1, 0xd4, 0x31, 0x82, 0x08, 0x36, 0xc6,
-0x5d, 0xff, 0xe5, 0x4e, 0x8d, 0x66, 0x2c, 0x34,
-0x23, 0x07, 0xf9, 0xb9, 0x04, 0x05, 0x27, 0x39,
-0xe6, 0xe5, 0xa5, 0x3d, 0x11, 0x12, 0xec, 0xc1,
-0x8c, 0x44, 0x91, 0x1d, 0x74, 0x38, 0xfe, 0x73,
-0x9f, 0x13, 0xff, 0x52, 0xb2, 0x20, 0xf0, 0x22,
-0x56, 0xaf, 0x27, 0x59, 0x45, 0x79, 0x57, 0xc8,
-0x5c, 0x40, 0xd0, 0x7f, 0x86, 0x5d, 0x75, 0x18,
-0x23, 0xeb, 0xe3, 0x30, 0x79, 0x20, 0x83, 0x97,
-0x27, 0xd4, 0x5f, 0xb6, 0x8d, 0xf3, 0x24, 0x7c,
-0x90, 0x65, 0x7a, 0x1f, 0xc1, 0xad, 0xcd, 0x0e,
-0xb5, 0x60, 0xf6, 0x3e, 0xfb, 0x1a, 0xde, 0x6d,
-0x99, 0xef, 0xe3, 0x8e, 0x7f, 0x8d, 0x9b, 0x9f,
-0x3d, 0x04, 0x59, 0xd4, 0xf8, 0xfc, 0x10, 0xc5,
-0x51, 0x04, 0x83, 0xa7, 0x00, 0x8f, 0x23, 0xfa,
-0x03, 0xdb, 0xc5, 0x6a, 0x7b, 0x7e, 0x5c, 0xf5,
-0x5f, 0xe3, 0xd7, 0x0b, 0x9e, 0x82, 0x01, 0x3b,
-0x70, 0x69, 0x64, 0xd4, 0x52, 0xd8, 0x49, 0x05,
-0xce, 0xf3, 0xd5, 0xa2, 0x37, 0x66, 0xad, 0x57,
-0x76, 0xfd, 0x97, 0x4d, 0xb5, 0x67, 0x19, 0x3b,
-0x19, 0xfe, 0x12, 0xcf, 0x63, 0xf0, 0x25, 0x16,
-0xb5, 0xba, 0x30, 0x76, 0xf3, 0x2b, 0x6c, 0x19,
-0x54, 0x90, 0xa0, 0xcf, 0x8a, 0xcb, 0xb8, 0xea,
-0xbf, 0x3e, 0xe4, 0x91, 0xac, 0xa3, 0x19, 0x63,
-0x98, 0xa4, 0xb8, 0xf1, 0x9c, 0x5c, 0x47, 0x38,
-0x23, 0x62, 0xaa, 0x8e, 0xac, 0x0d, 0x49, 0xfd,
-0x22, 0x86, 0xbd, 0xbc, 0x5a, 0x9b, 0x97, 0x38,
-0xf1, 0x2f, 0x0b, 0x7f, 0xed, 0xe3, 0xd1, 0xc9,
-0x2c, 0x7d, 0x87, 0x4b, 0x0e, 0x29, 0x25, 0x0b,
-0x8d, 0x4d, 0xe2, 0xc6, 0x3f, 0xf0, 0xa3, 0x8f,
-0xb9, 0xb8, 0x5e, 0xa7, 0x0c, 0x0b, 0x91, 0x8d,
-0xd7, 0x5f, 0x76, 0xeb, 0x60, 0xf2, 0x77, 0x2f,
-0x3f, 0x99, 0x74, 0xd6, 0xcb, 0x6b, 0xc5, 0x34,
-0x4d, 0x70, 0x4e, 0xaa, 0xec, 0xf5, 0x7a, 0xdb,
-0xcd, 0x7f, 0xe8, 0xd6, 0x9d, 0xe4, 0x44, 0x88,
-0x16, 0xc9, 0x86, 0x75, 0x12, 0xc8, 0xa4, 0x55,
-0x4c, 0xa5, 0xa5, 0xa8, 0x8f, 0x9d, 0xfb, 0xc1,
-0x06, 0x34, 0xd9, 0x3e, 0x5f, 0xcd, 0xaa, 0xff,
-0xaa, 0x4c, 0x5f, 0x97, 0x35, 0xcf, 0x29, 0xba,
-0xc5, 0x99, 0x79, 0xdd, 0x0e, 0x8d, 0xc5, 0x02,
-0x2b, 0x8b, 0x7e, 0xcd, 0xa6, 0x57, 0x89, 0x66,
-0xe6, 0x39, 0x9b, 0x7f, 0x3e, 0x7b, 0xdd, 0xb5,
-0x94, 0xc1, 0x93, 0x73, 0x04, 0x68, 0x29, 0x0d,
-0xe0, 0xfe, 0xbe, 0x83, 0xac, 0x38, 0xa5, 0xcc,
-0xdc, 0xc0, 0x8f, 0x94, 0x03, 0x24, 0xf3, 0x9c,
-0x66, 0xf1, 0xcf, 0x47, 0xec, 0xdc, 0x42, 0x47,
-0xe4, 0x2b, 0xcc, 0xfd, 0xa8, 0xf3, 0xa4, 0x3e,
-0xe1, 0xe5, 0xfc, 0xf3, 0xf5, 0x29, 0xef, 0xa0,
-0x34, 0x62, 0x1e, 0xe6, 0x81, 0xb0, 0x40, 0x26,
-0xfe, 0x65, 0xe1, 0xaf, 0x89, 0xb5, 0x95, 0x33,
-0x49, 0x86, 0x60, 0x14, 0x8f, 0x91, 0xfd, 0xf2,
-0x75, 0x64, 0x06, 0x8f, 0xa9, 0xff, 0x1a, 0x4b,
-0xa6, 0x0d, 0xce, 0xa4, 0x45, 0x1c, 0xb7, 0x2c,
-0x13, 0x2f, 0xe0, 0xc4, 0xdd, 0x96, 0x31, 0x6a,
-0xc7, 0xbf, 0x32, 0xf8, 0xcb, 0x15, 0xbf, 0x70,
-0x8c, 0x16, 0x9b, 0x6d, 0xa3, 0xd9, 0x89, 0x5f,
-0x60, 0xe0, 0x49, 0x67, 0x2d, 0x1b, 0x01, 0xa3,
-0xed, 0x9e, 0x30, 0xfe, 0x95, 0x7d, 0x1d, 0x78,
-0x2a, 0xef, 0xb4, 0xae, 0x13, 0x74, 0x14, 0xc1,
-0xb0, 0x8e, 0x75, 0x1a, 0x6f, 0x29, 0x8a, 0xdf,
-0xa0, 0xed, 0xb6, 0xe3, 0x20, 0x0e, 0xfe, 0x72,
-0x49, 0xfd, 0x3a, 0xda, 0xca, 0x99, 0xba, 0x24,
-0x8b, 0x1a, 0x51, 0x64, 0x52, 0x53, 0x8c, 0x20,
-0xbd, 0x09, 0x81, 0x98, 0x3d, 0x78, 0x0c, 0xff,
-0xfc, 0x38, 0x31, 0x6b, 0xac, 0xa1, 0x4b, 0x27,
-0xfb, 0x49, 0xdd, 0xb5, 0x41, 0xab, 0xc5, 0x13,
-0xa4, 0xaa, 0xbe, 0x15, 0x5a, 0x34, 0x6f, 0x8e,
-0x24, 0x18, 0x23, 0xe3, 0xe2, 0x5f, 0x13, 0xe8,
-0x26, 0x5b, 0xf5, 0x5f, 0x84, 0x45, 0xc4, 0x6c,
-0x26, 0x79, 0x84, 0x54, 0x1a, 0x0b, 0x84, 0xbd,
-0x74, 0x5d, 0x86, 0x20, 0x3d, 0x53, 0xff, 0x35,
-0xd1, 0x7a, 0xb1, 0x40, 0x18, 0x26, 0x8d, 0xd4,
-0xf7, 0x3e, 0xc5, 0x5b, 0xa6, 0x18, 0x05, 0xa9,
-0x4c, 0x44, 0x6c, 0xa6, 0x7c, 0x48, 0xfc, 0xa3,
-0xf1, 0x2f, 0x66, 0x9c, 0x27, 0x56, 0x45, 0x58,
-0x87, 0x3b, 0x22, 0xa6, 0x64, 0x5a, 0x1a, 0x88,
-0x13, 0xff, 0xca, 0xaa, 0xff, 0x1a, 0x3b, 0xcf,
-0xf8, 0x54, 0x6a, 0x0d, 0x08, 0xc4, 0x58, 0x91,
-0x17, 0xef, 0xf2, 0x94, 0xc2, 0xea, 0xb4, 0xda,
-0x81, 0x30, 0x3b, 0xfe, 0x95, 0x5d, 0xff, 0x95,
-0xb5, 0xee, 0xf2, 0x13, 0x56, 0xfe, 0x21, 0x00,
-0x31, 0x97, 0x22, 0x98, 0x82, 0x8c, 0x2e, 0xab,
-0x89, 0xd7, 0x50, 0x36, 0xe5, 0x7a, 0x9d, 0xf8,
-0x97, 0xab, 0xfe, 0x6b, 0xdc, 0xfc, 0xec, 0xb6,
-0xc2, 0x5e, 0x7e, 0x8c, 0xe7, 0xda, 0xf7, 0x73,
-0x43, 0xc1, 0x26, 0xe9, 0x8d, 0x06, 0xbc, 0x9f,
-0x83, 0x1b, 0xad, 0x1b, 0x9b, 0xe1, 0x2f, 0xdd,
-0xc6, 0x5f, 0x13, 0xcc, 0xb3, 0xe9, 0x8a, 0x88,
-0x2d, 0xb2, 0x42, 0xc6, 0x06, 0xa7, 0xb2, 0xc4,
-0xe9, 0xd5, 0x16, 0x0c, 0x6a, 0xd6, 0xe0, 0x5f,
-0xf3, 0xf7, 0x86, 0xcd, 0x3f, 0x3f, 0xe6, 0xfe,
-0x11, 0x22, 0x64, 0xad, 0xf5, 0x9c, 0x56, 0x38,
-0x5d, 0xeb, 0x9c, 0x27, 0x37, 0x9e, 0x51, 0x04,
-0x73, 0xf3, 0xcf, 0x67, 0x28, 0x0d, 0x1d, 0xa3,
-0x9a, 0x76, 0x58, 0x46, 0xd2, 0xdd, 0x85, 0xd4,
-0x88, 0xd5, 0x1d, 0xea, 0x50, 0xbc, 0x36, 0x13,
-0xff, 0x22, 0xfc, 0x3a, 0x13, 0xed, 0x5f, 0x8c,
-0x7f, 0x7e, 0xa2, 0x93, 0x76, 0xd3, 0x32, 0x3c,
-0xf3, 0x27, 0x8c, 0x7f, 0x8d, 0x7d, 0x3f, 0x67,
-0x14, 0x43, 0xb2, 0xbb, 0xfc, 0xff, 0x61, 0x6b,
-0x07, 0xdf, 0xa9, 0x5b, 0xef, 0xe7, 0xfe, 0xec,
-0xf8, 0x97, 0x4b, 0x7f, 0x99, 0x19, 0xf5, 0x31,
-0x1e, 0x11, 0x6b, 0x9d, 0x9b, 0x5e, 0xe7, 0xea,
-0xfa, 0xa5, 0x6d, 0x7c, 0x59, 0xfc, 0x05, 0xef,
-0x3a, 0x3c, 0x2e, 0xfe, 0x95, 0xd9, 0x77, 0x64,
-0x5b, 0x6d, 0x79, 0x6c, 0x57, 0xa3, 0xa3, 0xbf,
-0xbc, 0x7d, 0x4c, 0xfc, 0x8b, 0xe4, 0xb8, 0xdc,
-0xc2, 0x8c, 0x91, 0xa8, 0xd7, 0x7d, 0x56, 0xc6,
-0x54, 0xa6, 0xab, 0x60, 0x44, 0xfa, 0x40, 0x3b,
-0xce, 0x63, 0x64, 0xb3, 0xec, 0xae, 0x81, 0x4c,
-0xfd, 0xd7, 0x84, 0xf3, 0x83, 0x81, 0xc2, 0x53,
-0x4b, 0x61, 0x12, 0xfa, 0x54, 0xa4, 0x8e, 0xdc,
-0x81, 0xdb, 0xd6, 0xdd, 0xe2, 0x09, 0x56, 0xd1,
-0xac, 0xdc, 0xeb, 0x29, 0x31, 0xac, 0xf9, 0x71,
-0xd5, 0x7f, 0x4d, 0x70, 0x1d, 0x91, 0x5d, 0x87,
-0x05, 0x13, 0x07, 0x9c, 0x2e, 0x8f, 0x1d, 0x5e,
-0x54, 0x96, 0x30, 0x42, 0x2a, 0x77, 0xfc, 0x4b,
-0x9f, 0x68, 0xff, 0x22, 0x3b, 0x36, 0x05, 0xe7,
-0xb9, 0xd4, 0x52, 0x1a, 0x58, 0xd7, 0xa0, 0x62,
-0x85, 0x3b, 0x0d, 0x45, 0xf7, 0x2b, 0xf6, 0xba,
-0x3b, 0xf8, 0x6b, 0x22, 0x7f, 0xec, 0x02, 0x9e,
-0x03, 0x00, 0xb6, 0x52, 0x16, 0xd8, 0xbc, 0x85,
-0x16, 0xe1, 0xc9, 0xa0, 0x72, 0x04, 0x83, 0x2f,
-0x3b, 0xa5, 0x0a, 0xe4, 0xe0, 0x72, 0xc5, 0xbf,
-0x28, 0x99, 0xc8, 0x4f, 0x60, 0xd1, 0x49, 0xf4,
-0xeb, 0x2e, 0x10, 0x4b, 0x05, 0x98, 0x69, 0x84,
-0xf5, 0xf0, 0xf8, 0x17, 0x2a, 0x05, 0x3b, 0xb1,
-0x1b, 0x57, 0xfd, 0xd7, 0xd8, 0x50, 0x0b, 0x33,
-0x58, 0xe6, 0x95, 0x78, 0x9c, 0xcc, 0x6d, 0x77,
-0x42, 0x63, 0x60, 0xfc, 0x92, 0x1c, 0x27, 0x3e,
-0xd3, 0x77, 0x8f, 0x3a, 0xd3, 0x8e, 0x7f, 0xb9,
-0xea, 0xbf, 0xb2, 0xfc, 0xc3, 0x4e, 0xcb, 0x48,
-0xda, 0xfe, 0xe1, 0x06, 0x47, 0x2e, 0x19, 0x8c,
-0xdf, 0xa1, 0x50, 0xec, 0xcb, 0xea, 0xce, 0x8c,
-0x7f, 0x98, 0x9e, 0x50, 0x7f, 0x39, 0x63, 0x24,
-0x5d, 0x7e, 0xa6, 0x73, 0x1d, 0xff, 0x1b, 0xe8,
-0x67, 0x62, 0x97, 0x6c, 0x38, 0xd7, 0x69, 0xb6,
-0xf1, 0xd7, 0x44, 0xcf, 0x69, 0x30, 0xc9, 0x96,
-0xa9, 0x4d, 0x0e, 0x12, 0x97, 0x34, 0x58, 0x03,
-0xf3, 0x33, 0x61, 0xfb, 0x11, 0x89, 0x28, 0x59,
-0xf1, 0x2f, 0x7e, 0xf7, 0x90, 0xfc, 0x15, 0xe3,
-0x6f, 0x7e, 0xe2, 0x3c, 0x17, 0xcc, 0xfb, 0x62,
-0x5d, 0xcd, 0xcc, 0x18, 0xc4, 0x42, 0x30, 0xd3,
-0xa7, 0x4b, 0xb2, 0x13, 0xff, 0xe2, 0xe7, 0x1b,
-0x5c, 0xff, 0x6b, 0xcc, 0x3c, 0x6b, 0xee, 0x8c,
-0xa9, 0x4c, 0x57, 0x35, 0x8b, 0x91, 0x89, 0xcc,
-0x9f, 0x77, 0x02, 0x61, 0x0e, 0xfe, 0xfa, 0x88,
-0x5c, 0x84, 0xa7, 0xdb, 0xf7, 0x81, 0x94, 0x22,
-0xff, 0x33, 0x50, 0x63, 0xe6, 0xe1, 0x5f, 0xfd,
-0x43, 0x59, 0x4d, 0xbf, 0xf7, 0x03, 0x69, 0x2e,
-0xec, 0x32, 0x35, 0xad, 0x05, 0xc3, 0xf0, 0xbc,
-0xd7, 0x53, 0x49, 0xf7, 0x9d, 0x14, 0x87, 0xc9,
-0x3b, 0xa4, 0x26, 0x7d, 0x3d, 0x92, 0xe1, 0xbc,
-0x80, 0xa1, 0xe7, 0xa1, 0x46, 0x57, 0xfe, 0x61,
-0x6d, 0x7b, 0x41, 0x5a, 0x3a, 0x27, 0x06, 0x48,
-0xb5, 0x51, 0x3e, 0xe0, 0x39, 0x27, 0x5e, 0x12,
-0x1f, 0x0f, 0xdf, 0xd4, 0xe7, 0xf9, 0x3d, 0xf9,
-0x21, 0x3d, 0x49, 0xa7, 0xa7, 0x3d, 0x17, 0x19,
-0x22, 0x9b, 0x5e, 0xa6, 0x6e, 0x12, 0xdf, 0x16,
-0xd7, 0x99, 0xfe, 0xf4, 0x75, 0xdb, 0xc5, 0x2a,
-0xad, 0xb3, 0xdd, 0x7f, 0x3a, 0xc3, 0xbf, 0xd1,
-0x9f, 0xd3, 0x8f, 0xa9, 0xb6, 0xb4, 0x73, 0x66,
-0x43, 0x07, 0x69, 0x13, 0xb6, 0xf6, 0x45, 0x67,
-0x92, 0xcf, 0x6b, 0xe5, 0x4a, 0x00, 0x31, 0x6c,
-0x3e, 0x49, 0xc0, 0xdb, 0xd7, 0x33, 0x03, 0x26,
-0xfc, 0xfb, 0x82, 0x4e, 0xae, 0xd3, 0x58, 0x62,
-0xb6, 0x8e, 0x79, 0x71, 0x41, 0x18, 0x3c, 0xbd,
-0x37, 0x1a, 0xca, 0xf0, 0x1f, 0xfe, 0x4c, 0x01,
-0xb4, 0x35, 0xb0, 0x00, 0xd9, 0xef, 0x11, 0x4a,
-0x8b, 0x98, 0x80, 0x8a, 0x6b, 0xca, 0x84, 0xc0,
-0x1e, 0xed, 0x98, 0xee, 0xe7, 0x8a, 0xcc, 0xca,
-0xed, 0xe4, 0xba, 0x0d, 0xe2, 0xdb, 0xe4, 0x07,
-0xc4, 0x3f, 0xac, 0xfe, 0x98, 0x4c, 0x35, 0x3a,
-0xe9, 0xf4, 0x98, 0xb2, 0x29, 0xee, 0xf0, 0x1f,
-0xbe, 0x4f, 0xce, 0xa7, 0x67, 0xbd, 0x04, 0x33,
-0xff, 0x18, 0x3c, 0x3b, 0x61, 0x53, 0xc6, 0xf2,
-0xd5, 0x77, 0x48, 0x6d, 0x2f, 0x86, 0x95, 0x85,
-0xfe, 0xbe, 0x70, 0x8a, 0xa5, 0x4f, 0xff, 0xc6,
-0x0c, 0x6b, 0x2c, 0x35, 0xf1, 0x43, 0xd2, 0x9d,
-0x56, 0xb7, 0x4b, 0xd5, 0xf2, 0x91, 0xc3, 0x2b,
-0x3f, 0x00, 0x44, 0xe6, 0xe2, 0x3f, 0xbc, 0x6c,
-0xcf, 0x3c, 0x5f, 0x82, 0xb6, 0x33, 0xe4, 0x8a,
-0x7c, 0x33, 0xab, 0x30, 0xca, 0x19, 0x26, 0x75,
-0xf1, 0xeb, 0x53, 0xe5, 0x8c, 0xc6, 0xa1, 0xe8,
-0xfa, 0x93, 0xd2, 0x49, 0x64, 0xd8, 0x3b, 0xe8,
-0x4b, 0xff, 0xe6, 0xa2, 0x76, 0x89, 0xfc, 0x73,
-0x03, 0x23, 0xb7, 0x64, 0xdf, 0xa7, 0x59, 0x7b,
-0x42, 0xbb, 0xd0, 0x34, 0x2b, 0xe5, 0x0b, 0x35,
-0xfe, 0x1d, 0x7d, 0x4e, 0x88, 0xf4, 0x7d, 0x3e,
-0x35, 0xe9, 0x8c, 0xfe, 0x9c, 0x10, 0xe6, 0xc2,
-0x64, 0xaf, 0x18, 0xb3, 0x34, 0x2c, 0x1b, 0x2c,
-0x3b, 0xec, 0x01, 0x8f, 0x28, 0xc1, 0x8e, 0xb3,
-0xc2, 0xe6, 0xc2, 0xd6, 0xe2, 0x1b, 0xf5, 0x51,
-0x05, 0x7c, 0xda, 0x9d, 0xd2, 0xbf, 0x3b, 0xf1,
-0x2f, 0xba, 0x27, 0xe9, 0x4f, 0xab, 0xbf, 0x17,
-0x3f, 0x2b, 0xff, 0xfc, 0x6c, 0x75, 0x3a, 0x3a,
-0xb2, 0xe1, 0x0a, 0xfd, 0xb9, 0x58, 0xfe, 0x7a,
-0xfe, 0xb0, 0xb8, 0x0f, 0x2b, 0x05, 0x66, 0x7b,
-0x87, 0xc5, 0x2a, 0xd2, 0xd9, 0x5f, 0xa5, 0x2f,
-0x48, 0xc0, 0x46, 0x76, 0x80, 0xfa, 0xa3, 0xf9,
-0xb2, 0xb4, 0x48, 0xee, 0x9a, 0x87, 0x64, 0xda,
-0x99, 0xf8, 0xd7, 0x7c, 0x40, 0x5b, 0x15, 0x98,
-0x42, 0xb3, 0x8c, 0x3c, 0x86, 0xf1, 0xe5, 0xd9,
-0x45, 0xef, 0xc1, 0xcd, 0x2f, 0xa6, 0x3d, 0xa9,
-0xdc, 0xa3, 0x1a, 0x95, 0xb7, 0xc5, 0x94, 0xd0,
-0xfc, 0x82, 0x79, 0x6b, 0xcc, 0x60, 0x19, 0x78,
-0x17, 0x34, 0x67, 0x47, 0x68, 0x1b, 0xca, 0x7e,
-0xad, 0x8b, 0xee, 0x98, 0x47, 0xfa, 0x16, 0xd4,
-0x15, 0x59, 0xf8, 0x6b, 0x44, 0xf8, 0x33, 0xb2,
-0x8f, 0x1f, 0xf7, 0x15, 0x19, 0x28, 0xf2, 0xe5,
-0x41, 0x14, 0xf0, 0x78, 0x72, 0x49, 0xfa, 0xba,
-0xd9, 0xe2, 0xab, 0x46, 0x3b, 0xcd, 0xd1, 0xf5,
-0xbb, 0x8b, 0xa6, 0xe4, 0x3d, 0x48, 0x2b, 0x03,
-0xea, 0x62, 0xf1, 0x65, 0xb2, 0x6b, 0xe3, 0x0d,
-0xa7, 0x85, 0xe5, 0x30, 0xe6, 0xd9, 0xce, 0x32,
-0x54, 0x64, 0xbe, 0xe8, 0xd4, 0x7f, 0x19, 0x23,
-0xa9, 0x99, 0x7d, 0xbe, 0x54, 0x71, 0x93, 0xbf,
-0x4d, 0x8f, 0x0c, 0xf9, 0xc2, 0xf8, 0x78, 0xd2,
-0xd0, 0x50, 0x41, 0x48, 0x5a, 0x48, 0x5e, 0x4a,
-0x96, 0x44, 0x83, 0x73, 0x24, 0xef, 0xc2, 0xb8,
-0x3f, 0x18, 0xf2, 0x15, 0x49, 0xbd, 0xfa, 0x87,
-0xc9, 0x59, 0x66, 0x93, 0x5f, 0x5a, 0x4b, 0xce,
-0x62, 0xd6, 0xa2, 0xd6, 0xe6, 0xe0, 0xaf, 0x14,
-0x19, 0x91, 0xaf, 0xe7, 0x6f, 0xb6, 0xff, 0x69,
-0x4c, 0x39, 0x5c, 0x89, 0x65, 0x5f, 0xdf, 0xd1,
-0xea, 0xfb, 0xf2, 0x87, 0x85, 0xa7, 0xc4, 0x4b,
-0x45, 0xf5, 0xe4, 0xe1, 0xb3, 0xd2, 0x45, 0x83,
-0x3d, 0xb9, 0xf8, 0x7c, 0xfd, 0x61, 0x71, 0x6d,
-0x9f, 0x2f, 0x56, 0xfc, 0x6d, 0xc3, 0xaa, 0x4f,
-0x71, 0xf0, 0xd7, 0xa0, 0x75, 0xea, 0xd8, 0x36,
-0x28, 0x1e, 0xd1, 0xc3, 0x27, 0xf3, 0x77, 0x34,
-0x56, 0x8a, 0xef, 0x7c, 0x31, 0x3c, 0x22, 0x3f,
-0xd3, 0x76, 0x46, 0x1f, 0x90, 0x67, 0xe9, 0x0b,
-0xf7, 0x35, 0xb2, 0x77, 0x38, 0x99, 0xcc, 0x28,
-0x82, 0xf5, 0x22, 0x73, 0x51, 0x92, 0xbf, 0x0a,
-0xc0, 0x6f, 0x69, 0x74, 0xf4, 0xbf, 0x36, 0x62,
-0xb4, 0x0b, 0x53, 0x5f, 0x4a, 0xc8, 0x2f, 0x62,
-0x37, 0xbf, 0x18, 0x98, 0x21, 0x7d, 0xdb, 0x68,
-0x53, 0x6e, 0x3a, 0xaa, 0xfc, 0x13, 0xbc, 0x76,
-0x4e, 0x90, 0x32, 0x12, 0xb8, 0x27, 0x0e, 0x3e,
-0x80, 0x5c, 0x49, 0xbc, 0xcd, 0x0d, 0x88, 0xc8,
-0x6e, 0x32, 0xd5, 0x58, 0xc3, 0x29, 0xf2, 0x00,
-0xe7, 0xd7, 0x72, 0xf4, 0xbf, 0x36, 0x90, 0xa7,
-0x39, 0xaa, 0x8d, 0x93, 0x47, 0x92, 0x53, 0xd3,
-0x81, 0xfb, 0xc4, 0x29, 0xda, 0xe3, 0x74, 0xea,
-0xa0, 0xc2, 0xe2, 0x5f, 0x1d, 0xba, 0x1e, 0x9d,
-0x93, 0x3b, 0x85, 0x3c, 0x43, 0xab, 0xf5, 0x6b,
-0x16, 0x03, 0xfe, 0xda, 0x91, 0x2c, 0x4b, 0xaa,
-0x38, 0xcf, 0xdf, 0x8d, 0x57, 0x22, 0xff, 0xa1,
-0x83, 0xbf, 0x7a, 0x01, 0xd3, 0x62, 0x88, 0xdf,
-0x53, 0xc6, 0xa4, 0xf7, 0x3a, 0x42, 0xe2, 0x42,
-0x94, 0xa1, 0xe7, 0x05, 0x14, 0x8f, 0xb4, 0xea,
-0x9a, 0x12, 0xca, 0x5d, 0x8b, 0x39, 0x1e, 0x7d,
-0xb3, 0x0b, 0xe1, 0x97, 0xef, 0x90, 0x2b, 0x36,
-0x2d, 0x88, 0x40, 0xd7, 0x7a, 0x1a, 0xbc, 0x43,
-0x2d, 0xcd, 0xe0, 0xaf, 0x1e, 0xe3, 0x72, 0xec,
-0xe6, 0xa4, 0x2f, 0xe9, 0xdf, 0x4d, 0x7e, 0x2d,
-0xcf, 0xa2, 0x81, 0xa4, 0x18, 0x80, 0xc7, 0x71,
-0x1a, 0x55, 0x10, 0x88, 0x1d, 0xa3, 0x35, 0xd4,
-0x8b, 0xa5, 0x61, 0xfb, 0x7b, 0xe7, 0x26, 0xf3,
-0xb7, 0x4b, 0x23, 0xf4, 0x3c, 0xf9, 0xda, 0x76,
-0xdf, 0x90, 0xf4, 0x0a, 0xfd, 0x51, 0xba, 0x3e,
-0xe1, 0x3b, 0x33, 0xc9, 0x8d, 0xbf, 0x94, 0xc8,
-0x55, 0x3e, 0xda, 0xb8, 0x05, 0x63, 0x5b, 0x48,
-0x32, 0x6f, 0x0a, 0x56, 0x22, 0x62, 0x5a, 0x38,
-0xd9, 0x5a, 0x5b, 0xea, 0xa3, 0x93, 0x00, 0x3b,
-0x4c, 0xb6, 0x98, 0xfa, 0x86, 0x8d, 0xfb, 0x34,
-0xdf, 0x03, 0xd2, 0x69, 0xff, 0x50, 0x05, 0xb4,
-0x3c, 0xb0, 0x2a, 0x0b, 0x7f, 0x85, 0x9b, 0x79,
-0xbd, 0x4c, 0x4e, 0x78, 0x99, 0x9a, 0xb8, 0x0e,
-0x7d, 0xd1, 0x70, 0xb4, 0x60, 0xa3, 0xd4, 0x47,
-0x7a, 0x85, 0x6e, 0x04, 0x62, 0xbf, 0x9b, 0x3c,
-0xda, 0x76, 0xff, 0xd2, 0xa3, 0x89, 0xf2, 0x0a,
-0x7a, 0x88, 0xcc, 0x9a, 0x77, 0x3c, 0x51, 0x33,
-0xcd, 0x0b, 0xfe, 0x7c, 0x6c, 0xdd, 0xa6, 0xeb,
-0x1c, 0xfe, 0xc3, 0xbf, 0xd5, 0xbb, 0x6e, 0xd7,
-0x0d, 0xe5, 0xd1, 0x9f, 0x4e, 0x25, 0xaf, 0x34,
-0x6f, 0xc5, 0x02, 0x25, 0x24, 0xa9, 0xf3, 0xb7,
-0xa8, 0x9b, 0x8a, 0xd0, 0x91, 0xf6, 0xdf, 0x83,
-0x44, 0x0a, 0x4c, 0x9a, 0xf9, 0x76, 0x4c, 0xfc,
-0x1b, 0x25, 0xfe, 0xbb, 0x16, 0x68, 0xc5, 0xcb,
-0xcc, 0xd5, 0xcd, 0x55, 0xff, 0xa4, 0x5e, 0xe3,
-0xf0, 0xcf, 0x0b, 0x55, 0xac, 0xda, 0x0b, 0x9c,
-0xed, 0x15, 0x79, 0x4f, 0x10, 0xdd, 0xb8, 0xa6,
-0x44, 0xac, 0xd0, 0x5b, 0xc9, 0x34, 0xe6, 0x90,
-0x0b, 0xab, 0xc9, 0xd2, 0x26, 0x35, 0x51, 0xb4,
-0xad, 0x62, 0xb7, 0x56, 0xb5, 0xf8, 0x76, 0x9b,
-0x22, 0x4f, 0x5d, 0x2f, 0x56, 0x08, 0xab, 0x8d,
-0x2a, 0x03, 0x9e, 0xdc, 0xf9, 0x19, 0xfc, 0xb5,
-0x9b, 0x6c, 0x9d, 0x77, 0xa3, 0x56, 0xe0, 0x6d,
-0xed, 0x0a, 0xe8, 0xb7, 0x3f, 0x5a, 0x44, 0x9b,
-0x92, 0x5b, 0x66, 0xa7, 0xbf, 0xa0, 0x16, 0xc5,
-0xfb, 0xd2, 0x5b, 0xf4, 0x58, 0x14, 0xab, 0xbd,
-0xb4, 0x2e, 0x2e, 0x2c, 0x85, 0xf9, 0xa2, 0x04,
-0xc3, 0xdc, 0x4d, 0x42, 0x2b, 0x4f, 0x44, 0x74,
-0xf1, 0x1f, 0xf6, 0x10, 0x3f, 0x5d, 0xbb, 0xaa,
-0x6d, 0x49, 0xf4, 0xed, 0x96, 0xf0, 0xe4, 0xfc,
-0x55, 0x93, 0xca, 0xfa, 0xfa, 0x97, 0xcc, 0x7c,
-0xd4, 0xb7, 0xaa, 0xfc, 0x74, 0x7b, 0x3f, 0xe9,
-0x26, 0x52, 0xbc, 0x2d, 0x2d, 0x8c, 0xc0, 0xbb,
-0xe3, 0x18, 0xcb, 0x48, 0x0c, 0xcc, 0x22, 0x8b,
-0x68, 0xb1, 0x2e, 0x30, 0xff, 0x39, 0x29, 0xfd,
-0xbd, 0x8d, 0xbf, 0xce, 0x71, 0x91, 0x94, 0x84,
-0xb4, 0xd3, 0x78, 0x05, 0x6e, 0xf5, 0xb5, 0x09,
-0x69, 0x9b, 0x32, 0xaa, 0x4f, 0x03, 0xd8, 0xd5,
-0x38, 0x48, 0x39, 0xc9, 0x46, 0x39, 0xe6, 0x16,
-0xce, 0x05, 0xfc, 0xa5, 0x02, 0x22, 0x13, 0xbf,
-0x83, 0x40, 0xec, 0x84, 0x78, 0x29, 0x07, 0x11,
-0x59, 0xe3, 0x4f, 0xec, 0xfa, 0x2f, 0xa6, 0xa8,
-0x02, 0x2d, 0x22, 0x86, 0xbd, 0xe6, 0x00, 0xb6,
-0x52, 0x51, 0x6d, 0x79, 0x87, 0xc1, 0x58, 0xeb,
-0x5f, 0x24, 0x7b, 0xf1, 0x18, 0xea, 0x5e, 0x78,
-0x8b, 0xce, 0x61, 0xa9, 0x89, 0xf2, 0x25, 0x79,
-0x8e, 0xb1, 0x88, 0x0d, 0x96, 0xea, 0x4d, 0x00,
-0x62, 0x6f, 0x4e, 0x80, 0xbf, 0x3a, 0xc8, 0x2c,
-0xe4, 0x3f, 0x24, 0x64, 0xc0, 0x8e, 0x88, 0x9d,
-0x04, 0xc3, 0x8b, 0xc6, 0x10, 0x11, 0xa9, 0x95,
-0x88, 0xe8, 0xc7, 0x10, 0xe4, 0x72, 0x1b, 0x9a,
-0x1d, 0xb3, 0xf5, 0x97, 0x5f, 0x60, 0xcc, 0x42,
-0x9d, 0x30, 0x99, 0x72, 0x2b, 0x17, 0x49, 0x91,
-0xad, 0xf8, 0x57, 0x43, 0x9f, 0xbc, 0x45, 0x0c,
-0x40, 0x4b, 0x43, 0x13, 0xac, 0x45, 0x60, 0x9e,
-0x05, 0xc4, 0x90, 0x88, 0xa3, 0x68, 0x50, 0xb0,
-0xa8, 0x39, 0x32, 0xf8, 0xcb, 0x70, 0x58, 0x56,
-0x3a, 0x85, 0x69, 0xe6, 0x35, 0x98, 0x65, 0xfa,
-0x28, 0xdc, 0x09, 0x6a, 0xc2, 0x8f, 0x8a, 0xde,
-0xfe, 0xa5, 0x79, 0x88, 0xbf, 0x9e, 0x98, 0xe7,
-0x6f, 0xda, 0x04, 0x37, 0x92, 0xb0, 0x9b, 0x4c,
-0x6f, 0x46, 0xfe, 0x0d, 0x31, 0x4f, 0xaf, 0x32,
-0x02, 0x9b, 0x1d, 0xfc, 0x55, 0x02, 0xb8, 0xe9,
-0xe8, 0xac, 0x7b, 0x11, 0x25, 0xc5, 0x31, 0x3e,
-0xb8, 0x90, 0x1f, 0x1a, 0x58, 0xd5, 0x70, 0x6f,
-0xa5, 0xef, 0x6b, 0xf1, 0x62, 0xa9, 0xe3, 0xd9,
-0x78, 0x6d, 0x8b, 0xfc, 0x28, 0xe3, 0x27, 0xa9,
-0xbd, 0x53, 0xdd, 0xd4, 0xf6, 0x0b, 0xe3, 0x90,
-0x5e, 0x17, 0xf5, 0x6e, 0xba, 0xc1, 0xc9, 0x3f,
-0xfc, 0x09, 0x19, 0x2d, 0x45, 0xce, 0xcf, 0x49,
-0x56, 0xda, 0x61, 0x42, 0xb5, 0x81, 0x58, 0xe3,
-0xa0, 0xf0, 0x92, 0xbe, 0xcf, 0x28, 0x60, 0x17,
-0xd4, 0x23, 0x4b, 0x31, 0xff, 0x50, 0x3f, 0x4b,
-0x66, 0xc5, 0xd6, 0x6d, 0x90, 0x96, 0x95, 0x60,
-0xb1, 0x98, 0x3b, 0xfe, 0x95, 0xd4, 0x47, 0xb4,
-0x48, 0x91, 0x8f, 0xb6, 0x95, 0x51, 0x78, 0x57,
-0xc8, 0xd5, 0x71, 0xc9, 0x28, 0xeb, 0x27, 0x1f,
-0x61, 0xc0, 0xda, 0x14, 0xfb, 0x8d, 0x6e, 0x8d,
-0xeb, 0x2f, 0xeb, 0xb0, 0x9f, 0xf2, 0x88, 0xf3,
-0x2c, 0x2d, 0xa3, 0x25, 0xe1, 0xaa, 0xff, 0xba,
-0xa5, 0x74, 0x3f, 0xad, 0x4e, 0xa8, 0x67, 0xc4,
-0x5a, 0xf9, 0x61, 0xe3, 0xb3, 0x54, 0x79, 0x5d,
-0xbc, 0x05, 0xb0, 0x55, 0x79, 0x62, 0x41, 0xb2,
-0x01, 0xd5, 0xbe, 0xca, 0x9f, 0x9a, 0x9b, 0x24,
-0xb3, 0x63, 0x0f, 0x2b, 0x37, 0xa6, 0xd4, 0xa4,
-0xd0, 0x43, 0x5e, 0x8d, 0x96, 0x3f, 0xd1, 0x99,
-0x2e, 0x1a, 0x25, 0xfb, 0xcd, 0xea, 0x4d, 0x6a,
-0x3a, 0xee, 0xc4, 0xbf, 0x6e, 0x43, 0x9f, 0xad,
-0x45, 0xcd, 0x17, 0xfd, 0x24, 0x69, 0xe8, 0x07,
-0xd5, 0x3a, 0x71, 0x11, 0x79, 0x92, 0x9d, 0x1f,
-0x5e, 0x7d, 0x94, 0x48, 0x24, 0x19, 0x03, 0xbf,
-0xae, 0x80, 0x6c, 0xe5, 0xac, 0x41, 0xfd, 0xa4,
-0x4b, 0xaf, 0x48, 0xaa, 0x33, 0xe3, 0xbd, 0xad,
-0x5d, 0x27, 0x83, 0x43, 0x6a, 0x20, 0x83, 0xbf,
-0x34, 0x6d, 0x97, 0x00, 0xce, 0x7f, 0xa9, 0x28,
-0x90, 0x2d, 0xe4, 0x46, 0x33, 0xaf, 0x45, 0xbc,
-0x8a, 0x3c, 0x4e, 0xfe, 0x1a, 0x7c, 0x7e, 0xed,
-0x14, 0x13, 0x96, 0xca, 0x5b, 0x29, 0x4e, 0x86,
-0x96, 0x1b, 0x25, 0xb5, 0x85, 0xec, 0x10, 0x9f,
-0x21, 0x53, 0xcd, 0xce, 0x98, 0x78, 0x6a, 0xea,
-0xd3, 0xa4, 0xb2, 0x17, 0x5a, 0x9c, 0xfa, 0xaf,
-0x22, 0xa6, 0xa4, 0xec, 0x8b, 0x4a, 0x45, 0xb0,
-0xf2, 0x35, 0xe9, 0xea, 0x95, 0xc2, 0x57, 0xc5,
-0xc7, 0x07, 0xb0, 0xc8, 0x4b, 0x40, 0xfe, 0x8d,
-0xb2, 0x98, 0x32, 0x5b, 0x9a, 0x4c, 0xde, 0xa4,
-0x33, 0xf4, 0x75, 0x2b, 0x8b, 0x5f, 0x16, 0x87,
-0xb1, 0x58, 0x6c, 0xb9, 0xf0, 0xaa, 0x25, 0x0d,
-0x26, 0x38, 0xf5, 0x5f, 0x49, 0x3c, 0x2e, 0x36,
-0xd8, 0xbb, 0xee, 0x24, 0x3a, 0xff, 0x21, 0x30,
-0x7e, 0xa3, 0xd7, 0x62, 0xb4, 0xeb, 0xdd, 0x8e,
-0x0b, 0xb9, 0x11, 0xb3, 0x3a, 0xa5, 0x1e, 0x25,
-0xff, 0xc6, 0x39, 0x3a, 0x4c, 0xf1, 0xd7, 0x64,
-0x8f, 0xad, 0x84, 0xc2, 0x72, 0xe3, 0x9d, 0xfa,
-0xaf, 0x57, 0x8d, 0xdf, 0x25, 0x6a, 0x96, 0xf9,
-0x0e, 0x49, 0xcf, 0x80, 0xa3, 0xc8, 0xb4, 0x95,
-0x79, 0xee, 0x93, 0x77, 0xe4, 0x4b, 0xf5, 0xfa,
-0xf1, 0xc4, 0x1c, 0xbd, 0x60, 0xa4, 0x31, 0x22,
-0xff, 0x61, 0x6b, 0x4d, 0x45, 0xce, 0xa8, 0x30,
-0x40, 0x8e, 0xc5, 0xe7, 0x24, 0xd7, 0x0e, 0x91,
-0xcb, 0x4d, 0x97, 0x5a, 0x11, 0x7f, 0x15, 0x0f,
-0x64, 0xea, 0xbf, 0x5a, 0x69, 0xd9, 0x7c, 0xac,
-0x3b, 0xa6, 0xcf, 0x12, 0xfd, 0x8c, 0x72, 0xa7,
-0x74, 0x97, 0x88, 0x65, 0x56, 0xf9, 0x2d, 0xd2,
-0xfd, 0x64, 0x55, 0xb8, 0x4c, 0x09, 0x30, 0xba,
-0x8c, 0x9e, 0x40, 0x1d, 0xa0, 0xa4, 0x81, 0xe8,
-0x2f, 0x49, 0xd9, 0x88, 0x27, 0xc6, 0x91, 0x54,
-0x9f, 0x1b, 0x7f, 0x6d, 0x6c, 0xda, 0x15, 0x5b,
-0x42, 0xae, 0x33, 0xc4, 0x04, 0x7d, 0x9a, 0x4c,
-0xed, 0x57, 0xee, 0x66, 0x67, 0x8c, 0x3a, 0x66,
-0xa6, 0xdd, 0x45, 0xbf, 0x47, 0xfe, 0xce, 0x98,
-0x8e, 0xd7, 0x39, 0x10, 0xfe, 0x6b, 0x4f, 0x5e,
-0x4b, 0xee, 0x80, 0xf1, 0x20, 0xf9, 0x6c, 0x7f,
-0x29, 0x5e, 0xe7, 0xbb, 0x0a, 0xcb, 0x51, 0x3c,
-0x68, 0xc7, 0xbf, 0x7a, 0xc9, 0xfa, 0xab, 0x74,
-0x7c, 0xba, 0x45, 0xd2, 0x25, 0x54, 0xa0, 0x60,
-0xc4, 0x72, 0x0c, 0x80, 0x12, 0xa6, 0x5b, 0xfa,
-0x48, 0x54, 0xc7, 0xc2, 0x22, 0xaf, 0xb0, 0xc3,
-0x58, 0x21, 0x74, 0xce, 0xf0, 0x3f, 0x17, 0xdb,
-0x00, 0x5f, 0xf5, 0x5a, 0x82, 0xd4, 0x88, 0x34,
-0x98, 0x86, 0x9b, 0xc4, 0xc1, 0x5f, 0x49, 0xf9,
-0x42, 0x5f, 0x28, 0xb6, 0x2e, 0x29, 0x3d, 0x19,
-0x3a, 0x4f, 0x9e, 0x31, 0xd7, 0xa2, 0x1b, 0x76,
-0x5c, 0x62, 0x0c, 0xe7, 0xdf, 0x26, 0xbf, 0x11,
-0x6a, 0x07, 0x0a, 0x58, 0xfe, 0xe1, 0xc0, 0x2c,
-0x2d, 0xbf, 0x47, 0x7a, 0x83, 0x1c, 0x26, 0xb3,
-0xa3, 0xde, 0x6d, 0xd2, 0x7b, 0xfa, 0xe8, 0x40,
-0xdd, 0x2f, 0x7d, 0xbb, 0x27, 0xbd, 0xc7, 0x7f,
-0xd7, 0x46, 0xb2, 0x85, 0xbe, 0x23, 0x32, 0x90,
-0x35, 0xa4, 0x9c, 0x27, 0xb5, 0x03, 0x55, 0x3b,
-0xa5, 0x77, 0x45, 0x2b, 0x70, 0xc9, 0x68, 0x2a,
-0xa3, 0xd5, 0xa9, 0xeb, 0xde, 0x25, 0x17, 0x8c,
-0xda, 0x06, 0x96, 0x91, 0xf8, 0x01, 0x22, 0xb2,
-0x6d, 0x6d, 0xef, 0xf2, 0x67, 0x70, 0x67, 0x26,
-0xff, 0x70, 0x98, 0x5c, 0xc9, 0xad, 0x3f, 0xe8,
-0x4d, 0x09, 0x75, 0xfa, 0x65, 0x32, 0x17, 0x1e,
-0x31, 0xa9, 0x4e, 0xfe, 0x05, 0xaa, 0x7d, 0x35,
-0x4b, 0x75, 0xe4, 0x39, 0x32, 0x6b, 0x3b, 0xc0,
-0xae, 0x91, 0xd6, 0xef, 0x90, 0xeb, 0x43, 0x60,
-0x0c, 0x90, 0xc3, 0xfa, 0xcd, 0xa6, 0x37, 0x0d,
-0x08, 0xfa, 0x3b, 0xa4, 0xbe, 0xcf, 0x3b, 0x2c,
-0x38, 0xfa, 0x5f, 0xe5, 0xe0, 0x1b, 0x57, 0xa5,
-0x4b, 0xf7, 0x8b, 0x9f, 0x25, 0x3d, 0x7d, 0x55,
-0x03, 0x9e, 0x7f, 0x15, 0x9f, 0x38, 0x78, 0x44,
-0xae, 0xc5, 0xdd, 0xe1, 0x29, 0xa5, 0x93, 0x04,
-0x06, 0xf2, 0xb1, 0x74, 0xe5, 0x07, 0x1d, 0x41,
-0x1d, 0x1c, 0xe9, 0xdf, 0xc2, 0x75, 0xfc, 0xe9,
-0xfc, 0xa7, 0xe2, 0xef, 0xc6, 0xf6, 0x9a, 0x55,
-0x27, 0x95, 0x90, 0xdf, 0xd1, 0xff, 0x9a, 0x56,
-0x06, 0xd8, 0x6a, 0x69, 0x74, 0xbb, 0xff, 0xe7,
-0x64, 0x4f, 0xbc, 0x8a, 0x7a, 0xb0, 0xce, 0xe5,
-0x07, 0x18, 0x93, 0xea, 0x62, 0x15, 0x97, 0xd3,
-0xe2, 0xd1, 0x54, 0xc3, 0x60, 0x19, 0xf8, 0xea,
-0x14, 0x80, 0xd8, 0xeb, 0xfa, 0xf7, 0x31, 0x23,
-0x71, 0x3b, 0x96, 0x86, 0x75, 0x54, 0x99, 0xd1,
-0xae, 0x0d, 0x8e, 0xfe, 0x97, 0xac, 0x74, 0x2d,
-0x81, 0x37, 0xa4, 0x3f, 0x4e, 0x69, 0xb7, 0xb8,
-0x62, 0x8d, 0x27, 0x24, 0x76, 0xc0, 0xfd, 0x83,
-0x65, 0x5f, 0xb9, 0x6b, 0x93, 0x60, 0x90, 0xbc,
-0x99, 0xe0, 0x5d, 0x74, 0xe9, 0x2b, 0xbc, 0xd0,
-0x65, 0x8a, 0x71, 0x2d, 0xd8, 0x9f, 0xa7, 0x63,
-0xa4, 0x86, 0xac, 0x40, 0x9f, 0xc4, 0xd1, 0xff,
-0x5a, 0x46, 0xce, 0x2f, 0x89, 0x18, 0x01, 0xea,
-0x79, 0xaa, 0xe3, 0x3c, 0xa9, 0xeb, 0x78, 0x38,
-0x29, 0x29, 0xe4, 0x7b, 0x46, 0x38, 0x01, 0x1b,
-0x74, 0x1d, 0x3d, 0xd2, 0x8c, 0x94, 0xe0, 0x8d,
-0x67, 0xe4, 0xbd, 0x01, 0x16, 0xc8, 0x48, 0x93,
-0x5f, 0x1b, 0x91, 0xc3, 0x4a, 0xd2, 0x02, 0x6b,
-0xc1, 0x54, 0x5e, 0x52, 0x22, 0x1c, 0x7f, 0x9d,
-0x23, 0x23, 0x06, 0xec, 0x3b, 0xb4, 0x38, 0x66,
-0x5c, 0x24, 0x11, 0x0f, 0x86, 0x48, 0xb4, 0x2b,
-0xde, 0x7a, 0x0f, 0xec, 0x3b, 0xe0, 0xd8, 0xeb,
-0xbb, 0x0c, 0x26, 0x9b, 0xfb, 0x1b, 0x21, 0x52,
-0xca, 0x52, 0x13, 0x2f, 0x93, 0x10, 0xcf, 0x48,
-0xbc, 0xcc, 0xb0, 0x70, 0xe3, 0xf2, 0x49, 0xae,
-0xf8, 0xd7, 0xb8, 0xf3, 0x0d, 0x5a, 0xcf, 0x45,
-0xcc, 0x8f, 0x92, 0x9b, 0xd3, 0xb0, 0x4c, 0x11,
-0xf2, 0xae, 0x58, 0x6d, 0x7a, 0x4d, 0xa4, 0xbe,
-0xc1, 0xc2, 0xbd, 0x11, 0x69, 0x26, 0xec, 0x7a,
-0x37, 0x8f, 0xad, 0xff, 0xb2, 0xc2, 0x5e, 0xcc,
-0x90, 0x7a, 0xac, 0x6a, 0x2f, 0xa5, 0xc7, 0x7f,
-0x86, 0x6c, 0xa7, 0xfe, 0xde, 0xa8, 0xc5, 0xfc,
-0x9f, 0x86, 0x5d, 0xc6, 0x0f, 0x1b, 0x3d, 0x13,
-0x0b, 0xd3, 0xb1, 0x94, 0x98, 0xe5, 0x1f, 0xba,
-0xea, 0xbf, 0x26, 0xc2, 0xb9, 0x58, 0x00, 0x68,
-0xe2, 0x46, 0x86, 0xe5, 0x24, 0x5e, 0x99, 0xd7,
-0x7f, 0xc1, 0x8b, 0x71, 0x07, 0xd1, 0x93, 0x79,
-0x09, 0x76, 0x4e, 0xbb, 0x6d, 0x6c, 0xfd, 0xd7,
-0x04, 0xb8, 0x3b, 0xc8, 0xaa, 0xfc, 0x8c, 0x27,
-0x3a, 0xe0, 0x3a, 0x5c, 0x6e, 0xa0, 0xaa, 0x5f,
-0xf9, 0x71, 0x51, 0x90, 0xe0, 0xf7, 0xc9, 0xeb,
-0x12, 0xfd, 0x72, 0x0f, 0x61, 0x42, 0x60, 0x36,
-0xde, 0xc9, 0x8a, 0x7f, 0xd9, 0xac, 0x2f, 0x96,
-0x0a, 0x39, 0xec, 0x0e, 0x26, 0x3c, 0x68, 0x3b,
-0x3b, 0x83, 0x64, 0xc8, 0x8c, 0xd0, 0x60, 0xbb,
-0xaa, 0xcb, 0x17, 0x68, 0x77, 0xba, 0x72, 0xa6,
-0x54, 0x5d, 0x31, 0xca, 0x39, 0x70, 0xb2, 0xf9,
-0x0f, 0xc7, 0x9f, 0x4b, 0x70, 0x63, 0x18, 0x8d,
-0x3a, 0xe9, 0xa2, 0x70, 0x09, 0x09, 0x85, 0x9a,
-0xdb, 0xce, 0x92, 0x4b, 0x46, 0xfd, 0x20, 0x20,
-0xdf, 0x21, 0x72, 0xc5, 0x98, 0xf3, 0xc7, 0xe2,
-0x5f, 0xd7, 0x73, 0xe3, 0x7e, 0x8e, 0x14, 0xfa,
-0x9b, 0x01, 0x6d, 0xb5, 0xab, 0x4f, 0x91, 0x51,
-0x23, 0x85, 0x8e, 0x6b, 0x50, 0x3e, 0x42, 0xba,
-0xe3, 0x70, 0x23, 0x55, 0x92, 0x5e, 0xd2, 0xed,
-0x8a, 0x7f, 0x9d, 0xfc, 0xb8, 0x73, 0x89, 0x53,
-0x81, 0x94, 0xf8, 0xae, 0x01, 0x1e, 0xe3, 0x29,
-0x25, 0x51, 0xbc, 0x02, 0x57, 0xc7, 0x54, 0x90,
-0x78, 0x79, 0x75, 0x8b, 0x1f, 0xc5, 0xc2, 0x02,
-0x64, 0x35, 0xf5, 0xbb, 0xea, 0xbf, 0x26, 0x8e,
-0x7f, 0x59, 0xc6, 0x19, 0x81, 0xb2, 0x3a, 0x56,
-0xcf, 0x5a, 0x54, 0x11, 0x42, 0xef, 0x82, 0xc0,
-0x0a, 0x6e, 0xc5, 0x20, 0xb2, 0x8c, 0xbc, 0xd6,
-0x66, 0xa6, 0xfe, 0x2b, 0x39, 0x61, 0xfc, 0x0b,
-0xab, 0xbd, 0x30, 0x1c, 0x23, 0x6c, 0x4c, 0x30,
-0x3a, 0xf4, 0xaf, 0x02, 0x76, 0x48, 0xc6, 0x94,
-0xc5, 0xf1, 0x30, 0x79, 0x00, 0x77, 0xa2, 0x21,
-0xf1, 0x6a, 0x9e, 0xa4, 0xb1, 0x52, 0xec, 0x77,
-0xeb, 0x7f, 0xb9, 0xe2, 0x5f, 0x2a, 0x33, 0x84,
-0xa0, 0x59, 0x8d, 0x15, 0x61, 0xbd, 0x5a, 0xc8,
-0xf4, 0x86, 0xca, 0xd7, 0xc2, 0xfc, 0x84, 0xcc,
-0x20, 0x0a, 0x7d, 0xe2, 0xb4, 0x78, 0x35, 0x49,
-0x96, 0x7b, 0x95, 0xd4, 0xf8, 0xfa, 0xaf, 0x8f,
-0x5b, 0xaf, 0x2b, 0x9a, 0x25, 0x7d, 0x7e, 0x09,
-0x65, 0xbf, 0x4c, 0xe9, 0x14, 0x37, 0x5a, 0x98,
-0x8a, 0x35, 0xcf, 0x3f, 0x74, 0xeb, 0x7f, 0x8d,
-0x65, 0xfd, 0x75, 0x0c, 0x0c, 0x84, 0x79, 0x91,
-0x66, 0x67, 0x14, 0x89, 0x26, 0x12, 0xe0, 0x78,
-0x30, 0x23, 0xc5, 0x42, 0x2d, 0x61, 0x9e, 0x7f,
-0xe8, 0xd4, 0x7f, 0x4d, 0x74, 0x7e, 0x58, 0xcd,
-0x88, 0x38, 0x72, 0x76, 0x72, 0x46, 0x8e, 0xcd,
-0xe4, 0x59, 0x9e, 0x00, 0xaf, 0x91, 0xa7, 0x71,
-0xe6, 0x31, 0x37, 0xde, 0x22, 0xa2, 0xcf, 0xd4,
-0x7f, 0x69, 0x13, 0xce, 0x33, 0x07, 0xbc, 0x5d,
-0x00, 0xcd, 0x18, 0xbd, 0xe4, 0xd3, 0xb4, 0x3c,
-0xa9, 0x2c, 0x17, 0xef, 0x00, 0x83, 0xcd, 0xfc,
-0x0b, 0x38, 0xe1, 0x69, 0x77, 0xfe, 0xe1, 0x04,
-0xcf, 0x29, 0xf2, 0xae, 0xa0, 0x72, 0xdf, 0x31,
-0x56, 0xad, 0x1c, 0xc0, 0x14, 0xe2, 0xdd, 0x0d,
-0xfa, 0x29, 0xa5, 0x4c, 0x6c, 0x40, 0xa1, 0xa2,
-0x3e, 0x25, 0x54, 0xf4, 0x9c, 0xdc, 0x1a, 0x4b,
-0xe2, 0x60, 0x57, 0xfd, 0xd7, 0xf8, 0xf8, 0x17,
-0x1a, 0x05, 0xc9, 0xe2, 0x51, 0xfd, 0x72, 0xf3,
-0x33, 0xd4, 0x3b, 0x88, 0x6c, 0x87, 0xc9, 0xc7,
-0x52, 0x81, 0x21, 0xe9, 0x3e, 0x7a, 0x3e, 0xb9,
-0x23, 0x19, 0x4c, 0x4b, 0xe7, 0xc9, 0x31, 0x33,
-0x4c, 0xd7, 0x65, 0xd7, 0x7f, 0x4d, 0x14, 0x97,
-0x21, 0xd5, 0x14, 0x89, 0x10, 0x8d, 0x5a, 0xa6,
-0x2b, 0x04, 0xef, 0xcc, 0x3a, 0x54, 0x1a, 0xda,
-0xea, 0x8c, 0x69, 0x60, 0x8a, 0x0f, 0x63, 0xea,
-0xbf, 0x26, 0x88, 0x7f, 0x21, 0x5f, 0xc1, 0x9b,
-0xe4, 0x90, 0x51, 0x60, 0x04, 0x35, 0xa4, 0xf2,
-0x56, 0xc2, 0x86, 0x77, 0x33, 0x17, 0x4e, 0x02,
-0xc7, 0xbe, 0x8d, 0xf3, 0xcf, 0x8f, 0xab, 0xff,
-0x1a, 0x1f, 0xff, 0x32, 0x02, 0x09, 0xff, 0xf3,
-0x74, 0x75, 0x03, 0x8b, 0x7f, 0x31, 0xfd, 0x26,
-0x43, 0xf9, 0x3e, 0x1a, 0x89, 0xad, 0xd8, 0xf2,
-0x3b, 0xd2, 0x6a, 0xf8, 0x3f, 0x31, 0xfe, 0x85,
-0xc6, 0x8d, 0x09, 0xff, 0x19, 0x63, 0x35, 0x09,
-0x2e, 0x55, 0x38, 0x8f, 0x87, 0xdf, 0xe8, 0xb0,
-0x04, 0xc5, 0x0c, 0x25, 0xe5, 0x7f, 0xbe, 0x61,
-0x35, 0x80, 0xbe, 0x05, 0x89, 0x86, 0x63, 0x7f,
-0x34, 0xfe, 0xc5, 0xe2, 0x32, 0xc8, 0x36, 0xaf,
-0xaf, 0x68, 0x52, 0xb0, 0x10, 0xac, 0x4b, 0x83,
-0xe7, 0xb4, 0x70, 0x3e, 0x33, 0x96, 0x21, 0x40,
-0x68, 0x5f, 0xcd, 0xf3, 0x0f, 0xdd, 0xf5, 0x5f,
-0x13, 0xc6, 0xbf, 0xf2, 0x69, 0xf9, 0x69, 0xe3,
-0x30, 0xa9, 0xd3, 0x16, 0x52, 0x35, 0x49, 0xde,
-0x5e, 0x1e, 0xf6, 0x04, 0x73, 0xdb, 0x90, 0x5a,
-0xbc, 0x1b, 0xc5, 0xc2, 0x4e, 0x23, 0xff, 0xfc,
-0x27, 0xc6, 0xbf, 0x58, 0x61, 0x11, 0xa0, 0x24,
-0xf1, 0x59, 0x54, 0xe8, 0x60, 0xfa, 0x5f, 0x65,
-0xcf, 0xce, 0xf3, 0xbd, 0x8c, 0xb8, 0x49, 0xaf,
-0x8f, 0x56, 0x0f, 0xb0, 0x1c, 0xc5, 0xfd, 0xae,
-0xfa, 0xaf, 0x8f, 0x8f, 0x7f, 0x15, 0x58, 0xcc,
-0x8a, 0x08, 0xbb, 0xb6, 0x09, 0x97, 0x00, 0x26,
-0xab, 0x03, 0x6a, 0x05, 0x17, 0x0b, 0x4b, 0xf1,
-0x1c, 0xc5, 0x4f, 0x8c, 0x7f, 0xf5, 0xf0, 0xf8,
-0xd7, 0x10, 0x18, 0x41, 0x4e, 0xcd, 0x61, 0xe5,
-0x28, 0x72, 0x03, 0x5a, 0x4c, 0x91, 0x72, 0x46,
-0xc4, 0xec, 0xfa, 0xaf, 0xf1, 0xf3, 0x6c, 0x78,
-0x18, 0xff, 0x06, 0x96, 0x9c, 0x30, 0x6a, 0x7a,
-0x5a, 0x61, 0xa8, 0xac, 0xfe, 0x8b, 0x63, 0xb4,
-0x17, 0xec, 0x1c, 0x45, 0x57, 0xfd, 0xd7, 0xc7,
-0xdd, 0x3f, 0x58, 0x09, 0xa8, 0x7b, 0x0d, 0x85,
-0x49, 0x1b, 0x88, 0x7e, 0x43, 0xb2, 0x78, 0x2f,
-0x6f, 0x57, 0x12, 0x0f, 0xf6, 0x89, 0xab, 0x89,
-0x7f, 0x6c, 0xfd, 0x57, 0x66, 0x5a, 0x5c, 0x22,
-0xcb, 0x55, 0x28, 0x6c, 0x37, 0x6a, 0x4c, 0x31,
-0x82, 0x1b, 0xdb, 0xe0, 0xdf, 0x12, 0x67, 0xc5,
-0x7c, 0xdf, 0x95, 0x2a, 0x62, 0xa3, 0xa4, 0xdb,
-0x08, 0x3e, 0x2a, 0xbd, 0x21, 0x1f, 0x4a, 0x86,
-0xc7, 0xd6, 0x7f, 0x4d, 0xb8, 0x5e, 0xee, 0x85,
-0x1b, 0x44, 0xf9, 0xb0, 0x26, 0xce, 0xd1, 0xc1,
-0xf3, 0x0f, 0xc1, 0xd8, 0xb4, 0x7f, 0x6c, 0xfd,
-0xd7, 0x44, 0xf7, 0x8f, 0xa2, 0xd2, 0xe2, 0xd7,
-0xc5, 0x7e, 0x8a, 0x65, 0x5f, 0xc8, 0x48, 0xdf,
-0x5e, 0x4b, 0x82, 0x14, 0xf9, 0x33, 0xf5, 0x90,
-0xe2, 0x05, 0xfc, 0xa5, 0x19, 0xc6, 0xd6, 0x31,
-0xf5, 0x5f, 0x13, 0xc6, 0xbf, 0x30, 0xec, 0x75,
-0x9e, 0x3e, 0xac, 0x54, 0x73, 0x22, 0x7a, 0xcc,
-0x36, 0x54, 0x06, 0xe3, 0x58, 0x2c, 0xc6, 0xc4,
-0xc2, 0x46, 0x1a, 0x1e, 0x36, 0xfc, 0x63, 0xeb,
-0xbf, 0x26, 0x8a, 0x7f, 0xa5, 0x9c, 0x38, 0x48,
-0x20, 0xc4, 0x68, 0x7b, 0xc1, 0xd3, 0x93, 0xc1,
-0xf1, 0xd8, 0x1b, 0xd7, 0x65, 0x3c, 0x62, 0x32,
-0xda, 0x38, 0xd7, 0xeb, 0x27, 0xc5, 0xbf, 0x1a,
-0x50, 0x6d, 0x19, 0x83, 0x2f, 0x08, 0x10, 0x26,
-0x63, 0xc6, 0x42, 0xda, 0x63, 0xb0, 0x42, 0x5d,
-0x2c, 0xe6, 0xf5, 0x9f, 0x14, 0xad, 0xf7, 0x73,
-0xfa, 0x8f, 0xc7, 0xbf, 0x5c, 0xfc, 0x87, 0x0b,
-0x57, 0xaa, 0x53, 0x48, 0x0b, 0x9d, 0x9d, 0x2e,
-0x08, 0x48, 0x53, 0xb0, 0x02, 0x8b, 0x85, 0xc6,
-0xe4, 0x5f, 0xf0, 0xfc, 0xc3, 0xf1, 0xf5, 0x5f,
-0xd9, 0x1b, 0xd0, 0xbc, 0xec, 0x16, 0x3c, 0x1b,
-0xcc, 0x67, 0xfa, 0x5f, 0xe2, 0x7e, 0x83, 0x53,
-0x3d, 0xfc, 0x67, 0xe2, 0x5f, 0xb4, 0x3e, 0x96,
-0x6f, 0x8b, 0x7c, 0x61, 0x35, 0x8a, 0x8c, 0xd0,
-0xcc, 0x77, 0x52, 0xba, 0xac, 0x41, 0x8b, 0x1e,
-0x1c, 0x21, 0x97, 0xfb, 0x3f, 0x97, 0xa8, 0x19,
-0x5f, 0xff, 0x35, 0x7e, 0x7e, 0x9a, 0x60, 0x93,
-0xc2, 0x68, 0x20, 0x23, 0x39, 0x9c, 0x4c, 0xf6,
-0xe1, 0x6c, 0x34, 0x43, 0xd7, 0xd3, 0xde, 0x32,
-0x05, 0xb7, 0xb6, 0x86, 0x07, 0x67, 0x97, 0xb9,
-0xea, 0xbf, 0x3e, 0x26, 0xfe, 0x45, 0x2a, 0x8d,
-0x1b, 0xe1, 0x3a, 0x3a, 0xcb, 0x36, 0xc4, 0x3a,
-0xe8, 0x9d, 0xd6, 0x75, 0xa0, 0x45, 0xc7, 0xcc,
-0x90, 0x13, 0xed, 0x0f, 0xf0, 0x79, 0xfe, 0xe3,
-0xf1, 0x2f, 0xf2, 0x05, 0x43, 0x09, 0x11, 0xd8,
-0xbf, 0x1a, 0x58, 0x71, 0x84, 0x97, 0x74, 0x29,
-0x80, 0xc4, 0x91, 0x5e, 0xa0, 0x8b, 0xfa, 0x9b,
-0x03, 0x33, 0x30, 0x81, 0xc7, 0xe4, 0xfc, 0x87,
-0xae, 0xfa, 0x2f, 0x5e, 0xe9, 0x7f, 0x26, 0x63,
-0x80, 0x1f, 0x45, 0x2b, 0x53, 0xd2, 0x31, 0x72,
-0x41, 0x63, 0x4e, 0x60, 0x10, 0xa9, 0x9c, 0xfa,
-0x7c, 0x0f, 0x60, 0x6d, 0x17, 0xed, 0x26, 0xac,
-0x46, 0xec, 0x08, 0x27, 0xa6, 0xfe, 0xe3, 0xf1,
-0x2f, 0xc1, 0xae, 0x08, 0xa3, 0xb0, 0x7f, 0xa5,
-0xda, 0xce, 0x08, 0x67, 0xd1, 0xb7, 0xb1, 0xf4,
-0xda, 0x34, 0x04, 0x6b, 0x36, 0xb9, 0xca, 0x1f,
-0x8f, 0x7f, 0x09, 0xf5, 0x43, 0x8c, 0x20, 0xe2,
-0x39, 0x52, 0x33, 0x0c, 0x4e, 0x4e, 0x1d, 0xb9,
-0x22, 0xce, 0x41, 0xd8, 0x55, 0xa7, 0x1f, 0xd7,
-0x6b, 0x1a, 0xbc, 0xc3, 0x6d, 0xc7, 0xf5, 0xe3,
-0x1d, 0x35, 0x63, 0xea, 0xbf, 0x26, 0xf4, 0x0f,
-0x91, 0x49, 0xfe, 0x1d, 0xd2, 0x69, 0xa2, 0x4a,
-0x97, 0xb4, 0x82, 0x73, 0xb8, 0xad, 0x46, 0x0e,
-0xae, 0xf4, 0xd6, 0x16, 0x4b, 0xf3, 0x97, 0x09,
-0x78, 0xb9, 0xeb, 0xbf, 0x26, 0xba, 0x0e, 0x26,
-0xd2, 0xbf, 0x29, 0x74, 0x9a, 0x36, 0xab, 0x36,
-0x9d, 0x6e, 0x32, 0xae, 0x8f, 0x4e, 0xc2, 0xe8,
-0xc7, 0xcf, 0x88, 0x6d, 0x31, 0xff, 0x98, 0xfa,
-0xaf, 0x89, 0xfd, 0x4c, 0x64, 0x44, 0x14, 0x5a,
-0xe1, 0xed, 0xa2, 0x22, 0x70, 0xee, 0xa2, 0xba,
-0x19, 0xc0, 0xb4, 0xba, 0xd5, 0xe0, 0xff, 0x60,
-0x44, 0x4c, 0x6e, 0x23, 0xcc, 0xdf, 0xb0, 0xea,
-0xbf, 0x26, 0x88, 0x7f, 0x31, 0x23, 0x68, 0xe4,
-0xf3, 0xf8, 0x57, 0xd8, 0xf4, 0xd9, 0x32, 0xac,
-0x18, 0xc8, 0x10, 0x7b, 0x39, 0xc7, 0x1d, 0x26,
-0x26, 0xb1, 0x2e, 0x57, 0xfd, 0xd7, 0xb8, 0x79,
-0x96, 0x9d, 0x8c, 0xa9, 0xcb, 0x59, 0x5d, 0x26,
-0x5f, 0x82, 0x09, 0xeb, 0xbf, 0x84, 0xcb, 0xe4,
-0x48, 0xfb, 0x9c, 0xb4, 0xaf, 0xa7, 0xf8, 0x7d,
-0xe2, 0x6b, 0x0d, 0xa5, 0x15, 0x7c, 0x9a, 0x5e,
-0x83, 0x07, 0xed, 0x33, 0x23, 0xd2, 0x7b, 0xf0,
-0x7c, 0xcd, 0xe0, 0x6c, 0x36, 0x4f, 0xd2, 0x70,
-0xaa, 0xa2, 0x5f, 0x88, 0x28, 0xf5, 0x74, 0x16,
-0x78, 0x48, 0xc5, 0x97, 0xc9, 0xc3, 0x98, 0xa3,
-0xd8, 0x9f, 0xd1, 0x5f, 0x7e, 0x1b, 0x67, 0xfe,
-0xb4, 0xc5, 0x36, 0x3f, 0x3d, 0xed, 0x49, 0xdd,
-0x51, 0x45, 0x9e, 0x24, 0x0e, 0x22, 0xdb, 0x0a,
-0x46, 0xe3, 0xcf, 0x48, 0x67, 0x7c, 0x26, 0x55,
-0x3a, 0xa4, 0xbf, 0x21, 0x7b, 0x5b, 0xab, 0x90,
-0xf6, 0xd0, 0x62, 0x4d, 0xec, 0x01, 0xbc, 0x6c,
-0xe5, 0x1f, 0xb6, 0x8b, 0x9d, 0x4c, 0x6a, 0xbc,
-0xe8, 0x8c, 0xd2, 0x89, 0x82, 0xce, 0xa1, 0xa2,
-0xa7, 0x84, 0x36, 0x86, 0xbf, 0x96, 0xda, 0xec,
-0x43, 0x45, 0x47, 0xf1, 0x84, 0xaa, 0x83, 0xf1,
-0x99, 0xaf, 0x67, 0x71, 0xc6, 0xf0, 0x99, 0xd2,
-0x56, 0xbe, 0x28, 0xb6, 0xfe, 0x72, 0x49, 0x52,
-0xef, 0xac, 0xb4, 0xab, 0xbd, 0x0a, 0xa7, 0xf7,
-0x7a, 0xba, 0xc5, 0xa7, 0xf4, 0x27, 0x95, 0xaa,
-0xfe, 0xeb, 0xba, 0x00, 0x7f, 0xed, 0x15, 0xc4,
-0x3e, 0xb5, 0xcb, 0x8f, 0x77, 0xcb, 0xb4, 0x2d,
-0x0a, 0xf5, 0xff, 0x0d, 0x6e, 0x6d, 0x49, 0x75,
-0x0b, 0xac, 0x7b, 0x9e, 0x59, 0x15, 0x5b, 0x90,
-0x12, 0x43, 0x76, 0xfe, 0xe1, 0x7b, 0xe4, 0x08,
-0xad, 0x3d, 0xe7, 0xdb, 0xf9, 0xc8, 0xbb, 0xd2,
-0x11, 0x33, 0xfc, 0xd2, 0xda, 0x9e, 0xb6, 0x9f,
-0x41, 0x4b, 0x64, 0x38, 0xaf, 0xe7, 0x91, 0xf7,
-0xf4, 0x0b, 0x7a, 0x78, 0x08, 0x15, 0x1f, 0x94,
-0xdf, 0xd2, 0x70, 0x77, 0x70, 0x9d, 0x70, 0x03,
-0xf9, 0x4d, 0x7a, 0x56, 0xd2, 0xf7, 0x53, 0xe1,
-0xb8, 0x01, 0x63, 0xd2, 0xbe, 0xb9, 0x19, 0xfd,
-0xe5, 0x67, 0x51, 0x1a, 0xde, 0x5c, 0x34, 0x2a,
-0x5d, 0x36, 0x60, 0x7a, 0x87, 0xd5, 0xe1, 0x9a,
-0x6f, 0xb7, 0xbf, 0xaf, 0xb3, 0x33, 0xa2, 0xcb,
-0xf2, 0x95, 0xcf, 0xb0, 0x37, 0xdb, 0x7e, 0x03,
-0x96, 0x89, 0xfa, 0xfa, 0xdb, 0xce, 0xe9, 0x57,
-0xe6, 0xd5, 0xd3, 0xeb, 0xd3, 0xc5, 0x17, 0xc9,
-0xff, 0x24, 0xf5, 0x0d, 0xbe, 0x61, 0x75, 0x44,
-0xb3, 0xf1, 0x17, 0xc6, 0x5c, 0x06, 0xae, 0x4f,
-0xb1, 0xea, 0xb3, 0xc8, 0x40, 0x70, 0x27, 0x0a,
-0x19, 0x18, 0xb3, 0x06, 0x0a, 0x18, 0x7b, 0x9e,
-0x18, 0x31, 0x3f, 0x8f, 0x94, 0x47, 0xbf, 0x31,
-0x18, 0x5b, 0xcb, 0x1b, 0xcd, 0xa3, 0x72, 0x18,
-0x25, 0xd4, 0x2b, 0x31, 0x9f, 0xc4, 0xf4, 0xed,
-0x2c, 0x77, 0xf3, 0x1f, 0x8a, 0x55, 0xe6, 0x75,
-0xa9, 0x22, 0xdc, 0x65, 0x6a, 0x01, 0x7d, 0xc0,
-0x64, 0xbe, 0x43, 0xfc, 0xbd, 0x12, 0xcc, 0x98,
-0x00, 0x1b, 0x90, 0x19, 0x4d, 0x35, 0xbc, 0x68,
-0xac, 0x06, 0x8f, 0xda, 0xab, 0x88, 0x6f, 0xa0,
-0xa3, 0xb8, 0x51, 0x5d, 0x23, 0x56, 0x1a, 0xab,
-0x07, 0xaa, 0x96, 0x2c, 0xd8, 0xe9, 0x71, 0xeb,
-0x2f, 0xdb, 0x8f, 0xc3, 0x63, 0x22, 0x06, 0x91,
-0x09, 0xa0, 0x63, 0xa1, 0xc2, 0x14, 0xad, 0x07,
-0xe4, 0x60, 0x5e, 0xc8, 0x7f, 0x5c, 0x6b, 0x13,
-0xfe, 0x9e, 0xe4, 0x11, 0x74, 0x45, 0x4a, 0x75,
-0xea, 0xd1, 0xe3, 0xeb, 0xc8, 0x96, 0xe6, 0x15,
-0x03, 0x0b, 0xea, 0xb6, 0xce, 0xb6, 0xf3, 0x0f,
-0xaf, 0x27, 0xbb, 0x36, 0x56, 0xa6, 0xff, 0xea,
-0x3e, 0xf1, 0xd5, 0x3b, 0x1f, 0x4f, 0x7e, 0x76,
-0x48, 0x59, 0x49, 0xa6, 0x90, 0x9f, 0xb7, 0x72,
-0x5e, 0xf4, 0x9c, 0x5d, 0x5b, 0xfe, 0x01, 0x50,
-0xc0, 0x1d, 0xaf, 0x5e, 0x3d, 0x89, 0x56, 0x06,
-0xa2, 0xd1, 0xf8, 0x2f, 0x11, 0x17, 0x6c, 0xed,
-0x1c, 0x12, 0xa7, 0xe8, 0x3f, 0x8e, 0x7f, 0x03,
-0xa3, 0x66, 0xa5, 0xae, 0xfc, 0xc3, 0xf5, 0x75,
-0xa7, 0xd4, 0xd9, 0xc5, 0xc7, 0xe2, 0xbf, 0x25,
-0x75, 0x69, 0x6f, 0x97, 0xe4, 0x35, 0x2e, 0xe8,
-0x33, 0xfb, 0x0b, 0x66, 0x34, 0x1e, 0x6b, 0xdd,
-0x71, 0x6d, 0x5d, 0x7f, 0xfe, 0x4d, 0xd2, 0x51,
-0xfd, 0x4b, 0xb4, 0x4e, 0x7f, 0x48, 0x40, 0x7a,
-0x2e, 0x2d, 0x94, 0xf4, 0x95, 0xab, 0x6b, 0x8d,
-0xd3, 0xa4, 0xae, 0xc1, 0x77, 0x53, 0x5b, 0x11,
-0x7f, 0x4c, 0x11, 0x7f, 0x5d, 0x50, 0x7c, 0x7d,
-0x93, 0x86, 0x85, 0x8b, 0xcd, 0xaf, 0x55, 0x55,
-0xf1, 0xe7, 0xeb, 0x82, 0x02, 0x73, 0x78, 0xf6,
-0xb9, 0x8b, 0xc6, 0x95, 0x59, 0xf5, 0x98, 0xf0,
-0x89, 0xd9, 0x86, 0x56, 0x7d, 0xe5, 0xef, 0xe5,
-0xeb, 0xa9, 0x6f, 0x89, 0x74, 0x4a, 0xfd, 0x0f,
-0xac, 0x4f, 0x69, 0x91, 0x06, 0xae, 0x66, 0xeb,
-0x85, 0xf8, 0xeb, 0x43, 0x00, 0x59, 0xeb, 0x90,
-0xce, 0xe8, 0x48, 0x6b, 0x68, 0x70, 0x2d, 0xe3,
-0x35, 0x12, 0xaa, 0xd2, 0x39, 0x29, 0xe9, 0x3d,
-0xe3, 0x82, 0x56, 0x6b, 0xae, 0x4b, 0x09, 0x47,
-0xe5, 0x27, 0x27, 0x45, 0x5a, 0x0b, 0x28, 0x78,
-0xf8, 0x79, 0xe0, 0xf2, 0x4d, 0x4a, 0x72, 0x97,
-0x86, 0x8c, 0xc9, 0x3f, 0xac, 0x28, 0x3b, 0xa9,
-0xb6, 0x68, 0x97, 0x12, 0x8f, 0xeb, 0x37, 0xf6,
-0x06, 0xee, 0x81, 0x6d, 0xeb, 0x80, 0x5c, 0x7e,
-0x92, 0xdc, 0xd3, 0x70, 0x4a, 0xf8, 0x05, 0x29,
-0xeb, 0x55, 0xef, 0x15, 0x4f, 0xd1, 0x1b, 0x50,
-0x77, 0xd2, 0x60, 0x72, 0x27, 0x95, 0x34, 0x0f,
-0xcf, 0xfd, 0x9e, 0x66, 0x39, 0x1e, 0xc4, 0xe1,
-0x3f, 0xfc, 0x91, 0x7e, 0x60, 0xcb, 0x96, 0xf4,
-0x82, 0xfb, 0xb4, 0x57, 0xdb, 0xd7, 0xd1, 0xb2,
-0xa1, 0x8e, 0x6f, 0x8b, 0xaf, 0xd1, 0x5d, 0xdb,
-0xca, 0xd3, 0xcb, 0xef, 0x13, 0x2f, 0x03, 0xa0,
-0xa9, 0x1c, 0x56, 0xbf, 0x2d, 0x5e, 0x31, 0x1e,
-0x6c, 0xab, 0x4c, 0x2d, 0x88, 0x16, 0x7d, 0xc0,
-0xc8, 0x12, 0x6f, 0x5b, 0x2e, 0xbe, 0xc6, 0xe3,
-0x5f, 0x2b, 0x0d, 0x87, 0xff, 0xf0, 0xb8, 0x82,
-0x0f, 0x63, 0x27, 0x52, 0x1a, 0x3e, 0xb6, 0x64,
-0xf9, 0x28, 0xd3, 0x49, 0xdf, 0x91, 0xd0, 0x07,
-0x4a, 0x67, 0xfa, 0x8f, 0x2a, 0x8f, 0x60, 0x71,
-0xdf, 0x6c, 0xf1, 0x45, 0xb2, 0x55, 0x09, 0x26,
-0xf3, 0x66, 0x8b, 0xa6, 0xde, 0xba, 0x2c, 0xf8,
-0x52, 0xde, 0x5c, 0x78, 0x8b, 0x75, 0xdd, 0x1e,
-0xbc, 0x43, 0xad, 0xcd, 0xc4, 0xbf, 0x76, 0x93,
-0xcb, 0x7a, 0x4d, 0x87, 0xef, 0xf5, 0xe2, 0x91,
-0x8e, 0x63, 0x7a, 0x0d, 0x5d, 0x3b, 0x04, 0xd8,
-0xea, 0x72, 0xeb, 0x8e, 0x4d, 0xde, 0xd7, 0xa5,
-0x0b, 0xe4, 0x85, 0x54, 0xfd, 0x4e, 0x1f, 0xa0,
-0x2d, 0xe3, 0x3d, 0x7d, 0x6e, 0xab, 0x2f, 0x26,
-0x8d, 0x74, 0xbc, 0x60, 0xd4, 0x77, 0x5f, 0x3f,
-0x28, 0x9d, 0x24, 0x97, 0xe7, 0xd5, 0x27, 0x7c,
-0x6f, 0x67, 0xe5, 0x1f, 0xea, 0x11, 0xc5, 0x17,
-0xe7, 0xee, 0x9c, 0x8c, 0x68, 0x4b, 0x1f, 0xf1,
-0x86, 0x89, 0x48, 0x1f, 0x4b, 0xc7, 0x86, 0xc4,
-0x5a, 0xc1, 0x47, 0x1f, 0xe7, 0x9e, 0xde, 0xc3,
-0x6d, 0xd2, 0x69, 0x71, 0x84, 0xdc, 0x4f, 0x3e,
-0x83, 0x45, 0x28, 0x16, 0x11, 0x47, 0x26, 0xfe,
-0xb5, 0x05, 0xb3, 0xa1, 0xd6, 0xb1, 0x92, 0x2e,
-0x31, 0x42, 0xae, 0x67, 0x06, 0x99, 0x25, 0xad,
-0xa3, 0x8d, 0xe9, 0xbc, 0x95, 0xf1, 0x22, 0x7d,
-0x1d, 0x15, 0x63, 0xb2, 0x85, 0xc8, 0x6e, 0x60,
-0xc2, 0xb5, 0xbe, 0x44, 0xdb, 0xa0, 0x7e, 0x68,
-0x63, 0x81, 0xe1, 0xdd, 0x44, 0x9c, 0xfc, 0xc3,
-0xbf, 0xa5, 0x3d, 0x64, 0x1a, 0x7a, 0xe6, 0x26,
-0xe9, 0x90, 0x59, 0xd9, 0x97, 0x49, 0xa8, 0x88,
-0x41, 0x93, 0xa2, 0x74, 0xce, 0x48, 0xf3, 0xac,
-0x0a, 0x15, 0x3c, 0x78, 0xf1, 0x10, 0xec, 0x44,
-0xdf, 0x48, 0x88, 0x53, 0xf5, 0xdd, 0xba, 0xbf,
-0x59, 0xdd, 0x80, 0x29, 0x85, 0x34, 0xb8, 0x44,
-0x59, 0x7f, 0xd0, 0x85, 0xbf, 0x6c, 0x16, 0x08,
-0x9e, 0x3a, 0x05, 0x7f, 0x4e, 0x3a, 0xc8, 0xdf,
-0xd0, 0x4e, 0x06, 0x10, 0x8c, 0xe9, 0x9a, 0x4a,
-0xa7, 0x0d, 0x91, 0x1f, 0x88, 0x28, 0x31, 0xe6,
-0x01, 0x47, 0x5a, 0xff, 0x7a, 0xbf, 0xba, 0xbe,
-0xe1, 0xfd, 0xd2, 0x47, 0x85, 0xaa, 0xc3, 0x63,
-0xf8, 0xe7, 0x31, 0x4e, 0xad, 0x5d, 0x3d, 0xd8,
-0xc0, 0x0a, 0x6c, 0x01, 0x76, 0x15, 0xad, 0x2e,
-0x41, 0x9f, 0x3f, 0xdc, 0xa7, 0x3d, 0xc1, 0x82,
-0x5c, 0xa4, 0x5d, 0x6c, 0x15, 0xab, 0x9a, 0xf2,
-0x36, 0x91, 0x76, 0x78, 0x1f, 0x6e, 0x37, 0x1b,
-0xb5, 0xa2, 0x41, 0xa5, 0x30, 0xc9, 0x32, 0x24,
-0xdd, 0xfc, 0xf3, 0x81, 0x88, 0xc7, 0x17, 0x6f,
-0x3b, 0x9d, 0xec, 0x07, 0x43, 0x5d, 0x15, 0x4f,
-0x27, 0xfb, 0x97, 0xcf, 0x52, 0xd5, 0x78, 0x5b,
-0x7a, 0x7b, 0x4f, 0xa0, 0x16, 0xbb, 0xd2, 0x3f,
-0x59, 0x2c, 0x44, 0xb4, 0x87, 0x00, 0xc3, 0xa3,
-0x9c, 0x10, 0xe3, 0x3f, 0x24, 0x27, 0xe5, 0x08,
-0xbc, 0xaa, 0xcb, 0xdf, 0xcb, 0xc4, 0xbf, 0xae,
-0x90, 0x3f, 0x33, 0x26, 0x01, 0xa4, 0x6a, 0xff,
-0x3d, 0xa0, 0x24, 0xd4, 0x35, 0x93, 0x2f, 0x4d,
-0xc3, 0x48, 0x56, 0xf1, 0x09, 0xf9, 0x0f, 0x48,
-0x24, 0x35, 0x20, 0xdd, 0x8b, 0xb5, 0xc9, 0x00,
-0xbb, 0xc4, 0x3b, 0xb5, 0x4b, 0xd0, 0xb2, 0x0e,
-0x06, 0x7b, 0xde, 0x47, 0xa2, 0xd1, 0x81, 0x1a,
-0x27, 0xff, 0xf0, 0x1c, 0x39, 0x44, 0x6b, 0x63,
-0x05, 0xdf, 0x97, 0xa6, 0x25, 0x0f, 0x25, 0xeb,
-0xd1, 0xe7, 0xff, 0x09, 0x99, 0x9b, 0x8c, 0x7c,
-0x7d, 0xd1, 0xb5, 0xd2, 0x47, 0x15, 0x2f, 0x82,
-0xa3, 0xf8, 0x85, 0xef, 0x17, 0x7d, 0x94, 0xfc,
-0x3b, 0x32, 0xd9, 0x20, 0xcd, 0x22, 0x22, 0xb2,
-0x4a, 0xfc, 0x27, 0x66, 0x92, 0x67, 0x79, 0x82,
-0x77, 0x86, 0xff, 0x50, 0xec, 0x20, 0x7e, 0xd9,
-0x48, 0x02, 0xa0, 0x0a, 0x94, 0x54, 0x69, 0x0b,
-0xe8, 0x97, 0x92, 0xc6, 0x26, 0x98, 0x79, 0x6f,
-0x2b, 0x92, 0xe2, 0x8a, 0x55, 0xb2, 0x82, 0xd1,
-0xae, 0xc3, 0x9c, 0x88, 0x7e, 0xc8, 0x5e, 0x94,
-0xa4, 0x6d, 0x38, 0xfc, 0x87, 0xb0, 0x82, 0x85,
-0xd3, 0x8d, 0xdb, 0xd7, 0x6b, 0x32, 0x69, 0x15,
-0x82, 0x4d, 0x0b, 0xd6, 0xe7, 0xca, 0xf2, 0xfa,
-0x42, 0x2f, 0x62, 0xab, 0x41, 0xd2, 0xa6, 0x05,
-0x63, 0x9e, 0xc2, 0x86, 0x41, 0x79, 0x8b, 0x60,
-0x53, 0x73, 0xe4, 0xe0, 0xcc, 0x63, 0x45, 0x33,
-0x07, 0x6b, 0x36, 0xff, 0x61, 0xe1, 0x36, 0x79,
-0xb5, 0xe6, 0xbf, 0x33, 0xba, 0xbe, 0x68, 0x9b,
-0xf0, 0x84, 0xf7, 0xef, 0x1b, 0x99, 0x6c, 0xdc,
-0xa3, 0xda, 0xb4, 0x5b, 0xaf, 0xd9, 0x48, 0x06,
-0xe5, 0x27, 0x84, 0xaa, 0x5b, 0x3d, 0x89, 0xad,
-0xcb, 0xc8, 0xa3, 0x24, 0xd8, 0x50, 0xca, 0xa0,
-0x99, 0x0e, 0x2f, 0xf3, 0x7f, 0x69, 0xf8, 0x31,
-0xaa, 0x15, 0x44, 0x17, 0x7c, 0x37, 0xc3, 0x7f,
-0xf8, 0x82, 0xd1, 0x6b, 0xcc, 0x36, 0x0a, 0x26,
-0x4b, 0x53, 0x63, 0x87, 0xb4, 0xc8, 0x32, 0xdf,
-0xa3, 0xd2, 0x8f, 0x3b, 0x5e, 0x49, 0x46, 0xee,
-0xf9, 0xdc, 0x66, 0x09, 0x6e, 0xda, 0x86, 0x88,
-0x51, 0xb0, 0x5e, 0xfa, 0x45, 0xde, 0x5b, 0x26,
-0x00, 0xb1, 0xef, 0x4b, 0x6f, 0x08, 0xa3, 0xd1,
-0xc8, 0x1d, 0xbe, 0x12, 0x24, 0xe2, 0x30, 0x23,
-0xcd, 0x8b, 0x36, 0xa9, 0x0e, 0xff, 0xe1, 0x4f,
-0x2c, 0x6e, 0x8d, 0x46, 0x07, 0x76, 0x6d, 0x5b,
-0xfb, 0xca, 0x03, 0x11, 0x98, 0xf9, 0x72, 0x64,
-0xb0, 0x8c, 0x2c, 0x85, 0xc7, 0xe1, 0x6f, 0xe6,
-0xbd, 0x85, 0xf2, 0xcd, 0x8f, 0x4a, 0x83, 0x32,
-0x1f, 0x5c, 0xfe, 0x3b, 0xcb, 0x70, 0xf1, 0x1f,
-0x92, 0x91, 0x79, 0xf7, 0x6b, 0x98, 0xa4, 0x9a,
-0xd3, 0xdf, 0x10, 0xd1, 0xd6, 0xb5, 0x4b, 0xa7,
-0x95, 0x11, 0x21, 0x4c, 0x00, 0x64, 0x95, 0xe5,
-0x8d, 0xe4, 0x45, 0xc8, 0x43, 0x48, 0xc4, 0xd1,
-0x6f, 0x44, 0xb4, 0xb5, 0xf4, 0x4b, 0x65, 0x21,
-0x94, 0x96, 0xf3, 0xb6, 0x36, 0xea, 0xa8, 0x25,
-0xa1, 0xf9, 0x1e, 0xfc, 0x5a, 0x46, 0xff, 0xcb,
-0xd8, 0xc3, 0xa2, 0xe4, 0x45, 0xe8, 0x82, 0x56,
-0xd1, 0x02, 0xfd, 0xcf, 0xb6, 0x7b, 0xf7, 0x08,
-0x7e, 0x9a, 0x93, 0x14, 0x15, 0x6d, 0xff, 0xad,
-0xb7, 0x74, 0x40, 0xd7, 0x88, 0xbc, 0x46, 0xa8,
-0xa2, 0xf9, 0x6f, 0x8b, 0x3d, 0x00, 0xc4, 0xaa,
-0xdb, 0xf3, 0xcf, 0x88, 0xb7, 0x90, 0xfd, 0x46,
-0xf5, 0x83, 0xea, 0x8a, 0x06, 0x97, 0xfe, 0xd7,
-0x0e, 0x79, 0x85, 0x19, 0x0d, 0x89, 0x67, 0xf2,
-0x76, 0x88, 0x8c, 0x1a, 0xe8, 0x28, 0x92, 0x8d,
-0xf7, 0x8a, 0x78, 0x7c, 0xb4, 0xc3, 0x08, 0x36,
-0x0b, 0xe0, 0x6c, 0x53, 0xe6, 0x81, 0xe8, 0xd3,
-0xe2, 0x5a, 0x2a, 0x19, 0x7c, 0x3e, 0x2f, 0x22,
-0xe6, 0x20, 0x4c, 0x35, 0xc0, 0x33, 0x77, 0xf0,
-0xd7, 0x67, 0x00, 0x05, 0xfc, 0x2d, 0x3b, 0x0d,
-0x7b, 0x80, 0x25, 0xbf, 0xdd, 0x2d, 0xc2, 0x1b,
-0x9b, 0x96, 0xe3, 0xde, 0x84, 0x90, 0xe1, 0xef,
-0x0c, 0xc2, 0x4f, 0xc3, 0xaa, 0xfb, 0xf2, 0x56,
-0x8a, 0xeb, 0xc9, 0x2e, 0xa3, 0xb2, 0x4c, 0x88,
-0x89, 0x25, 0xf2, 0x33, 0x5c, 0xa3, 0xd9, 0xc5,
-0x3f, 0x8f, 0xd4, 0x52, 0x48, 0x7b, 0x48, 0xbf,
-0x07, 0x68, 0xab, 0x00, 0x36, 0x44, 0xf2, 0x1d,
-0x70, 0xc3, 0x0a, 0x56, 0x36, 0x62, 0xea, 0xf8,
-0xdc, 0xd8, 0xad, 0x2b, 0x8b, 0x7f, 0x2d, 0xac,
-0xa2, 0x73, 0x87, 0xf2, 0x97, 0x4b, 0x1b, 0x34,
-0x80, 0x66, 0xfa, 0xe7, 0x57, 0xaa, 0x57, 0x7b,
-0x3f, 0x6a, 0x9f, 0x9b, 0xcd, 0x3f, 0x2f, 0x7f,
-0x8b, 0x54, 0x30, 0xf7, 0xd2, 0xf8, 0x81, 0x38,
-0xc5, 0x14, 0x53, 0x02, 0xba, 0x07, 0x41, 0x33,
-0x3f, 0xa5, 0xae, 0x20, 0x73, 0x64, 0x2c, 0xfb,
-0x2a, 0x36, 0x99, 0xc3, 0xc0, 0xe8, 0x9e, 0xbe,
-0x85, 0xaf, 0xc1, 0x90, 0x34, 0xa8, 0x70, 0x9f,
-0xbf, 0xdc, 0xe1, 0x9f, 0x7f, 0x95, 0xbc, 0x16,
-0x67, 0xce, 0xc9, 0x15, 0x4c, 0x29, 0x1c, 0xf4,
-0xe1, 0xdb, 0xf1, 0xca, 0xfa, 0x7a, 0x74, 0x0b,
-0x5f, 0x95, 0x7f, 0x13, 0x9f, 0x1b, 0x5b, 0x3b,
-0xda, 0x78, 0x12, 0xf5, 0xbf, 0x4e, 0x88, 0x43,
-0xe2, 0xb5, 0xcd, 0x47, 0x68, 0x75, 0xd0, 0x3b,
-0x22, 0x7c, 0x44, 0x2e, 0xa3, 0x34, 0xd8, 0x88,
-0x7d, 0xfe, 0x0c, 0xf8, 0xcb, 0x58, 0xb5, 0x31,
-0x9f, 0xc1, 0x25, 0xed, 0x71, 0x52, 0xf9, 0x2e,
-0xa2, 0x2d, 0x65, 0x17, 0xad, 0x1c, 0xca, 0xbb,
-0x5b, 0x3c, 0x55, 0xb4, 0x2a, 0x59, 0x69, 0xe4,
-0xdf, 0xb7, 0x61, 0x20, 0x0d, 0x5d, 0x83, 0xca,
-0x1d, 0x62, 0xc2, 0x58, 0xb5, 0xb5, 0x52, 0x66,
-0x44, 0x88, 0xcf, 0x68, 0x2c, 0xa5, 0xd0, 0x89,
-0x7f, 0xed, 0x23, 0xab, 0x4a, 0x2b, 0x5f, 0x50,
-0x5b, 0xe2, 0xa7, 0x74, 0x18, 0xdc, 0xd7, 0x79,
-0x16, 0xa7, 0x57, 0xf9, 0xc6, 0x61, 0x46, 0x26,
-0xf9, 0x80, 0x5e, 0x69, 0x28, 0x77, 0x8b, 0x27,
-0x8d, 0x55, 0x62, 0xe5, 0x8b, 0x6a, 0xac, 0xa1,
-0x44, 0x5e, 0x15, 0xab, 0x56, 0xf2, 0x90, 0xac,
-0xe3, 0x5f, 0xe6, 0x31, 0xb0, 0xd6, 0x67, 0xe3,
-0x2f, 0x93, 0xb4, 0x61, 0x24, 0x6b, 0x76, 0xee,
-0x31, 0xf2, 0x58, 0x3a, 0x38, 0xac, 0xd6, 0x89,
-0x3e, 0x8c, 0x6d, 0x0d, 0xff, 0xc5, 0x6c, 0xf1,
-0x38, 0x0a, 0xa6, 0x37, 0xe7, 0x85, 0xc4, 0xe7,
-0xc8, 0x63, 0xb8, 0xee, 0xb2, 0x3f, 0x0e, 0x6e,
-0x7c, 0x30, 0xa0, 0x86, 0xc5, 0xe3, 0x31, 0x64,
-0x12, 0x53, 0x43, 0x0d, 0x4e, 0xfc, 0xeb, 0x5f,
-0x8d, 0x23, 0x66, 0x64, 0xd8, 0x57, 0x07, 0xf3,
-0xf3, 0x4e, 0xb2, 0xce, 0x5c, 0x74, 0x5e, 0x7d,
-0x4a, 0xf9, 0x30, 0x1e, 0x49, 0x2f, 0x8a, 0x80,
-0x3f, 0x76, 0x44, 0xaf, 0x5b, 0xec, 0x9d, 0x2d,
-0x1d, 0x01, 0xa3, 0x7e, 0xc0, 0xf7, 0x54, 0x9b,
-0xdf, 0xdf, 0x6f, 0xd4, 0x05, 0xf2, 0x91, 0x8f,
-0xfa, 0xbc, 0x50, 0x97, 0xf6, 0xed, 0x81, 0xfd,
-0xdd, 0xc6, 0x5f, 0xf2, 0x3b, 0xde, 0x88, 0x39,
-0x29, 0x55, 0xce, 0x8a, 0x59, 0x8e, 0xfa, 0xba,
-0xc9, 0x19, 0xf0, 0x5b, 0x22, 0xfd, 0x52, 0x77,
-0xf9, 0x99, 0xde, 0x77, 0x54, 0x78, 0x88, 0xba,
-0xa5, 0xa1, 0x3c, 0xc6, 0x57, 0xf9, 0x13, 0x29,
-0xad, 0x20, 0xfe, 0x2a, 0xd8, 0x29, 0xbd, 0x81,
-0xf8, 0x6b, 0x64, 0xd1, 0xce, 0xb6, 0x37, 0x1c,
-0xfc, 0x55, 0x8a, 0xb4, 0xf3, 0xeb, 0x86, 0xbf,
-0x57, 0x57, 0x71, 0x3c, 0xb7, 0xde, 0x9c, 0x0c,
-0x7e, 0x4b, 0xde, 0x15, 0xf2, 0x8f, 0xbd, 0xf9,
-0xc3, 0x8d, 0x75, 0x88, 0x97, 0x0f, 0x7a, 0x87,
-0xa5, 0xd9, 0x15, 0xc7, 0x59, 0x7a, 0x95, 0x16,
-0x42, 0xce, 0x07, 0xc5, 0x3b, 0xdc, 0x78, 0x91,
-0x7c, 0x84, 0xaa, 0xcd, 0x17, 0x0d, 0xcb, 0x0f,
-0x6f, 0x25, 0x0b, 0x01, 0x0a, 0x4d, 0x03, 0xff,
-0xb9, 0x71, 0x85, 0x82, 0xda, 0x5e, 0x48, 0x72,
-0x28, 0xef, 0x15, 0x66, 0x9a, 0x1d, 0x29, 0x7f,
-0x50, 0xfe, 0xf0, 0xd1, 0xa5, 0xc9, 0xfc, 0x54,
-0xf9, 0xd7, 0x39, 0x81, 0x7c, 0xf0, 0x91, 0x79,
-0xb1, 0x36, 0x61, 0x56, 0x48, 0xd9, 0x27, 0xbe,
-0x1f, 0xda, 0x9b, 0x9e, 0x75, 0x42, 0x99, 0x19,
-0xd7, 0x9b, 0x39, 0xfe, 0x12, 0xb8, 0xc8, 0xf2,
-0x82, 0x54, 0xae, 0x97, 0x71, 0xdc, 0xe5, 0x31,
-0xda, 0x43, 0xdd, 0x8f, 0x46, 0x50, 0xde, 0x4b,
-0xfc, 0x77, 0x2b, 0xa9, 0x86, 0x2a, 0xf2, 0x03,
-0x99, 0x31, 0xe3, 0x25, 0x91, 0xab, 0x81, 0xc0,
-0x75, 0xde, 0x94, 0xf7, 0xb6, 0xf9, 0x69, 0x47,
-0x4a, 0x74, 0xe2, 0x5f, 0x5e, 0xa1, 0x6d, 0xe6,
-0x32, 0xcc, 0xb7, 0x59, 0xd8, 0xf0, 0x08, 0xa9,
-0x3a, 0x7a, 0x5b, 0xa8, 0xe1, 0xa8, 0xbc, 0x5b,
-0xf9, 0x9b, 0x7e, 0x74, 0x5c, 0x8d, 0x6e, 0x32,
-0xdd, 0xc8, 0xeb, 0x16, 0x6f, 0x27, 0x8f, 0x14,
-0x06, 0x8f, 0xaa, 0x49, 0x78, 0x06, 0x3a, 0xf5,
-0xa0, 0x16, 0xd0, 0xc2, 0x47, 0x95, 0x1a, 0xcc,
-0xc9, 0x49, 0xd9, 0xf1, 0x2f, 0xc4, 0x5f, 0x9d,
-0x51, 0xbc, 0xc3, 0x1b, 0x26, 0x93, 0xdf, 0xc8,
-0x91, 0x97, 0x6f, 0xc3, 0x09, 0xdf, 0xed, 0xf7,
-0x1f, 0x7e, 0x28, 0xa5, 0x56, 0xc2, 0xcb, 0xca,
-0x6f, 0xac, 0x85, 0x2f, 0x26, 0xfe, 0xc6, 0x98,
-0x7b, 0xd8, 0x97, 0xf4, 0x24, 0x01, 0x91, 0xd5,
-0x6a, 0x6b, 0x11, 0x9a, 0x7d, 0x4b, 0x0c, 0x9b,
-0x0b, 0x53, 0x6a, 0xd2, 0xc6, 0x5f, 0xc3, 0x80,
-0xd1, 0x6e, 0x00, 0xb7, 0xf0, 0x91, 0x7d, 0xf4,
-0x00, 0xba, 0xd6, 0x28, 0xea, 0x37, 0x8a, 0x4f,
-0x13, 0xaa, 0x7d, 0xbd, 0x5f, 0xf2, 0x67, 0x18,
-0x94, 0x1c, 0xd1, 0xde, 0x47, 0x2a, 0x95, 0x58,
-0x63, 0x0b, 0xb9, 0x62, 0xdc, 0x44, 0xd6, 0x61,
-0x18, 0x05, 0xb3, 0x3e, 0x8e, 0x0f, 0x97, 0x2f,
-0xcf, 0xd2, 0xff, 0x9a, 0x20, 0xfe, 0x05, 0x3e,
-0x3f, 0x26, 0x85, 0x5a, 0x44, 0x1c, 0x7f, 0xb0,
-0x65, 0xf5, 0xc6, 0x0e, 0xfe, 0xb8, 0xf8, 0x57,
-0xc6, 0xd8, 0x84, 0xac, 0x26, 0xd4, 0x6f, 0xb5,
-0x08, 0xfe, 0x89, 0xc6, 0x64, 0xf2, 0x0f, 0x6f,
-0xfd, 0xb8, 0xf8, 0x17, 0xdc, 0xf3, 0x32, 0xa1,
-0x8e, 0x0a, 0x79, 0xc6, 0xc8, 0x8c, 0xe9, 0x5d,
-0x10, 0xca, 0xfd, 0xe3, 0xf5, 0x5f, 0x68, 0x74,
-0x88, 0x7e, 0x11, 0xb6, 0x36, 0xde, 0xb2, 0xa3,
-0x1d, 0x0d, 0xbf, 0x3d, 0xc6, 0x31, 0x26, 0xae,
-0xff, 0xca, 0x32, 0x7a, 0xa4, 0x2a, 0xb9, 0x3f,
-0xd9, 0xcd, 0x5b, 0x46, 0x49, 0x78, 0xa2, 0x31,
-0x29, 0xa9, 0xf7, 0x13, 0xe3, 0x5f, 0x86, 0xda,
-0x4f, 0x7e, 0x4f, 0x0e, 0x7c, 0x6c, 0xa8, 0xe5,
-0x3f, 0x51, 0xff, 0x65, 0x1b, 0xda, 0x61, 0xfb,
-0x6b, 0xd8, 0xdf, 0x47, 0x71, 0xba, 0x2c, 0xe3,
-0xc4, 0x27, 0xc4, 0xbf, 0x4c, 0xf0, 0xeb, 0x00,
-0x4a, 0x0f, 0xd8, 0x8c, 0xfd, 0xba, 0x7f, 0xa2,
-0x39, 0x4c, 0x49, 0xdd, 0x19, 0xfe, 0xc3, 0x8f,
-0x59, 0xaf, 0x6b, 0xe2, 0x2f, 0xd0, 0xb8, 0xf9,
-0x71, 0xeb, 0x25, 0xec, 0xc8, 0xaa, 0xff, 0x4a,
-0x7d, 0x5c, 0xfc, 0x8b, 0xf3, 0xf2, 0xd9, 0x2a,
-0xc0, 0xe4, 0x80, 0x6d, 0x8c, 0x1d, 0xbc, 0xef,
-0x8f, 0xd5, 0x7f, 0x31, 0xa3, 0x44, 0x7a, 0x5e,
-0x7f, 0x4e, 0x09, 0xf5, 0x5a, 0x2d, 0x21, 0xd3,
-0x37, 0x83, 0x19, 0x41, 0xdb, 0xc0, 0xc1, 0x35,
-0x4e, 0xfe, 0xe1, 0xc7, 0xce, 0x33, 0x3a, 0x93,
-0x1f, 0x7e, 0xec, 0x12, 0xd8, 0xc6, 0x1f, 0xad,
-0xff, 0xba, 0xc0, 0x73, 0x3c, 0x2a, 0x58, 0x76,
-0xa8, 0xd5, 0xf2, 0x31, 0xf7, 0xcf, 0xdb, 0x7f,
-0x3c, 0xfe, 0xc5, 0xf8, 0x0f, 0x35, 0x79, 0x07,
-0xd9, 0x62, 0x62, 0xfe, 0xbc, 0x7c, 0x80, 0x19,
-0xe3, 0x2b, 0x0e, 0x32, 0xf9, 0x87, 0x3f, 0xfa,
-0xb8, 0x79, 0x2e, 0x65, 0x6c, 0x87, 0xce, 0xf4,
-0x6e, 0x99, 0x78, 0x9e, 0xff, 0x58, 0xfd, 0x17,
-0x37, 0x64, 0x98, 0xc1, 0x1d, 0x1b, 0xec, 0xe5,
-0xa6, 0x13, 0x3c, 0xa7, 0xe6, 0x75, 0x9f, 0x50,
-0xff, 0xc5, 0x8c, 0xb4, 0x74, 0x8b, 0x7c, 0xd9,
-0x0c, 0xf3, 0x96, 0x3d, 0xc9, 0xf0, 0x44, 0x63,
-0x3e, 0xa9, 0xfe, 0x8b, 0x33, 0xff, 0x9f, 0xa6,
-0xc3, 0xd1, 0x8c, 0x52, 0xf0, 0x04, 0x63, 0x16,
-0x7d, 0x72, 0xfd, 0x17, 0xe6, 0xa6, 0xca, 0x99,
-0xc4, 0xad, 0xd1, 0xc4, 0x58, 0x3e, 0xf3, 0xff,
-0x64, 0xfd, 0x17, 0x1a, 0x53, 0xdb, 0x31, 0x48,
-0xb1, 0x20, 0x51, 0x34, 0xe8, 0x96, 0xeb, 0xca,
-0x1e, 0xf3, 0x89, 0xf1, 0x2f, 0x75, 0xa3, 0xa7,
-0x82, 0xae, 0x6e, 0xb7, 0x18, 0xe9, 0xbb, 0x3e,
-0xee, 0x3a, 0x7f, 0xbc, 0xfe, 0x8b, 0xf1, 0x1f,
-0xf2, 0x60, 0xb4, 0xd5, 0xa2, 0xe9, 0xa8, 0xf5,
-0x6c, 0x8f, 0xb1, 0x08, 0xd2, 0x17, 0x7c, 0x72,
-0xfd, 0x17, 0x17, 0x69, 0x3a, 0xcc, 0x44, 0x9a,
-0x8a, 0xd3, 0x85, 0xe7, 0x8d, 0xee, 0x89, 0xc7,
-0x7c, 0x62, 0xfc, 0x0b, 0x89, 0x38, 0x1a, 0xac,
-0x42, 0x30, 0xd4, 0x08, 0xc3, 0x9c, 0xb7, 0x09,
-0xe6, 0xf9, 0x13, 0xea, 0xbf, 0x90, 0xe4, 0x50,
-0xad, 0x83, 0xcd, 0x8e, 0x2d, 0xd3, 0x36, 0x30,
-0xba, 0x27, 0x5e, 0xaf, 0x89, 0xf2, 0x0f, 0xdd,
-0x86, 0xa0, 0xba, 0xc2, 0x5e, 0x69, 0xb7, 0x91,
-0x3d, 0xd8, 0xc9, 0x3f, 0xfc, 0xb8, 0xf8, 0x17,
-0x3c, 0x5f, 0xb9, 0xb6, 0xaa, 0x5a, 0xbb, 0x4b,
-0x5e, 0x6d, 0xcc, 0xe0, 0x3f, 0x56, 0xff, 0x65,
-0x1b, 0x15, 0xb2, 0x73, 0xdb, 0xec, 0x18, 0xbf,
-0xee, 0xe2, 0x27, 0xd7, 0x7f, 0x71, 0x92, 0xc3,
-0xe2, 0xa9, 0x64, 0x34, 0xda, 0xcd, 0xe7, 0x67,
-0xf7, 0x38, 0x7e, 0xfe, 0xd1, 0xf1, 0xfc, 0x87,
-0x1f, 0xf3, 0x5c, 0xa0, 0x91, 0xb4, 0x5b, 0x94,
-0x82, 0x89, 0xaf, 0xf3, 0xeb, 0x4f, 0x88, 0x7f,
-0xf1, 0xfb, 0xc7, 0x8c, 0xf1, 0xdb, 0x46, 0x5e,
-0x29, 0x86, 0xc7, 0x8f, 0x11, 0x3e, 0xb9, 0xfe,
-0x0b, 0x8c, 0xd3, 0x1b, 0x66, 0x93, 0x87, 0xa9,
-0x9f, 0xb7, 0xec, 0xef, 0xf7, 0x4f, 0x34, 0xe6,
-0x13, 0xe3, 0x5f, 0x8c, 0x6f, 0xb9, 0x80, 0x3c,
-0xe2, 0xbc, 0xbe, 0x0c, 0x3c, 0x45, 0xf7, 0x8f,
-0x7f, 0xe9, 0x7d, 0x52, 0xfc, 0xab, 0x17, 0xae,
-0xe3, 0x23, 0x8f, 0x18, 0x36, 0xed, 0xbc, 0x2d,
-0x0b, 0xb2, 0x4b, 0xc8, 0x1e, 0xec, 0xc2, 0x5f,
-0x1f, 0x13, 0xff, 0x5a, 0x2e, 0x4d, 0x11, 0x7f,
-0xc5, 0x83, 0x5c, 0xaf, 0xb2, 0x83, 0x71, 0xa7,
-0x6b, 0xd1, 0xca, 0x72, 0x67, 0xf0, 0xdb, 0x9f,
-0x10, 0xff, 0x02, 0xb4, 0xa5, 0x0e, 0xa1, 0xc0,
-0xfd, 0xc7, 0xee, 0x5f, 0xb2, 0x9b, 0x7f, 0xe3,
-0x63, 0xe3, 0x5f, 0x48, 0x82, 0xed, 0xb0, 0xb1,
-0x39, 0x81, 0xb0, 0xf1, 0x83, 0x3f, 0xa9, 0xfe,
-0xab, 0x4f, 0xc5, 0x43, 0xc2, 0x55, 0xce, 0xb4,
-0x94, 0x96, 0xf5, 0x66, 0x8d, 0x69, 0xda, 0xa5,
-0xfd, 0x27, 0xea, 0xbf, 0x38, 0xd9, 0xaf, 0xfb,
-0x3a, 0x19, 0x23, 0x7b, 0xf0, 0xc1, 0x3f, 0x1e,
-0xff, 0x62, 0xeb, 0xde, 0x4f, 0xe2, 0x56, 0x21,
-0x33, 0x4a, 0x25, 0x4e, 0x9c, 0xdb, 0xf3, 0xc7,
-0xeb, 0xbf, 0xd0, 0x78, 0x4a, 0xc4, 0x13, 0x72,
-0xcb, 0x3f, 0xbc, 0x40, 0x6d, 0xc3, 0x56, 0x5e,
-0xb3, 0x09, 0x0c, 0x3f, 0xa1, 0xfe, 0xcb, 0x64,
-0x82, 0xce, 0x1f, 0xea, 0x56, 0x0b, 0x4a, 0x83,
-0x8d, 0x1f, 0xb3, 0xe8, 0x93, 0xeb, 0xbf, 0x4c,
-0xdf, 0xf2, 0xb6, 0x88, 0x7e, 0x89, 0x0b, 0x81,
-0x5d, 0x24, 0x97, 0xb5, 0x1a, 0xf7, 0x98, 0x46,
-0x67, 0x70, 0xda, 0xde, 0xbf, 0x3e, 0x26, 0xfe,
-0x65, 0x76, 0xf6, 0x88, 0x53, 0x69, 0xcf, 0x62,
-0x16, 0xe4, 0x3a, 0x43, 0x7a, 0x8c, 0x89, 0xfc,
-0xc3, 0x05, 0x9f, 0x5c, 0xff, 0x65, 0xaa, 0xf1,
-0x78, 0xb0, 0xdd, 0x61, 0xad, 0xdf, 0x43, 0x26,
-0xf6, 0x33, 0x3f, 0x39, 0xfe, 0xa5, 0xda, 0x82,
-0xe9, 0x16, 0xf3, 0x40, 0x72, 0xe2, 0xf5, 0x72,
-0xe9, 0x7f, 0x7d, 0x9c, 0x5f, 0x37, 0x09, 0xd3,
-0x90, 0xac, 0x65, 0xfa, 0xf0, 0x63, 0xfc, 0x31,
-0x87, 0x7f, 0x63, 0xa2, 0xf8, 0x17, 0x37, 0xd2,
-0xd2, 0x29, 0x5b, 0xba, 0x68, 0x4c, 0xd7, 0x3a,
-0x57, 0x8b, 0x5b, 0xff, 0x4b, 0xae, 0x27, 0xde,
-0x11, 0x69, 0x3f, 0xe3, 0xb7, 0x61, 0x06, 0xc6,
-0x6e, 0x30, 0xd1, 0xb7, 0xe4, 0x7d, 0x78, 0xac,
-0x16, 0xf5, 0x40, 0x0b, 0xca, 0x3a, 0xf8, 0xfa,
-0x25, 0x64, 0xbc, 0xa9, 0xd7, 0x7d, 0x27, 0x8b,
-0x31, 0xd0, 0x5c, 0x8f, 0xcf, 0xbb, 0xc3, 0xbf,
-0x71, 0x46, 0xc1, 0xe3, 0x59, 0xa5, 0x87, 0x51,
-0x6a, 0xd8, 0xc1, 0x44, 0x5a, 0x65, 0x7a, 0x01,
-0x2f, 0x93, 0x36, 0xb2, 0x15, 0x9d, 0x76, 0xcc,
-0x3f, 0x04, 0xfc, 0xd5, 0x81, 0x19, 0x14, 0xb4,
-0x56, 0x07, 0x68, 0xf6, 0x9e, 0x62, 0xe1, 0x2f,
-0x87, 0xff, 0xb0, 0x1f, 0x49, 0xe6, 0x51, 0x8b,
-0x6d, 0xad, 0xd2, 0x29, 0xea, 0x66, 0x29, 0x23,
-0x42, 0x64, 0xb4, 0x1b, 0x7e, 0x2f, 0xb1, 0x04,
-0xd7, 0xd6, 0x6a, 0x3b, 0x04, 0x24, 0x3c, 0xe1,
-0xdb, 0x16, 0x41, 0x6a, 0x5f, 0x65, 0x0c, 0xff,
-0x7c, 0xe1, 0xcf, 0xc8, 0x9a, 0xd6, 0xaa, 0x94,
-0x92, 0x0a, 0x7b, 0x95, 0xce, 0x3b, 0xe0, 0xfb,
-0xa4, 0xe2, 0x4f, 0xe9, 0x9d, 0x5f, 0x0c, 0x9a,
-0x04, 0x75, 0xa9, 0x1e, 0xab, 0xc4, 0xe5, 0xbe,
-0x76, 0x85, 0xb1, 0x17, 0x80, 0x98, 0x44, 0x1b,
-0x90, 0x06, 0x7f, 0x7a, 0x48, 0x45, 0x92, 0x16,
-0x8c, 0x0a, 0x81, 0xe1, 0xd4, 0x7f, 0xfd, 0x36,
-0x7e, 0xe8, 0x74, 0x24, 0x1d, 0xec, 0x29, 0xfe,
-0x59, 0xc3, 0x11, 0x98, 0x84, 0x60, 0x57, 0xe3,
-0xbf, 0x8a, 0x47, 0xe6, 0x45, 0xd2, 0x15, 0xdd,
-0x6a, 0x90, 0xbe, 0x43, 0x98, 0x70, 0xc0, 0xbf,
-0x56, 0x5c, 0x88, 0x76, 0xff, 0xd2, 0xf7, 0xa0,
-0xf4, 0xbe, 0x3e, 0x9a, 0x8e, 0xe8, 0xbe, 0xef,
-0xdb, 0xef, 0xb1, 0x9e, 0x4c, 0xfe, 0x61, 0x8f,
-0xf7, 0x0a, 0x99, 0x1b, 0xf7, 0x5d, 0xe4, 0xd4,
-0xfd, 0x1f, 0xae, 0x1b, 0xa9, 0xb9, 0xdf, 0x00,
-0xe3, 0xac, 0xef, 0xbc, 0x74, 0x99, 0xbe, 0x16,
-0xaf, 0x1f, 0xf4, 0x8d, 0xb2, 0x79, 0x86, 0xd5,
-0xe9, 0xe5, 0x99, 0x33, 0x64, 0x42, 0xfe, 0x8d,
-0xed, 0xad, 0x17, 0x1a, 0x22, 0x03, 0xeb, 0x76,
-0x4a, 0xef, 0xd2, 0x23, 0x46, 0xb8, 0x0f, 0x73,
-0x0b, 0x07, 0x8e, 0x90, 0x48, 0x1f, 0x03, 0xe9,
-0x47, 0xf4, 0xee, 0x13, 0xde, 0x9d, 0x0b, 0x2a,
-0x39, 0xc3, 0x79, 0xbb, 0xb4, 0x2c, 0x81, 0x61,
-0x14, 0x24, 0x4b, 0x34, 0x91, 0xd4, 0x74, 0xd1,
-0x83, 0xaa, 0x13, 0xff, 0x62, 0xfb, 0x57, 0x82,
-0xf1, 0xc6, 0x3f, 0x97, 0xe3, 0x37, 0x9f, 0x4a,
-0x35, 0x7e, 0x03, 0xeb, 0xe3, 0xce, 0x21, 0xed,
-0x7c, 0xb3, 0xaa, 0xf8, 0x7b, 0x95, 0x99, 0x28,
-0x47, 0x8e, 0x4f, 0xc1, 0x9a, 0xa2, 0xa9, 0x64,
-0xb7, 0x1f, 0xe5, 0x18, 0x8a, 0xde, 0x25, 0x7b,
-0x4f, 0x56, 0xbd, 0xb4, 0x60, 0x53, 0xdc, 0x89,
-0x7f, 0xc5, 0x48, 0x2a, 0xb6, 0x42, 0x83, 0xeb,
-0x1c, 0x17, 0xda, 0x88, 0x7f, 0x78, 0x41, 0x8a,
-0x54, 0xb3, 0xf5, 0xf2, 0xdc, 0x22, 0x1e, 0x6d,
-0x68, 0x8b, 0xeb, 0x43, 0x4a, 0xdd, 0x86, 0xb5,
-0x70, 0x9d, 0x60, 0xaf, 0x2a, 0xc7, 0x6f, 0xc5,
-0x0c, 0x9c, 0xd2, 0x52, 0x4d, 0x3c, 0xce, 0x49,
-0xcb, 0xeb, 0x44, 0x27, 0xfe, 0x75, 0x35, 0xd9,
-0xd9, 0xc5, 0x45, 0x96, 0x0d, 0x40, 0x5b, 0x43,
-0x9e, 0x95, 0xfe, 0xaf, 0x2a, 0xab, 0xb6, 0x55,
-0x9e, 0x59, 0xf3, 0x4d, 0xf1, 0x55, 0x79, 0x55,
-0xa2, 0x2c, 0x1d, 0xf8, 0xd6, 0xd6, 0x1f, 0x91,
-0x55, 0x89, 0xca, 0xb7, 0x1a, 0x91, 0x91, 0xfe,
-0x69, 0xb3, 0x52, 0x57, 0x16, 0xc3, 0xe0, 0x5d,
-0x89, 0xca, 0xd7, 0xd5, 0x93, 0xa2, 0xe2, 0xd2,
-0xff, 0x4a, 0x05, 0x65, 0x80, 0x54, 0xef, 0x36,
-0x3c, 0x57, 0x14, 0x3e, 0x07, 0x68, 0x2b, 0xd8,
-0xf0, 0x1c, 0xfd, 0x6a, 0xba, 0x0a, 0xf3, 0x0f,
-0x9f, 0x4b, 0x16, 0x0d, 0x2c, 0x9c, 0x2d, 0xad,
-0xd5, 0x9e, 0x23, 0x75, 0x83, 0x3e, 0x51, 0x6a,
-0xa2, 0x67, 0x13, 0x75, 0x98, 0xf1, 0x62, 0xe1,
-0xaf, 0x99, 0xe5, 0x8e, 0xfe, 0x57, 0x8a, 0x5c,
-0xd4, 0xea, 0x89, 0x8a, 0x65, 0x5f, 0xbf, 0xd3,
-0xea, 0xcd, 0xfc, 0xb3, 0xc8, 0x45, 0x29, 0xd4,
-0x3f, 0x87, 0x71, 0xfc, 0xe8, 0x95, 0x12, 0x58,
-0x94, 0x96, 0xc6, 0xbb, 0x2c, 0x04, 0x8d, 0x42,
-0xb1, 0x64, 0x6e, 0xbb, 0xcf, 0x2c, 0xbf, 0x68,
-0x17, 0x5a, 0xba, 0xf4, 0xbf, 0x46, 0xc4, 0x59,
-0x86, 0x2f, 0x55, 0x7e, 0xcc, 0x56, 0x51, 0x0c,
-0xca, 0x78, 0x6f, 0x60, 0xbd, 0x9e, 0xf1, 0x5b,
-0x02, 0x2b, 0xb8, 0x5b, 0x2a, 0x80, 0xae, 0x5a,
-0x78, 0x03, 0x14, 0xb3, 0x72, 0xf5, 0x32, 0x6f,
-0x42, 0x3a, 0x86, 0xfa, 0x5f, 0x88, 0xd1, 0x9c,
-0xf8, 0xd7, 0x46, 0xf2, 0xb4, 0x28, 0x18, 0x18,
-0xe4, 0x4a, 0xac, 0xaa, 0xa8, 0x1c, 0x58, 0x70,
-0x8f, 0xf8, 0x43, 0x3c, 0x44, 0xed, 0x8f, 0xde,
-0x2b, 0xd6, 0x11, 0xe4, 0x3f, 0x54, 0x5a, 0xa4,
-0xbb, 0xc8, 0x3a, 0x72, 0xd3, 0x49, 0x15, 0xe3,
-0x5f, 0x3b, 0x09, 0x23, 0xe0, 0x3d, 0x45, 0x7e,
-0xc5, 0x33, 0x31, 0x32, 0xfa, 0x5f, 0x72, 0x8a,
-0x2e, 0xd1, 0xd5, 0xfb, 0xc5, 0xcb, 0xf2, 0xe3,
-0xa9, 0xca, 0x21, 0xf5, 0x5b, 0x5b, 0xaf, 0xef,
-0xd8, 0x95, 0xae, 0x4c, 0x47, 0xef, 0x2b, 0x9a,
-0x42, 0x7f, 0x9e, 0x28, 0x1b, 0xca, 0xbb, 0x4f,
-0xbc, 0xdf, 0x7c, 0x7c, 0xf8, 0xc6, 0x61, 0x75,
-0x21, 0xfc, 0xd5, 0xd3, 0xed, 0xd5, 0x7e, 0x65,
-0x71, 0xfc, 0x55, 0x06, 0x81, 0x17, 0x2c, 0xce,
-0xe8, 0x7f, 0x99, 0xa4, 0x47, 0x5f, 0x3a, 0x53,
-0x9d, 0x19, 0x3f, 0x46, 0xdb, 0x92, 0xc1, 0x74,
-0xe7, 0x4e, 0x71, 0x5d, 0xc5, 0x0e, 0x5a, 0x35,
-0x14, 0xe8, 0xf6, 0x78, 0xcd, 0xce, 0x64, 0x6c,
-0xf8, 0xc6, 0x90, 0xf8, 0x79, 0xd2, 0xd9, 0x57,
-0x31, 0xbc, 0x60, 0xa6, 0xd8, 0xab, 0x75, 0x29,
-0xc1, 0x16, 0xa5, 0x04, 0xde, 0x87, 0x8f, 0xe0,
-0x23, 0x5c, 0x92, 0x15, 0xff, 0x02, 0x94, 0xe6,
-0x1b, 0x94, 0xce, 0xd3, 0xf7, 0xb6, 0xd5, 0x6f,
-0xf2, 0x0d, 0x95, 0xcf, 0x21, 0x1f, 0x91, 0xfa,
-0xed, 0xde, 0xa1, 0xb6, 0x6b, 0xc5, 0xf7, 0x3a,
-0x6a, 0xb6, 0xe6, 0xbf, 0xd5, 0xfa, 0xad, 0xd8,
-0x7b, 0x03, 0x73, 0x76, 0xfa, 0xfe, 0x1a, 0x19,
-0xe9, 0x3b, 0xea, 0xd7, 0x07, 0xd3, 0xc5, 0x43,
-0xe0, 0xea, 0x87, 0xa8, 0x6f, 0xa8, 0x2d, 0x83,
-0xbf, 0xf4, 0x11, 0x52, 0x2b, 0x1e, 0xa7, 0x4c,
-0xf6, 0x2b, 0xa2, 0xf8, 0x68, 0xdb, 0x69, 0x4b,
-0x91, 0xb9, 0x91, 0x7b, 0x71, 0x05, 0xcc, 0x8b,
-0x93, 0xdd, 0xb4, 0xf3, 0x71, 0x29, 0xad, 0x70,
-0x07, 0xaf, 0xcd, 0xc1, 0x5f, 0x7d, 0xf4, 0x90,
-0x1e, 0x6e, 0x62, 0xfc, 0x6c, 0x98, 0x9a, 0xe8,
-0xa5, 0x5f, 0xd2, 0x8d, 0x7e, 0x12, 0x96, 0xbd,
-0x1d, 0xe0, 0x1f, 0x9e, 0xa4, 0x61, 0xd1, 0xdb,
-0x6a, 0xcb, 0x12, 0x6d, 0x2a, 0xac, 0x90, 0x57,
-0x9b, 0x91, 0x7b, 0x38, 0x89, 0x3a, 0x8d, 0x44,
-0xbd, 0xdf, 0xcf, 0xe0, 0xaf, 0xbf, 0x26, 0x4f,
-0xe8, 0x7e, 0x03, 0xb9, 0x1a, 0xa2, 0xfd, 0xb4,
-0x4a, 0xef, 0x78, 0x40, 0x2c, 0x43, 0xad, 0x28,
-0x2d, 0xb0, 0x56, 0x2c, 0x8f, 0x75, 0x74, 0xf8,
-0x35, 0x8b, 0xcf, 0x61, 0x16, 0x51, 0x1f, 0xf5,
-0x4c, 0xb2, 0x69, 0x13, 0xde, 0x20, 0xbb, 0xcd,
-0xaa, 0x68, 0x60, 0x43, 0x86, 0xff, 0x70, 0xaa,
-0x02, 0x60, 0xad, 0x41, 0x49, 0x8a, 0x69, 0xbd,
-0x87, 0x04, 0x15, 0xa5, 0xfd, 0x5a, 0x2a, 0xc3,
-0x75, 0xc4, 0x8e, 0xd6, 0x35, 0xba, 0xbc, 0x49,
-0x4b, 0xe6, 0x06, 0x92, 0x61, 0x0b, 0x17, 0x24,
-0x0e, 0x6e, 0x4b, 0x3c, 0x61, 0xe0, 0x75, 0x8a,
-0x06, 0x75, 0x5b, 0x87, 0xd7, 0xda, 0xbf, 0x9a,
-0x64, 0xba, 0x45, 0x4f, 0x22, 0xa5, 0x61, 0x1f,
-0xa0, 0xad, 0x60, 0xbf, 0x52, 0x24, 0xb6, 0xd3,
-0xd5, 0xa8, 0xad, 0x5c, 0x54, 0x54, 0x81, 0xf8,
-0x2b, 0x5a, 0x5a, 0x9c, 0xdb, 0x47, 0xbb, 0x66,
-0x54, 0x44, 0xa5, 0x84, 0x7f, 0x1b, 0xd9, 0x22,
-0x06, 0x8d, 0x4e, 0x8d, 0x38, 0x24, 0xea, 0x0e,
-0xfe, 0x5a, 0x62, 0xf4, 0x37, 0x87, 0x4b, 0x30,
-0xa5, 0x30, 0x8a, 0x69, 0x87, 0xc1, 0x1c, 0xf5,
-0x89, 0x86, 0x7e, 0x12, 0x2a, 0x69, 0xcf, 0x11,
-0xcb, 0x8c, 0x93, 0xcd, 0xa1, 0x12, 0xaf, 0x8c,
-0x53, 0xc7, 0xf1, 0xd7, 0x76, 0x32, 0xc4, 0xa6,
-0xb7, 0x30, 0xad, 0x71, 0xd6, 0x3b, 0x57, 0xfc,
-0x8b, 0x57, 0x4a, 0xae, 0x2f, 0x3e, 0xd3, 0xf4,
-0x8a, 0xc6, 0x48, 0x0e, 0x97, 0x31, 0x92, 0x43,
-0x87, 0xed, 0xd0, 0xf7, 0x08, 0x1a, 0xa1, 0x48,
-0xd3, 0xba, 0x01, 0xe9, 0x5e, 0xf1, 0x3f, 0xc4,
-0xb9, 0xbc, 0xa4, 0xeb, 0x2c, 0x27, 0x90, 0x77,
-0xc5, 0xbf, 0x98, 0x92, 0xd7, 0xf7, 0xdb, 0x3e,
-0x22, 0x2f, 0x6e, 0xaf, 0x5f, 0x2e, 0x9f, 0x6c,
-0x9b, 0x45, 0x0e, 0x75, 0xd4, 0xff, 0x5f, 0xde,
-0x5f, 0x4b, 0x1f, 0x91, 0x4b, 0xc9, 0x9a, 0xd8,
-0xc2, 0x5f, 0xff, 0xf6, 0xa3, 0xf6, 0xd1, 0xf6,
-0xf0, 0xd7, 0xbc, 0x03, 0xd2, 0x4e, 0x72, 0x29,
-0x67, 0x2e, 0x8a, 0x58, 0x9d, 0xb3, 0xaa, 0xc6,
-0x32, 0xf9, 0x87, 0x43, 0x22, 0xca, 0x2e, 0x07,
-0x90, 0x82, 0x72, 0x4d, 0x53, 0xb0, 0xe4, 0xe1,
-0x76, 0x58, 0xaf, 0xed, 0xa8, 0x41, 0x43, 0xc5,
-0x5e, 0x74, 0x33, 0x34, 0xa5, 0xbd, 0x01, 0xbc,
-0x77, 0x63, 0x16, 0x61, 0x89, 0x6d, 0x4c, 0x9a,
-0x39, 0x39, 0x0e, 0x7f, 0x31, 0xfd, 0x2f, 0x9e,
-0x52, 0xf8, 0xbc, 0xd6, 0x2a, 0x54, 0x19, 0x1d,
-0x9a, 0x7f, 0x2a, 0x69, 0x95, 0x83, 0x46, 0xb4,
-0xa4, 0xe8, 0x79, 0xa5, 0xcb, 0xd0, 0x9b, 0x15,
-0xed, 0x0e, 0xd4, 0x1e, 0xf2, 0x63, 0x26, 0x61,
-0xfb, 0x38, 0xfc, 0x75, 0x30, 0x83, 0xbf, 0x50,
-0xd3, 0x4d, 0xd9, 0x28, 0x0e, 0xa2, 0xda, 0x32,
-0x96, 0x5d, 0x54, 0xe8, 0x4f, 0x78, 0xab, 0x30,
-0xda, 0xf5, 0x06, 0xdd, 0x1b, 0xf3, 0x47, 0x95,
-0x8d, 0x4b, 0x07, 0xe9, 0x6e, 0x6d, 0x5a, 0x73,
-0x34, 0x51, 0x04, 0x88, 0x4c, 0xf8, 0x7b, 0x43,
-0xda, 0xd0, 0xc0, 0x99, 0x58, 0x54, 0x57, 0xfd,
-0xd7, 0x1b, 0xc6, 0x21, 0x33, 0x1c, 0x85, 0x57,
-0xca, 0x9b, 0x0d, 0x87, 0x9a, 0x23, 0xd1, 0xb5,
-0x89, 0xce, 0x1b, 0xc8, 0x21, 0x23, 0x72, 0x6f,
-0x70, 0xd3, 0x23, 0xa8, 0xa4, 0x1c, 0x5e, 0x19,
-0x4c, 0x48, 0x6f, 0x28, 0xa3, 0x66, 0x38, 0xe6,
-0xbd, 0x4a, 0xfa, 0x09, 0x81, 0x99, 0xbf, 0x67,
-0x91, 0x8b, 0x49, 0xde, 0xe6, 0x3f, 0x24, 0x3f,
-0x21, 0x67, 0x3b, 0xa0, 0x65, 0x3d, 0x76, 0xb5,
-0x33, 0x15, 0x86, 0x37, 0xb7, 0x8f, 0xfa, 0xa1,
-0x05, 0xe3, 0x68, 0xa3, 0x64, 0x3f, 0x76, 0x31,
-0x45, 0xb0, 0xe5, 0x48, 0x7b, 0x18, 0x1d, 0xed,
-0x88, 0x7c, 0x9d, 0xe7, 0x1f, 0x72, 0xfc, 0xe5,
-0xc4, 0xbf, 0xb6, 0x88, 0xfd, 0xc6, 0x07, 0x45,
-0x9c, 0x32, 0xb4, 0x29, 0x22, 0x7a, 0xd7, 0x16,
-0x97, 0xc9, 0x18, 0xed, 0xf2, 0xb5, 0xb7, 0x61,
-0xd9, 0x57, 0x44, 0x09, 0xb6, 0x4b, 0xa7, 0xe1,
-0xfe, 0x09, 0x0b, 0x48, 0x4d, 0x4f, 0xfa, 0xc9,
-0x14, 0x5e, 0x11, 0x86, 0xcc, 0xa5, 0xbe, 0x07,
-0xda, 0x6c, 0xfc, 0x25, 0xd7, 0xd2, 0x87, 0x3b,
-0xca, 0x93, 0x18, 0xe4, 0x02, 0xc7, 0xa3, 0x32,
-0xa9, 0xbc, 0x2d, 0xfd, 0x15, 0xac, 0xe0, 0x9c,
-0x94, 0x3a, 0xe4, 0xb9, 0x85, 0x3c, 0xfc, 0x7c,
-0x75, 0x52, 0x49, 0x33, 0xb4, 0xa5, 0xd3, 0x82,
-0x37, 0xc4, 0xf3, 0xda, 0xc3, 0x1d, 0xd5, 0x29,
-0x58, 0xb8, 0x39, 0xca, 0x7e, 0xa3, 0x7a, 0xbb,
-0xea, 0xd2, 0xff, 0x5a, 0x42, 0xa9, 0x09, 0x8b,
-0x1b, 0x12, 0xdf, 0x0b, 0xb4, 0x6e, 0x08, 0x22,
-0xe1, 0x76, 0x81, 0xd1, 0x46, 0xaa, 0x7e, 0xa9,
-0xce, 0x05, 0xdc, 0xd4, 0x99, 0xa8, 0x1a, 0x50,
-0xb4, 0xdc, 0xa3, 0xe0, 0xb7, 0xe8, 0xbd, 0x0b,
-0x72, 0x44, 0x33, 0xd4, 0x6a, 0x06, 0x63, 0x9e,
-0x90, 0x98, 0x6f, 0xee, 0x30, 0x61, 0xbd, 0x66,
-0xdb, 0xf8, 0x4b, 0x17, 0x88, 0x42, 0x89, 0xae,
-0x61, 0x36, 0x9d, 0x86, 0x25, 0xb7, 0xca, 0x70,
-0xd1, 0x5d, 0x00, 0x07, 0x6e, 0x34, 0x3b, 0x57,
-0xfa, 0xff, 0x0c, 0xb3, 0x11, 0x0e, 0x2a, 0xb1,
-0x22, 0x8e, 0x0b, 0x3c, 0x31, 0xf1, 0x97, 0xfe,
-0x07, 0x48, 0xf5, 0x52, 0xcf, 0x08, 0xd3, 0x17,
-0x76, 0xe3, 0xaf, 0x80, 0x72, 0x35, 0xe9, 0xa3,
-0x65, 0x7a, 0x70, 0xa5, 0x78, 0x99, 0x51, 0x6a,
-0x04, 0x57, 0x96, 0x23, 0x97, 0xe0, 0x5c, 0x1d,
-0xbc, 0xaf, 0x29, 0xe4, 0x41, 0xa4, 0x9d, 0x5f,
-0xcc, 0xf0, 0x57, 0xd7, 0x69, 0x5f, 0xb4, 0xf1,
-0x97, 0xe4, 0x79, 0x3a, 0x37, 0xf6, 0x85, 0x95,
-0xea, 0x94, 0x71, 0xf8, 0xcb, 0xc2, 0xb9, 0xa9,
-0xb2, 0x33, 0x5e, 0xf0, 0xf9, 0x29, 0xec, 0x83,
-0x58, 0x0c, 0x8e, 0x69, 0x6c, 0xd2, 0x90, 0xc8,
-0xd8, 0x1b, 0x58, 0x1a, 0x1b, 0x8d, 0x98, 0xeb,
-0x68, 0x79, 0x1f, 0xe3, 0x4b, 0xc9, 0x47, 0x82,
-0x08, 0x4b, 0x00, 0xc5, 0xa9, 0xff, 0xfa, 0x80,
-0x1c, 0x6a, 0xbf, 0x39, 0x16, 0xdc, 0x2d, 0xbd,
-0x39, 0x70, 0x65, 0x63, 0x64, 0x5b, 0xb0, 0x1f,
-0xd9, 0xb0, 0x13, 0x73, 0x07, 0xbd, 0x23, 0xea,
-0x74, 0xe3, 0xb5, 0xd6, 0x19, 0x31, 0xf8, 0x3e,
-0xfb, 0x95, 0x0b, 0x9b, 0x6a, 0xd3, 0xbe, 0x43,
-0xf0, 0xc4, 0xfd, 0x1e, 0x5e, 0x9e, 0x3c, 0x93,
-0x87, 0xc7, 0xbf, 0x1c, 0xfd, 0xe5, 0x9d, 0xf4,
-0xa1, 0xd6, 0x72, 0x51, 0x59, 0x29, 0xfe, 0x92,
-0x02, 0x14, 0x5a, 0xa9, 0x18, 0xd2, 0x5d, 0x68,
-0x50, 0xcf, 0x80, 0x58, 0xd4, 0xbe, 0x9a, 0x6c,
-0xa1, 0x4a, 0x4c, 0x9c, 0x2c, 0x1f, 0x48, 0x96,
-0x0d, 0xaa, 0xf3, 0xfc, 0x27, 0x68, 0x17, 0x29,
-0xab, 0x50, 0xef, 0x11, 0x2d, 0xa2, 0x92, 0x7b,
-0x1d, 0xfc, 0x65, 0x6c, 0x54, 0xda, 0xbd, 0x65,
-0x24, 0xef, 0x1e, 0xf1, 0xa4, 0x06, 0x53, 0x87,
-0xf4, 0x26, 0x77, 0x96, 0xec, 0x12, 0xaa, 0xcd,
-0x3c, 0x64, 0x3b, 0x5c, 0xa5, 0xdd, 0x70, 0x30,
-0x6f, 0x80, 0x05, 0x1c, 0x61, 0xe6, 0x71, 0x1f,
-0x7c, 0x9a, 0x94, 0x2d, 0xc4, 0x93, 0x49, 0xcd,
-0x02, 0xbc, 0xa6, 0x5d, 0xff, 0xd5, 0x47, 0x3a,
-0x74, 0xdd, 0x9f, 0x77, 0x0b, 0x86, 0xb4, 0xcc,
-0x2a, 0xed, 0xb6, 0xdd, 0x22, 0x43, 0xe2, 0x29,
-0xb5, 0xa4, 0x48, 0x30, 0xda, 0x66, 0x54, 0x6c,
-0xcf, 0xcb, 0x11, 0xf3, 0xa3, 0x3b, 0xee, 0xd6,
-0xcd, 0x05, 0x3e, 0xf1, 0x85, 0x66, 0x78, 0x72,
-0x49, 0xc6, 0x9f, 0x9f, 0x99, 0xd1, 0x5f, 0xde,
-0xbe, 0xe2, 0xb0, 0x11, 0x4e, 0x7c, 0xbe, 0xa7,
-0xfc, 0x6d, 0x24, 0x1b, 0x7f, 0xd9, 0xdb, 0x23,
-0x7d, 0x9d, 0x5e, 0x48, 0x46, 0x06, 0xf2, 0xeb,
-0xa4, 0x6a, 0xf1, 0x88, 0xfc, 0x4f, 0xe9, 0x6f,
-0x94, 0x48, 0xff, 0x2a, 0xff, 0x61, 0x5e, 0xad,
-0xb9, 0x08, 0xee, 0x79, 0x78, 0x0d, 0x86, 0x87,
-0x7d, 0xa9, 0xc6, 0xa7, 0xf8, 0x11, 0x6e, 0x4f,
-0x26, 0xff, 0xf0, 0x2d, 0x72, 0x41, 0xda, 0x63,
-0x16, 0xa4, 0xda, 0x06, 0x79, 0x79, 0xc2, 0xce,
-0x47, 0xce, 0xe8, 0x17, 0xbc, 0x91, 0xa6, 0x29,
-0xc8, 0xd4, 0xf7, 0x76, 0x43, 0xad, 0x59, 0x90,
-0x28, 0x66, 0x95, 0x26, 0xcf, 0xc3, 0x8e, 0x36,
-0x88, 0xcf, 0xe9, 0x09, 0x9f, 0x45, 0x56, 0x4f,
-0xd7, 0xed, 0x6b, 0x73, 0xf0, 0x17, 0x8a, 0xb6,
-0xd4, 0x50, 0xdf, 0x70, 0xf9, 0x08, 0x39, 0xee,
-0xa9, 0x7f, 0xce, 0x6b, 0x96, 0xdf, 0x87, 0xb2,
-0xcb, 0x07, 0x17, 0x8e, 0xb4, 0xdd, 0x1f, 0xbb,
-0xbc, 0xa5, 0x26, 0xe6, 0x7d, 0xb9, 0xad, 0x4e,
-0xbf, 0x42, 0x6e, 0x3e, 0xa8, 0x1e, 0x92, 0x66,
-0x92, 0x2b, 0x4a, 0x4d, 0xc3, 0xc2, 0xe1, 0xc6,
-0xf3, 0xf4, 0x38, 0xad, 0x19, 0x5c, 0x38, 0x9a,
-0xe1, 0xdf, 0xf8, 0x7a, 0x60, 0x8f, 0xe9, 0xef,
-0x56, 0x53, 0xb9, 0xef, 0xea, 0x9d, 0xad, 0x55,
-0xc3, 0xc1, 0xb8, 0xf4, 0x77, 0x7a, 0x27, 0xb9,
-0xff, 0x4e, 0xef, 0x1e, 0xb1, 0x5a, 0xdb, 0x63,
-0xf8, 0xd3, 0xca, 0x86, 0x46, 0xc4, 0x68, 0xfe,
-0xde, 0x05, 0x25, 0xf1, 0x69, 0xe0, 0xd7, 0xcd,
-0x5c, 0xfe, 0x50, 0x0a, 0x93, 0xdf, 0x0c, 0x7d,
-0x00, 0x50, 0x80, 0xcd, 0x7f, 0x28, 0x4f, 0x57,
-0xf6, 0x3c, 0xef, 0x4f, 0x2f, 0x48, 0xdd, 0x71,
-0xf4, 0x8b, 0x9d, 0xda, 0xf4, 0xbe, 0xd2, 0x9e,
-0xbf, 0x6c, 0x2a, 0xe9, 0x94, 0x83, 0xcf, 0x29,
-0x5b, 0xc5, 0x15, 0x65, 0x5d, 0x44, 0xbf, 0x5d,
-0x49, 0x34, 0x20, 0x46, 0x9b, 0x66, 0xc2, 0x5b,
-0x74, 0x1a, 0xe0, 0x82, 0x69, 0x4b, 0xf2, 0x50,
-0x19, 0x6a, 0x4d, 0xc0, 0x8f, 0x8c, 0x52, 0x36,
-0xfe, 0x6a, 0x52, 0xc8, 0x8e, 0x00, 0x78, 0x0e,
-0xe1, 0x78, 0x5f, 0x2b, 0xb8, 0x97, 0x03, 0x58,
-0x6f, 0x2e, 0xb4, 0x19, 0x01, 0x73, 0x13, 0x26,
-0x6e, 0x75, 0x01, 0x52, 0x50, 0x0a, 0x1b, 0x30,
-0x17, 0x0b, 0xf3, 0x45, 0xfd, 0x32, 0xd9, 0xbd,
-0x61, 0xda, 0xbc, 0x3c, 0xa4, 0x4c, 0xb7, 0xa4,
-0xdc, 0x6c, 0xfc, 0x95, 0x17, 0x23, 0x3d, 0xb1,
-0xad, 0xc4, 0xd7, 0x2d, 0x0e, 0xf9, 0x3b, 0xc1,
-0xe5, 0x9b, 0x1c, 0x2a, 0x5e, 0x06, 0xfe, 0x7c,
-0xd5, 0x40, 0x30, 0x29, 0x2d, 0x94, 0x2f, 0x60,
-0x58, 0x1b, 0xf9, 0x18, 0xf7, 0x2a, 0xb3, 0xd0,
-0x1f, 0x0b, 0x2a, 0x28, 0x28, 0x5f, 0x99, 0xca,
-0xe1, 0xa9, 0x89, 0x6b, 0x5d, 0xf9, 0x87, 0xc3,
-0xe4, 0x62, 0xa0, 0x9e, 0x70, 0x48, 0x25, 0xd6,
-0x0f, 0x14, 0x0c, 0x0b, 0x2c, 0xc9, 0x10, 0x79,
-0x26, 0x2f, 0x91, 0x2b, 0x41, 0x40, 0x5b, 0x2f,
-0x97, 0x33, 0xef, 0x7d, 0x80, 0xe5, 0x1f, 0x5e,
-0xaa, 0xa8, 0xbf, 0x95, 0x57, 0xac, 0x88, 0x6e,
-0xfc, 0x45, 0x9e, 0x9f, 0x27, 0xb5, 0x18, 0xa7,
-0xb4, 0x7f, 0x96, 0xf3, 0x7b, 0x99, 0x71, 0xb3,
-0x9c, 0xdf, 0x07, 0x5b, 0xc0, 0xa9, 0xe6, 0x9b,
-0xb1, 0xe5, 0x6e, 0xde, 0xe2, 0x18, 0x26, 0x8e,
-0x31, 0x6e, 0xf6, 0xe6, 0x3f, 0x2f, 0x59, 0x63,
-0xcc, 0x19, 0xfc, 0x77, 0x3d, 0xdf, 0x94, 0x73,
-0xb7, 0x70, 0x97, 0xf1, 0x15, 0xed, 0xaa, 0x3e,
-0xc7, 0x10, 0xee, 0x16, 0x16, 0xba, 0x5b, 0xb4,
-0x4c, 0x97, 0x3c, 0x43, 0xf0, 0xa2, 0xf1, 0x82,
-0xdd, 0x62, 0xce, 0x60, 0xbf, 0x8b, 0x50, 0x51,
-0xd0, 0x69, 0x54, 0x2f, 0x52, 0xe4, 0xb8, 0x6d,
-0x3c, 0x08, 0xc6, 0x62, 0xde, 0x52, 0xc6, 0x5a,
-0x72, 0x0e, 0x62, 0x57, 0x0c, 0x5b, 0xe0, 0xf5,
-0x7a, 0x57, 0xac, 0xa8, 0x94, 0x8d, 0x61, 0x2d,
-0x54, 0xe7, 0xdf, 0x87, 0x12, 0x21, 0x46, 0x16,
-0x93, 0x2f, 0x93, 0x1c, 0xca, 0x8c, 0xab, 0x49,
-0x4e, 0xbc, 0x10, 0x8c, 0xd8, 0xd5, 0x99, 0x96,
-0x07, 0xda, 0x85, 0x25, 0xbc, 0x8b, 0x96, 0xb5,
-0x28, 0xdc, 0xb0, 0x07, 0xdb, 0xd7, 0x79, 0x3e,
-0x9a, 0x73, 0x8f, 0x70, 0x17, 0xfd, 0x33, 0xfd,
-0xaa, 0x7e, 0x66, 0x7c, 0x05, 0x8c, 0x5b, 0xef,
-0x29, 0x5c, 0x68, 0x7e, 0x45, 0x2f, 0xb1, 0x5b,
-0xd0, 0x68, 0x05, 0xa3, 0x02, 0xba, 0xc2, 0xc2,
-0x5d, 0xdb, 0xbe, 0xc2, 0x06, 0x17, 0xde, 0x95,
-0xf8, 0x8a, 0x5e, 0x68, 0x16, 0xf2, 0xdf, 0xf5,
-0xbc, 0x01, 0x1b, 0x50, 0x29, 0xc9, 0x25, 0x02,
-0x75, 0x19, 0x9a, 0x42, 0x72, 0x05, 0xd2, 0xce,
-0x5b, 0x0a, 0x85, 0x38, 0x1a, 0x06, 0x76, 0xc1,
-0xd3, 0x0e, 0x2d, 0x9a, 0xc0, 0xba, 0x74, 0x6c,
-0xb1, 0xe7, 0x39, 0x2a, 0xfb, 0x05, 0x2c, 0x45,
-0xd0, 0x3a, 0x98, 0xd1, 0xc0, 0x8d, 0x52, 0x30,
-0x0a, 0xc1, 0x68, 0x75, 0x5a, 0x94, 0x74, 0x43,
-0x08, 0x8c, 0xa5, 0x38, 0x26, 0xa4, 0xad, 0xe5,
-0x83, 0x2b, 0x34, 0xe7, 0x3a, 0xb7, 0xe7, 0x34,
-0xb4, 0x36, 0x27, 0x4b, 0x02, 0x57, 0x79, 0x98,
-0x71, 0x27, 0x37, 0xee, 0x4c, 0x83, 0xf1, 0x05,
-0xde, 0x32, 0xfb, 0xaa, 0xdb, 0x73, 0x1a, 0xed,
-0xae, 0x3b, 0x32, 0x63, 0x9a, 0xd3, 0xd0, 0x45,
-0xec, 0xf5, 0xf2, 0x0a, 0x5f, 0x22, 0x77, 0x9a,
-0x57, 0x85, 0x72, 0x16, 0x66, 0x8c, 0xaf, 0x18,
-0x60, 0xb4, 0xe4, 0xdc, 0x05, 0x2d, 0x7f, 0x8e,
-0x06, 0xb4, 0x50, 0xd6, 0xf2, 0x3f, 0x84, 0xaf,
-0x10, 0x77, 0x57, 0x28, 0xc7, 0x70, 0xd6, 0x0b,
-0x1e, 0x34, 0x8d, 0xc8, 0x44, 0xc8, 0x18, 0xb2,
-0x65, 0xc8, 0xbc, 0x45, 0xe3, 0x5d, 0x46, 0x66,
-0x8c, 0xd3, 0xa2, 0x09, 0x82, 0xbd, 0x5e, 0x31,
-0x80, 0x62, 0x78, 0x5b, 0x28, 0xba, 0x6d, 0x94,
-0x91, 0xb1, 0x2d, 0xd9, 0x86, 0xc6, 0x0d, 0x83,
-0xb5, 0x08, 0x33, 0xec, 0xf5, 0xca, 0x89, 0x09,
-0x78, 0xff, 0x5c, 0x45, 0x33, 0xc6, 0x32, 0x34,
-0x8c, 0xab, 0x12, 0xd0, 0xf2, 0x17, 0x68, 0xb8,
-0x5a, 0xb2, 0xbb, 0x60, 0xb0, 0x35, 0xcf, 0x7d,
-0x86, 0x14, 0x23, 0x27, 0x59, 0x41, 0xff, 0xc7,
-0x1b, 0xa6, 0x84, 0x77, 0x1d, 0x6b, 0xd1, 0xc9,
-0xa9, 0xec, 0x31, 0xf6, 0x7a, 0x35, 0xc8, 0xa1,
-0x56, 0xaf, 0xde, 0xa8, 0x68, 0x07, 0x27, 0x30,
-0x74, 0x66, 0x14, 0xc6, 0xe5, 0x10, 0xe5, 0x2d,
-0x25, 0x7a, 0x6b, 0x69, 0xd6, 0x18, 0xfb, 0xf9,
-0x6a, 0x25, 0xf0, 0xa2, 0xf6, 0x62, 0xe5, 0x9b,
-0xf9, 0xf1, 0x06, 0xcd, 0xb4, 0xe8, 0x30, 0x79,
-0x59, 0x63, 0xec, 0xf5, 0x12, 0x85, 0x10, 0x5d,
-0xa8, 0x17, 0x2b, 0xf2, 0xc1, 0x09, 0x0c, 0xfd,
-0xe3, 0xbb, 0x2c, 0xc3, 0xbe, 0xce, 0xf3, 0x0d,
-0x39, 0xb1, 0xd6, 0xc5, 0xfa, 0x97, 0x95, 0xab,
-0xe2, 0xff, 0x09, 0xa3, 0x6d, 0x5c, 0x0b, 0xb5,
-0xd7, 0xab, 0xe1, 0x8f, 0xac, 0x30, 0x37, 0x48,
-0xa6, 0x85, 0xe2, 0xef, 0xca, 0x1a, 0xe3, 0x9a,
-0xe7, 0x18, 0x4c, 0xdd, 0x7c, 0x9c, 0x4c, 0xcb,
-0xd8, 0x20, 0x2f, 0x6b, 0xbd, 0x86, 0x1b, 0xac,
-0x25, 0x0a, 0x5d, 0xac, 0x25, 0x5a, 0xf8, 0x08,
-0xb4, 0x30, 0x63, 0x83, 0xdd, 0xe2, 0x5c, 0x27,
-0x96, 0xb3, 0x58, 0xf8, 0x32, 0xf9, 0x73, 0x7a,
-0xd5, 0x9f, 0x60, 0xdc, 0x4a, 0xaf, 0x32, 0xac,
-0xf7, 0x06, 0xcd, 0x15, 0xe6, 0xd1, 0xe6, 0x58,
-0x49, 0x69, 0x4e, 0x96, 0x71, 0x27, 0x1a, 0xf3,
-0xed, 0x96, 0xf9, 0xc4, 0xe9, 0xfa, 0xe2, 0x98,
-0xc1, 0x24, 0xb3, 0x5e, 0x04, 0xde, 0x2a, 0x9a,
-0x22, 0x3b, 0x46, 0x91, 0x20, 0x53, 0x01, 0x0c,
-0x52, 0xc4, 0x5b, 0xa2, 0x44, 0x84, 0x96, 0x79,
-0x60, 0xc8, 0x45, 0xb0, 0xd0, 0xdc, 0xb0, 0x5b,
-0xec, 0xeb, 0x3c, 0x3f, 0x5f, 0xfa, 0x22, 0x3d,
-0x11, 0xbb, 0xa9, 0x34, 0x3f, 0xcb, 0x68, 0x07,
-0x43, 0x99, 0x2f, 0x15, 0xb2, 0x16, 0x05, 0x5b,
-0xee, 0x64, 0x5d, 0x22, 0x6f, 0xf1, 0x3a, 0x83,
-0x0d, 0x7b, 0xbd, 0xe6, 0xe7, 0xdc, 0xdd, 0x7a,
-0x57, 0xec, 0x73, 0xa5, 0xb8, 0x05, 0x80, 0xf1,
-0x95, 0xd2, 0xab, 0x0e, 0xe6, 0xb4, 0x70, 0xe3,
-0x85, 0x9c, 0x25, 0xb6, 0x71, 0x77, 0xeb, 0x66,
-0xde, 0x05, 0x63, 0xf4, 0xaf, 0x94, 0x96, 0xbc,
-0x60, 0x8f, 0xb1, 0xf7, 0x9d, 0x5b, 0xe7, 0x4b,
-0x77, 0xd3, 0x53, 0xb1, 0x9b, 0x4b, 0xf3, 0x5f,
-0xc8, 0x18, 0x2d, 0x68, 0x28, 0x76, 0x8b, 0xf2,
-0x19, 0xa7, 0xeb, 0xa0, 0x65, 0xe4, 0x39, 0x2d,
-0x66, 0xa1, 0x7d, 0x1d, 0xfb, 0x6b, 0xbc, 0xf0,
-0x27, 0x19, 0xf6, 0x7b, 0x9e, 0x8c, 0xdf, 0xbf,
-0xfe, 0xb7, 0x0c, 0x4a, 0xac, 0x4f, 0xae, 0xb0,
-0x84, 0xc2, 0x6e, 0x55, 0x9a, 0xf3, 0xe0, 0xff,
-0x86, 0x21, 0x38, 0x2d, 0xf6, 0x75, 0x6e, 0x35,
-0x72, 0x5a, 0x84, 0xbb, 0xc8, 0x57, 0xc8, 0x55,
-0xe6, 0x78, 0x43, 0xe6, 0x46, 0xce, 0x04, 0x5d,
-0x8e, 0x61, 0xfd, 0xae, 0x5b, 0x1b, 0x48, 0x8c,
-0xc2, 0x4e, 0xa4, 0xe0, 0x26, 0xf5, 0x31, 0x46,
-0xa1, 0xd3, 0xd2, 0x36, 0x6e, 0x0c, 0xb5, 0xe7,
-0xb9, 0x01, 0x5e, 0x56, 0x8a, 0xde, 0xa0, 0x68,
-0xf1, 0x3f, 0xc9, 0xc8, 0x5c, 0x27, 0xc7, 0x68,
-0x6d, 0xd6, 0xef, 0x54, 0xae, 0x12, 0x1d, 0x43,
-0x1e, 0xd7, 0x62, 0x1b, 0xd2, 0xb8, 0x16, 0x62,
-0xaf, 0x97, 0x24, 0x34, 0x9b, 0x77, 0x86, 0xae,
-0xf2, 0xe6, 0x34, 0x66, 0x0c, 0xcd, 0x34, 0xc6,
-0xb4, 0x38, 0x06, 0x01, 0xa3, 0x90, 0xb7, 0x34,
-0x61, 0x8b, 0x61, 0xaf, 0x97, 0x42, 0x1a, 0x88,
-0x46, 0x65, 0x5d, 0x70, 0x19, 0x45, 0xe8, 0x80,
-0x66, 0xb5, 0x38, 0x86, 0x08, 0x86, 0xc0, 0x5b,
-0x64, 0x6c, 0xb1, 0x2f, 0x73, 0x6b, 0x83, 0x48,
-0x28, 0xd5, 0x75, 0x45, 0x11, 0x33, 0x86, 0x36,
-0xae, 0x25, 0xcb, 0x28, 0xe3, 0x46, 0x3b, 0xb6,
-0xd8, 0xbf, 0xeb, 0xd6, 0x89, 0xf6, 0xaf, 0x18,
-0x89, 0x8e, 0x6d, 0xb1, 0x0d, 0x7d, 0x6c, 0x8b,
-0x35, 0xcf, 0xcf, 0xff, 0x67, 0xf6, 0xaf, 0x3f,
-0x66, 0xd8, 0x3f, 0x8c, 0xc8, 0x21, 0xc1, 0x4b,
-0x1a, 0x89, 0x66, 0xfe, 0x69, 0x86, 0x73, 0x9d,
-0x71, 0xbb, 0xd5, 0x00, 0x18, 0xf9, 0x68, 0xbc,
-0x40, 0x66, 0x12, 0xaf, 0x21, 0x19, 0xd0, 0x72,
-0x13, 0xb6, 0x68, 0xb6, 0xd1, 0x4c, 0x4e, 0xe0,
-0x98, 0x18, 0xfb, 0x2b, 0xeb, 0x93, 0x23, 0xcc,
-0x30, 0x16, 0x36, 0x17, 0x97, 0xc8, 0xcf, 0x4f,
-0x6c, 0xb4, 0x4c, 0xd0, 0x35, 0x39, 0xd3, 0xe2,
-0x5c, 0xa7, 0x3c, 0x67, 0x79, 0xef, 0x5f, 0x86,
-0xbe, 0xbc, 0xf6, 0xaa, 0xc7, 0xc6, 0x19, 0xa7,
-0xb9, 0xd1, 0x61, 0xb7, 0x6c, 0x06, 0xe3, 0xc6,
-0xd6, 0xec, 0x31, 0x99, 0xf9, 0x61, 0x5b, 0xad,
-0x48, 0xf8, 0xde, 0x84, 0x46, 0x02, 0x8c, 0x3c,
-0xde, 0x52, 0x41, 0x14, 0x43, 0xc4, 0xdf, 0x35,
-0xd5, 0xc8, 0xe3, 0x5d, 0x15, 0xf0, 0xbb, 0xc4,
-0x66, 0xb2, 0x11, 0xc7, 0x18, 0x6c, 0x8c, 0x7d,
-0x1f, 0x36, 0x2d, 0x2d, 0x2c, 0x6d, 0x9f, 0x5f,
-0x56, 0xd8, 0x31, 0xde, 0x90, 0xc1, 0xa0, 0xf3,
-0xcb, 0xb4, 0xfe, 0xa6, 0xa5, 0x02, 0xb4, 0xe8,
-0x85, 0xab, 0x9b, 0xfc, 0x82, 0x17, 0x0d, 0xbb,
-0xab, 0x30, 0xf3, 0x7d, 0x6e, 0x6d, 0x2e, 0xbc,
-0x53, 0xfe, 0x73, 0xe1, 0x2a, 0x23, 0xcb, 0x20,
-0x7f, 0x2e, 0x94, 0x18, 0x39, 0xac, 0x85, 0x94,
-0x40, 0x8b, 0x00, 0x2d, 0x1a, 0x74, 0x15, 0x16,
-0x36, 0x41, 0xcb, 0x55, 0xf3, 0x72, 0xd8, 0x18,
-0x72, 0x55, 0xe6, 0xb9, 0x28, 0x6b, 0x50, 0x9a,
-0xe3, 0x25, 0xfa, 0x03, 0x19, 0x43, 0xc0, 0xe7,
-0x98, 0xb7, 0x10, 0xbb, 0x85, 0x34, 0x53, 0x7b,
-0x0c, 0x18, 0x39, 0x38, 0x86, 0xb5, 0x38, 0x5f,
-0xc7, 0x23, 0x88, 0xd4, 0x48, 0x6a, 0x01, 0xd9,
-0x6d, 0x98, 0xe3, 0x5a, 0x3e, 0xce, 0x70, 0xae,
-0xe3, 0x95, 0xbe, 0x44, 0x4e, 0x98, 0x37, 0x85,
-0xf2, 0x17, 0xfe, 0x49, 0x46, 0xe6, 0x77, 0x39,
-0x70, 0x60, 0x8c, 0x51, 0x31, 0xce, 0xd0, 0xaf,
-0x3a, 0x34, 0x6e, 0x70, 0xe6, 0xfe, 0x29, 0x8d,
-0xbe, 0x50, 0x34, 0xa3, 0x7d, 0xed, 0x92, 0x8c,
-0x41, 0x8c, 0x83, 0x45, 0x21, 0xd9, 0xbb, 0x44,
-0x52, 0xa2, 0x7d, 0xda, 0x8c, 0x76, 0xaf, 0x50,
-0xae, 0x19, 0x26, 0xb6, 0x94, 0x49, 0xc4, 0xe8,
-0x43, 0x43, 0x90, 0x48, 0xf4, 0xa0, 0x16, 0x92,
-0xd7, 0x96, 0x39, 0xbf, 0xab, 0xfe, 0xca, 0xa2,
-0x2b, 0xff, 0x76, 0xe5, 0xdc, 0x95, 0x4b, 0x7f,
-0x9a, 0x41, 0xfe, 0xbb, 0x3f, 0xc1, 0xdf, 0xa8,
-0xb3, 0x0e, 0xbe, 0x98, 0xda, 0xb1, 0x22, 0x63,
-0xbc, 0xb6, 0x60, 0xd6, 0xc1, 0xd7, 0xce, 0xed,
-0x58, 0x51, 0x7f, 0x41, 0xbd, 0xf9, 0xdf, 0xde,
-0x4d, 0xed, 0x3a, 0x13, 0x7c, 0x6d, 0xd1, 0x95,
-0x97, 0x5f, 0x3b, 0x77, 0xe5, 0x4c, 0xf0, 0x37,
-0xbe, 0x67, 0x0e, 0xbe, 0xc8, 0xbe, 0xcf, 0x82,
-0x59, 0xcf, 0x5d, 0x39, 0xb7, 0xeb, 0x8c, 0x73,
-0x9d, 0x9a, 0xba, 0x85, 0xc7, 0x8b, 0x6b, 0xfa,
-0x8e, 0x9e, 0xcd, 0x18, 0xf5, 0x60, 0xd4, 0x9f,
-0x3b, 0x7a, 0xb6, 0xfe, 0xe2, 0xc2, 0xe3, 0xff,
-0xf6, 0x61, 0xdf, 0x71, 0x68, 0x81, 0x5f, 0x51,
-0x7f, 0xee, 0x0a, 0x8c, 0x59, 0x04, 0x63, 0xd8,
-0x75, 0x60, 0xcc, 0x95, 0x73, 0xc7, 0xcf, 0x3a,
-0xd7, 0x99, 0x73, 0xff, 0x17, 0x5e, 0x7b, 0x64,
-0xd7, 0xe0, 0xbb, 0xa3, 0x19, 0x63, 0x4a, 0xf4,
-0x17, 0x60, 0x3c, 0x64, 0xb7, 0x3c, 0x74, 0xda,
-0xe9, 0x2a, 0x2f, 0xfd, 0xc2, 0xab, 0xc5, 0x5d,
-0x7c, 0xf0, 0x2f, 0x58, 0x4b, 0xe6, 0x87, 0x49,
-0x77, 0x93, 0xc9, 0xe4, 0x86, 0x92, 0xbc, 0xe7,
-0x49, 0x8b, 0xb9, 0xb9, 0x79, 0x92, 0x17, 0x8d,
-0x79, 0x9b, 0xb5, 0xcf, 0xc9, 0xf9, 0xcf, 0x8b,
-0x2d, 0xc6, 0xe6, 0xc2, 0x1b, 0xe4, 0x42, 0x68,
-0x01, 0xbc, 0x7c, 0xb5, 0x9c, 0xd7, 0x0b, 0xc6,
-0x64, 0xe8, 0xca, 0xeb, 0x95, 0xa1, 0x8b, 0xfc,
-0xad, 0x7c, 0x8d, 0xb3, 0xee, 0x72, 0xce, 0x8c,
-0x56, 0x44, 0xbe, 0x39, 0x36, 0x28, 0xfe, 0xf3,
-0xbe, 0xdc, 0xbb, 0x85, 0x53, 0xc6, 0x3f, 0x6b,
-0x77, 0xb6, 0x0b, 0x77, 0xe7, 0x9c, 0x32, 0xfe,
-0x4c, 0xcb, 0xc7, 0xae, 0xa8, 0xf1, 0x35, 0xe8,
-0x62, 0x63, 0xfe, 0xd9, 0x86, 0xd2, 0x8d, 0x5a,
-0xe6, 0x7d, 0x28, 0x0a, 0x31, 0x1a, 0x4d, 0xa2,
-0xe7, 0x00, 0x5e, 0x5c, 0x94, 0x00, 0x16, 0xce,
-0x02, 0xce, 0x68, 0x94, 0xb0, 0x96, 0x64, 0xc6,
-0xcd, 0xb0, 0xc7, 0x88, 0x4a, 0x8e, 0x99, 0xf9,
-0x61, 0x4b, 0x00, 0x45, 0xe6, 0x96, 0x0a, 0xf1,
-0x92, 0x25, 0x00, 0x39, 0xe7, 0x13, 0xa1, 0x5d,
-0x68, 0x19, 0x83, 0x58, 0xdb, 0x65, 0x34, 0xae,
-0x82, 0x16, 0x39, 0x26, 0x64, 0xba, 0xc4, 0x49,
-0xa4, 0x95, 0xda, 0x57, 0x51, 0x9a, 0xee, 0x29,
-0x9c, 0xdc, 0xfe, 0xb9, 0x90, 0xdc, 0x2f, 0xdf,
-0x23, 0x4c, 0xa6, 0xb7, 0xea, 0x85, 0xdc, 0xf8,
-0x9c, 0x5e, 0x78, 0x98, 0xdc, 0x61, 0x19, 0xd0,
-0x52, 0x62, 0x7e, 0xce, 0xe9, 0x0a, 0x70, 0xa3,
-0x7d, 0x92, 0x2e, 0xb8, 0xbe, 0xcf, 0x52, 0xf6,
-0x8f, 0x16, 0xd2, 0xf1, 0xc0, 0x59, 0x76, 0x5a,
-0x0c, 0x6e, 0x10, 0x12, 0x93, 0x4b, 0xe1, 0xc5,
-0x68, 0x8d, 0x99, 0x4f, 0x32, 0xef, 0x31, 0x45,
-0xae, 0x40, 0xe4, 0x6b, 0x68, 0x09, 0xf9, 0x06,
-0x21, 0x8f, 0x34, 0xb4, 0x68, 0x1b, 0x00, 0x0b,
-0x83, 0xa1, 0x43, 0x4b, 0x05, 0x47, 0xd0, 0x09,
-0x70, 0x8a, 0x59, 0x8b, 0x26, 0xcb, 0x60, 0xcc,
-0x8f, 0x41, 0x0b, 0x8c, 0xa1, 0x0d, 0x31, 0xcd,
-0xb9, 0xce, 0x74, 0x39, 0x4a, 0x8b, 0xf4, 0xa6,
-0x4d, 0x85, 0x31, 0x72, 0x7b, 0x6f, 0x91, 0x2e,
-0x3f, 0x55, 0x58, 0x4e, 0x16, 0x40, 0x8b, 0xbc,
-0xbd, 0xd0, 0x2f, 0x47, 0xcd, 0xa2, 0x2d, 0x4d,
-0xdb, 0x05, 0xbf, 0x76, 0x7b, 0x6b, 0x51, 0x4a,
-0x7e, 0xea, 0x8b, 0x7e, 0x82, 0x83, 0x4b, 0xb6,
-0x17, 0x96, 0xcb, 0x0b, 0x5a, 0x8b, 0x92, 0x4d,
-0xdb, 0x0b, 0xed, 0x6f, 0x43, 0xf3, 0xc9, 0x97,
-0x48, 0x89, 0x99, 0x13, 0x22, 0x05, 0xe4, 0x4b,
-0x54, 0x46, 0x63, 0x21, 0x29, 0xa6, 0xc4, 0x2c,
-0x0c, 0x09, 0x0b, 0x61, 0x13, 0x83, 0x96, 0x99,
-0x60, 0xc0, 0x18, 0x22, 0x68, 0x64, 0xa1, 0x3d,
-0xd8, 0x0b, 0x63, 0xd0, 0x10, 0xf8, 0xb1, 0x16,
-0x51, 0x60, 0x9e, 0x9a, 0xe0, 0x97, 0xca, 0x2d,
-0x64, 0x13, 0xf9, 0x6b, 0x92, 0xd3, 0x2a, 0x2f,
-0x36, 0x9a, 0xc9, 0x0c, 0x98, 0x09, 0x83, 0xcc,
-0x83, 0x9f, 0x41, 0xf0, 0x3f, 0x58, 0xa2, 0x79,
-0x72, 0xe1, 0xbc, 0x79, 0x04, 0xc0, 0x25, 0x4e,
-0x09, 0xe2, 0x69, 0x59, 0x23, 0x85, 0x00, 0xac,
-0x05, 0x7e, 0x5c, 0x07, 0xd7, 0x31, 0xd0, 0x75,
-0x20, 0xba, 0x8e, 0xd3, 0x47, 0xda, 0x91, 0xd5,
-0x00, 0x13, 0x2a, 0xa9, 0x80, 0xa8, 0x39, 0x17,
-0x5b, 0x10, 0x86, 0xe3, 0x06, 0x43, 0xcb, 0x74,
-0x85, 0xed, 0x34, 0x82, 0x1f, 0xf7, 0xa7, 0x90,
-0xb5, 0x51, 0x39, 0xd7, 0x81, 0x5b, 0x62, 0x13,
-0xfc, 0x33, 0x3a, 0x15, 0xf1, 0xde, 0xf8, 0x1b,
-0xf8, 0xf7, 0x72, 0x63, 0xcc, 0x2b, 0x2a, 0x44,
-0xff, 0x86, 0x2f, 0x8a, 0xc8, 0x6f, 0x9b, 0x42,
-0xea, 0x89, 0x89, 0x9b, 0xd8, 0x18, 0x76, 0x23,
-0x61, 0x17, 0xbf, 0x8e, 0x26, 0x18, 0x22, 0xae,
-0xfb, 0x34, 0x92, 0xd7, 0x01, 0x4b, 0xb9, 0x89,
-0xce, 0x27, 0x79, 0x70, 0x1d, 0xb8, 0x72, 0x2e,
-0x18, 0x62, 0x8c, 0x75, 0x5d, 0xc3, 0xba, 0xb0,
-0x05, 0xcf, 0x37, 0xe0, 0xa6, 0x25, 0xd7, 0x50,
-0x05, 0x5b, 0xfc, 0x24, 0xcf, 0xe2, 0xb9, 0x35,
-0x6e, 0xb5, 0xf1, 0xb2, 0x01, 0x10, 0xf8, 0x01,
-0x17, 0x5e, 0x9e, 0x07, 0x06, 0x09, 0xd1, 0xb5,
-0x56, 0xcb, 0x03, 0xde, 0x2d, 0x5f, 0xe3, 0x5d,
-0xd8, 0x52, 0x7a, 0x30, 0x17, 0xc7, 0x34, 0x28,
-0x85, 0x94, 0xfb, 0x51, 0x06, 0xb1, 0xfc, 0x0d,
-0x3d, 0xe3, 0x6f, 0xf4, 0xa3, 0x41, 0x99, 0x11,
-0x16, 0xc6, 0x20, 0x68, 0x98, 0x7a, 0x7c, 0x39,
-0xf3, 0x31, 0x24, 0xb3, 0x2f, 0xe3, 0x14, 0x86,
-0x7a, 0xe1, 0x05, 0xee, 0x25, 0xcf, 0x21, 0x48,
-0x0f, 0x49, 0x0a, 0x39, 0x82, 0xdf, 0x27, 0x85,
-0x06, 0xd6, 0x18, 0xeb, 0x92, 0x62, 0x34, 0xca,
-0x1a, 0xef, 0x7a, 0x0e, 0x25, 0x64, 0x42, 0x8d,
-0xd8, 0x85, 0x88, 0x1e, 0xf0, 0xa9, 0x69, 0xff,
-0x2e, 0x98, 0xe7, 0x5e, 0x78, 0x3c, 0xbd, 0x39,
-0x6d, 0x88, 0x46, 0x53, 0x57, 0x03, 0x28, 0x96,
-0x5b, 0x5a, 0x17, 0x83, 0x51, 0xd8, 0x46, 0x74,
-0xec, 0x02, 0xf7, 0x1b, 0xd0, 0x71, 0x69, 0xe8,
-0x73, 0xd0, 0x02, 0x83, 0x17, 0x87, 0x00, 0xba,
-0xb6, 0x01, 0x6e, 0x62, 0x60, 0xd6, 0xfe, 0x5d,
-0x02, 0xe2, 0x65, 0xbc, 0x72, 0x61, 0x5c, 0x0b,
-0x01, 0x04, 0x96, 0x10, 0x0b, 0xa3, 0xaf, 0x3e,
-0x1f, 0x0c, 0xd9, 0x4f, 0x27, 0x73, 0x74, 0x8c,
-0x5d, 0xb9, 0x68, 0x84, 0xa9, 0x97, 0x8f, 0x01,
-0xbc, 0xec, 0xfa, 0x5d, 0xcd, 0x42, 0x83, 0xbc,
-0x14, 0x66, 0x6c, 0x3e, 0xba, 0xe8, 0xa1, 0xd6,
-0xd2, 0x64, 0x2e, 0x4e, 0xa6, 0xbf, 0x55, 0x49,
-0x36, 0x20, 0x82, 0x06, 0x43, 0x9f, 0x1f, 0x10,
-0x18, 0x94, 0xe6, 0x2d, 0x61, 0x76, 0x2e, 0x91,
-0x01, 0xd7, 0x34, 0xf3, 0xbb, 0x9a, 0x65, 0x99,
-0xdc, 0x8a, 0x61, 0x47, 0x4d, 0x80, 0x9b, 0x9f,
-0x14, 0xe2, 0x11, 0x4f, 0x09, 0xcc, 0x5c, 0xa1,
-0x21, 0xe3, 0xcd, 0x7e, 0x2b, 0x11, 0x0c, 0xa7,
-0xab, 0x84, 0x9f, 0x10, 0x59, 0x2d, 0xb7, 0x92,
-0xc2, 0x06, 0xfe, 0xbb, 0xa2, 0x70, 0x57, 0xcc,
-0xa3, 0x1a, 0xbc, 0x0d, 0x04, 0x6e, 0x34, 0xa1,
-0xd1, 0x68, 0xb5, 0x00, 0x3a, 0x46, 0xa3, 0x90,
-0x19, 0x69, 0x67, 0x8c, 0xdb, 0x20, 0x96, 0x8e,
-0xfc, 0x3c, 0x84, 0xc9, 0x51, 0x84, 0xc9, 0x71,
-0x81, 0xb4, 0x67, 0x01, 0xe7, 0x26, 0x84, 0x78,
-0x86, 0xd5, 0x45, 0x8d, 0xb2, 0x66, 0xde, 0xc5,
-0x06, 0x8b, 0x39, 0x16, 0xb8, 0x26, 0xf6, 0xef,
-0xb2, 0x91, 0xef, 0x67, 0xb2, 0xf0, 0x32, 0xc3,
-0x9e, 0xf3, 0x73, 0xef, 0x66, 0x30, 0xd9, 0x9b,
-0x2b, 0x62, 0xd7, 0x0c, 0x77, 0x97, 0x83, 0x97,
-0x2d, 0x7f, 0x5e, 0x98, 0x4f, 0xee, 0x69, 0xdd,
-0xac, 0x4f, 0x9a, 0x2d, 0x1c, 0xcb, 0xbd, 0xbb,
-0x75, 0x72, 0xec, 0x6f, 0x4b, 0x0b, 0x5f, 0x90,
-0xef, 0xa6, 0xcc, 0x38, 0x26, 0x63, 0xcb, 0xa4,
-0xd2, 0xa9, 0x2f, 0xe4, 0xde, 0x1d, 0x9f, 0x9c,
-0xfe, 0x32, 0x74, 0xc1, 0x98, 0xcd, 0x69, 0x3e,
-0xa6, 0x75, 0xb2, 0xfe, 0xb9, 0xd2, 0x42, 0xeb,
-0xfe, 0x89, 0x0a, 0xf3, 0xc5, 0x7f, 0x84, 0xbf,
-0xba, 0x01, 0x20, 0x30, 0xb9, 0x9b, 0x6e, 0x8e,
-0xfd, 0x59, 0xa9, 0x80, 0xc6, 0x5d, 0x70, 0x9d,
-0xbc, 0x63, 0xe4, 0x6e, 0xab, 0x4b, 0xc4, 0xae,
-0x49, 0x00, 0xa5, 0x05, 0xf8, 0xf3, 0xf4, 0x24,
-0x68, 0xc9, 0xc1, 0x16, 0x18, 0x63, 0x5d, 0xa7,
-0x99, 0xe1, 0x65, 0x2f, 0x20, 0x5f, 0xf2, 0x02,
-0x6e, 0x64, 0x30, 0xf8, 0xaa, 0x17, 0x72, 0xcb,
-0xe8, 0xc2, 0xd8, 0xd7, 0xc0, 0x20, 0x33, 0x5a,
-0xd7, 0x42, 0xd7, 0x9f, 0xa3, 0x71, 0xd7, 0x92,
-0xaf, 0x95, 0xde, 0x89, 0x5f, 0xc3, 0x1b, 0xfb,
-0x12, 0xb4, 0xc8, 0x38, 0xf8, 0x9f, 0x01, 0xd1,
-0xdb, 0xcf, 0x57, 0x91, 0x30, 0x8d, 0xfe, 0x0f,
-0xbd, 0x28, 0x4a, 0x36, 0x08, 0xcb, 0x60, 0x0e,
-0xbf, 0x14, 0x95, 0x37, 0x08, 0x15, 0x0f, 0xfc,
-0x45, 0x52, 0x54, 0xe4, 0x0d, 0xa4, 0x02, 0x6e,
-0x3f, 0xb6, 0x6d, 0xdd, 0x4b, 0x6f, 0x4b, 0x0a,
-0xd1, 0x9c, 0xb8, 0x10, 0x6e, 0xbf, 0x4b, 0xbf,
-0x1a, 0xc7, 0x40, 0x8b, 0x0b, 0x2f, 0x1b, 0xb0,
-0xee, 0x5f, 0xeb, 0x2d, 0x8d, 0xe5, 0x96, 0x92,
-0x07, 0x73, 0x96, 0xd0, 0xd2, 0xf4, 0x7c, 0xc0,
-0xc2, 0xe4, 0x6b, 0x66, 0x69, 0x5a, 0x44, 0xa3,
-0xdc, 0x54, 0x62, 0xb9, 0xb3, 0x85, 0x5c, 0x19,
-0xbb, 0x10, 0x26, 0xcb, 0x5f, 0xa3, 0xa5, 0xb1,
-0x2f, 0x83, 0x81, 0x83, 0xe1, 0xaf, 0x04, 0xfb,
-0x3d, 0xdf, 0x14, 0x93, 0xef, 0x9b, 0x57, 0x40,
-0x1a, 0x93, 0x64, 0xb9, 0xbc, 0x52, 0x98, 0x42,
-0x3e, 0x47, 0x0b, 0xd3, 0x25, 0x2b, 0x85, 0x02,
-0xf2, 0x15, 0x5a, 0xf8, 0x16, 0x99, 0x2d, 0x5c,
-0x0d, 0x2d, 0x70, 0xeb, 0x40, 0x17, 0xc5, 0x2e,
-0x30, 0xbe, 0x4a, 0xe1, 0xf6, 0xc2, 0x31, 0x53,
-0x48, 0x03, 0xb5, 0xcf, 0x7b, 0xa3, 0xc2, 0x1d,
-0x64, 0x19, 0xcd, 0xd3, 0xc5, 0xe5, 0xda, 0xf7,
-0xc1, 0x00, 0x08, 0x1c, 0x15, 0x36, 0x90, 0x65,
-0xc8, 0x62, 0xa6, 0x08, 0x1b, 0xe4, 0x0a, 0x06,
-0x8a, 0xe1, 0x69, 0x5a, 0x46, 0xaf, 0x49, 0xca,
-0x51, 0x84, 0xc9, 0xa6, 0x92, 0xcc, 0x85, 0x49,
-0xc0, 0x16, 0x78, 0xf4, 0xec, 0xef, 0x03, 0xcf,
-0xa9, 0xac, 0xdb, 0xe7, 0x51, 0x2e, 0x2c, 0x5c,
-0xca, 0x9f, 0xb8, 0x18, 0x6b, 0x81, 0x2e, 0x0c,
-0xfa, 0x42, 0x97, 0x58, 0xa2, 0xb7, 0x6a, 0x7a,
-0x43, 0x20, 0x33, 0xd8, 0x79, 0xbe, 0x1a, 0x64,
-0x03, 0xfc, 0xe9, 0x5b, 0xbd, 0x85, 0x0d, 0xc4,
-0x80, 0x31, 0xb2, 0x52, 0x28, 0x82, 0x51, 0x82,
-0x86, 0x24, 0x37, 0x53, 0x4d, 0x6f, 0xb2, 0xba,
-0xca, 0xac, 0x2e, 0x0d, 0xe0, 0xad, 0x35, 0x98,
-0x28, 0x85, 0xc4, 0x5e, 0x2f, 0x09, 0xb0, 0x98,
-0x37, 0x24, 0x28, 0x42, 0x23, 0xba, 0xec, 0xa1,
-0x1c, 0x34, 0xee, 0x40, 0x97, 0xdd, 0xcb, 0x9d,
-0xf8, 0x10, 0x18, 0xd0, 0x65, 0x32, 0x27, 0x1e,
-0xba, 0x4c, 0x68, 0x09, 0x60, 0x17, 0x18, 0x82,
-0x57, 0x30, 0xac, 0xef, 0x33, 0x4f, 0xb1, 0xce,
-0x76, 0x71, 0xe3, 0x25, 0xa5, 0xb0, 0x45, 0xcc,
-0x53, 0xe4, 0x06, 0x6c, 0x03, 0x2c, 0x2c, 0x37,
-0x08, 0x00, 0x93, 0x09, 0xc7, 0xcb, 0xeb, 0x9b,
-0xa0, 0x0b, 0x8f, 0x79, 0x61, 0x57, 0x9b, 0xd7,
-0xc1, 0xc6, 0x08, 0x0e, 0x5e, 0x86, 0xdf, 0x25,
-0x16, 0xd1, 0xf6, 0x64, 0x99, 0x52, 0xca, 0xb1,
-0x30, 0x51, 0x14, 0x49, 0xd4, 0x71, 0x43, 0x03,
-0x50, 0x4c, 0x18, 0x4c, 0x0e, 0xd8, 0x86, 0x85,
-0x97, 0x93, 0xcc, 0xd0, 0xc1, 0x28, 0x73, 0xf0,
-0xb2, 0x21, 0xd8, 0xfb, 0x17, 0xee, 0x4d, 0x42,
-0xa9, 0x36, 0x1f, 0xf6, 0x14, 0x99, 0x1b, 0xf6,
-0x26, 0x25, 0x73, 0xb7, 0xa7, 0x30, 0x97, 0x6d,
-0x64, 0xf3, 0xc6, 0xec, 0x5f, 0xf6, 0x7a, 0x19,
-0xe2, 0x32, 0xf2, 0x19, 0x92, 0x6b, 0x28, 0x09,
-0x72, 0x2f, 0x79, 0x94, 0x4c, 0x02, 0x9f, 0x44,
-0xac, 0x20, 0xd7, 0xe0, 0x6e, 0x95, 0x60, 0x1b,
-0x66, 0xae, 0x71, 0x1b, 0xd5, 0x70, 0xdb, 0x16,
-0x0d, 0x68, 0xb9, 0x57, 0xf8, 0x0c, 0x99, 0x64,
-0x5c, 0x83, 0x5d, 0x8f, 0xc2, 0x05, 0xf3, 0x9c,
-0xf5, 0x8a, 0xc9, 0xb5, 0xc2, 0xb5, 0xf8, 0xe6,
-0x4a, 0xca, 0xcb, 0x85, 0x02, 0x61, 0x3e, 0x25,
-0x69, 0x71, 0x3a, 0xdc, 0x87, 0x0d, 0xb4, 0x39,
-0x2d, 0x07, 0x84, 0x35, 0x44, 0x4a, 0xc2, 0x7d,
-0xb8, 0x3c, 0xa7, 0xa0, 0x75, 0x29, 0xde, 0x7e,
-0xcb, 0x61, 0xf0, 0x7c, 0xe8, 0xca, 0x0d, 0xc0,
-0x18, 0xf8, 0x2b, 0xeb, 0x3e, 0x6c, 0x86, 0x97,
-0xe4, 0x0c, 0x4d, 0xd1, 0x00, 0x0b, 0xaf, 0x25,
-0x65, 0x86, 0x57, 0x13, 0x65, 0xad, 0x97, 0xe8,
-0xcc, 0x20, 0x7d, 0x06, 0x26, 0x0a, 0x34, 0x4e,
-0x26, 0xac, 0x85, 0x42, 0x0b, 0x1a, 0x0a, 0xb1,
-0x0c, 0xa4, 0x45, 0x73, 0xf6, 0x1d, 0x92, 0x43,
-0x6e, 0x9a, 0x97, 0xdf, 0x2c, 0xb5, 0x90, 0xef,
-0xca, 0x33, 0x69, 0x7e, 0x4b, 0xa3, 0x66, 0x34,
-0x21, 0xb8, 0xc6, 0xa8, 0xe7, 0x2f, 0xe1, 0x1f,
-0x51, 0x9a, 0xa5, 0x3b, 0xc9, 0xf3, 0xf2, 0x0c,
-0xc3, 0x6b, 0xc0, 0x3f, 0xfa, 0xe7, 0xf2, 0x4d,
-0x80, 0x04, 0x1b, 0x9b, 0xb5, 0x2f, 0xc3, 0x3f,
-0x9a, 0xdf, 0xdc, 0x58, 0x42, 0x9c, 0x7d, 0xb9,
-0x51, 0x5e, 0xd2, 0x5b, 0x1a, 0x9a, 0x3f, 0x59,
-0x58, 0x85, 0x1b, 0x59, 0xcb, 0x7c, 0x2f, 0xdb,
-0xa4, 0x4a, 0x43, 0xb9, 0x60, 0x10, 0x34, 0x9c,
-0x16, 0xb8, 0x21, 0x25, 0x39, 0x66, 0xb2, 0x96,
-0x49, 0x6c, 0xd7, 0x9b, 0xe4, 0xda, 0xbf, 0x0c,
-0x4e, 0xc0, 0x44, 0xb4, 0xd6, 0x6c, 0xe0, 0xdc,
-0x00, 0x3e, 0x8b, 0xac, 0xbb, 0x3d, 0x14, 0x14,
-0xba, 0xb3, 0x06, 0xf3, 0x16, 0x70, 0x2a, 0x9c,
-0xdf, 0x25, 0x44, 0x9b, 0x96, 0x14, 0x96, 0xca,
-0xf3, 0x85, 0xf5, 0xdc, 0x97, 0x60, 0x78, 0x39,
-0x56, 0x58, 0xfa, 0x00, 0x62, 0x61, 0x0e, 0x9c,
-0x05, 0x68, 0x69, 0x28, 0x64, 0x78, 0x79, 0xad,
-0x1c, 0xd3, 0xf0, 0xdc, 0x95, 0xe3, 0x65, 0xb9,
-0xa1, 0xcc, 0xf6, 0xc3, 0x61, 0xff, 0x6a, 0x6a,
-0xd6, 0x4a, 0xe4, 0x5b, 0x73, 0x60, 0xdb, 0x6a,
-0x2e, 0x2c, 0x91, 0x73, 0x84, 0x42, 0xc3, 0x40,
-0xe3, 0x56, 0x30, 0x78, 0x97, 0xf0, 0x12, 0xb4,
-0x08, 0x25, 0x39, 0x39, 0x85, 0xd8, 0xa5, 0xe1,
-0x18, 0x81, 0xb5, 0xc8, 0x82, 0xa0, 0x19, 0xf6,
-0xf3, 0xa5, 0xc0, 0x0a, 0x94, 0xc4, 0x73, 0xc8,
-0x03, 0xf0, 0x40, 0x13, 0xed, 0x41, 0x3c, 0x2c,
-0x0a, 0x35, 0x60, 0x8b, 0xde, 0x4a, 0x62, 0x77,
-0xf0, 0xa7, 0x3f, 0x1a, 0x6b, 0x60, 0xa2, 0x39,
-0xec, 0x11, 0x2f, 0x11, 0x73, 0x74, 0x21, 0xca,
-0x5e, 0x0c, 0x38, 0xc6, 0xfa, 0x08, 0x80, 0x7c,
-0x3b, 0x48, 0x12, 0x89, 0x26, 0xcb, 0x6c, 0x2c,
-0x5c, 0x26, 0xb6, 0x62, 0x0b, 0x82, 0xe2, 0x56,
-0x6c, 0x21, 0x1e, 0x22, 0x52, 0x92, 0x6c, 0x06,
-0xa3, 0xd0, 0x1e, 0x93, 0x83, 0x06, 0x09, 0x64,
-0xf6, 0xaf, 0xcf, 0x03, 0xf2, 0x6d, 0x1f, 0x28,
-0x9b, 0xb9, 0x16, 0x8c, 0x28, 0x40, 0xe0, 0x99,
-0x0f, 0x7c, 0x5e, 0xf8, 0x92, 0xd2, 0x6e, 0x96,
-0xcd, 0xcc, 0xff, 0xbc, 0x28, 0x18, 0xe6, 0xc0,
-0x55, 0x21, 0xe5, 0xf3, 0x52, 0xb1, 0xd1, 0x07,
-0x5d, 0xde, 0xcf, 0x4b, 0x5f, 0x6c, 0x6a, 0x7f,
-0x69, 0xea, 0x4c, 0x25, 0xbf, 0xf8, 0x4b, 0xc6,
-0x09, 0xf8, 0x2b, 0x7b, 0xff, 0x82, 0x79, 0x06,
-0x0f, 0x7f, 0x33, 0x3a, 0xff, 0xfd, 0xb9, 0xe8,
-0xf3, 0xff, 0xad, 0x0b, 0x17, 0xf4, 0x4f, 0x6a,
-0x01, 0x50, 0xfc, 0x39, 0x5d, 0xe8, 0x9f, 0x74,
-0x0f, 0xb9, 0x2b, 0xfe, 0x39, 0x80, 0xc9, 0x62,
-0x8b, 0xb0, 0x89, 0xfe, 0xb3, 0x6b, 0x8c, 0x69,
-0xff, 0xb0, 0x72, 0xc5, 0x30, 0xb5, 0x50, 0x3b,
-0x7a, 0x59, 0x60, 0xcc, 0x90, 0xd7, 0x0a, 0x88,
-0x97, 0x11, 0x0b, 0x2f, 0x01, 0x50, 0x6c, 0x02,
-0x82, 0xf6, 0x2e, 0x29, 0xd7, 0xa2, 0x07, 0x39,
-0x5e, 0xd6, 0x0c, 0x40, 0xd0, 0x2e, 0xbc, 0x3c,
-0xcf, 0xbe, 0x0c, 0xe0, 0xe5, 0xcf, 0x5d, 0x02,
-0xe4, 0xfb, 0x9d, 0x1f, 0xd6, 0xff, 0x61, 0xd1,
-0x85, 0x7f, 0xbb, 0x72, 0xef, 0x95, 0x67, 0xb9,
-0x01, 0xe0, 0xf1, 0xfa, 0x3f, 0x30, 0x50, 0xfc,
-0x9d, 0x4b, 0xf5, 0x68, 0x5c, 0xfe, 0x7f, 0x0b,
-0x2f, 0x4f, 0x7a, 0xfa, 0xe5, 0x17, 0x53, 0xd6,
-0xf7, 0x79, 0xf7, 0xde, 0x5d, 0xcf, 0x06, 0x7f,
-0xb5, 0xe0, 0x3e, 0x06, 0x9c, 0xa7, 0xfc, 0x6a,
-0x01, 0x22, 0xe8, 0x6f, 0xad, 0x80, 0x96, 0xfb,
-0x0f, 0xbe, 0x9a, 0xba, 0xb0, 0x22, 0x62, 0x61,
-0xea, 0xff, 0x1b, 0x8c, 0xfb, 0xd9, 0x18, 0xe7,
-0x3a, 0x35, 0x75, 0x9f, 0x7b, 0xf1, 0xdf, 0x6a,
-0xfa, 0xac, 0xeb, 0x7c, 0x78, 0xef, 0xf1, 0x67,
-0x6b, 0x6e, 0x5e, 0x78, 0x81, 0x01, 0xe7, 0xeb,
-0x6f, 0x66, 0x08, 0xfa, 0xdb, 0x67, 0xa1, 0xe5,
-0x4a, 0x71, 0xa4, 0xef, 0xe2, 0xd9, 0x7a, 0x0b,
-0x53, 0x5f, 0x02, 0xe3, 0x0a, 0x1b, 0xe3, 0x5c,
-0x67, 0xce, 0x14, 0xa3, 0xaf, 0x68, 0xc6, 0xa0,
-0x57, 0x98, 0xd3, 0xf2, 0x85, 0xe7, 0x1e, 0xd9,
-0x25, 0x9f, 0xb9, 0x65, 0x8e, 0x16, 0x7d, 0x6e,
-0xc3, 0x8c, 0xf6, 0x77, 0x47, 0x25, 0xed, 0x0b,
-0x2f, 0x14, 0xef, 0x1a, 0xcc, 0x1f, 0x85, 0xae,
-0xd7, 0x1e, 0x49, 0xb5, 0x9f, 0xf9, 0xe6, 0x9c,
-0x95, 0xd1, 0x57, 0x8b, 0x6e, 0x6e, 0x5f, 0xfb,
-0xcd, 0x39, 0xa5, 0x5f, 0x78, 0x0d, 0xc7, 0x9c,
-0x76, 0xae, 0x23, 0xb6, 0x93, 0x2d, 0x24, 0xf0,
-0x8f, 0x1e, 0x8d, 0x1b, 0x86, 0xdb, 0x58, 0x15,
-0xca, 0xb4, 0x1c, 0x75, 0x77, 0x79, 0x0f, 0xda,
-0x63, 0x9c, 0xcb, 0xb8, 0x42, 0x83, 0xcc, 0x11,
-0x23, 0xee, 0x50, 0x86, 0x65, 0x64, 0x87, 0x0f,
-0x49, 0x56, 0x97, 0x73, 0x42, 0xd6, 0x8e, 0xcc,
-0x5b, 0x06, 0x7b, 0x29, 0x4c, 0x64, 0x74, 0xb0,
-0x54, 0x2b, 0x71, 0x8c, 0xe1, 0x74, 0x11, 0x6b,
-0xe7, 0xb1, 0xbe, 0xc6, 0x3f, 0xea, 0x13, 0x7c,
-0x0d, 0x65, 0x52, 0x38, 0xd3, 0x72, 0xd4, 0xd5,
-0xe5, 0x0e, 0x70, 0x3a, 0xbf, 0x8b, 0x8e, 0x3b,
-0xf8, 0x03, 0xe3, 0xe8, 0xb8, 0x96, 0x8f, 0x33,
-0xf8, 0xef, 0xfa, 0x4f, 0x0f, 0xff, 0x63, 0x57,
-0x62, 0xd7, 0x61, 0x34, 0x77, 0x1d, 0xfc, 0x7d,
-0xc9, 0x0d, 0x36, 0xa2, 0x03, 0x46, 0x58, 0x2d,
-0xe2, 0x98, 0x2e, 0x85, 0x0d, 0x26, 0x56, 0x8b,
-0xfd, 0x99, 0xf8, 0x1f, 0x39, 0xfa, 0x9f, 0xfd,
-0x46, 0xf6, 0xf7, 0x91, 0x3d, 0xed, 0xe2, 0x16,
-0xb2, 0xdd, 0x98, 0xae, 0xfd, 0x69, 0x86, 0x28,
-0xd8, 0xbf, 0x6b, 0xfc, 0x32, 0xfd, 0xef, 0x18,
-0xce, 0xfc, 0x7c, 0xd2, 0xfd, 0xf3, 0x49, 0x06,
-0xb1, 0xef, 0x9f, 0x49, 0x21, 0xe1, 0x28, 0xf9,
-0x47, 0x32, 0xd9, 0xfc, 0x93, 0x8c, 0x83, 0xf2,
-0x7f, 0xe5, 0xfb, 0x4c, 0x36, 0xed, 0x16, 0x31,
-0x73, 0x23, 0xfe, 0x09, 0xb7, 0x8d, 0xe6, 0xb4,
-0x64, 0x3e, 0x7f, 0xca, 0xcd, 0xa7, 0x65, 0xdf,
-0x85, 0x38, 0x3f, 0xe6, 0x1f, 0x7b, 0x59, 0x7e,
-0xdc, 0xc7, 0x9b, 0xf9, 0x2b, 0x9e, 0x1f, 0x15,
-0xfa, 0x53, 0xae, 0x92, 0x75, 0x45, 0x83, 0xfd,
-0x2f, 0xa4, 0xff, 0x57, 0xaf, 0x63, 0x4d, 0xd1,
-0x24, 0xf3, 0xbf, 0x78, 0x21, 0x61, 0xf8, 0xbf,
-0x78, 0x81, 0xff, 0x43, 0x9f, 0xfa, 0x2b, 0x57,
-0xae, 0x98, 0x7f, 0xba, 0xf1, 0xe9, 0x75, 0xfe,
-0x5f, 0xbe, 0xce, 0x04, 0xdb, 0xf1, 0xff, 0x8e,
-0xe1, 0x5c, 0xe7, 0xbf, 0xf8, 0x5e, 0xcd, 0x5c,
-0x67, 0xdc, 0x9e, 0xfb, 0x31, 0x86, 0x6b, 0xa7,
-0x9e, 0xe0, 0xbd, 0x4a, 0xc8, 0x7f, 0xfe, 0x5f,
-0xb7, 0x5c, 0x08, 0x32, 0xd1, 0xbe, 0xfc, 0xdf,
-0xb2, 0x9b, 0xfe, 0xf7, 0xee, 0xcb, 0xce, 0x56,
-0x3b, 0x76, 0x83, 0xfe, 0x24, 0x23, 0xeb, 0xfb,
-0xfc, 0x89, 0x6f, 0xfa, 0xb1, 0xfb, 0x32, 0xc1,
-0x1d, 0xf6, 0xe8, 0xf6, 0x7f, 0x9c, 0x70, 0xf3,
-0x5d, 0x15, 0x86, 0x2e, 0x97, 0x31, 0xf9, 0x30,
-0xeb, 0x72, 0x0f, 0xce, 0xfc, 0xae, 0xff, 0xbe,
-0x7d, 0x59, 0xff, 0xb8, 0x5d, 0x8f, 0x4e, 0xdc,
-0x45, 0xc6, 0xdf, 0x3f, 0x0a, 0xdb, 0x97, 0xc9,
-0xb8, 0x3d, 0x97, 0xb7, 0xb0, 0x9b, 0x64, 0x7c,
-0x97, 0xc1, 0xbb, 0xfe, 0x1b, 0xf6, 0xe5, 0x8c,
-0xf1, 0x5f, 0xdb, 0x97, 0x33, 0xc6, 0x7f, 0xf3,
-0xfd, 0x4c, 0x32, 0x01, 0x91, 0x3f, 0xf1, 0xc3,
-0xf3, 0xe7, 0xff, 0xbb, 0x3e, 0x75, 0x75, 0xff,
-0xc5, 0x0b, 0xf8, 0x7c, 0xff, 0x2d, 0xdf, 0xe3,
-0xff, 0xbb, 0x9f, 0xff, 0xaf, 0xed, 0x3b, 0x9f,
-0x5e, 0xe7, 0x8f, 0x5f, 0xe7, 0xbf, 0xe7, 0x13,
-0x22, 0xba, 0x20, 0xb2, 0xff, 0x37, 0x6d, 0xf8,
-0x3f, 0x70, 0xf9, 0x4f, 0x3f, 0x9f, 0x7e, 0x3e,
-0xfd, 0x7c, 0xfa, 0xf9, 0xf4, 0xf3, 0xe9, 0xe7,
-0xd3, 0xcf, 0xa7, 0x9f, 0x4f, 0x3f, 0x9f, 0x7e,
-0x3e, 0xfd, 0x7c, 0xfa, 0xf9, 0xf4, 0xf3, 0xe9,
-0xe7, 0xd3, 0xcf, 0xa7, 0x9f, 0x4f, 0x3f, 0xff,
-0x7f, 0xf8, 0x61, 0x67, 0x4a, 0x22, 0x3b, 0x53,
-0xa2, 0xff, 0xbf, 0xfe, 0x2e, 0x9f, 0x7e, 0x3e,
-0xfd, 0x7c, 0xfa, 0xf9, 0xf4, 0xf3, 0xe9, 0xe7,
-0xd3, 0xcf, 0xa7, 0x9f, 0x4f, 0x3f, 0x9f, 0x7e,
-0x3e, 0xfd, 0x7c, 0xfa, 0xf9, 0xf4, 0xf3, 0xe9,
-0xe7, 0xd3, 0xcf, 0xa7, 0x9f, 0x4f, 0x3f, 0x9f,
-0x7e, 0xfe, 0xcf, 0x7e, 0x42, 0x04, 0x53, 0x21,
-0x3d, 0x7f, 0x15, 0x22, 0x14, 0x0b, 0x2c, 0xa4,
-0x10, 0x31, 0x8a, 0xfe, 0xfb, 0xae, 0xcd, 0xae,
-0x99, 0x13, 0x22, 0x49, 0x21, 0xf3, 0x6f, 0xcd,
-0xbe, 0x3c, 0x76, 0xdc, 0xff, 0x03, 0xe6, 0xeb,
-0xaf, 0xb2, 0x8c, 0x8c, 0x02, 0x00,
diff --git a/board/esd/tasreg/tasreg.c b/board/esd/tasreg/tasreg.c
deleted file mode 100644 (file)
index 09a90ed..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * (C) Copyright 2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <asm/m5249.h>
-#include <asm/io.h>
-
-
-/* Prototypes */
-int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len);
-int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len);
-
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* predefine these here for FPGA programming (before including fpga.c) */
-#define SET_FPGA(data)  mbar2_writeLong(MCFSIM_GPIO1_OUT, data)
-#define FPGA_DONE_STATE (mbar2_readLong(MCFSIM_GPIO1_READ) & CONFIG_SYS_FPGA_DONE)
-#define FPGA_INIT_STATE (mbar2_readLong(MCFSIM_GPIO1_READ) & CONFIG_SYS_FPGA_INIT)
-#define FPGA_PROG_ACTIVE_HIGH          /* on this platform is PROG active high!   */
-#define out32(a,b)                     /* nothing to do (gpio already configured) */
-
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int checkboard (void) {
-       ulong val;
-       uchar val8;
-
-       puts ("Board: ");
-       puts("esd TASREG");
-       val8 = ((uchar)~((uchar)mbar2_readLong(MCFSIM_GPIO1_READ) >> 4)) & 0xf;
-       printf(" (Switch=%1X)\n", val8);
-
-       /*
-        * Set LED on
-        */
-       val = mbar2_readLong(MCFSIM_GPIO1_OUT) & ~CONFIG_SYS_GPIO1_LED;
-       mbar2_writeLong(MCFSIM_GPIO1_OUT, val);   /* Set LED on */
-
-       return 0;
-};
-
-
-phys_size_t initdram (int board_type) {
-       unsigned long   junk = 0xa5a59696;
-
-       /*
-        *  Note:
-        *      RC = ([(RefreshTime/#rows) / (1/BusClk)] / 16) - 1
-        */
-
-#ifdef CONFIG_SYS_FAST_CLK
-       /*
-        * Busclk=70MHz, RefreshTime=64ms, #rows=4096 (4K)
-        * SO=1, NAM=0, COC=0, RTIM=01 (6clk refresh), RC=39
-        */
-       mbar_writeShort(MCFSIM_DCR, 0x8239);
-#elif CONFIG_SYS_PLL_BYPASS
-       /*
-        * Busclk=5.6448MHz, RefreshTime=64ms, #rows=8192 (8K)
-        * SO=1, NAM=0, COC=0, RTIM=01 (6clk refresh), RC=02
-        */
-       mbar_writeShort(MCFSIM_DCR, 0x8202);
-#else
-       /*
-        * Busclk=36MHz, RefreshTime=64ms, #rows=4096 (4K)
-        * SO=1, NAM=0, COC=0, RTIM=01 (6clk refresh), RC=22 (562 bus clock cycles)
-        */
-       mbar_writeShort(MCFSIM_DCR, 0x8222);
-#endif
-
-       /*
-        * SDRAM starts at 0x0000_0000, CASL=10, CBM=010, PS=10 (16bit port),
-        * PM=1 (continuous page mode)
-        */
-
-       /* RE=0 (keep auto-refresh disabled while setting up registers) */
-       mbar_writeLong(MCFSIM_DACR0, 0x00003324);
-
-       /* BAM=007c (bits 22,21 are bank selects; 256kB blocks) */
-       mbar_writeLong(MCFSIM_DMR0, 0x01fc0001);
-
-       /** Precharge sequence **/
-       mbar_writeLong(MCFSIM_DACR0, 0x0000332c); /* Set DACR0[IP] (bit 3) */
-       out_be32((void *)0, junk); /* write to a memory location to init. precharge */
-       udelay(0x10); /* Allow several Precharge cycles */
-
-       /** Refresh Sequence **/
-       mbar_writeLong(MCFSIM_DACR0, 0x0000b324); /* Enable the refresh bit, DACR0[RE] (bit 15) */
-       udelay(0x7d0); /* Allow gobs of refresh cycles */
-
-       /** Mode Register initialization **/
-       mbar_writeLong(MCFSIM_DACR0, 0x0000b364);  /* Enable DACR0[IMRS] (bit 6); RE remains enabled */
-       out_be32((void *)0x800, junk); /* Access RAM to initialize the mode register */
-
-       return CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
-};
-
-
-int testdram (void) {
-       /* TODO: XXX XXX XXX */
-       printf ("DRAM test not implemented!\n");
-
-       return (0);
-}
-
-
-int misc_init_r (void)
-{
-       unsigned char *dst;
-       ulong len = sizeof(fpgadata);
-       int status;
-       int index;
-       int i;
-       uchar buf[8];
-
-       dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
-       if (gunzip (dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
-               printf ("GUNZIP ERROR - must RESET board to recover\n");
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       status = fpga_boot(dst, len);
-       if (status != 0) {
-               printf("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i=0; i<4; i++) {
-                       len = dst[index];
-                       printf("FPGA: %s\n", &(dst[index+1]));
-                       index += len+3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i=20; i>0; i--) {
-                       printf("Rebooting in %2d seconds \r",i);
-                       for (index=0;index<1000;index++)
-                               udelay(1000);
-               }
-               putc ('\n');
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       puts("FPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i=0; i<4; i++) {
-               len = dst[index];
-               printf("%s ", &(dst[index+1]));
-               index += len+3;
-       }
-       putc ('\n');
-
-       free(dst);
-
-       /*
-        *
-        */
-       buf[0] = 0x00;
-       buf[1] = 0x32;
-       buf[2] = 0x3f;
-       i2c_write(0x38, 0, 0, buf, 3);
-
-       return (0);
-}
-
-
-#if 1 /* test-only: board specific test commands */
-int i2c_probe(uchar addr);
-
-/*
- */
-int do_iploop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong addr;
-
-       if (argc < 2) {
-               puts("ERROR!\n");
-               return -1;
-       }
-
-       addr = simple_strtol (argv[1], NULL, 16);
-
-       printf("i2c probe looping on addr 0x%lx (cntrl-c aborts)...\n", addr);
-
-       for (;;) {
-               i2c_probe(addr);
-
-               /* Abort if ctrl-c was pressed */
-               if (ctrlc()) {
-                       puts("\nAbort\n");
-                       return 0;
-               }
-
-               udelay(1000);
-       }
-
-       return 0;
-}
-U_BOOT_CMD(
-       iploop, 2,      1,      do_iploop,
-       "i2c probe loop <addr>",
-       ""
-);
-
-/*
- */
-int do_codec(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       uchar buf[8];
-
-       out_be16((void *)0xe0000000, 0x4000);
-
-       udelay(5000); /* wait for 5ms */
-
-       buf[0] = 0x10;
-       buf[1] = 0x07;
-       buf[2] = 0x03;
-       i2c_write(0x10, 0, 0, buf, 3);
-
-       buf[0] = 0x10;
-       buf[1] = 0x01;
-       buf[2] = 0x80;
-       i2c_write(0x10, 0, 0, buf, 3);
-
-       buf[0] = 0x10;
-       buf[1] = 0x02;
-       buf[2] = 0x03;
-       i2c_write(0x10, 0, 0, buf, 3);
-
-       buf[0] = 0x10;
-       buf[1] = 0x03;
-       buf[2] = 0x29;
-       i2c_write(0x10, 0, 0, buf, 3);
-
-       buf[0] = 0x10;
-       buf[1] = 0x04;
-       buf[2] = 0x00;
-       i2c_write(0x10, 0, 0, buf, 3);
-
-       buf[0] = 0x10;
-       buf[1] = 0x05;
-       buf[2] = 0x00;
-       i2c_write(0x10, 0, 0, buf, 3);
-
-       buf[0] = 0x10;
-       buf[1] = 0x07;
-       buf[2] = 0x02;
-       i2c_write(0x10, 0, 0, buf, 3);
-
-       return 0;
-}
-U_BOOT_CMD(
-       codec,  1,      1,      do_codec,
-       "Enable codec",
-       ""
-);
-
-/*
- */
-int do_saa(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong addr;
-       ulong instr;
-       ulong cntrl;
-       ulong data;
-       uchar buf[8];
-
-       if (argc < 5) {
-               puts("ERROR!\n");
-               return -1;
-       }
-
-       addr = simple_strtol (argv[1], NULL, 16);
-       instr = simple_strtol (argv[2], NULL, 16);
-       cntrl = simple_strtol (argv[3], NULL, 16);
-       data = simple_strtol (argv[4], NULL, 16);
-
-       buf[0] = (uchar)instr;
-       buf[1] = (uchar)cntrl;
-       buf[2] = (uchar)data;
-       i2c_write(addr, 0, 0, buf, 3);
-
-       return 0;
-}
-U_BOOT_CMD(
-       saa,    5,      1,      do_saa,
-       "Write to SAA1064 <addr> <instr> <cntrl> <data>",
-       ""
-);
-
-/*
- */
-int do_iwrite(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong addr;
-       ulong data0;
-       ulong data1;
-       ulong data2;
-       ulong data3;
-       uchar buf[8];
-       int cnt;
-
-       if (argc < 3) {
-               puts("ERROR!\n");
-               return -1;
-       }
-
-       addr = simple_strtol (argv[1], NULL, 16);
-       cnt = simple_strtol (argv[2], NULL, 16);
-       data0 = simple_strtol (argv[3], NULL, 16);
-       data1 = simple_strtol (argv[4], NULL, 16);
-       data2 = simple_strtol (argv[5], NULL, 16);
-       data3 = simple_strtol (argv[6], NULL, 16);
-
-       printf("Writing %d bytes to device %lx!\n", cnt, addr);
-       buf[0] = (uchar)data0;
-       buf[1] = (uchar)data1;
-       buf[2] = (uchar)data2;
-       buf[3] = (uchar)data3;
-       i2c_write(addr, 0, 0, buf, cnt);
-
-       return 0;
-}
-U_BOOT_CMD(
-       iwrite, 6,      1,      do_iwrite,
-       "Write n bytes to I2C-device",
-       "addr cnt data0 ... datan"
-);
-
-/*
- */
-int do_iread(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong addr;
-       ulong cnt;
-       uchar buf[32];
-       int i;
-
-       if (argc < 3) {
-               puts("ERROR!\n");
-               return -1;
-       }
-
-       addr = simple_strtol (argv[1], NULL, 16);
-       cnt = simple_strtol (argv[2], NULL, 16);
-
-       i2c_read(addr, 0, 0, buf, cnt);
-       printf("I2C Data:");
-       for (i=0; i<cnt; i++) {
-               printf(" %02X", buf[i]);
-       }
-       printf("\n");
-
-       return 0;
-}
-U_BOOT_CMD(
-       iread,  3,      1,      do_iread,
-       "Read from I2C <addr> <cnt>",
-       ""
-);
-
-/*
- */
-int do_ireadl(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong addr;
-       uchar buf[32];
-       int cnt;
-
-       if (argc < 2) {
-               puts("ERROR!\n");
-               return -1;
-       }
-
-       addr = simple_strtol (argv[1], NULL, 16);
-       cnt = 1;
-
-       printf("iread looping on addr 0x%lx (cntrl-c aborts)...\n", addr);
-
-       for (;;) {
-               i2c_read(addr, 0, 0, buf, cnt);
-
-               /* Abort if ctrl-c was pressed */
-               if (ctrlc()) {
-                       puts("\nAbort\n");
-                       return 0;
-               }
-
-               udelay(3000);
-       }
-
-       return 0;
-}
-U_BOOT_CMD(
-       ireadl, 2,      1,      do_ireadl,
-       "Read-loop from I2C <addr>",
-       ""
-);
-#endif
diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds
deleted file mode 100644 (file)
index 7f9e41c..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(m68k)
-
-SECTIONS
-{
-  .text      :
-  {
-    arch/m68k/cpu/mcf52x2/start.o      (.text*)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-
-  .reloc   :
-  {
-    __got_start = .;
-    KEEP(*(.got))
-    __got_end = .;
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-               KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)      :
-  {
-   _sbss = .;
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-   _ebss = .;
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 01365dcbd3aeddd59013340364aed70fa4b79027..f8f1834b59c119a1669fd453ef1eb2360a798a25 100644 (file)
@@ -74,13 +74,15 @@ int board_eth_init(bd_t *bis)
 #endif
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
 
diff --git a/board/esd/voh405/Kconfig b/board/esd/voh405/Kconfig
deleted file mode 100644 (file)
index d9fe9d2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_VOH405
-
-config SYS_BOARD
-       default "voh405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "VOH405"
-
-endif
diff --git a/board/esd/voh405/MAINTAINERS b/board/esd/voh405/MAINTAINERS
deleted file mode 100644 (file)
index 0039f5d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-VOH405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/voh405/
-F:     include/configs/VOH405.h
-F:     configs/VOH405_defconfig
diff --git a/board/esd/voh405/Makefile b/board/esd/voh405/Makefile
deleted file mode 100644 (file)
index 3d82399..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = voh405.o flash.o \
-       ../common/misc.o \
-       ../common/esd405ep_nand.o \
diff --git a/board/esd/voh405/flash.c b/board/esd/voh405/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/voh405/fpgadata.c b/board/esd/voh405/fpgadata.c
deleted file mode 100644 (file)
index 9ad9650..0000000
+++ /dev/null
@@ -1,4021 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x38, 0x6c, 0x35, 0x42,
-0x00, 0x03, 0x76, 0x6f, 0x68, 0x34, 0x30, 0x35,
-0x5f, 0x31, 0x5f, 0x30, 0x33, 0x2e, 0x62, 0x69,
-0x74, 0x00, 0xed, 0xfd, 0x7d, 0x7c, 0x1c, 0xd5,
-0x91, 0x2f, 0x8c, 0x57, 0x9f, 0x6e, 0xc9, 0xad,
-0xe9, 0x91, 0xa6, 0xf5, 0x62, 0x22, 0x40, 0x98,
-0xd6, 0x48, 0x98, 0x41, 0x19, 0x49, 0x63, 0xc9,
-0x18, 0x63, 0xcc, 0xa8, 0x2d, 0x09, 0x22, 0x6c,
-0x07, 0x4f, 0x80, 0xcd, 0xfa, 0x66, 0xb9, 0xd9,
-0x31, 0xf1, 0x66, 0xbd, 0xfb, 0x73, 0xb8, 0x82,
-0xe4, 0xd9, 0x75, 0x72, 0xb3, 0xe4, 0x68, 0x24,
-0xdb, 0x23, 0xcb, 0xc1, 0x83, 0x71, 0x88, 0x20,
-0xde, 0xec, 0xd8, 0x78, 0x89, 0x21, 0x4e, 0xee,
-0x58, 0x36, 0x20, 0x63, 0x16, 0x5a, 0x46, 0x80,
-0x6c, 0x8c, 0x51, 0x58, 0x27, 0xeb, 0x10, 0x42,
-0xc6, 0x44, 0x21, 0x82, 0x18, 0x22, 0x8c, 0x49,
-0xe4, 0xf7, 0xe7, 0xd4, 0xe9, 0x97, 0xe9, 0x99,
-0x91, 0xd9, 0xcd, 0xbd, 0xf7, 0x79, 0xee, 0x7e,
-0x7e, 0x8f, 0x27, 0x7f, 0xa4, 0xe8, 0x39, 0x6e,
-0xf5, 0xa9, 0x39, 0x5d, 0xf5, 0x3d, 0x55, 0xdf,
-0xaa, 0x03, 0x45, 0xbe, 0x09, 0xf3, 0x7f, 0x00,
-0xc2, 0x32, 0x50, 0xff, 0xee, 0xbf, 0xad, 0x98,
-0x1d, 0xba, 0xf6, 0x2f, 0x67, 0xfd, 0x65, 0xa8,
-0xb9, 0xe1, 0xee, 0x2f, 0x2d, 0x87, 0xbb, 0x40,
-0x69, 0xfa, 0xea, 0xb5, 0xa1, 0xbf, 0xfa, 0xda,
-0x3d, 0xb3, 0x66, 0xcf, 0x86, 0x2f, 0xb1, 0xff,
-0x0a, 0x85, 0xae, 0x6d, 0x0c, 0x35, 0x37, 0xce,
-0x9a, 0x0d, 0xcb, 0xa1, 0x68, 0xd6, 0xac, 0x79,
-0xb3, 0xaf, 0x9f, 0xd7, 0x34, 0x17, 0xfe, 0x0a,
-0x84, 0xe6, 0x6d, 0xe7, 0xd9, 0xe7, 0x89, 0x87,
-0xff, 0xec, 0xcb, 0x21, 0xa0, 0x02, 0x00, 0x4c,
-0x0b, 0x09, 0x51, 0xfc, 0x7f, 0x25, 0x24, 0x68,
-0x02, 0xd0, 0x96, 0xfa, 0x10, 0x18, 0xf8, 0xdf,
-0x60, 0x7d, 0x5f, 0x14, 0x02, 0xcd, 0xfd, 0xdf,
-0x42, 0x08, 0x74, 0x88, 0x80, 0xbe, 0x5e, 0x2d,
-0x83, 0x7f, 0xff, 0x23, 0xe8, 0x12, 0xb5, 0xe5,
-0x3f, 0x71, 0xfc, 0xf9, 0x03, 0xf4, 0x82, 0xc3,
-0x32, 0x9f, 0x96, 0xe3, 0x49, 0x4b, 0x52, 0x49,
-0xe8, 0x3f, 0x72, 0x7f, 0xb0, 0xef, 0xfa, 0xfb,
-0x37, 0xfe, 0x43, 0xf7, 0xff, 0x83, 0x7d, 0xff,
-0x3f, 0x75, 0x3c, 0xa8, 0xff, 0x81, 0xe1, 0x00,
-0x92, 0xf3, 0x3c, 0xaa, 0xa0, 0x41, 0x07, 0x14,
-0x82, 0x40, 0x21, 0x0a, 0x95, 0x17, 0x10, 0x5a,
-0x86, 0xed, 0xf1, 0x86, 0x70, 0x0e, 0xce, 0xd3,
-0x96, 0x03, 0xbe, 0x81, 0xee, 0x7b, 0xe1, 0x1c,
-0x84, 0xf5, 0xe2, 0x09, 0xf1, 0x3e, 0xf5, 0x4d,
-0xb5, 0x45, 0xf3, 0xbd, 0x24, 0x1e, 0x87, 0x33,
-0xb4, 0xb9, 0xd2, 0xbb, 0x4f, 0x0c, 0x41, 0xa7,
-0x3d, 0x3e, 0xfe, 0x63, 0xd8, 0x4b, 0x1b, 0x26,
-0x94, 0x13, 0x7d, 0x7e, 0x58, 0x67, 0x34, 0xec,
-0xf3, 0x9c, 0x28, 0xab, 0xad, 0xe8, 0x8d, 0x34,
-0x68, 0x4a, 0x8c, 0xbc, 0x03, 0x83, 0xd4, 0x2f,
-0xcb, 0xb1, 0x7d, 0xa1, 0x5a, 0x5b, 0x8b, 0x23,
-0xd2, 0x7a, 0xd8, 0x05, 0x41, 0x43, 0x69, 0x22,
-0x00, 0x03, 0x0b, 0x82, 0x23, 0x97, 0xce, 0x22,
-0x2b, 0x20, 0xa1, 0xad, 0xd4, 0x94, 0x42, 0x62,
-0xc0, 0x20, 0x68, 0x95, 0x72, 0x39, 0x69, 0x02,
-0xcd, 0xbe, 0xbf, 0xb4, 0x03, 0xf6, 0x42, 0x83,
-0xa1, 0xa4, 0x88, 0x46, 0xd7, 0x91, 0x86, 0xb4,
-0x27, 0x45, 0x02, 0x6a, 0x3c, 0x7e, 0xab, 0xae,
-0xc4, 0x49, 0x5a, 0xdf, 0x43, 0xfd, 0x9a, 0xdc,
-0x4f, 0x42, 0x92, 0xfd, 0x3c, 0x37, 0x4d, 0x3f,
-0x06, 0xa7, 0xd9, 0x78, 0x5f, 0xaa, 0xcd, 0x0f,
-0xa7, 0x92, 0xe1, 0x0f, 0x8b, 0x53, 0x0b, 0x16,
-0xc3, 0x11, 0x63, 0x86, 0xe0, 0x7b, 0x44, 0x4c,
-0xc3, 0x84, 0x36, 0xb0, 0xc2, 0xbb, 0x5e, 0x54,
-0xdb, 0xed, 0xf1, 0x49, 0xe1, 0x59, 0x78, 0x1e,
-0xae, 0x64, 0xe3, 0xd9, 0x77, 0x1f, 0x24, 0xc2,
-0x86, 0x38, 0xe1, 0x3f, 0xc1, 0xee, 0xd0, 0xa2,
-0xfa, 0xa8, 0x78, 0x02, 0x35, 0x00, 0xbe, 0x44,
-0xdb, 0x38, 0xd3, 0x94, 0xf9, 0x19, 0x55, 0x77,
-0xb0, 0x6f, 0xc3, 0x86, 0x2f, 0x24, 0x26, 0xd5,
-0x53, 0xd0, 0x34, 0x5a, 0x9c, 0x12, 0x8f, 0xc1,
-0x49, 0x68, 0xea, 0xf2, 0x25, 0x6f, 0x0f, 0x56,
-0x8f, 0xab, 0xe1, 0x98, 0x77, 0x4b, 0x77, 0x48,
-0xb2, 0x9f, 0x7f, 0xa4, 0x20, 0xa8, 0xee, 0x85,
-0x46, 0x43, 0x99, 0x28, 0x9b, 0x16, 0x5f, 0x07,
-0x73, 0x0c, 0x79, 0x82, 0x1c, 0x83, 0x3d, 0x11,
-0xbf, 0xa1, 0xac, 0xf6, 0x37, 0xb0, 0xaf, 0x1a,
-0x64, 0x39, 0x41, 0xe6, 0xb0, 0xd5, 0x6f, 0xcf,
-0x77, 0x31, 0x3c, 0x08, 0xb5, 0x86, 0x12, 0x22,
-0x14, 0x06, 0x88, 0xdf, 0x90, 0x53, 0x64, 0x31,
-0x0c, 0xa8, 0x01, 0x43, 0x09, 0x10, 0x05, 0x1e,
-0x1d, 0x69, 0x48, 0xca, 0xdb, 0x0b, 0x57, 0xb1,
-0x77, 0xc5, 0xfc, 0x4c, 0xc0, 0x17, 0xe1, 0x69,
-0x5a, 0x9f, 0x56, 0x56, 0x91, 0x32, 0xf8, 0x76,
-0xe2, 0xaa, 0xb4, 0xbc, 0xaa, 0xf0, 0x67, 0xb0,
-0x1b, 0xaf, 0x2c, 0x25, 0x33, 0x54, 0xf6, 0x55,
-0x54, 0x5e, 0x4a, 0xee, 0x73, 0xee, 0xdf, 0x01,
-0x8b, 0xd5, 0x8f, 0x60, 0xbe, 0xe1, 0x9b, 0x2b,
-0x52, 0xf8, 0x50, 0x0d, 0x4d, 0x7a, 0x43, 0xe2,
-0x08, 0x9d, 0x60, 0x8a, 0xf7, 0x95, 0xf6, 0x41,
-0xf2, 0x2e, 0x98, 0xaf, 0x7b, 0x0b, 0xc5, 0xdb,
-0x88, 0xbd, 0x90, 0xf4, 0x2b, 0x9e, 0x85, 0xf3,
-0xd0, 0xc2, 0xf4, 0xd3, 0x35, 0xaa, 0x7f, 0x58,
-0x1a, 0x8e, 0x97, 0xec, 0x14, 0x27, 0xe1, 0x8c,
-0xda, 0x7c, 0x87, 0xef, 0x27, 0xe2, 0x04, 0x7e,
-0xd5, 0xbe, 0x61, 0x54, 0x4c, 0x14, 0xda, 0xfa,
-0x91, 0x81, 0xeb, 0x67, 0xcc, 0x3b, 0xd0, 0x0d,
-0xf0, 0x06, 0x0d, 0xa5, 0xbd, 0xbb, 0xbb, 0x83,
-0x6c, 0x58, 0xd3, 0x88, 0x6f, 0x42, 0x7c, 0x0f,
-0xf6, 0xb7, 0x37, 0x1a, 0xde, 0xb4, 0xe8, 0x71,
-0x7e, 0xdf, 0x91, 0xca, 0xcd, 0xf0, 0x34, 0xd4,
-0x8f, 0x14, 0xdf, 0x2b, 0x26, 0xe0, 0xa7, 0x50,
-0x6d, 0x14, 0xfc, 0x9d, 0x78, 0x07, 0xfb, 0x45,
-0xaa, 0x47, 0x94, 0x08, 0x79, 0xd3, 0xf8, 0xc1,
-0x8a, 0x46, 0x5d, 0x1e, 0x25, 0x4d, 0x8e, 0x3e,
-0x35, 0xf8, 0x3e, 0x9b, 0x6f, 0x30, 0x5d, 0xf4,
-0x0d, 0xcf, 0x57, 0xe1, 0x01, 0x5a, 0x93, 0xee,
-0x58, 0x55, 0xf8, 0x45, 0x78, 0x92, 0x56, 0x6f,
-0x63, 0x1a, 0x38, 0xb7, 0xa0, 0x27, 0x5e, 0x9f,
-0x8e, 0xaf, 0x20, 0xaa, 0x73, 0xff, 0x15, 0xd6,
-0x7a, 0x2b, 0x4a, 0x91, 0x0d, 0xf0, 0x80, 0xa0,
-0x19, 0x0f, 0xa7, 0xc8, 0x57, 0xe8, 0x9e, 0x94,
-0x96, 0x56, 0xfe, 0x91, 0x1c, 0xa4, 0x8f, 0x42,
-0xf0, 0x2e, 0xf9, 0x32, 0x4f, 0x99, 0x73, 0xff,
-0xf1, 0xe9, 0xe3, 0xc2, 0x29, 0x08, 0xd3, 0xe2,
-0xa4, 0xb8, 0x0a, 0xde, 0x92, 0x76, 0xd1, 0x91,
-0xa4, 0xf8, 0x75, 0x38, 0xa7, 0x0f, 0xc4, 0x7c,
-0x63, 0xe2, 0x7b, 0xda, 0x01, 0x68, 0x19, 0x0c,
-0xbe, 0x27, 0xce, 0x93, 0xec, 0xf9, 0x76, 0x08,
-0x49, 0x98, 0x84, 0xb0, 0xe0, 0xa3, 0x35, 0x28,
-0xdc, 0xe7, 0xf5, 0xd1, 0xdb, 0xd3, 0x15, 0x93,
-0x7a, 0x58, 0xf5, 0xad, 0xa9, 0x39, 0x5a, 0x39,
-0xd9, 0x1a, 0x86, 0x0d, 0x3d, 0xe2, 0xeb, 0x60,
-0xaf, 0x7f, 0x59, 0xdd, 0xc6, 0x56, 0x4b, 0x58,
-0xf7, 0x25, 0xca, 0x67, 0x26, 0x2d, 0xa1, 0x16,
-0xf6, 0x43, 0x53, 0x74, 0x43, 0x7f, 0x73, 0xad,
-0x7a, 0x12, 0xe6, 0x47, 0xbd, 0xa5, 0x22, 0x91,
-0xec, 0xf1, 0x54, 0x5a, 0xce, 0xc6, 0x37, 0xe8,
-0x8b, 0x12, 0xa4, 0xa7, 0xac, 0x97, 0x09, 0x25,
-0x09, 0xb2, 0x0d, 0x7a, 0x75, 0xff, 0x4b, 0x4a,
-0xbf, 0x27, 0x48, 0xf7, 0xea, 0x0d, 0x2b, 0xd8,
-0xfa, 0xd7, 0x1c, 0xb3, 0x30, 0xb7, 0xa0, 0x16,
-0x1e, 0x66, 0xc3, 0x2e, 0x4f, 0x90, 0xab, 0xc8,
-0xe3, 0x4c, 0x50, 0x12, 0x85, 0xb5, 0xd0, 0x1b,
-0xdd, 0xaa, 0x2b, 0x0f, 0x90, 0xda, 0xf8, 0x1e,
-0xda, 0x70, 0x13, 0x5b, 0x6f, 0x85, 0xce, 0x7a,
-0xd0, 0x2a, 0x24, 0xd8, 0x02, 0x41, 0x5d, 0xa9,
-0xf0, 0x6c, 0x83, 0x2e, 0x08, 0x46, 0x94, 0x8a,
-0xc2, 0xd5, 0xd0, 0xb5, 0x40, 0xd3, 0x95, 0xd9,
-0x4d, 0x12, 0xec, 0x64, 0x57, 0xe4, 0xd9, 0x04,
-0x04, 0x7b, 0x3d, 0xac, 0xf2, 0x46, 0xa1, 0x1f,
-0x5f, 0x0a, 0x50, 0x34, 0x18, 0x27, 0x61, 0x58,
-0x02, 0x6d, 0x1a, 0x19, 0x81, 0x26, 0xf0, 0xd1,
-0x36, 0x0d, 0x98, 0xea, 0x20, 0x48, 0x95, 0x19,
-0xa2, 0xbd, 0x3e, 0xfb, 0xa7, 0xf3, 0xf9, 0x46,
-0x7c, 0x9b, 0xca, 0x4f, 0xc0, 0xd9, 0xd6, 0x96,
-0xc8, 0xfd, 0x9b, 0x6a, 0x4e, 0xc0, 0x79, 0x7d,
-0x86, 0xe1, 0x3b, 0x2c, 0x0e, 0xb3, 0xaf, 0x5a,
-0x22, 0x1b, 0x0e, 0x8b, 0xef, 0x14, 0xda, 0xef,
-0x63, 0x65, 0xc1, 0x98, 0xa9, 0x9f, 0x07, 0xc5,
-0x0a, 0x54, 0x8b, 0xee, 0xdd, 0x54, 0xbe, 0xed,
-0xb6, 0x57, 0xe5, 0x26, 0x9d, 0x8e, 0x8a, 0x4c,
-0x51, 0x85, 0x2d, 0x1d, 0xde, 0xd7, 0xc5, 0x42,
-0xc7, 0xfe, 0xcc, 0xad, 0x4c, 0xb3, 0xb5, 0xdb,
-0x50, 0xa1, 0xac, 0x65, 0x4a, 0x88, 0x13, 0xbf,
-0xbc, 0x8e, 0x92, 0x00, 0xc4, 0x61, 0x2b, 0x78,
-0x62, 0x4d, 0x9a, 0x7c, 0x04, 0x1a, 0x2a, 0xe3,
-0x6b, 0x36, 0x96, 0x38, 0xfa, 0xec, 0x80, 0x1e,
-0x9c, 0x94, 0xae, 0xa8, 0x33, 0x25, 0xd2, 0xa5,
-0x6b, 0xb7, 0x29, 0x15, 0xa4, 0x87, 0x76, 0xc9,
-0x7e, 0x5d, 0xae, 0xd8, 0x58, 0x8b, 0xaa, 0xb8,
-0x59, 0x2e, 0xf5, 0x94, 0x09, 0xf6, 0xfd, 0xfb,
-0xa5, 0x6d, 0xb0, 0x47, 0x60, 0x6a, 0x54, 0x49,
-0xad, 0xdc, 0xab, 0x69, 0x4b, 0xbf, 0xa7, 0x12,
-0x89, 0xf6, 0x82, 0x5f, 0x0f, 0xa4, 0xb6, 0x5e,
-0x45, 0xf7, 0x30, 0x0d, 0xcb, 0x0f, 0x91, 0x99,
-0xce, 0x7a, 0x48, 0x4e, 0xb7, 0x9e, 0x3f, 0xf1,
-0xa5, 0xab, 0xa3, 0xfb, 0xa3, 0x03, 0x9f, 0xf3,
-0x25, 0xc4, 0x6d, 0xf2, 0x7e, 0x23, 0xa4, 0x57,
-0x3c, 0xac, 0x48, 0xea, 0xbb, 0x5a, 0x78, 0x65,
-0x30, 0xd1, 0x16, 0x70, 0xec, 0xd5, 0x88, 0x60,
-0xaf, 0x07, 0x65, 0x2c, 0xf4, 0x21, 0x0d, 0x47,
-0x4b, 0x12, 0xe2, 0x98, 0xf4, 0xe1, 0x48, 0x78,
-0xb9, 0x4f, 0x15, 0xc7, 0xd4, 0x9f, 0x4b, 0xf3,
-0xa3, 0xbe, 0xca, 0x07, 0x4f, 0x39, 0xf6, 0x47,
-0x56, 0xf9, 0x7a, 0x63, 0x4a, 0x16, 0x35, 0x38,
-0xb2, 0xa0, 0x49, 0x0d, 0xd2, 0x1a, 0x0d, 0x98,
-0xfe, 0x43, 0xbe, 0x78, 0x8d, 0x16, 0x60, 0x0b,
-0x4f, 0xf6, 0xd2, 0xb6, 0x03, 0xce, 0x7a, 0x0e,
-0x14, 0x04, 0xe0, 0x19, 0x68, 0xa0, 0x72, 0x92,
-0x3c, 0xa2, 0x3d, 0x41, 0xb6, 0x52, 0x92, 0x64,
-0xfa, 0xf9, 0xb1, 0xee, 0xa7, 0xca, 0x38, 0xb9,
-0x46, 0x7a, 0x06, 0x1a, 0x37, 0x06, 0xc6, 0xc9,
-0x01, 0x67, 0x3d, 0x04, 0x98, 0xfd, 0xc1, 0xf7,
-0x45, 0x0e, 0x91, 0xcf, 0x30, 0x43, 0x14, 0x30,
-0x6e, 0x09, 0x11, 0x2f, 0x74, 0x19, 0x9a, 0xa1,
-0x54, 0x92, 0x62, 0x68, 0x86, 0x60, 0x54, 0xae,
-0x62, 0xe3, 0x9d, 0xf5, 0x09, 0x77, 0xb2, 0xf7,
-0x37, 0x98, 0x96, 0x9b, 0xc8, 0x11, 0xe8, 0x86,
-0x1a, 0x34, 0x5c, 0x55, 0xb0, 0x45, 0xae, 0x1e,
-0x55, 0xf4, 0x8d, 0x95, 0xf8, 0x6a, 0x53, 0xb9,
-0x33, 0x36, 0xee, 0xac, 0xcf, 0x78, 0xfc, 0x8b,
-0xf0, 0x47, 0x7a, 0x63, 0xda, 0xbb, 0x4a, 0xbc,
-0x0d, 0xfe, 0xad, 0x67, 0xd6, 0xb1, 0xe2, 0x6f,
-0xae, 0x0d, 0x1b, 0x2f, 0xd3, 0x59, 0x6f, 0xfb,
-0x26, 0xc5, 0x19, 0xda, 0x89, 0x75, 0x2d, 0x51,
-0xef, 0xd2, 0x9a, 0xf7, 0xfc, 0xf6, 0x78, 0xcf,
-0x15, 0xa6, 0xbd, 0xdd, 0xf0, 0x64, 0x75, 0x92,
-0x09, 0xf3, 0x8f, 0x94, 0x0c, 0x90, 0xaf, 0xc0,
-0x59, 0x78, 0xee, 0x48, 0x71, 0xfa, 0xf2, 0x31,
-0x7a, 0x9a, 0xb4, 0x80, 0x6f, 0x54, 0xdc, 0xe7,
-0xd8, 0x1f, 0xd2, 0xf3, 0x1c, 0xfa, 0xaf, 0xb4,
-0xf7, 0xac, 0xcf, 0xaf, 0x33, 0xe1, 0x9d, 0xe2,
-0x93, 0xe2, 0x17, 0xb5, 0x63, 0xb4, 0x39, 0xed,
-0x3b, 0x22, 0x86, 0xdb, 0x5f, 0xa3, 0x2d, 0x51,
-0x26, 0x18, 0xce, 0xfa, 0xd9, 0x5e, 0x59, 0x85,
-0x0f, 0x69, 0x14, 0xaf, 0x22, 0xe5, 0xd2, 0xda,
-0x6d, 0xf5, 0xe3, 0x05, 0xab, 0x0a, 0xab, 0xa4,
-0xf5, 0x52, 0xb5, 0xd1, 0x67, 0x90, 0xca, 0x8e,
-0x1f, 0x40, 0x7d, 0x5c, 0xe9, 0xf4, 0xbf, 0xd7,
-0x6e, 0xdf, 0x1f, 0x80, 0xdb, 0x2b, 0x43, 0x6e,
-0x2a, 0x8b, 0xd0, 0x1f, 0xa8, 0xf5, 0xfb, 0x98,
-0xa2, 0xe6, 0xc3, 0x63, 0x50, 0xad, 0x2a, 0x9f,
-0x23, 0x73, 0xa1, 0x47, 0xae, 0xd7, 0x99, 0x60,
-0xa8, 0xb6, 0xfe, 0x35, 0xc9, 0x6b, 0xda, 0x9f,
-0x10, 0x81, 0x40, 0xf7, 0x68, 0xf0, 0x27, 0xbd,
-0x21, 0x66, 0xcf, 0xbb, 0x75, 0x0d, 0x94, 0xf9,
-0x44, 0x50, 0x1f, 0x35, 0x82, 0xcf, 0xf6, 0x6d,
-0x27, 0x23, 0xce, 0xfa, 0xdc, 0x3e, 0xdd, 0x9c,
-0xaf, 0x77, 0xa2, 0x46, 0x84, 0xdf, 0xb1, 0x3f,
-0xe4, 0x9d, 0x50, 0xee, 0x83, 0x77, 0x7b, 0x8e,
-0x83, 0xef, 0x11, 0xe5, 0x2a, 0x78, 0xa5, 0x2b,
-0xdc, 0xc9, 0x1c, 0xd3, 0x7b, 0xce, 0xfa, 0xa1,
-0x02, 0xf3, 0x77, 0x02, 0xfa, 0xa3, 0x69, 0xbf,
-0x86, 0xdf, 0x69, 0xe1, 0x7d, 0xbe, 0x94, 0xb8,
-0xa3, 0xe3, 0xe4, 0x65, 0xec, 0x0d, 0xa5, 0xe2,
-0xb8, 0xc4, 0xd6, 0x43, 0xc2, 0xb7, 0xe5, 0xc1,
-0xb4, 0xb3, 0x7e, 0xaa, 0x55, 0xb4, 0xe7, 0xf3,
-0x0c, 0x66, 0x8d, 0x3b, 0x8b, 0x5e, 0x86, 0x66,
-0x76, 0x7f, 0xf1, 0x0c, 0xbc, 0x06, 0x2d, 0x69,
-0xdf, 0x44, 0xf7, 0x89, 0xd0, 0x9b, 0x72, 0x8b,
-0xee, 0x33, 0x44, 0x68, 0xb7, 0x9f, 0x7f, 0x8b,
-0xb4, 0xd2, 0xf6, 0xbf, 0x5b, 0xe1, 0x17, 0xc0,
-0xfd, 0xd1, 0x31, 0xd8, 0x4e, 0x67, 0x4e, 0x2e,
-0x59, 0x4f, 0xc6, 0x60, 0x90, 0xd9, 0x1f, 0x65,
-0x73, 0x4c, 0xd3, 0x55, 0xe7, 0x79, 0x82, 0xf6,
-0x78, 0xbf, 0xd0, 0x27, 0xf0, 0xf1, 0x07, 0xd9,
-0xaf, 0xde, 0x20, 0x2b, 0xfd, 0x64, 0x8c, 0xee,
-0x1d, 0x6e, 0x88, 0x2a, 0x71, 0xbf, 0xe6, 0xac,
-0x37, 0xb9, 0xc2, 0xd4, 0x0f, 0x5b, 0x36, 0xc9,
-0x40, 0xb9, 0xe6, 0x3f, 0x72, 0x59, 0x53, 0xd9,
-0x41, 0x39, 0x09, 0xb5, 0x40, 0xa0, 0x6c, 0xa4,
-0x22, 0x05, 0x41, 0x50, 0x80, 0x38, 0xee, 0x08,
-0x48, 0xf1, 0x4a, 0xa6, 0x1f, 0xf6, 0xfc, 0x27,
-0xd8, 0xfa, 0x57, 0xe4, 0x59, 0x6f, 0x78, 0x8f,
-0x77, 0x9f, 0x61, 0xeb, 0x3f, 0x0c, 0x0a, 0x65,
-0xfe, 0xfd, 0x88, 0x10, 0x16, 0xa6, 0x51, 0x05,
-0x6a, 0xec, 0xe7, 0xd9, 0x52, 0x70, 0x86, 0xfb,
-0xaf, 0x25, 0x4f, 0x75, 0x8f, 0xca, 0xa7, 0xc9,
-0x7d, 0x06, 0xf3, 0xd7, 0x67, 0xe0, 0x0c, 0x7c,
-0x0a, 0x7c, 0x46, 0xcd, 0x28, 0x13, 0x5a, 0x60,
-0x89, 0x51, 0x3e, 0x3e, 0xcd, 0xc1, 0x33, 0x05,
-0xe7, 0xe0, 0x74, 0x77, 0x4b, 0x7a, 0xc9, 0x53,
-0x62, 0x18, 0x17, 0x12, 0x04, 0x07, 0xdb, 0x8e,
-0xeb, 0xaf, 0xd1, 0xeb, 0x64, 0xef, 0xbe, 0xf2,
-0x89, 0xf8, 0x41, 0xb5, 0x59, 0xf3, 0x8d, 0x30,
-0xc7, 0xe7, 0xe8, 0x5f, 0xfd, 0x40, 0x66, 0xf8,
-0x27, 0xad, 0x34, 0xfb, 0x1b, 0x18, 0x10, 0x0a,
-0x26, 0x3a, 0x42, 0x65, 0xc7, 0x68, 0x1f, 0xf5,
-0x17, 0x06, 0x1e, 0x26, 0xef, 0xe8, 0xf1, 0x4e,
-0xbf, 0xd6, 0x17, 0xf7, 0xa7, 0x33, 0xf6, 0xbf,
-0xe0, 0xa0, 0x35, 0xdf, 0x32, 0x9c, 0x78, 0x83,
-0x24, 0x87, 0xee, 0x32, 0xa0, 0x17, 0x6a, 0x65,
-0x19, 0x0a, 0x0d, 0x60, 0x70, 0x06, 0x16, 0xa9,
-0x85, 0xfb, 0x1c, 0xfb, 0x63, 0x4c, 0xb7, 0xf1,
-0x8f, 0x87, 0x2b, 0x96, 0x32, 0x7d, 0xbe, 0x03,
-0xbd, 0xaa, 0xbf, 0x9a, 0x99, 0xfd, 0xb7, 0x21,
-0x4e, 0x19, 0x90, 0x48, 0xcc, 0x9c, 0x70, 0xec,
-0x0f, 0x54, 0xb0, 0xf5, 0x23, 0x85, 0x11, 0xff,
-0x04, 0x71, 0x21, 0x6d, 0x94, 0x53, 0xe2, 0x3b,
-0xf0, 0x02, 0x9d, 0xd3, 0xe9, 0x5d, 0x27, 0xee,
-0xa3, 0xfb, 0xe3, 0x03, 0xba, 0xef, 0x47, 0x0f,
-0x8e, 0x3a, 0xf6, 0xe1, 0x28, 0xe0, 0x7a, 0xb8,
-0x12, 0xd7, 0x03, 0x57, 0x54, 0x17, 0x0a, 0xe4,
-0xbc, 0x14, 0xa6, 0x3e, 0x3a, 0xed, 0x84, 0x3c,
-0x21, 0xb5, 0xd4, 0xfa, 0xc6, 0xc5, 0x49, 0xdd,
-0x1e, 0x6f, 0xa8, 0x3b, 0xe4, 0xd3, 0x70, 0x1f,
-0xbb, 0xbf, 0x88, 0xf7, 0x9f, 0x97, 0xf0, 0xa6,
-0xc4, 0xe5, 0xda, 0x49, 0xb8, 0xef, 0x92, 0x20,
-0xbb, 0x42, 0x0f, 0x2c, 0x6d, 0x5a, 0xe6, 0xdb,
-0x2d, 0x4e, 0x64, 0xf0, 0x8f, 0xc4, 0x1f, 0xfb,
-0xed, 0x45, 0x13, 0x04, 0x85, 0x20, 0x7b, 0x7e,
-0xf1, 0x2b, 0xb0, 0x07, 0xee, 0x0e, 0x31, 0x37,
-0x74, 0x35, 0x33, 0xd4, 0xec, 0xf9, 0x77, 0xbe,
-0x30, 0xe0, 0xfc, 0xbe, 0xe9, 0x02, 0xd3, 0xfe,
-0xb0, 0xf5, 0x83, 0xfa, 0x09, 0x80, 0x1c, 0xf2,
-0x47, 0x6f, 0x1a, 0xc0, 0x89, 0x6b, 0xc4, 0xa3,
-0xc4, 0x20, 0x49, 0x15, 0x6f, 0xeb, 0xa4, 0x83,
-0x7f, 0x96, 0x09, 0x33, 0x38, 0xfe, 0x59, 0xb4,
-0x8a, 0xcc, 0xe8, 0x42, 0x21, 0xb0, 0x8a, 0x7c,
-0x1e, 0x9e, 0x62, 0xc2, 0xa5, 0x1d, 0xe4, 0x36,
-0x58, 0x9d, 0xaa, 0x4e, 0x5e, 0xbe, 0x8a, 0xf4,
-0xeb, 0xf6, 0x7a, 0xeb, 0x90, 0xbd, 0xf0, 0xd1,
-0xea, 0xa0, 0xe1, 0x9b, 0xa7, 0x94, 0xd0, 0x8f,
-0x52, 0x73, 0xc1, 0x7b, 0x83, 0xd8, 0x01, 0xc7,
-0x21, 0xb8, 0xd4, 0xab, 0x2a, 0xa0, 0x0d, 0x85,
-0x42, 0xe0, 0x13, 0x98, 0xbf, 0xb6, 0x3f, 0x0e,
-0xfe, 0xf9, 0xa8, 0xed, 0x8c, 0xcc, 0x85, 0x09,
-0xf1, 0x59, 0xfd, 0x1c, 0xb4, 0xe8, 0x25, 0x3f,
-0x61, 0x88, 0xe5, 0x6c, 0xa8, 0xc5, 0x78, 0x6d,
-0xa2, 0x6d, 0xd4, 0xb1, 0x3f, 0xdb, 0x0b, 0x8e,
-0x99, 0xf8, 0x10, 0xf5, 0xf3, 0x3b, 0x06, 0x24,
-0x98, 0x30, 0x86, 0x78, 0x32, 0xca, 0x60, 0xcf,
-0x9b, 0xf0, 0x2b, 0x3a, 0x30, 0xe2, 0xeb, 0x61,
-0x40, 0xc8, 0xb1, 0xff, 0xa5, 0xa6, 0x3d, 0x51,
-0xbe, 0x26, 0xde, 0x29, 0x5d, 0xc7, 0xac, 0x25,
-0xb3, 0x36, 0x6f, 0xc2, 0xd3, 0xc2, 0xd5, 0x46,
-0x9d, 0xee, 0x3f, 0x4c, 0xbe, 0x0d, 0xd5, 0x31,
-0xa5, 0x33, 0x76, 0xdc, 0xf9, 0x7d, 0x0d, 0x8e,
-0x7f, 0x18, 0xba, 0xfb, 0x06, 0xf9, 0x22, 0xfc,
-0x80, 0xd6, 0x27, 0x19, 0xec, 0x79, 0x0b, 0x38,
-0xcc, 0x63, 0x02, 0xf9, 0x2e, 0xad, 0xfe, 0xca,
-0xa2, 0x5b, 0x6e, 0x9e, 0x70, 0xf0, 0x4f, 0x47,
-0x85, 0xb9, 0xde, 0x16, 0xa5, 0x5a, 0xb9, 0x62,
-0x77, 0x31, 0xc5, 0x1e, 0x12, 0x76, 0x45, 0x6b,
-0xef, 0x92, 0x2f, 0x25, 0x2f, 0xc2, 0x03, 0xaa,
-0x86, 0xaf, 0xde, 0xeb, 0x8e, 0xfd, 0x61, 0xf8,
-0x07, 0x9d, 0x38, 0xf5, 0x25, 0x95, 0x15, 0xf0,
-0x1e, 0xb4, 0xd0, 0x2b, 0x93, 0xe2, 0x49, 0xfd,
-0x9c, 0xde, 0xb2, 0x95, 0x3d, 0xff, 0x69, 0xfa,
-0x56, 0xa2, 0x89, 0x7d, 0x25, 0x9e, 0xca, 0xe0,
-0x1f, 0x30, 0xfd, 0x11, 0x5b, 0x2d, 0x5c, 0x90,
-0xae, 0xa4, 0xe2, 0x51, 0x7d, 0x12, 0x4a, 0x60,
-0x49, 0x5c, 0x4c, 0x6b, 0xe3, 0xed, 0xe1, 0xd0,
-0x34, 0x9a, 0x85, 0x7f, 0x98, 0x7f, 0x24, 0xe1,
-0x15, 0xbe, 0x84, 0xaf, 0xd6, 0x72, 0x7c, 0xe8,
-0xd6, 0x21, 0xbc, 0x60, 0x49, 0xa2, 0x6d, 0x0c,
-0xf6, 0x27, 0xf8, 0x95, 0x7d, 0x59, 0xf8, 0x87,
-0x39, 0xd9, 0x65, 0x4a, 0x82, 0xd4, 0x32, 0x21,
-0xcc, 0xf0, 0x8c, 0xf8, 0x92, 0xdc, 0x2b, 0x84,
-0xbf, 0xc6, 0xae, 0x0c, 0xcb, 0xbd, 0xcb, 0x1a,
-0x8e, 0x28, 0xbb, 0xd9, 0x8b, 0x6f, 0xbf, 0xef,
-0x95, 0x52, 0x2d, 0x3c, 0x6e, 0xe2, 0x9f, 0x5a,
-0x61, 0x0f, 0xc7, 0x3f, 0x64, 0x26, 0xf4, 0x11,
-0x2e, 0x8c, 0x41, 0x2f, 0x0a, 0x9b, 0xc8, 0x4b,
-0x8e, 0x7e, 0x64, 0x49, 0x32, 0xf1, 0x40, 0x05,
-0x91, 0x84, 0x9d, 0x1c, 0xff, 0x30, 0xb5, 0x74,
-0x41, 0x20, 0xb2, 0x48, 0xf5, 0x0f, 0x4b, 0x5d,
-0xed, 0x08, 0x15, 0xca, 0xf6, 0x39, 0xeb, 0x61,
-0x50, 0x66, 0xb0, 0x07, 0x1a, 0x18, 0xec, 0xf1,
-0x68, 0xd6, 0xc4, 0xc5, 0x00, 0xb3, 0x3f, 0x0d,
-0x74, 0x03, 0xda, 0x9f, 0x11, 0xf3, 0xca, 0x07,
-0xc4, 0x7e, 0x9e, 0xfe, 0x4b, 0x2d, 0x3c, 0xb0,
-0x49, 0x44, 0xe1, 0x86, 0xc8, 0xb4, 0x44, 0xf9,
-0x6e, 0x72, 0x96, 0xc1, 0x1e, 0x86, 0x7f, 0xce,
-0x16, 0x9e, 0xd5, 0xf9, 0x7c, 0x1f, 0x73, 0xf0,
-0x4f, 0x3f, 0xc7, 0x0f, 0x2d, 0x7a, 0x30, 0xf1,
-0x43, 0xae, 0x9f, 0x0e, 0x86, 0x07, 0x4e, 0xe8,
-0xfb, 0xd9, 0x15, 0x6f, 0x42, 0x3c, 0x1c, 0x7b,
-0xf5, 0x7a, 0xf6, 0xfe, 0xe2, 0x1b, 0x9d, 0xc1,
-0x3f, 0x51, 0xc4, 0x3f, 0x20, 0xc7, 0x18, 0xfe,
-0x61, 0x82, 0x87, 0x09, 0x69, 0xf6, 0x60, 0x6c,
-0x5b, 0xb1, 0xa5, 0x26, 0x49, 0xe2, 0xb5, 0x7e,
-0x34, 0x8c, 0xf7, 0x3b, 0xfa, 0x04, 0x18, 0xc6,
-0xf9, 0x2e, 0x90, 0xd5, 0x8d, 0x92, 0xba, 0x13,
-0x56, 0x2c, 0xf6, 0x94, 0xc5, 0x7a, 0x10, 0xf8,
-0xdd, 0x5a, 0xa9, 0x92, 0xe1, 0xd6, 0x2e, 0xd0,
-0xa2, 0x4a, 0xa8, 0xd0, 0x10, 0x32, 0x78, 0x6c,
-0x1b, 0x70, 0x90, 0xa3, 0x72, 0xfd, 0x33, 0x21,
-0x81, 0xfb, 0x17, 0xb8, 0x5b, 0xaf, 0x64, 0x40,
-0x94, 0xf6, 0x06, 0xfc, 0x1d, 0x4c, 0xb1, 0x6b,
-0x32, 0xf8, 0x07, 0xf1, 0x12, 0x9b, 0xaf, 0x17,
-0x7f, 0x56, 0x66, 0x16, 0x18, 0x5e, 0x15, 0xdf,
-0x11, 0xf6, 0xd3, 0x92, 0xbf, 0xf7, 0xfe, 0x23,
-0xd3, 0x00, 0x22, 0x3a, 0xdf, 0x43, 0xcc, 0x31,
-0xd9, 0xf7, 0x7f, 0xc2, 0xc4, 0xc3, 0x0b, 0x98,
-0x12, 0xd8, 0xc4, 0x25, 0xae, 0x8d, 0x31, 0x7a,
-0x72, 0xc1, 0xfc, 0x68, 0x63, 0x42, 0x5c, 0xa3,
-0x9e, 0xa4, 0xe1, 0x56, 0x76, 0xe5, 0x3d, 0x6a,
-0xdf, 0x3f, 0x60, 0xe1, 0x9f, 0x12, 0xc4, 0x3f,
-0x28, 0x78, 0x99, 0xa0, 0x1d, 0x81, 0xfb, 0x64,
-0x6f, 0x8f, 0x52, 0x1d, 0x1d, 0xd1, 0x99, 0xfe,
-0x7b, 0xc4, 0x75, 0x19, 0xfc, 0x23, 0x05, 0xe0,
-0x3d, 0x21, 0x18, 0x2f, 0x4a, 0x16, 0x6e, 0x97,
-0x10, 0x08, 0x15, 0x27, 0xc9, 0xf5, 0xb0, 0x0e,
-0x6e, 0x88, 0x31, 0x44, 0x74, 0xbd, 0x7c, 0x28,
-0xd1, 0x90, 0x5a, 0xb4, 0x4d, 0x5c, 0x97, 0xc1,
-0x3f, 0xab, 0xf9, 0x6b, 0x12, 0xb5, 0xed, 0x33,
-0x3a, 0xee, 0x46, 0x06, 0x84, 0x82, 0x9d, 0x45,
-0xa1, 0x42, 0x2f, 0x79, 0x98, 0x06, 0x27, 0xd8,
-0xd6, 0x75, 0x9d, 0x66, 0xdb, 0x9f, 0x6a, 0xc1,
-0xc4, 0x0f, 0x4a, 0x67, 0xe1, 0x66, 0x99, 0x01,
-0xa1, 0xa1, 0xa2, 0x6f, 0x90, 0x4b, 0x61, 0x2d,
-0x5c, 0xa3, 0x17, 0xcd, 0xf5, 0x57, 0x09, 0x6b,
-0xe5, 0xfa, 0x7d, 0x4a, 0x27, 0x89, 0x3b, 0xf6,
-0x27, 0x20, 0xa3, 0xbd, 0xba, 0x31, 0x5d, 0x72,
-0x8e, 0xcc, 0x80, 0xbf, 0xa7, 0x37, 0x9e, 0x2a,
-0x3a, 0x33, 0x6d, 0x1e, 0xf9, 0x37, 0xda, 0x18,
-0xad, 0x5f, 0x25, 0xce, 0x80, 0x9f, 0xd2, 0x1b,
-0xdf, 0xf6, 0xad, 0xea, 0x5e, 0xe7, 0x38, 0x3c,
-0xf9, 0xd2, 0x1d, 0x68, 0x46, 0x8c, 0xe2, 0xdd,
-0x5f, 0xb2, 0x0c, 0xcb, 0xee, 0x0d, 0x69, 0xb4,
-0x27, 0x7a, 0x49, 0xaa, 0xed, 0x18, 0x39, 0x4b,
-0xd8, 0x95, 0xc7, 0x5c, 0xf8, 0x47, 0x2f, 0xe0,
-0xfb, 0xf7, 0xf4, 0x95, 0x67, 0xc4, 0xfb, 0x98,
-0x10, 0x1e, 0xf3, 0x9d, 0xac, 0x99, 0x57, 0xf6,
-0x72, 0xe2, 0x86, 0xed, 0xde, 0x49, 0x31, 0x4c,
-0x5e, 0xed, 0x6a, 0xfe, 0x4d, 0x70, 0x9c, 0xa1,
-0x73, 0x07, 0xff, 0x30, 0xfb, 0xf3, 0x5b, 0x7c,
-0xfe, 0x7b, 0xc5, 0x5b, 0xe9, 0x2e, 0xa8, 0x1f,
-0x57, 0xbe, 0x51, 0x7e, 0x5b, 0x74, 0x2d, 0x5c,
-0xeb, 0x91, 0x3b, 0xbb, 0x97, 0xfa, 0xd7, 0x4a,
-0xd5, 0x37, 0xcb, 0x11, 0xf2, 0x84, 0xf3, 0xfb,
-0x3e, 0x0c, 0xf6, 0x7c, 0x9b, 0xaa, 0x28, 0x13,
-0xde, 0x64, 0xb3, 0x5b, 0x2a, 0x6d, 0x10, 0xae,
-0x59, 0x0f, 0xf7, 0x90, 0x3b, 0xf5, 0xd5, 0xf2,
-0xd5, 0x3d, 0x95, 0x47, 0x49, 0xad, 0xe3, 0x2f,
-0xa2, 0xcc, 0xfe, 0x3c, 0x6a, 0xfa, 0x77, 0xae,
-0xd8, 0x74, 0x5f, 0x88, 0x2c, 0xa3, 0x22, 0x68,
-0x09, 0x79, 0x2e, 0xe9, 0x85, 0x75, 0x46, 0xad,
-0x2a, 0xcb, 0x33, 0x1f, 0x71, 0xd6, 0xe7, 0xdc,
-0xe9, 0x3b, 0xa4, 0xd3, 0x6c, 0x52, 0x0a, 0xf3,
-0x17, 0x5e, 0x36, 0x4d, 0xe6, 0x38, 0xc4, 0xbf,
-0x85, 0x57, 0xa0, 0xae, 0xd3, 0xfb, 0xac, 0xe7,
-0x6e, 0x7d, 0xa4, 0x67, 0x8e, 0x26, 0x6f, 0xea,
-0xf6, 0xf4, 0xd8, 0xfa, 0xa4, 0xb0, 0xd2, 0xb6,
-0xb7, 0xc7, 0x98, 0x7f, 0xb9, 0xcf, 0x98, 0x96,
-0x12, 0xdf, 0x55, 0x4f, 0xe3, 0x1b, 0x37, 0x00,
-0x5f, 0x91, 0x4f, 0xc9, 0xf3, 0x54, 0xdf, 0x00,
-0x5b, 0x5a, 0xf6, 0xfd, 0xbb, 0x54, 0xee, 0xe6,
-0x46, 0xc4, 0x90, 0x38, 0x9f, 0x09, 0x37, 0x1a,
-0x8b, 0x27, 0xc4, 0x49, 0xf5, 0x57, 0xc0, 0x96,
-0x59, 0x4a, 0x3c, 0xb7, 0x69, 0x44, 0x6a, 0x26,
-0xe2, 0x68, 0x79, 0xba, 0xdd, 0x1e, 0x3f, 0x04,
-0x2b, 0x05, 0xe6, 0xbf, 0x86, 0x94, 0x94, 0x68,
-0x02, 0xa1, 0x92, 0x14, 0x79, 0x5b, 0xfa, 0x21,
-0x34, 0x5c, 0x7f, 0x65, 0x8a, 0xbc, 0x2a, 0xf5,
-0x1a, 0x7e, 0x59, 0x49, 0x92, 0x89, 0x0c, 0xfe,
-0x91, 0x70, 0xbf, 0xcf, 0xf1, 0x8f, 0x09, 0x84,
-0x3a, 0x52, 0x33, 0xff, 0x16, 0xbe, 0x27, 0x34,
-0x24, 0xd9, 0x95, 0xdf, 0x90, 0xed, 0x86, 0x3f,
-0xad, 0xc4, 0x49, 0x32, 0x83, 0x7f, 0x10, 0x1f,
-0xaa, 0x4c, 0x3f, 0xb3, 0xc9, 0x62, 0x8d, 0xa1,
-0xeb, 0x11, 0x4f, 0x88, 0x8c, 0xd0, 0x47, 0x85,
-0xa0, 0xbe, 0x30, 0x34, 0xf3, 0x20, 0x7b, 0x9d,
-0xd8, 0x46, 0x4c, 0x85, 0x7d, 0xce, 0xfe, 0x8b,
-0x16, 0xad, 0x94, 0xf7, 0xea, 0x6c, 0xbe, 0x27,
-0xae, 0x0e, 0x1a, 0x7b, 0xf5, 0x2b, 0xf7, 0x57,
-0xfd, 0x5d, 0xcd, 0x38, 0xfd, 0x05, 0xe2, 0x1f,
-0x74, 0x34, 0xe3, 0x42, 0x53, 0x17, 0xb3, 0xc0,
-0x49, 0xd1, 0x1e, 0x9f, 0x2c, 0xb6, 0xf0, 0xcf,
-0x84, 0x78, 0x4c, 0x3a, 0x1f, 0x68, 0x19, 0x2e,
-0xd9, 0xd5, 0x6d, 0xe8, 0xec, 0x0a, 0x6c, 0x98,
-0x60, 0xfe, 0xe8, 0x4e, 0xe1, 0x46, 0x58, 0xa2,
-0x8b, 0xd9, 0xf8, 0x07, 0xd7, 0x8f, 0xef, 0x8c,
-0x12, 0x80, 0x5f, 0xd2, 0xeb, 0xf6, 0xfb, 0x4e,
-0x3c, 0x78, 0xa3, 0x74, 0x50, 0xbb, 0x41, 0x5d,
-0x6c, 0x88, 0x21, 0x83, 0x6d, 0xfc, 0xc1, 0x3b,
-0x4c, 0x5c, 0xf1, 0x1f, 0xf5, 0x03, 0x8c, 0xff,
-0xa4, 0xc5, 0x14, 0xc3, 0x3f, 0x7d, 0xb4, 0x66,
-0x58, 0xd9, 0x4d, 0xaa, 0xe4, 0xde, 0x8a, 0xad,
-0xaa, 0xbc, 0x5e, 0xac, 0x36, 0x06, 0x3b, 0xfd,
-0x77, 0xca, 0xab, 0x5b, 0x5d, 0xf1, 0x1f, 0x1b,
-0xff, 0x0c, 0xb0, 0x6d, 0xc8, 0xc3, 0x18, 0xe8,
-0xf0, 0x13, 0xef, 0xc6, 0x18, 0x04, 0x2a, 0x65,
-0x89, 0x80, 0x9a, 0xaa, 0xd6, 0x48, 0x07, 0x71,
-0xc7, 0x7f, 0x2c, 0xfc, 0xf3, 0x17, 0xa8, 0xcf,
-0xde, 0x6e, 0x44, 0x3b, 0xc4, 0x5b, 0xf8, 0xc3,
-0x98, 0x5f, 0x93, 0x77, 0x2c, 0xac, 0x83, 0xb9,
-0xd4, 0x9f, 0x94, 0x07, 0x0b, 0x33, 0xf1, 0x1f,
-0xbd, 0x74, 0xa5, 0x1d, 0x9f, 0xa9, 0x95, 0x7e,
-0xd2, 0x33, 0xc7, 0xf0, 0x25, 0x7e, 0x10, 0x84,
-0xf8, 0xc1, 0x79, 0x2b, 0xbc, 0x5e, 0xf1, 0x6a,
-0x38, 0x99, 0x1c, 0xf0, 0x33, 0x20, 0x94, 0x1d,
-0xff, 0x31, 0xdd, 0x7a, 0xf7, 0x31, 0xee, 0xdf,
-0x37, 0xdc, 0xa1, 0x9c, 0x21, 0x3f, 0x61, 0x1b,
-0xdb, 0x0d, 0x09, 0x31, 0x2d, 0x1f, 0x87, 0xf9,
-0xfa, 0xff, 0xd0, 0x17, 0x65, 0xc5, 0x7f, 0x64,
-0x8e, 0x3f, 0x77, 0x8a, 0xb5, 0x0c, 0x4d, 0x85,
-0x0f, 0xb2, 0xd5, 0x15, 0x84, 0x37, 0xe0, 0xa9,
-0x5e, 0xef, 0xa6, 0x9a, 0xea, 0x7d, 0x6c, 0x23,
-0xd6, 0xea, 0x7d, 0xd0, 0x8d, 0x7f, 0x0a, 0xcc,
-0x65, 0x50, 0xf4, 0x6c, 0xdb, 0x62, 0xd2, 0x67,
-0x34, 0xa6, 0x7d, 0x94, 0xcc, 0xd7, 0xfb, 0xc0,
-0x1f, 0xf0, 0x3e, 0xe2, 0xa9, 0x91, 0x47, 0x96,
-0xfa, 0x3b, 0x3c, 0x9b, 0xc9, 0x1f, 0x9c, 0xf5,
-0x60, 0xe2, 0x9f, 0x00, 0x7b, 0x5f, 0xfc, 0x1d,
-0xd0, 0xdd, 0xce, 0xac, 0xcd, 0xec, 0x4b, 0x8a,
-0xe1, 0x81, 0x75, 0x33, 0x13, 0xb7, 0x84, 0xd6,
-0xdc, 0x22, 0x0c, 0x50, 0x2d, 0x59, 0x39, 0xdb,
-0x9f, 0xc1, 0x3f, 0x93, 0xc2, 0x0c, 0x81, 0xe3,
-0x81, 0x53, 0x85, 0x5f, 0x34, 0xa6, 0xd1, 0xfa,
-0x31, 0xcf, 0x42, 0x32, 0x43, 0x5a, 0x9b, 0xaa,
-0x8e, 0xca, 0xb7, 0x14, 0xce, 0xf8, 0xdc, 0x3f,
-0xd3, 0x6a, 0xcd, 0x73, 0x4b, 0xd9, 0xb9, 0x4c,
-0xfc, 0x47, 0x46, 0xb3, 0x36, 0xd7, 0xf0, 0x3d,
-0xd3, 0xb6, 0x30, 0x29, 0xa4, 0xe6, 0x8f, 0x2b,
-0xdb, 0x15, 0x2f, 0xfc, 0x6b, 0x60, 0xb7, 0xfe,
-0x59, 0xed, 0xba, 0x02, 0xe9, 0x43, 0x08, 0xc5,
-0x83, 0x21, 0xf1, 0xf5, 0x4c, 0xfc, 0xa7, 0xd8,
-0xd4, 0x4f, 0xf1, 0xce, 0x1a, 0x06, 0x9b, 0x85,
-0x46, 0xe3, 0xca, 0xb4, 0x78, 0xc6, 0x7f, 0x5e,
-0x63, 0xdb, 0x84, 0xf4, 0xa7, 0xce, 0xc0, 0x2f,
-0x19, 0x42, 0x28, 0x9e, 0x10, 0xa7, 0xc4, 0x3f,
-0x12, 0x7b, 0x6d, 0xc3, 0xc7, 0x8b, 0x93, 0x4a,
-0xbd, 0xff, 0x77, 0xb8, 0xd1, 0x88, 0x88, 0x7f,
-0x80, 0xd7, 0x48, 0x4b, 0x54, 0x36, 0xdc, 0xf1,
-0x1f, 0x66, 0x7f, 0xae, 0xe3, 0xf6, 0xc4, 0x53,
-0x55, 0xb4, 0x96, 0x2d, 0x8c, 0x75, 0x11, 0xe2,
-0x4d, 0x30, 0xb3, 0xa3, 0xcb, 0x11, 0x71, 0x36,
-0x59, 0x0b, 0x8d, 0xba, 0x6c, 0x78, 0x32, 0xf1,
-0x1f, 0x6a, 0xe3, 0x1f, 0x84, 0x79, 0x6b, 0xe9,
-0x57, 0xc6, 0x2a, 0x3b, 0x5a, 0x67, 0xc0, 0xa3,
-0x54, 0x4b, 0xcb, 0x4b, 0xc9, 0x43, 0xb5, 0xab,
-0x69, 0xfd, 0x5d, 0x45, 0x4b, 0x5d, 0xf1, 0x1f,
-0x0b, 0xff, 0x0c, 0x2d, 0x0a, 0x91, 0x25, 0xd0,
-0x9d, 0x0c, 0x1a, 0x9e, 0x62, 0x06, 0x2c, 0xbb,
-0x13, 0xfe, 0xc8, 0xf6, 0xaa, 0x56, 0xb6, 0x91,
-0x8f, 0x30, 0xc3, 0xbe, 0x71, 0xa6, 0x3b, 0xfe,
-0xb3, 0xdd, 0xc4, 0x3f, 0x9a, 0xb8, 0x2a, 0xfa,
-0xd2, 0xd6, 0x30, 0x8d, 0xa7, 0xc5, 0x80, 0xf4,
-0x63, 0xe9, 0xab, 0x49, 0xef, 0xb1, 0xee, 0x67,
-0xe0, 0x10, 0x6d, 0x61, 0x7f, 0xbc, 0xdb, 0x15,
-0xff, 0x61, 0x2b, 0x83, 0xc3, 0x80, 0x1e, 0x31,
-0x59, 0xc6, 0x1d, 0x13, 0xd4, 0x1c, 0x65, 0x57,
-0x9e, 0xbb, 0xc4, 0xb7, 0x46, 0x64, 0xae, 0x4a,
-0x0e, 0x97, 0x95, 0xf4, 0xe4, 0xe2, 0x1f, 0xb4,
-0x4e, 0xfd, 0x62, 0x3b, 0xf3, 0x86, 0xcc, 0x9b,
-0x27, 0xba, 0xb7, 0xc1, 0x4f, 0x36, 0x35, 0x45,
-0x83, 0x09, 0xf1, 0x2a, 0x38, 0x49, 0x9b, 0xa2,
-0x05, 0x9b, 0x72, 0xe2, 0x3f, 0xe8, 0x76, 0xfb,
-0x1e, 0x21, 0x57, 0x91, 0xde, 0x68, 0x9d, 0x7e,
-0x3f, 0xc3, 0x33, 0x72, 0xaf, 0xe4, 0xef, 0x94,
-0x2f, 0x41, 0x8f, 0x9c, 0xdc, 0x1a, 0x5d, 0xf4,
-0x90, 0x2b, 0xfe, 0x53, 0x59, 0x60, 0xba, 0x69,
-0x65, 0x63, 0x61, 0x2d, 0xe9, 0xa3, 0x75, 0x51,
-0x06, 0x84, 0x7a, 0xe8, 0xc3, 0xc4, 0xdf, 0x11,
-0x4f, 0x94, 0x8c, 0x69, 0x7b, 0x54, 0x7f, 0xfb,
-0xa5, 0xee, 0xf8, 0x8f, 0x1b, 0xff, 0x48, 0x02,
-0x68, 0xf7, 0xc8, 0x15, 0xa4, 0x58, 0xea, 0xd2,
-0xb5, 0x51, 0x59, 0x2d, 0x5c, 0x0d, 0x3b, 0x17,
-0x68, 0x91, 0xef, 0x55, 0x78, 0x32, 0xf1, 0x9f,
-0xb9, 0xc5, 0x88, 0x37, 0x10, 0xe4, 0x30, 0xfb,
-0xd0, 0x81, 0x61, 0x1f, 0x60, 0xd3, 0x7c, 0x03,
-0x06, 0x60, 0x31, 0xc5, 0xf9, 0x42, 0x13, 0x2d,
-0xa6, 0xa2, 0x2b, 0xfe, 0x73, 0x85, 0x35, 0xdf,
-0x88, 0xf0, 0x31, 0xdb, 0xb6, 0x87, 0x3f, 0x57,
-0x72, 0x58, 0xfc, 0x8d, 0xe7, 0xac, 0xfe, 0x3c,
-0xc3, 0x3f, 0x6d, 0xff, 0x00, 0xe7, 0x75, 0x0e,
-0x84, 0xdc, 0xf1, 0x1f, 0x2b, 0x1e, 0x32, 0x2a,
-0x9e, 0xd0, 0x3e, 0x86, 0x96, 0x85, 0x55, 0xa3,
-0x62, 0xed, 0x2d, 0xef, 0x83, 0x12, 0x91, 0x5e,
-0x8f, 0xcd, 0x4e, 0x17, 0x43, 0xf3, 0xc2, 0xe2,
-0xd1, 0x6e, 0x57, 0xfc, 0x47, 0xe5, 0xf1, 0x1f,
-0x06, 0x72, 0x08, 0x17, 0x2a, 0x7d, 0xa4, 0x55,
-0x28, 0x8d, 0x47, 0xfd, 0x95, 0x72, 0x0f, 0xa9,
-0x86, 0xf8, 0x3d, 0x4d, 0x0f, 0x30, 0x44, 0xe4,
-0x8a, 0xff, 0x48, 0xed, 0xe6, 0x7c, 0x43, 0x31,
-0x0e, 0x84, 0x5a, 0x3d, 0xb3, 0xd7, 0xad, 0xa6,
-0x5b, 0x3a, 0x92, 0x11, 0x86, 0x70, 0xa4, 0x9e,
-0x2e, 0xb9, 0xb6, 0x55, 0x56, 0x63, 0x99, 0xf8,
-0x4f, 0xe5, 0x74, 0x13, 0xff, 0x70, 0xf4, 0xb8,
-0xb7, 0xb5, 0x61, 0x81, 0xa2, 0x92, 0x1e, 0xdc,
-0x7f, 0x7d, 0x4e, 0xde, 0xb8, 0xae, 0x96, 0x16,
-0x81, 0x7f, 0x81, 0xbc, 0x69, 0xca, 0xf8, 0x8f,
-0x38, 0x26, 0x9f, 0x8c, 0xdc, 0xa7, 0xcb, 0xdf,
-0x13, 0xb7, 0xc1, 0xe3, 0xb1, 0xa6, 0x48, 0xb0,
-0x02, 0xae, 0x82, 0xfd, 0xfa, 0x53, 0x51, 0x6f,
-0xbf, 0x98, 0x89, 0xff, 0x8c, 0x3b, 0xf1, 0x9f,
-0x72, 0xf6, 0x0f, 0x85, 0xf9, 0xad, 0xc5, 0x09,
-0x71, 0xa5, 0x7c, 0x52, 0x9e, 0xbf, 0xdc, 0xd7,
-0xff, 0xe9, 0x97, 0xc8, 0x87, 0xea, 0xfc, 0x85,
-0x8d, 0x65, 0x7d, 0x99, 0xf8, 0x8f, 0x8d, 0x7f,
-0x7c, 0x71, 0x86, 0x7f, 0x46, 0xf4, 0x26, 0x58,
-0xdc, 0xd3, 0xac, 0xa9, 0x23, 0x64, 0x8e, 0xe8,
-0xa3, 0x35, 0xcb, 0x8c, 0xf8, 0xe2, 0x26, 0xd5,
-0xdb, 0x23, 0x7a, 0xf2, 0xe2, 0x3f, 0x4a, 0xda,
-0x33, 0x57, 0xba, 0x5f, 0xaf, 0x49, 0x79, 0xd2,
-0xa4, 0x8e, 0x30, 0x21, 0xa6, 0xa4, 0xc9, 0x3c,
-0xf8, 0x71, 0xec, 0xd1, 0xe4, 0x8a, 0x71, 0xe2,
-0xc9, 0xe0, 0x1f, 0x7b, 0xff, 0x15, 0x22, 0x52,
-0x6d, 0xf7, 0x88, 0x36, 0x01, 0x21, 0x7d, 0x31,
-0x5d, 0x47, 0x6b, 0x23, 0xec, 0xca, 0x8b, 0xc2,
-0x16, 0xaa, 0xb5, 0xcb, 0x15, 0x97, 0x2d, 0x74,
-0xd6, 0x5b, 0xd2, 0xc6, 0x3f, 0xab, 0xc8, 0x25,
-0xb0, 0xd6, 0xa8, 0xde, 0xb7, 0xb0, 0x93, 0xfc,
-0x57, 0xe8, 0xd6, 0xab, 0x75, 0xb6, 0x6d, 0xd9,
-0x04, 0x6b, 0xe4, 0x6a, 0xda, 0x7f, 0x07, 0x59,
-0xe1, 0x8c, 0xdf, 0xce, 0xf0, 0x0f, 0xc6, 0x7f,
-0x7c, 0x93, 0x62, 0x19, 0xbc, 0x4c, 0x1f, 0x4c,
-0x7b, 0x57, 0x29, 0x5f, 0x24, 0x2f, 0x75, 0x5d,
-0x9b, 0xdc, 0xb0, 0x4a, 0xfc, 0x03, 0x79, 0x9f,
-0x36, 0x47, 0xbd, 0x47, 0xca, 0xff, 0xd6, 0x89,
-0xff, 0xc8, 0x56, 0xfc, 0x87, 0x81, 0x6a, 0xa3,
-0xcc, 0x32, 0x2c, 0x3f, 0x4a, 0x9e, 0x24, 0xcf,
-0x03, 0xb3, 0xf0, 0x5f, 0x23, 0xb8, 0x7f, 0x67,
-0x4b, 0x25, 0xe6, 0xd8, 0x1f, 0xe0, 0xfe, 0xeb,
-0x86, 0xb4, 0x6f, 0xbf, 0x38, 0x07, 0xce, 0xd1,
-0x96, 0x31, 0xf6, 0x87, 0xc2, 0xf2, 0xb9, 0xc4,
-0xd3, 0xcb, 0x97, 0x4c, 0x92, 0x53, 0xf4, 0x97,
-0x9b, 0xd8, 0x46, 0x6c, 0x9c, 0x79, 0x47, 0x37,
-0xfe, 0xe1, 0xcf, 0xff, 0x48, 0xab, 0x8a, 0xeb,
-0x61, 0x9c, 0xb9, 0xe9, 0x2a, 0x78, 0x2a, 0x54,
-0x7d, 0xf3, 0xa2, 0xce, 0x32, 0x55, 0x7b, 0x6a,
-0x96, 0x8f, 0x16, 0xeb, 0x4d, 0x75, 0xba, 0x73,
-0x7f, 0x1e, 0xff, 0xb9, 0xc6, 0x50, 0xa2, 0x24,
-0x02, 0x4f, 0xab, 0xf5, 0x07, 0x19, 0xfe, 0xa9,
-0x82, 0xdd, 0xa4, 0x7a, 0x75, 0xd1, 0xff, 0x45,
-0x2a, 0x7b, 0x9e, 0x84, 0xfa, 0xf6, 0xa2, 0x65,
-0x04, 0x1c, 0xfb, 0xa3, 0x59, 0xfb, 0x2f, 0x05,
-0x88, 0xae, 0xee, 0xf4, 0x72, 0x47, 0xef, 0x85,
-0xeb, 0x65, 0x7f, 0x92, 0xe9, 0xb3, 0x08, 0x9e,
-0xd1, 0x83, 0x0f, 0x5d, 0x73, 0x95, 0x2a, 0xe7,
-0xc4, 0x7f, 0x98, 0x7f, 0x09, 0xd5, 0x2c, 0xd3,
-0x4f, 0x1a, 0x61, 0xe3, 0xf2, 0x14, 0xdb, 0x5f,
-0x7c, 0x83, 0x36, 0x45, 0x8a, 0x37, 0x79, 0x66,
-0x96, 0xb2, 0x2b, 0x91, 0xe2, 0xcd, 0x45, 0x75,
-0x99, 0xf8, 0x0f, 0x58, 0xf6, 0x36, 0x71, 0xf9,
-0x76, 0x1c, 0x3f, 0x7a, 0xe5, 0x13, 0x35, 0xc7,
-0xe4, 0x49, 0x3a, 0xaf, 0xc3, 0xb7, 0x45, 0xf9,
-0x67, 0xed, 0x54, 0x24, 0x9c, 0x28, 0xd9, 0x24,
-0x66, 0xe2, 0x3f, 0x82, 0x89, 0x7f, 0x0c, 0xdf,
-0xbb, 0x62, 0x08, 0x5e, 0x8b, 0x7d, 0x6b, 0xc2,
-0x3b, 0x51, 0xae, 0xaa, 0x6f, 0x18, 0xcd, 0x34,
-0xd8, 0x2f, 0xce, 0x96, 0xce, 0xca, 0x0a, 0x5b,
-0xea, 0x5d, 0x86, 0x13, 0xff, 0xa1, 0x56, 0xfc,
-0xa7, 0xef, 0x31, 0x52, 0xa4, 0x9f, 0x36, 0x1a,
-0x26, 0xb6, 0xff, 0x28, 0x76, 0x75, 0xf4, 0x87,
-0x50, 0x17, 0x90, 0xe7, 0x76, 0x7f, 0x09, 0x06,
-0x87, 0xfd, 0x51, 0x65, 0x1d, 0x89, 0x66, 0xc5,
-0x7f, 0x7e, 0x08, 0x77, 0xf3, 0x7c, 0x8d, 0xd6,
-0xab, 0x05, 0x47, 0x8b, 0x54, 0xa2, 0x15, 0xf5,
-0xcb, 0x77, 0x45, 0xe5, 0x01, 0xff, 0xdf, 0x6a,
-0x7b, 0xe2, 0xfe, 0xce, 0xcb, 0xb7, 0xb7, 0xa6,
-0xb3, 0xf1, 0x0f, 0xea, 0x47, 0x25, 0x72, 0xfb,
-0x4e, 0x3d, 0x38, 0x24, 0x03, 0xdb, 0x88, 0x25,
-0xd9, 0x8a, 0x61, 0xfb, 0x7d, 0x7c, 0x55, 0x35,
-0xe8, 0x03, 0xf6, 0x4a, 0x3b, 0xea, 0x2f, 0x5e,
-0xc9, 0xf1, 0xb0, 0xaf, 0xa7, 0x4d, 0x53, 0x5f,
-0xd1, 0x1b, 0x86, 0x8b, 0x1f, 0x28, 0xd7, 0x98,
-0xfd, 0x69, 0xd2, 0xbd, 0xa9, 0x1a, 0x4d, 0x9d,
-0x44, 0x8b, 0x94, 0x10, 0x8d, 0xab, 0x6d, 0xfb,
-0x93, 0xbc, 0xc2, 0x9a, 0x6f, 0xf7, 0xa3, 0x93,
-0xf1, 0xf3, 0x24, 0xec, 0xfd, 0xa7, 0x7d, 0x66,
-0xda, 0x02, 0x7c, 0x13, 0x8d, 0x29, 0x38, 0xc3,
-0x9c, 0x8f, 0xcf, 0xb8, 0x7d, 0xdc, 0xb1, 0x3f,
-0x56, 0xfe, 0x4b, 0x5b, 0xd9, 0xd1, 0x76, 0x37,
-0x9c, 0xaf, 0x6e, 0x4e, 0x6f, 0x18, 0x14, 0x3f,
-0x60, 0xe3, 0x9b, 0x47, 0x8b, 0x57, 0x89, 0x9d,
-0xa3, 0x07, 0x2b, 0x9a, 0xbd, 0xde, 0x17, 0xc4,
-0xce, 0x4c, 0xfc, 0x07, 0x18, 0xfe, 0xe9, 0x99,
-0x97, 0x96, 0x07, 0x49, 0x03, 0x3c, 0x9f, 0x60,
-0xe8, 0x6e, 0x90, 0x7c, 0x00, 0xcf, 0xaf, 0xaa,
-0x39, 0x5c, 0xbc, 0xbd, 0x55, 0xdb, 0xc7, 0x0c,
-0x51, 0x95, 0xbc, 0xa9, 0x55, 0x73, 0x7e, 0x5f,
-0x2b, 0xfe, 0x93, 0x96, 0x43, 0x7e, 0x9c, 0x38,
-0xdf, 0x7d, 0x1f, 0x2c, 0xda, 0x0b, 0xda, 0x48,
-0x51, 0xaa, 0xb0, 0x9d, 0x52, 0x55, 0xd3, 0xe3,
-0x85, 0xad, 0x24, 0x13, 0xff, 0x29, 0x45, 0xfc,
-0x53, 0x07, 0xf2, 0xa0, 0x1f, 0x7f, 0x08, 0x3f,
-0x2a, 0x96, 0x01, 0x5d, 0xe2, 0x37, 0x8a, 0xb6,
-0x96, 0xf9, 0xb5, 0x38, 0xf5, 0x17, 0xca, 0xf1,
-0x58, 0xc8, 0xb1, 0x3f, 0x3a, 0xcf, 0x7f, 0xcd,
-0x1f, 0xf6, 0xce, 0x56, 0x56, 0x4a, 0xa7, 0x61,
-0xc0, 0x04, 0xc6, 0x1f, 0xd2, 0x01, 0xbd, 0x3e,
-0x21, 0x7e, 0x09, 0x46, 0x92, 0x03, 0xd4, 0xbb,
-0x9e, 0x19, 0x53, 0xfb, 0xfe, 0x69, 0xc4, 0x3f,
-0x84, 0xe9, 0xc7, 0x10, 0x9f, 0xc5, 0x6d, 0x85,
-0x15, 0x08, 0xc2, 0x6d, 0xe9, 0x48, 0xb7, 0x21,
-0x7f, 0x28, 0xcd, 0x5f, 0xf6, 0xdf, 0x54, 0x71,
-0xd2, 0x59, 0x3f, 0x86, 0x99, 0xff, 0x3a, 0xe8,
-0xdd, 0x59, 0x13, 0x84, 0x8f, 0xa0, 0xc9, 0xbc,
-0xff, 0x49, 0x75, 0xb6, 0xf1, 0xd9, 0x84, 0xf8,
-0x37, 0xf2, 0x2b, 0xd0, 0xf4, 0xa6, 0x77, 0x77,
-0x76, 0xfe, 0x0b, 0xd7, 0xcf, 0x84, 0xfc, 0x2f,
-0x0c, 0xbf, 0xfd, 0x9e, 0x8d, 0xc7, 0xe7, 0x97,
-0xf6, 0x76, 0x6d, 0x1d, 0x8a, 0x4b, 0xc4, 0xcf,
-0xfc, 0xef, 0xd6, 0xcf, 0xc9, 0xfd, 0x64, 0x20,
-0x07, 0xff, 0x30, 0xfd, 0xcc, 0xaf, 0x43, 0xfd,
-0xf0, 0x44, 0xd8, 0x41, 0xd8, 0x49, 0x6b, 0xd9,
-0x46, 0xac, 0xb5, 0x48, 0xeb, 0x56, 0xa3, 0x9a,
-0x7c, 0x0d, 0x99, 0xeb, 0xe0, 0x9f, 0x28, 0x8f,
-0xff, 0x7c, 0x25, 0x2d, 0xaf, 0x62, 0xfb, 0xa9,
-0x1f, 0xd0, 0x6a, 0xb6, 0x7f, 0x21, 0x6f, 0xc1,
-0xae, 0x44, 0xf5, 0x58, 0x7c, 0x55, 0xeb, 0x25,
-0x42, 0x4f, 0xa2, 0xba, 0x56, 0x5e, 0x48, 0xfa,
-0x5d, 0xf9, 0x2f, 0x2f, 0x7c, 0x24, 0xcc, 0x37,
-0x82, 0x82, 0x58, 0x22, 0x7d, 0x44, 0x77, 0x8f,
-0xfb, 0xe6, 0x89, 0x87, 0xf4, 0x0f, 0x85, 0xdd,
-0xc6, 0x67, 0x43, 0xa2, 0xb4, 0xde, 0x50, 0x43,
-0x34, 0x08, 0x4a, 0x59, 0x4e, 0xfe, 0xeb, 0x46,
-0xa3, 0xf1, 0x43, 0x36, 0xcd, 0xf3, 0xf2, 0xf3,
-0x86, 0xef, 0x43, 0xae, 0x9f, 0x96, 0x21, 0xa6,
-0xa8, 0xdd, 0x70, 0x46, 0x65, 0x0b, 0x69, 0xdf,
-0x67, 0x22, 0x19, 0xfc, 0xc3, 0xf5, 0xcf, 0xb6,
-0xa5, 0x6c, 0x77, 0x06, 0xa7, 0x3b, 0xc2, 0xc6,
-0x22, 0x2e, 0xe8, 0xcf, 0xb5, 0x7a, 0x43, 0xe2,
-0xb3, 0xf2, 0x6b, 0xc0, 0xec, 0xdb, 0xa4, 0x58,
-0x97, 0x17, 0xff, 0x09, 0x74, 0x4e, 0x33, 0x85,
-0x92, 0x4e, 0xf2, 0x26, 0x3c, 0xcd, 0x60, 0xbf,
-0xdc, 0x49, 0x2a, 0xa4, 0x17, 0xa1, 0x46, 0x97,
-0x47, 0xc5, 0x7b, 0x73, 0xe2, 0x3f, 0x75, 0x38,
-0xdf, 0xb7, 0xe0, 0xe9, 0x64, 0x7d, 0xfa, 0xe1,
-0x55, 0xfe, 0xb7, 0x8a, 0x10, 0x11, 0xc9, 0xab,
-0x6e, 0xbe, 0x1f, 0xbe, 0x6b, 0x54, 0xa7, 0x3d,
-0xab, 0x18, 0x3e, 0xb7, 0xf5, 0xdf, 0x21, 0x1d,
-0x94, 0x98, 0x3e, 0x25, 0x86, 0xae, 0xcd, 0x44,
-0x98, 0x07, 0xf5, 0xb9, 0x2b, 0xa1, 0x0d, 0x07,
-0xe6, 0x62, 0x62, 0x88, 0x6a, 0x5f, 0xab, 0x9b,
-0xee, 0xb9, 0x2d, 0x13, 0xff, 0x29, 0x40, 0xfc,
-0x33, 0x37, 0xe9, 0xdd, 0xc2, 0x36, 0xe9, 0x66,
-0x22, 0x6c, 0x1a, 0x8f, 0x08, 0x6d, 0x61, 0x66,
-0x73, 0x6f, 0xdd, 0x5b, 0xfb, 0x76, 0x25, 0x4b,
-0xc6, 0xdd, 0xf9, 0x2f, 0xc0, 0x68, 0x43, 0xb8,
-0xcc, 0x87, 0xde, 0x7f, 0x82, 0x39, 0xe2, 0x12,
-0x74, 0xc4, 0x93, 0x6c, 0x1b, 0xde, 0xb8, 0x5a,
-0x4c, 0x6b, 0x88, 0x7f, 0x8a, 0xe8, 0xda, 0x8d,
-0x19, 0xfc, 0x03, 0xe8, 0x1f, 0xe7, 0xe9, 0x0c,
-0x2d, 0xa3, 0xd0, 0x64, 0x6e, 0xfc, 0x3f, 0x34,
-0xc2, 0x7a, 0xf0, 0x01, 0xf1, 0x6a, 0xd2, 0x4b,
-0x9b, 0xda, 0xa7, 0x6d, 0x9e, 0x96, 0x13, 0xff,
-0x11, 0x1a, 0x3a, 0x64, 0xf4, 0xbf, 0x7b, 0xa0,
-0xce, 0x74, 0xc4, 0x7b, 0x20, 0xa9, 0x33, 0xfc,
-0x33, 0x93, 0x3d, 0xff, 0xd6, 0xce, 0xa2, 0x4d,
-0xad, 0xae, 0xf8, 0xcf, 0x74, 0xc4, 0x3f, 0x0c,
-0x34, 0x9e, 0xe0, 0xc3, 0xfc, 0xd6, 0x78, 0xf9,
-0xc7, 0x0b, 0xe4, 0x94, 0xa7, 0x56, 0x7b, 0xfc,
-0x32, 0xbc, 0x12, 0x5b, 0x93, 0x83, 0x7f, 0xea,
-0x19, 0xda, 0x6c, 0x65, 0x78, 0x40, 0x08, 0x60,
-0xa2, 0x87, 0x09, 0x7a, 0x5d, 0x64, 0xbb, 0x4a,
-0x0a, 0x8a, 0xb6, 0xe8, 0x5a, 0xa4, 0xa8, 0x42,
-0xdd, 0x97, 0x85, 0x7f, 0x78, 0xfe, 0xc5, 0x10,
-0x71, 0xe2, 0x98, 0xf6, 0xe2, 0x82, 0x19, 0x88,
-0x90, 0x57, 0x30, 0xfc, 0xb3, 0x81, 0x8a, 0x87,
-0xf2, 0xf1, 0x4f, 0xaa, 0x86, 0xe1, 0x01, 0x33,
-0xda, 0x33, 0x06, 0x1f, 0xeb, 0xd7, 0x45, 0x98,
-0xdb, 0xfa, 0x18, 0x7e, 0xda, 0xde, 0xf2, 0x39,
-0xdf, 0xe1, 0x9a, 0xdc, 0xfc, 0x57, 0x8b, 0xee,
-0xed, 0xc4, 0xf8, 0x89, 0xdc, 0xa4, 0x6f, 0xc0,
-0xf1, 0x67, 0xf5, 0xe7, 0x16, 0x96, 0x8c, 0x8a,
-0x4f, 0xca, 0x37, 0x86, 0x5a, 0x22, 0x2b, 0x0f,
-0x8b, 0x37, 0xe7, 0xe2, 0x1f, 0x41, 0xa6, 0x18,
-0xff, 0x69, 0xf7, 0x0b, 0x08, 0x84, 0xe4, 0x41,
-0x9d, 0xe1, 0x1f, 0x8c, 0x25, 0x0f, 0x76, 0x36,
-0x24, 0x3a, 0x7a, 0x3c, 0x25, 0x2e, 0xfb, 0x83,
-0xd3, 0x0c, 0xea, 0xb2, 0xea, 0x67, 0x13, 0x97,
-0xb4, 0x05, 0xe6, 0x7c, 0xa3, 0xc1, 0xd6, 0x85,
-0x2a, 0x61, 0x78, 0x0f, 0x1a, 0x22, 0x4c, 0xb1,
-0x24, 0x17, 0xff, 0x2c, 0x90, 0xcd, 0xf8, 0x9b,
-0xa9, 0xcf, 0xa2, 0x3d, 0xb0, 0x55, 0x97, 0x13,
-0x85, 0x41, 0xba, 0x47, 0x2b, 0x31, 0x2a, 0x19,
-0x9e, 0xcc, 0xc1, 0x3f, 0xf3, 0x6f, 0xf6, 0x3e,
-0xa0, 0xd4, 0x4a, 0x27, 0x19, 0xbe, 0x5d, 0xc2,
-0x03, 0x3b, 0x10, 0x8e, 0x96, 0xa8, 0xe2, 0x63,
-0x9b, 0xbe, 0x9e, 0x0c, 0x47, 0xa5, 0x47, 0xda,
-0x56, 0x38, 0xf6, 0x67, 0xbb, 0x89, 0x7f, 0xa2,
-0x8d, 0xfd, 0xa2, 0x0d, 0x9c, 0x08, 0x0a, 0xcf,
-0x2e, 0xf7, 0x25, 0xbe, 0xf4, 0x8e, 0x7c, 0xb2,
-0x27, 0xdc, 0xe1, 0x2b, 0x13, 0xdf, 0xcb, 0xc3,
-0x3f, 0x0c, 0xe4, 0x68, 0x30, 0x21, 0x34, 0x09,
-0xa6, 0xfe, 0x6b, 0xe7, 0x61, 0x46, 0xac, 0x06,
-0x46, 0x8a, 0x9a, 0xca, 0xbc, 0xb4, 0x3b, 0x0b,
-0xff, 0x60, 0x92, 0x8b, 0xca, 0x5f, 0x89, 0xa1,
-0xe0, 0xa7, 0x6c, 0xb7, 0x3e, 0x0e, 0xcf, 0xe9,
-0x75, 0xd4, 0x93, 0xf6, 0x0c, 0xd2, 0xfb, 0x63,
-0x5b, 0x52, 0x1d, 0x63, 0xf9, 0xf8, 0xe7, 0x48,
-0x40, 0xf5, 0x38, 0xf6, 0x79, 0x31, 0x3c, 0x43,
-0x03, 0x43, 0xf2, 0x5c, 0x22, 0x95, 0x6d, 0x91,
-0x02, 0xfa, 0xf5, 0x95, 0x7e, 0x8f, 0x63, 0x7f,
-0x6c, 0xfc, 0x23, 0x23, 0x0c, 0x78, 0x1a, 0xaa,
-0x8d, 0x22, 0x7c, 0x7f, 0x9f, 0xd2, 0x1f, 0x1f,
-0xf6, 0x7c, 0xcd, 0xf3, 0x33, 0x6f, 0x4f, 0xfc,
-0x9a, 0xd6, 0xcb, 0xef, 0x80, 0x80, 0x73, 0x7f,
-0x1b, 0xff, 0x78, 0x57, 0x89, 0x33, 0x98, 0xfd,
-0xd9, 0x99, 0x5e, 0xb2, 0x6a, 0xda, 0x5b, 0xf2,
-0x47, 0x74, 0x30, 0x1d, 0x5c, 0x25, 0xce, 0x91,
-0xde, 0x5f, 0x73, 0x43, 0xb4, 0x78, 0x5c, 0xa9,
-0xcb, 0xc4, 0x7f, 0xae, 0xc0, 0xfd, 0xe6, 0x7c,
-0x8c, 0xe7, 0x73, 0xc3, 0x32, 0x64, 0x09, 0xcf,
-0x19, 0x8d, 0x21, 0x65, 0xb7, 0xc4, 0xfc, 0x97,
-0xee, 0x4d, 0xbb, 0xe2, 0x3f, 0x88, 0x7f, 0x4e,
-0xe3, 0xfd, 0x27, 0xc5, 0x73, 0xf0, 0x1a, 0xa6,
-0xbd, 0x50, 0x38, 0x4f, 0xc5, 0xa3, 0x25, 0x93,
-0xe2, 0x73, 0xea, 0xf9, 0xc4, 0xae, 0xf4, 0xe2,
-0x23, 0x60, 0x64, 0xe3, 0x1f, 0xca, 0x9f, 0xff,
-0x1c, 0x65, 0xdb, 0x28, 0xc3, 0xd7, 0x59, 0xc6,
-0xec, 0x8f, 0x5a, 0x3d, 0x22, 0xdf, 0xcb, 0x36,
-0xf2, 0x4f, 0x75, 0x56, 0x0f, 0xc7, 0x23, 0xf0,
-0x5e, 0x26, 0xbf, 0x60, 0xe6, 0xbf, 0x5e, 0x92,
-0x3b, 0x63, 0x67, 0xf4, 0xb5, 0xa4, 0x9a, 0x6d,
-0xdc, 0xd8, 0x7c, 0x77, 0xb1, 0x89, 0xaf, 0x9b,
-0xb8, 0xf9, 0x3b, 0xf0, 0x24, 0x54, 0xeb, 0x45,
-0x0b, 0x88, 0x91, 0x8b, 0x7f, 0xde, 0x66, 0xda,
-0x3b, 0x08, 0x8f, 0x12, 0xcd, 0xb4, 0x3f, 0x7b,
-0xd4, 0xad, 0x46, 0x47, 0x68, 0x4d, 0x1d, 0xa4,
-0x92, 0xfe, 0x4d, 0x45, 0x4f, 0xe6, 0xe5, 0xbf,
-0xe6, 0xa7, 0xbd, 0xcf, 0x32, 0x7b, 0xfb, 0x0a,
-0xf3, 0x5f, 0x4a, 0x0a, 0x33, 0x5c, 0xb4, 0x79,
-0xa8, 0x64, 0xdb, 0xed, 0x5b, 0x13, 0x27, 0xd3,
-0x4d, 0xa1, 0xe2, 0xcd, 0x62, 0xe6, 0x79, 0x2c,
-0xfc, 0xa3, 0x37, 0xa2, 0x1b, 0x72, 0x02, 0x41,
-0xa7, 0x31, 0x42, 0x82, 0x61, 0x61, 0x34, 0x44,
-0x25, 0x9b, 0xa6, 0x65, 0xf2, 0x2f, 0x36, 0xfe,
-0xf1, 0x9e, 0x79, 0xf4, 0x8c, 0xf4, 0x11, 0xdb,
-0x96, 0x72, 0x7f, 0x77, 0x56, 0x9d, 0x63, 0x78,
-0x8f, 0x30, 0xb7, 0xbe, 0x9f, 0x16, 0x12, 0x39,
-0xdd, 0x0d, 0x4e, 0xfc, 0xa7, 0x4b, 0x5a, 0x29,
-0x31, 0xff, 0xd5, 0x29, 0x3f, 0x85, 0x6e, 0xd7,
-0xf6, 0xbf, 0x7b, 0xa2, 0x75, 0x46, 0x5d, 0x25,
-0xd9, 0x0a, 0x71, 0x3a, 0x33, 0x2a, 0xaf, 0x23,
-0xae, 0xfc, 0x97, 0xe9, 0xef, 0xde, 0x96, 0xb9,
-0x9b, 0xb3, 0xc7, 0x7f, 0x0f, 0x1e, 0x1b, 0xda,
-0xfe, 0xd8, 0x6d, 0x75, 0x6a, 0x9f, 0x7f, 0x66,
-0xf2, 0x32, 0xcc, 0xd7, 0xdb, 0xeb, 0x81, 0xe3,
-0x1f, 0x8d, 0xbd, 0x8f, 0xdc, 0x2c, 0x43, 0x72,
-0x74, 0x51, 0xa8, 0x15, 0x85, 0xed, 0xa8, 0x28,
-0x0c, 0xcc, 0xd6, 0xc2, 0x23, 0xc0, 0xde, 0x47,
-0x47, 0xfd, 0x98, 0xff, 0xba, 0x26, 0x6c, 0x04,
-0xd9, 0x32, 0x18, 0x39, 0xad, 0x35, 0x8d, 0xfa,
-0x9e, 0x6c, 0x7b, 0x9f, 0xbd, 0x2f, 0xec, 0xf9,
-0x53, 0xec, 0x8d, 0x38, 0x00, 0x73, 0x30, 0x34,
-0x0a, 0x62, 0x36, 0xfe, 0xb9, 0x52, 0x58, 0x92,
-0x16, 0x8f, 0x19, 0xa7, 0x3b, 0x98, 0x7f, 0x3f,
-0x2e, 0x9e, 0x49, 0x9e, 0x87, 0xe7, 0x8d, 0xc6,
-0x4e, 0x71, 0x82, 0xe3, 0xe7, 0x62, 0xa3, 0xc6,
-0x85, 0x7f, 0x0a, 0xce, 0xc0, 0xcb, 0xc0, 0x96,
-0xcd, 0xbe, 0x9a, 0x39, 0xd2, 0x9b, 0xed, 0x2d,
-0xe9, 0x0d, 0x23, 0x62, 0x48, 0x3b, 0x08, 0xd7,
-0x6d, 0x2b, 0x66, 0xc0, 0x69, 0xe4, 0x4c, 0x57,
-0x8b, 0xd7, 0x37, 0xec, 0xe2, 0xff, 0x50, 0xf5,
-0x18, 0x6c, 0xa0, 0x0c, 0xf6, 0x74, 0xc7, 0xea,
-0xe4, 0x27, 0xb4, 0xa6, 0xb4, 0x92, 0x8c, 0x69,
-0xea, 0x11, 0xa8, 0xa3, 0xf2, 0x3f, 0x7a, 0xaa,
-0x87, 0x07, 0x69, 0x83, 0xa4, 0xac, 0xf6, 0xb8,
-0xf1, 0xcf, 0x08, 0x4f, 0x2b, 0x2b, 0x65, 0x7a,
-0x2d, 0x24, 0xb4, 0x20, 0xd2, 0x5a, 0x7a, 0x52,
-0x71, 0x98, 0x39, 0x52, 0x04, 0xc4, 0x50, 0x99,
-0x69, 0x92, 0x17, 0x11, 0x97, 0xfd, 0x31, 0xd8,
-0x7e, 0xfc, 0x7b, 0x50, 0x37, 0xa4, 0x3c, 0x40,
-0x6a, 0xe4, 0x1f, 0x4a, 0x0d, 0x43, 0x8b, 0xb6,
-0x92, 0xc7, 0xa0, 0x5f, 0x63, 0xf7, 0x8f, 0x5f,
-0x36, 0x13, 0xf3, 0x8f, 0x51, 0x11, 0xf9, 0x3f,
-0xce, 0xfa, 0xac, 0xf8, 0x31, 0xfc, 0x9c, 0x3e,
-0x63, 0xf8, 0x92, 0x62, 0xa1, 0x34, 0x7a, 0x14,
-0xdf, 0x97, 0xf2, 0x27, 0xc8, 0x48, 0xf7, 0xec,
-0x78, 0x71, 0x5c, 0xfc, 0x35, 0x9a, 0x8e, 0xbb,
-0x7c, 0x71, 0xa2, 0xba, 0xf2, 0x5f, 0x3f, 0x6e,
-0x7d, 0xbf, 0xff, 0x3a, 0xc3, 0x17, 0x65, 0xcb,
-0xe0, 0x9c, 0xda, 0x8c, 0x81, 0xb2, 0x28, 0x9c,
-0xa2, 0x2d, 0x71, 0xf6, 0xa2, 0x9d, 0x09, 0x9e,
-0xd1, 0x99, 0xc6, 0x22, 0x9f, 0x76, 0xe7, 0xbf,
-0xd6, 0xc3, 0x10, 0xe2, 0x73, 0x0c, 0x2a, 0x1e,
-0xd4, 0x9b, 0x0e, 0xfa, 0xfa, 0xcb, 0x6b, 0xe5,
-0xfd, 0xf0, 0x07, 0xc3, 0x9b, 0x10, 0xab, 0x71,
-0xe1, 0xa9, 0xec, 0x4f, 0x67, 0xe7, 0xbf, 0x7a,
-0x0d, 0x3f, 0xc6, 0xbb, 0x7e, 0x03, 0x7d, 0xcc,
-0x36, 0x97, 0x68, 0xfe, 0x00, 0x74, 0xff, 0xf4,
-0x5e, 0x83, 0xed, 0x37, 0xaf, 0x0a, 0x3c, 0xa3,
-0x35, 0xe8, 0x45, 0xdf, 0x69, 0xcb, 0xca, 0x7f,
-0x49, 0x3c, 0xdb, 0x3e, 0xbb, 0x70, 0x98, 0xd2,
-0x1e, 0x6d, 0x62, 0x91, 0x06, 0x5a, 0x68, 0x2b,
-0x68, 0xfb, 0x18, 0x1e, 0x2e, 0x91, 0x06, 0x68,
-0x70, 0x8d, 0x32, 0xcb, 0x95, 0xff, 0x8a, 0x2e,
-0x98, 0x01, 0xab, 0x69, 0x75, 0x5a, 0x59, 0x55,
-0xf6, 0x87, 0xd6, 0x6e, 0xa1, 0x7a, 0xdc, 0x73,
-0x90, 0x5c, 0x06, 0x8f, 0xad, 0xaf, 0xd9, 0x2a,
-0xaf, 0xa8, 0x9c, 0x21, 0x21, 0x30, 0x28, 0x5a,
-0x4a, 0x8e, 0x50, 0x7b, 0xbd, 0x75, 0x30, 0x7c,
-0xdd, 0x25, 0xa7, 0x0c, 0xdf, 0x7c, 0x66, 0xf6,
-0x0d, 0x39, 0x35, 0xe6, 0xd3, 0x44, 0x6f, 0xec,
-0x6d, 0x48, 0x8e, 0x04, 0xa1, 0x48, 0xa0, 0x1f,
-0x6a, 0xf3, 0x65, 0x9f, 0xdf, 0x1d, 0xff, 0xb9,
-0x22, 0xa5, 0x9f, 0x1d, 0x6d, 0x41, 0xd8, 0x73,
-0x58, 0x3d, 0x1f, 0x6a, 0x31, 0x96, 0x74, 0x8a,
-0x27, 0xe0, 0x2d, 0xb8, 0x91, 0x32, 0xc4, 0x78,
-0x82, 0xed, 0xe8, 0x5b, 0x70, 0xab, 0x9e, 0xc8,
-0x8a, 0xff, 0xfc, 0x42, 0x6f, 0xc2, 0xf8, 0x9b,
-0x04, 0x23, 0x1a, 0x17, 0x02, 0x70, 0x88, 0xe1,
-0xf3, 0xfa, 0x51, 0x31, 0x55, 0x75, 0xa0, 0xbb,
-0x19, 0x0e, 0x8e, 0xb4, 0xb9, 0xf1, 0x4f, 0x15,
-0xac, 0x05, 0x6e, 0x46, 0x2a, 0x88, 0x58, 0xb1,
-0xc5, 0x58, 0xd4, 0xe9, 0xaf, 0xaa, 0x58, 0xc3,
-0x96, 0xa5, 0xa7, 0x93, 0xcc, 0x87, 0xb5, 0x9d,
-0x8f, 0x1a, 0x9c, 0xff, 0x63, 0xdf, 0xdf, 0x80,
-0x35, 0xd0, 0xcd, 0xe7, 0xab, 0xce, 0x51, 0xd7,
-0xc4, 0x99, 0x30, 0x59, 0x76, 0x5f, 0xed, 0x77,
-0xbb, 0xaa, 0xd3, 0xc2, 0x52, 0xb2, 0x11, 0xfe,
-0x89, 0x56, 0x33, 0x27, 0xec, 0xc6, 0x3f, 0x15,
-0x2f, 0x4a, 0xdd, 0x54, 0x1b, 0x62, 0x66, 0xbc,
-0x40, 0xea, 0x46, 0x7b, 0xae, 0x7a, 0x3e, 0x0b,
-0xdf, 0xfb, 0x49, 0x30, 0xed, 0xa9, 0x22, 0x57,
-0x97, 0x3d, 0x08, 0xfe, 0xa8, 0x5c, 0xe5, 0x29,
-0x73, 0xe5, 0xbf, 0x06, 0xc9, 0x81, 0xad, 0x03,
-0xd4, 0x97, 0x56, 0xe6, 0x4a, 0xeb, 0x68, 0x13,
-0xf5, 0xad, 0x14, 0xbf, 0x40, 0xbe, 0x0f, 0xcd,
-0xa9, 0x1f, 0xa5, 0xd7, 0xee, 0xd5, 0xdf, 0x60,
-0x42, 0x70, 0x9c, 0xb8, 0xf1, 0x8f, 0xc1, 0xf6,
-0xc8, 0xc8, 0x87, 0x11, 0x8f, 0x26, 0x26, 0x85,
-0x30, 0x6c, 0xe8, 0x16, 0x93, 0xea, 0x78, 0x34,
-0x5c, 0xe8, 0xeb, 0x59, 0x9b, 0xd6, 0xc7, 0x49,
-0xb8, 0x8a, 0x5d, 0xc9, 0x8e, 0xff, 0xf0, 0x24,
-0x48, 0xbf, 0xf8, 0x65, 0x78, 0x85, 0xcc, 0xe9,
-0xf4, 0x3d, 0x22, 0xce, 0xd4, 0xf6, 0xd3, 0xe7,
-0xa2, 0xde, 0xcd, 0xe2, 0x36, 0x69, 0x7f, 0x4f,
-0x58, 0x87, 0x7e, 0x31, 0xe6, 0xc2, 0x3f, 0x63,
-0xc8, 0xf6, 0xd1, 0x95, 0x4d, 0x65, 0xd3, 0x42,
-0x5d, 0x06, 0x13, 0xfa, 0xcb, 0x6a, 0xf5, 0xde,
-0x4b, 0x93, 0x77, 0xe0, 0xfa, 0x81, 0xbe, 0x48,
-0xc3, 0x52, 0x79, 0x73, 0x61, 0x76, 0xfe, 0xab,
-0x57, 0x66, 0x30, 0x69, 0xe3, 0xba, 0x5a, 0xfd,
-0x61, 0x6d, 0x66, 0xe4, 0x72, 0xe6, 0xa6, 0xa1,
-0x17, 0x4a, 0x74, 0x66, 0x91, 0xb6, 0xdd, 0xd5,
-0xab, 0x37, 0xb4, 0xcb, 0x3b, 0x63, 0x2f, 0x65,
-0xf8, 0x24, 0x20, 0xdd, 0xd6, 0x05, 0x01, 0x8c,
-0xff, 0xd4, 0x42, 0x97, 0x2e, 0xe9, 0xca, 0xe6,
-0xd6, 0xab, 0x98, 0x90, 0x1c, 0x8d, 0x33, 0x8d,
-0x09, 0x5d, 0x42, 0x30, 0x72, 0xa0, 0x82, 0x64,
-0xf2, 0x5f, 0x73, 0xe5, 0x65, 0xc9, 0x91, 0xc0,
-0x33, 0x08, 0x7b, 0x34, 0xf2, 0x05, 0xb6, 0xe7,
-0xf7, 0x51, 0x45, 0x63, 0xf6, 0x9e, 0x33, 0x52,
-0x92, 0x3c, 0xff, 0xc5, 0x84, 0x1f, 0x67, 0xf2,
-0x5f, 0x57, 0x9c, 0xa0, 0x67, 0x61, 0x8e, 0xbe,
-0xe1, 0x30, 0x5b, 0x2d, 0x27, 0xf5, 0x79, 0x6c,
-0xb5, 0x94, 0xff, 0x14, 0xce, 0x2e, 0x60, 0xcb,
-0xe6, 0x6b, 0xe5, 0x1f, 0xab, 0x1f, 0x42, 0x4b,
-0xe4, 0xdb, 0x87, 0x3f, 0xe3, 0xc2, 0x3f, 0xd2,
-0x18, 0x3d, 0x19, 0x08, 0xeb, 0xd3, 0x26, 0xfc,
-0xb3, 0xe1, 0x63, 0xf5, 0x3a, 0xfd, 0x9f, 0x46,
-0xc5, 0x0a, 0xed, 0x55, 0xf9, 0xab, 0x7a, 0x7d,
-0x44, 0x9c, 0xdd, 0xfb, 0x0b, 0x68, 0xe9, 0xf0,
-0x8e, 0xae, 0x9d, 0xe9, 0xc6, 0x3f, 0xc9, 0x41,
-0x98, 0x07, 0x8a, 0x14, 0xd3, 0x60, 0x44, 0xf5,
-0x83, 0x12, 0x23, 0x49, 0xe4, 0xff, 0x10, 0xb9,
-0x8b, 0x54, 0x27, 0xe3, 0x98, 0x61, 0x5f, 0x23,
-0x96, 0x38, 0xfa, 0x07, 0x69, 0xd8, 0xe0, 0xf1,
-0x9f, 0x1b, 0x48, 0xad, 0xb0, 0x05, 0x6a, 0xf5,
-0x75, 0x65, 0x31, 0x29, 0xd0, 0x25, 0xd7, 0xea,
-0x45, 0x6a, 0x61, 0xa1, 0xd1, 0x05, 0xc1, 0x85,
-0xb2, 0x1a, 0x83, 0x0c, 0xfe, 0x29, 0xfd, 0x67,
-0x84, 0x9d, 0x0b, 0x18, 0xec, 0x09, 0x12, 0xa4,
-0xfd, 0x2c, 0x4a, 0x94, 0x6d, 0x2b, 0xed, 0x5a,
-0xe0, 0xd7, 0xe5, 0x81, 0xb2, 0x5a, 0xa9, 0x57,
-0x68, 0x18, 0xed, 0xd8, 0x54, 0xe6, 0xc2, 0x3f,
-0xea, 0x63, 0x56, 0xbe, 0x4f, 0x91, 0xf4, 0x77,
-0xb5, 0x39, 0x7a, 0x49, 0x55, 0xf7, 0xd5, 0xb1,
-0xfd, 0x0b, 0x42, 0x1d, 0xcc, 0x6d, 0xd5, 0xea,
-0xfb, 0x53, 0x61, 0x1e, 0xff, 0xe9, 0x71, 0xf2,
-0x5f, 0xb0, 0x8d, 0x9e, 0x96, 0xe7, 0x59, 0xf1,
-0x1f, 0xf5, 0x3e, 0x7d, 0xc3, 0x66, 0x71, 0xb8,
-0xe7, 0xa4, 0xc4, 0x60, 0x4f, 0xe5, 0xa2, 0x61,
-0xcf, 0x49, 0x3a, 0xff, 0xaf, 0x1a, 0xcb, 0x94,
-0x0c, 0xfe, 0xa9, 0x53, 0x51, 0xc9, 0x03, 0x6c,
-0xbd, 0xbd, 0xac, 0x2d, 0x18, 0x6f, 0x9d, 0x03,
-0xde, 0x58, 0xf9, 0x51, 0x6d, 0xa4, 0xe3, 0xde,
-0x32, 0xef, 0x6a, 0x31, 0xda, 0xc3, 0xf4, 0x4f,
-0x16, 0xf7, 0x94, 0x2f, 0xcc, 0xca, 0x7f, 0xad,
-0x33, 0x18, 0xec, 0x19, 0xab, 0xf9, 0x86, 0xf4,
-0x96, 0x5c, 0x43, 0xe5, 0x0f, 0xca, 0xbe, 0x0e,
-0xf7, 0xb7, 0xff, 0x3d, 0xad, 0x3f, 0x46, 0xe6,
-0x69, 0x4f, 0xa8, 0x8d, 0x5d, 0xf2, 0xb8, 0xe2,
-0xc9, 0xca, 0x7f, 0xb1, 0xf7, 0xc5, 0x60, 0x3f,
-0xaa, 0x42, 0xf7, 0xd0, 0x5a, 0x5a, 0x19, 0x98,
-0xf9, 0x0a, 0x6c, 0x14, 0x34, 0xb6, 0x63, 0x8d,
-0x15, 0xa8, 0xdd, 0x87, 0x83, 0x77, 0x54, 0x96,
-0x91, 0x0c, 0xfe, 0xa9, 0x16, 0x66, 0xd0, 0xb5,
-0xf1, 0x6a, 0xa3, 0x4f, 0x27, 0x95, 0xd2, 0x5a,
-0xa1, 0x3a, 0x2a, 0x47, 0xc8, 0x7f, 0x15, 0xbe,
-0x03, 0xd5, 0xa3, 0x45, 0x9d, 0x75, 0xed, 0xd2,
-0x3f, 0x33, 0x68, 0xbd, 0xf4, 0x0e, 0xd2, 0xd1,
-0xee, 0xdc, 0x5f, 0x6e, 0x81, 0x17, 0xe8, 0xac,
-0xb4, 0x0f, 0xf9, 0x8a, 0xbb, 0x63, 0xd7, 0x46,
-0x19, 0x10, 0x7a, 0x03, 0xde, 0xa2, 0x8f, 0xa6,
-0xbd, 0x2b, 0xc4, 0xdb, 0xe0, 0xa5, 0x9e, 0x16,
-0x2d, 0x38, 0x22, 0x7a, 0x0a, 0xed, 0x9f, 0x8b,
-0xe1, 0x1f, 0x72, 0x6a, 0x05, 0xc6, 0x37, 0x3e,
-0x6d, 0xc0, 0x33, 0x30, 0x57, 0x6f, 0x4c, 0x88,
-0xc7, 0x0a, 0x7f, 0xb7, 0x82, 0x69, 0x38, 0x29,
-0xa6, 0x2e, 0x79, 0x63, 0x05, 0xdb, 0x7f, 0x19,
-0xec, 0x7d, 0xb1, 0xf5, 0x83, 0xf9, 0xaf, 0x83,
-0x08, 0x7b, 0xb6, 0xb7, 0x1d, 0x97, 0xf7, 0x27,
-0xc2, 0xdb, 0xc8, 0x60, 0xcd, 0x3c, 0x86, 0xb8,
-0x9a, 0x19, 0x22, 0x2a, 0x0f, 0x47, 0x5e, 0xdb,
-0xd8, 0x32, 0xee, 0x9b, 0x9c, 0x96, 0xc8, 0xc2,
-0x3f, 0x6b, 0xd0, 0xfe, 0x54, 0xfa, 0x7f, 0x96,
-0xf8, 0xb7, 0xed, 0xc1, 0x15, 0xf2, 0x7b, 0xa4,
-0xb2, 0xe3, 0x49, 0xed, 0xc6, 0x8e, 0xc0, 0x3d,
-0xeb, 0x66, 0x1f, 0x78, 0x51, 0xad, 0x6f, 0x55,
-0x3a, 0xa7, 0x3d, 0xe1, 0xc2, 0x1b, 0xeb, 0x61,
-0x35, 0x5c, 0x65, 0x28, 0x7a, 0xe1, 0xe1, 0x44,
-0x8f, 0x56, 0xaf, 0x7b, 0x6e, 0x8b, 0x8d, 0xc2,
-0xf7, 0x85, 0x6b, 0x10, 0x41, 0x55, 0xaa, 0xdf,
-0x29, 0xaf, 0x8f, 0xf7, 0x2d, 0x60, 0x08, 0xd6,
-0xd6, 0x7f, 0xb4, 0xe2, 0xa0, 0x10, 0xc3, 0x6d,
-0x6c, 0x82, 0xbc, 0x0c, 0x1b, 0x0d, 0xe6, 0xe8,
-0x2b, 0x2e, 0x3b, 0xaa, 0xed, 0xea, 0x6a, 0x50,
-0xe5, 0xd9, 0x85, 0x1e, 0xbd, 0x4b, 0x0a, 0x26,
-0x94, 0xed, 0xfe, 0x7e, 0xe7, 0x7d, 0x0f, 0x4c,
-0x7f, 0x96, 0xbc, 0x02, 0x4f, 0xa1, 0xff, 0x7a,
-0xbb, 0x77, 0x64, 0x38, 0xac, 0x7b, 0x52, 0xe2,
-0xef, 0xb4, 0x37, 0xb4, 0x3a, 0x23, 0xb8, 0x47,
-0xbc, 0x4a, 0xfe, 0x45, 0x6b, 0x38, 0xaa, 0x6c,
-0x16, 0xef, 0xcf, 0xc2, 0x3f, 0x6c, 0x3f, 0x65,
-0x6c, 0xd8, 0x54, 0x93, 0x16, 0x4e, 0x69, 0xe1,
-0x88, 0x2f, 0x45, 0x02, 0x0c, 0x78, 0xcf, 0x18,
-0x41, 0xe2, 0x01, 0x3d, 0x29, 0x84, 0x5b, 0x97,
-0x7c, 0xf7, 0x53, 0xc9, 0x2c, 0xfc, 0x73, 0x9a,
-0x9a, 0xf1, 0x1f, 0xed, 0x8c, 0xd0, 0xb2, 0xc0,
-0x67, 0x74, 0xcf, 0x65, 0xf6, 0xf9, 0x3a, 0xc3,
-0x7b, 0x82, 0xfd, 0xa8, 0x87, 0xe4, 0x1b, 0xc1,
-0x6b, 0x88, 0xb5, 0xcb, 0x9d, 0xfc, 0x97, 0xb4,
-0x12, 0x98, 0x13, 0xc7, 0xe7, 0x17, 0x49, 0x9c,
-0x36, 0x74, 0x2e, 0xba, 0x44, 0xfc, 0x9b, 0xd9,
-0xdd, 0x68, 0x36, 0x43, 0xe5, 0x5b, 0x61, 0x1d,
-0x34, 0x84, 0x56, 0x3c, 0x42, 0x42, 0x59, 0xf8,
-0x67, 0x50, 0x63, 0xe3, 0x93, 0xb1, 0x99, 0x9e,
-0x67, 0x5e, 0x68, 0xb8, 0xa3, 0x77, 0x67, 0x59,
-0x00, 0xfa, 0x84, 0x86, 0x34, 0xdb, 0x7f, 0xfd,
-0x18, 0xc7, 0x63, 0xa8, 0x24, 0x1b, 0xff, 0xa4,
-0x30, 0xfe, 0x53, 0xe3, 0xa9, 0xad, 0x8e, 0xc9,
-0xc1, 0x0e, 0x65, 0x63, 0xac, 0xa3, 0xac, 0x4b,
-0x0a, 0x18, 0x81, 0x10, 0x89, 0x11, 0xca, 0x76,
-0xe3, 0x83, 0x59, 0xf8, 0xc7, 0x1b, 0x44, 0x3e,
-0x24, 0xf3, 0xbf, 0xdd, 0xb5, 0x74, 0x12, 0x1a,
-0x3a, 0x8a, 0x07, 0xca, 0x35, 0xf6, 0xfc, 0xf7,
-0xa1, 0xff, 0xad, 0x95, 0x47, 0x30, 0xf5, 0x4c,
-0x6b, 0xb4, 0x2c, 0xfc, 0x73, 0x06, 0xc3, 0x1a,
-0xaf, 0xb7, 0x0d, 0x93, 0x73, 0x70, 0xe3, 0xcd,
-0x7d, 0x46, 0xf9, 0x04, 0x9c, 0x17, 0xae, 0x05,
-0x5f, 0x84, 0xe1, 0x3d, 0xa6, 0x01, 0xce, 0xff,
-0x71, 0xe1, 0x9f, 0xe3, 0x70, 0x30, 0x31, 0xab,
-0xd6, 0x7b, 0xa7, 0xf8, 0xe9, 0x8a, 0xf3, 0xc1,
-0x1b, 0x0c, 0x0b, 0x3f, 0x5f, 0x9f, 0x2e, 0x7e,
-0x01, 0xf9, 0xcf, 0xa1, 0x66, 0xc9, 0xf7, 0x42,
-0x4d, 0xc8, 0xc9, 0x1f, 0x19, 0xaa, 0x81, 0x24,
-0x16, 0x41, 0xde, 0x48, 0x64, 0x78, 0x5e, 0xaf,
-0x49, 0x97, 0x0c, 0x92, 0x0f, 0xd4, 0xbd, 0x0c,
-0x11, 0xc9, 0x6b, 0xc8, 0xdb, 0x80, 0xf9, 0x2f,
-0xa5, 0xa7, 0x35, 0xe3, 0x8f, 0x46, 0x0a, 0x0c,
-0x6d, 0x6b, 0xf5, 0x8a, 0xb8, 0x5c, 0x46, 0x46,
-0x1e, 0x30, 0x13, 0x3d, 0x1c, 0xf8, 0xd5, 0x41,
-0x51, 0x69, 0xd9, 0x4b, 0x6a, 0x8a, 0xe1, 0xbd,
-0x45, 0x97, 0xb4, 0x36, 0x09, 0xf6, 0x78, 0x63,
-0x7a, 0x92, 0xd9, 0x88, 0xba, 0x2e, 0xb9, 0x92,
-0x6d, 0x5b, 0x76, 0x31, 0x3c, 0xe9, 0x49, 0x99,
-0x40, 0x14, 0xe4, 0xed, 0x24, 0x4d, 0xf7, 0x1a,
-0x33, 0xef, 0x52, 0xe2, 0xfe, 0x4c, 0xfe, 0xcb,
-0x98, 0xfe, 0x0e, 0x1b, 0x38, 0x0f, 0x69, 0x81,
-0xe3, 0x66, 0x20, 0x11, 0xf1, 0xf0, 0x47, 0x64,
-0xee, 0x89, 0xe2, 0x75, 0xe2, 0x38, 0x9c, 0xa4,
-0x73, 0x42, 0xbe, 0xf5, 0x8a, 0xaa, 0x67, 0xf2,
-0x5f, 0x4f, 0xe9, 0x6f, 0xca, 0x4f, 0xe3, 0x4b,
-0x34, 0x97, 0x01, 0xc5, 0xb0, 0x31, 0xcd, 0x22,
-0x02, 0x61, 0xc4, 0xf5, 0xb8, 0xfa, 0xb1, 0xb4,
-0xb7, 0xcb, 0x47, 0xa7, 0x8d, 0x3b, 0xeb, 0xed,
-0x30, 0xb3, 0x6f, 0x07, 0x84, 0x26, 0x1a, 0x44,
-0xda, 0xc3, 0x2b, 0xec, 0xfe, 0x4b, 0x52, 0x35,
-0x88, 0xd8, 0xe7, 0xa8, 0xc5, 0x54, 0x0c, 0xc2,
-0x64, 0x47, 0xd3, 0xed, 0xde, 0xc7, 0x14, 0x77,
-0xfc, 0x67, 0x26, 0xac, 0x8b, 0x37, 0xc5, 0xe5,
-0xb5, 0xad, 0x01, 0x66, 0xb4, 0x6a, 0x38, 0x7f,
-0x4c, 0xdd, 0x2b, 0xf8, 0xe5, 0xed, 0xdf, 0x66,
-0xcb, 0x60, 0x0f, 0xdd, 0x7a, 0xbb, 0xbc, 0xde,
-0xc5, 0x7f, 0x4e, 0x0b, 0x7f, 0xa3, 0xa1, 0xbf,
-0x0b, 0x84, 0x3c, 0xb2, 0xf4, 0xa0, 0x80, 0xfc,
-0x43, 0xf6, 0xc6, 0xed, 0x8a, 0xd7, 0xbe, 0x5e,
-0x54, 0x4d, 0xc4, 0xe8, 0x40, 0x42, 0x4b, 0xc8,
-0x3f, 0x22, 0xf3, 0x32, 0xfc, 0xe7, 0xa1, 0xcb,
-0xe0, 0xdb, 0x94, 0x99, 0x9d, 0xd3, 0x0c, 0xf6,
-0x3c, 0xc8, 0x80, 0xc1, 0x2d, 0x26, 0x1f, 0x66,
-0xd9, 0x58, 0xe5, 0x2a, 0xb6, 0xd5, 0x7a, 0x32,
-0xc1, 0xf0, 0xc0, 0x7f, 0x69, 0x9d, 0xef, 0xca,
-0x7f, 0xc9, 0xf0, 0xc2, 0x50, 0xc8, 0x08, 0xce,
-0x15, 0x3d, 0xf4, 0x5f, 0x31, 0x11, 0x76, 0x83,
-0xb8, 0x1e, 0x3e, 0x92, 0xbf, 0x66, 0x14, 0xab,
-0xa2, 0x24, 0x9c, 0x52, 0x9b, 0x74, 0xef, 0xf4,
-0x69, 0x99, 0xa2, 0x82, 0xd6, 0xe2, 0xc1, 0xd6,
-0x3f, 0xc2, 0x79, 0x5c, 0x06, 0x93, 0xad, 0xbf,
-0x67, 0xfa, 0x29, 0x41, 0xfd, 0xfc, 0xd1, 0x0a,
-0x94, 0x15, 0x9c, 0x57, 0x5b, 0xda, 0x37, 0xfc,
-0xc4, 0x95, 0xff, 0x7a, 0x82, 0xe1, 0x9f, 0xfd,
-0xb8, 0x08, 0x93, 0x62, 0x9d, 0xf0, 0xca, 0xe7,
-0xe6, 0xbc, 0x7d, 0xbf, 0xb9, 0x31, 0x99, 0x6f,
-0x94, 0x8c, 0x2a, 0x75, 0xc0, 0x7e, 0x6a, 0xba,
-0x78, 0xa2, 0xdc, 0x95, 0xff, 0x7a, 0x60, 0x33,
-0xb3, 0x27, 0xf5, 0x7a, 0x47, 0xda, 0x33, 0x17,
-0x5e, 0x0e, 0x68, 0x23, 0x5e, 0x1e, 0xff, 0xc1,
-0x1d, 0x65, 0x84, 0x5c, 0x31, 0xf2, 0x53, 0xa8,
-0xa6, 0x4c, 0xc8, 0xce, 0x7f, 0xfd, 0x80, 0x36,
-0xa6, 0x19, 0xc8, 0xb9, 0x0c, 0xba, 0x63, 0x57,
-0x8d, 0x79, 0x2c, 0xfe, 0x0f, 0xe2, 0x99, 0x30,
-0xd0, 0x58, 0x6d, 0x94, 0x6d, 0xb5, 0xdc, 0xf9,
-0xaf, 0x63, 0xf0, 0x28, 0x7b, 0x5f, 0x18, 0x7a,
-0x94, 0x99, 0xa0, 0x21, 0xb1, 0xf3, 0xa0, 0xcc,
-0x19, 0x9e, 0xfd, 0x7e, 0xaf, 0xf4, 0xf0, 0xc4,
-0xcc, 0xc8, 0xf6, 0x8d, 0xad, 0xee, 0xfc, 0xd7,
-0xe3, 0xe4, 0x3d, 0x08, 0x53, 0xf6, 0xfc, 0x73,
-0x71, 0x37, 0x41, 0x4b, 0x92, 0x22, 0xc6, 0x7f,
-0x6e, 0xa4, 0x25, 0xbf, 0x41, 0x20, 0xa7, 0x5f,
-0x97, 0xf4, 0xbe, 0xa7, 0x64, 0xe5, 0xbf, 0x34,
-0xe4, 0x03, 0x37, 0x1e, 0x2c, 0x4f, 0x83, 0x61,
-0x12, 0x33, 0xcc, 0x6d, 0x97, 0xaf, 0x87, 0x07,
-0x46, 0xe6, 0x5d, 0xe1, 0xcb, 0xce, 0x7f, 0xbd,
-0x63, 0xd1, 0x7a, 0x39, 0x3f, 0x04, 0x1d, 0x9f,
-0xc0, 0x19, 0xce, 0xd1, 0xe2, 0x7e, 0xbc, 0xa2,
-0x97, 0xad, 0x60, 0xfe, 0xd1, 0x9d, 0xff, 0xfa,
-0x6b, 0xe8, 0xa2, 0xfe, 0x88, 0xfc, 0x90, 0xa7,
-0xd6, 0x15, 0xcf, 0xd1, 0x1a, 0xa2, 0xf2, 0xf7,
-0x5b, 0x83, 0xf2, 0x1e, 0xdd, 0xdf, 0x29, 0x6f,
-0xf6, 0x64, 0xe5, 0xbf, 0xf4, 0x6f, 0xd3, 0x4f,
-0xbf, 0xcc, 0x94, 0x56, 0x2b, 0x5b, 0xf1, 0x22,
-0x9e, 0x41, 0x1b, 0x2e, 0x7a, 0x00, 0x23, 0x18,
-0x7a, 0x9d, 0x2e, 0x7f, 0xc7, 0x95, 0xff, 0x02,
-0xe9, 0x53, 0xb0, 0x5a, 0xaf, 0x8e, 0xc8, 0x77,
-0x90, 0x02, 0x98, 0xb5, 0x40, 0xd3, 0x17, 0xf1,
-0x78, 0x08, 0xa0, 0xa1, 0x26, 0x12, 0xec, 0xd4,
-0xd3, 0x91, 0x78, 0x45, 0x99, 0x3b, 0xff, 0xa5,
-0x33, 0xb5, 0xcc, 0xc3, 0xf8, 0x0f, 0xf2, 0x4f,
-0xe6, 0x21, 0x10, 0x32, 0x23, 0x42, 0xc5, 0x0c,
-0x08, 0xe1, 0x15, 0x7c, 0x35, 0x32, 0xf9, 0xaf,
-0x23, 0x57, 0x8c, 0x91, 0x93, 0xf0, 0x2c, 0x86,
-0x7d, 0x10, 0xff, 0x30, 0xfb, 0x9c, 0x10, 0xc7,
-0xd4, 0x93, 0xb8, 0x7e, 0x0e, 0x2b, 0xc3, 0xf2,
-0xf9, 0xd6, 0x96, 0xc8, 0x92, 0xac, 0xfc, 0x57,
-0xf1, 0x09, 0x78, 0x15, 0x9a, 0x75, 0xef, 0xe1,
-0xb6, 0x5a, 0x75, 0xbf, 0xb7, 0xa9, 0x95, 0xc7,
-0x8b, 0x10, 0x66, 0x17, 0xff, 0xa4, 0x3b, 0x08,
-0x67, 0x3b, 0x9a, 0x97, 0x66, 0xf1, 0x9f, 0x57,
-0x41, 0x1a, 0xed, 0x0f, 0x74, 0xc4, 0x88, 0x26,
-0xc7, 0x75, 0xbf, 0x6a, 0x26, 0xc2, 0x48, 0x03,
-0xc8, 0xdb, 0x30, 0x22, 0x14, 0xf5, 0x43, 0x60,
-0xcd, 0xba, 0xac, 0xf8, 0xcf, 0xd6, 0xae, 0x80,
-0xb6, 0x30, 0xae, 0x92, 0x5a, 0xad, 0x2b, 0x10,
-0xd0, 0xfb, 0x54, 0x3f, 0xce, 0xb7, 0xc1, 0x28,
-0x2a, 0xc3, 0xf9, 0x82, 0xb6, 0x54, 0x2e, 0x25,
-0xee, 0xfc, 0xd7, 0x7a, 0x86, 0x1e, 0x31, 0xda,
-0xc3, 0xb4, 0xd7, 0x2b, 0x38, 0xf1, 0xb7, 0x06,
-0xc4, 0x93, 0x57, 0xe1, 0x2f, 0x12, 0xc9, 0xe3,
-0x3f, 0xef, 0xa7, 0x4d, 0x3a, 0x73, 0x6b, 0x12,
-0xd9, 0x0f, 0xcf, 0x20, 0x5f, 0xcb, 0x0c, 0xec,
-0x14, 0xf7, 0x2b, 0xec, 0xf7, 0xa5, 0x5b, 0xa3,
-0xcc, 0x50, 0x67, 0xe5, 0xbf, 0xb4, 0x93, 0xc1,
-0xf0, 0xf2, 0x0d, 0x88, 0x7f, 0x3e, 0x64, 0x40,
-0xd1, 0x67, 0x8d, 0xef, 0xf4, 0x95, 0x62, 0x60,
-0x30, 0x30, 0x7f, 0xa1, 0xaf, 0x52, 0xcc, 0xca,
-0x7f, 0x49, 0x23, 0x02, 0x46, 0xdb, 0xba, 0x99,
-0xb6, 0x9d, 0xf8, 0x0f, 0x84, 0x43, 0x5e, 0x5a,
-0xae, 0xcd, 0x46, 0xe2, 0xbd, 0x97, 0xba, 0xf3,
-0x5f, 0x37, 0x5d, 0xef, 0xbf, 0x9f, 0x36, 0x0e,
-0xca, 0xe3, 0x24, 0x00, 0xcf, 0x08, 0x76, 0xfc,
-0x07, 0xea, 0xa9, 0x67, 0xec, 0x89, 0x6b, 0xe0,
-0x39, 0xb9, 0x31, 0x16, 0x18, 0x3b, 0xe0, 0x8e,
-0xff, 0x7c, 0x16, 0xfa, 0x8c, 0x86, 0x71, 0xf9,
-0x49, 0x1e, 0x9f, 0x07, 0xdb, 0x3e, 0xb3, 0xf7,
-0x65, 0x06, 0x29, 0xd6, 0x77, 0xea, 0xc1, 0xa8,
-0x7c, 0x19, 0xc3, 0x3f, 0x99, 0xfc, 0x57, 0x05,
-0xac, 0x91, 0x1b, 0x8d, 0x80, 0x1d, 0xff, 0xe1,
-0xf1, 0x90, 0x27, 0x8b, 0xea, 0x0d, 0xb6, 0x7f,
-0xa9, 0xb0, 0x5f, 0xe4, 0x40, 0x26, 0xff, 0x45,
-0xe7, 0xc1, 0x30, 0xbd, 0x31, 0xea, 0x1d, 0x57,
-0x66, 0x24, 0x3f, 0xda, 0x8e, 0x40, 0x48, 0x7c,
-0x0b, 0xfe, 0x80, 0x11, 0x9b, 0x11, 0x71, 0x06,
-0x7c, 0x4c, 0x5b, 0x34, 0x26, 0xd4, 0x65, 0xf8,
-0xcf, 0xd3, 0xb7, 0xb1, 0xb7, 0x6f, 0xbe, 0xce,
-0xa6, 0xc9, 0xcc, 0x08, 0x79, 0xce, 0x8a, 0xb7,
-0xb3, 0x2b, 0x8d, 0x46, 0xcd, 0x98, 0x76, 0x16,
-0xf9, 0xcf, 0x46, 0xb9, 0x8b, 0xff, 0xcc, 0xf0,
-0xcf, 0x21, 0x44, 0x3b, 0x47, 0xc4, 0x19, 0xda,
-0x6b, 0xf1, 0xeb, 0xd2, 0x1b, 0x4e, 0x72, 0xff,
-0xd5, 0x92, 0xf4, 0x1e, 0x69, 0x3b, 0xa7, 0x9f,
-0xa1, 0x2d, 0x18, 0x7f, 0x36, 0x1c, 0xfd, 0x3f,
-0x5e, 0xda, 0xcf, 0xd6, 0x4f, 0x4d, 0xbb, 0x4c,
-0x63, 0x6c, 0x23, 0x96, 0xaa, 0x1e, 0xf7, 0x85,
-0x2c, 0xfb, 0x53, 0xdc, 0x49, 0x8e, 0xc0, 0x53,
-0x50, 0x3f, 0xc2, 0x80, 0xcd, 0x7b, 0x3d, 0xf6,
-0xfd, 0xb1, 0x00, 0xa9, 0x07, 0x8d, 0x12, 0xdf,
-0x9d, 0xc1, 0x55, 0x23, 0x97, 0x77, 0xce, 0x7c,
-0x13, 0x87, 0x51, 0xb9, 0x9d, 0xfd, 0xc3, 0xdd,
-0x50, 0x2f, 0xc8, 0x7a, 0x56, 0xfc, 0x07, 0xd7,
-0xa7, 0xc6, 0xf6, 0x19, 0xc4, 0x0b, 0x7d, 0x60,
-0xc5, 0x7f, 0x38, 0x23, 0x5a, 0x63, 0x40, 0xe7,
-0x99, 0x24, 0x53, 0xec, 0xf5, 0x31, 0x77, 0xfc,
-0x27, 0x48, 0x0e, 0x90, 0x01, 0xc3, 0xbb, 0xbb,
-0x6d, 0x3e, 0x79, 0x0d, 0xe6, 0x18, 0x8a, 0x1d,
-0xd8, 0xf1, 0x3e, 0x52, 0xf3, 0x2e, 0x9c, 0x34,
-0xc2, 0x77, 0x05, 0xfb, 0x5d, 0xfc, 0x49, 0x0a,
-0xef, 0x63, 0x74, 0x5a, 0x67, 0x46, 0xc6, 0x22,
-0x42, 0x9b, 0xfa, 0x09, 0x8f, 0xfa, 0x52, 0x9f,
-0x19, 0xbb, 0x63, 0x6f, 0x24, 0xfc, 0x3a, 0x5b,
-0x5a, 0xee, 0xfc, 0xd7, 0x09, 0x38, 0x64, 0x34,
-0x1b, 0x81, 0x0f, 0xbb, 0xe7, 0xb3, 0xdb, 0x5e,
-0x67, 0xc6, 0x7f, 0xce, 0x21, 0xc3, 0xc1, 0x10,
-0x27, 0xab, 0xdf, 0x27, 0x4d, 0xe8, 0x0a, 0x75,
-0x67, 0xbf, 0xdf, 0x25, 0x7d, 0x99, 0x81, 0x16,
-0x2d, 0x2a, 0xc7, 0x38, 0x9f, 0xc7, 0x8c, 0xe7,
-0x48, 0x7b, 0xb0, 0x2c, 0x62, 0x33, 0xf9, 0x4d,
-0xd7, 0x60, 0x8f, 0x3f, 0xa4, 0xc4, 0xcb, 0xd2,
-0x2e, 0xfc, 0x13, 0x68, 0x8d, 0xcb, 0x75, 0xe9,
-0xba, 0x10, 0x09, 0xaa, 0x7b, 0x0b, 0x67, 0x1a,
-0x7d, 0xa6, 0xbf, 0x6e, 0xd8, 0x77, 0x0d, 0xf2,
-0x75, 0x07, 0x7b, 0xfd, 0x77, 0x29, 0x83, 0x6b,
-0xdc, 0xf9, 0x2f, 0x99, 0xcd, 0x61, 0xbb, 0xee,
-0x61, 0xfa, 0xd1, 0x9b, 0x41, 0x1b, 0x51, 0x66,
-0xdb, 0xeb, 0x0d, 0x98, 0x1a, 0x77, 0xb2, 0x07,
-0x5f, 0x04, 0x64, 0x9f, 0x2b, 0xfe, 0xa3, 0x4b,
-0x23, 0x64, 0x1e, 0x2d, 0xd9, 0xa9, 0xcc, 0x87,
-0x6f, 0x69, 0x97, 0x60, 0x98, 0xeb, 0x18, 0x9c,
-0x22, 0x61, 0xa3, 0x18, 0x5f, 0x84, 0x71, 0xdc,
-0x1a, 0x50, 0x51, 0x77, 0xec, 0xcf, 0xd6, 0xe2,
-0x09, 0x38, 0x23, 0x5f, 0x07, 0xf5, 0xfb, 0xc4,
-0x33, 0xf4, 0xb4, 0x1e, 0x1e, 0xf6, 0x4d, 0xb4,
-0x9d, 0xe1, 0x19, 0x0d, 0x9f, 0x51, 0x33, 0x61,
-0xf1, 0x9f, 0xdb, 0xc6, 0xd7, 0x64, 0xf3, 0x7f,
-0x6e, 0x48, 0xb3, 0x9b, 0x84, 0xe8, 0x7e, 0x18,
-0x10, 0x16, 0xf7, 0xd6, 0x84, 0x8c, 0xd7, 0x70,
-0x59, 0x4e, 0x8a, 0xe7, 0xe1, 0x60, 0xa0, 0xa5,
-0x72, 0xf1, 0x48, 0x5b, 0x16, 0xff, 0x99, 0xf3,
-0x7f, 0x94, 0x1d, 0x44, 0x5a, 0xf1, 0x6d, 0xd8,
-0xaa, 0x79, 0xb6, 0x12, 0x8d, 0xf6, 0xd1, 0x86,
-0x68, 0xfd, 0x60, 0xeb, 0x31, 0x35, 0xae, 0x35,
-0x14, 0xc9, 0x71, 0x92, 0xce, 0xcd, 0x7f, 0x19,
-0xca, 0x96, 0x99, 0xdb, 0xa1, 0x4b, 0xd0, 0x8c,
-0x75, 0x1a, 0x59, 0x0d, 0xdd, 0x98, 0xe1, 0x0a,
-0x31, 0x45, 0x3d, 0x18, 0x68, 0xa8, 0x64, 0x1b,
-0xdb, 0x58, 0x2e, 0xff, 0x79, 0x48, 0xd9, 0x4e,
-0x76, 0xd4, 0xb2, 0xfd, 0xd7, 0x81, 0x85, 0x5b,
-0x62, 0xdb, 0x68, 0x9f, 0xd4, 0xd0, 0x59, 0xc4,
-0x14, 0x4b, 0xe3, 0x66, 0x68, 0x7a, 0x22, 0x27,
-0xff, 0xc5, 0x96, 0xc1, 0xf6, 0x2f, 0x75, 0x91,
-0xfd, 0xc6, 0x00, 0x78, 0xb6, 0x89, 0xbd, 0x6c,
-0xa1, 0xcd, 0x4b, 0x7b, 0x53, 0xe2, 0x07, 0xe2,
-0x88, 0x16, 0x4e, 0x04, 0xb7, 0x8a, 0x89, 0xec,
-0xfc, 0x17, 0xb4, 0xec, 0xf3, 0x19, 0x8f, 0x7e,
-0x4b, 0x3e, 0xa9, 0xdf, 0xa8, 0xb1, 0x8d, 0xff,
-0x37, 0x34, 0x76, 0x85, 0xb2, 0x85, 0x31, 0x29,
-0x7d, 0xb3, 0xb5, 0x25, 0xe1, 0x7b, 0xbb, 0x3c,
-0x2f, 0xff, 0x85, 0xfc, 0x9f, 0x24, 0x79, 0x25,
-0x3a, 0x60, 0xf8, 0xe2, 0xcd, 0xf5, 0x48, 0x74,
-0x89, 0xb0, 0xfb, 0x1f, 0xd3, 0xdf, 0x50, 0x9b,
-0xee, 0x64, 0x42, 0x36, 0xff, 0xe7, 0x7b, 0xd0,
-0xf0, 0xae, 0x32, 0x97, 0xac, 0x94, 0xfb, 0xa2,
-0xfe, 0xe1, 0xe2, 0x41, 0xb6, 0x90, 0xfa, 0x20,
-0x08, 0xcc, 0x7e, 0xbe, 0x06, 0xf1, 0x51, 0xad,
-0x53, 0x1e, 0x20, 0xc7, 0x73, 0xf3, 0x5f, 0x86,
-0x22, 0x17, 0x52, 0x29, 0xde, 0xa5, 0xa5, 0x3e,
-0xfd, 0x14, 0x29, 0x66, 0xfa, 0x09, 0x02, 0x8f,
-0x10, 0x52, 0x4c, 0x0c, 0x11, 0x32, 0x99, 0x93,
-0xff, 0xaa, 0x4f, 0xf7, 0xdd, 0x72, 0xd7, 0x17,
-0xa1, 0x67, 0x6b, 0xcd, 0x8e, 0x4b, 0x97, 0x7a,
-0x66, 0x68, 0x6b, 0xe9, 0x7f, 0x8b, 0xca, 0xab,
-0x5a, 0xcf, 0xab, 0xab, 0x69, 0x75, 0x52, 0xee,
-0x28, 0x3c, 0x92, 0xc3, 0xff, 0x99, 0x6f, 0x6c,
-0x08, 0x88, 0x94, 0x6d, 0xc4, 0x42, 0x4f, 0x5c,
-0x39, 0x57, 0xac, 0x27, 0x2f, 0xc0, 0x7c, 0x08,
-0x86, 0xc4, 0x83, 0xf0, 0x73, 0x74, 0xcd, 0x5a,
-0x56, 0xfc, 0xe7, 0x59, 0xf8, 0x15, 0x7a, 0xab,
-0xa3, 0xe2, 0x2a, 0xfd, 0x34, 0xb9, 0xb1, 0x67,
-0xc9, 0x3d, 0xfc, 0x7d, 0xbc, 0x11, 0x98, 0x7e,
-0xde, 0xd4, 0xcf, 0xaa, 0x2d, 0x7a, 0x63, 0x5a,
-0x1c, 0x25, 0xb6, 0x7e, 0x1c, 0xfe, 0x0f, 0x5b,
-0x84, 0xc2, 0x90, 0x1c, 0xea, 0x2a, 0x4e, 0x55,
-0xaf, 0xe4, 0xf8, 0x07, 0xf5, 0x03, 0xbf, 0xc7,
-0x0a, 0x92, 0x4d, 0xae, 0x78, 0xbe, 0xc3, 0x7f,
-0xd6, 0xfd, 0x15, 0x0c, 0x08, 0x55, 0xd3, 0xc0,
-0x04, 0xa9, 0x92, 0x9e, 0x96, 0xea, 0x01, 0xed,
-0x8f, 0xbc, 0x9a, 0xe3, 0x9f, 0x29, 0xf8, 0xcf,
-0xdf, 0x9b, 0x9c, 0x19, 0x9e, 0xbd, 0x81, 0x3e,
-0x9a, 0x94, 0x57, 0x14, 0x62, 0x05, 0x5c, 0x63,
-0x48, 0x5e, 0x45, 0xfe, 0x80, 0x44, 0xa0, 0xa8,
-0xfc, 0x75, 0x92, 0xcb, 0x7f, 0xf6, 0x0e, 0x31,
-0xfd, 0x37, 0x40, 0xf7, 0x5d, 0xc9, 0x2e, 0xb9,
-0x3f, 0x16, 0x84, 0x5d, 0x24, 0x58, 0x59, 0x14,
-0x22, 0x2f, 0x31, 0xd7, 0x96, 0xbc, 0x93, 0x29,
-0xf6, 0xf5, 0x02, 0x7b, 0xbc, 0xc9, 0xff, 0x99,
-0x41, 0xd9, 0xfe, 0xe8, 0x86, 0xc2, 0xfb, 0x17,
-0xcc, 0xa2, 0x1d, 0xe3, 0x2f, 0xac, 0x92, 0x11,
-0xff, 0x30, 0x44, 0xf4, 0xf3, 0xea, 0x1f, 0x1b,
-0xcd, 0x29, 0xef, 0xb6, 0x2c, 0xfe, 0x33, 0xf7,
-0x3e, 0xaa, 0xaf, 0xeb, 0x86, 0x2d, 0xd2, 0xa4,
-0xca, 0xf0, 0x4f, 0x0f, 0xe7, 0x3f, 0x23, 0x43,
-0xa6, 0x2d, 0xdd, 0x3d, 0x59, 0x19, 0x56, 0x1b,
-0x69, 0x77, 0x1e, 0xff, 0x07, 0xab, 0x7b, 0x96,
-0x6b, 0xfb, 0xd5, 0x81, 0x8e, 0xe2, 0xcd, 0x35,
-0xb5, 0xfa, 0x7e, 0x93, 0x31, 0xfb, 0x8e, 0xb4,
-0x3f, 0x19, 0x5a, 0xee, 0x7d, 0x04, 0xf2, 0xf8,
-0xcf, 0xb7, 0x29, 0x9b, 0x63, 0x57, 0xf7, 0xf4,
-0x8e, 0xd4, 0xe9, 0xc5, 0x0f, 0x61, 0xda, 0x8b,
-0xf9, 0x5f, 0x4f, 0x02, 0x0b, 0x01, 0x64, 0xe6,
-0x9a, 0x07, 0x49, 0x3a, 0x9f, 0xff, 0xd3, 0x4f,
-0xbe, 0xcc, 0x96, 0x8d, 0x5f, 0xff, 0x2f, 0x89,
-0xb2, 0x5a, 0xed, 0x61, 0x93, 0xb8, 0x3b, 0xa6,
-0xf7, 0x62, 0x05, 0x47, 0x82, 0x4d, 0xdc, 0x5e,
-0x0f, 0x0e, 0xff, 0x47, 0x2d, 0x2c, 0x20, 0x5d,
-0x0c, 0x1d, 0x15, 0x55, 0x90, 0x02, 0xf2, 0x00,
-0xde, 0x5f, 0x25, 0xbf, 0xa9, 0xe8, 0x6a, 0xd7,
-0x22, 0x01, 0x95, 0x64, 0xe7, 0xbf, 0x4c, 0xfe,
-0x8f, 0x18, 0xc5, 0xb2, 0x23, 0x13, 0xf6, 0x60,
-0xd9, 0x05, 0x73, 0xbb, 0xe3, 0x30, 0xc2, 0xb6,
-0x06, 0x72, 0x72, 0xaa, 0xfc, 0xd7, 0xd7, 0xca,
-0xcf, 0xc2, 0x59, 0xbd, 0x25, 0x72, 0x2b, 0xa6,
-0xbd, 0xde, 0xc5, 0xb0, 0x61, 0xa2, 0xfc, 0x70,
-0x21, 0x5e, 0x61, 0x1e, 0xdf, 0x8d, 0x7f, 0xac,
-0xf1, 0x1b, 0x93, 0xbb, 0xb7, 0xbd, 0x1a, 0x6d,
-0xee, 0xe8, 0x89, 0x90, 0xd9, 0x81, 0x5e, 0x76,
-0x45, 0x46, 0x04, 0xf5, 0xfe, 0x5d, 0xcd, 0xed,
-0xc1, 0x94, 0xbb, 0xfe, 0x0b, 0x30, 0xff, 0x55,
-0x02, 0xca, 0x30, 0x39, 0x0a, 0xf1, 0xe8, 0xd6,
-0x44, 0x09, 0x25, 0x49, 0x1a, 0x17, 0x1a, 0xd8,
-0x83, 0x89, 0xc9, 0x64, 0x5c, 0xf3, 0x57, 0xac,
-0xa7, 0xe4, 0xfe, 0xec, 0xfc, 0x17, 0xc3, 0xdb,
-0x4a, 0x84, 0x6c, 0x6b, 0x7a, 0x40, 0xd7, 0x22,
-0x95, 0x6a, 0x6c, 0x8d, 0xd6, 0x05, 0x77, 0xeb,
-0xb2, 0x5a, 0x36, 0x26, 0x6c, 0x59, 0x5e, 0xdb,
-0x21, 0xf7, 0xe7, 0xe6, 0xbf, 0x84, 0x46, 0x5d,
-0x19, 0x9d, 0x39, 0x46, 0x1f, 0xfe, 0xbc, 0x5f,
-0xf7, 0x6c, 0x2a, 0xdb, 0xc6, 0xf5, 0x5f, 0x94,
-0x20, 0x3f, 0x8a, 0xf5, 0x46, 0x67, 0x46, 0x8a,
-0x12, 0xb0, 0x26, 0x9f, 0xff, 0xf3, 0xc0, 0xed,
-0xdb, 0xe0, 0xe7, 0x6d, 0xa1, 0x68, 0xb0, 0x4a,
-0xfc, 0x67, 0x06, 0x84, 0xe6, 0xb7, 0xb2, 0xdf,
-0x77, 0x58, 0x78, 0x57, 0x7f, 0x6a, 0xb9, 0xb7,
-0x52, 0x08, 0xe4, 0xe6, 0xbf, 0x5a, 0x7d, 0xfd,
-0xdd, 0x63, 0xea, 0x51, 0x6f, 0xb8, 0x63, 0xc3,
-0x46, 0x2c, 0x8b, 0x2b, 0x64, 0xf8, 0x27, 0x21,
-0x6e, 0x53, 0x3f, 0x8c, 0x3f, 0x13, 0x2d, 0xd9,
-0x98, 0x97, 0xff, 0xba, 0x4f, 0x42, 0xd8, 0x43,
-0x99, 0xfe, 0xa5, 0xfb, 0x7b, 0x1e, 0xd5, 0xe2,
-0x6c, 0xdb, 0x2b, 0x4c, 0xa3, 0xe2, 0x51, 0x3a,
-0x0e, 0x4d, 0x32, 0xfb, 0x21, 0xf2, 0xea, 0xbf,
-0x12, 0x7d, 0x3b, 0xd4, 0x23, 0xe4, 0x7e, 0xe1,
-0xd3, 0x34, 0x7e, 0x4c, 0x5c, 0x25, 0xaf, 0x13,
-0x1a, 0x10, 0x08, 0x9d, 0xf2, 0xdf, 0x0f, 0x35,
-0x49, 0x6f, 0xb2, 0xf5, 0x40, 0x6e, 0xfe, 0x2b,
-0xaa, 0x5c, 0x41, 0x0e, 0x62, 0xbc, 0xf4, 0x5d,
-0x25, 0x08, 0x4b, 0xe4, 0x6e, 0x58, 0xc9, 0x80,
-0x50, 0xeb, 0x8b, 0xe4, 0x01, 0x83, 0xe1, 0xed,
-0x10, 0x39, 0x90, 0x97, 0xff, 0x62, 0xb0, 0xe7,
-0x97, 0xd2, 0x5a, 0xe9, 0xd3, 0x0b, 0xe4, 0x13,
-0x65, 0xff, 0x15, 0xd6, 0x0a, 0x9c, 0x11, 0x7d,
-0x18, 0x36, 0xe9, 0xd5, 0xad, 0x0c, 0x2a, 0x8c,
-0x67, 0xf2, 0x5f, 0x80, 0xf9, 0xaf, 0xfa, 0xb4,
-0x6f, 0x85, 0x78, 0xce, 0x3b, 0x44, 0x77, 0x46,
-0xff, 0x72, 0x55, 0xcd, 0xad, 0x64, 0x2d, 0x32,
-0x82, 0x90, 0xff, 0xf3, 0x2b, 0xba, 0x2b, 0x1a,
-0x5c, 0xd1, 0xfd, 0x5e, 0x26, 0xff, 0x65, 0xd6,
-0x43, 0xe9, 0x3e, 0x74, 0xbb, 0xa7, 0xc5, 0xf9,
-0x0b, 0x4a, 0x12, 0xe2, 0xb8, 0x9d, 0xe8, 0x39,
-0x01, 0x1f, 0x20, 0x11, 0xfa, 0xa1, 0x9c, 0xfc,
-0x17, 0x43, 0x3b, 0xeb, 0xab, 0x06, 0xcb, 0xcf,
-0x49, 0xe7, 0x1e, 0x98, 0xb5, 0x52, 0x9b, 0xac,
-0x39, 0x0e, 0xaf, 0xd1, 0x2b, 0x31, 0x23, 0xf6,
-0x06, 0xbc, 0x48, 0x9b, 0x93, 0x6c, 0x2b, 0x97,
-0x93, 0xff, 0x92, 0x18, 0x48, 0xfb, 0xcb, 0xdb,
-0xde, 0xa4, 0x4f, 0x37, 0x57, 0xdf, 0xe4, 0xbd,
-0x99, 0xfc, 0x72, 0xfd, 0x5a, 0xd5, 0xc4, 0x3f,
-0xa4, 0x47, 0xaf, 0xa6, 0x6c, 0x6a, 0xb9, 0xf9,
-0xaf, 0x46, 0xa3, 0xbf, 0xb3, 0x2c, 0x21, 0x3d,
-0x09, 0xd5, 0x1d, 0x72, 0xe7, 0xeb, 0x47, 0x18,
-0x10, 0x6a, 0xdc, 0xc7, 0xa6, 0x39, 0xa1, 0x7f,
-0x5b, 0xbd, 0x0a, 0x94, 0x68, 0x7e, 0xfe, 0x8b,
-0xca, 0x01, 0x62, 0xac, 0xd8, 0x25, 0x24, 0x31,
-0xd1, 0x93, 0x46, 0x7b, 0x9e, 0x2e, 0x42, 0x7b,
-0x1e, 0x33, 0x6a, 0x13, 0x8a, 0x3a, 0x55, 0xfd,
-0xd7, 0x40, 0xdb, 0x0e, 0xb6, 0x4d, 0x68, 0x1a,
-0xaa, 0x54, 0xc5, 0x63, 0xcc, 0x7f, 0x85, 0xd3,
-0x72, 0x4a, 0xfc, 0x0d, 0xec, 0xbf, 0xe3, 0xa9,
-0x15, 0xc8, 0x87, 0xcf, 0xcd, 0x7f, 0x61, 0x51,
-0xc6, 0x31, 0x86, 0x9f, 0xc3, 0x5d, 0x55, 0x0f,
-0xf1, 0x7a, 0x13, 0x5e, 0x08, 0x36, 0x16, 0x9b,
-0x54, 0xe7, 0x75, 0xf8, 0x92, 0xe5, 0x79, 0xf9,
-0x2f, 0xea, 0x5d, 0xd0, 0x56, 0xc5, 0x36, 0x62,
-0xbb, 0x0c, 0xef, 0xb8, 0xa8, 0x09, 0xaf, 0x61,
-0x46, 0x6c, 0x82, 0xe9, 0xf3, 0x35, 0xe0, 0xf5,
-0x5f, 0x86, 0x3b, 0xff, 0xc5, 0xf9, 0x3f, 0x9e,
-0x24, 0x09, 0xca, 0xbd, 0x1f, 0x06, 0x52, 0xc1,
-0xcd, 0x62, 0x9d, 0xda, 0x87, 0x44, 0x82, 0x14,
-0x73, 0x1b, 0x71, 0xa3, 0x41, 0xbb, 0xb5, 0x97,
-0xa4, 0x73, 0xf2, 0x5f, 0xc1, 0x8a, 0x22, 0x36,
-0xfe, 0x52, 0xb6, 0x31, 0x79, 0xbb, 0x63, 0xa7,
-0x67, 0x26, 0xf3, 0x77, 0x0d, 0x58, 0x81, 0xfb,
-0x1e, 0xe9, 0xed, 0xba, 0x7b, 0x2b, 0xdb, 0x41,
-0xe4, 0xf2, 0x7f, 0xd8, 0x6a, 0x9c, 0xbd, 0xce,
-0x0b, 0x5d, 0x0b, 0x02, 0xc3, 0xb7, 0x6c, 0x62,
-0xdb, 0x90, 0x6e, 0xfc, 0x8b, 0xa8, 0xa8, 0x2e,
-0xb2, 0x12, 0x3c, 0x81, 0x2c, 0xfc, 0xb3, 0x92,
-0x97, 0x11, 0x15, 0x3f, 0x26, 0xf2, 0xb2, 0xd3,
-0xa1, 0xaa, 0x4d, 0x4c, 0xe8, 0x43, 0x86, 0x7c,
-0x0a, 0xeb, 0x2f, 0x84, 0xf0, 0x02, 0xa4, 0x8a,
-0xe5, 0xe4, 0xbf, 0x5a, 0xe0, 0x7e, 0xfc, 0xc9,
-0xcf, 0x6a, 0x2d, 0x23, 0xf7, 0x1b, 0x62, 0xca,
-0xc4, 0x3f, 0x13, 0xe5, 0x13, 0x04, 0xe3, 0x3f,
-0x6c, 0xbe, 0xe3, 0x24, 0x1b, 0xff, 0x5c, 0x37,
-0x56, 0xfc, 0x73, 0x31, 0x0c, 0xa7, 0x69, 0x38,
-0xfd, 0xda, 0x64, 0xf9, 0x39, 0xfd, 0x35, 0xb6,
-0x3e, 0x8b, 0x27, 0xc5, 0x09, 0xfd, 0x60, 0x69,
-0x8b, 0xb6, 0x61, 0xb8, 0x2d, 0x95, 0x83, 0x7f,
-0xfc, 0x98, 0xcd, 0x69, 0x30, 0x81, 0xd0, 0x20,
-0xc1, 0xfa, 0x2f, 0x1e, 0xe6, 0x3a, 0x1a, 0x89,
-0x47, 0x1a, 0xaa, 0x95, 0xef, 0xfe, 0x79, 0x26,
-0xfe, 0x86, 0xf8, 0x67, 0x6f, 0x61, 0xed, 0xc8,
-0x2d, 0x65, 0x3c, 0xbf, 0xcc, 0x89, 0xa9, 0xeb,
-0x63, 0xdd, 0x66, 0x85, 0xa0, 0xb1, 0x9e, 0x6a,
-0x41, 0xaa, 0x40, 0x6b, 0xac, 0x34, 0x1b, 0xff,
-0xb0, 0xfb, 0x3f, 0x60, 0xf1, 0xc9, 0x2f, 0x47,
-0x3c, 0x89, 0xfa, 0x94, 0x53, 0xfe, 0xb7, 0xe5,
-0xbe, 0x38, 0x53, 0x5d, 0x9c, 0xa4, 0xb2, 0xf0,
-0xcf, 0x5e, 0x06, 0x9b, 0xd9, 0x6e, 0x3a, 0x68,
-0xbd, 0x26, 0xe5, 0xeb, 0xd5, 0x57, 0x4c, 0xfd,
-0xbc, 0x13, 0x1b, 0x31, 0x98, 0xab, 0x5a, 0x97,
-0x8f, 0x7f, 0x8c, 0x0d, 0x47, 0xac, 0xb0, 0xcf,
-0x95, 0x4e, 0xfc, 0x67, 0x42, 0x1c, 0x55, 0xd9,
-0xc6, 0x53, 0xda, 0x90, 0xcc, 0xe1, 0xff, 0xfc,
-0x0e, 0x18, 0x8c, 0xdc, 0xa8, 0xd8, 0xf7, 0x17,
-0x3f, 0xc0, 0x2b, 0x23, 0xec, 0xfe, 0xe3, 0x95,
-0x93, 0xed, 0x4d, 0x23, 0x08, 0x1d, 0xb3, 0xf9,
-0x3f, 0x42, 0xc3, 0x09, 0xac, 0x56, 0xb6, 0x0b,
-0x03, 0xf1, 0xf9, 0x83, 0x13, 0xc5, 0x29, 0xf2,
-0x6b, 0x7d, 0xcf, 0x28, 0x43, 0xd4, 0x1b, 0x66,
-0x36, 0x65, 0xe1, 0x9f, 0xbd, 0x30, 0xd3, 0x50,
-0xfe, 0x91, 0x38, 0x85, 0x81, 0xbc, 0x82, 0x60,
-0x82, 0xe9, 0x67, 0x04, 0x89, 0x2b, 0x11, 0x45,
-0x23, 0xab, 0xf2, 0xf0, 0x8f, 0xf2, 0x5f, 0x0a,
-0x67, 0x70, 0x3e, 0x8c, 0xb2, 0xaa, 0xf0, 0x57,
-0xb0, 0x16, 0xd3, 0x5e, 0xab, 0xc8, 0xcf, 0xb4,
-0xa7, 0x69, 0x75, 0x74, 0xd1, 0x2a, 0x52, 0xa9,
-0xda, 0xf7, 0xe7, 0xf5, 0x5f, 0xea, 0x7c, 0x83,
-0xf9, 0xdf, 0x12, 0x61, 0x57, 0x72, 0x7e, 0xda,
-0x37, 0xb7, 0xe6, 0x03, 0xf8, 0x35, 0xcc, 0xdf,
-0x57, 0x3c, 0xeb, 0xea, 0x61, 0xe6, 0xb8, 0x43,
-0xe0, 0x53, 0x95, 0xdb, 0x9c, 0xe5, 0x86, 0xf8,
-0x87, 0xd3, 0xa2, 0x12, 0xe2, 0x19, 0xfd, 0x3c,
-0x4e, 0x7c, 0x27, 0x17, 0xbe, 0x85, 0x81, 0xa0,
-0x13, 0x70, 0x5e, 0x7d, 0x1e, 0x7c, 0xa3, 0xd3,
-0xf2, 0xf9, 0xcf, 0x6c, 0xdb, 0xeb, 0xd2, 0xcf,
-0x2b, 0xec, 0x17, 0xf1, 0x99, 0x85, 0x87, 0x03,
-0x47, 0x7c, 0xa3, 0x8b, 0xf2, 0xf9, 0x3f, 0x8b,
-0x22, 0x6c, 0xff, 0xf8, 0x5b, 0xd3, 0x90, 0x9e,
-0x81, 0x7f, 0x63, 0xc2, 0xe5, 0x9d, 0xe4, 0x30,
-0xe6, 0xd3, 0x5f, 0x51, 0x3a, 0xdb, 0x9a, 0xf2,
-0xf0, 0x4f, 0xd1, 0xd2, 0xb2, 0x19, 0xb2, 0x45,
-0x84, 0x7e, 0x0b, 0xd6, 0xf6, 0x98, 0x82, 0x90,
-0xa2, 0xd5, 0xc7, 0x94, 0xca, 0xac, 0xfc, 0x97,
-0x85, 0xb7, 0x07, 0xd9, 0x7a, 0x7b, 0xd4, 0xd6,
-0xe7, 0x83, 0xa6, 0xf0, 0x9b, 0x65, 0x7b, 0x22,
-0xda, 0xeb, 0xca, 0x77, 0x88, 0x3b, 0xff, 0x65,
-0xf2, 0x9f, 0x8b, 0x9f, 0x10, 0x03, 0x4c, 0x68,
-0x40, 0xc3, 0x32, 0xce, 0x03, 0x41, 0x1b, 0xb0,
-0xec, 0xeb, 0x5c, 0xac, 0x29, 0xe1, 0x9b, 0x82,
-0xff, 0xc3, 0x2c, 0x2c, 0xdf, 0x7d, 0x98, 0xb0,
-0x07, 0x30, 0x11, 0xe6, 0xa3, 0x35, 0x4c, 0xe8,
-0x08, 0xc3, 0x92, 0x35, 0xe2, 0xc6, 0x5c, 0xfc,
-0x13, 0xf5, 0xf1, 0x68, 0x0f, 0x73, 0xa3, 0xf6,
-0x7e, 0x1f, 0x85, 0x77, 0x60, 0x7f, 0xb2, 0x69,
-0xb9, 0xaf, 0x3f, 0x9f, 0xff, 0xdc, 0xa9, 0xf4,
-0x17, 0xd6, 0x32, 0xd8, 0xd0, 0x60, 0xc7, 0x1f,
-0x66, 0xa0, 0xf0, 0x4e, 0xac, 0x97, 0xbd, 0x7a,
-0xe2, 0x66, 0x25, 0x9a, 0xc1, 0x3f, 0x02, 0xc7,
-0x3f, 0x77, 0x28, 0x0f, 0x58, 0xf5, 0x4a, 0x97,
-0x9b, 0xe3, 0x4b, 0xd8, 0x78, 0x18, 0xbb, 0x05,
-0xf1, 0x8f, 0xb2, 0x31, 0x96, 0xcb, 0x7f, 0x5e,
-0x19, 0x61, 0xdb, 0x2e, 0x09, 0xb6, 0x08, 0x41,
-0xfd, 0x72, 0x95, 0xbc, 0x08, 0x3b, 0x09, 0x27,
-0x02, 0xbd, 0x28, 0x6c, 0xd1, 0x35, 0x4c, 0x8d,
-0xb5, 0x66, 0xe1, 0x1f, 0x8e, 0xee, 0x78, 0xfd,
-0x17, 0xb9, 0xcf, 0xe6, 0xff, 0x34, 0x98, 0xc2,
-0x01, 0xbe, 0xff, 0xaa, 0x29, 0xc9, 0xc7, 0x3f,
-0xa3, 0x6c, 0x9a, 0xef, 0x9a, 0xd3, 0x3c, 0xa1,
-0x5a, 0xf3, 0xfd, 0x58, 0xfa, 0x25, 0x32, 0x82,
-0x0e, 0xbb, 0xea, 0xbf, 0x2c, 0xfe, 0x4f, 0xbb,
-0x0f, 0xab, 0xdd, 0xcf, 0x62, 0xa2, 0x70, 0x94,
-0xfd, 0xfd, 0xfd, 0x1c, 0x2f, 0x89, 0x27, 0x8c,
-0x57, 0x03, 0x4d, 0x86, 0xef, 0xf5, 0x69, 0x53,
-0xf0, 0x9f, 0x63, 0x31, 0xac, 0xff, 0xda, 0x8a,
-0x44, 0x68, 0x8d, 0xed, 0xb8, 0x39, 0x23, 0x7a,
-0x1c, 0x18, 0xfe, 0xc1, 0xaf, 0x72, 0xf8, 0x3f,
-0x80, 0x61, 0x76, 0x8c, 0xf6, 0x08, 0x18, 0xef,
-0x62, 0x8a, 0xed, 0x82, 0x95, 0x9c, 0xf8, 0x64,
-0x74, 0x05, 0xf8, 0x7c, 0xf3, 0xf8, 0x3f, 0x88,
-0x27, 0x99, 0x3e, 0x25, 0x1e, 0x7f, 0xab, 0xe5,
-0xf8, 0x47, 0x49, 0xf8, 0x99, 0xa1, 0xd3, 0xfc,
-0x7a, 0x5f, 0xa2, 0x2c, 0x97, 0xff, 0xc3, 0x26,
-0xa5, 0x62, 0xb4, 0x07, 0x9f, 0x3f, 0xc1, 0x0b,
-0xf9, 0xf9, 0x7c, 0x7f, 0x43, 0xf6, 0x6b, 0x4d,
-0x77, 0xfa, 0xfe, 0x71, 0x5d, 0x1e, 0xfe, 0x71,
-0x2f, 0x83, 0x45, 0xce, 0x7a, 0x78, 0x49, 0xfd,
-0x90, 0x3e, 0xa7, 0xfb, 0x2a, 0xbb, 0xb3, 0xf1,
-0x0f, 0x5b, 0x66, 0x08, 0x72, 0x9c, 0xfa, 0x3b,
-0x2c, 0xbb, 0xe3, 0x3f, 0xc4, 0x51, 0x44, 0xa4,
-0x2a, 0x5b, 0x81, 0xb9, 0xfc, 0xe7, 0xc6, 0x54,
-0xe0, 0x03, 0x4f, 0x00, 0xb0, 0x8c, 0x94, 0x59,
-0x8f, 0x49, 0x69, 0x1d, 0x34, 0x26, 0x11, 0xff,
-0xb4, 0xde, 0x4f, 0xfd, 0x09, 0x65, 0xac, 0x3b,
-0x9b, 0xff, 0xc3, 0x5e, 0x93, 0x61, 0xb9, 0x2a,
-0xe6, 0xb5, 0x5f, 0x93, 0x7d, 0xb4, 0x9b, 0x04,
-0xc7, 0x98, 0xf0, 0xb2, 0xd0, 0x15, 0x4f, 0xbe,
-0xa9, 0x54, 0x91, 0x3c, 0xfe, 0x4f, 0xd2, 0xe2,
-0xff, 0xf0, 0xf7, 0x77, 0x74, 0xeb, 0x5a, 0x53,
-0x38, 0xa2, 0xad, 0x95, 0xab, 0xd9, 0xd6, 0x86,
-0xac, 0xc8, 0xe2, 0xff, 0xfc, 0x16, 0xeb, 0xd3,
-0x27, 0xc5, 0x19, 0xf2, 0x1f, 0x4d, 0xd8, 0xf3,
-0x3a, 0x7d, 0xb9, 0xab, 0x3e, 0x7d, 0x25, 0xc3,
-0x3f, 0xea, 0xab, 0x58, 0x08, 0x7f, 0x24, 0x9b,
-0xff, 0x83, 0xf6, 0x87, 0x9a, 0xf1, 0x1f, 0xd3,
-0x9e, 0xbc, 0x6d, 0x0b, 0x13, 0x70, 0x96, 0x84,
-0x47, 0x7d, 0xc6, 0x5f, 0xe7, 0xf2, 0x9f, 0x5b,
-0xa2, 0xbe, 0x11, 0xb1, 0x41, 0xff, 0x45, 0xa2,
-0x85, 0xf3, 0x7f, 0x34, 0x5e, 0xf6, 0x3e, 0x29,
-0xfe, 0x1d, 0xbc, 0x4a, 0x5b, 0xc6, 0xbc, 0x93,
-0xd3, 0xb2, 0xf0, 0x0f, 0x96, 0x9d, 0xca, 0xca,
-0x37, 0x49, 0x09, 0x65, 0xf6, 0xd3, 0x28, 0x99,
-0x47, 0xda, 0x19, 0x9e, 0xb9, 0x91, 0x3f, 0x3f,
-0xac, 0xad, 0xac, 0xa7, 0xc5, 0x7a, 0x61, 0x1e,
-0xff, 0x47, 0xff, 0x8b, 0x28, 0xe1, 0xf5, 0x5f,
-0x86, 0x72, 0x0f, 0x79, 0x13, 0xbe, 0x8b, 0x88,
-0x9a, 0xd9, 0x2b, 0xfd, 0x3b, 0xd0, 0xa8, 0x17,
-0x75, 0x12, 0x9a, 0x8b, 0x7f, 0x74, 0x85, 0x16,
-0x7a, 0x6d, 0xfe, 0x61, 0x7b, 0x21, 0x67, 0x80,
-0x84, 0x6e, 0x1e, 0x87, 0x8d, 0x5a, 0x10, 0x8a,
-0x76, 0xe7, 0xe3, 0x1f, 0xea, 0x7b, 0x44, 0x0c,
-0xca, 0xbf, 0x20, 0x7c, 0x9a, 0x69, 0xf8, 0x05,
-0x1a, 0xa2, 0xd4, 0xb4, 0x2f, 0xd7, 0x1e, 0xd9,
-0x17, 0x86, 0xe2, 0x47, 0xf2, 0xf1, 0x0f, 0xf0,
-0x30, 0x08, 0xf2, 0xa3, 0xbc, 0x29, 0x38, 0x6a,
-0x32, 0x84, 0x53, 0xd3, 0xde, 0x85, 0xf7, 0x78,
-0x6b, 0x8e, 0x07, 0xf3, 0xf0, 0x0f, 0xf8, 0xd2,
-0xe2, 0x7c, 0xb6, 0x1b, 0xbd, 0x61, 0xc8, 0x37,
-0x21, 0x4c, 0x20, 0xec, 0xa1, 0x25, 0x13, 0xd3,
-0xc6, 0x6a, 0x87, 0xa1, 0x39, 0xa4, 0x8c, 0x2a,
-0x90, 0x8b, 0x7f, 0xe6, 0xf6, 0xf5, 0x12, 0xdb,
-0x7f, 0x95, 0x19, 0xfe, 0x3e, 0xb8, 0xfb, 0x75,
-0xe6, 0xc8, 0x7e, 0x2b, 0xc7, 0x29, 0x7b, 0xbf,
-0xe2, 0x62, 0x1e, 0xff, 0x47, 0xe3, 0xf5, 0x5f,
-0x37, 0x98, 0xe3, 0x8f, 0x49, 0x7d, 0xf8, 0x3e,
-0xa6, 0xe0, 0x31, 0x88, 0xd3, 0xbb, 0x8c, 0xcb,
-0x07, 0x63, 0x39, 0xfc, 0x1f, 0x2c, 0x72, 0x6f,
-0x22, 0x5e, 0xc4, 0xbe, 0xc3, 0x7d, 0x4d, 0x0c,
-0x3d, 0x76, 0x9b, 0x0b, 0xcf, 0x90, 0xba, 0x20,
-0x9a, 0xbc, 0x3c, 0x8f, 0xff, 0x83, 0x6f, 0x07,
-0x74, 0xd7, 0xd3, 0xdf, 0x45, 0xe7, 0x8d, 0xfa,
-0x06, 0xc4, 0xf7, 0xf5, 0x57, 0xd8, 0xfd, 0xef,
-0x4f, 0xd5, 0xe0, 0x8b, 0x30, 0x80, 0xa1, 0xc2,
-0x5c, 0xfe, 0x4f, 0x0b, 0x5e, 0x3c, 0x93, 0x7e,
-0x5e, 0x65, 0x8e, 0x6c, 0xd7, 0x83, 0xa3, 0xd4,
-0xf2, 0xef, 0x18, 0xff, 0xb9, 0x11, 0x36, 0x18,
-0x6d, 0xdb, 0x73, 0xf8, 0xcf, 0x37, 0x2e, 0xf7,
-0x55, 0x8a, 0x9d, 0x65, 0xaf, 0xd2, 0xa6, 0x64,
-0x09, 0x55, 0xb0, 0x10, 0x7e, 0x97, 0x49, 0x24,
-0xfb, 0x3d, 0x5b, 0xba, 0x4a, 0x36, 0xff, 0x87,
-0xc7, 0x7f, 0x18, 0x5e, 0xf5, 0xa8, 0x52, 0x2f,
-0xdd, 0x9a, 0xbc, 0x7c, 0x47, 0x59, 0x10, 0x13,
-0x55, 0xe9, 0x45, 0x48, 0x84, 0xde, 0x83, 0x88,
-0xa8, 0x87, 0xe4, 0xf1, 0x9f, 0xd9, 0x32, 0x88,
-0x01, 0xe9, 0x05, 0x8d, 0x2a, 0x5d, 0x66, 0xa1,
-0xb7, 0xe9, 0x98, 0xb6, 0xe2, 0xc4, 0x0b, 0x99,
-0xbd, 0x75, 0xe1, 0x1f, 0x99, 0xd7, 0x4f, 0xed,
-0x26, 0x5a, 0x92, 0x59, 0x7b, 0x6a, 0x15, 0xd6,
-0xd5, 0x31, 0xc5, 0x16, 0x1e, 0x43, 0xd3, 0x67,
-0x2c, 0x8a, 0xbb, 0xf8, 0x3f, 0x7a, 0x29, 0xef,
-0xff, 0x33, 0x52, 0xf8, 0xac, 0xf8, 0x37, 0xf2,
-0x10, 0x34, 0x3d, 0xc4, 0xfc, 0x17, 0x2f, 0x54,
-0xe7, 0x81, 0x44, 0x95, 0x2f, 0x8c, 0x47, 0xa6,
-0xa9, 0xb9, 0xf8, 0x67, 0xf8, 0xd6, 0x33, 0xe5,
-0xa7, 0xe0, 0xac, 0xd0, 0x82, 0xfe, 0x0e, 0x35,
-0x76, 0x9d, 0x53, 0x11, 0x6f, 0xf8, 0x68, 0x56,
-0xfc, 0x27, 0x88, 0x61, 0xc6, 0x74, 0x70, 0xb7,
-0x58, 0xa4, 0xed, 0x87, 0xa6, 0x1e, 0x5f, 0xb2,
-0x3b, 0xa8, 0x9f, 0x36, 0xfd, 0x3b, 0x2e, 0x5d,
-0x66, 0x9f, 0x93, 0x42, 0x1e, 0xff, 0x39, 0x1d,
-0xd8, 0xdd, 0xf6, 0x37, 0xb4, 0xf7, 0xb6, 0x3f,
-0x6c, 0x51, 0x02, 0x31, 0x3b, 0x90, 0x28, 0x9a,
-0xd0, 0x6e, 0xd1, 0xb7, 0x63, 0x59, 0xf8, 0x47,
-0xc0, 0xb2, 0xd3, 0xcb, 0x52, 0x65, 0x22, 0x96,
-0x21, 0x33, 0x34, 0x48, 0x4a, 0xd8, 0x30, 0x4e,
-0x84, 0x5e, 0x0f, 0x6c, 0x07, 0x61, 0xfc, 0xc5,
-0xb6, 0x3c, 0xfe, 0x73, 0xfd, 0xd8, 0x17, 0xbe,
-0x19, 0xbb, 0x0d, 0x56, 0x3f, 0x52, 0x14, 0x58,
-0xf4, 0xb7, 0x64, 0x06, 0x7b, 0x91, 0x91, 0x21,
-0x43, 0xbe, 0x0f, 0xff, 0x42, 0xab, 0xd3, 0xdf,
-0x5b, 0x0a, 0x95, 0xee, 0xf8, 0x8f, 0x8e, 0xfd,
-0x7f, 0x4a, 0xe6, 0x2a, 0x10, 0x7b, 0xa1, 0x47,
-0x7e, 0xd7, 0xe7, 0xc1, 0x42, 0xf8, 0xe4, 0x6c,
-0x24, 0xea, 0xac, 0x97, 0x8e, 0x4b, 0x21, 0x63,
-0x89, 0x2a, 0xe6, 0xf2, 0x9f, 0x5b, 0x8c, 0xe2,
-0xe3, 0xcc, 0xba, 0x7e, 0xa4, 0xcd, 0x91, 0xcc,
-0xfc, 0xa0, 0x6a, 0x11, 0xc5, 0x4f, 0xa0, 0x7e,
-0x46, 0xdd, 0xf5, 0x5f, 0x26, 0xff, 0xdc, 0xf0,
-0xa6, 0x7c, 0xd5, 0x64, 0x88, 0x5c, 0x92, 0x94,
-0x35, 0xae, 0x7f, 0x8b, 0x28, 0xce, 0x0d, 0xd7,
-0x44, 0x3e, 0xff, 0x79, 0x48, 0xee, 0x2c, 0x54,
-0x55, 0x8c, 0xf6, 0x74, 0x44, 0xc5, 0x3b, 0x9d,
-0x40, 0xba, 0xca, 0x2d, 0x4c, 0x84, 0xe4, 0xe2,
-0x9f, 0xc6, 0xb4, 0xfc, 0x4d, 0x32, 0x43, 0xfa,
-0x6e, 0xd7, 0xd5, 0xbf, 0x96, 0x57, 0x10, 0xd4,
-0x40, 0xb5, 0x09, 0x84, 0x9e, 0x8e, 0x33, 0x20,
-0x34, 0x37, 0x1f, 0xff, 0x6c, 0x8d, 0x07, 0x49,
-0xc9, 0xbe, 0x07, 0xd9, 0x7a, 0x5b, 0xa1, 0xc5,
-0x10, 0x61, 0x26, 0x99, 0x3e, 0x0b, 0xd9, 0x57,
-0x0b, 0xd8, 0x7a, 0xdb, 0xb4, 0xce, 0x85, 0x7f,
-0x38, 0xff, 0x99, 0xed, 0x8f, 0xde, 0x25, 0xd7,
-0x93, 0xd7, 0xe1, 0x53, 0x49, 0xf9, 0x2e, 0x0e,
-0x84, 0x9a, 0x4c, 0x20, 0xf4, 0x9c, 0x1e, 0xa6,
-0xd3, 0x8e, 0x91, 0x1c, 0xfc, 0x23, 0x84, 0xa5,
-0xc6, 0x1e, 0x71, 0x88, 0x8c, 0xdb, 0xfe, 0x68,
-0x32, 0x4b, 0x58, 0xed, 0xce, 0x7f, 0x81, 0xe9,
-0xdd, 0xbc, 0x09, 0x71, 0x26, 0xec, 0xdf, 0xd6,
-0xb4, 0x82, 0xa1, 0x9d, 0x99, 0xd2, 0xc9, 0xb2,
-0x26, 0xcb, 0x03, 0xca, 0xec, 0xd5, 0xde, 0xec,
-0xc6, 0x3f, 0xb0, 0x5c, 0xc6, 0x68, 0x73, 0x60,
-0x86, 0xb2, 0x5c, 0xef, 0x1d, 0xf2, 0x47, 0x95,
-0x07, 0xc4, 0xe5, 0xfa, 0x1e, 0x24, 0x02, 0x25,
-0x44, 0xbb, 0x34, 0xc9, 0x93, 0x57, 0xff, 0x85,
-0x41, 0x8c, 0x5a, 0xa1, 0x57, 0x46, 0xef, 0x8c,
-0x85, 0xf0, 0x3a, 0x17, 0xc6, 0xec, 0x52, 0xa6,
-0x2c, 0xfc, 0x83, 0x65, 0xef, 0x9d, 0x72, 0x05,
-0xf9, 0x2c, 0x5b, 0x6f, 0x58, 0x6d, 0x4a, 0x6e,
-0x82, 0x9d, 0x3a, 0x17, 0x7a, 0xec, 0xd2, 0x30,
-0x92, 0x8d, 0x7f, 0x84, 0x06, 0x24, 0xf9, 0x60,
-0xf3, 0x1a, 0x3f, 0x27, 0x02, 0xc1, 0x84, 0x45,
-0x84, 0x2e, 0xe5, 0xf3, 0x4d, 0x5e, 0xed, 0xc2,
-0x3f, 0xc5, 0x26, 0x9f, 0x79, 0x43, 0x44, 0xfc,
-0x98, 0x9c, 0x85, 0x7f, 0xd1, 0x37, 0x1c, 0x2e,
-0x1f, 0x93, 0x4e, 0x4a, 0xcf, 0xe1, 0x7c, 0xb7,
-0x61, 0x45, 0x98, 0x9e, 0x5d, 0xff, 0x25, 0xe0,
-0xf8, 0x1b, 0x75, 0xef, 0x68, 0xdb, 0x6c, 0xed,
-0x55, 0xe9, 0xc6, 0x05, 0xd2, 0x68, 0xdf, 0xff,
-0x65, 0x02, 0x21, 0xd4, 0xcf, 0xd7, 0x39, 0x94,
-0xea, 0xce, 0xe1, 0x3f, 0x4b, 0x0d, 0x72, 0x20,
-0x46, 0xaa, 0x09, 0xc2, 0x9e, 0xe2, 0x24, 0xd1,
-0xe8, 0x20, 0x3c, 0xe1, 0x54, 0x84, 0x81, 0xb2,
-0x86, 0xe4, 0xe1, 0x9f, 0x56, 0x39, 0x11, 0x6b,
-0x4f, 0x76, 0x41, 0x30, 0x5a, 0xa4, 0x62, 0x99,
-0x09, 0xc2, 0x1e, 0xb5, 0x70, 0xd8, 0x0a, 0x85,
-0xc5, 0xf2, 0xf0, 0x4f, 0xbb, 0x9c, 0x68, 0xfa,
-0x0a, 0xb2, 0x7d, 0x30, 0xec, 0x53, 0x8b, 0xf9,
-0x7a, 0x6c, 0xac, 0x94, 0xd1, 0x67, 0x2e, 0xff,
-0xf9, 0x5e, 0xaf, 0xda, 0xf7, 0x65, 0xd8, 0x4f,
-0xc3, 0x7a, 0xf1, 0x26, 0x71, 0x79, 0xc5, 0x49,
-0x62, 0x3e, 0xbf, 0x74, 0xb2, 0x96, 0x3d, 0xff,
-0x23, 0x4a, 0x1e, 0xff, 0x59, 0xf7, 0x6d, 0xbc,
-0xfd, 0x07, 0x70, 0xb2, 0x2e, 0xac, 0xb3, 0xb7,
-0x2f, 0x53, 0x41, 0x56, 0xc1, 0x85, 0x4b, 0xf3,
-0xf9, 0xcf, 0xaa, 0x97, 0x2a, 0xd5, 0x12, 0xc6,
-0xdf, 0xea, 0x7a, 0xc4, 0xa4, 0x3c, 0x49, 0x6c,
-0x22, 0x7a, 0x21, 0x26, 0x5e, 0x6b, 0x72, 0xe3,
-0x3f, 0x8d, 0xdb, 0xe5, 0x71, 0x32, 0x97, 0xdc,
-0x4f, 0x67, 0x6f, 0x1d, 0x39, 0x56, 0x58, 0x47,
-0x9f, 0x03, 0x3f, 0x5d, 0x84, 0x89, 0xb0, 0x67,
-0x60, 0x1e, 0x55, 0xd2, 0xf9, 0xf1, 0x9f, 0xb4,
-0xac, 0x7a, 0x1a, 0x68, 0xd7, 0x90, 0xa6, 0xdf,
-0x02, 0xb1, 0xf5, 0xf2, 0x00, 0xd5, 0x32, 0x89,
-0x30, 0xa5, 0x34, 0x96, 0x1b, 0xff, 0x69, 0x34,
-0xe4, 0x48, 0xac, 0x14, 0xee, 0x8f, 0x5f, 0xad,
-0x17, 0xb5, 0x93, 0x2a, 0xe9, 0x29, 0xdd, 0x4a,
-0x84, 0xf1, 0x52, 0xa9, 0x88, 0x3b, 0xfe, 0x63,
-0xf3, 0x9f, 0x8f, 0x5c, 0x1d, 0x86, 0x43, 0x3d,
-0xb3, 0xa2, 0xc5, 0x1d, 0xcc, 0x4c, 0x9d, 0xa5,
-0x3b, 0xcd, 0x44, 0x18, 0xfb, 0xea, 0x28, 0x13,
-0xde, 0xcb, 0xc1, 0x3f, 0x61, 0xa3, 0x31, 0x29,
-0x8e, 0x91, 0x53, 0x52, 0x58, 0x2f, 0x01, 0x66,
-0x76, 0x98, 0xa2, 0x98, 0x3d, 0xa9, 0x31, 0xed,
-0xc9, 0x86, 0xd1, 0xfc, 0xf8, 0x4f, 0x14, 0xd9,
-0x3e, 0x70, 0xe8, 0xc1, 0xe6, 0xe5, 0xbe, 0xb9,
-0x62, 0x03, 0x0c, 0xd2, 0x46, 0x2c, 0x04, 0xbb,
-0x4f, 0x3f, 0x4f, 0x9b, 0xc7, 0x7c, 0x3f, 0x27,
-0x2e, 0xfc, 0x23, 0x98, 0x78, 0x46, 0xee, 0xdc,
-0x78, 0x49, 0x3c, 0x96, 0xac, 0xfe, 0xdb, 0x45,
-0x0b, 0x3d, 0x25, 0x34, 0x95, 0xa8, 0xb7, 0x9e,
-0xbf, 0xb2, 0x7a, 0x98, 0x3d, 0xbf, 0x0b, 0xff,
-0xa8, 0x9b, 0xe1, 0x07, 0x38, 0xfe, 0x1e, 0x86,
-0x7f, 0xee, 0x97, 0xae, 0x6a, 0x57, 0x6e, 0x23,
-0x55, 0xfa, 0x93, 0x26, 0xde, 0x7b, 0x93, 0xed,
-0x06, 0xab, 0x71, 0xe3, 0x96, 0x1b, 0xff, 0x69,
-0x38, 0x1a, 0x80, 0x2f, 0x48, 0x24, 0x06, 0xb5,
-0x4b, 0x15, 0x2f, 0xb3, 0xff, 0x3b, 0xed, 0x8d,
-0xd8, 0x2e, 0x49, 0x33, 0xfa, 0x76, 0xe4, 0xe0,
-0x1f, 0xe6, 0xa4, 0x5a, 0xbd, 0x73, 0x45, 0x99,
-0x1c, 0x80, 0xdd, 0xe9, 0xbe, 0x75, 0x6c, 0x23,
-0x90, 0x21, 0x36, 0xd3, 0x32, 0xc3, 0xb7, 0x3e,
-0x1f, 0xff, 0xb4, 0xfa, 0x52, 0xdd, 0x47, 0xc9,
-0x29, 0x61, 0x1e, 0x03, 0x5a, 0xcc, 0xcd, 0x71,
-0xfe, 0xb3, 0x69, 0x6f, 0x9f, 0x33, 0x7c, 0xdd,
-0x62, 0x3e, 0xfe, 0xf1, 0x4e, 0x88, 0x5a, 0xec,
-0x10, 0xdb, 0x68, 0x78, 0x0d, 0xf1, 0x9c, 0xfe,
-0x6a, 0x6b, 0x73, 0xc6, 0xdf, 0x29, 0x69, 0x31,
-0x07, 0xff, 0x90, 0x86, 0xb9, 0xf2, 0x76, 0xb6,
-0xad, 0x58, 0xb7, 0xa6, 0x61, 0x99, 0x27, 0xce,
-0xdc, 0xfa, 0x4f, 0x74, 0xbb, 0x10, 0x09, 0x11,
-0x4e, 0x3c, 0x9f, 0xff, 0x1c, 0x65, 0xf6, 0x27,
-0x00, 0xeb, 0x28, 0x7b, 0x5f, 0xfa, 0xd9, 0xb0,
-0x1f, 0x32, 0x37, 0xd7, 0x97, 0x19, 0x9f, 0x8f,
-0x7f, 0x74, 0x99, 0x19, 0x31, 0x1a, 0xdb, 0xd6,
-0xd0, 0xe1, 0x01, 0x72, 0x70, 0xfd, 0x83, 0xb2,
-0x7b, 0xbd, 0x81, 0xc7, 0x85, 0x7f, 0x0a, 0x38,
-0xfe, 0x81, 0x8e, 0xef, 0x30, 0xb3, 0x7c, 0xa0,
-0x22, 0x7c, 0xe7, 0x67, 0x1f, 0x64, 0xf8, 0xe7,
-0xd5, 0x68, 0x93, 0xb1, 0xc1, 0xf6, 0x2f, 0x4b,
-0x12, 0x35, 0x2e, 0xfc, 0x33, 0x9d, 0x67, 0xbb,
-0xc0, 0xd7, 0x2a, 0xa6, 0x23, 0xc7, 0x9b, 0xc2,
-0xed, 0xbe, 0x17, 0xc4, 0x33, 0x77, 0x9c, 0x0d,
-0x3c, 0x6f, 0xce, 0x97, 0x13, 0x39, 0x0c, 0xd1,
-0xc5, 0xff, 0x99, 0x8e, 0xfc, 0xf9, 0x16, 0x8b,
-0x36, 0x9f, 0xb8, 0x6e, 0xb8, 0x78, 0x52, 0x1c,
-0xc5, 0xfc, 0x97, 0x4d, 0xa4, 0x6f, 0xa9, 0xf4,
-0x1a, 0x6d, 0x79, 0xf8, 0xc7, 0x2c, 0xfb, 0xda,
-0xab, 0xd5, 0xbc, 0x29, 0x0f, 0x92, 0x77, 0x8d,
-0x5f, 0x38, 0x57, 0x68, 0x83, 0x24, 0x7f, 0x7b,
-0x0a, 0xfc, 0x63, 0x7a, 0x1f, 0xa8, 0x1d, 0xc2,
-0x30, 0x60, 0x05, 0xdb, 0x5f, 0x38, 0xf3, 0x95,
-0x65, 0x70, 0xd7, 0x7f, 0x15, 0xec, 0xc8, 0x84,
-0x4d, 0x90, 0xff, 0xd3, 0x81, 0x69, 0xaf, 0xef,
-0xd9, 0x57, 0x10, 0x6a, 0xca, 0x83, 0xee, 0xfa,
-0x2f, 0xc1, 0x4d, 0x83, 0xc7, 0x40, 0x10, 0xb6,
-0x05, 0x78, 0x05, 0xee, 0x73, 0x12, 0xa9, 0x9d,
-0xc1, 0xcd, 0x62, 0x1e, 0xfe, 0xb1, 0x7f, 0x7d,
-0xee, 0x9d, 0xcf, 0x91, 0xcc, 0x15, 0x69, 0x3e,
-0xf8, 0x22, 0x8a, 0x0b, 0xff, 0xc0, 0x0e, 0xfb,
-0xfe, 0x28, 0xcc, 0x65, 0x8e, 0xbe, 0x9c, 0xc7,
-0x27, 0xed, 0x2b, 0xe1, 0x44, 0x90, 0x4e, 0x4b,
-0x65, 0xe3, 0x1f, 0xa9, 0x01, 0xcb, 0xa0, 0x70,
-0x22, 0x26, 0xff, 0x87, 0xc7, 0xaf, 0xec, 0xe7,
-0xaf, 0x92, 0x13, 0xee, 0xfc, 0xd7, 0x74, 0xc4,
-0x3f, 0x41, 0x0b, 0xed, 0x30, 0x58, 0x28, 0x87,
-0xee, 0x1d, 0xb7, 0xf1, 0xb0, 0x19, 0x4a, 0xad,
-0xd4, 0xc8, 0xa0, 0x1b, 0xff, 0x48, 0x56, 0x18,
-0xe4, 0xfb, 0x1c, 0x06, 0x04, 0x56, 0x91, 0x5f,
-0xf0, 0xf8, 0x8f, 0xd3, 0x18, 0xa7, 0x7f, 0x29,
-0xc9, 0xce, 0x7f, 0x7d, 0x44, 0xe7, 0x73, 0xb4,
-0x03, 0xa7, 0x93, 0x73, 0x87, 0xbc, 0xa1, 0xb6,
-0x43, 0xda, 0x0b, 0xaa, 0x75, 0x85, 0x41, 0xa3,
-0x88, 0xb7, 0x5a, 0xdc, 0x98, 0xdf, 0xff, 0x70,
-0x02, 0xeb, 0xbf, 0x18, 0xec, 0xc1, 0x42, 0x03,
-0xdd, 0xa5, 0x31, 0x06, 0xad, 0x73, 0xeb, 0xdf,
-0x3f, 0xa2, 0x0e, 0xda, 0x69, 0x3a, 0x88, 0xfa,
-0x81, 0x57, 0x84, 0x39, 0x6c, 0x7d, 0x4e, 0x3b,
-0x66, 0x86, 0x92, 0x8c, 0xbc, 0xfe, 0x3f, 0x96,
-0xb5, 0x7c, 0x5e, 0xa8, 0xd9, 0x57, 0xdc, 0xc9,
-0xa6, 0xf9, 0x6f, 0x60, 0xdb, 0x1f, 0x91, 0xa7,
-0x2a, 0x72, 0xf3, 0x5f, 0x36, 0xda, 0xa1, 0xd5,
-0xe3, 0xbc, 0x10, 0x6c, 0x2d, 0xbd, 0x8a, 0x5f,
-0xf1, 0x3e, 0x1d, 0x63, 0x13, 0xef, 0xc8, 0xcb,
-0x7f, 0xd9, 0x6f, 0x13, 0xd1, 0x8c, 0x5e, 0x57,
-0xfc, 0x87, 0x9b, 0xa6, 0x3b, 0x94, 0x8a, 0xd8,
-0xeb, 0x39, 0xf1, 0x9f, 0x01, 0x13, 0xed, 0x20,
-0xec, 0x59, 0x9c, 0xfc, 0xcc, 0x24, 0x8f, 0xff,
-0x58, 0x57, 0x5a, 0xb6, 0xf9, 0xc6, 0xba, 0xf3,
-0xf2, 0x5f, 0x19, 0xb4, 0xb3, 0x84, 0xb2, 0xfd,
-0xa9, 0xfb, 0x0a, 0x36, 0xd2, 0x9c, 0xa2, 0xfe,
-0xdd, 0xdc, 0xef, 0x87, 0x10, 0x08, 0x0d, 0xdb,
-0xf1, 0x01, 0x33, 0x34, 0xe4, 0x55, 0xa7, 0xa8,
-0x7f, 0xb7, 0xc2, 0x3e, 0x1e, 0x7d, 0x21, 0x6f,
-0xe3, 0x93, 0xb9, 0xd2, 0xd0, 0xba, 0x3d, 0x91,
-0x57, 0xff, 0x6e, 0xd1, 0x54, 0x76, 0x82, 0x9f,
-0x19, 0x96, 0xa6, 0xb1, 0x48, 0x6f, 0xa6, 0x70,
-0x8c, 0x97, 0x92, 0x4d, 0x51, 0xff, 0xae, 0x92,
-0xe1, 0x82, 0x9d, 0x0b, 0x02, 0x11, 0x8f, 0x4a,
-0x5e, 0xc6, 0x7e, 0x38, 0xfc, 0x0a, 0xef, 0x08,
-0x24, 0xab, 0x90, 0x83, 0x7f, 0x4c, 0xda, 0x8f,
-0x59, 0xff, 0xe5, 0xa5, 0xe5, 0x69, 0x32, 0x92,
-0xb9, 0x82, 0xd4, 0x14, 0x25, 0x17, 0xff, 0x64,
-0x66, 0x17, 0x69, 0x4c, 0x88, 0x1f, 0xbb, 0xaf,
-0xe4, 0xd5, 0xbf, 0x8f, 0x99, 0xa0, 0xc8, 0x1a,
-0xdf, 0xce, 0xf4, 0x73, 0x62, 0x74, 0xbf, 0x7b,
-0xbc, 0x77, 0x63, 0x77, 0xa1, 0x90, 0x85, 0x7f,
-0xec, 0xfa, 0xf7, 0x54, 0x6d, 0xb0, 0xa2, 0x98,
-0x92, 0x65, 0xea, 0x11, 0x7e, 0x45, 0x4c, 0xe2,
-0x57, 0xaa, 0xbc, 0x8d, 0xe1, 0x1f, 0xfb, 0xf9,
-0x2d, 0xfc, 0xc3, 0x67, 0x27, 0xcf, 0x92, 0x83,
-0x1d, 0xb2, 0x4a, 0x5e, 0xa4, 0x38, 0x5f, 0xd1,
-0x22, 0x3e, 0x2d, 0x65, 0x1a, 0x20, 0x82, 0xad,
-0x7f, 0x77, 0xfd, 0xbb, 0xba, 0x87, 0x34, 0x2c,
-0x60, 0xf8, 0xe7, 0x2b, 0xd2, 0xc3, 0x66, 0xfe,
-0x8b, 0x7f, 0xd5, 0xea, 0xc9, 0xc7, 0x3f, 0xae,
-0x78, 0x8e, 0x97, 0x87, 0xf5, 0x48, 0xd8, 0x21,
-0x02, 0x75, 0x36, 0xb8, 0xeb, 0xdf, 0xdd, 0xf1,
-0x1f, 0xd5, 0xee, 0xff, 0x93, 0x74, 0xdf, 0xa1,
-0xb3, 0xd8, 0xcd, 0x7f, 0x76, 0xea, 0xdf, 0x4d,
-0x6d, 0xcf, 0x45, 0x20, 0xca, 0xb6, 0xbd, 0x84,
-0x5f, 0xe1, 0x5f, 0x91, 0xa9, 0xf2, 0x5f, 0x9c,
-0xf6, 0x23, 0x63, 0xfd, 0x97, 0x9c, 0x64, 0x37,
-0x5d, 0x47, 0x30, 0xb0, 0xc9, 0xf1, 0x4f, 0x63,
-0x2a, 0x90, 0x24, 0x39, 0xf8, 0x47, 0x72, 0xde,
-0x0e, 0xb4, 0x3f, 0xea, 0xbb, 0x65, 0x2e, 0xfb,
-0xd3, 0xa0, 0xab, 0x17, 0xc8, 0x7f, 0xbd, 0x89,
-0xef, 0xa3, 0xc1, 0x36, 0x32, 0x6f, 0x02, 0xc6,
-0x7f, 0x3c, 0x26, 0xfe, 0x09, 0xaa, 0xd9, 0xf9,
-0x2f, 0xbb, 0xfe, 0x1d, 0xd1, 0xce, 0xd3, 0xf4,
-0xfa, 0xb7, 0xbd, 0xab, 0x98, 0x5b, 0x79, 0x99,
-0x5d, 0x51, 0x56, 0x89, 0xdf, 0xb7, 0x4b, 0xc3,
-0xf2, 0xf1, 0x8f, 0xd9, 0xdf, 0x46, 0x0a, 0x0f,
-0x5b, 0xfd, 0xc4, 0xac, 0x2b, 0xbf, 0xc0, 0x50,
-0x46, 0x4a, 0xdc, 0xe7, 0xe4, 0xdf, 0xc1, 0xee,
-0xdf, 0xc2, 0xbc, 0x95, 0x7e, 0xfa, 0x88, 0x25,
-0x98, 0xfe, 0x6b, 0xda, 0x39, 0xfd, 0xbc, 0x19,
-0x08, 0xca, 0xc2, 0x3f, 0xb2, 0xf5, 0xfc, 0x6f,
-0xc1, 0xae, 0x64, 0xfd, 0x70, 0xf1, 0x37, 0xc8,
-0x21, 0x30, 0xe3, 0x57, 0x22, 0x87, 0x46, 0xa0,
-0xdc, 0x53, 0x96, 0x8d, 0x7f, 0x38, 0xa8, 0x63,
-0xb3, 0x5b, 0xff, 0xb4, 0xdf, 0x8c, 0xff, 0xd0,
-0x1f, 0x58, 0x1a, 0x90, 0xbf, 0x6b, 0x0a, 0x79,
-0xf9, 0x2f, 0xae, 0x3d, 0xd5, 0xea, 0xa7, 0xf4,
-0x92, 0x1d, 0x88, 0x46, 0x0b, 0xdf, 0x90, 0x52,
-0xae, 0xcf, 0x8d, 0xff, 0x98, 0x61, 0x9f, 0x63,
-0xaa, 0xd9, 0x78, 0x96, 0x4d, 0xf3, 0x77, 0x19,
-0x8f, 0x16, 0xbe, 0xcb, 0xb7, 0x3b, 0x1f, 0xff,
-0x38, 0xdf, 0x0e, 0x31, 0xe1, 0x60, 0xe4, 0x17,
-0x96, 0x3f, 0x92, 0x4f, 0x93, 0x06, 0xb2, 0x61,
-0x20, 0x3f, 0xff, 0x65, 0x5b, 0xef, 0x79, 0x46,
-0x31, 0x1a, 0xf6, 0xd7, 0xdc, 0xfb, 0xfd, 0xf5,
-0x13, 0x90, 0x9f, 0xff, 0x42, 0x6f, 0x25, 0xf3,
-0x44, 0x4c, 0xaa, 0x6c, 0x8c, 0xe1, 0x99, 0x99,
-0x96, 0xff, 0x12, 0x18, 0xd4, 0x49, 0xb9, 0xeb,
-0xdf, 0x0b, 0x82, 0x6e, 0x7f, 0x5d, 0x67, 0x14,
-0xa5, 0xca, 0xd0, 0xdf, 0x7d, 0xd9, 0x1a, 0x2f,
-0x35, 0xdc, 0xc3, 0xc6, 0x4f, 0x51, 0xff, 0xce,
-0xf4, 0xa3, 0xed, 0xd2, 0x34, 0x43, 0x6e, 0x22,
-0xaf, 0x92, 0x47, 0xed, 0xc2, 0xe7, 0x66, 0x81,
-0x13, 0x3f, 0x5a, 0xb3, 0xf1, 0x8f, 0x85, 0xee,
-0xe8, 0xf9, 0xd2, 0x1b, 0x8c, 0xfa, 0x01, 0xf1,
-0x7d, 0x6a, 0xe5, 0x17, 0x8e, 0xc1, 0x7f, 0xe7,
-0xa5, 0xc7, 0xee, 0xfc, 0x17, 0xe2, 0x9f, 0x80,
-0xe9, 0xbf, 0xd4, 0xf3, 0x51, 0x26, 0xec, 0xac,
-0x19, 0x33, 0xdc, 0xfe, 0x0b, 0x7c, 0x13, 0x6d,
-0x6e, 0xfe, 0xf3, 0x73, 0x66, 0xfc, 0xf0, 0xf5,
-0xee, 0x73, 0xf0, 0xda, 0x9a, 0xe6, 0xe8, 0x67,
-0x97, 0xb6, 0x61, 0xfc, 0xe7, 0x3a, 0x5c, 0x48,
-0xd8, 0x28, 0xb2, 0x39, 0x3d, 0x6d, 0x52, 0x9c,
-0xa0, 0x19, 0xfe, 0x15, 0x82, 0x9c, 0x92, 0xa8,
-0xb2, 0xb9, 0xec, 0x20, 0xf2, 0x0d, 0x34, 0x39,
-0x4e, 0x7e, 0x8c, 0x61, 0x0d, 0xc4, 0x3f, 0x6f,
-0xc2, 0x06, 0x5a, 0x87, 0xc2, 0x44, 0x86, 0xdf,
-0x2e, 0xd9, 0xfd, 0x25, 0x5a, 0x5f, 0x62, 0xe3,
-0x35, 0x3d, 0xae, 0xb6, 0xba, 0x0a, 0xbd, 0xbb,
-0x4d, 0x57, 0x75, 0x3c, 0xbb, 0xff, 0x0f, 0x69,
-0x88, 0x8a, 0x83, 0xe4, 0x1d, 0xd2, 0xdd, 0x73,
-0x97, 0x26, 0xaf, 0x27, 0x3b, 0x32, 0x85, 0x78,
-0x7d, 0x3c, 0x10, 0xc4, 0xee, 0x6f, 0x3f, 0x0f,
-0x48, 0xf8, 0xbe, 0xcc, 0xe8, 0xf4, 0x6d, 0xc2,
-0xb4, 0xcb, 0x48, 0xea, 0x1e, 0xaf, 0x99, 0x08,
-0x33, 0xf5, 0xc3, 0x80, 0x0a, 0x77, 0xcd, 0x86,
-0xc3, 0xdf, 0xde, 0xa2, 0xce, 0x37, 0x9d, 0x78,
-0x02, 0xb5, 0x41, 0xbe, 0x05, 0x3e, 0x43, 0xe1,
-0x6a, 0x19, 0xe2, 0xfa, 0x31, 0x2b, 0xe2, 0x9b,
-0xc7, 0x73, 0xf8, 0x3f, 0x73, 0x46, 0x7d, 0xbb,
-0x7d, 0xb5, 0xc8, 0x7f, 0xee, 0xf0, 0x6d, 0xea,
-0x66, 0xf7, 0xc7, 0x42, 0xa7, 0x54, 0xf7, 0x41,
-0x78, 0x45, 0x46, 0xa1, 0x2d, 0xa7, 0xff, 0x21,
-0x69, 0x78, 0xbb, 0x6f, 0xb0, 0x15, 0x0b, 0x73,
-0xfc, 0x6a, 0x9f, 0x4c, 0x82, 0xf0, 0x6b, 0x7d,
-0x8e, 0xa1, 0x3c, 0x1b, 0x3b, 0xc3, 0x1c, 0x37,
-0x32, 0xdc, 0xca, 0x32, 0xfd, 0x7f, 0x0c, 0x73,
-0x3d, 0x8c, 0x2b, 0x65, 0x24, 0x48, 0xba, 0xe9,
-0xb6, 0x3b, 0x14, 0x19, 0x5f, 0x93, 0x51, 0xac,
-0x08, 0x43, 0xfd, 0x98, 0x1b, 0xb1, 0x53, 0x19,
-0xfc, 0x03, 0x1c, 0xff, 0x44, 0x17, 0x7d, 0x81,
-0xcc, 0x80, 0xb5, 0xbb, 0xff, 0x6a, 0xa5, 0x32,
-0xce, 0x0b, 0xe1, 0xaf, 0x4a, 0x5f, 0x8e, 0xfd,
-0x00, 0xd7, 0xc6, 0x39, 0x30, 0x38, 0x93, 0xc1,
-0x3f, 0x95, 0x5e, 0xfd, 0x23, 0x75, 0xfe, 0x61,
-0x65, 0x76, 0xac, 0x04, 0x5e, 0x48, 0xce, 0xff,
-0xa6, 0x0f, 0xd6, 0xad, 0x97, 0x3e, 0x92, 0x42,
-0x43, 0x3e, 0xe4, 0xff, 0xbc, 0x00, 0x21, 0x04,
-0x42, 0x2e, 0xfe, 0x8f, 0xf7, 0x59, 0xf5, 0x3c,
-0x69, 0x59, 0xe0, 0x3b, 0x5e, 0x8e, 0x68, 0x70,
-0xde, 0xb0, 0xaf, 0xcb, 0x84, 0xcd, 0xc3, 0x4c,
-0x3f, 0x67, 0xed, 0x40, 0x50, 0xa6, 0xfe, 0x5d,
-0xb6, 0xf9, 0x3f, 0xaa, 0x18, 0x44, 0x6d, 0x47,
-0xbd, 0xb2, 0x68, 0x75, 0xec, 0x1c, 0x14, 0x83,
-0xf4, 0x95, 0xa5, 0x5c, 0xff, 0x07, 0x9c, 0xdf,
-0x77, 0xdc, 0xe6, 0xff, 0x74, 0x96, 0x61, 0x21,
-0xd8, 0xb5, 0xc6, 0x76, 0x3d, 0x43, 0xa4, 0xbc,
-0x82, 0xad, 0x07, 0x2e, 0x1c, 0x77, 0xf4, 0x09,
-0x76, 0xff, 0x9f, 0x23, 0x64, 0x86, 0x70, 0x3f,
-0x12, 0xbf, 0x3b, 0x08, 0xf2, 0x7f, 0xae, 0xc1,
-0x69, 0x96, 0xd0, 0xef, 0x9a, 0xd0, 0x68, 0x34,
-0x37, 0xfe, 0x13, 0x57, 0xea, 0xc8, 0x35, 0x6c,
-0x3f, 0x52, 0x9b, 0x8e, 0xcb, 0x4e, 0xbc, 0xd1,
-0x13, 0x64, 0x40, 0xc8, 0xea, 0x7f, 0xe8, 0x3c,
-0x8f, 0x64, 0xc6, 0x7f, 0x7c, 0x1f, 0x78, 0xe6,
-0xea, 0x87, 0x8e, 0x7e, 0x35, 0xe9, 0x7d, 0xaf,
-0x74, 0x05, 0xbb, 0x32, 0x0f, 0xf1, 0x4f, 0x00,
-0x1b, 0xdd, 0xe4, 0xf4, 0x3f, 0xcc, 0xf2, 0x47,
-0x1d, 0xf7, 0x55, 0x98, 0xb4, 0x67, 0xbd, 0x90,
-0xf3, 0x9f, 0xd9, 0x8b, 0xce, 0xbf, 0x9a, 0xa2,
-0xff, 0xf3, 0x65, 0xe2, 0xcc, 0xf8, 0x7e, 0xa3,
-0x69, 0x99, 0xe9, 0xe6, 0xe8, 0x1c, 0xac, 0x08,
-0x1b, 0x83, 0xfd, 0xc9, 0x81, 0xdc, 0xfe, 0x87,
-0xdc, 0xc9, 0xfe, 0xf5, 0xa2, 0x04, 0xae, 0x1f,
-0x63, 0xeb, 0xbd, 0x7d, 0x8f, 0x30, 0xfb, 0xb3,
-0x53, 0xad, 0xc3, 0x7e, 0xce, 0x63, 0x58, 0x5a,
-0xa8, 0xf3, 0x7c, 0xba, 0x83, 0x7f, 0xa4, 0x5a,
-0xdb, 0x5f, 0x5f, 0x05, 0xbd, 0x92, 0xff, 0x16,
-0x65, 0xa3, 0xab, 0x10, 0x9e, 0x3c, 0xae, 0x73,
-0xc1, 0xc5, 0xff, 0xa9, 0x90, 0x24, 0xb3, 0x1f,
-0x8e, 0xa7, 0x40, 0xed, 0xd6, 0x35, 0xbd, 0xcf,
-0xac, 0x7f, 0x0f, 0xe8, 0xbc, 0xdf, 0x8b, 0x15,
-0x11, 0x32, 0x32, 0xf8, 0xa7, 0x28, 0x6a, 0xcf,
-0x97, 0x2d, 0x6e, 0xd8, 0xc8, 0x27, 0x2e, 0x9d,
-0xb2, 0xe3, 0x0f, 0xe3, 0x66, 0x20, 0xe8, 0x9c,
-0x63, 0x7f, 0x06, 0xcd, 0x7e, 0x86, 0x0b, 0x18,
-0xc8, 0x39, 0x43, 0x3e, 0x86, 0x1b, 0xf5, 0x0d,
-0x98, 0x08, 0xfb, 0x90, 0x67, 0x88, 0xc4, 0xdf,
-0x80, 0x55, 0x11, 0x9f, 0xc1, 0x3f, 0x73, 0x79,
-0xfe, 0x8b, 0xa1, 0xf1, 0x44, 0xf7, 0x6c, 0xf8,
-0x25, 0x3c, 0xad, 0x7b, 0x23, 0x64, 0x39, 0x9c,
-0xd5, 0x07, 0x30, 0x83, 0x56, 0x1b, 0x7f, 0x31,
-0xd0, 0x64, 0x26, 0x0a, 0x1d, 0xbc, 0x04, 0x49,
-0x8c, 0xff, 0xc0, 0xa2, 0x61, 0xa2, 0xa9, 0x71,
-0x4e, 0xc3, 0x16, 0xa3, 0x30, 0x88, 0x69, 0x2f,
-0xea, 0xd1, 0xb6, 0xc6, 0xcd, 0x8c, 0xd8, 0x21,
-0x47, 0xff, 0xba, 0xd4, 0x63, 0xf2, 0x7f, 0x56,
-0x11, 0x69, 0x4b, 0x57, 0x70, 0x26, 0xd2, 0xa2,
-0xda, 0x79, 0x22, 0x8c, 0x4d, 0x5c, 0x32, 0xac,
-0xf9, 0xbe, 0x9e, 0x89, 0xff, 0x54, 0x6c, 0x53,
-0xf7, 0x40, 0x63, 0x64, 0xd1, 0xeb, 0x4d, 0x12,
-0xe9, 0x2d, 0xe2, 0xb0, 0x67, 0xb9, 0x64, 0xe9,
-0x13, 0x13, 0x61, 0x28, 0x14, 0xbe, 0xe3, 0xac,
-0x87, 0xad, 0xd2, 0x36, 0x93, 0xbd, 0x9c, 0x50,
-0x66, 0xc2, 0xd0, 0xd0, 0x6c, 0x7d, 0xbd, 0x2a,
-0x22, 0x82, 0x65, 0x8f, 0x8d, 0x1d, 0x14, 0x79,
-0xe9, 0x5f, 0xe2, 0xb6, 0x4c, 0xff, 0xc3, 0xf7,
-0x54, 0xab, 0x3f, 0xb6, 0x8a, 0xd5, 0x3a, 0x46,
-0xb8, 0xd3, 0x6c, 0x14, 0x29, 0xf3, 0x8e, 0x88,
-0xc3, 0xa6, 0xa2, 0x12, 0x2e, 0xfe, 0x73, 0x9d,
-0x6a, 0x81, 0x9c, 0x58, 0xf9, 0x51, 0xe9, 0x88,
-0xde, 0x24, 0x6f, 0x30, 0x13, 0x61, 0xc7, 0x33,
-0x8c, 0x2c, 0x9f, 0x1b, 0xff, 0xc8, 0x92, 0xc9,
-0xff, 0x91, 0x93, 0x65, 0x93, 0xfa, 0xfd, 0x50,
-0xf3, 0xf8, 0xa2, 0x71, 0x71, 0x85, 0xf4, 0x54,
-0xd4, 0x4f, 0x95, 0x34, 0xdb, 0xa1, 0xdf, 0xcf,
-0x2b, 0xe2, 0x5d, 0xfd, 0x0f, 0x65, 0x33, 0xfe,
-0x53, 0x3b, 0x17, 0xc8, 0x6b, 0x68, 0x6d, 0x52,
-0x8a, 0xe0, 0xf7, 0xc2, 0x00, 0x56, 0xa4, 0x96,
-0x91, 0xc5, 0xd0, 0x65, 0xda, 0x9f, 0x03, 0xce,
-0x7a, 0x33, 0xfb, 0x1f, 0x36, 0xa6, 0x2b, 0x3b,
-0xc9, 0x2f, 0x91, 0x48, 0xaf, 0x2b, 0x06, 0xb9,
-0x13, 0x9e, 0x32, 0x5f, 0xdb, 0x2a, 0x58, 0x63,
-0x06, 0x82, 0xb6, 0x3b, 0xe3, 0x03, 0x95, 0x26,
-0xff, 0x87, 0xc3, 0x9e, 0x43, 0x74, 0xa7, 0xe6,
-0xeb, 0x50, 0x66, 0x48, 0xe7, 0xe8, 0x96, 0xb4,
-0x6f, 0xa9, 0x78, 0x9f, 0xf6, 0x92, 0x19, 0x08,
-0x7a, 0x6f, 0xa6, 0x3d, 0x5e, 0x2e, 0x36, 0xf1,
-0x8f, 0x92, 0x6c, 0x3b, 0x56, 0x38, 0x1e, 0xbd,
-0x0f, 0xbb, 0xbb, 0x38, 0x16, 0xe6, 0x58, 0xeb,
-0x29, 0xd3, 0xd1, 0x67, 0xe2, 0x3f, 0x51, 0xc9,
-0xec, 0xff, 0x5c, 0x32, 0x29, 0x86, 0xe1, 0x45,
-0xa3, 0x39, 0xea, 0x1b, 0x67, 0x7f, 0xe8, 0x1c,
-0xef, 0xff, 0xac, 0x3c, 0xc7, 0x80, 0x16, 0x4f,
-0x64, 0x8c, 0x66, 0xf0, 0x0f, 0xe2, 0x19, 0x52,
-0xdf, 0xae, 0x2c, 0x2d, 0xf3, 0xea, 0x3f, 0xd1,
-0x66, 0x77, 0xf6, 0xe9, 0x58, 0xbf, 0x1f, 0xb9,
-0xd6, 0x50, 0xbe, 0x46, 0xaa, 0xe8, 0x1a, 0x73,
-0x22, 0x6e, 0xbc, 0xc1, 0xed, 0x55, 0xc2, 0xd3,
-0x59, 0x38, 0x17, 0xbe, 0x5f, 0x58, 0x2d, 0x28,
-0x3a, 0xa7, 0x3d, 0xf3, 0x34, 0x5f, 0x95, 0xfa,
-0x90, 0x39, 0x7e, 0x58, 0xb3, 0xf5, 0xaf, 0x57,
-0xf0, 0xb6, 0x1b, 0xbf, 0x51, 0x66, 0x97, 0xc9,
-0xb4, 0x9f, 0xd4, 0x36, 0x2d, 0xaa, 0x2a, 0x3b,
-0x28, 0x0d, 0x88, 0xb5, 0xd8, 0x11, 0xc8, 0x4b,
-0x36, 0x72, 0xfb, 0x73, 0xc9, 0x91, 0x8c, 0x7f,
-0xe4, 0xfb, 0xfd, 0xb0, 0x51, 0xb2, 0xdb, 0x5f,
-0xcc, 0xac, 0x4d, 0xe8, 0x5e, 0x5f, 0x21, 0x73,
-0x73, 0xc7, 0x99, 0xbf, 0xf3, 0x25, 0xc8, 0x7c,
-0x78, 0xdd, 0xec, 0xe8, 0x32, 0xe2, 0xac, 0x9f,
-0xa4, 0x6a, 0xf2, 0x7f, 0x96, 0x3c, 0x27, 0xbe,
-0x2f, 0x4d, 0x0e, 0x85, 0xf5, 0x0d, 0x4e, 0xfc,
-0xa7, 0x87, 0xd9, 0xf3, 0xf7, 0x4c, 0xa8, 0x70,
-0x34, 0xb7, 0xff, 0x8f, 0xce, 0xdc, 0xe2, 0x39,
-0xfd, 0x10, 0x34, 0x83, 0xd7, 0xe8, 0x7e, 0x16,
-0xce, 0x19, 0xff, 0x1d, 0xc3, 0xf8, 0xf3, 0xa5,
-0xb7, 0xd4, 0x66, 0xac, 0x00, 0x4a, 0x3b, 0xeb,
-0x67, 0xc8, 0xc2, 0x3f, 0x72, 0x6a, 0xdf, 0xef,
-0x61, 0x7b, 0xfb, 0x56, 0xcd, 0xd3, 0x2f, 0x62,
-0x45, 0xfc, 0xbd, 0x86, 0xe2, 0x65, 0xf6, 0x73,
-0x9d, 0xbe, 0x15, 0x03, 0x0b, 0x49, 0x77, 0xff,
-0x43, 0xe4, 0xe7, 0x8c, 0xc8, 0x5b, 0xc8, 0x31,
-0x2d, 0x5e, 0xe4, 0x5f, 0xc6, 0xf0, 0xc0, 0x0e,
-0x18, 0x14, 0x98, 0x9b, 0xee, 0x27, 0x38, 0x9e,
-0x3b, 0xee, 0x3c, 0xfe, 0x4f, 0x3a, 0xd0, 0x44,
-0x8e, 0x2d, 0x48, 0xea, 0xda, 0x42, 0x0f, 0x78,
-0x16, 0x4b, 0x03, 0xbc, 0x50, 0x97, 0x19, 0xea,
-0x98, 0x69, 0x9f, 0x63, 0x5d, 0x60, 0x7f, 0xe4,
-0x20, 0x3f, 0xdf, 0xc1, 0x3b, 0x10, 0x1b, 0xc3,
-0xb2, 0xe2, 0x22, 0x2f, 0xfd, 0xcc, 0x0e, 0xb6,
-0xfe, 0xff, 0x16, 0x19, 0xa7, 0x55, 0x6c, 0xa3,
-0xca, 0xfd, 0x4b, 0x3a, 0x8f, 0xff, 0xc3, 0xbe,
-0x3d, 0x0c, 0x67, 0xb4, 0xb0, 0xc8, 0xa6, 0x79,
-0x46, 0xfa, 0x03, 0xdc, 0x60, 0xf8, 0x74, 0x66,
-0x91, 0xce, 0x99, 0x40, 0x68, 0xfb, 0xcc, 0x0c,
-0xfe, 0x39, 0x0f, 0x07, 0xd5, 0xeb, 0x52, 0xde,
-0x49, 0xf1, 0x6e, 0x38, 0xbf, 0xa6, 0x45, 0x0d,
-0x0e, 0x96, 0x7f, 0xa0, 0xff, 0xca, 0x15, 0xff,
-0x41, 0xc1, 0x85, 0x7f, 0x2a, 0x0f, 0x42, 0x97,
-0x36, 0x87, 0xca, 0x83, 0x6c, 0xbe, 0x7b, 0x69,
-0xc3, 0x03, 0x95, 0x83, 0x65, 0x26, 0xff, 0xc7,
-0x8e, 0xff, 0x64, 0xe3, 0x1f, 0xb9, 0x00, 0x0f,
-0x1d, 0xd8, 0x16, 0xb7, 0xea, 0xfd, 0x83, 0x95,
-0x28, 0x50, 0xd7, 0x7e, 0x3c, 0x98, 0x83, 0x7f,
-0x0a, 0xd6, 0x93, 0xbe, 0xd5, 0x33, 0xa9, 0x6c,
-0x45, 0x4b, 0xb6, 0x2a, 0xd8, 0x4f, 0xdb, 0x1d,
-0x3f, 0x61, 0x42, 0x6b, 0x06, 0xff, 0x20, 0xff,
-0x67, 0xff, 0xc8, 0x1c, 0x1a, 0x4c, 0x71, 0xb7,
-0x1b, 0x0e, 0x79, 0xcd, 0x6d, 0x42, 0x06, 0x21,
-0xa3, 0xf0, 0x13, 0xa7, 0xbf, 0x13, 0xf6, 0x3f,
-0xfc, 0x18, 0xae, 0x8c, 0x39, 0xe8, 0xd7, 0x8b,
-0x49, 0x41, 0x37, 0x3e, 0xe4, 0xf8, 0xc7, 0xdd,
-0xff, 0x19, 0x7e, 0xa7, 0xce, 0x5b, 0xed, 0xb5,
-0x60, 0x39, 0xa7, 0x3d, 0x67, 0x21, 0x70, 0x9e,
-0x98, 0x76, 0xc5, 0x7f, 0x1a, 0xb0, 0x1b, 0x76,
-0x97, 0x1d, 0xf6, 0x39, 0x5c, 0x90, 0x22, 0x1f,
-0x68, 0x7b, 0xb3, 0x9f, 0x9f, 0xfc, 0xc1, 0xf9,
-0x79, 0x0d, 0x69, 0x49, 0xbc, 0x3b, 0xe9, 0xdf,
-0x22, 0x9b, 0xb4, 0x9f, 0x06, 0xea, 0x47, 0xfd,
-0xec, 0xca, 0xd1, 0x8f, 0x8b, 0xff, 0xac, 0x7e,
-0x91, 0x81, 0xa8, 0xea, 0xa4, 0x19, 0x06, 0xd9,
-0x56, 0x9f, 0xc4, 0xfe, 0x3f, 0xf4, 0x69, 0x5a,
-0xec, 0xc4, 0x7f, 0x38, 0xfe, 0x49, 0xd8, 0xeb,
-0xad, 0x43, 0xc6, 0xfc, 0xfe, 0x33, 0x34, 0x18,
-0x12, 0x3f, 0xa0, 0xbf, 0x4e, 0x86, 0xe9, 0xe7,
-0xe7, 0x95, 0x1f, 0x4a, 0xf0, 0x13, 0x31, 0x10,
-0xff, 0x7c, 0xd5, 0x14, 0x5c, 0xf8, 0xa7, 0xe0,
-0x59, 0xc2, 0x40, 0x4e, 0x0f, 0x6a, 0x43, 0x3f,
-0xcd, 0x04, 0xaf, 0x8b, 0x1f, 0x95, 0x21, 0x4a,
-0x65, 0xe1, 0x9f, 0x17, 0xa0, 0x89, 0x22, 0xdb,
-0x1c, 0x77, 0x67, 0xc3, 0x8b, 0xb3, 0xf5, 0x63,
-0x6e, 0x6d, 0x32, 0xf8, 0x67, 0xe4, 0xd2, 0xcd,
-0x0c, 0xf6, 0xd4, 0x60, 0x3d, 0xc5, 0x19, 0xa4,
-0x4d, 0xa6, 0xab, 0xec, 0xfa, 0x2f, 0x25, 0x23,
-0xf8, 0x33, 0xf8, 0x07, 0xcf, 0xbf, 0xd8, 0x60,
-0xcf, 0xf7, 0x07, 0xb4, 0x7e, 0x5c, 0x5e, 0x75,
-0xd7, 0x5b, 0x19, 0x22, 0x90, 0x25, 0x64, 0xf0,
-0xcf, 0x0a, 0x89, 0x81, 0x46, 0x9d, 0x6d, 0x7b,
-0x4d, 0x74, 0xdd, 0x30, 0x2a, 0xbb, 0xd4, 0xe8,
-0x08, 0xd9, 0xfd, 0x9f, 0x99, 0x59, 0xe8, 0x0a,
-0xe2, 0xee, 0xf8, 0x0d, 0xa9, 0xa5, 0x67, 0x87,
-0x19, 0xf6, 0x09, 0xdb, 0xf1, 0x9f, 0x70, 0x0e,
-0xfe, 0x11, 0xb6, 0x90, 0xc9, 0x8e, 0xe7, 0x54,
-0x13, 0xff, 0x48, 0x76, 0xfd, 0x57, 0x4e, 0x22,
-0xcc, 0x8d, 0x7f, 0x66, 0xd2, 0x21, 0x61, 0x00,
-0xc3, 0x02, 0x76, 0x7c, 0xa0, 0xf5, 0x9d, 0x5c,
-0x06, 0x48, 0x16, 0xfe, 0xf9, 0x6b, 0xe8, 0x8d,
-0xfa, 0x97, 0xf2, 0xfe, 0x3f, 0xd7, 0x33, 0x47,
-0x1c, 0x47, 0x1a, 0xb3, 0x2b, 0x22, 0xd4, 0x90,
-0x8d, 0x7f, 0xe6, 0x16, 0x48, 0xd0, 0x5b, 0xba,
-0x15, 0xd9, 0xd1, 0x38, 0xbe, 0x21, 0x22, 0x27,
-0xca, 0xc6, 0xd4, 0xdc, 0xf1, 0x2f, 0x39, 0xeb,
-0x2d, 0x50, 0x51, 0x00, 0x5d, 0xba, 0x16, 0xa9,
-0xe3, 0xb4, 0x1f, 0xf0, 0x62, 0x1b, 0xc0, 0x17,
-0x9d, 0x08, 0x89, 0x25, 0xb4, 0x1a, 0xce, 0xf8,
-0xb9, 0xc5, 0x1d, 0xfc, 0xb4, 0x0b, 0x6b, 0x9a,
-0x33, 0xc0, 0xcb, 0x69, 0x4e, 0x39, 0xf3, 0x3d,
-0x97, 0xa9, 0x7f, 0x67, 0xf8, 0xe7, 0x6c, 0x7b,
-0x8b, 0x5e, 0x6c, 0xce, 0xee, 0xc6, 0xd1, 0xff,
-0xe6, 0x9a, 0x66, 0x86, 0xf8, 0xe4, 0x8a, 0xff,
-0x7c, 0x0c, 0xfb, 0xa3, 0x4d, 0x11, 0x4b, 0x3f,
-0x2d, 0xba, 0x94, 0x10, 0x3f, 0x26, 0xfb, 0x73,
-0xc7, 0xbb, 0xfa, 0x3f, 0x1b, 0x94, 0x46, 0x6b,
-0x64, 0x19, 0xe3, 0x3f, 0x73, 0xa1, 0x01, 0x02,
-0xb4, 0x2c, 0x4d, 0xe3, 0xae, 0x8e, 0x88, 0x1c,
-0xff, 0x64, 0x9d, 0x7f, 0xb1, 0x7a, 0x41, 0x35,
-0xf6, 0x73, 0x1e, 0x9e, 0xbd, 0x93, 0x57, 0xbb,
-0xb3, 0x69, 0x76, 0x65, 0xcf, 0x97, 0x8c, 0x66,
-0xf0, 0x8f, 0xb4, 0x8d, 0xac, 0xd6, 0x6b, 0x38,
-0x7b, 0x9c, 0xab, 0xb1, 0xd2, 0x8e, 0xbf, 0x15,
-0xb9, 0xf4, 0xf9, 0x4e, 0x56, 0xfc, 0x07, 0xdb,
-0x5a, 0x06, 0x33, 0xbf, 0x6f, 0xf9, 0x18, 0xe4,
-0x3e, 0x7f, 0x06, 0xff, 0xf0, 0xf3, 0x2f, 0x12,
-0xce, 0xb7, 0xf3, 0xb9, 0x10, 0xca, 0xd5, 0x4f,
-0xf6, 0xf9, 0x17, 0x23, 0xd1, 0x66, 0xec, 0xb6,
-0xc4, 0xb5, 0x5d, 0xee, 0xa5, 0x9f, 0x32, 0x89,
-0x67, 0xee, 0x85, 0xe7, 0x8e, 0xff, 0x78, 0xc8,
-0x3a, 0x5c, 0xff, 0xb8, 0x9e, 0x1f, 0x81, 0x46,
-0x06, 0x84, 0xc8, 0x69, 0x75, 0x9d, 0x15, 0x11,
-0x32, 0xf3, 0x5f, 0x49, 0x72, 0x40, 0xd3, 0x9d,
-0xf1, 0x4b, 0x8c, 0x6e, 0xe4, 0x73, 0xb2, 0xb7,
-0x03, 0x1b, 0x67, 0x25, 0x8b, 0x42, 0xe4, 0x7d,
-0x1e, 0xaf, 0xf0, 0xb8, 0xde, 0x97, 0x57, 0x9c,
-0xf7, 0x8b, 0x96, 0x56, 0x30, 0x90, 0x53, 0x83,
-0xd5, 0xdf, 0x6f, 0xd2, 0xa7, 0x21, 0x38, 0x8a,
-0xfd, 0x7f, 0x6a, 0xd7, 0x66, 0xde, 0x5f, 0x0c,
-0x95, 0xb4, 0x8e, 0xd8, 0xb7, 0x87, 0xb8, 0x7c,
-0x19, 0x03, 0x21, 0x3b, 0x93, 0x0c, 0xff, 0xfc,
-0x8a, 0x47, 0x7b, 0xea, 0x57, 0x31, 0x27, 0xf4,
-0x5b, 0xec, 0x08, 0x6d, 0xe5, 0xbf, 0x10, 0xff,
-0xbc, 0xe2, 0xb7, 0xc7, 0xcb, 0x05, 0x49, 0xac,
-0xff, 0xa2, 0x8d, 0xb6, 0x19, 0x2f, 0x99, 0xc2,
-0xde, 0x96, 0xef, 0x23, 0xf6, 0xf3, 0x40, 0xc5,
-0x73, 0x70, 0x3a, 0x61, 0xb7, 0xfd, 0x49, 0xb4,
-0xa4, 0xbd, 0x27, 0x79, 0x23, 0xa0, 0x6c, 0xff,
-0xe5, 0xc6, 0x3f, 0xdf, 0x81, 0xe7, 0x28, 0x82,
-0x96, 0x9b, 0xdf, 0x84, 0x5d, 0xf4, 0x06, 0x43,
-0xbe, 0x87, 0x9c, 0x86, 0xb5, 0xd9, 0xf6, 0xa7,
-0xcc, 0x5d, 0xff, 0xd5, 0x0f, 0x4f, 0x6b, 0xd5,
-0x49, 0xf3, 0x5b, 0xad, 0xde, 0x08, 0xdc, 0x73,
-0xdb, 0xe6, 0x9c, 0xf1, 0xf7, 0xb8, 0xea, 0xdf,
-0xb5, 0x0a, 0xca, 0x94, 0x9c, 0xa4, 0x76, 0x99,
-0xf3, 0x11, 0xa6, 0x58, 0x23, 0x2b, 0x9e, 0x8f,
-0xad, 0x39, 0x8e, 0x64, 0xc5, 0x7f, 0xb0, 0x6d,
-0x14, 0x67, 0x4b, 0xe2, 0xec, 0xe4, 0x14, 0x6f,
-0x04, 0x94, 0xed, 0x5f, 0x46, 0x5c, 0xf5, 0xb0,
-0xbf, 0x51, 0x27, 0xb1, 0x7f, 0xb8, 0xf5, 0x6d,
-0x7a, 0x09, 0x06, 0x8e, 0x9c, 0x42, 0x30, 0x1c,
-0x7f, 0x25, 0x32, 0x88, 0xec, 0xf1, 0xd5, 0xea,
-0x69, 0x38, 0x2b, 0x37, 0x6b, 0xdc, 0x8c, 0xff,
-0x9e, 0x59, 0xef, 0xa0, 0x75, 0xfe, 0x85, 0xdb,
-0x9e, 0xd7, 0xa4, 0x97, 0xdb, 0xe3, 0xb7, 0x48,
-0xcb, 0x60, 0x70, 0x42, 0x83, 0x80, 0xd9, 0x76,
-0x0f, 0x81, 0x50, 0xeb, 0xb1, 0x5c, 0xff, 0x4b,
-0x3e, 0x74, 0x7e, 0x5f, 0x8c, 0xff, 0xb0, 0xdd,
-0xc1, 0x2d, 0xb6, 0xbf, 0xbe, 0x8b, 0x9f, 0x7f,
-0xf1, 0xbd, 0x9c, 0xf1, 0x69, 0xf7, 0xfe, 0x0b,
-0x52, 0x9a, 0x5f, 0xe7, 0x6c, 0xf0, 0x5d, 0xa1,
-0xa0, 0x1e, 0xc0, 0x40, 0x50, 0x77, 0xb6, 0x7d,
-0x6e, 0x75, 0xf3, 0x9f, 0x57, 0xc0, 0xc9, 0xc0,
-0x00, 0xac, 0xc7, 0x34, 0x04, 0xf3, 0xbf, 0x7a,
-0xd5, 0x4e, 0xce, 0xff, 0xc9, 0xd6, 0x4f, 0x3a,
-0x27, 0xff, 0xd5, 0x02, 0x25, 0x13, 0x35, 0x58,
-0xff, 0x85, 0xd9, 0x8a, 0x9a, 0xb1, 0x5c, 0xff,
-0x55, 0x3e, 0x7e, 0xb3, 0x13, 0x3f, 0x01, 0xd2,
-0x03, 0x5b, 0x20, 0x80, 0xe5, 0x1f, 0x17, 0x16,
-0xc0, 0xfd, 0x91, 0xb0, 0x3a, 0x56, 0x67, 0x16,
-0xf8, 0x13, 0x04, 0xf7, 0xa7, 0x07, 0xaa, 0x41,
-0xd6, 0x89, 0xfa, 0x49, 0xc2, 0xff, 0xca, 0xfd,
-0xa9, 0x59, 0x6e, 0xf8, 0x89, 0x82, 0xeb, 0xf3,
-0xc9, 0x03, 0x4d, 0xe1, 0x7f, 0xe5, 0xfe, 0x7f,
-0xea, 0xe7, 0x3f, 0x99, 0xfe, 0x55, 0x3c, 0xcb,
-0x0f, 0x81, 0x51, 0x95, 0xf1, 0x09, 0x82, 0xf4,
-0x3f, 0x7d, 0xff, 0xff, 0x87, 0xf5, 0x2f, 0xa9,
-0xf4, 0x3f, 0xa0, 0x73, 0xc1, 0x15, 0x5f, 0xfa,
-0xd3, 0x3e, 0xf3, 0xe7, 0xff, 0x47, 0x46, 0xf9,
-0x7c, 0xff, 0x93, 0xb7, 0xff, 0x7f, 0xe1, 0xd3,
-0x72, 0xfe, 0xfc, 0x79, 0xe3, 0xdf, 0x11, 0xfe,
-0xbf, 0x3c, 0xfe, 0x3f, 0xd9, 0xfb, 0x78, 0xd1,
-0x1e, 0x5e, 0xb4, 0x87, 0xff, 0x0b, 0xfa, 0xbf,
-0x68, 0x0f, 0xff, 0xbd, 0xcf, 0x7f, 0x36, 0xfb,
-0xf3, 0x9f, 0x6b, 0xbc, 0x51, 0x70, 0x5c, 0x5f,
-0x4c, 0x9b, 0x6b, 0xbd, 0x77, 0xce, 0x0c, 0xc3,
-0x47, 0x74, 0x2f, 0xb6, 0xad, 0x08, 0x3b, 0x19,
-0x67, 0x27, 0x3e, 0xe6, 0xe2, 0x47, 0xa5, 0x69,
-0x07, 0x4d, 0x0a, 0x6c, 0xff, 0xd8, 0xc0, 0xdb,
-0x22, 0x2d, 0xe4, 0xf9, 0x41, 0x1e, 0x16, 0xf3,
-0x4f, 0x15, 0x1f, 0x03, 0x03, 0x9b, 0x5e, 0xc6,
-0xe3, 0x04, 0xd3, 0x34, 0x24, 0x60, 0xec, 0x07,
-0x77, 0x21, 0x98, 0x1d, 0x1f, 0x73, 0xf1, 0xc3,
-0x93, 0xea, 0xc3, 0x98, 0xd6, 0x97, 0xfd, 0x41,
-0xd8, 0xab, 0xf9, 0x0f, 0x5f, 0x8e, 0xf1, 0xc6,
-0x1b, 0x72, 0xf0, 0x76, 0xa6, 0x3f, 0x80, 0x50,
-0xf1, 0x18, 0x19, 0xa1, 0x73, 0x54, 0x6f, 0x82,
-0x04, 0xd9, 0xf3, 0xcf, 0x9b, 0x28, 0xbe, 0xbf,
-0x2d, 0x98, 0x17, 0xbf, 0xca, 0xf4, 0xc7, 0xd8,
-0x02, 0x4f, 0xe9, 0xc7, 0x92, 0x2d, 0xf0, 0x3f,
-0x46, 0xc5, 0x33, 0xc2, 0x79, 0xfa, 0xbc, 0x31,
-0xc3, 0x70, 0xc7, 0x7f, 0x9e, 0x37, 0x05, 0x77,
-0x7e, 0x70, 0x5b, 0x74, 0x3f, 0x69, 0xa2, 0xde,
-0x2e, 0x93, 0x0d, 0x3e, 0x51, 0xb2, 0x5a, 0xdc,
-0xf1, 0x49, 0xf1, 0x31, 0xe9, 0x2a, 0xe8, 0x92,
-0xb7, 0x6e, 0x96, 0xbf, 0x4d, 0x70, 0xe3, 0x10,
-0x48, 0xb3, 0xd7, 0xd5, 0x95, 0x41, 0xde, 0x9b,
-0x46, 0x21, 0x36, 0xe1, 0xe2, 0x87, 0xaf, 0x80,
-0x01, 0xa8, 0xc3, 0x32, 0x52, 0x54, 0x4b, 0xd2,
-0x50, 0x3c, 0x56, 0x63, 0x67, 0x53, 0x3f, 0xe9,
-0x60, 0x4e, 0x7e, 0x50, 0xb8, 0x0c, 0xd6, 0xd0,
-0x6b, 0x56, 0x74, 0x4c, 0x62, 0x7d, 0x5c, 0xe2,
-0x9a, 0x68, 0x91, 0xc9, 0x97, 0xce, 0x8e, 0x17,
-0xb9, 0xf2, 0x83, 0x72, 0x80, 0xfe, 0x5a, 0x9d,
-0x6b, 0x78, 0x03, 0xa2, 0x17, 0x3e, 0x4a, 0x86,
-0xc6, 0x7d, 0xb2, 0x49, 0x8b, 0x32, 0xe3, 0x63,
-0x1f, 0xe5, 0xc5, 0xc7, 0xae, 0x18, 0x24, 0x7f,
-0x84, 0xeb, 0x46, 0x96, 0xfc, 0xce, 0x6a, 0x2b,
-0x71, 0xab, 0x26, 0x1e, 0x73, 0x35, 0x12, 0xcf,
-0x8d, 0x8f, 0x05, 0xa4, 0x1d, 0x70, 0x40, 0x9a,
-0xa3, 0x7b, 0xf9, 0xf9, 0x71, 0x14, 0xd2, 0x6c,
-0x23, 0x9f, 0xaf, 0x1f, 0x17, 0x3f, 0x4a, 0xc5,
-0xfe, 0x6c, 0x8d, 0x7a, 0xdc, 0xac, 0xaf, 0xb9,
-0x96, 0x6d, 0xb4, 0x39, 0x3f, 0x3c, 0x6b, 0x7f,
-0xea, 0xe2, 0x47, 0x61, 0x7e, 0x90, 0xb3, 0xbf,
-0x56, 0x90, 0xef, 0xc3, 0xf3, 0xb4, 0xc6, 0x08,
-0x8c, 0xb0, 0xf9, 0x7e, 0x37, 0x67, 0xbe, 0x99,
-0xfd, 0x60, 0x47, 0xc5, 0x7a, 0xbe, 0x1b, 0x2d,
-0xd2, 0xb0, 0xdf, 0x4b, 0x59, 0xed, 0x6e, 0xd9,
-0x4f, 0x16, 0x7f, 0x62, 0x7c, 0xec, 0x71, 0xc2,
-0x9e, 0x9f, 0x3e, 0x9e, 0x94, 0x03, 0xf0, 0x0c,
-0x6d, 0x4e, 0xca, 0x69, 0xb2, 0x3d, 0x13, 0x1f,
-0x3b, 0x6e, 0x1e, 0x1d, 0xe2, 0xe6, 0x47, 0x1d,
-0xd5, 0x90, 0x04, 0x55, 0x32, 0xcc, 0xa3, 0x13,
-0xf7, 0x95, 0x35, 0xf6, 0x64, 0xc5, 0xc7, 0xf4,
-0xbc, 0xf8, 0xd8, 0x3b, 0x66, 0x37, 0x80, 0x8d,
-0x58, 0x1f, 0x67, 0x34, 0xac, 0xe8, 0x78, 0x44,
-0xb4, 0x0f, 0x4a, 0x43, 0x6a, 0x74, 0x92, 0x77,
-0xc8, 0x71, 0xf3, 0xa3, 0xfe, 0x0a, 0x7a, 0x69,
-0x43, 0x34, 0xb0, 0xc9, 0x83, 0xf5, 0x71, 0xc1,
-0xa5, 0xf2, 0x65, 0xa2, 0x9b, 0x31, 0xa5, 0xf1,
-0x44, 0x55, 0x32, 0x93, 0x1f, 0x04, 0x89, 0x7c,
-0xbb, 0xf6, 0x2b, 0xc3, 0xf2, 0x1d, 0xd6, 0xf9,
-0x68, 0x0b, 0x13, 0x7e, 0x6c, 0x94, 0xe4, 0xc4,
-0xc7, 0x66, 0x22, 0x51, 0xdc, 0xdd, 0x1f, 0xe9,
-0x0a, 0xb2, 0x1a, 0xea, 0x23, 0x81, 0x3b, 0x78,
-0x77, 0x20, 0x1c, 0x0f, 0xed, 0x30, 0x2b, 0x13,
-0x2f, 0x02, 0x24, 0x0e, 0xc5, 0x9c, 0xfd, 0xe9,
-0xaa, 0x22, 0x9d, 0x9f, 0x86, 0xe6, 0xd5, 0x45,
-0x7e, 0x1a, 0xac, 0x30, 0x23, 0xab, 0x50, 0x6b,
-0x12, 0xe6, 0xa0, 0xd0, 0xe0, 0xae, 0x8f, 0x23,
-0xa7, 0xed, 0x68, 0xcf, 0x6f, 0xb0, 0xcd, 0x51,
-0xe4, 0xdf, 0x89, 0x8f, 0x9d, 0xd0, 0x5f, 0x85,
-0x5d, 0x7a, 0x70, 0x54, 0x6c, 0x87, 0xb3, 0x50,
-0xbd, 0xa0, 0x3e, 0x22, 0x2e, 0xcf, 0x8c, 0xff,
-0xd8, 0x2c, 0xb5, 0x7b, 0x27, 0x8b, 0x1f, 0x1e,
-0x07, 0x3c, 0x84, 0x1a, 0xf0, 0xe0, 0x36, 0x3f,
-0xc8, 0x49, 0x6c, 0x8b, 0x24, 0xcc, 0x04, 0x85,
-0xde, 0x36, 0x45, 0x7c, 0x4c, 0xbf, 0x69, 0x6c,
-0x63, 0xaf, 0xa4, 0xe1, 0x21, 0x20, 0x3d, 0xea,
-0x4e, 0x61, 0xab, 0x7e, 0x29, 0xe7, 0x87, 0x63,
-0x87, 0xcc, 0x0c, 0x3f, 0xdc, 0x95, 0x1f, 0xc4,
-0xf3, 0x6d, 0x7b, 0x05, 0xde, 0x54, 0x61, 0xb9,
-0xf7, 0x71, 0xf0, 0xdf, 0x01, 0x66, 0xa3, 0xec,
-0x99, 0xd9, 0xf1, 0x46, 0x57, 0x7c, 0x6c, 0x18,
-0x86, 0xf4, 0xa6, 0x68, 0xf0, 0x21, 0xd1, 0xac,
-0x8f, 0xbb, 0x69, 0x93, 0xeb, 0xf9, 0xe5, 0x3d,
-0xb9, 0xf1, 0xb1, 0xf7, 0xb0, 0x3f, 0x12, 0x84,
-0x6f, 0xf3, 0x25, 0x94, 0x6d, 0xea, 0x49, 0x2d,
-0x1c, 0xed, 0x9e, 0x2a, 0x7e, 0x98, 0x9d, 0x1f,
-0x1c, 0xe1, 0x24, 0xb4, 0x05, 0x49, 0x12, 0x67,
-0xda, 0x6e, 0xef, 0x69, 0x4b, 0xe6, 0xe8, 0xbf,
-0xab, 0xdb, 0x15, 0x1f, 0x5b, 0x3d, 0x57, 0x5e,
-0x47, 0x1b, 0x13, 0xf2, 0x78, 0xd9, 0x5c, 0x69,
-0x8d, 0x50, 0x9d, 0xfc, 0xec, 0x5d, 0x24, 0xa0,
-0x22, 0x63, 0xaa, 0xcf, 0x6c, 0x94, 0x84, 0xad,
-0x23, 0xb3, 0xce, 0x87, 0xf5, 0x41, 0x37, 0x6d,
-0x18, 0x96, 0x07, 0x63, 0x1d, 0x68, 0xa8, 0x7b,
-0x2e, 0xf3, 0xbb, 0xed, 0x4f, 0x12, 0x89, 0x1c,
-0x81, 0xc2, 0x0c, 0x3f, 0xaa, 0x1a, 0xae, 0x80,
-0xb5, 0x3a, 0xf6, 0x47, 0x8a, 0x5d, 0xc6, 0xfb,
-0x7b, 0xdc, 0x90, 0x26, 0x55, 0xc2, 0xd3, 0x50,
-0x6c, 0xbe, 0xbf, 0x4f, 0x61, 0xe8, 0x29, 0x5a,
-0x98, 0xe1, 0x47, 0x05, 0xe2, 0x61, 0xde, 0x0d,
-0xc0, 0x3b, 0xa9, 0x3c, 0xa2, 0xbe, 0x44, 0xaf,
-0x4d, 0x96, 0x2c, 0x6d, 0xfb, 0xbe, 0xf0, 0xc7,
-0x1e, 0x8b, 0x31, 0x75, 0x82, 0x5e, 0x8b, 0xad,
-0x03, 0x32, 0xfc, 0x28, 0x4f, 0x15, 0xf2, 0x85,
-0xe6, 0x83, 0x0f, 0xdb, 0xd4, 0xe3, 0xdb, 0xb7,
-0x38, 0x99, 0x09, 0xfb, 0xf0, 0x46, 0x40, 0xd8,
-0x4a, 0x31, 0x93, 0x1f, 0x6c, 0x5d, 0x8d, 0x6c,
-0xab, 0xe6, 0x80, 0x6f, 0x5c, 0xac, 0x83, 0x0f,
-0x13, 0xb0, 0xc3, 0xfb, 0x2e, 0x3f, 0x28, 0xad,
-0x25, 0xad, 0x60, 0xa0, 0xec, 0x0c, 0xfa, 0xaf,
-0x23, 0xee, 0xf8, 0x58, 0x69, 0x0a, 0x69, 0x09,
-0xa0, 0x74, 0x15, 0x7e, 0xc1, 0x78, 0x92, 0xce,
-0xde, 0x1e, 0xa8, 0x41, 0x43, 0xa4, 0x9a, 0xc4,
-0x27, 0xfd, 0x29, 0x95, 0xd7, 0xa7, 0xb8, 0xf3,
-0x83, 0x09, 0xec, 0x67, 0x3b, 0xa2, 0x44, 0x3c,
-0x95, 0xf0, 0x94, 0x56, 0xb3, 0x5e, 0x4e, 0xfb,
-0x6d, 0x7b, 0xe5, 0xe7, 0xfd, 0x91, 0x70, 0xfc,
-0xb0, 0x63, 0x7f, 0xa2, 0x15, 0x18, 0x0d, 0xab,
-0x05, 0xa5, 0x84, 0x99, 0x8a, 0x01, 0x5a, 0x0b,
-0x95, 0xdc, 0x10, 0xd9, 0x0c, 0xb4, 0x9d, 0xe6,
-0xd1, 0x18, 0x6f, 0x64, 0xf2, 0x83, 0x15, 0x14,
-0xf3, 0x0b, 0x43, 0x8b, 0x1e, 0x2a, 0x0a, 0xc0,
-0x71, 0xb9, 0x69, 0xa7, 0xbc, 0x43, 0x59, 0x89,
-0xb4, 0x1f, 0x6e, 0x3f, 0xa5, 0x49, 0xe4, 0x3f,
-0x53, 0x71, 0xc4, 0xf5, 0x3c, 0x3f, 0xc2, 0xf7,
-0x4b, 0xf5, 0x6d, 0x2b, 0x67, 0x66, 0x4a, 0x7f,
-0x6e, 0xd0, 0xf7, 0x63, 0x77, 0xfc, 0x70, 0xd2,
-0xd4, 0x8f, 0x9b, 0x1f, 0xf5, 0x2c, 0x7b, 0xbf,
-0x9a, 0xd3, 0xde, 0x09, 0x71, 0x12, 0xce, 0xd1,
-0xeb, 0xf0, 0xb4, 0xee, 0xf9, 0x19, 0x7f, 0x77,
-0x26, 0xc9, 0x84, 0x03, 0x62, 0x86, 0xcf, 0x3c,
-0x24, 0xd5, 0x63, 0x13, 0x95, 0xd9, 0xf2, 0xb6,
-0xd8, 0x38, 0x3c, 0x13, 0x49, 0xa6, 0x8b, 0x35,
-0xd1, 0x66, 0x4c, 0x95, 0x1d, 0x83, 0xc1, 0x5b,
-0x98, 0x50, 0x1b, 0xcb, 0xd8, 0x1f, 0x5a, 0xa0,
-0x69, 0x7d, 0x18, 0x5f, 0xdd, 0xe8, 0x67, 0xe3,
-0xf5, 0x99, 0x29, 0xf9, 0x31, 0xb7, 0xbf, 0xc3,
-0x7a, 0x2e, 0x5e, 0xc1, 0x6a, 0xaf, 0x07, 0x59,
-0xc2, 0xea, 0x7e, 0x3f, 0xa2, 0xd8, 0x91, 0xae,
-0x81, 0x4a, 0xff, 0xc6, 0xa2, 0x24, 0xb1, 0x19,
-0xc2, 0xad, 0x07, 0x21, 0x25, 0xf1, 0xa3, 0x55,
-0x32, 0xf6, 0x07, 0x8a, 0xa3, 0x48, 0x7b, 0xc0,
-0xb6, 0x00, 0x98, 0xad, 0x98, 0x73, 0x64, 0xf1,
-0x3f, 0x67, 0x0a, 0xb1, 0x1d, 0xfd, 0xb8, 0xfb,
-0x43, 0x9a, 0xa7, 0x81, 0x34, 0xee, 0xeb, 0x9e,
-0xd4, 0xcf, 0x69, 0x2d, 0x23, 0x7f, 0x79, 0x97,
-0xdb, 0xbf, 0x9f, 0xc9, 0xe5, 0x87, 0xef, 0x13,
-0xce, 0x49, 0xe7, 0x63, 0x6c, 0x91, 0xac, 0xaa,
-0x09, 0xc3, 0xe9, 0x8d, 0xcd, 0xe9, 0x69, 0x7f,
-0xa8, 0xf9, 0x40, 0xcd, 0x89, 0xaf, 0xb6, 0x65,
-0xf2, 0x83, 0x86, 0x6c, 0x83, 0x9c, 0xc2, 0x06,
-0x86, 0x4f, 0xea, 0xd2, 0x25, 0xf7, 0xb0, 0xd7,
-0xaa, 0x0f, 0x2e, 0x94, 0x1f, 0x1c, 0x81, 0xf5,
-0xd2, 0x2e, 0xde, 0x6d, 0x03, 0xfd, 0xbb, 0xa6,
-0x19, 0x4a, 0x13, 0xf3, 0x56, 0x8f, 0xe6, 0xe2,
-0x9f, 0x4c, 0x7e, 0x50, 0x72, 0xf8, 0xe1, 0x41,
-0xce, 0x37, 0xf3, 0xa4, 0xc8, 0xfb, 0xf0, 0xc3,
-0x6c, 0xfc, 0x73, 0x5b, 0x26, 0x3f, 0x58, 0xed,
-0x9c, 0xcf, 0x45, 0x9c, 0xb2, 0xac, 0x77, 0xb3,
-0xf8, 0x75, 0x28, 0x8c, 0x66, 0xf2, 0x83, 0xa5,
-0xcf, 0xc2, 0x79, 0xc9, 0x62, 0x43, 0xa1, 0x5a,
-0x6e, 0x9d, 0xa8, 0x39, 0x6d, 0x76, 0x04, 0xb2,
-0xae, 0xb0, 0xaf, 0x6a, 0xb2, 0xf3, 0x83, 0x66,
-0x7f, 0x24, 0xa4, 0x45, 0x15, 0xf2, 0xfb, 0x6b,
-0x2e, 0xff, 0x2e, 0x9b, 0x8d, 0x3b, 0x1c, 0xfb,
-0x73, 0x84, 0xf3, 0xe5, 0x4a, 0x0c, 0x65, 0x2e,
-0x5f, 0x06, 0x73, 0x86, 0x94, 0x09, 0x22, 0xc3,
-0xde, 0x64, 0x36, 0x7e, 0x3b, 0xee, 0xfc, 0xbc,
-0x23, 0x19, 0xbe, 0xdc, 0x62, 0x9b, 0xd8, 0xdc,
-0xa1, 0x36, 0x3b, 0xfa, 0x51, 0x73, 0xf2, 0x83,
-0x13, 0x2a, 0x43, 0x3b, 0x5d, 0xf5, 0xc8, 0x86,
-0x42, 0xd8, 0xc3, 0xd9, 0x50, 0x5f, 0xa0, 0xb9,
-0xf8, 0xe7, 0x9c, 0x93, 0x1f, 0x5c, 0x51, 0x69,
-0xf2, 0xc3, 0x97, 0x34, 0x29, 0x8b, 0x19, 0x3e,
-0x09, 0xa1, 0xb0, 0x90, 0x7e, 0x02, 0xfe, 0xa9,
-0x30, 0xf9, 0xe1, 0xd3, 0x26, 0xac, 0x78, 0xb5,
-0x6f, 0x42, 0x19, 0x74, 0xf1, 0xc3, 0xd5, 0xbc,
-0xfc, 0xa0, 0x83, 0x76, 0x56, 0x0a, 0xfc, 0x7c,
-0x96, 0x5d, 0x4a, 0x50, 0xce, 0xc5, 0x3f, 0xae,
-0xfc, 0x60, 0xd1, 0x66, 0x37, 0xda, 0xa9, 0x36,
-0xfa, 0xbe, 0x4a, 0x2a, 0xff, 0x9d, 0xfc, 0x60,
-0x66, 0x76, 0x5d, 0xd5, 0x58, 0x0d, 0x77, 0x59,
-0x1e, 0xde, 0x73, 0xf1, 0xa3, 0x24, 0x2c, 0x2a,
-0xe4, 0x41, 0x78, 0xa6, 0x3d, 0x01, 0xf5, 0x59,
-0x56, 0x3f, 0x05, 0xfe, 0xb1, 0xc7, 0x9b, 0xfc,
-0xa8, 0x30, 0x92, 0x46, 0xc6, 0xed, 0xb2, 0xb8,
-0xb9, 0x59, 0xf9, 0xc1, 0xae, 0x2b, 0x73, 0xf8,
-0x51, 0x82, 0xed, 0x7d, 0x24, 0x8b, 0x1f, 0x9e,
-0xd6, 0x1c, 0x7f, 0x34, 0x78, 0x41, 0x7e, 0x94,
-0xe9, 0xdd, 0x9a, 0x98, 0xf7, 0x2c, 0xdf, 0x26,
-0xff, 0xdc, 0x70, 0xae, 0xe4, 0xf1, 0xa3, 0x2c,
-0xbe, 0xd3, 0x03, 0xb1, 0x31, 0x69, 0x8f, 0x60,
-0xd2, 0x72, 0xd4, 0x5e, 0x3d, 0x9c, 0x61, 0x80,
-0xe7, 0xe4, 0x07, 0x6b, 0x33, 0xe8, 0x68, 0x27,
-0xba, 0x69, 0x95, 0x6c, 0x83, 0x87, 0x1d, 0xfc,
-0x63, 0xf3, 0xa3, 0xec, 0x8f, 0x56, 0x61, 0xf2,
-0xc3, 0x8b, 0x4c, 0x5a, 0x94, 0xa6, 0x5f, 0x5e,
-0x81, 0x6d, 0xb1, 0x17, 0x78, 0x6d, 0xfc, 0x93,
-0xc3, 0x8f, 0x5a, 0x75, 0x05, 0xe7, 0x47, 0x09,
-0xbf, 0xa2, 0xad, 0x69, 0x98, 0x60, 0x50, 0x7d,
-0x09, 0x53, 0x15, 0xbc, 0x91, 0xf1, 0xbf, 0x26,
-0x3f, 0xca, 0x59, 0x3f, 0x9c, 0x1f, 0x25, 0x85,
-0xf9, 0x31, 0x1f, 0x12, 0x4e, 0x7c, 0xc9, 0x26,
-0x6c, 0x14, 0xc9, 0x1b, 0x63, 0x4e, 0x85, 0x7f,
-0x4c, 0x7e, 0x14, 0x07, 0x39, 0x56, 0x7d, 0xfd,
-0xc6, 0xee, 0xe5, 0x70, 0xd6, 0x22, 0x4e, 0xc3,
-0x59, 0xb3, 0x83, 0xa2, 0x8b, 0x1f, 0x25, 0xa7,
-0xf9, 0x79, 0xb5, 0xdc, 0xa8, 0x0e, 0x4a, 0x26,
-0x2d, 0x8a, 0xab, 0xdd, 0xca, 0x0f, 0xe2, 0x15,
-0x7f, 0x76, 0x7e, 0xd0, 0x02, 0x39, 0x92, 0x3c,
-0x4b, 0xd6, 0x74, 0x8f, 0xba, 0xb5, 0x5d, 0xdb,
-0x29, 0x3b, 0x78, 0xaf, 0x96, 0x09, 0x33, 0x33,
-0xf9, 0xc1, 0x7e, 0x69, 0x1b, 0x3f, 0x6f, 0x57,
-0x71, 0x9d, 0x0f, 0x62, 0x6a, 0xd8, 0xca, 0x0f,
-0xe6, 0xf0, 0xa3, 0x92, 0x60, 0xff, 0xbe, 0x7f,
-0x6d, 0x9e, 0x0f, 0x72, 0x6b, 0x42, 0xc1, 0xf3,
-0xa3, 0x9d, 0xdf, 0x77, 0x0e, 0x12, 0xc5, 0x5d,
-0xf9, 0x41, 0xb6, 0x1e, 0xcc, 0xb6, 0x09, 0x8a,
-0xa3, 0x8d, 0xdf, 0xe6, 0xe9, 0xe7, 0x94, 0x73,
-0x3e, 0xac, 0xac, 0x26, 0xa5, 0x55, 0x12, 0x6a,
-0x7b, 0x6d, 0x5a, 0x5a, 0x25, 0x34, 0x99, 0xf5,
-0x89, 0x93, 0x52, 0x76, 0x7e, 0x36, 0x73, 0x3e,
-0xac, 0xc5, 0x8f, 0xa2, 0x4a, 0x74, 0x1a, 0x66,
-0x03, 0x79, 0x7f, 0xc8, 0x00, 0x9c, 0x33, 0xee,
-0x33, 0xf3, 0x83, 0x4f, 0xd1, 0x06, 0xec, 0x80,
-0xea, 0xe2, 0x47, 0x49, 0xa6, 0xf7, 0x79, 0xa5,
-0x9e, 0xbd, 0x1d, 0x7b, 0x99, 0xfd, 0x59, 0x94,
-0x2a, 0xf3, 0x7a, 0x77, 0x15, 0xdb, 0xef, 0x0b,
-0xe5, 0xc2, 0x3a, 0x87, 0xff, 0x03, 0xea, 0x9d,
-0x05, 0x58, 0xdf, 0xca, 0xde, 0xd6, 0xcd, 0x98,
-0x38, 0x33, 0xfe, 0xe2, 0x5e, 0x52, 0x45, 0x7f,
-0xa0, 0x5f, 0x63, 0xbd, 0xbf, 0x3a, 0x7f, 0x91,
-0xe3, 0xf6, 0xed, 0x41, 0xee, 0xff, 0x22, 0x4f,
-0x02, 0xf2, 0xb7, 0xf5, 0x7c, 0x62, 0x56, 0xda,
-0x77, 0xfd, 0xd5, 0x33, 0x92, 0x78, 0x9e, 0xb5,
-0xd3, 0x28, 0x92, 0x09, 0xeb, 0x9c, 0xfc, 0xa0,
-0xc7, 0xea, 0x17, 0xb4, 0x21, 0x55, 0x73, 0xac,
-0xe2, 0xb4, 0xf6, 0x1c, 0xb3, 0x27, 0x7f, 0xf9,
-0xbe, 0x7e, 0xca, 0x6d, 0x4f, 0x4a, 0x90, 0x1f,
-0x6e, 0x3f, 0x4f, 0xb4, 0xe2, 0x39, 0xe0, 0x6c,
-0x96, 0x93, 0x35, 0x3f, 0x86, 0x5f, 0xc5, 0x9b,
-0xd3, 0x4b, 0x06, 0x6b, 0x1a, 0xe4, 0x73, 0x3d,
-0xcd, 0x63, 0xdc, 0x7f, 0x9d, 0xb5, 0xf2, 0x83,
-0x8e, 0xff, 0x7a, 0x02, 0x36, 0x33, 0x23, 0x50,
-0x3f, 0x5c, 0x72, 0x8f, 0x88, 0xfb, 0xa9, 0x6a,
-0xa3, 0xe4, 0x14, 0x99, 0x61, 0xac, 0x67, 0x1b,
-0x31, 0x9b, 0x1f, 0x8e, 0x27, 0x86, 0xe4, 0xf5,
-0x07, 0x60, 0xe8, 0xa8, 0xd5, 0xb4, 0x57, 0x0a,
-0x9b, 0x6f, 0x7c, 0x1b, 0x54, 0x0f, 0xf1, 0xf9,
-0xee, 0x36, 0x0d, 0xd7, 0x58, 0xd4, 0x7e, 0x1e,
-0x8b, 0x1f, 0x65, 0x5b, 0x1b, 0x6d, 0xc8, 0x83,
-0x07, 0x63, 0xc5, 0x9d, 0x7a, 0x67, 0x9e, 0x1f,
-0x9c, 0xe9, 0xc2, 0x3f, 0xd3, 0x8f, 0x55, 0xec,
-0xb5, 0x67, 0x77, 0x1e, 0xed, 0xe7, 0x84, 0x72,
-0x63, 0xcf, 0xef, 0xdc, 0xf5, 0xc5, 0x57, 0xa6,
-0xa6, 0x1d, 0xe8, 0xb1, 0xef, 0x9f, 0x14, 0x76,
-0x58, 0x4a, 0x68, 0xcb, 0x6c, 0x33, 0x7b, 0x7e,
-0x97, 0xa3, 0x9f, 0x4c, 0xbe, 0xb2, 0x5a, 0xb5,
-0xea, 0x7d, 0x26, 0x85, 0x33, 0xd2, 0x79, 0xf8,
-0xaa, 0xb1, 0x04, 0xf9, 0x30, 0x6f, 0xd9, 0x07,
-0x85, 0x58, 0x7c, 0xa1, 0xb4, 0xe3, 0x1f, 0xb7,
-0x48, 0x2b, 0x79, 0x7d, 0xba, 0xf2, 0x5c, 0xab,
-0xd9, 0x78, 0xa7, 0x2f, 0x05, 0x07, 0xd5, 0x27,
-0xa8, 0xd5, 0xb8, 0xd2, 0x8e, 0x3f, 0x38, 0xbf,
-0x2f, 0x2d, 0x58, 0x69, 0x9e, 0x0f, 0xbb, 0x93,
-0x1c, 0x93, 0x76, 0x71, 0x1a, 0x33, 0x1c, 0x83,
-0x7e, 0x6a, 0xf1, 0xc9, 0xf7, 0xe0, 0x51, 0x6b,
-0x29, 0x92, 0x14, 0x6c, 0xff, 0x25, 0xab, 0xa6,
-0xbf, 0xbb, 0x9c, 0xeb, 0x47, 0x4b, 0x22, 0x1e,
-0x38, 0x16, 0x4f, 0xba, 0xf4, 0x63, 0x88, 0x21,
-0xb2, 0x2f, 0xc3, 0x8f, 0xaa, 0x5c, 0x09, 0xa7,
-0xdb, 0xb9, 0x7f, 0xc7, 0x7a, 0x25, 0x3f, 0x7b,
-0xda, 0xb6, 0x37, 0x4f, 0x1c, 0x21, 0x4d, 0xe6,
-0x95, 0x49, 0x73, 0xe2, 0x49, 0xe2, 0xe0, 0x9f,
-0x07, 0xce, 0x08, 0x9c, 0x1f, 0x3e, 0x8a, 0xfc,
-0x96, 0x52, 0x26, 0x9c, 0x68, 0x3b, 0x43, 0xcf,
-0x5c, 0x30, 0x3f, 0xc8, 0xfb, 0x23, 0xc9, 0xcd,
-0xc3, 0x0c, 0x9f, 0x37, 0x70, 0xb4, 0x53, 0x6c,
-0xc2, 0x9e, 0xeb, 0xd8, 0x8a, 0x6a, 0x9b, 0x22,
-0xfe, 0x63, 0xf4, 0x7f, 0x20, 0x3f, 0x17, 0x9d,
-0x33, 0xcc, 0xcf, 0x47, 0xdb, 0x6b, 0xb6, 0x45,
-0x42, 0xd8, 0x33, 0x33, 0xad, 0x0c, 0x4c, 0x89,
-0x7f, 0x0a, 0xd8, 0xa4, 0x64, 0xbf, 0x2e, 0xa7,
-0x42, 0x5e, 0xde, 0xa6, 0xb8, 0xc8, 0x71, 0x43,
-0x4d, 0x53, 0xc6, 0x7f, 0x18, 0xfe, 0x79, 0x86,
-0x99, 0xf1, 0x4a, 0xeb, 0xbc, 0xdd, 0x21, 0xd9,
-0x05, 0x1b, 0xa6, 0x88, 0xff, 0x2c, 0x98, 0x7e,
-0x4c, 0x9d, 0xe8, 0x6a, 0xf2, 0x07, 0x43, 0x08,
-0x0b, 0x0b, 0xef, 0xc3, 0xfa, 0x38, 0x07, 0x11,
-0x1d, 0xb3, 0x81, 0xf4, 0xa8, 0x63, 0x7f, 0x52,
-0xc2, 0xb3, 0x30, 0x99, 0x08, 0x2f, 0xf7, 0x4d,
-0x74, 0x9b, 0xda, 0x68, 0x9c, 0xc8, 0xeb, 0x0f,
-0xe0, 0x8e, 0xff, 0x8c, 0xaa, 0xc8, 0x46, 0x1b,
-0x18, 0x95, 0xa7, 0xa2, 0x45, 0x31, 0x41, 0xcd,
-0xe3, 0x47, 0x05, 0x61, 0x30, 0x91, 0x34, 0xe2,
-0xe6, 0xf9, 0x32, 0xc1, 0xac, 0xc7, 0xce, 0x3c,
-0xbf, 0x8b, 0x1f, 0xbe, 0x98, 0x19, 0xe1, 0xa4,
-0x5e, 0x34, 0x3b, 0xa3, 0x0d, 0xb7, 0x20, 0x73,
-0x60, 0x7c, 0xca, 0x85, 0x7f, 0xbe, 0x08, 0x4f,
-0xf6, 0x57, 0xaf, 0xfc, 0x1b, 0x66, 0x4f, 0xf4,
-0x0c, 0x0c, 0x48, 0x66, 0xe1, 0x01, 0x2d, 0x13,
-0xff, 0x59, 0x21, 0x2f, 0x86, 0x0f, 0xd5, 0xd4,
-0xe2, 0xfa, 0x59, 0xe2, 0x21, 0xde, 0x28, 0xc0,
-0x77, 0x83, 0x78, 0x08, 0x3e, 0x4a, 0x66, 0xe1,
-0x1f, 0xc1, 0x85, 0x7f, 0xa6, 0x3f, 0x0b, 0x67,
-0x13, 0x2d, 0x8b, 0x6f, 0xb5, 0xd9, 0xf2, 0xca,
-0x04, 0x9f, 0xe6, 0x05, 0xf9, 0x51, 0xc8, 0xcf,
-0xf7, 0x36, 0x61, 0x37, 0xc8, 0x43, 0x79, 0xb4,
-0xb4, 0x29, 0xe2, 0x3f, 0xe3, 0x95, 0x9b, 0xf9,
-0xe9, 0x42, 0x72, 0x27, 0xb9, 0x33, 0x97, 0x96,
-0x60, 0x09, 0x7d, 0xee, 0xf8, 0x0f, 0xc7, 0x3f,
-0x46, 0x75, 0x5a, 0x5e, 0x55, 0xf8, 0x96, 0x15,
-0xf6, 0x99, 0xf9, 0x56, 0x1e, 0xfe, 0x49, 0x67,
-0xe3, 0x1f, 0x43, 0x9b, 0x90, 0x11, 0x4f, 0x76,
-0xe7, 0xeb, 0x73, 0x2a, 0x7e, 0xd4, 0xb9, 0x9e,
-0x5d, 0xdb, 0x83, 0x88, 0x76, 0xde, 0xc8, 0xa6,
-0x45, 0x91, 0x29, 0xf9, 0x51, 0x49, 0x98, 0x90,
-0xc3, 0x64, 0x09, 0x15, 0xf2, 0x69, 0x42, 0x53,
-0xf2, 0xa3, 0xd0, 0x3f, 0xa6, 0xf0, 0x90, 0x08,
-0xdb, 0xbb, 0x95, 0xbb, 0xf7, 0xfb, 0x74, 0x4e,
-0x2e, 0xfe, 0x59, 0x0e, 0x7b, 0x0c, 0x3f, 0xd6,
-0xdb, 0x8e, 0x41, 0x2e, 0xcd, 0x89, 0x21, 0x1c,
-0x3a, 0x05, 0xfe, 0xd9, 0xab, 0xf9, 0xdb, 0xe5,
-0x8d, 0x53, 0x8e, 0xdf, 0xa3, 0xce, 0xcc, 0xe6,
-0x87, 0x6b, 0x77, 0x60, 0x13, 0xec, 0xe4, 0xe7,
-0x64, 0x17, 0x3b, 0x68, 0xd8, 0x6e, 0x0b, 0xe0,
-0xe0, 0x9f, 0x0c, 0x3f, 0x61, 0x15, 0xdb, 0x7f,
-0x9d, 0x62, 0xb3, 0x09, 0x4e, 0x35, 0x4d, 0x27,
-0xfe, 0xe3, 0xea, 0x0f, 0xc9, 0xf0, 0xcf, 0xbf,
-0xe8, 0x2d, 0xa3, 0x8d, 0xa3, 0xd6, 0x34, 0x97,
-0x4c, 0x15, 0xdf, 0xc8, 0xa9, 0x8f, 0x4b, 0x36,
-0xaf, 0xf2, 0x46, 0xc4, 0xd9, 0x80, 0x6d, 0x91,
-0xae, 0x74, 0x0d, 0xdb, 0x66, 0x37, 0x0a, 0x78,
-0xc9, 0xc5, 0x8f, 0x62, 0x20, 0x67, 0xfb, 0xd6,
-0xeb, 0x65, 0x4a, 0x92, 0x24, 0x43, 0x8b, 0x12,
-0x78, 0xc7, 0x24, 0x1b, 0xff, 0xe4, 0xf0, 0xa3,
-0xd8, 0x7c, 0xb1, 0xe9, 0xa5, 0x94, 0x47, 0x8b,
-0xea, 0xe1, 0xf3, 0xed, 0xcb, 0x8a, 0xff, 0x70,
-0x7e, 0xbe, 0xd6, 0x2e, 0x63, 0x35, 0x5c, 0x2f,
-0x34, 0x2c, 0x58, 0x94, 0xad, 0x4f, 0xb2, 0x35,
-0x37, 0xfe, 0xc3, 0x61, 0xed, 0x3d, 0x8b, 0x13,
-0x6d, 0xb5, 0x9c, 0x16, 0xa5, 0x64, 0x3d, 0xff,
-0x49, 0x86, 0x97, 0xf2, 0xf9, 0x51, 0xcc, 0x82,
-0x5a, 0xc7, 0xa2, 0x85, 0x5d, 0x6d, 0x10, 0x9c,
-0x7e, 0x11, 0xb9, 0xfc, 0x28, 0x06, 0x32, 0xd5,
-0x60, 0x2c, 0x3b, 0xec, 0x66, 0x0b, 0x02, 0xf6,
-0xc3, 0xc9, 0xa9, 0x8f, 0x7b, 0x8e, 0xfa, 0x69,
-0x20, 0xca, 0xb6, 0x5d, 0x76, 0xa1, 0x9c, 0x64,
-0x0b, 0xf0, 0x94, 0xce, 0x05, 0x77, 0xfc, 0x67,
-0x31, 0xec, 0xd5, 0x35, 0x23, 0x30, 0x77, 0x8a,
-0x30, 0xe9, 0x41, 0x86, 0x77, 0x83, 0x26, 0x3f,
-0xdc, 0xfe, 0x7d, 0xa9, 0x7a, 0x27, 0x3c, 0xaf,
-0x57, 0x63, 0xfc, 0x27, 0x13, 0xb6, 0x35, 0xdb,
-0x7a, 0x74, 0x32, 0x84, 0x60, 0x15, 0xce, 0x67,
-0xe2, 0x3f, 0xf1, 0xf8, 0x17, 0xe1, 0x63, 0x3c,
-0x04, 0x76, 0x95, 0xf2, 0xc5, 0x4c, 0xa1, 0x1c,
-0x0a, 0x1b, 0xcc, 0xf8, 0x0f, 0xbf, 0x92, 0xd5,
-0x1f, 0x52, 0xbd, 0x07, 0x9e, 0x8b, 0x34, 0xa6,
-0xf2, 0xc2, 0xc8, 0x3b, 0xed, 0xf8, 0x8f, 0x9b,
-0x1f, 0x4e, 0x7a, 0x90, 0x1f, 0xde, 0x3c, 0xe1,
-0x1d, 0xe7, 0x6e, 0x2b, 0xcc, 0x61, 0x8f, 0xce,
-0x77, 0xf4, 0x93, 0x62, 0x58, 0x3a, 0x67, 0xfa,
-0x2f, 0x57, 0x7d, 0x1c, 0xb3, 0x3f, 0x4f, 0xa2,
-0xfd, 0x89, 0x9a, 0xd6, 0x26, 0xcd, 0x66, 0x77,
-0x88, 0xee, 0x4a, 0xb2, 0xc7, 0xfe, 0x90, 0x54,
-0xa9, 0x16, 0x9e, 0xc9, 0xc6, 0x3f, 0x3b, 0xd5,
-0xea, 0xa8, 0x3d, 0x7e, 0x04, 0xe7, 0xab, 0x3f,
-0x1d, 0xaa, 0x37, 0xf9, 0xf0, 0xbb, 0xf3, 0xea,
-0xe3, 0x98, 0xfd, 0x19, 0x00, 0xb6, 0xde, 0xb4,
-0x2c, 0xb3, 0x23, 0x7a, 0x87, 0x98, 0xd9, 0xb7,
-0x8e, 0xc6, 0x08, 0x65, 0xd5, 0xc7, 0x1d, 0x53,
-0x3f, 0xd2, 0x9b, 0x22, 0xcc, 0x7f, 0x99, 0x8d,
-0x56, 0xac, 0xf9, 0xce, 0x40, 0x33, 0x1b, 0xe4,
-0xfe, 0x9d, 0x01, 0x0f, 0x57, 0x3c, 0x0a, 0xf1,
-0x4f, 0x34, 0xdc, 0xe1, 0xf4, 0x47, 0xb2, 0xc6,
-0xdf, 0x67, 0xc5, 0x7f, 0x74, 0xab, 0xc3, 0x92,
-0x7d, 0x7f, 0xc4, 0x3f, 0x67, 0x81, 0xa1, 0xc1,
-0x09, 0x2b, 0xec, 0xc3, 0xcf, 0x3b, 0x38, 0x2f,
-0x70, 0x33, 0x3e, 0x1f, 0x2c, 0x60, 0x90, 0xa9,
-0x8f, 0x63, 0xf8, 0x87, 0x6d, 0x9a, 0xb6, 0xa6,
-0x95, 0xdd, 0x84, 0x37, 0xfa, 0x33, 0x5c, 0xfe,
-0xd7, 0x13, 0xc4, 0xf3, 0xb9, 0x4c, 0xbe, 0x53,
-0x56, 0x7d, 0x1c, 0xf3, 0xef, 0xca, 0x1a, 0x62,
-0x35, 0x96, 0x4c, 0xb5, 0x1e, 0xcb, 0x44, 0x30,
-0x06, 0xa3, 0xb9, 0xfc, 0x28, 0xb6, 0xdf, 0xdf,
-0xc3, 0x8d, 0x8c, 0xc7, 0xdb, 0xfe, 0x20, 0x12,
-0xcb, 0x99, 0x7e, 0xd6, 0xef, 0xd2, 0x82, 0x66,
-0x84, 0xc4, 0xd2, 0x4f, 0x76, 0x7f, 0xc8, 0x93,
-0x30, 0x0b, 0xd9, 0xe0, 0x3c, 0xec, 0x73, 0xe0,
-0xd6, 0x27, 0xc5, 0xf7, 0x75, 0xab, 0x62, 0x2e,
-0x68, 0xe3, 0x9f, 0x4c, 0x7d, 0xdc, 0x96, 0x2b,
-0x32, 0xd1, 0x1e, 0xb3, 0x2d, 0xd2, 0x71, 0xf1,
-0x98, 0x7e, 0x7a, 0x85, 0x3b, 0xfe, 0x33, 0xe1,
-0xee, 0x0f, 0xc0, 0xf0, 0xcf, 0x19, 0xd8, 0x15,
-0x65, 0x78, 0xe9, 0x3e, 0x38, 0x1d, 0x6b, 0x4e,
-0x17, 0x0f, 0x8b, 0x61, 0x3c, 0x16, 0xdc, 0x1d,
-0xff, 0x99, 0xe6, 0xce, 0x7f, 0xfd, 0x58, 0x45,
-0xfb, 0xac, 0x7c, 0x9b, 0xe3, 0x1f, 0x7f, 0x5a,
-0xde, 0xc6, 0x84, 0x75, 0x39, 0xf1, 0x1f, 0x57,
-0x7f, 0x6c, 0xe9, 0x20, 0x53, 0x1a, 0x33, 0x32,
-0x66, 0xda, 0x6b, 0x85, 0x51, 0x34, 0x87, 0xed,
-0x47, 0xa8, 0x83, 0x00, 0xcd, 0xf9, 0xba, 0xfa,
-0x63, 0x97, 0xee, 0x80, 0x3d, 0x68, 0xe4, 0xe3,
-0xbc, 0xad, 0x50, 0x1d, 0xc3, 0x57, 0x03, 0x41,
-0xe8, 0xd5, 0x2f, 0x84, 0x7f, 0x34, 0xec, 0x8f,
-0x44, 0x07, 0xa2, 0xbe, 0x4a, 0xab, 0x2c, 0xab,
-0x78, 0xbb, 0xd8, 0x18, 0x3b, 0xa0, 0x67, 0xfb,
-0xdf, 0x51, 0xc7, 0x3e, 0x60, 0x7f, 0x00, 0xe6,
-0xd6, 0x6f, 0xf2, 0x19, 0xe2, 0x19, 0xf5, 0xbc,
-0x74, 0x9d, 0xb1, 0x21, 0x29, 0x9e, 0x87, 0xf3,
-0x46, 0xb6, 0x7f, 0x9f, 0xcc, 0x89, 0xff, 0x34,
-0xad, 0xf0, 0xf5, 0x30, 0x6d, 0xbf, 0xa2, 0x86,
-0x47, 0x7c, 0x4f, 0x62, 0xa3, 0x86, 0xc8, 0x85,
-0xf9, 0xe1, 0x41, 0xb6, 0x69, 0xf2, 0x47, 0xfa,
-0x92, 0xe2, 0xdd, 0xb5, 0xff, 0x3a, 0xea, 0x35,
-0x94, 0xc1, 0xa6, 0x12, 0xad, 0x6f, 0xdf, 0x85,
-0xe2, 0x3f, 0x46, 0xc1, 0x62, 0x48, 0xc5, 0x70,
-0x1b, 0x1e, 0xf3, 0x32, 0x7f, 0xed, 0x3d, 0xc1,
-0xb4, 0xe7, 0xe5, 0xfa, 0xb9, 0x00, 0x3f, 0x5c,
-0x98, 0x21, 0x3c, 0x69, 0x2c, 0x5b, 0xde, 0xb7,
-0x82, 0x7c, 0x91, 0x7e, 0x17, 0x61, 0xcf, 0x3f,
-0x90, 0x30, 0x5d, 0x63, 0xd8, 0x78, 0x20, 0xc6,
-0x85, 0x23, 0xba, 0xbd, 0xde, 0x56, 0xc8, 0x5e,
-0xe6, 0xaf, 0x43, 0xfa, 0x12, 0x98, 0x56, 0x42,
-0x5f, 0x48, 0x72, 0xfc, 0x53, 0x12, 0x1b, 0x62,
-0x2f, 0xda, 0x95, 0x19, 0xfc, 0xf3, 0x99, 0xec,
-0xfe, 0xd8, 0x0c, 0xed, 0xe8, 0xbe, 0x6a, 0xf1,
-0x4d, 0x86, 0xb7, 0x71, 0x76, 0x97, 0x1f, 0xc1,
-0xf3, 0x1a, 0xb2, 0x1b, 0x69, 0xe6, 0xf4, 0x87,
-0x6c, 0x8a, 0x32, 0xff, 0xc5, 0xd7, 0x27, 0xb6,
-0x25, 0x2f, 0x0e, 0xed, 0x17, 0xe6, 0x0d, 0x39,
-0x85, 0xae, 0x4b, 0x52, 0x6d, 0x4f, 0x64, 0x9d,
-0x8f, 0x86, 0x87, 0x2a, 0xca, 0x9d, 0x9e, 0xaa,
-0x8a, 0xeb, 0x78, 0xa3, 0x24, 0x4f, 0x45, 0x1e,
-0x10, 0xca, 0xee, 0x0f, 0xb0, 0x8b, 0xd6, 0x44,
-0xe5, 0xa5, 0xb1, 0x19, 0xbc, 0x51, 0x52, 0xd1,
-0x5c, 0x12, 0x86, 0xd5, 0x31, 0x6b, 0xbe, 0x3f,
-0x30, 0xf1, 0x4f, 0x4e, 0x7f, 0x80, 0x7d, 0x49,
-0x43, 0x9e, 0x43, 0x38, 0xde, 0xd6, 0xaf, 0x49,
-0x95, 0x11, 0xc0, 0x7e, 0x14, 0x45, 0x17, 0xc0,
-0x3f, 0xdb, 0xe1, 0x5c, 0xaa, 0x89, 0x7a, 0x8f,
-0x29, 0x01, 0xf8, 0x06, 0x36, 0x8a, 0x4c, 0x97,
-0x7b, 0xc8, 0x21, 0xb3, 0x3e, 0x6e, 0x1c, 0xfb,
-0xad, 0xa1, 0xf0, 0x4c, 0x5e, 0x7f, 0xec, 0x46,
-0x1e, 0xff, 0xd1, 0x39, 0x4d, 0xf7, 0x68, 0xfb,
-0x24, 0xbd, 0x30, 0xfe, 0x19, 0x83, 0x0f, 0xb7,
-0x62, 0xb5, 0x94, 0xf8, 0x65, 0x7a, 0x52, 0x0d,
-0x47, 0x7d, 0x8f, 0xd4, 0x04, 0x69, 0x2e, 0x7f,
-0x38, 0x07, 0xff, 0xe8, 0xfe, 0x7b, 0xcd, 0xb0,
-0x43, 0xbc, 0x81, 0x9f, 0x8f, 0x46, 0x7b, 0x69,
-0x16, 0xb0, 0x11, 0xb3, 0xfa, 0x63, 0x4b, 0x7b,
-0xe4, 0xba, 0x0e, 0xfb, 0x58, 0x90, 0x76, 0xfc,
-0x87, 0x72, 0xce, 0x78, 0x86, 0x7f, 0x6c, 0xfd,
-0xc8, 0xed, 0x92, 0x6a, 0x66, 0x7f, 0x3c, 0x12,
-0xa6, 0xbd, 0x96, 0x29, 0x55, 0x08, 0x0c, 0xf4,
-0x6c, 0x60, 0xb0, 0xcf, 0x59, 0x9f, 0x66, 0x7f,
-0x80, 0x67, 0x80, 0x29, 0xc1, 0x2e, 0x94, 0x53,
-0x34, 0x32, 0x42, 0x1a, 0xb2, 0xe6, 0xfb, 0x81,
-0xeb, 0x7c, 0xb4, 0x31, 0xf9, 0xac, 0x7e, 0xad,
-0xbe, 0xe4, 0xb0, 0xc9, 0x0f, 0xd7, 0x37, 0x1c,
-0xbe, 0x3c, 0xbb, 0x03, 0x00, 0x0a, 0x39, 0xfd,
-0x21, 0x79, 0x13, 0xc8, 0xee, 0xaf, 0xc1, 0xc7,
-0xb8, 0x2d, 0x3d, 0xde, 0x3d, 0x1b, 0x5e, 0xd3,
-0x11, 0x38, 0x65, 0x10, 0x42, 0x76, 0xfe, 0x6b,
-0xb0, 0xbd, 0x06, 0x94, 0x9e, 0x32, 0xcd, 0x44,
-0x3b, 0x6b, 0x48, 0xb2, 0xf2, 0xc2, 0xfc, 0x70,
-0xec, 0x0f, 0xf0, 0x2f, 0x50, 0xa0, 0x2f, 0x9a,
-0xeb, 0xb7, 0x27, 0xbe, 0xb1, 0x10, 0xba, 0xcc,
-0xc6, 0x98, 0xce, 0x7c, 0x8d, 0xac, 0xfe, 0x48,
-0x4f, 0xc2, 0x0f, 0x0c, 0x65, 0x23, 0xb1, 0x1a,
-0x2f, 0xa4, 0x18, 0x10, 0xea, 0xd3, 0x1b, 0x2e,
-0x94, 0xff, 0x42, 0x7c, 0x4b, 0xe7, 0x44, 0x97,
-0x24, 0x14, 0xeb, 0xfc, 0x97, 0x07, 0xc5, 0x5a,
-0xb2, 0x7f, 0xf4, 0x42, 0xfc, 0xf0, 0xed, 0x18,
-0x2f, 0x0a, 0xcc, 0xeb, 0x30, 0xd1, 0x91, 0xf4,
-0xd4, 0x72, 0x5f, 0x62, 0xd1, 0x72, 0x26, 0x34,
-0x98, 0x07, 0xe3, 0x5a, 0xe3, 0x73, 0xfb, 0x03,
-0x60, 0xd8, 0xa7, 0x9b, 0xe1, 0x1f, 0x8d, 0x09,
-0x3d, 0xdd, 0x5b, 0x61, 0x44, 0x6f, 0xca, 0xd2,
-0xbf, 0x0b, 0xff, 0x48, 0x01, 0xf9, 0x99, 0xb8,
-0x9f, 0x2a, 0xcb, 0xc5, 0x15, 0xf2, 0x53, 0x20,
-0x26, 0xfb, 0xd2, 0xa4, 0x12, 0xee, 0x17, 0xfd,
-0x36, 0x3f, 0x1c, 0xf1, 0x8f, 0xdf, 0xcd, 0x0f,
-0x67, 0xf6, 0xc7, 0x48, 0x8a, 0xec, 0xa5, 0x90,
-0x74, 0xb6, 0x11, 0x1b, 0x56, 0x9e, 0xf5, 0x78,
-0xed, 0xb2, 0x5c, 0xe7, 0x7d, 0xc9, 0xe0, 0x1f,
-0x4d, 0xa8, 0x9a, 0xfe, 0x3c, 0x6c, 0xd9, 0xa7,
-0xe0, 0xfe, 0xe5, 0x69, 0xb9, 0x1a, 0x8a, 0xbe,
-0xe6, 0xa9, 0x90, 0xd7, 0xec, 0xab, 0x76, 0xbf,
-0xbf, 0xad, 0x23, 0x8e, 0xfd, 0x09, 0xf0, 0xfe,
-0x00, 0xfc, 0x58, 0x10, 0x2e, 0x68, 0xcc, 0xad,
-0x3c, 0x42, 0x5e, 0x73, 0xf5, 0x47, 0x42, 0xe1,
-0x80, 0xbb, 0x3f, 0x80, 0xfc, 0x21, 0x1a, 0xd5,
-0x50, 0x0d, 0x5a, 0x4b, 0x36, 0x3b, 0xe6, 0xdd,
-0xd4, 0x53, 0xd2, 0x7d, 0x59, 0xf6, 0x36, 0x83,
-0x7f, 0xf0, 0x7c, 0x34, 0x3c, 0x0d, 0x8d, 0xdd,
-0x24, 0xac, 0x9f, 0xa6, 0xcd, 0xcb, 0x79, 0x22,
-0xec, 0xb5, 0x9e, 0x96, 0xf4, 0x92, 0x49, 0x61,
-0x2a, 0x7e, 0x78, 0xe9, 0x66, 0xfd, 0xa9, 0xe4,
-0x16, 0x43, 0xb9, 0x87, 0xd9, 0xdb, 0xa7, 0x13,
-0x5b, 0x0a, 0x4b, 0xaa, 0x63, 0x84, 0xf6, 0xa8,
-0x59, 0x7c, 0xef, 0x9c, 0xf8, 0xcf, 0xf3, 0x81,
-0x65, 0x12, 0x56, 0xcf, 0xc1, 0xd3, 0xc2, 0x35,
-0x05, 0x97, 0x47, 0x49, 0x65, 0x72, 0x75, 0x8e,
-0xbd, 0x1a, 0x73, 0xfc, 0x45, 0x14, 0xed, 0x8f,
-0xac, 0x61, 0x98, 0x9a, 0x97, 0xe5, 0xc2, 0x17,
-0xe4, 0x32, 0x91, 0xc4, 0x8d, 0x6c, 0x7b, 0xee,
-0xaa, 0x8f, 0x9b, 0xbe, 0x03, 0x3e, 0xa2, 0xfe,
-0xa3, 0x4b, 0x76, 0x63, 0xff, 0x61, 0x61, 0x5e,
-0x74, 0xc9, 0xe0, 0x0d, 0x75, 0x30, 0x62, 0xe4,
-0xc4, 0xcf, 0x73, 0xfb, 0x03, 0x54, 0x58, 0xc7,
-0xc2, 0xce, 0xc1, 0x46, 0x91, 0x47, 0x61, 0x32,
-0x32, 0x23, 0x6b, 0xfc, 0x58, 0x56, 0x7f, 0x80,
-0x73, 0x94, 0x1f, 0x03, 0x7a, 0xde, 0x2c, 0x1c,
-0xbb, 0x57, 0x9c, 0xad, 0x1d, 0x93, 0x79, 0xfc,
-0xc7, 0x69, 0x05, 0x33, 0xe6, 0xee, 0x0f, 0xa0,
-0xee, 0x1d, 0xf1, 0x4f, 0x28, 0xcf, 0xc6, 0x8e,
-0xa1, 0x37, 0xd7, 0x94, 0x67, 0xc9, 0x1a, 0x7f,
-0xdc, 0x98, 0x93, 0xed, 0x7f, 0x5d, 0xfd, 0x01,
-0x18, 0x5e, 0xd2, 0xb6, 0x8e, 0x28, 0xd8, 0x16,
-0x69, 0x6f, 0x65, 0x43, 0x94, 0xbd, 0x7d, 0x75,
-0x10, 0xa7, 0x7e, 0xe3, 0x02, 0xfc, 0x70, 0xf0,
-0xc2, 0xde, 0x6a, 0x5e, 0x0d, 0xf7, 0x2a, 0x1e,
-0x14, 0x0b, 0x0a, 0x10, 0x1a, 0xa2, 0x76, 0xbd,
-0xbc, 0x19, 0x1a, 0x72, 0xf3, 0xc3, 0x65, 0xe6,
-0xd6, 0x85, 0x7b, 0x0d, 0x66, 0x0d, 0xde, 0xc7,
-0x46, 0x01, 0xcc, 0x10, 0x29, 0x9a, 0x31, 0x6e,
-0xc6, 0xc7, 0x1c, 0x84, 0x9c, 0x5d, 0x1f, 0x37,
-0xa9, 0xf2, 0x26, 0xd8, 0x67, 0xe0, 0x0f, 0x2b,
-0x5a, 0x60, 0x43, 0xa4, 0x7b, 0x34, 0x37, 0xfe,
-0x93, 0x83, 0x7f, 0xce, 0x63, 0x13, 0xd1, 0x93,
-0xe2, 0xf3, 0xf0, 0x7b, 0xa3, 0x69, 0x79, 0xc9,
-0x49, 0x86, 0x7f, 0x5e, 0xa5, 0xb3, 0x10, 0x48,
-0xcf, 0xd0, 0x5f, 0x4b, 0xb4, 0x8c, 0x2d, 0x7e,
-0x97, 0xe4, 0xf5, 0x47, 0x1a, 0x91, 0x07, 0xf8,
-0xb1, 0x17, 0x18, 0xd8, 0x29, 0x0b, 0xd2, 0xee,
-0x6a, 0xff, 0x88, 0x32, 0xd0, 0x1a, 0xa4, 0x7d,
-0x1a, 0xfb, 0x2a, 0x49, 0x92, 0x79, 0xfd, 0x91,
-0x18, 0xcc, 0xdb, 0x41, 0x77, 0x69, 0x75, 0x1d,
-0x0b, 0x9b, 0xfc, 0xde, 0xda, 0x98, 0x17, 0x4f,
-0xf0, 0xdc, 0xe8, 0x95, 0xbb, 0x11, 0x01, 0x6a,
-0x59, 0xfd, 0x21, 0xcd, 0xec, 0x61, 0x20, 0x44,
-0x82, 0xfa, 0xf7, 0xa0, 0xae, 0x9d, 0xe1, 0x4f,
-0xaf, 0x8e, 0x19, 0x46, 0xcc, 0x28, 0xe9, 0xd8,
-0xa8, 0x9c, 0xdd, 0x3f, 0x83, 0x7f, 0xc0, 0x3a,
-0x1f, 0x84, 0xb9, 0xdd, 0xf5, 0x4c, 0xd8, 0xae,
-0x17, 0xa6, 0xd8, 0x42, 0xea, 0x33, 0x36, 0xa2,
-0x5a, 0x02, 0xfe, 0x57, 0xba, 0xc2, 0x06, 0xdb,
-0xda, 0xeb, 0xf9, 0xe7, 0x83, 0x4c, 0x28, 0x58,
-0x2f, 0x70, 0x1d, 0x76, 0xfb, 0x39, 0x83, 0xfd,
-0x91, 0x46, 0xd9, 0x95, 0x49, 0x38, 0xdf, 0xcf,
-0xbe, 0x4a, 0x8b, 0x83, 0xf9, 0xe7, 0x83, 0xa4,
-0xba, 0xd9, 0x1f, 0xd2, 0xb0, 0x71, 0x3d, 0xf6,
-0xeb, 0x90, 0xc3, 0xc3, 0xec, 0x2f, 0xbe, 0x0f,
-0xaf, 0x40, 0xd3, 0x70, 0xf6, 0xf9, 0xb0, 0x3c,
-0xff, 0x15, 0x4c, 0xb3, 0xf5, 0xc3, 0x14, 0xa5,
-0xb3, 0xf5, 0xf0, 0x1c, 0xf9, 0x3d, 0xe5, 0x8d,
-0x26, 0x06, 0x63, 0x07, 0xa3, 0xbf, 0x30, 0xe6,
-0x4c, 0x28, 0x3f, 0xce, 0x3f, 0x1f, 0x64, 0x98,
-0xcd, 0xee, 0xe0, 0xf0, 0x5e, 0x23, 0xb8, 0x82,
-0x8d, 0x7f, 0x8d, 0xee, 0x55, 0x97, 0xbf, 0x5b,
-0x89, 0xf1, 0xb1, 0xee, 0x17, 0xb4, 0x51, 0xe5,
-0xb1, 0x29, 0xce, 0x07, 0x71, 0xba, 0x21, 0x59,
-0x42, 0x4d, 0x1a, 0x56, 0x91, 0x73, 0x0b, 0xbe,
-0x8b, 0x19, 0xb1, 0x15, 0x65, 0x59, 0xfd, 0x91,
-0xd4, 0x4c, 0xb6, 0x4b, 0xae, 0xba, 0x4b, 0x99,
-0x45, 0x10, 0xf6, 0xcc, 0x36, 0xf0, 0x7c, 0x10,
-0x7d, 0xbf, 0x1c, 0x32, 0x7c, 0xb9, 0xe7, 0x83,
-0x58, 0x41, 0xc2, 0x63, 0xbc, 0x91, 0xa6, 0x95,
-0xf6, 0xba, 0x0e, 0x4f, 0x8c, 0x3d, 0xa3, 0xff,
-0x0b, 0x06, 0x82, 0xd2, 0x79, 0xf8, 0x67, 0x7e,
-0x9a, 0x97, 0xb1, 0xfc, 0x82, 0xce, 0xd3, 0x17,
-0xe3, 0x79, 0xd6, 0xaf, 0x98, 0x07, 0xd5, 0x8d,
-0x43, 0x1f, 0xb6, 0x4e, 0x4a, 0xe6, 0xf5, 0x47,
-0xc2, 0xf3, 0xa9, 0x35, 0x6c, 0x8b, 0x5d, 0xa3,
-0x63, 0xa1, 0x0d, 0x6c, 0x80, 0x6b, 0x75, 0xbe,
-0x91, 0xe4, 0x47, 0xc7, 0x46, 0x0b, 0x33, 0xf8,
-0x67, 0xc8, 0xca, 0x7f, 0x1d, 0x58, 0xa5, 0x9d,
-0x83, 0xb5, 0xf4, 0x9a, 0xa8, 0x8c, 0xf5, 0x35,
-0x1b, 0x68, 0xf5, 0x84, 0xb2, 0x94, 0xbc, 0xa5,
-0xae, 0x8e, 0x55, 0x23, 0x35, 0x28, 0xb7, 0x3f,
-0x52, 0x10, 0xb7, 0x2d, 0x2f, 0x61, 0x37, 0x80,
-0x68, 0x47, 0x88, 0xc1, 0xf2, 0xee, 0xce, 0x99,
-0x08, 0xcb, 0xb1, 0x11, 0x10, 0x3f, 0x0a, 0xd3,
-0x85, 0x7f, 0xbe, 0x63, 0xe6, 0xbf, 0x4a, 0xd8,
-0x43, 0xd2, 0x03, 0xc2, 0xbc, 0xc7, 0xbd, 0x28,
-0x1c, 0x5a, 0xe0, 0xa7, 0xbe, 0x27, 0xc4, 0x23,
-0xfe, 0x03, 0x64, 0x80, 0xfa, 0xa2, 0xf9, 0xe7,
-0x83, 0x64, 0xbc, 0x0f, 0x02, 0x21, 0xf6, 0xfb,
-0xcc, 0xc1, 0x8a, 0xb9, 0xa3, 0x74, 0x92, 0x84,
-0xd5, 0x9c, 0xf3, 0xd1, 0xac, 0xd3, 0xaf, 0x12,
-0x62, 0x2d, 0xec, 0xa7, 0x25, 0x18, 0x08, 0xfa,
-0x32, 0xdc, 0x42, 0xe7, 0xb5, 0x7b, 0x13, 0xe5,
-0x33, 0xe9, 0xc3, 0xc9, 0x70, 0x2e, 0xff, 0xc7,
-0xea, 0x8f, 0xbd, 0x99, 0xcc, 0xa4, 0xbd, 0x46,
-0x43, 0xa7, 0xdc, 0x4f, 0xae, 0x86, 0xae, 0x61,
-0xff, 0x5d, 0x72, 0x7f, 0x8c, 0x01, 0x21, 0xbd,
-0x61, 0x05, 0x73, 0xcd, 0x79, 0xfd, 0x21, 0x75,
-0xe5, 0x21, 0x22, 0xd1, 0xde, 0x48, 0xb0, 0x5d,
-0x2e, 0x8d, 0xfd, 0xd5, 0xc2, 0x1f, 0x46, 0xea,
-0x74, 0x79, 0x63, 0x19, 0xfb, 0x4a, 0x6e, 0xe8,
-0x78, 0x25, 0x51, 0x98, 0xd7, 0x1f, 0x29, 0xa2,
-0x54, 0x10, 0x2c, 0x94, 0x0b, 0x46, 0x64, 0x14,
-0xae, 0xc1, 0x83, 0x33, 0x2a, 0xc8, 0x55, 0xb0,
-0x85, 0x5d, 0x51, 0x36, 0xb9, 0xfa, 0x43, 0x0e,
-0x9a, 0xfd, 0xb1, 0x29, 0x3f, 0x1f, 0xd6, 0x60,
-0x42, 0x90, 0x96, 0x47, 0x61, 0x05, 0xcc, 0xc3,
-0xb6, 0x48, 0x00, 0x13, 0x3c, 0x03, 0xd8, 0x96,
-0xc5, 0xff, 0xb1, 0xf2, 0x59, 0xca, 0x09, 0x5e,
-0xef, 0xc6, 0x66, 0x77, 0x58, 0xfe, 0x25, 0x13,
-0x1a, 0x47, 0xc5, 0x13, 0xf0, 0x4b, 0xf3, 0xab,
-0x4c, 0xfc, 0xa7, 0x9f, 0xe7, 0xbf, 0xbe, 0xd5,
-0x5e, 0xc2, 0xbd, 0xbf, 0xde, 0xa4, 0x7b, 0x13,
-0x6d, 0x57, 0x61, 0x59, 0x7d, 0xbb, 0xb7, 0xb4,
-0x86, 0x09, 0x6c, 0x6b, 0xec, 0xdd, 0x94, 0x8b,
-0x7f, 0xf0, 0xf4, 0x9c, 0x98, 0x3f, 0x4d, 0x07,
-0x61, 0xab, 0x2c, 0xc7, 0x62, 0x5a, 0x6c, 0x9d,
-0x96, 0x64, 0x02, 0xdb, 0x58, 0xe1, 0xd1, 0x69,
-0xb2, 0xe1, 0xc2, 0x3f, 0x60, 0xf5, 0xc7, 0xf6,
-0x44, 0x62, 0x87, 0xb5, 0x27, 0xb5, 0xea, 0xd6,
-0xa2, 0x48, 0x61, 0x05, 0xac, 0x96, 0x19, 0x02,
-0x8f, 0x90, 0x0a, 0xba, 0x5a, 0xe3, 0xc2, 0xbe,
-0xbc, 0xfe, 0xd8, 0xf2, 0x28, 0x39, 0x41, 0x9f,
-0x04, 0xa1, 0xbd, 0x08, 0x8f, 0xfd, 0x5a, 0x0d,
-0x7c, 0x58, 0x15, 0xc5, 0xf5, 0xc9, 0xbe, 0xca,
-0x8d, 0xff, 0x34, 0xe8, 0xfc, 0xf9, 0xb1, 0x2d,
-0x40, 0x3d, 0x6f, 0x04, 0x9a, 0x68, 0x8a, 0x06,
-0xf1, 0x7c, 0x34, 0x7e, 0x34, 0x5e, 0x82, 0x8c,
-0x5f, 0xa0, 0x3f, 0x36, 0x09, 0xb3, 0x7f, 0xa8,
-0x8c, 0x51, 0xde, 0x31, 0x60, 0xa3, 0x38, 0x46,
-0x4e, 0x26, 0x9e, 0xd3, 0x1b, 0x13, 0xdd, 0x79,
-0xfd, 0x91, 0xb4, 0xc5, 0x31, 0x51, 0xc3, 0xf3,
-0x41, 0xcc, 0x83, 0xd2, 0x4c, 0x41, 0xac, 0xa6,
-0xbc, 0x63, 0x95, 0xe1, 0x3e, 0x1f, 0x6d, 0x35,
-0xe6, 0xbf, 0x82, 0x58, 0x16, 0x87, 0xfd, 0x31,
-0xb6, 0xc6, 0x57, 0xec, 0xe8, 0xfb, 0xf4, 0x5d,
-0xeb, 0xd4, 0xad, 0x29, 0x79, 0x07, 0xf9, 0x34,
-0x3c, 0xa3, 0xfb, 0xd9, 0x57, 0xe2, 0xc2, 0xdc,
-0xfe, 0x90, 0xcb, 0xe5, 0xb9, 0xa4, 0x04, 0xba,
-0xe3, 0xc1, 0x91, 0xa2, 0xf9, 0x64, 0x09, 0x74,
-0x1b, 0xda, 0xdb, 0xf2, 0x3c, 0xe2, 0x83, 0x5d,
-0x49, 0x6d, 0x3c, 0x50, 0x9b, 0xdf, 0x1f, 0x5b,
-0x97, 0xbf, 0x49, 0xae, 0x14, 0xd6, 0xea, 0xf5,
-0x46, 0x11, 0x86, 0x41, 0xd6, 0xca, 0xd5, 0xfb,
-0xe4, 0x89, 0xd8, 0x15, 0xc2, 0x77, 0x75, 0x26,
-0xac, 0x88, 0x65, 0xf7, 0xc7, 0xfe, 0x23, 0x33,
-0x53, 0xde, 0x49, 0x25, 0x4c, 0x5e, 0x33, 0xf3,
-0x0b, 0xf7, 0xc1, 0x6b, 0xb4, 0x3a, 0xbd, 0x78,
-0x95, 0x32, 0x03, 0xb0, 0x11, 0xb1, 0x97, 0x21,
-0x96, 0xdc, 0xfe, 0x48, 0x66, 0x7d, 0x1c, 0xce,
-0xae, 0x04, 0xd1, 0x3e, 0xbf, 0x62, 0x13, 0x81,
-0x96, 0xb8, 0xf9, 0x3f, 0xcc, 0x7f, 0xa9, 0xe7,
-0xf1, 0xfc, 0xb5, 0xc9, 0xf2, 0xfb, 0xb2, 0xcb,
-0xe2, 0xbc, 0x93, 0x36, 0x91, 0x35, 0x9b, 0xff,
-0xb3, 0x19, 0xd9, 0x3e, 0x09, 0x59, 0x27, 0x97,
-0x18, 0x6c, 0xdb, 0x45, 0x79, 0xbf, 0xeb, 0xa7,
-0x93, 0x8d, 0x11, 0xf6, 0xb3, 0x56, 0xe9, 0x4f,
-0xaa, 0xf5, 0xc3, 0xca, 0x6d, 0x79, 0xe7, 0x83,
-0xb0, 0xf9, 0x4e, 0x90, 0xa5, 0xfc, 0x60, 0x47,
-0x25, 0x42, 0x46, 0x61, 0xb7, 0x5a, 0xaf, 0x17,
-0x39, 0x1d, 0xc2, 0x3b, 0xca, 0x32, 0xfc, 0x1f,
-0xab, 0x3f, 0x12, 0x36, 0xf9, 0x09, 0xb6, 0x76,
-0x41, 0xb0, 0x96, 0xef, 0x26, 0x70, 0x23, 0x56,
-0x34, 0x8b, 0x14, 0x63, 0x69, 0xbc, 0xa1, 0x40,
-0x59, 0x06, 0xff, 0xac, 0xe0, 0xf9, 0xbe, 0xf9,
-0xba, 0x37, 0x55, 0x7e, 0x37, 0xf4, 0x59, 0xf1,
-0x2e, 0xed, 0x34, 0x6d, 0x48, 0xd7, 0x0f, 0x2a,
-0x41, 0x30, 0x53, 0x63, 0x85, 0x79, 0xf8, 0x27,
-0xd2, 0x68, 0xe2, 0x9f, 0xf0, 0xa8, 0x6f, 0x9b,
-0xf8, 0xbe, 0x7c, 0x3a, 0x12, 0xee, 0x29, 0xd9,
-0x26, 0x1e, 0x35, 0x4e, 0xe1, 0x79, 0xe5, 0x78,
-0xb0, 0x88, 0x7d, 0x7f, 0xc3, 0xec, 0x0f, 0x30,
-0xce, 0xb4, 0x71, 0x8e, 0x1e, 0x62, 0x02, 0xb3,
-0xde, 0xe7, 0xf4, 0x33, 0x72, 0xcb, 0x88, 0x99,
-0xff, 0x52, 0x9b, 0x13, 0xde, 0xb4, 0x92, 0xe1,
-0xff, 0x58, 0xfd, 0x91, 0xd2, 0xf2, 0x93, 0x0c,
-0xff, 0xac, 0x5b, 0xda, 0x30, 0xa2, 0xfc, 0x88,
-0xfc, 0x1e, 0xf6, 0x76, 0x34, 0x3c, 0xb0, 0xe8,
-0xf1, 0x8d, 0xbf, 0xd7, 0x07, 0x8c, 0x39, 0x09,
-0xb9, 0x36, 0xbf, 0x3f, 0xa4, 0x81, 0x65, 0xaa,
-0x5a, 0x9f, 0x60, 0x6e, 0xf3, 0xb5, 0xbd, 0x6a,
-0x9d, 0x71, 0x39, 0x86, 0xa9, 0x31, 0x5f, 0x2c,
-0x27, 0xf2, 0xfb, 0x43, 0xe2, 0x69, 0x68, 0xc3,
-0xb4, 0x5b, 0x34, 0x61, 0xa1, 0xcc, 0xd3, 0x1c,
-0xaa, 0xdf, 0x60, 0xe3, 0x6b, 0xb1, 0x34, 0x35,
-0x63, 0x7f, 0xa8, 0xd5, 0x1f, 0x9b, 0x79, 0xdb,
-0x11, 0xab, 0x6c, 0xb0, 0xec, 0x98, 0x3c, 0xa9,
-0xcd, 0xb3, 0xf1, 0x5e, 0x93, 0x11, 0xcc, 0xe6,
-0xff, 0x98, 0xfd, 0x10, 0x1a, 0x3b, 0xc5, 0x63,
-0x6d, 0xa6, 0xa3, 0x77, 0xda, 0xfe, 0xd8, 0xf8,
-0xc7, 0xcd, 0xff, 0x19, 0x9a, 0x3e, 0xa1, 0x1d,
-0x84, 0xeb, 0xc0, 0xbb, 0x4f, 0x0c, 0x73, 0xbe,
-0x2d, 0x13, 0x66, 0x33, 0xbc, 0xd4, 0x9c, 0xce,
-0xe2, 0x3f, 0x67, 0xf0, 0x89, 0xfa, 0x36, 0xc4,
-0x47, 0xb7, 0xce, 0x8e, 0xc7, 0xd9, 0x16, 0x30,
-0x3e, 0xe4, 0xdf, 0x27, 0x3f, 0x10, 0xbb, 0x1a,
-0x06, 0xa9, 0xdf, 0x1d, 0xff, 0xf1, 0x4f, 0xd4,
-0xda, 0xfa, 0x3c, 0xc0, 0x7e, 0xb1, 0xa4, 0xb0,
-0x82, 0xcd, 0x9b, 0xe1, 0xe1, 0x2d, 0xba, 0x36,
-0xe2, 0xf1, 0xd7, 0x15, 0x43, 0xca, 0x3c, 0x38,
-0xcf, 0x49, 0x95, 0x1e, 0x17, 0x9c, 0xf5, 0xcc,
-0xde, 0xf7, 0xed, 0x7a, 0x1d, 0xc8, 0xc9, 0x58,
-0x10, 0x1e, 0x67, 0xdb, 0x90, 0xc0, 0x76, 0x12,
-0xa4, 0x7b, 0xe2, 0x59, 0x78, 0xd2, 0x9f, 0xe1,
-0xff, 0x2c, 0x28, 0xf8, 0x80, 0xa4, 0xe9, 0xbc,
-0xf1, 0xe0, 0x77, 0xd8, 0x6a, 0xf9, 0x1d, 0x6d,
-0x1a, 0x3a, 0x18, 0x7f, 0xa1, 0x96, 0x4e, 0xc6,
-0xca, 0xb2, 0xf0, 0xe1, 0xa8, 0xd3, 0x1f, 0x29,
-0x59, 0xfa, 0x3f, 0xe0, 0x48, 0x62, 0xce, 0x88,
-0x6f, 0x90, 0x69, 0xe3, 0x57, 0x70, 0xa5, 0xd1,
-0x47, 0xc5, 0x3f, 0xb0, 0x8d, 0xe7, 0xf3, 0x17,
-0xc8, 0x7f, 0x19, 0xea, 0xb7, 0xd9, 0x6e, 0x2b,
-0x34, 0xea, 0xad, 0xc0, 0xf8, 0x0f, 0xef, 0x86,
-0xc4, 0x84, 0x23, 0x34, 0x1b, 0x9f, 0x67, 0xf8,
-0x3f, 0x06, 0x5b, 0x0f, 0x6f, 0x68, 0x4d, 0x86,
-0xbc, 0x87, 0xd9, 0x93, 0xdb, 0x75, 0xff, 0x9b,
-0x25, 0x18, 0x06, 0xec, 0xb5, 0x0f, 0x3a, 0x71,
-0xe2, 0x3f, 0xf6, 0x7a, 0x30, 0x98, 0x84, 0x54,
-0x4e, 0xf9, 0x2a, 0x8f, 0x57, 0x05, 0x3d, 0x99,
-0x56, 0x76, 0xb0, 0x8d, 0xc9, 0x46, 0xe1, 0x42,
-0xf1, 0x9f, 0x49, 0xf5, 0x36, 0xb2, 0x86, 0xf2,
-0x43, 0xe1, 0xc3, 0xf0, 0x7d, 0x66, 0x46, 0x3c,
-0x5f, 0x27, 0x61, 0xe3, 0xa1, 0x44, 0x0e, 0xff,
-0xc7, 0x85, 0x7f, 0xf0, 0xfe, 0x29, 0x08, 0x6a,
-0x62, 0xb0, 0xf6, 0x05, 0xb6, 0xd5, 0xf3, 0x69,
-0x7d, 0x25, 0xf4, 0x5f, 0x61, 0xfe, 0x8b, 0x8a,
-0x13, 0xff, 0x99, 0xe5, 0xc6, 0x3f, 0xa5, 0xcf,
-0xb2, 0x97, 0x82, 0x29, 0xe1, 0x27, 0x6c, 0x76,
-0x7f, 0x34, 0xfb, 0x95, 0x1d, 0x84, 0xdf, 0x4b,
-0x9f, 0x90, 0xff, 0x22, 0x6f, 0xd0, 0xa6, 0x74,
-0x70, 0xb0, 0xa6, 0x04, 0xd1, 0xa0, 0x11, 0x4c,
-0x89, 0x1d, 0xf0, 0xb2, 0xd9, 0xd6, 0x63, 0x2a,
-0xfe, 0x4f, 0x65, 0x3f, 0xf0, 0xf3, 0x16, 0xb1,
-0xbb, 0xc8, 0x6a, 0x61, 0x99, 0x21, 0x4f, 0xf8,
-0x2b, 0x3d, 0xab, 0xa1, 0x3a, 0x27, 0xfe, 0xe3,
-0xd8, 0x13, 0x58, 0x43, 0x62, 0x78, 0x08, 0xda,
-0x5c, 0x32, 0x03, 0xba, 0xe8, 0x3f, 0xa7, 0xe5,
-0x49, 0xf2, 0x05, 0xec, 0x90, 0x70, 0xc1, 0xfe,
-0x00, 0xeb, 0xa1, 0x5b, 0xd7, 0xc6, 0x02, 0xea,
-0x65, 0x5e, 0xa9, 0x2b, 0x3a, 0xd3, 0x90, 0x77,
-0x33, 0x47, 0xd0, 0x6d, 0x64, 0xef, 0x67, 0x5d,
-0xfc, 0x9f, 0xe9, 0x27, 0xe1, 0x10, 0xdd, 0x95,
-0xf0, 0x7e, 0x20, 0x06, 0xe0, 0x25, 0x7d, 0x0e,
-0xf5, 0xa6, 0xc5, 0xaf, 0x63, 0x23, 0x8e, 0x0b,
-0xf6, 0x07, 0xa0, 0xd1, 0xf1, 0xca, 0x30, 0xf1,
-0xd1, 0x17, 0xd2, 0x65, 0x93, 0x9f, 0x9b, 0x87,
-0xfb, 0xf1, 0x34, 0x9d, 0x0c, 0x5d, 0x38, 0xfe,
-0xf3, 0x98, 0x1d, 0xed, 0x79, 0x87, 0xb3, 0x7d,
-0xbc, 0x9b, 0x99, 0x5b, 0x1c, 0xb2, 0xfb, 0x3f,
-0xe7, 0xc7, 0x7f, 0xe0, 0xcb, 0xb8, 0x5a, 0x18,
-0x08, 0xc1, 0x6e, 0xd8, 0x1a, 0x59, 0x1a, 0xd8,
-0x4c, 0x6a, 0xe1, 0xe7, 0xd4, 0x9f, 0x15, 0x7f,
-0x70, 0xe7, 0xbf, 0xf8, 0xea, 0x6a, 0x55, 0x12,
-0xb1, 0xb1, 0x1e, 0xd3, 0xda, 0x40, 0x2d, 0xf4,
-0xaa, 0xfe, 0x9c, 0xf8, 0x8f, 0xbd, 0x1e, 0x90,
-0xff, 0xd3, 0x95, 0xc9, 0xfe, 0x24, 0x19, 0xfe,
-0xf1, 0xd7, 0xc2, 0x03, 0x90, 0xcc, 0x8a, 0xff,
-0x18, 0xee, 0xfc, 0x17, 0x19, 0xe1, 0xec, 0x1a,
-0x3e, 0xbb, 0x10, 0x30, 0x7c, 0xa8, 0xd9, 0x6d,
-0x79, 0x9c, 0xf9, 0xbe, 0xe5, 0xca, 0x7f, 0x7d,
-0x4c, 0xf0, 0x10, 0xb4, 0x0d, 0x87, 0x31, 0x7b,
-0xa5, 0x87, 0xb1, 0x51, 0xd2, 0xc7, 0x28, 0x5c,
-0x38, 0xff, 0xa5, 0xed, 0x97, 0x9b, 0x5a, 0x4b,
-0x36, 0x8a, 0xb3, 0xe1, 0xac, 0xbc, 0xab, 0xdd,
-0xfb, 0x33, 0x66, 0x7f, 0x5e, 0xd5, 0xb2, 0xc7,
-0xbb, 0xf3, 0x5f, 0x47, 0x49, 0x5c, 0xf7, 0x43,
-0xdf, 0x30, 0xa7, 0x3d, 0x6b, 0xf0, 0xed, 0x35,
-0xa4, 0x1a, 0xd6, 0x2d, 0x70, 0xe2, 0x3f, 0xf3,
-0x98, 0x50, 0xe6, 0xce, 0x7f, 0x3d, 0x84, 0xe8,
-0x25, 0xaa, 0xdc, 0x89, 0xb4, 0x67, 0xaa, 0x75,
-0x14, 0x55, 0x91, 0x02, 0x79, 0x4b, 0x4e, 0xbc,
-0x2b, 0x3b, 0xff, 0xf5, 0x6d, 0xa3, 0x46, 0x57,
-0x8e, 0xf0, 0x78, 0x9a, 0xa6, 0x17, 0x25, 0x3c,
-0xb5, 0xf0, 0xb8, 0xe6, 0xc4, 0x7f, 0xea, 0x72,
-0xfb, 0x03, 0xfc, 0x96, 0xc1, 0xda, 0x81, 0x88,
-0x6f, 0x93, 0xb2, 0x1c, 0x4e, 0xd2, 0x26, 0xbd,
-0x38, 0x51, 0x5e, 0x4b, 0xde, 0xfd, 0x84, 0xfe,
-0x00, 0x3f, 0x80, 0x0f, 0x49, 0xb8, 0xc3, 0xa7,
-0x32, 0xfd, 0x7c, 0xc8, 0xd0, 0xef, 0x86, 0x32,
-0x71, 0x58, 0xff, 0xf9, 0x27, 0xf4, 0x07, 0xa0,
-0x3d, 0x9c, 0xff, 0x6c, 0x88, 0x9a, 0xce, 0xd1,
-0x4e, 0x1c, 0xf5, 0x7f, 0xe1, 0xf8, 0xcf, 0x4d,
-0x01, 0x8c, 0xc6, 0xd3, 0x78, 0x92, 0x6d, 0xc3,
-0x9f, 0x83, 0x9a, 0x84, 0x27, 0xbd, 0x8e, 0x5d,
-0x89, 0x67, 0xc5, 0x7f, 0xb2, 0xf2, 0x5f, 0x9f,
-0xc5, 0x4d, 0x68, 0x5a, 0x0e, 0x90, 0x42, 0xd8,
-0xd5, 0x9f, 0x3c, 0x12, 0x9f, 0x5b, 0xe6, 0x05,
-0x11, 0xb4, 0xa1, 0xec, 0xf8, 0x8f, 0xe3, 0xef,
-0xd4, 0xc5, 0x08, 0x03, 0x26, 0xe4, 0xe5, 0xcc,
-0xfb, 0x63, 0x22, 0x7b, 0x21, 0xa6, 0x2d, 0xba,
-0xe8, 0x96, 0xac, 0xf8, 0xcf, 0xb8, 0x33, 0x3e,
-0x1e, 0xff, 0x3c, 0x79, 0x99, 0xce, 0x4f, 0x06,
-0xe7, 0x2a, 0x66, 0x20, 0xc8, 0xbb, 0xaa, 0x7c,
-0x06, 0xbb, 0x32, 0x2b, 0x2b, 0xfe, 0xf3, 0x9e,
-0x73, 0x3e, 0xac, 0x3c, 0x9d, 0xe3, 0x43, 0xea,
-0xee, 0x2e, 0x92, 0x9f, 0x4f, 0x77, 0xf5, 0x87,
-0xac, 0x78, 0x06, 0xce, 0xc7, 0x9a, 0xa3, 0xbc,
-0x6c, 0xe7, 0x8f, 0xf4, 0xab, 0x2e, 0xd8, 0xe3,
-0xf2, 0x5f, 0x86, 0x66, 0xeb, 0xff, 0x71, 0xb5,
-0x1f, 0x9e, 0x24, 0xd5, 0xfa, 0x08, 0x6f, 0xcb,
-0xa6, 0x6e, 0x89, 0x17, 0x7f, 0x8d, 0x3d, 0xff,
-0x93, 0x95, 0xd9, 0xf5, 0xfe, 0x6e, 0xfc, 0x93,
-0x80, 0xa7, 0x75, 0x66, 0x9f, 0xab, 0x62, 0x55,
-0xf0, 0x3c, 0x6c, 0xa1, 0xee, 0x83, 0x51, 0x1c,
-0x7b, 0xe5, 0xee, 0x0f, 0x49, 0x71, 0x99, 0xa9,
-0x72, 0x25, 0x8f, 0xff, 0xf8, 0x29, 0xf3, 0xfe,
-0x5e, 0x4e, 0xa3, 0x72, 0xc7, 0x9f, 0xdd, 0xf9,
-0xaf, 0xbb, 0xe1, 0xb8, 0xd6, 0x94, 0xf6, 0x6e,
-0x57, 0x82, 0xbc, 0xd1, 0xae, 0x8c, 0xfe, 0xe5,
-0x64, 0x8e, 0x7f, 0x79, 0x4f, 0x72, 0xf2, 0x8f,
-0xc2, 0x8f, 0xb5, 0x49, 0xb6, 0xdf, 0xdc, 0x90,
-0x6c, 0xc3, 0xc4, 0x07, 0x7b, 0xbf, 0xb6, 0x61,
-0x5a, 0xb0, 0x38, 0xa7, 0x5e, 0xde, 0x59, 0x3f,
-0xd5, 0xea, 0x6e, 0x66, 0xc4, 0x9a, 0x63, 0xde,
-0x4e, 0x9e, 0xff, 0xda, 0x85, 0xf1, 0xf9, 0x3b,
-0xb1, 0x91, 0x54, 0x96, 0x3d, 0x37, 0x5c, 0xfc,
-0x9f, 0xe5, 0xea, 0x20, 0x3e, 0x36, 0x73, 0x5b,
-0xfa, 0x5e, 0x66, 0x76, 0xe2, 0xdb, 0x3d, 0x68,
-0x61, 0xb2, 0xfc, 0x6f, 0xf6, 0xf9, 0xb0, 0xea,
-0x33, 0xec, 0xa5, 0x88, 0x53, 0xac, 0xf7, 0x89,
-0xfb, 0x87, 0xe5, 0xfe, 0xb2, 0x20, 0xf4, 0x09,
-0xd9, 0xf1, 0x9f, 0xa8, 0xab, 0x3f, 0x80, 0xcc,
-0xd0, 0x42, 0x40, 0x97, 0xc1, 0xe3, 0x95, 0x66,
-0x99, 0xe5, 0x7c, 0x5e, 0xbd, 0x0b, 0xb2, 0xed,
-0xb3, 0x3b, 0xff, 0x85, 0xf9, 0x77, 0xb6, 0xdb,
-0xc2, 0xf3, 0xa7, 0xbe, 0x0e, 0x21, 0xea, 0xa5,
-0xe5, 0x41, 0xbb, 0xed, 0x61, 0xa6, 0xbe, 0x29,
-0x83, 0x7f, 0xbe, 0x83, 0xfc, 0xa6, 0xa7, 0x61,
-0xc3, 0xa8, 0x99, 0xed, 0x02, 0xdf, 0xa8, 0x90,
-0xdf, 0xdf, 0x26, 0xf7, 0x7c, 0x58, 0x0e, 0xcb,
-0xbf, 0x60, 0x37, 0xda, 0x32, 0xaf, 0x5c, 0x79,
-0x81, 0xfa, 0x2f, 0x27, 0xc9, 0xf5, 0x9e, 0xab,
-0x51, 0x36, 0x13, 0x8a, 0x5c, 0xf9, 0xaf, 0xe8,
-0x14, 0xfd, 0xb1, 0x49, 0x07, 0x6f, 0x0b, 0x89,
-0x6d, 0x37, 0x2a, 0x76, 0xb1, 0xf7, 0x39, 0x7b,
-0xbe, 0x99, 0xf8, 0x8f, 0xc3, 0x7f, 0x1e, 0x37,
-0x89, 0xc4, 0xa8, 0xc6, 0xdc, 0xfa, 0xaf, 0xce,
-0xfc, 0xf3, 0x61, 0x53, 0xe2, 0x0a, 0xde, 0x16,
-0xd2, 0xe9, 0xa7, 0xa1, 0xb8, 0xf4, 0x33, 0x3a,
-0x55, 0x7f, 0xec, 0xc9, 0x6c, 0xb5, 0x14, 0xbb,
-0xf3, 0x5f, 0x53, 0xc4, 0x7f, 0x98, 0x37, 0xcc,
-0x69, 0xcb, 0xd0, 0x76, 0x81, 0xfc, 0x97, 0xfd,
-0xfc, 0x24, 0xb7, 0xad, 0xc4, 0x14, 0xf8, 0xc7,
-0x39, 0x1f, 0x96, 0x19, 0x19, 0x3d, 0x9f, 0xaf,
-0xf2, 0x20, 0x03, 0x42, 0x8b, 0x42, 0x30, 0x65,
-0xfc, 0xe7, 0x94, 0xee, 0xb4, 0xc5, 0xbe, 0xae,
-0x27, 0x0b, 0xff, 0xf8, 0x73, 0xfa, 0x63, 0x9b,
-0xf1, 0x9f, 0x11, 0x78, 0x81, 0x0b, 0x6d, 0x0c,
-0xf6, 0xd0, 0x2a, 0x2e, 0xe8, 0xff, 0x9a, 0x5f,
-0xff, 0x95, 0xa5, 0x1f, 0xe4, 0x3f, 0x0b, 0x67,
-0x32, 0xfc, 0xe7, 0x6f, 0x4d, 0x9d, 0xff, 0xb2,
-0x40, 0x4e, 0x6e, 0xdb, 0x0a, 0x4b, 0x98, 0xab,
-0xd4, 0x55, 0xe4, 0xc6, 0x7f, 0xf8, 0x69, 0x44,
-0xff, 0x96, 0xcb, 0xff, 0x51, 0xf1, 0xe8, 0x46,
-0x26, 0xe4, 0x9f, 0x8f, 0xc6, 0x66, 0xf7, 0x06,
-0xac, 0x5d, 0x8d, 0xc4, 0xef, 0xc2, 0x7c, 0xfe,
-0xcf, 0x14, 0xe7, 0xa3, 0xe1, 0xe9, 0x72, 0x0f,
-0xba, 0xd3, 0xac, 0x6d, 0x2e, 0xc5, 0xe6, 0x9f,
-0x8f, 0xe6, 0xc3, 0x43, 0xf1, 0x0e, 0xb8, 0xf9,
-0x3f, 0xa2, 0x0b, 0xff, 0xcc, 0x73, 0xd6, 0x43,
-0x5e, 0xfc, 0xc7, 0x47, 0xa7, 0xb9, 0x4e, 0x4c,
-0x9b, 0x32, 0xff, 0x65, 0x3b, 0x7d, 0x6a, 0x6f,
-0xfc, 0x39, 0x31, 0xb8, 0xc4, 0x8d, 0x7f, 0x9c,
-0xf1, 0x39, 0xfd, 0xb1, 0x6d, 0x41, 0xb8, 0x50,
-0x7f, 0xa4, 0xac, 0xfe, 0xd8, 0x39, 0xff, 0xb0,
-0x15, 0x85, 0xbb, 0x73, 0xfa, 0x43, 0xba, 0xfa,
-0x63, 0x0b, 0x39, 0x6d, 0x91, 0x5c, 0xf9, 0x2f,
-0xc7, 0xfe, 0xe4, 0xf4, 0xc7, 0x76, 0x4d, 0xfc,
-0x4a, 0xd7, 0x95, 0x29, 0xce, 0x87, 0x4d, 0x70,
-0xda, 0x73, 0xb6, 0x5b, 0x9f, 0x0a, 0xff, 0x14,
-0x5f, 0x60, 0xfc, 0x82, 0x0d, 0x89, 0x69, 0xe6,
-0x57, 0xff, 0x34, 0xea, 0xc6, 0x3f, 0xe0, 0xea,
-0x8f, 0x9d, 0x25, 0x5c, 0x4e, 0x2f, 0x49, 0x43,
-0x3f, 0x13, 0xfe, 0x22, 0x37, 0xff, 0x75, 0xc1,
-0x69, 0xba, 0xe6, 0x9b, 0x1b, 0xff, 0xb1, 0x4f,
-0x03, 0x59, 0xe0, 0xd2, 0x67, 0xd9, 0x18, 0x3c,
-0xcc, 0x7e, 0x88, 0x45, 0xf9, 0xfc, 0x1f, 0x7c,
-0xec, 0xdb, 0xc7, 0xf8, 0x31, 0x70, 0x26, 0xff,
-0xa7, 0xd0, 0xe2, 0xab, 0x5b, 0x57, 0x2e, 0x14,
-0xff, 0xc9, 0x17, 0xa4, 0x29, 0xf3, 0x5f, 0x61,
-0xbb, 0x1b, 0x67, 0x0e, 0xff, 0x47, 0x35, 0x19,
-0xf8, 0x6d, 0x53, 0xf7, 0xc7, 0xce, 0x15, 0xc4,
-0xed, 0xa6, 0x90, 0xce, 0xed, 0x8f, 0x6d, 0xbe,
-0x14, 0xc3, 0xba, 0xab, 0x2c, 0xa5, 0xd6, 0xd5,
-0x1f, 0x49, 0x9b, 0xba, 0x3f, 0xf6, 0x61, 0xe7,
-0xb5, 0x15, 0xb2, 0xf1, 0x40, 0x34, 0xef, 0x7c,
-0x58, 0x04, 0x39, 0xb7, 0xbf, 0xa5, 0xfe, 0xd6,
-0xa6, 0x3d, 0xff, 0x11, 0xcb, 0xbe, 0x1c, 0xfc,
-0xb3, 0x42, 0xcc, 0x3b, 0x1f, 0xd6, 0x4c, 0xe2,
-0xe4, 0xc2, 0x1e, 0xeb, 0xab, 0x64, 0xfe, 0xf9,
-0x20, 0xe9, 0x2b, 0x4f, 0x8a, 0x3f, 0x6b, 0x7d,
-0x8d, 0x9f, 0x86, 0x96, 0x87, 0x7f, 0xc6, 0x15,
-0xc8, 0x8a, 0xff, 0x5c, 0x67, 0x82, 0x9c, 0xc3,
-0xfa, 0x5a, 0xb5, 0x31, 0xed, 0x99, 0x20, 0x55,
-0xfa, 0x2e, 0xab, 0xfe, 0x0b, 0x9f, 0x7f, 0x98,
-0x3d, 0x7f, 0x5d, 0x1e, 0xff, 0xd9, 0xd3, 0x59,
-0x76, 0x02, 0x8f, 0x85, 0x1d, 0x91, 0x27, 0xf2,
-0xf0, 0x4f, 0x94, 0x40, 0x6e, 0xfc, 0x07, 0x8d,
-0xf6, 0x30, 0xe7, 0x1f, 0x7a, 0x42, 0x56, 0xbd,
-0xb3, 0xe8, 0xd2, 0xa7, 0x9c, 0x77, 0x3e, 0xec,
-0xb4, 0x54, 0xcd, 0x18, 0xb7, 0x9f, 0x1c, 0xff,
-0x64, 0xfb, 0xaf, 0xa4, 0x58, 0x97, 0x1b, 0xff,
-0x71, 0xeb, 0x47, 0x39, 0x66, 0x31, 0xc6, 0x33,
-0xe3, 0x2f, 0xd8, 0x1f, 0x7b, 0x4a, 0x21, 0x3d,
-0xc5, 0xf9, 0xb0, 0xcc, 0x49, 0x8d, 0x39, 0x6e,
-0x4b, 0xda, 0x2b, 0xb8, 0xfd, 0x57, 0x32, 0xef,
-0x7c, 0x58, 0x67, 0x7c, 0x5d, 0x56, 0x1b, 0xc3,
-0xcc, 0xf8, 0xdc, 0xf8, 0x0f, 0xa2, 0xeb, 0x61,
-0x17, 0x3f, 0x4a, 0x77, 0x3b, 0x3e, 0x2d, 0x87,
-0xff, 0xe3, 0x9a, 0xaf, 0x19, 0xf6, 0x91, 0xb1,
-0x1f, 0xd4, 0x95, 0xae, 0xf9, 0xe6, 0x9d, 0x0f,
-0x8b, 0xb3, 0x3b, 0x01, 0xfc, 0x7c, 0x4f, 0x3e,
-0x4d, 0xcd, 0x3d, 0xdf, 0xa8, 0x3b, 0xff, 0x25,
-0x58, 0x6c, 0xe7, 0x49, 0xf1, 0x38, 0x9c, 0x31,
-0x9a, 0xd3, 0xf5, 0xb8, 0x6c, 0x0e, 0xd2, 0x66,
-0x1d, 0x23, 0x66, 0x88, 0xa0, 0xf2, 0xf1, 0xcf,
-0xef, 0x18, 0xc8, 0x11, 0x07, 0x5b, 0x19, 0xda,
-0x11, 0xfc, 0x26, 0xff, 0xf9, 0x09, 0xe2, 0xa7,
-0x81, 0x41, 0xac, 0x77, 0xcb, 0xe3, 0xff, 0x64,
-0xf0, 0xcf, 0xad, 0xbc, 0xfe, 0x4b, 0x0e, 0x91,
-0x63, 0x6a, 0x0c, 0xb4, 0x65, 0xbc, 0x71, 0x5f,
-0x6a, 0x2a, 0xfc, 0xf3, 0x43, 0x47, 0x9f, 0x3d,
-0x0c, 0x4f, 0xa2, 0x3e, 0x7f, 0xe8, 0xf1, 0x27,
-0xb9, 0xc0, 0xee, 0x9f, 0xcd, 0xff, 0x31, 0xf1,
-0x0f, 0xef, 0x86, 0x7d, 0x37, 0x9c, 0xd6, 0x06,
-0xd2, 0xbc, 0x7f, 0xe3, 0x7e, 0xd5, 0x12, 0x26,
-0x39, 0x90, 0x26, 0x53, 0xe2, 0x9f, 0xf3, 0xd2,
-0x19, 0xc1, 0xe2, 0x83, 0x9d, 0xa5, 0x37, 0x9a,
-0x44, 0xe8, 0x93, 0x9f, 0x80, 0x7f, 0x02, 0xba,
-0x73, 0xec, 0xd7, 0xa4, 0x19, 0xe8, 0x30, 0x85,
-0x0b, 0xe0, 0x1f, 0x4f, 0x03, 0xec, 0x1d, 0x9d,
-0x6d, 0xf6, 0x4b, 0xdf, 0x43, 0xac, 0xe7, 0xdf,
-0xa3, 0xfa, 0x2f, 0x88, 0x7f, 0x6e, 0x65, 0xe8,
-0x91, 0xc3, 0x60, 0x36, 0xcd, 0x68, 0x52, 0x63,
-0xfa, 0x39, 0xa4, 0xa7, 0x46, 0xb5, 0x3c, 0xfe,
-0x0f, 0x77, 0xfa, 0x97, 0xaf, 0x2a, 0xfb, 0x0b,
-0xe9, 0xf9, 0xae, 0xab, 0xd2, 0x45, 0xab, 0xe0,
-0x2d, 0x78, 0x2a, 0x5e, 0x9d, 0xc2, 0x0e, 0x8a,
-0xea, 0x6e, 0x33, 0x30, 0x32, 0x05, 0xfe, 0x99,
-0x25, 0x2e, 0x86, 0xc9, 0x00, 0x76, 0xc3, 0x9e,
-0x76, 0x10, 0x4e, 0xab, 0x4d, 0x1e, 0x2f, 0x02,
-0xa1, 0x09, 0x8c, 0x08, 0x4d, 0x89, 0x7f, 0x3a,
-0xc5, 0x67, 0xe1, 0xb4, 0xc0, 0xf3, 0x5f, 0xc7,
-0xac, 0xb6, 0xea, 0x99, 0x7a, 0x81, 0x29, 0xf1,
-0x0f, 0xbe, 0xbf, 0x4d, 0xa6, 0xda, 0x4f, 0x9a,
-0x19, 0xc9, 0x63, 0x70, 0x2a, 0x97, 0xff, 0xec,
-0xc2, 0x3f, 0x98, 0xed, 0xda, 0xc9, 0x1b, 0xcd,
-0x59, 0x19, 0xb1, 0x0b, 0xf1, 0x7f, 0x2c, 0x90,
-0xf3, 0x01, 0xac, 0xa5, 0x57, 0xa7, 0x65, 0x13,
-0xf6, 0x04, 0x35, 0x2e, 0x3c, 0x35, 0x25, 0xff,
-0xc7, 0xac, 0xa6, 0x34, 0x6e, 0xa3, 0x51, 0x4d,
-0x8f, 0xe3, 0x32, 0xe3, 0xc7, 0xd6, 0xf0, 0xf7,
-0x2b, 0x31, 0x05, 0xff, 0xc7, 0x02, 0x39, 0x07,
-0xf0, 0x58, 0x90, 0xf8, 0x4a, 0x84, 0x3d, 0xe7,
-0x3a, 0x5a, 0x92, 0x9c, 0x11, 0x7d, 0x2e, 0x2f,
-0xfe, 0x93, 0xc1, 0x3f, 0x6f, 0xf3, 0x6a, 0x77,
-0x93, 0x08, 0x2d, 0x87, 0x35, 0x7e, 0x5e, 0xe7,
-0xa4, 0x71, 0x61, 0xfc, 0x33, 0xa6, 0xef, 0x17,
-0x9c, 0xb0, 0x4f, 0xd3, 0x72, 0xef, 0xd4, 0xf1,
-0x9f, 0x0c, 0xfe, 0x79, 0x07, 0x7a, 0xe9, 0x56,
-0x0b, 0xcf, 0x50, 0x0c, 0xec, 0x90, 0xdf, 0x6a,
-0x17, 0xc0, 0x3f, 0x0d, 0xd8, 0x1f, 0xf2, 0x04,
-0x59, 0xad, 0xd9, 0x61, 0x1f, 0xf6, 0x0f, 0x65,
-0xde, 0x58, 0x52, 0x6d, 0xb8, 0x20, 0xfe, 0xf9,
-0x19, 0xac, 0x36, 0x8f, 0x45, 0xe3, 0x85, 0x60,
-0x9d, 0x01, 0x57, 0xa3, 0xc8, 0x5c, 0xfc, 0x63,
-0x75, 0x23, 0x7c, 0x29, 0x13, 0xf6, 0x69, 0x32,
-0x3b, 0x16, 0x9e, 0xfa, 0x04, 0xfc, 0x83, 0xf6,
-0xea, 0x46, 0xab, 0x8c, 0xab, 0xb0, 0x25, 0x62,
-0x0a, 0xb9, 0xfd, 0xb1, 0x2b, 0x33, 0xf5, 0x5f,
-0x27, 0xe0, 0x57, 0x6a, 0xb3, 0x5d, 0xf6, 0xd5,
-0xbc, 0x00, 0x0f, 0x0a, 0x81, 0xb3, 0x01, 0x1c,
-0x3f, 0x6d, 0x4d, 0xfe, 0xf9, 0xb0, 0x1c, 0xf6,
-0x68, 0x7e, 0xc1, 0x14, 0xe4, 0xad, 0x04, 0x3b,
-0x46, 0x26, 0xcd, 0xaf, 0xa6, 0xdd, 0x3f, 0x35,
-0xfe, 0x61, 0xf6, 0x07, 0xcf, 0x87, 0x1d, 0x86,
-0x3d, 0x9a, 0xd6, 0x8e, 0x0c, 0x70, 0x6a, 0x7d,
-0x15, 0x9b, 0x02, 0xff, 0x94, 0x8d, 0xb5, 0xef,
-0x94, 0xfc, 0xe6, 0x79, 0xbb, 0x7b, 0x79, 0x60,
-0x8d, 0x2b, 0x16, 0xf1, 0x4f, 0xd9, 0x9a, 0xa9,
-0xce, 0x07, 0xf9, 0x2d, 0xfd, 0x39, 0xc5, 0x6a,
-0x3e, 0x6c, 0x6b, 0x20, 0x37, 0x7d, 0xd3, 0xec,
-0x18, 0x49, 0xf9, 0x57, 0xdb, 0xa7, 0xc4, 0x3f,
-0xda, 0x49, 0x7f, 0xb8, 0xc3, 0x5c, 0x0f, 0xfb,
-0xe6, 0xdf, 0x65, 0x5e, 0x91, 0x3f, 0x01, 0xff,
-0x48, 0x93, 0xb1, 0x39, 0xd9, 0xfa, 0xd7, 0x27,
-0x55, 0xfc, 0xaa, 0x7c, 0x0a, 0xfc, 0x93, 0xbe,
-0x64, 0x92, 0x1f, 0x8b, 0x56, 0xc2, 0x69, 0xcf,
-0x91, 0xbf, 0xdf, 0x2a, 0x27, 0xc9, 0x29, 0x78,
-0xce, 0x04, 0x42, 0xeb, 0xf2, 0xf1, 0x8f, 0xe6,
-0x3f, 0xc0, 0x61, 0x8f, 0xb9, 0x5f, 0x68, 0xd5,
-0x54, 0xd9, 0x55, 0xff, 0x35, 0x05, 0xfe, 0x89,
-0xe2, 0x69, 0xce, 0x42, 0xb5, 0xb1, 0xd0, 0xc4,
-0x3f, 0x5b, 0x00, 0xdf, 0xdf, 0xd2, 0xa7, 0x73,
-0xf9, 0xcf, 0x98, 0xff, 0x7a, 0x9a, 0x83, 0x1c,
-0xf2, 0x96, 0x74, 0xce, 0x86, 0x3d, 0x67, 0x69,
-0x4d, 0x32, 0xb8, 0x4a, 0x7c, 0x03, 0x3e, 0xe6,
-0xd0, 0x68, 0x9a, 0x0b, 0xff, 0x14, 0x3b, 0x20,
-0xc7, 0xa9, 0xee, 0x61, 0x16, 0x46, 0xe2, 0x11,
-0xa1, 0x71, 0x8b, 0xff, 0x5c, 0x93, 0x77, 0x3e,
-0x2c, 0x82, 0x9c, 0x30, 0xbb, 0x2d, 0x96, 0xed,
-0x98, 0xf5, 0x3b, 0xcb, 0x98, 0xff, 0x3a, 0x85,
-0xd4, 0x68, 0xe4, 0xaf, 0x1a, 0xd9, 0xf9, 0x2f,
-0x2c, 0xb2, 0x88, 0x92, 0x0a, 0xd8, 0x2d, 0xf0,
-0xb0, 0xf3, 0x5b, 0xf0, 0x3c, 0xcc, 0xc2, 0xe7,
-0x1f, 0xd5, 0x9f, 0xaa, 0xc4, 0x42, 0xb6, 0xfc,
-0xf3, 0x61, 0x71, 0xbe, 0x55, 0xda, 0x93, 0x3c,
-0x4c, 0xad, 0xbe, 0x09, 0x4f, 0x56, 0x56, 0xef,
-0xc3, 0xf1, 0xf0, 0xb4, 0x7e, 0x55, 0x6e, 0xfc,
-0xc7, 0x76, 0xe2, 0x97, 0x94, 0x48, 0x29, 0x24,
-0x02, 0x99, 0x6e, 0xdd, 0x8f, 0xfa, 0x4c, 0x73,
-0x3e, 0xf9, 0xa2, 0x50, 0xfe, 0xf9, 0xb0, 0x38,
-0xdf, 0x46, 0xfd, 0x74, 0xb2, 0xe9, 0x6d, 0x9c,
-0xaf, 0x70, 0x92, 0x36, 0x51, 0xee, 0x5f, 0x4e,
-0x1a, 0x73, 0xcc, 0xf8, 0x8f, 0xfd, 0x3c, 0x0e,
-0xfe, 0x49, 0xb2, 0x65, 0x33, 0x09, 0xcf, 0x58,
-0xfe, 0xe8, 0xae, 0x70, 0xc2, 0x62, 0x04, 0xcd,
-0xcb, 0xe6, 0x3f, 0xdb, 0xf8, 0xa7, 0x24, 0xcd,
-0xcf, 0x83, 0xb0, 0x60, 0xc0, 0x59, 0x08, 0xef,
-0xe3, 0x15, 0xf1, 0x23, 0x34, 0x87, 0xff, 0xec,
-0xe0, 0x9f, 0x64, 0xd9, 0xef, 0x03, 0xcf, 0x24,
-0xec, 0x32, 0xf6, 0x7d, 0x0d, 0x13, 0xcc, 0x7f,
-0xbd, 0x07, 0x47, 0x78, 0x21, 0x73, 0xeb, 0x14,
-0xf8, 0x27, 0xc9, 0xec, 0xd5, 0x1e, 0x7b, 0x9b,
-0xcf, 0x5e, 0x93, 0xb7, 0x8b, 0x52, 0xe4, 0x6d,
-0xe8, 0xd5, 0xee, 0x9e, 0xaa, 0x3f, 0x36, 0x07,
-0x39, 0xc3, 0x90, 0xa2, 0x99, 0xb6, 0x00, 0x10,
-0x08, 0x11, 0x43, 0xdd, 0x38, 0x15, 0xff, 0x99,
-0x17, 0xb5, 0xe1, 0x7c, 0x3f, 0xb4, 0x60, 0x21,
-0x6e, 0x24, 0xd1, 0xff, 0xe2, 0xf9, 0xb0, 0xb9,
-0xf1, 0x9f, 0x2b, 0x1c, 0x90, 0x73, 0x42, 0x32,
-0x69, 0x3f, 0x6d, 0xef, 0x23, 0x7f, 0x55, 0xe7,
-0xe7, 0xc3, 0x9e, 0xbb, 0x00, 0xff, 0xc7, 0xf0,
-0x8e, 0x8a, 0xdf, 0xe4, 0x0b, 0x29, 0xc8, 0x8f,
-0x85, 0x95, 0xd9, 0xb2, 0x39, 0x2e, 0xce, 0xa7,
-0xe7, 0xa1, 0x79, 0x9f, 0xef, 0x88, 0xeb, 0x7c,
-0x58, 0x03, 0xcc, 0x20, 0x8f, 0xdc, 0xef, 0xae,
-0xff, 0x8a, 0x1b, 0x98, 0xff, 0xf2, 0xd7, 0xc1,
-0x33, 0x66, 0x22, 0x2c, 0x95, 0xa9, 0xff, 0x9a,
-0xce, 0xd7, 0x83, 0x2e, 0x87, 0xca, 0xcc, 0x17,
-0x8d, 0x87, 0x01, 0x1f, 0xc5, 0x78, 0x97, 0x44,
-0xbc, 0x0c, 0x78, 0x73, 0xff, 0xde, 0x94, 0x17,
-0xff, 0x09, 0x3c, 0x6b, 0xf1, 0xc9, 0x8b, 0xcc,
-0x46, 0xd3, 0xfe, 0x61, 0x25, 0x09, 0xd7, 0x98,
-0x07, 0x85, 0x0c, 0xb0, 0xfb, 0x47, 0x9d, 0xf1,
-0x66, 0xbf, 0x74, 0xb9, 0x5f, 0xfc, 0x8a, 0x86,
-0x8a, 0x2a, 0xc6, 0x7c, 0xcd, 0xaf, 0x11, 0x96,
-0x0c, 0x28, 0x57, 0x61, 0x45, 0x2a, 0x32, 0xe8,
-0x32, 0xe7, 0xa3, 0x25, 0x4d, 0xfc, 0x43, 0x7d,
-0xaa, 0xf8, 0xa3, 0x0c, 0x1f, 0x7e, 0x12, 0xf3,
-0x5f, 0xa9, 0xb6, 0xe3, 0xfa, 0x1f, 0xd0, 0xdf,
-0x4d, 0xb2, 0x85, 0xe4, 0xdc, 0x5f, 0xb5, 0xf3,
-0xb3, 0x98, 0xff, 0xca, 0xec, 0x47, 0xd8, 0xfd,
-0x41, 0xbc, 0xca, 0xec, 0x88, 0xbb, 0xd3, 0x95,
-0xff, 0x32, 0xf1, 0xcf, 0x3c, 0x83, 0x59, 0xe3,
-0xbb, 0x39, 0x5b, 0x09, 0xd7, 0x83, 0x8a, 0xf6,
-0x93, 0xad, 0x10, 0x8d, 0x97, 0x0a, 0xca, 0xd7,
-0x8b, 0x03, 0x19, 0xfc, 0x23, 0x98, 0x6a, 0x61,
-0xd6, 0xf8, 0x16, 0x77, 0xfc, 0x87, 0xab, 0xc5,
-0xcc, 0x0f, 0xca, 0xb3, 0x5d, 0xf8, 0x27, 0xdd,
-0x85, 0xf6, 0xe4, 0x9a, 0xb4, 0x1c, 0xe1, 0x69,
-0x20, 0x2b, 0x0c, 0x62, 0xc1, 0x9e, 0xef, 0x0b,
-0x88, 0x07, 0x02, 0xab, 0xc8, 0xb3, 0x19, 0xfc,
-0x03, 0x1c, 0xff, 0xe8, 0xde, 0x59, 0xa2, 0x97,
-0xbc, 0x90, 0x29, 0x7b, 0xd7, 0x0c, 0x9f, 0xaa,
-0x98, 0x8d, 0x80, 0xbc, 0x59, 0xf8, 0x67, 0xfa,
-0xb3, 0xbc, 0xed, 0x4f, 0xe3, 0xf1, 0x0c, 0x3b,
-0x0e, 0x57, 0x14, 0xcf, 0x0f, 0x7e, 0x93, 0xc7,
-0x7f, 0x36, 0x4c, 0x88, 0x09, 0xc7, 0xfe, 0x3c,
-0x61, 0xe2, 0x1f, 0xca, 0xbc, 0x55, 0xd4, 0xd4,
-0xcf, 0xa0, 0xd9, 0x28, 0x29, 0xed, 0x1d, 0x14,
-0x4b, 0x60, 0x3f, 0x6d, 0xd2, 0xbc, 0x59, 0xf8,
-0xe7, 0x01, 0x6e, 0x4f, 0x28, 0x7b, 0x7e, 0xd5,
-0xa4, 0x3d, 0x4f, 0xf0, 0x32, 0x0a, 0x5e, 0x11,
-0x56, 0x05, 0x6b, 0x30, 0x35, 0xe6, 0xc6, 0x3f,
-0x94, 0xe3, 0x9f, 0x20, 0xe6, 0xbf, 0x6e, 0x36,
-0xeb, 0xbf, 0x26, 0x09, 0x67, 0x44, 0xa7, 0xe5,
-0x4a, 0x9e, 0x11, 0xd3, 0x3a, 0xe5, 0xec, 0xfe,
-0x3f, 0x7c, 0xbd, 0x1d, 0x09, 0xcc, 0x27, 0x85,
-0xad, 0x56, 0x1b, 0x76, 0xde, 0x58, 0x29, 0x1d,
-0x08, 0x79, 0x4a, 0x48, 0x37, 0x4d, 0x4e, 0x04,
-0xf2, 0xf1, 0x4f, 0x4b, 0xc2, 0x3b, 0x5e, 0xbe,
-0xca, 0xaa, 0xff, 0x22, 0xdb, 0xd9, 0x6b, 0xd2,
-0x94, 0xf4, 0xa6, 0xc5, 0x79, 0xf4, 0x50, 0xb2,
-0x99, 0x7a, 0xb7, 0xe6, 0xe1, 0x9f, 0xf9, 0xe0,
-0xeb, 0x72, 0xef, 0xc7, 0x27, 0x20, 0x2c, 0xd9,
-0x1b, 0x73, 0xd9, 0x47, 0xdb, 0xf2, 0xf1, 0x8f,
-0x57, 0xed, 0xce, 0x3a, 0x16, 0x2d, 0x3b, 0xff,
-0x15, 0xcb, 0xc5, 0x3f, 0x11, 0x99, 0x9f, 0xf7,
-0x61, 0xb2, 0x9d, 0xb7, 0x99, 0x65, 0xec, 0x9b,
-0xfc, 0x58, 0xcf, 0xde, 0x10, 0x99, 0x0a, 0xff,
-0xb4, 0x06, 0x12, 0x64, 0x5b, 0x75, 0xe6, 0x18,
-0x35, 0xac, 0xc8, 0x48, 0xc4, 0x50, 0xc0, 0xd4,
-0x18, 0x59, 0xe3, 0xea, 0xff, 0x63, 0xe2, 0x9f,
-0xdc, 0x7a, 0x28, 0x1b, 0x08, 0x81, 0x77, 0x2a,
-0xfc, 0x83, 0xe7, 0xc3, 0xd6, 0x24, 0x79, 0x22,
-0xcc, 0x5d, 0xf6, 0x6e, 0x76, 0x00, 0x60, 0xc2,
-0xfd, 0x8e, 0xfd, 0x39, 0x62, 0x9e, 0x0f, 0x1b,
-0x69, 0x3c, 0x2c, 0x3e, 0xe9, 0x2a, 0xe3, 0xd2,
-0xff, 0x45, 0xb7, 0x12, 0x61, 0x0c, 0x08, 0x8d,
-0xe6, 0xe3, 0x9f, 0x56, 0x2f, 0xf7, 0xfe, 0xee,
-0xfa, 0xaf, 0x25, 0x89, 0x9a, 0x5a, 0xba, 0x3f,
-0x10, 0xee, 0x60, 0x5f, 0x65, 0xf0, 0xcf, 0x2a,
-0x0b, 0xff, 0xb0, 0xf7, 0x6b, 0x96, 0x0b, 0x08,
-0xe9, 0x4c, 0xe8, 0x22, 0x1a, 0x6c, 0x07, 0x06,
-0x74, 0x8d, 0xbc, 0xf8, 0x4f, 0x7d, 0x54, 0xfe,
-0x26, 0xf9, 0x99, 0xea, 0x00, 0xa1, 0x27, 0x0d,
-0xb6, 0xf0, 0x96, 0x92, 0x0a, 0xfd, 0x3b, 0x94,
-0x7d, 0x15, 0x71, 0x9f, 0x0f, 0x62, 0xe2, 0x9f,
-0x8e, 0xc0, 0xeb, 0xfe, 0xdd, 0x99, 0xf8, 0xcf,
-0xbf, 0x40, 0x63, 0x87, 0x72, 0x84, 0xcc, 0x46,
-0x41, 0x0f, 0xbc, 0x9e, 0x17, 0xff, 0x99, 0x8f,
-0x24, 0xa5, 0xdf, 0x40, 0x26, 0xfe, 0xc3, 0xfb,
-0x1b, 0x28, 0xb5, 0xf0, 0x73, 0x3d, 0x1c, 0xf1,
-0xf6, 0xbb, 0xe2, 0x3f, 0xe3, 0x36, 0xfe, 0x51,
-0xdd, 0x6d, 0x8e, 0x4e, 0x9a, 0xf9, 0xbe, 0x61,
-0xb3, 0x34, 0xbe, 0xbf, 0xfb, 0x54, 0x1e, 0xfe,
-0x61, 0x68, 0x67, 0x02, 0x4c, 0xfd, 0x63, 0x7f,
-0x72, 0x72, 0x2f, 0xaa, 0xdd, 0x0f, 0x47, 0x30,
-0x23, 0x39, 0x34, 0xc5, 0xf9, 0x68, 0xbc, 0x3f,
-0xb6, 0xab, 0x2d, 0xb6, 0x1f, 0x69, 0xeb, 0x98,
-0x1a, 0xf3, 0x53, 0x79, 0x5b, 0x3e, 0xfe, 0x49,
-0xcb, 0x21, 0x86, 0xfe, 0x33, 0xf6, 0x07, 0x37,
-0x62, 0x73, 0xfd, 0x5e, 0x78, 0x90, 0x6a, 0x69,
-0x39, 0x58, 0x98, 0x87, 0x7f, 0x46, 0xd9, 0x4b,
-0xfa, 0x0b, 0x57, 0xd9, 0x82, 0x51, 0x6d, 0xf4,
-0x21, 0x43, 0x78, 0xad, 0x51, 0x3d, 0x2a, 0x47,
-0x0b, 0xb7, 0xe7, 0xf0, 0x7f, 0xe6, 0x23, 0xda,
-0x39, 0x44, 0x5e, 0xb6, 0xeb, 0xbf, 0x8e, 0xd3,
-0xae, 0xb4, 0x2f, 0xa0, 0x94, 0xc0, 0xeb, 0x34,
-0x95, 0x0c, 0x66, 0xf5, 0xff, 0xb1, 0xf8, 0x3f,
-0xd9, 0x61, 0xe4, 0x53, 0xcc, 0x6c, 0x72, 0x44,
-0x64, 0x6d, 0x55, 0x5c, 0xf5, 0x5f, 0xab, 0xad,
-0xf3, 0x61, 0x8f, 0x88, 0x7e, 0xdd, 0x09, 0xfb,
-0xbc, 0x4f, 0x6f, 0x88, 0x1e, 0x3c, 0xc2, 0xf0,
-0xcf, 0xab, 0xec, 0x2b, 0xe6, 0xbf, 0xb2, 0xf0,
-0x8f, 0xc4, 0xf9, 0x3c, 0x11, 0x52, 0x06, 0xd6,
-0xe9, 0x66, 0x67, 0xe0, 0xdb, 0x50, 0xdd, 0x1e,
-0xff, 0x9c, 0xff, 0x88, 0xfc, 0x1d, 0x93, 0xe1,
-0x93, 0x8b, 0x7f, 0x82, 0x20, 0xdf, 0x11, 0xbb,
-0x84, 0x3e, 0x6d, 0x8f, 0xdf, 0x01, 0xd7, 0xb4,
-0xca, 0x3a, 0xdb, 0x66, 0x6e, 0x82, 0x7a, 0x49,
-0x59, 0x1a, 0xcb, 0xc3, 0x3f, 0x10, 0xa8, 0x64,
-0xef, 0xd7, 0x83, 0x76, 0xd8, 0x87, 0xca, 0x9a,
-0x2e, 0x03, 0xd9, 0x0f, 0x09, 0x3d, 0x08, 0x4a,
-0x65, 0x3e, 0xfe, 0x49, 0x7b, 0x83, 0xa2, 0x9c,
-0x49, 0x34, 0xfc, 0x2e, 0x3a, 0x97, 0x32, 0xfb,
-0xc9, 0x76, 0x94, 0x34, 0x9c, 0xf6, 0x6d, 0xcf,
-0xc3, 0x3f, 0xf3, 0xd3, 0x3c, 0x4c, 0x6d, 0xd5,
-0xdb, 0xbe, 0x6b, 0x6a, 0x0c, 0xc7, 0xff, 0x1a,
-0xc7, 0x4f, 0x11, 0xff, 0xa1, 0xbc, 0xed, 0xcf,
-0x6b, 0xf6, 0xee, 0xfe, 0x9c, 0x79, 0x65, 0x4c,
-0x3b, 0x24, 0x37, 0x53, 0x9f, 0xfb, 0x7c, 0x58,
-0x6a, 0xe2, 0x1f, 0x1a, 0x48, 0x72, 0x7e, 0x2f,
-0xc7, 0x33, 0xef, 0x52, 0x73, 0x45, 0xf9, 0x87,
-0xf9, 0xfa, 0x51, 0x34, 0x31, 0x0a, 0x39, 0xf8,
-0x47, 0x97, 0xb1, 0x1f, 0x45, 0x9f, 0x9d, 0xb8,
-0xd9, 0x83, 0x6f, 0x68, 0x82, 0xe1, 0x9f, 0xc7,
-0xcd, 0x0e, 0x12, 0x53, 0x9c, 0x0f, 0x2b, 0x13,
-0x88, 0x75, 0xdb, 0x81, 0x7a, 0xf6, 0x62, 0x6a,
-0x32, 0xa6, 0xdd, 0xb7, 0x30, 0x43, 0x24, 0x26,
-0xa0, 0x35, 0x17, 0xff, 0xe0, 0xfa, 0xaf, 0xb5,
-0xfd, 0xef, 0x38, 0xb7, 0x48, 0x88, 0xff, 0xa5,
-0x71, 0xf4, 0xef, 0x09, 0x11, 0xb2, 0xf1, 0x8f,
-0xe4, 0x03, 0x9f, 0xce, 0xac, 0x8d, 0x93, 0xc8,
-0x38, 0x83, 0x27, 0xc6, 0x1a, 0xec, 0x0d, 0x7a,
-0x93, 0x6d, 0xe4, 0x37, 0x8c, 0xe6, 0xe3, 0x9f,
-0xb4, 0x6f, 0xbf, 0xd8, 0x04, 0x67, 0x8c, 0x59,
-0x51, 0x2b, 0x6c, 0x78, 0xa5, 0xc1, 0xf0, 0x21,
-0xd6, 0x0f, 0xd6, 0x18, 0xde, 0x29, 0xf3, 0x5f,
-0x6c, 0xbe, 0x81, 0x94, 0x56, 0x17, 0xb5, 0xf2,
-0x5f, 0x41, 0xa3, 0x38, 0xe4, 0x69, 0xa8, 0xd8,
-0xdb, 0xa3, 0x19, 0xf2, 0x94, 0xf1, 0x1f, 0x52,
-0x08, 0x94, 0x6d, 0xbb, 0x74, 0x27, 0xcc, 0x85,
-0x15, 0xca, 0xd2, 0x20, 0xf0, 0x88, 0x50, 0x5e,
-0xfe, 0x6b, 0x48, 0xa1, 0x85, 0x1a, 0x06, 0xf6,
-0x3b, 0xac, 0x78, 0x1a, 0x07, 0x4e, 0x2b, 0xd5,
-0x3d, 0x18, 0x41, 0xca, 0xaa, 0xff, 0xb2, 0xf3,
-0x5f, 0xfd, 0xca, 0xcc, 0xca, 0x49, 0xda, 0x04,
-0xce, 0x8b, 0xe3, 0xe5, 0x27, 0x86, 0x2c, 0xe3,
-0x81, 0x9a, 0xec, 0xfa, 0x2f, 0xae, 0x96, 0x9f,
-0x8b, 0x7f, 0xd0, 0xcf, 0x24, 0x1a, 0x35, 0x77,
-0x3c, 0xf0, 0x59, 0xe1, 0x02, 0xf5, 0x5f, 0x78,
-0x7f, 0xf1, 0x31, 0xf4, 0xe6, 0xe0, 0x9c, 0x0f,
-0xe2, 0xe5, 0x1d, 0x81, 0x8c, 0xf0, 0xbe, 0x60,
-0x2a, 0xf7, 0x7c, 0x58, 0x7c, 0xfe, 0x7f, 0x24,
-0xbf, 0xd5, 0xd9, 0xfe, 0x1d, 0xac, 0xfa, 0xc1,
-0xc6, 0x09, 0x79, 0xb2, 0x0c, 0x3b, 0x1a, 0x35,
-0xe2, 0xf3, 0x1f, 0xa7, 0xf6, 0xcf, 0x6b, 0xd8,
-0xfb, 0xaf, 0x24, 0x89, 0xcb, 0xeb, 0xcc, 0xf8,
-0x18, 0xd7, 0xcf, 0x3e, 0xd9, 0xae, 0x07, 0x64,
-0x42, 0xd6, 0xf9, 0xb0, 0x70, 0x1d, 0xc2, 0x80,
-0x15, 0xe4, 0x0d, 0x58, 0x93, 0xa8, 0x49, 0x17,
-0x59, 0x69, 0xa0, 0xb7, 0x65, 0xec, 0x08, 0x84,
-0xf8, 0x47, 0xce, 0xad, 0xff, 0xe2, 0xf1, 0x1f,
-0x4d, 0xdc, 0x4e, 0x5e, 0x50, 0x43, 0x9c, 0xf6,
-0xcc, 0xaf, 0x04, 0x43, 0x8a, 0x97, 0x39, 0xee,
-0xf9, 0x43, 0xde, 0xd0, 0xed, 0x53, 0x9c, 0x0f,
-0x7b, 0x94, 0x29, 0xe1, 0xb4, 0x1a, 0x4e, 0x23,
-0x3e, 0x94, 0xf8, 0x95, 0x0f, 0x71, 0xe3, 0x20,
-0xb4, 0xbc, 0xb4, 0x24, 0x2b, 0xfe, 0x93, 0xc9,
-0x3f, 0x06, 0xf1, 0xb4, 0x1a, 0xcb, 0x70, 0x09,
-0x33, 0x0c, 0xaf, 0x5d, 0x9f, 0xe8, 0xbd, 0x40,
-0xfc, 0x87, 0xa1, 0x1d, 0x52, 0x4d, 0xed, 0x30,
-0xf2, 0x88, 0xfc, 0x77, 0x9e, 0x2a, 0x78, 0xca,
-0x0c, 0x04, 0x4d, 0x19, 0xff, 0x99, 0xc1, 0x0f,
-0x46, 0xb1, 0xd2, 0x5e, 0x2b, 0xc7, 0xe4, 0x79,
-0x64, 0x46, 0xe9, 0x93, 0x34, 0x38, 0x2e, 0xaf,
-0x2a, 0x74, 0xc5, 0x7f, 0x24, 0x27, 0xde, 0x58,
-0x0c, 0x7d, 0x44, 0xeb, 0x37, 0xd7, 0x1b, 0x09,
-0x1a, 0xdb, 0x99, 0x3e, 0xf9, 0x89, 0x8d, 0x81,
-0x50, 0xa1, 0x0b, 0xff, 0x14, 0x58, 0xf1, 0x9f,
-0x6d, 0x4a, 0xc0, 0x73, 0x00, 0x06, 0x12, 0x4e,
-0xfe, 0xcb, 0x9b, 0x54, 0x02, 0x3c, 0xfe, 0x13,
-0x9c, 0x3a, 0xfe, 0xd3, 0x8d, 0x6d, 0x7f, 0x5a,
-0x2c, 0x3c, 0x80, 0xe7, 0x75, 0xf6, 0x88, 0xe9,
-0xca, 0xc9, 0x35, 0xb9, 0xe7, 0xc3, 0x82, 0x05,
-0x72, 0x1e, 0x16, 0x99, 0x37, 0x4f, 0xba, 0x60,
-0x0f, 0x73, 0x8b, 0xb5, 0x18, 0x1f, 0xc0, 0x13,
-0x51, 0xa7, 0x88, 0xff, 0x6c, 0xf6, 0x5c, 0x4d,
-0x7a, 0xf7, 0x65, 0x68, 0x3c, 0x91, 0x78, 0xc2,
-0x5f, 0x2b, 0xed, 0x79, 0xa0, 0x21, 0x2a, 0x67,
-0xe1, 0x9f, 0xe9, 0x16, 0xff, 0x59, 0xf5, 0x54,
-0x30, 0x33, 0x5e, 0x83, 0xdd, 0x0e, 0x71, 0x7c,
-0xb0, 0x55, 0xbe, 0x04, 0x2b, 0x98, 0x84, 0x06,
-0x0c, 0x5c, 0x64, 0xfa, 0xff, 0x38, 0xf1, 0x9f,
-0x3b, 0xc9, 0xa7, 0x60, 0xb5, 0x51, 0xcd, 0xfe,
-0x61, 0x19, 0x8f, 0x90, 0x44, 0x02, 0x15, 0xc4,
-0xa4, 0x46, 0x07, 0xf2, 0xeb, 0xbf, 0xd8, 0xec,
-0x40, 0xc4, 0x1f, 0x63, 0x57, 0xd6, 0xb1, 0xb0,
-0x9a, 0x3c, 0x29, 0x20, 0x23, 0x3a, 0xbb, 0xfe,
-0xcb, 0x9d, 0xd6, 0x79, 0xce, 0x99, 0x6f, 0x84,
-0x1f, 0x04, 0x76, 0x56, 0x0a, 0x47, 0x2e, 0x14,
-0xff, 0x99, 0xcd, 0xab, 0xdd, 0x11, 0x08, 0xa9,
-0x0c, 0x08, 0x2d, 0xf5, 0x8e, 0x76, 0xd7, 0xb2,
-0xa5, 0xd8, 0x8c, 0xd0, 0xe8, 0x1d, 0x07, 0x3f,
-0xb8, 0xe2, 0x3f, 0x1a, 0xba, 0x75, 0xf0, 0x70,
-0xfc, 0x43, 0x1a, 0xe4, 0xe2, 0x18, 0xd1, 0x98,
-0x3d, 0xd9, 0x5a, 0xc9, 0x4c, 0xf1, 0xa1, 0xc2,
-0xbc, 0xf8, 0x4f, 0xd9, 0x3a, 0x29, 0xb9, 0x13,
-0x1b, 0x71, 0x58, 0x69, 0xaf, 0x88, 0xac, 0xc6,
-0x24, 0xe4, 0x5b, 0xb6, 0xca, 0xb9, 0xf5, 0x5f,
-0xa6, 0x3e, 0x99, 0xf6, 0xd8, 0xb6, 0x5d, 0xf7,
-0x60, 0xda, 0x6b, 0x0f, 0x69, 0xd0, 0x7b, 0x55,
-0x5e, 0x11, 0x86, 0xfc, 0xcc, 0xd6, 0x97, 0x1c,
-0x7c, 0x92, 0xac, 0x70, 0xe2, 0x39, 0xec, 0xd7,
-0xd4, 0x5d, 0x07, 0xc1, 0x2c, 0x46, 0xfc, 0xf3,
-0x61, 0x7c, 0x0e, 0x1e, 0x1d, 0x32, 0xee, 0xf4,
-0x9f, 0xd9, 0x0e, 0xdb, 0xe0, 0x93, 0xf2, 0x5f,
-0x1a, 0x6f, 0x04, 0x94, 0x39, 0x9f, 0xc2, 0xc4,
-0x3f, 0x98, 0x7f, 0xac, 0xd1, 0xe4, 0x11, 0x7d,
-0x80, 0xeb, 0x5f, 0x46, 0xfd, 0x2f, 0x66, 0xfa,
-0xc7, 0x1f, 0x42, 0xda, 0x40, 0xc5, 0x4c, 0x7f,
-0x98, 0x80, 0xdd, 0xff, 0x67, 0x8c, 0x5c, 0x0f,
-0xf7, 0xeb, 0x35, 0xd8, 0xad, 0x69, 0x5c, 0x7d,
-0x06, 0x1a, 0x29, 0x36, 0xf6, 0x54, 0x9f, 0xf1,
-0x36, 0x26, 0x95, 0xbc, 0xf3, 0x61, 0xf1, 0x7d,
-0x99, 0x47, 0x4a, 0xba, 0xba, 0xdf, 0xf0, 0xd3,
-0x3e, 0xd3, 0xfe, 0xb0, 0x8d, 0xad, 0xf9, 0xbe,
-0xe4, 0xd7, 0x7f, 0x99, 0xef, 0xef, 0x1d, 0xe4,
-0x53, 0x12, 0xf6, 0x3f, 0xb4, 0xde, 0xdf, 0x60,
-0x82, 0x21, 0x0a, 0xe7, 0xd5, 0xce, 0xad, 0xff,
-0xba, 0x1e, 0xe3, 0x33, 0xf3, 0xc8, 0x21, 0x3a,
-0x2b, 0xe9, 0xa4, 0xbd, 0x82, 0xe3, 0x9c, 0x11,
-0x74, 0xa3, 0x96, 0x5b, 0xff, 0x65, 0xc5, 0x37,
-0x84, 0x71, 0x93, 0x78, 0x9f, 0x9b, 0x4f, 0xd7,
-0xf3, 0xea, 0xbf, 0x2c, 0xd8, 0x83, 0x29, 0xe8,
-0xe6, 0xe4, 0x95, 0x66, 0xfc, 0x87, 0x21, 0x22,
-0x17, 0x11, 0x7a, 0x34, 0x2f, 0xfe, 0xa3, 0x18,
-0x6c, 0xc9, 0xae, 0xc9, 0x3c, 0x7f, 0x23, 0xee,
-0xc8, 0xde, 0x94, 0x9e, 0x14, 0xd0, 0xfe, 0x4c,
-0xd5, 0xff, 0x27, 0x62, 0xd2, 0xe0, 0x29, 0x6f,
-0x7b, 0xc8, 0x11, 0x54, 0x14, 0x0b, 0xe1, 0x71,
-0x2b, 0x97, 0x57, 0xff, 0x85, 0x4a, 0xa3, 0x0b,
-0xf1, 0xfc, 0x3e, 0x2d, 0xe5, 0xf8, 0x3b, 0x66,
-0x7f, 0x0e, 0x22, 0x02, 0x47, 0x7b, 0xee, 0xee,
-0xff, 0xb3, 0x23, 0x63, 0x3f, 0x5f, 0x11, 0x9a,
-0x36, 0xe3, 0x34, 0xd5, 0xd3, 0x66, 0x7c, 0xe3,
-0x98, 0xf0, 0x91, 0xcc, 0x85, 0x43, 0x53, 0xc5,
-0x7f, 0xde, 0x35, 0x0d, 0x17, 0xaa, 0xe5, 0xbf,
-0x43, 0xb8, 0xcb, 0x3c, 0x48, 0xce, 0x9f, 0x53,
-0xff, 0xee, 0xca, 0x7f, 0xcd, 0x87, 0x57, 0x55,
-0xb6, 0x9b, 0x73, 0x0e, 0xc6, 0x42, 0x44, 0x74,
-0x76, 0xa8, 0x19, 0xbc, 0xd8, 0xff, 0x27, 0x2f,
-0xfe, 0xb3, 0xc3, 0x53, 0x07, 0x71, 0x43, 0xb3,
-0x0e, 0xea, 0xe2, 0x07, 0x85, 0x90, 0x1d, 0x98,
-0xc8, 0xd0, 0xe5, 0x54, 0x6b, 0x76, 0xfd, 0x17,
-0x1f, 0xff, 0x40, 0xac, 0x36, 0xda, 0x07, 0x84,
-0x16, 0x59, 0xfe, 0x1a, 0x3b, 0xfa, 0x06, 0x79,
-0x47, 0xa9, 0x8e, 0x54, 0x59, 0x76, 0xfd, 0x17,
-0xd7, 0x0f, 0x10, 0xc0, 0x1e, 0xa6, 0xd4, 0xf6,
-0x77, 0x94, 0xbd, 0x86, 0xeb, 0xf9, 0xc6, 0x5f,
-0xce, 0xab, 0xff, 0xc2, 0xf9, 0x26, 0x44, 0x09,
-0x69, 0x93, 0x66, 0x58, 0x0c, 0x97, 0x01, 0x33,
-0xcb, 0x41, 0xf6, 0xe2, 0x84, 0xf0, 0x4a, 0xde,
-0xf9, 0x68, 0x06, 0x47, 0x3b, 0x67, 0x30, 0xd0,
-0x31, 0xe1, 0x0a, 0x7c, 0x79, 0xcf, 0x5e, 0x20,
-0xfe, 0x93, 0x66, 0x17, 0xb3, 0xfa, 0xff, 0xb4,
-0x8c, 0xb0, 0x65, 0x73, 0x9d, 0xcd, 0xa8, 0x77,
-0xf5, 0xff, 0xa1, 0xbc, 0xdb, 0xf3, 0x51, 0x65,
-0xbb, 0x19, 0xff, 0x39, 0x6a, 0xf3, 0x7f, 0x26,
-0xe4, 0x81, 0x58, 0x0f, 0xf4, 0xe5, 0xf5, 0xff,
-0xc9, 0xf0, 0x31, 0xdc, 0x6d, 0x9f, 0x49, 0xb0,
-0x9d, 0x4d, 0x5c, 0xea, 0xe9, 0xb6, 0xf9, 0xcf,
-0x59, 0xf8, 0x47, 0x62, 0xfa, 0xdc, 0x9e, 0xd5,
-0x36, 0x19, 0xf8, 0xb1, 0xbc, 0x8f, 0x31, 0x8f,
-0x96, 0xdb, 0xff, 0x59, 0xda, 0x21, 0x59, 0xfa,
-0x09, 0x5e, 0x6a, 0x2e, 0xa4, 0x1a, 0xb3, 0x7f,
-0x82, 0x37, 0xa4, 0x38, 0x88, 0x71, 0xc8, 0xb1,
-0x9f, 0x5d, 0x80, 0xfe, 0xbd, 0x11, 0xc7, 0x67,
-0xa5, 0x41, 0xc3, 0xe8, 0xdf, 0x4f, 0x58, 0x57,
-0xbe, 0x94, 0xe1, 0x3f, 0x8f, 0x81, 0xb5, 0x3e,
-0x55, 0xd7, 0xb1, 0xb3, 0x76, 0x44, 0x68, 0xa5,
-0xfa, 0x8a, 0xd9, 0x81, 0x21, 0x93, 0xff, 0x4a,
-0x4b, 0xd6, 0x63, 0x27, 0x5c, 0xcf, 0x2f, 0x71,
-0x84, 0x9c, 0x22, 0x41, 0xb9, 0xcf, 0x3e, 0x1f,
-0xcd, 0x5e, 0x0f, 0x86, 0xe4, 0x9d, 0x4a, 0x3f,
-0xb8, 0x1e, 0xca, 0xc8, 0x72, 0xb5, 0x3b, 0x97,
-0xff, 0x3c, 0x0a, 0x16, 0xff, 0x27, 0xbb, 0xed,
-0x73, 0xa2, 0x1e, 0x4f, 0x10, 0xbb, 0x84, 0x47,
-0x84, 0x2e, 0xcf, 0xea, 0xff, 0x0c, 0x0e, 0xff,
-0xa7, 0x84, 0x0b, 0x1b, 0x2c, 0xfc, 0xf3, 0x00,
-0x7b, 0xfe, 0x76, 0x78, 0x41, 0xcd, 0xeb, 0x7f,
-0xe8, 0x8a, 0x3f, 0xbb, 0xcd, 0x0e, 0x75, 0x67,
-0xe4, 0x73, 0xfa, 0xff, 0xe4, 0xd3, 0x7e, 0xe8,
-0x3c, 0x4c, 0x84, 0x6d, 0x73, 0xf8, 0x7b, 0x19,
-0xfc, 0x03, 0x9b, 0x73, 0xb2, 0xe7, 0x28, 0x3c,
-0x8f, 0xcb, 0x7e, 0x82, 0x59, 0x98, 0x29, 0xfb,
-0x3f, 0xe7, 0xb2, 0x7d, 0xde, 0x82, 0xe7, 0xd7,
-0x5c, 0x83, 0x30, 0xef, 0xa1, 0x29, 0xfa, 0xff,
-0xd8, 0xfd, 0xc7, 0x66, 0x59, 0xb0, 0xc7, 0x5a,
-0x6f, 0xec, 0xfe, 0x73, 0xc9, 0xcc, 0xfc, 0xfa,
-0xf7, 0x11, 0xab, 0xff, 0xa1, 0x6f, 0x9c, 0xc3,
-0x9e, 0x06, 0x9b, 0xff, 0x73, 0x03, 0xf5, 0x3e,
-0x21, 0x3e, 0x41, 0xf3, 0xf9, 0xcf, 0x60, 0xe5,
-0x23, 0xe2, 0x59, 0x7c, 0x18, 0x29, 0xac, 0x35,
-0x4e, 0xcd, 0xff, 0xf9, 0x24, 0x7f, 0x87, 0xe7,
-0x8d, 0x86, 0xf5, 0x69, 0x53, 0xf6, 0x3f, 0x44,
-0x18, 0xf3, 0x6e, 0x16, 0x9f, 0xa7, 0x82, 0x9f,
-0x4f, 0x9a, 0x9b, 0xff, 0x82, 0xda, 0x5c, 0xda,
-0x8f, 0x45, 0xd3, 0x5d, 0x94, 0x60, 0xf3, 0x35,
-0x5b, 0xf9, 0x41, 0x26, 0xff, 0x05, 0x6a, 0x86,
-0xff, 0x03, 0x5b, 0xb2, 0x68, 0x30, 0x55, 0x97,
-0x15, 0x08, 0x5b, 0x72, 0xf3, 0x5f, 0x4b, 0x2b,
-0xed, 0xb2, 0xf7, 0x9a, 0x2c, 0xfe, 0x0f, 0x67,
-0x04, 0x69, 0xc4, 0x8a, 0x80, 0x7d, 0x90, 0xd5,
-0xff, 0x87, 0xcf, 0xee, 0xf0, 0xed, 0xf8, 0xfc,
-0xf7, 0xd9, 0xf3, 0xe5, 0x61, 0x9f, 0x13, 0xf0,
-0xf3, 0xa9, 0xfa, 0xff, 0xb8, 0xea, 0xa1, 0xee,
-0x73, 0xe2, 0x3f, 0x1d, 0xde, 0x9f, 0x28, 0xbb,
-0xf5, 0xde, 0xdc, 0xfa, 0xf7, 0xca, 0xac, 0xfc,
-0x17, 0xdc, 0xed, 0xf0, 0x7f, 0x4a, 0xe5, 0x18,
-0x01, 0xfb, 0xa0, 0xb4, 0x4c, 0xfc, 0x27, 0x6a,
-0xf7, 0x3f, 0xac, 0xc8, 0xa1, 0xfd, 0x60, 0xfe,
-0x6b, 0x9b, 0x1d, 0x01, 0xcb, 0xc4, 0x7f, 0x06,
-0x2b, 0xb6, 0x65, 0xe9, 0x33, 0xc3, 0xff, 0x09,
-0xf0, 0xc6, 0x02, 0xb9, 0xf5, 0xef, 0xd6, 0xf9,
-0xb0, 0xf6, 0x34, 0x1b, 0x32, 0xb4, 0x1f, 0x6f,
-0xa5, 0xd8, 0xc3, 0x0f, 0x7a, 0x9b, 0xe6, 0xe6,
-0xff, 0x1c, 0xc8, 0x59, 0x0f, 0x0b, 0x2c, 0x61,
-0xfe, 0x72, 0xdf, 0xc6, 0x45, 0xef, 0x24, 0xf3,
-0xf8, 0xcf, 0x1e, 0x48, 0xba, 0xd5, 0x8e, 0xdd,
-0x7e, 0xca, 0x4d, 0xfc, 0xc3, 0x1b, 0x21, 0x8e,
-0x48, 0x39, 0xfc, 0x67, 0xa7, 0xff, 0x61, 0xb2,
-0x35, 0x97, 0xff, 0x73, 0x94, 0xcc, 0xb5, 0x23,
-0x42, 0x07, 0xf2, 0xf3, 0x11, 0xf9, 0x6d, 0xb2,
-0x90, 0xc1, 0xdb, 0x9d, 0x8b, 0x7f, 0x04, 0xc8,
-0x67, 0xff, 0xbe, 0x69, 0x23, 0xa2, 0x2a, 0x3b,
-0x22, 0x94, 0xc9, 0x7f, 0xc9, 0xf1, 0x19, 0xae,
-0xb6, 0x3f, 0x5d, 0x56, 0xdb, 0x1f, 0x7e, 0xe5,
-0x88, 0x72, 0x89, 0x1d, 0x11, 0xca, 0xc4, 0x7f,
-0xea, 0xaa, 0x76, 0xc8, 0x6e, 0x76, 0xe5, 0x50,
-0xc6, 0xb0, 0x24, 0x32, 0xf6, 0xc7, 0xd5, 0xff,
-0x19, 0xcf, 0x87, 0x4d, 0x38, 0x6c, 0x1f, 0xb3,
-0xff, 0x8f, 0x8d, 0x88, 0xe6, 0x41, 0x5e, 0xfd,
-0xfb, 0x13, 0x2a, 0x8f, 0xff, 0x58, 0x8f, 0x2d,
-0xd4, 0x8f, 0xbb, 0x68, 0xcf, 0x1e, 0xa7, 0x11,
-0x6b, 0x06, 0xff, 0x24, 0x81, 0x9f, 0x27, 0xeb,
-0x4c, 0x73, 0xc4, 0x35, 0xf1, 0x58, 0xc4, 0x1e,
-0x9f, 0xe9, 0x2f, 0xe1, 0xf4, 0x3f, 0xcc, 0xf4,
-0x73, 0x6b, 0x3d, 0x66, 0x0a, 0x01, 0xa2, 0xe7,
-0xd7, 0xbf, 0x3b, 0xf6, 0xf3, 0x49, 0xd1, 0xa4,
-0xb9, 0x5a, 0xf3, 0x6d, 0xc0, 0x40, 0xba, 0x43,
-0x7d, 0x71, 0xd7, 0x7f, 0x4d, 0x69, 0x6f, 0x01,
-0xf9, 0x30, 0xca, 0x0e, 0x4b, 0x70, 0xd7, 0xbf,
-0xc3, 0xb3, 0x92, 0x93, 0xf6, 0xfa, 0xbd, 0xed,
-0xef, 0xcc, 0x7e, 0xbf, 0x35, 0xf3, 0x6d, 0x62,
-0x67, 0x26, 0x5e, 0x31, 0x64, 0xf9, 0xaf, 0x45,
-0x59, 0xb4, 0x55, 0xee, 0xb6, 0xc2, 0xa4, 0xde,
-0x3e, 0xe8, 0xd3, 0xd5, 0xff, 0x47, 0xca, 0x76,
-0xd3, 0xa6, 0xc0, 0xcf, 0x47, 0x1b, 0x74, 0x3c,
-0x20, 0xb8, 0xf0, 0x8f, 0x9a, 0xbd, 0xde, 0xf6,
-0x71, 0xbe, 0x47, 0x77, 0x8e, 0x07, 0x74, 0xe1,
-0x9f, 0xf8, 0x4a, 0xd7, 0x34, 0xed, 0x36, 0x08,
-0x66, 0xe0, 0x4b, 0x09, 0xaa, 0x79, 0xf5, 0xef,
-0x14, 0xcf, 0x47, 0xb3, 0xaa, 0x75, 0xb4, 0x6c,
-0x9a, 0x53, 0xa7, 0x79, 0x10, 0x3c, 0xe6, 0x2f,
-0x5c, 0xf8, 0x67, 0xfa, 0x39, 0xf8, 0x95, 0xc9,
-0xff, 0x39, 0x27, 0xff, 0x9e, 0xad, 0x96, 0xaa,
-0x2c, 0xda, 0x33, 0xb6, 0xce, 0x66, 0x77, 0x08,
-0xb9, 0xce, 0x87, 0x75, 0x48, 0xce, 0x1f, 0x08,
-0x28, 0x78, 0xdc, 0x6d, 0x7f, 0x48, 0x9c, 0xf8,
-0xd3, 0x7d, 0xa9, 0xb2, 0x54, 0xa6, 0xdf, 0x08,
-0x8f, 0xff, 0xac, 0xe4, 0xd5, 0x04, 0x15, 0xb8,
-0xfb, 0x46, 0xbc, 0x57, 0x69, 0x4d, 0x13, 0x5b,
-0x85, 0x27, 0x8d, 0x3e, 0x8d, 0x34, 0x09, 0xf6,
-0x78, 0x43, 0xb0, 0xf9, 0xcf, 0x65, 0xc7, 0xa4,
-0x1b, 0x78, 0x3f, 0x25, 0x47, 0xb1, 0x85, 0xbf,
-0x05, 0x2c, 0x84, 0x7f, 0x65, 0x0b, 0x49, 0x39,
-0xf6, 0x04, 0x2a, 0x76, 0x48, 0xbf, 0x90, 0x10,
-0x96, 0x08, 0xc7, 0xe0, 0xff, 0x07, 0xd6, 0xf9,
-0x7a, 0x96, 0x5a, 0x7e, 0xad, 0x1e, 0x48, 0x36,
-0x19, 0x4b, 0x9e, 0x55, 0x4a, 0x1d, 0x7e, 0xfb,
-0x51, 0x86, 0x7f, 0x5a, 0xb8, 0x5a, 0x6e, 0x3f,
-0x53, 0x90, 0xcb, 0x07, 0x4b, 0x4b, 0x3c, 0x3f,
-0xd8, 0xd9, 0x3c, 0x45, 0xff, 0xe7, 0x94, 0x75,
-0x0c, 0xdf, 0x12, 0xfb, 0xfe, 0x25, 0x58, 0x66,
-0xc8, 0x89, 0xe8, 0x49, 0x71, 0xb6, 0x63, 0x7f,
-0x0e, 0x48, 0x41, 0xe9, 0x74, 0x81, 0xb5, 0x0c,
-0x70, 0x19, 0x97, 0xb8, 0xf8, 0x60, 0xbf, 0x31,
-0xfa, 0xee, 0xd9, 0x6a, 0x30, 0xd3, 0xd4, 0xe4,
-0xfc, 0xbc, 0x2e, 0xfe, 0xcf, 0x41, 0xb3, 0x3a,
-0xd2, 0xb6, 0x3f, 0x9e, 0x50, 0xd9, 0x7b, 0x6a,
-0x2f, 0xe5, 0xad, 0x12, 0xe6, 0x3a, 0xf6, 0x67,
-0x99, 0x30, 0x43, 0xfd, 0x01, 0xfd, 0x0a, 0x73,
-0xfa, 0x53, 0xd0, 0x80, 0xdf, 0x82, 0x9e, 0x44,
-0x75, 0x9a, 0x19, 0xae, 0xf9, 0xd4, 0x5e, 0x6f,
-0xc8, 0xff, 0xd9, 0x95, 0xd3, 0xed, 0xf9, 0x20,
-0x6f, 0x84, 0x58, 0x12, 0x12, 0x47, 0xc8, 0x2b,
-0x6a, 0x68, 0x78, 0x49, 0x85, 0x52, 0xe6, 0x3c,
-0x8f, 0x7e, 0xe9, 0xb3, 0x66, 0x77, 0xac, 0x94,
-0x80, 0xef, 0x0b, 0x9f, 0xa6, 0xd3, 0xf6, 0xf9,
-0x04, 0xcc, 0x57, 0x5b, 0x86, 0x7d, 0x3f, 0x11,
-0x47, 0x2f, 0xb1, 0xdf, 0x47, 0xce, 0xff, 0x91,
-0x78, 0xda, 0x2b, 0x98, 0xf7, 0x62, 0x9e, 0x51,
-0xad, 0xf3, 0x8b, 0x3d, 0x99, 0xfa, 0x2f, 0x7b,
-0xff, 0x35, 0x21, 0xe6, 0x1c, 0x7b, 0xd1, 0x87,
-0x42, 0x0f, 0x66, 0xd8, 0x43, 0xa4, 0x29, 0x53,
-0x4f, 0x67, 0xe2, 0x9f, 0xa3, 0xca, 0xe4, 0x14,
-0xc7, 0x7c, 0x1c, 0x82, 0x58, 0x9c, 0x27, 0xfe,
-0xd4, 0xa9, 0xf8, 0xcf, 0x19, 0xc5, 0xca, 0x96,
-0x70, 0xa8, 0x35, 0xfe, 0xb6, 0x86, 0x2f, 0x66,
-0x99, 0xab, 0xfe, 0xcb, 0xe1, 0xff, 0x04, 0x9c,
-0xb6, 0xcf, 0xaa, 0x25, 0x9c, 0xd4, 0x0f, 0xe9,
-0x03, 0xd4, 0xf7, 0x9e, 0x72, 0xc3, 0x85, 0xeb,
-0xdf, 0xff, 0xdd, 0xfe, 0x87, 0x9f, 0x40, 0x73,
-0x1d, 0xe6, 0xf5, 0xd1, 0x4b, 0x12, 0xa2, 0x38,
-0x15, 0xff, 0xc7, 0xc6, 0x33, 0xcd, 0x8e, 0x47,
-0xfe, 0x8d, 0x75, 0x3e, 0xbb, 0xbb, 0xfe, 0xdd,
-0x85, 0x97, 0x84, 0x3c, 0x20, 0x14, 0xb5, 0xc6,
-0xdf, 0xec, 0xfc, 0xbe, 0x6e, 0xfe, 0xb3, 0x25,
-0xf8, 0x9d, 0x0e, 0xc9, 0x2f, 0xe2, 0xd1, 0xb1,
-0x0c, 0x2a, 0x78, 0x74, 0x67, 0xfc, 0xa0, 0xac,
-0xf1, 0x68, 0xf3, 0x05, 0xe6, 0x3b, 0x82, 0xf1,
-0x67, 0xaa, 0xdc, 0x77, 0xa1, 0xf8, 0x8f, 0x99,
-0xff, 0x92, 0x2d, 0xe1, 0x2c, 0x39, 0xdf, 0xca,
-0x2b, 0xc2, 0x32, 0xfd, 0x7f, 0xfa, 0xa7, 0x4f,
-0x05, 0x0b, 0x6d, 0x46, 0x74, 0xf2, 0x55, 0x19,
-0x3b, 0x42, 0xaf, 0x75, 0xc5, 0x7f, 0x2a, 0x6d,
-0xfc, 0xd3, 0xea, 0x00, 0xa1, 0xa4, 0x2d, 0x1c,
-0x8d, 0x61, 0x69, 0x98, 0xb2, 0xc6, 0x15, 0xff,
-0x01, 0x87, 0xff, 0xe3, 0xb7, 0x84, 0x04, 0x86,
-0xb9, 0x24, 0x53, 0x03, 0x5a, 0x77, 0x00, 0x13,
-0x7f, 0x31, 0xd7, 0xf9, 0xb0, 0x05, 0xa6, 0xb6,
-0x2f, 0x77, 0xa9, 0x31, 0x83, 0x88, 0x2a, 0x7a,
-0x91, 0x61, 0xb5, 0x89, 0xbc, 0x93, 0x89, 0xff,
-0x48, 0xf9, 0x6d, 0x2d, 0x9d, 0xe7, 0xff, 0x2d,
-0xec, 0xd7, 0x91, 0x11, 0x44, 0x32, 0xf1, 0x9f,
-0x27, 0xd4, 0x4f, 0xc0, 0xc3, 0x2f, 0x23, 0xc3,
-0x81, 0xe3, 0x1f, 0x67, 0xbd, 0x65, 0xf1, 0x9f,
-0xf3, 0x04, 0x63, 0xa4, 0xa3, 0x09, 0x3b, 0x72,
-0xbb, 0xea, 0xdf, 0x7b, 0x4c, 0xfc, 0xb3, 0xc8,
-0xcd, 0x7f, 0x96, 0x2d, 0x61, 0x12, 0xee, 0xd7,
-0xb7, 0xa2, 0xe0, 0x99, 0x8a, 0xff, 0x6c, 0xbd,
-0x38, 0x29, 0x14, 0xa4, 0xa0, 0xd1, 0x17, 0x22,
-0x43, 0x58, 0x4a, 0x89, 0x5f, 0x79, 0x9c, 0xf5,
-0x50, 0x9d, 0xe1, 0x3f, 0xbf, 0x29, 0xe5, 0x02,
-0xa1, 0x51, 0xe0, 0xfd, 0x2b, 0xe6, 0x11, 0xd9,
-0x36, 0x57, 0x56, 0xfc, 0xe7, 0xc6, 0xac, 0x6a,
-0x2f, 0x47, 0x38, 0xce, 0x1b, 0x01, 0x2d, 0x59,
-0xa5, 0x78, 0x9c, 0xfe, 0xcf, 0x4e, 0xfc, 0xc7,
-0x0a, 0x6b, 0x64, 0xd9, 0x93, 0x34, 0x31, 0x85,
-0xf2, 0x29, 0xe3, 0x3f, 0x8e, 0xf0, 0x81, 0x73,
-0x85, 0xbc, 0x1a, 0x43, 0xfe, 0x4f, 0xb7, 0x9a,
-0x89, 0xbf, 0x95, 0xe6, 0xec, 0xbf, 0x4a, 0x3a,
-0xc9, 0x5b, 0x71, 0xab, 0xec, 0xe2, 0x88, 0xf9,
-0xfc, 0x9d, 0x65, 0x4f, 0x38, 0xf1, 0xb7, 0xfe,
-0xa9, 0xf6, 0x6b, 0xd4, 0xb9, 0xf2, 0x1d, 0xd3,
-0x5e, 0x6d, 0xcb, 0x8f, 0xff, 0x84, 0x5a, 0x0f,
-0xaa, 0xa6, 0x19, 0x77, 0x95, 0xf9, 0x68, 0x0f,
-0xc6, 0x79, 0x61, 0x5d, 0xbf, 0xf3, 0xbe, 0xcf,
-0x9d, 0x7e, 0x21, 0x3c, 0xc3, 0x84, 0xdf, 0xa9,
-0x3f, 0x4f, 0x37, 0xa1, 0xe1, 0xbd, 0xdf, 0x75,
-0x3e, 0x6c, 0xfe, 0x30, 0x47, 0x78, 0x57, 0x7f,
-0x57, 0x67, 0x42, 0xc8, 0xb5, 0x1f, 0xec, 0x4a,
-0x9c, 0x91, 0x6d, 0x37, 0x57, 0xe1, 0xf8, 0x3b,
-0x0b, 0x08, 0x1d, 0x63, 0xeb, 0x8d, 0x17, 0x82,
-0x69, 0x8e, 0x7f, 0x1c, 0x92, 0x56, 0x7a, 0x91,
-0xed, 0xdc, 0x97, 0x53, 0xb6, 0x33, 0x0f, 0x85,
-0x77, 0xb0, 0x35, 0x2b, 0x13, 0xda, 0xbe, 0xe6,
-0x18, 0x88, 0xa9, 0xf1, 0x8f, 0x25, 0x7c, 0x50,
-0x3d, 0xc8, 0xc6, 0x33, 0x28, 0xa5, 0xe5, 0xc7,
-0x7f, 0xdc, 0x78, 0x9b, 0xee, 0x82, 0x00, 0x13,
-0x66, 0x8e, 0x08, 0x3b, 0x39, 0xf1, 0x63, 0x61,
-0x26, 0xff, 0x45, 0xe5, 0x95, 0x32, 0x96, 0x01,
-0x6e, 0x40, 0x36, 0xb5, 0x3d, 0x5f, 0xed, 0x77,
-0x36, 0x50, 0x44, 0xfe, 0xed, 0x92, 0x94, 0x92,
-0x53, 0xff, 0x2e, 0xf2, 0xfe, 0x2d, 0x56, 0xda,
-0xc2, 0xe5, 0xdf, 0x4f, 0xc0, 0x3f, 0x98, 0xc0,
-0x2f, 0xeb, 0x7c, 0xd8, 0xee, 0xd0, 0x96, 0x83,
-0xf6, 0xe9, 0x7b, 0x07, 0x03, 0xcd, 0x9e, 0xaa,
-0x7d, 0xff, 0xc7, 0xcf, 0x43, 0x3c, 0x68, 0xdf,
-0x0d, 0x05, 0x3c, 0x7d, 0xef, 0x13, 0xee, 0x2f,
-0x77, 0x37, 0x69, 0x66, 0xdf, 0x0f, 0x0c, 0x89,
-0x4f, 0x2d, 0xb8, 0x3f, 0xff, 0xcf, 0x9e, 0xc7,
-0xc7, 0x3e, 0x62, 0x08, 0xfe, 0x94, 0xcf, 0x7f,
-0xc6, 0xf3, 0x10, 0xe1, 0x7f, 0xe2, 0x3c, 0xc4,
-0x2a, 0x63, 0x6d, 0xc8, 0xba, 0x1b, 0x13, 0x0e,
-0xca, 0x5f, 0xfd, 0x77, 0xce, 0x43, 0x44, 0x02,
-0x8a, 0xa5, 0x3f, 0x64, 0xa2, 0xf0, 0x04, 0xf9,
-0x27, 0xe9, 0x1f, 0xef, 0x66, 0x69, 0xdb, 0xba,
-0xed, 0x54, 0xfa, 0xcf, 0x9c, 0x87, 0xe8, 0x35,
-0x9c, 0x1f, 0x82, 0x09, 0x07, 0xa1, 0xd9, 0x35,
-0xea, 0xe2, 0x79, 0x88, 0x9f, 0x2c, 0xfc, 0x7f,
-0x79, 0xfc, 0x7f, 0xb2, 0xf7, 0xf1, 0x4f, 0xbe,
-0x7f, 0xc6, 0xfa, 0x71, 0xc3, 0xd8, 0xfc, 0x7f,
-0xdc, 0x1e, 0x66, 0x7f, 0x9a, 0x3f, 0xe9, 0x4b,
-0xfe, 0x3c, 0x6b, 0x43, 0x5c, 0xc9, 0x53, 0xb8,
-0xa1, 0xff, 0xad, 0xfa, 0xff, 0xc4, 0x1f, 0x22,
-0xf3, 0x71, 0xec, 0xa1, 0xe5, 0x8f, 0xfe, 0x77,
-0x9c, 0x0f, 0x5b, 0x65, 0xfc, 0x69, 0xfa, 0xcf,
-0x7e, 0xfe, 0x7f, 0x5f, 0xff, 0xae, 0xf1, 0xff,
-0xa1, 0xf3, 0x61, 0xbd, 0x43, 0x17, 0xed, 0xe1,
-0x7f, 0x1a, 0xfb, 0xf3, 0x9f, 0x6c, 0xfc, 0x8b,
-0x0b, 0xa0, 0x53, 0x7f, 0x53, 0xbd, 0x0e, 0x8a,
-0x87, 0x44, 0x2e, 0x54, 0x14, 0xbf, 0x28, 0xde,
-0x63, 0xdc, 0xa9, 0x7e, 0xca, 0x12, 0x22, 0x9f,
-0x92, 0x0a, 0x8c, 0x59, 0xce, 0xf8, 0x9b, 0xda,
-0x85, 0x7b, 0x84, 0x3b, 0xf5, 0x3f, 0x57, 0xd5,
-0x9e, 0x02, 0x53, 0x98, 0x3e, 0xec, 0x08, 0xd6,
-0x57, 0x57, 0x18, 0xb3, 0x9c, 0x0d, 0x12, 0x25,
-0x82, 0x46, 0x3b, 0xb4, 0x32, 0x59, 0xda, 0x67,
-0x0a, 0x95, 0x78, 0x6c, 0xa1, 0x79, 0x85, 0x0b,
-0x51, 0x26, 0x50, 0xcd, 0xb9, 0x3f, 0x05, 0x21,
-0x0a, 0x95, 0x70, 0x09, 0x7c, 0x87, 0x32, 0x61,
-0x29, 0x5c, 0x22, 0x17, 0x30, 0x41, 0x58, 0x0a,
-0x9f, 0xaf, 0xb4, 0x05, 0x28, 0xa0, 0x9a, 0xf3,
-0x0a, 0xdc, 0xb4, 0xb4, 0x60, 0x8e, 0xf0, 0x59,
-0x7a, 0xfb, 0x02, 0x29, 0x5e, 0x70, 0xaf, 0x70,
-0x27, 0xfd, 0x73, 0x6d, 0xfa, 0x88, 0x2d, 0x1c,
-0x14, 0x6e, 0x13, 0xee, 0x4c, 0x32, 0xc1, 0xf5,
-0x3c, 0x2f, 0xea, 0xba, 0xa6, 0xca, 0x12, 0x11,
-0xd8, 0x5f, 0xc2, 0x3f, 0x54, 0x08, 0x42, 0xcc,
-0x14, 0x54, 0x21, 0x26, 0x59, 0x57, 0x68, 0x06,
-0xe2, 0xbd, 0xd8, 0x21, 0xdd, 0x25, 0x54, 0xd2,
-0x9b, 0x99, 0x61, 0x95, 0x34, 0x41, 0x4e, 0xb4,
-0x6a, 0x6a, 0x5c, 0xaa, 0x16, 0x64, 0x68, 0x0d,
-0xa9, 0x3d, 0x78, 0x05, 0x05, 0x9a, 0xd1, 0xcf,
-0x8b, 0x0b, 0x57, 0xdf, 0xd6, 0x75, 0x47, 0xf2,
-0xcf, 0x02, 0x92, 0x5c, 0xd0, 0xda, 0x15, 0x99,
-0xb8, 0x23, 0x30, 0xdd, 0x53, 0xa0, 0xd3, 0x88,
-0x56, 0x11, 0x98, 0x4e, 0x4c, 0xc1, 0x5b, 0x00,
-0x2e, 0xfd, 0x5c, 0xd1, 0xf5, 0xe7, 0xf0, 0x67,
-0xc6, 0xf4, 0x88, 0x74, 0xbf, 0xf0, 0x67, 0x4c,
-0x28, 0xed, 0x2c, 0xb8, 0x53, 0xb8, 0x9d, 0xde,
-0x61, 0x4c, 0x0f, 0x31, 0xa1, 0x1c, 0x98, 0x30,
-0x57, 0x72, 0xb6, 0x5f, 0x6c, 0xbc, 0xa6, 0x77,
-0x40, 0x19, 0x48, 0x94, 0x99, 0xab, 0x56, 0x50,
-0x75, 0x01, 0x4d, 0x60, 0x1b, 0xa8, 0x54, 0x52,
-0x05, 0x89, 0xd9, 0x08, 0x14, 0xd4, 0xa1, 0xcc,
-0xf8, 0x17, 0x97, 0x31, 0x8b, 0xc1, 0x13, 0xd1,
-0x1a, 0xdb, 0xe6, 0xc6, 0x90, 0x7f, 0xad, 0x11,
-0xfb, 0x4a, 0x21, 0x17, 0x92, 0xf2, 0x02, 0x97,
-0x7e, 0x22, 0xd3, 0x96, 0x0b, 0xff, 0x05, 0x3e,
-0xaf, 0x57, 0xd0, 0x02, 0x53, 0x98, 0x9e, 0x28,
-0x88, 0x0a, 0x47, 0xe0, 0xef, 0x80, 0x09, 0x9a,
-0x29, 0xb8, 0xe7, 0xab, 0x8b, 0x51, 0x38, 0x02,
-0x73, 0x90, 0xaf, 0x87, 0xbf, 0xd7, 0x1c, 0x28,
-0xa6, 0xe2, 0x5d, 0xc2, 0x52, 0x7a, 0x09, 0x17,
-0x00, 0x05, 0xf7, 0xf8, 0x9b, 0x5a, 0xa5, 0x50,
-0x97, 0x57, 0x6b, 0x93, 0xe5, 0x98, 0x14, 0xa2,
-0x28, 0xa8, 0xfb, 0xac, 0x2b, 0xea, 0x3e, 0x35,
-0x34, 0xc4, 0x05, 0xd7, 0xef, 0xc5, 0x3e, 0x21,
-0xc0, 0x8e, 0x2d, 0xec, 0xf7, 0xb2, 0x04, 0xc3,
-0x16, 0x46, 0x4c, 0x41, 0x03, 0xc3, 0xa5, 0x1f,
-0x22, 0x84, 0xe8, 0x62, 0xad, 0x5c, 0x96, 0x62,
-0xb6, 0xb0, 0x4f, 0x08, 0x19, 0x8b, 0x43, 0xb7,
-0xcb, 0xd2, 0x2b, 0x42, 0xa8, 0x8b, 0x09, 0x5e,
-0xc9, 0x35, 0xfe, 0xc5, 0xd6, 0x82, 0x68, 0xd7,
-0x52, 0xed, 0xf3, 0x6c, 0xbc, 0x64, 0x0a, 0xd3,
-0x63, 0x05, 0xd1, 0xa1, 0xa5, 0x21, 0x26, 0x74,
-0x0b, 0x9a, 0x29, 0x50, 0x97, 0x7e, 0x5a, 0x4d,
-0x5d, 0x3a, 0x4a, 0x35, 0x05, 0xaf, 0x26, 0x32,
-0x41, 0x32, 0x05, 0x21, 0x7b, 0xbe, 0xd1, 0xae,
-0x4a, 0xed, 0xe6, 0x0e, 0xd8, 0xc8, 0x84, 0x4b,
-0xb5, 0x9b, 0xe5, 0xd2, 0x98, 0xb4, 0x1c, 0xe7,
-0xdb, 0x51, 0xba, 0x51, 0xd2, 0x50, 0x58, 0xec,
-0x5e, 0x3f, 0x37, 0x45, 0x0b, 0x96, 0x0a, 0x9f,
-0x87, 0x3f, 0xa3, 0x92, 0x26, 0x99, 0xc2, 0x74,
-0xbc, 0x52, 0x08, 0xa5, 0x28, 0xc8, 0x70, 0x33,
-0x0a, 0xba, 0x6b, 0xfd, 0xdc, 0x2c, 0x7c, 0x8e,
-0xde, 0x11, 0x9d, 0xde, 0xcf, 0xde, 0xa6, 0x05,
-0x34, 0x12, 0xad, 0xa8, 0x2c, 0x28, 0xcc, 0x13,
-0x9c, 0xed, 0x32, 0xf3, 0x5e, 0x6c, 0xef, 0xc9,
-0xde, 0x3e, 0xa2, 0x43, 0x19, 0x13, 0x16, 0xf0,
-0x77, 0xa1, 0x54, 0xa2, 0xec, 0xa5, 0xe8, 0x90,
-0xf0, 0x0a, 0x0a, 0x15, 0xae, 0xf1, 0x2f, 0xde,
-0x4c, 0x3e, 0x47, 0x37, 0x45, 0xab, 0x55, 0xb8,
-0x59, 0xc4, 0x3f, 0x34, 0xab, 0xb2, 0x18, 0x85,
-0xc3, 0xd1, 0x6b, 0x99, 0x30, 0xcd, 0x12, 0x5c,
-0xcf, 0xf3, 0xe2, 0xcd, 0x05, 0xf7, 0x74, 0xdd,
-0x19, 0xfd, 0xf3, 0xca, 0xab, 0x5e, 0x2a, 0xb8,
-0x67, 0xf5, 0xe6, 0xe8, 0xe7, 0x2b, 0x4b, 0x99,
-0x10, 0x7b, 0x33, 0xfa, 0xf7, 0x95, 0xd3, 0x99,
-0xd0, 0xc5, 0x05, 0x97, 0x3d, 0x69, 0xbf, 0x59,
-0xc4, 0x8b, 0xd7, 0x55, 0x16, 0xbc, 0x44, 0xee,
-0xa1, 0x28, 0x14, 0xbf, 0x24, 0xe2, 0x1d, 0x3e,
-0xc5, 0x84, 0x69, 0xf7, 0x50, 0xbc, 0xd5, 0x74,
-0xa3, 0x34, 0xa3, 0x1f, 0xeb, 0xfe, 0x4b, 0xe5,
-0x35, 0x28, 0x2c, 0xfb, 0x73, 0xbc, 0x6d, 0x75,
-0x97, 0x1c, 0xfd, 0x0c, 0x13, 0x60, 0x56, 0x97,
-0x37, 0xda, 0x56, 0x59, 0x41, 0x4b, 0x9d, 0xe7,
-0x61, 0xef, 0x87, 0x06, 0xfc, 0x8d, 0x71, 0x0c,
-0x51, 0x8c, 0x4d, 0xd3, 0x5c, 0x21, 0xec, 0x87,
-0xbb, 0x53, 0xfb, 0x14, 0xb3, 0x3f, 0xae, 0xd5,
-0x56, 0x28, 0x2c, 0xeb, 0x5a, 0x1a, 0xbd, 0x04,
-0xcd, 0xd4, 0x32, 0x8a, 0x42, 0x81, 0x29, 0x7c,
-0x1e, 0x85, 0x6a, 0xfe, 0xd5, 0x74, 0x9a, 0xc9,
-0x5f, 0xdc, 0xa4, 0x17, 0x84, 0xb4, 0xc5, 0xf2,
-0xed, 0x20, 0xd1, 0x82, 0x4e, 0xe1, 0x4e, 0xf8,
-0x73, 0x98, 0x6e, 0x14, 0x74, 0x82, 0x25, 0x84,
-0xac, 0x2b, 0x99, 0xe7, 0xb9, 0xa9, 0x95, 0xb2,
-0x17, 0x2e, 0xc0, 0x97, 0x4d, 0x94, 0x56, 0x6a,
-0x92, 0x2c, 0x98, 0x42, 0x21, 0x0a, 0x9a, 0x29,
-0x50, 0xd7, 0x7c, 0x5b, 0x7b, 0xa2, 0x49, 0xb6,
-0x7e, 0xf8, 0xea, 0xea, 0x92, 0xf9, 0x49, 0xb7,
-0x12, 0x2e, 0x3c, 0x2e, 0x44, 0xcd, 0x2b, 0xee,
-0xf1, 0x6d, 0x57, 0x45, 0x8c, 0x3b, 0x42, 0x7f,
-0x26, 0xbf, 0xc8, 0xac, 0x4d, 0x57, 0x44, 0xbb,
-0x43, 0xb6, 0xcd, 0x8e, 0x3c, 0x5d, 0x2c, 0x88,
-0x50, 0xbc, 0x52, 0x00, 0x99, 0xe7, 0x01, 0x51,
-0xc0, 0xf1, 0xd3, 0x65, 0xa9, 0xcd, 0x14, 0xbc,
-0x05, 0x4c, 0x18, 0xe2, 0x42, 0xab, 0xf5, 0x55,
-0x81, 0xee, 0xd2, 0x0f, 0xe8, 0xba, 0xaa, 0x4a,
-0x92, 0xa0, 0xc6, 0xd1, 0xfe, 0x50, 0xd3, 0x04,
-0x9a, 0x02, 0xc0, 0x5d, 0x5c, 0x28, 0x75, 0x8d,
-0xbe, 0x69, 0x21, 0x21, 0x94, 0x26, 0xb5, 0x0e,
-0x4a, 0x08, 0x50, 0x1a, 0xd2, 0x64, 0x99, 0x0b,
-0x1a, 0x0a, 0x85, 0x96, 0xe0, 0x7a, 0x1e, 0xa6,
-0x4f, 0xd3, 0xc8, 0xd7, 0x52, 0x2e, 0x3c, 0xc4,
-0xac, 0x87, 0x80, 0x16, 0x06, 0xcd, 0x8e, 0x6d,
-0x88, 0x5c, 0xf3, 0x5d, 0xad, 0x8b, 0xf8, 0xed,
-0x25, 0x30, 0x4c, 0x45, 0xd3, 0x10, 0x15, 0xa3,
-0x70, 0x27, 0x7c, 0x8a, 0x0d, 0x9b, 0xa6, 0x71,
-0x21, 0xeb, 0xf7, 0x05, 0x29, 0x24, 0xa0, 0xf5,
-0xa0, 0x94, 0x0b, 0xcc, 0x74, 0x1a, 0x4c, 0xa8,
-0x64, 0x2f, 0x16, 0x18, 0x44, 0xe3, 0x42, 0xa5,
-0x7b, 0xbc, 0x64, 0x1a, 0x19, 0x9d, 0xd9, 0x9f,
-0x59, 0xe0, 0xd5, 0xc5, 0x08, 0x1c, 0x86, 0xd9,
-0x50, 0x04, 0x44, 0x57, 0x0f, 0x43, 0x2d, 0x17,
-0xc0, 0x3d, 0xbe, 0x40, 0x98, 0xa5, 0x2f, 0x8e,
-0x94, 0x27, 0x7a, 0x5e, 0x44, 0x21, 0x5a, 0x5e,
-0x21, 0x31, 0x61, 0xc1, 0xe2, 0xc8, 0xed, 0x15,
-0xd2, 0x70, 0x57, 0x35, 0x0a, 0x6a, 0xd6, 0xf3,
-0xd4, 0x14, 0xac, 0x18, 0xfa, 0x42, 0xe8, 0xf3,
-0xf1, 0x82, 0x47, 0x4d, 0x61, 0xfd, 0x74, 0x5b,
-0x28, 0xf8, 0xc1, 0x6a, 0xeb, 0x8a, 0x7b, 0xbc,
-0x97, 0x03, 0xfd, 0x42, 0xfc, 0xa3, 0x1c, 0x6c,
-0xde, 0x01, 0xdf, 0xb1, 0x1f, 0x23, 0x31, 0xd5,
-0xf3, 0xc0, 0xf2, 0x68, 0x69, 0xa5, 0xc4, 0xde,
-0xfa, 0x78, 0xbb, 0xe9, 0xc8, 0x4a, 0xe3, 0xd2,
-0x5d, 0xa5, 0x95, 0x3d, 0x37, 0x57, 0x0b, 0x3d,
-0xcb, 0x4d, 0xa1, 0xd4, 0x3d, 0x5e, 0xb8, 0x29,
-0x52, 0x7a, 0x87, 0xf4, 0x67, 0x42, 0x05, 0x14,
-0x44, 0x3e, 0x87, 0xc2, 0x74, 0xfd, 0xa6, 0x08,
-0xdc, 0x21, 0x4d, 0x87, 0x02, 0x7d, 0x41, 0x24,
-0x74, 0x87, 0x77, 0xba, 0x90, 0xb5, 0x1e, 0xe4,
-0x6a, 0x22, 0xeb, 0x31, 0x55, 0xeb, 0x91, 0xab,
-0x5b, 0xe5, 0x48, 0xac, 0x42, 0x2b, 0x90, 0x85,
-0xd6, 0x00, 0x0a, 0xd3, 0xe5, 0xea, 0xdb, 0xf8,
-0x95, 0xd5, 0xee, 0xc7, 0xf1, 0x00, 0xa1, 0x90,
-0xd4, 0x03, 0x15, 0x1e, 0x81, 0x50, 0x7d, 0xbb,
-0x1a, 0x90, 0x98, 0x90, 0xd0, 0x93, 0x28, 0xa4,
-0x99, 0xb0, 0x4d, 0xad, 0xab, 0x70, 0x8f, 0xf7,
-0x92, 0x72, 0xe8, 0x31, 0x96, 0x85, 0x84, 0xc5,
-0xe2, 0xed, 0x70, 0xf8, 0xc0, 0xac, 0x50, 0x31,
-0x13, 0xd4, 0xc3, 0xc6, 0xb5, 0xa1, 0x82, 0xc5,
-0xef, 0x94, 0xc3, 0xe1, 0xe1, 0x6b, 0x9b, 0x8a,
-0xdd, 0xcf, 0x53, 0x54, 0x70, 0xef, 0x82, 0xaa,
-0x84, 0x09, 0x03, 0xa0, 0x8a, 0x5e, 0x62, 0xe2,
-0x81, 0x37, 0xe9, 0xdf, 0x3b, 0x82, 0x7f, 0xba,
-0xe1, 0x1a, 0xaf, 0x7c, 0xa1, 0xf5, 0x67, 0x89,
-0x27, 0xb7, 0xd5, 0x17, 0x7d, 0x7a, 0x21, 0x13,
-0x76, 0x6f, 0xab, 0xbf, 0x45, 0xb9, 0x6d, 0xe1,
-0xe8, 0xc6, 0x27, 0x6b, 0x7f, 0x54, 0xa4, 0xb4,
-0x2e, 0x3c, 0xcc, 0x05, 0xf7, 0xf3, 0xdc, 0x70,
-0xfe, 0xd6, 0xf3, 0xff, 0xfa, 0xfc, 0x89, 0xf7,
-0x4f, 0xb6, 0x7c, 0x8b, 0x09, 0x4f, 0x9f, 0xf8,
-0xfd, 0xc9, 0x1b, 0xce, 0x2d, 0xf9, 0xd5, 0x83,
-0xe7, 0xc7, 0xce, 0x9e, 0xbc, 0xe1, 0xbe, 0x25,
-0xe7, 0xb9, 0x00, 0xff, 0x0b, 0x9f, 0xf0, 0xc3,
-0x45, 0x33, 0x5b, 0x6f, 0x49, 0x6c, 0x5c, 0x7e,
-0xd5, 0x49, 0xdf, 0x63, 0x6d, 0xe7, 0x13, 0xa7,
-0xfe, 0x21, 0xfc, 0x4f, 0xb7, 0x7c, 0xeb, 0xf5,
-0x5b, 0x12, 0xdf, 0x3d, 0xdb, 0x72, 0xfe, 0x96,
-0xab, 0x5f, 0xbf, 0xe5, 0xc4, 0x77, 0xc7, 0xdc,
-0xe3, 0x5b, 0xee, 0xbb, 0xf5, 0x57, 0x0f, 0x3e,
-0x3d, 0xf6, 0xbe, 0xf3, 0x18, 0x67, 0xcd, 0x07,
-0x1b, 0xfb, 0x3d, 0x1b, 0x7f, 0xeb, 0xaf, 0xf8,
-0x13, 0xba, 0xc7, 0xd7, 0xdc, 0xd7, 0xf1, 0xab,
-0x8d, 0xd7, 0x8d, 0xad, 0x5f, 0x76, 0x03, 0xfe,
-0xc3, 0x9d, 0xf8, 0x0f, 0xef, 0xbb, 0xf5, 0xad,
-0xf2, 0xa7, 0x7b, 0xde, 0x3f, 0x59, 0x53, 0xc9,
-0x85, 0x63, 0xcb, 0xb2, 0x1e, 0x28, 0xd6, 0xa9,
-0x6f, 0x56, 0xaf, 0xbe, 0x74, 0xba, 0x41, 0x98,
-0x00, 0x57, 0x57, 0x14, 0xbd, 0x48, 0xee, 0x31,
-0xd8, 0x95, 0x8a, 0xa2, 0x21, 0x06, 0x1d, 0xab,
-0xd4, 0x69, 0x65, 0x97, 0xba, 0xf5, 0x29, 0x59,
-0x68, 0x50, 0x18, 0xbe, 0x8a, 0x0b, 0x95, 0x2e,
-0x7c, 0x28, 0xcd, 0x12, 0xbc, 0x7a, 0x9b, 0x5a,
-0xe9, 0x1e, 0x6f, 0x9b, 0xe5, 0x9e, 0x58, 0xc6,
-0x3e, 0x5b, 0x40, 0x31, 0x56, 0xdd, 0x89, 0xf6,
-0xb9, 0x92, 0xd2, 0xac, 0x07, 0x32, 0xd1, 0x5a,
-0x17, 0xb5, 0x61, 0x5b, 0x0f, 0x2c, 0x63, 0xbb,
-0x37, 0x84, 0x6d, 0xb5, 0xd1, 0x4b, 0x2b, 0xc9,
-0xcd, 0x90, 0x35, 0x5e, 0x6e, 0xbf, 0xb7, 0xc8,
-0x4b, 0xdb, 0x0a, 0xe8, 0xfe, 0xe5, 0x4d, 0x42,
-0x55, 0xcf, 0x67, 0xb4, 0xd2, 0x11, 0xe9, 0x5e,
-0xa1, 0x8a, 0x7e, 0x26, 0x60, 0x0a, 0xf1, 0xcf,
-0x5c, 0x23, 0x18, 0xd9, 0xf7, 0x8f, 0xc8, 0x85,
-0xa4, 0x00, 0x5d, 0x21, 0x54, 0xaa, 0x78, 0x5b,
-0x1b, 0x28, 0xda, 0x42, 0xd6, 0xfb, 0xe5, 0x95,
-0xfc, 0xf8, 0x5a, 0x45, 0x18, 0x3e, 0xbc, 0x4b,
-0x90, 0x69, 0x6b, 0x54, 0x7d, 0x44, 0xba, 0x7a,
-0x01, 0x17, 0x12, 0x15, 0xb5, 0x42, 0x11, 0xb4,
-0x66, 0xbf, 0x8f, 0x9f, 0x96, 0x16, 0x0e, 0x5d,
-0x92, 0xbc, 0x29, 0x0e, 0x0d, 0xd2, 0x17, 0xba,
-0xca, 0x92, 0xed, 0xdb, 0x4b, 0xeb, 0xa4, 0x85,
-0x28, 0xec, 0x28, 0x9d, 0x09, 0x1d, 0xf4, 0x32,
-0x4d, 0xda, 0xe1, 0xda, 0x6d, 0xca, 0x46, 0x31,
-0x94, 0x43, 0x85, 0x51, 0xb0, 0x49, 0x2d, 0x66,
-0x46, 0xab, 0x62, 0x14, 0xd8, 0x8b, 0x00, 0xb7,
-0xe3, 0x95, 0x10, 0xdc, 0x0d, 0x7f, 0x01, 0x97,
-0x18, 0x05, 0xbb, 0x33, 0xec, 0x1f, 0x66, 0xc3,
-0x0a, 0x99, 0x2e, 0xd8, 0x5e, 0xb6, 0x53, 0xed,
-0x01, 0xdc, 0xdd, 0x82, 0x2e, 0xa8, 0x70, 0x13,
-0x5e, 0xd1, 0x99, 0x2d, 0x44, 0xf4, 0xc0, 0x40,
-0xae, 0x1e, 0xca, 0xdc, 0x1f, 0xf7, 0xad, 0x6c,
-0x5f, 0xc9, 0x36, 0xbf, 0xb8, 0xc1, 0x54, 0xdd,
-0x3b, 0x4d, 0x2b, 0x04, 0xa7, 0xc9, 0x59, 0xe3,
-0xa5, 0x28, 0x37, 0x92, 0xdc, 0xe2, 0x57, 0xc2,
-0x6d, 0xe6, 0x1d, 0x2b, 0xf9, 0xad, 0x0b, 0xa3,
-0x42, 0x3f, 0x7c, 0x99, 0x09, 0xce, 0x78, 0x55,
-0x00, 0x12, 0x85, 0x7e, 0x98, 0xa9, 0xc9, 0xd4,
-0x14, 0xa0, 0xc8, 0x11, 0xe2, 0x12, 0xbe, 0xa1,
-0xd3, 0x90, 0x28, 0x69, 0x7f, 0x74, 0x1b, 0x1f,
-0x76, 0x40, 0xb7, 0x03, 0x0b, 0x6d, 0xe1, 0x75,
-0x06, 0x9c, 0x18, 0x82, 0xea, 0x50, 0x33, 0xfe,
-0x5d, 0x97, 0x5c, 0xf8, 0x50, 0xcd, 0xc1, 0x87,
-0x46, 0x66, 0xdf, 0xec, 0xdc, 0x9f, 0xfd, 0x67,
-0xc8, 0x44, 0x6b, 0xdd, 0xb6, 0xb0, 0xcf, 0x16,
-0x5e, 0x00, 0x86, 0x3f, 0x43, 0x6d, 0xb2, 0x7b,
-0xbc, 0x8d, 0xdf, 0xd0, 0xff, 0x9a, 0x42, 0xa9,
-0x23, 0x74, 0x03, 0x13, 0x42, 0x4c, 0x70, 0x3d,
-0x8f, 0x30, 0x35, 0x3e, 0x34, 0x05, 0xc9, 0xfa,
-0x43, 0x99, 0xfb, 0x47, 0x84, 0xa9, 0xef, 0xaf,
-0x9a, 0x82, 0x89, 0x87, 0x4b, 0xdd, 0xcf, 0xa3,
-0x4b, 0x11, 0x66, 0x9b, 0xd9, 0x2f, 0x6a, 0x0b,
-0xa5, 0x2e, 0xc1, 0x0c, 0x89, 0x94, 0xb6, 0x3a,
-0xcf, 0xd3, 0xc1, 0x96, 0xeb, 0x02, 0x5a, 0x11,
-0x2d, 0xa8, 0x64, 0x10, 0xf2, 0x73, 0x54, 0x8d,
-0x4a, 0x28, 0x2c, 0xc8, 0x16, 0x16, 0x64, 0x96,
-0x4f, 0x07, 0x22, 0x26, 0xf6, 0x9b, 0x33, 0xbc,
-0xc4, 0xfe, 0x8b, 0xea, 0x60, 0xed, 0x95, 0x9c,
-0x4d, 0x13, 0x13, 0xc0, 0xb5, 0x3e, 0xf5, 0x9b,
-0x3e, 0xcf, 0xd0, 0x60, 0x4f, 0xf4, 0xaa, 0x08,
-0x5c, 0x42, 0x4a, 0xe9, 0x4f, 0x39, 0x2c, 0xb4,
-0xf1, 0x61, 0xbb, 0xf8, 0x39, 0x38, 0xbc, 0xe0,
-0xda, 0x48, 0xb1, 0xee, 0xc2, 0x63, 0x37, 0x4b,
-0xf7, 0x74, 0x55, 0x31, 0x50, 0x57, 0xfa, 0x12,
-0x17, 0xa6, 0xd9, 0xc2, 0x67, 0x98, 0x50, 0x78,
-0x4f, 0xd7, 0xe6, 0xe8, 0x5f, 0x57, 0x96, 0x1a,
-0x99, 0xfb, 0x0b, 0x37, 0x33, 0x58, 0xb8, 0x39,
-0x7a, 0x35, 0xfb, 0x96, 0x0b, 0x9f, 0xa9, 0x2c,
-0x7a, 0xc9, 0xba, 0x52, 0xf4, 0x12, 0xdc, 0x43,
-0xab, 0x18, 0x50, 0x74, 0x8d, 0x8f, 0xd8, 0xf8,
-0xb0, 0x12, 0x5e, 0x2a, 0x30, 0x61, 0xe4, 0xf4,
-0x97, 0xac, 0x2b, 0xd3, 0x5f, 0xaa, 0x98, 0x45,
-0xbd, 0xec, 0x0e, 0xc5, 0xfb, 0x32, 0xbf, 0x17,
-0x83, 0xc1, 0x1c, 0x1f, 0x32, 0xef, 0xc9, 0xcc,
-0xce, 0x2d, 0xa6, 0xfd, 0xa9, 0x45, 0xfb, 0xd3,
-0x21, 0x6d, 0x14, 0xd0, 0xfe, 0x94, 0x2f, 0x96,
-0xa8, 0x13, 0x62, 0xd2, 0xd9, 0xba, 0x5d, 0x46,
-0x2b, 0xa3, 0x85, 0xfd, 0xea, 0x63, 0x4c, 0xb8,
-0x2c, 0x5a, 0x58, 0x29, 0xac, 0x81, 0x65, 0x3d,
-0x95, 0x5c, 0x90, 0x96, 0x75, 0x55, 0x46, 0x6f,
-0xee, 0x17, 0x32, 0xbf, 0x17, 0xc3, 0xf3, 0xd2,
-0xaa, 0xea, 0x12, 0xb9, 0x2d, 0x06, 0xc9, 0x9e,
-0xb9, 0xc2, 0x0c, 0x10, 0x69, 0x29, 0x1e, 0x74,
-0x3b, 0x03, 0x3e, 0x93, 0x11, 0x04, 0xc3, 0xb5,
-0x7e, 0x6e, 0x83, 0x28, 0xe2, 0xc3, 0xc5, 0xd8,
-0xdd, 0x9e, 0x5e, 0xca, 0x96, 0x0d, 0x83, 0x85,
-0xcb, 0x11, 0x16, 0x76, 0x08, 0x1b, 0x4d, 0xa0,
-0xd8, 0xe1, 0xba, 0xbf, 0x5e, 0x40, 0x24, 0x6d,
-0x0b, 0x5f, 0x3f, 0xeb, 0x10, 0x0d, 0x26, 0x0b,
-0x39, 0x3e, 0x74, 0x80, 0x22, 0x17, 0xd8, 0x6b,
-0x9d, 0xf9, 0xbd, 0x88, 0xa4, 0x0f, 0x55, 0x84,
-0x6e, 0x62, 0x2f, 0x88, 0x14, 0x61, 0xcb, 0xec,
-0x33, 0x72, 0x29, 0xbb, 0xb2, 0x5a, 0xd5, 0xda,
-0x99, 0x00, 0x3a, 0x33, 0x00, 0x0c, 0x91, 0x42,
-0x69, 0x66, 0xbe, 0xec, 0x7d, 0x31, 0x2a, 0x42,
-0x6c, 0xe7, 0xe1, 0x61, 0x2f, 0x54, 0x45, 0x52,
-0xf0, 0x0a, 0x6d, 0x10, 0xc1, 0x2b, 0x8e, 0x20,
-0xb3, 0x51, 0xba, 0x33, 0x5e, 0x06, 0xd5, 0xc4,
-0x87, 0xa0, 0xfb, 0x99, 0xda, 0x04, 0x17, 0x3e,
-0xb4, 0x05, 0x17, 0x3e, 0x64, 0xef, 0x97, 0xbf,
-0x0c, 0xf1, 0xa1, 0xa7, 0x9f, 0xf8, 0x99, 0xe1,
-0xf6, 0x0b, 0x0e, 0x3e, 0xf4, 0xa2, 0x90, 0x84,
-0x80, 0x56, 0x44, 0x75, 0x97, 0x7e, 0x74, 0x6a,
-0xda, 0x9f, 0x52, 0xb6, 0xea, 0x84, 0x4a, 0xf9,
-0xcb, 0x6e, 0xfb, 0x73, 0x73, 0xb4, 0xb4, 0x5f,
-0xfa, 0xb2, 0x78, 0xad, 0x4b, 0x3f, 0x82, 0xbe,
-0x75, 0x39, 0x5c, 0x0a, 0x33, 0xf5, 0xa2, 0x44,
-0x2c, 0x0a, 0x0f, 0xcb, 0xcc, 0xec, 0x24, 0x6c,
-0xfb, 0x93, 0xd0, 0x3b, 0xd5, 0x2a, 0x98, 0x26,
-0x16, 0xb9, 0xdf, 0xaf, 0x65, 0xd2, 0x5c, 0x28,
-0x81, 0xb6, 0x18, 0xc5, 0xdf, 0xab, 0x44, 0x6a,
-0xa3, 0x6a, 0x5a, 0x62, 0x02, 0xa0, 0x50, 0xbb,
-0xa2, 0xe8, 0x32, 0x72, 0x73, 0x57, 0x22, 0xf3,
-0x7b, 0x45, 0xd8, 0xeb, 0x72, 0x7d, 0xb4, 0xe4,
-0x0e, 0xf1, 0x21, 0xf8, 0x67, 0x1a, 0xd2, 0xbd,
-0xaa, 0x28, 0xc1, 0xcb, 0x60, 0x09, 0x43, 0x98,
-0xf5, 0x60, 0xea, 0x05, 0xd7, 0x7a, 0x86, 0x02,
-0xb8, 0xd6, 0x28, 0x8e, 0x30, 0x18, 0xb9, 0x09,
-0x66, 0xe9, 0xc5, 0xba, 0x58, 0x01, 0x3f, 0x65,
-0x82, 0x37, 0x22, 0xaa, 0xf0, 0xd3, 0xda, 0x59,
-0x0b, 0xbc, 0x91, 0x36, 0x15, 0xf6, 0xb9, 0x9e,
-0xa7, 0x4d, 0x8a, 0x0e, 0x55, 0x76, 0xb2, 0xdf,
-0x77, 0x2d, 0x0a, 0xa1, 0x9b, 0xbd, 0xa5, 0xdd,
-0xb6, 0xe0, 0x58, 0x0c, 0xf7, 0xfa, 0xd1, 0xa1,
-0x06, 0x03, 0xc1, 0xaa, 0x15, 0x2c, 0x14, 0x21,
-0x93, 0x57, 0x59, 0x6d, 0x19, 0x46, 0xf7, 0xfa,
-0x11, 0x3a, 0xda, 0x11, 0x1f, 0xde, 0x2c, 0x40,
-0x4f, 0xfb, 0x5d, 0x28, 0x54, 0x3b, 0xf8, 0x90,
-0x09, 0x4d, 0xa5, 0xde, 0x9e, 0xb6, 0x6a, 0xd5,
-0xbd, 0x7e, 0xf4, 0xf6, 0x3b, 0x4a, 0xa7, 0x57,
-0xdc, 0xf4, 0x19, 0x55, 0x6d, 0x8f, 0x94, 0x56,
-0x48, 0x9f, 0x13, 0x4a, 0xf5, 0x76, 0x66, 0x7f,
-0xa4, 0x9b, 0x98, 0x00, 0xfc, 0x97, 0x17, 0x54,
-0xd7, 0xef, 0x05, 0xb8, 0x00, 0xef, 0xb0, 0x4d,
-0xa0, 0x1a, 0x2b, 0xb0, 0x96, 0x41, 0x0c, 0xd7,
-0x83, 0xbd, 0x48, 0xc1, 0xe5, 0xc1, 0x18, 0x3e,
-0xec, 0xc2, 0x9f, 0x9d, 0x03, 0x45, 0x9d, 0x09,
-0x12, 0x07, 0x8a, 0x88, 0x0f, 0x15, 0x4b, 0xe8,
-0x71, 0xaf, 0x9f, 0xcf, 0xd6, 0x94, 0x2f, 0xe8,
-0x19, 0xad, 0x9e, 0x0d, 0x9f, 0x25, 0xe5, 0xfa,
-0x61, 0x26, 0x14, 0x7f, 0x56, 0xbc, 0x9d, 0x09,
-0xd7, 0xba, 0x04, 0xf7, 0xfa, 0xe9, 0xe0, 0xf8,
-0xf0, 0x33, 0xfe, 0xd2, 0xfd, 0xed, 0x1c, 0x06,
-0x38, 0x78, 0x40, 0x2b, 0xdd, 0x5f, 0x78, 0xaf,
-0xb0, 0x99, 0xfe, 0xb5, 0xe6, 0xb2, 0x27, 0xcc,
-0x5f, 0x2f, 0xb4, 0xf0, 0xa1, 0xb2, 0x70, 0x21,
-0xe2, 0xc3, 0x1f, 0x59, 0xf8, 0x70, 0x5b, 0x06,
-0x1f, 0x5e, 0xe3, 0x1a, 0x0e, 0x1c, 0x7d, 0x21,
-0x3e, 0xbc, 0xe1, 0x5b, 0x4b, 0x10, 0x1f, 0x9e,
-0xb7, 0x80, 0xd9, 0x89, 0xff, 0x4d, 0xf8, 0x90,
-0xc3, 0xc2, 0x77, 0x13, 0xe7, 0xcf, 0xb6, 0x9c,
-0x34, 0x81, 0xa2, 0x8d, 0x0f, 0x37, 0xfe, 0x83,
-0x73, 0xc5, 0x3d, 0x9e, 0xff, 0xf5, 0x3f, 0x8e,
-0xb1, 0xf1, 0xe7, 0x4c, 0xa0, 0x68, 0xe3, 0xc3,
-0xf7, 0x33, 0x57, 0xb2, 0xc6, 0xcf, 0xb0, 0xf0,
-0x61, 0xcd, 0x8c, 0x5b, 0x7f, 0xb5, 0x71, 0x96,
-0x89, 0x0f, 0x71, 0xd8, 0xb1, 0xaf, 0xdf, 0xb0,
-0x6a, 0x2a, 0x7c, 0xf8, 0x27, 0x7d, 0x42, 0xa0,
-0x09, 0xec, 0xb5, 0x66, 0xff, 0xdf, 0xe6, 0xfd,
-0x9f, 0xbf, 0xcb, 0xc5, 0xcf, 0xc5, 0xcf, 0xc5,
-0xcf, 0xc5, 0xcf, 0xc5, 0xcf, 0xc5, 0xcf, 0xc5,
-0xcf, 0xc5, 0xcf, 0xc5, 0xcf, 0xc5, 0xcf, 0xc5,
-0xcf, 0xff, 0xbf, 0x7f, 0xf8, 0xde, 0x41, 0xba,
-0xb8, 0x77, 0xb8, 0xf8, 0xb9, 0xf8, 0xb9, 0xf8,
-0xb9, 0xf8, 0xb9, 0xf8, 0xb9, 0xf8, 0xb9, 0xf8,
-0xb9, 0xf8, 0xb9, 0xf8, 0xb9, 0xf8, 0xb9, 0xf8,
-0xf9, 0xe4, 0x0f, 0xdf, 0x3b, 0x14, 0x5e, 0xdc,
-0x3b, 0x5c, 0xfc, 0x5c, 0xfc, 0x5c, 0xfc, 0x5c,
-0xfc, 0x5c, 0xfc, 0x5c, 0xfc, 0x5c, 0xfc, 0x5c,
-0xfc, 0x5c, 0xfc, 0x5c, 0xfc, 0x5c, 0xfc, 0x7c,
-0xf2, 0x87, 0xef, 0x1d, 0x64, 0xbe, 0x77, 0xf8,
-0x3f, 0xfd, 0x28, 0x17, 0x3f, 0x17, 0x3f, 0x17,
-0x3f, 0x17, 0x3f, 0x17, 0x3f, 0x17, 0x3f, 0x17,
-0x3f, 0x17, 0x3f, 0x17, 0x3f, 0x17, 0x3f, 0x17,
-0x3f, 0xff, 0x2f, 0x7e, 0x42, 0x58, 0x1f, 0x07,
-0x3f, 0x5b, 0x19, 0x02, 0xde, 0x03, 0x40, 0x0c,
-0x81, 0xfe, 0x27, 0xe7, 0x13, 0xac, 0x7f, 0x5b,
-0x10, 0x82, 0xa4, 0x90, 0xb9, 0xe7, 0xd1, 0x2f,
-0xe4, 0x8e, 0xfb, 0xbf, 0x01, 0x1e, 0x39, 0x58,
-0x36, 0xf1, 0x33, 0x01, 0x00,
diff --git a/board/esd/voh405/logo_320_240_4bpp.c b/board/esd/voh405/logo_320_240_4bpp.c
deleted file mode 100644 (file)
index 5dfc1f7..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x7f, 0x95, 0xab, 0x3f,
-0x00, 0x03, 0x50, 0x50, 0x43, 0x5f, 0x53, 0x74,
-0x61, 0x72, 0x74, 0x6c, 0x6f, 0x67, 0x6f, 0x5f,
-0x31, 0x36, 0x67, 0x2e, 0x62, 0x6d, 0x70, 0x00,
-0xed, 0x9b, 0xcb, 0x71, 0xe3, 0x38, 0x10, 0x86,
-0x7b, 0xaa, 0xe6, 0xb6, 0x87, 0x2e, 0x4f, 0x08,
-0x3e, 0xed, 0xdd, 0x09, 0x6c, 0x6d, 0xf9, 0x3a,
-0x47, 0xa7, 0xe0, 0x10, 0xc6, 0x29, 0x38, 0x82,
-0xad, 0x72, 0x0a, 0x4e, 0xc1, 0x29, 0x38, 0x05,
-0xa7, 0xe0, 0xea, 0x0c, 0x30, 0x12, 0x89, 0x06,
-0x1a, 0x4f, 0x3d, 0x2c, 0x01, 0x9c, 0xad, 0xff,
-0xf3, 0x48, 0xa2, 0x44, 0x82, 0xf8, 0xd8, 0x20,
-0x5e, 0x24, 0xe7, 0xdf, 0x9f, 0xbf, 0xfe, 0xa3,
-0x85, 0x5f, 0xbb, 0xd7, 0xdf, 0xbb, 0xd7, 0x3f,
-0xdf, 0x88, 0x64, 0xf7, 0xf9, 0x8d, 0xbe, 0x93,
-0xf2, 0xe3, 0xaf, 0xf5, 0x65, 0xb9, 0xb9, 0xb9,
-0xa1, 0xdb, 0xdb, 0x5b, 0xba, 0xbb, 0xbb, 0xa3,
-0xfb, 0xfb, 0x7b, 0x7a, 0x78, 0x78, 0xa0, 0xc7,
-0xc7, 0x47, 0x7a, 0x7a, 0x7a, 0xa2, 0xe7, 0xe7,
-0x67, 0x7a, 0x79, 0x79, 0xa1, 0xd7, 0xd7, 0x57,
-0x7a, 0x7b, 0x7b, 0xa3, 0xf7, 0xf7, 0x77, 0xfa,
-0xf8, 0xf8, 0xa0, 0xcf, 0xcf, 0x4f, 0x72, 0xce,
-0xed, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
-0x02, 0xa1, 0x8b, 0x03, 0x3f, 0xf8, 0xc1, 0x0f,
-0x7e, 0xf0, 0xfb, 0xb3, 0xfd, 0xf6, 0x59, 0xf3,
-0x66, 0xfd, 0xc2, 0xe6, 0x7d, 0xc5, 0x49, 0x7e,
-0xfb, 0xcd, 0x84, 0x59, 0xd8, 0x1d, 0x48, 0x30,
-0xc7, 0x6f, 0xd9, 0x88, 0x77, 0x7f, 0x3b, 0x41,
-0xd7, 0x0d, 0xe1, 0x14, 0xbf, 0x45, 0x88, 0x97,
-0x7f, 0xb2, 0x38, 0xb4, 0x05, 0x67, 0xf8, 0x2d,
-0x3a, 0xb2, 0x2a, 0x2e, 0xff, 0xcb, 0xb0, 0x23,
-0x38, 0xc1, 0x6f, 0xd5, 0xf3, 0x21, 0x5c, 0xdf,
-0xa4, 0x99, 0x68, 0xbc, 0x9f, 0x04, 0xab, 0xf5,
-0x4d, 0x5c, 0x4f, 0x70, 0xb8, 0xdf, 0x6a, 0xb2,
-0x48, 0xad, 0x7e, 0xde, 0xb2, 0x51, 0xc2, 0xc3,
-0xfd, 0x28, 0x37, 0xf3, 0xae, 0x8d, 0x64, 0xa3,
-0xfd, 0x24, 0x96, 0xa9, 0xfa, 0xf9, 0x00, 0xd6,
-0xd3, 0x8d, 0xf6, 0xb3, 0xe1, 0xd3, 0x0f, 0x31,
-0xe6, 0x93, 0xfd, 0xba, 0xd9, 0x6d, 0xc0, 0x8f,
-0x4c, 0xc0, 0x42, 0xfc, 0x7a, 0x01, 0x1c, 0xeb,
-0x27, 0xb6, 0x5e, 0xc4, 0x4f, 0x97, 0xfe, 0x3c,
-0xcf, 0x2f, 0x0d, 0x5f, 0xee, 0x57, 0x4b, 0x39,
-0xd4, 0x2f, 0x0b, 0x5f, 0x5c, 0x68, 0x17, 0xf0,
-0x58, 0xbf, 0x6a, 0xd8, 0xba, 0x01, 0x1c, 0xea,
-0x97, 0x15, 0x6f, 0xe1, 0x27, 0xae, 0x60, 0xa4,
-0x5f, 0x5e, 0xbc, 0x66, 0xa9, 0x59, 0xc0, 0x43,
-0xfd, 0xea, 0x51, 0x33, 0xab, 0xca, 0xb4, 0x23,
-0xfd, 0x7a, 0x35, 0xbb, 0x55, 0xc0, 0x98, 0x5f,
-0xfe, 0x39, 0x7e, 0xbb, 0x21, 0x8a, 0x0e, 0x9d,
-0xd7, 0x8d, 0x74, 0x58, 0xef, 0xc7, 0xf7, 0x93,
-0xdb, 0xbf, 0x5d, 0x56, 0x9c, 0xf8, 0x91, 0xce,
-0xdc, 0x7c, 0xa2, 0xc9, 0x7e, 0xe4, 0x0d, 0xd4,
-0x4f, 0x38, 0x8e, 0x9d, 0xc3, 0x8a, 0x89, 0x7e,
-0x6c, 0xfc, 0x74, 0xe6, 0x46, 0xce, 0x2c, 0xcc,
-0xf5, 0x0b, 0x33, 0x36, 0xeb, 0x27, 0x9b, 0xf2,
-0x5b, 0xcf, 0x37, 0xbd, 0x2e, 0x54, 0xfa, 0x51,
-0x79, 0x29, 0xa1, 0xea, 0xb7, 0xac, 0x89, 0x5f,
-0xf9, 0xb4, 0x23, 0xe9, 0xc5, 0xcf, 0x2f, 0x48,
-0x33, 0x7e, 0x79, 0xea, 0x4a, 0xae, 0x9c, 0xad,
-0x0a, 0x87, 0xb4, 0x5b, 0x32, 0x0d, 0xbc, 0x6d,
-0xeb, 0xcd, 0x51, 0x1f, 0xe5, 0x17, 0x95, 0x8e,
-0xf5, 0xe3, 0xb0, 0xc8, 0xd9, 0x3a, 0xf3, 0xfd,
-0x4b, 0x7e, 0x49, 0xfd, 0x50, 0xb7, 0xa2, 0x7e,
-0xb4, 0xfc, 0xd6, 0x5d, 0x67, 0xc5, 0x23, 0x45,
-0x71, 0x7d, 0xc5, 0x8f, 0xf4, 0x5a, 0x41, 0x6c,
-0x5f, 0xd6, 0x98, 0x9e, 0xe4, 0x97, 0x9c, 0xa0,
-0x14, 0x5b, 0xd0, 0xa2, 0x03, 0x3f, 0xd9, 0x4f,
-0x7c, 0x36, 0xa1, 0x1a, 0x84, 0x33, 0xdd, 0x1d,
-0xac, 0x1f, 0x1c, 0x96, 0xfd, 0xaf, 0xc1, 0x4f,
-0x3f, 0xc9, 0x4e, 0xac, 0xcf, 0xf2, 0x2b, 0xa7,
-0xe0, 0x47, 0x74, 0xd5, 0xb9, 0x9f, 0x1e, 0x58,
-0x38, 0xd4, 0xf0, 0xdd, 0x5c, 0x37, 0xa9, 0xfa,
-0x1d, 0xaa, 0xbf, 0xe7, 0x21, 0x66, 0x9f, 0xb6,
-0x00, 0xd4, 0x94, 0x5d, 0x72, 0x0c, 0x62, 0x44,
-0xe2, 0x1a, 0x3a, 0xe4, 0x57, 0x36, 0x12, 0x7d,
-0xf2, 0x3a, 0x9a, 0x16, 0xa7, 0x3d, 0x25, 0x4d,
-0xce, 0x13, 0xfd, 0x58, 0x77, 0xc3, 0x59, 0xa6,
-0x72, 0x19, 0xbf, 0xf3, 0x09, 0x7e, 0xf1, 0x42,
-0xb0, 0xcd, 0x48, 0x74, 0x13, 0x73, 0x29, 0x67,
-0x82, 0x9f, 0x5b, 0x4b, 0xf2, 0x9a, 0x7e, 0xc2,
-0xbe, 0x02, 0x53, 0xda, 0xd8, 0x2d, 0x27, 0x3d,
-0xfb, 0x2a, 0xb9, 0x16, 0x97, 0x6d, 0x63, 0x32,
-0x3f, 0x93, 0xa7, 0x89, 0xea, 0x25, 0xfc, 0xa8,
-0xe1, 0xb7, 0xef, 0x34, 0xc9, 0xfa, 0x49, 0xdb,
-0xcf, 0x5d, 0xd3, 0x8f, 0xaa, 0x7e, 0xe2, 0xf3,
-0x26, 0x13, 0xe4, 0xc2, 0x8f, 0xb5, 0xa5, 0xab,
-0xfa, 0x91, 0xc5, 0x24, 0xcc, 0xfc, 0xc2, 0xfe,
-0x3a, 0x7e, 0x12, 0xfd, 0xfc, 0x4b, 0x7b, 0xe4,
-0xe8, 0x47, 0xd2, 0xf6, 0x0b, 0xe1, 0xba, 0xbc,
-0x1f, 0x8b, 0xcf, 0x3a, 0xf5, 0xd3, 0x89, 0x47,
-0xf0, 0x93, 0x8a, 0x9f, 0xd3, 0x9e, 0xb6, 0xea,
-0x27, 0x97, 0xf0, 0x93, 0xa3, 0xfd, 0x78, 0x96,
-0x1f, 0x3b, 0x56, 0x3f, 0x3d, 0x65, 0xfd, 0x29,
-0x68, 0xeb, 0x07, 0xb9, 0x8e, 0x9f, 0xe3, 0x6b,
-0xfa, 0xed, 0x0d, 0xcf, 0xf1, 0xe3, 0xa8, 0xd9,
-0x6c, 0xff, 0xcc, 0x6f, 0x76, 0xb5, 0xf1, 0x2b,
-0x0f, 0x21, 0xf5, 0x5b, 0xa2, 0x47, 0xd5, 0xf2,
-0x75, 0x2e, 0x94, 0x6f, 0x18, 0x14, 0xd6, 0xfd,
-0x5c, 0xee, 0x97, 0xe4, 0xfc, 0x05, 0x3f, 0x72,
-0x99, 0x9f, 0x39, 0x15, 0xad, 0x9f, 0x56, 0x69,
-0xeb, 0xa7, 0x3b, 0xcf, 0xca, 0x33, 0xef, 0x7f,
-0x35, 0x9e, 0xe7, 0xfa, 0x91, 0xb8, 0xd2, 0x2f,
-0x6f, 0x5f, 0x8e, 0xf0, 0x2b, 0xc6, 0x2f, 0x72,
-0x21, 0x3f, 0x52, 0x13, 0xed, 0x0f, 0x54, 0x26,
-0xb6, 0xcf, 0xc4, 0x55, 0xbf, 0x38, 0xca, 0x8a,
-0x3e, 0x7e, 0x29, 0x0a, 0x6b, 0x07, 0x73, 0x8e,
-0x9f, 0xf8, 0xae, 0xc2, 0xfb, 0xed, 0xf1, 0xb9,
-0x2c, 0xfd, 0x9b, 0x0e, 0x89, 0x25, 0x9c, 0x53,
-0xc6, 0x8f, 0x73, 0xbf, 0x38, 0x90, 0x16, 0x33,
-0x60, 0x8d, 0x53, 0x99, 0xba, 0x9f, 0x06, 0xaa,
-0xee, 0xc7, 0xb9, 0x1f, 0x7b, 0x3f, 0x9f, 0xd7,
-0xb1, 0x7e, 0xe9, 0x15, 0x4c, 0xe3, 0xc9, 0x1a,
-0x86, 0x90, 0xf2, 0x14, 0xbf, 0x0e, 0xbd, 0xbb,
-0xfb, 0xa1, 0xdf, 0x0d, 0xd9, 0x54, 0x1b, 0xc7,
-0x6a, 0xe6, 0x97, 0xf2, 0xeb, 0x53, 0xf8, 0xd9,
-0xdd, 0xe7, 0x79, 0xcb, 0x0c, 0xbf, 0x6c, 0x04,
-0x6f, 0xf2, 0x2a, 0x32, 0xa7, 0xaf, 0xf9, 0xf9,
-0x35, 0xa6, 0xb3, 0x89, 0xeb, 0xd8, 0x6e, 0x91,
-0xfb, 0x85, 0x1e, 0x62, 0xd9, 0xbf, 0xa6, 0x0f,
-0x15, 0xb2, 0xf8, 0xa1, 0x4f, 0x3b, 0x16, 0xdc,
-0xf4, 0x2b, 0x6e, 0x3d, 0x44, 0xbf, 0x46, 0x0e,
-0x76, 0x05, 0x9f, 0xa2, 0xd7, 0x29, 0x5f, 0xae,
-0x5b, 0x85, 0xa5, 0xc9, 0xf7, 0x67, 0x8a, 0xfb,
-0x5b, 0xf9, 0x9d, 0xae, 0x4a, 0xd2, 0x9a, 0x1f,
-0x2f, 0xdb, 0x5f, 0xc1, 0x2f, 0x2f, 0xe0, 0xdc,
-0xaf, 0xd2, 0xd0, 0x0c, 0xf5, 0xcb, 0x35, 0x24,
-0x5d, 0x38, 0xf6, 0xfa, 0xee, 0xf5, 0xfc, 0xb2,
-0x02, 0xce, 0x6e, 0x54, 0xd7, 0x52, 0x8e, 0xf5,
-0xcb, 0x0a, 0x58, 0x92, 0xcf, 0x0d, 0x3c, 0x7f,
-0xd0, 0x3f, 0xe8, 0xea, 0x11, 0x8d, 0xf5, 0x4b,
-0x03, 0x98, 0x3c, 0xc7, 0xb1, 0x89, 0xe7, 0x5f,
-0xd2, 0xe7, 0x73, 0xc4, 0x7e, 0x34, 0xe6, 0x05,
-0x83, 0xfd, 0xec, 0xe3, 0x61, 0x49, 0xaf, 0xd1,
-0x78, 0x40, 0x6c, 0xb4, 0x9f, 0xef, 0xdf, 0x6d,
-0x4f, 0xb2, 0xa9, 0xe7, 0xc3, 0xe2, 0x8c, 0x3c,
-0x98, 0x71, 0xd4, 0xde, 0x82, 0x9f, 0x29, 0xe1,
-0xf8, 0xd6, 0x1c, 0xa3, 0x8e, 0xf7, 0xf3, 0x82,
-0xec, 0xd5, 0xd6, 0x09, 0x5c, 0x33, 0xd1, 0x04,
-0x3f, 0x17, 0x67, 0xfe, 0xea, 0xd9, 0x19, 0x93,
-0x4d, 0xf0, 0x73, 0x7a, 0x2d, 0x4f, 0x74, 0xc2,
-0xd5, 0xde, 0x74, 0x8a, 0xdf, 0x3a, 0x2a, 0xde,
-0x4d, 0xd7, 0xf6, 0x86, 0xcd, 0x2b, 0x72, 0x13,
-0xfd, 0xd6, 0x99, 0x21, 0x89, 0x30, 0x1d, 0x78,
-0x00, 0x7f, 0x96, 0x5f, 0x6d, 0xea, 0xb2, 0x29,
-0xbf, 0x23, 0x81, 0x1f, 0xfc, 0xe0, 0x07, 0x3f,
-0xf8, 0x6d, 0xd3, 0x0f, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x8e, 0xdf,
-0xe3, 0xb7, 0xe4, 0x39, 0x76, 0x96, 0x00, 0x00,
diff --git a/board/esd/voh405/logo_640_480_24bpp.c b/board/esd/voh405/logo_640_480_24bpp.c
deleted file mode 100644 (file)
index defa69f..0000000
+++ /dev/null
@@ -1,3443 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x70, 0xff, 0xbe, 0x40,
-0x00, 0x03, 0x65, 0x73, 0x64, 0x5f, 0x77, 0x65,
-0x6c, 0x6c, 0x65, 0x5f, 0x36, 0x34, 0x30, 0x78,
-0x34, 0x38, 0x30, 0x5f, 0x32, 0x34, 0x2d, 0x62,
-0x69, 0x74, 0x2e, 0x62, 0x6d, 0x70, 0x00, 0xec,
-0x9d, 0x77, 0x7c, 0x54, 0xd7, 0x95, 0xc7, 0xc9,
-0xfe, 0xbb, 0x9b, 0xac, 0x77, 0xd7, 0xd9, 0xc4,
-0x59, 0x27, 0xbb, 0x9b, 0xac, 0x5b, 0x12, 0x3b,
-0xce, 0x92, 0xf5, 0xc6, 0x66, 0x1d, 0x17, 0xec,
-0x34, 0x57, 0x6c, 0xe3, 0xde, 0x6d, 0xec, 0x38,
-0x2e, 0xb8, 0x42, 0x5c, 0xc0, 0x54, 0xd3, 0x8b,
-0x11, 0x45, 0x14, 0x61, 0x04, 0x98, 0x66, 0x84,
-0x31, 0x18, 0x30, 0x1d, 0x51, 0x0c, 0x02, 0x09,
-0x19, 0x84, 0x85, 0x10, 0x48, 0x02, 0x09, 0x90,
-0x84, 0xba, 0x46, 0x1a, 0x95, 0xd1, 0x9c, 0xbb,
-0xf7, 0xbc, 0x69, 0xef, 0xcd, 0xbc, 0x72, 0xef,
-0x9b, 0xf7, 0x66, 0x46, 0xd2, 0xf9, 0x7d, 0x7e,
-0xf0, 0x11, 0x42, 0x7a, 0xa3, 0x11, 0xe8, 0x7d,
-0xe7, 0x94, 0x7b, 0xce, 0xad, 0x77, 0x5d, 0x77,
-0xd1, 0xf7, 0xfa, 0xa0, 0xae, 0xe3, 0xbf, 0xae,
-0xe4, 0xbf, 0x46, 0xfc, 0x5d, 0x9f, 0x3e, 0xa7,
-0xbf, 0xd3, 0xa7, 0xcf, 0x77, 0xfa, 0xfc, 0x50,
-0x79, 0x7f, 0x1f, 0xfe, 0xf7, 0x3f, 0xbb, 0xa6,
-0x8f, 0xf2, 0x2b, 0x24, 0x46, 0x22, 0x91, 0x92,
-0x28, 0x00, 0xb4, 0xdf, 0xcf, 0xfc, 0x5d, 0xac,
-0xb3, 0x3d, 0xe8, 0x76, 0x0f, 0xf3, 0x36, 0xb1,
-0x96, 0x3a, 0xe6, 0xa9, 0x61, 0x4d, 0x95, 0xac,
-0xe1, 0x2c, 0xab, 0x2b, 0x0f, 0xba, 0xb6, 0x8c,
-0x5d, 0x38, 0x05, 0xd5, 0xc5, 0x50, 0x76, 0x10,
-0xca, 0x72, 0xa0, 0x68, 0x27, 0x1c, 0xdb, 0x04,
-0x05, 0x1b, 0x61, 0xef, 0x42, 0xd8, 0x9b, 0x01,
-0x5b, 0xa7, 0xc2, 0x97, 0xa3, 0x60, 0xfd, 0x08,
-0x58, 0xf6, 0x57, 0x58, 0xfa, 0x17, 0x58, 0xfa,
-0x42, 0xd0, 0xe9, 0xf7, 0xc3, 0x8c, 0x3b, 0xd0,
-0xe3, 0x6f, 0x80, 0xd1, 0xbf, 0x82, 0x51, 0xd7,
-0xc0, 0x48, 0xee, 0x5f, 0x06, 0x3d, 0xfc, 0x2a,
-0x78, 0xfd, 0xa2, 0xa0, 0x07, 0x5f, 0x04, 0xaf,
-0x7d, 0x4f, 0xf1, 0x77, 0xd1, 0xaf, 0xfe, 0x43,
-0xc4, 0xaf, 0xfc, 0x3d, 0xfe, 0xfe, 0xc6, 0xc5,
-0x30, 0xf4, 0xc7, 0xf0, 0xde, 0x4f, 0x61, 0xd8,
-0x95, 0x78, 0x91, 0xc9, 0xb7, 0x40, 0xfa, 0x7d,
-0x30, 0x77, 0x20, 0xac, 0x78, 0x0d, 0xd6, 0x7d,
-0x08, 0x9b, 0x27, 0xa2, 0xb7, 0x7f, 0x0c, 0x47,
-0xd6, 0xc1, 0xc9, 0xbd, 0x21, 0xef, 0x81, 0xca,
-0xc2, 0xe0, 0x33, 0x65, 0x51, 0x26, 0x91, 0x48,
-0x24, 0x12, 0xc9, 0x1d, 0xf9, 0x14, 0x9e, 0x72,
-0x98, 0x72, 0x8c, 0xd6, 0x94, 0xb2, 0xaa, 0x22,
-0x56, 0x9e, 0x8f, 0x3e, 0x93, 0xc7, 0x4e, 0xed,
-0x83, 0xe3, 0xdb, 0xe1, 0xd8, 0x57, 0x90, 0xb7,
-0x1a, 0x72, 0x57, 0xc1, 0xae, 0x39, 0x41, 0x6f,
-0x1c, 0x0b, 0x5f, 0x0c, 0x47, 0xa2, 0x2d, 0x79,
-0x01, 0x16, 0x3c, 0x0a, 0x33, 0xef, 0x86, 0x69,
-0xb7, 0x2b, 0xbe, 0x0d, 0xc6, 0x5d, 0x0f, 0xa3,
-0xae, 0x45, 0xf0, 0x0d, 0xbf, 0x02, 0x86, 0x5d,
-0x8e, 0x1c, 0x1c, 0x72, 0x69, 0xc8, 0xff, 0x06,
-0x43, 0x7e, 0x14, 0xf4, 0x3b, 0x8a, 0xdf, 0xfe,
-0xa1, 0xe2, 0x1f, 0xa0, 0xdf, 0xfa, 0xd7, 0xa0,
-0xdf, 0xfc, 0x3e, 0xbc, 0x79, 0x31, 0xbc, 0xf1,
-0x2f, 0xf0, 0xfa, 0x3f, 0x87, 0x7c, 0x91, 0x96,
-0xbf, 0xff, 0xa8, 0xe2, 0xef, 0x77, 0xe1, 0xed,
-0x4b, 0x60, 0xe4, 0xd5, 0x30, 0xe5, 0x56, 0x98,
-0x73, 0x1f, 0x2c, 0x1e, 0x04, 0x1b, 0x3f, 0x82,
-0x43, 0x2b, 0xe0, 0x44, 0x36, 0x9c, 0x3b, 0x06,
-0x9e, 0x1a, 0xe8, 0x68, 0x55, 0xc0, 0xea, 0x8f,
-0x35, 0xf8, 0xbb, 0x2c, 0xcd, 0xd4, 0xc6, 0xcf,
-0x0a, 0x30, 0x9a, 0x44, 0x22, 0x91, 0x48, 0x24,
-0x33, 0x41, 0x57, 0x27, 0x74, 0x78, 0xa1, 0xad,
-0x19, 0x5a, 0xeb, 0xa1, 0xbe, 0x1c, 0xce, 0x17,
-0x42, 0xc9, 0x7e, 0x28, 0xdc, 0x06, 0x87, 0xd7,
-0xc0, 0xfe, 0x25, 0x90, 0x9d, 0x0e, 0xd9, 0x73,
-0x60, 0xcb, 0x64, 0x8c, 0x49, 0xd7, 0xbc, 0x0b,
-0xcb, 0x5f, 0x85, 0xcc, 0xe7, 0x20, 0xe3, 0x71,
-0x98, 0x75, 0x0f, 0x3a, 0xed, 0x0e, 0x98, 0x7c,
-0x33, 0x4c, 0xb8, 0x01, 0xc6, 0xf6, 0xc5, 0x08,
-0xf4, 0x83, 0xcb, 0x55, 0xfe, 0xaf, 0x88, 0xdf,
-0x57, 0xcc, 0x39, 0x8b, 0xfe, 0x4f, 0x78, 0xf7,
-0x3f, 0x22, 0xfe, 0xdb, 0x4f, 0xd0, 0x11, 0xfe,
-0x5e, 0x1a, 0xe1, 0xef, 0x10, 0x63, 0xfe, 0x22,
-0x82, 0x2f, 0x46, 0x1b, 0xf1, 0x97, 0xa3, 0x99,
-0x7f, 0x3d, 0x1f, 0xff, 0x11, 0x83, 0xe8, 0x75,
-0x23, 0x60, 0xf7, 0x5c, 0x76, 0x6c, 0x13, 0x3b,
-0x77, 0x8c, 0x35, 0x57, 0xb3, 0xae, 0x4e, 0xdb,
-0xa8, 0x8d, 0x30, 0x97, 0x5f, 0x24, 0xe2, 0x0e,
-0xad, 0x95, 0x77, 0xfa, 0x7d, 0x8a, 0xbb, 0x80,
-0x88, 0x4c, 0x22, 0x91, 0x48, 0xbd, 0x55, 0x10,
-0x10, 0x67, 0x41, 0xc3, 0x39, 0xa8, 0x2c, 0x84,
-0x8a, 0xa3, 0x70, 0x62, 0x17, 0xe4, 0x7f, 0x0e,
-0xfb, 0x16, 0xc2, 0xe6, 0xc9, 0x88, 0xa7, 0xd5,
-0x6f, 0xc3, 0xa7, 0x4a, 0xb2, 0x77, 0xd1, 0x33,
-0x30, 0xff, 0x61, 0x98, 0x7d, 0x2f, 0x4c, 0xff,
-0x23, 0x82, 0x95, 0x07, 0xaa, 0x63, 0xfa, 0xc2,
-0x98, 0x5f, 0xc3, 0xe8, 0x6b, 0x61, 0x54, 0x28,
-0xe5, 0x3b, 0xe2, 0x97, 0x8a, 0x7f, 0x81, 0xfe,
-0xf0, 0xe7, 0x21, 0x5f, 0x05, 0xc3, 0xaf, 0x84,
-0x61, 0x57, 0x08, 0xf1, 0x57, 0x8d, 0x60, 0x4b,
-0xfe, 0xbe, 0x73, 0x89, 0x41, 0x08, 0x1c, 0xc5,
-0xdf, 0x7f, 0x42, 0xf2, 0xf2, 0x4b, 0xa5, 0x3f,
-0x80, 0xe1, 0x6d, 0xce, 0x52, 0x1e, 0x98, 0xb3,
-0xca, 0xe3, 0x98, 0xfd, 0xee, 0x6c, 0x0b, 0x45,
-0xa6, 0xee, 0x31, 0x37, 0xda, 0xe0, 0x6b, 0x0f,
-0x99, 0xbf, 0xdd, 0xc9, 0xcd, 0x71, 0x4c, 0x2c,
-0x26, 0x91, 0x48, 0xa4, 0x9e, 0xa2, 0x50, 0xd6,
-0x34, 0x48, 0x87, 0x0e, 0xc6, 0x6f, 0xf8, 0xed,
-0x1e, 0xa8, 0x3f, 0x8b, 0xd5, 0xd5, 0xf2, 0xc3,
-0x70, 0x74, 0x03, 0xec, 0x5d, 0x00, 0xeb, 0x47,
-0x21, 0x5e, 0xd3, 0x07, 0xc2, 0xcc, 0xbb, 0x20,
-0xed, 0xcf, 0x30, 0xe3, 0x4f, 0x30, 0xed, 0xf7,
-0x30, 0xb5, 0x3f, 0x4c, 0xfa, 0x1d, 0x4c, 0xe8,
-0x07, 0xe3, 0x7f, 0x0b, 0xe3, 0xae, 0x83, 0xb1,
-0xbf, 0x09, 0x7a, 0xcc, 0x7f, 0xa3, 0x47, 0x5d,
-0xab, 0xf2, 0x35, 0x11, 0x8f, 0xd4, 0x22, 0x38,
-0xc2, 0xdf, 0x9f, 0x23, 0x7f, 0xb9, 0x75, 0x43,
-0x60, 0x13, 0xfe, 0xea, 0x20, 0xf8, 0x47, 0x42,
-0x29, 0x68, 0xf4, 0xf7, 0xe1, 0xad, 0x1f, 0xc0,
-0xd0, 0x4b, 0x61, 0xf2, 0x4d, 0x18, 0x98, 0xe7,
-0xad, 0x86, 0x9a, 0x52, 0xe6, 0xa9, 0x65, 0x1d,
-0xad, 0x4a, 0x90, 0xab, 0x9f, 0x52, 0x96, 0xc7,
-0xae, 0x05, 0x6a, 0x35, 0xd8, 0xed, 0x6c, 0xd7,
-0xb3, 0x37, 0xe4, 0x36, 0xf0, 0x71, 0x63, 0x8c,
-0x8c, 0x57, 0x26, 0x10, 0x93, 0x48, 0x24, 0x52,
-0xb7, 0x10, 0x67, 0x07, 0x0f, 0xe5, 0xbc, 0x8d,
-0xac, 0xa9, 0x8a, 0xd5, 0x95, 0x43, 0x65, 0x11,
-0x9c, 0xce, 0x85, 0x63, 0x9b, 0x21, 0xff, 0x0b,
-0xd8, 0x33, 0x1f, 0x83, 0xbe, 0x55, 0x6f, 0xc2,
-0xc2, 0x27, 0xb0, 0x43, 0x69, 0x8a, 0xc2, 0xd6,
-0x89, 0xff, 0x87, 0x9e, 0xa0, 0x78, 0xfc, 0x0d,
-0x8a, 0x7f, 0x1b, 0xf4, 0x38, 0xc5, 0x1f, 0x5d,
-0xa7, 0xf8, 0x7f, 0xd0, 0x61, 0xfe, 0xea, 0x20,
-0xd8, 0x98, 0xbf, 0x6a, 0x04, 0x9b, 0xf0, 0xf7,
-0x03, 0x29, 0xfe, 0x5e, 0x6a, 0xc1, 0x5f, 0xfe,
-0x36, 0x0f, 0xb7, 0xf9, 0x13, 0xe4, 0xa1, 0x7a,
-0x76, 0x3a, 0x54, 0x1e, 0x87, 0x2e, 0x5f, 0x30,
-0xae, 0x8c, 0x97, 0xb9, 0xbe, 0x80, 0x1d, 0x65,
-0xae, 0x99, 0xf1, 0xf5, 0x52, 0x97, 0x8f, 0x11,
-0x8b, 0x49, 0x24, 0x12, 0x29, 0x75, 0xe4, 0xeb,
-0x64, 0xed, 0xcd, 0xac, 0xb1, 0x92, 0x55, 0x9f,
-0xc4, 0x36, 0xa7, 0x13, 0xd9, 0xd8, 0x8e, 0xfb,
-0x75, 0x26, 0x96, 0x62, 0xb3, 0x86, 0x60, 0x11,
-0x36, 0xfd, 0x7e, 0xec, 0x65, 0x9a, 0x72, 0x2b,
-0x7a, 0xf2, 0xcd, 0x8a, 0x6f, 0x42, 0x73, 0x30,
-0x05, 0x6c, 0xc2, 0x5f, 0x0d, 0x82, 0x2d, 0xf9,
-0x7b, 0xad, 0x10, 0x7f, 0x75, 0x10, 0xec, 0x54,
-0x0a, 0x3a, 0x80, 0xe0, 0x4b, 0xf0, 0x0a, 0xd3,
-0x7f, 0x8f, 0xa1, 0x6e, 0xce, 0x32, 0xb8, 0x50,
-0x02, 0x1c, 0x7f, 0x0e, 0x60, 0xd7, 0x27, 0x81,
-0x5d, 0x5f, 0xc4, 0x2a, 0xd4, 0xb6, 0xa9, 0x2c,
-0x84, 0xdd, 0xa0, 0x3b, 0x42, 0xe6, 0x20, 0xe6,
-0xaf, 0xac, 0xf8, 0xf5, 0xf9, 0xd7, 0xc0, 0xbf,
-0x6c, 0x12, 0x89, 0x44, 0x22, 0x25, 0x44, 0xc1,
-0xe2, 0x6c, 0x4b, 0x2d, 0x54, 0x15, 0x41, 0xf1,
-0x6e, 0x3c, 0x89, 0x73, 0x68, 0x25, 0x64, 0xcf,
-0x83, 0xaf, 0x26, 0xc0, 0x17, 0xc3, 0x60, 0xe5,
-0xeb, 0xf0, 0xc9, 0x53, 0x30, 0x67, 0x00, 0xd6,
-0x64, 0x31, 0x6f, 0x7c, 0x1b, 0xa6, 0x8e, 0xa7,
-0xde, 0x1a, 0xb1, 0x11, 0x7f, 0x27, 0xdd, 0xa8,
-0x42, 0x70, 0x3f, 0x85, 0xbf, 0xd7, 0x8b, 0x85,
-0xc0, 0x7d, 0x91, 0xbf, 0xa3, 0x7f, 0x6d, 0x1c,
-0x02, 0x5f, 0x2d, 0x96, 0x82, 0xbe, 0x4c, 0x2c,
-0x04, 0xfe, 0x77, 0xe4, 0xef, 0xd0, 0x1f, 0x1b,
-0x76, 0x41, 0xf3, 0xdf, 0xf9, 0xb3, 0x5b, 0xf3,
-0x37, 0x38, 0xb0, 0x14, 0x5f, 0x8a, 0xb4, 0x7b,
-0x9c, 0x2b, 0xe3, 0x5a, 0x54, 0x72, 0x55, 0x65,
-0x5c, 0xc5, 0xf6, 0x98, 0xdb, 0x61, 0xe0, 0xf6,
-0x56, 0x95, 0x5b, 0xd0, 0x1d, 0xad, 0x4a, 0x8e,
-0xba, 0x83, 0x22, 0x62, 0x12, 0x89, 0x44, 0x72,
-0x49, 0x78, 0x5b, 0xae, 0xaf, 0x80, 0x33, 0xb9,
-0x70, 0x64, 0x3d, 0xec, 0x9a, 0x8d, 0xc7, 0x4e,
-0x57, 0xbd, 0x09, 0x4b, 0x5f, 0x82, 0x8c, 0x27,
-0x60, 0xde, 0x43, 0x48, 0xdb, 0x99, 0x77, 0x62,
-0xfb, 0x6e, 0xc0, 0x3c, 0xe8, 0xe3, 0x9e, 0xf6,
-0xfb, 0x10, 0x7f, 0x6f, 0x33, 0xe0, 0xef, 0xcd,
-0x5a, 0xfe, 0xa6, 0x5e, 0x0a, 0xfa, 0xfd, 0x9f,
-0xc9, 0xa5, 0xa0, 0x87, 0x5d, 0x81, 0x2d, 0x61,
-0x87, 0x56, 0x61, 0xeb, 0x72, 0x4b, 0x5d, 0x30,
-0x3c, 0x8c, 0x17, 0xbb, 0x02, 0x29, 0x65, 0x1d,
-0xe0, 0x46, 0x61, 0x57, 0x26, 0xbc, 0x35, 0xc4,
-0x6e, 0x8b, 0xca, 0x1e, 0x95, 0x03, 0x20, 0xf6,
-0x62, 0xd7, 0x16, 0x51, 0x98, 0x44, 0x22, 0x91,
-0x6c, 0x88, 0xdf, 0xf6, 0x7d, 0xed, 0xac, 0xa3,
-0x05, 0x8f, 0xf6, 0x34, 0x56, 0x42, 0xc5, 0x11,
-0xa4, 0xed, 0xee, 0xb9, 0x18, 0xca, 0x2d, 0x7e,
-0x01, 0x32, 0x1e, 0x43, 0xd4, 0xa6, 0xdf, 0x07,
-0xb3, 0xef, 0x51, 0x3a, 0xa3, 0xee, 0x44, 0xcf,
-0xf8, 0xb3, 0xe2, 0x3f, 0xa1, 0xc3, 0xfc, 0xd5,
-0x41, 0xb0, 0x96, 0xbf, 0x3d, 0x29, 0x05, 0x3d,
-0xf4, 0x27, 0xf8, 0x89, 0x93, 0x6e, 0xc2, 0x41,
-0x1c, 0x35, 0x25, 0xac, 0xad, 0x59, 0x7d, 0x62,
-0x28, 0xe1, 0xad, 0x53, 0xa2, 0x95, 0x5c, 0x33,
-0xe6, 0x6a, 0x38, 0x6b, 0xc4, 0xdc, 0x90, 0xbd,
-0xcd, 0x2a, 0x7b, 0xa0, 0xcd, 0x83, 0xd9, 0xe9,
-0x40, 0xff, 0x36, 0x89, 0x44, 0x22, 0x91, 0x74,
-0xc5, 0x43, 0x15, 0x4e, 0x8a, 0xf6, 0x16, 0x3c,
-0xf3, 0x52, 0x77, 0x1a, 0x67, 0x3b, 0x7c, 0xbb,
-0x05, 0xb2, 0xe7, 0xc2, 0xda, 0xf7, 0x20, 0xf3,
-0x79, 0x6c, 0x16, 0x9a, 0xc3, 0x51, 0x3b, 0x00,
-0x4f, 0xf7, 0x70, 0xe0, 0x22, 0x73, 0xef, 0x56,
-0x7c, 0x67, 0xc4, 0xc8, 0xdf, 0x3b, 0xc4, 0xf8,
-0x7b, 0x9b, 0x10, 0x7f, 0x03, 0x08, 0x0e, 0xf2,
-0xb7, 0x9f, 0x31, 0x7f, 0x63, 0x10, 0x3c, 0xa6,
-0xaf, 0x58, 0x17, 0xb4, 0x25, 0x7f, 0x65, 0xba,
-0xa0, 0x79, 0x74, 0xcc, 0xb1, 0xbb, 0xe8, 0x59,
-0xc8, 0xcb, 0x02, 0x6f, 0x63, 0x52, 0xcb, 0xb8,
-0x76, 0x2b, 0xb9, 0x3c, 0x6e, 0x0d, 0xdb, 0x12,
-0xbb, 0x6d, 0x2a, 0x47, 0x98, 0xdb, 0xa4, 0x75,
-0x63, 0xd0, 0x1d, 0x2d, 0xca, 0xb1, 0x62, 0x3f,
-0x45, 0xc4, 0x24, 0x12, 0x89, 0x84, 0xe2, 0x74,
-0xe0, 0x01, 0x5a, 0x7d, 0x05, 0xab, 0xc8, 0x87,
-0x13, 0x3b, 0xe1, 0x70, 0x16, 0x4e, 0x50, 0xdc,
-0x3c, 0x09, 0x4f, 0xd4, 0x66, 0x3c, 0x8e, 0x67,
-0x51, 0xd3, 0xef, 0x47, 0x73, 0xf2, 0x86, 0x1d,
-0xe6, 0xef, 0x2c, 0x3d, 0xfe, 0x1a, 0x85, 0xc0,
-0xd3, 0xff, 0x60, 0x95, 0x82, 0xbe, 0xc5, 0x90,
-0xbf, 0x9a, 0x10, 0x58, 0xb0, 0x04, 0xfc, 0x9b,
-0x98, 0x12, 0xf0, 0xaf, 0xc4, 0x4e, 0x21, 0x5d,
-0x65, 0xc5, 0x5f, 0xbd, 0x14, 0x34, 0x27, 0x2f,
-0x7f, 0xfa, 0x1b, 0x46, 0x43, 0xe9, 0x01, 0xce,
-0xbe, 0xee, 0xd4, 0x3a, 0x25, 0xc4, 0x5c, 0x8f,
-0x0c, 0x73, 0x1b, 0x75, 0xcd, 0x5a, 0xd1, 0x4a,
-0x38, 0xdc, 0x86, 0x79, 0x78, 0x12, 0x89, 0x44,
-0xea, 0x7d, 0xc2, 0x7b, 0x75, 0xdd, 0x19, 0x1c,
-0x12, 0x75, 0x64, 0x3d, 0x8e, 0xb0, 0xd8, 0x3a,
-0x0d, 0x47, 0x58, 0xac, 0x18, 0x1c, 0x1c, 0x5e,
-0x31, 0xef, 0x41, 0xf4, 0xdc, 0x07, 0x71, 0x9e,
-0x30, 0xf2, 0xf7, 0x01, 0x3d, 0xfe, 0xaa, 0x43,
-0xe0, 0xbb, 0x84, 0xf8, 0xab, 0x09, 0x81, 0x6f,
-0x77, 0x34, 0x05, 0xfd, 0xbf, 0xce, 0xa7, 0xa0,
-0xc5, 0x07, 0x71, 0xf0, 0x3f, 0xf2, 0xef, 0x4f,
-0x76, 0x3a, 0x94, 0xe7, 0x23, 0xbf, 0x12, 0x54,
-0xc9, 0x4d, 0x4c, 0x19, 0x57, 0x8d, 0xdd, 0xe6,
-0xa0, 0x35, 0xe9, 0x65, 0x7d, 0xe6, 0x06, 0x50,
-0x6b, 0x66, 0xfe, 0x92, 0x8f, 0x7f, 0xaf, 0x02,
-0xa7, 0xae, 0x48, 0x24, 0x12, 0xa9, 0x47, 0x0b,
-0x6f, 0xe0, 0x9c, 0xb9, 0x3c, 0xc2, 0xe5, 0xe1,
-0xed, 0x97, 0xa3, 0xe0, 0xb3, 0xb7, 0x70, 0xa2,
-0x45, 0x60, 0x12, 0xe3, 0xfc, 0x47, 0x61, 0xde,
-0xc3, 0x8a, 0x1f, 0x8c, 0x78, 0xae, 0xe2, 0x30,
-0x7f, 0xd5, 0x08, 0x8e, 0xe6, 0xaf, 0x69, 0x08,
-0xec, 0x54, 0x0a, 0x5a, 0x83, 0x60, 0xb1, 0x14,
-0x74, 0x00, 0xc1, 0x2e, 0x0e, 0xe2, 0xf8, 0x29,
-0x8e, 0xaf, 0xcc, 0xcb, 0x82, 0x9a, 0x12, 0xc4,
-0x99, 0x83, 0xb3, 0xa7, 0x5c, 0x2a, 0xe3, 0x1a,
-0x56, 0x72, 0x0d, 0x98, 0xeb, 0x6d, 0xd6, 0xb3,
-0x59, 0x78, 0x2b, 0x68, 0x68, 0xa9, 0x47, 0x23,
-0x88, 0x3d, 0xcc, 0x4f, 0x3d, 0x5a, 0x24, 0x12,
-0xa9, 0x67, 0x08, 0x94, 0x25, 0x3e, 0x6d, 0x18,
-0x62, 0xb4, 0xd4, 0xc2, 0xd9, 0xa3, 0xf0, 0xcd,
-0x17, 0x78, 0xe4, 0x76, 0xc5, 0x6b, 0x90, 0xf9,
-0x2c, 0x2c, 0x7a, 0x1a, 0x32, 0x9e, 0x84, 0x05,
-0x8f, 0xe3, 0x42, 0x81, 0xb0, 0xe7, 0x3f, 0x1a,
-0x42, 0xb0, 0x18, 0x7f, 0xd5, 0x29, 0x68, 0x4b,
-0xfe, 0x6a, 0x52, 0xd0, 0x82, 0x5d, 0xd0, 0x8e,
-0xf2, 0x57, 0xb0, 0x0b, 0x5a, 0x90, 0xbf, 0xe8,
-0xcb, 0x31, 0xad, 0x3d, 0xe7, 0x7e, 0xcc, 0x1e,
-0x70, 0xf4, 0x28, 0x93, 0xa0, 0xe2, 0x6f, 0xa0,
-0x72, 0xb1, 0x7b, 0xca, 0x35, 0xec, 0x4a, 0x31,
-0x37, 0x82, 0x5d, 0xad, 0x99, 0xa7, 0x0e, 0xaf,
-0xdf, 0x45, 0x14, 0x26, 0x91, 0x48, 0xdd, 0x53,
-0xfe, 0x40, 0x19, 0xb7, 0x1c, 0x81, 0x5b, 0xb4,
-0x03, 0x0e, 0x2e, 0x87, 0xaf, 0x26, 0xc2, 0xb2,
-0x97, 0x11, 0xb8, 0x9f, 0x28, 0x5e, 0xf8, 0xa4,
-0xe2, 0x27, 0xd0, 0xc8, 0xdf, 0xc7, 0xf4, 0xf8,
-0x1b, 0x83, 0xe0, 0xf4, 0x81, 0xc6, 0xfc, 0x35,
-0x40, 0xb0, 0x65, 0x0a, 0x3a, 0xc8, 0x5f, 0xab,
-0x14, 0xb4, 0xe0, 0x29, 0x24, 0xf7, 0xba, 0xa0,
-0x75, 0x52, 0xd0, 0x97, 0x61, 0xf5, 0x79, 0xf1,
-0x20, 0x7c, 0x49, 0xd3, 0xae, 0x4e, 0x35, 0xc7,
-0x5f, 0xc6, 0x75, 0xa4, 0x92, 0xdb, 0x2a, 0x51,
-0xc9, 0x6d, 0xb3, 0x59, 0xc9, 0x15, 0xe0, 0x6c,
-0x83, 0xda, 0x2a, 0xd4, 0xd6, 0x85, 0x8d, 0x33,
-0x36, 0xb5, 0xc6, 0xf7, 0xb7, 0x7b, 0x18, 0x9d,
-0x57, 0x22, 0x91, 0x48, 0xdd, 0x45, 0xfc, 0x96,
-0xd5, 0x70, 0x8e, 0x95, 0x1f, 0xc6, 0x91, 0x17,
-0xfb, 0x16, 0xc2, 0x86, 0x31, 0x4a, 0x9c, 0xfb,
-0x1c, 0x56, 0x72, 0x39, 0x79, 0x03, 0xd6, 0xe7,
-0xef, 0xe3, 0x31, 0xfc, 0x7d, 0xc4, 0x22, 0x04,
-0xd6, 0xf0, 0xd7, 0xb8, 0x0b, 0x3a, 0x4d, 0xaa,
-0x0b, 0xba, 0xbf, 0x58, 0x09, 0xf8, 0x46, 0x89,
-0x2e, 0x68, 0x0d, 0x7f, 0xad, 0xba, 0xa0, 0x47,
-0x5c, 0x2d, 0xd6, 0x05, 0x7d, 0x19, 0x5e, 0x79,
-0xf9, 0x6b, 0xb8, 0xf4, 0xa1, 0xa5, 0xd6, 0xce,
-0xb0, 0x47, 0x7d, 0xe6, 0x4a, 0x56, 0x72, 0xcd,
-0xbb, 0xa7, 0x44, 0x4e, 0x09, 0xe9, 0x00, 0xd7,
-0xac, 0x92, 0x2b, 0x13, 0xe7, 0xc6, 0x02, 0xd7,
-0x82, 0xb9, 0x3a, 0xe6, 0x9f, 0xd2, 0xde, 0xc2,
-0xba, 0xa8, 0x3b, 0x8b, 0x44, 0x22, 0xa5, 0xa2,
-0x00, 0xfc, 0x78, 0x43, 0xe3, 0xcc, 0x3d, 0x9c,
-0x05, 0x3b, 0xd2, 0x60, 0xd3, 0x78, 0x3c, 0x8d,
-0xbb, 0xf4, 0x45, 0x58, 0xfc, 0x3c, 0x2c, 0x7e,
-0x0e, 0xbd, 0xe8, 0x59, 0xc5, 0x4f, 0x6b, 0x11,
-0xfc, 0x94, 0x21, 0x7f, 0x35, 0x21, 0xf0, 0x43,
-0x32, 0x29, 0xe8, 0x7b, 0x9d, 0x4f, 0x41, 0x4f,
-0x71, 0xbb, 0x0b, 0x5a, 0x7e, 0x10, 0xc7, 0x87,
-0xbf, 0xc0, 0x89, 0x91, 0xdf, 0x6e, 0x81, 0xc6,
-0xf3, 0x76, 0x57, 0x08, 0x19, 0xc5, 0xb9, 0x56,
-0xd8, 0x15, 0x1f, 0x3c, 0x25, 0xd2, 0x3a, 0xd5,
-0xa6, 0x0b, 0x5c, 0x0d, 0x76, 0x25, 0xf3, 0xc9,
-0x0d, 0x2a, 0x47, 0xf2, 0xc9, 0x2a, 0x5b, 0x32,
-0xb7, 0x46, 0xc7, 0x9c, 0xe3, 0xfc, 0x79, 0xd1,
-0x79, 0x61, 0x12, 0x89, 0x94, 0x1a, 0x42, 0xec,
-0x36, 0x55, 0x42, 0x71, 0x36, 0xec, 0x4a, 0xc7,
-0xa1, 0x8e, 0xab, 0xdf, 0x86, 0xe5, 0xaf, 0xe0,
-0x6a, 0xf8, 0xb0, 0x91, 0xbf, 0xcf, 0x1b, 0xf3,
-0x37, 0x36, 0x04, 0xd6, 0xe5, 0xaf, 0x78, 0x08,
-0x1c, 0x7f, 0x0a, 0x5a, 0x97, 0xbf, 0xa9, 0x94,
-0x82, 0xc6, 0x31, 0x1a, 0x37, 0xc3, 0x37, 0x6b,
-0x59, 0x53, 0x25, 0xce, 0x21, 0x11, 0xec, 0x58,
-0xee, 0x6e, 0x65, 0x5c, 0x9b, 0xdd, 0x53, 0xd1,
-0x65, 0x5c, 0x81, 0xf0, 0xd6, 0x1c, 0xbb, 0xdc,
-0xcd, 0x17, 0x82, 0xe6, 0x6f, 0xf3, 0xcb, 0xfa,
-0xda, 0x92, 0xfd, 0x63, 0x47, 0x22, 0x91, 0x7a,
-0x9f, 0x00, 0xf0, 0x86, 0xcf, 0xef, 0x8d, 0xf5,
-0x67, 0xe1, 0xd4, 0xd7, 0xd8, 0xb4, 0x9c, 0xf5,
-0x0e, 0xae, 0x62, 0x0f, 0x6c, 0xb9, 0x45, 0xbf,
-0x88, 0xd6, 0xe5, 0x6f, 0x2c, 0x82, 0x45, 0x53,
-0xd0, 0x6e, 0x74, 0x41, 0x3b, 0x3a, 0x88, 0x63,
-0xa2, 0x25, 0x7f, 0x63, 0x07, 0x71, 0x58, 0xad,
-0x23, 0xd4, 0xe5, 0xef, 0xc8, 0xab, 0xf1, 0x90,
-0xd4, 0x8e, 0x99, 0x80, 0xd3, 0xab, 0x88, 0xb9,
-0x09, 0x61, 0xae, 0xca, 0xd0, 0x5c, 0x1d, 0x30,
-0x6b, 0x69, 0x60, 0xd4, 0x9a, 0x45, 0x22, 0x91,
-0x12, 0x20, 0xf0, 0xb3, 0xd6, 0x7a, 0xb8, 0x70,
-0x0a, 0x4a, 0x0f, 0x62, 0x7b, 0xed, 0x8e, 0x34,
-0x58, 0x3d, 0x04, 0xdb, 0xa8, 0x38, 0x79, 0x03,
-0x46, 0xfe, 0xbe, 0x64, 0xc0, 0xdf, 0x41, 0x56,
-0xfc, 0x55, 0xa5, 0xa0, 0x33, 0xe2, 0x4e, 0x41,
-0xab, 0x4b, 0xc0, 0xc1, 0x41, 0x1c, 0xba, 0x07,
-0x81, 0x63, 0xf9, 0x6b, 0x3c, 0x88, 0x63, 0x4a,
-0x9c, 0x83, 0x38, 0xf4, 0x0e, 0x02, 0x8f, 0x89,
-0xdd, 0xc5, 0xa0, 0x3b, 0x88, 0x43, 0xc5, 0x5f,
-0xfe, 0x58, 0x59, 0x43, 0x71, 0xd8, 0x26, 0xc6,
-0xbc, 0x82, 0x95, 0xdc, 0x54, 0x18, 0x82, 0x61,
-0x51, 0xc6, 0x75, 0xa4, 0x92, 0xeb, 0x00, 0x73,
-0xf5, 0x80, 0xab, 0x66, 0x2e, 0xba, 0x29, 0xe4,
-0xc6, 0x2a, 0xd6, 0x5c, 0x83, 0x7d, 0x0e, 0xfe,
-0xae, 0x64, 0xff, 0x70, 0x92, 0x48, 0xa4, 0x1e,
-0x28, 0x6c, 0xe6, 0xf1, 0xd4, 0xe2, 0x0d, 0xbf,
-0x60, 0x13, 0xec, 0x55, 0xda, 0xa8, 0x56, 0xbe,
-0x01, 0x2b, 0x5e, 0x45, 0x2f, 0x7b, 0x25, 0x02,
-0xdf, 0x00, 0x7f, 0x45, 0x42, 0x60, 0x67, 0x53,
-0xd0, 0x96, 0x25, 0x60, 0x1b, 0x29, 0xe8, 0xe9,
-0x62, 0x29, 0xe8, 0x04, 0xcf, 0x82, 0xe6, 0x68,
-0xe6, 0xdf, 0xc0, 0xfc, 0xb5, 0x08, 0x20, 0xdd,
-0x32, 0xae, 0x8b, 0x2b, 0x84, 0xac, 0xc2, 0x5b,
-0xfd, 0x32, 0xae, 0x7e, 0xc7, 0xb2, 0xfc, 0xc9,
-0xa0, 0xe8, 0x4a, 0xae, 0xb6, 0x8c, 0x6b, 0xb7,
-0x92, 0x2b, 0x82, 0xda, 0x08, 0x73, 0xab, 0x22,
-0x6e, 0x54, 0xbb, 0x12, 0xcd, 0xbf, 0x24, 0x1c,
-0x2c, 0x46, 0x81, 0x30, 0x89, 0x44, 0x72, 0x40,
-0xb8, 0xb6, 0xcf, 0x53, 0x03, 0xa5, 0x39, 0xb8,
-0x0d, 0x76, 0xdb, 0x74, 0x58, 0x3f, 0x12, 0xc7,
-0x62, 0xac, 0x7c, 0x1d, 0x7b, 0x98, 0xd1, 0x61,
-0xfe, 0xbe, 0x2c, 0xcd, 0xdf, 0xcc, 0x00, 0x82,
-0x2d, 0xbb, 0xa0, 0x1f, 0x8b, 0x41, 0xb0, 0x6e,
-0x17, 0xf4, 0x40, 0xbb, 0x29, 0x68, 0xcb, 0x2e,
-0xe8, 0xdb, 0x25, 0xba, 0xa0, 0x75, 0xd6, 0x11,
-0x3a, 0x9a, 0x82, 0xe6, 0x0f, 0xb1, 0x7b, 0x3e,
-0xbb, 0x70, 0x8a, 0x19, 0x02, 0xd7, 0x09, 0xe6,
-0x6a, 0x5a, 0xa7, 0xac, 0xba, 0xa7, 0x5c, 0x63,
-0xae, 0x16, 0xb8, 0xba, 0xcc, 0x75, 0x33, 0xbc,
-0x15, 0x64, 0x6e, 0xd0, 0xe7, 0x03, 0x66, 0xcd,
-0x55, 0x8c, 0x3f, 0x5f, 0xea, 0xcb, 0x22, 0x91,
-0x48, 0x76, 0x84, 0xc3, 0x31, 0xc0, 0xd7, 0x81,
-0x77, 0x95, 0xa2, 0x1d, 0xb0, 0x3b, 0x1d, 0xd6,
-0x8f, 0x80, 0xcf, 0xdf, 0x43, 0xec, 0xae, 0x7a,
-0x03, 0xc9, 0x1b, 0x70, 0x34, 0x7f, 0x4d, 0x43,
-0x60, 0xc1, 0x12, 0xf0, 0x22, 0xab, 0x12, 0x70,
-0xb7, 0x1c, 0xc4, 0xe1, 0xd0, 0x3a, 0xc2, 0x31,
-0x7d, 0xb1, 0x99, 0xad, 0xaa, 0x08, 0xd1, 0x96,
-0xba, 0x65, 0x5c, 0x07, 0x86, 0x60, 0x24, 0xb8,
-0x8c, 0x6b, 0x88, 0xdd, 0xc6, 0x2a, 0x3d, 0x9f,
-0xd7, 0x35, 0x6b, 0x3c, 0xa7, 0xf2, 0x79, 0xe0,
-0x97, 0xed, 0xea, 0x48, 0xf6, 0x0f, 0x32, 0x89,
-0x44, 0xea, 0x3e, 0xe2, 0x61, 0x54, 0x73, 0x0d,
-0x9c, 0x2f, 0x84, 0xbc, 0x35, 0xb8, 0xdd, 0x60,
-0xcd, 0x50, 0xf8, 0xec, 0x6d, 0xf4, 0xaa, 0x37,
-0x15, 0xbf, 0xa1, 0xe1, 0x6f, 0x10, 0xc1, 0x62,
-0xfc, 0x55, 0x23, 0x38, 0xc8, 0xdf, 0x64, 0xa4,
-0xa0, 0xa5, 0xf8, 0xeb, 0x46, 0x17, 0xb4, 0x3d,
-0xfe, 0x8e, 0xed, 0x8b, 0xcf, 0xeb, 0x70, 0x16,
-0x22, 0x32, 0x15, 0x99, 0xdb, 0x8d, 0x5b, 0xa7,
-0x9c, 0x63, 0xae, 0x8e, 0xb1, 0x2f, 0x8e, 0x2a,
-0xc2, 0x24, 0x12, 0xc9, 0x44, 0x7e, 0x1f, 0xce,
-0xf6, 0x39, 0x57, 0x80, 0x85, 0xdd, 0x1d, 0x33,
-0x61, 0xcd, 0x7b, 0x78, 0x6e, 0x28, 0xec, 0x08,
-0x82, 0x75, 0xf9, 0x6b, 0x80, 0x60, 0xc1, 0x14,
-0xf4, 0x62, 0xc1, 0x14, 0xb4, 0x7c, 0x17, 0xb4,
-0x60, 0x09, 0x58, 0x6e, 0x1d, 0xa1, 0x60, 0x0a,
-0xfa, 0x77, 0x62, 0x25, 0x60, 0xb1, 0x14, 0xf4,
-0xb4, 0xfe, 0xb0, 0x71, 0x2c, 0x86, 0xbd, 0x29,
-0xd1, 0x3d, 0x25, 0xba, 0x42, 0x48, 0xa4, 0x75,
-0x4a, 0x7c, 0xf0, 0x94, 0x2b, 0xd8, 0x6d, 0xd2,
-0x34, 0x50, 0x99, 0xa4, 0x94, 0x65, 0xb1, 0x8b,
-0xd3, 0x66, 0x42, 0x06, 0xfe, 0x15, 0x76, 0xb6,
-0x27, 0xfb, 0x27, 0x9c, 0x44, 0x22, 0xa5, 0x96,
-0xb0, 0xb0, 0xdb, 0x5a, 0x8f, 0x0b, 0x71, 0x8e,
-0x7e, 0x89, 0x47, 0x87, 0x36, 0x8c, 0xc6, 0x80,
-0x37, 0x6b, 0x28, 0x36, 0x33, 0xaf, 0x7e, 0x47,
-0x8f, 0xbf, 0xb1, 0x08, 0x1e, 0x6c, 0x15, 0x02,
-0xbf, 0x64, 0x1a, 0x02, 0x5b, 0x0e, 0xe2, 0x78,
-0xd2, 0x38, 0x05, 0xfd, 0x88, 0xcc, 0x20, 0x8e,
-0x01, 0x2e, 0x0f, 0xe2, 0x30, 0x09, 0x81, 0xfb,
-0xc9, 0x0c, 0xe2, 0xd0, 0x76, 0x41, 0xf3, 0x37,
-0x32, 0x9f, 0xc1, 0x7f, 0x1d, 0x6f, 0x83, 0x13,
-0xad, 0x53, 0x8e, 0x0c, 0xc1, 0xb0, 0x1d, 0xde,
-0xba, 0x33, 0x04, 0xc3, 0x76, 0x19, 0xb7, 0xc9,
-0xa2, 0x8c, 0x2b, 0xc4, 0xd9, 0x70, 0x9c, 0xdb,
-0x70, 0x56, 0xe3, 0xfa, 0xb0, 0x2b, 0xd0, 0x4d,
-0x55, 0xd8, 0x1a, 0x4d, 0x4d, 0x59, 0x24, 0x12,
-0x09, 0x57, 0xfb, 0x79, 0x31, 0xc9, 0x7c, 0x78,
-0x0d, 0xec, 0x9c, 0x09, 0x1b, 0x3f, 0x82, 0xb5,
-0x1f, 0xe0, 0x70, 0x2a, 0xf4, 0x50, 0x34, 0xf2,
-0x77, 0x88, 0x18, 0x7f, 0x55, 0x21, 0xb0, 0x54,
-0x0a, 0x7a, 0xc9, 0x20, 0x89, 0x14, 0x74, 0x86,
-0xa3, 0x29, 0xe8, 0x59, 0xf7, 0xc8, 0xa4, 0xa0,
-0xad, 0xd6, 0x01, 0xdb, 0x1e, 0xc4, 0x61, 0x99,
-0x82, 0x1e, 0x77, 0x3d, 0x6c, 0x9d, 0x0a, 0xd5,
-0xc5, 0xd0, 0xd1, 0xe2, 0x6e, 0xc7, 0xb2, 0xcc,
-0xda, 0xbe, 0xf8, 0x99, 0xab, 0xc5, 0x6e, 0x62,
-0xbb, 0xa7, 0xa2, 0xb3, 0xca, 0x71, 0x31, 0x57,
-0x83, 0xdd, 0xfa, 0x28, 0x57, 0x84, 0x5c, 0x1e,
-0x34, 0xff, 0x18, 0xfe, 0xdc, 0xa9, 0x29, 0x8b,
-0x44, 0xea, 0x9d, 0xf2, 0xfb, 0xf0, 0x4e, 0x5b,
-0x75, 0x02, 0x72, 0x57, 0xc2, 0xe6, 0xc9, 0xf0,
-0xe5, 0x48, 0x9c, 0x4f, 0xf5, 0xf9, 0x7b, 0x41,
-0x9b, 0xf0, 0x37, 0x16, 0xc1, 0xae, 0xa4, 0xa0,
-0x5d, 0x18, 0xc4, 0x21, 0x95, 0x82, 0x76, 0x76,
-0x10, 0x87, 0xd4, 0x29, 0xa4, 0xa8, 0x14, 0x34,
-0x7f, 0x7f, 0xc6, 0xa3, 0x38, 0xcf, 0x84, 0x23,
-0x4f, 0xa2, 0x63, 0x59, 0x60, 0xae, 0x72, 0x92,
-0x5a, 0xa7, 0x9c, 0xa9, 0xe4, 0x3a, 0xd0, 0x3a,
-0xa5, 0x5f, 0xc9, 0x95, 0x63, 0x6e, 0x34, 0x6a,
-0xc3, 0x2e, 0xb7, 0x76, 0x53, 0x25, 0x6e, 0x50,
-0x22, 0x91, 0x48, 0xbd, 0x44, 0xfc, 0x25, 0x37,
-0xbf, 0x8b, 0xd6, 0x9e, 0xc6, 0x4e, 0xe6, 0xed,
-0x69, 0xf0, 0xc5, 0x70, 0x8c, 0x76, 0xd1, 0xef,
-0xa3, 0xc3, 0xfc, 0x55, 0x23, 0x38, 0x6b, 0x88,
-0x44, 0x0a, 0x7a, 0x85, 0x65, 0x0a, 0xfa, 0xaf,
-0x76, 0xf9, 0x6b, 0x35, 0x0b, 0x7a, 0x9e, 0x4c,
-0x0a, 0xda, 0x64, 0x17, 0x43, 0x82, 0xd6, 0x01,
-0x8b, 0xa5, 0xa0, 0xa7, 0xf6, 0xc7, 0x8c, 0x44,
-0x53, 0xb5, 0x29, 0x76, 0x2d, 0xcb, 0xb8, 0x06,
-0x2b, 0x84, 0xac, 0xe6, 0x2a, 0x77, 0x97, 0x32,
-0xae, 0x06, 0xbb, 0xfa, 0x65, 0x5c, 0xeb, 0x4a,
-0xae, 0x5c, 0x19, 0x57, 0x27, 0xb6, 0xd5, 0x46,
-0xb8, 0x02, 0x66, 0x75, 0x67, 0x80, 0x5f, 0xaa,
-0xd3, 0x4b, 0xb9, 0x68, 0x12, 0xa9, 0x87, 0x8b,
-0xbf, 0xd2, 0xe6, 0x3f, 0xf5, 0xa5, 0x39, 0xb8,
-0xe6, 0x6f, 0xf3, 0x04, 0x58, 0x37, 0x1c, 0xe1,
-0x8b, 0xfc, 0x1d, 0x66, 0xc1, 0x5f, 0x3b, 0x29,
-0x68, 0x85, 0xbf, 0xcb, 0x5f, 0x31, 0x3e, 0x08,
-0xfc, 0x62, 0x4c, 0x09, 0xd8, 0x78, 0x10, 0x96,
-0x26, 0x04, 0xb6, 0x1c, 0x84, 0x25, 0xbf, 0x8e,
-0xd0, 0x6c, 0x10, 0x56, 0x6c, 0x09, 0xd8, 0x2a,
-0x05, 0x2d, 0x3a, 0x08, 0x2b, 0xb6, 0x0b, 0x3a,
-0x66, 0x10, 0x16, 0x7f, 0x2d, 0x71, 0x70, 0x05,
-0xe6, 0x81, 0xa9, 0x75, 0xca, 0x0e, 0x73, 0x2b,
-0x13, 0xc2, 0x5c, 0x09, 0xe0, 0x06, 0x98, 0x1b,
-0x6d, 0x7e, 0x91, 0xb6, 0x66, 0x42, 0x30, 0x89,
-0xd4, 0x33, 0xc5, 0xef, 0xc0, 0x67, 0x8f, 0xc2,
-0xe1, 0xcf, 0x21, 0x3b, 0x1d, 0x36, 0x8c, 0x45,
-0xf2, 0x86, 0x1d, 0x44, 0xb0, 0x5e, 0x08, 0x6c,
-0x9d, 0x82, 0x7e, 0xcb, 0xad, 0x14, 0xb4, 0x8d,
-0x41, 0x1c, 0xae, 0xcc, 0x82, 0x76, 0x74, 0x10,
-0x87, 0x68, 0x0a, 0x5a, 0x41, 0xf0, 0xb8, 0xeb,
-0xf0, 0x9b, 0xcc, 0x5f, 0x2c, 0x71, 0x92, 0xba,
-0x5f, 0xc6, 0x8d, 0xa3, 0x92, 0xeb, 0x68, 0x19,
-0x57, 0xf6, 0x70, 0x90, 0xc5, 0x10, 0x8c, 0x38,
-0xb2, 0xca, 0xfa, 0x95, 0x5c, 0x39, 0xe6, 0xea,
-0xa0, 0x96, 0xbb, 0xf6, 0xb4, 0x8e, 0xf9, 0x07,
-0xb7, 0x52, 0x39, 0x98, 0x44, 0xea, 0x41, 0x02,
-0x80, 0xe6, 0x2a, 0xcc, 0x33, 0xef, 0x59, 0x00,
-0x5b, 0xa7, 0xc0, 0xba, 0x91, 0xb0, 0x6e, 0x44,
-0xc8, 0x02, 0xfc, 0x75, 0x24, 0x04, 0xb6, 0x4c,
-0x41, 0x4b, 0x75, 0x41, 0x8b, 0x0e, 0xe2, 0x78,
-0x58, 0xac, 0x0b, 0xda, 0xb5, 0x75, 0x84, 0x71,
-0x0e, 0xe2, 0x18, 0xdf, 0x0f, 0x76, 0xcd, 0xc1,
-0xfb, 0x3c, 0x1d, 0xc8, 0x75, 0xf9, 0x40, 0xae,
-0x40, 0x25, 0x37, 0xbe, 0xd8, 0xd6, 0x98, 0xb9,
-0x50, 0x5b, 0xa6, 0x71, 0xdd, 0x69, 0xe6, 0xb9,
-0x00, 0x7e, 0x42, 0x30, 0x89, 0xd4, 0x9d, 0xe5,
-0xf7, 0x61, 0xc0, 0x5b, 0x59, 0xc8, 0x0e, 0x7c,
-0x0a, 0x1b, 0xc7, 0xe1, 0x58, 0xe6, 0x2f, 0x47,
-0xa1, 0x23, 0xf0, 0x1d, 0x11, 0x1d, 0x02, 0x27,
-0x87, 0xbf, 0x36, 0x4e, 0x21, 0x3d, 0x2d, 0xcd,
-0x5f, 0x37, 0x06, 0x71, 0x58, 0x9f, 0x42, 0xba,
-0xd5, 0x26, 0x7f, 0xb9, 0x67, 0xdc, 0x01, 0x05,
-0x1b, 0x30, 0x51, 0x4c, 0xd8, 0xed, 0x0d, 0xd8,
-0x0d, 0xbb, 0xa6, 0x14, 0xcd, 0x1f, 0xda, 0x47,
-0x63, 0xb2, 0x48, 0xa4, 0x6e, 0x27, 0x60, 0xed,
-0x2d, 0x58, 0x4b, 0x2a, 0xf9, 0x9a, 0xf1, 0x80,
-0x77, 0x23, 0xc7, 0x6e, 0xc0, 0xa3, 0x22, 0x36,
-0xe2, 0xaf, 0x61, 0x0a, 0xfa, 0x5d, 0x8b, 0x14,
-0xf4, 0xaa, 0xb7, 0xc4, 0x06, 0x71, 0xd8, 0x98,
-0x05, 0xfd, 0x6c, 0x92, 0x07, 0x71, 0xa4, 0x89,
-0x0d, 0xe2, 0x98, 0x2a, 0x95, 0x82, 0xbe, 0xd1,
-0x2c, 0x05, 0x3d, 0xa1, 0x1f, 0x7e, 0x7f, 0xce,
-0x16, 0x08, 0xb5, 0x4e, 0x39, 0x5c, 0xc9, 0x6d,
-0x48, 0x44, 0x25, 0x37, 0xe5, 0x5a, 0xa7, 0xec,
-0x57, 0x72, 0x25, 0x72, 0xcb, 0x46, 0xcc, 0x0d,
-0x00, 0x37, 0xc6, 0xfc, 0x47, 0x98, 0x75, 0x7a,
-0x93, 0x7d, 0x33, 0x21, 0x91, 0x48, 0xc2, 0xf2,
-0x36, 0xb0, 0x8a, 0x23, 0x70, 0x64, 0x3d, 0xdb,
-0x35, 0x07, 0x36, 0x8d, 0xc3, 0xf9, 0x48, 0x16,
-0xfc, 0xfd, 0x50, 0x26, 0x05, 0x3d, 0x54, 0xa8,
-0x0b, 0x5a, 0xc3, 0x5f, 0xab, 0x2e, 0x68, 0xc3,
-0x75, 0x84, 0x71, 0x74, 0x41, 0xcf, 0x77, 0xaf,
-0x0b, 0xda, 0x8d, 0x75, 0xc0, 0xda, 0x41, 0x1c,
-0x13, 0x6e, 0xc0, 0x57, 0x3b, 0xd5, 0x27, 0xcd,
-0xba, 0xa7, 0xa2, 0xc3, 0xdb, 0x38, 0xdb, 0x95,
-0x1b, 0x0d, 0x76, 0xf6, 0x25, 0x73, 0x6d, 0x9f,
-0x48, 0x25, 0x57, 0x22, 0xc8, 0xd5, 0x67, 0xae,
-0x74, 0x25, 0xd7, 0x6d, 0xe6, 0x6a, 0x5d, 0x02,
-0x75, 0xe5, 0xf8, 0x5a, 0x9a, 0x44, 0x22, 0xa5,
-0xb2, 0x00, 0xf0, 0x3e, 0x59, 0xb2, 0x1f, 0x5b,
-0x9a, 0xb7, 0x7f, 0x0c, 0x9b, 0xc6, 0xa3, 0x37,
-0x7e, 0xa4, 0x78, 0x8c, 0x92, 0x79, 0xe6, 0x1e,
-0xad, 0xc7, 0xdf, 0xd8, 0x10, 0x78, 0x58, 0x04,
-0xc1, 0x8e, 0xa5, 0xa0, 0x15, 0x04, 0x2f, 0x97,
-0x5a, 0x47, 0x28, 0xd8, 0x05, 0x6d, 0x32, 0x08,
-0x2b, 0xce, 0x41, 0x1c, 0x62, 0x5d, 0xd0, 0xd6,
-0x83, 0x38, 0x6e, 0x91, 0xe8, 0xc2, 0xe2, 0xef,
-0xe1, 0xff, 0x70, 0xfc, 0xde, 0x2b, 0x31, 0x78,
-0xca, 0x91, 0x15, 0x42, 0xba, 0x83, 0xa7, 0x2c,
-0xb1, 0xeb, 0xc4, 0x2e, 0x03, 0xa9, 0x15, 0x42,
-0xf6, 0x5a, 0xa7, 0x0c, 0xbb, 0xa7, 0xac, 0xb1,
-0x9b, 0x28, 0xd4, 0x86, 0x7c, 0xa1, 0x44, 0xe5,
-0x53, 0x68, 0xfe, 0x70, 0x6d, 0xcd, 0xc9, 0xbe,
-0xbf, 0x90, 0x48, 0x24, 0x5d, 0x01, 0xf0, 0x3b,
-0x5b, 0xe1, 0x16, 0xd8, 0x33, 0x0f, 0xc7, 0x22,
-0x7d, 0x35, 0x1e, 0x1d, 0xc5, 0x5f, 0x67, 0x52,
-0xd0, 0x56, 0x5d, 0xd0, 0x96, 0xfc, 0x75, 0x7d,
-0x1d, 0xb0, 0xdb, 0x29, 0x68, 0xab, 0x75, 0xc0,
-0x41, 0x04, 0xdb, 0x5d, 0x07, 0xcc, 0xff, 0xb8,
-0x2f, 0x03, 0x31, 0xd4, 0x83, 0xca, 0xb8, 0x29,
-0x33, 0x07, 0x23, 0xee, 0xc3, 0x41, 0xee, 0x62,
-0xf7, 0x94, 0x81, 0x4f, 0xa2, 0x6b, 0x4b, 0xa1,
-0x8d, 0xa2, 0x60, 0x12, 0x29, 0x65, 0x04, 0x7e,
-0x4c, 0x4c, 0xd5, 0x94, 0xb1, 0xc3, 0xab, 0x61,
-0xcb, 0x64, 0xf8, 0x6a, 0xa2, 0xe2, 0xf1, 0x11,
-0x47, 0x10, 0x6c, 0xc9, 0x5f, 0xf9, 0x2e, 0x68,
-0xcb, 0x41, 0x58, 0x76, 0xd6, 0x11, 0xca, 0xa4,
-0xa0, 0xdd, 0x58, 0x47, 0x28, 0x3a, 0x08, 0xcb,
-0x9d, 0x2e, 0xe8, 0xf4, 0xfb, 0xe0, 0xf8, 0x8e,
-0x9e, 0xc1, 0xdc, 0xee, 0xd8, 0x3a, 0x95, 0x72,
-0xcc, 0x8d, 0xb5, 0x97, 0x8e, 0x06, 0x93, 0x48,
-0xc9, 0x16, 0x27, 0xaf, 0xa7, 0x06, 0x9b, 0x73,
-0xf2, 0x3f, 0xc7, 0xad, 0xf7, 0x5b, 0x26, 0xa1,
-0x37, 0x07, 0xf8, 0x3b, 0x41, 0x8f, 0xbf, 0x06,
-0x29, 0xe8, 0xf5, 0x26, 0xa7, 0x90, 0x04, 0x07,
-0x71, 0x08, 0xee, 0x62, 0x88, 0x1d, 0xc4, 0x21,
-0xd8, 0x05, 0x6d, 0x95, 0x82, 0x56, 0x97, 0x80,
-0x83, 0x83, 0x38, 0x74, 0x0f, 0x02, 0xc7, 0x96,
-0x80, 0x4d, 0x06, 0x71, 0xdc, 0x93, 0x84, 0x41,
-0x1c, 0xfc, 0x59, 0x9c, 0xdc, 0xe3, 0xc4, 0x10,
-0x0c, 0xa3, 0x4a, 0x6e, 0x62, 0xf7, 0x07, 0x19,
-0x56, 0x72, 0xe3, 0xde, 0x1f, 0x64, 0x58, 0xc9,
-0x75, 0xae, 0x8c, 0x6b, 0xaf, 0x5d, 0xd9, 0xb2,
-0x92, 0x1b, 0xb0, 0x08, 0x70, 0xab, 0x8b, 0x03,
-0x66, 0x55, 0x27, 0xd4, 0xe6, 0x1f, 0xc9, 0xf8,
-0xff, 0x01, 0x46, 0x08, 0x26, 0x91, 0x92, 0x20,
-0x3c, 0x95, 0xcf, 0x6f, 0x74, 0x65, 0x07, 0xe1,
-0xd0, 0x4a, 0xd8, 0xf6, 0x31, 0x66, 0x9b, 0x79,
-0xe4, 0x8b, 0x56, 0x10, 0x1c, 0x15, 0x02, 0x27,
-0x25, 0x05, 0xfd, 0x99, 0x7b, 0x5d, 0xd0, 0xcf,
-0x25, 0x39, 0x05, 0x3d, 0x53, 0x30, 0x05, 0x7d,
-0xbb, 0x44, 0x0a, 0x7a, 0xd2, 0x8d, 0xe8, 0x15,
-0x83, 0xa1, 0xf4, 0x80, 0x43, 0x43, 0x30, 0x1c,
-0x5d, 0x21, 0x24, 0x15, 0xde, 0xca, 0xac, 0x10,
-0xb2, 0x5f, 0xc6, 0x8d, 0x5d, 0x21, 0xd4, 0x0d,
-0xca, 0xb8, 0x25, 0xe6, 0xb1, 0x2d, 0xe3, 0xa8,
-0x55, 0x5b, 0x8b, 0x5d, 0x8d, 0x39, 0x82, 0xdb,
-0x1a, 0x29, 0x0a, 0x26, 0x91, 0x12, 0x2c, 0x8c,
-0x5f, 0x4e, 0xee, 0x85, 0x9c, 0xa5, 0xb8, 0x99,
-0x88, 0x93, 0x37, 0x60, 0x13, 0xfe, 0x06, 0x11,
-0x3c, 0x4e, 0xe1, 0xaf, 0x53, 0x5d, 0xd0, 0xef,
-0xba, 0x96, 0x82, 0x7e, 0x49, 0x6c, 0x10, 0xc7,
-0x33, 0xf2, 0x29, 0xe8, 0x47, 0x5c, 0x18, 0x84,
-0x65, 0x99, 0x82, 0xee, 0x2f, 0x9a, 0x82, 0x5e,
-0x3f, 0x02, 0x2a, 0x0b, 0x6d, 0x30, 0x97, 0xb9,
-0x37, 0x7b, 0xaa, 0xdb, 0xad, 0x10, 0x4a, 0x45,
-0xec, 0x5a, 0xa7, 0x94, 0x85, 0x80, 0x1b, 0x71,
-0x51, 0xd0, 0x18, 0x05, 0x37, 0x25, 0xfb, 0x6e,
-0x44, 0x22, 0xf5, 0x0e, 0x81, 0x1f, 0x6f, 0xce,
-0xc5, 0xbb, 0x70, 0x74, 0xd5, 0x8e, 0x34, 0xd8,
-0x36, 0x0d, 0x1d, 0xe6, 0x6f, 0x10, 0xc1, 0x26,
-0xfc, 0x8d, 0x0d, 0x81, 0xad, 0x4a, 0xc0, 0x1a,
-0x04, 0x3b, 0x3b, 0x88, 0x43, 0x7e, 0x1d, 0xa1,
-0x1b, 0x83, 0x38, 0x04, 0x07, 0x61, 0xcd, 0x96,
-0x59, 0x47, 0x28, 0x3a, 0x88, 0x43, 0xb5, 0x8e,
-0x90, 0x33, 0x7a, 0xd7, 0x2c, 0xa4, 0x52, 0x7c,
-0x65, 0x5c, 0x5a, 0x21, 0x94, 0x6c, 0xe6, 0x4a,
-0x94, 0x71, 0xc5, 0x50, 0x1b, 0xc3, 0xdc, 0x28,
-0x57, 0x17, 0x03, 0x21, 0x98, 0x44, 0x72, 0x55,
-0x5d, 0x9d, 0x58, 0xe7, 0x3d, 0xb5, 0x0f, 0x76,
-0xcf, 0x83, 0xed, 0x33, 0xb0, 0xd4, 0x8b, 0xd6,
-0xe5, 0xaf, 0xdd, 0x14, 0xb4, 0xb3, 0xfc, 0x4d,
-0x95, 0x2e, 0x68, 0x87, 0x4e, 0x21, 0xd9, 0xe8,
-0x82, 0x16, 0xe7, 0x2f, 0xbf, 0xda, 0x81, 0x25,
-0xe0, 0x6d, 0x48, 0xb5, 0xd6, 0x29, 0x62, 0x6e,
-0x8a, 0x32, 0xb7, 0xf2, 0xb8, 0xc6, 0x55, 0x45,
-0x40, 0xb5, 0x60, 0x12, 0xc9, 0x0d, 0x61, 0x9d,
-0xb7, 0x9a, 0x95, 0xe5, 0xc0, 0x81, 0xc5, 0xb0,
-0x63, 0x06, 0x7a, 0xfb, 0x0c, 0x43, 0x04, 0x5b,
-0xa6, 0xa0, 0x45, 0x4b, 0xc0, 0xdd, 0xb0, 0x0b,
-0xda, 0xb2, 0x04, 0xac, 0x59, 0x47, 0xe8, 0x42,
-0x17, 0xb4, 0xbd, 0x41, 0x1c, 0xfc, 0xe1, 0x72,
-0x57, 0x22, 0x46, 0x8d, 0x67, 0x4f, 0xf5, 0xd6,
-0x15, 0x42, 0x6e, 0xcd, 0xc1, 0x88, 0xa3, 0x7b,
-0xaa, 0xc4, 0xaa, 0x7b, 0xea, 0x54, 0x54, 0xdf,
-0x94, 0x6e, 0xf7, 0x94, 0x1d, 0xec, 0x46, 0x31,
-0x37, 0xec, 0xf3, 0x85, 0xdc, 0x50, 0x55, 0x0c,
-0x74, 0x2e, 0x98, 0x44, 0x72, 0x50, 0x00, 0xac,
-0xb5, 0x1e, 0xc9, 0x9b, 0xbb, 0x0a, 0x76, 0xce,
-0x0a, 0xc2, 0xd7, 0x9c, 0xbf, 0x5b, 0xa7, 0x44,
-0x10, 0xbc, 0x79, 0x92, 0x45, 0x09, 0xd8, 0xce,
-0x20, 0x0e, 0x93, 0x75, 0xc0, 0x31, 0x5d, 0xd0,
-0x66, 0x21, 0xf0, 0xe0, 0xf8, 0x06, 0x71, 0x98,
-0x84, 0xc0, 0x4f, 0x45, 0x10, 0x9c, 0x61, 0x12,
-0x02, 0x3f, 0x24, 0x16, 0x02, 0x0f, 0x70, 0x77,
-0x10, 0xc7, 0xdc, 0x07, 0x20, 0x7f, 0x2d, 0xe3,
-0x30, 0x4d, 0x9d, 0xd6, 0x29, 0xc3, 0x21, 0x18,
-0xfa, 0xc0, 0x75, 0x62, 0x08, 0x46, 0x62, 0x5b,
-0xa7, 0xe2, 0x1f, 0x82, 0x61, 0x7c, 0x2c, 0x48,
-0xa6, 0x8c, 0x2b, 0x16, 0xdb, 0x6a, 0x39, 0x1b,
-0x65, 0x38, 0xff, 0x6d, 0xc4, 0xd5, 0x27, 0xf1,
-0x10, 0x22, 0xb5, 0x63, 0x91, 0x48, 0x71, 0x0b,
-0xf7, 0xba, 0x9e, 0x3e, 0x84, 0x03, 0xac, 0xb2,
-0xe7, 0xc2, 0x8e, 0x99, 0x8a, 0x67, 0x68, 0x10,
-0x2c, 0x9a, 0x82, 0x36, 0x3e, 0x85, 0x64, 0x27,
-0x05, 0xed, 0xde, 0x20, 0x0e, 0xf9, 0x2e, 0x68,
-0x67, 0x53, 0xd0, 0x73, 0x07, 0xba, 0x35, 0x88,
-0xc3, 0x28, 0x05, 0xcd, 0x2f, 0x5b, 0xb8, 0x8d,
-0x35, 0xd7, 0xa4, 0x56, 0xeb, 0x54, 0x4a, 0xae,
-0xed, 0x4b, 0x2a, 0x76, 0x85, 0x5b, 0xa7, 0x92,
-0x82, 0x5d, 0x95, 0x59, 0xf5, 0x29, 0xe8, 0x6c,
-0x4f, 0xf6, 0xad, 0x8b, 0x44, 0xea, 0xb6, 0x02,
-0x80, 0x8e, 0x56, 0x76, 0xee, 0x18, 0xe4, 0x2c,
-0x83, 0xdd, 0x73, 0x61, 0xd7, 0xec, 0x10, 0x7c,
-0x63, 0xf8, 0xdb, 0x1d, 0x53, 0xd0, 0xce, 0xae,
-0x03, 0xb6, 0x9d, 0x82, 0x76, 0x65, 0x10, 0x87,
-0xd4, 0x2c, 0xe8, 0xfe, 0xf8, 0xa0, 0xa5, 0x39,
-0xe0, 0xa9, 0x4d, 0xe6, 0x10, 0x0c, 0x99, 0x32,
-0xae, 0x14, 0x73, 0xa9, 0x8c, 0x6b, 0x9f, 0xb9,
-0x7a, 0xc0, 0x35, 0x64, 0x2e, 0xbf, 0x51, 0x68,
-0xcd, 0xaa, 0x4f, 0x42, 0x57, 0x67, 0xb2, 0xef,
-0x62, 0x24, 0x52, 0x77, 0x13, 0x00, 0x6b, 0xf7,
-0xb0, 0xaa, 0x62, 0x96, 0xb7, 0x1a, 0xb2, 0xd3,
-0xd1, 0x1c, 0xbe, 0x1a, 0xfe, 0xa6, 0x89, 0xf1,
-0x77, 0x8a, 0x44, 0x17, 0xb4, 0x54, 0x0a, 0xda,
-0xbd, 0x41, 0x1c, 0xce, 0x76, 0x41, 0xeb, 0x0c,
-0xe2, 0x48, 0xa9, 0x75, 0xc0, 0xfd, 0x21, 0xf3,
-0x79, 0x38, 0x7d, 0x30, 0x05, 0xca, 0xb8, 0xbd,
-0x6b, 0x85, 0x90, 0x9d, 0x32, 0xae, 0xb6, 0x92,
-0x9b, 0xb2, 0xd8, 0xd5, 0x20, 0xb8, 0xa6, 0x84,
-0xd1, 0xb2, 0x42, 0x12, 0x49, 0x5c, 0xbe, 0x0e,
-0xa8, 0x3e, 0x05, 0xdf, 0x6e, 0xc1, 0x83, 0x45,
-0x01, 0xf8, 0xea, 0xf0, 0x77, 0x66, 0x0c, 0x7f,
-0x3f, 0x36, 0x4e, 0x41, 0x8b, 0x0d, 0xc2, 0x8a,
-0x0d, 0x81, 0x75, 0x07, 0x61, 0x59, 0x74, 0x41,
-0x1b, 0xaf, 0x23, 0xfc, 0xcc, 0x72, 0x1d, 0xa1,
-0x7a, 0x10, 0x96, 0x58, 0x0a, 0x5a, 0x3d, 0x08,
-0x4b, 0x74, 0x1d, 0xa1, 0xee, 0x20, 0xac, 0xd8,
-0x2e, 0x68, 0x93, 0x41, 0x58, 0xf7, 0x9a, 0x0e,
-0xc2, 0xd2, 0x5b, 0x47, 0xa8, 0x19, 0x84, 0xa5,
-0x5a, 0x47, 0xb8, 0xe4, 0x2f, 0x50, 0xca, 0xe1,
-0x4b, 0xcc, 0x25, 0xe6, 0x3a, 0xc6, 0x5c, 0xc5,
-0x05, 0x61, 0xe3, 0x77, 0xaf, 0xcb, 0x97, 0xec,
-0x9b, 0x1a, 0x89, 0x94, 0xf2, 0xe2, 0x61, 0x2f,
-0xbf, 0x0d, 0x16, 0xed, 0x84, 0x03, 0x4b, 0x31,
-0xe1, 0xcc, 0x1d, 0xe6, 0x6f, 0xf6, 0x1c, 0xe4,
-0x2f, 0x76, 0x5e, 0x25, 0x2b, 0x05, 0x2d, 0xb5,
-0x8e, 0xd0, 0xd1, 0x14, 0xf4, 0x32, 0xb7, 0x53,
-0xd0, 0x6e, 0x74, 0x41, 0x0b, 0xa4, 0xa0, 0x3f,
-0x7d, 0x99, 0xc3, 0xd7, 0xdd, 0xc3, 0x41, 0x34,
-0x04, 0xc3, 0x56, 0x19, 0xd7, 0xfe, 0x10, 0x0c,
-0xa7, 0xcb, 0xb8, 0x02, 0xa8, 0x55, 0xf9, 0x6c,
-0x41, 0xc8, 0x47, 0x55, 0x2e, 0x60, 0xf5, 0x67,
-0xa9, 0x17, 0x8b, 0x44, 0x32, 0x11, 0xf0, 0xb0,
-0xf7, 0x4c, 0x1e, 0x0e, 0x90, 0xdc, 0x9b, 0x81,
-0x07, 0x7b, 0xa3, 0xf9, 0x2b, 0x12, 0x02, 0x9b,
-0x74, 0x61, 0x75, 0x97, 0x41, 0x1c, 0x2e, 0xa4,
-0xa0, 0xdd, 0x5b, 0x47, 0x18, 0x4f, 0x0a, 0x7a,
-0xc9, 0x20, 0x7e, 0x6f, 0x74, 0xa5, 0x63, 0x39,
-0x85, 0x77, 0x19, 0x24, 0x70, 0xae, 0xb2, 0x79,
-0x25, 0xd7, 0x80, 0xb9, 0x2e, 0x9f, 0x0c, 0x72,
-0x87, 0xb9, 0x47, 0x75, 0x5c, 0xa1, 0x35, 0x27,
-0x32, 0xff, 0x5f, 0x44, 0x08, 0x26, 0x91, 0x62,
-0xe5, 0x6b, 0xc7, 0xd7, 0xe4, 0xb9, 0x9f, 0xe1,
-0x8e, 0xb9, 0x3d, 0x0b, 0xd0, 0xc8, 0xdf, 0x79,
-0x8e, 0xf2, 0x77, 0xb2, 0x0c, 0x7f, 0xe5, 0xbb,
-0xa0, 0x9d, 0x1d, 0x84, 0x65, 0x67, 0x10, 0x87,
-0x18, 0x7f, 0x53, 0x61, 0x10, 0xc7, 0xf4, 0x3f,
-0xc0, 0x92, 0xe7, 0x81, 0xdf, 0x93, 0x09, 0xbb,
-0x29, 0x80, 0xdd, 0x54, 0x49, 0x29, 0x4b, 0x61,
-0x57, 0x97, 0xb9, 0xb1, 0xd8, 0x0d, 0xb8, 0xfc,
-0x1b, 0x34, 0xff, 0x5b, 0x3a, 0x14, 0x4c, 0x22,
-0xa9, 0xe5, 0xf7, 0xe1, 0xfd, 0xb0, 0x68, 0x27,
-0xec, 0xfb, 0x04, 0xf6, 0x2e, 0x40, 0x47, 0xf1,
-0x57, 0x8d, 0xe0, 0x5d, 0x32, 0x29, 0x68, 0xc1,
-0x41, 0x58, 0xc1, 0x14, 0xf4, 0x38, 0x27, 0x53,
-0xd0, 0x26, 0x25, 0xe0, 0x78, 0xbb, 0xa0, 0x5f,
-0x72, 0x3e, 0x05, 0x3d, 0x5f, 0x6c, 0x10, 0x87,
-0x86, 0xbf, 0x03, 0xe2, 0x4a, 0x41, 0xf3, 0x2f,
-0xb8, 0xfc, 0x70, 0x82, 0xcb, 0xb8, 0xd6, 0xcc,
-0xa5, 0x32, 0x6e, 0x2a, 0x32, 0x37, 0x52, 0xc6,
-0x15, 0x60, 0xee, 0x91, 0x88, 0x03, 0xcc, 0x0d,
-0x3a, 0x3f, 0x60, 0xc6, 0x1f, 0xae, 0x9d, 0x96,
-0x05, 0x93, 0x48, 0x8a, 0xbc, 0x8d, 0x98, 0x70,
-0xce, 0x5d, 0x05, 0x7b, 0x17, 0x06, 0xe1, 0x1b,
-0xe1, 0xef, 0x7c, 0xb1, 0x14, 0xb4, 0xb3, 0x5d,
-0xd0, 0x32, 0x83, 0x38, 0x04, 0xd7, 0x11, 0x66,
-0x0d, 0x91, 0xe8, 0x82, 0x5e, 0x31, 0x58, 0x22,
-0x05, 0x2d, 0xc7, 0x5f, 0xc1, 0x2e, 0xe8, 0xd8,
-0x75, 0x84, 0x26, 0x21, 0xb0, 0xad, 0x41, 0x58,
-0x8b, 0x9e, 0x81, 0x93, 0xfb, 0xa4, 0xeb, 0xb9,
-0xfa, 0xcc, 0x75, 0x62, 0x6d, 0x9f, 0x3e, 0x73,
-0x1d, 0x5d, 0xdb, 0xe7, 0x7c, 0x3d, 0x57, 0x98,
-0xb9, 0xc6, 0x3b, 0xfb, 0x52, 0xb8, 0x75, 0xea,
-0x98, 0x0c, 0x73, 0x8f, 0x1a, 0x30, 0x37, 0x82,
-0x5d, 0xfe, 0x62, 0x2f, 0x62, 0xfe, 0xd4, 0xa8,
-0x1d, 0x9a, 0xd4, 0xbb, 0x05, 0xe0, 0xc7, 0x84,
-0xf3, 0xb1, 0x4d, 0xf0, 0xf5, 0x62, 0x05, 0xbe,
-0x2a, 0xfe, 0x5a, 0x84, 0xc0, 0xc6, 0x29, 0xe8,
-0x20, 0x82, 0x4d, 0xba, 0xa0, 0xd5, 0x83, 0xb0,
-0x9c, 0xed, 0x82, 0x76, 0x61, 0x10, 0xc7, 0x72,
-0xa9, 0x41, 0x1c, 0x83, 0xe4, 0xd7, 0x11, 0x8a,
-0x75, 0x41, 0x5b, 0x0e, 0xe2, 0x90, 0x1a, 0x84,
-0xc5, 0x1f, 0xab, 0x68, 0xa7, 0x73, 0x43, 0x30,
-0x9c, 0x58, 0xdb, 0x67, 0x37, 0xd4, 0x4d, 0xea,
-0xda, 0xbe, 0xe4, 0x0d, 0xc1, 0x70, 0x1e, 0xb5,
-0xb1, 0xad, 0x53, 0x05, 0x02, 0x29, 0xe5, 0x23,
-0x2a, 0xeb, 0x32, 0x57, 0x8b, 0x5d, 0x95, 0xf1,
-0x9f, 0x03, 0xfc, 0xc9, 0xbe, 0x05, 0x92, 0x48,
-0xc9, 0x11, 0xb4, 0x35, 0x43, 0x71, 0x36, 0x0e,
-0xb3, 0xfa, 0x7a, 0x11, 0xec, 0x53, 0xec, 0x24,
-0x7f, 0x6d, 0xa7, 0xa0, 0x13, 0xbc, 0x0e, 0x38,
-0x95, 0x06, 0x71, 0xb8, 0xb1, 0x0e, 0x38, 0x36,
-0x05, 0xcd, 0x3f, 0xa6, 0x70, 0x2b, 0x6b, 0xaa,
-0x4a, 0xb1, 0x75, 0x06, 0x12, 0xe1, 0x6d, 0x32,
-0xb0, 0xdb, 0x13, 0xe6, 0x60, 0x38, 0x5c, 0xc9,
-0xd5, 0xb1, 0x3e, 0x6a, 0x0d, 0x9c, 0xcf, 0x9a,
-0xab, 0x92, 0x7d, 0x17, 0x24, 0x91, 0x12, 0xae,
-0x0e, 0x2f, 0xfe, 0xcc, 0x1e, 0x5c, 0x09, 0xfb,
-0x17, 0x23, 0x7c, 0x35, 0xfc, 0x8d, 0x4d, 0x41,
-0xeb, 0xf1, 0x57, 0x07, 0xc1, 0x62, 0xa7, 0x90,
-0xa4, 0xba, 0xa0, 0x9d, 0x1d, 0x84, 0xe5, 0x4a,
-0x17, 0xb4, 0xe5, 0x3a, 0xe0, 0xd8, 0x41, 0x1c,
-0x8e, 0x0e, 0xc2, 0x92, 0xed, 0x82, 0xe6, 0x57,
-0x28, 0xd8, 0x24, 0xd9, 0x3a, 0x45, 0x2b, 0x84,
-0x12, 0xc2, 0xdc, 0xd4, 0xec, 0x58, 0xb6, 0x60,
-0xae, 0x0c, 0x70, 0xcf, 0xe8, 0x19, 0x77, 0x24,
-0x91, 0x48, 0xbd, 0x43, 0xfe, 0x2e, 0xc6, 0x6f,
-0x9e, 0x27, 0xb2, 0x71, 0xb5, 0x1c, 0x87, 0x2f,
-0xf2, 0x37, 0x53, 0xc5, 0xdf, 0x4f, 0x74, 0x42,
-0x60, 0xd1, 0x12, 0xb0, 0x7b, 0x83, 0x38, 0x46,
-0xc7, 0x37, 0x88, 0xc3, 0x92, 0xbf, 0x26, 0x83,
-0x38, 0x5e, 0x73, 0x6d, 0x10, 0x87, 0xba, 0x04,
-0xec, 0xd0, 0x20, 0x8e, 0xd9, 0x46, 0x29, 0xe8,
-0xd0, 0x20, 0x8e, 0xb9, 0x03, 0xe1, 0xe0, 0x0a,
-0x4c, 0x23, 0x1b, 0x56, 0x72, 0xe3, 0x2e, 0xe3,
-0x1a, 0x56, 0x72, 0x9d, 0x2b, 0xe3, 0xba, 0xd2,
-0xae, 0x6c, 0x5e, 0xc9, 0x3d, 0xe9, 0x56, 0x25,
-0x37, 0x41, 0xcc, 0xb5, 0xea, 0x9e, 0xb2, 0x5d,
-0xc6, 0x95, 0x63, 0x6e, 0x5e, 0xd0, 0xa7, 0x73,
-0xc3, 0x66, 0x67, 0x0b, 0x58, 0xa7, 0x37, 0xd9,
-0xb7, 0x45, 0x12, 0xc9, 0x7d, 0x75, 0xb4, 0xe2,
-0x8f, 0x55, 0xfe, 0xda, 0x08, 0x7c, 0x83, 0x08,
-0x5e, 0x64, 0x27, 0x05, 0x1d, 0x18, 0xc4, 0x91,
-0xcc, 0x14, 0xb4, 0xe0, 0x20, 0x0e, 0x99, 0x2e,
-0x68, 0xb9, 0x75, 0x84, 0x2e, 0x74, 0x41, 0x2f,
-0x10, 0x4b, 0x41, 0xdb, 0x18, 0xc4, 0x31, 0xeb,
-0x6e, 0xd8, 0x9f, 0x09, 0x1c, 0x8b, 0x02, 0x2b,
-0x84, 0xec, 0x97, 0x71, 0x93, 0xb8, 0x42, 0xc8,
-0x7e, 0x19, 0xd7, 0x62, 0x85, 0x90, 0xa6, 0x8c,
-0x6b, 0x8d, 0xdd, 0xd4, 0x38, 0x19, 0x64, 0x34,
-0x04, 0xc3, 0xe9, 0x32, 0xae, 0x45, 0x78, 0x7b,
-0x3a, 0x4f, 0xe5, 0x5c, 0x95, 0x0f, 0x45, 0x5c,
-0x7d, 0x12, 0xe3, 0x02, 0x12, 0xa9, 0xa7, 0x0a,
-0x00, 0xcb, 0x7c, 0xc7, 0xb7, 0x63, 0xf8, 0x73,
-0x60, 0x29, 0xf2, 0x57, 0x8d, 0xe0, 0x68, 0xfe,
-0x66, 0x48, 0xa4, 0xa0, 0x6d, 0x0c, 0xc2, 0xda,
-0x6a, 0xd9, 0x05, 0xad, 0x5a, 0x47, 0xe8, 0x6c,
-0x0a, 0x3a, 0x76, 0x1d, 0xa1, 0x59, 0x0a, 0x5a,
-0xb0, 0x0b, 0xda, 0x8d, 0x14, 0xf4, 0x23, 0x32,
-0x5d, 0xd0, 0x03, 0xac, 0x53, 0xd0, 0x69, 0x77,
-0xc0, 0xce, 0x99, 0x50, 0x5b, 0x4e, 0x83, 0xa7,
-0xf4, 0x5a, 0xa7, 0xac, 0xb0, 0x9b, 0xea, 0x87,
-0x83, 0xe2, 0xef, 0x9e, 0x8a, 0x23, 0xd4, 0xb5,
-0xc0, 0x6e, 0xae, 0x21, 0x76, 0xc3, 0x3e, 0x93,
-0xcb, 0xff, 0x17, 0xd1, 0x50, 0x0e, 0x52, 0x8f,
-0x14, 0xce, 0xb3, 0x3a, 0xff, 0x2d, 0xcb, 0xcb,
-0x62, 0x39, 0xcb, 0x14, 0xf8, 0x5a, 0xf2, 0xd7,
-0x34, 0x04, 0x16, 0x4c, 0x41, 0xcb, 0xad, 0x23,
-0x74, 0x61, 0x10, 0x87, 0x2b, 0xeb, 0x08, 0xa5,
-0x06, 0x71, 0xb8, 0xb1, 0x8e, 0xf0, 0x41, 0x3b,
-0x83, 0x38, 0x66, 0xde, 0x85, 0x79, 0x7b, 0xce,
-0x2f, 0x2a, 0xe3, 0x52, 0xeb, 0x94, 0x23, 0xad,
-0x53, 0xfa, 0xcc, 0xcd, 0x35, 0xb0, 0x1e, 0x73,
-0xb9, 0x4b, 0x0f, 0x46, 0x5c, 0x96, 0x8b, 0x4b,
-0x2d, 0x49, 0xa4, 0x9e, 0x24, 0xf0, 0xe3, 0x3a,
-0x9b, 0xe3, 0xdb, 0x39, 0x79, 0x03, 0xd6, 0xe7,
-0x6f, 0x00, 0xc1, 0x82, 0xfc, 0xb5, 0xd3, 0x05,
-0x6d, 0xc9, 0xdf, 0x89, 0x12, 0xfc, 0x75, 0xa3,
-0x0b, 0x5a, 0x94, 0xbf, 0xf2, 0x5d, 0xd0, 0xa2,
-0xfc, 0x75, 0xaf, 0x0b, 0xfa, 0x2e, 0x3c, 0xfb,
-0xcc, 0x31, 0x94, 0x50, 0xe6, 0xaa, 0x32, 0xcf,
-0x4a, 0x8c, 0xcc, 0xea, 0x2b, 0x74, 0x6c, 0x00,
-0x5f, 0x62, 0x6e, 0xcf, 0x64, 0xae, 0x1a, 0xb8,
-0x1a, 0x1f, 0x40, 0xf3, 0xab, 0x75, 0xd0, 0x50,
-0x0e, 0x52, 0x4f, 0x91, 0xaf, 0x13, 0x6f, 0x38,
-0x47, 0xd6, 0xb1, 0x9c, 0xe5, 0x61, 0xfe, 0x86,
-0x10, 0xac, 0xc7, 0xdf, 0x44, 0x76, 0x41, 0x5b,
-0x96, 0x80, 0x5d, 0xef, 0x82, 0x16, 0x2b, 0x01,
-0x27, 0xbf, 0x0b, 0x5a, 0x6a, 0x10, 0x87, 0x5e,
-0x0a, 0x7a, 0xf9, 0xab, 0x50, 0xf1, 0x8d, 0xa3,
-0x2b, 0x84, 0x38, 0x52, 0x2b, 0x80, 0x73, 0x99,
-0x5f, 0x13, 0x5b, 0xb9, 0x2e, 0xa0, 0x3d, 0x35,
-0xd0, 0x52, 0x13, 0xd8, 0x5d, 0x88, 0x2b, 0x83,
-0xbd, 0x0d, 0xe0, 0x6d, 0x0a, 0x98, 0xb5, 0x35,
-0xe3, 0x0a, 0xcb, 0x58, 0xb7, 0x79, 0xb0, 0xf7,
-0xd5, 0xdb, 0x80, 0x1f, 0x1c, 0xfc, 0xc4, 0x3a,
-0xd6, 0x52, 0x8b, 0x97, 0x0a, 0x1c, 0x3a, 0x6e,
-0xac, 0xc4, 0x6a, 0x35, 0x7f, 0xb8, 0xba, 0x33,
-0xe8, 0x1a, 0x23, 0x04, 0x77, 0xf3, 0xd9, 0x53,
-0xf1, 0x77, 0x4f, 0x59, 0xcf, 0x9e, 0xca, 0x97,
-0xab, 0xe4, 0xea, 0x63, 0x37, 0x4f, 0xb7, 0x81,
-0x4a, 0x1f, 0xbb, 0x65, 0x2a, 0x47, 0x38, 0x9b,
-0xa3, 0xf5, 0x81, 0x68, 0xf3, 0xef, 0x27, 0x15,
-0x82, 0x49, 0x3d, 0x40, 0xed, 0x2d, 0x50, 0x96,
-0x0b, 0x87, 0xd7, 0xc0, 0xc1, 0x15, 0x7a, 0xfc,
-0x8d, 0x45, 0x70, 0xa6, 0x55, 0x08, 0x3c, 0x5f,
-0x2c, 0x05, 0x9d, 0x16, 0x83, 0x60, 0xdd, 0x2e,
-0xe8, 0x29, 0x12, 0x83, 0x38, 0x62, 0x07, 0x61,
-0x99, 0x75, 0x41, 0x0f, 0x13, 0x0b, 0x81, 0xdf,
-0x91, 0x0e, 0x81, 0x97, 0x4b, 0xa5, 0xa0, 0x07,
-0x59, 0x85, 0xc0, 0x4f, 0x45, 0x10, 0x9c, 0xe1,
-0xda, 0x20, 0x8e, 0xcc, 0x67, 0xa0, 0x78, 0xb7,
-0xdd, 0x4a, 0x6e, 0x00, 0xb5, 0xfc, 0x03, 0x2a,
-0x59, 0x90, 0xb0, 0x0a, 0x58, 0x03, 0x3c, 0xed,
-0xf4, 0xb2, 0xce, 0x36, 0x1c, 0x61, 0xd4, 0xe5,
-0x43, 0xf3, 0xdb, 0x26, 0xf0, 0x3b, 0x27, 0x84,
-0x6c, 0x5b, 0xca, 0xa7, 0xf3, 0x4b, 0xf1, 0x6b,
-0xfa, 0x3a, 0x59, 0x67, 0x3b, 0x3e, 0x10, 0x0f,
-0x8b, 0xb8, 0x39, 0xca, 0x5b, 0xeb, 0xc1, 0xc3,
-0x01, 0x7d, 0x01, 0x7b, 0xf8, 0xf9, 0xd7, 0xc6,
-0x83, 0xe2, 0x84, 0x55, 0x72, 0x53, 0x64, 0x85,
-0x90, 0xe1, 0xe1, 0x20, 0xf3, 0xee, 0x29, 0xbb,
-0xe1, 0xad, 0x61, 0x25, 0xd7, 0x20, 0xa5, 0x5c,
-0x76, 0x30, 0x68, 0x4d, 0x78, 0xab, 0x0f, 0x5c,
-0x56, 0xba, 0x3f, 0xc6, 0x07, 0xa0, 0xa9, 0x92,
-0x0a, 0xc1, 0xa4, 0xee, 0x2d, 0x1e, 0x89, 0x14,
-0x6e, 0xfb, 0xff, 0xf6, 0xce, 0x04, 0x4c, 0x8e,
-0xa3, 0x3c, 0xff, 0x7f, 0x03, 0xe6, 0x0c, 0x21,
-0x21, 0x1c, 0x01, 0x42, 0x38, 0x02, 0x81, 0x10,
-0x02, 0x01, 0x92, 0x40, 0x12, 0x13, 0x12, 0xc2,
-0x7d, 0x05, 0x08, 0xe0, 0x98, 0xcb, 0x60, 0xc0,
-0x96, 0x7c, 0xe3, 0xfb, 0x90, 0x7c, 0xc9, 0xa7,
-0x90, 0xb0, 0x65, 0xd9, 0x96, 0x6d, 0xc9, 0xc8,
-0xb2, 0x2c, 0x4b, 0xb2, 0x6c, 0x24, 0x59, 0x96,
-0x25, 0x59, 0xf7, 0x61, 0xdd, 0xf7, 0xb9, 0xab,
-0xd5, 0x6a, 0xb5, 0xd2, 0x4a, 0x7b, 0xdf, 0xd7,
-0x9c, 0x5f, 0xff, 0xab, 0x66, 0x67, 0x67, 0x7a,
-0x66, 0xaa, 0xbb, 0xaa, 0x7a, 0xba, 0xa7, 0x7a,
-0x66, 0xde, 0xdf, 0xf3, 0x3e, 0x7e, 0x6c, 0x4b,
-0x33, 0xea, 0xea, 0x1d, 0xf5, 0x3b, 0xdf, 0x57,
-0x5f, 0x7d, 0x1f, 0x1f, 0xa3, 0xb0, 0x7d, 0x9e,
-0xb2, 0xff, 0xda, 0x42, 0xe0, 0xea, 0x4c, 0x41,
-0x07, 0x3e, 0x8e, 0x30, 0x80, 0x14, 0xb4, 0x7b,
-0x15, 0x34, 0xfb, 0x3d, 0x07, 0x97, 0x5b, 0xdd,
-0x4d, 0xea, 0x59, 0x65, 0xfe, 0xff, 0x59, 0xd4,
-0xc9, 0x3c, 0x8e, 0x45, 0xa6, 0xd1, 0x7e, 0x8a,
-0x0e, 0xa5, 0x1c, 0x36, 0x66, 0x25, 0x47, 0x1c,
-0x36, 0x99, 0x7a, 0x36, 0x9a, 0x7b, 0x3c, 0xb2,
-0x3f, 0x9d, 0x5d, 0x03, 0xbb, 0x12, 0x76, 0x49,
-0xec, 0xc2, 0xd8, 0x17, 0x80, 0xe8, 0x10, 0xbf,
-0xd4, 0xbe, 0x76, 0xab, 0xfb, 0x94, 0xc5, 0xed,
-0xb8, 0x9c, 0x0f, 0xe4, 0x96, 0x63, 0x4a, 0xd9,
-0x31, 0xab, 0x5c, 0x10, 0xdb, 0x3a, 0x7a, 0x6e,
-0xae, 0x1a, 0x77, 0x5a, 0xc3, 0xfd, 0xc6, 0x3e,
-0x60, 0x00, 0x14, 0x43, 0x22, 0xc6, 0x73, 0x6b,
-0x7b, 0x16, 0xd1, 0x8e, 0x67, 0xb9, 0xb2, 0xfe,
-0x8b, 0x14, 0xb4, 0xce, 0x38, 0x60, 0xbd, 0x53,
-0x48, 0x17, 0x6b, 0x9f, 0x42, 0x0a, 0xa2, 0x11,
-0x47, 0x9e, 0xff, 0x3e, 0xf2, 0x7d, 0xfe, 0x53,
-0xee, 0x6a, 0x72, 0x36, 0x5c, 0x16, 0xf6, 0x9e,
-0x61, 0xe2, 0x8d, 0xb0, 0x06, 0x98, 0xe1, 0xf6,
-0x11, 0xb3, 0xb3, 0xb4, 0xcf, 0x52, 0x59, 0xc5,
-0x20, 0x94, 0xf1, 0x65, 0x8a, 0x47, 0xac, 0xc1,
-0x1e, 0xea, 0x6d, 0xb5, 0x78, 0x74, 0x7c, 0xdc,
-0x6a, 0xad, 0x73, 0x8e, 0x79, 0xc3, 0x51, 0xae,
-0xac, 0xd5, 0x04, 0xa3, 0x52, 0x3d, 0xd7, 0x26,
-0x3a, 0xb6, 0x99, 0x8f, 0x09, 0x66, 0x9f, 0x43,
-0x00, 0xca, 0x09, 0xe2, 0x09, 0x3a, 0xf6, 0x57,
-0x83, 0x85, 0xbd, 0x3b, 0x9f, 0xe5, 0xe2, 0xfe,
-0x3b, 0xdf, 0xd9, 0x7f, 0x0b, 0xab, 0xa0, 0xa5,
-0x29, 0xe8, 0x19, 0x01, 0x8c, 0x03, 0x9e, 0xa4,
-0xd3, 0x88, 0xa3, 0x72, 0xc7, 0x11, 0xba, 0xcd,
-0x62, 0xd0, 0x1f, 0x47, 0x38, 0xed, 0x7b, 0xfc,
-0xf6, 0x76, 0x9e, 0xca, 0xd9, 0xc6, 0xe5, 0x19,
-0xe6, 0x33, 0xfc, 0xe4, 0x51, 0x5f, 0x1b, 0x33,
-0x5c, 0xf6, 0x69, 0x49, 0x1b, 0x6e, 0xa5, 0xc2,
-0x96, 0x16, 0x19, 0xe0, 0x5f, 0x2d, 0xba, 0x4f,
-0xf3, 0x12, 0xaf, 0xf6, 0x94, 0x1d, 0x57, 0xca,
-0x08, 0x21, 0xa3, 0xdb, 0xb8, 0xdb, 0x25, 0xdb,
-0xb8, 0x8a, 0x9e, 0x5b, 0x9f, 0x15, 0xb7, 0x5d,
-0xae, 0x57, 0xd2, 0x62, 0x3f, 0xaf, 0x72, 0xfa,
-0x06, 0x08, 0xaa, 0x1c, 0xe2, 0x01, 0x4e, 0xcd,
-0xba, 0xac, 0xf9, 0x8e, 0xf8, 0x6f, 0x4e, 0x08,
-0xac, 0x96, 0x82, 0xce, 0x69, 0x84, 0xe5, 0x7c,
-0x10, 0x38, 0xc7, 0x7f, 0x65, 0xe3, 0x08, 0xdd,
-0x1a, 0x61, 0xb9, 0xa7, 0xa0, 0x9d, 0xc7, 0x11,
-0xe6, 0x6c, 0x01, 0x3b, 0x37, 0xe2, 0xc8, 0xf1,
-0x5f, 0x59, 0x23, 0x0e, 0x69, 0x23, 0xac, 0x79,
-0x4e, 0xb3, 0x18, 0x64, 0x8d, 0x38, 0xdc, 0x1a,
-0x61, 0xb9, 0xcf, 0x62, 0x10, 0x8d, 0x23, 0x94,
-0x36, 0xc2, 0x62, 0x8b, 0x6d, 0xae, 0xc9, 0xda,
-0x6e, 0x6f, 0x0b, 0xf5, 0x77, 0xf0, 0x4a, 0xa7,
-0x48, 0x3f, 0xc5, 0x22, 0x34, 0x12, 0xe1, 0x56,
-0x0f, 0x44, 0x94, 0x88, 0xa5, 0xbc, 0xb8, 0xd3,
-0xea, 0x6d, 0xe6, 0x75, 0xd7, 0x6d, 0xc7, 0xca,
-0xa7, 0x74, 0xaa, 0x82, 0x3c, 0xb7, 0x5e, 0xe8,
-0xb9, 0x36, 0xdb, 0x3d, 0xb6, 0x29, 0x2d, 0xf6,
-0xab, 0x83, 0x5d, 0xa6, 0x3f, 0x37, 0x00, 0x28,
-0xc0, 0xbe, 0xe7, 0xb7, 0xd5, 0xf1, 0x19, 0x46,
-0x3b, 0x9f, 0x73, 0xf5, 0x5f, 0xbb, 0x05, 0xcf,
-0x29, 0xab, 0x14, 0x74, 0x00, 0x8d, 0x38, 0xb4,
-0x52, 0xd0, 0xaa, 0x8d, 0x38, 0x0a, 0x7b, 0x51,
-0x96, 0xb8, 0x17, 0x74, 0xaa, 0x11, 0xc7, 0x9c,
-0x31, 0xbc, 0x00, 0x86, 0x05, 0x7d, 0x7d, 0xed,
-0x34, 0xd8, 0x6d, 0x45, 0x07, 0xf9, 0x56, 0x69,
-0xb5, 0x79, 0xae, 0x13, 0x94, 0xe4, 0x77, 0x83,
-0x7d, 0x0f, 0x61, 0x5f, 0x48, 0xd8, 0x97, 0x13,
-0x16, 0x11, 0x97, 0xac, 0x74, 0x2a, 0xb8, 0x26,
-0x18, 0x7a, 0xa5, 0x53, 0x0e, 0x59, 0x65, 0x71,
-0xe9, 0x94, 0xb8, 0x7a, 0x4a, 0x2f, 0xa5, 0x5c,
-0xbf, 0x39, 0xad, 0x63, 0x9b, 0x45, 0x9e, 0x6b,
-0xb3, 0x5d, 0xbb, 0xd8, 0xc2, 0x31, 0xa0, 0x10,
-0x84, 0x9c, 0x64, 0x8c, 0xff, 0x85, 0xda, 0xf7,
-0x02, 0xed, 0x7e, 0x3e, 0xe5, 0xbf, 0xcf, 0x65,
-0xfd, 0xd7, 0x66, 0xc1, 0xaa, 0x29, 0x68, 0xad,
-0x83, 0xc0, 0xfe, 0xa6, 0xa0, 0x3d, 0x54, 0x61,
-0xc9, 0x53, 0xd0, 0x3a, 0xbd, 0xa0, 0xcb, 0xab,
-0x11, 0x87, 0x53, 0x0a, 0x7a, 0xfa, 0xff, 0xb1,
-0x07, 0x1a, 0xaf, 0x16, 0x4e, 0x7b, 0x2e, 0xe6,
-0xbb, 0x39, 0xc0, 0xbe, 0x8d, 0xb0, 0x2f, 0xae,
-0xb1, 0x61, 0x1a, 0xea, 0xe6, 0x59, 0x82, 0x96,
-0x3a, 0x81, 0xf9, 0x96, 0xfa, 0x40, 0x6e, 0xd1,
-0xdb, 0xb8, 0x8e, 0x3b, 0xb9, 0x26, 0xb6, 0x71,
-0x05, 0x12, 0xf9, 0xac, 0x93, 0xea, 0x36, 0x59,
-0xed, 0x0d, 0xa6, 0x3f, 0x25, 0x00, 0x38, 0x42,
-0xd1, 0x41, 0x3a, 0xba, 0x91, 0x76, 0x2f, 0xe4,
-0xe6, 0xeb, 0xea, 0xbf, 0x9e, 0x52, 0xd0, 0xbe,
-0x56, 0x41, 0x07, 0xe1, 0xbf, 0x01, 0x56, 0x41,
-0x97, 0x67, 0x23, 0x8e, 0xc7, 0xcf, 0xe5, 0x05,
-0xcf, 0x88, 0x73, 0xb5, 0xe1, 0xe5, 0x5b, 0x14,
-0x19, 0xe4, 0x47, 0xa4, 0x5b, 0xeb, 0xa8, 0xf9,
-0x88, 0x86, 0xf9, 0x86, 0x61, 0x84, 0x50, 0x65,
-0xd9, 0x6e, 0x8e, 0x06, 0x31, 0x1d, 0x09, 0x84,
-0x10, 0xa2, 0x81, 0x0e, 0xaa, 0xdd, 0xc0, 0x4b,
-0x9d, 0x77, 0xff, 0x31, 0x25, 0x91, 0x05, 0x3b,
-0xa7, 0xa0, 0x69, 0xab, 0x62, 0x0a, 0x5a, 0xad,
-0x17, 0xf4, 0xc8, 0x16, 0xb0, 0xd3, 0x41, 0x60,
-0xb7, 0x14, 0xb4, 0xac, 0x17, 0xf4, 0x4b, 0xb6,
-0x5e, 0xd0, 0x4b, 0xb5, 0x52, 0xd0, 0xe3, 0x65,
-0xbd, 0xa0, 0xaf, 0x93, 0xf4, 0x82, 0xce, 0xf1,
-0x5f, 0xe7, 0x14, 0xb4, 0xe2, 0x16, 0xb0, 0xe3,
-0x2c, 0x86, 0xf3, 0x25, 0xfe, 0xab, 0xd8, 0x88,
-0x83, 0xfd, 0x73, 0xfd, 0x34, 0x0c, 0x34, 0x2f,
-0x0a, 0x22, 0xbe, 0x39, 0x3e, 0xdc, 0xc7, 0x5b,
-0x8b, 0xb4, 0x1f, 0xe7, 0x7b, 0xe8, 0xea, 0x3b,
-0xb9, 0xc2, 0x6d, 0x5c, 0xc7, 0x26, 0x18, 0xc1,
-0x6f, 0xe3, 0x2a, 0x35, 0xc1, 0xf0, 0xea, 0xb9,
-0x92, 0x6d, 0x5c, 0x87, 0x94, 0xb2, 0xdc, 0x73,
-0x37, 0xe6, 0xe8, 0xe8, 0x06, 0xb6, 0x6a, 0x0b,
-0x59, 0x68, 0x10, 0x2a, 0x58, 0x80, 0xd3, 0xdd,
-0x44, 0x35, 0x6b, 0xb8, 0xf9, 0x2a, 0xf9, 0xaf,
-0xac, 0x0a, 0x3a, 0xc7, 0x7f, 0x65, 0x55, 0xd0,
-0xde, 0xc7, 0x11, 0xca, 0xc6, 0x01, 0x7b, 0x18,
-0x47, 0xe8, 0x6f, 0x0a, 0x5a, 0xb1, 0x0a, 0x7a,
-0xae, 0xd6, 0x16, 0xf0, 0x6f, 0xd4, 0xaa, 0xa0,
-0x7f, 0xa6, 0x51, 0x05, 0x2d, 0xf4, 0xdf, 0x17,
-0xc6, 0xf3, 0xfe, 0x51, 0xc0, 0x17, 0x98, 0x11,
-0xc7, 0xa3, 0x34, 0xd8, 0xcd, 0x8d, 0xb8, 0xed,
-0x98, 0x5a, 0x9c, 0x5b, 0xd2, 0xb1, 0x7d, 0x6e,
-0x71, 0xae, 0xa4, 0x7a, 0xca, 0x5f, 0xcf, 0x15,
-0x55, 0x4f, 0x69, 0xc7, 0xb9, 0x36, 0xc3, 0x2d,
-0x54, 0xfb, 0x71, 0x93, 0x47, 0xce, 0x01, 0xb0,
-0xc1, 0xbe, 0xa0, 0xf3, 0x07, 0xc2, 0xa1, 0x15,
-0xb4, 0x77, 0x11, 0x17, 0xb7, 0xe0, 0x85, 0x59,
-0x0b, 0x96, 0xa7, 0xa0, 0xe7, 0x2a, 0xa5, 0xa0,
-0xd3, 0x16, 0x2c, 0x1a, 0x07, 0xec, 0xbd, 0x11,
-0xc7, 0x14, 0xff, 0xc7, 0x11, 0xca, 0xc7, 0x01,
-0x7b, 0x18, 0x47, 0x78, 0xb5, 0x5a, 0x23, 0x0e,
-0xb5, 0x71, 0xc0, 0x39, 0x55, 0xd0, 0xbf, 0xf2,
-0x5a, 0x05, 0x2d, 0x6b, 0x84, 0xc5, 0xfe, 0x94,
-0xb6, 0x7a, 0xd3, 0x9f, 0xcd, 0x4a, 0x84, 0x92,
-0xbc, 0x01, 0x17, 0xfb, 0x62, 0xd3, 0xd1, 0xc0,
-0x5d, 0x38, 0x54, 0x63, 0xfb, 0x0a, 0x4b, 0xa7,
-0xf2, 0x0b, 0xa8, 0x04, 0xa1, 0xae, 0x56, 0x3e,
-0xd9, 0x7b, 0xf5, 0x94, 0x4b, 0x4a, 0x79, 0x44,
-0x47, 0x37, 0xda, 0x94, 0x71, 0xdb, 0xf5, 0x02,
-0xd5, 0xbf, 0xc2, 0x5b, 0xac, 0x00, 0x60, 0x1a,
-0x4a, 0x26, 0x78, 0x51, 0xe5, 0x81, 0x17, 0xd3,
-0xe6, 0x9b, 0xf6, 0x5f, 0xcf, 0x29, 0x68, 0xa9,
-0xff, 0x6a, 0x8d, 0x03, 0x0e, 0xac, 0x0a, 0x5a,
-0x75, 0x0b, 0xb8, 0x0c, 0x1b, 0x71, 0x28, 0x8e,
-0x03, 0x76, 0xaf, 0x82, 0x7e, 0xec, 0x5c, 0xf6,
-0x78, 0xc4, 0xb6, 0x6f, 0x90, 0xf0, 0x62, 0x2d,
-0x8a, 0x0e, 0xf1, 0x70, 0x98, 0xb9, 0xb0, 0xa0,
-0x56, 0x39, 0x7c, 0xe3, 0x0c, 0x42, 0xb5, 0x8d,
-0x9b, 0xb5, 0x5d, 0x51, 0x84, 0x2b, 0xb4, 0x5d,
-0xa6, 0xda, 0x75, 0x23, 0xb2, 0x1a, 0x77, 0x12,
-0xfa, 0x42, 0x03, 0xa3, 0x50, 0x64, 0x80, 0x1f,
-0x8b, 0xdb, 0xfb, 0x42, 0x4a, 0xca, 0xfe, 0xbb,
-0x53, 0xda, 0x08, 0xcb, 0xf3, 0x38, 0xc2, 0x00,
-0x52, 0xd0, 0xd2, 0x46, 0x58, 0x41, 0x57, 0x41,
-0xfb, 0x30, 0x8b, 0x41, 0xff, 0x14, 0x92, 0xdd,
-0x82, 0xdd, 0xfc, 0x57, 0x54, 0x05, 0xfd, 0xf8,
-0xb9, 0xec, 0xe7, 0x6b, 0xfa, 0xb3, 0x59, 0x45,
-0x50, 0x32, 0xc9, 0xfb, 0x73, 0xf2, 0xa4, 0xf4,
-0x21, 0xbd, 0xac, 0x72, 0xb5, 0x95, 0x4e, 0x15,
-0xe7, 0xb9, 0xf9, 0x6a, 0x3f, 0x86, 0x6f, 0x98,
-0xc0, 0x18, 0x83, 0xdd, 0xfc, 0x2f, 0xd4, 0xfe,
-0x25, 0x0e, 0xfe, 0xbb, 0x30, 0xeb, 0xbf, 0xbb,
-0x9e, 0x13, 0x1c, 0x04, 0xf6, 0xde, 0x08, 0x4b,
-0x96, 0x82, 0xd6, 0xf3, 0x5f, 0xc5, 0x46, 0x1c,
-0x3a, 0x8d, 0xb0, 0x4c, 0x36, 0xe2, 0xd0, 0xaa,
-0x82, 0xfe, 0x55, 0x71, 0x8d, 0x38, 0x1c, 0xaa,
-0xa0, 0x5f, 0x9c, 0xc0, 0xbe, 0x98, 0x99, 0xfe,
-0x74, 0x56, 0x1d, 0x7c, 0x1b, 0x68, 0xb0, 0x87,
-0x4f, 0x65, 0x6a, 0x3e, 0x42, 0xa7, 0x9c, 0x5d,
-0x38, 0xdf, 0x6d, 0xdd, 0x77, 0x72, 0x4b, 0xb2,
-0x8d, 0x7b, 0x3c, 0xb8, 0x6d, 0x5c, 0xd9, 0x4e,
-0xae, 0xae, 0xe7, 0xda, 0x55, 0xb7, 0xc1, 0x42,
-0x16, 0x1a, 0x94, 0x1e, 0x22, 0x5e, 0x57, 0x53,
-0xb7, 0x91, 0x99, 0xaf, 0xc0, 0x7f, 0x8b, 0x4b,
-0x41, 0x2b, 0x37, 0xe2, 0x50, 0xab, 0x82, 0x5e,
-0x2f, 0x6b, 0x84, 0xe5, 0xbd, 0x11, 0xc7, 0x3d,
-0xda, 0x8d, 0x38, 0x5e, 0x50, 0x4b, 0x41, 0x3f,
-0xaf, 0x35, 0x8e, 0x50, 0xda, 0x88, 0x63, 0x6c,
-0x60, 0x8d, 0x38, 0xce, 0x13, 0x54, 0x41, 0xb3,
-0x3f, 0xb1, 0x1d, 0xdb, 0xbe, 0xe6, 0x60, 0x11,
-0x19, 0xfb, 0xf2, 0xd3, 0xdb, 0x6c, 0x35, 0xd7,
-0x68, 0xee, 0xe4, 0xca, 0xe6, 0x07, 0xc9, 0xb6,
-0x71, 0xbd, 0x37, 0xc1, 0xa8, 0xf7, 0x75, 0x1b,
-0x57, 0x6b, 0x27, 0x57, 0xd1, 0x6a, 0x33, 0xaa,
-0x59, 0x6b, 0xd3, 0x1a, 0x5e, 0xdb, 0x86, 0x2c,
-0x34, 0x28, 0x31, 0xbd, 0xad, 0x7c, 0x84, 0x5c,
-0xca, 0x7c, 0xb9, 0xf6, 0x8d, 0x58, 0xf0, 0x62,
-0xd3, 0x29, 0x68, 0xfd, 0x71, 0x84, 0x6e, 0x29,
-0x68, 0xd9, 0x29, 0x24, 0xf7, 0x71, 0x84, 0x6e,
-0x29, 0x68, 0xd9, 0x29, 0xa4, 0xc2, 0x71, 0x84,
-0x66, 0x52, 0xd0, 0xe7, 0x6b, 0xa7, 0xa0, 0x99,
-0x23, 0xd7, 0xae, 0x43, 0x52, 0xce, 0x3c, 0x94,
-0xb4, 0xa2, 0x83, 0xd4, 0xd7, 0x62, 0x9d, 0x3e,
-0xe8, 0xa5, 0x7a, 0xca, 0x87, 0xb1, 0x7d, 0x9e,
-0xab, 0xa7, 0x8a, 0xc9, 0x2a, 0x17, 0x7a, 0xae,
-0xef, 0xb6, 0xbb, 0x26, 0xab, 0x23, 0xec, 0x9f,
-0xeb, 0xf8, 0xac, 0x10, 0x00, 0x4a, 0x03, 0xa5,
-0xba, 0x3a, 0x1f, 0x5e, 0x49, 0x07, 0x5e, 0xca,
-0xfa, 0xaf, 0x24, 0x04, 0xf6, 0xb5, 0x11, 0x47,
-0x35, 0x8f, 0x23, 0x54, 0x6d, 0x84, 0xa5, 0xdf,
-0x88, 0xc3, 0x97, 0x71, 0x84, 0xd3, 0xcf, 0xe5,
-0xd5, 0xe9, 0x89, 0x98, 0xe9, 0xcf, 0x28, 0x18,
-0x85, 0xfd, 0x6d, 0x8d, 0x47, 0xf9, 0xa0, 0xe4,
-0xa6, 0x83, 0xb9, 0x19, 0xe6, 0x4a, 0xd9, 0xc9,
-0x15, 0xa7, 0x94, 0x1d, 0x3c, 0x57, 0xcf, 0x70,
-0xd7, 0x88, 0x75, 0xa4, 0x40, 0xc7, 0x5e, 0xb1,
-0xe2, 0x11, 0xd3, 0x3f, 0x69, 0x50, 0x05, 0x24,
-0x13, 0xd4, 0x79, 0xd2, 0x3a, 0xb4, 0x9c, 0x99,
-0xef, 0x88, 0x8c, 0xf9, 0xaf, 0x56, 0x15, 0xb4,
-0xaa, 0xff, 0xfa, 0x7a, 0x0a, 0xa9, 0x2c, 0xc7,
-0x01, 0xeb, 0x54, 0x41, 0x17, 0xfa, 0x2f, 0x5b,
-0x57, 0x6c, 0xc8, 0xf4, 0x67, 0x14, 0x08, 0xa0,
-0x64, 0x9c, 0xfa, 0x5a, 0x69, 0x24, 0x23, 0x6d,
-0xb2, 0x5c, 0xb9, 0x0c, 0x3d, 0xb7, 0xd0, 0x70,
-0x47, 0x74, 0x78, 0x55, 0x56, 0x2d, 0x35, 0xc8,
-0xf9, 0x80, 0x60, 0x61, 0xe6, 0xdb, 0x71, 0x82,
-0x0e, 0xbd, 0x9c, 0x31, 0x5f, 0x49, 0x08, 0x5c,
-0xd4, 0x16, 0x70, 0xf9, 0x56, 0x41, 0x1b, 0x6c,
-0xc4, 0x71, 0x99, 0x7e, 0x23, 0x0e, 0xff, 0xaa,
-0xa0, 0xd9, 0x3b, 0x9c, 0x39, 0x6c, 0xfa, 0x33,
-0x0a, 0xdc, 0xa0, 0x44, 0xdc, 0xea, 0x6d, 0x61,
-0x66, 0xc1, 0x43, 0x60, 0xc1, 0x36, 0xae, 0x0f,
-0x23, 0x84, 0x1c, 0xb6, 0x71, 0x75, 0x0a, 0xa8,
-0x84, 0xa5, 0x53, 0xfe, 0x57, 0x4f, 0xad, 0xcd,
-0x4a, 0x6e, 0xbb, 0xab, 0xb3, 0xca, 0xda, 0xee,
-0xca, 0xac, 0x6a, 0xd6, 0x5a, 0x18, 0x8d, 0x04,
-0x82, 0x83, 0x7d, 0xbb, 0x6b, 0x3b, 0x66, 0x1d,
-0x59, 0xc5, 0x47, 0x1a, 0x31, 0x65, 0x2d, 0x78,
-0xa9, 0x2c, 0x04, 0x5e, 0x28, 0x0b, 0x81, 0xe7,
-0xeb, 0x84, 0xc0, 0xb3, 0x02, 0x6e, 0xc4, 0xe1,
-0x32, 0x0e, 0xb8, 0xa0, 0x0a, 0x3a, 0x88, 0x46,
-0x1c, 0xf2, 0x10, 0xd8, 0xdf, 0x46, 0x1c, 0xbf,
-0xd1, 0x68, 0xc4, 0xf1, 0x84, 0x73, 0x15, 0xf4,
-0xf4, 0xf3, 0xd8, 0x4f, 0x13, 0x83, 0x15, 0xca,
-0x83, 0xd8, 0xb0, 0xd5, 0xdb, 0xcc, 0xbe, 0x2c,
-0x15, 0xc6, 0xb9, 0xd5, 0xbb, 0x8d, 0x2b, 0x8e,
-0x70, 0x57, 0x8f, 0x6a, 0x95, 0xc8, 0x76, 0x5f,
-0xce, 0x51, 0xe3, 0x2e, 0x14, 0x62, 0x81, 0x40,
-0xa0, 0x24, 0xef, 0xb7, 0x76, 0x78, 0x95, 0x75,
-0x70, 0x79, 0x81, 0xff, 0x2a, 0xa6, 0xa0, 0xed,
-0x16, 0xec, 0x57, 0x23, 0xac, 0x50, 0x8d, 0x23,
-0xac, 0xee, 0x46, 0x1c, 0x0b, 0x6f, 0xa6, 0xe1,
-0x3e, 0xd3, 0x1f, 0x53, 0xa0, 0x0c, 0xfb, 0x3a,
-0xcd, 0x1b, 0x77, 0x34, 0xd3, 0xc9, 0xbd, 0xa1,
-0xd8, 0xc6, 0xf5, 0xeb, 0x40, 0xae, 0xbf, 0x59,
-0xe5, 0xac, 0x5e, 0x96, 0xeb, 0xc8, 0x4a, 0x3e,
-0x5e, 0x13, 0x00, 0x7f, 0x61, 0x41, 0x0d, 0x37,
-0xdf, 0x95, 0xcc, 0x7c, 0xdd, 0xfd, 0x77, 0xd4,
-0x82, 0xfd, 0x3a, 0x85, 0xa4, 0x9f, 0x82, 0x0e,
-0xc2, 0x7f, 0xb5, 0x52, 0xd0, 0xfe, 0xfa, 0x6f,
-0x48, 0x1a, 0x71, 0x48, 0xfd, 0x77, 0xe6, 0x2f,
-0xa9, 0xed, 0x98, 0xe9, 0x8f, 0x29, 0xd0, 0x67,
-0xa4, 0xa1, 0x74, 0x67, 0xa3, 0x75, 0x62, 0x87,
-0xe5, 0x1c, 0xfc, 0xc2, 0x73, 0xa5, 0xb2, 0x0e,
-0xad, 0x60, 0xe2, 0x17, 0x89, 0x42, 0x2c, 0xe0,
-0x23, 0xc9, 0x04, 0xef, 0x31, 0x3b, 0xfa, 0x01,
-0xcb, 0x5a, 0xb0, 0xe2, 0x16, 0xf0, 0xde, 0x82,
-0x46, 0x1c, 0x25, 0x1e, 0x07, 0xac, 0x37, 0x8e,
-0x50, 0xb1, 0x11, 0x87, 0xf1, 0x2a, 0xe8, 0x20,
-0x1a, 0x71, 0x78, 0x1d, 0x47, 0xf8, 0xc4, 0xcf,
-0xf8, 0x8f, 0x18, 0xc5, 0x27, 0xe5, 0x0c, 0x45,
-0x86, 0xa8, 0xf5, 0x98, 0xd5, 0xb8, 0xcb, 0xa1,
-0x0f, 0x46, 0xf1, 0x23, 0x84, 0x82, 0xdb, 0xc9,
-0x5d, 0xab, 0xb3, 0x93, 0xbb, 0x5a, 0xbe, 0x93,
-0xab, 0x6f, 0xbb, 0x39, 0x6a, 0x46, 0x21, 0x16,
-0xf0, 0x09, 0xf6, 0x54, 0xed, 0x38, 0x41, 0x35,
-0xab, 0x05, 0xfe, 0x6b, 0xb3, 0x60, 0x6b, 0xff,
-0x8b, 0x59, 0xff, 0xdd, 0x27, 0xab, 0x82, 0x16,
-0x36, 0xc2, 0x72, 0xac, 0x82, 0x76, 0x6e, 0xc4,
-0x91, 0xd3, 0x08, 0x4b, 0x67, 0x1c, 0xa1, 0xbc,
-0x11, 0x47, 0xa1, 0xff, 0x3a, 0x1f, 0x04, 0x5e,
-0x56, 0x30, 0x8e, 0xd0, 0xcd, 0x7f, 0x9d, 0x1b,
-0x61, 0xe5, 0xf8, 0xaf, 0xad, 0x11, 0x96, 0xdb,
-0x38, 0xc2, 0x42, 0xff, 0x2d, 0x7a, 0x1c, 0xa1,
-0x6a, 0x23, 0xac, 0x51, 0xff, 0x65, 0xef, 0xb6,
-0xf6, 0x11, 0x8a, 0xf4, 0x9b, 0xfe, 0xa4, 0x82,
-0x62, 0xe1, 0x5d, 0xdc, 0xfb, 0xda, 0xad, 0xe6,
-0x23, 0x54, 0xbf, 0x35, 0xa8, 0xb1, 0x7d, 0xbe,
-0x55, 0x2c, 0xcb, 0x0c, 0xd7, 0xc9, 0x73, 0xc5,
-0xdb, 0xb8, 0x45, 0x7b, 0xee, 0xe8, 0x83, 0x91,
-0x3f, 0x1b, 0x8f, 0xac, 0xc2, 0x5c, 0x06, 0xe0,
-0x03, 0xcc, 0x7c, 0xbb, 0x4e, 0xf1, 0x4f, 0xb8,
-0xfd, 0x83, 0x17, 0xfe, 0x14, 0xf4, 0x26, 0xad,
-0x14, 0xb4, 0x62, 0x23, 0x0e, 0x9d, 0x14, 0xb4,
-0xe2, 0x38, 0x60, 0xc5, 0x46, 0x58, 0x9e, 0xc7,
-0x11, 0x06, 0xd2, 0x88, 0xc3, 0xe6, 0xbf, 0xec,
-0xe5, 0xec, 0xfb, 0x4c, 0xc3, 0x0e, 0x94, 0x7d,
-0x56, 0x14, 0xf1, 0x08, 0xdf, 0x14, 0x6e, 0xdc,
-0x5d, 0xc4, 0xe1, 0x20, 0x61, 0xe9, 0x94, 0x2f,
-0x87, 0x83, 0x7c, 0x2c, 0x9d, 0x92, 0x7b, 0xae,
-0xd8, 0x67, 0x6d, 0x56, 0x6b, 0x57, 0xfa, 0x91,
-0x38, 0xa2, 0x93, 0x7b, 0x10, 0x02, 0x83, 0xa2,
-0xe0, 0x4d, 0x36, 0x9a, 0xa9, 0x76, 0xbd, 0xe0,
-0x03, 0x29, 0x0e, 0x81, 0x4d, 0x34, 0xe2, 0x50,
-0x4c, 0x41, 0x2b, 0x9e, 0x42, 0xaa, 0xcc, 0x46,
-0x1c, 0x6a, 0xfe, 0xab, 0x95, 0x82, 0x66, 0x31,
-0x32, 0xbb, 0xb1, 0x2d, 0x35, 0x16, 0x2f, 0xb8,
-0xc2, 0x73, 0xa6, 0xe2, 0x60, 0x5f, 0xbc, 0x23,
-0x03, 0xd4, 0x7a, 0xb4, 0x6a, 0xb7, 0x71, 0xbd,
-0x78, 0xae, 0x5d, 0xec, 0xf7, 0xf7, 0xb7, 0x99,
-0xfe, 0x29, 0x82, 0xb2, 0x65, 0xc4, 0x7c, 0xd9,
-0xf7, 0xcc, 0xdc, 0x4f, 0xaf, 0x1f, 0xfe, 0x1b,
-0xc4, 0x38, 0x60, 0xfd, 0x71, 0x84, 0x26, 0x1b,
-0x71, 0x68, 0x55, 0x61, 0xa9, 0x35, 0xe2, 0x28,
-0x4d, 0x15, 0xf4, 0xac, 0x5f, 0xf3, 0xf7, 0x67,
-0x3f, 0x8b, 0x9e, 0x33, 0x38, 0x67, 0x54, 0xf9,
-0xf0, 0x51, 0x0e, 0xdd, 0x7c, 0x94, 0x52, 0xfd,
-0x66, 0xd8, 0xae, 0x92, 0xed, 0xda, 0xf2, 0x81,
-0x2c, 0xfc, 0xb7, 0xd0, 0x05, 0x0e, 0x78, 0x81,
-0xa8, 0xaf, 0x8d, 0xff, 0x3d, 0xca, 0x7e, 0xb0,
-0xe5, 0xfe, 0x2b, 0xb2, 0x60, 0x9d, 0x5e, 0xd0,
-0xf2, 0x14, 0xb4, 0x87, 0x53, 0x48, 0xd3, 0xfd,
-0x4c, 0x41, 0xdb, 0xb7, 0x80, 0x57, 0xf8, 0xd4,
-0x0b, 0x3a, 0xed, 0xbf, 0xb2, 0x5e, 0xd0, 0x6e,
-0x5b, 0xc0, 0x85, 0xfe, 0x7b, 0x85, 0x5a, 0x23,
-0x8e, 0x42, 0xff, 0xfd, 0x8d, 0xa3, 0xff, 0xb2,
-0x5f, 0x5d, 0x72, 0x3b, 0xdf, 0xb2, 0xef, 0x3e,
-0x8d, 0x3a, 0xab, 0xaa, 0x82, 0x12, 0x51, 0x6a,
-0x3f, 0xce, 0xa7, 0x1d, 0x65, 0xf6, 0x73, 0xc3,
-0xdc, 0x04, 0xc3, 0xac, 0xe7, 0xe6, 0xa9, 0xfd,
-0xb8, 0xe9, 0x9f, 0x1e, 0x28, 0x43, 0x86, 0xba,
-0xf9, 0x3c, 0xdf, 0x9c, 0x2f, 0x96, 0x82, 0x10,
-0x58, 0xc1, 0x7f, 0x5d, 0xc7, 0x11, 0x8a, 0x67,
-0x31, 0x78, 0x1e, 0x47, 0xe8, 0x53, 0x0a, 0xba,
-0x44, 0xe3, 0x08, 0x9d, 0x53, 0xd0, 0x8a, 0x5b,
-0xc0, 0x7a, 0x29, 0x68, 0xc5, 0x46, 0x1c, 0x17,
-0x0a, 0xfc, 0xf7, 0xe9, 0x0b, 0xf9, 0x32, 0xf7,
-0x2f, 0xa5, 0xce, 0x93, 0x84, 0x98, 0xb7, 0x2a,
-0xe1, 0x3f, 0xf7, 0xfe, 0x0e, 0x3e, 0x56, 0xd8,
-0xcf, 0x6e, 0x18, 0xea, 0x9e, 0xbb, 0x46, 0x56,
-0x3d, 0x15, 0x26, 0xcf, 0xb5, 0x75, 0x25, 0x62,
-0x17, 0x6c, 0x61, 0x04, 0x27, 0xd0, 0x22, 0x32,
-0xc8, 0x5b, 0xc2, 0x66, 0xff, 0x16, 0xac, 0x1e,
-0xfd, 0xa8, 0xab, 0x84, 0xc0, 0xd2, 0x46, 0x58,
-0xb6, 0x10, 0x78, 0x97, 0x46, 0x23, 0x0e, 0x85,
-0x71, 0x84, 0x3a, 0x55, 0xd0, 0x81, 0x8f, 0x23,
-0x94, 0xa6, 0xa0, 0xd5, 0xaa, 0xa0, 0x17, 0xde,
-0x28, 0x6b, 0xc4, 0x71, 0xb5, 0xd7, 0x14, 0xb4,
-0xb4, 0x0a, 0xfa, 0x57, 0x3c, 0x1c, 0x5e, 0x39,
-0x99, 0x37, 0x96, 0xef, 0x46, 0xb6, 0x19, 0xf0,
-0x96, 0x59, 0xd4, 0x79, 0xca, 0xaa, 0x7f, 0xc5,
-0x63, 0x3e, 0xb9, 0xb6, 0x60, 0x6c, 0x9f, 0x4b,
-0x4a, 0x39, 0x5b, 0x3a, 0x95, 0x57, 0x40, 0x55,
-0x74, 0xf5, 0x94, 0xc8, 0x67, 0x1d, 0xad, 0x56,
-0xc9, 0x67, 0xed, 0x67, 0x40, 0xec, 0x4a, 0x3d,
-0x06, 0x4f, 0x1f, 0x42, 0x21, 0x16, 0x50, 0x84,
-0x8f, 0xad, 0x69, 0xdc, 0x95, 0xdd, 0x7c, 0x11,
-0x85, 0xc0, 0x9a, 0x29, 0x68, 0x7f, 0xab, 0xa0,
-0xcb, 0xa5, 0x11, 0x56, 0x70, 0x8d, 0x38, 0x14,
-0xc7, 0x01, 0xeb, 0x34, 0xe2, 0x28, 0xf4, 0xdf,
-0xd9, 0xbf, 0xe1, 0x0b, 0x39, 0xb1, 0xd3, 0x1a,
-0xea, 0x85, 0xf3, 0x82, 0x2c, 0x94, 0xa4, 0xa1,
-0x1e, 0xde, 0x65, 0xb1, 0x56, 0xd9, 0x7c, 0xd5,
-0x47, 0x08, 0x39, 0x6e, 0xe3, 0xfa, 0xb1, 0x93,
-0x1b, 0xa0, 0xed, 0x2e, 0x71, 0xd3, 0x81, 0x65,
-0x14, 0x45, 0x08, 0x0c, 0x14, 0x88, 0x47, 0xe9,
-0xd4, 0xde, 0x9c, 0xbf, 0x38, 0xb2, 0x14, 0xb4,
-0x5e, 0x23, 0x0e, 0xc5, 0x71, 0xc0, 0xc1, 0x35,
-0xe2, 0xf0, 0x6d, 0x16, 0x83, 0xd7, 0x2a, 0x68,
-0x7f, 0x67, 0x31, 0xf8, 0x5f, 0x05, 0x7d, 0x11,
-0x7f, 0x43, 0xb6, 0xc6, 0xa6, 0x03, 0x94, 0x84,
-0xed, 0x02, 0x31, 0xfc, 0xb3, 0xd1, 0xde, 0xc0,
-0x8b, 0xb2, 0x02, 0xf4, 0xdc, 0x10, 0xa6, 0x94,
-0x97, 0x66, 0x24, 0xf1, 0xdc, 0x5c, 0xb1, 0xaf,
-0x2b, 0x08, 0x81, 0x81, 0x84, 0x44, 0x9c, 0x5a,
-0x8e, 0x0a, 0xfe, 0x12, 0xa5, 0x73, 0x41, 0xaa,
-0x29, 0x68, 0x33, 0x8d, 0x38, 0x36, 0x97, 0xb2,
-0x11, 0x87, 0xd4, 0x7f, 0x03, 0x6b, 0xc4, 0xe1,
-0xf3, 0x38, 0x42, 0x7b, 0x0a, 0xfa, 0x22, 0x5e,
-0xe2, 0xc5, 0xee, 0x09, 0x0b, 0x6d, 0xe2, 0xc3,
-0xa6, 0x3f, 0x8b, 0x20, 0xf4, 0x30, 0x43, 0xe9,
-0x6f, 0xa7, 0xc6, 0x3d, 0xa9, 0x40, 0xb8, 0xd2,
-0xb7, 0x71, 0xd5, 0x3d, 0x77, 0x5f, 0x5a, 0xa3,
-0xa1, 0x47, 0x4a, 0xec, 0x91, 0x38, 0xd8, 0x69,
-0xfa, 0x07, 0x06, 0xc2, 0x0b, 0x51, 0x92, 0x3a,
-0x1a, 0x78, 0x41, 0x85, 0xd0, 0x7f, 0x9d, 0x42,
-0x60, 0x33, 0x55, 0xd0, 0x1e, 0xc6, 0x11, 0xfa,
-0x5a, 0x05, 0xbd, 0x72, 0x72, 0xd6, 0x82, 0x55,
-0x1b, 0x71, 0x28, 0x8e, 0x23, 0x94, 0x56, 0x41,
-0x5f, 0xaf, 0x51, 0x05, 0x3d, 0xff, 0x8a, 0xac,
-0x05, 0xcf, 0x75, 0x0d, 0x81, 0xd9, 0x6b, 0xb7,
-0xcc, 0xa2, 0x13, 0x3b, 0x50, 0x2b, 0x02, 0xf4,
-0x60, 0x1f, 0x98, 0xd6, 0x3a, 0xbe, 0x11, 0xac,
-0xd4, 0x04, 0xc3, 0xd7, 0x6d, 0xdc, 0x40, 0xac,
-0x56, 0xb8, 0x93, 0x2b, 0x0b, 0x6f, 0x59, 0x94,
-0x91, 0x51, 0xd6, 0x76, 0x17, 0xdb, 0xb4, 0xc8,
-0x3a, 0xbe, 0x15, 0x73, 0x91, 0x80, 0x13, 0xd4,
-0xdd, 0xc4, 0x5b, 0xcc, 0xe5, 0xd7, 0x54, 0xac,
-0xb5, 0x85, 0xc0, 0x25, 0x4e, 0x41, 0xeb, 0x54,
-0x41, 0x6f, 0x09, 0xa0, 0x0a, 0x7a, 0x8d, 0x5a,
-0x0a, 0xba, 0x70, 0x1c, 0x61, 0x79, 0xa5, 0xa0,
-0xd9, 0xaf, 0xb2, 0x1b, 0x78, 0xfa, 0x10, 0x6f,
-0xa3, 0x81, 0x14, 0x19, 0xf0, 0x40, 0x22, 0x4e,
-0x3d, 0x67, 0xf8, 0xd3, 0x43, 0xaf, 0xf7, 0x54,
-0xa8, 0x22, 0x5c, 0xbf, 0x3c, 0xd7, 0x6e, 0xbb,
-0x8b, 0x72, 0xc4, 0x82, 0xe2, 0xde, 0x66, 0xd3,
-0x3f, 0x2a, 0x10, 0x46, 0x68, 0xa0, 0x8b, 0x9f,
-0x36, 0xca, 0x9c, 0x26, 0x70, 0x0b, 0x81, 0x9d,
-0xfd, 0xd7, 0xf3, 0x38, 0x42, 0x83, 0x8d, 0x38,
-0x54, 0x1b, 0x61, 0xe9, 0x57, 0x61, 0xf9, 0xdb,
-0x08, 0x4b, 0xab, 0x11, 0x87, 0x4a, 0x0a, 0x7a,
-0xee, 0x25, 0xf4, 0xec, 0x95, 0xfc, 0x56, 0x74,
-0x34, 0x50, 0x74, 0x08, 0xce, 0x0b, 0x8a, 0x82,
-0x88, 0x86, 0xfb, 0xf9, 0xce, 0x85, 0x78, 0x33,
-0xb7, 0xb4, 0xa5, 0x53, 0x7a, 0x9e, 0xab, 0xb3,
-0x8d, 0xbb, 0xf7, 0x05, 0x07, 0x2d, 0x52, 0xd2,
-0xd1, 0x75, 0x16, 0x42, 0x60, 0x90, 0x0b, 0x45,
-0x07, 0xa8, 0x61, 0xdb, 0x68, 0x1f, 0x1b, 0xa9,
-0xff, 0x6a, 0x57, 0x41, 0x2b, 0x8f, 0x03, 0x56,
-0x4a, 0x41, 0x07, 0x32, 0x0e, 0x38, 0x08, 0xff,
-0x0d, 0xef, 0x38, 0xe0, 0x4b, 0xf8, 0x99, 0xa6,
-0xf5, 0xd3, 0x78, 0x6b, 0x41, 0x14, 0x36, 0x03,
-0xff, 0xa0, 0x64, 0x9c, 0x5a, 0x8f, 0xf1, 0xc7,
-0x48, 0x48, 0xcb, 0x95, 0x3d, 0x95, 0x4e, 0x15,
-0xe9, 0xb9, 0xf6, 0x27, 0x1e, 0x53, 0x7b, 0xbd,
-0xe9, 0x9f, 0x12, 0x08, 0x13, 0xb1, 0x61, 0x6a,
-0xda, 0x9f, 0xdb, 0x47, 0x2e, 0xd7, 0x82, 0xa5,
-0x5b, 0xc0, 0xc1, 0xa5, 0xa0, 0xb5, 0x1a, 0x71,
-0x94, 0x57, 0x15, 0xb4, 0xbc, 0x11, 0x87, 0x87,
-0x14, 0xb4, 0xc2, 0x38, 0xc2, 0xe7, 0x6f, 0xe0,
-0x77, 0x83, 0x57, 0x58, 0xa1, 0x2d, 0x1e, 0x08,
-0x80, 0x91, 0xa6, 0xb5, 0xc7, 0xb7, 0x86, 0xe6,
-0x70, 0xae, 0x4e, 0xc5, 0xf2, 0x3e, 0x87, 0xea,
-0xa9, 0xdc, 0x9d, 0x5c, 0x2f, 0xb6, 0xbb, 0x67,
-0x61, 0x5a, 0x87, 0x5e, 0xb6, 0xa2, 0x28, 0x6e,
-0x04, 0x29, 0x88, 0xa8, 0xb5, 0xce, 0xd6, 0x53,
-0x7d, 0xa3, 0x28, 0x04, 0xb6, 0x6d, 0x01, 0xfb,
-0xdc, 0x88, 0x63, 0x61, 0x41, 0x23, 0x0e, 0x97,
-0x2a, 0x68, 0xad, 0x10, 0x78, 0xa6, 0xaf, 0x29,
-0xe8, 0x29, 0xe1, 0x48, 0x41, 0x4b, 0x1b, 0x71,
-0xb8, 0xa6, 0xa0, 0xd9, 0xbf, 0x6c, 0x7c, 0x9c,
-0x0f, 0x2a, 0x1a, 0xee, 0x35, 0xfd, 0xb1, 0x03,
-0x95, 0xce, 0x50, 0x0f, 0xff, 0x56, 0x3f, 0xfa,
-0xa0, 0x30, 0x5a, 0x3d, 0xa5, 0x10, 0xe1, 0x8a,
-0xb7, 0x71, 0x9d, 0x77, 0x72, 0x25, 0x56, 0x6b,
-0x13, 0xef, 0xf5, 0xb7, 0x70, 0xb4, 0xe3, 0xdf,
-0xa8, 0x5a, 0x8f, 0x99, 0xfe, 0xf1, 0x80, 0x10,
-0xc0, 0xbe, 0xa9, 0xf6, 0xb6, 0xf0, 0x13, 0x7c,
-0xf6, 0x99, 0x26, 0xc1, 0xa4, 0xa0, 0xad, 0xe0,
-0xc6, 0x11, 0x2a, 0xa6, 0xa0, 0xf5, 0xc6, 0x11,
-0xaa, 0xa5, 0xa0, 0xb5, 0xc6, 0x11, 0xbe, 0x64,
-0x74, 0x1c, 0x21, 0xbb, 0xec, 0xc6, 0xdd, 0x34,
-0xd0, 0x85, 0x7d, 0x5e, 0x50, 0x22, 0x62, 0xc3,
-0x56, 0xc7, 0x09, 0xde, 0x7d, 0x31, 0x9c, 0x15,
-0xcb, 0x3e, 0xa6, 0x94, 0xf3, 0x3d, 0xf7, 0x8f,
-0x22, 0x3d, 0x9f, 0xd5, 0xc1, 0x15, 0xc8, 0x3e,
-0x01, 0x1a, 0xee, 0xb7, 0x1a, 0xb6, 0xe5, 0xcf,
-0x14, 0x2b, 0x22, 0x05, 0xed, 0xa9, 0x17, 0xb4,
-0x34, 0x05, 0xed, 0xef, 0x29, 0xa4, 0x19, 0x6a,
-0xfe, 0xab, 0x95, 0x82, 0xd6, 0xf2, 0xdf, 0xc0,
-0xaa, 0xa0, 0x85, 0xfe, 0xfb, 0xfc, 0xf5, 0xb4,
-0x62, 0x12, 0xcf, 0x36, 0xa3, 0xc2, 0x0a, 0x94,
-0x1e, 0xf6, 0x91, 0xeb, 0x6b, 0xa3, 0xda, 0xb5,
-0x41, 0x7a, 0x6e, 0xf1, 0x3b, 0xb9, 0x25, 0xf1,
-0x5c, 0xbb, 0xd8, 0x53, 0xae, 0x0d, 0x21, 0x70,
-0x75, 0x13, 0x1b, 0xa6, 0x93, 0x7b, 0xe9, 0xd8,
-0x66, 0x25, 0xff, 0xf5, 0xa5, 0x11, 0x87, 0x0f,
-0xe3, 0x80, 0xc3, 0x51, 0x05, 0x1d, 0xc8, 0x38,
-0x42, 0xbf, 0xab, 0xa0, 0x17, 0xde, 0xc8, 0xd3,
-0xe6, 0xec, 0xe7, 0x1b, 0x8f, 0x9a, 0xfe, 0xa8,
-0x81, 0xea, 0x66, 0xa8, 0x97, 0x8e, 0x6f, 0xb5,
-0x0e, 0xae, 0x28, 0xce, 0x76, 0x97, 0x6a, 0xec,
-0xe4, 0xee, 0x73, 0xda, 0xc9, 0xf5, 0x6f, 0x1b,
-0x77, 0xcf, 0x42, 0x07, 0xcf, 0xb5, 0xd9, 0xee,
-0x2e, 0x9b, 0xd2, 0x0f, 0xb7, 0x74, 0xaf, 0x21,
-0x6b, 0xff, 0x52, 0x9e, 0x1f, 0x00, 0xd5, 0x09,
-0x25, 0xa8, 0xa5, 0x36, 0x65, 0xbe, 0x85, 0xfe,
-0x2b, 0xdc, 0x02, 0xf6, 0xa3, 0x0a, 0x7a, 0x5f,
-0xe6, 0xaf, 0x80, 0xe7, 0x46, 0x58, 0x76, 0xff,
-0x95, 0xce, 0x62, 0x78, 0xd2, 0xa1, 0x11, 0x96,
-0xa8, 0x11, 0x87, 0xa0, 0x11, 0x96, 0x73, 0x23,
-0x8e, 0x1c, 0xff, 0x9d, 0x2c, 0xf3, 0x5f, 0x5b,
-0x23, 0xac, 0xa5, 0x5a, 0x8d, 0xb0, 0x5c, 0x1a,
-0x71, 0x5c, 0xef, 0x36, 0x8e, 0x90, 0xfd, 0x9f,
-0x35, 0x0f, 0xf3, 0x5d, 0xfb, 0xc1, 0x2e, 0x4c,
-0x09, 0x04, 0xa1, 0x20, 0x32, 0xc0, 0xbf, 0xed,
-0xe7, 0x99, 0xaf, 0xef, 0x15, 0xcb, 0xe2, 0xd2,
-0x29, 0xcd, 0x6d, 0x5c, 0x71, 0xa8, 0xab, 0xec,
-0xb9, 0xbb, 0x9d, 0x3c, 0x77, 0xe4, 0xc9, 0xb6,
-0x60, 0xf4, 0xf9, 0xb6, 0x80, 0x9a, 0x6b, 0x4d,
-0xff, 0x54, 0x80, 0x09, 0xd8, 0x43, 0xb9, 0xb7,
-0x85, 0x37, 0x63, 0xc9, 0xf3, 0xdf, 0xea, 0x4a,
-0x41, 0x07, 0x50, 0x05, 0x9d, 0x6e, 0xc4, 0x21,
-0x4d, 0x41, 0x2b, 0x36, 0xc2, 0xf2, 0x34, 0x8e,
-0x90, 0x7d, 0x1f, 0xa8, 0x5d, 0x67, 0xf5, 0x34,
-0x63, 0x62, 0x02, 0x08, 0x17, 0x2c, 0xdc, 0x6b,
-0xa9, 0xb1, 0x0e, 0x2d, 0xf7, 0x79, 0x1b, 0x57,
-0xde, 0x04, 0x43, 0xc1, 0x76, 0x25, 0xa5, 0x53,
-0x0b, 0xe5, 0x59, 0x65, 0x16, 0x3b, 0x64, 0x24,
-0xf6, 0xdc, 0x05, 0x39, 0x8f, 0x35, 0x26, 0xb6,
-0xd8, 0x58, 0xc4, 0xf4, 0x4f, 0x05, 0x94, 0x1a,
-0x8a, 0x0e, 0x52, 0xe3, 0x4e, 0xeb, 0xf8, 0x16,
-0x26, 0x87, 0x10, 0x58, 0x9a, 0x82, 0x96, 0x9d,
-0x42, 0xd2, 0xab, 0x82, 0xd6, 0x4a, 0x41, 0xab,
-0x9d, 0x42, 0x0a, 0x30, 0x05, 0xad, 0x73, 0x0a,
-0x29, 0x88, 0x14, 0xb4, 0x93, 0xff, 0xb2, 0x08,
-0xfa, 0xf0, 0x4a, 0xea, 0x6b, 0xb3, 0x92, 0x71,
-0xd3, 0x1f, 0x31, 0x00, 0x44, 0xb0, 0x4f, 0x66,
-0x47, 0x23, 0x7f, 0x44, 0x04, 0x52, 0x3a, 0xe5,
-0xc7, 0x4e, 0xae, 0x4a, 0x78, 0x6b, 0xdf, 0xc6,
-0x15, 0xeb, 0x59, 0x35, 0x2d, 0xa0, 0xd6, 0xa3,
-0xa6, 0x7f, 0x24, 0xa0, 0xb4, 0x24, 0xe2, 0x74,
-0xfa, 0xe0, 0x88, 0xf9, 0x0a, 0xfc, 0xf7, 0x98,
-0x9a, 0xff, 0x06, 0xde, 0x88, 0x43, 0x71, 0x1c,
-0x30, 0xc6, 0x11, 0x5e, 0xcf, 0x47, 0x33, 0x2c,
-0xbd, 0x8b, 0xdf, 0x67, 0x3e, 0x25, 0x10, 0xd9,
-0x66, 0x10, 0x7a, 0xfa, 0x3b, 0x2c, 0xf6, 0x30,
-0xf1, 0xad, 0x7a, 0xaa, 0xec, 0x6c, 0xd7, 0xf6,
-0x58, 0xdb, 0xfb, 0x82, 0x15, 0x1b, 0x34, 0xfd,
-0xf3, 0x00, 0xa5, 0x82, 0x88, 0x3a, 0x4f, 0xf0,
-0x5a, 0x88, 0x8c, 0xff, 0xd6, 0x6b, 0xa5, 0xa0,
-0xd7, 0x9a, 0x9b, 0xc5, 0xa0, 0xd3, 0x88, 0x63,
-0xb3, 0x73, 0x2f, 0x68, 0x97, 0x2d, 0x60, 0xa5,
-0x59, 0x0c, 0x53, 0x24, 0x55, 0xd0, 0x2b, 0x26,
-0x4a, 0x7a, 0x41, 0x17, 0xce, 0x62, 0x10, 0x36,
-0xe2, 0x90, 0x6f, 0x01, 0xa7, 0xfc, 0x97, 0xfd,
-0x71, 0x7b, 0x16, 0x52, 0x6f, 0x33, 0xf6, 0x79,
-0x41, 0x39, 0xc1, 0xbe, 0x2b, 0xb2, 0xa7, 0x90,
-0x53, 0xa8, 0x2b, 0x2f, 0x9d, 0x0a, 0xae, 0x7a,
-0x4a, 0xb4, 0x8d, 0x9b, 0xb3, 0x93, 0xeb, 0x9c,
-0x4f, 0x56, 0x31, 0xdc, 0x1d, 0xa3, 0x9d, 0xed,
-0x47, 0x65, 0xb1, 0x68, 0x08, 0x54, 0x07, 0x34,
-0xdc, 0x4b, 0x27, 0x76, 0xd8, 0xfd, 0x77, 0x34,
-0x04, 0x7e, 0x45, 0x23, 0x05, 0xad, 0xd8, 0x08,
-0x4b, 0xab, 0x0a, 0x3a, 0xbd, 0xc3, 0x12, 0x40,
-0x0a, 0x7a, 0x93, 0xbf, 0x8d, 0x38, 0x3c, 0x8f,
-0x23, 0xf4, 0x3b, 0x05, 0xcd, 0x5c, 0x7b, 0xc7,
-0x3c, 0x6a, 0x3e, 0x42, 0x09, 0x1c, 0x24, 0x04,
-0x65, 0x48, 0xaa, 0x22, 0x2b, 0xc7, 0x82, 0x25,
-0x8d, 0xa7, 0x8a, 0x09, 0x72, 0x8b, 0xf4, 0xdc,
-0xe7, 0xfc, 0xf5, 0xdc, 0x91, 0x47, 0x59, 0x5a,
-0x7b, 0x17, 0x5b, 0x38, 0xa1, 0x50, 0x05, 0xb0,
-0x07, 0x35, 0x9d, 0x39, 0x4c, 0xc7, 0xb7, 0x89,
-0xfc, 0xb7, 0x30, 0x04, 0xde, 0x98, 0xb5, 0x60,
-0x71, 0x0a, 0x3a, 0xff, 0x14, 0x92, 0x6a, 0x08,
-0xbc, 0x4f, 0xd6, 0x88, 0x43, 0xa7, 0x11, 0x96,
-0xb5, 0x6d, 0x8e, 0x5a, 0x15, 0x96, 0xda, 0x38,
-0xe0, 0xf5, 0x8a, 0xe3, 0x80, 0x9d, 0xc6, 0x11,
-0xba, 0xa4, 0xa0, 0x7d, 0x1d, 0x07, 0xcc, 0xae,
-0xbc, 0xe9, 0x00, 0x1f, 0x57, 0x04, 0x40, 0xf9,
-0x12, 0x8f, 0x50, 0x4b, 0x4d, 0xb6, 0x86, 0x2a,
-0xa8, 0xd2, 0xa9, 0x85, 0x92, 0x7c, 0xb2, 0x87,
-0xd2, 0x29, 0x89, 0xd5, 0xda, 0xb3, 0x76, 0x19,
-0x65, 0x3d, 0x77, 0xf4, 0x21, 0x96, 0x16, 0xb5,
-0xa1, 0x23, 0x74, 0xe5, 0x43, 0x9d, 0x27, 0xe9,
-0x38, 0x0b, 0x7e, 0xb7, 0xf3, 0xd6, 0xac, 0xf6,
-0x14, 0xb4, 0xbf, 0x55, 0xd0, 0xaa, 0x29, 0x68,
-0x9d, 0x2a, 0xe8, 0x40, 0xc6, 0x01, 0x07, 0xd1,
-0x88, 0x43, 0x6d, 0x1c, 0xb0, 0xe7, 0x46, 0x1c,
-0x4c, 0xec, 0x7d, 0xea, 0x37, 0xd3, 0x50, 0x0f,
-0xb6, 0x7a, 0x41, 0x25, 0x90, 0x4c, 0x58, 0xad,
-0x75, 0x2c, 0x0a, 0x2e, 0xef, 0x6d, 0xdc, 0x7c,
-0xdb, 0x9d, 0x27, 0x54, 0x9e, 0xed, 0x66, 0x1e,
-0x65, 0xfc, 0x80, 0x15, 0xb2, 0x58, 0x15, 0x0d,
-0x0d, 0x76, 0xa7, 0x32, 0xcf, 0xdb, 0x0b, 0xfd,
-0xb7, 0x34, 0x55, 0xd0, 0x0a, 0x29, 0x68, 0xe9,
-0x38, 0x60, 0xfd, 0x14, 0x74, 0x10, 0xe3, 0x80,
-0x8d, 0xa4, 0xa0, 0xd9, 0x3f, 0xd9, 0x9b, 0xb3,
-0xbf, 0xa7, 0x51, 0x54, 0x6b, 0x80, 0xca, 0x82,
-0x7d, 0x93, 0xec, 0x68, 0xa0, 0x83, 0x2f, 0x55,
-0x95, 0xe7, 0xe6, 0x89, 0xda, 0xea, 0x4c, 0xff,
-0x18, 0x40, 0x60, 0xb0, 0x2f, 0x57, 0xa7, 0x0f,
-0x72, 0xff, 0x6d, 0x18, 0xf1, 0x5f, 0x59, 0x0a,
-0x5a, 0xaf, 0x11, 0x87, 0xe2, 0x2c, 0x86, 0xc2,
-0x46, 0x1c, 0x2e, 0x29, 0xe8, 0x20, 0x1a, 0x71,
-0xe8, 0x54, 0x41, 0x7b, 0x48, 0x41, 0x4b, 0x1b,
-0x71, 0xa4, 0x2d, 0x58, 0x9a, 0x82, 0x2e, 0xa8,
-0xc2, 0x5a, 0xf1, 0x3b, 0x7e, 0x37, 0x3a, 0x4e,
-0xa0, 0xc8, 0x0a, 0x54, 0x26, 0xec, 0x93, 0xdd,
-0xd1, 0xc8, 0x9f, 0x24, 0x12, 0xcf, 0x2d, 0xbe,
-0x09, 0x86, 0xaf, 0xd5, 0x53, 0xc5, 0x79, 0x6e,
-0x8e, 0xff, 0xee, 0x5f, 0x6a, 0x25, 0xb0, 0x0b,
-0x5c, 0x89, 0xb0, 0xcf, 0x76, 0xcf, 0x19, 0x3a,
-0xb1, 0x93, 0xfb, 0xaf, 0x43, 0x08, 0x1c, 0x44,
-0x23, 0x0e, 0x85, 0x71, 0x84, 0x3a, 0x55, 0xd0,
-0x3b, 0x47, 0x3f, 0xf9, 0x1a, 0xe3, 0x08, 0x9d,
-0xab, 0xa0, 0xd3, 0x16, 0x3c, 0x5d, 0x2d, 0x04,
-0x9e, 0x9a, 0x6f, 0xc1, 0xaa, 0x8d, 0x38, 0x74,
-0xaa, 0xa0, 0x85, 0xfe, 0xbb, 0xe4, 0x36, 0xfe,
-0xed, 0xe2, 0xf4, 0x41, 0x2b, 0x8e, 0x73, 0xfa,
-0xa0, 0xb2, 0x61, 0x8f, 0xa9, 0x66, 0x3a, 0xb2,
-0x2a, 0x80, 0x26, 0x18, 0x45, 0x6f, 0xe3, 0x3a,
-0xec, 0xe4, 0x3a, 0xf8, 0xac, 0xc4, 0x6a, 0xf3,
-0x9d, 0x97, 0x87, 0x0f, 0x29, 0x61, 0x2e, 0x70,
-0x45, 0x12, 0x19, 0xe0, 0x83, 0xc0, 0x5c, 0xfd,
-0xd7, 0xaa, 0xd7, 0xaa, 0x82, 0x5e, 0xeb, 0x35,
-0x05, 0xed, 0xbc, 0x05, 0x5c, 0x66, 0x29, 0x68,
-0x97, 0x53, 0x48, 0xfe, 0x8d, 0x03, 0x66, 0x6f,
-0xde, 0xb0, 0xdd, 0x1a, 0xec, 0xc6, 0x56, 0x2f,
-0xa8, 0x0a, 0x58, 0xa4, 0xd0, 0xdf, 0xce, 0x1f,
-0x2c, 0x4e, 0x63, 0xfb, 0x9c, 0xc6, 0x19, 0x48,
-0xaa, 0xa7, 0xbc, 0xa6, 0x94, 0x73, 0x6c, 0x57,
-0x1a, 0xde, 0x7a, 0xb5, 0xdd, 0xf4, 0xb3, 0xeb,
-0x69, 0xda, 0xff, 0x12, 0x3a, 0xe7, 0x54, 0x1a,
-0x94, 0xb4, 0x5a, 0x8f, 0xf2, 0xc1, 0x73, 0xdc,
-0x7f, 0xf3, 0x2d, 0x58, 0xa1, 0x0a, 0xba, 0xbc,
-0xc6, 0x11, 0x96, 0x4b, 0x23, 0x0e, 0xd7, 0x2d,
-0x60, 0x66, 0xc4, 0xcb, 0xee, 0xa1, 0x7d, 0x4b,
-0x78, 0x91, 0x55, 0x32, 0x61, 0xfa, 0x03, 0x04,
-0x40, 0x29, 0x21, 0x2b, 0x3a, 0x40, 0x35, 0xeb,
-0x6c, 0xce, 0xeb, 0x3c, 0x42, 0x28, 0x7c, 0xdb,
-0xb8, 0xae, 0x86, 0xfb, 0xb4, 0x83, 0x66, 0x8f,
-0xea, 0x69, 0x6a, 0x6f, 0x30, 0x7d, 0xff, 0x81,
-0xaf, 0xf4, 0xb5, 0xd1, 0xc9, 0xdd, 0x55, 0xe3,
-0xbf, 0xe5, 0x3f, 0x0e, 0x78, 0xf9, 0x7d, 0x6c,
-0x15, 0x56, 0x57, 0x23, 0x62, 0x5e, 0x50, 0xb5,
-0x50, 0x6c, 0x98, 0x3f, 0x79, 0xf2, 0xcc, 0x37,
-0xac, 0xa5, 0x53, 0xc5, 0x79, 0xae, 0x4d, 0xec,
-0x79, 0x75, 0x60, 0xa9, 0x85, 0x42, 0xe8, 0x8a,
-0x21, 0x16, 0xb1, 0xce, 0x1c, 0x4c, 0xfb, 0x6f,
-0xda, 0x82, 0x9d, 0x53, 0xd0, 0x25, 0xaa, 0x82,
-0x96, 0xa6, 0xa0, 0x03, 0x68, 0xc4, 0xf1, 0x8a,
-0x5a, 0x23, 0x0e, 0xb3, 0x55, 0xd0, 0xec, 0x3f,
-0x5f, 0x99, 0x69, 0x35, 0xec, 0xa0, 0xd8, 0x90,
-0xe9, 0xcf, 0x0d, 0x00, 0xa6, 0x89, 0x0e, 0xf1,
-0x67, 0x51, 0xbe, 0xed, 0x16, 0x5f, 0x3d, 0xe5,
-0xd0, 0x04, 0xc3, 0x07, 0xdb, 0x9d, 0x93, 0x91,
-0xb6, 0xed, 0x66, 0xc4, 0xfe, 0xb3, 0xa3, 0xd1,
-0xf4, 0xad, 0x07, 0x3e, 0xd1, 0x79, 0x92, 0x9b,
-0x6f, 0x8e, 0xff, 0xa6, 0x2c, 0xb8, 0x61, 0x87,
-0x52, 0x15, 0x74, 0x4e, 0x23, 0x0e, 0x97, 0x10,
-0x58, 0x63, 0x1c, 0x70, 0xce, 0x1c, 0xb1, 0x40,
-0x1a, 0x71, 0x78, 0x18, 0x47, 0xe8, 0x6b, 0x23,
-0x0e, 0x79, 0x0a, 0x5a, 0xd4, 0x88, 0x83, 0xbd,
-0x4f, 0xed, 0x5a, 0xab, 0xb7, 0x85, 0xe7, 0xdf,
-0x00, 0x00, 0x16, 0x2f, 0x5c, 0xb1, 0xea, 0x37,
-0xfb, 0xb3, 0x93, 0x2b, 0xda, 0xc6, 0xf5, 0x29,
-0xc2, 0x2d, 0xd8, 0xc6, 0x55, 0xb4, 0x5a, 0x27,
-0x1d, 0x5e, 0x65, 0xfa, 0xbe, 0x03, 0x3f, 0x18,
-0x1e, 0xa0, 0x53, 0xfb, 0xd2, 0xfe, 0xeb, 0x9c,
-0x82, 0x0e, 0xba, 0x0a, 0xba, 0x7c, 0xc6, 0x11,
-0x06, 0xd0, 0x88, 0xe3, 0x65, 0xa5, 0x71, 0x84,
-0xd6, 0x8e, 0xb9, 0x56, 0xd7, 0x49, 0xf4, 0xa0,
-0x03, 0x20, 0x9f, 0xe8, 0x20, 0x3f, 0x05, 0xe9,
-0x5f, 0x56, 0xd9, 0xa7, 0xd2, 0x29, 0xe5, 0xd8,
-0x56, 0xd1, 0x73, 0xed, 0x0f, 0x2b, 0xf6, 0x56,
-0x83, 0x5d, 0xa6, 0xef, 0x3b, 0x28, 0x8e, 0x64,
-0xd2, 0x6a, 0x39, 0x9a, 0x35, 0x5f, 0xbd, 0x14,
-0xb4, 0x9a, 0xff, 0x6a, 0xf5, 0x82, 0x36, 0xe8,
-0xbf, 0xc1, 0x55, 0x41, 0xab, 0xfa, 0xaf, 0x43,
-0x0a, 0x9a, 0x05, 0xc2, 0xeb, 0x1e, 0xa6, 0x53,
-0xfb, 0xe1, 0xbc, 0x00, 0x38, 0x41, 0xb1, 0x08,
-0x4f, 0xc1, 0xed, 0x2a, 0x08, 0x7e, 0x2b, 0xc9,
-0x73, 0xf3, 0x54, 0xb7, 0x11, 0x79, 0xb0, 0xb2,
-0x86, 0x06, 0x3a, 0x53, 0xc1, 0xef, 0x5e, 0x91,
-0xff, 0xda, 0x2d, 0x58, 0xb6, 0x05, 0x7c, 0x4c,
-0xab, 0x11, 0x47, 0x70, 0xe3, 0x08, 0xfd, 0x6d,
-0xc4, 0xa1, 0x98, 0x82, 0x0e, 0xb2, 0x0a, 0x9a,
-0xbd, 0x1b, 0xbb, 0x0f, 0x43, 0xbd, 0xa6, 0x3f,
-0x29, 0x00, 0x84, 0x1d, 0x8a, 0x47, 0xa9, 0x7e,
-0x0b, 0x3f, 0x5e, 0xa4, 0x32, 0xce, 0xa0, 0x58,
-0xdb, 0x9d, 0xa3, 0xb0, 0x93, 0xeb, 0xd9, 0x73,
-0x67, 0x65, 0x55, 0x68, 0xbb, 0xa3, 0xcf, 0x28,
-0x6b, 0xeb, 0xd3, 0xd6, 0x30, 0x9e, 0x0c, 0x65,
-0x0b, 0xfb, 0xb8, 0x36, 0x1f, 0xa1, 0x93, 0xb9,
-0xfe, 0x2b, 0x4e, 0x41, 0x17, 0x6c, 0x01, 0xbb,
-0x8d, 0x23, 0x2c, 0xf4, 0x5f, 0xc7, 0x71, 0x84,
-0x9a, 0x8d, 0xb0, 0x3c, 0x8c, 0x23, 0xd4, 0x3a,
-0x85, 0x14, 0xdc, 0x38, 0x42, 0x59, 0x23, 0xac,
-0xc2, 0x71, 0x84, 0xbc, 0x99, 0xd5, 0xb3, 0xa9,
-0xb9, 0x45, 0x38, 0xeb, 0x07, 0x80, 0x12, 0x3c,
-0x0a, 0x6e, 0xd8, 0x41, 0x3b, 0x16, 0x04, 0xe3,
-0xb9, 0xcf, 0xf8, 0x50, 0x3a, 0xa5, 0x62, 0xbb,
-0xce, 0x9e, 0x6b, 0xd3, 0x4c, 0xae, 0x13, 0x3b,
-0x4c, 0xdf, 0x72, 0xe0, 0x89, 0x91, 0x6e, 0x57,
-0xa7, 0xf6, 0x73, 0x15, 0xfa, 0x6f, 0xe3, 0x2e,
-0x63, 0x29, 0x68, 0x9f, 0x1b, 0x71, 0xcc, 0xf7,
-0x3a, 0x8e, 0x50, 0x96, 0x82, 0xd6, 0x1b, 0x47,
-0xa8, 0xd9, 0x88, 0x63, 0xdd, 0x34, 0xeb, 0xf8,
-0x36, 0x0b, 0xfb, 0x3b, 0x00, 0xe8, 0x12, 0x1b,
-0xb6, 0xd8, 0x13, 0x2c, 0x90, 0xd2, 0xa9, 0x39,
-0xfe, 0x59, 0xad, 0xfd, 0x3b, 0x7f, 0x46, 0x4e,
-0x56, 0x6b, 0x3f, 0x9a, 0x91, 0x51, 0xea, 0x01,
-0xc5, 0x9e, 0x6f, 0x51, 0x9c, 0x83, 0x28, 0x3f,
-0xf8, 0x17, 0xc5, 0xd3, 0x07, 0x6d, 0xfe, 0xeb,
-0x9c, 0x82, 0x56, 0x3c, 0x85, 0x14, 0xc8, 0x41,
-0xe0, 0xa5, 0x1a, 0x29, 0x68, 0xf9, 0x29, 0xa4,
-0xb9, 0x1a, 0xfe, 0x9b, 0xb6, 0x60, 0x7f, 0xc7,
-0x01, 0x2b, 0xa4, 0xa0, 0x5f, 0x9e, 0x68, 0xed,
-0x59, 0xc8, 0x2b, 0x9c, 0xd1, 0xe2, 0x06, 0x00,
-0x6f, 0xc4, 0x23, 0x54, 0xbf, 0xa5, 0xa4, 0x07,
-0x72, 0x8b, 0xd9, 0xc6, 0x75, 0xf1, 0xdc, 0x74,
-0x14, 0x50, 0xa8, 0xcc, 0x73, 0xe9, 0x09, 0x3a,
-0x73, 0xd8, 0xf4, 0xed, 0x06, 0xba, 0x10, 0x1f,
-0x32, 0xd8, 0xb4, 0x9f, 0xab, 0xd0, 0x7f, 0x7d,
-0x68, 0xc4, 0xe1, 0x32, 0x0e, 0xb8, 0xc8, 0x71,
-0x84, 0x01, 0x34, 0xe2, 0xd0, 0xaa, 0x82, 0x56,
-0xdd, 0x02, 0xf6, 0x50, 0x05, 0x3d, 0x99, 0x1f,
-0xec, 0x6d, 0xad, 0x43, 0x4b, 0x0d, 0x00, 0x8a,
-0x84, 0x92, 0x09, 0xf6, 0x74, 0xb2, 0xb6, 0xcf,
-0xaf, 0x50, 0xdb, 0xb5, 0x69, 0xd7, 0x02, 0xf4,
-0xe2, 0x28, 0x33, 0x22, 0xfd, 0x74, 0xe6, 0x10,
-0x35, 0x1d, 0x48, 0xfb, 0x6f, 0xda, 0x82, 0xf7,
-0xe4, 0xfa, 0xaf, 0x62, 0x0a, 0x5a, 0xad, 0x17,
-0x74, 0xce, 0x16, 0xf0, 0x6a, 0x1d, 0xff, 0x75,
-0x1e, 0x47, 0xb8, 0x47, 0xad, 0x11, 0xc7, 0x76,
-0x9d, 0x59, 0x0c, 0x39, 0x5b, 0xc0, 0x2e, 0x8d,
-0x38, 0x3c, 0xf8, 0xaf, 0x6b, 0x0a, 0x9a, 0xbd,
-0xf6, 0xd0, 0xcb, 0xbc, 0x93, 0x24, 0x00, 0xc0,
-0x0f, 0x78, 0x39, 0x56, 0xdd, 0x26, 0xe7, 0xc8,
-0x57, 0xbf, 0x74, 0x4a, 0xb7, 0x7a, 0x4a, 0x7d,
-0x1b, 0xf7, 0x95, 0x99, 0xb9, 0x3e, 0xfb, 0xc4,
-0xa8, 0x44, 0x86, 0x5b, 0xa8, 0xd6, 0x63, 0xa6,
-0x6f, 0x36, 0x50, 0x85, 0x28, 0x69, 0xb5, 0x37,
-0xf0, 0xe4, 0x33, 0x53, 0x8e, 0xff, 0x16, 0x9d,
-0x82, 0x56, 0x6c, 0x84, 0x95, 0x0e, 0x81, 0x95,
-0xb6, 0x80, 0xf5, 0xaa, 0xa0, 0x03, 0x49, 0x41,
-0xeb, 0x34, 0xe2, 0xf0, 0x90, 0x82, 0x5e, 0x39,
-0x99, 0xb6, 0xcf, 0xb5, 0x4e, 0x1f, 0xb2, 0x50,
-0x67, 0x05, 0x80, 0xbf, 0x44, 0x07, 0xd8, 0xb3,
-0x48, 0xb6, 0x93, 0xeb, 0xcb, 0xe1, 0xa0, 0xe2,
-0xb6, 0x71, 0x73, 0x3c, 0x57, 0xc1, 0x76, 0x37,
-0xe6, 0x6a, 0xdf, 0x12, 0x74, 0x80, 0x2f, 0x17,
-0x68, 0x38, 0x15, 0xfc, 0x66, 0xfc, 0x57, 0x25,
-0x05, 0x6d, 0x6b, 0x84, 0xa5, 0xd0, 0x88, 0x63,
-0xa3, 0x5a, 0x23, 0x8e, 0x95, 0xda, 0x29, 0xe8,
-0x7d, 0xb2, 0x71, 0x84, 0x85, 0x8d, 0xb0, 0xdc,
-0x0e, 0x02, 0xcf, 0xf1, 0x3f, 0x05, 0x9d, 0xd3,
-0x08, 0x4b, 0xa1, 0x0a, 0x7a, 0xf5, 0x83, 0x56,
-0xed, 0x5a, 0xab, 0xaf, 0xdd, 0xf4, 0x87, 0x02,
-0x80, 0x0a, 0x25, 0xd2, 0x6f, 0x1d, 0x59, 0x55,
-0x81, 0x9e, 0xbb, 0xd1, 0x76, 0x28, 0x83, 0xbd,
-0xbc, 0xbf, 0xd5, 0xf4, 0x8d, 0x06, 0x0a, 0x10,
-0x51, 0xfb, 0xf1, 0xb4, 0xf9, 0xda, 0xfd, 0x57,
-0x5c, 0x05, 0xed, 0x6b, 0x23, 0x0e, 0xdf, 0xc6,
-0x01, 0xeb, 0x37, 0xe2, 0x48, 0x59, 0x70, 0xb8,
-0x1a, 0x71, 0x30, 0x6d, 0xfa, 0x83, 0xd5, 0x7e,
-0x1c, 0x5d, 0x35, 0x00, 0x08, 0x14, 0x8a, 0xf4,
-0xd3, 0xfe, 0xa5, 0xfe, 0x55, 0x2c, 0x2b, 0x6f,
-0xe3, 0x3a, 0xee, 0xe4, 0xaa, 0x65, 0x95, 0x25,
-0xb6, 0xfb, 0x78, 0x8e, 0x58, 0x98, 0x0f, 0x42,
-0x0f, 0x45, 0x6c, 0xc1, 0xaf, 0xaa, 0xff, 0x06,
-0x90, 0x82, 0xd6, 0x39, 0x85, 0xa4, 0x9c, 0x82,
-0xf6, 0x75, 0x16, 0x43, 0x20, 0xa7, 0x90, 0x46,
-0x2d, 0x78, 0xe3, 0xe3, 0x7c, 0x38, 0x72, 0x2c,
-0x62, 0xfa, 0xe3, 0x00, 0x40, 0x55, 0x40, 0x91,
-0x41, 0x3a, 0xb0, 0xb4, 0xd2, 0x3c, 0xd7, 0xfe,
-0x14, 0xda, 0x34, 0x9d, 0xd0, 0xa5, 0x27, 0xe4,
-0xb0, 0xe0, 0xb7, 0xe3, 0x44, 0x8e, 0xff, 0xe6,
-0x6c, 0x01, 0xab, 0x34, 0xc2, 0x2a, 0xb2, 0x11,
-0x47, 0xd1, 0x8d, 0xb0, 0x02, 0x69, 0xc4, 0xa1,
-0x33, 0x8e, 0x50, 0xaf, 0x11, 0x56, 0x41, 0x0a,
-0x9a, 0x69, 0xe7, 0x02, 0xab, 0xed, 0x18, 0x8a,
-0x9c, 0x01, 0x28, 0x25, 0xbc, 0xd7, 0xdf, 0xbe,
-0x17, 0x8b, 0x2a, 0x9d, 0xca, 0xf7, 0x5c, 0x61,
-0xe9, 0x94, 0x7e, 0xf5, 0x94, 0xc0, 0x73, 0xa7,
-0xa7, 0x25, 0x36, 0xdc, 0xd1, 0x27, 0x4f, 0xae,
-0xac, 0xfa, 0xad, 0xa6, 0xef, 0x31, 0x70, 0x25,
-0xd2, 0x6f, 0x9d, 0x39, 0xcc, 0xfd, 0x57, 0x23,
-0x04, 0xf6, 0xb5, 0x0a, 0xba, 0x76, 0x6d, 0x50,
-0xe3, 0x08, 0xf7, 0x48, 0xc7, 0x11, 0x6a, 0x35,
-0xe2, 0x98, 0x25, 0x0b, 0x81, 0xa7, 0x7b, 0x09,
-0x81, 0xd9, 0xef, 0xaf, 0xdb, 0x88, 0xae, 0x1a,
-0x00, 0x98, 0xa1, 0xb7, 0xc5, 0x62, 0x4f, 0x89,
-0x60, 0xb7, 0x71, 0x65, 0xb6, 0xeb, 0xb2, 0x8d,
-0x9b, 0x95, 0x9b, 0xcf, 0xe6, 0x7f, 0xe7, 0xcf,
-0x88, 0x3d, 0xc7, 0xa2, 0x83, 0xa6, 0x6f, 0x31,
-0x70, 0x80, 0xf8, 0x99, 0x5f, 0xe6, 0xbf, 0x69,
-0x0b, 0xce, 0x86, 0xc0, 0xae, 0xa7, 0x90, 0xc2,
-0x92, 0x82, 0x56, 0x6c, 0xc4, 0xa1, 0x98, 0x82,
-0xd6, 0xaa, 0x82, 0x96, 0x8d, 0x03, 0x56, 0xf4,
-0xdf, 0xed, 0x73, 0x88, 0x85, 0xbd, 0xd8, 0xed,
-0x05, 0xc0, 0x18, 0x44, 0x5d, 0xa7, 0xf8, 0x57,
-0xf1, 0x1c, 0xdb, 0x55, 0x49, 0x29, 0x17, 0x7a,
-0xae, 0x66, 0x9c, 0x2b, 0xb7, 0x5d, 0x49, 0x78,
-0xeb, 0x68, 0xbb, 0x59, 0x3d, 0x46, 0x4d, 0x07,
-0x4c, 0xdf, 0x61, 0x20, 0x86, 0xef, 0x36, 0x36,
-0xd7, 0x88, 0xfc, 0x57, 0xf9, 0x14, 0x92, 0x97,
-0x46, 0x1c, 0xeb, 0xb5, 0xab, 0xb0, 0xc2, 0xdf,
-0x88, 0x43, 0x77, 0x16, 0xc3, 0xfa, 0x47, 0xd8,
-0x92, 0xad, 0xe1, 0x3e, 0xe4, 0x9c, 0x01, 0x30,
-0x0c, 0xfb, 0x3b, 0xd8, 0xd9, 0x48, 0xdb, 0xe6,
-0x84, 0x74, 0x1b, 0x57, 0xdb, 0x73, 0x73, 0xb5,
-0x7d, 0x2e, 0xa1, 0x17, 0x47, 0x38, 0xe9, 0x69,
-0xb6, 0x9a, 0x8f, 0x38, 0xfa, 0xaf, 0x66, 0x23,
-0x2c, 0x13, 0xe3, 0x80, 0xa5, 0x8d, 0x38, 0xc2,
-0x37, 0x0e, 0x78, 0xed, 0x23, 0xb4, 0x63, 0x1e,
-0xb5, 0x1e, 0x85, 0xf3, 0x02, 0x10, 0x16, 0x88,
-0xa8, 0xa5, 0x96, 0x1f, 0x47, 0xaa, 0x0c, 0xcf,
-0x1d, 0x79, 0xe0, 0x8c, 0x8a, 0x3f, 0xe4, 0x41,
-0xd8, 0x88, 0x47, 0xb9, 0x0b, 0xd8, 0xfd, 0x37,
-0x67, 0x0b, 0xd8, 0x54, 0x0a, 0x7a, 0x75, 0xde,
-0x41, 0x60, 0xdf, 0xaa, 0xa0, 0x77, 0x69, 0x55,
-0x41, 0xcb, 0xc6, 0x11, 0xa6, 0xf3, 0x4e, 0x6a,
-0x8d, 0x38, 0xd6, 0x4d, 0x4b, 0x1f, 0x04, 0x66,
-0xbf, 0xa1, 0x66, 0xad, 0x35, 0xd8, 0x69, 0xfa,
-0x67, 0x0f, 0x00, 0xc8, 0x81, 0x92, 0x09, 0xeb,
-0xc4, 0x2e, 0xda, 0xfc, 0x54, 0x41, 0x01, 0x95,
-0xce, 0x81, 0x5c, 0x69, 0xf5, 0x94, 0x63, 0x01,
-0x95, 0x67, 0xcf, 0x9d, 0x96, 0x55, 0xc6, 0x73,
-0xd9, 0xa3, 0x26, 0x23, 0xf6, 0x9d, 0x7f, 0xf7,
-0xf3, 0xe8, 0xe4, 0x13, 0x3a, 0xfa, 0xdb, 0xad,
-0x96, 0x1a, 0xee, 0xbf, 0x45, 0x86, 0xc0, 0x0d,
-0x0e, 0x55, 0xd0, 0x6e, 0x8d, 0x38, 0x02, 0x48,
-0x41, 0xef, 0x53, 0x4c, 0x41, 0x2b, 0x8d, 0x03,
-0x0e, 0x24, 0x05, 0xbd, 0x6d, 0x0e, 0xbf, 0xe1,
-0xb1, 0x61, 0xd3, 0x3f, 0x78, 0x00, 0x80, 0x88,
-0x78, 0xd4, 0x62, 0x4f, 0x27, 0x1f, 0x9b, 0x60,
-0xa8, 0xef, 0xe4, 0xea, 0x85, 0xb7, 0xd3, 0x6c,
-0x72, 0xf0, 0x5c, 0xbb, 0xd8, 0xaf, 0x76, 0x9d,
-0x34, 0x7d, 0x73, 0x41, 0x16, 0x4a, 0x26, 0xf9,
-0x81, 0x17, 0x66, 0x07, 0x23, 0x16, 0x2c, 0x0e,
-0x81, 0x5d, 0xab, 0xa0, 0x65, 0x29, 0x68, 0xf3,
-0xe3, 0x08, 0x75, 0x1a, 0x71, 0xe8, 0x1d, 0x04,
-0xf6, 0xd0, 0x88, 0x63, 0xff, 0x52, 0xea, 0x6b,
-0x43, 0xce, 0x19, 0x80, 0x50, 0x13, 0x1d, 0xa4,
-0x03, 0xcb, 0xfc, 0x4e, 0x29, 0xfb, 0xe2, 0xb9,
-0x8f, 0x08, 0x94, 0xe7, 0xb3, 0xce, 0xb2, 0x0e,
-0xaf, 0x34, 0x7d, 0x67, 0x41, 0x16, 0x7e, 0x2e,
-0xbb, 0xa5, 0x36, 0xeb, 0xbf, 0x29, 0x0b, 0xd6,
-0x3c, 0x85, 0xa4, 0xd8, 0x08, 0x2b, 0xd8, 0x2a,
-0x68, 0x3f, 0xc6, 0x01, 0x07, 0xdc, 0x88, 0x83,
-0x4f, 0xc4, 0xde, 0x65, 0x25, 0x50, 0xe4, 0x0c,
-0x40, 0x19, 0x40, 0x91, 0x01, 0xfe, 0xc4, 0x08,
-0xdf, 0x36, 0xae, 0xae, 0xe7, 0xe6, 0x1c, 0xb5,
-0x60, 0x31, 0xf8, 0x70, 0xbf, 0xe9, 0x5b, 0x0b,
-0x52, 0x24, 0x93, 0xd4, 0xd9, 0x28, 0xf7, 0xdf,
-0x12, 0x54, 0x41, 0x97, 0xc1, 0x38, 0xc2, 0x82,
-0xf6, 0x38, 0xea, 0x29, 0xe8, 0x8d, 0xd3, 0xd9,
-0x9f, 0x6e, 0x75, 0x22, 0xf3, 0x03, 0x40, 0x39,
-0x41, 0xfd, 0x1d, 0xb4, 0x73, 0x9e, 0x6f, 0xdb,
-0xb8, 0x4a, 0xb6, 0xab, 0xb0, 0x8d, 0x2b, 0xd1,
-0x54, 0x9b, 0x1e, 0x2c, 0x94, 0xd5, 0xb8, 0xdb,
-0xf4, 0x7d, 0x05, 0x1c, 0x8a, 0x0e, 0xf2, 0xca,
-0xab, 0x02, 0xff, 0x75, 0xdd, 0x02, 0xde, 0x27,
-0x4a, 0x41, 0x0b, 0x1a, 0x71, 0x88, 0x1a, 0x61,
-0x39, 0x37, 0xe2, 0xc8, 0xf1, 0xdf, 0xb5, 0x3e,
-0xf9, 0xaf, 0x87, 0x46, 0x58, 0x9e, 0xc7, 0x11,
-0x0a, 0x67, 0x31, 0xa4, 0xfe, 0x6e, 0xb2, 0xb0,
-0xf7, 0xe8, 0x06, 0x6b, 0xb0, 0xdb, 0xf4, 0x4f,
-0x1b, 0x00, 0xa0, 0x09, 0x91, 0xd5, 0x71, 0x82,
-0x9f, 0x48, 0x52, 0xea, 0x3d, 0x55, 0x4c, 0xa8,
-0x5b, 0xe0, 0xb9, 0x76, 0xdb, 0x55, 0x8a, 0x70,
-0xdd, 0x3c, 0x37, 0x47, 0x5b, 0x9f, 0x46, 0x15,
-0x56, 0x18, 0xa0, 0xde, 0xe6, 0x94, 0xf9, 0xd6,
-0x2a, 0x84, 0xc0, 0x2a, 0x55, 0xd0, 0x01, 0xa4,
-0xa0, 0x8f, 0x88, 0xc6, 0x01, 0x17, 0xdb, 0x08,
-0x2b, 0x88, 0x71, 0x84, 0x0e, 0x8d, 0x38, 0xb6,
-0xcf, 0x25, 0x76, 0x3f, 0x51, 0x6a, 0x05, 0x40,
-0x99, 0xc2, 0x2c, 0xb8, 0xb9, 0x96, 0xff, 0x05,
-0x97, 0xf6, 0x9e, 0xd2, 0x4a, 0x29, 0x7b, 0xa8,
-0x9e, 0xd2, 0x0f, 0x75, 0x05, 0x4d, 0xe6, 0xb9,
-0xa6, 0x52, 0x47, 0x83, 0xe9, 0xdb, 0x5a, 0xf5,
-0x24, 0x63, 0xd4, 0x56, 0xef, 0xe4, 0xbf, 0x1a,
-0x55, 0xd0, 0xa5, 0x4d, 0x41, 0x2b, 0x36, 0xc2,
-0x0a, 0x30, 0x05, 0xed, 0xd6, 0x0b, 0x3a, 0x77,
-0x9f, 0x88, 0x05, 0xe0, 0xbc, 0xd4, 0x2a, 0x69,
-0xfa, 0x27, 0x0d, 0x00, 0x28, 0x82, 0x64, 0x82,
-0x1f, 0xeb, 0x10, 0xda, 0xae, 0xb6, 0xe7, 0x16,
-0xb9, 0x8d, 0xfb, 0x90, 0xdc, 0x67, 0xc5, 0x9e,
-0x6b, 0xd3, 0xaa, 0x07, 0x68, 0xff, 0x8b, 0x28,
-0x01, 0x35, 0xcc, 0x40, 0x17, 0xb5, 0xd5, 0xd9,
-0xfc, 0xb7, 0x56, 0xb5, 0x0a, 0x3a, 0x34, 0x8d,
-0x38, 0xc2, 0x3b, 0x8e, 0x90, 0xfd, 0x1e, 0xb6,
-0xe4, 0x24, 0x92, 0x3c, 0x00, 0x54, 0x04, 0x94,
-0xe4, 0xbd, 0x08, 0x84, 0x27, 0x0a, 0x4b, 0x51,
-0x3d, 0xe5, 0x93, 0xed, 0x66, 0xb4, 0xfa, 0x41,
-0x0c, 0x16, 0x37, 0x49, 0x32, 0x69, 0x75, 0x9d,
-0x64, 0xfe, 0x9b, 0x6b, 0xc1, 0xee, 0xfe, 0xab,
-0x9c, 0x82, 0x6e, 0xd0, 0x9a, 0xc5, 0xb0, 0x51,
-0xe4, 0xbf, 0xf6, 0x2d, 0x60, 0x59, 0x23, 0x0e,
-0xbd, 0x46, 0x58, 0x0b, 0x0b, 0x1a, 0x71, 0x08,
-0x0e, 0x02, 0x8b, 0xfc, 0xd7, 0xb9, 0x11, 0xc7,
-0x2b, 0xb9, 0x8d, 0x38, 0xd8, 0xfb, 0xa3, 0xab,
-0x15, 0x00, 0x95, 0x05, 0x2f, 0x87, 0xde, 0xb3,
-0xb8, 0x84, 0xdb, 0xb8, 0x0a, 0x29, 0x65, 0x47,
-0xcf, 0x9d, 0x92, 0x96, 0xdd, 0x73, 0xb3, 0x4a,
-0x4d, 0x18, 0xaf, 0x5d, 0x6f, 0xfa, 0x8e, 0x56,
-0x31, 0x91, 0x41, 0x6a, 0x3b, 0xe6, 0xe8, 0xbf,
-0x2e, 0x29, 0x68, 0x61, 0x15, 0xb4, 0x38, 0x04,
-0x96, 0x6d, 0x01, 0x07, 0x3d, 0x8e, 0xd0, 0xad,
-0x11, 0x56, 0x30, 0xe3, 0x08, 0x5f, 0x99, 0x69,
-0x1d, 0x59, 0xcd, 0x07, 0xa9, 0x00, 0x00, 0x2a,
-0x8f, 0xde, 0x16, 0x5e, 0x8b, 0x15, 0x96, 0x6d,
-0xdc, 0xbc, 0xf0, 0x76, 0x8a, 0x4d, 0xb9, 0x56,
-0x5b, 0xa8, 0x95, 0xbf, 0xa7, 0x0d, 0xd3, 0xad,
-0xc8, 0x80, 0xe9, 0x1b, 0x5a, 0x95, 0x10, 0x51,
-0x4f, 0x8b, 0xc8, 0x7f, 0x95, 0x53, 0xd0, 0xa7,
-0x84, 0x55, 0xd0, 0x82, 0x71, 0xc0, 0x39, 0x16,
-0x5c, 0xaf, 0xd3, 0x88, 0xa3, 0xf8, 0x14, 0xf4,
-0x3e, 0xfd, 0x2a, 0xe8, 0x62, 0x7a, 0x41, 0x6f,
-0x9e, 0x65, 0x9d, 0xd8, 0xc9, 0xc7, 0x38, 0x02,
-0x00, 0x2a, 0x13, 0xa2, 0xd6, 0x3a, 0x5e, 0xff,
-0x5c, 0xa6, 0x9e, 0x9b, 0xa3, 0xfb, 0xad, 0xa6,
-0xfd, 0xa6, 0xef, 0x67, 0x35, 0x42, 0xc9, 0x04,
-0xb5, 0x37, 0xa4, 0xfc, 0x57, 0x12, 0x02, 0x7b,
-0x3a, 0x08, 0x1c, 0xfa, 0x46, 0x1c, 0x01, 0x8c,
-0x23, 0xb4, 0xd8, 0x6f, 0xee, 0x68, 0x44, 0x55,
-0x3f, 0x00, 0x15, 0x4e, 0x32, 0xc9, 0x1b, 0xed,
-0xda, 0x33, 0xcc, 0x25, 0xde, 0xc6, 0xcd, 0xdb,
-0xc9, 0xd5, 0xb6, 0x5d, 0x9b, 0xb6, 0xcf, 0x45,
-0x75, 0x68, 0xe9, 0xa1, 0xe1, 0x5e, 0x6a, 0x3f,
-0xae, 0xe2, 0xbf, 0xde, 0xc7, 0x11, 0x2a, 0xfa,
-0xef, 0x31, 0xc5, 0x53, 0x48, 0x81, 0xa5, 0xa0,
-0x8b, 0xf7, 0xdf, 0x6d, 0x73, 0xf8, 0x85, 0x0d,
-0xf5, 0x9a, 0xfe, 0xa9, 0x02, 0x00, 0x4a, 0x01,
-0xef, 0xd9, 0x7b, 0x74, 0x1d, 0x9f, 0x5f, 0x66,
-0xa4, 0x74, 0x4a, 0xea, 0xb9, 0x2e, 0x86, 0x5b,
-0xa8, 0x01, 0x8c, 0x80, 0x29, 0x39, 0x3d, 0xcd,
-0xdc, 0x7f, 0xd3, 0x16, 0x2c, 0x4a, 0x41, 0xfb,
-0xda, 0x88, 0x23, 0xa7, 0x0a, 0xba, 0xbe, 0x34,
-0xe3, 0x08, 0x8b, 0xae, 0x82, 0x56, 0x4c, 0x41,
-0xef, 0x7c, 0xd6, 0x3a, 0xb9, 0x8b, 0xa2, 0x38,
-0xde, 0x0b, 0x40, 0x15, 0x41, 0xf1, 0x08, 0x7f,
-0xaa, 0x14, 0xd3, 0x04, 0xc3, 0x63, 0xe9, 0x94,
-0xa7, 0x38, 0x37, 0xad, 0xc9, 0x69, 0xbd, 0x3c,
-0x29, 0xab, 0xa3, 0x1b, 0x4d, 0xdf, 0xcb, 0xea,
-0x82, 0x12, 0x31, 0x9e, 0x7c, 0xce, 0xfa, 0x6f,
-0xca, 0x82, 0xd3, 0x5d, 0xb0, 0xb4, 0xb6, 0x80,
-0x8b, 0x19, 0x47, 0xf8, 0x8a, 0x5a, 0x08, 0xbc,
-0xb6, 0xa0, 0x11, 0x87, 0xe2, 0x38, 0xc2, 0xa5,
-0x45, 0x37, 0xe2, 0x98, 0x2f, 0x0f, 0x81, 0x79,
-0x9d, 0x73, 0x2d, 0xbb, 0xa1, 0xa6, 0x7f, 0xa4,
-0x00, 0x80, 0x52, 0x43, 0xfd, 0xed, 0xb4, 0x65,
-0xb6, 0x3f, 0x3b, 0xb9, 0xe2, 0x6d, 0x5c, 0x3f,
-0xc2, 0xdb, 0x97, 0x27, 0xdb, 0x64, 0xb3, 0xdd,
-0x97, 0x7f, 0x97, 0xd6, 0xc6, 0x19, 0x14, 0x8b,
-0x98, 0xbe, 0x97, 0xd5, 0xc4, 0x60, 0x77, 0xda,
-0x7c, 0x3d, 0xa6, 0xa0, 0x0f, 0x04, 0x92, 0x82,
-0xae, 0x13, 0x9d, 0x42, 0x2a, 0x4d, 0x0a, 0x7a,
-0xd7, 0xf3, 0xea, 0x29, 0x68, 0x6b, 0xdb, 0xe8,
-0x29, 0xa4, 0x7d, 0x2f, 0x50, 0xcf, 0x19, 0xec,
-0x9e, 0x00, 0x50, 0xa5, 0x10, 0x51, 0x5b, 0x3d,
-0xaf, 0xbf, 0xf2, 0xa1, 0x7a, 0xca, 0x97, 0xf0,
-0x56, 0x68, 0xbb, 0x93, 0xc4, 0xb6, 0x9b, 0xd1,
-0xca, 0x49, 0xd4, 0x5c, 0x6b, 0xfa, 0x56, 0x56,
-0x0d, 0xbc, 0xf2, 0xf9, 0x4c, 0xd6, 0x7f, 0xd5,
-0x53, 0xd0, 0x2a, 0xe3, 0x90, 0x9c, 0x1b, 0x61,
-0x79, 0x1f, 0x47, 0x68, 0x64, 0x16, 0x83, 0x7b,
-0x0a, 0x9a, 0xa9, 0x66, 0x1d, 0x0d, 0xf7, 0xe1,
-0x84, 0x2f, 0x00, 0x55, 0x4d, 0x32, 0xc1, 0x13,
-0x80, 0x6b, 0x45, 0x3b, 0xbc, 0x41, 0x97, 0x4e,
-0x09, 0x3c, 0x77, 0x92, 0x83, 0x0a, 0x3c, 0x97,
-0x69, 0xf9, 0xc4, 0xac, 0x76, 0x3c, 0x8b, 0x47,
-0x59, 0x69, 0xa0, 0x44, 0x8c, 0xb7, 0x13, 0xef,
-0x68, 0x50, 0x0d, 0x81, 0xcb, 0x6b, 0x1c, 0xb0,
-0x62, 0x23, 0x8e, 0x62, 0xc6, 0x11, 0xb2, 0x60,
-0xf9, 0xd4, 0x5e, 0x34, 0xb6, 0x02, 0x00, 0x70,
-0x28, 0xc9, 0xb7, 0xc6, 0xd6, 0x4e, 0x0d, 0x93,
-0xe7, 0x8a, 0x0c, 0x37, 0xcf, 0x73, 0xb3, 0xba,
-0x97, 0xff, 0x52, 0x3f, 0x7a, 0x61, 0x95, 0x02,
-0x1a, 0xea, 0xe1, 0xe6, 0x9b, 0xe3, 0xbf, 0xf5,
-0xda, 0xa7, 0x90, 0xf2, 0x1b, 0x61, 0x39, 0x87,
-0xc0, 0xe9, 0x46, 0x58, 0xdb, 0xd4, 0xaa, 0xa0,
-0x03, 0x4b, 0x41, 0xef, 0x93, 0xa6, 0xa0, 0x1d,
-0x1b, 0x61, 0xe5, 0x84, 0xc0, 0xfb, 0x96, 0x50,
-0xeb, 0x51, 0x42, 0xce, 0x19, 0x00, 0x30, 0x0a,
-0x9f, 0x22, 0xc7, 0x1e, 0x1d, 0xf6, 0xd2, 0x29,
-0x69, 0xef, 0x29, 0x6d, 0xdb, 0x9d, 0x9c, 0x23,
-0x77, 0xdb, 0x5d, 0x91, 0xab, 0xac, 0xd5, 0xde,
-0x67, 0xd3, 0xbd, 0x39, 0xaa, 0x59, 0x63, 0xfa,
-0x2e, 0x56, 0x01, 0xa9, 0xe4, 0x73, 0x7e, 0xfc,
-0x5b, 0x6c, 0x0a, 0x5a, 0xa5, 0x11, 0x47, 0x41,
-0x08, 0xec, 0x6f, 0x23, 0x8e, 0x92, 0xa4, 0xa0,
-0x89, 0xfd, 0x11, 0xdd, 0xa7, 0x91, 0xa8, 0x01,
-0x00, 0xe4, 0xc1, 0x37, 0xf5, 0x36, 0xce, 0xf0,
-0xff, 0x70, 0x90, 0xfa, 0x36, 0x2e, 0xb7, 0xdd,
-0x89, 0x69, 0xe5, 0x47, 0xb8, 0x0e, 0x9e, 0x6b,
-0xd7, 0xba, 0x69, 0x38, 0xc4, 0x11, 0x34, 0x14,
-0x8f, 0xf2, 0x1e, 0x11, 0x23, 0xfe, 0x2b, 0x4a,
-0x41, 0x7b, 0x6a, 0x84, 0x25, 0x4a, 0x41, 0x57,
-0x5c, 0x23, 0x0e, 0x9e, 0x62, 0xe2, 0x03, 0x7c,
-0x61, 0xbe, 0x00, 0x80, 0x42, 0x88, 0x17, 0xa6,
-0xf2, 0x54, 0xb3, 0xb9, 0x6d, 0xdc, 0xbc, 0xac,
-0xb2, 0xba, 0x96, 0xdd, 0xcb, 0xdd, 0xb9, 0xf9,
-0xb0, 0xe9, 0x7b, 0x58, 0xe1, 0xf0, 0x1e, 0x11,
-0x1d, 0x27, 0x5c, 0xfc, 0xd7, 0x64, 0x23, 0x0e,
-0xd5, 0x71, 0xc0, 0x6b, 0xd4, 0xfd, 0xd7, 0x9f,
-0x46, 0x1c, 0x3b, 0x17, 0x50, 0xc3, 0x36, 0xfe,
-0xd5, 0x05, 0x00, 0x00, 0x9c, 0xa0, 0x24, 0x7f,
-0x76, 0xf1, 0xb4, 0x73, 0x99, 0x78, 0x6e, 0xae,
-0xac, 0xad, 0xcf, 0xe0, 0x34, 0x47, 0x80, 0x10,
-0x59, 0x7d, 0x2d, 0x56, 0xa7, 0x28, 0xfe, 0x2d,
-0x32, 0x05, 0xad, 0x3c, 0x0e, 0x38, 0xc0, 0x71,
-0x84, 0xaa, 0x29, 0x68, 0xcd, 0x5e, 0xd0, 0xec,
-0x25, 0x6c, 0xa5, 0xf8, 0x58, 0x02, 0x00, 0x64,
-0xb0, 0x6f, 0xe9, 0xfc, 0x31, 0xa2, 0xbe, 0x93,
-0x2b, 0xb5, 0x5d, 0xf1, 0x36, 0xae, 0xeb, 0x4e,
-0xae, 0xaa, 0xed, 0xde, 0x93, 0xd5, 0x4b, 0x77,
-0x73, 0x2d, 0xbb, 0x8f, 0x7a, 0x9a, 0x4d, 0xdf,
-0xc2, 0xca, 0x25, 0x99, 0xa0, 0xae, 0x93, 0x23,
-0xfe, 0xeb, 0x96, 0x82, 0xf6, 0xd0, 0x88, 0xa3,
-0xa8, 0x46, 0x58, 0x85, 0xe3, 0x08, 0x85, 0xfe,
-0xbb, 0x36, 0xb0, 0x46, 0x58, 0x0b, 0x1d, 0xfd,
-0x97, 0xbd, 0x03, 0xbb, 0x33, 0x30, 0x5f, 0x00,
-0x80, 0x22, 0x7d, 0xad, 0x7c, 0x3a, 0x83, 0x8b,
-0xed, 0xaa, 0x84, 0xba, 0x62, 0xcf, 0x55, 0xdb,
-0xc9, 0x95, 0x84, 0xba, 0xb9, 0x9e, 0x9b, 0xd6,
-0x5d, 0x69, 0x1d, 0x5d, 0x67, 0xfa, 0xf6, 0x55,
-0x2e, 0x91, 0xfe, 0xb4, 0xff, 0x0a, 0x43, 0x60,
-0x2f, 0xb3, 0x18, 0x54, 0xc6, 0x01, 0x8f, 0x54,
-0x41, 0x6b, 0x8d, 0x23, 0x94, 0x56, 0x41, 0xfb,
-0xdb, 0x08, 0xab, 0xb0, 0x11, 0x47, 0xaa, 0x0a,
-0x9a, 0xfd, 0x11, 0xbd, 0x2d, 0xa8, 0xb6, 0x02,
-0x00, 0xe8, 0x40, 0x56, 0xd3, 0x81, 0x74, 0xfe,
-0x59, 0xdc, 0x7b, 0xca, 0xe1, 0x70, 0x50, 0xa6,
-0x7a, 0x6a, 0x85, 0x53, 0x9c, 0x2b, 0xb3, 0xdd,
-0x82, 0x94, 0x72, 0x5a, 0x2f, 0xdd, 0x63, 0x53,
-0x81, 0xe7, 0x72, 0xdd, 0x99, 0xd6, 0x86, 0xc7,
-0x2c, 0x9c, 0xac, 0x0c, 0x88, 0xfe, 0x76, 0x37,
-0xff, 0x2d, 0xb6, 0x17, 0xb4, 0xca, 0x38, 0xe0,
-0xed, 0x01, 0x8d, 0x03, 0xf6, 0xbd, 0x0a, 0xda,
-0xaa, 0xdb, 0xc0, 0xdb, 0x6b, 0xa0, 0xda, 0x0a,
-0x00, 0xa0, 0x4b, 0x32, 0x4e, 0x07, 0x57, 0x98,
-0xda, 0xc6, 0x4d, 0x19, 0xee, 0xdd, 0x0e, 0xba,
-0x53, 0xa0, 0x17, 0x6d, 0x5a, 0x7a, 0x97, 0xd5,
-0x5e, 0x6f, 0xfa, 0xf6, 0x55, 0x22, 0x94, 0xb4,
-0x7a, 0x4e, 0xdb, 0xfd, 0xb7, 0x14, 0x55, 0xd0,
-0xaa, 0x8d, 0x38, 0xc2, 0x54, 0x05, 0xbd, 0x7b,
-0x21, 0xbf, 0xe6, 0x24, 0x5a, 0x3a, 0x03, 0x00,
-0xbc, 0x92, 0x88, 0xf2, 0x2e, 0xb5, 0xe5, 0x62,
-0xbb, 0x76, 0xed, 0x5c, 0x80, 0xa4, 0x9f, 0xef,
-0xf0, 0x69, 0x1d, 0x5d, 0x27, 0x47, 0xe4, 0xec,
-0xbf, 0xfa, 0x8d, 0x38, 0xf2, 0xab, 0xa0, 0x85,
-0x29, 0xe8, 0x1d, 0x1a, 0x8d, 0x38, 0xea, 0xd4,
-0x1a, 0x71, 0x1c, 0xd6, 0x48, 0x41, 0xe7, 0x34,
-0xc2, 0x72, 0x6b, 0xc4, 0xf1, 0x3c, 0xaf, 0xce,
-0x6a, 0x3a, 0x80, 0x0c, 0x0c, 0x00, 0xa0, 0x58,
-0xba, 0x9b, 0x78, 0x5f, 0xca, 0x92, 0x6e, 0xe3,
-0xde, 0x2d, 0x48, 0x29, 0x33, 0x2d, 0x1d, 0x55,
-0xbe, 0xdb, 0x4e, 0x18, 0xd5, 0x1d, 0x59, 0xad,
-0x98, 0x48, 0x03, 0x1d, 0xa6, 0xef, 0x5d, 0xc5,
-0x31, 0xd8, 0x93, 0xe3, 0xbf, 0x76, 0x0b, 0xce,
-0x4f, 0x41, 0x8b, 0x42, 0x60, 0x5f, 0x53, 0xd0,
-0xe1, 0xac, 0x82, 0x66, 0x36, 0x4d, 0xcd, 0x35,
-0x16, 0x22, 0x5f, 0x00, 0x80, 0x0f, 0x10, 0xd5,
-0x6f, 0xb1, 0x99, 0xaf, 0x4e, 0xc5, 0xb2, 0xc6,
-0x36, 0xae, 0xc3, 0x4e, 0xee, 0x52, 0xa1, 0xed,
-0x4e, 0xc8, 0xd5, 0x1d, 0x62, 0xd5, 0x61, 0x22,
-0xa1, 0xaf, 0x10, 0x51, 0x6f, 0x4b, 0xc6, 0x7f,
-0x95, 0xaa, 0xa0, 0xbd, 0xa4, 0xa0, 0x45, 0x55,
-0xd0, 0x8d, 0x92, 0x2a, 0xe8, 0xd1, 0x46, 0x58,
-0x6a, 0x55, 0xd0, 0xf6, 0x71, 0x84, 0x7e, 0xa5,
-0xa0, 0x47, 0xfc, 0x77, 0xdf, 0x12, 0xab, 0xbd,
-0x01, 0xe6, 0x0b, 0x00, 0xf0, 0x8d, 0xd8, 0x90,
-0xb5, 0xf3, 0xd9, 0x30, 0x79, 0xae, 0x83, 0xe1,
-0xda, 0xb5, 0xe4, 0x76, 0x16, 0xb6, 0x23, 0x07,
-0xe8, 0x23, 0x7c, 0xe0, 0x6f, 0x57, 0x93, 0x96,
-0xff, 0x16, 0x91, 0x82, 0xf6, 0x69, 0x1c, 0xa1,
-0x6a, 0x23, 0x0e, 0x1f, 0xc6, 0x11, 0x5a, 0xfb,
-0x97, 0x5a, 0xbc, 0xd4, 0x19, 0xe7, 0x8c, 0x00,
-0x00, 0x7e, 0x42, 0xfd, 0x1d, 0xbc, 0x29, 0x96,
-0x3f, 0x3b, 0xb9, 0xa2, 0x6d, 0x5c, 0xc7, 0x9d,
-0x5c, 0x05, 0xab, 0xcd, 0xe8, 0x85, 0xdb, 0x72,
-0xb4, 0xe4, 0x76, 0x7e, 0x0a, 0x15, 0xf8, 0x04,
-0xc5, 0x86, 0x55, 0xfd, 0x57, 0x5c, 0x05, 0xad,
-0xd0, 0x08, 0x4b, 0xb3, 0x11, 0x47, 0x10, 0x55,
-0xd0, 0xde, 0xfc, 0xd7, 0xaa, 0x59, 0x4d, 0xfd,
-0x9d, 0xa6, 0x7f, 0x44, 0x00, 0x80, 0xca, 0x84,
-0x3f, 0x2d, 0x5f, 0x9e, 0xa4, 0x70, 0x4a, 0xc8,
-0xa8, 0xe7, 0xe6, 0x69, 0xdb, 0x1c, 0x54, 0x61,
-0xf9, 0x05, 0x9f, 0x79, 0xc4, 0xfd, 0xb7, 0x49,
-0x6f, 0x0b, 0xb8, 0x54, 0x8d, 0x38, 0x4a, 0x35,
-0x8e, 0xb0, 0x30, 0x05, 0xbd, 0x98, 0xea, 0x36,
-0x58, 0xbc, 0xab, 0x33, 0x00, 0x00, 0x04, 0x43,
-0x32, 0xce, 0x1f, 0x35, 0xc2, 0xc6, 0x53, 0xcb,
-0x64, 0x07, 0x72, 0x97, 0xfa, 0x91, 0x55, 0x5e,
-0x72, 0x7b, 0x56, 0xee, 0xb6, 0xcb, 0x75, 0x2b,
-0x17, 0xfb, 0xa3, 0xfb, 0x30, 0x91, 0xd0, 0x0f,
-0xf8, 0xe6, 0x6f, 0x9b, 0xd5, 0x7d, 0x5a, 0x39,
-0x04, 0xf6, 0x50, 0x05, 0xad, 0xdb, 0x88, 0x43,
-0x58, 0x05, 0xfd, 0x4a, 0x81, 0x05, 0x07, 0xdb,
-0x88, 0xc3, 0xaa, 0xdf, 0x62, 0x0d, 0xf7, 0x9a,
-0xfe, 0xf1, 0x00, 0x00, 0x2a, 0x9d, 0x81, 0x2e,
-0xde, 0x14, 0xab, 0xa8, 0x6d, 0xdc, 0xe0, 0x3d,
-0x37, 0xad, 0x5b, 0xd2, 0xaa, 0x59, 0x6b, 0xfa,
-0xae, 0x55, 0x02, 0x94, 0x4c, 0x5a, 0x3d, 0x67,
-0x52, 0x87, 0x7f, 0x99, 0xff, 0x9e, 0x52, 0x0e,
-0x81, 0x7d, 0x4a, 0x41, 0xfb, 0xd0, 0x88, 0x63,
-0x83, 0xef, 0x29, 0x68, 0x3e, 0xc6, 0xb7, 0x7e,
-0xab, 0x15, 0x19, 0x30, 0xfd, 0xc3, 0x01, 0x00,
-0x54, 0x07, 0x2d, 0xb5, 0xbc, 0x0a, 0xda, 0xaf,
-0x53, 0x42, 0x52, 0xdb, 0x95, 0x7b, 0xee, 0x6d,
-0x02, 0xcf, 0xb5, 0x6b, 0xf5, 0x83, 0x14, 0x8f,
-0x99, 0xbe, 0x6b, 0x65, 0x0f, 0xc5, 0x86, 0x98,
-0xf9, 0x8e, 0xfa, 0xaf, 0x7a, 0x0a, 0x5a, 0xd4,
-0x08, 0x2b, 0xf0, 0x71, 0x84, 0x3e, 0x9d, 0x42,
-0x72, 0x4f, 0x41, 0x1f, 0x78, 0x91, 0x85, 0xe1,
-0x16, 0xe6, 0x19, 0x01, 0x00, 0x4a, 0x06, 0x25,
-0x79, 0x13, 0xfb, 0x65, 0x77, 0xf9, 0xbc, 0x8d,
-0x2b, 0xdd, 0xc9, 0xcd, 0x91, 0xc8, 0x67, 0x9d,
-0xb4, 0xe4, 0x56, 0x6a, 0x6f, 0x30, 0x7d, 0xd7,
-0xca, 0x1e, 0xde, 0x47, 0x71, 0xc4, 0x7f, 0xbb,
-0x5d, 0xfd, 0xd7, 0xe7, 0x46, 0x1c, 0xc2, 0x2a,
-0xac, 0x00, 0x1a, 0x71, 0xa4, 0x2d, 0x58, 0xb9,
-0x11, 0x07, 0xfb, 0xcf, 0xa6, 0x7d, 0xa8, 0xae,
-0x07, 0x00, 0x94, 0x18, 0x16, 0x4e, 0xd2, 0x96,
-0xd9, 0xde, 0x63, 0x5b, 0xbd, 0xf0, 0xd6, 0x35,
-0xb6, 0x75, 0xd2, 0x62, 0xbb, 0xc6, 0xd3, 0xae,
-0x05, 0xe8, 0xc1, 0x5b, 0x24, 0x34, 0xd8, 0x39,
-0xe2, 0xbf, 0xe2, 0x14, 0xb4, 0xbf, 0x55, 0xd0,
-0x2a, 0xa7, 0x90, 0x0c, 0x56, 0x41, 0x1f, 0x5c,
-0x41, 0xcd, 0x87, 0x29, 0x81, 0xa4, 0x0a, 0x00,
-0xc0, 0x00, 0xd4, 0x79, 0x92, 0xcf, 0x62, 0xf0,
-0xb6, 0x8d, 0x2b, 0xb7, 0x5d, 0xd1, 0x36, 0xae,
-0x9e, 0xed, 0x8e, 0xcf, 0x6a, 0xd1, 0x38, 0x9e,
-0x21, 0x8f, 0xf4, 0x9b, 0xbe, 0x67, 0x65, 0x0c,
-0x25, 0x93, 0x7c, 0x88, 0x4f, 0x8e, 0xff, 0x2a,
-0x86, 0xc0, 0xa3, 0x07, 0x81, 0x3d, 0x54, 0x41,
-0x17, 0xd5, 0x88, 0x23, 0xa8, 0x14, 0x34, 0xff,
-0xf7, 0x96, 0xa3, 0x16, 0xcc, 0x17, 0x00, 0x60,
-0x0a, 0x22, 0xfe, 0x34, 0x93, 0x3a, 0xaf, 0x8f,
-0xdb, 0xb8, 0x6e, 0x11, 0xee, 0xa8, 0x16, 0x8d,
-0x1f, 0xd5, 0xb8, 0x5c, 0xdd, 0x4c, 0x27, 0x76,
-0x99, 0xbe, 0x65, 0x65, 0x0c, 0x9f, 0x07, 0x9d,
-0x2a, 0xbe, 0x12, 0xfa, 0xaf, 0xf7, 0x46, 0x1c,
-0x4a, 0x5b, 0xc0, 0x61, 0x6a, 0xc4, 0x71, 0x70,
-0x59, 0xaa, 0xbd, 0x15, 0xd2, 0xce, 0x00, 0x00,
-0xa3, 0x44, 0x87, 0x68, 0xcb, 0xac, 0xe2, 0xb6,
-0x71, 0x35, 0x77, 0x72, 0xc5, 0x9e, 0x3b, 0xce,
-0x41, 0x37, 0xe7, 0x68, 0xe3, 0x0c, 0x5e, 0xc1,
-0x0b, 0x3c, 0x41, 0x91, 0x7e, 0xbb, 0xff, 0xba,
-0x84, 0xc0, 0x1e, 0x1a, 0x61, 0x69, 0xa4, 0xa0,
-0xc5, 0x55, 0xd0, 0x8a, 0xe3, 0x80, 0x8b, 0x4e,
-0x41, 0x1f, 0x5e, 0x69, 0xb1, 0x95, 0xe2, 0x53,
-0x04, 0x00, 0x08, 0x03, 0x7d, 0xed, 0xbc, 0x16,
-0x3a, 0xb4, 0x9e, 0x3b, 0xa2, 0x85, 0x37, 0x71,
-0x2d, 0x1e, 0x4f, 0x5d, 0xa7, 0x4c, 0xdf, 0xaf,
-0xb2, 0x65, 0xa0, 0x9b, 0xf9, 0xaf, 0x4b, 0x08,
-0xac, 0x54, 0x05, 0xed, 0x25, 0x05, 0x5d, 0xcc,
-0x38, 0x42, 0xb5, 0x5e, 0xd0, 0x35, 0x6b, 0x95,
-0x52, 0xd0, 0x35, 0x6b, 0xb9, 0xf9, 0x02, 0x00,
-0x40, 0x78, 0x38, 0xbe, 0x8d, 0x67, 0xa1, 0xe5,
-0xdb, 0xb8, 0x3e, 0xed, 0xe4, 0xea, 0xda, 0xae,
-0x5d, 0xfb, 0x96, 0x98, 0xbe, 0x59, 0xe5, 0x09,
-0x91, 0xd5, 0xdf, 0xae, 0xe7, 0xbf, 0x3e, 0xa7,
-0xa0, 0x73, 0x1b, 0x71, 0xa8, 0x36, 0xc2, 0xf2,
-0x30, 0x0e, 0xd8, 0xa1, 0x11, 0x07, 0xfb, 0xd5,
-0xae, 0x26, 0x34, 0x52, 0x03, 0x00, 0x84, 0x8b,
-0xd8, 0x30, 0x6d, 0x7f, 0xc6, 0xef, 0x8a, 0xe5,
-0x5b, 0x64, 0x9e, 0x2b, 0x32, 0x5c, 0xa1, 0xe7,
-0xda, 0xb5, 0xec, 0x5e, 0x2b, 0x3a, 0x64, 0xfa,
-0x7e, 0x95, 0x1f, 0x23, 0xc5, 0x57, 0xd4, 0xd3,
-0x9c, 0x93, 0x82, 0xee, 0x76, 0x6c, 0xc4, 0xa1,
-0xd6, 0x08, 0xcb, 0x7d, 0x1c, 0xe1, 0x01, 0xd5,
-0x2d, 0x60, 0x5b, 0x23, 0x2c, 0x85, 0x71, 0x84,
-0x1b, 0x3d, 0x54, 0x61, 0xf1, 0x5f, 0xea, 0x86,
-0xf9, 0x02, 0x00, 0x42, 0x09, 0x8b, 0x8c, 0x5e,
-0x9e, 0xac, 0x61, 0xbb, 0xc2, 0x94, 0x72, 0x4e,
-0xf5, 0xd4, 0x78, 0xed, 0xd8, 0xd6, 0x45, 0x7f,
-0xbc, 0x31, 0xad, 0x85, 0x37, 0xb2, 0x27, 0xb9,
-0xe9, 0x9b, 0x55, 0x86, 0x24, 0x62, 0xd4, 0xd3,
-0x92, 0x52, 0xb1, 0x21, 0xb0, 0xc4, 0x7f, 0xfd,
-0x4b, 0x41, 0xfb, 0x36, 0x0e, 0xb8, 0x66, 0x95,
-0xd5, 0xd3, 0x8c, 0x91, 0x46, 0x00, 0x80, 0x90,
-0x42, 0xc4, 0x9f, 0x7e, 0x1e, 0x3d, 0xb7, 0x88,
-0x7c, 0xb2, 0x9b, 0xe7, 0xde, 0x20, 0xd6, 0xe6,
-0x59, 0x84, 0x40, 0x46, 0x13, 0x8a, 0x0e, 0x52,
-0x5f, 0xab, 0xd4, 0x7f, 0xc3, 0x5e, 0x05, 0xad,
-0x98, 0x82, 0x4e, 0x5b, 0x70, 0xca, 0x7c, 0x6b,
-0xd7, 0x59, 0x7d, 0xad, 0xa6, 0x6f, 0x3f, 0x00,
-0x00, 0x48, 0xa0, 0x9d, 0x0b, 0xc2, 0x6b, 0xbb,
-0x7f, 0xbc, 0x3e, 0x2d, 0xf6, 0x7b, 0xf0, 0x44,
-0xd5, 0x84, 0x86, 0x7a, 0x47, 0xfd, 0xb7, 0x59,
-0x54, 0x05, 0xad, 0xd0, 0x88, 0x43, 0xa1, 0x11,
-0x96, 0xf7, 0x46, 0x1c, 0x8a, 0x8d, 0xb0, 0x8e,
-0x69, 0x36, 0xc2, 0xaa, 0xdb, 0x48, 0xbd, 0xad,
-0x48, 0x3b, 0x03, 0x00, 0xc2, 0x0f, 0x1f, 0x10,
-0xbc, 0x62, 0x92, 0xa0, 0xf7, 0x94, 0x2f, 0xa5,
-0x53, 0x02, 0xdd, 0x98, 0x96, 0xd4, 0x73, 0x99,
-0x9e, 0x1f, 0xd5, 0x73, 0xd7, 0xd1, 0xa1, 0x15,
-0xa6, 0x6f, 0x55, 0x59, 0xc1, 0x0c, 0x68, 0xa0,
-0x6b, 0xd4, 0x7f, 0x03, 0x48, 0x41, 0x2b, 0x8d,
-0x23, 0x54, 0x9d, 0xc5, 0xe0, 0xbd, 0x11, 0x47,
-0x6d, 0x6e, 0x15, 0xf4, 0xd1, 0x8d, 0xa9, 0xc8,
-0x17, 0xe6, 0x0b, 0x00, 0x28, 0x0f, 0xf8, 0x23,
-0xce, 0x71, 0x1b, 0xd7, 0xd7, 0x9d, 0xdc, 0x3f,
-0xde, 0xe8, 0x68, 0xb5, 0x59, 0xcf, 0xbd, 0x2e,
-0xab, 0xe7, 0x6c, 0x5a, 0x33, 0x95, 0x12, 0xe8,
-0x9f, 0xa0, 0x0c, 0x25, 0xf9, 0x29, 0x33, 0xe6,
-0xbf, 0xbd, 0x3e, 0xa5, 0xa0, 0x85, 0xa7, 0x90,
-0x84, 0xbd, 0xa0, 0x95, 0x1a, 0x61, 0x49, 0x53,
-0xd0, 0x6a, 0xa7, 0x90, 0xec, 0x21, 0x30, 0xfb,
-0xf7, 0xde, 0x16, 0x98, 0x2f, 0x00, 0xa0, 0x8c,
-0xe0, 0x1b, 0x85, 0x9b, 0x66, 0x14, 0x5b, 0xa5,
-0xac, 0xe4, 0xb9, 0x22, 0xc3, 0x75, 0xf4, 0xdc,
-0x6b, 0x73, 0xc4, 0x5e, 0xde, 0x7d, 0xda, 0xf4,
-0xad, 0x2a, 0x1f, 0x12, 0x51, 0xab, 0xaf, 0x8d,
-0xfb, 0xaf, 0x2d, 0x04, 0xf6, 0xd2, 0x88, 0x23,
-0x74, 0xbd, 0xa0, 0x1d, 0xc6, 0x11, 0xd6, 0xae,
-0x4d, 0x15, 0x5c, 0xc1, 0x7c, 0x01, 0x00, 0x65,
-0x06, 0xef, 0x0b, 0xbd, 0xe4, 0xb6, 0xc0, 0x76,
-0x72, 0x1d, 0x6c, 0xf7, 0xb9, 0xeb, 0x44, 0xba,
-0xc6, 0x51, 0xfb, 0x97, 0x9a, 0xbe, 0x4f, 0x65,
-0x03, 0x1f, 0x3b, 0x58, 0xe0, 0xbf, 0xc5, 0x36,
-0xe2, 0x08, 0xed, 0x38, 0xe0, 0xba, 0x0d, 0x7c,
-0xc6, 0x31, 0xcc, 0x17, 0x00, 0x50, 0x9e, 0x50,
-0xcd, 0xea, 0x74, 0xf0, 0xeb, 0x6f, 0xe9, 0x94,
-0xdc, 0x70, 0x5d, 0x3d, 0xd7, 0xae, 0xa5, 0x77,
-0x12, 0xc6, 0xb6, 0xaa, 0xc1, 0xc7, 0x0e, 0xf6,
-0xb5, 0xa5, 0x2d, 0xb8, 0xd7, 0xa7, 0x2d, 0x60,
-0x8d, 0x46, 0x58, 0x07, 0xdc, 0x1a, 0x71, 0xa8,
-0x8e, 0x03, 0x56, 0xab, 0x82, 0x66, 0xff, 0x9f,
-0x5d, 0x39, 0xcc, 0x17, 0x00, 0x50, 0xb6, 0xf0,
-0x2c, 0xf4, 0x9a, 0x87, 0x94, 0x4a, 0xa7, 0x54,
-0xaa, 0xa7, 0x9e, 0xcf, 0xad, 0x9e, 0x12, 0x67,
-0x95, 0xd5, 0x6c, 0x37, 0xa3, 0x05, 0xd7, 0xd0,
-0xe9, 0x43, 0xa6, 0xef, 0x53, 0x99, 0x30, 0xd8,
-0x93, 0xf5, 0x5f, 0xd1, 0x29, 0xa4, 0xd1, 0x46,
-0x1c, 0x27, 0xbd, 0x36, 0xe2, 0xf0, 0xab, 0x0a,
-0x7a, 0x87, 0x46, 0x15, 0x74, 0x5d, 0x41, 0x15,
-0x34, 0xfb, 0x4f, 0x6e, 0xbe, 0x09, 0xd3, 0xb7,
-0x1b, 0x00, 0x00, 0x8a, 0x82, 0x5a, 0x6a, 0x79,
-0x21, 0xb4, 0xef, 0xa5, 0x53, 0x5a, 0x9e, 0xbb,
-0xc0, 0x59, 0xcf, 0x5e, 0xcd, 0xe7, 0x17, 0x23,
-0xd2, 0x51, 0x80, 0x06, 0xba, 0xad, 0xfe, 0xf6,
-0x5c, 0xff, 0x6d, 0x16, 0x85, 0xc0, 0x82, 0x46,
-0x58, 0xde, 0xab, 0xa0, 0x8b, 0x4b, 0x41, 0x7b,
-0x69, 0xc4, 0xd1, 0xd1, 0x60, 0x25, 0x61, 0xbe,
-0x00, 0x80, 0xf2, 0x27, 0x99, 0xa4, 0xdd, 0x7f,
-0xcc, 0xb5, 0x5d, 0x85, 0xac, 0xb2, 0xd8, 0x73,
-0xaf, 0xd3, 0x8b, 0x73, 0xdd, 0x6d, 0x37, 0xad,
-0xab, 0x78, 0x7a, 0x7c, 0xa8, 0xd7, 0xf4, 0x6d,
-0x0a, 0x3d, 0xbc, 0xf3, 0x73, 0xc7, 0x88, 0xff,
-0xa6, 0x2d, 0x58, 0x61, 0x0b, 0x38, 0xe0, 0x46,
-0x1c, 0xbb, 0x3d, 0xa5, 0xa0, 0x9d, 0xfd, 0xb7,
-0x6e, 0x03, 0xbb, 0x24, 0x98, 0x2f, 0x00, 0xa0,
-0x62, 0xa0, 0xa1, 0x3e, 0x7a, 0x79, 0x52, 0xe0,
-0x3b, 0xb9, 0x72, 0xcf, 0xbd, 0xca, 0x41, 0xbf,
-0xe5, 0x67, 0x3c, 0x81, 0x2b, 0x94, 0x8c, 0xe7,
-0xfb, 0xaf, 0x7a, 0x23, 0x0e, 0xf1, 0x38, 0x42,
-0x79, 0x0a, 0x3a, 0xdf, 0x7f, 0xb5, 0xab, 0xa0,
-0x15, 0x53, 0xd0, 0x29, 0x0b, 0xae, 0xdb, 0x48,
-0x2d, 0x47, 0xb1, 0xe7, 0x0b, 0x00, 0xa8, 0x30,
-0xf8, 0x63, 0x73, 0xd1, 0x38, 0xd9, 0x4e, 0x6e,
-0x71, 0xdb, 0xb8, 0x39, 0xba, 0x3a, 0x2b, 0x27,
-0xcf, 0xb5, 0x6b, 0xd5, 0x03, 0x88, 0x7a, 0x24,
-0xc4, 0x23, 0x0e, 0xfe, 0x5b, 0xf2, 0x53, 0x48,
-0xe9, 0x14, 0xb4, 0xe8, 0x20, 0xb0, 0xb4, 0x0a,
-0xba, 0xde, 0xc9, 0x7f, 0x37, 0xb2, 0x3f, 0x91,
-0x12, 0x31, 0xd3, 0x77, 0x19, 0x00, 0x00, 0x7c,
-0x86, 0x92, 0x09, 0xde, 0x6f, 0x39, 0x40, 0xcf,
-0xbd, 0x5a, 0xdb, 0x73, 0x33, 0x9a, 0x7f, 0x25,
-0x2d, 0xb8, 0x0a, 0x13, 0x81, 0xdd, 0xa1, 0xe8,
-0x50, 0xda, 0x7f, 0x83, 0x48, 0x41, 0x7b, 0x69,
-0xc4, 0x21, 0x4c, 0x41, 0x2b, 0x8e, 0x23, 0x2c,
-0x68, 0xc4, 0x71, 0xfa, 0xa0, 0x15, 0x1b, 0x36,
-0x7d, 0x8f, 0x01, 0x00, 0x20, 0x10, 0x78, 0x4e,
-0x72, 0xc9, 0xed, 0x5e, 0xb6, 0x71, 0x5d, 0xb2,
-0xca, 0xf6, 0x6d, 0x5c, 0x45, 0xab, 0x75, 0x12,
-0x26, 0x02, 0xbb, 0x42, 0x91, 0x01, 0x81, 0xff,
-0x0a, 0xab, 0xa0, 0x7b, 0x44, 0x55, 0xd0, 0x42,
-0xff, 0x55, 0x08, 0x81, 0x8b, 0x4e, 0x41, 0xcb,
-0x4e, 0x21, 0x31, 0x35, 0xee, 0x81, 0xf9, 0x02,
-0x00, 0x2a, 0x19, 0x4a, 0xd2, 0xc1, 0x65, 0x3e,
-0xec, 0xe4, 0xba, 0x6c, 0xe3, 0xea, 0x7a, 0xae,
-0x5d, 0xfc, 0x20, 0x30, 0xd2, 0x8f, 0x8e, 0xd0,
-0x50, 0x5f, 0xca, 0x7f, 0x8b, 0x4a, 0x41, 0x3b,
-0x34, 0xe2, 0x50, 0x18, 0x47, 0x18, 0x5c, 0x15,
-0x74, 0xe3, 0x4e, 0x8a, 0x0d, 0x9a, 0xbe, 0xbb,
-0x00, 0x00, 0x10, 0x2c, 0x14, 0x8b, 0xf0, 0x96,
-0xcb, 0xfe, 0x96, 0x4e, 0x15, 0xe3, 0xb9, 0x19,
-0xcd, 0xbb, 0x9c, 0xe6, 0x5d, 0xc1, 0x6b, 0x5f,
-0x81, 0x10, 0x22, 0x7e, 0xf8, 0x37, 0xe3, 0xbf,
-0x76, 0x0b, 0x16, 0x36, 0xe2, 0xe8, 0xd6, 0x4e,
-0x41, 0x97, 0xbc, 0x11, 0x47, 0x2a, 0x05, 0xdd,
-0xb8, 0xdb, 0x42, 0xe9, 0x3b, 0x00, 0xa0, 0x3a,
-0xe0, 0x0f, 0xdb, 0x45, 0x37, 0x17, 0x57, 0x3a,
-0xe5, 0x60, 0xbb, 0x4a, 0x56, 0x7b, 0x45, 0x8e,
-0xb8, 0xed, 0xda, 0xb4, 0x6b, 0x81, 0xe9, 0xdb,
-0x13, 0x56, 0x52, 0x93, 0x8f, 0xc4, 0xfe, 0xeb,
-0x56, 0x05, 0xad, 0xe2, 0xbf, 0x41, 0x56, 0x41,
-0xbb, 0x8f, 0x23, 0x3c, 0xb1, 0xd3, 0x1a, 0xec,
-0x42, 0xc1, 0x33, 0x00, 0xa0, 0x4a, 0x20, 0x4a,
-0xd2, 0x8e, 0x67, 0x45, 0x41, 0x6e, 0x70, 0x9e,
-0x7b, 0xa5, 0xa3, 0xe1, 0xe6, 0xe8, 0x32, 0xbe,
-0x3d, 0x1d, 0x1d, 0x32, 0x7d, 0x87, 0xc2, 0x08,
-0x25, 0x93, 0x34, 0xd0, 0x39, 0xea, 0xbf, 0x59,
-0x0b, 0x96, 0xa5, 0xa0, 0x9d, 0x1b, 0x71, 0x48,
-0xb6, 0x80, 0x45, 0x29, 0x68, 0x7f, 0xc7, 0x11,
-0xd6, 0x6f, 0xa3, 0xfe, 0x36, 0x0c, 0x36, 0x02,
-0x00, 0x54, 0x15, 0xc4, 0x9e, 0xdb, 0x4b, 0xef,
-0xcc, 0xad, 0x9e, 0xba, 0x3a, 0x80, 0x94, 0xf2,
-0x15, 0x36, 0x15, 0x58, 0x6d, 0xa1, 0xe6, 0x5e,
-0x4a, 0x73, 0x2f, 0xa7, 0xa6, 0x03, 0xa6, 0x6f,
-0x4f, 0x18, 0xe1, 0xe5, 0xeb, 0xd9, 0xf8, 0xd7,
-0x4b, 0x15, 0xb4, 0x4a, 0x23, 0xac, 0x52, 0x36,
-0xe2, 0xb0, 0xba, 0x4e, 0xf3, 0x71, 0x8a, 0x00,
-0x00, 0x50, 0x55, 0x10, 0xf1, 0x76, 0x07, 0x41,
-0x6d, 0xe3, 0x3a, 0xc4, 0xb6, 0x42, 0x3d, 0x73,
-0x69, 0xbe, 0xb6, 0xcc, 0x42, 0x2f, 0x4a, 0x01,
-0x89, 0xa8, 0x9b, 0xff, 0x96, 0x57, 0x15, 0x74,
-0xc3, 0x56, 0xab, 0xfd, 0x38, 0xd2, 0xce, 0x00,
-0x80, 0xea, 0x84, 0xc7, 0x53, 0x6b, 0x1f, 0x0e,
-0x91, 0xed, 0xa6, 0x75, 0x31, 0xff, 0x32, 0x10,
-0x19, 0x30, 0x7d, 0x7b, 0xc2, 0x47, 0x3c, 0x92,
-0xf2, 0xdf, 0xdc, 0x14, 0xb4, 0xcf, 0x55, 0xd0,
-0x9e, 0x67, 0x31, 0x08, 0x1b, 0x71, 0x08, 0x0e,
-0x02, 0xa7, 0x37, 0x7f, 0x5b, 0x8e, 0x5a, 0xc9,
-0xb8, 0xe9, 0x1b, 0x0a, 0x00, 0x00, 0xc6, 0xe0,
-0x4f, 0xdd, 0x85, 0x37, 0x06, 0xb0, 0x93, 0x9b,
-0x97, 0x55, 0x1e, 0x55, 0xbe, 0xd5, 0x5e, 0x32,
-0xaa, 0x8b, 0xf3, 0x75, 0x6c, 0x93, 0xe9, 0x7b,
-0x13, 0x3a, 0x28, 0x3a, 0xc4, 0xfc, 0xd7, 0x2d,
-0x04, 0xee, 0x15, 0x84, 0xc0, 0x5e, 0xc6, 0x11,
-0xba, 0xcf, 0x62, 0x70, 0x4b, 0x41, 0xab, 0x55,
-0x41, 0x9f, 0x41, 0x9f, 0x0d, 0x00, 0x40, 0xd5,
-0x43, 0x44, 0x3b, 0xe7, 0x17, 0xb7, 0x93, 0xeb,
-0x10, 0xde, 0xf2, 0x9d, 0xdc, 0x51, 0x89, 0x3d,
-0x57, 0x64, 0xbb, 0x19, 0xad, 0x99, 0x42, 0xe8,
-0x45, 0x99, 0x0b, 0x45, 0x06, 0x0b, 0xfc, 0x57,
-0x18, 0x02, 0x07, 0xd8, 0x08, 0xab, 0x20, 0x04,
-0x3e, 0xa0, 0x9a, 0x82, 0xce, 0xf8, 0x2f, 0xf3,
-0x68, 0x24, 0x37, 0x00, 0x00, 0x80, 0x3d, 0xd5,
-0x7b, 0x5b, 0x68, 0xf1, 0x38, 0x99, 0xe1, 0x96,
-0xc4, 0x73, 0x33, 0x9a, 0x73, 0x31, 0x3d, 0x7b,
-0x25, 0xf5, 0xb5, 0x9b, 0xbe, 0x37, 0xe1, 0x82,
-0x22, 0xfd, 0xd6, 0x60, 0x8f, 0x82, 0xff, 0xfa,
-0x9b, 0x82, 0x56, 0x68, 0xc4, 0x21, 0xf4, 0x5f,
-0x61, 0x15, 0xf4, 0x89, 0x5d, 0xbc, 0x85, 0x08,
-0x00, 0x00, 0x00, 0x2b, 0x15, 0x02, 0x1f, 0x59,
-0xad, 0xb0, 0x8d, 0xeb, 0x60, 0xbb, 0x8e, 0xdb,
-0xb8, 0x97, 0x2a, 0x59, 0x6d, 0x9e, 0xed, 0xda,
-0x75, 0x68, 0x85, 0xe9, 0x5b, 0x13, 0x2e, 0x32,
-0xfe, 0x2b, 0x4c, 0x41, 0xe7, 0xf9, 0xaf, 0xcf,
-0x29, 0x68, 0x95, 0x46, 0x58, 0xc2, 0x2a, 0x68,
-0xbb, 0xff, 0x32, 0xf3, 0xed, 0xc7, 0x77, 0x2a,
-0x00, 0x00, 0xc8, 0x42, 0xc9, 0x38, 0x2d, 0xbf,
-0xcf, 0x80, 0xe7, 0xce, 0x71, 0xd6, 0xd3, 0x63,
-0x68, 0xc9, 0x1d, 0x18, 0x87, 0x64, 0x87, 0xcf,
-0x47, 0x76, 0xf6, 0x5f, 0xb7, 0x14, 0x74, 0xba,
-0x11, 0xd6, 0x29, 0x8d, 0x14, 0xb4, 0xc6, 0x29,
-0x24, 0xc5, 0x14, 0xf4, 0x4e, 0xab, 0xf3, 0x24,
-0x0a, 0x9e, 0x01, 0x00, 0x20, 0x0f, 0xbe, 0x2b,
-0xb7, 0xe0, 0x6a, 0x81, 0xed, 0xce, 0x75, 0xaa,
-0x9e, 0xba, 0x44, 0x3b, 0xab, 0x2c, 0xb6, 0xdd,
-0xb1, 0x59, 0x31, 0xcf, 0xb5, 0x8b, 0xfd, 0x6a,
-0xc7, 0x71, 0xd3, 0x37, 0x26, 0x34, 0x50, 0x92,
-0x37, 0x9f, 0xe4, 0xea, 0x16, 0xa4, 0xa0, 0xf3,
-0x43, 0xe0, 0x66, 0xc5, 0x10, 0xb8, 0xe0, 0x14,
-0x92, 0xb0, 0x11, 0x96, 0x7a, 0x08, 0xec, 0x38,
-0x8e, 0xd0, 0x6a, 0xad, 0xb3, 0x12, 0x28, 0x78,
-0x06, 0x00, 0x80, 0x02, 0x12, 0x31, 0xda, 0x38,
-0xc3, 0xff, 0x6d, 0x5c, 0x71, 0x6c, 0x3b, 0xd6,
-0x26, 0xbb, 0xe7, 0x5e, 0x94, 0xaf, 0x9d, 0xcf,
-0x9a, 0xbe, 0x2f, 0x61, 0x81, 0x57, 0xa3, 0xa5,
-0xfd, 0x77, 0x24, 0x04, 0x16, 0x34, 0xc2, 0xf2,
-0xb7, 0x11, 0x47, 0x11, 0x55, 0xd0, 0xf9, 0xfe,
-0x6b, 0x35, 0x1d, 0x40, 0xc1, 0x33, 0x00, 0x00,
-0x38, 0xc1, 0x9f, 0xba, 0xf3, 0xaf, 0x28, 0xf0,
-0x5c, 0xd7, 0x53, 0x42, 0x1e, 0x6d, 0x77, 0x8c,
-0xc4, 0x76, 0x47, 0x34, 0xfb, 0x42, 0xde, 0x8b,
-0x12, 0xa7, 0x44, 0x53, 0x14, 0xf8, 0xaf, 0x66,
-0x0a, 0xda, 0x43, 0x15, 0xb4, 0x7a, 0x23, 0x0e,
-0x77, 0xff, 0x65, 0xff, 0x07, 0x05, 0xcf, 0x00,
-0x00, 0xe0, 0x0c, 0x6f, 0xc7, 0xb1, 0x6d, 0x8e,
-0x3f, 0xa5, 0x53, 0xf6, 0x6d, 0x5c, 0xb1, 0x9c,
-0x3d, 0xd7, 0x2e, 0xf6, 0x3b, 0x3b, 0x4f, 0x98,
-0xbe, 0x31, 0xe1, 0x20, 0x11, 0xb5, 0xf9, 0xaf,
-0x28, 0x05, 0xad, 0x34, 0x8b, 0x41, 0x25, 0x05,
-0xed, 0x6b, 0x23, 0xac, 0x53, 0x7b, 0x89, 0x5d,
-0x18, 0x00, 0x00, 0x00, 0x57, 0x78, 0x60, 0xb5,
-0x68, 0x9c, 0xff, 0x3b, 0xb9, 0xba, 0xb6, 0x6b,
-0xd7, 0x8e, 0x79, 0xa6, 0xef, 0x4a, 0x38, 0xb0,
-0xf9, 0xef, 0xe8, 0x29, 0x24, 0x79, 0x23, 0x2c,
-0xff, 0x52, 0xd0, 0x0a, 0x8d, 0xb0, 0x9a, 0x0a,
-0x1b, 0x61, 0xed, 0xb1, 0xd8, 0x9f, 0x88, 0x0e,
-0xcf, 0x00, 0x00, 0xa0, 0x00, 0xd5, 0xae, 0x4f,
-0xa5, 0xa0, 0x8d, 0x7a, 0x6e, 0x56, 0xbf, 0xa1,
-0x85, 0x37, 0x62, 0xeb, 0x90, 0x93, 0x88, 0xd2,
-0x50, 0x8f, 0x73, 0x0a, 0xba, 0x43, 0xda, 0x08,
-0xcb, 0xea, 0x56, 0x1f, 0x47, 0x28, 0x6f, 0xc4,
-0x51, 0x10, 0x02, 0x0b, 0xc6, 0x01, 0x5b, 0x6d,
-0xf5, 0x56, 0x22, 0x66, 0xfa, 0xc6, 0x01, 0x00,
-0x40, 0x99, 0x10, 0x1d, 0xa2, 0x95, 0xbf, 0xf7,
-0x54, 0x3d, 0xe5, 0x60, 0xb5, 0x4a, 0x3e, 0x6b,
-0xd3, 0x53, 0xbf, 0xb1, 0xe9, 0xd7, 0xfc, 0xff,
-0x60, 0x1c, 0x92, 0x95, 0xef, 0xbf, 0x45, 0x34,
-0xe2, 0x38, 0xe9, 0x4b, 0x0a, 0xda, 0x35, 0x04,
-0xe6, 0x29, 0x68, 0x8b, 0xfd, 0x1f, 0x7c, 0x71,
-0x02, 0x00, 0x00, 0x1d, 0xe8, 0xcc, 0x11, 0x9f,
-0xb7, 0x71, 0x95, 0x6c, 0xf7, 0xd7, 0x0e, 0xfa,
-0x15, 0x6d, 0x7a, 0x02, 0xe3, 0x90, 0x46, 0xfc,
-0xd7, 0x35, 0x04, 0x2e, 0x49, 0x23, 0x0e, 0x95,
-0x2a, 0x68, 0xe6, 0xbf, 0xa7, 0xf6, 0x5b, 0x83,
-0xbd, 0xa6, 0x6f, 0x19, 0x00, 0x00, 0x94, 0x1b,
-0xcc, 0xed, 0xd6, 0x4c, 0x0d, 0xdc, 0x73, 0x1d,
-0x0d, 0x37, 0xe5, 0xb9, 0x76, 0xcd, 0x19, 0x4b,
-0xc3, 0xfd, 0xa6, 0x6f, 0x8a, 0x61, 0x58, 0x2c,
-0xa9, 0xe8, 0xbf, 0xa3, 0x29, 0x68, 0x91, 0xff,
-0x76, 0xab, 0x57, 0x41, 0x0b, 0x0f, 0x02, 0x2b,
-0x37, 0xe2, 0xe8, 0x69, 0x46, 0xab, 0x0d, 0x00,
-0x00, 0xf0, 0x00, 0x7f, 0xfc, 0xce, 0xbf, 0xd2,
-0xcf, 0x6d, 0xdc, 0x8c, 0x54, 0x3c, 0x77, 0x96,
-0x4d, 0x4f, 0x5e, 0xc0, 0x55, 0xb7, 0xd1, 0xf4,
-0x2d, 0x31, 0x0c, 0xc5, 0x86, 0x0a, 0xfc, 0xb7,
-0x5b, 0xe1, 0x14, 0x92, 0xb0, 0x0a, 0xfa, 0x54,
-0xb0, 0x55, 0xd0, 0xed, 0xf5, 0x84, 0x56, 0x1b,
-0x00, 0x00, 0xe0, 0x09, 0x7e, 0x16, 0x69, 0xcb,
-0xec, 0xa2, 0x43, 0x5d, 0x1d, 0xcf, 0x7d, 0xaa,
-0xc0, 0x73, 0xb3, 0xfa, 0x25, 0xad, 0x9c, 0x6c,
-0x55, 0x77, 0x19, 0x2d, 0x1f, 0x3e, 0x38, 0xd4,
-0x5b, 0xb8, 0x05, 0xec, 0x73, 0x23, 0x8e, 0x7c,
-0xff, 0xd5, 0x4f, 0x41, 0xb3, 0x5f, 0x8d, 0x0d,
-0x99, 0xbe, 0x5b, 0x00, 0x00, 0x50, 0xc6, 0xf0,
-0xd0, 0x69, 0xc1, 0xd5, 0xc5, 0x56, 0x4f, 0x39,
-0x59, 0x6d, 0xd6, 0x73, 0x2f, 0xc8, 0x2a, 0xcf,
-0x73, 0xb3, 0xfa, 0x05, 0xcd, 0x19, 0x43, 0x7d,
-0x2d, 0xa6, 0x6f, 0x89, 0x49, 0x52, 0xfe, 0xdb,
-0xa7, 0x97, 0x82, 0x2e, 0x7d, 0x23, 0x0e, 0xa6,
-0xa1, 0x6e, 0xd3, 0xb7, 0x0a, 0x00, 0x00, 0xca,
-0x1c, 0x22, 0xda, 0xfd, 0x5c, 0xb1, 0xa5, 0x53,
-0x42, 0xe5, 0x87, 0xb7, 0x19, 0xfd, 0xc2, 0x4d,
-0x87, 0x96, 0x9b, 0xbe, 0x23, 0x26, 0x11, 0xfa,
-0xaf, 0x5a, 0x15, 0xf4, 0x99, 0x52, 0x55, 0x41,
-0x1f, 0x62, 0x7f, 0x1c, 0xb6, 0x7d, 0x01, 0x00,
-0xa0, 0x78, 0x28, 0xd2, 0x4f, 0xcf, 0x5f, 0x57,
-0x6c, 0xf5, 0x54, 0x91, 0xb6, 0x9b, 0xd1, 0xc2,
-0x9b, 0xab, 0x79, 0x1c, 0x12, 0x45, 0x07, 0x53,
-0xfe, 0xdb, 0x27, 0xf2, 0x5f, 0x79, 0x23, 0x8e,
-0x12, 0x8c, 0x03, 0xb6, 0xd8, 0x6b, 0xab, 0xf8,
-0x07, 0x04, 0x00, 0x00, 0xfe, 0x42, 0xfb, 0x97,
-0xd2, 0xec, 0x8b, 0x8a, 0xad, 0x9e, 0x12, 0x64,
-0x95, 0xd5, 0x3c, 0x37, 0xa3, 0x99, 0xbf, 0xe0,
-0x09, 0xea, 0xb6, 0x63, 0xa6, 0xef, 0x87, 0x31,
-0x28, 0x32, 0x90, 0xf1, 0x5f, 0x9d, 0x2a, 0xe8,
-0x20, 0x1b, 0x71, 0xd8, 0xb7, 0x80, 0xd9, 0xff,
-0x89, 0x62, 0xdb, 0x17, 0x00, 0x00, 0x7c, 0x83,
-0x3f, 0xed, 0x17, 0x8d, 0xf3, 0x69, 0x1b, 0x57,
-0xcd, 0x76, 0x67, 0x8a, 0xf4, 0x87, 0xf3, 0xb9,
-0xf6, 0x2c, 0x32, 0x7d, 0x3f, 0x8c, 0xc1, 0xfd,
-0x77, 0xb8, 0x5f, 0x94, 0x82, 0xf6, 0xdc, 0x0b,
-0x5a, 0xa5, 0x0a, 0xda, 0xf5, 0x14, 0x92, 0xdd,
-0x82, 0x07, 0x3a, 0xd9, 0x35, 0x9a, 0xbe, 0x49,
-0x00, 0x00, 0x50, 0x49, 0x10, 0x1d, 0x5e, 0x55,
-0x54, 0xe9, 0x94, 0x37, 0xc3, 0xcd, 0x78, 0x6e,
-0x5a, 0x3f, 0xe7, 0x5a, 0x72, 0x7b, 0xd5, 0x36,
-0x13, 0xe6, 0xfe, 0x1b, 0xe9, 0x77, 0x4a, 0x41,
-0xbb, 0x85, 0xc0, 0x3e, 0x54, 0x41, 0x8b, 0x52,
-0xd0, 0xb6, 0x10, 0xd8, 0xea, 0x6e, 0xc2, 0xb6,
-0x2f, 0x00, 0x00, 0xf8, 0x4f, 0x3c, 0x9a, 0x0a,
-0x81, 0x7d, 0xda, 0xc6, 0x95, 0xdb, 0xee, 0xcf,
-0x1d, 0xf4, 0x33, 0xfe, 0xaa, 0xee, 0xd3, 0xa6,
-0x6f, 0x87, 0x19, 0xf2, 0xfc, 0x57, 0x23, 0x05,
-0xed, 0x53, 0x23, 0x2c, 0xc7, 0x46, 0x1c, 0x6d,
-0xf5, 0x56, 0x12, 0x4d, 0x9e, 0x01, 0x00, 0x20,
-0x10, 0xe8, 0xc4, 0x4e, 0x7e, 0x9e, 0xc8, 0x88,
-0xe7, 0xe6, 0x69, 0xd7, 0x73, 0xa6, 0x6f, 0x86,
-0x19, 0xd2, 0xfe, 0x1b, 0x11, 0xa4, 0xa0, 0xd5,
-0x4e, 0x21, 0x29, 0xa4, 0xa0, 0x3d, 0x34, 0xc2,
-0x6a, 0x3d, 0x6a, 0x55, 0x7d, 0x6b, 0x32, 0x00,
-0x00, 0x08, 0x0e, 0x8a, 0xc7, 0x68, 0xf9, 0xc4,
-0xa2, 0xaa, 0xa7, 0xb2, 0x3a, 0x3f, 0x2b, 0x15,
-0xdb, 0x7d, 0xc2, 0xa6, 0x19, 0x3f, 0xa5, 0x85,
-0x37, 0xb1, 0x78, 0xdc, 0xf4, 0xfd, 0x30, 0x40,
-0xae, 0xff, 0xf6, 0x16, 0x6e, 0x01, 0x0b, 0x1b,
-0x71, 0xf8, 0xd7, 0x0b, 0x5a, 0x9c, 0x82, 0x4e,
-0xcd, 0xf6, 0x45, 0xe6, 0x19, 0x00, 0x00, 0x02,
-0x84, 0x9a, 0xf6, 0xa5, 0x92, 0xcf, 0x3e, 0xed,
-0xe4, 0x3a, 0x85, 0xb7, 0x69, 0xcf, 0xfd, 0x69,
-0x56, 0x33, 0xec, 0xfa, 0x09, 0xcd, 0xfc, 0x39,
-0xb1, 0x87, 0x7f, 0xf5, 0x91, 0xeb, 0xbf, 0xe1,
-0xa8, 0x82, 0x66, 0x2f, 0xc1, 0x81, 0x23, 0x00,
-0x00, 0x08, 0x9a, 0x44, 0x8c, 0x56, 0xde, 0xef,
-0xd5, 0x76, 0x65, 0x59, 0xe5, 0x3c, 0xdb, 0x9d,
-0x51, 0x60, 0xbb, 0x69, 0xfd, 0x98, 0x6b, 0xfb,
-0x5c, 0xd3, 0xf7, 0xc2, 0x00, 0x29, 0xff, 0x55,
-0x4f, 0x41, 0x7b, 0x1d, 0x47, 0xa8, 0xbc, 0x05,
-0x4c, 0xed, 0xc7, 0xac, 0x78, 0xc4, 0xf4, 0x5d,
-0x01, 0x00, 0x80, 0xaa, 0x80, 0x6f, 0x05, 0xf2,
-0x5d, 0x60, 0x97, 0x53, 0x42, 0x4e, 0xf9, 0x64,
-0x07, 0xcf, 0xcd, 0xf7, 0x59, 0xbb, 0x7e, 0xec,
-0xa8, 0x79, 0x97, 0x51, 0xb2, 0xea, 0xda, 0xfb,
-0x53, 0x64, 0xb0, 0x30, 0x04, 0x56, 0xa9, 0x82,
-0x0e, 0xa4, 0x11, 0x07, 0x0b, 0x84, 0x07, 0xd1,
-0x67, 0x12, 0x00, 0x00, 0x4a, 0x07, 0x1f, 0xc5,
-0xab, 0xb1, 0x8d, 0xfb, 0x73, 0xc7, 0x6d, 0x5c,
-0x71, 0x78, 0xfb, 0x13, 0x37, 0xdb, 0xb5, 0xeb,
-0xf4, 0x41, 0xd3, 0x77, 0xa2, 0xd4, 0xf0, 0xfe,
-0x93, 0x9e, 0x52, 0xd0, 0x69, 0xff, 0x15, 0x8e,
-0x23, 0xf4, 0x30, 0x0e, 0x38, 0x95, 0x82, 0xe6,
-0x85, 0x5b, 0xd5, 0x7a, 0x10, 0x0c, 0x00, 0x00,
-0x8c, 0x40, 0x9d, 0x27, 0xf9, 0x34, 0x5e, 0x6f,
-0xa5, 0x53, 0x62, 0xc3, 0x55, 0xf6, 0xdc, 0x8c,
-0xa6, 0xff, 0x98, 0x36, 0x3c, 0x6e, 0xfa, 0x4e,
-0x94, 0x9a, 0x51, 0xff, 0x4d, 0x59, 0xb0, 0xa8,
-0x11, 0x87, 0x5a, 0x0a, 0xba, 0x59, 0xb4, 0x05,
-0x2c, 0x68, 0xc4, 0x91, 0x1f, 0x02, 0xdb, 0x52,
-0xd0, 0xd4, 0x56, 0x8f, 0x09, 0x47, 0x00, 0x00,
-0x50, 0x6a, 0x92, 0x49, 0xda, 0xf0, 0x98, 0x3f,
-0xdb, 0xb8, 0x2a, 0x3e, 0x2b, 0xd4, 0xe3, 0xe7,
-0xd1, 0x33, 0x17, 0x33, 0x27, 0x32, 0x7d, 0x2f,
-0x4a, 0x4a, 0x8e, 0xff, 0x8a, 0xb6, 0x80, 0xc5,
-0xb3, 0x18, 0x8a, 0xac, 0x82, 0x16, 0xa6, 0xa0,
-0xd9, 0x3b, 0x03, 0x00, 0x00, 0x28, 0x39, 0x3c,
-0x86, 0x9a, 0x75, 0x81, 0xf2, 0x4e, 0xae, 0x7e,
-0x6c, 0x2b, 0xf6, 0xdc, 0xff, 0xcb, 0xd1, 0xf4,
-0xf3, 0xa8, 0x71, 0x97, 0xe9, 0x3b, 0x51, 0x52,
-0xb8, 0xff, 0x7a, 0x4d, 0x41, 0xab, 0x8f, 0x23,
-0x94, 0xa6, 0xa0, 0xad, 0xae, 0x53, 0x68, 0x75,
-0x05, 0x00, 0x00, 0x46, 0x20, 0xc6, 0xb6, 0xb9,
-0x66, 0x6c, 0x37, 0xab, 0x1f, 0xd1, 0xaa, 0x07,
-0x4c, 0xdf, 0x89, 0x92, 0x62, 0xf3, 0xdf, 0x91,
-0x14, 0xb4, 0xd0, 0x7f, 0x55, 0x7a, 0x41, 0xe7,
-0xfa, 0x6f, 0x77, 0x93, 0x46, 0x23, 0x0e, 0xf6,
-0x9f, 0xb1, 0x61, 0xd3, 0x77, 0x02, 0x00, 0x00,
-0xaa, 0x17, 0xea, 0xef, 0xa0, 0x79, 0x97, 0x7b,
-0x2c, 0x9d, 0x12, 0x78, 0xee, 0x79, 0x39, 0xca,
-0xf1, 0xd9, 0x73, 0x6d, 0xfa, 0x51, 0x8e, 0x9e,
-0xbc, 0x80, 0xaa, 0xa9, 0xf3, 0x12, 0xc5, 0x46,
-0xfc, 0x77, 0xd0, 0xb5, 0x11, 0x87, 0xca, 0x38,
-0x60, 0x61, 0x23, 0x2c, 0x41, 0x08, 0x5c, 0x38,
-0x0e, 0xd8, 0x1a, 0xec, 0x44, 0xf0, 0x0b, 0x00,
-0x00, 0x66, 0xa1, 0x3d, 0x0b, 0x8b, 0xf3, 0xdc,
-0x1f, 0x3b, 0x18, 0x6e, 0x9e, 0xed, 0xfe, 0xc8,
-0x59, 0xe7, 0xd2, 0x89, 0x2a, 0x4a, 0x41, 0xa7,
-0xfd, 0x57, 0x29, 0x05, 0x2d, 0x68, 0x84, 0xa5,
-0xde, 0x0b, 0xda, 0x31, 0x04, 0xee, 0x3a, 0x65,
-0x55, 0xdf, 0xb1, 0x2f, 0x00, 0x00, 0x08, 0x1b,
-0xec, 0x21, 0x4f, 0xcf, 0x5c, 0xa2, 0x9d, 0x52,
-0x7e, 0xfc, 0x3c, 0x9b, 0x9c, 0x3c, 0xd7, 0xdd,
-0x76, 0x47, 0xf5, 0xd8, 0x8f, 0x68, 0xfd, 0x63,
-0x54, 0x35, 0xe1, 0x58, 0xae, 0xff, 0xaa, 0xcf,
-0x62, 0x90, 0xa7, 0xa0, 0xc5, 0x8d, 0x38, 0x0a,
-0x43, 0xe0, 0x6a, 0xca, 0x36, 0x00, 0x00, 0x40,
-0x78, 0x61, 0xce, 0xb7, 0x73, 0xbe, 0x9a, 0xe7,
-0x3a, 0xef, 0xe1, 0x6a, 0xe9, 0xb1, 0x02, 0xcd,
-0xbe, 0x88, 0xe2, 0xd5, 0x12, 0x91, 0x71, 0xff,
-0x8d, 0x0d, 0x95, 0xb8, 0x0a, 0x3a, 0xe3, 0xbf,
-0x56, 0x5f, 0x8b, 0xe9, 0x1b, 0x00, 0x00, 0x00,
-0x20, 0x0d, 0x7f, 0xfe, 0xcf, 0xbb, 0xcc, 0x4b,
-0xe9, 0x54, 0x91, 0xb6, 0x3b, 0xa2, 0x47, 0x7f,
-0xc0, 0x55, 0xbf, 0xd9, 0xf4, 0x6d, 0x28, 0x11,
-0x14, 0x1b, 0xd6, 0x49, 0x41, 0xfb, 0x3a, 0x8e,
-0xb0, 0xb3, 0x91, 0xaa, 0x72, 0xe6, 0x05, 0x00,
-0x00, 0x84, 0x16, 0xda, 0xbf, 0x94, 0xa6, 0xff,
-0xc4, 0x79, 0x27, 0x57, 0x27, 0x9f, 0xec, 0xe6,
-0xb9, 0x3f, 0x4c, 0x6b, 0xc4, 0x73, 0xed, 0x5a,
-0xf9, 0xfb, 0x2a, 0x99, 0xbf, 0x43, 0xb1, 0x88,
-0x20, 0x05, 0xad, 0xd4, 0x88, 0xa3, 0xa8, 0x59,
-0x0c, 0xdc, 0x82, 0x07, 0xbb, 0x4c, 0xaf, 0x1e,
-0x00, 0x00, 0x40, 0x0e, 0xbc, 0xfe, 0x76, 0xc1,
-0xd5, 0xc5, 0x6e, 0xe3, 0x8a, 0xc3, 0xdb, 0x1f,
-0xda, 0x64, 0xf7, 0xdc, 0xff, 0xcd, 0xd1, 0xac,
-0x5f, 0xb2, 0x6b, 0x30, 0x7d, 0x1b, 0x4a, 0x41,
-0xda, 0x7f, 0x95, 0x52, 0xd0, 0x2a, 0xa7, 0x90,
-0x9a, 0x45, 0x21, 0xb0, 0xa0, 0x11, 0x16, 0x75,
-0x9f, 0xc1, 0x90, 0x23, 0x00, 0x00, 0x08, 0x21,
-0x74, 0x68, 0x45, 0xa9, 0x3d, 0x37, 0xa3, 0x69,
-0xdf, 0xe7, 0xff, 0x3c, 0xf6, 0x8a, 0xe9, 0x7b,
-0x50, 0x0a, 0x72, 0xfc, 0x37, 0xf8, 0x14, 0x74,
-0x26, 0x04, 0xa6, 0xe8, 0xa0, 0xe9, 0xa5, 0x03,
-0x00, 0x00, 0x10, 0xc0, 0xf7, 0x25, 0x9f, 0xb9,
-0xc4, 0x87, 0x9d, 0x5c, 0x81, 0x9c, 0x6d, 0xd7,
-0xae, 0x65, 0xf7, 0x98, 0xbe, 0x07, 0x25, 0x21,
-0x11, 0x2d, 0xf0, 0x5f, 0xf5, 0x2a, 0x68, 0x79,
-0x23, 0x2c, 0x61, 0x15, 0x34, 0xf5, 0xb5, 0xe3,
-0xc0, 0x2f, 0x00, 0x00, 0x84, 0x16, 0x3a, 0xb8,
-0xdc, 0x31, 0xf2, 0xd5, 0x33, 0x5c, 0x65, 0xcf,
-0xb5, 0xeb, 0xb1, 0x73, 0xf9, 0x89, 0xd7, 0x8a,
-0x27, 0xdf, 0x7f, 0x55, 0x1a, 0x71, 0x74, 0xba,
-0xa6, 0xa0, 0x85, 0xe3, 0x08, 0x6d, 0x29, 0x68,
-0xf6, 0xef, 0x09, 0x94, 0x5d, 0x01, 0x00, 0x40,
-0x78, 0xe1, 0xbd, 0x10, 0xe7, 0xff, 0xd6, 0xc1,
-0x76, 0x7f, 0xe8, 0x56, 0x3d, 0xe5, 0x6e, 0xbb,
-0x2e, 0x9e, 0x9b, 0xd5, 0xf7, 0xb8, 0x0e, 0x2e,
-0x37, 0x7d, 0x0f, 0x82, 0x27, 0xe3, 0xbf, 0x25,
-0x4b, 0x41, 0x0f, 0x56, 0xc1, 0xb7, 0x1a, 0x00,
-0x00, 0x28, 0x73, 0xf8, 0x2e, 0x70, 0x31, 0xdb,
-0xb8, 0x5a, 0x7a, 0xe4, 0x7b, 0x36, 0x7d, 0x97,
-0xeb, 0x85, 0x5b, 0xa9, 0xe2, 0x6b, 0x84, 0xc4,
-0xfe, 0xeb, 0x35, 0x05, 0x2d, 0xab, 0x82, 0xb6,
-0xba, 0x9b, 0xac, 0x44, 0xb5, 0x9c, 0xad, 0x06,
-0x00, 0x80, 0xf2, 0x85, 0x1f, 0x84, 0x61, 0x21,
-0xb0, 0xc0, 0x73, 0x83, 0xb0, 0xdd, 0xef, 0xe6,
-0xea, 0x7f, 0x78, 0xf6, 0xbb, 0xe2, 0x1b, 0x44,
-0xb8, 0xf8, 0xaf, 0xa8, 0x0a, 0x5a, 0xad, 0x11,
-0x96, 0x30, 0x05, 0x9d, 0xb2, 0xe0, 0xa1, 0x3e,
-0xd3, 0x0b, 0x06, 0x00, 0x00, 0xa0, 0x04, 0xd5,
-0xac, 0xb1, 0x25, 0x99, 0xfd, 0xf2, 0xdc, 0xef,
-0x3a, 0xe8, 0x7f, 0xf2, 0xb5, 0x77, 0x91, 0xe9,
-0x1b, 0x10, 0x2c, 0x2c, 0xc0, 0x4f, 0xb7, 0xe0,
-0x70, 0x4d, 0x41, 0xe7, 0x6d, 0x01, 0xbb, 0x86,
-0xc0, 0x8e, 0x29, 0x68, 0xde, 0xed, 0x0a, 0x65,
-0x57, 0x00, 0x00, 0x50, 0x26, 0x50, 0x3c, 0x46,
-0xf3, 0xae, 0x28, 0x76, 0x27, 0x77, 0x44, 0x2a,
-0xb6, 0xfb, 0xb0, 0x4d, 0x0f, 0x7d, 0x87, 0x9e,
-0xbb, 0xb6, 0xb2, 0x8f, 0xa9, 0xa6, 0xfc, 0x37,
-0xe2, 0xe8, 0xbf, 0xe2, 0x71, 0x84, 0xfa, 0xe3,
-0x80, 0xbb, 0x9b, 0xb8, 0xa2, 0x43, 0xa6, 0x97,
-0x0b, 0x00, 0x00, 0x40, 0x03, 0xda, 0xbb, 0xb0,
-0xa4, 0x9e, 0x9b, 0xd5, 0xb7, 0xf9, 0x9f, 0xd8,
-0xdb, 0x6c, 0xfa, 0x06, 0x04, 0x09, 0x25, 0x73,
-0xfc, 0x57, 0xdc, 0x88, 0xa3, 0xd7, 0x5b, 0x23,
-0x0e, 0x7b, 0x0a, 0x9a, 0xff, 0x36, 0x04, 0xbf,
-0x00, 0x00, 0x50, 0x56, 0xf0, 0xa1, 0x48, 0xb3,
-0x2f, 0x2a, 0x6a, 0x27, 0x57, 0xa8, 0x87, 0xbf,
-0x93, 0xd6, 0x43, 0xdf, 0xc9, 0xb7, 0xdd, 0xb4,
-0xbe, 0x45, 0x0f, 0x7f, 0x9b, 0x0e, 0xad, 0x30,
-0x7d, 0x03, 0x82, 0x24, 0xed, 0xbf, 0xce, 0x21,
-0xb0, 0x4e, 0x0a, 0xda, 0x69, 0x16, 0x03, 0x75,
-0x9f, 0x41, 0xab, 0x67, 0x00, 0x00, 0x28, 0x43,
-0x88, 0xb6, 0x3f, 0xa3, 0xb3, 0x8d, 0xeb, 0xec,
-0xb9, 0xf9, 0x56, 0x9b, 0xd1, 0xb7, 0x1c, 0xb5,
-0xf8, 0x56, 0xa2, 0xa4, 0xe9, 0x3b, 0x10, 0x18,
-0xca, 0xfe, 0x5b, 0x54, 0x0a, 0xba, 0x3a, 0x9a,
-0x79, 0x02, 0x00, 0x40, 0xe5, 0xc1, 0x53, 0xa0,
-0x33, 0x7f, 0xae, 0x5d, 0x3d, 0x25, 0xf1, 0x5c,
-0x57, 0xdb, 0xcd, 0x88, 0xbd, 0x73, 0x6f, 0xe5,
-0x56, 0x41, 0x33, 0xff, 0x8d, 0x3b, 0xf9, 0xaf,
-0x63, 0x0a, 0x9a, 0x06, 0xba, 0x35, 0x1a, 0x71,
-0xf4, 0x36, 0x5b, 0x49, 0x9c, 0x39, 0x02, 0x00,
-0x80, 0xb2, 0x84, 0x28, 0x15, 0x02, 0x7b, 0xde,
-0xc6, 0xcd, 0x91, 0x82, 0xe7, 0xda, 0x35, 0xf5,
-0x5b, 0xb4, 0xfb, 0x8f, 0xa6, 0x6f, 0x40, 0x60,
-0x10, 0xa5, 0x8e, 0x20, 0x45, 0xf2, 0xab, 0xa0,
-0xf3, 0x1b, 0x61, 0x15, 0x91, 0x82, 0x66, 0xc1,
-0x2f, 0x76, 0x7e, 0x01, 0x00, 0xa0, 0x6c, 0xa1,
-0xde, 0x66, 0x7a, 0xe2, 0x67, 0x82, 0x38, 0x57,
-0xec, 0xb9, 0xdf, 0xf1, 0x6e, 0xb8, 0x23, 0x9e,
-0x9b, 0xd5, 0x37, 0x69, 0x41, 0xe5, 0x56, 0x41,
-0x67, 0xfd, 0xd7, 0x39, 0x04, 0x2e, 0x62, 0x1c,
-0xa1, 0xd5, 0xdb, 0x8a, 0xe0, 0x17, 0x00, 0x00,
-0xca, 0x1b, 0x16, 0x02, 0xaf, 0x79, 0x28, 0xbf,
-0x74, 0x2a, 0xbf, 0x7a, 0x4a, 0x33, 0xce, 0x9d,
-0xea, 0xa0, 0x07, 0xbf, 0x69, 0xd3, 0x37, 0x78,
-0x4d, 0x57, 0xe7, 0x49, 0xd3, 0xeb, 0x0f, 0x8c,
-0x42, 0xff, 0x55, 0x18, 0x47, 0xa8, 0xda, 0x88,
-0x63, 0x18, 0x0d, 0x37, 0x00, 0x00, 0xa0, 0xec,
-0xa1, 0x8e, 0x06, 0xbe, 0xff, 0xeb, 0x6d, 0x1b,
-0x57, 0xc9, 0x76, 0xbf, 0xe1, 0xa0, 0xaf, 0x57,
-0x70, 0x0a, 0x9a, 0xe2, 0xb1, 0x51, 0x0b, 0xd6,
-0xf0, 0xdf, 0xd1, 0x59, 0x0c, 0x1d, 0x6e, 0x29,
-0xe8, 0xfe, 0x36, 0xab, 0x82, 0x4b, 0xd7, 0x00,
-0x00, 0xa0, 0x6a, 0xe0, 0xbb, 0xc0, 0xeb, 0x1f,
-0x2d, 0x9d, 0xe7, 0xda, 0xf5, 0xf4, 0x98, 0x8a,
-0x4d, 0x41, 0x27, 0xa2, 0xe2, 0x2d, 0xe0, 0xa2,
-0x1b, 0x71, 0x58, 0xc3, 0x03, 0xa6, 0xd7, 0x06,
-0x00, 0x00, 0xc0, 0x1f, 0xa8, 0xe3, 0x04, 0x3d,
-0xfe, 0x7f, 0x5e, 0x3d, 0xf7, 0x9b, 0x69, 0x29,
-0x7a, 0x6e, 0x46, 0x53, 0xbe, 0xc6, 0x13, 0xd1,
-0xed, 0xf5, 0xa6, 0x57, 0x1f, 0x08, 0x94, 0x88,
-0xc9, 0xb7, 0x80, 0xc5, 0x21, 0xb0, 0xa8, 0x11,
-0xc7, 0x68, 0x08, 0x6c, 0x0d, 0x74, 0x56, 0xec,
-0x37, 0x16, 0x00, 0x00, 0xa8, 0x42, 0x58, 0x08,
-0xbc, 0xea, 0x01, 0xd5, 0xd8, 0xb6, 0x70, 0x27,
-0x57, 0xc5, 0x6a, 0x9d, 0xb4, 0xf9, 0x49, 0xd3,
-0x8b, 0x0f, 0x04, 0x4a, 0xc6, 0x79, 0x08, 0x1c,
-0x17, 0xa5, 0xa0, 0xa3, 0x82, 0x71, 0xc0, 0x05,
-0x21, 0x70, 0xa7, 0x38, 0x04, 0x46, 0xb7, 0x49,
-0x00, 0x00, 0xa8, 0x2c, 0x58, 0x1c, 0xca, 0xdb,
-0x42, 0x3a, 0xd9, 0x6e, 0x8e, 0xe1, 0x2a, 0x78,
-0xae, 0x8b, 0xe1, 0xe6, 0xe9, 0xe9, 0x31, 0x15,
-0xd9, 0xc4, 0x89, 0xcf, 0x58, 0xcc, 0xa6, 0xa0,
-0x9d, 0x43, 0x60, 0xad, 0x46, 0x1c, 0xe8, 0x36,
-0x09, 0x00, 0x00, 0x95, 0x07, 0x25, 0x69, 0xf1,
-0x2d, 0x1e, 0xb7, 0x71, 0x3d, 0xd8, 0xee, 0x88,
-0x1e, 0xf8, 0x0a, 0xff, 0x67, 0xf3, 0x11, 0xd3,
-0x8b, 0xf7, 0x1f, 0x5f, 0xfd, 0x37, 0x5d, 0x05,
-0xcd, 0x02, 0x67, 0xd3, 0xcb, 0x02, 0x00, 0x00,
-0xe0, 0x3f, 0x74, 0x72, 0x2f, 0x3f, 0xf0, 0x5b,
-0x02, 0xcf, 0xcd, 0xd3, 0xba, 0x47, 0x4c, 0x2f,
-0x3d, 0x00, 0x28, 0x99, 0xf6, 0xdf, 0xb8, 0xf0,
-0x14, 0x92, 0x20, 0x05, 0x5d, 0x50, 0x05, 0x9d,
-0x9b, 0x82, 0x1e, 0xe8, 0xa4, 0x24, 0xca, 0x9e,
-0x01, 0x00, 0xa0, 0x02, 0xa1, 0x44, 0x82, 0x9e,
-0xbd, 0xca, 0x57, 0xdb, 0xfd, 0x6a, 0x56, 0x85,
-0xb6, 0x3b, 0xa2, 0xfb, 0xbf, 0x42, 0x7f, 0x38,
-0xdf, 0x8a, 0x47, 0x4c, 0xaf, 0xde, 0x6f, 0x52,
-0x2d, 0x38, 0x64, 0x55, 0xd0, 0x1a, 0x21, 0x30,
-0xfb, 0x9d, 0xa6, 0x97, 0x04, 0x00, 0x00, 0x20,
-0x28, 0xe8, 0xc8, 0x9a, 0x54, 0x25, 0x73, 0x31,
-0xe1, 0xed, 0x57, 0x6d, 0xca, 0xf5, 0x59, 0xa1,
-0x7e, 0xff, 0x65, 0x9a, 0xf2, 0x75, 0x6a, 0x3b,
-0x66, 0x7a, 0xe9, 0x7e, 0x93, 0xef, 0xbf, 0x7a,
-0x8d, 0xb0, 0x04, 0x55, 0xd0, 0x28, 0x7b, 0x06,
-0x00, 0x80, 0x0a, 0x86, 0xf9, 0xc2, 0xac, 0x5f,
-0x17, 0x67, 0xbb, 0x05, 0xe1, 0xad, 0x93, 0xed,
-0xa6, 0xf5, 0x25, 0xfe, 0xcf, 0x6d, 0x4f, 0x9b,
-0x5e, 0xb9, 0xdf, 0xd8, 0xfc, 0x57, 0xdc, 0x88,
-0x43, 0x61, 0x1c, 0xa1, 0x2d, 0xf8, 0xc5, 0x99,
-0x5f, 0x00, 0x00, 0xa8, 0x70, 0x68, 0xef, 0x0b,
-0x4a, 0xfe, 0xeb, 0x94, 0x4f, 0x76, 0xf3, 0xdc,
-0x2f, 0x39, 0xe8, 0x8b, 0x7c, 0x12, 0x71, 0x85,
-0x35, 0x34, 0x26, 0xca, 0x94, 0x60, 0xb9, 0x86,
-0xc0, 0x0a, 0xb3, 0x18, 0xf8, 0xce, 0x6f, 0x65,
-0xdd, 0x1c, 0x00, 0x00, 0x00, 0x05, 0xf0, 0xa6,
-0x4c, 0x33, 0x7f, 0xae, 0xbd, 0x8d, 0x9b, 0x63,
-0xbb, 0x5f, 0xce, 0x2a, 0xdf, 0x6a, 0xff, 0xdb,
-0xa6, 0x2f, 0x66, 0xc5, 0x7e, 0x67, 0x85, 0xa5,
-0xa0, 0xb5, 0xfc, 0x57, 0xdc, 0x08, 0x6b, 0x34,
-0x05, 0x3d, 0x3c, 0x80, 0x63, 0x47, 0x00, 0x00,
-0x50, 0xf1, 0xf0, 0x76, 0x94, 0xdb, 0x9e, 0xce,
-0xb1, 0xdd, 0xa2, 0x3c, 0xf7, 0xbf, 0x1d, 0x3d,
-0x37, 0x4f, 0x9b, 0x67, 0x9a, 0x5e, 0xba, 0xcf,
-0xd8, 0xfd, 0x57, 0xbd, 0x11, 0x47, 0x41, 0x08,
-0xdc, 0x69, 0x25, 0x10, 0xfc, 0x02, 0x00, 0x40,
-0x55, 0x40, 0x7d, 0x6d, 0xf4, 0xe8, 0x0f, 0xf4,
-0xb7, 0x71, 0x85, 0xb6, 0xeb, 0x6c, 0xb8, 0x76,
-0x4d, 0xfe, 0x22, 0xcd, 0xbe, 0x90, 0x12, 0x95,
-0xd5, 0x88, 0x63, 0xf4, 0x08, 0x92, 0x56, 0x0a,
-0x3a, 0xbf, 0x0a, 0x1a, 0x73, 0x7e, 0x01, 0x00,
-0xa0, 0x8a, 0x48, 0xb5, 0xa3, 0xf4, 0xb0, 0x8d,
-0xab, 0xa5, 0xc9, 0xb9, 0x62, 0xef, 0x5c, 0x69,
-0x29, 0xe8, 0xa4, 0x5a, 0x0a, 0xda, 0x6d, 0x1c,
-0x92, 0x55, 0x61, 0xdf, 0x49, 0x00, 0x00, 0x00,
-0xb8, 0x42, 0x5d, 0xa7, 0xe8, 0xe1, 0xef, 0x96,
-0xc2, 0x76, 0x33, 0x9a, 0xf4, 0x9f, 0xb4, 0x71,
-0x86, 0xe9, 0x75, 0xfb, 0x4a, 0x9e, 0xff, 0x8a,
-0x1b, 0x71, 0x0c, 0xb8, 0xa5, 0xa0, 0x11, 0xfc,
-0x02, 0x00, 0x40, 0x95, 0xc1, 0x77, 0x81, 0x97,
-0xdf, 0xa7, 0x54, 0x3a, 0xa5, 0xed, 0xb9, 0xff,
-0x95, 0x15, 0xf3, 0x5c, 0xbb, 0x9e, 0xf8, 0x59,
-0x45, 0xed, 0x75, 0xe6, 0x96, 0x60, 0x89, 0x1b,
-0x71, 0xe4, 0x37, 0xc2, 0xca, 0xa9, 0x82, 0x66,
-0xbf, 0xd9, 0xf4, 0x1a, 0x00, 0x00, 0x00, 0x94,
-0x1a, 0x3a, 0x73, 0x28, 0x15, 0xf6, 0x7a, 0xf2,
-0x5c, 0x41, 0x84, 0xeb, 0xe0, 0xb9, 0x59, 0x7d,
-0x81, 0xff, 0xb6, 0xe6, 0x5a, 0xd3, 0xeb, 0xf6,
-0x8f, 0x94, 0xff, 0xa6, 0x07, 0x21, 0xe9, 0x37,
-0xe2, 0xe0, 0x3b, 0xbf, 0x68, 0x38, 0x09, 0x00,
-0x00, 0xd5, 0x07, 0x25, 0x62, 0xf4, 0xcc, 0xc5,
-0xde, 0xf3, 0xc9, 0x3c, 0xa5, 0xfc, 0x5f, 0x36,
-0xd9, 0x7c, 0xd6, 0x49, 0xbf, 0xfb, 0x8f, 0x8a,
-0x4a, 0x41, 0xa7, 0xfd, 0xd7, 0x79, 0x0b, 0x58,
-0x9c, 0x82, 0x4e, 0x87, 0xc0, 0x98, 0xb6, 0x00,
-0x00, 0x00, 0x55, 0x0b, 0x1d, 0x78, 0xc9, 0x93,
-0xed, 0x3a, 0x84, 0xb7, 0x4e, 0x9e, 0x6b, 0xd7,
-0x93, 0x17, 0x50, 0x05, 0xa5, 0xa0, 0x47, 0xfd,
-0x37, 0xa6, 0xdb, 0x08, 0x2b, 0x55, 0xf6, 0x8c,
-0xe0, 0x17, 0x00, 0x00, 0xaa, 0x14, 0x5e, 0x32,
-0xf4, 0xe4, 0x2f, 0x95, 0x4a, 0xa7, 0x8a, 0xf1,
-0xdc, 0x3c, 0x35, 0x1d, 0x30, 0xbd, 0x6e, 0xdf,
-0x18, 0xf1, 0x5f, 0x8d, 0x2a, 0xe8, 0x4c, 0x23,
-0x8e, 0xe8, 0x10, 0x2a, 0xaf, 0x00, 0x00, 0xa0,
-0x9a, 0xa1, 0xdd, 0xcf, 0x69, 0x6f, 0xe3, 0x7a,
-0xf0, 0xdc, 0xac, 0x3e, 0x4f, 0xeb, 0xa6, 0x99,
-0x5e, 0xb4, 0x7f, 0xa4, 0x4a, 0xa0, 0xf5, 0x53,
-0xd0, 0xbd, 0x68, 0x38, 0x09, 0x00, 0x00, 0x55,
-0x0e, 0x0d, 0x74, 0xd2, 0xe3, 0xe7, 0x8a, 0xb6,
-0x71, 0x8b, 0xb7, 0xda, 0x51, 0x4d, 0xfc, 0xbc,
-0x4d, 0xe7, 0xd0, 0x13, 0x3f, 0xa5, 0x78, 0xa5,
-0x1c, 0x7a, 0x2d, 0xf0, 0xdf, 0xd1, 0x46, 0x58,
-0x79, 0xe3, 0x08, 0x73, 0xab, 0xa0, 0x87, 0xfb,
-0x91, 0x7c, 0x06, 0x00, 0x80, 0x6a, 0x87, 0x88,
-0xd6, 0x3f, 0x16, 0xb8, 0xe7, 0x66, 0x74, 0xdf,
-0x39, 0x3c, 0xb8, 0xee, 0x3a, 0x69, 0x7a, 0xd9,
-0x3e, 0x31, 0xea, 0xbf, 0x7a, 0x8d, 0x38, 0x62,
-0x15, 0x37, 0x0d, 0x19, 0x00, 0x00, 0x80, 0x3e,
-0xd4, 0xd5, 0xc4, 0xcf, 0xff, 0xfa, 0x63, 0xbb,
-0xe7, 0x88, 0x75, 0x5f, 0xae, 0x76, 0xcc, 0x37,
-0xbd, 0x68, 0x9f, 0x18, 0x2d, 0x81, 0xd6, 0x49,
-0x41, 0x0f, 0x10, 0x46, 0xfd, 0x02, 0x00, 0x00,
-0x48, 0x41, 0x8b, 0xc6, 0x79, 0x34, 0x5c, 0x75,
-0xcf, 0xcd, 0xe8, 0xde, 0x7f, 0xa3, 0xa7, 0x7e,
-0x55, 0x21, 0x1e, 0x94, 0xe3, 0xbf, 0x31, 0xb7,
-0x46, 0x1c, 0x99, 0x2a, 0xe8, 0xd8, 0x30, 0x2a,
-0xaf, 0x00, 0x00, 0x00, 0x8c, 0x40, 0x0d, 0xdb,
-0x78, 0xfd, 0xb3, 0xb4, 0x74, 0x2a, 0x23, 0x55,
-0xcf, 0xfd, 0xf7, 0xac, 0x98, 0xed, 0xa6, 0xf5,
-0xaf, 0x34, 0xe9, 0x3f, 0xa8, 0xb3, 0xd1, 0xf4,
-0xa2, 0xfd, 0x80, 0x39, 0xa9, 0x66, 0x0a, 0xda,
-0x42, 0xe5, 0x15, 0x00, 0x00, 0x80, 0x0c, 0xcc,
-0x2c, 0x66, 0x5f, 0xa8, 0xb7, 0x8d, 0x2b, 0x8e,
-0x6d, 0xff, 0x3d, 0x57, 0x36, 0xcf, 0xcd, 0xea,
-0x73, 0x5c, 0x5b, 0x9f, 0x36, 0xbd, 0x66, 0x9f,
-0x50, 0xf1, 0xdf, 0x4c, 0x0a, 0x3a, 0x3a, 0x64,
-0xfa, 0x72, 0x01, 0x00, 0x00, 0x84, 0x0b, 0xda,
-0xf7, 0x42, 0x51, 0x29, 0x65, 0xb1, 0x3e, 0xe7,
-0xa8, 0xa7, 0x2e, 0xa4, 0xca, 0xe8, 0xbe, 0x28,
-0xf2, 0x5f, 0xa7, 0x46, 0x1c, 0x98, 0x76, 0x04,
-0x00, 0x00, 0x20, 0x0f, 0x6e, 0x10, 0x8f, 0xfd,
-0x30, 0x58, 0xcf, 0xb5, 0x6b, 0xe2, 0x7f, 0x50,
-0xfb, 0x71, 0xd3, 0x8b, 0xf6, 0x03, 0x9b, 0xff,
-0x4a, 0x53, 0xd0, 0x38, 0x76, 0x04, 0x00, 0x00,
-0xa0, 0x10, 0xda, 0x32, 0xdb, 0xc1, 0x76, 0x85,
-0xdb, 0xb8, 0xa2, 0xac, 0xb2, 0xba, 0xee, 0xf9,
-0x1c, 0x6d, 0x9c, 0x6e, 0x7a, 0xc5, 0x7e, 0x60,
-0x2b, 0xc1, 0x72, 0x1b, 0x47, 0xc8, 0xfd, 0x17,
-0x95, 0x57, 0x00, 0x00, 0x00, 0x04, 0x50, 0xe7,
-0x29, 0xba, 0xff, 0xcb, 0xc1, 0x7a, 0x6e, 0x56,
-0x9f, 0xa5, 0x99, 0xe7, 0x57, 0x42, 0x31, 0x92,
-0x43, 0x09, 0x96, 0x20, 0x05, 0x9d, 0x88, 0x99,
-0xbe, 0x56, 0x00, 0x00, 0x00, 0xa1, 0x24, 0x99,
-0xa4, 0xe7, 0xae, 0x29, 0x28, 0x9d, 0xca, 0xb3,
-0x5d, 0x0f, 0x56, 0x6b, 0xd3, 0xdd, 0x9f, 0x1d,
-0xd5, 0xbf, 0x70, 0x67, 0x6f, 0xad, 0x33, 0xbd,
-0xe6, 0xa2, 0x91, 0xf8, 0x6f, 0xd6, 0x82, 0x11,
-0xfc, 0x02, 0x00, 0x00, 0x70, 0x82, 0x8e, 0xae,
-0xd3, 0xdb, 0xc6, 0x55, 0xf2, 0xdc, 0x7f, 0x11,
-0xe9, 0x9f, 0xb9, 0x5e, 0x99, 0x69, 0x7a, 0xc5,
-0x45, 0x93, 0xeb, 0xbf, 0xce, 0x5b, 0xc0, 0x11,
-0xf8, 0x2f, 0x00, 0x00, 0x00, 0x27, 0x28, 0x1e,
-0xa5, 0x3f, 0xfc, 0xdc, 0x07, 0xcf, 0x75, 0xb7,
-0xdd, 0x8c, 0x66, 0x9c, 0x57, 0x09, 0xbd, 0xa0,
-0x29, 0xe9, 0x1a, 0x02, 0xa7, 0x1a, 0x71, 0x54,
-0x40, 0xa6, 0x1d, 0x00, 0x00, 0x40, 0x90, 0xd0,
-0x8e, 0xf9, 0x7a, 0xdb, 0xb8, 0x19, 0x89, 0x0d,
-0xb7, 0xc0, 0x73, 0x33, 0xba, 0xeb, 0x9f, 0x78,
-0x22, 0xfa, 0xcc, 0x61, 0xd3, 0x2b, 0x2e, 0x9a,
-0xfc, 0x14, 0x74, 0xac, 0x20, 0x04, 0x1e, 0x46,
-0xe5, 0x33, 0x00, 0x00, 0x00, 0x77, 0xa8, 0xbf,
-0x83, 0xa6, 0x7c, 0x4d, 0x16, 0xe7, 0x16, 0xe1,
-0xb9, 0x79, 0x5a, 0xf7, 0x88, 0xe9, 0x15, 0x17,
-0x4d, 0xca, 0x7f, 0x5d, 0x1a, 0x71, 0x58, 0x15,
-0x10, 0xe3, 0x03, 0x00, 0x00, 0x08, 0x1e, 0x5a,
-0x7a, 0xa7, 0x6b, 0xe9, 0xd4, 0x67, 0x3d, 0x5a,
-0xad, 0x50, 0xd3, 0xcf, 0xa3, 0x72, 0xef, 0x4a,
-0xe1, 0xec, 0xbf, 0x23, 0x16, 0x6c, 0x51, 0x45,
-0x34, 0xbb, 0x06, 0x00, 0x00, 0x10, 0x30, 0xd4,
-0xb0, 0x5d, 0xb6, 0x8d, 0x5b, 0xb4, 0xed, 0x66,
-0xc4, 0x82, 0xe8, 0x8e, 0x13, 0xa6, 0x57, 0x5c,
-0x1c, 0x02, 0xff, 0x8d, 0xe5, 0xfa, 0x2f, 0x2a,
-0xaf, 0x00, 0x00, 0x00, 0xc8, 0xa1, 0x64, 0x9c,
-0xf7, 0x87, 0x0c, 0xce, 0x73, 0xef, 0xfc, 0x74,
-0x8e, 0xb6, 0xce, 0x36, 0xbd, 0xe2, 0xa2, 0x71,
-0xa9, 0x82, 0x8e, 0xc7, 0xe0, 0xbf, 0x00, 0x00,
-0x00, 0x14, 0xa1, 0xfd, 0x4b, 0x53, 0x79, 0x66,
-0x07, 0xc3, 0xd5, 0xf0, 0xdc, 0xcf, 0xa4, 0x95,
-0xe7, 0xb9, 0x13, 0x3e, 0x95, 0xd6, 0x1d, 0xff,
-0x48, 0x4f, 0x5e, 0x50, 0xf6, 0xe3, 0x08, 0x5d,
-0x52, 0xd0, 0xe5, 0xbe, 0x34, 0x00, 0x00, 0x00,
-0x25, 0x84, 0x86, 0x7a, 0xe9, 0xe1, 0xff, 0xf1,
-0x1a, 0xde, 0x7e, 0xc6, 0xa6, 0x02, 0xc3, 0xcd,
-0xd8, 0x6e, 0x46, 0x2c, 0xb2, 0x2e, 0xf7, 0x71,
-0x84, 0x05, 0xfe, 0xcb, 0x0f, 0x1c, 0x8d, 0xf8,
-0x2f, 0x82, 0x5f, 0x00, 0x00, 0x00, 0xea, 0x10,
-0xd1, 0xba, 0x69, 0x5e, 0x6d, 0xd7, 0x21, 0xce,
-0x75, 0xd1, 0x96, 0x32, 0x4f, 0x41, 0x73, 0xff,
-0x15, 0xa4, 0xa0, 0xd1, 0x73, 0x12, 0x00, 0x00,
-0x80, 0x2e, 0xd4, 0x73, 0x86, 0xcf, 0x22, 0x54,
-0xdf, 0xc6, 0xcd, 0xc8, 0xdd, 0x6a, 0x05, 0xfa,
-0x04, 0x3d, 0xf1, 0x33, 0x4a, 0x94, 0x73, 0x87,
-0x8a, 0x51, 0xff, 0xcd, 0x4b, 0x41, 0x97, 0x7d,
-0x5e, 0x1d, 0x00, 0x00, 0x80, 0x09, 0xe8, 0x85,
-0x5b, 0x03, 0xf4, 0x5c, 0xbb, 0x58, 0xd4, 0xdc,
-0x5c, 0xce, 0x8d, 0x38, 0x44, 0xfe, 0xcb, 0xbf,
-0x51, 0x20, 0xf9, 0x0c, 0x00, 0x00, 0x40, 0x1f,
-0xaa, 0x7f, 0x85, 0x6f, 0xce, 0xde, 0xe5, 0x90,
-0x52, 0x96, 0x66, 0x95, 0xd3, 0xfa, 0xa4, 0x4d,
-0x9f, 0x70, 0xd4, 0xda, 0x32, 0x6f, 0xc4, 0x21,
-0x0c, 0x81, 0x01, 0x00, 0x00, 0x00, 0x7d, 0x28,
-0x3a, 0x48, 0x8f, 0xfe, 0x30, 0x40, 0xcf, 0xcd,
-0xe8, 0xf6, 0x4f, 0xd0, 0xa3, 0x3f, 0x28, 0x6f,
-0xc3, 0x2a, 0xf0, 0x5f, 0xf4, 0x9c, 0x04, 0x00,
-0x00, 0xe0, 0x19, 0xda, 0x30, 0xdd, 0x7b, 0x56,
-0x59, 0xea, 0xb9, 0x76, 0x4d, 0xf8, 0x34, 0xb5,
-0xd4, 0x9a, 0x5e, 0x6e, 0x71, 0xe4, 0xfb, 0x2f,
-0x92, 0xcf, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x03,
-0x9d, 0x34, 0xf1, 0xf3, 0xfe, 0x18, 0xae, 0xd0,
-0x76, 0x33, 0xba, 0xed, 0xe3, 0xb4, 0xfa, 0x01,
-0xd3, 0xcb, 0x2d, 0x0e, 0xf8, 0x2f, 0x00, 0x00,
-0x00, 0xff, 0xa0, 0xa5, 0x13, 0xbc, 0xa4, 0x94,
-0x1d, 0x3d, 0xf7, 0x1f, 0x72, 0xc4, 0x6c, 0x37,
-0xa3, 0xa9, 0xdf, 0xe2, 0xa3, 0x82, 0xca, 0x17,
-0xdb, 0x29, 0x24, 0x24, 0x9f, 0x01, 0x00, 0x00,
-0x14, 0x09, 0x9d, 0xdc, 0x43, 0x77, 0xfd, 0x73,
-0xd1, 0x71, 0xae, 0xc8, 0x70, 0x73, 0xf4, 0xf7,
-0xfc, 0x57, 0x4f, 0xed, 0x31, 0xbd, 0xdc, 0xe2,
-0x18, 0x0d, 0x81, 0x11, 0xfc, 0x02, 0x00, 0x00,
-0x28, 0x96, 0x78, 0x94, 0x4f, 0x29, 0xf2, 0x92,
-0x52, 0xfe, 0x07, 0x9b, 0x72, 0xad, 0x56, 0xa8,
-0x5b, 0x3f, 0x46, 0x2b, 0x26, 0x9a, 0x5e, 0x6d,
-0x71, 0x64, 0xab, 0xb0, 0xe0, 0xbf, 0x00, 0x00,
-0x00, 0x8a, 0x85, 0x36, 0x3d, 0xa1, 0xb1, 0x8d,
-0xeb, 0x14, 0xde, 0x3a, 0x79, 0xae, 0x5d, 0x53,
-0xbe, 0x4a, 0xf1, 0x88, 0xe9, 0xe5, 0x16, 0x41,
-0xda, 0x7f, 0x61, 0xbe, 0x00, 0x00, 0x00, 0x7c,
-0x80, 0x06, 0x3a, 0x68, 0xe2, 0x39, 0x01, 0xda,
-0xae, 0x5d, 0xf5, 0x9b, 0x4d, 0x2f, 0xb7, 0x08,
-0xe0, 0xbf, 0x00, 0x00, 0x00, 0xfc, 0x83, 0x18,
-0x2f, 0x4e, 0xc8, 0xaf, 0x9e, 0xf2, 0xd1, 0x73,
-0xb3, 0xfa, 0x3b, 0x7a, 0xe9, 0x6e, 0xd3, 0xcb,
-0x2d, 0x0e, 0xf8, 0x2f, 0x00, 0x00, 0x00, 0xff,
-0xa0, 0xa6, 0x7d, 0xbc, 0x4b, 0xa4, 0x96, 0xe1,
-0xaa, 0x7a, 0x6e, 0xca, 0x76, 0x47, 0x74, 0xcb,
-0x47, 0xe9, 0x91, 0xef, 0x96, 0x77, 0x23, 0x0e,
-0x00, 0x00, 0x00, 0xc0, 0x47, 0x12, 0x31, 0x3e,
-0xa8, 0xd7, 0x07, 0xab, 0x1d, 0xd5, 0x2d, 0x7f,
-0x67, 0xd3, 0x47, 0xb3, 0x62, 0xbf, 0xd4, 0x56,
-0x6f, 0x7a, 0xb5, 0x00, 0x00, 0x00, 0x40, 0x58,
-0xa0, 0x7d, 0x2f, 0x16, 0xeb, 0xb9, 0xdc, 0x76,
-0x3f, 0x2a, 0xd0, 0xb8, 0xbf, 0xcd, 0xd1, 0xba,
-0x69, 0xa6, 0xd7, 0x0a, 0x00, 0x00, 0x00, 0x84,
-0x05, 0x8a, 0x0c, 0xd0, 0xfd, 0x5f, 0xf2, 0xc7,
-0x70, 0x0b, 0x3d, 0xd7, 0xae, 0x87, 0xbe, 0x8d,
-0xc9, 0xb9, 0x00, 0x00, 0x00, 0x40, 0x06, 0x5a,
-0x7c, 0x8b, 0xea, 0x36, 0xae, 0x5d, 0xe3, 0x3f,
-0x92, 0x96, 0x8b, 0xe7, 0xda, 0xc5, 0xde, 0xea,
-0xf4, 0x41, 0xd3, 0x6b, 0x05, 0x00, 0x00, 0x00,
-0xc2, 0x02, 0x35, 0xee, 0xc9, 0x4f, 0x3b, 0x3b,
-0x6d, 0xe3, 0x66, 0x3c, 0x57, 0xd5, 0x76, 0x3f,
-0x6c, 0xd3, 0x87, 0x68, 0xf5, 0x83, 0xa6, 0xd7,
-0x0a, 0x00, 0x00, 0x00, 0x84, 0x86, 0x44, 0x8c,
-0xa6, 0xfd, 0x6f, 0xae, 0xed, 0x16, 0x17, 0xea,
-0xda, 0x3d, 0xd7, 0xae, 0xa9, 0xdf, 0xa6, 0x64,
-0xdc, 0xf4, 0x6a, 0x01, 0x00, 0x00, 0x80, 0xb0,
-0x40, 0x9b, 0x9f, 0xcc, 0xb7, 0x5d, 0x55, 0xab,
-0xcd, 0xe8, 0x43, 0x72, 0x8d, 0xff, 0x28, 0x9d,
-0x3e, 0x64, 0x7a, 0xad, 0x00, 0x00, 0x00, 0x40,
-0x58, 0xa0, 0x9e, 0x66, 0xba, 0xe7, 0x73, 0x81,
-0x78, 0xae, 0x5d, 0x37, 0x7f, 0x88, 0x5e, 0x9e,
-0x64, 0x7a, 0xad, 0x00, 0x00, 0x00, 0x40, 0x88,
-0xa0, 0xe7, 0xae, 0x53, 0xdd, 0xc6, 0xf5, 0x60,
-0xbb, 0x19, 0x4d, 0xf9, 0x5a, 0x79, 0xf7, 0x82,
-0x06, 0x00, 0x00, 0x00, 0x7c, 0x85, 0x8e, 0x6d,
-0x51, 0xdd, 0xc6, 0x55, 0xf1, 0xd9, 0x3c, 0xdd,
-0xf4, 0x37, 0x69, 0x8d, 0xff, 0x08, 0x9d, 0xda,
-0x6f, 0x7a, 0xad, 0x00, 0x00, 0x00, 0x40, 0x58,
-0xa0, 0xe8, 0x10, 0x3d, 0xf0, 0x95, 0xa2, 0x62,
-0xdb, 0x7c, 0xcf, 0xfd, 0xa0, 0x48, 0x1f, 0xa0,
-0x95, 0xbf, 0x37, 0xbd, 0x56, 0x00, 0x00, 0x00,
-0x20, 0x44, 0xd0, 0xba, 0x69, 0x45, 0x79, 0xae,
-0xd8, 0x70, 0x53, 0x9e, 0x6b, 0xd7, 0xfd, 0x5f,
-0x46, 0x23, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x03,
-0x75, 0x9d, 0xa2, 0x3b, 0x3f, 0xad, 0x66, 0xbb,
-0x7f, 0x93, 0x95, 0xa2, 0xed, 0x66, 0xc4, 0x5e,
-0xd2, 0xb8, 0xd3, 0xf4, 0x5a, 0x01, 0x00, 0x00,
-0x80, 0xb0, 0xc0, 0x27, 0x12, 0x3e, 0x3d, 0x26,
-0x10, 0xcf, 0xbd, 0xf1, 0xfd, 0x39, 0x5a, 0x76,
-0xaf, 0xe9, 0xb5, 0x02, 0x00, 0x00, 0x00, 0x21,
-0x82, 0x0e, 0x2c, 0x73, 0x2c, 0x9d, 0xf2, 0x66,
-0xb5, 0x42, 0x4d, 0xfe, 0x4f, 0xa2, 0xa4, 0xe9,
-0xb5, 0x02, 0x00, 0x00, 0x00, 0x61, 0x81, 0x86,
-0xfa, 0xe8, 0x77, 0x5f, 0x28, 0x36, 0xbc, 0x95,
-0x8a, 0xbd, 0xa4, 0xe7, 0xb4, 0xe9, 0xb5, 0x02,
-0x00, 0x00, 0x00, 0x21, 0x82, 0x56, 0xde, 0xaf,
-0xe4, 0xb9, 0x1e, 0x6c, 0xf7, 0x86, 0xbf, 0xce,
-0x6a, 0xed, 0x23, 0xa6, 0x17, 0x0a, 0x00, 0x00,
-0x00, 0x84, 0x08, 0x6a, 0xda, 0xcf, 0x77, 0x7e,
-0x8b, 0xf2, 0xdc, 0xf7, 0x65, 0x95, 0x31, 0xdc,
-0xeb, 0xdf, 0x9b, 0xd5, 0x75, 0x7f, 0x45, 0x0f,
-0x7d, 0xc7, 0x42, 0x15, 0x34, 0x00, 0x00, 0x00,
-0x30, 0x0a, 0xc5, 0xa3, 0xfc, 0x88, 0x90, 0x97,
-0x20, 0xb7, 0xc0, 0x73, 0xed, 0xb6, 0xcb, 0x3c,
-0xd7, 0xae, 0x9b, 0x3f, 0x44, 0xcd, 0x47, 0x4c,
-0xaf, 0x15, 0x00, 0x00, 0x00, 0x08, 0x11, 0xb4,
-0xea, 0x01, 0xb5, 0x7c, 0xf2, 0xfb, 0x72, 0xe5,
-0x10, 0xea, 0x3a, 0x09, 0xe3, 0x08, 0x01, 0x00,
-0x00, 0x00, 0x1b, 0xd4, 0x52, 0xcb, 0xfb, 0x4f,
-0xaa, 0x6c, 0xe3, 0xda, 0xe5, 0x62, 0xb5, 0x42,
-0x3d, 0xf0, 0x55, 0xf6, 0x47, 0x99, 0x5e, 0x2b,
-0x00, 0x00, 0x00, 0x10, 0x16, 0xf8, 0x41, 0xe0,
-0x3f, 0xfc, 0x34, 0x10, 0xcf, 0xbd, 0xee, 0xdd,
-0x59, 0xdd, 0xf0, 0x5e, 0x6a, 0xdc, 0x65, 0x7a,
-0xad, 0x00, 0x00, 0x00, 0x40, 0x88, 0xa0, 0x5d,
-0xcf, 0x2b, 0x6d, 0xe3, 0xba, 0xe9, 0x3d, 0xa3,
-0x7a, 0xb7, 0xa3, 0x96, 0xde, 0x6d, 0x7a, 0xa1,
-0x00, 0x00, 0x00, 0x40, 0x88, 0xa0, 0xbe, 0x36,
-0xde, 0x8b, 0x52, 0xcf, 0x76, 0xdf, 0x93, 0x2b,
-0x67, 0xdb, 0x1d, 0xd1, 0xb5, 0xef, 0xe6, 0xe3,
-0x08, 0x93, 0x09, 0xd3, 0x6b, 0x05, 0x00, 0x00,
-0x00, 0x42, 0x03, 0x11, 0xcd, 0xbe, 0xd0, 0xb7,
-0x38, 0x37, 0xcf, 0x76, 0x33, 0xba, 0xe9, 0x83,
-0xd4, 0xd9, 0x68, 0x7a, 0xa9, 0x00, 0x00, 0x00,
-0x40, 0x88, 0xa0, 0xbd, 0x8b, 0x9d, 0x23, 0x5f,
-0x35, 0xab, 0x15, 0x7a, 0x6e, 0x9e, 0x36, 0x3c,
-0x66, 0x7a, 0xa1, 0x00, 0x00, 0x00, 0x40, 0x88,
-0xa0, 0xc8, 0x20, 0xdd, 0xf3, 0x59, 0xff, 0x3d,
-0xf7, 0x9a, 0xbf, 0xcc, 0xd1, 0xd4, 0x6f, 0x59,
-0x89, 0xb8, 0xe9, 0xb5, 0x02, 0x00, 0x00, 0x00,
-0x21, 0x82, 0x5e, 0xb8, 0xb5, 0x38, 0xdb, 0x7d,
-0x57, 0x56, 0x79, 0xb6, 0x9b, 0xd1, 0x8d, 0xef,
-0xa7, 0x96, 0x1a, 0xd3, 0x0b, 0x05, 0x00, 0x00,
-0x00, 0x42, 0x04, 0x9d, 0xdc, 0xc3, 0x5b, 0x60,
-0x69, 0x47, 0xb8, 0xef, 0x1a, 0x55, 0x9e, 0xdb,
-0xbe, 0x53, 0xac, 0x75, 0xd3, 0x4c, 0x2f, 0x14,
-0x00, 0x00, 0x00, 0x08, 0x11, 0xbc, 0x17, 0xe5,
-0x94, 0xaf, 0x7b, 0xc9, 0x2a, 0x4b, 0x3d, 0xf7,
-0xea, 0x77, 0x64, 0xf5, 0xe0, 0x37, 0x4c, 0x2f,
-0x14, 0x00, 0x00, 0x00, 0x08, 0x17, 0xb4, 0x75,
-0x76, 0x20, 0x9e, 0x6b, 0x17, 0x7b, 0x49, 0xeb,
-0x51, 0xd3, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x42,
-0x04, 0x0d, 0x74, 0xf1, 0x5e, 0x94, 0x2a, 0x3b,
-0xb9, 0xba, 0xb6, 0x9b, 0xd5, 0xdb, 0x69, 0xd5,
-0xfd, 0xa6, 0x17, 0x0a, 0x00, 0x00, 0x00, 0x84,
-0x08, 0xde, 0x8b, 0x72, 0xc6, 0x4f, 0xf4, 0x0c,
-0x57, 0xd1, 0x73, 0x33, 0xba, 0xea, 0x6d, 0xf4,
-0xd8, 0x8f, 0xac, 0x64, 0xd2, 0xf4, 0x5a, 0x01,
-0x00, 0x00, 0x80, 0x10, 0xc1, 0x7b, 0x51, 0x3a,
-0xb9, 0xad, 0xdc, 0x67, 0x73, 0x75, 0xd5, 0xdb,
-0x47, 0xf5, 0xb6, 0x1c, 0xdd, 0xf4, 0x41, 0xea,
-0x6a, 0x32, 0xbd, 0x50, 0x00, 0x00, 0x00, 0x20,
-0x44, 0xd0, 0x40, 0x27, 0xdd, 0xfa, 0xb1, 0x22,
-0x3c, 0xf7, 0x6d, 0x62, 0x5d, 0xf9, 0xd6, 0xac,
-0x7e, 0xfb, 0x17, 0xb4, 0x75, 0xb6, 0xe9, 0x85,
-0x02, 0x00, 0x00, 0x00, 0xe1, 0x82, 0x16, 0xdd,
-0x1c, 0x88, 0xed, 0xda, 0xf5, 0xc8, 0xf7, 0x2d,
-0x42, 0x0a, 0x1a, 0x00, 0x00, 0x00, 0xc8, 0x42,
-0x0d, 0xdb, 0x78, 0x87, 0x67, 0xf7, 0x6d, 0xdc,
-0xab, 0x73, 0xb3, 0xca, 0x2c, 0xa4, 0xcd, 0xc8,
-0xc9, 0x73, 0xed, 0xba, 0xf6, 0xdd, 0xd4, 0x79,
-0xd2, 0xf4, 0x42, 0x01, 0x00, 0x00, 0x80, 0x30,
-0x11, 0x8f, 0xd0, 0xe4, 0x2f, 0xca, 0xb7, 0x71,
-0xed, 0xb6, 0xab, 0xe2, 0xb9, 0x5c, 0x7f, 0x9e,
-0xd5, 0x86, 0xc7, 0x4d, 0xaf, 0x13, 0x00, 0x00,
-0x00, 0x08, 0x17, 0xb4, 0x7a, 0x8a, 0xa3, 0xed,
-0xea, 0x86, 0xba, 0x76, 0xcf, 0xbd, 0xf2, 0xcf,
-0xb2, 0x7a, 0xe8, 0xdb, 0x84, 0x14, 0x34, 0x00,
-0x00, 0x00, 0x60, 0x83, 0x5a, 0x8f, 0xf2, 0x2a,
-0x68, 0x95, 0x9d, 0x5c, 0x47, 0xfd, 0x99, 0x44,
-0xec, 0xfd, 0xbb, 0x4e, 0x99, 0x5e, 0x28, 0x00,
-0x00, 0x00, 0x10, 0x22, 0xf8, 0x41, 0xe0, 0xfb,
-0xbf, 0xec, 0xb3, 0xe1, 0x16, 0x0a, 0x8d, 0x38,
-0x00, 0x00, 0x00, 0x80, 0x5c, 0x68, 0xed, 0xc3,
-0x0a, 0x29, 0x65, 0x4d, 0xc3, 0xbd, 0x22, 0x57,
-0xf7, 0x7f, 0xc9, 0x4a, 0x44, 0x4d, 0x2f, 0x14,
-0x00, 0x00, 0x00, 0x08, 0x11, 0xd4, 0x5a, 0x47,
-0xd7, 0xbf, 0x57, 0xbe, 0x8d, 0xab, 0x68, 0xb5,
-0x19, 0x5d, 0xfe, 0x96, 0xac, 0xae, 0x7e, 0x07,
-0xc6, 0x11, 0x02, 0x00, 0x00, 0x00, 0x39, 0x24,
-0xe2, 0x34, 0xf5, 0xdb, 0xda, 0xa1, 0xae, 0xdc,
-0x76, 0xff, 0x34, 0x47, 0x6b, 0xa6, 0x98, 0x5e,
-0x27, 0x00, 0x00, 0x00, 0x10, 0x2e, 0x68, 0xcb,
-0xec, 0xe2, 0x3c, 0xf7, 0x4f, 0x1d, 0xf4, 0xe6,
-0xac, 0x7e, 0xf7, 0x1f, 0x68, 0xc4, 0x01, 0x00,
-0x00, 0x00, 0xd8, 0xa1, 0xfe, 0x0e, 0xba, 0xe1,
-0xbd, 0xfe, 0x7b, 0x6e, 0x46, 0x97, 0xfd, 0x09,
-0xff, 0xe7, 0xe9, 0xc3, 0xa6, 0x17, 0x0a, 0x00,
-0x00, 0x00, 0x84, 0x08, 0x5e, 0x05, 0xfd, 0x87,
-0xf3, 0x1d, 0x6c, 0xf7, 0x2d, 0x39, 0xd2, 0xb5,
-0x5d, 0xbb, 0x96, 0xdd, 0x6b, 0x7a, 0xa1, 0x00,
-0x00, 0x00, 0x40, 0xb8, 0xa0, 0x2d, 0x4f, 0x29,
-0x6d, 0xe3, 0x0a, 0x7d, 0xb6, 0xd0, 0x6a, 0x85,
-0xfa, 0xdd, 0x39, 0x14, 0x8f, 0x98, 0x5e, 0x28,
-0x00, 0x00, 0x00, 0x10, 0x22, 0xa8, 0xb3, 0x91,
-0xae, 0x79, 0x97, 0x46, 0x6c, 0xab, 0xe8, 0xb9,
-0x76, 0xfd, 0xf6, 0xad, 0xd4, 0xb4, 0xdf, 0xf4,
-0x42, 0x01, 0x00, 0x00, 0x80, 0x30, 0x41, 0x44,
-0x8f, 0xfd, 0xd0, 0x7f, 0xcf, 0xbd, 0xf4, 0x8d,
-0x39, 0x5a, 0xf3, 0xa0, 0xe9, 0x75, 0x02, 0x00,
-0x00, 0x00, 0xe1, 0x82, 0xb6, 0xcf, 0x53, 0xdd,
-0xc9, 0x15, 0xeb, 0x4d, 0x59, 0xe5, 0xd9, 0x6e,
-0x46, 0x0f, 0x7c, 0xcd, 0x4a, 0x26, 0x4c, 0x2f,
-0x14, 0x00, 0x00, 0x00, 0x08, 0x11, 0xd4, 0xdb,
-0x4a, 0x37, 0x7d, 0x50, 0x3f, 0xd4, 0x95, 0x79,
-0xee, 0x25, 0x36, 0xfd, 0xf6, 0x6d, 0xd4, 0x56,
-0x6f, 0x7a, 0xa1, 0x00, 0x00, 0x00, 0x40, 0x98,
-0xa0, 0x24, 0x3d, 0xf9, 0x0b, 0x85, 0x94, 0xf2,
-0x9b, 0x72, 0xe5, 0x60, 0xb5, 0x76, 0x5d, 0xfc,
-0x86, 0xac, 0xd6, 0x3e, 0x64, 0x7a, 0x9d, 0x00,
-0x00, 0x00, 0x40, 0xb8, 0xa0, 0xdd, 0xcf, 0x2b,
-0x6d, 0xe3, 0x4a, 0x3d, 0xf7, 0xe2, 0xd7, 0x3b,
-0xea, 0x81, 0xaf, 0x50, 0x12, 0x8d, 0x38, 0x00,
-0x00, 0x00, 0x80, 0x2c, 0x14, 0x1d, 0xa4, 0x1b,
-0xdf, 0x1f, 0x88, 0xed, 0x5e, 0xfc, 0xda, 0xb4,
-0xd8, 0x6f, 0x6b, 0xab, 0x33, 0xbd, 0x50, 0x00,
-0x00, 0x00, 0x20, 0x5c, 0xd0, 0x8c, 0xf3, 0x14,
-0x0c, 0xf7, 0x0d, 0x59, 0xe5, 0x98, 0xec, 0xeb,
-0x72, 0xf5, 0x5a, 0xb1, 0x56, 0x4c, 0x34, 0xbd,
-0x4a, 0x00, 0x00, 0x00, 0x20, 0x5c, 0xa4, 0x52,
-0xd0, 0x6f, 0x92, 0x6d, 0xe3, 0xbe, 0xde, 0xc1,
-0x76, 0x1d, 0x0c, 0x37, 0x4f, 0x13, 0xcf, 0xa1,
-0x38, 0xc6, 0x11, 0x02, 0x00, 0x00, 0x00, 0x59,
-0x78, 0x2f, 0xe8, 0x9b, 0x3e, 0x28, 0x2e, 0x9d,
-0x72, 0x0c, 0x75, 0x15, 0x3c, 0x77, 0xac, 0x4d,
-0x97, 0xbd, 0x99, 0xce, 0xa0, 0x17, 0x34, 0x00,
-0x00, 0x00, 0x60, 0x83, 0x88, 0xe6, 0x5e, 0x2a,
-0xdf, 0xc6, 0x55, 0xd4, 0x58, 0x07, 0xad, 0x98,
-0x64, 0x7a, 0x9d, 0x00, 0x00, 0x00, 0x40, 0xb8,
-0xa0, 0x86, 0x6d, 0xfc, 0x60, 0x91, 0xef, 0x9e,
-0x3b, 0xe6, 0x35, 0x59, 0xdd, 0xf1, 0x09, 0x2b,
-0x19, 0x37, 0xbd, 0x50, 0x00, 0x00, 0x00, 0x20,
-0x44, 0x50, 0x22, 0x4a, 0x77, 0x7e, 0xba, 0x38,
-0xcf, 0x3d, 0x3b, 0x2d, 0xbb, 0xe7, 0xda, 0xc5,
-0x7e, 0xcf, 0xa9, 0xbd, 0xa6, 0x17, 0x0a, 0x00,
-0x00, 0x00, 0x84, 0x0b, 0x5a, 0x76, 0x8f, 0x5e,
-0x78, 0x3b, 0xe6, 0xec, 0x5c, 0xd9, 0xdd, 0xf6,
-0xd5, 0x02, 0x5d, 0xf4, 0x2a, 0x5a, 0x7c, 0xab,
-0xe9, 0x55, 0x02, 0x00, 0x00, 0x00, 0xe1, 0x82,
-0x4e, 0xed, 0xe7, 0xe7, 0x7f, 0x35, 0x6c, 0xf7,
-0x35, 0x72, 0xcf, 0x1d, 0xb1, 0xdd, 0x8c, 0x26,
-0x7c, 0x1a, 0xe3, 0x08, 0x01, 0x00, 0x00, 0x00,
-0x3b, 0x94, 0x88, 0xd3, 0xed, 0xff, 0x20, 0xdf,
-0xc6, 0x55, 0xb1, 0x5d, 0xbb, 0xe7, 0xda, 0x35,
-0xf6, 0x6c, 0x3a, 0xb1, 0xcb, 0xf4, 0x42, 0x01,
-0x00, 0x00, 0x80, 0x70, 0x41, 0x4b, 0x6e, 0x53,
-0xf0, 0x5c, 0x85, 0x38, 0xd7, 0x45, 0x0b, 0xae,
-0x32, 0xbd, 0x4a, 0x00, 0x00, 0x00, 0x20, 0x5c,
-0x50, 0xe3, 0x1e, 0x7e, 0xfe, 0xd7, 0x7f, 0xdb,
-0x3d, 0x2b, 0xab, 0xf1, 0x1f, 0xb1, 0xa2, 0x83,
-0xa6, 0x17, 0x0a, 0x00, 0x00, 0x00, 0x84, 0x89,
-0x78, 0x84, 0x26, 0x7c, 0x4a, 0xcf, 0x6a, 0xd9,
-0xff, 0xbf, 0xea, 0x6d, 0x12, 0xfd, 0xf6, 0x2f,
-0xb2, 0xba, 0xe6, 0x9d, 0xcc, 0xe5, 0x4d, 0xaf,
-0x13, 0x00, 0x00, 0x00, 0x08, 0x17, 0x74, 0x6a,
-0x1f, 0xd5, 0xae, 0x17, 0xab, 0x66, 0xad, 0x40,
-0xec, 0xff, 0x37, 0x6c, 0xa3, 0x86, 0xed, 0x0e,
-0xda, 0x26, 0xd0, 0x60, 0x97, 0xe9, 0x55, 0x02,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xaa, 0x11, 0x8a, 0x0f, 0x53, 0x5f, 0x1b, 0xef,
-0x4d, 0xd1, 0xb8, 0x9b, 0x6a, 0xd7, 0xd1, 0xc1,
-0xe5, 0xa1, 0x53, 0xdd, 0x06, 0x7e, 0x6d, 0xa7,
-0x0f, 0x52, 0x7f, 0x3b, 0xbb, 0x5a, 0x7f, 0x56,
-0xdd, 0x52, 0xeb, 0xf1, 0x62, 0x8e, 0xac, 0xe2,
-0x17, 0xc3, 0xd4, 0x73, 0x9a, 0x22, 0xfd, 0xbe,
-0x5c, 0x0c, 0x00, 0x00, 0x80, 0x2a, 0x81, 0x77,
-0xa2, 0x68, 0x39, 0x4a, 0x9b, 0xfe, 0x40, 0x33,
-0x7f, 0x41, 0x93, 0xbe, 0x40, 0xb7, 0x7f, 0x82,
-0x8f, 0xe7, 0xbb, 0xe9, 0x03, 0x74, 0xfd, 0x7b,
-0xe9, 0xba, 0xf7, 0x84, 0x4e, 0x37, 0xfc, 0x35,
-0xbf, 0xb6, 0x9b, 0xff, 0x86, 0x5f, 0x27, 0xbb,
-0xda, 0x59, 0xbf, 0xa6, 0x57, 0xfe, 0xc0, 0xaf,
-0xbf, 0x88, 0x61, 0x07, 0xb4, 0x73, 0xbe, 0xc7,
-0x8b, 0xb9, 0xfe, 0xaf, 0xf8, 0xc5, 0x30, 0xdd,
-0xfa, 0x31, 0xba, 0xef, 0x5f, 0xe9, 0xb1, 0x1f,
-0xd2, 0xca, 0xdf, 0x53, 0xfd, 0x16, 0x8a, 0xa1,
-0xed, 0x15, 0x00, 0x00, 0x80, 0x42, 0xc8, 0x8a,
-0x0e, 0x52, 0x47, 0x03, 0xed, 0x5d, 0x4c, 0x4f,
-0x8f, 0xa1, 0x1b, 0xde, 0x47, 0x17, 0xa5, 0x8e,
-0xdb, 0x5c, 0x78, 0x16, 0x5d, 0xf8, 0xff, 0xca,
-0x4d, 0x67, 0xa5, 0x4e, 0x06, 0xbd, 0x9a, 0x9b,
-0xe0, 0xbc, 0xcb, 0xd9, 0x8a, 0xac, 0xce, 0x46,
-0xdd, 0x23, 0xb7, 0xd4, 0xdb, 0x4a, 0x97, 0xbe,
-0xd1, 0xa7, 0x8b, 0x49, 0x5d, 0xcf, 0x95, 0x6f,
-0xa5, 0xe9, 0xe7, 0xd1, 0xf6, 0xf9, 0xd4, 0x76,
-0xcc, 0x1a, 0xee, 0xe3, 0x37, 0x1c, 0x00, 0x00,
-0x40, 0x95, 0x33, 0xdc, 0x4b, 0x87, 0x57, 0xf2,
-0xd6, 0x4f, 0x77, 0x7c, 0x82, 0xdb, 0x96, 0x79,
-0x03, 0xf5, 0x55, 0x6c, 0x45, 0x2c, 0x2e, 0x7e,
-0x71, 0x02, 0xd5, 0xae, 0xb7, 0x22, 0x03, 0x8a,
-0xb7, 0x84, 0x28, 0x49, 0xf7, 0x7f, 0x39, 0x80,
-0x8b, 0x39, 0x8b, 0xc7, 0xe9, 0xcf, 0x5d, 0x4b,
-0x07, 0x97, 0x5b, 0xfd, 0xed, 0x81, 0xfe, 0x54,
-0x01, 0x00, 0x00, 0x84, 0x16, 0x9e, 0x67, 0x3e,
-0xb6, 0x89, 0x8f, 0x9e, 0xbf, 0xf1, 0x7d, 0xe5,
-0x19, 0xea, 0xaa, 0xeb, 0x2c, 0x1a, 0xf7, 0x61,
-0x7a, 0xf6, 0x2a, 0xbe, 0xde, 0x84, 0x52, 0x5e,
-0x9a, 0xd6, 0x4c, 0x0d, 0xf0, 0x7a, 0xae, 0x7b,
-0x37, 0xcf, 0xed, 0xef, 0x59, 0x48, 0xca, 0x5f,
-0x09, 0x00, 0x00, 0x00, 0x54, 0x06, 0xd4, 0x7d,
-0x86, 0x16, 0xde, 0x44, 0xb7, 0x7f, 0x3c, 0x95,
-0x67, 0x36, 0xee, 0x8f, 0x25, 0xd1, 0x98, 0x57,
-0xf3, 0xf5, 0x2e, 0x1a, 0x4f, 0xbd, 0xcd, 0xf2,
-0xfb, 0xd3, 0x56, 0xcf, 0x7b, 0x51, 0x06, 0x7a,
-0x3d, 0x37, 0xbc, 0x8f, 0xef, 0x56, 0x37, 0xd7,
-0x10, 0x21, 0x1d, 0x0d, 0x00, 0x00, 0x55, 0x40,
-0x32, 0x41, 0x35, 0x6b, 0x78, 0x56, 0xf6, 0x92,
-0x37, 0x98, 0xf7, 0xc4, 0xd2, 0xeb, 0xd2, 0x37,
-0xd2, 0x84, 0x7f, 0xa4, 0x9a, 0xd5, 0xec, 0x3e,
-0xb8, 0xde, 0xa5, 0x24, 0xdd, 0xf7, 0xef, 0x81,
-0x5f, 0xcc, 0xd8, 0xb3, 0x69, 0xdc, 0x87, 0x68,
-0xcb, 0x53, 0x98, 0x4b, 0x08, 0x00, 0x00, 0x15,
-0x4e, 0x7f, 0x3b, 0x2d, 0x1e, 0x4f, 0x17, 0xbf,
-0xde, 0xbc, 0x0f, 0x9a, 0xd5, 0x25, 0xaf, 0xa7,
-0x17, 0xef, 0xa0, 0x3e, 0xb7, 0x4d, 0x58, 0x5a,
-0xfd, 0x60, 0x89, 0x2e, 0xe6, 0xa2, 0x57, 0xd1,
-0xcc, 0xf3, 0xa9, 0xe5, 0xa8, 0x85, 0x40, 0x18,
-0x00, 0x00, 0x2a, 0x11, 0xea, 0x38, 0x41, 0xb3,
-0x2e, 0xe0, 0xd3, 0x7c, 0x8c, 0xdb, 0x5f, 0x18,
-0xc4, 0xee, 0xc3, 0x53, 0xbf, 0x66, 0xf7, 0xc4,
-0xf1, 0x76, 0xb5, 0xd4, 0x96, 0x34, 0x45, 0x70,
-0xdf, 0xbf, 0x51, 0xdd, 0x46, 0x58, 0x30, 0x00,
-0x00, 0x54, 0x18, 0xd4, 0x5a, 0xc7, 0x8f, 0xa3,
-0x5e, 0xe4, 0xa9, 0xce, 0x6a, 0xec, 0x6b, 0xf9,
-0x1c, 0x9f, 0xeb, 0xdf, 0xcb, 0x33, 0xb7, 0x13,
-0x3e, 0x15, 0x22, 0xdd, 0xfe, 0x0f, 0xfc, 0xc8,
-0xed, 0x65, 0x6f, 0xa2, 0x8b, 0x5f, 0xe7, 0x65,
-0x5d, 0xec, 0x6e, 0xb0, 0x7b, 0xd2, 0x76, 0x4c,
-0x7c, 0xcb, 0x12, 0x31, 0xba, 0xe7, 0x73, 0xf2,
-0x77, 0xb8, 0xfd, 0xe3, 0xd9, 0xeb, 0xb9, 0xf9,
-0x83, 0x74, 0xed, 0xbb, 0xf9, 0xc5, 0x78, 0xbb,
-0xcf, 0x13, 0x3e, 0x49, 0x07, 0x5e, 0xc2, 0x76,
-0x30, 0x00, 0x00, 0x54, 0x0c, 0x34, 0xd0, 0x49,
-0x53, 0xbe, 0xc2, 0x0b, 0x90, 0xb4, 0xec, 0xe0,
-0x9a, 0x77, 0xd2, 0xc3, 0xdf, 0xa6, 0xa5, 0x13,
-0x68, 0xcf, 0x42, 0xab, 0x6e, 0x93, 0x75, 0x7c,
-0xab, 0xd5, 0xb4, 0xcf, 0x6a, 0xda, 0x1f, 0x22,
-0x9d, 0xda, 0x6b, 0x1d, 0xdf, 0x62, 0xd5, 0xae,
-0xa5, 0x7d, 0x8b, 0x69, 0xf9, 0x7d, 0xf4, 0xf8,
-0xb9, 0x34, 0xfe, 0x6f, 0x35, 0xa3, 0xe0, 0x57,
-0xd3, 0x83, 0xdf, 0x60, 0xf7, 0x47, 0x7c, 0xdf,
-0x96, 0xdc, 0x21, 0x7b, 0x87, 0xb3, 0x68, 0xdb,
-0xd3, 0xd9, 0xeb, 0x39, 0xb1, 0xc3, 0xaa, 0xdf,
-0x4c, 0xfb, 0x5e, 0xa0, 0x35, 0x0f, 0xd2, 0x13,
-0x3f, 0xe5, 0x75, 0xce, 0xba, 0x16, 0x3c, 0xee,
-0x43, 0xc4, 0xee, 0x33, 0x00, 0x00, 0x80, 0xf2,
-0x87, 0x86, 0x07, 0x68, 0xda, 0xf7, 0x55, 0xcd,
-0x77, 0xec, 0xd9, 0x74, 0xc5, 0x9f, 0xd1, 0xd4,
-0x6f, 0xf0, 0x5e, 0x1c, 0x3d, 0xa7, 0xad, 0xa1,
-0x5e, 0x2b, 0x1e, 0xb1, 0x28, 0x69, 0x7a, 0x11,
-0x32, 0xd8, 0x15, 0xb2, 0xeb, 0x1c, 0xee, 0xe3,
-0xad, 0x33, 0x0e, 0xae, 0xa0, 0x3f, 0xfc, 0x82,
-0xae, 0xf9, 0x4b, 0x1a, 0xab, 0x96, 0x69, 0x67,
-0x77, 0x86, 0xdd, 0x9f, 0xe8, 0x90, 0xe0, 0x5d,
-0x4f, 0x1f, 0x94, 0xa7, 0xeb, 0x5f, 0xb8, 0xb5,
-0xe0, 0x65, 0xc4, 0x62, 0x67, 0x7e, 0x31, 0x3d,
-0x67, 0xf8, 0x8c, 0xc2, 0xe9, 0xe7, 0xd1, 0x55,
-0x6f, 0xe7, 0x37, 0x56, 0xd5, 0x82, 0x3f, 0x4c,
-0x2d, 0xb5, 0x25, 0xb8, 0x67, 0x00, 0x00, 0x00,
-0x02, 0x24, 0x11, 0xa3, 0x25, 0xb7, 0xab, 0x3e,
-0xf9, 0xaf, 0x7b, 0x0f, 0x3d, 0x73, 0x09, 0x9d,
-0xd8, 0x45, 0xe1, 0x37, 0x5c, 0x19, 0xd4, 0x7a,
-0x94, 0xe6, 0x8c, 0xe5, 0xfd, 0x2e, 0x14, 0x0f,
-0x58, 0xbd, 0x38, 0x81, 0x9b, 0x66, 0xe1, 0xfb,
-0xdc, 0xf5, 0x4f, 0x92, 0x17, 0xde, 0xf6, 0xf7,
-0x56, 0x3c, 0x2a, 0xb9, 0x98, 0x96, 0x1a, 0x7a,
-0xf6, 0xb7, 0xbc, 0x25, 0x97, 0x62, 0x5e, 0xfa,
-0xfe, 0x2f, 0x39, 0x85, 0xe4, 0x00, 0x00, 0x00,
-0xca, 0x02, 0x3a, 0xb2, 0x9a, 0xae, 0x78, 0x8b,
-0x52, 0x0c, 0x38, 0xf1, 0x1c, 0xda, 0x3e, 0x57,
-0xb1, 0x3d, 0x45, 0x59, 0xc0, 0xdb, 0x58, 0x1d,
-0x59, 0x45, 0x53, 0xbf, 0xa5, 0xb4, 0x3b, 0xcc,
-0xee, 0x52, 0xcd, 0x1a, 0xc1, 0x9b, 0x48, 0x53,
-0xd0, 0xec, 0xd6, 0x35, 0xee, 0x56, 0xb8, 0x18,
-0xe2, 0x7b, 0xbb, 0x93, 0xff, 0x4b, 0xa9, 0xfe,
-0x8d, 0xd9, 0xf4, 0x8b, 0x77, 0x94, 0x41, 0xda,
-0x01, 0x00, 0x00, 0x80, 0x08, 0x8a, 0xf4, 0xd3,
-0xc4, 0xcf, 0x2b, 0x05, 0x5c, 0x4f, 0xfe, 0x92,
-0x6f, 0x5f, 0x56, 0xe4, 0x03, 0xbf, 0xad, 0x9e,
-0x77, 0xbe, 0x52, 0x71, 0xbd, 0x49, 0x5f, 0x28,
-0x1c, 0x5a, 0x44, 0x27, 0x76, 0xd2, 0x18, 0x59,
-0xea, 0xf8, 0x85, 0xdb, 0xd4, 0x2e, 0x85, 0xac,
-0x33, 0x87, 0x78, 0xd1, 0xb5, 0x4a, 0x14, 0x7c,
-0xf5, 0x3b, 0xe8, 0xe4, 0x1e, 0xdf, 0x6f, 0x06,
-0x00, 0x00, 0x80, 0x12, 0x40, 0xeb, 0xa7, 0x29,
-0xf9, 0xce, 0x63, 0x3f, 0xa4, 0xde, 0x16, 0xd3,
-0x17, 0x1b, 0x20, 0xbc, 0xfc, 0x8c, 0xb9, 0x9e,
-0xf4, 0x3e, 0x8c, 0x3d, 0x9b, 0xd6, 0x3f, 0x9a,
-0xff, 0xda, 0x58, 0x84, 0x6e, 0xfb, 0xb8, 0xe4,
-0x85, 0x77, 0x7e, 0x5a, 0x3d, 0x6f, 0xc0, 0x77,
-0xa8, 0xa7, 0x9f, 0xa7, 0xf4, 0xa5, 0x68, 0xda,
-0xf7, 0x29, 0x59, 0x89, 0xdf, 0x88, 0x00, 0x00,
-0xa0, 0xa2, 0xa1, 0xa1, 0x1e, 0x1a, 0x27, 0x2d,
-0x06, 0x3e, 0x8b, 0x1e, 0xf9, 0x1e, 0x0d, 0x76,
-0x99, 0xbe, 0xd8, 0xc0, 0xa1, 0xc8, 0x00, 0x3d,
-0xfc, 0x5d, 0x79, 0xe0, 0x39, 0xee, 0x43, 0x82,
-0x10, 0x78, 0xe1, 0x8d, 0xb2, 0x74, 0xf1, 0xab,
-0xa8, 0xe9, 0x80, 0xc6, 0xc5, 0xb0, 0x1f, 0xcd,
-0xb4, 0xff, 0x95, 0xf7, 0xdc, 0xbe, 0xf8, 0xf5,
-0x54, 0xbf, 0xd9, 0xd7, 0xdb, 0x00, 0x00, 0x00,
-0x20, 0x70, 0x68, 0xcb, 0x6c, 0x79, 0x84, 0x75,
-0xe3, 0x07, 0x78, 0x91, 0x73, 0x75, 0xc0, 0x07,
-0x2c, 0xde, 0xfe, 0x09, 0xf9, 0x3d, 0xd9, 0xf6,
-0x4c, 0xfe, 0x0b, 0x4f, 0xec, 0x90, 0x57, 0x8f,
-0x2f, 0x1a, 0xaf, 0x77, 0x31, 0xbd, 0xcd, 0x34,
-0xfe, 0x23, 0xf2, 0x8b, 0x99, 0x71, 0x1e, 0x3a,
-0x72, 0x00, 0x00, 0x40, 0x79, 0xc1, 0x4b, 0x7d,
-0xdc, 0x9f, 0xed, 0xcc, 0x53, 0x36, 0x3c, 0x5e,
-0x55, 0xdd, 0x1e, 0x68, 0xef, 0x0b, 0xbc, 0xf3,
-0xa4, 0xfb, 0x6d, 0x79, 0xe0, 0x2b, 0x79, 0xad,
-0xa1, 0x29, 0x1e, 0x95, 0x67, 0x12, 0xee, 0xfc,
-0x8c, 0x95, 0x90, 0x54, 0x41, 0xe7, 0xbc, 0x27,
-0x63, 0xd7, 0xf3, 0xbc, 0x73, 0x88, 0xfb, 0xdb,
-0x5e, 0xfe, 0xa7, 0xd4, 0x73, 0xc6, 0xef, 0xdb,
-0x00, 0x00, 0x00, 0x20, 0x28, 0x78, 0xab, 0xc9,
-0x4b, 0x65, 0xbd, 0x13, 0xef, 0xfb, 0x77, 0x6b,
-0xb8, 0xd7, 0xf4, 0x95, 0x96, 0x14, 0xbe, 0x99,
-0x3b, 0xe5, 0xab, 0x72, 0xcb, 0x6b, 0xaf, 0xcf,
-0x7f, 0xe1, 0xfc, 0x2b, 0x65, 0xb9, 0xe2, 0xd7,
-0xd1, 0xa9, 0x7d, 0x7a, 0x57, 0x13, 0x8f, 0xf0,
-0x86, 0x21, 0xd2, 0x10, 0x78, 0xf3, 0x93, 0xbe,
-0xad, 0x1f, 0x00, 0x00, 0x40, 0xc0, 0xd0, 0xa6,
-0x27, 0xe4, 0x0f, 0xf6, 0x8d, 0x4f, 0xa8, 0xbe,
-0x5b, 0x6f, 0x2b, 0x3f, 0xc7, 0xe4, 0x2e, 0x97,
-0x46, 0xca, 0x03, 0x9d, 0xf2, 0x97, 0x97, 0x4c,
-0x0b, 0x6f, 0x92, 0xdf, 0x99, 0x57, 0xf2, 0xef,
-0x0c, 0xd5, 0xae, 0x97, 0x9f, 0x23, 0x5e, 0x7a,
-0x97, 0xf6, 0x8f, 0x69, 0xdf, 0x12, 0xf9, 0xc5,
-0x4c, 0xfb, 0xbe, 0xee, 0xdb, 0x02, 0x00, 0x00,
-0x30, 0x05, 0x9f, 0xb3, 0xe0, 0xfe, 0x54, 0xbf,
-0xe6, 0x1d, 0xea, 0x1d, 0x1e, 0x58, 0x3c, 0x48,
-0x97, 0xbe, 0x89, 0x17, 0x2f, 0xb9, 0xe8, 0xa1,
-0xef, 0x38, 0xbe, 0x7c, 0xf5, 0x14, 0xc9, 0x6b,
-0x4b, 0x2c, 0xa9, 0xe5, 0x3d, 0xf5, 0xeb, 0xfc,
-0x25, 0xc4, 0xa3, 0x74, 0xd3, 0x07, 0x25, 0xaf,
-0xba, 0xe5, 0xef, 0x24, 0x33, 0x0d, 0x0b, 0xef,
-0x4c, 0x74, 0x90, 0x77, 0xd5, 0x76, 0x7f, 0xdb,
-0x1b, 0xfe, 0x9a, 0x62, 0xc3, 0x5a, 0x6f, 0x0b,
-0x00, 0x00, 0xc0, 0x14, 0x7c, 0x98, 0x8e, 0xfb,
-0x53, 0xfd, 0xf1, 0x73, 0xd5, 0x77, 0x7e, 0x79,
-0x23, 0x0b, 0xe9, 0x1b, 0x5e, 0xf1, 0x67, 0x8e,
-0x5d, 0x94, 0x9f, 0xbe, 0x48, 0x6e, 0x79, 0xa1,
-0xd2, 0xc4, 0x73, 0x04, 0xab, 0x98, 0x77, 0x85,
-0xfc, 0x85, 0x4d, 0x07, 0xb5, 0x7f, 0x52, 0x8f,
-0xff, 0x9f, 0xe4, 0x3d, 0x2f, 0x79, 0x03, 0xb6,
-0x80, 0x01, 0x00, 0xa0, 0x2c, 0xa0, 0x64, 0x42,
-0x5e, 0x2f, 0xb4, 0xfc, 0x5e, 0xbd, 0xf7, 0x5c,
-0x31, 0x51, 0xee, 0x3e, 0xbb, 0xff, 0x28, 0x7e,
-0xed, 0xfd, 0x5f, 0x36, 0x6f, 0xa9, 0x5a, 0x1a,
-0xf7, 0x61, 0xc1, 0x2a, 0x8e, 0xac, 0x92, 0xa7,
-0xa0, 0x5f, 0x9c, 0xa0, 0xfd, 0xc3, 0x52, 0xe9,
-0x0e, 0xda, 0x5c, 0xa3, 0xfb, 0xb6, 0x00, 0x00,
-0x00, 0x4a, 0x0f, 0x6f, 0x7b, 0x75, 0xed, 0xbb,
-0x24, 0x8f, 0xf4, 0xed, 0x73, 0xf5, 0xde, 0xf3,
-0xf4, 0x61, 0x79, 0x17, 0xc7, 0x27, 0x7e, 0x2a,
-0x7e, 0xed, 0x9d, 0x9f, 0x32, 0x6f, 0xa9, 0x5a,
-0xba, 0xe2, 0x2d, 0x82, 0x55, 0x0c, 0xf7, 0xf2,
-0xfe, 0xd8, 0xee, 0x2f, 0xbc, 0xfb, 0x9f, 0x49,
-0xd4, 0x44, 0xda, 0xed, 0xc6, 0xbe, 0xf2, 0xa4,
-0xfc, 0x7a, 0x8e, 0xae, 0xd7, 0x7a, 0x4f, 0x00,
-0x00, 0x00, 0x46, 0xe0, 0xed, 0x1d, 0xae, 0x7a,
-0x9b, 0xe4, 0x91, 0x7e, 0x70, 0x85, 0xde, 0x7b,
-0xaa, 0x0c, 0xc3, 0xbd, 0xee, 0xdd, 0xec, 0x8f,
-0x16, 0xbc, 0xf6, 0x0e, 0x85, 0x53, 0xb7, 0xa1,
-0xd2, 0xc5, 0xaf, 0x17, 0xde, 0x03, 0x7a, 0xea,
-0x57, 0xb2, 0x17, 0xbe, 0x96, 0xce, 0x1c, 0xd2,
-0xbb, 0xb1, 0x87, 0x57, 0xc9, 0xaf, 0xe7, 0xd0,
-0xcb, 0x5a, 0xef, 0x09, 0x00, 0x00, 0xc0, 0x08,
-0xa9, 0xf8, 0x57, 0x36, 0x79, 0x76, 0xd3, 0x0c,
-0xed, 0xb7, 0x5d, 0xf5, 0x80, 0xdc, 0x29, 0xf6,
-0x2c, 0x16, 0xbc, 0xf0, 0xde, 0x7f, 0x35, 0x6f,
-0xa9, 0x5a, 0xba, 0xfa, 0xed, 0xe2, 0x3b, 0x70,
-0x78, 0xa5, 0xfc, 0xb5, 0x85, 0xe3, 0x08, 0xdd,
-0xef, 0xea, 0xe6, 0x27, 0xe5, 0xef, 0x79, 0xec,
-0x15, 0xdd, 0x1f, 0x16, 0x00, 0x00, 0x00, 0x23,
-0xd0, 0x6d, 0x1f, 0xf3, 0xd7, 0x26, 0xf8, 0x7b,
-0xb6, 0x1c, 0x95, 0xa7, 0xa0, 0x9f, 0xbc, 0x40,
-0xf0, 0xc2, 0x47, 0x7f, 0x60, 0xde, 0x52, 0xb5,
-0x34, 0xe1, 0x53, 0xe2, 0x3b, 0x10, 0x1d, 0xa4,
-0x6b, 0xde, 0x29, 0x7f, 0xad, 0x4e, 0x0a, 0x9a,
-0x5e, 0x9c, 0x20, 0xbb, 0x9e, 0xb3, 0xa8, 0xbd,
-0x41, 0xf7, 0x87, 0x05, 0x00, 0x00, 0xc0, 0x08,
-0xf4, 0xfb, 0xff, 0x96, 0x3c, 0xd5, 0xa7, 0x7c,
-0x95, 0x34, 0x0f, 0xcb, 0x58, 0x94, 0xa4, 0xbb,
-0xff, 0x45, 0xf2, 0xb6, 0xd7, 0xbf, 0x97, 0x22,
-0x03, 0xf9, 0xaf, 0x7b, 0xe6, 0x52, 0xf3, 0x96,
-0xaa, 0xa5, 0x87, 0xbf, 0xeb, 0x78, 0x0f, 0x66,
-0x9e, 0x2f, 0x79, 0xed, 0xd8, 0xd7, 0xa8, 0x37,
-0xe2, 0xe0, 0x85, 0xe5, 0x53, 0xbf, 0x29, 0x79,
-0xc3, 0xcb, 0xdf, 0x4c, 0x7d, 0xad, 0x7a, 0x3f,
-0x29, 0x00, 0x00, 0x00, 0x86, 0xa0, 0x79, 0x97,
-0x4b, 0x9e, 0xea, 0x57, 0xfe, 0x39, 0x75, 0x37,
-0x69, 0xbf, 0xed, 0xb2, 0x7b, 0x24, 0x6f, 0x7b,
-0xd1, 0xab, 0xe9, 0xf0, 0xca, 0xfc, 0x57, 0xad,
-0x7b, 0x44, 0x6e, 0x79, 0x97, 0xbe, 0x91, 0xae,
-0x7a, 0x7b, 0x58, 0xf4, 0xd2, 0xdd, 0x8e, 0x77,
-0x60, 0xcf, 0x42, 0xf9, 0xcb, 0xd7, 0x3e, 0xac,
-0x7a, 0x3f, 0x7b, 0x9b, 0xe9, 0xca, 0xb7, 0x4a,
-0xee, 0xcc, 0xf8, 0x8f, 0x5a, 0xc9, 0xca, 0x19,
-0xca, 0x0c, 0x00, 0x00, 0x95, 0x0d, 0xed, 0x98,
-0x2f, 0xb3, 0xbc, 0xb3, 0x68, 0xe5, 0x64, 0xed,
-0xb7, 0x3d, 0x73, 0x88, 0x1f, 0x47, 0x75, 0x7f,
-0xe7, 0x67, 0x2e, 0xc9, 0x7f, 0x55, 0xe3, 0x1e,
-0xf9, 0xc9, 0x9d, 0x07, 0xbf, 0x49, 0x9d, 0x27,
-0xa9, 0xab, 0x29, 0x14, 0x1a, 0xce, 0x1f, 0x81,
-0x94, 0x5d, 0x4b, 0x3c, 0x22, 0x7f, 0xb9, 0xa8,
-0x08, 0x4d, 0xfc, 0x6e, 0x6b, 0xa6, 0xca, 0xa7,
-0x20, 0xcd, 0x3c, 0x5f, 0xf7, 0xc7, 0x04, 0x00,
-0x00, 0xc0, 0x14, 0xbc, 0x04, 0xfa, 0x8a, 0xb7,
-0x48, 0x1e, 0xec, 0x77, 0x7c, 0x52, 0xbd, 0x05,
-0x56, 0xfa, 0x6d, 0x29, 0x49, 0x13, 0xcf, 0x91,
-0xbc, 0xed, 0x8d, 0xef, 0xcb, 0x4b, 0x41, 0x73,
-0xcf, 0x92, 0x0e, 0x1e, 0x62, 0xf1, 0x6f, 0xe3,
-0x6e, 0x5f, 0xef, 0x41, 0xd8, 0xa1, 0x81, 0x2e,
-0x9a, 0xf0, 0x69, 0xf9, 0xd7, 0xa4, 0x7d, 0x4b,
-0x4c, 0x5f, 0x29, 0x00, 0x00, 0x00, 0x55, 0xf8,
-0x78, 0x9d, 0xe9, 0x3f, 0x96, 0xe5, 0x8a, 0xcf,
-0xa2, 0x65, 0xf7, 0xe8, 0x8e, 0xb7, 0xa3, 0x15,
-0x93, 0xe4, 0xc9, 0xe4, 0xba, 0x8d, 0xf9, 0xaf,
-0x5a, 0x2a, 0xad, 0x32, 0xfa, 0x7f, 0x34, 0xfd,
-0x3c, 0xad, 0xca, 0xa5, 0x32, 0x87, 0x68, 0xf9,
-0x44, 0x79, 0x33, 0xcc, 0xeb, 0xde, 0x53, 0x38,
-0x8f, 0x18, 0x00, 0x00, 0x40, 0x98, 0xa1, 0xfd,
-0x4b, 0x69, 0xcc, 0x6b, 0x24, 0x8f, 0xf7, 0x6b,
-0xdf, 0x4d, 0xa7, 0xf5, 0x5a, 0x26, 0x52, 0x73,
-0x0d, 0x3f, 0xe5, 0xea, 0xfe, 0xb6, 0x0b, 0xae,
-0xc9, 0x7f, 0x55, 0x4b, 0x2d, 0x8f, 0x70, 0xa5,
-0x21, 0xf0, 0x8e, 0x79, 0x55, 0x32, 0x0f, 0x91,
-0x9a, 0x8f, 0xc8, 0xbb, 0x79, 0x30, 0xcd, 0xbb,
-0x92, 0xfd, 0x5e, 0xd3, 0x17, 0x0b, 0x00, 0x00,
-0x40, 0x03, 0x7e, 0x58, 0x66, 0xc2, 0x3f, 0xca,
-0x9f, 0xf0, 0x93, 0xff, 0x8b, 0x7a, 0x5b, 0x34,
-0xde, 0x36, 0x11, 0xa3, 0xbb, 0x3e, 0x23, 0x79,
-0xcf, 0x5b, 0x3e, 0x46, 0xb1, 0x48, 0xce, 0xab,
-0x92, 0x09, 0x9a, 0xf6, 0x3d, 0xf9, 0xc5, 0xdc,
-0xf0, 0x3e, 0x6a, 0xda, 0xef, 0xf7, 0x9d, 0x08,
-0x1d, 0xd4, 0xd7, 0x22, 0x2f, 0x50, 0x67, 0xba,
-0xe4, 0xf5, 0xd4, 0x74, 0xc0, 0xf4, 0xc5, 0x02,
-0x00, 0x00, 0xd0, 0x86, 0xb6, 0x3d, 0x43, 0x63,
-0xcf, 0x96, 0x67, 0xa1, 0x27, 0x7d, 0x81, 0xba,
-0xcf, 0xa8, 0x27, 0xa2, 0xe9, 0x65, 0x59, 0x0a,
-0x7a, 0xcc, 0xab, 0xa9, 0x7e, 0x6b, 0xfe, 0xab,
-0xea, 0xb7, 0xd0, 0x65, 0x7f, 0x22, 0x37, 0x9d,
-0x3b, 0xfe, 0x91, 0x9a, 0x0f, 0x33, 0xc3, 0xf6,
-0xfb, 0x66, 0x84, 0x03, 0x16, 0xde, 0xf7, 0xb4,
-0xd0, 0xe4, 0x2f, 0xca, 0x0b, 0xd2, 0x2e, 0x3c,
-0x8b, 0x66, 0xfe, 0x42, 0x77, 0x77, 0x00, 0x00,
-0x00, 0x40, 0x18, 0xa0, 0x78, 0x8c, 0xa6, 0x7c,
-0x5d, 0x6e, 0x79, 0x4c, 0x0f, 0x7c, 0x85, 0x37,
-0x19, 0x8e, 0x47, 0xe4, 0x6f, 0xca, 0xab, 0xa0,
-0x0f, 0xf3, 0xd0, 0xcc, 0xfd, 0x0d, 0xff, 0x78,
-0x83, 0xe0, 0x85, 0xfc, 0x54, 0x94, 0xc2, 0xf8,
-0xbf, 0xdb, 0xfe, 0x9e, 0x8e, 0xac, 0x52, 0xbc,
-0x98, 0x72, 0x22, 0x1e, 0xa5, 0xba, 0x4d, 0x34,
-0xe5, 0x6b, 0x4a, 0x3f, 0x91, 0xeb, 0xdf, 0x8b,
-0xb6, 0x1b, 0x00, 0x00, 0x50, 0xbe, 0xd0, 0xf1,
-0x6d, 0xbc, 0x2d, 0xb3, 0xca, 0x03, 0x7f, 0xdc,
-0x87, 0x59, 0x60, 0x6b, 0x75, 0x9f, 0x96, 0xbf,
-0x67, 0x22, 0x2e, 0x6f, 0xc4, 0x71, 0xdb, 0xc7,
-0xad, 0x44, 0xfe, 0xa9, 0x55, 0x6a, 0x3f, 0x2e,
-0x2f, 0x84, 0xce, 0x5c, 0xcc, 0xf2, 0xfb, 0x54,
-0x2e, 0xa6, 0x6c, 0xe8, 0x3c, 0xc9, 0xf3, 0x06,
-0xe3, 0x65, 0x73, 0xa9, 0x46, 0x74, 0xf1, 0x6b,
-0x69, 0xfd, 0x63, 0x55, 0xb2, 0x15, 0x0e, 0x00,
-0x00, 0x95, 0x09, 0x7b, 0x88, 0x6f, 0x9c, 0x21,
-0x0f, 0x57, 0x47, 0x74, 0xd9, 0x9b, 0xe9, 0xc1,
-0x6f, 0xd0, 0x9a, 0x07, 0xa9, 0xa3, 0xd1, 0xfd,
-0xe1, 0x4f, 0xcb, 0xee, 0x93, 0xbc, 0xd5, 0x98,
-0xd7, 0x08, 0x77, 0x72, 0xe9, 0xd0, 0xcb, 0xf2,
-0x8e, 0x13, 0xe9, 0x8b, 0xf9, 0x13, 0x9a, 0xfa,
-0x0d, 0xda, 0x32, 0x8b, 0xfa, 0x3b, 0x02, 0xbb,
-0x3b, 0x81, 0xc3, 0x0b, 0xd1, 0x99, 0xf3, 0xb2,
-0x5b, 0xfa, 0xc0, 0x57, 0x78, 0x27, 0x2b, 0x95,
-0x85, 0x33, 0x3d, 0xf5, 0x2b, 0x2b, 0x3a, 0x68,
-0xfa, 0xda, 0x01, 0x00, 0x00, 0x14, 0x47, 0x6c,
-0x98, 0x16, 0x5c, 0xa5, 0xfa, 0xe4, 0xbf, 0xe8,
-0x2c, 0x7e, 0x70, 0xf8, 0xd6, 0x8f, 0xd1, 0x73,
-0xd7, 0x50, 0xcd, 0x3a, 0x5e, 0xc4, 0x25, 0x32,
-0x62, 0x3a, 0x7d, 0x40, 0xbe, 0xb3, 0x2c, 0xec,
-0x22, 0x95, 0x8c, 0xd3, 0x9a, 0x87, 0x68, 0x8c,
-0x74, 0xf7, 0x73, 0xf4, 0x62, 0xae, 0xfa, 0x0b,
-0xba, 0xeb, 0x9f, 0x68, 0xc9, 0xad, 0xd4, 0xb8,
-0x8b, 0xd8, 0x6b, 0xcb, 0x24, 0x24, 0xe4, 0xb6,
-0xcb, 0x6e, 0xdd, 0x91, 0x55, 0xf4, 0xec, 0x55,
-0xbc, 0x17, 0xb7, 0xf4, 0x2c, 0xb6, 0x5d, 0x93,
-0xbf, 0x48, 0xbd, 0xcd, 0xa6, 0x57, 0x00, 0x00,
-0x00, 0xc0, 0x07, 0xb8, 0x1d, 0xcc, 0xfc, 0x85,
-0x7c, 0x7a, 0x42, 0xbe, 0xce, 0xa2, 0xcb, 0xff,
-0x94, 0x26, 0xff, 0x27, 0x2d, 0xbc, 0x89, 0x36,
-0x4c, 0xa7, 0x5d, 0x0b, 0xa8, 0x76, 0x7d, 0x5a,
-0x47, 0x56, 0xd3, 0x0d, 0xef, 0x97, 0xbc, 0x7c,
-0xc2, 0xa7, 0x28, 0x11, 0x15, 0x5f, 0xcf, 0xd2,
-0x09, 0x74, 0xe9, 0x9b, 0xf4, 0x2e, 0x86, 0x79,
-0xf1, 0xd5, 0xef, 0xa4, 0x07, 0xbf, 0xc6, 0xbf,
-0x18, 0xac, 0x9e, 0x4a, 0x3b, 0x6d, 0x17, 0x13,
-0x1e, 0xed, 0x98, 0x4f, 0xeb, 0x1f, 0xa5, 0xe7,
-0xae, 0xe5, 0x1e, 0xca, 0x6e, 0x9d, 0xca, 0x66,
-0x77, 0xce, 0x1a, 0x5f, 0x45, 0x13, 0x3f, 0x4f,
-0x83, 0xaa, 0xed, 0xb3, 0x00, 0x00, 0x00, 0x84,
-0x1f, 0xea, 0xef, 0xa0, 0x59, 0xbf, 0xa2, 0x8b,
-0xd5, 0x12, 0xd1, 0x4e, 0x1a, 0xfb, 0xba, 0xac,
-0xa4, 0xbd, 0x23, 0x98, 0xdd, 0x37, 0x89, 0x0f,
-0x17, 0x53, 0x2c, 0xc2, 0x3d, 0xfd, 0x8a, 0x3f,
-0xf5, 0xed, 0x62, 0x42, 0xa2, 0x62, 0x96, 0xc3,
-0xcc, 0xf7, 0x81, 0xaf, 0x50, 0xfb, 0xf1, 0x12,
-0x7f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x4e, 0x5f,
-0x1b, 0x0f, 0xcd, 0x2e, 0xd3, 0x0c, 0x3c, 0x8b,
-0xd1, 0xf2, 0x89, 0x8e, 0x17, 0x13, 0x1d, 0xe0,
-0x0d, 0xa0, 0xae, 0x79, 0x57, 0xe9, 0x2e, 0x26,
-0xcc, 0x1a, 0xf3, 0x6a, 0x9a, 0xf6, 0x7d, 0x6a,
-0xa9, 0x29, 0xe1, 0xa7, 0x01, 0x00, 0x00, 0x40,
-0x09, 0x19, 0xea, 0xa1, 0x75, 0x8f, 0xd2, 0xf5,
-0x7f, 0x55, 0x22, 0x5b, 0xb9, 0xf7, 0x5f, 0xdd,
-0x76, 0x6c, 0x63, 0xc3, 0xbc, 0x49, 0x97, 0x62,
-0x45, 0x74, 0x05, 0xeb, 0x92, 0xd7, 0xd3, 0xa2,
-0x71, 0x56, 0x47, 0x43, 0xe9, 0x3e, 0x06, 0x00,
-0x00, 0x00, 0x4a, 0x4f, 0x3c, 0x4a, 0x27, 0xb6,
-0xf3, 0x7d, 0x46, 0x69, 0x01, 0x95, 0x0f, 0xce,
-0xf2, 0x46, 0x49, 0x42, 0x95, 0x92, 0xd4, 0x71,
-0x82, 0x66, 0xff, 0x86, 0x2e, 0x7d, 0x83, 0xf6,
-0x6e, 0x69, 0x05, 0x68, 0xcc, 0x6b, 0xf8, 0x61,
-0xe7, 0x03, 0x2f, 0x59, 0xd1, 0xfc, 0xa1, 0xc9,
-0x00, 0x00, 0x00, 0x2a, 0x12, 0x3e, 0x93, 0x68,
-0xc3, 0xe3, 0x34, 0xe1, 0x93, 0xf2, 0x79, 0x82,
-0x45, 0xea, 0xe5, 0x49, 0xf2, 0x8b, 0x61, 0x2e,
-0x7c, 0x70, 0x19, 0xdd, 0x77, 0x0e, 0x9f, 0x4a,
-0x6c, 0xdc, 0x13, 0x4b, 0xa3, 0x8b, 0x5f, 0x4b,
-0xb7, 0x7c, 0x94, 0x5e, 0xba, 0x9b, 0x22, 0x7d,
-0x25, 0xf8, 0x71, 0x03, 0x00, 0x00, 0x08, 0x15,
-0xd4, 0x5e, 0x4f, 0x0b, 0x6f, 0xa4, 0x3b, 0x3f,
-0x23, 0x1f, 0x8e, 0xe0, 0x59, 0x93, 0xfe, 0xd3,
-0x4a, 0x26, 0x94, 0x2e, 0xa6, 0xaf, 0x8d, 0x56,
-0x3f, 0x48, 0xbf, 0xff, 0x12, 0x1f, 0x61, 0x6f,
-0xdc, 0x1f, 0x83, 0xd3, 0xd8, 0xd7, 0xf2, 0xc9,
-0x8f, 0xf3, 0xaf, 0xa0, 0x93, 0x7b, 0xcb, 0xe5,
-0x38, 0x15, 0x00, 0x00, 0x00, 0xff, 0x49, 0xc6,
-0xad, 0xe3, 0xdb, 0x68, 0xd5, 0x03, 0xf4, 0xd0,
-0xb7, 0xe8, 0xb7, 0x6f, 0x95, 0x57, 0x35, 0xeb,
-0xea, 0xd2, 0x37, 0x51, 0xe7, 0x29, 0x8d, 0xeb,
-0x69, 0x3b, 0x46, 0x5b, 0x9f, 0xa6, 0x27, 0x2f,
-0xe0, 0x73, 0x84, 0xe5, 0x4d, 0x92, 0xcb, 0x4a,
-0x97, 0xfd, 0x09, 0x9f, 0x76, 0xb1, 0xec, 0x5e,
-0xeb, 0xd8, 0xa6, 0x0a, 0xec, 0xae, 0x09, 0x00,
-0x00, 0xc0, 0x03, 0x89, 0x98, 0xd5, 0x71, 0x82,
-0x6a, 0xd7, 0xf1, 0xf1, 0xbe, 0x53, 0xbe, 0xea,
-0x73, 0x04, 0xba, 0x71, 0x86, 0xde, 0xc5, 0xb0,
-0xa8, 0xb0, 0xaf, 0xcd, 0x6a, 0xd8, 0x4e, 0x9b,
-0x9e, 0xe0, 0x55, 0xc1, 0xd7, 0x95, 0xaa, 0x5a,
-0x2c, 0x20, 0x5d, 0xf1, 0x16, 0x7e, 0x1c, 0x78,
-0xc9, 0x1d, 0x74, 0x78, 0xa5, 0xd5, 0x7a, 0x14,
-0xce, 0x0b, 0x00, 0x00, 0x40, 0x40, 0x3c, 0x6a,
-0x0d, 0xf5, 0x52, 0xf7, 0x69, 0xaa, 0x59, 0x43,
-0x2f, 0xdc, 0x42, 0xd3, 0xcf, 0xa5, 0x7b, 0x3e,
-0x47, 0x37, 0x7e, 0x80, 0x4f, 0x06, 0xbc, 0xfa,
-0x1d, 0x3c, 0x40, 0xf6, 0xa0, 0x27, 0x7e, 0xea,
-0xf1, 0x62, 0x58, 0x6c, 0x3e, 0xdc, 0x47, 0xbd,
-0xcd, 0x54, 0xbf, 0x99, 0x96, 0xdf, 0x4b, 0x33,
-0x7e, 0xc2, 0xcb, 0xc6, 0x6e, 0xfa, 0x1b, 0x7e,
-0x31, 0xd7, 0xfe, 0xa5, 0xc7, 0x8b, 0x09, 0x54,
-0xec, 0x16, 0xb1, 0x6b, 0xbb, 0xe9, 0x03, 0x7c,
-0x44, 0x23, 0xfb, 0xe6, 0xb0, 0xf0, 0x26, 0xda,
-0xff, 0x22, 0xef, 0x3f, 0x39, 0xd8, 0x9d, 0xb2,
-0x5d, 0x64, 0x9b, 0x01, 0x00, 0x00, 0xa8, 0xc2,
-0x7b, 0x67, 0x31, 0x47, 0x1e, 0xec, 0xa6, 0xee,
-0x26, 0xea, 0x68, 0xf0, 0xa2, 0xae, 0x26, 0x3f,
-0xaf, 0x27, 0xd2, 0xcf, 0x2f, 0xa6, 0xa7, 0xd9,
-0xe3, 0xc5, 0x04, 0x2a, 0x76, 0x8b, 0xd8, 0xb5,
-0x0d, 0xa3, 0xa4, 0x0a, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x15, 0x3a,
-0xbc, 0x92, 0xa6, 0x7c, 0x3d, 0x40, 0x1d, 0x78,
-0xc9, 0xf4, 0x12, 0x01, 0x00, 0x00, 0x80, 0xd0,
-0x41, 0x6d, 0xf5, 0xda, 0x13, 0x15, 0xb5, 0xf4,
-0xe8, 0x0f, 0x2c, 0x4a, 0x9a, 0x5e, 0x25, 0x00,
-0x00, 0x00, 0x10, 0x2e, 0x28, 0x11, 0xa3, 0xfb,
-0xfe, 0x2d, 0x40, 0xff, 0xbd, 0xfa, 0x1d, 0x34,
-0xd0, 0x65, 0x7a, 0x95, 0x00, 0x00, 0x00, 0x40,
-0xe8, 0xa0, 0x65, 0xf7, 0x04, 0xd9, 0xc7, 0xe3,
-0x2c, 0xda, 0xbb, 0xd8, 0xf4, 0x12, 0x01, 0x00,
-0x00, 0x80, 0xd0, 0x41, 0x2d, 0x47, 0x83, 0xed,
-0xa3, 0x35, 0xf3, 0x17, 0xa6, 0x97, 0x08, 0x00,
-0x00, 0x00, 0x84, 0x11, 0xba, 0xe7, 0xb3, 0x01,
-0xfa, 0xef, 0x55, 0x6f, 0xa3, 0xc1, 0x4e, 0xd3,
-0x4b, 0x04, 0x00, 0x00, 0x00, 0x42, 0x07, 0x2d,
-0x9f, 0x18, 0x6c, 0x08, 0xbc, 0x67, 0xa1, 0xe9,
-0x25, 0x02, 0x00, 0x00, 0x00, 0xa1, 0x83, 0x8f,
-0x14, 0xbc, 0xe4, 0xf5, 0x01, 0xfa, 0xef, 0xac,
-0x0b, 0x30, 0xb2, 0x10, 0x00, 0x00, 0x00, 0xc8,
-0x27, 0x1e, 0xa5, 0x09, 0x9f, 0x0a, 0xd0, 0x7f,
-0xaf, 0x7d, 0x37, 0x45, 0x06, 0x4c, 0x2f, 0x12,
-0x00, 0x00, 0x00, 0x08, 0x1d, 0xb4, 0xf8, 0x96,
-0x00, 0xfd, 0xf7, 0xa2, 0xb3, 0xf8, 0x10, 0x43,
-0x00, 0x00, 0x00, 0x00, 0xe4, 0x42, 0x4d, 0xfb,
-0x69, 0xec, 0xd9, 0x41, 0xa6, 0xa0, 0x7f, 0x8d,
-0x39, 0x86, 0x00, 0x00, 0x00, 0x40, 0x1e, 0x14,
-0x8f, 0xd2, 0x1d, 0x9f, 0x0c, 0xd0, 0x7f, 0x6f,
-0x78, 0x3f, 0x0d, 0xf5, 0x98, 0x5e, 0x25, 0x00,
-0x00, 0x00, 0x10, 0x3a, 0x68, 0xd1, 0xb8, 0x20,
-0x53, 0xd0, 0xaf, 0x46, 0x0a, 0x1a, 0x00, 0x00,
-0x00, 0x28, 0x84, 0x8e, 0x6f, 0xe3, 0x2e, 0x19,
-0x9c, 0x05, 0xcf, 0xbd, 0xd4, 0xf4, 0x12, 0x01,
-0x00, 0x00, 0x80, 0xd0, 0x41, 0x89, 0x38, 0x8d,
-0xff, 0x48, 0x90, 0x29, 0xe8, 0xf7, 0x51, 0x3c,
-0x6a, 0x7a, 0x95, 0x00, 0x00, 0x00, 0x40, 0xe8,
-0xa0, 0x45, 0x37, 0x05, 0x99, 0x82, 0x3e, 0x8b,
-0x6a, 0xd6, 0x9a, 0x5e, 0x22, 0x00, 0x00, 0x00,
-0x10, 0x3a, 0xe8, 0xf8, 0x56, 0x1a, 0xfb, 0x9a,
-0x20, 0x53, 0xd0, 0x97, 0x99, 0x5e, 0x22, 0x00,
-0x00, 0x00, 0x10, 0x3e, 0xa2, 0x83, 0xc1, 0xa6,
-0xa0, 0xc7, 0x7d, 0x88, 0xa2, 0xc3, 0xa6, 0x17,
-0x09, 0x00, 0x00, 0x00, 0x84, 0x0e, 0x9a, 0x77,
-0x45, 0x80, 0xfe, 0x3b, 0xe6, 0xd5, 0x54, 0xbf,
-0xd5, 0xf4, 0x12, 0x01, 0x00, 0x00, 0x80, 0xd0,
-0x41, 0xf5, 0x9b, 0xe9, 0xa2, 0x57, 0x05, 0x68,
-0xc1, 0xcf, 0xfe, 0xd6, 0xf4, 0x12, 0x01, 0x00,
-0x00, 0x80, 0xd0, 0x41, 0xf1, 0x18, 0xdd, 0xf4,
-0xc1, 0x20, 0x53, 0xd0, 0x7f, 0x6b, 0xc5, 0x86,
-0x4c, 0xaf, 0x12, 0x00, 0x00, 0x00, 0x08, 0x17,
-0xc4, 0x98, 0x77, 0x79, 0x80, 0xfe, 0x3b, 0xf6,
-0x6c, 0xaa, 0xdf, 0x62, 0x7a, 0x95, 0x00, 0x00,
-0x00, 0x40, 0xe8, 0xa0, 0xc3, 0xab, 0x82, 0x4d,
-0x41, 0x2f, 0x1a, 0x67, 0x7a, 0x89, 0x00, 0x00,
-0x00, 0x40, 0xe8, 0xa0, 0x48, 0x3f, 0x5d, 0xff,
-0xde, 0x00, 0xfd, 0x77, 0xfc, 0x47, 0x31, 0x0e,
-0x18, 0x00, 0x00, 0x00, 0x28, 0x84, 0xe6, 0x07,
-0x59, 0x05, 0xcd, 0x74, 0x62, 0x87, 0xe9, 0x25,
-0x02, 0x00, 0x00, 0x00, 0xa1, 0x83, 0x8e, 0x04,
-0x9d, 0x82, 0xbe, 0xc9, 0xf4, 0x12, 0x01, 0x00,
-0x00, 0x80, 0xd0, 0x41, 0x43, 0xbd, 0xc1, 0xa6,
-0xa0, 0xef, 0xfc, 0x34, 0xc5, 0x22, 0xa6, 0x57,
-0x09, 0x00, 0x00, 0x00, 0x84, 0x0c, 0x22, 0x9a,
-0xf5, 0xab, 0x00, 0xfd, 0xf7, 0xe2, 0xd7, 0xd1,
-0xc9, 0xbd, 0xa6, 0x17, 0x09, 0x00, 0x00, 0x00,
-0x84, 0x0e, 0x3a, 0xf0, 0x22, 0x5d, 0x78, 0x56,
-0x80, 0x16, 0xfc, 0xe2, 0x04, 0xd3, 0x4b, 0x04,
-0x00, 0x00, 0x00, 0x42, 0x07, 0xc5, 0x86, 0xe8,
-0xda, 0x77, 0x05, 0xe8, 0xbf, 0xb7, 0x7f, 0xd2,
-0x4a, 0xc4, 0x4d, 0xaf, 0x12, 0x00, 0x00, 0x00,
-0x08, 0x1d, 0x34, 0xeb, 0x97, 0x01, 0xfa, 0xef,
-0x98, 0xb3, 0xe9, 0xf4, 0x41, 0xd3, 0x4b, 0x04,
-0x00, 0x00, 0x00, 0x42, 0x07, 0xed, 0x5b, 0x1c,
-0xa0, 0xff, 0x32, 0x2d, 0xbb, 0xd7, 0xf4, 0x12,
-0x01, 0x00, 0x00, 0x80, 0xd0, 0x41, 0x03, 0x1d,
-0x74, 0xd5, 0xdb, 0x03, 0xf4, 0xdf, 0xfb, 0xfe,
-0x8d, 0x92, 0x48, 0x41, 0x03, 0x00, 0x00, 0x00,
-0x79, 0x10, 0xcd, 0xf8, 0x59, 0x80, 0xfe, 0x3b,
-0xf6, 0x6c, 0x6a, 0xa9, 0x35, 0xbd, 0x46, 0x00,
-0x00, 0x00, 0x20, 0x74, 0xd0, 0x9e, 0x45, 0xc1,
-0xa6, 0xa0, 0x97, 0x4f, 0x34, 0xbd, 0x44, 0x00,
-0x00, 0x00, 0x20, 0x74, 0xd0, 0x50, 0x0f, 0x5d,
-0xf5, 0xb6, 0x40, 0x53, 0xd0, 0x56, 0x22, 0x66,
-0x7a, 0x95, 0x00, 0x00, 0x00, 0x40, 0xd8, 0x20,
-0x7a, 0xec, 0x87, 0x01, 0xfa, 0xef, 0xa5, 0x6f,
-0x44, 0x0a, 0x1a, 0x00, 0x00, 0x00, 0x28, 0x84,
-0xb6, 0xcd, 0x09, 0x36, 0x05, 0xbd, 0xe6, 0x21,
-0xd3, 0x4b, 0x04, 0x00, 0x00, 0x00, 0x42, 0x07,
-0xf5, 0xb6, 0xd0, 0xe5, 0x6f, 0x0e, 0xd0, 0x7f,
-0x1f, 0xf8, 0xf2, 0xff, 0x07, 0x66, 0x87, 0xe4,
-0x0f, 0x36, 0x10, 0x0e, 0x00,
diff --git a/board/esd/voh405/voh405.c b/board/esd/voh405/voh405.c
deleted file mode 100644 (file)
index 3cc2206..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/* logo bitmap data - gzip compressed and generated by bin2c */
-unsigned char logo_bmp_320[] =
-{
-#include "logo_320_240_4bpp.c"
-};
-
-unsigned char logo_bmp_640[] =
-{
-#include "logo_640_480_24bpp.c"
-};
-
-
-/*
- * include common lcd code (for esd boards)
- */
-#include "../common/lcd.c"
-
-#include "../common/s1d13704_320_240_4bpp.h"
-#include "../common/s1d13806_320_240_4bpp.h"
-#include "../common/s1d13806_640_480_16bpp.h"
-
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFFB5);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       unsigned char *duart0_mcr = (unsigned char *)((ulong)DUART0_BA + 4);
-       unsigned char *duart1_mcr = (unsigned char *)((ulong)DUART1_BA + 4);
-       unsigned short *lcd_contrast =
-               (unsigned short *)((ulong)CONFIG_SYS_FPGA_BASE_ADDR + CONFIG_SYS_FPGA_CTRL + 4);
-       unsigned short *lcd_backlight =
-               (unsigned short *)((ulong)CONFIG_SYS_FPGA_BASE_ADDR + CONFIG_SYS_FPGA_CTRL + 6);
-       unsigned char *dst;
-       ulong len = sizeof(fpgadata);
-       int status;
-       int index;
-       int i;
-       char *str;
-
-       dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
-       if (gunzip (dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
-               printf ("GUNZIP ERROR - must RESET board to recover\n");
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       status = fpga_boot(dst, len);
-       if (status != 0) {
-               printf("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i=0; i<4; i++) {
-                       len = dst[index];
-                       printf("FPGA: %s\n", &(dst[index+1]));
-                       index += len+3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i=20; i>0; i--) {
-                       printf("Rebooting in %2d seconds \r",i);
-                       for (index=0;index<1000;index++)
-                               udelay(1000);
-               }
-               putc ('\n');
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       puts("FPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i=0; i<4; i++) {
-               len = dst[index];
-               printf("%s ", &(dst[index+1]));
-               index += len+3;
-       }
-       putc ('\n');
-
-       free(dst);
-
-       /*
-        * Reset FPGA via FPGA_INIT pin
-        */
-       out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) | FPGA_INIT); /* setup FPGA_INIT as output */
-       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) & ~FPGA_INIT);  /* reset low */
-       udelay(1000); /* wait 1ms */
-       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) | FPGA_INIT);   /* reset high */
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Reset external DUARTs
-        */
-       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) | CONFIG_SYS_DUART_RST); /* set reset to high */
-       udelay(10); /* wait 10us */
-       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) & ~CONFIG_SYS_DUART_RST); /* set reset to low */
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Set NAND-FLASH GPIO signals to default
-        */
-       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) & ~(CONFIG_SYS_NAND_CLE | CONFIG_SYS_NAND_ALE));
-       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) | CONFIG_SYS_NAND_CE);
-
-       /*
-        * Setup EEPROM write protection
-        */
-       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) | CONFIG_SYS_EEPROM_WP);
-       out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) | CONFIG_SYS_EEPROM_WP);
-
-       /*
-        * Enable interrupts in exar duart mcr[3]
-        */
-       out_8(duart0_mcr, 0x08);
-       out_8(duart1_mcr, 0x08);
-
-       /*
-        * Init lcd interface and display logo
-        */
-       str = getenv("bd_type");
-       if (strcmp(str, "voh405_bw") == 0) {
-               lcd_setup(0, 1);
-               lcd_init((uchar *)CONFIG_SYS_LCD_SMALL_REG, (uchar *)CONFIG_SYS_LCD_SMALL_MEM,
-                        regs_13704_320_240_4bpp,
-                        sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
-                        logo_bmp_320, sizeof(logo_bmp_320));
-       } else if (strcmp(str, "voh405_bwbw") == 0) {
-               lcd_setup(0, 1);
-               lcd_init((uchar *)CONFIG_SYS_LCD_SMALL_REG, (uchar *)CONFIG_SYS_LCD_SMALL_MEM,
-                        regs_13704_320_240_4bpp,
-                        sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
-                        logo_bmp_320, sizeof(logo_bmp_320));
-               lcd_setup(1, 1);
-               lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG, (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                        regs_13806_320_240_4bpp,
-                        sizeof(regs_13806_320_240_4bpp)/sizeof(regs_13806_320_240_4bpp[0]),
-                        logo_bmp_320, sizeof(logo_bmp_320));
-       } else if (strcmp(str, "voh405_bwc") == 0) {
-               lcd_setup(0, 1);
-               lcd_init((uchar *)CONFIG_SYS_LCD_SMALL_REG, (uchar *)CONFIG_SYS_LCD_SMALL_MEM,
-                        regs_13704_320_240_4bpp,
-                        sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
-                        logo_bmp_320, sizeof(logo_bmp_320));
-               lcd_setup(1, 0);
-               lcd_init((uchar *)CONFIG_SYS_LCD_BIG_REG, (uchar *)CONFIG_SYS_LCD_BIG_MEM,
-                        regs_13806_640_480_16bpp,
-                        sizeof(regs_13806_640_480_16bpp)/sizeof(regs_13806_640_480_16bpp[0]),
-                        logo_bmp_640, sizeof(logo_bmp_640));
-       } else {
-               printf("Unsupported bd_type defined (%s) -> No display configured!\n", str);
-               return 0;
-       }
-
-       /*
-        * Set invert bit in small lcd controller
-        */
-       out_8((unsigned char *)(CONFIG_SYS_LCD_SMALL_REG + 2),
-             in_8((unsigned char *)(CONFIG_SYS_LCD_SMALL_REG + 2)) | 0x01);
-
-       /*
-        * Set default contrast voltage on epson vga controller
-        */
-       out_be16(lcd_contrast, 0x4646);
-
-       /*
-        * Enable backlight
-        */
-       out_be16(lcd_backlight, 0xffff);
-
-       /*
-        * Enable external I2C bus
-        */
-       out_be32((void*)GPIO0_TCR, in_be32((void*)GPIO0_TCR) | CONFIG_SYS_IIC_ON);
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming VOH405");
-       } else {
-               puts(str);
-       }
-
-       if (getenv_f("bd_type", str, sizeof(str)) != -1) {
-               printf(" (%s)", str);
-       } else {
-               puts(" (Missing bd_type!)");
-       }
-
-       putc ('\n');
-
-       return 0;
-}
-
-#ifdef CONFIG_IDE_RESET
-#define FPGA_MODE (CONFIG_SYS_FPGA_BASE_ADDR + CONFIG_SYS_FPGA_CTRL)
-void ide_set_reset(int on)
-{
-       /*
-        * Assert or deassert CompactFlash Reset Pin
-        */
-       if (on) {               /* assert RESET */
-               out_be16((void *)FPGA_MODE,
-                        in_be16((void *)FPGA_MODE) & ~CONFIG_SYS_FPGA_CTRL_CF_RESET);
-       } else {                /* release RESET */
-               out_be16((void *)FPGA_MODE,
-                        in_be16((void *)FPGA_MODE) | CONFIG_SYS_FPGA_CTRL_CF_RESET);
-       }
-}
-#endif /* CONFIG_IDE_RESET */
-
-#if defined(CONFIG_RESET_PHY_R)
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-
-       /*
-        * Disable sleep mode in LXT971
-        */
-       lxt971_no_sleep();
-#endif
-}
-#endif
-
-#if defined(CONFIG_SYS_EEPROM_WREN)
-/* Input: <dev_addr>  I2C address of EEPROM device to enable.
- *         <state>     -1: deliver current state
- *                    0: disable write
- *                    1: enable write
- *  Returns:           -1: wrong device address
- *                      0: dis-/en- able done
- *                  0/1: current state if <state> was -1.
- */
-int eeprom_write_enable (unsigned dev_addr, int state)
-{
-       if (CONFIG_SYS_I2C_EEPROM_ADDR != dev_addr) {
-               return -1;
-       } else {
-               switch (state) {
-               case 1:
-                       /* Enable write access, clear bit GPIO0. */
-                       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) & ~CONFIG_SYS_EEPROM_WP);
-                       state = 0;
-                       break;
-               case 0:
-                       /* Disable write access, set bit GPIO0. */
-                       out_be32((void*)GPIO0_OR, in_be32((void*)GPIO0_OR) | CONFIG_SYS_EEPROM_WP);
-                       state = 0;
-                       break;
-               default:
-                       /* Read current status back. */
-                       state = (0 == (in_be32((void*)GPIO0_OR) & CONFIG_SYS_EEPROM_WP));
-                       break;
-               }
-       }
-       return state;
-}
-
-int do_eep_wren (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int query = argc == 1;
-       int state = 0;
-
-       if (query) {
-               /* Query write access state. */
-               state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, -1);
-               if (state < 0) {
-                       puts ("Query of write access state failed.\n");
-               } else {
-                       printf ("Write access for device 0x%0x is %sabled.\n",
-                               CONFIG_SYS_I2C_EEPROM_ADDR, state ? "en" : "dis");
-                       state = 0;
-               }
-       } else {
-               if ('0' == argv[1][0]) {
-                       /* Disable write access. */
-                       state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, 0);
-               } else {
-                       /* Enable write access. */
-                       state = eeprom_write_enable (CONFIG_SYS_I2C_EEPROM_ADDR, 1);
-               }
-               if (state < 0) {
-                       puts ("Setup of write access state failed.\n");
-               }
-       }
-
-       return state;
-}
-
-U_BOOT_CMD(eepwren,    2,      0,      do_eep_wren,
-       "Enable / disable / query EEPROM write access",
-       ""
-);
-#endif /* #if defined(CONFIG_SYS_EEPROM_WREN) */
diff --git a/board/esd/wuh405/Kconfig b/board/esd/wuh405/Kconfig
deleted file mode 100644 (file)
index 8a7df4d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_WUH405
-
-config SYS_BOARD
-       default "wuh405"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "WUH405"
-
-endif
diff --git a/board/esd/wuh405/MAINTAINERS b/board/esd/wuh405/MAINTAINERS
deleted file mode 100644 (file)
index 782c72a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-WUH405 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/esd/wuh405/
-F:     include/configs/WUH405.h
-F:     configs/WUH405_defconfig
diff --git a/board/esd/wuh405/Makefile b/board/esd/wuh405/Makefile
deleted file mode 100644 (file)
index b9beeff..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = wuh405.o flash.o \
-       ../common/misc.o \
-       ../common/esd405ep_nand.o \
diff --git a/board/esd/wuh405/flash.c b/board/esd/wuh405/flash.c
deleted file mode 100644 (file)
index 23e8164..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-       int size_val = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       switch (size_b0) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/wuh405/fpgadata.c b/board/esd/wuh405/fpgadata.c
deleted file mode 100644 (file)
index a964f9f..0000000
+++ /dev/null
@@ -1,3636 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0xe2, 0x44, 0xc5, 0x42,
-0x00, 0x03, 0x77, 0x75, 0x68, 0x34, 0x30, 0x35,
-0x5f, 0x31, 0x2e, 0x62, 0x69, 0x74, 0x00, 0xec,
-0xbd, 0x0d, 0x74, 0x14, 0xd7, 0x95, 0x2e, 0xba,
-0xeb, 0x54, 0x49, 0x94, 0xba, 0x5b, 0xea, 0x42,
-0x48, 0x1e, 0xd9, 0x60, 0x5c, 0x6a, 0x09, 0xd2,
-0x28, 0x8d, 0x68, 0x24, 0x47, 0x60, 0x21, 0x4b,
-0x45, 0x8b, 0x78, 0x14, 0x20, 0x41, 0xe3, 0x78,
-0x12, 0xee, 0x7d, 0x5e, 0x99, 0xb6, 0x43, 0x66,
-0x78, 0x33, 0xc4, 0x97, 0xc4, 0xb9, 0x77, 0x88,
-0x27, 0xd7, 0x3e, 0x6a, 0x09, 0x23, 0x2c, 0x6c,
-0xda, 0x36, 0x89, 0x71, 0xe2, 0xc9, 0x34, 0x98,
-0x24, 0xd8, 0x61, 0x32, 0x0d, 0xc2, 0x46, 0x80,
-0x63, 0x97, 0xb0, 0xe2, 0x34, 0x58, 0xc6, 0x8a,
-0xe3, 0xc9, 0x60, 0xcc, 0xe0, 0x26, 0x51, 0x6c,
-0xd9, 0x96, 0xb1, 0x8c, 0x19, 0x5b, 0x20, 0x40,
-0xef, 0xec, 0x53, 0x5d, 0xd5, 0x55, 0xfd, 0x23,
-0x27, 0x77, 0xd6, 0xbc, 0x35, 0x6f, 0xbd, 0x61,
-0xd6, 0xba, 0x77, 0xa7, 0xba, 0x52, 0xa9, 0x73,
-0x74, 0x6a, 0xef, 0xef, 0x7c, 0xfb, 0xdb, 0xfb,
-0x40, 0x91, 0x77, 0xcc, 0xf8, 0x3f, 0x00, 0xe1,
-0x36, 0x28, 0xfe, 0xdb, 0xff, 0xb9, 0xf6, 0xfa,
-0xe0, 0x67, 0xfe, 0x62, 0x61, 0xed, 0x1d, 0x5f,
-0x5d, 0x03, 0xb7, 0x83, 0xbb, 0xee, 0xce, 0xcf,
-0x04, 0xbf, 0xf6, 0xad, 0x6f, 0x2c, 0xbc, 0xfe,
-0x7a, 0xf8, 0x2a, 0xfb, 0x4f, 0xc1, 0xe0, 0x67,
-0x16, 0x04, 0x17, 0x2d, 0x08, 0x2e, 0x84, 0x35,
-0x50, 0xb4, 0xf0, 0x33, 0x8d, 0x75, 0x8b, 0x1b,
-0x83, 0xf5, 0xf0, 0x35, 0x10, 0xea, 0x77, 0x4d,
-0xb2, 0x7f, 0x4f, 0x3e, 0xfa, 0xe7, 0x7f, 0x19,
-0x04, 0x2a, 0x00, 0xc0, 0xb4, 0xa0, 0x10, 0xc6,
-0xff, 0xdf, 0x1d, 0x14, 0x54, 0x01, 0x68, 0xcb,
-0xfc, 0x20, 0xe8, 0xf8, 0x9f, 0x21, 0xf5, 0x7b,
-0x51, 0x10, 0x54, 0xfb, 0x7f, 0x16, 0x82, 0xa0,
-0x41, 0x3b, 0x68, 0x5b, 0x84, 0x52, 0xf8, 0x43,
-0xfe, 0x75, 0xd1, 0x94, 0x21, 0xfd, 0x61, 0xf7,
-0x4b, 0xe6, 0xfd, 0x93, 0xc7, 0x68, 0xde, 0x9b,
-0xd2, 0xff, 0x5a, 0xce, 0xc5, 0x52, 0x56, 0x01,
-0x09, 0x7e, 0xf2, 0xed, 0x82, 0x46, 0xcd, 0xa7,
-0x5e, 0x3c, 0xf9, 0x07, 0x3d, 0xff, 0x7f, 0x99,
-0xcf, 0xbf, 0xf2, 0x47, 0xde, 0x0f, 0xca, 0x1f,
-0x70, 0x3b, 0x1b, 0xaf, 0x69, 0x5c, 0x54, 0x40,
-0x06, 0x02, 0x40, 0xc1, 0x0f, 0x2e, 0x20, 0x14,
-0x62, 0xb9, 0x8c, 0x96, 0x65, 0xe6, 0xfd, 0xfa,
-0xc6, 0x2b, 0x30, 0xd1, 0xd9, 0x92, 0x74, 0x8f,
-0x88, 0xdf, 0xaa, 0x98, 0xa4, 0x0d, 0x27, 0x8a,
-0xc7, 0xc4, 0x3a, 0x66, 0xb4, 0x0c, 0x7b, 0xc7,
-0xc5, 0x31, 0x78, 0x83, 0xd6, 0x27, 0xd1, 0x10,
-0xc2, 0xe6, 0xfd, 0x15, 0x3f, 0x86, 0xc3, 0xb4,
-0x36, 0xe9, 0xde, 0x4d, 0xe6, 0x42, 0x4f, 0x75,
-0x65, 0x7f, 0xcf, 0x37, 0x9e, 0xf7, 0xe1, 0x95,
-0x84, 0xb7, 0x8f, 0xbc, 0x09, 0x3d, 0xd4, 0x97,
-0x74, 0xf7, 0x91, 0xa4, 0x64, 0xce, 0x62, 0x42,
-0xea, 0x92, 0x7b, 0x21, 0xa0, 0xbb, 0x63, 0x85,
-0xc3, 0xd0, 0x2b, 0x07, 0x06, 0xdd, 0x41, 0x02,
-0x78, 0x25, 0xc1, 0x8c, 0x63, 0xd2, 0xc3, 0x92,
-0xaa, 0x33, 0xe3, 0x88, 0xa0, 0x9a, 0xcf, 0x2f,
-0x18, 0x86, 0xc3, 0x50, 0xdb, 0xcf, 0x9e, 0x1f,
-0x9b, 0xde, 0x09, 0x35, 0xfd, 0x2b, 0xe2, 0x35,
-0x7e, 0x38, 0x4c, 0x6a, 0x75, 0x77, 0x1c, 0x9f,
-0x0f, 0x3e, 0x34, 0xc6, 0xa4, 0xf5, 0xa9, 0xfb,
-0x97, 0x96, 0x8f, 0xc2, 0x04, 0x34, 0xeb, 0xde,
-0x1a, 0xf1, 0x26, 0x8a, 0x46, 0x71, 0x7c, 0x86,
-0x9f, 0x5d, 0x99, 0xad, 0x5f, 0x17, 0x17, 0xcf,
-0xc2, 0xeb, 0x50, 0xa7, 0x7b, 0xe3, 0xe2, 0xd0,
-0x32, 0xf3, 0xfe, 0xb8, 0xb0, 0x1f, 0x26, 0xa1,
-0x45, 0xf7, 0x26, 0x3b, 0xbe, 0xc6, 0x8c, 0x45,
-0xfa, 0xaa, 0x31, 0x71, 0xbf, 0x3a, 0x49, 0x5a,
-0xf4, 0x92, 0xb1, 0x69, 0x83, 0xec, 0xca, 0x73,
-0xba, 0x77, 0x4c, 0x1c, 0x01, 0x73, 0xbc, 0x43,
-0xca, 0x2e, 0xe3, 0xf9, 0x31, 0x71, 0x97, 0x3e,
-0x01, 0x8d, 0x7a, 0x71, 0x50, 0x9c, 0x27, 0x4d,
-0x48, 0xcd, 0xfd, 0x5e, 0x7c, 0xfe, 0xbb, 0xa4,
-0x19, 0x9f, 0x3f, 0x26, 0x99, 0xef, 0x9f, 0x28,
-0xa8, 0xc6, 0xf7, 0xd7, 0xdd, 0xbb, 0xe9, 0xa7,
-0xd8, 0xdb, 0x56, 0xe9, 0xf2, 0x18, 0x99, 0x4f,
-0x71, 0x44, 0x33, 0xe3, 0x64, 0x14, 0x3a, 0x81,
-0x0f, 0xe4, 0x1c, 0x5b, 0xfd, 0xa9, 0xf1, 0x4a,
-0x2b, 0x81, 0xcf, 0x8f, 0x9f, 0xfc, 0x52, 0x7a,
-0x5c, 0xf0, 0xb3, 0xd9, 0x28, 0xfc, 0x53, 0xe3,
-0x4a, 0x90, 0xe8, 0xf0, 0xb8, 0x61, 0x8c, 0xb3,
-0x6f, 0xc5, 0xf8, 0x37, 0xa6, 0x7c, 0x49, 0x3b,
-0x10, 0x9b, 0x9f, 0x74, 0x7f, 0xdb, 0x75, 0x15,
-0x6c, 0xa2, 0x95, 0x23, 0xae, 0x6f, 0xcf, 0x7e,
-0x05, 0x0e, 0xc4, 0xbe, 0x3e, 0xe2, 0xde, 0x40,
-0xde, 0x60, 0x57, 0xd8, 0x4f, 0x1b, 0xc8, 0x09,
-0xeb, 0xf9, 0x6d, 0xf2, 0x32, 0xf8, 0x30, 0xde,
-0xa4, 0x7b, 0x55, 0xb1, 0x8b, 0x0d, 0x64, 0x71,
-0xd2, 0x1b, 0x14, 0xff, 0xf4, 0xc4, 0x87, 0xd1,
-0xa6, 0x11, 0x77, 0x50, 0x1c, 0x84, 0xdf, 0x01,
-0xfb, 0x29, 0x28, 0xbe, 0x42, 0xcc, 0xf5, 0xa0,
-0x15, 0xec, 0x57, 0x26, 0xcb, 0xd8, 0xfc, 0x28,
-0xe2, 0x7e, 0x78, 0x1f, 0x1a, 0x87, 0x8a, 0xe3,
-0xa2, 0xdf, 0x98, 0xb1, 0xb1, 0xaa, 0xd4, 0x54,
-0x8f, 0x89, 0x43, 0xc4, 0x9c, 0x1f, 0x59, 0xda,
-0x03, 0x2f, 0xe2, 0x45, 0x75, 0xda, 0xb7, 0x60,
-0x82, 0x36, 0xbe, 0xea, 0x79, 0xfa, 0xc5, 0xf9,
-0x2a, 0xbb, 0x2d, 0xe9, 0x89, 0xb3, 0x69, 0xe4,
-0xf7, 0xc7, 0xc5, 0x63, 0x60, 0xcd, 0x4f, 0xc5,
-0x36, 0xf8, 0x17, 0x98, 0xaf, 0xbb, 0xc3, 0x64,
-0x16, 0x3c, 0x07, 0x6a, 0xa2, 0xf8, 0x9b, 0xe2,
-0x2d, 0xf4, 0x80, 0x34, 0x5f, 0x97, 0xd7, 0x93,
-0x53, 0x70, 0x00, 0x7f, 0x5a, 0x4f, 0xce, 0x59,
-0xf3, 0xa9, 0xc2, 0xd3, 0x7c, 0x50, 0x3d, 0x23,
-0x91, 0xef, 0x49, 0x07, 0x22, 0xf3, 0x46, 0xe4,
-0x1b, 0xc8, 0x57, 0xb4, 0x03, 0xec, 0x4a, 0xd1,
-0x06, 0x72, 0x1a, 0x0e, 0x18, 0xe3, 0xd5, 0xad,
-0xe7, 0x8f, 0x48, 0x5d, 0xf0, 0x30, 0x9f, 0xcf,
-0x23, 0xf7, 0xb2, 0x69, 0x54, 0xf5, 0xa2, 0x60,
-0xe8, 0x0b, 0x6a, 0xaf, 0x18, 0xd0, 0xe5, 0x20,
-0x39, 0x4e, 0x53, 0x13, 0xfb, 0x8a, 0xf5, 0xfc,
-0x64, 0xf9, 0x08, 0x1c, 0x83, 0x66, 0xea, 0x1d,
-0x15, 0x0f, 0xeb, 0x17, 0xa1, 0x91, 0x7a, 0x62,
-0x55, 0x7f, 0x43, 0x2f, 0xb2, 0x2b, 0x81, 0x98,
-0x38, 0xce, 0x0d, 0xf6, 0xa7, 0x1f, 0x97, 0xcc,
-0xf1, 0xb6, 0x09, 0x31, 0x18, 0x87, 0x66, 0xf0,
-0x52, 0xb7, 0xca, 0x8d, 0x05, 0xb4, 0x2a, 0x09,
-0xe3, 0x04, 0xaf, 0x88, 0x67, 0x52, 0x3f, 0x89,
-0xaf, 0x80, 0xb9, 0xfe, 0x65, 0xb6, 0x7e, 0x8e,
-0x42, 0xb3, 0xe6, 0xfd, 0xbe, 0xb8, 0x0b, 0x5e,
-0x83, 0x26, 0xcd, 0x13, 0x15, 0xab, 0xe1, 0xa0,
-0xc0, 0xae, 0x44, 0xc5, 0xbf, 0xa4, 0x17, 0x80,
-0x1b, 0x47, 0xac, 0xef, 0x85, 0x4a, 0xcb, 0xc8,
-0x66, 0xa8, 0xd5, 0xdc, 0x65, 0x44, 0x62, 0xf7,
-0xd7, 0x6a, 0xc5, 0x51, 0x12, 0xf0, 0x1c, 0xc4,
-0x2b, 0xd1, 0xd2, 0xdf, 0x53, 0xc3, 0x20, 0x49,
-0xcb, 0x2d, 0x2c, 0x16, 0xaa, 0xa5, 0xcd, 0x42,
-0xad, 0xb6, 0x22, 0x5a, 0xba, 0x4b, 0x79, 0x94,
-0xfd, 0xea, 0x57, 0x08, 0x7b, 0xbe, 0x71, 0xdb,
-0xb0, 0x69, 0xbc, 0x60, 0xad, 0x07, 0x7f, 0x59,
-0x35, 0x74, 0xc0, 0x3a, 0x76, 0xf1, 0xa6, 0xea,
-0xd8, 0x83, 0x10, 0x58, 0x5e, 0x54, 0x7a, 0x4c,
-0x82, 0xbd, 0x10, 0xd0, 0xdc, 0x0a, 0x19, 0x88,
-0xa5, 0x8c, 0x23, 0x82, 0xb9, 0x1e, 0x36, 0x14,
-0x87, 0xa1, 0x1b, 0x07, 0x15, 0x13, 0x63, 0xf4,
-0x04, 0x34, 0xcb, 0x9e, 0xc8, 0x0c, 0x1c, 0x78,
-0x13, 0x0e, 0x33, 0x4c, 0x53, 0xe3, 0x3d, 0x2d,
-0x9a, 0xeb, 0x73, 0x7b, 0xc1, 0xab, 0xc0, 0x07,
-0x35, 0x24, 0x9e, 0x87, 0x0b, 0xfe, 0xe6, 0xe5,
-0x25, 0x0f, 0x75, 0x0e, 0xe3, 0x95, 0xe5, 0x6c,
-0x98, 0xe7, 0x21, 0x35, 0xde, 0x37, 0x89, 0xf9,
-0x3d, 0x56, 0x94, 0x0f, 0x1b, 0x17, 0xdb, 0xc5,
-0x6a, 0x7a, 0x14, 0xee, 0x0a, 0x05, 0xb6, 0x89,
-0xec, 0x8a, 0xd4, 0x8c, 0x13, 0x75, 0x5e, 0xbd,
-0x6c, 0xdc, 0xff, 0x02, 0x98, 0xf7, 0x2f, 0x56,
-0x92, 0xd0, 0x07, 0xb5, 0xcc, 0xd1, 0xb8, 0x6f,
-0x63, 0x2f, 0xe6, 0x03, 0x79, 0x13, 0xe1, 0x57,
-0x64, 0x17, 0x35, 0x0c, 0x70, 0x53, 0x72, 0xdc,
-0x9a, 0xff, 0x36, 0xe8, 0x82, 0xbd, 0x42, 0x40,
-0x9b, 0xa9, 0x7c, 0x69, 0x0e, 0xec, 0x90, 0xfd,
-0x21, 0xb9, 0x94, 0x0c, 0xe0, 0x78, 0x43, 0xb2,
-0x82, 0x86, 0x10, 0x58, 0xca, 0xc6, 0xfb, 0x8a,
-0x60, 0x3e, 0x7f, 0x7b, 0xd9, 0x2e, 0x36, 0x69,
-0x25, 0x6c, 0x7e, 0x0a, 0xbf, 0x46, 0x3a, 0x40,
-0xd5, 0xe4, 0x68, 0x68, 0x98, 0x4d, 0x7b, 0x40,
-0x73, 0x45, 0x99, 0xff, 0x31, 0xe6, 0x33, 0xf4,
-0xa6, 0xb5, 0x1e, 0x62, 0x05, 0x7f, 0x69, 0xbc,
-0xbf, 0x22, 0x4e, 0xd3, 0xde, 0x96, 0x6a, 0xf0,
-0xb5, 0xd9, 0xfb, 0x0b, 0xcd, 0x4b, 0x67, 0xb1,
-0x61, 0xaa, 0x38, 0x10, 0xf6, 0xfe, 0x23, 0x96,
-0xbf, 0x4a, 0x4c, 0xdf, 0x65, 0xfc, 0xd1, 0x1f,
-0xab, 0x3a, 0x2b, 0xa7, 0x66, 0x63, 0x18, 0x32,
-0x8d, 0x8b, 0x96, 0xff, 0x91, 0x15, 0x73, 0xbd,
-0x89, 0x61, 0x7d, 0x04, 0x6a, 0x05, 0x0f, 0x15,
-0x55, 0x3e, 0xed, 0x1e, 0x63, 0xbd, 0x35, 0xe2,
-0x4f, 0xc7, 0xac, 0xf5, 0xec, 0x2f, 0xf0, 0xc3,
-0x21, 0x61, 0x2e, 0x75, 0x0f, 0xbb, 0xe6, 0x49,
-0x87, 0xa0, 0x96, 0xca, 0xb1, 0xba, 0x79, 0xd4,
-0x30, 0x98, 0x1b, 0x39, 0x04, 0x3e, 0xea, 0x8e,
-0x91, 0x63, 0xe9, 0xf5, 0x60, 0xfa, 0x9f, 0xea,
-0xc8, 0x4a, 0x19, 0xbd, 0x4d, 0x5b, 0x90, 0x94,
-0xf0, 0x2b, 0xf8, 0xbd, 0x30, 0x03, 0x3d, 0x12,
-0xbb, 0xdf, 0x5c, 0x6f, 0x54, 0xb9, 0x95, 0x7d,
-0xa4, 0x73, 0xd8, 0xf7, 0xeb, 0xba, 0x05, 0x0e,
-0xa8, 0x81, 0x81, 0x8a, 0x6f, 0xbb, 0xca, 0xf0,
-0xb3, 0x4d, 0xb0, 0xef, 0xf7, 0x5f, 0xe1, 0x39,
-0x5a, 0x89, 0xdf, 0xef, 0x88, 0x75, 0x7f, 0x77,
-0xf7, 0x57, 0x94, 0x8f, 0xe9, 0x8d, 0x49, 0xef,
-0x06, 0xf1, 0x2b, 0xf0, 0x57, 0x4f, 0xdc, 0xf8,
-0xbb, 0x59, 0x17, 0xc5, 0xd9, 0xf0, 0x71, 0x47,
-0xcb, 0xc5, 0xc0, 0x06, 0xf1, 0x34, 0x4c, 0xd2,
-0x1b, 0xf0, 0xa7, 0x77, 0xe6, 0x9a, 0xf7, 0xcb,
-0x05, 0x7b, 0xb8, 0xf7, 0x66, 0x83, 0xda, 0x15,
-0x9b, 0x50, 0x9b, 0x13, 0xde, 0xfd, 0xc2, 0x30,
-0xba, 0x91, 0xa3, 0xcc, 0x8d, 0x24, 0x4d, 0x7f,
-0x72, 0xe4, 0x5e, 0x73, 0x7e, 0x40, 0x7a, 0x96,
-0xb9, 0x1d, 0x16, 0xbf, 0xd6, 0x8a, 0x77, 0x2c,
-0x7b, 0xa3, 0x7b, 0xd1, 0xb0, 0xe7, 0xb2, 0xd8,
-0x22, 0xbc, 0x1b, 0xad, 0x39, 0xe3, 0x19, 0x17,
-0x9f, 0xd6, 0x58, 0x20, 0xc3, 0xf8, 0xa5, 0xc7,
-0xcc, 0xf9, 0xdf, 0x5d, 0xf1, 0x18, 0x7a, 0x0f,
-0xdd, 0xbd, 0x8e, 0x94, 0xc2, 0x5b, 0xb0, 0xe0,
-0x8c, 0xff, 0x2e, 0x42, 0x76, 0xfd, 0x3a, 0x56,
-0x9b, 0x2c, 0x5e, 0x4f, 0x4e, 0x2b, 0xdc, 0x9f,
-0xac, 0x27, 0xef, 0x58, 0x7f, 0x5f, 0xa0, 0x8f,
-0xb1, 0xd1, 0x7d, 0x5d, 0x77, 0xaf, 0x89, 0xdc,
-0x1a, 0xdb, 0x04, 0xf3, 0x07, 0x8a, 0xea, 0x6e,
-0x6e, 0xea, 0x3e, 0xe0, 0xe3, 0xfe, 0xea, 0x9f,
-0x29, 0xfe, 0x34, 0x73, 0xbd, 0xcd, 0xff, 0xa8,
-0xd2, 0x03, 0xc6, 0x7c, 0x02, 0x21, 0xf2, 0xe3,
-0x85, 0x01, 0xbd, 0x28, 0x7e, 0x4d, 0x2b, 0xf7,
-0x48, 0x45, 0x41, 0x9f, 0x6e, 0x3a, 0xf6, 0x84,
-0xf5, 0xbd, 0xef, 0x2e, 0x3f, 0xab, 0xf2, 0x41,
-0x05, 0xc4, 0xe5, 0xf0, 0x32, 0x8b, 0x47, 0x47,
-0xc7, 0x5a, 0xfd, 0x45, 0x13, 0xe4, 0xef, 0x74,
-0xe6, 0x3f, 0x7f, 0x4a, 0x53, 0xe3, 0x7d, 0xc7,
-0x5a, 0x3f, 0x54, 0xd8, 0x93, 0x8a, 0x47, 0xad,
-0x23, 0xd5, 0x68, 0xd4, 0xc6, 0xc5, 0xdd, 0x1d,
-0xef, 0xe2, 0x8c, 0xc5, 0xc5, 0x51, 0x01, 0xaf,
-0xfc, 0x29, 0x4e, 0x94, 0xf9, 0xfe, 0x95, 0xca,
-0x33, 0xa9, 0x78, 0x27, 0x6e, 0x90, 0x5e, 0x26,
-0x4b, 0x58, 0x98, 0x9b, 0xd1, 0xd8, 0x75, 0x0f,
-0x59, 0xa4, 0x17, 0x8f, 0xb1, 0xf5, 0x80, 0x81,
-0x8f, 0xf9, 0x73, 0x7d, 0x99, 0xf9, 0xfe, 0x3b,
-0xa4, 0x75, 0xa9, 0xf8, 0x45, 0xe6, 0xd1, 0x1e,
-0x1e, 0x76, 0x5b, 0xd7, 0x4a, 0x87, 0x85, 0x5a,
-0x7d, 0x45, 0x9c, 0xbc, 0x4b, 0x0f, 0x1b, 0xf1,
-0x2b, 0xa9, 0x59, 0xeb, 0xa1, 0x20, 0x20, 0xe3,
-0x45, 0xd7, 0x6e, 0xb2, 0x66, 0xd9, 0x0f, 0xa0,
-0x04, 0x7f, 0x9d, 0x23, 0xa4, 0x6e, 0x7b, 0x07,
-0xcc, 0xfb, 0xad, 0xf5, 0x26, 0x97, 0x79, 0xa0,
-0x57, 0x65, 0x93, 0xa0, 0x46, 0x54, 0xb5, 0x53,
-0x08, 0x0c, 0xad, 0x08, 0x7e, 0x69, 0xa9, 0x6a,
-0xe0, 0x01, 0x18, 0x84, 0x5e, 0x29, 0x60, 0xe0,
-0x01, 0x73, 0xfa, 0xa1, 0x78, 0x1d, 0x4c, 0x28,
-0xb5, 0x7a, 0x49, 0x4c, 0x5c, 0x03, 0xec, 0xfd,
-0x4f, 0xcc, 0x3e, 0x37, 0xa3, 0x5a, 0x99, 0xf0,
-0x2d, 0x1a, 0xbc, 0x3f, 0x3e, 0x6d, 0x64, 0x0b,
-0xae, 0x90, 0xad, 0x71, 0x51, 0xb7, 0xfc, 0x4f,
-0xec, 0x17, 0x97, 0x60, 0x52, 0xbb, 0x0e, 0xe3,
-0xf5, 0x10, 0x1b, 0x78, 0xf3, 0x09, 0xef, 0xfe,
-0x56, 0x1d, 0x26, 0xd7, 0xb6, 0x0c, 0x62, 0x58,
-0xd7, 0x26, 0x94, 0xe6, 0x01, 0x34, 0x0a, 0xcd,
-0xf9, 0xd4, 0xcb, 0xaf, 0x00, 0x5f, 0x24, 0x71,
-0xb1, 0x59, 0x7a, 0xb9, 0xa3, 0x59, 0xf4, 0xee,
-0x23, 0x01, 0x78, 0xff, 0x86, 0x4f, 0x9d, 0x2c,
-0x4e, 0x88, 0xef, 0xb4, 0xbd, 0xae, 0xd5, 0x25,
-0x03, 0x08, 0x84, 0xac, 0xf9, 0x57, 0xce, 0xca,
-0x1c, 0xff, 0x44, 0x4b, 0xd7, 0x31, 0x27, 0x54,
-0x1b, 0x77, 0x7f, 0x44, 0xaa, 0x63, 0x5b, 0x97,
-0x7d, 0x7a, 0x48, 0xde, 0xcd, 0x96, 0xfd, 0x56,
-0xcd, 0x17, 0x92, 0x71, 0xbc, 0x96, 0xff, 0x2f,
-0x18, 0x94, 0x53, 0x1f, 0xd1, 0x4a, 0x5c, 0x06,
-0xe0, 0x5e, 0xb8, 0x73, 0xa5, 0xf4, 0x38, 0x51,
-0x13, 0x45, 0x40, 0xf4, 0xee, 0x47, 0xc3, 0xbe,
-0x84, 0x8c, 0xe3, 0xb5, 0xde, 0xa7, 0x60, 0x8f,
-0x31, 0x7b, 0x51, 0xb2, 0x0e, 0x7e, 0x00, 0xb5,
-0xc9, 0xd6, 0xb8, 0xab, 0x9a, 0xc1, 0x86, 0x1a,
-0x5d, 0xde, 0x49, 0x75, 0xc4, 0x3f, 0x9a, 0x8c,
-0xf8, 0xc7, 0x5a, 0x9f, 0x5d, 0xe6, 0x7a, 0x70,
-0x07, 0xc8, 0xeb, 0xd0, 0xbc, 0x77, 0x55, 0xbc,
-0x2a, 0xcc, 0x60, 0x49, 0x9d, 0xfe, 0xf9, 0xa8,
-0xf8, 0x36, 0xfc, 0x1a, 0xe2, 0xb8, 0x90, 0x74,
-0xcb, 0x3f, 0x9c, 0x81, 0xd4, 0x7a, 0x88, 0x89,
-0x4d, 0x2c, 0xbe, 0xb7, 0xd0, 0x7f, 0x08, 0x8a,
-0xe3, 0xf0, 0x77, 0xd0, 0xd8, 0xef, 0x4d, 0x3e,
-0x3f, 0x8e, 0x3f, 0xb5, 0x7b, 0xc7, 0x3a, 0xc7,
-0xcd, 0x3f, 0x17, 0xe8, 0xb0, 0x07, 0xde, 0x35,
-0xf0, 0xcf, 0x3a, 0x0c, 0xf4, 0x23, 0x0c, 0x06,
-0xc4, 0xe0, 0xfd, 0x82, 0x6b, 0xf4, 0xe2, 0x6d,
-0x33, 0xde, 0x91, 0x8e, 0x76, 0x1f, 0xc2, 0xe7,
-0xdb, 0xf0, 0x8f, 0x14, 0x30, 0xfe, 0xe8, 0x31,
-0x36, 0xd6, 0x1e, 0xa8, 0x1d, 0x73, 0x8f, 0x11,
-0x3f, 0x6c, 0x85, 0x4f, 0xf7, 0xbb, 0x62, 0x64,
-0x84, 0xa4, 0xde, 0xff, 0x9c, 0xf5, 0xe7, 0x4d,
-0x96, 0xaf, 0x34, 0x40, 0x4e, 0xbc, 0x70, 0x1d,
-0x1b, 0x66, 0x20, 0xca, 0x26, 0x6a, 0x37, 0x41,
-0xe0, 0x57, 0x24, 0x91, 0x04, 0xbb, 0xb2, 0x1b,
-0x1d, 0x51, 0x1a, 0xff, 0x84, 0x85, 0xd9, 0x46,
-0xd0, 0x5f, 0x5d, 0xf7, 0x15, 0x0e, 0x0c, 0x66,
-0xfe, 0x1d, 0x21, 0xdd, 0x9b, 0xa2, 0x0c, 0x08,
-0xad, 0x8e, 0x5c, 0x3c, 0xb2, 0x29, 0x56, 0x19,
-0x96, 0x9d, 0xf8, 0xc7, 0xa3, 0xfd, 0x0e, 0xf1,
-0x4f, 0x93, 0x78, 0x07, 0x79, 0x1e, 0x9a, 0x76,
-0x6f, 0xbd, 0x41, 0xec, 0xa1, 0xbf, 0x8b, 0x2d,
-0x3e, 0x53, 0x0c, 0xe2, 0x11, 0x7a, 0x34, 0xd6,
-0x98, 0x0c, 0x30, 0xfc, 0x63, 0xbd, 0x8f, 0x76,
-0x6d, 0x6a, 0x7e, 0x7e, 0x25, 0x72, 0x63, 0x60,
-0xda, 0x98, 0x98, 0xd4, 0x26, 0xb4, 0xe6, 0x23,
-0x2c, 0xa2, 0x0d, 0x69, 0x93, 0xed, 0xd7, 0x69,
-0xde, 0x0f, 0xc4, 0xa1, 0x42, 0x73, 0xfe, 0x77,
-0x17, 0x8c, 0x9a, 0x4e, 0x69, 0x1d, 0x37, 0x3c,
-0x1f, 0xe2, 0x42, 0x55, 0x0b, 0x13, 0x9e, 0x5e,
-0xc4, 0x9f, 0x5a, 0x1d, 0xce, 0xcf, 0x3b, 0x90,
-0xf6, 0xff, 0x8f, 0xa5, 0x40, 0x4e, 0xe9, 0x29,
-0xe6, 0x7f, 0x98, 0x1b, 0xb9, 0x13, 0x66, 0x41,
-0x67, 0xb8, 0x72, 0x70, 0xf9, 0x9d, 0x0c, 0xff,
-0xfc, 0x13, 0x7c, 0x1a, 0x1d, 0xcb, 0x39, 0xeb,
-0xef, 0xab, 0xc3, 0x0f, 0x4d, 0x90, 0x83, 0x68,
-0x27, 0x30, 0xc6, 0x60, 0xcf, 0x4d, 0xbe, 0x4d,
-0x3b, 0x7f, 0x3f, 0xd2, 0xb6, 0x21, 0x34, 0x09,
-0xdf, 0xa5, 0x95, 0x49, 0x36, 0xde, 0x31, 0xcb,
-0xff, 0xb4, 0x95, 0x0d, 0x1a, 0x4e, 0xa6, 0x8f,
-0x0c, 0xc2, 0xe3, 0x02, 0xbb, 0x3f, 0x4e, 0x8a,
-0x69, 0x8f, 0xb4, 0x46, 0x77, 0x2d, 0x26, 0x2f,
-0xb1, 0xa9, 0xae, 0x4d, 0xfa, 0x11, 0xff, 0x98,
-0xeb, 0x73, 0xa4, 0x7c, 0x37, 0x70, 0x90, 0x73,
-0x56, 0x5c, 0x2b, 0x5d, 0x14, 0xee, 0xe9, 0xba,
-0x36, 0x26, 0x7e, 0x9b, 0x21, 0xa2, 0x06, 0xea,
-0xd9, 0x25, 0x5e, 0x5c, 0x7a, 0x12, 0xf6, 0xed,
-0xf6, 0xc4, 0xc4, 0x8b, 0x69, 0xfc, 0x03, 0xc9,
-0x54, 0x3c, 0xea, 0x4c, 0xc2, 0x08, 0xdc, 0x0d,
-0x25, 0x74, 0x06, 0x5e, 0x59, 0x0c, 0xde, 0x0e,
-0x76, 0x65, 0x4c, 0x6b, 0x84, 0xeb, 0xec, 0xf8,
-0xa7, 0x5b, 0x31, 0x83, 0xda, 0xb4, 0x6a, 0x66,
-0x34, 0xad, 0x9d, 0x16, 0x6d, 0x45, 0x20, 0xd4,
-0xa8, 0x79, 0xbe, 0xcf, 0x80, 0xd0, 0xdb, 0xcc,
-0x58, 0xb9, 0xcd, 0x81, 0x7f, 0xd6, 0x98, 0xa0,
-0xa5, 0x5a, 0x61, 0x46, 0xfb, 0x7d, 0x68, 0x6c,
-0x86, 0x06, 0x4d, 0x5e, 0x7c, 0x4d, 0xb5, 0x70,
-0x10, 0xd7, 0xcf, 0x76, 0x1b, 0xfe, 0xa9, 0x90,
-0xaa, 0xe1, 0x09, 0x7e, 0xbf, 0xc4, 0x61, 0xcf,
-0x90, 0x1c, 0x25, 0x5d, 0xd2, 0xa3, 0xc2, 0xed,
-0x2c, 0x70, 0x97, 0x06, 0xd8, 0x95, 0x1a, 0x66,
-0x30, 0xfc, 0x63, 0xfe, 0x93, 0x21, 0x85, 0x76,
-0x4a, 0x23, 0xdc, 0x58, 0xee, 0x2a, 0x8d, 0x74,
-0xc5, 0x3a, 0xe6, 0x55, 0x2f, 0xf7, 0x47, 0x49,
-0x21, 0xec, 0x0d, 0xb0, 0x88, 0x6f, 0xc7, 0x3f,
-0x7d, 0x72, 0x98, 0x0d, 0x93, 0x8d, 0x37, 0xe2,
-0xe2, 0x78, 0x4f, 0x2e, 0x26, 0x33, 0x18, 0x10,
-0x9a, 0x1b, 0x94, 0x65, 0x3a, 0x43, 0x95, 0xde,
-0x51, 0x0f, 0x41, 0x80, 0x8a, 0xc7, 0x89, 0x85,
-0x7f, 0xae, 0x4d, 0x8d, 0xf7, 0x95, 0x5f, 0x0f,
-0xc7, 0x2e, 0x90, 0x16, 0x6d, 0xeb, 0x43, 0x1d,
-0xdf, 0x8a, 0x5d, 0xf0, 0xd7, 0x2e, 0x9f, 0x16,
-0x15, 0x5f, 0x8d, 0x5d, 0xf6, 0xb7, 0x2c, 0xf7,
-0x3e, 0xd4, 0xf9, 0xe6, 0x34, 0x0b, 0x6f, 0x70,
-0xfc, 0xd3, 0xa2, 0x79, 0x1f, 0x16, 0x7f, 0xcf,
-0xa6, 0xa5, 0xa5, 0xad, 0xf8, 0x41, 0x71, 0x58,
-0x3b, 0xaa, 0x34, 0x2f, 0x2f, 0x66, 0xf8, 0x87,
-0xdc, 0x0f, 0x75, 0xcb, 0x3c, 0x43, 0xe2, 0x4d,
-0x69, 0xfc, 0x53, 0x91, 0x94, 0x0d, 0x90, 0x13,
-0x4a, 0x52, 0x66, 0x6c, 0x2b, 0xde, 0xc8, 0xbc,
-0x71, 0xf7, 0x2d, 0x75, 0x50, 0xc4, 0xf0, 0x8f,
-0x9a, 0x90, 0x19, 0x22, 0x8a, 0x1c, 0x29, 0x91,
-0xd2, 0xfe, 0x87, 0x81, 0x1c, 0xc2, 0xc6, 0x3b,
-0x83, 0x0c, 0xd0, 0xbd, 0x6c, 0x36, 0x8a, 0x4a,
-0x43, 0x03, 0xd0, 0x51, 0xe5, 0x0f, 0x7d, 0x4e,
-0x29, 0x1d, 0xee, 0xe8, 0x50, 0xd8, 0x78, 0x4b,
-0x49, 0xc8, 0xf2, 0x3f, 0x15, 0x05, 0xbb, 0x84,
-0x34, 0x7a, 0x94, 0x6a, 0xb5, 0xa2, 0x28, 0xb0,
-0xfb, 0x19, 0x10, 0x62, 0x0b, 0x69, 0x18, 0x36,
-0x57, 0xef, 0xc4, 0xf9, 0x29, 0x4c, 0xe3, 0x1f,
-0x69, 0x97, 0x85, 0x5e, 0x14, 0x86, 0x76, 0x96,
-0xfe, 0x7d, 0x74, 0xfa, 0x30, 0x39, 0x0a, 0x8d,
-0x4b, 0xd9, 0xfb, 0x0f, 0x08, 0x1d, 0xb0, 0x4f,
-0x0b, 0x44, 0xc5, 0xb5, 0x5d, 0xe6, 0xf3, 0x9f,
-0x54, 0x76, 0x39, 0xd1, 0xce, 0xec, 0x68, 0x2b,
-0x1a, 0x8d, 0x5a, 0x49, 0xb4, 0xf3, 0xcd, 0x65,
-0x17, 0x28, 0x5f, 0x2a, 0xef, 0x44, 0xcd, 0xe7,
-0xfb, 0x19, 0xfe, 0x19, 0x49, 0xe1, 0x1f, 0x92,
-0x98, 0xd6, 0xac, 0x14, 0x30, 0xfc, 0x23, 0x27,
-0xa0, 0x41, 0x08, 0x51, 0x31, 0x29, 0x21, 0xa2,
-0x61, 0x40, 0xe8, 0x58, 0x97, 0xb9, 0xfe, 0x55,
-0xc9, 0x0f, 0xef, 0x48, 0xb5, 0x08, 0x72, 0xfc,
-0xca, 0x7d, 0x30, 0x3f, 0xca, 0xdc, 0x8e, 0x1f,
-0xee, 0x63, 0xb0, 0x07, 0xf1, 0x8f, 0xf0, 0x80,
-0xd6, 0x40, 0xe5, 0x51, 0xe6, 0x58, 0x4c, 0xff,
-0xe0, 0xdf, 0x98, 0xf2, 0x3f, 0xc1, 0xc2, 0x95,
-0xe8, 0x7f, 0x7e, 0x23, 0x07, 0x4b, 0x3d, 0xcc,
-0xa8, 0xd6, 0x5d, 0xc1, 0x52, 0xf6, 0x05, 0xc9,
-0xcc, 0xf1, 0x2e, 0x61, 0xf8, 0xc7, 0xfc, 0xfb,
-0x56, 0x0a, 0xb3, 0xe0, 0x27, 0xf8, 0xfd, 0xde,
-0x45, 0x66, 0x03, 0xc3, 0x03, 0x7a, 0xc5, 0x37,
-0xd8, 0x46, 0x66, 0x93, 0x7a, 0x5b, 0x42, 0x6e,
-0x67, 0xdf, 0xef, 0x4f, 0x60, 0x4e, 0x42, 0x66,
-0x2f, 0xaa, 0x59, 0xcf, 0x97, 0x67, 0xc3, 0x5b,
-0x88, 0x7f, 0x16, 0x8b, 0xf7, 0xc0, 0x2f, 0x99,
-0x51, 0x5c, 0xf7, 0x50, 0x73, 0xe8, 0x65, 0xfd,
-0xfa, 0xe1, 0xc2, 0x0d, 0x9d, 0x2c, 0xf4, 0x74,
-0x2c, 0x19, 0x0b, 0xac, 0x16, 0x8e, 0x59, 0xfb,
-0x2f, 0xf9, 0xea, 0x3d, 0xa6, 0x3f, 0x41, 0xc7,
-0x72, 0xbd, 0xbe, 0x60, 0xbf, 0x38, 0x4a, 0x27,
-0xd6, 0xde, 0xc3, 0x02, 0x19, 0xbb, 0xc2, 0x3c,
-0x70, 0x92, 0x4d, 0xc5, 0x11, 0x6b, 0xff, 0xa5,
-0x15, 0xb0, 0xfd, 0x7b, 0xf4, 0xc6, 0xa4, 0x67,
-0xbc, 0x33, 0x15, 0xc8, 0xc6, 0xc5, 0x66, 0x75,
-0x32, 0xde, 0xf2, 0x5b, 0xcf, 0x78, 0xeb, 0x15,
-0xf8, 0x0b, 0xba, 0x28, 0xe9, 0x49, 0xb0, 0x50,
-0x68, 0xe1, 0x1f, 0xe6, 0x7f, 0x7a, 0x63, 0x1c,
-0xbd, 0x0c, 0x0a, 0x6f, 0xc1, 0x8d, 0xc7, 0x7a,
-0xc6, 0x84, 0x1f, 0xb2, 0x2b, 0x8d, 0xa3, 0xc5,
-0x4b, 0x23, 0xa7, 0x60, 0x93, 0xc0, 0xfc, 0x4f,
-0x3b, 0x0b, 0xdc, 0xe6, 0xf3, 0xb7, 0x33, 0xef,
-0x84, 0xfe, 0xaa, 0x68, 0x7d, 0x84, 0xef, 0xce,
-0xfa, 0x19, 0x3a, 0x9a, 0x55, 0x79, 0x40, 0x98,
-0xaf, 0x0b, 0x6c, 0xbf, 0xa6, 0x3d, 0x52, 0xf1,
-0xa3, 0x23, 0x6c, 0xbc, 0x49, 0xcb, 0xff, 0x87,
-0x15, 0xc3, 0xff, 0x14, 0x61, 0x34, 0xaf, 0x82,
-0x80, 0xca, 0xfc, 0xf9, 0xf1, 0xb2, 0xde, 0x02,
-0xbf, 0x5e, 0x14, 0x60, 0xfb, 0xdf, 0x1e, 0xa8,
-0x49, 0x32, 0xff, 0x7f, 0xc2, 0x5a, 0x9f, 0x35,
-0xe5, 0xc6, 0x78, 0xe7, 0x8f, 0xcd, 0xb8, 0xc4,
-0x8c, 0xbb, 0xc3, 0x2c, 0x3a, 0x37, 0x31, 0x58,
-0xb2, 0x40, 0xff, 0xfc, 0x13, 0x33, 0x46, 0xe1,
-0x24, 0x39, 0x90, 0xdc, 0xc3, 0xf6, 0x8f, 0xd6,
-0x7a, 0x8b, 0xc2, 0x28, 0x8b, 0x56, 0xcd, 0x7a,
-0x49, 0x5c, 0x18, 0x85, 0x77, 0x85, 0xbb, 0xfe,
-0x1b, 0xdb, 0xbd, 0xee, 0xa9, 0x98, 0x40, 0x8f,
-0x8d, 0x1b, 0x87, 0x11, 0x23, 0x54, 0xa5, 0xfd,
-0x43, 0x47, 0xf4, 0x52, 0x6a, 0xf7, 0x2a, 0x72,
-0x63, 0xe9, 0xd6, 0xb1, 0x69, 0x4d, 0xd2, 0x24,
-0xdc, 0xa3, 0x7b, 0x8f, 0x88, 0xe3, 0x91, 0x63,
-0x50, 0xaf, 0xb3, 0xef, 0x8b, 0x2e, 0x33, 0xdf,
-0xa7, 0x1f, 0x10, 0xff, 0x34, 0xeb, 0x3d, 0x71,
-0x71, 0x0f, 0x06, 0xb2, 0xf5, 0x0c, 0xbd, 0x18,
-0x11, 0xad, 0x68, 0x5b, 0xe9, 0xef, 0xe8, 0x89,
-0x64, 0x83, 0x2e, 0x53, 0x12, 0x4c, 0xe3, 0x1f,
-0x33, 0xde, 0xc5, 0x09, 0xbf, 0xff, 0xf6, 0x1f,
-0xc4, 0x43, 0x01, 0x58, 0xc2, 0xe2, 0x35, 0x8b,
-0x80, 0xa3, 0x70, 0x1f, 0xf5, 0xe1, 0xfd, 0xb1,
-0x34, 0xfe, 0x91, 0x18, 0xfe, 0x09, 0x73, 0x90,
-0xb3, 0x85, 0x4d, 0x94, 0x47, 0x73, 0x2f, 0xf4,
-0x6d, 0x51, 0x7b, 0x83, 0xeb, 0xf4, 0xab, 0x81,
-0xfc, 0x82, 0x0d, 0xaf, 0x5a, 0x67, 0xdf, 0x17,
-0xb1, 0xfc, 0x0f, 0x2d, 0x62, 0x61, 0x25, 0xcc,
-0x06, 0xf5, 0x94, 0xf8, 0x8f, 0x08, 0x8c, 0x35,
-0xf7, 0xd8, 0x35, 0x4d, 0x43, 0x93, 0x72, 0xcb,
-0x2b, 0x6c, 0x19, 0x1c, 0x25, 0xc7, 0x96, 0xd6,
-0x0d, 0xb1, 0x8d, 0x2a, 0x15, 0x2c, 0xfc, 0x53,
-0x8c, 0xf8, 0x67, 0x89, 0xee, 0x3d, 0x27, 0x3e,
-0x13, 0xbb, 0x07, 0x98, 0xb7, 0x39, 0x57, 0xb5,
-0x8e, 0x4e, 0xcc, 0x6d, 0x3e, 0x56, 0xac, 0x8b,
-0x63, 0x94, 0xf9, 0x9f, 0x63, 0x88, 0x7f, 0xca,
-0xd2, 0x78, 0x83, 0xad, 0x1f, 0xb2, 0x24, 0x59,
-0xbc, 0x9a, 0xe1, 0xcf, 0xf7, 0xcb, 0x16, 0x0d,
-0x14, 0x9f, 0xeb, 0x3c, 0x07, 0x13, 0xa5, 0xb5,
-0x7a, 0xf1, 0xb8, 0x78, 0x05, 0xde, 0x37, 0x56,
-0x54, 0x1a, 0xff, 0xe8, 0xca, 0x59, 0xf8, 0x9b,
-0x21, 0x5f, 0xd2, 0xbd, 0x9d, 0x3c, 0x09, 0x5b,
-0x6f, 0xaf, 0x1a, 0x72, 0x5d, 0x0a, 0xbd, 0x09,
-0xcf, 0x85, 0x17, 0xbc, 0x22, 0xf7, 0x91, 0xb3,
-0x06, 0x35, 0xe4, 0xe0, 0x7f, 0x0a, 0x06, 0x8d,
-0x4d, 0x84, 0xc2, 0x96, 0xec, 0xe3, 0x5a, 0xf5,
-0x6b, 0xee, 0x60, 0x29, 0x83, 0xc1, 0x4b, 0x03,
-0xaf, 0x15, 0x05, 0x59, 0x84, 0x7a, 0x58, 0x08,
-0xf4, 0xb3, 0x2b, 0x47, 0xac, 0xf8, 0xa5, 0x97,
-0xef, 0x51, 0x0e, 0x23, 0xc9, 0xb3, 0x9d, 0xec,
-0x80, 0x4f, 0x33, 0x63, 0x79, 0x9c, 0x9c, 0x81,
-0xc3, 0x42, 0x89, 0xde, 0x86, 0xfc, 0xc9, 0x61,
-0xa9, 0xd6, 0xc9, 0xff, 0x68, 0xe5, 0xeb, 0xa4,
-0x09, 0xe9, 0x9a, 0xfe, 0xe2, 0x6e, 0x71, 0x05,
-0x03, 0x2a, 0x0d, 0x7a, 0xb1, 0x41, 0x3b, 0xcc,
-0x46, 0x63, 0xb4, 0x82, 0x43, 0x97, 0xb8, 0x90,
-0xe6, 0x7f, 0x62, 0xc2, 0x33, 0xca, 0x5b, 0x6c,
-0x3d, 0xb8, 0x87, 0xc4, 0x09, 0x78, 0x9d, 0x19,
-0x05, 0x63, 0xe2, 0x65, 0xb6, 0x1e, 0x38, 0xad,
-0x71, 0x49, 0x30, 0x96, 0xca, 0x34, 0x3b, 0xff,
-0x13, 0x30, 0xbe, 0xc7, 0x4e, 0x71, 0x2d, 0xbc,
-0x25, 0xdd, 0x80, 0xd1, 0xfc, 0x0c, 0x9b, 0xb1,
-0x1b, 0xd9, 0x0a, 0x6c, 0xb5, 0x42, 0xbf, 0x9d,
-0xff, 0x09, 0xc8, 0xcf, 0xe1, 0x7a, 0x08, 0x72,
-0xd8, 0x53, 0xa5, 0xef, 0x1e, 0x63, 0xb3, 0xf1,
-0x1c, 0x2c, 0xd0, 0x65, 0xfe, 0xfe, 0xc0, 0x81,
-0x74, 0x9a, 0xff, 0x19, 0x29, 0x30, 0xf6, 0x5f,
-0x45, 0x65, 0xa4, 0x4d, 0x41, 0xfe, 0xa7, 0x88,
-0xcd, 0x06, 0xed, 0x95, 0xfc, 0xfd, 0x2e, 0x9c,
-0x9f, 0xde, 0x2c, 0xfe, 0xc7, 0xc4, 0x3f, 0x27,
-0x49, 0x63, 0xe4, 0x53, 0xb4, 0x68, 0xd8, 0xbf,
-0x81, 0xfc, 0x26, 0xb8, 0x28, 0x3e, 0x3f, 0x09,
-0x0c, 0x21, 0x74, 0xb0, 0x9f, 0x46, 0x32, 0xf8,
-0x1f, 0x8f, 0xc1, 0xff, 0x54, 0x88, 0x5f, 0xa0,
-0xbf, 0x83, 0xc6, 0x11, 0xcf, 0x0d, 0xe2, 0x71,
-0xe5, 0xce, 0x78, 0x53, 0xb2, 0x24, 0x28, 0x1e,
-0x87, 0x3b, 0x69, 0x53, 0xd2, 0xc9, 0xff, 0x30,
-0xfc, 0xf3, 0x77, 0x70, 0x9d, 0xbe, 0x75, 0x68,
-0xfa, 0x25, 0xed, 0x0d, 0x68, 0x78, 0xd5, 0xfb,
-0x41, 0xeb, 0xa5, 0x30, 0x67, 0x84, 0x3e, 0x10,
-0xad, 0x4f, 0xc9, 0x89, 0x7f, 0xf8, 0xec, 0x81,
-0x28, 0xc3, 0xa4, 0x6f, 0xc9, 0xab, 0xb3, 0xf6,
-0x77, 0xbe, 0x1b, 0x7b, 0x37, 0xd8, 0x32, 0x1a,
-0xe0, 0x1e, 0x8c, 0x64, 0xf2, 0x3f, 0xcc, 0xff,
-0xbc, 0x85, 0xfb, 0xaf, 0xf5, 0xe2, 0x6a, 0xd8,
-0xa4, 0x54, 0x26, 0xe4, 0x6f, 0x92, 0x53, 0xb4,
-0x53, 0xa9, 0x1a, 0xcc, 0xcd, 0xff, 0x50, 0x86,
-0x7f, 0x7e, 0x82, 0xe3, 0x6d, 0x0b, 0x5d, 0xa3,
-0xf6, 0x46, 0xfd, 0x23, 0xf2, 0xb7, 0x4b, 0xaf,
-0x74, 0x1d, 0xd8, 0x31, 0x6f, 0x24, 0x37, 0xff,
-0x83, 0xf8, 0x87, 0xfb, 0xf3, 0xfa, 0xd0, 0x72,
-0xe6, 0x6d, 0x54, 0xdc, 0xcf, 0x0e, 0x6a, 0x0f,
-0x33, 0x43, 0xe6, 0xf3, 0x29, 0x65, 0xf0, 0x3f,
-0x23, 0xe5, 0x2c, 0x5e, 0x20, 0xfe, 0x49, 0x8a,
-0xd7, 0x30, 0x20, 0xd4, 0xd8, 0xe1, 0x89, 0xb5,
-0xbe, 0xc3, 0x8c, 0x43, 0x94, 0xc1, 0x9e, 0x11,
-0x16, 0x5d, 0x32, 0xf9, 0x1f, 0x48, 0x9a, 0xf1,
-0xe8, 0xb7, 0xe6, 0xc6, 0x1c, 0xaf, 0x70, 0xd8,
-0x93, 0xcc, 0xc5, 0xff, 0x60, 0x74, 0xab, 0xd5,
-0xbc, 0x8f, 0x32, 0xb4, 0xf3, 0x1a, 0x83, 0x31,
-0x2c, 0x2c, 0xae, 0x81, 0x6f, 0x40, 0x1d, 0x0b,
-0x73, 0xc2, 0xb0, 0x94, 0x83, 0xff, 0x59, 0x23,
-0xf1, 0xf8, 0x5b, 0xca, 0x60, 0xff, 0x66, 0x44,
-0x3b, 0x51, 0xb6, 0x6c, 0x10, 0xf6, 0xd8, 0xf9,
-0x1c, 0x1b, 0xfe, 0x29, 0xb0, 0xd8, 0x9e, 0xb9,
-0xd2, 0xa3, 0x20, 0xb1, 0x78, 0x4d, 0xd6, 0xb0,
-0x08, 0x7e, 0x3b, 0x32, 0x42, 0xc3, 0xc6, 0xa3,
-0xa2, 0xbe, 0x17, 0x6c, 0xfe, 0x87, 0xc1, 0x1e,
-0x3f, 0x27, 0x79, 0xaa, 0xa1, 0xc3, 0x1f, 0x5b,
-0x2e, 0x97, 0xbe, 0x30, 0x20, 0xef, 0xf5, 0xab,
-0xcb, 0x91, 0xff, 0x91, 0x0c, 0xfe, 0x07, 0xd2,
-0xf8, 0x67, 0x71, 0x71, 0x18, 0xc6, 0x55, 0x3e,
-0x28, 0x15, 0x4e, 0xf8, 0x1a, 0xe4, 0xe2, 0x88,
-0x88, 0x57, 0xf6, 0xc9, 0x38, 0xf0, 0xe9, 0xd9,
-0xfc, 0x8f, 0x81, 0x7f, 0x96, 0x1a, 0xfc, 0x4f,
-0x80, 0xd3, 0x3e, 0x03, 0x70, 0x61, 0xde, 0xb3,
-0xcb, 0xb7, 0x46, 0xab, 0x2c, 0x7e, 0xe3, 0x4d,
-0x6b, 0xff, 0xc5, 0xf9, 0x1f, 0x0c, 0xfa, 0xed,
-0xee, 0xeb, 0xe1, 0xb5, 0x70, 0x73, 0x5b, 0xc9,
-0x43, 0xe2, 0x70, 0xc5, 0x05, 0x7f, 0xe3, 0x72,
-0x8f, 0x8d, 0x0f, 0xc9, 0xe6, 0x7f, 0xdc, 0xb4,
-0x54, 0x85, 0x6e, 0xa8, 0x9d, 0x25, 0x33, 0xfc,
-0x03, 0xf1, 0x70, 0x43, 0x85, 0x83, 0xff, 0xb1,
-0xe6, 0xb3, 0x0d, 0xf1, 0x8f, 0xe6, 0x67, 0x83,
-0xba, 0xa9, 0x1a, 0x1e, 0xd4, 0x90, 0xf6, 0x29,
-0x65, 0x57, 0x64, 0x7f, 0xa8, 0x5b, 0x31, 0x88,
-0x20, 0xcd, 0xc1, 0xff, 0x54, 0x08, 0xbb, 0x8c,
-0xf9, 0x7c, 0xb0, 0x10, 0xe7, 0x3f, 0xa0, 0x31,
-0x58, 0x38, 0x2c, 0x1f, 0x04, 0x69, 0xa9, 0x0b,
-0xe7, 0xff, 0x86, 0x6c, 0xfe, 0xc7, 0x40, 0x2f,
-0xc8, 0xff, 0x04, 0x5f, 0x03, 0x4e, 0x5b, 0xbd,
-0xd5, 0x7d, 0x01, 0x4c, 0x22, 0xc8, 0x80, 0xbe,
-0x69, 0xfe, 0x67, 0x84, 0x3d, 0xff, 0x42, 0x01,
-0xbb, 0xb8, 0x7d, 0xc6, 0x9b, 0x9a, 0x39, 0x1b,
-0x94, 0x3f, 0x21, 0x27, 0xff, 0xe3, 0x87, 0x58,
-0x8a, 0xe4, 0xe9, 0xbc, 0x8d, 0x2f, 0xbc, 0x12,
-0x2a, 0x56, 0xc1, 0x38, 0x69, 0x40, 0xd8, 0x63,
-0xad, 0xb7, 0x0c, 0xfe, 0x07, 0x18, 0xfe, 0x19,
-0x26, 0x7e, 0xf5, 0x24, 0x33, 0x3c, 0x0c, 0xff,
-0xd0, 0x43, 0x50, 0x43, 0x8b, 0xd9, 0xfe, 0x4b,
-0xe6, 0x3f, 0x39, 0xf8, 0x9f, 0xf2, 0x95, 0xdc,
-0x3f, 0xaf, 0x08, 0x16, 0x7e, 0x81, 0x18, 0x40,
-0x68, 0x6e, 0x09, 0x73, 0x53, 0x81, 0xd4, 0xf7,
-0x62, 0xf8, 0x9f, 0x34, 0xff, 0x13, 0x13, 0x0c,
-0x3c, 0xe0, 0x1e, 0xbb, 0xe9, 0x3b, 0xc2, 0x23,
-0xc1, 0xc0, 0x20, 0xdb, 0x7d, 0x94, 0xc1, 0x01,
-0x75, 0x5e, 0xa2, 0xc8, 0xf6, 0xfd, 0xa6, 0xf9,
-0x9f, 0xdd, 0x32, 0xfa, 0xab, 0x1b, 0xce, 0x78,
-0xd7, 0x8a, 0x5f, 0x81, 0x9f, 0xc4, 0x6e, 0xfc,
-0x2d, 0x03, 0x42, 0xb3, 0xe1, 0xe3, 0xa1, 0xa6,
-0x8b, 0x1e, 0xe4, 0x7f, 0x52, 0xd4, 0xd0, 0x3b,
-0x3e, 0x8b, 0xff, 0x29, 0x36, 0xf1, 0xcf, 0x17,
-0xb7, 0xc0, 0xc4, 0x9a, 0xe6, 0x84, 0x37, 0xde,
-0xf6, 0x7b, 0x98, 0x50, 0x1b, 0x12, 0x29, 0x44,
-0x64, 0xf0, 0x3f, 0x16, 0xfe, 0x01, 0x16, 0xbf,
-0x26, 0xa3, 0x3c, 0x48, 0x9d, 0x86, 0xf7, 0x07,
-0x96, 0xa0, 0xf1, 0xae, 0x3c, 0x11, 0xad, 0x43,
-0xfe, 0xc7, 0x42, 0x44, 0x36, 0xfe, 0x07, 0xf7,
-0x5f, 0xbb, 0xe6, 0x0f, 0xb8, 0x17, 0x92, 0x59,
-0x74, 0x13, 0xf8, 0x47, 0x7e, 0x10, 0x24, 0x2f,
-0xd0, 0x03, 0xb1, 0xca, 0xa4, 0x6b, 0x7d, 0x6a,
-0xbc, 0x6c, 0x20, 0x69, 0xfc, 0x03, 0x90, 0xda,
-0xaf, 0x8d, 0x91, 0x6d, 0x0c, 0xdd, 0xcd, 0x4b,
-0xb0, 0xd1, 0x9d, 0xa0, 0x07, 0xa0, 0xb2, 0xdf,
-0xee, 0xaf, 0x6c, 0xfc, 0x0f, 0xdf, 0x7f, 0xad,
-0xd3, 0xdd, 0x0b, 0xa9, 0xc4, 0x60, 0xa4, 0x5f,
-0x17, 0x83, 0x2c, 0xac, 0xff, 0x00, 0x76, 0xea,
-0x96, 0x3f, 0x2f, 0x72, 0xf2, 0x3f, 0x7b, 0x4c,
-0x27, 0xb9, 0x85, 0xed, 0xc7, 0x59, 0xe0, 0x8e,
-0xb7, 0xbe, 0xc7, 0x3c, 0x6a, 0x3d, 0x06, 0x1a,
-0x6b, 0xbc, 0x36, 0xfe, 0x07, 0xac, 0x8b, 0x38,
-0x51, 0x4d, 0x68, 0x8c, 0xd8, 0x11, 0x23, 0x66,
-0x40, 0x6c, 0xfc, 0x8f, 0xa0, 0x18, 0x4e, 0x7b,
-0xeb, 0x98, 0xd8, 0x0c, 0x2f, 0x33, 0xc3, 0xb3,
-0x5e, 0x68, 0x52, 0xef, 0x01, 0xb6, 0x2d, 0x1d,
-0x4b, 0xfb, 0xf3, 0x34, 0xff, 0x43, 0xa5, 0x75,
-0x9c, 0xcf, 0x71, 0x57, 0x90, 0x9f, 0xe1, 0xfe,
-0x9d, 0x3d, 0x8d, 0xec, 0x06, 0x8c, 0xc8, 0xc5,
-0x3c, 0x7e, 0x91, 0x6c, 0xfe, 0x87, 0xa1, 0x1d,
-0x76, 0xf1, 0x69, 0xb6, 0x0f, 0xea, 0x91, 0xe6,
-0xea, 0xae, 0x38, 0x89, 0x69, 0x78, 0xbf, 0x15,
-0xef, 0x9c, 0xfc, 0x0f, 0xe2, 0x1f, 0xbe, 0xa8,
-0x7c, 0x5b, 0x34, 0xb6, 0xde, 0x5e, 0x5a, 0xb1,
-0xb0, 0x30, 0xc2, 0xf0, 0x80, 0x7a, 0xe2, 0x73,
-0xe8, 0xa8, 0x7b, 0xb5, 0x1c, 0xfc, 0xcf, 0x61,
-0x95, 0x8d, 0x6e, 0xaf, 0x18, 0x60, 0x78, 0x7b,
-0xd1, 0x2b, 0x25, 0xfb, 0xeb, 0x77, 0x68, 0x1f,
-0x6b, 0xf5, 0x43, 0xc6, 0xfc, 0x68, 0xcd, 0xaf,
-0xb2, 0x81, 0xeb, 0xd3, 0x2c, 0xfc, 0x73, 0x2d,
-0x83, 0x91, 0x15, 0x2d, 0xec, 0x82, 0x78, 0x29,
-0xf2, 0x06, 0xc2, 0x80, 0xb1, 0x2f, 0x8e, 0x0d,
-0x4c, 0x36, 0xb4, 0xbc, 0x86, 0xf1, 0x9d, 0xb2,
-0xf1, 0x26, 0x9c, 0xfc, 0x0f, 0xae, 0x9f, 0x8d,
-0x2d, 0xc9, 0xcf, 0x8f, 0x7f, 0xf5, 0x32, 0xbc,
-0xa1, 0x2e, 0x19, 0x2e, 0x3e, 0x27, 0x7e, 0x9d,
-0x8e, 0xab, 0x0d, 0xfa, 0xfd, 0x63, 0xe2, 0x37,
-0xb5, 0x97, 0x68, 0x7d, 0xac, 0xf8, 0x03, 0x31,
-0x68, 0xe7, 0x7f, 0x4c, 0x90, 0x33, 0x4a, 0xb7,
-0x46, 0x7d, 0x09, 0xf7, 0x9d, 0x91, 0xa6, 0xd5,
-0xae, 0x0d, 0x55, 0x27, 0xe5, 0x8f, 0x23, 0xa0,
-0xec, 0x90, 0xfc, 0xd4, 0xf5, 0x10, 0x89, 0xd9,
-0xf6, 0x5f, 0xd6, 0x1f, 0x7d, 0x0b, 0x3c, 0xcc,
-0x3f, 0xb4, 0xd2, 0x95, 0x74, 0xbb, 0x20, 0x0d,
-0xf4, 0x04, 0xc9, 0x4a, 0x29, 0x32, 0x4f, 0xbd,
-0x4f, 0x56, 0x19, 0xde, 0x4b, 0xf3, 0x51, 0x7b,
-0xcc, 0x49, 0x1b, 0x84, 0x9f, 0x42, 0x4d, 0xff,
-0xe7, 0xe2, 0xc4, 0x03, 0xf7, 0x69, 0x2a, 0x4e,
-0x6c, 0x40, 0x78, 0x92, 0x7d, 0xc8, 0xcc, 0xd1,
-0xc5, 0x2d, 0xff, 0xa3, 0x95, 0x5b, 0x7f, 0xf4,
-0x3d, 0xf0, 0xba, 0xd0, 0xa8, 0x7f, 0x3e, 0xfe,
-0xd5, 0x75, 0xf2, 0x85, 0x68, 0x03, 0x5b, 0x0f,
-0x55, 0x61, 0x38, 0x2a, 0xd4, 0x51, 0xcf, 0x6e,
-0x51, 0xb1, 0xd6, 0x4f, 0x52, 0x78, 0x26, 0x8d,
-0x87, 0x5f, 0x87, 0x45, 0xfd, 0xee, 0xb1, 0xaa,
-0x4b, 0x70, 0x59, 0x6a, 0xc1, 0x27, 0x8c, 0xc1,
-0x65, 0x68, 0xa1, 0xde, 0x01, 0x71, 0xdc, 0x5a,
-0x3f, 0xba, 0xb2, 0x47, 0x30, 0x57, 0x97, 0xf2,
-0x31, 0xc3, 0x57, 0xd7, 0x05, 0xc5, 0x40, 0x51,
-0x42, 0xab, 0x4b, 0x14, 0xaf, 0xef, 0x1c, 0xad,
-0x38, 0x06, 0xec, 0xf9, 0x7d, 0x4e, 0xfc, 0x63,
-0xbe, 0xff, 0x25, 0x68, 0x61, 0xcb, 0x60, 0xeb,
-0x98, 0xab, 0x99, 0x76, 0xc1, 0xa7, 0xf5, 0xe5,
-0x63, 0x64, 0xc1, 0xf6, 0x93, 0xc9, 0x86, 0x6d,
-0xc5, 0xdb, 0x6c, 0xf8, 0x27, 0x99, 0xc2, 0x3f,
-0x9c, 0x1f, 0xe3, 0x13, 0xb5, 0x98, 0x4d, 0x14,
-0x05, 0xff, 0xd0, 0xf6, 0x20, 0x79, 0x9c, 0x3e,
-0x9a, 0xac, 0xa1, 0x72, 0x34, 0x92, 0xc1, 0xff,
-0x60, 0xfe, 0x6b, 0x83, 0x8f, 0x47, 0xff, 0x61,
-0x17, 0xdb, 0x88, 0xd1, 0xc2, 0xd8, 0xa7, 0x87,
-0xc9, 0x06, 0xf2, 0x90, 0x5c, 0x4e, 0xe7, 0xc4,
-0x84, 0x4c, 0xfc, 0xd3, 0x4b, 0xbf, 0x83, 0x49,
-0xae, 0x95, 0xf0, 0x21, 0xc1, 0xb4, 0x57, 0xe4,
-0x67, 0x0f, 0x15, 0xc5, 0x18, 0x10, 0x0a, 0x8a,
-0x83, 0xf4, 0x66, 0x25, 0x48, 0x3d, 0x90, 0x81,
-0x7f, 0xf8, 0x6e, 0x62, 0x8c, 0xed, 0x2f, 0x26,
-0x49, 0xbd, 0xbe, 0xf5, 0x5c, 0xe7, 0xff, 0x66,
-0x13, 0xd5, 0x3c, 0x54, 0xf2, 0x6f, 0x9d, 0xdf,
-0x81, 0x2b, 0x5d, 0x2d, 0x08, 0x15, 0x6c, 0xf8,
-0xa7, 0x7c, 0x34, 0xfd, 0xf5, 0x4d, 0x6a, 0xec,
-0x0f, 0x51, 0xc7, 0x80, 0xfa, 0xf3, 0x75, 0x3e,
-0x3d, 0x70, 0x9e, 0x45, 0xcc, 0x83, 0x84, 0xe1,
-0x07, 0x9a, 0xc5, 0xff, 0xdc, 0xc0, 0x9c, 0x06,
-0x9c, 0xa2, 0x07, 0xd6, 0x22, 0xff, 0x13, 0xf2,
-0x44, 0x7f, 0x22, 0xcf, 0x3b, 0xc1, 0x80, 0x90,
-0x02, 0x4f, 0xc1, 0x7c, 0xea, 0x0e, 0xe7, 0xe1,
-0x7f, 0x78, 0xda, 0x6b, 0x33, 0x1b, 0xb8, 0xf6,
-0x0f, 0xb1, 0xea, 0x64, 0xdb, 0x5d, 0xbe, 0xd9,
-0xf0, 0x74, 0x64, 0x7e, 0xcc, 0xbd, 0x9a, 0x8c,
-0x59, 0x9f, 0x4b, 0x9b, 0x34, 0x28, 0xa5, 0xf8,
-0xc6, 0x51, 0x21, 0x45, 0xe3, 0x6f, 0x81, 0x9f,
-0xd2, 0x80, 0xde, 0x1d, 0x24, 0x1e, 0x65, 0x1f,
-0xfb, 0x4a, 0xd9, 0x0c, 0xd8, 0xf8, 0x9f, 0x82,
-0x14, 0xff, 0x83, 0x68, 0x07, 0x8d, 0x6b, 0xd1,
-0x38, 0x89, 0xfc, 0x4f, 0xcc, 0xed, 0x67, 0x57,
-0x16, 0x50, 0xef, 0x70, 0x16, 0xff, 0xd3, 0x68,
-0xc0, 0x1e, 0x8c, 0x3e, 0xd7, 0xd1, 0x6b, 0x6e,
-0x83, 0xf1, 0xab, 0xd9, 0x15, 0x69, 0x46, 0x12,
-0x2e, 0x65, 0xe1, 0x1f, 0xb0, 0x65, 0x37, 0xfa,
-0x11, 0xf6, 0x54, 0xb4, 0x76, 0xc1, 0x8b, 0xb1,
-0x46, 0x0d, 0x1e, 0x14, 0xd7, 0xc8, 0x3c, 0x62,
-0x6e, 0xcf, 0xc9, 0xff, 0xf8, 0x86, 0x09, 0xc7,
-0x3f, 0x0f, 0x92, 0x39, 0x91, 0xcd, 0xba, 0x4f,
-0x6b, 0xfb, 0x1e, 0x99, 0x03, 0x07, 0xb5, 0x5a,
-0xcd, 0xef, 0xe0, 0x7f, 0xca, 0x39, 0xff, 0xb3,
-0x94, 0xa3, 0xa3, 0xcd, 0xa0, 0x6a, 0xae, 0xa8,
-0x6f, 0x17, 0xd9, 0xcc, 0x22, 0x3e, 0x03, 0x4e,
-0x5f, 0x83, 0x9f, 0x87, 0xd6, 0x69, 0xab, 0x1f,
-0x24, 0x19, 0xf8, 0xc7, 0x08, 0xfa, 0xc3, 0xb1,
-0x0e, 0xbf, 0xaa, 0xc9, 0x75, 0x11, 0x89, 0x19,
-0xc9, 0xe5, 0x35, 0xa5, 0x91, 0x32, 0x36, 0xff,
-0x1e, 0x4d, 0x2e, 0x8d, 0x38, 0xf1, 0x4f, 0x0a,
-0xef, 0x25, 0xbb, 0x12, 0x6a, 0x1c, 0xbc, 0x11,
-0x31, 0xc6, 0x8c, 0x46, 0x59, 0x26, 0x62, 0x18,
-0x4e, 0xc1, 0x6c, 0xf0, 0x44, 0xc4, 0xe3, 0xa2,
-0xf9, 0x3e, 0xdb, 0x8b, 0xd3, 0xe3, 0x8d, 0x5d,
-0x80, 0xd9, 0xcb, 0xbd, 0x0f, 0x3d, 0xcc, 0x0c,
-0x7f, 0xf3, 0xf2, 0x62, 0xc3, 0xb8, 0x67, 0xb9,
-0xfb, 0x95, 0xe7, 0xdf, 0x9c, 0x66, 0xce, 0x67,
-0x45, 0x41, 0xfa, 0xfe, 0xe8, 0x05, 0xb5, 0x59,
-0x2b, 0xfe, 0x15, 0x59, 0xa3, 0xbe, 0x56, 0xd6,
-0x10, 0x2a, 0x79, 0x58, 0xac, 0xd6, 0x8e, 0x2a,
-0x75, 0x0c, 0x48, 0x74, 0xde, 0x94, 0x03, 0xff,
-0x90, 0x24, 0xed, 0x6b, 0xaf, 0x2d, 0x72, 0x6f,
-0x22, 0x82, 0x42, 0xdb, 0x77, 0x56, 0xb4, 0x6d,
-0x2a, 0x8d, 0x95, 0xde, 0xa7, 0xee, 0x94, 0xe5,
-0x01, 0x92, 0xc1, 0xff, 0x60, 0xbe, 0x4f, 0x21,
-0xbf, 0x50, 0xd9, 0xc0, 0x5b, 0x8b, 0x14, 0x72,
-0x4b, 0xec, 0xbb, 0xea, 0x9c, 0x90, 0xab, 0x9d,
-0x94, 0xd1, 0x8d, 0x50, 0x15, 0x92, 0xdb, 0xa9,
-0x8d, 0xff, 0x29, 0xdf, 0x65, 0xcf, 0x1e, 0xce,
-0x5d, 0xea, 0x56, 0x4a, 0xaf, 0x87, 0x8d, 0xe4,
-0xab, 0x9a, 0xdc, 0x4e, 0x1e, 0x81, 0x8d, 0x4a,
-0xd5, 0xd2, 0xb6, 0xa1, 0x88, 0x8d, 0xff, 0x29,
-0xcf, 0xc8, 0x5e, 0x71, 0x7c, 0xfb, 0x9a, 0xda,
-0xa0, 0x7d, 0x21, 0x5a, 0x35, 0xa7, 0xe2, 0xe8,
-0xb2, 0xa0, 0x16, 0xd8, 0x26, 0xae, 0xb5, 0xfc,
-0xcf, 0x6e, 0x21, 0x83, 0xff, 0xd9, 0xca, 0xf1,
-0x21, 0x34, 0x85, 0xcc, 0x2b, 0xa1, 0x05, 0xd1,
-0xce, 0x74, 0xfc, 0xf5, 0xa7, 0xf3, 0x5f, 0x49,
-0x48, 0x30, 0x63, 0x56, 0xb7, 0xa8, 0x76, 0x8c,
-0x40, 0x03, 0x02, 0xa1, 0x1d, 0x90, 0x08, 0x35,
-0x83, 0x67, 0x99, 0xe8, 0xca, 0xc6, 0x3f, 0x0c,
-0xed, 0xc0, 0x7d, 0xa4, 0x96, 0xba, 0x76, 0x21,
-0xff, 0x23, 0x71, 0xfe, 0xc7, 0x0f, 0x27, 0x85,
-0x5a, 0x06, 0x84, 0x5c, 0xae, 0x34, 0xfe, 0x31,
-0xf7, 0x5f, 0x18, 0x9d, 0x3b, 0xf1, 0x7b, 0x59,
-0x5c, 0x58, 0x0c, 0x8f, 0x53, 0xff, 0x18, 0xfb,
-0x82, 0x1e, 0xc0, 0x2b, 0x63, 0xfe, 0x26, 0xe2,
-0xb2, 0xfc, 0x8f, 0x85, 0x7f, 0xd6, 0x93, 0xe3,
-0xf4, 0x11, 0x98, 0x3f, 0xea, 0x0a, 0xb2, 0x65,
-0xb3, 0x49, 0x9e, 0x37, 0x24, 0x87, 0xc9, 0xb5,
-0xf0, 0x88, 0xf4, 0xf5, 0x48, 0xd1, 0xfa, 0x88,
-0xdf, 0x7a, 0x3e, 0xe2, 0x1f, 0x04, 0x39, 0xc5,
-0x0c, 0xed, 0x44, 0x7e, 0xc9, 0xd0, 0x88, 0xbc,
-0x56, 0x9c, 0x4d, 0x7e, 0x4c, 0x97, 0x24, 0x6b,
-0xc7, 0xc5, 0x43, 0x0c, 0x7a, 0xb4, 0x24, 0x3d,
-0x27, 0xc4, 0x9a, 0x34, 0xff, 0x73, 0xad, 0x81,
-0x7f, 0xdc, 0x71, 0xf1, 0xbd, 0x18, 0xdb, 0xbd,
-0x9e, 0xf4, 0xc6, 0xdc, 0xc3, 0x70, 0x17, 0xec,
-0xb3, 0xe2, 0x3b, 0xc5, 0xfd, 0x42, 0xa9, 0x39,
-0x3f, 0x88, 0x7f, 0x9e, 0x43, 0x90, 0xd3, 0x27,
-0x5e, 0x51, 0x5f, 0x46, 0xe3, 0xa0, 0xf8, 0xd7,
-0xd2, 0x4b, 0x91, 0x7a, 0x75, 0xeb, 0xf8, 0xb4,
-0x17, 0xe0, 0x45, 0x1a, 0x4c, 0xae, 0x1c, 0x11,
-0x75, 0x27, 0xff, 0xc3, 0xf6, 0x5f, 0x25, 0x77,
-0x95, 0x5e, 0xa1, 0xff, 0x82, 0x8e, 0x77, 0x43,
-0x61, 0xe9, 0xab, 0x1b, 0x63, 0x95, 0xeb, 0xae,
-0xb9, 0x8d, 0xed, 0xa7, 0x36, 0xed, 0xae, 0x1c,
-0x95, 0x6f, 0x0f, 0xd9, 0xf2, 0x5f, 0x26, 0xfe,
-0xc1, 0x6d, 0x1a, 0xf2, 0x5d, 0xee, 0x3a, 0xe6,
-0xa8, 0x23, 0x7e, 0x55, 0x66, 0x78, 0x69, 0x0c,
-0x1e, 0x08, 0x56, 0xe9, 0xf2, 0x5a, 0x9a, 0x89,
-0x7f, 0x02, 0xc6, 0xee, 0xf5, 0x61, 0xa1, 0x56,
-0xe7, 0x1b, 0x8d, 0x08, 0xdd, 0xb9, 0x94, 0xc5,
-0xaf, 0x41, 0x09, 0xf5, 0x1b, 0xb2, 0x3f, 0x13,
-0xff, 0x00, 0x57, 0x53, 0x5c, 0x82, 0x17, 0xd1,
-0xf1, 0x06, 0xc5, 0x75, 0xd2, 0x8b, 0x50, 0xd7,
-0xef, 0x8d, 0xce, 0x18, 0x85, 0xa3, 0x5a, 0x9d,
-0x16, 0xe8, 0x13, 0xd3, 0xef, 0x63, 0xc3, 0x3f,
-0xa3, 0xf0, 0xa1, 0xd0, 0xdc, 0xbf, 0x8a, 0x19,
-0x84, 0xc1, 0x00, 0xcc, 0x18, 0x8e, 0x4a, 0x13,
-0xb8, 0x54, 0x10, 0xff, 0x98, 0xcf, 0x37, 0xf1,
-0x4f, 0x8a, 0xff, 0xa9, 0xd7, 0x4b, 0xce, 0x88,
-0xcf, 0x46, 0xde, 0x82, 0xfa, 0x64, 0xc9, 0x07,
-0xe2, 0x62, 0x18, 0xac, 0xa8, 0x6f, 0xf7, 0xb4,
-0xdb, 0xf8, 0x9f, 0x0e, 0x33, 0xff, 0x65, 0xa0,
-0x97, 0xab, 0xf4, 0xb6, 0xdd, 0x24, 0x00, 0x3d,
-0xaa, 0x6f, 0x58, 0xc6, 0x40, 0xcc, 0xde, 0x1f,
-0xd8, 0x46, 0x40, 0x75, 0xe0, 0x1f, 0xdb, 0xfd,
-0x84, 0x85, 0x69, 0xd7, 0x6e, 0xe6, 0x91, 0x7c,
-0x14, 0x89, 0x6b, 0x66, 0xd4, 0xe8, 0xae, 0x58,
-0x26, 0xff, 0x73, 0x3d, 0xc6, 0xbb, 0xc8, 0x20,
-0xdb, 0xe6, 0x57, 0x33, 0xb7, 0x7c, 0x9f, 0x0c,
-0x1d, 0x3e, 0xf5, 0x57, 0x32, 0xb8, 0x02, 0x6a,
-0x27, 0xec, 0x4e, 0xb8, 0x54, 0x1b, 0xff, 0xc3,
-0xf3, 0x5f, 0xc6, 0x78, 0x2f, 0xc5, 0x26, 0xa0,
-0x7e, 0xa0, 0x64, 0x9f, 0xfb, 0x1f, 0xf5, 0x77,
-0xcb, 0xea, 0xb6, 0x97, 0xc4, 0x45, 0x95, 0x32,
-0x47, 0xa4, 0xb3, 0x8d, 0x2a, 0x4d, 0xe7, 0xbf,
-0xae, 0x66, 0xf8, 0x27, 0xcc, 0xc7, 0x8b, 0x1b,
-0x73, 0x44, 0x3b, 0xc2, 0x65, 0x98, 0x08, 0x3e,
-0x7b, 0x82, 0xcf, 0xc0, 0xc7, 0xda, 0xa2, 0x21,
-0x16, 0xbf, 0x9c, 0xf9, 0xaf, 0xb7, 0x0c, 0x91,
-0xcf, 0xb3, 0x30, 0x19, 0xac, 0x4f, 0x78, 0x12,
-0xe2, 0x28, 0x4d, 0xd0, 0xd9, 0xbf, 0xf7, 0xda,
-0xf0, 0xb3, 0x2d, 0xff, 0x55, 0xc1, 0xf0, 0x8f,
-0x8a, 0x22, 0x9f, 0xdb, 0x6b, 0xe1, 0xb9, 0x3b,
-0x3f, 0x7d, 0x4a, 0xee, 0x0e, 0xfd, 0xab, 0xde,
-0x43, 0x6b, 0x13, 0xee, 0x9c, 0xfc, 0x0f, 0xe2,
-0x9f, 0xc7, 0xe5, 0xea, 0x14, 0xdf, 0xa5, 0xaa,
-0x47, 0x64, 0x28, 0x1d, 0xac, 0x8e, 0x11, 0x1e,
-0xf1, 0xad, 0xfd, 0x85, 0x23, 0xff, 0xc5, 0x40,
-0xe6, 0x5c, 0x9d, 0xd3, 0x6e, 0xbd, 0x92, 0x5f,
-0xf7, 0x77, 0x91, 0xd1, 0xb2, 0x9f, 0xa6, 0x67,
-0x38, 0xc5, 0xff, 0x58, 0xeb, 0x53, 0xda, 0x03,
-0xbf, 0x63, 0xb0, 0xc4, 0x1b, 0x24, 0xb8, 0x90,
-0x7c, 0x3a, 0xdb, 0x76, 0x8d, 0x62, 0x62, 0x42,
-0xb7, 0xef, 0x17, 0x6c, 0xf9, 0x2f, 0x9e, 0x0f,
-0x3d, 0xcc, 0xd7, 0x83, 0xcc, 0x03, 0xfd, 0x30,
-0x9b, 0x96, 0x37, 0x8e, 0x19, 0x2b, 0x44, 0x4a,
-0x2d, 0x95, 0x71, 0xcd, 0xbc, 0x9f, 0xe1, 0x1f,
-0x40, 0xd9, 0xcf, 0xd6, 0x7d, 0xfc, 0x69, 0x75,
-0xfa, 0xca, 0x6d, 0x30, 0xea, 0x49, 0x68, 0xb3,
-0xfb, 0xed, 0xcf, 0xcf, 0xc8, 0x7f, 0xc9, 0x35,
-0xba, 0x7b, 0x3f, 0x7b, 0xff, 0xe7, 0xa4, 0x2a,
-0xdd, 0x1f, 0x0b, 0x5d, 0xe2, 0x40, 0xda, 0xfe,
-0xfe, 0xb6, 0xfc, 0x97, 0x89, 0x7f, 0xae, 0x27,
-0x83, 0x4a, 0x3d, 0xa8, 0xfa, 0x72, 0x95, 0xdd,
-0x46, 0xc1, 0x39, 0x3f, 0x19, 0xf8, 0x27, 0xca,
-0xf1, 0x00, 0x6e, 0xac, 0x76, 0x8c, 0xba, 0x37,
-0x84, 0x4e, 0x6b, 0x5d, 0xdd, 0x5c, 0xff, 0x63,
-0xf1, 0x21, 0x19, 0xfc, 0x4f, 0x8c, 0xe3, 0x9f,
-0xc1, 0xe8, 0x87, 0x50, 0x97, 0x2c, 0xa9, 0xfc,
-0xea, 0x71, 0xfd, 0xf9, 0x78, 0xd3, 0x08, 0x5e,
-0x81, 0x0f, 0xb3, 0xf4, 0x3f, 0x88, 0x7f, 0x84,
-0x25, 0xba, 0xfb, 0x1b, 0xb8, 0x7e, 0xe4, 0x96,
-0x13, 0x2b, 0x3f, 0x10, 0x2f, 0x1b, 0xdf, 0xd7,
-0x58, 0x3e, 0xfe, 0x67, 0x82, 0xd6, 0xf1, 0xcf,
-0x96, 0x2d, 0xbc, 0xba, 0xa1, 0x4d, 0xdb, 0xd4,
-0xf7, 0x18, 0xca, 0x61, 0x33, 0x66, 0xdf, 0xbf,
-0x38, 0xf0, 0xcf, 0x73, 0x80, 0x22, 0x81, 0xd2,
-0x59, 0xd0, 0xeb, 0xaf, 0x4c, 0xc8, 0xff, 0xd3,
-0x37, 0x48, 0xbb, 0x54, 0xee, 0x51, 0x6d, 0xfc,
-0x8f, 0xf9, 0x7c, 0x9d, 0x05, 0xd8, 0x9f, 0xd0,
-0xca, 0xe4, 0x8a, 0x0d, 0xa5, 0x3f, 0x14, 0x0e,
-0xd0, 0xca, 0x61, 0xd7, 0xea, 0x9d, 0xa7, 0xdb,
-0x37, 0x75, 0x59, 0x19, 0x31, 0x34, 0x42, 0x8e,
-0xfc, 0x17, 0xc3, 0x3f, 0x31, 0xe4, 0xf3, 0x91,
-0x5f, 0x55, 0xfb, 0xdb, 0x1a, 0xd0, 0xb1, 0x0b,
-0x1e, 0xc7, 0x7c, 0xda, 0xf3, 0x5f, 0x23, 0xf0,
-0x0e, 0x03, 0xb1, 0x5e, 0xd5, 0x8b, 0x40, 0xa8,
-0xae, 0x63, 0xf6, 0x2e, 0x11, 0x15, 0x41, 0xd7,
-0x98, 0x88, 0xe8, 0x6e, 0x34, 0xec, 0xf8, 0x87,
-0xc5, 0x23, 0x0d, 0xe3, 0x51, 0x01, 0xe6, 0x83,
-0x2e, 0x41, 0x49, 0x97, 0xa8, 0xbb, 0xc6, 0x6f,
-0x6a, 0x4e, 0x23, 0xa2, 0x2c, 0xfe, 0xe7, 0x6d,
-0x16, 0xe6, 0xa6, 0x7d, 0x9f, 0x85, 0xc5, 0x0f,
-0x18, 0xfe, 0x59, 0xf9, 0xd8, 0x8c, 0x35, 0xd2,
-0x51, 0x32, 0xdb, 0xce, 0x0f, 0x38, 0xf1, 0x8f,
-0xcc, 0xe3, 0xef, 0xf6, 0xdb, 0xab, 0x39, 0xed,
-0xe3, 0xaa, 0x63, 0x6e, 0xe4, 0xa7, 0x61, 0x2e,
-0x04, 0xca, 0xc5, 0xff, 0x48, 0x16, 0xff, 0xb3,
-0x86, 0xdf, 0xef, 0x8f, 0xfa, 0xd6, 0x40, 0x0f,
-0x0d, 0x20, 0xfe, 0xb1, 0xe9, 0x7f, 0xcc, 0x7f,
-0x36, 0xfc, 0x23, 0x61, 0xb6, 0x6b, 0xb9, 0x1c,
-0x2d, 0x94, 0x62, 0x3b, 0xd8, 0x95, 0x22, 0x1b,
-0x1f, 0x72, 0xc4, 0xba, 0x7f, 0xb1, 0x1c, 0x86,
-0x8b, 0x5c, 0xdd, 0x54, 0x15, 0x96, 0xfa, 0xd4,
-0xb8, 0xbc, 0x92, 0x8a, 0x61, 0x9a, 0x30, 0xf4,
-0x27, 0x6c, 0xbc, 0x85, 0x7c, 0xbc, 0xc7, 0x89,
-0x85, 0x7f, 0xae, 0xdd, 0x85, 0xb2, 0x1f, 0x6d,
-0x55, 0x74, 0xc6, 0x30, 0xd7, 0xff, 0x18, 0x40,
-0x48, 0x32, 0x8c, 0x1c, 0xfc, 0xcf, 0xf4, 0x61,
-0xe1, 0xb2, 0xa1, 0x17, 0xaa, 0x86, 0x0b, 0x0b,
-0x67, 0x33, 0xfc, 0x26, 0xfc, 0x5e, 0xba, 0x20,
-0x34, 0x6a, 0x79, 0xf8, 0x9f, 0x0a, 0xc4, 0x3f,
-0x8d, 0x0c, 0xff, 0xb8, 0xc3, 0xb0, 0x38, 0x58,
-0x5b, 0x2a, 0x53, 0x72, 0x46, 0xef, 0x43, 0xb7,
-0x9c, 0x93, 0xff, 0xe1, 0xf8, 0x07, 0xf9, 0xae,
-0x20, 0x59, 0x06, 0x7b, 0xd5, 0x75, 0x2b, 0x67,
-0x2a, 0xa5, 0x03, 0xd1, 0x83, 0x10, 0x58, 0x2e,
-0xdb, 0xc7, 0x6b, 0xcf, 0x7f, 0xb1, 0x8f, 0xb4,
-0x86, 0xcf, 0x27, 0xe6, 0x1f, 0xb5, 0x22, 0x06,
-0x44, 0xe1, 0xa0, 0xef, 0x0b, 0x9a, 0x2b, 0x3d,
-0x9f, 0xa5, 0x2f, 0x38, 0xf2, 0x5f, 0x07, 0x0d,
-0xfd, 0x0f, 0x7b, 0x7f, 0xd2, 0xbc, 0xf4, 0x1f,
-0xf0, 0xb5, 0x3f, 0xf8, 0x5a, 0xf3, 0x52, 0xfe,
-0xfe, 0x37, 0x40, 0x86, 0xfe, 0xe7, 0x49, 0x65,
-0x97, 0x4d, 0xf6, 0x43, 0xac, 0xfc, 0x57, 0x9d,
-0x83, 0xff, 0x79, 0x87, 0x9a, 0xcf, 0x37, 0xf0,
-0x4f, 0x9d, 0xc1, 0xbf, 0xa1, 0xd1, 0xd6, 0xd1,
-0x99, 0x54, 0x4e, 0x68, 0xcd, 0x4e, 0xfe, 0xc7,
-0x91, 0xff, 0x3a, 0x8b, 0x22, 0x9f, 0xdf, 0x87,
-0xfc, 0xd2, 0x21, 0xa1, 0x81, 0xca, 0x7b, 0xc8,
-0x88, 0x7c, 0x1f, 0xd4, 0x76, 0x20, 0xff, 0xe3,
-0x49, 0x41, 0xa3, 0x84, 0x62, 0xfa, 0x07, 0xcc,
-0x7f, 0xed, 0x88, 0xa9, 0xfa, 0x4c, 0x70, 0xe1,
-0xc6, 0x7c, 0x2e, 0x03, 0x42, 0x85, 0x2c, 0x70,
-0x33, 0x37, 0xe5, 0xe0, 0x7f, 0x54, 0x7b, 0xfe,
-0xeb, 0x29, 0x9d, 0x7d, 0xbf, 0xed, 0x84, 0x01,
-0x21, 0x5a, 0x8d, 0xb4, 0xcf, 0x69, 0x0e, 0x0c,
-0x8a, 0xd6, 0x17, 0x5a, 0xdf, 0xaf, 0x33, 0xff,
-0x75, 0x89, 0xee, 0x4d, 0x7a, 0xdb, 0xc4, 0xd9,
-0x0c, 0x78, 0x7c, 0xe6, 0xdc, 0xe7, 0x37, 0x54,
-0x4d, 0x4a, 0xff, 0x8c, 0xb0, 0xc7, 0xc6, 0xff,
-0x38, 0xf3, 0x5f, 0x3c, 0x89, 0xa3, 0xa0, 0xf7,
-0x58, 0xd3, 0x3c, 0xe4, 0xda, 0xdf, 0x39, 0xaa,
-0x5e, 0x5c, 0xdb, 0xfc, 0xcf, 0x0e, 0xfe, 0xc7,
-0xf2, 0x3f, 0x5a, 0xc1, 0x15, 0xed, 0x23, 0x8c,
-0x5f, 0x4f, 0x88, 0x77, 0x6b, 0x93, 0x83, 0x75,
-0xc3, 0x9e, 0x27, 0xd8, 0xf8, 0x5f, 0xa6, 0xf5,
-0x63, 0xd3, 0xc6, 0xc5, 0xb3, 0x30, 0x11, 0x6d,
-0x4e, 0x7a, 0x2f, 0x64, 0xe4, 0xbf, 0xf6, 0xa1,
-0x48, 0xe9, 0xff, 0x16, 0x4f, 0xd3, 0xe7, 0x40,
-0x4d, 0xba, 0xfe, 0x9a, 0x9c, 0xd6, 0xb7, 0xd2,
-0x79, 0x23, 0xec, 0xb5, 0x4f, 0x1b, 0x5b, 0x4b,
-0x3b, 0xff, 0x43, 0xe1, 0x31, 0xa9, 0x01, 0xfd,
-0x55, 0x88, 0xa0, 0xf0, 0x49, 0xd5, 0xe5, 0x10,
-0x39, 0xa5, 0xfc, 0xa3, 0xa7, 0x12, 0x89, 0xa0,
-0x53, 0x0a, 0x8e, 0x77, 0xc5, 0xfa, 0x50, 0xd2,
-0xf2, 0x3f, 0x61, 0x86, 0x7f, 0xf6, 0xb1, 0xdb,
-0xdc, 0xc0, 0x60, 0xd2, 0x61, 0x08, 0xeb, 0xae,
-0x22, 0x36, 0x9f, 0x3b, 0xfb, 0xd7, 0x72, 0xff,
-0xa3, 0xa4, 0xe6, 0x33, 0x9d, 0xff, 0xf2, 0x33,
-0xfc, 0x13, 0x67, 0x61, 0xcb, 0x0b, 0xcc, 0x7f,
-0x72, 0xda, 0x67, 0x1b, 0x73, 0xb3, 0x4f, 0x3e,
-0x5c, 0xe5, 0x88, 0x5f, 0xc7, 0x1c, 0xf8, 0xe7,
-0x22, 0x5e, 0xec, 0x9a, 0x81, 0xbf, 0x5e, 0xd1,
-0x57, 0x6d, 0x7b, 0x78, 0x94, 0xbc, 0x66, 0xe7,
-0x7f, 0xae, 0xcb, 0xc4, 0x3f, 0x97, 0xb4, 0x7a,
-0xdd, 0x3b, 0x88, 0x7a, 0x06, 0xb2, 0xb0, 0xdf,
-0x93, 0x14, 0x07, 0xe5, 0x53, 0xb0, 0x28, 0xed,
-0xcf, 0x57, 0x21, 0xff, 0x63, 0xe5, 0xbf, 0x18,
-0xfe, 0x39, 0x84, 0xf9, 0x97, 0x2d, 0xbe, 0x00,
-0xa7, 0x7d, 0xe4, 0x1f, 0x95, 0x8e, 0x42, 0x77,
-0xdb, 0x1d, 0xce, 0xf8, 0xeb, 0xc8, 0x7f, 0x7d,
-0x1f, 0xef, 0xa7, 0x91, 0x3d, 0xc6, 0xfd, 0xdb,
-0xd8, 0x6d, 0xdf, 0x2f, 0xab, 0x71, 0xdc, 0x6f,
-0xe3, 0x7f, 0xc0, 0x03, 0xfb, 0xc2, 0x6c, 0x7e,
-0x08, 0xf1, 0x50, 0xe6, 0x9f, 0x07, 0xe5, 0x52,
-0x32, 0xa8, 0x76, 0xc8, 0x5c, 0x0f, 0xcc, 0x10,
-0x91, 0x6a, 0xe0, 0x81, 0x02, 0x73, 0x3d, 0x80,
-0xbc, 0xae, 0xe8, 0xe4, 0xda, 0x3a, 0x44, 0x77,
-0x7b, 0xba, 0x26, 0xa1, 0xf7, 0xd8, 0x96, 0x48,
-0xe7, 0xa5, 0xb6, 0x13, 0xed, 0xf5, 0x27, 0x71,
-0xbc, 0x74, 0xc2, 0x6f, 0xc4, 0x77, 0x07, 0xff,
-0x73, 0x51, 0x65, 0x41, 0x6a, 0xa9, 0x38, 0xaa,
-0x4d, 0x92, 0x96, 0xc4, 0x02, 0x9d, 0x0d, 0x73,
-0x5c, 0x68, 0xc6, 0xb4, 0xd7, 0x25, 0x0d, 0x15,
-0x1d, 0xc8, 0xff, 0x48, 0x69, 0xbc, 0x71, 0x05,
-0x26, 0xba, 0x38, 0xc8, 0x39, 0x2b, 0xbd, 0x51,
-0x59, 0x3f, 0xc8, 0x56, 0xcb, 0x1b, 0x65, 0xbf,
-0xeb, 0xa8, 0xfb, 0x45, 0xe0, 0x23, 0xb1, 0x09,
-0x5e, 0x4e, 0xe1, 0x9f, 0x34, 0x3e, 0xb1, 0xf1,
-0x3f, 0xf0, 0x3f, 0xa2, 0x9f, 0x7e, 0xc9, 0xbd,
-0x8f, 0x8c, 0xd2, 0x9e, 0x6a, 0x5f, 0x87, 0xeb,
-0x63, 0xd2, 0x14, 0xe3, 0x40, 0x25, 0x3b, 0xff,
-0x95, 0x8a, 0xe6, 0x0f, 0x83, 0x3f, 0xd1, 0x1a,
-0xf4, 0xb1, 0xfd, 0xb8, 0xac, 0x76, 0xcb, 0x75,
-0xc4, 0xd3, 0xf5, 0xb8, 0x89, 0x7f, 0xcc, 0xbf,
-0xaf, 0x8d, 0xff, 0x19, 0x55, 0x7e, 0x8a, 0x69,
-0xc4, 0x78, 0x68, 0x54, 0xe9, 0x81, 0x18, 0xca,
-0x84, 0x02, 0xf0, 0x53, 0xc8, 0xc8, 0x7f, 0xe9,
-0xe5, 0xa3, 0x8a, 0x85, 0x87, 0x5f, 0x97, 0x1a,
-0x91, 0xf6, 0x19, 0x85, 0x33, 0xd1, 0x73, 0x9a,
-0x27, 0x2e, 0x06, 0x0c, 0xe9, 0x0e, 0xea, 0x9f,
-0xd3, 0xfb, 0x97, 0x67, 0xe4, 0xe7, 0xd2, 0x78,
-0x78, 0x01, 0xfe, 0xf5, 0x2f, 0xc1, 0x65, 0xda,
-0xa2, 0xda, 0xe3, 0xbb, 0x3d, 0xff, 0xb5, 0x47,
-0xb6, 0xf8, 0xc6, 0x5f, 0x33, 0x58, 0xb5, 0x05,
-0x8d, 0xa3, 0x72, 0x03, 0x61, 0xcf, 0xf7, 0x68,
-0x2f, 0x42, 0xf3, 0x60, 0x49, 0x3c, 0x07, 0xff,
-0x53, 0x14, 0x67, 0x0b, 0x75, 0x2b, 0x4f, 0x7b,
-0xb1, 0xff, 0x67, 0xb3, 0xea, 0x6b, 0xab, 0x18,
-0xeb, 0xfc, 0xdf, 0xf2, 0x8b, 0xe8, 0x58, 0xe2,
-0xb9, 0xf9, 0x9f, 0x2d, 0x5c, 0x26, 0x27, 0x23,
-0x90, 0xeb, 0x80, 0xea, 0x76, 0xb9, 0x29, 0xf2,
-0x80, 0x8f, 0x5d, 0x19, 0x72, 0xd9, 0xf1, 0xcf,
-0x78, 0x2a, 0xff, 0x85, 0xd9, 0x1f, 0xfa, 0x08,
-0x9d, 0x3f, 0x22, 0x6f, 0x28, 0x7c, 0x96, 0x6e,
-0x8d, 0xdc, 0xe6, 0x97, 0x11, 0x0f, 0x6c, 0x8a,
-0xcd, 0x1f, 0x81, 0x0c, 0xfc, 0x23, 0x7d, 0x48,
-0xbf, 0xd3, 0xef, 0x5d, 0x22, 0xfe, 0x8c, 0xbd,
-0xff, 0x1d, 0x49, 0xf9, 0xb0, 0xf8, 0x00, 0x7d,
-0x9e, 0x36, 0x04, 0xda, 0xe3, 0x78, 0x85, 0xf9,
-0x87, 0x12, 0x07, 0xfe, 0xf9, 0x7b, 0x83, 0xff,
-0xb9, 0x1f, 0x67, 0xe3, 0x7d, 0xf9, 0xee, 0x17,
-0xd8, 0x6c, 0x7c, 0x27, 0x34, 0xa9, 0xb4, 0x2c,
-0x65, 0xc6, 0xdd, 0x39, 0xf0, 0x8f, 0x60, 0xdb,
-0x8f, 0x30, 0x98, 0xc4, 0x69, 0x6a, 0xf1, 0x45,
-0xa9, 0x4e, 0x5f, 0xb5, 0xbf, 0x73, 0xbe, 0xce,
-0xa5, 0xd1, 0x7d, 0x6e, 0x57, 0x3a, 0xff, 0xf5,
-0xa0, 0xa9, 0xff, 0x41, 0xb4, 0xe3, 0x9f, 0x3f,
-0xc0, 0x69, 0xf3, 0x8d, 0xd0, 0x41, 0x19, 0x02,
-0x9c, 0xed, 0xdb, 0x64, 0xfc, 0xb4, 0xcf, 0x91,
-0xff, 0x32, 0x40, 0x0e, 0xe7, 0xbb, 0x02, 0x23,
-0xae, 0x0d, 0xe4, 0x0a, 0x7c, 0x37, 0x52, 0x19,
-0x9b, 0x79, 0x17, 0xf9, 0x21, 0x45, 0x05, 0xd4,
-0x8a, 0x0d, 0x21, 0xc8, 0xd6, 0xff, 0xb0, 0xf5,
-0x26, 0xf7, 0x9a, 0x34, 0xfe, 0xa3, 0x82, 0x3a,
-0xe0, 0x0e, 0xba, 0xb6, 0x30, 0x20, 0xca, 0x7f,
-0x7a, 0xc8, 0xaa, 0x17, 0x48, 0x96, 0x67, 0xf0,
-0x3f, 0x5e, 0x83, 0xff, 0xe9, 0xdd, 0xc1, 0x8c,
-0xdd, 0x86, 0x34, 0x3a, 0x26, 0x2e, 0x96, 0xac,
-0xf9, 0x84, 0xa4, 0x60, 0xea, 0x51, 0x53, 0xd1,
-0x67, 0xc6, 0x19, 0x69, 0xc4, 0x7e, 0x65, 0x6b,
-0x76, 0xfe, 0x8b, 0x27, 0x41, 0x0c, 0x83, 0x85,
-0x45, 0x54, 0x44, 0xf7, 0x69, 0x7b, 0x50, 0x08,
-0x7d, 0x54, 0xd9, 0xa7, 0x95, 0x64, 0xe0, 0x1f,
-0x9e, 0x2f, 0x4b, 0xf1, 0x0f, 0x77, 0x20, 0xec,
-0xa9, 0x76, 0x15, 0xa1, 0xfe, 0x27, 0x3a, 0x63,
-0x0d, 0x6c, 0xa6, 0x3c, 0x23, 0xe6, 0xcc, 0x7f,
-0x3d, 0x9a, 0xc6, 0x3f, 0x01, 0x54, 0xa7, 0x74,
-0xa9, 0x9b, 0x29, 0x97, 0xa9, 0x48, 0xb0, 0x59,
-0x08, 0x63, 0xe0, 0x76, 0xf2, 0x3f, 0x3b, 0x52,
-0x6a, 0x67, 0x04, 0x06, 0xcb, 0x8b, 0xf0, 0xb6,
-0x0e, 0x5a, 0xbd, 0x42, 0x2e, 0x3d, 0xb2, 0x2c,
-0xd6, 0x09, 0x19, 0xfa, 0x1f, 0xe4, 0x7f, 0xb6,
-0xf3, 0xd1, 0xb1, 0xff, 0xd1, 0x71, 0xb5, 0x56,
-0x66, 0x61, 0x37, 0x06, 0xba, 0xd8, 0x28, 0xcb,
-0x11, 0x11, 0x22, 0x6d, 0x2c, 0x22, 0x97, 0x60,
-0xfe, 0xcb, 0x7c, 0x9f, 0x13, 0xd7, 0xda, 0xf9,
-0x1f, 0x84, 0x3d, 0x0f, 0x75, 0xbe, 0x1a, 0xbb,
-0x5c, 0xb3, 0x88, 0x19, 0x8f, 0x23, 0xff, 0x33,
-0x7b, 0xf9, 0x34, 0xa5, 0x35, 0x37, 0xff, 0x03,
-0x47, 0x3d, 0x35, 0xa1, 0x92, 0x07, 0x99, 0xf1,
-0x22, 0xdb, 0xf6, 0x7a, 0xbe, 0x27, 0xee, 0xa2,
-0x2f, 0x91, 0x16, 0x84, 0x46, 0x2f, 0x94, 0x9a,
-0xdf, 0xfb, 0x06, 0x8b, 0xff, 0x61, 0xaf, 0xd1,
-0x0d, 0xbe, 0x0a, 0x86, 0x7f, 0xf4, 0x0e, 0x0a,
-0x3e, 0xb9, 0x7b, 0x93, 0x6b, 0x21, 0xed, 0x66,
-0x6f, 0xe8, 0xd0, 0x3f, 0x1b, 0xfc, 0x8f, 0x31,
-0xde, 0x9d, 0x1d, 0xe0, 0x0f, 0xb9, 0x4a, 0xc9,
-0xab, 0xfe, 0x8d, 0x52, 0xe5, 0xcd, 0x72, 0x3b,
-0x29, 0x47, 0xc7, 0x1b, 0x72, 0xe6, 0xbf, 0xd2,
-0xfc, 0x4f, 0x17, 0xe7, 0xd3, 0xe4, 0x68, 0x68,
-0x80, 0xdc, 0xaf, 0x54, 0x69, 0xf2, 0x10, 0xb9,
-0x9e, 0x5d, 0xe1, 0x54, 0xdb, 0x9b, 0xb9, 0xf9,
-0x9f, 0xa3, 0x04, 0x65, 0x3c, 0x22, 0x12, 0x71,
-0xfb, 0xda, 0x02, 0xd1, 0x19, 0xbb, 0x08, 0x4a,
-0xdf, 0xa7, 0xd9, 0xf1, 0xcf, 0x88, 0x50, 0x9d,
-0xbe, 0xff, 0x1b, 0x02, 0x02, 0x45, 0x71, 0x98,
-0xf0, 0x8c, 0xa1, 0x22, 0x0e, 0x4c, 0x37, 0x7e,
-0xaa, 0xba, 0x98, 0x83, 0xff, 0xf9, 0x22, 0xa2,
-0x9d, 0x06, 0xb8, 0x9f, 0xb6, 0x8e, 0xc1, 0x29,
-0xa8, 0x57, 0x3c, 0xba, 0x38, 0x56, 0xc1, 0x80,
-0x68, 0x61, 0xee, 0xfc, 0x17, 0xf2, 0x3f, 0x87,
-0xb8, 0xec, 0xa7, 0x74, 0x84, 0xeb, 0x7f, 0x3e,
-0xbf, 0x33, 0x34, 0xa2, 0x3d, 0x00, 0x0b, 0xe2,
-0xee, 0xa4, 0x3d, 0xff, 0x95, 0xf6, 0x3f, 0xf8,
-0xe1, 0x54, 0xf7, 0x73, 0x22, 0xe8, 0xb0, 0x54,
-0xf3, 0x4a, 0x22, 0xe8, 0xdb, 0xcc, 0x19, 0xa1,
-0x99, 0x6a, 0xae, 0xfc, 0x17, 0xfb, 0x6c, 0xe9,
-0x22, 0x98, 0x93, 0x68, 0xfb, 0x46, 0xe9, 0x10,
-0xec, 0x12, 0xe6, 0x41, 0x91, 0x56, 0xf8, 0x2a,
-0x2a, 0x82, 0xc0, 0x1d, 0xb6, 0xe7, 0xbf, 0xba,
-0x67, 0x9b, 0x20, 0xe7, 0x0d, 0xb5, 0x97, 0x2e,
-0x4a, 0x16, 0x7f, 0xbb, 0xea, 0x24, 0x9c, 0xa7,
-0x4b, 0x10, 0xff, 0x5c, 0x24, 0xcb, 0xf0, 0xa7,
-0xb5, 0xe2, 0x3b, 0xaa, 0x95, 0xff, 0xba, 0xd6,
-0xd2, 0xff, 0xbc, 0x47, 0xd9, 0xc6, 0xf3, 0xc4,
-0xaa, 0x7d, 0xe2, 0xb0, 0xfc, 0x3a, 0x3c, 0x8d,
-0xdf, 0xd7, 0xef, 0x83, 0xe3, 0x86, 0x14, 0xff,
-0x48, 0x97, 0x39, 0x3f, 0xb0, 0xf1, 0x8a, 0x92,
-0xda, 0xa4, 0xb3, 0xdd, 0x7a, 0x67, 0xfd, 0x47,
-0x2c, 0x7e, 0x9d, 0x85, 0x17, 0x69, 0xdd, 0x8f,
-0x3c, 0x27, 0x30, 0xe3, 0x83, 0x8e, 0x7d, 0xad,
-0x08, 0xd4, 0x91, 0xff, 0x8a, 0xb1, 0xf7, 0x0f,
-0xc2, 0x29, 0xed, 0x2d, 0x68, 0x1a, 0x91, 0x83,
-0xa5, 0xbf, 0x7d, 0xa5, 0x6b, 0xd7, 0xbc, 0xb5,
-0x25, 0x49, 0x17, 0xf0, 0xf1, 0xb2, 0xf7, 0xaf,
-0x59, 0x66, 0x3d, 0x1f, 0xf9, 0x9f, 0xf4, 0xee,
-0x4c, 0xd5, 0x5d, 0xeb, 0xaf, 0x3a, 0xf1, 0x50,
-0x97, 0xfa, 0x75, 0xca, 0x11, 0x60, 0x97, 0x31,
-0x5e, 0xc8, 0xe4, 0x7f, 0x52, 0xf3, 0x29, 0x05,
-0xfa, 0x2b, 0x82, 0xec, 0x43, 0xee, 0x24, 0x81,
-0x76, 0x97, 0x5a, 0xaa, 0x1a, 0x1b, 0x5b, 0x95,
-0xc8, 0x36, 0xfe, 0x27, 0x60, 0xf1, 0x1b, 0xcc,
-0xb8, 0x53, 0x3f, 0x3e, 0x26, 0x0e, 0x17, 0xbe,
-0x48, 0x9b, 0xb5, 0xad, 0x31, 0x51, 0x25, 0x09,
-0x43, 0xcf, 0x53, 0x93, 0x2b, 0xff, 0x35, 0xca,
-0xa2, 0xdb, 0x5d, 0x7a, 0x09, 0xe6, 0xbf, 0x46,
-0x94, 0xd5, 0x11, 0xef, 0x36, 0x71, 0x54, 0xe1,
-0x5b, 0xb3, 0x58, 0x8e, 0xfc, 0x57, 0x6a, 0xbf,
-0x7f, 0x03, 0x73, 0xec, 0x33, 0x30, 0xd1, 0x57,
-0xa5, 0xed, 0x49, 0xce, 0x58, 0x0f, 0xef, 0xd3,
-0x5e, 0x94, 0x46, 0x3b, 0xf2, 0x5f, 0xa9, 0xf8,
-0x65, 0xa0, 0x97, 0x7e, 0x16, 0xad, 0x9a, 0x94,
-0x4d, 0xf0, 0x78, 0x57, 0xc5, 0x90, 0xab, 0x29,
-0xd4, 0xa3, 0xf9, 0x80, 0x2d, 0xad, 0x64, 0x2e,
-0xfe, 0xc7, 0x08, 0xdc, 0x6c, 0xfd, 0xac, 0xd1,
-0x7a, 0xa4, 0xe5, 0xcc, 0xd3, 0x90, 0x6a, 0x39,
-0x16, 0xf6, 0xc1, 0xcc, 0x58, 0x66, 0xfe, 0x2b,
-0x68, 0xf0, 0x8d, 0x5a, 0x3d, 0x04, 0x8e, 0xb0,
-0xf9, 0x91, 0x0b, 0xba, 0x55, 0x75, 0x80, 0x39,
-0x6a, 0x59, 0xa3, 0x08, 0x1d, 0x55, 0xdb, 0xfe,
-0x0b, 0x3c, 0x29, 0xfd, 0xcf, 0x5e, 0xf1, 0xe7,
-0x6c, 0xe0, 0x4b, 0x4e, 0x15, 0x9f, 0x17, 0x6f,
-0xeb, 0xd6, 0x2b, 0x16, 0x5f, 0x23, 0x53, 0x71,
-0x19, 0xbc, 0xab, 0xd4, 0x95, 0xb1, 0x89, 0xd2,
-0x2d, 0xff, 0x13, 0x2b, 0x66, 0xf1, 0x4b, 0x69,
-0xd1, 0x8b, 0xcf, 0xf1, 0x68, 0xce, 0xfe, 0x8b,
-0xe7, 0x22, 0x97, 0x7e, 0x6b, 0xcc, 0xc0, 0x8c,
-0x71, 0x83, 0x11, 0x4a, 0x8a, 0x23, 0xd3, 0xec,
-0xf8, 0xe7, 0x32, 0x5b, 0x96, 0xde, 0x0a, 0xf1,
-0x9b, 0xca, 0x79, 0xda, 0xb0, 0xcb, 0x73, 0x4e,
-0x5c, 0x47, 0x51, 0xf6, 0x53, 0xc2, 0xf1, 0x33,
-0x6d, 0xce, 0xe0, 0x7f, 0x18, 0xfe, 0x79, 0x9b,
-0x72, 0xfd, 0x8f, 0x0f, 0x46, 0x3a, 0x7c, 0xdd,
-0xf2, 0x07, 0xad, 0x77, 0xa3, 0x10, 0x5a, 0xcf,
-0xcf, 0xff, 0x1c, 0x24, 0x9c, 0xff, 0xd1, 0x98,
-0xe3, 0x0a, 0x74, 0xbb, 0x82, 0x37, 0x7b, 0xda,
-0x19, 0xec, 0x79, 0x7e, 0x66, 0x6e, 0xfe, 0x87,
-0xe1, 0x9f, 0x83, 0x0a, 0xd7, 0xff, 0xdc, 0x06,
-0x7d, 0xb4, 0x66, 0xa7, 0x2b, 0x4e, 0xd6, 0x65,
-0xf1, 0x27, 0x63, 0x8e, 0xfc, 0xd7, 0x87, 0xc8,
-0xff, 0x6c, 0x17, 0xc3, 0x10, 0x8f, 0x35, 0xc7,
-0x6b, 0x4d, 0xd8, 0x53, 0x62, 0xc3, 0xcf, 0x43,
-0x8e, 0xfc, 0x17, 0x1b, 0x9d, 0xce, 0x9c, 0xea,
-0x5e, 0xb6, 0x94, 0x50, 0x06, 0x2f, 0x9e, 0x72,
-0x28, 0xc4, 0x38, 0xff, 0x63, 0xcf, 0x7f, 0xc1,
-0x44, 0x8c, 0x3f, 0xe4, 0x71, 0x38, 0x01, 0x88,
-0xaf, 0x66, 0x04, 0x94, 0x17, 0xed, 0x78, 0x3b,
-0x53, 0xff, 0x23, 0xf1, 0x97, 0x54, 0x68, 0x2d,
-0xf3, 0xcf, 0x44, 0xef, 0x1c, 0x23, 0x4d, 0x24,
-0x9b, 0xff, 0x31, 0xd7, 0x03, 0xe2, 0x9f, 0x07,
-0x31, 0xe9, 0x39, 0x2b, 0x42, 0x69, 0x14, 0x5c,
-0xe0, 0x46, 0x9a, 0x91, 0xbb, 0x9d, 0xbc, 0xfc,
-0xcf, 0x53, 0x5c, 0xff, 0x1c, 0x2a, 0x85, 0x2d,
-0xb4, 0x32, 0xd9, 0xb3, 0xb8, 0xb0, 0x64, 0xe9,
-0x26, 0x43, 0xf6, 0x73, 0x9a, 0xe6, 0xd4, 0xff,
-0xfc, 0xca, 0xd0, 0xff, 0x44, 0x60, 0x08, 0x16,
-0xaf, 0xf5, 0x06, 0x5b, 0x4b, 0xb4, 0xe7, 0x29,
-0xe7, 0x7f, 0x8e, 0xd3, 0x0f, 0x0d, 0xc3, 0xc9,
-0xff, 0x5c, 0x36, 0xf4, 0xcf, 0x43, 0xda, 0x28,
-0x2c, 0x19, 0x58, 0x35, 0xe6, 0xfe, 0x39, 0x4c,
-0x2a, 0xcd, 0x53, 0xe8, 0x7f, 0x78, 0xfe, 0x51,
-0x11, 0x7d, 0x32, 0x43, 0x0b, 0xaa, 0xa7, 0xb7,
-0xf5, 0xbd, 0xf6, 0xd7, 0xd9, 0x95, 0xad, 0x71,
-0xf1, 0x38, 0x3c, 0x4f, 0x83, 0xc9, 0xdc, 0xfa,
-0xe7, 0xf6, 0x4f, 0x2b, 0xca, 0xbd, 0xb0, 0x40,
-0x93, 0xef, 0x64, 0xc3, 0x44, 0xd8, 0x23, 0xae,
-0x87, 0x53, 0x64, 0x13, 0xdb, 0x6a, 0xf9, 0x33,
-0xf5, 0xcf, 0x4f, 0xd1, 0xaf, 0x27, 0x8b, 0x4e,
-0x90, 0x5e, 0xd4, 0x7b, 0x87, 0x8b, 0x18, 0x10,
-0x42, 0xe0, 0xc7, 0xf9, 0x9f, 0xe9, 0x9b, 0x72,
-0xeb, 0x9f, 0xd7, 0xe1, 0xfe, 0x2b, 0xa2, 0x46,
-0x92, 0x81, 0xf0, 0xe7, 0x38, 0xb1, 0x6f, 0xf2,
-0x8d, 0x9d, 0x86, 0x10, 0xe8, 0x15, 0xc9, 0xfc,
-0x5e, 0x4c, 0xfd, 0x73, 0xf1, 0xef, 0xc5, 0x83,
-0xf2, 0xf1, 0x58, 0xcb, 0x43, 0xc5, 0x0c, 0xff,
-0x28, 0x27, 0x4d, 0x20, 0x74, 0x8c, 0x6d, 0x16,
-0xb9, 0xfe, 0xd9, 0x9a, 0x4f, 0xcc, 0x7f, 0x2d,
-0x6d, 0x66, 0xf1, 0x57, 0x50, 0xd9, 0x9f, 0xa5,
-0x99, 0x94, 0x18, 0xdb, 0xf0, 0xbb, 0x53, 0x08,
-0x21, 0xa7, 0xfe, 0x47, 0xc5, 0xfa, 0xaf, 0x19,
-0xc3, 0x6c, 0xe3, 0x3f, 0x1b, 0x89, 0x02, 0x09,
-0xde, 0x16, 0x1a, 0x58, 0x98, 0x9b, 0x91, 0x9b,
-0xff, 0x81, 0x83, 0x2a, 0x8b, 0xbf, 0x4a, 0x64,
-0x8e, 0xc9, 0x36, 0xec, 0x82, 0xcd, 0x19, 0xf5,
-0x5c, 0x39, 0xf4, 0x3f, 0x71, 0x62, 0x05, 0x6e,
-0x53, 0x11, 0x9d, 0xab, 0xfe, 0xcb, 0xe2, 0x7f,
-0xa2, 0x6c, 0x99, 0xa5, 0x84, 0xd0, 0x5d, 0xb1,
-0x0e, 0x0b, 0x11, 0x65, 0xd6, 0x7f, 0x71, 0xfd,
-0x8f, 0x31, 0xa8, 0x54, 0x20, 0x8e, 0x88, 0x2a,
-0xc5, 0xfc, 0x8b, 0x9d, 0xef, 0x3a, 0xee, 0xd0,
-0xff, 0x70, 0x3e, 0x67, 0x4c, 0x7c, 0x15, 0x17,
-0x12, 0xcf, 0x7f, 0x49, 0x17, 0x84, 0xe6, 0xe5,
-0xab, 0x0c, 0x7e, 0x63, 0x36, 0xe2, 0x01, 0x1b,
-0xff, 0x23, 0x0c, 0xb3, 0x6d, 0x69, 0x09, 0x03,
-0x39, 0xd3, 0xf6, 0xc3, 0x99, 0x02, 0xa4, 0x4d,
-0x3a, 0x39, 0x42, 0x68, 0xe7, 0xf5, 0x62, 0x97,
-0x51, 0x1a, 0x1d, 0xb5, 0xe1, 0x1f, 0xcc, 0x7f,
-0x2d, 0x36, 0xf0, 0x8f, 0xca, 0x81, 0x90, 0xe7,
-0xde, 0x08, 0x37, 0x10, 0xf6, 0xe4, 0xa8, 0xff,
-0x62, 0xf8, 0x47, 0x5a, 0x68, 0x54, 0x6f, 0x75,
-0xc1, 0x0e, 0x21, 0xb0, 0x7c, 0xa6, 0x42, 0x0a,
-0x14, 0x36, 0xcc, 0x36, 0x77, 0x6e, 0xfe, 0x07,
-0xf1, 0x4f, 0x29, 0xd7, 0xff, 0xec, 0xd2, 0x0e,
-0x6a, 0x48, 0xa3, 0xb9, 0x72, 0xd4, 0xd3, 0x65,
-0xe1, 0x9f, 0x92, 0x32, 0xf2, 0xe3, 0xae, 0xb7,
-0xa1, 0x19, 0xd3, 0x58, 0xd5, 0xce, 0x0c, 0x97,
-0x83, 0xff, 0xb1, 0xf2, 0x5f, 0xdb, 0xc5, 0xb9,
-0xdc, 0xf8, 0x27, 0x25, 0x35, 0x2d, 0xb6, 0xfb,
-0xab, 0x1c, 0xf9, 0x2f, 0x13, 0x6f, 0x9f, 0x81,
-0x11, 0xad, 0x8e, 0x45, 0xf4, 0xf4, 0xb4, 0xe7,
-0xd1, 0xff, 0x3c, 0x8b, 0xf8, 0xe7, 0x1d, 0xf6,
-0xac, 0xfb, 0xe0, 0x2a, 0x5a, 0xc2, 0x81, 0x90,
-0x64, 0x21, 0xa2, 0x4c, 0xfd, 0x0f, 0xe2, 0x1f,
-0x63, 0xd3, 0x3d, 0x48, 0x1f, 0x07, 0xb5, 0xbf,
-0x35, 0x18, 0xb2, 0x47, 0x70, 0x53, 0xff, 0x63,
-0xcf, 0x7f, 0x3d, 0xc5, 0xf1, 0x4f, 0xe1, 0x2b,
-0x0c, 0xe9, 0xcf, 0x19, 0x70, 0x7d, 0x93, 0x03,
-0x83, 0xe2, 0x01, 0xb7, 0x43, 0xff, 0x63, 0x3e,
-0xdf, 0xd0, 0xff, 0xdc, 0x98, 0x5c, 0xb5, 0xa1,
-0xf5, 0xa4, 0xf2, 0x16, 0x5d, 0x38, 0xe2, 0xbd,
-0x1b, 0x69, 0x9f, 0x8e, 0x6b, 0x47, 0xbc, 0x76,
-0xfd, 0x8f, 0xb9, 0xdc, 0x38, 0xfe, 0xb9, 0x90,
-0x22, 0xed, 0xd1, 0xb1, 0x0c, 0x79, 0x9f, 0xee,
-0x64, 0x1e, 0x46, 0x6a, 0x3e, 0xe9, 0xe0, 0x7f,
-0xd2, 0xfc, 0x3f, 0xd7, 0x3f, 0x73, 0xd9, 0x4f,
-0x23, 0x4c, 0xd2, 0xba, 0xf3, 0x25, 0xe3, 0xad,
-0xcd, 0x58, 0xf6, 0xe5, 0xd4, 0xff, 0x38, 0xf8,
-0x9f, 0x33, 0x49, 0xf6, 0x92, 0xff, 0xb3, 0x90,
-0xaa, 0x07, 0xe0, 0x33, 0x23, 0xf2, 0x7a, 0xf1,
-0x2b, 0xd0, 0x1b, 0x5f, 0x87, 0xfa, 0x1f, 0xeb,
-0xfd, 0x9d, 0xf9, 0xaf, 0xa7, 0xe5, 0x79, 0xba,
-0x6b, 0x8c, 0xac, 0xd6, 0x9e, 0x83, 0xaa, 0x01,
-0x76, 0xdb, 0xad, 0x14, 0x6f, 0xab, 0x30, 0xee,
-0x67, 0x3f, 0x65, 0xea, 0x7f, 0xf6, 0xa2, 0xb7,
-0x69, 0xf2, 0xf5, 0x43, 0xaf, 0x16, 0x48, 0xb6,
-0x05, 0xc9, 0x4a, 0xa1, 0x17, 0x2b, 0xa4, 0x6c,
-0xf3, 0xe9, 0xcc, 0x7f, 0x7d, 0xc8, 0xc2, 0x4a,
-0x49, 0xac, 0xf3, 0x76, 0x38, 0xac, 0x54, 0x8d,
-0x95, 0x8c, 0x89, 0xeb, 0x14, 0xdc, 0x81, 0xca,
-0x6c, 0xbc, 0x05, 0x13, 0x42, 0x23, 0x06, 0x32,
-0x67, 0xfe, 0xeb, 0x6d, 0x64, 0xe3, 0xf7, 0xcd,
-0x88, 0x31, 0x7c, 0xd8, 0x30, 0xc8, 0xbc, 0xb7,
-0x7d, 0x07, 0x6a, 0x14, 0x82, 0x39, 0xf9, 0x9f,
-0xcb, 0x50, 0xdf, 0xcf, 0xbe, 0xc7, 0x20, 0xf3,
-0xde, 0x4b, 0xf4, 0x82, 0xb1, 0xaa, 0x26, 0xb8,
-0x87, 0x05, 0x3e, 0x4b, 0xff, 0x53, 0x6c, 0xe7,
-0x7f, 0x30, 0xff, 0xf5, 0x28, 0x65, 0xf1, 0xb7,
-0x89, 0x3c, 0xae, 0xbe, 0xcb, 0xf5, 0x3f, 0x21,
-0xac, 0xf0, 0x9a, 0x9b, 0xd2, 0xff, 0x64, 0xd5,
-0x7f, 0x09, 0x0c, 0xff, 0x74, 0xf9, 0xb0, 0x5e,
-0xcc, 0xc7, 0x65, 0x63, 0xae, 0xb8, 0x0b, 0x11,
-0xd1, 0x1d, 0x53, 0xe8, 0x7f, 0x1e, 0x54, 0x63,
-0x7a, 0x4f, 0x3c, 0x44, 0x71, 0x36, 0x8e, 0xb0,
-0xd9, 0x28, 0xde, 0xd8, 0x5b, 0x57, 0xfd, 0x4a,
-0x91, 0x03, 0x0f, 0x58, 0xd3, 0x5f, 0xbc, 0x8e,
-0xe1, 0x01, 0x5e, 0xc4, 0xad, 0xb6, 0x1d, 0x86,
-0x96, 0x81, 0x92, 0xf5, 0x62, 0x20, 0x36, 0xe1,
-0xf9, 0xcc, 0xd1, 0x59, 0x0c, 0x21, 0xe3, 0x8e,
-0x1b, 0x2b, 0x94, 0x6d, 0xf5, 0x5f, 0xd7, 0x5e,
-0x82, 0x7f, 0xc5, 0xfc, 0x57, 0x7b, 0xe7, 0x58,
-0xf7, 0x5b, 0xe4, 0x7f, 0x27, 0x8a, 0x51, 0xc8,
-0xc1, 0x0b, 0x09, 0xd9, 0x78, 0xf7, 0x4c, 0xa6,
-0xf4, 0xcf, 0x0e, 0xfd, 0xcf, 0x84, 0xb1, 0x48,
-0xd8, 0xee, 0x9e, 0x36, 0x25, 0xff, 0x71, 0x4c,
-0x6c, 0x8a, 0x4d, 0xd2, 0xeb, 0x38, 0xa2, 0xd6,
-0x26, 0x81, 0x21, 0xf6, 0x4c, 0xfc, 0x73, 0x38,
-0x52, 0x9b, 0xec, 0xe9, 0x13, 0x7f, 0xc6, 0x06,
-0xde, 0x98, 0x94, 0x2f, 0x91, 0x16, 0xdc, 0x96,
-0x26, 0x57, 0xf4, 0x91, 0x61, 0x7a, 0x50, 0xf6,
-0x1d, 0x71, 0x65, 0xe2, 0x1f, 0x1c, 0x94, 0xc8,
-0x47, 0x27, 0x32, 0x3c, 0xb9, 0x10, 0xf5, 0x18,
-0xc0, 0x11, 0xd1, 0xe0, 0x74, 0xf6, 0xe9, 0x25,
-0x8a, 0x32, 0xf1, 0x8f, 0x0d, 0x4f, 0xd6, 0xe8,
-0x10, 0x0f, 0xed, 0x61, 0xfe, 0xbf, 0xa6, 0xbb,
-0x07, 0xfd, 0xcf, 0x42, 0x94, 0x76, 0x64, 0xe2,
-0x9f, 0x54, 0xfe, 0x74, 0x1d, 0xd7, 0x83, 0x79,
-0x90, 0x9f, 0xf9, 0x9d, 0x81, 0x58, 0x86, 0xe5,
-0xf1, 0x30, 0x4a, 0x83, 0xa6, 0x0d, 0xe5, 0xd0,
-0xff, 0x90, 0x4b, 0xbc, 0xfa, 0xef, 0x67, 0x63,
-0xe2, 0x77, 0xe0, 0x3d, 0xbd, 0x3e, 0xc9, 0xa6,
-0xe5, 0x3c, 0x5c, 0x61, 0x0b, 0xa3, 0x04, 0x81,
-0xa2, 0xf9, 0x7c, 0x23, 0xff, 0x95, 0x46, 0x3b,
-0x03, 0xec, 0xf9, 0x83, 0xbc, 0xac, 0x7e, 0x15,
-0x7b, 0x3e, 0xfa, 0x1f, 0x3d, 0x9b, 0xff, 0x11,
-0x6c, 0x68, 0x87, 0x45, 0xe7, 0x4b, 0x70, 0x90,
-0xd6, 0x50, 0xf7, 0x77, 0xd9, 0xfb, 0x1f, 0xca,
-0xcd, 0xff, 0x54, 0x5b, 0xde, 0x26, 0xe9, 0xba,
-0x01, 0x8d, 0xb6, 0x6a, 0x84, 0xc1, 0x48, 0xa5,
-0x06, 0x74, 0x57, 0x56, 0xfe, 0x2b, 0x66, 0x65,
-0x7f, 0x16, 0x20, 0x1f, 0x72, 0x1a, 0x0e, 0x3d,
-0x34, 0x6f, 0x64, 0xc5, 0x06, 0xf2, 0x2a, 0xec,
-0xef, 0xe0, 0x42, 0xe8, 0xcc, 0xfc, 0x17, 0x4f,
-0x72, 0x0d, 0xc2, 0x87, 0xca, 0x77, 0x46, 0x4a,
-0xea, 0xaa, 0x18, 0xec, 0xd9, 0x1d, 0x1c, 0xf5,
-0x56, 0x8b, 0x83, 0xda, 0x39, 0xf6, 0xfe, 0x85,
-0x99, 0xf8, 0x67, 0x92, 0xe1, 0x67, 0x6f, 0x7c,
-0x1a, 0xc7, 0xcf, 0x03, 0x5f, 0x67, 0x13, 0x1b,
-0x66, 0xd3, 0xd2, 0xc5, 0x10, 0x23, 0x1b, 0xaf,
-0xd2, 0x9c, 0x1b, 0xff, 0xa4, 0xe6, 0xa7, 0x49,
-0x2f, 0xd9, 0xff, 0xfc, 0x71, 0xfa, 0x3c, 0xb0,
-0xf8, 0x1e, 0x53, 0xdf, 0xc4, 0xd4, 0x0f, 0x4e,
-0x54, 0xae, 0xfa, 0xaf, 0x94, 0xb7, 0x41, 0x19,
-0xa1, 0x7a, 0x2f, 0xf9, 0x9a, 0xb6, 0x62, 0x3d,
-0xe1, 0xfb, 0xc7, 0xcc, 0xfc, 0x17, 0xf2, 0x3f,
-0x73, 0x70, 0xbc, 0x5f, 0xe1, 0x44, 0x90, 0xeb,
-0xdb, 0x85, 0xa7, 0xe9, 0x26, 0x3a, 0x2f, 0xec,
-0x5e, 0x4b, 0x3e, 0x82, 0x8d, 0x0c, 0x1a, 0xb9,
-0x73, 0xd6, 0x7f, 0xb1, 0xf9, 0x94, 0xd0, 0xe8,
-0xc6, 0x89, 0x8d, 0x14, 0x04, 0x54, 0x8c, 0x77,
-0x45, 0x9d, 0x6a, 0x6d, 0x66, 0xfe, 0x6b, 0x37,
-0xfb, 0xa3, 0x34, 0x20, 0xda, 0x59, 0xcb, 0x81,
-0x50, 0x09, 0xc2, 0x9e, 0x23, 0xd0, 0x18, 0x43,
-0xfc, 0x43, 0xcf, 0xd2, 0xe6, 0xcc, 0xfc, 0x97,
-0x3d, 0xfa, 0x48, 0xcd, 0x42, 0x4a, 0xf6, 0xbc,
-0x53, 0xc2, 0x2b, 0x02, 0x9b, 0x9f, 0xdc, 0xf9,
-0x2f, 0x33, 0xba, 0x85, 0x8b, 0x1e, 0xab, 0x1f,
-0x56, 0x2e, 0x40, 0x5d, 0xd8, 0x8a, 0x77, 0x25,
-0x51, 0x92, 0xb3, 0xfe, 0x0b, 0xa3, 0x6d, 0x20,
-0x2c, 0x6f, 0xf7, 0x0d, 0xcb, 0x07, 0xb5, 0x9a,
-0xb0, 0x15, 0x7f, 0xb3, 0xf8, 0x1f, 0x7b, 0x74,
-0x6e, 0xe3, 0x78, 0xe9, 0xa0, 0xfc, 0x37, 0xcb,
-0x7e, 0x30, 0x94, 0xba, 0x3f, 0x8b, 0xff, 0x31,
-0x82, 0x7e, 0x21, 0x8f, 0xfe, 0x4b, 0xfd, 0xa5,
-0x74, 0x20, 0xf6, 0x14, 0xcc, 0xd3, 0xd8, 0x7e,
-0x76, 0x00, 0x16, 0xfa, 0x03, 0xd9, 0xfc, 0xcf,
-0x88, 0x3d, 0xda, 0xfe, 0x8f, 0xc8, 0xd2, 0x18,
-0xc5, 0xb2, 0xa3, 0xad, 0x3a, 0x5e, 0x51, 0xb9,
-0x22, 0xf7, 0x78, 0xa6, 0xfe, 0xd9, 0x1c, 0x6f,
-0x0b, 0xea, 0x5b, 0x18, 0x22, 0x12, 0x3e, 0xc2,
-0x2b, 0xaf, 0xee, 0xba, 0x6c, 0x64, 0xc4, 0x6c,
-0xf8, 0xc7, 0xc6, 0xff, 0x78, 0xf0, 0x7e, 0xd7,
-0x2b, 0x9d, 0xe7, 0x95, 0x7f, 0x83, 0x7d, 0xec,
-0x4a, 0xeb, 0x30, 0x1c, 0xf5, 0xd7, 0x2d, 0x2b,
-0xce, 0xd4, 0x3f, 0x8f, 0xa4, 0xf4, 0x3f, 0x1c,
-0xed, 0xc8, 0x5d, 0x21, 0xac, 0x08, 0x63, 0xdb,
-0x52, 0x9d, 0xe8, 0xb1, 0x11, 0xd5, 0x27, 0xcb,
-0x59, 0xf9, 0x2f, 0x03, 0xe4, 0x2c, 0x93, 0x50,
-0x08, 0x74, 0x8d, 0x42, 0x7e, 0x01, 0x3f, 0x87,
-0x39, 0x61, 0xb6, 0xcc, 0x86, 0x37, 0xef, 0xf5,
-0x07, 0xda, 0x8a, 0x94, 0xc2, 0x23, 0x56, 0xfd,
-0x08, 0xe2, 0x1f, 0x07, 0x7a, 0xac, 0x88, 0x86,
-0xd0, 0xf8, 0x53, 0xcd, 0x7d, 0x82, 0x5d, 0xd9,
-0xc1, 0x66, 0x4c, 0xce, 0x85, 0x7f, 0xbc, 0x28,
-0xfb, 0x41, 0xa3, 0xd0, 0x18, 0x78, 0xc3, 0x52,
-0x43, 0xf8, 0x0d, 0xcf, 0x6a, 0x7f, 0x9f, 0x13,
-0xff, 0x98, 0xf9, 0xaf, 0xad, 0xc6, 0xfd, 0x8d,
-0xa9, 0x0a, 0x32, 0x23, 0x11, 0x96, 0x47, 0xff,
-0x83, 0x78, 0x9b, 0x27, 0xc2, 0x86, 0xa0, 0x51,
-0x4d, 0x29, 0x82, 0xea, 0xf2, 0xe8, 0x9f, 0x91,
-0xf6, 0x39, 0x04, 0xf3, 0xa3, 0xf2, 0x4e, 0xf0,
-0xcb, 0xf7, 0x19, 0x65, 0xef, 0x23, 0x50, 0xc3,
-0x8c, 0x15, 0x59, 0xf8, 0xc7, 0x8e, 0x76, 0x8a,
-0x82, 0x3e, 0x0f, 0x44, 0x61, 0x2d, 0xb8, 0xa1,
-0x70, 0x50, 0xc0, 0xc2, 0x81, 0x2c, 0xfc, 0x63,
-0xff, 0x7e, 0xb5, 0x4f, 0x6f, 0x20, 0x25, 0xf2,
-0x56, 0x98, 0x0f, 0x2b, 0xda, 0x7d, 0xa7, 0xa0,
-0xb7, 0xb2, 0x32, 0x1b, 0xff, 0xa4, 0x40, 0x8e,
-0x81, 0x76, 0x8a, 0x51, 0xff, 0xfc, 0xcf, 0xf4,
-0x86, 0x98, 0xb7, 0x4d, 0x3c, 0x4d, 0xff, 0x25,
-0xb6, 0xf7, 0x1d, 0xc4, 0x3f, 0x76, 0xfd, 0xcf,
-0x74, 0xbb, 0x3f, 0x59, 0x8a, 0x32, 0x57, 0x69,
-0x02, 0x33, 0xd4, 0x51, 0x71, 0x54, 0x7b, 0xb7,
-0xbd, 0xf9, 0x84, 0xdb, 0x9e, 0xff, 0x02, 0x29,
-0x15, 0xbf, 0x2e, 0x88, 0x67, 0x19, 0xec, 0xb9,
-0x31, 0xe6, 0xb9, 0x20, 0xce, 0xd6, 0xf4, 0xe8,
-0x5d, 0x61, 0xef, 0x88, 0x38, 0x29, 0x4f, 0xea,
-0xf5, 0x6f, 0x3a, 0xf1, 0x8f, 0xf2, 0x18, 0x7b,
-0x8d, 0x6f, 0x63, 0xfd, 0xda, 0x69, 0x84, 0x31,
-0xaa, 0xbc, 0xa1, 0xb4, 0xa4, 0xfb, 0xd7, 0x3b,
-0x82, 0x61, 0xf7, 0xb7, 0xf0, 0x4a, 0x5f, 0xe5,
-0x48, 0x16, 0xfe, 0xf9, 0x09, 0x31, 0xf4, 0x3f,
-0x38, 0x5e, 0xda, 0xb6, 0xde, 0x37, 0x8b, 0x6e,
-0xf4, 0x7f, 0x7d, 0xc8, 0x1d, 0x26, 0xa7, 0xf6,
-0xf6, 0xf2, 0x54, 0x7e, 0x96, 0xfe, 0xd9, 0x6f,
-0xcd, 0xa7, 0xe0, 0x0f, 0xb2, 0x8d, 0xc6, 0xc3,
-0xba, 0x8a, 0x0a, 0x87, 0xb3, 0x3c, 0x43, 0x94,
-0x85, 0x7f, 0xde, 0x95, 0xd2, 0xf1, 0x85, 0x56,
-0xb0, 0xfd, 0xbb, 0x44, 0x3b, 0x1a, 0xf5, 0x55,
-0xfb, 0xbf, 0x78, 0xa5, 0x6c, 0x52, 0xea, 0xc5,
-0x8d, 0xa4, 0x13, 0xff, 0xbc, 0xcb, 0xb7, 0xe1,
-0x22, 0x87, 0x85, 0x8a, 0x37, 0xee, 0x1e, 0x65,
-0x1b, 0x2b, 0x76, 0xff, 0x33, 0x9d, 0xa6, 0x2b,
-0x16, 0x9c, 0xf8, 0xe7, 0x7d, 0x6b, 0x77, 0x2f,
-0xb5, 0xc8, 0xf3, 0x0f, 0x7e, 0xf1, 0x92, 0x7c,
-0xb9, 0x3b, 0x95, 0xff, 0xda, 0xca, 0x10, 0x91,
-0x27, 0x03, 0xff, 0xc8, 0x69, 0x3d, 0x0f, 0x09,
-0xa8, 0x72, 0x1f, 0x19, 0x15, 0x0e, 0x22, 0xe3,
-0x81, 0x57, 0x7e, 0x6a, 0x08, 0xa1, 0x73, 0xf2,
-0x3f, 0x3c, 0xde, 0x45, 0x3f, 0x17, 0x2f, 0x1d,
-0x85, 0x3e, 0xf5, 0xa6, 0x81, 0x9e, 0x3e, 0x7e,
-0x7f, 0x8d, 0x2e, 0xe7, 0xd4, 0x3f, 0xd7, 0x91,
-0x41, 0x2c, 0x7b, 0x07, 0xac, 0x4f, 0xe9, 0xda,
-0x1b, 0x8c, 0x8d, 0xe0, 0x8c, 0x75, 0x3c, 0xae,
-0xaa, 0x47, 0x36, 0x67, 0xd5, 0xbf, 0x23, 0xff,
-0x63, 0xe8, 0x4f, 0x9a, 0x67, 0x15, 0xef, 0x6b,
-0x7d, 0xaf, 0xeb, 0x60, 0x51, 0xc3, 0x51, 0xce,
-0x98, 0xbd, 0x0f, 0x87, 0x13, 0x9e, 0x4c, 0xfc,
-0x33, 0xb9, 0x98, 0x8d, 0x77, 0x6f, 0x2b, 0x8f,
-0x5f, 0x15, 0x25, 0x0f, 0x8a, 0xa3, 0xc9, 0xcb,
-0xea, 0x73, 0x98, 0xc8, 0x18, 0xc5, 0xfa, 0x77,
-0x94, 0x82, 0x3b, 0xf1, 0xcf, 0x08, 0x03, 0x39,
-0x25, 0xe3, 0x5f, 0xbd, 0x02, 0x2f, 0xd1, 0x7a,
-0x8d, 0xcd, 0xc6, 0x6f, 0xd8, 0x26, 0x63, 0x61,
-0x98, 0xe1, 0xe7, 0xd9, 0xcc, 0xb8, 0x31, 0xe9,
-0x19, 0x71, 0xe8, 0x9f, 0x47, 0xe1, 0x01, 0xae,
-0xee, 0x2e, 0x1d, 0xe5, 0xdd, 0x78, 0x18, 0x30,
-0x1e, 0x35, 0xcb, 0xd2, 0x79, 0xc5, 0x37, 0x0a,
-0xed, 0x54, 0x9b, 0xff, 0x19, 0x05, 0x3f, 0x43,
-0x8f, 0x2e, 0x73, 0xf7, 0xcd, 0xd6, 0xc3, 0x00,
-0x1a, 0x1a, 0x5f, 0x18, 0x9d, 0x10, 0xa0, 0x19,
-0xfa, 0x67, 0x0f, 0x96, 0xbd, 0xa0, 0xda, 0x79,
-0x50, 0xeb, 0xec, 0x37, 0x0c, 0xda, 0xc3, 0x02,
-0xbf, 0xfd, 0xf9, 0x41, 0x1b, 0xfe, 0x39, 0xab,
-0x8d, 0x68, 0xd7, 0x23, 0x08, 0x39, 0x4b, 0x5e,
-0xa4, 0x0f, 0x45, 0xf1, 0x7b, 0x21, 0x2f, 0xc2,
-0xbe, 0x64, 0x20, 0xee, 0xae, 0x65, 0x46, 0x73,
-0xcc, 0x13, 0x73, 0x3b, 0xf5, 0xcf, 0x17, 0x85,
-0x96, 0x21, 0x06, 0x7a, 0xaf, 0xe0, 0xfc, 0x3c,
-0xb4, 0xca, 0x30, 0xf8, 0x0a, 0x41, 0xbc, 0xd7,
-0xb2, 0x6b, 0x41, 0x32, 0x83, 0xff, 0x49, 0x18,
-0x4d, 0x84, 0xf0, 0xb1, 0x4d, 0xd1, 0xaf, 0xec,
-0x13, 0x03, 0xf8, 0xd8, 0x04, 0xd7, 0x9f, 0xbf,
-0xa8, 0x34, 0x23, 0x3f, 0x10, 0xb4, 0xe1, 0x9f,
-0xf9, 0x5a, 0x27, 0x3c, 0x89, 0xeb, 0xe1, 0xbd,
-0x76, 0xfe, 0xb6, 0x97, 0x48, 0x40, 0xe8, 0xe9,
-0xae, 0x1d, 0x2a, 0xde, 0x4f, 0xde, 0x54, 0x5f,
-0x6f, 0xaf, 0xdd, 0x56, 0xbc, 0x27, 0x52, 0xe7,
-0xc0, 0x3f, 0x51, 0xc3, 0xc9, 0x18, 0xfa, 0x43,
-0x57, 0x53, 0xc8, 0x43, 0x7b, 0xa4, 0x80, 0x2e,
-0x3f, 0x4d, 0x46, 0x69, 0x27, 0xd4, 0x26, 0xe5,
-0x9d, 0x64, 0xb1, 0x03, 0xff, 0x7c, 0x2f, 0x3e,
-0xcf, 0xc0, 0x3f, 0x9b, 0xba, 0x8a, 0x93, 0xf2,
-0x86, 0xc2, 0x66, 0x75, 0x13, 0xfd, 0x1f, 0xc3,
-0x45, 0x98, 0x18, 0xfa, 0x13, 0xba, 0x20, 0x59,
-0xb4, 0x96, 0x54, 0xd8, 0xf0, 0x4f, 0x80, 0xfc,
-0x4a, 0x8f, 0x23, 0xfe, 0xc1, 0xa7, 0xcd, 0xd2,
-0x43, 0xf1, 0x9e, 0x62, 0xd2, 0x09, 0x4d, 0x97,
-0x50, 0xff, 0x0c, 0xcf, 0x43, 0xd3, 0x49, 0x36,
-0x3f, 0xa5, 0x0e, 0xfc, 0xf3, 0x1e, 0xce, 0x46,
-0xdc, 0xd8, 0x1d, 0x60, 0xb6, 0x74, 0x54, 0xe2,
-0x88, 0x28, 0x95, 0x3f, 0xd5, 0x9d, 0xfa, 0xe7,
-0x82, 0x51, 0x92, 0x50, 0xf7, 0xe9, 0x01, 0xa4,
-0xdd, 0x50, 0x28, 0xe5, 0xe9, 0x15, 0x3d, 0xe4,
-0x75, 0x08, 0xb2, 0xbf, 0x48, 0x15, 0xd6, 0xab,
-0xd6, 0xa1, 0x3e, 0xcd, 0x89, 0x7f, 0x22, 0x32,
-0xb6, 0x45, 0xba, 0x6a, 0x96, 0x74, 0x00, 0x2a,
-0x8f, 0xc8, 0x77, 0xb6, 0xde, 0x0a, 0x48, 0xfb,
-0xc8, 0x58, 0x11, 0xcf, 0x8d, 0x4c, 0xfd, 0xf3,
-0x46, 0xba, 0x03, 0x49, 0x9e, 0xaf, 0xc0, 0x73,
-0xfa, 0xbc, 0xa4, 0xbc, 0x38, 0xd4, 0x0c, 0x9b,
-0x22, 0x55, 0x49, 0x17, 0x5e, 0xd9, 0x44, 0x2b,
-0xc3, 0xf2, 0x5a, 0x07, 0xfe, 0xb9, 0x49, 0xeb,
-0xdc, 0xa6, 0x86, 0xe5, 0xe0, 0xf2, 0x65, 0xda,
-0x3e, 0xa8, 0x19, 0x60, 0xcb, 0x66, 0x6d, 0x5b,
-0x0f, 0xec, 0x8c, 0xb1, 0x15, 0x38, 0xaa, 0x75,
-0x12, 0x75, 0x8c, 0xad, 0x37, 0x27, 0xfe, 0x39,
-0x0e, 0x3e, 0x2c, 0x72, 0xff, 0x6b, 0xb8, 0xa2,
-0x35, 0x46, 0xbf, 0x13, 0x13, 0x6f, 0x80, 0x63,
-0x50, 0xdf, 0x57, 0xcb, 0x5e, 0x9b, 0x39, 0xfe,
-0xfa, 0xdd, 0x81, 0x64, 0x6e, 0xfc, 0xc3, 0x02,
-0x93, 0xdc, 0xc0, 0xc3, 0x90, 0x8f, 0x21, 0x04,
-0x32, 0xdf, 0xe8, 0xc7, 0xf2, 0x2c, 0xc9, 0xc2,
-0x3f, 0xaf, 0xb1, 0xa0, 0x26, 0x3f, 0x28, 0x56,
-0xcb, 0x47, 0x19, 0x2c, 0xe4, 0x65, 0xef, 0x45,
-0xd3, 0x51, 0xd6, 0x2b, 0xbe, 0x49, 0x8f, 0xb2,
-0x0f, 0x07, 0xa2, 0x22, 0xb1, 0xe3, 0x1f, 0xb2,
-0x59, 0xf3, 0xb5, 0xcb, 0xb3, 0x48, 0x35, 0xe9,
-0x00, 0xdf, 0x7a, 0xf9, 0x31, 0xf2, 0x29, 0xd8,
-0xac, 0xed, 0xd4, 0xe4, 0x6d, 0xe4, 0xcd, 0xc8,
-0x66, 0xd8, 0xa9, 0xf9, 0x15, 0x97, 0x6a, 0xc3,
-0x3f, 0x12, 0x74, 0x68, 0xbb, 0x56, 0x2f, 0xdf,
-0x46, 0x0a, 0x84, 0xcd, 0xda, 0x8f, 0xc7, 0xd8,
-0x6d, 0x73, 0x85, 0x27, 0x64, 0x1f, 0xde, 0x3f,
-0xec, 0xe9, 0x08, 0xfb, 0x57, 0xbb, 0xb0, 0xb0,
-0xdd, 0x5c, 0x0f, 0x88, 0x7f, 0x50, 0xf6, 0xec,
-0x8a, 0xba, 0x24, 0x61, 0x33, 0xa8, 0xcb, 0xe5,
-0xd2, 0x48, 0x21, 0xd9, 0x81, 0xdf, 0x23, 0xf2,
-0x21, 0x1d, 0xe0, 0x47, 0xbc, 0x44, 0x6c, 0xf8,
-0x47, 0x83, 0x84, 0xda, 0xc0, 0x16, 0x72, 0x95,
-0xca, 0x3e, 0x84, 0xcf, 0xc8, 0x81, 0x88, 0x5b,
-0x65, 0x5f, 0x51, 0x1d, 0x78, 0xe8, 0x74, 0x9d,
-0xfd, 0x79, 0x16, 0x23, 0xfe, 0x29, 0x49, 0xe3,
-0x9f, 0xe2, 0xf3, 0xb1, 0xc9, 0x40, 0xcb, 0xf2,
-0xe2, 0x57, 0x1e, 0x3f, 0x1f, 0xfb, 0xd8, 0xff,
-0xdc, 0x72, 0xef, 0x43, 0xcf, 0x7f, 0x2b, 0xf6,
-0xaf, 0x58, 0xf6, 0xce, 0x80, 0x4d, 0xec, 0x82,
-0x7f, 0x11, 0xfb, 0xa9, 0xd3, 0x59, 0xff, 0xf5,
-0xb6, 0xff, 0x9b, 0x9a, 0x67, 0xdb, 0xb4, 0x6a,
-0x38, 0x0a, 0x75, 0x21, 0xde, 0x1f, 0xe9, 0xa8,
-0xe4, 0xd3, 0x4a, 0xb6, 0xa1, 0xfe, 0xd9, 0xc8,
-0x18, 0x3a, 0xf0, 0x0f, 0xed, 0x0e, 0xef, 0x93,
-0xfd, 0xe0, 0x52, 0x69, 0x37, 0xf8, 0x14, 0xff,
-0x46, 0x36, 0x1b, 0xdd, 0xaa, 0x0f, 0x5c, 0xc4,
-0xa5, 0x2a, 0x98, 0xff, 0x92, 0x75, 0x07, 0xfe,
-0x39, 0xaf, 0xfe, 0x48, 0xae, 0x0c, 0xc9, 0xed,
-0xe4, 0x7a, 0x75, 0xa3, 0xbf, 0x72, 0xb9, 0x7c,
-0xf3, 0x6f, 0xcb, 0x62, 0x1b, 0xe5, 0xaf, 0x2e,
-0x77, 0xdd, 0x5c, 0x5a, 0x46, 0x37, 0xca, 0x0b,
-0xd8, 0x4f, 0x11, 0xbb, 0xfe, 0x67, 0xbf, 0xb0,
-0x11, 0x04, 0x4d, 0x6e, 0x2f, 0xfd, 0x16, 0xd9,
-0xa4, 0x54, 0x2e, 0x2b, 0x5a, 0xef, 0x2b, 0x87,
-0x8d, 0xe4, 0xf1, 0xf6, 0x9a, 0x76, 0x52, 0x06,
-0xf7, 0x4b, 0xde, 0x56, 0xff, 0x90, 0x1d, 0xff,
-0x14, 0x2c, 0x83, 0xb7, 0x69, 0x29, 0xbe, 0xa4,
-0xc4, 0xd5, 0xaa, 0xf8, 0xfe, 0xe4, 0xa8, 0x50,
-0xa7, 0xd5, 0x72, 0x43, 0x9a, 0xbd, 0xde, 0xe3,
-0xc4, 0x3f, 0x3f, 0xd6, 0x2e, 0xc4, 0x9a, 0xd7,
-0xb0, 0x68, 0xce, 0x0c, 0x78, 0x36, 0x84, 0xf9,
-0x32, 0xd5, 0x94, 0x45, 0x69, 0x17, 0x5c, 0xcd,
-0x6d, 0x4e, 0xfc, 0x03, 0x31, 0x48, 0x68, 0x75,
-0xf2, 0xca, 0x8e, 0x56, 0xb5, 0x22, 0xc1, 0xa6,
-0x7d, 0x10, 0xf1, 0x4f, 0x4a, 0x7f, 0x85, 0x8d,
-0x80, 0x18, 0xfe, 0xd1, 0x33, 0xf0, 0x0f, 0x43,
-0x3b, 0x51, 0xae, 0x76, 0xbe, 0x8f, 0xfa, 0x68,
-0xf7, 0x8f, 0x22, 0xfe, 0xae, 0xfb, 0xd4, 0x80,
-0xa1, 0x7f, 0x3e, 0x04, 0x6a, 0x2c, 0xa3, 0xfe,
-0xeb, 0x0b, 0xf0, 0x30, 0xdd, 0x9d, 0x94, 0x83,
-0x91, 0x07, 0xa0, 0x33, 0x1a, 0xfb, 0x40, 0xc6,
-0xfe, 0x3f, 0x9d, 0x34, 0x80, 0x57, 0xbc, 0xd0,
-0xab, 0xef, 0x1e, 0xc9, 0xc0, 0x3f, 0x57, 0xc3,
-0x23, 0xda, 0xbc, 0x21, 0xb6, 0x6d, 0x79, 0x14,
-0xbf, 0xd6, 0x21, 0x58, 0x4f, 0x14, 0xd8, 0x88,
-0x40, 0x8b, 0x19, 0xea, 0xd3, 0xdd, 0xf3, 0x22,
-0x19, 0xf8, 0xa7, 0x99, 0xc1, 0x8a, 0x25, 0xb1,
-0x40, 0x9b, 0xf8, 0x2c, 0x79, 0x99, 0xd6, 0xc7,
-0x02, 0xb2, 0xd8, 0x0c, 0x28, 0x7b, 0x0e, 0xac,
-0x65, 0xf1, 0xc5, 0xec, 0xff, 0x63, 0xc3, 0x3f,
-0xbb, 0xe1, 0x1d, 0x89, 0xed, 0x47, 0xa8, 0x7b,
-0x9d, 0xa1, 0x76, 0xa6, 0x90, 0x24, 0xe3, 0x12,
-0xca, 0xf0, 0xdc, 0x49, 0xb6, 0x43, 0x61, 0x3f,
-0x39, 0xf0, 0x4f, 0xc1, 0x47, 0x30, 0x11, 0xfd,
-0xdb, 0xb0, 0x77, 0xdc, 0x3d, 0x17, 0x69, 0x9f,
-0x70, 0xc9, 0xc1, 0xd6, 0x66, 0xed, 0x5d, 0x1a,
-0x5f, 0x53, 0x62, 0xec, 0xe8, 0x5b, 0x30, 0x90,
-0xd9, 0xf9, 0x9f, 0x28, 0xdb, 0x3f, 0x2e, 0x6c,
-0x73, 0xdf, 0x25, 0x96, 0x22, 0x9e, 0x59, 0xcd,
-0x1c, 0x4b, 0x29, 0xdd, 0x18, 0x53, 0xfd, 0xf8,
-0xfe, 0xf0, 0x34, 0x2c, 0x00, 0x79, 0xbd, 0x43,
-0xff, 0xbc, 0x0d, 0x9e, 0x56, 0x2a, 0xf5, 0x9e,
-0x73, 0xe4, 0x55, 0x7a, 0xa0, 0x62, 0x41, 0xc7,
-0xf7, 0x35, 0xd2, 0x04, 0x3f, 0x53, 0x3f, 0xa5,
-0xb9, 0x93, 0xe4, 0x56, 0x78, 0x04, 0xe6, 0x87,
-0xe4, 0x0d, 0x0e, 0xfc, 0xa3, 0xcb, 0x87, 0xba,
-0x54, 0xf4, 0xff, 0x5d, 0xda, 0x61, 0x1a, 0xe8,
-0x90, 0x81, 0x2c, 0x65, 0xa8, 0xa5, 0x5a, 0x91,
-0x63, 0x3e, 0x4d, 0x3b, 0x04, 0x01, 0x45, 0x76,
-0xe2, 0x9f, 0x9f, 0xd1, 0x0b, 0xe1, 0xba, 0x11,
-0x77, 0xdc, 0x7d, 0x16, 0xfa, 0x68, 0xf3, 0x91,
-0xda, 0xb8, 0xb8, 0xe0, 0xc8, 0xbb, 0xb0, 0x7f,
-0xa8, 0x24, 0xea, 0xbe, 0x03, 0xa1, 0xf2, 0x40,
-0x13, 0x38, 0xf0, 0xcf, 0x3a, 0xb8, 0xa0, 0xa2,
-0xba, 0x72, 0x86, 0x1f, 0x36, 0x68, 0xcd, 0x43,
-0xde, 0xfd, 0xee, 0x18, 0xe2, 0x67, 0xea, 0xdd,
-0x26, 0xee, 0x40, 0x69, 0x62, 0xd4, 0xdb, 0xe5,
-0xe0, 0x7f, 0xae, 0x2c, 0xbd, 0xa0, 0x55, 0xd1,
-0x55, 0x3a, 0x9b, 0xf6, 0xcb, 0x9f, 0xab, 0xa7,
-0xc5, 0x89, 0x19, 0x57, 0xe0, 0x74, 0xac, 0xe5,
-0x88, 0xa7, 0x9f, 0x34, 0xd3, 0xcb, 0x9a, 0xa8,
-0x7b, 0x13, 0x2e, 0xb0, 0xe3, 0x1f, 0xe1, 0xa0,
-0xc4, 0xd0, 0x32, 0x2d, 0xad, 0x85, 0xb7, 0x35,
-0x35, 0x5a, 0x4c, 0xc9, 0xf3, 0x7a, 0x37, 0x06,
-0xb2, 0x08, 0x51, 0xa1, 0x4f, 0xf0, 0x3d, 0xcd,
-0xb6, 0x1e, 0xaa, 0x9d, 0xff, 0xa9, 0x3e, 0x2c,
-0xd7, 0x68, 0xee, 0xb8, 0x2f, 0xa0, 0x3d, 0x29,
-0xd4, 0x68, 0xf2, 0x5e, 0x32, 0x4a, 0x7e, 0x80,
-0x8d, 0xc8, 0xa2, 0xe4, 0x1f, 0xd9, 0x46, 0xac,
-0x46, 0xeb, 0x89, 0x44, 0x32, 0xf4, 0xcf, 0x7e,
-0xbf, 0xb6, 0x22, 0x58, 0x28, 0xab, 0x3b, 0x99,
-0xf7, 0x9b, 0x57, 0x47, 0x92, 0xb4, 0x03, 0x6a,
-0xaf, 0x91, 0x95, 0x5a, 0x0a, 0x71, 0xb6, 0xe0,
-0x45, 0x4a, 0x22, 0x19, 0xf5, 0x5f, 0x87, 0x18,
-0xfe, 0xe9, 0x09, 0x74, 0xbf, 0x0b, 0xfb, 0x68,
-0x80, 0xb0, 0x40, 0x76, 0xd2, 0xcf, 0xdc, 0x02,
-0x15, 0x91, 0x2a, 0x3c, 0xa4, 0x4d, 0xa3, 0x76,
-0xfd, 0x33, 0xe2, 0x1f, 0xff, 0x22, 0x2c, 0x53,
-0xba, 0x34, 0xfd, 0x7d, 0xb8, 0xb1, 0xdf, 0xfb,
-0x81, 0xf8, 0x12, 0x7c, 0x04, 0x2d, 0xb2, 0xb7,
-0x5d, 0xfc, 0x0e, 0xef, 0xf8, 0xc7, 0xbe, 0x97,
-0xb5, 0xce, 0xfa, 0xaf, 0x94, 0x7e, 0x1e, 0x26,
-0xd5, 0xe6, 0xb1, 0xf9, 0xfb, 0x66, 0x3c, 0x13,
-0x3a, 0xae, 0xb4, 0x0c, 0x16, 0x8f, 0x8b, 0x01,
-0x14, 0x8a, 0x24, 0x3d, 0x59, 0xfc, 0x8f, 0x91,
-0xe4, 0x3a, 0x0b, 0xcf, 0x0d, 0xd5, 0x26, 0xe4,
-0x31, 0x22, 0xd1, 0xfb, 0xd4, 0x05, 0xa7, 0x96,
-0xf7, 0x91, 0x05, 0x5a, 0x8f, 0xec, 0x7b, 0xd1,
-0xd5, 0x07, 0xd9, 0xfc, 0x4f, 0xaa, 0xde, 0xdf,
-0x9f, 0x90, 0x17, 0x92, 0x6e, 0x5a, 0x05, 0x81,
-0x04, 0x03, 0x36, 0x0f, 0xc8, 0x9d, 0x2a, 0x57,
-0x68, 0xd8, 0xf9, 0x1f, 0x13, 0x4f, 0x96, 0x8e,
-0xf2, 0x46, 0x40, 0xae, 0x78, 0x21, 0x85, 0x9f,
-0xd2, 0x5a, 0xfd, 0x9a, 0xb8, 0x6b, 0x0f, 0xed,
-0x94, 0xfc, 0x88, 0x88, 0xb2, 0xf8, 0x1f, 0x0b,
-0x0f, 0x63, 0x19, 0xd7, 0x93, 0xf0, 0x1e, 0x9d,
-0x8d, 0x8d, 0x0a, 0x77, 0xf3, 0xd6, 0x7c, 0x9e,
-0x78, 0x55, 0x2e, 0xfe, 0x87, 0xe7, 0x5b, 0x39,
-0xfb, 0xf7, 0x4d, 0xed, 0x5f, 0x09, 0xa7, 0x35,
-0x6e, 0x67, 0x3f, 0x1d, 0xc8, 0x91, 0xff, 0x4a,
-0x3d, 0x5f, 0xe6, 0x40, 0xbd, 0x8e, 0xfd, 0x0f,
-0xbd, 0x0d, 0x4d, 0xfd, 0xec, 0x7f, 0x28, 0xc1,
-0xe3, 0x7b, 0x4e, 0xfd, 0x0f, 0xc7, 0xc3, 0xcf,
-0x81, 0xaf, 0x5f, 0x1c, 0x2b, 0x1d, 0x66, 0xb0,
-0x6d, 0x81, 0x2e, 0xef, 0x63, 0x30, 0xb8, 0xc7,
-0x28, 0x0c, 0xcc, 0xd6, 0xff, 0xa4, 0xd8, 0xbf,
-0xb9, 0x6c, 0x9b, 0xa0, 0x0e, 0x48, 0xfb, 0xc0,
-0xc3, 0xfb, 0x6f, 0x28, 0x9d, 0x20, 0xe7, 0xd0,
-0x3f, 0x5b, 0xfd, 0x70, 0x3a, 0xd8, 0x6e, 0x65,
-0x43, 0xe4, 0x74, 0xd1, 0xf7, 0xd8, 0x95, 0x1a,
-0xac, 0x90, 0xda, 0x1a, 0xe3, 0x85, 0xe1, 0x19,
-0xfc, 0x0f, 0x8a, 0x9c, 0x97, 0xf0, 0x6e, 0x87,
-0xb3, 0x46, 0xbd, 0x4b, 0x66, 0xe8, 0x51, 0x76,
-0xa5, 0xbf, 0x16, 0xf3, 0x5f, 0xcf, 0xd3, 0x6b,
-0xb2, 0xeb, 0xdf, 0xed, 0xd9, 0xc0, 0x5f, 0x78,
-0xc7, 0x3a, 0x46, 0x30, 0x9f, 0xf8, 0xaa, 0x87,
-0xe7, 0xbf, 0x14, 0xe4, 0xc7, 0xf2, 0xf0, 0x3f,
-0xc2, 0x84, 0xca, 0xd0, 0xf5, 0xfe, 0xce, 0x30,
-0x66, 0x40, 0x12, 0x4d, 0x71, 0x16, 0x4f, 0xb1,
-0x90, 0x21, 0x4f, 0xff, 0x1f, 0xdc, 0x4f, 0xb5,
-0xe3, 0xc6, 0xaa, 0xf4, 0x04, 0x3c, 0x55, 0xc8,
-0xfb, 0xa7, 0x9d, 0x52, 0xde, 0x80, 0x2a, 0xe4,
-0x93, 0xf3, 0xf5, 0xff, 0x89, 0xa0, 0x31, 0xf7,
-0x37, 0xc2, 0x81, 0xae, 0xf9, 0xc3, 0xae, 0x0d,
-0xbe, 0xdf, 0xc0, 0x4f, 0x0c, 0x68, 0x64, 0xc7,
-0x3f, 0x19, 0xfb, 0x59, 0x9e, 0x46, 0x3c, 0xac,
-0x19, 0xfc, 0xb3, 0x76, 0x18, 0x33, 0xf8, 0x39,
-0xfb, 0xff, 0xa4, 0xf5, 0x3f, 0x55, 0xdf, 0x86,
-0x2b, 0x4a, 0x73, 0x47, 0x49, 0x8c, 0x2d, 0x03,
-0x94, 0x46, 0x7b, 0xd4, 0xbc, 0xfc, 0x0f, 0x33,
-0xdc, 0x5d, 0x24, 0xa9, 0x8e, 0x5f, 0x35, 0x1b,
-0x3a, 0x18, 0xfe, 0x51, 0x4f, 0xe4, 0xae, 0x7f,
-0xb7, 0x67, 0x43, 0xb6, 0xa3, 0x50, 0x04, 0xea,
-0x96, 0xba, 0x98, 0xc1, 0xf0, 0x0f, 0xd7, 0xff,
-0x90, 0x7c, 0xfc, 0x0f, 0x33, 0xb6, 0xf9, 0x50,
-0x4f, 0x52, 0x83, 0x6d, 0x7f, 0x06, 0xe8, 0x13,
-0x46, 0x45, 0xbc, 0x9a, 0x97, 0xff, 0x59, 0xea,
-0x7e, 0x30, 0x32, 0x00, 0x4f, 0x30, 0xfc, 0xe0,
-0x7a, 0x28, 0xb4, 0x26, 0x55, 0x11, 0x96, 0x81,
-0x7f, 0xf6, 0xda, 0xf4, 0x3f, 0x5a, 0x4f, 0x69,
-0x64, 0x20, 0xde, 0x11, 0xf0, 0x2f, 0x5f, 0x8e,
-0xfd, 0x0f, 0x77, 0x70, 0xfd, 0x8f, 0x8b, 0xe4,
-0xca, 0x7f, 0x21, 0xdb, 0x33, 0x1b, 0xf3, 0x5f,
-0x49, 0x3a, 0xa2, 0x06, 0x65, 0x06, 0x7b, 0x50,
-0x08, 0x5d, 0x97, 0x81, 0x7f, 0x9c, 0xfc, 0x4f,
-0xf3, 0xf2, 0x55, 0x0f, 0x75, 0x9e, 0xdf, 0x39,
-0xe9, 0x6f, 0x5e, 0xfe, 0xf9, 0x21, 0xf1, 0xbc,
-0x92, 0xcd, 0xff, 0xd8, 0xf5, 0x33, 0xaf, 0xf9,
-0x1b, 0xb5, 0x92, 0xa1, 0xce, 0x39, 0xea, 0x6b,
-0xe1, 0xba, 0xe5, 0xde, 0x21, 0xf1, 0x7a, 0x9c,
-0x28, 0xcd, 0x33, 0x24, 0xbe, 0x20, 0xd9, 0xf0,
-0x8f, 0x55, 0xff, 0xa5, 0xf4, 0x69, 0x3e, 0x90,
-0xef, 0x25, 0x95, 0x0c, 0xff, 0x5c, 0x5f, 0xc1,
-0xae, 0xec, 0xd0, 0xba, 0x61, 0x67, 0x5e, 0xfe,
-0x07, 0x0d, 0xff, 0xf2, 0xfb, 0x82, 0xd8, 0xf8,
-0xe8, 0x76, 0x35, 0x54, 0xa4, 0xa0, 0xc2, 0xc7,
-0xaf, 0x86, 0x64, 0xe4, 0x7f, 0xec, 0xfa, 0x67,
-0xb3, 0xfe, 0x0e, 0x0e, 0x16, 0xa0, 0xfe, 0xa7,
-0xac, 0xda, 0xb7, 0x43, 0xfd, 0x4b, 0x9c, 0xe1,
-0x5d, 0xd2, 0x66, 0xf6, 0x85, 0xf0, 0x7e, 0x4a,
-0xe6, 0x7a, 0x88, 0xd9, 0xf5, 0x4b, 0xaf, 0x09,
-0x8d, 0xda, 0x17, 0xa2, 0xe2, 0x1c, 0xe5, 0xdb,
-0x7a, 0x29, 0x0a, 0x7b, 0x76, 0xf1, 0x8a, 0x3f,
-0xc4, 0x3f, 0xe9, 0xf8, 0x6b, 0xe7, 0x7f, 0xfe,
-0x1b, 0x17, 0x4e, 0xcf, 0x44, 0x84, 0xcc, 0xaf,
-0x0c, 0x90, 0x0b, 0x42, 0xb3, 0xb6, 0x20, 0x13,
-0xff, 0x98, 0xf3, 0x2f, 0x8d, 0xc1, 0x3e, 0xb6,
-0x47, 0xed, 0x54, 0xe1, 0x84, 0x31, 0xed, 0x49,
-0x6a, 0xf6, 0x3f, 0xb4, 0xd6, 0x7f, 0xb6, 0xfe,
-0x67, 0x98, 0xec, 0x36, 0xfa, 0xff, 0xf8, 0x7d,
-0x13, 0xdd, 0x87, 0x48, 0x43, 0x06, 0xff, 0x53,
-0xee, 0xf8, 0x5e, 0x54, 0xd4, 0xff, 0xac, 0xe3,
-0x1d, 0x24, 0x5c, 0x8b, 0xe1, 0xb8, 0x62, 0xf6,
-0x3f, 0x94, 0x72, 0xf1, 0x3f, 0xec, 0xd7, 0xca,
-0x81, 0xb6, 0xf5, 0x3c, 0x71, 0xf6, 0xf5, 0xdf,
-0xcb, 0xbc, 0x43, 0x8e, 0x92, 0x23, 0xff, 0x65,
-0xf2, 0x3f, 0xca, 0xc7, 0xb4, 0x7e, 0xb4, 0x78,
-0x9c, 0x7c, 0x25, 0xf2, 0x56, 0xfc, 0xc6, 0xd1,
-0x42, 0xde, 0xff, 0x30, 0x7e, 0x43, 0x16, 0xff,
-0xc3, 0xfc, 0x49, 0xad, 0x43, 0x5d, 0xb0, 0x27,
-0xb9, 0x02, 0xf6, 0x0d, 0xa5, 0x14, 0x86, 0x0d,
-0x27, 0x32, 0xf0, 0x8f, 0x95, 0xbf, 0xc0, 0x6e,
-0x42, 0x75, 0xbf, 0xf7, 0x4c, 0x88, 0xcf, 0x2a,
-0x2f, 0x77, 0xf7, 0xbe, 0xed, 0x19, 0xaf, 0xba,
-0x82, 0xfd, 0x7b, 0x7f, 0xeb, 0xd9, 0x20, 0x82,
-0x23, 0xff, 0xc5, 0xf5, 0x3f, 0xd8, 0xbd, 0xe7,
-0x80, 0x34, 0x2f, 0xe9, 0xba, 0x93, 0xfc, 0x90,
-0x6d, 0xa3, 0x3e, 0x3d, 0x2a, 0xaf, 0xaf, 0x3b,
-0xa5, 0x1e, 0x80, 0x4f, 0x0f, 0x30, 0x47, 0xf4,
-0xa4, 0xb3, 0xfe, 0xcb, 0xd4, 0xff, 0xb0, 0xf1,
-0x26, 0x5c, 0x77, 0x5e, 0x35, 0x08, 0x3f, 0x01,
-0x21, 0xf1, 0xfd, 0xf5, 0x64, 0x48, 0x7b, 0x04,
-0xe6, 0xe8, 0x35, 0xeb, 0x09, 0xcd, 0xa1, 0xff,
-0xf1, 0x19, 0x44, 0x10, 0xf3, 0x36, 0xb5, 0x6c,
-0x3e, 0xfd, 0x7a, 0x0d, 0xf6, 0xb3, 0xed, 0x35,
-0xf8, 0xfc, 0xee, 0xcc, 0xfa, 0x2f, 0x73, 0xbc,
-0xf5, 0xfa, 0x17, 0xe2, 0xad, 0x97, 0xd4, 0xf7,
-0xb1, 0x50, 0x2b, 0x2e, 0xbe, 0x09, 0x6f, 0x90,
-0x45, 0x68, 0x3c, 0xe9, 0xe0, 0x7f, 0xd2, 0xf7,
-0x0b, 0xcd, 0xfd, 0xee, 0xeb, 0x61, 0x94, 0xbc,
-0x1e, 0x69, 0xd2, 0xe7, 0x61, 0x3e, 0xe2, 0x30,
-0x69, 0x64, 0x11, 0x50, 0xc8, 0x5b, 0xff, 0xc5,
-0x37, 0xb6, 0x4d, 0x65, 0x2f, 0x4a, 0x3c, 0xf0,
-0x9d, 0x87, 0x49, 0xb1, 0xb7, 0x7f, 0xeb, 0x98,
-0x60, 0xe3, 0x7f, 0x80, 0xb7, 0xdd, 0xc3, 0xfa,
-0x3b, 0xc3, 0x28, 0xea, 0x8b, 0x70, 0xda, 0x01,
-0xc3, 0xd6, 0xb0, 0xc1, 0x5f, 0x65, 0xf0, 0x3f,
-0x82, 0x8d, 0xff, 0x61, 0xf1, 0xab, 0x2f, 0x14,
-0x50, 0x7a, 0x48, 0x6d, 0xbf, 0x6b, 0x5f, 0xe9,
-0x68, 0x7b, 0x6f, 0xea, 0xfe, 0x6c, 0xfe, 0x67,
-0x21, 0xea, 0x81, 0xa5, 0xc0, 0x51, 0xb6, 0xde,
-0x3c, 0x72, 0xa7, 0xcc, 0xf0, 0x40, 0x90, 0xbc,
-0xa4, 0xf4, 0x6a, 0xe1, 0xa1, 0x9e, 0x2c, 0xfe,
-0xc7, 0x67, 0xcd, 0xcf, 0x8d, 0xaf, 0xae, 0x7a,
-0xaa, 0xb5, 0x09, 0x5e, 0x56, 0x5b, 0x12, 0x25,
-0xf1, 0x19, 0x67, 0xa4, 0x8f, 0x97, 0xcd, 0xf8,
-0xd5, 0xd6, 0x4c, 0xfe, 0xe7, 0x0d, 0xb6, 0x5b,
-0x9f, 0x76, 0x4e, 0x6c, 0x82, 0x37, 0xa0, 0xe5,
-0xc4, 0xfd, 0x47, 0x66, 0x8e, 0x86, 0x30, 0x71,
-0x33, 0x7f, 0x88, 0xc1, 0x18, 0x53, 0xdf, 0xeb,
-0xc0, 0x3f, 0x17, 0x61, 0x51, 0x8c, 0x2d, 0x92,
-0xb3, 0x0c, 0x08, 0x2d, 0x31, 0xda, 0xfe, 0xa4,
-0x64, 0x3f, 0xb9, 0xea, 0xbf, 0xe0, 0xac, 0xcc,
-0x3f, 0xab, 0xbe, 0xba, 0x5a, 0x06, 0x84, 0xaa,
-0xc6, 0xec, 0x6d, 0x7f, 0xd2, 0xfa, 0x1f, 0xdb,
-0xf7, 0x38, 0x28, 0xf7, 0x41, 0x35, 0x95, 0x83,
-0xb7, 0x73, 0xfc, 0x33, 0x64, 0x4f, 0xf3, 0xd9,
-0xf2, 0x7d, 0xe6, 0xfd, 0xfa, 0x9f, 0xef, 0x61,
-0xfe, 0xcd, 0xd7, 0x01, 0x46, 0xdb, 0x25, 0x67,
-0x1b, 0x01, 0x9b, 0xfe, 0xc7, 0x7c, 0x1f, 0xac,
-0xff, 0xba, 0x28, 0x35, 0x74, 0x55, 0x07, 0x45,
-0xa3, 0x50, 0xab, 0xc0, 0xf6, 0xe1, 0xa4, 0xeb,
-0xbf, 0xd2, 0xfd, 0x2d, 0x95, 0x26, 0xb8, 0xa8,
-0xb7, 0x24, 0xb7, 0x8e, 0xf1, 0xfe, 0x7e, 0xce,
-0xb2, 0xa6, 0xb4, 0xfe, 0xd9, 0x56, 0xff, 0x15,
-0x60, 0xa0, 0xba, 0xa1, 0xdb, 0xb3, 0xb7, 0x73,
-0x1d, 0xbc, 0xab, 0x36, 0x19, 0x6d, 0x19, 0x5e,
-0x37, 0x2a, 0x34, 0xf3, 0xd4, 0x7f, 0xc5, 0xa9,
-0x6f, 0xc8, 0xff, 0x0c, 0x7b, 0xff, 0x4e, 0x6d,
-0x81, 0xee, 0xcf, 0xf5, 0xfe, 0xe9, 0xfa, 0x2f,
-0x5d, 0xf2, 0x48, 0xfb, 0xe8, 0x93, 0xf1, 0x9a,
-0xeb, 0xc9, 0xca, 0xf0, 0xe3, 0x5a, 0x40, 0xbf,
-0xc6, 0x10, 0x8a, 0xe7, 0xad, 0xff, 0xd2, 0x66,
-0xc3, 0xd3, 0xe3, 0xf3, 0x6a, 0x5c, 0xdf, 0x26,
-0xb3, 0xbb, 0xa7, 0xd1, 0xe2, 0x24, 0xcf, 0x7f,
-0xd9, 0x32, 0x62, 0x99, 0xf5, 0x5f, 0x15, 0x1e,
-0xed, 0x5c, 0xb2, 0x91, 0x3e, 0x50, 0x27, 0x7e,
-0x81, 0x7e, 0x15, 0x9a, 0x06, 0x78, 0xdb, 0x9f,
-0x5f, 0xc7, 0x9a, 0x86, 0xbd, 0xc1, 0xaa, 0x74,
-0xfd, 0x57, 0xa1, 0xf9, 0x3e, 0x9a, 0xe7, 0x19,
-0xb8, 0x52, 0x56, 0x2f, 0x9b, 0xb2, 0xa8, 0x23,
-0xc5, 0xa9, 0x69, 0xe9, 0xcf, 0x5d, 0xff, 0x25,
-0x17, 0x8c, 0x4a, 0x17, 0x21, 0x48, 0xd9, 0xb4,
-0xdc, 0x81, 0x68, 0xd3, 0xd1, 0xa6, 0x23, 0x5d,
-0xbf, 0x90, 0xee, 0xcf, 0xbc, 0x94, 0xf9, 0x13,
-0xa1, 0x52, 0x63, 0x4e, 0x66, 0x16, 0x6c, 0x22,
-0xf3, 0x8f, 0xd8, 0x65, 0x03, 0xe9, 0xfa, 0x2f,
-0xeb, 0x7e, 0x60, 0xf8, 0xa7, 0x97, 0x56, 0xc5,
-0x8a, 0xb0, 0xde, 0xcd, 0x94, 0x39, 0xd9, 0x3b,
-0x22, 0xe6, 0xe8, 0xff, 0xd3, 0xfb, 0xb9, 0x9d,
-0x5a, 0x51, 0x30, 0x64, 0xc8, 0xa8, 0xdc, 0xb9,
-0xd6, 0x9b, 0xad, 0xff, 0x8f, 0xb4, 0x1b, 0xae,
-0x68, 0xf5, 0xd1, 0xf9, 0xaa, 0xe8, 0x27, 0xf7,
-0xd9, 0x81, 0xd0, 0x56, 0x9b, 0x22, 0xda, 0xd6,
-0xff, 0xc7, 0xc8, 0x47, 0x94, 0x96, 0x50, 0xf7,
-0x99, 0x54, 0x21, 0x58, 0x0e, 0x3d, 0x86, 0xb3,
-0xff, 0xf3, 0x07, 0x4a, 0x5d, 0x98, 0x05, 0xc1,
-0x1f, 0x67, 0xc9, 0x42, 0x72, 0xea, 0x7f, 0xaa,
-0xe5, 0x83, 0x47, 0x7c, 0xcb, 0xe4, 0x68, 0xe4,
-0x53, 0xea, 0xc1, 0x36, 0xa7, 0xec, 0x24, 0x5f,
-0xfd, 0x97, 0xb6, 0x53, 0xab, 0x60, 0xd1, 0x99,
-0x66, 0xde, 0x96, 0xaf, 0xfe, 0xcb, 0xaf, 0x6a,
-0x15, 0x0a, 0x91, 0x64, 0xec, 0x7f, 0x68, 0x00,
-0x03, 0x29, 0x43, 0xff, 0x63, 0xe9, 0xc3, 0x17,
-0x5f, 0x8d, 0xdd, 0x7e, 0xea, 0x68, 0x80, 0xfd,
-0x0d, 0x64, 0xec, 0x7f, 0x98, 0x73, 0xbc, 0xa7,
-0x0b, 0xcd, 0xf7, 0xe9, 0x43, 0xfd, 0xcf, 0xbc,
-0x96, 0xe5, 0x6c, 0xb7, 0x35, 0x90, 0x1a, 0xdd,
-0x0c, 0xde, 0x0f, 0xd9, 0x31, 0xde, 0x37, 0xd3,
-0x78, 0x86, 0xe1, 0x8d, 0xcb, 0x70, 0xe3, 0x32,
-0x4f, 0x3b, 0x43, 0x3b, 0x97, 0x8d, 0xb4, 0x11,
-0xde, 0x76, 0xb7, 0xe3, 0xfe, 0x34, 0xff, 0x53,
-0x01, 0x49, 0xb9, 0x4f, 0xae, 0x85, 0x62, 0xea,
-0x42, 0xd9, 0x4f, 0x8d, 0xe2, 0x36, 0x64, 0x57,
-0xb6, 0x8c, 0x98, 0xb3, 0xff, 0xcf, 0xb2, 0x2e,
-0x79, 0x6f, 0xe8, 0x0e, 0x06, 0x5a, 0xae, 0x5a,
-0x86, 0xa3, 0x5b, 0x66, 0x1f, 0x66, 0xae, 0xfe,
-0x3f, 0x65, 0xbb, 0x52, 0x65, 0x5f, 0x5c, 0x4f,
-0x5e, 0x93, 0x9a, 0x46, 0xc1, 0x39, 0x9f, 0x69,
-0xfd, 0xf3, 0x4e, 0xec, 0x7f, 0xf8, 0xf7, 0xcd,
-0x4b, 0x3d, 0x4a, 0x2a, 0xff, 0xd5, 0x63, 0xbc,
-0x76, 0xad, 0xf1, 0xfe, 0x07, 0x53, 0xfa, 0x1f,
-0xab, 0xff, 0xe1, 0x08, 0xf6, 0x3f, 0xe4, 0x4d,
-0x0e, 0x3b, 0x6d, 0x40, 0xe8, 0xed, 0x8c, 0xf5,
-0x70, 0xd1, 0x51, 0xff, 0x35, 0xa2, 0xd6, 0xb1,
-0xf1, 0x8a, 0x61, 0x3e, 0xcc, 0x9c, 0xf3, 0x9f,
-0xae, 0xff, 0x02, 0xc9, 0x0f, 0xcf, 0xca, 0x95,
-0x54, 0x3e, 0x4b, 0x96, 0xd0, 0xa7, 0xb5, 0x12,
-0x87, 0xec, 0xc7, 0x32, 0xd2, 0xfd, 0x0f, 0x65,
-0xb6, 0xff, 0x7a, 0x5c, 0xaf, 0x86, 0xa2, 0x26,
-0xd2, 0xa6, 0xee, 0x8b, 0x3b, 0x65, 0x87, 0x36,
-0xfd, 0x8f, 0xf9, 0x0f, 0xeb, 0xbf, 0x9e, 0xa6,
-0x9f, 0x3a, 0x22, 0xaf, 0x2f, 0x5c, 0x0d, 0x4f,
-0x63, 0x23, 0xe8, 0x5c, 0xdf, 0x6f, 0xc2, 0x7c,
-0x3c, 0xf8, 0x2b, 0x66, 0xc3, 0x59, 0xfa, 0x54,
-0xac, 0x78, 0x83, 0xf8, 0xdf, 0xe1, 0x23, 0x7b,
-0x22, 0xcc, 0x6e, 0x1c, 0xf3, 0x59, 0xeb, 0xb3,
-0x78, 0x0f, 0x5c, 0x82, 0x43, 0x94, 0x79, 0xd7,
-0xdd, 0x46, 0xa1, 0x93, 0xad, 0x8d, 0x58, 0x5a,
-0xff, 0x73, 0xaf, 0x39, 0xde, 0x70, 0xd9, 0xb3,
-0xda, 0x95, 0x68, 0xbd, 0xea, 0x19, 0x71, 0x5f,
-0x05, 0x03, 0x74, 0x89, 0x19, 0xb6, 0x9a, 0x87,
-0xed, 0xf1, 0x6b, 0x28, 0xad, 0x7f, 0xae, 0x78,
-0x0c, 0x9e, 0x8e, 0x55, 0x6a, 0xc5, 0x9f, 0x21,
-0xab, 0xa1, 0x4b, 0x5b, 0x88, 0xb2, 0xa5, 0x41,
-0x7c, 0xed, 0xa4, 0xfb, 0x1b, 0x36, 0xfd, 0x8f,
-0xa5, 0xaf, 0xa6, 0xf0, 0x98, 0xb0, 0x5f, 0x79,
-0x7c, 0x1b, 0xf3, 0x57, 0xab, 0x51, 0xed, 0xac,
-0x9b, 0xb7, 0x25, 0x7a, 0x6c, 0xe3, 0x4d, 0xc7,
-0x3b, 0x8d, 0xc5, 0xf7, 0xb8, 0xa6, 0x52, 0x16,
-0xe6, 0xda, 0x08, 0x35, 0x89, 0xfd, 0x54, 0xdb,
-0x31, 0x6b, 0x3e, 0x6d, 0xf5, 0x5f, 0x05, 0x7b,
-0xe0, 0x43, 0x8d, 0xfb, 0x4f, 0x3f, 0xca, 0xfc,
-0xf4, 0xeb, 0x30, 0x4c, 0x4c, 0x48, 0x77, 0x38,
-0xe2, 0x4b, 0x9a, 0xdf, 0x8b, 0x29, 0xa3, 0x70,
-0x51, 0x65, 0xd1, 0x19, 0xe7, 0x67, 0xdc, 0xda,
-0x78, 0x66, 0xf8, 0xdb, 0xf4, 0xfb, 0x20, 0xfe,
-0xb9, 0x08, 0xf5, 0xb4, 0x03, 0x37, 0xf5, 0x97,
-0x48, 0xaa, 0xcc, 0xf9, 0x0d, 0xc3, 0x8d, 0x7f,
-0x27, 0xbb, 0xff, 0x4f, 0xbf, 0xb4, 0x4e, 0xee,
-0xeb, 0xa8, 0x89, 0xb9, 0x9e, 0x21, 0xef, 0x40,
-0x9f, 0xee, 0x0c, 0x5b, 0xb6, 0xfa, 0x2f, 0xf3,
-0xef, 0x85, 0xf5, 0x5f, 0xbb, 0xa9, 0x2f, 0xe6,
-0xde, 0x4e, 0xf6, 0x68, 0x7d, 0x34, 0x75, 0xdb,
-0x0f, 0x32, 0xee, 0x77, 0xf6, 0x7f, 0xee, 0x53,
-0x6b, 0x74, 0xd7, 0xf5, 0xe4, 0x28, 0xc4, 0x53,
-0xcb, 0xac, 0xad, 0x57, 0x31, 0xea, 0xbf, 0x72,
-0xe8, 0x7f, 0xe4, 0x75, 0x30, 0xb2, 0xbe, 0x8e,
-0x2e, 0xd8, 0x26, 0x3e, 0x61, 0x8d, 0x17, 0xe3,
-0xef, 0x0b, 0x56, 0xc7, 0x5d, 0xaf, 0x03, 0xff,
-0x94, 0x5d, 0x82, 0xf1, 0xe0, 0x8d, 0x74, 0xd5,
-0x7a, 0xe6, 0xb4, 0x2f, 0x19, 0xb2, 0xe7, 0x4b,
-0x74, 0x92, 0xe1, 0xa5, 0xeb, 0xec, 0xf1, 0x3d,
-0x9b, 0xff, 0xc1, 0xd5, 0xf2, 0x06, 0x2c, 0x49,
-0x94, 0x9c, 0xeb, 0x0c, 0xb0, 0xf9, 0xaf, 0x3d,
-0xe6, 0x5d, 0x2d, 0x36, 0x51, 0xf6, 0x53, 0x3f,
-0xf2, 0x3f, 0x36, 0xfd, 0x39, 0x03, 0x39, 0x1d,
-0xb5, 0x49, 0x91, 0xa3, 0x1d, 0xdd, 0x37, 0x26,
-0x6f, 0x21, 0x0b, 0x94, 0x43, 0x7a, 0x6d, 0x9c,
-0xcd, 0xc0, 0x02, 0xed, 0x70, 0x64, 0xc1, 0x70,
-0x4e, 0xfd, 0x0f, 0x1f, 0xdd, 0x0e, 0xcd, 0x2f,
-0x31, 0x98, 0x27, 0xc0, 0x5e, 0x8d, 0x77, 0x08,
-0x07, 0xe8, 0x2d, 0xe0, 0x78, 0xd8, 0xd1, 0xff,
-0xd0, 0x36, 0xdb, 0x84, 0x01, 0xad, 0x68, 0xe1,
-0x6e, 0x85, 0xcf, 0x67, 0x37, 0xf3, 0x78, 0x06,
-0x23, 0x14, 0x4a, 0xe3, 0x31, 0xb0, 0xeb, 0x4f,
-0x5e, 0x97, 0x1a, 0x13, 0x25, 0x41, 0xf7, 0x7c,
-0x89, 0x5f, 0x99, 0x2d, 0xd6, 0x6a, 0x13, 0x70,
-0x77, 0x3f, 0xc3, 0xcf, 0xba, 0x85, 0x67, 0x62,
-0xd3, 0x1d, 0xfc, 0x0f, 0xdb, 0x68, 0x24, 0xb1,
-0xad, 0x0d, 0xb4, 0xec, 0x66, 0xfb, 0x4d, 0x06,
-0x1d, 0xc9, 0xdd, 0x99, 0xf8, 0x67, 0x8f, 0x59,
-0x54, 0x38, 0x0a, 0x1f, 0xb4, 0x2d, 0x2e, 0x62,
-0x4f, 0xdb, 0x11, 0x3a, 0x0a, 0xcd, 0x47, 0xbc,
-0xdb, 0x3a, 0x55, 0x3d, 0xa5, 0x38, 0x4a, 0xf3,
-0x0f, 0x06, 0xff, 0x63, 0x56, 0x0b, 0x52, 0x5f,
-0x54, 0x7e, 0xa6, 0x75, 0x77, 0xd9, 0xeb, 0x43,
-0x0c, 0x16, 0x6e, 0xef, 0xbc, 0x0d, 0x0e, 0x4b,
-0x0b, 0x18, 0x42, 0x73, 0xe2, 0x9f, 0xf4, 0xd7,
-0xb1, 0xef, 0x66, 0x7f, 0xd2, 0xd5, 0x04, 0x0f,
-0xd0, 0xce, 0x23, 0x81, 0xb0, 0xdb, 0xd6, 0x88,
-0x7e, 0xdc, 0xda, 0x7f, 0x85, 0x21, 0xad, 0xff,
-0x11, 0x9e, 0x8e, 0x56, 0x0e, 0xcb, 0x9f, 0x23,
-0x3f, 0xa4, 0xf7, 0xd2, 0xf9, 0xb1, 0x9e, 0x71,
-0x54, 0xc8, 0x74, 0xcc, 0x1f, 0x2e, 0xca, 0xc0,
-0x3f, 0xf0, 0x61, 0x0c, 0x9f, 0x2f, 0x0e, 0xc2,
-0x07, 0xe0, 0xff, 0xeb, 0x92, 0x60, 0xe7, 0xa6,
-0x68, 0x47, 0x77, 0xd3, 0xed, 0xd3, 0x82, 0xa2,
-0x87, 0x7e, 0x08, 0xb3, 0x74, 0x8f, 0x83, 0xff,
-0x99, 0x95, 0xd2, 0xff, 0x18, 0xab, 0xe5, 0x1e,
-0xdd, 0x3b, 0xd4, 0x7a, 0xaa, 0xed, 0x0d, 0x58,
-0x30, 0x60, 0xea, 0x9f, 0xfb, 0x9d, 0xf8, 0x27,
-0xcd, 0xbf, 0xad, 0x83, 0x8b, 0xb4, 0x2e, 0xe9,
-0xe9, 0x13, 0x6b, 0xb1, 0xfe, 0x02, 0x23, 0x3e,
-0x43, 0x44, 0x05, 0xcd, 0xaf, 0x78, 0x1c, 0xfd,
-0x0f, 0x05, 0x1b, 0xff, 0xf3, 0x34, 0xcf, 0x76,
-0xf9, 0x66, 0x49, 0xf7, 0x02, 0xf3, 0xd8, 0xed,
-0x64, 0x0b, 0x6c, 0x82, 0xc0, 0x09, 0xbf, 0xf3,
-0xfc, 0x0b, 0x1b, 0xff, 0xb3, 0x97, 0x56, 0x87,
-0xe5, 0xc5, 0xe4, 0x5e, 0xe8, 0xe8, 0xf0, 0x87,
-0xe1, 0x44, 0x88, 0x77, 0xc0, 0x46, 0x05, 0x54,
-0x1a, 0xff, 0xac, 0x75, 0xd4, 0x5f, 0x40, 0x4c,
-0xf7, 0x2f, 0xac, 0xd9, 0x42, 0xb0, 0x8d, 0xb6,
-0x7f, 0x56, 0x64, 0x0b, 0x74, 0x4a, 0x01, 0x83,
-0xff, 0x31, 0xef, 0x1f, 0x29, 0xb3, 0xf8, 0x9f,
-0xb5, 0xa8, 0xfe, 0xa2, 0x9e, 0x11, 0xb1, 0x0f,
-0x8e, 0xc3, 0x12, 0xea, 0xf9, 0x4b, 0x71, 0x03,
-0x39, 0x66, 0x28, 0x82, 0xec, 0xfd, 0x0f, 0x6d,
-0xfb, 0x71, 0xc3, 0x10, 0xc2, 0xbc, 0x30, 0x07,
-0xeb, 0xbf, 0x24, 0x3c, 0x18, 0xa2, 0x20, 0x13,
-0xff, 0xe4, 0x85, 0x3d, 0x86, 0x50, 0x36, 0x90,
-0x81, 0x7f, 0x6c, 0xe8, 0x45, 0xab, 0x6d, 0x77,
-0x6f, 0x23, 0xbf, 0x37, 0x8c, 0x68, 0xea, 0x60,
-0x8b, 0xfc, 0xfa, 0x9f, 0xc3, 0x72, 0x6d, 0xc8,
-0x1d, 0x8d, 0x0c, 0xab, 0x07, 0x99, 0xb1, 0x22,
-0x7a, 0x4d, 0xc0, 0xbc, 0xff, 0x05, 0x6b, 0x7e,
-0x32, 0xf9, 0x9f, 0xe5, 0xee, 0xd2, 0xc8, 0xc0,
-0xee, 0xbd, 0x35, 0x81, 0xe5, 0x2b, 0x18, 0x22,
-0xc2, 0xf3, 0x2f, 0x96, 0x3b, 0xf5, 0x3f, 0xd7,
-0x3a, 0xf8, 0x1f, 0x86, 0x7f, 0x90, 0xff, 0x19,
-0x57, 0x67, 0x23, 0x10, 0xe2, 0x07, 0x31, 0x60,
-0x45, 0xd8, 0x69, 0x6b, 0xfd, 0xf4, 0xd9, 0xfa,
-0xff, 0x18, 0xea, 0xe5, 0x21, 0xf1, 0xbc, 0xf4,
-0x73, 0xd2, 0xa2, 0xad, 0x6a, 0xb7, 0x9d, 0x7f,
-0x51, 0x98, 0xc6, 0x3f, 0xf6, 0x69, 0x91, 0xeb,
-0x34, 0xcf, 0x43, 0x9d, 0xc3, 0xd5, 0x17, 0xe4,
-0xe6, 0x10, 0x17, 0xc6, 0xb0, 0x0f, 0x2d, 0x14,
-0x70, 0xe2, 0x9f, 0x98, 0xc5, 0xff, 0xb0, 0x8d,
-0x55, 0x43, 0x99, 0xdc, 0xe5, 0x3b, 0x03, 0x7d,
-0x5a, 0xad, 0xc2, 0xc2, 0xfa, 0x85, 0xf6, 0x6e,
-0xa8, 0x55, 0xda, 0x1c, 0xf8, 0x47, 0xea, 0x4a,
-0x8f, 0xf7, 0xe7, 0xb4, 0x52, 0xdb, 0xbc, 0x9a,
-0xbc, 0x0a, 0x4f, 0x75, 0xcc, 0x0f, 0x8b, 0xed,
-0xe4, 0x94, 0xd2, 0x61, 0x54, 0xcc, 0x39, 0xf0,
-0x4f, 0x7a, 0x3e, 0x9f, 0x82, 0x4f, 0x85, 0x8a,
-0x86, 0x6e, 0xfe, 0xb7, 0xe8, 0xcf, 0xd5, 0x05,
-0x5a, 0xcf, 0x10, 0x39, 0x7f, 0xcb, 0x66, 0x63,
-0x3e, 0x6d, 0xf5, 0x5f, 0x92, 0xfd, 0xef, 0x1b,
-0xaa, 0xd3, 0xe6, 0x6f, 0x13, 0xdf, 0x82, 0x0b,
-0x7a, 0x73, 0x3b, 0xf6, 0xe3, 0x25, 0x47, 0x8d,
-0x83, 0x3c, 0x6c, 0xf5, 0x5f, 0x8e, 0xf5, 0xa0,
-0x34, 0x2f, 0x2b, 0x89, 0x56, 0xbd, 0x99, 0x42,
-0x44, 0x88, 0x18, 0x85, 0xeb, 0xb3, 0xf1, 0x8f,
-0x35, 0xff, 0x97, 0xa0, 0x1e, 0x3c, 0xba, 0xb8,
-0x10, 0x2e, 0x15, 0xd4, 0x43, 0xc9, 0x00, 0x73,
-0x3b, 0xe3, 0x42, 0x06, 0xfe, 0x91, 0x25, 0x07,
-0xff, 0xe3, 0xe7, 0x69, 0x2f, 0x63, 0xc7, 0xba,
-0xb3, 0x34, 0x8d, 0x7f, 0x54, 0xd3, 0x3f, 0xc8,
-0x0e, 0xfd, 0x0f, 0x55, 0xcf, 0xb0, 0xef, 0x0b,
-0x3b, 0x86, 0xa9, 0x49, 0x66, 0x0c, 0x4a, 0x58,
-0xc1, 0xc4, 0xf1, 0x8f, 0xf5, 0x3d, 0xda, 0xf5,
-0x3f, 0xfb, 0xb5, 0x79, 0x4a, 0xdb, 0x4a, 0xa2,
-0xc0, 0x7e, 0xbd, 0x32, 0x28, 0x6b, 0x64, 0x08,
-0xb0, 0x31, 0x72, 0x16, 0xfe, 0xb1, 0xd0, 0xce,
-0x39, 0x1a, 0x8f, 0x05, 0xfc, 0xee, 0x6b, 0x0c,
-0x23, 0x8d, 0x7f, 0xaa, 0x6c, 0xf8, 0xe7, 0x5a,
-0x1b, 0x1f, 0x72, 0x01, 0x65, 0x84, 0xd6, 0xf7,
-0x42, 0xed, 0xe7, 0x5f, 0x98, 0xef, 0xc3, 0xf0,
-0x8f, 0x11, 0xbf, 0x0e, 0x8a, 0x58, 0xc8, 0x53,
-0xb7, 0x66, 0xeb, 0x76, 0x6e, 0xb4, 0x84, 0x59,
-0xfc, 0x2a, 0x64, 0x8e, 0xa8, 0x19, 0xf3, 0x17,
-0x43, 0xe9, 0xfe, 0x87, 0xf2, 0x63, 0x6c, 0xbc,
-0xec, 0x25, 0x37, 0x70, 0xff, 0xa3, 0xc6, 0x4a,
-0xd6, 0x5e, 0x35, 0xc4, 0x0c, 0x6c, 0x3b, 0xe6,
-0xfb, 0x3e, 0xdd, 0xb4, 0x6b, 0xfe, 0xa8, 0xec,
-0xd4, 0xff, 0xcc, 0xb2, 0xfa, 0xff, 0xc0, 0x33,
-0x30, 0x47, 0x6e, 0xd5, 0x98, 0x77, 0xdd, 0x8f,
-0x65, 0x5f, 0x43, 0xe4, 0x2a, 0xfa, 0x13, 0x95,
-0x13, 0xd7, 0x76, 0xfc, 0xb3, 0xc5, 0xee, 0x7f,
-0x76, 0xe9, 0xae, 0x1b, 0x23, 0x03, 0xa8, 0x30,
-0x3f, 0xe2, 0x56, 0x49, 0x37, 0xee, 0xc8, 0xfa,
-0xe5, 0xcc, 0xfa, 0xf7, 0x34, 0x7a, 0xa1, 0x0d,
-0x98, 0x88, 0x79, 0x13, 0x26, 0x74, 0x86, 0x70,
-0xd8, 0x8e, 0x8c, 0x17, 0xf2, 0xec, 0x71, 0xe0,
-0x1f, 0x18, 0x95, 0xac, 0xfb, 0xc7, 0x69, 0xa3,
-0x5a, 0x82, 0xec, 0xdf, 0x38, 0xbd, 0x5b, 0xf5,
-0x46, 0xdd, 0xc3, 0x52, 0x4e, 0xfc, 0x93, 0x8a,
-0x77, 0xcf, 0x60, 0x98, 0xc3, 0xee, 0x6d, 0x63,
-0xda, 0x71, 0xc3, 0x58, 0xcc, 0x22, 0x7e, 0xb3,
-0x13, 0xff, 0x38, 0xfa, 0xff, 0x5c, 0x20, 0xfc,
-0x43, 0x18, 0x65, 0x9f, 0x61, 0x89, 0xd6, 0xfa,
-0xbd, 0xd2, 0xea, 0x1c, 0xf8, 0x47, 0xb0, 0xdd,
-0x6f, 0x7d, 0x38, 0x9b, 0x61, 0xae, 0x86, 0x69,
-0x32, 0x25, 0x67, 0xfd, 0xbb, 0x35, 0x3f, 0xfb,
-0xc0, 0xb3, 0x9d, 0x4d, 0x4b, 0x82, 0x44, 0x20,
-0x40, 0x57, 0xc4, 0x49, 0x09, 0x4d, 0x29, 0xa2,
-0x6d, 0xf8, 0xa7, 0xc2, 0x00, 0x39, 0xee, 0x7d,
-0x9d, 0x7b, 0x60, 0x0c, 0x9a, 0x67, 0x7a, 0x23,
-0x9d, 0xbc, 0x11, 0x96, 0x84, 0x27, 0x10, 0xc5,
-0x5e, 0x57, 0xf9, 0x8e, 0xdb, 0x86, 0x7f, 0xb0,
-0xff, 0xb3, 0x3f, 0x15, 0xbf, 0x4c, 0xe1, 0x93,
-0xfa, 0x4f, 0x2e, 0x34, 0xdc, 0xec, 0xa7, 0x50,
-0x06, 0xfe, 0x01, 0xc0, 0xba, 0x08, 0xcc, 0xfa,
-0x2b, 0x53, 0x18, 0x60, 0xff, 0x27, 0x01, 0x7b,
-0x3b, 0x8d, 0x79, 0xe0, 0x29, 0x0c, 0xfb, 0xbf,
-0x2e, 0xa8, 0x04, 0xf6, 0x71, 0x28, 0x53, 0x19,
-0xff, 0x9e, 0xe7, 0x23, 0xf9, 0x98, 0x3a, 0xf3,
-0x2c, 0xaf, 0x61, 0xfb, 0x37, 0xf5, 0x8d, 0x86,
-0xf1, 0xef, 0x79, 0xfe, 0x1f, 0xfb, 0xef, 0x3f,
-0xd9, 0xfc, 0x2b, 0x78, 0x96, 0xdf, 0x20, 0xdc,
-0xc9, 0x80, 0xd1, 0x14, 0x86, 0xf4, 0x7f, 0xfc,
-0xfc, 0xff, 0xe0, 0xf9, 0x97, 0x14, 0xfa, 0x07,
-0xcc, 0xb9, 0x60, 0xf9, 0x93, 0x3f, 0xf6, 0x5f,
-0x53, 0xd3, 0x1f, 0x72, 0x97, 0xd7, 0xfb, 0x7f,
-0xf8, 0xf8, 0xff, 0x17, 0xfe, 0xb5, 0x4c, 0x4e,
-0x4e, 0xea, 0x9f, 0x60, 0xfc, 0xff, 0xf9, 0xfe,
-0xff, 0x64, 0xdf, 0xe3, 0x7f, 0xf9, 0xc3, 0xff,
-0xf2, 0x87, 0xff, 0x8e, 0xf9, 0xff, 0x2f, 0x7f,
-0xf8, 0x49, 0xff, 0xfe, 0xb3, 0xf9, 0x9f, 0xff,
-0x5c, 0xf7, 0xeb, 0x05, 0xe7, 0xe1, 0x38, 0x6d,
-0xd1, 0x3c, 0x23, 0xe2, 0xb3, 0xf0, 0x2f, 0x94,
-0x57, 0xc3, 0x71, 0x7e, 0x35, 0x5f, 0x7e, 0x50,
-0xf9, 0x4b, 0xb8, 0x8f, 0x2e, 0x08, 0xcb, 0xbb,
-0x4b, 0x6b, 0xf9, 0x69, 0xb0, 0xb9, 0xf3, 0x83,
-0x69, 0x7e, 0x8c, 0xad, 0xd9, 0x08, 0xb6, 0xd9,
-0x8f, 0x95, 0x6e, 0x51, 0xbe, 0x0f, 0xd5, 0x7a,
-0xee, 0xfc, 0xa0, 0x8d, 0x1f, 0x7b, 0x4b, 0xb9,
-0xaf, 0xbb, 0x96, 0x3d, 0x1f, 0xd5, 0xe0, 0x42,
-0x9e, 0xfc, 0xe0, 0xb8, 0xb5, 0xdf, 0x14, 0xca,
-0xfe, 0x49, 0x3a, 0xd6, 0xdf, 0xec, 0x0f, 0xa8,
-0x33, 0xf6, 0x48, 0xbf, 0x56, 0x1b, 0x8c, 0x32,
-0xc6, 0x89, 0x8c, 0xfc, 0x9d, 0x2d, 0x3f, 0x08,
-0x5b, 0xc8, 0x15, 0xb8, 0x91, 0xed, 0x0e, 0xd8,
-0x6e, 0x73, 0x52, 0x6d, 0x31, 0xfa, 0x23, 0x4d,
-0x95, 0x1f, 0x7c, 0x02, 0x9b, 0xe4, 0x2c, 0x0b,
-0x44, 0xc4, 0x3d, 0x74, 0x42, 0x6e, 0xd4, 0x03,
-0xb9, 0xf2, 0x5f, 0xce, 0xfc, 0xe0, 0x7d, 0xb4,
-0x56, 0xef, 0xde, 0x4f, 0x8a, 0xd9, 0xee, 0x40,
-0x1d, 0xc9, 0xf9, 0xfe, 0x76, 0x7d, 0xd4, 0x32,
-0x78, 0x78, 0x7d, 0x20, 0x24, 0x57, 0x87, 0xb6,
-0x42, 0xaf, 0xe2, 0x77, 0xb4, 0x65, 0xcb, 0xd9,
-0x1f, 0xe0, 0x2a, 0xed, 0x11, 0x54, 0x6f, 0xae,
-0x0d, 0xcd, 0x56, 0x5b, 0x68, 0x65, 0x72, 0x79,
-0xae, 0x7c, 0x99, 0x5d, 0x1f, 0x25, 0xc1, 0x2b,
-0x5d, 0x4d, 0x5a, 0x40, 0x15, 0xb7, 0xc0, 0x87,
-0xea, 0x62, 0xdd, 0x93, 0x6a, 0x0b, 0x99, 0xcc,
-0xd7, 0x1f, 0x72, 0x3f, 0x79, 0x07, 0x5a, 0x86,
-0xbc, 0x61, 0xde, 0x5f, 0xf4, 0x46, 0xfd, 0xf3,
-0x46, 0x23, 0x71, 0x7e, 0xac, 0x5e, 0x8e, 0xfc,
-0xa0, 0x5f, 0xfa, 0x31, 0xbc, 0xc8, 0xb6, 0xb1,
-0x25, 0x31, 0x71, 0x9d, 0x34, 0x41, 0x50, 0x48,
-0x4f, 0xb2, 0xe7, 0x27, 0xfd, 0xf7, 0x4d, 0x28,
-0x8f, 0xc1, 0x26, 0xa1, 0xb2, 0x5f, 0xc6, 0xf3,
-0x61, 0x0f, 0xc0, 0x8e, 0xdc, 0xf9, 0x85, 0x73,
-0x36, 0x7f, 0xf5, 0x00, 0x3c, 0x70, 0xdf, 0x9c,
-0xb0, 0x6b, 0x64, 0xee, 0x57, 0x90, 0xdf, 0xe0,
-0x8d, 0x92, 0x64, 0x6b, 0xbc, 0x3f, 0x31, 0x8c,
-0x84, 0x3d, 0x3f, 0xb8, 0xbc, 0x9b, 0xa8, 0xbf,
-0x95, 0xeb, 0x78, 0xbf, 0x71, 0xd5, 0x31, 0x8d,
-0x39, 0xf2, 0x83, 0xc9, 0xf2, 0x43, 0xf0, 0x00,
-0x5d, 0xb4, 0xbd, 0xe4, 0x8e, 0x3b, 0xd7, 0x96,
-0x5d, 0x39, 0x55, 0x67, 0x10, 0x0b, 0x99, 0x1d,
-0x93, 0xc6, 0x33, 0xf4, 0x51, 0x4d, 0xe0, 0xed,
-0x42, 0x35, 0x26, 0x34, 0x2b, 0x9f, 0x98, 0x1f,
-0x1c, 0x16, 0x2e, 0x44, 0xeb, 0xda, 0x78, 0xdb,
-0x9c, 0x0b, 0x94, 0x57, 0x3f, 0x59, 0x0c, 0xc9,
-0x9a, 0x3c, 0xfd, 0x01, 0xc8, 0xce, 0x0d, 0xf2,
-0xb6, 0xc8, 0x1c, 0xd8, 0x9b, 0xf0, 0xad, 0x2d,
-0x49, 0xa7, 0xa5, 0x42, 0x79, 0xfb, 0x43, 0xfa,
-0x34, 0x88, 0x62, 0x7f, 0x00, 0xb5, 0xa6, 0xcd,
-0x4a, 0x63, 0xcd, 0xcc, 0x9d, 0x1f, 0x04, 0x29,
-0x76, 0x10, 0x65, 0xe1, 0x46, 0x7f, 0x00, 0xbf,
-0x36, 0x33, 0x57, 0xbe, 0x2c, 0xdd, 0x9f, 0x64,
-0x83, 0x1c, 0xa6, 0x87, 0xa0, 0x4e, 0xae, 0x35,
-0xfa, 0x03, 0x1c, 0x72, 0x0c, 0xd3, 0xa2, 0xce,
-0x4e, 0xdb, 0xfa, 0x43, 0x9e, 0x2f, 0xfa, 0x37,
-0xb8, 0x11, 0xcf, 0x7b, 0x1d, 0x96, 0xff, 0x0d,
-0x17, 0x46, 0x2e, 0x62, 0xd0, 0x5e, 0x1f, 0x77,
-0x1e, 0x5e, 0x82, 0xfa, 0x90, 0x67, 0x68, 0xda,
-0x79, 0xf9, 0x32, 0x2c, 0xd1, 0x66, 0x19, 0xc7,
-0xc8, 0xb6, 0x20, 0x6d, 0x98, 0xf3, 0x7c, 0x90,
-0x33, 0x6d, 0xdd, 0x05, 0x3e, 0x45, 0x66, 0xae,
-0x07, 0x85, 0x04, 0x30, 0xdb, 0x2a, 0x94, 0xcb,
-0x77, 0x3e, 0xc8, 0x35, 0x9b, 0xa9, 0x1a, 0xf6,
-0x07, 0x0b, 0x07, 0xd8, 0x6c, 0xf8, 0x35, 0xab,
-0x2d, 0xa4, 0xbd, 0x3f, 0xa4, 0xed, 0x7c, 0xd8,
-0xf2, 0x5d, 0x32, 0x6f, 0x4b, 0xfe, 0x5d, 0xd4,
-0x47, 0x15, 0xf9, 0xd2, 0x6d, 0x21, 0xe5, 0x9c,
-0xf9, 0xc1, 0xd8, 0xf4, 0x37, 0x83, 0xfd, 0x74,
-0x5f, 0xbb, 0xe7, 0xb1, 0xc2, 0xe1, 0x32, 0x2c,
-0x73, 0x4b, 0xb5, 0xb5, 0x6c, 0x72, 0xf4, 0xb7,
-0xb4, 0xf7, 0x47, 0xfa, 0xf1, 0xb2, 0x1b, 0x14,
-0x73, 0x36, 0xa2, 0xf9, 0xce, 0x87, 0xb5, 0xf3,
-0x63, 0x42, 0xa2, 0x28, 0x88, 0x6a, 0xf0, 0x58,
-0x45, 0xe2, 0xb6, 0x46, 0x58, 0x35, 0x75, 0x7e,
-0x50, 0x2d, 0x90, 0x85, 0x07, 0xe4, 0xaa, 0x7b,
-0xbb, 0x87, 0xc5, 0x3e, 0xf6, 0x69, 0x56, 0xc6,
-0x3c, 0x6c, 0x3d, 0x2b, 0x87, 0x60, 0x81, 0x33,
-0x3f, 0x68, 0xf1, 0x63, 0xfe, 0x2e, 0x8f, 0x10,
-0xd1, 0xd4, 0xb8, 0x3c, 0x77, 0x6e, 0x1b, 0xa5,
-0xba, 0xbf, 0xd4, 0xcc, 0x0f, 0xd2, 0xd4, 0xf7,
-0xe2, 0xcf, 0xc8, 0x0f, 0x82, 0x07, 0x36, 0x81,
-0x4a, 0x65, 0xec, 0x0f, 0xb0, 0x47, 0xab, 0x54,
-0x52, 0x65, 0xf2, 0x5f, 0xa7, 0x79, 0xf2, 0x83,
-0xdd, 0xb3, 0x95, 0x4d, 0x91, 0x85, 0x6a, 0x60,
-0xad, 0xf8, 0xdf, 0xa5, 0x01, 0x7a, 0x43, 0xf8,
-0xba, 0x14, 0x2d, 0x16, 0x4b, 0xe5, 0x07, 0x6f,
-0xc8, 0xc8, 0x0f, 0x7a, 0xf6, 0x90, 0x0f, 0x8d,
-0x8f, 0x8e, 0xc2, 0x98, 0xd0, 0xa4, 0xa5, 0xdb,
-0x62, 0x1b, 0x46, 0x83, 0x93, 0x1f, 0xd3, 0xca,
-0x4f, 0x6b, 0xff, 0xa0, 0x2c, 0x8c, 0x79, 0xba,
-0xc9, 0x69, 0xed, 0xf7, 0x74, 0xa1, 0xca, 0xe2,
-0xd7, 0x03, 0xe4, 0xe5, 0xe8, 0x8d, 0xb1, 0x5a,
-0x7b, 0x7e, 0x30, 0xcd, 0x8f, 0x5d, 0xfd, 0x98,
-0xde, 0x19, 0xaf, 0xa4, 0xf2, 0x0a, 0xf1, 0x15,
-0x3a, 0x00, 0x3b, 0xba, 0xe5, 0x31, 0x32, 0x9b,
-0x6e, 0x8a, 0xcd, 0xdf, 0x9d, 0x3a, 0xef, 0xe3,
-0x06, 0xdd, 0xd9, 0x1f, 0x92, 0x3e, 0x53, 0xb4,
-0xb5, 0x6e, 0x0e, 0x95, 0xb5, 0x9b, 0x4e, 0xc8,
-0xfb, 0xe5, 0x4a, 0xa1, 0x68, 0x8c, 0x3c, 0x86,
-0xfd, 0x30, 0xbb, 0xe5, 0x9c, 0xf9, 0xc1, 0xb0,
-0xf4, 0x92, 0xd0, 0x39, 0xbd, 0x3a, 0xe6, 0x87,
-0x7b, 0x75, 0xa0, 0x47, 0x18, 0x5c, 0xb3, 0xca,
-0xa0, 0x72, 0xe7, 0x07, 0xa5, 0x3d, 0xea, 0xd1,
-0x8e, 0xeb, 0x9f, 0x67, 0x7f, 0x5f, 0x5d, 0x8a,
-0xd3, 0x3a, 0xb8, 0x1f, 0xeb, 0xbb, 0x7b, 0x0a,
-0x9a, 0x69, 0x4d, 0xce, 0xfc, 0x20, 0xd6, 0x67,
-0xbd, 0x0b, 0x8d, 0x51, 0xef, 0x46, 0xf4, 0x3f,
-0x2a, 0xef, 0x86, 0xed, 0x98, 0x9f, 0xc6, 0x4c,
-0x7e, 0xec, 0x19, 0x75, 0x12, 0x16, 0xc1, 0x16,
-0x5d, 0x8c, 0xc3, 0xa0, 0xb6, 0x44, 0x33, 0xdd,
-0x38, 0x4d, 0x19, 0x8b, 0xb2, 0xf2, 0x83, 0xd0,
-0x3b, 0xe0, 0xa3, 0xb2, 0x4c, 0xaa, 0xe8, 0xb8,
-0xee, 0x0b, 0xbb, 0xb1, 0x3f, 0xcf, 0x61, 0xec,
-0x2f, 0x91, 0x3b, 0x3f, 0x88, 0xfd, 0x01, 0xf4,
-0xb9, 0x11, 0x79, 0x0b, 0xd9, 0x09, 0xf7, 0x69,
-0x35, 0xaa, 0x79, 0x1b, 0x4d, 0x2b, 0xa6, 0xb2,
-0xf4, 0x51, 0xf2, 0x5c, 0x2a, 0xd3, 0x10, 0xd0,
-0x3e, 0xf6, 0x9a, 0x78, 0x30, 0x04, 0xed, 0x95,
-0x03, 0x91, 0xd6, 0xbc, 0xfd, 0x01, 0x26, 0xd4,
-0x06, 0xea, 0x89, 0x74, 0xc6, 0x68, 0x02, 0x1a,
-0xc1, 0x68, 0x3b, 0xac, 0x36, 0x3f, 0x66, 0x5f,
-0x0f, 0xce, 0xfe, 0x90, 0x1f, 0xce, 0x5b, 0x42,
-0xbd, 0xba, 0x98, 0xfc, 0x1c, 0x9e, 0x50, 0xc1,
-0xcb, 0x9a, 0xf8, 0xfc, 0xe4, 0xce, 0x0f, 0x6e,
-0x34, 0x17, 0x49, 0x55, 0xca, 0x18, 0x9b, 0xf6,
-0x91, 0xf6, 0x46, 0x74, 0x91, 0xd1, 0x31, 0xe0,
-0x8d, 0xa6, 0x7a, 0x95, 0x19, 0x71, 0xeb, 0x3c,
-0x6b, 0xbd, 0xc2, 0xc8, 0x0f, 0xa6, 0xd1, 0xce,
-0x33, 0xa1, 0xd1, 0xd2, 0x1e, 0x3c, 0xdf, 0xb6,
-0x8e, 0x78, 0xe8, 0x26, 0xd5, 0xb7, 0x83, 0xfd,
-0x34, 0x66, 0xf9, 0xff, 0x04, 0x6c, 0x51, 0x9c,
-0xd1, 0xe7, 0x7a, 0x36, 0x2d, 0x8f, 0x73, 0x1a,
-0x30, 0xb2, 0x52, 0x7d, 0x18, 0x54, 0x8d, 0xfd,
-0x74, 0x2e, 0xad, 0x0f, 0x97, 0xf6, 0x64, 0xa1,
-0x85, 0x51, 0x9a, 0x6a, 0x0b, 0x19, 0x80, 0x99,
-0xc2, 0xed, 0xda, 0x4c, 0xbb, 0x3e, 0xfc, 0xb3,
-0xe5, 0xa3, 0xfc, 0x3c, 0x3b, 0x5b, 0xb4, 0x25,
-0xc7, 0x95, 0x17, 0x85, 0x06, 0x7d, 0x55, 0x7c,
-0xfa, 0x3a, 0xe9, 0x75, 0xa9, 0x6e, 0x0e, 0xfb,
-0x29, 0x66, 0xf9, 0x9f, 0x58, 0x4a, 0x1f, 0xbe,
-0xd5, 0x36, 0x1b, 0x57, 0xe0, 0x1f, 0x52, 0xf8,
-0x47, 0x79, 0x1f, 0xbc, 0xfd, 0x8e, 0xfe, 0x90,
-0x98, 0x1f, 0x7c, 0xd7, 0xf9, 0xfc, 0x3f, 0x31,
-0x96, 0x19, 0xf6, 0x9f, 0x54, 0x5f, 0x64, 0xa1,
-0x81, 0xfd, 0xf4, 0x81, 0xb5, 0x3e, 0x4f, 0x64,
-0xd4, 0x4b, 0xe2, 0xc1, 0x3a, 0xcc, 0xe8, 0xae,
-0xfd, 0x6d, 0x71, 0x5f, 0xe7, 0x1d, 0xea, 0x1b,
-0xa4, 0xae, 0x9d, 0xcd, 0xe6, 0x47, 0xd6, 0x7a,
-0xd0, 0xa5, 0x95, 0x59, 0xd1, 0x79, 0x25, 0xcc,
-0x68, 0x0b, 0x24, 0xe4, 0x7d, 0x64, 0x0f, 0xfc,
-0x00, 0xaa, 0x95, 0x1e, 0xc7, 0xf9, 0x68, 0x8a,
-0x51, 0x26, 0xef, 0xbe, 0xab, 0x90, 0xa3, 0x9d,
-0xb7, 0x2d, 0xd8, 0x83, 0x1d, 0x23, 0xa3, 0x07,
-0xa2, 0x95, 0x31, 0x76, 0x65, 0xdc, 0x86, 0x7f,
-0x56, 0x1a, 0x20, 0xa7, 0x91, 0xa1, 0x9d, 0x5e,
-0x25, 0x90, 0x74, 0x2f, 0xb9, 0x69, 0x50, 0xf9,
-0x10, 0x38, 0x10, 0x7a, 0x80, 0x3e, 0x1f, 0xbf,
-0x7e, 0xd4, 0xeb, 0x38, 0x1f, 0xb6, 0x1c, 0xfb,
-0x43, 0xde, 0x63, 0x76, 0x43, 0x42, 0xf6, 0x98,
-0x37, 0x0a, 0x58, 0x34, 0xc0, 0xf3, 0xe9, 0x6f,
-0x40, 0xcb, 0x11, 0xc4, 0x3f, 0xd6, 0xfc, 0xcb,
-0xd2, 0x9e, 0x74, 0x7e, 0x10, 0x0b, 0x57, 0x4b,
-0xe2, 0x55, 0x28, 0x94, 0xe2, 0x07, 0xd5, 0x8d,
-0x0a, 0x2f, 0xf6, 0xd7, 0xc9, 0x5b, 0x1d, 0xfa,
-0xf0, 0x0a, 0x67, 0x7f, 0x80, 0x7e, 0xf7, 0x37,
-0x7d, 0x58, 0x16, 0x57, 0xc5, 0x1b, 0x05, 0xe0,
-0x89, 0x69, 0x83, 0x45, 0x0c, 0xff, 0xa8, 0xe6,
-0xf3, 0x1d, 0xf9, 0x41, 0x6e, 0x7c, 0x9b, 0xe0,
-0x89, 0x69, 0x73, 0xf8, 0x78, 0xe1, 0xe1, 0xef,
-0xfd, 0x08, 0xc7, 0x9b, 0xb4, 0xf0, 0xea, 0x88,
-0x9d, 0x9f, 0xaf, 0x37, 0x8c, 0xe3, 0xa1, 0x1e,
-0x53, 0x68, 0x27, 0x1a, 0x08, 0x3c, 0xad, 0x0f,
-0x4f, 0x96, 0x8f, 0x28, 0x06, 0xc8, 0x31, 0x60,
-0x4f, 0xc7, 0x3f, 0xc4, 0x44, 0x3c, 0x31, 0xad,
-0x81, 0x9f, 0x27, 0x25, 0x1e, 0x33, 0x5a, 0x07,
-0xd8, 0xf0, 0x8f, 0xe0, 0xac, 0xd7, 0x36, 0x8f,
-0x45, 0xbb, 0xcb, 0xcc, 0x18, 0x36, 0xc2, 0xb4,
-0x3c, 0xf9, 0xc1, 0x94, 0xa1, 0x54, 0x55, 0xf3,
-0x7e, 0xc8, 0xdd, 0xbc, 0x10, 0x4c, 0xe0, 0x89,
-0xb0, 0xbc, 0xfd, 0x01, 0xb8, 0x50, 0x19, 0x1b,
-0x25, 0xed, 0xd4, 0xfc, 0x51, 0x57, 0xb5, 0x6b,
-0x33, 0x94, 0x24, 0x1d, 0xf8, 0x67, 0x71, 0x41,
-0x46, 0x37, 0x24, 0x16, 0xaf, 0xab, 0x55, 0x3c,
-0x1f, 0xad, 0x07, 0x11, 0xd1, 0x66, 0xde, 0x31,
-0xc0, 0xd6, 0x1f, 0xc0, 0x5f, 0x86, 0xf9, 0xc1,
-0x6a, 0x5e, 0x2f, 0x0f, 0x0f, 0xf2, 0xfe, 0x48,
-0xf7, 0xe1, 0x95, 0x30, 0xd2, 0x0f, 0x58, 0x3a,
-0x97, 0xd1, 0x1f, 0x69, 0x43, 0x66, 0x7f, 0x00,
-0x6f, 0x44, 0x64, 0xab, 0x10, 0x4a, 0xa1, 0x84,
-0x56, 0x51, 0x48, 0x18, 0x47, 0xa7, 0x9d, 0xb5,
-0xea, 0xeb, 0xb7, 0x67, 0x9e, 0x97, 0xc1, 0x46,
-0x77, 0x3e, 0x75, 0x3e, 0x48, 0x64, 0xf8, 0x47,
-0xd8, 0x3a, 0xdb, 0x1b, 0x9d, 0xf1, 0x51, 0xce,
-0xfe, 0x00, 0x86, 0xf1, 0x50, 0xe7, 0xef, 0xe1,
-0x35, 0xa5, 0x41, 0xf3, 0x60, 0x7d, 0xdc, 0x6b,
-0x59, 0x7a, 0xaa, 0x8a, 0xb4, 0x3e, 0x9c, 0x1b,
-0x62, 0x17, 0x33, 0xba, 0x19, 0x10, 0xc2, 0x63,
-0x2b, 0x61, 0x44, 0xe5, 0x3f, 0x9d, 0x4e, 0xe3,
-0x1f, 0xb0, 0xe5, 0x07, 0x1f, 0x34, 0x8d, 0xef,
-0xaa, 0xf3, 0x97, 0xcb, 0xed, 0xe4, 0x16, 0xfa,
-0xe0, 0xe7, 0x02, 0xe1, 0x99, 0xf6, 0xfe, 0x48,
-0xdb, 0xa5, 0x5d, 0x59, 0xea, 0xb2, 0x01, 0x7a,
-0x3f, 0x99, 0xaf, 0xe1, 0xfd, 0xe6, 0x54, 0xdb,
-0xf4, 0xe1, 0x99, 0xe3, 0xc5, 0xb7, 0xe5, 0x7a,
-0x6f, 0x7f, 0xd4, 0xbd, 0x46, 0x7a, 0x4d, 0x68,
-0x0e, 0x7b, 0xa3, 0x64, 0xc4, 0xd2, 0xe7, 0x24,
-0x1c, 0xfd, 0x01, 0xd2, 0x46, 0x0a, 0x18, 0x17,
-0xc1, 0xec, 0x35, 0x0e, 0xfc, 0x23, 0x67, 0xf4,
-0x07, 0x60, 0xc6, 0x34, 0x23, 0x51, 0xc8, 0x3c,
-0xfc, 0x18, 0x76, 0xcc, 0xc6, 0x7a, 0xcc, 0x63,
-0xd4, 0x5c, 0xff, 0x19, 0xfa, 0x70, 0x34, 0x0a,
-0x47, 0x78, 0x07, 0x0c, 0xbc, 0x22, 0x19, 0x86,
-0xd8, 0x9d, 0x5e, 0x0f, 0x52, 0xd6, 0xee, 0xe0,
-0xe6, 0x41, 0xdc, 0xb8, 0xa1, 0x50, 0x3c, 0x81,
-0x19, 0xf6, 0x01, 0x87, 0x3e, 0x9c, 0x2a, 0xb7,
-0x9a, 0xdf, 0xef, 0xad, 0xb6, 0x44, 0x21, 0xcc,
-0x01, 0x51, 0x23, 0xaf, 0xc2, 0x81, 0x6d, 0x73,
-0x10, 0x08, 0x8d, 0x68, 0xe6, 0xf3, 0xbb, 0xbb,
-0xbf, 0x92, 0x4a, 0x02, 0x12, 0x33, 0x1b, 0x48,
-0x4e, 0xb2, 0x40, 0x53, 0x99, 0xdc, 0xba, 0x41,
-0x3c, 0x09, 0x1f, 0xc6, 0x17, 0x1a, 0xe7, 0xa3,
-0x99, 0xeb, 0x4d, 0x76, 0xea, 0xa5, 0xb1, 0xde,
-0x67, 0xc6, 0x08, 0x8c, 0x4b, 0x77, 0xa0, 0x42,
-0x6c, 0x18, 0x26, 0xb4, 0xc6, 0xed, 0xec, 0xa7,
-0xc8, 0xbd, 0xe6, 0xfc, 0x40, 0xd9, 0xb3, 0x2c,
-0x5a, 0x2d, 0x31, 0xce, 0x77, 0x78, 0xc3, 0x6c,
-0x14, 0x90, 0xd2, 0xf7, 0xde, 0xc5, 0xfe, 0x87,
-0xee, 0x39, 0xcf, 0xae, 0x8c, 0x59, 0xf3, 0xff,
-0xa4, 0x62, 0xf6, 0x87, 0xe4, 0xfe, 0x27, 0xf0,
-0x36, 0x1b, 0xe6, 0x69, 0x6d, 0xff, 0xce, 0x1b,
-0x02, 0x6e, 0x8d, 0x48, 0x5a, 0xaf, 0x52, 0xcd,
-0xf1, 0x8f, 0x35, 0xff, 0x00, 0x8f, 0x09, 0x76,
-0x7f, 0x95, 0x70, 0xaf, 0x57, 0x4e, 0x44, 0x53,
-0x8a, 0xf1, 0xff, 0x8e, 0x57, 0xda, 0x57, 0xac,
-0xb7, 0xed, 0xdf, 0x55, 0x65, 0x4b, 0x96, 0x3f,
-0x4f, 0xc8, 0x71, 0xc9, 0x0f, 0x6e, 0x60, 0xdf,
-0x57, 0x2f, 0x54, 0x87, 0x33, 0xfa, 0x03, 0x18,
-0xd1, 0xc4, 0xda, 0xad, 0x5f, 0x17, 0x27, 0x67,
-0xbb, 0x27, 0x8c, 0xfe, 0x72, 0x6b, 0xd1, 0x03,
-0xb7, 0xb1, 0xf1, 0x9e, 0x4e, 0xeb, 0xc3, 0x85,
-0x3d, 0x52, 0xc6, 0xfc, 0x60, 0xa2, 0x50, 0xe0,
-0x65, 0x02, 0xc3, 0xf2, 0x04, 0xcc, 0x56, 0x1c,
-0xfd, 0x91, 0x2a, 0x95, 0xac, 0x78, 0xd7, 0x3a,
-0x6e, 0x1c, 0x14, 0x82, 0x8a, 0x29, 0x76, 0x25,
-0xec, 0x19, 0x63, 0xfb, 0x77, 0xf3, 0xfe, 0x1d,
-0x92, 0x71, 0x3e, 0xac, 0x01, 0x7b, 0x52, 0x6c,
-0x03, 0x3c, 0xc3, 0x22, 0xb6, 0x5b, 0x27, 0xe7,
-0xd9, 0xff, 0x62, 0x00, 0xe4, 0xb8, 0x2f, 0xed,
-0x7f, 0xb0, 0x3f, 0x40, 0xe6, 0xe9, 0x15, 0xa3,
-0x90, 0x92, 0x85, 0x8f, 0x60, 0xab, 0x9c, 0x6d,
-0x8e, 0xfe, 0x00, 0xae, 0x32, 0x4f, 0x3a, 0xcc,
-0x3d, 0x0c, 0x81, 0xa3, 0xd8, 0x38, 0x48, 0x8d,
-0x57, 0x86, 0x89, 0x08, 0x75, 0x03, 0x4a, 0xaf,
-0x52, 0xdb, 0xe5, 0x77, 0xe0, 0x9f, 0xfb, 0x59,
-0x58, 0x41, 0x7d, 0xf8, 0x53, 0x33, 0x46, 0xb1,
-0x51, 0xf3, 0xa9, 0x9e, 0xfd, 0x5f, 0x1d, 0xa1,
-0x13, 0x6a, 0x5d, 0xa2, 0x24, 0x28, 0xbe, 0x8d,
-0xf3, 0x03, 0x2c, 0x10, 0x27, 0xd3, 0xe7, 0xc3,
-0x96, 0x5f, 0x82, 0x09, 0x85, 0x9f, 0x0f, 0x8b,
-0xea, 0xaf, 0xe6, 0x97, 0x5e, 0x3e, 0xd7, 0x39,
-0x0e, 0x97, 0x94, 0x16, 0xfc, 0x5e, 0xce, 0xc7,
-0xde, 0x57, 0x5b, 0x8a, 0x1c, 0xf8, 0xa7, 0xbf,
-0x20, 0x0e, 0xef, 0x09, 0xd3, 0xcf, 0x04, 0xc6,
-0xc5, 0x66, 0x98, 0xec, 0xba, 0x51, 0xf5, 0x8c,
-0x73, 0xa1, 0x78, 0x4b, 0x1e, 0xfe, 0x47, 0x97,
-0x93, 0x42, 0x31, 0xf5, 0xe9, 0xfe, 0x3e, 0x82,
-0xfa, 0xf0, 0x5a, 0xd5, 0x35, 0x35, 0xff, 0x73,
-0x4c, 0x8a, 0xc1, 0x0e, 0xca, 0x9b, 0xf2, 0xe1,
-0xc0, 0x6b, 0x21, 0x27, 0xbf, 0x61, 0xe3, 0x7f,
-0xa4, 0xc7, 0xe5, 0xcd, 0x2a, 0x46, 0x2b, 0x29,
-0xe0, 0x61, 0xf3, 0xa9, 0xba, 0xa6, 0xd6, 0x87,
-0x2f, 0x2d, 0x7f, 0x1b, 0x76, 0x40, 0x10, 0xa3,
-0x79, 0x40, 0x9a, 0x90, 0x9a, 0x82, 0xf6, 0x63,
-0xf5, 0xd2, 0xfd, 0x21, 0xad, 0xf3, 0x61, 0xe3,
-0xc2, 0x6e, 0xf9, 0x02, 0xe5, 0x41, 0x9c, 0xaf,
-0x07, 0xc8, 0xad, 0x0f, 0xb7, 0xf5, 0xc7, 0x7e,
-0x12, 0x8e, 0xc2, 0x3e, 0xab, 0xdb, 0x24, 0x94,
-0xe4, 0x7a, 0xbe, 0xbd, 0x3e, 0x4e, 0x86, 0x13,
-0xe0, 0x3b, 0xc3, 0xd0, 0x0b, 0x7f, 0xdb, 0xd2,
-0x4f, 0xe2, 0x7f, 0xa4, 0x65, 0xd0, 0x19, 0x56,
-0x93, 0xae, 0x3a, 0xec, 0x8e, 0x0e, 0x01, 0xd9,
-0x95, 0x6b, 0x7e, 0xc6, 0xd2, 0xf8, 0x07, 0xbe,
-0x1c, 0xfa, 0x2e, 0xad, 0x1c, 0x96, 0x53, 0xfd,
-0x91, 0x62, 0x90, 0x02, 0x06, 0x79, 0xce, 0x07,
-0x59, 0x5b, 0xa1, 0xc1, 0xf3, 0x34, 0x7e, 0x04,
-0x65, 0xe1, 0x03, 0x1f, 0x4a, 0x4d, 0xed, 0x25,
-0x4b, 0xc4, 0xe3, 0x90, 0x6a, 0x0b, 0x69, 0xf1,
-0x3f, 0x27, 0xd3, 0xfc, 0xcf, 0xd5, 0x71, 0xe1,
-0x3d, 0xb0, 0xce, 0x97, 0x69, 0xd6, 0xec, 0x8d,
-0x02, 0x72, 0xea, 0xc3, 0xf7, 0x28, 0x2f, 0xb6,
-0xd5, 0x25, 0x4b, 0x16, 0xf3, 0xfe, 0x00, 0x4d,
-0x6a, 0xf1, 0xd4, 0xfa, 0xf0, 0xc4, 0xd5, 0x8f,
-0xc1, 0x2f, 0x79, 0x37, 0x00, 0xce, 0xff, 0xcc,
-0x07, 0x39, 0x17, 0xff, 0x73, 0xd1, 0xa6, 0x8f,
-0x8a, 0xa8, 0x0f, 0x73, 0xda, 0xa7, 0x90, 0x17,
-0x06, 0xae, 0xe7, 0xb0, 0xe7, 0x11, 0x3a, 0x3f,
-0x8f, 0x3e, 0x3c, 0x21, 0xdd, 0x27, 0x77, 0x42,
-0x8c, 0x81, 0x9c, 0xab, 0xf8, 0x87, 0xa6, 0x15,
-0x05, 0xe7, 0x4e, 0xcd, 0xff, 0x8c, 0xc3, 0x0f,
-0x63, 0x75, 0x88, 0x7f, 0xf0, 0x34, 0xb4, 0x96,
-0x58, 0xb1, 0xa3, 0x51, 0x76, 0x36, 0xff, 0x23,
-0xc4, 0xa6, 0x8d, 0x85, 0xd9, 0x32, 0xe8, 0x42,
-0x7d, 0xb8, 0x71, 0x5e, 0xe7, 0x27, 0xe9, 0xc3,
-0xf1, 0x90, 0x2f, 0xef, 0x43, 0xfc, 0x18, 0xd0,
-0x86, 0xb5, 0xb6, 0xc0, 0x27, 0xe4, 0xd2, 0x87,
-0xc3, 0x1a, 0xd8, 0x9c, 0xf4, 0xb5, 0xbb, 0x51,
-0x4f, 0x9e, 0x57, 0xef, 0x6d, 0xc7, 0x3f, 0x52,
-0xe1, 0x66, 0x69, 0x67, 0x78, 0x66, 0x94, 0xfc,
-0x08, 0xcf, 0xf3, 0xca, 0xa7, 0x0f, 0x37, 0xd7,
-0x83, 0x5f, 0x92, 0xf8, 0xb1, 0x68, 0x16, 0xdb,
-0x93, 0x9b, 0xff, 0x49, 0xe3, 0x1f, 0x4f, 0x98,
-0x26, 0x54, 0x9c, 0x1f, 0xce, 0xff, 0x38, 0xdb,
-0x42, 0xa6, 0xf5, 0xe1, 0xb6, 0xfa, 0xb8, 0xfd,
-0xb1, 0xcb, 0xd0, 0xb4, 0xdc, 0x1b, 0x9d, 0xb6,
-0x8b, 0xd3, 0x38, 0xa8, 0x0f, 0x97, 0xa6, 0xe2,
-0x7f, 0xfe, 0x8d, 0xfe, 0xab, 0xa7, 0x5e, 0xf3,
-0x0c, 0x89, 0xdf, 0x62, 0xbf, 0xde, 0xe8, 0xa0,
-0x4d, 0x72, 0x9f, 0x0f, 0xd2, 0xd5, 0xad, 0xed,
-0x04, 0x3f, 0x0d, 0x31, 0xfc, 0x43, 0x4c, 0xda,
-0x47, 0xc8, 0xab, 0x0f, 0xd7, 0x36, 0x76, 0x3d,
-0x88, 0x7c, 0x97, 0x39, 0x3a, 0xd7, 0xd4, 0xfa,
-0x70, 0x86, 0x7f, 0x2a, 0x1e, 0x65, 0xe8, 0x91,
-0x57, 0x03, 0xb1, 0xd9, 0xbb, 0x05, 0x8c, 0x69,
-0x2c, 0xc9, 0xa3, 0x0f, 0x8f, 0x95, 0xbf, 0x15,
-0x7e, 0xcd, 0x13, 0xd4, 0x56, 0x46, 0x5b, 0x39,
-0x9b, 0xb7, 0x3e, 0xe0, 0xd0, 0x87, 0x67, 0xf1,
-0x3f, 0x09, 0xe1, 0xc7, 0xd2, 0x19, 0x78, 0xd6,
-0xf1, 0xd7, 0xcf, 0xc1, 0xff, 0x58, 0xfe, 0x47,
-0x56, 0x76, 0x40, 0xe2, 0xb6, 0x3a, 0xc9, 0x13,
-0x31, 0x66, 0x5b, 0x31, 0x8e, 0x05, 0x21, 0x25,
-0x79, 0xfb, 0x43, 0x2e, 0x0e, 0x3f, 0xa0, 0x55,
-0xc5, 0xe5, 0x24, 0xb9, 0x60, 0xf4, 0x47, 0xca,
-0xa5, 0x0f, 0xb7, 0xd5, 0xc7, 0x49, 0xff, 0x03,
-0x22, 0x5a, 0xac, 0x93, 0xcd, 0x4f, 0x02, 0xfb,
-0xd5, 0x6c, 0xe0, 0x65, 0xb9, 0xd9, 0xfa, 0x70,
-0x2b, 0xde, 0x31, 0xfc, 0xd3, 0xc9, 0xd0, 0x8e,
-0xbc, 0x8c, 0x9c, 0x62, 0xc0, 0x60, 0x41, 0xf4,
-0xaf, 0x73, 0x7d, 0xbf, 0xe9, 0xfe, 0xd8, 0xdd,
-0xdd, 0x77, 0xc3, 0x2f, 0x69, 0x7d, 0x38, 0xd0,
-0x26, 0xbe, 0xa2, 0x30, 0xfc, 0x73, 0x5b, 0xc9,
-0x06, 0x16, 0xcd, 0x3f, 0xee, 0x72, 0xea, 0xc3,
-0x6d, 0xe7, 0xc3, 0x16, 0xec, 0x99, 0x31, 0x81,
-0x45, 0x7f, 0x31, 0x43, 0x0d, 0x05, 0x39, 0xfd,
-0x89, 0xad, 0x3e, 0xae, 0xeb, 0x59, 0xe5, 0x97,
-0xf7, 0xd6, 0xc7, 0x3c, 0x89, 0xd6, 0x93, 0x0c,
-0xff, 0xdc, 0xa8, 0xda, 0xc3, 0x56, 0xae, 0xf3,
-0x61, 0x2b, 0x1e, 0xd3, 0xc4, 0xe9, 0x8b, 0x40,
-0x5e, 0x4a, 0x12, 0xda, 0x26, 0x98, 0x5f, 0xe8,
-0x42, 0x20, 0xc4, 0x36, 0x86, 0x8e, 0xf7, 0x77,
-0xf6, 0x47, 0xda, 0x8a, 0x7a, 0x7b, 0x54, 0x7f,
-0x3d, 0x82, 0xb2, 0xa8, 0x5c, 0xe3, 0xb5, 0xf5,
-0x07, 0x60, 0xfb, 0xaf, 0x4e, 0x7d, 0x2e, 0x66,
-0xe9, 0x74, 0xb6, 0xdb, 0x0a, 0x40, 0x4e, 0xfe,
-0xd9, 0x81, 0x7f, 0x68, 0xbf, 0x5e, 0x47, 0x3d,
-0x54, 0xd0, 0x91, 0x66, 0x0f, 0x7b, 0xe3, 0x42,
-0xf6, 0x78, 0x6d, 0xe7, 0xc3, 0x0a, 0xbb, 0xc9,
-0x05, 0xb6, 0xe9, 0x58, 0xd5, 0x85, 0xc7, 0x94,
-0xb3, 0xf9, 0xa9, 0xcd, 0x35, 0x3f, 0xe9, 0xfe,
-0xd8, 0x95, 0xca, 0x63, 0xdd, 0x2f, 0x03, 0xfb,
-0xbe, 0x06, 0x59, 0x10, 0x7f, 0x9f, 0x7d, 0x8f,
-0xa9, 0x7a, 0x1f, 0xaf, 0x23, 0xde, 0xd9, 0xf2,
-0x23, 0xd2, 0xdf, 0xd0, 0x9e, 0x63, 0x35, 0x20,
-0x77, 0x93, 0xdf, 0xe1, 0x69, 0x02, 0x6a, 0x71,
-0xae, 0xf8, 0xe5, 0xec, 0x8f, 0xf4, 0x44, 0x87,
-0x8f, 0xb2, 0xcf, 0xd0, 0xa7, 0x32, 0x20, 0xa4,
-0x5e, 0x9d, 0xf3, 0x7e, 0x9b, 0x3e, 0x5c, 0xc2,
-0x26, 0x24, 0xec, 0xff, 0x48, 0x3f, 0x5b, 0x48,
-0xb5, 0x70, 0xf5, 0x42, 0x63, 0x5a, 0x86, 0xf2,
-0xe8, 0xc3, 0xef, 0x5f, 0x09, 0x3f, 0x55, 0xb0,
-0x3e, 0x45, 0x54, 0x91, 0x88, 0x60, 0xeb, 0x61,
-0xc6, 0x7b, 0x5a, 0x56, 0xfd, 0x57, 0x5a, 0x1f,
-0x55, 0x7e, 0x1e, 0x26, 0xab, 0x39, 0xda, 0x19,
-0xa3, 0x3c, 0xbe, 0x9f, 0xc3, 0x63, 0x61, 0xfd,
-0xfc, 0x58, 0xd8, 0x3c, 0xfa, 0x70, 0xac, 0xaf,
-0x34, 0xd3, 0x5e, 0x7a, 0x71, 0xa2, 0xaa, 0x8e,
-0x19, 0x9c, 0xff, 0x39, 0x07, 0x83, 0xb4, 0x65,
-0x30, 0xab, 0x3f, 0xb6, 0xc1, 0xff, 0xa0, 0x50,
-0x9c, 0x2e, 0x48, 0xc2, 0x76, 0x32, 0xb7, 0xe2,
-0x30, 0xd4, 0x20, 0xec, 0xf9, 0x2d, 0x3c, 0x19,
-0x59, 0x30, 0x98, 0xd5, 0x1f, 0xbb, 0x97, 0xa4,
-0xce, 0x87, 0xc5, 0xb2, 0xd3, 0x22, 0x5a, 0x0a,
-0xf0, 0xb0, 0x51, 0xa6, 0xbd, 0x1b, 0xcb, 0x11,
-0x13, 0x59, 0xfd, 0xb1, 0x1d, 0xb3, 0x27, 0x47,
-0x7d, 0x81, 0x78, 0x2f, 0x3f, 0x28, 0x84, 0x6d,
-0x44, 0xad, 0xf3, 0x41, 0xcc, 0xbf, 0xaf, 0x5a,
-0x6e, 0x83, 0xc1, 0x48, 0xd4, 0xdc, 0x5f, 0x20,
-0x56, 0xc2, 0x84, 0xd1, 0xd1, 0x68, 0x80, 0x26,
-0x84, 0xd4, 0xf9, 0x68, 0xe6, 0xf3, 0x1d, 0xfd,
-0x01, 0x26, 0x59, 0xf4, 0x77, 0x8f, 0xfc, 0xe8,
-0xa3, 0xd4, 0x15, 0xe1, 0x63, 0xf5, 0xb2, 0xd1,
-0x28, 0x20, 0x7f, 0x7f, 0x48, 0xdd, 0x43, 0xf9,
-0xc2, 0xe3, 0x34, 0xe3, 0xdb, 0xbc, 0x82, 0xc3,
-0x93, 0xb3, 0x3f, 0xb6, 0xf1, 0xfe, 0x0b, 0xf4,
-0xb6, 0x5d, 0x22, 0xb6, 0x05, 0x6b, 0x48, 0xe1,
-0x61, 0x76, 0x05, 0xec, 0xf8, 0x47, 0xcf, 0x3c,
-0x1f, 0x56, 0xae, 0x26, 0xcb, 0xb5, 0x19, 0x46,
-0xe2, 0x46, 0xd3, 0xe2, 0x61, 0x43, 0x1f, 0x9e,
-0xa7, 0x3f, 0x00, 0x83, 0x3d, 0xfe, 0xd5, 0xe4,
-0xa4, 0x76, 0x20, 0x86, 0x1d, 0x14, 0x43, 0xaf,
-0xc0, 0xd3, 0x5d, 0xf3, 0xb1, 0x5e, 0xde, 0x86,
-0x7f, 0xb0, 0x3f, 0x40, 0x34, 0x80, 0xe7, 0xc7,
-0x71, 0xb4, 0x33, 0xe2, 0xa9, 0x14, 0x5f, 0x18,
-0x98, 0xa0, 0x1b, 0x30, 0xff, 0x35, 0x00, 0x1f,
-0x48, 0x4d, 0x89, 0x40, 0xce, 0xfe, 0x00, 0x06,
-0xec, 0x69, 0xfe, 0x4d, 0xed, 0x83, 0x33, 0x9e,
-0x99, 0x9e, 0x9a, 0xb1, 0x61, 0x6d, 0x62, 0x75,
-0x66, 0x7f, 0xc8, 0xf2, 0x51, 0x93, 0x1f, 0xe3,
-0x13, 0x75, 0xc2, 0xbb, 0xbf, 0xf3, 0x9d, 0xfe,
-0x89, 0x54, 0x7f, 0xf2, 0xee, 0x13, 0x7a, 0xdd,
-0xb9, 0x29, 0xfa, 0x03, 0xe0, 0x7e, 0xea, 0x9b,
-0xa1, 0x13, 0x9a, 0x71, 0xbe, 0x12, 0xf9, 0xd7,
-0xd8, 0x53, 0xea, 0xf5, 0x27, 0xe4, 0xcc, 0xfe,
-0x00, 0x3f, 0x71, 0xa0, 0x9d, 0xbf, 0x23, 0x1f,
-0x75, 0xe1, 0x15, 0xd7, 0x06, 0xf2, 0x06, 0x3c,
-0x4b, 0x2b, 0x51, 0x1f, 0x3e, 0x66, 0xf1, 0x3f,
-0x6d, 0x52, 0xca, 0x7b, 0xc7, 0xcd, 0xaf, 0xa9,
-0x29, 0x82, 0x07, 0x0d, 0xf3, 0xc6, 0x77, 0x83,
-0x65, 0xbd, 0x72, 0x75, 0x46, 0x7f, 0x80, 0x82,
-0xdd, 0xf0, 0x8e, 0x03, 0xed, 0xfc, 0x18, 0x0d,
-0x81, 0xcb, 0xc2, 0xdf, 0xd6, 0x4e, 0xf6, 0xd7,
-0xd1, 0xda, 0xfc, 0xfd, 0x21, 0x31, 0x11, 0x86,
-0xc6, 0x76, 0xa1, 0x19, 0xa6, 0xb1, 0xf8, 0xcb,
-0xfb, 0x43, 0x16, 0xe4, 0x39, 0x1f, 0xd6, 0x50,
-0x83, 0x17, 0x6f, 0x47, 0x22, 0xc8, 0xaa, 0x17,
-0xe3, 0xa9, 0x10, 0xe2, 0xc4, 0x3f, 0x46, 0x90,
-0x15, 0x0d, 0xa3, 0xbb, 0x8f, 0xbc, 0x4f, 0x31,
-0xc3, 0xc5, 0xc2, 0x2e, 0xdb, 0x91, 0xe9, 0x99,
-0xf9, 0xaf, 0x72, 0x4b, 0x1f, 0x6e, 0x18, 0xf3,
-0xf6, 0x62, 0x9b, 0x56, 0x06, 0x84, 0xb0, 0x9f,
-0x2a, 0x0a, 0xc5, 0xf3, 0xf6, 0xc7, 0xe6, 0xf5,
-0x62, 0x0c, 0x18, 0x84, 0x10, 0x06, 0xa8, 0x08,
-0x84, 0x96, 0x09, 0xa9, 0x8a, 0xb9, 0x9c, 0xfd,
-0xb1, 0xf1, 0x7c, 0xae, 0x66, 0xb9, 0x98, 0xb6,
-0xc6, 0xa4, 0x71, 0x78, 0xd6, 0x8a, 0xbf, 0x28,
-0x14, 0x3f, 0x6b, 0xef, 0x0f, 0xe0, 0x44, 0x3b,
-0x2f, 0x47, 0x2b, 0x07, 0xc0, 0xa0, 0x7d, 0xd8,
-0x95, 0x0f, 0x60, 0x8a, 0xfe, 0x90, 0xfc, 0x74,
-0x54, 0x34, 0xe4, 0x0b, 0xc8, 0xff, 0xa4, 0xae,
-0xb4, 0x79, 0x1c, 0xfc, 0x8f, 0xe2, 0xe4, 0x7f,
-0x14, 0x99, 0x03, 0x21, 0xf0, 0xc1, 0xe7, 0x28,
-0x19, 0x91, 0xb1, 0x51, 0x76, 0x76, 0x7f, 0x00,
-0x5e, 0xfd, 0x17, 0x4a, 0xe3, 0x1f, 0x61, 0xaf,
-0x9a, 0x46, 0x80, 0x37, 0xcb, 0x59, 0xfd, 0xb1,
-0xed, 0xe8, 0x91, 0xa7, 0xbd, 0xf6, 0xb2, 0xf9,
-0x2f, 0xe2, 0x57, 0xa8, 0xd1, 0x1f, 0x32, 0xcd,
-0xff, 0x94, 0x65, 0xf0, 0x39, 0x0f, 0x30, 0xa3,
-0xeb, 0x02, 0x3c, 0x8d, 0xef, 0xff, 0xe6, 0xe7,
-0x2e, 0x84, 0x67, 0x63, 0x22, 0x2f, 0xcd, 0xff,
-0xec, 0x06, 0xc7, 0xfd, 0x4d, 0x5a, 0x49, 0xb4,
-0x6a, 0x98, 0x66, 0xe2, 0xe1, 0xcc, 0xf3, 0xd1,
-0x6c, 0x68, 0x73, 0x6b, 0x87, 0x78, 0x86, 0x5a,
-0x1d, 0xb3, 0xc7, 0x8d, 0x83, 0xd2, 0x6c, 0xfd,
-0x01, 0xa4, 0x0c, 0xfe, 0x47, 0xde, 0x43, 0xde,
-0xa5, 0x68, 0x30, 0x84, 0xff, 0x0e, 0x1c, 0x52,
-0x79, 0x7f, 0xb9, 0x74, 0x7d, 0x9c, 0xdf, 0xd9,
-0x9f, 0x84, 0x7d, 0x2f, 0x8d, 0xd2, 0xcb, 0xf0,
-0xb0, 0x10, 0xd0, 0x85, 0x20, 0xf9, 0x82, 0xd2,
-0x4b, 0x3d, 0xe8, 0x7f, 0xd2, 0xfc, 0x8f, 0x43,
-0x1f, 0x6e, 0xf6, 0x77, 0x85, 0x03, 0x41, 0x7e,
-0xe5, 0x9f, 0x19, 0x3e, 0xe6, 0x57, 0xd2, 0xfc,
-0x8f, 0xdf, 0xde, 0x1f, 0xf2, 0x00, 0x6d, 0x4a,
-0x7a, 0x57, 0x8b, 0xa7, 0x85, 0x8f, 0x77, 0xf3,
-0x2b, 0x27, 0xe1, 0x6f, 0x69, 0xcb, 0x48, 0x20,
-0xbb, 0x3f, 0x80, 0xcd, 0xdf, 0x2e, 0xf8, 0x1e,
-0x5b, 0xc6, 0xd8, 0x78, 0x84, 0xf9, 0x93, 0x61,
-0x3a, 0xa1, 0x35, 0x1f, 0xf1, 0x66, 0x9c, 0x8f,
-0x66, 0x80, 0x9c, 0x0b, 0x29, 0xb4, 0xe3, 0x19,
-0x65, 0x61, 0x2b, 0x05, 0x7b, 0x26, 0x61, 0x52,
-0x6f, 0x79, 0xd3, 0x11, 0xbf, 0x76, 0x9b, 0xfe,
-0xe7, 0x2e, 0xe3, 0xfd, 0x93, 0xdd, 0x77, 0x1b,
-0x65, 0xfb, 0x03, 0xee, 0x6f, 0x90, 0xdf, 0xd0,
-0xa7, 0xd1, 0xc3, 0x64, 0xe2, 0x1f, 0xc7, 0x78,
-0xdb, 0x42, 0x85, 0x27, 0xd4, 0xd4, 0x95, 0x13,
-0xf4, 0x29, 0x82, 0x8c, 0x90, 0x0d, 0xff, 0x84,
-0xcb, 0x32, 0xd0, 0x8e, 0x5c, 0xc1, 0x76, 0xf7,
-0xa9, 0x0a, 0x20, 0xb6, 0xde, 0x64, 0x03, 0x4f,
-0xe6, 0xd1, 0x87, 0x63, 0x34, 0xe9, 0xeb, 0x3c,
-0x2b, 0x4d, 0x9a, 0xf5, 0x80, 0x17, 0x84, 0x16,
-0xec, 0xaf, 0x7b, 0xda, 0xde, 0x1f, 0xc0, 0xc9,
-0xff, 0x2c, 0xd8, 0x35, 0xe3, 0x3d, 0xf3, 0x09,
-0x6f, 0xc3, 0x38, 0x4d, 0xe1, 0x1f, 0xf3, 0xf9,
-0x19, 0xfd, 0x01, 0x9a, 0x74, 0xcf, 0x07, 0x9d,
-0xe3, 0xaa, 0x75, 0x0c, 0xc4, 0x95, 0x23, 0x2d,
-0x48, 0x04, 0xa5, 0xf9, 0x9f, 0x8c, 0xf3, 0x61,
-0x59, 0xfc, 0x8d, 0x91, 0x33, 0xb0, 0xc4, 0xb8,
-0xf2, 0x36, 0x1c, 0x0a, 0xd7, 0xea, 0x33, 0x9d,
-0xf8, 0x27, 0xf3, 0x7e, 0xca, 0xfe, 0x5e, 0xa9,
-0xfa, 0xb8, 0xe1, 0x18, 0xfb, 0x82, 0xf4, 0xd6,
-0x78, 0x69, 0x86, 0x3e, 0x5c, 0x33, 0xfa, 0x43,
-0xe2, 0xfc, 0x9c, 0x90, 0x09, 0x9b, 0x16, 0x63,
-0xc6, 0x4a, 0x75, 0x1a, 0x37, 0x0e, 0x4a, 0x73,
-0xd6, 0xc7, 0xf1, 0xd3, 0x39, 0x53, 0xe3, 0x3d,
-0xc9, 0x56, 0xfb, 0xdb, 0x78, 0x10, 0xf9, 0xab,
-0x7c, 0x98, 0xe3, 0xbc, 0x51, 0x80, 0x98, 0x74,
-0xf6, 0x47, 0xc2, 0xd1, 0xed, 0xaf, 0xe2, 0xf1,
-0x2b, 0xb1, 0xa0, 0x43, 0x1c, 0x8b, 0xa5, 0x14,
-0xe3, 0x49, 0x6d, 0xdc, 0x10, 0x72, 0xd8, 0xf1,
-0xcf, 0x2b, 0xf0, 0x91, 0xba, 0x88, 0x06, 0x6c,
-0x68, 0x79, 0x2a, 0xfe, 0x87, 0x2a, 0x6f, 0xc2,
-0x73, 0x7a, 0xd5, 0x58, 0x1b, 0x67, 0x7b, 0xc0,
-0x79, 0x2c, 0x48, 0xce, 0xf3, 0x41, 0x58, 0xbc,
-0x57, 0xe6, 0x76, 0xe5, 0xa4, 0x7d, 0x72, 0x9e,
-0x0f, 0x32, 0x57, 0x62, 0xde, 0x3b, 0xb7, 0xec,
-0x27, 0xd7, 0xf9, 0xb0, 0xe5, 0xbf, 0xa5, 0x13,
-0xbb, 0x1a, 0xda, 0x73, 0xd2, 0x3e, 0x39, 0xce,
-0x87, 0x4d, 0x0a, 0xfb, 0x61, 0x32, 0xda, 0xd8,
-0x96, 0x93, 0xf6, 0x49, 0x9f, 0x0f, 0x62, 0xd3,
-0xff, 0xc4, 0xc2, 0x47, 0xa1, 0xb4, 0x3d, 0xa7,
-0xec, 0x27, 0x27, 0xff, 0xf3, 0x29, 0xe8, 0xe8,
-0xbe, 0x3e, 0x3c, 0xf5, 0xfb, 0xdb, 0xce, 0x87,
-0x15, 0xbe, 0x40, 0xe8, 0x6d, 0x6a, 0x41, 0x4e,
-0xda, 0x27, 0xf7, 0xf9, 0x20, 0xca, 0x46, 0x3a,
-0x27, 0xe8, 0x4a, 0x9d, 0x06, 0x92, 0xc4, 0x46,
-0xaf, 0x53, 0xea, 0x7f, 0x64, 0x38, 0x02, 0x41,
-0x85, 0xb7, 0x05, 0xf8, 0x10, 0x66, 0x8d, 0x78,
-0x1b, 0xd1, 0x10, 0x9a, 0xfa, 0xf3, 0xe8, 0x7f,
-0x8a, 0xfb, 0xd8, 0xfc, 0xb4, 0xa8, 0xd7, 0x8e,
-0x99, 0xb4, 0xcf, 0x07, 0x9c, 0x08, 0x72, 0xce,
-0x8f, 0xbd, 0x3f, 0x12, 0x5b, 0x84, 0xae, 0xba,
-0x23, 0xa9, 0xf9, 0x6f, 0x4c, 0xae, 0x8c, 0xb7,
-0x9e, 0x85, 0xcc, 0xf3, 0x53, 0x9c, 0xf8, 0xe7,
-0x29, 0xa8, 0xd4, 0x8b, 0xd1, 0x9f, 0x3c, 0x67,
-0xa4, 0xbd, 0x2e, 0xc1, 0xbf, 0x64, 0xe9, 0x7f,
-0xcc, 0xe7, 0xf7, 0xc3, 0x43, 0xb0, 0x8f, 0xde,
-0x96, 0xe4, 0x7c, 0xd7, 0x73, 0x74, 0x1e, 0x1a,
-0x57, 0xb0, 0x2c, 0xce, 0x31, 0x5e, 0x5b, 0x7f,
-0xa4, 0x6d, 0xc7, 0xa1, 0x37, 0x1c, 0x1e, 0x9b,
-0x97, 0xea, 0xf7, 0xa2, 0x43, 0xae, 0x7e, 0x0b,
-0xf6, 0xfe, 0x48, 0x7d, 0x70, 0x45, 0xeb, 0xc5,
-0xfe, 0x90, 0x88, 0x7f, 0x1a, 0x29, 0x37, 0x96,
-0x67, 0xf0, 0x3f, 0x69, 0xfc, 0xb3, 0x1c, 0x92,
-0xfa, 0x18, 0x34, 0x95, 0x5a, 0xf1, 0x28, 0xa7,
-0x1e, 0xc3, 0xce, 0xff, 0xbc, 0xa9, 0x1d, 0x55,
-0xf7, 0x99, 0x6a, 0x96, 0xba, 0xdc, 0xfb, 0x7d,
-0x7b, 0xfe, 0xeb, 0x26, 0xd8, 0xac, 0xee, 0xbc,
-0xd9, 0x50, 0x9b, 0x10, 0x9f, 0x11, 0x88, 0x1f,
-0x9d, 0xf2, 0x7c, 0x90, 0xcd, 0x82, 0x2f, 0x1d,
-0xa6, 0x3f, 0xb1, 0x3f, 0x40, 0x21, 0xf6, 0x87,
-0x34, 0xf9, 0x90, 0x58, 0x46, 0x62, 0x28, 0x4b,
-0xff, 0xd3, 0xc7, 0xf0, 0x4f, 0x42, 0xdd, 0x27,
-0x07, 0x8c, 0xd1, 0xd5, 0xe1, 0xe9, 0x6f, 0xd9,
-0xe3, 0xb5, 0x9f, 0x0f, 0x7b, 0x9e, 0x5c, 0x46,
-0xfd, 0x0f, 0x1f, 0x1d, 0xef, 0x86, 0x34, 0x23,
-0x7b, 0xbc, 0x69, 0xfc, 0xb3, 0x5d, 0x38, 0x0f,
-0xef, 0x75, 0xd7, 0xaf, 0x4d, 0xa1, 0x9d, 0xda,
-0xf6, 0x9c, 0xf3, 0xe3, 0xec, 0x8f, 0x8d, 0x6d,
-0x91, 0xba, 0x39, 0xfe, 0x51, 0x03, 0x82, 0x9d,
-0xf6, 0xc9, 0x79, 0x3e, 0xc8, 0x0b, 0xb0, 0x03,
-0xaa, 0x97, 0xad, 0x56, 0x4a, 0x79, 0xf4, 0xe1,
-0xc3, 0x14, 0xb2, 0xf9, 0x2e, 0x1b, 0xfe, 0x91,
-0x0e, 0xaa, 0x73, 0x1d, 0x6a, 0x9f, 0x1c, 0xf3,
-0x99, 0xe6, 0x7f, 0xbe, 0xfb, 0x7b, 0x78, 0x1b,
-0x7e, 0xcc, 0xfe, 0xbe, 0xa1, 0x29, 0xf8, 0x1c,
-0x5b, 0x7f, 0xc8, 0xa5, 0xd5, 0xea, 0x07, 0x74,
-0x71, 0x28, 0xe7, 0x6d, 0x39, 0xf0, 0x4f, 0x4d,
-0xea, 0x7c, 0x58, 0x8f, 0x39, 0xff, 0x9e, 0x5c,
-0xf3, 0x6f, 0xd7, 0xff, 0x2c, 0x66, 0xd8, 0xb4,
-0x8a, 0xa6, 0x68, 0x9f, 0x3a, 0xea, 0x8a, 0xd5,
-0x4d, 0xd5, 0x1f, 0xc0, 0x5f, 0xb0, 0x4c, 0xeb,
-0xa5, 0xfe, 0x32, 0x0b, 0xff, 0xe4, 0x74, 0xd4,
-0xe9, 0xf3, 0x61, 0x63, 0x42, 0x05, 0x8b, 0x5f,
-0xf3, 0x84, 0x22, 0xfc, 0x5a, 0x17, 0xd1, 0x4a,
-0xc7, 0xb1, 0x1a, 0x69, 0xfd, 0xcf, 0x32, 0xf3,
-0xf9, 0xbb, 0xe5, 0x6b, 0x18, 0xfe, 0xe9, 0x53,
-0xe7, 0x6f, 0xa8, 0x3a, 0x0d, 0x93, 0x7b, 0x3e,
-0x73, 0xde, 0x93, 0xb3, 0x3f, 0x80, 0xd5, 0x9f,
-0x44, 0x2e, 0xde, 0x8d, 0xa2, 0x0e, 0x8b, 0x66,
-0x3f, 0x61, 0xf0, 0x3f, 0x66, 0x07, 0xe9, 0xd7,
-0x21, 0xe3, 0x7c, 0x10, 0xbd, 0xe0, 0x9c, 0x36,
-0x11, 0xfd, 0x46, 0x75, 0xc9, 0x78, 0xd5, 0x59,
-0x6d, 0x72, 0x7b, 0xcb, 0x70, 0x49, 0x5f, 0x8e,
-0xfe, 0x36, 0xf6, 0xf3, 0x61, 0xa3, 0xeb, 0x37,
-0x45, 0x2b, 0x1f, 0x63, 0xfe, 0xe7, 0x38, 0x1c,
-0x88, 0xd6, 0x26, 0xe5, 0x46, 0x74, 0xa4, 0x71,
-0x0e, 0x7b, 0x72, 0xf1, 0x3f, 0xda, 0x5e, 0x6d,
-0x87, 0x5a, 0xc9, 0x69, 0x6a, 0x7a, 0x80, 0xed,
-0x5e, 0xf1, 0x3c, 0x14, 0x7a, 0xa0, 0xc0, 0x39,
-0xde, 0xb4, 0xde, 0x46, 0x2d, 0xd3, 0xb0, 0xfb,
-0x71, 0xf4, 0xea, 0xa0, 0x71, 0x3e, 0x23, 0x56,
-0xc3, 0xb1, 0x1d, 0x59, 0xde, 0xfe, 0x00, 0x6b,
-0xcb, 0xff, 0x09, 0x7e, 0x87, 0x85, 0x62, 0x18,
-0x1d, 0xd0, 0xbb, 0x96, 0xf0, 0x7a, 0x7f, 0xc9,
-0xe9, 0x3f, 0xed, 0xe7, 0xc3, 0x8e, 0x20, 0xcd,
-0x1e, 0xc2, 0x5f, 0xa5, 0x09, 0x21, 0x4f, 0x3c,
-0x4a, 0xe3, 0x1f, 0x5d, 0x61, 0x20, 0x47, 0xee,
-0xcd, 0x4d, 0xfb, 0xd8, 0xf8, 0x9f, 0x34, 0xfe,
-0xf9, 0x6b, 0x38, 0x1c, 0xf6, 0xa5, 0xe2, 0x97,
-0x90, 0x2f, 0xfe, 0xda, 0xf0, 0x0f, 0x1e, 0x0b,
-0xe2, 0x0b, 0xa7, 0xd2, 0x34, 0x7f, 0x9d, 0xfb,
-0x7e, 0xbb, 0xfe, 0x07, 0x94, 0xc3, 0xb2, 0xaa,
-0xd5, 0x04, 0xc9, 0x4b, 0xb4, 0x57, 0xf5, 0x0c,
-0xe0, 0xc1, 0xe8, 0xb2, 0x79, 0x42, 0x4d, 0x36,
-0xff, 0x43, 0x8b, 0x79, 0x7f, 0x12, 0xad, 0x04,
-0xcf, 0xcb, 0x9b, 0x54, 0x97, 0xf0, 0xfe, 0x33,
-0x5d, 0x13, 0x55, 0xce, 0x46, 0x34, 0xf6, 0xfe,
-0x48, 0x43, 0x38, 0x28, 0x3e, 0x5e, 0xec, 0x86,
-0x3d, 0xe0, 0x3d, 0x2f, 0x8e, 0x26, 0x27, 0xcb,
-0x9c, 0xf9, 0x8b, 0x5c, 0xfa, 0x9f, 0x94, 0xec,
-0xf9, 0xe5, 0xed, 0x55, 0xcd, 0xcc, 0xa8, 0x4f,
-0x7a, 0x93, 0x6c, 0x1a, 0x4f, 0xa8, 0x75, 0xb2,
-0xf7, 0x15, 0x5b, 0x7f, 0x6c, 0xae, 0xff, 0xa1,
-0x77, 0xd8, 0xd0, 0xce, 0x76, 0xf8, 0x19, 0x33,
-0x6a, 0x92, 0xee, 0x3d, 0xe4, 0x7d, 0xed, 0xa7,
-0xd1, 0x9a, 0x31, 0x66, 0xc4, 0xd3, 0xe7, 0xc3,
-0x66, 0xe9, 0x7f, 0xf0, 0xfc, 0x2f, 0x6c, 0xd3,
-0xe7, 0xae, 0x24, 0xba, 0x42, 0x41, 0x95, 0xdc,
-0xd3, 0x49, 0x5d, 0x0e, 0xfd, 0x4f, 0x68, 0x1d,
-0x36, 0x9e, 0xea, 0x5f, 0xb1, 0x37, 0x75, 0x50,
-0x88, 0x3b, 0xf6, 0x90, 0xd1, 0x6f, 0x9c, 0x7d,
-0xbf, 0x71, 0x6b, 0x3d, 0x2c, 0xe5, 0xfc, 0x8f,
-0xd9, 0x4f, 0x0c, 0x97, 0x4d, 0x05, 0x4f, 0xc4,
-0xd4, 0xe1, 0xc1, 0xf7, 0x63, 0x80, 0x1a, 0x10,
-0xef, 0x90, 0xb8, 0xd0, 0xf2, 0x3f, 0x71, 0x27,
-0xff, 0xc3, 0x8c, 0x13, 0xa6, 0x91, 0x14, 0x53,
-0x47, 0xcd, 0xc6, 0x9c, 0xe7, 0xc3, 0x9a, 0x22,
-0xab, 0x14, 0xd1, 0x14, 0x4d, 0xc9, 0xae, 0x3c,
-0xbb, 0x44, 0x5d, 0xd1, 0xd1, 0x23, 0x29, 0x8e,
-0xfe, 0xd8, 0x99, 0xfa, 0x9f, 0x68, 0xca, 0x28,
-0x8e, 0x11, 0xfc, 0x7e, 0x1b, 0xfa, 0x8b, 0x63,
-0xe2, 0xff, 0x9a, 0x42, 0xff, 0xa3, 0x30, 0xe3,
-0xb0, 0xe1, 0x88, 0x74, 0xa3, 0xe0, 0x41, 0xb1,
-0xf5, 0xc7, 0xb6, 0xf4, 0x3f, 0x56, 0xda, 0x6b,
-0xb5, 0x91, 0x08, 0xe3, 0x7a, 0x18, 0xe5, 0x91,
-0xd8, 0x1c, 0xec, 0x8f, 0xbd, 0x21, 0x5b, 0xff,
-0x83, 0x68, 0xa7, 0x17, 0x9a, 0x46, 0xdc, 0x4b,
-0x0a, 0x07, 0x35, 0x3c, 0xaf, 0xc7, 0x13, 0x14,
-0x8f, 0x80, 0x1e, 0x0b, 0xaa, 0xec, 0xfd, 0x6d,
-0xfd, 0xb1, 0xcb, 0x9f, 0x01, 0xdb, 0xf9, 0xb9,
-0x46, 0x7f, 0x6c, 0x63, 0x06, 0x3e, 0x30, 0xcf,
-0x17, 0x1e, 0xb1, 0xe7, 0xbf, 0x9c, 0xfa, 0x1f,
-0xbe, 0x4d, 0xdb, 0x63, 0x74, 0xb0, 0xef, 0x13,
-0x55, 0x38, 0x41, 0x1b, 0xc0, 0x1b, 0x75, 0xd7,
-0xe4, 0xd5, 0xff, 0xd8, 0x0c, 0x43, 0x28, 0x58,
-0x89, 0xe7, 0x33, 0xd6, 0x55, 0x9b, 0xcf, 0x57,
-0xb5, 0x1f, 0xca, 0x99, 0xe8, 0xce, 0x32, 0x4a,
-0x61, 0x1b, 0x9d, 0xa3, 0xba, 0x2b, 0x88, 0x9a,
-0xee, 0xbf, 0xe4, 0xac, 0xcf, 0x0d, 0xe8, 0x3d,
-0x41, 0x9e, 0x8f, 0x0e, 0x98, 0xcf, 0xe7, 0xe7,
-0x0f, 0x96, 0x5a, 0xe7, 0xa3, 0x25, 0xcb, 0x47,
-0xf0, 0xfc, 0xf7, 0xf4, 0xf9, 0x20, 0xde, 0xdd,
-0x16, 0xec, 0x71, 0xfb, 0xe1, 0xa4, 0xa1, 0xff,
-0x59, 0x9c, 0x43, 0xff, 0x33, 0x23, 0x15, 0x7d,
-0x3a, 0xd2, 0x61, 0x68, 0x0c, 0x2e, 0x49, 0x2d,
-0xe0, 0xd5, 0xa6, 0xea, 0x0f, 0x50, 0x90, 0x2a,
-0x7b, 0x37, 0xea, 0xc1, 0xdf, 0x36, 0x84, 0xb2,
-0x91, 0x2c, 0xfd, 0xcf, 0xcc, 0x28, 0xd8, 0xc2,
-0xee, 0x6b, 0x66, 0xfe, 0x25, 0x55, 0x9f, 0xae,
-0xda, 0xf5, 0x3f, 0xd2, 0x0d, 0xf6, 0xee, 0x3d,
-0x45, 0x56, 0x7d, 0x6e, 0x94, 0x9c, 0x87, 0x7f,
-0xc4, 0x13, 0xe8, 0x86, 0xc8, 0xbd, 0x19, 0xfa,
-0x1f, 0x67, 0xf4, 0x1f, 0x4e, 0x09, 0x81, 0x22,
-0xaf, 0xc6, 0x36, 0xd6, 0xce, 0x5f, 0xee, 0xbf,
-0xf9, 0x08, 0x71, 0xe8, 0x7f, 0x78, 0x1b, 0x4c,
-0x33, 0xda, 0x16, 0xa3, 0x91, 0x30, 0x84, 0x40,
-0xd8, 0x28, 0xb2, 0x59, 0xf6, 0x1c, 0x11, 0x1f,
-0x48, 0xf3, 0x3f, 0x59, 0x7a, 0x98, 0xa1, 0xcc,
-0xf8, 0x3e, 0x2d, 0x2a, 0x4e, 0xa5, 0xff, 0x49,
-0x0b, 0x81, 0xc4, 0x35, 0xf4, 0xa8, 0x5a, 0x17,
-0x2a, 0x8e, 0x76, 0xde, 0x64, 0xe9, 0x0f, 0xb3,
-0xf4, 0x3f, 0x56, 0x7f, 0xa4, 0x99, 0x5d, 0xbe,
-0x4a, 0x14, 0x02, 0x29, 0x72, 0x17, 0x99, 0x6d,
-0xcd, 0xbf, 0x43, 0xff, 0x63, 0x1a, 0x12, 0x67,
-0x84, 0xa6, 0x93, 0x65, 0x5a, 0x87, 0x56, 0xad,
-0x15, 0x29, 0x24, 0x34, 0x85, 0xfe, 0x67, 0x3b,
-0x33, 0x9e, 0x30, 0x19, 0x36, 0x9c, 0x58, 0x36,
-0xc3, 0x85, 0xb9, 0xcf, 0x87, 0xb5, 0x0c, 0x6c,
-0x8b, 0x84, 0x0c, 0x9e, 0x82, 0x1d, 0xd1, 0x99,
-0xc7, 0x58, 0x6b, 0xcb, 0x7f, 0x4d, 0xd1, 0x2f,
-0x62, 0x80, 0x7c, 0x00, 0x87, 0xb4, 0x12, 0xc5,
-0x91, 0xff, 0xca, 0xd2, 0xff, 0x98, 0x06, 0xf0,
-0x3f, 0xc4, 0x62, 0x58, 0x49, 0x67, 0xb8, 0x6c,
-0xf9, 0xaf, 0xdd, 0x59, 0x68, 0xc7, 0x66, 0xf0,
-0x46, 0x91, 0x31, 0xe2, 0x52, 0xac, 0xf5, 0x90,
-0x43, 0x7f, 0x98, 0x36, 0x48, 0x27, 0xf8, 0x75,
-0x7f, 0xd0, 0xe5, 0xb2, 0xfc, 0x8f, 0x4d, 0xff,
-0x93, 0x0d, 0x7b, 0x4e, 0xf1, 0xef, 0x97, 0x41,
-0x05, 0xbf, 0xb5, 0xde, 0xba, 0xbb, 0xbf, 0xa2,
-0xd8, 0xd0, 0xce, 0xb5, 0x0e, 0xd8, 0x73, 0x1c,
-0x7e, 0x49, 0x17, 0x27, 0x3d, 0x8b, 0xc5, 0x1a,
-0xf3, 0xf5, 0xb3, 0xf5, 0x3f, 0x39, 0x0d, 0xdb,
-0xf9, 0xb0, 0x66, 0x7f, 0x00, 0xb3, 0x2d, 0xd2,
-0xaa, 0xf1, 0x19, 0x57, 0xe4, 0x54, 0xfe, 0x22,
-0x9d, 0xff, 0x4a, 0xf3, 0x6f, 0xca, 0x63, 0x9a,
-0xfd, 0xb5, 0xf1, 0x34, 0x10, 0xc4, 0x3f, 0x46,
-0xa3, 0xa7, 0xf0, 0x81, 0x0a, 0x03, 0xff, 0xa4,
-0xcf, 0x87, 0xa5, 0x39, 0xfc, 0x15, 0x03, 0x42,
-0xce, 0xc6, 0x50, 0xf6, 0xfe, 0xd8, 0xd9, 0xfa,
-0x1f, 0x34, 0xf8, 0x09, 0x50, 0x2f, 0x21, 0xf5,
-0x71, 0x9e, 0x45, 0xfc, 0x4c, 0xfd, 0x8f, 0x35,
-0x3a, 0x0c, 0x64, 0xa5, 0xc8, 0xf0, 0xf0, 0x88,
-0xf3, 0x3e, 0x4c, 0x74, 0xdd, 0x3d, 0xe4, 0x7d,
-0xd6, 0xde, 0x1f, 0x3b, 0x53, 0xff, 0xb3, 0x35,
-0x3e, 0x03, 0x8d, 0xd9, 0xfc, 0x0a, 0xfd, 0x50,
-0x66, 0xc0, 0x60, 0x5f, 0x0e, 0xfd, 0x8f, 0x3d,
-0xfa, 0xdb, 0xae, 0xb4, 0xc0, 0x42, 0xdd, 0x63,
-0xc7, 0x3f, 0x3b, 0x32, 0xf9, 0x1f, 0x77, 0xbc,
-0x70, 0xd4, 0x3a, 0x31, 0x44, 0x4a, 0x75, 0x2c,
-0x74, 0xea, 0x7f, 0x32, 0xee, 0xf7, 0x39, 0xf0,
-0x8f, 0x2f, 0xe3, 0x7c, 0x90, 0xb4, 0xfe, 0x87,
-0xcf, 0x0f, 0x6f, 0x8b, 0x44, 0xcd, 0x46, 0xbe,
-0x32, 0xef, 0xe8, 0x92, 0xa1, 0x7f, 0x96, 0xd3,
-0xe3, 0x15, 0xee, 0x1e, 0x5c, 0xb5, 0xbf, 0x75,
-0x0f, 0xea, 0x9f, 0xf9, 0x15, 0x6d, 0xa2, 0xbd,
-0xee, 0xd5, 0x2d, 0x76, 0xfc, 0xb3, 0xb3, 0xdc,
-0x89, 0xee, 0x5e, 0xea, 0x39, 0xd7, 0xf9, 0x1e,
-0x3f, 0x31, 0x16, 0xaf, 0xf0, 0x46, 0x49, 0xf9,
-0xce, 0x47, 0xbb, 0x43, 0xb0, 0x16, 0xd2, 0xdf,
-0x4d, 0x51, 0xff, 0x75, 0xb6, 0x28, 0x83, 0xed,
-0xb9, 0x6a, 0x6a, 0xfe, 0x27, 0xbd, 0x0c, 0x2a,
-0xd2, 0x03, 0x27, 0xeb, 0xf2, 0xf2, 0x3f, 0xe9,
-0xfc, 0x97, 0xf4, 0x07, 0xf0, 0x3f, 0xd8, 0x1f,
-0xfb, 0xb0, 0x89, 0x96, 0x0d, 0x21, 0x74, 0x8e,
-0xfa, 0xa3, 0x3c, 0xfd, 0xb1, 0xf3, 0xf3, 0x3f,
-0xf9, 0xf3, 0x5f, 0xc6, 0x36, 0x24, 0xa3, 0x5f,
-0x59, 0x8e, 0xfe, 0xd8, 0xfb, 0xec, 0xaf, 0x3d,
-0xf5, 0xf9, 0xb0, 0xd9, 0xdf, 0x8b, 0xc1, 0x57,
-0x14, 0xe6, 0xe6, 0x7f, 0x6c, 0xdd, 0x20, 0x0d,
-0x03, 0xf9, 0x90, 0xe2, 0xbc, 0xfc, 0x0f, 0x3f,
-0x1f, 0x0d, 0xd9, 0x9e, 0xe3, 0xfa, 0x87, 0x94,
-0x97, 0x7d, 0x9d, 0xd5, 0x7f, 0x1d, 0xcf, 0x5f,
-0xff, 0xf5, 0x87, 0xcc, 0x4f, 0x8e, 0xfe, 0xd8,
-0x8b, 0xc5, 0x29, 0x1c, 0x57, 0xce, 0xfc, 0xd7,
-0xac, 0xfc, 0x8e, 0xd4, 0x9e, 0xff, 0xb2, 0xf2,
-0x7d, 0x99, 0x42, 0xe8, 0xdc, 0xfc, 0x4f, 0x99,
-0xd5, 0x16, 0xdb, 0x93, 0xdf, 0xb1, 0xe7, 0xea,
-0x8f, 0x4d, 0xb2, 0x1a, 0x65, 0xe7, 0xe2, 0x7f,
-0x1c, 0xf9, 0xaf, 0xc5, 0xe9, 0x78, 0x54, 0x9b,
-0x97, 0xff, 0x49, 0x45, 0x37, 0x3c, 0xf6, 0x1d,
-0xd3, 0x5e, 0xee, 0x4f, 0xe2, 0x7f, 0xb2, 0xf4,
-0xcf, 0x53, 0xf7, 0x87, 0xb4, 0xf7, 0x47, 0x9a,
-0xa2, 0x3f, 0xa4, 0xb9, 0x1e, 0x9c, 0xfd, 0x91,
-0xf2, 0x19, 0x39, 0xf3, 0x5f, 0x38, 0xba, 0xd9,
-0xb9, 0xf5, 0x3f, 0x79, 0xcf, 0x47, 0xcb, 0x63,
-0x38, 0xf3, 0x5f, 0xaf, 0x19, 0x30, 0xe9, 0x3c,
-0x87, 0x85, 0xc5, 0x46, 0x5b, 0xec, 0x0c, 0xfe,
-0x27, 0x8d, 0x7f, 0x8c, 0xfc, 0x17, 0xa7, 0x7d,
-0x48, 0x37, 0xc7, 0x3f, 0x2e, 0x35, 0x65, 0xe4,
-0x39, 0x1f, 0x36, 0xcd, 0x6e, 0x61, 0x37, 0xa4,
-0x22, 0x2e, 0xf3, 0x9e, 0x8a, 0xff, 0xb1, 0xb7,
-0x79, 0xb1, 0x60, 0xcf, 0x54, 0xe7, 0xc3, 0x1a,
-0x22, 0x6d, 0x62, 0xc0, 0xda, 0x22, 0x2e, 0x6b,
-0xcf, 0xcf, 0xff, 0xd8, 0xf1, 0xcf, 0x6b, 0x79,
-0xf9, 0x9f, 0xbc, 0xe7, 0xa3, 0x99, 0x46, 0x43,
-0x5e, 0xfd, 0x4f, 0x2a, 0xff, 0xb5, 0x9b, 0x24,
-0x0c, 0x23, 0x6c, 0x1a, 0xf9, 0xcf, 0x87, 0xc5,
-0x8f, 0xa2, 0xc2, 0xfc, 0x3a, 0xd4, 0x74, 0xbc,
-0xb6, 0xe9, 0x7f, 0xd2, 0xfc, 0x4f, 0xea, 0xb3,
-0xbd, 0x25, 0xf5, 0xb5, 0x8a, 0xe1, 0x9c, 0xfa,
-0x1f, 0xf3, 0xf9, 0xbc, 0x3f, 0x76, 0xc7, 0x8d,
-0x67, 0x30, 0xed, 0x05, 0x1f, 0x47, 0x18, 0xec,
-0x59, 0xcb, 0xf1, 0xcf, 0x67, 0x50, 0xff, 0x9c,
-0xe7, 0x7c, 0x58, 0x0e, 0x03, 0xa2, 0xa6, 0xf7,
-0x88, 0xf1, 0xc0, 0x97, 0x81, 0x7f, 0x1c, 0xe7,
-0xc3, 0xa6, 0xf2, 0x5f, 0x67, 0xe5, 0x7b, 0xd0,
-0x18, 0x11, 0xf1, 0x7c, 0xd8, 0x25, 0x8e, 0xfe,
-0x90, 0x7a, 0x66, 0xfe, 0x6b, 0xc0, 0xdd, 0xce,
-0xbc, 0x07, 0x1f, 0x5d, 0x98, 0x94, 0xd0, 0xcc,
-0xf7, 0xcf, 0x91, 0xff, 0x6a, 0xbf, 0x2a, 0x65,
-0x18, 0x85, 0xab, 0xf3, 0xf4, 0x9e, 0x3c, 0xf8,
-0x87, 0xd3, 0x3e, 0x7c, 0x1b, 0x2b, 0x18, 0xf3,
-0xe9, 0xca, 0x76, 0x44, 0xce, 0xf3, 0xd1, 0x78,
-0xd8, 0x8a, 0x8a, 0xc6, 0xc0, 0xff, 0x22, 0x16,
-0x0a, 0x28, 0x13, 0xd2, 0x35, 0x6c, 0x98, 0x7f,
-0x6a, 0xd3, 0xff, 0x98, 0xef, 0x63, 0xf5, 0xc7,
-0x76, 0xcc, 0x4f, 0x46, 0x05, 0x50, 0xae, 0xfc,
-0xd7, 0x10, 0xf7, 0xde, 0x4b, 0x70, 0x9b, 0x3f,
-0x35, 0xff, 0x93, 0xc2, 0x3f, 0xd1, 0xd2, 0x54,
-0xb4, 0x8a, 0xd9, 0x03, 0xd9, 0xbb, 0xb9, 0xf4,
-0x3f, 0x4e, 0xfd, 0x73, 0xec, 0x13, 0xf8, 0x1f,
-0x8f, 0xa1, 0xb6, 0x52, 0x42, 0x83, 0x46, 0x22,
-0x8c, 0xad, 0xb7, 0xca, 0xd4, 0x46, 0x75, 0x90,
-0x2b, 0x64, 0xb2, 0xea, 0xbf, 0xde, 0xd5, 0xf8,
-0x78, 0xdf, 0xc3, 0xec, 0xe7, 0x90, 0x3b, 0xf6,
-0xa7, 0xef, 0x9d, 0x60, 0xc6, 0x40, 0x3e, 0xfe,
-0x27, 0x3d, 0xde, 0x24, 0x43, 0x3b, 0xc7, 0x8c,
-0x42, 0x66, 0x53, 0xff, 0xf3, 0x7e, 0x2e, 0xfd,
-0xcf, 0xfb, 0x19, 0x68, 0xf9, 0x2c, 0xbc, 0x1e,
-0x31, 0x80, 0x90, 0xfc, 0x5c, 0x0e, 0xfc, 0x93,
-0x85, 0x76, 0x4c, 0xa3, 0x34, 0x0f, 0xfe, 0x79,
-0x3c, 0x4f, 0x7c, 0x9f, 0x1a, 0xff, 0x84, 0x46,
-0x61, 0x89, 0x94, 0x32, 0x8c, 0x2b, 0x90, 0x07,
-0xff, 0xbc, 0x6b, 0xe7, 0x67, 0xec, 0x34, 0x69,
-0x5e, 0xfc, 0x73, 0x9d, 0x33, 0xac, 0x2b, 0x7f,
-0x2c, 0xfe, 0x99, 0x2a, 0xff, 0x95, 0x85, 0x87,
-0xc9, 0xa8, 0x62, 0xbf, 0xd2, 0xff, 0xc9, 0xf8,
-0x47, 0xa9, 0x9f, 0x2a, 0xff, 0x95, 0x0d, 0x03,
-0xa8, 0x01, 0x84, 0x42, 0x78, 0x62, 0xc8, 0xfc,
-0x33, 0x22, 0xc3, 0x3f, 0xd6, 0xfe, 0xce, 0x3a,
-0x1f, 0xc4, 0x2c, 0x7b, 0x7f, 0x99, 0x27, 0xc2,
-0x52, 0x27, 0xc6, 0x2a, 0x78, 0x50, 0xc8, 0xb4,
-0xa9, 0xf0, 0x4f, 0x8a, 0x36, 0x54, 0x3e, 0x11,
-0xff, 0xe4, 0x9e, 0x9f, 0xbf, 0xcb, 0x85, 0x7f,
-0xde, 0x72, 0x7a, 0x9b, 0x50, 0x96, 0xff, 0xf4,
-0x4d, 0xa5, 0xff, 0xe1, 0xc3, 0x9c, 0x12, 0xff,
-0x64, 0xaf, 0xb7, 0xde, 0x0c, 0x3c, 0xe9, 0xc4,
-0x3f, 0x0e, 0xfd, 0x8f, 0x3b, 0x97, 0xe1, 0xc4,
-0x3f, 0x23, 0xb9, 0xf7, 0xe3, 0x53, 0xe3, 0x9f,
-0x29, 0xf1, 0xc0, 0x27, 0xe2, 0x1f, 0xe1, 0x8f,
-0xc4, 0x3f, 0xd2, 0x7f, 0x10, 0xfe, 0x31, 0x8d,
-0x42, 0xab, 0xf0, 0xed, 0x93, 0xf0, 0xcf, 0x75,
-0x59, 0xe3, 0xbd, 0x6e, 0x2a, 0xfd, 0x8f, 0x69,
-0x60, 0x63, 0xc0, 0xd6, 0xdc, 0xf9, 0x2f, 0x21,
-0x83, 0xff, 0xe1, 0xfa, 0x9f, 0x3b, 0xf2, 0xe8,
-0x9f, 0x33, 0xce, 0x07, 0xc9, 0x3b, 0xde, 0x7c,
-0xfa, 0x9f, 0xa5, 0x9f, 0x94, 0xff, 0x2a, 0xb7,
-0x9a, 0x60, 0xa7, 0xdf, 0x5f, 0xba, 0x00, 0x73,
-0xff, 0x10, 0xfc, 0x63, 0x33, 0x4a, 0xfe, 0x48,
-0xfc, 0xd3, 0xfc, 0x49, 0xf8, 0x27, 0x8b, 0xff,
-0x11, 0xa7, 0xc6, 0x3f, 0x53, 0xe6, 0xdf, 0xf3,
-0x9f, 0x0f, 0x9b, 0xc3, 0xe8, 0x59, 0xef, 0x9b,
-0xe2, 0x7c, 0xd8, 0x5c, 0x86, 0x30, 0x85, 0xfe,
-0x27, 0x37, 0xff, 0xe3, 0x38, 0x1f, 0xc4, 0x91,
-0xbf, 0x30, 0x0e, 0xba, 0x32, 0x03, 0xd9, 0x44,
-0x14, 0x1b, 0x65, 0xcf, 0xc8, 0xc2, 0x3f, 0xe6,
-0xdb, 0x06, 0x92, 0xb3, 0xef, 0x22, 0xa7, 0x84,
-0xb7, 0x8c, 0x63, 0x4d, 0x4e, 0xeb, 0x07, 0x3e,
-0x51, 0xff, 0xb3, 0xe2, 0x9b, 0x85, 0xf6, 0xf1,
-0xaa, 0x19, 0xfa, 0x1f, 0x35, 0x53, 0xff, 0xe3,
-0xb2, 0x85, 0xf5, 0x3c, 0xf8, 0x27, 0x63, 0x74,
-0x55, 0x19, 0x8c, 0x90, 0x3b, 0x27, 0xfe, 0x31,
-0xef, 0x2f, 0x31, 0x85, 0xaf, 0x46, 0x46, 0x2c,
-0x2f, 0xfe, 0xc9, 0xd8, 0xc6, 0x2e, 0xf9, 0x24,
-0xfc, 0x33, 0xa5, 0x7e, 0x23, 0xff, 0xf9, 0xb0,
-0x4e, 0x43, 0xc8, 0x8d, 0x7f, 0x9c, 0xfc, 0x4f,
-0x64, 0xd0, 0x40, 0x44, 0xc1, 0x3a, 0x06, 0x84,
-0xaa, 0x32, 0xfb, 0x43, 0x16, 0xaf, 0x73, 0x8c,
-0xf7, 0x05, 0xef, 0x3e, 0xf1, 0xbd, 0xb6, 0x94,
-0xfe, 0x76, 0x94, 0x4e, 0xc8, 0x99, 0xfd, 0x21,
-0xaf, 0xcd, 0x31, 0x5e, 0xa4, 0x7d, 0xcc, 0x2b,
-0xf7, 0xe8, 0xd7, 0x39, 0xf1, 0xcf, 0x45, 0x6d,
-0x30, 0xba, 0xa8, 0xda, 0x73, 0x54, 0xac, 0x63,
-0x46, 0xbd, 0xea, 0x39, 0x21, 0x5e, 0x92, 0x26,
-0xa1, 0x1e, 0xdb, 0x8a, 0xe6, 0xe4, 0x7f, 0x46,
-0x90, 0x64, 0x96, 0xf1, 0xb4, 0x38, 0xda, 0x8d,
-0xa7, 0x51, 0x6f, 0x27, 0xef, 0xc8, 0x87, 0x33,
-0x1a, 0x01, 0xd9, 0xfb, 0xff, 0x74, 0x77, 0x53,
-0x9f, 0x0a, 0x32, 0x31, 0xda, 0x57, 0x91, 0x22,
-0x48, 0x09, 0x33, 0x64, 0xc7, 0xf7, 0x65, 0xae,
-0x1f, 0xbd, 0x7c, 0xc4, 0xac, 0x66, 0x0d, 0x73,
-0xa3, 0x88, 0x92, 0x51, 0xf9, 0x70, 0x85, 0xb3,
-0x11, 0xd0, 0xb8, 0xad, 0xfe, 0x6b, 0x94, 0x1c,
-0xa5, 0xfb, 0xc2, 0x81, 0xed, 0xee, 0xb9, 0xdc,
-0x98, 0xcf, 0x27, 0x8a, 0xee, 0x73, 0x34, 0xea,
-0x49, 0xd7, 0x7f, 0xc5, 0x84, 0x67, 0xa4, 0xcb,
-0xd1, 0x25, 0x6b, 0xb6, 0xbe, 0x26, 0x3e, 0xad,
-0x5d, 0x8e, 0xb6, 0xac, 0x29, 0x19, 0xab, 0xba,
-0xa8, 0x7d, 0x48, 0xf3, 0xd5, 0x7f, 0xe9, 0xca,
-0xcf, 0xe0, 0x42, 0xac, 0x39, 0xec, 0xdd, 0x2e,
-0xf2, 0x36, 0xb6, 0x61, 0x63, 0x3f, 0xd2, 0x5e,
-0x97, 0x17, 0xff, 0xd4, 0xc2, 0x41, 0xbd, 0x36,
-0xec, 0xde, 0x4e, 0xde, 0x84, 0x83, 0x94, 0x19,
-0x31, 0xc4, 0x3f, 0xba, 0x9a, 0x87, 0xff, 0xd1,
-0x0b, 0xd6, 0x66, 0xf8, 0x2b, 0x74, 0xcb, 0xfb,
-0x92, 0xce, 0xc6, 0x35, 0x76, 0xfc, 0x73, 0x0d,
-0x3c, 0x1d, 0x9d, 0x1f, 0x73, 0xaf, 0x25, 0x27,
-0xe1, 0x69, 0xca, 0x0c, 0xd4, 0x3f, 0x3f, 0xcd,
-0x2b, 0xa4, 0x72, 0xd6, 0x7f, 0xc9, 0xb2, 0x76,
-0x4e, 0x69, 0xa2, 0x5e, 0x55, 0x4c, 0xc0, 0x39,
-0x60, 0x06, 0x88, 0x03, 0x0c, 0x08, 0xc5, 0xf5,
-0x7c, 0xfc, 0x4f, 0x1f, 0x5c, 0x51, 0x5a, 0xba,
-0xbc, 0x67, 0xc4, 0x71, 0x8d, 0x1b, 0x47, 0xf9,
-0x7a, 0xc8, 0x87, 0x7f, 0xfc, 0x98, 0xff, 0x32,
-0xda, 0x62, 0xdf, 0x81, 0x6d, 0xb1, 0x93, 0x9e,
-0xb8, 0x7b, 0x2e, 0x24, 0xa8, 0x73, 0x7e, 0xd2,
-0xf5, 0x7d, 0x23, 0xdc, 0x9f, 0xa4, 0xea, 0xbf,
-0x8c, 0x63, 0x61, 0x49, 0x05, 0x74, 0x19, 0xc7,
-0x4c, 0xe7, 0xea, 0xff, 0xa3, 0xfc, 0x70, 0xfa,
-0x81, 0x48, 0x25, 0xca, 0x7e, 0xf0, 0x7c, 0x10,
-0x66, 0x8c, 0x90, 0x42, 0xe8, 0xa0, 0xb7, 0xe5,
-0x3d, 0x1f, 0x64, 0x8b, 0xb9, 0xba, 0x8c, 0x6c,
-0x97, 0x1c, 0x23, 0x1e, 0xd2, 0xb1, 0x2d, 0x96,
-0x9a, 0x4f, 0x29, 0x85, 0x7f, 0xcc, 0xfb, 0x93,
-0xe5, 0x4f, 0xc0, 0x45, 0x6d, 0x5f, 0x34, 0xb0,
-0xcb, 0x3d, 0x8f, 0x1c, 0x43, 0xe3, 0x49, 0xb2,
-0x18, 0x8e, 0x43, 0x9d, 0x89, 0x88, 0xee, 0xce,
-0xea, 0xff, 0xa3, 0x8e, 0xcb, 0x78, 0x4c, 0x79,
-0x67, 0xca, 0xd0, 0xad, 0x30, 0xd4, 0x9a, 0x1f,
-0xff, 0x2c, 0x33, 0xf8, 0x1f, 0x1e, 0xdd, 0xaa,
-0x8c, 0xb6, 0x3f, 0x9e, 0xfc, 0xf8, 0x47, 0xab,
-0x5d, 0xef, 0x7e, 0x2c, 0xdd, 0x16, 0x7b, 0x0e,
-0x33, 0x02, 0x0e, 0x45, 0x8a, 0x13, 0xff, 0xfc,
-0x1c, 0x16, 0x68, 0xee, 0x21, 0x72, 0xde, 0x34,
-0xd6, 0x70, 0xd9, 0x33, 0xde, 0x2f, 0xe7, 0xc4,
-0x3f, 0x4f, 0xd1, 0xf9, 0x61, 0xb6, 0x6c, 0x7e,
-0x63, 0x18, 0x43, 0xd8, 0x16, 0xdb, 0x1f, 0x30,
-0xce, 0x87, 0xcd, 0xae, 0xff, 0x2a, 0x08, 0xc3,
-0x18, 0xca, 0xbc, 0x81, 0x6d, 0xa2, 0xb9, 0xa1,
-0x8b, 0x61, 0x8a, 0x8d, 0x47, 0xec, 0x42, 0x94,
-0xd3, 0xf6, 0xfc, 0x17, 0xaf, 0x76, 0xf7, 0x3e,
-0xd4, 0x69, 0x18, 0xab, 0x14, 0xf1, 0x3c, 0x9e,
-0x97, 0x97, 0x97, 0xff, 0xc1, 0x5f, 0xeb, 0x97,
-0x71, 0xfe, 0xe7, 0xb2, 0xd2, 0x82, 0xd3, 0x52,
-0x0d, 0x17, 0xfc, 0x8b, 0xf2, 0xeb, 0x7f, 0xd4,
-0x3e, 0xd9, 0x07, 0xee, 0x48, 0x24, 0x49, 0xfb,
-0xd4, 0x5a, 0xe2, 0xa7, 0x44, 0x6d, 0x7b, 0x46,
-0xf3, 0xe5, 0xab, 0xff, 0x2a, 0x18, 0xa0, 0x7b,
-0xd9, 0xb2, 0xee, 0x29, 0x25, 0x03, 0xb1, 0xbd,
-0x6a, 0xa0, 0xcd, 0xb5, 0x9a, 0x5c, 0x25, 0x3f,
-0x45, 0x55, 0x07, 0xfe, 0x71, 0xf4, 0xff, 0x61,
-0x17, 0x77, 0x9a, 0x68, 0x27, 0xa0, 0xb9, 0xa2,
-0xae, 0xfd, 0x6c, 0x62, 0x9d, 0xc2, 0xaa, 0x37,
-0x33, 0xf2, 0x5f, 0xbe, 0xf4, 0xdb, 0x96, 0x28,
-0xe2, 0x1c, 0xb8, 0xa0, 0xed, 0xcb, 0x83, 0x7f,
-0x46, 0x32, 0xf1, 0x4f, 0xb1, 0xad, 0x0d, 0x54,
-0x8e, 0xfa, 0x2f, 0x7e, 0x3e, 0x08, 0x36, 0xd9,
-0x88, 0xa4, 0x67, 0x5b, 0x85, 0x41, 0x3c, 0x16,
-0x36, 0x1f, 0xfe, 0x91, 0xcf, 0x42, 0x55, 0xd4,
-0x3d, 0x4c, 0x50, 0xa4, 0xbe, 0x20, 0xe6, 0xde,
-0x45, 0xfc, 0x10, 0x81, 0xaa, 0xbc, 0xf5, 0x5f,
-0x2b, 0xa1, 0xca, 0xd6, 0x26, 0x2b, 0xe9, 0x6a,
-0x20, 0x25, 0x10, 0xa1, 0x2a, 0xcd, 0x5d, 0xff,
-0x15, 0x83, 0x5b, 0xe0, 0x47, 0x50, 0xa9, 0xb9,
-0xdb, 0xc9, 0xab, 0xf2, 0x53, 0x30, 0x3f, 0xc4,
-0xbe, 0xd6, 0xeb, 0xe0, 0x5e, 0xad, 0x92, 0xe6,
-0xae, 0xff, 0xda, 0xdd, 0xfd, 0x15, 0x38, 0x4b,
-0x17, 0xc6, 0xbc, 0x6b, 0xc5, 0x93, 0x78, 0x3e,
-0x08, 0xb6, 0xfd, 0x71, 0x91, 0xe7, 0xe9, 0xde,
-0x58, 0x9e, 0xfa, 0xaf, 0x22, 0x9c, 0x9f, 0x67,
-0x29, 0xaf, 0xff, 0xe2, 0xa3, 0x0b, 0xba, 0x51,
-0xf1, 0x62, 0xf5, 0xb7, 0xc9, 0x81, 0x7f, 0xde,
-0x8f, 0xb6, 0x24, 0x1f, 0xc0, 0xfa, 0xe5, 0x97,
-0x51, 0xb6, 0x31, 0x22, 0xfe, 0x58, 0x1e, 0x8c,
-0xde, 0x18, 0x0b, 0xe4, 0xcc, 0x7f, 0x3d, 0x31,
-0x7d, 0x3f, 0x6c, 0xa4, 0x0b, 0x34, 0xb9, 0x9d,
-0x5c, 0xa5, 0x6f, 0xd4, 0x2a, 0x87, 0xdc, 0xe1,
-0x9d, 0x57, 0xe9, 0x5d, 0xe9, 0xfe, 0x3f, 0x19,
-0xe7, 0x83, 0x20, 0xfe, 0xf9, 0xb1, 0x3a, 0x07,
-0x0f, 0x6d, 0xac, 0x80, 0xef, 0xc1, 0x1c, 0xea,
-0xbe, 0x0d, 0xcf, 0xc3, 0xa5, 0xce, 0xfe, 0x3f,
-0x76, 0xfc, 0xc3, 0x69, 0x46, 0x8c, 0x56, 0x2a,
-0x6c, 0x87, 0xb9, 0xd4, 0x5d, 0x1d, 0x11, 0xf0,
-0x8a, 0xa3, 0xff, 0x8f, 0x33, 0xff, 0xf5, 0xae,
-0x34, 0x97, 0xc1, 0x18, 0x12, 0x40, 0x75, 0x84,
-0xee, 0x9d, 0x25, 0x3e, 0x80, 0x1d, 0xe7, 0xa8,
-0x3d, 0x7e, 0xd9, 0xeb, 0xbf, 0x38, 0x5e, 0xd2,
-0x38, 0xff, 0xf3, 0xae, 0xd6, 0xd8, 0xbe, 0x35,
-0x3a, 0xed, 0xac, 0x41, 0x53, 0x3b, 0xf8, 0x1f,
-0xf3, 0xfd, 0x05, 0xe5, 0x59, 0xb8, 0x12, 0x6d,
-0xa1, 0xc5, 0x49, 0xd2, 0xc4, 0xe6, 0xa7, 0x4a,
-0xf7, 0x0c, 0x89, 0x8b, 0xfd, 0x2f, 0x43, 0x0b,
-0x75, 0xe7, 0xac, 0xff, 0x62, 0xf8, 0x47, 0x63,
-0x41, 0x1c, 0x93, 0xa4, 0x01, 0xe8, 0xe9, 0xe2,
-0xc2, 0x42, 0x3f, 0xe6, 0x2f, 0x3a, 0xa6, 0xc2,
-0x3f, 0x7e, 0xbd, 0x28, 0x4e, 0x7e, 0x06, 0x3f,
-0x55, 0x6b, 0x74, 0xb9, 0xbb, 0xb4, 0x1a, 0xf0,
-0x3c, 0xd9, 0x29, 0xf8, 0x1f, 0x99, 0x77, 0xdf,
-0x7a, 0x80, 0xc1, 0xc2, 0xb5, 0xba, 0x0c, 0x44,
-0xda, 0x42, 0xe5, 0x40, 0x77, 0x9e, 0xfa, 0x2f,
-0x86, 0x7f, 0x2e, 0xaa, 0x8d, 0x78, 0xda, 0xe9,
-0x96, 0xe8, 0xef, 0xb0, 0xed, 0x0c, 0x15, 0x54,
-0x38, 0xaa, 0x3a, 0xc7, 0xeb, 0xc0, 0x3f, 0xca,
-0x84, 0x31, 0xa8, 0x75, 0x1a, 0x9e, 0x2e, 0xe7,
-0xd5, 0xc4, 0x21, 0x8d, 0x7d, 0x56, 0x5d, 0xf9,
-0xeb, 0xbf, 0x26, 0x23, 0x46, 0xfd, 0x97, 0x92,
-0x99, 0x36, 0xcd, 0x9d, 0xff, 0x72, 0xf4, 0xff,
-0x39, 0x93, 0x32, 0xe6, 0xe2, 0x95, 0x3b, 0xa6,
-0xcc, 0x7f, 0x39, 0x13, 0xa3, 0xfd, 0xd6, 0x41,
-0x3c, 0x3d, 0xb9, 0xf9, 0x9f, 0x9b, 0x4c, 0xf4,
-0x18, 0x32, 0xdb, 0x28, 0xdd, 0xb4, 0x2e, 0x9b,
-0xff, 0x51, 0xa7, 0xa7, 0xeb, 0xbf, 0x94, 0x09,
-0xa9, 0xc1, 0x89, 0x9f, 0xa5, 0x94, 0x90, 0xcc,
-0x51, 0xff, 0x95, 0xc5, 0xf6, 0xfc, 0xf1, 0xf9,
-0x2f, 0x0b, 0x78, 0x4f, 0xc1, 0xff, 0x08, 0xc6,
-0x40, 0x4a, 0x9c, 0xc0, 0x58, 0xc8, 0xc2, 0x3f,
-0x59, 0xfb, 0x2f, 0x18, 0x94, 0xea, 0xa5, 0xd4,
-0xc6, 0x21, 0x17, 0xff, 0x23, 0x18, 0x41, 0xdf,
-0xe8, 0xff, 0x33, 0xe2, 0x72, 0x12, 0x41, 0x1d,
-0x5f, 0xcf, 0xc4, 0x3f, 0x6c, 0xbd, 0x09, 0x4d,
-0xfd, 0xab, 0x82, 0x7f, 0x6a, 0xd4, 0x7f, 0x79,
-0x17, 0x8b, 0xd8, 0xd2, 0xb5, 0x49, 0x2f, 0x09,
-0x0a, 0xc7, 0xa3, 0x1f, 0xd2, 0xa6, 0xd1, 0xac,
-0xfc, 0xd7, 0x44, 0x3a, 0x4d, 0xdc, 0xac, 0x4f,
-0xfb, 0x60, 0xc6, 0x25, 0xb8, 0x47, 0x30, 0xe6,
-0x47, 0x4b, 0x11, 0x41, 0x9f, 0xc8, 0xff, 0x10,
-0x73, 0xfe, 0x85, 0x66, 0x7d, 0x55, 0xbc, 0x35,
-0x7f, 0xfd, 0x57, 0xff, 0x27, 0xe6, 0xbf, 0xcc,
-0xb4, 0xd7, 0x4d, 0xe9, 0x61, 0xf2, 0x19, 0x98,
-0x69, 0xe7, 0x7f, 0xd2, 0xf5, 0x5f, 0x65, 0x83,
-0x12, 0x4e, 0xda, 0x8a, 0x1c, 0xdb, 0x58, 0xdf,
-0x94, 0xf9, 0xaf, 0x1c, 0x69, 0xaf, 0x4f, 0xca,
-0x7f, 0xd9, 0x84, 0x40, 0xb3, 0xff, 0x63, 0xf9,
-0x9f, 0xff, 0xd8, 0xfc, 0x97, 0xf2, 0x47, 0xf3,
-0x3f, 0x19, 0xc6, 0xd9, 0x7f, 0x57, 0xfe, 0xcb,
-0xb8, 0xd8, 0x6a, 0xbf, 0x4d, 0xca, 0xec, 0xa8,
-0x93, 0x91, 0xff, 0x4a, 0xa3, 0x9d, 0x22, 0x6e,
-0x14, 0x18, 0x57, 0xa4, 0x3f, 0x94, 0xff, 0x11,
-0x9c, 0x85, 0xff, 0x53, 0xd4, 0x7f, 0x19, 0x65,
-0x5f, 0x70, 0x47, 0x3e, 0xfe, 0x27, 0xb3, 0xfe,
-0xeb, 0x93, 0xf4, 0xcf, 0xf0, 0x87, 0xdc, 0x3f,
-0x45, 0xfd, 0xd7, 0x27, 0xf1, 0x3f, 0xa9, 0xfa,
-0x2f, 0x3b, 0xdb, 0x33, 0x22, 0x35, 0x0a, 0x19,
-0xfa, 0xe7, 0x74, 0xff, 0xc3, 0xbc, 0xfc, 0x8f,
-0x18, 0xd4, 0x72, 0xf0, 0x3f, 0x59, 0xf5, 0x5f,
-0x39, 0x8d, 0x3c, 0xf5, 0x5f, 0x79, 0x8d, 0x5c,
-0xfc, 0x4f, 0x8e, 0x32, 0xf0, 0x1c, 0xf8, 0x47,
-0x2b, 0xc8, 0x8e, 0x56, 0x48, 0xfb, 0xe4, 0x8b,
-0x5f, 0x99, 0xfc, 0xcf, 0x08, 0x1b, 0x1d, 0x73,
-0x9b, 0xfb, 0xf9, 0x15, 0x14, 0x46, 0x06, 0x74,
-0x47, 0xff, 0xc3, 0x4c, 0xfe, 0x27, 0x61, 0xe8,
-0x7f, 0x54, 0xa7, 0xfe, 0x27, 0xbd, 0xbf, 0xcb,
-0xa8, 0xff, 0xaa, 0xcd, 0xcd, 0xa7, 0xa5, 0xf1,
-0x4f, 0x56, 0xfd, 0x57, 0x4a, 0xe8, 0xd2, 0xd0,
-0x6f, 0xbf, 0x72, 0x3a, 0x3f, 0xff, 0x63, 0x13,
-0x7e, 0x4c, 0x9b, 0x2a, 0xff, 0x65, 0xd2, 0x3e,
-0x1e, 0x6e, 0x48, 0xbc, 0xec, 0xeb, 0x92, 0x72,
-0x8f, 0xf1, 0x53, 0xbe, 0xfa, 0x2f, 0x52, 0xa2,
-0x17, 0xe7, 0x12, 0xf6, 0xe4, 0xaa, 0xff, 0x2a,
-0x4c, 0xd5, 0x7f, 0x7d, 0x82, 0xfe, 0xd9, 0x76,
-0x3e, 0x88, 0x84, 0xf3, 0x53, 0xc4, 0x69, 0x1f,
-0xd9, 0x9c, 0x1f, 0x81, 0x17, 0xc2, 0x3b, 0xeb,
-0xbf, 0x6c, 0xd9, 0xbd, 0xc6, 0x53, 0x9e, 0xa7,
-0x90, 0xf6, 0x51, 0x79, 0xfc, 0x7d, 0x4f, 0x9b,
-0x68, 0x6f, 0xc6, 0x83, 0x83, 0x6d, 0xfd, 0x7f,
-0x9c, 0xfc, 0x4f, 0xf3, 0x60, 0x06, 0x11, 0x04,
-0x86, 0xfe, 0xe7, 0x2a, 0x73, 0x3d, 0x1c, 0x29,
-0x40, 0xd8, 0xd3, 0x9b, 0xf4, 0x26, 0xd8, 0xfe,
-0x8b, 0xe1, 0xe7, 0x30, 0xfb, 0xb5, 0x76, 0x0a,
-0xfc, 0xa3, 0xf3, 0xfc, 0x97, 0xef, 0x8c, 0xbb,
-0x3b, 0xf4, 0x26, 0xef, 0xff, 0xec, 0x5e, 0x88,
-0x07, 0xb9, 0xe6, 0xd5, 0xff, 0x24, 0x0a, 0x8c,
-0xfd, 0xb8, 0x1b, 0xd8, 0xd7, 0xf7, 0x30, 0x57,
-0x9f, 0xfa, 0xb2, 0xf3, 0xa1, 0x69, 0xfe, 0x27,
-0xa9, 0xec, 0xe1, 0xa2, 0x29, 0xe6, 0xc4, 0xce,
-0xc2, 0x0f, 0x54, 0xdf, 0x80, 0x3b, 0x16, 0x09,
-0x28, 0x99, 0xf3, 0x69, 0xeb, 0xff, 0xcc, 0xf5,
-0xb7, 0x75, 0x3a, 0x0b, 0x43, 0x6f, 0x92, 0xd7,
-0x60, 0x9f, 0xee, 0xdd, 0xef, 0x0e, 0x64, 0xd7,
-0x7f, 0x59, 0xf8, 0x76, 0x2f, 0x3c, 0x23, 0xa5,
-0xf2, 0x83, 0xe7, 0x81, 0x37, 0xba, 0x59, 0x9f,
-0xab, 0xff, 0x8f, 0x15, 0x4f, 0xc7, 0xc0, 0x58,
-0x9f, 0xd7, 0x75, 0xb3, 0xcf, 0xea, 0x28, 0x65,
-0x4f, 0xeb, 0x16, 0x03, 0x59, 0xf5, 0x4d, 0xce,
-0xfe, 0xcf, 0xbd, 0x46, 0x1a, 0x74, 0x10, 0x7e,
-0xc5, 0x8c, 0x9e, 0x0e, 0x12, 0x50, 0x5f, 0xcf,
-0x5b, 0xff, 0xa5, 0x9b, 0x7c, 0x20, 0xd2, 0x62,
-0x1d, 0x12, 0x76, 0x5b, 0x75, 0x95, 0x64, 0x1d,
-0x6c, 0x9a, 0xee, 0xff, 0x33, 0xa4, 0x60, 0xfe,
-0x8b, 0x81, 0x9c, 0x36, 0x72, 0x85, 0x7c, 0xd7,
-0x88, 0xfe, 0xd7, 0x75, 0x3c, 0x12, 0xcb, 0xd7,
-0xff, 0xc7, 0xcc, 0x7f, 0xb9, 0xa1, 0xf5, 0x25,
-0xe8, 0xe7, 0x8d, 0x10, 0xab, 0x6a, 0xe1, 0x79,
-0x7b, 0xff, 0x9f, 0xad, 0x8e, 0xfe, 0x3f, 0x65,
-0x7b, 0x38, 0x68, 0xd9, 0x4a, 0xd9, 0xaf, 0x17,
-0x14, 0x36, 0xba, 0x7d, 0xee, 0x1c, 0x7a, 0x2a,
-0x27, 0xff, 0x83, 0x6c, 0x64, 0xb7, 0xb8, 0x05,
-0x65, 0x0f, 0xf8, 0x6b, 0xad, 0xd2, 0x03, 0x4d,
-0x49, 0x7b, 0x45, 0x9e, 0xad, 0xff, 0xb3, 0x95,
-0x4f, 0x27, 0xb3, 0xd8, 0x46, 0x92, 0xcb, 0x9e,
-0x9b, 0xe0, 0x27, 0xcc, 0xf0, 0xe7, 0xe6, 0x7f,
-0x10, 0xff, 0x74, 0xcc, 0x4b, 0x76, 0x26, 0xc8,
-0xb3, 0xb8, 0xed, 0x4a, 0xba, 0x6f, 0x45, 0x22,
-0x28, 0x32, 0x3f, 0x29, 0xe7, 0xee, 0xff, 0x93,
-0xd2, 0x1f, 0xce, 0xac, 0x26, 0xc5, 0xf2, 0x8e,
-0x28, 0x43, 0xd7, 0x0a, 0xf1, 0xc0, 0xe3, 0x92,
-0x59, 0xd8, 0x22, 0xf0, 0xf9, 0x3c, 0x69, 0x3d,
-0x5f, 0x97, 0x76, 0xf3, 0xb2, 0x2f, 0xef, 0x6f,
-0xc5, 0x83, 0x7c, 0xdb, 0xe5, 0x1d, 0x71, 0xfb,
-0xe1, 0x08, 0x33, 0x3c, 0x79, 0xfa, 0x3f, 0x9b,
-0xf1, 0x08, 0xf9, 0x9f, 0x3f, 0x20, 0xff, 0x95,
-0x8e, 0x77, 0x03, 0x70, 0x94, 0x34, 0xb3, 0x68,
-0xeb, 0xae, 0xce, 0x2a, 0x04, 0xcb, 0x3e, 0x1f,
-0x6d, 0x26, 0x9e, 0xcf, 0xfe, 0x9a, 0xa9, 0x3f,
-0x79, 0x3b, 0x83, 0x7f, 0xb0, 0xe1, 0x1f, 0xa8,
-0x96, 0x78, 0x76, 0x0c, 0xf9, 0xc6, 0xcd, 0xd4,
-0xb8, 0x5f, 0x3b, 0x98, 0x71, 0xbf, 0xad, 0xfe,
-0x4b, 0x49, 0xe3, 0x9f, 0x18, 0x17, 0xc6, 0x5c,
-0x13, 0x29, 0x84, 0x1d, 0xa9, 0x42, 0x30, 0x29,
-0xab, 0xfe, 0x6b, 0x75, 0x45, 0x5a, 0xff, 0x4c,
-0x51, 0xf6, 0xfc, 0x72, 0x84, 0x17, 0xc2, 0x3b,
-0xf9, 0x07, 0x5b, 0xff, 0x67, 0xce, 0x87, 0xd4,
-0x2e, 0xf5, 0xb6, 0x8b, 0xe7, 0xa5, 0xcb, 0xe0,
-0xd5, 0xbc, 0xaf, 0x74, 0x0e, 0xc7, 0xde, 0xe6,
-0x1d, 0x6f, 0xc4, 0x61, 0x25, 0x27, 0xfe, 0xb9,
-0x6c, 0xe8, 0x7f, 0xae, 0x87, 0x97, 0xe0, 0x7a,
-0x7d, 0xc5, 0xab, 0x0f, 0x5f, 0x2f, 0xf3, 0x83,
-0xd5, 0xf0, 0xfe, 0x83, 0x99, 0xfc, 0x4f, 0x85,
-0xa9, 0xff, 0x89, 0x85, 0x54, 0xce, 0x0f, 0xbb,
-0x77, 0x11, 0xd5, 0x7e, 0x62, 0x5a, 0x06, 0xfe,
-0x59, 0x9b, 0xd6, 0x3f, 0xff, 0x15, 0x3c, 0x9a,
-0x6a, 0xfc, 0xa8, 0xe6, 0xef, 0xff, 0xd3, 0xa7,
-0x18, 0xf8, 0xa7, 0x27, 0xea, 0x5a, 0x23, 0x3d,
-0xca, 0xa6, 0xb1, 0xe7, 0xa1, 0xd0, 0xba, 0xac,
-0x7c, 0x62, 0xf6, 0xf9, 0x68, 0xee, 0xc7, 0x66,
-0xfc, 0x15, 0xf9, 0x15, 0x34, 0x20, 0x51, 0xbc,
-0x26, 0x2b, 0x23, 0x96, 0x3e, 0x1f, 0x36, 0x01,
-0xbb, 0xa4, 0x94, 0xba, 0xfb, 0x47, 0x78, 0x2c,
-0x6c, 0xbb, 0x77, 0xbb, 0xdb, 0x81, 0x88, 0x78,
-0xe3, 0x20, 0x5b, 0xff, 0x43, 0x73, 0xbd, 0x75,
-0x89, 0x49, 0xf9, 0x84, 0xd0, 0x0c, 0x01, 0x49,
-0x54, 0xf9, 0x1f, 0x22, 0xcf, 0xf9, 0xb0, 0x5d,
-0xa9, 0xfc, 0x97, 0xca, 0x9c, 0xea, 0x49, 0x99,
-0x6d, 0xe4, 0x47, 0x48, 0xa3, 0x7a, 0x5f, 0x46,
-0x46, 0x2c, 0x91, 0x9d, 0x8f, 0x58, 0xc8, 0x16,
-0xc9, 0xc3, 0x94, 0x7d, 0x26, 0x8b, 0x4b, 0x3c,
-0xd0, 0x49, 0x32, 0xfd, 0xb3, 0xf9, 0x4f, 0xe0,
-0xe7, 0x85, 0x7d, 0x1d, 0xbf, 0xdf, 0xf3, 0xea,
-0x23, 0xb0, 0x20, 0xd9, 0xdd, 0x7e, 0x2f, 0xfb,
-0x1e, 0xf3, 0x9e, 0x0f, 0x2b, 0x77, 0x9b, 0xf8,
-0x67, 0xc6, 0x6f, 0xe4, 0x7f, 0x61, 0x86, 0x67,
-0x44, 0x6c, 0x20, 0xbf, 0xcc, 0x7b, 0x3e, 0xac,
-0x7f, 0x96, 0xe1, 0x6f, 0x57, 0xc5, 0xd9, 0xf7,
-0x92, 0x12, 0xba, 0x0c, 0x5b, 0xfe, 0xc7, 0x94,
-0xc2, 0xda, 0xfa, 0x3f, 0x7b, 0x9e, 0x6d, 0xe3,
-0x41, 0xea, 0xdb, 0x9c, 0xff, 0x69, 0x19, 0xf6,
-0x8e, 0x57, 0x35, 0xda, 0xe2, 0x97, 0x01, 0x84,
-0xd2, 0xe7, 0xc3, 0x3e, 0x29, 0x5b, 0x78, 0xe6,
-0x7a, 0x7c, 0xed, 0xdf, 0xba, 0x97, 0xb8, 0x66,
-0x99, 0xb0, 0x27, 0x07, 0xff, 0x13, 0x83, 0xc7,
-0x14, 0x7e, 0x71, 0xcc, 0xb8, 0x7f, 0xd0, 0x7d,
-0x3b, 0xd9, 0x66, 0x43, 0x44, 0x24, 0xeb, 0x7c,
-0x58, 0xac, 0xf7, 0xf1, 0xe8, 0x33, 0x9b, 0x48,
-0x01, 0xf6, 0xb7, 0x41, 0x6f, 0x5f, 0x9d, 0x15,
-0xef, 0xd2, 0xf5, 0x5f, 0xb2, 0xc4, 0xfc, 0x2d,
-0xdb, 0x2d, 0xba, 0x9f, 0x13, 0x0b, 0xe0, 0xc5,
-0x82, 0xda, 0x33, 0xde, 0xf8, 0xa7, 0xab, 0xa5,
-0xcc, 0x8d, 0xa4, 0xad, 0xff, 0x33, 0x98, 0x78,
-0xc9, 0x3d, 0x4c, 0xf8, 0x44, 0x45, 0x45, 0xab,
-0xfe, 0x1d, 0x0f, 0x8a, 0xbd, 0xdb, 0xc0, 0x3f,
-0xe6, 0xfd, 0x02, 0x18, 0x7a, 0x86, 0x92, 0x8b,
-0xe2, 0x79, 0xdf, 0xcb, 0xcc, 0x28, 0x4e, 0x8a,
-0xdf, 0x02, 0x34, 0xdc, 0x63, 0x58, 0x21, 0x4e,
-0xf0, 0x04, 0x84, 0x2a, 0x7b, 0xff, 0x67, 0x16,
-0xcd, 0x89, 0x51, 0xbd, 0x0e, 0x3d, 0x65, 0xb5,
-0x7a, 0x5b, 0x94, 0x7c, 0x8a, 0xeb, 0x57, 0x57,
-0xe4, 0x3d, 0x1f, 0xd6, 0x8c, 0xce, 0x04, 0x6f,
-0x2b, 0x8a, 0xc3, 0x1d, 0x59, 0x7a, 0x57, 0x07,
-0xfe, 0xe1, 0x65, 0x71, 0x6c, 0x12, 0x86, 0x71,
-0x7e, 0x12, 0xdd, 0x7b, 0x49, 0xfa, 0x20, 0x6f,
-0x39, 0x9b, 0xff, 0x81, 0x75, 0xe6, 0x7a, 0x18,
-0x96, 0x8f, 0x0a, 0xcd, 0x89, 0xfb, 0xe7, 0x3e,
-0xfc, 0x35, 0xf2, 0x22, 0xd7, 0xff, 0xa4, 0x89,
-0x8e, 0x34, 0xff, 0xd3, 0x51, 0x60, 0x06, 0xf1,
-0x19, 0xe7, 0x11, 0xff, 0x0c, 0x79, 0xf7, 0x89,
-0xe7, 0xb1, 0xfe, 0x3d, 0xb1, 0x2a, 0x2f, 0xff,
-0xf3, 0xf2, 0xa6, 0xfa, 0x33, 0xeb, 0xc6, 0x5b,
-0x11, 0xed, 0xd4, 0x25, 0xef, 0xb7, 0xf3, 0x3f,
-0xe4, 0x0d, 0x64, 0x14, 0x33, 0xf9, 0x1f, 0x84,
-0x3d, 0x6d, 0x7d, 0x75, 0x1c, 0x08, 0x25, 0xed,
-0xfc, 0xcf, 0x59, 0xa9, 0xc7, 0xb8, 0x32, 0xe6,
-0xe0, 0x7f, 0xb0, 0x88, 0x40, 0x0e, 0x02, 0xfe,
-0xf5, 0x79, 0x37, 0xf5, 0xb4, 0x10, 0x5a, 0x78,
-0xd8, 0xa0, 0x5e, 0xcf, 0x39, 0xf8, 0x9f, 0x1e,
-0xa1, 0x26, 0x05, 0x23, 0x25, 0x9f, 0xde, 0x93,
-0xe6, 0x7f, 0x4a, 0x47, 0xa1, 0x47, 0xf2, 0x65,
-0xd4, 0xbf, 0x97, 0xed, 0x61, 0x68, 0x84, 0x77,
-0x63, 0xc6, 0xea, 0xad, 0x3a, 0xdd, 0xd9, 0x2f,
-0xeb, 0x75, 0xa3, 0x11, 0x50, 0xd2, 0xc2, 0x4b,
-0x67, 0xe0, 0x99, 0xd2, 0x49, 0x38, 0x80, 0xf3,
-0x83, 0x30, 0xf8, 0x39, 0xe3, 0xfc, 0x8b, 0x7b,
-0xd2, 0xf8, 0xe7, 0xb9, 0xcc, 0xfc, 0xd7, 0x1e,
-0xd9, 0x90, 0xd9, 0x5b, 0x8f, 0x6d, 0x75, 0xe8,
-0x5b, 0xf8, 0xf3, 0x3f, 0xb0, 0xf1, 0x3f, 0x1e,
-0x5e, 0xef, 0xb6, 0x02, 0x5f, 0xbb, 0xd7, 0x5a,
-0x06, 0x5c, 0xc8, 0x54, 0x8a, 0x33, 0xc0, 0xdf,
-0xff, 0x23, 0xa7, 0xfe, 0x47, 0xf2, 0xf4, 0xdb,
-0xb6, 0x5d, 0x1c, 0x18, 0x7b, 0xcc, 0xef, 0x25,
-0xe6, 0xe4, 0x7f, 0x6e, 0xcb, 0xec, 0xff, 0xe3,
-0xd4, 0x03, 0x2f, 0xea, 0xe0, 0x89, 0xb0, 0xf1,
-0x2c, 0xfc, 0x63, 0xaa, 0x7d, 0x46, 0xbd, 0xf5,
-0xa8, 0xff, 0xe9, 0xc2, 0x2b, 0x4b, 0x11, 0xff,
-0x04, 0xfb, 0xbd, 0x0b, 0xf3, 0xeb, 0x7f, 0xd8,
-0x32, 0xdb, 0xdb, 0x7a, 0x49, 0x9f, 0xac, 0xe6,
-0x2b, 0x6a, 0x94, 0xdd, 0xcf, 0x96, 0xe2, 0x58,
-0xab, 0xbd, 0xff, 0xcf, 0xa0, 0x89, 0x06, 0x2d,
-0xe3, 0x0b, 0x0c, 0x5f, 0x19, 0xf9, 0x2f, 0xe5,
-0x43, 0xc3, 0xb0, 0xf1, 0x3f, 0x57, 0x3f, 0x06,
-0x9b, 0xa4, 0x94, 0xf7, 0x40, 0x63, 0xc5, 0xfa,
-0xba, 0x53, 0x65, 0x9b, 0xd2, 0xf9, 0x2f, 0x6e,
-0x9c, 0xb3, 0xea, 0xbf, 0x74, 0xf8, 0x21, 0x31,
-0xbb, 0x1d, 0x92, 0x4d, 0x74, 0x1e, 0x27, 0x82,
-0xc8, 0x26, 0x23, 0xdf, 0xf7, 0x43, 0xe1, 0x00,
-0xdd, 0x81, 0x8a, 0xa0, 0x74, 0xff, 0xe7, 0x36,
-0xc9, 0x54, 0x97, 0xf9, 0x06, 0xf9, 0x67, 0xf5,
-0x7f, 0xc5, 0xd9, 0x32, 0xc3, 0x15, 0xb8, 0xc2,
-0xf8, 0xbe, 0xc2, 0x19, 0xfc, 0x4f, 0x41, 0x37,
-0x9c, 0x34, 0x40, 0x4e, 0xc2, 0xc0, 0x3f, 0x08,
-0x7b, 0x8e, 0xc1, 0x3e, 0x66, 0x7c, 0x11, 0x5b,
-0x43, 0xd7, 0x65, 0xe0, 0x1f, 0x16, 0x7f, 0x47,
-0x24, 0x5b, 0xb6, 0xcb, 0xcd, 0xf9, 0x1f, 0xc1,
-0xd0, 0xa3, 0x2a, 0x1b, 0x8c, 0x13, 0x63, 0xd3,
-0xf8, 0xa7, 0x5b, 0x19, 0x16, 0x4d, 0x35, 0x2c,
-0x31, 0x8c, 0x19, 0xd5, 0xe9, 0x78, 0x77, 0x43,
-0x16, 0xfe, 0xc1, 0xfe, 0x87, 0x1c, 0xff, 0x88,
-0x86, 0xfe, 0xb6, 0xc4, 0xc0, 0x3f, 0x8d, 0x3c,
-0xfe, 0x4a, 0x07, 0x0d, 0xc3, 0x71, 0xfe, 0x85,
-0x60, 0xaa, 0x73, 0xa5, 0xcd, 0xc2, 0x1d, 0xda,
-0x0a, 0xb3, 0x11, 0xd0, 0x4c, 0x9b, 0x70, 0xc8,
-0xc6, 0xff, 0x80, 0xa5, 0xfe, 0xed, 0xe2, 0x86,
-0x2b, 0xea, 0x92, 0xf8, 0xa9, 0x53, 0x29, 0x3c,
-0xe0, 0x5f, 0xea, 0xe0, 0x7f, 0xfa, 0x64, 0x4c,
-0x43, 0x37, 0x1b, 0x7c, 0x8b, 0x11, 0x76, 0x89,
-0x6a, 0xc3, 0x7b, 0xe2, 0x6c, 0xac, 0x88, 0x77,
-0xf0, 0x3f, 0x8a, 0x83, 0xcd, 0x78, 0x20, 0x5a,
-0x35, 0x0c, 0x6f, 0x4b, 0x8d, 0xe6, 0x15, 0x34,
-0x6c, 0xfd, 0x9f, 0xb7, 0x17, 0x9c, 0xe7, 0x65,
-0x31, 0xec, 0x57, 0x34, 0xf6, 0xa5, 0x0c, 0xc2,
-0x9f, 0x80, 0x47, 0x63, 0x34, 0x6b, 0xab, 0x32,
-0xf9, 0x1f, 0x0e, 0x7b, 0x28, 0xb1, 0x1b, 0xa9,
-0xfe, 0x87, 0x0c, 0xcc, 0x66, 0xf4, 0x7f, 0x46,
-0xfe, 0xa7, 0x03, 0x9b, 0xcc, 0x63, 0xff, 0x1f,
-0x41, 0x50, 0x35, 0xd1, 0x14, 0x42, 0xbb, 0x95,
-0xc2, 0x61, 0x6e, 0xcc, 0xcc, 0xe4, 0x7f, 0x36,
-0x9b, 0xe8, 0xd1, 0x30, 0x42, 0xc3, 0x69, 0xfd,
-0xf3, 0x13, 0x52, 0x0e, 0xfe, 0xe7, 0xa8, 0x89,
-0x66, 0x6d, 0x46, 0xb3, 0xc3, 0xc8, 0xe6, 0x7f,
-0x1c, 0xb2, 0x28, 0x05, 0x85, 0xf1, 0xc5, 0xa9,
-0x2b, 0x4b, 0xbd, 0x79, 0xcf, 0x87, 0xcd, 0x34,
-0x8c, 0x9f, 0x3c, 0x8e, 0xfa, 0x77, 0xf6, 0x17,
-0xde, 0xc7, 0x40, 0x4e, 0x49, 0xac, 0x34, 0x21,
-0xed, 0x4b, 0xa1, 0x1d, 0x01, 0x61, 0xcf, 0x8a,
-0x58, 0xeb, 0x6e, 0x38, 0x24, 0x94, 0x20, 0xb0,
-0xef, 0x4e, 0xf3, 0x3f, 0x1b, 0xb3, 0xf8, 0x9f,
-0x9b, 0xad, 0x30, 0xbd, 0x87, 0x3b, 0xa2, 0xa2,
-0x60, 0x28, 0xcd, 0xff, 0x54, 0xa6, 0xf8, 0x9f,
-0x8c, 0xb2, 0x77, 0xe3, 0x58, 0xd8, 0xc7, 0x0a,
-0x0e, 0x30, 0x44, 0x54, 0xb1, 0x9e, 0xec, 0xb6,
-0xf3, 0x3f, 0x4a, 0xba, 0xdb, 0x61, 0xd7, 0x7c,
-0x66, 0xb4, 0x1a, 0xfe, 0x8a, 0x5d, 0xf9, 0x21,
-0xc3, 0x3f, 0x2d, 0xc9, 0x62, 0x47, 0xff, 0xe7,
-0x14, 0xff, 0x53, 0xe2, 0x70, 0xb3, 0x48, 0xe3,
-0x6f, 0x75, 0xe0, 0x1f, 0x73, 0x7e, 0xb4, 0xf2,
-0x2b, 0xda, 0x64, 0x9a, 0xed, 0x59, 0x62, 0x18,
-0x5c, 0xd1, 0x7a, 0x81, 0xfd, 0x2f, 0xbe, 0x8c,
-0xc2, 0x06, 0x16, 0xbf, 0xec, 0xe7, 0x5f, 0x68,
-0x07, 0x14, 0xf3, 0xb5, 0x95, 0xf9, 0xd8, 0x4f,
-0x0c, 0xf5, 0x27, 0x5c, 0x88, 0x78, 0x3a, 0xb4,
-0x89, 0xce, 0x1f, 0xed, 0xb1, 0xeb, 0x7f, 0xa2,
-0xf0, 0x98, 0x74, 0x40, 0xb2, 0xa1, 0xbb, 0x15,
-0xeb, 0x2d, 0xfd, 0x4f, 0xe9, 0x29, 0x03, 0x11,
-0x39, 0xfa, 0xff, 0x48, 0x56, 0x10, 0x47, 0xa3,
-0xd6, 0x22, 0xa2, 0x0d, 0x0f, 0x9f, 0x0a, 0xf4,
-0xb9, 0xfa, 0xff, 0x60, 0x34, 0x2f, 0xb4, 0x02,
-0x4d, 0x83, 0x71, 0x22, 0xf9, 0x8b, 0x46, 0xfe,
-0xe2, 0xa4, 0xf5, 0x3e, 0xdb, 0x72, 0xf2, 0x3f,
-0x68, 0xfc, 0x85, 0x69, 0xb0, 0x27, 0x0c, 0x5b,
-0xfe, 0xa7, 0x43, 0xb9, 0x24, 0x18, 0xfe, 0xfc,
-0xab, 0x86, 0xfa, 0xd7, 0x93, 0x86, 0x01, 0x55,
-0x16, 0x1e, 0x48, 0xc7, 0xeb, 0xfe, 0xae, 0x34,
-0xff, 0xc3, 0xcb, 0xbe, 0x8a, 0x6d, 0xb2, 0x55,
-0x1b, 0x9e, 0xb1, 0xf8, 0x1f, 0x29, 0x20, 0x3b,
-0xd8, 0x09, 0x8b, 0xff, 0xe1, 0x15, 0xf1, 0x46,
-0xe3, 0x20, 0x5f, 0x16, 0xff, 0xd3, 0x6f, 0xf2,
-0x3f, 0x2f, 0x14, 0xd5, 0x61, 0x3d, 0xb2, 0x62,
-0xcc, 0x18, 0xed, 0x55, 0xb1, 0x1f, 0x20, 0xd8,
-0xea, 0xdf, 0xed, 0xfc, 0xcf, 0xbb, 0x52, 0x73,
-0xc2, 0xb3, 0xaf, 0x33, 0x3d, 0x70, 0x75, 0xc2,
-0xdf, 0x7c, 0xcc, 0x9b, 0xb3, 0xff, 0x4f, 0x2a,
-0x7e, 0xa1, 0x3a, 0xc8, 0xd2, 0xff, 0xa4, 0xfe,
-0x8b, 0x63, 0x33, 0xb2, 0xcf, 0x87, 0xbd, 0xd3,
-0x95, 0xeb, 0x3c, 0xbe, 0xce, 0xe0, 0xbf, 0xff,
-0x3c, 0x3e, 0xb9, 0x8b, 0x54, 0x42, 0xb7, 0xc6,
-0xeb, 0x52, 0x6d, 0xc6, 0x27, 0x9c, 0x87, 0x78,
-0xe7, 0xbf, 0xf3, 0x3c, 0xc4, 0xc1, 0xff, 0x64,
-0xe7, 0x21, 0x0e, 0xe6, 0xfd, 0xe5, 0xff, 0x2b,
-0xe7, 0x21, 0x6a, 0x86, 0x01, 0x9f, 0x70, 0x1e,
-0xe2, 0x9d, 0x7f, 0xe4, 0x79, 0x88, 0xda, 0x1f,
-0x39, 0xff, 0xda, 0x7f, 0x9d, 0x87, 0xf8, 0xef,
-0xfb, 0xf7, 0x9f, 0xeb, 0xfc, 0xc1, 0xff, 0x7c,
-0xf7, 0x93, 0xae, 0xb2, 0x0e, 0xd1, 0xdf, 0x4e,
-0xca, 0x60, 0xa0, 0x7a, 0x47, 0x27, 0x03, 0x88,
-0x65, 0x91, 0x2e, 0xa9, 0x72, 0x85, 0x3f, 0x44,
-0x94, 0xc8, 0xa6, 0xb2, 0xbd, 0x62, 0xd6, 0xf7,
-0x58, 0xe0, 0x17, 0x28, 0x84, 0x65, 0x05, 0x0a,
-0x64, 0x21, 0x01, 0x21, 0xa8, 0xd0, 0xa6, 0xc9,
-0xd3, 0x11, 0x61, 0x54, 0xe8, 0xd3, 0xfc, 0x02,
-0x48, 0x99, 0xdf, 0xe3, 0xbd, 0x50, 0x19, 0x92,
-0xf1, 0xf9, 0xf7, 0xaa, 0xea, 0x11, 0xe6, 0x0f,
-0xb7, 0x75, 0x6f, 0x2a, 0x3c, 0xf3, 0x85, 0xee,
-0x90, 0xaf, 0xa2, 0xfb, 0x97, 0x85, 0x95, 0x04,
-0x3d, 0xa4, 0xe3, 0x7e, 0xa9, 0x02, 0x3f, 0x6a,
-0xa1, 0x0c, 0x24, 0x79, 0xba, 0x0c, 0x4b, 0x81,
-0x19, 0x52, 0x87, 0xc6, 0x1e, 0x3b, 0x8b, 0x16,
-0x96, 0xe5, 0xf8, 0xde, 0x3b, 0x41, 0x6d, 0x93,
-0xc1, 0x25, 0x91, 0xe7, 0x41, 0xa5, 0x1e, 0xfc,
-0x3a, 0x96, 0xaa, 0x6a, 0x9b, 0xca, 0x0c, 0x4a,
-0xd5, 0x60, 0x37, 0x57, 0x62, 0xda, 0xc7, 0x2b,
-0x2a, 0x51, 0x03, 0x3e, 0x89, 0x40, 0x07, 0xf0,
-0x7b, 0x8a, 0x84, 0x20, 0xba, 0x52, 0x62, 0xff,
-0x5b, 0xcc, 0x9b, 0xd0, 0x65, 0xd5, 0x42, 0xc6,
-0xf7, 0xd8, 0x59, 0x8d, 0xcf, 0xbf, 0x4f, 0x22,
-0x9d, 0x92, 0x9a, 0xc0, 0xa7, 0x85, 0x3b, 0xaa,
-0xe9, 0xa0, 0x4c, 0x5c, 0x40, 0x87, 0xaa, 0x55,
-0xf6, 0xfc, 0x88, 0xe3, 0x76, 0x45, 0xa8, 0x86,
-0x22, 0x80, 0x22, 0xe6, 0x9b, 0x24, 0xa5, 0x08,
-0x5f, 0x47, 0x63, 0x17, 0xfb, 0xab, 0x7d, 0x1a,
-0x66, 0x67, 0xf0, 0xa7, 0x8c, 0xf9, 0xdf, 0xe4,
-0xaf, 0x1c, 0xf4, 0x7f, 0xd3, 0x35, 0x2b, 0xb4,
-0x49, 0xde, 0xe1, 0x09, 0xb4, 0x2e, 0x9f, 0x15,
-0xd9, 0x54, 0xb1, 0x50, 0x63, 0x7f, 0x88, 0x8a,
-0xa1, 0x17, 0xd4, 0x4a, 0x8a, 0x48, 0xdd, 0xf1,
-0x5f, 0x98, 0x26, 0x4d, 0xa7, 0x10, 0x92, 0x2b,
-0xd4, 0x69, 0x52, 0x47, 0x9b, 0xda, 0xaa, 0x29,
-0x74, 0x9a, 0xbf, 0x03, 0x27, 0xaa, 0x42, 0x2f,
-0x58, 0xcc, 0xfe, 0x22, 0xad, 0x19, 0xf3, 0xf3,
-0x4b, 0x55, 0x0d, 0xb1, 0x69, 0x91, 0xe8, 0x26,
-0x58, 0xf8, 0x00, 0xb4, 0x8a, 0x8a, 0xc6, 0x8c,
-0x9b, 0x20, 0x44, 0xca, 0x8e, 0xdc, 0xbb, 0xb8,
-0xf2, 0x05, 0x4f, 0x6b, 0x96, 0x3f, 0xec, 0x20,
-0x7c, 0x92, 0x99, 0xf7, 0x0b, 0x49, 0xdf, 0x84,
-0x59, 0x63, 0xd3, 0xd4, 0xe9, 0x2f, 0x4a, 0x77,
-0xea, 0xb3, 0xa2, 0x05, 0xc1, 0x8e, 0xad, 0xf0,
-0x4d, 0xee, 0x78, 0xd3, 0xff, 0xba, 0xca, 0x2a,
-0x25, 0x99, 0x2d, 0x1b, 0xe8, 0x62, 0xef, 0xe3,
-0x69, 0xd7, 0x14, 0x3d, 0x12, 0x5c, 0xe8, 0xf2,
-0x68, 0x11, 0x45, 0xf9, 0xa5, 0x52, 0x19, 0xf1,
-0x2f, 0x15, 0x33, 0xfc, 0xa1, 0xaa, 0xb8, 0x54,
-0xd0, 0x64, 0x36, 0x33, 0x4a, 0xa1, 0xa0, 0x16,
-0x41, 0x52, 0x08, 0x40, 0x1b, 0xfe, 0x21, 0x42,
-0x42, 0x35, 0xd5, 0x40, 0x6c, 0x73, 0xbc, 0x7e,
-0x50, 0x57, 0x62, 0x05, 0x1e, 0x08, 0x49, 0x41,
-0x0a, 0xc1, 0xcf, 0x79, 0x94, 0x56, 0x69, 0x28,
-0x12, 0x0c, 0xde, 0x8f, 0x6e, 0xf0, 0x21, 0x86,
-0xf4, 0x3b, 0x40, 0x0c, 0xd9, 0xee, 0x96, 0x18,
-0x7e, 0x96, 0x29, 0xe0, 0xa4, 0xab, 0x20, 0x51,
-0xad, 0x1a, 0x34, 0x29, 0x54, 0x08, 0x51, 0xfe,
-0xc2, 0xaa, 0x28, 0xe3, 0xff, 0x43, 0x1d, 0xfe,
-0xd0, 0x78, 0x39, 0xf6, 0x9f, 0xa3, 0x2a, 0xd2,
-0x1d, 0xcc, 0x8e, 0x72, 0x9f, 0xaa, 0xda, 0x0c,
-0x6a, 0xdd, 0xdd, 0xd4, 0x14, 0x8c, 0x53, 0xaa,
-0xa9, 0x0a, 0x28, 0x63, 0x94, 0xb2, 0xeb, 0x8a,
-0x86, 0x46, 0x0c, 0x18, 0x62, 0xe6, 0x57, 0xf8,
-0x4f, 0x2f, 0xdb, 0xfc, 0x61, 0x53, 0x47, 0xe4,
-0x47, 0xf4, 0xc6, 0xef, 0xdf, 0xfd, 0x67, 0x91,
-0xce, 0x8e, 0x99, 0xb4, 0xa9, 0xe2, 0x33, 0x0f,
-0x76, 0x74, 0x2e, 0xfd, 0x2b, 0x76, 0xe5, 0x3b,
-0xd7, 0x2c, 0x5d, 0x2d, 0xb4, 0xea, 0x4d, 0x57,
-0xef, 0xa9, 0x70, 0x2e, 0x08, 0xbe, 0x66, 0x94,
-0x72, 0x42, 0x09, 0xa5, 0xec, 0x7b, 0x6a, 0xd7,
-0x22, 0x94, 0x2d, 0x31, 0x6d, 0x29, 0xe0, 0x40,
-0x69, 0x59, 0x59, 0x99, 0x85, 0xae, 0xcc, 0x7f,
-0xf5, 0x84, 0x74, 0xf3, 0x55, 0x58, 0x2f, 0x09,
-0x1d, 0x7c, 0xa8, 0xf5, 0x82, 0x20, 0xf3, 0x75,
-0x5f, 0x2f, 0x77, 0x2f, 0x5b, 0x66, 0xbf, 0x37,
-0xed, 0x0d, 0xee, 0xc9, 0xf2, 0x0f, 0x57, 0xee,
-0x99, 0xa4, 0x90, 0xf1, 0x2f, 0xfd, 0xeb, 0xc7,
-0xef, 0x67, 0xdc, 0xbf, 0xe4, 0x4a, 0xcb, 0x64,
-0xe6, 0xab, 0xd8, 0xee, 0x7f, 0xe3, 0x0d, 0xf3,
-0xfe, 0xe7, 0xde, 0x37, 0x8c, 0xf7, 0x5b, 0xa6,
-0xf2, 0x57, 0xf7, 0xb4, 0x98, 0xf7, 0xdf, 0xf3,
-0x07, 0xf9, 0xb7, 0x67, 0x5b, 0x3e, 0x4e, 0xdd,
-0x66, 0xfd, 0x17, 0x27, 0x3f, 0x9e, 0xe2, 0xfe,
-0x2b, 0x0b, 0x8c, 0xd1, 0xb5, 0x5c, 0x99, 0x34,
-0x8c, 0xeb, 0x26, 0xaf, 0x64, 0x3d, 0xff, 0x17,
-0x4b, 0xc5, 0xf5, 0xda, 0x29, 0x65, 0x11, 0x14,
-0xf4, 0x1b, 0x46, 0x59, 0xf1, 0x2f, 0xc4, 0x6f,
-0x68, 0xb7, 0x5a, 0x46, 0xfb, 0x9f, 0x48, 0xc5,
-0xfa, 0x42, 0xeb, 0xfe, 0xcf, 0x2e, 0x93, 0xbe,
-0x21, 0xdc, 0xaa, 0x7d, 0x99, 0x05, 0xff, 0x02,
-0x66, 0x2c, 0xfd, 0x72, 0x45, 0xf9, 0x00, 0x33,
-0xda, 0xb4, 0x56, 0xa5, 0x7c, 0x40, 0x60, 0x57,
-0xc2, 0x5f, 0x56, 0xca, 0xf5, 0xe9, 0x26, 0x5e,
-0x05, 0x4a, 0x04, 0xb5, 0xab, 0x4d, 0x2d, 0x95,
-0xa5, 0x88, 0xa0, 0xd2, 0x94, 0x51, 0xc9, 0x8c,
-0x3f, 0x91, 0xa5, 0x7b, 0xcd, 0x2b, 0xd6, 0xf1,
-0x3e, 0xb8, 0xf4, 0xd8, 0x5e, 0x75, 0x35, 0x5c,
-0x05, 0xdb, 0xa8, 0x10, 0x46, 0x43, 0x29, 0xb8,
-0x57, 0x08, 0x0b, 0xab, 0xc9, 0x55, 0x15, 0x05,
-0x54, 0xb8, 0xad, 0x63, 0xb5, 0xf6, 0x25, 0x28,
-0xb0, 0xdd, 0xff, 0xd9, 0xd5, 0x05, 0x0d, 0xc2,
-0xe7, 0xe9, 0x97, 0x97, 0x4a, 0xdd, 0x05, 0xdf,
-0x14, 0x6e, 0xa5, 0x5f, 0x56, 0xcb, 0x13, 0x05,
-0x77, 0xa6, 0x0c, 0x21, 0x75, 0xc5, 0xf6, 0x3e,
-0xbf, 0xd0, 0xc2, 0xaa, 0x22, 0x4b, 0x84, 0xb9,
-0x3e, 0x08, 0x43, 0x05, 0x14, 0x82, 0x60, 0x19,
-0x5d, 0x92, 0x79, 0x25, 0x3d, 0xde, 0x5f, 0x68,
-0xd2, 0xed, 0x42, 0x05, 0xbd, 0x49, 0x85, 0x2d,
-0x92, 0x4f, 0x90, 0xf5, 0x90, 0xaa, 0x74, 0x4b,
-0x6a, 0x87, 0x4c, 0x43, 0x41, 0xe5, 0x5e, 0x49,
-0x65, 0xce, 0x93, 0x5d, 0xb1, 0xdf, 0xbf, 0xbc,
-0xe0, 0xe6, 0x8e, 0x5b, 0x62, 0xb7, 0xf8, 0x0b,
-0x5c, 0x05, 0xa1, 0x8e, 0xf6, 0xf8, 0x2d, 0xfe,
-0x72, 0x57, 0xc1, 0x52, 0xda, 0xce, 0xae, 0x94,
-0x93, 0x02, 0x8d, 0xb6, 0xab, 0x65, 0x4d, 0xe5,
-0xb0, 0x30, 0x3d, 0x3f, 0xb3, 0x84, 0x69, 0xda,
-0x9f, 0xeb, 0xe5, 0xb7, 0x48, 0xb3, 0x84, 0x2f,
-0xc3, 0x9f, 0xeb, 0xd3, 0xd7, 0x17, 0xdc, 0x2a,
-0x7c, 0x11, 0x6e, 0xd1, 0xcb, 0x83, 0xcc, 0x10,
-0xd1, 0x58, 0x2c, 0x59, 0xf4, 0x0f, 0xbb, 0xdf,
-0xcf, 0x1c, 0x47, 0x29, 0x48, 0x54, 0xc1, 0xa6,
-0x37, 0x4a, 0x58, 0x40, 0x48, 0x88, 0x2e, 0x90,
-0x85, 0x11, 0x89, 0x7d, 0x49, 0x0a, 0x95, 0x14,
-0x16, 0x10, 0xd2, 0xef, 0xb3, 0x96, 0xc8, 0x5a,
-0x04, 0xd4, 0xae, 0x0a, 0x95, 0x30, 0xd7, 0x0f,
-0x95, 0x54, 0x36, 0x0c, 0x95, 0x19, 0x85, 0x29,
-0x63, 0x69, 0xfa, 0x7d, 0x7e, 0xd1, 0x5e, 0x50,
-0x2d, 0xfc, 0x37, 0xf8, 0x92, 0x56, 0x1e, 0x2d,
-0x58, 0x63, 0x1a, 0x61, 0xe1, 0x04, 0x7c, 0x09,
-0x52, 0xc6, 0xff, 0x82, 0x72, 0xc7, 0xfc, 0x88,
-0x61, 0x38, 0xc1, 0xfe, 0x5e, 0x05, 0x94, 0x1b,
-0x0d, 0xd8, 0x41, 0xe7, 0x76, 0xf6, 0x87, 0xfb,
-0x5b, 0x66, 0x4c, 0x63, 0x06, 0xbd, 0x8a, 0x19,
-0xb6, 0xf5, 0xc3, 0x1c, 0x5b, 0x87, 0x07, 0x3d,
-0x53, 0x44, 0x52, 0x3a, 0x3c, 0x95, 0xad, 0xb2,
-0x72, 0x84, 0x5d, 0x91, 0xd4, 0x9b, 0x98, 0x01,
-0xc1, 0x7e, 0x4f, 0x90, 0x5d, 0xd1, 0xd3, 0xef,
-0xc3, 0xfe, 0x05, 0xd9, 0x9e, 0x4a, 0xc4, 0x95,
-0x91, 0x32, 0x74, 0x6e, 0x10, 0x4c, 0xb6, 0x98,
-0x57, 0x6c, 0xf3, 0x43, 0x84, 0x20, 0x5d, 0xa9,
-0xce, 0x90, 0xcb, 0x22, 0x29, 0x43, 0x3a, 0x22,
-0x04, 0xfb, 0xb9, 0xf1, 0x22, 0xf3, 0xe7, 0x2b,
-0xd5, 0x2f, 0xca, 0x92, 0xed, 0xfe, 0x5f, 0x84,
-0x0a, 0xc2, 0x1d, 0xab, 0x55, 0xb6, 0xa8, 0x22,
-0x86, 0x21, 0x97, 0x33, 0xa3, 0x7f, 0xb5, 0x7a,
-0x95, 0x5c, 0xde, 0x59, 0xa0, 0xf6, 0xaf, 0x0e,
-0xb2, 0x2b, 0xd4, 0x36, 0x3f, 0x21, 0x3e, 0x73,
-0xd6, 0x14, 0xa6, 0x0c, 0x8f, 0x1a, 0x32, 0x0d,
-0x36, 0x34, 0xfb, 0x78, 0x6f, 0x96, 0xc2, 0x1d,
-0x15, 0x95, 0x37, 0xb5, 0xc1, 0x43, 0xcc, 0xb8,
-0x9a, 0x0d, 0x73, 0x7a, 0x44, 0x5a, 0xc3, 0x66,
-0xe0, 0xa6, 0xb6, 0xe9, 0x0f, 0xb1, 0x85, 0xe4,
-0x51, 0x5b, 0xdb, 0xa6, 0xd3, 0xe9, 0x56, 0xc8,
-0xf8, 0x6c, 0xb8, 0x60, 0xb5, 0xf0, 0x25, 0xf8,
-0x2c, 0x95, 0x54, 0x6e, 0xfc, 0x39, 0x2d, 0x0f,
-0x4b, 0xab, 0xe1, 0x26, 0x6e, 0x08, 0x15, 0xcc,
-0x98, 0x4e, 0xcb, 0x35, 0xdb, 0xf7, 0x55, 0x08,
-0x7f, 0x46, 0x6f, 0x09, 0x97, 0x6f, 0x97, 0x0a,
-0x05, 0xb6, 0xcc, 0xc2, 0x65, 0x15, 0x05, 0x68,
-0xdc, 0x62, 0x1a, 0xfc, 0x0a, 0x0b, 0x41, 0xe6,
-0xfd, 0xfd, 0xa5, 0x1c, 0x56, 0xdf, 0xdc, 0x06,
-0xa5, 0xec, 0x13, 0x58, 0x6a, 0x7c, 0x0b, 0x12,
-0xba, 0xf1, 0x36, 0x09, 0xaf, 0x70, 0xc3, 0xda,
-0xee, 0x03, 0x0c, 0xdc, 0x44, 0xa6, 0xd3, 0xae,
-0xf0, 0xd7, 0x2a, 0x2a, 0x6e, 0x12, 0xff, 0x8c,
-0xbe, 0x1a, 0xfe, 0x4c, 0x45, 0x31, 0x1a, 0xdb,
-0xb8, 0x31, 0x6d, 0xba, 0x71, 0x45, 0x4b, 0xcf,
-0x4f, 0xd7, 0x4d, 0x05, 0xdf, 0xe8, 0x40, 0x27,
-0x70, 0xed, 0x0b, 0x45, 0x68, 0xfc, 0x49, 0x45,
-0xf9, 0x0b, 0xec, 0xca, 0x29, 0xed, 0xcb, 0x68,
-0xdc, 0xd6, 0x71, 0x2a, 0xfc, 0xb7, 0x15, 0xe5,
-0x76, 0x7f, 0x72, 0x93, 0xf0, 0x0d, 0x7a, 0x2a,
-0xbc, 0xa8, 0xa2, 0xf8, 0x05, 0x11, 0x8d, 0x69,
-0x86, 0x71, 0xab, 0x71, 0xe5, 0x36, 0x8a, 0x4f,
-0xb8, 0x56, 0x9f, 0x6e, 0xbb, 0x5f, 0xe2, 0xcf,
-0x5f, 0xdd, 0xf6, 0x42, 0x41, 0xfa, 0xf9, 0x1b,
-0x3d, 0x61, 0x7c, 0x3e, 0x2c, 0xec, 0xf0, 0x84,
-0x5b, 0x2b, 0xec, 0xdf, 0x3b, 0xe0, 0x7a, 0x40,
-0x27, 0x03, 0x86, 0xff, 0x69, 0x37, 0x1c, 0xd1,
-0xad, 0xa6, 0x47, 0xba, 0x15, 0x1d, 0x11, 0xb5,
-0xad, 0xb6, 0x42, 0xe1, 0x36, 0xba, 0x3a, 0x7c,
-0x55, 0x05, 0xf3, 0x4e, 0x86, 0xc1, 0xfc, 0x0f,
-0x73, 0x3b, 0x86, 0x51, 0xc9, 0x8c, 0x2f, 0x55,
-0x94, 0xdb, 0xee, 0xff, 0xac, 0x56, 0x1e, 0x14,
-0x56, 0xc2, 0x17, 0x41, 0xd2, 0x0b, 0xd6, 0x0b,
-0xb7, 0xc2, 0x97, 0xa1, 0x3c, 0x6d, 0x08, 0xc1,
-0x94, 0x91, 0x7e, 0x9f, 0xcf, 0xb6, 0x82, 0x1a,
-0x93, 0xfd, 0x0c, 0x4d, 0x45, 0x20, 0x4c, 0x2b,
-0xd8, 0x27, 0x28, 0xa4, 0x0d, 0x49, 0x35, 0x0c,
-0x6a, 0x1b, 0xef, 0x72, 0x29, 0xbc, 0xa3, 0x42,
-0xbd, 0x89, 0xdd, 0x8f, 0x6e, 0x87, 0x2d, 0x33,
-0xc5, 0x66, 0x84, 0x0d, 0xc3, 0x7e, 0xbf, 0x36,
-0xa7, 0x7d, 0xe9, 0x2d, 0xa5, 0x7f, 0x0e, 0x5d,
-0xcc, 0xdb, 0x74, 0xb4, 0x57, 0xde, 0x22, 0x73,
-0xb7, 0xf3, 0x67, 0x2a, 0x33, 0xc4, 0x82, 0x76,
-0xf4, 0x3f, 0x72, 0x01, 0xd8, 0xe6, 0xc7, 0x2d,
-0xb4, 0x27, 0x6e, 0x09, 0x96, 0xcb, 0x52, 0xab,
-0xd0, 0xae, 0xdf, 0xa2, 0x96, 0x7b, 0x0a, 0xb8,
-0x11, 0x64, 0x46, 0xc8, 0x30, 0xe4, 0x02, 0xcd,
-0x36, 0x3f, 0xa0, 0x85, 0x15, 0x45, 0x92, 0x04,
-0xc4, 0x2f, 0xa0, 0x74, 0x14, 0x72, 0x17, 0xc8,
-0xb6, 0x65, 0xcc, 0x17, 0x02, 0x5e, 0xe1, 0x46,
-0x1a, 0x01, 0x7d, 0xb6, 0xf5, 0xff, 0x69, 0xef,
-0xfc, 0x42, 0xe3, 0x38, 0xee, 0x38, 0xfe, 0x9b,
-0xbb, 0xd9, 0xf3, 0x9e, 0x7d, 0x72, 0x77, 0xa5,
-0xbd, 0x66, 0xd5, 0x08, 0xb3, 0xfa, 0x53, 0x4b,
-0xa6, 0xa4, 0xac, 0x82, 0x95, 0xba, 0x08, 0xa2,
-0x39, 0xdd, 0x9d, 0x7c, 0x12, 0x8e, 0x7c, 0x96,
-0x1c, 0xc5, 0x18, 0x53, 0xd6, 0x46, 0x34, 0x26,
-0x50, 0x90, 0x0d, 0xa5, 0xee, 0x43, 0x9d, 0x39,
-0xf5, 0x9c, 0xaa, 0xc5, 0x85, 0x8b, 0xac, 0x62,
-0x19, 0x04, 0x3d, 0x13, 0xd5, 0xf4, 0x25, 0xd0,
-0x42, 0x8d, 0xf3, 0xd6, 0x93, 0x62, 0xab, 0x2e,
-0xf4, 0xc1, 0xa4, 0xaa, 0xc9, 0x43, 0xa9, 0x6c,
-0xd0, 0x4b, 0xa1, 0x26, 0x2f, 0x86, 0xa2, 0x16,
-0x45, 0xfd, 0xcd, 0xec, 0xdd, 0xed, 0xc8, 0x0d,
-0x86, 0xa4, 0xd0, 0x42, 0x99, 0xef, 0xd3, 0x97,
-0xd9, 0xb9, 0xd5, 0x6f, 0x67, 0x67, 0x7e, 0xf3,
-0xf9, 0xed, 0xea, 0xa4, 0x58, 0x17, 0xe7, 0x37,
-0xbd, 0xc2, 0xe2, 0xac, 0x04, 0x54, 0x30, 0x05,
-0x52, 0xf2, 0x52, 0x9f, 0x87, 0x26, 0x21, 0x5a,
-0xd0, 0x28, 0xf1, 0xe4, 0xd9, 0x1e, 0xcc, 0xf6,
-0x30, 0x15, 0x4f, 0x73, 0x43, 0x98, 0x87, 0x20,
-0x0c, 0x7c, 0x4c, 0x31, 0xff, 0xe0, 0x8e, 0x50,
-0xcf, 0x3f, 0xd1, 0xf5, 0x5e, 0x61, 0x69, 0xb1,
-0x4d, 0xbc, 0x12, 0xff, 0x29, 0x8f, 0x37, 0xf3,
-0x4f, 0x00, 0x67, 0xa8, 0x30, 0x7b, 0x3c, 0x1c,
-0xff, 0x17, 0xd0, 0xa8, 0xf1, 0xcb, 0xa4, 0x91,
-0xa5, 0x9c, 0x3b, 0x3e, 0x49, 0x89, 0xd4, 0x59,
-0xa3, 0x3e, 0x71, 0x63, 0xc2, 0xe0, 0xbc, 0x17,
-0x2b, 0x0c, 0x4d, 0x24, 0x1a, 0x26, 0x19, 0x86,
-0xc5, 0x6e, 0x3f, 0xa4, 0x82, 0x78, 0x11, 0xd6,
-0xe1, 0x30, 0x62, 0x2d, 0xb6, 0xac, 0x83, 0x40,
-0xdf, 0x98, 0xc8, 0x48, 0x4a, 0x7f, 0xa3, 0x9f,
-0x1d, 0x2b, 0xb6, 0x2d, 0x94, 0x7f, 0x47, 0xfa,
-0x6b, 0xc7, 0x58, 0x9b, 0x93, 0xbb, 0x47, 0xfa,
-0x33, 0xe3, 0xc5, 0x36, 0x87, 0xde, 0x25, 0x9d,
-0xb9, 0x63, 0xc5, 0x49, 0x8b, 0xaa, 0xfd, 0xbb,
-0x8d, 0xf3, 0x2b, 0xdf, 0xf2, 0xa7, 0xe6, 0xe8,
-0x7b, 0x68, 0x4e, 0xfb, 0x53, 0x57, 0xd3, 0xd2,
-0x78, 0xa1, 0xa9, 0xc9, 0x16, 0x35, 0x7e, 0x23,
-0xfc, 0xf6, 0x14, 0x6b, 0x14, 0xdf, 0x45, 0x58,
-0xc0, 0x18, 0x65, 0x3c, 0x0b, 0x8d, 0x78, 0x76,
-0x5d, 0x6f, 0x2e, 0xb0, 0x5d, 0x3a, 0x42, 0x60,
-0x2e, 0xdc, 0xc8, 0x7c, 0x1b, 0x8d, 0xed, 0x96,
-0xb3, 0x9d, 0x36, 0x9f, 0x3e, 0x67, 0xb9, 0xe5,
-0x11, 0x34, 0x6a, 0xff, 0xb3, 0x45, 0x3b, 0x47,
-0xf3, 0xc4, 0x61, 0x46, 0xd1, 0x3e, 0x49, 0x5f,
-0x27, 0xe9, 0x5c, 0xbe, 0xe8, 0x9d, 0xa4, 0x27,
-0x20, 0x9d, 0xbb, 0x27, 0x5a, 0xd2, 0x24, 0xad,
-0xce, 0x07, 0xb3, 0x53, 0xa4, 0x40, 0xcb, 0x2b,
-0x9b, 0xa2, 0xec, 0x99, 0x75, 0xc4, 0x7f, 0x28,
-0x6e, 0x98, 0xce, 0x09, 0x57, 0x98, 0x2b, 0xea,
-0xe9, 0xf7, 0x1a, 0xb1, 0x12, 0x54, 0xa1, 0x0f,
-0xf6, 0x92, 0x18, 0x67, 0x55, 0xab, 0x8f, 0xa2,
-0xa9, 0x44, 0xe6, 0x16, 0x1a, 0xb5, 0x7f, 0x2a,
-0x31, 0x49, 0xca, 0xb5, 0x4e, 0x1f, 0x8e, 0xc5,
-0x27, 0x61, 0xbd, 0x36, 0xe0, 0xb7, 0x44, 0xe6,
-0xe0, 0xa4, 0x75, 0xf2, 0xee, 0xc0, 0xcb, 0x2d,
-0x6a, 0x3c, 0x49, 0xe3, 0x62, 0xe6, 0x4c, 0xe5,
-0x0d, 0xcf, 0xbe, 0x4f, 0x71, 0xf7, 0x9f, 0x7d,
-0xc1, 0x33, 0xee, 0x23, 0x18, 0xfc, 0x39, 0x04,
-0x83, 0x8b, 0xf1, 0x25, 0xfe, 0x3d, 0xef, 0x67,
-0xea, 0xf8, 0xbf, 0x38, 0x36, 0xfc, 0xb0, 0x72,
-0x7b, 0xf9, 0xa5, 0xe4, 0x3e, 0x61, 0x7e, 0xb3,
-0xfc, 0xd2, 0xe8, 0xbe, 0x89, 0xb1, 0x07, 0xf3,
-0xb7, 0x7b, 0xde, 0x4f, 0xee, 0x1b, 0x1e, 0x5b,
-0x17, 0xe6, 0x90, 0x1a, 0xcf, 0xe0, 0xdb, 0xe3,
-0x3b, 0x7f, 0xfc, 0xed, 0xd3, 0x27, 0x5b, 0xd2,
-0xdc, 0x79, 0xfa, 0xc9, 0xd6, 0xe0, 0xa7, 0xc7,
-0x37, 0xae, 0xed, 0x6c, 0x6e, 0x6f, 0x0d, 0x5e,
-0x3e, 0xbe, 0x23, 0xcc, 0x36, 0xfc, 0x07, 0x7a,
-0xf5, 0x46, 0xf2, 0xe0, 0xf0, 0x68, 0x65, 0x7e,
-0x7a, 0x68, 0xeb, 0x4b, 0xb7, 0xb2, 0x3b, 0x95,
-0x7f, 0xfc, 0xe0, 0xd5, 0x9f, 0x8f, 0xbe, 0xfd,
-0xd1, 0x68, 0xe5, 0xfa, 0xf6, 0xd0, 0xce, 0x68,
-0xef, 0x47, 0xa3, 0x4f, 0xaf, 0x6f, 0xaa, 0xfd,
-0x87, 0x2e, 0x8f, 0x6f, 0x5c, 0xbb, 0xb3, 0xf9,
-0x64, 0x6b, 0xa8, 0x1e, 0xc6, 0xf6, 0x90, 0x0c,
-0x6c, 0xf3, 0x13, 0xec, 0x3f, 0xbe, 0x21, 0x23,
-0x54, 0xfb, 0x77, 0x1f, 0x28, 0x6c, 0xcc, 0x7f,
-0x63, 0xf3, 0xea, 0xd9, 0x41, 0xf1, 0xc1, 0x5f,
-0xe3, 0x07, 0xd1, 0xfc, 0xa5, 0xed, 0x4e, 0xf9,
-0xc9, 0x56, 0xb7, 0x2b, 0xcd, 0xdf, 0xbe, 0xbf,
-0x2b, 0xa0, 0xec, 0x0c, 0x5b, 0xb2, 0x7a, 0x5b,
-0x93, 0xb5, 0xae, 0x99, 0xcc, 0x12, 0xbc, 0x49,
-0x5b, 0x56, 0x40, 0xb6, 0xd0, 0xe4, 0x4a, 0x0c,
-0x8d, 0xdf, 0x4b, 0x89, 0x3a, 0x9e, 0x38, 0xff,
-0x05, 0x1f, 0xba, 0x20, 0xb0, 0x50, 0x80, 0xa2,
-0x7d, 0x57, 0x24, 0x6a, 0x34, 0x98, 0xa8, 0x4f,
-0xc8, 0x16, 0x43, 0xed, 0x1f, 0x23, 0x81, 0xc8,
-0xcf, 0x2e, 0x34, 0xf9, 0x70, 0x95, 0x78, 0x20,
-0x8d, 0xe4, 0xc3, 0xa0, 0x75, 0x77, 0x7e, 0x46,
-0xe6, 0x11, 0x90, 0x16, 0x2b, 0x21, 0xb6, 0xc9,
-0xfd, 0xb0, 0xc4, 0x43, 0x6c, 0x73, 0x11, 0xe4,
-0xce, 0x72, 0xc1, 0x6f, 0x27, 0xd4, 0xfe, 0x66,
-0xee, 0x62, 0x32, 0xc5, 0xb3, 0x06, 0xcc, 0x4d,
-0xbf, 0x0c, 0x1d, 0xe5, 0x3d, 0xe1, 0xc4, 0xe8,
-0xe0, 0x47, 0x9b, 0xa6, 0xc7, 0x56, 0xe3, 0x01,
-0x08, 0xea, 0x7c, 0x88, 0xd4, 0xe5, 0x5a, 0x2a,
-0x1f, 0x2a, 0x26, 0x52, 0x12, 0xb1, 0x10, 0x97,
-0x55, 0x20, 0xd6, 0x97, 0xfc, 0x5a, 0xa3, 0x55,
-0xa1, 0xbd, 0x04, 0xf9, 0x30, 0xb0, 0x16, 0xe9,
-0x41, 0x92, 0xe4, 0xc3, 0xc5, 0x5d, 0xcf, 0xac,
-0x0e, 0xd1, 0xb1, 0xd2, 0x97, 0xab, 0xf9, 0x0f,
-0xec, 0x3e, 0x7a, 0xba, 0xdc, 0x7a, 0x93, 0xfe,
-0xd2, 0xee, 0x82, 0xb1, 0x52, 0x6b, 0x35, 0xf7,
-0x81, 0xfd, 0x75, 0x2a, 0xcd, 0x9c, 0xf2, 0x76,
-0xdc, 0xac, 0xb5, 0x40, 0x1b, 0x38, 0x0f, 0x8c,
-0x8a, 0x24, 0x1d, 0xa7, 0x06, 0xbf, 0x92, 0xbb,
-0x8d, 0x53, 0x33, 0xfc, 0xc8, 0xb0, 0xe8, 0x03,
-0x35, 0x8a, 0xc9, 0x17, 0x2f, 0x60, 0x02, 0xde,
-0x01, 0x59, 0xec, 0x31, 0x1c, 0xa4, 0x00, 0xeb,
-0x3c, 0x6a, 0x92, 0xb0, 0xcc, 0xa5, 0xc8, 0x8c,
-0x7e, 0x74, 0x7e, 0xf1, 0xf8, 0x8e, 0x5b, 0x1e,
-0x16, 0xeb, 0x22, 0x71, 0x58, 0xf2, 0x81, 0x1b,
-0x35, 0xc5, 0x93, 0xbb, 0x39, 0xab, 0x8b, 0x9a,
-0xa5, 0x18, 0x1e, 0xda, 0xd5, 0xbf, 0x3e, 0xec,
-0x32, 0xd1, 0xbb, 0x98, 0xf1, 0x6d, 0x9e, 0x68,
-0x80, 0x09, 0x0d, 0x4d, 0x3b, 0x6f, 0xf6, 0xb7,
-0x08, 0x8b, 0x05, 0xe2, 0x8b, 0x32, 0x82, 0xcc,
-0x84, 0xc1, 0xd1, 0xbb, 0x0f, 0xd3, 0xa2, 0x45,
-0xfc, 0xea, 0xf1, 0x34, 0xdc, 0x80, 0x83, 0x1e,
-0x89, 0x9e, 0x28, 0xb0, 0x3a, 0x1f, 0x66, 0x0b,
-0xb8, 0xdf, 0x49, 0x50, 0x2c, 0xe0, 0xb6, 0xe8,
-0xff, 0x58, 0x80, 0x62, 0x65, 0xb5, 0x47, 0x1e,
-0x32, 0x2b, 0xb5, 0xe6, 0xef, 0x43, 0x32, 0xf8,
-0x77, 0x3e, 0xe4, 0xac, 0x81, 0x85, 0x4d, 0xd3,
-0xfc, 0x7b, 0x11, 0x0c, 0xd3, 0xa3, 0x2f, 0x21,
-0xcd, 0x9a, 0xad, 0x1b, 0xf8, 0x90, 0xd6, 0xcd,
-0x6a, 0xd8, 0x92, 0xb2, 0x6a, 0x56, 0x14, 0x0f,
-0x13, 0xfc, 0xe6, 0x8d, 0xe0, 0x4d, 0x17, 0x06,
-0x90, 0xdf, 0x7e, 0x28, 0x2e, 0xd3, 0x93, 0xd7,
-0xcb, 0xf0, 0xd0, 0x04, 0xb5, 0x79, 0x14, 0x0f,
-0xf9, 0x2c, 0x3e, 0xf4, 0x9f, 0x69, 0xa9, 0x35,
-0x2b, 0xda, 0x22, 0x19, 0x0e, 0xcf, 0x2f, 0x78,
-0x38, 0x34, 0xb6, 0xb8, 0xf0, 0xba, 0x11, 0x2d,
-0xb8, 0xbf, 0x47, 0xf3, 0x53, 0xc4, 0x53, 0x24,
-0x0e, 0xe4, 0xd1, 0xd7, 0x8d, 0x8d, 0x37, 0xb5,
-0x6e, 0x1a, 0x87, 0x86, 0x9b, 0xfb, 0x69, 0x01,
-0x07, 0x3c, 0xc3, 0x9d, 0xc0, 0x70, 0x89, 0x58,
-0x17, 0x56, 0x40, 0x85, 0xc9, 0x3c, 0x63, 0xa2,
-0xe9, 0x53, 0x00, 0x31, 0xf3, 0x4d, 0x9c, 0x05,
-0x8e, 0x88, 0x96, 0xd5, 0x6b, 0xa5, 0x72, 0xc3,
-0x84, 0x2d, 0xa0, 0xc4, 0x33, 0x85, 0x34, 0x58,
-0x0e, 0x3a, 0x4f, 0xb9, 0x53, 0x08, 0x8a, 0x7f,
-0x0a, 0xd2, 0xae, 0xd1, 0x00, 0xc5, 0x54, 0x93,
-0x18, 0x15, 0x5e, 0x25, 0x82, 0xdf, 0x3a, 0x82,
-0xa3, 0x96, 0xb3, 0x26, 0xcd, 0x9b, 0x56, 0xfb,
-0x5a, 0xe2, 0xbb, 0x04, 0x5b, 0x8a, 0xce, 0x3a,
-0x96, 0x96, 0x1d, 0xec, 0xe8, 0xa9, 0x43, 0xca,
-0xf5, 0x92, 0x84, 0x73, 0x81, 0x77, 0x04, 0xbd,
-0x2e, 0x59, 0x8b, 0x5d, 0xe0, 0x4b, 0x68, 0x92,
-0x6b, 0x20, 0x4c, 0x1b, 0x9a, 0xd8, 0x85, 0x92,
-0x68, 0x51, 0xf2, 0x49, 0x31, 0x3f, 0x22, 0xe9,
-0xf1, 0x0d, 0xd7, 0x8c, 0xf8, 0x90, 0x0e, 0x94,
-0xcf, 0x04, 0x6d, 0xa7, 0xd2, 0x0f, 0xc9, 0x85,
-0x2b, 0x02, 0x1d, 0xed, 0xd5, 0x66, 0x3c, 0x0c,
-0xa1, 0x57, 0xa6, 0x1d, 0xe4, 0x73, 0x34, 0xa3,
-0x21, 0x16, 0xce, 0xf0, 0xdd, 0x15, 0xab, 0x12,
-0x0f, 0xce, 0x64, 0x4c, 0x32, 0x41, 0x62, 0x11,
-0x6e, 0xa1, 0xf9, 0x4a, 0x80, 0x69, 0xe7, 0x1d,
-0x2a, 0x5b, 0xd0, 0x84, 0x87, 0x5c, 0x75, 0x3f,
-0xcd, 0x07, 0x70, 0x89, 0xec, 0x87, 0xec, 0x2c,
-0x3c, 0x2a, 0x1f, 0x21, 0x07, 0x20, 0xcb, 0xed,
-0x47, 0xf4, 0x12, 0x9a, 0xa3, 0x68, 0x7a, 0x2e,
-0x81, 0x34, 0x11, 0x1f, 0x32, 0x32, 0x01, 0xde,
-0x32, 0xf2, 0x21, 0xc6, 0xc3, 0x3d, 0xde, 0xee,
-0xc7, 0x10, 0x0b, 0xf9, 0xb4, 0xc0, 0xc2, 0x02,
-0x99, 0xe7, 0x41, 0x68, 0xb8, 0x12, 0x0f, 0xce,
-0xb7, 0x9b, 0x72, 0xfe, 0xfc, 0xa4, 0x8c, 0x34,
-0x58, 0xc5, 0x32, 0x6a, 0xb6, 0xdc, 0xe0, 0xc3,
-0xb2, 0x98, 0x6f, 0x82, 0x0f, 0xd5, 0xf5, 0x45,
-0x20, 0xe3, 0xb4, 0x86, 0xf3, 0xa7, 0x64, 0x79,
-0x79, 0x13, 0x59, 0x8a, 0xa1, 0xc9, 0xa1, 0xa1,
-0xa1, 0xc9, 0x44, 0x3c, 0xc6, 0x18, 0x96, 0x94,
-0xf7, 0x1d, 0xdf, 0x30, 0x61, 0x2f, 0xae, 0x23,
-0xa7, 0x4a, 0x52, 0x24, 0xeb, 0x15, 0x6b, 0xd8,
-0x82, 0x06, 0xea, 0x86, 0x91, 0x28, 0x1e, 0x93,
-0xfa, 0xb6, 0xe4, 0x43, 0xce, 0xba, 0x30, 0xdb,
-0xc4, 0x91, 0x0f, 0x59, 0x1d, 0x0b, 0x9b, 0x06,
-0x94, 0xf5, 0x35, 0xec, 0xb5, 0x96, 0x78, 0xd5,
-0x33, 0x17, 0x63, 0x5d, 0x48, 0x83, 0x58, 0x62,
-0x0b, 0x3e, 0x9c, 0x43, 0x12, 0xdb, 0x3b, 0x87,
-0x09, 0xa3, 0x22, 0xf8, 0x70, 0x0e, 0x94, 0xf5,
-0xc5, 0xae, 0xca, 0x24, 0x83, 0x39, 0xb7, 0xec,
-0x49, 0x53, 0xc2, 0xfc, 0x63, 0xbb, 0xf0, 0x6d,
-0x62, 0xf3, 0x3f, 0x04, 0x16, 0xa2, 0x4e, 0xac,
-0x9d, 0x37, 0xd7, 0x17, 0xf6, 0xe7, 0xd3, 0xd0,
-0x0e, 0x89, 0x8c, 0x59, 0xe1, 0x01, 0xdc, 0x88,
-0x63, 0x46, 0xae, 0xc0, 0x4c, 0x1f, 0xe6, 0x9f,
-0x18, 0xa9, 0xac, 0x61, 0x8e, 0x46, 0x53, 0x52,
-0xd7, 0x57, 0xc0, 0x8e, 0xc0, 0x7e, 0x88, 0xcf,
-0xd6, 0xaa, 0xfc, 0x08, 0xd9, 0x4f, 0xb2, 0xbc,
-0xf2, 0x88, 0x9e, 0x6f, 0x11, 0x77, 0x90, 0x3f,
-0x9a, 0x3e, 0x92, 0xdc, 0x1f, 0xc7, 0x3b, 0xc8,
-0x9b, 0xe3, 0x53, 0xc4, 0xf2, 0xfb, 0x9b, 0xc1,
-0xfe, 0x53, 0xf1, 0x05, 0xf8, 0x05, 0xf8, 0x2c,
-0x65, 0xc5, 0x29, 0x7c, 0x88, 0xb9, 0x53, 0x9a,
-0x95, 0x46, 0x8b, 0x7a, 0xbf, 0x28, 0x0c, 0xb0,
-0x96, 0x62, 0x7c, 0xa2, 0xb2, 0xc0, 0xfb, 0x59,
-0x4b, 0x26, 0xee, 0xc0, 0x3d, 0xda, 0x5f, 0x48,
-0x15, 0x43, 0xc3, 0x52, 0x13, 0x71, 0xc7, 0x5a,
-0x25, 0x56, 0x33, 0x9e, 0x2c, 0x0d, 0x56, 0x5c,
-0x7f, 0xc4, 0x85, 0x1f, 0x95, 0x99, 0x30, 0xa6,
-0x7d, 0x2d, 0x6c, 0x49, 0xd9, 0xd7, 0x21, 0x58,
-0x29, 0x08, 0xc3, 0x2d, 0x65, 0x7c, 0xa0, 0x1b,
-0xb3, 0xb4, 0xfa, 0xf2, 0xe4, 0xee, 0x67, 0xbc,
-0xd7, 0x8a, 0xd6, 0x57, 0xa1, 0xc1, 0x87, 0x3c,
-0x77, 0x4e, 0x98, 0x4e, 0xeb, 0x63, 0xe4, 0x43,
-0x4b, 0x60, 0xe1, 0x22, 0x9c, 0xb3, 0xcd, 0x90,
-0x0f, 0x9b, 0xe3, 0x99, 0x67, 0xb9, 0xd7, 0xed,
-0xb4, 0x93, 0xcf, 0xf3, 0x13, 0xd3, 0x45, 0xdb,
-0x31, 0xf2, 0xc4, 0x62, 0x0c, 0xd3, 0x8e, 0x81,
-0xf9, 0x27, 0x07, 0xd8, 0x42, 0xf3, 0x40, 0xa2,
-0xf5, 0x8e, 0xf3, 0x21, 0xac, 0x8c, 0xbb, 0x64,
-0xe6, 0xb3, 0x66, 0x0d, 0x39, 0x37, 0x41, 0x14,
-0x31, 0xc4, 0xac, 0xd7, 0x0b, 0x25, 0x88, 0x78,
-0x5e, 0xf0, 0x21, 0x87, 0x2a, 0x43, 0x1a, 0xa4,
-0xb1, 0x32, 0x43, 0x50, 0xa4, 0x2a, 0x28, 0x86,
-0x26, 0xea, 0xcd, 0xf2, 0xaf, 0x91, 0x49, 0x46,
-0x1f, 0x9c, 0x7d, 0xc5, 0x6d, 0x49, 0xb4, 0xb1,
-0xf5, 0x07, 0x9d, 0x87, 0x53, 0x2d, 0xf1, 0x49,
-0x34, 0x03, 0x87, 0x8d, 0xd7, 0xea, 0x46, 0xc9,
-0x3f, 0x78, 0xbd, 0x3d, 0x17, 0x33, 0x4b, 0xc8,
-0x87, 0xef, 0xfe, 0xbe, 0x47, 0xec, 0xfe, 0x7b,
-0xbc, 0x74, 0x2d, 0x31, 0x23, 0x79, 0xa0, 0xbd,
-0x01, 0x06, 0x4a, 0xfe, 0x01, 0xf8, 0xda, 0x5b,
-0x23, 0x0f, 0xdf, 0xbd, 0xbd, 0xfc, 0x9d, 0x1b,
-0x2f, 0xbe, 0x35, 0x26, 0xf8, 0xf0, 0xfd, 0x3a,
-0x1f, 0x2e, 0x47, 0x7c, 0xb8, 0xeb, 0x19, 0xf7,
-0x50, 0xc4, 0x87, 0xc7, 0x05, 0x1f, 0xee, 0xd4,
-0xf9, 0xf0, 0x69, 0xc4, 0x87, 0xbb, 0x78, 0xec,
-0xf3, 0xea, 0xab, 0x02, 0x0b, 0xff, 0x5a, 0xd9,
-0xd9, 0x1e, 0xda, 0xaa, 0x83, 0x22, 0x12, 0xe3,
-0x73, 0xf8, 0x50, 0xfe, 0xf4, 0xbf, 0x6f, 0x62,
-0xff, 0x4f, 0x1b, 0xa0, 0x78, 0xf9, 0x79, 0x7c,
-0x38, 0xd8, 0xe0, 0xc3, 0xee, 0x03, 0xe3, 0x1b,
-0xf3, 0xfd, 0x9b, 0x4f, 0x1e, 0x0f, 0x5d, 0x7a,
-0xa6, 0xff, 0xe3, 0x2f, 0x1e, 0xbd, 0x0f, 0x1e,
-0x11, 0x2f, 0x28, 0x7c, 0xc8, 0xa6, 0xbe, 0xf8,
-0x59, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
-0xb4, 0xb4, 0xb4, 0xb4, 0xfe, 0xdf, 0x25, 0x6b,
-0x07, 0xaa, 0x6b, 0x07, 0x2d, 0x2d, 0x2d, 0x2d,
-0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0xad, 0xe7,
-0x4b, 0xd6, 0x0e, 0x09, 0x5d, 0x3b, 0x68, 0x69,
-0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
-0x69, 0x3d, 0x5f, 0xb2, 0x76, 0x30, 0x65, 0xed,
-0xf0, 0xbf, 0x0e, 0x45, 0x4b, 0x4b, 0x4b, 0x4b,
-0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0xeb, 0xbf,
-0x28, 0x5f, 0xfc, 0xd1, 0x24, 0xf8, 0xe7, 0x79,
-0x1f, 0xb8, 0xf8, 0xce, 0x53, 0xdc, 0x07, 0xf6,
-0xb9, 0xdf, 0x27, 0xd4, 0x3f, 0x6b, 0xf8, 0x50,
-0x25, 0xd1, 0x39, 0x1f, 0x9f, 0x7e, 0xb6, 0xdf,
-0xbf, 0x00, 0x34, 0x34, 0xbf, 0x69, 0xee, 0x33,
-0x01, 0x00,
diff --git a/board/esd/wuh405/wuh405.c b/board/esd/wuh405/wuh405.c
deleted file mode 100644 (file)
index 71d16e4..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF9F);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       unsigned char *dst;
-       ulong len = sizeof(fpgadata);
-       int status;
-       int index;
-       int i;
-
-       dst = malloc(CONFIG_SYS_FPGA_MAX_SIZE);
-       if (gunzip (dst, CONFIG_SYS_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
-               printf ("GUNZIP ERROR - must RESET board to recover\n");
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       status = fpga_boot(dst, len);
-       if (status != 0) {
-               printf("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i=0; i<4; i++) {
-                       len = dst[index];
-                       printf("FPGA: %s\n", &(dst[index+1]));
-                       index += len+3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i=20; i>0; i--) {
-                       printf("Rebooting in %2d seconds \r",i);
-                       for (index=0;index<1000;index++)
-                               udelay(1000);
-               }
-               putc ('\n');
-               do_reset(NULL, 0, 0, NULL);
-       }
-
-       puts("FPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i=0; i<4; i++) {
-               len = dst[index];
-               printf("%s ", &(dst[index+1]));
-               index += len+3;
-       }
-       putc ('\n');
-
-       free(dst);
-
-       /*
-        * Reset FPGA via FPGA_DATA pin
-        */
-       SET_FPGA(FPGA_PRG | FPGA_CLK);
-       udelay(1000); /* wait 1ms */
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Reset external DUARTs
-        */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) | CONFIG_SYS_DUART_RST);
-       udelay(10); /* wait 10us */
-       out_be32((void *)GPIO0_OR,
-                in_be32((void *)GPIO0_OR) & ~CONFIG_SYS_DUART_RST);
-       udelay(1000); /* wait 1ms */
-
-       /*
-        * Enable interrupts in exar duart mcr[3]
-        */
-       out_8((void *)(DUART0_BA + 4), 0x08);
-       out_8((void *)(DUART1_BA + 4), 0x08);
-       out_8((void *)(DUART2_BA + 4), 0x08);
-       out_8((void *)(DUART3_BA + 4), 0x08);
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming WUH405");
-       } else {
-               puts(str);
-       }
-
-       putc ('\n');
-
-       return 0;
-}
index 6c7cd241550046d09b8ce1b99f19ad33a7247fe6..0294926cf5b667a33814420113794574795bd08e 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_ESPT
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "espt"
 
diff --git a/board/esteem192e/Kconfig b/board/esteem192e/Kconfig
deleted file mode 100644 (file)
index f895bc4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_ESTEEM192E
-
-config SYS_BOARD
-       default "esteem192e"
-
-config SYS_CONFIG_NAME
-       default "ESTEEM192E"
-
-endif
diff --git a/board/esteem192e/MAINTAINERS b/board/esteem192e/MAINTAINERS
deleted file mode 100644 (file)
index 8d6634c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ESTEEM192E BOARD
-M:     Conn Clark <clark@esteem.com>
-S:     Maintained
-F:     board/esteem192e/
-F:     include/configs/ESTEEM192E.h
-F:     configs/ESTEEM192E_defconfig
diff --git a/board/esteem192e/Makefile b/board/esteem192e/Makefile
deleted file mode 100644 (file)
index 55d80b6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = esteem192e.o flash.o
diff --git a/board/esteem192e/esteem192e.c b/board/esteem192e/esteem192e.c
deleted file mode 100644 (file)
index b54c614..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Modified By Conn Clark to work with Esteem 192E 7/31/00
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        *
-        * active, NOP, read, precharge, NOP */
-       0x0F27CC04, 0x0EAECC04, 0x00B98C04, 0x00F74C00,
-       0x11FFCC05,             /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        * NOP, Program
-        */
-       0x0F0A8C34, 0x1F354C37, /* last */
-
-       _NOT_USED_,             /* Not used */
-
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        * active, NOP, read, NOP, NOP, NOP, NOP, NOP */
-       0x0F37CC04, 0x0EFECC04, 0x00FDCC04, 0x00FFCC00,
-       0x00FFCC00, 0x01FFCC00, 0x0FFFCC00, 0x1FFFCC05, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        * active, NOP, write, NOP, precharge, NOP */
-       0x0F27CC04, 0x0EAE8C00, 0x01BD4C04, 0x0FFB8C04,
-       0x0FF74C04, 0x1FFFCC05, /* last */
-       _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        * active, NOP, write, NOP, NOP, NOP, NOP, NOP */
-       0x0F37CC04, 0x0EFE8C00, 0x00FD4C00, 0x00FFCC00,
-       0x00FFCC00, 0x01FFCC04, 0x0FFFCC04, 0x1FFFCC05, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        * precharge, NOP, auto_ref, NOP, NOP, NOP */
-       0x0FF74C34, 0x0FFACCB4, 0x0FF5CC34, 0x0FFFCC34,
-       0x0FFFCCB4, 0x1FFFCC35, /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x0FFB8C00, 0x1FF74C03, /* last */
-       _NOT_USED_, _NOT_USED_
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       puts ("Board: Esteem 192E\n");
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size_b0, size_b1;
-
-       /*
-        * Explain frequency of refresh here
-        */
-
-       memctl->memc_mptpr = 0x0200;    /* divide by 32 */
-
-       memctl->memc_mamr = 0x18003112; /*CONFIG_SYS_MAMR_8COL; */ /* 0x18005112 TODO: explain here */
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       /*
-        * Map cs 2 and 3 to the SDRAM banks 0 and 1 at
-        * preliminary addresses - these have to be modified after the
-        * SDRAM size has been determined.
-        */
-
-       memctl->memc_or2 = CONFIG_SYS_OR2_PRELIM;       /* not defined yet */
-       memctl->memc_br2 = CONFIG_SYS_BR2_PRELIM;
-
-       memctl->memc_or3 = CONFIG_SYS_OR3_PRELIM;
-       memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM;
-
-
-       /* perform SDRAM initializsation sequence */
-       memctl->memc_mar = 0x00000088;
-       memctl->memc_mcr = 0x80004830;  /* SDRAM bank 0 execute 8 refresh */
-       memctl->memc_mcr = 0x80004105;  /* SDRAM bank 0 */
-
-       memctl->memc_mcr = 0x80006830;  /* SDRAM bank 1 execute 8 refresh */
-       memctl->memc_mcr = 0x80006105;  /* SDRAM bank 1 */
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_8COL;       /* 0x18803112  start refresh timer TODO: explain here */
-
-/* printf ("banks 0 and 1 are programed\n"); */
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        *
-        */
-       size_b0 = get_ram_size ( (long *)SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
-       size_b1 = get_ram_size ( (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
-
-       printf ("\nbank 0 size %lu\nbank 1 size %lu\n", size_b0, size_b1);
-
-/* printf ("bank 1 size %u\n",size_b1); */
-
-       if (size_b1 == 0) {
-               /*
-                * Adjust refresh rate if bank 0 isn't stuffed
-                */
-               memctl->memc_mptpr = 0x0400;    /* divide by 64 */
-               memctl->memc_br3 &= 0x0FFFFFFFE;
-
-               /*
-                * Adjust OR2 for size of bank 0
-                */
-               memctl->memc_or2 |= 7 * size_b0;
-       } else {
-               if (size_b0 < size_b1) {
-                       memctl->memc_br2 &= 0x00007FFE;
-                       memctl->memc_br3 &= 0x00007FFF;
-
-                       /*
-                        * Adjust OR3 for size of bank 1
-                        */
-                       memctl->memc_or3 |= 15 * size_b1;
-
-                       /*
-                        * Adjust OR2 for size of bank 0
-                        */
-                       memctl->memc_or2 |= 15 * size_b0;
-                       memctl->memc_br2 += (size_b1 + 1);
-               } else {
-                       memctl->memc_br3 &= 0x00007FFE;
-
-                       /*
-                        * Adjust OR2 for size of bank 0
-                        */
-                       memctl->memc_or2 |= 15 * size_b0;
-
-                       /*
-                        * Adjust OR3 for size of bank 1
-                        */
-                       memctl->memc_or3 |= 15 * size_b1;
-                       memctl->memc_br3 += (size_b0 + 1);
-               }
-       }
-
-       /* before leaving set all unused i/o pins to outputs */
-
-       /*
-        *      --*Unused Pin List*--
-        *
-        * group/port           bit number
-        * IP_B                 0,1,3,4,5  Taken care of in pcmcia-cs-x.x.xx
-        * PA                   5,7,8,9,14,15
-        * PB                   22,23,31
-        * PC                   4,5,6,7,10,11,12,13,14,15
-        * PD                   5,6,7
-        *
-        */
-
-       /*
-        *   --*Pin Used for I/O List*--
-        *
-        * port     input bit number    output bit number    either
-        * PB                           18,26,27
-        * PD       3,4                                      8,9,10,11,12,13,14,15
-        *
-        */
-
-       immap->im_ioport.iop_papar &= ~0x05C3;  /* set pins as io */
-       immap->im_ioport.iop_padir |= 0x05C3;   /* set pins as output */
-       immap->im_ioport.iop_paodr &= 0x0008;   /* config pins 9 & 14 as normal outputs */
-       immap->im_ioport.iop_padat |= 0x05C3;   /* set unused pins as high */
-
-       immap->im_cpm.cp_pbpar &= ~0x00001331;  /* set unused port b pins as io */
-       immap->im_cpm.cp_pbdir |= 0x00001331;   /* set unused port b pins as output */
-       immap->im_cpm.cp_pbodr &= ~0x00001331;  /* config bits 18,22,23,26,27 & 31 as normal outputs */
-       immap->im_cpm.cp_pbdat |= 0x00001331;   /* set T/E LED, /NV_CS, & /POWER_ADJ_CS and the rest to a high */
-
-       immap->im_ioport.iop_pcpar &= ~0x0F3F;  /* set unused port c pins as io */
-       immap->im_ioport.iop_pcdir |= 0x0F3F;   /* set unused port c pins as output */
-       immap->im_ioport.iop_pcso &= ~0x0F3F;   /* clear special purpose bit for unused port c pins for clarity */
-       immap->im_ioport.iop_pcdat |= 0x0F3F;   /* set unused port c pins high */
-
-       immap->im_ioport.iop_pdpar &= 0xE000;   /* set pins as io */
-       immap->im_ioport.iop_pddir &= 0xE000;   /* set bit 3 & 4 as inputs */
-       immap->im_ioport.iop_pddir |= 0x07FF;   /* set bits 5 - 15 as outputs */
-       immap->im_ioport.iop_pddat = 0x0055;    /* set alternating pattern on test port */
-
-       return (size_b0 + size_b1);
-}
diff --git a/board/esteem192e/flash.c b/board/esteem192e/flash.c
deleted file mode 100644 (file)
index a121104..0000000
+++ /dev/null
@@ -1,1119 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];   /* info for FLASH chips        */
-
-#ifdef CONFIG_FLASH_16BIT
-#define FLASH_WORD_SIZE        unsigned short
-#define        FLASH_ID_MASK   0xFFFF
-#else
-#define FLASH_WORD_SIZE unsigned long
-#define        FLASH_ID_MASK   0xFFFFFFFF
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-ulong flash_get_size (volatile FLASH_WORD_SIZE * addr, flash_info_t * info);
-
-#ifndef CONFIG_FLASH_16BIT
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-#else
-static int write_short (flash_info_t * info, ulong dest, ushort data);
-#endif
-/*int flash_write (uchar *, ulong, ulong); */
-/*flash_info_t *addr2info (ulong);   */
-
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size_b0, size_b1;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 =
-               flash_get_size ((volatile FLASH_WORD_SIZE *)
-                               FLASH_BASE0_PRELIM, &flash_info[0]);
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", size_b0, size_b0 << 20);
-       }
-
-       size_b1 =
-               flash_get_size ((volatile FLASH_WORD_SIZE *)
-                               FLASH_BASE1_PRELIM, &flash_info[1]);
-
-       if (size_b1 > size_b0) {
-               printf ("## ERROR: "
-                       "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
-                       size_b1, size_b1 << 20, size_b0, size_b0 << 20);
-               flash_info[0].flash_id = FLASH_UNKNOWN;
-               flash_info[1].flash_id = FLASH_UNKNOWN;
-               flash_info[0].sector_count = -1;
-               flash_info[1].sector_count = -1;
-               flash_info[0].size = 0;
-               flash_info[1].size = 0;
-               return (0);
-       }
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
-       memctl->memc_br0 = CONFIG_SYS_FLASH_BASE | 0x00000801;  /*  (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V; */
-
-       /* Re-do sizing to get full correct info */
-
-       size_b0 = flash_get_size ((volatile FLASH_WORD_SIZE *) CONFIG_SYS_FLASH_BASE,
-                                 &flash_info[0]);
-       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       (void) flash_protect (FLAG_PROTECT_SET,
-                             CONFIG_SYS_MONITOR_BASE,
-                             CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                             &flash_info[0]);
-#endif
-
-       if (size_b1) {
-               memctl->memc_or1 =
-                       CONFIG_SYS_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
-               memctl->memc_br1 =
-                       (CONFIG_SYS_FLASH_BASE | 0x00000801) + (size_b0 & BR_BA_MSK);
-               /*((CONFIG_SYS_FLASH_BASE + size_b0) & BR_BA_MSK) |
-                  BR_MS_GPCM | BR_V; */
-
-               /* Re-do sizing to get full correct info */
-               size_b1 =
-                       flash_get_size ((volatile FLASH_WORD_SIZE
-                                        *) (CONFIG_SYS_FLASH_BASE + size_b0),
-                                       &flash_info[1]);
-
-               flash_get_offsets (CONFIG_SYS_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-               /* monitor protection ON by default */
-               (void) flash_protect (FLAG_PROTECT_SET,
-                                     CONFIG_SYS_MONITOR_BASE,
-                                     CONFIG_SYS_MONITOR_BASE + monitor_flash_len -
-                                     1, &flash_info[1]);
-#endif
-       } else {
-               memctl->memc_br1 = 0;   /* invalidate bank */
-
-               flash_info[1].flash_id = FLASH_UNKNOWN;
-               flash_info[1].sector_count = -1;
-       }
-
-       flash_info[0].size = size_b0;
-       flash_info[1].size = size_b1;
-
-       return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
-       int i;
-
-       /* set up sector start adress table */
-       if (info->flash_id & FLASH_BTYPE) {
-               if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00004000;
-                       info->start[2] = base + 0x00008000;
-                       info->start[3] = base + 0x0000C000;
-                       info->start[4] = base + 0x00010000;
-                       info->start[5] = base + 0x00014000;
-                       info->start[6] = base + 0x00018000;
-                       info->start[7] = base + 0x0001C000;
-                       for (i = 8; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00020000) - 0x000E0000;
-                       }
-               } else {
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00008000;
-                       info->start[2] = base + 0x0000C000;
-                       info->start[3] = base + 0x00010000;
-                       for (i = 4; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00020000) - 0x00060000;
-                       }
-               }
-#else
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00002000;
-                       info->start[2] = base + 0x00004000;
-                       info->start[3] = base + 0x00006000;
-                       info->start[4] = base + 0x00008000;
-                       info->start[5] = base + 0x0000A000;
-                       info->start[6] = base + 0x0000C000;
-                       info->start[7] = base + 0x0000E000;
-                       for (i = 8; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00010000) - 0x00070000;
-                       }
-               } else {
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00004000;
-                       info->start[2] = base + 0x00006000;
-                       info->start[3] = base + 0x00008000;
-                       for (i = 4; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00010000) - 0x00030000;
-                       }
-               }
-#endif
-       } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
-                       info->start[i--] = base + info->size - 0x00004000;
-                       info->start[i--] = base + info->size - 0x00008000;
-                       info->start[i--] = base + info->size - 0x0000C000;
-                       info->start[i--] = base + info->size - 0x00010000;
-                       info->start[i--] = base + info->size - 0x00014000;
-                       info->start[i--] = base + info->size - 0x00018000;
-                       info->start[i--] = base + info->size - 0x0001C000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00020000;
-                       }
-
-               } else {
-
-                       info->start[i--] = base + info->size - 0x00008000;
-                       info->start[i--] = base + info->size - 0x0000C000;
-                       info->start[i--] = base + info->size - 0x00010000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00020000;
-                       }
-               }
-#else
-                       info->start[i--] = base + info->size - 0x00002000;
-                       info->start[i--] = base + info->size - 0x00004000;
-                       info->start[i--] = base + info->size - 0x00006000;
-                       info->start[i--] = base + info->size - 0x00008000;
-                       info->start[i--] = base + info->size - 0x0000A000;
-                       info->start[i--] = base + info->size - 0x0000C000;
-                       info->start[i--] = base + info->size - 0x0000E000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00010000;
-                       }
-
-               } else {
-
-                       info->start[i--] = base + info->size - 0x00004000;
-                       info->start[i--] = base + info->size - 0x00006000;
-                       info->start[i--] = base + info->size - 0x00008000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00010000;
-                       }
-               }
-#endif
-       }
-
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-       uchar *boottype;
-       uchar botboot[] = ", bottom boot sect)\n";
-       uchar topboot[] = ", top boot sector)\n";
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:
-               printf ("AMD ");
-               break;
-       case FLASH_MAN_FUJ:
-               printf ("FUJITSU ");
-               break;
-       case FLASH_MAN_SST:
-               printf ("SST ");
-               break;
-       case FLASH_MAN_STM:
-               printf ("STM ");
-               break;
-       case FLASH_MAN_INTEL:
-               printf ("INTEL ");
-               break;
-       default:
-               printf ("Unknown Vendor ");
-               break;
-       }
-
-       if (info->flash_id & 0x0001) {
-               boottype = botboot;
-       } else {
-               boottype = topboot;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM400B:
-               printf ("AM29LV400B (4 Mbit%s", boottype);
-               break;
-       case FLASH_AM400T:
-               printf ("AM29LV400T (4 Mbit%s", boottype);
-               break;
-       case FLASH_AM800B:
-               printf ("AM29LV800B (8 Mbit%s", boottype);
-               break;
-       case FLASH_AM800T:
-               printf ("AM29LV800T (8 Mbit%s", boottype);
-               break;
-       case FLASH_AM160B:
-               printf ("AM29LV160B (16 Mbit%s", boottype);
-               break;
-       case FLASH_AM160T:
-               printf ("AM29LV160T (16 Mbit%s", boottype);
-               break;
-       case FLASH_AM320B:
-               printf ("AM29LV320B (32 Mbit%s", boottype);
-               break;
-       case FLASH_AM320T:
-               printf ("AM29LV320T (32 Mbit%s", boottype);
-               break;
-       case FLASH_INTEL800B:
-               printf ("INTEL28F800B (8 Mbit%s", boottype);
-               break;
-       case FLASH_INTEL800T:
-               printf ("INTEL28F800T (8 Mbit%s", boottype);
-               break;
-       case FLASH_INTEL160B:
-               printf ("INTEL28F160B (16 Mbit%s", boottype);
-               break;
-       case FLASH_INTEL160T:
-               printf ("INTEL28F160T (16 Mbit%s", boottype);
-               break;
-       case FLASH_INTEL320B:
-               printf ("INTEL28F320B (32 Mbit%s", boottype);
-               break;
-       case FLASH_INTEL320T:
-               printf ("INTEL28F320T (32 Mbit%s", boottype);
-               break;
-
-#if 0                          /* enable when devices are available */
-
-       case FLASH_INTEL640B:
-               printf ("INTEL28F640B (64 Mbit%s", boottype);
-               break;
-       case FLASH_INTEL640T:
-               printf ("INTEL28F640T (64 Mbit%s", boottype);
-               break;
-#endif
-
-       default:
-               printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i], info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (volatile FLASH_WORD_SIZE * addr, flash_info_t * info)
-{
-       short i;
-       ulong base = (ulong) addr;
-       FLASH_WORD_SIZE value;
-
-       /* Write auto select command: read Manufacturer ID */
-
-
-#ifndef CONFIG_FLASH_16BIT
-
-       /*
-        * Note: if it is an AMD flash and the word at addr[0000]
-        * is 0x00890089 this routine will think it is an Intel
-        * flash device and may(most likely) cause trouble.
-        */
-
-       addr[0x0000] = 0x00900090;
-       if (addr[0x0000] != 0x00890089) {
-               addr[0x0555] = 0x00AA00AA;
-               addr[0x02AA] = 0x00550055;
-               addr[0x0555] = 0x00900090;
-#else
-
-       /*
-        * Note: if it is an AMD flash and the word at addr[0000]
-        * is 0x0089 this routine will think it is an Intel
-        * flash device and may(most likely) cause trouble.
-        */
-
-       addr[0x0000] = 0x0090;
-
-       if (addr[0x0000] != 0x0089) {
-               addr[0x0555] = 0x00AA;
-               addr[0x02AA] = 0x0055;
-               addr[0x0555] = 0x0090;
-#endif
-       }
-       value = addr[0];
-
-       switch (value) {
-       case (AMD_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case (FUJ_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case (STM_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case (SST_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case (INTEL_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);     /* no or unknown flash  */
-
-       }
-
-       value = addr[1];        /* device ID            */
-
-       switch (value) {
-
-       case (AMD_ID_LV400T & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;          /* => 1 MB              */
-
-       case (AMD_ID_LV400B & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;          /* => 1 MB              */
-
-       case (AMD_ID_LV800T & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;          /* => 2 MB              */
-
-       case (AMD_ID_LV800B & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;          /* => 2 MB              */
-
-       case (AMD_ID_LV160T & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00400000;
-               break;          /* => 4 MB              */
-
-       case (AMD_ID_LV160B & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00400000;
-               break;          /* => 4 MB              */
-#if 0                          /* enable when device IDs are available */
-       case (AMD_ID_LV320T & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 67;
-               info->size = 0x00800000;
-               break;          /* => 8 MB              */
-
-       case (AMD_ID_LV320B & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 67;
-               info->size = 0x00800000;
-               break;          /* => 8 MB              */
-#endif
-
-       case (INTEL_ID_28F800B3T & FLASH_ID_MASK):
-               info->flash_id += FLASH_INTEL800T;
-               info->sector_count = 23;
-               info->size = 0x00200000;
-               break;          /* => 2 MB              */
-
-       case (INTEL_ID_28F800B3B & FLASH_ID_MASK):
-               info->flash_id += FLASH_INTEL800B;
-               info->sector_count = 23;
-               info->size = 0x00200000;
-               break;          /* => 2 MB              */
-
-       case (INTEL_ID_28F160B3T & FLASH_ID_MASK):
-               info->flash_id += FLASH_INTEL160T;
-               info->sector_count = 39;
-               info->size = 0x00400000;
-               break;          /* => 4 MB              */
-
-       case (INTEL_ID_28F160B3B & FLASH_ID_MASK):
-               info->flash_id += FLASH_INTEL160B;
-               info->sector_count = 39;
-               info->size = 0x00400000;
-               break;          /* => 4 MB              */
-
-       case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
-               info->flash_id += FLASH_INTEL320T;
-               info->sector_count = 71;
-               info->size = 0x00800000;
-               break;          /* => 8 MB              */
-
-       case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 71;
-               info->size = 0x00800000;
-               break;          /* => 8 MB              */
-
-#if 0                          /* enable when devices are available */
-       case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
-               info->flash_id += FLASH_INTEL320T;
-               info->sector_count = 135;
-               info->size = 0x01000000;
-               break;          /* => 16 MB             */
-
-       case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 135;
-               info->size = 0x01000000;
-               break;          /* => 16 MB             */
-#endif
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start adress table */
-       if (info->flash_id & FLASH_BTYPE) {
-               if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00004000;
-                       info->start[2] = base + 0x00008000;
-                       info->start[3] = base + 0x0000C000;
-                       info->start[4] = base + 0x00010000;
-                       info->start[5] = base + 0x00014000;
-                       info->start[6] = base + 0x00018000;
-                       info->start[7] = base + 0x0001C000;
-                       for (i = 8; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00020000) - 0x000E0000;
-                       }
-               } else {
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00008000;
-                       info->start[2] = base + 0x0000C000;
-                       info->start[3] = base + 0x00010000;
-                       for (i = 4; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00020000) - 0x00060000;
-                       }
-               }
-#else
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00002000;
-                       info->start[2] = base + 0x00004000;
-                       info->start[3] = base + 0x00006000;
-                       info->start[4] = base + 0x00008000;
-                       info->start[5] = base + 0x0000A000;
-                       info->start[6] = base + 0x0000C000;
-                       info->start[7] = base + 0x0000E000;
-                       for (i = 8; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00010000) - 0x00070000;
-                       }
-               } else {
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00004000;
-                       info->start[2] = base + 0x00006000;
-                       info->start[3] = base + 0x00008000;
-                       for (i = 4; i < info->sector_count; i++) {
-                               info->start[i] =
-                                       base + (i * 0x00010000) - 0x00030000;
-                       }
-               }
-#endif
-       } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
-                       info->start[i--] = base + info->size - 0x00004000;
-                       info->start[i--] = base + info->size - 0x00008000;
-                       info->start[i--] = base + info->size - 0x0000C000;
-                       info->start[i--] = base + info->size - 0x00010000;
-                       info->start[i--] = base + info->size - 0x00014000;
-                       info->start[i--] = base + info->size - 0x00018000;
-                       info->start[i--] = base + info->size - 0x0001C000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00020000;
-                       }
-
-               } else {
-
-                       info->start[i--] = base + info->size - 0x00008000;
-                       info->start[i--] = base + info->size - 0x0000C000;
-                       info->start[i--] = base + info->size - 0x00010000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00020000;
-                       }
-               }
-#else
-                       info->start[i--] = base + info->size - 0x00002000;
-                       info->start[i--] = base + info->size - 0x00004000;
-                       info->start[i--] = base + info->size - 0x00006000;
-                       info->start[i--] = base + info->size - 0x00008000;
-                       info->start[i--] = base + info->size - 0x0000A000;
-                       info->start[i--] = base + info->size - 0x0000C000;
-                       info->start[i--] = base + info->size - 0x0000E000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00010000;
-                       }
-
-               } else {
-
-                       info->start[i--] = base + info->size - 0x00004000;
-                       info->start[i--] = base + info->size - 0x00006000;
-                       info->start[i--] = base + info->size - 0x00008000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00010000;
-                       }
-               }
-#endif
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               addr = (volatile FLASH_WORD_SIZE *) (info->start[i]);
-               info->protect[i] = addr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (volatile FLASH_WORD_SIZE *) info->start[0];
-               if ((info->flash_id & 0xFF00) == FLASH_MAN_INTEL) {
-                       *addr = (0x00F000F0 & FLASH_ID_MASK);   /* reset bank */
-               } else {
-                       *addr = (0x00FF00FF & FLASH_ID_MASK);   /* reset bank */
-               }
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-
-       volatile FLASH_WORD_SIZE *addr =
-               (volatile FLASH_WORD_SIZE *) (info->start[0]);
-       int flag, prot, sect, l_sect, barf;
-       ulong start, now, last;
-       int rcode = 0;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) ||
-           ((info->flash_id > FLASH_AMD_COMP) &&
-            ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL))) {
-               printf ("Can't erase unknown flash type - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n", prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts ();
-       if (info->flash_id < FLASH_AMD_COMP) {
-#ifndef CONFIG_FLASH_16BIT
-               addr[0x0555] = 0x00AA00AA;
-               addr[0x02AA] = 0x00550055;
-               addr[0x0555] = 0x00800080;
-               addr[0x0555] = 0x00AA00AA;
-               addr[0x02AA] = 0x00550055;
-#else
-               addr[0x0555] = 0x00AA;
-               addr[0x02AA] = 0x0055;
-               addr[0x0555] = 0x0080;
-               addr[0x0555] = 0x00AA;
-               addr[0x02AA] = 0x0055;
-#endif
-               /* Start erase on unprotected sectors */
-               for (sect = s_first; sect <= s_last; sect++) {
-                       if (info->protect[sect] == 0) { /* not protected */
-                               addr = (volatile FLASH_WORD_SIZE *) (info->start[sect]);
-                               addr[0] = (0x00300030 & FLASH_ID_MASK);
-                               l_sect = sect;
-                       }
-               }
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts ();
-
-               /* wait at least 80us - let's wait 1 ms */
-               udelay (1000);
-
-               /*
-                * We wait for the last triggered sector
-                */
-               if (l_sect < 0)
-                       goto DONE;
-
-               start = get_timer (0);
-               last = start;
-               addr = (volatile FLASH_WORD_SIZE *) (info->start[l_sect]);
-               while ((addr[0] & (0x00800080 & FLASH_ID_MASK)) !=
-                      (0x00800080 & FLASH_ID_MASK)) {
-                       if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                               printf ("Timeout\n");
-                               return 1;
-                       }
-                       /* show that we're waiting */
-                       if ((now - last) > 1000) {      /* every second */
-                               serial_putc ('.');
-                               last = now;
-                       }
-               }
-
-             DONE:
-               /* reset to read mode */
-               addr = (volatile FLASH_WORD_SIZE *) info->start[0];
-               addr[0] = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
-       } else {
-
-
-               for (sect = s_first; sect <= s_last; sect++) {
-                       if (info->protect[sect] == 0) { /* not protected */
-                               barf = 0;
-#ifndef CONFIG_FLASH_16BIT
-                               addr = (vu_long *) (info->start[sect]);
-                               addr[0] = 0x00200020;
-                               addr[0] = 0x00D000D0;
-                               while (!(addr[0] & 0x00800080));        /* wait for error or finish */
-                               if (addr[0] & 0x003A003A) {     /* check for error */
-                                       barf = addr[0] & 0x003A0000;
-                                       if (barf) {
-                                               barf >>= 16;
-                                       } else {
-                                               barf = addr[0] & 0x0000003A;
-                                       }
-                               }
-#else
-                               addr = (vu_short *) (info->start[sect]);
-                               addr[0] = 0x0020;
-                               addr[0] = 0x00D0;
-                               while (!(addr[0] & 0x0080));    /* wait for error or finish */
-                               if (addr[0] & 0x003A)   /* check for error */
-                                       barf = addr[0] & 0x003A;
-#endif
-                               if (barf) {
-                                       printf ("\nFlash error in sector at %lx\n", (unsigned long) addr);
-                                       if (barf & 0x0002)
-                                               printf ("Block locked, not erased.\n");
-                                       if ((barf & 0x0030) == 0x0030)
-                                               printf ("Command Sequence error.\n");
-                                       if ((barf & 0x0030) == 0x0020)
-                                               printf ("Block Erase error.\n");
-                                       if (barf & 0x0008)
-                                               printf ("Vpp Low error.\n");
-                                       rcode = 1;
-                               } else
-                                       printf (".");
-                               l_sect = sect;
-                       }
-                       addr = (volatile FLASH_WORD_SIZE *) info->start[0];
-                       addr[0] = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
-
-               }
-
-       }
-       printf (" done\n");
-       return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-#ifndef CONFIG_FLASH_16BIT
-       ulong cp, wp, data;
-       int l;
-#else
-       ulong cp, wp;
-       ushort data;
-#endif
-       int i, rc;
-
-#ifndef CONFIG_FLASH_16BIT
-
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i = 0, cp = wp; i < l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-               for (; i < 4 && cnt > 0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt == 0 && i < 4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-
-               if ((rc = write_word (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i = 0; i < 4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i < 4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *) cp);
-       }
-
-       return (write_word (info, wp, data));
-
-#else
-       wp = (addr & ~1);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start byte
-        */
-       if (addr - wp) {
-               data = 0;
-               data = (data << 8) | *src++;
-               --cnt;
-               if ((rc = write_short (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 2;
-       }
-
-       /*
-        * handle word aligned part
-        */
-/*     l = 0; used for debuging  */
-       while (cnt >= 2) {
-               data = 0;
-               for (i = 0; i < 2; ++i) {
-                       data = (data << 8) | *src++;
-               }
-
-/*             if(!l){
-                       printf("%x",data);
-                       l = 1;
-               }  used for debuging */
-
-               if ((rc = write_short (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 2;
-               cnt -= 2;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i < 2; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *) cp);
-       }
-
-       return (write_short (info, wp, data));
-
-
-#endif
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifndef CONFIG_FLASH_16BIT
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
-       vu_long *addr = (vu_long *) (info->start[0]);
-       ulong start, barf;
-       int flag;
-
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_long *) dest) & data) != data) {
-               return (2);
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts ();
-
-       if (info->flash_id > FLASH_AMD_COMP) {
-               /* AMD stuff */
-               addr[0x0555] = 0x00AA00AA;
-               addr[0x02AA] = 0x00550055;
-               addr[0x0555] = 0x00A000A0;
-       } else {
-               /* intel stuff */
-               *addr = 0x00400040;
-       }
-       *((vu_long *) dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts ();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-
-       if (info->flash_id > FLASH_AMD_COMP) {
-
-               while ((*((vu_long *) dest) & 0x00800080) !=
-                      (data & 0x00800080)) {
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               return (1);
-                       }
-               }
-
-       } else {
-
-               while (!(addr[0] & 0x00800080)) {       /* wait for error or finish */
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               return (1);
-                       }
-
-                       if (addr[0] & 0x003A003A) {     /* check for error */
-                               barf = addr[0] & 0x003A0000;
-                               if (barf) {
-                                       barf >>= 16;
-                               } else {
-                                       barf = addr[0] & 0x0000003A;
-                               }
-                               printf ("\nFlash write error at address %lx\n", (unsigned long) dest);
-                               if (barf & 0x0002)
-                                       printf ("Block locked, not erased.\n");
-                               if (barf & 0x0010)
-                                       printf ("Programming error.\n");
-                               if (barf & 0x0008)
-                                       printf ("Vpp Low error.\n");
-                               return (2);
-                       }
-
-
-               }
-
-               return (0);
-
-       }
-
-#else
-
-static int write_short (flash_info_t * info, ulong dest, ushort data)
-{
-       vu_short *addr = (vu_short *) (info->start[0]);
-       ulong start, barf;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_short *) dest) & data) != data) {
-               return (2);
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts ();
-
-       if (info->flash_id < FLASH_AMD_COMP) {
-               /* AMD stuff */
-               addr[0x0555] = 0x00AA;
-               addr[0x02AA] = 0x0055;
-               addr[0x0555] = 0x00A0;
-       } else {
-               /* intel stuff */
-               *addr = 0x00D0;
-               *addr = 0x0040;
-       }
-       *((vu_short *) dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts ();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-
-       if (info->flash_id < FLASH_AMD_COMP) {
-               /* AMD stuff */
-               while ((*((vu_short *) dest) & 0x0080) != (data & 0x0080)) {
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               return (1);
-                       }
-               }
-
-       } else {
-               /* intel stuff */
-               while (!(addr[0] & 0x0080)) {   /* wait for error or finish */
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-                               return (1);
-               }
-
-               if (addr[0] & 0x003A) { /* check for error */
-                       barf = addr[0] & 0x003A;
-                       printf ("\nFlash write error at address %lx\n",
-                               (unsigned long) dest);
-                       if (barf & 0x0002)
-                               printf ("Block locked, not erased.\n");
-                       if (barf & 0x0010)
-                               printf ("Programming error.\n");
-                       if (barf & 0x0008)
-                               printf ("Vpp Low error.\n");
-                       return (2);
-               }
-               *addr = 0x00B0;
-               *addr = 0x0070;
-               while (!(addr[0] & 0x0080)) {   /* wait for error or finish */
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-                               return (1);
-               }
-               *addr = 0x00FF;
-       }
-       return (0);
-}
-
-#endif
-/*-----------------------------------------------------------------------*/
diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds
deleted file mode 100644 (file)
index 59a86bf..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-    net/built-in.o                     (.text*)
-    board/esteem192e/built-in.o                (.text*)
-
-    . = env_offset;
-    common/env_embedded.o              (.text*)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 34d66d5fd2dd59891d77288cbaeb39988dc2b12e..6a8fca61a0d451b6c407c87a3397bde2f1557eaa 100644 (file)
@@ -19,6 +19,7 @@
 #include <asm/fsl_portals.h>
 #include <asm/fsl_liodn.h>
 #include <fm_eth.h>
+#include <hwconfig.h>
 
 #include "../common/qixis.h"
 #include "../common/vsc3316_3308.h"
@@ -333,6 +334,8 @@ int configure_vsc3316_3308(void)
        unsigned int num_vsc16_con, num_vsc08_con;
        u32 serdes1_prtcl, serdes2_prtcl;
        int ret;
+       char buffer[HWCONFIG_BUFFER_SIZE];
+       char *buf = NULL;
 
        serdes1_prtcl = in_be32(&gur->rcwsr[4]) &
                        FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
@@ -385,15 +388,18 @@ int configure_vsc3316_3308(void)
                }
                break;
 
+       case 0x01:
        case 0x02:
        case 0x04:
        case 0x05:
        case 0x06:
+       case 0x07:
        case 0x08:
        case 0x09:
        case 0x0A:
        case 0x0B:
        case 0x0C:
+       case 0x2F:
        case 0x30:
        case 0x32:
        case 0x33:
@@ -487,6 +493,9 @@ int configure_vsc3316_3308(void)
                return -1;
        }
 
+       num_vsc08_con = NUM_CON_VSC3308;
+       /* Configure VSC3308 crossbar switch */
+       ret = select_i2c_ch_pca(I2C_CH_VSC3308);
        switch (serdes2_prtcl) {
 #ifdef CONFIG_PPC_B4420
        case 0x9d:
@@ -494,14 +503,11 @@ int configure_vsc3316_3308(void)
        case 0x9E:
        case 0x9A:
        case 0x98:
-       case 0xb2:
+       case 0x48:
        case 0x49:
        case 0x4E:
-       case 0x8D:
+       case 0x79:
        case 0x7A:
-               num_vsc08_con = NUM_CON_VSC3308;
-               /* Configure VSC3308 crossbar switch */
-               ret = select_i2c_ch_pca(I2C_CH_VSC3308);
                if (!ret) {
                        ret = vsc3308_config(VSC3308_TX_ADDRESS,
                                        vsc08_tx_amc, num_vsc08_con);
@@ -515,6 +521,71 @@ int configure_vsc3316_3308(void)
                        return ret;
                }
                break;
+       case 0x80:
+       case 0x81:
+       case 0x82:
+       case 0x83:
+       case 0x84:
+       case 0x85:
+       case 0x86:
+       case 0x87:
+       case 0x88:
+       case 0x89:
+       case 0x8a:
+       case 0x8b:
+       case 0x8c:
+       case 0x8d:
+       case 0x8e:
+       case 0xb1:
+       case 0xb2:
+               if (!ret) {
+                       /*
+                        * Extract hwconfig from environment since environment
+                        * is not setup properly yet
+                        */
+                       getenv_f("hwconfig", buffer, sizeof(buffer));
+                       buf = buffer;
+
+                       if (hwconfig_subarg_cmp_f("fsl_b4860_serdes2",
+                                                 "sfp_amc", "sfp", buf)) {
+#ifdef CONFIG_SYS_FSL_B4860QDS_XFI_ERR
+                               /* change default VSC3308 for XFI erratum */
+                               ret = vsc3308_config_adjust(VSC3308_TX_ADDRESS,
+                                               vsc08_tx_sfp, num_vsc08_con);
+                               if (ret)
+                                       return ret;
+
+                               ret = vsc3308_config_adjust(VSC3308_RX_ADDRESS,
+                                               vsc08_rx_sfp, num_vsc08_con);
+                               if (ret)
+                                       return ret;
+#else
+                               ret = vsc3308_config(VSC3308_TX_ADDRESS,
+                                               vsc08_tx_sfp, num_vsc08_con);
+                               if (ret)
+                                       return ret;
+
+                               ret = vsc3308_config(VSC3308_RX_ADDRESS,
+                                               vsc08_rx_sfp, num_vsc08_con);
+                               if (ret)
+                                       return ret;
+#endif
+                       } else {
+                               ret = vsc3308_config(VSC3308_TX_ADDRESS,
+                                               vsc08_tx_amc, num_vsc08_con);
+                               if (ret)
+                                       return ret;
+
+                               ret = vsc3308_config(VSC3308_RX_ADDRESS,
+                                               vsc08_rx_amc, num_vsc08_con);
+                               if (ret)
+                                       return ret;
+                       }
+
+               } else {
+                       return ret;
+               }
+               break;
        default:
                printf("WARNING:VSC crossbars programming not supported for: %x"
                                        " SerDes2 Protocol.\n", serdes2_prtcl);
@@ -730,19 +801,23 @@ int config_serdes1_refclks(void)
         * to 122.88MHz
         */
        switch (serdes1_prtcl) {
+       case 0x29:
        case 0x2A:
        case 0x2C:
        case 0x2D:
        case 0x2E:
+       case 0x01:
        case 0x02:
        case 0x04:
        case 0x05:
        case 0x06:
+       case 0x07:
        case 0x08:
        case 0x09:
        case 0x0A:
        case 0x0B:
        case 0x0C:
+       case 0x2F:
        case 0x30:
        case 0x32:
        case 0x33:
@@ -860,6 +935,8 @@ int config_serdes2_refclks(void)
 #endif
        case 0x9E:
        case 0x9A:
+               /* fallthrough */
+       case 0xb1:
        case 0xb2:
                debug("Configuring IDT for PCIe SATA for srds_prctl:%x\n",
                        serdes2_prtcl);
@@ -915,6 +992,14 @@ int board_early_init_r(void)
        const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
        int flash_esel = find_tlb_idx((void *)flashbase, 1);
        int ret;
+       u32 svr = SVR_SOC_VER(get_svr());
+
+       /* Create law for MAPLE only for personalities having MAPLE */
+       if ((svr == SVR_B4860) || (svr == SVR_B4440) ||
+           (svr == SVR_B4420) || (svr == SVR_B4220)) {
+               set_next_law(CONFIG_SYS_MAPLE_MEM_PHYS, LAW_SIZE_16M,
+                            LAW_TRGT_IF_MAPLE);
+       }
 
        /*
         * Remap Boot flash + PROMJET region to caching-inhibited
@@ -1110,7 +1195,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -1136,6 +1221,8 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
 
 /*
index 12df9a8d9f9fb4e10aab67cf8fe5e5a68ec824ce..501d4b3aff5d62a412b4180443e995e2b1f6021e 100644 (file)
@@ -112,7 +112,10 @@ static void initialize_lane_to_slot(void)
                 * Lanes: A,B,C,D: PCI
                 * Lanes: E,F,G,H: XAUI2
                 */
+       case 0xb1:
        case 0xb2:
+       case 0x8c:
+       case 0x8d:
                /*
                 * Configuration:
                 * SERDES: 2
@@ -195,34 +198,34 @@ int board_eth_init(bd_t *bis)
         * all SGMII. RGMII is not supported on this board. Setting SGMII 5 and
         * 6 to on board SGMII phys
         */
-       fm_info_set_phy_address(FM1_DTSEC5, CONFIG_SYS_FM1_DTSEC5_PHY_ADDR);
-       fm_info_set_phy_address(FM1_DTSEC6, CONFIG_SYS_FM1_DTSEC6_PHY_ADDR);
+       fm_info_set_phy_address(FM1_DTSEC5, CONFIG_SYS_FM1_ONBOARD_PHY1_ADDR);
+       fm_info_set_phy_address(FM1_DTSEC6, CONFIG_SYS_FM1_ONBOARD_PHY2_ADDR);
 
        switch (serdes1_prtcl) {
        case 0x29:
        case 0x2a:
                /* Serdes 1: A-B SGMII, Configuring DTSEC 5 and 6 */
-               debug("Setting phy addresses for FM1_DTSEC5: %x and"
-                       "FM1_DTSEC6: %x\n", CONFIG_SYS_FM1_DTSEC5_PHY_ADDR,
-                       CONFIG_SYS_FM1_DTSEC6_PHY_ADDR);
+               debug("Set phy addresses for FM1_DTSEC5:%x, FM1_DTSEC6:%x\n",
+                     CONFIG_SYS_FM1_ONBOARD_PHY1_ADDR,
+                     CONFIG_SYS_FM1_ONBOARD_PHY2_ADDR);
                fm_info_set_phy_address(FM1_DTSEC5,
-                               CONFIG_SYS_FM1_DTSEC5_PHY_ADDR);
+                               CONFIG_SYS_FM1_ONBOARD_PHY1_ADDR);
                fm_info_set_phy_address(FM1_DTSEC6,
-                               CONFIG_SYS_FM1_DTSEC6_PHY_ADDR);
+                               CONFIG_SYS_FM1_ONBOARD_PHY2_ADDR);
                break;
 #ifdef CONFIG_PPC_B4420
        case 0x17:
        case 0x18:
                /* Serdes 1: A-D SGMII, Configuring on board dual SGMII Phy */
-               debug("Setting phy addresses for FM1_DTSEC3: %x and"
-                       "FM1_DTSEC4: %x\n", CONFIG_SYS_FM1_DTSEC5_PHY_ADDR,
-                       CONFIG_SYS_FM1_DTSEC6_PHY_ADDR);
+               debug("Set phy addresses for FM1_DTSEC3:%x, FM1_DTSEC4:%x\n",
+                     CONFIG_SYS_FM1_ONBOARD_PHY1_ADDR,
+                     CONFIG_SYS_FM1_ONBOARD_PHY2_ADDR);
                /* Fixing Serdes clock by programming FPGA register */
                QIXIS_WRITE(brdcfg[4], QIXIS_SRDS1CLK_125);
                fm_info_set_phy_address(FM1_DTSEC3,
-                               CONFIG_SYS_FM1_DTSEC5_PHY_ADDR);
+                               CONFIG_SYS_FM1_ONBOARD_PHY1_ADDR);
                fm_info_set_phy_address(FM1_DTSEC4,
-                               CONFIG_SYS_FM1_DTSEC6_PHY_ADDR);
+                               CONFIG_SYS_FM1_ONBOARD_PHY2_ADDR);
                break;
 #endif
        default:
@@ -233,8 +236,8 @@ int board_eth_init(bd_t *bis)
        switch (serdes2_prtcl) {
        case 0x17:
        case 0x18:
-               debug("Setting phy addresses on SGMII Riser card for"
-                               "FM1_DTSEC ports: \n");
+               debug("Set phy address on SGMII Riser for FM1_DTSEC1:%x\n",
+                     CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR);
                fm_info_set_phy_address(FM1_DTSEC1,
                                CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR);
                fm_info_set_phy_address(FM1_DTSEC2,
@@ -246,8 +249,8 @@ int board_eth_init(bd_t *bis)
                break;
        case 0x48:
        case 0x49:
-               debug("Setting phy addresses on SGMII Riser card for"
-                               "FM1_DTSEC ports: \n");
+               debug("Set phy address on SGMII Riser for FM1_DTSEC1:%x\n",
+                     CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR);
                fm_info_set_phy_address(FM1_DTSEC1,
                                CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR);
                fm_info_set_phy_address(FM1_DTSEC2,
@@ -255,29 +258,37 @@ int board_eth_init(bd_t *bis)
                fm_info_set_phy_address(FM1_DTSEC3,
                                CONFIG_SYS_FM1_DTSEC3_RISER_PHY_ADDR);
                break;
-       case 0x8d:
+       case 0xb1:
        case 0xb2:
-               debug("Setting phy addresses on SGMII Riser card for"
-                               "FM1_DTSEC ports: \n");
+       case 0x8c:
+       case 0x8d:
+               debug("Set phy addresses on SGMII Riser for FM1_DTSEC1:%x\n",
+                     CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR);
                fm_info_set_phy_address(FM1_DTSEC3,
                                CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR);
                fm_info_set_phy_address(FM1_DTSEC4,
                                CONFIG_SYS_FM1_DTSEC2_RISER_PHY_ADDR);
+               /*
+                * XFI does not need a PHY to work, but to make U-boot
+                * happy, assign a fake PHY address for a XFI port.
+                */
+               fm_info_set_phy_address(FM1_10GEC1, 0);
+               fm_info_set_phy_address(FM1_10GEC2, 1);
                break;
        case 0x98:
                /* XAUI in Slot1 and Slot2 */
-               debug("Setting phy addresses on B4860 QDS AMC2PEX-2S for FM1_10GEC1: %x\n",
+               debug("Set phy address of AMC2PEX-2S for FM1_10GEC1:%x\n",
                      CONFIG_SYS_FM1_10GEC1_PHY_ADDR);
                fm_info_set_phy_address(FM1_10GEC1,
                                        CONFIG_SYS_FM1_10GEC1_PHY_ADDR);
-               debug("Setting phy addresses on B4860 QDS AMC2PEX-2S for FM1_10GEC2: %x\n",
+               debug("Set phy address of AMC2PEX-2S for FM1_10GEC2:%x\n",
                      CONFIG_SYS_FM1_10GEC2_PHY_ADDR);
                fm_info_set_phy_address(FM1_10GEC2,
                                        CONFIG_SYS_FM1_10GEC2_PHY_ADDR);
                break;
        case 0x9E:
                /* XAUI in Slot2 */
-               debug("Setting phy addresses on B4860 QDS AMC2PEX-2S for FM1_10GEC2: %x\n",
+               debug("Sett phy address of AMC2PEX-2S for FM1_10GEC2:%x\n",
                      CONFIG_SYS_FM1_10GEC2_PHY_ADDR);
                fm_info_set_phy_address(FM1_10GEC2,
                                        CONFIG_SYS_FM1_10GEC2_PHY_ADDR);
@@ -329,17 +340,20 @@ int board_eth_init(bd_t *bis)
                switch (fm_info_get_enet_if(i)) {
                case PHY_INTERFACE_MODE_XGMII:
                        fm_info_set_mdio(i,
-                                        miiphy_get_dev_by_name(DEFAULT_FM_TGEC_MDIO_NAME));
+                                        miiphy_get_dev_by_name
+                                        (DEFAULT_FM_TGEC_MDIO_NAME));
+                       break;
+               case PHY_INTERFACE_MODE_NONE:
+                       fm_info_set_phy_address(i, 0);
                        break;
                default:
-                       printf("Fman1: 10GSEC%u set to unknown interface %i\n",
+                       printf("Fman1: TGEC%u set to unknown interface %i\n",
                               idx + 1, fm_info_get_enet_if(i));
                        fm_info_set_phy_address(i, 0);
                        break;
                }
        }
 
-
        cpu_eth_init(bis);
 #endif
 
@@ -351,21 +365,82 @@ void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
 {
        int phy;
        char alias[32];
+       struct fixed_link f_link;
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 prtcl2 = in_be32(&gur->rcwsr[4]) & FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
+
+       prtcl2 >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
 
        if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_SGMII) {
                phy = fm_info_get_phy_address(port);
 
                sprintf(alias, "phy_sgmii_%x", phy);
                fdt_set_phy_handle(fdt, compat, addr, alias);
+               fdt_status_okay_by_alias(fdt, alias);
+       } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_XGMII) {
+               /* check if it's XFI interface for 10g */
+               switch (prtcl2) {
+               case 0x80:
+               case 0x81:
+               case 0x82:
+               case 0x83:
+               case 0x84:
+               case 0x85:
+               case 0x86:
+               case 0x87:
+               case 0x88:
+               case 0x89:
+               case 0x8a:
+               case 0x8b:
+               case 0x8c:
+               case 0x8d:
+               case 0x8e:
+               case 0xb1:
+               case 0xb2:
+                       f_link.phy_id = port;
+                       f_link.duplex = 1;
+                       f_link.link_speed = 10000;
+                       f_link.pause = 0;
+                       f_link.asym_pause = 0;
+
+                       fdt_delprop(fdt, offset, "phy-handle");
+                       fdt_setprop(fdt, offset, "fixed-link", &f_link,
+                                   sizeof(f_link));
+                       break;
+               case 0x98: /* XAUI interface */
+                       sprintf(alias, "phy_xaui_slot1");
+                       fdt_status_okay_by_alias(fdt, alias);
+
+                       sprintf(alias, "phy_xaui_slot2");
+                       fdt_status_okay_by_alias(fdt, alias);
+                       break;
+               case 0x9e: /* XAUI interface */
+               case 0x9a:
+               case 0x93:
+               case 0x91:
+                       sprintf(alias, "phy_xaui_slot1");
+                       fdt_status_okay_by_alias(fdt, alias);
+                       break;
+               case 0x97: /* XAUI interface */
+               case 0xc3:
+                       sprintf(alias, "phy_xaui_slot2");
+                       fdt_status_okay_by_alias(fdt, alias);
+                       break;
+               default:
+                       break;
+               }
        }
 }
 
+/*
+ * Set status to disabled for unused ethernet node
+ */
 void fdt_fixup_board_enet(void *fdt)
 {
        int i;
        char alias[32];
 
-       for (i = FM1_DTSEC1; i < FM1_DTSEC1 + CONFIG_SYS_NUM_FM1_DTSEC; i++) {
+       for (i = FM1_DTSEC1; i <= FM1_10GEC2; i++) {
                switch (fm_info_get_enet_if(i)) {
                case PHY_INTERFACE_MODE_NONE:
                        sprintf(alias, "ethernet%u", i);
index 5b327ccee9fb29a7c7d4eabe61766309d0b5b7c5..047c3cbb3f0ae1e9b92d81beb2496ccbbd0f38b4 100644 (file)
@@ -17,9 +17,6 @@ struct law_entry law_table[] = {
        SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_QMAN),
 #endif
        SET_LAW(QIXIS_BASE_PHYS, LAW_SIZE_4K, LAW_TRGT_IF_IFC),
-#ifdef CONFIG_SYS_MAPLE_MEM_PHYS
-       SET_LAW(CONFIG_SYS_MAPLE_MEM_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_MAPLE),
-#endif
 #ifdef CONFIG_SYS_DCSRBAR_PHYS
        /* Limit DCSR to 32M to access NPC Trace Buffer */
        SET_LAW(CONFIG_SYS_DCSRBAR_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_DCSR),
index 7fe4ae74ea03b736a69500bc2da30a15e01f33f5..75e114217b6a6d94ccd0a7ed7dc4483bb0e8aeca 100644 (file)
@@ -15,6 +15,9 @@
 #include <fdt_support.h>
 #include <fsl_mdio.h>
 #include <tsec.h>
+#include <jffs2/load_kernel.h>
+#include <mtd_node.h>
+#include <flash.h>
 #include <netdev.h>
 
 
@@ -50,7 +53,12 @@ int checkboard(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+#ifdef CONFIG_FDT_FIXUP_PARTITIONS
+struct node_info nodes[] = {
+       { "fsl,ifc-nand",               MTD_DEV_TYPE_NAND, },
+};
+#endif
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -61,7 +69,12 @@ void ft_board_setup(void *blob, bd_t *bd)
        size = getenv_bootm_size();
 
        fdt_fixup_memory(blob, (u64)base, (u64)size);
+#ifdef CONFIG_FDT_FIXUP_PARTITIONS
+       fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
+#endif
 
        fdt_fixup_dr_usb(blob, bd);
+
+       return 0;
 }
 #endif
index 10580bcecc51cde79d182a962c85645a96ba86ce..36a68dbc4dba95ae0990c9f3a900a4b487f5ee85 100644 (file)
@@ -21,6 +21,9 @@
 #include <hwconfig.h>
 #include <i2c.h>
 #include <fsl_ddr_sdram.h>
+#include <jffs2/load_kernel.h>
+#include <mtd_node.h>
+#include <flash.h>
 
 #ifdef CONFIG_PCI
 #include <pci.h>
@@ -354,7 +357,13 @@ void fdt_del_node_compat(void *blob, const char *compatible)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+#ifdef CONFIG_FDT_FIXUP_PARTITIONS
+struct node_info nodes[] = {
+       { "cfi-flash",                  MTD_DEV_TYPE_NOR,  },
+       { "fsl,ifc-nand",               MTD_DEV_TYPE_NAND, },
+};
+#endif
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -369,6 +378,9 @@ void ft_board_setup(void *blob, bd_t *bd)
        #endif
 
        fdt_fixup_memory(blob, (u64)base, (u64)size);
+#ifdef CONFIG_FDT_FIXUP_PARTITIONS
+       fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
+#endif
 
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
        u32 porbmsr = in_be32(&gur->porbmsr);
@@ -411,5 +423,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                        printf("\nRemove sim from hwconfig and reset\n");
                }
        }
+
+       return 0;
 }
 #endif
index 534c6d11b056034b72e409d6f809aae11aee1468..d75770969b1891f56dea3b077a5e77377999b037 100644 (file)
@@ -128,7 +128,7 @@ void fdt_del_sec(void *blob, int offset)
        }
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -150,5 +150,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                fdt_del_sec(blob, 1);
        else if (cpu->soc_ver == SVR_C292)
                fdt_del_sec(blob, 2);
+
+       return 0;
 }
 #endif
index 32b5a3b70ce665781481b9505404605ccac73d1a..14af660087c66d50eacd492d0032a0a88a6d5f36 100644 (file)
@@ -23,6 +23,7 @@ obj-$(CONFIG_FMAN_ENET)       += fman.o
 obj-$(CONFIG_FSL_PIXIS)        += pixis.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_FSL_NGPIXIS)      += ngpixis.o
+obj-$(CONFIG_VID)              += vid.o
 endif
 obj-$(CONFIG_FSL_QIXIS)        += qixis.o
 obj-$(CONFIG_PQ_MDS_PIB)       += pq-mds-pib.o
@@ -36,6 +37,12 @@ endif
 
 obj-$(CONFIG_FSL_DIU_CH7301)   += diu_ch7301.o
 
+ifdef CONFIG_ARM
+obj-$(CONFIG_DEEP_SLEEP)               += arm_sleep.o
+else
+obj-$(CONFIG_DEEP_SLEEP)               += mpc85xx_sleep.o
+endif
+
 obj-$(CONFIG_FSL_DCU_SII9022A)    += dcu_sii9022a.o
 
 obj-$(CONFIG_MPC8541CDS)       += cds_pci_ft.o
@@ -53,6 +60,9 @@ obj-$(CONFIG_P5040DS)         += ics307_clk.o
 obj-$(CONFIG_VSC_CROSSBAR)    += vsc3316_3308.o
 obj-$(CONFIG_IDT8T49N222A)     += idt8t49n222a_serdes_clk.o
 obj-$(CONFIG_ZM7300)           += zm7300.o
+obj-$(CONFIG_POWER_PFUZE100)   += pfuze.o
+
+obj-$(CONFIG_LS102XA_STREAM_ID)        += ls102xa_stream_id.o
 
 # deal with common files for P-series corenet based devices
 obj-$(CONFIG_P2041RDB) += p_corenet/
@@ -60,4 +70,6 @@ obj-$(CONFIG_P3041DS) += p_corenet/
 obj-$(CONFIG_P4080DS)  += p_corenet/
 obj-$(CONFIG_P5020DS)  += p_corenet/
 obj-$(CONFIG_P5040DS)  += p_corenet/
+
+obj-$(CONFIG_LS102XA_NS_ACCESS)        += ns_access.o
 endif
diff --git a/board/freescale/common/arm_sleep.c b/board/freescale/common/arm_sleep.c
new file mode 100644 (file)
index 0000000..8edf878
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#if !defined(CONFIG_ARMV7_NONSEC) || !defined(CONFIG_ARMV7_VIRT)
+#error " Deep sleep needs non-secure mode support. "
+#else
+#include <asm/secure.h>
+#endif
+#include <asm/armv7.h>
+#include <asm/cache.h>
+
+#if defined(CONFIG_LS102XA)
+#include <asm/arch/immap_ls102xa.h>
+#endif
+
+#include "sleep.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void __weak board_mem_sleep_setup(void)
+{
+}
+
+void __weak board_sleep_prepare(void)
+{
+}
+
+bool is_warm_boot(void)
+{
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
+
+       if (in_be32(&gur->crstsr) & DCFG_CCSR_CRSTSR_WDRFR)
+               return 1;
+
+       return 0;
+}
+
+void fsl_dp_disable_console(void)
+{
+       gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
+}
+
+/*
+ * When wakeup from deep sleep, the first 128 bytes space
+ * will be used to do DDR training which corrupts the data
+ * in there. This function will restore them.
+ */
+static void dp_ddr_restore(void)
+{
+       u64 *src, *dst;
+       int i;
+       struct ccsr_scfg __iomem *scfg = (void *)CONFIG_SYS_FSL_SCFG_ADDR;
+
+       /* get the address of ddr date from SPARECR3 */
+       src = (u64 *)in_le32(&scfg->sparecr[2]);
+       dst = (u64 *)CONFIG_SYS_SDRAM_BASE;
+
+       for (i = 0; i < DDR_BUFF_LEN / 8; i++)
+               *dst++ = *src++;
+
+       flush_dcache_all();
+}
+
+static void dp_resume_prepare(void)
+{
+       dp_ddr_restore();
+       board_sleep_prepare();
+       armv7_init_nonsec();
+       cleanup_before_linux();
+}
+
+int fsl_dp_resume(void)
+{
+       u32 start_addr;
+       void (*kernel_resume)(void);
+       struct ccsr_scfg __iomem *scfg = (void *)CONFIG_SYS_FSL_SCFG_ADDR;
+
+       if (!is_warm_boot())
+               return 0;
+
+       dp_resume_prepare();
+
+       /* Get the entry address and jump to kernel */
+       start_addr = in_le32(&scfg->sparecr[1]);
+       debug("Entry address is 0x%08x\n", start_addr);
+       kernel_resume = (void (*)(void))start_addr;
+       secure_ram_addr(_do_nonsec_entry)(kernel_resume, 0, 0, 0);
+
+       return 0;
+}
index 2e5dcdf0e285a00f771e1e8fdec6146a18540915..571dfbbaada6e6607ebd1f416259a2dd43d16470 100644 (file)
@@ -63,13 +63,14 @@ static void cds_pci_fixup(void *blob)
        }
 }
 
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
        cds_pci_fixup(blob);
 #endif
+
+       return 0;
 }
 #endif
diff --git a/board/freescale/common/ls102xa_stream_id.c b/board/freescale/common/ls102xa_stream_id.c
new file mode 100644 (file)
index 0000000..6154c9c
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2014 Freescale Semiconductor
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/ls102xa_stream_id.h>
+
+void ls102xa_config_smmu_stream_id(struct smmu_stream_id *id, uint32_t num)
+{
+       uint32_t *scfg = (uint32_t *)CONFIG_SYS_FSL_SCFG_ADDR;
+       int i;
+
+       for (i = 0; i < num; i++)
+               out_be32(scfg + id[i].offset, id[i].stream_id);
+}
diff --git a/board/freescale/common/mpc85xx_sleep.c b/board/freescale/common/mpc85xx_sleep.c
new file mode 100644 (file)
index 0000000..f924e7f
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/immap_85xx.h>
+#include "sleep.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void __weak board_mem_sleep_setup(void)
+{
+}
+
+void __weak board_sleep_prepare(void)
+{
+}
+
+bool is_warm_boot(void)
+{
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
+
+       if (in_be32(&gur->scrtsr[0]) & DCFG_CCSR_CRSTSR_WDRFR)
+               return 1;
+
+       return 0;
+}
+
+void fsl_dp_disable_console(void)
+{
+       gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
+}
+
+/*
+ * When wakeup from deep sleep, the first 128 bytes space
+ * will be used to do DDR training which corrupts the data
+ * in there. This function will restore them.
+ */
+static void dp_ddr_restore(void)
+{
+       volatile u64 *src, *dst;
+       int i;
+       struct ccsr_scfg __iomem *scfg = (void *)CONFIG_SYS_MPC85xx_SCFG;
+
+       /* get the address of ddr date from SPARECR3 */
+       src = (u64 *)in_be32(&scfg->sparecr[2]);
+       dst = (u64 *)CONFIG_SYS_SDRAM_BASE;
+
+       for (i = 0; i < DDR_BUFF_LEN / 8; i++)
+               *dst++ = *src++;
+
+       flush_dcache();
+}
+
+static void dp_resume_prepare(void)
+{
+       dp_ddr_restore();
+
+       board_sleep_prepare();
+
+       l2cache_init();
+#if defined(CONFIG_RAMBOOT_PBL)
+       disable_cpc_sram();
+#endif
+       enable_cpc();
+}
+
+int fsl_dp_resume(void)
+{
+       u32 start_addr;
+       void (*kernel_resume)(void);
+       struct ccsr_scfg __iomem *scfg = (void *)CONFIG_SYS_MPC85xx_SCFG;
+
+       if (!is_warm_boot())
+               return 0;
+
+       dp_resume_prepare();
+
+       /* Get the entry address and jump to kernel */
+       start_addr = in_be32(&scfg->sparecr[1]);
+       debug("Entry address is 0x%08x\n", start_addr);
+       kernel_resume = (void (*)(void))start_addr;
+       kernel_resume();
+
+       return 0;
+}
diff --git a/board/freescale/common/ns_access.c b/board/freescale/common/ns_access.c
new file mode 100644 (file)
index 0000000..d7de982
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2014 Freescale Semiconductor
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/ns_access.h>
+
+void enable_devices_ns_access(struct csu_ns_dev *ns_dev, uint32_t num)
+{
+       u32 *base = (u32 *)CONFIG_SYS_FSL_CSU_ADDR;
+       u32 *reg;
+       uint32_t val;
+       int i;
+
+       for (i = 0; i < num; i++) {
+               reg = base + ns_dev[i].ind / 2;
+               val = in_be32(reg);
+               if (ns_dev[i].ind % 2 == 0) {
+                       val &= 0x0000ffff;
+                       val |= ns_dev[i].val << 16;
+               } else {
+                       val &= 0xffff0000;
+                       val |= ns_dev[i].val;
+               }
+               out_be32(reg, val);
+       }
+}
diff --git a/board/freescale/common/pfuze.c b/board/freescale/common/pfuze.c
new file mode 100644 (file)
index 0000000..2cd1794
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <power/pmic.h>
+#include <power/pfuze100_pmic.h>
+
+struct pmic *pfuze_common_init(unsigned char i2cbus)
+{
+       struct pmic *p;
+       int ret;
+       unsigned int reg;
+
+       ret = power_pfuze100_init(i2cbus);
+       if (ret)
+               return NULL;
+
+       p = pmic_get("PFUZE100");
+       ret = pmic_probe(p);
+       if (ret)
+               return NULL;
+
+       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
+       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
+
+       /* Set SW1AB stanby volage to 0.975V */
+       pmic_reg_read(p, PFUZE100_SW1ABSTBY, &reg);
+       reg &= ~SW1x_STBY_MASK;
+       reg |= SW1x_0_975V;
+       pmic_reg_write(p, PFUZE100_SW1ABSTBY, reg);
+
+       /* Set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */
+       pmic_reg_read(p, PUZE_100_SW1ABCONF, &reg);
+       reg &= ~SW1xCONF_DVSSPEED_MASK;
+       reg |= SW1xCONF_DVSSPEED_4US;
+       pmic_reg_write(p, PUZE_100_SW1ABCONF, reg);
+
+       /* Set SW1C standby voltage to 0.975V */
+       pmic_reg_read(p, PFUZE100_SW1CSTBY, &reg);
+       reg &= ~SW1x_STBY_MASK;
+       reg |= SW1x_0_975V;
+       pmic_reg_write(p, PFUZE100_SW1CSTBY, reg);
+
+       /* Set SW1C/VDDSOC step ramp up time from 16us to 4us/25mV */
+       pmic_reg_read(p, PFUZE100_SW1CCONF, &reg);
+       reg &= ~SW1xCONF_DVSSPEED_MASK;
+       reg |= SW1xCONF_DVSSPEED_4US;
+       pmic_reg_write(p, PFUZE100_SW1CCONF, reg);
+
+       return p;
+}
diff --git a/board/freescale/common/pfuze.h b/board/freescale/common/pfuze.h
new file mode 100644 (file)
index 0000000..7a4126c
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __PFUZE_BOARD_HELPER__
+#define __PFUZE_BOARD_HELPER__
+
+struct pmic *pfuze_common_init(unsigned char i2cbus);
+
+#endif
index d8fed14ce9419f2587b3e50c9a34632026baef7f..52d20219ec01c8a378e873ef3f56eb0ef5711e3e 100644 (file)
@@ -100,8 +100,15 @@ u8 qixis_read_i2c(unsigned int reg);
 void qixis_write_i2c(unsigned int reg, u8 value);
 #endif
 
+#if defined(CONFIG_QIXIS_I2C_ACCESS) && defined(CONFIG_SYS_I2C_FPGA_ADDR)
+#define QIXIS_READ(reg) qixis_read_i2c(offsetof(struct qixis, reg))
+#define QIXIS_WRITE(reg, value) \
+       qixis_write_i2c(offsetof(struct qixis, reg), value)
+#else
 #define QIXIS_READ(reg) qixis_read(offsetof(struct qixis, reg))
 #define QIXIS_WRITE(reg, value) qixis_write(offsetof(struct qixis, reg), value)
+#endif
+
 #ifdef CONFIG_SYS_I2C_FPGA_ADDR
 #define QIXIS_READ_I2C(reg) qixis_read_i2c(offsetof(struct qixis, reg))
 #define QIXIS_WRITE_I2C(reg, value) \
diff --git a/board/freescale/common/sleep.h b/board/freescale/common/sleep.h
new file mode 100644 (file)
index 0000000..c26c542
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __SLEEP_H
+#define __SLEEP_H
+
+#define DCFG_CCSR_CRSTSR_WDRFR (1 << 3)
+#define DDR_BUFF_LEN                   128
+
+/* determine if it is a wakeup from deep sleep */
+bool is_warm_boot(void);
+
+/* disable console output */
+void fsl_dp_disable_console(void);
+
+/* clean up everything and jump to kernel */
+int fsl_dp_resume(void);
+#endif
index 6144c533ef27af60d629103aa5f117369ed373b4..5cb7570c8b8a82c6bf6233fd753c8b991cdcb689 100644 (file)
@@ -90,7 +90,7 @@ static void show_eeprom(void)
        /* EEPROM tag ID, either CCID or NXID */
 #ifdef CONFIG_SYS_I2C_EEPROM_NXID
        printf("ID: %c%c%c%c v%u\n", e.id[0], e.id[1], e.id[2], e.id[3],
-               be32_to_cpu(e.version));
+              e.version);
 #else
        printf("ID: %c%c%c%c\n", e.id[0], e.id[1], e.id[2], e.id[3]);
 #endif
@@ -114,7 +114,7 @@ static void show_eeprom(void)
                e.date[3] & 0x80 ? "PM" : "");
 
        /* Show MAC addresses  */
-       for (i = 0; i < min(e.mac_count, MAX_NUM_PORTS); i++) {
+       for (i = 0; i < min(e.mac_count, (u8)MAX_NUM_PORTS); i++) {
 
                u8 *p = e.mac[i];
 
@@ -223,7 +223,7 @@ static int prog_eeprom(void)
         */
        for (i = 0, p = &e; i < sizeof(e); i += 8, p += 8) {
                ret = i2c_write(CONFIG_SYS_I2C_EEPROM_ADDR, i, CONFIG_SYS_I2C_EEPROM_ADDR_LEN,
-                       p, min((sizeof(e) - i), 8));
+                               p, min((int)(sizeof(e) - i), 8));
                if (ret)
                        break;
                udelay(5000);   /* 5ms write cycle timing */
@@ -461,7 +461,7 @@ int mac_read_from_eeprom(void)
                memset(e.mac[8], 0xff, 6);
 #endif
 
-       for (i = 0; i < min(e.mac_count, MAX_NUM_PORTS); i++) {
+       for (i = 0; i < min(e.mac_count, (u8)MAX_NUM_PORTS); i++) {
                if (memcmp(&e.mac[i], "\0\0\0\0\0\0", 6) &&
                    memcmp(&e.mac[i], "\xFF\xFF\xFF\xFF\xFF\xFF", 6)) {
                        char ethaddr[18];
@@ -485,7 +485,7 @@ int mac_read_from_eeprom(void)
 
 #ifdef CONFIG_SYS_I2C_EEPROM_NXID
        printf("%c%c%c%c v%u\n", e.id[0], e.id[1], e.id[2], e.id[3],
-               be32_to_cpu(e.version));
+              e.version);
 #else
        printf("%c%c%c%c\n", e.id[0], e.id[1], e.id[2], e.id[3]);
 #endif
diff --git a/board/freescale/common/vid.c b/board/freescale/common/vid.c
new file mode 100644 (file)
index 0000000..6b8af14
--- /dev/null
@@ -0,0 +1,491 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <i2c.h>
+#include <asm/immap_85xx.h>
+#include "vid.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int __weak i2c_multiplexer_select_vid_channel(u8 channel)
+{
+       return 0;
+}
+
+/*
+ * Compensate for a board specific voltage drop between regulator and SoC
+ * return a value in mV
+ */
+int __weak board_vdd_drop_compensation(void)
+{
+       return 0;
+}
+
+/*
+ * Get the i2c address configuration for the IR regulator chip
+ *
+ * There are some variance in the RDB HW regarding the I2C address configuration
+ * for the IR regulator chip, which is likely a problem of external resistor
+ * accuracy. So we just check each address in a hopefully non-intrusive mode
+ * and use the first one that seems to work
+ *
+ * The IR chip can show up under the following addresses:
+ * 0x08 (Verified on T1040RDB-PA,T4240RDB-PB,X-T4240RDB-16GPA)
+ * 0x09 (Verified on T1040RDB-PA)
+ * 0x38 (Verified on T2080QDS, T2081QDS)
+ */
+static int find_ir_chip_on_i2c(void)
+{
+       int i2caddress;
+       int ret;
+       u8 byte;
+       int i;
+       const int ir_i2c_addr[] = {0x38, 0x08, 0x09};
+
+       /* Check all the address */
+       for (i = 0; i < (sizeof(ir_i2c_addr)/sizeof(ir_i2c_addr[0])); i++) {
+               i2caddress = ir_i2c_addr[i];
+               ret = i2c_read(i2caddress,
+                              IR36021_MFR_ID_OFFSET, 1, (void *)&byte,
+                              sizeof(byte));
+               if ((ret >= 0) && (byte == IR36021_MFR_ID))
+                       return i2caddress;
+       }
+       return -1;
+}
+
+/* Maximum loop count waiting for new voltage to take effect */
+#define MAX_LOOP_WAIT_NEW_VOL          100
+/* Maximum loop count waiting for the voltage to be stable */
+#define MAX_LOOP_WAIT_VOL_STABLE       100
+/*
+ * read_voltage from sensor on I2C bus
+ * We use average of 4 readings, waiting for WAIT_FOR_ADC before
+ * another reading
+ */
+#define NUM_READINGS    4       /* prefer to be power of 2 for efficiency */
+
+/* If an INA220 chip is available, we can use it to read back the voltage
+ * as it may have a higher accuracy than the IR chip for the same purpose
+ */
+#ifdef CONFIG_VOL_MONITOR_INA220
+#define WAIT_FOR_ADC   532     /* wait for 532 microseconds for ADC */
+#define ADC_MIN_ACCURACY       4
+#else
+#define WAIT_FOR_ADC   138     /* wait for 138 microseconds for ADC */
+#define ADC_MIN_ACCURACY       4
+#endif
+
+#ifdef CONFIG_VOL_MONITOR_INA220
+static int read_voltage_from_INA220(int i2caddress)
+{
+       int i, ret, voltage_read = 0;
+       u16 vol_mon;
+       u8 buf[2];
+
+       for (i = 0; i < NUM_READINGS; i++) {
+               ret = i2c_read(I2C_VOL_MONITOR_ADDR,
+                              I2C_VOL_MONITOR_BUS_V_OFFSET, 1,
+                              (void *)&buf, 2);
+               if (ret) {
+                       printf("VID: failed to read core voltage\n");
+                       return ret;
+               }
+               vol_mon = (buf[0] << 8) | buf[1];
+               if (vol_mon & I2C_VOL_MONITOR_BUS_V_OVF) {
+                       printf("VID: Core voltage sensor error\n");
+                       return -1;
+               }
+               debug("VID: bus voltage reads 0x%04x\n", vol_mon);
+               /* LSB = 4mv */
+               voltage_read += (vol_mon >> I2C_VOL_MONITOR_BUS_V_SHIFT) * 4;
+               udelay(WAIT_FOR_ADC);
+       }
+       /* calculate the average */
+       voltage_read /= NUM_READINGS;
+
+       return voltage_read;
+}
+#endif
+
+/* read voltage from IR */
+#ifdef CONFIG_VOL_MONITOR_IR36021_READ
+static int read_voltage_from_IR(int i2caddress)
+{
+       int i, ret, voltage_read = 0;
+       u16 vol_mon;
+       u8 buf;
+
+       for (i = 0; i < NUM_READINGS; i++) {
+               ret = i2c_read(i2caddress,
+                              IR36021_LOOP1_VOUT_OFFSET,
+                              1, (void *)&buf, 1);
+               if (ret) {
+                       printf("VID: failed to read vcpu\n");
+                       return ret;
+               }
+               vol_mon = buf;
+               if (!vol_mon) {
+                       printf("VID: Core voltage sensor error\n");
+                       return -1;
+               }
+               debug("VID: bus voltage reads 0x%02x\n", vol_mon);
+               /* Resolution is 1/128V. We scale up here to get 1/128mV
+                * and divide at the end
+                */
+               voltage_read += vol_mon * 1000;
+               udelay(WAIT_FOR_ADC);
+       }
+       /* Scale down to the real mV as IR resolution is 1/128V, rounding up */
+       voltage_read = DIV_ROUND_UP(voltage_read, 128);
+
+       /* calculate the average */
+       voltage_read /= NUM_READINGS;
+
+       /* Compensate for a board specific voltage drop between regulator and
+        * SoC before converting into an IR VID value
+        */
+       voltage_read -= board_vdd_drop_compensation();
+
+       return voltage_read;
+}
+#endif
+
+static int read_voltage(int i2caddress)
+{
+       int voltage_read;
+#ifdef CONFIG_VOL_MONITOR_INA220
+       voltage_read = read_voltage_from_INA220(i2caddress);
+#elif defined CONFIG_VOL_MONITOR_IR36021_READ
+       voltage_read = read_voltage_from_IR(i2caddress);
+#else
+       return -1;
+#endif
+       return voltage_read;
+}
+
+/*
+ * We need to calculate how long before the voltage stops to drop
+ * or increase. It returns with the loop count. Each loop takes
+ * several readings (WAIT_FOR_ADC)
+ */
+static int wait_for_new_voltage(int vdd, int i2caddress)
+{
+       int timeout, vdd_current;
+
+       vdd_current = read_voltage(i2caddress);
+       /* wait until voltage starts to reach the target. Voltage slew
+        * rates by typical regulators will always lead to stable readings
+        * within each fairly long ADC interval in comparison to the
+        * intended voltage delta change until the target voltage is
+        * reached. The fairly small voltage delta change to any target
+        * VID voltage also means that this function will always complete
+        * within few iterations. If the timeout was ever reached, it would
+        * point to a serious failure in the regulator system.
+        */
+       for (timeout = 0;
+            abs(vdd - vdd_current) > (IR_VDD_STEP_UP + IR_VDD_STEP_DOWN) &&
+            timeout < MAX_LOOP_WAIT_NEW_VOL; timeout++) {
+               vdd_current = read_voltage(i2caddress);
+       }
+       if (timeout >= MAX_LOOP_WAIT_NEW_VOL) {
+               printf("VID: Voltage adjustment timeout\n");
+               return -1;
+       }
+       return timeout;
+}
+
+/*
+ * this function keeps reading the voltage until it is stable or until the
+ * timeout expires
+ */
+static int wait_for_voltage_stable(int i2caddress)
+{
+       int timeout, vdd_current, vdd;
+
+       vdd = read_voltage(i2caddress);
+       udelay(NUM_READINGS * WAIT_FOR_ADC);
+
+       /* wait until voltage is stable */
+       vdd_current = read_voltage(i2caddress);
+       /* The maximum timeout is
+        * MAX_LOOP_WAIT_VOL_STABLE * NUM_READINGS * WAIT_FOR_ADC
+        */
+       for (timeout = MAX_LOOP_WAIT_VOL_STABLE;
+            abs(vdd - vdd_current) > ADC_MIN_ACCURACY &&
+            timeout > 0; timeout--) {
+               vdd = vdd_current;
+               udelay(NUM_READINGS * WAIT_FOR_ADC);
+               vdd_current = read_voltage(i2caddress);
+       }
+       if (timeout == 0)
+               return -1;
+       return vdd_current;
+}
+
+#ifdef CONFIG_VOL_MONITOR_IR36021_SET
+/* Set the voltage to the IR chip */
+static int set_voltage_to_IR(int i2caddress, int vdd)
+{
+       int wait, vdd_last;
+       int ret;
+       u8 vid;
+
+       /* Compensate for a board specific voltage drop between regulator and
+        * SoC before converting into an IR VID value
+        */
+       vdd += board_vdd_drop_compensation();
+       vid = DIV_ROUND_UP(vdd - 245, 5);
+
+       ret = i2c_write(i2caddress, IR36021_LOOP1_MANUAL_ID_OFFSET,
+                       1, (void *)&vid, sizeof(vid));
+       if (ret) {
+               printf("VID: failed to write VID\n");
+               return -1;
+       }
+       wait = wait_for_new_voltage(vdd, i2caddress);
+       if (wait < 0)
+               return -1;
+       debug("VID: Waited %d us\n", wait * NUM_READINGS * WAIT_FOR_ADC);
+
+       vdd_last = wait_for_voltage_stable(i2caddress);
+       if (vdd_last < 0)
+               return -1;
+       debug("VID: Current voltage is %d mV\n", vdd_last);
+       return vdd_last;
+}
+#endif
+
+static int set_voltage(int i2caddress, int vdd)
+{
+       int vdd_last = -1;
+
+#ifdef CONFIG_VOL_MONITOR_IR36021_SET
+       vdd_last = set_voltage_to_IR(i2caddress, vdd);
+#else
+       #error Specific voltage monitor must be defined
+#endif
+       return vdd_last;
+}
+
+int adjust_vdd(ulong vdd_override)
+{
+       int re_enable = disable_interrupts();
+       ccsr_gur_t __iomem *gur =
+               (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 fusesr;
+       u8 vid;
+       int vdd_target, vdd_current, vdd_last;
+       int ret, i2caddress;
+       unsigned long vdd_string_override;
+       char *vdd_string;
+       static const uint16_t vdd[32] = {
+               0,      /* unused */
+               9875,   /* 0.9875V */
+               9750,
+               9625,
+               9500,
+               9375,
+               9250,
+               9125,
+               9000,
+               8875,
+               8750,
+               8625,
+               8500,
+               8375,
+               8250,
+               8125,
+               10000,  /* 1.0000V */
+               10125,
+               10250,
+               10375,
+               10500,
+               10625,
+               10750,
+               10875,
+               11000,
+               0,      /* reserved */
+       };
+       struct vdd_drive {
+               u8 vid;
+               unsigned voltage;
+       };
+
+       ret = i2c_multiplexer_select_vid_channel(I2C_MUX_CH_VOL_MONITOR);
+       if (ret) {
+               debug("VID: I2C failed to switch channel\n");
+               ret = -1;
+               goto exit;
+       }
+       ret = find_ir_chip_on_i2c();
+       if (ret < 0) {
+               printf("VID: Could not find voltage regulator on I2C.\n");
+               ret = -1;
+               goto exit;
+       } else {
+               i2caddress = ret;
+               debug("VID: IR Chip found on I2C address 0x%02x\n", i2caddress);
+       }
+
+       /* get the voltage ID from fuse status register */
+       fusesr = in_be32(&gur->dcfg_fusesr);
+       /*
+        * VID is used according to the table below
+        *                ---------------------------------------
+        *                |                DA_V                 |
+        *                |-------------------------------------|
+        *                | 5b00000 | 5b00001-5b11110 | 5b11111 |
+        * ---------------+---------+-----------------+---------|
+        * | D | 5b00000  | NO VID  | VID = DA_V      | NO VID  |
+        * | A |----------+---------+-----------------+---------|
+        * | _ | 5b00001  |VID =    | VID =           |VID =    |
+        * | V |   ~      | DA_V_ALT|   DA_V_ALT      | DA_A_VLT|
+        * | _ | 5b11110  |         |                 |         |
+        * | A |----------+---------+-----------------+---------|
+        * | L | 5b11111  | No VID  | VID = DA_V      | NO VID  |
+        * | T |          |         |                 |         |
+        * ------------------------------------------------------
+        */
+       vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT) &
+               FSL_CORENET_DCFG_FUSESR_ALTVID_MASK;
+       if ((vid == 0) || (vid == FSL_CORENET_DCFG_FUSESR_ALTVID_MASK)) {
+               vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_VID_SHIFT) &
+                       FSL_CORENET_DCFG_FUSESR_VID_MASK;
+       }
+       vdd_target = vdd[vid];
+
+       /* check override variable for overriding VDD */
+       vdd_string = getenv(CONFIG_VID_FLS_ENV);
+       if (vdd_override == 0 && vdd_string &&
+           !strict_strtoul(vdd_string, 10, &vdd_string_override))
+               vdd_override = vdd_string_override;
+       if (vdd_override >= VDD_MV_MIN && vdd_override <= VDD_MV_MAX) {
+               vdd_target = vdd_override * 10; /* convert to 1/10 mV */
+               debug("VDD override is %lu\n", vdd_override);
+       } else if (vdd_override != 0) {
+               printf("Invalid value.\n");
+       }
+       if (vdd_target == 0) {
+               debug("VID: VID not used\n");
+               ret = 0;
+               goto exit;
+       } else {
+               /* divide and round up by 10 to get a value in mV */
+               vdd_target = DIV_ROUND_UP(vdd_target, 10);
+               debug("VID: vid = %d mV\n", vdd_target);
+       }
+
+       /*
+        * Read voltage monitor to check real voltage.
+        */
+       vdd_last = read_voltage(i2caddress);
+       if (vdd_last < 0) {
+               printf("VID: Couldn't read sensor abort VID adjustment\n");
+               ret = -1;
+               goto exit;
+       }
+       vdd_current = vdd_last;
+       debug("VID: Core voltage is currently at %d mV\n", vdd_last);
+       /*
+         * Adjust voltage to at or one step above target.
+         * As measurements are less precise than setting the values
+         * we may run through dummy steps that cancel each other
+         * when stepping up and then down.
+         */
+       while (vdd_last > 0 &&
+              vdd_last < vdd_target) {
+               vdd_current += IR_VDD_STEP_UP;
+               vdd_last = set_voltage(i2caddress, vdd_current);
+       }
+       while (vdd_last > 0 &&
+              vdd_last > vdd_target + (IR_VDD_STEP_DOWN - 1)) {
+               vdd_current -= IR_VDD_STEP_DOWN;
+               vdd_last = set_voltage(i2caddress, vdd_current);
+       }
+
+       if (vdd_last > 0)
+               printf("VID: Core voltage after adjustment is at %d mV\n",
+                      vdd_last);
+       else
+               ret = -1;
+exit:
+       if (re_enable)
+               enable_interrupts();
+       return ret;
+}
+
+static int print_vdd(void)
+{
+       int vdd_last, ret, i2caddress;
+
+       ret = i2c_multiplexer_select_vid_channel(I2C_MUX_CH_VOL_MONITOR);
+       if (ret) {
+               debug("VID : I2c failed to switch channel\n");
+               return -1;
+       }
+       ret = find_ir_chip_on_i2c();
+       if (ret < 0) {
+               printf("VID: Could not find voltage regulator on I2C.\n");
+               return -1;
+       } else {
+               i2caddress = ret;
+               debug("VID: IR Chip found on I2C address 0x%02x\n", i2caddress);
+       }
+
+       /*
+        * Read voltage monitor to check real voltage.
+        */
+       vdd_last = read_voltage(i2caddress);
+       if (vdd_last < 0) {
+               printf("VID: Couldn't read sensor abort VID adjustment\n");
+               return -1;
+       }
+       printf("VID: Core voltage is at %d mV\n", vdd_last);
+
+       return 0;
+}
+
+static int do_vdd_override(cmd_tbl_t *cmdtp,
+                          int flag, int argc,
+                          char * const argv[])
+{
+       ulong override;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+
+       if (!strict_strtoul(argv[1], 10, &override))
+               adjust_vdd(override);   /* the value is checked by callee */
+       else
+               return CMD_RET_USAGE;
+       return 0;
+}
+
+static int do_vdd_read(cmd_tbl_t *cmdtp,
+                        int flag, int argc,
+                        char * const argv[])
+{
+       if (argc < 1)
+               return CMD_RET_USAGE;
+       print_vdd();
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       vdd_override, 2, 0, do_vdd_override,
+       "override VDD",
+       " - override with the voltage specified in mV, eg. 1050"
+);
+
+U_BOOT_CMD(
+       vdd_read, 1, 0, do_vdd_read,
+       "read VDD",
+       " - Read the voltage specified in mV"
+)
diff --git a/board/freescale/common/vid.h b/board/freescale/common/vid.h
new file mode 100644 (file)
index 0000000..a9c7bb4
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __VID_H_
+#define __VID_H_
+
+#define IR36021_LOOP1_MANUAL_ID_OFFSET 0x6A
+#define IR36021_LOOP1_VOUT_OFFSET      0x9A
+#define IR36021_MFR_ID_OFFSET          0x92
+#define IR36021_MFR_ID                 0x43
+
+/* step the IR regulator in 5mV increments */
+#define IR_VDD_STEP_DOWN               5
+#define IR_VDD_STEP_UP                 5
+int adjust_vdd(ulong vdd_override);
+
+#endif  /* __VID_H_ */
index 97a25e838ed414080c7140baba7e6e4ebcf63b0d..dd9c37ebe8faf938b3a8244cb1fe7a1ac3b0ecc6 100644 (file)
 #define INPUT_STATE_REG                0x13
 #define GLOBAL_INPUT_ISE1              0x51
 #define GLOBAL_INPUT_ISE2              0x52
+#define GLOBAL_INPUT_GAIN              0x53
 #define GLOBAL_INPUT_LOS               0x55
+#define GLOBAL_OUTPUT_PE1              0x56
+#define GLOBAL_OUTPUT_PE2              0x57
+#define GLOBAL_OUTPUT_LEVEL            0x58
+#define GLOBAL_OUTPUT_TERMINATION      0x5A
 #define GLOBAL_CORE_CNTRL              0x5D
 #define OUTPUT_MODE_PAGE               0x23
 #define CORE_CONTROL_PAGE              0x25
@@ -92,6 +97,109 @@ int vsc3316_config(unsigned int vsc_addr, int8_t con_arr[][2],
        return 0;
 }
 
+#ifdef CONFIG_SYS_FSL_B4860QDS_XFI_ERR
+int vsc3308_config_adjust(unsigned int vsc_addr, const int8_t con_arr[][2],
+               unsigned int num_con)
+{
+       unsigned int i;
+       u8 rev_id = 0;
+       int ret;
+
+       debug("VSC:Initializing VSC3308 at I2C address 0x%x for Tx\n",
+             vsc_addr);
+
+       ret = i2c_read(vsc_addr, REVISION_ID_REG, 1, &rev_id, 1);
+       if (ret < 0) {
+               printf("VSC:0x%x could not read REV_ID from device.\n",
+                      vsc_addr);
+               return ret;
+       }
+
+       if (rev_id != 0xab) {
+               printf("VSC: device at address 0x%x is not VSC3316/3308.\n",
+                      vsc_addr);
+               return -ENODEV;
+       }
+
+       ret = vsc_if_enable(vsc_addr);
+       if (ret) {
+               printf("VSC:0x%x could not configured for 2-wire I/F.\n",
+                      vsc_addr);
+               return ret;
+       }
+
+       /* config connections - page 0x00 */
+       i2c_reg_write(vsc_addr, CURRENT_PAGE_REGISTER, CONNECTION_CONFIG_PAGE);
+
+       /* Configure Global Input ISE */
+       i2c_reg_write(vsc_addr, GLOBAL_INPUT_ISE1, 0);
+       i2c_reg_write(vsc_addr, GLOBAL_INPUT_ISE2, 0);
+
+       /* Configure Tx/Rx Global Output PE1 */
+       i2c_reg_write(vsc_addr, GLOBAL_OUTPUT_PE1, 0);
+
+       /* Configure Tx/Rx Global Output PE2 */
+       i2c_reg_write(vsc_addr, GLOBAL_OUTPUT_PE2, 0);
+
+       /* Configure Tx/Rx Global Input GAIN */
+       i2c_reg_write(vsc_addr, GLOBAL_INPUT_GAIN, 0x3F);
+
+       /* Setting Global Input LOS threshold value */
+       i2c_reg_write(vsc_addr, GLOBAL_INPUT_LOS, 0xE0);
+
+       /* Setting Global output termination */
+       i2c_reg_write(vsc_addr, GLOBAL_OUTPUT_TERMINATION, 0);
+
+       /* Configure Tx/Rx Global Output level */
+       if (vsc_addr == VSC3308_TX_ADDRESS)
+               i2c_reg_write(vsc_addr, GLOBAL_OUTPUT_LEVEL, 4);
+       else
+               i2c_reg_write(vsc_addr, GLOBAL_OUTPUT_LEVEL, 2);
+
+       /* Making crosspoint connections, by connecting required
+        * input to output */
+       for (i = 0; i < num_con ; i++)
+               i2c_reg_write(vsc_addr, con_arr[i][1], con_arr[i][0]);
+
+       /* input state - page 0x13 */
+       i2c_reg_write(vsc_addr, CURRENT_PAGE_REGISTER, INPUT_STATE_REG);
+       /* Turning off all the required input of the switch */
+       for (i = 0; i < num_con; i++)
+               i2c_reg_write(vsc_addr, con_arr[i][0], 1);
+
+       /* only turn on specific Tx/Rx requested by the XFI erratum */
+       if (vsc_addr == VSC3308_TX_ADDRESS) {
+               i2c_reg_write(vsc_addr, 2, 0);
+               i2c_reg_write(vsc_addr, 3, 0);
+       } else {
+               i2c_reg_write(vsc_addr, 0, 0);
+               i2c_reg_write(vsc_addr, 1, 0);
+       }
+
+       /* config output mode - page 0x23 */
+       i2c_reg_write(vsc_addr, CURRENT_PAGE_REGISTER, OUTPUT_MODE_PAGE);
+       /* Turn off the Output driver correspond to required output*/
+       for (i = 0; i < num_con ; i++)
+               i2c_reg_write(vsc_addr,  con_arr[i][1], 1);
+
+       /* only turn on specific Tx/Rx requested by the XFI erratum */
+       if (vsc_addr == VSC3308_TX_ADDRESS) {
+               i2c_reg_write(vsc_addr, 0, 0);
+               i2c_reg_write(vsc_addr, 1, 0);
+       } else {
+               i2c_reg_write(vsc_addr, 3, 0);
+               i2c_reg_write(vsc_addr, 4, 0);
+       }
+
+       /* configure global core control register, Turn on Global core power */
+       i2c_reg_write(vsc_addr, GLOBAL_CORE_CNTRL, 0);
+
+       vsc_wp_config(vsc_addr);
+
+       return 0;
+}
+#endif
+
 int vsc3308_config(unsigned int vsc_addr, const int8_t con_arr[][2],
                unsigned int num_con)
 {
index 2a491877792fdeef574a66929da6f692f9cccb7c..d722ea39d68e0eddae75770fa75652fff7e1f0e3 100644 (file)
 int vsc_if_enable(unsigned int vsc_addr);
 int vsc3316_config(unsigned int vsc_addr, int8_t con_arr[][2],
                unsigned int num_con);
+#ifdef CONFIG_SYS_FSL_B4860QDS_XFI_ERR
+int vsc3308_config_adjust(unsigned int vsc_addr, const int8_t con_arr[][2],
+               unsigned int num_con);
+#endif
 int vsc3308_config(unsigned int vsc_addr, const int8_t con_arr[][2],
                unsigned int num_con);
 void vsc_wp_config(unsigned int vsc_addr);
index 65b386741e166c9e0d0c56d69ef7a2a6ba853111..6f0fea1a3566a57c4efb4fec5078149bc767168e 100644 (file)
@@ -190,7 +190,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -213,4 +213,6 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
index 35825c4ae9411bb721b2f5c1fcc64ae372d2da38..396103f9906e1b3b67d3138bdae3d30028e05eee 100644 (file)
@@ -62,7 +62,7 @@
 
 #ifdef CONFIG_FMAN_ENET
 
-#define BRDCFG1_EMI1_SEL_MASK  0x70
+#define BRDCFG1_EMI1_SEL_MASK  0x78
 #define BRDCFG1_EMI1_SEL_SLOT1 0x10
 #define BRDCFG1_EMI1_SEL_SLOT2 0x20
 #define BRDCFG1_EMI1_SEL_SLOT5 0x30
@@ -202,6 +202,8 @@ static void fdt_set_mdio_mux(void *fdt, const char *alias, u32 mux)
        if (!path)
                path = alias;
 
+       do_fixup_by_path(fdt, path, "reg",
+                        &mux, sizeof(mux), 1);
        do_fixup_by_path(fdt, path, "fsl,hydra-mdio-muxval",
                         &mux, sizeof(mux), 1);
 }
@@ -250,11 +252,12 @@ void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
                return;
        }
 
-       if (mux == BRDCFG1_EMI1_SEL_RGMII) {
+       if (mux == (BRDCFG1_EMI1_SEL_RGMII | BRDCFG1_EMI1_EN)) {
                /* RGMII */
                /* The RGMII PHY is identified by the MAC connected to it */
                sprintf(phy, "phy_rgmii_%u", port == FM1_DTSEC4 ? 0 : 1);
                fdt_set_phy_handle(fdt, compat, addr, phy);
+               return;
        }
 
        /* If it's not RGMII or XGMII, it must be SGMII */
index e30e94471b1d2feb6f3447ed093e606db93ec866..638833dc4126fd0a8dbdfde9fbedd020bcc1b736 100644 (file)
@@ -6,3 +6,6 @@ F:      include/configs/ls1021aqds.h
 F:     configs/ls1021aqds_nor_defconfig
 F:     configs/ls1021aqds_ddr4_nor_defconfig
 F:     configs/ls1021aqds_nor_SECURE_BOOT_defconfig
+F:     configs/ls1021aqds_sdcard_defconfig
+F:     configs/ls1021aqds_qspi_defconfig
+F:     configs/ls1021aqds_nand_defconfig
index 5898e337443ed790d64a7d2fee190c9b4f5d28c4..a539ff97913ded4a98b3e95ca0ea9cafc8f05175 100644 (file)
@@ -153,9 +153,12 @@ phys_size_t initdram(int board_type)
 {
        phys_size_t dram_size;
 
+#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SPL)
        puts("Initializing DDR....using SPD\n");
        dram_size = fsl_ddr_sdram();
-
+#else
+       dram_size =  fsl_ddr_sdram_size();
+#endif
        return dram_size;
 }
 
index 5fafc8567207d3d777f40567dfb90aec92670196..f08e54f178605f8ee7b867aea2eaf3988cb9917c 100644 (file)
@@ -8,19 +8,40 @@
 #include <i2c.h>
 #include <asm/io.h>
 #include <asm/arch/immap_ls102xa.h>
+#include <asm/arch/ns_access.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/fsl_serdes.h>
+#include <asm/arch/ls102xa_stream_id.h>
+#include <asm/pcie_layerscape.h>
+#include <hwconfig.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <fsl_ifc.h>
 #include <fsl_sec.h>
+#include <spl.h>
 
 #include "../common/qixis.h"
 #include "ls1021aqds_qixis.h"
+#ifdef CONFIG_U_QE
+#include "../../../drivers/qe/qe.h"
+#endif
+
+#define PIN_MUX_SEL_CAN                0x03
+#define PIN_MUX_SEL_IIC2       0xa0
+#define PIN_MUX_SEL_RGMII      0x00
+#define PIN_MUX_SEL_SAI                0x0c
+#define PIN_MUX_SEL_SDHC       0x00
 
+#define SET_SDHC_MUX_SEL(reg, value)   ((reg & 0x0f) | value)
+#define SET_EC_MUX_SEL(reg, value)     ((reg & 0xf0) | value)
 DECLARE_GLOBAL_DATA_PTR;
 
 enum {
+       MUX_TYPE_CAN,
+       MUX_TYPE_IIC2,
+       MUX_TYPE_RGMII,
+       MUX_TYPE_SAI,
+       MUX_TYPE_SDHC,
        MUX_TYPE_SD_PCI4,
        MUX_TYPE_SD_PC_SA_SG_SG,
        MUX_TYPE_SD_PC_SA_PC_SG,
@@ -29,11 +50,20 @@ enum {
 
 int checkboard(void)
 {
+#ifndef CONFIG_QSPI_BOOT
        char buf[64];
+#endif
+#if !defined(CONFIG_SD_BOOT) && !defined(CONFIG_QSPI_BOOT)
        u8 sw;
+#endif
 
        puts("Board: LS1021AQDS\n");
 
+#ifdef CONFIG_SD_BOOT
+       puts("SD\n");
+#elif CONFIG_QSPI_BOOT
+       puts("QSPI\n");
+#else
        sw = QIXIS_READ(brdcfg[0]);
        sw = (sw & QIXIS_LBMAP_MASK) >> QIXIS_LBMAP_SHIFT;
 
@@ -47,13 +77,16 @@ int checkboard(void)
                printf("IFCCard\n");
        else
                printf("invalid setting of SW%u\n", QIXIS_LBMAP_SWITCH);
+#endif
 
+#ifndef CONFIG_QSPI_BOOT
        printf("Sys ID:0x%02x, Sys Ver: 0x%02x\n",
               QIXIS_READ(id), QIXIS_READ(arch));
 
        printf("FPGA:  v%d (%s), build %d\n",
               (int)QIXIS_READ(scver), qixis_read_tag(buf),
               (int)qixis_read_minor());
+#endif
 
        return 0;
 }
@@ -98,8 +131,27 @@ unsigned long get_board_ddr_clk(void)
        return 66666666;
 }
 
+int select_i2c_ch_pca9547(u8 ch)
+{
+       int ret;
+
+       ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
+       if (ret) {
+               puts("PCA: failed to select proper channel\n");
+               return ret;
+       }
+
+       return 0;
+}
+
 int dram_init(void)
 {
+       /*
+        * When resuming from deep sleep, the I2C channel may not be
+        * in the default channel. So, switch to the default channel
+        * before accessing DDR SPD.
+        */
+       select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
        gd->ram_size = initdram(0);
 
        return 0;
@@ -118,34 +170,24 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
-int select_i2c_ch_pca9547(u8 ch)
-{
-       int ret;
-
-       ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
-       if (ret) {
-               puts("PCA: failed to select proper channel\n");
-               return ret;
-       }
-
-       return 0;
-}
-
 int board_early_init_f(void)
 {
        struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR;
        struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
 
 #ifdef CONFIG_TSEC_ENET
-       out_be32(&scfg->scfgrevcr, SCFG_SCFGREVCR_REV);
        out_be32(&scfg->etsecdmamcr, SCFG_ETSECDMAMCR_LE_BD_FR);
-       out_be32(&scfg->scfgrevcr, SCFG_SCFGREVCR_NOREV);
+       out_be32(&scfg->etsecmcr, SCFG_ETSECCMCR_GE2_CLK125);
 #endif
 
 #ifdef CONFIG_FSL_IFC
        init_early_memctl_regs();
 #endif
 
+#ifdef CONFIG_FSL_QSPI
+       out_be32(&scfg->qspi_cfg, SCFG_QSPI_CLKSEL);
+#endif
+
        /* Workaround for the issue that DDR could not respond to
         * barrier transaction which is generated by executing DSB/ISB
         * instruction. Set CCI-400 control override register to
@@ -156,13 +198,75 @@ int board_early_init_f(void)
        return 0;
 }
 
+#ifdef CONFIG_SPL_BUILD
+void board_init_f(ulong dummy)
+{
+       struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
+
+#ifdef CONFIG_NAND_BOOT
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
+       u32 porsr1, pinctl;
+
+       /*
+        * There is LS1 SoC issue where NOR, FPGA are inaccessible during
+        * NAND boot because IFC signals > IFC_AD7 are not enabled.
+        * This workaround changes RCW source to make all signals enabled.
+        */
+       porsr1 = in_be32(&gur->porsr1);
+       pinctl = ((porsr1 & ~(DCFG_CCSR_PORSR1_RCW_MASK)) |
+                DCFG_CCSR_PORSR1_RCW_SRC_I2C);
+       out_be32((unsigned int *)(CONFIG_SYS_DCSR_DCFG_ADDR + DCFG_DCSR_PORCR1),
+                pinctl);
+#endif
+
+       /* Set global data pointer */
+       gd = &gdata;
+
+       /* Clear the BSS */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+#ifdef CONFIG_FSL_IFC
+       init_early_memctl_regs();
+#endif
+
+       get_clocks();
+
+       preloader_console_init();
+
+#ifdef CONFIG_SPL_I2C_SUPPORT
+       i2c_init_all();
+#endif
+       out_le32(&cci->ctrl_ord, CCI400_CTRLORD_TERM_BARRIER);
+
+       dram_init();
+
+       board_init_r(NULL, 0);
+}
+#endif
+
 int config_board_mux(int ctrl_type)
 {
-       u8 reg12;
+       u8 reg12, reg14;
 
        reg12 = QIXIS_READ(brdcfg[12]);
+       reg14 = QIXIS_READ(brdcfg[14]);
 
        switch (ctrl_type) {
+       case MUX_TYPE_CAN:
+               reg14 = SET_EC_MUX_SEL(reg14, PIN_MUX_SEL_CAN);
+               break;
+       case MUX_TYPE_IIC2:
+               reg14 = SET_SDHC_MUX_SEL(reg14, PIN_MUX_SEL_IIC2);
+               break;
+       case MUX_TYPE_RGMII:
+               reg14 = SET_EC_MUX_SEL(reg14, PIN_MUX_SEL_RGMII);
+               break;
+       case MUX_TYPE_SAI:
+               reg14 = SET_EC_MUX_SEL(reg14, PIN_MUX_SEL_SAI);
+               break;
+       case MUX_TYPE_SDHC:
+               reg14 = SET_SDHC_MUX_SEL(reg14, PIN_MUX_SEL_SDHC);
+               break;
        case MUX_TYPE_SD_PCI4:
                reg12 = 0x38;
                break;
@@ -181,6 +285,7 @@ int config_board_mux(int ctrl_type)
        }
 
        QIXIS_WRITE(brdcfg[12], reg12);
+       QIXIS_WRITE(brdcfg[14], reg14);
 
        return 0;
 }
@@ -214,15 +319,154 @@ int config_serdes_mux(void)
        return 0;
 }
 
-#if defined(CONFIG_MISC_INIT_R)
 int misc_init_r(void)
 {
+       int conflict_flag;
+
+       /* some signals can not enable simultaneous*/
+       conflict_flag = 0;
+       if (hwconfig("sdhc"))
+               conflict_flag++;
+       if (hwconfig("iic2"))
+               conflict_flag++;
+       if (conflict_flag > 1) {
+               printf("WARNING: pin conflict !\n");
+               return 0;
+       }
+
+       conflict_flag = 0;
+       if (hwconfig("rgmii"))
+               conflict_flag++;
+       if (hwconfig("can"))
+               conflict_flag++;
+       if (hwconfig("sai"))
+               conflict_flag++;
+       if (conflict_flag > 1) {
+               printf("WARNING: pin conflict !\n");
+               return 0;
+       }
+
+       if (hwconfig("can"))
+               config_board_mux(MUX_TYPE_CAN);
+       else if (hwconfig("rgmii"))
+               config_board_mux(MUX_TYPE_RGMII);
+       else if (hwconfig("sai"))
+               config_board_mux(MUX_TYPE_SAI);
+
+       if (hwconfig("iic2"))
+               config_board_mux(MUX_TYPE_IIC2);
+       else if (hwconfig("sdhc"))
+               config_board_mux(MUX_TYPE_SDHC);
+
 #ifdef CONFIG_FSL_CAAM
        return sec_init();
 #endif
+       return 0;
 }
+
+#ifdef CONFIG_LS102XA_NS_ACCESS
+static struct csu_ns_dev ns_dev[] = {
+       { CSU_CSLX_PCIE2_IO, CSU_ALL_RW },
+       { CSU_CSLX_PCIE1_IO, CSU_ALL_RW },
+       { CSU_CSLX_MG2TPR_IP, CSU_ALL_RW },
+       { CSU_CSLX_IFC_MEM, CSU_ALL_RW },
+       { CSU_CSLX_OCRAM, CSU_ALL_RW },
+       { CSU_CSLX_GIC, CSU_ALL_RW },
+       { CSU_CSLX_PCIE1, CSU_ALL_RW },
+       { CSU_CSLX_OCRAM2, CSU_ALL_RW },
+       { CSU_CSLX_QSPI_MEM, CSU_ALL_RW },
+       { CSU_CSLX_PCIE2, CSU_ALL_RW },
+       { CSU_CSLX_SATA, CSU_ALL_RW },
+       { CSU_CSLX_USB3, CSU_ALL_RW },
+       { CSU_CSLX_SERDES, CSU_ALL_RW },
+       { CSU_CSLX_QDMA, CSU_ALL_RW },
+       { CSU_CSLX_LPUART2, CSU_ALL_RW },
+       { CSU_CSLX_LPUART1, CSU_ALL_RW },
+       { CSU_CSLX_LPUART4, CSU_ALL_RW },
+       { CSU_CSLX_LPUART3, CSU_ALL_RW },
+       { CSU_CSLX_LPUART6, CSU_ALL_RW },
+       { CSU_CSLX_LPUART5, CSU_ALL_RW },
+       { CSU_CSLX_DSPI2, CSU_ALL_RW },
+       { CSU_CSLX_DSPI1, CSU_ALL_RW },
+       { CSU_CSLX_QSPI, CSU_ALL_RW },
+       { CSU_CSLX_ESDHC, CSU_ALL_RW },
+       { CSU_CSLX_2D_ACE, CSU_ALL_RW },
+       { CSU_CSLX_IFC, CSU_ALL_RW },
+       { CSU_CSLX_I2C1, CSU_ALL_RW },
+       { CSU_CSLX_USB2, CSU_ALL_RW },
+       { CSU_CSLX_I2C3, CSU_ALL_RW },
+       { CSU_CSLX_I2C2, CSU_ALL_RW },
+       { CSU_CSLX_DUART2, CSU_ALL_RW },
+       { CSU_CSLX_DUART1, CSU_ALL_RW },
+       { CSU_CSLX_WDT2, CSU_ALL_RW },
+       { CSU_CSLX_WDT1, CSU_ALL_RW },
+       { CSU_CSLX_EDMA, CSU_ALL_RW },
+       { CSU_CSLX_SYS_CNT, CSU_ALL_RW },
+       { CSU_CSLX_DMA_MUX2, CSU_ALL_RW },
+       { CSU_CSLX_DMA_MUX1, CSU_ALL_RW },
+       { CSU_CSLX_DDR, CSU_ALL_RW },
+       { CSU_CSLX_QUICC, CSU_ALL_RW },
+       { CSU_CSLX_DCFG_CCU_RCPM, CSU_ALL_RW },
+       { CSU_CSLX_SECURE_BOOTROM, CSU_ALL_RW },
+       { CSU_CSLX_SFP, CSU_ALL_RW },
+       { CSU_CSLX_TMU, CSU_ALL_RW },
+       { CSU_CSLX_SECURE_MONITOR, CSU_ALL_RW },
+       { CSU_CSLX_RESERVED0, CSU_ALL_RW },
+       { CSU_CSLX_ETSEC1, CSU_ALL_RW },
+       { CSU_CSLX_SEC5_5, CSU_ALL_RW },
+       { CSU_CSLX_ETSEC3, CSU_ALL_RW },
+       { CSU_CSLX_ETSEC2, CSU_ALL_RW },
+       { CSU_CSLX_GPIO2, CSU_ALL_RW },
+       { CSU_CSLX_GPIO1, CSU_ALL_RW },
+       { CSU_CSLX_GPIO4, CSU_ALL_RW },
+       { CSU_CSLX_GPIO3, CSU_ALL_RW },
+       { CSU_CSLX_PLATFORM_CONT, CSU_ALL_RW },
+       { CSU_CSLX_CSU, CSU_ALL_RW },
+       { CSU_CSLX_ASRC, CSU_ALL_RW },
+       { CSU_CSLX_SPDIF, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN2, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN1, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN4, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN3, CSU_ALL_RW },
+       { CSU_CSLX_SAI2, CSU_ALL_RW },
+       { CSU_CSLX_SAI1, CSU_ALL_RW },
+       { CSU_CSLX_SAI4, CSU_ALL_RW },
+       { CSU_CSLX_SAI3, CSU_ALL_RW },
+       { CSU_CSLX_FTM2, CSU_ALL_RW },
+       { CSU_CSLX_FTM1, CSU_ALL_RW },
+       { CSU_CSLX_FTM4, CSU_ALL_RW },
+       { CSU_CSLX_FTM3, CSU_ALL_RW },
+       { CSU_CSLX_FTM6, CSU_ALL_RW },
+       { CSU_CSLX_FTM5, CSU_ALL_RW },
+       { CSU_CSLX_FTM8, CSU_ALL_RW },
+       { CSU_CSLX_FTM7, CSU_ALL_RW },
+       { CSU_CSLX_COP_DCSR, CSU_ALL_RW },
+       { CSU_CSLX_EPU, CSU_ALL_RW },
+       { CSU_CSLX_GDI, CSU_ALL_RW },
+       { CSU_CSLX_DDI, CSU_ALL_RW },
+       { CSU_CSLX_RESERVED1, CSU_ALL_RW },
+       { CSU_CSLX_USB3_PHY, CSU_ALL_RW },
+       { CSU_CSLX_RESERVED2, CSU_ALL_RW },
+};
 #endif
 
+struct smmu_stream_id dev_stream_id[] = {
+       { 0x100, 0x01, "ETSEC MAC1" },
+       { 0x104, 0x02, "ETSEC MAC2" },
+       { 0x108, 0x03, "ETSEC MAC3" },
+       { 0x10c, 0x04, "PEX1" },
+       { 0x110, 0x05, "PEX2" },
+       { 0x114, 0x06, "qDMA" },
+       { 0x118, 0x07, "SATA" },
+       { 0x11c, 0x08, "USB3" },
+       { 0x120, 0x09, "QE" },
+       { 0x124, 0x0a, "eSDHC" },
+       { 0x128, 0x0b, "eMA" },
+       { 0x14c, 0x0c, "2D-ACE" },
+       { 0x150, 0x0d, "USB2" },
+       { 0x18c, 0x0e, "DEBUG" },
+};
+
 int board_init(void)
 {
        struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
@@ -230,6 +474,13 @@ int board_init(void)
        /* Set CCI-400 control override register to
         * enable barrier transaction */
        out_le32(&cci->ctrl_ord, CCI400_CTRLORD_EN_BARRIER);
+       /*
+        * Set CCI-400 Slave interface S0, S1, S2 Shareable Override Register
+        * All transactions are treated as non-shareable
+        */
+       out_le32(&cci->slave[0].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
+       out_le32(&cci->slave[1].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
+       out_le32(&cci->slave[2].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
 
        select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
 
@@ -237,12 +488,30 @@ int board_init(void)
        fsl_serdes_init();
        config_serdes_mux();
 #endif
+
+       ls102xa_config_smmu_stream_id(dev_stream_id,
+                                     ARRAY_SIZE(dev_stream_id));
+
+#ifdef CONFIG_LS102XA_NS_ACCESS
+       enable_devices_ns_access(ns_dev, ARRAY_SIZE(ns_dev));
+#endif
+
+#ifdef CONFIG_U_QE
+       u_qe_init();
+#endif
+
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+#ifdef CONFIG_PCIE_LAYERSCAPE
+       ft_pcie_setup(blob, bd);
+#endif
+
+       return 0;
 }
 
 u8 flash_read8(void *addr)
diff --git a/board/freescale/ls1021aqds/ls102xa_pbi.cfg b/board/freescale/ls1021aqds/ls102xa_pbi.cfg
new file mode 100644 (file)
index 0000000..f1a1b63
--- /dev/null
@@ -0,0 +1,12 @@
+#PBI commands
+
+09570200 ffffffff
+09570158 00000300
+8940007c 21f47300
+
+#Configure Scratch register
+09ee0200 10000000
+#Configure alternate space
+09570158 00001000
+#Flush PBL data
+096100c0 000FFFFF
diff --git a/board/freescale/ls1021aqds/ls102xa_rcw_nand.cfg b/board/freescale/ls1021aqds/ls102xa_rcw_nand.cfg
new file mode 100644 (file)
index 0000000..222c71d
--- /dev/null
@@ -0,0 +1,7 @@
+#PBL preamble and RCW header
+aa55aa55 01ee0100
+# serdes protocol
+0608000a 00000000 00000000 00000000
+60000000 00407900 e0106a00 21046000
+00000000 00000000 00000000 00038000
+00000000 001b7200 00000000 00000000
diff --git a/board/freescale/ls1021aqds/ls102xa_rcw_sd.cfg b/board/freescale/ls1021aqds/ls102xa_rcw_sd.cfg
new file mode 100644 (file)
index 0000000..9d99bd8
--- /dev/null
@@ -0,0 +1,14 @@
+#PBL preamble and RCW header
+aa55aa55 01ee0100
+
+#enable IFC, disable QSPI and DSPI
+0608000a 00000000 00000000 00000000
+60000000 00407900 60040a00 21046000
+00000000 00000000 00000000 00038000
+00000000 001b7200 00000000 00000000
+
+#disable IFC, enable QSPI and DSPI
+#0608000a 00000000 00000000 00000000
+#60000000 00407900 60040a00 21046000
+#00000000 00000000 00000000 00038000
+#20024800 001b7200 00000000 00000000
index 8def0e5ac4b8ba0f6f538d40d5b6a2e0fb952d69..91767065faa36f0f2540d2263ea882305020fb55 100644 (file)
@@ -5,3 +5,5 @@ F:      board/freescale/ls1021atwr/
 F:     include/configs/ls1021atwr.h
 F:     configs/ls1021atwr_nor_defconfig
 F:     configs/ls1021atwr_nor_SECURE_BOOT_defconfig
+F:     configs/ls1021atwr_sdcard_defconfig
+F:     configs/ls1021atwr_qspi_defconfig
index 50d564055b173ddd2ee46db63b2797168e7e2544..8ab229ddf09040eafdb1a4289fac1d5504aa8fb1 100644 (file)
@@ -8,8 +8,11 @@
 #include <i2c.h>
 #include <asm/io.h>
 #include <asm/arch/immap_ls102xa.h>
+#include <asm/arch/ns_access.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/fsl_serdes.h>
+#include <asm/arch/ls102xa_stream_id.h>
+#include <asm/pcie_layerscape.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <fsl_ifc.h>
 #include <fsl_mdio.h>
 #include <tsec.h>
 #include <fsl_sec.h>
+#include <spl.h>
+#ifdef CONFIG_U_QE
+#include "../../../drivers/qe/qe.h"
+#endif
+
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -66,6 +74,7 @@ struct cpld_data {
        u8 rev2;                /* Reserved */
 };
 
+#ifndef CONFIG_QSPI_BOOT
 static void convert_serdes_mux(int type, int need_reset);
 
 void cpld_show(void)
@@ -101,11 +110,14 @@ void cpld_show(void)
               in_8(&cpld_data->serdes_mux));
 #endif
 }
+#endif
 
 int checkboard(void)
 {
        puts("Board: LS1021ATWR\n");
+#ifndef CONFIG_QSPI_BOOT
        cpld_show();
+#endif
 
        return 0;
 }
@@ -214,6 +226,7 @@ int board_eth_init(bd_t *bis)
 }
 #endif
 
+#ifndef CONFIG_QSPI_BOOT
 int config_serdes_mux(void)
 {
        struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
@@ -245,17 +258,15 @@ int config_serdes_mux(void)
 
        return 0;
 }
+#endif
 
 int board_early_init_f(void)
 {
        struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR;
 
 #ifdef CONFIG_TSEC_ENET
-       out_be32(&scfg->scfgrevcr, SCFG_SCFGREVCR_REV);
        out_be32(&scfg->etsecdmamcr, SCFG_ETSECDMAMCR_LE_BD_FR);
        out_be32(&scfg->etsecmcr, SCFG_ETSECCMCR_GE2_CLK125);
-       udelay(10);
-       out_be32(&scfg->scfgrevcr, SCFG_SCFGREVCR_NOREV);
 #endif
 
 #ifdef CONFIG_FSL_IFC
@@ -263,20 +274,167 @@ int board_early_init_f(void)
 #endif
 
 #ifdef CONFIG_FSL_DCU_FB
-       out_be32(&scfg->scfgrevcr, SCFG_SCFGREVCR_REV);
        out_be32(&scfg->pixclkcr, SCFG_PIXCLKCR_PXCKEN);
-       out_be32(&scfg->scfgrevcr, SCFG_SCFGREVCR_NOREV);
+#endif
+
+#ifdef CONFIG_FSL_QSPI
+       out_be32(&scfg->qspi_cfg, SCFG_QSPI_CLKSEL);
 #endif
 
        return 0;
 }
 
+#ifdef CONFIG_SPL_BUILD
+void board_init_f(ulong dummy)
+{
+       /* Set global data pointer */
+       gd = &gdata;
+
+       /* Clear the BSS */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+       get_clocks();
+
+       preloader_console_init();
+
+       dram_init();
+
+       board_init_r(NULL, 0);
+}
+#endif
+
+#ifdef CONFIG_LS102XA_NS_ACCESS
+static struct csu_ns_dev ns_dev[] = {
+       { CSU_CSLX_PCIE2_IO, CSU_ALL_RW },
+       { CSU_CSLX_PCIE1_IO, CSU_ALL_RW },
+       { CSU_CSLX_MG2TPR_IP, CSU_ALL_RW },
+       { CSU_CSLX_IFC_MEM, CSU_ALL_RW },
+       { CSU_CSLX_OCRAM, CSU_ALL_RW },
+       { CSU_CSLX_GIC, CSU_ALL_RW },
+       { CSU_CSLX_PCIE1, CSU_ALL_RW },
+       { CSU_CSLX_OCRAM2, CSU_ALL_RW },
+       { CSU_CSLX_QSPI_MEM, CSU_ALL_RW },
+       { CSU_CSLX_PCIE2, CSU_ALL_RW },
+       { CSU_CSLX_SATA, CSU_ALL_RW },
+       { CSU_CSLX_USB3, CSU_ALL_RW },
+       { CSU_CSLX_SERDES, CSU_ALL_RW },
+       { CSU_CSLX_QDMA, CSU_ALL_RW },
+       { CSU_CSLX_LPUART2, CSU_ALL_RW },
+       { CSU_CSLX_LPUART1, CSU_ALL_RW },
+       { CSU_CSLX_LPUART4, CSU_ALL_RW },
+       { CSU_CSLX_LPUART3, CSU_ALL_RW },
+       { CSU_CSLX_LPUART6, CSU_ALL_RW },
+       { CSU_CSLX_LPUART5, CSU_ALL_RW },
+       { CSU_CSLX_DSPI2, CSU_ALL_RW },
+       { CSU_CSLX_DSPI1, CSU_ALL_RW },
+       { CSU_CSLX_QSPI, CSU_ALL_RW },
+       { CSU_CSLX_ESDHC, CSU_ALL_RW },
+       { CSU_CSLX_2D_ACE, CSU_ALL_RW },
+       { CSU_CSLX_IFC, CSU_ALL_RW },
+       { CSU_CSLX_I2C1, CSU_ALL_RW },
+       { CSU_CSLX_USB2, CSU_ALL_RW },
+       { CSU_CSLX_I2C3, CSU_ALL_RW },
+       { CSU_CSLX_I2C2, CSU_ALL_RW },
+       { CSU_CSLX_DUART2, CSU_ALL_RW },
+       { CSU_CSLX_DUART1, CSU_ALL_RW },
+       { CSU_CSLX_WDT2, CSU_ALL_RW },
+       { CSU_CSLX_WDT1, CSU_ALL_RW },
+       { CSU_CSLX_EDMA, CSU_ALL_RW },
+       { CSU_CSLX_SYS_CNT, CSU_ALL_RW },
+       { CSU_CSLX_DMA_MUX2, CSU_ALL_RW },
+       { CSU_CSLX_DMA_MUX1, CSU_ALL_RW },
+       { CSU_CSLX_DDR, CSU_ALL_RW },
+       { CSU_CSLX_QUICC, CSU_ALL_RW },
+       { CSU_CSLX_DCFG_CCU_RCPM, CSU_ALL_RW },
+       { CSU_CSLX_SECURE_BOOTROM, CSU_ALL_RW },
+       { CSU_CSLX_SFP, CSU_ALL_RW },
+       { CSU_CSLX_TMU, CSU_ALL_RW },
+       { CSU_CSLX_SECURE_MONITOR, CSU_ALL_RW },
+       { CSU_CSLX_RESERVED0, CSU_ALL_RW },
+       { CSU_CSLX_ETSEC1, CSU_ALL_RW },
+       { CSU_CSLX_SEC5_5, CSU_ALL_RW },
+       { CSU_CSLX_ETSEC3, CSU_ALL_RW },
+       { CSU_CSLX_ETSEC2, CSU_ALL_RW },
+       { CSU_CSLX_GPIO2, CSU_ALL_RW },
+       { CSU_CSLX_GPIO1, CSU_ALL_RW },
+       { CSU_CSLX_GPIO4, CSU_ALL_RW },
+       { CSU_CSLX_GPIO3, CSU_ALL_RW },
+       { CSU_CSLX_PLATFORM_CONT, CSU_ALL_RW },
+       { CSU_CSLX_CSU, CSU_ALL_RW },
+       { CSU_CSLX_ASRC, CSU_ALL_RW },
+       { CSU_CSLX_SPDIF, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN2, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN1, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN4, CSU_ALL_RW },
+       { CSU_CSLX_FLEXCAN3, CSU_ALL_RW },
+       { CSU_CSLX_SAI2, CSU_ALL_RW },
+       { CSU_CSLX_SAI1, CSU_ALL_RW },
+       { CSU_CSLX_SAI4, CSU_ALL_RW },
+       { CSU_CSLX_SAI3, CSU_ALL_RW },
+       { CSU_CSLX_FTM2, CSU_ALL_RW },
+       { CSU_CSLX_FTM1, CSU_ALL_RW },
+       { CSU_CSLX_FTM4, CSU_ALL_RW },
+       { CSU_CSLX_FTM3, CSU_ALL_RW },
+       { CSU_CSLX_FTM6, CSU_ALL_RW },
+       { CSU_CSLX_FTM5, CSU_ALL_RW },
+       { CSU_CSLX_FTM8, CSU_ALL_RW },
+       { CSU_CSLX_FTM7, CSU_ALL_RW },
+       { CSU_CSLX_COP_DCSR, CSU_ALL_RW },
+       { CSU_CSLX_EPU, CSU_ALL_RW },
+       { CSU_CSLX_GDI, CSU_ALL_RW },
+       { CSU_CSLX_DDI, CSU_ALL_RW },
+       { CSU_CSLX_RESERVED1, CSU_ALL_RW },
+       { CSU_CSLX_USB3_PHY, CSU_ALL_RW },
+       { CSU_CSLX_RESERVED2, CSU_ALL_RW },
+};
+#endif
+
+struct smmu_stream_id dev_stream_id[] = {
+       { 0x100, 0x01, "ETSEC MAC1" },
+       { 0x104, 0x02, "ETSEC MAC2" },
+       { 0x108, 0x03, "ETSEC MAC3" },
+       { 0x10c, 0x04, "PEX1" },
+       { 0x110, 0x05, "PEX2" },
+       { 0x114, 0x06, "qDMA" },
+       { 0x118, 0x07, "SATA" },
+       { 0x11c, 0x08, "USB3" },
+       { 0x120, 0x09, "QE" },
+       { 0x124, 0x0a, "eSDHC" },
+       { 0x128, 0x0b, "eMA" },
+       { 0x14c, 0x0c, "2D-ACE" },
+       { 0x150, 0x0d, "USB2" },
+       { 0x18c, 0x0e, "DEBUG" },
+};
+
 int board_init(void)
 {
+       struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
+
+       /*
+        * Set CCI-400 Slave interface S0, S1, S2 Shareable Override Register
+        * All transactions are treated as non-shareable
+        */
+       out_le32(&cci->slave[0].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
+       out_le32(&cci->slave[1].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
+       out_le32(&cci->slave[2].sha_ord, CCI400_SHAORD_NON_SHAREABLE);
+
 #ifndef CONFIG_SYS_FSL_NO_SERDES
        fsl_serdes_init();
+#ifndef CONFIG_QSPI_BOOT
        config_serdes_mux();
 #endif
+#endif
+
+       ls102xa_config_smmu_stream_id(dev_stream_id,
+                                     ARRAY_SIZE(dev_stream_id));
+
+#ifdef CONFIG_LS102XA_NS_ACCESS
+       enable_devices_ns_access(ns_dev, ARRAY_SIZE(ns_dev));
+#endif
+
+#ifdef CONFIG_U_QE
+       u_qe_init();
+#endif
 
        return 0;
 }
@@ -290,9 +448,15 @@ int misc_init_r(void)
 }
 #endif
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+#ifdef CONFIG_PCIE_LAYERSCAPE
+       ft_pcie_setup(blob, bd);
+#endif
+
+       return 0;
 }
 
 u8 flash_read8(void *addr)
@@ -314,6 +478,7 @@ u16 flash_read16(void *addr)
        return (((val) >> 8) & 0x00ff) | (((val) << 8) & 0xff00);
 }
 
+#ifndef CONFIG_QSPI_BOOT
 static void convert_flash_bank(char bank)
 {
        struct cpld_data *cpld_data = (void *)(CONFIG_SYS_CPLD_BASE);
@@ -496,3 +661,4 @@ U_BOOT_CMD(
        "       -change lane C & lane D to PCIeX2\n"
        "\nWARNING: If you aren't familiar with the setting of serdes, don't try to change anything!\n"
 );
+#endif
diff --git a/board/freescale/ls1021atwr/ls102xa_pbi.cfg b/board/freescale/ls1021atwr/ls102xa_pbi.cfg
new file mode 100644 (file)
index 0000000..f1a1b63
--- /dev/null
@@ -0,0 +1,12 @@
+#PBI commands
+
+09570200 ffffffff
+09570158 00000300
+8940007c 21f47300
+
+#Configure Scratch register
+09ee0200 10000000
+#Configure alternate space
+09570158 00001000
+#Flush PBL data
+096100c0 000FFFFF
diff --git a/board/freescale/ls1021atwr/ls102xa_rcw_sd.cfg b/board/freescale/ls1021atwr/ls102xa_rcw_sd.cfg
new file mode 100644 (file)
index 0000000..9c3e3b0
--- /dev/null
@@ -0,0 +1,14 @@
+#PBL preamble and RCW header
+aa55aa55 01ee0100
+
+#enable IFC, disable QSPI and DSPI
+0608000a 00000000 00000000 00000000
+20000000 00407900 60040a00 21046000
+00000000 00000000 00000000 00038000
+00080000 881b7340 00000000 00000000
+
+#disable IFC, enable QSPI and DSPI
+#0608000a 00000000 00000000 00000000
+#20000000 00407900 60040a00 21046000
+#00000000 00000000 00000000 00038000
+#20084800 881b7340 00000000 00000000
index 2c79a7181ecc53db55eb50591470f44e3ea1efc2..163a4c486a6acb03c43b377902af8e2112a8c54d 100644 (file)
@@ -100,7 +100,7 @@ void fdt_fixup_board_enet(void *fdt)
 #endif
 
 #ifdef CONFIG_OF_BOARD_SETUP
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -115,5 +115,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_MC_ENET
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
 #endif
index 940978e649e6b6dbe1d44eee5f40c9b70f6d4bc0..40bd55dfba6c6fa8ea27d6959a987f099790a0b9 100644 (file)
@@ -275,8 +275,10 @@ int checkboard (void)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
index 71b760c4a98ee715dea8fe0c2e729167b4236ee3..11747ca4a4ebc037e3be876d3894d84bb5f4b335 100644 (file)
@@ -70,11 +70,12 @@ phys_size_t initdram (int board_type)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
        fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
+
+       return 0;
 }
 #endif
 
diff --git a/board/freescale/mpc8266ads/MAINTAINERS b/board/freescale/mpc8266ads/MAINTAINERS
deleted file mode 100644 (file)
index bdea02d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MPC8266ADS BOARD
-M:     Rune Torgersen <runet@innovsys.com>
-S:     Maintained
-F:     board/freescale/mpc8266ads/
-F:     include/configs/MPC8266ADS.h
-F:     configs/MPC8266ADS_defconfig
diff --git a/board/freescale/mpc8266ads/Makefile b/board/freescale/mpc8266ads/Makefile
deleted file mode 100644 (file)
index ee63dc0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := mpc8266ads.o flash.o
diff --git a/board/freescale/mpc8266ads/flash.c b/board/freescale/mpc8266ads/flash.c
deleted file mode 100644 (file)
index ef28194..0000000
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Add support the Sharp chips on the mpc8260ads.
- * I started with board/ip860/flash.c and made changes I found in
- * the MTD project by David Schleef.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static int clear_block_lock_bit(vu_long * addr);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-#ifndef CONFIG_MPC8266ADS
-       volatile immap_t        *immap  = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8xx_t    *memctl = &immap->im_memctl;
-       volatile ip860_bcsr_t   *bcsr   = (ip860_bcsr_t *)BCSR_BASE;
-#endif
-       unsigned long size;
-       int i;
-
-       /* Init: enable write,
-        * or we cannot even write flash commands
-        */
-#ifndef CONFIG_MPC8266ADS
-       bcsr->bd_ctrl |= BD_CTRL_FLWE;
-#endif
-
-
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-
-               /* set the default sector offset */
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size = flash_get_size((vu_long *)FLASH_BASE, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size, size<<20);
-       }
-
-#ifndef CONFIG_MPC8266ADS
-       /* Remap FLASH according to real size */
-       memctl->memc_or1 = CONFIG_SYS_OR_TIMING_FLASH | (-size & 0xFFFF8000);
-       memctl->memc_br1 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) |
-                               (memctl->memc_br1 & ~(BR_BA_MSK));
-#endif
-       /* Re-do sizing to get full correct info */
-       size = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_info[0].size = size;
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       case FLASH_MAN_SHARP:   printf ("Sharp ");              break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F016SV:    printf ("28F016SV (16 Mbit, 32 x 64k)\n");
-                               break;
-       case FLASH_28F160S3:    printf ("28F160S3 (16 Mbit, 32 x 512K)\n");
-                               break;
-       case FLASH_28F320S3:    printf ("28F320S3 (32 Mbit, 64 x 512K)\n");
-                               break;
-       case FLASH_LH28F016SCT: printf ("28F016SC (16 Mbit, 32 x 64K)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       short i;
-       ulong value;
-       ulong base = (ulong)addr;
-       ulong sector_offset;
-
-       /* Write "Intelligent Identifier" command: read Manufacturer ID */
-       *addr = 0x90909090;
-
-       value = addr[0] & 0x00FF00FF;
-       switch (value) {
-       case MT_MANUFACT:       /* SHARP, MT or => Intel */
-       case INTEL_ALT_MANU:
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               printf("unknown manufacturer: %x\n", (unsigned int)value);
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];                        /* device ID            */
-
-       switch (value) {
-       case (INTEL_ID_28F016S):
-               info->flash_id += FLASH_28F016SV;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               sector_offset = 0x20000;
-               break;                          /* => 2x2 MB            */
-
-       case (INTEL_ID_28F160S3):
-               info->flash_id += FLASH_28F160S3;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               sector_offset = 0x20000;
-               break;                          /* => 2x2 MB            */
-
-       case (INTEL_ID_28F320S3):
-               info->flash_id += FLASH_28F320S3;
-               info->sector_count = 64;
-               info->size = 0x00800000;
-               sector_offset = 0x20000;
-               break;                          /* => 2x4 MB            */
-
-       case SHARP_ID_28F016SCL:
-       case SHARP_ID_28F016SCZ:
-               info->flash_id      = FLASH_MAN_SHARP | FLASH_LH28F016SCT;
-               info->sector_count  = 32;
-               info->size          = 0x00800000;
-               sector_offset = 0x40000;
-               break;                          /* => 4x2 MB            */
-
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start address table */
-       for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = base;
-               base += sector_offset;
-               /* don't know how to check sector protection */
-               info->protect[i] = 0;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (vu_long *)info->start[0];
-
-               *addr = 0xFFFFFF;       /* reset bank to read array mode */
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if (    ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL)
-            && ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_SHARP) ) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       /* Make Sure Block Lock Bit is not set. */
-       if(clear_block_lock_bit((vu_long *)(info->start[s_first]))){
-               return 1;
-       }
-
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_long *addr = (vu_long *)(info->start[sect]);
-
-                       last = start = get_timer (0);
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-                       /* Reset Array */
-                       *addr = 0xffffffff;
-                       /* Clear Status Register */
-                       *addr = 0x50505050;
-                       /* Single Block Erase Command */
-                       *addr = 0x20202020;
-                       /* Confirm */
-                       *addr = 0xD0D0D0D0;
-
-                       if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) {
-                           /* Resume Command, as per errata update */
-                           *addr = 0xD0D0D0D0;
-                       }
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-                       while ((*addr & 0x80808080) != 0x80808080) {
-                               if(*addr & 0x20202020){
-                                       printf("Error in Block Erase - Lock Bit may be set!\n");
-                                       printf("Status Register = 0x%X\n", (uint)*addr);
-                                       *addr = 0xFFFFFFFF;     /* reset bank */
-                                       return 1;
-                               }
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = 0xFFFFFFFF;     /* reset bank */
-                                       return 1;
-                               }
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       /* reset to read mode */
-                       *addr = 0xFFFFFFFF;
-               }
-       }
-
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_long *addr = (vu_long *)dest;
-       ulong start, csr;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       /* Write Command */
-       *addr = 0x10101010;
-
-       /* Write Data */
-       *addr = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       flag  = 0;
-       while (((csr = *addr) & 0x80808080) != 0x80808080) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       flag = 1;
-                       break;
-               }
-       }
-       if (csr & 0x40404040) {
-               printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr);
-               flag = 1;
-       }
-
-       /* Clear Status Registers Command */
-       *addr = 0x50505050;
-       /* Reset to read array mode */
-       *addr = 0xFFFFFFFF;
-
-       return (flag);
-}
-
-/*-----------------------------------------------------------------------
- * Clear Block Lock Bit, returns:
- * 0 - OK
- * 1 - Timeout
- */
-
-static int clear_block_lock_bit(vu_long  * addr)
-{
-       ulong start, now;
-
-       /* Reset Array */
-       *addr = 0xffffffff;
-       /* Clear Status Register */
-       *addr = 0x50505050;
-
-       *addr = 0x60606060;
-       *addr = 0xd0d0d0d0;
-
-       start = get_timer (0);
-       while(*addr != 0x80808080){
-               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout on clearing Block Lock Bit\n");
-                       *addr = 0xFFFFFFFF;     /* reset bank */
-                       return 1;
-               }
-       }
-       return 0;
-}
diff --git a/board/freescale/mpc8266ads/mpc8266ads.c b/board/freescale/mpc8266ads/mpc8266ads.c
deleted file mode 100644 (file)
index 1eeec3f..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- * (C) Copyright 2001-2011
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Modified during 2001 by
- * Advanced Communications Technologies (Australia) Pty. Ltd.
- * Howard Walker, Tuong Vu-Dinh
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Added support for the 16M dram simm on the 8260ads boards
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <i2c.h>
-#include <mpc8260.h>
-#include <pci.h>
-
-/*
- * PBI Page Based Interleaving
- *   PSDMR_PBI page based interleaving
- *   0         bank based interleaving
- * External Address Multiplexing (EAMUX) adds a clock to address cycles
- *   (this can help with marginal board layouts)
- *   PSDMR_EAMUX  adds a clock
- *   0            no extra clock
- * Buffer Command (BUFCMD) adds a clock to command cycles.
- *   PSDMR_BUFCMD adds a clock
- *   0            no extra clock
- */
-#define CONFIG_PBI             0
-#define PESSIMISTIC_SDRAM      0
-#define EAMUX                  0       /* EST requires EAMUX */
-#define BUFCMD                 0
-
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-       /* Port A configuration */
-       {       /*  conf ppar psor pdir podr pdat */
-       /* PA31 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 TxENB */
-       /* PA30 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 TxClav   */
-       /* PA29 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 TxSOC  */
-       /* PA28 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 RxENB */
-       /* PA27 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 RxSOC */
-       /* PA26 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 RxClav */
-       /* PA25 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[0] */
-       /* PA24 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[1] */
-       /* PA23 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[2] */
-       /* PA22 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[3] */
-       /* PA21 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[4] */
-       /* PA20 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[5] */
-       /* PA19 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[6] */
-       /* PA18 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[7] */
-       /* PA17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[7] */
-       /* PA16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[6] */
-       /* PA15 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[5] */
-       /* PA14 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[4] */
-       /* PA13 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[3] */
-       /* PA12 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[2] */
-       /* PA11 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[1] */
-       /* PA10 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[0] */
-       /* PA9  */ {   0,   1,   1,   1,   0,   0   }, /* FCC1 L1TXD */
-       /* PA8  */ {   0,   1,   1,   0,   0,   0   }, /* FCC1 L1RXD */
-       /* PA7  */ {   0,   0,   0,   1,   0,   0   }, /* PA7 */
-       /* PA6  */ {   1,   1,   1,   1,   0,   0   }, /* TDM A1 L1RSYNC */
-       /* PA5  */ {   0,   0,   0,   1,   0,   0   }, /* PA5 */
-       /* PA4  */ {   0,   0,   0,   1,   0,   0   }, /* PA4 */
-       /* PA3  */ {   0,   0,   0,   1,   0,   0   }, /* PA3 */
-       /* PA2  */ {   0,   0,   0,   1,   0,   0   }, /* PA2 */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* FREERUN */
-       /* PA0  */ {   0,   0,   0,   1,   0,   0   }  /* PA0 */
-       },
-
-       /* Port B configuration */
-       {       /*  conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
-       /* PB17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RX_DIV */
-       /* PB16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RX_ERR */
-       /* PB15 */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TX_ERR */
-       /* PB14 */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TX_EN */
-       /* PB13 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:COL */
-       /* PB12 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:CRS */
-       /* PB11 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB10 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB9  */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB8  */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB7  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB6  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB5  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB4  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-       },
-
-       /* Port C */
-       {       /*  conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   1,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   1,   0,   0   }, /* PC30 */
-       /* PC29 */ {   0,   1,   1,   0,   0,   0   }, /* SCC1 EN *CLSN */
-       /* PC28 */ {   0,   0,   0,   1,   0,   0   }, /* PC28 */
-       /* PC27 */ {   0,   0,   0,   1,   0,   0   }, /* UART Clock in */
-       /* PC26 */ {   0,   0,   0,   1,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   1,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   1,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   1,   0,   1,   0,   0   }, /* ATMTFCLK */
-       /* PC22 */ {   0,   1,   0,   0,   0,   0   }, /* ATMRFCLK */
-       /* PC21 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN RXCLK */
-       /* PC20 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN TXCLK */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK CLK13 */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC Tx Clock (CLK14) */
-       /* PC17 */ {   0,   0,   0,   1,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC Tx Clock (CLK16) */
-       /* PC15 */ {   0,   0,   0,   1,   0,   0   }, /* PC15 */
-       /* PC14 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN *CD */
-       /* PC13 */ {   0,   0,   0,   1,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   1,   0,   1,   0,   0   }, /* PC12 */
-       /* PC11 */ {   0,   0,   0,   1,   0,   0   }, /* LXT971 transmit control */
-       /* PC10 */ {   1,   0,   0,   1,   0,   0   }, /* LXT970 FETHMDC */
-       /* PC9  */ {   1,   0,   0,   0,   0,   0   }, /* LXT970 FETHMDIO */
-       /* PC8  */ {   0,   0,   0,   1,   0,   0   }, /* PC8 */
-       /* PC7  */ {   0,   0,   0,   1,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   1,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   1,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   1,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   1,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   1,   0,   1   }, /* ENET FDE */
-       /* PC1  */ {   0,   0,   0,   1,   0,   0   }, /* ENET DSQE */
-       /* PC0  */ {   0,   0,   0,   1,   0,   0   }, /* ENET LBK */
-       },
-
-       /* Port D */
-       {       /*  conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 EN RxD */
-       /* PD30 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 EN TxD */
-       /* PD29 */ {   0,   1,   0,   1,   0,   0   }, /* SCC1 EN TENA */
-       /* PD28 */ {   0,   1,   0,   0,   0,   0   }, /* PD28 */
-       /* PD27 */ {   0,   1,   1,   1,   0,   0   }, /* PD27 */
-       /* PD26 */ {   0,   0,   0,   1,   0,   0   }, /* PD26 */
-       /* PD25 */ {   0,   0,   0,   1,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   1,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   1,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   1,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   1,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   1,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   1,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   1,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXPRTY */
-       /* PD16 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXPRTY */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
-       /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
-       /* PD7  */ {   0,   0,   0,   1,   0,   1   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   1,   0,   1   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   1,   0,   1   }, /* PD5 */
-       /* PD4  */ {   0,   0,   0,   1,   0,   1   }, /* PD4 */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-       }
-};
-
-typedef struct bscr_ {
-       unsigned long bcsr0;
-       unsigned long bcsr1;
-       unsigned long bcsr2;
-       unsigned long bcsr3;
-       unsigned long bcsr4;
-       unsigned long bcsr5;
-       unsigned long bcsr6;
-       unsigned long bcsr7;
-} bcsr_t;
-
-typedef struct pci_ic_s {
-       unsigned long pci_int_stat;
-       unsigned long pci_int_mask;
-} pci_ic_t;
-
-void reset_phy(void)
-{
-       volatile bcsr_t *bcsr = (bcsr_t *)CONFIG_SYS_BCSR;
-
-       /* reset the FEC port */
-       bcsr->bcsr1 &= ~FETH_RST;
-       bcsr->bcsr1 |= FETH_RST;
-}
-
-
-int board_early_init_f(void)
-{
-       volatile bcsr_t *bcsr = (bcsr_t *)CONFIG_SYS_BCSR;
-       volatile pci_ic_t *pci_ic = (pci_ic_t *)CONFIG_SYS_PCI_INT;
-
-       bcsr->bcsr1 = ~FETHIEN & ~RS232EN_1 & ~RS232EN_2;
-
-       /* mask all PCI interrupts */
-       pci_ic->pci_int_mask |= 0xfff00000;
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       puts("Board: Motorola MPC8266ADS\n");
-       return 0;
-}
-
-phys_size_t initdram(int board_type)
-{
-       /* Autoinit part stolen from board/sacsng/sacsng.c */
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       volatile uchar c = 0xff;
-       volatile uchar *ramaddr = (uchar *) (CONFIG_SYS_SDRAM_BASE + 0x8);
-       uint psdmr = CONFIG_SYS_PSDMR;
-       int i;
-
-       uint psrt = 0x21;       /* for no SPD */
-       uint chipselects = 1;   /* for no SPD */
-       uint sdram_size = CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;  /* for no SPD */
-       uint or = CONFIG_SYS_OR2_PRELIM;        /* for no SPD */
-       uint data_width;
-       uint rows;
-       uint banks;
-       uint cols;
-       uint caslatency;
-       uint width;
-       uint rowst;
-       uint sdam;
-       uint bsma;
-       uint sda10;
-       u_char data;
-       u_char cksum;
-       int j;
-
-       /*
-        * Keep the compiler from complaining about
-        * potentially uninitialized vars
-        */
-       data_width = rows = banks = cols = caslatency = 0;
-
-       /*
-        * Read the SDRAM SPD EEPROM via I2C.
-        */
-       i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-
-       i2c_read(SDRAM_SPD_ADDR, 0, 1, &data, 1);
-       cksum = data;
-       for (j = 1; j < 64; j++) {      /* read only the checksummed bytes */
-               /* note: the I2C address autoincrements when alen == 0 */
-               i2c_read(SDRAM_SPD_ADDR, 0, 0, &data, 1);
-               /*printf("addr %d = 0x%02x\n", j, data); */
-               if (j == 5)
-                       chipselects = data & 0x0F;
-               else if (j == 6)
-                       data_width = data;
-               else if (j == 7)
-                       data_width |= data << 8;
-               else if (j == 3)
-                       rows = data & 0x0F;
-               else if (j == 4)
-                       cols = data & 0x0F;
-               else if (j == 12) {
-                       /*
-                        * Refresh rate: this assumes the prescaler is set to
-                        * approximately 0.39uSec per tick and the target
-                        * refresh period is about 85% of maximum.
-                        */
-                       switch (data & 0x7F) {
-                       default:
-                       case 0:
-                               psrt = 0x21;    /*  15.625uS */
-                               break;
-                       case 1:
-                               psrt = 0x07;    /*   3.9uS   */
-                               break;
-                       case 2:
-                               psrt = 0x0F;    /*   7.8uS   */
-                               break;
-                       case 3:
-                               psrt = 0x43;    /*  31.3uS   */
-                               break;
-                       case 4:
-                               psrt = 0x87;    /*  62.5uS   */
-                               break;
-                       case 5:
-                               psrt = 0xFF;    /* 125uS     */
-                               break;
-                       }
-               } else if (j == 17)
-                       banks = data;
-               else if (j == 18) {
-                       caslatency = 3; /* default CL */
-#if (PESSIMISTIC_SDRAM)
-                       if ((data & 0x04) != 0)
-                               caslatency = 3;
-                       else if ((data & 0x02) != 0)
-                               caslatency = 2;
-                       else if ((data & 0x01) != 0)
-                               caslatency = 1;
-#else
-                       if ((data & 0x01) != 0)
-                               caslatency = 1;
-                       else if ((data & 0x02) != 0)
-                               caslatency = 2;
-                       else if ((data & 0x04) != 0)
-                               caslatency = 3;
-#endif
-                       else {
-                               printf("WARNING: Unknown CAS latency 0x%02X, using 3\n",
-                                       data);
-                       }
-               } else if (j == 63) {
-                       if (data != cksum) {
-                               printf("WARNING: Configuration data checksum failure:"
-                                       " is 0x%02x, calculated 0x%02x\n",
-                                       data, cksum);
-                       }
-               }
-               cksum += data;
-       }
-
-       /* We don't trust CL less than 2 (only saw it on an old 16MByte DIMM) */
-       if (caslatency < 2) {
-               printf("CL was %d, forcing to 2\n", caslatency);
-               caslatency = 2;
-       }
-       if (rows > 14) {
-               printf("This doesn't look good, rows = %d, should be <= 14\n",
-                      rows);
-               rows = 14;
-       }
-       if (cols > 11) {
-               printf("This doesn't look good, columns = %d, should be <= 11\n",
-                       cols);
-               cols = 11;
-       }
-
-       if ((data_width != 64) && (data_width != 72)) {
-               printf("WARNING: SDRAM width unsupported, is %d, expected 64 or 72.\n",
-                       data_width);
-       }
-       width = 3;              /* 2^3 = 8 bytes = 64 bits wide */
-       /*
-        * Convert banks into log2(banks)
-        */
-       if (banks == 2)
-               banks = 1;
-       else if (banks == 4)
-               banks = 2;
-       else if (banks == 8)
-               banks = 3;
-
-
-       sdram_size = 1 << (rows + cols + banks + width);
-       /* hack for high density memory (512MB per CS) */
-       /* !!!!! Will ONLY work with Page Based Interleave !!!!!
-          ( PSDMR[PBI] = 1 )
-        */
-       /*
-        * memory actually has 11 column addresses, but the memory
-        * controller doesn't really care.
-        *
-        * the calculations that follow will however move the rows so
-        * that they are muxed one bit off if you use 11 bit columns.
-        *
-        * The solution is to tell the memory controller the correct
-        * size of the memory but change the number of columns to 10
-        * afterwards.
-        *
-        * The 11th column addre will still be mucxed correctly onto
-        * the bus.
-        *
-        * Also be aware that the MPC8266ADS board Rev B has not
-        * connected Row address 13 to anything.
-        *
-        * The fix is to connect ADD16 (from U37-47) to SADDR12 (U28-126)
-        */
-       if (cols > 10)
-               cols = 10;
-
-#if (CONFIG_PBI == 0)          /* bank-based interleaving */
-       rowst = ((32 - 6) - (rows + cols + width)) * 2;
-#else
-       rowst = 32 - (rows + banks + cols + width);
-#endif
-
-       or = ~(sdram_size - 1) |        /* SDAM address mask    */
-               ((banks - 1) << 13) |   /* banks per device     */
-               (rowst << 9) |          /* rowst                */
-               ((rows - 9) << 6);      /* numr                 */
-
-
-       /*printf("memctl->memc_or2 = 0x%08x\n", or); */
-
-       /*
-        * SDAM specifies the number of columns that are multiplexed
-        * (reference AN2165/D), defined to be (columns - 6) for page
-        * interleave, (columns - 8) for bank interleave.
-        *
-        * BSMA is 14 - max(rows, cols).  The bank select lines come
-        * into play above the highest "address" line going into the
-        * the SDRAM.
-        */
-#if (CONFIG_PBI == 0)          /* bank-based interleaving */
-       sdam = cols - 8;
-       bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
-       sda10 = sdam + 2;
-#else
-       sdam = cols + banks - 8;
-       bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
-       sda10 = sdam;
-#endif
-#if (PESSIMISTIC_SDRAM)
-       psdmr = (CONFIG_PBI | PSDMR_RFEN | PSDMR_RFRC_16_CLK |
-               PSDMR_PRETOACT_8W | PSDMR_ACTTORW_8W | PSDMR_WRC_4C |
-               PSDMR_EAMUX | PSDMR_BUFCMD) | caslatency |
-               ((caslatency - 1) << 6) |       /* LDOTOPRE is CL - 1 */
-               (sdam << 24) | (bsma << 21) | (sda10 << 18);
-#else
-       psdmr = (CONFIG_PBI | PSDMR_RFEN | PSDMR_RFRC_7_CLK |
-               PSDMR_PRETOACT_3W |     /* 1 for 7E parts (fast PC-133) */
-               PSDMR_ACTTORW_2W |      /* 1 for 7E parts (fast PC-133) */
-               PSDMR_WRC_1C |  /* 1 clock + 7nSec */
-               EAMUX | BUFCMD) | caslatency |
-               ((caslatency - 1) << 6) |       /* LDOTOPRE is CL - 1 */
-               (sdam << 24) | (bsma << 21) | (sda10 << 18);
-#endif
-       /*printf("psdmr = 0x%08x\n", psdmr); */
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        * Quote from Micron MT48LC8M16A2 data sheet:
-        *
-        *  "...the SDRAM requires a 100uS delay prior to issuing any
-        *  command other than a COMMAND INHIBIT or NOP.  Starting at some
-        *  point during this 100uS period and continuing at least through
-        *  the end of this period, COMMAND INHIBIT or NOP commands should
-        *  be applied."
-        *
-        *  "Once the 100uS delay has been satisfied with at least one COMMAND
-        *  INHIBIT or NOP command having been applied, a /PRECHARGE command/
-        *  should be applied.  All banks must then be precharged, thereby
-        *  placing the device in the all banks idle state."
-        *
-        *  "Once in the idle state, /two/ AUTO REFRESH cycles must be
-        *  performed.  After the AUTO REFRESH cycles are complete, the
-        *  SDRAM is ready for mode register programming."
-        *
-        *  (/emphasis/ mine, gvb)
-        *
-        *  The way I interpret this, Micron start up sequence is:
-        *  1. Issue a PRECHARGE-BANK command (initial precharge)
-        *  2. Issue a PRECHARGE-ALL-BANKS command ("all banks ... precharged")
-        *  3. Issue two (presumably, doing eight is OK) CBR REFRESH commands
-        *  4. Issue a MODE-SET command to initialize the mode register
-        *
-        *  --------
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set
-        * when we get here. The SDRAM can be accessed at the address
-        * CONFIG_SYS_SDRAM_BASE.
-        */
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-       memctl->memc_psrt = psrt;
-
-       memctl->memc_br2 = CONFIG_SYS_BR2_PRELIM;
-       memctl->memc_or2 = or;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *ramaddr = c;
-
-       /*
-        * Do it a second time for the second set of chips if the DIMM has
-        * two chip selects (double sided).
-        */
-       if (chipselects > 1) {
-               ramaddr += sdram_size;
-
-               memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM + sdram_size;
-               memctl->memc_or3 = or;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
-               *ramaddr = c;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
-               for (i = 0; i < 8; i++)
-                       *ramaddr = c;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
-               *ramaddr = c;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-               *ramaddr = c;
-       }
-
-       /* print info */
-       printf("SDRAM configuration read from SPD\n");
-       printf("\tSize per side = %dMB\n", sdram_size >> 20);
-       printf("\tOrganization: %d sides, %d banks, %d Columns, %d Rows, Data width = %d bits\n",
-               chipselects, 1 << (banks), cols, rows, data_width);
-       printf("\tRefresh rate = %d, CAS latency = %d", psrt, caslatency);
-#if (CONFIG_PBI == 0)          /* bank-based interleaving */
-       printf(", Using Bank Based Interleave\n");
-#else
-       printf(", Using Page Based Interleave\n");
-#endif
-       printf("\tTotal size: ");
-
-       /* this delay only needed for original 16MB DIMM...
-        * Not needed for any other memory configuration */
-       if ((sdram_size * chipselects) == (16 * 1024 * 1024))
-               udelay(250000);
-
-       return sdram_size * chipselects;
-}
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc8250_init(&hose);
-}
-#endif
index fba41fe504a7ca616655792ba6860410eb45c4a4..93e1c50f393a0cccbd5a429607eb3b8859382ee5 100644 (file)
@@ -161,11 +161,13 @@ int misc_init_r(void)
        return 0;
 }
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
        fdt_fixup_dr_usb(blob, bd);
        fdt_fixup_esdhc(blob, bd);
+
+       return 0;
 }
 #endif
 
index 69e98a50074b581761893eae0c1a0ffcb5de77ba..eac193e8177620aa57efe29c249dfb1f921a2410 100644 (file)
@@ -116,12 +116,14 @@ int misc_init_r(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
 #else /* CONFIG_SPL_BUILD */
index e6f091fd2f4c6060d1c1aa9dc0e465c267ecc30b..ed611c56c3f11dc700351c14b38c52746ece3b19 100644 (file)
@@ -188,7 +188,7 @@ void fdt_tsec1_fixup(void *fdt, bd_t *bd)
        do_fixup_by_path(fdt, path, "status", disabled, sizeof(disabled), 1);
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
@@ -196,6 +196,8 @@ void ft_board_setup(void *blob, bd_t *bd)
 #endif
        fdt_fixup_dr_usb(blob, bd);
        fdt_tsec1_fixup(blob, bd);
+
+       return 0;
 }
 #endif
 
index 3dce3623a411acb147d19518a664a141cc246eeb..0a0152ad9ea30969d8c4de54c5fcbe2a495a1c8a 100644 (file)
@@ -172,12 +172,14 @@ void pci_init_board(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
 
index b7ea0e44c39034d991c39da68b6b77f280297b30..adf425486e1edb92e9ccc89a84d245c413fffa51 100644 (file)
@@ -154,11 +154,13 @@ int checkboard(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
index d9092201aa549552bd2792a56b070d459f428131..02b5040ef4af177b18f3421bd709e14b3fb48c3f 100644 (file)
@@ -273,11 +273,13 @@ void spi_cs_deactivate(struct spi_slave *slave)
 #endif /* CONFIG_HARD_SPI */
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
index 803d722806046ab3fc296631b6094d0641e9895a..22a1d99c8846ae6bb2115b994f1c90711cd2ed2b 100644 (file)
@@ -378,11 +378,13 @@ int misc_init_r(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
index 5ff9dff5870791aa085426f3f1ebc18c88d22bf0..f0a55f8a8d8c3ef27f61161c1e2741dffe864432 100644 (file)
@@ -402,7 +402,7 @@ static void ft_board_fixup_qe_usb(void *blob, bd_t *bd)
                           "peripheral", sizeof("peripheral"), 1);
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
@@ -447,5 +447,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #endif
                }
        }
+
+       return 0;
 }
 #endif
index fef230bfbd5683bead9042b7cd13ceec08f302c9..478f8205a9c780bcdfa40334a3b3f90584d0d2a9 100644 (file)
@@ -340,9 +340,11 @@ void pci_init_board(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
        ft_pci_setup(blob, bd);
+
+       return 0;
 }
 #endif
index c749e5553a785c115a4571752048ca645bb22057..572913c7ac521ce1f55758079bf49ea6a2ec031f 100644 (file)
@@ -328,7 +328,7 @@ static void ft_pci_fixup(void *blob, bd_t *bd)
 #endif
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
        ft_tsec_fixup(blob, bd);
@@ -340,5 +340,7 @@ void ft_board_setup(void *blob, bd_t *bd)
                ft_pci_fixup(blob, bd);
        ft_pcie_fixup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif /* CONFIG_OF_BOARD_SETUP */
index 9afdcaf7aefbbd18f361d3f4e39016eb2a5f881e..e0a10313808d519206eb5b0df1f827973cff4152 100644 (file)
@@ -199,7 +199,7 @@ int misc_init_r(void)
 
 #if defined(CONFIG_OF_BOARD_SETUP)
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
@@ -207,5 +207,7 @@ void ft_board_setup(void *blob, bd_t *bd)
        ft_cpu_setup(blob, bd);
        fdt_fixup_dr_usb(blob, bd);
        fdt_fixup_esdhc(blob, bd);
+
+       return 0;
 }
 #endif /* CONFIG_OF_BOARD_SETUP */
index 93eed59b1a95b23dda37ec20c2b06798bf9604ae..7b0f46197147b36db16cd790aad7a253663da687 100644 (file)
@@ -271,7 +271,7 @@ int board_eth_init(bd_t *bis)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
@@ -285,5 +285,6 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_dr_usb(blob, bd);
 #endif
 
+       return 0;
 }
 #endif
index 93288c7e9ce0252f8a7ee1ecdaa3b2e9f9153919..1069e2c8c86b803d29cd997bfc638b3314ddf160 100644 (file)
@@ -218,8 +218,7 @@ pci_init_board(void)
 
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int node, tmp[2];
        const char *path;
@@ -237,5 +236,7 @@ ft_board_setup(void *blob, bd_t *bd)
                }
 #endif
        }
+
+       return 0;
 }
 #endif
index 1b33db6f31448b58651ebb5d8971f2f1f4caccf4..66fb228a908943fced11e9d2178e4d112658ca8b 100644 (file)
@@ -305,7 +305,7 @@ int board_eth_init(bd_t *bis)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
@@ -314,5 +314,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_SGMII_RISER
        fsl_sgmii_riser_fdt_fixup(blob);
 #endif
+
+       return 0;
 }
 #endif
index 7104e33156efc2f7918b301bec24d23deebe8352..f99d639b2fbfda636c3dfa5b42c5642d15958b12 100644 (file)
@@ -438,8 +438,7 @@ pci_init_board(void)
 
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int node, tmp[2];
        const char *path;
@@ -457,5 +456,7 @@ ft_board_setup(void *blob, bd_t *bd)
                }
 #endif
        }
+
+       return 0;
 }
 #endif
index a8fdcb5f917704ab824b9cde76a74bc578c7d012..a5c5d9dd1acae394921b1fe9fedd455fc5fd5385 100644 (file)
@@ -345,10 +345,12 @@ void pci_init_board(void)
 #endif /* CONFIG_PCI */
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
        FT_FSL_PCI_SETUP;
+
+       return 0;
 }
 #endif
index cb55e1c98c0dba1059bbd8afad4157d5456aec06..836578f3cb827935fefd7b0acff3aafb1e6f1ce0 100644 (file)
@@ -514,7 +514,7 @@ void pci_init_board(void)
 #endif /* CONFIG_PCI */
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
 #if defined(CONFIG_SYS_UCC_RMII_MODE)
        int nodeoff, off, err;
@@ -579,5 +579,7 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_board_fixup_esdhc(blob, bd);
        fdt_board_fixup_qe_uart(blob, bd);
        fdt_board_fixup_qe_usb(blob, bd);
+
+       return 0;
 }
 #endif
index 1bbf83214873d35a41974dddca61f6c9d8de3181..3f68cf496a45487e3c0888cb5d8f78adf1876c20 100644 (file)
@@ -232,7 +232,7 @@ int board_eth_init(bd_t *bis)
 #endif
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -249,5 +249,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_SGMII_RISER
        fsl_sgmii_riser_fdt_fixup(blob);
 #endif
+
+       return 0;
 }
 #endif
index d8740ddaccf4e22e0ee783f63d40e53e96dc4c5f..95e398c9f4958d540026648638c2de16029e7c44 100644 (file)
@@ -258,12 +258,13 @@ void pci_init_board(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
        FT_FSL_PCI_SETUP;
+
+       return 0;
 }
 #endif
 
index a58b5f9cd4bc8e178a17451765dc3636ece2345a..94633b5c99dcc38334c939e24524d14ea1b4ed14 100644 (file)
@@ -119,12 +119,11 @@ void pci_init_board(void)
 
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int off;
        u64 *tmp;
-       u32 *addrcells;
+       int addrcells;
 
        ft_cpu_setup(blob, bd);
 
@@ -136,12 +135,13 @@ ft_board_setup(void *blob, bd_t *bd)
         * which is defined by the "reg" property in the soc node.
         */
        off = fdt_path_offset(blob, "/soc8641");
-       addrcells = (u32 *)fdt_getprop(blob, 0, "#address-cells", NULL);
+       addrcells = fdt_address_cells(blob, 0);
        tmp = (u64 *)fdt_getprop(blob, off, "reg", NULL);
 
        if (tmp) {
                u64 addr;
-               if (addrcells && (*addrcells == 1))
+
+               if (addrcells == 1)
                        addr = *(u32 *)tmp;
                else
                        addr = *tmp;
@@ -152,6 +152,8 @@ ft_board_setup(void *blob, bd_t *bd)
                               "in u-boot.  This means your .dts might "
                               "be old.\n");
        }
+
+       return 0;
 }
 #endif
 
index 958ebc679106a52810506c506b7d3e6942e62420..f9d6324114191f629fbc8b823555ea20d6eccc1b 100644 (file)
@@ -1,7 +1,7 @@
 FREESCALE MX28EVK
 ==================
 
-Supported hardware: only MX28EVK rev D is supported in U-boot.
+Supported hardware: MX28EVK rev C and D are supported in U-boot.
 
 Files of the MX28EVK port
 --------------------------
index 9b43c84e791287d1cf6135613614ec75516738b1..c7c21f392bbbdd78b9acb44651ef6b4083ce750a 100644 (file)
@@ -112,7 +112,7 @@ static void setup_iomux_spi(void)
 #ifdef CONFIG_USB_EHCI_MX5
 #define MX51EVK_USBH1_HUB_RST  IMX_GPIO_NR(1, 7)
 #define MX51EVK_USBH1_STP      IMX_GPIO_NR(1, 27)
-#define MX51EVK_USB_CLK_EN_B   IMX_GPIO_NR(2, 2)
+#define MX51EVK_USB_CLK_EN_B   IMX_GPIO_NR(2, 1)
 #define MX51EVK_USB_PHY_RESET  IMX_GPIO_NR(2, 5)
 
 static void setup_usb_h1(void)
@@ -320,7 +320,7 @@ int board_mmc_init(bd_t *bis)
        };
 
        u32 index;
-       s32 status = 0;
+       int ret;
 
        esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
        esdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
@@ -340,11 +340,13 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more ESDHC controller"
                                "(%d) as supported by the board(2)\n",
                                CONFIG_SYS_FSL_ESDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
-               status |= fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
-       return status;
+       return 0;
 }
 #endif
 
index c960c44a618ba862a17a28ab760d088d09ed4ef9..8ba27288e31dbe30803c18b549af0135d063f73d 100644 (file)
@@ -166,7 +166,7 @@ int board_mmc_init(bd_t *bis)
        };
 
        u32 index;
-       s32 status = 0;
+       int ret;
 
        esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
        esdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
@@ -185,12 +185,14 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more ESDHC controller"
                                "(%d) as supported by the board(2)\n",
                                CONFIG_SYS_FSL_ESDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
-               status |= fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 #endif
 
index 13519e26da28c546fd877cca3927ef59dbba8b04..6ee6d73ed211a72f0210f041117ece304580035f 100644 (file)
@@ -195,7 +195,7 @@ int board_mmc_init(bd_t *bis)
        };
 
        u32 index;
-       s32 status = 0;
+       int ret;
 
        esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
        esdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
@@ -214,12 +214,14 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more ESDHC controller"
                                "(%d) as supported by the board(2)\n",
                                CONFIG_SYS_FSL_ESDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
-               status |= fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 #endif
 
index b32a97ff1a58f17fac30dfd51f3a616b083bad93..efcf4b390d35f97353f76daa579888cab5adaa4c 100644 (file)
@@ -186,7 +186,7 @@ int board_mmc_init(bd_t *bis)
        };
 
        u32 index;
-       s32 status = 0;
+       int ret;
 
        esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
        esdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
@@ -205,12 +205,14 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more ESDHC controller"
                                "(%d) as supported by the board(2)\n",
                                CONFIG_SYS_FSL_ESDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
-               status |= fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 #endif
 
@@ -242,6 +244,8 @@ static int power_init(void)
                if (!p)
                        return -ENODEV;
 
+               setenv("fdt_file", "imx53-qsb.dtb");
+
                /* Set VDDA to 1.25V */
                val = DA9052_BUCKCORE_BCOREEN | DA_BUCKCORE_VBCORE_1_250V;
                ret = pmic_reg_write(p, DA9053_BUCKCORE_REG, val);
@@ -283,6 +287,8 @@ static int power_init(void)
                if (!p)
                        return -ENODEV;
 
+               setenv("fdt_file", "imx53-qsrb.dtb");
+
                /* Set VDDGP to 1.25V for 1GHz on SW1 */
                pmic_reg_read(p, REG_SW_0, &val);
                val = (val & ~SWx_VOLT_MASK_MC34708) | SWx_1_250V_MC34708;
index d64c674e915567ed04206452fb0d8ba7e5952674..0963fd7b43a75245f444b26765a59f716e64280d 100644 (file)
@@ -106,7 +106,7 @@ int board_mmc_init(bd_t *bis)
        };
 
        u32 index;
-       s32 status = 0;
+       int ret;
 
        esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
 
@@ -121,12 +121,14 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more ESDHC controller"
                                "(%d) as supported by the board(1)\n",
                                CONFIG_SYS_FSL_ESDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
-               status |= fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 #endif
 
index 667dca532f4ff20875011d296e518c4b65f61b74..98ccdb785b3498fa15406f628e84cbbd1da859aa 100644 (file)
@@ -16,6 +16,7 @@
 #include <fsl_esdhc.h>
 #include <miiphy.h>
 #include <netdev.h>
+#include <usb.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -125,7 +126,7 @@ int board_mmc_getcd(struct mmc *mmc)
 
 int board_mmc_init(bd_t *bis)
 {
-       s32 status = 0;
+       int ret;
        u32 index = 0;
 
        usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
@@ -145,13 +146,15 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more USDHC controllers"
                                "(%d) then supported by the board (%d)\n",
                                index + 1, CONFIG_SYS_FSL_USDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
 
-               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 #endif
 
@@ -211,6 +214,43 @@ int board_eth_init(bd_t *bis)
        return 0;
 }
 
+#ifdef CONFIG_USB_EHCI_MX6
+#define USB_OTHERREGS_OFFSET   0x800
+#define UCTRL_PWR_POL          (1 << 9)
+
+static iomux_v3_cfg_t const usb_otg_pads[] = {
+       MX6_PAD_EIM_D22__USB_OTG_PWR | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_GPIO_1__USB_OTG_ID | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void setup_usb(void)
+{
+       imx_iomux_v3_setup_multiple_pads(usb_otg_pads,
+                                        ARRAY_SIZE(usb_otg_pads));
+
+       /*
+        * set daisy chain for otg_pin_id on 6q.
+        * for 6dl, this bit is reserved
+        */
+       imx_iomux_set_gpr_register(1, 13, 1, 1);
+}
+
+int board_ehci_hcd_init(int port)
+{
+       u32 *usbnc_usb_ctrl;
+
+       if (port > 0)
+               return -EINVAL;
+
+       usbnc_usb_ctrl = (u32 *)(USB_BASE_ADDR + USB_OTHERREGS_OFFSET +
+                                port * 4);
+
+       setbits_le32(usbnc_usb_ctrl, UCTRL_PWR_POL);
+
+       return 0;
+}
+#endif
+
 int board_early_init_f(void)
 {
        setup_iomux_uart();
@@ -224,6 +264,10 @@ int board_init(void)
        /* address of boot parameters */
        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
+#ifdef CONFIG_USB_EHCI_MX6
+       setup_usb();
+#endif
+
        return 0;
 }
 
index 0dc0160e19fe9e70510d66668bc2cdef1b341090..59387ffaaa7e7960e625f3b8e0833f7f297dee23 100644 (file)
@@ -27,6 +27,9 @@
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/imx-common/video.h>
 #include <asm/arch/crm_regs.h>
+#include <pca953x.h>
+#include <power/pmic.h>
+#include "../common/pfuze.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -45,8 +48,19 @@ DECLARE_GLOBAL_DATA_PTR;
        PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
        PAD_CTL_ODE | PAD_CTL_SRE_FAST)
 
+#define GPMI_PAD_CTRL0 (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP)
+#define GPMI_PAD_CTRL1 (PAD_CTL_DSE_40ohm | PAD_CTL_SPEED_MED | \
+                       PAD_CTL_SRE_FAST)
+#define GPMI_PAD_CTRL2 (GPMI_PAD_CTRL0 | GPMI_PAD_CTRL1)
+
 #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
 
+#define WEIM_NOR_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |          \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST)
+
+#define I2C_PMIC       1
+
 int dram_init(void)
 {
        gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
@@ -91,6 +105,7 @@ static struct i2c_pads_info i2c_pad_info1 = {
        }
 };
 
+#ifndef CONFIG_SYS_FLASH_CFI
 /*
  * I2C3 MLB, Port Expanders (A, B, C), Video ADC, Light Sensor,
  * Compass Sensor, Accelerometer, Res Touch
@@ -107,6 +122,7 @@ static struct i2c_pads_info i2c_pad_info2 = {
                .gp = IMX_GPIO_NR(3, 18)
        }
 };
+#endif
 
 static iomux_v3_cfg_t const i2c3_pads[] = {
        MX6_PAD_EIM_A24__GPIO5_IO04             | MUX_PAD_CTRL(NO_PAD_CTRL),
@@ -116,6 +132,113 @@ static iomux_v3_cfg_t const port_exp[] = {
        MX6_PAD_SD2_DAT0__GPIO1_IO15            | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
+/*Define for building port exp gpio, pin starts from 0*/
+#define PORTEXP_IO_NR(chip, pin) \
+       ((chip << 5) + pin)
+
+/*Get the chip addr from a ioexp gpio*/
+#define PORTEXP_IO_TO_CHIP(gpio_nr) \
+       (gpio_nr >> 5)
+
+/*Get the pin number from a ioexp gpio*/
+#define PORTEXP_IO_TO_PIN(gpio_nr) \
+       (gpio_nr & 0x1f)
+
+static int port_exp_direction_output(unsigned gpio, int value)
+{
+       int ret;
+
+       i2c_set_bus_num(2);
+       ret = i2c_probe(PORTEXP_IO_TO_CHIP(gpio));
+       if (ret)
+               return ret;
+
+       ret = pca953x_set_dir(PORTEXP_IO_TO_CHIP(gpio),
+               (1 << PORTEXP_IO_TO_PIN(gpio)),
+               (PCA953X_DIR_OUT << PORTEXP_IO_TO_PIN(gpio)));
+
+       if (ret)
+               return ret;
+
+       ret = pca953x_set_val(PORTEXP_IO_TO_CHIP(gpio),
+               (1 << PORTEXP_IO_TO_PIN(gpio)),
+               (value << PORTEXP_IO_TO_PIN(gpio)));
+
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
+static iomux_v3_cfg_t const eimnor_pads[] = {
+       MX6_PAD_EIM_D16__EIM_DATA16     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D17__EIM_DATA17     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D18__EIM_DATA18     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D19__EIM_DATA19     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D20__EIM_DATA20     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D21__EIM_DATA21     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D22__EIM_DATA22     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D23__EIM_DATA23     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D24__EIM_DATA24     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D25__EIM_DATA25     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D26__EIM_DATA26     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D27__EIM_DATA27     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D28__EIM_DATA28     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D29__EIM_DATA29     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D30__EIM_DATA30     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_D31__EIM_DATA31     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA0__EIM_AD00       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA1__EIM_AD01       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA2__EIM_AD02       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA3__EIM_AD03       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA4__EIM_AD04       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA5__EIM_AD05       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA6__EIM_AD06       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA7__EIM_AD07       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA8__EIM_AD08       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA9__EIM_AD09       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA10__EIM_AD10      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA11__EIM_AD11      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL) ,
+       MX6_PAD_EIM_DA12__EIM_AD12      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA13__EIM_AD13      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA14__EIM_AD14      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_DA15__EIM_AD15      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A16__EIM_ADDR16     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A17__EIM_ADDR17     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A18__EIM_ADDR18     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A19__EIM_ADDR19     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A20__EIM_ADDR20     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A21__EIM_ADDR21     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A22__EIM_ADDR22     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_A23__EIM_ADDR23     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
+       MX6_PAD_EIM_OE__EIM_OE_B        | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_EIM_RW__EIM_RW          | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_EIM_CS0__EIM_CS0_B      | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void eimnor_cs_setup(void)
+{
+       struct weim *weim_regs = (struct weim *)WEIM_BASE_ADDR;
+
+       writel(0x00020181, &weim_regs->cs0gcr1);
+       writel(0x00000001, &weim_regs->cs0gcr2);
+       writel(0x0a020000, &weim_regs->cs0rcr1);
+       writel(0x0000c000, &weim_regs->cs0rcr2);
+       writel(0x0804a240, &weim_regs->cs0wcr1);
+       writel(0x00000120, &weim_regs->wcr);
+
+       set_chipselect_size(CS0_128);
+}
+
+static void setup_iomux_eimnor(void)
+{
+       imx_iomux_v3_setup_multiple_pads(eimnor_pads, ARRAY_SIZE(eimnor_pads));
+
+       gpio_direction_output(IMX_GPIO_NR(5, 4), 0);
+
+       eimnor_cs_setup();
+}
+
 static void setup_iomux_enet(void)
 {
        imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
@@ -161,6 +284,63 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#ifdef CONFIG_NAND_MXS
+static iomux_v3_cfg_t gpmi_pads[] = {
+       MX6_PAD_NANDF_CLE__NAND_CLE             | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_ALE__NAND_ALE             | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_WP_B__NAND_WP_B   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_RB0__NAND_READY_B | MUX_PAD_CTRL(GPMI_PAD_CTRL0),
+       MX6_PAD_NANDF_CS0__NAND_CE0_B   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_SD4_CMD__NAND_RE_B              | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_SD4_CLK__NAND_WE_B              | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D0__NAND_DATA00   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D1__NAND_DATA01   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D2__NAND_DATA02   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D3__NAND_DATA03   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D4__NAND_DATA04   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D5__NAND_DATA05   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D6__NAND_DATA06   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_NANDF_D7__NAND_DATA07   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
+       MX6_PAD_SD4_DAT0__NAND_DQS              | MUX_PAD_CTRL(GPMI_PAD_CTRL1),
+};
+
+static void setup_gpmi_nand(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       /* config gpmi nand iomux */
+       imx_iomux_v3_setup_multiple_pads(gpmi_pads, ARRAY_SIZE(gpmi_pads));
+
+       /* gate ENFC_CLK_ROOT clock first,before clk source switch */
+       clrbits_le32(&mxc_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
+       clrbits_le32(&mxc_ccm->CCGR4,
+               MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
+
+       /* config gpmi and bch clock to 100 MHz */
+       clrsetbits_le32(&mxc_ccm->cs2cdr,
+                       MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK |
+                       MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK |
+                       MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK,
+                       MXC_CCM_CS2CDR_ENFC_CLK_PODF(0) |
+                       MXC_CCM_CS2CDR_ENFC_CLK_PRED(3) |
+                       MXC_CCM_CS2CDR_ENFC_CLK_SEL(3));
+
+       /* enable ENFC_CLK_ROOT clock */
+       setbits_le32(&mxc_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
+
+       /* enable gpmi and bch clock gating */
+       setbits_le32(&mxc_ccm->CCGR4,
+                    MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
+                    MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET);
+
+       /* enable apbh clock gating */
+       setbits_le32(&mxc_ccm->CCGR0, MXC_CCM_CCGR0_APBHDMA_MASK);
+}
+#endif
+
 int mx6_rgmii_rework(struct phy_device *phydev)
 {
        unsigned short val;
@@ -297,6 +477,11 @@ int board_early_init_f(void)
 #ifdef CONFIG_VIDEO_IPUV3
        setup_display();
 #endif
+
+#ifdef CONFIG_NAND_MXS
+       setup_gpmi_nand();
+#endif
+
        return 0;
 }
 
@@ -310,11 +495,13 @@ int board_init(void)
        /* I2C 3 Steer */
        gpio_direction_output(IMX_GPIO_NR(5, 4), 1);
        imx_iomux_v3_setup_multiple_pads(i2c3_pads, ARRAY_SIZE(i2c3_pads));
+#ifndef CONFIG_SYS_FLASH_CFI
        setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
-
+#endif
        gpio_direction_output(IMX_GPIO_NR(1, 15), 1);
        imx_iomux_v3_setup_multiple_pads(port_exp, ARRAY_SIZE(port_exp));
 
+       setup_iomux_eimnor();
        return 0;
 }
 
@@ -325,6 +512,17 @@ int board_spi_cs_gpio(unsigned bus, unsigned cs)
 }
 #endif
 
+int power_init_board(void)
+{
+       struct pmic *p;
+
+       p = pfuze_common_init(I2C_PMIC);
+       if (!p)
+               return -ENODEV;
+
+       return 0;
+}
+
 #ifdef CONFIG_CMD_BMODE
 static const struct boot_mode board_boot_modes[] = {
        /* 4 bit bus width */
@@ -361,3 +559,57 @@ int checkboard(void)
 
        return 0;
 }
+
+#ifdef CONFIG_USB_EHCI_MX6
+#define USB_HOST1_PWR     PORTEXP_IO_NR(0x32, 7)
+#define USB_OTG_PWR       PORTEXP_IO_NR(0x34, 1)
+
+iomux_v3_cfg_t const usb_otg_pads[] = {
+       MX6_PAD_ENET_RX_ER__USB_OTG_ID | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+int board_ehci_hcd_init(int port)
+{
+       switch (port) {
+       case 0:
+               imx_iomux_v3_setup_multiple_pads(usb_otg_pads,
+                       ARRAY_SIZE(usb_otg_pads));
+
+               /*
+                 * Set daisy chain for otg_pin_id on 6q.
+                *  For 6dl, this bit is reserved.
+                */
+               imx_iomux_set_gpr_register(1, 13, 1, 0);
+               break;
+       case 1:
+               break;
+       default:
+               printf("MXC USB port %d not yet supported\n", port);
+               return -EINVAL;
+       }
+       return 0;
+}
+
+int board_ehci_power(int port, int on)
+{
+       switch (port) {
+       case 0:
+               if (on)
+                       port_exp_direction_output(USB_OTG_PWR, 1);
+               else
+                       port_exp_direction_output(USB_OTG_PWR, 0);
+               break;
+       case 1:
+               if (on)
+                       port_exp_direction_output(USB_HOST1_PWR, 1);
+               else
+                       port_exp_direction_output(USB_HOST1_PWR, 0);
+               break;
+       default:
+               printf("MXC USB port %d not yet supported\n", port);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+#endif
index 69c0a3065fccf13cd47ecd459de37e8c743f2033..0011ec7b493180f46c96f516bbe288e734972990 100644 (file)
@@ -5,3 +5,4 @@ F:      board/freescale/mx6sabresd/
 F:     include/configs/mx6sabresd.h
 F:     configs/mx6dlsabresd_defconfig
 F:     configs/mx6qsabresd_defconfig
+F:     configs/mx6sabresd_spl_defconfig
index 81dcd6e5ddb879ae3aa4ed9e8a0e800b63929459..2f7198d3bfdfc0b438ec185973d62dcb3dc45156 100644 (file)
 #include <i2c.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
+#include "../common/pfuze.h"
+#include <asm/arch/mx6-ddr.h>
+#include <usb.h>
+
 DECLARE_GLOBAL_DATA_PTR;
 
 #define UART_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
@@ -51,19 +55,20 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #define I2C_PAD MUX_PAD_CTRL(I2C_PAD_CTRL)
 
+#define DISP0_PWR_EN   IMX_GPIO_NR(1, 21)
+
 int dram_init(void)
 {
-       gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
-
+       gd->ram_size = imx_ddr_size();
        return 0;
 }
 
-iomux_v3_cfg_t const uart1_pads[] = {
+static iomux_v3_cfg_t const uart1_pads[] = {
        MX6_PAD_CSI0_DAT10__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
        MX6_PAD_CSI0_DAT11__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
 };
 
-iomux_v3_cfg_t const enet_pads[] = {
+static iomux_v3_cfg_t const enet_pads[] = {
        MX6_PAD_ENET_MDIO__ENET_MDIO            | MUX_PAD_CTRL(ENET_PAD_CTRL),
        MX6_PAD_ENET_MDC__ENET_MDC              | MUX_PAD_CTRL(ENET_PAD_CTRL),
        MX6_PAD_RGMII_TXC__RGMII_TXC    | MUX_PAD_CTRL(ENET_PAD_CTRL),
@@ -93,7 +98,7 @@ static void setup_iomux_enet(void)
        gpio_set_value(IMX_GPIO_NR(1, 25), 1);
 }
 
-iomux_v3_cfg_t const usdhc2_pads[] = {
+static iomux_v3_cfg_t const usdhc2_pads[] = {
        MX6_PAD_SD2_CLK__SD2_CLK        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD2_CMD__SD2_CMD        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD2_DAT0__SD2_DATA0     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
@@ -107,7 +112,7 @@ iomux_v3_cfg_t const usdhc2_pads[] = {
        MX6_PAD_NANDF_D2__GPIO2_IO02    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
 };
 
-iomux_v3_cfg_t const usdhc3_pads[] = {
+static iomux_v3_cfg_t const usdhc3_pads[] = {
        MX6_PAD_SD3_CLK__SD3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD3_CMD__SD3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
@@ -121,7 +126,7 @@ iomux_v3_cfg_t const usdhc3_pads[] = {
        MX6_PAD_NANDF_D0__GPIO2_IO00    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
 };
 
-iomux_v3_cfg_t const usdhc4_pads[] = {
+static iomux_v3_cfg_t const usdhc4_pads[] = {
        MX6_PAD_SD4_CLK__SD4_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD4_CMD__SD4_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD4_DAT0__SD4_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
@@ -134,13 +139,52 @@ iomux_v3_cfg_t const usdhc4_pads[] = {
        MX6_PAD_SD4_DAT7__SD4_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
 };
 
-iomux_v3_cfg_t const ecspi1_pads[] = {
+static iomux_v3_cfg_t const ecspi1_pads[] = {
        MX6_PAD_KEY_COL0__ECSPI1_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
        MX6_PAD_KEY_COL1__ECSPI1_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
        MX6_PAD_KEY_ROW0__ECSPI1_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
        MX6_PAD_KEY_ROW1__GPIO4_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
+static iomux_v3_cfg_t const rgb_pads[] = {
+       MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DI0_PIN4__IPU1_DI0_PIN04 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_SD1_DAT3__GPIO1_IO21 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void enable_rgb(struct display_info_t const *dev)
+{
+       imx_iomux_v3_setup_multiple_pads(rgb_pads, ARRAY_SIZE(rgb_pads));
+       gpio_direction_output(DISP0_PWR_EN, 1);
+}
+
 static struct i2c_pads_info i2c_pad_info1 = {
        .scl = {
                .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL | I2C_PAD,
@@ -212,7 +256,8 @@ int board_mmc_getcd(struct mmc *mmc)
 
 int board_mmc_init(bd_t *bis)
 {
-       s32 status = 0;
+#ifndef CONFIG_SPL_BUILD
+       int ret;
        int i;
 
        /*
@@ -245,13 +290,53 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more USDHC controllers"
                               "(%d) then supported by the board (%d)\n",
                               i + 1, CONFIG_SYS_FSL_USDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
 
-               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+               ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
+#else
+       struct src *psrc = (struct src *)SRC_BASE_ADDR;
+       unsigned reg = readl(&psrc->sbmr1) >> 11;
+       /*
+        * Upon reading BOOT_CFG register the following map is done:
+        * Bit 11 and 12 of BOOT_CFG register can determine the current
+        * mmc port
+        * 0x1                  SD1
+        * 0x2                  SD2
+        * 0x3                  SD4
+        */
+
+       switch (reg & 0x3) {
+       case 0x1:
+               imx_iomux_v3_setup_multiple_pads(
+                       usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+               usdhc_cfg[0].esdhc_base = USDHC2_BASE_ADDR;
+               usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+               gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
+               break;
+       case 0x2:
+               imx_iomux_v3_setup_multiple_pads(
+                       usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+               usdhc_cfg[0].esdhc_base = USDHC3_BASE_ADDR;
+               usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+               gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
+               break;
+       case 0x3:
+               imx_iomux_v3_setup_multiple_pads(
+                       usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+               usdhc_cfg[0].esdhc_base = USDHC4_BASE_ADDR;
+               usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
+               gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
+               break;
+       }
+
+       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+#endif
 }
 #endif
 
@@ -357,6 +442,26 @@ struct display_info_t const displays[] = {{
                .vsync_len      = 10,
                .sync           = FB_SYNC_EXT,
                .vmode          = FB_VMODE_NONINTERLACED
+} }, {
+       .bus    = 0,
+       .addr   = 0,
+       .pixfmt = IPU_PIX_FMT_RGB24,
+       .detect = NULL,
+       .enable = enable_rgb,
+       .mode   = {
+               .name           = "SEIKO-WVGA",
+               .refresh        = 60,
+               .xres           = 800,
+               .yres           = 480,
+               .pixclock       = 29850,
+               .left_margin    = 89,
+               .right_margin   = 164,
+               .upper_margin   = 23,
+               .lower_margin   = 10,
+               .hsync_len      = 10,
+               .vsync_len      = 10,
+               .sync           = 0,
+               .vmode          = FB_VMODE_NONINTERLACED
 } } };
 size_t display_count = ARRAY_SIZE(displays);
 
@@ -433,6 +538,69 @@ int board_eth_init(bd_t *bis)
        return cpu_eth_init(bis);
 }
 
+#ifdef CONFIG_USB_EHCI_MX6
+#define USB_OTHERREGS_OFFSET   0x800
+#define UCTRL_PWR_POL          (1 << 9)
+
+static iomux_v3_cfg_t const usb_otg_pads[] = {
+       MX6_PAD_EIM_D22__USB_OTG_PWR | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_ENET_RX_ER__USB_OTG_ID | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const usb_hc1_pads[] = {
+       MX6_PAD_ENET_TXD1__GPIO1_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void setup_usb(void)
+{
+       imx_iomux_v3_setup_multiple_pads(usb_otg_pads,
+                                        ARRAY_SIZE(usb_otg_pads));
+
+       /*
+        * set daisy chain for otg_pin_id on 6q.
+        * for 6dl, this bit is reserved
+        */
+       imx_iomux_set_gpr_register(1, 13, 1, 0);
+
+       imx_iomux_v3_setup_multiple_pads(usb_hc1_pads,
+                                        ARRAY_SIZE(usb_hc1_pads));
+}
+
+int board_ehci_hcd_init(int port)
+{
+       u32 *usbnc_usb_ctrl;
+
+       if (port > 1)
+               return -EINVAL;
+
+       usbnc_usb_ctrl = (u32 *)(USB_BASE_ADDR + USB_OTHERREGS_OFFSET +
+                                port * 4);
+
+       setbits_le32(usbnc_usb_ctrl, UCTRL_PWR_POL);
+
+       return 0;
+}
+
+int board_ehci_power(int port, int on)
+{
+       switch (port) {
+       case 0:
+               break;
+       case 1:
+               if (on)
+                       gpio_direction_output(IMX_GPIO_NR(1, 29), 1);
+               else
+                       gpio_direction_output(IMX_GPIO_NR(1, 29), 0);
+               break;
+       default:
+               printf("MXC USB port %d not yet supported\n", port);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+#endif
+
 int board_early_init_f(void)
 {
        setup_iomux_uart();
@@ -453,63 +621,34 @@ int board_init(void)
 #endif
        setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
 
+#ifdef CONFIG_USB_EHCI_MX6
+       setup_usb();
+#endif
+
        return 0;
 }
 
-static int pfuze_init(void)
+int power_init_board(void)
 {
        struct pmic *p;
-       int ret;
        unsigned int reg;
 
-       ret = power_pfuze100_init(I2C_PMIC);
-       if (ret)
-               return ret;
-
-       p = pmic_get("PFUZE100");
-       ret = pmic_probe(p);
-       if (ret)
-               return ret;
-
-       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
-       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
+       p = pfuze_common_init(I2C_PMIC);
+       if (!p)
+               return -ENODEV;
 
        /* Increase VGEN3 from 2.5 to 2.8V */
        pmic_reg_read(p, PFUZE100_VGEN3VOL, &reg);
-       reg &= ~0xf;
-       reg |= 0xa;
+       reg &= ~LDO_VOL_MASK;
+       reg |= LDOB_2_80V;
        pmic_reg_write(p, PFUZE100_VGEN3VOL, reg);
 
        /* Increase VGEN5 from 2.8 to 3V */
        pmic_reg_read(p, PFUZE100_VGEN5VOL, &reg);
-       reg &= ~0xf;
-       reg |= 0xc;
+       reg &= ~LDO_VOL_MASK;
+       reg |= LDOB_3_00V;
        pmic_reg_write(p, PFUZE100_VGEN5VOL, reg);
 
-       /* Set SW1AB stanby volage to 0.975V */
-       pmic_reg_read(p, PFUZE100_SW1ABSTBY, &reg);
-       reg &= ~0x3f;
-       reg |= 0x1b;
-       pmic_reg_write(p, PFUZE100_SW1ABSTBY, reg);
-
-       /* Set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */
-       pmic_reg_read(p, PUZE_100_SW1ABCONF, &reg);
-       reg &= ~0xc0;
-       reg |= 0x40;
-       pmic_reg_write(p, PUZE_100_SW1ABCONF, reg);
-
-       /* Set SW1C standby voltage to 0.975V */
-       pmic_reg_read(p, PFUZE100_SW1CSTBY, &reg);
-       reg &= ~0x3f;
-       reg |= 0x1b;
-       pmic_reg_write(p, PFUZE100_SW1CSTBY, reg);
-
-       /* Set SW1C/VDDSOC step ramp up time from 16us to 4us/25mV */
-       pmic_reg_read(p, PFUZE100_SW1CCONF, &reg);
-       reg &= ~0xc0;
-       reg |= 0x40;
-       pmic_reg_write(p, PFUZE100_SW1CCONF, reg);
-
        return 0;
 }
 
@@ -536,8 +675,6 @@ int board_late_init(void)
 #ifdef CONFIG_CMD_BMODE
        add_board_boot_modes(board_boot_modes);
 #endif
-       pfuze_init();
-
        return 0;
 }
 
@@ -546,3 +683,169 @@ int checkboard(void)
        puts("Board: MX6-SabreSD\n");
        return 0;
 }
+
+#ifdef CONFIG_SPL_BUILD
+#include <spl.h>
+#include <libfdt.h>
+
+const struct mx6dq_iomux_ddr_regs mx6_ddr_ioregs = {
+       .dram_sdclk_0 =  0x00020030,
+       .dram_sdclk_1 =  0x00020030,
+       .dram_cas =  0x00020030,
+       .dram_ras =  0x00020030,
+       .dram_reset =  0x00020030,
+       .dram_sdcke0 =  0x00003000,
+       .dram_sdcke1 =  0x00003000,
+       .dram_sdba2 =  0x00000000,
+       .dram_sdodt0 =  0x00003030,
+       .dram_sdodt1 =  0x00003030,
+       .dram_sdqs0 =  0x00000030,
+       .dram_sdqs1 =  0x00000030,
+       .dram_sdqs2 =  0x00000030,
+       .dram_sdqs3 =  0x00000030,
+       .dram_sdqs4 =  0x00000030,
+       .dram_sdqs5 =  0x00000030,
+       .dram_sdqs6 =  0x00000030,
+       .dram_sdqs7 =  0x00000030,
+       .dram_dqm0 =  0x00020030,
+       .dram_dqm1 =  0x00020030,
+       .dram_dqm2 =  0x00020030,
+       .dram_dqm3 =  0x00020030,
+       .dram_dqm4 =  0x00020030,
+       .dram_dqm5 =  0x00020030,
+       .dram_dqm6 =  0x00020030,
+       .dram_dqm7 =  0x00020030,
+};
+
+const struct mx6dq_iomux_grp_regs mx6_grp_ioregs = {
+       .grp_ddr_type =  0x000C0000,
+       .grp_ddrmode_ctl =  0x00020000,
+       .grp_ddrpke =  0x00000000,
+       .grp_addds =  0x00000030,
+       .grp_ctlds =  0x00000030,
+       .grp_ddrmode =  0x00020000,
+       .grp_b0ds =  0x00000030,
+       .grp_b1ds =  0x00000030,
+       .grp_b2ds =  0x00000030,
+       .grp_b3ds =  0x00000030,
+       .grp_b4ds =  0x00000030,
+       .grp_b5ds =  0x00000030,
+       .grp_b6ds =  0x00000030,
+       .grp_b7ds =  0x00000030,
+};
+
+const struct mx6_mmdc_calibration mx6_mmcd_calib = {
+       .p0_mpwldectrl0 =  0x001F001F,
+       .p0_mpwldectrl1 =  0x001F001F,
+       .p1_mpwldectrl0 =  0x00440044,
+       .p1_mpwldectrl1 =  0x00440044,
+       .p0_mpdgctrl0 =  0x434B0350,
+       .p0_mpdgctrl1 =  0x034C0359,
+       .p1_mpdgctrl0 =  0x434B0350,
+       .p1_mpdgctrl1 =  0x03650348,
+       .p0_mprddlctl =  0x4436383B,
+       .p1_mprddlctl =  0x39393341,
+       .p0_mpwrdlctl =  0x35373933,
+       .p1_mpwrdlctl =  0x48254A36,
+};
+
+static struct mx6_ddr3_cfg mem_ddr = {
+       .mem_speed = 1600,
+       .density = 4,
+       .width = 64,
+       .banks = 8,
+       .rowaddr = 14,
+       .coladdr = 10,
+       .pagesz = 2,
+       .trcd = 1375,
+       .trcmin = 4875,
+       .trasmin = 3500,
+};
+
+static void ccgr_init(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       writel(0x00C03F3F, &ccm->CCGR0);
+       writel(0x0030FC03, &ccm->CCGR1);
+       writel(0x0FFFC000, &ccm->CCGR2);
+       writel(0x3FF00000, &ccm->CCGR3);
+       writel(0x00FFF300, &ccm->CCGR4);
+       writel(0x0F0000C3, &ccm->CCGR5);
+       writel(0x000003FF, &ccm->CCGR6);
+}
+
+static void gpr_init(void)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       /* enable AXI cache for VDOA/VPU/IPU */
+       writel(0xF00000CF, &iomux->gpr[4]);
+       /* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
+       writel(0x007F007F, &iomux->gpr[6]);
+       writel(0x007F007F, &iomux->gpr[7]);
+}
+
+/*
+ * This section requires the differentiation between iMX6 Sabre boards, but
+ * for now, it will configure only for the mx6q variant.
+ */
+static void spl_dram_init(void)
+{
+       struct mx6_ddr_sysinfo sysinfo = {
+               /* width of data bus:0=16,1=32,2=64 */
+               .dsize = mem_ddr.width/32,
+               /* config for full 4GB range so that get_mem_size() works */
+               .cs_density = 32, /* 32Gb per CS */
+               /* single chip select */
+               .ncs = 1,
+               .cs1_mirror = 0,
+               .rtt_wr = 1 /*DDR3_RTT_60_OHM*/,        /* RTT_Wr = RZQ/4 */
+#ifdef RTT_NOM_120OHM
+               .rtt_nom = 2 /*DDR3_RTT_120_OHM*/,      /* RTT_Nom = RZQ/2 */
+#else
+               .rtt_nom = 1 /*DDR3_RTT_60_OHM*/,       /* RTT_Nom = RZQ/4 */
+#endif
+               .walat = 1,     /* Write additional latency */
+               .ralat = 5,     /* Read additional latency */
+               .mif3_mode = 3, /* Command prediction working mode */
+               .bi_on = 1,     /* Bank interleaving enabled */
+               .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
+               .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
+       };
+
+       mx6dq_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
+       mx6_dram_cfg(&sysinfo, &mx6_mmcd_calib, &mem_ddr);
+}
+
+void board_init_f(ulong dummy)
+{
+       /* setup AIPS and disable watchdog */
+       arch_cpu_init();
+
+       ccgr_init();
+       gpr_init();
+
+       /* iomux and setup of i2c */
+       board_early_init_f();
+
+       /* setup GP timer */
+       timer_init();
+
+       /* UART clocks enabled and gd valid - init serial console */
+       preloader_console_init();
+
+       /* DDR initialization */
+       spl_dram_init();
+
+       /* Clear the BSS. */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+       /* load/boot image from boot device */
+       board_init_r(NULL, 0);
+}
+
+void reset_cpu(ulong addr)
+{
+}
+#endif
index 660af91aeeceefed3fd0c1a288f92c5b482a7848..18d31a8d8b964c066bb5fd85135c7e0b60dfa64e 100644 (file)
@@ -4,3 +4,4 @@ S:      Maintained
 F:     board/freescale/mx6slevk/
 F:     include/configs/mx6slevk.h
 F:     configs/mx6slevk_defconfig
+F:     configs/mx6slevk_spinor_defconfig
index a500133efae1b08b3c416dd202bb5ef2b654c0f2..838ea6c0f0d7713c70e626c2a9bb833b2ac5ede3 100644 (file)
@@ -20,6 +20,8 @@
 #include <fsl_esdhc.h>
 #include <mmc.h>
 #include <netdev.h>
+#include <usb.h>
+#include <usb/ehci-fsl.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -52,6 +54,23 @@ static iomux_v3_cfg_t const uart1_pads[] = {
        MX6_PAD_UART1_RXD__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
 };
 
+static iomux_v3_cfg_t const usdhc1_pads[] = {
+       /* 8 bit SD */
+       MX6_PAD_SD1_CLK__USDHC1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_CMD__USDHC1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT0__USDHC1_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT1__USDHC1_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT2__USDHC1_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT3__USDHC1_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT4__USDHC1_DAT4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT5__USDHC1_DAT5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT6__USDHC1_DAT6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DAT7__USDHC1_DAT7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+
+       /*CD pin*/
+       MX6_PAD_KEY_ROW7__GPIO_4_7 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
 static iomux_v3_cfg_t const usdhc2_pads[] = {
        MX6_PAD_SD2_CLK__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD2_CMD__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
@@ -59,6 +78,21 @@ static iomux_v3_cfg_t const usdhc2_pads[] = {
        MX6_PAD_SD2_DAT1__USDHC2_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD2_DAT2__USDHC2_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD2_DAT3__USDHC2_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+
+       /*CD pin*/
+       MX6_PAD_SD2_DAT7__GPIO_5_0 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const usdhc3_pads[] = {
+       MX6_PAD_SD3_CLK__USDHC3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_CMD__USDHC3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+
+       /*CD pin*/
+       MX6_PAD_REF_CLK_32K__GPIO_3_22 | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
 static iomux_v3_cfg_t const fec_pads[] = {
@@ -109,21 +143,82 @@ static void setup_iomux_fec(void)
        gpio_set_value(ETH_PHY_RESET, 1);
 }
 
-static struct fsl_esdhc_cfg usdhc_cfg[1] = {
-       {USDHC2_BASE_ADDR},
+#define USDHC1_CD_GPIO IMX_GPIO_NR(4, 7)
+#define USDHC2_CD_GPIO IMX_GPIO_NR(5, 0)
+#define USDHC3_CD_GPIO IMX_GPIO_NR(3, 22)
+
+static struct fsl_esdhc_cfg usdhc_cfg[3] = {
+       {USDHC1_BASE_ADDR},
+       {USDHC2_BASE_ADDR, 0, 4},
+       {USDHC3_BASE_ADDR, 0, 4},
 };
 
 int board_mmc_getcd(struct mmc *mmc)
 {
-       return 1;       /* Assume boot SD always present */
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+       int ret = 0;
+
+       switch (cfg->esdhc_base) {
+       case USDHC1_BASE_ADDR:
+               ret = !gpio_get_value(USDHC1_CD_GPIO);
+               break;
+       case USDHC2_BASE_ADDR:
+               ret = !gpio_get_value(USDHC2_CD_GPIO);
+               break;
+       case USDHC3_BASE_ADDR:
+               ret = !gpio_get_value(USDHC3_CD_GPIO);
+               break;
+       }
+
+       return ret;
 }
 
 int board_mmc_init(bd_t *bis)
 {
-       imx_iomux_v3_setup_multiple_pads(usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+       int i, ret;
+
+       /*
+        * According to the board_mmc_init() the following map is done:
+        * (U-boot device node)    (Physical Port)
+        * mmc0                    USDHC1
+        * mmc1                    USDHC2
+        * mmc2                    USDHC3
+        */
+       for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
+               switch (i) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc1_pads, ARRAY_SIZE(usdhc1_pads));
+                       gpio_direction_input(USDHC1_CD_GPIO);
+                       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+                       gpio_direction_input(USDHC2_CD_GPIO);
+                       usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+                       break;
+               case 2:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+                       gpio_direction_input(USDHC3_CD_GPIO);
+                       usdhc_cfg[2].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                               "(%d) than supported by the board\n", i + 1);
+                       return -EINVAL;
+                       }
+
+                       ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+                       if (ret) {
+                               printf("Warning: failed to initialize "
+                                       "mmc dev %d\n", i);
+                               return ret;
+                       }
+       }
 
-       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+       return 0;
 }
 
 #ifdef CONFIG_FEC_MXC
@@ -137,20 +232,57 @@ int board_eth_init(bd_t *bis)
 static int setup_fec(void)
 {
        struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       int ret;
 
        /* clear gpr1[14], gpr1[18:17] to select anatop clock */
        clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC_MASK, 0);
 
-       ret = enable_fec_anatop_clock(ENET_50MHz);
-       if (ret)
-               return ret;
+       return enable_fec_anatop_clock(ENET_50MHZ);
+}
+#endif
+
+#ifdef CONFIG_USB_EHCI_MX6
+#define USB_OTHERREGS_OFFSET   0x800
+#define UCTRL_PWR_POL          (1 << 9)
+
+static iomux_v3_cfg_t const usb_otg_pads[] = {
+       /* OTG1 */
+       MX6_PAD_KEY_COL4__USB_USBOTG1_PWR | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_EPDC_PWRCOM__ANATOP_USBOTG1_ID | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* OTG2 */
+       MX6_PAD_KEY_COL5__USB_USBOTG2_PWR | MUX_PAD_CTRL(NO_PAD_CTRL)
+};
+
+static void setup_usb(void)
+{
+       imx_iomux_v3_setup_multiple_pads(usb_otg_pads,
+                                        ARRAY_SIZE(usb_otg_pads));
+}
+
+int board_usb_phy_mode(int port)
+{
+       if (port == 1)
+               return USB_INIT_HOST;
+       else
+               return usb_phy_mode(port);
+}
+
+int board_ehci_hcd_init(int port)
+{
+       u32 *usbnc_usb_ctrl;
+
+       if (port > 1)
+               return -EINVAL;
+
+       usbnc_usb_ctrl = (u32 *)(USB_BASE_ADDR + USB_OTHERREGS_OFFSET +
+                                port * 4);
+
+       /* Set Power polarity */
+       setbits_le32(usbnc_usb_ctrl, UCTRL_PWR_POL);
 
        return 0;
 }
 #endif
 
-
 int board_early_init_f(void)
 {
        setup_iomux_uart();
@@ -168,12 +300,12 @@ int board_init(void)
 #ifdef CONFIG_FEC_MXC
        setup_fec();
 #endif
-       return 0;
-}
 
-u32 get_board_rev(void)
-{
-       return get_cpu_rev();
+#ifdef CONFIG_USB_EHCI_MX6
+       setup_usb();
+#endif
+
+       return 0;
 }
 
 int checkboard(void)
index 68d37184a3399b59c0e8f136044cdfddc1908e2e..5cc58ac8683325ebbd6df685065b41916da8e7b9 100644 (file)
@@ -25,6 +25,9 @@
 #include <netdev.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
+#include "../common/pfuze.h"
+#include <usb.h>
+#include <usb/ehci-fsl.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -68,6 +71,34 @@ static iomux_v3_cfg_t const uart1_pads[] = {
        MX6_PAD_GPIO1_IO05__UART1_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
 };
 
+static iomux_v3_cfg_t const usdhc2_pads[] = {
+       MX6_PAD_SD2_CLK__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_CMD__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DATA0__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DATA1__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DATA2__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DATA3__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const usdhc3_pads[] = {
+       MX6_PAD_SD3_CLK__USDHC3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_CMD__USDHC3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA0__USDHC3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA1__USDHC3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA2__USDHC3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA3__USDHC3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA4__USDHC3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA5__USDHC3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA6__USDHC3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DATA7__USDHC3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+
+       /* CD pin */
+       MX6_PAD_KEY_COL0__GPIO2_IO_10 | MUX_PAD_CTRL(NO_PAD_CTRL),
+
+       /* RST_B, used for power reset cycle */
+       MX6_PAD_KEY_COL1__GPIO2_IO_11 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
 static iomux_v3_cfg_t const usdhc4_pads[] = {
        MX6_PAD_SD4_CLK__USDHC4_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
        MX6_PAD_SD4_CMD__USDHC4_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
@@ -119,7 +150,6 @@ static int setup_fec(void)
 {
        struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
        struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
-       int ret;
        int reg;
 
        /* Use 125MHz anatop loopback REF_CLK1 for ENET1 */
@@ -140,11 +170,7 @@ static int setup_fec(void)
        reg |= BM_ANADIG_PLL_ENET_REF_25M_ENABLE;
        writel(reg, &anatop->pll_enet);
 
-       ret = enable_fec_anatop_clock(ENET_125MHz);
-       if (ret)
-               return ret;
-
-       return 0;
+       return enable_fec_anatop_clock(ENET_125MHZ);
 }
 
 int board_eth_init(bd_t *bis)
@@ -170,57 +196,67 @@ static struct i2c_pads_info i2c_pad_info1 = {
        },
 };
 
-static int pfuze_init(void)
+int power_init_board(void)
 {
        struct pmic *p;
-       int ret;
        unsigned int reg;
 
-       ret = power_pfuze100_init(I2C_PMIC);
-       if (ret)
-               return ret;
-
-       p = pmic_get("PFUZE100");
-       ret = pmic_probe(p);
-       if (ret)
-               return ret;
-
-       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
-       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
-
-       /* Set SW1AB standby voltage to 0.975V */
-       pmic_reg_read(p, PFUZE100_SW1ABSTBY, &reg);
-       reg &= ~0x3f;
-       reg |= 0x1b;
-       pmic_reg_write(p, PFUZE100_SW1ABSTBY, reg);
-
-       /* Set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */
-       pmic_reg_read(p, PUZE_100_SW1ABCONF, &reg);
-       reg &= ~0xc0;
-       reg |= 0x40;
-       pmic_reg_write(p, PUZE_100_SW1ABCONF, reg);
-
-       /* Set SW1C standby voltage to 0.975V */
-       pmic_reg_read(p, PFUZE100_SW1CSTBY, &reg);
-       reg &= ~0x3f;
-       reg |= 0x1b;
-       pmic_reg_write(p, PFUZE100_SW1CSTBY, reg);
-
-       /* Set SW1C/VDDSOC step ramp up time from 16us to 4us/25mV */
-       pmic_reg_read(p, PFUZE100_SW1CCONF, &reg);
-       reg &= ~0xc0;
-       reg |= 0x40;
-       pmic_reg_write(p, PFUZE100_SW1CCONF, reg);
+       p = pfuze_common_init(I2C_PMIC);
+       if (!p)
+               return -ENODEV;
 
        /* Enable power of VGEN5 3V3, needed for SD3 */
        pmic_reg_read(p, PFUZE100_VGEN5VOL, &reg);
-       reg &= ~0x1F;
-       reg |= 0x1F;
+       reg &= ~LDO_VOL_MASK;
+       reg |= (LDOB_3_30V | (1 << LDO_EN));
        pmic_reg_write(p, PFUZE100_VGEN5VOL, reg);
 
        return 0;
 }
 
+#ifdef CONFIG_USB_EHCI_MX6
+#define USB_OTHERREGS_OFFSET   0x800
+#define UCTRL_PWR_POL          (1 << 9)
+
+static iomux_v3_cfg_t const usb_otg_pads[] = {
+       /* OGT1 */
+       MX6_PAD_GPIO1_IO09__USB_OTG1_PWR | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_GPIO1_IO10__ANATOP_OTG1_ID | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* OTG2 */
+       MX6_PAD_GPIO1_IO12__USB_OTG2_PWR | MUX_PAD_CTRL(NO_PAD_CTRL)
+};
+
+static void setup_usb(void)
+{
+       imx_iomux_v3_setup_multiple_pads(usb_otg_pads,
+                                        ARRAY_SIZE(usb_otg_pads));
+}
+
+int board_usb_phy_mode(int port)
+{
+       if (port == 1)
+               return USB_INIT_HOST;
+       else
+               return usb_phy_mode(port);
+}
+
+int board_ehci_hcd_init(int port)
+{
+       u32 *usbnc_usb_ctrl;
+
+       if (port > 1)
+               return -EINVAL;
+
+       usbnc_usb_ctrl = (u32 *)(USB_BASE_ADDR + USB_OTHERREGS_OFFSET +
+                                port * 4);
+
+       /* Set Power polarity */
+       setbits_le32(usbnc_usb_ctrl, UCTRL_PWR_POL);
+
+       return 0;
+}
+#endif
+
 int board_phy_config(struct phy_device *phydev)
 {
        /*
@@ -243,7 +279,6 @@ int board_phy_config(struct phy_device *phydev)
 int board_early_init_f(void)
 {
        setup_iomux_uart();
-       setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
 
        /* Enable PERI_3V3, which is used by SD2, ENET, LVDS, BT */
        imx_iomux_v3_setup_multiple_pads(peri_3v3_pads,
@@ -252,38 +287,144 @@ int board_early_init_f(void)
        /* Active high for ncp692 */
        gpio_direction_output(IMX_GPIO_NR(4, 16) , 1);
 
+#ifdef CONFIG_USB_EHCI_MX6
+       setup_usb();
+#endif
+
        return 0;
 }
 
-static struct fsl_esdhc_cfg usdhc_cfg[1] = {
+static struct fsl_esdhc_cfg usdhc_cfg[3] = {
+       {USDHC2_BASE_ADDR, 0, 4},
+       {USDHC3_BASE_ADDR},
        {USDHC4_BASE_ADDR},
 };
 
+#define USDHC3_CD_GPIO IMX_GPIO_NR(2, 10)
+#define USDHC3_PWR_GPIO        IMX_GPIO_NR(2, 11)
+#define USDHC4_CD_GPIO IMX_GPIO_NR(6, 21)
+
 int board_mmc_getcd(struct mmc *mmc)
 {
-       return 1;       /* Assume boot SD always present */
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+       int ret = 0;
+
+       switch (cfg->esdhc_base) {
+       case USDHC2_BASE_ADDR:
+               ret = 1; /* Assume uSDHC2 is always present */
+               break;
+       case USDHC3_BASE_ADDR:
+               ret = !gpio_get_value(USDHC3_CD_GPIO);
+               break;
+       case USDHC4_BASE_ADDR:
+               ret = !gpio_get_value(USDHC4_CD_GPIO);
+               break;
+       }
+
+       return ret;
 }
 
 int board_mmc_init(bd_t *bis)
 {
-       imx_iomux_v3_setup_multiple_pads(usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+       int i, ret;
+
+       /*
+        * According to the board_mmc_init() the following map is done:
+        * (U-boot device node)    (Physical Port)
+        * mmc0                    USDHC2
+        * mmc1                    USDHC3
+        * mmc2                    USDHC4
+        */
+       for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
+               switch (i) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+                       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+                       gpio_direction_input(USDHC3_CD_GPIO);
+                       gpio_direction_output(USDHC3_PWR_GPIO, 1);
+                       usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+                       break;
+               case 2:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+                       gpio_direction_input(USDHC4_CD_GPIO);
+                       usdhc_cfg[2].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                               "(%d) than supported by the board\n", i + 1);
+                       return -EINVAL;
+                       }
+
+                       ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+                       if (ret) {
+                               printf("Warning: failed to initialize mmc dev %d\n", i);
+                               return ret;
+                       }
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_FSL_QSPI
+
+#define QSPI_PAD_CTRL1 \
+       (PAD_CTL_SRE_FAST | PAD_CTL_SPEED_HIGH | \
+        PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_47K_UP | PAD_CTL_DSE_40ohm)
+
+static iomux_v3_cfg_t const quadspi_pads[] = {
+       MX6_PAD_NAND_WP_B__QSPI2_A_DATA_0       | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_READY_B__QSPI2_A_DATA_1    | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_CE0_B__QSPI2_A_DATA_2      | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_CE1_B__QSPI2_A_DATA_3      | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_ALE__QSPI2_A_SS0_B         | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_CLE__QSPI2_A_SCLK          | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_DATA07__QSPI2_A_DQS        | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_DATA01__QSPI2_B_DATA_0     | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_DATA00__QSPI2_B_DATA_1     | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_WE_B__QSPI2_B_DATA_2       | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_RE_B__QSPI2_B_DATA_3       | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_DATA03__QSPI2_B_SS0_B      | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_DATA02__QSPI2_B_SCLK       | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+       MX6_PAD_NAND_DATA05__QSPI2_B_DQS        | MUX_PAD_CTRL(QSPI_PAD_CTRL1),
+};
+
+int board_qspi_init(void)
+{
+       /* Set the iomux */
+       imx_iomux_v3_setup_multiple_pads(quadspi_pads,
+                                        ARRAY_SIZE(quadspi_pads));
 
-       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
-       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+       /* Set the clock */
+       enable_qspi_clk(1);
+
+       return 0;
 }
+#endif
 
 int board_init(void)
 {
        /* Address of boot parameters */
        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
+#ifdef CONFIG_SYS_I2C_MXC
+       setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
+#endif
+
+#ifdef CONFIG_FSL_QSPI
+       board_qspi_init();
+#endif
+
        return 0;
 }
 
 int board_late_init(void)
 {
-       pfuze_init();
-
        return 0;
 }
 
index 491b576258cd7f972bb81df4ef22e677bfa04497..1cf0ab78b71fe992ab454b65d3531f0a3a92a43f 100644 (file)
@@ -444,7 +444,7 @@ void fdt_disable_uart1(void *blob)
        }
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -496,6 +496,8 @@ void ft_board_setup(void *blob, bd_t *bd)
                fdt_del_flexcan(blob);
                fdt_disable_uart1(blob);
        }
+
+       return 0;
 }
 #endif
 
index f5e18515a0f867b511bf66a0ce24582c8e453ed1..d7dd478dff903f6d0495ae1939b2f1a6aed78b84 100644 (file)
@@ -332,7 +332,7 @@ static void ft_codec_setup(void *blob, const char *compatible)
        }
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -356,5 +356,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 
        /* Update the WM8776 node's clock frequency property */
        ft_codec_setup(blob, "wlf,wm8776");
+
+       return 0;
 }
 #endif
index d4d277ba6d3c1ba866a1a1a8dfdd0f551167625f..56f561a50582f6d76b0e61ee2db540d0709bc970 100644 (file)
@@ -130,7 +130,7 @@ int board_eth_init(bd_t *bis)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -147,5 +147,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #endif
 
        fdt_fixup_fman_ethernet(blob);
+
+       return 0;
 }
 #endif
index aba4f534b8655b5d532dd36e2086328013cbcc84..61ed466fa7f7e421550ed1b60116792cb0686434 100644 (file)
@@ -234,7 +234,7 @@ int board_eth_init(bd_t *bis)
 #if defined(CONFIG_OF_BOARD_SETUP)
 extern void ft_pci_board_setup(void *blob);
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        const char *soc_usb_compat = "fsl-usb2-dr";
        int err, usb1_off, usb2_off;
@@ -263,39 +263,41 @@ void ft_board_setup(void *blob, bd_t *bd)
                int off = fdt_node_offset_by_compatible(blob, -1,
                        soc_elbc_compat);
                if (off < 0) {
-                       printf("WARNING: could not find compatible node"
-                               " %s: %s.\n", soc_elbc_compat,
-                               fdt_strerror(off));
-                               return;
+                       printf("WARNING: could not find compatible node %s\n",
+                              soc_elbc_compat);
+                       return off;
                }
                err = fdt_del_node(blob, off);
                if (err < 0) {
-                       printf("WARNING: could not remove %s: %s.\n",
-                               soc_elbc_compat, fdt_strerror(err));
+                       printf("WARNING: could not remove %s\n",
+                              soc_elbc_compat);
+                       return err;
                }
-               return;
+               return 0;
        }
 #endif
        /* Delete USB2 node as it is muxed with eLBC */
        usb1_off = fdt_node_offset_by_compatible(blob, -1,
                soc_usb_compat);
        if (usb1_off < 0) {
-               printf("WARNING: could not find compatible node"
-                       " %s: %s.\n", soc_usb_compat,
-                       fdt_strerror(usb1_off));
-               return;
+               printf("WARNING: could not find compatible node %s\n",
+                      soc_usb_compat);
+               return usb1_off;
        }
        usb2_off = fdt_node_offset_by_compatible(blob, usb1_off,
                        soc_usb_compat);
        if (usb2_off < 0) {
-               printf("WARNING: could not find compatible node"
-                       " %s: %s.\n", soc_usb_compat,
-                       fdt_strerror(usb2_off));
-               return;
+               printf("WARNING: could not find compatible node %s\n",
+                      soc_usb_compat);
+               return usb2_off;
        }
        err = fdt_del_node(blob, usb2_off);
-       if (err < 0)
-               printf("WARNING: could not remove %s: %s.\n",
-                       soc_usb_compat, fdt_strerror(err));
+       if (err < 0) {
+               printf("WARNING: could not remove %s\n", soc_usb_compat);
+               return err;
+       }
+
+       return 0;
 }
+
 #endif
index a6756c68f40f3698a330249299a13b3bb9317a95..3f47cfbb82aa3e9b2b547a31feaa0ea39d18f44b 100644 (file)
@@ -424,7 +424,7 @@ static void fdt_board_fixup_qe_pins(void *blob)
 #endif
 
 #ifdef CONFIG_OF_BOARD_SETUP
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -459,17 +459,17 @@ void ft_board_setup(void *blob, bd_t *bd)
                int off = fdt_node_offset_by_compatible(blob, -1,
                                soc_elbc_compat);
                if (off < 0) {
-                       printf("WARNING: could not find compatible node %s: %s.\n",
-                              soc_elbc_compat,
-                              fdt_strerror(off));
-                               return;
+                       printf("WARNING: could not find compatible node %s\n",
+                              soc_elbc_compat);
+                       return off;
                }
                err = fdt_del_node(blob, off);
                if (err < 0) {
-                       printf("WARNING: could not remove %s: %s.\n",
-                              soc_elbc_compat, fdt_strerror(err));
+                       printf("WARNING: could not remove %s\n",
+                              soc_elbc_compat);
+                       return err;
                }
-               return;
+               return 0;
        }
 #endif
 
@@ -477,24 +477,23 @@ void ft_board_setup(void *blob, bd_t *bd)
        usb1_off = fdt_node_offset_by_compatible(blob, -1,
                soc_usb_compat);
        if (usb1_off < 0) {
-               printf("WARNING: could not find compatible node %s: %s.\n",
-                      soc_usb_compat,
-                      fdt_strerror(usb1_off));
-               return;
+               printf("WARNING: could not find compatible node %s\n",
+                      soc_usb_compat);
+               return usb1_off;
        }
        usb2_off = fdt_node_offset_by_compatible(blob, usb1_off,
                        soc_usb_compat);
        if (usb2_off < 0) {
-               printf("WARNING: could not find compatible node %s: %s.\n",
-                      soc_usb_compat,
-                      fdt_strerror(usb2_off));
-               return;
+               printf("WARNING: could not find compatible node %s\n",
+                      soc_usb_compat);
+               return usb2_off;
        }
        err = fdt_del_node(blob, usb2_off);
        if (err < 0) {
-               printf("WARNING: could not remove %s: %s.\n",
-                      soc_usb_compat, fdt_strerror(err));
+               printf("WARNING: could not remove %s\n", soc_usb_compat);
+               return err;
        }
 
+       return 0;
 }
 #endif
index a0a416ba17667784044ab961376ce1532830dd11..a40bea328b02154a0ffa925c32c86f72cc538d80 100644 (file)
@@ -261,7 +261,7 @@ static void fdt_board_fixup_qe_pins(void *blob)
 #endif
 
 #ifdef CONFIG_OF_BOARD_SETUP
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -283,5 +283,7 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_board_fixup_qe_pins(blob);
 #endif
        fdt_fixup_dr_usb(blob, bd);
+
+       return 0;
 }
 #endif
index f777bb9d679d45237a5481346ee74b5a14d5e369..1db37e3be8e4d0ad856c5ac142939741f3e0c361 100644 (file)
@@ -250,7 +250,7 @@ int board_eth_init(bd_t *bis)
 #endif
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -269,5 +269,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_HAS_FSL_DR_USB
        fdt_fixup_dr_usb(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
index b72fcffdd08dd9e579ae901a50902ff9e328692a..5d18e8de75a3de7384847c36ed02d5426b4aa6d2 100644 (file)
@@ -236,7 +236,7 @@ int board_eth_init(bd_t *bis)
 #endif
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -257,5 +257,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_SGMII_RISER
        fsl_sgmii_riser_fdt_fixup(blob);
 #endif
+
+       return 0;
 }
 #endif
index a14b43b5a503e4a272e7e6baab96e37ce858467c..e600bdbc2a87a38ab014d268aac95cbcfd733ed3 100644 (file)
@@ -215,7 +215,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -239,4 +239,6 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_SYS_DPAA_FMAN
        fdt_fixup_fman_ethernet(blob);
 #endif
+
+       return 0;
 }
index 230870d90e442d2d1ac7c6730218bfe725467116..a0fca0d88083105e07a71cb4cccd23ed0751f325 100644 (file)
@@ -235,9 +235,11 @@ int board_eth_init(bd_t *bis)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        FT_FSL_PCI_SETUP;
+
+       return 0;
 }
 #endif
 
similarity index 57%
rename from board/freescale/mpc8266ads/Kconfig
rename to board/freescale/t102xqds/Kconfig
index 78963b9c32675f5f62f891f02c74588dc5b7fad0..4d17798d5cbea2f013a7f1e52b76305c4aee3697 100644 (file)
@@ -1,12 +1,12 @@
-if TARGET_MPC8266ADS
+if TARGET_T102XQDS
 
 config SYS_BOARD
-       default "mpc8266ads"
+       default "t102xqds"
 
 config SYS_VENDOR
        default "freescale"
 
 config SYS_CONFIG_NAME
-       default "MPC8266ADS"
+       default "T102xQDS"
 
 endif
diff --git a/board/freescale/t102xqds/MAINTAINERS b/board/freescale/t102xqds/MAINTAINERS
new file mode 100644 (file)
index 0000000..1ffccc4
--- /dev/null
@@ -0,0 +1,12 @@
+T102XQDS BOARD
+M:     Shengzhou Liu  <Shengzhou.Liu@freescale.com>
+S:     Maintained
+F:     board/freescale/t102xqds/
+F:     include/configs/T102xQDS.h
+F:     configs/T1024QDS_defconfig
+F:     configs/T1024QDS_NAND_defconfig
+F:     configs/T1024QDS_SDCARD_defconfig
+F:     configs/T1024QDS_SPIFLASH_defconfig
+F:     configs/T1024QDS_D4_defconfig
+F:     configs/T1024QDS_SECURE_BOOT_defconfig
+F:     configs/T1024QDS_D4_SECURE_BOOT_defconfig
diff --git a/board/freescale/t102xqds/Makefile b/board/freescale/t102xqds/Makefile
new file mode 100644 (file)
index 0000000..d94f230
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright 2014 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
+obj-y  += t102xqds.o
+obj-y  += eth_t102xqds.o
+obj-$(CONFIG_PCI) += pci.o
+obj-$(CONFIG_FSL_DIU_FB) += ../t1040qds/diu.o
+endif
+obj-y   += ddr.o
+obj-y   += law.o
+obj-y   += tlb.o
diff --git a/board/freescale/t102xqds/README b/board/freescale/t102xqds/README
new file mode 100644 (file)
index 0000000..bb0f280
--- /dev/null
@@ -0,0 +1,328 @@
+T1024 SoC Overview
+------------------
+The T1024/T1023 dual core and T1014/T1013 single core QorIQ communication processor
+combines two or one 64-bit Power Architecture e5500 core respectively with high
+performance datapath acceleration logic, and network peripheral bus interfaces
+required for networking and telecommunications. This processor can be used in
+applications such as enterprise WLAN access points, routers, switches, firewall
+and other packet processing intensive small enterprise and branch office appliances,
+and general-purpose embedded computing. Its high level of integration offers
+significant performance benefits and greatly helps to simplify board design.
+
+
+The T1024 SoC includes the following function and features:
+- two e5500 cores, each with a private 256 KB L2 cache
+  - Up to 1.4 GHz with 64-bit ISA support (Power Architecture v2.06-compliant)
+  - Three levels of instructions: User, supervisor, and hypervisor
+  - Independent boot and reset
+  - Secure boot capability
+- 256 KB shared L3 CoreNet platform cache (CPC)
+- Interconnect CoreNet platform
+  - CoreNet coherency manager supporting coherent and noncoherent transactions
+    with prioritization and bandwidth allocation amongst CoreNet endpoints
+  - 150 Gbps coherent read bandwidth
+- 32-/64-bit DDR3L/DDR4 SDRAM memory controller with ECC and interleaving support
+- Data Path Acceleration Architecture (DPAA) incorporating acceleration for the following functions:
+  - Packet parsing, classification, and distribution
+  - Queue management for scheduling, packet sequencing, and congestion management
+  - Cryptography Acceleration (SEC 5.x)
+  - IEEE 1588 support
+  - Hardware buffer management for buffer allocation and deallocation
+  - MACSEC on DPAA-based Ethernet ports
+- Ethernet interfaces
+  - Four 1 Gbps Ethernet controllers
+- Parallel Ethernet interfaces
+  - Two RGMII interfaces
+- High speed peripheral interfaces
+  - Three PCI Express 2.0 controllers/ports running at up to 5 GHz
+  - One SATA controller supporting 1.5 and 3.0 Gb/s operation
+  - One QSGMII interface
+  - Four SGMII interface supporting 1000 Mbps
+  - Three SGMII interfaces supporting up to 2500 Mbps
+  - 10GbE XFI or 10Base-KR interface
+- Additional peripheral interfaces
+  - Two USB 2.0 controllers with integrated PHY
+  - SD/eSDHC/eMMC
+  - eSPI controller
+  - Four I2C controllers
+  - Four UARTs
+  - Four GPIO controllers
+  - Integrated flash controller (IFC)
+  - LCD interface (DIU) with 12 bit dual data rate
+- Multicore programmable interrupt controller (PIC)
+- Two 8-channel DMA engines
+- Single source clocking implementation
+- Deep Sleep power implementaion (wakeup from GPIO/Timer/Ethernet/USB)
+- QUICC Engine block
+  - 32-bit RISC controller for flexible support of the communications peripherals
+  - Serial DMA channel for receive and transmit on all serial channels
+  - Two universal communication controllers, supporting TDM, HDLC, and UART
+
+T1023 Personality
+------------------
+T1023 is a reduced personality of T1024 without QUICC Engine, DIU, and
+unavailable deep sleep. Rest of the blocks are almost same as T1024.
+Differences between T1024 and T1023
+Feature                T1024  T1023
+QUICC Engine:  yes    no
+DIU:           yes    no
+Deep Sleep:    yes    no
+I2C controller: 4      3
+DDR:           64-bit 32-bit
+IFC:           32-bit 28-bit
+
+
+T1024QDS board Overview
+-----------------------
+- SERDES Connections
+  4 lanes supporting the following:
+  - PCI Express: supports Gen 1 and Gen 2
+  - SGMII 1G and SGMII 2.5G
+  - QSGMII
+  - XFI
+  - SATA 2.0
+  - High-speed multiplexers route the SerDes traffic to appropriate slots or connectors.
+  - Aurora debug with dedicated connectors.
+- DDR Controller
+  - Supports up to 1600 MTPS data-rate.
+  - Supports one DDR4 or DDR3L module using DDR4 to DDR3L adapter card.
+    - Supports Single-, dual- or quad-rank DIMMs
+  - DDR power supplies 1.35V (DDR3L)/1.20V (DDR4) to all devices with automatic tracking of VTT.
+- IFC/Local Bus
+  - NAND Flash: 8-bit, async, up to 2GB
+  - NOR: 8-bit or 16-bit, non-multiplexed, up to 512MB
+    - NOR devices support 8 virtual banks
+    - Socketed to allow alternate devices
+  - GASIC: Simple (minimal) target within QIXIS FPGA
+  - PromJET rapid memory download support
+  - IFC Debug/Development card
+- Ethernet
+  - Two on-board RGMII 10M/100M/1G ethernet ports.
+  - One QSGMII interface
+  - Four SGMII interface supporting 1Gbps
+  - Three SGMII interfaces supporting 2.5Gbps
+  - one 10Gbps XFI or 10Base-KR interface
+- QIXIS System Logic FPGA
+  - Manages system power and reset sequencing.
+  - Manages the configurations of DUT, board, and clock for dynamic shmoo.
+  - Collects V-I-T data in background for code/power profiling.
+  - Supports legacy TMT test features (POSt, IRS, SYSCLK-synchronous assertion).
+  - General fault monitoring and logging.
+  - Powered from ATX 'standby' power supply that allows continuous operation while rest of the system is off.
+- Clocks
+  - System and DDR clock (SYSCLK, DDRCLK).
+    - Switch selectable to one of 16 common settings in the interval of 64 MHz-166 MHz.
+    - Software programmable in 1 MHz increments from 1-200 MHz.
+  - SERDES clocks
+    - Provides clocks to SerDes blocks and slots.
+    - 100 MHz, 125 MHz and 156.25 MHz options.
+    - Spread-spectrum option for 100 MHz.
+- Power Supplies
+  - Dedicated PMBus regulator for VDD and VDDC.
+  - Adjustable from 0.7V to 1.3V at 35A
+    - VDD can be disabled independanty from VDDC for “deep sleep”.
+    - DDR3L/DDR4 power supply for GVDD: 1.35 or 1.20V at up to 22A.
+    - VTT/MVREF automatically track operating voltage.
+    - Dedicated 2.5V VPP supply.
+  - Dedicated regulators/filters for AVDD supplies.
+  - Dedicated regulators for other supplies, for example OVDD, CVDD, DVDD, LVDD, POVDD, and EVDD.
+- Video
+  - DIU supports video up to 1280x1024x32 bpp.
+    - Chrontel CH7201 for HDMI connection.
+    - TI DS90C387R for direct LCD connection.
+    - Raw (not encoded) video connector for testing or other encoders.
+- USB
+  - Supports two USB 2.0 ports with integrated PHYs.
+    - Two type A ports with 5V@1.5A per port.
+    - Second port can be converted to OTG mini-AB.
+- SDHC
+  For T1024QDS, the SDHC port connects directly to an adapter card slot that has the following features:
+    - upport for optional clock feedback paths.
+    - Support for optional high-speed voltage translation direction controls.
+    - Support for SD slots for: SD, SDHC (1x, 4x, 8x) and MMC.
+    - Support for eMMC memory devices.
+- SPI
+  -On-board support of 3 different devices and sizes.
+- Other IO
+  - Two Serial ports
+  - ProfiBus port
+  - Four I2C ports
+
+
+Memory map on T1024QDS
+----------------------
+Start Address  End Address      Description                    Size
+0xF_FFDF_0000  0xF_FFDF_0FFF    IFC - FPGA                     4KB
+0xF_FF80_0000  0xF_FF80_FFFF    IFC - NAND Flash               64KB
+0xF_FE00_0000  0xF_FEFF_FFFF    CCSRBAR                                16MB
+0xF_F802_0000  0xF_F802_FFFF    PCI Express 3 I/O Space                64KB
+0xF_F801_0000  0xF_F801_FFFF    PCI Express 2 I/O Space                64KB
+0xF_F800_0000  0xF_F800_FFFF    PCI Express 1 I/O Space                64KB
+0xF_F600_0000  0xF_F7FF_FFFF    Queue manager software portal   32MB
+0xF_F400_0000  0xF_F5FF_FFFF    Buffer manager software portal  32MB
+0xF_E800_0000  0xF_EFFF_FFFF    IFC - NOR Flash                        128MB
+0xF_E000_0000  0xF_E7FF_FFFF    Promjet                                128MB
+0xF_0000_0000  0xF_003F_FFFF    DCSR                           4MB
+0xC_2000_0000  0xC_2FFF_FFFF    PCI Express 3 Mem Space                256MB
+0xC_1000_0000  0xC_1FFF_FFFF    PCI Express 2 Mem Space                256MB
+0xC_0000_0000  0xC_0FFF_FFFF    PCI Express 1 Mem Space                256MB
+0x0_0000_0000  0x0_ffff_ffff    DDR                            4GB
+
+
+128MB NOR Flash memory Map
+--------------------------
+Start Address   End Address     Definition                     Max size
+0xEFF40000      0xEFFFFFFF      u-boot (current bank)          768KB
+0xEFF20000      0xEFF3FFFF      u-boot env (current bank)      128KB
+0xEFF00000      0xEFF1FFFF      FMAN Ucode (current bank)      128KB
+0xEFE00000      0xEFE3FFFF      QE firmware (current bank)     256KB
+0xED300000      0xEFEFFFFF      rootfs (alt bank)              44MB
+0xEC800000      0xEC8FFFFF      Hardware device tree (alt bank) 1MB
+0xEC020000      0xEC7FFFFF      Linux.uImage (alt bank)                7MB + 875KB
+0xEC000000      0xEC01FFFF      RCW (alt bank)                 128KB
+0xEBF40000      0xEBFFFFFF      u-boot (alt bank)              768KB
+0xEBF20000      0xEBF3FFFF      u-boot env (alt bank)          128KB
+0xEBF00000      0xEBF1FFFF      FMAN ucode (alt bank)          128KB
+0xEBE00000      0xEBE3FFFF      QE firmware (alt bank)         256KB
+0xE9300000      0xEBEFFFFF      rootfs (current bank)          44MB
+0xE8800000      0xE88FFFFF      Hardware device tree (cur bank) 1MB
+0xE8020000      0xE86FFFFF      Linux.uImage (current bank)    7MB + 875KB
+0xE8000000      0xE801FFFF      RCW (current bank)             128KB
+
+
+SerDes clock vs DIP-switch settings
+-----------------------------------
+SRDS_PRTCL_S1  SD1_REF_CLK1    SD1_REF_CLK2    SW4[1:4]
+0x6F           100MHz          125MHz          1101
+0xD6           100MHz          100MHz          1111
+0x99           156.25MHz       100MHz          1011
+
+
+T1024 Clock frequency
+----------------------
+BIN   Core     DDR       Platform  FMan
+Bin1: 1400MHz  1600MT/s  400MHz    700MHz
+Bin2: 1200MHz  1600MT/s  400MHz    600MHz
+Bin3: 1000MHz  1600MT/s  400MHz    500MHz
+
+
+
+Software configurations and board settings
+------------------------------------------
+1. NOR boot:
+   a. build NOR boot image
+       $  make T1024QDS_defconfig    (For DDR3L, by default)
+       or make T1024QDS_D4_defconfig (For DDR4)
+       $  make
+   b. program u-boot.bin image to NOR flash
+       => tftp 1000000 u-boot.bin
+       => pro off all;era eff40000 efffffff;cp.b 1000000 eff40000 $filesize
+       set SW1[1:8] = '00010011', SW2[1] = '1', SW6[1:4] = '0000' for NOR boot
+
+   Switching between default bank0 and alternate bank4 on NOR flash
+   To change boot source to vbank4:
+       via software:   run command 'qixis_reset altbank' in u-boot.
+       via DIP-switch: set SW6[1:4] = '0100'
+
+   To change boot source to vbank0:
+       via software:   run command 'qixis_reset' in u-boot.
+       via DIP-Switch: set SW6[1:4] = '0000'
+
+2. NAND Boot:
+   a. build PBL image for NAND boot
+       $ make T1024QDS_NAND_defconfig
+       $ make
+   b. program u-boot-with-spl-pbl.bin to NAND flash
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => nand erase 0 $filesize
+       => nand write 1000000 0 $filesize
+       set SW1[1:8] = '10000010', SW2[1] = '0' and SW6[1:4] = '1001' for NAND boot
+
+3. SPI Boot:
+   a. build PBL image for SPI boot
+       $ make T1024QDS_SPIFLASH_defconfig
+       $ make
+   b. program u-boot-with-spl-pbl.bin to SPI flash
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => sf probe 0
+       => sf erase 0 f0000
+       => sf write 1000000 0 $filesize
+       set SW1[1:8] = '00100010', SW2[1] ='1' for SPI boot
+
+4. SD Boot:
+   a. build PBL image for SD boot
+       $ make T1024QDS_SDCARD_defconfig
+       $ make
+   b. program u-boot-with-spl-pbl.bin to SD/MMC card
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => mmc write 1000000 8 0x800
+       => tftp 1000000 fsl_fman_ucode_t1024_xx.bin
+       => mmc write 1000000 0x820 80
+       set SW1[1:8] = '00100000', SW2[1] = '0' for SD boot
+
+
+DIU/QE-TDM/SDXC settings
+-------------------
+a) For TDM Riser:     set pin_mux=tdm in hwconfig
+b) For UCC(ProfiBus): set pin_mux=ucc in hwconfig
+c) For HDMI(DVI):     set pin_mux=hdmi in hwconfig
+d) For LCD(DFP):      set pin_mux=lcd in hwconfig
+e) For SDXC:         set adaptor=sdxc in hwconfig
+
+2-stage NAND/SPI/SD boot loader
+-------------------------------
+PBL initializes the internal CPC-SRAM and copy SPL(160K) to SRAM.
+SPL further initializes DDR using SPD and environment variables
+and copy u-boot(768 KB) from NAND/SPI/SD device to DDR.
+Finally SPL transers control to u-boot for futher booting.
+
+SPL has following features:
+ - Executes within 256K
+ - No relocation required
+
+Run time view of SPL framework
+-------------------------------------------------
+|Area             | Address                    |
+-------------------------------------------------
+|SecureBoot header | 0xFFFC0000 (32KB)         |
+-------------------------------------------------
+|GD, BD                   | 0xFFFC8000 (4KB)           |
+-------------------------------------------------
+|ENV              | 0xFFFC9000 (8KB)           |
+-------------------------------------------------
+|HEAP             | 0xFFFCB000 (30KB)          |
+-------------------------------------------------
+|STACK            | 0xFFFD8000 (22KB)          |
+-------------------------------------------------
+|U-boot SPL       | 0xFFFD8000 (160KB)         |
+-------------------------------------------------
+
+NAND Flash memory Map on T1024QDS
+-------------------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot          1MB
+0x100000       0x15FFFF        u-boot env      8KB
+0x160000       0x17FFFF        FMAN Ucode      128KB
+0x180000       0x19FFFF        QE Firmware     128KB
+
+
+SD Card memory Map on T1024QDS
+----------------------------------------------------
+Block          #blocks         Definition      Size
+0x008          2048            u-boot img      1MB
+0x800          0016            u-boot env      8KB
+0x820          0256            FMAN Ucode      128KB
+0x920          0256            QE Firmware     128KB
+
+
+SPI Flash memory Map on T1024QDS
+----------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot img      1MB
+0x100000       0x101FFF        u-boot env      8KB
+0x110000       0x12FFFF        FMAN Ucode      128KB
+0x130000       0x14FFFF        QE Firmware     128KB
+
+
+For more details, please refer to T1024QDS Reference Manual and access
+website www.freescale.com and Freescale QorIQ SDK Infocenter document.
diff --git a/board/freescale/t102xqds/ddr.c b/board/freescale/t102xqds/ddr.c
new file mode 100644 (file)
index 0000000..46fc64e
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <hwconfig.h>
+#include <asm/mmu.h>
+#include <fsl_ddr_sdram.h>
+#include <fsl_ddr_dimm_params.h>
+#include <asm/fsl_law.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct board_specific_parameters {
+       u32 n_ranks;
+       u32 datarate_mhz_high;
+       u32 rank_gb;
+       u32 clk_adjust;
+       u32 wrlvl_start;
+       u32 wrlvl_ctl_2;
+       u32 wrlvl_ctl_3;
+};
+
+/*
+ * datarate_mhz_high values need to be in ascending order
+ */
+static const struct board_specific_parameters udimm0[] = {
+       /*
+        * memory controller 0
+        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl |
+        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |
+        */
+#if defined(CONFIG_SYS_FSL_DDR4)
+       {2,  1666,  0,  4,  7,  0x0808090B,  0x0C0D0E0A,},
+       {2,  1900,  0,  4,  6,  0x08080A0C,  0x0D0E0F0A,},
+       {1,  1666,  0,  4,  6,  0x0708090B,  0x0C0D0E09,},
+       {1,  1900,  0,  4,  6,  0x08080A0C,  0x0D0E0F0A,},
+       {1,  2200,  0,  4,  7,  0x08090A0D,  0x0F0F100C,},
+#elif defined(CONFIG_SYS_FSL_DDR3)
+       {2,  833,   0,  4,  6,  0x06060607,  0x08080807,},
+       {2,  1350,  0,  4,  7,  0x0708080A,  0x0A0B0C09,},
+       {2,  1666,  0,  4,  7,  0x0808090B,  0x0C0D0E0A,},
+       {1,  833,   0,  4,  6,  0x06060607,  0x08080807,},
+       {1,  1350,  0,  4,  7,  0x0708080A,  0x0A0B0C09,},
+       {1,  1666,  0,  4,  7,  0x0808090B,  0x0C0D0E0A,},
+#else
+#error DDR type not defined
+#endif
+       {}
+};
+
+static const struct board_specific_parameters *udimms[] = {
+       udimm0,
+};
+
+void fsl_ddr_board_options(memctl_options_t *popts,
+                          dimm_params_t *pdimm,
+                          unsigned int ctrl_num)
+{
+       const struct board_specific_parameters *pbsp, *pbsp_highest = NULL;
+       ulong ddr_freq;
+       struct cpu_type *cpu = gd->arch.cpu;
+
+       if (ctrl_num > 2) {
+               printf("Not supported controller number %d\n", ctrl_num);
+               return;
+       }
+       if (!pdimm->n_ranks)
+               return;
+
+       pbsp = udimms[0];
+
+       /* Get clk_adjust according to the board ddr freqency and n_banks
+        * specified in board_specific_parameters table.
+        */
+       ddr_freq = get_ddr_freq(0) / 1000000;
+       while (pbsp->datarate_mhz_high) {
+               if (pbsp->n_ranks == pdimm->n_ranks &&
+                   (pdimm->rank_density >> 30) >= pbsp->rank_gb) {
+                       if (ddr_freq <= pbsp->datarate_mhz_high) {
+                               popts->clk_adjust = pbsp->clk_adjust;
+                               popts->wrlvl_start = pbsp->wrlvl_start;
+                               popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
+                               popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
+                               goto found;
+                       }
+                       pbsp_highest = pbsp;
+               }
+               pbsp++;
+       }
+
+       if (pbsp_highest) {
+               printf("Error: board specific timing not found\n");
+               printf("for data rate %lu MT/s\n", ddr_freq);
+               printf("Trying to use the highest speed (%u) parameters\n",
+                      pbsp_highest->datarate_mhz_high);
+               popts->clk_adjust = pbsp_highest->clk_adjust;
+               popts->wrlvl_start = pbsp_highest->wrlvl_start;
+               popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
+               popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
+       } else {
+               panic("DIMM is not supported by this board");
+       }
+found:
+       debug("Found timing match: n_ranks %d, data rate %d, rank_gb %d\n",
+             pbsp->n_ranks, pbsp->datarate_mhz_high, pbsp->rank_gb);
+       debug("\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x, ",
+             pbsp->clk_adjust, pbsp->wrlvl_start, pbsp->wrlvl_ctl_2);
+       debug("wrlvl_ctrl_3 0x%x\n", pbsp->wrlvl_ctl_3);
+
+       /*
+        * Factors to consider for half-strength driver enable:
+        *      - number of DIMMs installed
+        */
+       popts->half_strength_driver_enable = 1;
+       /*
+        * Write leveling override
+        */
+       popts->wrlvl_override = 1;
+       popts->wrlvl_sample = 0xf;
+
+       /*
+        * rtt and rtt_wr override
+        */
+       popts->rtt_override = 0;
+
+       /* Enable ZQ calibration */
+       popts->zq_en = 1;
+
+       /* DHC_EN =1, ODT = 75 Ohm */
+#ifdef CONFIG_SYS_FSL_DDR4
+       popts->ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_80ohm);
+       popts->ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_80ohm) |
+                         DDR_CDR2_VREF_OVRD(70);       /* Vref = 70% */
+#else
+       popts->ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_75ohm);
+       popts->ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_75ohm);
+#endif
+
+       /* T1023 supports max DDR bus 32bit width, T1024 supports DDR 64bit,
+        * set DDR bus width to 32bit for T1023
+        */
+       if (cpu->soc_ver == SVR_T1023)
+               popts->data_bus_width = DDR_DATA_BUS_WIDTH_32;
+
+#ifdef CONFIG_FORCE_DDR_DATA_BUS_WIDTH_32
+       /* for DDR bus 32bit test on T1024 */
+       popts->data_bus_width = DDR_DATA_BUS_WIDTH_32;
+#endif
+}
+
+phys_size_t initdram(int board_type)
+{
+       phys_size_t dram_size;
+
+#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_RAMBOOT_PBL)
+       puts("Initializing....using SPD\n");
+
+       dram_size = fsl_ddr_sdram();
+       dram_size = setup_ddr_tlbs(dram_size / 0x100000);
+       dram_size *= 0x100000;
+#else
+       /* DDR has been initialised by first stage boot loader */
+       dram_size =  fsl_ddr_sdram_size();
+#endif
+       return dram_size;
+}
diff --git a/board/freescale/t102xqds/eth_t102xqds.c b/board/freescale/t102xqds/eth_t102xqds.c
new file mode 100644 (file)
index 0000000..7723f58
--- /dev/null
@@ -0,0 +1,442 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * Shengzhou Liu <Shengzhou.Liu@freescale.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <netdev.h>
+#include <asm/mmu.h>
+#include <asm/processor.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+#include <malloc.h>
+#include <fm_eth.h>
+#include <fsl_mdio.h>
+#include <miiphy.h>
+#include <phy.h>
+#include <asm/fsl_dtsec.h>
+#include <asm/fsl_serdes.h>
+#include "../common/qixis.h"
+#include "../common/fman.h"
+#include "t102xqds_qixis.h"
+
+#define EMI_NONE       0xFFFFFFFF
+#define EMI1_RGMII1    0
+#define EMI1_RGMII2    1
+#define EMI1_SLOT1     2
+#define EMI1_SLOT2     3
+#define EMI1_SLOT3     4
+#define EMI1_SLOT4     5
+#define EMI1_SLOT5     6
+#define EMI2           7
+
+static int mdio_mux[NUM_FM_PORTS];
+
+static const char * const mdio_names[] = {
+       "T1024QDS_MDIO_RGMII1",
+       "T1024QDS_MDIO_RGMII2",
+       "T1024QDS_MDIO_SLOT1",
+       "T1024QDS_MDIO_SLOT2",
+       "T1024QDS_MDIO_SLOT3",
+       "T1024QDS_MDIO_SLOT4",
+       "T1024QDS_MDIO_SLOT5",
+       "T1024QDS_MDIO_10GC",
+       "NULL",
+};
+
+/* Map SerDes1 4 lanes to default slot, will be initialized dynamically */
+static u8 lane_to_slot[] = {2, 3, 4, 5};
+
+static const char *t1024qds_mdio_name_for_muxval(u8 muxval)
+{
+       return mdio_names[muxval];
+}
+
+struct mii_dev *mii_dev_for_muxval(u8 muxval)
+{
+       struct mii_dev *bus;
+       const char *name;
+
+       if (muxval > EMI2)
+               return NULL;
+
+       name = t1024qds_mdio_name_for_muxval(muxval);
+
+       if (!name) {
+               printf("No bus for muxval %x\n", muxval);
+               return NULL;
+       }
+
+       bus = miiphy_get_dev_by_name(name);
+
+       if (!bus) {
+               printf("No bus by name %s\n", name);
+               return NULL;
+       }
+
+       return bus;
+}
+
+struct t1024qds_mdio {
+       u8 muxval;
+       struct mii_dev *realbus;
+};
+
+static void t1024qds_mux_mdio(u8 muxval)
+{
+       u8 brdcfg4;
+
+       if (muxval < 7) {
+               brdcfg4 = QIXIS_READ(brdcfg[4]);
+               brdcfg4 &= ~BRDCFG4_EMISEL_MASK;
+               brdcfg4 |= (muxval << BRDCFG4_EMISEL_SHIFT);
+               QIXIS_WRITE(brdcfg[4], brdcfg4);
+       }
+}
+
+static int t1024qds_mdio_read(struct mii_dev *bus, int addr, int devad,
+                             int regnum)
+{
+       struct t1024qds_mdio *priv = bus->priv;
+
+       t1024qds_mux_mdio(priv->muxval);
+
+       return priv->realbus->read(priv->realbus, addr, devad, regnum);
+}
+
+static int t1024qds_mdio_write(struct mii_dev *bus, int addr, int devad,
+                              int regnum, u16 value)
+{
+       struct t1024qds_mdio *priv = bus->priv;
+
+       t1024qds_mux_mdio(priv->muxval);
+
+       return priv->realbus->write(priv->realbus, addr, devad, regnum, value);
+}
+
+static int t1024qds_mdio_reset(struct mii_dev *bus)
+{
+       struct t1024qds_mdio *priv = bus->priv;
+
+       return priv->realbus->reset(priv->realbus);
+}
+
+static int t1024qds_mdio_init(char *realbusname, u8 muxval)
+{
+       struct t1024qds_mdio *pmdio;
+       struct mii_dev *bus = mdio_alloc();
+
+       if (!bus) {
+               printf("Failed to allocate t1024qds MDIO bus\n");
+               return -1;
+       }
+
+       pmdio = malloc(sizeof(*pmdio));
+       if (!pmdio) {
+               printf("Failed to allocate t1024qds private data\n");
+               free(bus);
+               return -1;
+       }
+
+       bus->read = t1024qds_mdio_read;
+       bus->write = t1024qds_mdio_write;
+       bus->reset = t1024qds_mdio_reset;
+       sprintf(bus->name, t1024qds_mdio_name_for_muxval(muxval));
+
+       pmdio->realbus = miiphy_get_dev_by_name(realbusname);
+
+       if (!pmdio->realbus) {
+               printf("No bus with name %s\n", realbusname);
+               free(bus);
+               free(pmdio);
+               return -1;
+       }
+
+       pmdio->muxval = muxval;
+       bus->priv = pmdio;
+       return mdio_register(bus);
+}
+
+void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
+                             enum fm_port port, int offset)
+{
+       struct fixed_link f_link;
+
+       if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_RGMII) {
+               if (port == FM1_DTSEC3) {
+                       fdt_set_phy_handle(fdt, compat, addr, "rgmii_phy2");
+                       fdt_setprop(fdt, offset, "phy-connection-type",
+                                   "rgmii", 5);
+                       fdt_status_okay_by_alias(fdt, "emi1_rgmii1");
+               }
+       } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_SGMII) {
+               if (port == FM1_DTSEC1) {
+                       fdt_set_phy_handle(fdt, compat, addr,
+                                          "sgmii_vsc8234_phy_s5");
+               } else if (port == FM1_DTSEC2) {
+                       fdt_set_phy_handle(fdt, compat, addr,
+                                          "sgmii_vsc8234_phy_s4");
+               }
+       } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_SGMII_2500) {
+               if (port == FM1_DTSEC3) {
+                       fdt_set_phy_handle(fdt, compat, addr,
+                                          "sgmii_aqr105_phy_s3");
+               }
+       } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_QSGMII) {
+               switch (port) {
+               case FM1_DTSEC1:
+                       fdt_set_phy_handle(fdt, compat, addr, "qsgmii_phy_p1");
+                       break;
+               case FM1_DTSEC2:
+                       fdt_set_phy_handle(fdt, compat, addr, "qsgmii_phy_p2");
+                       break;
+               case FM1_DTSEC3:
+                       fdt_set_phy_handle(fdt, compat, addr, "qsgmii_phy_p3");
+                       break;
+               case FM1_DTSEC4:
+                       fdt_set_phy_handle(fdt, compat, addr, "qsgmii_phy_p4");
+                       break;
+               default:
+                       break;
+               }
+               fdt_delprop(fdt, offset, "phy-connection-type");
+               fdt_setprop(fdt, offset, "phy-connection-type", "qsgmii", 6);
+               fdt_status_okay_by_alias(fdt, "emi1_slot2");
+       } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_XGMII) {
+               /* XFI interface */
+               f_link.phy_id = port;
+               f_link.duplex = 1;
+               f_link.link_speed = 10000;
+               f_link.pause = 0;
+               f_link.asym_pause = 0;
+               /* no PHY for XFI */
+               fdt_delprop(fdt, offset, "phy-handle");
+               fdt_setprop(fdt, offset, "fixed-link", &f_link, sizeof(f_link));
+               fdt_setprop(fdt, offset, "phy-connection-type", "xgmii", 5);
+       }
+}
+
+void fdt_fixup_board_enet(void *fdt)
+{
+}
+
+/*
+ * This function reads RCW to check if Serdes1{A:D} is configured
+ * to slot 1/2/3/4/5 and update the lane_to_slot[] array accordingly
+ */
+static void initialize_lane_to_slot(void)
+{
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 srds_s1 = in_be32(&gur->rcwsr[4]) &
+                               FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
+
+       srds_s1 >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
+
+       switch (srds_s1) {
+       case 0x46:
+       case 0x47:
+               lane_to_slot[1] = 2;
+               break;
+       default:
+               break;
+       }
+}
+
+int board_eth_init(bd_t *bis)
+{
+#if defined(CONFIG_FMAN_ENET)
+       int i, idx, lane, slot, interface;
+       struct memac_mdio_info dtsec_mdio_info;
+       struct memac_mdio_info tgec_mdio_info;
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 srds_s1;
+
+       srds_s1 = in_be32(&gur->rcwsr[4]) &
+                                       FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
+       srds_s1 >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
+
+       initialize_lane_to_slot();
+
+       /* Initialize the mdio_mux array so we can recognize empty elements */
+       for (i = 0; i < NUM_FM_PORTS; i++)
+               mdio_mux[i] = EMI_NONE;
+
+       dtsec_mdio_info.regs =
+               (struct memac_mdio_controller *)CONFIG_SYS_FM1_DTSEC_MDIO_ADDR;
+
+       dtsec_mdio_info.name = DEFAULT_FM_MDIO_NAME;
+
+       /* Register the 1G MDIO bus */
+       fm_memac_mdio_init(bis, &dtsec_mdio_info);
+
+       tgec_mdio_info.regs =
+               (struct memac_mdio_controller *)CONFIG_SYS_FM1_TGEC_MDIO_ADDR;
+       tgec_mdio_info.name = DEFAULT_FM_TGEC_MDIO_NAME;
+
+       /* Register the 10G MDIO bus */
+       fm_memac_mdio_init(bis, &tgec_mdio_info);
+
+       /* Register the muxing front-ends to the MDIO buses */
+       t1024qds_mdio_init(DEFAULT_FM_MDIO_NAME, EMI1_RGMII1);
+       t1024qds_mdio_init(DEFAULT_FM_MDIO_NAME, EMI1_RGMII2);
+       t1024qds_mdio_init(DEFAULT_FM_MDIO_NAME, EMI1_SLOT1);
+       t1024qds_mdio_init(DEFAULT_FM_MDIO_NAME, EMI1_SLOT2);
+       t1024qds_mdio_init(DEFAULT_FM_MDIO_NAME, EMI1_SLOT3);
+       t1024qds_mdio_init(DEFAULT_FM_MDIO_NAME, EMI1_SLOT4);
+       t1024qds_mdio_init(DEFAULT_FM_MDIO_NAME, EMI1_SLOT5);
+       t1024qds_mdio_init(DEFAULT_FM_TGEC_MDIO_NAME, EMI2);
+
+       /* Set the two on-board RGMII PHY address */
+       fm_info_set_phy_address(FM1_DTSEC3, RGMII_PHY2_ADDR);
+       fm_info_set_phy_address(FM1_DTSEC4, RGMII_PHY1_ADDR);
+
+       switch (srds_s1) {
+       case 0xd5:
+       case 0xd6:
+               /* QSGMII in Slot2 */
+               fm_info_set_phy_address(FM1_DTSEC1, 0x8);
+               fm_info_set_phy_address(FM1_DTSEC2, 0x9);
+               fm_info_set_phy_address(FM1_DTSEC3, 0xa);
+               fm_info_set_phy_address(FM1_DTSEC4, 0xb);
+               break;
+       case 0x95:
+       case 0x99:
+               /*
+                * XFI does not need a PHY to work, but to avoid U-boot use
+                * default PHY address which is zero to a MAC when it found
+                * a MAC has no PHY address, we give a PHY address to XFI
+                * MAC, and should not use a real XAUI PHY address, since
+                * MDIO can access it successfully, and then MDIO thinks the
+                * XAUI card is used for the XFI MAC, which will cause error.
+                */
+               fm_info_set_phy_address(FM1_10GEC1, 4);
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_CARD_PORT1_PHY_ADDR);
+               break;
+       case 0x6f:
+               /* SGMII in Slot3, Slot4, Slot5 */
+               fm_info_set_phy_address(FM1_DTSEC1, SGMII_CARD_AQ_PHY_ADDR_S5);
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_CARD_AQ_PHY_ADDR_S4);
+               fm_info_set_phy_address(FM1_DTSEC3, SGMII_CARD_PORT1_PHY_ADDR);
+               break;
+       case 0x7f:
+               fm_info_set_phy_address(FM1_DTSEC1, SGMII_CARD_AQ_PHY_ADDR_S5);
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_CARD_AQ_PHY_ADDR_S4);
+               fm_info_set_phy_address(FM1_DTSEC3, SGMII_CARD_AQ_PHY_ADDR_S3);
+               break;
+       case 0x47:
+               fm_info_set_phy_address(FM1_DTSEC1, SGMII_CARD_PORT1_PHY_ADDR);
+               break;
+       case 0x77:
+               fm_info_set_phy_address(FM1_DTSEC1, SGMII_CARD_PORT1_PHY_ADDR);
+               fm_info_set_phy_address(FM1_DTSEC3, SGMII_CARD_AQ_PHY_ADDR_S3);
+               break;
+       case 0x5a:
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_CARD_PORT1_PHY_ADDR);
+               break;
+       case 0x6a:
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_CARD_PORT1_PHY_ADDR);
+               fm_info_set_phy_address(FM1_DTSEC3, SGMII_CARD_PORT1_PHY_ADDR);
+               break;
+       case 0x5b:
+               fm_info_set_phy_address(FM1_DTSEC1, SGMII_CARD_PORT1_PHY_ADDR);
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_CARD_PORT1_PHY_ADDR);
+               break;
+       case 0x6b:
+               fm_info_set_phy_address(FM1_DTSEC1, SGMII_CARD_PORT1_PHY_ADDR);
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_CARD_PORT1_PHY_ADDR);
+               fm_info_set_phy_address(FM1_DTSEC3, SGMII_CARD_PORT1_PHY_ADDR);
+               break;
+       default:
+               break;
+       }
+
+       for (i = FM1_DTSEC1; i < FM1_DTSEC1 + CONFIG_SYS_NUM_FM1_DTSEC; i++) {
+               idx = i - FM1_DTSEC1;
+               interface = fm_info_get_enet_if(i);
+               switch (interface) {
+               case PHY_INTERFACE_MODE_SGMII:
+               case PHY_INTERFACE_MODE_SGMII_2500:
+               case PHY_INTERFACE_MODE_QSGMII:
+                       if (interface == PHY_INTERFACE_MODE_SGMII) {
+                               lane = serdes_get_first_lane(FSL_SRDS_1,
+                                               SGMII_FM1_DTSEC1 + idx);
+                       } else if (interface == PHY_INTERFACE_MODE_SGMII_2500) {
+                               lane = serdes_get_first_lane(FSL_SRDS_1,
+                                               SGMII_2500_FM1_DTSEC1 + idx);
+                       } else {
+                               lane = serdes_get_first_lane(FSL_SRDS_1,
+                                               QSGMII_FM1_A);
+                       }
+
+                       if (lane < 0)
+                               break;
+
+                       slot = lane_to_slot[lane];
+                       debug("FM1@DTSEC%u expects SGMII in slot %u\n",
+                             idx + 1, slot);
+                       if (QIXIS_READ(present2) & (1 << (slot - 1)))
+                               fm_disable_port(i);
+
+                       switch (slot) {
+                       case 2:
+                               mdio_mux[i] = EMI1_SLOT2;
+                               fm_info_set_mdio(i, mii_dev_for_muxval(
+                                                mdio_mux[i]));
+                               break;
+                       case 3:
+                               mdio_mux[i] = EMI1_SLOT3;
+                               fm_info_set_mdio(i, mii_dev_for_muxval(
+                                                mdio_mux[i]));
+                               break;
+                       case 4:
+                               mdio_mux[i] = EMI1_SLOT4;
+                               fm_info_set_mdio(i, mii_dev_for_muxval(
+                                                mdio_mux[i]));
+                               break;
+                       case 5:
+                               mdio_mux[i] = EMI1_SLOT5;
+                               fm_info_set_mdio(i, mii_dev_for_muxval(
+                                                mdio_mux[i]));
+                               break;
+                       }
+                       break;
+               case PHY_INTERFACE_MODE_RGMII:
+                       if (i == FM1_DTSEC3)
+                               mdio_mux[i] = EMI1_RGMII2;
+                       else if (i == FM1_DTSEC4)
+                               mdio_mux[i] = EMI1_RGMII1;
+                       fm_info_set_mdio(i, mii_dev_for_muxval(mdio_mux[i]));
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       for (i = FM1_10GEC1; i < FM1_10GEC1 + CONFIG_SYS_NUM_FM1_10GEC; i++) {
+               idx = i - FM1_10GEC1;
+               switch (fm_info_get_enet_if(i)) {
+               case PHY_INTERFACE_MODE_XGMII:
+                       lane = serdes_get_first_lane(FSL_SRDS_1,
+                                                    XFI_FM1_MAC1 + idx);
+                       if (lane < 0)
+                               break;
+                       mdio_mux[i] = EMI2;
+                       fm_info_set_mdio(i, mii_dev_for_muxval(mdio_mux[i]));
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       cpu_eth_init(bis);
+#endif /* CONFIG_FMAN_ENET */
+
+       return pci_eth_init(bis);
+}
diff --git a/board/freescale/t102xqds/law.c b/board/freescale/t102xqds/law.c
new file mode 100644 (file)
index 0000000..b1c9d01
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_law.h>
+#include <asm/mmu.h>
+
+struct law_entry law_table[] = {
+#ifndef CONFIG_SYS_NO_FLASH
+       SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_256M, LAW_TRGT_IF_IFC),
+#endif
+#ifdef CONFIG_SYS_BMAN_MEM_PHYS
+       SET_LAW(CONFIG_SYS_BMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_BMAN),
+#endif
+#ifdef CONFIG_SYS_QMAN_MEM_PHYS
+       SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_QMAN),
+#endif
+#ifdef QIXIS_BASE_PHYS
+       SET_LAW(QIXIS_BASE_PHYS, LAW_SIZE_4K, LAW_TRGT_IF_IFC),
+#endif
+#ifdef CONFIG_SYS_DCSRBAR_PHYS
+       SET_LAW(CONFIG_SYS_DCSRBAR_PHYS, LAW_SIZE_4M, LAW_TRGT_IF_DCSR),
+#endif
+#ifdef CONFIG_SYS_NAND_BASE_PHYS
+       SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_IFC),
+#endif
+};
+
+int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/freescale/t102xqds/pci.c b/board/freescale/t102xqds/pci.c
new file mode 100644 (file)
index 0000000..7369289
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <pci.h>
+#include <asm/fsl_pci.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <asm/fsl_serdes.h>
+
+void pci_init_board(void)
+{
+       fsl_pcie_init_board(0);
+}
+
+void pci_of_setup(void *blob, bd_t *bd)
+{
+       FT_FSL_PCI_SETUP;
+}
diff --git a/board/freescale/t102xqds/spl.c b/board/freescale/t102xqds/spl.c
new file mode 100644 (file)
index 0000000..08aef6e
--- /dev/null
@@ -0,0 +1,151 @@
+/* Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <ns16550.h>
+#include <nand.h>
+#include <i2c.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <spi_flash.h>
+#include "../common/qixis.h"
+#include "t102xqds_qixis.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+phys_size_t get_effective_memsize(void)
+{
+       return CONFIG_SYS_L3_SIZE;
+}
+
+unsigned long get_board_sys_clk(void)
+{
+       u8 sysclk_conf = QIXIS_READ(brdcfg[1]);
+
+       switch (sysclk_conf & 0x0F) {
+       case QIXIS_SYSCLK_83:
+               return 83333333;
+       case QIXIS_SYSCLK_100:
+               return 100000000;
+       case QIXIS_SYSCLK_125:
+               return 125000000;
+       case QIXIS_SYSCLK_133:
+               return 133333333;
+       case QIXIS_SYSCLK_150:
+               return 150000000;
+       case QIXIS_SYSCLK_160:
+               return 160000000;
+       case QIXIS_SYSCLK_166:
+               return 166666666;
+       }
+       return 66666666;
+}
+
+unsigned long get_board_ddr_clk(void)
+{
+       u8 ddrclk_conf = QIXIS_READ(brdcfg[1]);
+
+       switch ((ddrclk_conf & 0x30) >> 4) {
+       case QIXIS_DDRCLK_100:
+               return 100000000;
+       case QIXIS_DDRCLK_125:
+               return 125000000;
+       case QIXIS_DDRCLK_133:
+               return 133333333;
+       }
+       return 66666666;
+}
+
+void board_init_f(ulong bootflag)
+{
+       u32 plat_ratio, sys_clk, ccb_clk;
+       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
+
+#if defined(CONFIG_PPC_T1040) && defined(CONFIG_SPL_NAND_BOOT)
+       /*
+        * There is T1040 SoC issue where NOR, FPGA are inaccessible during
+        * NAND boot because IFC signals > IFC_AD7 are not enabled.
+        * This workaround changes RCW source to make all signals enabled.
+        */
+       u32 porsr1, pinctl;
+#define FSL_CORENET_CCSR_PORSR1_RCW_MASK        0xFF800000
+
+       porsr1 = in_be32(&gur->porsr1);
+       pinctl = ((porsr1 & ~(FSL_CORENET_CCSR_PORSR1_RCW_MASK)) | 0x24800000);
+       out_be32((unsigned int *)(CONFIG_SYS_DCSRBAR + 0x20000), pinctl);
+#endif
+
+       /* Memcpy existing GD at CONFIG_SPL_GD_ADDR */
+       memcpy((void *)CONFIG_SPL_GD_ADDR, (void *)gd, sizeof(gd_t));
+
+       /* Update GD pointer */
+       gd = (gd_t *)(CONFIG_SPL_GD_ADDR);
+
+       console_init_f();
+
+       /* initialize selected port with appropriate baud rate */
+       sys_clk = get_board_sys_clk();
+       plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
+       ccb_clk = sys_clk * plat_ratio / 2;
+
+       NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+                    ccb_clk / 16 / CONFIG_BAUDRATE);
+
+#if defined(CONFIG_SPL_MMC_BOOT)
+       puts("\nSD boot...\n");
+#elif defined(CONFIG_SPL_SPI_BOOT)
+       puts("\nSPI boot...\n");
+#elif defined(CONFIG_SPL_NAND_BOOT)
+       puts("\nNAND boot...\n");
+#endif
+
+       relocate_code(CONFIG_SPL_RELOC_STACK, (gd_t *)CONFIG_SPL_GD_ADDR, 0x0);
+}
+
+void board_init_r(gd_t *gd, ulong dest_addr)
+{
+       bd_t *bd;
+
+       bd = (bd_t *)(gd + sizeof(gd_t));
+       memset(bd, 0, sizeof(bd_t));
+       gd->bd = bd;
+       bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR;
+       bd->bi_memsize = CONFIG_SYS_L3_SIZE;
+
+       probecpu();
+       get_clocks();
+       mem_malloc_init(CONFIG_SPL_RELOC_MALLOC_ADDR,
+                       CONFIG_SPL_RELOC_MALLOC_SIZE);
+
+#ifdef CONFIG_SPL_NAND_BOOT
+       nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                           (uchar *)CONFIG_ENV_ADDR);
+#endif
+#ifdef CONFIG_SPL_MMC_BOOT
+       mmc_initialize(bd);
+       mmc_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                          (uchar *)CONFIG_ENV_ADDR);
+#endif
+#ifdef CONFIG_SPL_SPI_BOOT
+       spi_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                          (uchar *)CONFIG_ENV_ADDR);
+#endif
+
+       gd->env_addr  = (ulong)(CONFIG_ENV_ADDR);
+       gd->env_valid = 1;
+
+       i2c_init_all();
+
+       gd->ram_size = initdram(0);
+
+#ifdef CONFIG_SPL_MMC_BOOT
+       mmc_boot();
+#elif defined(CONFIG_SPL_SPI_BOOT)
+       spi_boot();
+#elif defined(CONFIG_SPL_NAND_BOOT)
+       nand_boot();
+#endif
+}
diff --git a/board/freescale/t102xqds/t1024_pbi.cfg b/board/freescale/t102xqds/t1024_pbi.cfg
new file mode 100644 (file)
index 0000000..7b9e9b0
--- /dev/null
@@ -0,0 +1,26 @@
+#PBI commands
+#Initialize CPC1
+09010000 00200400
+09138000 00000000
+091380c0 00000100
+#Configure CPC1 as 256KB SRAM
+09010100 00000000
+09010104 fffc0007
+09010f00 08000000
+09010000 80000000
+#Configure LAW for CPC1
+09000cd0 00000000
+09000cd4 fffc0000
+09000cd8 81000011
+#Configure alternate space
+09000010 00000000
+09000014 ff000000
+09000018 81000000
+#Configure SPI controller
+09110000 80000403
+09110020 2d170008
+09110024 00100008
+09110028 00100008
+0911002c 00100008
+#Flush PBL data
+091380c0 000FFFFF
diff --git a/board/freescale/t102xqds/t1024_rcw.cfg b/board/freescale/t102xqds/t1024_rcw.cfg
new file mode 100644 (file)
index 0000000..4b8f719
--- /dev/null
@@ -0,0 +1,10 @@
+# single-source clock:Sys_Clock = DDR_Refclock = Diff_Sysclk = 100 MHz
+# Core/DDR/Platform/FMan = 1400MHz/1600MT/s/400MHz/700MHz
+
+# PBL preamble and RCW header for T1024QDS
+aa55aa55 010e0100
+# Serdes protocol 0x6F
+0810000e 00000000 00000000 00000000
+37800001 00000012 e8104000 21000000
+00000000 00000000 00000000 00030810
+00000000 036c5a00 00000000 00000006
diff --git a/board/freescale/t102xqds/t102xqds.c b/board/freescale/t102xqds/t102xqds.c
new file mode 100644 (file)
index 0000000..f3141b5
--- /dev/null
@@ -0,0 +1,408 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <i2c.h>
+#include <netdev.h>
+#include <linux/compiler.h>
+#include <asm/mmu.h>
+#include <asm/processor.h>
+#include <asm/cache.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+#include <fm_eth.h>
+#include <hwconfig.h>
+#include <asm/mpc85xx_gpio.h>
+#include "../common/qixis.h"
+#include "t102xqds.h"
+#include "t102xqds_qixis.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int checkboard(void)
+{
+       char buf[64];
+       struct cpu_type *cpu = gd->arch.cpu;
+       static const char *const freq[] = {"100", "125", "156.25", "100.0"};
+       int clock;
+       u8 sw = QIXIS_READ(arch);
+
+       printf("Board: %sQDS, ", cpu->name);
+       printf("Sys ID: 0x%02x, Board Arch: V%d, ", QIXIS_READ(id), sw >> 4);
+       printf("Board Version: %c, boot from ", (sw & 0xf) + 'A' - 1);
+
+#ifdef CONFIG_SDCARD
+       puts("SD/MMC\n");
+#elif CONFIG_SPIFLASH
+       puts("SPI\n");
+#else
+       sw = QIXIS_READ(brdcfg[0]);
+       sw = (sw & QIXIS_LBMAP_MASK) >> QIXIS_LBMAP_SHIFT;
+
+       if (sw < 0x8)
+               printf("vBank: %d\n", sw);
+       else if (sw == 0x8)
+               puts("PromJet\n");
+       else if (sw == 0x9)
+               puts("NAND\n");
+       else if (sw == 0x15)
+               printf("IFC Card\n");
+       else
+               printf("invalid setting of SW%u\n", QIXIS_LBMAP_SWITCH);
+#endif
+
+       printf("FPGA: v%d (%s), build %d",
+              (int)QIXIS_READ(scver), qixis_read_tag(buf),
+              (int)qixis_read_minor());
+       /* the timestamp string contains "\n" at the end */
+       printf(" on %s", qixis_read_time(buf));
+
+       puts("SERDES Reference: ");
+       sw = QIXIS_READ(brdcfg[2]);
+       clock = (sw >> 6) & 3;
+       printf("Clock1=%sMHz ", freq[clock]);
+       clock = (sw >> 4) & 3;
+       printf("Clock2=%sMHz\n", freq[clock]);
+
+       return 0;
+}
+
+int select_i2c_ch_pca9547(u8 ch)
+{
+       int ret;
+
+       ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
+       if (ret) {
+               puts("PCA: failed to select proper channel\n");
+               return ret;
+       }
+
+       return 0;
+}
+
+static int board_mux_lane_to_slot(void)
+{
+       ccsr_gur_t __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 srds_prtcl_s1;
+       u8 brdcfg9;
+
+       srds_prtcl_s1 = in_be32(&gur->rcwsr[4]) &
+                               FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
+       srds_prtcl_s1 >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
+
+
+       brdcfg9 = QIXIS_READ(brdcfg[9]);
+       QIXIS_WRITE(brdcfg[9], brdcfg9 | BRDCFG9_XFI_TX_DISABLE);
+
+       switch (srds_prtcl_s1) {
+       case 0:
+               /* SerDes1 is not enabled */
+               break;
+       case 0xd5:
+       case 0x5b:
+       case 0x6b:
+       case 0x77:
+       case 0x6f:
+       case 0x7f:
+               QIXIS_WRITE(brdcfg[12], 0x8c);
+               break;
+       case 0x40:
+               QIXIS_WRITE(brdcfg[12], 0xfc);
+               break;
+       case 0xd6:
+       case 0x5a:
+       case 0x6a:
+       case 0x56:
+               QIXIS_WRITE(brdcfg[12], 0x88);
+               break;
+       case 0x47:
+               QIXIS_WRITE(brdcfg[12], 0xcc);
+               break;
+       case 0x46:
+               QIXIS_WRITE(brdcfg[12], 0xc8);
+               break;
+       case 0x95:
+       case 0x99:
+               brdcfg9 &= ~BRDCFG9_XFI_TX_DISABLE;
+               QIXIS_WRITE(brdcfg[9], brdcfg9);
+               QIXIS_WRITE(brdcfg[12], 0x8c);
+               break;
+       case 0x116:
+               QIXIS_WRITE(brdcfg[12], 0x00);
+               break;
+       case 0x115:
+       case 0x119:
+       case 0x129:
+       case 0x12b:
+               /* Aurora, PCIe, SGMII, SATA */
+               QIXIS_WRITE(brdcfg[12], 0x04);
+               break;
+       default:
+               printf("WARNING: unsupported for SerDes Protocol %d\n",
+                      srds_prtcl_s1);
+               return -1;
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_PPC_T1024
+static void board_mux_setup(void)
+{
+       u8 brdcfg15;
+
+       brdcfg15 = QIXIS_READ(brdcfg[15]);
+       brdcfg15 &= ~BRDCFG15_DIUSEL_MASK;
+
+       if (hwconfig_arg_cmp("pin_mux", "tdm")) {
+               /* Route QE_TDM multiplexed signals to TDM Riser slot */
+               QIXIS_WRITE(brdcfg[15], brdcfg15 | BRDCFG15_DIUSEL_TDM);
+               QIXIS_WRITE(brdcfg[13], BRDCFG13_TDM_INTERFACE << 2);
+               QIXIS_WRITE(brdcfg[5], (QIXIS_READ(brdcfg[5]) &
+                           ~BRDCFG5_SPIRTE_MASK) | BRDCFG5_SPIRTE_TDM);
+       } else if (hwconfig_arg_cmp("pin_mux", "ucc")) {
+               /* to UCC (ProfiBus) interface */
+               QIXIS_WRITE(brdcfg[15], brdcfg15 | BRDCFG15_DIUSEL_UCC);
+       } else if (hwconfig_arg_cmp("pin_mux", "hdmi")) {
+               /* to DVI (HDMI) encoder */
+               QIXIS_WRITE(brdcfg[15], brdcfg15 | BRDCFG15_DIUSEL_HDMI);
+       } else if (hwconfig_arg_cmp("pin_mux", "lcd")) {
+               /* to DFP (LCD) encoder */
+               QIXIS_WRITE(brdcfg[15], brdcfg15 | BRDCFG15_LCDFM |
+                           BRDCFG15_LCDPD | BRDCFG15_DIUSEL_LCD);
+       }
+
+       if (hwconfig_arg_cmp("adaptor", "sdxc"))
+               /* Route SPI_CS multiplexed signals to SD slot */
+               QIXIS_WRITE(brdcfg[5], (QIXIS_READ(brdcfg[5]) &
+                           ~BRDCFG5_SPIRTE_MASK) | BRDCFG5_SPIRTE_SDHC);
+}
+#endif
+
+void board_retimer_ds125df111_init(void)
+{
+       u8 reg;
+
+       /* Retimer DS125DF111 is connected to I2C1_CH7_CH5 */
+       reg = I2C_MUX_CH7;
+       i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &reg, 1);
+       reg = I2C_MUX_CH5;
+       i2c_write(I2C_MUX_PCA_ADDR_SEC, 0, 1, &reg, 1);
+
+       /* Access to Control/Shared register */
+       reg = 0x0;
+       i2c_write(I2C_RETIMER_ADDR, 0xff, 1, &reg, 1);
+
+       /* Read device revision and ID */
+       i2c_read(I2C_RETIMER_ADDR, 1, 1, &reg, 1);
+       debug("Retimer version id = 0x%x\n", reg);
+
+       /* Enable Broadcast */
+       reg = 0x0c;
+       i2c_write(I2C_RETIMER_ADDR, 0xff, 1, &reg, 1);
+
+       /* Reset Channel Registers */
+       i2c_read(I2C_RETIMER_ADDR, 0, 1, &reg, 1);
+       reg |= 0x4;
+       i2c_write(I2C_RETIMER_ADDR, 0, 1, &reg, 1);
+
+       /* Enable override divider select and Enable Override Output Mux */
+       i2c_read(I2C_RETIMER_ADDR, 9, 1, &reg, 1);
+       reg |= 0x24;
+       i2c_write(I2C_RETIMER_ADDR, 9, 1, &reg, 1);
+
+       /* Select VCO Divider to full rate (000) */
+       i2c_read(I2C_RETIMER_ADDR, 0x18, 1, &reg, 1);
+       reg &= 0x8f;
+       i2c_write(I2C_RETIMER_ADDR, 0x18, 1, &reg, 1);
+
+       /* Select active PFD MUX input as re-timed data (001) */
+       i2c_read(I2C_RETIMER_ADDR, 0x1e, 1, &reg, 1);
+       reg &= 0x3f;
+       reg |= 0x20;
+       i2c_write(I2C_RETIMER_ADDR, 0x1e, 1, &reg, 1);
+
+       /* Set data rate as 10.3125 Gbps */
+       reg = 0x0;
+       i2c_write(I2C_RETIMER_ADDR, 0x60, 1, &reg, 1);
+       reg = 0xb2;
+       i2c_write(I2C_RETIMER_ADDR, 0x61, 1, &reg, 1);
+       reg = 0x90;
+       i2c_write(I2C_RETIMER_ADDR, 0x62, 1, &reg, 1);
+       reg = 0xb3;
+       i2c_write(I2C_RETIMER_ADDR, 0x63, 1, &reg, 1);
+       reg = 0xcd;
+       i2c_write(I2C_RETIMER_ADDR, 0x64, 1, &reg, 1);
+}
+
+int board_early_init_r(void)
+{
+#ifdef CONFIG_SYS_FLASH_BASE
+       const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
+       int flash_esel = find_tlb_idx((void *)flashbase, 1);
+
+       /*
+        * Remap Boot flash + PROMJET region to caching-inhibited
+        * so that flash can be erased properly.
+        */
+
+       /* Flush d-cache and invalidate i-cache of any FLASH data */
+       flush_dcache();
+       invalidate_icache();
+
+       if (flash_esel == -1) {
+               /* very unlikely unless something is messed up */
+               puts("Error: Could not find TLB for FLASH BASE\n");
+               flash_esel = 2; /* give our best effort to continue */
+       } else {
+               /* invalidate existing TLB entry for flash + promjet */
+               disable_tlb(flash_esel);
+       }
+
+       set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
+               MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+               0, flash_esel, BOOKE_PAGESZ_256M, 1);
+#endif
+       set_liodns();
+#ifdef CONFIG_SYS_DPAA_QBMAN
+       setup_portals();
+#endif
+       select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
+       board_mux_lane_to_slot();
+       board_retimer_ds125df111_init();
+
+       /* Increase IO drive strength to address FCS error on RGMII */
+       out_be32((unsigned *)CONFIG_SYS_FSL_SCFG_IODSECR1_ADDR, 0xbfdb7800);
+
+       return 0;
+}
+
+unsigned long get_board_sys_clk(void)
+{
+       u8 sysclk_conf = QIXIS_READ(brdcfg[1]);
+
+       switch (sysclk_conf & 0x0F) {
+       case QIXIS_SYSCLK_64:
+               return 64000000;
+       case QIXIS_SYSCLK_83:
+               return 83333333;
+       case QIXIS_SYSCLK_100:
+               return 100000000;
+       case QIXIS_SYSCLK_125:
+               return 125000000;
+       case QIXIS_SYSCLK_133:
+               return 133333333;
+       case QIXIS_SYSCLK_150:
+               return 150000000;
+       case QIXIS_SYSCLK_160:
+               return 160000000;
+       case QIXIS_SYSCLK_166:
+               return 166666666;
+       }
+       return 66666666;
+}
+
+unsigned long get_board_ddr_clk(void)
+{
+       u8 ddrclk_conf = QIXIS_READ(brdcfg[1]);
+
+       switch ((ddrclk_conf & 0x30) >> 4) {
+       case QIXIS_DDRCLK_100:
+               return 100000000;
+       case QIXIS_DDRCLK_125:
+               return 125000000;
+       case QIXIS_DDRCLK_133:
+               return 133333333;
+       }
+       return 66666666;
+}
+
+#define NUM_SRDS_PLL   2
+int misc_init_r(void)
+{
+#ifdef CONFIG_PPC_T1024
+       board_mux_setup();
+#endif
+       return 0;
+}
+
+void fdt_fixup_spi_mux(void *blob)
+{
+       int nodeoff = 0;
+
+       if (hwconfig_arg_cmp("pin_mux", "tdm")) {
+               while ((nodeoff = fdt_node_offset_by_compatible(blob, 0,
+                       "eon,en25s64")) >= 0) {
+                       fdt_del_node(blob, nodeoff);
+               }
+       } else {
+               /* remove tdm node */
+               while ((nodeoff = fdt_node_offset_by_compatible(blob, 0,
+                       "maxim,ds26522")) >= 0) {
+                       fdt_del_node(blob, nodeoff);
+               }
+       }
+}
+
+int ft_board_setup(void *blob, bd_t *bd)
+{
+       phys_addr_t base;
+       phys_size_t size;
+
+       ft_cpu_setup(blob, bd);
+
+       base = getenv_bootm_low();
+       size = getenv_bootm_size();
+
+       fdt_fixup_memory(blob, (u64)base, (u64)size);
+
+#ifdef CONFIG_PCI
+       pci_of_setup(blob, bd);
+#endif
+
+       fdt_fixup_liodn(blob);
+
+#ifdef CONFIG_HAS_FSL_DR_USB
+       fdt_fixup_dr_usb(blob, bd);
+#endif
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+       fdt_fixup_fman_ethernet(blob);
+       fdt_fixup_board_enet(blob);
+#endif
+       fdt_fixup_spi_mux(blob);
+
+       return 0;
+}
+
+void qixis_dump_switch(void)
+{
+       int i, nr_of_cfgsw;
+
+       QIXIS_WRITE(cms[0], 0x00);
+       nr_of_cfgsw = QIXIS_READ(cms[1]);
+
+       puts("DIP switch settings dump:\n");
+       for (i = 1; i <= nr_of_cfgsw; i++) {
+               QIXIS_WRITE(cms[0], i);
+               printf("SW%d = (0x%02x)\n", i, QIXIS_READ(cms[1]));
+       }
+}
+
+#ifdef CONFIG_DEEP_SLEEP
+void board_mem_sleep_setup(void)
+{
+       /* does not provide HW signals for power management */
+       QIXIS_WRITE(pwr_ctl[1], (QIXIS_READ(pwr_ctl[1]) & ~0x2));
+       /* Disable MCKE isolation */
+       gpio_set_value(2, 0);
+       udelay(1);
+}
+#endif
diff --git a/board/freescale/t102xqds/t102xqds.h b/board/freescale/t102xqds/t102xqds.h
new file mode 100644 (file)
index 0000000..64ff623
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __T102x_QDS_H__
+#define __T102x_QDS_H__
+
+void fdt_fixup_board_enet(void *blob);
+void pci_of_setup(void *blob, bd_t *bd);
+int select_i2c_ch_pca9547(u8 ch);
+
+#endif
diff --git a/board/freescale/t102xqds/t102xqds_qixis.h b/board/freescale/t102xqds/t102xqds_qixis.h
new file mode 100644 (file)
index 0000000..a429fb7
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __T1024QDS_QIXIS_H__
+#define __T1024QDS_QIXIS_H__
+
+/* Definitions of QIXIS Registers for T1024/T1023 QDS */
+
+/* BRDCFG4[4:7]] select EC1 and EC2 as a pair */
+#define BRDCFG4_EMISEL_MASK            0xE0
+#define BRDCFG4_EMISEL_SHIFT           5
+
+/* BRDCFG5[0:1] controls routing and use of I2C3 & I2C4 ports*/
+#define BRDCFG5_IMX_MASK               0xC0
+#define BRDCFG5_IMX_DIU                        0x80
+
+#define BRDCFG5_SPIRTE_MASK            0x07
+#define BRDCFG5_SPIRTE_TDM             0x01
+#define BRDCFG5_SPIRTE_SDHC            0x02
+#define BRDCFG9_XFI_TX_DISABLE         0x10
+
+/* BRDCFG13[0:5] TDM configuration and setup */
+#define BRDCFG13_TDM_MASK              0xfc
+#define BRDCFG13_TDM_INTERFACE         0x37
+#define BRDCFG13_HDLC_LOOPBACK         0x29
+#define BRDCFG13_TDM_LOOPBACK          0x31
+
+/* BRDCFG15[3] controls LCD Panel Powerdown */
+#define BRDCFG15_LCDFM                 0x20
+#define BRDCFG15_LCDPD                 0x10
+#define BRDCFG15_LCDPD_MASK            0x10
+#define BRDCFG15_LCDPD_ENABLED         0x00
+
+/* BRDCFG15[6:7] controls DIU MUX selction*/
+#define BRDCFG15_DIUSEL_MASK           0x03
+#define BRDCFG15_DIUSEL_HDMI           0x00
+#define BRDCFG15_DIUSEL_LCD            0x01
+#define BRDCFG15_DIUSEL_UCC            0x02
+#define BRDCFG15_DIUSEL_TDM            0x03
+
+/* SYSCLK */
+#define QIXIS_SYSCLK_66                        0x0
+#define QIXIS_SYSCLK_83                        0x1
+#define QIXIS_SYSCLK_100               0x2
+#define QIXIS_SYSCLK_125               0x3
+#define QIXIS_SYSCLK_133               0x4
+#define QIXIS_SYSCLK_150               0x5
+#define QIXIS_SYSCLK_160               0x6
+#define QIXIS_SYSCLK_166               0x7
+#define QIXIS_SYSCLK_64                        0x8
+
+/* DDRCLK */
+#define QIXIS_DDRCLK_66                        0x0
+#define QIXIS_DDRCLK_100               0x1
+#define QIXIS_DDRCLK_125               0x2
+#define QIXIS_DDRCLK_133               0x3
+
+
+#define QIXIS_SRDS1CLK_122             0x5a
+#define QIXIS_SRDS1CLK_125             0x5e
+#endif
diff --git a/board/freescale/t102xqds/tlb.c b/board/freescale/t102xqds/tlb.c
new file mode 100644 (file)
index 0000000..409e173
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/mmu.h>
+
+struct fsl_e_tlb_entry tlb_table[] = {
+       /* TLB 0 - for temp stack in cache */
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 4 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 8 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 12 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+
+       /* TLB 1 */
+       /* *I*** - Covers boot page */
+#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L3_ADDR)
+       /*
+        * *I*G - L3SRAM. When L3 is used as 256K SRAM, the address of the
+        * SRAM is at 0xfffc0000, it covered the 0xfffff000.
+        */
+       SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_ADDR, CONFIG_SYS_INIT_L3_ADDR,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 0, BOOKE_PAGESZ_256K, 1),
+#else
+       SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 0, BOOKE_PAGESZ_4K, 1),
+#endif
+
+       /* *I*G* - CCSRBAR */
+       SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 1, BOOKE_PAGESZ_16M, 1),
+
+       /* *I*G* - Flash, localbus */
+       /* This will be changed to *I*G* after relocation to RAM. */
+       SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
+                     MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
+                     0, 2, BOOKE_PAGESZ_256M, 1),
+
+#ifndef CONFIG_SPL_BUILD
+       /* *I*G* - PCI */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 3, BOOKE_PAGESZ_1G, 1),
+
+       /* *I*G* - PCI I/O */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 4, BOOKE_PAGESZ_256K, 1),
+
+       /* Bman/Qman */
+#ifdef CONFIG_SYS_BMAN_MEM_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE, CONFIG_SYS_BMAN_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 5, BOOKE_PAGESZ_16M, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE + 0x01000000,
+                     CONFIG_SYS_BMAN_MEM_PHYS + 0x01000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 6, BOOKE_PAGESZ_16M, 1),
+#endif
+#ifdef CONFIG_SYS_QMAN_MEM_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE, CONFIG_SYS_QMAN_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 7, BOOKE_PAGESZ_16M, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE + 0x01000000,
+                     CONFIG_SYS_QMAN_MEM_PHYS + 0x01000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 8, BOOKE_PAGESZ_16M, 1),
+#endif
+#endif
+#ifdef CONFIG_SYS_DCSRBAR_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_DCSRBAR, CONFIG_SYS_DCSRBAR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 9, BOOKE_PAGESZ_4M, 1),
+#endif
+#ifdef CONFIG_SYS_NAND_BASE
+       SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 10, BOOKE_PAGESZ_64K, 1),
+#endif
+#ifdef QIXIS_BASE
+       SET_TLB_ENTRY(1, QIXIS_BASE, QIXIS_BASE_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 11, BOOKE_PAGESZ_4K, 1),
+#endif
+
+#if defined(CONFIG_RAMBOOT_PBL) && !defined(CONFIG_SPL_BUILD)
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 12, BOOKE_PAGESZ_1G, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
+                     CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 13, BOOKE_PAGESZ_1G, 1)
+#endif
+       /* entry 14 and 15 has been used hard coded, they will be disabled
+        * in cpu_init_f, so if needed more, will use entry 16 later.
+        */
+};
+
+int num_tlb_entries = ARRAY_SIZE(tlb_table);
diff --git a/board/freescale/t102xrdb/Kconfig b/board/freescale/t102xrdb/Kconfig
new file mode 100644 (file)
index 0000000..10d49f5
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_T102XRDB
+
+config SYS_BOARD
+       default "t102xrdb"
+
+config SYS_VENDOR
+       default "freescale"
+
+config SYS_CONFIG_NAME
+       default "T102xRDB"
+
+endif
diff --git a/board/freescale/t102xrdb/MAINTAINERS b/board/freescale/t102xrdb/MAINTAINERS
new file mode 100644 (file)
index 0000000..dc554d4
--- /dev/null
@@ -0,0 +1,10 @@
+T102XRDB BOARD
+M:     Shengzhou Liu  <Shengzhou.Liu@freescale.com>
+S:     Maintained
+F:     board/freescale/t102xrdb/
+F:     include/configs/T102xRDB.h
+F:     configs/T1024RDB_defconfig
+F:     configs/T1024RDB_NAND_defconfig
+F:     configs/T1024RDB_SDCARD_defconfig
+F:     configs/T1024RDB_SPIFLASH_defconfig
+F:     configs/T1024RDB_SECURE_BOOT_defconfig
diff --git a/board/freescale/t102xrdb/Makefile b/board/freescale/t102xrdb/Makefile
new file mode 100644 (file)
index 0000000..a0cf8f6
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright 2014 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:      GPL-2.0+
+#
+
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
+obj-y   += t102xrdb.o
+obj-y   += cpld.o
+obj-y   += eth_t102xrdb.o
+obj-$(CONFIG_PCI)       += pci.o
+endif
+obj-y   += ddr.o
+obj-y   += law.o
+obj-y   += tlb.o
diff --git a/board/freescale/t102xrdb/README b/board/freescale/t102xrdb/README
new file mode 100644 (file)
index 0000000..2b17f50
--- /dev/null
@@ -0,0 +1,258 @@
+T1024 SoC Overview
+------------------
+The T1024/T1023 dual core and T1014/T1013 single core QorIQ communication processor
+combines two or one 64-bit Power Architecture e5500 core respectively with high
+performance datapath acceleration logic, and network peripheral bus interfaces
+required for networking and telecommunications. This processor can be used in
+applications such as enterprise WLAN access points, routers, switches, firewall
+and other packet processing intensive small enterprise and branch office appliances,
+and general-purpose embedded computing. Its high level of integration offers
+significant performance benefits and greatly helps to simplify board design.
+
+
+The T1024 SoC includes the following function and features:
+- two e5500 cores, each with a private 256 KB L2 cache
+  - Up to 1.4 GHz with 64-bit ISA support (Power Architecture v2.06-compliant)
+  - Three levels of instructions: User, supervisor, and hypervisor
+  - Independent boot and reset
+  - Secure boot capability
+- 256 KB shared L3 CoreNet platform cache (CPC)
+- Interconnect CoreNet platform
+  - CoreNet coherency manager supporting coherent and noncoherent transactions
+    with prioritization and bandwidth allocation amongst CoreNet endpoints
+  - 150 Gbps coherent read bandwidth
+- 32-/64-bit DDR3L/DDR4 SDRAM memory controller with ECC and interleaving support
+- Data Path Acceleration Architecture (DPAA) incorporating acceleration for the following functions:
+  - Packet parsing, classification, and distribution
+  - Queue management for scheduling, packet sequencing, and congestion management
+  - Cryptography Acceleration (SEC 5.x)
+  - IEEE 1588 support
+  - Hardware buffer management for buffer allocation and deallocation
+  - MACSEC on DPAA-based Ethernet ports
+- Ethernet interfaces
+  - Four 1 Gbps Ethernet controllers
+- Parallel Ethernet interfaces
+  - Two RGMII interfaces
+- High speed peripheral interfaces
+  - Three PCI Express 2.0 controllers/ports running at up to 5 GHz
+  - One SATA controller supporting 1.5 and 3.0 Gb/s operation
+  - One QSGMII interface
+  - Four SGMII interface supporting 1000 Mbps
+  - Three SGMII interfaces supporting up to 2500 Mbps
+  - 10GbE XFI or 10Base-KR interface
+- Additional peripheral interfaces
+  - Two USB 2.0 controllers with integrated PHY
+  - SD/eSDHC/eMMC
+  - eSPI controller
+  - Four I2C controllers
+  - Four UARTs
+  - Four GPIO controllers
+  - Integrated flash controller (IFC)
+  - LCD interface (DIU) with 12 bit dual data rate
+- Multicore programmable interrupt controller (PIC)
+- Two 8-channel DMA engines
+- Single source clocking implementation
+- Deep Sleep power implementaion (wakeup from GPIO/Timer/Ethernet/USB)
+- QUICC Engine block
+  - 32-bit RISC controller for flexible support of the communications peripherals
+  - Serial DMA channel for receive and transmit on all serial channels
+  - Two universal communication controllers, supporting TDM, HDLC, and UART
+
+T1023 Personality
+------------------
+T1023 is a reduced personality of T1024 without QUICC Engine, DIU, and
+unavailable deep sleep. Rest of the blocks are almost same as T1024.
+Differences between T1024 and T1023
+Feature                T1024  T1023
+QUICC Engine:  yes    no
+DIU:           yes    no
+Deep Sleep:    yes    no
+I2C controller: 4      3
+DDR:           64-bit 32-bit
+IFC:           32-bit 28-bit
+
+
+T1024RDB board Overview
+-----------------------
+ - Ethernet
+     - Two on-board 10M/100M/1G bps RGMII ethernet ports
+     - One on-board 10G bps Base-T port.
+ - DDR Memory
+     - Supports 64-bit 4GB DDR3L DIMM
+ - PCIe
+     - One on-board PCIe slot.
+     - Two on-board PCIe Mini-PCIe connectors.
+ - IFC/Local Bus
+     - NOR:  128MB 16-bit NOR Flash
+     - NAND: 1GB 8-bit NAND flash
+     - CPLD: for system controlling with programable header on-board
+ - USB
+     - Supports two USB 2.0 ports with integrated PHYs
+     - Two type A ports with 5V@1.5A per port.
+ - SDHC
+     - one SD connector supporting 1.8V/3.3V via J53.
+ - SPI
+     -  On-board 64MB SPI flash
+ - Other
+     - Two Serial ports
+     - Four I2C ports
+
+
+Memory map on T1024RDB
+----------------------
+Start Address  End Address      Description                    Size
+0xF_FFDF_0000  0xF_FFDF_0FFF    IFC - CPLD                     4KB
+0xF_FF80_0000  0xF_FF80_FFFF    IFC - NAND Flash               64KB
+0xF_FE00_0000  0xF_FEFF_FFFF    CCSRBAR                                16MB
+0xF_F802_0000  0xF_F802_FFFF    PCI Express 3 I/O Space                64KB
+0xF_F801_0000  0xF_F801_FFFF    PCI Express 2 I/O Space                64KB
+0xF_F800_0000  0xF_F800_FFFF    PCI Express 1 I/O Space                64KB
+0xF_F600_0000  0xF_F7FF_FFFF    Queue manager software portal   32MB
+0xF_F400_0000  0xF_F5FF_FFFF    Buffer manager software portal  32MB
+0xF_E800_0000  0xF_EFFF_FFFF    IFC - NOR Flash                        128MB
+0xF_0000_0000  0xF_003F_FFFF    DCSR                           4MB
+0xC_2000_0000  0xC_2FFF_FFFF    PCI Express 3 Mem Space                256MB
+0xC_1000_0000  0xC_1FFF_FFFF    PCI Express 2 Mem Space                256MB
+0xC_0000_0000  0xC_0FFF_FFFF    PCI Express 1 Mem Space                256MB
+0x0_0000_0000  0x0_ffff_ffff    DDR                            4GB
+
+
+128MB NOR Flash memory Map
+--------------------------
+Start Address   End Address     Definition                     Max size
+0xEFF40000      0xEFFFFFFF      u-boot (current bank)          768KB
+0xEFF20000      0xEFF3FFFF      u-boot env (current bank)      128KB
+0xEFF00000      0xEFF1FFFF      FMAN Ucode (current bank)      128KB
+0xEFE00000      0xEFE3FFFF      QE firmware (current bank)     256KB
+0xED300000      0xEFEFFFFF      rootfs (alt bank)              44MB
+0xEC800000      0xEC8FFFFF      Hardware device tree (alt bank) 1MB
+0xEC020000      0xEC7FFFFF      Linux.uImage (alt bank)                7MB + 875KB
+0xEC000000      0xEC01FFFF      RCW (alt bank)                 128KB
+0xEBF40000      0xEBFFFFFF      u-boot (alt bank)              768KB
+0xEBF20000      0xEBF3FFFF      u-boot env (alt bank)          128KB
+0xEBF00000      0xEBF1FFFF      FMAN ucode (alt bank)          128KB
+0xEBE00000      0xEBE3FFFF      QE firmware (alt bank)         256KB
+0xE9300000      0xEBEFFFFF      rootfs (current bank)          44MB
+0xE8800000      0xE88FFFFF      Hardware device tree (cur bank) 1MB
+0xE8020000      0xE86FFFFF      Linux.uImage (current bank)    7MB + 875KB
+0xE8000000      0xE801FFFF      RCW (current bank)             128KB
+
+
+T1024 Clock frequency
+---------------------
+BIN   Core     DDR       Platform  FMan
+Bin1: 1400MHz  1600MT/s  400MHz    700MHz
+Bin2: 1200MHz  1600MT/s  400MHz    600MHz
+Bin3: 1000MHz  1600MT/s  400MHz    500MHz
+
+
+Software configurations and board settings
+------------------------------------------
+1. NOR boot:
+   a. build NOR boot image
+       $  make T1024RDB_defconfig
+       $  make
+   b. program u-boot.bin image to NOR flash
+       => tftp 1000000 u-boot.bin
+       => pro off all;era eff40000 efffffff;cp.b 1000000 eff40000 $filesize
+       set SW1[1:8] = '00010011', SW2[1] = '1', SW3[4] = '0' for NOR boot
+
+   Switching between default bank0 and alternate bank4 on NOR flash
+   To change boot source to vbank4:
+        via software:   run command 'cpld reset altbank' in u-boot.
+        via DIP-switch: set SW3[5:7] = '100'
+
+   To change boot source to vbank0:
+        via software:   run command 'cpld reset' in u-boot.
+        via DIP-Switch: set SW3[5:7] = '000'
+
+2. NAND Boot:
+   a. build PBL image for NAND boot
+       $ make T1024RDB_NAND_defconfig
+       $ make
+   b. program u-boot-with-spl-pbl.bin to NAND flash
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => nand erase 0 $filesize
+       => nand write 1000000 0 $filesize
+       set SW1[1:8] = '10001000', SW2[1] = '1', SW3[4] = '1' for NAND boot
+
+3. SPI Boot:
+   a. build PBL image for SPI boot
+       $ make T1024RDB_SPIFLASH_defconfig
+       $ make
+   b. program u-boot-with-spl-pbl.bin to SPI flash
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => sf probe 0
+       => sf erase 0 f0000
+       => sf write 1000000 0 $filesize
+       set SW1[1:8] = '00100010', SW2[1] ='1' for SPI boot
+
+4. SD Boot:
+   a. build PBL image for SD boot
+       $ make T1024RDB_SDCARD_defconfig
+       $ make
+   b. program u-boot-with-spl-pbl.bin to SD/MMC card
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => mmc write 1000000 8 0x800
+       => tftp 1000000 fsl_fman_ucode_t1024_xx.bin
+       => mmc write 1000000 0x820 80
+       set SW1[1:8] = '00100000', SW2[1] = '0' for SD boot
+
+
+2-stage NAND/SPI/SD boot loader
+-------------------------------
+PBL initializes the internal CPC-SRAM and copy SPL(160K) to SRAM.
+SPL further initializes DDR using SPD and environment variables
+and copy u-boot(768 KB) from NAND/SPI/SD device to DDR.
+Finally SPL transers control to u-boot for futher booting.
+
+SPL has following features:
+ - Executes within 256K
+ - No relocation required
+
+Run time view of SPL framework
+-------------------------------------------------
+|Area             | Address                    |
+-------------------------------------------------
+|SecureBoot header | 0xFFFC0000 (32KB)         |
+-------------------------------------------------
+|GD, BD                   | 0xFFFC8000 (4KB)           |
+-------------------------------------------------
+|ENV              | 0xFFFC9000 (8KB)           |
+-------------------------------------------------
+|HEAP             | 0xFFFCB000 (30KB)          |
+-------------------------------------------------
+|STACK            | 0xFFFD8000 (22KB)          |
+-------------------------------------------------
+|U-boot SPL       | 0xFFFD8000 (160KB)         |
+-------------------------------------------------
+
+NAND Flash memory Map on T1024RDB
+-------------------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot          1MB(2 block)
+0x100000       0x17FFFF        u-boot env      512KB(1 block)
+0x180000       0x1FFFFF        FMAN Ucode      512KB(1 block)
+0x200000       0x27FFFF        QE Firmware     512KB(1 block)
+
+
+SD Card memory Map on T1024RDB
+----------------------------------------------------
+Block          #blocks         Definition      Size
+0x008          2048            u-boot img      1MB
+0x800          0016            u-boot env      8KB
+0x820          0256            FMAN Ucode      128KB
+0x920          0256            QE Firmware     128KB
+
+
+SPI Flash memory Map on T1024RDB
+----------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot img      1MB
+0x100000       0x101FFF        u-boot env      8KB
+0x110000       0x12FFFF        FMAN Ucode      128KB
+0x130000       0x14FFFF        QE Firmware     128KB
+
+
+For more details, please refer to T1024RDB Reference Manual and access
+website www.freescale.com and Freescale QorIQ SDK Infocenter document.
diff --git a/board/freescale/t102xrdb/cpld.c b/board/freescale/t102xrdb/cpld.c
new file mode 100644 (file)
index 0000000..c03894a
--- /dev/null
@@ -0,0 +1,103 @@
+/**
+ * Copyright 2014 Freescale Semiconductor
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Freescale T1024RDB board-specific CPLD controlling supports.
+ *
+ * The following macros need to be defined:
+ */
+
+#include <common.h>
+#include <command.h>
+#include <asm/io.h>
+#include "cpld.h"
+
+u8 cpld_read(unsigned int reg)
+{
+       void *p = (void *)CONFIG_SYS_CPLD_BASE;
+
+       return in_8(p + reg);
+}
+
+void cpld_write(unsigned int reg, u8 value)
+{
+       void *p = (void *)CONFIG_SYS_CPLD_BASE;
+
+       out_8(p + reg, value);
+}
+
+/**
+ * Set the boot bank to the alternate bank
+ */
+void cpld_set_altbank(void)
+{
+       u8 reg = CPLD_READ(flash_csr);
+
+       reg = (reg & ~CPLD_BANK_SEL_MASK) | CPLD_LBMAP_ALTBANK;
+
+       CPLD_WRITE(flash_csr, reg);
+       CPLD_WRITE(reset_ctl1, CPLD_LBMAP_RESET);
+}
+
+/**
+ * Set the boot bank to the default bank
+ */
+void cpld_set_defbank(void)
+{
+       u8 reg = CPLD_READ(flash_csr);
+
+       reg = (reg & ~CPLD_BANK_SEL_MASK) | CPLD_LBMAP_DFLTBANK;
+
+       CPLD_WRITE(flash_csr, reg);
+       CPLD_WRITE(reset_ctl1, CPLD_LBMAP_RESET);
+}
+
+static void cpld_dump_regs(void)
+{
+       printf("cpld_ver         = 0x%02x\n", CPLD_READ(cpld_ver));
+       printf("cpld_ver_sub     = 0x%02x\n", CPLD_READ(cpld_ver_sub));
+       printf("hw_ver           = 0x%02x\n", CPLD_READ(hw_ver));
+       printf("sw_ver           = 0x%02x\n", CPLD_READ(sw_ver));
+       printf("reset_ctl1       = 0x%02x\n", CPLD_READ(reset_ctl1));
+       printf("reset_ctl2       = 0x%02x\n", CPLD_READ(reset_ctl2));
+       printf("int_status       = 0x%02x\n", CPLD_READ(int_status));
+       printf("flash_csr        = 0x%02x\n", CPLD_READ(flash_csr));
+       printf("fan_ctl_status   = 0x%02x\n", CPLD_READ(fan_ctl_status));
+       printf("led_ctl_status   = 0x%02x\n", CPLD_READ(led_ctl_status));
+       printf("sfp_ctl_status   = 0x%02x\n", CPLD_READ(sfp_ctl_status));
+       printf("misc_ctl_status  = 0x%02x\n", CPLD_READ(misc_ctl_status));
+       printf("boot_override    = 0x%02x\n", CPLD_READ(boot_override));
+       printf("boot_config1     = 0x%02x\n", CPLD_READ(boot_config1));
+       printf("boot_config2     = 0x%02x\n", CPLD_READ(boot_config2));
+       putc('\n');
+}
+
+int do_cpld(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       int rc = 0;
+
+       if (argc <= 1)
+               return cmd_usage(cmdtp);
+
+       if (strcmp(argv[1], "reset") == 0) {
+               if (strcmp(argv[2], "altbank") == 0)
+                       cpld_set_altbank();
+               else
+                       cpld_set_defbank();
+       } else if (strcmp(argv[1], "dump") == 0) {
+               cpld_dump_regs();
+       } else {
+               rc = cmd_usage(cmdtp);
+       }
+
+       return rc;
+}
+
+U_BOOT_CMD(
+       cpld, CONFIG_SYS_MAXARGS, 1, do_cpld,
+       "Reset the board or alternate bank",
+       "reset - hard reset to default bank\n"
+       "cpld reset altbank - reset to alternate bank\n"
+       "cpld dump - display the CPLD registers\n"
+       );
diff --git a/board/freescale/t102xrdb/cpld.h b/board/freescale/t102xrdb/cpld.h
new file mode 100644 (file)
index 0000000..5a3100f
--- /dev/null
@@ -0,0 +1,45 @@
+/**
+ * Copyright 2014 Freescale Semiconductor
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ */
+
+struct cpld_data {
+       u8 cpld_ver;            /* 0x00 - CPLD Major Revision Register */
+       u8 cpld_ver_sub;        /* 0x01 - CPLD Minor Revision Register */
+       u8 hw_ver;              /* 0x02 - Hardware Revision Register */
+       u8 sw_ver;              /* 0x03 - Software Revision register */
+       u8 res0[12];            /* 0x04 - 0x0F - not used */
+       u8 reset_ctl1;          /* 0x10 - Reset control Register1 */
+       u8 reset_ctl2;          /* 0x11 - Reset control Register2 */
+       u8 int_status;          /* 0x12 - Interrupt status Register */
+       u8 flash_csr;           /* 0x13 - Flash control and status register */
+       u8 fan_ctl_status;      /* 0x14 - Fan control and status register  */
+       u8 led_ctl_status;      /* 0x15 - LED control and status register */
+       u8 sfp_ctl_status;      /* 0x16 - SFP control and status register  */
+       u8 misc_ctl_status;     /* 0x17 - Miscellanies ctrl & status register*/
+       u8 boot_override;       /* 0x18 - Boot override register */
+       u8 boot_config1;        /* 0x19 - Boot config override register*/
+       u8 boot_config2;        /* 0x1A - Boot config override register*/
+} cpld_data_t;
+
+
+/* Pointer to the CPLD register set */
+
+u8 cpld_read(unsigned int reg);
+void cpld_write(unsigned int reg, u8 value);
+
+#define CPLD_READ(reg) cpld_read(offsetof(struct cpld_data, reg))
+#define CPLD_WRITE(reg, value)\
+               cpld_write(offsetof(struct cpld_data, reg), value)
+
+/* CPLD on IFC */
+#define CPLD_LBMAP_MASK         0x3F
+#define CPLD_BANK_SEL_MASK      0x07
+#define CPLD_BANK_OVERRIDE      0x40
+#define CPLD_LBMAP_ALTBANK      0x44 /* BANK OR | BANK 4 */
+#define CPLD_LBMAP_DFLTBANK     0x40 /* BANK OR | BANK 0 */
+#define CPLD_LBMAP_RESET       0xFF
+#define CPLD_LBMAP_SHIFT       0x03
+#define CPLD_BOOT_SEL     0x80
diff --git a/board/freescale/t102xrdb/ddr.c b/board/freescale/t102xrdb/ddr.c
new file mode 100644 (file)
index 0000000..a20330b
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <hwconfig.h>
+#include <asm/mmu.h>
+#include <fsl_ddr_sdram.h>
+#include <fsl_ddr_dimm_params.h>
+#include <asm/fsl_law.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct board_specific_parameters {
+       u32 n_ranks;
+       u32 datarate_mhz_high;
+       u32 rank_gb;
+       u32 clk_adjust;
+       u32 wrlvl_start;
+       u32 wrlvl_ctl_2;
+       u32 wrlvl_ctl_3;
+};
+
+/*
+ * datarate_mhz_high values need to be in ascending order
+ */
+static const struct board_specific_parameters udimm0[] = {
+       /*
+        * memory controller 0
+        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl |
+        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |
+        */
+       {2,  833,   0,  4,  6,  0x06060607,  0x08080807,},
+       {2,  1350,  0,  4,  7,  0x0708080A,  0x0A0B0C09,},
+       {2,  1666,  0,  4,  7,  0x0808090B,  0x0C0D0E0A,},
+       {1,  833,   0,  4,  6,  0x06060607,  0x08080807,},
+       {1,  1350,  0,  4,  7,  0x0708080A,  0x0A0B0C09,},
+       {1,  1666,  0,  4,  7,  0x0808090B,  0x0C0D0E0A,},
+       {}
+};
+
+static const struct board_specific_parameters *udimms[] = {
+       udimm0,
+};
+
+void fsl_ddr_board_options(memctl_options_t *popts,
+                          dimm_params_t *pdimm,
+                          unsigned int ctrl_num)
+{
+       const struct board_specific_parameters *pbsp, *pbsp_highest = NULL;
+       ulong ddr_freq;
+       struct cpu_type *cpu = gd->arch.cpu;
+
+       if (ctrl_num > 1) {
+               printf("Not supported controller number %d\n", ctrl_num);
+               return;
+       }
+       if (!pdimm->n_ranks)
+               return;
+
+       pbsp = udimms[0];
+
+       /* Get clk_adjust according to the board ddr freqency and n_banks
+        * specified in board_specific_parameters table.
+        */
+       ddr_freq = get_ddr_freq(0) / 1000000;
+       while (pbsp->datarate_mhz_high) {
+               if (pbsp->n_ranks == pdimm->n_ranks &&
+                   (pdimm->rank_density >> 30) >= pbsp->rank_gb) {
+                       if (ddr_freq <= pbsp->datarate_mhz_high) {
+                               popts->clk_adjust = pbsp->clk_adjust;
+                               popts->wrlvl_start = pbsp->wrlvl_start;
+                               popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
+                               popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
+                               goto found;
+                       }
+                       pbsp_highest = pbsp;
+               }
+               pbsp++;
+       }
+
+       if (pbsp_highest) {
+               printf("Error: board specific timing not found\n");
+               printf("for data rate %lu MT/s\n", ddr_freq);
+               printf("Trying to use the highest speed (%u) parameters\n",
+                      pbsp_highest->datarate_mhz_high);
+               popts->clk_adjust = pbsp_highest->clk_adjust;
+               popts->wrlvl_start = pbsp_highest->wrlvl_start;
+               popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
+               popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
+       } else {
+               panic("DIMM is not supported by this board");
+       }
+found:
+       debug("Found timing match: n_ranks %d, data rate %d, rank_gb %d\n",
+             pbsp->n_ranks, pbsp->datarate_mhz_high, pbsp->rank_gb);
+       debug("\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x, ",
+             pbsp->clk_adjust, pbsp->wrlvl_start, pbsp->wrlvl_ctl_2);
+       debug("wrlvl_ctrl_3 0x%x\n", pbsp->wrlvl_ctl_3);
+
+       /*
+        * Factors to consider for half-strength driver enable:
+        *      - number of DIMMs installed
+        */
+       popts->half_strength_driver_enable = 0;
+       /*
+        * Write leveling override
+        */
+       popts->wrlvl_override = 1;
+       popts->wrlvl_sample = 0xf;
+
+       /*
+        * rtt and rtt_wr override
+        */
+       popts->rtt_override = 0;
+
+       /* Enable ZQ calibration */
+       popts->zq_en = 1;
+
+       /* DHC_EN =1, ODT = 75 Ohm */
+       popts->ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_OFF);
+       popts->ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_OFF);
+
+       /* T1023 supports max DDR bus 32bit width, T1024 supports DDR 64bit,
+        * force DDR bus width to 32bit for T1023
+        */
+       if (cpu->soc_ver == SVR_T1023)
+               popts->data_bus_width = DDR_DATA_BUS_WIDTH_32;
+
+#ifdef CONFIG_FORCE_DDR_DATA_BUS_WIDTH_32
+       /* for DDR bus 32bit test on T1024 */
+       popts->data_bus_width = DDR_DATA_BUS_WIDTH_32;
+#endif
+}
+
+phys_size_t initdram(int board_type)
+{
+       phys_size_t dram_size;
+
+#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_RAMBOOT_PBL)
+       puts("Initializing....using SPD\n");
+
+       dram_size = fsl_ddr_sdram();
+       dram_size = setup_ddr_tlbs(dram_size / 0x100000);
+       dram_size *= 0x100000;
+#else
+       /* DDR has been initialised by first stage boot loader */
+       dram_size =  fsl_ddr_sdram_size();
+#endif
+       return dram_size;
+}
diff --git a/board/freescale/t102xrdb/eth_t102xrdb.c b/board/freescale/t102xrdb/eth_t102xrdb.c
new file mode 100644 (file)
index 0000000..2e400c4
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <netdev.h>
+#include <asm/mmu.h>
+#include <asm/processor.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+#include <malloc.h>
+#include <fm_eth.h>
+#include <fsl_mdio.h>
+#include <miiphy.h>
+#include <phy.h>
+#include <asm/fsl_dtsec.h>
+#include <asm/fsl_serdes.h>
+
+int board_eth_init(bd_t *bis)
+{
+#if defined(CONFIG_FMAN_ENET)
+       int i, interface;
+       struct memac_mdio_info dtsec_mdio_info;
+       struct memac_mdio_info tgec_mdio_info;
+       struct mii_dev *dev;
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 srds_s1;
+
+       srds_s1 = in_be32(&gur->rcwsr[4]) &
+                                       FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
+       srds_s1 >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
+
+       dtsec_mdio_info.regs =
+               (struct memac_mdio_controller *)CONFIG_SYS_FM1_DTSEC_MDIO_ADDR;
+
+       dtsec_mdio_info.name = DEFAULT_FM_MDIO_NAME;
+
+       /* Register the 1G MDIO bus */
+       fm_memac_mdio_init(bis, &dtsec_mdio_info);
+
+       tgec_mdio_info.regs =
+               (struct memac_mdio_controller *)CONFIG_SYS_FM1_TGEC_MDIO_ADDR;
+       tgec_mdio_info.name = DEFAULT_FM_TGEC_MDIO_NAME;
+
+       /* Register the 10G MDIO bus */
+       fm_memac_mdio_init(bis, &tgec_mdio_info);
+
+       /* Set the two on-board RGMII PHY address */
+       fm_info_set_phy_address(FM1_DTSEC3, RGMII_PHY2_ADDR);
+       fm_info_set_phy_address(FM1_DTSEC4, RGMII_PHY1_ADDR);
+
+       switch (srds_s1) {
+       case 0x95:
+               /* 10G XFI with Aquantia PHY */
+               fm_info_set_phy_address(FM1_10GEC1, FM1_10GEC1_PHY_ADDR);
+               break;
+       default:
+               printf("SerDes protocol 0x%x is not supported on T102xRDB\n",
+                      srds_s1);
+               break;
+       }
+
+       for (i = FM1_DTSEC1; i < FM1_DTSEC1 + CONFIG_SYS_NUM_FM1_DTSEC; i++) {
+               interface = fm_info_get_enet_if(i);
+               switch (interface) {
+               case PHY_INTERFACE_MODE_RGMII:
+                       dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME);
+                       fm_info_set_mdio(i, dev);
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       for (i = FM1_10GEC1; i < FM1_10GEC1 + CONFIG_SYS_NUM_FM1_10GEC; i++) {
+               switch (fm_info_get_enet_if(i)) {
+               case PHY_INTERFACE_MODE_XGMII:
+                       dev = miiphy_get_dev_by_name(DEFAULT_FM_TGEC_MDIO_NAME);
+                       fm_info_set_mdio(i, dev);
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       cpu_eth_init(bis);
+#endif /* CONFIG_FMAN_ENET */
+
+       return pci_eth_init(bis);
+}
+
+void fdt_fixup_board_enet(void *fdt)
+{
+}
diff --git a/board/freescale/t102xrdb/law.c b/board/freescale/t102xrdb/law.c
new file mode 100644 (file)
index 0000000..1c9235f
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_law.h>
+#include <asm/mmu.h>
+
+struct law_entry law_table[] = {
+#ifndef CONFIG_SYS_NO_FLASH
+       SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_256M, LAW_TRGT_IF_IFC),
+#endif
+#ifdef CONFIG_SYS_BMAN_MEM_PHYS
+       SET_LAW(CONFIG_SYS_BMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_BMAN),
+#endif
+#ifdef CONFIG_SYS_QMAN_MEM_PHYS
+       SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_QMAN),
+#endif
+#ifdef CONFIG_SYS_CPLD_BASE_PHYS
+       SET_LAW(CONFIG_SYS_CPLD_BASE_PHYS, LAW_SIZE_4K, LAW_TRGT_IF_IFC),
+#endif
+#ifdef CONFIG_SYS_DCSRBAR_PHYS
+       SET_LAW(CONFIG_SYS_DCSRBAR_PHYS, LAW_SIZE_4M, LAW_TRGT_IF_DCSR),
+#endif
+#ifdef CONFIG_SYS_NAND_BASE_PHYS
+       SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_IFC),
+#endif
+};
+
+int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/freescale/t102xrdb/pci.c b/board/freescale/t102xrdb/pci.c
new file mode 100644 (file)
index 0000000..ba7041a
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2007-2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <pci.h>
+#include <asm/fsl_pci.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <asm/fsl_serdes.h>
+
+void pci_init_board(void)
+{
+       fsl_pcie_init_board(0);
+}
+
+void pci_of_setup(void *blob, bd_t *bd)
+{
+       FT_FSL_PCI_SETUP;
+}
diff --git a/board/freescale/t102xrdb/spl.c b/board/freescale/t102xrdb/spl.c
new file mode 100644 (file)
index 0000000..dd2dec4
--- /dev/null
@@ -0,0 +1,107 @@
+/* Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <ns16550.h>
+#include <nand.h>
+#include <i2c.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <spi_flash.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+phys_size_t get_effective_memsize(void)
+{
+       return CONFIG_SYS_L3_SIZE;
+}
+
+unsigned long get_board_sys_clk(void)
+{
+       return CONFIG_SYS_CLK_FREQ;
+}
+
+unsigned long get_board_ddr_clk(void)
+{
+       return CONFIG_DDR_CLK_FREQ;
+}
+
+void board_init_f(ulong bootflag)
+{
+       u32 plat_ratio, sys_clk, ccb_clk;
+       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
+
+       /* Memcpy existing GD at CONFIG_SPL_GD_ADDR */
+       memcpy((void *)CONFIG_SPL_GD_ADDR, (void *)gd, sizeof(gd_t));
+
+       /* Update GD pointer */
+       gd = (gd_t *)(CONFIG_SPL_GD_ADDR);
+
+       console_init_f();
+
+       /* initialize selected port with appropriate baud rate */
+       sys_clk = get_board_sys_clk();
+       plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
+       ccb_clk = sys_clk * plat_ratio / 2;
+
+       NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+                    ccb_clk / 16 / CONFIG_BAUDRATE);
+
+#if defined(CONFIG_SPL_MMC_BOOT)
+       puts("\nSD boot...\n");
+#elif defined(CONFIG_SPL_SPI_BOOT)
+       puts("\nSPI boot...\n");
+#elif defined(CONFIG_SPL_NAND_BOOT)
+       puts("\nNAND boot...\n");
+#endif
+
+       relocate_code(CONFIG_SPL_RELOC_STACK, (gd_t *)CONFIG_SPL_GD_ADDR, 0x0);
+}
+
+void board_init_r(gd_t *gd, ulong dest_addr)
+{
+       bd_t *bd;
+
+       bd = (bd_t *)(gd + sizeof(gd_t));
+       memset(bd, 0, sizeof(bd_t));
+       gd->bd = bd;
+       bd->bi_memstart = CONFIG_SYS_INIT_L3_ADDR;
+       bd->bi_memsize = CONFIG_SYS_L3_SIZE;
+
+       probecpu();
+       get_clocks();
+       mem_malloc_init(CONFIG_SPL_RELOC_MALLOC_ADDR,
+                       CONFIG_SPL_RELOC_MALLOC_SIZE);
+
+#ifdef CONFIG_SPL_NAND_BOOT
+       nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                           (uchar *)CONFIG_ENV_ADDR);
+#endif
+#ifdef CONFIG_SPL_MMC_BOOT
+       mmc_initialize(bd);
+       mmc_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                          (uchar *)CONFIG_ENV_ADDR);
+#endif
+#ifdef CONFIG_SPL_SPI_BOOT
+       spi_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                          (uchar *)CONFIG_ENV_ADDR);
+#endif
+
+       gd->env_addr  = (ulong)(CONFIG_ENV_ADDR);
+       gd->env_valid = 1;
+
+       i2c_init_all();
+
+       gd->ram_size = initdram(0);
+
+#ifdef CONFIG_SPL_MMC_BOOT
+       mmc_boot();
+#elif defined(CONFIG_SPL_SPI_BOOT)
+       spi_boot();
+#elif defined(CONFIG_SPL_NAND_BOOT)
+       nand_boot();
+#endif
+}
diff --git a/board/freescale/t102xrdb/t1024_pbi.cfg b/board/freescale/t102xrdb/t1024_pbi.cfg
new file mode 100644 (file)
index 0000000..7b9e9b0
--- /dev/null
@@ -0,0 +1,26 @@
+#PBI commands
+#Initialize CPC1
+09010000 00200400
+09138000 00000000
+091380c0 00000100
+#Configure CPC1 as 256KB SRAM
+09010100 00000000
+09010104 fffc0007
+09010f00 08000000
+09010000 80000000
+#Configure LAW for CPC1
+09000cd0 00000000
+09000cd4 fffc0000
+09000cd8 81000011
+#Configure alternate space
+09000010 00000000
+09000014 ff000000
+09000018 81000000
+#Configure SPI controller
+09110000 80000403
+09110020 2d170008
+09110024 00100008
+09110028 00100008
+0911002c 00100008
+#Flush PBL data
+091380c0 000FFFFF
diff --git a/board/freescale/t102xrdb/t1024_rcw.cfg b/board/freescale/t102xrdb/t1024_rcw.cfg
new file mode 100644 (file)
index 0000000..cd6f906
--- /dev/null
@@ -0,0 +1,8 @@
+#PBL preamble and RCW header for T1024RDB
+aa55aa55 010e0100
+#SerDes Protocol: 0x95
+#Core/DDR: 1400Mhz/1600MT/s with single source clock
+0810000c 00000000 00000000 00000000
+4a800003 80000012 ec027000 21000000
+00000000 00000000 00000000 00030810
+00000000 0b005a08 00000000 00000006
diff --git a/board/freescale/t102xrdb/t102xrdb.c b/board/freescale/t102xrdb/t102xrdb.c
new file mode 100644 (file)
index 0000000..f5c438d
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <i2c.h>
+#include <netdev.h>
+#include <linux/compiler.h>
+#include <asm/mmu.h>
+#include <asm/processor.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+#include <asm/mpc85xx_gpio.h>
+#include <fm_eth.h>
+#include "t102xrdb.h"
+#include "cpld.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int checkboard(void)
+{
+       struct cpu_type *cpu = gd->arch.cpu;
+       static const char *freq[3] = {"100.00MHZ", "125.00MHz", "156.25MHZ"};
+
+       printf("Board: %sRDB, ", cpu->name);
+       printf("Board rev: 0x%02x CPLD ver: 0x%02x, boot from ",
+              CPLD_READ(hw_ver), CPLD_READ(sw_ver));
+
+#ifdef CONFIG_SDCARD
+       puts("SD/MMC\n");
+#elif CONFIG_SPIFLASH
+       puts("SPI\n");
+#else
+       u8 reg;
+
+       reg = CPLD_READ(flash_csr);
+
+       if (reg & CPLD_BOOT_SEL) {
+               puts("NAND\n");
+       } else {
+               reg = ((reg & CPLD_LBMAP_MASK) >> CPLD_LBMAP_SHIFT);
+               printf("NOR vBank%d\n", reg);
+       }
+#endif
+
+       puts("SERDES Reference Clocks:\n");
+       printf("SD1_CLK1=%s, SD1_CLK2=%s\n", freq[2], freq[0]);
+
+       return 0;
+}
+
+int board_early_init_r(void)
+{
+#ifdef CONFIG_SYS_FLASH_BASE
+       const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
+       int flash_esel = find_tlb_idx((void *)flashbase, 1);
+       /*
+        * Remap Boot flash region to caching-inhibited
+        * so that flash can be erased properly.
+        */
+
+       /* Flush d-cache and invalidate i-cache of any FLASH data */
+       flush_dcache();
+       invalidate_icache();
+       if (flash_esel == -1) {
+               /* very unlikely unless something is messed up */
+               puts("Error: Could not find TLB for FLASH BASE\n");
+               flash_esel = 2; /* give our best effort to continue */
+       } else {
+               /* invalidate existing TLB entry for flash + promjet */
+               disable_tlb(flash_esel);
+       }
+
+       set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
+               MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+               0, flash_esel, BOOKE_PAGESZ_256M, 1);
+#endif
+
+       set_liodns();
+#ifdef CONFIG_SYS_DPAA_QBMAN
+       setup_portals();
+#endif
+
+       return 0;
+}
+
+unsigned long get_board_sys_clk(void)
+{
+       return CONFIG_SYS_CLK_FREQ;
+}
+
+unsigned long get_board_ddr_clk(void)
+{
+       return CONFIG_DDR_CLK_FREQ;
+}
+
+int misc_init_r(void)
+{
+       return 0;
+}
+
+int ft_board_setup(void *blob, bd_t *bd)
+{
+       phys_addr_t base;
+       phys_size_t size;
+
+       ft_cpu_setup(blob, bd);
+
+       base = getenv_bootm_low();
+       size = getenv_bootm_size();
+
+       fdt_fixup_memory(blob, (u64)base, (u64)size);
+
+#ifdef CONFIG_PCI
+       pci_of_setup(blob, bd);
+#endif
+
+       fdt_fixup_liodn(blob);
+       fdt_fixup_dr_usb(blob, bd);
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+       fdt_fixup_fman_ethernet(blob);
+       fdt_fixup_board_enet(blob);
+#endif
+
+       return 0;
+}
+
+#ifdef CONFIG_DEEP_SLEEP
+void board_mem_sleep_setup(void)
+{
+       /* does not provide HW signals for power management */
+       CPLD_WRITE(misc_ctl_status, (CPLD_READ(misc_ctl_status) & ~0x40));
+       /* Disable MCKE isolation */
+       gpio_set_value(2, 0);
+       udelay(1);
+}
+#endif
diff --git a/board/freescale/t102xrdb/t102xrdb.h b/board/freescale/t102xrdb/t102xrdb.h
new file mode 100644 (file)
index 0000000..2f23579
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __T1024_RDB_H__
+#define __T1024_RDB_H__
+
+void fdt_fixup_board_enet(void *blob);
+void pci_of_setup(void *blob, bd_t *bd);
+
+#endif
diff --git a/board/freescale/t102xrdb/tlb.c b/board/freescale/t102xrdb/tlb.c
new file mode 100644 (file)
index 0000000..8269b3d
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/mmu.h>
+
+struct fsl_e_tlb_entry tlb_table[] = {
+       /* TLB 0 - for temp stack in cache */
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 4 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 8 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 12 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+
+       /* TLB 1 */
+       /* *I*** - Covers boot page */
+#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L3_ADDR)
+       /*
+        * *I*G - L3SRAM. When L3 is used as 256K SRAM, the address of the
+        * SRAM is at 0xfffc0000, it covered the 0xfffff000.
+        */
+       SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_ADDR, CONFIG_SYS_INIT_L3_ADDR,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 0, BOOKE_PAGESZ_256K, 1),
+#else
+       SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 0, BOOKE_PAGESZ_4K, 1),
+#endif
+
+       /* *I*G* - CCSRBAR */
+       SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 1, BOOKE_PAGESZ_16M, 1),
+
+       /* *I*G* - Flash, localbus */
+       /* This will be changed to *I*G* after relocation to RAM. */
+       SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
+                     MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
+                     0, 2, BOOKE_PAGESZ_256M, 1),
+
+#ifndef CONFIG_SPL_BUILD
+       /* *I*G* - PCI */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 3, BOOKE_PAGESZ_1G, 1),
+
+       /* *I*G* - PCI I/O */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 4, BOOKE_PAGESZ_256K, 1),
+
+       /* Bman/Qman */
+#ifdef CONFIG_SYS_BMAN_MEM_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE, CONFIG_SYS_BMAN_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 5, BOOKE_PAGESZ_16M, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE + 0x01000000,
+                     CONFIG_SYS_BMAN_MEM_PHYS + 0x01000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 6, BOOKE_PAGESZ_16M, 1),
+#endif
+#ifdef CONFIG_SYS_QMAN_MEM_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE, CONFIG_SYS_QMAN_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 7, BOOKE_PAGESZ_16M, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE + 0x01000000,
+                     CONFIG_SYS_QMAN_MEM_PHYS + 0x01000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 8, BOOKE_PAGESZ_16M, 1),
+#endif
+#endif
+#ifdef CONFIG_SYS_DCSRBAR_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_DCSRBAR, CONFIG_SYS_DCSRBAR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 9, BOOKE_PAGESZ_4M, 1),
+#endif
+#ifdef CONFIG_SYS_NAND_BASE
+       SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 10, BOOKE_PAGESZ_64K, 1),
+#endif
+#ifdef CONFIG_SYS_CPLD_BASE
+       SET_TLB_ENTRY(1, CONFIG_SYS_CPLD_BASE, CONFIG_SYS_CPLD_BASE_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 11, BOOKE_PAGESZ_256K, 1),
+#endif
+
+#if defined(CONFIG_RAMBOOT_PBL) && !defined(CONFIG_SPL_BUILD)
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 12, BOOKE_PAGESZ_1G, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
+                     CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 13, BOOKE_PAGESZ_1G, 1)
+#endif
+       /* entry 14 and 15 has been used hard coded, they will be disabled
+        * in cpu_init_f, so if needed more, will use entry 16 later.
+        */
+};
+
+int num_tlb_entries = ARRAY_SIZE(tlb_table);
index 19af46e48fdb1ba15a7d828cf40fdd49eb577f28..13285be42cf394a3b711e24a79cf8df969319286 100644 (file)
@@ -233,7 +233,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -259,6 +259,8 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
 
 void qixis_dump_switch(void)
index 2c331eebf9e60710b0dddd6bf58dd0a9df2190bb..5aa11b12a46ec44619b6a0598a6929b9e6b9b29a 100644 (file)
@@ -11,6 +11,7 @@
 #include <fsl_ddr_sdram.h>
 #include <fsl_ddr_dimm_params.h>
 #include <asm/fsl_law.h>
+#include <asm/mpc85xx_gpio.h>
 #include "ddr.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -109,6 +110,19 @@ found:
        popts->ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_75ohm);
 }
 
+#if defined(CONFIG_DEEP_SLEEP)
+void board_mem_sleep_setup(void)
+{
+       void __iomem *cpld_base = (void *)CONFIG_SYS_CPLD_BASE;
+
+       /* does not provide HW signals for power management */
+       clrbits_8(cpld_base + 0x17, 0x40);
+       /* Disable MCKE isolation */
+       gpio_set_value(2, 0);
+       udelay(1);
+}
+#endif
+
 phys_size_t initdram(int board_type)
 {
        phys_size_t dram_size;
@@ -124,5 +138,10 @@ phys_size_t initdram(int board_type)
 #else
        dram_size =  fsl_ddr_sdram_size();
 #endif
+
+#if defined(CONFIG_DEEP_SLEEP) && !defined(CONFIG_SPL_BUILD)
+       fsl_dp_resume();
+#endif
+
        return dram_size;
 }
index 3822a377384df220301b5c6ad224c46633090b3f..4e8735b9ff19fb0112f799be3452657f54bf128b 100644 (file)
@@ -11,7 +11,7 @@
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <spi_flash.h>
-#include <asm/mpc85xx_gpio.h>
+#include "../common/sleep.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -34,20 +34,26 @@ unsigned long get_board_ddr_clk(void)
 void board_init_f(ulong bootflag)
 {
        u32 plat_ratio, sys_clk, uart_clk;
-#ifdef CONFIG_SPL_NAND_BOOT
+#if defined(CONFIG_SPL_NAND_BOOT) && defined(CONFIG_A008044_WORKAROUND)
        u32 porsr1, pinctl;
+       u32 svr = get_svr();
 #endif
        ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
 
-#ifdef CONFIG_SPL_NAND_BOOT
-       /*
-        * There is T1040 SoC issue where NOR, FPGA are inaccessible during
-        * NAND boot because IFC signals > IFC_AD7 are not enabled.
-        * This workaround changes RCW source to make all signals enabled.
-        */
-       porsr1 = in_be32(&gur->porsr1);
-       pinctl = ((porsr1 & ~(FSL_CORENET_CCSR_PORSR1_RCW_MASK)) | 0x24800000);
-       out_be32((unsigned int *)(CONFIG_SYS_DCSRBAR + 0x20000), pinctl);
+#if defined(CONFIG_SPL_NAND_BOOT) && defined(CONFIG_A008044_WORKAROUND)
+       if (IS_SVR_REV(svr, 1, 0)) {
+               /*
+                * There is T1040 SoC issue where NOR, FPGA are inaccessible
+                * during NAND boot because IFC signals > IFC_AD7 are not
+                * enabled. This workaround changes RCW source to make all
+                * signals enabled.
+                */
+               porsr1 = in_be32(&gur->porsr1);
+               pinctl = ((porsr1 & ~(FSL_CORENET_CCSR_PORSR1_RCW_MASK))
+                         | 0x24800000);
+               out_be32((unsigned int *)(CONFIG_SYS_DCSRBAR + 0x20000),
+                        pinctl);
+       }
 #endif
 
        /* Memcpy existing GD at CONFIG_SPL_GD_ADDR */
@@ -58,8 +64,8 @@ void board_init_f(ulong bootflag)
 
 #ifdef CONFIG_DEEP_SLEEP
        /* disable the console if boot from deep sleep */
-       if (in_be32(&gur->scrtsr[0]) & (1 << 3))
-               gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
+       if (is_warm_boot())
+               fsl_dp_disable_console();
 #endif
        /* compiler optimization barrier needed for GCC >= 3.4 */
        __asm__ __volatile__("" : : : "memory");
@@ -126,16 +132,3 @@ void board_init_r(gd_t *gd, ulong dest_addr)
        nand_boot();
 #endif
 }
-
-#ifdef CONFIG_DEEP_SLEEP
-void board_mem_sleep_setup(void)
-{
-       void __iomem *cpld_base = (void *)CONFIG_SYS_CPLD_BASE;
-
-       /* does not provide HW signals for power management */
-       clrbits_8(cpld_base + 0x17, 0x40);
-       /* Disable MCKE isolation */
-       gpio_set_value(2, 0);
-       udelay(1);
-}
-#endif
index 7b9e9b05f7000c3a3bd77a484ddd3e5777359d3a..b83b9b7a4593bc8f1f7a2da86a56a52c786a568b 100644 (file)
@@ -1,4 +1,14 @@
 #PBI commands
+#Software Workaround for errata A-007662 to train PCIe2 controller in Gen2 speed
+09250100 00000400
+09250108 00002000
+#Software Workaround for errata A-008007 to reset PVR register
+09000010 0000000b
+09000014 c0000000
+09000018 81d00017
+89020400 a1000000
+091380c0 000f0000
+89020400 00000000
 #Initialize CPC1
 09010000 00200400
 09138000 00000000
index ddb669fb06c9b8b5e982863477395f9eb971571a..9cd5e157c483bac3d00673f2931c22b4b76a0de3 100644 (file)
@@ -17,8 +17,7 @@
 #include <asm/fsl_portals.h>
 #include <asm/fsl_liodn.h>
 #include <fm_eth.h>
-#include <asm/mpc85xx_gpio.h>
-
+#include "../common/sleep.h"
 #include "t104xrdb.h"
 #include "cpld.h"
 
@@ -44,6 +43,16 @@ int checkboard(void)
        return 0;
 }
 
+int board_early_init_f(void)
+{
+#if defined(CONFIG_DEEP_SLEEP)
+       if (is_warm_boot())
+               fsl_dp_disable_console();
+#endif
+
+       return 0;
+}
+
 int board_early_init_r(void)
 {
 #ifdef CONFIG_SYS_FLASH_BASE
@@ -85,7 +94,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -110,15 +119,6 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_SYS_DPAA_FMAN
        fdt_fixup_fman_ethernet(blob);
 #endif
-}
 
-#ifdef CONFIG_DEEP_SLEEP
-void board_mem_sleep_setup(void)
-{
-       /* does not provide HW signals for power management */
-       CPLD_WRITE(misc_ctl_status, (CPLD_READ(misc_ctl_status) & ~0x40));
-       /* Disable MCKE isolation */
-       gpio_set_value(2, 0);
-       udelay(1);
+       return 0;
 }
-#endif
diff --git a/board/freescale/t208xqds/README b/board/freescale/t208xqds/README
new file mode 100755 (executable)
index 0000000..83060c1
--- /dev/null
@@ -0,0 +1,274 @@
+The T2080QDS is a high-performance computing evaluation, development and
+test platform supporting the T2080 QorIQ Power Architecture processor.
+
+T2080 SoC Overview
+------------------
+The T2080 QorIQ multicore processor combines four dual-threaded e6500 Power
+Architecture processor cores with high-performance datapath acceleration
+logic and network and peripheral bus interfaces required for networking,
+telecom/datacom, wireless infrastructure, and mil/aerospace applications.
+
+T2080 includes the following functions and features:
+ - Four dual-threads 64-bit Power architecture e6500 cores, up to 1.8GHz
+ - 2MB L2 cache and 512KB CoreNet platform cache (CPC)
+ - Hierarchical interconnect fabric
+ - One 32-/64-bit DDR3/3L SDRAM memory controllers with ECC and interleaving
+ - Data Path Acceleration Architecture (DPAA) incorporating acceleration
+ - 16 SerDes lanes up to 10.3125 GHz
+ - 8 Ethernet interfaces, supporting combinations of the following:
+   - Up to four 10 Gbps Ethernet MACs
+   - Up to eight 1 Gbps Ethernet MACs
+   - Up to four 2.5 Gbps Ethernet MACs
+ - High-speed peripheral interfaces
+   - Four PCI Express controllers (two PCIe 2.0 and two PCIe 3.0 with SR-IOV)
+   - Two Serial RapidIO 2.0 controllers/ports running at up to 5 GHz
+ - Additional peripheral interfaces
+   - Two serial ATA (SATA 2.0) controllers
+   - Two high-speed USB 2.0 controllers with integrated PHY
+   - Enhanced secure digital host controller (SD/SDHC/SDXC/eMMC)
+   - Enhanced serial peripheral interface (eSPI)
+   - Four I2C controllers
+   - Four 2-pin UARTs or two 4-pin UARTs
+   - Integrated Flash Controller supporting NAND and NOR flash
+ - Three eight-channel DMA engines
+ - Support for hardware virtualization and partitioning enforcement
+ - QorIQ Platform's Trust Architecture 2.0
+
+Differences between T2080 and T2081
+-----------------------------------
+  Feature              T2080    T2081
+  1G Ethernet numbers:  8       6
+  10G Ethernet numbers: 4       2
+  SerDes lanes:                16       8
+  Serial RapidIO,RMan:  2       no
+  SATA Controller:     2        no
+  Aurora:              yes      no
+  SoC Package:         896-pins 780-pins
+
+
+T2080QDS feature overview
+-------------------------
+Processor:
+ - T2080 SoC integrating four 64-bit dual-threads e6500 cores up to 1.8GHz
+Memory:
+ - Single memory controller capable of supporting DDR3 and DDR3-LV devices
+ - Two DDR3 DIMMs up to 4GB, Dual rank @ 2133MT/s and ECC support
+Ethernet interfaces:
+ - Two 1Gbps RGMII on-board ports
+ - Four 10Gbps XFI on-board cages
+ - 1Gbps/2.5Gbps SGMII Riser card
+ - 10Gbps XAUI Riser card
+Accelerator:
+ - DPAA components consist of FMan, BMan, QMan, PME, DCE and SEC
+SerDes:
+ - 16 lanes up to 10.3125GHz
+ - Supports Aurora debug, PEX, SATA, SGMII, sRIO, HiGig, XFI and XAUI
+IFC:
+ - 128MB NOR Flash, 512MB NAND Flash, PromJet debug port and FPGA
+eSPI:
+ - Three SPI flash (16MB N25Q128A + 16MB EN25S64 + 512KB SST25WF040)
+USB:
+ - Two USB2.0 ports with internal PHY (one Type-A + one micro Type-AB)
+PCIE:
+ - Four PCI Express controllers (two PCIe 2.0 and two PCIe 3.0 with SR-IOV)
+SATA:
+ - Two SATA 2.0 ports on-board
+SRIO:
+ - Two Serial RapidIO 2.0 ports up to 5 GHz
+eSDHC:
+ - Supports SD/SDHC/SDXC/eMMC Card
+I2C:
+ - Four I2C controllers.
+UART:
+ - Dual 4-pins UART serial ports
+System Logic:
+ - QIXIS-II FPGA system controll
+Debug Features:
+ - Support Legacy, COP/JTAG, Aurora, Event and EVT
+XFI:
+ - XFI is supported on T2080QDS through Lane A/B/C/D on Serdes 1 routed to
+ a on-board SFP+ cages, which to house optical module (fiber cable) or
+ direct attach cable(copper), the copper cable is used to emulate
+ 10GBASE-KR scenario.
+ So, for XFI usage, there are two scenarios, one will use fiber cable,
+ another will use copper cable. An hwconfig env "fsl_10gkr_copper" is
+ introduced to indicate a XFI port will use copper cable, and U-boot
+ will fixup the dtb accordingly.
+ It's used as: fsl_10gkr_copper:<10g_mac_name>
+ The <10g_mac_name> can be fm1_10g1, fm1_10g2, fm1_10g3, fm1_10g4, they
+ do not have to be coexist in hwconfig. If a MAC is listed in the env
+ "fsl_10gkr_copper", it will use copper cable, otherwise, fiber cable
+ will be used by default.
+ for ex. set "fsl_10gkr_copper:fm1_10g1,fm1_10g2,fm1_10g3,fm1_10g4" in
+ hwconfig, then both four XFI ports will use copper cable.
+ set "fsl_10gkr_copper:fm1_10g1,fm1_10g2" in hwconfig, then first two
+ XFI ports will use copper cable, the other two XFI ports will use fiber
+ cable.
+1000BASE-KX(1G-KX):
+ - T2080QDS can support 1G-KX by using SGMII protocol, but serdes lane
+ runs in 1G-KX mode. By default, the lane runs in SGMII mode, to set a lane
+ in 1G-KX mode, need to set corresponding bit in SerDes Protocol Configuration
+ Register 1 (PCCR1), and U-boot fixup the dtb for kernel to do proper
+ initialization.
+ Hwconfig "fsl_1gkx" is used to indicate a lane runs in 1G-KX mode, MAC
+ 1/2/5/6/9/10 are available for 1G-KX, MAC 3/4 run in RGMII mode. To set a
+ MAC to use 1G-KX mode, set its' corresponding env in "fsl_1gkx", 'fm1_1g1'
+ stands for MAC 1, 'fm1_1g2' stands for MAC 2, etc.
+ For ex. set "fsl_1gkx:fm1_1g1,fm1_1g2,fm1_1g5,fm1_1g6,fm1_1g9,fm1_1g10" in
+ hwconfig, MAC 1/2/5/6/9/10 will use 1G-KX mode.
+
+System Memory map
+----------------
+
+Start Address  End Address      Description                    Size
+0xF_FFDF_0000  0xF_FFDF_0FFF    IFC - CPLD                     4KB
+0xF_FF80_0000  0xF_FF80_FFFF    IFC - NAND Flash               64KB
+0xF_FE00_0000  0xF_FEFF_FFFF    CCSRBAR                                16MB
+0xF_F803_0000  0xF_F803_FFFF    PCI Express 4 I/O Space                64KB
+0xF_F802_0000  0xF_F802_FFFF    PCI Express 3 I/O Space                64KB
+0xF_F801_0000  0xF_F801_FFFF    PCI Express 2 I/O Space                64KB
+0xF_F800_0000  0xF_F800_FFFF    PCI Express 1 I/O Space                64KB
+0xF_F600_0000  0xF_F7FF_FFFF    Queue manager software portal  32MB
+0xF_F400_0000  0xF_F5FF_FFFF    Buffer manager software portal 32MB
+0xF_E800_0000  0xF_EFFF_FFFF    IFC - NOR Flash                        128MB
+0xF_0000_0000  0xF_003F_FFFF    DCSR                           4MB
+0xC_4000_0000  0xC_4FFF_FFFF    PCI Express 4 Mem Space                256MB
+0xC_3000_0000  0xC_3FFF_FFFF    PCI Express 3 Mem Space                256MB
+0xC_2000_0000  0xC_2FFF_FFFF    PCI Express 2 Mem Space                256MB
+0xC_0000_0000  0xC_1FFF_FFFF    PCI Express 1 Mem Space                512MB
+0x0_0000_0000  0x0_ffff_ffff    DDR                            4GB
+
+
+128M NOR Flash memory Map
+-------------------------
+Start Address   End Address    Definition                      Max size
+0xEFF40000     0xEFFFFFFF      u-boot (current bank)           768KB
+0xEFF20000     0xEFF3FFFF      u-boot env (current bank)       128KB
+0xEFF00000     0xEFF1FFFF      FMAN Ucode (current bank)       128KB
+0xED300000     0xEFEFFFFF      rootfs (alt bank)               44MB
+0xEC800000     0xEC8FFFFF      Hardware device tree (alt bank) 1MB
+0xEC020000     0xEC7FFFFF      Linux.uImage (alt bank)         7MB + 875KB
+0xEC000000     0xEC01FFFF      RCW (alt bank)                  128KB
+0xEBF40000     0xEBFFFFFF      u-boot (alt bank)               768KB
+0xEBF20000     0xEBF3FFFF      u-boot env (alt bank)           128KB
+0xEBF00000     0xEBF1FFFF      FMAN ucode (alt bank)           128KB
+0xE9300000     0xEBEFFFFF      rootfs (current bank)           44MB
+0xE8800000     0xE88FFFFF      Hardware device tree (cur bank) 1MB
+0xE8020000     0xE86FFFFF      Linux.uImage (current bank)     7MB + 875KB
+0xE8000000     0xE801FFFF      RCW (current bank)              128KB
+
+
+
+Software configurations and board settings
+------------------------------------------
+1. NOR boot:
+   a. build NOR boot image
+       $  make T2080QDS_config
+       $  make
+   b. program u-boot.bin image to NOR flash
+       => tftp 1000000 u-boot.bin
+       => pro off all;era eff40000 efffffff;cp.b 1000000 eff40000 $filesize
+       set SW1[1:8] = '00010011', SW2[1] = '1', SW6[1:4] = '0000' for NOR boot
+
+   Switching between default bank0 and alternate bank4 on NOR flash
+   To change boot source to vbank4:
+       by software:   run command 'qixis_reset altbank' in u-boot.
+       by DIP-switch: set SW6[1:4] = '0100'
+
+   To change boot source to vbank0:
+       by software:   run command 'qixis_reset' in u-boot.
+       by DIP-Switch: set SW6[1:4] = '0000'
+
+2. NAND Boot:
+   a. build PBL image for NAND boot
+       $ make T2080QDS_NAND_config
+       $ make
+   b. program u-boot-with-spl-pbl.bin to NAND flash
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => nand erase 0 $filesize
+       => nand write 1000000 0 $filesize
+       set SW1[1:8] = '10000010', SW2[1] = '0' and SW6[1:4] = '1001' for NAND boot
+
+3. SPI Boot:
+   a. build PBL image for SPI boot
+       $ make T2080QDS_SPIFLASH_config
+       $ make
+   b. program u-boot-with-spl-pbl.bin to SPI flash
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => sf probe 0
+       => sf erase 0 f0000
+       => sf write 1000000 0 $filesize
+       set SW1[1:8] = '00100010', SW2[1] ='1' for SPI boot
+
+4. SD Boot:
+   a. build PBL image for SD boot
+       $ make T2080QDS_SDCARD_config
+       $ make
+   b. program u-boot-with-spl-pbl.bin to SD/MMC card
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => mmc write 1000000 8 0x800
+       => tftp 1000000 fsl_fman_ucode_T2080_xx.bin
+       => mmc write 1000000 0x820 80
+       set SW1[1:8] = '00100000', SW2[1] = '0' for SD boot
+
+
+2-stage NAND/SPI/SD boot loader
+-------------------------------
+PBL initializes the internal CPC-SRAM and copy SPL(160K) to SRAM.
+SPL further initializes DDR using SPD and environment variables
+and copy u-boot(768 KB) from NAND/SPI/SD device to DDR.
+Finally SPL transers control to u-boot for futher booting.
+
+SPL has following features:
+ - Executes within 256K
+ - No relocation required
+
+Run time view of SPL framework
+-------------------------------------------------
+|Area             | Address                    |
+-------------------------------------------------
+|SecureBoot header | 0xFFFC0000 (32KB)         |
+-------------------------------------------------
+|GD, BD                   | 0xFFFC8000 (4KB)           |
+-------------------------------------------------
+|ENV              | 0xFFFC9000 (8KB)           |
+-------------------------------------------------
+|HEAP             | 0xFFFCB000 (50KB)          |
+-------------------------------------------------
+|STACK            | 0xFFFD8000 (22KB)          |
+-------------------------------------------------
+|U-boot SPL       | 0xFFFD8000 (160KB)         |
+-------------------------------------------------
+
+NAND Flash memory Map on T2080QDS
+--------------------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot img      1MB  (2 blocks)
+0x100000       0x17FFFF        u-boot env      512KB (1 block)
+0x180000       0x1FFFFF        FMAN ucode      512KB (1 block)
+
+
+Micro SD Card memory Map on T2080QDS
+----------------------------------------------------
+Block          #blocks         Definition      Size
+0x008          2048            u-boot img      1MB
+0x800          0016            u-boot env      8KB
+0x820          0128            FMAN ucode      64KB
+
+
+SPI Flash memory Map on T2080QDS
+----------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot img      1MB
+0x100000       0x101FFF        u-boot env      8KB
+0x110000       0x11FFFF        FMAN ucode      64KB
+
+
+How to update the ucode of Freescale FMAN
+-----------------------------------------
+=> tftp 1000000 fsl_fman_ucode_t2080_xx.bin
+=> pro off all;erase 0xeff00000 0xeff1ffff;cp 1000000 0xeff00000 $filesize
+
+
+For more details, please refer to T2080QDS User Guide and access
+website www.freescale.com and Freescale QorIQ SDK Infocenter document.
index ed52fef621d9bcfaeea6a54687397f45c5707f3d..9c26fdf3bd65450f14daa830b5d26a8eaed5c008 100644 (file)
@@ -28,17 +28,16 @@ static const struct board_specific_parameters udimm0[] = {
         *   num|  hi| rank|  clk| wrlvl | wrlvl | wrlvl |
         * ranks| mhz| GB  |adjst| start | ctl2  | ctl3  |
         */
-       {2,  1200,  0,  5,  7,  0x0808090a,  0x0b0c0c0a},
-       {2,  1500,  0,  5,  6,  0x07070809,  0x0a0b0b09},
-       {2,  1600,  0,  5,  8,  0x090b0b0d,  0x0d0e0f0b},
-       {2,  1700,  0,  4,  7,  0x080a0a0c,  0x0c0d0e0a},
-       {2,  1900,  0,  5,  9,  0x0a0b0c0e,  0x0f10120c},
-       {2,  2140,  0,  4,  8,  0x090a0b0d,  0x0e0f110b},
+       {2,  1200,  0,  5,  7,  0x0708090a,  0x0b0c0d09},
+       {2,  1400,  0,  5,  7,  0x08090a0c,  0x0d0e0f0a},
+       {2,  1700,  0,  5,  8,  0x090a0b0c,  0x0e10110c},
+       {2,  1900,  0,  5,  8,  0x090b0c0f,  0x1012130d},
+       {2,  2140,  0,  5,  8,  0x090b0c0f,  0x1012130d},
        {1,  1200,  0,  5,  7,  0x0808090a,  0x0b0c0c0a},
        {1,  1500,  0,  5,  6,  0x07070809,  0x0a0b0b09},
        {1,  1600,  0,  5,  8,  0x090b0b0d,  0x0d0e0f0b},
-       {1,  1700,  0,  4,  7,  0x080a0a0c,  0x0c0d0e0a},
-       {1,  1900,  0,  5,  9,  0x0a0b0c0e,  0x0f10120c},
+       {1,  1700,  0,  4,  8,  0x080a0a0c,  0x0c0d0e0a},
+       {1,  1900,  0,  5,  8,  0x090a0c0d,  0x0e0f110c},
        {1,  2140,  0,  4,  8,  0x090a0b0d,  0x0e0f110b},
        {}
 };
index 5879198e4d34181e43ab3f2ca1838ac839c21b3f..b82e9e7540208e49da8311805b563850d5b0e44d 100644 (file)
@@ -23,6 +23,7 @@
 #include <phy.h>
 #include <asm/fsl_dtsec.h>
 #include <asm/fsl_serdes.h>
+#include <hwconfig.h>
 #include "../common/qixis.h"
 #include "../common/fman.h"
 #include "t208xqds_qixis.h"
 #define EMI2           8
 #endif
 
+#define PCCR1_SGMIIA_KX_MASK           0x00008000
+#define PCCR1_SGMIIB_KX_MASK           0x00004000
+#define PCCR1_SGMIIC_KX_MASK           0x00002000
+#define PCCR1_SGMIID_KX_MASK           0x00001000
+#define PCCR1_SGMIIE_KX_MASK           0x00000800
+#define PCCR1_SGMIIF_KX_MASK           0x00000400
+#define PCCR1_SGMIIG_KX_MASK           0x00000200
+#define PCCR1_SGMIIH_KX_MASK           0x00000100
+
 static int mdio_mux[NUM_FM_PORTS];
 
 static const char * const mdio_names[] = {
@@ -187,8 +197,18 @@ void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
 {
        int phy;
        char alias[20];
+       char lane_mode[2][20] = {"1000BASE-KX", "10GBASE-KR"};
+       char buf[32] = "serdes-1,";
        struct fixed_link f_link;
+       int media_type = 0;
+       int off;
+
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+#ifdef CONFIG_T2080QDS
+       serdes_corenet_t *srds_regs =
+               (void *)CONFIG_SYS_FSL_CORENET_SERDES_ADDR;
+       u32 srds1_pccr1 = in_be32(&srds_regs->srdspccr1);
+#endif
        u32 srds_s1 = in_be32(&gur->rcwsr[4]) &
                                FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
 
@@ -199,9 +219,54 @@ void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
                switch (port) {
 #if defined(CONFIG_T2080QDS)
                case FM1_DTSEC1:
+                       if (hwconfig_sub("fsl_1gkx", "fm1_1g1")) {
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                                  "phy_1gkx1");
+                               fdt_status_okay_by_alias(fdt, "1gkx_pcs_mdio1");
+                               sprintf(buf, "%s%s%s", buf, "lane-c,",
+                                               (char *)lane_mode[0]);
+                               out_be32(&srds_regs->srdspccr1, srds1_pccr1 |
+                                        PCCR1_SGMIIH_KX_MASK);
+                               break;
+                       }
                case FM1_DTSEC2:
+                       if (hwconfig_sub("fsl_1gkx", "fm1_1g2")) {
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                                  "phy_1gkx2");
+                               fdt_status_okay_by_alias(fdt, "1gkx_pcs_mdio2");
+                               sprintf(buf, "%s%s%s", buf, "lane-d,",
+                                               (char *)lane_mode[0]);
+                               out_be32(&srds_regs->srdspccr1, srds1_pccr1 |
+                                        PCCR1_SGMIIG_KX_MASK);
+                               break;
+                       }
                case FM1_DTSEC9:
+                       if (hwconfig_sub("fsl_1gkx", "fm1_1g9")) {
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                                  "phy_1gkx9");
+                               fdt_status_okay_by_alias(fdt, "1gkx_pcs_mdio9");
+                               sprintf(buf, "%s%s%s", buf, "lane-a,",
+                                               (char *)lane_mode[0]);
+                               out_be32(&srds_regs->srdspccr1, srds1_pccr1 |
+                                        PCCR1_SGMIIE_KX_MASK);
+                               break;
+                       }
                case FM1_DTSEC10:
+                       if (hwconfig_sub("fsl_1gkx", "fm1_1g10")) {
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                                  "phy_1gkx10");
+                               fdt_status_okay_by_alias(fdt,
+                                                        "1gkx_pcs_mdio10");
+                               sprintf(buf, "%s%s%s", buf, "lane-b,",
+                                               (char *)lane_mode[0]);
+                               out_be32(&srds_regs->srdspccr1, srds1_pccr1 |
+                                        PCCR1_SGMIIF_KX_MASK);
+                               break;
+                       }
                        if (mdio_mux[port] == EMI1_SLOT2) {
                                sprintf(alias, "phy_sgmii_s2_%x", phy);
                                fdt_set_phy_handle(fdt, compat, addr, alias);
@@ -213,7 +278,29 @@ void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
                        }
                        break;
                case FM1_DTSEC5:
+                       if (hwconfig_sub("fsl_1gkx", "fm1_1g5")) {
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                                  "phy_1gkx5");
+                               fdt_status_okay_by_alias(fdt, "1gkx_pcs_mdio5");
+                               sprintf(buf, "%s%s%s", buf, "lane-g,",
+                                               (char *)lane_mode[0]);
+                               out_be32(&srds_regs->srdspccr1, srds1_pccr1 |
+                                        PCCR1_SGMIIC_KX_MASK);
+                               break;
+                       }
                case FM1_DTSEC6:
+                       if (hwconfig_sub("fsl_1gkx", "fm1_1g6")) {
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                                  "phy_1gkx6");
+                               fdt_status_okay_by_alias(fdt, "1gkx_pcs_mdio6");
+                               sprintf(buf, "%s%s%s", buf, "lane-h,",
+                                               (char *)lane_mode[0]);
+                               out_be32(&srds_regs->srdspccr1, srds1_pccr1 |
+                                        PCCR1_SGMIID_KX_MASK);
+                               break;
+                       }
                        if (mdio_mux[port] == EMI1_SLOT1) {
                                sprintf(alias, "phy_sgmii_s1_%x", phy);
                                fdt_set_phy_handle(fdt, compat, addr, alias);
@@ -257,6 +344,12 @@ void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
                default:
                        break;
                }
+               if (media_type) {
+                       /* set property for 1000BASE-KX in dtb */
+                       off = fdt_node_offset_by_compat_reg(fdt,
+                                       "fsl,fman-memac-mdio", addr + 0x1000);
+                       fdt_setprop_string(fdt, off, "lane-instance", buf);
+               }
 
        } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_XGMII) {
                switch (srds_s1) {
@@ -265,15 +358,77 @@ void board_ft_fman_fixup_port(void *fdt, char *compat, phys_addr_t addr,
                case 0x6c:
                case 0x6d:
                case 0x71:
-                       f_link.phy_id = port;
-                       f_link.duplex = 1;
-                       f_link.link_speed = 10000;
-                       f_link.pause = 0;
-                       f_link.asym_pause = 0;
-                       /* no PHY for XFI */
-                       fdt_delprop(fdt, offset, "phy-handle");
-                       fdt_setprop(fdt, offset, "fixed-link", &f_link,
-                                   sizeof(f_link));
+                       /*
+                       * if the 10G is XFI, check hwconfig to see what is the
+                       * media type, there are two types, fiber or copper,
+                       * fix the dtb accordingly.
+                       */
+                       switch (port) {
+                       case FM1_10GEC1:
+                       if (hwconfig_sub("fsl_10gkr_copper", "fm1_10g1")) {
+                               /* it's MAC9 */
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                               "phy_xfi9");
+                               fdt_status_okay_by_alias(fdt, "xfi_pcs_mdio9");
+                               sprintf(buf, "%s%s%s", buf, "lane-a,",
+                                               (char *)lane_mode[1]);
+                       }
+                               break;
+                       case FM1_10GEC2:
+                       if (hwconfig_sub("fsl_10gkr_copper", "fm1_10g2")) {
+                               /* it's MAC10 */
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                               "phy_xfi10");
+                               fdt_status_okay_by_alias(fdt, "xfi_pcs_mdio10");
+                               sprintf(buf, "%s%s%s", buf, "lane-b,",
+                                               (char *)lane_mode[1]);
+                       }
+                               break;
+                       case FM1_10GEC3:
+                       if (hwconfig_sub("fsl_10gkr_copper", "fm1_10g3")) {
+                               /* it's MAC1 */
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                               "phy_xfi1");
+                               fdt_status_okay_by_alias(fdt, "xfi_pcs_mdio1");
+                               sprintf(buf, "%s%s%s", buf, "lane-c,",
+                                               (char *)lane_mode[1]);
+                       }
+                               break;
+                       case FM1_10GEC4:
+                       if (hwconfig_sub("fsl_10gkr_copper", "fm1_10g4")) {
+                               /* it's MAC2 */
+                               media_type = 1;
+                               fdt_set_phy_handle(fdt, compat, addr,
+                                               "phy_xfi2");
+                               fdt_status_okay_by_alias(fdt, "xfi_pcs_mdio2");
+                               sprintf(buf, "%s%s%s", buf, "lane-d,",
+                                               (char *)lane_mode[1]);
+                       }
+                               break;
+                       default:
+                               return;
+                       }
+
+                       if (!media_type) {
+                               /* fixed-link is used for XFI fiber cable */
+                               f_link.phy_id = port;
+                               f_link.duplex = 1;
+                               f_link.link_speed = 10000;
+                               f_link.pause = 0;
+                               f_link.asym_pause = 0;
+                               fdt_delprop(fdt, offset, "phy-handle");
+                               fdt_setprop(fdt, offset, "fixed-link", &f_link,
+                                       sizeof(f_link));
+                       } else {
+                               /* set property for copper cable */
+                               off = fdt_node_offset_by_compat_reg(fdt,
+                                       "fsl,fman-memac-mdio", addr + 0x1000);
+                               fdt_setprop_string(fdt, off,
+                                       "lane-instance", buf);
+                       }
                        break;
                default:
                        break;
index 972dedc68732d11a6173297f0ca55cb8886b3e81..52a1652a222a79be6ef670f230343b979bc5899d 100644 (file)
@@ -1,8 +1,16 @@
 #PBL preamble and RCW header
 aa55aa55 010e0100
-#SerDes Protocol: 0x66_0x16
-#Core/DDR: 1533Mhz/2133MT/s
-12100017 15000000 00000000 00000000
-66150002 00008400 e8104000 c1000000
+
+#For T2080 v1.0
+#SerDes=0x66_0x16, Core=1533MHz, DDR=2133MT/s
+#12100017 15000000 00000000 00000000
+#66150002 00008400 e8104000 c1000000
+#00000000 00000000 00000000 000307fc
+#00000000 00000000 00000000 00000004
+
+#For T2080 v1.1
+#SerDes=0x66_0x15, Core=1800MHz, DDR=1867MT/s
+0c070012 0e000000 00000000 00000000
+66150002 00000000 e8104000 c1000000
 00000000 00000000 00000000 000307fc
 00000000 00000000 00000000 00000004
index fc6d25611171603fb1963c58392270b3dbffd5da..7c89cd5ee9a0735e3b505b9d0fddbbdb9530a902 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "../common/qixis.h"
 #include "../common/vsc3316_3308.h"
+#include "../common/vid.h"
 #include "t208xqds.h"
 #include "t208xqds_qixis.h"
 
@@ -86,6 +87,11 @@ int select_i2c_ch_pca9547(u8 ch)
        return 0;
 }
 
+int i2c_multiplexer_select_vid_channel(u8 channel)
+{
+       return select_i2c_ch_pca9547(channel);
+}
+
 int brd_mux_lane_to_slot(void)
 {
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
@@ -358,6 +364,13 @@ int board_early_init_r(void)
        /* Disable remote I2C connection to qixis fpga */
        QIXIS_WRITE(brdcfg[5], QIXIS_READ(brdcfg[5]) & ~BRDCFG5_IRE);
 
+       /*
+        * Adjust core voltage according to voltage ID
+        * This function changes I2C mux to channel 2.
+        */
+       if (adjust_vdd(0))
+               printf("Warning: Adjusting core voltage failed.\n");
+
        brd_mux_lane_to_slot();
        select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
 
@@ -437,7 +450,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -460,4 +473,6 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
index 15e1bf43dd6fef2ca418e9ae7bbc8942cfe594d3..59025eaf1e952d159502855abf01e7c89cb46512 100644 (file)
@@ -1,8 +1,16 @@
-#PBL preamble and RCW header for T2080RDB
+#PBL preamble and RCW header
 aa55aa55 010e0100
-#SerDes Protocol: 0x66_0x16
-#Core/DDR: 1533Mhz/1600MT/s
-120c0017 15000000 00000000 00000000
-66150002 00008400 ec104000 c1000000
-00000000 00000000 00000000 000307fc
+
+#For T2080 v1.0
+#SerDes=0x66_0x16, Core=1533MHz, DDR=1600MT/s
+#120c0017 15000000 00000000 00000000
+#66150002 00008400 ec104000 c1000000
+#00000000 00000000 00000000 000307fc
+#00000000 00000000 00000000 00000004
+
+#For T2080 v1.1
+#SerDes=0x66_0x15, Core:1800MHz, DDR:1600MT/s
+1206001b 15000000 00000000 00000000
+66150002 00000000 e8104000 c1000000
+00800000 00000000 00000000 000307fc
 00000000 00000000 00000000 00000004
index be99fb806dd73648918bd8eaf829912f4b85fb4e..341453bc74e8c6b9d434fd264edccd4b9e1e5ab6 100644 (file)
@@ -103,7 +103,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -126,4 +126,6 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
index 479e124a3969d13f9b2bc6b5c95dc44827267529..54410943f28123b693480bd32ff6873181de6942 100644 (file)
@@ -69,7 +69,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -83,4 +83,6 @@ void ft_board_setup(void *blob, bd_t *bd)
 
        fdt_fixup_liodn(blob);
        fdt_fixup_dr_usb(blob, bd);
+
+       return 0;
 }
index 6205fea35e72dc9fbaad6ec18e567997212c7d7d..4f2cccd709d6554dbda9fd30e432265fb9b3e0b2 100644 (file)
@@ -683,7 +683,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -706,6 +706,8 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
 
 /*
index f7f7fc01774fb4d2f88dd23859e6be671287368d..3886e3ded107136fc257bf9a5d48c797c11efe17 100644 (file)
@@ -5,6 +5,7 @@
 #
 
 obj-$(CONFIG_T4240RDB) += t4240rdb.o
+obj-y  += cpld.o
 obj-y  += ddr.o
 obj-y  += eth.o
 obj-$(CONFIG_PCI)      += pci.o
diff --git a/board/freescale/t4rdb/cpld.c b/board/freescale/t4rdb/cpld.c
new file mode 100644 (file)
index 0000000..d5f3812
--- /dev/null
@@ -0,0 +1,136 @@
+/**
+ * Copyright 2014 Freescale Semiconductor
+ *
+ * Author: Chunhe Lan <Chunhe.Lan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * This file provides support for the board-specific CPLD used on some Freescale
+ * reference boards.
+ *
+ * The following macros need to be defined:
+ *
+ * CONFIG_SYS_CPLD_BASE - The virtual address of the base of the
+ * CPLD register map
+ *
+ */
+
+#include <common.h>
+#include <command.h>
+#include <asm/io.h>
+
+#include "cpld.h"
+
+u8 cpld_read(unsigned int reg)
+{
+       void *p = (void *)CONFIG_SYS_CPLD_BASE;
+
+       return in_8(p + reg);
+}
+
+void cpld_write(unsigned int reg, u8 value)
+{
+       void *p = (void *)CONFIG_SYS_CPLD_BASE;
+
+       out_8(p + reg, value);
+}
+
+/**
+ * Set the boot bank to the alternate bank
+ */
+void cpld_set_altbank(void)
+{
+       u8 val, curbank, altbank, override;
+
+       val = CPLD_READ(vbank);
+       curbank = val & CPLD_BANK_SEL_MASK;
+
+       switch (curbank) {
+       case CPLD_SELECT_BANK0:
+               altbank = CPLD_SELECT_BANK4;
+               CPLD_WRITE(vbank, altbank);
+               override = CPLD_READ(software_on);
+               CPLD_WRITE(software_on, override | CPLD_BANK_SEL_EN);
+               CPLD_WRITE(sys_reset, CPLD_SYSTEM_RESET);
+               break;
+       case CPLD_SELECT_BANK4:
+               altbank = CPLD_SELECT_BANK0;
+               CPLD_WRITE(vbank, altbank);
+               override = CPLD_READ(software_on);
+               CPLD_WRITE(software_on, override | CPLD_BANK_SEL_EN);
+               CPLD_WRITE(sys_reset, CPLD_SYSTEM_RESET);
+               break;
+       default:
+               printf("CPLD Altbank Fail: Invalid value!\n");
+               return;
+       }
+}
+
+/**
+ * Set the boot bank to the default bank
+ */
+void cpld_set_defbank(void)
+{
+       u8 val;
+
+       val = CPLD_DEFAULT_BANK;
+
+       CPLD_WRITE(global_reset, val);
+}
+
+#ifdef DEBUG
+static void cpld_dump_regs(void)
+{
+       printf("chip_id1        = 0x%02x\n", CPLD_READ(chip_id1));
+       printf("chip_id2        = 0x%02x\n", CPLD_READ(chip_id2));
+       printf("sw_maj_ver      = 0x%02x\n", CPLD_READ(sw_maj_ver));
+       printf("sw_min_ver      = 0x%02x\n", CPLD_READ(sw_min_ver));
+       printf("hw_ver          = 0x%02x\n", CPLD_READ(hw_ver));
+       printf("software_on     = 0x%02x\n", CPLD_READ(software_on));
+       printf("cfg_rcw_src     = 0x%02x\n", CPLD_READ(cfg_rcw_src));
+       printf("res0            = 0x%02x\n", CPLD_READ(res0));
+       printf("vbank           = 0x%02x\n", CPLD_READ(vbank));
+       printf("sw1_sysclk      = 0x%02x\n", CPLD_READ(sw1_sysclk));
+       printf("sw2_status      = 0x%02x\n", CPLD_READ(sw2_status));
+       printf("sw3_status      = 0x%02x\n", CPLD_READ(sw3_status));
+       printf("sw4_status      = 0x%02x\n", CPLD_READ(sw4_status));
+       printf("sys_reset       = 0x%02x\n", CPLD_READ(sys_reset));
+       printf("global_reset    = 0x%02x\n", CPLD_READ(global_reset));
+       printf("res1            = 0x%02x\n", CPLD_READ(res1));
+       putc('\n');
+}
+#endif
+
+#ifndef CONFIG_SPL_BUILD
+int do_cpld(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       int rc = 0;
+
+       if (argc <= 1)
+               return cmd_usage(cmdtp);
+
+       if (strcmp(argv[1], "reset") == 0) {
+               if (strcmp(argv[2], "altbank") == 0)
+                       cpld_set_altbank();
+               else
+                       cpld_set_defbank();
+#ifdef DEBUG
+       } else if (strcmp(argv[1], "dump") == 0) {
+               cpld_dump_regs();
+#endif
+       } else
+               rc = cmd_usage(cmdtp);
+
+       return rc;
+}
+
+U_BOOT_CMD(
+       cpld, CONFIG_SYS_MAXARGS, 1, do_cpld,
+       "Reset the board or alternate bank",
+       "reset - reset to default bank\n"
+       "cpld reset altbank - reset to alternate bank\n"
+#ifdef DEBUG
+       "cpld dump - display the CPLD registers\n"
+#endif
+       );
+#endif
diff --git a/board/freescale/t4rdb/cpld.h b/board/freescale/t4rdb/cpld.h
new file mode 100644 (file)
index 0000000..0180082
--- /dev/null
@@ -0,0 +1,49 @@
+/**
+ * Copyright 2014 Freescale Semiconductor
+ *
+ * Author: Chunhe Lan <Chunhe.Lan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * This file provides support for the ngPIXIS, a board-specific FPGA used on
+ * some Freescale reference boards.
+ */
+
+/*
+ * CPLD register set. Feel free to add board-specific #ifdefs where necessary.
+ */
+struct cpld_data {
+       u8 chip_id1;    /* 0x00 - CPLD Chip ID1 Register */
+       u8 chip_id2;    /* 0x01 - CPLD Chip ID2 Register */
+       u8 sw_maj_ver;  /* 0x02 - CPLD Code Major Version Register */
+       u8 sw_min_ver;  /* 0x03 - CPLD Code Minor Version Register */
+       u8 hw_ver;      /* 0x04 - PCBA Version Register */
+       u8 software_on; /* 0x05 - Override Physical Switch Enable Register */
+       u8 cfg_rcw_src; /* 0x06 - RCW Source Location Control Register */
+       u8 res0;        /* 0x07 - not used */
+       u8 vbank;       /* 0x08 - Flash Bank Selection Control Register */
+       u8 sw1_sysclk;  /* 0x09 - SW1 Status Read Back Register */
+       u8 sw2_status;  /* 0x0a - SW2 Status Read Back Register */
+       u8 sw3_status;  /* 0x0b - SW3 Status Read Back Register */
+       u8 sw4_status;  /* 0x0c - SW4 Status Read Back Register */
+       u8 sys_reset;   /* 0x0d - Reset System With Reserving Registers Value*/
+       u8 global_reset;/* 0x0e - Reset System With Default Registers Value */
+       u8 res1;        /* 0x0f - not used */
+};
+
+#define CPLD_BANK_SEL_MASK     0x07
+#define CPLD_BANK_SEL_EN       0x04
+#define CPLD_SYSTEM_RESET      0x01
+#define CPLD_SELECT_BANK0      0x00
+#define CPLD_SELECT_BANK4      0x04
+#define CPLD_DEFAULT_BANK      0x01
+
+/* Pointer to the CPLD register set */
+
+u8 cpld_read(unsigned int reg);
+void cpld_write(unsigned int reg, u8 value);
+
+#define CPLD_READ(reg) cpld_read(offsetof(struct cpld_data, reg))
+#define CPLD_WRITE(reg, value) \
+               cpld_write(offsetof(struct cpld_data, reg), value)
+
index 1f5876885c051e18276b27faf879bf96b7645add..39818fc4f12f79a861197b342c902c09d4cedc59 100644 (file)
@@ -16,6 +16,9 @@ struct law_entry law_table[] = {
 #ifdef CONFIG_SYS_QMAN_MEM_PHYS
        SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_QMAN),
 #endif
+#ifdef CONFIG_SYS_CPLD_BASE_PHYS
+       SET_LAW(CONFIG_SYS_CPLD_BASE_PHYS, LAW_SIZE_4K, LAW_TRGT_IF_IFC),
+#endif
 #ifdef CONFIG_SYS_DCSRBAR_PHYS
        /* Limit DCSR to 32M to access NPC Trace Buffer */
        SET_LAW(CONFIG_SYS_DCSRBAR_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_DCSR),
index afef7e93d03b6efe06d2b2c913fdff50a2d61211..fac442bfc8c8e9ab68eda0a9be8ad5fb74914a28 100644 (file)
 #include <fm_eth.h>
 
 #include "t4rdb.h"
+#include "cpld.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
 int checkboard(void)
 {
        struct cpu_type *cpu = gd->arch.cpu;
+       u8 sw;
 
        printf("Board: %sRDB, ", cpu->name);
+       printf("Board rev: 0x%02x CPLD ver: 0x%02x%02x, ",
+              CPLD_READ(hw_ver), CPLD_READ(sw_maj_ver), CPLD_READ(sw_min_ver));
+
+       sw = CPLD_READ(vbank);
+       sw = sw & CPLD_BANK_SEL_MASK;
+
+       if (sw <= 7)
+               printf("vBank: %d\n", sw);
+       else
+               printf("Unsupported Bank=%x\n", sw);
 
        puts("SERDES Reference Clocks:\n");
        printf("       SERDES1=100MHz SERDES2=156.25MHz\n"
@@ -76,7 +88,7 @@ int misc_init_r(void)
        return 0;
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -99,6 +111,8 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_board_enet(blob);
 #endif
+
+       return 0;
 }
 
 /*
index 4b50bcd09b04b8d83c8167aa81279af9a855f8ef..474301e2a77e43d86adac3fa58237f2e7ee76d81 100644 (file)
@@ -106,6 +106,11 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 16, BOOKE_PAGESZ_64K, 1),
 #endif
+#ifdef CONFIG_SYS_CPLD_BASE
+       SET_TLB_ENTRY(1, CONFIG_SYS_CPLD_BASE, CONFIG_SYS_CPLD_BASE_PHYS,
+                     MAS3_SW|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 17, BOOKE_PAGESZ_4K, 1),
+#endif
 };
 
 int num_tlb_entries = ARRAY_SIZE(tlb_table);
diff --git a/board/funkwerk/vovpn-gw/Kconfig b/board/funkwerk/vovpn-gw/Kconfig
deleted file mode 100644 (file)
index 6b6c328..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_VOVPN_GW
-
-config SYS_BOARD
-       default "vovpn-gw"
-
-config SYS_VENDOR
-       default "funkwerk"
-
-config SYS_CONFIG_NAME
-       default "VoVPN-GW"
-
-endif
diff --git a/board/funkwerk/vovpn-gw/MAINTAINERS b/board/funkwerk/vovpn-gw/MAINTAINERS
deleted file mode 100644 (file)
index 34d1cc1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-VOVPN-GW BOARD
-#M:    -
-S:     Maintained
-F:     board/funkwerk/vovpn-gw/
-F:     include/configs/VoVPN-GW.h
-F:     configs/VoVPN-GW_66MHz_defconfig
diff --git a/board/funkwerk/vovpn-gw/Makefile b/board/funkwerk/vovpn-gw/Makefile
deleted file mode 100644 (file)
index 3253247..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := vovpn-gw.o flash.o m88e6060.o
diff --git a/board/funkwerk/vovpn-gw/flash.c b/board/funkwerk/vovpn-gw/flash.c
deleted file mode 100644 (file)
index 829514c..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- * ------------------------------------------
- * This is a signle bank flashdriver for INTEL 28F320J3, 28F640J3
- * and 28F128J3A flashs working in 8 Bit mode.
- *
- * Most of this code is taken from existing u-boot source code.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-flash_info_t                           flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-#define FLASH_CMD_READ_ID              0x90
-#define FLASH_CMD_READ_STATUS          0x70
-#define FLASH_CMD_RESET                        0xff
-#define FLASH_CMD_BLOCK_ERASE          0x20
-#define FLASH_CMD_ERASE_CONFIRM                0xd0
-#define FLASH_CMD_CLEAR_STATUS         0x50
-#define FLASH_CMD_SUSPEND_ERASE                0xb0
-#define FLASH_CMD_WRITE                        0x40
-#define FLASH_CMD_WRITE_BUFF           0xe8
-#define FLASH_CMD_PROG_RESUME          0xd0
-#define FLASH_CMD_PROTECT              0x60
-#define FLASH_CMD_PROTECT_SET          0x01
-#define FLASH_CMD_PROTECT_CLEAR                0xd0
-#define FLASH_STATUS_DONE              0x80
-
-#define FLASH_WRITE_BUFFER_SIZE                32
-
-#ifdef CONFIG_SYS_FLASH_16BIT
-#define FLASH_WORD_SIZE                        unsigned short
-#define FLASH_ID_MASK                  0xffff
-#define FLASH_CMD_ADDR_SHIFT           0
-#else
-#define FLASH_WORD_SIZE                        unsigned char
-#define FLASH_ID_MASK                  0xff
-/* A0 is not used in either 8x or 16x for READ ID */
-#define FLASH_CMD_ADDR_SHIFT           1
-#endif
-
-
-static unsigned long
-flash_get(volatile FLASH_WORD_SIZE *addr, flash_info_t *info)
-{
-       volatile FLASH_WORD_SIZE *p;
-       FLASH_WORD_SIZE value;
-       int i;
-
-       addr[0] = FLASH_CMD_READ_ID;
-
-       /* manufactor */
-       value = addr[0 << FLASH_CMD_ADDR_SHIFT];
-       switch (value) {
-       case (INTEL_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               *addr = FLASH_CMD_RESET;
-               return (0);
-
-       }
-
-       /* device */
-       value = addr[1 << FLASH_CMD_ADDR_SHIFT];
-       switch (value) {
-       case (INTEL_ID_28F320J3A & FLASH_ID_MASK):
-               info->flash_id += FLASH_28F320J3A;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               break;
-       case (INTEL_ID_28F640J3A & FLASH_ID_MASK):
-               info->flash_id += FLASH_28F640J3A;
-               info->sector_count = 64;
-               info->size = 0x00800000;
-               break;
-       case (INTEL_ID_28F128J3A & FLASH_ID_MASK):
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x01000000;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               *addr = FLASH_CMD_RESET;
-               return (0);
-       }
-
-       /* setup sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = (unsigned long)addr + (i * info->size/info->sector_count);
-       }
-
-       /* check protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               p = (volatile FLASH_WORD_SIZE *)(info->start[i]);
-               info->protect[i] = p[2 << FLASH_CMD_ADDR_SHIFT] & 1;
-       }
-
-       /* reset bank */
-       *addr = FLASH_CMD_RESET;
-       return (info->size);
-}
-
-unsigned long
-flash_init(void)
-{
-       unsigned long   size;
-       int             i;
-
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-       size = flash_get((volatile FLASH_WORD_SIZE *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH Size=0x%08lx\n", size);
-               return (0);
-       }
-
-       /* always protect 1 sector containing the HRCW */
-       flash_protect(FLAG_PROTECT_SET,
-                     flash_info[0].start[0],
-                     flash_info[0].start[1] - 1,
-                     &flash_info[0]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_FLASH,
-                     CONFIG_SYS_MONITOR_FLASH+CONFIG_SYS_MONITOR_LEN-1,
-                     &flash_info[0]);
-#endif
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-       return (size);
-}
-
-void
-flash_print_info(flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:   printf ("INTEL ");              break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F320J3A:   printf ("28F320JA3 (32 Mbit)\n");
-                               break;
-       case FLASH_28F640J3A:   printf ("28F640JA3 (64 Mbit)\n");
-                               break;
-       case FLASH_28F128J3A:   printf ("28F128JA3 (128 Mbit)\n");
-                               break;
-       default:                printf ("Unknown Chip Type");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
-
-int
-flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-       unsigned long start, now, last;
-       int flag, prot, sect;
-       volatile FLASH_WORD_SIZE *addr;
-       FLASH_WORD_SIZE status;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return (1);
-       }
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("Cannot erase unknown flash - aborted\n");
-               return (1);
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n", prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect]) {
-                       continue;
-               }
-
-               addr = (volatile FLASH_WORD_SIZE *)(info->start[sect]);
-               /* Disable interrupts which might cause a timeout here */
-               flag = disable_interrupts();
-
-#ifdef DEBUG
-               printf("Erase sector %d at start addr 0x%08X", sect, (unsigned int)info->start[sect]);
-#endif
-
-               *addr = FLASH_CMD_CLEAR_STATUS;
-               *addr = FLASH_CMD_BLOCK_ERASE;
-               *addr = FLASH_CMD_ERASE_CONFIRM;
-
-               /* re-enable interrupts if necessary */
-               if (flag) {
-                       enable_interrupts();
-               }
-
-               /* wait at least 80us - let's wait 1 ms */
-               udelay (1000);
-
-               while (((status = *addr) & FLASH_STATUS_DONE) != FLASH_STATUS_DONE) {
-                       if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                               printf("Flash erase timeout at address %lx\n", info->start[sect]);
-                               *addr = FLASH_CMD_SUSPEND_ERASE;
-                               *addr = FLASH_CMD_RESET;
-                               return (1);
-                       }
-
-                       /* show that we're waiting */
-                       if ((now - last) > 1000) {      /* every second */
-                               putc ('.');
-                               last = now;
-                       }
-               }
-               *addr = FLASH_CMD_RESET;
-       }
-       printf (" done\n");
-       return (0);
-}
-
-static int
-write_buff2( volatile FLASH_WORD_SIZE *dst,
-            volatile FLASH_WORD_SIZE *src,
-            unsigned long cnt )
-{
-       unsigned long start;
-       FLASH_WORD_SIZE status;
-       int flag, i;
-
-       start = get_timer (0);
-       while (1) {
-               /* Disable interrupts which might cause a timeout here */
-               flag = disable_interrupts();
-               dst[0] = FLASH_CMD_WRITE_BUFF;
-               if ((status = *dst) & FLASH_STATUS_DONE) {
-                       break;
-               }
-
-               /* re-enable interrupts if necessary */
-               if (flag) {
-                       enable_interrupts();
-               }
-
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (-1);
-               }
-       }
-       dst[0] = (FLASH_WORD_SIZE)(cnt - 1);
-       for (i=0; i<cnt; i++) {
-               dst[i] = src[i];
-       }
-       dst[0] = FLASH_CMD_PROG_RESUME;
-
-       if (flag) {
-               enable_interrupts();
-       }
-
-       return( 0 );
-}
-
-static int
-poll_status( volatile FLASH_WORD_SIZE *addr )
-{
-       unsigned long start;
-
-       start = get_timer (0);
-       /* wait for error or finish */
-       while (1) {
-               if (*addr == FLASH_STATUS_DONE) {
-                       if (*addr == FLASH_STATUS_DONE) {
-                               break;
-                       }
-               }
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *addr = FLASH_CMD_RESET;
-                       return (-1);
-               }
-       }
-       *addr = FLASH_CMD_RESET;
-       return (0);
-}
-
-/*
- * write_buff return values:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-int
-write_buff(flash_info_t *info, uchar *src, ulong udst, ulong cnt)
-{
-       volatile FLASH_WORD_SIZE *addr, *dst;
-       unsigned long bcnt;
-       int flag, i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return (4);
-       }
-
-       addr = (volatile FLASH_WORD_SIZE *)(info->start[0]);
-       dst = (volatile FLASH_WORD_SIZE *) udst;
-
-#ifdef CONFIG_SYS_FLASH_16BIT
-#error NYI
-#else
-       while (cnt > 0) {
-               /* Check if buffer write is possible */
-               if (cnt > 1 && (((unsigned long)dst & (FLASH_WRITE_BUFFER_SIZE - 1)) == 0)) {
-                       bcnt = cnt > FLASH_WRITE_BUFFER_SIZE ? FLASH_WRITE_BUFFER_SIZE : cnt;
-                       /* Check if Flash is (sufficiently) erased */
-                       for (i=0; i<bcnt; i++) {
-                               if ((dst[i] & src[i]) != src[i]) {
-                                       return (2);
-                               }
-                       }
-                       if (write_buff2( dst,src,bcnt ) != 0) {
-                               addr[0] = FLASH_CMD_READ_STATUS;
-                       }
-                       if (poll_status( dst ) != 0) {
-                               return (1);
-                       }
-                       cnt -= bcnt;
-                       dst += bcnt;
-                       src += bcnt;
-                       continue;
-               }
-
-               /* Check if Flash is (sufficiently) erased */
-               if ((*dst & *src) != *src) {
-                       return (2);
-               }
-
-               /* Disable interrupts which might cause a timeout here */
-               flag = disable_interrupts();
-               addr[0] = FLASH_CMD_ERASE_CONFIRM;
-               addr[0] = FLASH_CMD_WRITE;
-               *dst++ = *src++;
-               /* re-enable interrupts if necessary */
-               if (flag) {
-                       enable_interrupts();
-               }
-
-               if (poll_status( dst ) != 0) {
-                       return (1);
-               }
-               cnt --;
-       }
-#endif
-       return (0);
-}
-
-int
-flash_real_protect(flash_info_t *info, long sector, int prot)
-{
-       volatile FLASH_WORD_SIZE *addr;
-       unsigned long start;
-
-       addr = (volatile FLASH_WORD_SIZE *)(info->start[sector]);
-       *addr = FLASH_CMD_CLEAR_STATUS;
-       *addr = FLASH_CMD_PROTECT;
-
-       if(prot) {
-               *addr = FLASH_CMD_PROTECT_SET;
-       } else {
-               *addr = FLASH_CMD_PROTECT_CLEAR;
-       }
-
-       /* wait for error or finish */
-       start = get_timer (0);
-       while(!(addr[0] & FLASH_STATUS_DONE)){
-               if (get_timer(start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf("Flash protect timeout at address %lx\n",  info->start[sector]);
-                       addr[0] = FLASH_CMD_RESET;
-                       return (1);
-               }
-       }
-
-       /* Set software protect flag */
-       info->protect[sector] = prot;
-       *addr = FLASH_CMD_RESET;
-       return (0);
-}
diff --git a/board/funkwerk/vovpn-gw/m88e6060.c b/board/funkwerk/vovpn-gw/m88e6060.c
deleted file mode 100644 (file)
index 7aa9593..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- * ------------------------------------------
- * Initialize Marvell M88E6060 Switch
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/m8260_pci.h>
-#include <net.h>
-#include <miiphy.h>
-
-#include "m88e6060.h"
-
-#if defined(CONFIG_CMD_NET)
-static int             prtTab[M88X_PRT_CNT] = { 8, 9, 10, 11, 12, 13 };
-static int             phyTab[M88X_PHY_CNT] = { 0, 1, 2, 3, 4 };
-
-static m88x_regCfg_t   prtCfg0[] = {
-       {  4, 0x3e7c, 0x8000 },
-       {  4, 0x3e7c, 0x8003 },
-       {  6, 0x0fc0, 0x001e },
-       { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t   prtCfg1[] = {
-       {  4, 0x3e7c, 0x8000 },
-       {  4, 0x3e7c, 0x8003 },
-       {  6, 0x0fc0, 0x001d },
-       { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t   prtCfg2[] = {
-       {  4, 0x3e7c, 0x8000 },
-       {  4, 0x3e7c, 0x8003 },
-       {  6, 0x0fc0, 0x001b },
-       { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t   prtCfg3[] = {
-       {  4, 0x3e7c, 0x8000 },
-       {  4, 0x3e7c, 0x8003 },
-       {  6, 0x0fc0, 0x0017 },
-       { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t   prtCfg4[] = {
-       {  4, 0x3e7c, 0x8000 },
-       {  4, 0x3e7c, 0x8003 },
-       {  6, 0x0fc0, 0x000f },
-       { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t   *prtCfg[M88X_PRT_CNT] = {
-       prtCfg0,prtCfg1,prtCfg2,prtCfg3,prtCfg4,NULL
-};
-
-static m88x_regCfg_t   phyCfgX[] = {
-       {  4, 0xfa1f, 0x01e0 },
-       {  0, 0x213f, 0x1200 },
-       { 24, 0x81ff, 0x1200 },
-       { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t   *phyCfg[M88X_PHY_CNT] = {
-       phyCfgX,phyCfgX,phyCfgX,phyCfgX,NULL
-};
-
-#if 0
-static void
-m88e6060_dump( int devAddr )
-{
-       int             i, j;
-       unsigned short  val[6];
-
-       printf( "M88E6060 Register Dump\n" );
-       printf( "====================================\n" );
-       printf( "PortNo    0    1    2    3    4    5\n" );
-       for (i=0; i<6; i++)
-               miiphy_read( devAddr+prtTab[i],M88X_PRT_STAT,&val[i] );
-       printf( "STAT   %04hx %04hx %04hx %04hx %04hx %04hx\n",
-               val[0],val[1],val[2],val[3],val[4],val[5] );
-
-       for (i=0; i<6; i++)
-               miiphy_read( devAddr+prtTab[i],M88X_PRT_ID,&val[i] );
-       printf( "ID     %04hx %04hx %04hx %04hx %04hx %04hx\n",
-               val[0],val[1],val[2],val[3],val[4],val[5] );
-
-       for (i=0; i<6; i++)
-               miiphy_read( devAddr+prtTab[i],M88X_PRT_CNTL,&val[i] );
-       printf( "CNTL   %04hx %04hx %04hx %04hx %04hx %04hx\n",
-               val[0],val[1],val[2],val[3],val[4],val[5] );
-
-       for (i=0; i<6; i++)
-               miiphy_read( devAddr+prtTab[i],M88X_PRT_VLAN,&val[i] );
-       printf( "VLAN   %04hx %04hx %04hx %04hx %04hx %04hx\n",
-               val[0],val[1],val[2],val[3],val[4],val[5] );
-
-       for (i=0; i<6; i++)
-               miiphy_read( devAddr+prtTab[i],M88X_PRT_PAV,&val[i] );
-       printf( "PAV    %04hx %04hx %04hx %04hx %04hx %04hx\n",
-               val[0],val[1],val[2],val[3],val[4],val[5] );
-
-       for (i=0; i<6; i++)
-               miiphy_read( devAddr+prtTab[i],M88X_PRT_RX,&val[i] );
-       printf( "RX     %04hx %04hx %04hx %04hx %04hx %04hx\n",
-               val[0],val[1],val[2],val[3],val[4],val[5] );
-
-       for (i=0; i<6; i++)
-               miiphy_read( devAddr+prtTab[i],M88X_PRT_TX,&val[i] );
-       printf( "TX     %04hx %04hx %04hx %04hx %04hx %04hx\n",
-               val[0],val[1],val[2],val[3],val[4],val[5] );
-
-       printf( "------------------------------------\n" );
-       printf( "PhyNo     0    1    2    3    4\n" );
-       for (i=0; i<9; i++) {
-               for (j=0; j<5; j++) {
-                       miiphy_read( devAddr+phyTab[j],i,&val[j] );
-               }
-               printf( "0x%02x   %04hx %04hx %04hx %04hx %04hx\n",
-                       i,val[0],val[1],val[2],val[3],val[4] );
-       }
-       for (i=0x10; i<0x1d; i++) {
-               for (j=0; j<5; j++) {
-                       miiphy_read( devAddr+phyTab[j],i,&val[j] );
-               }
-               printf( "0x%02x   %04hx %04hx %04hx %04hx %04hx\n",
-                       i,val[0],val[1],val[2],val[3],val[4] );
-       }
-}
-#endif
-
-int
-m88e6060_initialize( int devAddr )
-{
-       static char     *_f = "m88e6060_initialize:";
-       m88x_regCfg_t   *p;
-       int             err;
-       int             i;
-       unsigned short  val;
-
-       /*** reset all phys into powerdown ************************************/
-       for (i=0, err=0; i<M88X_PHY_CNT; i++) {
-               err += bb_miiphy_read(NULL, devAddr+phyTab[i],M88X_PHY_CNTL,&val );
-               /* keep SpeedLSB, Duplex */
-               val &= 0x2100;
-               /* set SWReset, AnegEn, PwrDwn, RestartAneg */
-               val |= 0x9a00;
-               err += bb_miiphy_write(NULL, devAddr+phyTab[i],M88X_PHY_CNTL,val );
-       }
-       if (err) {
-               printf( "%s [ERR] reset phys\n",_f );
-               return( -1 );
-       }
-
-       /*** disable all ports ************************************************/
-       for (i=0, err=0; i<M88X_PRT_CNT; i++) {
-               err += bb_miiphy_read(NULL, devAddr+prtTab[i],M88X_PRT_CNTL,&val );
-               val &= 0xfffc;
-               err += bb_miiphy_write(NULL, devAddr+prtTab[i],M88X_PRT_CNTL,val );
-       }
-       if (err) {
-               printf( "%s [ERR] disable ports\n",_f );
-               return( -1 );
-       }
-
-       /*** initialize switch ************************************************/
-       /* set switch mac addr */
-#define ea eth_get_dev()->enetaddr
-       val = (ea[4] <<  8) | ea[5];
-       err = bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC45,val );
-       val = (ea[2] <<  8) | ea[3];
-       err += bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC23,val );
-       val = (ea[0] <<  8) | ea[1];
-#undef ea
-       val &= 0xfeff;          /* clear DiffAddr */
-       err += bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC01,val );
-       if (err) {
-               printf( "%s [ERR] switch mac address register\n",_f );
-               return( -1 );
-       }
-
-       /* !DiscardExcessive, MaxFrameSize, CtrMode */
-       err = bb_miiphy_read(NULL, devAddr+15,M88X_GLB_CNTL,&val );
-       val &= 0xd870;
-       val |= 0x0500;
-       err += bb_miiphy_write(NULL, devAddr+15,M88X_GLB_CNTL,val );
-       if (err) {
-               printf( "%s [ERR] switch global control register\n",_f );
-               return( -1 );
-       }
-
-       /* LernDis off, ATUSize 1024, AgeTime 5min */
-       err = bb_miiphy_read(NULL, devAddr+15,M88X_ATU_CNTL,&val );
-       val &= 0x000f;
-       val |= 0x2130;
-       err += bb_miiphy_write(NULL, devAddr+15,M88X_ATU_CNTL,val );
-       if (err) {
-               printf( "%s [ERR] atu control register\n",_f );
-               return( -1 );
-       }
-
-       /*** initialize ports *************************************************/
-       for (i=0; i<M88X_PRT_CNT; i++) {
-               if ((p = prtCfg[i]) == NULL) {
-                       continue;
-               }
-               while (p->reg != -1) {
-                       err = 0;
-                       err += bb_miiphy_read(NULL, devAddr+prtTab[i],p->reg,&val );
-                       val &= p->msk;
-                       val |= p->val;
-                       err += bb_miiphy_write(NULL, devAddr+prtTab[i],p->reg,val );
-                       if (err) {
-                               printf( "%s [ERR] config port %d register %d\n",_f,i,p->reg );
-                               /* XXX what todo */
-                       }
-                       p++;
-               }
-       }
-
-       /*** initialize phys **************************************************/
-       for (i=0; i<M88X_PHY_CNT; i++) {
-               if ((p = phyCfg[i]) == NULL) {
-                       continue;
-               }
-               while (p->reg != -1) {
-                       err = 0;
-                       err += bb_miiphy_read(NULL, devAddr+phyTab[i],p->reg,&val );
-                       val &= p->msk;
-                       val |= p->val;
-                       err += bb_miiphy_write(NULL, devAddr+phyTab[i],p->reg,val );
-                       if (err) {
-                               printf( "%s [ERR] config phy %d register %d\n",_f,i,p->reg );
-                               /* XXX what todo */
-                       }
-                       p++;
-               }
-       }
-       udelay(100000);
-       return( 0 );
-}
-#endif
diff --git a/board/funkwerk/vovpn-gw/m88e6060.h b/board/funkwerk/vovpn-gw/m88e6060.h
deleted file mode 100644 (file)
index 5f7f6d1..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- * ------------------------------------------
- * Initialize Marvell M88E6060 Switch
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _INC_m88e6060_h_
-#define _INC_m88e6060_h_
-
-/* ************************************************************************** */
-/* *** DEFINES ************************************************************** */
-
-/* switch hw */
-#define M88X_PRT_CNT                   6
-#define M88X_PHY_CNT                   5
-
-/* phy register offsets */
-#define M88X_PHY_CNTL                  0x00
-#define M88X_PHY_STAT                  0x00
-#define M88X_PHY_ID0                   0x02
-#define M88X_PHY_ID1                   0x03
-#define M88X_PHY_ANEG_ADV              0x04
-#define M88X_PHY_LPA                   0x05
-#define M88X_PHY_ANEG_EXP              0x06
-#define M88X_PHY_NPT                   0x07
-#define M88X_PHY_LPNP                  0x08
-
-/* port register offsets */
-#define M88X_PRT_STAT                  0x00
-#define M88X_PRT_ID                    0x03
-#define M88X_PRT_CNTL                  0x04
-#define M88X_PRT_VLAN                  0x06
-#define M88X_PRT_PAV                   0x0b
-#define M88X_PRT_RX                    0x10
-#define M88X_PRT_TX                    0x11
-
-/* global/atu register offsets */
-#define M88X_GLB_STAT                  0x00
-#define M88X_GLB_MAC01                 0x01
-#define M88X_GLB_MAC23                 0x02
-#define M88X_GLB_MAC45                 0x03
-#define M88X_GLB_CNTL                  0x04
-#define M88X_ATU_CNTL                  0x0a
-#define M88X_ATU_OP                    0x0b
-
-/* id0 register - 0x02 */
-#define M88X_PHY_ID0_VALUE             0x0141
-
-/* id1 register - 0x03 */
-#define M88X_PHY_ID1_VALUE             0x0c80          /* without revision ! */
-
-
-/* misc */
-#define M88E6060_ID            ((M88X_PHY_ID0_VALUE<<16) | M88X_PHY_ID1_VALUE)
-
-/* ************************************************************************** */
-/* *** TYPEDEFS ************************************************************* */
-
-typedef struct {
-       int             reg;
-       unsigned short  msk;
-       unsigned short  val;
-} m88x_regCfg_t;
-
-/* ************************************************************************** */
-/* *** PROTOTYPES *********************************************************** */
-
-extern int             m88e6060_initialize( int );
-
-#endif /* _INC_m88e6060_h_ */
diff --git a/board/funkwerk/vovpn-gw/vovpn-gw.c b/board/funkwerk/vovpn-gw/vovpn-gw.c
deleted file mode 100644 (file)
index c2aad6e..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/m8260_pci.h>
-#include <miiphy.h>
-#include <linux/compiler.h>
-
-#include "m88e6060.h"
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-    /* Port A configuration */
-    {  /*           conf ppar psor pdir podr pdat */
-       /* PA31 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1252           */
-       /* PA30 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    BP_RES           */
-       /* PA29 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1253           */
-       /* PA28 */ { 1,   1,   1,   1,   0,   0 }, /* FCC1   RMII TX_EN       */
-       /* PA27 */ { 1,   1,   1,   0,   0,   0 }, /* FCC1   RMII CRS_DV      */
-       /* PA26 */ { 1,   1,   1,   0,   0,   0 }, /* FCC1   RMII RX_ERR      */
-       /* PA25 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    HWID             */
-       /* PA24 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    HWID             */
-       /* PA23 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    HWID             */
-       /* PA22 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    HWID             */
-       /* PA21 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    HWID             */
-       /* PA20 */ { 1,   0,   0,   1,   0,   1 }, /* GPO    LED STATUS       */
-       /* PA19 */ { 1,   1,   0,   1,   0,   0 }, /* FCC1   RMII TxD[1]      */
-       /* PA18 */ { 1,   1,   0,   1,   0,   0 }, /* FCC1   RMII TxD[0]      */
-       /* PA17 */ { 1,   1,   0,   0,   0,   0 }, /* FCC1   RMII RxD[0]      */
-       /* PA16 */ { 1,   1,   0,   0,   0,   0 }, /* FCC1   RMII RxD[1]      */
-       /* PA15 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1255           */
-       /* PA14 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP????           */
-       /* PA13 */ { 1,   0,   0,   1,   0,   1 }, /* GPO    EN_BCTL1 XXX jse */
-       /* PA12 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    SWITCH RESET     */
-       /* PA11 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    DSP SL1 RESET    */
-       /* PA10 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    DSP SL2 RESET    */
-       /* PA9  */ { 1,   1,   0,   1,   0,   0 }, /* SMC2   TXD              */
-       /* PA8  */ { 1,   1,   0,   0,   0,   0 }, /* SMC2   RXD              */
-       /* PA7  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exit       */
-       /* PA6  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exit       */
-       /* PA5  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exit       */
-       /* PA4  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exit       */
-       /* PA3  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exit       */
-       /* PA2  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exit       */
-       /* PA1  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exit       */
-       /* PA0  */ { 0,   0,   0,   0,   0,   0 }  /* pin does not exit       */
-    },
-
-    /* Port B configuration */
-    {   /*          conf ppar psor pdir podr pdat */
-       /* PB31 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1257           */
-       /* PB30 */ { 1,   1,   0,   0,   0,   0 }, /* FCC2   RMII CRS_DV      */
-       /* PB29 */ { 1,   1,   1,   1,   0,   0 }, /* FCC2   RMII TX_EN       */
-       /* PB28 */ { 1,   1,   0,   0,   0,   0 }, /* FCC2   RMII RX_ERR      */
-       /* PB27 */ { 1,   1,   1,   0,   1,   0 }, /* TDM_B2 L1TXD XXX val=0  */
-       /* PB26 */ { 1,   1,   1,   0,   1,   0 }, /* TDM_B2 L1RXD XXX val,dr */
-       /* PB25 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1259           */
-       /* PB24 */ { 1,   1,   1,   0,   0,   0 }, /* TDM_B2 L1RSYNC          */
-       /* PB23 */ { 1,   1,   0,   1,   0,   0 }, /* FCC2   RMII TxD[1]      */
-       /* PB22 */ { 1,   1,   0,   1,   0,   0 }, /* FCC2   RMII TxD[0]      */
-       /* PB21 */ { 1,   1,   0,   0,   0,   0 }, /* FCC2   RMII RxD[0]      */
-       /* PB20 */ { 1,   1,   0,   0,   0,   0 }, /* FCC2   RMII RxD[1]      */
-       /* PB19 */ { 1,   0,   0,   1,   0,   1 }, /* GPO    PHY MDC          */
-       /* PB18 */ { 1,   0,   0,   0,   0,   0 }, /* GPIO   PHY MDIO         */
-       /* PB17 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB16 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB15 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB14 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB13 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB12 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB11 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB10 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB9  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB8  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB7  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB6  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB5  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB4  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB3  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB2  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB1  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PB0  */ { 0,   0,   0,   0,   0,   0 }  /* pin does not exist      */
-    },
-
-    /* Port C */
-    {   /*          conf ppar psor pdir podr pdat */
-       /* PC31 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PC30 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PC29 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1183           */
-       /* PC28 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1184           */
-       /* PC27 */ { 1,   1,   0,   0,   0,   0 }, /* CLK5   TDM_A1 RX        */
-       /* PC26 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1185           */
-       /* PC25 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1178           */
-       /* PC24 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1186           */
-       /* PC23 */ { 1,   1,   0,   0,   0,   0 }, /* CLK9   TDM_B2 RX        */
-       /* PC22 */ { 1,   1,   0,   0,   0,   0 }, /* CLK10  FCC1 RMII REFCLK */
-       /* PC21 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1187           */
-       /* PC20 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1182           */
-       /* PC19 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1188           */
-       /* PC18 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    HW RESET         */
-       /* PC17 */ { 1,   1,   0,   1,   0,   0 }, /* BRG8   SWITCH CLKIN     */
-       /* PC16 */ { 1,   1,   0,   0,   0,   0 }, /* CLK16  FCC2 RMII REFCLK */
-       /* PC15 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL1_MTYPE_3      */
-       /* PC14 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL1_MTYPE_2      */
-       /* PC13 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL1_MTYPE_1      */
-       /* PC12 */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL1_MTYPE_0      */
-       /* PC11 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1176           */
-       /* PC10 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1177           */
-       /* PC9  */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL2_MTYPE_3      */
-       /* PC8  */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL2_MTYPE_2      */
-       /* PC7  */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL2_MTYPE_1      */
-       /* PC6  */ { 1,   0,   0,   0,   0,   0 }, /* GPI    SL2_MTYPE_0      */
-       /* PC5  */ { 1,   1,   0,   1,   0,   0 }, /* SMC1   TXD              */
-       /* PC4  */ { 1,   1,   0,   0,   0,   0 }, /* SMC1   RXD              */
-       /* PC3  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PC2  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PC1  */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1192           */
-       /* PC0  */ { 1,   0,   0,   0,   0,   0 }, /* GPI    RACK             */
-    },
-
-    /* Port D */
-    {   /*          conf ppar psor pdir podr pdat */
-       /* PD31 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1193           */
-       /* PD30 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1194           */
-       /* PD29 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1195           */
-       /* PD28 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD27 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD26 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD25 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1179           */
-       /* PD24 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1180           */
-       /* PD23 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1181           */
-       /* PD22 */ { 1,   1,   1,   0,   1,   0 }, /* TDM_A2 L1TXD            */
-       /* PD21 */ { 1,   1,   1,   0,   1,   0 }, /* TDM_A2 L1RXD            */
-       /* PD20 */ { 1,   1,   1,   0,   0,   0 }, /* TDM_A2 L1RSYNC          */
-       /* PD19 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1196           */
-       /* PD18 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1197           */
-       /* PD17 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1198           */
-       /* PD16 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1199           */
-       /* PD15 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1250           */
-       /* PD14 */ { 1,   0,   0,   1,   0,   0 }, /* GPO    TP1251           */
-       /* PD13 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD12 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD11 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD10 */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD9  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD8  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD7  */ { 0,   0,   0,   1,   0,   0 }, /* GPO    FL_BYTE          */
-       /* PD6  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD5  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD4  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD3  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD2  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD1  */ { 0,   0,   0,   0,   0,   0 }, /* pin does not exist      */
-       /* PD0  */ { 0,   0,   0,   0,   0,   0 }  /* pin does not exist      */
-    }
-};
-
-void reset_phy (void)
-{
-       volatile ioport_t *iop;
-#if defined(CONFIG_CMD_NET)
-       int i;
-       unsigned short val;
-#endif
-
-       iop = ioport_addr((immap_t *)CONFIG_SYS_IMMR, 0);
-
-       /* Reset the PHY */
-       iop->pdat &= 0xfff7ffff;        /* PA12 = |SWITCH_RESET */
-#if defined(CONFIG_CMD_NET)
-       udelay(20000);
-       iop->pdat |= 0x00080000;
-       for (i=0; i<100; i++) {
-               udelay(20000);
-               if (bb_miiphy_read("FCC1", CONFIG_SYS_PHY_ADDR,2,&val ) == 0) {
-                       break;
-               }
-       }
-       /* initialize switch */
-       m88e6060_initialize( CONFIG_SYS_PHY_ADDR );
-#endif
-}
-
-static unsigned long UPMATable[] = {
-       0x8fffec00,  0x0ffcfc00,  0x0ffcfc00,  0x0ffcfc00, /* Words 0 to 3      */
-       0x0ffcfc04,  0x3ffdfc00,  0xfffffc01,  0xfffffc01, /* Words 4 to 7      */
-       0xfffffc00,  0xfffffc04,  0xfffffc01,  0xfffffc00, /* Words 8 to 11     */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc00, /* Words 12 to 15    */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc00, /* Words 16 to 19    */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc01, /* Words 20 to 23    */
-       0x8fffec00,  0x00fffc00,  0x00fffc00,  0x00fffc00, /* Words 24 to 27    */
-       0x0ffffc04,  0xfffffc01,  0xfffffc01,  0xfffffc01, /* Words 28 to 31    */
-       0xfffffc00,  0xfffffc01,  0xfffffc01,  0xfffffc00, /* Words 32 to 35    */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc00, /* Words 36 to 39    */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc00, /* Words 40 to 43    */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc01, /* Words 44 to 47    */
-       0xfffffc00,  0xfffffc04,  0xfffffc01,  0xfffffc00, /* Words 48 to 51    */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc00, /* Words 52 to 55    */
-       0xfffffc00,  0xfffffc00,  0xfffffc00,  0xfffffc01, /* Words 56 to 59    */
-       0xffffec00,  0xffffec04,  0xffffec00,  0xfffffc01  /* Words 60 to 63    */
-};
-
-int board_early_init_f (void)
-{
-       volatile immap_t *immap;
-       volatile memctl8260_t *memctl;
-       volatile unsigned char *dummy;
-       int i;
-
-       immap = (immap_t *) CONFIG_SYS_IMMR;
-       memctl = &immap->im_memctl;
-
-#if 0
-       /* CS2-5 - DSP via UPMA */
-       dummy = (volatile unsigned char *) (memctl->memc_br2 & BRx_BA_MSK);
-       memctl->memc_mar = 0;
-       memctl->memc_mamr = MxMR_OP_WARR;
-       for (i = 0; i < 64; i++) {
-               memctl->memc_mdr = UPMATable[i];
-               *dummy = 0;
-       }
-       memctl->memc_mamr = 0x00044440;
-#else
-       /* CS7 - DPRAM via UPMA */
-       dummy = (volatile unsigned char *) (memctl->memc_br7 & BRx_BA_MSK);
-       memctl->memc_mar = 0;
-       memctl->memc_mamr = MxMR_OP_WARR;
-       for (i = 0; i < 64; i++) {
-               memctl->memc_mdr = UPMATable[i];
-               *dummy = 0;
-       }
-       memctl->memc_mamr = 0x00044440;
-#endif
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       volatile ioport_t *iop;
-       __maybe_unused unsigned char temp;
-#if 0
-       /* DUMP UPMA RAM */
-       volatile immap_t *immap;
-       volatile memctl8260_t *memctl;
-       volatile unsigned char *dummy;
-       unsigned char c;
-       int i;
-
-       immap = (immap_t *) CONFIG_SYS_IMMR;
-       memctl = &immap->im_memctl;
-
-
-       dummy = (volatile unsigned char *) (memctl->memc_br7 & BRx_BA_MSK);
-       memctl->memc_mar = 0;
-       memctl->memc_mamr = MxMR_OP_RARR;
-       for (i = 0; i < 64; i++) {
-               c = *dummy;
-               printf( "UPMA[%02d]: 0x%08lx,0x%08lx: 0x%08lx\n",i,
-                       memctl->memc_mamr,
-                       memctl->memc_mar,
-                       memctl->memc_mdr );
-       }
-       memctl->memc_mamr = 0x00044440;
-#endif
-       /* enable buffers (DSP, DPRAM) */
-       iop = ioport_addr((immap_t *)CONFIG_SYS_IMMR, 0);
-       iop->pdat &= 0xfffbffff;        /* PA13 = |EN_M_BCTL1 */
-
-       /* destroy DPRAM magic */
-       *(volatile unsigned char *)0xf0500000 = 0x00;
-
-       /* clear any pending DPRAM irq */
-       temp = *(volatile unsigned char *)0xf05003ff;
-
-       /* write module-id into DPRAM */
-       *(volatile unsigned char *)0xf0500201 = 0x50;
-
-       return 0;
-}
-
-#if defined(CONFIG_HAVE_OWN_RESET)
-int
-do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       volatile ioport_t *iop;
-
-       iop = ioport_addr((immap_t *)CONFIG_SYS_IMMR, 2);
-       iop->pdat |= 0x00002000;        /* PC18 = HW_RESET */
-       return 1;
-}
-#endif /* CONFIG_HAVE_OWN_RESET */
-
-#define ns2clk(ns) (ns / (1000000000 / CONFIG_8260_CLKIN) + 1)
-
-phys_size_t initdram (int board_type)
-{
-#ifndef CONFIG_SYS_RAMBOOT
-       volatile immap_t *immap;
-       volatile memctl8260_t *memctl;
-       volatile uchar *ramaddr;
-       int i;
-       uchar c;
-
-       immap = (immap_t *) CONFIG_SYS_IMMR;
-       memctl = &immap->im_memctl;
-       ramaddr = (uchar *) CONFIG_SYS_SDRAM_BASE;
-       c = 0xff;
-
-       immap->im_siu_conf.sc_ppc_acr  = 0x02;
-       immap->im_siu_conf.sc_ppc_alrh = 0x01267893;
-       immap->im_siu_conf.sc_ppc_alrl = 0x89abcdef;
-       immap->im_siu_conf.sc_tescr1   = 0x00000000;
-       immap->im_siu_conf.sc_tescr2   = 0x00000000;
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_or1 = CONFIG_SYS_OR1_PRELIM;
-       memctl->memc_br1 = CONFIG_SYS_SDRAM_BASE | CONFIG_SYS_BR1_PRELIM;
-
-       /* Precharge all banks */
-       memctl->memc_psdmr = CONFIG_SYS_PSDMR | 0x28000000;
-       *ramaddr = c;
-
-       /* CBR refresh */
-       memctl->memc_psdmr = CONFIG_SYS_PSDMR | 0x08000000;
-       for (i = 0; i < 8; i++)
-               *ramaddr = c;
-
-       /* Mode Register write */
-       memctl->memc_psdmr = CONFIG_SYS_PSDMR | 0x18000000;
-       *ramaddr = c;
-
-       /* Refresh enable */
-       memctl->memc_psdmr = CONFIG_SYS_PSDMR | 0x40000000;
-       *ramaddr = c;
-#endif /* CONFIG_SYS_RAMBOOT */
-
-       return (CONFIG_SYS_SDRAM_SIZE);
-}
-
-int checkboard (void)
-{
-#ifdef CONFIG_CLKIN_66MHz
-       puts ("Board: Elmeg VoVPN Gateway Module (66MHz)\n");
-#else
-       puts ("Board: Elmeg VoVPN Gateway Module (100MHz)\n");
-#endif
-       return 0;
-}
diff --git a/board/g2000/Kconfig b/board/g2000/Kconfig
deleted file mode 100644 (file)
index 031fae9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_G2000
-
-config SYS_BOARD
-       default "g2000"
-
-config SYS_CONFIG_NAME
-       default "G2000"
-
-endif
diff --git a/board/g2000/MAINTAINERS b/board/g2000/MAINTAINERS
deleted file mode 100644 (file)
index 8171b10..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-G2000 BOARD
-M:     Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-S:     Maintained
-F:     board/g2000/
-F:     include/configs/G2000.h
-F:     configs/G2000_defconfig
diff --git a/board/g2000/Makefile b/board/g2000/Makefile
deleted file mode 100644 (file)
index 74c8053..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = g2000.o strataflash.o
diff --git a/board/g2000/g2000.c b/board/g2000/g2000.c
deleted file mode 100644 (file)
index a64f946..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-
-#define MEM_MCOPT1_INIT_VAL     0x00800000
-#define MEM_RTR_INIT_VAL        0x04070000
-#define MEM_PMIT_INIT_VAL       0x07c00000
-#define MEM_MB0CF_INIT_VAL      0x00082001
-#define MEM_MB1CF_INIT_VAL      0x04082000
-#define MEM_SDTR1_INIT_VAL      0x00854005
-#define SDRAM0_CFG_ENABLE       0x80000000
-
-#define CONFIG_SYS_SDRAM_SIZE          0x04000000      /* 64 MB */
-
-int board_early_init_f (void)
-{
-#if 0 /* test-only */
-       mtdcr (UIC0SR, 0xFFFFFFFF);      /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);      /* disable all ints */
-       mtdcr (UIC0CR, 0x00000010);
-       mtdcr (UIC0PR, 0xFFFF7FF0);      /* set int polarities */
-       mtdcr (UIC0TR, 0x00000010);      /* set int trigger levels */
-       mtdcr (UIC0SR, 0xFFFFFFFF);      /* clear all ints */
-#else
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFFF0);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-#endif
-
-#if 1 /* test-only */
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000); /* ebc always driven */
-#endif
-
-       return 0;
-}
-
-
-int misc_init_f (void)
-{
-       return 0;  /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
-#if defined(CONFIG_CMD_NAND)
-       /*
-        * Set NAND-FLASH GPIO signals to default
-        */
-       out32(GPIO0_OR, in32(GPIO0_OR) & ~(CONFIG_SYS_NAND_CLE | CONFIG_SYS_NAND_ALE));
-       out32(GPIO0_OR, in32(GPIO0_OR) | CONFIG_SYS_NAND_CE);
-#endif
-
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming G2000");
-       } else {
-               puts(str);
-       }
-
-       putc ('\n');
-
-       return 0;
-}
-
-
-/* -------------------------------------------------------------------------
-  G2000 rev B is an embeded design. we don't read for spd of this version.
-  Doing static SDRAM controller configuration in the following section.
-   ------------------------------------------------------------------------- */
-
-long int init_sdram_static_settings(void)
-{
-       /* disable memcontroller so updates work */
-       mtsdram(SDRAM0_CFG, MEM_MCOPT1_INIT_VAL);
-       mtsdram(SDRAM0_RTR, MEM_RTR_INIT_VAL);
-       mtsdram(SDRAM0_PMIT, MEM_PMIT_INIT_VAL);
-       mtsdram(SDRAM0_B0CR, MEM_MB0CF_INIT_VAL);
-       mtsdram(SDRAM0_B1CR, MEM_MB1CF_INIT_VAL);
-       mtsdram(SDRAM0_TR, MEM_SDTR1_INIT_VAL);
-
-       /* SDRAM have a power on delay,  500 micro should do */
-       udelay(500);
-       mtsdram(SDRAM0_CFG, MEM_MCOPT1_INIT_VAL|SDRAM0_CFG_ENABLE);
-
-       return (CONFIG_SYS_SDRAM_SIZE); /* CONFIG_SYS_SDRAM_SIZE is in G2000.h */
- }
-
-
-phys_size_t initdram (int board_type)
-{
-       long int ret;
-
-/* flzt, we can still turn this on in the future */
-/* #ifdef CONFIG_SPD_EEPROM
-       ret = spd_sdram ();
-#else
-       ret = init_sdram_static_settings();
-#endif
-*/
-
-       ret = init_sdram_static_settings();
-
-       return ret;
-}
-
-#if 0 /* test-only !!! */
-int do_dumpebc(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong ap, cr;
-
-       printf("\nEBC registers for PPC405GP:\n");
-       mfebc(PB0AP, ap); mfebc(PB0CR, cr);
-       printf("0: AP=%08lx CP=%08lx\n", ap, cr);
-       mfebc(PB1AP, ap); mfebc(PB1CR, cr);
-       printf("1: AP=%08lx CP=%08lx\n", ap, cr);
-       mfebc(PB2AP, ap); mfebc(PB2CR, cr);
-       printf("2: AP=%08lx CP=%08lx\n", ap, cr);
-       mfebc(PB3AP, ap); mfebc(PB3CR, cr);
-       printf("3: AP=%08lx CP=%08lx\n", ap, cr);
-       mfebc(PB4AP, ap); mfebc(PB4CR, cr);
-       printf("4: AP=%08lx CP=%08lx\n", ap, cr);
-       printf("\n");
-
-       return 0;
-}
-U_BOOT_CMD(
-       dumpebc,        1,      1,      do_dumpebc,
-       "Dump all EBC registers",
-       ""
-);
-
-
-int do_dumpdcr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int i;
-
-       printf("\nDevice Configuration Registers (DCR's) for PPC405GP:");
-       for (i=0; i<=0x1e0; i++) {
-               if (!(i % 0x8)) {
-                       printf("\n%04x ", i);
-               }
-               printf("%08lx ", get_dcr(i));
-       }
-       printf("\n");
-
-       return 0;
-}
-U_BOOT_CMD(
-       dumpdcr,        1,      1,      do_dumpdcr,
-       "Dump all DCR registers",
-       ""
-);
-
-
-int do_dumpspr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       printf("\nSpecial Purpose Registers (SPR's) for PPC405GP:");
-       printf("\n%04x %08x ", 947, mfspr(947));
-       printf("\n%04x %08x ", 9, mfspr(9));
-       printf("\n%04x %08x ", 1014, mfspr(1014));
-       printf("\n%04x %08x ", 1015, mfspr(1015));
-       printf("\n%04x %08x ", 1010, mfspr(1010));
-       printf("\n%04x %08x ", 957, mfspr(957));
-       printf("\n%04x %08x ", 1008, mfspr(1008));
-       printf("\n%04x %08x ", 1018, mfspr(1018));
-       printf("\n%04x %08x ", 954, mfspr(954));
-       printf("\n%04x %08x ", 950, mfspr(950));
-       printf("\n%04x %08x ", 951, mfspr(951));
-       printf("\n%04x %08x ", 981, mfspr(981));
-       printf("\n%04x %08x ", 980, mfspr(980));
-       printf("\n%04x %08x ", 982, mfspr(982));
-       printf("\n%04x %08x ", 1012, mfspr(1012));
-       printf("\n%04x %08x ", 1013, mfspr(1013));
-       printf("\n%04x %08x ", 948, mfspr(948));
-       printf("\n%04x %08x ", 949, mfspr(949));
-       printf("\n%04x %08x ", 1019, mfspr(1019));
-       printf("\n%04x %08x ", 979, mfspr(979));
-       printf("\n%04x %08x ", 8, mfspr(8));
-       printf("\n%04x %08x ", 945, mfspr(945));
-       printf("\n%04x %08x ", 987, mfspr(987));
-       printf("\n%04x %08x ", 287, mfspr(287));
-       printf("\n%04x %08x ", 953, mfspr(953));
-       printf("\n%04x %08x ", 955, mfspr(955));
-       printf("\n%04x %08x ", 272, mfspr(272));
-       printf("\n%04x %08x ", 273, mfspr(273));
-       printf("\n%04x %08x ", 274, mfspr(274));
-       printf("\n%04x %08x ", 275, mfspr(275));
-       printf("\n%04x %08x ", 260, mfspr(260));
-       printf("\n%04x %08x ", 276, mfspr(276));
-       printf("\n%04x %08x ", 261, mfspr(261));
-       printf("\n%04x %08x ", 277, mfspr(277));
-       printf("\n%04x %08x ", 262, mfspr(262));
-       printf("\n%04x %08x ", 278, mfspr(278));
-       printf("\n%04x %08x ", 263, mfspr(263));
-       printf("\n%04x %08x ", 279, mfspr(279));
-       printf("\n%04x %08x ", 26, mfspr(26));
-       printf("\n%04x %08x ", 27, mfspr(27));
-       printf("\n%04x %08x ", 990, mfspr(990));
-       printf("\n%04x %08x ", 991, mfspr(991));
-       printf("\n%04x %08x ", 956, mfspr(956));
-       printf("\n%04x %08x ", 284, mfspr(284));
-       printf("\n%04x %08x ", 285, mfspr(285));
-       printf("\n%04x %08x ", 986, mfspr(986));
-       printf("\n%04x %08x ", 984, mfspr(984));
-       printf("\n%04x %08x ", 256, mfspr(256));
-       printf("\n%04x %08x ", 1, mfspr(1));
-       printf("\n%04x %08x ", 944, mfspr(944));
-       printf("\n");
-
-       return 0;
-}
-U_BOOT_CMD(
-       dumpspr,        1,      1,      do_dumpspr,
-       "Dump all SPR registers",
-       ""
-);
-#endif
diff --git a/board/g2000/strataflash.c b/board/g2000/strataflash.c
deleted file mode 100644 (file)
index 1d29eb4..0000000
+++ /dev/null
@@ -1,774 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#undef  DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for ppcboot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI                  0x98
-#define FLASH_CMD_READ_ID              0x90
-#define FLASH_CMD_RESET                        0xff
-#define FLASH_CMD_BLOCK_ERASE          0x20
-#define FLASH_CMD_ERASE_CONFIRM                0xD0
-#define FLASH_CMD_WRITE                        0x40
-#define FLASH_CMD_PROTECT              0x60
-#define FLASH_CMD_PROTECT_SET          0x01
-#define FLASH_CMD_PROTECT_CLEAR                0xD0
-#define FLASH_CMD_CLEAR_STATUS         0x50
-#define FLASH_CMD_WRITE_TO_BUFFER       0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM  0xD0
-
-#define FLASH_STATUS_DONE              0x80
-#define FLASH_STATUS_ESS               0x40
-#define FLASH_STATUS_ECLBS             0x20
-#define FLASH_STATUS_PSLBS             0x10
-#define FLASH_STATUS_VPENS             0x08
-#define FLASH_STATUS_PSS               0x04
-#define FLASH_STATUS_DPS               0x02
-#define FLASH_STATUS_R                 0x01
-#define FLASH_STATUS_PROTECT           0x01
-
-#define FLASH_OFFSET_CFI               0x55
-#define FLASH_OFFSET_CFI_RESP          0x10
-#define FLASH_OFFSET_WTOUT             0x1F
-#define FLASH_OFFSET_WBTOUT             0x20
-#define FLASH_OFFSET_ETOUT             0x21
-#define FLASH_OFFSET_CETOUT             0x22
-#define FLASH_OFFSET_WMAX_TOUT         0x23
-#define FLASH_OFFSET_WBMAX_TOUT         0x24
-#define FLASH_OFFSET_EMAX_TOUT         0x25
-#define FLASH_OFFSET_CEMAX_TOUT         0x26
-#define FLASH_OFFSET_SIZE              0x27
-#define FLASH_OFFSET_INTERFACE          0x28
-#define FLASH_OFFSET_BUFFER_SIZE        0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS     0x2D
-#define FLASH_OFFSET_PROTECT           0x02
-#define FLASH_OFFSET_USER_PROTECTION    0x85
-#define FLASH_OFFSET_INTEL_PROTECTION   0x81
-
-#define FLASH_MAN_CFI                  0x01000000
-
-typedef union {
-       unsigned char c;
-       unsigned short w;
-       unsigned long l;
-} cfiword_t;
-
-typedef union {
-       unsigned char * cp;
-       unsigned short *wp;
-       unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt);
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar * flash_make_addr(flash_info_t * info, int sect, int offset)
-{
-       return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
-}
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
-       uchar *cp;
-       cp = flash_make_addr(info, 0, offset);
-       return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect,  uchar offset)
-{
-    uchar * addr;
-
-    addr = flash_make_addr(info, sect, offset);
-    return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect,  uchar offset)
-{
-    uchar * addr;
-
-    addr = flash_make_addr(info, sect, offset);
-    return ( (addr[(2*info->portwidth) - 1] << 24 ) | (addr[(info->portwidth) -1] << 16) |
-           (addr[(4*info->portwidth) - 1] << 8) | addr[(3*info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size;
-       int i;
-       unsigned long  address;
-
-
-       /* The flash is positioned back to back, with the demultiplexing of the chip
-        * based on the A24 address line.
-        *
-        */
-
-       address = CONFIG_SYS_FLASH_BASE;
-       size = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-               size += flash_info[i].size = flash_get_size(address, i);
-               address += CONFIG_SYS_FLASH_INCREMENT;
-               if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-                       printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",i,
-                               flash_info[0].size, flash_info[i].size<<20);
-               }
-       }
-
-#if 0 /* test-only */
-       /* Monitor protection ON by default */
-#if (CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE)
-       for(i=0; flash_info[0].start[i] < CONFIG_SYS_MONITOR_BASE+CONFIG_SYS_MONITOR_LEN-1; i++)
-               (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-#else
-       /* monitor protection ON by default */
-       flash_protect (FLAG_PROTECT_SET,
-                      - CONFIG_SYS_MONITOR_LEN,
-                      - 1, &flash_info[1]);
-#endif
-
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int rcode = 0;
-       int prot;
-       int sect;
-
-       if( info->flash_id != FLASH_MAN_CFI) {
-               printf ("Can't erase unknown flash type - aborted\n");
-               return 1;
-       }
-       if ((s_first < 0) || (s_first > s_last)) {
-               printf ("- no sectors to erase\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
-                       flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
-                       flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
-                       if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
-                               rcode = 1;
-                       } else
-                               printf(".");
-               }
-       }
-       printf (" done\n");
-       return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id != FLASH_MAN_CFI) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       printf("CFI conformant FLASH (%d x %d)",
-              (info->portwidth  << 3 ), (info->chipwidth  << 3 ));
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-       printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
-              info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-#ifdef CONFIG_SYS_FLASH_EMPTY_INFO
-               int k;
-               int size;
-               int erased;
-               volatile unsigned long *flash;
-
-               /*
-                * Check if whole sector is erased
-                */
-               if (i != (info->sector_count-1))
-                 size = info->start[i+1] - info->start[i];
-               else
-                 size = info->start[0] + info->size - info->start[i];
-               erased = 1;
-               flash = (volatile unsigned long *)info->start[i];
-               size = size >> 2;        /* divide by 4 for longword access */
-               for (k=0; k<size; k++)
-                 {
-                   if (*flash++ != 0xffffffff)
-                     {
-                       erased = 0;
-                       break;
-                     }
-                 }
-
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               /* print empty and read-only info */
-               printf (" %08lX%s%s",
-                       info->start[i],
-                       erased ? " E" : "  ",
-                       info->protect[i] ? "RO " : "   ");
-#else
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     ");
-#endif
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong wp;
-       ulong cp;
-       int aln;
-       cfiword_t cword;
-       int i, rc;
-
-       /* get lower aligned address */
-       wp = (addr & ~(info->portwidth - 1));
-
-       /* handle unaligned start */
-       if((aln = addr - wp) != 0) {
-               cword.l = 0;
-               cp = wp;
-               for(i=0;i<aln; ++i, ++cp)
-                       flash_add_byte(info, &cword, (*(uchar *)cp));
-
-               for(; (i< info->portwidth) && (cnt > 0) ; i++) {
-                       flash_add_byte(info, &cword, *src++);
-                       cnt--;
-                       cp++;
-               }
-               for(; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
-                       flash_add_byte(info, &cword, (*(uchar *)cp));
-               if((rc = flash_write_cfiword(info, wp, cword)) != 0)
-                       return rc;
-               wp = cp;
-       }
-
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-       while(cnt >= info->portwidth) {
-               i = info->buffer_size > cnt? cnt: info->buffer_size;
-               if((rc = flash_write_cfibuffer(info, wp, src,i)) != ERR_OK)
-                       return rc;
-               wp += i;
-               src += i;
-               cnt -=i;
-       }
-#else
-       /* handle the aligned part */
-       while(cnt >= info->portwidth) {
-               cword.l = 0;
-               for(i = 0; i < info->portwidth; i++) {
-                       flash_add_byte(info, &cword, *src++);
-               }
-               if((rc = flash_write_cfiword(info, wp, cword)) != 0)
-                       return rc;
-               wp += info->portwidth;
-               cnt -= info->portwidth;
-       }
-#endif /* CONFIG_SYS_FLASH_USE_BUFFER_WRITE */
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       cword.l = 0;
-       for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
-               flash_add_byte(info, &cword, *src++);
-               --cnt;
-       }
-       for (; i<info->portwidth; ++i, ++cp) {
-               flash_add_byte(info, & cword, (*(uchar *)cp));
-       }
-
-       return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
-       int retcode = 0;
-
-       flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
-       flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
-       if(prot)
-               flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
-       else
-               flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
-       if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
-                                        prot?"protect":"unprotect")) == 0) {
-
-               info->protect[sector] = prot;
-               /* Intel's unprotect unprotects all locking */
-               if(prot == 0) {
-                       int i;
-                       for(i = 0 ; i<info->sector_count; i++) {
-                               if(info->protect[i])
-                                       flash_real_protect(info, i, 1);
-                       }
-               }
-       }
-
-       return retcode;
-}
-/*-----------------------------------------------------------------------
- *  wait for XSR.7 to be set. Time out with an error if it does not.
- *  This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
-       ulong start;
-
-       /* Wait for command completion */
-       start = get_timer (0);
-       while(!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
-               if (get_timer(start) > info->erase_blk_tout) {
-                       printf("Flash %s timeout at address %lx\n", prompt, info->start[sector]);
-                       flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
-                       return ERR_TIMOUT;
-               }
-       }
-       return ERR_OK;
-}
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
-       int retcode;
-       retcode = flash_status_check(info, sector, tout, prompt);
-       if((retcode == ERR_OK) && !flash_isequal(info,sector, 0, FLASH_STATUS_DONE)) {
-               retcode = ERR_INVAL;
-               printf("Flash %s error at address %lx\n", prompt,info->start[sector]);
-               if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)){
-                       printf("Command Sequence Error.\n");
-               } else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
-                       printf("Block Erase Error.\n");
-                       retcode = ERR_NOT_ERASED;
-               } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
-                       printf("Locking Error\n");
-               }
-               if(flash_isset(info, sector, 0, FLASH_STATUS_DPS)){
-                       printf("Block locked.\n");
-                       retcode = ERR_PROTECTED;
-               }
-               if(flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
-                       printf("Vpp Low Error.\n");
-       }
-       flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
-       return retcode;
-}
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c)
-{
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               cword->c = c;
-               break;
-       case FLASH_CFI_16BIT:
-               cword->w = (cword->w << 8) | c;
-               break;
-       case FLASH_CFI_32BIT:
-               cword->l = (cword->l << 8) | c;
-       }
-}
-
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf)
-{
-       int i;
-       uchar *cp = (uchar *)cmdbuf;
-       for(i=0; i< info->portwidth; i++)
-               *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-
-       volatile cfiptr_t addr;
-       cfiword_t cword;
-       addr.cp = flash_make_addr(info, sect, offset);
-       flash_make_cmd(info, cmd, &cword);
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               *addr.cp = cword.c;
-               break;
-       case FLASH_CFI_16BIT:
-               *addr.wp = cword.w;
-               break;
-       case FLASH_CFI_32BIT:
-               *addr.lp = cword.l;
-               break;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-       cfiptr_t cptr;
-       cfiword_t cword;
-       int retval;
-       cptr.cp = flash_make_addr(info, sect, offset);
-       flash_make_cmd(info, cmd, &cword);
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               retval = (cptr.cp[0] == cword.c);
-               break;
-       case FLASH_CFI_16BIT:
-               retval = (cptr.wp[0] == cword.w);
-               break;
-       case FLASH_CFI_32BIT:
-               retval = (cptr.lp[0] == cword.l);
-               break;
-       default:
-               retval = 0;
-               break;
-       }
-       return retval;
-}
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-       cfiptr_t cptr;
-       cfiword_t cword;
-       int retval;
-       cptr.cp = flash_make_addr(info, sect, offset);
-       flash_make_cmd(info, cmd, &cword);
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               retval = ((cptr.cp[0] & cword.c) == cword.c);
-               break;
-       case FLASH_CFI_16BIT:
-               retval = ((cptr.wp[0] & cword.w) == cword.w);
-               break;
-       case FLASH_CFI_32BIT:
-               retval = ((cptr.lp[0] & cword.l) == cword.l);
-               break;
-       default:
-               retval = 0;
-               break;
-       }
-       return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
-*/
-static int flash_detect_cfi(flash_info_t * info)
-{
-
-       for(info->portwidth=FLASH_CFI_8BIT; info->portwidth <= FLASH_CFI_32BIT;
-           info->portwidth <<= 1) {
-               for(info->chipwidth =FLASH_CFI_BY8;
-                   info->chipwidth <= info->portwidth;
-                   info->chipwidth <<= 1) {
-                       flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
-                       flash_write_cmd(info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
-                       if(flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP,'Q') &&
-                          flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
-                          flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y'))
-                               return 1;
-               }
-       }
-       return 0;
-}
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
-       flash_info_t * info = &flash_info[banknum];
-       int i, j;
-       int sect_cnt;
-       unsigned long sector;
-       unsigned long tmp;
-       int size_ratio;
-       uchar num_erase_regions;
-       int  erase_region_size;
-       int  erase_region_count;
-
-       info->start[0] = base;
-
-       if(flash_detect_cfi(info)){
-#ifdef DEBUG_FLASH
-               printf("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
-               size_ratio = info->portwidth / info->chipwidth;
-               num_erase_regions = flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
-               printf("found %d erase regions\n", num_erase_regions);
-#endif
-               sect_cnt = 0;
-               sector = base;
-               for(i = 0 ; i < num_erase_regions; i++) {
-                       if(i > NUM_ERASE_REGIONS) {
-                               printf("%d erase regions found, only %d used\n",
-                                      num_erase_regions, NUM_ERASE_REGIONS);
-                               break;
-                       }
-                       tmp = flash_read_long(info, 0, FLASH_OFFSET_ERASE_REGIONS);
-                       erase_region_size = (tmp & 0xffff)? ((tmp & 0xffff) * 256): 128;
-                       tmp >>= 16;
-                       erase_region_count = (tmp & 0xffff) +1;
-                       for(j = 0; j< erase_region_count; j++) {
-                               info->start[sect_cnt] = sector;
-                               sector += (erase_region_size * size_ratio);
-                               info->protect[sect_cnt] = flash_isset(info, sect_cnt, FLASH_OFFSET_PROTECT, FLASH_STATUS_PROTECT);
-                               sect_cnt++;
-                       }
-               }
-
-               info->sector_count = sect_cnt;
-               /* multiply the size by the number of chips */
-               info->size = (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) * size_ratio;
-               info->buffer_size = (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
-               tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
-               info->erase_blk_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
-               tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
-               info->buffer_write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
-               tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
-               info->write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT)))/ 1000;
-               info->flash_id = FLASH_MAN_CFI;
-       }
-
-       flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
-       return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
-{
-
-       cfiptr_t cptr;
-       int flag;
-
-       cptr.cp = (uchar *)dest;
-
-       /* Check if Flash is (sufficiently) erased */
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               flag = ((cptr.cp[0] & cword.c) == cword.c);
-               break;
-       case FLASH_CFI_16BIT:
-               flag = ((cptr.wp[0] & cword.w) == cword.w);
-               break;
-       case FLASH_CFI_32BIT:
-               flag = ((cptr.lp[0] & cword.l)  == cword.l);
-               break;
-       default:
-               return 2;
-       }
-       if(!flag)
-               return 2;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
-       flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               cptr.cp[0] = cword.c;
-               break;
-       case FLASH_CFI_16BIT:
-               cptr.wp[0] = cword.w;
-               break;
-       case FLASH_CFI_32BIT:
-               cptr.lp[0] = cword.l;
-               break;
-       }
-
-       /* re-enable interrupts if necessary */
-       if(flag)
-               enable_interrupts();
-
-       return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t *info, ulong addr)
-{
-       int sector;
-       for(sector = info->sector_count - 1; sector >= 0; sector--) {
-               if(addr >= info->start[sector])
-                       break;
-       }
-       return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-
-       int sector;
-       int cnt;
-       int retcode;
-       volatile cfiptr_t src;
-       volatile cfiptr_t dst;
-
-       src.cp = cp;
-       dst.cp = (uchar *)dest;
-       sector = find_sector(info, dest);
-       flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
-       flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
-       if((retcode = flash_status_check(info, sector, info->buffer_write_tout,
-                                        "write to buffer")) == ERR_OK) {
-               switch(info->portwidth) {
-               case FLASH_CFI_8BIT:
-                       cnt = len;
-                       break;
-               case FLASH_CFI_16BIT:
-                       cnt = len >> 1;
-                       if (len & 0x1) { /* test-only: unaligned size */
-                               puts("\nUnalgined size!!!\n"); /* test-only */
-                               cnt++;
-                       }
-                       break;
-               case FLASH_CFI_32BIT:
-                       cnt = len >> 2;
-                       break;
-               default:
-                       return ERR_INVAL;
-                       break;
-               }
-               flash_write_cmd(info, sector, 0, (uchar)cnt-1);
-               while(cnt-- > 0) {
-                       switch(info->portwidth) {
-                       case FLASH_CFI_8BIT:
-                               *dst.cp++ = *src.cp++;
-                               break;
-                       case FLASH_CFI_16BIT:
-                               *dst.wp++ = *src.wp++;
-                               break;
-                       case FLASH_CFI_32BIT:
-                               *dst.lp++ = *src.lp++;
-                               break;
-                       default:
-                               return ERR_INVAL;
-                               break;
-                       }
-               }
-               flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
-               retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
-                                            "buffer write");
-       }
-       flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
-       return retcode;
-}
-#endif /* CONFIG_SYS_USE_FLASH_BUFFER_WRITE */
index 8da050404cfa58ea528bc2e811525d9d6c7fdabb..c12a002179a584ebb2c3bbe38db1ab419260f091 100644 (file)
@@ -1,14 +1,8 @@
 if TARGET_GR_CPCI_AX2000
 
-config SYS_CPU
-       default "leon3"
-
 config SYS_BOARD
        default "gr_cpci_ax2000"
 
-config SYS_VENDOR
-       default "gaisler"
-
 config SYS_CONFIG_NAME
        default "gr_cpci_ax2000"
 
diff --git a/board/gaisler/gr_cpci_ax2000/config.mk b/board/gaisler/gr_cpci_ax2000/config.mk
deleted file mode 100644 (file)
index 731a539..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# (C) Copyright 2008
-# Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-#
-# GR-CPCI-AX2000 board
-#
-
-# U-BOOT IN FLASH
-CONFIG_SYS_TEXT_BASE = 0x00000000
-
-# U-BOOT IN RAM or SDRAM with -nosram flag set when starting GRMON
-#CONFIG_SYS_TEXT_BASE = 0x40000000
-
-# U-BOOT IN SDRAM
-#CONFIG_SYS_TEXT_BASE = 0x60000000
index 00b2097cf436fce073f303e122a93256bd2d62da..f49937c55a65bedf5af4f79c836b2ee7f4e8fc63 100644 (file)
@@ -1,14 +1,8 @@
 if TARGET_GR_EP2S60
 
-config SYS_CPU
-       default "leon3"
-
 config SYS_BOARD
        default "gr_ep2s60"
 
-config SYS_VENDOR
-       default "gaisler"
-
 config SYS_CONFIG_NAME
        default "gr_ep2s60"
 
diff --git a/board/gaisler/gr_ep2s60/config.mk b/board/gaisler/gr_ep2s60/config.mk
deleted file mode 100644 (file)
index 6e01f07..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# (C) Copyright 2008
-# Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-#
-# Altera NIOS delopment board Stratix II edition, FPGA device EP2S60,
-# with GRLIB Template design (GPL Open Source SPARC/LEON3)
-#
-
-# U-BOOT IN FLASH
-CONFIG_SYS_TEXT_BASE = 0x00000000
-
-# U-BOOT IN SDRAM
-#CONFIG_SYS_TEXT_BASE = 0x40000000
index 765e028b51eb04bfd35f8470517196b6166281d4..e695ba2cddb83982c293acaba6d90b8c8af9fb10 100644 (file)
@@ -1,14 +1,8 @@
 if TARGET_GR_XC3S_1500
 
-config SYS_CPU
-       default "leon3"
-
 config SYS_BOARD
        default "gr_xc3s_1500"
 
-config SYS_VENDOR
-       default "gaisler"
-
 config SYS_CONFIG_NAME
        default "gr_xc3s_1500"
 
diff --git a/board/gaisler/gr_xc3s_1500/config.mk b/board/gaisler/gr_xc3s_1500/config.mk
deleted file mode 100644 (file)
index e4a66cb..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2007
-# Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-#
-# GR-XC3S-1500 board
-#
-
-# U-BOOT IN FLASH
-CONFIG_SYS_TEXT_BASE = 0x00000000
-
-# U-BOOT IN RAM
-#CONFIG_SYS_TEXT_BASE = 0x40000000
index 751fa03be4dd704372125ce5be0b41350ca66f86..18598d3c2a7fd7304be8adc3c3c06f7e2d0b08a6 100644 (file)
@@ -1,14 +1,8 @@
 if TARGET_GRSIM
 
-config SYS_CPU
-       default "leon3"
-
 config SYS_BOARD
        default "grsim"
 
-config SYS_VENDOR
-       default "gaisler"
-
 config SYS_CONFIG_NAME
        default "grsim"
 
diff --git a/board/gaisler/grsim/config.mk b/board/gaisler/grsim/config.mk
deleted file mode 100644 (file)
index d1f61da..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2007
-# Daniel Hellstrom, Gaisler Research, daniel@gaisler.com
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-#
-# GRSIM simulating a LEON3 GR-XC3S-1500 board
-#
-
-# U-BOOT IN FLASH
-CONFIG_SYS_TEXT_BASE = 0x00000000
-
-# U-BOOT IN RAM
-#CONFIG_SYS_TEXT_BASE = 0x40000000
index 0907f3af891ce527a5db41ec732d44789073f4f9..0d21a0a985e5876d72d053231f9961086741a2b9 100644 (file)
@@ -1,14 +1,8 @@
 if TARGET_GRSIM_LEON2
 
-config SYS_CPU
-       default "leon2"
-
 config SYS_BOARD
        default "grsim_leon2"
 
-config SYS_VENDOR
-       default "gaisler"
-
 config SYS_CONFIG_NAME
        default "grsim_leon2"
 
diff --git a/board/gaisler/grsim_leon2/config.mk b/board/gaisler/grsim_leon2/config.mk
deleted file mode 100644 (file)
index f98b23b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2007
-# Daniel Hellstrom, Gaisler Research, daniel@gaisler.com
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-#
-# GRSIM simulating a LEON2 board
-#
-
-# RUN U-BOOT FROM PROM
-CONFIG_SYS_TEXT_BASE = 0x00000000
-
-# RUN U-BOOT FROM RAM
-#CONFIG_SYS_TEXT_BASE = 0x40000000
index 29e40eb58aafb78379913168cbe461216f7a04d3..5d957b7e70f032eedfe3fd7aef88cb8b98e184c9 100644 (file)
@@ -146,9 +146,11 @@ int checkboard(void)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t * bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
diff --git a/board/gateworks/gw_ventana/clocks.cfg b/board/gateworks/gw_ventana/clocks.cfg
deleted file mode 100644 (file)
index a8118a2..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2013 Boundary Devices
- * Copyright (C) 2013 Gateworks Corporation
- *
- * SPDX-License-Identifier: GPL-2.0+
- *
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *      Addr-type register length (1,2 or 4 bytes)
- *      Address   absolute address of the register
- *      value     value to be stored in the register
- */
-
-/* set the default clock gate to save power */
-DATA 4, CCM_CCGR0, 0x00C03F3F
-DATA 4, CCM_CCGR1, 0x0030FC03
-DATA 4, CCM_CCGR2, 0x0FFFC000
-DATA 4, CCM_CCGR3, 0x3FF00000
-DATA 4, CCM_CCGR4, 0xFFFFF300 /* enable NAND/GPMI/BCH clocks */
-DATA 4, CCM_CCGR5, 0x0F0000C3
-DATA 4, CCM_CCGR6, 0x000003FF
-
-/* enable AXI cache for VDOA/VPU/IPU */
-DATA 4, MX6_IOMUXC_GPR4, 0xF00000CF
-/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
-DATA 4, MX6_IOMUXC_GPR6, 0x007F007F
-DATA 4, MX6_IOMUXC_GPR7, 0x007F007F
-
-/*
- * Setup CCM_CCOSR register as follows:
- *
- * cko1_en  = 1    --> CKO1 enabled
- * cko1_div = 111  --> divide by 8
- * cko1_sel = 1011 --> ahb_clk_root
- *
- * This sets CKO1 at ahb_clk_root/8 = 132/8 = 16.5 MHz
- */
-DATA 4, CCM_CCOSR, 0x000000fb
index df491a8fc8869afc5a531302a315f5fc713c51d2..bb08cd272ef28b439326c3c63499f87a58788e8e 100644 (file)
@@ -1483,7 +1483,7 @@ int misc_init_r(void)
  *  - board (full model from EEPROM)
  *  - peripherals removed from DTB if not loaded on board (per EEPROM config)
  */
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        struct ventana_board_info *info = &ventana_info;
        struct ventana_eeprom_config *cfg;
@@ -1495,7 +1495,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 
        if (getenv("fdt_noauto")) {
                puts("   Skiping ft_board_setup (fdt_noauto defined)\n");
-               return;
+               return 0;
        }
 
        /* Update partition nodes using info from mtdparts env var */
@@ -1504,7 +1504,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 
        if (!model) {
                puts("invalid board info: Leaving FDT fully enabled\n");
-               return;
+               return 0;
        }
        printf("   Adjusting FDT per EEPROM for %s...\n", model);
 
@@ -1523,7 +1523,7 @@ void ft_board_setup(void *blob, bd_t *bd)
         */
        if (getenv("fdt_noconfig")) {
                puts("   Skiping periperhal config (fdt_noconfig defined)\n");
-               return;
+               return 0;
        }
        cfg = econfig;
        while (cfg->name) {
@@ -1533,6 +1533,8 @@ void ft_board_setup(void *blob, bd_t *bd)
                }
                cfg++;
        }
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP) */
 
diff --git a/board/gateworks/gw_ventana/gw_ventana.cfg b/board/gateworks/gw_ventana/gw_ventana.cfg
deleted file mode 100644 (file)
index 9ab95f5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2013 Gateworks Corporation
- *
- * SPDX-License-Identifier: GPL-2.0+
- *
- * Refer doc/README.imximage for more details about how-to configure
- * and create imximage boot image
- *
- * The syntax is taken as close as possible with the kwbimage
- */
-
-/* image version */
-IMAGE_VERSION 2
-
-/*
- * Boot Device : one of
- * spi, sd, nand, sata
- */
-#ifdef CONFIG_SPI_FLASH
-BOOT_FROM      spi
-#else
-BOOT_FROM      nand
-#endif
-
-#define __ASSEMBLY__
-#include <config.h>
-#include "asm/arch/iomux.h"
-#include "asm/arch/crm_regs.h"
-#include "clocks.cfg"
index ca35b3cb7ec8b251b8a7dba127041092b36823d8..97128127fbe741f2393faeba06d1c4ff40a23238 100644 (file)
@@ -8,6 +8,7 @@
 #include <common.h>
 #include <i2c.h>
 #include <asm/io.h>
+#include <asm/arch/crm_regs.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-ddr.h>
 #include <asm/arch/mx6-pins.h>
@@ -392,6 +393,30 @@ static void spl_dram_init(int width, int size_mb, int board_model)
        mx6_dram_cfg(&sysinfo, calib, mem);
 }
 
+static void ccgr_init(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       writel(0x00C03F3F, &ccm->CCGR0);
+       writel(0x0030FC03, &ccm->CCGR1);
+       writel(0x0FFFC000, &ccm->CCGR2);
+       writel(0x3FF00000, &ccm->CCGR3);
+       writel(0xFFFFF300, &ccm->CCGR4);        /* enable NAND/GPMI/BCH clks */
+       writel(0x0F0000C3, &ccm->CCGR5);
+       writel(0x000003FF, &ccm->CCGR6);
+}
+
+static void gpr_init(void)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       /* enable AXI cache for VDOA/VPU/IPU */
+       writel(0xF00000CF, &iomux->gpr[4]);
+       /* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
+       writel(0x007F007F, &iomux->gpr[6]);
+       writel(0x007F007F, &iomux->gpr[7]);
+}
+
 /*
  * called from C runtime startup code (arch/arm/lib/crt0.S:_main)
  * - we have a stack and a place to store GD, both in SRAM
@@ -405,6 +430,9 @@ void board_init_f(ulong dummy)
        /* setup AIPS and disable watchdog */
        arch_cpu_init();
 
+       ccgr_init();
+       gpr_init();
+
        /* iomux and setup of i2c */
        board_early_init_f();
        i2c_setup_iomux();
index 1bac97027d4b9f794bf7455aa01831daa2b74811..3a51d864cdb1c52d1fa16cc1f3556111ceea5c10 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "../common/osd.h"
 #include "../common/mclink.h"
+#include "../common/phy.h"
 
 #include <i2c.h>
 #include <pca953x.h>
@@ -98,8 +99,6 @@ enum {
 unsigned int mclink_fpgacount;
 struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
 
-static int setup_88e1518(const char *bus, unsigned char addr);
-
 int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data)
 {
        int res;
@@ -180,11 +179,11 @@ static void print_fpga_info(unsigned int fpga, bool rgmii2_present)
        unsigned feature_carriers;
        unsigned feature_video_channels;
 
-       int legacy = get_fpga_state(0) & FPGA_STATE_PLATFORM;
+       int legacy = get_fpga_state(fpga) & FPGA_STATE_PLATFORM;
 
-       FPGA_GET_REG(0, versions, &versions);
-       FPGA_GET_REG(0, fpga_version, &fpga_version);
-       FPGA_GET_REG(0, fpga_features, &fpga_features);
+       FPGA_GET_REG(fpga, versions, &versions);
+       FPGA_GET_REG(fpga, fpga_version, &fpga_version);
+       FPGA_GET_REG(fpga, fpga_features, &fpga_features);
 
        unit_type = (versions & 0xf000) >> 12;
        feature_compression = (fpga_features & 0xe000) >> 13;
@@ -369,10 +368,11 @@ int last_stage_init(void)
        unsigned char mclink_controllers[] = { 0x24, 0x25, 0x26 };
        int legacy = get_fpga_state(0) & FPGA_STATE_PLATFORM;
        u16 fpga_features;
-       int feature_carrier_speed = fpga_features & (1<<4);
+       int feature_carrier_speed;
        bool ch0_rgmii2_present = false;
 
        FPGA_GET_REG(0, fpga_features, &fpga_features);
+       feature_carrier_speed = fpga_features & (1<<4);
 
        if (!legacy) {
                /* Turn on Parade DP501 */
@@ -646,190 +646,3 @@ struct bb_miiphy_bus bb_miiphy_buses[] = {
 
 int bb_miiphy_buses_num = sizeof(bb_miiphy_buses) /
                          sizeof(bb_miiphy_buses[0]);
-
-enum {
-       MIICMD_SET,
-       MIICMD_MODIFY,
-       MIICMD_VERIFY_VALUE,
-       MIICMD_WAIT_FOR_VALUE,
-};
-
-struct mii_setupcmd {
-       u8 token;
-       u8 reg;
-       u16 data;
-       u16 mask;
-       u32 timeout;
-};
-
-/*
- * verify we are talking to a 88e1518
- */
-struct mii_setupcmd verify_88e1518[] = {
-       { MIICMD_SET, 22, 0x0000 },
-       { MIICMD_VERIFY_VALUE, 2, 0x0141, 0xffff },
-       { MIICMD_VERIFY_VALUE, 3, 0x0dd0, 0xfff0 },
-};
-
-/*
- * workaround for erratum mentioned in 88E1518 release notes
- */
-struct mii_setupcmd fixup_88e1518[] = {
-       { MIICMD_SET, 22, 0x00ff },
-       { MIICMD_SET, 17, 0x214b },
-       { MIICMD_SET, 16, 0x2144 },
-       { MIICMD_SET, 17, 0x0c28 },
-       { MIICMD_SET, 16, 0x2146 },
-       { MIICMD_SET, 17, 0xb233 },
-       { MIICMD_SET, 16, 0x214d },
-       { MIICMD_SET, 17, 0xcc0c },
-       { MIICMD_SET, 16, 0x2159 },
-       { MIICMD_SET, 22, 0x00fb },
-       { MIICMD_SET,  7, 0xc00d },
-       { MIICMD_SET, 22, 0x0000 },
-};
-
-/*
- * default initialization:
- * - set RGMII receive timing to "receive clock transition when data stable"
- * - set RGMII transmit timing to "transmit clock internally delayed"
- * - set RGMII output impedance target to 78,8 Ohm
- * - run output impedance calibration
- * - set autonegotiation advertise to 1000FD only
- */
-struct mii_setupcmd default_88e1518[] = {
-       { MIICMD_SET, 22, 0x0002 },
-       { MIICMD_MODIFY, 21, 0x0030, 0x0030 },
-       { MIICMD_MODIFY, 25, 0x0000, 0x0003 },
-       { MIICMD_MODIFY, 24, 0x8000, 0x8000 },
-       { MIICMD_WAIT_FOR_VALUE, 24, 0x4000, 0x4000, 2000 },
-       { MIICMD_SET, 22, 0x0000 },
-       { MIICMD_MODIFY, 4, 0x0000, 0x01e0 },
-       { MIICMD_MODIFY, 9, 0x0200, 0x0300 },
-};
-
-/*
- * turn off CLK125 for PHY daughterboard
- */
-struct mii_setupcmd ch1fix_88e1518[] = {
-       { MIICMD_SET, 22, 0x0002 },
-       { MIICMD_MODIFY, 16, 0x0006, 0x0006 },
-       { MIICMD_SET, 22, 0x0000 },
-};
-
-/*
- * perform copper software reset
- */
-struct mii_setupcmd swreset_88e1518[] = {
-       { MIICMD_SET, 22, 0x0000 },
-       { MIICMD_MODIFY, 0, 0x8000, 0x8000 },
-       { MIICMD_WAIT_FOR_VALUE, 0, 0x0000, 0x8000, 2000 },
-};
-
-static int process_setupcmd(const char *bus, unsigned char addr,
-                           struct mii_setupcmd *setupcmd)
-{
-       int res;
-       u8 reg = setupcmd->reg;
-       u16 data = setupcmd->data;
-       u16 mask = setupcmd->mask;
-       u32 timeout = setupcmd->timeout;
-       u16 orig_data;
-       unsigned long start;
-
-       debug("mii %s:%u reg %2u ", bus, addr, reg);
-
-       switch (setupcmd->token) {
-       case MIICMD_MODIFY:
-               res = miiphy_read(bus, addr, reg, &orig_data);
-               if (res)
-                       break;
-               debug("is %04x. (value %04x mask %04x) ", orig_data, data,
-                     mask);
-               data = (orig_data & ~mask) | (data & mask);
-       case MIICMD_SET:
-               debug("=> %04x\n", data);
-               res = miiphy_write(bus, addr, reg, data);
-               break;
-       case MIICMD_VERIFY_VALUE:
-               res = miiphy_read(bus, addr, reg, &orig_data);
-               if (res)
-                       break;
-               if ((orig_data & mask) != (data & mask))
-                       res = -1;
-               debug("(value %04x mask %04x) == %04x? %s\n", data, mask,
-                     orig_data, res ? "FAIL" : "PASS");
-               break;
-       case MIICMD_WAIT_FOR_VALUE:
-               res = -1;
-               start = get_timer(0);
-               while ((res != 0) && (get_timer(start) < timeout)) {
-                       res = miiphy_read(bus, addr, reg, &orig_data);
-                       if (res)
-                               continue;
-                       if ((orig_data & mask) != (data & mask))
-                               res = -1;
-               }
-               debug("(value %04x mask %04x) == %04x? %s after %lu ms\n", data,
-                     mask, orig_data, res ? "FAIL" : "PASS",
-                     get_timer(start));
-               break;
-       default:
-               res = -1;
-               break;
-       }
-
-       return res;
-}
-
-static int process_setup(const char *bus, unsigned char addr,
-                           struct mii_setupcmd *setupcmd, unsigned int count)
-{
-       int res = 0;
-       unsigned int k;
-
-       for (k = 0; k < count; ++k) {
-               res = process_setupcmd(bus, addr, &setupcmd[k]);
-               if (res) {
-                       printf("mii cmd %u on bus %s addr %u failed, aborting setup",
-                              setupcmd[k].token, bus, addr);
-                       break;
-               }
-       }
-
-       return res;
-}
-
-static int setup_88e1518(const char *bus, unsigned char addr)
-{
-       int res;
-
-       res = process_setup(bus, addr,
-                           verify_88e1518, ARRAY_SIZE(verify_88e1518));
-       if (res)
-               return res;
-
-       res = process_setup(bus, addr,
-                           fixup_88e1518, ARRAY_SIZE(fixup_88e1518));
-       if (res)
-               return res;
-
-       res = process_setup(bus, addr,
-                           default_88e1518, ARRAY_SIZE(default_88e1518));
-       if (res)
-               return res;
-
-       if (addr) {
-               res = process_setup(bus, addr,
-                                   ch1fix_88e1518, ARRAY_SIZE(ch1fix_88e1518));
-               if (res)
-                       return res;
-       }
-
-       res = process_setup(bus, addr,
-                           swreset_88e1518, ARRAY_SIZE(swreset_88e1518));
-       if (res)
-               return res;
-
-       return 0;
-}
index 7f8b4277ebc279dbfe8af0ef5f73ea290b0ab4ee..49579434df5ba19e2b310409c16369a89b86f790 100644 (file)
@@ -6,8 +6,10 @@
 #
 
 obj-$(CONFIG_SYS_FPGA_COMMON) += fpga.o
+obj-$(CONFIG_CMD_IOLOOP) += cmd_ioloop.o
 obj-$(CONFIG_IO) += miiphybb.o
 obj-$(CONFIG_IO64) += miiphybb.o
-obj-$(CONFIG_IOCON) += osd.o mclink.o dp501.o
+obj-$(CONFIG_IOCON) += osd.o mclink.o dp501.o phy.o
 obj-$(CONFIG_DLVISION_10G) += osd.o
 obj-$(CONFIG_CONTROLCENTERD) += dp501.o
+obj-$(CONFIG_HRCON) += osd.o mclink.o dp501.o phy.o
diff --git a/board/gdsys/common/cmd_ioloop.c b/board/gdsys/common/cmd_ioloop.c
new file mode 100644 (file)
index 0000000..e0c74fe
--- /dev/null
@@ -0,0 +1,295 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach, Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+
+#include <gdsys_fpga.h>
+
+enum {
+       STATE_TX_PACKET_BUILDING = 1<<0,
+       STATE_TX_TRANSMITTING = 1<<1,
+       STATE_TX_BUFFER_FULL = 1<<2,
+       STATE_TX_ERR = 1<<3,
+       STATE_RECEIVE_TIMEOUT = 1<<4,
+       STATE_PROC_RX_STORE_TIMEOUT = 1<<5,
+       STATE_PROC_RX_RECEIVE_TIMEOUT = 1<<6,
+       STATE_RX_DIST_ERR = 1<<7,
+       STATE_RX_LENGTH_ERR = 1<<8,
+       STATE_RX_FRAME_CTR_ERR = 1<<9,
+       STATE_RX_FCS_ERR = 1<<10,
+       STATE_RX_PACKET_DROPPED = 1<<11,
+       STATE_RX_DATA_LAST = 1<<12,
+       STATE_RX_DATA_FIRST = 1<<13,
+       STATE_RX_DATA_AVAILABLE = 1<<15,
+};
+
+enum {
+       CTRL_PROC_RECEIVE_ENABLE = 1<<12,
+       CTRL_FLUSH_TRANSMIT_BUFFER = 1<<15,
+};
+
+enum {
+       IRQ_CPU_TRANSMITBUFFER_FREE_STATUS = 1<<5,
+       IRQ_CPU_PACKET_TRANSMITTED_EVENT = 1<<6,
+       IRQ_NEW_CPU_PACKET_RECEIVED_EVENT = 1<<7,
+       IRQ_CPU_RECEIVE_DATA_AVAILABLE_STATUS = 1<<8,
+};
+
+struct io_generic_packet {
+       u16 target_address;
+       u16 source_address;
+       u8 packet_type;
+       u8 bc;
+       u16 packet_length;
+} __attribute__((__packed__));
+
+unsigned long long rx_ctr;
+unsigned long long tx_ctr;
+unsigned long long err_ctr;
+
+static void io_check_status(unsigned int fpga, u16 status, bool silent)
+{
+       u16 mask = STATE_RX_DIST_ERR | STATE_RX_LENGTH_ERR |
+                  STATE_RX_FRAME_CTR_ERR | STATE_RX_FCS_ERR |
+                  STATE_RX_PACKET_DROPPED | STATE_TX_ERR;
+
+       if (!(status & mask)) {
+               FPGA_SET_REG(fpga, ep.rx_tx_status, status);
+               return;
+       }
+
+       err_ctr++;
+       FPGA_SET_REG(fpga, ep.rx_tx_status, status);
+
+       if (silent)
+               return;
+
+       if (status & STATE_RX_PACKET_DROPPED)
+               printf("RX_PACKET_DROPPED, status %04x\n", status);
+
+       if (status & STATE_RX_DIST_ERR)
+               printf("RX_DIST_ERR\n");
+       if (status & STATE_RX_LENGTH_ERR)
+               printf("RX_LENGTH_ERR\n");
+       if (status & STATE_RX_FRAME_CTR_ERR)
+               printf("RX_FRAME_CTR_ERR\n");
+       if (status & STATE_RX_FCS_ERR)
+               printf("RX_FCS_ERR\n");
+
+       if (status & STATE_TX_ERR)
+               printf("TX_ERR\n");
+}
+
+static void io_send(unsigned int fpga, unsigned int size)
+{
+       unsigned int k;
+       struct io_generic_packet packet = {
+               .source_address = 1,
+               .packet_type = 1,
+               .packet_length = size,
+       };
+       u16 *p = (u16 *)&packet;
+
+       for (k = 0; k < sizeof(packet) / 2; ++k)
+               FPGA_SET_REG(fpga, ep.transmit_data, *p++);
+
+       for (k = 0; k < (size + 1) / 2; ++k)
+               FPGA_SET_REG(fpga, ep.transmit_data, k);
+
+       FPGA_SET_REG(fpga, ep.rx_tx_control,
+                    CTRL_PROC_RECEIVE_ENABLE | CTRL_FLUSH_TRANSMIT_BUFFER);
+
+       tx_ctr++;
+}
+
+static void io_receive(unsigned int fpga)
+{
+       unsigned int k = 0;
+       u16 rx_tx_status;
+
+       FPGA_GET_REG(fpga, ep.rx_tx_status, &rx_tx_status);
+
+       while (rx_tx_status & STATE_RX_DATA_AVAILABLE) {
+               u16 rx;
+
+               if (rx_tx_status & STATE_RX_DATA_LAST)
+                       rx_ctr++;
+
+               FPGA_GET_REG(fpga, ep.receive_data, &rx);
+
+               FPGA_GET_REG(fpga, ep.rx_tx_status, &rx_tx_status);
+
+               ++k;
+       }
+}
+
+static void io_reflect(unsigned int fpga)
+{
+       u16 buffer[128];
+
+       unsigned int k = 0;
+       unsigned int n;
+       u16 rx_tx_status;
+
+       FPGA_GET_REG(fpga, ep.rx_tx_status, &rx_tx_status);
+
+       while (rx_tx_status & STATE_RX_DATA_AVAILABLE) {
+               FPGA_GET_REG(fpga, ep.receive_data, &buffer[k++]);
+               if (rx_tx_status & STATE_RX_DATA_LAST)
+                       break;
+
+               FPGA_GET_REG(fpga, ep.rx_tx_status, &rx_tx_status);
+       }
+
+       if (!k)
+               return;
+
+       for (n = 0; n < k; ++n)
+               FPGA_SET_REG(fpga, ep.transmit_data, buffer[n]);
+
+       FPGA_SET_REG(fpga, ep.rx_tx_control,
+                    CTRL_PROC_RECEIVE_ENABLE | CTRL_FLUSH_TRANSMIT_BUFFER);
+
+       tx_ctr++;
+}
+
+/*
+ * FPGA io-endpoint reflector
+ *
+ * Syntax:
+ *     ioreflect {fpga} {reportrate}
+ */
+int do_ioreflect(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       unsigned int fpga;
+       unsigned int rate = 0;
+       unsigned long long last_seen = 0;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+
+       fpga = simple_strtoul(argv[1], NULL, 10);
+
+       /*
+        * If another parameter, it is the report rate in packets.
+        */
+       if (argc > 2)
+               rate = simple_strtoul(argv[2], NULL, 10);
+
+       /* enable receive path */
+       FPGA_SET_REG(fpga, ep.rx_tx_control, CTRL_PROC_RECEIVE_ENABLE);
+
+       /* set device address to dummy 1*/
+       FPGA_SET_REG(fpga, ep.device_address, 1);
+
+       rx_ctr = 0; tx_ctr = 0; err_ctr = 0;
+
+       while (1) {
+               u16 top_int;
+               u16 rx_tx_status;
+
+               FPGA_GET_REG(fpga, top_interrupt, &top_int);
+               FPGA_GET_REG(fpga, ep.rx_tx_status, &rx_tx_status);
+
+               io_check_status(fpga, rx_tx_status, true);
+               if ((top_int & IRQ_CPU_RECEIVE_DATA_AVAILABLE_STATUS) &&
+                   (top_int & IRQ_CPU_TRANSMITBUFFER_FREE_STATUS))
+                       io_reflect(fpga);
+
+               if (rate) {
+                       if (!(tx_ctr % rate) && (tx_ctr != last_seen))
+                               printf("refl %llu, err %llu\n", tx_ctr,
+                                      err_ctr);
+                       last_seen = tx_ctr;
+               }
+
+               if (ctrlc())
+                       break;
+       }
+
+       return 0;
+}
+
+/*
+ * FPGA io-endpoint looptest
+ *
+ * Syntax:
+ *     ioloop {fpga} {size} {rate}
+ */
+#define DISP_LINE_LEN  16
+int do_ioloop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       unsigned int fpga;
+       unsigned int size;
+       unsigned int rate = 0;
+
+       if (argc < 3)
+               return CMD_RET_USAGE;
+
+       /*
+        * FPGA is specified since argc > 2
+        */
+       fpga = simple_strtoul(argv[1], NULL, 10);
+
+       /*
+        * packet size is specified since argc > 2
+        */
+       size = simple_strtoul(argv[2], NULL, 10);
+
+       /*
+        * If another parameter, it is the test rate in packets per second.
+        */
+       if (argc > 3)
+               rate = simple_strtoul(argv[3], NULL, 10);
+
+       /* enable receive path */
+       FPGA_SET_REG(fpga, ep.rx_tx_control, CTRL_PROC_RECEIVE_ENABLE);
+
+       /* set device address to dummy 1*/
+       FPGA_SET_REG(fpga, ep.device_address, 1);
+
+       rx_ctr = 0; tx_ctr = 0; err_ctr = 0;
+
+       while (1) {
+               u16 top_int;
+               u16 rx_tx_status;
+
+               FPGA_GET_REG(fpga, top_interrupt, &top_int);
+               FPGA_GET_REG(fpga, ep.rx_tx_status, &rx_tx_status);
+
+               io_check_status(fpga, rx_tx_status, false);
+               if (top_int & IRQ_CPU_TRANSMITBUFFER_FREE_STATUS)
+                       io_send(fpga, size);
+               if (top_int & IRQ_CPU_RECEIVE_DATA_AVAILABLE_STATUS)
+                       io_receive(fpga);
+
+               if (rate) {
+                       if (ctrlc())
+                               break;
+                       udelay(1000000 / rate);
+                       if (!(tx_ctr % rate))
+                               printf("d %lld, tx %llu, rx %llu, err %llu\n",
+                                      tx_ctr - rx_ctr, tx_ctr, rx_ctr,
+                                      err_ctr);
+               }
+       }
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       ioloop, 4,      0,      do_ioloop,
+       "fpga io-endpoint looptest",
+       "fpga packetsize [packets/sec]"
+);
+
+U_BOOT_CMD(
+       ioreflect, 3,   0,      do_ioreflect,
+       "fpga io-endpoint reflector",
+       "fpga reportrate"
+);
diff --git a/board/gdsys/common/ihs_mdio.c b/board/gdsys/common/ihs_mdio.c
new file mode 100644 (file)
index 0000000..1d6eb7b
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+
+#include <gdsys_fpga.h>
+#include <miiphy.h>
+
+#include "ihs_mdio.h"
+
+static int ihs_mdio_idle(struct mii_dev *bus)
+{
+       struct ihs_mdio_info *info = bus->priv;
+       u16 val;
+       unsigned int ctr = 0;
+
+       do {
+               FPGA_GET_REG(info->fpga, mdio.control, &val);
+               udelay(100);
+               if (ctr++ > 10)
+                       return -1;
+       } while (!(val & (1 << 12)));
+
+       return 0;
+}
+
+static int ihs_mdio_reset(struct mii_dev *bus)
+{
+       ihs_mdio_idle(bus);
+
+       return 0;
+}
+
+static int ihs_mdio_read(struct mii_dev *bus, int addr, int dev_addr,
+                        int regnum)
+{
+       struct ihs_mdio_info *info = bus->priv;
+       u16 val;
+
+       ihs_mdio_idle(bus);
+
+       FPGA_SET_REG(info->fpga, mdio.control,
+                    ((addr & 0x1f) << 5) | (regnum & 0x1f) | (2 << 10));
+
+       /* wait for rx data available */
+       udelay(100);
+
+       FPGA_GET_REG(info->fpga, mdio.rx_data, &val);
+
+       return val;
+}
+
+static int ihs_mdio_write(struct mii_dev *bus, int addr, int dev_addr,
+                         int regnum, u16 value)
+{
+       struct ihs_mdio_info *info = bus->priv;
+
+       ihs_mdio_idle(bus);
+
+       FPGA_SET_REG(info->fpga, mdio.address_data, value);
+       FPGA_SET_REG(info->fpga, mdio.control,
+                    ((addr & 0x1f) << 5) | (regnum & 0x1f) | (1 << 10));
+
+       return 0;
+}
+
+int ihs_mdio_init(struct ihs_mdio_info *info)
+{
+       struct mii_dev *bus = mdio_alloc();
+
+       if (!bus) {
+               printf("Failed to allocate FSL MDIO bus\n");
+               return -1;
+       }
+
+       bus->read = ihs_mdio_read;
+       bus->write = ihs_mdio_write;
+       bus->reset = ihs_mdio_reset;
+       sprintf(bus->name, info->name);
+
+       bus->priv = info;
+
+       return mdio_register(bus);
+}
diff --git a/board/gdsys/common/ihs_mdio.h b/board/gdsys/common/ihs_mdio.h
new file mode 100644 (file)
index 0000000..64b4049
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _IHS_MDIO_H_
+#define _IHS_MDIO_H_
+
+struct ihs_mdio_info {
+       u32 fpga;
+       char *name;
+};
+
+int ihs_mdio_init(struct ihs_mdio_info *info);
+
+#endif
index 1c765e4cbfb3ffb7daea200d73b24ccbfd0382b9..55ecdf10127ed6e976e7906dd2707d89381e0835 100644 (file)
@@ -289,7 +289,6 @@ int osd_probe(unsigned screen)
 {
        u16 version;
        u16 features;
-       u8 value;
        int old_bus = i2c_get_bus_num();
        bool pixclock_present = false;
        bool output_driver_present = false;
@@ -330,7 +329,8 @@ int osd_probe(unsigned screen)
 #ifdef CONFIG_SYS_CH7301_I2C
        i2c_set_bus_num(ch7301_i2c[screen]);
        if (!i2c_probe(CH7301_I2C_ADDR)) {
-               value = i2c_reg_read(CH7301_I2C_ADDR, CH7301_DID);
+               u8 value = i2c_reg_read(CH7301_I2C_ADDR, CH7301_DID);
+
                if (value == 0x17) {
                        i2c_reg_write(CH7301_I2C_ADDR, CH7301_TPCP, 0x08);
                        i2c_reg_write(CH7301_I2C_ADDR, CH7301_TPD, 0x16);
@@ -345,8 +345,7 @@ int osd_probe(unsigned screen)
 #ifdef CONFIG_SYS_SIL1178_I2C
        i2c_set_bus_num(sil1178_i2c[screen]);
        if (!i2c_probe(SIL1178_SLAVE_I2C_ADDRESS)) {
-               value = i2c_reg_read(SIL1178_SLAVE_I2C_ADDRESS, 0x02);
-               if (value == 0x06) {
+               if (i2c_reg_read(SIL1178_SLAVE_I2C_ADDRESS, 0x02) == 0x06) {
                        /*
                         * magic initialization sequence,
                         * adapted from datasheet
diff --git a/board/gdsys/common/phy.c b/board/gdsys/common/phy.c
new file mode 100644 (file)
index 0000000..fb92658
--- /dev/null
@@ -0,0 +1,280 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+
+#include <miiphy.h>
+
+enum {
+       MIICMD_SET,
+       MIICMD_MODIFY,
+       MIICMD_VERIFY_VALUE,
+       MIICMD_WAIT_FOR_VALUE,
+};
+
+struct mii_setupcmd {
+       u8 token;
+       u8 reg;
+       u16 data;
+       u16 mask;
+       u32 timeout;
+};
+
+/*
+ * verify we are talking to a 88e1518
+ */
+struct mii_setupcmd verify_88e1518[] = {
+       { MIICMD_SET, 22, 0x0000 },
+       { MIICMD_VERIFY_VALUE, 2, 0x0141, 0xffff },
+       { MIICMD_VERIFY_VALUE, 3, 0x0dd0, 0xfff0 },
+};
+
+/*
+ * workaround for erratum mentioned in 88E1518 release notes
+ */
+struct mii_setupcmd fixup_88e1518[] = {
+       { MIICMD_SET, 22, 0x00ff },
+       { MIICMD_SET, 17, 0x214b },
+       { MIICMD_SET, 16, 0x2144 },
+       { MIICMD_SET, 17, 0x0c28 },
+       { MIICMD_SET, 16, 0x2146 },
+       { MIICMD_SET, 17, 0xb233 },
+       { MIICMD_SET, 16, 0x214d },
+       { MIICMD_SET, 17, 0xcc0c },
+       { MIICMD_SET, 16, 0x2159 },
+       { MIICMD_SET, 22, 0x00fb },
+       { MIICMD_SET,  7, 0xc00d },
+       { MIICMD_SET, 22, 0x0000 },
+};
+
+/*
+ * default initialization:
+ * - set RGMII receive timing to "receive clock transition when data stable"
+ * - set RGMII transmit timing to "transmit clock internally delayed"
+ * - set RGMII output impedance target to 78,8 Ohm
+ * - run output impedance calibration
+ * - set autonegotiation advertise to 1000FD only
+ */
+struct mii_setupcmd default_88e1518[] = {
+       { MIICMD_SET, 22, 0x0002 },
+       { MIICMD_MODIFY, 21, 0x0030, 0x0030 },
+       { MIICMD_MODIFY, 25, 0x0000, 0x0003 },
+       { MIICMD_MODIFY, 24, 0x8000, 0x8000 },
+       { MIICMD_WAIT_FOR_VALUE, 24, 0x4000, 0x4000, 2000 },
+       { MIICMD_SET, 22, 0x0000 },
+       { MIICMD_MODIFY, 4, 0x0000, 0x01e0 },
+       { MIICMD_MODIFY, 9, 0x0200, 0x0300 },
+};
+
+/*
+ * turn off CLK125 for PHY daughterboard
+ */
+struct mii_setupcmd ch1fix_88e1518[] = {
+       { MIICMD_SET, 22, 0x0002 },
+       { MIICMD_MODIFY, 16, 0x0006, 0x0006 },
+       { MIICMD_SET, 22, 0x0000 },
+};
+
+/*
+ * perform copper software reset
+ */
+struct mii_setupcmd swreset_88e1518[] = {
+       { MIICMD_SET, 22, 0x0000 },
+       { MIICMD_MODIFY, 0, 0x8000, 0x8000 },
+       { MIICMD_WAIT_FOR_VALUE, 0, 0x0000, 0x8000, 2000 },
+};
+
+/*
+ * special one for 88E1514:
+ * Force SGMII to Copper mode
+ */
+struct mii_setupcmd mii_to_copper_88e1514[] = {
+       { MIICMD_SET, 22, 0x0012 },
+       { MIICMD_MODIFY, 20, 0x0001, 0x0007 },
+       { MIICMD_MODIFY, 20, 0x8000, 0x8000 },
+       { MIICMD_SET, 22, 0x0000 },
+};
+
+/*
+ * turn off SGMII auto-negotiation
+ */
+struct mii_setupcmd sgmii_autoneg_off_88e1518[] = {
+       { MIICMD_SET, 22, 0x0001 },
+       { MIICMD_MODIFY, 0, 0x0000, 0x1000 },
+       { MIICMD_MODIFY, 0, 0x8000, 0x8000 },
+       { MIICMD_SET, 22, 0x0000 },
+};
+
+/*
+ * invert LED2 polarity
+ */
+struct mii_setupcmd invert_led2_88e1514[] = {
+       { MIICMD_SET, 22, 0x0003 },
+       { MIICMD_MODIFY, 17, 0x0030, 0x0010 },
+       { MIICMD_SET, 22, 0x0000 },
+};
+
+static int process_setupcmd(const char *bus, unsigned char addr,
+                           struct mii_setupcmd *setupcmd)
+{
+       int res;
+       u8 reg = setupcmd->reg;
+       u16 data = setupcmd->data;
+       u16 mask = setupcmd->mask;
+       u32 timeout = setupcmd->timeout;
+       u16 orig_data;
+       unsigned long start;
+
+       debug("mii %s:%u reg %2u ", bus, addr, reg);
+
+       switch (setupcmd->token) {
+       case MIICMD_MODIFY:
+               res = miiphy_read(bus, addr, reg, &orig_data);
+               if (res)
+                       break;
+               debug("is %04x. (value %04x mask %04x) ", orig_data, data,
+                     mask);
+               data = (orig_data & ~mask) | (data & mask);
+               /* fallthrough */
+       case MIICMD_SET:
+               debug("=> %04x\n", data);
+               res = miiphy_write(bus, addr, reg, data);
+               break;
+       case MIICMD_VERIFY_VALUE:
+               res = miiphy_read(bus, addr, reg, &orig_data);
+               if (res)
+                       break;
+               if ((orig_data & mask) != (data & mask))
+                       res = -1;
+               debug("(value %04x mask %04x) == %04x? %s\n", data, mask,
+                     orig_data, res ? "FAIL" : "PASS");
+               break;
+       case MIICMD_WAIT_FOR_VALUE:
+               res = -1;
+               start = get_timer(0);
+               while ((res != 0) && (get_timer(start) < timeout)) {
+                       res = miiphy_read(bus, addr, reg, &orig_data);
+                       if (res)
+                               continue;
+                       if ((orig_data & mask) != (data & mask))
+                               res = -1;
+               }
+               debug("(value %04x mask %04x) == %04x? %s after %lu ms\n", data,
+                     mask, orig_data, res ? "FAIL" : "PASS",
+                     get_timer(start));
+               break;
+       default:
+               res = -1;
+               break;
+       }
+
+       return res;
+}
+
+static int process_setup(const char *bus, unsigned char addr,
+                           struct mii_setupcmd *setupcmd, unsigned int count)
+{
+       int res = 0;
+       unsigned int k;
+
+       for (k = 0; k < count; ++k) {
+               res = process_setupcmd(bus, addr, &setupcmd[k]);
+               if (res) {
+                       printf("mii cmd %u on bus %s addr %u failed, aborting setup\n",
+                              setupcmd[k].token, bus, addr);
+                       break;
+               }
+       }
+
+       return res;
+}
+
+int setup_88e1518(const char *bus, unsigned char addr)
+{
+       int res;
+
+       res = process_setup(bus, addr,
+                           verify_88e1518, ARRAY_SIZE(verify_88e1518));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           fixup_88e1518, ARRAY_SIZE(fixup_88e1518));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           default_88e1518, ARRAY_SIZE(default_88e1518));
+       if (res)
+               return res;
+
+       if (addr) {
+               res = process_setup(bus, addr,
+                                   ch1fix_88e1518, ARRAY_SIZE(ch1fix_88e1518));
+               if (res)
+                       return res;
+       }
+
+       res = process_setup(bus, addr,
+                           swreset_88e1518, ARRAY_SIZE(swreset_88e1518));
+       if (res)
+               return res;
+
+       return 0;
+}
+
+int setup_88e1514(const char *bus, unsigned char addr)
+{
+       int res;
+
+       res = process_setup(bus, addr,
+                           verify_88e1518, ARRAY_SIZE(verify_88e1518));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           fixup_88e1518, ARRAY_SIZE(fixup_88e1518));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           mii_to_copper_88e1514,
+                           ARRAY_SIZE(mii_to_copper_88e1514));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           sgmii_autoneg_off_88e1518,
+                           ARRAY_SIZE(sgmii_autoneg_off_88e1518));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           invert_led2_88e1514,
+                           ARRAY_SIZE(invert_led2_88e1514));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           default_88e1518, ARRAY_SIZE(default_88e1518));
+       if (res)
+               return res;
+
+       if (addr) {
+               res = process_setup(bus, addr,
+                                   ch1fix_88e1518, ARRAY_SIZE(ch1fix_88e1518));
+               if (res)
+                       return res;
+       }
+
+       res = process_setup(bus, addr,
+                           swreset_88e1518, ARRAY_SIZE(swreset_88e1518));
+       if (res)
+               return res;
+
+       return 0;
+}
diff --git a/board/gdsys/common/phy.h b/board/gdsys/common/phy.h
new file mode 100644 (file)
index 0000000..afbdc65
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _PHY_H_
+#define _PHY_H_
+
+int setup_88e1514(const char *bus, unsigned char addr);
+int setup_88e1518(const char *bus, unsigned char addr);
+
+#endif
index ee6f9e06c354d526534fd542e287a2e281b376cc..8d01d8b116f510a3181c614277302f95f080f4c8 100644 (file)
@@ -206,7 +206,7 @@ int misc_init_r(void)
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
 extern void __ft_board_setup(void *blob, bd_t *bd);
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        __ft_board_setup(blob, bd);
 
@@ -215,5 +215,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 
        fdt_find_and_setprop(blob, "/plb/sata@bffd1000", "status",
                             "disabled", sizeof("disabled"), 1);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/gdsys/mpc8308/Kconfig b/board/gdsys/mpc8308/Kconfig
new file mode 100644 (file)
index 0000000..43e1663
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_HRCON
+
+config SYS_BOARD
+       default "mpc8308"
+
+config SYS_VENDOR
+       default "gdsys"
+
+config SYS_CONFIG_NAME
+       default "hrcon"
+
+endif
diff --git a/board/gdsys/mpc8308/MAINTAINERS b/board/gdsys/mpc8308/MAINTAINERS
new file mode 100644 (file)
index 0000000..a7853a5
--- /dev/null
@@ -0,0 +1,6 @@
+MPC8308 BOARD
+M:     Dirk Eibach <eibach@gdsys.de>
+S:     Maintained
+F:     board/gdsys/mpc8308/
+F:     include/configs/hrcon.h
+F:     configs/hrcon_defconfig
diff --git a/board/gdsys/mpc8308/Makefile b/board/gdsys/mpc8308/Makefile
new file mode 100644 (file)
index 0000000..b5dfdbb
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# (C) Copyright 2014
+# Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y := mpc8308.o sdram.o
+obj-$(CONFIG_HRCON) += hrcon.o
diff --git a/board/gdsys/mpc8308/hrcon.c b/board/gdsys/mpc8308/hrcon.c
new file mode 100644 (file)
index 0000000..e4434b3
--- /dev/null
@@ -0,0 +1,677 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <hwconfig.h>
+#include <i2c.h>
+#include <spi.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <pci.h>
+#include <mpc83xx.h>
+#include <fsl_esdhc.h>
+#include <asm/io.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_mpc83xx_serdes.h>
+
+#include "mpc8308.h"
+
+#include <gdsys_fpga.h>
+
+#include "../common/osd.h"
+#include "../common/mclink.h"
+#include "../common/phy.h"
+
+#include <pca953x.h>
+#include <pca9698.h>
+
+#include <miiphy.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define MAX_MUX_CHANNELS 2
+
+enum {
+       UNITTYPE_MAIN_SERVER = 0,
+       UNITTYPE_MAIN_USER = 1,
+       UNITTYPE_VIDEO_SERVER = 2,
+       UNITTYPE_VIDEO_USER = 3,
+};
+
+enum {
+       UNITTYPEPCB_DVI = 0,
+       UNITTYPEPCB_DP_165 = 1,
+       UNITTYPEPCB_DP_300 = 2,
+       UNITTYPEPCB_HDMI = 3,
+};
+
+enum {
+       HWVER_100 = 0,
+       HWVER_110 = 1,
+};
+
+enum {
+       FPGA_HWVER_200 = 0,
+       FPGA_HWVER_210 = 1,
+};
+
+enum {
+       COMPRESSION_NONE = 0,
+       COMPRESSION_TYPE1_DELTA = 1,
+       COMPRESSION_TYPE1_TYPE2_DELTA = 3,
+};
+
+enum {
+       AUDIO_NONE = 0,
+       AUDIO_TX = 1,
+       AUDIO_RX = 2,
+       AUDIO_RXTX = 3,
+};
+
+enum {
+       SYSCLK_147456 = 0,
+};
+
+enum {
+       RAM_DDR2_32 = 0,
+       RAM_DDR3_32 = 1,
+};
+
+enum {
+       CARRIER_SPEED_1G = 0,
+       CARRIER_SPEED_2_5G = 1,
+};
+
+enum {
+       MCFPGA_DONE = 1 << 0,
+       MCFPGA_INIT_N = 1 << 1,
+       MCFPGA_PROGRAM_N = 1 << 2,
+       MCFPGA_UPDATE_ENABLE_N = 1 << 3,
+       MCFPGA_RESET_N = 1 << 4,
+};
+
+enum {
+       GPIO_MDC = 1 << 14,
+       GPIO_MDIO = 1 << 15,
+};
+
+unsigned int mclink_fpgacount;
+struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
+
+int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data)
+{
+       int res;
+
+       switch (fpga) {
+       case 0:
+               out_le16(reg, data);
+               break;
+       default:
+               res = mclink_send(fpga - 1, regoff, data);
+               if (res < 0) {
+                       printf("mclink_send reg %02lx data %04x returned %d\n",
+                              regoff, data, res);
+                       return res;
+               }
+               break;
+       }
+
+       return 0;
+}
+
+int fpga_get_reg(u32 fpga, u16 *reg, off_t regoff, u16 *data)
+{
+       int res;
+
+       switch (fpga) {
+       case 0:
+               *data = in_le16(reg);
+               break;
+       default:
+               if (fpga > mclink_fpgacount)
+                       return -EINVAL;
+               res = mclink_receive(fpga - 1, regoff, data);
+               if (res < 0) {
+                       printf("mclink_receive reg %02lx returned %d\n",
+                              regoff, res);
+                       return res;
+               }
+       }
+
+       return 0;
+}
+
+int checkboard(void)
+{
+       char *s = getenv("serial#");
+       bool hw_type_cat = pca9698_get_value(0x20, 20);
+
+       puts("Board: ");
+
+       printf("HRCon %s", hw_type_cat ? "CAT" : "Fiber");
+
+       if (s != NULL) {
+               puts(", serial# ");
+               puts(s);
+       }
+
+       puts("\n");
+
+       return 0;
+}
+
+static void print_fpga_info(unsigned int fpga, bool rgmii2_present)
+{
+       u16 versions;
+       u16 fpga_version;
+       u16 fpga_features;
+       unsigned unit_type;
+       unsigned unit_type_pcb_video;
+       unsigned hardware_version;
+       unsigned feature_compression;
+       unsigned feature_osd;
+       unsigned feature_audio;
+       unsigned feature_sysclock;
+       unsigned feature_ramconfig;
+       unsigned feature_carrier_speed;
+       unsigned feature_carriers;
+       unsigned feature_video_channels;
+
+       FPGA_GET_REG(fpga, versions, &versions);
+       FPGA_GET_REG(fpga, fpga_version, &fpga_version);
+       FPGA_GET_REG(fpga, fpga_features, &fpga_features);
+
+       unit_type = (versions & 0xf000) >> 12;
+       unit_type_pcb_video = (versions & 0x01c0) >> 6;
+       feature_compression = (fpga_features & 0xe000) >> 13;
+       feature_osd = fpga_features & (1<<11);
+       feature_audio = (fpga_features & 0x0600) >> 9;
+       feature_sysclock = (fpga_features & 0x0180) >> 7;
+       feature_ramconfig = (fpga_features & 0x0060) >> 5;
+       feature_carrier_speed = fpga_features & (1<<4);
+       feature_carriers = (fpga_features & 0x000c) >> 2;
+       feature_video_channels = fpga_features & 0x0003;
+
+       switch (unit_type) {
+       case UNITTYPE_MAIN_USER:
+               printf("Mainchannel");
+               break;
+
+       case UNITTYPE_VIDEO_USER:
+               printf("Videochannel");
+               break;
+
+       default:
+               printf("UnitType %d(not supported)", unit_type);
+               break;
+       }
+
+       if (unit_type == UNITTYPE_MAIN_USER) {
+               hardware_version =
+                         (!!pca9698_get_value(0x20, 24) << 0)
+                       | (!!pca9698_get_value(0x20, 25) << 1)
+                       | (!!pca9698_get_value(0x20, 26) << 2)
+                       | (!!pca9698_get_value(0x20, 27) << 3)
+                       | (!!pca9698_get_value(0x20, 28) << 4);
+               switch (hardware_version) {
+               case HWVER_100:
+                       printf(" HW-Ver 1.00,");
+                       break;
+
+               case HWVER_110:
+                       printf(" HW-Ver 1.10,");
+                       break;
+
+               default:
+                       printf(" HW-Ver %d(not supported),",
+                              hardware_version);
+                       break;
+               }
+               if (rgmii2_present)
+                       printf(" RGMII2,");
+       }
+
+       if (unit_type == UNITTYPE_VIDEO_USER) {
+               hardware_version = versions & 0x000f;
+               switch (hardware_version) {
+               case FPGA_HWVER_200:
+                       printf(" HW-Ver 2.00,");
+                       break;
+
+               case FPGA_HWVER_210:
+                       printf(" HW-Ver 2.10,");
+                       break;
+
+               default:
+                       printf(" HW-Ver %d(not supported),",
+                              hardware_version);
+                       break;
+               }
+       }
+
+       switch (unit_type_pcb_video) {
+       case UNITTYPEPCB_DVI:
+               printf(" DVI,");
+               break;
+
+       case UNITTYPEPCB_DP_165:
+               printf(" DP 165MPix/s,");
+               break;
+
+       case UNITTYPEPCB_DP_300:
+               printf(" DP 300MPix/s,");
+               break;
+
+       case UNITTYPEPCB_HDMI:
+               printf(" HDMI,");
+               break;
+       }
+
+       printf(" FPGA V %d.%02d\n       features:",
+              fpga_version / 100, fpga_version % 100);
+
+
+       switch (feature_compression) {
+       case COMPRESSION_NONE:
+               printf(" no compression");
+               break;
+
+       case COMPRESSION_TYPE1_DELTA:
+               printf(" type1-deltacompression");
+               break;
+
+       case COMPRESSION_TYPE1_TYPE2_DELTA:
+               printf(" type1-deltacompression, type2-inlinecompression");
+               break;
+
+       default:
+               printf(" compression %d(not supported)", feature_compression);
+               break;
+       }
+
+       printf(", %sosd", feature_osd ? "" : "no ");
+
+       switch (feature_audio) {
+       case AUDIO_NONE:
+               printf(", no audio");
+               break;
+
+       case AUDIO_TX:
+               printf(", audio tx");
+               break;
+
+       case AUDIO_RX:
+               printf(", audio rx");
+               break;
+
+       case AUDIO_RXTX:
+               printf(", audio rx+tx");
+               break;
+
+       default:
+               printf(", audio %d(not supported)", feature_audio);
+               break;
+       }
+
+       puts(",\n       ");
+
+       switch (feature_sysclock) {
+       case SYSCLK_147456:
+               printf("clock 147.456 MHz");
+               break;
+
+       default:
+               printf("clock %d(not supported)", feature_sysclock);
+               break;
+       }
+
+       switch (feature_ramconfig) {
+       case RAM_DDR2_32:
+               printf(", RAM 32 bit DDR2");
+               break;
+
+       case RAM_DDR3_32:
+               printf(", RAM 32 bit DDR3");
+               break;
+
+       default:
+               printf(", RAM %d(not supported)", feature_ramconfig);
+               break;
+       }
+
+       printf(", %d carrier(s) %s", feature_carriers,
+              feature_carrier_speed ? "2.5Gbit/s" : "1Gbit/s");
+
+       printf(", %d video channel(s)\n", feature_video_channels);
+}
+
+int last_stage_init(void)
+{
+       int slaves;
+       unsigned int k;
+       unsigned int mux_ch;
+       unsigned char mclink_controllers[] = { 0x24, 0x25, 0x26 };
+       u16 fpga_features;
+       bool hw_type_cat = pca9698_get_value(0x20, 20);
+       bool ch0_rgmii2_present = false;
+
+       FPGA_GET_REG(0, fpga_features, &fpga_features);
+
+       /* Turn on Parade DP501 */
+       pca9698_direction_output(0x20, 10, 1);
+
+       ch0_rgmii2_present = !pca9698_get_value(0x20, 30);
+
+       /* wait for FPGA done */
+       for (k = 0; k < ARRAY_SIZE(mclink_controllers); ++k) {
+               unsigned int ctr = 0;
+
+               if (i2c_probe(mclink_controllers[k]))
+                       continue;
+
+               while (!(pca953x_get_val(mclink_controllers[k])
+                      & MCFPGA_DONE)) {
+                       udelay(100000);
+                       if (ctr++ > 5) {
+                               printf("no done for mclink_controller %d\n", k);
+                               break;
+                       }
+               }
+       }
+
+       if (hw_type_cat) {
+               miiphy_register(bb_miiphy_buses[0].name, bb_miiphy_read,
+                               bb_miiphy_write);
+               for (mux_ch = 0; mux_ch < MAX_MUX_CHANNELS; ++mux_ch) {
+                       if ((mux_ch == 1) && !ch0_rgmii2_present)
+                               continue;
+
+                       setup_88e1514(bb_miiphy_buses[0].name, mux_ch);
+               }
+       }
+
+       /* give slave-PLLs and Parade DP501 some time to be up and running */
+       udelay(500000);
+
+       mclink_fpgacount = CONFIG_SYS_MCLINK_MAX;
+       slaves = mclink_probe();
+       mclink_fpgacount = 0;
+
+       print_fpga_info(0, ch0_rgmii2_present);
+       osd_probe(0);
+
+       if (slaves <= 0)
+               return 0;
+
+       mclink_fpgacount = slaves;
+
+       for (k = 1; k <= slaves; ++k) {
+               FPGA_GET_REG(k, fpga_features, &fpga_features);
+
+               print_fpga_info(k, false);
+               osd_probe(k);
+               if (hw_type_cat) {
+                       miiphy_register(bb_miiphy_buses[k].name,
+                                       bb_miiphy_read, bb_miiphy_write);
+                       setup_88e1514(bb_miiphy_buses[k].name, 0);
+               }
+       }
+
+       return 0;
+}
+
+/*
+ * provide access to fpga gpios (for I2C bitbang)
+ * (these may look all too simple but make iocon.h much more readable)
+ */
+void fpga_gpio_set(unsigned int bus, int pin)
+{
+       FPGA_SET_REG(bus, gpio.set, pin);
+}
+
+void fpga_gpio_clear(unsigned int bus, int pin)
+{
+       FPGA_SET_REG(bus, gpio.clear, pin);
+}
+
+int fpga_gpio_get(unsigned int bus, int pin)
+{
+       u16 val;
+
+       FPGA_GET_REG(bus, gpio.read, &val);
+
+       return val & pin;
+}
+
+void mpc8308_init(void)
+{
+       pca9698_direction_output(0x20, 4, 1);
+}
+
+void mpc8308_set_fpga_reset(unsigned state)
+{
+       pca9698_set_value(0x20, 4, state ? 0 : 1);
+}
+
+void mpc8308_setup_hw(void)
+{
+       immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+
+       /*
+        * set "startup-finished"-gpios
+        */
+       setbits_be32(&immr->gpio[0].dir, (1 << (31-11)) | (1 << (31-12)));
+       setbits_be32(&immr->gpio[0].dat, 1 << (31-12));
+}
+
+int mpc8308_get_fpga_done(unsigned fpga)
+{
+       return pca9698_get_value(0x20, 19);
+}
+
+#ifdef CONFIG_FSL_ESDHC
+int board_mmc_init(bd_t *bd)
+{
+       immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+       sysconf83xx_t *sysconf = &immr->sysconf;
+
+       /* Enable cache snooping in eSDHC system configuration register */
+       out_be32(&sysconf->sdhccr, 0x02000000);
+
+       return fsl_esdhc_mmc_init(bd);
+}
+#endif
+
+static struct pci_region pcie_regions_0[] = {
+       {
+               .bus_start = CONFIG_SYS_PCIE1_MEM_BASE,
+               .phys_start = CONFIG_SYS_PCIE1_MEM_PHYS,
+               .size = CONFIG_SYS_PCIE1_MEM_SIZE,
+               .flags = PCI_REGION_MEM,
+       },
+       {
+               .bus_start = CONFIG_SYS_PCIE1_IO_BASE,
+               .phys_start = CONFIG_SYS_PCIE1_IO_PHYS,
+               .size = CONFIG_SYS_PCIE1_IO_SIZE,
+               .flags = PCI_REGION_IO,
+       },
+};
+
+void pci_init_board(void)
+{
+       immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+       sysconf83xx_t *sysconf = &immr->sysconf;
+       law83xx_t *pcie_law = sysconf->pcielaw;
+       struct pci_region *pcie_reg[] = { pcie_regions_0 };
+
+       fsl_setup_serdes(CONFIG_FSL_SERDES1, FSL_SERDES_PROTO_PEX,
+                        FSL_SERDES_CLK_100, FSL_SERDES_VDD_1V);
+
+       /* Deassert the resets in the control register */
+       out_be32(&sysconf->pecr1, 0xE0008000);
+       udelay(2000);
+
+       /* Configure PCI Express Local Access Windows */
+       out_be32(&pcie_law[0].bar, CONFIG_SYS_PCIE1_BASE & LAWBAR_BAR);
+       out_be32(&pcie_law[0].ar, LBLAWAR_EN | LBLAWAR_512MB);
+
+       mpc83xx_pcie_init(1, pcie_reg);
+}
+
+ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info)
+{
+       info->portwidth = FLASH_CFI_16BIT;
+       info->chipwidth = FLASH_CFI_BY16;
+       info->interface = FLASH_CFI_X16;
+       return 1;
+}
+
+#if defined(CONFIG_OF_BOARD_SETUP)
+int ft_board_setup(void *blob, bd_t *bd)
+{
+       ft_cpu_setup(blob, bd);
+       fdt_fixup_dr_usb(blob, bd);
+       fdt_fixup_esdhc(blob, bd);
+
+       return 0;
+}
+#endif
+
+/*
+ * FPGA MII bitbang implementation
+ */
+
+struct fpga_mii {
+       unsigned fpga;
+       int mdio;
+} fpga_mii[] = {
+       { 0, 1},
+       { 1, 1},
+       { 2, 1},
+       { 3, 1},
+};
+
+static int mii_dummy_init(struct bb_miiphy_bus *bus)
+{
+       return 0;
+}
+
+static int mii_mdio_active(struct bb_miiphy_bus *bus)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       if (fpga_mii->mdio)
+               FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDIO);
+       else
+               FPGA_SET_REG(fpga_mii->fpga, gpio.clear, GPIO_MDIO);
+
+       return 0;
+}
+
+static int mii_mdio_tristate(struct bb_miiphy_bus *bus)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDIO);
+
+       return 0;
+}
+
+static int mii_set_mdio(struct bb_miiphy_bus *bus, int v)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       if (v)
+               FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDIO);
+       else
+               FPGA_SET_REG(fpga_mii->fpga, gpio.clear, GPIO_MDIO);
+
+       fpga_mii->mdio = v;
+
+       return 0;
+}
+
+static int mii_get_mdio(struct bb_miiphy_bus *bus, int *v)
+{
+       u16 gpio;
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       FPGA_GET_REG(fpga_mii->fpga, gpio.read, &gpio);
+
+       *v = ((gpio & GPIO_MDIO) != 0);
+
+       return 0;
+}
+
+static int mii_set_mdc(struct bb_miiphy_bus *bus, int v)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       if (v)
+               FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDC);
+       else
+               FPGA_SET_REG(fpga_mii->fpga, gpio.clear, GPIO_MDC);
+
+       return 0;
+}
+
+static int mii_delay(struct bb_miiphy_bus *bus)
+{
+       udelay(1);
+
+       return 0;
+}
+
+struct bb_miiphy_bus bb_miiphy_buses[] = {
+       {
+               .name = "board0",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[0],
+       },
+       {
+               .name = "board1",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[1],
+       },
+       {
+               .name = "board2",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[2],
+       },
+       {
+               .name = "board3",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[3],
+       },
+};
+
+int bb_miiphy_buses_num = sizeof(bb_miiphy_buses) /
+                         sizeof(bb_miiphy_buses[0]);
diff --git a/board/gdsys/mpc8308/mpc8308.c b/board/gdsys/mpc8308/mpc8308.c
new file mode 100644 (file)
index 0000000..4338a33
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <asm/processor.h>
+#include <asm/io.h>
+#include <asm/ppc4xx-gpio.h>
+#include <asm/global_data.h>
+
+#include "mpc8308.h"
+#include <gdsys_fpga.h>
+
+#define REFLECTION_TESTPATTERN 0xdede
+#define REFLECTION_TESTPATTERN_INV (~REFLECTION_TESTPATTERN & 0xffff)
+
+#ifdef CONFIG_SYS_FPGA_NO_RFL_HI
+#define REFLECTION_TESTREG reflection_low
+#else
+#define REFLECTION_TESTREG reflection_high
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int get_fpga_state(unsigned dev)
+{
+       return gd->arch.fpga_state[dev];
+}
+
+void print_fpga_state(unsigned dev)
+{
+       if (gd->arch.fpga_state[dev] & FPGA_STATE_DONE_FAILED)
+               puts("       Waiting for FPGA-DONE timed out.\n");
+       if (gd->arch.fpga_state[dev] & FPGA_STATE_REFLECTION_FAILED)
+               puts("       FPGA reflection test failed.\n");
+}
+
+int board_early_init_f(void)
+{
+       unsigned k;
+
+       for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k)
+               gd->arch.fpga_state[k] = 0;
+
+       return 0;
+}
+
+int board_early_init_r(void)
+{
+       unsigned k;
+       unsigned ctr;
+
+       for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k)
+               gd->arch.fpga_state[k] = 0;
+
+       /*
+        * reset FPGA
+        */
+       mpc8308_init();
+
+       mpc8308_set_fpga_reset(1);
+
+       mpc8308_setup_hw();
+
+       for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k) {
+               ctr = 0;
+               while (!mpc8308_get_fpga_done(k)) {
+                       udelay(100000);
+                       if (ctr++ > 5) {
+                               gd->arch.fpga_state[k] |=
+                                       FPGA_STATE_DONE_FAILED;
+                               break;
+                       }
+               }
+       }
+
+       udelay(10);
+
+       mpc8308_set_fpga_reset(0);
+
+       for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k) {
+               /*
+                * wait for fpga out of reset
+                */
+               ctr = 0;
+               while (1) {
+                       u16 val;
+
+                       FPGA_SET_REG(k, reflection_low, REFLECTION_TESTPATTERN);
+
+                       FPGA_GET_REG(k, REFLECTION_TESTREG, &val);
+                       if (val == REFLECTION_TESTPATTERN_INV)
+                               break;
+
+                       udelay(100000);
+                       if (ctr++ > 5) {
+                               gd->arch.fpga_state[k] |=
+                                       FPGA_STATE_REFLECTION_FAILED;
+                               break;
+                       }
+               }
+       }
+
+       return 0;
+}
diff --git a/board/gdsys/mpc8308/mpc8308.h b/board/gdsys/mpc8308/mpc8308.h
new file mode 100644 (file)
index 0000000..dc07d56
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef __MPC8308_H_
+#define __MPC8308_H_
+
+/* functions to be provided by board implementation */
+void mpc8308_init(void);
+void mpc8308_set_fpga_reset(unsigned state);
+void mpc8308_setup_hw(void);
+int mpc8308_get_fpga_done(unsigned fpga);
+
+#endif /* __MPC8308_H_ */
diff --git a/board/gdsys/mpc8308/sdram.c b/board/gdsys/mpc8308/sdram.c
new file mode 100644 (file)
index 0000000..0fce8cf
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2007 Freescale Semiconductor, Inc.
+ * Copyright (C) 2010 Ilya Yanok, Emcraft Systems, yanok@emcraft.com
+ *
+ * Authors: Nick.Spence@freescale.com
+ *          Wilson.Lo@freescale.com
+ *          scottwood@freescale.com
+ *
+ * This files is  mostly identical to the original from
+ * board\freescale\mpc8315erdb\sdram.c
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <mpc83xx.h>
+#include <spd_sdram.h>
+
+#include <asm/bitops.h>
+#include <asm/io.h>
+
+#include <asm/processor.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* Fixed sdram init -- doesn't use serial presence detect.
+ *
+ * This is useful for faster booting in configs where the RAM is unlikely
+ * to be changed, or for things like NAND booting where space is tight.
+ */
+static long fixed_sdram(void)
+{
+       immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
+       u32 msize = CONFIG_SYS_DDR_SIZE * 1024 * 1024;
+       u32 msize_log2 = __ilog2(msize);
+
+       out_be32(&im->sysconf.ddrlaw[0].bar,
+                CONFIG_SYS_DDR_SDRAM_BASE  & 0xfffff000);
+       out_be32(&im->sysconf.ddrlaw[0].ar, LBLAWAR_EN | (msize_log2 - 1));
+       out_be32(&im->sysconf.ddrcdr, CONFIG_SYS_DDRCDR_VALUE);
+
+       out_be32(&im->ddr.csbnds[0].csbnds, (msize - 1) >> 24);
+       out_be32(&im->ddr.cs_config[0], CONFIG_SYS_DDR_CS0_CONFIG);
+
+       /* Currently we use only one CS, so disable the other bank. */
+       out_be32(&im->ddr.cs_config[1], 0);
+
+       out_be32(&im->ddr.sdram_clk_cntl, CONFIG_SYS_DDR_SDRAM_CLK_CNTL);
+       out_be32(&im->ddr.timing_cfg_3, CONFIG_SYS_DDR_TIMING_3);
+       out_be32(&im->ddr.timing_cfg_1, CONFIG_SYS_DDR_TIMING_1);
+       out_be32(&im->ddr.timing_cfg_2, CONFIG_SYS_DDR_TIMING_2);
+       out_be32(&im->ddr.timing_cfg_0, CONFIG_SYS_DDR_TIMING_0);
+
+       out_be32(&im->ddr.sdram_cfg, CONFIG_SYS_DDR_SDRAM_CFG);
+       out_be32(&im->ddr.sdram_cfg2, CONFIG_SYS_DDR_SDRAM_CFG2);
+       out_be32(&im->ddr.sdram_mode, CONFIG_SYS_DDR_MODE);
+       out_be32(&im->ddr.sdram_mode2, CONFIG_SYS_DDR_MODE2);
+
+       out_be32(&im->ddr.sdram_interval, CONFIG_SYS_DDR_INTERVAL);
+       sync();
+
+       /* enable DDR controller */
+       setbits_be32(&im->ddr.sdram_cfg, SDRAM_CFG_MEM_EN);
+       sync();
+
+       return get_ram_size(CONFIG_SYS_DDR_SDRAM_BASE, msize);
+}
+
+phys_size_t initdram(int board_type)
+{
+       immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
+       u32 msize;
+
+       if ((in_be32(&im->sysconf.immrbar) & IMMRBAR_BASE_ADDR) != (u32)im)
+               return -1;
+
+       /* DDR SDRAM */
+       msize = fixed_sdram();
+
+       /* return total bus SDRAM size(bytes)  -- DDR */
+       return msize;
+}
index 70eff912aa6bc7d99634d101e7b54225c61f98b4..11d075c38593c91d0ce588ff7c11ee56796427fd 100644 (file)
@@ -236,7 +236,7 @@ static int ccdm_mmc_read(struct mmc *mmc, u64 src, u8 *dst, int size)
                        tmp_buf);
                if (!n)
                        goto failure;
-               result = min(size, blk_len - ofs);
+               result = min(size, (int)(blk_len - ofs));
                memcpy(dst, tmp_buf + ofs, result);
                dst += result;
                size -= result;
@@ -736,7 +736,8 @@ do_bin_func:
                                src_buf = buf;
                                for (ptr = (uint8_t *)src_buf, i = 20; i > 0;
                                        i -= data_size, ptr += data_size)
-                                       memcpy(ptr, data, min(i, data_size));
+                                       memcpy(ptr, data,
+                                              min_t(size_t, i, data_size));
                        }
                }
                bin_func(dst_reg->digest, src_buf, 20);
@@ -931,11 +932,12 @@ static struct key_program *load_key_chunk(const char *ifname,
        struct key_program header;
        uint32_t crc;
        uint8_t buf[12];
-       int i;
+       loff_t i;
 
        if (fs_set_blk_dev(ifname, dev_part_str, fs_type))
                goto failure;
-       i = fs_read(path, (ulong)buf, 0, 12);
+       if (fs_read(path, (ulong)buf, 0, 12, &i) < 0)
+               goto failure;
        if (i < 12)
                goto failure;
        header.magic = get_unaligned_be32(buf);
@@ -950,8 +952,9 @@ static struct key_program *load_key_chunk(const char *ifname,
                goto failure;
        if (fs_set_blk_dev(ifname, dev_part_str, fs_type))
                goto failure;
-       i = fs_read(path, (ulong)result, 0,
-               sizeof(struct key_program) + header.code_size);
+       if (fs_read(path, (ulong)result, 0,
+                   sizeof(struct key_program) + header.code_size, &i) < 0)
+               goto failure;
        if (i <= 0)
                goto failure;
        *result = header;
@@ -1042,7 +1045,7 @@ static int second_stage_init(void)
        const char *image_path = "/ccdm.itb";
        char *mac_path = NULL;
        ulong image_addr;
-       size_t image_size;
+       loff_t image_size;
        uint32_t err;
 
        printf("CCDM S2\n");
@@ -1084,10 +1087,11 @@ static int second_stage_init(void)
        image_addr = (ulong)get_image_location();
        if (fs_set_blk_dev("mmc", mmcdev, FS_TYPE_EXT))
                goto failure;
-       image_size = fs_read(image_path, image_addr, 0, 0);
+       if (fs_read(image_path, image_addr, 0, 0, &image_size) < 0)
+               goto failure;
        if (image_size <= 0)
                goto failure;
-       printf("CCDM image found on %s, %d bytes\n", mmcdev, image_size);
+       printf("CCDM image found on %s, %lld bytes\n", mmcdev, image_size);
 
        hmac_blob = load_key_chunk("mmc", mmcdev, FS_TYPE_EXT, mac_path);
        if (!hmac_blob) {
index f76d968962711a5612633b13a24b54d8ca826390..64d90dd3fde076ae2d88c82c57fcb5c484db1d50 100644 (file)
@@ -326,7 +326,7 @@ int board_eth_init(bd_t *bis)
 }
 
 #ifdef CONFIG_OF_BOARD_SETUP
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -343,6 +343,8 @@ void ft_board_setup(void *blob, bd_t *bd)
 #endif
 
        FT_FSL_PCI_SETUP;
+
+       return 0;
 }
 #endif
 
diff --git a/board/google/chromebook_link/Kconfig b/board/google/chromebook_link/Kconfig
new file mode 100644 (file)
index 0000000..33a31f3
--- /dev/null
@@ -0,0 +1,41 @@
+if TARGET_CHROMEBOOK_LINK
+
+config SYS_BOARD
+       default "chromebook_link"
+
+config SYS_VENDOR
+       default "google"
+
+config SYS_SOC
+       default "ivybridge"
+
+config SYS_CONFIG_NAME
+       default "chromebook_link"
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+       def_bool y
+       select X86_RESET_VECTOR
+       select CPU_INTEL_SOCKET_RPGA989
+       select NORTHBRIDGE_INTEL_IVYBRIDGE
+       select SOUTHBRIDGE_INTEL_C216
+       select HAVE_ACPI_RESUME
+       select MARK_GRAPHICS_MEM_WRCOMB
+       select BOARD_ROMSIZE_KB_8192
+
+config MMCONF_BASE_ADDRESS
+       hex
+       default 0xf0000000
+
+config EARLY_POST_CROS_EC
+       bool "Enable early post to Chrome OS EC"
+       default y
+
+config SYS_CAR_ADDR
+       hex
+       default 0xff7e0000
+
+config SYS_CAR_SIZE
+       hex
+       default 0x20000
+
+endif
diff --git a/board/google/chromebook_link/MAINTAINERS b/board/google/chromebook_link/MAINTAINERS
new file mode 100644 (file)
index 0000000..bc253a2
--- /dev/null
@@ -0,0 +1,6 @@
+CHROMEBOOK LINK BOARD
+M:     Simon Glass <sjg@chromium.org>
+S:     Maintained
+F:     board/google/chromebook_link/
+F:     include/configs/chromebook_link.h
+F:     configs/chromebook_link_defconfig
diff --git a/board/google/chromebook_link/Makefile b/board/google/chromebook_link/Makefile
new file mode 100644 (file)
index 0000000..a133c2e
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# Copyright (c) 2011 The Chromium OS Authors.
+# (C) Copyright 2008
+# Graeme Russ, graeme.russ@gmail.com.
+#
+# (C) Copyright 2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2002
+# Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += link.o
diff --git a/board/google/chromebook_link/link.c b/board/google/chromebook_link/link.c
new file mode 100644 (file)
index 0000000..9978e92
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <cros_ec.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/pci.h>
+#include <asm/arch/pch.h>
+
+int arch_early_init_r(void)
+{
+       if (cros_ec_board_init())
+               return -1;
+
+       return 0;
+}
+
+static const struct pch_gpio_set1 pch_gpio_set1_mode = {
+       .gpio0 = GPIO_MODE_GPIO,  /* NMI_DBG# */
+       .gpio3 = GPIO_MODE_GPIO,  /* ALS_INT# */
+       .gpio5 = GPIO_MODE_GPIO,  /* SIM_DET */
+       .gpio7 = GPIO_MODE_GPIO,  /* EC_SCI# */
+       .gpio8 = GPIO_MODE_GPIO,  /* EC_SMI# */
+       .gpio9 = GPIO_MODE_GPIO,  /* RECOVERY# */
+       .gpio10 = GPIO_MODE_GPIO, /* SPD vector D3 */
+       .gpio11 = GPIO_MODE_GPIO, /* smbalert#, let's keep it initialized */
+       .gpio12 = GPIO_MODE_GPIO, /* TP_INT# */
+       .gpio14 = GPIO_MODE_GPIO, /* Touch_INT_L */
+       .gpio15 = GPIO_MODE_GPIO, /* EC_LID_OUT# (EC_WAKE#) */
+       .gpio21 = GPIO_MODE_GPIO, /* EC_IN_RW */
+       .gpio24 = GPIO_MODE_GPIO, /* DDR3L_EN */
+       .gpio28 = GPIO_MODE_GPIO, /* SLP_ME_CSW_DEV# */
+};
+
+static const struct pch_gpio_set1 pch_gpio_set1_direction = {
+       .gpio0 = GPIO_DIR_INPUT,
+       .gpio3 = GPIO_DIR_INPUT,
+       .gpio5 = GPIO_DIR_INPUT,
+       .gpio7 = GPIO_DIR_INPUT,
+       .gpio8 = GPIO_DIR_INPUT,
+       .gpio9 = GPIO_DIR_INPUT,
+       .gpio10 = GPIO_DIR_INPUT,
+       .gpio11 = GPIO_DIR_INPUT,
+       .gpio12 = GPIO_DIR_INPUT,
+       .gpio14 = GPIO_DIR_INPUT,
+       .gpio15 = GPIO_DIR_INPUT,
+       .gpio21 = GPIO_DIR_INPUT,
+       .gpio24 = GPIO_DIR_OUTPUT,
+       .gpio28 = GPIO_DIR_INPUT,
+};
+
+static const struct pch_gpio_set1 pch_gpio_set1_level = {
+       .gpio1 = GPIO_LEVEL_HIGH,
+       .gpio6 = GPIO_LEVEL_HIGH,
+       .gpio24 = GPIO_LEVEL_LOW,
+};
+
+static const struct pch_gpio_set1 pch_gpio_set1_invert = {
+       .gpio7 = GPIO_INVERT,
+       .gpio8 = GPIO_INVERT,
+       .gpio12 = GPIO_INVERT,
+       .gpio14 = GPIO_INVERT,
+       .gpio15 = GPIO_INVERT,
+};
+
+static const struct pch_gpio_set2 pch_gpio_set2_mode = {
+       .gpio36 = GPIO_MODE_GPIO, /* W_DISABLE_L */
+       .gpio41 = GPIO_MODE_GPIO, /* SPD vector D0 */
+       .gpio42 = GPIO_MODE_GPIO, /* SPD vector D1 */
+       .gpio43 = GPIO_MODE_GPIO, /* SPD vector D2 */
+       .gpio57 = GPIO_MODE_GPIO, /* PCH_SPI_WP_D */
+       .gpio60 = GPIO_MODE_GPIO, /* DRAMRST_CNTRL_PCH */
+};
+
+static const struct pch_gpio_set2 pch_gpio_set2_direction = {
+       .gpio36 = GPIO_DIR_OUTPUT,
+       .gpio41 = GPIO_DIR_INPUT,
+       .gpio42 = GPIO_DIR_INPUT,
+       .gpio43 = GPIO_DIR_INPUT,
+       .gpio57 = GPIO_DIR_INPUT,
+       .gpio60 = GPIO_DIR_OUTPUT,
+};
+
+static const struct pch_gpio_set2 pch_gpio_set2_level = {
+       .gpio36 = GPIO_LEVEL_HIGH,
+       .gpio60 = GPIO_LEVEL_HIGH,
+};
+
+static const struct pch_gpio_set3 pch_gpio_set3_mode = {
+};
+
+static const struct pch_gpio_set3 pch_gpio_set3_direction = {
+};
+
+static const struct pch_gpio_set3 pch_gpio_set3_level = {
+};
+
+static const struct pch_gpio_map link_gpio_map = {
+       .set1 = {
+               .mode      = &pch_gpio_set1_mode,
+               .direction = &pch_gpio_set1_direction,
+               .level     = &pch_gpio_set1_level,
+               .invert    = &pch_gpio_set1_invert,
+       },
+       .set2 = {
+               .mode      = &pch_gpio_set2_mode,
+               .direction = &pch_gpio_set2_direction,
+               .level     = &pch_gpio_set2_level,
+       },
+       .set3 = {
+               .mode      = &pch_gpio_set3_mode,
+               .direction = &pch_gpio_set3_direction,
+               .level     = &pch_gpio_set3_level,
+       },
+};
+
+int board_early_init_f(void)
+{
+       ich_gpio_set_gpio_map(&link_gpio_map);
+
+       return 0;
+}
+
+void setup_pch_gpios(u16 gpiobase, const struct pch_gpio_map *gpio)
+{
+       /* GPIO Set 1 */
+       if (gpio->set1.level)
+               outl(*((u32 *)gpio->set1.level), gpiobase + GP_LVL);
+       if (gpio->set1.mode)
+               outl(*((u32 *)gpio->set1.mode), gpiobase + GPIO_USE_SEL);
+       if (gpio->set1.direction)
+               outl(*((u32 *)gpio->set1.direction), gpiobase + GP_IO_SEL);
+       if (gpio->set1.reset)
+               outl(*((u32 *)gpio->set1.reset), gpiobase + GP_RST_SEL1);
+       if (gpio->set1.invert)
+               outl(*((u32 *)gpio->set1.invert), gpiobase + GPI_INV);
+       if (gpio->set1.blink)
+               outl(*((u32 *)gpio->set1.blink), gpiobase + GPO_BLINK);
+
+       /* GPIO Set 2 */
+       if (gpio->set2.level)
+               outl(*((u32 *)gpio->set2.level), gpiobase + GP_LVL2);
+       if (gpio->set2.mode)
+               outl(*((u32 *)gpio->set2.mode), gpiobase + GPIO_USE_SEL2);
+       if (gpio->set2.direction)
+               outl(*((u32 *)gpio->set2.direction), gpiobase + GP_IO_SEL2);
+       if (gpio->set2.reset)
+               outl(*((u32 *)gpio->set2.reset), gpiobase + GP_RST_SEL2);
+
+       /* GPIO Set 3 */
+       if (gpio->set3.level)
+               outl(*((u32 *)gpio->set3.level), gpiobase + GP_LVL3);
+       if (gpio->set3.mode)
+               outl(*((u32 *)gpio->set3.mode), gpiobase + GPIO_USE_SEL3);
+       if (gpio->set3.direction)
+               outl(*((u32 *)gpio->set3.direction), gpiobase + GP_IO_SEL3);
+       if (gpio->set3.reset)
+               outl(*((u32 *)gpio->set3.reset), gpiobase + GP_RST_SEL3);
+}
diff --git a/board/google/common/Makefile b/board/google/common/Makefile
new file mode 100644 (file)
index 0000000..b38bc14
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2014 Google, Inc
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += early_init.o
diff --git a/board/google/common/early_init.S b/board/google/common/early_init.S
new file mode 100644 (file)
index 0000000..7017185
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+.globl early_board_init
+early_board_init:
+       /* Enable post codes to EC */
+#ifdef CONFIG_EARLY_POST_CROS_EC
+       mov    $0x1b, %ecx
+       rdmsr
+       and    $0x100, %eax
+       test   %eax, %eax
+       je     1f
+
+       mov    $0x8000f8f0, %eax
+       mov    $0xcf8, %dx
+       out    %eax, (%dx)
+       mov    $0xfed1c001, %eax
+       mov    $0xcfc, %dx
+       out    %eax, (%dx)
+       mov    $0xfed1f410, %esp
+       mov    (%esp), %eax
+       and    $0xfffffffb, %eax
+       mov    %eax, (%esp)
+1:
+#endif
+       jmp     early_board_init_ret
diff --git a/board/gw8260/Kconfig b/board/gw8260/Kconfig
deleted file mode 100644 (file)
index 1d6aa80..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_GW8260
-
-config SYS_BOARD
-       default "gw8260"
-
-config SYS_CONFIG_NAME
-       default "gw8260"
-
-endif
diff --git a/board/gw8260/MAINTAINERS b/board/gw8260/MAINTAINERS
deleted file mode 100644 (file)
index 5268d19..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-GW8260 BOARD
-M:     Oliver Brown <obrown@adventnetworks.com>
-S:     Maintained
-F:     board/gw8260/
-F:     include/configs/gw8260.h
-F:     configs/gw8260_defconfig
diff --git a/board/gw8260/Makefile b/board/gw8260/Makefile
deleted file mode 100644 (file)
index 2e23f39..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := gw8260.o flash.o
diff --git a/board/gw8260/flash.c b/board/gw8260/flash.c
deleted file mode 100644 (file)
index 0c4a943..0000000
+++ /dev/null
@@ -1,502 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Oliver Brown <oliverb@alumni.utexas.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*********************************************************************/
-/* DESCRIPTION:
- *   This file contains the flash routines for the GW8260 board.
- *
- *
- *
- * MODULE DEPENDENCY:
- *   None
- *
- *
- * RESTRICTIONS/LIMITATIONS:
- *
- *   Only supports the following flash devices:
- *     AMD 29F080B
- *     AMD 29F016D
- *
- * Copyright (c) 2001, Advent Networks, Inc.
- *
- */
-/*********************************************************************/
-
-#include <common.h>
-#include <mpc8260.h>
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*********************************************************************/
-/*                   functions                                      */
-/*********************************************************************/
-
-/*
- * NAME: flash_init() -         initializes flash banks
- *
- * DESCRIPTION:
- *   This function initializes the flash bank(s).
- *
- * RETURNS:
- *   The size in bytes of the flash
- *
- * RESTRICTIONS/LIMITATIONS:
- *
- *
- */
-unsigned long flash_init(void)
-{
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i)
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-
-       /* for now, only support the 4 MB Flash SIMM */
-       (void)flash_get_size((vu_long *) CONFIG_SYS_FLASH0_BASE,
-                             &flash_info[0]);
-       /*
-        * protect monitor and environment sectors
-        */
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH0_BASE
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                     &flash_info[0]);
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-#ifndef CONFIG_ENV_SIZE
-#define CONFIG_ENV_SIZE        CONFIG_ENV_SECT_SIZE
-#endif
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
-       return CONFIG_SYS_FLASH0_SIZE * 1024 * 1024;    /*size */
-}
-
-/*********************************************************************/
-/* NAME: flash_print_info() - prints flash imformation              */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   This function prints the flash information.                    */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*   flash_info_t *info - flash information structure               */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   Displays flash information to console                          */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   None                                                           */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*                                                                  */
-/*********************************************************************/
-void flash_print_info  (flash_info_t *info)
-{
-    int i;
-
-    if (info->flash_id == FLASH_UNKNOWN) {
-       printf ("missing or unknown FLASH type\n");
-       return;
-    }
-
-    switch ((info->flash_id >> 16) & 0xff) {
-    case 0x1:
-       printf ("AMD ");
-       break;
-    default:
-       printf ("Unknown Vendor ");
-       break;
-    }
-
-    switch (info->flash_id & FLASH_TYPEMASK) {
-    case AMD_ID_F040B:
-       printf ("AM29F040B (4 Mbit)\n");
-       break;
-    case AMD_ID_F080B:
-       printf ("AM29F080B (8 Mbit)\n");
-       break;
-    case AMD_ID_F016D:
-       printf ("AM29F016D (16 Mbit)\n");
-       break;
-    default:
-       printf ("Unknown Chip Type\n");
-       break;
-    }
-
-    printf ("  Size: %ld MB in %d Sectors\n",
-           info->size >> 20, info->sector_count);
-
-    printf ("  Sector Start Addresses:");
-    for (i=0; i<info->sector_count; ++i) {
-       if ((i % 5) == 0)
-           printf ("\n   ");
-       printf (" %08lX%s",
-               info->start[i],
-               info->protect[i] ? " (RO)" : "     "
-           );
-    }
-    printf ("\n");
-    return;
-}
-
-/*********************************************************************/
-/*   The following code cannot be run from FLASH!                   */
-/*********************************************************************/
-
-/*********************************************************************/
-/* NAME: flash_get_size() - detects the flash size                  */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   1) Reads vendor ID and devices ID from the flash devices.      */
-/*   2) Initializes flash info struct.                              */
-/*   3) Return the flash size                                       */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*   vu_long *addr     - pointer to start of flash                  */
-/*   flash_info_t *info - flash information structure               */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   None                                                           */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   Size of the flash in bytes, or 0 if device id is unknown.      */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*   Only supports the following devices:                           */
-/*     AM29F080D                                                    */
-/*     AM29F016D                                                    */
-/*                                                                  */
-/*********************************************************************/
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-    short i;
-    vu_long vendor, devid;
-    ulong base = (ulong)addr;
-
-    /*printf("addr   = %08lx\n", (unsigned long)addr); */
-
-    /* Reset and Write auto select command: read Manufacturer ID */
-    addr[0x0000] = 0xf0f0f0f0;
-    addr[0x0555] = 0xAAAAAAAA;
-    addr[0x02AA] = 0x55555555;
-    addr[0x0555] = 0x90909090;
-    udelay (1000);
-
-    vendor = addr[0];
-    /*printf("vendor = %08lx\n", vendor); */
-    if (vendor != 0x01010101) {
-       info->size = 0;
-       goto out;
-    }
-
-    devid = addr[1];
-    /*printf("devid  = %08lx\n", devid); */
-
-    if ((devid & 0xff) == AMD_ID_F080B) {
-       info->flash_id     = (vendor & 0xff) << 16 | AMD_ID_F080B;
-       /* we have 16 sectors with 64KB each x 4 */
-       info->sector_count = 16;
-       info->size         = 4 * info->sector_count * 64*1024;
-    } else if ((devid & 0xff) == AMD_ID_F016D){
-       info->flash_id     = (vendor & 0xff) << 16 | AMD_ID_F016D;
-       /* we have 32 sectors with 64KB each x 4 */
-       info->sector_count = 32;
-       info->size         = 4 * info->sector_count * 64*1024;
-    } else {
-       info->size = 0;
-       goto out;
-    }
-    /*printf("sector count = %08x\n", info->sector_count); */
-    /* check for protected sectors */
-    for (i = 0; i < info->sector_count; i++) {
-       /* sector base address */
-       info->start[i] = base + i * (info->size / info->sector_count);
-       /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-       /* D0 = 1 if protected */
-       addr = (volatile unsigned long *)(info->start[i]);
-       info->protect[i] = addr[2] & 1;
-    }
-
-    /* reset command */
-    addr = (vu_long *)info->start[0];
-
-  out:
-    addr[0] = 0xf0f0f0f0;
-
-    /*printf("size = %08x\n", info->size); */
-    return info->size;
-}
-
-/*********************************************************************/
-/* NAME: flash_erase() - erases flash by sector                             */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   This function erases flash sectors starting for s_first to             */
-/*   s_last.                                                        */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*   flash_info_t *info - flash information structure               */
-/*   int s_first - first sector to erase                            */
-/*   int s_last         - last sector to erase                              */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   None                                                           */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   Returns 0 for success, 1 for failure.                          */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*********************************************************************/
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-    vu_long *addr = (vu_long*)(info->start[0]);
-    int flag, prot, sect, l_sect;
-    ulong start, now, last;
-
-    if ((s_first < 0) || (s_first > s_last)) {
-       if (info->flash_id == FLASH_UNKNOWN) {
-           printf ("- missing\n");
-       } else {
-           printf ("- no sectors to erase\n");
-       }
-       return 1;
-    }
-
-    prot = 0;
-    for (sect = s_first; sect <= s_last; sect++) {
-       if (info->protect[sect]) {
-           prot++;
-       }
-    }
-
-    if (prot) {
-       printf ("- Warning: %d protected sectors will not be erased!\n",
-               prot);
-    } else {
-       printf ("\n");
-    }
-
-    l_sect = -1;
-
-    /* Disable interrupts which might cause a timeout here */
-    flag = disable_interrupts();
-
-    addr[0x0555] = 0xAAAAAAAA;
-    addr[0x02AA] = 0x55555555;
-    addr[0x0555] = 0x80808080;
-    addr[0x0555] = 0xAAAAAAAA;
-    addr[0x02AA] = 0x55555555;
-    udelay (100);
-
-    /* Start erase on unprotected sectors */
-    for (sect = s_first; sect <= s_last; sect++) {
-       if (info->protect[sect] == 0) { /* not protected */
-           addr = (vu_long*)(info->start[sect]);
-           addr[0] = 0x30303030;
-           l_sect = sect;
-       }
-    }
-
-    /* re-enable interrupts if necessary */
-    if (flag)
-       enable_interrupts();
-
-    /* wait at least 80us - let's wait 1 ms */
-    udelay (1000);
-
-    /*
-     * We wait for the last triggered sector
-     */
-    if (l_sect < 0)
-       goto DONE;
-
-    start = get_timer (0);
-    last  = start;
-    addr = (vu_long*)(info->start[l_sect]);
-    while ((addr[0] & 0x80808080) != 0x80808080) {
-       if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-           printf ("Timeout\n");
-           return 1;
-       }
-       /* show that we're waiting */
-       if ((now - last) > 1000) {  /* every second */
-           serial_putc ('.');
-           last = now;
-       }
-    }
-
-  DONE:
-    /* reset to read mode */
-    addr = (volatile unsigned long *)info->start[0];
-    addr[0] = 0xF0F0F0F0;   /* reset bank */
-
-    printf (" done\n");
-    return 0;
-}
-
-/*********************************************************************/
-/* NAME: write_buff() - writes a buffer to flash                    */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   This function copies a buffer, *src, to flash.                 */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*  flash_info_t *info - flash information structure                */
-/*  uchar *src - pointer to buffer to write to flash                */
-/*  ulong addr - address to start write at                          */
-/*  ulong cnt - number of bytes to write to flash                   */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   None                                                           */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   0 - OK                                                         */
-/*   1 - write timeout                                              */
-/*   2 - Flash not erased                                           */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*********************************************************************/
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-    ulong cp, wp, data;
-    int i, l, rc;
-
-    wp = (addr & ~3);  /* get lower word aligned address */
-
-    /*
-     * handle unaligned start bytes
-     */
-    if ((l = addr - wp) != 0) {
-       data = 0;
-       for (i = 0, cp = wp; i < l; ++i, ++cp) {
-           data = (data << 8) | (*(uchar *)cp);
-       }
-       for (; (i < 4) && (cnt > 0); ++i) {
-           data = (data << 8) | *src++;
-           --cnt;
-           ++cp;
-       }
-       for (; (cnt == 0) && (i < 4); ++i, ++cp) {
-           data = (data << 8) | (*(uchar *)cp);
-       }
-
-       if ((rc = write_word(info, wp, data)) != 0) {
-           return (rc);
-       }
-       wp += 4;
-    }
-
-    /*
-     * handle word aligned part
-     */
-    while (cnt >= 4) {
-       data = 0;
-       for (i = 0; i < 4; ++i) {
-           data = (data << 8) | *src++;
-       }
-       if ((rc = write_word(info, wp, data)) != 0) {
-           return (rc);
-       }
-       wp  += 4;
-       cnt -= 4;
-    }
-
-    if (cnt == 0) {
-       return (0);
-    }
-
-    /*
-     * handle unaligned tail bytes
-     */
-    data = 0;
-    for (i = 0, cp = wp; (i < 4) && (cnt > 0); ++i, ++cp) {
-       data = (data << 8) | *src++;
-       --cnt;
-    }
-    for (; (i < 4); ++i, ++cp) {
-       data = (data << 8) | (*(uchar *)cp);
-    }
-
-    return (write_word(info, wp, data));
-}
-
-/*********************************************************************/
-/* NAME: write_word() - writes a word to flash                      */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   This writes a single word to flash.                            */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*  flash_info_t *info - flash information structure                */
-/*  ulong dest - address to write                                   */
-/*  ulong data - data to write                                      */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   None                                                           */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   0 - OK                                                         */
-/*   1 - write timeout                                              */
-/*   2 - Flash not erased                                           */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*********************************************************************/
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-    vu_long *addr = (vu_long*)(info->start[0]);
-    ulong start;
-    int flag;
-
-    /* Check if Flash is (sufficiently) erased */
-    if ((*((vu_long *)dest) & data) != data) {
-       return (2);
-    }
-    /* Disable interrupts which might cause a timeout here */
-    flag = disable_interrupts();
-
-    addr[0x0555] = 0xAAAAAAAA;
-    addr[0x02AA] = 0x55555555;
-    addr[0x0555] = 0xA0A0A0A0;
-
-    *((vu_long *)dest) = data;
-
-    /* re-enable interrupts if necessary */
-    if (flag)
-       enable_interrupts();
-
-    /* data polling for D7 */
-    start = get_timer (0);
-    while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
-       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-           return (1);
-       }
-    }
-    return (0);
-}
-/*********************************************************************/
-/*                        End of flash.c                            */
-/*********************************************************************/
diff --git a/board/gw8260/gw8260.c b/board/gw8260/gw8260.c
deleted file mode 100644 (file)
index bbae0a8..0000000
+++ /dev/null
@@ -1,639 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.com>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Oliver Brown <oliverb@alumni.utexas.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*********************************************************************/
-/* DESCRIPTION:
- *   This file contains the board routines for the GW8260 board.
- *
- * MODULE DEPENDENCY:
- *   None
- *
- * RESTRICTIONS/LIMITATIONS:
- *   None
- *
- * Copyright (c) 2001, Advent Networks, Inc.
- */
-/*********************************************************************/
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-/*
- * I/O Port configuration table
- *
- */
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*             conf ppar psor pdir podr pdat */
-       /* PA31 */ {   1,   0,   0,   1,   0,   0   }, /* TP14          */
-       /* PA30 */ {   1,   1,   1,   1,   0,   0   }, /* US_RTS        */
-       /* PA29 */ {   1,   0,   0,   1,   0,   1   }, /* LSSI_DATA     */
-       /* PA28 */ {   1,   0,   0,   1,   0,   1   }, /* LSSI_CLK      */
-       /* PA27 */ {   1,   0,   0,   1,   0,   0   }, /* TP12          */
-       /* PA26 */ {   1,   0,   0,   0,   0,   0   }, /* IO_STATUS     */
-       /* PA25 */ {   1,   0,   0,   0,   0,   0   }, /* IO_CLOCK      */
-       /* PA24 */ {   1,   0,   0,   0,   0,   0   }, /* IO_CONFIG     */
-       /* PA23 */ {   1,   0,   0,   0,   0,   0   }, /* IO_DONE       */
-       /* PA22 */ {   1,   0,   0,   0,   0,   0   }, /* IO_DATA       */
-       /* PA21 */ {   1,   1,   0,   1,   0,   0   }, /* US_TXD3       */
-       /* PA20 */ {   1,   1,   0,   1,   0,   0   }, /* US_TXD2       */
-       /* PA19 */ {   1,   1,   0,   1,   0,   0   }, /* US_TXD1       */
-       /* PA18 */ {   1,   1,   0,   1,   0,   0   }, /* US_TXD0       */
-       /* PA17 */ {   1,   1,   0,   0,   0,   0   }, /* DS_RXD0       */
-       /* PA16 */ {   1,   1,   0,   0,   0,   0   }, /* DS_RXD1       */
-       /* PA15 */ {   1,   1,   0,   0,   0,   0   }, /* DS_RXD2       */
-       /* PA14 */ {   1,   1,   0,   0,   0,   0   }, /* DS_RXD3       */
-       /* PA13 */ {   1,   0,   0,   1,   0,   0   }, /* SPARE7        */
-       /* PA12 */ {   1,   0,   0,   1,   0,   0   }, /* SPARE6        */
-       /* PA11 */ {   1,   0,   0,   1,   0,   0   }, /* SPARE5        */
-       /* PA10 */ {   1,   0,   0,   1,   0,   0   }, /* SPARE4        */
-       /* PA9  */ {   1,   0,   0,   1,   0,   0   }, /* SPARE3        */
-       /* PA8  */ {   1,   0,   0,   1,   0,   0   }, /* SPARE2        */
-       /* PA7  */ {   1,   0,   0,   0,   0,   0   }, /* LSSI_IN       */
-       /* PA6  */ {   1,   0,   0,   1,   0,   0   }, /* SPARE0        */
-       /* PA5  */ {   1,   0,   0,   1,   0,   0   }, /* DEMOD_RESET_  */
-       /* PA4  */ {   1,   0,   0,   1,   0,   0   }, /* MOD_RESET_    */
-       /* PA3  */ {   1,   0,   0,   1,   0,   0   }, /* IO_RESET      */
-       /* PA2  */ {   1,   0,   0,   1,   0,   0   }, /* TX_ENABLE     */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* RX_LOCK       */
-       /* PA0  */ {   1,   0,   0,   1,   0,   1   }  /* MPC_RESET_    */
-    },
-
-    /* Port B configuration */
-    {  /*             conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FETH0_TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FETH0_TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_COL   */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_CRS   */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FETH0_TXD3  */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FETH0_TXD2  */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FETH0_TXD1  */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FETH0_TXD0  */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_RXD0  */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_RXD1  */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_RXD2  */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_RXD3  */
-       /* PB17 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_RX_DV */
-       /* PB16 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_RX_ER */
-       /* PB15 */ {   1,   1,   0,   1,   0,   0   }, /* FETH1_TX_ER */
-       /* PB14 */ {   1,   1,   0,   1,   0,   0   }, /* FETH1_TX_EN */
-       /* PB13 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_COL   */
-       /* PB12 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_CRS   */
-       /* PB11 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_RXD3  */
-       /* PB10 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_RXD2  */
-       /* PB9  */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_RXD1  */
-       /* PB8  */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_RXD0  */
-       /* PB7  */ {   1,   1,   0,   1,   0,   0   }, /* FETH1_TXD0  */
-       /* PB6  */ {   1,   1,   0,   1,   0,   0   }, /* FETH1_TXD1  */
-       /* PB5  */ {   1,   1,   0,   1,   0,   0   }, /* FETH1_TXD2  */
-       /* PB4  */ {   1,   1,   0,   1,   0,   0   }, /* FETH1_TXD3  */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {  /*             conf ppar psor pdir podr pdat */
-       /* PC31 */ {   1,   0,   0,   1,   0,   1   }, /* FAST_RESET_   */
-       /* PC30 */ {   1,   0,   0,   1,   0,   1   }, /* FAST_PAUSE_   */
-       /* PC29 */ {   1,   0,   0,   1,   0,   0   }, /* FAST_SLEW1    */
-       /* PC28 */ {   1,   0,   0,   1,   0,   0   }, /* FAST_SLEW0    */
-       /* PC27 */ {   1,   0,   0,   1,   0,   0   }, /* TP13          */
-       /* PC26 */ {   1,   0,   0,   0,   0,   0   }, /* RXDECDFLG     */
-       /* PC25 */ {   1,   0,   0,   0,   0,   0   }, /* RXACQFAIL     */
-       /* PC24 */ {   1,   0,   0,   0,   0,   0   }, /* RXACQFLG      */
-       /* PC23 */ {   1,   0,   0,   1,   0,   0   }, /* WD_TCL        */
-       /* PC22 */ {   1,   0,   0,   1,   0,   0   }, /* WD_EN         */
-       /* PC21 */ {   1,   0,   0,   1,   0,   0   }, /* US_TXCLK      */
-       /* PC20 */ {   1,   0,   0,   0,   0,   0   }, /* DS_RXCLK      */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_RX_CLK  */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FETH0_TX_CLK  */
-       /* PC17 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_RX_CLK  */
-       /* PC16 */ {   1,   1,   0,   0,   0,   0   }, /* FETH1_TX_CLK  */
-       /* PC15 */ {   1,   0,   0,   1,   0,   0   }, /* TX_SHUTDOWN_  */
-       /* PC14 */ {   1,   0,   0,   0,   0,   0   }, /* RS_232_DTR_   */
-       /* PC13 */ {   1,   0,   0,   0,   0,   0   }, /* TXERR         */
-       /* PC12 */ {   1,   0,   0,   1,   0,   1   }, /* FETH1_MDDIS   */
-       /* PC11 */ {   1,   0,   0,   1,   0,   1   }, /* FETH0_MDDIS   */
-       /* PC10 */ {   1,   0,   0,   1,   0,   0   }, /* MDC           */
-       /* PC9  */ {   1,   0,   0,   1,   1,   1   }, /* MDIO          */
-       /* PC8  */ {   1,   0,   0,   1,   1,   1   }, /* SER_NUM       */
-       /* PC7  */ {   1,   1,   0,   0,   0,   0   }, /* US_CTS        */
-       /* PC6  */ {   1,   1,   0,   0,   0,   0   }, /* DS_CD_        */
-       /* PC5  */ {   1,   0,   0,   1,   0,   0   }, /* FETH1_PWRDWN  */
-       /* PC4  */ {   1,   0,   0,   1,   0,   0   }, /* FETH0_PWRDWN  */
-       /* PC3  */ {   1,   0,   0,   1,   0,   0   }, /* MPULED3       */
-       /* PC2  */ {   1,   0,   0,   1,   0,   0   }, /* MPULED2       */
-       /* PC1  */ {   1,   0,   0,   1,   0,   0   }, /* MPULED1       */
-       /* PC0  */ {   1,   0,   0,   1,   0,   1   }, /* MPULED0       */
-    },
-
-    /* Port D */
-    {  /*             conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD30 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD29 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD28 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD27 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD26 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD25 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD24 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD23 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD22 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD21 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD20 */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD19 */ {   1,   1,   1,   0,   0,   0   }, /*  not used     */
-       /* PD18 */ {   1,   1,   1,   0,   0,   0   }, /*  not used     */
-       /* PD17 */ {   1,   1,   1,   0,   0,   0   }, /*  not used     */
-       /* PD16 */ {   1,   1,   1,   0,   0,   0   }, /*  not used     */
-       /* PD15 */ {   1,   1,   1,   0,   1,   1   }, /*  SDRAM_SDA    */
-       /* PD14 */ {   1,   1,   1,   0,   1,   1   }, /*  SDRAM_SCL    */
-       /* PD13 */ {   1,   0,   0,   1,   0,   0   }, /*  MPULED7      */
-       /* PD12 */ {   1,   0,   0,   1,   0,   0   }, /*  MPULED6      */
-       /* PD11 */ {   1,   0,   0,   1,   0,   0   }, /*  MPULED5      */
-       /* PD10 */ {   1,   0,   0,   1,   0,   0   }, /*  MPULED4      */
-       /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /*  RS232_TXD    */
-       /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /*  RD232_RXD    */
-       /* PD7  */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD6  */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD5  */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD4  */ {   1,   0,   0,   0,   0,   0   }, /*  not used     */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    }
-};
-
-/*********************************************************************/
-/* NAME: checkboard() -         Displays the board type and serial number   */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   Displays the board type and serial number                      */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   Always returns 1                                               */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*                                                                  */
-/*********************************************************************/
-int checkboard (void)
-{
-       char buf[64];
-       int i = getenv_f("serial#", buf, sizeof(buf));
-
-       puts ("Board: Advent Networks gw8260\n");
-
-       if (i > 0) {
-               printf("SN:    %s\n", buf);
-       }
-       return 0;
-}
-
-
-#if defined (CONFIG_SYS_DRAM_TEST)
-/*********************************************************************/
-/* NAME:  move64() -  moves a double word (64-bit)                  */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   this function performs a double word move from the data at             */
-/*   the source pointer to the location at the destination pointer.  */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*   unsigned long long *src  - pointer to data to move                     */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   unsigned long long *dest - pointer to locate to move data      */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   None                                                           */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*   May cloober fr0.                                               */
-/*                                                                  */
-/*********************************************************************/
-static void move64 (unsigned long long *src, unsigned long long *dest)
-{
-       asm ("lfd  0, 0(3)\n\t" /* fpr0   =  *scr       */
-            "stfd 0, 0(4)"     /* *dest  =  fpr0       */
-      : : : "fr0");            /* Clobbers fr0         */
-       return;
-}
-
-
-#if defined (CONFIG_SYS_DRAM_TEST_DATA)
-
-unsigned long long pattern[] = {
-       0xaaaaaaaaaaaaaaaaULL,
-       0xccccccccccccccccULL,
-       0xf0f0f0f0f0f0f0f0ULL,
-       0xff00ff00ff00ff00ULL,
-       0xffff0000ffff0000ULL,
-       0xffffffff00000000ULL,
-       0x00000000ffffffffULL,
-       0x0000ffff0000ffffULL,
-       0x00ff00ff00ff00ffULL,
-       0x0f0f0f0f0f0f0f0fULL,
-       0x3333333333333333ULL,
-       0x5555555555555555ULL,
-};
-
-/*********************************************************************/
-/* NAME:  mem_test_data() -  test data lines for shorts and opens    */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   Tests data lines for shorts and opens by forcing adjacent data  */
-/*   to opposite states. Because the data lines could be routed in   */
-/*   an arbitrary manner the must ensure test patterns ensure that   */
-/*   every case is tested. By using the following series of binary   */
-/*   patterns every combination of adjacent bits is test regardless  */
-/*   of routing.                                                    */
-/*                                                                  */
-/*     ...101010101010101010101010                                  */
-/*     ...110011001100110011001100                                  */
-/*     ...111100001111000011110000                                  */
-/*     ...111111110000000011111111                                  */
-/*                                                                  */
-/*   Carrying this out, gives us six hex patterns as follows:       */
-/*                                                                  */
-/*     0xaaaaaaaaaaaaaaaa                                           */
-/*     0xcccccccccccccccc                                           */
-/*     0xf0f0f0f0f0f0f0f0                                           */
-/*     0xff00ff00ff00ff00                                           */
-/*     0xffff0000ffff0000                                           */
-/*     0xffffffff00000000                                           */
-/*                                                                  */
-/*   The number test patterns will always be given by:              */
-/*                                                                  */
-/*   log(base 2)(number data bits) = log2 (64) = 6                  */
-/*                                                                  */
-/*   To test for short and opens to other signals on our boards. we  */
-/*   simply                                                         */
-/*   test with the 1's complemnt of the paterns as well.            */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   Displays failing test pattern                                  */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   0 -  Passed test                                               */
-/*   1 -  Failed test                                               */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*  Assumes only one one SDRAM bank                                 */
-/*                                                                  */
-/*********************************************************************/
-int mem_test_data (void)
-{
-       unsigned long long *pmem = (unsigned long long *) CONFIG_SYS_SDRAM_BASE;
-       unsigned long long temp64 = 0;
-       int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
-       int i;
-       unsigned int hi, lo;
-
-       for (i = 0; i < num_patterns; i++) {
-               move64 (&(pattern[i]), pmem);
-               move64 (pmem, &temp64);
-
-               /* hi = (temp64>>32) & 0xffffffff;          */
-               /* lo = temp64 & 0xffffffff;                */
-               /* printf("\ntemp64 = 0x%08x%08x", hi, lo); */
-
-               hi = (pattern[i] >> 32) & 0xffffffff;
-               lo = pattern[i] & 0xffffffff;
-               /* printf("\npattern[%d] = 0x%08x%08x", i, hi, lo);  */
-
-               if (temp64 != pattern[i]) {
-                       printf ("\n   Data Test Failed, pattern 0x%08x%08x",
-                               hi, lo);
-                       return 1;
-               }
-       }
-
-       return 0;
-}
-#endif /* CONFIG_SYS_DRAM_TEST_DATA */
-
-#if defined (CONFIG_SYS_DRAM_TEST_ADDRESS)
-/*********************************************************************/
-/* NAME:  mem_test_address() - test address lines                   */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   This function performs a test to verify that each word im      */
-/*   memory is uniquly addressable. The test sequence is as follows: */
-/*                                                                  */
-/*   1) write the address of each word to each word.                */
-/*   2) verify that each location equals its address                */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   Displays failing test pattern and address                      */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   0 -  Passed test                                               */
-/*   1 -  Failed test                                               */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*                                                                  */
-/*********************************************************************/
-int mem_test_address (void)
-{
-       volatile unsigned int *pmem =
-               (volatile unsigned int *) CONFIG_SYS_SDRAM_BASE;
-       const unsigned int size = (CONFIG_SYS_SDRAM_SIZE * 1024 * 1024) / 4;
-       unsigned int i;
-
-       /* write address to each location */
-       for (i = 0; i < size; i++) {
-               pmem[i] = i;
-       }
-
-       /* verify each loaction */
-       for (i = 0; i < size; i++) {
-               if (pmem[i] != i) {
-                       printf ("\n   Address Test Failed at 0x%x", i);
-                       return 1;
-               }
-       }
-       return 0;
-}
-#endif /* CONFIG_SYS_DRAM_TEST_ADDRESS */
-
-#if defined (CONFIG_SYS_DRAM_TEST_WALK)
-/*********************************************************************/
-/* NAME:   mem_march() -  memory march                              */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   Marches up through memory. At each location verifies rmask if   */
-/*   read = 1. At each location write wmask if write = 1. Displays  */
-/*   failing address and pattern.                                   */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*   volatile unsigned long long * base - start address of test             */
-/*   unsigned int size - number of dwords(64-bit) to test           */
-/*   unsigned long long rmask - read verify mask                    */
-/*   unsigned long long wmask - wrtie verify mask                   */
-/*   short read - verifies rmask if read = 1                        */
-/*   short write  - writes wmask if write = 1                       */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   Displays failing test pattern and address                      */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   0 -  Passed test                                               */
-/*   1 -  Failed test                                               */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*                                                                  */
-/*********************************************************************/
-int mem_march (volatile unsigned long long *base,
-              unsigned int size,
-              unsigned long long rmask,
-              unsigned long long wmask, short read, short write)
-{
-       unsigned int i;
-       unsigned long long temp = 0;
-       unsigned int hitemp, lotemp, himask, lomask;
-
-       for (i = 0; i < size; i++) {
-               if (read != 0) {
-                       /* temp = base[i]; */
-                       move64 ((unsigned long long *) &(base[i]), &temp);
-                       if (rmask != temp) {
-                               hitemp = (temp >> 32) & 0xffffffff;
-                               lotemp = temp & 0xffffffff;
-                               himask = (rmask >> 32) & 0xffffffff;
-                               lomask = rmask & 0xffffffff;
-
-                               printf ("\n Walking one's test failed: address = 0x%08x," "\n\texpected 0x%08x%08x, found 0x%08x%08x", i << 3, himask, lomask, hitemp, lotemp);
-                               return 1;
-                       }
-               }
-               if (write != 0) {
-                       /*  base[i] = wmask; */
-                       move64 (&wmask, (unsigned long long *) &(base[i]));
-               }
-       }
-       return 0;
-}
-#endif /* CONFIG_SYS_DRAM_TEST_WALK */
-
-/*********************************************************************/
-/* NAME:   mem_test_walk() -  a simple walking ones test            */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   Performs a walking ones through entire physical memory. The     */
-/*   test uses as series of memory marches, mem_march(), to verify   */
-/*   and write the test patterns to memory. The test sequence is as  */
-/*   follows:                                                       */
-/*     1) march writing 0000...0001                                 */
-/*     2) march verifying 0000...0001  , writing  0000...0010       */
-/*     3) repeat step 2 shifting masks left 1 bit each time unitl    */
-/*        the write mask equals 1000...0000                         */
-/*     4) march verifying 1000...0000                               */
-/*   The test fails if any of the memory marches return a failure.   */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   Displays which pass on the memory test is executing            */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   0 -  Passed test                                               */
-/*   1 -  Failed test                                               */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*                                                                  */
-/*********************************************************************/
-int mem_test_walk (void)
-{
-       unsigned long long mask;
-       volatile unsigned long long *pmem =
-               (volatile unsigned long long *) CONFIG_SYS_SDRAM_BASE;
-       const unsigned long size = (CONFIG_SYS_SDRAM_SIZE * 1024 * 1024) / 8;
-
-       unsigned int i;
-
-       mask = 0x01;
-
-       printf ("Initial Pass");
-       mem_march (pmem, size, 0x0, 0x1, 0, 1);
-
-       printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
-       printf ("               ");
-       printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
-
-       for (i = 0; i < 63; i++) {
-               printf ("Pass %2d", i + 2);
-               if (mem_march (pmem, size, mask, mask << 1, 1, 1) != 0) {
-                       /*printf("mask: 0x%x, pass: %d, ", mask, i); */
-                       return 1;
-               }
-               mask = mask << 1;
-               printf ("\b\b\b\b\b\b\b");
-       }
-
-       printf ("Last Pass");
-       if (mem_march (pmem, size, 0, mask, 0, 1) != 0) {
-               /* printf("mask: 0x%x", mask); */
-               return 1;
-       }
-       printf ("\b\b\b\b\b\b\b\b\b");
-       printf ("            ");
-       printf ("\b\b\b\b\b\b\b\b\b");
-
-       return 0;
-}
-
-/*********************************************************************/
-/* NAME:    testdram() -  calls any enabled memory tests            */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   Runs memory tests if the environment test variables are set to  */
-/*   'y'.                                                           */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*   testdramdata    - If set to 'y', data test is run.                     */
-/*   testdramaddress - If set to 'y', address test is run.          */
-/*   testdramwalk    - If set to 'y', walking ones test is run      */
-/*                                                                  */
-/* OUTPUTS:                                                         */
-/*   None                                                           */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   0 -  Passed test                                               */
-/*   1 -  Failed test                                               */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*                                                                  */
-/*********************************************************************/
-int testdram (void)
-{
-       int rundata, runaddress, runwalk;
-
-       rundata = getenv_yesno("testdramdata") == 1;
-       runaddress = getenv_yesno("testdramaddress") == 1;
-       runwalk = getenv_yesno("testdramwalk") == 1;
-
-       if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {
-               printf ("Testing RAM ... ");
-       }
-#ifdef CONFIG_SYS_DRAM_TEST_DATA
-       if (rundata == 1) {
-               if (mem_test_data () == 1) {
-                       return 1;
-               }
-       }
-#endif
-#ifdef CONFIG_SYS_DRAM_TEST_ADDRESS
-       if (runaddress == 1) {
-               if (mem_test_address () == 1) {
-                       return 1;
-               }
-       }
-#endif
-#ifdef CONFIG_SYS_DRAM_TEST_WALK
-       if (runwalk == 1) {
-               if (mem_test_walk () == 1) {
-                       return 1;
-               }
-       }
-#endif
-       if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {
-               printf ("passed");
-       }
-       return 0;
-
-}
-#endif /* CONFIG_SYS_DRAM_TEST */
-
-/*********************************************************************/
-/* NAME: initdram() -  initializes SDRAM controller                 */
-/*                                                                  */
-/* DESCRIPTION:                                                             */
-/*   Initializes the MPC8260's SDRAM controller.                    */
-/*                                                                  */
-/* INPUTS:                                                          */
-/*   CONFIG_SYS_IMMR       -  MPC8260 Internal memory map                   */
-/*   CONFIG_SYS_SDRAM_BASE -  Physical start address of SDRAM               */
-/*   CONFIG_SYS_PSDMR -       SDRAM mode register                           */
-/*   CONFIG_SYS_MPTPR -       Memory refresh timer prescaler register       */
-/*   CONFIG_SYS_SDRAM0_SIZE - SDRAM size                                    */
-/*                                                                  */
-/* RETURNS:                                                         */
-/*   SDRAM size in bytes                                            */
-/*                                                                  */
-/* RESTRICTIONS/LIMITATIONS:                                        */
-/*                                                                  */
-/*                                                                  */
-/*********************************************************************/
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       volatile uchar c = 0, *ramaddr = (uchar *) (CONFIG_SYS_SDRAM_BASE + 0x8);
-       ulong psdmr = CONFIG_SYS_PSDMR;
-       int i;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++) {
-               *ramaddr = c;
-       }
-       memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *ramaddr = c;
-
-       /* return total ram size */
-       return (CONFIG_SYS_SDRAM0_SIZE * 1024 * 1024);
-}
-
-/*********************************************************************/
-/*                        End of gw8260.c                           */
-/*********************************************************************/
diff --git a/board/hermes/Kconfig b/board/hermes/Kconfig
deleted file mode 100644 (file)
index deb37fd..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_HERMES
-
-config SYS_BOARD
-       default "hermes"
-
-config SYS_CONFIG_NAME
-       default "hermes"
-
-endif
diff --git a/board/hermes/MAINTAINERS b/board/hermes/MAINTAINERS
deleted file mode 100644 (file)
index a596dad..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-HERMES BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/hermes/
-F:     include/configs/hermes.h
-F:     configs/hermes_defconfig
diff --git a/board/hermes/Makefile b/board/hermes/Makefile
deleted file mode 100644 (file)
index ccca520..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = hermes.o flash.o
diff --git a/board/hermes/flash.c b/board/hermes/flash.c
deleted file mode 100644 (file)
index 38d3cd3..0000000
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size, size<<20);
-       }
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size & 0xFFFF8000);
-       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) |
-                               (memctl->memc_br0 & ~(BR_BA_MSK));
-
-       /* Re-do sizing to get full correct info */
-       size = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-       flash_info[0].size = size;
-
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       /* set up sector start address table */
-       if (info->flash_id & FLASH_BTYPE) {
-               /* set sector offsets for bottom boot block type        */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00004000;
-               info->start[2] = base + 0x00006000;
-               info->start[3] = base + 0x00008000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00010000) - 0x00030000;
-               }
-       } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00004000;
-               info->start[i--] = base + info->size - 0x00006000;
-               info->start[i--] = base + info->size - 0x00008000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00010000;
-               }
-       }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("FUJITSU ");            break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM400B:      printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM400T:      printf ("AM29LV400T (4 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM800B:      printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM800T:      printf ("AM29LV800T (8 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM160B:      printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM160T:      printf ("AM29LV160T (16 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM320B:      printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM320T:      printf ("AM29LV320T (32 Mbit, top boot sector)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       short i;
-       uchar value;
-       vu_char *caddr = (vu_char *)addr;
-       ulong base = (ulong)addr;
-
-
-       /* Write auto select command: read Manufacturer ID */
-       caddr[0x0AAA] = 0xAA;
-       caddr[0x0555] = 0x55;
-       caddr[0x0AAA] = 0x90;
-
-       value = caddr[0];
-       switch (value) {
-       case (AMD_MANUFACT & 0xFF):
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case (FUJ_MANUFACT & 0xFF):
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = caddr[2];                       /* device ID            */
-
-       switch (value) {
-       case (AMD_ID_LV400T & 0xFF):
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                          /* => 512 kB            */
-
-       case (AMD_ID_LV400B & 0xFF):
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                          /* => 512 kB            */
-
-       case (AMD_ID_LV800T & 0xFF):
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (AMD_ID_LV800B & 0xFF):
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (AMD_ID_LV160T & 0xFF):
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case (AMD_ID_LV160B & 0xFF):
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-#if 0  /* enable when device IDs are available */
-       case (AMD_ID_LV320T & 0xFF):
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 67;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB              */
-
-       case (AMD_ID_LV320B & 0xFF):
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 67;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB              */
-#endif
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start address table */
-       if (info->flash_id & FLASH_BTYPE) {
-               /* set sector offsets for bottom boot block type        */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00004000;
-               info->start[2] = base + 0x00006000;
-               info->start[3] = base + 0x00008000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00010000) - 0x00030000;
-               }
-       } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00004000;
-               info->start[i--] = base + info->size - 0x00006000;
-               info->start[i--] = base + info->size - 0x00008000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00010000;
-               }
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection: D0 = 1 if protected */
-               caddr = (volatile unsigned char *)(info->start[i]);
-               info->protect[i] = caddr[4] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               caddr = (vu_char *)info->start[0];
-
-               *caddr = 0xF0;  /* reset bank */
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       vu_char *addr = (vu_char*)(info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) ||
-           (info->flash_id > FLASH_AMD_COMP)) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0AAA] = 0xAA;
-       addr[0x0555] = 0x55;
-       addr[0x0AAA] = 0x80;
-       addr[0x0AAA] = 0xAA;
-       addr[0x0555] = 0x55;
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr = (vu_char*)(info->start[sect]);
-                       addr[0] = 0x30;
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last  = start;
-       addr = (vu_char*)(info->start[l_sect]);
-       while ((addr[0] & 0x80) != 0x80) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (vu_char *)info->start[0];
-       addr[0] = 0xF0; /* reset bank */
-
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       int rc;
-
-       while (cnt > 0) {
-               if ((rc = write_byte(info, addr++, *src++)) != 0) {
-                       return (rc);
-               }
-               --cnt;
-       }
-
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte (flash_info_t *info, ulong dest, uchar data)
-{
-       vu_char *addr = (vu_char*)(info->start[0]);
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_char *)dest) & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0AAA] = 0xAA;
-       addr[0x0555] = 0x55;
-       addr[0x0AAA] = 0xA0;
-
-       *((vu_char *)dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       while ((*((vu_char *)dest) & 0x80) != (data & 0x80)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/hermes/hermes.c b/board/hermes/hermes.c
deleted file mode 100644 (file)
index 6126b73..0000000
+++ /dev/null
@@ -1,590 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <commproc.h>
-#include <mpc8xx.h>
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-# include <status_led.h>
-# define SHOW_BOOT_PROGRESS(arg)       bootstage_mark(arg)
-#else
-# define SHOW_BOOT_PROGRESS(arg)
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-static ulong board_init (void);
-static void send_smi_frame (volatile scc_t * sp, volatile cbd_t * bd,
-                                                       uchar * msg);
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
-       0x1ff77c47,                                     /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0x1fe77c35, 0xffaffc34, 0x1fa57c35,     /* last */
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
-       0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x1f07fc04, 0xeeaebc00, 0x10ad4c00, 0xf0afcc00,
-       0xf0afcc00, 0xe1bb8c06, 0x1ff77c47,     /* last */
-       _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-       0xfffffc84, 0xfffffc07,         /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x7ffffc07,                                     /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test ID string (HERMES...)
- *
- * Return code for board revision and network speed
- */
-
-int checkboard (void)
-{
-       char buf[64];
-       int i;
-       int l = getenv_f("serial#", buf, sizeof(buf));
-
-       puts ("Board: ");
-
-       if (l < 0 || strncmp(buf, "HERMES", 6)) {
-               puts ("### No HW ID - assuming HERMES-PRO");
-       } else {
-               for (i = 0; i < l; i++) {
-                       if (buf[i] == ' ')
-                               break;
-                       putc (buf[i]);
-               }
-       }
-
-       gd->board_type = board_init ();
-
-       printf ("  Rev. %ld.x\n", (gd->board_type >> 16));
-
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size, size8, size9;
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                          sizeof (sdram_table) / sizeof (uint));
-
-       /*
-        * Preliminary prescaler for refresh
-        */
-       memctl->memc_mptpr = 0x0400;
-
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller banks 1 to the SDRAM banks at preliminary address
-        */
-       memctl->memc_or1 = CONFIG_SYS_OR1_PRELIM;
-       memctl->memc_br1 = CONFIG_SYS_BR1_PRELIM;
-
-       /* HERMES-PRO boards have only one bank SDRAM */
-
-
-       udelay (200);
-
-       /* perform SDRAM initializsation sequence */
-
-       memctl->memc_mamr = 0xD0802114;
-       memctl->memc_mcr = 0x80002105;
-       udelay (1);
-       memctl->memc_mamr = 0xD0802118;
-       memctl->memc_mcr = 0x80002130;
-       udelay (1);
-       memctl->memc_mamr = 0xD0802114;
-       memctl->memc_mcr = 0x80002106;
-
-       udelay (1000);
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        *
-        * try 8 column mode
-        */
-       size8 = dram_size (CONFIG_SYS_MAMR_8COL, (long *) SDRAM_BASE_PRELIM,
-                                          SDRAM_MAX_SIZE);
-
-       udelay (1000);
-
-       /*
-        * try 9 column mode
-        */
-       size9 = dram_size (CONFIG_SYS_MAMR_9COL, (long *) SDRAM_BASE_PRELIM,
-                                          SDRAM_MAX_SIZE);
-
-       if (size8 < size9) {            /* leave configuration at 9 columns */
-               size = size9;
-/*     debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20);  */
-       } else {                                        /* back to 8 columns            */
-               size = size8;
-               memctl->memc_mamr = CONFIG_SYS_MAMR_8COL;
-               udelay (500);
-/*     debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20);  */
-       }
-
-       udelay (1000);
-
-       memctl->memc_or1 = ((-size) & 0xFFFF0000) | SDRAM_TIMING;
-       memctl->memc_br1 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
-       udelay (10000);
-
-       return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
-                                                  long int maxsize)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       memctl->memc_mamr = mamr_value;
-
-       return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#define        PB_LED_3        0x00020000      /* Status LED's */
-#define PB_LED_2       0x00010000
-#define PB_LED_1       0x00008000
-#define PB_LED_0       0x00004000
-
-#define PB_LED_ALL     (PB_LED_0 | PB_LED_1 | PB_LED_2 | PB_LED_3)
-
-#define        PC_REP_SPD1     0x00000800
-#define PC_REP_SPD0    0x00000400
-
-#define PB_RESET_2081  0x00000020      /* Reset PEB2081 */
-
-#define PB_MAI_4       0x00000010      /* Configuration */
-#define PB_MAI_3       0x00000008
-#define PB_MAI_2       0x00000004
-#define PB_MAI_1       0x00000002
-#define PB_MAI_0       0x00000001
-
-#define PB_MAI_ALL     (PB_MAI_0 | PB_MAI_1 | PB_MAI_2 | PB_MAI_3 | PB_MAI_4)
-
-
-#define        PC_REP_MGRPRS   0x0200
-#define PC_REP_SPD     0x0040          /* Select 100 Mbps */
-#define PC_REP_RES     0x0004
-#define PC_BIT14       0x0002          /* ??? */
-#define PC_BIT15       0x0001          /* ??? ENDSL ?? */
-
-/* ------------------------------------------------------------------------- */
-
-static ulong board_init (void)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       ulong reg, revision, speed = 100;
-       int ethspeed;
-       char *s;
-
-       if ((s = getenv ("ethspeed")) != NULL) {
-               if (strcmp (s, "100") == 0) {
-                       ethspeed = 100;
-               } else if (strcmp (s, "10") == 0) {
-                       ethspeed = 10;
-               } else {
-                       ethspeed = 0;
-               }
-       } else {
-               ethspeed = 0;
-       }
-
-       /* Configure Port B Output Pins => 0x0003cc3F */
-       reg = PB_LED_ALL | PC_REP_SPD1 | PC_REP_SPD0 | PB_RESET_2081 |
-                       PB_MAI_ALL;
-       immr->im_cpm.cp_pbpar &= ~reg;
-       immr->im_cpm.cp_pbodr &= ~reg;
-       immr->im_cpm.cp_pbdat &= ~reg;  /* all 0 */
-       immr->im_cpm.cp_pbdir |= reg;
-
-       /* Check hardware revision */
-       if ((immr->im_ioport.iop_pcdat & 0x0003) == 0x0003) {
-               /*
-                * Revision 3.x hardware
-                */
-               revision = 3;
-
-               immr->im_ioport.iop_pcdat = 0x0240;
-               immr->im_ioport.iop_pcdir = (PC_REP_MGRPRS | PC_REP_SPD | PC_REP_RES | PC_BIT14);       /* = 0x0246 */
-               immr->im_ioport.iop_pcdat |= PC_REP_RES;
-       } else {
-               immr->im_ioport.iop_pcdat = 0x0002;
-               immr->im_ioport.iop_pcdir = (PC_REP_MGRPRS | PC_REP_RES | PC_BIT14 | PC_BIT15); /* = 0x0207 */
-
-               if ((immr->im_ioport.iop_pcdat & PC_REP_SPD) == 0) {
-                       /*
-                        * Revision 2.x hardware: PC9 connected to PB21
-                        */
-                       revision = 2;
-
-                       if (ethspeed == 0) {
-                               /* both 10 and 100 Mbps allowed:
-                                * select 10 Mbps and autonegotiation
-                                */
-                               puts ("  [10+100]");
-                               immr->im_cpm.cp_pbdat = 0;      /* SPD1:SPD0 = 0:0 - autonegot. */
-                               speed = 10;
-                       } else if (ethspeed == 10) {
-                               /* we are asked for 10 Mbps,
-                                * so select 10 Mbps
-                                */
-                               puts ("  [10]");
-                               immr->im_cpm.cp_pbdat = 0;      /* ??? */
-                               speed = 10;
-                       } else {
-                               /* anything else:
-                                * select 100 Mbps
-                                */
-                               puts ("  [100]");
-                               immr->im_cpm.cp_pbdat = PC_REP_SPD0 | PC_REP_SPD1;
-                               /* SPD1:SPD0 = 1:1 - 100 Mbps */
-                               speed = 100;
-                       }
-                       immr->im_ioport.iop_pcdat |= (PC_REP_RES | PC_BIT14);
-
-                       /* must be run from RAM  */
-                       /* start_lxt980 (speed); */
-               /*************************/
-               } else {
-                       /*
-                        * Revision 1.x hardware
-                        */
-                       revision = 1;
-
-                       immr->im_ioport.iop_pcdat = PC_REP_MGRPRS | PC_BIT14;   /* = 0x0202 */
-                       immr->im_ioport.iop_pcdir = (PC_REP_MGRPRS | PC_REP_SPD | PC_REP_RES | PC_BIT14 | PC_BIT15);    /* = 0x0247 */
-
-                       if (ethspeed == 0) {
-                               /* both 10 and 100 Mbps allowed:
-                                * select 100 Mbps and autonegotiation
-                                */
-                               puts ("  [10+100]");
-                               immr->im_cpm.cp_pbdat = 0;      /* SPD1:SPD0 = 0:0 - autonegot. */
-                               immr->im_ioport.iop_pcdat |= PC_REP_SPD;
-                       } else if (ethspeed == 10) {
-                               /* we are asked for 10 Mbps,
-                                  * so select 10 Mbps
-                                */
-                               puts ("  [10]");
-                               immr->im_cpm.cp_pbdat = PC_REP_SPD0;    /* SPD1:SPD0 = 0:1 - 10 Mbps */
-                       } else {
-                               /* anything else:
-                                  * select 100 Mbps
-                                */
-                               puts ("  [100]");
-                               immr->im_cpm.cp_pbdat = PC_REP_SPD0 | PC_REP_SPD1;
-                               /* SPD1:SPD0 = 1:1 - 100 Mbps */
-                               immr->im_ioport.iop_pcdat |= PC_REP_SPD;
-                       }
-
-                       immr->im_ioport.iop_pcdat |= PC_REP_RES;
-               }
-       }
-       SHOW_BOOT_PROGRESS(BOOTSTAGE_ID_CHECK_MAGIC);
-
-       return ((revision << 16) | (speed & 0xFFFF));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#define SCC_SM         1                       /* Index => SCC2 */
-#define        PROFF           PROFF_SCC2
-
-#define SMI_MSGLEN     8                       /* Length of SMI Messages        */
-
-#define PHYGPCR_ADDR   0x109   /* Port Enable               */
-#define PHYPCR_ADDR    0x132           /* PHY Port Control Reg. (port 1)    */
-#define LEDPCR_ADDR    0x141           /* LED Port Control Reg.         */
-#define RPRESET_ADDR   0x144   /* Repeater Reset            */
-
-#define PHYPCR_SPEED   0x2000  /* on for 100 Mbps, off for 10 Mbps  */
-#define PHYPCR_AN      0x1000          /* on to enable  Auto-Negotiation    */
-#define PHYPCR_REST_AN 0x0200  /* on to restart Auto-Negotiation    */
-#define PHYPCR_FDX     0x0100          /* on for Full Duplex, off for HDX   */
-#define PHYPCR_COLT    0x0080          /* on to enable COL signal test      */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Must run from RAM:
- * uses parameter RAM area which is used for stack while running from ROM
- */
-void hermes_start_lxt980 (int speed)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile cpm8xx_t *cp = (cpm8xx_t *) & (immr->im_cpm);
-       volatile scc_t *sp = (scc_t *) & (cp->cp_scc[SCC_SM]);
-       volatile cbd_t *bd;
-       volatile hdlc_pram_t *hp;
-       uchar smimsg[SMI_MSGLEN];
-       ushort phypcrval;
-       uint bd_off;
-       int pnr;
-
-       printf ("LXT9880: %3d Mbps\n", speed);
-
-       immr->im_ioport.iop_paodr |= 0x0008;    /* init PAODR: PA12 (TXD2) open drain */
-       immr->im_ioport.iop_papar |= 0x400c;    /* init PAPAR: TXD2, RXD2, BRGO4 */
-       immr->im_ioport.iop_padir &= 0xbff3;    /* init PADIR: BRGO4 */
-       immr->im_ioport.iop_padir |= 0x4000;
-
-       /* get temporary BD; no need for permanent alloc */
-       bd_off = dpram_base_align (8);
-
-       bd = (cbd_t *) (immr->im_cpm.cp_dpmem + bd_off);
-
-       bd->cbd_bufaddr = 0;
-       bd->cbd_datlen = 0;
-       bd->cbd_sc = BD_SC_WRAP | BD_SC_LAST | BD_SC_INTRPT | BD_SC_TC;
-
-       /* init. baudrate generator BRG4 */
-       cp->cp_brgc4 = (0x00010000 | (50 << 1));        /* output 1 MHz */
-
-       cp->cp_sicr &= 0xFFFF00FF;      /* SICR: mask SCC2 */
-       cp->cp_sicr |= 0x00001B00;      /* SICR: SCC2 clk BRG4 */
-
-       /* init SCC_SM register */
-       sp->scc_psmr = 0x0000;          /* init PSMR: no additional flags */
-       sp->scc_todr = 0x0000;
-       sp->scc_dsr = 0x7e7e;
-
-       /* init. SCC_SM parameter area */
-       hp = (hdlc_pram_t *) & cp->cp_dparam[PROFF];
-
-       hp->tbase = bd_off;                     /* offset from beginning of DPRAM */
-
-       hp->rfcr = 0x18;
-       hp->tfcr = 0x18;
-       hp->mrblr = 10;
-
-       hp->c_mask = 0x0000f0b8;
-       hp->c_pres = 0x0000ffff;
-
-       hp->disfc = 0;
-       hp->crcec = 0;
-       hp->abtsc = 0;
-       hp->nmarc = 0;
-       hp->retrc = 0;
-
-       hp->mflr = 10;
-
-       hp->rfthr = 1;
-
-       hp->hmask = 0;
-       hp->haddr1 = 0;
-       hp->haddr2 = 0;
-       hp->haddr3 = 0;
-       hp->haddr4 = 0;
-
-       cp->cp_cpcr = SCC_SM << 6 | 0x0001;     /* SCC_SM: init TX/RX params */
-       while (cp->cp_cpcr & CPM_CR_FLG);
-
-       /* clear all outstanding SCC events */
-       sp->scc_scce = ~0;
-
-       /* enable transmitter: GSMR_L: TPL=2(16bits), TPP=3(all ones), ENT */
-       sp->scc_gsmrh = 0;
-       sp->scc_gsmrl |= SCC_GSMRL_TPL_16 | SCC_GSMRL_TPP_ALL1 |
-                       SCC_GSMRL_ENT | SCC_GSMRL_MODE_HDLC;
-
-#if 0
-       smimsg[0] = 0x00;                       /* CHIP/HUB ID */
-       smimsg[1] = 0x38;                       /* WRITE CMD */
-       smimsg[2] = (RPRESET_ADDR << 4) & 0xf0;
-       smimsg[3] = RPRESET_ADDR >> 4;
-       smimsg[4] = 0x01;
-       smimsg[5] = 0x00;
-       smimsg[6] = 0x00;
-       smimsg[7] = 0x00;
-
-       send_smi_frame (sp, bd, smimsg);
-#endif
-
-       smimsg[0] = 0x7f;                       /* BROADCAST */
-       smimsg[1] = 0x34;                       /* ASSIGN HUB ID */
-       smimsg[2] = 0x00;
-       smimsg[3] = 0x00;
-       smimsg[4] = 0x00;                       /* HUB ID = 0 */
-       smimsg[5] = 0x00;
-       smimsg[6] = 0x00;
-       smimsg[7] = 0x00;
-
-       send_smi_frame (sp, bd, smimsg);
-
-       smimsg[0] = 0x7f;                       /* BROADCAST */
-       smimsg[1] = 0x3c;                       /* SET ARBOUT TO 0 */
-       smimsg[2] = 0x00;                       /* ADDRESS = 0 */
-       smimsg[3] = 0x00;
-       smimsg[4] = 0x00;                       /* DATA = 0 */
-       smimsg[5] = 0x00;
-       smimsg[6] = 0x00;
-       smimsg[7] = 0x00;
-
-       send_smi_frame (sp, bd, smimsg);
-
-       if (speed == 100) {
-               phypcrval = PHYPCR_SPEED;       /* 100 MBIT, disable autoneg. */
-       } else {
-               phypcrval = 0;                  /* 10 MBIT, disable autoneg. */
-       }
-
-       /* send MSGs */
-       for (pnr = 0; pnr < 8; pnr++) {
-               smimsg[0] = 0x00;               /* CHIP/HUB ID */
-               smimsg[1] = 0x38;               /* WRITE CMD */
-               smimsg[2] = ((PHYPCR_ADDR + pnr) << 4) & 0xf0;
-               smimsg[3] = (PHYPCR_ADDR + pnr) >> 4;
-               smimsg[4] = (unsigned char) (phypcrval & 0xff);
-               smimsg[5] = (unsigned char) (phypcrval >> 8);
-               smimsg[6] = 0x00;
-               smimsg[7] = 0x00;
-
-               send_smi_frame (sp, bd, smimsg);
-       }
-
-       smimsg[0] = 0x00;                       /* CHIP/HUB ID */
-       smimsg[1] = 0x38;                       /* WRITE CMD */
-       smimsg[2] = (PHYGPCR_ADDR << 4) & 0xf0;
-       smimsg[3] = PHYGPCR_ADDR >> 4;
-       smimsg[4] = 0xff;                       /* enable port 1-8 */
-       smimsg[5] = 0x01;                       /* enable MII1 (0x01) */
-       smimsg[6] = 0x00;
-       smimsg[7] = 0x00;
-
-       send_smi_frame (sp, bd, smimsg);
-
-       smimsg[0] = 0x00;                       /* CHIP/HUB ID */
-       smimsg[1] = 0x38;                       /* WRITE CMD */
-       smimsg[2] = (LEDPCR_ADDR << 4) & 0xf0;
-       smimsg[3] = LEDPCR_ADDR >> 4;
-       smimsg[4] = 0xaa;                       /* Port 1-8 Conf.bits = 10 (Hardware control) */
-       smimsg[5] = 0xaa;
-       smimsg[6] = 0x00;
-       smimsg[7] = 0x00;
-
-       send_smi_frame (sp, bd, smimsg);
-
-       /*
-        * Disable Transmitter (so that we can free the BD, too)
-        */
-       sp->scc_gsmrl &= ~SCC_GSMRL_ENT;
-}
-
-/* ------------------------------------------------------------------------- */
-
-static void send_smi_frame (volatile scc_t * sp, volatile cbd_t * bd,
-                                                       uchar * msg)
-{
-#ifdef DEBUG
-       unsigned hub, chip, cmd, length, addr;
-
-       hub = msg[0] & 0x1F;
-       chip = msg[0] >> 5;
-       cmd = msg[1] & 0x1F;
-       length = (msg[1] >> 5) | ((msg[2] & 0x0F) << 3);
-       addr = (msg[2] >> 4) | (msg[3] << 4);
-
-       printf ("SMI send: Hub %02x Chip %x Cmd %02x Len %d Addr %03x: "
-                       "%02x %02x %02x %02x\n",
-                       hub, chip, cmd, length, addr, msg[4], msg[5], msg[6], msg[7]);
-#endif /* DEBUG */
-
-       bd->cbd_bufaddr = (uint) msg;
-       bd->cbd_datlen = SMI_MSGLEN;
-       bd->cbd_sc |= BD_SC_READY;
-
-       /* wait for msg transmitted */
-       while ((sp->scc_scce & 0x0002) == 0);
-       /* clear all events */
-       sp->scc_scce = ~0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-void show_boot_progress (int status)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-
-       /* let things compatible */
-       if (status < -BOOTSTAGE_ID_POST_FAIL_R)
-               status = -1;
-       status ^= 0x0F;
-       status = (status & 0x0F) << 14;
-       immr->im_cpm.cp_pbdat = (immr->im_cpm.cp_pbdat & ~PB_LED_ALL) | status;
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds
deleted file mode 100644 (file)
index 0309860..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-    board/hermes/built-in.o            (.text*)
-
-    . = env_offset;
-    common/env_embedded.o              (.text*)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/hermes/u-boot.lds.debug b/board/hermes/u-boot.lds.debug
deleted file mode 100644 (file)
index f34c07b..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    arch/powerpc/lib/ppcstring.o       (.text)
-    arch/powerpc/cpu/mpc8xx/interrupts.o (.text)
-    arch/powerpc/lib/time.o            (.text)
-    arch/powerpc/lib/ticks.o           (.text)
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index a1b67494f6c526d6659a75f460c050d58f196978..fc2385cf31a527a7225abe142928edbc6aa4939e 100644 (file)
@@ -94,7 +94,7 @@ void dram_init_banksize(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *fdt, bd_t *bd)
+int ft_board_setup(void *fdt, bd_t *bd)
 {
        static const char disabled[] = "disabled";
        u32 reg = readl(HB_SREG_A9_PWRDOM_STAT);
@@ -106,6 +106,8 @@ void ft_board_setup(void *fdt, bd_t *bd)
        if (!(reg & PWRDOM_STAT_EMMC))
                do_fixup_by_compat(fdt, "calxeda,hb-sdhci", "status",
                        disabled, sizeof(disabled), 1);
+
+       return 0;
 }
 #endif
 
index a99416b3aaf211e79ff784be6ce00e08bdcb1824..f0af24ad9bd7d36ab054cdf38ed8fa5907823f94 100644 (file)
@@ -311,10 +311,11 @@ void ide_set_reset (int idereset)
 #endif
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
 
index f742143bb9de1d6b94accd6f1f6758a230ab23fd..e7838dcd2a6e73e3c1af7318e78d72129f6c8c34 100644 (file)
@@ -138,9 +138,11 @@ phys_size_t initdram(int board_type)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
 
index 0fbdfdbf71a3af6a69e1822ec8e70f7929cd71e7..5d2ab2fad3ca0218261c3987d9d09f795accf5bc 100644 (file)
@@ -608,8 +608,10 @@ int checkboard(void)
 }
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
index 6716ffc9d0e09c9c53d3d0c8d12e44c72f90964b..ca09767d287b6b366033c39d5d3d13862ea4405f 100644 (file)
@@ -364,7 +364,7 @@ int update_flash_size(int flash_size)
 }
 #endif /* defined(CONFIG_SYS_UPDATE_FLASH_SIZE) */
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int phy_addr = CONFIG_PHY_ADDR;
        char eth_path[] = "/soc5200@f0000000/mdio@3000/ethernet-phy@0";
@@ -380,5 +380,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #endif
        /* fix up the phy address */
        do_fixup_by_path(blob, eth_path, "reg", &phy_addr, sizeof(int), 0);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
index 401962c4bddf734e9d79d25e4276ab5d0ce98ad2..4c06d0c0d80912eb87df0d7346eefb17c2cdcb26 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_MALTA
 
-config SYS_CPU
-       default "mips32"
-
 config SYS_BOARD
        default "malta"
 
index d363e49919e96454e692658289271b448c29f64f..78c4bd4efe7114767e9c52ef07a42c6fe8c1460c 100644 (file)
@@ -37,7 +37,7 @@ static void malta_lcd_puts(const char *str)
        void *reg = (void *)CKSEG1ADDR(MALTA_ASCIIPOS0);
 
        /* print up to 8 characters of the string */
-       for (i = 0; i < min(strlen(str), 8); i++) {
+       for (i = 0; i < min((int)strlen(str), 8); i++) {
                __raw_writel(str[i], reg);
                reg += MALTA_ASCIIPOS1 - MALTA_ASCIIPOS0;
        }
diff --git a/board/intel/crownbay/Kconfig b/board/intel/crownbay/Kconfig
new file mode 100644 (file)
index 0000000..762663a
--- /dev/null
@@ -0,0 +1,21 @@
+if TARGET_CROWNBAY
+
+config SYS_BOARD
+       default "crownbay"
+
+config SYS_VENDOR
+       default "intel"
+
+config SYS_SOC
+       default "queensbay"
+
+config SYS_CONFIG_NAME
+       default "crownbay"
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+       def_bool y
+       select X86_RESET_VECTOR
+       select INTEL_QUEENSBAY
+       select BOARD_ROMSIZE_KB_1024
+
+endif
diff --git a/board/intel/crownbay/MAINTAINERS b/board/intel/crownbay/MAINTAINERS
new file mode 100644 (file)
index 0000000..1eb6869
--- /dev/null
@@ -0,0 +1,6 @@
+INTEL CROWNBAY BOARD
+M:     Bin Meng <bmeng.cn@gmail.com>
+S:     Maintained
+F:     board/intel/crownbay/
+F:     include/configs/crownbay.h
+F:     configs/crownbay_defconfig
diff --git a/board/intel/crownbay/Makefile b/board/intel/crownbay/Makefile
new file mode 100644 (file)
index 0000000..aeb219b
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += crownbay.o start.o
diff --git a/board/intel/crownbay/crownbay.c b/board/intel/crownbay/crownbay.c
new file mode 100644 (file)
index 0000000..2a254ef
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/ibmpc.h>
+#include <asm/pnp_def.h>
+#include <netdev.h>
+#include <smsc_lpc47m.h>
+
+#define SERIAL_DEV PNP_DEV(0x2e, 4)
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_early_init_f(void)
+{
+       lpc47m_enable_serial(SERIAL_DEV, UART0_BASE);
+
+       return 0;
+}
+
+void setup_pch_gpios(u16 gpiobase, const struct pch_gpio_map *gpio)
+{
+       return;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       return pci_eth_init(bis);
+}
diff --git a/board/intel/crownbay/start.S b/board/intel/crownbay/start.S
new file mode 100644 (file)
index 0000000..cf92b4c
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+.globl early_board_init
+early_board_init:
+       jmp     early_board_init_ret
index 584372521b43b58436fdbb13a80185f25ea97657..4ab71609c0363c760a30a2828505ee902683ad2f 100644 (file)
@@ -454,7 +454,7 @@ int update_flash_size (int flash_size)
 }
 #endif /* defined(CONFIG_SYS_UPDATE_FLASH_SIZE) */
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int phy_addr = CONFIG_PHY_ADDR;
        char eth_path[] = "/soc5200@f0000000/mdio@3000/ethernet-phy@0";
@@ -478,5 +478,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 #endif
        /* fix up the phy address */
        do_fixup_by_path(blob, eth_path, "reg", &phy_addr, sizeof(int), 0);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/ip860/Kconfig b/board/ip860/Kconfig
deleted file mode 100644 (file)
index 955c9db..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_IP860
-
-config SYS_BOARD
-       default "ip860"
-
-config SYS_CONFIG_NAME
-       default "IP860"
-
-endif
diff --git a/board/ip860/MAINTAINERS b/board/ip860/MAINTAINERS
deleted file mode 100644 (file)
index 36d5690..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-IP860 BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/ip860/
-F:     include/configs/IP860.h
-F:     configs/IP860_defconfig
diff --git a/board/ip860/Makefile b/board/ip860/Makefile
deleted file mode 100644 (file)
index 3c60006..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = ip860.o flash.o
diff --git a/board/ip860/flash.c b/board/ip860/flash.c
deleted file mode 100644 (file)
index 542b0c8..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       volatile immap_t        *immap  = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8xx_t    *memctl = &immap->im_memctl;
-       volatile ip860_bcsr_t   *bcsr   = (ip860_bcsr_t *)BCSR_BASE;
-       unsigned long size;
-       int i;
-
-       /* Init: enable write,
-        * or we cannot even write flash commands
-        */
-       bcsr->bd_ctrl |= BD_CTRL_FLWE;
-
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size = flash_get_size((vu_long *)FLASH_BASE, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size, size<<20);
-       }
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or1 = CONFIG_SYS_OR_TIMING_FLASH | (-size & 0xFFFF8000);
-       memctl->memc_br1 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) |
-                               (memctl->memc_br1 & ~(BR_BA_MSK));
-
-       /* Re-do sizing to get full correct info */
-       size = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_info[0].size = size;
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       /* all possible flash types
-        * (28F016SV, 28F160S3, 28F320S3)
-        * have the same erase block size: 64 kB per chip,
-        * of 128 kB per bank
-        */
-
-       /* set up sector start address table */
-       for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = base;
-               base += 0x00020000;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F016SV:    printf ("28F016SV (16 Mbit, 32 x 64k)\n");
-                               break;
-       case FLASH_28F160S3:    printf ("28F160S3 (16 Mbit, 32 x 512K)\n");
-                               break;
-       case FLASH_28F320S3:    printf ("28F320S3 (32 Mbit, 64 x 512K)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       short i;
-       ulong value;
-       ulong base = (ulong)addr;
-
-       /* Write "Intelligent Identifier" command: read Manufacturer ID */
-       *addr = 0x90909090;
-
-       value = addr[0];
-       switch (value) {
-       case (MT_MANUFACT & 0x00FF00FF):        /* MT or => Intel */
-       case (INTEL_ALT_MANU & 0x00FF00FF):
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];                        /* device ID            */
-
-       switch (value) {
-       case (INTEL_ID_28F016S):
-               info->flash_id += FLASH_28F016SV;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               break;                          /* => 2x2 MB            */
-
-       case (INTEL_ID_28F160S3):
-               info->flash_id += FLASH_28F160S3;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               break;                          /* => 2x2 MB            */
-
-       case (INTEL_ID_28F320S3):
-               info->flash_id += FLASH_28F320S3;
-               info->sector_count = 64;
-               info->size = 0x00800000;
-               break;                          /* => 2x4 MB            */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start address table */
-       for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = base + (i * 0x00020000);
-               /* don't know how to check sector protection */
-               info->protect[i] = 0;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (vu_long *)info->start[0];
-
-               *addr = 0xFFFFFF;       /* reset bank to read array mode */
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_long *addr = (vu_long *)(info->start[sect]);
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-                       /* Single Block Erase Command */
-                       *addr = 0x20202020;
-                       /* Confirm */
-                       *addr = 0xD0D0D0D0;
-                       /* Resume Command, as per errata update */
-                       *addr = 0xD0D0D0D0;
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while ((*addr & 0x00800080) != 0x00800080) {
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = 0xFFFFFFFF;     /* reset bank */
-                                       return 1;
-                               }
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       /* reset to read mode */
-                       *addr = 0xFFFFFFFF;
-               }
-       }
-
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_long *addr = (vu_long *)dest;
-       ulong start, csr;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       /* Write Command */
-       *addr = 0x10101010;
-
-       /* Write Data */
-       *addr = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       flag  = 0;
-       while (((csr = *addr) & 0x00800080) != 0x00800080) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       flag = 1;
-                       break;
-               }
-       }
-       if (csr & 0x00400040) {
-printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr);
-               flag = 1;
-       }
-
-       /* Clear Status Registers Command */
-       *addr = 0x50505050;
-       /* Reset to read array mode */
-       *addr = 0xFFFFFFFF;
-
-       return (flag);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/ip860/ip860.c b/board/ip860/ip860.c
deleted file mode 100644 (file)
index 4e3b1b5..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <commproc.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-unsigned long ip860_get_dram_size(void);
-unsigned long ip860_get_clk_freq (void);
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
-       0x1ff77c47,                                     /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0x1ff77c34, 0xefeabc34, 0x1fb57c35,     /* last */
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
-       0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
-       0xf0affc00, 0xe1bbbc04, 0x1ff77c47,     /* last */
-       _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-       0xfffffc84, 0xfffffc07,         /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x7ffffc07,                                     /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-/* ------------------------------------------------------------------------- */
-int board_early_init_f(void)
-{
-    volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-    volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-/* init BCSR chipselect line for ip860_get_clk_freq() and ip860_get_dram_size() */
-    memctl->memc_or4 = CONFIG_SYS_OR4;
-    memctl->memc_br4 = CONFIG_SYS_BR4;
-
-    return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- *
- * Test ID string (IP860...)
- */
-
-int checkboard (void)
-{
-       unsigned char *s, *e;
-       unsigned char buf[64];
-       int i;
-
-       puts ("Board: ");
-
-       i = getenv_f("serial#", (char *)buf, sizeof (buf));
-       s = (i > 0) ? buf : NULL;
-
-       if (!s || strncmp ((char *)s, "IP860", 5)) {
-               puts ("### No HW ID - assuming IP860");
-       } else {
-               for (e = s; *e; ++e) {
-                       if (*e == ' ')
-                               break;
-               }
-
-               for (; s < e; ++s) {
-                       putc (*s);
-               }
-       }
-
-       putc ('\n');
-
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size;
-       ulong refresh_val;
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                          sizeof (sdram_table) / sizeof (uint));
-
-       /*
-        * Preliminary prescaler for refresh
-        */
-       if (ip860_get_clk_freq() == 50000000)
-       {
-               memctl->memc_mptpr = 0x0400;
-               refresh_val = 0xC3000000;
-       }
-       else
-       {
-               memctl->memc_mptpr = 0x0200;
-               refresh_val = 0x9C000000;
-       }
-
-
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller banks 2 to the SDRAM address
-        */
-       memctl->memc_or2 = CONFIG_SYS_OR2;
-       memctl->memc_br2 = CONFIG_SYS_BR2;
-
-       /* IP860 boards have only one bank SDRAM */
-
-
-       udelay (200);
-
-       /* perform SDRAM initializsation sequence */
-
-       memctl->memc_mamr = 0x00804114 | refresh_val;
-       memctl->memc_mcr  = 0x80004105; /* run precharge pattern from loc 5 */
-       udelay(1);
-       memctl->memc_mamr = 0x00804118 | refresh_val;
-       memctl->memc_mcr  = 0x80004130; /* run refresh pattern 8 times */
-
-
-       udelay (1000);
-
-       /*
-        * Check SDRAM Memory Size
-        */
-       if (ip860_get_dram_size() == 16)
-               size = dram_size (refresh_val | 0x00804114, SDRAM_BASE, SDRAM_MAX_SIZE);
-       else
-               size = dram_size (refresh_val | 0x00906114, SDRAM_BASE, SDRAM_MAX_SIZE);
-
-       udelay (1000);
-
-       memctl->memc_or2 = ((-size) & 0xFFFF0000) | SDRAM_TIMING;
-       memctl->memc_br2 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
-       udelay (10000);
-
-       /*
-        * Also, map other memory to correct position
-        */
-
-#if (defined(CONFIG_SYS_OR1) && defined(CONFIG_SYS_BR1_PRELIM))
-       memctl->memc_or1 = CONFIG_SYS_OR1;
-       memctl->memc_br1 = CONFIG_SYS_BR1;
-#endif
-
-#if defined(CONFIG_SYS_OR3) && defined(CONFIG_SYS_BR3)
-       memctl->memc_or3 = CONFIG_SYS_OR3;
-       memctl->memc_br3 = CONFIG_SYS_BR3;
-#endif
-
-#if defined(CONFIG_SYS_OR4) && defined(CONFIG_SYS_BR4)
-       memctl->memc_or4 = CONFIG_SYS_OR4;
-       memctl->memc_br4 = CONFIG_SYS_BR4;
-#endif
-
-#if defined(CONFIG_SYS_OR5) && defined(CONFIG_SYS_BR5)
-       memctl->memc_or5 = CONFIG_SYS_OR5;
-       memctl->memc_br5 = CONFIG_SYS_BR5;
-#endif
-
-#if defined(CONFIG_SYS_OR6) && defined(CONFIG_SYS_BR6)
-       memctl->memc_or6 = CONFIG_SYS_OR6;
-       memctl->memc_br6 = CONFIG_SYS_BR6;
-#endif
-
-#if defined(CONFIG_SYS_OR7) && defined(CONFIG_SYS_BR7)
-       memctl->memc_or7 = CONFIG_SYS_OR7;
-       memctl->memc_br7 = CONFIG_SYS_BR7;
-#endif
-
-       return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
-                                                  long int maxsize)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       memctl->memc_mamr = mamr_value;
-
-       return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy (void)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       ulong mask = PB_ENET_RESET | PB_ENET_JABD;
-       ulong reg;
-
-       /* Make sure PHY is not in low-power mode */
-       immr->im_cpm.cp_pbpar &= ~(mask);       /* GPIO */
-       immr->im_cpm.cp_pbodr &= ~(mask);       /* active output */
-
-       /* Set  JABD low  (no JABber Disable),
-        * and RESET high (Reset PHY)
-        */
-       reg = immr->im_cpm.cp_pbdat;
-       reg = (reg & ~PB_ENET_JABD) | PB_ENET_RESET;
-       immr->im_cpm.cp_pbdat = reg;
-
-       /* now drive outputs */
-       immr->im_cpm.cp_pbdir |= mask;  /* output */
-       udelay (1000);
-       /*
-          * Release RESET signal
-        */
-       immr->im_cpm.cp_pbdat &= ~(PB_ENET_RESET);
-       udelay (1000);
-}
-
-/* ------------------------------------------------------------------------- */
-
-unsigned long ip860_get_clk_freq(void)
-{
-       volatile ip860_bcsr_t   *bcsr   = (ip860_bcsr_t *)BCSR_BASE;
-       ulong temp;
-       uchar sysclk;
-
-       if ((bcsr->bd_status & 0x80) == 0x80)   /* bd_rev valid ? */
-               sysclk = (bcsr->bd_rev & 0x18) >> 3;
-       else
-               sysclk = 0x00;
-
-       switch (sysclk)
-       {
-               case 0x00:
-                       temp = 50000000;
-                       break;
-
-               case 0x01:
-                       temp = 80000000;
-                       break;
-
-               default:
-                       temp = 50000000;
-                       break;
-       }
-
-       return (temp);
-
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-unsigned long ip860_get_dram_size(void)
-{
-       volatile ip860_bcsr_t   *bcsr   = (ip860_bcsr_t *)BCSR_BASE;
-       ulong temp;
-       uchar dram_size;
-
-       if ((bcsr->bd_status & 0x80) == 0x80)   /* bd_rev valid ? */
-               dram_size = (bcsr->bd_rev & 0xE0) >> 5;
-       else
-               dram_size = 0x00;       /* default is 16 MB */
-
-       switch (dram_size)
-       {
-               case 0x00:
-                       temp = 16;
-                       break;
-
-               case 0x01:
-                       temp = 32;
-                       break;
-
-               default:
-                       temp = 16;
-                       break;
-       }
-
-       return (temp);
-
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/ip860/u-boot.lds.debug b/board/ip860/u-boot.lds.debug
deleted file mode 100644 (file)
index e561bb4..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    arch/powerpc/lib/ppcstring.o       (.text)
-    arch/powerpc/cpu/mpc8xx/interrupts.o (.text)
-    arch/powerpc/lib/time.o            (.text)
-    arch/powerpc/lib/ticks.o           (.text)
-/**
-    . = env_offset;
-    common/env_embedded.o(.text)
-**/
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index d44c4bf6695bc9a8b9edd94279d6baff477b1565..2078f537690000eb41833fb885ed7c42fce12844 100644 (file)
@@ -196,10 +196,12 @@ void pci_init_board (void)
 #endif
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup (void *blob, bd_t * bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup (blob, bd);
        fdt_fixup_memory (blob, (u64) bd->bi_memstart, (u64) bd->bi_memsize);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
diff --git a/board/iphase4539/Kconfig b/board/iphase4539/Kconfig
deleted file mode 100644 (file)
index 74594d2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_IPHASE4539
-
-config SYS_BOARD
-       default "iphase4539"
-
-config SYS_CONFIG_NAME
-       default "IPHASE4539"
-
-endif
diff --git a/board/iphase4539/MAINTAINERS b/board/iphase4539/MAINTAINERS
deleted file mode 100644 (file)
index ddf6814..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-IPHASE4539 BOARD
-M:     Wolfgang Grandegger <wg@denx.de>
-S:     Maintained
-F:     board/iphase4539/
-F:     include/configs/IPHASE4539.h
-F:     configs/IPHASE4539_defconfig
diff --git a/board/iphase4539/Makefile b/board/iphase4539/Makefile
deleted file mode 100644 (file)
index 9197b84..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002 Wolfgang Grandegger <wg@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := iphase4539.o flash.o
diff --git a/board/iphase4539/README b/board/iphase4539/README
deleted file mode 100644 (file)
index c5146d9..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-
-This file contains basic information on the port of U-Boot to IPHASE4539
-(Interphase 4539 T1/E1/J1 PMC Communications Controller).
-All the changes fit in the common U-Boot infrastructure, providing a new
-IPHASE4539-specific entry in makefiles. To build U-Boot for IPHASE4539,
-type "make IPHASE4539_config", edit the "include/config_IPHASE4539.h"
-file if necessary, then type "make".
-
-
-Common file modifications:
---------------------------
-
-The following common files have been modified by this project:
-(starting from the ppcboot-1.1.5/ directory)
-
-MAKEALL                                - IPHASE4539 entry added
-Makefile                       - IPHASE4539_config entry added
-
-
-New files:
-----------
-
-The following new files have been added by this project:
-(starting from the ppcboot-1.1.5/ directory)
-
-board/iphase4539/              - board-specific directory
-board/iphase4539/Makefile      - board-specific makefile
-board/iphase4539/config.mk     - config file
-board/iphase4539/flash.c       - flash driver (for AM29LV033C)
-board/iphase4539/ppcboot.lds   - linker script
-board/iphase4539/iphase4539.c  - ioport and memory initialization
-include/config_IPHASE4539.h    - main configuration file
-
-
-New configuration options:
---------------------------
-
-CONFIG_IPHASE4539
-
-       Main board-specific option (should be defined for IPHASE4539).
-
-
-Acceptance criteria tests:
---------------------------
-
-The following tests have been conducted to validate the port of U-Boot
-to IPHASE4539:
-
-1. Operation on serial console:
-
-With SMC1 defined as console in the main configuration file, the U-Boot
-output appeared on the serial terminal connected to the 2.5mm stereo jack
-connector as follows:
-
-------------------------------------------------------------------------------
-=> help
-base    - print or set address offset
-bdinfo  - print Board Info structure
-bootm   - boot application image from memory
-bootp   - boot image via network using BootP/TFTP protocol
-bootd   - boot default, i.e., run 'bootcmd'
-cmp     - memory compare
-coninfo - print console devices and informations
-cp      - memory copy
-crc32   - checksum calculation
-dcache  - enable or disable data cache
-echo    - echo args to console
-erase   - erase FLASH memory
-flinfo  - print FLASH memory information
-go      - start application at address 'addr'
-help    - print online help
-icache  - enable or disable instruction cache
-iminfo  - print header information for application image
-loadb   - load binary file over serial line (kermit mode)
-loads   - load S-Record file over serial line
-loop    - infinite loop on address range
-md      - memory display
-mm      - memory modify (auto-incrementing)
-mtest   - simple RAM test
-mw      - memory write (fill)
-nm      - memory modify (constant address)
-printenv- print environment variables
-protect - enable or disable FLASH write protection
-rarpboot- boot image via network using RARP/TFTP protocol
-reset   - Perform RESET of the CPU
-run     - run commands in an environment variable
-saveenv - save environment variables to persistent storage
-setenv  - set environment variables
-sleep   - delay execution for some time
-source  - run script from memory
-tftpboot- boot image via network using TFTP protocol
-              and env variables ipaddr and serverip
-version - print monitor version
-?       - alias for 'help'
-=>
-------------------------------------------------------------------------------
-
-
-2. Flash driver operation
-
-The following sequence was performed to test the "flinfo" command:
-
-------------------------------------------------------------------------------
-=> flinfo
-
-Bank # 1: AMD AM29LV033C (32 Mbit, uniform sectors)
-  Size: 4 MB in 64 Sectors
-  Sector Start Addresses:
-    FF800000 (RO) FF810000 (RO) FF820000      FF830000      FF840000
-    FF850000      FF860000      FF870000      FF880000      FF890000
-    FF8A0000      FF8B0000      FF8C0000      FF8D0000      FF8E0000
-    FF8F0000      FF900000      FF910000      FF920000      FF930000
-    FF940000      FF950000      FF960000      FF970000      FF980000
-    FF990000      FF9A0000      FF9B0000      FF9C0000      FF9D0000
-    FF9E0000      FF9F0000      FFA00000      FFA10000      FFA20000
-    FFA30000      FFA40000      FFA50000      FFA60000      FFA70000
-    FFA80000      FFA90000      FFAA0000      FFAB0000      FFAC0000
-    FFAD0000      FFAE0000      FFAF0000      FFB00000 (RO) FFB10000 (RO)
-    FFB20000 (RO) FFB30000 (RO) FFB40000      FFB50000      FFB60000
-    FFB70000      FFB80000      FFB90000      FFBA0000      FFBB0000
-    FFBC0000      FFBD0000      FFBE0000      FFBF0000
-------------------------------------------------------------------------------
-
-Note: the Hardware Configuration Word (HWC) of the 8260 is on the
-first sector of the flash and should not be touched. The U-Boot
-environment variables are stored on second sector and U-Boot
-starts at the address 0xFFB00000.
-
-
-The following sequence was performed to test the erase command:
-
-------------------------------------------------------------------------------
-=> cp 0 ff880000 10
-Copy to Flash... done
-=> md ff880000 20
-ff880000: ff000000 60000000 60000000 7c7f1b78    ....`...`...|..x
-ff880010: 7c9e2378 7cbd2b78 7cdc3378 7cfb3b78    |.#x|.+x|.3x|.;x
-ff880020: 3b000000 4811e0f5 48003719 480036a5    ;...H...H.7.H.6.
-ff880030: 480036f9 48003731 48005c5d 7c7a1b78    H.6.H.71H.\]|z.x
-ff880040: ffffffff ffffffff ffffffff ffffffff    ................
-ff880050: ffffffff ffffffff ffffffff ffffffff    ................
-ff880060: ffffffff ffffffff ffffffff ffffffff    ................
-ff880070: ffffffff ffffffff ffffffff ffffffff    ................
-=> erase ff880000 ff88ffff
-Erase Flash from 0xff880000 to 0xff88ffff
-.. done
-Erased 1 sectors
-=> md ff880000
-ff880000: ffffffff ffffffff ffffffff ffffffff    ................
-ff880010: ffffffff ffffffff ffffffff ffffffff    ................
-ff880020: ffffffff ffffffff ffffffff ffffffff    ................
-ff880030: ffffffff ffffffff ffffffff ffffffff    ................
-ff880040: ffffffff ffffffff ffffffff ffffffff    ................
-ff880050: ffffffff ffffffff ffffffff ffffffff    ................
-ff880060: ffffffff ffffffff ffffffff ffffffff    ................
-ff880070: ffffffff ffffffff ffffffff ffffffff    ................
-=> cp 0 ff880000 10
-Copy to Flash... done
-=> md ff880000 20
-ff880000: ff000000 60000000 60000000 7c7f1b78    ....`...`...|..x
-ff880010: 7c9e2378 7cbd2b78 7cdc3378 7cfb3b78    |.#x|.+x|.3x|.;x
-ff880020: 3b000000 4811e0f5 48003719 480036a5    ;...H...H.7.H.6.
-ff880030: 480036f9 48003731 48005c5d 7c7a1b78    H.6.H.71H.\]|z.x
-ff880040: ffffffff ffffffff ffffffff ffffffff    ................
-ff880050: ffffffff ffffffff ffffffff ffffffff    ................
-ff880060: ffffffff ffffffff ffffffff ffffffff    ................
-ff880070: ffffffff ffffffff ffffffff ffffffff    ................
-=> erase 1:8
-Erase Flash Sectors 8-8 in Bank # 1
-.. done
-=> md ff880000 20
-ff880000: ffffffff ffffffff ffffffff ffffffff    ................
-ff880010: ffffffff ffffffff ffffffff ffffffff    ................
-ff880020: ffffffff ffffffff ffffffff ffffffff    ................
-ff880030: ffffffff ffffffff ffffffff ffffffff    ................
-ff880040: ffffffff ffffffff ffffffff ffffffff    ................
-ff880050: ffffffff ffffffff ffffffff ffffffff    ................
-ff880060: ffffffff ffffffff ffffffff ffffffff    ................
-ff880070: ffffffff ffffffff ffffffff ffffffff    ................
-=> cp 0 ff880000 10
-Copy to Flash... done
-=> cp 0 ff890000 10
-=> md ff880000 20
-ff880000: ff000000 60000000 60000000 7c7f1b78    ....`...`...|..x
-ff880010: 7c9e2378 7cbd2b78 7cdc3378 7cfb3b78    |.#x|.+x|.3x|.;x
-ff880020: 3b000000 4811e0f5 48003719 480036a5    ;...H...H.7.H.6.
-ff880030: 480036f9 48003731 48005c5d 7c7a1b78    H.6.H.71H.\]|z.x
-ff880040: ffffffff ffffffff ffffffff ffffffff    ................
-ff880050: ffffffff ffffffff ffffffff ffffffff    ................
-ff880060: ffffffff ffffffff ffffffff ffffffff    ................
-ff880070: ffffffff ffffffff ffffffff ffffffff    ................
-=> md ff890000
-ff890000: ff000000 60000000 60000000 7c7f1b78    ....`...`...|..x
-ff890010: 7c9e2378 7cbd2b78 7cdc3378 7cfb3b78    |.#x|.+x|.3x|.;x
-ff890020: 3b000000 4811e0f5 48003719 480036a5    ;...H...H.7.H.6.
-ff890030: 480036f9 48003731 48005c5d 7c7a1b78    H.6.H.71H.\]|z.x
-ff890040: ffffffff ffffffff ffffffff ffffffff    ................
-ff890050: ffffffff ffffffff ffffffff ffffffff    ................
-ff890060: ffffffff ffffffff ffffffff ffffffff    ................
-ff890070: ffffffff ffffffff ffffffff ffffffff    ................
-=> erase 1:8-9
-Erase Flash Sectors 8-9 in Bank # 1
-.... done
-=> md ff880000 20
-ff880000: ffffffff ffffffff ffffffff ffffffff    ................
-ff880010: ffffffff ffffffff ffffffff ffffffff    ................
-ff880020: ffffffff ffffffff ffffffff ffffffff    ................
-ff880030: ffffffff ffffffff ffffffff ffffffff    ................
-ff880040: ffffffff ffffffff ffffffff ffffffff    ................
-ff880050: ffffffff ffffffff ffffffff ffffffff    ................
-ff880060: ffffffff ffffffff ffffffff ffffffff    ................
-ff880070: ffffffff ffffffff ffffffff ffffffff    ................
-=> md ff890000
-ff890000: ffffffff ffffffff ffffffff ffffffff    ................
-ff890010: ffffffff ffffffff ffffffff ffffffff    ................
-ff890020: ffffffff ffffffff ffffffff ffffffff    ................
-ff890030: ffffffff ffffffff ffffffff ffffffff    ................
-ff890040: ffffffff ffffffff ffffffff ffffffff    ................
-ff890050: ffffffff ffffffff ffffffff ffffffff    ................
-ff890060: ffffffff ffffffff ffffffff ffffffff    ................
-ff890070: ffffffff ffffffff ffffffff ffffffff    ................
-=>
-------------------------------------------------------------------------------
-
-
-The following sequence was performed to test the Flash programming commands:
-
-------------------------------------------------------------------------------
-=> erase ff880000 ff88ffff
-Erase Flash from 0xff880000 to 0xff88ffff
-.. done
-Erased 1 sectors
-=> cp 0 ff880000 10
-Copy to Flash... done
-=> md 0 20
-00000000: ff000000 60000000 60000000 7c7f1b78    ....`...`...|..x
-00000010: 7c9e2378 7cbd2b78 7cdc3378 7cfb3b78    |.#x|.+x|.3x|.;x
-00000020: 3b000000 4811e0f5 48003719 480036a5    ;...H...H.7.H.6.
-00000030: 480036f9 48003731 48005c5d 7c7a1b78    H.6.H.71H.\]|z.x
-00000040: 3c83c000 2c040000 40823378 7c0000a6    <...,...@.3x|...
-00000050: 60000030 7c1b03a6 3c00c000 600035ec    `..0|...<...`.5.
-00000060: 7c1a03a6 4c000064 00000000 00000000    |...L..d........
-00000070: 00000000 00000000 00000000 00000000    ................
-=> md ff880000 20
-ff880000: ff000000 60000000 60000000 7c7f1b78    ....`...`...|..x
-ff880010: 7c9e2378 7cbd2b78 7cdc3378 7cfb3b78    |.#x|.+x|.3x|.;x
-ff880020: 3b000000 4811e0f5 48003719 480036a5    ;...H...H.7.H.6.
-ff880030: 480036f9 48003731 48005c5d 7c7a1b78    H.6.H.71H.\]|z.x
-ff880040: ffffffff ffffffff ffffffff ffffffff    ................
-ff880050: ffffffff ffffffff ffffffff ffffffff    ................
-ff880060: ffffffff ffffffff ffffffff ffffffff    ................
-ff880070: ffffffff ffffffff ffffffff ffffffff    ................
-=>
-------------------------------------------------------------------------------
-
-
-The following sequence was performed to test storage of the environment
-variables in Flash:
-
-------------------------------------------------------------------------------
-=> setenv foo bar
-=> saveenv
-Un-Protected 1 sectors
-Erasing Flash...
-.. done
-Erased 1 sectors
-Saving Environment to Flash...
-Protected 1 sectors
-=> reset
-...
-=> printenv
-...
-foo=bar
-...
-Environment size: 339/65532 bytes
-=>
-------------------------------------------------------------------------------
-
-
-The following sequence was performed to test image download and run over
-Ethernet interface (both interfaces were tested):
-
-------------------------------------------------------------------------------
-=> tftpboot 40000 hello_world.bin
-ARP broadcast 1
-TFTP from server 10.0.0.1; our IP address is 10.0.0.8
-Filename 'hello_world.bin'.
-Load address: 0x40000
-Loading: #############
-done
-Bytes transferred = 65932 (1018c hex)
-=> go 40004
-## Starting application at 0x00040004 ...
-Hello World
-argc = 1
-argv[0] = "40004"
-argv[1] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-=>
-------------------------------------------------------------------------------
-
-
-3. Known Problems
-
-None for the moment.
-
-
-----------------------------------------------------------------------------
-U-Boot and Linux for Interphase 4539 T1/E1/J1 PMC Communications Controller
-----------------------------------------------------------------------------
-
-U-Boot:
-
-       Configure and make U-Boot:
-
-       $ cd <path>/u-boot
-       $ make IPHASE4539_config
-       $ make dep
-       $ make
-       $ cp -p u-boot.bin /tftpboot
-
-       Load u-boot.bin into the Flash memory at 0xffb00000.
-
-
-Linux:
-
-       Configure and make Linux:
-
-       $ cd <patch>/linux-2.4
-       $ make IPHASE4539_config
-       $ make oldconfig
-       $ make dep
-       $ make uImage
-       $ cp -p arch/powerpc/mbxboot/uImage /tftpboot
-
-       Load uImage via tftp and boot it.
-
-
-Flash organisation:
-
-       The following preliminary layout of the Flash memory
-       is defined:
-
-       0xff800000 (   0    -   64 kB): Hardware Configuration Word.
-       0xff810000 (  64 kB -  128 kB): U-Boot Environment.
-       0xff820000 ( 128 kB -    3 MB): RAMdisk.
-       0xffb00000 (   3 MB - 3328 kB): U-Boot.
-       0xffb40000 (3328 KB -    4 MB): Linux Kernel.
-
-
-For further information concerning U-Boot and Linux please consult
-the "DENX U-Boot and Linux Guide".
-
-
-(C) 2002 Wolfgang Grandegger, DENX Software Engineering, wg@denx.de
-===================================================================
diff --git a/board/iphase4539/flash.c b/board/iphase4539/flash.c
deleted file mode 100644 (file)
index 3c2dad6..0000000
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * (C) Copyright 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Adapted for Interphase 4539 by Wolfgang Grandegger <wg@denx.de>.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <flash.h>
-#include <asm/io.h>
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-extern int hwc_flash_size(void);
-static ulong flash_get_size (u32 addr, flash_info_t *info);
-static int flash_get_offsets (u32 base, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_reset (u32 addr);
-
-#define out8(a,v) *(volatile unsigned char*)(a) = v
-#define in8(a)   *(volatile unsigned char*)(a)
-#define in32(a)          *(volatile unsigned long*)(a)
-#define iobarrier_rw() eieio()
-
-unsigned long flash_init (void)
-{
-       unsigned int i;
-       unsigned long flash_size = 0;
-       unsigned long bank_size;
-       unsigned int bank = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-               flash_info[i].sector_count = 0;
-               flash_info[i].size = 0;
-       }
-
-       /* Initialise the BOOT Flash */
-       if (bank == CONFIG_SYS_MAX_FLASH_BANKS) {
-               puts ("Warning: not all Flashes are initialised !");
-               return flash_size;
-       }
-
-       bank_size = flash_get_size (CONFIG_SYS_FLASH_BASE, flash_info + bank);
-       if (bank_size) {
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE && \
-    CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MAX_FLASH_SIZE
-               /* monitor protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_SYS_MONITOR_BASE,
-                             CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                             flash_info + bank);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-               /* ENV protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_ENV_ADDR,
-                             CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1,
-                             flash_info + bank);
-#endif
-
-               /* HWC protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_SYS_FLASH_BASE,
-                             CONFIG_SYS_FLASH_BASE + 0x10000 - 1,
-                             flash_info + bank);
-
-               flash_size += bank_size;
-               bank++;
-       } else {
-               puts ("Warning: the BOOT Flash is not initialised !");
-       }
-
-       return flash_size;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (u32 addr, flash_info_t *info)
-{
-       volatile uchar value;
-#if 0
-       int i;
-#endif
-
-       /* Write auto select command: read Manufacturer ID */
-       out8(addr + 0x0555, 0xAA);
-       iobarrier_rw();
-       udelay(10);
-       out8(addr + 0x02AA, 0x55);
-       iobarrier_rw();
-       udelay(10);
-       out8(addr + 0x0555, 0x90);
-       iobarrier_rw();
-       udelay(10);
-
-       value = in8(addr);
-       iobarrier_rw();
-       udelay(10);
-       switch (value | (value << 16)) {
-       case AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-
-       case FUJ_MANUFACT:
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               flash_reset (addr);
-               return 0;
-       }
-
-       value = in8(addr + 1);                  /* device ID            */
-       iobarrier_rw();
-
-       switch (value) {
-       case AMD_ID_LV033C:
-               info->flash_id += FLASH_AM033C;
-               info->size = hwc_flash_size();
-               if (info->size > CONFIG_SYS_MAX_FLASH_SIZE) {
-                       printf("U-Boot supports only %d MB\n",
-                              CONFIG_SYS_MAX_FLASH_SIZE);
-                       info->size = CONFIG_SYS_MAX_FLASH_SIZE;
-               }
-               info->sector_count = info->size / 0x10000;
-               break;                          /* => 4 MB              */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               flash_reset (addr);
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       if (!flash_get_offsets (addr, info)) {
-               flash_reset (addr);
-               return 0;
-       }
-
-#if 0
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               value = in8(info->start[i] + 2);
-               iobarrier_rw();
-               info->protect[i] = (value & 1) != 0;
-       }
-#endif
-
-       /*
-        * Reset bank to read mode
-        */
-       flash_reset (addr);
-
-       return (info->size);
-}
-
-static int flash_get_offsets (u32 base, flash_info_t *info)
-{
-       unsigned int i, size;
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM033C:
-               /* set sector offsets for uniform sector type   */
-               size = info->size / info->sector_count;
-               for (i = 0; i < info->sector_count; i++) {
-                       info->start[i] = base + i * size;
-               }
-               break;
-       default:
-               return 0;
-       }
-
-       return 1;
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       volatile u32 addr = info->start[0];
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if (s_first < 0 || s_first > s_last) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if (info->flash_id == FLASH_UNKNOWN ||
-           info->flash_id > FLASH_AMD_COMP) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       out8(addr + 0x555, 0xAA);
-       iobarrier_rw();
-       out8(addr + 0x2AA, 0x55);
-       iobarrier_rw();
-       out8(addr + 0x555, 0x80);
-       iobarrier_rw();
-       out8(addr + 0x555, 0xAA);
-       iobarrier_rw();
-       out8(addr + 0x2AA, 0x55);
-       iobarrier_rw();
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr = info->start[sect];
-                       out8(addr, 0x30);
-                       iobarrier_rw();
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last  = start;
-       addr = info->start[l_sect];
-       while ((in8(addr) & 0x80) != 0x80) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       putc ('.');
-                       last = now;
-               }
-               iobarrier_rw();
-       }
-
-DONE:
-       /* reset to read mode */
-       flash_reset (info->start[0]);
-
-       printf (" done\n");
-       return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       volatile u32 addr = info->start[0];
-       ulong start;
-       int flag, i;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((in32(dest) & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       /* first, perform an unlock bypass command to speed up flash writes */
-       out8(addr + 0x555, 0xAA);
-       iobarrier_rw();
-       out8(addr + 0x2AA, 0x55);
-       iobarrier_rw();
-       out8(addr + 0x555, 0x20);
-       iobarrier_rw();
-
-       /* write each byte out */
-       for (i = 0; i < 4; i++) {
-               char *data_ch = (char *)&data;
-               out8(addr, 0xA0);
-               iobarrier_rw();
-               out8(dest+i, data_ch[i]);
-               iobarrier_rw();
-               udelay(10); /* XXX */
-       }
-
-       /* we're done, now do an unlock bypass reset */
-       out8(addr, 0x90);
-       iobarrier_rw();
-       out8(addr, 0x00);
-       iobarrier_rw();
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       while ((in32(dest) & 0x80808080) != (data & 0x80808080)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-               iobarrier_rw();
-       }
-
-       flash_reset (addr);
-
-       return (0);
-}
-
-/*
- * Reset bank to read mode
- */
-static void flash_reset (u32 addr)
-{
-       out8(addr, 0xF0);       /* reset bank */
-       iobarrier_rw();
-}
-
-void flash_print_info (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("FUJITSU ");            break;
-       case FLASH_MAN_BM:      printf ("BRIGHT MICRO ");       break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM033C:      printf ("AM29LV033C (32 Mbit, uniform sectors)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       if (info->size % 0x100000 == 0) {
-               printf ("  Size: %ld MB in %d Sectors\n",
-                       info->size / 0x100000, info->sector_count);
-       }
-       else if (info->size % 0x400 == 0) {
-               printf ("  Size: %ld KB in %d Sectors\n",
-                       info->size / 0x400, info->sector_count);
-       }
-       else {
-               printf ("  Size: %ld B in %d Sectors\n",
-                       info->size, info->sector_count);
-       }
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
diff --git a/board/iphase4539/iphase4539.c b/board/iphase4539/iphase4539.c
deleted file mode 100644 (file)
index d40d2b6..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * (C) Copyright 2002 Wolfgang Grandegger <wg@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/io.h>
-#include <asm/immap_8260.h>
-
-int hwc_flash_size (void);
-int hwc_local_sdram_size (void);
-int hwc_main_sdram_size (void);
-int hwc_serial_number (void);
-int hwc_mac_address (char *str);
-int hwc_manufact_date (char *str);
-int seeprom_read (int addr, uchar * data, int size);
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- *
- * The port definitions are taken from the old firmware (see
- * also SYS/H/4539.H):
- *
- *        ppar      psor        pdir       podr       pdat
- * PA: 0x02ffffff 0x02c00000 0xfc403fe6 0x00000000 0x02403fc0
- * PB: 0x0fffdeb0 0x000000b0 0x0f032347 0x00000000 0x0f000290
- * PC: 0x030ffa55 0x030f0040 0xbcf005ea 0x00000000 0xc0c0ba7d
- * PD: 0x09c04e3c 0x01000e3c 0x0a7ff1c3 0x00000000 0x00ce0ae9
- */
-const iop_conf_t iop_conf_tab[4][32] = {
-
-       /* Port A configuration */
-       {                                                       /* conf ppar psor pdir podr pdat */
-        {0, 1, 0, 0, 0, 0},            /* PA31 FCC1_TXENB  SLAVE */
-        {0, 1, 0, 1, 0, 0},            /* PA30 FCC1_TXCLAV SLAVE */
-        {0, 1, 0, 1, 0, 0},            /* PA29 FCC1_TXSOC */
-        {0, 1, 0, 0, 0, 0},            /* PA28 FCC1_RXENB  SLAVE */
-        {0, 1, 0, 0, 0, 0},            /* PA27 FCC1_RXSOC */
-        {0, 1, 0, 1, 0, 0},            /* PA26 FCC1_RXCLAV SLAVE */
-        {0, 1, 0, 1, 0, 1},            /* PA25 FCC1_TXD0 */
-        {0, 1, 0, 1, 0, 1},            /* PA24 FCC1_TXD1 */
-        {0, 1, 0, 1, 0, 1},            /* PA23 FCC1_TXD2 */
-        {0, 1, 0, 1, 0, 1},            /* PA22 FCC1_TXD3 */
-        {0, 1, 0, 1, 0, 1},            /* PA21 FCC1_TXD4 */
-        {0, 1, 0, 1, 0, 1},            /* PA20 FCC1_TXD5 */
-        {0, 1, 0, 1, 0, 1},            /* PA19 FCC1_TXD6 */
-        {0, 1, 0, 1, 0, 1},            /* PA18 FCC1_TXD7 */
-        {0, 1, 0, 0, 0, 0},            /* PA17 FCC1_RXD7 */
-        {0, 1, 0, 0, 0, 0},            /* PA16 FCC1_RXD6 */
-        {0, 1, 0, 0, 0, 0},            /* PA15 FCC1_RXD5 */
-        {0, 1, 0, 0, 0, 0},            /* PA14 FCC1_RXD4 */
-        {0, 1, 0, 0, 0, 0},            /* PA13 FCC1_RXD3 */
-        {0, 1, 0, 0, 0, 0},            /* PA12 FCC1_RXD2 */
-        {0, 1, 0, 0, 0, 0},            /* PA11 FCC1_RXD1 */
-        {0, 1, 0, 0, 0, 0},            /* PA10 FCC1_RXD0 */
-        {0, 1, 1, 1, 0, 1},            /* PA9  TDMA1_L1TXD */
-        {0, 1, 1, 0, 0, 0},            /* PA8  TDMA1_L1RXD */
-        {0, 0, 0, 0, 0, 0},            /* PA7  CONFIG0 */
-        {0, 1, 1, 0, 0, 1},            /* PA6  TDMA1_L1RSYNC */
-        {0, 0, 0, 1, 0, 0},            /* PA5  FCC2:RxAddr[2] */
-        {0, 0, 0, 1, 0, 0},            /* PA4  FCC2:RxAddr[1] */
-        {0, 0, 0, 1, 0, 0},            /* PA3  FCC2:RxAddr[0] */
-        {0, 0, 0, 1, 0, 0},            /* PA2  FCC2:TxAddr[0] */
-        {0, 0, 0, 1, 0, 0},            /* PA1  FCC2:TxAddr[1] */
-        {0, 0, 0, 1, 0, 0}                     /* PA0  FCC2:TxAddr[2] */
-        },
-       /* Port B configuration */
-       {                                                       /* conf ppar psor pdir podr pdat */
-        {0, 0, 0, 1, 0, 0},            /* PB31 FCC2_RXSOC */
-        {0, 0, 0, 1, 0, 0},            /* PB30 FCC2_TXSOC */
-        {0, 0, 0, 1, 0, 0},            /* PB29 FCC2_RXCLAV */
-        {0, 0, 0, 0, 0, 0},            /* PB28 CONFIG2 */
-        {0, 1, 1, 0, 0, 1},            /* PB27 FCC2_TXD0 */
-        {0, 1, 1, 0, 0, 0},            /* PB26 FCC2_TXD1 */
-        {0, 0, 0, 1, 0, 0},            /* PB25 FCC2_TXD4 */
-        {0, 1, 1, 0, 0, 1},            /* PB24 FCC2_TXD5 */
-        {0, 0, 0, 1, 0, 0},            /* PB23 FCC2_TXD6 */
-        {0, 1, 0, 1, 0, 1},            /* PB22 FCC2_TXD7 */
-        {0, 1, 0, 0, 0, 0},            /* PB21 FCC2_RXD7 */
-        {0, 1, 0, 0, 0, 0},            /* PB20 FCC2_RXD6 */
-        {0, 1, 0, 0, 0, 0},            /* PB19 FCC2_RXD5 */
-        {0, 0, 0, 1, 0, 0},            /* PB18 FCC2_RXD4 */
-        {1, 1, 0, 0, 0, 0},            /* PB17 FCC3_RX_DV */
-        {1, 1, 0, 0, 0, 0},            /* PB16 FCC3_RX_ER */
-        {1, 1, 0, 1, 0, 0},            /* PB15 FCC3_TX_ER */
-        {1, 1, 0, 1, 0, 0},            /* PB14 FCC3_TX_EN */
-        {1, 1, 0, 0, 0, 0},            /* PB13 FCC3_COL */
-        {1, 1, 0, 0, 0, 0},            /* PB12 FCC3_CRS */
-        {1, 1, 0, 0, 0, 0},            /* PB11 FCC3_RXD3 */
-        {1, 1, 0, 0, 0, 0},            /* PB10 FCC3_RXD2 */
-        {1, 1, 0, 0, 0, 0},            /* PB9  FCC3_RXD1 */
-        {1, 1, 0, 0, 0, 0},            /* PB8  FCC3_RXD0 */
-        {1, 1, 0, 1, 0, 1},            /* PB7  FCC3_TXD0 */
-        {1, 1, 0, 1, 0, 1},            /* PB6  FCC3_TXD1 */
-        {1, 1, 0, 1, 0, 1},            /* PB5  FCC3_TXD2 */
-        {1, 1, 0, 1, 0, 1},            /* PB4  FCC3_TXD3 */
-        {0, 0, 0, 0, 0, 0},            /* PB3  */
-        {0, 0, 0, 0, 0, 0},            /* PB2  */
-        {0, 0, 0, 0, 0, 0},            /* PB1  */
-        {0, 0, 0, 0, 0, 0},            /* PB0  */
-        },
-       /* Port C configuration */
-       {                                                       /* conf ppar psor pdir podr pdat */
-        {0, 1, 0, 0, 0, 1},            /* PC31 CLK1 */
-        {0, 0, 0, 1, 0, 0},            /* PC30 U1MASTER_N */
-        {0, 1, 0, 0, 0, 1},            /* PC29 CLK3 */
-        {0, 0, 0, 1, 0, 1},            /* PC28 -MT90220_RST */
-        {0, 1, 0, 0, 0, 1},            /* PC27 CLK5 */
-        {0, 0, 0, 1, 0, 1},            /* PC26 -QUADFALC_RST */
-        {0, 1, 1, 1, 0, 1},            /* PC25 BRG4 */
-        {1, 0, 0, 1, 0, 0},            /* PC24 MDIO */
-        {1, 0, 0, 1, 0, 0},            /* PC23 MDC */
-        {0, 1, 0, 0, 0, 1},            /* PC22 CLK10 */
-        {0, 0, 0, 1, 0, 0},            /* PC21  */
-        {0, 1, 0, 0, 0, 1},            /* PC20 CLK12 */
-        {0, 1, 0, 0, 0, 1},            /* PC19 CLK13 */
-        {1, 1, 0, 0, 0, 1},            /* PC18 CLK14 */
-        {0, 1, 0, 0, 0, 0},            /* PC17 CLK15 */
-        {1, 1, 0, 0, 0, 1},            /* PC16 CLK16 */
-        {0, 1, 1, 0, 0, 0},            /* PC15 FCC1_TXADDR0 SLAVE */
-        {0, 1, 1, 0, 0, 0},            /* PC14 FCC1_RXADDR0 SLAVE */
-        {0, 1, 1, 0, 0, 0},            /* PC13 FCC1_TXADDR1 SLAVE */
-        {0, 1, 1, 0, 0, 0},            /* PC12 FCC1_RXADDR1 SLAVE */
-        {0, 0, 0, 1, 0, 0},            /* PC11 FCC2_RXD2 */
-        {0, 0, 0, 1, 0, 0},            /* PC10 FCC2_RXD3 */
-        {0, 0, 0, 1, 0, 1},            /* PC9  LTMODE */
-        {0, 0, 0, 1, 0, 1},            /* PC8  SELSYNC */
-        {0, 1, 1, 0, 0, 0},            /* PC7  FCC1_TXADDR2 SLAVE  */
-        {0, 1, 1, 0, 0, 0},            /* PC6  FCC1_RXADDR2 SLAVE */
-        {0, 0, 0, 1, 0, 0},            /* PC5  FCC2_TXCLAV MASTER */
-        {0, 0, 0, 1, 0, 0},            /* PC4  FCC2_RXENB MASTER */
-        {0, 0, 0, 1, 0, 0},            /* PC3  FCC2_TXD2 */
-        {0, 0, 0, 1, 0, 0},            /* PC2  FCC2_TXD3 */
-        {0, 0, 0, 0, 0, 1},            /* PC1  PTMC -PTEENB */
-        {0, 0, 0, 1, 0, 1},            /* PC0  COMCLK_N */
-        },
-       /* Port D configuration */
-       {                                                       /* conf ppar psor pdir podr pdat */
-        {0, 0, 0, 1, 0, 1},            /* PD31 -CAM_RST */
-        {0, 0, 0, 1, 0, 0},            /* PD30 FCC2_TXENB */
-        {0, 1, 1, 0, 0, 0},            /* PD29 FCC1_RXADDR3 SLAVE */
-        {0, 1, 1, 0, 0, 1},            /* PD28 TDMC1_L1TXD */
-        {0, 1, 1, 0, 0, 0},            /* PD27 TDMC1_L1RXD */
-        {0, 1, 1, 0, 0, 1},            /* PD26 TDMC1_L1RSYNC */
-        {0, 0, 0, 1, 0, 1},            /* PD25 LED0 -OFF */
-        {0, 0, 0, 1, 0, 1},            /* PD24 LED5 -OFF */
-        {1, 0, 0, 1, 0, 1},            /* PD23 -LXT971_RST */
-        {0, 1, 1, 0, 0, 1},            /* PD22 TDMA2_L1TXD */
-        {0, 1, 1, 0, 0, 0},            /* PD21 TDMA2_L1RXD */
-        {0, 1, 1, 0, 0, 1},            /* PD20 TDMA2_L1RSYNC */
-        {0, 0, 0, 1, 0, 0},            /* PD19 FCC2_TXADDR3 */
-        {0, 0, 0, 1, 0, 0},            /* PD18 FCC2_RXADDR3 */
-        {0, 1, 0, 1, 0, 0},            /* PD17 BRG2 */
-        {0, 0, 0, 1, 0, 0},            /* PD16  */
-        {0, 0, 0, 1, 0, 0},            /* PD15 PT2TO1 */
-        {0, 0, 0, 1, 0, 1},            /* PD14 PT4TO3 */
-        {0, 0, 0, 1, 0, 1},            /* PD13 -SWMODE */
-        {0, 0, 0, 1, 0, 1},            /* PD12 -PTMODE */
-        {0, 0, 0, 1, 0, 0},            /* PD11 FCC2_RXD0 */
-        {0, 0, 0, 1, 0, 0},            /* PD10 FCC2_RXD1 */
-        {1, 1, 0, 1, 0, 1},            /* PD9  SMC1_SMTXD */
-        {1, 1, 0, 0, 0, 1},            /* PD8  SMC1_SMRXD */
-        {0, 1, 1, 0, 0, 0},            /* PD7  FCC1_TXADDR3 SLAVE */
-        {0, 0, 0, 1, 0, 0},            /* PD6  IMAMODE */
-        {0, 0, 0, 0, 0, 0},            /* PD5  CONFIG2 */
-        {0, 1, 0, 1, 0, 0},            /* PD4  BRG8 */
-        {0, 0, 0, 0, 0, 0},            /* PD3  */
-        {0, 0, 0, 0, 0, 0},            /* PD2  */
-        {0, 0, 0, 0, 0, 0},            /* PD1  */
-        {0, 0, 0, 0, 0, 0},            /* PD0  */
-        }
-};
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       volatile uchar *base;
-       ulong maxsize;
-       int i;
-
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       immap->im_siu_conf.sc_ppc_acr = 0x00000026;
-       immap->im_siu_conf.sc_ppc_alrh = 0x01276345;
-       immap->im_siu_conf.sc_ppc_alrl = 0x89ABCDEF;
-       immap->im_siu_conf.sc_lcl_acr = 0x00000000;
-       immap->im_siu_conf.sc_lcl_alrh = 0x01234567;
-       immap->im_siu_conf.sc_lcl_alrl = 0x89ABCDEF;
-       immap->im_siu_conf.sc_tescr1 = 0x00004000;
-       immap->im_siu_conf.sc_ltescr1 = 0x00004000;
-
-       /* Init Main SDRAM */
-#define OP_VALUE   0x404A241A
-#define OP_VALUE_M (OP_VALUE & 0x87FFFFFF);
-       base = (uchar *) CONFIG_SYS_SDRAM_BASE;
-       memctl->memc_psdmr = 0x28000000 | OP_VALUE_M;
-       *base = 0xFF;
-       memctl->memc_psdmr = 0x08000000 | OP_VALUE_M;
-       for (i = 0; i < 8; i++)
-               *base = 0xFF;
-       memctl->memc_psdmr = 0x18000000 | OP_VALUE_M;
-       *(base + 0x110) = 0xFF;
-       memctl->memc_psdmr = OP_VALUE;
-       memctl->memc_lsdmr = 0x4086A522;
-       *base = 0xFF;
-
-       /* We must be able to test a location outsize the maximum legal size
-        * to find out THAT we are outside; but this address still has to be
-        * mapped by the controller. That means, that the initial mapping has
-        * to be (at least) twice as large as the maximum expected size.
-        */
-       maxsize = (1 + (~memctl->memc_or1 | 0x7fff)) / 2;
-
-       maxsize = get_ram_size((long *)base, maxsize);
-
-       memctl->memc_or1 |= ~(maxsize - 1);
-
-       if (maxsize != hwc_main_sdram_size ())
-               printf ("Oops: memory test has not found all memory!\n");
-#endif
-
-       icache_enable ();
-       /* return total ram size of SDRAM */
-       return (maxsize);
-}
-
-int checkboard (void)
-{
-       char string[32];
-
-       hwc_manufact_date (string);
-
-       printf ("Board: Interphase 4539 (#%d %s)\n",
-               hwc_serial_number (),
-               string);
-
-#ifdef DEBUG
-       printf ("Manufacturing date: %s\n", string);
-       printf ("Serial number     : %d\n", hwc_serial_number ());
-       printf ("FLASH size        : %d MB\n", hwc_flash_size () >> 20);
-       printf ("Main SDRAM size   : %d MB\n", hwc_main_sdram_size () >> 20);
-       printf ("Local SDRAM size  : %d MB\n", hwc_local_sdram_size () >> 20);
-       hwc_mac_address (string);
-       printf ("MAC address       : %s\n", string);
-#endif
-
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       char *s, str[32];
-       int num;
-
-       if ((s = getenv ("serial#")) == NULL &&
-               (num = hwc_serial_number ()) != -1) {
-               sprintf (str, "%06d", num);
-               setenv ("serial#", str);
-       }
-       if ((s = getenv ("ethaddr")) == NULL && hwc_mac_address (str) == 0) {
-               setenv ("ethaddr", str);
-       }
-       return (0);
-}
-
-/***************************************************************
- * We take some basic Hardware Configuration Parameter from the
- * Serial EEPROM conected to the PSpan bridge. We keep it as
- * simple as possible.
- */
-int hwc_flash_size (void)
-{
-       uchar byte;
-
-       if (!seeprom_read (0x40, &byte, sizeof (byte))) {
-               switch ((byte >> 2) & 0x3) {
-               case 0x1:
-                       return 0x0400000;
-                       break;
-               case 0x2:
-                       return 0x0800000;
-                       break;
-               case 0x3:
-                       return 0x1000000;
-               default:
-                       return 0x0100000;
-               }
-       }
-       return -1;
-}
-int hwc_local_sdram_size (void)
-{
-       uchar byte;
-
-       if (!seeprom_read (0x40, &byte, sizeof (byte))) {
-               switch ((byte & 0x03)) {
-               case 0x1:
-                       return 0x0800000;
-               case 0x2:
-                       return 0x1000000;
-               default:
-                       return 0;                       /* not present */
-               }
-       }
-       return -1;
-}
-int hwc_main_sdram_size (void)
-{
-       uchar byte;
-
-       if (!seeprom_read (0x41, &byte, sizeof (byte))) {
-               return 0x1000000 << ((byte >> 5) & 0x7);
-       }
-       return -1;
-}
-int hwc_serial_number (void)
-{
-       int sn = -1;
-
-       if (!seeprom_read (0xa0, (uchar *) &sn, sizeof (sn))) {
-               sn = cpu_to_le32 (sn);
-       }
-       return sn;
-}
-int hwc_mac_address (char *str)
-{
-       char mac[6];
-
-       if (!seeprom_read (0xb0, (uchar *)mac, sizeof (mac))) {
-               sprintf (str, "%02x:%02x:%02x:%02x:%02x:%02x\n",
-                                mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
-       } else {
-               strcpy (str, "ERROR");
-               return -1;
-       }
-       return 0;
-}
-int hwc_manufact_date (char *str)
-{
-       uchar byte;
-       int value;
-
-       if (seeprom_read (0x92, &byte, sizeof (byte)))
-               goto out;
-       value = byte;
-       if (seeprom_read (0x93, &byte, sizeof (byte)))
-               goto out;
-       value += byte << 8;
-       sprintf (str, "%02d/%02d/%04d",
-                        value & 0x1F, (value >> 5) & 0xF,
-                        1980 + ((value >> 9) & 0x1FF));
-       return 0;
-
-  out:
-       strcpy (str, "ERROR");
-       return -1;
-}
-
-#define PSPAN_ADDR      0xF0020000
-#define EEPROM_REG      0x408
-#define EEPROM_READ_CMD 0xA000
-#define PSPAN_WRITE(a,v) \
-    *((volatile unsigned long *)(PSPAN_ADDR+(a))) = v; eieio()
-#define PSPAN_READ(a) \
-    *((volatile unsigned long *)(PSPAN_ADDR+(a)))
-
-int seeprom_read (int addr, uchar * data, int size)
-{
-       ulong val, cmd;
-       int i;
-
-       for (i = 0; i < size; i++) {
-
-               cmd = EEPROM_READ_CMD;
-               cmd |= ((addr + i) << 24) & 0xff000000;
-
-               /* Wait for ACT to authorize write */
-               while ((val = PSPAN_READ (EEPROM_REG)) & 0x80)
-                       eieio ();
-
-               /* Write command */
-               PSPAN_WRITE (EEPROM_REG, cmd);
-
-               /* Wait for data to be valid */
-               while ((val = PSPAN_READ (EEPROM_REG)) & 0x80)
-                       eieio ();
-               /* Do it twice, first read might be erratic */
-               while ((val = PSPAN_READ (EEPROM_REG)) & 0x80)
-                       eieio ();
-
-               /* Read error */
-               if (val & 0x00000040) {
-                       return -1;
-               } else {
-                       data[i] = (val >> 16) & 0xff;
-               }
-       }
-       return 0;
-}
index 7b87cc27c41b4e517753342202f240e7ff5668b4..47522f8013e219f66b0d5e2021b24cd6cf656d43 100644 (file)
@@ -150,6 +150,13 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
+
 void set_fdt(void)
 {
        switch (gd->bd->bi_arch_number) {
diff --git a/board/ivm/Kconfig b/board/ivm/Kconfig
deleted file mode 100644 (file)
index 6ff3025..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-if TARGET_IVML24
-
-config SYS_BOARD
-       default "ivm"
-
-config SYS_CONFIG_NAME
-       default "IVML24"
-
-endif
-
-if TARGET_IVMS8
-
-config SYS_BOARD
-       default "ivm"
-
-config SYS_CONFIG_NAME
-       default "IVMS8"
-
-endif
diff --git a/board/ivm/MAINTAINERS b/board/ivm/MAINTAINERS
deleted file mode 100644 (file)
index 6a9082c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-IVM BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/ivm/
-F:     include/configs/IVML24.h
-F:     configs/IVML24_defconfig
-F:     configs/IVML24_128_defconfig
-F:     configs/IVML24_256_defconfig
-F:     include/configs/IVMS8.h
-F:     configs/IVMS8_defconfig
-F:     configs/IVMS8_128_defconfig
-F:     configs/IVMS8_256_defconfig
diff --git a/board/ivm/Makefile b/board/ivm/Makefile
deleted file mode 100644 (file)
index e53a276..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = ivm.o flash.o
diff --git a/board/ivm/flash.c b/board/ivm/flash.c
deleted file mode 100644 (file)
index 14d3aee..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size_b0;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0: "
-                       "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
-                       flash_info[0].flash_id,
-                       size_b0, size_b0<<20);
-       }
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
-       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | \
-                               BR_MS_GPCM | BR_PS_16 | BR_V;
-
-       /* Re-do sizing to get full correct info */
-       size_b0 = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_MT:
-           if (info->flash_id & FLASH_BTYPE) {
-               /* set sector offsets for bottom boot block type        */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00004000;
-               info->start[2] = base + 0x00006000;
-               info->start[3] = base + 0x00008000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + ((i-3) * 0x00020000);
-               }
-           } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00004000;
-               info->start[i--] = base + info->size - 0x00006000;
-               info->start[i--] = base + info->size - 0x00008000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00020000;
-               }
-           }
-           return;
-
-       case FLASH_MAN_SST:
-           for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = base + (i * 0x00002000);
-           }
-           return;
-
-       case FLASH_MAN_AMD:
-       case FLASH_MAN_FUJ:
-
-           /* set up sector start address table */
-           if (info->flash_id & FLASH_BTYPE) {
-               /* set sector offsets for bottom boot block type        */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00008000;
-               info->start[2] = base + 0x0000C000;
-               info->start[3] = base + 0x00010000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00020000) - 0x00060000;
-               }
-           } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00008000;
-               info->start[i--] = base + info->size - 0x0000C000;
-               info->start[i--] = base + info->size - 0x00010000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00020000;
-               }
-           }
-           return;
-       default:
-           printf ("Don't know sector ofsets for flash type 0x%lx\n",
-               info->flash_id);
-           return;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("Fujitsu ");            break;
-       case FLASH_MAN_SST:     printf ("SST ");                break;
-       case FLASH_MAN_STM:     printf ("STM ");                break;
-       case FLASH_MAN_MT:      printf ("MT ");                 break;
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM400B:      printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM400T:      printf ("AM29LV400T (4 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM800B:      printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM800T:      printf ("AM29LV800T (8 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM160B:      printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM160T:      printf ("AM29LV160T (16 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM320B:      printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM320T:      printf ("AM29LV320T (32 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_SST200A:     printf ("39xF200A (2M = 128K x 16)\n");
-                               break;
-       case FLASH_SST400A:     printf ("39xF400A (4M = 256K x 16)\n");
-                               break;
-       case FLASH_SST800A:     printf ("39xF800A (8M = 512K x 16)\n");
-                               break;
-       case FLASH_STM800AB:    printf ("M29W800AB (8M = 512K x 16)\n");
-                               break;
-       case FLASH_28F008S5:    printf ("28F008S5 (1M = 64K x 16)\n");
-                               break;
-       case FLASH_28F400_T:    printf ("28F400B3 (4Mbit, top boot sector)\n");
-                               break;
-       case FLASH_28F400_B:    printf ("28F400B3 (4Mbit, bottom boot sector)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       if (info->size >= (1 << 20)) {
-               i = 20;
-       } else {
-               i = 10;
-       }
-       printf ("  Size: %ld %cB in %d Sectors\n",
-               info->size >> i,
-               (i == 20) ? 'M' : 'k',
-               info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       ushort value;
-       vu_short *saddr = (vu_short *)addr;
-
-       /* Read Manufacturer ID */
-       saddr[0] = 0x0090;
-       value = saddr[0];
-
-       switch (value) {
-       case (AMD_MANUFACT & 0xFFFF):
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case (FUJ_MANUFACT & 0xFFFF):
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case (SST_MANUFACT & 0xFFFF):
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case (STM_MANUFACT & 0xFFFF):
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case (MT_MANUFACT & 0xFFFF):
-               info->flash_id = FLASH_MAN_MT;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               saddr[0] = 0x00FF;              /* restore read mode */
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = saddr[1];                       /* device ID            */
-
-       switch (value) {
-       case (AMD_ID_LV400T & 0xFFFF):
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (AMD_ID_LV400B & 0xFFFF):
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (AMD_ID_LV800T & 0xFFFF):
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case (AMD_ID_LV800B & 0xFFFF):
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case (AMD_ID_LV160T & 0xFFFF):
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB              */
-
-       case (AMD_ID_LV160B & 0xFFFF):
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB              */
-#if 0  /* enable when device IDs are available */
-       case (AMD_ID_LV320T & 0xFFFF):
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 67;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-
-       case (AMD_ID_LV320B & 0xFFFF):
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 67;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-#endif
-       case (SST_ID_xF200A & 0xFFFF):
-               info->flash_id += FLASH_SST200A;
-               info->sector_count = 64;        /* 39xF200A ID ( 2M = 128K x 16 ) */
-               info->size = 0x00080000;
-               break;
-       case (SST_ID_xF400A & 0xFFFF):
-               info->flash_id += FLASH_SST400A;
-               info->sector_count = 128;       /* 39xF400A ID ( 4M = 256K x 16 ) */
-               info->size = 0x00100000;
-               break;
-       case (SST_ID_xF800A & 0xFFFF):
-               info->flash_id += FLASH_SST800A;
-               info->sector_count = 256;       /* 39xF800A ID ( 8M = 512K x 16 ) */
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-       case (STM_ID_x800AB & 0xFFFF):
-               info->flash_id += FLASH_STM800AB;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-       case (MT_ID_28F400_T & 0xFFFF):
-               info->flash_id += FLASH_28F400_T;
-               info->sector_count = 7;
-               info->size = 0x00080000;
-               break;                          /* => 512 kB            */
-       case (MT_ID_28F400_B & 0xFFFF):
-               info->flash_id += FLASH_28F400_B;
-               info->sector_count = 7;
-               info->size = 0x00080000;
-               break;                          /* => 512 kB            */
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               saddr[0] = 0x00FF;              /* restore read mode */
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
-               printf ("** ERROR: sector count %d > max (%d) **\n",
-                       info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
-               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       }
-
-       saddr[0] = 0x00FF;              /* restore read mode */
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_MT) {
-               printf ("Can erase only MT flash types - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_short *addr = (vu_short *)(info->start[sect]);
-                       unsigned short status;
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-                       *addr = 0x0050; /* clear status register */
-                       *addr = 0x0020; /* erase setup */
-                       *addr = 0x00D0; /* erase confirm */
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((status = *addr) & 0x0080) != 0x0080) {
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = 0x00FF; /* reset to read mode */
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       *addr = 0x00FF; /* reset to read mode */
-               }
-       }
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define        FLASH_WIDTH     2       /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-
-       wp = (addr & ~(FLASH_WIDTH-1)); /* get lower FLASH_WIDTH aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<FLASH_WIDTH && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<FLASH_WIDTH; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_data(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += FLASH_WIDTH;
-       }
-
-       /*
-        * handle FLASH_WIDTH aligned part
-        */
-       while (cnt >= FLASH_WIDTH) {
-               data = 0;
-               for (i=0; i<FLASH_WIDTH; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_data(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += FLASH_WIDTH;
-               cnt -= FLASH_WIDTH;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<FLASH_WIDTH && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<FLASH_WIDTH; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_data(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_short *addr = (vu_short *)dest;
-       ushort sdata = (ushort)data;
-       ushort status;
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & sdata) != sdata) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       *addr = 0x0040;         /* write setup */
-       *addr = sdata;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       start = get_timer (0);
-
-       while (((status = *addr) & 0x0080) != 0x0080) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *addr = 0x00FF; /* restore read mode */
-                       return (1);
-               }
-       }
-
-       *addr = 0x00FF;         /* restore read mode */
-
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/ivm/ivm.c b/board/ivm/ivm.c
deleted file mode 100644 (file)
index 3bdbdd1..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Ulrich Lutz, Speech Design GmbH, ulutz@datalab.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-
-#ifdef CONFIG_STATUS_LED
-# include <status_led.h>
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-/*
- * 50 MHz SHARC access using UPM A
- */
-const uint sharc_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPM RAM)
-        */
-       0x0FF3FC04, 0x0FF3EC00, 0x7FFFEC04, 0xFFFFEC04,
-       0xFFFFEC05,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Read. (Offset 8 in UPM RAM)
-        */
-       /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPM RAM)
-        */
-       0x0FAFFC04, 0x0FAFEC00, 0x7FFFEC04, 0xFFFFEC04,
-       0xFFFFEC05,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPM RAM)
-        */
-       /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPM RAM)
-        */
-       /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPM RAM)
-        */
-       0x7FFFFC07,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-/*
- * 50 MHz SDRAM access using UPM B
- */
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPM RAM)
-        */
-       0x0E26FC04, 0x11ADFC04, 0xEFBBBC00, 0x1FF77C45, /* last */
-       _NOT_USED_,
-       /*
-        * SDRAM Initialization (offset 5 in UPM RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0x1FF77C35, 0xEFEABC34, 0x1FB57C35,     /* last */
-       /*
-        * Burst Read. (Offset 8 in UPM RAM)
-        */
-       0x0E26FC04, 0x10ADFC04, 0xF0AFFC00, 0xF0AFFC00,
-       0xF1AFFC00, 0xEFBBBC00, 0x1FF77C45,     /* last */
-       _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPM RAM)
-        */
-       0x1F27FC04, 0xEEAEBC04, 0x01B93C00, 0x1FF77C45, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPM RAM)
-        */
-       0x0E26BC00, 0x10AD7C00, 0xF0AFFC00, 0xF0AFFC00,
-       0xE1BBBC04, 0x1FF77C45, /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPM RAM)
-        */
-       0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC84,
-       0xFFFFFC05,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPM RAM)
-        */
-       0x7FFFFC07,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- */
-
-int checkboard (void)
-{
-#ifdef CONFIG_IVMS8
-       puts ("Board: IVMS8\n");
-#endif
-#ifdef CONFIG_IVML24
-       puts ("Board: IVM-L8/24\n");
-#endif
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immr->im_memctl;
-       long int size_b0;
-
-       /* enable SDRAM clock ("switch on" SDRAM) */
-       immr->im_cpm.cp_pbpar &= ~(CONFIG_SYS_PB_SDRAM_CLKE);   /* GPIO */
-       immr->im_cpm.cp_pbodr &= ~(CONFIG_SYS_PB_SDRAM_CLKE);   /* active output */
-       immr->im_cpm.cp_pbdir |= CONFIG_SYS_PB_SDRAM_CLKE;      /* output */
-       immr->im_cpm.cp_pbdat |= CONFIG_SYS_PB_SDRAM_CLKE;      /* assert SDRAM CLKE */
-       udelay (1);
-
-       /*
-        * Map controller bank 1 for ELIC SACCO
-        */
-       memctl->memc_or1 = CONFIG_SYS_OR1;
-       memctl->memc_br1 = CONFIG_SYS_BR1;
-
-       /*
-        * Map controller bank 2 for ELIC EPIC
-        */
-       memctl->memc_or2 = CONFIG_SYS_OR2;
-       memctl->memc_br2 = CONFIG_SYS_BR2;
-
-       /*
-        * Configure UPMA for SHARC
-        */
-       upmconfig (UPMA, (uint *) sharc_table,
-                  sizeof (sharc_table) / sizeof (uint));
-
-#if defined(CONFIG_IVML24)
-       /*
-        * Map controller bank 4 for HDLC Address space
-        */
-       memctl->memc_or4 = CONFIG_SYS_OR4;
-       memctl->memc_br4 = CONFIG_SYS_BR4;
-#endif
-
-       /*
-        * Map controller bank 5 for SHARC
-        */
-       memctl->memc_or5 = CONFIG_SYS_OR5;
-       memctl->memc_br5 = CONFIG_SYS_BR5;
-
-       memctl->memc_mamr = 0x00001000;
-
-       /*
-        * Configure UPMB for SDRAM
-        */
-       upmconfig (UPMB, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR_1BK_8K;
-
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller bank 3 to the SDRAM bank at preliminary address.
-        */
-       memctl->memc_or3 = CONFIG_SYS_OR3_PRELIM;
-       memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM;
-
-       memctl->memc_mbmr = CONFIG_SYS_MBMR_8COL;       /* refresh not enabled yet */
-
-       udelay (200);
-       memctl->memc_mcr = 0x80806105;  /* precharge */
-       udelay (1);
-       memctl->memc_mcr = 0x80806106;  /* load mode register */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;  /* autorefresh */
-
-       memctl->memc_mbmr |= MBMR_PTBE; /* refresh enabled */
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        */
-       size_b0 =
-               dram_size (CONFIG_SYS_MBMR_8COL, (long *) SDRAM_BASE3_PRELIM,
-                          SDRAM_MAX_SIZE);
-
-       memctl->memc_mbmr = CONFIG_SYS_MBMR_8COL | MBMR_PTBE;
-
-       return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
-                          long int maxsize)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immr->im_memctl;
-
-       memctl->memc_mbmr = mamr_value;
-
-       return (get_ram_size (base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy (void)
-{
-       immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-
-       /* De-assert Ethernet Powerdown */
-       immr->im_cpm.cp_pbpar &= ~(CONFIG_SYS_PB_ETH_POWERDOWN);        /* GPIO */
-       immr->im_cpm.cp_pbodr &= ~(CONFIG_SYS_PB_ETH_POWERDOWN);        /* active output */
-       immr->im_cpm.cp_pbdir |= CONFIG_SYS_PB_ETH_POWERDOWN;   /* output */
-       immr->im_cpm.cp_pbdat &= ~(CONFIG_SYS_PB_ETH_POWERDOWN);        /* Enable PHY power */
-       udelay (1000);
-
-       /*
-        * RESET is implemented by a positive pulse of at least 1 us
-        * at the reset pin.
-        *
-        * Configure RESET pins for NS DP83843 PHY, and RESET chip.
-        *
-        * Note: The RESET pin is high active, but there is an
-        *       inverter on the SPD823TS board...
-        */
-       immr->im_ioport.iop_pcpar &= ~(CONFIG_SYS_PC_ETH_RESET);
-       immr->im_ioport.iop_pcdir |= CONFIG_SYS_PC_ETH_RESET;
-       /* assert RESET signal of PHY */
-       immr->im_ioport.iop_pcdat &= ~(CONFIG_SYS_PC_ETH_RESET);
-       udelay (10);
-       /* de-assert RESET signal of PHY */
-       immr->im_ioport.iop_pcdat |= CONFIG_SYS_PC_ETH_RESET;
-       udelay (10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-void show_boot_progress (int status)
-{
-#if defined(CONFIG_STATUS_LED)
-# if defined(STATUS_LED_YELLOW)
-       status_led_set (STATUS_LED_YELLOW,
-                       (status < 0) ? STATUS_LED_ON : STATUS_LED_OFF);
-# endif        /* STATUS_LED_YELLOW */
-# if defined(STATUS_LED_BOOT)
-       if (status == BOOTSTAGE_ID_DECOMP_IMAGE)
-               status_led_set (STATUS_LED_BOOT, STATUS_LED_OFF);
-# endif        /* STATUS_LED_BOOT */
-#endif /* CONFIG_STATUS_LED */
-}
-
-/* ------------------------------------------------------------------------- */
-
-void ide_set_reset (int on)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       int i;
-
-       /*
-        * Configure PC for IDE Reset Pin
-        */
-       if (on) {               /* assert RESET */
-               immr->im_ioport.iop_pcdat &= ~(CONFIG_SYS_PC_IDE_RESET);
-
-#ifdef CONFIG_SYS_PB_12V_ENABLE
-               /* 12V Enable output OFF */
-               immr->im_cpm.cp_pbdat &= ~(CONFIG_SYS_PB_12V_ENABLE);
-
-               immr->im_cpm.cp_pbpar &= ~(CONFIG_SYS_PB_12V_ENABLE);
-               immr->im_cpm.cp_pbodr &= ~(CONFIG_SYS_PB_12V_ENABLE);
-               immr->im_cpm.cp_pbdir |= CONFIG_SYS_PB_12V_ENABLE;
-
-               /* wait 500 ms for the voltage to stabilize */
-               for (i = 0; i < 500; ++i)
-                       udelay(1000);
-#endif /* CONFIG_SYS_PB_12V_ENABLE */
-       } else {                /* release RESET */
-#ifdef CONFIG_SYS_PB_12V_ENABLE
-               /* 12V Enable output ON */
-               immr->im_cpm.cp_pbdat |= CONFIG_SYS_PB_12V_ENABLE;
-#endif /* CONFIG_SYS_PB_12V_ENABLE */
-
-#ifdef CONFIG_SYS_PB_IDE_MOTOR
-               /* configure IDE Motor voltage monitor pin as input */
-               immr->im_cpm.cp_pbpar &= ~(CONFIG_SYS_PB_IDE_MOTOR);
-               immr->im_cpm.cp_pbodr &= ~(CONFIG_SYS_PB_IDE_MOTOR);
-               immr->im_cpm.cp_pbdir &= ~(CONFIG_SYS_PB_IDE_MOTOR);
-
-/* wait up to 1 s for the motor voltage to stabilize */
-               for (i = 0; i < 1000; ++i) {
-                       if ((immr->im_cpm.cp_pbdat
-                                       & CONFIG_SYS_PB_IDE_MOTOR) != 0)
-                               break;
-                       udelay(1000);
-               }
-
-               if (i == 1000) {        /* Timeout */
-                       printf("\nWarning: 5V for IDE Motor missing\n");
-#ifdef CONFIG_STATUS_LED
-#ifdef STATUS_LED_YELLOW
-                       status_led_set(STATUS_LED_YELLOW, STATUS_LED_ON);
-#endif
-#ifdef STATUS_LED_GREEN
-                       status_led_set(STATUS_LED_GREEN, STATUS_LED_OFF);
-#endif
-#endif /* CONFIG_STATUS_LED */
-               }
-#endif /* CONFIG_SYS_PB_IDE_MOTOR */
-
-               immr->im_ioport.iop_pcdat |= CONFIG_SYS_PC_IDE_RESET;
-       }
-
-       /* program port pin as GPIO output */
-       immr->im_ioport.iop_pcpar &= ~(CONFIG_SYS_PC_IDE_RESET);
-       immr->im_ioport.iop_pcso &= ~(CONFIG_SYS_PC_IDE_RESET);
-       immr->im_ioport.iop_pcdir |= CONFIG_SYS_PC_IDE_RESET;
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/ivm/u-boot.lds.debug b/board/ivm/u-boot.lds.debug
deleted file mode 100644 (file)
index 1dd207b..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)      }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)      }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)       }
-  .rela.got      : { *(.rela.got)      }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)       }
-  .rela.bss      : { *(.rela.bss)      }
-  .rel.plt       : { *(.rel.plt)       }
-  .rela.plt      : { *(.rela.plt)      }
-  .init          : { *(.init)          }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    common/dlmalloc.o  (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-    arch/powerpc/lib/extable.o (.text)
-
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 78e4b5d1e9164dd76e793a518a01b5083456a9be..8856393686955c0bbdbee994b8e13d8bdc1f080b 100644 (file)
@@ -283,9 +283,10 @@ void ide_set_reset (int idereset)
 #endif
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
index 2ddb3da38f35f7245551bd66ebbffabd71f59420..b9aff1a84dcb4bf0c7f82184c7f948d5269af70e 100644 (file)
@@ -360,6 +360,7 @@ static int do_checktestboot(cmd_tbl_t *cmdtp, int flag, int argc,
        testboot = (testpin != 0) && (s);
        if (verbose) {
                printf("testpin   = %d\n", testpin);
+               /* cppcheck-suppress nullPointer */
                printf("test_bank = %s\n", s ? s : "not set");
                printf("boot test app : %s\n", (testboot) ? "yes" : "no");
        }
index dfbfab81369b4acce51bca58ae09d850976a4837..bf84676b9bd900accc072148bbb70e4a0259f4a0 100644 (file)
@@ -300,11 +300,9 @@ phys_size_t initdram(int board_type)
        out_8(&memctl->memc_psrt, CONFIG_SYS_PSRT);
        out_be16(&memctl->memc_mptpr, CONFIG_SYS_MPTPR);
 
-#ifndef CONFIG_SYS_RAMBOOT
        /* 60x SDRAM setup:
         */
        psize = probe_sdram(memctl);
-#endif /* CONFIG_SYS_RAMBOOT */
 
        icache_enable();
 
@@ -460,8 +458,10 @@ static void setports(int gpio)
 }
 #endif
 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
index 0543483d5a91d06e81d04299dcc55f7baa154f7e..1da0dcb9d8a03354db82fc72385b7ba52407cc7a 100644 (file)
@@ -359,9 +359,11 @@ int checkboard(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
 
index 4a736137e3fcffd72e3846f4a218542733d1270d..a74f75bad41dc09af5d9caf680f6f1bf08bb2a3e 100644 (file)
@@ -261,7 +261,7 @@ void fdt_fixup_fman_mac_addresses(void *blob)
 }
 #endif
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
        phys_size_t size;
@@ -286,6 +286,8 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
        fdt_fixup_fman_mac_addresses(blob);
 #endif
+
+       return 0;
 }
 
 #if defined(CONFIG_POST)
index 8b8300050909c6092109dd7edfac7ba765cb8cab..d9ab2fd421651df92c7784424cb7dc0441835056 100644 (file)
@@ -610,7 +610,7 @@ void pci_target_init(struct pci_controller *hose)
 #endif /* defined(CONFIG_PCI) && defined(CONFIG_SYS_PCI_TARGET_INIT) */
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        u32 val[4];
        int rc;
@@ -627,5 +627,7 @@ void ft_board_setup(void *blob, bd_t *bd)
        if (rc)
                printf("Unable to update property NOR mapping, err=%s\n",
                       fdt_strerror(rc));
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/kosagi/novena/Kconfig b/board/kosagi/novena/Kconfig
new file mode 100644 (file)
index 0000000..94f1754
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_KOSAGI_NOVENA
+
+config SYS_BOARD
+       default "novena"
+
+config SYS_VENDOR
+       default "kosagi"
+
+config SYS_SOC
+       default "mx6"
+
+config SYS_CONFIG_NAME
+       default "novena"
+
+endif
diff --git a/board/kosagi/novena/MAINTAINERS b/board/kosagi/novena/MAINTAINERS
new file mode 100644 (file)
index 0000000..d3471c2
--- /dev/null
@@ -0,0 +1,6 @@
+NOVENA BOARD
+M:     Marek Vasut <marex@denx.de>
+S:     Maintained
+F:     board/kosagi/novena/
+F:     include/configs/novena.h
+F:     configs/novena_defconfig
diff --git a/board/kosagi/novena/Makefile b/board/kosagi/novena/Makefile
new file mode 100644 (file)
index 0000000..6893b63
--- /dev/null
@@ -0,0 +1,12 @@
+#
+# Copyright (C) 2014 Marek Vasut <marex@denx.de>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+ifdef CONFIG_SPL_BUILD
+obj-y  := novena_spl.o
+else
+obj-y  := novena.o
+obj-$(CONFIG_VIDEO_IPUV3)      += video.o
+endif
diff --git a/board/kosagi/novena/novena.c b/board/kosagi/novena/novena.c
new file mode 100644 (file)
index 0000000..69f5be3
--- /dev/null
@@ -0,0 +1,269 @@
+/*
+ * Novena board support
+ *
+ * Copyright (C) 2014 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/mxc_i2c.h>
+#include <asm/imx-common/sata.h>
+#include <asm/imx-common/video.h>
+#include <fsl_esdhc.h>
+#include <i2c.h>
+#include <input.h>
+#include <ipu_pixfmt.h>
+#include <linux/fb.h>
+#include <linux/input.h>
+#include <malloc.h>
+#include <micrel.h>
+#include <miiphy.h>
+#include <mmc.h>
+#include <netdev.h>
+#include <power/pmic.h>
+#include <power/pfuze100_pmic.h>
+#include <stdio_dev.h>
+
+#include "novena.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * GPIO button
+ */
+#ifdef CONFIG_KEYBOARD
+static struct input_config button_input;
+
+static int novena_gpio_button_read_keys(struct input_config *input)
+{
+       int key = KEY_ENTER;
+       if (gpio_get_value(NOVENA_BUTTON_GPIO))
+               return 0;
+       input_send_keycodes(&button_input, &key, 1);
+       return 1;
+}
+
+static int novena_gpio_button_getc(struct stdio_dev *dev)
+{
+       return input_getc(&button_input);
+}
+
+static int novena_gpio_button_tstc(struct stdio_dev *dev)
+{
+       return input_tstc(&button_input);
+}
+
+static int novena_gpio_button_init(struct stdio_dev *dev)
+{
+       gpio_direction_input(NOVENA_BUTTON_GPIO);
+       input_set_delays(&button_input, 250, 250);
+       return 0;
+}
+
+int drv_keyboard_init(void)
+{
+       int error;
+       struct stdio_dev dev = {
+               .name   = "button",
+               .flags  = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM,
+               .start  = novena_gpio_button_init,
+               .getc   = novena_gpio_button_getc,
+               .tstc   = novena_gpio_button_tstc,
+       };
+
+       error = input_init(&button_input, 0);
+       if (error) {
+               debug("%s: Cannot set up input\n", __func__);
+               return -1;
+       }
+       button_input.read_keys = novena_gpio_button_read_keys;
+
+       error = input_stdio_register(&dev);
+       if (error)
+               return error;
+
+       return 0;
+}
+#endif
+
+/*
+ * SDHC
+ */
+#ifdef CONFIG_FSL_ESDHC
+static struct fsl_esdhc_cfg usdhc_cfg[] = {
+       { USDHC3_BASE_ADDR, 0, 4 },     /* Micro SD */
+       { USDHC2_BASE_ADDR, 0, 4 },     /* Big SD */
+};
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+
+       /* There is no CD for a microSD card, assume always present. */
+       if (cfg->esdhc_base == USDHC3_BASE_ADDR)
+               return 1;
+       else
+               return !gpio_get_value(NOVENA_SD_CD);
+}
+
+int board_mmc_getwp(struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+
+       /* There is no WP for a microSD card, assume always read-write. */
+       if (cfg->esdhc_base == USDHC3_BASE_ADDR)
+               return 0;
+       else
+               return gpio_get_value(NOVENA_SD_WP);
+}
+
+
+int board_mmc_init(bd_t *bis)
+{
+       s32 status = 0;
+       int index;
+
+       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+       usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+
+       /* Big SD write-protect and card-detect */
+       gpio_direction_input(NOVENA_SD_WP);
+       gpio_direction_input(NOVENA_SD_CD);
+
+       for (index = 0; index < ARRAY_SIZE(usdhc_cfg); index++) {
+               status = fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               if (status)
+                       return status;
+       }
+
+       return status;
+}
+#endif
+
+int board_early_init_f(void)
+{
+#if defined(CONFIG_VIDEO_IPUV3)
+       setup_display_clock();
+#endif
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+#ifdef CONFIG_CMD_SATA
+       setup_sata();
+#endif
+
+       return 0;
+}
+
+int board_late_init(void)
+{
+#if defined(CONFIG_VIDEO_IPUV3)
+       setup_display_lvds();
+#endif
+       return 0;
+}
+
+int checkboard(void)
+{
+       puts("Board: Novena 4x\n");
+       return 0;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = imx_ddr_size();
+       return 0;
+}
+
+/* setup board specific PMIC */
+int power_init_board(void)
+{
+       struct pmic *p;
+       u32 reg;
+       int ret;
+
+       power_pfuze100_init(1);
+       p = pmic_get("PFUZE100");
+       if (!p)
+               return -EINVAL;
+
+       ret = pmic_probe(p);
+       if (ret)
+               return ret;
+
+       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
+       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
+
+       /* Set SWBST to 5.0V and enable (for USB) */
+       pmic_reg_read(p, PFUZE100_SWBSTCON1, &reg);
+       reg &= ~(SWBST_MODE_MASK | SWBST_VOL_MASK);
+       reg |= (SWBST_5_00V | SWBST_MODE_AUTO);
+       pmic_reg_write(p, PFUZE100_SWBSTCON1, reg);
+
+       return 0;
+}
+
+/* EEPROM configuration data */
+struct novena_eeprom_data {
+       uint8_t         signature[6];
+       uint8_t         version;
+       uint8_t         reserved;
+       uint32_t        serial;
+       uint8_t         mac[6];
+       uint16_t        features;
+};
+
+int misc_init_r(void)
+{
+       struct novena_eeprom_data data;
+       uchar *datap = (uchar *)&data;
+       const char *signature = "Novena";
+       int ret;
+
+       /* If 'ethaddr' is already set, do nothing. */
+       if (getenv("ethaddr"))
+               return 0;
+
+       /* EEPROM is at bus 2. */
+       ret = i2c_set_bus_num(2);
+       if (ret) {
+               puts("Cannot select EEPROM I2C bus.\n");
+               return 0;
+       }
+
+       /* EEPROM is at address 0x56. */
+       ret = eeprom_read(0x56, 0, datap, sizeof(data));
+       if (ret) {
+               puts("Cannot read I2C EEPROM.\n");
+               return 0;
+       }
+
+       /* Check EEPROM signature. */
+       if (memcmp(data.signature, signature, 6)) {
+               puts("Invalid I2C EEPROM signature.\n");
+               return 0;
+       }
+
+       /* Set ethernet address from EEPROM. */
+       eth_setenv_enetaddr("ethaddr", data.mac);
+
+       return ret;
+}
diff --git a/board/kosagi/novena/novena.h b/board/kosagi/novena/novena.h
new file mode 100644 (file)
index 0000000..8f11583
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Novena board support
+ *
+ * Copyright (C) 2014 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __BOARD_KOSAGI_NOVENA_NOVENA_H__
+#define __BOARD_KOSAGI_NOVENA_NOVENA_H__
+
+#define NOVENA_AUDIO_PWRON             IMX_GPIO_NR(5, 17)
+#define NOVENA_BACKLIGHT_PWM_GPIO      IMX_GPIO_NR(4, 29)
+#define NOVENA_BACKLIGHT_PWR_GPIO      IMX_GPIO_NR(4, 15)
+#define NOVENA_BUTTON_GPIO             IMX_GPIO_NR(4, 14)
+#define NOVENA_FPGA_RESET_N_GPIO       IMX_GPIO_NR(5, 7)
+#define NOVENA_HDMI_GHOST_HPD          IMX_GPIO_NR(5, 4)
+#define NOVENA_ITE6251_PWR_GPIO                IMX_GPIO_NR(5, 28)
+#define NOVENA_PCIE_DISABLE_GPIO       IMX_GPIO_NR(2, 16)
+#define NOVENA_PCIE_POWER_ON_GPIO      IMX_GPIO_NR(7, 12)
+#define NOVENA_PCIE_RESET_GPIO         IMX_GPIO_NR(3, 29)
+#define NOVENA_PCIE_WAKE_UP_GPIO       IMX_GPIO_NR(3, 22)
+#define NOVENA_SD_CD                   IMX_GPIO_NR(1, 4)
+#define NOVENA_SD_WP                   IMX_GPIO_NR(1, 2)
+
+#define NOVENA_IT6251_I2C_BUS  2
+#define NOVENA_IT6251_CHIPADDR 0x5c
+#define NOVENA_IT6251_LVDSADDR 0x5e
+
+void setup_display_clock(void);
+void setup_display_lvds(void);
+
+#endif /* __BOARD_KOSAGI_NOVENA_NOVENA_H__ */
diff --git a/board/kosagi/novena/novena_spl.c b/board/kosagi/novena/novena_spl.c
new file mode 100644 (file)
index 0000000..b1688e0
--- /dev/null
@@ -0,0 +1,613 @@
+/*
+ * Novena SPL
+ *
+ * Copyright (C) 2014 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mx6-ddr.h>
+#include <asm/arch/mx6-pins.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/gpio.h>
+#include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/mxc_i2c.h>
+#include <asm/arch/crm_regs.h>
+#include <i2c.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <spl.h>
+
+#include <asm/arch/mx6-ddr.h>
+
+#include "novena.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define UART_PAD_CTRL                                          \
+       (PAD_CTL_PKE | PAD_CTL_PUE |                            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define USDHC_PAD_CTRL                                         \
+       (PAD_CTL_PKE | PAD_CTL_PUE |                            \
+       PAD_CTL_PUS_47K_UP  | PAD_CTL_SPEED_LOW |               \
+       PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define ENET_PAD_CTRL                                          \
+       (PAD_CTL_PKE | PAD_CTL_PUE |                            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED   |             \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_HYS)
+
+#define ENET_PHY_CFG_PAD_CTRL                                  \
+       (PAD_CTL_PKE | PAD_CTL_PUE |                            \
+       PAD_CTL_PUS_22K_UP | PAD_CTL_HYS)
+
+#define RGMII_PAD_CTRL                                         \
+       (PAD_CTL_PKE | PAD_CTL_PUE |                            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
+
+#define SPI_PAD_CTRL                                           \
+       (PAD_CTL_HYS |                                          \
+       PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED |             \
+       PAD_CTL_DSE_40ohm     | PAD_CTL_SRE_FAST)
+
+#define I2C_PAD_CTRL                                           \
+       (PAD_CTL_PKE | PAD_CTL_PUE |                            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_LOW |               \
+       PAD_CTL_DSE_240ohm  | PAD_CTL_HYS |                     \
+       PAD_CTL_ODE)
+
+#define BUTTON_PAD_CTRL                                                \
+       (PAD_CTL_PKE | PAD_CTL_PUE |                            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED   |             \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_HYS)
+
+#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
+
+/*
+ * Audio
+ */
+static iomux_v3_cfg_t audio_pads[] = {
+       /* AUD_PWRON */
+       MX6_PAD_DISP0_DAT23__GPIO5_IO17 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_audio(void)
+{
+       imx_iomux_v3_setup_multiple_pads(audio_pads, ARRAY_SIZE(audio_pads));
+       gpio_direction_output(NOVENA_AUDIO_PWRON, 1);
+}
+
+/*
+ * ENET
+ */
+static iomux_v3_cfg_t enet_pads1[] = {
+       MX6_PAD_ENET_MDIO__ENET_MDIO            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_MDC__ENET_MDC              | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TXC__RGMII_TXC            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_TD0__RGMII_TD0            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_TD1__RGMII_TD1            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_TD2__RGMII_TD2            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_TD3__RGMII_TD3            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL      | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK       | MUX_PAD_CTRL(ENET_PAD_CTRL),
+
+       /* pin 35, PHY_AD2 */
+       MX6_PAD_RGMII_RXC__GPIO6_IO30   | MUX_PAD_CTRL(ENET_PHY_CFG_PAD_CTRL),
+       /* pin 32, MODE0 */
+       MX6_PAD_RGMII_RD0__GPIO6_IO25   | MUX_PAD_CTRL(ENET_PHY_CFG_PAD_CTRL),
+       /* pin 31, MODE1 */
+       MX6_PAD_RGMII_RD1__GPIO6_IO27   | MUX_PAD_CTRL(ENET_PHY_CFG_PAD_CTRL),
+       /* pin 28, MODE2 */
+       MX6_PAD_RGMII_RD2__GPIO6_IO28   | MUX_PAD_CTRL(ENET_PHY_CFG_PAD_CTRL),
+       /* pin 27, MODE3 */
+       MX6_PAD_RGMII_RD3__GPIO6_IO29   | MUX_PAD_CTRL(ENET_PHY_CFG_PAD_CTRL),
+       /* pin 33, CLK125_EN */
+       MX6_PAD_RGMII_RX_CTL__GPIO6_IO24 | MUX_PAD_CTRL(ENET_PHY_CFG_PAD_CTRL),
+
+       /* pin 42 PHY nRST */
+       MX6_PAD_EIM_D23__GPIO3_IO23             | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t enet_pads2[] = {
+       MX6_PAD_RGMII_RXC__RGMII_RXC            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_RD0__RGMII_RD0            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_RD1__RGMII_RD1            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_RD2__RGMII_RD2            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_RD3__RGMII_RD3            | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL      | MUX_PAD_CTRL(RGMII_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_enet(void)
+{
+       imx_iomux_v3_setup_multiple_pads(enet_pads1, ARRAY_SIZE(enet_pads1));
+
+       /* Assert Ethernet PHY nRST */
+       gpio_direction_output(IMX_GPIO_NR(3, 23), 0);
+
+       /*
+        * Use imx6 internal pull-ups to drive PHY mode pins during PHY reset
+        * de-assertion. The intention is to use weak signal drivers (pull-ups)
+        * to prevent the conflict between PHY pins becoming outputs after
+        * reset and imx6 still driving the pins. The issue is described in PHY
+        * datasheet, p.14
+        */
+       gpio_direction_input(IMX_GPIO_NR(6, 30)); /* PHY_AD2 = 1 */
+       gpio_direction_input(IMX_GPIO_NR(6, 25)); /* MODE0 = 1 */
+       gpio_direction_input(IMX_GPIO_NR(6, 27)); /* MODE1 = 1 */
+       gpio_direction_input(IMX_GPIO_NR(6, 28)); /* MODE2 = 1 */
+       gpio_direction_input(IMX_GPIO_NR(6, 29)); /* MODE3 = 1 */
+       gpio_direction_input(IMX_GPIO_NR(6, 24)); /* CLK125_EN = 1 */
+
+       /* Following reset timing (p.53, fig.8 from the PHY datasheet) */
+       mdelay(10);
+
+       /* De-assert Ethernet PHY nRST */
+       gpio_set_value(IMX_GPIO_NR(3, 23), 1);
+
+       /* PHY is now configured, connect FEC to the pads */
+       imx_iomux_v3_setup_multiple_pads(enet_pads2, ARRAY_SIZE(enet_pads2));
+
+       /*
+        * PHY datasheet recommends on p.53 to wait at least 100us after reset
+        * before using MII, so we enforce the delay here
+        */
+       udelay(100);
+}
+
+/*
+ * FPGA
+ */
+static iomux_v3_cfg_t fpga_pads[] = {
+       /* FPGA_RESET_N */
+       MX6_PAD_DISP0_DAT13__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_fpga(void)
+{
+       imx_iomux_v3_setup_multiple_pads(fpga_pads, ARRAY_SIZE(fpga_pads));
+       gpio_direction_output(NOVENA_FPGA_RESET_N_GPIO, 0);
+}
+
+/*
+ * GPIO Button
+ */
+static iomux_v3_cfg_t button_pads[] = {
+       /* Debug */
+       MX6_PAD_KEY_COL4__GPIO4_IO14 | MUX_PAD_CTRL(BUTTON_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_buttons(void)
+{
+       imx_iomux_v3_setup_multiple_pads(button_pads, ARRAY_SIZE(button_pads));
+}
+
+/*
+ * I2C
+ */
+/*
+ * I2C1:
+ *  0x1d ... MMA7455L
+ *  0x30 ... SO-DIMM temp sensor
+ *  0x44 ... STMPE610
+ *  0x50 ... SO-DIMM ID
+ */
+struct i2c_pads_info i2c_pad_info0 = {
+       .scl = {
+               .i2c_mode       = MX6_PAD_EIM_D21__I2C1_SCL | PC,
+               .gpio_mode      = MX6_PAD_EIM_D21__GPIO3_IO21 | PC,
+               .gp             = IMX_GPIO_NR(3, 21)
+       },
+       .sda = {
+               .i2c_mode       = MX6_PAD_EIM_D28__I2C1_SDA | PC,
+               .gpio_mode      = MX6_PAD_EIM_D28__GPIO3_IO28 | PC,
+               .gp             = IMX_GPIO_NR(3, 28)
+       }
+};
+
+/*
+ * I2C2:
+ *  0x08 ... PMIC
+ *  0x3a ... HDMI DCC
+ *  0x50 ... HDMI DCC
+ */
+static struct i2c_pads_info i2c_pad_info1 = {
+       .scl = {
+               .i2c_mode       = MX6_PAD_EIM_EB2__I2C2_SCL | PC,
+               .gpio_mode      = MX6_PAD_EIM_EB2__GPIO2_IO30 | PC,
+               .gp             = IMX_GPIO_NR(2, 30)
+       },
+       .sda = {
+               .i2c_mode       = MX6_PAD_EIM_D16__I2C2_SDA | PC,
+               .gpio_mode      = MX6_PAD_EIM_D16__GPIO3_IO16 | PC,
+               .gp             = IMX_GPIO_NR(3, 16)
+       }
+};
+
+/*
+ * I2C3:
+ *  0x11 ... ES8283
+ *  0x50 ... LCD EDID
+ *  0x56 ... EEPROM
+ */
+static struct i2c_pads_info i2c_pad_info2 = {
+       .scl = {
+               .i2c_mode       = MX6_PAD_EIM_D17__I2C3_SCL | PC,
+               .gpio_mode      = MX6_PAD_EIM_D17__GPIO3_IO17 | PC,
+               .gp             = IMX_GPIO_NR(3, 17)
+       },
+       .sda = {
+               .i2c_mode       = MX6_PAD_EIM_D18__I2C3_SDA | PC,
+               .gpio_mode      = MX6_PAD_EIM_D18__GPIO3_IO18 | PC,
+               .gp             = IMX_GPIO_NR(3, 18)
+       }
+};
+
+static void novena_spl_setup_iomux_i2c(void)
+{
+       setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info0);
+       setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
+       setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
+}
+
+/*
+ * PCI express
+ */
+#ifdef CONFIG_CMD_PCI
+static iomux_v3_cfg_t pcie_pads[] = {
+       /* "Reset" pin */
+       MX6_PAD_EIM_D29__GPIO3_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* "Power on" pin */
+       MX6_PAD_GPIO_17__GPIO7_IO12 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* "Wake up" pin (input) */
+       MX6_PAD_EIM_D22__GPIO3_IO22 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* "Disable endpoint" (rfkill) pin */
+       MX6_PAD_EIM_A22__GPIO2_IO16 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_pcie(void)
+{
+       imx_iomux_v3_setup_multiple_pads(pcie_pads, ARRAY_SIZE(pcie_pads));
+
+       /* Ensure PCIe is powered down */
+       gpio_direction_output(NOVENA_PCIE_POWER_ON_GPIO, 0);
+
+       /* Put the card into reset */
+       gpio_direction_output(NOVENA_PCIE_RESET_GPIO, 0);
+
+       /* Input signal to wake system from mPCIe card */
+       gpio_direction_input(NOVENA_PCIE_WAKE_UP_GPIO);
+
+       /* Drive RFKILL high, to ensure the radio is turned on */
+       gpio_direction_output(NOVENA_PCIE_DISABLE_GPIO, 1);
+}
+#else
+static inline void novena_spl_setup_iomux_pcie(void) {}
+#endif
+
+/*
+ * SDHC
+ */
+static iomux_v3_cfg_t usdhc2_pads[] = {
+       MX6_PAD_SD2_CLK__SD2_CLK    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_CMD__SD2_CMD    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT0__SD2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT1__SD2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT2__SD2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT3__SD2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_GPIO_2__GPIO1_IO02  | MUX_PAD_CTRL(NO_PAD_CTRL), /* WP */
+       MX6_PAD_GPIO_4__GPIO1_IO04  | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+static iomux_v3_cfg_t usdhc3_pads[] = {
+       MX6_PAD_SD3_CLK__SD3_CLK    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_CMD__SD3_CMD    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_sdhc(void)
+{
+       imx_iomux_v3_setup_multiple_pads(usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+       imx_iomux_v3_setup_multiple_pads(usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+
+       /* Big SD write-protect and card-detect */
+       gpio_direction_input(IMX_GPIO_NR(1, 2));
+       gpio_direction_input(IMX_GPIO_NR(1, 4));
+}
+
+/*
+ * SPI
+ */
+#ifdef CONFIG_MXC_SPI
+static iomux_v3_cfg_t ecspi3_pads[] = {
+       /* SS1 */
+       MX6_PAD_DISP0_DAT1__ECSPI3_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_DISP0_DAT2__ECSPI3_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_DISP0_DAT0__ECSPI3_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_DISP0_DAT3__GPIO4_IO24 | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_DISP0_DAT4__GPIO4_IO25 | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_DISP0_DAT5__GPIO4_IO26 | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_DISP0_DAT7__ECSPI3_RDY | MUX_PAD_CTRL(SPI_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_spi(void)
+{
+       imx_iomux_v3_setup_multiple_pads(ecspi3_pads, ARRAY_SIZE(ecspi3_pads));
+       /* De-assert the nCS */
+       gpio_direction_output(MX6_PAD_DISP0_DAT3__GPIO4_IO24, 1);
+       gpio_direction_output(MX6_PAD_DISP0_DAT4__GPIO4_IO25, 1);
+       gpio_direction_output(MX6_PAD_DISP0_DAT5__GPIO4_IO26, 1);
+}
+#else
+static void novena_spl_setup_iomux_spi(void) {}
+#endif
+
+/*
+ * UART
+ */
+static iomux_v3_cfg_t const uart2_pads[] = {
+       MX6_PAD_EIM_D26__UART2_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_EIM_D27__UART2_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const uart3_pads[] = {
+       MX6_PAD_EIM_D24__UART3_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_EIM_D25__UART3_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const uart4_pads[] = {
+       MX6_PAD_KEY_COL0__UART4_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_KEY_ROW0__UART4_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_CSI0_DAT16__UART4_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_CSI0_DAT17__UART4_RTS_B | MUX_PAD_CTRL(UART_PAD_CTRL),
+
+};
+
+static void novena_spl_setup_iomux_uart(void)
+{
+       imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads));
+       imx_iomux_v3_setup_multiple_pads(uart3_pads, ARRAY_SIZE(uart3_pads));
+       imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads));
+}
+
+/*
+ * Video
+ */
+#ifdef CONFIG_VIDEO
+static iomux_v3_cfg_t hdmi_pads[] = {
+       /* "Ghost HPD" pin */
+       MX6_PAD_EIM_A24__GPIO5_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL),
+
+       /* LCD_PWR_CTL */
+       MX6_PAD_CSI0_DAT10__GPIO5_IO28 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* LCD_BL_ON */
+       MX6_PAD_KEY_ROW4__GPIO4_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* GPIO_PWM1 */
+       MX6_PAD_DISP0_DAT8__GPIO4_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void novena_spl_setup_iomux_video(void)
+{
+       imx_iomux_v3_setup_multiple_pads(hdmi_pads, ARRAY_SIZE(hdmi_pads));
+       gpio_direction_input(NOVENA_HDMI_GHOST_HPD);
+}
+#else
+static inline void novena_spl_setup_iomux_video(void) {}
+#endif
+
+/*
+ * SPL boots from uSDHC card
+ */
+#ifdef CONFIG_FSL_ESDHC
+static struct fsl_esdhc_cfg usdhc_cfg = {
+       USDHC3_BASE_ADDR, 0, 4
+};
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       /* There is no CD for a microSD card, assume always present. */
+       return 1;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       usdhc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+       return fsl_esdhc_initialize(bis, &usdhc_cfg);
+}
+#endif
+
+/* Configure MX6Q/DUAL mmdc DDR io registers */
+static struct mx6dq_iomux_ddr_regs novena_ddr_ioregs = {
+       /* SDCLK[0:1], CAS, RAS, Reset: Differential input, 40ohm */
+       .dram_sdclk_0           = 0x00020038,
+       .dram_sdclk_1           = 0x00020038,
+       .dram_cas               = 0x00000038,
+       .dram_ras               = 0x00000038,
+       .dram_reset             = 0x00000038,
+       /* SDCKE[0:1]: 100k pull-up */
+       .dram_sdcke0            = 0x00003000,
+       .dram_sdcke1            = 0x00003000,
+       /* SDBA2: pull-up disabled */
+       .dram_sdba2             = 0x00000000,
+       /* SDODT[0:1]: 100k pull-up, 40 ohm */
+       .dram_sdodt0            = 0x00000038,
+       .dram_sdodt1            = 0x00000038,
+       /* SDQS[0:7]: Differential input, 40 ohm */
+       .dram_sdqs0             = 0x00000038,
+       .dram_sdqs1             = 0x00000038,
+       .dram_sdqs2             = 0x00000038,
+       .dram_sdqs3             = 0x00000038,
+       .dram_sdqs4             = 0x00000038,
+       .dram_sdqs5             = 0x00000038,
+       .dram_sdqs6             = 0x00000038,
+       .dram_sdqs7             = 0x00000038,
+
+       /* DQM[0:7]: Differential input, 40 ohm */
+       .dram_dqm0              = 0x00000038,
+       .dram_dqm1              = 0x00000038,
+       .dram_dqm2              = 0x00000038,
+       .dram_dqm3              = 0x00000038,
+       .dram_dqm4              = 0x00000038,
+       .dram_dqm5              = 0x00000038,
+       .dram_dqm6              = 0x00000038,
+       .dram_dqm7              = 0x00000038,
+};
+
+/* Configure MX6Q/DUAL mmdc GRP io registers */
+static struct mx6dq_iomux_grp_regs novena_grp_ioregs = {
+       /* DDR3 */
+       .grp_ddr_type           = 0x000c0000,
+       .grp_ddrmode_ctl        = 0x00020000,
+       /* Disable DDR pullups */
+       .grp_ddrpke             = 0x00000000,
+       /* ADDR[00:16], SDBA[0:1]: 40 ohm */
+       .grp_addds              = 0x00000038,
+       /* CS0/CS1/SDBA2/CKE0/CKE1/SDWE: 40 ohm */
+       .grp_ctlds              = 0x00000038,
+       /* DATA[00:63]: Differential input, 40 ohm */
+       .grp_ddrmode            = 0x00020000,
+       .grp_b0ds               = 0x00000038,
+       .grp_b1ds               = 0x00000038,
+       .grp_b2ds               = 0x00000038,
+       .grp_b3ds               = 0x00000038,
+       .grp_b4ds               = 0x00000038,
+       .grp_b5ds               = 0x00000038,
+       .grp_b6ds               = 0x00000038,
+       .grp_b7ds               = 0x00000038,
+};
+
+static struct mx6_mmdc_calibration novena_mmdc_calib = {
+       /* write leveling calibration determine */
+       .p0_mpwldectrl0         = 0x00420048,
+       .p0_mpwldectrl1         = 0x006f0059,
+       .p1_mpwldectrl0         = 0x005a0104,
+       .p1_mpwldectrl1         = 0x01070113,
+       /* Read DQS Gating calibration */
+       .p0_mpdgctrl0           = 0x437c040b,
+       .p0_mpdgctrl1           = 0x0413040e,
+       .p1_mpdgctrl0           = 0x444f0446,
+       .p1_mpdgctrl1           = 0x044d0422,
+       /* Read Calibration: DQS delay relative to DQ read access */
+       .p0_mprddlctl           = 0x4c424249,
+       .p1_mprddlctl           = 0x4e48414f,
+       /* Write Calibration: DQ/DM delay relative to DQS write access */
+       .p0_mpwrdlctl           = 0x42414641,
+       .p1_mpwrdlctl           = 0x46374b43,
+};
+
+static struct mx6_ddr_sysinfo novena_ddr_info = {
+       /* Width of data bus: 0=16, 1=32, 2=64 */
+       .dsize          = 2,
+       /* Config for full 4GB range so that get_mem_size() works */
+       .cs_density     = 32,   /* 32Gb per CS */
+       /* Single chip select */
+       .ncs            = 1,
+       .cs1_mirror     = 0,
+       .rtt_wr         = 1,    /* RTT_Wr = RZQ/4 */
+       .rtt_nom        = 2,    /* RTT_Nom = RZQ/2 */
+       .walat          = 3,    /* Write additional latency */
+       .ralat          = 7,    /* Read additional latency */
+       .mif3_mode      = 3,    /* Command prediction working mode */
+       .bi_on          = 1,    /* Bank interleaving enabled */
+       .sde_to_rst     = 0x10, /* 14 cycles, 200us (JEDEC default) */
+       .rst_to_cke     = 0x23, /* 33 cycles, 500us (JEDEC default) */
+};
+
+static struct mx6_ddr3_cfg elpida_4gib_1600 = {
+       .mem_speed      = 1600,
+       .density        = 4,
+       .width          = 64,
+       .banks          = 8,
+       .rowaddr        = 16,
+       .coladdr        = 10,
+       .pagesz         = 2,
+       .trcd           = 1300,
+       .trcmin         = 4900,
+       .trasmin        = 3590,
+};
+
+static void ccgr_init(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       writel(0x00C03F3F, &ccm->CCGR0);
+       writel(0x0030FC03, &ccm->CCGR1);
+       writel(0x0FFFC000, &ccm->CCGR2);
+       writel(0x3FF00000, &ccm->CCGR3);
+       writel(0xFFFFF300, &ccm->CCGR4);
+       writel(0x0F0000C3, &ccm->CCGR5);
+       writel(0x000003FF, &ccm->CCGR6);
+}
+
+static void gpr_init(void)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       /* enable AXI cache for VDOA/VPU/IPU */
+       writel(0xF00000CF, &iomux->gpr[4]);
+       /* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
+       writel(0x007F007F, &iomux->gpr[6]);
+       writel(0x007F007F, &iomux->gpr[7]);
+}
+
+/*
+ * called from C runtime startup code (arch/arm/lib/crt0.S:_main)
+ * - we have a stack and a place to store GD, both in SRAM
+ * - no variable global data is available
+ */
+void board_init_f(ulong dummy)
+{
+       /* setup AIPS and disable watchdog */
+       arch_cpu_init();
+
+       ccgr_init();
+       gpr_init();
+
+       /* setup GP timer */
+       timer_init();
+
+#ifdef CONFIG_BOARD_POSTCLK_INIT
+       board_postclk_init();
+#endif
+#ifdef CONFIG_FSL_ESDHC
+       get_clocks();
+#endif
+
+       /* Setup IOMUX and configure basics. */
+       novena_spl_setup_iomux_audio();
+       novena_spl_setup_iomux_buttons();
+       novena_spl_setup_iomux_enet();
+       novena_spl_setup_iomux_fpga();
+       novena_spl_setup_iomux_i2c();
+       novena_spl_setup_iomux_pcie();
+       novena_spl_setup_iomux_sdhc();
+       novena_spl_setup_iomux_spi();
+       novena_spl_setup_iomux_uart();
+       novena_spl_setup_iomux_video();
+
+       /* UART clocks enabled and gd valid - init serial console */
+       preloader_console_init();
+
+       /* Start the DDR DRAM */
+       mx6dq_dram_iocfg(64, &novena_ddr_ioregs, &novena_grp_ioregs);
+       mx6_dram_cfg(&novena_ddr_info, &novena_mmdc_calib, &elpida_4gib_1600);
+
+       /* Clear the BSS. */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+       /* load/boot image from boot device */
+       board_init_r(NULL, 0);
+}
+
+void reset_cpu(ulong addr)
+{
+}
diff --git a/board/kosagi/novena/video.c b/board/kosagi/novena/video.c
new file mode 100644 (file)
index 0000000..3bb1b71
--- /dev/null
@@ -0,0 +1,456 @@
+/*
+ * Novena video output support
+ *
+ * IT6251 code based on code Copyright (C) 2014 Sean Cross
+ * from https://github.com/xobs/novena-linux.git commit
+ * 3d85836ee1377d445531928361809612aa0a18db
+ *
+ * Copyright (C) 2014 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/mxc_i2c.h>
+#include <asm/imx-common/video.h>
+#include <i2c.h>
+#include <input.h>
+#include <ipu_pixfmt.h>
+#include <linux/fb.h>
+#include <linux/input.h>
+#include <malloc.h>
+#include <stdio_dev.h>
+
+#include "novena.h"
+
+#define IT6251_VENDOR_ID_LOW                           0x00
+#define IT6251_VENDOR_ID_HIGH                          0x01
+#define IT6251_DEVICE_ID_LOW                           0x02
+#define IT6251_DEVICE_ID_HIGH                          0x03
+#define IT6251_SYSTEM_STATUS                           0x0d
+#define IT6251_SYSTEM_STATUS_RINTSTATUS                        (1 << 0)
+#define IT6251_SYSTEM_STATUS_RHPDSTATUS                        (1 << 1)
+#define IT6251_SYSTEM_STATUS_RVIDEOSTABLE              (1 << 2)
+#define IT6251_SYSTEM_STATUS_RPLL_IOLOCK               (1 << 3)
+#define IT6251_SYSTEM_STATUS_RPLL_XPLOCK               (1 << 4)
+#define IT6251_SYSTEM_STATUS_RPLL_SPLOCK               (1 << 5)
+#define IT6251_SYSTEM_STATUS_RAUXFREQ_LOCK             (1 << 6)
+#define IT6251_REF_STATE                               0x0e
+#define IT6251_REF_STATE_MAIN_LINK_DISABLED            (1 << 0)
+#define IT6251_REF_STATE_AUX_CHANNEL_READ              (1 << 1)
+#define IT6251_REF_STATE_CR_PATTERN                    (1 << 2)
+#define IT6251_REF_STATE_EQ_PATTERN                    (1 << 3)
+#define IT6251_REF_STATE_NORMAL_OPERATION              (1 << 4)
+#define IT6251_REF_STATE_MUTED                         (1 << 5)
+
+#define IT6251_REG_PCLK_CNT_LOW                                0x57
+#define IT6251_REG_PCLK_CNT_HIGH                       0x58
+
+#define IT6521_RETRY_MAX                               20
+
+static int it6251_is_stable(void)
+{
+       const unsigned int caddr = NOVENA_IT6251_CHIPADDR;
+       const unsigned int laddr = NOVENA_IT6251_LVDSADDR;
+       int status;
+       int clkcnt;
+       int rpclkcnt;
+       int refstate;
+
+       rpclkcnt = (i2c_reg_read(caddr, 0x13) & 0xff) |
+                  ((i2c_reg_read(caddr, 0x14) << 8) & 0x0f00);
+       debug("RPCLKCnt: %d\n", rpclkcnt);
+
+       status = i2c_reg_read(caddr, IT6251_SYSTEM_STATUS);
+       debug("System status: 0x%02x\n", status);
+
+       clkcnt = (i2c_reg_read(laddr, IT6251_REG_PCLK_CNT_LOW) & 0xff) |
+                ((i2c_reg_read(laddr, IT6251_REG_PCLK_CNT_HIGH) << 8) &
+                 0x0f00);
+       debug("Clock: 0x%02x\n", clkcnt);
+
+       refstate = i2c_reg_read(laddr, IT6251_REF_STATE);
+       debug("Ref Link State: 0x%02x\n", refstate);
+
+       if ((refstate & 0x1f) != 0)
+               return 0;
+
+       /* If video is muted, that's a failure */
+       if (refstate & IT6251_REF_STATE_MUTED)
+               return 0;
+
+       if (!(status & IT6251_SYSTEM_STATUS_RVIDEOSTABLE))
+               return 0;
+
+       return 1;
+}
+
+static int it6251_ready(void)
+{
+       const unsigned int caddr = NOVENA_IT6251_CHIPADDR;
+
+       /* Test if the IT6251 came out of reset by reading ID regs. */
+       if (i2c_reg_read(caddr, IT6251_VENDOR_ID_LOW) != 0x15)
+               return 0;
+       if (i2c_reg_read(caddr, IT6251_VENDOR_ID_HIGH) != 0xca)
+               return 0;
+       if (i2c_reg_read(caddr, IT6251_DEVICE_ID_LOW) != 0x51)
+               return 0;
+       if (i2c_reg_read(caddr, IT6251_DEVICE_ID_HIGH) != 0x62)
+               return 0;
+
+       return 1;
+}
+
+static void it6251_program_regs(void)
+{
+       const unsigned int caddr = NOVENA_IT6251_CHIPADDR;
+       const unsigned int laddr = NOVENA_IT6251_LVDSADDR;
+
+       i2c_reg_write(caddr, 0x05, 0x00);
+       mdelay(1);
+
+       /* set LVDSRX address, and enable */
+       i2c_reg_write(caddr, 0xfd, 0xbc);
+       i2c_reg_write(caddr, 0xfe, 0x01);
+
+       /*
+        * LVDSRX
+        */
+       /* This write always fails, because the chip goes into reset */
+       /* reset LVDSRX */
+       i2c_reg_write(laddr, 0x05, 0xff);
+       i2c_reg_write(laddr, 0x05, 0x00);
+
+       /* reset LVDSRX PLL */
+       i2c_reg_write(laddr, 0x3b, 0x42);
+       i2c_reg_write(laddr, 0x3b, 0x43);
+
+       /* something with SSC PLL */
+       i2c_reg_write(laddr, 0x3c, 0x08);
+       /* don't swap links, but writing reserved registers */
+       i2c_reg_write(laddr, 0x0b, 0x88);
+
+       /* JEIDA, 8-bit depth  0x11, orig 0x42 */
+       i2c_reg_write(laddr, 0x2c, 0x01);
+       /* "reserved" */
+       i2c_reg_write(laddr, 0x32, 0x04);
+       /* "reserved" */
+       i2c_reg_write(laddr, 0x35, 0xe0);
+       /* "reserved" + clock delay */
+       i2c_reg_write(laddr, 0x2b, 0x24);
+
+       /* reset LVDSRX pix clock */
+       i2c_reg_write(laddr, 0x05, 0x02);
+       i2c_reg_write(laddr, 0x05, 0x00);
+
+       /*
+        * DPTX
+        */
+       /* set for two lane mode, normal op, no swapping, no downspread */
+       i2c_reg_write(caddr, 0x16, 0x02);
+
+       /* some AUX channel EDID magic */
+       i2c_reg_write(caddr, 0x23, 0x40);
+
+       /* power down lanes 3-0 */
+       i2c_reg_write(caddr, 0x5c, 0xf3);
+
+       /* enable DP scrambling, change EQ CR phase */
+       i2c_reg_write(caddr, 0x5f, 0x06);
+
+       /* color mode RGB, pclk/2 */
+       i2c_reg_write(caddr, 0x60, 0x02);
+       /* dual pixel input mode, no EO swap, no RGB swap */
+       i2c_reg_write(caddr, 0x61, 0x04);
+       /* M444B24 video format */
+       i2c_reg_write(caddr, 0x62, 0x01);
+
+       /* vesa range / not interlace / vsync high / hsync high */
+       i2c_reg_write(caddr, 0xa0, 0x0F);
+
+       /* hpd event timer set to 1.6-ish ms */
+       i2c_reg_write(caddr, 0xc9, 0xf5);
+
+       /* more reserved magic */
+       i2c_reg_write(caddr, 0xca, 0x4d);
+       i2c_reg_write(caddr, 0xcb, 0x37);
+
+       /* enhanced framing mode, auto video fifo reset, video mute disable */
+       i2c_reg_write(caddr, 0xd3, 0x03);
+
+       /* "vidstmp" and some reserved stuff */
+       i2c_reg_write(caddr, 0xd4, 0x45);
+
+       /* queue number -- reserved */
+       i2c_reg_write(caddr, 0xe7, 0xa0);
+       /* info frame packets  and reserved */
+       i2c_reg_write(caddr, 0xe8, 0x33);
+       /* more AVI stuff */
+       i2c_reg_write(caddr, 0xec, 0x00);
+
+       /* select PC master reg for aux channel? */
+       i2c_reg_write(caddr, 0x23, 0x42);
+
+       /* send PC request commands */
+       i2c_reg_write(caddr, 0x24, 0x00);
+       i2c_reg_write(caddr, 0x25, 0x00);
+       i2c_reg_write(caddr, 0x26, 0x00);
+
+       /* native aux read */
+       i2c_reg_write(caddr, 0x2b, 0x00);
+       /* back to internal */
+       i2c_reg_write(caddr, 0x23, 0x40);
+
+       /* voltage swing level 3 */
+       i2c_reg_write(caddr, 0x19, 0xff);
+       /* pre-emphasis level 3 */
+       i2c_reg_write(caddr, 0x1a, 0xff);
+
+       /* start link training */
+       i2c_reg_write(caddr, 0x17, 0x01);
+}
+
+static int it6251_init(void)
+{
+       const unsigned int caddr = NOVENA_IT6251_CHIPADDR;
+       int reg;
+       int tries, retries = 0;
+
+       for (retries = 0; retries < IT6521_RETRY_MAX; retries++) {
+               /* Program the chip. */
+               it6251_program_regs();
+
+               /* Wait for video stable. */
+               for (tries = 0; tries < 100; tries++) {
+                       reg = i2c_reg_read(caddr, 0x17);
+                       /* Test Link CFG, STS, LCS read done. */
+                       if ((reg & 0xe0) != 0xe0) {
+                               /* Not yet, wait a bit more. */
+                               mdelay(2);
+                               continue;
+                       }
+
+                       /* Test if the video input is stable. */
+                       if (it6251_is_stable())
+                               return 0;
+               }
+               /*
+                * If we couldn't stabilize, requeue and try again,
+                * because it means that the LVDS channel isn't
+                * stable yet.
+                */
+               printf("Display didn't stabilize.\n");
+               printf("This may be because the LVDS port is still in powersave mode.\n");
+               mdelay(50);
+       }
+
+       return -EINVAL;
+}
+
+static void enable_hdmi(struct display_info_t const *dev)
+{
+       imx_enable_hdmi_phy();
+}
+
+static int lvds_enabled;
+
+static void enable_lvds(struct display_info_t const *dev)
+{
+       if (lvds_enabled)
+               return;
+
+       /* ITE IT6251 power enable. */
+       gpio_direction_output(NOVENA_ITE6251_PWR_GPIO, 0);
+       mdelay(10);
+       gpio_direction_output(NOVENA_ITE6251_PWR_GPIO, 1);
+       mdelay(20);
+       lvds_enabled = 1;
+}
+
+static int detect_lvds(struct display_info_t const *dev)
+{
+       int ret, loops = 250;
+
+       enable_lvds(dev);
+
+       ret = i2c_set_bus_num(NOVENA_IT6251_I2C_BUS);
+       if (ret) {
+               puts("Cannot select IT6251 I2C bus.\n");
+               return 0;
+       }
+
+       /* Wait up-to ~250 mS for the LVDS to come up. */
+       while (--loops) {
+               ret = it6251_ready();
+               if (ret)
+                       return ret;
+
+               mdelay(1);
+       }
+
+       return 0;
+}
+
+struct display_info_t const displays[] = {
+       {
+               /* HDMI Output */
+               .bus    = -1,
+               .addr   = 0,
+               .pixfmt = IPU_PIX_FMT_RGB24,
+               .detect = detect_hdmi,
+               .enable = enable_hdmi,
+               .mode   = {
+                       .name           = "HDMI",
+                       .refresh        = 60,
+                       .xres           = 1024,
+                       .yres           = 768,
+                       .pixclock       = 15384,
+                       .left_margin    = 220,
+                       .right_margin   = 40,
+                       .upper_margin   = 21,
+                       .lower_margin   = 7,
+                       .hsync_len      = 60,
+                       .vsync_len      = 10,
+                       .sync           = FB_SYNC_EXT,
+                       .vmode          = FB_VMODE_NONINTERLACED
+               },
+       }, {
+               /* LVDS Output: N133HSE-EA1 Rev. C1 */
+               .bus    = -1,
+               .pixfmt = IPU_PIX_FMT_RGB24,
+               .detect = detect_lvds,
+               .enable = enable_lvds,
+               .mode   = {
+                       .name           = "Chimei-FHD",
+                       .refresh        = 60,
+                       .xres           = 1920,
+                       .yres           = 1080,
+                       .pixclock       = 15384,
+                       .left_margin    = 148,
+                       .right_margin   = 88,
+                       .upper_margin   = 36,
+                       .lower_margin   = 4,
+                       .hsync_len      = 44,
+                       .vsync_len      = 5,
+                       .sync           = FB_SYNC_HOR_HIGH_ACT |
+                                         FB_SYNC_VERT_HIGH_ACT |
+                                         FB_SYNC_EXT,
+                       .vmode          = FB_VMODE_NONINTERLACED,
+               },
+       },
+};
+
+size_t display_count = ARRAY_SIZE(displays);
+
+static void enable_vpll(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int timeout = 100000;
+
+       setbits_le32(&ccm->analog_pll_video, BM_ANADIG_PLL_VIDEO_POWERDOWN);
+
+       clrsetbits_le32(&ccm->analog_pll_video,
+                       BM_ANADIG_PLL_VIDEO_DIV_SELECT |
+                       BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT,
+                       BF_ANADIG_PLL_VIDEO_DIV_SELECT(37) |
+                       BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(1));
+
+       writel(BF_ANADIG_PLL_VIDEO_NUM_A(11), &ccm->analog_pll_video_num);
+       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(12), &ccm->analog_pll_video_denom);
+
+       clrbits_le32(&ccm->analog_pll_video, BM_ANADIG_PLL_VIDEO_POWERDOWN);
+
+       while (timeout--)
+               if (readl(&ccm->analog_pll_video) & BM_ANADIG_PLL_VIDEO_LOCK)
+                       break;
+       if (timeout < 0)
+               printf("Warning: video pll lock timeout!\n");
+
+       clrsetbits_le32(&ccm->analog_pll_video,
+                       BM_ANADIG_PLL_VIDEO_BYPASS,
+                       BM_ANADIG_PLL_VIDEO_ENABLE);
+}
+
+void setup_display_clock(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       enable_ipu_clock();
+       enable_vpll();
+       imx_setup_hdmi();
+
+       /* Turn on IPU LDB DI0 clocks */
+       setbits_le32(&mxc_ccm->CCGR3, MXC_CCM_CCGR3_LDB_DI0_MASK);
+
+       /* Switch LDB DI0 to PLL5 (Video PLL) */
+       clrsetbits_le32(&mxc_ccm->cs2cdr,
+                       MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK,
+                       (0 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
+
+       /* LDB clock div by 3.5 */
+       clrbits_le32(&mxc_ccm->cscmr2, MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV);
+
+       /* DI0 clock derived from ldb_di0_clk */
+       clrsetbits_le32(&mxc_ccm->chsccdr,
+                       MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK,
+                       (CHSCCDR_CLK_SEL_LDB_DI0 <<
+                        MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET)
+                       );
+
+       /* Enable both LVDS channels, both connected to DI0. */
+       writel(IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH |
+              IOMUXC_GPR2_BIT_MAPPING_CH1_JEIDA |
+              IOMUXC_GPR2_DATA_WIDTH_CH1_24BIT |
+              IOMUXC_GPR2_BIT_MAPPING_CH0_JEIDA |
+              IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT |
+              IOMUXC_GPR2_SPLIT_MODE_EN_MASK |
+              IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI0 |
+              IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0,
+              &iomux->gpr[2]);
+
+       clrsetbits_le32(&iomux->gpr[3],
+                       IOMUXC_GPR3_LVDS0_MUX_CTL_MASK |
+                       IOMUXC_GPR3_LVDS1_MUX_CTL_MASK,
+                       (IOMUXC_GPR3_MUX_SRC_IPU1_DI0 <<
+                        IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET) |
+                       (IOMUXC_GPR3_MUX_SRC_IPU1_DI0 <<
+                        IOMUXC_GPR3_LVDS1_MUX_CTL_OFFSET)
+                       );
+}
+
+void setup_display_lvds(void)
+{
+       int ret;
+
+       ret = i2c_set_bus_num(NOVENA_IT6251_I2C_BUS);
+       if (ret) {
+               puts("Cannot select LVDS-to-eDP I2C bus.\n");
+               return;
+       }
+
+       /* The IT6251 should be ready now, if it's not, it's not connected. */
+       ret = it6251_ready();
+       if (!ret)
+               return;
+
+       /* Init the LVDS-to-eDP chip and if it succeeded, enable backlight. */
+       ret = it6251_init();
+       if (!ret) {
+               /* Backlight power enable. */
+               gpio_direction_output(NOVENA_BACKLIGHT_PWR_GPIO, 1);
+               /* PWM backlight pin, always on for full brightness. */
+               gpio_direction_output(NOVENA_BACKLIGHT_PWM_GPIO, 1);
+       }
+}
diff --git a/board/kup/common/flash.c b/board/kup/common/flash.c
deleted file mode 100644 (file)
index 77c7b6c..0000000
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#ifndef        CONFIG_ENV_ADDR
-#define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-#endif
-
-#define CONFIG_FLASH_16BIT
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size_b0;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
-       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V | BR_PS_16;
-
-       /* Re-do sizing to get full correct info */
-       size_b0 = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("FUJITSU ");            break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM400B:      printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM400T:      printf ("AM29LV400T (4 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM800B:      printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM800T:      printf ("AM29LV800T (8 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM160B:      printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM160T:      printf ("AM29LV160T (16 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM320B:      printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM320T:      printf ("AM29LV320T (32 Mbit, top boot sector)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       short i;
-       ulong value;
-       ulong base = (ulong)addr;
-
-       /* Write auto select command: read Manufacturer ID */
-       vu_short *s_addr=(vu_short*)addr;
-       s_addr[0x5555] = 0x00AA;
-       s_addr[0x2AAA] = 0x0055;
-       s_addr[0x5555] = 0x0090;
-
-       value = s_addr[0];
-       value = value|(value<<16);
-
-       switch (value) {
-       case AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case FUJ_MANUFACT:
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = s_addr[1];
-       value = value|(value<<16);
-
-               switch (value) {
-       case FUJI_ID_29F800BA:
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-       case AMD_ID_LV800T:
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-       case AMD_ID_LV800B:
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-       }
-
-       /* set up sector start address table */
-       /* set sector offsets for bottom boot block type        */
-       info->start[0] = base + 0x00000000;
-       info->start[1] = base + 0x00004000;
-       info->start[2] = base + 0x00006000;
-       info->start[3] = base + 0x00008000;
-       for (i = 4; i < info->sector_count; i++) {
-               info->start[i] = base + (i * 0x00010000) - 0x00030000;
-       }
-
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               s_addr = (volatile unsigned short *)(info->start[i]);
-               info->protect[i] = s_addr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               s_addr = (volatile unsigned short *)info->start[0];
-               *s_addr = 0x00F0;       /* reset bank */
-       }
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       vu_long *addr = (vu_long*)(info->start[0]);
-       int flag, prot, sect;
-       ulong start, now, last;
-#ifdef CONFIG_FLASH_16BIT
-       vu_short *s_addr = (vu_short*)addr;
-#endif
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-/*#ifndef CONFIG_FLASH_16BIT
-       ulong type;
-       type = (info->flash_id & FLASH_VENDMASK);
-       if ((type != FLASH_MAN_SST) && (type != FLASH_MAN_STM)) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return;
-       }
-#endif*/
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-#ifdef CONFIG_FLASH_16BIT
-                       vu_short *s_sect_addr = (vu_short*)(info->start[sect]);
-#else
-                       vu_long *sect_addr = (vu_long*)(info->start[sect]);
-#endif
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-#ifdef CONFIG_FLASH_16BIT
-
-                       /*printf("\ns_sect_addr=%x",s_sect_addr);*/
-                       s_addr[0x5555] = 0x00AA;
-                       s_addr[0x2AAA] = 0x0055;
-                       s_addr[0x5555] = 0x0080;
-                       s_addr[0x5555] = 0x00AA;
-                       s_addr[0x2AAA] = 0x0055;
-                       s_sect_addr[0] = 0x0030;
-#else
-                       addr[0x5555] = 0x00AA00AA;
-                       addr[0x2AAA] = 0x00550055;
-                       addr[0x5555] = 0x00800080;
-                       addr[0x5555] = 0x00AA00AA;
-                       addr[0x2AAA] = 0x00550055;
-                       sect_addr[0] = 0x00300030;
-#endif
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-#ifdef CONFIG_FLASH_16BIT
-                       while ((s_sect_addr[0] & 0x0080) != 0x0080) {
-#else
-                       while ((sect_addr[0] & 0x00800080) != 0x00800080) {
-#endif
-                               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       return 1;
-                               }
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-               }
-       }
-
-       /* reset to read mode */
-       addr = (volatile unsigned long *)info->start[0];
-#ifdef CONFIG_FLASH_16BIT
-       s_addr[0] = 0x00F0;     /* reset bank */
-#else
-       addr[0] = 0x00F000F0;   /* reset bank */
-#endif
-
-       printf (" done\n");
-       return 0;
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_long *addr = (vu_long*)(info->start[0]);
-
-#ifdef CONFIG_FLASH_16BIT
-       vu_short high_data;
-       vu_short low_data;
-       vu_short *s_addr = (vu_short*)addr;
-#endif
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_long *)dest) & data) != data) {
-               return (2);
-       }
-
-#ifdef CONFIG_FLASH_16BIT
-       /* Write the 16 higher-bits */
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       high_data = ((data>>16) & 0x0000ffff);
-
-       s_addr[0x5555] = 0x00AA;
-       s_addr[0x2AAA] = 0x0055;
-       s_addr[0x5555] = 0x00A0;
-
-       *((vu_short *)dest) = high_data;
-
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       while ((*((vu_short *)dest) & 0x0080) != (high_data & 0x0080)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-
-
-       /* Write the 16 lower-bits */
-#endif
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-#ifdef CONFIG_FLASH_16BIT
-       dest += 0x2;
-       low_data = (data & 0x0000ffff);
-
-       s_addr[0x5555] = 0x00AA;
-       s_addr[0x2AAA] = 0x0055;
-       s_addr[0x5555] = 0x00A0;
-       *((vu_short *)dest) = low_data;
-
-#else
-       addr[0x5555] = 0x00AA00AA;
-       addr[0x2AAA] = 0x00550055;
-       addr[0x5555] = 0x00A000A0;
-       *((vu_long *)dest) = data;
-#endif
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-
-#ifdef CONFIG_FLASH_16BIT
-       while ((*((vu_short *)dest) & 0x0080) != (low_data & 0x0080)) {
-#else
-       while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
-#endif
-
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-       return (0);
-}
diff --git a/board/kup/common/kup.c b/board/kup/common/kup.c
deleted file mode 100644 (file)
index 03ab018..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2004
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include "kup.h"
-#include <asm/io.h>
-
-
-int misc_init_f(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile sysconf8xx_t *siu = &immap->im_siu_conf;
-
-       while (in_be32(&siu->sc_sipend) & 0x20000000) {
-               debug("waiting for 5V VCC\n");
-       }
-
-       /* RS232 / RS485 default is RS232 */
-       clrbits_be16(&immap->im_ioport.iop_padat, PA_RS485);
-       clrbits_be16(&immap->im_ioport.iop_papar, PA_RS485);
-       clrbits_be16(&immap->im_ioport.iop_paodr, PA_RS485);
-       setbits_be16(&immap->im_ioport.iop_padir, PA_RS485);
-
-       /* IO Reset min 1 msec */
-       setbits_be16(&immap->im_ioport.iop_padat,
-                                (PA_RESET_IO_01 | PA_RESET_IO_02));
-       clrbits_be16(&immap->im_ioport.iop_papar,
-                                (PA_RESET_IO_01 | PA_RESET_IO_02));
-       clrbits_be16(&immap->im_ioport.iop_paodr,
-                                (PA_RESET_IO_01 | PA_RESET_IO_02));
-       setbits_be16(&immap->im_ioport.iop_padir,
-                                (PA_RESET_IO_01 | PA_RESET_IO_02));
-       udelay(1000);
-       clrbits_be16(&immap->im_ioport.iop_padat,
-                                (PA_RESET_IO_01 | PA_RESET_IO_02));
-       return (0);
-}
-
-#ifdef CONFIG_IDE_LED
-void ide_led(uchar led, uchar status)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-
-       /* We have one led for both pcmcia slots */
-       if (status)
-               clrbits_be16(&immap->im_ioport.iop_padat, PA_LED_YELLOW);
-       else
-               setbits_be16(&immap->im_ioport.iop_padat, PA_LED_YELLOW);
-}
-#endif
-
-void poweron_key(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-
-       clrbits_be16(&immap->im_ioport.iop_pcpar, PC_SWITCH1);
-       clrbits_be16(&immap->im_ioport.iop_pcdir, PC_SWITCH1);
-
-       if (in_be16(&immap->im_ioport.iop_pcdat) & (PC_SWITCH1))
-               setenv("key1", "off");
-       else
-               setenv("key1", "on");
-}
diff --git a/board/kup/common/kup.h b/board/kup/common/kup.h
deleted file mode 100644 (file)
index a1369ae..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * (C) Copyright 2004
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __KUP_H
-#define __KUP_H
-
-#define PA_8   0x0080
-#define PA_9   0x0040
-#define PA_10  0x0020
-#define PA_11  0x0010
-#define PA_12  0x0008
-
-#define PB_14  0x00020000
-#define PB_15  0x00010000
-#define PB_16  0x00008000
-#define PB_17  0x00004000
-
-#define PC_4   0x0800
-#define PC_5   0x0400
-#define PC_9   0x0040
-
-#define PA_RS485       PA_11   /* SCC1: 0=RS232 1=RS485 */
-#define PA_LED_YELLOW  PA_8
-#define PA_RESET_IO_01 PA_9    /* Reset left IO */
-#define PA_RESET_IO_02 PA_10   /* Reset right IO */
-#define PB_PROG_IO_01  PB_15   /* Program left IO */
-#define PB_PROG_IO_02  PB_16   /* Program right IO */
-#define BP_USB_VCC     PB_14   /* VCC for USB devices 0=vcc on, 1=vcc off */
-#define PB_LCD_PWM     PB_17   /* PB 17 */
-#define PC_SWITCH1     PC_9    /* Reboot switch */
-
-
-extern void poweron_key(void);
-extern void load_sernum_ethaddr(void);
-
-#endif /* __KUP_H */
diff --git a/board/kup/common/load_sernum_ethaddr.c b/board/kup/common/load_sernum_ethaddr.c
deleted file mode 100644 (file)
index 20fe799..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/*-----------------------------------------------------------------------
- * Process Hardware Information Block:
- *
- * If we boot on a system fresh from factory, check if the Hardware
- * Information Block exists and save the information it contains.
- *
- * The KUP Hardware Information Block is defined as
- * follows:
- * - located in first flash bank
- * - starts at offset CONFIG_SYS_HWINFO_OFFSET
- * - size CONFIG_SYS_HWINFO_SIZE
- *
- * Internal structure:
- * - sequence of ASCII character lines
- * - fields separated by <CR><LF>
- * - last field terminated by NUL character (0x00)
- *
- * Fields in Hardware Information Block:
- * 1) Module Type
- * 2) MAC Address
- * 3) ....
- */
-
-
-#define ETHADDR_TOKEN "ethaddr="
-#define LCD_TOKEN "lcd="
-
-void load_sernum_ethaddr (void)
-{
-       unsigned char *hwi;
-       char *var;
-       unsigned char hwi_stack[CONFIG_SYS_HWINFO_SIZE];
-       char *p;
-
-       hwi = (unsigned char *) (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_HWINFO_OFFSET);
-       if (*((unsigned long *) hwi) != (unsigned long) CONFIG_SYS_HWINFO_MAGIC) {
-               printf ("HardwareInfo not found!\n");
-               return;
-       }
-       memcpy (hwi_stack, hwi, CONFIG_SYS_HWINFO_SIZE);
-
-       /*
-        ** ethaddr
-        */
-       var = strstr ((char *)hwi_stack, ETHADDR_TOKEN);
-       if (var) {
-               var += sizeof (ETHADDR_TOKEN) - 1;
-               p = strchr (var, '\r');
-               if ((unsigned char *)p < hwi + CONFIG_SYS_HWINFO_SIZE) {
-                       *p = '\0';
-                       setenv ("ethaddr", var);
-                       *p = '\r';
-               }
-       }
-       /*
-        ** lcd
-        */
-       var = strstr ((char *)hwi_stack, LCD_TOKEN);
-       if (var) {
-               var += sizeof (LCD_TOKEN) - 1;
-               p = strchr (var, '\r');
-               if ((unsigned char *)p < hwi + CONFIG_SYS_HWINFO_SIZE) {
-                       *p = '\0';
-                       setenv ("lcd", var);
-                       *p = '\r';
-               }
-       }
-}
diff --git a/board/kup/common/pcmcia.c b/board/kup/common/pcmcia.c
deleted file mode 100644 (file)
index 61ba586..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if defined(CONFIG_CMD_PCMCIA)
-#define        CONFIG_PCMCIA
-#endif
-
-#if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define        CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "KUP"
-
-#define KUP4K_PCMCIA_B_3V3 (0x00020000)
-
-int pcmcia_hardware_enable(int slot)
-{
-       volatile cpm8xx_t       *cp;
-       volatile pcmconf8xx_t   *pcmp;
-       volatile sysconf8xx_t   *sysp;
-       uint reg, mask;
-
-       debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       udelay(10000);
-
-       sysp  = (sysconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_siu_conf));
-       pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-       cp    = (cpm8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_cpm));
-
-       /*
-        * Configure SIUMCR to enable PCMCIA port B
-        * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
-        */
-       sysp->sc_siumcr &= ~SIUMCR_DBGC11;      /* set DBGC to 00 */
-
-       /* clear interrupt state, and disable interrupts */
-       pcmp->pcmc_pscr =  PCMCIA_MASK(slot);
-       pcmp->pcmc_per &= ~PCMCIA_MASK(slot);
-
-       /*
-        * Disable interrupts, DMA, and PCMCIA buffers
-        * (isolate the interface) and assert RESET signal
-        */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(slot) = reg;
-       udelay(2500);
-
-       /*
-        * Configure Port B pins for
-        * 3 Volts enable
-        */
-       if (slot) { /* Slot A is built-in */
-               cp->cp_pbdir |=  KUP4K_PCMCIA_B_3V3;
-               cp->cp_pbpar &= ~KUP4K_PCMCIA_B_3V3;
-               /* remove all power */
-               cp->cp_pbdat |=  KUP4K_PCMCIA_B_3V3; /* active low */
-       }
-       /*
-        * Make sure there is a card in the slot, then configure the interface.
-        */
-       udelay(10000);
-       debug ("[%d] %s: PIPR(%p)=0x%x\n",
-              __LINE__,__FUNCTION__,
-              &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
-       if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
-               printf ("   No Card found\n");
-               return (1);
-       }
-
-       /*
-        * Power On.
-        */
-       printf("%s  Slot %c:", slot ? "" : "\n", 'A' + slot);
-       mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
-       reg  = pcmp->pcmc_pipr;
-       debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
-              reg,
-              (reg&PCMCIA_VS1(slot))?"n":"ff",
-              (reg&PCMCIA_VS2(slot))?"n":"ff");
-       if ((reg & mask) == mask) {
-               puts (" 5.0V card found: NOT SUPPORTED !!!\n");
-       } else {
-               if(slot)
-                       cp->cp_pbdat &= ~KUP4K_PCMCIA_B_3V3;
-               puts (" 3.3V card found: ");
-       }
-#if 0
-       /*  VCC switch error flag, PCMCIA slot INPACK_ pin */
-       cp->cp_pbdir &= ~(0x0020 | 0x0010);
-       cp->cp_pbpar &= ~(0x0020 | 0x0010);
-       udelay(500000);
-#endif
-       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(slot);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(slot) = reg;
-
-       udelay(250000); /* some cards need >150 ms to come up :-( */
-
-       debug ("# hardware_enable done\n");
-
-       return (0);
-}
-
-
-#if defined(CONFIG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
-       volatile immap_t        *immap;
-       volatile cpm8xx_t       *cp;
-       volatile pcmconf8xx_t   *pcmp;
-       u_long reg;
-
-       debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-       pcmp = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-       cp    = (cpm8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_cpm));
-
-       /* remove all power */
-       if (slot)
-               cp->cp_pbdat |= KUP4K_PCMCIA_B_3V3;
-
-       /* Configure PCMCIA General Control Register */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(slot) = reg;
-
-       udelay(10000);
-
-       return (0);
-}
-#endif
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
-       volatile cpm8xx_t       *cp;
-       volatile pcmconf8xx_t   *pcmp;
-       u_long reg;
-
-       debug ("voltage_set: "  \
-                       PCMCIA_BOARD_MSG        \
-                       " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
-       'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
-       if (!slot) /* Slot A is not configurable */
-               return 0;
-
-       pcmp = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-       cp    = (cpm8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_cpm));
-
-       /*
-        * Disable PCMCIA buffers (isolate the interface)
-        * and assert RESET signal
-        */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = PCMCIA_PGCRX(slot);
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(slot) = reg;
-       udelay(500);
-
-       debug ("PCMCIA power OFF\n");
-       /*
-        * Configure Port B pins for
-        * 3 Volts enable
-        */
-       cp->cp_pbdir |=  KUP4K_PCMCIA_B_3V3;
-       cp->cp_pbpar &= ~KUP4K_PCMCIA_B_3V3;
-       /* remove all power */
-       cp->cp_pbdat |=  KUP4K_PCMCIA_B_3V3; /* active low */
-
-       switch(vcc) {
-               case  0:                break;
-               case 33:
-                       cp->cp_pbdat &= ~KUP4K_PCMCIA_B_3V3;
-                       debug ("PCMCIA powered at 3.3V\n");
-                       break;
-               case 50:
-                       debug ("PCMCIA: 5Volt vcc not supported\n");
-                       break;
-               default:
-                       puts("PCMCIA: vcc not supported");
-                       break;
-       }
-       udelay(10000);
-       /* Checking supported voltages */
-
-       debug ("PIPR: 0x%x --> %s\n",
-              pcmp->pcmc_pipr,
-              (pcmp->pcmc_pipr & (0x80000000 >> (slot << 4)))
-                              ? "only 5 V --> NOT SUPPORTED"
-       : "can do 3.3V");
-
-
-       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(slot);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(slot) = reg;
-       udelay(500);
-
-       debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
-              slot+'A');
-       return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/kup/kup4k/Kconfig b/board/kup/kup4k/Kconfig
deleted file mode 100644 (file)
index 903c341..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_KUP4K
-
-config SYS_BOARD
-       default "kup4k"
-
-config SYS_VENDOR
-       default "kup"
-
-config SYS_CONFIG_NAME
-       default "KUP4K"
-
-endif
diff --git a/board/kup/kup4k/MAINTAINERS b/board/kup/kup4k/MAINTAINERS
deleted file mode 100644 (file)
index 25d90cf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-KUP4K BOARD
-M:     Klaus Heydeck <heydeck@kieback-peter.de>
-S:     Maintained
-F:     board/kup/kup4k/
-F:     include/configs/KUP4K.h
-F:     configs/KUP4K_defconfig
diff --git a/board/kup/kup4k/Makefile b/board/kup/kup4k/Makefile
deleted file mode 100644 (file)
index c896fcd..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = kup4k.o ../common/flash.o ../common/kup.o ../common/load_sernum_ethaddr.o ../common/pcmcia.o
diff --git a/board/kup/kup4k/kup4k.c b/board/kup/kup4k/kup4k.c
deleted file mode 100644 (file)
index a4c1998..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <libfdt.h>
-#include <mpc8xx.h>
-#include <hwconfig.h>
-#include <i2c.h>
-#include "../common/kup.h"
-#include <asm/io.h>
-
-static unsigned char swapbyte(unsigned char c);
-static int read_diag(void);
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ----------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
-       0x1FF77C47,             /* last */
-
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0x1FF77C35, 0xEFEABC34, 0x1FB57C35,     /* last */
-
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
-       0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x1F27FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
-       0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47,     /* last */
-       _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07, /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x7FFFFC07,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ----------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       uchar rev,mod,tmp,pcf,ak_rev,ak_mod;
-
-       /*
-        * Init ChipSelect #4 (CAN + HW-Latch)
-        */
-       out_be32(&immap->im_memctl.memc_or4, CONFIG_SYS_OR4);
-       out_be32(&immap->im_memctl.memc_br4, CONFIG_SYS_BR4);
-
-       /*
-        * Init ChipSelect #5 (S1D13768)
-        */
-       out_be32(&immap->im_memctl.memc_or5, CONFIG_SYS_OR5);
-       out_be32(&immap->im_memctl.memc_br5, CONFIG_SYS_BR5);
-
-       tmp = swapbyte(in_8((unsigned char*) LATCH_ADDR));
-       rev = (tmp & 0xF8) >> 3;
-       mod = (tmp & 0x07);
-
-       i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-
-       if (read_diag())
-               gd->flags &= ~GD_FLG_SILENT;
-
-       printf("Board: KUP4K Rev %d.%d AK:",rev,mod);
-       /*
-        * TI Application report: Before using the IO as an input,
-        * a high must be written to the IO first
-        */
-       pcf = 0xFF;
-       i2c_write(0x21, 0, 0 , &pcf, 1);
-       if (i2c_read(0x21, 0, 0, &pcf, 1)) {
-               puts("n/a\n");
-       } else {
-               ak_rev = (pcf & 0xF8) >> 3;
-               ak_mod = (pcf & 0x07);
-               printf("%d.%d\n", ak_rev, ak_mod);
-       }
-       return 0;
-}
-
-/* ----------------------------------------------------------------------- */
-
-
-phys_size_t initdram(int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size = 0;
-       uchar *latch, rev, tmp;
-
-       /*
-        * Init ChipSelect #4 (CAN + HW-Latch) to determine Hardware Revision
-        * Rev 1..6 -> 48 MB RAM;   Rev >= 7 -> 96 MB
-        */
-       out_be32(&immap->im_memctl.memc_or4, CONFIG_SYS_OR4);
-       out_be32(&immap->im_memctl.memc_br4, CONFIG_SYS_BR4);
-
-       latch = (uchar *)0x90000200;
-       tmp = swapbyte(*latch);
-       rev = (tmp & 0xF8) >> 3;
-
-       upmconfig(UPMA, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       out_be16(&memctl->memc_mptpr, CONFIG_SYS_MPTPR);
-
-       out_be32(&memctl->memc_mar, 0x00000088);
-       /* no refresh yet */
-       if(rev >= 7) {
-               out_be32(&memctl->memc_mamr,
-                                CONFIG_SYS_MAMR_9COL & (~(MAMR_PTAE)));
-       } else {
-               out_be32(&memctl->memc_mamr,
-                                CONFIG_SYS_MAMR_8COL & (~(MAMR_PTAE)));
-       }
-
-       udelay(200);
-
-       /* perform SDRAM initializsation sequence */
-
-       /* SDRAM bank 0 */
-       out_be32(&memctl->memc_mcr, 0x80002105);
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80002830); /* execute twice */
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80002106); /* RUN MRS Pattern from loc 6 */
-       udelay(1);
-
-       /* SDRAM bank 1 */
-       out_be32(&memctl->memc_mcr, 0x80004105);
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80004830); /* execute twice */
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80004106); /* RUN MRS Pattern from loc 6 */
-       udelay(1);
-
-       /* SDRAM bank 2 */
-       out_be32(&memctl->memc_mcr, 0x80006105);
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80006830); /* execute twice */
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80006106); /* RUN MRS Pattern from loc 6 */
-       udelay(1);
-
-       setbits_be32(&memctl->memc_mamr, MAMR_PTAE); /* enable refresh */
-       udelay(1000);
-
-       out_be16(&memctl->memc_mptpr, CONFIG_SYS_MPTPR);
-       udelay(1000);
-       if(rev >= 7) {
-               size = 32 * 3 * 1024 * 1024;
-               out_be32(&memctl->memc_or1, CONFIG_SYS_OR1_9COL);
-               out_be32(&memctl->memc_br1, CONFIG_SYS_BR1_9COL);
-               out_be32(&memctl->memc_or2, CONFIG_SYS_OR2_9COL);
-               out_be32(&memctl->memc_br2, CONFIG_SYS_BR2_9COL);
-               out_be32(&memctl->memc_or3, CONFIG_SYS_OR3_9COL);
-               out_be32(&memctl->memc_br3, CONFIG_SYS_BR3_9COL);
-       } else {
-               size = 16 * 3 * 1024 * 1024;
-               out_be32(&memctl->memc_or1, CONFIG_SYS_OR1_8COL);
-               out_be32(&memctl->memc_br1, CONFIG_SYS_BR1_8COL);
-               out_be32(&memctl->memc_or2, CONFIG_SYS_OR2_8COL);
-               out_be32(&memctl->memc_br2, CONFIG_SYS_BR2_8COL);
-               out_be32(&memctl->memc_or3, CONFIG_SYS_OR3_8COL);
-               out_be32(&memctl->memc_br3, CONFIG_SYS_BR3_8COL);
-       }
-       return (size);
-}
-
-/* ----------------------------------------------------------------------- */
-
-
-int misc_init_r(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-
-#ifdef CONFIG_IDE_LED
-       /* Configure PA8 as output port */
-       setbits_be16(&immap->im_ioport.iop_padir, PA_8);
-       setbits_be16(&immap->im_ioport.iop_paodr, PA_8);
-       clrbits_be16(&immap->im_ioport.iop_papar, PA_8);
-       setbits_be16(&immap->im_ioport.iop_padat, PA_8); /* turn it off */
-#endif
-       load_sernum_ethaddr();
-       setenv("hw","4k");
-       poweron_key();
-       return (0);
-}
-
-
-static int read_diag(void)
-{
-       int diag;
-       immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-
-       clrbits_be16(&immr->im_ioport.iop_pcdir, PC_4); /* input */
-       clrbits_be16(&immr->im_ioport.iop_pcpar, PC_4); /* gpio */
-       setbits_be16(&immr->im_ioport.iop_pcdir, PC_5); /* output */
-       clrbits_be16(&immr->im_ioport.iop_pcpar, PC_4); /* gpio */
-       setbits_be16(&immr->im_ioport.iop_pcdat, PC_5); /* 1 */
-       udelay(500);
-       if (in_be16(&immr->im_ioport.iop_pcdat) & PC_4) {
-               clrbits_be16(&immr->im_ioport.iop_pcdat, PC_5);/* 0 */
-               udelay(500);
-               if(in_be16(&immr->im_ioport.iop_pcdat) & PC_4)
-                       diag = 0;
-               else
-                       diag = 1;
-       } else {
-               diag = 0;
-       }
-       clrbits_be16(&immr->im_ioport.iop_pcdir, PC_5); /* input */
-       return (diag);
-}
-
-static unsigned char swapbyte(unsigned char c)
-{
-       unsigned char result = 0;
-       int i = 0;
-
-       for(i = 0; i < 8; ++i) {
-               result = result << 1;
-               result |= (c & 1);
-               c = c >> 1;
-       }
-       return result;
-}
-
-/*
- * Device Tree Support
- */
-#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
-void ft_board_setup(void *blob, bd_t *bd)
-{
-       ft_cpu_setup(blob, bd);
-}
-#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
diff --git a/board/kup/kup4k/u-boot.lds.debug b/board/kup/kup4k/u-boot.lds.debug
deleted file mode 100644 (file)
index 0ea27e8..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    common/dlmalloc.o  (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/kup/kup4x/Kconfig b/board/kup/kup4x/Kconfig
deleted file mode 100644 (file)
index eeb5d83..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_KUP4X
-
-config SYS_BOARD
-       default "kup4x"
-
-config SYS_VENDOR
-       default "kup"
-
-config SYS_CONFIG_NAME
-       default "KUP4X"
-
-endif
diff --git a/board/kup/kup4x/MAINTAINERS b/board/kup/kup4x/MAINTAINERS
deleted file mode 100644 (file)
index 85159e4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-KUP4X BOARD
-M:     Klaus Heydeck <heydeck@kieback-peter.de>
-S:     Maintained
-F:     board/kup/kup4x/
-F:     include/configs/KUP4X.h
-F:     configs/KUP4X_defconfig
diff --git a/board/kup/kup4x/Makefile b/board/kup/kup4x/Makefile
deleted file mode 100644 (file)
index 6945943..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = kup4x.o ../common/flash.o ../common/kup.o ../common/load_sernum_ethaddr.o ../common/pcmcia.o
diff --git a/board/kup/kup4x/kup4x.c b/board/kup/kup4x/kup4x.c
deleted file mode 100644 (file)
index 0e51bd1..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <post.h>
-#include "../common/kup.h"
-#include <asm/io.h>
-
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
-       0x1FF77C47,             /* last */
-
-       /*
-        * SDRAM Initialization (offset 5 in UPMA RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0x1FF77C35, 0xEFEABC34, 0x1FB57C35,     /* last */
-
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
-       0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x1F27FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
-       0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47,     /* last */
-       _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07, /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x7FFFFC07,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       uchar latch, rev, mod;
-
-       /*
-        * Init ChipSelect #4 (CAN + HW-Latch)
-        */
-       out_be32(&memctl->memc_or4, 0xFFFF8926);
-       out_be32(&memctl->memc_br4, 0x90000401);
-
-       latch = in_8( (unsigned char *) LATCH_ADDR);
-       rev = (latch & 0xF8) >> 3;
-       mod = (latch & 0x03);
-
-       printf("Board: KUP4X Rev %d.%d\n", rev, mod);
-
-       return 0;
-}
-
-
-phys_size_t initdram(int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       upmconfig(UPMA, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       out_be16(&memctl->memc_mptpr, CONFIG_SYS_MPTPR);
-
-       out_be32(&memctl->memc_mar, 0x00000088);
-
-       out_be32(&memctl->memc_mamr,
-                CONFIG_SYS_MAMR & (~(MAMR_PTAE))); /* no refresh yet */
-
-       udelay(200);
-
-       /* perform SDRAM initializsation sequence */
-
-       /* SDRAM bank 0 */
-       out_be32(&memctl->memc_mcr, 0x80002105);
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80002830); /* execute twice */
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80002106); /* RUN MRS Pattern from loc 6 */
-       udelay(1);
-
-       /* SDRAM bank 1 */
-       out_be32(&memctl->memc_mcr, 0x80004105);
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80004830); /* execute twice */
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80004106); /* RUN MRS Pattern from loc 6 */
-       udelay(1);
-
-       /* SDRAM bank 2 */
-       out_be32(&memctl->memc_mcr, 0x80006105);
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80006830); /* execute twice */
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x80006106); /* RUN MRS Pattern from loc 6 */
-       udelay(1);
-
-       /* SDRAM bank 3 */
-       out_be32(&memctl->memc_mcr, 0x8000C105);
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x8000C830); /* execute twice */
-       udelay(1);
-       out_be32(&memctl->memc_mcr, 0x8000C106); /* RUN MRS Pattern from loc 6 */
-       udelay(1);
-
-       setbits_be32(&memctl->memc_mamr, MAMR_PTAE); /* enable refresh */
-
-       udelay(1000);
-       /* 4 x 16 MB */
-       out_be16(&memctl->memc_mptpr, CONFIG_SYS_MPTPR);
-       udelay(1000);
-       out_be32(&memctl->memc_or1, 0xFF000A00);
-       out_be32(&memctl->memc_br1, 0x00000081);
-       out_be32(&memctl->memc_or2, 0xFE000A00);
-       out_be32(&memctl->memc_br2, 0x01000081);
-       out_be32(&memctl->memc_or3, 0xFD000A00);
-       out_be32(&memctl->memc_br3, 0x02000081);
-       out_be32(&memctl->memc_or6, 0xFC000A00);
-       out_be32(&memctl->memc_br6, 0x03000081);
-       udelay(10000);
-
-       return (4 * 16 * 1024 * 1024);
-}
-
-int misc_init_r(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-
-#ifdef CONFIG_IDE_LED
-       /* Configure PA8 as output port */
-       setbits_be16(&immap->im_ioport.iop_padir, PA_8);
-       setbits_be16(&immap->im_ioport.iop_paodr, PA_8);
-       clrbits_be16(&immap->im_ioport.iop_papar, PA_8);
-       setbits_be16(&immap->im_ioport.iop_padat, PA_8); /* turn it off */
-#endif
-       load_sernum_ethaddr();
-       setenv("hw", "4x");
-       poweron_key();
-       return 0;
-}
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds
deleted file mode 100644 (file)
index 0eb2fba..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/kup/kup4x/u-boot.lds.debug b/board/kup/kup4x/u-boot.lds.debug
deleted file mode 100644 (file)
index 0ea27e8..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    common/dlmalloc.o  (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 1fd9f2cf01cd612dbee9036e463998e24119fa54..609edf1e5c9a9386edcc9eb7b132a0e6fd600c42 100644 (file)
@@ -128,6 +128,13 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
+
 #ifdef CONFIG_SMC911X
 /* GPMC CS1 settings for Logic SOM LV/Torpedo LAN92xx Ethernet chip */
 static const u32 gpmc_lan92xx_config[] = {
index 9ef002637a665f7e405e5873bddee8f640da49af..d39203a9176e825fc956cf029be6f4b24bbd401a 100644 (file)
@@ -109,6 +109,11 @@ int board_mmc_init(bd_t *bis)
 {
        return omap_mmc_init(0, 0, 0, -1, -1);
 }
+
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
 #endif
 
 #ifdef CONFIG_CMD_NET
diff --git a/board/lwmon/Kconfig b/board/lwmon/Kconfig
deleted file mode 100644 (file)
index e98c794..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_LWMON
-
-config SYS_BOARD
-       default "lwmon"
-
-config SYS_CONFIG_NAME
-       default "lwmon"
-
-endif
diff --git a/board/lwmon/MAINTAINERS b/board/lwmon/MAINTAINERS
deleted file mode 100644 (file)
index 763ce22..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-LWMON BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/lwmon/
-F:     include/configs/lwmon.h
-F:     configs/lwmon_defconfig
diff --git a/board/lwmon/Makefile b/board/lwmon/Makefile
deleted file mode 100644 (file)
index 599a613..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = lwmon.o flash.o pcmcia.o
diff --git a/board/lwmon/README.keybd b/board/lwmon/README.keybd
deleted file mode 100644 (file)
index 5e5144e..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-
-Tastaturabfrage:
-
-Die Implementierung / Decodierung beruht auf den Angaben aus dem  Do-
-kument  "PIC LWE-Tastatur" in der Fassung vom 9. 3. 2001, insbesonde-
-re Tabelle 3 im Kapitel 4.3 Tastencodes. In  U-Boot  werden  die  vom
-Keyboard-Controller  gelesenen Daten hexadezimal codiert in der auto-
-matisch angelegten Environment-Variablen "keybd" übergeben. Ist  kei-
-ne Taste gedrückt worden, steht dort:
-
-       keybd=000000000000000000
-
-Der decodierte Tastencode ("keybd") kann mit den  "bootargs"  an  den
-Linux-Kernel  übergeben  und  dort z. B. in einem Device-Treiber oder
-einer Applikation ausgewertet werden.
-
-
-Sonderfunktionen beim Booten:
-
-Es lassen sich eine oder mehrere (beliebig viele) Tasten oder Tasten-
-kombinationen definieren, die Sonderfunktionen auslösen,  wenn  diese
-Tasten beim Booten (Reset) gedrückt sind.
-
-Wird eine eingestellte Taste bzw. Tastenkombination erkannt, so  wird
-in  U-Boot noch vor dem Start des "Countdown" und somit vor jedem an-
-deren Kommando der Inhalt einer dieser Taste  bzw.  Tastenkombination
-zugeordneten Environment-Variablen ausführen.
-
-
-Die Environment-Variable "magic_keys" wird als Liste von Zeichen ver-
-standen, die als Suffix an den Namen "key_magic" angefügt werden  und
-so  die  Namen  der  Environment-Variablen  definieren, mit denen die
-Tasten (-kombinationen) festgelegt werden:
-
-Ist "magic_keys" NICHT definiert, so wird nur die in der Environment-
-Variablen "key_magic" codierte  Tasten  (-kombination)  geprüft,  und
-ggf.  der  Inhalt der Environment-Variablen "key_cmd" ausgeführt (ge-
-nauer: der Inhalt von "key_cmd" wird der Variablen "preboot" zugewie-
-sen, die ausgeführt wird, unmittelbar bevor die interaktive Kommando-
-interpretation beginnt).
-
-Enthält "magic_keys" z. B.  die  Zeichenkette  "0123CB*",  so  werden
-nacheinander folgende Aktionen ausgeführt:
-
-       prüfe Tastencode       ggf. führe aus Kommando
-       in Variable             in Variable
-       -----------------------------------
-       key_magic0      ==>     key_cmd0
-       key_magic1      ==>     key_cmd1
-       key_magic2      ==>     key_cmd2
-       key_magic3      ==>     key_cmd3
-       key_magicC      ==>     key_cmdC
-       key_magicB      ==>     key_cmdB
-       key_magicA      ==>     key_cmdA
-       key_magic*      ==>     key_cmd*
-
-Hinweis: sobald ein aktivierter Tastencode erkannt  wurde,  wird  die
-Bearbeitung  abgebrochen; es wird daher höchstens eines der definier-
-ten Kommandos ausgeführt, wobei die Priorität durch  die  Suchreihen-
-folge  festgelegt wird, also durch die Reihenfolge der Zeichen in der
-Varuiablen "magic_keys".
-
-
-Die Codierung der Tasten, die beim Booten gedrückt werden müssen, um
-eine Funktion auszulösen, erfolgt nach der Tastaturtabelle.
-
-Die Definitionen
-
-       => setenv key_magic0 3a+3b
-       => setenv key_cmd0 setenv bootdelay 30
-
-bedeuten dementsprechend, daß die Tasten mit den  Codes  0x3A  (Taste
-"F1")  und 0x3B (Taste "F2") gleichzeitig gedrückt werden müssen. Sie
-können dort eine beliebige  Tastenkombination  eintragen  (jeweils  2
-Zeichen für die Hex-Codes der Tasten, und '+' als Trennzeichen).
-
-Wird die eingestellte Tastenkombination erkannt, so  wird  in  U-Boot
-noch  vor  dem Start des "Countdown" und somit vor jedem anderen Kom-
-mando das angebene Kommando ausgeführt und  somit  ein  langes  Boot-
-Delay eingetragen.
-
-Praktisch könnten Sie also in U-Boot "bootdelay"  auf  0  setzen  und
-somit  stets  ohne  jede  User-Interaktion automatisch booten, außer,
-wenn die beiden Tasten "F1" und "F2"  beim  Booten  gedrückt  werden:
-dann würde ein Boot-Delay von 30 Sekunden eingefügt.
-
-
-Hinweis: dem Zeichen '#' kommt innerhalb von "magic_keys" eine beson-
-dere Bedeutung zu: die dadurch definierte  Key-Sequenz  schaltet  den
-Monitor in den "Debug-Modus" - das bedeutet zunächst, daß alle weite-
-ren  Meldungen  von  U-Boot  über  das LCD-Display ausgegeben werden;
-außerdem kann man durch das mit dieser  Tastenkombination  verknüpfte
-Kommando  z. B. die Linux-Bootmeldungen ebenfalls auf das LCD-Display
-legen, so daß der Boot-Vorgang direkt und  ohne  weitere  Hilfsmittel
-analysiert werden kann.
-
-Beispiel:
-
-In U-Boot werden folgende Environment-Variablen gesetzt und abgespei-
-chert:
-
-(1)    => setenv magic_keys 01234#X
-(2)    => setenv key_cmd# setenv addfb setenv bootargs \\${bootargs} console=tty0 console=ttyS1,\\${baudrate}
-(3)    => setenv nfsargs setenv bootargs root=/dev/nfs rw nfsroot=\${serverip}:\${rootpath}
-(4)    => setenv addip setenv bootargs \${bootargs} ip=\${ipaddr}:\${serverip}:\${gatewayip}:\${netmask}:\${hostname}::off panic=1
-(5)    => setenv addfb setenv bootargs \${bootargs} console=ttyS1,\${baudrate}
-(6)    => setenv bootcmd bootp\;run nfsargs\;run addip\;run addfb\;bootm
-
-Hierbei wird die Linux Commandline (in der Variablen  "bootargs")  im
-Boot-Kommando  "bootcmd"  (6)  schrittweise zusammengesetzt: zunächst
-werden die für Root-Filesystem über NFS erforderlichen  Optionen  ge-
-setzt  ("run  nfsargs", vgl. (3)), dann die Netzwerkkonfiguration an-
-gefügt ("run addip", vgl. (4)),  und  schließlich  die  Systemconsole
-definiert ("run addfb").
-
-Dabei wird im Normalfall die Definition (5)  verwendt;  wurde  aller-
-dings  beim  Reset die entsprechende Taste gedrückt gehalten, so wird
-diese Definition bei der Ausführung des in (2) definierten  Kommandos
-überschrieben,  so  daß  Linux die Bootmeldungen auch über das Frame-
-buffer-Device (=LCD-Display) ausgibt.
-
-Beachten Sie die Verdoppelung der '\'-Escapes in der  Definition  von
-"key_cmd#" - diese ist erforderlich, weil der String _zweimal_ inter-
-pretiert  wird:  das  erste  Mal  bei der Eingabe von "key_cmd#", das
-zweite Mal, wenn der String (als  Inhalt  von  "preboot")  ausgeführt
-wird.
diff --git a/board/lwmon/flash.c b/board/lwmon/flash.c
deleted file mode 100644 (file)
index cb60c41..0000000
+++ /dev/null
@@ -1,632 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*---------------------------------------------------------------------*/
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, ulong data);
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-static int write_data_buf (flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size_b0, size_b1;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       debug ("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0: "
-                       "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
-                       flash_info[0].flash_id,
-                       size_b0, size_b0<<20);
-       }
-
-       debug ("## Get flash bank 2 size @ 0x%08x\n",FLASH_BASE1_PRELIM);
-
-       size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
-       debug ("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
-       if (size_b1 > size_b0) {
-               printf ("## ERROR: "
-                       "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
-                       size_b1, size_b1<<20,
-                       size_b0, size_b0<<20
-               );
-               flash_info[0].flash_id  = FLASH_UNKNOWN;
-               flash_info[1].flash_id  = FLASH_UNKNOWN;
-               flash_info[0].sector_count      = -1;
-               flash_info[1].sector_count      = -1;
-               flash_info[0].size              = 0;
-               flash_info[1].size              = 0;
-               return (0);
-       }
-
-       debug  ("## Before remap: "
-               "BR0: 0x%08x    OR0: 0x%08x    "
-               "BR1: 0x%08x    OR1: 0x%08x\n",
-               memctl->memc_br0, memctl->memc_or0,
-               memctl->memc_br1, memctl->memc_or1);
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = (-size_b0 & 0xFFFF8000) | CONFIG_SYS_OR_TIMING_FLASH |
-                               OR_CSNT_SAM | OR_ACS_DIV1;
-       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_PS_32 | BR_V;
-
-       debug ("## BR0: 0x%08x    OR0: 0x%08x\n",
-               memctl->memc_br0, memctl->memc_or0);
-
-       /* Re-do sizing to get full correct info */
-       size_b0 = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       if (size_b1) {
-               memctl->memc_or1 = (-size_b1 & 0xFFFF8000) | CONFIG_SYS_OR_TIMING_FLASH |
-                                       OR_CSNT_SAM | OR_ACS_DIV1;
-               memctl->memc_br1 = ((CONFIG_SYS_FLASH_BASE + size_b0) & BR_BA_MSK) |
-                                       BR_PS_32 | BR_V;
-
-               debug ("## BR1: 0x%08x    OR1: 0x%08x\n",
-                       memctl->memc_br1, memctl->memc_or1);
-
-               /* Re-do sizing to get full correct info */
-               size_b1 = flash_get_size((vu_long *)(CONFIG_SYS_FLASH_BASE + size_b0),
-                                         &flash_info[1]);
-
-               flash_info[1].size = size_b1;
-
-               flash_get_offsets (CONFIG_SYS_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-               /* monitor protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_SYS_MONITOR_BASE,
-                             CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                             &flash_info[1]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-               /* ENV protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_ENV_ADDR,
-                             CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                             &flash_info[1]);
-#endif
-       } else {
-               memctl->memc_br1 = 0;           /* invalidate bank */
-               memctl->memc_or1 = 0;           /* invalidate bank */
-
-               debug ("## DISABLE BR1: 0x%08x    OR1: 0x%08x\n",
-                       memctl->memc_br1, memctl->memc_or1);
-
-               flash_info[1].flash_id = FLASH_UNKNOWN;
-               flash_info[1].sector_count = -1;
-               flash_info[1].size = 0;
-       }
-
-       debug ("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
-       return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:
-           for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = base;
-               base += 0x00020000 * 2;         /* 128k * 2 chips per bank */
-           }
-           return;
-
-       default:
-           printf ("Don't know sector ofsets for flash type 0x%lx\n",
-               info->flash_id);
-           return;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("Fujitsu ");            break;
-       case FLASH_MAN_SST:     printf ("SST ");                break;
-       case FLASH_MAN_STM:     printf ("STM ");                break;
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       case FLASH_MAN_MT:      printf ("MT ");                 break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F320J3A:   printf ("28F320J3A (32Mbit = 128K x 32)\n");
-                               break;
-       case FLASH_28F640J3A:   printf ("28F640J3A (64Mbit = 128K x 64)\n");
-                               break;
-       case FLASH_28F128J3A:   printf ("28F128J3A (128Mbit = 128K x 128)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       if (info->size >= (1 << 20)) {
-               i = 20;
-       } else {
-               i = 10;
-       }
-       printf ("  Size: %ld %cB in %d Sectors\n",
-               info->size >> i,
-               (i == 20) ? 'M' : 'k',
-               info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       ulong value;
-
-       /* Read Manufacturer ID */
-       addr[0] = 0x00900090;
-       value = addr[0];
-
-       debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
-       switch (value) {
-       case AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case FUJ_MANUFACT:
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case SST_MANUFACT:
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case STM_MANUFACT:
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case INTEL_MANUFACT:
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               addr[0] = 0x00FF00FF;           /* restore read mode */
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];                        /* device ID            */
-
-       debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
-       switch (value) {
-       case INTEL_ID_28F320J3A:
-               info->flash_id += FLASH_28F320J3A;
-               info->sector_count = 32;
-               info->size = 0x00400000 * 2;
-               break;                          /* =>  8 MB             */
-
-       case INTEL_ID_28F640J3A:
-               info->flash_id += FLASH_28F640J3A;
-               info->sector_count = 64;
-               info->size = 0x00800000 * 2;
-               break;                          /* => 16 MB             */
-
-       case INTEL_ID_28F128J3A:
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x01000000 * 2;
-               break;                          /* => 32 MB             */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               addr[0] = 0x00FF00FF;           /* restore read mode */
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
-               printf ("** ERROR: sector count %d > max (%d) **\n",
-                       info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
-               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       }
-
-       addr[0] = 0x00FF00FF;           /* restore read mode */
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       debug ("flash_erase: first: %d last: %d\n", s_first, s_last);
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
-               printf ("Can erase only Intel flash types - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_long *addr = (vu_long *)(info->start[sect]);
-                       unsigned long status;
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-                       *addr = 0x00600060;     /* clear lock bit setup */
-                       *addr = 0x00D000D0;     /* clear lock bit confirm */
-
-                       udelay (1000);
-                       /* This takes awfully long - up to 50 ms and more */
-                       while (((status = *addr) & 0x00800080) != 0x00800080) {
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = 0x00FF00FF; /* reset to read mode */
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                               udelay (1000);  /* to trigger the watchdog */
-                       }
-
-                       *addr = 0x00500050;     /* clear status register */
-                       *addr = 0x00200020;     /* erase setup */
-                       *addr = 0x00D000D0;     /* erase confirm */
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((status = *addr) & 0x00800080) != 0x00800080) {
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = 0x00B000B0; /* suspend erase      */
-                                       *addr = 0x00FF00FF; /* reset to read mode */
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                               udelay (1000);  /* to trigger the watchdog */
-                       }
-
-                       *addr = 0x00FF00FF;     /* reset to read mode */
-               }
-       }
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define        FLASH_WIDTH     4       /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-
-       wp = (addr & ~(FLASH_WIDTH-1)); /* get lower FLASH_WIDTH aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<FLASH_WIDTH && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<FLASH_WIDTH; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_data(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += FLASH_WIDTH;
-       }
-
-       /*
-        * handle FLASH_WIDTH aligned part
-        */
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-       while(cnt >= FLASH_WIDTH) {
-               i = CONFIG_SYS_FLASH_BUFFER_SIZE > cnt ?
-                   (cnt & ~(FLASH_WIDTH - 1)) : CONFIG_SYS_FLASH_BUFFER_SIZE;
-               if((rc = write_data_buf(info, wp, src,i)) != 0)
-                       return rc;
-               wp += i;
-               src += i;
-               cnt -=i;
-       }
-#else
-       while (cnt >= FLASH_WIDTH) {
-               data = 0;
-               for (i=0; i<FLASH_WIDTH; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_data(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += FLASH_WIDTH;
-               cnt -= FLASH_WIDTH;
-       }
-#endif /* CONFIG_SYS_FLASH_USE_BUFFER_WRITE */
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<FLASH_WIDTH && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<FLASH_WIDTH; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_data(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Check flash status, returns:
- * 0 - OK
- * 1 - timeout
- */
-static int flash_status_check(vu_long *addr, ulong tout, char * prompt)
-{
-       ulong status;
-       ulong start;
-
-       /* Wait for command completion */
-       start = get_timer (0);
-       while(((status = *addr) & 0x00800080) != 0x00800080) {
-               if (get_timer(start) > tout) {
-                       printf("Flash %s timeout at address %p\n", prompt, addr);
-                       *addr = 0x00FF00FF;     /* restore read mode */
-                       return (1);
-               }
-       }
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_long *addr = (vu_long *)dest;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       *addr = 0x00400040;             /* write setup */
-       *addr = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       if (flash_status_check(addr, CONFIG_SYS_FLASH_WRITE_TOUT, "write") != 0) {
-               return (1);
-       }
-
-       *addr = 0x00FF00FF;     /* restore read mode */
-
-       return (0);
-}
-
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-/*-----------------------------------------------------------------------
- * Write a buffer to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- */
-static int write_data_buf(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-       vu_long *addr = (vu_long *)dest;
-       int sector;
-       int cnt;
-       int retcode;
-       vu_long * src = (vu_long *)cp;
-       vu_long * dst = (vu_long *)dest;
-
-       /* find sector */
-       for(sector = info->sector_count - 1; sector >= 0; sector--) {
-               if(dest >= info->start[sector])
-                       break;
-       }
-
-       *addr = 0x00500050;             /* clear status */
-       *addr = 0x00e800e8;             /* write buffer */
-
-       if((retcode = flash_status_check(addr, CONFIG_SYS_FLASH_BUFFER_WRITE_TOUT,
-                                        "write to buffer")) == 0) {
-               cnt = len / FLASH_WIDTH;
-               *addr = (cnt-1) | ((cnt-1) << 16);
-               while(cnt-- > 0) {
-                       *dst++ = *src++;
-               }
-               *addr = 0x00d000d0;             /* write buffer confirm */
-               retcode = flash_status_check(addr, CONFIG_SYS_FLASH_BUFFER_WRITE_TOUT,
-                                                "buffer write");
-       }
-       *addr = 0x00FF00FF;     /* restore read mode */
-       *addr = 0x00500050;     /* clear status */
-       return retcode;
-}
-#endif /* CONFIG_SYS_USE_FLASH_BUFFER_WRITE */
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/lwmon/lwmon.c b/board/lwmon/lwmon.c
deleted file mode 100644 (file)
index 225b1ef..0000000
+++ /dev/null
@@ -1,1071 +0,0 @@
-/***********************************************************************
- *
-M* Modul:         lwmon.c
-M*
-M* Content:       LWMON specific U-Boot commands.
- *
- * (C) Copyright 2001, 2002
- * DENX Software Engineering
- * Wolfgang Denk, wd@denx.de
- *
-D* Design:        wd@denx.de
-C* Coding:        wd@denx.de
-V* Verification:  dzu@denx.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- ***********************************************************************/
-
-/*---------------------------- Headerfiles ----------------------------*/
-#include <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-#include <i2c.h>
-#include <command.h>
-#include <malloc.h>
-#include <post.h>
-#include <serial.h>
-
-#include <linux/types.h>
-#include <linux/string.h>      /* for strdup */
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*------------------------ Local prototypes ---------------------------*/
-static long int dram_size (long int, long int *, long int);
-static void kbd_init (void);
-static int compare_magic (uchar *kbd_data, uchar *str);
-
-
-/*--------------------- Local macros and constants --------------------*/
-#define        _NOT_USED_      0xFFFFFFFF
-
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void);
-extern void disable_putc(void);
-#endif /* CONFIG_MODEM_SUPPORT */
-
-/*
- * 66 MHz SDRAM access using UPM A
- */
-const uint sdram_table[] =
-{
-#if defined(CONFIG_SYS_MEMORY_75) || defined(CONFIG_SYS_MEMORY_8E)
-       /*
-        * Single Read. (Offset 0 in UPM RAM)
-        */
-       0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBAFC00,
-       0x1FF5FC47, /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPM RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-                   0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
-       /*
-        * Burst Read. (Offset 8 in UPM RAM)
-        */
-       0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00,
-       0xF0AFFC00, 0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPM RAM)
-        */
-       0x1F2DFC04, 0xEEABBC00, 0x01B27C04, 0x1FF5FC47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPM RAM)
-        */
-       0x1F0DFC04, 0xEEABBC00, 0x10A77C00, 0xF0AFFC00,
-       0xF0AFFC00, 0xE1BAFC04, 0x01FF5FC47, /* last */
-                                           _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPM RAM)
-        */
-       0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07, /* last */
-                               _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPM RAM)
-        */
-       0x7FFFFC07, /* last */
-                   0xFFFFFCFF, 0xFFFFFCFF, 0xFFFFFCFF,
-#endif
-#ifdef CONFIG_SYS_MEMORY_7E
-       /*
-        * Single Read. (Offset 0 in UPM RAM)
-        */
-       0x0E2DBC04, 0x11AF7C04, 0xEFBAFC00, 0x1FF5FC47, /* last */
-       _NOT_USED_,
-       /*
-        * SDRAM Initialization (offset 5 in UPM RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-                   0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
-       /*
-        * Burst Read. (Offset 8 in UPM RAM)
-        */
-       0x0E2DBC04, 0x10AF7C04, 0xF0AFFC00, 0xF0AFFC00,
-       0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
-                                           _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPM RAM)
-        */
-       0x0E29BC04, 0x01B27C04, 0x1FF5FC47, /* last */
-                                           _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPM RAM)
-        */
-       0x0E29BC04, 0x10A77C00, 0xF0AFFC00, 0xF0AFFC00,
-       0xE1BAFC04, 0x1FF5FC47, /* last */
-                               _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPM RAM)
-        */
-       0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07, /* last */
-                               _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPM RAM)
-        */
-       0x7FFFFC07, /* last */
-                   0xFFFFFCFF, 0xFFFFFCFF, 0xFFFFFCFF,
-#endif
-};
-
-/*
- * Check Board Identity:
- *
- */
-
-/***********************************************************************
-F* Function:     int checkboard (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  int - 0 is always returned
- *
-Z* Intention:    This function is the checkboard() method implementation
-Z*               for the lwmon board.  Only a standard message is printed.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int checkboard (void)
-{
-       puts ("Board: LICCON Konsole LCD3\n");
-       return (0);
-}
-
-/***********************************************************************
-F* Function:     phys_size_t initdram (int board_type) P*A*Z*
- *
-P* Parameters:   int board_type
-P*                - Usually type of the board - ignored here.
-P*
-P* Returnvalue:  long int
-P*                - Size of initialized memory
- *
-Z* Intention:    This function is the initdram() method implementation
-Z*               for the lwmon board.
-Z*               The memory controller is initialized to access the
-Z*               DRAM.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immr->im_memctl;
-       long int size_b0;
-       long int size8, size9;
-       int i;
-
-       /*
-        * Configure UPMA for SDRAM
-        */
-       upmconfig (UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-       /* burst length=4, burst type=sequential, CAS latency=2 */
-       memctl->memc_mar = CONFIG_SYS_MAR;
-
-       /*
-        * Map controller bank 3 to the SDRAM bank at preliminary address.
-        */
-       memctl->memc_or3 = CONFIG_SYS_OR3_PRELIM;
-       memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM;
-
-       /* initialize memory address register */
-       memctl->memc_mamr = CONFIG_SYS_MAMR_8COL;       /* refresh not enabled yet */
-
-       /* mode initialization (offset 5) */
-       udelay (200);                           /* 0x80006105 */
-       memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x05);
-
-       /* run 2 refresh sequence with 4-beat refresh burst (offset 0x30) */
-       udelay (1);                             /* 0x80006130 */
-       memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x30);
-       udelay (1);                             /* 0x80006130 */
-       memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x30);
-
-       udelay (1);                             /* 0x80006106 */
-       memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x06);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* refresh enabled */
-
-       udelay (200);
-
-       /* Need at least 10 DRAM accesses to stabilize */
-       for (i = 0; i < 10; ++i) {
-               volatile unsigned long *addr =
-                       (volatile unsigned long *) SDRAM_BASE3_PRELIM;
-               unsigned long val;
-
-               val = *(addr + i);
-               *(addr + i) = val;
-       }
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        *
-        * try 8 column mode
-        */
-       size8 = dram_size (CONFIG_SYS_MAMR_8COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
-
-       udelay (1000);
-
-       /*
-        * try 9 column mode
-        */
-       size9 = dram_size (CONFIG_SYS_MAMR_9COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
-
-       if (size8 < size9) {            /* leave configuration at 9 columns */
-               size_b0 = size9;
-               memctl->memc_mamr = CONFIG_SYS_MAMR_9COL | MAMR_PTAE;
-               udelay (500);
-       } else {                        /* back to 8 columns            */
-               size_b0 = size8;
-               memctl->memc_mamr = CONFIG_SYS_MAMR_8COL | MAMR_PTAE;
-               udelay (500);
-       }
-
-       /*
-        * Final mapping:
-        */
-
-       memctl->memc_or3 = ((-size_b0) & 0xFFFF0000) |
-                       OR_CSNT_SAM | OR_G5LS | SDRAM_TIMING;
-       memctl->memc_br3 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-       udelay (1000);
-
-       return (size_b0);
-}
-
-/***********************************************************************
-F* Function:     static long int dram_size (long int mamr_value,
-F*                                          long int *base,
-F*                                          long int maxsize) P*A*Z*
- *
-P* Parameters:   long int mamr_value
-P*                - Value for MAMR for the test
-P*               long int *base
-P*                - Base address for the test
-P*               long int maxsize
-P*                - Maximum size to test for
-P*
-P* Returnvalue:  long int
-P*                - Size of probed memory
- *
-Z* Intention:    Check memory range for valid RAM. A simple memory test
-Z*               determines the actually available RAM size between
-Z*               addresses `base' and `base + maxsize'. Some (not all)
-Z*               hardware errors are detected:
-Z*                - short between address lines
-Z*                - short between data lines
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-static long int dram_size (long int mamr_value, long int *base, long int maxsize)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immr->im_memctl;
-
-       memctl->memc_mamr = mamr_value;
-
-       return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifndef        PB_ENET_TENA
-# define PB_ENET_TENA  ((uint)0x00002000)      /* PB 18 */
-#endif
-
-/***********************************************************************
-F* Function:     int board_early_init_f (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  int
-P*                - 0 is always returned.
- *
-Z* Intention:    This function is the board_early_init_f() method implementation
-Z*               for the lwmon board.
-Z*               Disable Ethernet TENA on Port B.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int board_early_init_f (void)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-
-       /* Disable Ethernet TENA on Port B
-        * Necessary because of pull up in COM3 port.
-        *
-        * This is just a preliminary fix, intended to turn off TENA
-        * as soon as possible to avoid noise on the network. Once
-        * I2C is running we will make sure the interface is
-        * correctly initialized.
-        */
-       immr->im_cpm.cp_pbpar &= ~PB_ENET_TENA;
-       immr->im_cpm.cp_pbodr &= ~PB_ENET_TENA;
-       immr->im_cpm.cp_pbdat &= ~PB_ENET_TENA; /* set to 0 = disabled */
-       immr->im_cpm.cp_pbdir |= PB_ENET_TENA;
-
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/***********************************************************************
-F* Function:     void reset_phy (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  none
- *
-Z* Intention:    Reset the PHY.  In the lwmon case we do this by the
-Z*               signaling the PIC I/O expander.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-void reset_phy (void)
-{
-       uchar c;
-
-#ifdef DEBUG
-       printf ("### Switch on Ethernet for SCC2 ###\n");
-#endif
-       c = pic_read (0x61);
-#ifdef DEBUG
-       printf ("Old PIC read: reg_61 = 0x%02x\n", c);
-#endif
-       c |= 0x40;                                      /* disable COM3 */
-       c &= ~0x80;                                     /* enable Ethernet */
-       pic_write (0x61, c);
-#ifdef DEBUG
-       c = pic_read (0x61);
-       printf ("New PIC read: reg_61 = 0x%02x\n", c);
-#endif
-       udelay (1000);
-}
-
-
-/*------------------------- Keyboard controller -----------------------*/
-/* command codes */
-#define        KEYBD_CMD_READ_KEYS     0x01
-#define KEYBD_CMD_READ_VERSION 0x02
-#define KEYBD_CMD_READ_STATUS  0x03
-#define KEYBD_CMD_RESET_ERRORS 0x10
-
-/* status codes */
-#define KEYBD_STATUS_MASK      0x3F
-#define        KEYBD_STATUS_H_RESET    0x20
-#define KEYBD_STATUS_BROWNOUT  0x10
-#define KEYBD_STATUS_WD_RESET  0x08
-#define KEYBD_STATUS_OVERLOAD  0x04
-#define KEYBD_STATUS_ILLEGAL_WR        0x02
-#define KEYBD_STATUS_ILLEGAL_RD        0x01
-
-/* Number of bytes returned from Keyboard Controller */
-#define KEYBD_VERSIONLEN       2       /* version information */
-#define        KEYBD_DATALEN           9       /* normal key scan data */
-
-/* maximum number of "magic" key codes that can be assigned */
-
-static uchar kbd_addr = CONFIG_SYS_I2C_KEYBD_ADDR;
-
-static uchar *key_match (uchar *);
-
-#define        KEYBD_SET_DEBUGMODE     '#'     /* Magic key to enable debug output */
-
-/***********************************************************************
-F* Function:     int board_postclk_init (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  int
-P*                - 0 is always returned.
- *
-Z* Intention:    This function is the board_postclk_init() method implementation
-Z*               for the lwmon board.
- *
- ***********************************************************************/
-int board_postclk_init (void)
-{
-       kbd_init();
-
-#ifdef CONFIG_MODEM_SUPPORT
-       if (key_pressed()) {
-               disable_putc(); /* modem doesn't understand banner etc */
-               gd->do_mdm_init = 1;
-       }
-#endif
-
-       return (0);
-}
-
-struct serial_device * default_serial_console (void)
-{
-       return gd->do_mdm_init ? &serial_scc_device : &serial_smc_device;
-}
-
-static void kbd_init (void)
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       uchar tmp_data[KEYBD_DATALEN];
-       uchar val, errcd;
-       int i;
-
-       i2c_set_bus_num(0);
-
-       gd->arch.kbd_status = 0;
-
-       /* Forced by PIC. Delays <= 175us loose */
-       udelay(1000);
-
-       /* Read initial keyboard error code */
-       val = KEYBD_CMD_READ_STATUS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, &errcd, 1);
-       /* clear unused bits */
-       errcd &= KEYBD_STATUS_MASK;
-       /* clear "irrelevant" bits. Recommended by Martin Rajek, LWN */
-       errcd &= ~(KEYBD_STATUS_H_RESET|KEYBD_STATUS_BROWNOUT);
-       if (errcd) {
-               gd->arch.kbd_status |= errcd << 8;
-       }
-       /* Reset error code and verify */
-       val = KEYBD_CMD_RESET_ERRORS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       udelay(1000);   /* delay NEEDED by keyboard PIC !!! */
-
-       val = KEYBD_CMD_READ_STATUS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, &val, 1);
-
-       val &= KEYBD_STATUS_MASK;       /* clear unused bits */
-       if (val) {                      /* permanent error, report it */
-               gd->arch.kbd_status |= val;
-               return;
-       }
-
-       /*
-        * Read current keyboard state.
-        *
-        * After the error reset it may take some time before the
-        * keyboard PIC picks up a valid keyboard scan - the total
-        * scan time is approx. 1.6 ms (information by Martin Rajek,
-        * 28 Sep 2002). We read a couple of times for the keyboard
-        * to stabilize, using a big enough delay.
-        * 10 times should be enough. If the data is still changing,
-        * we use what we get :-(
-        */
-
-       memset (tmp_data, 0xFF, KEYBD_DATALEN); /* impossible value */
-       for (i=0; i<10; ++i) {
-               val = KEYBD_CMD_READ_KEYS;
-               i2c_write (kbd_addr, 0, 0, &val, 1);
-               i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-               if (memcmp(kbd_data, tmp_data, KEYBD_DATALEN) == 0) {
-                       /* consistent state, done */
-                       break;
-               }
-               /* remeber last state, delay, and retry */
-               memcpy (tmp_data, kbd_data, KEYBD_DATALEN);
-               udelay (5000);
-       }
-}
-
-/***********************************************************************
-F* Function:     int misc_init_r (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  int
-P*                - 0 is always returned, even in the case of a keyboard
-P*                    error.
- *
-Z* Intention:    This function is the misc_init_r() method implementation
-Z*               for the lwmon board.
-Z*               The keyboard controller is initialized and the result
-Z*               of a read copied to the environment variable "keybd".
-Z*               If KEYBD_SET_DEBUGMODE is defined, a check is made for
-Z*               this key, and if found display to the LCD will be enabled.
-Z*               The keys in "keybd" are checked against the magic
-Z*               keycommands defined in the environment.
-Z*               See also key_match().
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int misc_init_r (void)
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       char keybd_env[2 * KEYBD_DATALEN + 1];
-       uchar kbd_init_status = gd->arch.kbd_status >> 8;
-       uchar kbd_status = gd->arch.kbd_status;
-       uchar val;
-       char *str;
-       int i;
-
-       if (kbd_init_status) {
-               printf ("KEYBD: Error %02X\n", kbd_init_status);
-       }
-       if (kbd_status) {               /* permanent error, report it */
-               printf ("*** Keyboard error code %02X ***\n", kbd_status);
-               sprintf (keybd_env, "%02X", kbd_status);
-               setenv ("keybd", keybd_env);
-               return 0;
-       }
-
-       /*
-        * Now we know that we have a working  keyboard,  so  disable
-        * all output to the LCD except when a key press is detected.
-        */
-
-       if ((console_assign (stdout, "serial") < 0) ||
-               (console_assign (stderr, "serial") < 0)) {
-               printf ("Can't assign serial port as output device\n");
-       }
-
-       /* Read Version */
-       val = KEYBD_CMD_READ_VERSION;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_VERSIONLEN);
-       printf ("KEYBD: Version %d.%d\n", kbd_data[0], kbd_data[1]);
-
-       /* Read current keyboard state */
-       val = KEYBD_CMD_READ_KEYS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       for (i = 0; i < KEYBD_DATALEN; ++i) {
-               sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
-       }
-       setenv ("keybd", keybd_env);
-
-       str = strdup ((char *)key_match (kbd_data));    /* decode keys */
-#ifdef KEYBD_SET_DEBUGMODE
-       if (kbd_data[0] == KEYBD_SET_DEBUGMODE) {       /* set debug mode */
-               if ((console_assign (stdout, "lcd") < 0) ||
-                       (console_assign (stderr, "lcd") < 0)) {
-                       printf ("Can't assign LCD display as output device\n");
-               }
-       }
-#endif /* KEYBD_SET_DEBUGMODE */
-#ifdef CONFIG_PREBOOT  /* automatically configure "preboot" command on key match */
-       setenv ("preboot", str);        /* set or delete definition */
-#endif /* CONFIG_PREBOOT */
-       if (str != NULL) {
-               free (str);
-       }
-       return (0);
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[] = "key_magic";
-static uchar kbd_command_prefix[] = "key_cmd";
-
-static int compare_magic (uchar *kbd_data, uchar *str)
-{
-       uchar compare[KEYBD_DATALEN-1];
-       char *nxt;
-       int i;
-
-       /* Don't include modifier byte */
-       memcpy (compare, kbd_data+1, KEYBD_DATALEN-1);
-
-       for (; str != NULL; str = (*nxt) ? (uchar *)(nxt+1) : (uchar *)nxt) {
-               uchar c;
-               int k;
-
-               c = (uchar) simple_strtoul ((char *)str, (char **) (&nxt), 16);
-
-               if (str == (uchar *)nxt) {      /* invalid character */
-                       break;
-               }
-
-               /*
-                * Check if this key matches the input.
-                * Set matches to zero, so they match only once
-                * and we can find duplicates or extra keys
-                */
-               for (k = 0; k < sizeof(compare); ++k) {
-                       if (compare[k] == '\0') /* only non-zero entries */
-                               continue;
-                       if (c == compare[k]) {  /* found matching key */
-                               compare[k] = '\0';
-                               break;
-                       }
-               }
-               if (k == sizeof(compare)) {
-                       return -1;              /* unmatched key */
-               }
-       }
-
-       /*
-        * A full match leaves no keys in the `compare' array,
-        */
-       for (i = 0; i < sizeof(compare); ++i) {
-               if (compare[i])
-               {
-                       return -1;
-               }
-       }
-
-       return 0;
-}
-
-/***********************************************************************
-F* Function:     static uchar *key_match (uchar *kbd_data) P*A*Z*
- *
-P* Parameters:   uchar *kbd_data
-P*                - The keys to match against our magic definitions
-P*
-P* Returnvalue:  uchar *
-P*                - != NULL: Pointer to the corresponding command(s)
-P*                     NULL: No magic is about to happen
- *
-Z* Intention:    Check if pressed key(s) match magic sequence,
-Z*               and return the command string associated with that key(s).
-Z*
-Z*               If no key press was decoded, NULL is returned.
-Z*
-Z*               Note: the first character of the argument will be
-Z*                     overwritten with the "magic charcter code" of the
-Z*                     decoded key(s), or '\0'.
-Z*
-Z*               Note: the string points to static environment data
-Z*                     and must be saved before you call any function that
-Z*                     modifies the environment.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-static uchar *key_match (uchar *kbd_data)
-{
-       char magic[sizeof (kbd_magic_prefix) + 1];
-       uchar *suffix;
-       char *kbd_magic_keys;
-
-       /*
-        * The following string defines the characters that can pe appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
-               kbd_magic_keys = "";
-
-       /* loop over all magic keys;
-        * use '\0' suffix in case of empty string
-        */
-       for (suffix=(uchar *)kbd_magic_keys; *suffix || suffix==(uchar *)kbd_magic_keys; ++suffix) {
-               sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-#if 0
-               printf ("### Check magic \"%s\"\n", magic);
-#endif
-               if (compare_magic(kbd_data, (uchar *)getenv(magic)) == 0) {
-                       char cmd_name[sizeof (kbd_command_prefix) + 1];
-                       char *cmd;
-
-                       sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
-
-                       cmd = getenv (cmd_name);
-#if 0
-                       printf ("### Set PREBOOT to $(%s): \"%s\"\n",
-                                       cmd_name, cmd ? cmd : "<<NULL>>");
-#endif
-                       *kbd_data = *suffix;
-                       return ((uchar *)cmd);
-               }
-       }
-#if 0
-       printf ("### Delete PREBOOT\n");
-#endif
-       *kbd_data = '\0';
-       return (NULL);
-}
-#endif /* CONFIG_PREBOOT */
-
-#ifdef CONFIG_LCD_INFO
-#include <lcd.h>
-#include <version.h>
-#include <timestamp.h>
-
-void lcd_show_board_info(void)
-{
-       char temp[32];
-
-       lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, U_BOOT_DATE, U_BOOT_TIME);
-       lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n");
-       lcd_printf ("    Wolfgang DENK, wd@denx.de\n");
-#ifdef CONFIG_LCD_INFO_BELOW_LOGO
-       lcd_printf ("MPC823 CPU at %s MHz\n",
-               strmhz(temp, gd->cpu_clk));
-       lcd_printf ("  %ld MB RAM, %ld MB Flash\n",
-               gd->ram_size >> 20,
-               gd->bd->bi_flashsize >> 20 );
-#else
-       /* leave one blank line */
-       lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n",
-               strmhz(temp, gd->cpu_clk),
-               gd->ram_size >> 20,
-               gd->bd->bi_flashsize >> 20 );
-#endif /* CONFIG_LCD_INFO_BELOW_LOGO */
-}
-#endif /* CONFIG_LCD_INFO */
-
-/*---------------Board Special Commands: PIC read/write ---------------*/
-
-#if defined(CONFIG_CMD_BSP)
-/***********************************************************************
-F* Function:     int do_pic (cmd_tbl_t *cmdtp, int flag,
-F*                           int argc, char * const argv[]) P*A*Z*
- *
-P* Parameters:   cmd_tbl_t *cmdtp
-P*                - Pointer to our command table entry
-P*               int flag
-P*                - If the CMD_FLAG_REPEAT bit is set, then this call is
-P*                  a repetition
-P*               int argc
-P*                - Argument count
-P*               char * const argv[]
-P*                - Array of the actual arguments
-P*
-P* Returnvalue:  int
-P*                - 0  The command was handled successfully
-P*                  1  An error occurred
- *
-Z* Intention:    Implement the "pic [read|write]" commands.
-Z*               The read subcommand takes one argument, the register,
-Z*               whereas the write command takes two, the register and
-Z*               the new value.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int do_pic (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       uchar reg, val;
-
-       switch (argc) {
-       case 3:                                 /* PIC read reg */
-               if (strcmp (argv[1], "read") != 0)
-                       break;
-
-               reg = simple_strtoul (argv[2], NULL, 16);
-
-               printf ("PIC read: reg %02x: %02x\n\n", reg, pic_read (reg));
-
-               return 0;
-       case 4:                                 /* PIC write reg val */
-               if (strcmp (argv[1], "write") != 0)
-                       break;
-
-               reg = simple_strtoul (argv[2], NULL, 16);
-               val = simple_strtoul (argv[3], NULL, 16);
-
-               printf ("PIC write: reg %02x val 0x%02x: %02x => ",
-                               reg, val, pic_read (reg));
-               pic_write (reg, val);
-               printf ("%02x\n\n", pic_read (reg));
-               return 0;
-       default:
-               break;
-       }
-       return cmd_usage(cmdtp);
-}
-U_BOOT_CMD(
-       pic,    4,      1,      do_pic,
-       "read and write PIC registers",
-       "read  reg      - read PIC register `reg'\n"
-       "pic write reg val  - write value `val' to PIC register `reg'"
-);
-
-/***********************************************************************
-F* Function:     int do_kbd (cmd_tbl_t *cmdtp, int flag,
-F*                           int argc, char * const argv[]) P*A*Z*
- *
-P* Parameters:   cmd_tbl_t *cmdtp
-P*                - Pointer to our command table entry
-P*               int flag
-P*                - If the CMD_FLAG_REPEAT bit is set, then this call is
-P*                  a repetition
-P*               int argc
-P*                - Argument count
-P*               char * const argv[]
-P*                - Array of the actual arguments
-P*
-P* Returnvalue:  int
-P*                - 0 is always returned.
- *
-Z* Intention:    Implement the "kbd" command.
-Z*               The keyboard status is read.  The result is printed on
-Z*               the console and written into the "keybd" environment
-Z*               variable.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       char keybd_env[2 * KEYBD_DATALEN + 1];
-       uchar val;
-       int i;
-
-#if 0 /* Done in kbd_init */
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-#endif
-
-       /* Read keys */
-       val = KEYBD_CMD_READ_KEYS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       puts ("Keys:");
-       for (i = 0; i < KEYBD_DATALEN; ++i) {
-               sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
-               printf (" %02x", kbd_data[i]);
-       }
-       putc ('\n');
-       setenv ("keybd", keybd_env);
-       return 0;
-}
-
-U_BOOT_CMD(
-       kbd,    1,      1,      do_kbd,
-       "read keyboard status",
-       ""
-);
-
-/* Read and set LSB switch */
-#define CONFIG_SYS_PC_TXD1_ENA         0x0008          /* PC.12 */
-
-/***********************************************************************
-F* Function:     int do_lsb (cmd_tbl_t *cmdtp, int flag,
-F*                           int argc, char * const argv[]) P*A*Z*
- *
-P* Parameters:   cmd_tbl_t *cmdtp
-P*                - Pointer to our command table entry
-P*               int flag
-P*                - If the CMD_FLAG_REPEAT bit is set, then this call is
-P*                  a repetition
-P*               int argc
-P*                - Argument count
-P*               char * const argv[]
-P*                - Array of the actual arguments
-P*
-P* Returnvalue:  int
-P*                - 0  The command was handled successfully
-P*                  1  An error occurred
- *
-Z* Intention:    Implement the "lsb [on|off]" commands.
-Z*               The lsb is switched according to the first parameter by
-Z*               by signaling the PIC I/O expander.
-Z*               Called with no arguments, the current setting is
-Z*               printed.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       uchar val;
-       immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-
-       switch (argc) {
-       case 1:                                 /* lsb - print setting */
-               val = pic_read (0x60);
-               printf ("LSB is o%s\n", (val & 0x20) ? "n" : "ff");
-               return 0;
-       case 2:                                 /* lsb on or lsb off - set switch */
-               val = pic_read (0x60);
-
-               if (strcmp (argv[1], "on") == 0) {
-                       val |= 0x20;
-                       immr->im_ioport.iop_pcpar &= ~(CONFIG_SYS_PC_TXD1_ENA);
-                       immr->im_ioport.iop_pcdat |= CONFIG_SYS_PC_TXD1_ENA;
-                       immr->im_ioport.iop_pcdir |= CONFIG_SYS_PC_TXD1_ENA;
-               } else if (strcmp (argv[1], "off") == 0) {
-                       val &= ~0x20;
-                       immr->im_ioport.iop_pcpar &= ~(CONFIG_SYS_PC_TXD1_ENA);
-                       immr->im_ioport.iop_pcdat &= ~(CONFIG_SYS_PC_TXD1_ENA);
-                       immr->im_ioport.iop_pcdir |= CONFIG_SYS_PC_TXD1_ENA;
-               } else {
-                       break;
-               }
-               pic_write (0x60, val);
-               return 0;
-       default:
-               break;
-       }
-       return cmd_usage(cmdtp);
-}
-
-U_BOOT_CMD(
-       lsb,    2,      1,      do_lsb,
-       "check and set LSB switch",
-       "on  - switch LSB on\n"
-       "lsb off - switch LSB off\n"
-       "lsb     - print current setting"
-);
-
-#endif
-
-/*----------------------------- Utilities -----------------------------*/
-/***********************************************************************
-F* Function:     uchar pic_read (uchar reg) P*A*Z*
- *
-P* Parameters:   uchar reg
-P*                - Register to read
-P*
-P* Returnvalue:  uchar
-P*                - Value read from register
- *
-Z* Intention:    Read a register from the PIC I/O expander.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-uchar pic_read (uchar reg)
-{
-       return (i2c_reg_read (CONFIG_SYS_I2C_PICIO_ADDR, reg));
-}
-
-/***********************************************************************
-F* Function:     void pic_write (uchar reg, uchar val) P*A*Z*
- *
-P* Parameters:   uchar reg
-P*                - Register to read
-P*               uchar val
-P*                - Value to write
-P*
-P* Returnvalue:  none
- *
-Z* Intention:    Write to a register on the PIC I/O expander.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-void pic_write (uchar reg, uchar val)
-{
-       i2c_reg_write (CONFIG_SYS_I2C_PICIO_ADDR, reg, val);
-}
-
-/*---------------------- Board Control Functions ----------------------*/
-/***********************************************************************
-F* Function:     void board_poweroff (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  none
- *
-Z* Intention:    Turn off the battery power and loop endless, so this
-Z*               should better be the last function you call...
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-void board_poweroff (void)
-{
-    /* Turn battery off */
-    ((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pcdat &= ~(1 << (31 - 13));
-
-    while (1);
-}
-
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void)
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       uchar val;
-
-       /* Read keys */
-       val = KEYBD_CMD_READ_KEYS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       return (compare_magic(kbd_data, (uchar *)CONFIG_MODEM_KEY_MAGIC) == 0);
-}
-#endif /* CONFIG_MODEM_SUPPORT */
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       uchar val;
-
-       /* Read keys */
-       val = KEYBD_CMD_READ_KEYS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       return (compare_magic(kbd_data, (uchar *)CONFIG_POST_KEY_MAGIC) == 0);
-}
-#endif
diff --git a/board/lwmon/pcmcia.c b/board/lwmon/pcmcia.c
deleted file mode 100644 (file)
index b9894cf..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-#include <i2c.h>
-
-#undef CONFIG_PCMCIA
-
-#if defined(CONFIG_CMD_PCMCIA)
-#define        CONFIG_PCMCIA
-#endif
-
-#if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define        CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "LWMON"
-
-/* #define's for MAX1604 Power Switch */
-#define MAX1604_OP_SUS         0x80
-#define MAX1604_VCCBON         0x40
-#define MAX1604_VCC_35         0x20
-#define MAX1604_VCCBHIZ                0x10
-#define MAX1604_VPPBON         0x08
-#define MAX1604_VPPBPBPGM      0x04
-#define MAX1604_VPPBHIZ                0x02
-/* reserved                    0x01    */
-
-int pcmcia_hardware_enable(int slot)
-{
-       volatile pcmconf8xx_t   *pcmp;
-       volatile sysconf8xx_t   *sysp;
-       uint reg, mask;
-       uchar val;
-
-
-       debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       /* Switch on PCMCIA port in PIC register 0x60 */
-       reg = pic_read  (0x60);
-       debug ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
-       reg &= ~0x10;
-       /* reg |= 0x08; Vpp not needed */
-       pic_write (0x60, reg);
-#ifdef DEBUG
-       reg = pic_read  (0x60);
-       printf ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
-#endif
-       udelay(10000);
-
-       sysp  = (sysconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_siu_conf));
-       pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-
-       /*
-        * Configure SIUMCR to enable PCMCIA port B
-        * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
-        */
-       sysp->sc_siumcr &= ~SIUMCR_DBGC11;      /* set DBGC to 00 */
-
-       /* clear interrupt state, and disable interrupts */
-       pcmp->pcmc_pscr =  PCMCIA_MASK(_slot_);
-       pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
-       /*
-        * Disable interrupts, DMA, and PCMCIA buffers
-        * (isolate the interface) and assert RESET signal
-        */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       /*
-        * Make sure there is a card in the slot, then configure the interface.
-        */
-       udelay(10000);
-       debug ("[%d] %s: PIPR(%p)=0x%x\n",
-               __LINE__,__FUNCTION__,
-               &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
-       if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
-               printf ("   No Card found\n");
-               return (1);
-       }
-
-       /*
-        * Power On.
-        */
-       mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
-       reg  = pcmp->pcmc_pipr;
-       debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
-               reg,
-               (reg&PCMCIA_VS1(slot))?"n":"ff",
-               (reg&PCMCIA_VS2(slot))?"n":"ff");
-       if ((reg & mask) == mask) {
-               val = 0;                /* VCCB3/5 = 0 ==> use Vx = 5.0 V */
-               puts (" 5.0V card found: ");
-       } else {
-               val = MAX1604_VCC_35;   /* VCCB3/5 = 1 ==> use Vy = 3.3 V */
-               puts (" 3.3V card found: ");
-       }
-
-       /*  switch VCC on */
-       val |= MAX1604_OP_SUS | MAX1604_VCCBON;
-       i2c_set_bus_num(0);
-       i2c_write (CONFIG_SYS_I2C_POWER_A_ADDR, 0, 0, &val, 1);
-
-       udelay(500000);
-
-       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(_slot_);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-
-       udelay(250000); /* some cards need >150 ms to come up :-( */
-
-       debug ("# hardware_enable done\n");
-
-       return (0);
-}
-
-
-#if defined(CONFIG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
-       volatile immap_t        *immap;
-       volatile pcmconf8xx_t   *pcmp;
-       u_long reg;
-       uchar val;
-
-       debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-       pcmp = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-
-       /* remove all power, put output in high impedance state */
-       val  = MAX1604_VCCBHIZ | MAX1604_VPPBHIZ;
-       i2c_init  (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-       i2c_write (CONFIG_SYS_I2C_POWER_A_ADDR, 0, 0, &val, 1);
-
-       /* Configure PCMCIA General Control Register */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-
-       /* Switch off PCMCIA port in PIC register 0x60 */
-       reg = pic_read  (0x60);
-       debug ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
-       reg |=  0x10;
-       reg &= ~0x08;
-       pic_write (0x60, reg);
-#ifdef DEBUG
-       reg = pic_read  (0x60);
-       printf ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
-#endif
-       udelay(10000);
-
-       return (0);
-}
-#endif
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
-       volatile pcmconf8xx_t   *pcmp;
-       u_long reg;
-       uchar val;
-
-       debug ("voltage_set: "
-               PCMCIA_BOARD_MSG
-               " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
-               'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
-       pcmp = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-       /*
-        * Disable PCMCIA buffers (isolate the interface)
-        * and assert RESET signal
-        */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = PCMCIA_PGCRX(_slot_);
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       /*
-        * Turn off all power (switch to high impedance)
-        */
-       debug ("PCMCIA power OFF\n");
-       val  = MAX1604_VCCBHIZ | MAX1604_VPPBHIZ;
-       i2c_set_bus_num(0);
-       i2c_write (CONFIG_SYS_I2C_POWER_A_ADDR, 0, 0, &val, 1);
-
-       val = 0;
-       switch(vcc) {
-       case  0:                        break;
-       case 33: val = MAX1604_VCC_35;  break;
-       case 50:                        break;
-       default:                        goto done;
-       }
-
-       /* Checking supported voltages */
-
-       debug ("PIPR: 0x%x --> %s\n",
-               pcmp->pcmc_pipr,
-               (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
-
-       i2c_write (CONFIG_SYS_I2C_POWER_A_ADDR, 0, 0, &val, 1);
-       if (val) {
-               debug ("PCMCIA powered at %sV\n",
-                       (val & MAX1604_VCC_35) ? "3.3" : "5.0");
-       } else {
-               debug ("PCMCIA powered down\n");
-       }
-
-done:
-       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(_slot_);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
-               slot+'A');
-       return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/lwmon/u-boot.lds.debug b/board/lwmon/u-boot.lds.debug
deleted file mode 100644 (file)
index 75a1337..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)      }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)      }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)       }
-  .rela.got      : { *(.rela.got)      }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)       }
-  .rela.bss      : { *(.rela.bss)      }
-  .rel.plt       : { *(.rel.plt)       }
-  .rela.plt      : { *(.rela.plt)      }
-  .init          : { *(.init)          }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    common/dlmalloc.o  (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-    arch/powerpc/lib/extable.o (.text)
-
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/manroland/hmi1001/Kconfig b/board/manroland/hmi1001/Kconfig
deleted file mode 100644 (file)
index 996a87f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_HMI1001
-
-config SYS_BOARD
-       default "hmi1001"
-
-config SYS_VENDOR
-       default "manroland"
-
-config SYS_CONFIG_NAME
-       default "hmi1001"
-
-endif
diff --git a/board/manroland/hmi1001/MAINTAINERS b/board/manroland/hmi1001/MAINTAINERS
deleted file mode 100644 (file)
index a66a981..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-HMI1001 BOARD
-#M:    -
-S:     Maintained
-F:     board/manroland/hmi1001/
-F:     include/configs/hmi1001.h
-F:     configs/hmi1001_defconfig
diff --git a/board/manroland/hmi1001/Makefile b/board/manroland/hmi1001/Makefile
deleted file mode 100644 (file)
index c29a665..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := hmi1001.o
diff --git a/board/manroland/hmi1001/hmi1001.c b/board/manroland/hmi1001/hmi1001.c
deleted file mode 100644 (file)
index 64bdd8f..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * (C) Copyright 2003-2008
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * (C) Copyright 2004
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <asm/processor.h>
-#include <malloc.h>
-
-#ifndef CONFIG_SYS_RAMBOOT
-static void sdram_start (int hi_addr)
-{
-       long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
-       /* unlock mode register */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* precharge all banks */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set mode register: extended mode */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
-       __asm__ volatile ("sync");
-
-       /* set mode register: reset DLL */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
-       __asm__ volatile ("sync");
-#endif
-
-       /* precharge all banks */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* auto refresh */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* set mode register */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
-       __asm__ volatile ("sync");
-
-       /* normal operation */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
-       __asm__ volatile ("sync");
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- *           use of CONFIG_SYS_SDRAM_BASE. The code does not work if CONFIG_SYS_SDRAM_BASE
- *           is something else than 0x00000000.
- */
-
-phys_size_t initdram (int board_type)
-{
-       ulong dramsize = 0;
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong test1, test2;
-       uint svr, pvr;
-
-       /* setup SDRAM chip selects */
-       *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001c; /* 512MB at 0x0 */
-       *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x40000000; /* disabled */
-       __asm__ volatile ("sync");
-
-       /* setup config registers */
-       *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
-       *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set tap delay */
-       *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
-       __asm__ volatile ("sync");
-#endif
-
-       /* find RAM size using SDRAM CS0 only */
-       sdram_start(0);
-       test1 = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, 0x20000000);
-       sdram_start(1);
-       test2 = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, 0x20000000);
-       if (test1 > test2) {
-               sdram_start(0);
-               dramsize = test1;
-       } else {
-               dramsize = test2;
-       }
-
-       /* memory smaller than 1MB is impossible */
-       if (dramsize < (1 << 20)) {
-               dramsize = 0;
-       }
-
-       /* set SDRAM CS0 size according to the amount of RAM found */
-       if (dramsize > 0) {
-               *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 +
-                       __builtin_ffs(dramsize >> 20) - 1;
-       } else {
-               *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
-       }
-
-       *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
-#else /* CONFIG_SYS_RAMBOOT */
-
-       /* retrieve size of memory connected to SDRAM CS0 */
-       dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
-       if (dramsize >= 0x13) {
-               dramsize = (1 << (dramsize - 0x13)) << 20;
-       } else {
-               dramsize = 0;
-       }
-
-       /* retrieve size of memory connected to SDRAM CS1 */
-       dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
-       if (dramsize2 >= 0x13) {
-               dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
-       } else {
-               dramsize2 = 0;
-       }
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-       /*
-        * On MPC5200B we need to set the special configuration delay in the
-        * DDR controller. Please refer to Freescale's AN3221 "MPC5200B SDRAM
-        * Initialization and Configuration", 3.3.1 SDelay--MBAR + 0x0190:
-        *
-        * "The SDelay should be written to a value of 0x00000004. It is
-        * required to account for changes caused by normal wafer processing
-        * parameters."
-        */
-       svr = get_svr();
-       pvr = get_pvr();
-       if ((SVR_MJREV(svr) >= 2) &&
-           (PVR_MAJ(pvr) == 1) && (PVR_MIN(pvr) == 4)) {
-
-               *(vu_long *)MPC5XXX_SDRAM_SDELAY = 0x04;
-               __asm__ volatile ("sync");
-       }
-
-/*     return dramsize + dramsize2; */
-       return dramsize;
-}
-
-int checkboard (void)
-{
-       puts ("Board: HMI1001\n");
-       return 0;
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[]                = "key_magic";
-static uchar kbd_command_prefix[]      = "key_cmd";
-
-#define S1_ROT 0xf0
-#define S2_Q   0x40
-#define S2_M   0x20
-
-struct kbd_data_t {
-       char s1;
-       char s2;
-};
-
-struct kbd_data_t* get_keys (struct kbd_data_t *kbd_data)
-{
-       kbd_data->s1 = *((volatile uchar*)(CONFIG_SYS_STATUS1_BASE));
-       kbd_data->s2 = *((volatile uchar*)(CONFIG_SYS_STATUS2_BASE));
-
-       return kbd_data;
-}
-
-static int compare_magic (const struct kbd_data_t *kbd_data, char *str)
-{
-       char s1 = str[0];
-       char s2;
-
-       if (s1 >= '0' && s1 <= '9')
-               s1 -= '0';
-       else if (s1 >= 'a' && s1 <= 'f')
-               s1 = s1 - 'a' + 10;
-       else if (s1 >= 'A' && s1 <= 'F')
-               s1 = s1 - 'A' + 10;
-       else
-               return -1;
-
-       if (((S1_ROT & kbd_data->s1) >> 4) != s1)
-               return -1;
-
-       s2 = (S2_Q | S2_M) & kbd_data->s2;
-
-       switch (str[1]) {
-       case 'q':
-       case 'Q':
-               if (s2 == S2_Q)
-                       return -1;
-               break;
-       case 'm':
-       case 'M':
-               if (s2 == S2_M)
-                       return -1;
-               break;
-       case '\0':
-               if (s2 == (S2_Q | S2_M))
-                       return 0;
-       default:
-               return -1;
-       }
-
-       if (str[2])
-               return -1;
-
-       return 0;
-}
-
-static char *key_match (const struct kbd_data_t *kbd_data)
-{
-       char magic[sizeof (kbd_magic_prefix) + 1];
-       char *suffix;
-       char *kbd_magic_keys;
-
-       /*
-        * The following string defines the characters that can be appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
-               kbd_magic_keys = "";
-
-       /* loop over all magic keys;
-        * use '\0' suffix in case of empty string
-        */
-       for (suffix = kbd_magic_keys; *suffix ||
-                    suffix == kbd_magic_keys; ++suffix) {
-               sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-
-               if (compare_magic(kbd_data, getenv(magic)) == 0) {
-                       char cmd_name[sizeof (kbd_command_prefix) + 1];
-                       char *cmd;
-
-                       sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
-                       cmd = getenv (cmd_name);
-
-                       return (cmd);
-               }
-       }
-
-       return (NULL);
-}
-
-#endif /* CONFIG_PREBOOT */
-
-int misc_init_r (void)
-{
-#ifdef CONFIG_PREBOOT
-       struct kbd_data_t kbd_data;
-       /* Decode keys */
-       char *str = strdup (key_match (get_keys (&kbd_data)));
-       /* Set or delete definition */
-       setenv ("preboot", str);
-       free (str);
-#endif /* CONFIG_PREBOOT */
-
-       return 0;
-}
-
-int board_early_init_r (void)
-{
-       *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-       *(vu_long *)MPC5XXX_BOOTCS_START =
-       *(vu_long *)MPC5XXX_CS0_START = START_REG(CONFIG_SYS_FLASH_BASE);
-       *(vu_long *)MPC5XXX_BOOTCS_STOP =
-       *(vu_long *)MPC5XXX_CS0_STOP = STOP_REG(CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_SIZE);
-       return 0;
-}
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc5xxx_init(&hose);
-}
-#endif
diff --git a/board/manroland/mucmc52/Kconfig b/board/manroland/mucmc52/Kconfig
deleted file mode 100644 (file)
index a033610..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_MUCMC52
-
-config SYS_BOARD
-       default "mucmc52"
-
-config SYS_VENDOR
-       default "manroland"
-
-config SYS_CONFIG_NAME
-       default "mucmc52"
-
-endif
diff --git a/board/manroland/mucmc52/MAINTAINERS b/board/manroland/mucmc52/MAINTAINERS
deleted file mode 100644 (file)
index 45a2764..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MUCMC52 BOARD
-M:     Heiko Schocher <hs@denx.de>
-S:     Maintained
-F:     board/manroland/mucmc52/
-F:     include/configs/mucmc52.h
-F:     configs/mucmc52_defconfig
diff --git a/board/manroland/mucmc52/Makefile b/board/manroland/mucmc52/Makefile
deleted file mode 100644 (file)
index 927fc32..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2008
-# Heiko Schocher, DENX Software Engineering, hs@denx.de.
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := mucmc52.o
diff --git a/board/manroland/mucmc52/mucmc52.c b/board/manroland/mucmc52/mucmc52.c
deleted file mode 100644 (file)
index c3ce66d..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * (C) Copyright 2004
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de
- *
- * (C) Copyright 2008
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <fdt_support.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <malloc.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-
-#ifndef CONFIG_SYS_RAMBOOT
-static void sdram_start (int hi_addr)
-{
-       long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
-       /* unlock mode register */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CTRL,
-               (SDRAM_CONTROL | 0x80000000 | hi_addr_bit));
-       __asm__ volatile ("sync");
-
-       /* precharge all banks */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CTRL,
-               (SDRAM_CONTROL | 0x80000002 | hi_addr_bit));
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set mode register: extended mode */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_MODE, (SDRAM_EMODE));
-       __asm__ volatile ("sync");
-
-       /* set mode register: reset DLL */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_MODE,
-               (SDRAM_MODE | 0x04000000));
-       __asm__ volatile ("sync");
-#endif
-
-       /* precharge all banks */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CTRL,
-               (SDRAM_CONTROL | 0x80000002 | hi_addr_bit));
-       __asm__ volatile ("sync");
-
-       /* auto refresh */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CTRL,
-               (SDRAM_CONTROL | 0x80000004 | hi_addr_bit));
-       __asm__ volatile ("sync");
-
-       /* set mode register */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_MODE, (SDRAM_MODE));
-       __asm__ volatile ("sync");
-
-       /* normal operation */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CTRL,
-               (SDRAM_CONTROL | hi_addr_bit));
-       __asm__ volatile ("sync");
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- *           use of CONFIG_SYS_SDRAM_BASE. The code does not work if CONFIG_SYS_SDRAM_BASE
- *           is something else than 0x00000000.
- */
-
-phys_size_t initdram (int board_type)
-{
-       ulong dramsize = 0;
-       ulong dramsize2 = 0;
-       uint svr, pvr;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong test1, test2;
-
-       /* setup SDRAM chip selects */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS0CFG, 0x0000001c); /* 512MB at 0x0 */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS1CFG, 0x80000000);/* disabled */
-       __asm__ volatile ("sync");
-
-       /* setup config registers */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CONFIG1, SDRAM_CONFIG1);
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CONFIG2, SDRAM_CONFIG2);
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set tap delay */
-       out_be32 ((unsigned __iomem *)MPC5XXX_CDM_PORCFG, SDRAM_TAPDELAY);
-       __asm__ volatile ("sync");
-#endif
-
-       /* find RAM size using SDRAM CS0 only */
-       sdram_start (0);
-       test1 = get_ram_size ((long *)CONFIG_SYS_SDRAM_BASE, 0x20000000);
-       sdram_start(1);
-       test2 = get_ram_size ((long *)CONFIG_SYS_SDRAM_BASE, 0x20000000);
-       if (test1 > test2) {
-               sdram_start (0);
-               dramsize = test1;
-       } else {
-               dramsize = test2;
-       }
-
-       /* memory smaller than 1MB is impossible */
-       if (dramsize < (1 << 20)) {
-               dramsize = 0;
-       }
-
-       /* set SDRAM CS0 size according to the amount of RAM found */
-       if (dramsize > 0) {
-               out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS0CFG,
-                       (0x13 + __builtin_ffs(dramsize >> 20) - 1));
-       } else {
-               out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS0CFG, 0); /* disabled */
-       }
-
-       /* let SDRAM CS1 start right after CS0 */
-       out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS1CFG, (dramsize + 0x0000001c));/*512MB*/
-
-       /* find RAM size using SDRAM CS1 only */
-       if (!dramsize)
-               sdram_start (0);
-       test2 = test1 = get_ram_size ((long *)(CONFIG_SYS_SDRAM_BASE + dramsize), 0x20000000);
-       if (!dramsize) {
-               sdram_start (1);
-               test2 = get_ram_size ((long *)(CONFIG_SYS_SDRAM_BASE + dramsize), 0x20000000);
-       }
-       if (test1 > test2) {
-               sdram_start (0);
-               dramsize2 = test1;
-       } else {
-               dramsize2 = test2;
-       }
-
-       /* memory smaller than 1MB is impossible */
-       if (dramsize2 < (1 << 20)) {
-               dramsize2 = 0;
-       }
-
-       /* set SDRAM CS1 size according to the amount of RAM found */
-       if (dramsize2 > 0) {
-               out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS1CFG,
-                       (dramsize | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1)));
-       } else {
-               out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS1CFG, dramsize); /* disabled */
-       }
-
-#else /* CONFIG_SYS_RAMBOOT */
-
-       /* retrieve size of memory connected to SDRAM CS0 */
-       dramsize = in_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS0CFG) & 0xFF;
-       if (dramsize >= 0x13) {
-               dramsize = (1 << (dramsize - 0x13)) << 20;
-       } else {
-               dramsize = 0;
-       }
-
-       /* retrieve size of memory connected to SDRAM CS1 */
-       dramsize2 = in_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_CS1CFG) & 0xFF;
-       if (dramsize2 >= 0x13) {
-               dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
-       } else {
-               dramsize2 = 0;
-       }
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-        /*
-        * On MPC5200B we need to set the special configuration delay in the
-        * DDR controller. Please refer to Freescale's AN3221 "MPC5200B SDRAM
-        * Initialization and Configuration", 3.3.1 SDelay--MBAR + 0x0190:
-        *
-        * "The SDelay should be written to a value of 0x00000004. It is
-        * required to account for changes caused by normal wafer processing
-        * parameters."
-        */
-       svr = get_svr();
-       pvr = get_pvr();
-       if ((SVR_MJREV(svr) >= 2) &&
-           (PVR_MAJ(pvr) == 1) && (PVR_MIN(pvr) == 4)) {
-
-               out_be32 ((unsigned __iomem *)MPC5XXX_SDRAM_SDELAY, 0x04);
-               __asm__ volatile ("sync");
-       }
-
-       return dramsize + dramsize2;
-}
-
-int checkboard (void)
-{
-       puts ("Board: MUC.MC-52 HW WDT ");
-#if defined(CONFIG_HW_WATCHDOG)
-       puts ("enabled\n");
-#else
-       puts ("disabled\n");
-#endif
-       return 0;
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[]                = "key_magic";
-static uchar kbd_command_prefix[]      = "key_cmd";
-
-#define S1_ROT 0xf0
-#define S2_Q   0x40
-#define S2_M   0x20
-
-struct kbd_data_t {
-       char s1;
-       char s2;
-};
-
-struct kbd_data_t* get_keys (struct kbd_data_t *kbd_data)
-{
-       kbd_data->s1 = in_8 ((volatile uchar*)CONFIG_SYS_STATUS1_BASE);
-       kbd_data->s2 = in_8 ((volatile uchar*)CONFIG_SYS_STATUS2_BASE);
-
-       return kbd_data;
-}
-
-static int compare_magic (const struct kbd_data_t *kbd_data, char *str)
-{
-       char s1 = str[0];
-       char s2;
-
-       if (s1 >= '0' && s1 <= '9')
-               s1 -= '0';
-       else if (s1 >= 'a' && s1 <= 'f')
-               s1 = s1 - 'a' + 10;
-       else if (s1 >= 'A' && s1 <= 'F')
-               s1 = s1 - 'A' + 10;
-       else
-               return -1;
-
-       if (((S1_ROT & kbd_data->s1) >> 4) != s1)
-               return -1;
-
-       s2 = (S2_Q | S2_M) & kbd_data->s2;
-
-       switch (str[1]) {
-       case 'q':
-       case 'Q':
-               if (s2 == S2_Q)
-                       return -1;
-               break;
-       case 'm':
-       case 'M':
-               if (s2 == S2_M)
-                       return -1;
-               break;
-       case '\0':
-               if (s2 == (S2_Q | S2_M))
-                       return 0;
-       default:
-               return -1;
-       }
-
-       if (str[2])
-               return -1;
-
-       return 0;
-}
-
-static char *key_match (const struct kbd_data_t *kbd_data)
-{
-       char magic[sizeof (kbd_magic_prefix) + 1];
-       char *suffix;
-       char *kbd_magic_keys;
-
-       /*
-        * The following string defines the characters that can be appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
-               kbd_magic_keys = "";
-
-       /* loop over all magic keys;
-        * use '\0' suffix in case of empty string
-        */
-       for (suffix = kbd_magic_keys; *suffix ||
-                    suffix == kbd_magic_keys; ++suffix) {
-               sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-
-               if (compare_magic(kbd_data, getenv(magic)) == 0) {
-                       char cmd_name[sizeof (kbd_command_prefix) + 1];
-                       char *cmd;
-
-                       sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
-                       cmd = getenv (cmd_name);
-
-                       return (cmd);
-               }
-       }
-
-       return (NULL);
-}
-
-#endif /* CONFIG_PREBOOT */
-
-int misc_init_r (void)
-{
-#ifdef CONFIG_PREBOOT
-       struct kbd_data_t kbd_data;
-       /* Decode keys */
-       char *str = strdup (key_match (get_keys (&kbd_data)));
-       /* Set or delete definition */
-       setenv ("preboot", str);
-       free (str);
-#endif /* CONFIG_PREBOOT */
-
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x38), ' ');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x39), ' ');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3A), ' ');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3B), ' ');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3C), ' ');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3D), ' ');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3E), ' ');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3F), ' ');
-
-       return 0;
-}
-
-int board_early_init_r (void)
-{
-       out_be32 ((unsigned __iomem *)MPC5XXX_BOOTCS_CFG, in_be32 ((unsigned __iomem *)MPC5XXX_BOOTCS_CFG) & ~0x1);
-       out_be32 ((unsigned __iomem *)MPC5XXX_BOOTCS_START, START_REG(CONFIG_SYS_FLASH_BASE));
-       out_be32 ((unsigned __iomem *)MPC5XXX_CS0_START, START_REG(CONFIG_SYS_FLASH_BASE));
-       out_be32 ((unsigned __iomem *)MPC5XXX_BOOTCS_STOP,
-               STOP_REG(CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_SIZE));
-       out_be32 ((unsigned __iomem *)MPC5XXX_CS0_STOP,
-               STOP_REG(CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_SIZE));
-       return 0;
-}
-
-int last_stage_init (void)
-{
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x38), 'M');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x39), 'U');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3A), 'C');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3B), '.');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3C), 'M');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3D), 'C');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3E), '5');
-       out_8 ((volatile uchar *)(CONFIG_SYS_DISPLAY_BASE + 0x3F), '2');
-
-       return 0;
-}
-
-#if defined(CONFIG_HW_WATCHDOG)
-#define GPT_OUT_0      0x00000027
-#define GPT_OUT_1      0x00000037
-void hw_watchdog_reset (void)
-{
-       /* Trigger HW Watchdog with TIMER_0 */
-       out_be32 ((unsigned __iomem *)MPC5XXX_GPT0_ENABLE, GPT_OUT_1);
-       out_be32 ((unsigned __iomem *)MPC5XXX_GPT0_ENABLE, GPT_OUT_0);
-}
-#endif
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init (struct pci_controller *);
-
-void pci_init_board (void)
-{
-       pci_mpc5xxx_init (&hose);
-}
-#endif
-
-#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
-{
-       ft_cpu_setup(blob, bd);
-}
-#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/manroland/uc100/Kconfig b/board/manroland/uc100/Kconfig
deleted file mode 100644 (file)
index 08f681b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_UC100
-
-config SYS_BOARD
-       default "uc100"
-
-config SYS_VENDOR
-       default "manroland"
-
-config SYS_CONFIG_NAME
-       default "uc100"
-
-endif
diff --git a/board/manroland/uc100/MAINTAINERS b/board/manroland/uc100/MAINTAINERS
deleted file mode 100644 (file)
index 260471c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-UC100 BOARD
-M:     Stefan Roese <sr@denx.de>
-S:     Maintained
-F:     board/manroland/uc100/
-F:     include/configs/uc100.h
-F:     configs/uc100_defconfig
diff --git a/board/manroland/uc100/Makefile b/board/manroland/uc100/Makefile
deleted file mode 100644 (file)
index 8e69c52..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = uc100.o pcmcia.o
diff --git a/board/manroland/uc100/pcmcia.c b/board/manroland/uc100/pcmcia.c
deleted file mode 100644 (file)
index db3821a..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if defined(CONFIG_CMD_PCMCIA)
-#define        CONFIG_PCMCIA
-#endif
-
-#if (defined(CONFIG_CMD_IDE)) && defined(CONFIG_IDE_8xx_PCCARD)
-#define        CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "UC100"
-
-/*
- * Remark: don't turn off OE "__MY_PCMCIA_GCRX_CXOE" on UC100 board.
- *         This leads to board-hangup! (sr, 8 Dez. 2004)
- */
-static void cfg_ports (void)
-{
-       volatile immap_t        *immap;
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-
-       /*
-        * Configure Port A for MAX1602 PC-Card Power-Interface Switch
-        */
-       immap->im_ioport.iop_padat &= ~0x8000;  /* set port x output to low */
-       immap->im_ioport.iop_padir |= 0x8000;   /* enable port x as output */
-
-       debug ("Set Port A: PAR: %08x DIR: %08x DAT: %08x\n",
-              immap->im_ioport.iop_papar, immap->im_ioport.iop_padir,
-              immap->im_ioport.iop_padat);
-}
-
-int pcmcia_hardware_enable(int slot)
-{
-       volatile immap_t        *immap;
-       volatile pcmconf8xx_t   *pcmp;
-       volatile sysconf8xx_t   *sysp;
-       uint reg, mask;
-
-       debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       udelay(10000);
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-       sysp  = (sysconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_siu_conf));
-       pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-
-       /* Configure Ports for TPS2211A PC-Card Power-Interface Switch */
-       cfg_ports ();
-
-       /*
-        * Configure SIUMCR to enable PCMCIA port B
-        * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
-        */
-       sysp->sc_siumcr &= ~SIUMCR_DBGC11;      /* set DBGC to 00 */
-
-       /* clear interrupt state, and disable interrupts */
-       pcmp->pcmc_pscr =  PCMCIA_MASK(_slot_);
-       pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
-       /*
-        * Disable interrupts, DMA, and PCMCIA buffers
-        * (isolate the interface) and assert RESET signal
-        */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       /*
-        * Make sure there is a card in the slot, then configure the interface.
-        */
-       udelay(10000);
-       debug ("[%d] %s: PIPR(%p)=0x%x\n",
-              __LINE__,__FUNCTION__,
-              &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
-       if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
-               printf ("   No Card found\n");
-               return (1);
-       }
-
-       /*
-        * Power On.
-        */
-       mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
-       reg  = pcmp->pcmc_pipr;
-       debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
-              reg,
-              (reg&PCMCIA_VS1(slot))?"n":"ff",
-              (reg&PCMCIA_VS2(slot))?"n":"ff");
-
-       if ((reg & mask) == mask)
-               puts (" 5.0V card found: ");
-       else
-               puts (" 3.3V card found: ");
-
-       /*  switch VCC on */
-       immap->im_ioport.iop_padat |= 0x8000; /* power enable 3.3V */
-
-       udelay(10000);
-
-       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(_slot_);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-
-       udelay(250000); /* some cards need >150 ms to come up :-( */
-
-       debug ("# hardware_enable done\n");
-
-       return (0);
-}
-
-
-#if defined(CONFIG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
-       volatile immap_t        *immap;
-       volatile cpm8xx_t       *cp;
-       volatile pcmconf8xx_t   *pcmp;
-       u_long reg;
-
-       debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-       pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-
-       /* switch VCC off */
-       immap->im_ioport.iop_padat &= ~0x8000; /* power disable 3.3V */
-
-       /* Configure PCMCIA General Control Register */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       PCMCIA_PGCRX(_slot_) = reg;
-
-       udelay(10000);
-
-       return (0);
-}
-#endif
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
-       u_long reg;
-
-       debug ("voltage_set: "
-                       PCMCIA_BOARD_MSG
-                       " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
-       'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
-       /*
-        * Disable PCMCIA buffers (isolate the interface)
-        * and assert RESET signal
-        */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = PCMCIA_PGCRX(_slot_);
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       /*
-        * Configure Port C pins for
-        * 5 Volts Enable and 3 Volts enable,
-        * Turn all power pins to Hi-Z
-        */
-       debug ("PCMCIA power OFF\n");
-       cfg_ports ();   /* Enables switch, but all in Hi-Z */
-
-       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(_slot_);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
-              slot+'A');
-       return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/manroland/uc100/uc100.c b/board/manroland/uc100/uc100.c
deleted file mode 100644 (file)
index 31f08dd..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#if 0
-#define DEBUG
-#endif
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <i2c.h>
-#include <miiphy.h>
-
-int fec8xx_miiphy_write(char *devname, unsigned char  addr,
-               unsigned char  reg, unsigned short value);
-
-/*********************************************************************/
-/* UPMA Pre Initilization Table by WV (Miron MT48LC16M16A2-7E B)     */
-/*********************************************************************/
-const uint sdram_init_upm_table[] = {
-       /* SDRAM Initialisation Sequence (offset 0 in UPMA RAM) WV */
-       /* NOP    - Precharge - AutoRefr  - NOP       - NOP        */
-       /* NOP    - AutoRefr  - NOP                                */
-       /* NOP    - NOP       - LoadModeR - NOP       - Active     */
-       /* Position of Single Read                                 */
-       0x0ffffc04, 0x0ff77c04, 0x0ff5fc04, 0x0ffffc04, 0x0ffffc04,
-       0x0ffffc04, 0x0ff5fc04, 0x0ffffc04,
-
-       /* Burst Read. (offset 8 in UPMA RAM)     */
-       /* Cycle lent for Initialisation WV */
-       0x0ffffc04, 0x0ffffc34, 0x0f057c34, 0x0ffffc30, 0x1ff7fc05,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Single Write. (offset 18 in UPMA RAM) */
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Burst Write. (offset 20 in UPMA RAM) */
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Refresh  (offset 30 in UPMA RAM) */
-       0x0FF77C04, 0x0FFFFC04, 0x0FF5FC84, 0x0FFFFC04, 0x0FFFFC04,
-       0x0FFFFC84, 0x1FFFFC05, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Exception. (offset 3c in UPMA RAM) */
-       0x7FFFFC05, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-};
-
-/*********************************************************************/
-/* UPMA initilization table.                                         */
-/*********************************************************************/
-const uint sdram_upm_table[] = {
-       /* single read. (offset 0 in UPMA RAM) */
-       0x0F07FC04, 0x0FFFFC04, 0x00BDFC04, 0x0FF77C00, 0x1FFFFC05,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,     /* 0x05-0x07 new WV */
-
-       /* Burst Read. (offset 8 in UPMA RAM) */
-       0x0F07FC04, 0x0FFFFC04, 0x00BDFC04, 0x00FFFC00, 0x00FFFC00,
-       0x00FFFC00, 0x0FF77C00, 0x1FFFFC05, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Single Write. (offset 18 in UPMA RAM) */
-       0x0F07FC04, 0x0FFFFC00, 0x00BD7C04, 0x0FFFFC04, 0x0FF77C04,
-       0x1FFFFC05, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Burst Write. (offset 20 in UPMA RAM) */
-       0x0F07FC04, 0x0FFFFC00, 0x00BD7C00, 0x00FFFC00, 0x00FFFC00,
-       0x00FFFC04, 0x0FFFFC04, 0x0FF77C04, 0x1FFFFC05, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Refresh  (offset 30 in UPMA RAM) */
-       0x0FF77C04, 0x0FFFFC04, 0x0FF5FC84, 0x0FFFFC04, 0x0FFFFC04,
-       0x0FFFFC84, 0x1FFFFC05, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Exception. (offset 3c in UPMA RAM) */
-       0x7FFFFC05, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, /* 0x3C new WV */
-};
-
-/*********************************************************************/
-/* UPMB initilization table.                                         */
-/*********************************************************************/
-const uint mpm_upm_table[] = {
-       /*  single read. (offset 0 in upm RAM) */
-       0x8FF00004, 0x0FF00004, 0x0FF81004, 0x1FF00001,
-       0x1FF00001, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* burst read. (Offset 8 in upm RAM)   */
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* single write. (Offset 0x18 in upm RAM) */
-       0x8FF00004, 0x0FF00004, 0x0FF81004, 0x0FF00004,
-       0x0FF00004, 0x1FF00001, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /*  burst write. (Offset 0x20 in upm RAM) */
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Refresh cycle, offset 0x30 */
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /* Exception, 0ffset 0x3C */
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-};
-
-
-int board_switch(void)
-{
-       volatile pcmconf8xx_t   *pcmp;
-
-       pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-
-       return ((pcmp->pcmc_pipr >> 24) & 0xf);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming UC100");
-       } else {
-               puts(str);
-       }
-
-       printf (" (SWITCH=%1X)\n", board_switch());
-
-       return 0;
-}
-
-
-/*
- * Initialize SDRAM
- */
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       /*---------------------------------------------------------------------*/
-       /* Initialize the UPMA/UPMB registers with the appropriate table.      */
-       /*---------------------------------------------------------------------*/
-       upmconfig (UPMA, (uint *) sdram_init_upm_table,
-                  sizeof (sdram_init_upm_table) / sizeof (uint));
-       upmconfig (UPMB, (uint *) mpm_upm_table,
-                  sizeof (mpm_upm_table) / sizeof (uint));
-
-       /*---------------------------------------------------------------------*/
-       /* Memory Periodic Timer Prescaler: divide by 16                       */
-       /*---------------------------------------------------------------------*/
-       memctl->memc_mptpr = 0x0200; /* Divide by 32 WV */
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_VAL & 0xFF7FFFFF; /* Bit 8 := "0" Kein Refresh WV */
-       memctl->memc_mbmr = CONFIG_SYS_MBMR_VAL;
-
-       /*---------------------------------------------------------------------*/
-       /* Initialize the Memory Controller registers, MPTPR, Chip Select 1    */
-       /* for SDRAM                                                           */
-       /*                                                                     */
-       /* NOTE: The refresh rate in MAMR reg is set according to the lowest   */
-       /*       clock rate (16.67MHz) to allow proper operation for all ADS   */
-       /*       clock frequencies.                                            */
-       /*---------------------------------------------------------------------*/
-       memctl->memc_or1 = CONFIG_SYS_OR1_PRELIM;
-       memctl->memc_br1 = CONFIG_SYS_BR1_PRELIM;
-
-       /*-------------------------------------------------------------------*/
-       /* Wait at least 200 usec for DRAM to stabilize, this magic number   */
-       /* obtained from the init code.                                      */
-       /*-------------------------------------------------------------------*/
-       udelay(200);
-
-       memctl->memc_mamr = (memctl->memc_mamr | 0x04) & ~0x08;
-
-       memctl->memc_br1 = CONFIG_SYS_BR1_PRELIM;
-       memctl->memc_or1 = CONFIG_SYS_OR1_PRELIM;
-
-       /*---------------------------------------------------------------------*/
-       /* run MRS command in location 5-8 of UPMB.                            */
-       /*---------------------------------------------------------------------*/
-       memctl->memc_mar = 0x88;
-       /* RUN UPMA on CS1 1-time from UPMA addr 0x05 */
-
-       memctl->memc_mcr = 0x80002100;
-       /* RUN UPMA on CS1 1-time from UPMA addr 0x00 WV */
-
-       udelay(200);
-
-       /*---------------------------------------------------------------------*/
-       /* Initialisation for normal access WV                                 */
-       /*---------------------------------------------------------------------*/
-
-       /*---------------------------------------------------------------------*/
-       /* Initialize the UPMA register with the appropriate table.            */
-       /*---------------------------------------------------------------------*/
-       upmconfig (UPMA, (uint *) sdram_upm_table,
-                  sizeof (sdram_upm_table) / sizeof (uint));
-
-       /*---------------------------------------------------------------------*/
-       /* rerstore MBMR value (4-beat refresh burst.)                         */
-       /*---------------------------------------------------------------------*/
-       memctl->memc_mamr = CONFIG_SYS_MAMR_VAL | 0x00800000; /* Bit 8 := "1" Refresh Enable WV */
-
-       udelay(200);
-
-       return (64 * 1024 * 1024); /* fixed setup for 64MBytes! */
-}
-
-
-int misc_init_r (void)
-{
-       uchar val;
-
-       /*
-        * Make sure that RTC has clock output enabled (triggers watchdog!)
-        */
-       val = i2c_reg_read (CONFIG_SYS_I2C_RTC_ADDR, 0x0D);
-       val |= 0x80;
-       i2c_reg_write (CONFIG_SYS_I2C_RTC_ADDR, 0x0D, val);
-
-       /*
-        * Configure PHY to setup LED's correctly and use 100MBit, FD
-        */
-       mii_init();
-
-       /* disable auto-negotiation, 100mbit, full-duplex */
-       fec8xx_miiphy_write(NULL, 0, MII_BMCR, 0x2100);
-
-       /* set LED's to Link, Transmit, Receive           */
-       fec8xx_miiphy_write(NULL,  0, MII_NWAYTEST, 0x4122);
-
-       return 0;
-}
diff --git a/board/manroland/uc101/Kconfig b/board/manroland/uc101/Kconfig
deleted file mode 100644 (file)
index c285b22..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_UC101
-
-config SYS_BOARD
-       default "uc101"
-
-config SYS_VENDOR
-       default "manroland"
-
-config SYS_CONFIG_NAME
-       default "uc101"
-
-endif
diff --git a/board/manroland/uc101/MAINTAINERS b/board/manroland/uc101/MAINTAINERS
deleted file mode 100644 (file)
index 0fc7b85..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-UC101 BOARD
-M:     Heiko Schocher <hs@denx.de>
-S:     Maintained
-F:     board/manroland/uc101/
-F:     include/configs/uc101.h
-F:     configs/uc101_defconfig
diff --git a/board/manroland/uc101/Makefile b/board/manroland/uc101/Makefile
deleted file mode 100644 (file)
index 9289d91..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := uc101.o
diff --git a/board/manroland/uc101/uc101.c b/board/manroland/uc101/uc101.c
deleted file mode 100644 (file)
index 5c5afa2..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * (C) Copyright 2006
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * (C) Copyright 2003-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * (C) Copyright 2004
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <fdt_support.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <malloc.h>
-
-/* some SIMPLE GPIO Pins */
-#define GPIO_USB_8     (31-12)
-#define GPIO_USB_7     (31-13)
-#define GPIO_USB_6     (31-14)
-#define GPIO_USB_0     (31-15)
-#define GPIO_PSC3_7    (31-18)
-#define GPIO_PSC3_6    (31-19)
-#define GPIO_PSC3_1    (31-22)
-#define GPIO_PSC3_0    (31-23)
-
-/* some simple Interrupt GPIO Pins */
-#define GPIO_PSC3_8    2
-#define GPIO_USB1_9    3
-
-#define GPT_OUT_0      0x00000027
-#define GPT_OUT_1      0x00000037
-#define        GPT_DISABLE     0x00000000      /* GPT pin disabled */
-
-#define GP_SIMP_ENABLE_O(n, v) {pgpio->simple_dvo |= (v << n); \
-                               pgpio->simple_ddr |= (1 << n); \
-                               pgpio->simple_gpioe |= (1 << n); \
-                               }
-
-#define GP_SIMP_ENABLE_I(n) {  pgpio->simple_ddr |= ~(1 << n); \
-                               pgpio->simple_gpioe |= (1 << n); \
-                               }
-
-#define GP_SIMP_SET_O(n, v)  (pgpio->simple_dvo = v ? \
-                               (pgpio->simple_dvo | (1 << n)) : \
-                               (pgpio->simple_dvo & ~(1 << n)) )
-
-#define GP_SIMP_GET_O(n)  ((pgpio->simple_dvo >> n) & 1)
-#define GP_SIMP_GET_I(n)  ((pgpio->simple_ival >> n) & 1)
-
-#define GP_SINT_SET_O(n, v)  (pgpio->sint_dvo = v ? \
-                               (pgpio->sint_dvo | (1 << n)) : \
-                               (pgpio->sint_dvo & ~(1 << n)) )
-
-#define GP_SINT_ENABLE_O(n, v) {pgpio->sint_ode &= ~(1 << n); \
-                               pgpio->sint_ddr |= (1 << n); \
-                               GP_SINT_SET_O(n, v); \
-                               pgpio->sint_gpioe |= (1 << n); \
-                               }
-
-#define GP_SINT_ENABLE_I(n) {  pgpio->sint_ddr |= ~(1 << n); \
-                               pgpio->sint_gpioe |= (1 << n); \
-                               }
-
-#define GP_SINT_GET_O(n)  ((pgpio->sint_ival >> n) & 1)
-#define GP_SINT_GET_I(n)  ((pgpio-ntt_ival >> n) & 1)
-
-#define GP_TIMER_ENABLE_O(n, v) ( \
-       ((volatile struct mpc5xxx_gpt *)(MPC5XXX_GPT + n))->emsr = v ? \
-                               GPT_OUT_1 : \
-                               GPT_OUT_0 )
-
-#define GP_TIMER_SET_O(n, v)   GP_TIMER_ENABLE_O(n, v)
-
-#define GP_TIMER_GET_O(n, v) ( \
-       (((volatile struct mpc5xxx_gpt *)(MPC5XXX_GPT + n))->emsr & 0x10) >> 4)
-
-#define GP_TIMER_GET_I(n, v) ( \
-       (((volatile struct mpc5xxx_gpt *)(MPC5XXX_GPT + n))->sr & 0x100) >> 8)
-
-#ifndef CONFIG_SYS_RAMBOOT
-static void sdram_start (int hi_addr)
-{
-       long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
-       /* unlock mode register */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* precharge all banks */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set mode register: extended mode */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
-       __asm__ volatile ("sync");
-
-       /* set mode register: reset DLL */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
-       __asm__ volatile ("sync");
-#endif
-
-       /* precharge all banks */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* auto refresh */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* set mode register */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
-       __asm__ volatile ("sync");
-
-       /* normal operation */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
-       __asm__ volatile ("sync");
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- *           use of CONFIG_SYS_SDRAM_BASE. The code does not work if CONFIG_SYS_SDRAM_BASE
- *           is something else than 0x00000000.
- */
-
-phys_size_t initdram (int board_type)
-{
-       ulong dramsize = 0;
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong test1, test2;
-
-       /* setup SDRAM chip selects */
-       *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001c; /* 512MB at 0x0 */
-       *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x40000000; /* disabled */
-       __asm__ volatile ("sync");
-
-       /* setup config registers */
-       *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
-       *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set tap delay */
-       *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
-       __asm__ volatile ("sync");
-#endif
-
-       /* find RAM size using SDRAM CS0 only */
-       sdram_start(0);
-       test1 = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, 0x20000000);
-       sdram_start(1);
-       test2 = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, 0x20000000);
-       if (test1 > test2) {
-               sdram_start(0);
-               dramsize = test1;
-       } else {
-               dramsize = test2;
-       }
-
-       /* memory smaller than 1MB is impossible */
-       if (dramsize < (1 << 20)) {
-               dramsize = 0;
-       }
-
-       /* set SDRAM CS0 size according to the amount of RAM found */
-       if (dramsize > 0) {
-               *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 +
-                       __builtin_ffs(dramsize >> 20) - 1;
-       } else {
-               *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
-       }
-
-       *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
-#else /* CONFIG_SYS_RAMBOOT */
-
-       /* retrieve size of memory connected to SDRAM CS0 */
-       dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
-       if (dramsize >= 0x13) {
-               dramsize = (1 << (dramsize - 0x13)) << 20;
-       } else {
-               dramsize = 0;
-       }
-
-       /* retrieve size of memory connected to SDRAM CS1 */
-       dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
-       if (dramsize2 >= 0x13) {
-               dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
-       } else {
-               dramsize2 = 0;
-       }
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-/*     return dramsize + dramsize2; */
-       return dramsize;
-}
-
-int checkboard (void)
-{
-       puts ("Board: MAN UC101\n");
-       /* clear the Display */
-       *(char *)(CONFIG_SYS_DISP_CWORD) = 0x80;
-       return 0;
-}
-
-static void init_ports (void)
-{
-       volatile struct mpc5xxx_gpio *pgpio =
-               (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
-
-       GP_SIMP_ENABLE_I(GPIO_USB_8);   /* HEX Bit 3 */
-       GP_SIMP_ENABLE_I(GPIO_USB_7);   /* HEX Bit 2 */
-       GP_SIMP_ENABLE_I(GPIO_USB_6);   /* HEX Bit 1 */
-       GP_SIMP_ENABLE_I(GPIO_USB_0);   /* HEX Bit 0 */
-       GP_SIMP_ENABLE_I(GPIO_PSC3_0);  /* Switch Menue A */
-       GP_SIMP_ENABLE_I(GPIO_PSC3_1);  /* Switch Menue B */
-       GP_SIMP_ENABLE_I(GPIO_PSC3_6);  /* Switch Cold_Warm */
-       GP_SIMP_ENABLE_I(GPIO_PSC3_7);  /* Switch Restart */
-       GP_SINT_ENABLE_O(GPIO_PSC3_8, 0);       /* LED H2 */
-       GP_SINT_ENABLE_O(GPIO_USB1_9, 0);       /* LED H3 */
-       GP_TIMER_ENABLE_O(4, 0);        /* LED H4 */
-       GP_TIMER_ENABLE_O(5, 0);        /* LED H5 */
-       GP_TIMER_ENABLE_O(3, 0);        /* LED HB */
-       GP_TIMER_ENABLE_O(1, 0);        /* RES_COLDSTART */
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[]                = "key_magic";
-static uchar kbd_command_prefix[]      = "key_cmd";
-
-struct kbd_data_t {
-       char s1;
-};
-
-struct kbd_data_t* get_keys (struct kbd_data_t *kbd_data)
-{
-       volatile struct mpc5xxx_gpio *pgpio =
-               (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
-
-       kbd_data->s1 = GP_SIMP_GET_I(GPIO_USB_8) << 3 | \
-                       GP_SIMP_GET_I(GPIO_USB_7) << 2 | \
-                       GP_SIMP_GET_I(GPIO_USB_6) << 1 | \
-                       GP_SIMP_GET_I(GPIO_USB_0) << 0;
-       return kbd_data;
-}
-
-static int compare_magic (const struct kbd_data_t *kbd_data, char *str)
-{
-       char s1 = str[0];
-
-       if (s1 >= '0' && s1 <= '9')
-               s1 -= '0';
-       else if (s1 >= 'a' && s1 <= 'f')
-               s1 = s1 - 'a' + 10;
-       else if (s1 >= 'A' && s1 <= 'F')
-               s1 = s1 - 'A' + 10;
-       else
-               return -1;
-
-       if (s1 != kbd_data->s1) return -1;
-       return 0;
-}
-
-static char *key_match (const struct kbd_data_t *kbd_data)
-{
-       char magic[sizeof (kbd_magic_prefix) + 1];
-       char *suffix;
-       char *kbd_magic_keys;
-
-       /*
-        * The following string defines the characters that can be appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
-               kbd_magic_keys = "";
-
-       /* loop over all magic keys;
-        * use '\0' suffix in case of empty string
-        */
-       for (suffix = kbd_magic_keys; *suffix ||
-                    suffix == kbd_magic_keys; ++suffix) {
-               sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-
-               if (compare_magic(kbd_data, getenv(magic)) == 0) {
-                       char cmd_name[sizeof (kbd_command_prefix) + 1];
-                       char *cmd;
-
-                       sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
-                       cmd = getenv (cmd_name);
-
-                       return (cmd);
-               }
-       }
-
-       return (NULL);
-}
-
-#endif /* CONFIG_PREBOOT */
-
-int misc_init_r (void)
-{
-       /* Init the I/O ports */
-       init_ports ();
-
-#ifdef CONFIG_PREBOOT
-       struct kbd_data_t kbd_data;
-       /* Decode keys */
-       char *str = strdup (key_match (get_keys (&kbd_data)));
-       /* Set or delete definition */
-       setenv ("preboot", str);
-       free (str);
-#endif /* CONFIG_PREBOOT */
-       return 0;
-}
-
-int board_early_init_r (void)
-{
-       *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-       *(vu_long *)MPC5XXX_BOOTCS_START =
-       *(vu_long *)MPC5XXX_CS0_START = START_REG(CONFIG_SYS_FLASH_BASE);
-       *(vu_long *)MPC5XXX_BOOTCS_STOP =
-       *(vu_long *)MPC5XXX_CS0_STOP = STOP_REG(CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_SIZE);
-       /* Interbus enable it here ?? */
-       *(vu_long *)MPC5XXX_GPT6_ENABLE = GPT_OUT_1;
-       return 0;
-}
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined(CONFIG_HW_WATCHDOG)
-void hw_watchdog_reset(void)
-{
-       /* Trigger HW Watchdog with TIMER_0 */
-       *(vu_long *)MPC5XXX_GPT0_ENABLE = GPT_OUT_1;
-       *(vu_long *)MPC5XXX_GPT0_ENABLE = GPT_OUT_0;
-}
-#endif
-
-#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
-{
-       ft_cpu_setup(blob, bd);
-}
-#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/board/matrix_vision/common/Makefile b/board/matrix_vision/common/Makefile
deleted file mode 100644 (file)
index 699da1c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = mv_common.o
diff --git a/board/matrix_vision/common/mv_common.c b/board/matrix_vision/common/mv_common.c
deleted file mode 100644 (file)
index 1be5aba..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * (C) Copyright 2008
- * Andre Schwarz, Matrix Vision GmbH, andre.schwarz@matrix-vision.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <malloc.h>
-#include <environment.h>
-#include <fpga.h>
-#include <asm/io.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifndef CONFIG_ENV_IS_NOWHERE
-static char* entries_to_keep[] = {
-       "serial#", "ethaddr", "eth1addr", "model_info", "sensor_cnt",
-       "fpgadatasize", "ddr_size", "use_dhcp", "use_static_ipaddr",
-       "static_ipaddr", "static_netmask", "static_gateway",
-       "syslog", "watchdog", "netboot", "evo8serialnumber" };
-
-#define MV_MAX_ENV_ENTRY_LENGTH        64
-#define MV_KEEP_ENTRIES                ARRAY_SIZE(entries_to_keep)
-
-void mv_reset_environment(void)
-{
-       int i;
-       char *s[MV_KEEP_ENTRIES];
-       char entries[MV_KEEP_ENTRIES][MV_MAX_ENV_ENTRY_LENGTH];
-
-       printf("\n*** RESET ENVIRONMENT ***\n");
-
-       memset(entries, 0, MV_KEEP_ENTRIES * MV_MAX_ENV_ENTRY_LENGTH);
-       for (i = 0; i < MV_KEEP_ENTRIES; i++) {
-               s[i] = getenv(entries_to_keep[i]);
-               if (s[i]) {
-                       printf("save '%s' : %s\n", entries_to_keep[i], s[i]);
-                       strncpy(entries[i], s[i], MV_MAX_ENV_ENTRY_LENGTH);
-               }
-       }
-
-       gd->env_valid = 0;
-       env_relocate();
-
-       for (i = 0; i < MV_KEEP_ENTRIES; i++) {
-               if (s[i]) {
-                       printf("restore '%s' : %s\n", entries_to_keep[i], s[i]);
-                       setenv(entries_to_keep[i], s[i]);
-               }
-       }
-
-       saveenv();
-}
-#endif
-
-int mv_load_fpga(void)
-{
-       int result;
-       size_t data_size = 0;
-       void *fpga_data = NULL;
-       char *datastr = getenv("fpgadata");
-       char *sizestr = getenv("fpgadatasize");
-
-       if (getenv("skip_fpga")) {
-               printf("found 'skip_fpga' -> FPGA _not_ loaded !\n");
-               return -1;
-       }
-       printf("loading FPGA\n");
-
-       if (datastr)
-               fpga_data = (void *)simple_strtoul(datastr, NULL, 16);
-       if (sizestr)
-               data_size = (size_t)simple_strtoul(sizestr, NULL, 16);
-       if (!data_size) {
-               printf("fpgadatasize invalid -> FPGA _not_ loaded !\n");
-               return -1;
-       }
-
-       result = fpga_load(0, fpga_data, data_size, BIT_FULL);
-       if (!result)
-               bootstage_mark(BOOTSTAGE_ID_START);
-
-       return result;
-}
-
-u8 *dhcp_vendorex_prep(u8 *e)
-{
-       char *ptr;
-
-       /* DHCP vendor-class-identifier = 60 */
-       if ((ptr = getenv("dhcp_vendor-class-identifier"))) {
-               *e++ = 60;
-               *e++ = strlen(ptr);
-               while (*ptr)
-                       *e++ = *ptr++;
-       }
-       /* DHCP_CLIENT_IDENTIFIER = 61 */
-       if ((ptr = getenv("dhcp_client_id"))) {
-               *e++ = 61;
-               *e++ = strlen(ptr);
-               while (*ptr)
-                       *e++ = *ptr++;
-       }
-
-       return e;
-}
-
-u8 *dhcp_vendorex_proc(u8 *popt)
-{
-       return NULL;
-}
diff --git a/board/matrix_vision/common/mv_common.h b/board/matrix_vision/common/mv_common.h
deleted file mode 100644 (file)
index 3693943..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- * Copyright 2008 Matrix Vision GmbH
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-extern int mv_load_fpga(void);
-extern void mv_reset_environment(void);
index a69359fa1d954a54f50fe0fb66d14f0313f10c15..c9d615b79a201872f66a55df5eed0b2bbcad5f66 100644 (file)
@@ -94,6 +94,12 @@ int board_mmc_init(bd_t *bis)
        omap_mmc_init(1, 0, 0, -1, -1);
        return 0;
 }
+
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+       twl4030_power_mmc_init(1);
+}
 #endif
 
 #if defined(CONFIG_CMD_NET)
index 1a2ac8d6c8650144da112ded528bd5e2539117d2..db429870102dc24f36330af30eaf0c29f8d34e2d 100644 (file)
@@ -348,7 +348,7 @@ int mac_read_from_eeprom(void)
 
        if (memcmp(&e.mac, "\0\0\0\0\0\0", 6) &&
                memcmp(&e.mac, "\xFF\xFF\xFF\xFF\xFF\xFF", 6)) {
-               char ethaddr[9];
+               char ethaddr[18];
 
                sprintf(ethaddr, "%02X:%02X:%02X:%02X:%02X:%02X",
                        e.mac[0],
index d34e2abf3677fb744f0853ec2c9829f1e717a642..d833ca0e2518ec3bdfa5982a8827e4cbbbf5c601 100644 (file)
@@ -1,19 +1,12 @@
 if TARGET_MAXBCM
 
-config SYS_CPU
-       string
-       default "armv7"
-
 config SYS_BOARD
-       string
        default "maxbcm"
 
 config SYS_SOC
-       string
        default "armada-xp"
 
 config SYS_CONFIG_NAME
-       string
        default "maxbcm"
 
 endif
diff --git a/board/mcc200/Kconfig b/board/mcc200/Kconfig
deleted file mode 100644 (file)
index 3b27eeb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_MCC200
-
-config SYS_BOARD
-       default "mcc200"
-
-config SYS_CONFIG_NAME
-       default "mcc200"
-
-endif
diff --git a/board/mcc200/MAINTAINERS b/board/mcc200/MAINTAINERS
deleted file mode 100644 (file)
index a59a498..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-MCC200 BOARD
-#M:    -
-S:     Maintained
-F:     board/mcc200/
-F:     include/configs/mcc200.h
-F:     configs/mcc200_defconfig
-F:     configs/mcc200_COM12_defconfig
-F:     configs/mcc200_COM12_highboot_defconfig
-F:     configs/mcc200_COM12_highboot_SDRAM_defconfig
-F:     configs/mcc200_COM12_SDRAM_defconfig
-F:     configs/mcc200_highboot_defconfig
-F:     configs/mcc200_highboot_SDRAM_defconfig
-F:     configs/mcc200_SDRAM_defconfig
-F:     configs/prs200_defconfig
-F:     configs/prs200_DDR_defconfig
-F:     configs/prs200_highboot_defconfig
-F:     configs/prs200_highboot_DDR_defconfig
diff --git a/board/mcc200/Makefile b/board/mcc200/Makefile
deleted file mode 100644 (file)
index db3b396..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := mcc200.o lcd.o auto_update.o
diff --git a/board/mcc200/auto_update.c b/board/mcc200/auto_update.c
deleted file mode 100644 (file)
index 43173ce..0000000
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * (C) Copyright 2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <image.h>
-#include <asm/byteorder.h>
-#include <usb.h>
-#include <part.h>
-
-#ifdef CONFIG_AUTO_UPDATE
-
-#ifndef CONFIG_USB_OHCI
-#error "must define CONFIG_USB_OHCI"
-#endif
-
-#ifndef CONFIG_USB_STORAGE
-#error "must define CONFIG_USB_STORAGE"
-#endif
-
-#ifndef CONFIG_SYS_HUSH_PARSER
-#error "must define CONFIG_SYS_HUSH_PARSER"
-#endif
-
-#if !defined(CONFIG_CMD_FAT)
-#error "must define CONFIG_CMD_FAT"
-#endif
-
-#undef AU_DEBUG
-
-#undef debug
-#ifdef AU_DEBUG
-#define debug(fmt,args...)     printf (fmt ,##args)
-#else
-#define debug(fmt,args...)
-#endif /* AU_DEBUG */
-
-/* possible names of files on the USB stick. */
-#define AU_FIRMWARE    "u-boot.img"
-#define AU_KERNEL      "kernel.img"
-#define AU_ROOTFS      "rootfs.img"
-
-struct flash_layout {
-       long start;
-       long end;
-};
-
-/* layout of the FLASH. ST = start address, ND = end address. */
-#define AU_FL_FIRMWARE_ST      0xfC000000
-#define AU_FL_FIRMWARE_ND      0xfC03FFFF
-#define AU_FL_KERNEL_ST                0xfC0C0000
-#define AU_FL_KERNEL_ND                0xfC1BFFFF
-#define AU_FL_ROOTFS_ST                0xFC1C0000
-#define AU_FL_ROOTFS_ND                0xFCFBFFFF
-
-static int au_usb_stor_curr_dev; /* current device */
-
-/* index of each file in the following arrays */
-#define IDX_FIRMWARE   0
-#define IDX_KERNEL     1
-#define IDX_ROOTFS     2
-
-/* max. number of files which could interest us */
-#define AU_MAXFILES 3
-
-/* pointers to file names */
-char *aufile[AU_MAXFILES] = {
-       AU_FIRMWARE,
-       AU_KERNEL,
-       AU_ROOTFS
-};
-
-/* sizes of flash areas for each file */
-long ausize[AU_MAXFILES] = {
-       (AU_FL_FIRMWARE_ND + 1) - AU_FL_FIRMWARE_ST,
-       (AU_FL_KERNEL_ND   + 1) - AU_FL_KERNEL_ST,
-       (AU_FL_ROOTFS_ND   + 1) - AU_FL_ROOTFS_ST,
-};
-
-/* array of flash areas start and end addresses */
-struct flash_layout aufl_layout[AU_MAXFILES] = {
-       { AU_FL_FIRMWARE_ST,    AU_FL_FIRMWARE_ND, },
-       { AU_FL_KERNEL_ST,      AU_FL_KERNEL_ND,   },
-       { AU_FL_ROOTFS_ST,      AU_FL_ROOTFS_ND,   },
-};
-
-ulong totsize;
-
-/* where to load files into memory */
-#define LOAD_ADDR ((unsigned char *)0x00200000)
-
-/* the root file system is the largest image */
-#define MAX_LOADSZ ausize[IDX_ROOTFS]
-
-/*i2c address of the keypad status*/
-#define I2C_PSOC_KEYPAD_ADDR   0x53
-
-/* keypad mask */
-#define KEYPAD_ROW     2
-#define KEYPAD_COL     2
-#define KEYPAD_MASK_LO ((1<<(KEYPAD_COL-1+(KEYPAD_ROW*3-3)))&0xFF)
-#define KEYPAD_MASK_HI ((1<<(KEYPAD_COL-1+(KEYPAD_ROW*3-3)))>>8)
-
-/* externals */
-extern int fat_register_device(block_dev_desc_t *, int);
-extern int file_fat_detectfs(void);
-extern long file_fat_read(const char *, void *, unsigned long);
-extern int i2c_read (unsigned char, unsigned int, int , unsigned char* , int);
-extern int flash_sect_erase(ulong, ulong);
-extern int flash_sect_protect (int, ulong, ulong);
-extern int flash_write (char *, ulong, ulong);
-extern int u_boot_hush_start(void);
-#ifdef CONFIG_PROGRESSBAR
-extern void show_progress(int, int);
-extern void lcd_puts (char *);
-extern void lcd_enable(void);
-#endif
-
-int au_check_cksum_valid(int idx, long nbytes)
-{
-       image_header_t *hdr;
-
-       hdr = (image_header_t *)LOAD_ADDR;
-#if defined(CONFIG_FIT)
-       if (genimg_get_format ((void *)hdr) != IMAGE_FORMAT_LEGACY) {
-               puts ("Non legacy image format not supported\n");
-               return -1;
-       }
-#endif
-
-       if (nbytes != image_get_image_size (hdr)) {
-               printf ("Image %s bad total SIZE\n", aufile[idx]);
-               return -1;
-       }
-       /* check the data CRC */
-       if (!image_check_dcrc (hdr)) {
-               printf ("Image %s bad data checksum\n", aufile[idx]);
-               return -1;
-       }
-       return 0;
-}
-
-int au_check_header_valid(int idx, long nbytes)
-{
-       image_header_t *hdr;
-       unsigned long checksum, fsize;
-
-       hdr = (image_header_t *)LOAD_ADDR;
-#if defined(CONFIG_FIT)
-       if (genimg_get_format ((void *)hdr) != IMAGE_FORMAT_LEGACY) {
-               puts ("Non legacy image format not supported\n");
-               return -1;
-       }
-#endif
-
-       /* check the easy ones first */
-#undef CHECK_VALID_DEBUG
-#ifdef CHECK_VALID_DEBUG
-       printf("magic %#x %#x ", image_get_magic (hdr), IH_MAGIC);
-       printf("arch %#x %#x ", image_get_arch (hdr), IH_ARCH_ARM);
-       printf("size %#x %#lx ", image_get_data_size (hdr), nbytes);
-       printf("type %#x %#x ", image_get_type (hdr), IH_TYPE_KERNEL);
-#endif
-       if (nbytes < image_get_header_size ()) {
-               printf ("Image %s bad header SIZE\n", aufile[idx]);
-               ausize[idx] = 0;
-               return -1;
-       }
-       if (!image_check_magic (hdr) || !image_check_arch (hdr, IH_ARCH_PPC)) {
-               printf ("Image %s bad MAGIC or ARCH\n", aufile[idx]);
-               ausize[idx] = 0;
-               return -1;
-       }
-       /* check the hdr CRC */
-       if (!image_check_hcrc (hdr)) {
-               printf ("Image %s bad header checksum\n", aufile[idx]);
-               ausize[idx] = 0;
-               return -1;
-       }
-       /* check the type - could do this all in one gigantic if() */
-       if ((idx == IDX_FIRMWARE) && !image_check_type (hdr, IH_TYPE_FIRMWARE)) {
-               printf ("Image %s wrong type\n", aufile[idx]);
-               ausize[idx] = 0;
-               return -1;
-       }
-       if ((idx == IDX_KERNEL) && !image_check_type (hdr, IH_TYPE_KERNEL)) {
-               printf ("Image %s wrong type\n", aufile[idx]);
-               ausize[idx] = 0;
-               return -1;
-       }
-       if ((idx == IDX_ROOTFS) &&
-                       (!image_check_type (hdr, IH_TYPE_RAMDISK) &&
-                       !image_check_type (hdr, IH_TYPE_FILESYSTEM))) {
-               printf ("Image %s wrong type\n", aufile[idx]);
-               ausize[idx] = 0;
-               return -1;
-       }
-       /* recycle checksum */
-       checksum = image_get_data_size (hdr);
-
-       fsize = checksum + image_get_header_size ();
-       /* for kernel and ramdisk the image header must also fit into flash */
-       if (idx == IDX_KERNEL || image_check_type (hdr, IH_TYPE_RAMDISK))
-               checksum += image_get_header_size ();
-
-       /* check the size does not exceed space in flash. HUSH scripts */
-       if ((ausize[idx] != 0) && (ausize[idx] < checksum)) {
-               printf ("Image %s is bigger than FLASH\n", aufile[idx]);
-               ausize[idx] = 0;
-               return -1;
-       }
-       /* Update with the real filesize */
-       ausize[idx] = fsize;
-
-       return checksum; /* return size to be written to flash */
-}
-
-int au_do_update(int idx, long sz)
-{
-       image_header_t *hdr;
-       char *addr;
-       long start, end;
-       int off, rc;
-       uint nbytes;
-
-       hdr = (image_header_t *)LOAD_ADDR;
-#if defined(CONFIG_FIT)
-       if (genimg_get_format ((void *)hdr) != IMAGE_FORMAT_LEGACY) {
-               puts ("Non legacy image format not supported\n");
-               return -1;
-       }
-#endif
-
-       /* execute a script */
-       if (image_check_type (hdr, IH_TYPE_SCRIPT)) {
-               addr = (char *)((char *)hdr + image_get_header_size ());
-               /* stick a NULL at the end of the script, otherwise */
-               /* parse_string_outer() runs off the end. */
-               addr[image_get_data_size (hdr)] = 0;
-               addr += 8;
-               run_command_list(addr, -1, 0);
-               return 0;
-       }
-
-       start = aufl_layout[idx].start;
-       end = aufl_layout[idx].end;
-
-       /* unprotect the address range */
-       /* this assumes that ONLY the firmware is protected! */
-       if (idx == IDX_FIRMWARE) {
-#undef AU_UPDATE_TEST
-#ifdef AU_UPDATE_TEST
-               /* erase it where Linux goes */
-               start = aufl_layout[1].start;
-               end = aufl_layout[1].end;
-#endif
-               flash_sect_protect(0, start, end);
-       }
-
-       /*
-        * erase the address range.
-        */
-       debug ("flash_sect_erase(%lx, %lx);\n", start, end);
-       flash_sect_erase(start, end);
-       mdelay(100);
-#ifdef CONFIG_PROGRESSBAR
-       show_progress(end - start, totsize);
-#endif
-
-       /* strip the header - except for the kernel and ramdisk */
-       if (image_check_type (hdr, IH_TYPE_KERNEL) ||
-                       image_check_type (hdr, IH_TYPE_RAMDISK)) {
-               addr = (char *)hdr;
-               off = image_get_header_size ();
-               nbytes = image_get_image_size (hdr);
-       } else {
-               addr = (char *)((char *)hdr + image_get_header_size ());
-#ifdef AU_UPDATE_TEST
-               /* copy it to where Linux goes */
-               if (idx == IDX_FIRMWARE)
-                       start = aufl_layout[1].start;
-#endif
-               off = 0;
-               nbytes = image_get_data_size (hdr);
-       }
-
-       /* copy the data from RAM to FLASH */
-       debug ("flash_write(%p, %lx %x)\n", addr, start, nbytes);
-       rc = flash_write(addr, start, nbytes);
-       if (rc != 0) {
-               printf("Flashing failed due to error %d\n", rc);
-               return -1;
-       }
-
-#ifdef CONFIG_PROGRESSBAR
-       show_progress(nbytes, totsize);
-#endif
-
-       /* check the data CRC of the copy */
-       if (crc32 (0, (uchar *)(start + off), image_get_data_size (hdr)) !=
-           image_get_dcrc (hdr)) {
-               printf ("Image %s Bad Data Checksum after COPY\n", aufile[idx]);
-               return -1;
-       }
-
-       /* protect the address range */
-       /* this assumes that ONLY the firmware is protected! */
-       if (idx == IDX_FIRMWARE)
-               flash_sect_protect(1, start, end);
-       return 0;
-}
-
-/*
- * this is called from board_init() after the hardware has been set up
- * and is usable. That seems like a good time to do this.
- * Right now the return value is ignored.
- */
-int do_auto_update(void)
-{
-       block_dev_desc_t *stor_dev;
-       long sz;
-       int i, res = 0, cnt, old_ctrlc;
-       char *env;
-       long start, end;
-
-#if 0 /* disable key-press detection to speed up boot-up time */
-       uchar keypad_status1[2] = {0,0}, keypad_status2[2] = {0,0};
-
-       /*
-        * Read keypad status
-        */
-       i2c_read(I2C_PSOC_KEYPAD_ADDR, 0, 0, keypad_status1, 2);
-       mdelay(500);
-       i2c_read(I2C_PSOC_KEYPAD_ADDR, 0, 0, keypad_status2, 2);
-
-       /*
-        * Check keypad
-        */
-       if ( !(keypad_status1[1] & KEYPAD_MASK_LO) ||
-             (keypad_status1[1] != keypad_status2[1])) {
-               return 0;
-       }
-
-#endif
-       au_usb_stor_curr_dev = -1;
-       /* start USB */
-       if (usb_stop() < 0) {
-               debug ("usb_stop failed\n");
-               return -1;
-       }
-       if (usb_init() < 0) {
-               debug ("usb_init failed\n");
-               return -1;
-       }
-       /*
-        * check whether a storage device is attached (assume that it's
-        * a USB memory stick, since nothing else should be attached).
-        */
-       au_usb_stor_curr_dev = usb_stor_scan(0);
-       if (au_usb_stor_curr_dev == -1) {
-               debug ("No device found. Not initialized?\n");
-               res = -1;
-               goto xit;
-       }
-       /* check whether it has a partition table */
-       stor_dev = get_dev("usb", 0);
-       if (stor_dev == NULL) {
-               debug ("uknown device type\n");
-               res = -1;
-               goto xit;
-       }
-       if (fat_register_device(stor_dev, 1) != 0) {
-               debug ("Unable to use USB %d:%d for fatls\n",
-                       au_usb_stor_curr_dev, 1);
-               res = -1;
-               goto xit;
-       }
-       if (file_fat_detectfs() != 0) {
-               debug ("file_fat_detectfs failed\n");
-       }
-
-       /*
-        * now check whether start and end are defined using environment
-        * variables.
-        */
-       start = -1;
-       end = 0;
-       env = getenv("firmware_st");
-       if (env != NULL)
-               start = simple_strtoul(env, NULL, 16);
-       env = getenv("firmware_nd");
-       if (env != NULL)
-               end = simple_strtoul(env, NULL, 16);
-       if (start >= 0 && end && end > start) {
-               ausize[IDX_FIRMWARE] = (end + 1) - start;
-               aufl_layout[IDX_FIRMWARE].start = start;
-               aufl_layout[IDX_FIRMWARE].end = end;
-       }
-       start = -1;
-       end = 0;
-       env = getenv("kernel_st");
-       if (env != NULL)
-               start = simple_strtoul(env, NULL, 16);
-       env = getenv("kernel_nd");
-       if (env != NULL)
-               end = simple_strtoul(env, NULL, 16);
-       if (start >= 0 && end && end > start) {
-               ausize[IDX_KERNEL] = (end + 1) - start;
-               aufl_layout[IDX_KERNEL].start = start;
-               aufl_layout[IDX_KERNEL].end = end;
-       }
-       start = -1;
-       end = 0;
-       env = getenv("rootfs_st");
-       if (env != NULL)
-               start = simple_strtoul(env, NULL, 16);
-       env = getenv("rootfs_nd");
-       if (env != NULL)
-               end = simple_strtoul(env, NULL, 16);
-       if (start >= 0 && end && end > start) {
-               ausize[IDX_ROOTFS] = (end + 1) - start;
-               aufl_layout[IDX_ROOTFS].start = start;
-               aufl_layout[IDX_ROOTFS].end = end;
-       }
-
-       /* make certain that HUSH is runnable */
-       u_boot_hush_start();
-       /* make sure that we see CTRL-C and save the old state */
-       old_ctrlc = disable_ctrlc(0);
-
-       /* validate the images first */
-       for (i = 0; i < AU_MAXFILES; i++) {
-               ulong imsize;
-               /* just read the header */
-               sz = file_fat_read(aufile[i], LOAD_ADDR, image_get_header_size ());
-               debug ("read %s sz %ld hdr %d\n",
-                       aufile[i], sz, image_get_header_size ());
-               if (sz <= 0 || sz < image_get_header_size ()) {
-                       debug ("%s not found\n", aufile[i]);
-                       ausize[i] = 0;
-                       continue;
-               }
-               /* au_check_header_valid() updates ausize[] */
-               if ((imsize = au_check_header_valid(i, sz)) < 0) {
-                       debug ("%s header not valid\n", aufile[i]);
-                       continue;
-               }
-               /* totsize accounts for image size and flash erase size */
-               totsize += (imsize + (aufl_layout[i].end - aufl_layout[i].start));
-       }
-
-#ifdef CONFIG_PROGRESSBAR
-       if (totsize) {
-               lcd_puts(" Update in progress\n");
-               lcd_enable();
-       }
-#endif
-
-       /* just loop thru all the possible files */
-       for (i = 0; i < AU_MAXFILES && totsize; i++) {
-               if (!ausize[i]) {
-                       continue;
-               }
-               sz = file_fat_read(aufile[i], LOAD_ADDR, ausize[i]);
-
-               debug ("read %s sz %ld hdr %d\n",
-                       aufile[i], sz, image_get_header_size ());
-
-               if (sz != ausize[i]) {
-                       printf ("%s: size %ld read %ld?\n", aufile[i], ausize[i], sz);
-                       continue;
-               }
-
-               if (sz <= 0 || sz <= image_get_header_size ()) {
-                       debug ("%s not found\n", aufile[i]);
-                       continue;
-               }
-               if (au_check_cksum_valid(i, sz) < 0) {
-                       debug ("%s checksum not valid\n", aufile[i]);
-                       continue;
-               }
-               /* this is really not a good idea, but it's what the */
-               /* customer wants. */
-               cnt = 0;
-               do {
-                       res = au_do_update(i, sz);
-                       /* let the user break out of the loop */
-                       if (ctrlc() || had_ctrlc()) {
-                               clear_ctrlc();
-                               break;
-                       }
-                       cnt++;
-#ifdef AU_TEST_ONLY
-               } while (res < 0 && cnt < (AU_MAXFILES + 1));
-               if (cnt < (AU_MAXFILES + 1))
-#else
-               } while (res < 0);
-#endif
-       }
-
-       /* restore the old state */
-       disable_ctrlc(old_ctrlc);
-#ifdef CONFIG_PROGRESSBAR
-       if (totsize) {
-               if (!res) {
-                       lcd_puts("\n  Update completed\n");
-               } else {
-                       lcd_puts("\n   Update error\n");
-               }
-               lcd_enable();
-       }
-#endif
- xit:
-       usb_stop();
-       return res;
-}
-#endif /* CONFIG_AUTO_UPDATE */
diff --git a/board/mcc200/lcd.c b/board/mcc200/lcd.c
deleted file mode 100644 (file)
index c911445..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * (C) Copyright 2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <lcd.h>
-#include <mpc5xxx.h>
-#include <malloc.h>
-
-#ifdef CONFIG_LCD
-
-#undef SWAPPED_LCD /* For the previous h/w version */
-/*
- *  The name of the device used for communication
- * with the PSoC.
- */
-#define PSOC_PSC       MPC5XXX_PSC2
-#define PSOC_BAUD      230400UL
-
-#define RTS_ASSERT     1
-#define RTS_NEGATE     0
-#define CTS_ASSERT     1
-#define CTS_NEGATE     0
-
-/*
- * Dimensions in pixels
- */
-#define LCD_WIDTH      160
-#define LCD_HEIGHT     100
-
-/*
- * Dimensions in bytes
- */
-#define LCD_BUF_SIZE   ((LCD_WIDTH*LCD_HEIGHT)>>3)
-
-#if LCD_BPP != LCD_MONOCHROME
-#error "MCC200 support only monochrome displays (1 bpp)!"
-#endif
-
-#define PSOC_RETRIES   10      /* each of PSOC_WAIT_TIME */
-#define PSOC_WAIT_TIME 10      /* usec */
-
-#include <video_font.h>
-#define FONT_WIDTH     VIDEO_FONT_WIDTH
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * LCD information
- */
-vidinfo_t panel_info = {
-       LCD_WIDTH, LCD_HEIGHT, LCD_BPP
-};
-
-
-/*
- *  The device we use to communicate with PSoC
- */
-int serial_inited = 0;
-
-/*
- *  Imported functions to support the PSoC protocol
- */
-extern int serial_init_dev (unsigned long dev_base);
-extern void serial_setrts_dev (unsigned long dev_base, int s);
-extern int serial_getcts_dev (unsigned long dev_base);
-extern void serial_putc_raw_dev(unsigned long dev_base, const char c);
-
-/*
- *  Just stubs for our driver, needed for compiling compabilty with
- * the common LCD driver code.
- */
-void lcd_initcolregs (void)
-{
-}
-
-void lcd_ctrl_init (void *lcdbase)
-{
-}
-
-/*
- * Function sends the contents of the frame-buffer to the LCD
- */
-void lcd_enable (void)
-{
-       int i, retries, fb_size;
-
-       if (!serial_inited) {
-               unsigned long baud;
-
-               baud = gd->baudrate;
-               gd->baudrate = PSOC_BAUD;
-               serial_init_dev(PSOC_PSC);
-               gd->baudrate = baud;
-               serial_setrts_dev (PSOC_PSC, RTS_ASSERT);
-               serial_inited = 1;
-       }
-
-       /*
-        *  Implement PSoC communication protocol:
-        * 1. Assert RTS, wait CTS assertion
-        * 2. Transmit data
-        * 3. Negate RTS, wait CTS negation
-        */
-
-       /* 1 */
-       serial_setrts_dev (PSOC_PSC, RTS_ASSERT);
-       for (retries = PSOC_RETRIES; retries; retries--) {
-               if (serial_getcts_dev(PSOC_PSC) == CTS_ASSERT)
-                       break;
-               udelay (PSOC_WAIT_TIME);
-       }
-       if (!retries) {
-               printf ("%s Error: PSoC doesn't respond on "
-                       "RTS ASSERT\n", __FUNCTION__);
-       }
-
-       /* 2 */
-       fb_size = panel_info.vl_row * (panel_info.vl_col >> 3);
-
-#if !defined(SWAPPED_LCD)
-       for (i=0; i<fb_size; i++) {
-               serial_putc_raw_dev(PSOC_PSC, ((char *)gd->fb_base)[i]);
-       }
-#else
-    {
-       int x, y, pwidth;
-       char *p = (char *)gd->fb_base;
-
-       pwidth = ((panel_info.vl_col+7) >> 3);
-       for (y=0; y<panel_info.vl_row; y++) {
-               i = y * pwidth;
-               for (x=0; x<pwidth; x+=5) {
-                       serial_putc_raw_dev (PSOC_PSC, (p[i+x+2]<<4 & 0xF0) | (p[i+x+3]>>4 & 0x0F));
-                       serial_putc_raw_dev (PSOC_PSC, (p[i+x+3]<<4 & 0xF0) | (p[i+x+4]>>4 & 0x0F));
-                       serial_putc_raw_dev (PSOC_PSC, (p[i+x+4]<<4 & 0xF0) | (p[i+x]>>4 & 0x0F));
-                       serial_putc_raw_dev (PSOC_PSC, (p[i+x]<<4 & 0xF0) | (p[i+x+1]>>4 & 0x0F));
-                       serial_putc_raw_dev (PSOC_PSC, (p[i+x+1]<<4 & 0xF0) | (p[i+x+2]>>4 & 0x0F));
-               }
-       }
-    }
-#endif
-
-       /* 3 */
-       serial_setrts_dev (PSOC_PSC, RTS_NEGATE);
-       for (retries = PSOC_RETRIES; retries; retries--) {
-               if (serial_getcts_dev(PSOC_PSC) == CTS_NEGATE)
-                       break;
-               udelay (PSOC_WAIT_TIME);
-       }
-
-       return;
-}
-#ifdef CONFIG_PROGRESSBAR
-
-void show_progress (int size, int tot)
-{
-       int cnt;
-       int i;
-       static int rc = 0;
-
-       rc += size;
-
-       cnt = ((LCD_WIDTH/FONT_WIDTH) * rc) / tot;
-
-       rc -= (cnt * tot) / (LCD_WIDTH/FONT_WIDTH);
-
-       for (i = 0; i < cnt; i++) {
-               lcd_putc(0xdc);
-       }
-
-       if (cnt) {
-               lcd_enable(); /* MCC200-specific - send the framebuffer to PSoC */
-       }
-}
-
-#endif
-
-int bmp_display(ulong addr, int x, int y)
-{
-       int ret;
-       bmp_image_t *bmp = (bmp_image_t *)addr;
-
-       if (!bmp) {
-               printf("There is no valid bmp file at the given address\n");
-               return 1;
-       }
-
-       ret = lcd_display_bitmap((ulong)bmp, x, y);
-
-       if ((unsigned long)bmp != addr)
-               free(bmp);
-
-       return ret;
-}
-
-#endif /* CONFIG_LCD */
diff --git a/board/mcc200/mcc200.c b/board/mcc200/mcc200.c
deleted file mode 100644 (file)
index 706886b..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * (C) Copyright 2003-2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <asm/processor.h>
-
-/* Two MT48LC8M32B2 for 32 MB */
-/* #include "mt48lc8m32b2-6-7.h" */
-
-/* One MT48LC16M32S2 for 64 MB */
-/* #include "mt48lc16m32s2-75.h" */
-#if defined (CONFIG_MCC200_SDRAM)
-#include "mt48lc16m16a2-75.h"
-#else
-#include "mt46v16m16-75.h"
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern flash_info_t flash_info[];      /* FLASH chips info */
-
-extern int do_auto_update(void);
-ulong flash_get_size (ulong base, int banknum);
-
-#ifndef CONFIG_SYS_RAMBOOT
-static void sdram_start (int hi_addr)
-{
-       long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
-       /* unlock mode register */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* precharge all banks */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set mode register: extended mode */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
-       __asm__ volatile ("sync");
-
-       /* set mode register: reset DLL */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
-       __asm__ volatile ("sync");
-#endif
-
-       /* precharge all banks */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* auto refresh */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       /* set mode register */
-       *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
-       __asm__ volatile ("sync");
-
-       /* normal operation */
-       *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
-       __asm__ volatile ("sync");
-
-       udelay(10);
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- *           use of CONFIG_SYS_SDRAM_BASE. The code does not work if CONFIG_SYS_SDRAM_BASE
- *           is something else than 0x00000000.
- */
-
-phys_size_t initdram (int board_type)
-{
-       ulong dramsize = 0;
-       ulong dramsize2 = 0;
-       uint svr, pvr;
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong test1, test2;
-
-       /* setup SDRAM chip selects */
-       *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001e;/* 2G at 0x0 */
-       *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x80000000;/* disabled */
-       __asm__ volatile ("sync");
-
-       /* setup config registers */
-       *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
-       *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
-       __asm__ volatile ("sync");
-
-#if SDRAM_DDR
-       /* set tap delay */
-       *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
-       __asm__ volatile ("sync");
-#endif
-
-       /* find RAM size using SDRAM CS0 only */
-       sdram_start(0);
-       test1 = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, 0x80000000);
-       sdram_start(1);
-       test2 = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, 0x80000000);
-       if (test1 > test2) {
-               sdram_start(0);
-               dramsize = test1;
-       } else {
-               dramsize = test2;
-       }
-
-       /* memory smaller than 1MB is impossible */
-       if (dramsize < (1 << 20)) {
-               dramsize = 0;
-       }
-
-       /* set SDRAM CS0 size according to the amount of RAM found */
-       if (dramsize > 0) {
-               *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1;
-       } else {
-               *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
-       }
-
-       /* let SDRAM CS1 start right after CS0 */
-       *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */
-
-       /* find RAM size using SDRAM CS1 only */
-       if (!dramsize)
-               sdram_start(0);
-       test2 = test1 = get_ram_size((long *)(CONFIG_SYS_SDRAM_BASE + dramsize), 0x80000000);
-       if (!dramsize) {
-               sdram_start(1);
-               test2 = get_ram_size((long *)(CONFIG_SYS_SDRAM_BASE + dramsize), 0x80000000);
-       }
-       if (test1 > test2) {
-               sdram_start(0);
-               dramsize2 = test1;
-       } else {
-               dramsize2 = test2;
-       }
-
-       /* memory smaller than 1MB is impossible */
-       if (dramsize2 < (1 << 20)) {
-               dramsize2 = 0;
-       }
-
-       /* set SDRAM CS1 size according to the amount of RAM found */
-       if (dramsize2 > 0) {
-               *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize
-                       | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1);
-       } else {
-               *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
-       }
-
-#else /* CONFIG_SYS_RAMBOOT */
-
-       /* retrieve size of memory connected to SDRAM CS0 */
-       dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
-       if (dramsize >= 0x13) {
-               dramsize = (1 << (dramsize - 0x13)) << 20;
-       } else {
-               dramsize = 0;
-       }
-
-       /* retrieve size of memory connected to SDRAM CS1 */
-       dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
-       if (dramsize2 >= 0x13) {
-               dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
-       } else {
-               dramsize2 = 0;
-       }
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-       /*
-        * On MPC5200B we need to set the special configuration delay in the
-        * DDR controller. Please refer to Freescale's AN3221 "MPC5200B SDRAM
-        * Initialization and Configuration", 3.3.1 SDelay--MBAR + 0x0190:
-        *
-        * "The SDelay should be written to a value of 0x00000004. It is
-        * required to account for changes caused by normal wafer processing
-        * parameters."
-        */
-       svr = get_svr();
-       pvr = get_pvr();
-       if ((SVR_MJREV(svr) >= 2) && (PVR_MAJ(pvr) == 1) && (PVR_MIN(pvr) == 4)) {
-               *(vu_long *)MPC5XXX_SDRAM_SDELAY = 0x04;
-               __asm__ volatile ("sync");
-       }
-
-       return dramsize + dramsize2;
-}
-
-int checkboard (void)
-{
-#if defined(CONFIG_PRS200)
-       puts ("Board: PRS200\n");
-#else
-       puts ("Board: MCC200\n");
-#endif
-       return 0;
-}
-
-int misc_init_r (void)
-{
-       ulong flash_sup_end, snum;
-
-       /*
-        * Adjust flash start and offset to detected values
-        */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       /*
-        * Check if boot FLASH isn't max size
-        */
-       if (gd->bd->bi_flashsize < (0 - CONFIG_SYS_FLASH_BASE)) {
-               /* adjust mapping */
-               *(vu_long *)MPC5XXX_BOOTCS_START = *(vu_long *)MPC5XXX_CS0_START =
-                       START_REG(gd->bd->bi_flashstart);
-               *(vu_long *)MPC5XXX_BOOTCS_STOP = *(vu_long *)MPC5XXX_CS0_STOP =
-                       STOP_REG(gd->bd->bi_flashstart, gd->bd->bi_flashsize);
-
-               /*
-                * Re-check to get correct base address
-                */
-               flash_get_size(gd->bd->bi_flashstart, CONFIG_SYS_MAX_FLASH_BANKS - 1);
-
-               /*
-                * Re-do flash protection upon new addresses
-                */
-               flash_protect (FLAG_PROTECT_CLEAR,
-                              gd->bd->bi_flashstart, 0xffffffff,
-                              &flash_info[CONFIG_SYS_MAX_FLASH_BANKS - 1]);
-
-               /* Monitor protection ON by default */
-               flash_protect (FLAG_PROTECT_SET,
-                              CONFIG_SYS_MONITOR_BASE, CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                              &flash_info[CONFIG_SYS_MAX_FLASH_BANKS - 1]);
-
-               /* Environment protection ON by default */
-               flash_protect (FLAG_PROTECT_SET,
-                              CONFIG_ENV_ADDR,
-                              CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1,
-                              &flash_info[CONFIG_SYS_MAX_FLASH_BANKS - 1]);
-
-               /* Redundant environment protection ON by default */
-               flash_protect (FLAG_PROTECT_SET,
-                              CONFIG_ENV_ADDR_REDUND,
-                              CONFIG_ENV_ADDR_REDUND + CONFIG_ENV_SECT_SIZE - 1,
-                              &flash_info[CONFIG_SYS_MAX_FLASH_BANKS - 1]);
-       }
-
-       if (gd->bd->bi_flashsize > (32 << 20)) {
-               /* Unprotect the upper bank of the Flash */
-               *(volatile int*)MPC5XXX_CS0_CFG |= (1 << 6);
-               flash_protect (FLAG_PROTECT_CLEAR,
-                              flash_info[0].start[0] + flash_info[0].size / 2,
-                              (flash_info[0].start[0] - 1) + flash_info[0].size,
-                              &flash_info[0]);
-               *(volatile int*)MPC5XXX_CS0_CFG &= ~(1 << 6);
-               printf ("Warning: Only 32 of 64 MB of Flash are accessible from U-Boot\n");
-               flash_info[0].size = 32 << 20;
-               for (snum = 0, flash_sup_end = gd->bd->bi_flashstart + (32<<20);
-                       flash_info[0].start[snum] < flash_sup_end;
-                       snum++);
-               flash_info[0].sector_count = snum;
-       }
-
-#ifdef CONFIG_AUTO_UPDATE
-       do_auto_update();
-#endif
-       return (0);
-}
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_RESET)
-
-void init_ide_reset (void)
-{
-       debug ("init_ide_reset\n");
-
-}
-
-void ide_set_reset (int idereset)
-{
-       debug ("ide_reset(%d)\n", idereset);
-
-}
-#endif
-
-#if defined(CONFIG_CMD_DOC)
-void doc_init (void)
-{
-       doc_probe (CONFIG_SYS_DOC_BASE);
-}
-#endif
diff --git a/board/mcc200/mt46v16m16-75.h b/board/mcc200/mt46v16m16-75.h
deleted file mode 100644 (file)
index 9068fbf..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define SDRAM_DDR      1               /* is DDR */
-
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE     0x018D0000
-#define SDRAM_EMODE    0x40090000
-#define SDRAM_CONTROL  0x714f0f00
-#define SDRAM_CONFIG1  0x73722930
-#define SDRAM_CONFIG2  0x47770000
-#define SDRAM_TAPDELAY 0x10000000
diff --git a/board/mcc200/mt48lc16m16a2-75.h b/board/mcc200/mt48lc16m16a2-75.h
deleted file mode 100644 (file)
index 0133eaa..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define SDRAM_DDR      0               /* is SDR */
-
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE     0x00CD0000
-#define SDRAM_CONTROL  0x504F0000
-#define SDRAM_CONFIG1  0xD2322800
-#define SDRAM_CONFIG2  0x8AD70000
diff --git a/board/mcc200/mt48lc16m32s2-75.h b/board/mcc200/mt48lc16m32s2-75.h
deleted file mode 100644 (file)
index 0133eaa..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define SDRAM_DDR      0               /* is SDR */
-
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE     0x00CD0000
-#define SDRAM_CONTROL  0x504F0000
-#define SDRAM_CONFIG1  0xD2322800
-#define SDRAM_CONFIG2  0x8AD70000
diff --git a/board/mcc200/mt48lc8m32b2-6-7.h b/board/mcc200/mt48lc8m32b2-6-7.h
deleted file mode 100644 (file)
index 13aebbd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Configuration Registers for the MT48LC8M32B2 SDRAM on the MPC5200 platform
- */
-
-#define SDRAM_DDR      0               /* is SDR */
-
-/* Settings for XLB = 132 MHz */
-
-#define SDRAM_MODE     0x008d0000 /* CL-3 BURST-8 -> Mode Register MBAR + 0x0100 */
-#define SDRAM_CONTROL  0x504f0000 /* Control Register MBAR + 0x0104 */
-#define SDRAM_CONFIG1  0xc2222900 /* Delays between commands -> Configuration Register 1 MBAR + 0x0108 */
-#define SDRAM_CONFIG2  0x88c70000 /* Delays between commands -> Configuration Register 2 MBAR + 0x010C */
index 75046fe7ab8305a5a30dbcc276e15f9362a634cd..288a1aeb7058fb495fb4cecb42c22757ace7717a 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_VCT
 
-config SYS_CPU
-       default "mips32"
-
 config SYS_BOARD
        default "vct"
 
@@ -12,4 +9,28 @@ config SYS_VENDOR
 config SYS_CONFIG_NAME
        default "vct"
 
+menu "vct board options"
+
+choice
+       prompt "Board variant"
+
+config VCT_PLATINUM
+       bool "Enable VCT_PLATINUM"
+
+config VCT_PLATINUMAVC
+       bool "Enable VCT_PLATINUMAVC"
+
+config VCT_PREMIUM
+       bool "Enable VCT_PLATINUMAVC"
+
+endchoice
+
+config VCT_ONENAND
+       bool "Enable VCT_ONENAND"
+
+config VCT_SMALL_IMAGE
+       bool "Enable VCT_SMALL_IMAGE"
+
+endmenu
+
 endif
index a6235e53945fa56ecee3541d29ea95df5097c16e..4d0ebaab74567008c5718cd082fcfe1e751c5a3d 100644 (file)
@@ -185,9 +185,11 @@ int checkboard(void)
 
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
index 2009e62a1a7bfcbb575cc0f2308841e37e34e8fc..688cc12a6c9a7f816f0f75a863d7835b64f775ea 100644 (file)
@@ -62,10 +62,12 @@ void pci_init_board(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
        fdt_fixup_dr_usb(blob, bd);
+
+       return 0;
 }
 #endif
 
index 79a60c2f2d965b5d70270b18850943197df2ec1a..54176e8f6f2e41f79f415b4ade5d42cd9e20a173 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_MPR2
 
-config SYS_CPU
-       default "sh3"
-
 config SYS_BOARD
        default "mpr2"
 
index d935affdd9dd0e73e715c7ab1bf9e764525e00ba..83313279b3b072d769a1fa46dacda7723d93ec11 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_MS7720SE
 
-config SYS_CPU
-       default "sh3"
-
 config SYS_BOARD
        default "ms7720se"
 
index 17073e81e911f9dcabf9b2e9a09790e26986df43..39027c9864fdabc71609b60b16807d6962cb1bb5 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_MS7722SE
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "ms7722se"
 
index 07aa0247b7ed0f4d758b505f21e75866ba413624..2c0b88c77532d586d78caacee1a094eca9b63f64 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_MS7750SE
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "ms7750se"
 
diff --git a/board/muas3001/Kconfig b/board/muas3001/Kconfig
deleted file mode 100644 (file)
index 94a00b3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_MUAS3001
-
-config SYS_BOARD
-       default "muas3001"
-
-config SYS_CONFIG_NAME
-       default "muas3001"
-
-endif
diff --git a/board/muas3001/MAINTAINERS b/board/muas3001/MAINTAINERS
deleted file mode 100644 (file)
index cfb5983..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-MUAS3001 BOARD
-M:     Heiko Schocher <hs@denx.de>
-S:     Maintained
-F:     board/muas3001/
-F:     include/configs/muas3001.h
-F:     configs/muas3001_defconfig
-F:     configs/muas3001_dev_defconfig
diff --git a/board/muas3001/Makefile b/board/muas3001/Makefile
deleted file mode 100644 (file)
index ef04960..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2008
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := muas3001.o
diff --git a/board/muas3001/muas3001.c b/board/muas3001/muas3001.c
deleted file mode 100644 (file)
index 08eb5e8..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * (C) Copyright 2008
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8260.h>
-#include <ioports.h>
-
-#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
-#include <libfdt.h>
-#endif
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A */
-    {  /*            conf      ppar psor pdir podr pdat */
-       /* PA31 */ { 0,          0,   0,   0,   0,   0 }, /* PA31            */
-       /* PA30 */ { 0,          0,   0,   0,   0,   0 }, /* PA30            */
-       /* PA29 */ { 1,          1,   1,   1,   0,   0 }, /* FCC1 TXER */
-       /* PA28 */ { 1,          1,   1,   1,   0,   0 }, /* FCC1 TXEN */
-       /* PA27 */ { 1,          1,   1,   0,   0,   0 }, /* FCC1 RXDV */
-       /* PA26 */ { 1,          1,   1,   0,   0,   0 }, /* FCC1 RXER */
-       /* PA25 */ { 1,          0,   0,   1,   0,   0 }, /* ETH_PWRDWN      */
-       /* PA24 */ { 1,          0,   0,   1,   0,   1 }, /* ETH_RESET       */
-       /* PA23 */ { 0,          0,   0,   0,   0,   0 }, /* PA23            */
-       /* PA22 */ { 0,          0,   0,   0,   0,   0 }, /* PA22            */
-       /* PA21 */ { 1,          1,   0,   1,   0,   0 }, /* FCC1 TXD3 */
-       /* PA20 */ { 1,          1,   0,   1,   0,   0 }, /* FCC1 TXD2 */
-       /* PA19 */ { 1,          1,   0,   1,   0,   0 }, /* FCC1 TXD1 */
-       /* PA18 */ { 1,          1,   0,   1,   0,   0 }, /* FCC1 TXD0 */
-       /* PA17 */ { 1,          1,   0,   0,   0,   0 }, /* FCC1 RXD0 */
-       /* PA16 */ { 1,          1,   0,   0,   0,   0 }, /* FCC1 RXD1 */
-       /* PA15 */ { 1,          1,   0,   0,   0,   0 }, /* FCC1 RXD2 */
-       /* PA14 */ { 1,          1,   0,   0,   0,   0 }, /* FCC1 RXD3 */
-       /* PA13 */ { 0,          0,   0,   0,   0,   0 }, /* PA13            */
-       /* PA12 */ { 1,          0,   0,   1,   0,   0 }, /* ETH_SLEEP       */
-       /* PA11 */ { 0,          0,   0,   0,   0,   0 }, /* PA11            */
-       /* PA10 */ { 1,          0,   0,   1,   0,   0 }, /* MDIO            */
-       /* PA9  */ { 1,          0,   0,   1,   0,   0 }, /* MDC             */
-       /* PA8  */ { 1,          1,   0,   0,   0,   0 }, /* SMC2 RxD        */
-       /* PA7  */ { 0,          0,   0,   0,   0,   0 }, /* PA7             */
-       /* PA6  */ { 0,          0,   0,   0,   0,   0 }, /* PA6             */
-       /* PA5  */ { 0,          0,   0,   0,   0,   0 }, /* PA5             */
-       /* PA4  */ { 0,          0,   0,   0,   0,   0 }, /* PA4             */
-       /* PA3  */ { 0,          0,   0,   0,   0,   0 }, /* PA3             */
-       /* PA2  */ { 0,          0,   0,   0,   0,   0 }, /* PA2             */
-       /* PA1  */ { 0,          0,   0,   0,   0,   0 }, /* PA1             */
-       /* PA0  */ { 0,          0,   0,   0,   0,   0 }  /* PA0             */
-    },
-
-    /* Port B */
-    {   /*           conf      ppar psor pdir podr pdat */
-       /* PB31 */ { 0,          0,   0,   0,   0,   0 }, /* PB31            */
-       /* PB30 */ { 0,          0,   0,   0,   0,   0 }, /* PB30            */
-       /* PB29 */ { 0,          0,   0,   0,   0,   0 }, /* PB29            */
-       /* PB28 */ { 1,          1,   1,   1,   0,   0 }, /* SCC1 TxD        */
-       /* PB27 */ { 0,          0,   0,   0,   0,   0 }, /* PB27            */
-       /* PB26 */ { 0,          0,   0,   0,   0,   0 }, /* PB26            */
-       /* PB25 */ { 0,          0,   0,   0,   0,   0 }, /* PB25            */
-       /* PB24 */ { 0,          0,   0,   0,   0,   0 }, /* PB24            */
-       /* PB23 */ { 0,          0,   0,   0,   0,   0 }, /* PB23            */
-       /* PB22 */ { 0,          0,   0,   0,   0,   0 }, /* PB22            */
-       /* PB21 */ { 0,          0,   0,   0,   0,   0 }, /* PB21            */
-       /* PB20 */ { 0,          0,   0,   0,   0,   0 }, /* PB20            */
-       /* PB19 */ { 0,          0,   0,   0,   0,   0 }, /* PB19            */
-       /* PB18 */ { 0,          0,   0,   0,   0,   0 }, /* PB18            */
-       /* PB17 */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB16 */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB15 */ { 1,          1,   0,   0,   0,   0 }, /* SCC2 RxD        */
-       /* PB14 */ { 1,          1,   0,   0,   0,   0 }, /* SCC3 RxD        */
-       /* PB13 */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB12 */ { 1,          1,   1,   1,   0,   0 }, /* SCC2 TxD        */
-       /* PB11 */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB10 */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB9  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB8  */ { 1,          1,   1,   1,   0,   0 }, /* SCC3 TxD        */
-       /* PB7  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB6  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB5  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB4  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB3  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB2  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB1  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PB0  */ { 0,          0,   0,   0,   0,   0 }  /* non-existent    */
-    },
-
-    /* Port C */
-    {   /*           conf      ppar psor pdir podr pdat */
-       /* PC31 */ { 0,          0,   0,   0,   0,   0 }, /* PC31            */
-       /* PC30 */ { 1,          1,   1,   1,   0,   0 }, /* Timer1 OUT      */
-       /* PC29 */ { 0,          0,   0,   0,   0,   0 }, /* PC29            */
-       /* PC28 */ { 0,          0,   0,   0,   0,   0 }, /* PC28            */
-       /* PC27 */ { 0,          0,   0,   0,   0,   0 }, /* PC27            */
-       /* PC26 */ { 0,          0,   0,   0,   0,   0 }, /* PC26            */
-       /* PC25 */ { 0,          0,   0,   0,   0,   0 }, /* PC25            */
-       /* PC24 */ { 0,          0,   0,   0,   0,   0 }, /* PC24            */
-       /* PC23 */ { 0,          0,   0,   0,   0,   0 }, /* PC23            */
-       /* PC22 */ { 0,          0,   0,   0,   0,   0 }, /* PC22            */
-       /* PC21 */ { 1,          1,   0,   0,   0,   0 }, /* FCC RxCLK 11    */
-       /* PC20 */ { 1,          1,   0,   0,   0,   0 }, /* FCC TxCLK 12    */
-       /* PC19 */ { 0,          0,   0,   0,   0,   0 }, /* PC19            */
-       /* PC18 */ { 0,          0,   0,   0,   0,   0 }, /* PC18            */
-       /* PC17 */ { 0,          0,   0,   0,   0,   0 }, /* PC17            */
-       /* PC16 */ { 0,          0,   0,   0,   0,   0 }, /* PC16            */
-       /* PC15 */ { 1,          1,   0,   1,   0,   0 }, /* SMC2 TxD        */
-       /* PC14 */ { 0,          0,   0,   0,   0,   0 }, /* PC14            */
-       /* PC13 */ { 0,          0,   0,   0,   0,   0 }, /* PC13            */
-       /* PC12 */ { 1,          0,   0,   1,   0,   0 }, /* TX OUTPUT SLEW1 */
-       /* PC11 */ { 1,          0,   0,   1,   0,   0 }, /* TX OUTPUT SLEW0 */
-       /* PC10 */ { 0,          0,   0,   0,   0,   0 }, /* PC10            */
-       /* PC9  */ { 1,          0,   0,   1,   0,   1 }, /* SPA_TX_EN       */
-       /* PC8  */ { 0,          0,   0,   0,   0,   0 }, /* PC8             */
-       /* PC7  */ { 0,          0,   0,   0,   0,   0 }, /* PC7             */
-       /* PC6  */ { 0,          0,   0,   0,   0,   0 }, /* PC6             */
-       /* PC5  */ { 0,          0,   0,   0,   0,   0 }, /* PC5             */
-       /* PC4  */ { 0,          0,   0,   0,   0,   0 }, /* PC4             */
-       /* PC3  */ { 0,          0,   0,   0,   0,   0 }, /* PC3             */
-       /* PC2  */ { 0,          0,   0,   0,   0,   0 }, /* PC2             */
-       /* PC1  */ { 0,          0,   0,   0,   0,   0 }, /* PC1             */
-       /* PC0  */ { 0,          0,   0,   0,   0,   0 }, /* PC0             */
-    },
-
-    /* Port D */
-    {   /*           conf      ppar psor pdir podr pdat */
-       /* PD31 */ { 1,          1,   0,   0,   0,   0 }, /* SCC1 RxD        */
-       /* PD30 */ { 0,          0,   0,   0,   0,   0 }, /* PD30            */
-       /* PD29 */ { 0,          0,   0,   0,   0,   0 }, /* PD29            */
-       /* PD28 */ { 0,          0,   0,   0,   0,   0 }, /* PD28            */
-       /* PD27 */ { 0,          0,   0,   0,   0,   0 }, /* PD27            */
-       /* PD26 */ { 0,          0,   0,   0,   0,   0 }, /* PD26            */
-       /* PD25 */ { 0,          0,   0,   0,   0,   0 }, /* PD25            */
-       /* PD24 */ { 0,          0,   0,   0,   0,   0 }, /* PD24            */
-       /* PD23 */ { 0,          0,   0,   0,   0,   0 }, /* PD23            */
-       /* PD22 */ { 1,          1,   0,   0,   0,   0 }, /* SCC4: RXD       */
-       /* PD21 */ { 1,          1,   0,   1,   0,   0 }, /* SCC4: TXD       */
-       /* PD20 */ { 0,          0,   0,   0,   0,   0 }, /* PD18            */
-       /* PD19 */ { 0,          0,   0,   0,   0,   0 }, /* PD19            */
-       /* PD18 */ { 0,          0,   0,   0,   0,   0 }, /* PD18            */
-       /* PD17 */ { 0,          0,   0,   0,   0,   0 }, /* PD17            */
-       /* PD16 */ { 0,          0,   0,   0,   0,   0 }, /* PD16            */
-#if defined(CONFIG_HARD_I2C)
-       /* PD15 */ { 1,          1,   1,   0,   1,   0 }, /* I2C SDA         */
-       /* PD14 */ { 1,          1,   1,   0,   1,   0 }, /* I2C SCL         */
-#else
-       /* PD15 */ { 1,          0,   0,   0,   1,   1 }, /* PD15            */
-       /* PD14 */ { 1,          0,   0,   1,   1,   1 }, /* PD14            */
-#endif
-       /* PD13 */ { 0,          0,   0,   0,   0,   0 }, /* PD13            */
-       /* PD12 */ { 0,          0,   0,   0,   0,   0 }, /* PD12            */
-       /* PD11 */ { 0,          0,   0,   0,   0,   0 }, /* PD11            */
-       /* PD10 */ { 0,          0,   0,   0,   0,   0 }, /* PD10            */
-       /* PD9  */ { 1,          1,   0,   1,   0,   0 }, /* SMC1 TxD        */
-       /* PD8  */ { 1,          1,   0,   0,   0,   0 }, /* SMC1 RxD        */
-       /* PD7  */ { 0,          0,   0,   0,   0,   0 }, /* PD7             */
-       /* PD6  */ { 0,          0,   0,   0,   0,   0 }, /* PD6             */
-       /* PD5  */ { 0,          0,   0,   0,   0,   0 }, /* PD5             */
-       /* PD4  */ { 0,          0,   0,   0,   0,   0 }, /* PD4             */
-       /* PD3  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PD2  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PD1  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
-       /* PD0  */ { 0,          0,   0,   0,   0,   0 }  /* non-existent    */
-    }
-};
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
-                                                 ulong orx, volatile uchar * base)
-{
-       volatile uchar c = 0xff;
-       volatile uint *sdmr_ptr;
-       volatile uint *orx_ptr;
-       ulong maxsize, size;
-       int i;
-
-       /* We must be able to test a location outsize the maximum legal size
-        * to find out THAT we are outside; but this address still has to be
-        * mapped by the controller. That means, that the initial mapping has
-        * to be (at least) twice as large as the maximum expected size.
-        */
-       maxsize = (1 + (~orx | 0x7fff))/* / 2*/;
-
-       sdmr_ptr = &memctl->memc_psdmr;
-       orx_ptr = &memctl->memc_or1;
-
-       *orx_ptr = orx;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_PREA;
-       *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_MRW;
-       *(base + CONFIG_SYS_MRS_OFFS) = c;      /* setting MR on address lines */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *base = c;
-
-       size = get_ram_size ((long *)base, maxsize);
-       *orx_ptr = orx | ~(size - 1);
-
-       return (size);
-}
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       long psize;
-#ifndef CONFIG_SYS_RAMBOOT
-       long sizelittle, sizebig;
-#endif
-
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       /* 60x SDRAM setup:
-        */
-       sizelittle = try_init (memctl, CONFIG_SYS_PSDMR_LITTLE, CONFIG_SYS_OR1_LITTLE,
-                                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-       sizebig = try_init (memctl, CONFIG_SYS_PSDMR_BIG, CONFIG_SYS_OR1_BIG,
-                                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-       if (sizelittle < sizebig) {
-               psize = sizebig;
-       } else {
-               psize = try_init (memctl, CONFIG_SYS_PSDMR_LITTLE, CONFIG_SYS_OR1_LITTLE,
-                                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-       }
-#endif /* CONFIG_SYS_RAMBOOT */
-
-       icache_enable ();
-
-       return (psize);
-}
-
-int checkboard (void)
-{
-       puts ("Board: MUAS3001\n");
-
-       return 0;
-}
-
-/*
- * Early board initalization.
- */
-int board_early_init_r (void)
-{
-       return 0;
-}
-
-#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * update "memory" property in the blob
- */
-void ft_blob_update (void *blob, bd_t *bd)
-{
-       int ret, nodeoffset = 0;
-       ulong flash_data[4] = {0};
-       ulong   speed = 0;
-
-       /* update Flash addr, size */
-       flash_data[2] = cpu_to_be32 (CONFIG_SYS_FLASH_BASE);
-       flash_data[3] = cpu_to_be32 (CONFIG_SYS_FLASH_SIZE);
-       nodeoffset = fdt_path_offset (blob, "/localbus");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "ranges", flash_data,
-                                       sizeof (flash_data));
-       if (ret < 0)
-               printf ("ft_blob_update): cannot set /localbus/ranges "
-                       "property err:%s\n", fdt_strerror(ret));
-       } else {
-               /* memory node is required in dts */
-               printf ("ft_blob_update(): cannot find /localbus node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
-
-       /* baudrate */
-       nodeoffset = fdt_path_offset (blob, "/soc/cpm/serial");
-       if (nodeoffset >= 0) {
-               speed = cpu_to_be32 (gd->baudrate);
-               ret = fdt_setprop (blob, nodeoffset, "current-speed", &speed,
-                                       sizeof (unsigned long));
-       if (ret < 0)
-               printf ("ft_blob_update): cannot set /soc/cpm/serial/current-speed "
-                       "property err:%s\n", fdt_strerror (ret));
-       } else {
-               /* baudrate is required in dts */
-               printf ("ft_blob_update(): cannot find /soc/cpm/smc2/current-speed node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
-}
-
-void ft_board_setup (void *blob, bd_t *bd)
-{
-       ft_cpu_setup (blob, bd);
-       ft_blob_update (blob, bd);
-}
-#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
index 319fa8cba41c1c779d0d528f2d9d93163afa67e6..23d0f56bd625a20ed1a1daa47904d6c14dee7527 100644 (file)
@@ -146,9 +146,10 @@ void pci_init_board(void)
 #endif
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
diff --git a/board/musenki/Kconfig b/board/musenki/Kconfig
deleted file mode 100644 (file)
index 26b680f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_MUSENKI
-
-config SYS_BOARD
-       default "musenki"
-
-config SYS_CONFIG_NAME
-       default "MUSENKI"
-
-endif
diff --git a/board/musenki/MAINTAINERS b/board/musenki/MAINTAINERS
deleted file mode 100644 (file)
index 4196c80..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MUSENKI BOARD
-#M:    Jim Thompson <jim@musenki.com>
-S:     Orphan (since 2014-04)
-F:     board/musenki/
-F:     include/configs/MUSENKI.h
-F:     configs/MUSENKI_defconfig
diff --git a/board/musenki/Makefile b/board/musenki/Makefile
deleted file mode 100644 (file)
index d2b79ff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = musenki.o flash.o
diff --git a/board/musenki/README b/board/musenki/README
deleted file mode 100644 (file)
index 084ab54..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-U-Boot for a Musenki M-3/M-1 board
----------------------------
-
-Musenki M-1 and M-3 have two banks of flash of 4MB or 8MB each.
-
-In board's notation, bank 0 is the one at the address of 0xFF800000
-and bank 1 is the one at the address of 0xFF000000.
-
-On power-up the processor jumps to the address of 0xFFF00100, the last
-megabyte of the bank 0 of flash.
-
-Thus, U-Boot is configured to reside in flash starting at the address of
-0xFFF00000.  The environment space is located in flash separately from
-U-Boot, at the address of 0xFF800000.
-
-There is a Davicom 9102A on-board, but I don't have it working yet.
-
-U-Boot test results
---------------------
-
-x.x Operation on all available serial consoles
-
-x.x.x CONFIG_CONS_INDEX 1
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU:   MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM:  32 MB
-FLASH:  4 MB
-In:    serial
-Out:   serial
-Err:   serial
-Hit any key to stop autoboot:  0
-=> help
-base    - print or set address offset
-bdinfo  - print Board Info structure
-bootm   - boot application image from memory
-bootp   - boot image via network using BootP/TFTP protocol
-bootd   - boot default, i.e., run 'bootcmd'
-cmp     - memory compare
-coninfo - print console devices and informations
-cp      - memory copy
-crc32   - checksum calculation
-dcache  - enable or disable data cache
-echo    - echo args to console
-erase   - erase FLASH memory
-flinfo  - print FLASH memory information
-go      - start application at address 'addr'
-help    - print online help
-icache  - enable or disable instruction cache
-iminfo  - print header information for application image
-loadb   - load binary file over serial line (kermit mode)
-loads   - load S-Record file over serial line
-loop    - infinite loop on address range
-md      - memory display
-mm      - memory modify (auto-incrementing)
-mtest   - simple RAM test
-mw      - memory write (fill)
-nm      - memory modify (constant address)
-printenv- print environment variables
-protect - enable or disable FLASH write protection
-rarpboot- boot image via network using RARP/TFTP protocol
-reset   - Perform RESET of the CPU
-run     - run commands in an environment variable
-saveenv - save environment variables to persistent storage
-setenv  - set environment variables
-source  - run script from memory
-tftpboot- boot image via network using TFTP protocol
-              and env variables ipaddr and serverip
-version - print monitor version
-?       - alias for 'help'
-
-
-x.x.x CONFIG_CONS_INDEX 2
-
-**** NOT TESTED ****
-
-x.x Flash Driver Operation
-
-
-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU:   MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM:  32 MB
-FLASH:  4 MB
-*** Warning - bad CRC, using default environment
-
-In:    serial
-Out:   serial
-Err:   serial
-Hit any key to stop autoboot:  0
-=>
-=> md ff800000
-ff800000: 46989bf8 626f6f74 636d643d 626f6f74    F...bootcmd=boot
-ff800010: 6d204646 38323030 30300062 6f6f7464    m FF820000.bootd
-ff800020: 656c6179 3d350062 61756472 6174653d    elay=5.baudrate=
-ff800030: 39363030 00636c6f 636b735f 696e5f6d    9600.clocks_in_m
-ff800040: 687a3d31 00737464 696e3d73 65726961    hz=1.stdin=seria
-ff800050: 6c007374 646f7574 3d736572 69616c00    l.stdout=serial.
-ff800060: 73746465 72723d73 65726961 6c006970    stderr=serial.ip
-ff800070: 61646472 3d313932 2e313638 2e302e34    addr=192.168.0.4
-ff800080: 32007365 72766572 69703d31 39322e31    2.serverip=192.1
-ff800090: 36382e30 2e380000 00000000 00000000    68.0.8..........
-ff8000a0: 00000000 00000000 00000000 00000000    ................
-ff8000b0: 00000000 00000000 00000000 00000000    ................
-ff8000c0: 00000000 00000000 00000000 00000000    ................
-ff8000d0: 00000000 00000000 00000000 00000000    ................
-ff8000e0: 00000000 00000000 00000000 00000000    ................
-ff8000f0: 00000000 00000000 00000000 00000000    ................
-=> protect off ff800000 ff81ffff
-Un-Protected 1 sectors
-=> erase ff800000 ff81ffff
-Erase Flash from 0xff800000 to 0xff81ffff
- done
-Erased 1 sectors
-=> md ff800000
-ff800000: ffffffff ffffffff ffffffff ffffffff    ................
-ff800010: ffffffff ffffffff ffffffff ffffffff    ................
-ff800020: ffffffff ffffffff ffffffff ffffffff    ................
-ff800030: ffffffff ffffffff ffffffff ffffffff    ................
-ff800040: ffffffff ffffffff ffffffff ffffffff    ................
-ff800050: ffffffff ffffffff ffffffff ffffffff    ................
-ff800060: ffffffff ffffffff ffffffff ffffffff    ................
-ff800070: ffffffff ffffffff ffffffff ffffffff    ................
-ff800080: ffffffff ffffffff ffffffff ffffffff    ................
-ff800090: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000a0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000b0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000c0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000d0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000e0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000f0: ffffffff ffffffff ffffffff ffffffff    ................
-
-x.x.x Information
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU:   MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM:  32 MB
-FLASH:  4 MB
-*** Warning - bad CRC, using default environment
-
-In:    serial
-Out:   serial
-Err:   serial
-Hit any key to stop autoboot:  0
-=> flinfo
-
-Bank # 1: Intel 28F320J3A (32Mbit = 128K x 32)
-  Size: 4 MB in 32 Sectors
-  Sector Start Addresses:
-    FF800000 (RO) FF820000      FF840000      FF860000      FF880000
-    FF8A0000      FF8C0000      FF8E0000      FF900000      FF920000
-    FF940000      FF960000      FF980000      FF9A0000      FF9C0000
-    FF9E0000      FFA00000      FFA20000      FFA40000      FFA60000
-    FFA80000      FFAA0000      FFAC0000      FFAE0000      FFB00000
-    FFB20000      FFB40000      FFB60000      FFB80000      FFBA0000
-    FFBC0000      FFBE0000
-
-Bank # 2: missing or unknown FLASH type
-=>
-
-
-x.x.x Flash Programming
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU:   MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM:  32 MB
-FLASH:  4 MB
-
-In:    serial
-Out:   serial
-Err:   serial
-Hit any key to stop autoboot:  0
-=>
-=>
-=>
-=> protect off ff800000 ff81ffff
-Un-Protected 1 sectors
-=> cp 0 ff800000 20
-Copy to Flash... done
-=> md ff800000
-ff800000: 37ce33ec 33cc334c 33c031cc 33cc35cc    7.3.3.3L3.1.3.5.
-ff800010: 33ec13ce 30ccb3ec b3c833c4 31c836cc    3...0.....3.1.6.
-ff800020: 33cc3b9d 31ec33ee 13ecf3cc 338833ec    3.;.1.3.....3.3.
-ff800030: 234c33ec 32cc22cc 33883bdc 534433cc    #L3.2.".3.;.SD3.
-ff800040: 33cc30c8 31cc32ec 338c33cc 330c33dc    3.0.1.2.3.3.3.3.
-ff800050: 33cc13dc 334c534c b1c433d8 128c13cc    3...3LSL..3.....
-ff800060: 37ec36cd 33dc33cc bbc9f7e8 bbcc77cc    7.6.3.3.......w.
-ff800070: 314c0adc 139c30ed 33cc334c 33c833ec    1L....0.3.3L3.3.
-ff800080: ffffffff ffffffff ffffffff ffffffff    ................
-ff800090: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000a0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000b0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000c0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000d0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000e0: ffffffff ffffffff ffffffff ffffffff    ................
-ff8000f0: ffffffff ffffffff ffffffff ffffffff    ................
-
-
-x.x.x Storage of environment variables in flash
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU:   MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM:  32 MB
-FLASH:  4 MB
-In:    serial
-Out:   serial
-Err:   serial
-Hit any key to stop autoboot:  0
-=> printenv
-bootcmd=bootm FF820000
-bootdelay=5
-baudrate=9600
-clocks_in_mhz=1
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 106/16380 bytes
-=> setenv myvar 1234
-=> saveenv
-Un-Protected 1 sectors
-Erasing Flash...
- done
-Erased 1 sectors
-Saving Environment to Flash...
-Protected 1 sectors
-=> reset
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU:   MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM:  32 MB
-FLASH:  4 MB
-In:    serial
-Out:   serial
-Err:   serial
-Hit any key to stop autoboot:  0
-=> printenv
-bootcmd=bootm FF820000
-bootdelay=5
-baudrate=9600
-clocks_in_mhz=1
-myvar=1234
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 117/16380 bytes
-
-x.x Image Download and run over serial port
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU:   MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM:  32 MB
-FLASH:  4 MB
-In:    serial
-Out:   serial
-Err:   serial
-Hit any key to stop autoboot:  0
-=> loads
-## Ready for S-Record download ...
-
-## First Load Addr = 0x00040000
-## Last  Load Addr = 0x00050177
-## Total Size      = 0x00010178 = 65912 Bytes
-## Start Addr      = 0x00040004
-=> go 40004
-## Starting application at 0x00040004 ...
-Hello World
-argc = 1
-argv[0] = "40004"
-argv[1] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-
-
-x.x Image download and run over ethernet interface
-
-untested (not working yet, actually)
diff --git a/board/musenki/flash.c b/board/musenki/flash.c
deleted file mode 100644 (file)
index 080ec7f..0000000
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, uchar *dest, uchar data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-
-/*
- * don't ask.  its stupid, but more than one soul has had to live with this mistake
- * "swaptab[i]" is the value of "i" with the bits reversed.
- */
-
-#define  MUSENKI_BROKEN_FLASH 1
-
-#ifdef MUSENKI_BROKEN_FLASH
-unsigned char swaptab[256] = {
-  0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
-  0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
-  0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
-  0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
-  0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
-  0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
-  0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
-  0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
-  0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
-  0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
-  0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
-  0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
-  0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
-  0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
-  0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
-  0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
-  0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
-  0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
-  0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
-  0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
-  0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
-  0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
-  0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
-  0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
-  0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
-  0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
-  0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
-  0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
-  0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
-  0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
-  0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
-  0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
-};
-
-#define BS(b)     (swaptab[b])
-
-#else
-
-#define BS(b)     (b)
-
-#endif
-
-#define BYTEME(x) ((x) & 0xFF)
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0, size_b1;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       DEBUGF("\n## Get flash bank 1 size @ 0x%08x\n",CONFIG_SYS_FLASH_BASE0_PRELIM);
-
-       size_b0 = flash_get_size((vu_char *)CONFIG_SYS_FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0: "
-                       "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
-                       flash_info[0].flash_id,
-                       size_b0, size_b0<<20);
-       }
-
-       DEBUGF("## Get flash bank 2 size @ 0x%08x\n",CONFIG_SYS_FLASH_BASE1_PRELIM);
-       size_b1 = flash_get_size((vu_char *)CONFIG_SYS_FLASH_BASE1_PRELIM, &flash_info[1]);
-
-       DEBUGF("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
-       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       DEBUGF("protect monitor %x @ %x\n", CONFIG_SYS_MONITOR_BASE, monitor_flash_len);
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       DEBUGF("protect environtment %x @ %x\n", CONFIG_ENV_ADDR, CONFIG_ENV_SECT_SIZE);
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       if (size_b1) {
-               flash_info[1].size = size_b1;
-               flash_get_offsets (CONFIG_SYS_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-               /* monitor protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_SYS_MONITOR_BASE,
-                             CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                             &flash_info[1]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-               /* ENV protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_ENV_ADDR,
-                             CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                             &flash_info[1]);
-#endif
-       } else {
-               flash_info[1].flash_id = FLASH_UNKNOWN;
-               flash_info[1].sector_count = -1;
-               flash_info[1].size = 0;
-       }
-
-       DEBUGF("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
-       return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:
-           for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = base;
-               base += 0x00020000;             /* 128k per bank */
-           }
-           return;
-
-       default:
-           printf ("Don't know sector ofsets for flash type 0x%lx\n", info->flash_id);
-           return;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("Fujitsu ");            break;
-       case FLASH_MAN_SST:     printf ("SST ");                break;
-       case FLASH_MAN_STM:     printf ("STM ");                break;
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       case FLASH_MAN_MT:      printf ("MT ");                 break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F320J3A:   printf ("28F320J3A (32Mbit = 128K x 32)\n");
-                               break;
-       case FLASH_28F640J3A:   printf ("28F640J3A (64Mbit = 128K x 64)\n");
-                               break;
-       case FLASH_28F128J3A:   printf ("28F128J3A (128Mbit = 128K x 128)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       if (info->size >= (1 << 20)) {
-               i = 20;
-       } else {
-               i = 10;
-       }
-       printf ("  Size: %ld %cB in %d Sectors\n",
-               info->size >> i,
-               (i == 20) ? 'M' : 'k',
-               info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info)
-{
-       vu_char manuf, device;
-
-       addr[0] = BS(0x90);
-       manuf = BS(addr[0]);
-       DEBUGF("Manuf. ID @ 0x%08lx: 0x%08x\n", (vu_char *)addr, manuf);
-
-       switch (manuf) {
-       case BYTEME(AMD_MANUFACT):
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case BYTEME(FUJ_MANUFACT):
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case BYTEME(SST_MANUFACT):
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case BYTEME(STM_MANUFACT):
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case BYTEME(INTEL_MANUFACT):
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               addr[0] = BS(0xFF);             /* restore read mode, (yes, BS is a NOP) */
-               return 0;                       /* no or unknown flash  */
-       }
-
-       device = BS(addr[2]);                   /* device ID            */
-
-       DEBUGF("Device ID @ 0x%08x: 0x%08x\n", (&addr[1]), device);
-
-       switch (device) {
-       case BYTEME(INTEL_ID_28F320J3A):
-               info->flash_id += FLASH_28F320J3A;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               break;                          /* =>  4 MB             */
-
-       case BYTEME(INTEL_ID_28F640J3A):
-               info->flash_id += FLASH_28F640J3A;
-               info->sector_count = 64;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-
-       case BYTEME(INTEL_ID_28F128J3A):
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x01000000;
-               break;                          /* => 16 MB             */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               addr[0] = BS(0xFF);             /* restore read mode (yes, a NOP) */
-               return 0;                       /* => no or unknown flash */
-
-       }
-
-       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
-               printf ("** ERROR: sector count %d > max (%d) **\n",
-                       info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
-               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       }
-
-       addr[0] = BS(0xFF);             /* restore read mode */
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
-               printf ("Can erase only Intel flash types - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n", prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_char *addr = (vu_char *)(info->start[sect]);
-                       unsigned long status;
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-                       *addr = BS(0x50);       /* clear status register */
-                       *addr = BS(0x20);       /* erase setup */
-                       *addr = BS(0xD0);       /* erase confirm */
-
-                       /* re-enable interrupts if necessary */
-                       if (flag) {
-                               enable_interrupts();
-                       }
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = BS(0xB0); /* suspend erase        */
-                                       *addr = BS(0xFF); /* reset to read mode */
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       *addr = BS(0xFF);       /* reset to read mode */
-               }
-       }
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define        FLASH_WIDTH     1       /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       uchar *wp = (uchar *)addr;
-       int rc;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-
-       while (cnt > 0) {
-               if ((rc = write_data(info, wp, *src)) != 0) {
-                       return rc;
-               }
-               wp++;
-               src++;
-               cnt--;
-       }
-
-       return cnt;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, uchar *dest, uchar data)
-{
-       vu_char *addr = (vu_char *)dest;
-       ulong status;
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((BS(*addr) & data) != data) {
-               return 2;
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       *addr = BS(0x40);               /* write setup */
-       *addr = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag) {
-               enable_interrupts();
-       }
-
-       start = get_timer (0);
-
-       while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *addr = BS(0xFF);       /* restore read mode */
-                       return 1;
-               }
-       }
-
-       *addr = BS(0xFF);       /* restore read mode */
-
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/musenki/musenki.c b/board/musenki/musenki.c
deleted file mode 100644 (file)
index aa92fc4..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-#include <netdev.h>
-
-int checkboard (void)
-{
-       ulong busfreq  = get_bus_freq(0);
-       char  buf[32];
-
-       printf("Board: MUSENKI Local Bus at %s MHz\n", strmhz(buf, busfreq));
-       return 0;
-
-}
-
-#if 0  /* NOT USED */
-int checkflash (void)
-{
-       /* TODO: XXX XXX XXX */
-       printf ("## Test not implemented yet ##\n");
-
-       return (0);
-}
-#endif
-
-phys_size_t initdram (int board_type)
-{
-       long size;
-       long new_bank0_end;
-       long mear1;
-       long emear1;
-
-       size = get_ram_size(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       new_bank0_end = size - 1;
-       mear1 = mpc824x_mpc107_getreg(MEAR1);
-       emear1 = mpc824x_mpc107_getreg(EMEAR1);
-       mear1 = (mear1  & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
-       emear1 = (emear1 & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
-       mpc824x_mpc107_setreg(MEAR1, mear1);
-       mpc824x_mpc107_setreg(EMEAR1, emear1);
-
-       return (size);
-}
-
-/*
- * Initialize PCI Devices
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_sandpoint_config_table[] = {
-#if 0
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-         0x0, 0x0, 0x0, /* unknown eth0 divice */
-         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                      PCI_ENET0_MEMADDR,
-                                      PCI_COMMAND_IO |
-                                      PCI_COMMAND_MEMORY |
-                                      PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-         0x0, 0x0, 0x0, /* unknown eth1 device */
-         pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
-                                      PCI_ENET1_MEMADDR,
-                                      PCI_COMMAND_IO |
-                                      PCI_COMMAND_MEMORY |
-                                      PCI_COMMAND_MASTER }},
-#endif
-       { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_sandpoint_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
-       pci_mpc824x_init(&hose);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/mvblue/Kconfig b/board/mvblue/Kconfig
deleted file mode 100644 (file)
index cee206b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_MVBLUE
-
-config SYS_BOARD
-       default "mvblue"
-
-config SYS_CONFIG_NAME
-       default "MVBLUE"
-
-endif
diff --git a/board/mvblue/MAINTAINERS b/board/mvblue/MAINTAINERS
deleted file mode 100644 (file)
index 5955f1a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MVBLUE BOARD
-#M:    -
-S:     Maintained
-F:     board/mvblue/
-F:     include/configs/MVBLUE.h
-F:     configs/MVBLUE_defconfig
diff --git a/board/mvblue/Makefile b/board/mvblue/Makefile
deleted file mode 100644 (file)
index 76c10f8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = mvblue.o flash.o
diff --git a/board/mvblue/flash.c b/board/mvblue/flash.c
deleted file mode 100644 (file)
index 5dd658f..0000000
+++ /dev/null
@@ -1,570 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * (C) Copyright 2001-2003
- *
- * Changes for MATRIX Vision mvBLUE devices
- * MATRIX Vision GmbH / hg,as info@matrix-vision.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-
-#if 0
-       #define mvdebug(p) printf ##p
-#else
-       #define mvdebug(p)
-#endif
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-#define FLASH_BUS_WIDTH                8
-
-#if (FLASH_BUS_WIDTH==32)
-       #define FLASH_DATA_MASK 0xffffffff
-       #define FLASH_SHIFT 1
-       #define FDT     vu_long
-#elif (FLASH_BUS_WIDTH==16)
-       #define FLASH_DATA_MASK 0xff
-       #define FLASH_SHIFT 0
-       #define FDT     vu_short
-#elif (FLASH_BUS_WIDTH==8)
-       #define FLASH_DATA_MASK 0xff
-       #define FLASH_SHIFT 0
-       #define FDT     vu_char
-#else
-       #error FLASH_BUS_WIDTH undefined
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *address, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       size_b0 = flash_get_size((vu_long *)0xffc00000, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH : Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       flash_get_offsets (0xffc00000, &flash_info[0]);
-       flash_info[0].size = size_b0;
-
-       /* monitor protection OFF by default */
-       flash_protect ( FLAG_PROTECT_CLEAR, 0xffc00000, 0x2000, flash_info );
-
-       return size_b0;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       /* set up sector start address table */
-       if (info->flash_id & FLASH_BTYPE)
-       {       /* bottom boot sector types - these are the useful ones! */
-               /* set sector offsets for bottom boot block type */
-               if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B)
-               {       /* AMDLV320B has 8 x 8k bottom boot sectors */
-                       for (i = 0; i < 8; i++)                                                                                         /* +8k          */
-                               info->start[i] = base + (i * (0x00002000 << FLASH_SHIFT));
-                       for (; i < info->sector_count; i++)                                                                     /* +64k         */
-                               info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT)) - (0x00070000 << FLASH_SHIFT);
-               }
-               else
-               {       /* other types have 4 bottom boot sectors (16,8,8,32) */
-                       i = 0;
-                       info->start[i++] = base +  0x00000000;                                                          /* -            */
-                       info->start[i++] = base + (0x00004000 << FLASH_SHIFT);                          /* +16k         */
-                       info->start[i++] = base + (0x00006000 << FLASH_SHIFT);                          /* +8k          */
-                       info->start[i++] = base + (0x00008000 << FLASH_SHIFT);                          /* +8k          */
-                       info->start[i++] = base + (0x00010000 << FLASH_SHIFT);                          /* +32k         */
-                       for (; i < info->sector_count; i++)                                                                     /* +64k         */
-                               info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT)) - (0x00030000 << FLASH_SHIFT);
-               }
-       }
-       else
-       {       /* top boot sector types - not so useful */
-               /* set sector offsets for top boot block type */
-               if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T)
-               {       /* AMDLV320T has 8 x 8k top boot sectors */
-                       for (i = 0; i < info->sector_count - 8; i++)                                            /* +64k         */
-                               info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT));
-                       for (; i < info->sector_count; i++)                                                                     /* +8k          */
-                               info->start[i] = base + (i * (0x00002000 << FLASH_SHIFT));
-               }
-               else
-               {       /* other types have 4 top boot sectors (32,8,8,16) */
-                       for (i = 0; i < info->sector_count - 4; i++)                                            /* +64k         */
-                               info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT));
-
-                       info->start[i++] = base + info->size - (0x00010000 << FLASH_SHIFT);     /* -32k         */
-                       info->start[i++] = base + info->size - (0x00008000 << FLASH_SHIFT);     /* -8k          */
-                       info->start[i++] = base + info->size - (0x00006000 << FLASH_SHIFT);     /* -8k          */
-                       info->start[i]   = base + info->size - (0x00004000 << FLASH_SHIFT);     /* -16k         */
-               }
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("FUJITSU ");    break;
-       case FLASH_MAN_STM:     printf ("ST ");                 break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM160B:      printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM160T:      printf ("AM29LV160T (16 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM320B:      printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM320T:      printf ("AM29LV320T (32 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_STMW320DB:   printf ("M29W320B (32 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_STMW320DT:   printf ("M29W320T (32 Mbit, top boot sector)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s", info->start[i], info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-#define        AMD_ID_LV160T_MVS       (AMD_ID_LV160T & FLASH_DATA_MASK)
-#define AMD_ID_LV160B_MVS      (AMD_ID_LV160B & FLASH_DATA_MASK)
-#define AMD_ID_LV320T_MVS      (AMD_ID_LV320T & FLASH_DATA_MASK)
-#define AMD_ID_LV320B_MVS      (AMD_ID_LV320B & FLASH_DATA_MASK)
-#define STM_ID_W320DT_MVS      (STM_ID_29W320DT & FLASH_DATA_MASK)
-#define STM_ID_W320DB_MVS      (STM_ID_29W320DB & FLASH_DATA_MASK)
-#define AMD_MANUFACT_MVS       (AMD_MANUFACT  & FLASH_DATA_MASK)
-#define FUJ_MANUFACT_MVS       (FUJ_MANUFACT  & FLASH_DATA_MASK)
-#define STM_MANUFACT_MVS       (STM_MANUFACT  & FLASH_DATA_MASK)
-
-#if (FLASH_BUS_WIDTH >= 16)
-       #define AUTOSELECT_ADDR1        0x0555
-       #define AUTOSELECT_ADDR2        0x02AA
-       #define AUTOSELECT_ADDR3        AUTOSELECT_ADDR1
-#else
-       #define AUTOSELECT_ADDR1        0x0AAA
-       #define AUTOSELECT_ADDR2        0x0555
-       #define AUTOSELECT_ADDR3        AUTOSELECT_ADDR1
-#endif
-
-#define AUTOSELECT_DATA1       (0x00AA00AA & FLASH_DATA_MASK)
-#define AUTOSELECT_DATA2       (0x00550055 & FLASH_DATA_MASK)
-#define AUTOSELECT_DATA3       (0x00900090 & FLASH_DATA_MASK)
-
-#define RESET_BANK_DATA                (0x00F000F0 & FLASH_DATA_MASK)
-
-
-static ulong flash_get_size (vu_long *address, flash_info_t *info)
-{
-       short i;
-       FDT value;
-       FDT *addr = (FDT *)address;
-
-       ulong base = (ulong)address;
-       addr[AUTOSELECT_ADDR1] = AUTOSELECT_DATA1;
-       addr[AUTOSELECT_ADDR2] = AUTOSELECT_DATA2;
-       addr[AUTOSELECT_ADDR3] = AUTOSELECT_DATA3;
-       __asm__ __volatile__("sync");
-
-       udelay(180);
-
-       value = addr[0];                        /* manufacturer ID      */
-       switch (value) {
-       case AMD_MANUFACT_MVS:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case FUJ_MANUFACT_MVS:
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case STM_MANUFACT_MVS:
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-#if (FLASH_BUS_WIDTH >= 16)
-       value = addr[1];                        /* device ID            */
-#else
-       value = addr[2];                        /* device ID            */
-#endif
-
-       switch (value) {
-       case AMD_ID_LV160T_MVS:
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 37;
-               info->size = (0x00200000 << FLASH_SHIFT);
-               break;                          /* => 2 or 4 MB         */
-
-       case AMD_ID_LV160B_MVS:
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 37;
-               info->size = (0x00200000 << FLASH_SHIFT);
-               break;                          /* => 2 or 4 MB         */
-
-       case AMD_ID_LV320T_MVS:
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 71;
-               info->size = (0x00400000 << FLASH_SHIFT);
-               break;                          /* => 4 or 8 MB         */
-
-       case AMD_ID_LV320B_MVS:
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 71;
-               info->size = (0x00400000 << FLASH_SHIFT);
-               break;                          /* => 4 or 8MB          */
-
-       case STM_ID_W320DT_MVS:
-               info->flash_id += FLASH_STMW320DT;
-               info->sector_count = 67;
-               info->size = (0x00400000 << FLASH_SHIFT);
-               break;                          /* => 4 or 8 MB         */
-
-       case STM_ID_W320DB_MVS:
-               info->flash_id += FLASH_STMW320DB;
-               info->sector_count = 67;
-               info->size = (0x00400000 << FLASH_SHIFT);
-               break;                          /* => 4 or 8MB          */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start address table */
-       flash_get_offsets (base, info);
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               addr = (FDT *)(info->start[i]);
-               info->protect[i] = addr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (FDT *)info->start[0];
-               *addr = RESET_BANK_DATA;        /* reset bank */
-       }
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-#if (FLASH_BUS_WIDTH >= 16)
-       #define ERASE_ADDR1 0x0555
-       #define ERASE_ADDR2 0x02AA
-#else
-       #define ERASE_ADDR1 0x0AAA
-       #define ERASE_ADDR2 0x0555
-#endif
-
-#define ERASE_ADDR3 ERASE_ADDR1
-#define ERASE_ADDR4 ERASE_ADDR1
-#define ERASE_ADDR5 ERASE_ADDR2
-
-#define ERASE_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define ERASE_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define ERASE_DATA3 (0x00800080 & FLASH_DATA_MASK)
-#define ERASE_DATA4 ERASE_DATA1
-#define ERASE_DATA5 ERASE_DATA2
-
-#define ERASE_SECTOR_DATA      (0x00300030 & FLASH_DATA_MASK)
-#define ERASE_CHIP_DATA                (0x00100010 & FLASH_DATA_MASK)
-#define ERASE_CONFIRM_DATA     (0x00800080 & FLASH_DATA_MASK)
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       FDT *addr = (FDT *)(info->start[0]);
-
-       int prot, sect, l_sect, flag;
-       ulong start, now, last;
-
-       __asm__ __volatile__ ("sync");
-       addr[0] = 0xf0;
-       udelay(1000);
-
-       printf("\nflash_erase: first = %d @ 0x%08lx\n", s_first, info->start[s_first] );
-       printf("             last  = %d @ 0x%08lx\n", s_last , info->start[s_last ] );
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) || (info->flash_id > FLASH_AMD_COMP)) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n", info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[ERASE_ADDR1] = ERASE_DATA1;
-       addr[ERASE_ADDR2] = ERASE_DATA2;
-       addr[ERASE_ADDR3] = ERASE_DATA3;
-       addr[ERASE_ADDR4] = ERASE_DATA4;
-       addr[ERASE_ADDR5] = ERASE_DATA5;
-
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) {
-                       addr = (FDT *)(info->start[sect]);
-                       addr[0] = ERASE_SECTOR_DATA;
-                       l_sect = sect;
-               }
-       }
-
-       if (flag)
-               enable_interrupts();
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last  = start;
-       addr = (FDT *)(info->start[l_sect]);
-
-       while ((addr[0] & ERASE_CONFIRM_DATA) != ERASE_CONFIRM_DATA) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-#define BUFF_INC 4
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       mvdebug (("+write_buff %p ==> 0x%08lx, count = 0x%08lx\n", src, addr, cnt));
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               mvdebug ((" handle unaligned start bytes (cnt = 0x%08lx)\n", cnt));
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<BUFF_INC && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<BUFF_INC; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += BUFF_INC;
-       }
-
-       /*
-        * handle (half)word aligned part
-        */
-       mvdebug ((" handle word aligned part (cnt = 0x%08lx)\n", cnt));
-       while (cnt >= BUFF_INC) {
-               data = 0;
-               for (i=0; i<BUFF_INC; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += BUFF_INC;
-               cnt -= BUFF_INC;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       mvdebug ((" handle unaligned tail bytes (cnt = 0x%08lx)\n", cnt));
-       data = 0;
-       for (i=0, cp=wp; i<BUFF_INC && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<BUFF_INC; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-#if (FLASH_BUS_WIDTH >= 16)
-       #define WRITE_ADDR1 0x0555
-       #define WRITE_ADDR2 0x02AA
-#else
-       #define WRITE_ADDR1 0x0AAA
-       #define WRITE_ADDR2 0x0555
-       #define WRITE_ADDR3 WRITE_ADDR1
-#endif
-
-#define WRITE_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define WRITE_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define WRITE_DATA3 (0x00A000A0 & FLASH_DATA_MASK)
-
-#define WRITE_CONFIRM_DATA ERASE_CONFIRM_DATA
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_char (flash_info_t *info, ulong dest, uchar data)
-{
-       vu_char *addr = (vu_char *)(info->start[0]);
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_char *)dest) & data) != data) {
-               printf(" *** ERROR: Flash not erased !\n");
-               return (2);
-       }
-       flag = disable_interrupts();
-
-       addr[WRITE_ADDR1] = WRITE_DATA1;
-       addr[WRITE_ADDR2] = WRITE_DATA2;
-       addr[WRITE_ADDR3] = WRITE_DATA3;
-       *((vu_char *)dest) = data;
-
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       addr = (vu_char *)dest;
-       while (( (*addr) & WRITE_CONFIRM_DATA) != (data & WRITE_CONFIRM_DATA)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       printf(" *** ERROR: Flash write timeout !");
-                       return (1);
-               }
-       }
-       mvdebug (("-write_byte\n"));
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       int i,
-               result = 0;
-
-       mvdebug (("+write_word : 0x%08lx @ 0x%08lx\n", data, dest));
-       for ( i=0; (i < 4) && (result == 0); i++, dest+=1 )
-               result = write_char (info, dest, (data >> (8*(3-i))) & 0xff );
-       mvdebug (("-write_word\n"));
-       return result;
-}
-/*---------------------------------------------------------------- */
diff --git a/board/mvblue/mvblue.c b/board/mvblue/mvblue.c
deleted file mode 100644 (file)
index 63503e8..0000000
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * GNU General Public License for more details.
- *
- * MATRIX Vision GmbH / June 2002-Nov 2003
- * Andre Schwarz
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/io.h>
-#include <ns16550.h>
-#include <netdev.h>
-
-#ifdef CONFIG_PCI
-#include <pci.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-u32 get_BoardType (void);
-
-#define PCI_CONFIG(b,d,f,r)    cpu_to_le32(0x80000000 | ((b&0xff)<<16) \
-                                                     | ((d&0x1f)<<11) \
-                                                     | ((f&0x7)<<7)   \
-                                                     | (r&0xfc) )
-
-int mv_pci_read (int bus, int dev, int func, int reg)
-{
-       *(u32 *) (0xfec00cf8) = PCI_CONFIG (bus, dev, func, reg);
-       asm ("sync");
-       return cpu_to_le32 (*(u32 *) (0xfee00cfc));
-}
-
-u32 get_BoardType ()
-{
-       return (mv_pci_read (0, 0xe, 0, 0) == 0x06801095 ? 0 : 1);
-}
-
-void init_2nd_DUART (void)
-{
-       NS16550_t console = (NS16550_t) CONFIG_SYS_NS16550_COM2;
-       int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE;
-
-       *(u8 *) (0xfc004511) = 0x1;
-       NS16550_init (console, clock_divisor);
-}
-void hw_watchdog_reset (void)
-{
-       if (get_BoardType () == 0) {
-               *(u32 *) (0xff000005) = 0;
-               asm ("sync");
-       }
-}
-int checkboard (void)
-{
-       ulong busfreq = get_bus_freq (0);
-       char buf[32];
-       u32 BoardType = get_BoardType ();
-       char *BoardName[2] = { "mvBlueBOX", "mvBlueLYNX" };
-       char *p;
-
-       hw_watchdog_reset ();
-
-       printf ("U-Boot (%s) running on mvBLUE device.\n", MV_VERSION);
-       printf ("       Found %s running at %s MHz memory clock.\n",
-               BoardName[BoardType], strmhz (buf, busfreq));
-
-       init_2nd_DUART ();
-
-       if ((p = getenv ("console_nr")) != NULL) {
-               unsigned long con_nr = simple_strtoul (p, NULL, 10) & 3;
-
-               gd->baudrate &= ~3;
-               gd->baudrate |= con_nr & 3;
-       }
-       return 0;
-}
-
-phys_size_t initdram (int board_type)
-{
-       long size;
-       long new_bank0_end;
-       long mear1;
-       long emear1;
-
-       size = get_ram_size(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       new_bank0_end = size - 1;
-       mear1 = mpc824x_mpc107_getreg(MEAR1);
-       emear1 = mpc824x_mpc107_getreg(EMEAR1);
-       mear1 = (mear1  & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
-       emear1 = (emear1 & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
-       mpc824x_mpc107_setreg(MEAR1,  mear1);
-       mpc824x_mpc107_setreg(EMEAR1, emear1);
-
-       return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-u8 *dhcp_vendorex_prep (u8 * e)
-{
-       char *ptr;
-
-       /* DHCP vendor-class-identifier = 60 */
-       if ((ptr = getenv ("dhcp_vendor-class-identifier"))) {
-               *e++ = 60;
-               *e++ = strlen (ptr);
-               while (*ptr)
-                       *e++ = *ptr++;
-       }
-       /* my DHCP_CLIENT_IDENTIFIER = 61 */
-       if ((ptr = getenv ("dhcp_client_id"))) {
-               *e++ = 61;
-               *e++ = strlen (ptr);
-               while (*ptr)
-                       *e++ = *ptr++;
-       }
-       return e;
-}
-
-u8 *dhcp_vendorex_proc (u8 * popt)
-{
-       return NULL;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Initialize PCI Devices
- */
-#ifdef CONFIG_PCI
-void pci_mvblue_clear_base (struct pci_controller *hose, pci_dev_t dev)
-{
-       u32 cnt;
-
-       printf ("clear base @ dev/func 0x%02x/0x%02x ... ", PCI_DEV (dev),
-               PCI_FUNC (dev));
-       for (cnt = 0; cnt < 6; cnt++)
-               pci_hose_write_config_dword (hose, dev, 0x10 + (4 * cnt),
-                                            0x0);
-       printf ("done\n");
-}
-
-void duart_setup (u32 base, u16 divisor)
-{
-       printf ("duart setup ...");
-       out_8 ((u8 *) (CONFIG_SYS_ISA_IO + base + 3), 0x80);
-       out_8 ((u8 *) (CONFIG_SYS_ISA_IO + base + 0), divisor & 0xff);
-       out_8 ((u8 *) (CONFIG_SYS_ISA_IO + base + 1), divisor >> 8);
-       out_8 ((u8 *) (CONFIG_SYS_ISA_IO + base + 3), 0x03);
-       out_8 ((u8 *) (CONFIG_SYS_ISA_IO + base + 4), 0x03);
-       out_8 ((u8 *) (CONFIG_SYS_ISA_IO + base + 2), 0x07);
-       printf ("done\n");
-}
-
-void pci_mvblue_fixup_irq_behind_bridge (struct pci_controller *hose,
-                                        pci_dev_t bridge, unsigned char irq)
-{
-       pci_dev_t d;
-       unsigned char bus;
-       unsigned short vendor, class;
-
-       pci_hose_read_config_byte (hose, bridge, PCI_SECONDARY_BUS, &bus);
-       for (d = PCI_BDF (bus, 0, 0);
-            d < PCI_BDF (bus, PCI_MAX_PCI_DEVICES - 1,
-                         PCI_MAX_PCI_FUNCTIONS - 1);
-            d += PCI_BDF (0, 0, 1)) {
-               pci_hose_read_config_word (hose, d, PCI_VENDOR_ID, &vendor);
-               if (vendor != 0xffff && vendor != 0x0000) {
-                       pci_hose_read_config_word (hose, d, PCI_CLASS_DEVICE,
-                                                  &class);
-                       if (class == PCI_CLASS_BRIDGE_PCI)
-                               pci_mvblue_fixup_irq_behind_bridge (hose, d,
-                                                                   irq);
-                       else
-                               pci_hose_write_config_byte (hose, d,
-                                                           PCI_INTERRUPT_LINE,
-                                                           irq);
-               }
-       }
-}
-
-#define MV_MAX_PCI_BUSSES      3
-#define SLOT0_IRQ      3
-#define SLOT1_IRQ      4
-void pci_mvblue_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
-{
-       unsigned char line = 0xff;
-       unsigned short class;
-
-       if (PCI_BUS (dev) == 0) {
-               switch (PCI_DEV (dev)) {
-               case 0xd:
-                       if (get_BoardType () == 0) {
-                               line = 1;
-                       } else
-                               /* mvBL */
-                               line = 2;
-                       break;
-               case 0xe:
-                       /* mvBB: IDE */
-                       line = 2;
-                       pci_hose_write_config_byte (hose, dev, 0x8a, 0x20);
-                       break;
-               case 0xf:
-                       /* mvBB: Slot0 (Grabber) */
-                       pci_hose_read_config_word (hose, dev,
-                                                  PCI_CLASS_DEVICE, &class);
-                       if (class == PCI_CLASS_BRIDGE_PCI) {
-                               pci_mvblue_fixup_irq_behind_bridge (hose, dev,
-                                                                   SLOT0_IRQ);
-                               line = 0xff;
-                       } else
-                               line = SLOT0_IRQ;
-                       break;
-               case 0x10:
-                       /* mvBB: Slot1 */
-                       pci_hose_read_config_word (hose, dev,
-                                                  PCI_CLASS_DEVICE, &class);
-                       if (class == PCI_CLASS_BRIDGE_PCI) {
-                               pci_mvblue_fixup_irq_behind_bridge (hose, dev,
-                                                                   SLOT1_IRQ);
-                               line = 0xff;
-                       } else
-                               line = SLOT1_IRQ;
-                       break;
-               default:
-                       printf ("***pci_scan: illegal dev = 0x%08x\n",
-                               PCI_DEV (dev));
-                       line = 0xff;
-                       break;
-               }
-               pci_hose_write_config_byte (hose, dev, PCI_INTERRUPT_LINE,
-                                           line);
-       }
-}
-
-struct pci_controller hose = {
-       fixup_irq:pci_mvblue_fixup_irq
-};
-
-void pci_init_board (void)
-{
-       pci_mpc824x_init (&hose);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
-#endif
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds
deleted file mode 100644 (file)
index 5034a96..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * (C) Copyright 2001-2007
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  .text      :
-  {
-    arch/powerpc/cpu/mpc824x/start.o           (.text*)
-    lib/built-in.o                             (.text*)
-    net/built-in.o                             (.text*)
-    drivers/pci/built-in.o                     (.text*)
-    arch/powerpc/cpu/mpc824x/built-in.o                (.text*)
-    board/mvblue/built-in.o                    (.text*)
-    arch/powerpc/lib/built-in.o                        (.text*)
-
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o      (.ppcenv*)
-
-    *(.text*)
-    . = ALIGN(16);
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/netvia/Kconfig b/board/netvia/Kconfig
deleted file mode 100644 (file)
index 3e740e5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_NETVIA
-
-config SYS_BOARD
-       default "netvia"
-
-config SYS_CONFIG_NAME
-       default "NETVIA"
-
-endif
diff --git a/board/netvia/MAINTAINERS b/board/netvia/MAINTAINERS
deleted file mode 100644 (file)
index 0313058..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-NETVIA BOARD
-M:     Pantelis Antoniou <panto@intracom.gr>
-S:     Maintained
-F:     board/netvia/
-F:     include/configs/NETVIA.h
-F:     configs/NETVIA_defconfig
-F:     configs/NETVIA_V2_defconfig
diff --git a/board/netvia/Makefile b/board/netvia/Makefile
deleted file mode 100644 (file)
index b667bc9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = netvia.o flash.o
diff --git a/board/netvia/flash.c b/board/netvia/flash.c
deleted file mode 100644 (file)
index 14888f8..0000000
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];   /* info for FLASH chips    */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_byte(flash_info_t * info, ulong dest, uchar data);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i)
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-
-       size = flash_get_size((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", size, size << 20);
-       }
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size & 0xFFFF8000);
-       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | (memctl->memc_br0 & ~(BR_BA_MSK));
-
-       /* Re-do sizing to get full correct info */
-       size = flash_get_size((vu_long *) CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_get_offsets(CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                       CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE + monitor_flash_len - 1,
-                       &flash_info[0]);
-
-       flash_protect ( FLAG_PROTECT_SET,
-                       CONFIG_ENV_ADDR,
-                       CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1,
-                       &flash_info[0]);
-
-#ifdef CONFIG_ENV_ADDR_REDUND
-       flash_protect ( FLAG_PROTECT_SET,
-                       CONFIG_ENV_ADDR_REDUND,
-                       CONFIG_ENV_ADDR_REDUND + CONFIG_ENV_SECT_SIZE - 1,
-                       &flash_info[0]);
-#endif
-
-
-       flash_info[0].size = size;
-
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets(ulong base, flash_info_t * info)
-{
-       int i;
-
-       /* set up sector start address table */
-       if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
-               for (i = 0; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00010000);
-               }
-       } else if (info->flash_id & FLASH_BTYPE) {
-               /* set sector offsets for bottom boot block type    */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00004000;
-               info->start[2] = base + 0x00006000;
-               info->start[3] = base + 0x00008000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00010000) - 0x00030000;
-               }
-       } else {
-               /* set sector offsets for top boot block type       */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00004000;
-               info->start[i--] = base + info->size - 0x00006000;
-               info->start[i--] = base + info->size - 0x00008000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00010000;
-               }
-       }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t * info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:
-               printf("AMD ");
-               break;
-       case FLASH_MAN_FUJ:
-               printf("FUJITSU ");
-               break;
-       case FLASH_MAN_MX:
-               printf("MXIC ");
-               break;
-       default:
-               printf("Unknown Vendor ");
-               break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM040:
-               printf("AM29LV040B (4 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM400B:
-               printf("AM29LV400B (4 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM400T:
-               printf("AM29LV400T (4 Mbit, top boot sector)\n");
-               break;
-       case FLASH_AM800B:
-               printf("AM29LV800B (8 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM800T:
-               printf("AM29LV800T (8 Mbit, top boot sector)\n");
-               break;
-       case FLASH_AM160B:
-               printf("AM29LV160B (16 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM160T:
-               printf("AM29LV160T (16 Mbit, top boot sector)\n");
-               break;
-       case FLASH_AM320B:
-               printf("AM29LV320B (32 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM320T:
-               printf("AM29LV320T (32 Mbit, top boot sector)\n");
-               break;
-       default:
-               printf("Unknown Chip Type\n");
-               break;
-       }
-
-       printf("  Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
-
-       printf("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf("\n   ");
-               printf(" %08lX%s", info->start[i], info->protect[i] ? " (RO)" : "     ");
-       }
-       printf("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
-       short i;
-       uchar mid;
-       uchar pid;
-       vu_char *caddr = (vu_char *) addr;
-       ulong base = (ulong) addr;
-
-
-       /* Write auto select command: read Manufacturer ID */
-       caddr[0x0555] = 0xAA;
-       caddr[0x02AA] = 0x55;
-       caddr[0x0555] = 0x90;
-
-       mid = caddr[0];
-       switch (mid) {
-       case (AMD_MANUFACT & 0xFF):
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case (FUJ_MANUFACT & 0xFF):
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case (MX_MANUFACT & 0xFF):
-               info->flash_id = FLASH_MAN_MX;
-               break;
-       case (STM_MANUFACT & 0xFF):
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                             /* no or unknown flash  */
-       }
-
-       pid = caddr[1];                         /* device ID        */
-       switch (pid) {
-       case (AMD_ID_LV400T & 0xFF):
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                                  /* => 512 kB        */
-
-       case (AMD_ID_LV400B & 0xFF):
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                                  /* => 512 kB        */
-
-       case (AMD_ID_LV800T & 0xFF):
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                                  /* => 1 MB      */
-
-       case (AMD_ID_LV800B & 0xFF):
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                                  /* => 1 MB      */
-
-       case (AMD_ID_LV160T & 0xFF):
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                                  /* => 2 MB      */
-
-       case (AMD_ID_LV160B & 0xFF):
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                                  /* => 2 MB      */
-
-       case (AMD_ID_LV040B & 0xFF):
-               info->flash_id += FLASH_AM040;
-               info->sector_count = 8;
-               info->size = 0x00080000;
-               break;
-
-       case (STM_ID_M29W040B & 0xFF):
-               info->flash_id += FLASH_AM040;
-               info->sector_count = 8;
-               info->size = 0x00080000;
-               break;
-
-#if 0                                                  /* enable when device IDs are available */
-       case (AMD_ID_LV320T & 0xFF):
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 67;
-               info->size = 0x00400000;
-               break;                                  /* => 4 MB      */
-
-       case (AMD_ID_LV320B & 0xFF):
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 67;
-               info->size = 0x00400000;
-               break;                                  /* => 4 MB      */
-#endif
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                             /* => no or unknown flash */
-
-       }
-
-       printf(" ");
-       /* set up sector start address table */
-       if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
-               for (i = 0; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00010000);
-               }
-       } else if (info->flash_id & FLASH_BTYPE) {
-               /* set sector offsets for bottom boot block type    */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00004000;
-               info->start[2] = base + 0x00006000;
-               info->start[3] = base + 0x00008000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00010000) - 0x00030000;
-               }
-       } else {
-               /* set sector offsets for top boot block type       */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00004000;
-               info->start[i--] = base + info->size - 0x00006000;
-               info->start[i--] = base + info->size - 0x00008000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00010000;
-               }
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection: D0 = 1 if protected */
-               caddr = (volatile unsigned char *)(info->start[i]);
-               info->protect[i] = caddr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               caddr = (vu_char *) info->start[0];
-
-               caddr[0x0555] = 0xAA;
-               caddr[0x02AA] = 0x55;
-               caddr[0x0555] = 0xF0;
-
-               udelay(20000);
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
-       vu_char *addr = (vu_char *) (info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf("- missing\n");
-               } else {
-                       printf("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) ||
-           (info->flash_id > FLASH_AMD_COMP)) {
-               printf("Can't erase unknown flash type %08lx - aborted\n", info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf("- Warning: %d protected sectors will not be erased!\n", prot);
-       } else {
-               printf("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0555] = 0xAA;
-       addr[0x02AA] = 0x55;
-       addr[0x0555] = 0x80;
-       addr[0x0555] = 0xAA;
-       addr[0x02AA] = 0x55;
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr = (vu_char *) (info->start[sect]);
-                       addr[0] = 0x30;
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay(1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer(0);
-       last = start;
-       addr = (vu_char *) (info->start[l_sect]);
-       while ((addr[0] & 0x80) != 0x80) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       putc('.');
-                       last = now;
-               }
-       }
-
-  DONE:
-       /* reset to read mode */
-       addr = (vu_char *) info->start[0];
-       addr[0] = 0xF0;                         /* reset bank */
-
-       printf(" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       int rc;
-
-       while (cnt > 0) {
-               if ((rc = write_byte(info, addr++, *src++)) != 0) {
-                       return (rc);
-               }
-               --cnt;
-       }
-
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte(flash_info_t * info, ulong dest, uchar data)
-{
-       vu_char *addr = (vu_char *) (info->start[0]);
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_char *) dest) & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0555] = 0xAA;
-       addr[0x02AA] = 0x55;
-       addr[0x0555] = 0xA0;
-
-       *((vu_char *) dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer(0);
-       while ((*((vu_char *) dest) & 0x80) != (data & 0x80)) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       return (1);
-               }
-       }
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/netvia/netvia.c b/board/netvia/netvia.c
deleted file mode 100644 (file)
index b3bbf47..0000000
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * U-Boot port on NetVia board
- */
-
-#include <common.h>
-#include "mpc8xx.h"
-
-/****************************************************************/
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-/* last value written to the external register; we cannot read back */
-unsigned int last_er_val;
-#endif
-
-/****************************************************************/
-
-/****************************************************************/
-
-/* some sane bit macros */
-#define _BD(_b)                                (1U << (31-(_b)))
-#define _BDR(_l, _h)                   (((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1))
-
-#define _BW(_b)                                (1U << (15-(_b)))
-#define _BWR(_l, _h)                   (((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1))
-
-#define _BB(_b)                                (1U << (7-(_b)))
-#define _BBR(_l, _h)                   (((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1))
-
-#define _B(_b)                         _BD(_b)
-#define _BR(_l, _h)                    _BDR(_l, _h)
-
-/****************************************************************/
-
-#define _NOT_USED_     0xFFFFFFFF
-
-/****************************************************************/
-
-#define CS_0000                0x00000000
-#define CS_0001                0x10000000
-#define CS_0010                0x20000000
-#define CS_0011                0x30000000
-#define CS_0100                0x40000000
-#define CS_0101                0x50000000
-#define CS_0110                0x60000000
-#define CS_0111                0x70000000
-#define CS_1000                0x80000000
-#define CS_1001                0x90000000
-#define CS_1010                0xA0000000
-#define CS_1011                0xB0000000
-#define CS_1100                0xC0000000
-#define CS_1101                0xD0000000
-#define CS_1110                0xE0000000
-#define CS_1111                0xF0000000
-
-#define BS_0000                0x00000000
-#define BS_0001                0x01000000
-#define BS_0010                0x02000000
-#define BS_0011                0x03000000
-#define BS_0100                0x04000000
-#define BS_0101                0x05000000
-#define BS_0110                0x06000000
-#define BS_0111                0x07000000
-#define BS_1000                0x08000000
-#define BS_1001                0x09000000
-#define BS_1010                0x0A000000
-#define BS_1011                0x0B000000
-#define BS_1100                0x0C000000
-#define BS_1101                0x0D000000
-#define BS_1110                0x0E000000
-#define BS_1111                0x0F000000
-
-#define A10_AAAA       0x00000000
-#define A10_AAA0       0x00200000
-#define A10_AAA1       0x00300000
-#define A10_000A       0x00800000
-#define A10_0000       0x00A00000
-#define A10_0001       0x00B00000
-#define A10_111A       0x00C00000
-#define A10_1110       0x00E00000
-#define A10_1111       0x00F00000
-
-#define RAS_0000       0x00000000
-#define RAS_0001       0x00040000
-#define RAS_1110       0x00080000
-#define RAS_1111       0x000C0000
-
-#define CAS_0000       0x00000000
-#define CAS_0001       0x00010000
-#define CAS_1110       0x00020000
-#define CAS_1111       0x00030000
-
-#define WE_0000                0x00000000
-#define WE_0001                0x00004000
-#define WE_1110                0x00008000
-#define WE_1111                0x0000C000
-
-#define GPL4_0000      0x00000000
-#define GPL4_0001      0x00001000
-#define GPL4_1110      0x00002000
-#define GPL4_1111      0x00003000
-
-#define GPL5_0000      0x00000000
-#define GPL5_0001      0x00000400
-#define GPL5_1110      0x00000800
-#define GPL5_1111      0x00000C00
-#define LOOP           0x00000080
-
-#define EXEN           0x00000040
-
-#define AMX_COL                0x00000000
-#define AMX_ROW                0x00000020
-#define AMX_MAR                0x00000030
-
-#define NA             0x00000008
-
-#define UTA            0x00000004
-
-#define TODT           0x00000002
-
-#define LAST           0x00000001
-
-const uint sdram_table[0x40] = {
-       /* RSS */
-       CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* ACT   */
-       CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* NOP   */
-       CS_0000 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA,                   /* READ  */
-       CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA,                   /* PALL  */
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,                         /* NOP   */
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST,     /* NOP   */
-       _NOT_USED_, _NOT_USED_,
-
-       /* RBS */
-       CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* ACT   */
-       CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* NOP   */
-       CS_0001 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA,                   /* READ  */
-       CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* NOP   */
-       CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,                         /* NOP   */
-       CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,                         /* NOP   */
-       CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL,                         /* PALL  */
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST,           /* NOP   */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /* WSS */
-       CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA,
-       CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,
-       CS_0000 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL | UTA,
-       CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /* WBS */
-       CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* ACT   */
-       CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,                         /* NOP   */
-       CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL,                         /* WRITE */
-       CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,                         /* NOP   */
-       CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,                         /* NOP   */
-       CS_1111 | BS_0001 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* NOP   */
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA,                   /* NOP   */
-       CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA,                   /* PALL  */
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST,     /* NOP   */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /* UPT */
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,                         /* NOP   */
-       CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_0001 | WE_1111 | AMX_COL | LOOP,
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | LOOP,
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | LAST,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_,
-
-       /* EXC */
-       CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL,
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST,
-
-       /* REG */
-       CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1110 | AMX_MAR,
-       CS_0001 | BS_1111 | A10_0001 | RAS_0001 | CAS_0001 | WE_0001 | AMX_MAR | TODT | LAST,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test ETX ID string (ETX_xxx...)
- *
- * Return 1 always.
- */
-
-int checkboard(void)
-{
-#if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1
-       printf ("NETVIA v1\n");
-#else
-       printf ("NETVIA v2+\n");
-#endif
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* 0xC8 = 0b11001000 , CAS3, >> 2 = 0b00 11 0 010 */
-#define MAR_SDRAM_INIT         0x000000C8LU
-
-#define MCR_OP(x)              ((unsigned long)((x) & 3) << (31-1))
-#define MCR_OP_MASK            MCR_OP(3)
-
-#define MCR_UM(x)              ((unsigned long)((x) & 1) << (31 - 8))
-#define MCR_UM_MASK            MCR_UM(1)
-#define MCR_UM_UPMA            MCR_UM(0)
-#define MCR_UM_UPMB            MCR_UM(1)
-
-#define MCR_MB(x)              ((unsigned long)((x) & 7) << (31 - 18))
-#define MCR_MB_MASK            MCR_MB(7)
-#define MCR_MB_CS(x)           MCR_MB(x)
-
-#define MCR_MCLF(x)            ((unsigned long)((x) & 15) << (31 - 23))
-#define MCR_MCLF_MASK          MCR_MCLF(15)
-
-phys_size_t initdram(int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size;
-
-       upmconfig(UPMA, (uint *) sdram_table, sizeof(sdram_table) / sizeof(uint));
-
-       /*
-        * Preliminary prescaler for refresh
-        */
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR_1BK_8K;
-
-       memctl->memc_mar = MAR_SDRAM_INIT;      /* 32-bit address to be output on the address bus if AMX = 0b11 */
-
-    /*
-     * Map controller bank 3 to the SDRAM bank at preliminary address.
-     */
-       memctl->memc_or3 = CONFIG_SYS_OR3_PRELIM;
-       memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM;
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_9COL & ~MAMR_PTAE;  /* no refresh yet */
-
-       udelay(200);
-
-       /* perform SDRAM initialisation sequence */
-       memctl->memc_mcr = MCR_OP_RUN | MCR_UM_UPMA | MCR_MB_CS3 | MCR_MCLF(1) | MCR_MAD(0x3C); /* precharge all                        */
-       udelay(1);
-       memctl->memc_mcr = MCR_OP_RUN | MCR_UM_UPMA | MCR_MB_CS3 | MCR_MCLF(0) | MCR_MAD(0x30); /* refresh 16 times(0)          */
-       udelay(1);
-       memctl->memc_mcr = MCR_OP_RUN | MCR_UM_UPMA | MCR_MB_CS3 | MCR_MCLF(1) | MCR_MAD(0x3E); /* exception program (write mar) */
-       udelay(1);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
-       udelay(1000);
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_9COL;
-
-       size = SDRAM_MAX_SIZE;
-
-       udelay(10000);
-
-       return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_r(void)
-{
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-       last_er_val = 0xffffffff;
-#endif
-       return(0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* GP = general purpose, SP = special purpose (on chip peripheral) */
-
-/* bits that can have a special purpose or can be configured as inputs/outputs */
-#define PA_GP_INMASK   0
-#define PA_GP_OUTMASK  (_BW(5) | _BWR(14, 15))
-#define PA_SP_MASK     (_BW(4) | _BWR(6, 13))
-#define PA_ODR_VAL     0
-#define PA_GP_OUTVAL   _BW(5)
-#define PA_SP_DIRVAL   0
-
-#define PB_GP_INMASK   _B(28)
-#define PB_GP_OUTMASK  (_BR(16, 19) | _BR(26, 27) | _BR(29, 31))
-#define PB_SP_MASK     _BR(22, 25)
-#define PB_ODR_VAL     0
-#define PB_GP_OUTVAL   (_BR(16, 19) | _BR(26, 27) | _BR(29, 31))
-#define PB_SP_DIRVAL   0
-
-#if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1
-
-#define PC_GP_INMASK   (_BWR(5, 7) | _BWR(9, 10) | _BW(13))
-#define PC_GP_OUTMASK  _BW(12)
-#define PC_SP_MASK     (_BW(4) | _BW(8))
-#define PC_SOVAL       0
-#define PC_INTVAL      0
-#define PC_GP_OUTVAL   0
-#define PC_SP_DIRVAL   0
-
-#define PD_GP_INMASK   0
-#define PD_GP_OUTMASK  _BWR(3, 15)
-#define PD_SP_MASK     0
-#define PD_GP_OUTVAL   (_BW(3) | _BW(5) | _BW(7) | _BWR(8, 15))
-#define PD_SP_DIRVAL   0
-
-#elif CONFIG_NETVIA_VERSION >= 2
-
-#define PC_GP_INMASK   (_BW(5) | _BW(7) | _BWR(9, 11) | _BWR(13, 15))
-#define PC_GP_OUTMASK  (_BW(6) | _BW(12))
-#define PC_SP_MASK     (_BW(4) | _BW(8))
-#define PC_SOVAL       0
-#define PC_INTVAL      _BW(7)
-#define PC_GP_OUTVAL   (_BW(6) | _BW(12))
-#define PC_SP_DIRVAL   0
-
-#define PD_GP_INMASK   0
-#define PD_GP_OUTMASK  _BWR(3, 15)
-#define PD_SP_MASK     0
-#define PD_GP_OUTVAL   (_BW(3) | _BW(5) | _BW(9) | _BW(11))
-#define PD_SP_DIRVAL   0
-
-#else
-#error Unknown NETVIA board version.
-#endif
-
-int board_early_init_f(void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile iop8xx_t *ioport = &immap->im_ioport;
-       volatile cpm8xx_t *cpm = &immap->im_cpm;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       /* DSP0 chip select */
-       memctl->memc_or4 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_ACS_DIV2 | OR_SETA | OR_TRLX);
-       memctl->memc_br4 = ((DSP0_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-
-       /* DSP1 chip select */
-       memctl->memc_or5 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_ACS_DIV2 | OR_SETA | OR_TRLX);
-       memctl->memc_br5 = ((DSP1_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-
-       /* FPGA chip select */
-       memctl->memc_or6 = ((0xFFFFFFFFLU & ~(FPGA_SIZE - 1)) | OR_BI | OR_SCY_1_CLK);
-       memctl->memc_br6 = ((FPGA_BASE & BR_BA_MSK) | BR_PS_8 | BR_V);
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-       /* NAND chip select */
-       memctl->memc_or1 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_SCY_8_CLK | OR_EHTR | OR_TRLX);
-       memctl->memc_br1 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V);
-
-       /* kill this chip select */
-       memctl->memc_br2 &= ~BR_V;      /* invalid */
-
-       /* external reg chip select */
-       memctl->memc_or7 = ((0xFFFFFFFFLU & ~(ER_SIZE - 1)) | OR_BI | OR_SCY_4_CLK);
-       memctl->memc_br7 = ((ER_BASE & BR_BA_MSK) | BR_PS_32 | BR_V);
-#endif
-
-       ioport->iop_padat       = PA_GP_OUTVAL;
-       ioport->iop_paodr       = PA_ODR_VAL;
-       ioport->iop_padir       = PA_GP_OUTMASK | PA_SP_DIRVAL;
-       ioport->iop_papar       = PA_SP_MASK;
-
-       cpm->cp_pbdat           = PB_GP_OUTVAL;
-       cpm->cp_pbodr           = PB_ODR_VAL;
-       cpm->cp_pbdir           = PB_GP_OUTMASK | PB_SP_DIRVAL;
-       cpm->cp_pbpar           = PB_SP_MASK;
-
-       ioport->iop_pcdat       = PC_GP_OUTVAL;
-       ioport->iop_pcdir       = PC_GP_OUTMASK | PC_SP_DIRVAL;
-       ioport->iop_pcso        = PC_SOVAL;
-       ioport->iop_pcint       = PC_INTVAL;
-       ioport->iop_pcpar       = PC_SP_MASK;
-
-       ioport->iop_pddat       = PD_GP_OUTVAL;
-       ioport->iop_pddir       = PD_GP_OUTMASK | PD_SP_DIRVAL;
-       ioport->iop_pdpar       = PD_SP_MASK;
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-       /* external register init */
-       *(volatile uint *)ER_BASE = 0xFFFFFFFF;
-#endif
-
-       return 0;
-}
diff --git a/board/netvia/u-boot.lds.debug b/board/netvia/u-boot.lds.debug
deleted file mode 100644 (file)
index 5bbf1c5..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o            (.text)
-    common/dlmalloc.o          (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index c2e07dbd9b5c6e2f90ec40e46f194b42df1a4af0..08fcaf21b3c6302a0ab425ee1537fee1537287ab 100644 (file)
@@ -422,8 +422,12 @@ int misc_init_r(void)
        /*
         * Cortex-A8(r1p0..r1p2) errata 430973 workaround
         * Set IBE bit in Auxiliary Control Register
+        *
+        * Call this routine only on real secure device
+        * Qemu does not implement secure PPA and crash
         */
-       omap3_update_aux_cr_secure_rx51(1 << 6, 0);
+       if (get_device_type() == HS_DEVICE)
+               omap3_update_aux_cr_secure_rx51(1 << 6, 0);
 
        return 0;
 }
@@ -659,3 +663,9 @@ int board_mmc_init(bd_t *bis)
        omap_mmc_init(1, 0, 0, -1, -1);
        return 0;
 }
+
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+       twl4030_power_mmc_init(1);
+}
index cc0e5e130fda30209db2f8341a1fbcf461f2f39b..95c4ff25092b7272860d1770c25d239ab27b50b0 100644 (file)
@@ -6,10 +6,14 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/gp_padctrl.h>
+#include <asm/arch/gpio.h>
+#include <asm/gpio.h>
 #include "pinmux-config-cardhu.h"
 #include <i2c.h>
+#include <netdev.h>
 
 #define PMU_I2C_ADDRESS                0x2D
 #define MAX_I2C_RETRY          3
@@ -37,17 +41,23 @@ void pinmux_init(void)
  */
 void board_sdmmc_voltage_init(void)
 {
+       struct udevice *dev;
        uchar reg, data_buffer[1];
+       int ret;
        int i;
 
-       i2c_set_bus_num(0);     /* PMU is on bus 0 */
+       ret = i2c_get_chip_for_busnum(0, PMU_I2C_ADDRESS, &dev);
+       if (ret) {
+               debug("%s: Cannot find PMIC I2C chip\n", __func__);
+               return;
+       }
 
        /* TPS659110: LDO5_REG = 3.3v, ACTIVE to SDMMC1 */
        data_buffer[0] = 0x65;
        reg = 0x32;
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
+               if (i2c_write(dev, reg, data_buffer, 1))
                        udelay(100);
        }
 
@@ -56,7 +66,7 @@ void board_sdmmc_voltage_init(void)
        reg = 0x67;
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
+               if (i2c_write(dev, reg, data_buffer, 1))
                        udelay(100);
        }
 }
@@ -76,3 +86,52 @@ void pin_mux_mmc(void)
        board_sdmmc_voltage_init();
 }
 #endif /* MMC */
+
+#ifdef CONFIG_PCI_TEGRA
+int tegra_pcie_board_init(void)
+{
+       struct udevice *dev;
+       u8 addr, data[1];
+       int err;
+
+       err = i2c_get_chip_for_busnum(0, PMU_I2C_ADDRESS, &dev);
+       if (err) {
+               debug("failed to find PMU bus\n");
+               return err;
+       }
+
+       /* TPS659110: LDO1_REG = 1.05V, ACTIVE */
+       data[0] = 0x15;
+       addr = 0x30;
+
+       err = i2c_write(dev, addr, data, 1);
+       if (err) {
+               debug("failed to set VDD supply\n");
+               return err;
+       }
+
+       /* GPIO: PEX = 3.3V */
+       err = gpio_request(GPIO_PL7, "PEX");
+       if (err < 0)
+               return err;
+
+       gpio_direction_output(GPIO_PL7, 1);
+
+       /* TPS659110: LDO2_REG = 1.05V, ACTIVE */
+       data[0] = 0x15;
+       addr = 0x31;
+
+       err = i2c_write(dev, addr, data, 1);
+       if (err) {
+               debug("failed to set AVDD supply\n");
+               return err;
+       }
+
+       return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       return pci_eth_init(bis);
+}
+#endif /* PCI */
index 51125df34f018b79a511b44dc49e73a817944a43..80ef8fdcb23baf885048ac90bded1d023c3328c9 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <ns16550.h>
 #include <linux/compiler.h>
 #include <asm/io.h>
 #include <asm/arch-tegra/tegra_mmc.h>
 #include <asm/arch-tegra/mmc.h>
 #endif
+#include <asm/arch-tegra/xusb-padctl.h>
 #include <i2c.h>
 #include <spi.h>
 #include "emc.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_SPL_BUILD
+/* TODO(sjg@chromium.org): Remove once SPL supports device tree */
+U_BOOT_DEVICE(tegra_gpios) = {
+       "gpio_tegra"
+};
+#endif
+
 const struct tegra_sysinfo sysinfo = {
        CONFIG_TEGRA_BOARD_STRING
 };
@@ -105,10 +114,6 @@ int board_init(void)
        power_det_init();
 
 #ifdef CONFIG_SYS_I2C_TEGRA
-#ifndef CONFIG_SYS_I2C_INIT_BOARD
-#error "You must define CONFIG_SYS_I2C_INIT_BOARD to use i2c on Nvidia boards"
-#endif
-       i2c_init_board();
 # ifdef CONFIG_TEGRA_PMU
        if (pmu_set_nominal())
                debug("Failed to select nominal voltages\n");
@@ -133,6 +138,8 @@ int board_init(void)
        pin_mux_nand();
 #endif
 
+       tegra_xusb_padctl_init(gd->fdt_blob);
+
 #ifdef CONFIG_TEGRA_LP0
        /* save Sdram params to PMC 2, 4, and 24 for WB0 */
        warmboot_save_sdram_params();
index f2d05afac791662932a54b82ee9359d3ff279f75..2a737468ddc4fce7411f2f9d183596c9edadf6c6 100644 (file)
@@ -15,6 +15,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/gp_padctrl.h>
 #include "pinmux-config-dalmore.h"
@@ -50,18 +51,21 @@ void pinmux_init(void)
  */
 void board_sdmmc_voltage_init(void)
 {
+       struct udevice *dev;
        uchar reg, data_buffer[1];
        int ret;
 
-       ret = i2c_set_bus_num(0);/* PMU is on bus 0 */
-       if (ret)
-               printf("%s: i2c_set_bus_num returned %d\n", __func__, ret);
+       ret = i2c_get_chip_for_busnum(0, PMU_I2C_ADDRESS, &dev);
+       if (ret) {
+               debug("%s: Cannot find PMIC I2C chip\n", __func__);
+               return;
+       }
 
        /* TPS65913: LDO9_VOLTAGE = 3.3V */
        data_buffer[0] = 0x31;
        reg = 0x61;
 
-       ret = i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1);
+       ret = i2c_write(dev, reg, data_buffer, 1);
        if (ret)
                printf("%s: PMU i2c_write %02X<-%02X returned %d\n",
                        __func__, reg, data_buffer[0], ret);
@@ -70,7 +74,7 @@ void board_sdmmc_voltage_init(void)
        data_buffer[0] = 0x01;
        reg = 0x60;
 
-       ret = i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1);
+       ret = i2c_write(dev, reg, data_buffer, 1);
        if (ret)
                printf("%s: PMU i2c_write %02X<-%02X returned %d\n",
                        __func__, reg, data_buffer[0], ret);
@@ -79,7 +83,12 @@ void board_sdmmc_voltage_init(void)
        data_buffer[0] = 0x03;
        reg = 0x14;
 
-       ret = i2c_write(BAT_I2C_ADDRESS, reg, 1, data_buffer, 1);
+       ret = i2c_get_chip_for_busnum(0, BAT_I2C_ADDRESS, &dev);
+       if (ret) {
+               debug("%s: Cannot find charger I2C chip\n", __func__);
+               return;
+       }
+       ret = i2c_write(dev, reg, data_buffer, 1);
        if (ret)
                printf("%s: BAT i2c_write %02X<-%02X returned %d\n",
                        __func__, reg, data_buffer[0], ret);
index 5d37718f3b89e8b8109f30c8c8876be60179c1fb..daa74a4be02f029949803b6a3a21d435f4bb9e9c 100644 (file)
@@ -6,10 +6,16 @@
  */
 
 #include <common.h>
+#include <netdev.h>
+#include <power/as3722.h>
+
 #include <asm/arch/gpio.h>
 #include <asm/arch/pinmux.h>
+
 #include "pinmux-config-jetson-tk1.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /*
  * Routine: pinmux_init
  * Description: Do individual peripheral pinmux configs
@@ -27,3 +33,49 @@ void pinmux_init(void)
        pinmux_config_drvgrp_table(jetson_tk1_drvgrps,
                                   ARRAY_SIZE(jetson_tk1_drvgrps));
 }
+
+#ifdef CONFIG_PCI_TEGRA
+int tegra_pcie_board_init(void)
+{
+       struct udevice *pmic;
+       int err;
+
+       err = as3722_init(&pmic);
+       if (err) {
+               error("failed to initialize AS3722 PMIC: %d\n", err);
+               return err;
+       }
+
+       err = as3722_sd_enable(pmic, 4);
+       if (err < 0) {
+               error("failed to enable SD4: %d\n", err);
+               return err;
+       }
+
+       err = as3722_sd_set_voltage(pmic, 4, 0x24);
+       if (err < 0) {
+               error("failed to set SD4 voltage: %d\n", err);
+               return err;
+       }
+
+       err = as3722_gpio_configure(pmic, 1, AS3722_GPIO_OUTPUT_VDDH |
+                                            AS3722_GPIO_INVERT);
+       if (err < 0) {
+               error("failed to configure GPIO#1 as output: %d\n", err);
+               return err;
+       }
+
+       err = as3722_gpio_direction_output(pmic, 2, 1);
+       if (err < 0) {
+               error("failed to set GPIO#2 high: %d\n", err);
+               return err;
+       }
+
+       return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       return pci_eth_init(bis);
+}
+#endif /* PCI */
diff --git a/board/nvidia/nyan-big/Kconfig b/board/nvidia/nyan-big/Kconfig
new file mode 100644 (file)
index 0000000..341c8d7
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_NYAN_BIG
+
+config SYS_BOARD
+       default "nyan-big"
+
+config SYS_VENDOR
+       default "nvidia"
+
+config SYS_CONFIG_NAME
+       default "nyan-big"
+
+endif
diff --git a/board/nvidia/nyan-big/MAINTAINERS b/board/nvidia/nyan-big/MAINTAINERS
new file mode 100644 (file)
index 0000000..ff74627
--- /dev/null
@@ -0,0 +1,6 @@
+NORRIN BOARD
+M:     Allen Martin <amartin@nvidia.com>
+S:     Maintained
+F:     board/nvidia/nyan-big/
+F:     include/configs/nyan-big.h
+F:     configs/nyan-big_defconfig
similarity index 51%
rename from arch/arm/cpu/armv7/tegra124/Makefile
rename to board/nvidia/nyan-big/Makefile
index 9478d447db41afdcf72707a8c0d0363a170561a1..cd2f61dc9dcfd27d5924e1f62c0da505abe8f543 100644 (file)
@@ -1,9 +1,9 @@
 #
-# (C) Copyright 2013-2014
+# (C) Copyright 2014
 # NVIDIA Corporation <www.nvidia.com>
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-# necessary to create built-in.o
-obj- := __dummy__.o
+obj-y  += ../venice2/as3722_init.o
+obj-y  += nyan-big.o
diff --git a/board/nvidia/nyan-big/nyan-big.c b/board/nvidia/nyan-big/nyan-big.c
new file mode 100644 (file)
index 0000000..d4d2496
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * (C) Copyright 2014
+ * NVIDIA Corporation <www.nvidia.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/pinmux.h>
+#include "pinmux-config-nyan-big.h"
+
+/*
+ * Routine: pinmux_init
+ * Description: Do individual peripheral pinmux configs
+ */
+void pinmux_init(void)
+{
+       gpio_config_table(nyan_big_gpio_inits,
+                         ARRAY_SIZE(nyan_big_gpio_inits));
+
+       pinmux_config_pingrp_table(nyan_big_pingrps,
+                                  ARRAY_SIZE(nyan_big_pingrps));
+
+       pinmux_config_drvgrp_table(nyan_big_drvgrps,
+                                  ARRAY_SIZE(nyan_big_drvgrps));
+}
diff --git a/board/nvidia/nyan-big/pinmux-config-nyan-big.h b/board/nvidia/nyan-big/pinmux-config-nyan-big.h
new file mode 100644 (file)
index 0000000..9c5fbaa
--- /dev/null
@@ -0,0 +1,287 @@
+/*
+ * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _PINMUX_CONFIG_NYAN_BIG_H_
+#define _PINMUX_CONFIG_NYAN_BIG_H_
+
+#define GPIO_INIT(_gpio, _init)                                \
+       {                                               \
+               .gpio   = GPIO_P##_gpio,                \
+               .init   = TEGRA_GPIO_INIT_##_init,      \
+       }
+
+static const struct tegra_gpio_config nyan_big_gpio_inits[] = {
+       /*        gpio, init_val */
+       GPIO_INIT(A0,   IN),
+       GPIO_INIT(C7,   IN),
+       GPIO_INIT(G0,   IN),
+       GPIO_INIT(G1,   IN),
+       GPIO_INIT(G2,   IN),
+       GPIO_INIT(G3,   IN),
+       GPIO_INIT(H2,   IN),
+       GPIO_INIT(H4,   IN),
+       GPIO_INIT(H6,   IN),
+       GPIO_INIT(H7,   OUT1),
+       GPIO_INIT(I0,   IN),
+       GPIO_INIT(I1,   IN),
+       GPIO_INIT(I5,   OUT1),
+       GPIO_INIT(I6,   IN),
+       GPIO_INIT(I7,   IN),
+       GPIO_INIT(J0,   IN),
+       GPIO_INIT(J7,   IN),
+       GPIO_INIT(K1,   OUT0),
+       GPIO_INIT(K2,   IN),
+       GPIO_INIT(K4,   OUT0),
+       GPIO_INIT(K6,   OUT0),
+       GPIO_INIT(K7,   IN),
+       GPIO_INIT(N7,   IN),
+       GPIO_INIT(P2,   OUT0),
+       GPIO_INIT(Q0,   IN),
+       GPIO_INIT(Q2,   IN),
+       GPIO_INIT(Q3,   IN),
+       GPIO_INIT(Q6,   IN),
+       GPIO_INIT(Q7,   IN),
+       GPIO_INIT(R0,   OUT0),
+       GPIO_INIT(R1,   IN),
+       GPIO_INIT(R4,   IN),
+       GPIO_INIT(R7,   IN),
+       GPIO_INIT(S3,   OUT0),
+       GPIO_INIT(S4,   OUT0),
+       GPIO_INIT(S7,   IN),
+       GPIO_INIT(T1,   IN),
+       GPIO_INIT(U4,   IN),
+       GPIO_INIT(U5,   IN),
+       GPIO_INIT(U6,   IN),
+       GPIO_INIT(V0,   IN),
+       GPIO_INIT(W3,   IN),
+       GPIO_INIT(X1,   IN),
+       GPIO_INIT(X4,   IN),
+       GPIO_INIT(X7,   OUT0),
+};
+
+#define PINCFG(_pingrp, _mux, _pull, _tri, _io, _od, _rcv_sel) \
+       {                                                       \
+               .pingrp         = PMUX_PINGRP_##_pingrp,        \
+               .func           = PMUX_FUNC_##_mux,             \
+               .pull           = PMUX_PULL_##_pull,            \
+               .tristate       = PMUX_TRI_##_tri,              \
+               .io             = PMUX_PIN_##_io,               \
+               .od             = PMUX_PIN_OD_##_od,            \
+               .rcv_sel        = PMUX_PIN_RCV_SEL_##_rcv_sel,  \
+               .lock           = PMUX_PIN_LOCK_DEFAULT,        \
+               .ioreset        = PMUX_PIN_IO_RESET_DEFAULT,    \
+       }
+
+static const struct pmux_pingrp_config nyan_big_pingrps[] = {
+       /*     pingrp,                 mux,         pull,   tri,      e_input, od,      rcv_sel */
+       PINCFG(CLK_32K_OUT_PA0,        DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(UART3_CTS_N_PA1,        GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP2_FS_PA2,            I2S1,        NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP2_SCLK_PA3,          I2S1,        NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP2_DIN_PA4,           I2S1,        NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP2_DOUT_PA5,          I2S1,        NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_CLK_PA6,         SDMMC3,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_CMD_PA7,         SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PB0,                    RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PB1,                    RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_DAT3_PB4,        SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_DAT2_PB5,        SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_DAT1_PB6,        SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_DAT0_PB7,        SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(UART3_RTS_N_PC0,        GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART2_TXD_PC2,          IRDA,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART2_RXD_PC3,          IRDA,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GEN1_I2C_SCL_PC4,       I2C1,        NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(GEN1_I2C_SDA_PC5,       I2C1,        NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(PC7,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG0,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG1,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG2,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG3,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG4,                    SPI4,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PG5,                    SPI4,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PG6,                    SPI4,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PG7,                    SPI4,        NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PH0,                    GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH1,                    PWM1,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH2,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PH3,                    GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH4,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PH5,                    RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH6,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PH7,                    DEFAULT,     NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI0,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PI1,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PI2,                    RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI3,                    SPI4,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI4,                    GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI5,                    DEFAULT,     UP,     NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI6,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PI7,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PJ0,                    DEFAULT,     UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PJ2,                    RSVD1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART2_CTS_N_PJ5,        GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART2_RTS_N_PJ6,        GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PJ7,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PK0,                    RSVD1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PK1,                    DEFAULT,     NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PK2,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PK3,                    GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PK4,                    DEFAULT,     UP,     NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SPDIF_OUT_PK5,          RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SPDIF_IN_PK6,           DEFAULT,     DOWN,   NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PK7,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP1_FS_PN0,            RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP1_DIN_PN1,           RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP1_DOUT_PN2,          I2S0,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP1_SCLK_PN3,          RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(USB_VBUS_EN0_PN4,       USB,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(USB_VBUS_EN1_PN5,       USB,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(HDMI_INT_PN7,           DEFAULT,     DOWN,   NORMAL,   INPUT,   DEFAULT, NORMAL),
+       PINCFG(ULPI_DATA7_PO0,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA0_PO1,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA1_PO2,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA2_PO3,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA3_PO4,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA4_PO5,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA5_PO6,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA6_PO7,         ULPI,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP3_FS_PP0,            I2S2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP3_DIN_PP1,           I2S2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP3_DOUT_PP2,          DEFAULT,     NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP3_SCLK_PP3,          RSVD3,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP4_FS_PP4,            RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP4_DIN_PP5,           RSVD3,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP4_DOUT_PP6,          RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP4_SCLK_PP7,          RSVD3,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_COL0_PQ0,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL1_PQ1,            RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_COL2_PQ2,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL3_PQ3,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL4_PQ4,            SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL5_PQ5,            RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_COL6_PQ6,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL7_PQ7,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW0_PR0,            DEFAULT,     NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW1_PR1,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW2_PR2,            RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW3_PR3,            KBC,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW4_PR4,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW5_PR5,            RSVD3,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW6_PR6,            KBC,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW7_PR7,            DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW8_PS0,            RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW9_PS1,            UARTA,       DOWN,   NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW10_PS2,           UARTA,       NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW11_PS3,           DEFAULT,     NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW12_PS4,           DEFAULT,     NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW13_PS5,           RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW14_PS6,           RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW15_PS7,           DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW16_PT0,           RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW17_PT1,           DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(GEN2_I2C_SCL_PT5,       I2C2,        NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(GEN2_I2C_SDA_PT6,       I2C2,        NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(SDMMC4_CMD_PT7,         SDMMC4,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU0,                    RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PU1,                    RSVD1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PU2,                    RSVD1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PU3,                    GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PU4,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU5,                    DEFAULT,     UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU6,                    DEFAULT,     UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PV0,                    DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PV1,                    RSVD1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_CD_N_PV2,        SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_WP_N_PV3,        SDMMC1,      DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DDC_SCL_PV4,            I2C4,        NORMAL, NORMAL,   INPUT,   DEFAULT, NORMAL),
+       PINCFG(DDC_SDA_PV5,            I2C4,        NORMAL, NORMAL,   INPUT,   DEFAULT, NORMAL),
+       PINCFG(GPIO_W2_AUD_PW2,        RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_W3_AUD_PW3,        DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP_MCLK1_PW4,          EXTPERIPH1,  NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CLK2_OUT_PW5,           RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART3_TXD_PW6,          RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART3_RXD_PW7,          RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DVFS_PWM_PX0,           CLDVFS,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X1_AUD_PX1,        DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DVFS_CLK_PX2,           CLDVFS,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X3_AUD_PX3,        RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X4_AUD_PX4,        DEFAULT,     NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(GPIO_X5_AUD_PX5,        RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X6_AUD_PX6,        GMI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X7_AUD_PX7,        DEFAULT,     NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_CLK_PY0,           SPI1,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DIR_PY1,           SPI1,        NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(ULPI_NXT_PY2,           SPI1,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_STP_PY3,           SPI1,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT3_PY4,        SDMMC1,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT2_PY5,        SDMMC1,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT1_PY6,        SDMMC1,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT0_PY7,        SDMMC1,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_CLK_PZ0,         SDMMC1,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_CMD_PZ1,         SDMMC1,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PWR_I2C_SCL_PZ6,        I2CPWR,      NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(PWR_I2C_SDA_PZ7,        I2CPWR,      NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(SDMMC4_DAT0_PAA0,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_DAT1_PAA1,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_DAT2_PAA2,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_DAT3_PAA3,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_DAT4_PAA4,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_DAT5_PAA5,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_DAT6_PAA6,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_DAT7_PAA7,       SDMMC4,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PBB0,                   VGP6,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CAM_I2C_SCL_PBB1,       RSVD3,       DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT),
+       PINCFG(CAM_I2C_SDA_PBB2,       RSVD3,       DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT),
+       PINCFG(PBB3,                   VGP3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PBB4,                   VGP4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PBB5,                   RSVD3,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PBB6,                   RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PBB7,                   RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CAM_MCLK_PCC0,          VI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PCC1,                   RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PCC2,                   RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC4_CLK_PCC4,        SDMMC4,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(CLK2_REQ_PCC5,          RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PEX_L0_RST_N_PDD1,      RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PEX_L0_CLKREQ_N_PDD2,   RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PEX_WAKE_N_PDD3,        RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PEX_L1_RST_N_PDD5,      RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PEX_L1_CLKREQ_N_PDD6,   RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CLK3_OUT_PEE0,          RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CLK3_REQ_PEE1,          RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP_MCLK1_REQ_PEE2,     RSVD4,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(HDMI_CEC_PEE3,          CEC,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(SDMMC3_CLK_LB_OUT_PEE4, SDMMC3,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_CLK_LB_IN_PEE5,  SDMMC3,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DP_HPD_PFF0,            DP,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(USB_VBUS_EN2_PFF1,      RSVD2,       DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT),
+       PINCFG(PFF2,                   RSVD2,       DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT),
+       PINCFG(CORE_PWR_REQ,           PWRON,       NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CPU_PWR_REQ,            CPU,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PWR_INT_N,              PMI,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(RESET_OUT_N,            RESET_OUT_N, NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(OWR,                    RSVD2,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, NORMAL),
+       PINCFG(CLK_32K_IN,             CLK,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(JTAG_RTCK,              RTCK,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+};
+
+#define DRVCFG(_drvgrp, _slwf, _slwr, _drvup, _drvdn, _lpmd, _schmt, _hsm) \
+       {                                               \
+               .drvgrp = PMUX_DRVGRP_##_drvgrp,        \
+               .slwf   = _slwf,                        \
+               .slwr   = _slwr,                        \
+               .drvup  = _drvup,                       \
+               .drvdn  = _drvdn,                       \
+               .lpmd   = PMUX_LPMD_##_lpmd,            \
+               .schmt  = PMUX_SCHMT_##_schmt,          \
+               .hsm    = PMUX_HSM_##_hsm,              \
+       }
+
+static const struct pmux_drvgrp_config nyan_big_drvgrps[] = {
+};
+
+#endif /* PINMUX_CONFIG_NYAN_BIG_H */
index 06c366e0d0d85ea63564457d89c0a39de360cef2..992b11f64351b5ca0be24194d7853a9c87dc28e1 100644 (file)
@@ -18,7 +18,7 @@
 #define AS3722_LDO6VOLTAGE_REG 0x16    /* VDD_SDMMC */
 #define AS3722_LDCONTROL_REG   0x4E
 
-#ifdef CONFIG_TARGET_JETSON_TK1
+#if defined(CONFIG_TARGET_JETSON_TK1) || defined(CONFIG_TARGET_NYAN_BIG)
 #define AS3722_SD0VOLTAGE_DATA (0x3C00 | AS3722_SD0VOLTAGE_REG)
 #else
 #define AS3722_SD0VOLTAGE_DATA (0x2800 | AS3722_SD0VOLTAGE_REG)
index 3e9d3d9f10ae8edcca42708abc975ba8a978f2c5..3114b20be0245602db4c6e7a46d55107b1a0258a 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <asm/io.h>
 #include <asm/arch/tegra.h>
 #include <asm/arch/clock.h>
  */
 void pin_mux_mmc(void)
 {
+       struct udevice *dev;
        uchar val;
        int ret;
 
        /* Turn on MAX8907B LDO12 to 2.8V for J40 power */
-       ret = i2c_set_bus_num(0);
-       if (ret)
-               printf("i2c_set_bus_num failed: %d\n", ret);
+       ret = i2c_get_chip_for_busnum(0, 0x3c, &dev);
+       if (ret) {
+               printf("%s: Cannot find MAX8907B I2C chip\n", __func__);
+               return;
+       }
        val = 0x29;
-       ret = i2c_write(0x3c, 0x46, 1, &val, 1);
+       ret = i2c_write(dev, 0x46, &val, 1);
        if (ret)
                printf("i2c_write 0 0x3c 0x46 failed: %d\n", ret);
        val = 0x00;
-       ret = i2c_write(0x3c, 0x45, 1, &val, 1);
+       ret = i2c_write(dev, 0x45, &val, 1);
        if (ret)
                printf("i2c_write 0 0x3c 0x45 failed: %d\n", ret);
        val = 0x1f;
-       ret = i2c_write(0x3c, 0x44, 1, &val, 1);
+       ret = i2c_write(dev, 0x44, &val, 1);
        if (ret)
                printf("i2c_write 0 0x3c 0x44 failed: %d\n", ret);
 
@@ -49,6 +53,7 @@ void pin_mux_mmc(void)
 /* this is a weak define that we are overriding */
 void pin_mux_usb(void)
 {
+       struct udevice *dev;
        uchar val;
        int ret;
 
@@ -59,15 +64,17 @@ void pin_mux_usb(void)
         */
 
        /* Turn on TAC6416's GPIO 0+1 for USB1/3's VBUS */
-       ret = i2c_set_bus_num(0);
-       if (ret)
-               printf("i2c_set_bus_num failed: %d\n", ret);
+       ret = i2c_get_chip_for_busnum(0, 0x20, &dev);
+       if (ret) {
+               printf("%s: Cannot find TAC6416 I2C chip\n", __func__);
+               return;
+       }
        val = 0x03;
-       ret = i2c_write(0x20, 2, 1, &val, 1);
+       ret = i2c_write(dev, 2, &val, 1);
        if (ret)
                printf("i2c_write 0 0x20 2 failed: %d\n", ret);
        val = 0xfc;
-       ret = i2c_write(0x20, 6, 1, &val, 1);
+       ret = i2c_write(dev, 6, &val, 1);
        if (ret)
                printf("i2c_write 0 0x20 6 failed: %d\n", ret);
 }
index 313ab20e26ea734e5e2fa76c7c0aae9af1faa21d..65cbbf15b73194ec15311c288f17e7c23cf3dbc4 100644 (file)
@@ -78,33 +78,3 @@ int board_init(void)
 
        return 0;
 }
-
-/* Fine-tune the DRAM configuration. */
-void mxs_adjust_memory_params(uint32_t *dram_vals)
-{
-       /* Enable Auto Precharge. */
-       dram_vals[3] |= 1 << 8;
-       /* Enable Fast Writes. */
-       dram_vals[5] |= 1 << 8;
-       /* tEMRS = 3*tCK */
-       dram_vals[10] &= ~(0x3 << 8);
-       dram_vals[10] |= (0x3 << 8);
-       /* CASLAT = 3*tCK */
-       dram_vals[11] &= ~(0x3 << 0);
-       dram_vals[11] |= (0x3 << 0);
-       /* tCKE = 1*tCK */
-       dram_vals[12] &= ~(0x7 << 0);
-       dram_vals[12] |= (0x1 << 0);
-       /* CASLAT_LIN_GATE = 3*tCK , CASLAT_LIN = 3*tCK, tWTR=2*tCK */
-       dram_vals[13] &= ~((0xf << 16) | (0xf << 24) | (0xf << 0));
-       dram_vals[13] |= (0x6 << 16) | (0x6 << 24) | (0x2 << 0);
-       /* tDAL = 6*tCK */
-       dram_vals[15] &= ~(0xf << 16);
-       dram_vals[15] |= (0x6 << 16);
-       /* tREF = 1040*tCK */
-       dram_vals[26] &= ~0xffff;
-       dram_vals[26] |= 0x0410;
-       /* tRAS_MAX = 9334*tCK */
-       dram_vals[32] &= ~0xffff;
-       dram_vals[32] |= 0x2475;
-}
index 5272dfa4e676dbb5e2296f45df6494458083929d..de3b0e4c8b0d9153324539a0c5436af8ebcc6e3a 100644 (file)
@@ -89,3 +89,33 @@ void board_init_ll(const uint32_t arg, const uint32_t *resptr)
 {
        mxs_common_spl_init(arg, resptr, iomux_setup, ARRAY_SIZE(iomux_setup));
 }
+
+/* Fine-tune the DRAM configuration. */
+void mxs_adjust_memory_params(uint32_t *dram_vals)
+{
+       /* Enable Auto Precharge. */
+       dram_vals[3] |= 1 << 8;
+       /* Enable Fast Writes. */
+       dram_vals[5] |= 1 << 8;
+       /* tEMRS = 3*tCK */
+       dram_vals[10] &= ~(0x3 << 8);
+       dram_vals[10] |= (0x3 << 8);
+       /* CASLAT = 3*tCK */
+       dram_vals[11] &= ~(0x3 << 0);
+       dram_vals[11] |= (0x3 << 0);
+       /* tCKE = 1*tCK */
+       dram_vals[12] &= ~(0x7 << 0);
+       dram_vals[12] |= (0x1 << 0);
+       /* CASLAT_LIN_GATE = 3*tCK , CASLAT_LIN = 3*tCK, tWTR=2*tCK */
+       dram_vals[13] &= ~((0xf << 16) | (0xf << 24) | (0xf << 0));
+       dram_vals[13] |= (0x6 << 16) | (0x6 << 24) | (0x2 << 0);
+       /* tDAL = 6*tCK */
+       dram_vals[15] &= ~(0xf << 16);
+       dram_vals[15] |= (0x6 << 16);
+       /* tREF = 1040*tCK */
+       dram_vals[26] &= ~0xffff;
+       dram_vals[26] |= 0x0410;
+       /* tRAS_MAX = 9334*tCK */
+       dram_vals[32] &= ~0xffff;
+       dram_vals[32] |= 0x2475;
+}
index dfb8602bafccb8d8c912c58c7d946c06effee2c0..b7f85e711b46fed4bed4b35774599d929d382c7a 100644 (file)
@@ -493,6 +493,13 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
+
 #if defined(CONFIG_USB_EHCI) &&  !defined(CONFIG_SPL_BUILD)
 static struct omap_usbhs_board_data usbhs_bdata = {
        .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
index 146dcea4e15f821b45f294897f37a14f055aa582..59b5a7e2cd01c34afe4524ef4d8e31f4c1f49f68 100644 (file)
@@ -126,4 +126,9 @@ int board_mmc_init(bd_t *bis)
 {
        return omap_mmc_init(0, 0, 0, -1, -1);
 }
+
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
 #endif
index ef2844a49743e4125b94c1d82f0790361080bee6..251db6ab637c14d8b83051c5026e9dc78c24117f 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_PB1X00
 
-config SYS_CPU
-       default "mips32"
-
 config SYS_BOARD
        default "pb1x00"
 
index 15f8f3163d7fac3ed0a0577bd1d2273bda7245be..81f3024ed995be04a950cc53542f75ea630818ce 100644 (file)
@@ -477,7 +477,7 @@ static unsigned char edid_buf[128] = {
 };
 #endif
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        u32 val[8];
        int rc, i = 0;
@@ -526,6 +526,8 @@ void ft_board_setup(void *blob, bd_t *bd)
        if (rc)
                printf("Unable to update flash reg property, err=%s\n",
                       fdt_strerror(rc));
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
index ce515d834c6dfc2c324f373c12af8bd024591fe2..ed41de13d474b4a84add031bf068959d70b39cb3 100644 (file)
@@ -164,9 +164,11 @@ void pci_init_board(void)
 #endif
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t * bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
diff --git a/board/pm826/Kconfig b/board/pm826/Kconfig
deleted file mode 100644 (file)
index dd11b7a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PM826
-
-config SYS_BOARD
-       default "pm826"
-
-config SYS_CONFIG_NAME
-       default "PM826"
-
-endif
diff --git a/board/pm826/MAINTAINERS b/board/pm826/MAINTAINERS
deleted file mode 100644 (file)
index 41df4c9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-PM826 BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/pm826/
-F:     include/configs/PM826.h
-F:     configs/PM825_defconfig
-F:     configs/PM825_BIGFLASH_defconfig
-F:     configs/PM825_ROMBOOT_defconfig
-F:     configs/PM825_ROMBOOT_BIGFLASH_defconfig
-F:     configs/PM826_defconfig
-F:     configs/PM826_BIGFLASH_defconfig
-F:     configs/PM826_ROMBOOT_defconfig
-F:     configs/PM826_ROMBOOT_BIGFLASH_defconfig
diff --git a/board/pm826/Makefile b/board/pm826/Makefile
deleted file mode 100644 (file)
index c515f81..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = pm826.o flash.o
diff --git a/board/pm826/flash.c b/board/pm826/flash.c
deleted file mode 100644 (file)
index 786a29b..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (volatile unsigned long *baseaddr,
-                                         flash_info_t * info)
-{
-       short i;
-       unsigned long flashtest_h, flashtest_l;
-
-       info->sector_count = info->size = 0;
-       info->flash_id = FLASH_UNKNOWN;
-
-       /* Write query command sequence and test FLASH answer
-        */
-       baseaddr[0] = 0x00980098;
-       baseaddr[1] = 0x00980098;
-
-       flashtest_h = baseaddr[0];      /* manufacturer ID      */
-       flashtest_l = baseaddr[1];
-
-       if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
-               return (0);             /* no or unknown flash  */
-
-       flashtest_h = baseaddr[2];      /* device ID            */
-       flashtest_l = baseaddr[3];
-
-       if (flashtest_h != flashtest_l)
-               return (0);
-
-       switch (flashtest_h) {
-       case INTEL_ID_28F160C3B:
-               info->flash_id = FLASH_28F160C3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       case INTEL_ID_28F160F3B:
-               info->flash_id = FLASH_28F160F3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       case INTEL_ID_28F640C3B:
-               info->flash_id = FLASH_28F640C3B;
-               info->sector_count = 135;
-               info->size = 0x02000000;        /* 16 * 2 MB = 32 MB    */
-               break;
-       default:
-               return (0);                     /* no or unknown flash  */
-       }
-
-       info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
-       if (info->flash_id & FLASH_BTYPE) {
-               volatile unsigned long *tmp = baseaddr;
-
-               /* set up sector start adress table (bottom sector type)
-                * AND unlock the sectors (if our chip is 160C3 or 640C3)
-                */
-               for (i = 0; i < info->sector_count; i++) {
-                       if (((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) ||
-                           ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F640C3B)) {
-                               tmp[0] = 0x00600060;
-                               tmp[1] = 0x00600060;
-                               tmp[0] = 0x00D000D0;
-                               tmp[1] = 0x00D000D0;
-                       }
-                       info->start[i] = (uint) tmp;
-                       tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith       */
-               }
-       }
-
-       memset (info->protect, 0, info->sector_count);
-
-       baseaddr[0] = 0x00FF00FF;
-       baseaddr[1] = 0x00FF00FF;
-
-       return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size_b0 = 0;
-       int i;
-
-       /* Init: no FLASHes known
-        */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here (only one bank) */
-
-       size_b0 = flash_get_size ((ulong *) CONFIG_SYS_FLASH0_BASE, &flash_info[0]);
-       if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                               size_b0, size_b0 >> 20);
-       }
-
-       /* protect monitor and environment sectors
-        */
-
-#ifndef CONFIG_BOOT_ROM
-       /* If U-Boot is  booted from ROM the CONFIG_SYS_MONITOR_BASE > CONFIG_SYS_FLASH0_BASE
-        * but we shouldn't protect it.
-        */
-
-# if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH0_BASE
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_SYS_MONITOR_BASE,
-                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
-       );
-# endif
-#endif /* CONFIG_BOOT_ROM */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR,
-                      CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch ((info->flash_id >> 16) & 0xff) {
-       case 0x89:
-               printf ("INTEL ");
-               break;
-       default:
-               printf ("Unknown Vendor ");
-               break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F160C3B:
-               printf ("28F160C3B (16 M, bottom sector)\n");
-               break;
-       case FLASH_28F160F3B:
-               printf ("28F160F3B (16 M, bottom sector)\n");
-               break;
-       case FLASH_28F640C3B:
-               printf ("28F640C3B (64 M, bottom sector)\n");
-               break;
-       default:
-               printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-                       info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect])
-                       prot++;
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                               prot);
-       } else {
-               printf ("\n");
-       }
-
-       /* Start erase on unprotected sectors
-        */
-       for (sect = s_first; sect <= s_last; sect++) {
-               volatile ulong *addr =
-                               (volatile unsigned long *) info->start[sect];
-
-               start = get_timer (0);
-               last = start;
-               if (info->protect[sect] == 0) {
-                       /* Disable interrupts which might cause a timeout here
-                        */
-                       flag = disable_interrupts ();
-
-                       /* Erase the block
-                        */
-                       addr[0] = 0x00200020;
-                       addr[1] = 0x00200020;
-                       addr[0] = 0x00D000D0;
-                       addr[1] = 0x00D000D0;
-
-                       /* re-enable interrupts if necessary
-                        */
-                       if (flag)
-                               enable_interrupts ();
-
-                       /* wait at least 80us - let's wait 1 ms
-                        */
-                       udelay (1000);
-
-                       last = start;
-                       while ((addr[0] & 0x00800080) != 0x00800080 ||
-                                  (addr[1] & 0x00800080) != 0x00800080) {
-                               if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout (erase suspended!)\n");
-                                       /* Suspend erase
-                                        */
-                                       addr[0] = 0x00B000B0;
-                                       addr[1] = 0x00B000B0;
-                                       goto DONE;
-                               }
-                               /* show that we're waiting
-                                */
-                               if ((now - last) > 1000) {      /* every second */
-                                       serial_putc ('.');
-                                       last = now;
-                               }
-                       }
-                       if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
-                               printf ("*** ERROR: erase failed!\n");
-                               goto DONE;
-                       }
-               }
-               /* Clear status register and reset to read mode
-                */
-               addr[0] = 0x00500050;
-               addr[1] = 0x00500050;
-               addr[0] = 0x00FF00FF;
-               addr[1] = 0x00FF00FF;
-       }
-
-       printf (" done\n");
-
-DONE:
-       return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong v;
-       int i, l, cc = cnt, res = 0;
-
-
-       for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
-               l = (addr & 3);
-               addr &= ~3;
-
-               for (i = 0; i < 4; i++) {
-                       v = (v << 8) + (i < l || i - l >= cc ?
-                               *((unsigned char *) addr + i) : *src++);
-               }
-
-               if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
-                       break;
-       }
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
-                                          ulong data)
-{
-       int flag, res = 0;
-       ulong start;
-
-       /* Check if Flash is (sufficiently) erased
-        */
-       if ((*addr & data) != data)
-               return (2);
-
-       /* Disable interrupts which might cause a timeout here
-        */
-       flag = disable_interrupts ();
-
-       *addr = 0x00400040;
-       *addr = data;
-
-       /* re-enable interrupts if necessary
-        */
-       if (flag)
-               enable_interrupts ();
-
-       start = get_timer (0);
-       while ((*addr & 0x00800080) != 0x00800080) {
-               if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       /* Suspend program
-                        */
-                       *addr = 0x00B000B0;
-                       res = 1;
-                       goto OUT;
-               }
-       }
-
-       if (*addr & 0x00220022) {
-               printf ("*** ERROR: program failed!\n");
-               res = 1;
-       }
-
-OUT:
-       /* Clear status register and reset to read mode
-        */
-       *addr = 0x00500050;
-       *addr = 0x00FF00FF;
-
-       return (res);
-}
diff --git a/board/pm826/pm826.c b/board/pm826/pm826.c
deleted file mode 100644 (file)
index 93bb1b4..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <pci.h>
-#include <netdev.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 COL */
-       /* PA30 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 CRS */
-       /* PA29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 TXER */
-       /* PA28 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 TXEN */
-       /* PA27 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 RXDV */
-       /* PA26 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 RXER */
-       /* PA25 */ {   0,   0,   0,   1,   0,   0   }, /* PA25 */
-       /* PA24 */ {   0,   0,   0,   1,   0,   0   }, /* PA24 */
-       /* PA23 */ {   0,   0,   0,   1,   0,   0   }, /* PA23 */
-       /* PA22 */ {   0,   0,   0,   1,   0,   0   }, /* PA22 */
-       /* PA21 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD3 */
-       /* PA20 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD2 */
-       /* PA19 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD1 */
-       /* PA18 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD0 */
-       /* PA17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD0 */
-       /* PA16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD1*/
-       /* PA15 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD2 */
-       /* PA14 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD3 */
-       /* PA13 */ {   0,   0,   0,   1,   0,   0   }, /* PA13 */
-       /* PA12 */ {   0,   0,   0,   1,   0,   0   }, /* PA12 */
-       /* PA11 */ {   0,   0,   0,   1,   0,   0   }, /* PA11 */
-       /* PA10 */ {   0,   0,   0,   1,   0,   0   }, /* PA10 */
-       /* PA9  */ {   0,   1,   0,   1,   0,   0   }, /* PA9 */
-       /* PA8  */ {   0,   1,   0,   0,   0,   0   }, /* PA8 */
-       /* PA7  */ {   0,   0,   0,   1,   0,   0   }, /* PA7 */
-       /* PA6  */ {   0,   0,   0,   1,   0,   0   }, /* PA6 */
-       /* PA5  */ {   0,   0,   0,   1,   0,   0   }, /* PA5 */
-       /* PA4  */ {   0,   0,   0,   1,   0,   0   }, /* PA4 */
-       /* PA3  */ {   0,   0,   0,   1,   0,   0   }, /* PA3 */
-       /* PA2  */ {   0,   0,   0,   1,   0,   0   }, /* PA2 */
-       /* PA1  */ {   0,   0,   0,   1,   0,   0   }, /* PA1 */
-       /* PA0  */ {   0,   0,   0,   1,   0,   0   }  /* PA0 */
-    },
-
-    /* Port B configuration */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RX_DV  */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 TX_EN  */
-#if defined(CONFIG_ETHER_ON_SCC) && (CONFIG_ETHER_INDEX == 1)
-#ifdef CONFIG_ETHER_ON_FCC2
-#error "SCC1 conflicts with FCC2"
-#endif
-       /* PB28 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 TXD */
-#else
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RX_ER */
-#endif
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[3] */
-       /* PB17 */ {   0,   0,   0,   0,   0,   0   }, /* PB17 */
-       /* PB16 */ {   0,   0,   0,   0,   0,   0   }, /* PB16 */
-       /* PB15 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RXD */
-       /* PB14 */ {   1,   1,   0,   0,   0,   0   }, /* SCC3 RXD */
-       /* PB13 */ {   0,   0,   0,   0,   0,   0   }, /* PB13 */
-       /* PB12 */ {   0,   0,   0,   0,   0,   0   }, /* PB12 */
-       /* PB11 */ {   0,   0,   0,   0,   0,   0   }, /* PB11 */
-       /* PB10 */ {   0,   0,   0,   0,   0,   0   }, /* PB10 */
-       /* PB9  */ {   0,   0,   0,   0,   0,   0   }, /* PB9 */
-       /* PB8  */ {   1,   1,   1,   1,   0,   0   }, /* SCC3 TXD */
-       /* PB7  */ {   0,   0,   0,   0,   0,   0   }, /* PB7 */
-       /* PB6  */ {   0,   0,   0,   0,   0,   0   }, /* PB6 */
-       /* PB5  */ {   0,   0,   0,   0,   0,   0   }, /* PB5 */
-       /* PB4  */ {   0,   0,   0,   0,   0,   0   }, /* PB4 */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   1,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   1,   0,   0   }, /* PC30 */
-       /* PC29 */ {   0,   1,   1,   0,   0,   0   }, /* SCC1 CTS */
-       /* PC28 */ {   0,   0,   0,   1,   0,   0   }, /* SCC2 CTS */
-       /* PC27 */ {   0,   0,   0,   1,   0,   0   }, /* PC27 */
-       /* PC26 */ {   0,   0,   0,   1,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   1,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   1,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   1,   0,   1,   0,   0   }, /* PC23 */
-       /* PC22 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 TXCK */
-       /* PC21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXCK */
-       /* PC20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 TXCK(2) */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RXCK */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 TXCK */
-       /* PC17 */ {   0,   0,   0,   1,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   0,   0,   1,   0,   0   }, /* PC16 */
-       /* PC15 */ {   1,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
-       /* PC14 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 DCD */
-       /* PC13 */ {   0,   0,   0,   1,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   0,   0,   1,   0,   0   }, /* SCC2 DCD */
-       /* PC11 */ {   0,   0,   0,   1,   0,   0   }, /* SCC3 CTS */
-       /* PC10 */ {   0,   0,   0,   1,   0,   0   }, /* SCC3 DCD */
-       /* PC9  */ {   0,   0,   0,   1,   0,   0   }, /* SCC4 CTS */
-       /* PC8  */ {   0,   0,   0,   1,   0,   0   }, /* SCC4 DCD */
-       /* PC7  */ {   0,   0,   0,   1,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   1,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   1,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   1,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   1,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   1,   0,   1   }, /* PC2 */
-       /* PC1  */ {   0,   0,   0,   1,   0,   0   }, /* PC1 */
-       /* PC0  */ {   0,   0,   0,   1,   0,   0   }, /* PC0 */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 RXD */
-       /* PD30 */ {   0,   1,   1,   1,   0,   0   }, /* PD30 */
-       /* PD29 */ {   0,   1,   0,   1,   0,   0   }, /* SCC1 RTS */
-       /* PD28 */ {   0,   0,   0,   1,   0,   0   }, /* PD28 */
-       /* PD27 */ {   0,   1,   0,   1,   0,   0   }, /* SCC2 RTS */
-       /* PD26 */ {   0,   0,   0,   1,   0,   0   }, /* PD26 */
-       /* PD25 */ {   0,   0,   0,   1,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   1,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   1,   0,   0   }, /* SCC3 RTS */
-       /* PD22 */ {   1,   1,   0,   0,   0,   0   }, /* SCC4 RXD */
-       /* PD21 */ {   1,   1,   0,   1,   0,   0   }, /* SCC4 TXD */
-       /* PD20 */ {   0,   0,   1,   1,   0,   0   }, /* SCC4 RTS */
-       /* PD19 */ {   0,   0,   0,   1,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   1,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   1,   0,   0,   0,   0   }, /* PD17 */
-       /* PD16 */ {   0,   1,   0,   1,   0,   0   }, /* PD16 */
-#if defined(CONFIG_SYS_I2C_SOFT)
-       /* PD15 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SDA */
-       /* PD14 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#else /* normal I/O port pins */
-       /* PD15 */ {   0,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   0,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#endif
-#endif
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   0,   1,   0,   1,   0,   0   }, /* PD9 */
-       /* PD8  */ {   0,   1,   0,   0,   0,   0   }, /* PD8 */
-       /* PD7  */ {   0,   0,   0,   1,   0,   1   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   1,   0,   1   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   1,   0,   1   }, /* PD5 */
-       /* PD4  */ {   1,   1,   1,   0,   0,   0   }, /* SMC2 RXD */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
-       puts ("Board: PM826\n");
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
-                                                 ulong orx, volatile uchar * base)
-{
-       volatile uchar c = 0xff;
-       volatile uint *sdmr_ptr;
-       volatile uint *orx_ptr;
-       ulong maxsize, size;
-       int i;
-
-       /* We must be able to test a location outsize the maximum legal size
-        * to find out THAT we are outside; but this address still has to be
-        * mapped by the controller. That means, that the initial mapping has
-        * to be (at least) twice as large as the maximum expected size.
-        */
-       maxsize = (1 + (~orx | 0x7fff)) / 2;
-
-       sdmr_ptr = &memctl->memc_psdmr;
-       orx_ptr = &memctl->memc_or2;
-
-       *orx_ptr = orx;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_PREA;
-       *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_MRW;
-       *(base + CONFIG_SYS_MRS_OFFS) = c;      /* setting MR on address lines */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *base = c;
-
-       size = get_ram_size((long *)base, maxsize);
-
-       *orx_ptr = orx | ~(size - 1);
-
-       return (size);
-}
-
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong size8, size9;
-#endif
-       ulong psize = 32 * 1024 * 1024;
-
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       size8 = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-       size9 = try_init (memctl, CONFIG_SYS_PSDMR_9COL, CONFIG_SYS_OR2_9COL,
-                                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-
-       if (size8 < size9) {
-               psize = size9;
-               printf ("(60x:9COL) ");
-       } else {
-               psize = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-               printf ("(60x:8COL) ");
-       }
-#endif
-       return (psize);
-}
-
-#if defined(CONFIG_CMD_DOC)
-void doc_init (void)
-{
-       doc_probe (CONFIG_SYS_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc8250_init(&hose);
-}
-#endif
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/pm828/Kconfig b/board/pm828/Kconfig
deleted file mode 100644 (file)
index e7970a3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PM828
-
-config SYS_BOARD
-       default "pm828"
-
-config SYS_CONFIG_NAME
-       default "PM828"
-
-endif
diff --git a/board/pm828/MAINTAINERS b/board/pm828/MAINTAINERS
deleted file mode 100644 (file)
index 97c1ccc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-PM828 BOARD
-#M:    -
-S:     Maintained
-F:     board/pm828/
-F:     include/configs/PM828.h
-F:     configs/PM828_defconfig
-F:     configs/PM828_PCI_defconfig
-F:     configs/PM828_ROMBOOT_defconfig
-F:     configs/PM828_ROMBOOT_PCI_defconfig
diff --git a/board/pm828/Makefile b/board/pm828/Makefile
deleted file mode 100644 (file)
index 0afffb7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = pm828.o flash.o
diff --git a/board/pm828/flash.c b/board/pm828/flash.c
deleted file mode 100644 (file)
index 8888560..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (volatile unsigned long *baseaddr,
-                                         flash_info_t * info)
-{
-       short i;
-       unsigned long flashtest_h, flashtest_l;
-
-       info->sector_count = info->size = 0;
-       info->flash_id = FLASH_UNKNOWN;
-
-       /* Write query command sequence and test FLASH answer
-        */
-       baseaddr[0] = 0x00980098;
-       baseaddr[1] = 0x00980098;
-
-       flashtest_h = baseaddr[0];      /* manufacturer ID      */
-       flashtest_l = baseaddr[1];
-
-       if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
-               return (0);             /* no or unknown flash  */
-
-       flashtest_h = baseaddr[2];      /* device ID            */
-       flashtest_l = baseaddr[3];
-
-       if (flashtest_h != flashtest_l)
-               return (0);
-
-       switch (flashtest_h) {
-       case INTEL_ID_28F160C3B:
-               info->flash_id = FLASH_28F160C3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       case INTEL_ID_28F160F3B:
-               info->flash_id = FLASH_28F160F3B;
-               info->sector_count = 39;
-               info->size = 0x00800000;        /* 4 * 2 MB = 8 MB      */
-               break;
-       case INTEL_ID_28F640C3B:
-               info->flash_id = FLASH_28F640C3B;
-               info->sector_count = 135;
-               info->size = 0x02000000;        /* 16 * 2 MB = 32 MB    */
-               break;
-       default:
-               return (0);                     /* no or unknown flash  */
-       }
-
-       info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
-       if (info->flash_id & FLASH_BTYPE) {
-               volatile unsigned long *tmp = baseaddr;
-
-               /* set up sector start adress table (bottom sector type)
-                * AND unlock the sectors (if our chip is 160C3 or 640c3)
-                */
-               for (i = 0; i < info->sector_count; i++) {
-                       if (((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) ||
-                           ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F640C3B)) {
-                               tmp[0] = 0x00600060;
-                               tmp[1] = 0x00600060;
-                               tmp[0] = 0x00D000D0;
-                               tmp[1] = 0x00D000D0;
-                       }
-                       info->start[i] = (uint) tmp;
-                       tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith       */
-               }
-       }
-
-       memset (info->protect, 0, info->sector_count);
-
-       baseaddr[0] = 0x00FF00FF;
-       baseaddr[1] = 0x00FF00FF;
-
-       return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size_b0 = 0;
-       int i;
-
-       /* Init: no FLASHes known
-        */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here (only one bank) */
-
-       size_b0 = flash_get_size ((ulong *) CONFIG_SYS_FLASH0_BASE, &flash_info[0]);
-       if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                               size_b0, size_b0 >> 20);
-       }
-
-       /* protect monitor and environment sectors
-        */
-
-#ifndef CONFIG_BOOT_ROM
-       /* If U-Boot is  booted from ROM the CONFIG_SYS_MONITOR_BASE > CONFIG_SYS_FLASH0_BASE
-        * but we shouldn't protect it.
-        */
-
-# if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH0_BASE
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_SYS_MONITOR_BASE,
-                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
-       );
-# endif
-#endif /* CONFIG_BOOT_ROM */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR,
-                      CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch ((info->flash_id >> 16) & 0xff) {
-       case 0x89:
-               printf ("INTEL ");
-               break;
-       default:
-               printf ("Unknown Vendor ");
-               break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F160C3B:
-               printf ("28F160C3B (16 M, bottom sector)\n");
-               break;
-       case FLASH_28F160F3B:
-               printf ("28F160F3B (16 M, bottom sector)\n");
-               break;
-       case FLASH_28F640C3B:
-               printf ("28F640C3B (64 M, bottom sector)\n");
-               break;
-       default:
-               printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-                       info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect])
-                       prot++;
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                               prot);
-       } else {
-               printf ("\n");
-       }
-
-       /* Start erase on unprotected sectors
-        */
-       for (sect = s_first; sect <= s_last; sect++) {
-               volatile ulong *addr =
-                               (volatile unsigned long *) info->start[sect];
-
-               start = get_timer (0);
-               last = start;
-               if (info->protect[sect] == 0) {
-                       /* Disable interrupts which might cause a timeout here
-                        */
-                       flag = disable_interrupts ();
-
-                       /* Erase the block
-                        */
-                       addr[0] = 0x00200020;
-                       addr[1] = 0x00200020;
-                       addr[0] = 0x00D000D0;
-                       addr[1] = 0x00D000D0;
-
-                       /* re-enable interrupts if necessary
-                        */
-                       if (flag)
-                               enable_interrupts ();
-
-                       /* wait at least 80us - let's wait 1 ms
-                        */
-                       udelay (1000);
-
-                       last = start;
-                       while ((addr[0] & 0x00800080) != 0x00800080 ||
-                                  (addr[1] & 0x00800080) != 0x00800080) {
-                               if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout (erase suspended!)\n");
-                                       /* Suspend erase
-                                        */
-                                       addr[0] = 0x00B000B0;
-                                       addr[1] = 0x00B000B0;
-                                       goto DONE;
-                               }
-                               /* show that we're waiting
-                                */
-                               if ((now - last) > 1000) {      /* every second */
-                                       serial_putc ('.');
-                                       last = now;
-                               }
-                       }
-                       if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
-                               printf ("*** ERROR: erase failed!\n");
-                               goto DONE;
-                       }
-               }
-               /* Clear status register and reset to read mode
-                */
-               addr[0] = 0x00500050;
-               addr[1] = 0x00500050;
-               addr[0] = 0x00FF00FF;
-               addr[1] = 0x00FF00FF;
-       }
-
-       printf (" done\n");
-
-DONE:
-       return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong v;
-       int i, l, cc = cnt, res = 0;
-
-
-       for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
-               l = (addr & 3);
-               addr &= ~3;
-
-               for (i = 0; i < 4; i++) {
-                       v = (v << 8) + (i < l || i - l >= cc ?
-                               *((unsigned char *) addr + i) : *src++);
-               }
-
-               if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
-                       break;
-       }
-
-       return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
-                                          ulong data)
-{
-       int flag, res = 0;
-       ulong start;
-
-       /* Check if Flash is (sufficiently) erased
-        */
-       if ((*addr & data) != data)
-               return (2);
-
-       /* Disable interrupts which might cause a timeout here
-        */
-       flag = disable_interrupts ();
-
-       *addr = 0x00400040;
-       *addr = data;
-
-       /* re-enable interrupts if necessary
-        */
-       if (flag)
-               enable_interrupts ();
-
-       start = get_timer (0);
-       while ((*addr & 0x00800080) != 0x00800080) {
-               if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       /* Suspend program
-                        */
-                       *addr = 0x00B000B0;
-                       res = 1;
-                       goto OUT;
-               }
-       }
-
-       if (*addr & 0x00220022) {
-               printf ("*** ERROR: program failed!\n");
-               res = 1;
-       }
-
-OUT:
-       /* Clear status register and reset to read mode
-        */
-       *addr = 0x00500050;
-       *addr = 0x00FF00FF;
-
-       return (res);
-}
diff --git a/board/pm828/pm828.c b/board/pm828/pm828.c
deleted file mode 100644 (file)
index f446543..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <pci.h>
-#include <netdev.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 COL */
-       /* PA30 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 CRS */
-       /* PA29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 TXER */
-       /* PA28 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 TXEN */
-       /* PA27 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 RXDV */
-       /* PA26 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 RXER */
-       /* PA25 */ {   0,   0,   0,   1,   0,   0   }, /* PA25 */
-       /* PA24 */ {   0,   0,   0,   1,   0,   0   }, /* PA24 */
-       /* PA23 */ {   0,   0,   0,   1,   0,   0   }, /* PA23 */
-       /* PA22 */ {   0,   0,   0,   1,   0,   0   }, /* PA22 */
-       /* PA21 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD3 */
-       /* PA20 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD2 */
-       /* PA19 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD1 */
-       /* PA18 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 TXD0 */
-       /* PA17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD0 */
-       /* PA16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD1*/
-       /* PA15 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD2 */
-       /* PA14 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXD3 */
-       /* PA13 */ {   0,   0,   0,   1,   0,   0   }, /* PA13 */
-       /* PA12 */ {   0,   0,   0,   1,   0,   0   }, /* PA12 */
-       /* PA11 */ {   0,   0,   0,   1,   0,   0   }, /* PA11 */
-       /* PA10 */ {   0,   0,   0,   1,   0,   0   }, /* PA10 */
-       /* PA9  */ {   0,   1,   0,   1,   0,   0   }, /* PA9 */
-       /* PA8  */ {   0,   1,   0,   0,   0,   0   }, /* PA8 */
-       /* PA7  */ {   0,   0,   0,   1,   0,   0   }, /* PA7 */
-       /* PA6  */ {   0,   0,   0,   1,   0,   0   }, /* PA6 */
-       /* PA5  */ {   0,   0,   0,   1,   0,   0   }, /* PA5 */
-       /* PA4  */ {   0,   0,   0,   1,   0,   0   }, /* PA4 */
-       /* PA3  */ {   0,   0,   0,   1,   0,   0   }, /* PA3 */
-       /* PA2  */ {   0,   0,   0,   1,   0,   0   }, /* PA2 */
-       /* PA1  */ {   0,   0,   0,   1,   0,   0   }, /* PA1 */
-       /* PA0  */ {   0,   0,   0,   1,   0,   0   }  /* PA0 */
-    },
-
-    /* Port B configuration */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RX_DV  */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 TX_EN  */
-#if defined(CONFIG_ETHER_ON_SCC) && (CONFIG_ETHER_INDEX == 1)
-#ifdef CONFIG_ETHER_ON_FCC2
-#error "SCC1 conflicts with FCC2"
-#endif
-       /* PB28 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 TXD */
-#else
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RX_ER */
-#endif
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RxD[3] */
-       /* PB17 */ {   0,   0,   0,   0,   0,   0   }, /* PB17 */
-       /* PB16 */ {   0,   0,   0,   0,   0,   0   }, /* PB16 */
-       /* PB15 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RXD */
-       /* PB14 */ {   1,   1,   0,   0,   0,   0   }, /* SCC3 RXD */
-       /* PB13 */ {   0,   0,   0,   0,   0,   0   }, /* PB13 */
-       /* PB12 */ {   0,   0,   0,   0,   0,   0   }, /* PB12 */
-       /* PB11 */ {   0,   0,   0,   0,   0,   0   }, /* PB11 */
-       /* PB10 */ {   0,   0,   0,   0,   0,   0   }, /* PB10 */
-       /* PB9  */ {   0,   0,   0,   0,   0,   0   }, /* PB9 */
-       /* PB8  */ {   1,   1,   1,   1,   0,   0   }, /* SCC3 TXD */
-       /* PB7  */ {   0,   0,   0,   0,   0,   0   }, /* PB7 */
-       /* PB6  */ {   0,   0,   0,   0,   0,   0   }, /* PB6 */
-       /* PB5  */ {   0,   0,   0,   0,   0,   0   }, /* PB5 */
-       /* PB4  */ {   0,   0,   0,   0,   0,   0   }, /* PB4 */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   1,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   1,   0,   0   }, /* PC30 */
-       /* PC29 */ {   0,   1,   1,   0,   0,   0   }, /* SCC1 CTS */
-       /* PC28 */ {   0,   0,   0,   1,   0,   0   }, /* SCC2 CTS */
-       /* PC27 */ {   0,   0,   0,   1,   0,   0   }, /* PC27 */
-       /* PC26 */ {   0,   0,   0,   1,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   1,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   1,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   1,   0,   1,   0,   0   }, /* PC23 */
-       /* PC22 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 TXCK */
-       /* PC21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 RXCK */
-       /* PC20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 TXCK(2) */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 RXCK */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 TXCK */
-       /* PC17 */ {   0,   0,   0,   1,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   0,   0,   1,   0,   0   }, /* PC16 */
-       /* PC15 */ {   1,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
-       /* PC14 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 DCD */
-       /* PC13 */ {   0,   0,   0,   1,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   0,   0,   1,   0,   0   }, /* SCC2 DCD */
-       /* PC11 */ {   0,   0,   0,   1,   0,   0   }, /* SCC3 CTS */
-       /* PC10 */ {   0,   0,   0,   1,   0,   0   }, /* SCC3 DCD */
-       /* PC9  */ {   0,   0,   0,   1,   0,   0   }, /* SCC4 CTS */
-       /* PC8  */ {   0,   0,   0,   1,   0,   0   }, /* SCC4 DCD */
-       /* PC7  */ {   0,   0,   0,   1,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   1,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   1,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   1,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   1,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   1,   0,   1   }, /* PC2 */
-       /* PC1  */ {   0,   0,   0,   1,   0,   0   }, /* PC1 */
-       /* PC0  */ {   0,   0,   0,   1,   0,   0   }, /* PC0 */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 RXD */
-       /* PD30 */ {   0,   1,   1,   1,   0,   0   }, /* PD30 */
-       /* PD29 */ {   0,   1,   0,   1,   0,   0   }, /* SCC1 RTS */
-       /* PD28 */ {   0,   0,   0,   1,   0,   0   }, /* PD28 */
-       /* PD27 */ {   0,   1,   0,   1,   0,   0   }, /* SCC2 RTS */
-       /* PD26 */ {   0,   0,   0,   1,   0,   0   }, /* PD26 */
-       /* PD25 */ {   0,   0,   0,   1,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   1,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   1,   0,   0   }, /* SCC3 RTS */
-       /* PD22 */ {   1,   1,   0,   0,   0,   0   }, /* SCC4 RXD */
-       /* PD21 */ {   1,   1,   0,   1,   0,   0   }, /* SCC4 TXD */
-       /* PD20 */ {   0,   0,   1,   1,   0,   0   }, /* SCC4 RTS */
-       /* PD19 */ {   0,   0,   0,   1,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   1,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   1,   0,   0,   0,   0   }, /* PD17 */
-       /* PD16 */ {   0,   1,   0,   1,   0,   0   }, /* PD16 */
-#if defined(CONFIG_SYS_I2C_SOFT)
-       /* PD15 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SDA */
-       /* PD14 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#else /* normal I/O port pins */
-       /* PD15 */ {   0,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   0,   1,   1,   0,   1,   0   }, /* I2C SCL */
-#endif
-#endif
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   0,   1,   0,   1,   0,   0   }, /* PD9 */
-       /* PD8  */ {   0,   1,   0,   0,   0,   0   }, /* PD8 */
-       /* PD7  */ {   0,   0,   0,   1,   0,   1   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   1,   0,   1   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   1,   0,   1   }, /* PD5 */
-       /* PD4  */ {   1,   1,   1,   0,   0,   0   }, /* SMC2 RXD */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
-       puts ("Board: PM828\n");
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
-                                                 ulong orx, volatile uchar * base)
-{
-       volatile uchar c = 0xff;
-       volatile ulong cnt, val;
-       volatile ulong *addr;
-       volatile uint *sdmr_ptr;
-       volatile uint *orx_ptr;
-       int i;
-       ulong save[32];                         /* to make test non-destructive */
-       ulong maxsize;
-
-       /* We must be able to test a location outsize the maximum legal size
-        * to find out THAT we are outside; but this address still has to be
-        * mapped by the controller. That means, that the initial mapping has
-        * to be (at least) twice as large as the maximum expected size.
-        */
-       maxsize = (1 + (~orx | 0x7fff)) / 2;
-
-       sdmr_ptr = &memctl->memc_psdmr;
-       orx_ptr = &memctl->memc_or2;
-
-       *orx_ptr = orx;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_PREA;
-       *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *base = c;
-
-       *sdmr_ptr = sdmr | PSDMR_OP_MRW;
-       *(base + CONFIG_SYS_MRS_OFFS) = c;      /* setting MR on address lines */
-
-       *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *base = c;
-
-       /*
-        * Check memory range for valid RAM. A simple memory test determines
-        * the actually available RAM size between addresses `base' and
-        * `base + maxsize'. Some (not all) hardware errors are detected:
-        * - short between address lines
-        * - short between data lines
-        */
-       i = 0;
-       for (cnt = maxsize / sizeof (long); cnt > 0; cnt >>= 1) {
-               addr = (volatile ulong *) base + cnt;   /* pointer arith! */
-               save[i++] = *addr;
-               *addr = ~cnt;
-       }
-
-       addr = (volatile ulong *) base;
-       save[i] = *addr;
-       *addr = 0;
-
-       if ((val = *addr) != 0) {
-               *addr = save[i];
-               return (0);
-       }
-
-       for (cnt = 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
-               addr = (volatile ulong *) base + cnt;   /* pointer arith! */
-               val = *addr;
-               *addr = save[--i];
-               if (val != ~cnt) {
-                       /* Write the actual size to ORx
-                        */
-                       *orx_ptr = orx | ~(cnt * sizeof (long) - 1);
-                       return (cnt * sizeof (long));
-               }
-       }
-       return (maxsize);
-}
-
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       ulong size8, size9;
-#endif
-       ulong psize = 32 * 1024 * 1024;
-
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       size8 = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-       size9 = try_init (memctl, CONFIG_SYS_PSDMR_9COL, CONFIG_SYS_OR2_9COL,
-                                         (uchar *) CONFIG_SYS_SDRAM_BASE);
-
-       if (size8 < size9) {
-               psize = size9;
-               printf ("(60x:9COL) ");
-       } else {
-               psize = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
-                                                 (uchar *) CONFIG_SYS_SDRAM_BASE);
-               printf ("(60x:8COL) ");
-       }
-#endif
-       return (psize);
-}
-
-#if defined(CONFIG_CMD_DOC)
-void doc_init (void)
-{
-       doc_probe (CONFIG_SYS_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
-       pci_mpc8250_init(&hose);
-}
-#endif
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/ppmc8260/Kconfig b/board/ppmc8260/Kconfig
deleted file mode 100644 (file)
index 1a6dcd3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PPMC8260
-
-config SYS_BOARD
-       default "ppmc8260"
-
-config SYS_CONFIG_NAME
-       default "ppmc8260"
-
-endif
diff --git a/board/ppmc8260/MAINTAINERS b/board/ppmc8260/MAINTAINERS
deleted file mode 100644 (file)
index 8b896af..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PPMC8260 BOARD
-#M:    Brad Kemp <Brad.Kemp@seranoa.com>
-S:     Orphan (since 2014-04)
-F:     board/ppmc8260/
-F:     include/configs/ppmc8260.h
-F:     configs/ppmc8260_defconfig
diff --git a/board/ppmc8260/Makefile b/board/ppmc8260/Makefile
deleted file mode 100644 (file)
index 3072fb4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := ppmc8260.o
diff --git a/board/ppmc8260/ppmc8260.c b/board/ppmc8260/ppmc8260.c
deleted file mode 100644 (file)
index f0f29b2..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 *ATMTXEN */
-       /* PA30 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTCA   */
-       /* PA29 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTSOC  */
-       /* PA28 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 *ATMRXEN */
-       /* PA27 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRSOC */
-       /* PA26 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRCA */
-       /* PA25 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[0] */
-       /* PA24 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[1] */
-       /* PA23 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[2] */
-       /* PA22 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[3] */
-       /* PA21 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[4] */
-       /* PA20 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[5] */
-       /* PA19 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[6] */
-       /* PA18 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[7] */
-       /* PA17 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[7] */
-       /* PA16 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[6] */
-       /* PA15 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[5] */
-       /* PA14 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[4] */
-       /* PA13 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[3] */
-       /* PA12 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[2] */
-       /* PA11 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[1] */
-       /* PA10 */ {   0,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[0] */
-       /* PA9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
-       /* PA8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC2 RXD */
-       /* PA7  */ {   1,   0,   0,   1,   0,   0   }, /* TDM_A1:L1TSYNC */
-       /* PA6  */ {   1,   0,   0,   1,   0,   0   }, /* TDN_A1:L1RSYNC */
-       /* PA5  */ {   0,   0,   0,   0,   0,   0   }, /* PA5 */
-       /* PA4  */ {   0,   0,   0,   0,   0,   0   }, /* PA4 */
-       /* PA3  */ {   0,   0,   0,   0,   0,   0   }, /* PA3 */
-       /* PA2  */ {   0,   0,   0,   0,   0,   0   }, /* PA2 */
-       /* PA1  */ {   0,   0,   0,   0,   0,   0   }, /* PA1 */
-       /* PA0  */ {   0,   0,   0,   0,   0,   0   }  /* PA0 */
-    },
-
-    /* Port B configuration */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
-       /* PB17 */ {   0,   0,   0,   0,   0,   0   }, /* PB17 */
-       /* PB16 */ {   1,   0,   0,   0,   0,   0   }, /* TDM_A1:L1CLK0 */
-       /* PB15 */ {   1,   0,   0,   1,   0,   1   }, /* /FETHRST */
-       /* PB14 */ {   1,   0,   0,   1,   0,   0   }, /* FETHDIS */
-       /* PB13 */ {   0,   0,   0,   0,   0,   0   }, /* PB13 */
-       /* PB12 */ {   1,   0,   0,   1,   0,   0   }, /* TDM_B1:L1CLK0 */
-       /* PB11 */ {   1,   0,   0,   1,   0,   0   }, /* TDM_D1:L1TXD */
-       /* PB10 */ {   1,   0,   0,   1,   0,   0   }, /* TDM_D1:L1RXD */
-       /* PB9  */ {   1,   0,   0,   1,   0,   0   }, /* TDM_D1:L1TSYNC */
-       /* PB8  */ {   1,   0,   0,   1,   0,   0   }, /* TDM_D1:L1RSYNC */
-       /* PB7  */ {   0,   0,   0,   0,   0,   0   }, /* PB7 */
-       /* PB6  */ {   0,   0,   0,   0,   0,   0   }, /* PB6 */
-       /* PB5  */ {   0,   0,   0,   0,   0,   0   }, /* PB5 */
-       /* PB4  */ {   0,   0,   0,   0,   0,   0   }, /* PB4 */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   0,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   0,   0,   0   }, /* PC30 */
-       /* PC29 */ {   0,   0,   0,   0,   0,   0   }, /* PC28 */
-       /* PC28 */ {   1,   1,   0,   0,   0,   0   }, /* CLK4 */
-       /* PC27 */ {   0,   0,   0,   0,   0,   0   }, /* PC27 */
-       /* PC26 */ {   0,   0,   0,   0,   0,   0   }, /* PC26 */
-       /* PC25 */ {   1,   1,   0,   0,   0,   0   }, /* CLK7 */
-       /* PC24 */ {   0,   0,   0,   0,   0,   0   }, /* PC24 */
-       /* PC23 */ {   1,   0,   0,   1,   0,   0   }, /* ATMTFCLK */
-       /* PC22 */ {   0,   0,   0,   0,   0,   0   }, /* PC22 */
-       /* PC21 */ {   0,   0,   0,   0,   0,   0   }, /* PC23 */
-       /* PC20 */ {   0,   0,   0,   0,   0,   0   }, /* PC24 */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII TX_CLK */
-       /* PC17 */ {   0,   0,   0,   0,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   0,   0,   0,   0,   0   }, /* PC16 */
-       /* PC15 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1:TxAddr[0] */
-       /* PC14 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1:RxAddr[0] */
-       /* PC13 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1:TxAddr[1] */
-       /* PC12 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1:RxAddr[1] */
-       /* PC11 */ {   1,   1,   0,   1,   0,   0   }, /* TDM_D1:L1CLK0 */
-       /* PC10 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MDC */
-       /* PC9  */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MDIO */
-       /* PC8  */ {   0,   0,   0,   0,   0,   0   }, /* PC8 */
-       /* PC7  */ {   1,   0,   0,   1,   0,   0   }, /* FCC1:TxAddr[2]*/
-       /* PC6  */ {   1,   0,   0,   1,   0,   0   }, /* FCC1:RxAddr[2] */
-       /* PC5  */ {   0,   0,   0,   0,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   0,   0,   0   }, /* PC4 */
-       /* PC3  */ {   1,   0,   0,   1,   0,   0   }, /* IDMA2:DACK */
-       /* PC2  */ {   1,   0,   0,   1,   0,   0   }, /* IDMA2:DONE */
-       /* PC1  */ {   1,   0,   0,   1,   0,   0   }, /* IDMA2:DREQ */
-       /* PC0  */ {   1,   0,   0,   1,   0,   0   }, /* IDMA1:DREQ */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   0,   0,   0,   0,   0,   0   }, /* PD31 */
-       /* PD30 */ {   0,   0,   0,   0,   0,   0   }, /* PD30 */
-       /* PD29 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1:RxAddr[3] */
-       /* PD28 */ {   0,   0,   0,   0,   0,   0   }, /* PD28 */
-       /* PD27 */ {   0,   0,   0,   0,   0,   0   }, /* PD27 */
-       /* PD26 */ {   1,   0,   0,   1,   0,   0   }, /* TDM_C1:L1RSYNC */
-       /* PD25 */ {   0,   0,   0,   0,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   0,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   0,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   0,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   0,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   0,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   0,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   0,   0,   0   }, /* PD19 */
-       /* PD17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXPRTY */
-       /* PD16 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXPRTY */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
-       /* PD13 */ {   1,   0,   0,   0,   0,   0   }, /* TDM_B1:L1TXD */
-       /* PD12 */ {   1,   0,   0,   0,   0,   0   }, /* TDM_B1:L1RXD */
-       /* PD11 */ {   1,   0,   0,   0,   0,   0   }, /* TDM_B1:L1TSYNC */
-       /* PD10 */ {   1,   0,   0,   0,   0,   0   }, /* TDM_B1:L1RSYNC*/
-       /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC1:TXD */
-       /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1:RXD */
-       /* PD7  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1:SMSYN */
-       /* PD6  */ {   1,   0,   0,   1,   0,   0   }, /* IDMA1:DACK */
-       /* PD5  */ {   1,   0,   0,   1,   0,   0   }, /* IDMA1:DONE */
-       /* PD4  */ {   0,   0,   0,   0,   0,   0   }, /* PD4 */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       puts ("Board: Wind River PPMC8260\n");
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       volatile uchar c = 0xff;
-       volatile uchar *ramaddr0 = (uchar *) (CONFIG_SYS_SDRAM0_BASE);
-       volatile uchar *ramaddr1 = (uchar *) (CONFIG_SYS_SDRAM1_BASE);
-       ulong psdmr = CONFIG_SYS_PSDMR;
-       volatile uchar *ramaddr2 = (uchar *) (CONFIG_SYS_SDRAM2_BASE);
-       ulong lsdmr = CONFIG_SYS_LSDMR;
-       int i;
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       memctl->memc_psrt = CONFIG_SYS_PSRT;
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-#ifndef CONFIG_SYS_RAMBOOT
-       memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
-       *ramaddr0++ = c;
-       *ramaddr1++ = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++) {
-               *ramaddr0++ = c;
-               *ramaddr1++ = c;
-       }
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
-       ramaddr0 = (uchar *) (CONFIG_SYS_SDRAM0_BASE + 0x110);
-       ramaddr1 = (uchar *) (CONFIG_SYS_SDRAM1_BASE + 0x110);
-       *ramaddr0 = c;
-       *ramaddr1 = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *ramaddr0 = c;
-       *ramaddr1 = c;
-
-       memctl->memc_lsdmr = lsdmr | PSDMR_OP_PREA;
-       *ramaddr2++ = c;
-
-       memctl->memc_lsdmr = lsdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++) {
-               *ramaddr2++ = c;
-       }
-
-       memctl->memc_lsdmr = lsdmr | PSDMR_OP_MRW;
-       *ramaddr2++ = c;
-
-       memctl->memc_lsdmr = lsdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *ramaddr2 = c;
-#endif
-
-       /* return total ram size */
-       return ((CONFIG_SYS_SDRAM0_SIZE + CONFIG_SYS_SDRAM1_SIZE) * 1024 * 1024);
-}
-
-#ifdef CONFIG_MISC_INIT_R
-/* ------------------------------------------------------------------------- */
-int misc_init_r (void)
-{
-#ifdef CONFIG_SYS_LED_BASE
-       uchar ds = *(unsigned char *) (CONFIG_SYS_LED_BASE + 1);
-       uchar ss;
-       uchar tmp[64];
-       int res;
-
-       if ((ds != 0) && (ds != 0xff)) {
-               res = getenv_f("ethaddr", (char *)tmp, sizeof (tmp));
-               if (res > 0) {
-                       ss = ((ds >> 4) & 0x0f);
-                       ss += ss < 0x0a ? '0' : ('a' - 10);
-                       tmp[15] = ss;
-
-                       ss = (ds & 0x0f);
-                       ss += ss < 0x0a ? '0' : ('a' - 10);
-                       tmp[16] = ss;
-
-                       tmp[17] = '\0';
-                       setenv ("ethaddr", (char *)tmp);
-                       /* set the led to show the address */
-                       *((unsigned char *) (CONFIG_SYS_LED_BASE + 1)) = ds;
-               }
-       }
-#endif /* CONFIG_SYS_LED_BASE */
-       return (0);
-}
-#endif /* CONFIG_MISC_INIT_R */
index e4d9663c2de62108fe95f9162d64043b8aae1a8b..18d78b51008f2f271dc81e23d39579b69d0da7cf 100644 (file)
@@ -1,25 +1,10 @@
 if TARGET_QEMU_MIPS
 
-config SYS_CPU
-       default "mips32"
-
-config SYS_BOARD
-       default "qemu-mips"
-
-config SYS_CONFIG_NAME
-       default "qemu-mips"
-
-endif
-
-if TARGET_QEMU_MIPS64
-
-config SYS_CPU
-       default "mips64"
-
 config SYS_BOARD
        default "qemu-mips"
 
 config SYS_CONFIG_NAME
-       default "qemu-mips64"
+       default "qemu-mips" if 32BIT
+       default "qemu-mips64" if 64BIT
 
 endif
diff --git a/board/r360mpi/Kconfig b/board/r360mpi/Kconfig
deleted file mode 100644 (file)
index fe8484f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_R360MPI
-
-config SYS_BOARD
-       default "r360mpi"
-
-config SYS_CONFIG_NAME
-       default "R360MPI"
-
-endif
diff --git a/board/r360mpi/MAINTAINERS b/board/r360mpi/MAINTAINERS
deleted file mode 100644 (file)
index a67ab0c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-R360MPI BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/r360mpi/
-F:     include/configs/R360MPI.h
-F:     configs/R360MPI_defconfig
diff --git a/board/r360mpi/Makefile b/board/r360mpi/Makefile
deleted file mode 100644 (file)
index f8f7fe7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = r360mpi.o flash.o pcmcia.o
diff --git a/board/r360mpi/flash.c b/board/r360mpi/flash.c
deleted file mode 100644 (file)
index 996a22e..0000000
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];   /* info for FLASH chips    */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET       0x01
-#define FLAG_PROTECT_CLEAR     0x02
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH       ushort
-#define FLASH_PORT_WIDTHV      vu_short
-#else
-#define FLASH_PORT_WIDTH       ulong
-#define FLASH_PORT_WIDTHV      vu_long
-#endif
-
-#define FPW                    FLASH_PORT_WIDTH
-#define FPWV                   FLASH_PORT_WIDTHV
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       unsigned long size_b0;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-       size_b0 = flash_get_size ((FPW *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0 << 20);
-       }
-
-       /* Remap FLASH according to real size */
-       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
-       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
-
-       /* Re-do sizing to get full correct info */
-       size_b0 = flash_get_size ((FPW *) CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       (void) flash_protect (FLAG_PROTECT_SET,
-                               CONFIG_SYS_FLASH_BASE,
-                               CONFIG_SYS_FLASH_BASE + monitor_flash_len - 1,
-                               &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect (FLAG_PROTECT_SET,
-                       CONFIG_ENV_ADDR,
-                       CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
-                       &flash_info[0]);
-#endif
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-               for (i = 0; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * 0x00020000);
-               }
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:
-               printf ("INTEL ");
-               break;
-       default:
-               printf ("Unknown Vendor ");
-               break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F320J3A:
-               printf ("28F320J3A\n");
-               break;
-       case FLASH_28F640J3A:
-               printf ("28F640J3A\n");
-               break;
-       case FLASH_28F128J3A:
-               printf ("28F128J3A\n");
-               break;
-       default:
-               printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-                       info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
-       FPW value;
-
-       /* Make sure Block Lock Bits get cleared */
-       addr[0] = (FPW) 0x00FF00FF;
-       addr[0] = (FPW) 0x00600060;
-       addr[0] = (FPW) 0x00D000D0;
-       addr[0] = (FPW) 0x00FF00FF;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x5555] = (FPW) 0x00AA00AA;
-       addr[0x2AAA] = (FPW) 0x00550055;
-       addr[0x5555] = (FPW) 0x00900090;
-
-       value = addr[0];
-
-       debug("Manuf. ID @ 0x%08lx: 0x%08x\n", (ulong)addr, value);
-
-       switch (value) {
-       case (FPW) INTEL_MANUFACT:
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               addr[0] = (FPW) 0x00FF00FF;     /* restore read mode */
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];                        /* device ID        */
-
-       debug("Device ID @ 0x%08lx: 0x%08x\n", (ulong)(&addr[1]), value);
-
-       switch (value) {
-       case (FPW) INTEL_ID_28F320J3A:
-               info->flash_id += FLASH_28F320J3A;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB     */
-
-       case (FPW) INTEL_ID_28F640J3A:
-               info->flash_id += FLASH_28F640J3A;
-               info->sector_count = 64;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB     */
-
-       case (FPW) INTEL_ID_28F128J3A:
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x01000000;
-               break;                          /* => 16 MB     */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               break;
-       }
-
-       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
-               printf ("** ERROR: sector count %d > max (%d) **\n",
-                               info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
-               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       }
-
-       addr[0] = (FPW) 0x00FF00FF;     /* restore read mode */
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong type, start, now, last;
-       int rcode = 0;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       type = (info->flash_id & FLASH_VENDMASK);
-       if ((type != FLASH_MAN_INTEL)) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last = start;
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       FPWV *addr = (FPWV *) (info->start[sect]);
-                       FPW status;
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts ();
-
-                       *addr = (FPW) 0x00500050;       /* clear status register */
-                       *addr = (FPW) 0x00200020;       /* erase setup */
-                       *addr = (FPW) 0x00D000D0;       /* erase confirm */
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts ();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
-                           if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                               printf ("Timeout\n");
-                               *addr = (FPW) 0x00B000B0;       /* suspend erase     */
-                               *addr = (FPW) 0x00FF00FF;       /* reset to read mode */
-                               rcode = 1;
-                               break;
-                           }
-
-                           /* show that we're waiting */
-                           if ((now - last) > 1000) {  /* every second */
-                               putc ('.');
-                               last = now;
-                           }
-                       }
-
-                       *addr = (FPW) 0x00FF00FF;       /* reset to read mode */
-               }
-       }
-       printf (" done\n");
-       return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong cp, wp;
-       FPW data;
-
-       int i, l, rc, port_width;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
-       wp = (addr & ~1);
-       port_width = 2;
-#else
-       wp = (addr & ~3);
-       port_width = 4;
-#endif
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i = 0, cp = wp; i < l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-               for (; i < port_width && cnt > 0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt == 0 && i < port_width; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-
-               if ((rc = write_data (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += port_width;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= port_width) {
-               data = 0;
-               for (i = 0; i < port_width; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_data (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += port_width;
-               cnt -= port_width;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i < port_width; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *) cp);
-       }
-
-       return (write_data (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
-       FPWV *addr = (FPWV *) dest;
-       ulong status;
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & data) != data) {
-               printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts ();
-
-       *addr = (FPW) 0x00400040;       /* write setup */
-       *addr = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts ();
-
-       start = get_timer (0);
-
-       while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
-               if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *addr = (FPW) 0x00FF00FF;       /* restore read mode */
-                       return (1);
-               }
-       }
-
-       *addr = (FPW) 0x00FF00FF;       /* restore read mode */
-
-       return (0);
-}
diff --git a/board/r360mpi/pcmcia.c b/board/r360mpi/pcmcia.c
deleted file mode 100644 (file)
index a939b31..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if defined(CONFIG_CMD_PCMCIA)
-#define        CONFIG_PCMCIA
-#endif
-
-#if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define        CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "R360MPI"
-
-int pcmcia_hardware_enable(int slot)
-{
-       volatile immap_t        *immap;
-       volatile pcmconf8xx_t   *pcmp;
-       volatile sysconf8xx_t   *sysp;
-       uint reg, mask;
-
-       debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       udelay(10000);
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-       sysp  = (sysconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_siu_conf));
-       pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-
-       /*
-       * Configure SIUMCR to enable PCMCIA port B
-       * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
-       */
-       sysp->sc_siumcr &= ~SIUMCR_DBGC11;      /* set DBGC to 00 */
-
-       /* clear interrupt state, and disable interrupts */
-       pcmp->pcmc_pscr =  PCMCIA_MASK(_slot_);
-       pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
-       /*
-       * Disable interrupts, DMA, and PCMCIA buffers
-       * (isolate the interface) and assert RESET signal
-       */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       /*
-       * Configure Ports A, B & C pins for
-       * 5 Volts Enable and 3 Volts enable
-       */
-       immap->im_ioport.iop_pcpar &= ~(0x0400);
-       immap->im_ioport.iop_pcso  &= ~(0x0400);/*
-       immap->im_ioport.iop_pcdir |= 0x0400;*/
-
-       immap->im_ioport.iop_papar &= ~(0x0200);/*
-       immap->im_ioport.iop_padir |= 0x0200;*/
-#if 0
-       immap->im_ioport.iop_pbpar &= ~(0xC000);
-       immap->im_ioport.iop_pbdir &= ~(0xC000);
-#endif
-       /* remove all power */
-
-       immap->im_ioport.iop_pcdat |= 0x0400;
-       immap->im_ioport.iop_padat |= 0x0200;
-
-       /*
-       * Make sure there is a card in the slot, then configure the interface.
-       */
-       udelay(10000);
-       debug ("[%d] %s: PIPR(%p)=0x%x\n",
-              __LINE__,__FUNCTION__,
-              &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
-       if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
-               printf ("   No Card found\n");
-               return (1);
-       }
-
-       /*
-       * Power On.
-       */
-       mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
-       reg  = pcmp->pcmc_pipr;
-       debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
-              reg,
-              (reg&PCMCIA_VS1(slot))?"n":"ff",
-              (reg&PCMCIA_VS2(slot))?"n":"ff");
-       if ((reg & mask) == mask) {
-               immap->im_ioport.iop_pcdat &= ~(0x4000);
-               puts (" 5.0V card found: ");
-       } else {
-               immap->im_ioport.iop_padat &= ~(0x0002);
-               puts (" 3.3V card found: ");
-       }
-       immap->im_ioport.iop_pcdir |= 0x0400;
-       immap->im_ioport.iop_padir |= 0x0200;
-#if 0
-       /*  VCC switch error flag, PCMCIA slot INPACK_ pin */
-       cp->cp_pbdir &= ~(0x0020 | 0x0010);
-       cp->cp_pbpar &= ~(0x0020 | 0x0010);
-       udelay(500000);
-#endif
-       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(_slot_);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-
-       udelay(250000); /* some cards need >150 ms to come up :-( */
-
-       debug ("# hardware_enable done\n");
-
-       return (0);
-}
-
-
-#if defined(CONFIG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
-       volatile immap_t        *immap;
-       u_long reg;
-
-       debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-
-       /* remove all power */
-       immap->im_ioport.iop_pcdat |= 0x0400;
-       immap->im_ioport.iop_padat |= 0x0200;
-
-       /* Configure PCMCIA General Control Register */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = 0;
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-
-       udelay(10000);
-
-       return (0);
-}
-#endif
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
-       volatile immap_t        *immap;
-       volatile pcmconf8xx_t   *pcmp;
-       u_long reg;
-
-       debug ("voltage_set: "
-                       PCMCIA_BOARD_MSG
-                       " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
-       'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
-       immap = (immap_t *)CONFIG_SYS_IMMR;
-       pcmp = (pcmconf8xx_t *)(&(((immap_t *)CONFIG_SYS_IMMR)->im_pcmcia));
-       /*
-       * Disable PCMCIA buffers (isolate the interface)
-       * and assert RESET signal
-       */
-       debug ("Disable PCMCIA buffers and assert RESET\n");
-       reg  = PCMCIA_PGCRX(_slot_);
-       reg |= __MY_PCMCIA_GCRX_CXRESET;        /* active high */
-       reg |= __MY_PCMCIA_GCRX_CXOE;           /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       /*
-       * Configure Ports A & C pins for
-       * 5 Volts Enable and 3 Volts enable,
-       * Turn off all power
-       */
-       debug ("PCMCIA power OFF\n");
-       immap->im_ioport.iop_pcpar &= ~(0x0400);
-       immap->im_ioport.iop_pcso  &= ~(0x0400);/*
-       immap->im_ioport.iop_pcdir |= 0x0400;*/
-
-       immap->im_ioport.iop_papar &= ~(0x0200);/*
-       immap->im_ioport.iop_padir |= 0x0200;*/
-
-       immap->im_ioport.iop_pcdat |= 0x0400;
-       immap->im_ioport.iop_padat |= 0x0200;
-
-       reg = 0;
-       switch(vcc) {
-               case  0:                break;
-               case 33: reg |= 0x0200; break;
-               case 50: reg |= 0x0400; break;
-               default:                goto done;
-       }
-
-       /* Checking supported voltages */
-
-       debug ("PIPR: 0x%x --> %s\n",
-              pcmp->pcmc_pipr,
-              (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
-
-       if (reg & 0x0200)
-               immap->im_ioport.iop_pcdat &= !reg;
-       if (reg & 0x0400)
-               immap->im_ioport.iop_padat &= !reg;
-       immap->im_ioport.iop_pcdir |= 0x0200;
-       immap->im_ioport.iop_padir |= 0x0400;
-       if (reg) {
-               debug ("PCMCIA powered at %sV\n",
-                      (reg&0x0400) ? "5.0" : "3.3");
-       } else {
-               debug ("PCMCIA powered down\n");
-       }
-
-done:
-                       debug ("Enable PCMCIA buffers and stop RESET\n");
-       reg  =  PCMCIA_PGCRX(_slot_);
-       reg &= ~__MY_PCMCIA_GCRX_CXRESET;       /* active high */
-       reg &= ~__MY_PCMCIA_GCRX_CXOE;          /* active low  */
-       PCMCIA_PGCRX(_slot_) = reg;
-       udelay(500);
-
-       debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
-              slot+'A');
-       return (0);
-}
-
-#endif /* CCONFIG_PCMCIA */
diff --git a/board/r360mpi/r360mpi.c b/board/r360mpi/r360mpi.c
deleted file mode 100644 (file)
index d06aea7..0000000
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <config.h>
-#include <mpc8xx.h>
-#include <i2c.h>
-
-#include <commproc.h>
-#include <command.h>
-#include <malloc.h>
-
-#include <linux/types.h>
-#include <linux/string.h>       /* for strdup */
-
-
-/*
- *  Memory Controller Using
- *
- *  CS0 - Flash memory         (0x40000000)
- *  CS1 - FLASH memory         (0x????????)
- *  CS2 - SDRAM                        (0x00000000)
- *  CS3 -
- *  CS4 -
- *  CS5 -
- *  CS6 - PCMCIA device
- *  CS7 - PCMCIA device
- */
-
-/* ------------------------------------------------------------------------- */
-
-#define _not_used_     0xffffffff
-
-const uint sdram_table[]=
-{
-       /* single read. (offset 0 in upm RAM) */
-       0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
-       0x1ff77c47,
-
-       /* MRS initialization (offset 5) */
-
-       0x1ff77c34, 0xefeabc34, 0x1fb57c35,
-
-       /* burst read. (offset 8 in upm RAM) */
-       0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
-       0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47,
-       _not_used_, _not_used_, _not_used_, _not_used_,
-       _not_used_, _not_used_, _not_used_, _not_used_,
-
-       /* single write. (offset 18 in upm RAM) */
-       0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47,
-       _not_used_, _not_used_, _not_used_, _not_used_,
-
-       /* burst write. (offset 20 in upm RAM) */
-       0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
-       0xf0affc00, 0xe1bbbc04, 0x1ff77c47, _not_used_,
-       _not_used_, _not_used_, _not_used_, _not_used_,
-       _not_used_, _not_used_, _not_used_, _not_used_,
-
-       /* refresh. (offset 30 in upm RAM) */
-       0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-       0xfffffc84, 0xfffffc07, _not_used_, _not_used_,
-       _not_used_, _not_used_, _not_used_, _not_used_,
-
-       /* exception. (offset 3c in upm RAM) */
-       0x7ffffc07, _not_used_, _not_used_, _not_used_ };
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       puts ("Board: R360 MPI Board\n");
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size8, size9;
-       long int size_b0 = 0;
-       unsigned long reg;
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                          sizeof (sdram_table) / sizeof (uint));
-
-       /*
-        * Preliminary prescaler for refresh (depends on number of
-        * banks): This value is selected for four cycles every 62.4 us
-        * with two SDRAM banks or four cycles every 31.2 us with one
-        * bank. It will be adjusted after memory sizing.
-        */
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_8K;
-
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller bank 2 to the SDRAM bank at
-        * preliminary address - these have to be modified after the
-        * SDRAM size has been determined.
-        */
-       memctl->memc_or2 = CONFIG_SYS_OR2_PRELIM;
-       memctl->memc_br2 = CONFIG_SYS_BR2_PRELIM;
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_8COL & (~(MAMR_PTAE));      /* no refresh yet */
-
-       udelay (200);
-
-       /* perform SDRAM initializsation sequence */
-
-       memctl->memc_mcr = 0x80004105;  /* SDRAM bank 0 */
-       udelay (200);
-       memctl->memc_mcr = 0x80004230;  /* SDRAM bank 0 - execute twice */
-       udelay (200);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
-       udelay (1000);
-
-       /*
-        * Check Bank 2 Memory Size for re-configuration
-        *
-        * try 8 column mode
-        */
-       size8 = dram_size (CONFIG_SYS_MAMR_8COL, (long *) SDRAM_BASE2_PRELIM,
-                                          SDRAM_MAX_SIZE);
-
-       udelay (1000);
-
-       /*
-        * try 9 column mode
-        */
-       size9 = dram_size (CONFIG_SYS_MAMR_9COL, (long *) SDRAM_BASE2_PRELIM,
-                                          SDRAM_MAX_SIZE);
-
-       if (size8 < size9) {            /* leave configuration at 9 columns */
-               size_b0 = size9;
-/*     debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20);  */
-       } else {                        /* back to 8 columns            */
-               size_b0 = size8;
-               memctl->memc_mamr = CONFIG_SYS_MAMR_8COL;
-               udelay (500);
-/*     debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20);  */
-       }
-
-       udelay (1000);
-
-       /*
-        * Adjust refresh rate depending on SDRAM type, both banks
-        * For types > 128 MBit leave it at the current (fast) rate
-        */
-       if ((size_b0 < 0x02000000)) {
-               /* reduce to 15.6 us (62.4 us / quad) */
-               memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_4K;
-               udelay (1000);
-       }
-
-       /*
-        * Final mapping
-        */
-
-       memctl->memc_or1 = ((-size_b0) & 0xFFFF0000) | CONFIG_SYS_OR_TIMING_SDRAM;
-       memctl->memc_br1 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
-       /* adjust refresh rate depending on SDRAM type, one bank */
-       reg = memctl->memc_mptpr;
-       reg >>= 1;              /* reduce to CONFIG_SYS_MPTPR_1BK_8K / _4K */
-       memctl->memc_mptpr = reg;
-
-       udelay (10000);
-
-#ifdef CONFIG_CAN_DRIVER
-       /* Initialize OR3 / BR3 */
-       memctl->memc_or3 = CONFIG_SYS_OR3_CAN;          /* switch GPLB_5 to GPLA_5 */
-       memctl->memc_br3 = CONFIG_SYS_BR3_CAN;
-
-       /* Initialize MBMR */
-       memctl->memc_mbmr = MBMR_GPL_B4DIS;     /* GPL_B4 works as UPWAITB */
-
-       /* Initialize UPMB for CAN: single read */
-       memctl->memc_mdr = 0xFFFFC004;
-       memctl->memc_mcr = 0x0100 | UPMB;
-
-       memctl->memc_mdr = 0x0FFFD004;
-       memctl->memc_mcr = 0x0101 | UPMB;
-
-       memctl->memc_mdr = 0x0FFFC000;
-       memctl->memc_mcr = 0x0102 | UPMB;
-
-       memctl->memc_mdr = 0x3FFFC004;
-       memctl->memc_mcr = 0x0103 | UPMB;
-
-       memctl->memc_mdr = 0xFFFFDC05;
-       memctl->memc_mcr = 0x0104 | UPMB;
-
-       /* Initialize UPMB for CAN: single write */
-       memctl->memc_mdr = 0xFFFCC004;
-       memctl->memc_mcr = 0x0118 | UPMB;
-
-       memctl->memc_mdr = 0xCFFCD004;
-       memctl->memc_mcr = 0x0119 | UPMB;
-
-       memctl->memc_mdr = 0x0FFCC000;
-       memctl->memc_mcr = 0x011A | UPMB;
-
-       memctl->memc_mdr = 0x7FFCC004;
-       memctl->memc_mcr = 0x011B | UPMB;
-
-       memctl->memc_mdr = 0xFFFDCC05;
-       memctl->memc_mcr = 0x011C | UPMB;
-#endif
-
-       return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value,
-                          long int *base, long int maxsize)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       memctl->memc_mamr = mamr_value;
-
-       return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void r360_i2c_lcd_write (uchar data0, uchar data1)
-{
-       if (i2c_write (CONFIG_SYS_I2C_LCD_ADDR, data0, 1, &data1, 1)) {
-               printf("Can't write lcd data 0x%02X 0x%02X.\n", data0, data1);
-       }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*-----------------------------------------------------------------------
- * Keyboard Controller
- */
-
-/* Number of bytes returned from Keyboard Controller */
-#define KEYBD_KEY_MAX  16                              /* maximum key number */
-#define KEYBD_DATALEN  ((KEYBD_KEY_MAX + 7) / 8)       /* normal key scan data */
-
-static uchar *key_match (uchar *);
-
-int misc_init_r (void)
-{
-       char kbd_data[KEYBD_DATALEN];
-       char keybd_env[2 * KEYBD_DATALEN + 1];
-       char *str;
-       int i;
-
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-
-       i2c_read (CONFIG_SYS_I2C_KEY_ADDR, 0, 0, (uchar *)kbd_data, KEYBD_DATALEN);
-
-       for (i = 0; i < KEYBD_DATALEN; ++i) {
-               sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
-       }
-       setenv ("keybd", keybd_env);
-
-       str = strdup ((char *)key_match ((uchar *)keybd_env));  /* decode keys */
-
-#ifdef CONFIG_PREBOOT  /* automatically configure "preboot" command on key match */
-       setenv ("preboot", str);        /* set or delete definition */
-#endif /* CONFIG_PREBOOT */
-       if (str != NULL) {
-               free (str);
-       }
-
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Check if pressed key(s) match magic sequence,
- * and return the command string associated with that key(s).
- *
- * If no key press was decoded, NULL is returned.
- *
- * Note: the first character of the argument will be overwritten with
- * the "magic charcter code" of the decoded key(s), or '\0'.
- *
- *
- * Note: the string points to static environment data and must be
- * saved before you call any function that modifies the environment.
- */
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[] = "key_magic";
-static uchar kbd_command_prefix[] = "key_cmd";
-
-static uchar *key_match (uchar * kbd_str)
-{
-       uchar magic[sizeof (kbd_magic_prefix) + 1];
-       uchar cmd_name[sizeof (kbd_command_prefix) + 1];
-       uchar *str, *suffix;
-       uchar *kbd_magic_keys;
-       char *cmd;
-
-       /*
-        * The following string defines the characters that can pe appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       if ((kbd_magic_keys = (uchar *)getenv ("magic_keys")) != NULL) {
-               /* loop over all magic keys;
-                * use '\0' suffix in case of empty string
-                */
-               for (suffix = kbd_magic_keys;
-                    *suffix || suffix == kbd_magic_keys;
-                    ++suffix) {
-                       sprintf ((char *)magic, "%s%c", kbd_magic_prefix, *suffix);
-
-#if 0
-                       printf ("### Check magic \"%s\"\n", magic);
-#endif
-
-                       if ((str = (uchar *)getenv ((char *)magic)) != 0) {
-
-#if 0
-                               printf ("### Compare \"%s\" \"%s\"\n",
-                                       kbd_str, str);
-#endif
-                               if (strcmp ((char *)kbd_str, (char *)str) == 0) {
-                                       sprintf ((char *)cmd_name, "%s%c",
-                                                kbd_command_prefix,
-                                                *suffix);
-
-                                       if ((cmd = getenv ((char *)cmd_name)) != 0) {
-#if 0
-                                               printf ("### Set PREBOOT to $(%s): \"%s\"\n",
-                                                       cmd_name, cmd);
-#endif
-                                               return ((uchar *)cmd);
-                                       }
-                               }
-                       }
-               }
-       }
-#if 0
-       printf ("### Delete PREBOOT\n");
-#endif
-       *kbd_str = '\0';
-       return (NULL);
-}
-#endif /* CONFIG_PREBOOT */
-
-/* Read Keyboard status */
-int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       uchar keybd_env[2 * KEYBD_DATALEN + 1];
-       int i;
-
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-
-       /* Read keys */
-       i2c_read (CONFIG_SYS_I2C_KEY_ADDR, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       puts ("Keys:");
-       for (i = 0; i < KEYBD_DATALEN; ++i) {
-               sprintf ((char *)(keybd_env + i + i), "%02X", kbd_data[i]);
-               printf (" %02x", kbd_data[i]);
-       }
-       putc ('\n');
-       setenv ("keybd", (char *)keybd_env);
-       return 0;
-}
-
-U_BOOT_CMD(
-       kbd,    1,      1,      do_kbd,
-       "read keyboard status",
-       ""
-);
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds
deleted file mode 100644 (file)
index 5f69bc4..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-  . = ALIGN(128 * 1024);
-  .ppcenv      :
-  {
-    common/env_embedded.o (.ppcenv)
-  }
-}
similarity index 71%
rename from board/raspberrypi/rpi_b/Kconfig
rename to board/raspberrypi/rpi/Kconfig
index 501d511f599e5ad7f23a0e4d07ea5cbe901e20dc..6a538cfac568104200a4a228920e267101d1469b 100644 (file)
@@ -1,7 +1,7 @@
-if TARGET_RPI_B
+if TARGET_RPI
 
 config SYS_BOARD
-       default "rpi_b"
+       default "rpi"
 
 config SYS_VENDOR
        default "raspberrypi"
@@ -10,6 +10,6 @@ config SYS_SOC
        default "bcm2835"
 
 config SYS_CONFIG_NAME
-       default "rpi_b"
+       default "rpi"
 
 endif
diff --git a/board/raspberrypi/rpi/MAINTAINERS b/board/raspberrypi/rpi/MAINTAINERS
new file mode 100644 (file)
index 0000000..6dcb7bd
--- /dev/null
@@ -0,0 +1,6 @@
+RPI BOARD
+M:     Stephen Warren <swarren@wwwdotorg.org>
+S:     Maintained
+F:     board/raspberrypi/rpi/
+F:     include/configs/rpi.h
+F:     configs/rpi_defconfig
similarity index 96%
rename from board/raspberrypi/rpi_b/Makefile
rename to board/raspberrypi/rpi/Makefile
index 7e9bfbff0cb5487cd0a1ad3403a55b551b461086..c53c92b1ddb75cb576d1fc9527233c4e5c59be28 100644 (file)
@@ -12,4 +12,4 @@
 # GNU General Public License for more details.
 #
 
-obj-y  := rpi_b.o
+obj-y  := rpi.o
similarity index 56%
rename from board/raspberrypi/rpi_b/rpi_b.c
rename to board/raspberrypi/rpi/rpi.c
index 7445f5318ad2ed44525ea8bf8a11cc5ae95cbc42..c18271fce823f7523a8958352701bfe3ea7086c7 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/arch/mbox.h>
 #include <asm/arch/sdhci.h>
 #include <asm/global_data.h>
+#include <dm/platform_data/serial_pl01x.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -36,12 +37,29 @@ U_BOOT_DEVICE(bcm2835_gpios) = {
        .platdata = &gpio_platdata,
 };
 
+static const struct pl01x_serial_platdata serial_platdata = {
+       .base = 0x20201000,
+       .type = TYPE_PL011,
+       .clock = 3000000,
+};
+
+U_BOOT_DEVICE(bcm2835_serials) = {
+       .name = "serial_pl01x",
+       .platdata = &serial_platdata,
+};
+
 struct msg_get_arm_mem {
        struct bcm2835_mbox_hdr hdr;
        struct bcm2835_mbox_tag_get_arm_mem get_arm_mem;
        u32 end_tag;
 };
 
+struct msg_get_board_rev {
+       struct bcm2835_mbox_hdr hdr;
+       struct bcm2835_mbox_tag_get_board_rev get_board_rev;
+       u32 end_tag;
+};
+
 struct msg_get_mac_address {
        struct bcm2835_mbox_hdr hdr;
        struct bcm2835_mbox_tag_get_mac_address get_mac_address;
@@ -60,6 +78,91 @@ struct msg_get_clock_rate {
        u32 end_tag;
 };
 
+/* See comments in mbox.h for data source */
+static const struct {
+       const char *name;
+       const char *fdtfile;
+       bool has_onboard_eth;
+} models[] = {
+       [0] = {
+               "Unknown model",
+               "bcm2835-rpi-other.dtb",
+               false,
+       },
+       [BCM2835_BOARD_REV_B_I2C0_2] = {
+               "Model B (no P5)",
+               "bcm2835-rpi-b-i2c0.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_B_I2C0_3] = {
+               "Model B (no P5)",
+               "bcm2835-rpi-b-i2c0.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_B_I2C1_4] = {
+               "Model B",
+               "bcm2835-rpi-b.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_B_I2C1_5] = {
+               "Model B",
+               "bcm2835-rpi-b.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_B_I2C1_6] = {
+               "Model B",
+               "bcm2835-rpi-b.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_A_7] = {
+               "Model A",
+               "bcm2835-rpi-a.dtb",
+               false,
+       },
+       [BCM2835_BOARD_REV_A_8] = {
+               "Model A",
+               "bcm2835-rpi-a.dtb",
+               false,
+       },
+       [BCM2835_BOARD_REV_A_9] = {
+               "Model A",
+               "bcm2835-rpi-a.dtb",
+               false,
+       },
+       [BCM2835_BOARD_REV_B_REV2_d] = {
+               "Model B rev2",
+               "bcm2835-rpi-b-rev2.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_B_REV2_e] = {
+               "Model B rev2",
+               "bcm2835-rpi-b-rev2.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_B_REV2_f] = {
+               "Model B rev2",
+               "bcm2835-rpi-b-rev2.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_B_PLUS] = {
+               "Model B+",
+               "bcm2835-rpi-b-plus.dtb",
+               true,
+       },
+       [BCM2835_BOARD_REV_CM] = {
+               "Compute Module",
+               "bcm2835-rpi-cm.dtb",
+               false,
+       },
+       [BCM2835_BOARD_REV_A_PLUS] = {
+               "Model A+",
+               "bcm2835-rpi-a-plus.dtb",
+               false,
+       },
+};
+
+u32 rpi_board_rev = 0;
+
 int dram_init(void)
 {
        ALLOC_ALIGN_BUFFER(struct msg_get_arm_mem, msg, 1, 16);
@@ -79,13 +182,27 @@ int dram_init(void)
        return 0;
 }
 
-int misc_init_r(void)
+static void set_fdtfile(void)
+{
+       const char *fdtfile;
+
+       if (getenv("fdtfile"))
+               return;
+
+       fdtfile = models[rpi_board_rev].fdtfile;
+       setenv("fdtfile", fdtfile);
+}
+
+static void set_usbethaddr(void)
 {
        ALLOC_ALIGN_BUFFER(struct msg_get_mac_address, msg, 1, 16);
        int ret;
 
+       if (!models[rpi_board_rev].has_onboard_eth)
+               return;
+
        if (getenv("usbethaddr"))
-               return 0;
+               return;
 
        BCM2835_MBOX_INIT_HDR(msg);
        BCM2835_MBOX_INIT_TAG(&msg->get_mac_address, GET_MAC_ADDRESS);
@@ -94,11 +211,18 @@ int misc_init_r(void)
        if (ret) {
                printf("bcm2835: Could not query MAC address\n");
                /* Ignore error; not critical */
-               return 0;
+               return;
        }
 
        eth_setenv_enetaddr("usbethaddr", msg->get_mac_address.body.resp.mac);
 
+       return;
+}
+
+int misc_init_r(void)
+{
+       set_fdtfile();
+       set_usbethaddr();
        return 0;
 }
 
@@ -126,8 +250,41 @@ static int power_on_module(u32 module)
        return 0;
 }
 
+static void get_board_rev(void)
+{
+       ALLOC_ALIGN_BUFFER(struct msg_get_board_rev, msg, 1, 16);
+       int ret;
+       const char *name;
+
+       BCM2835_MBOX_INIT_HDR(msg);
+       BCM2835_MBOX_INIT_TAG(&msg->get_board_rev, GET_BOARD_REV);
+
+       ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg->hdr);
+       if (ret) {
+               printf("bcm2835: Could not query board revision\n");
+               /* Ignore error; not critical */
+               return;
+       }
+
+       rpi_board_rev = msg->get_board_rev.body.resp.rev;
+       if (rpi_board_rev >= ARRAY_SIZE(models)) {
+               printf("RPI: Board rev %u outside known range\n",
+                      rpi_board_rev);
+               rpi_board_rev = 0;
+       }
+       if (!models[rpi_board_rev].name) {
+               printf("RPI: Board rev %u unknown\n", rpi_board_rev);
+               rpi_board_rev = 0;
+       }
+
+       name = models[rpi_board_rev].name;
+       printf("RPI model: %s\n", name);
+}
+
 int board_init(void)
 {
+       get_board_rev();
+
        gd->bd->bi_boot_params = 0x100;
 
        return power_on_module(BCM2835_MBOX_POWER_DEVID_USB_HCD);
@@ -154,7 +311,7 @@ int board_mmc_init(bd_t *bis)
                                  msg_clk->get_clock_rate.body.resp.rate_hz);
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        /*
         * For now, we simply always add the simplefb DT node. Later, we
@@ -162,4 +319,6 @@ void ft_board_setup(void *blob, bd_t *bd)
         * node exists for the "real" graphics driver.
         */
        lcd_dt_simplefb_add_node(blob);
+
+       return 0;
 }
diff --git a/board/raspberrypi/rpi_b/MAINTAINERS b/board/raspberrypi/rpi_b/MAINTAINERS
deleted file mode 100644 (file)
index 14f3948..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-RPI_B BOARD
-M:     Stephen Warren <swarren@wwwdotorg.org>
-S:     Maintained
-F:     board/raspberrypi/rpi_b/
-F:     include/configs/rpi_b.h
-F:     configs/rpi_b_defconfig
index 10dffeda9f65c279a0ee05443b48c58096d0e91e..25b170ac07121eb6336e83301931694f5877ab73 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_MIGOR
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "MigoR"
 
index 9ed12bd87d2b4985fc76a37fda62534f1301b525..6904e39b12800b7bf9600e41d7075824597868a4 100644 (file)
@@ -6,4 +6,4 @@
 # SPDX-License-Identifier: GPL-2.0
 #
 
-obj-y  := alt.o qos.o
+obj-y  := alt.o qos.o ../rcar-gen2-common/common.o
index 9d8e8f96be8f1685b3bbbf89127038bbfeab4a59..8cc17e9581a6ec07a427b2431d4e11defafc44e3 100644 (file)
@@ -15,6 +15,8 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
 #include <asm/arch/rmobile.h>
+#include <asm/arch/rcar-mstp.h>
+#include <asm/arch/mmc.h>
 #include <netdev.h>
 #include <miiphy.h>
 #include <i2c.h>
@@ -37,51 +39,37 @@ void s_init(void)
        qos_init();
 }
 
-#define MSTPSR1                0xE6150038
-#define SMSTPCR1       0xE6150134
 #define TMU0_MSTP125   (1 << 25)
-
-#define MSTPSR7                0xE61501C4
-#define SMSTPCR7       0xE615014C
-#define SCIF0_MSTP719  (1 << 19)
-
-#define MSTPSR8                0xE61509A0
-#define SMSTPCR8       0xE6150990
+#define SCIF2_MSTP719  (1 << 19)
 #define ETHER_MSTP813  (1 << 13)
-
-#define mstp_setbits(type, addr, saddr, set) \
-       out_##type((saddr), in_##type(addr) | (set))
-#define mstp_clrbits(type, addr, saddr, clear) \
-       out_##type((saddr), in_##type(addr) & ~(clear))
-#define mstp_setbits_le32(addr, saddr, set) \
-       mstp_setbits(le32, addr, saddr, set)
-#define mstp_clrbits_le32(addr, saddr, clear)   \
-       mstp_clrbits(le32, addr, saddr, clear)
+#define IIC1_MSTP323   (1 << 23)
+#define MMC0_MSTP315   (1 << 15)
 
 int board_early_init_f(void)
 {
        /* TMU */
        mstp_clrbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
 
-       /* SCIF0 */
-       mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF0_MSTP719);
+       /* SCIF2 */
+       mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF2_MSTP719);
 
        /* ETHER */
        mstp_clrbits_le32(MSTPSR8, SMSTPCR8, ETHER_MSTP813);
 
-       return 0;
-}
+       /* IIC1 / sh-i2c ch1 */
+       mstp_clrbits_le32(MSTPSR3, SMSTPCR3, IIC1_MSTP323);
 
-void arch_preboot_os(void)
-{
-       /* Disable TMU0 */
-       mstp_setbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
+#ifdef CONFIG_SH_MMCIF
+       /* MMC */
+       mstp_clrbits_le32(MSTPSR3, SMSTPCR3, MMC0_MSTP315);
+#endif
+       return 0;
 }
 
 int board_init(void)
 {
        /* adress of boot parameters */
-       gd->bd->bi_boot_params = ALT_SDRAM_BASE + 0x100;
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
        /* Init PFC controller */
        r8a7794_pinmux_init();
@@ -138,9 +126,21 @@ int board_eth_init(bd_t *bis)
 #endif
 }
 
+int board_mmc_init(bd_t *bis)
+{
+       int ret = 0;
+
+#ifdef CONFIG_SH_MMCIF
+       gpio_request(GPIO_GP_4_31, NULL);
+       gpio_set_value(GPIO_GP_4_31, 1);
+
+       ret = mmcif_mmc_init();
+#endif
+       return ret;
+}
+
 int dram_init(void)
 {
-       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
        gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
 
        return 0;
@@ -150,23 +150,11 @@ const struct rmobile_sysinfo sysinfo = {
        CONFIG_RMOBILE_BOARD_STRING
 };
 
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = ALT_SDRAM_BASE;
-       gd->bd->bi_dram[0].size = ALT_SDRAM_SIZE;
-}
-
-int board_late_init(void)
-{
-       return 0;
-}
-
 void reset_cpu(ulong addr)
 {
        u8 val;
 
-       i2c_set_bus_num(1); /* PowerIC connected to ch3 */
-       i2c_init(400000, 0);
+       i2c_set_bus_num(1); /* PowerIC connected to ch1 */
        i2c_read(CONFIG_SYS_I2C_POWERIC_ADDR, 0x13, 1, &val, 1);
        val |= 0x02;
        i2c_write(CONFIG_SYS_I2C_POWERIC_ADDR, 0x13, 1, &val, 1);
index d788aa0ffb9551cd40c20f125c1636bc70322bd6..f0b349f18f5fc91cc353ff2bbecd8f6f68e23575 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/io.h>
 #include <asm/arch/rmobile.h>
 
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
 /* QoS version 0.11 */
 
 enum {
@@ -942,3 +943,8 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 }
+#else /* CONFIG_RMOBILE_EXTRAM_BOOT */
+void qos_init(void)
+{
+}
+#endif /* CONFIG_RMOBILE_EXTRAM_BOOT */
index 45bd6003bd91124ab933ab2a2c627f2f32f5b3bb..c8f2de29592b6d4aae99d839a4c8f766e8b070cc 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_AP325RXA
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "ap325rxa"
 
index a24fe911e0897b0ba94f1d8c46a3a06c50b480f1..08cde83356295e74e16fe092576e3f264c530f86 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_ECOVEC
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "ecovec"
 
index 2804d9133da0320cb49dfc1b7f2a25ecff5cde0e..d862d997e5607aa7eb69d6d61b6ea8e606102a52 100644 (file)
@@ -41,7 +41,7 @@ static void debug_led(u8 led)
 int board_late_init(void)
 {
        u8 mac[6];
-       char env_mac[17];
+       char env_mac[18];
 
        udelay(1000);
 
similarity index 50%
rename from board/esd/dp405/Kconfig
rename to board/renesas/gose/Kconfig
index c0163aef0f51d07522f0438bd047324268688016..930a44559e985298ff14bf2354b2e653df9adf68 100644 (file)
@@ -1,12 +1,12 @@
-if TARGET_DP405
+if TARGET_GOSE
 
 config SYS_BOARD
-       default "dp405"
+       default "gose"
 
 config SYS_VENDOR
-       default "esd"
+       default "renesas"
 
 config SYS_CONFIG_NAME
-       default "DP405"
+       default "gose"
 
 endif
diff --git a/board/renesas/gose/MAINTAINERS b/board/renesas/gose/MAINTAINERS
new file mode 100644 (file)
index 0000000..cad5be9
--- /dev/null
@@ -0,0 +1,6 @@
+ALT BOARD
+M:     Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+S:     Maintained
+F:     board/renesas/gose/
+F:     include/configs/gose.h
+F:     configs/gose_defconfig
diff --git a/board/renesas/gose/Makefile b/board/renesas/gose/Makefile
new file mode 100644 (file)
index 0000000..2dac748
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# board/renesas/alt/Makefile
+#
+# Copyright (C) 2014 Renesas Electronics Corporation
+#
+# SPDX-License-Identifier: GPL-2.0
+#
+
+obj-y  := gose.o qos.o ../rcar-gen2-common/common.o
diff --git a/board/renesas/gose/gose.c b/board/renesas/gose/gose.c
new file mode 100644 (file)
index 0000000..677b976
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * board/renesas/gose/gose.c
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <asm/processor.h>
+#include <asm/mach-types.h>
+#include <asm/io.h>
+#include <asm/errno.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/gpio.h>
+#include <asm/arch/rmobile.h>
+#include <asm/arch/rcar-mstp.h>
+#include <netdev.h>
+#include <miiphy.h>
+#include <i2c.h>
+#include "qos.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define CLK2MHZ(clk)   (clk / 1000 / 1000)
+void s_init(void)
+{
+       struct rcar_rwdt *rwdt = (struct rcar_rwdt *)RWDT_BASE;
+       struct rcar_swdt *swdt = (struct rcar_swdt *)SWDT_BASE;
+       u32 stc;
+
+       /* Watchdog init */
+       writel(0xA5A5A500, &rwdt->rwtcsra);
+       writel(0xA5A5A500, &swdt->swtcsra);
+
+       /* CPU frequency setting. Set to 1.5GHz */
+       stc = ((1500 / CLK2MHZ(CONFIG_SYS_CLK_FREQ)) - 1) << PLL0_STC_BIT;
+       clrsetbits_le32(PLL0CR, PLL0_STC_MASK, stc);
+
+       /* QoS */
+       qos_init();
+}
+
+#define TMU0_MSTP125   (1 << 25)
+#define SCIF0_MSTP721  (1 << 21)
+#define ETHER_MSTP813  (1 << 13)
+
+int board_early_init_f(void)
+{
+       /* TMU0 */
+       mstp_clrbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
+
+       /* SCIF0 */
+       mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF0_MSTP721);
+
+       /* ETHER */
+       mstp_clrbits_le32(MSTPSR8, SMSTPCR8, ETHER_MSTP813);
+
+       return 0;
+}
+
+#define PUPR5          0xE6060114
+#define PUPR5_ETH      0x3FFC0000
+#define PUPR5_ETH_MAGIC        (1 << 27)
+
+int board_init(void)
+{
+       /* adress of boot parameters */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+       /* Init PFC controller */
+       r8a7793_pinmux_init();
+
+       /* ETHER Enable */
+       gpio_request(GPIO_FN_ETH_CRS_DV, NULL);
+       gpio_request(GPIO_FN_ETH_RX_ER, NULL);
+       gpio_request(GPIO_FN_ETH_RXD0, NULL);
+       gpio_request(GPIO_FN_ETH_RXD1, NULL);
+       gpio_request(GPIO_FN_ETH_LINK, NULL);
+       gpio_request(GPIO_FN_ETH_REFCLK, NULL);
+       gpio_request(GPIO_FN_ETH_MDIO, NULL);
+       gpio_request(GPIO_FN_ETH_TXD1, NULL);
+       gpio_request(GPIO_FN_ETH_TX_EN, NULL);
+       gpio_request(GPIO_FN_ETH_TXD0, NULL);
+       gpio_request(GPIO_FN_ETH_MDC, NULL);
+       gpio_request(GPIO_FN_IRQ0, NULL);
+
+       mstp_clrbits_le32(PUPR5, PUPR5, PUPR5_ETH & ~PUPR5_ETH_MAGIC);
+       gpio_request(GPIO_GP_5_22, NULL); /* PHY_RST */
+       mstp_clrbits_le32(PUPR5, PUPR5, PUPR5_ETH_MAGIC);
+
+       gpio_direction_output(GPIO_GP_5_22, 0);
+       mdelay(20);
+       gpio_set_value(GPIO_GP_5_22, 1);
+       udelay(1);
+
+       return 0;
+}
+
+#define CXR24 0xEE7003C0 /* MAC address high register */
+#define CXR25 0xEE7003C8 /* MAC address low register */
+
+int board_eth_init(bd_t *bis)
+{
+       int ret = -ENODEV;
+       u32 val;
+       unsigned char enetaddr[6];
+
+#ifdef CONFIG_SH_ETHER
+       ret = sh_eth_initialize(bis);
+       if (!eth_getenv_enetaddr("ethaddr", enetaddr))
+               return ret;
+
+       /* Set Mac address */
+       val = enetaddr[0] << 24 | enetaddr[1] << 16 |
+           enetaddr[2] << 8 | enetaddr[3];
+       writel(val, CXR24);
+
+       val = enetaddr[4] << 8 | enetaddr[5];
+       writel(val, CXR25);
+#endif
+
+       return ret;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
+
+       return 0;
+}
+
+const struct rmobile_sysinfo sysinfo = {
+       CONFIG_RMOBILE_BOARD_STRING
+};
+
+void reset_cpu(ulong addr)
+{
+       u8 val;
+
+       i2c_set_bus_num(2); /* PowerIC connected to ch2 */
+       i2c_read(CONFIG_SYS_I2C_POWERIC_ADDR, 0x13, 1, &val, 1);
+       val |= 0x02;
+       i2c_write(CONFIG_SYS_I2C_POWERIC_ADDR, 0x13, 1, &val, 1);
+}
diff --git a/board/renesas/gose/qos.c b/board/renesas/gose/qos.c
new file mode 100644 (file)
index 0000000..64e52cf
--- /dev/null
@@ -0,0 +1,1155 @@
+/*
+ * board/renesas/gose/qos.c
+ *     This file is gose QoS setting.
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+#include <asm/mach-types.h>
+#include <asm/io.h>
+#include <asm/arch/rmobile.h>
+
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+/* QoS version 0.20 */
+enum {
+       DBSC3_00, DBSC3_01, DBSC3_02, DBSC3_03, DBSC3_04,
+       DBSC3_05, DBSC3_06, DBSC3_07, DBSC3_08, DBSC3_09,
+       DBSC3_10, DBSC3_11, DBSC3_12, DBSC3_13, DBSC3_14,
+       DBSC3_15,
+       DBSC3_NR,
+};
+
+static u32 dbsc3_0_r_qos_addr[DBSC3_NR] = {
+       [DBSC3_00] = DBSC3_0_QOS_R0_BASE,
+       [DBSC3_01] = DBSC3_0_QOS_R1_BASE,
+       [DBSC3_02] = DBSC3_0_QOS_R2_BASE,
+       [DBSC3_03] = DBSC3_0_QOS_R3_BASE,
+       [DBSC3_04] = DBSC3_0_QOS_R4_BASE,
+       [DBSC3_05] = DBSC3_0_QOS_R5_BASE,
+       [DBSC3_06] = DBSC3_0_QOS_R6_BASE,
+       [DBSC3_07] = DBSC3_0_QOS_R7_BASE,
+       [DBSC3_08] = DBSC3_0_QOS_R8_BASE,
+       [DBSC3_09] = DBSC3_0_QOS_R9_BASE,
+       [DBSC3_10] = DBSC3_0_QOS_R10_BASE,
+       [DBSC3_11] = DBSC3_0_QOS_R11_BASE,
+       [DBSC3_12] = DBSC3_0_QOS_R12_BASE,
+       [DBSC3_13] = DBSC3_0_QOS_R13_BASE,
+       [DBSC3_14] = DBSC3_0_QOS_R14_BASE,
+       [DBSC3_15] = DBSC3_0_QOS_R15_BASE,
+};
+
+static u32 dbsc3_0_w_qos_addr[DBSC3_NR] = {
+       [DBSC3_00] = DBSC3_0_QOS_W0_BASE,
+       [DBSC3_01] = DBSC3_0_QOS_W1_BASE,
+       [DBSC3_02] = DBSC3_0_QOS_W2_BASE,
+       [DBSC3_03] = DBSC3_0_QOS_W3_BASE,
+       [DBSC3_04] = DBSC3_0_QOS_W4_BASE,
+       [DBSC3_05] = DBSC3_0_QOS_W5_BASE,
+       [DBSC3_06] = DBSC3_0_QOS_W6_BASE,
+       [DBSC3_07] = DBSC3_0_QOS_W7_BASE,
+       [DBSC3_08] = DBSC3_0_QOS_W8_BASE,
+       [DBSC3_09] = DBSC3_0_QOS_W9_BASE,
+       [DBSC3_10] = DBSC3_0_QOS_W10_BASE,
+       [DBSC3_11] = DBSC3_0_QOS_W11_BASE,
+       [DBSC3_12] = DBSC3_0_QOS_W12_BASE,
+       [DBSC3_13] = DBSC3_0_QOS_W13_BASE,
+       [DBSC3_14] = DBSC3_0_QOS_W14_BASE,
+       [DBSC3_15] = DBSC3_0_QOS_W15_BASE,
+};
+
+void qos_init(void)
+{
+       int i;
+       struct rcar_s3c *s3c;
+       struct rcar_s3c_qos *s3c_qos;
+       struct rcar_dbsc3_qos *qos_addr;
+       struct rcar_mxi *mxi;
+       struct rcar_mxi_qos *mxi_qos;
+       struct rcar_axi_qos *axi_qos;
+
+       /* DBSC DBADJ2 */
+       writel(0x20042004, DBSC3_0_DBADJ2);
+
+       /* S3C -QoS */
+       s3c = (struct rcar_s3c *)S3C_BASE;
+       writel(0x00000000, &s3c->s3cadsplcr);
+       writel(0x1F0B0908, &s3c->s3crorr);
+       writel(0x1F0C0A08, &s3c->s3cworr);
+
+       /* QoS Control Registers */
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI0_BASE;
+       writel(0x00890089, &s3c_qos->s3cqos0);
+       writel(0x20960010, &s3c_qos->s3cqos1);
+       writel(0x20302030, &s3c_qos->s3cqos2);
+       writel(0x20AA2200, &s3c_qos->s3cqos3);
+       writel(0x00002032, &s3c_qos->s3cqos4);
+       writel(0x20960010, &s3c_qos->s3cqos5);
+       writel(0x20302030, &s3c_qos->s3cqos6);
+       writel(0x20AA2200, &s3c_qos->s3cqos7);
+       writel(0x00002032, &s3c_qos->s3cqos8);
+
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI1_BASE;
+       writel(0x00890089, &s3c_qos->s3cqos0);
+       writel(0x20960010, &s3c_qos->s3cqos1);
+       writel(0x20302030, &s3c_qos->s3cqos2);
+       writel(0x20AA2200, &s3c_qos->s3cqos3);
+       writel(0x00002032, &s3c_qos->s3cqos4);
+       writel(0x20960010, &s3c_qos->s3cqos5);
+       writel(0x20302030, &s3c_qos->s3cqos6);
+       writel(0x20AA2200, &s3c_qos->s3cqos7);
+       writel(0x00002032, &s3c_qos->s3cqos8);
+
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_MXI_BASE;
+       writel(0x00820082, &s3c_qos->s3cqos0);
+       writel(0x20960020, &s3c_qos->s3cqos1);
+       writel(0x20302030, &s3c_qos->s3cqos2);
+       writel(0x20AA20DC, &s3c_qos->s3cqos3);
+       writel(0x00002032, &s3c_qos->s3cqos4);
+       writel(0x20960020, &s3c_qos->s3cqos5);
+       writel(0x20302030, &s3c_qos->s3cqos6);
+       writel(0x20AA20DC, &s3c_qos->s3cqos7);
+       writel(0x00002032, &s3c_qos->s3cqos8);
+
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_AXI_BASE;
+       writel(0x00820082, &s3c_qos->s3cqos0);
+       writel(0x20960020, &s3c_qos->s3cqos1);
+       writel(0x20302030, &s3c_qos->s3cqos2);
+       writel(0x20AA20FA, &s3c_qos->s3cqos3);
+       writel(0x00002032, &s3c_qos->s3cqos4);
+       writel(0x20960020, &s3c_qos->s3cqos5);
+       writel(0x20302030, &s3c_qos->s3cqos6);
+       writel(0x20AA20FA, &s3c_qos->s3cqos7);
+       writel(0x00002032, &s3c_qos->s3cqos8);
+
+       /* DBSC -QoS */
+       /* DBSC0 - Read */
+       for (i = DBSC3_00; i < DBSC3_NR; i++) {
+               qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_r_qos_addr[i];
+               writel(0x00000002, &qos_addr->dblgcnt);
+               writel(0x00002096, &qos_addr->dbtmval0);
+               writel(0x00002064, &qos_addr->dbtmval1);
+               writel(0x00002032, &qos_addr->dbtmval2);
+               writel(0x00001FB0, &qos_addr->dbtmval3);
+               writel(0x00000001, &qos_addr->dbrqctr);
+               writel(0x00002078, &qos_addr->dbthres0);
+               writel(0x0000204B, &qos_addr->dbthres1);
+               writel(0x0000201E, &qos_addr->dbthres2);
+               writel(0x00000001, &qos_addr->dblgqon);
+       }
+
+       /* DBSC0 - Write */
+       for (i = DBSC3_00; i < DBSC3_NR; i++) {
+               qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_w_qos_addr[i];
+               writel(0x00000002, &qos_addr->dblgcnt);
+               writel(0x00002096, &qos_addr->dbtmval0);
+               writel(0x00002064, &qos_addr->dbtmval1);
+               writel(0x00002050, &qos_addr->dbtmval2);
+               writel(0x0000203A, &qos_addr->dbtmval3);
+               writel(0x00000001, &qos_addr->dbrqctr);
+               writel(0x00002078, &qos_addr->dbthres0);
+               writel(0x0000204B, &qos_addr->dbthres1);
+               writel(0x0000203C, &qos_addr->dbthres2);
+               writel(0x00000001, &qos_addr->dblgqon);
+       }
+
+       /* CCI-400 -QoS */
+       writel(0x20001000, CCI_400_MAXOT_1);
+       writel(0x20001000, CCI_400_MAXOT_2);
+       writel(0x0000000C, CCI_400_QOSCNTL_1);
+       writel(0x0000000C, CCI_400_QOSCNTL_2);
+
+       /* MXI -QoS */
+       /* Transaction Control (MXI) */
+       mxi = (struct rcar_mxi *)MXI_BASE;
+       writel(0x00000013, &mxi->mxrtcr);
+       writel(0x00000013, &mxi->mxwtcr);
+       writel(0x00200000, &mxi->mxs3cracr);
+       writel(0x00200000, &mxi->mxs3cwacr);
+       writel(0x00200000, &mxi->mxaxiracr);
+       writel(0x00200000, &mxi->mxaxiwacr);
+
+       /* QoS Control (MXI) */
+       mxi_qos = (struct rcar_mxi_qos *)MXI_QOS_BASE;
+       writel(0x0000000C, &mxi_qos->vspdu0);
+       writel(0x0000000C, &mxi_qos->vspdu1);
+       writel(0x0000000E, &mxi_qos->du0);
+
+       /* AXI -QoS */
+       /* Transaction Control (MXI) */
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SYX64TO128_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_AVB_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x000020A6, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_G2D_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x000020A6, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMP0_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002021, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMP1_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002037, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX0_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX1_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX2_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_LBS_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x0000214C, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUDS_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUM_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS0_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS1_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MTSB0_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002021, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MTSB1_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002021, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_PCI_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x0000214C, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_RTX_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS0_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x000020A6, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS1_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x000020A6, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB20_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB21_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB22_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB30_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x0000214C, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_AX2M_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_CC50_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002029, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_CCI_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_CS_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_DDM_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x000020A6, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_ETH_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MPXM_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SAT0_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SAT1_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDM0_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x0000214C, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDM1_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x0000214C, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_TRAB_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x000020A6, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_UDM0_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_UDM1_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       /* QoS Register (RT-AXI) */
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_SHX_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_DBG_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RDM_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002299, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RDS_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002029, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RTX64TO128_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_STPRO_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002029, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_SY2RT_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       /* QoS Register (MP-AXI) */
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ADSP_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002037, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS0_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002014, &axi_qos->qosctset0);
+       writel(0x00000040, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS1_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002014, &axi_qos->qosctset0);
+       writel(0x00000040, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_MLP_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00001FF0, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00002001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_MMUMP_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_SPU_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x00002053, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_SPUC_BASE;
+       writel(0x00000000, &axi_qos->qosconf);
+       writel(0x0000206E, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       /* QoS Register (SYS-AXI256) */
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_AXI128TO256_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x000020EB, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_SYX_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x000020EB, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MPX_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x000020EB, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MXI_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x000020EB, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       /* QoS Register (CCI-AXI) */
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS0_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_SYX2_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUDS_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUM_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MXI_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x00002245, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS1_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUMP_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002004, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       /* QoS Register (Media-AXI) */
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_MXR_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x000020DC, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x000020AA, &axi_qos->qosthres0);
+       writel(0x00002032, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_MXW_BASE;
+       writel(0x00000002, &axi_qos->qosconf);
+       writel(0x000020DC, &axi_qos->qosctset0);
+       writel(0x00002096, &axi_qos->qosctset1);
+       writel(0x00002030, &axi_qos->qosctset2);
+       writel(0x00002030, &axi_qos->qosctset3);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x000020AA, &axi_qos->qosthres0);
+       writel(0x00002032, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_JPR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_JPW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU1CR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU1CW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002190, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VIN0W_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00001FF0, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00002001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0R_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0W_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1R_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1W_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP1R_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP1W_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0R_BASE;
+       writel(0x00000003, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0W_BASE;
+       writel(0x00000003, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD1R_BASE;
+       writel(0x00000003, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD1W_BASE;
+       writel(0x00000003, &axi_qos->qosconf);
+       writel(0x000020C8, &axi_qos->qosctset0);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0R_BASE;
+       writel(0x00000003, &axi_qos->qosconf);
+       writel(0x00002063, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0W_BASE;
+       writel(0x00000003, &axi_qos->qosconf);
+       writel(0x00002063, &axi_qos->qosctset0);
+       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002073, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002073, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VR_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002073, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VW_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002073, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00000001, &axi_qos->qosthres0);
+       writel(0x00000001, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VPC0R_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00002073, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
+       writel(0x00002064, &axi_qos->qosthres0);
+       writel(0x00002004, &axi_qos->qosthres1);
+       writel(0x00000001, &axi_qos->qosthres2);
+       writel(0x00000001, &axi_qos->qosqon);
+}
+#else /* CONFIG_RMOBILE_EXTRAM_BOOT */
+void qos_init(void)
+{
+}
+#endif /* CONFIG_RMOBILE_EXTRAM_BOOT */
diff --git a/board/renesas/gose/qos.h b/board/renesas/gose/qos.h
new file mode 100644 (file)
index 0000000..ffd4047
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#ifndef __QOS_H__
+#define __QOS_H__
+
+void qos_init(void);
+
+#endif
index b4d0183b3b7ba82bb98a98b72e395976099fff30..c10bba5682c27ecf910d1be65cdb49426d8cc3c3 100644 (file)
@@ -6,4 +6,4 @@
 # SPDX-License-Identifier: GPL-2.0
 #
 
-obj-y  := koelsch.o qos.o
+obj-y  := koelsch.o qos.o ../rcar-gen2-common/common.o
index bfd0cc6884b7f754be4a6a2525e08e4df22b53a9..10fa571d07fa607d1f3b2e7becb5e14da7a7b1f0 100644 (file)
@@ -16,6 +16,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
 #include <asm/arch/rmobile.h>
+#include <asm/arch/rcar-mstp.h>
 #include <netdev.h>
 #include <miiphy.h>
 #include <i2c.h>
@@ -43,27 +44,10 @@ void s_init(void)
        qos_init();
 }
 
-#define MSTPSR1                0xE6150038
-#define SMSTPCR1       0xE6150134
 #define TMU0_MSTP125   (1 << 25)
-
-#define MSTPSR7                0xE61501C4
-#define SMSTPCR7       0xE615014C
 #define SCIF0_MSTP721  (1 << 21)
-
-#define MSTPSR8                0xE61509A0
-#define SMSTPCR8       0xE6150990
 #define ETHER_MSTP813  (1 << 13)
 
-#define mstp_setbits(type, addr, saddr, set) \
-       out_##type((saddr), in_##type(addr) | (set))
-#define mstp_clrbits(type, addr, saddr, clear) \
-       out_##type((saddr), in_##type(addr) & ~(clear))
-#define mstp_setbits_le32(addr, saddr, set) \
-       mstp_setbits(le32, addr, saddr, set)
-#define mstp_clrbits_le32(addr, saddr, clear)   \
-       mstp_clrbits(le32, addr, saddr, clear)
-
 int board_early_init_f(void)
 {
        mstp_clrbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
@@ -77,12 +61,6 @@ int board_early_init_f(void)
        return 0;
 }
 
-void arch_preboot_os(void)
-{
-       /* Disable TMU0 */
-       mstp_setbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
-}
-
 /* LSI pin pull-up control */
 #define PUPR5 0xe6060114
 #define PUPR5_ETH 0x3FFC0000
@@ -90,7 +68,7 @@ void arch_preboot_os(void)
 int board_init(void)
 {
        /* adress of boot parameters */
-       gd->bd->bi_boot_params = KOELSCH_SDRAM_BASE + 0x100;
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
        /* Init PFC controller */
        r8a7791_pinmux_init();
@@ -150,7 +128,6 @@ int board_eth_init(bd_t *bis)
 
 int dram_init(void)
 {
-       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
        gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
 
        return 0;
@@ -174,17 +151,6 @@ const struct rmobile_sysinfo sysinfo = {
        CONFIG_RMOBILE_BOARD_STRING
 };
 
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = KOELSCH_SDRAM_BASE;
-       gd->bd->bi_dram[0].size = KOELSCH_SDRAM_SIZE;
-}
-
-int board_late_init(void)
-{
-       return 0;
-}
-
 void reset_cpu(ulong addr)
 {
        u8 val;
index ecf3eeddd7dbf58637b0b5afc36fa56070310f90..d293e3d7fcc86acdb489f9b2bd116fb41b93b26e 100644 (file)
@@ -14,7 +14,7 @@
 #include <asm/arch/rmobile.h>
 
 /* QoS version 0.240 for ES1 and version 0.334 for ES2 */
-
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
 enum {
        DBSC3_00, DBSC3_01, DBSC3_02, DBSC3_03, DBSC3_04,
        DBSC3_05, DBSC3_06, DBSC3_07, DBSC3_08, DBSC3_09,
@@ -1304,3 +1304,8 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 }
+#else /* CONFIG_RMOBILE_EXTRAM_BOOT */
+void qos_init(void)
+{
+}
+#endif /* CONFIG_RMOBILE_EXTRAM_BOOT */
index 034c6f8c076259e1c316f9cffe9c062b5213fcae..8d034611a471eae0afe302d75815d7d4ead59ceb 100644 (file)
@@ -6,4 +6,4 @@
 # SPDX-License-Identifier: GPL-2.0
 #
 
-obj-y  := lager.o qos.o
+obj-y  := lager.o qos.o ../rcar-gen2-common/common.o
index 5302839b33a9c960916c6910f93f65d5adeef2ca..d1e29d2cecf53139d37cafbe9c25fe2cb9ac12bb 100644 (file)
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
 #include <asm/arch/rmobile.h>
+#include <asm/arch/rcar-mstp.h>
+#include <asm/arch/mmc.h>
 #include <miiphy.h>
 #include <i2c.h>
+#include <mmc.h>
 #include "qos.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -36,35 +39,24 @@ void s_init(void)
 
        /* CPU frequency setting. Set to 1.4GHz */
        if (rmobile_get_cpu_rev_integer() >= R8A7790_CUT_ES2X) {
+               u32 stat = 0;
                u32 stc = ((1400 / CLK2MHZ(CONFIG_SYS_CLK_FREQ)) - 1)
                        << PLL0_STC_BIT;
                clrsetbits_le32(PLL0CR, PLL0_STC_MASK, stc);
+
+               do {
+                       stat = readl(PLLECR) & PLL0ST;
+               } while (stat == 0x0);
        }
 
        /* QoS(Quality-of-Service) Init */
        qos_init();
 }
 
-#define MSTPSR1        0xE6150038
-#define SMSTPCR1       0xE6150134
 #define TMU0_MSTP125   (1 << 25)
-
-#define MSTPSR7        0xE61501C4
-#define SMSTPCR7       0xE615014C
 #define SCIF0_MSTP721  (1 << 21)
-
-#define MSTPSR8        0xE61509A0
-#define SMSTPCR8       0xE6150990
 #define ETHER_MSTP813  (1 << 13)
-
-#define mstp_setbits(type, addr, saddr, set) \
-       out_##type((saddr), in_##type(addr) | (set))
-#define mstp_clrbits(type, addr, saddr, clear) \
-       out_##type((saddr), in_##type(addr) & ~(clear))
-#define mstp_setbits_le32(addr, saddr, set)    \
-               mstp_setbits(le32, addr, saddr, set)
-#define mstp_clrbits_le32(addr, saddr, clear)  \
-               mstp_clrbits(le32, addr, saddr, clear)
+#define MMC1_MSTP305    (1 << 5)
 
 int board_early_init_f(void)
 {
@@ -74,21 +66,17 @@ int board_early_init_f(void)
        mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF0_MSTP721);
        /* ETHER */
        mstp_clrbits_le32(MSTPSR8, SMSTPCR8, ETHER_MSTP813);
+       /* eMMC */
+       mstp_clrbits_le32(MSTPSR3, SMSTPCR3, MMC1_MSTP305);
 
        return 0;
 }
 
-void arch_preboot_os(void)
-{
-       /* Disable TMU0 */
-       mstp_setbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
-}
-
 DECLARE_GLOBAL_DATA_PTR;
 int board_init(void)
 {
        /* adress of boot parameters */
-       gd->bd->bi_boot_params = LAGER_SDRAM_BASE + 0x100;
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
        /* Init PFC controller */
        r8a7790_pinmux_init();
@@ -158,9 +146,30 @@ int board_phy_config(struct phy_device *phydev)
        return 0;
 }
 
+int board_mmc_init(bd_t *bis)
+{
+       int ret = 0;
+
+#ifdef CONFIG_SH_MMCIF
+       gpio_request(GPIO_FN_MMC1_D0, NULL);
+       gpio_request(GPIO_FN_MMC1_D1, NULL);
+       gpio_request(GPIO_FN_MMC1_D2, NULL);
+       gpio_request(GPIO_FN_MMC1_D3, NULL);
+       gpio_request(GPIO_FN_MMC1_D4, NULL);
+       gpio_request(GPIO_FN_MMC1_D5, NULL);
+       gpio_request(GPIO_FN_MMC1_D6, NULL);
+       gpio_request(GPIO_FN_MMC1_D7, NULL);
+       gpio_request(GPIO_FN_MMC1_CLK, NULL);
+       gpio_request(GPIO_FN_MMC1_CMD, NULL);
+
+       ret = mmcif_mmc_init();
+#endif
+       return ret;
+}
+
+
 int dram_init(void)
 {
-       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
        gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
 
        return 0;
@@ -170,17 +179,6 @@ const struct rmobile_sysinfo sysinfo = {
        CONFIG_RMOBILE_BOARD_STRING
 };
 
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = LAGER_SDRAM_BASE;
-       gd->bd->bi_dram[0].size = LAGER_SDRAM_SIZE;
-}
-
-int board_late_init(void)
-{
-       return 0;
-}
-
 void reset_cpu(ulong addr)
 {
        u8 val;
index ce7f8ba10caf7d3b044daec86c6d80f1213d1cb7..dec37d2bf9c9fe9e547e718af7e17c14436b65d5 100644 (file)
@@ -13,7 +13,7 @@
 #include <asm/arch/rmobile.h>
 
 /* QoS version 0.955 for ES1 and version 0.963 for ES2 */
-
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
 enum {
        DBSC3_00, DBSC3_01, DBSC3_02, DBSC3_03, DBSC3_04,
        DBSC3_05, DBSC3_06, DBSC3_07, DBSC3_08, DBSC3_09,
@@ -2381,3 +2381,8 @@ void qos_init(void)
        else
                qos_init_es1();
 }
+#else /* CONFIG_RMOBILE_EXTRAM_BOOT */
+void qos_init(void)
+{
+}
+#endif /* CONFIG_RMOBILE_EXTRAM_BOOT */
index bda785dc97c97fd2a45634511d98caaa1823cd3b..7f24f41b8f8f5864d1b763dc6fa59b3f7c1b4b7e 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_R0P7734
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "r0p7734"
 
index c55c109f6b02dbcff367456fee4d59b6194028c6..6597870a86e6d4457ec9a4a0abbab8c595975700 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_R2DPLUS
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "r2dplus"
 
index 2d3cbeca5b89f7b594c3752ff141e80ce7172820..050cc4cc0f6dd9d586db388453c97104502b2a4d 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_R7780MP
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "r7780mp"
 
diff --git a/board/renesas/rcar-gen2-common/common.c b/board/renesas/rcar-gen2-common/common.c
new file mode 100644 (file)
index 0000000..0103f42
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * board/renesas/rcar-gen2-common/common.c
+ *
+ * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/rmobile.h>
+#include <asm/arch/rcar-mstp.h>
+
+#define TSTR0          0x04
+#define TSTR0_STR0     0x01
+
+static struct mstp_ctl mstptbl[] = {
+       { SMSTPCR0, MSTP0_BITS, CONFIG_SMSTP0_ENA,
+               RMSTPCR0, MSTP0_BITS, CONFIG_RMSTP0_ENA },
+       { SMSTPCR1, MSTP1_BITS, CONFIG_SMSTP1_ENA,
+               RMSTPCR1, MSTP1_BITS, CONFIG_RMSTP1_ENA },
+       { SMSTPCR2, MSTP2_BITS, CONFIG_SMSTP2_ENA,
+               RMSTPCR2, MSTP2_BITS, CONFIG_RMSTP2_ENA },
+       { SMSTPCR3, MSTP3_BITS, CONFIG_SMSTP3_ENA,
+               RMSTPCR3, MSTP3_BITS, CONFIG_RMSTP3_ENA },
+       { SMSTPCR4, MSTP4_BITS, CONFIG_SMSTP4_ENA,
+               RMSTPCR4, MSTP4_BITS, CONFIG_RMSTP4_ENA },
+       { SMSTPCR5, MSTP5_BITS, CONFIG_SMSTP5_ENA,
+               RMSTPCR5, MSTP5_BITS, CONFIG_RMSTP5_ENA },
+       /* No MSTP6 */
+       { SMSTPCR7, MSTP7_BITS, CONFIG_SMSTP7_ENA,
+               RMSTPCR7, MSTP7_BITS, CONFIG_RMSTP7_ENA },
+       { SMSTPCR8, MSTP8_BITS, CONFIG_SMSTP8_ENA,
+               RMSTPCR8, MSTP8_BITS, CONFIG_RMSTP8_ENA },
+       { SMSTPCR9, MSTP9_BITS, CONFIG_SMSTP9_ENA,
+               RMSTPCR9, MSTP9_BITS, CONFIG_RMSTP9_ENA },
+       { SMSTPCR10, MSTP10_BITS, CONFIG_SMSTP10_ENA,
+                RMSTPCR10, MSTP10_BITS, CONFIG_RMSTP10_ENA },
+       { SMSTPCR11, MSTP11_BITS, CONFIG_SMSTP1_ENA,
+                RMSTPCR11, MSTP11_BITS, CONFIG_RMSTP11_ENA },
+};
+
+void arch_preboot_os(void)
+{
+       int i;
+
+       /* stop TMU0 */
+       mstp_clrbits_le32(TMU_BASE + TSTR0, TMU_BASE + TSTR0, TSTR0_STR0);
+
+       /* Stop module clock */
+       for (i = 0; i < ARRAY_SIZE(mstptbl); i++) {
+               mstp_setclrbits_le32(mstptbl[i].s_addr, mstptbl[i].s_dis,
+                                    mstptbl[i].s_ena);
+               mstp_setclrbits_le32(mstptbl[i].r_addr, mstptbl[i].r_dis,
+                                    mstptbl[i].r_ena);
+       }
+}
index 5eb2923fb9aaf23adc0677ea666740ec6bd5a04a..10b8786411f9b5729c5ffcb2be207c1241052138 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_RSK7203
 
-config SYS_CPU
-       default "sh2"
-
 config SYS_BOARD
        default "rsk7203"
 
index af71295a259a71d3767ab6f4dfcea0b055681583..755d2896fb1b846d70b760c079b42ef7ba9ef6a6 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_RSK7264
 
-config SYS_CPU
-       default "sh2"
-
 config SYS_BOARD
        default "rsk7264"
 
index cc0092c2fbbc31e0af7b08e273d5fdbfe15d371d..ab5cd0e38fecd85df880008d39eed587a1a07999 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_RSK7269
 
-config SYS_CPU
-       default "sh2"
-
 config SYS_BOARD
        default "rsk7269"
 
index 7c6aae94bf40a4fc290935bf1e4a45f60d8202b2..7f40888336eb154436053b2cfa98e826d7929089 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_SH7752EVB
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "sh7752evb"
 
index 8abdea0b13a59c74bfc77308d89577fe9c9754ff..be889248a8e78378199382e2b28a5883b1bab92c 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_SH7753EVB
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "sh7753evb"
 
index 97d966feb2af253fcc49fcf253042def518ae3b5..3fba80ddcab22a0d1a13f2ad45b396b06ee46d5e 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_SH7757LCR
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "sh7757lcr"
 
index d5129881387fbe542a60117c15f84b6218b3599e..101d2b5a32e491950fe7dfc58b4dbb1e74f24234 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_SH7763RDP
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "sh7763rdp"
 
index 15787e645e4a2375f23e7aaa02cb25ad286b3898..e204c76ef56351c5f0b2e080ef659335c88e9486 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_SH7785LCR
 
-config SYS_CPU
-       default "sh4"
-
 config SYS_BOARD
        default "sh7785lcr"
 
diff --git a/board/sacsng/Kconfig b/board/sacsng/Kconfig
deleted file mode 100644 (file)
index 1646425..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_SACSNG
-
-config SYS_BOARD
-       default "sacsng"
-
-config SYS_CONFIG_NAME
-       default "sacsng"
-
-endif
diff --git a/board/sacsng/MAINTAINERS b/board/sacsng/MAINTAINERS
deleted file mode 100644 (file)
index b76e462..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SACSNG BOARD
-#M:    Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
-S:     Orphan (since 2014-06)
-F:     board/sacsng/
-F:     include/configs/sacsng.h
-F:     configs/sacsng_defconfig
diff --git a/board/sacsng/Makefile b/board/sacsng/Makefile
deleted file mode 100644 (file)
index 95e6b8d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := sacsng.o flash.o clkinit.o
diff --git a/board/sacsng/clkinit.c b/board/sacsng/clkinit.c
deleted file mode 100644 (file)
index 2a28037..0000000
+++ /dev/null
@@ -1,1009 +0,0 @@
-/*
- * (C) Copyright 2002
- * Custom IDEAS, Inc. <www.cideas.com>
- * Jon Diekema <diekema@cideas.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/cpm_8260.h>
-#include <configs/sacsng.h>
-
-#include "clkinit.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int Daq64xSampling = 0;
-
-
-void Daq_BRG_Reset(uint brg)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     volatile uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-     *brg_ptr |=  CPM_BRG_RST;
-     *brg_ptr &= ~CPM_BRG_RST;
-}
-
-void Daq_BRG_Disable(uint brg)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     volatile uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-     *brg_ptr &= ~CPM_BRG_EN;
-}
-
-void Daq_BRG_Enable(uint brg)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     volatile uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-     *brg_ptr |= CPM_BRG_EN;
-}
-
-uint Daq_BRG_Get_Div16(uint brg)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-
-     if (*brg_ptr & CPM_BRG_DIV16) {
-        /* DIV16 active */
-        return true;
-     }
-     else {
-        /* DIV16 inactive */
-        return false;
-     }
-}
-
-void Daq_BRG_Set_Div16(uint brg, uint div16)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-
-     if (div16) {
-        /* DIV16 active */
-        *brg_ptr |=  CPM_BRG_DIV16;
-     }
-     else {
-        /* DIV16 inactive */
-        *brg_ptr &= ~CPM_BRG_DIV16;
-     }
-}
-
-uint Daq_BRG_Get_Count(uint brg)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     uint *brg_ptr;
-     uint brg_cnt;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-
-     /* Get the clock divider
-      *
-      * Note: A clock divider of 0 means divide by 1,
-      *       therefore we need to add 1 to the count.
-      */
-     brg_cnt = (*brg_ptr & CPM_BRG_CD_MASK) >> CPM_BRG_DIV16_SHIFT;
-     brg_cnt++;
-     if (*brg_ptr & CPM_BRG_DIV16) {
-        brg_cnt *= 16;
-     }
-
-    return (brg_cnt);
-}
-
-void Daq_BRG_Set_Count(uint brg, uint brg_cnt)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-
-     /*
-      * Note: A clock divider of 0 means divide by 1,
-      *         therefore we need to subtract 1 from the count.
-      */
-     if (brg_cnt > 4096) {
-        /* Prescale = Divide by 16 */
-        *brg_ptr = (*brg_ptr & ~CPM_BRG_CD_MASK)   |
-            (((brg_cnt / 16) - 1) << CPM_BRG_DIV16_SHIFT);
-        *brg_ptr |= CPM_BRG_DIV16;
-     }
-     else {
-        /* Prescale = Divide by 1 */
-        *brg_ptr = (*brg_ptr & ~CPM_BRG_CD_MASK) |
-            ((brg_cnt - 1) << CPM_BRG_DIV16_SHIFT);
-        *brg_ptr &= ~CPM_BRG_DIV16;
-     }
-}
-
-uint Daq_BRG_Get_ExtClk(uint brg)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-
-     return ((*brg_ptr & CPM_BRG_EXTC_MASK) >> CPM_BRG_EXTC_SHIFT);
-}
-
-char* Daq_BRG_Get_ExtClk_Description(uint brg)
-{
-     uint extc;
-
-     extc = Daq_BRG_Get_ExtClk(brg);
-
-     switch (brg + 1) {
-        case 1:
-        case 2:
-        case 5:
-        case 6: {
-            switch (extc) {
-                case 0: {
-                    return ("BRG_INT");
-                }
-                case 1: {
-                    return ("CLK3");
-                }
-                case 2: {
-                    return ("CLK5");
-                }
-            }
-            return ("??1245??");
-        }
-        case 3:
-        case 4:
-        case 7:
-        case 8: {
-            switch (extc) {
-                case 0: {
-                    return ("BRG_INT");
-                }
-                case 1: {
-                    return ("CLK9");
-                }
-                case 2: {
-                    return ("CLK15");
-                }
-            }
-            return ("??3478??");
-        }
-     }
-     return ("??9876??");
-}
-
-void Daq_BRG_Set_ExtClk(uint brg, uint extc)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     uint *brg_ptr;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg -= 4;
-     }
-     brg_ptr += brg;
-
-     *brg_ptr = (*brg_ptr & ~CPM_BRG_EXTC_MASK) |
-               ((extc << CPM_BRG_EXTC_SHIFT) & CPM_BRG_EXTC_MASK);
-}
-
-uint Daq_BRG_Rate(uint brg)
-{
-     volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-     uint *brg_ptr;
-     uint brg_cnt;
-     uint brg_freq = 0;
-
-     brg_ptr = (uint *)&immr->im_brgc1;
-     brg_ptr += brg;
-     if (brg >= 5) {
-        brg_ptr = (uint *)&immr->im_brgc5;
-        brg_ptr += (brg - 4);
-     }
-
-    brg_cnt = Daq_BRG_Get_Count(brg);
-
-    switch (Daq_BRG_Get_ExtClk(brg)) {
-       case CPM_BRG_EXTC_CLK3:
-       case CPM_BRG_EXTC_CLK5: {
-           brg_freq = brg_cnt;
-           break;
-       }
-       default: {
-           brg_freq = (uint)BRG_INT_CLK / brg_cnt;
-       }
-    }
-    return (brg_freq);
-}
-
-uint Daq_Get_SampleRate(void)
-{
-     /*
-      * Read the BRG's to return the actual sample rate.
-      */
-     return (Daq_BRG_Rate(MCLK_BRG) / (MCLK_DIVISOR * SCLK_DIVISOR));
-}
-
-void Daq_Init_Clocks(int sample_rate, int sample_64x)
-{
-    volatile ioport_t *iopa = ioport_addr((immap_t *)CONFIG_SYS_IMMR, 0 /* port A */);
-    uint mclk_divisor; /* MCLK divisor */
-    int  flag;         /* Interrupt state */
-
-    /* Save off the clocking data */
-    Daq64xSampling = sample_64x;
-
-    /*
-     * Limit the sample rate to some sensible values.
-     */
-    if (sample_rate > MAX_64x_SAMPLE_RATE) {
-       sample_rate = MAX_64x_SAMPLE_RATE;
-    }
-    if (sample_rate < MIN_SAMPLE_RATE) {
-       sample_rate = MIN_SAMPLE_RATE;
-    }
-
-    /*
-     * Initialize the MCLK/SCLK/LRCLK baud rate generators.
-     */
-
-    /* Setup MCLK */
-    Daq_BRG_Set_ExtClk(MCLK_BRG, CPM_BRG_EXTC_BRGCLK);
-
-    /* Setup SCLK */
-#   ifdef RUN_SCLK_ON_BRG_INT
-       Daq_BRG_Set_ExtClk(SCLK_BRG, CPM_BRG_EXTC_BRGCLK);
-#   else
-       Daq_BRG_Set_ExtClk(SCLK_BRG, CPM_BRG_EXTC_CLK9);
-#   endif
-
-    /* Setup LRCLK */
-#   ifdef RUN_LRCLK_ON_BRG_INT
-       Daq_BRG_Set_ExtClk(LRCLK_BRG, CPM_BRG_EXTC_BRGCLK);
-#   else
-       Daq_BRG_Set_ExtClk(LRCLK_BRG, CPM_BRG_EXTC_CLK5);
-#   endif
-
-    /*
-     * Dynamically adjust MCLK based on the new sample rate.
-     */
-
-    /* Compute the divisors */
-    mclk_divisor = BRG_INT_CLK / (sample_rate * MCLK_DIVISOR * SCLK_DIVISOR);
-
-    /*
-     * Disable interrupt and save the current state
-     */
-    flag = disable_interrupts();
-
-    /* Setup MCLK */
-    Daq_BRG_Set_Count(MCLK_BRG, mclk_divisor);
-
-    /* Setup SCLK */
-#   ifdef RUN_SCLK_ON_BRG_INT
-       Daq_BRG_Set_Count(SCLK_BRG, mclk_divisor * MCLK_DIVISOR);
-#   else
-       Daq_BRG_Set_Count(SCLK_BRG, MCLK_DIVISOR);
-#   endif
-
-#   ifdef RUN_LRCLK_ON_BRG_INT
-       Daq_BRG_Set_Count(LRCLK_BRG,
-                         mclk_divisor * MCLK_DIVISOR * SCLK_DIVISOR);
-#   else
-       Daq_BRG_Set_Count(LRCLK_BRG, SCLK_DIVISOR);
-#   endif
-
-    /*
-     * Restore the Interrupt state
-     */
-     if (flag) {
-        enable_interrupts();
-     }
-
-    /* Enable the clock drivers */
-    iopa->pdat &= ~SLRCLK_EN_MASK;
-}
-
-void Daq_Stop_Clocks(void)
-
-{
-#ifdef TIGHTEN_UP_BRG_TIMING
-    volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-    register uint mclk_brg;       /* MCLK  BRG value */
-    register uint sclk_brg;       /* SCLK  BRG value */
-    register uint lrclk_brg;      /* LRCLK BRG value */
-    unsigned long flag;           /* Interrupt flags */
-#endif
-
-#   ifdef TIGHTEN_UP_BRG_TIMING
-       /*
-        * Obtain MCLK BRG reset/disabled value
-        */
-#       if (MCLK_BRG == 0)
-           mclk_brg = (*IM_BRGC1 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 1)
-           mclk_brg = (*IM_BRGC2 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 2)
-           mclk_brg = (*IM_BRGC3 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 3)
-           mclk_brg = (*IM_BRGC4 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 4)
-           mclk_brg = (*IM_BRGC5 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 5)
-           mclk_brg = (*IM_BRGC6 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 6)
-           mclk_brg = (*IM_BRGC7 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 7)
-           mclk_brg = (*IM_BRGC8 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-
-       /*
-        * Obtain SCLK BRG reset/disabled value
-        */
-#       if (SCLK_BRG == 0)
-           sclk_brg = (*IM_BRGC1 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 1)
-           sclk_brg = (*IM_BRGC2 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 2)
-           sclk_brg = (*IM_BRGC3 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 3)
-           sclk_brg = (*IM_BRGC4 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 4)
-           sclk_brg = (*IM_BRGC5 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 5)
-           sclk_brg = (*IM_BRGC6 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 6)
-           sclk_brg = (*IM_BRGC7 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 7)
-           sclk_brg = (*IM_BRGC8 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-
-       /*
-        * Obtain LRCLK BRG reset/disabled value
-        */
-#       if (LRCLK_BRG == 0)
-           lrclk_brg = (*IM_BRGC1 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 1)
-           lrclk_brg = (*IM_BRGC2 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 2)
-           lrclk_brg = (*IM_BRGC3 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 3)
-           lrclk_brg = (*IM_BRGC4 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 4)
-           lrclk_brg = (*IM_BRGC5 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 5)
-           lrclk_brg = (*IM_BRGC6 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 6)
-           lrclk_brg = (*IM_BRGC7 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 7)
-           lrclk_brg = (*IM_BRGC8 | CPM_BRG_RST) & ~CPM_BRG_EN;
-#       endif
-
-       /*
-        * Disable interrupt and save the current state
-        */
-       flag = disable_interrupts();
-
-       /*
-        * Set reset on MCLK BRG
-        */
-#       if (MCLK_BRG == 0)
-           *IM_BRGC1 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 1)
-           *IM_BRGC2 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 2)
-           *IM_BRGC3 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 3)
-           *IM_BRGC4 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 4)
-           *IM_BRGC5 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 5)
-           *IM_BRGC6 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 6)
-           *IM_BRGC7 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 7)
-           *IM_BRGC8 = mclk_brg;
-#       endif
-
-       /*
-        * Set reset on SCLK BRG
-        */
-#       if (SCLK_BRG == 0)
-           *IM_BRGC1 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 1)
-           *IM_BRGC2 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 2)
-           *IM_BRGC3 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 3)
-           *IM_BRGC4 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 4)
-           *IM_BRGC5 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 5)
-           *IM_BRGC6 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 6)
-           *IM_BRGC7 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 7)
-           *IM_BRGC8 = sclk_brg;
-#       endif
-
-       /*
-        * Set reset on LRCLK BRG
-        */
-#       if (LRCLK_BRG == 0)
-           *IM_BRGC1 = lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 1)
-           *IM_BRGC2 = lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 2)
-           *IM_BRGC3 = lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 3)
-           *IM_BRGC4 = lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 4)
-           *IM_BRGC5 = lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 5)
-           *IM_BRGC6 = lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 6)
-           *IM_BRGC7 = lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 7)
-           *IM_BRGC8 = lrclk_brg;
-#       endif
-
-       /*
-        * Clear reset on MCLK BRG
-        */
-#       if (MCLK_BRG == 0)
-           *IM_BRGC1 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (MCLK_BRG == 1)
-           *IM_BRGC2 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (MCLK_BRG == 2)
-           *IM_BRGC3 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (MCLK_BRG == 3)
-           *IM_BRGC4 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (MCLK_BRG == 4)
-           *IM_BRGC5 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (MCLK_BRG == 5)
-           *IM_BRGC6 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (MCLK_BRG == 6)
-           *IM_BRGC7 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (MCLK_BRG == 7)
-           *IM_BRGC8 = mclk_brg & ~CPM_BRG_RST;
-#       endif
-
-       /*
-        * Clear reset on SCLK BRG
-        */
-#       if (SCLK_BRG == 0)
-           *IM_BRGC1 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (SCLK_BRG == 1)
-           *IM_BRGC2 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (SCLK_BRG == 2)
-           *IM_BRGC3 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (SCLK_BRG == 3)
-           *IM_BRGC4 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (SCLK_BRG == 4)
-           *IM_BRGC5 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (SCLK_BRG == 5)
-           *IM_BRGC6 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (SCLK_BRG == 6)
-           *IM_BRGC7 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (SCLK_BRG == 7)
-           *IM_BRGC8 = sclk_brg & ~CPM_BRG_RST;
-#       endif
-
-       /*
-        * Clear reset on LRCLK BRG
-        */
-#       if (LRCLK_BRG == 0)
-           *IM_BRGC1 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (LRCLK_BRG == 1)
-           *IM_BRGC2 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (LRCLK_BRG == 2)
-           *IM_BRGC3 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (LRCLK_BRG == 3)
-           *IM_BRGC4 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (LRCLK_BRG == 4)
-           *IM_BRGC5 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (LRCLK_BRG == 5)
-           *IM_BRGC6 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (LRCLK_BRG == 6)
-           *IM_BRGC7 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-#       if (LRCLK_BRG == 7)
-           *IM_BRGC8 = lrclk_brg & ~CPM_BRG_RST;
-#       endif
-
-       /*
-        * Restore the Interrupt state
-        */
-       if (flag) {
-           enable_interrupts();
-       }
-#   else
-       /*
-        * Reset the clocks
-        */
-       Daq_BRG_Reset(MCLK_BRG);
-       Daq_BRG_Reset(SCLK_BRG);
-       Daq_BRG_Reset(LRCLK_BRG);
-#   endif
-}
-
-void Daq_Start_Clocks(int sample_rate)
-
-{
-#ifdef TIGHTEN_UP_BRG_TIMING
-    volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-
-    register uint mclk_brg;       /* MCLK  BRG value */
-    register uint sclk_brg;       /* SCLK  BRG value */
-    register uint temp_lrclk_brg; /* Temporary LRCLK BRG value */
-    register uint real_lrclk_brg; /* Permanent LRCLK BRG value */
-    uint          lrclk_brg;      /* LRCLK BRG value */
-    unsigned long flags;          /* Interrupt flags */
-    uint          sclk_cnt;       /* SCLK count */
-    uint          delay_cnt;      /* Delay count */
-#endif
-
-#   ifdef TIGHTEN_UP_BRG_TIMING
-       /*
-        * Obtain the enabled MCLK BRG value
-        */
-#       if (MCLK_BRG == 0)
-           mclk_brg = (*IM_BRGC1 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 1)
-           mclk_brg = (*IM_BRGC2 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 2)
-           mclk_brg = (*IM_BRGC3 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 3)
-           mclk_brg = (*IM_BRGC4 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 4)
-           mclk_brg = (*IM_BRGC5 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 5)
-           mclk_brg = (*IM_BRGC6 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 6)
-           mclk_brg = (*IM_BRGC7 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (MCLK_BRG == 7)
-           mclk_brg = (*IM_BRGC8 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-
-       /*
-        * Obtain the enabled SCLK BRG value
-        */
-#       if (SCLK_BRG == 0)
-           sclk_brg = (*IM_BRGC1 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 1)
-           sclk_brg = (*IM_BRGC2 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 2)
-           sclk_brg = (*IM_BRGC3 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 3)
-           sclk_brg = (*IM_BRGC4 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 4)
-           sclk_brg = (*IM_BRGC5 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 5)
-           sclk_brg = (*IM_BRGC6 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 6)
-           sclk_brg = (*IM_BRGC7 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (SCLK_BRG == 7)
-           sclk_brg = (*IM_BRGC8 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-
-       /*
-        * Obtain the enabled LRCLK BRG value
-        */
-#       if (LRCLK_BRG == 0)
-           lrclk_brg = (*IM_BRGC1 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 1)
-           lrclk_brg = (*IM_BRGC2 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 2)
-           lrclk_brg = (*IM_BRGC3 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 3)
-           lrclk_brg = (*IM_BRGC4 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 4)
-           lrclk_brg = (*IM_BRGC5 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 5)
-           lrclk_brg = (*IM_BRGC6 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 6)
-           lrclk_brg = (*IM_BRGC7 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-#       if (LRCLK_BRG == 7)
-           lrclk_brg = (*IM_BRGC8 & ~CPM_BRG_RST) | CPM_BRG_EN;
-#       endif
-
-       /* Save off the real LRCLK value */
-       real_lrclk_brg = lrclk_brg;
-
-       /* Obtain the current SCLK count */
-       sclk_cnt  = ((sclk_brg & 0x00001FFE) >> 1) + 1;
-
-       /* Compute the delay as a function of SCLK count */
-       delay_cnt = ((sclk_cnt / 4) - 2) * 10 + 6;
-       if (DaqSampleRate == 43402) {
-         delay_cnt++;
-       }
-
-       /* Clear out the count */
-       temp_lrclk_brg = sclk_brg & ~0x00001FFE;
-
-       /* Insert the count */
-       temp_lrclk_brg |= ((delay_cnt + (sclk_cnt / 2) - 1) << 1) &  0x00001FFE;
-
-       /*
-        * Disable interrupt and save the current state
-        */
-       flag = disable_interrupts();
-
-       /*
-        * Enable MCLK BRG
-        */
-#       if (MCLK_BRG == 0)
-           *IM_BRGC1 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 1)
-           *IM_BRGC2 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 2)
-           *IM_BRGC3 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 3)
-           *IM_BRGC4 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 4)
-           *IM_BRGC5 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 5)
-           *IM_BRGC6 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 6)
-           *IM_BRGC7 = mclk_brg;
-#       endif
-#       if (MCLK_BRG == 7)
-           *IM_BRGC8 = mclk_brg;
-#       endif
-
-       /*
-        * Enable SCLK BRG
-        */
-#       if (SCLK_BRG == 0)
-           *IM_BRGC1 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 1)
-           *IM_BRGC2 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 2)
-           *IM_BRGC3 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 3)
-           *IM_BRGC4 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 4)
-           *IM_BRGC5 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 5)
-           *IM_BRGC6 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 6)
-           *IM_BRGC7 = sclk_brg;
-#       endif
-#       if (SCLK_BRG == 7)
-           *IM_BRGC8 = sclk_brg;
-#       endif
-
-       /*
-        * Enable LRCLK BRG (1st time - temporary)
-        */
-#       if (LRCLK_BRG == 0)
-           *IM_BRGC1 = temp_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 1)
-           *IM_BRGC2 = temp_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 2)
-           *IM_BRGC3 = temp_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 3)
-           *IM_BRGC4 = temp_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 4)
-           *IM_BRGC5 = temp_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 5)
-           *IM_BRGC6 = temp_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 6)
-           *IM_BRGC7 = temp_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 7)
-           *IM_BRGC8 = temp_lrclk_brg;
-#       endif
-
-       /*
-        * Enable LRCLK BRG (2nd time - permanent)
-        */
-#       if (LRCLK_BRG == 0)
-           *IM_BRGC1 = real_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 1)
-           *IM_BRGC2 = real_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 2)
-           *IM_BRGC3 = real_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 3)
-           *IM_BRGC4 = real_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 4)
-           *IM_BRGC5 = real_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 5)
-           *IM_BRGC6 = real_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 6)
-           *IM_BRGC7 = real_lrclk_brg;
-#       endif
-#       if (LRCLK_BRG == 7)
-           *IM_BRGC8 = real_lrclk_brg;
-#       endif
-
-       /*
-        * Restore the Interrupt state
-        */
-       if (flag) {
-           enable_interrupts();
-       }
-#   else
-       /*
-        * Enable the clocks
-        */
-       Daq_BRG_Enable(LRCLK_BRG);
-       Daq_BRG_Enable(SCLK_BRG);
-       Daq_BRG_Enable(MCLK_BRG);
-#   endif
-}
-
-void Daq_Display_Clocks(void)
-
-{
-    volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-    uint mclk_divisor; /* Detected MCLK divisor */
-    uint sclk_divisor; /* Detected SCLK divisor */
-
-    printf("\nBRG:\n");
-    if (immr->im_brgc4 != 0) {
-       printf("\tbrgc4\t0x%08x @ 0x%08x, %5d count, %d extc, %8s,  MCLK\n",
-              immr->im_brgc4,
-              (uint)&(immr->im_brgc4),
-              Daq_BRG_Get_Count(3),
-              Daq_BRG_Get_ExtClk(3),
-              Daq_BRG_Get_ExtClk_Description(3));
-    }
-    if (immr->im_brgc8 != 0) {
-       printf("\tbrgc8\t0x%08x @ 0x%08x, %5d count, %d extc, %8s,  SCLK\n",
-              immr->im_brgc8,
-              (uint)&(immr->im_brgc8),
-              Daq_BRG_Get_Count(7),
-              Daq_BRG_Get_ExtClk(7),
-              Daq_BRG_Get_ExtClk_Description(7));
-    }
-    if (immr->im_brgc6 != 0) {
-       printf("\tbrgc6\t0x%08x @ 0x%08x, %5d count, %d extc, %8s,  LRCLK\n",
-              immr->im_brgc6,
-              (uint)&(immr->im_brgc6),
-              Daq_BRG_Get_Count(5),
-              Daq_BRG_Get_ExtClk(5),
-              Daq_BRG_Get_ExtClk_Description(5));
-    }
-    if (immr->im_brgc1 != 0) {
-       printf("\tbrgc1\t0x%08x @ 0x%08x, %5d count, %d extc, %8s,  SMC1\n",
-              immr->im_brgc1,
-              (uint)&(immr->im_brgc1),
-              Daq_BRG_Get_Count(0),
-              Daq_BRG_Get_ExtClk(0),
-              Daq_BRG_Get_ExtClk_Description(0));
-    }
-    if (immr->im_brgc2 != 0) {
-       printf("\tbrgc2\t0x%08x @ 0x%08x, %5d count, %d extc, %8s,  SMC2\n",
-              immr->im_brgc2,
-              (uint)&(immr->im_brgc2),
-              Daq_BRG_Get_Count(1),
-              Daq_BRG_Get_ExtClk(1),
-              Daq_BRG_Get_ExtClk_Description(1));
-    }
-    if (immr->im_brgc3 != 0) {
-       printf("\tbrgc3\t0x%08x @ 0x%08x, %5d count, %d extc, %8s,  SCC1\n",
-              immr->im_brgc3,
-              (uint)&(immr->im_brgc3),
-              Daq_BRG_Get_Count(2),
-              Daq_BRG_Get_ExtClk(2),
-              Daq_BRG_Get_ExtClk_Description(2));
-    }
-    if (immr->im_brgc5 != 0) {
-       printf("\tbrgc5\t0x%08x @ 0x%08x, %5d count, %d extc, %8s\n",
-              immr->im_brgc5,
-              (uint)&(immr->im_brgc5),
-              Daq_BRG_Get_Count(4),
-              Daq_BRG_Get_ExtClk(4),
-              Daq_BRG_Get_ExtClk_Description(4));
-    }
-    if (immr->im_brgc7 != 0) {
-       printf("\tbrgc7\t0x%08x @ 0x%08x, %5d count, %d extc, %8s\n",
-              immr->im_brgc7,
-              (uint)&(immr->im_brgc7),
-              Daq_BRG_Get_Count(6),
-              Daq_BRG_Get_ExtClk(6),
-              Daq_BRG_Get_ExtClk_Description(6));
-    }
-
-#   ifdef RUN_SCLK_ON_BRG_INT
-       mclk_divisor = Daq_BRG_Rate(MCLK_BRG) / Daq_BRG_Rate(SCLK_BRG);
-#   else
-       mclk_divisor = Daq_BRG_Get_Count(SCLK_BRG);
-#   endif
-#   ifdef RUN_LRCLK_ON_BRG_INT
-       sclk_divisor = Daq_BRG_Rate(SCLK_BRG) / Daq_BRG_Rate(LRCLK_BRG);
-#   else
-       sclk_divisor = Daq_BRG_Get_Count(LRCLK_BRG);
-#   endif
-
-    printf("\nADC/DAC Clocking (%d/%d):\n", sclk_divisor, mclk_divisor);
-    printf("\tMCLK  %8d Hz, or %3dx SCLK, or %3dx LRCLK\n",
-          Daq_BRG_Rate(MCLK_BRG),
-          mclk_divisor,
-          mclk_divisor * sclk_divisor);
-#   ifdef RUN_SCLK_ON_BRG_INT
-       printf("\tSCLK  %8d Hz, or %3dx LRCLK\n",
-              Daq_BRG_Rate(SCLK_BRG),
-              sclk_divisor);
-#   else
-       printf("\tSCLK  %8d Hz, or %3dx LRCLK\n",
-              Daq_BRG_Rate(MCLK_BRG) / mclk_divisor,
-              sclk_divisor);
-#   endif
-#   ifdef RUN_LRCLK_ON_BRG_INT
-       printf("\tLRCLK %8d Hz\n",
-              Daq_BRG_Rate(LRCLK_BRG));
-#   else
-#       ifdef RUN_SCLK_ON_BRG_INT
-           printf("\tLRCLK %8d Hz\n",
-                  Daq_BRG_Rate(SCLK_BRG) / sclk_divisor);
-#       else
-           printf("\tLRCLK %8d Hz\n",
-                  Daq_BRG_Rate(MCLK_BRG) / (mclk_divisor * sclk_divisor));
-#       endif
-#   endif
-    printf("\n");
-}
diff --git a/board/sacsng/clkinit.h b/board/sacsng/clkinit.h
deleted file mode 100644 (file)
index 3f759dd..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * (C) Copyright 2002
- * Custom IDEAS, Inc. <www.cideas.com>
- * Jon Diekema <diekema@cideas.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define SLRCLK_EN_MASK  0x00040000 /* PA13 - SLRCLK_EN*     */
-
-#define MIN_SAMPLE_RATE       4000 /* Minimum sample rate */
-#define MAX_128x_SAMPLE_RATE 43402 /* Maximum 128x sample rate */
-#define MAX_64x_SAMPLE_RATE  86805 /* Maximum  64x sample rate */
-
-#define KHZ          ((uint)1000)
-#define MHZ          ((uint)(1000 * KHZ))
-
-#define MCLK_BRG     3        /* MCLK, Master CLocK for the A/D & D/A   */
-#define SCLK_BRG     7        /* SCLK, Sample CLocK for the A/D & D/A   */
-#define LRCLK_BRG    5        /* LRCLK, L/R CLocK for the A/D & D/A     */
-                             /*   0 == BRG1 (used for SMC1)            */
-                             /*   1 == BRG2 (used for SMC2)            */
-                             /*   2 == BRG3 (used for SCC1)            */
-                             /*   3 == BRG4 (MCLK)                     */
-                             /*   4 == BRG5                            */
-                             /*   5 == BRG6 (LRCLK)                    */
-                             /*   6 == BRG7                            */
-                             /*   7 == BRG8 (SCLK)                     */
-
-#define MCLK_DIVISOR  4       /*  SCLK = MCLK / MCLK_DIVISOR */
-#define SCLK_DIVISOR (Daq64xSampling ? 64 : 128)
-                             /* LRCLK = SCLK / SCLK_DIVISOR */
-
-#define TIGHTEN_UP_BRG_EN_TIMING /* Tighten up the BRG enable timing      */
-#define RUN_SCLK_ON_BRG_INT      /* Run SCLK on BRG_INT instead of MCLK   */
-                                /* The 8260 (Mask B.3) seems to have     */
-                                /* problems generating SCLK from MCLK    */
-                                /* via CLK9.                             */
-#define RUN_LRCLK_ON_BRG_INT     /* Run LRCLK on BRG_INT instead of SCLK  */
-                                /* The 8260 (Mask B.3) seems to have     */
-                                /* problems generating LRCLK from SCLK   */
-
-#define NUM_LRCLKS_TO_STABILIZE 1  /* Number of LRCLK period (sample)     */
-                                  /* to wait for the clock to stabilize  */
-
-#define CPM_CLK      (gd->bd->bi_cpmfreq)
-#define DFBRG        4
-#define BRG_INT_CLK  (CPM_CLK * 2 / DFBRG)
-                             /* BRG = CPM * 2 / DFBRG (Sect 9.8) */
-                             /* BRG = CPM * 2 / 4                */
-                             /* BRG = CPM / 2                    */
-
-#define CPM_BRG_EXTC_MASK      ((uint)0x0000C000)
-#define CPM_BRG_EXTC_SHIFT      14
-
-#define CPM_BRG_DIV16_MASK     ((uint)0x00000001)
-#define CPM_BRG_DIV16_SHIFT     1
-
-#define CPM_BRG_EXTC_BRGCLK     0
-#define CPM_BRG_EXTC_CLK3       1
-#define CPM_BRG_EXTC_CLK9       CPM_BRG_EXTC_CLK3
-#define CPM_BRG_EXTC_CLK5       2
-#define CPM_BRG_EXTC_CLK15      CPM_BRG_EXTC_CLK5
-
-#define IM_BRGC1 ((uint *)0xf00119f0)
-#define IM_BRGC2 ((uint *)0xf00119f4)
-#define IM_BRGC3 ((uint *)0xf00119f8)
-#define IM_BRGC4 ((uint *)0xf00119fc)
-#define IM_BRGC5 ((uint *)0xf00115f0)
-#define IM_BRGC6 ((uint *)0xf00115f4)
-#define IM_BRGC7 ((uint *)0xf00115f8)
-#define IM_BRGC8 ((uint *)0xf00115fc)
-
-/*
- * External declarations
- */
-
-extern int Daq64xSampling;
-
-extern void Daq_BRG_Reset(uint brg);
-extern void Daq_BRG_Run(uint brg);
-
-extern void Daq_BRG_Disable(uint brg);
-extern void Daq_BRG_Enable(uint brg);
-
-extern uint Daq_BRG_Get_Div16(uint brg);
-extern void Daq_BRG_Set_Div16(uint brg, uint div16);
-
-extern uint Daq_BRG_Get_Count(uint brg);
-extern void Daq_BRG_Set_Count(uint brg, uint brg_cnt);
-
-extern uint Daq_BRG_Get_ExtClk(uint brg);
-extern char* Daq_BRG_Get_ExtClk_Description(uint brg);
-extern void Daq_BRG_Set_ExtClk(uint brg, uint extc);
-
-extern uint Daq_BRG_Rate(uint brg);
-
-extern uint Daq_Get_SampleRate(void);
-
-extern void Daq_Init_Clocks(int sample_rate, int sample_64x);
-extern void Daq_Stop_Clocks(void);
-extern void Daq_Start_Clocks(int sample_rate);
-extern void Daq_Display_Clocks(void);
diff --git a/board/sacsng/flash.c b/board/sacsng/flash.c
deleted file mode 100644 (file)
index 686fb22..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <configs/sacsng.h>
-
-
-#undef  DEBUG
-
-#ifndef        CONFIG_ENV_ADDR
-#define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-#endif
-#ifndef CONFIG_ENV_SIZE
-#define CONFIG_ENV_SIZE        CONFIG_ENV_SECT_SIZE
-#endif
-
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_short *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0, size_b1;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       size_b0 = flash_get_size((vu_short *)CONFIG_SYS_FLASH0_BASE, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       size_b1 = flash_get_size((vu_short *)CONFIG_SYS_FLASH1_BASE, &flash_info[1]);
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       if (size_b1) {
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-               /* monitor protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_SYS_MONITOR_BASE,
-                             CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                             &flash_info[1]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-               /* ENV protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             CONFIG_ENV_ADDR,
-                             CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1,
-                             &flash_info[1]);
-#endif
-       } else {
-               flash_info[1].flash_id = FLASH_UNKNOWN;
-               flash_info[1].sector_count = -1;
-       }
-
-       flash_info[0].size = size_b0;
-       flash_info[1].size = size_b1;
-
-       /*
-        * We only report the primary flash for U-Boot's use.
-        */
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("FUJITSU ");            break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM400B:      printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM400T:      printf ("AM29LV400T (4 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM800B:      printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM800T:      printf ("AM29LV800T (8 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM160B:      printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM160T:      printf ("AM29LV160T (16 Mbit, top boot sector)\n");
-                               break;
-       case FLASH_AM320B:      printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
-                               break;
-       case FLASH_AM320T:      printf ("AM29LV320T (32 Mbit, top boot sector)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_short *addr, flash_info_t *info)
-{
-       short i;
-       ushort value;
-       ulong  base = (ulong)addr;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x0555] = 0xAAAA;
-       addr[0x02AA] = 0x5555;
-       addr[0x0555] = 0x9090;
-       __asm__ __volatile__(" sync\n ");
-
-       value = addr[0];
-#ifdef DEBUG
-       printf("Flash manufacturer 0x%04X\n", value);
-#endif
-
-       if(value == (ushort)AMD_MANUFACT) {
-               info->flash_id = FLASH_MAN_AMD;
-       } else if (value == (ushort)FUJ_MANUFACT) {
-               info->flash_id = FLASH_MAN_FUJ;
-       } else {
-#ifdef DEBUG
-               printf("Unknown flash manufacturer 0x%04X\n", value);
-#endif
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];                        /* device ID            */
-#ifdef DEBUG
-       printf("Flash type 0x%04X\n", value);
-#endif
-
-       if(value == (ushort)AMD_ID_LV400T) {
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00080000;        /* => 0.5 MB            */
-       } else if(value == (ushort)AMD_ID_LV400B) {
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00080000;        /* => 0.5 MB            */
-       } else if(value == (ushort)AMD_ID_LV800T) {
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00100000;        /* => 1 MB              */
-       } else if(value == (ushort)AMD_ID_LV800B) {
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00100000;        /* => 1 MB              */
-       } else if(value == (ushort)AMD_ID_LV160T) {
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00200000;        /* => 2 MB              */
-       } else if(value == (ushort)AMD_ID_LV160B) {
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00200000;        /* => 2 MB              */
-       } else if(value == (ushort)AMD_ID_LV320T) {
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 67;
-               info->size = 0x00400000;        /* => 4 MB              */
-       } else if(value == (ushort)AMD_ID_LV320B) {
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 67;
-               info->size = 0x00400000;        /* => 4 MB              */
-       } else {
-#ifdef DEBUG
-               printf("Unknown flash type 0x%04X\n", value);
-               info->size = CONFIG_SYS_FLASH_SIZE;
-#else
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-#endif
-       }
-
-       /* set up sector start address table */
-       if (info->flash_id & FLASH_BTYPE) {
-               /* set sector offsets for bottom boot block type        */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00004000;
-               info->start[2] = base + 0x00006000;
-               info->start[3] = base + 0x00008000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + ((i - 3) * 0x00010000);
-               }
-       } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00004000;
-               info->start[i--] = base + info->size - 0x00006000;
-               info->start[i--] = base + info->size - 0x00008000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + (i * 0x00010000);
-               }
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               addr = (volatile unsigned short *)(info->start[i]);
-               info->protect[i] = addr[2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (volatile unsigned short *)info->start[0];
-
-       }
-
-       addr[0] = 0xF0F0;       /* reset bank */
-       __asm__ __volatile__(" sync\n ");
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       vu_short *addr = (vu_short*)(info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) ||
-           (info->flash_id > FLASH_AMD_COMP)) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[0x0555] = 0xAAAA;
-       addr[0x02AA] = 0x5555;
-       addr[0x0555] = 0x8080;
-       addr[0x0555] = 0xAAAA;
-       addr[0x02AA] = 0x5555;
-       __asm__ __volatile__(" sync\n ");
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr = (vu_short*)(info->start[sect]);
-                       addr[0] = 0x3030;
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last  = start;
-       addr = (vu_short*)(info->start[l_sect]);
-       while ((addr[0] & 0x0080) != 0x0080) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       addr[0] = 0xF0F0;       /* reset bank */
-                       __asm__ __volatile__(" sync\n ");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (vu_short*)info->start[0];
-       addr[0] = 0xF0F0;       /* reset bank */
-       __asm__ __volatile__(" sync\n ");
-
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_short *addr = (vu_short*)(info->start[0]);
-       ulong start;
-       int flag;
-       int j;
-
-       /* Check if Flash is (sufficiently) erased */
-       if (((*(vu_long *)dest) & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       /* The original routine was designed to write 32 bit words to
-        * 32 bit wide memory.  We have 16 bit wide memory so we do
-        * two writes.  We write the LSB first at dest+2 and then the
-        * MSB at dest (lousy big endian).
-        */
-       dest += 2;
-       for(j = 0; j < 2; j++) {
-               addr[0x0555] = 0xAAAA;
-               addr[0x02AA] = 0x5555;
-               addr[0x0555] = 0xA0A0;
-               __asm__ __volatile__(" sync\n ");
-
-               *((vu_short *)dest) = (ushort)data;
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts();
-
-               /* data polling for D7 */
-               start = get_timer (0);
-               while (*(vu_short *)dest != (ushort)data) {
-                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               return (1);
-                       }
-               }
-               dest -= 2;
-               data >>= 16;
-       }
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/sacsng/ioconfig.h b/board/sacsng/ioconfig.h
deleted file mode 100644 (file)
index ac8f152..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * I/O Port configuration table
- *
- * If conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-#ifdef SKIP
-#undef SKIP
-#endif
-
-#ifdef CONF
-#undef CONF
-#endif
-
-#ifdef DIN
-#undef DIN
-#endif
-
-#ifdef DOUT
-#undef DOUT
-#endif
-
-#ifdef GPIO
-#undef GPIO
-#endif
-
-#ifdef SPEC
-#undef SPEC
-#endif
-
-#ifdef ACTV
-#undef ACTV
-#endif
-
-#ifdef OPEN
-#undef OPEN
-#endif
-
-#define SKIP 0  /* SKIP over this port */
-#define CONF 1  /* CONFiguration the port */
-
-#define DIN  0  /* PDIRx 0: Direction IN  */
-#define DOUT 1  /* PDIRx 1: Direction OUT */
-
-#define GPIO 0  /* PPARx 0: General Purpose I/O */
-#define SPEC 1  /* PPARx 1: dedicated to a peripheral function, */
-               /*          i.e. the port has a SPECial use. */
-
-#define ACTV 0  /* PODRx 0: ACTiVely driven as an output */
-#define OPEN 1  /* PODRx 1: OPEN-drain driver */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*           conf  ppar  psor  pdir  podr  pdat */
-       /* PA31 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS8*        */
-       /* PA30 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS7*        */
-       /* PA29 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS6*        */
-       /* PA28 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS5*        */
-       /* PA27 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS4*        */
-       /* PA26 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS3*        */
-       /* PA25 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS2*        */
-       /* PA24 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* RODIS1*        */
-       /* PA23 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* ODIS_EN*       */
-       /* PA22 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* STLED2_EN*     */
-       /* PA21 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* STLED1_EN*     */
-       /* PA20 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* PLED3_EN*      */
-       /* PA19 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* PLED2_EN*      */
-       /* PA18 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* PLED1_EN*      */
-       /* PA17 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PA16 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* DAC_RST*       */
-       /* PA15 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* CH34SDATA_PU   */
-       /* PA14 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* CH12SDATA_PU   */
-       /* PA13 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* SLRCLK_EN*     */
-       /* PA12 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_4ACDC*    */
-       /* PA11 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_4TEDS*    */
-       /* PA10 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_4XTDS*    */
-       /* PA9  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_3ACDC*    */
-       /* PA8  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_3TEDS*    */
-       /* PA7  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_3XTDS*    */
-       /* PA6  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_2ACDC*    */
-       /* PA5  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_2TEDS*    */
-       /* PA4  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_2XTDS*    */
-       /* PA3  */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PA2  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_1ACDC*    */
-       /* PA1  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* MTRX_1TEDS*    */
-       /* PA0  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }  /* MTRX_1XTDS*    */
-    },
-
-    /* Port B configuration */
-    {  /*           conf  ppar  psor  pdir  podr  pdat */
-       /* PB31 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* FCC2 MII_TX_ER */
-       /* PB30 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_RX_DV */
-       /* PB29 */ { CONF, SPEC,   1,  DOUT, ACTV,   0   }, /* FCC2 MII_TX_EN */
-       /* PB28 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_RX_ER */
-       /* PB27 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_COL   */
-       /* PB26 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_CRS   */
-       /* PB25 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* FCC2 MII_TXD3  */
-       /* PB24 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* FCC2 MII_TXD2  */
-       /* PB23 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* FCC2 MII_TXD1  */
-       /* PB22 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* FCC2 MII_TXD0  */
-       /* PB21 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_RXD0  */
-       /* PB20 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_RXD1  */
-       /* PB19 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_RXD2  */
-       /* PB18 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* FCC2 MII_RXD3  */
-       /* PB17 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PB16 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PB15 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PB14 */ { CONF, SPEC,   1,  DIN,  ACTV,   0   }, /* L1RXDC1,   BSDATA_ADC12 */
-       /* PB13 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PB12 */ { CONF, SPEC,   1,  DIN,  ACTV,   0   }, /* L1RSYNCC1, LRCLK  */
-       /* PB11 */ { CONF, SPEC,   1,  DIN,  ACTV,   0   }, /* L1TXDD1,   RSDATA_DAC12 */
-       /* PB10 */ { CONF, SPEC,   1,  DIN,  ACTV,   0   }, /* L1RXDD1,   BSDATA_ADC34 */
-       /* PB9  */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PB8  */ { CONF, SPEC,   1,  DIN,  ACTV,   0   }, /* L1RSYNCD1, LRCLK  */
-       /* PB7  */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PB6  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* XCITE_SHDN     */
-       /* PB5  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* TRIGGER        */
-       /* PB4  */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* ARM            */
-       /* PB3  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }, /* pin doesn't exist */
-       /* PB2  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }, /* pin doesn't exist */
-       /* PB1  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }, /* pin doesn't exist */
-       /* PB0  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {  /*            conf ppar  psor  pdir  podr  pdat */
-       /* PC31 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC30 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC29 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* CLK3,  MCLK    */
-       /* PC28 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* TOUT2*         */
-#ifdef QQQ
-       /* PC28 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* TOUT2*         */
-#endif
-       /* PC27 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* CLK5,  SCLK    */
-       /* PC26 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC25 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* CLK7,  SCLK    */
-       /* PC24 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC23 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* CLK9,  MCLK    */
-       /* PC22 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC21 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* BRGO6 (LRCLK)  */
-       /* PC20 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC19 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* CLK13, MII_RXCLK  */
-       /* PC18 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* CLK14, MII_TXCLK  */
-       /* PC17 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* BRGO8 (SCLK)   */
-       /* PC16 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC15 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* SMC2_TX        */
-       /* PC14 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC13 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC12 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* TDM_STRB3      */
-       /* PC11 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC10 */ { CONF, SPEC,   1,  DOUT, ACTV,   0   }, /* TDM_STRB4      */
-       /* PC9  */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* BPDIS_IN3      */
-       /* PC8  */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* BPDIS_IN2      */
-       /* PC7  */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* BPDIS_IN1      */
-       /* PC6  */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PC5  */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* BTST_IN2*      */
-       /* PC4  */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* BTST_IN1*      */
-       /* PC3  */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* MUSH_STAT      */
-       /* PC2  */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* OUTDRV_STAT    */
-       /* PC1  */ { CONF, GPIO,   0,  DOUT, OPEN,   1   }, /* PHY_MDIO       */
-       /* PC0  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* PHY_MDC        */
-    },
-
-    /* Port D */
-    {  /*            conf ppar  psor  pdir  podr  pdat */
-       /* PD31 */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* SCC1_RX        */
-       /* PD30 */ { CONF, SPEC,   1,  DOUT, ACTV,   0   }, /* SCC1_TX        */
-       /* PD29 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD28 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD27 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD26 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD25 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD24 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD23 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD22 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD21 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD20 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* SPI_ADC_CS*    */
-       /* PD19 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* SPI_DAC_CS*    */
-#if defined(CONFIG_SOFT_SPI)
-       /* PD18 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* SPI_CLK        */
-       /* PD17 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* SPI_MOSI       */
-       /* PD16 */ { CONF, GPIO,   0,  DIN,  ACTV,   0   }, /* SPI_MISO       */
-#else
-       /* PD18 */ { CONF, SPEC,   1,  DOUT, ACTV,   0   }, /* SPI_CLK        */
-       /* PD17 */ { CONF, SPEC,   1,  DOUT, ACTV,   0   }, /* SPI_MOSI       */
-       /* PD16 */ { CONF, SPEC,   1,  DIN,  ACTV,   0   }, /* SPI_MISO       */
-#endif
-#if defined(CONFIG_SYS_I2C_SOFT)
-       /* PD15 */ { CONF, GPIO,   0,  DOUT, OPEN,   1   }, /* I2C_SDA        */
-       /* PD14 */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* I2C_SCL        */
-#else
-#if defined(CONFIG_HARD_I2C)
-       /* PD15 */ { CONF, SPEC,   1,  DIN,  OPEN,   0   }, /* I2C_SDA        */
-       /* PD14 */ { CONF, SPEC,   1,  DIN,  OPEN,   0   }, /* I2C_SCL        */
-#else /* normal I/O port pins */
-       /* PD15 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* I2C_SDA        */
-       /* PD14 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* I2C_SCL        */
-#endif
-#endif
-       /* PD13 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* TDM_STRB1      */
-       /* PD12 */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* TDM_STRB2      */
-       /* PD11 */ { CONF, GPIO,   0,  DOUT, ACTV,   0   }, /* N/C            */
-       /* PD10 */ { CONF, SPEC,   1,  DOUT, ACTV,   0   }, /* BRGO4 (MCLK)   */
-       /* PD9  */ { CONF, SPEC,   0,  DOUT, ACTV,   0   }, /* SMC1_TX        */
-       /* PD8  */ { CONF, SPEC,   0,  DIN,  ACTV,   0   }, /* SMC1_RX        */
-       /* PD7  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* N/C            */
-       /* PD6  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* N/C            */
-       /* PD5  */ { CONF, GPIO,   0,  DOUT, ACTV,   1   }, /* N/C            */
-       /* PD4  */ { CONF, SPEC,   1,  DOUT, ACTV,   1   }, /* SMC2_RX        */
-       /* PD3  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }, /* pin doesn't exist */
-       /* PD2  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }, /* pin doesn't exist */
-       /* PD1  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }, /* pin doesn't exist */
-       /* PD0  */ { SKIP, GPIO,   0,  DIN,  ACTV,   0   }  /* pin doesn't exist */
-    }
-};
diff --git a/board/sacsng/sacsng.c b/board/sacsng/sacsng.c
deleted file mode 100644 (file)
index 91c4987..0000000
+++ /dev/null
@@ -1,848 +0,0 @@
-/*
- * (C) Copyright 2002
- * Custom IDEAS, Inc. <www.cideas.com>
- * Gerald Van Baren <vanbaren@cideas.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/u-boot.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <i2c.h>
-#include <spi.h>
-#include <command.h>
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-#include <status_led.h>
-#endif
-
-#ifdef CONFIG_ETHER_LOOPBACK_TEST
-extern void eth_loopback_test(void);
-#endif /* CONFIG_ETHER_LOOPBACK_TEST */
-
-#include "clkinit.h"
-#include "ioconfig.h"          /* I/O configuration table */
-
-/*
- * PBI Page Based Interleaving
- *   PSDMR_PBI page based interleaving
- *   0         bank based interleaving
- * External Address Multiplexing (EAMUX) adds a clock to address cycles
- *   (this can help with marginal board layouts)
- *   PSDMR_EAMUX  adds a clock
- *   0            no extra clock
- * Buffer Command (BUFCMD) adds a clock to command cycles.
- *   PSDMR_BUFCMD adds a clock
- *   0            no extra clock
- */
-#define CONFIG_PBI             PSDMR_PBI
-#define PESSIMISTIC_SDRAM      0
-#define EAMUX                  0       /* EST requires EAMUX */
-#define BUFCMD                 0
-
-/*
- * ADC/DAC Defines:
- */
-#define INITIAL_SAMPLE_RATE 10016      /* Initial Daq sample rate */
-#define INITIAL_RIGHT_JUST  0  /* Initial DAC right justification */
-#define INITIAL_MCLK_DIVIDE 0  /* Initial MCLK Divide */
-#define INITIAL_SAMPLE_64X  1  /* Initial  64x clocking mode */
-#define INITIAL_SAMPLE_128X 0  /* Initial 128x clocking mode */
-
-/*
- * ADC Defines:
- */
-#define I2C_ADC_1_ADDR 0x0E    /* I2C Address of the ADC #1 */
-#define I2C_ADC_2_ADDR 0x0F    /* I2C Address of the ADC #2 */
-
-#define ADC_SDATA1_MASK 0x00020000     /* PA14 - CH12SDATA_PU   */
-#define ADC_SDATA2_MASK 0x00010000     /* PA15 - CH34SDATA_PU   */
-
-#define ADC_VREF_CAP           100     /* VREF capacitor in uF */
-#define ADC_INITIAL_DELAY (10 * ADC_VREF_CAP)  /* 10 usec per uF, in usec */
-#define ADC_SDATA_DELAY                100     /* ADC SDATA release delay in usec */
-#define ADC_CAL_DELAY (1000000 / INITIAL_SAMPLE_RATE * 4500)
-                                       /* Wait at least 4100 LRCLK's */
-
-#define ADC_REG1_FRAME_START    0x80   /* Frame start */
-#define ADC_REG1_GROUND_CAL     0x40   /* Ground calibration enable */
-#define ADC_REG1_ANA_MOD_PDOWN  0x20   /* Analog modulator section in power down */
-#define ADC_REG1_DIG_MOD_PDOWN  0x10   /* Digital modulator section in power down */
-
-#define ADC_REG2_128x           0x80   /* Oversample at 128x */
-#define ADC_REG2_CAL            0x40   /* System calibration enable */
-#define ADC_REG2_CHANGE_SIGN    0x20   /* Change sign enable */
-#define ADC_REG2_LR_DISABLE     0x10   /* Left/Right output disable */
-#define ADC_REG2_HIGH_PASS_DIS  0x08   /* High pass filter disable */
-#define ADC_REG2_SLAVE_MODE     0x04   /* Slave mode */
-#define ADC_REG2_DFS            0x02   /* Digital format select */
-#define ADC_REG2_MUTE           0x01   /* Mute */
-
-#define ADC_REG7_ADDR_ENABLE    0x80   /* Address enable */
-#define ADC_REG7_PEAK_ENABLE    0x40   /* Peak enable */
-#define ADC_REG7_PEAK_UPDATE    0x20   /* Peak update */
-#define ADC_REG7_PEAK_FORMAT    0x10   /* Peak display format */
-#define ADC_REG7_DIG_FILT_PDOWN 0x04   /* Digital filter power down enable */
-#define ADC_REG7_FIR2_IN_EN     0x02   /* External FIR2 input enable */
-#define ADC_REG7_PSYCHO_EN      0x01   /* External pyscho filter input enable */
-
-/*
- * DAC Defines:
- */
-
-#define I2C_DAC_ADDR 0x11      /* I2C Address of the DAC */
-
-#define DAC_RST_MASK 0x00008000        /* PA16 - DAC_RST*  */
-#define DAC_RESET_DELAY    100 /* DAC reset delay in usec */
-#define DAC_INITIAL_DELAY 5000 /* DAC initialization delay in usec */
-
-#define DAC_REG1_AMUTE         0x80    /* Auto-mute */
-
-#define DAC_REG1_LEFT_JUST_24_BIT (0 << 4)     /* Fmt 0: Left justified 24 bit  */
-#define DAC_REG1_I2S_24_BIT       (1 << 4)     /* Fmt 1: I2S up to 24 bit       */
-#define DAC_REG1_RIGHT_JUST_16BIT (2 << 4)     /* Fmt 2: Right justified 16 bit */
-#define DAC_REG1_RIGHT_JUST_24BIT (3 << 4)     /* Fmt 3: Right justified 24 bit */
-#define DAC_REG1_RIGHT_JUST_20BIT (4 << 4)     /* Fmt 4: Right justified 20 bit */
-#define DAC_REG1_RIGHT_JUST_18BIT (5 << 4)     /* Fmt 5: Right justified 18 bit */
-
-#define DAC_REG1_DEM_NO           (0 << 2)     /* No      De-emphasis  */
-#define DAC_REG1_DEM_44KHZ        (1 << 2)     /* 44.1KHz De-emphasis  */
-#define DAC_REG1_DEM_48KHZ        (2 << 2)     /* 48KHz   De-emphasis  */
-#define DAC_REG1_DEM_32KHZ        (3 << 2)     /* 32KHz   De-emphasis  */
-
-#define DAC_REG1_SINGLE 0      /*   4- 50KHz sample rate  */
-#define DAC_REG1_DOUBLE 1      /*  50-100KHz sample rate  */
-#define DAC_REG1_QUAD   2      /* 100-200KHz sample rate  */
-#define DAC_REG1_DSD    3      /* Direct Stream Data, DSD */
-
-#define DAC_REG5_INVERT_A   0x80       /* Invert channel A */
-#define DAC_REG5_INVERT_B   0x40       /* Invert channel B */
-#define DAC_REG5_I2C_MODE   0x20       /* Control port (I2C) mode */
-#define DAC_REG5_POWER_DOWN 0x10       /* Power down mode */
-#define DAC_REG5_MUTEC_A_B  0x08       /* Mutec A=B */
-#define DAC_REG5_FREEZE     0x04       /* Freeze */
-#define DAC_REG5_MCLK_DIV   0x02       /* MCLK divide by 2 */
-#define DAC_REG5_RESERVED   0x01       /* Reserved */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard(void)
-{
-       printf("SACSng\n");
-
-       return 0;
-}
-
-phys_size_t initdram(int board_type)
-{
-       volatile immap_t *immap = (immap_t *)CONFIG_SYS_IMMR;
-       volatile memctl8260_t *memctl = &immap->im_memctl;
-       volatile uchar c = 0;
-       volatile uchar *ramaddr = (uchar *)(CONFIG_SYS_SDRAM_BASE + 0x8);
-       uint psdmr = CONFIG_SYS_PSDMR;
-       int i;
-       uint psrt = 14;         /* for no SPD */
-       uint chipselects = 1;   /* for no SPD */
-       uint sdram_size = CONFIG_SYS_SDRAM0_SIZE * 1024 * 1024; /* for no SPD */
-       uint or = CONFIG_SYS_OR2_PRELIM;        /* for no SPD */
-
-#ifdef SDRAM_SPD_ADDR
-       uint data_width;
-       uint rows;
-       uint banks;
-       uint cols;
-       uint caslatency;
-       uint width;
-       uint rowst;
-       uint sdam;
-       uint bsma;
-       uint sda10;
-       u_char data;
-       u_char cksum;
-       int j;
-#endif
-
-#ifdef SDRAM_SPD_ADDR
-       /* Keep the compiler from complaining about potentially uninitialized vars */
-       data_width = chipselects = rows = banks = cols = caslatency = psrt =
-               0;
-
-       /*
-        * Read the SDRAM SPD EEPROM via I2C.
-        */
-       i2c_read(SDRAM_SPD_ADDR, 0, 1, &data, 1);
-       cksum = data;
-       for (j = 1; j < 64; j++) {      /* read only the checksummed bytes */
-               /* note: the I2C address autoincrements when alen == 0 */
-               i2c_read(SDRAM_SPD_ADDR, 0, 0, &data, 1);
-               if (j == 5)
-                       chipselects = data & 0x0F;
-               else if (j == 6)
-                       data_width = data;
-               else if (j == 7)
-                       data_width |= data << 8;
-               else if (j == 3)
-                       rows = data & 0x0F;
-               else if (j == 4)
-                       cols = data & 0x0F;
-               else if (j == 12) {
-                       /*
-                        * Refresh rate: this assumes the prescaler is set to
-                        * approximately 1uSec per tick.
-                        */
-                       switch (data & 0x7F) {
-                       default:
-                       case 0:
-                               psrt = 14;      /*  15.625uS */
-                               break;
-                       case 1:
-                               psrt = 2;       /*   3.9uS   */
-                               break;
-                       case 2:
-                               psrt = 6;       /*   7.8uS   */
-                               break;
-                       case 3:
-                               psrt = 29;      /*  31.3uS   */
-                               break;
-                       case 4:
-                               psrt = 60;      /*  62.5uS   */
-                               break;
-                       case 5:
-                               psrt = 120;     /* 125uS     */
-                               break;
-                       }
-               } else if (j == 17)
-                       banks = data;
-               else if (j == 18) {
-                       caslatency = 3; /* default CL */
-#if(PESSIMISTIC_SDRAM)
-                       if ((data & 0x04) != 0)
-                               caslatency = 3;
-                       else if ((data & 0x02) != 0)
-                               caslatency = 2;
-                       else if ((data & 0x01) != 0)
-                               caslatency = 1;
-#else
-                       if ((data & 0x01) != 0)
-                               caslatency = 1;
-                       else if ((data & 0x02) != 0)
-                               caslatency = 2;
-                       else if ((data & 0x04) != 0)
-                               caslatency = 3;
-#endif
-                       else {
-                               printf("WARNING: Unknown CAS latency 0x%02X, using 3\n", data);
-                       }
-               } else if (j == 63) {
-                       if (data != cksum) {
-                               printf("WARNING: Configuration data checksum failure:" " is 0x%02x, calculated 0x%02x\n", data, cksum);
-                       }
-               }
-               cksum += data;
-       }
-
-       /* We don't trust CL less than 2 (only saw it on an old 16MByte DIMM) */
-       if (caslatency < 2) {
-               printf("WARNING: CL was %d, forcing to 2\n", caslatency);
-               caslatency = 2;
-       }
-       if (rows > 14) {
-               printf("WARNING: This doesn't look good, rows = %d, should be <= 14\n",
-                       rows);
-               rows = 14;
-       }
-       if (cols > 11) {
-               printf("WARNING: This doesn't look good, columns = %d, should be <= 11\n",
-                       cols);
-               cols = 11;
-       }
-
-       if ((data_width != 64) && (data_width != 72)) {
-               printf("WARNING: SDRAM width unsupported, is %d, expected 64 or 72.\n",
-                       data_width);
-       }
-       width = 3;              /* 2^3 = 8 bytes = 64 bits wide */
-       /*
-        * Convert banks into log2(banks)
-        */
-       if (banks == 2)
-               banks = 1;
-       else if (banks == 4)
-               banks = 2;
-       else if (banks == 8)
-               banks = 3;
-
-       sdram_size = 1 << (rows + cols + banks + width);
-
-#if(CONFIG_PBI == 0)           /* bank-based interleaving */
-       rowst = ((32 - 6) - (rows + cols + width)) * 2;
-#else
-       rowst = 32 - (rows + banks + cols + width);
-#endif
-
-       or = ~(sdram_size - 1) |        /* SDAM address mask    */
-               ((banks - 1) << 13) |   /* banks per device     */
-               (rowst << 9) |          /* rowst                */
-               ((rows - 9) << 6);      /* numr                 */
-
-       memctl->memc_or2 = or;
-
-       /*
-        * SDAM specifies the number of columns that are multiplexed
-        * (reference AN2165/D), defined to be (columns - 6) for page
-        * interleave, (columns - 8) for bank interleave.
-        *
-        * BSMA is 14 - max(rows, cols).  The bank select lines come
-        * into play above the highest "address" line going into the
-        * the SDRAM.
-        */
-#if(CONFIG_PBI == 0)           /* bank-based interleaving */
-       sdam = cols - 8;
-       bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
-       sda10 = sdam + 2;
-#else
-       sdam = cols - 6;
-       bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
-       sda10 = sdam;
-#endif
-#if(PESSIMISTIC_SDRAM)
-       psdmr = (CONFIG_PBI | PSDMR_RFEN | PSDMR_RFRC_16_CLK |
-               PSDMR_PRETOACT_8W | PSDMR_ACTTORW_8W | PSDMR_WRC_4C |
-               PSDMR_EAMUX | PSDMR_BUFCMD) | caslatency |
-               ((caslatency - 1) << 6) |       /* LDOTOPRE is CL - 1 */
-               (sdam << 24) | (bsma << 21) | (sda10 << 18);
-#else
-       psdmr = (CONFIG_PBI | PSDMR_RFEN | PSDMR_RFRC_7_CLK |
-               PSDMR_PRETOACT_3W |     /* 1 for 7E parts (fast PC-133) */
-               PSDMR_ACTTORW_2W |      /* 1 for 7E parts (fast PC-133) */
-               PSDMR_WRC_1C |  /* 1 clock + 7nSec */
-               EAMUX | BUFCMD) |
-               caslatency | ((caslatency - 1) << 6) |  /* LDOTOPRE is CL - 1 */
-               (sdam << 24) | (bsma << 21) | (sda10 << 18);
-#endif
-#endif
-
-       /*
-        * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-        *
-        * "At system reset, initialization software must set up the
-        *  programmable parameters in the memory controller banks registers
-        *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-        *  system software should execute the following initialization sequence
-        *  for each SDRAM device.
-        *
-        *  1. Issue a PRECHARGE-ALL-BANKS command
-        *  2. Issue eight CBR REFRESH commands
-        *  3. Issue a MODE-SET command to initialize the mode register
-        *
-        * Quote from Micron MT48LC8M16A2 data sheet:
-        *
-        *  "...the SDRAM requires a 100uS delay prior to issuing any
-        *  command other than a COMMAND INHIBIT or NOP.  Starting at some
-        *  point during this 100uS period and continuing at least through
-        *  the end of this period, COMMAND INHIBIT or NOP commands should
-        *  be applied."
-        *
-        *  "Once the 100uS delay has been satisfied with at least one COMMAND
-        *  INHIBIT or NOP command having been applied, a /PRECHARGE command/
-        *  should be applied.  All banks must then be precharged, thereby
-        *  placing the device in the all banks idle state."
-        *
-        *  "Once in the idle state, /two/ AUTO REFRESH cycles must be
-        *  performed.  After the AUTO REFRESH cycles are complete, the
-        *  SDRAM is ready for mode register programming."
-        *
-        *  (/emphasis/ mine, gvb)
-        *
-        *  The way I interpret this, Micron start up sequence is:
-        *  1. Issue a PRECHARGE-BANK command (initial precharge)
-        *  2. Issue a PRECHARGE-ALL-BANKS command ("all banks ... precharged")
-        *  3. Issue two (presumably, doing eight is OK) CBR REFRESH commands
-        *  4. Issue a MODE-SET command to initialize the mode register
-        *
-        *  --------
-        *
-        *  The initial commands are executed by setting P/LSDMR[OP] and
-        *  accessing the SDRAM with a single-byte transaction."
-        *
-        * The appropriate BRx/ORx registers have already been set when we
-        * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-        */
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-       memctl->memc_psrt = psrt;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
-       for (i = 0; i < 8; i++)
-               *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
-       *ramaddr = c;
-
-       memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       *ramaddr = c;
-
-       /*
-        * Do it a second time for the second set of chips if the DIMM has
-        * two chip selects (double sided).
-        */
-       if (chipselects > 1) {
-               ramaddr += sdram_size;
-
-               memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM + sdram_size;
-               memctl->memc_or3 = or;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
-               *ramaddr = c;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
-               for (i = 0; i < 8; i++)
-                       *ramaddr = c;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
-               *ramaddr = c;
-
-               memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-               *ramaddr = c;
-       }
-
-       /* return total ram size */
-       return (sdram_size * chipselects);
-}
-
-/*-----------------------------------------------------------------------
- * Board Control Functions
- */
-void board_poweroff(void)
-{
-       while (1);              /* hang forever */
-}
-
-
-#ifdef CONFIG_MISC_INIT_R
-/* ------------------------------------------------------------------------- */
-int misc_init_r(void)
-{
-       /*
-        * Note: iop is used by the I2C macros, and iopa by the ADC/DAC initialization.
-        */
-       volatile ioport_t *iopa =
-               ioport_addr((immap_t *)CONFIG_SYS_IMMR, 0 /* port A */ );
-       volatile ioport_t *iop =
-               ioport_addr((immap_t *)CONFIG_SYS_IMMR, I2C_PORT);
-
-       int reg;                /* I2C register value */
-       char *ep;               /* Environment pointer */
-       char str_buf[12];       /* sprintf output buffer */
-       int sample_rate;        /* ADC/DAC sample rate */
-       int sample_64x;         /* Use  64/4 clocking for the ADC/DAC */
-       int sample_128x;        /* Use 128/4 clocking for the ADC/DAC */
-       int right_just;         /* Is the data to the DAC right justified? */
-       int mclk_divide;        /* MCLK Divide */
-       int quiet;              /* Quiet or minimal output mode */
-
-       quiet = 0;
-
-       if ((ep = getenv("quiet")) != NULL)
-               quiet = simple_strtol(ep, NULL, 10);
-       else
-               setenv("quiet", "0");
-
-       /*
-        * SACSng custom initialization:
-        *    Start the ADC and DAC clocks, since the Crystal parts do not
-        *    work on the I2C bus until the clocks are running.
-        */
-
-       sample_rate = INITIAL_SAMPLE_RATE;
-       if ((ep = getenv("DaqSampleRate")) != NULL)
-               sample_rate = simple_strtol(ep, NULL, 10);
-
-       sample_64x = INITIAL_SAMPLE_64X;
-       sample_128x = INITIAL_SAMPLE_128X;
-       if ((ep = getenv("Daq64xSampling")) != NULL) {
-               sample_64x = simple_strtol(ep, NULL, 10);
-               if (sample_64x)
-                       sample_128x = 0;
-               else
-                       sample_128x = 1;
-       } else {
-               if ((ep = getenv("Daq128xSampling")) != NULL) {
-                       sample_128x = simple_strtol(ep, NULL, 10);
-                       if (sample_128x)
-                               sample_64x = 0;
-                       else
-                               sample_64x = 1;
-               }
-       }
-
-       /*
-        * Stop the clocks and wait for at least 1 LRCLK period
-        * to make sure the clocking has really stopped.
-        */
-       Daq_Stop_Clocks();
-       udelay((1000000 / sample_rate) * NUM_LRCLKS_TO_STABILIZE);
-
-       /*
-        * Initialize the clocks with the new rates
-        */
-       Daq_Init_Clocks(sample_rate, sample_64x);
-       sample_rate = Daq_Get_SampleRate();
-
-       /*
-        * Start the clocks and wait for at least 1 LRCLK period
-        * to make sure the clocking has become stable.
-        */
-       Daq_Start_Clocks(sample_rate);
-       udelay((1000000 / sample_rate) * NUM_LRCLKS_TO_STABILIZE);
-
-       sprintf(str_buf, "%d", sample_rate);
-       setenv("DaqSampleRate", str_buf);
-
-       if (sample_64x) {
-               setenv("Daq64xSampling", "1");
-               setenv("Daq128xSampling", NULL);
-       } else {
-               setenv("Daq64xSampling", NULL);
-               setenv("Daq128xSampling", "1");
-       }
-
-       /*
-        * Display the ADC/DAC clocking information
-        */
-       if (!quiet)
-               Daq_Display_Clocks();
-
-       /*
-        * Determine the DAC data justification
-        */
-
-       right_just = INITIAL_RIGHT_JUST;
-       if ((ep = getenv("DaqDACRightJustified")) != NULL)
-               right_just = simple_strtol(ep, NULL, 10);
-
-       sprintf(str_buf, "%d", right_just);
-       setenv("DaqDACRightJustified", str_buf);
-
-       /*
-        * Determine the DAC MCLK Divide
-        */
-
-       mclk_divide = INITIAL_MCLK_DIVIDE;
-       if ((ep = getenv("DaqDACMClockDivide")) != NULL)
-               mclk_divide = simple_strtol(ep, NULL, 10);
-
-       sprintf(str_buf, "%d", mclk_divide);
-       setenv("DaqDACMClockDivide", str_buf);
-
-       /*
-        * Initializing the I2C address in the Crystal A/Ds:
-        *
-        * 1) Wait for VREF cap to settle (10uSec per uF)
-        * 2) Release pullup on SDATA
-        * 3) Write the I2C address to register 6
-        * 4) Enable address matching by setting the MSB in register 7
-        */
-
-       if (!quiet)
-               printf("Initializing the ADC...\n");
-
-       udelay(ADC_INITIAL_DELAY);      /* 10uSec per uF of VREF cap */
-
-       iopa->pdat &= ~ADC_SDATA1_MASK; /* release SDATA1 */
-       udelay(ADC_SDATA_DELAY);        /* arbitrary settling time */
-
-       i2c_reg_write(0x00, 0x06, I2C_ADC_1_ADDR);      /* set address */
-       i2c_reg_write(I2C_ADC_1_ADDR, 0x07,     /* turn on ADDREN */
-                     ADC_REG7_ADDR_ENABLE);
-
-       i2c_reg_write(I2C_ADC_1_ADDR, 0x02,     /* 128x, slave mode, !HPEN */
-                     (sample_64x ? 0 : ADC_REG2_128x) |
-                     ADC_REG2_HIGH_PASS_DIS | ADC_REG2_SLAVE_MODE);
-
-       reg = i2c_reg_read(I2C_ADC_1_ADDR, 0x06) & 0x7F;
-       if (reg != I2C_ADC_1_ADDR) {
-               printf("Init of ADC U10 failed: address is 0x%02X should be 0x%02X\n",
-                       reg, I2C_ADC_1_ADDR);
-       }
-
-       iopa->pdat &= ~ADC_SDATA2_MASK; /* release SDATA2 */
-       udelay(ADC_SDATA_DELAY);        /* arbitrary settling time */
-
-       /* set address (do not set ADDREN yet) */
-       i2c_reg_write(0x00, 0x06, I2C_ADC_2_ADDR);
-
-       i2c_reg_write(I2C_ADC_2_ADDR, 0x02,     /* 64x, slave mode, !HPEN */
-                     (sample_64x ? 0 : ADC_REG2_128x) |
-                     ADC_REG2_HIGH_PASS_DIS | ADC_REG2_SLAVE_MODE);
-
-       reg = i2c_reg_read(I2C_ADC_2_ADDR, 0x06) & 0x7F;
-       if (reg != I2C_ADC_2_ADDR) {
-               printf("Init of ADC U15 failed: address is 0x%02X should be 0x%02X\n",
-                       reg, I2C_ADC_2_ADDR);
-       }
-
-       i2c_reg_write(I2C_ADC_1_ADDR, 0x01,     /* set FSTART and GNDCAL */
-                     ADC_REG1_FRAME_START | ADC_REG1_GROUND_CAL);
-
-       i2c_reg_write(I2C_ADC_1_ADDR, 0x02,     /* Start calibration */
-                     (sample_64x ? 0 : ADC_REG2_128x) |
-                     ADC_REG2_CAL |
-                     ADC_REG2_HIGH_PASS_DIS | ADC_REG2_SLAVE_MODE);
-
-       udelay(ADC_CAL_DELAY);  /* a minimum of 4100 LRCLKs */
-       i2c_reg_write(I2C_ADC_1_ADDR, 0x01, 0x00);      /* remove GNDCAL */
-
-       /*
-        * Now that we have synchronized the ADC's, enable address
-        * selection on the second ADC as well as the first.
-        */
-       i2c_reg_write(I2C_ADC_2_ADDR, 0x07, ADC_REG7_ADDR_ENABLE);
-
-       /*
-        * Initialize the Crystal DAC
-        *
-        * Two of the config lines are used for I2C so we have to set them
-        * to the proper initialization state without inadvertantly
-        * sending an I2C "start" sequence.  When we bring the I2C back to
-        * the normal state, we send an I2C "stop" sequence.
-        */
-       if (!quiet)
-               printf("Initializing the DAC...\n");
-
-       /*
-        * Bring the I2C clock and data lines low for initialization
-        */
-       I2C_SCL(0);
-       I2C_DELAY;
-       I2C_SDA(0);
-       I2C_ACTIVE;
-       I2C_DELAY;
-
-       /* Reset the DAC */
-       iopa->pdat &= ~DAC_RST_MASK;
-       udelay(DAC_RESET_DELAY);
-
-       /* Release the DAC reset */
-       iopa->pdat |= DAC_RST_MASK;
-       udelay(DAC_INITIAL_DELAY);
-
-       /*
-        * Cause the DAC to:
-        *     Enable control port (I2C mode)
-        *     Going into power down
-        */
-       i2c_reg_write(I2C_DAC_ADDR, 0x05,
-                     DAC_REG5_I2C_MODE | DAC_REG5_POWER_DOWN);
-
-       /*
-        * Cause the DAC to:
-        *     Enable control port (I2C mode)
-        *     Going into power down
-        *         . MCLK divide by 1
-        *         . MCLK divide by 2
-        */
-       i2c_reg_write(I2C_DAC_ADDR, 0x05,
-                     DAC_REG5_I2C_MODE |
-                     DAC_REG5_POWER_DOWN |
-                     (mclk_divide ? DAC_REG5_MCLK_DIV : 0));
-
-       /*
-        * Cause the DAC to:
-        *     Auto-mute disabled
-        *         . Format 0, left  justified 24 bits
-        *         . Format 3, right justified 24 bits
-        *     No de-emphasis
-        *         . Single speed mode
-        *         . Double speed mode
-        */
-       i2c_reg_write(I2C_DAC_ADDR, 0x01,
-                     (right_just ? DAC_REG1_RIGHT_JUST_24BIT :
-                      DAC_REG1_LEFT_JUST_24_BIT) |
-                     DAC_REG1_DEM_NO |
-                     (sample_rate >=
-                      50000 ? DAC_REG1_DOUBLE : DAC_REG1_SINGLE));
-
-       sprintf(str_buf, "%d",
-               sample_rate >= 50000 ? DAC_REG1_DOUBLE : DAC_REG1_SINGLE);
-       setenv("DaqDACFunctionalMode", str_buf);
-
-       /*
-        * Cause the DAC to:
-        *     Enable control port (I2C mode)
-        *     Remove power down
-        *         . MCLK divide by 1
-        *         . MCLK divide by 2
-        */
-       i2c_reg_write(I2C_DAC_ADDR, 0x05,
-                     DAC_REG5_I2C_MODE |
-                     (mclk_divide ? DAC_REG5_MCLK_DIV : 0));
-
-       /*
-        * Create a I2C stop condition:
-        *     low->high on data while clock is high.
-        */
-       I2C_SCL(1);
-       I2C_DELAY;
-       I2C_SDA(1);
-       I2C_DELAY;
-       I2C_TRISTATE;
-
-       if (!quiet)
-               printf("\n");
-#ifdef CONFIG_ETHER_LOOPBACK_TEST
-       /*
-        * Run the Ethernet loopback test
-        */
-       eth_loopback_test();
-#endif /* CONFIG_ETHER_LOOPBACK_TEST */
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-       /*
-        * Turn off the RED fail LED now that we are up and running.
-        */
-       status_led_set(STATUS_LED_RED, STATUS_LED_OFF);
-#endif
-
-       return 0;
-}
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-/*
- * Show boot status: flash the LED if something goes wrong, indicating
- * that last thing that worked and thus, by implication, what is broken.
- *
- * This stores the last OK value in RAM so this will not work properly
- * before RAM is initialized.  Since it is being used for indicating
- * boot status (i.e. after RAM is initialized), that is OK.
- */
-static void flash_code(uchar number, uchar modulo, uchar digits)
-{
-       int j;
-
-       /*
-        * Recursively do upper digits.
-        */
-       if (digits > 1)
-               flash_code(number / modulo, modulo, digits - 1);
-
-       number = number % modulo;
-
-       /*
-        * Zero is indicated by one long flash (dash).
-        */
-       if (number == 0) {
-               status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
-               udelay(1000000);
-               status_led_set(STATUS_LED_BOOT, STATUS_LED_OFF);
-               udelay(200000);
-       } else {
-               /*
-                * Non-zero is indicated by short flashes, one per count.
-                */
-               for (j = 0; j < number; j++) {
-                       status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
-                       udelay(100000);
-                       status_led_set(STATUS_LED_BOOT, STATUS_LED_OFF);
-                       udelay(200000);
-               }
-       }
-       /*
-        * Inter-digit pause: we've already waited 200 mSec, wait 1 sec total
-        */
-       udelay(700000);
-}
-
-static int last_boot_progress;
-
-void show_boot_progress(int status)
-{
-       int i, j;
-
-       if (status > 0) {
-               last_boot_progress = status;
-       } else {
-               /*
-                * If a specific failure code is given, flash this code
-                * else just use the last success code we've seen
-                */
-               if (status < -1)
-                       last_boot_progress = -status;
-
-               /*
-                * Flash this code 5 times
-                */
-               for (j = 0; j < 5; j++) {
-                       /*
-                        * Houston, we have a problem.
-                        * Blink the last OK status which indicates where things failed.
-                        */
-                       status_led_set(STATUS_LED_RED, STATUS_LED_ON);
-                       flash_code(last_boot_progress, 5, 3);
-
-                       /*
-                        * Delay 5 seconds between repetitions,
-                        * with the fault LED blinking
-                        */
-                       for (i = 0; i < 5; i++) {
-                               status_led_set(STATUS_LED_RED,
-                                              STATUS_LED_OFF);
-                               udelay(500000);
-                               status_led_set(STATUS_LED_RED, STATUS_LED_ON);
-                               udelay(500000);
-                       }
-               }
-
-               /*
-                * Reset the board to retry initialization.
-                */
-               do_reset(NULL, 0, 0, NULL);
-       }
-}
-#endif /* CONFIG_SHOW_BOOT_PROGRESS */
-
-
-/*
- * The following are used to control the SPI chip selects for the SPI command.
- */
-#if defined(CONFIG_CMD_SPI)
-
-#define SPI_ADC_CS_MASK        0x00000800
-#define SPI_DAC_CS_MASK        0x00001000
-
-static const u32 cs_mask[] = {
-       SPI_ADC_CS_MASK,
-       SPI_DAC_CS_MASK,
-};
-
-int spi_cs_is_valid(unsigned int bus, unsigned int cs)
-{
-       return bus == 0 && cs < sizeof(cs_mask) / sizeof(cs_mask[0]);
-}
-
-void spi_cs_activate(struct spi_slave *slave)
-{
-       volatile ioport_t *iopd =
-               ioport_addr((immap_t *) CONFIG_SYS_IMMR, 3 /* port D */ );
-
-       iopd->pdat &= ~cs_mask[slave->cs];
-}
-
-void spi_cs_deactivate(struct spi_slave *slave)
-{
-       volatile ioport_t *iopd =
-               ioport_addr((immap_t *) CONFIG_SYS_IMMR, 3 /* port D */ );
-
-       iopd->pdat |= cs_mask[slave->cs];
-}
-
-#endif
-
-#endif /* CONFIG_MISC_INIT_R */
index 5edb250f06bbb98b606d02c22e5c4364fd6cda42..b7d23817e143016688d332fbf1da1acd925fe6c2 100644 (file)
@@ -356,24 +356,48 @@ static void board_clock_init(void)
 static void board_gpio_init(void)
 {
        /* eMMC Reset Pin */
+       gpio_request(EXYNOS4X12_GPIO_K12, "eMMC Reset");
+
        gpio_cfg_pin(EXYNOS4X12_GPIO_K12, S5P_GPIO_FUNC(0x1));
        gpio_set_pull(EXYNOS4X12_GPIO_K12, S5P_GPIO_PULL_NONE);
        gpio_set_drv(EXYNOS4X12_GPIO_K12, S5P_GPIO_DRV_4X);
 
        /* Enable FAN (Odroid U3) */
+       gpio_request(EXYNOS4X12_GPIO_D00, "FAN Control");
+
        gpio_set_pull(EXYNOS4X12_GPIO_D00, S5P_GPIO_PULL_UP);
        gpio_set_drv(EXYNOS4X12_GPIO_D00, S5P_GPIO_DRV_4X);
        gpio_direction_output(EXYNOS4X12_GPIO_D00, 1);
 
        /* OTG Vbus output (Odroid U3+) */
+       gpio_request(EXYNOS4X12_GPIO_L20, "OTG Vbus");
+
        gpio_set_pull(EXYNOS4X12_GPIO_L20, S5P_GPIO_PULL_NONE);
        gpio_set_drv(EXYNOS4X12_GPIO_L20, S5P_GPIO_DRV_4X);
        gpio_direction_output(EXYNOS4X12_GPIO_L20, 0);
 
        /* OTG INT (Odroid U3+) */
+       gpio_request(EXYNOS4X12_GPIO_X31, "OTG INT");
+
        gpio_set_pull(EXYNOS4X12_GPIO_X31, S5P_GPIO_PULL_UP);
        gpio_set_drv(EXYNOS4X12_GPIO_X31, S5P_GPIO_DRV_4X);
        gpio_direction_input(EXYNOS4X12_GPIO_X31);
+
+       /* Blue LED (Odroid X2/U2/U3) */
+       gpio_request(EXYNOS4X12_GPIO_C10, "Blue LED");
+
+       gpio_direction_output(EXYNOS4X12_GPIO_C10, 0);
+
+#ifdef CONFIG_CMD_USB
+       /* USB3503A Reference frequency */
+       gpio_request(EXYNOS4X12_GPIO_X30, "USB3503A RefFreq");
+
+       /* USB3503A Connect */
+       gpio_request(EXYNOS4X12_GPIO_X34, "USB3503A Connect");
+
+       /* USB3503A Reset */
+       gpio_request(EXYNOS4X12_GPIO_X35, "USB3503A Reset");
+#endif
 }
 
 static int pmic_init_max77686(void)
@@ -403,7 +427,6 @@ static void board_init_i2c(void)
 int exynos_early_init_f(void)
 {
        board_clock_init();
-       board_gpio_init();
 
        return 0;
 }
@@ -414,6 +437,8 @@ int exynos_init(void)
        gd->ram_size -= SZ_1M;
        gd->bd->bi_dram[CONFIG_NR_DRAM_BANKS - 1].size -= SZ_1M;
 
+       board_gpio_init();
+
        return 0;
 }
 
@@ -453,9 +478,39 @@ struct s3c_plat_otg_data s5pc210_otg_data = {
        .usb_phy_ctrl   = EXYNOS4X12_USBPHY_CONTROL,
        .usb_flags      = PHY0_SLEEP,
 };
+#endif
+
+#if defined(CONFIG_USB_GADGET) || defined(CONFIG_CMD_USB)
 
 int board_usb_init(int index, enum usb_init_type init)
 {
+#ifdef CONFIG_CMD_USB
+       struct pmic *p_pmic;
+
+       /* Set Ref freq 0 => 24MHz, 1 => 26MHz*/
+       /* Odroid Us have it at 24MHz, Odroid Xs at 26MHz */
+       if (gd->board_type == ODROID_TYPE_U3)
+               gpio_direction_output(EXYNOS4X12_GPIO_X30, 0);
+       else
+               gpio_direction_output(EXYNOS4X12_GPIO_X30, 1);
+
+       /* Disconnect, Reset, Connect */
+       gpio_direction_output(EXYNOS4X12_GPIO_X34, 0);
+       gpio_direction_output(EXYNOS4X12_GPIO_X35, 0);
+       gpio_direction_output(EXYNOS4X12_GPIO_X35, 1);
+       gpio_direction_output(EXYNOS4X12_GPIO_X34, 1);
+
+       /* Power off and on BUCK8 for LAN9730 */
+       debug("LAN9730 - Turning power buck 8 OFF and ON.\n");
+
+       p_pmic = pmic_get("MAX77686_PMIC");
+       if (p_pmic && !pmic_probe(p_pmic)) {
+               max77686_set_buck_voltage(p_pmic, 8, 750000);
+               max77686_set_buck_voltage(p_pmic, 8, 3300000);
+       }
+
+#endif
+
        debug("USB_udc_probe\n");
        return s3c_udc_probe(&s5pc210_otg_data);
 }
index d3a5b7f7d7f2fb8286429f9b7663157fb969ef9f..a9d62fffa55ebfdbdfa1516a0c0fff7108237c4c 100644 (file)
@@ -1,3 +1,29 @@
+if TARGET_ODROID_XU3
+
+config SYS_BOARD
+       default "smdk5420"
+
+config SYS_VENDOR
+       default "samsung"
+
+config SYS_CONFIG_NAME
+       default "odroid_xu3"
+
+endif
+
+if TARGET_PEACH_PI
+
+config SYS_BOARD
+       default "smdk5420"
+
+config SYS_VENDOR
+       default "samsung"
+
+config SYS_CONFIG_NAME
+       default "peach-pi"
+
+endif
+
 if TARGET_PEACH_PIT
 
 config SYS_BOARD
index e0f5c7a530e88d1bf0819d31876628e1ad60ab5c..1423f839955a3c8db4755a25641c5305bc1f3feb 100644 (file)
@@ -6,3 +6,5 @@ F:      include/configs/peach-pit.h
 F:     configs/peach-pit_defconfig
 F:     include/configs/smdk5420.h
 F:     configs/smdk5420_defconfig
+F:     include/configs/peach-pi.h
+F:     configs/peach-pi_defconfig
index a691222b8b143dd61e784ae8e3122dc95b8e3953..1aca9fabd9458d7be1f5d38616d27eade629ba78 100644 (file)
@@ -9,6 +9,7 @@
 #include <asm/io.h>
 #include <i2c.h>
 #include <lcd.h>
+#include <parade.h>
 #include <spi.h>
 #include <errno.h>
 #include <asm/gpio.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_USB_EHCI_EXYNOS
-static int board_usb_vbus_init(void)
-{
-       /* Enable VBUS power switch */
-       gpio_direction_output(EXYNOS5420_GPIO_X26, 1);
-
-       /* VBUS turn ON time */
-       mdelay(3);
-
-       return 0;
-}
-#endif
-
 int exynos_init(void)
 {
-#ifdef CONFIG_USB_EHCI_EXYNOS
-       board_usb_vbus_init();
-#endif
        return 0;
 }
 
diff --git a/board/sandpoint/Kconfig b/board/sandpoint/Kconfig
deleted file mode 100644 (file)
index c19b63e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-if TARGET_SANDPOINT8240
-
-config SYS_BOARD
-       default "sandpoint"
-
-config SYS_CONFIG_NAME
-       default "Sandpoint8240"
-
-endif
-
-if TARGET_SANDPOINT8245
-
-config SYS_BOARD
-       default "sandpoint"
-
-config SYS_CONFIG_NAME
-       default "Sandpoint8245"
-
-endif
diff --git a/board/sandpoint/MAINTAINERS b/board/sandpoint/MAINTAINERS
deleted file mode 100644 (file)
index 569cf42..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-SANDPOINT BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/sandpoint/
-F:     include/configs/Sandpoint8240.h
-F:     configs/Sandpoint8240_defconfig
-
-SANDPOINT8245 BOARD
-#M:    Jim Thompson <jim@musenki.com>
-S:     Orphan (since 2014-04)
-F:     include/configs/Sandpoint8245.h
-F:     configs/Sandpoint8245_defconfig
diff --git a/board/sandpoint/Makefile b/board/sandpoint/Makefile
deleted file mode 100644 (file)
index 58f5a89..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = sandpoint.o flash.o
diff --git a/board/sandpoint/README b/board/sandpoint/README
deleted file mode 100644 (file)
index c9996a8..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-This port of U-Boot will run on a Motorola Sandpoint 3 development
-system equipped with a Unity X4 PPMC card (MPC8240 CPU) only. It is a
-snapshot of work in progress and far from being completed. In order
-to run it on the target system, it has to be downloaded using the
-DINK32 monitor program that came with your Sandpoint system. Please
-note that DINK32 does not accept the S-Record file created by the
-U-Boot build process unmodified, because it contains CR/LF line
-terminators. You have to strip the CR characters first. There is a
-tiny script named 'dinkdl' I created for this purpose.
-
-The Sandpoint port is based on the work of Rob Taylor, who does not
-seem to maintain it any more. I can be reached by mail as
-tkoeller@gmx.net.
-
-Thomas Koeller
-
-
-The port was tested on a Sandpoint 8240 X3 board, with U-Boot
-installed in the flash memory of the CPU card. Please use the
-following DIP switch settings:
-
-Motherboard:
-
-SW1.1: on      SW1.2: on       SW1.3: on       SW1.4: on
-SW1.5: on      SW1.6: on       SW1.7: on       SW1.8: on
-
-SW2.1: on      SW2.2: on       SW2.3: on       SW2.4: on
-SW2.5: on      SW2.6: on       SW2.7: on       SW2.8: on
-
-
-CPU Card:
-
-SW2.1: OFF     SW2.2: OFF      SW2.3: on       SW2.4: on
-SW2.5: OFF     SW2.6: OFF      SW2.7: OFF      SW2.8: OFF
-
-SW3.1: OFF     SW3.2: on       SW3.3: OFF      SW3.4: OFF
-SW3.5: on      SW3.6: OFF      SW3.7: OFF      SW3.8: on
-
-
-The followind detailed description of installation and initial steps
-with U-Boot and QNX was provided by Jim Sandoz <sandoz@lucent.com>:
-
-
-Directions for installing U-Boot on Sandpoint+Unity8240
-using the Abatron BDI2000 BDM/JTAG debugger ...
-
-Background and Reference info:
-http://u-boot.sourceforge.net/
-http://www.abatron.ch/
-http://www.abatron.ch/BDI/bdihw.html
-http://www.abatron.ch/DataSheets/BDI2000.pdf
-http://www.abatron.ch/Manuals/ManGdbCOP-2000C.pdf
-http://e-www.motorola.com/collateral/SPX3UM.pdf
-http://e-www.motorola.com/collateral/UNITYX4CONFIG.pdf
-
-
-Connection Diagram:
-                                           ===========
- ===                     =====             |-----      |
-|   | <---------------> |     |            |     |     |
-|PC |       rs232       | BDI |=============[]   |     |
-|   |                   |2000 |  BDM probe |     |     |
-|   | <---------------> |     |            |-----      |
- ===       ethernet      =====             |           |
-                                          |           |
-                                           ===========
-                                        Sandpoint X3 with
-                                         Unity 8240 proc
-
-
-PART 1)
-  DIP Switch Settings:
-
-Sandpoint X3 8240 processor board DIP switch settings, with
-U-Boot to be installed in the flash memory of the CPU card:
-
-Motorola Sandpoint X3 Motherboard:
-SW1.1: on      SW1.2: on       SW1.3: on       SW1.4: on
-SW1.5: on      SW1.6: on       SW1.7: on       SW1.8: on
-SW2.1: on      SW2.2: on       SW2.3: on       SW2.4: on
-SW2.5: on      SW2.6: on       SW2.7: on       SW2.8: on
-
-Motorola Unity 8240 CPU Card:
-SW2.1: OFF     SW2.2: OFF      SW2.3: on       SW2.4: on
-SW2.5: OFF     SW2.6: OFF      SW2.7: OFF      SW2.8: OFF
-SW3.1: OFF     SW3.2: on       SW3.3: OFF      SW3.4: OFF
-SW3.5: on      SW3.6: OFF      SW3.7: OFF      SW3.8: on
-
-
-PART 2)
-  Connect the BDI2000 Cable to the Sandpoint/Unity 8240:
-
-BDM Pin 1 on the Unity 8240 processor board is towards the
-PCI PMC connectors, or away from the socketed SDRAM, i.e.:
-
-  ====================
-  | ---------------- |
-  | |    SDRAM     | |
-  | |              | |
-  | ---------------- |
-  | |~|              |
-  | |B|       ++++++ |
-  | |D|       + uP + |
-  | |M|       +8240+ |
-  |  ~ 1      ++++++ |
-  |                  |
-  |                  |
-  |                  |
-  | PMC conn ======  |
-  |   =====  ======  |
-  |                  |
-  ====================
-
-
-PART 3)
-  Setting up the BDI2000, and preparing for TCP/IP network comms:
-
-Connect the BDI2000 to the PC using the supplied serial cable.
-Download the BDI2000 software and install it using setup.exe.
-
-[Note: of course you  can  also  use  the  Linux  command  line  tool
-"bdisetup"  to  configure  your BDI2000 - the sources are included on
-the floppy disk that comes with your BDI2000. Just in case you  don't
-have any Windows PC's - like me :-)   -- wd ]
-
-Power up the BDI2000; then follow directions to assign the IP
-address and related network information.  Note that U-Boot
-will be loaded to the Sandpoint via tftp.  You need to either
-use the Abatron-provided tftp application or provide a tftp
-server (e.g. Linux/Solaris/*BSD) somewhere on your network.
-Once the IP address etc are assigned via the RS232 port,
-further communication with the BDI2000 will happen via the
-ethernet connection.
-
-PART 4)
-  Making a TCP/IP network connection to the Abatron BDI2000:
-
-Telnet to the Abatron BDI2000.  Assuming that all of the
-networking info was loaded via RS232 correctly, you will see
-the following (scrolling):
-
-- TARGET: waiting for target Vcc
-- TARGET: waiting for target Vcc
-
-
-PART 5)
-  Power up the target Sandpoint:
-If the BDM connections are correct, the following will now appear:
-
-- TARGET: waiting for target Vcc
-- TARGET: waiting for target Vcc
-- TARGET: processing power-up delay
-- TARGET: processing user reset request
-- BDI asserts HRESET
-- Reset JTAG controller passed
-- Bypass check: 0x55 => 0xAA
-- Bypass check: 0x55 => 0xAA
-- JTAG exists check passed
-- Target PVR is 0x00810101
-- COP status is 0x01
-- Check running state passed
-- BDI scans COP freeze command
-- BDI removes HRESET
-- COP status is 0x05
-- Check stopped state passed
-- Check LSRL length passed
-- BDI sets breakpoint at 0xFFF00100
-- BDI resumes program execution
-- Waiting for target stop passed
-- TARGET: Target PVR is 0x00810101
-- TARGET: reseting target passed
-- TARGET: processing target startup ....
-- TARGET: processing target startup passed
-BDI>
-
-
-PART 6)
-  Erase the current contents of the flash memory:
-
-BDI>era 0xFFF00000
-    Erasing flash at 0xfff00000
-    Erasing flash passed
-BDI>era 0xFFF04000
-    Erasing flash at 0xfff04000
-    Erasing flash passed
-BDI>era 0xFFF06000
-    Erasing flash at 0xfff06000
-    Erasing flash passed
-BDI>era 0xFFF08000
-    Erasing flash at 0xfff08000
-    Erasing flash passed
-BDI>era 0xFFF10000
-    Erasing flash at 0xfff10000
-    Erasing flash passed
-BDI>era 0xFFF20000
-    Erasing flash at 0xfff20000
-    Erasing flash passed
-
-
-PART 7)
-  Program the flash memory with the U-Boot image:
-
-BDI>prog 0xFFF00000 u-boot.bin bin
-    Programming u-boot.bin , please wait ....
-    Programming flash passed
-
-
-PART 8)
-  Connect PC to Sandpoint:
-Using a crossover serial cable, attach the PC serial port to the
-Sandpoint's COM1.  Set communications parameters to 8N1 / 9600 baud.
-
-
-PART 9)
-  Reset the Unity and begin U-Boot execution:
-
-BDI>reset
-- TARGET: processing user reset request
-- TARGET: Target PVR is 0x00810101
-- TARGET: reseting target passed
-- TARGET: processing target init list ....
-- TARGET: processing target init list passed
-
-BDI>go
-
-Now see output from U-Boot running, sent via serial port:
-
-U-Boot 1.1.4 (Jan 23 2002 - 18:29:19)
-
-CPU:   MPC8240 Revision 1.1 at 264 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: Sandpoint 8240 Unity
-DRAM:  64 MB
-FLASH:  2 MB
-PCI:    scanning bus0 ...
-  bus dev fn venID devID class  rev MBAR0    MBAR1    IPIN ILINE
-  00  00  00 1057  0003  060000 13  00000008 00000000 01   00
-  00  0b  00 10ad  0565  060100 10  00000000 00000000 00   00
-  00  0f  00 8086  1229  020000 08  80000000 80000001 01   00
-In:    serial
-Out:   serial
-Err:   serial
-=>
-
-
-PART 10)
-  Set and save any required environmental variables, examples of some:
-
-=> setenv ethaddr 00:03:47:97:D0:79
-=> setenv bootfile your_qnx_image_here
-=> setenv hostname sandpointX
-=> setenv netmask 255.255.255.0
-=> setenv ipaddr 192.168.0.11
-=> setenv serverip 192.168.0.10
-=> setenv gatewayip=192.168.0.1
-=> saveenv
-Saving Environment to Flash...
-Un-Protected 1 sectors
-Erasing Flash...
- done
-Erased 1 sectors
-Writing to Flash... done
-Protected 1 sectors
-=>
-
-**** Example environment: ****
-
-=> printenv
-baudrate=9600
-bootfile=telemetry
-hostname=sp1
-ethaddr=00:03:47:97:E4:6B
-load=tftp 100000 u-boot.bin
-update=protect off all;era FFF00000 FFF3FFFF;cp.b 100000 FFF00000 ${filesize};saveenv
-filesize=1f304
-gatewayip=145.17.228.1
-netmask=255.255.255.0
-ipaddr=145.17.228.42
-serverip=145.17.242.46
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 332/8188 bytes
-=>
-
-here's some text useful stuff for cut-n-paste:
-setenv hostname sandpoint1
-setenv netmask 255.255.255.0
-setenv ipaddr 145.17.228.81
-setenv serverip 145.17.242.46
-setenv gatewayip 145.17.228.1
-saveenv
-
-PART 11)
-  Test U-Boot by tftp'ing new U-Boot, overwriting current:
-
-=> protect off all
-Un-Protect Flash Bank # 1
-=> tftp 100000 u-boot.bin
-eth: Intel i82559 PCI EtherExpressPro @0x80000000(bus=0, device=15, func=0)
-ARP broadcast 1
-TFTP from server 145.17.242.46; our IP address is 145.17.228.42; sending through
- gateway 145.17.228.1
-Filename 'u-boot.bin'.
-Load address: 0x100000
-Loading: #########################
-done
-Bytes transferred = 127628 (1f28c hex)
-=> era all
-Erase Flash Bank # 1
- done
-Erase Flash Bank # 2 - missing
-=> cp.b 0x100000 FFF00000 1f28c
-Copy to Flash... done
-=> saveenv
-Saving Environment to Flash...
-Un-Protected 1 sectors
-Erasing Flash...
- done
-Erased 1 sectors
-Writing to Flash... done
-Protected 1 sectors
-=> reset
-
-You can put these commands into some environment variables;
-
-=> setenv load tftp 100000 u-boot.bin
-=> setenv update protect off all\;era FFF00000 FFF3FFFF\;cp.b 100000 FFF00000 \${filesize}\;saveenv
-=> saveenv
-
-Then you just have to type "run load" then "run update"
-
-=> run load
-eth: Intel i82559 PCI EtherExpressPro @0x80000000(bus=0, device=15, func=0)
-ARP broadcast 1
-TFTP from server 145.17.242.46; our IP address is 145.17.228.42; sending through
- gateway 145.17.228.1
-Filename 'u-boot.bin'.
-Load address: 0x100000
-Loading: #########################
-done
-Bytes transferred = 127748 (1f304 hex)
-=> run update
-Un-Protect Flash Bank # 1
-Un-Protect Flash Bank # 2
-Erase Flash from 0xfff00000 to 0xfff3ffff
- done
-Erased 7 sectors
-Copy to Flash... done
-Saving Environment to Flash...
-Un-Protected 1 sectors
-Erasing Flash...
- done
-Erased 1 sectors
-Writing to Flash... done
-Protected 1 sectors
-=>
-
-
-PART 12)
-  Load OS image (ELF format) via U-Boot using tftp
-
-
-=> tftp 800000 sandpoint-simple.elf
-eth: Intel i82559 PCI EtherExpressPro @0x80000000(bus=0, device=15, func=0)
-ARP broadcast 1
-TFTP from server 145.17.242.46; our IP address is 145.17.228.42; sending through
- gateway 145.17.228.1
-Filename 'sandpoint-simple.elf'.
-Load address: 0x800000
-Loading: #################################################################
-        #################################################################
-        #################################################################
-        ########################
-done
-Bytes transferred = 1120284 (11181c hex)
-==>
-
-PART 13)
-  Begin OS image execution: (note that unless you have the
-serial parameters of your OS image set to 9600 (i.e. same as
-the U-Boot binary) you will get garbage here until you change
-the serial communications speed.
-
-=> bootelf 800000
-Loading  @ 0x001f0100 (1120028 bytes)
-## Starting application at 0x001f1d28 ...
-Replace init_hwinfo() with a board specific version
-
-Loading QNX6....
-
-Header size=0x0000009c, Total Size=0x000005c0, #Cpu=1, Type=1
-<...loader and kernel messages snipped...>
-
-Welcome to Neutrino on the Sandpoint
-#
-
-
-other information:
-
-CVS Retrieval Notes:
-
-U-Boot's SourceForge CVS repository can be checked out
-through anonymous (pserver) CVS with the following
-instruction set. The module you wish to check out must
-be specified as the modulename. When prompted for a
-password for anonymous, simply press the Enter key.
-
-cvs -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot login
-
-cvs -z6 -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot co -P u-boot
diff --git a/board/sandpoint/dinkdl b/board/sandpoint/dinkdl
deleted file mode 100644 (file)
index f281452..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#! /bin/bash
-tr -d "\r" <$1 >/dev/tts/1
diff --git a/board/sandpoint/flash.c b/board/sandpoint/flash.c
deleted file mode 100644 (file)
index 1ab668c..0000000
+++ /dev/null
@@ -1,748 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-#include <w83c553f.h>
-
-#define ROM_CS0_START  0xFF800000
-#define ROM_CS1_START  0xFF000000
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips    */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR  (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE  CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-#if 0
-static void flash_get_offsets (ulong base, flash_info_t *info);
-#endif /* 0 */
-
-/*flash command address offsets*/
-
-#if 0
-#define ADDR0           (0x555)
-#define ADDR1           (0x2AA)
-#define ADDR3           (0x001)
-#else
-#define ADDR0          (0xAAA)
-#define ADDR1          (0x555)
-#define ADDR3          (0x001)
-#endif
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-#if 0
-static int byte_parity_odd(unsigned char x) __attribute__ ((const));
-#endif /* 0 */
-static unsigned long flash_id(unsigned char mfct, unsigned char chip) __attribute__ ((const));
-
-typedef struct
-{
-  FLASH_WORD_SIZE extval;
-  unsigned short intval;
-} map_entry;
-
-#if 0
-static int
-byte_parity_odd(unsigned char x)
-{
-  x ^= x >> 4;
-  x ^= x >> 2;
-  x ^= x >> 1;
-  return (x & 0x1) != 0;
-}
-#endif /* 0 */
-
-
-static unsigned long
-flash_id(unsigned char mfct, unsigned char chip)
-{
-  static const map_entry mfct_map[] =
-    {
-      {(FLASH_WORD_SIZE) AMD_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_AMD >> 16)},
-      {(FLASH_WORD_SIZE) FUJ_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_FUJ >> 16)},
-      {(FLASH_WORD_SIZE) STM_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_STM >> 16)},
-      {(FLASH_WORD_SIZE) MT_MANUFACT,  (unsigned short) ((unsigned long) FLASH_MAN_MT >> 16)},
-      {(FLASH_WORD_SIZE) INTEL_MANUFACT,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)},
-      {(FLASH_WORD_SIZE) INTEL_ALT_MANU,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)}
-    };
-
-  static const map_entry chip_map[] =
-  {
-    {AMD_ID_F040B,     FLASH_AM040},
-    {(FLASH_WORD_SIZE) STM_ID_x800AB,  FLASH_STM800AB}
-  };
-
-  const map_entry *p;
-  unsigned long result = FLASH_UNKNOWN;
-
-  /* find chip id */
-  for(p = &chip_map[0]; p < &chip_map[sizeof chip_map / sizeof chip_map[0]]; p++)
-    if(p->extval == chip)
-    {
-      result = FLASH_VENDMASK | p->intval;
-      break;
-    }
-
-  /* find vendor id */
-  for(p = &mfct_map[0]; p < &mfct_map[sizeof mfct_map / sizeof mfct_map[0]]; p++)
-    if(p->extval == mfct)
-    {
-      result &= ~FLASH_VENDMASK;
-      result |= (unsigned long) p->intval << 16;
-      break;
-    }
-
-  return result;
-}
-
-
-unsigned long
-flash_init(void)
-{
-  unsigned long i;
-  unsigned char j;
-  static const ulong flash_banks[] = CONFIG_SYS_FLASH_BANKS;
-
-  /* Init: no FLASHes known */
-  for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++)
-  {
-    flash_info_t * const pflinfo = &flash_info[i];
-    pflinfo->flash_id = FLASH_UNKNOWN;
-    pflinfo->size = 0;
-    pflinfo->sector_count = 0;
-  }
-
-  /* Enable writes to Sandpoint flash */
-  {
-    register unsigned char temp;
-    CONFIG_READ_BYTE(CONFIG_SYS_WINBOND_ISA_CFG_ADDR + WINBOND_CSCR, temp);
-    temp &= ~0x20; /* clear BIOSWP bit */
-    CONFIG_WRITE_BYTE(CONFIG_SYS_WINBOND_ISA_CFG_ADDR + WINBOND_CSCR, temp);
-  }
-
-  for(i = 0; i < sizeof flash_banks / sizeof flash_banks[0]; i++)
-  {
-    flash_info_t * const pflinfo = &flash_info[i];
-    const unsigned long base_address = flash_banks[i];
-    volatile FLASH_WORD_SIZE * const flash = (FLASH_WORD_SIZE *) base_address;
-#if 0
-    volatile FLASH_WORD_SIZE * addr2;
-#endif
-#if 0
-    /* write autoselect sequence */
-    flash[0x5555] = 0xaa;
-    flash[0x2aaa] = 0x55;
-    flash[0x5555] = 0x90;
-#else
-    flash[0xAAA << (3 * i)] = 0xaa;
-    flash[0x555 << (3 * i)] = 0x55;
-    flash[0xAAA << (3 * i)] = 0x90;
-#endif
-    __asm__ __volatile__("sync");
-
-#if 0
-    pflinfo->flash_id = flash_id(flash[0x0], flash[0x1]);
-#else
-    pflinfo->flash_id = flash_id(flash[0x0], flash[0x2 + 14 * i]);
-#endif
-
-    switch(pflinfo->flash_id & FLASH_TYPEMASK)
-    {
-      case FLASH_AM040:
-       pflinfo->size = 0x00080000;
-       pflinfo->sector_count = 8;
-       for(j = 0; j < 8; j++)
-       {
-         pflinfo->start[j] = base_address + 0x00010000 * j;
-         pflinfo->protect[j] = flash[(j << 16) | 0x2];
-       }
-       break;
-      case FLASH_STM800AB:
-       pflinfo->size = 0x00100000;
-       pflinfo->sector_count = 19;
-       pflinfo->start[0] = base_address;
-       pflinfo->start[1] = base_address + 0x4000;
-       pflinfo->start[2] = base_address + 0x6000;
-       pflinfo->start[3] = base_address + 0x8000;
-       for(j = 1; j < 16; j++)
-       {
-         pflinfo->start[j+3] = base_address + 0x00010000 * j;
-       }
-#if 0
-       /* check for protected sectors */
-       for (j = 0; j < pflinfo->sector_count; j++) {
-         /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-         /* D0 = 1 if protected */
-         addr2 = (volatile FLASH_WORD_SIZE *)(pflinfo->start[j]);
-           if (pflinfo->flash_id & FLASH_MAN_SST)
-             pflinfo->protect[j] = 0;
-           else
-             pflinfo->protect[j] = addr2[2] & 1;
-       }
-#endif
-       break;
-    }
-    /* Protect monitor and environment sectors
-     */
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-    flash_protect(FLAG_PROTECT_SET,
-               CONFIG_SYS_MONITOR_BASE,
-               CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-               &flash_info[0]);
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-    flash_protect(FLAG_PROTECT_SET,
-               CONFIG_ENV_ADDR,
-               CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
-               &flash_info[0]);
-#endif
-
-    /* reset device to read mode */
-    flash[0x0000] = 0xf0;
-    __asm__ __volatile__("sync");
-  }
-
-    return flash_info[0].size + flash_info[1].size;
-}
-
-#if 0
-static void
-flash_get_offsets (ulong base, flash_info_t *info)
-{
-    int i;
-
-    /* set up sector start address table */
-       if (info->flash_id & FLASH_MAN_SST)
-         {
-           for (i = 0; i < info->sector_count; i++)
-             info->start[i] = base + (i * 0x00010000);
-         }
-       else
-    if (info->flash_id & FLASH_BTYPE) {
-       /* set sector offsets for bottom boot block type    */
-       info->start[0] = base + 0x00000000;
-       info->start[1] = base + 0x00004000;
-       info->start[2] = base + 0x00006000;
-       info->start[3] = base + 0x00008000;
-       for (i = 4; i < info->sector_count; i++) {
-           info->start[i] = base + (i * 0x00010000) - 0x00030000;
-       }
-    } else {
-       /* set sector offsets for top boot block type       */
-       i = info->sector_count - 1;
-       info->start[i--] = base + info->size - 0x00004000;
-       info->start[i--] = base + info->size - 0x00006000;
-       info->start[i--] = base + info->size - 0x00008000;
-       for (; i >= 0; i--) {
-           info->start[i] = base + i * 0x00010000;
-       }
-    }
-
-}
-#endif /* 0 */
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info(flash_info_t *info)
-{
-  static const char unk[] = "Unknown";
-  const char *mfct = unk, *type = unk;
-  unsigned int i;
-
-  if(info->flash_id != FLASH_UNKNOWN)
-  {
-    switch(info->flash_id & FLASH_VENDMASK)
-    {
-      case FLASH_MAN_AMD:      mfct = "AMD";                           break;
-      case FLASH_MAN_FUJ:      mfct = "FUJITSU";                       break;
-      case FLASH_MAN_STM:      mfct = "STM";                           break;
-      case FLASH_MAN_SST:      mfct = "SST";                           break;
-      case FLASH_MAN_BM:       mfct = "Bright Microelectonics";        break;
-      case FLASH_MAN_INTEL:    mfct = "Intel";                         break;
-    }
-
-    switch(info->flash_id & FLASH_TYPEMASK)
-    {
-      case FLASH_AM040:                type = "AM29F040B (512K * 8, uniform sector size)";     break;
-      case FLASH_AM400B:       type = "AM29LV400B (4 Mbit, bottom boot sect)";         break;
-      case FLASH_AM400T:       type = "AM29LV400T (4 Mbit, top boot sector)";          break;
-      case FLASH_AM800B:       type = "AM29LV800B (8 Mbit, bottom boot sect)";         break;
-      case FLASH_AM800T:       type = "AM29LV800T (8 Mbit, top boot sector)";          break;
-      case FLASH_AM160T:       type = "AM29LV160T (16 Mbit, top boot sector)";         break;
-      case FLASH_AM320B:       type = "AM29LV320B (32 Mbit, bottom boot sect)";        break;
-      case FLASH_AM320T:       type = "AM29LV320T (32 Mbit, top boot sector)";         break;
-      case FLASH_STM800AB:     type = "M29W800AB (8 Mbit, bottom boot sect)";          break;
-      case FLASH_SST800A:      type = "SST39LF/VF800 (8 Mbit, uniform sector size)";   break;
-      case FLASH_SST160A:      type = "SST39LF/VF160 (16 Mbit, uniform sector size)";  break;
-    }
-  }
-
-  printf(
-    "\n  Brand: %s Type: %s\n"
-    "  Size: %lu KB in %d Sectors\n",
-    mfct,
-    type,
-    info->size >> 10,
-    info->sector_count
-  );
-
-  printf ("  Sector Start Addresses:");
-
-  for (i = 0; i < info->sector_count; i++)
-  {
-    unsigned long size;
-    unsigned int erased;
-    unsigned long * flash = (unsigned long *) info->start[i];
-
-    /*
-     * Check if whole sector is erased
-     */
-    size =
-      (i != (info->sector_count - 1)) ?
-      (info->start[i + 1] - info->start[i]) >> 2 :
-      (info->start[0] + info->size - info->start[i]) >> 2;
-
-    for(
-      flash = (unsigned long *) info->start[i], erased = 1;
-      (flash != (unsigned long *) info->start[i] + size) && erased;
-      flash++
-    )
-      erased = *flash == ~0x0UL;
-
-    printf(
-      "%s %08lX %s %s",
-      (i % 5) ? "" : "\n   ",
-      info->start[i],
-      erased ? "E" : " ",
-      info->protect[i] ? "RO" : "  "
-    );
-  }
-
-  puts("\n");
-  return;
-}
-
-#if 0
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong
-flash_get_size (vu_long *addr, flash_info_t *info)
-{
-   short i;
-    FLASH_WORD_SIZE value;
-    ulong base = (ulong)addr;
-       volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
-
-    printf("flash_get_size: \n");
-    /* Write auto select command: read Manufacturer ID */
-    eieio();
-    addr2[ADDR0] = (FLASH_WORD_SIZE)0xAA;
-    addr2[ADDR1] = (FLASH_WORD_SIZE)0x55;
-    addr2[ADDR0] = (FLASH_WORD_SIZE)0x90;
-    value = addr2[0];
-
-    switch (value) {
-    case (FLASH_WORD_SIZE)AMD_MANUFACT:
-       info->flash_id = FLASH_MAN_AMD;
-       break;
-    case (FLASH_WORD_SIZE)FUJ_MANUFACT:
-       info->flash_id = FLASH_MAN_FUJ;
-       break;
-    case (FLASH_WORD_SIZE)SST_MANUFACT:
-       info->flash_id = FLASH_MAN_SST;
-       break;
-    default:
-       info->flash_id = FLASH_UNKNOWN;
-       info->sector_count = 0;
-       info->size = 0;
-       return (0);         /* no or unknown flash  */
-    }
-    printf("recognised manufacturer");
-
-    value = addr2[ADDR3];          /* device ID        */
-       debug ("\ndev_code=%x\n", value);
-
-    switch (value) {
-    case (FLASH_WORD_SIZE)AMD_ID_LV400T:
-       info->flash_id += FLASH_AM400T;
-       info->sector_count = 11;
-       info->size = 0x00080000;
-       break;              /* => 0.5 MB        */
-
-    case (FLASH_WORD_SIZE)AMD_ID_LV400B:
-       info->flash_id += FLASH_AM400B;
-       info->sector_count = 11;
-       info->size = 0x00080000;
-       break;              /* => 0.5 MB        */
-
-    case (FLASH_WORD_SIZE)AMD_ID_LV800T:
-       info->flash_id += FLASH_AM800T;
-       info->sector_count = 19;
-       info->size = 0x00100000;
-       break;              /* => 1 MB      */
-
-    case (FLASH_WORD_SIZE)AMD_ID_LV800B:
-       info->flash_id += FLASH_AM800B;
-       info->sector_count = 19;
-       info->size = 0x00100000;
-       break;              /* => 1 MB      */
-
-    case (FLASH_WORD_SIZE)AMD_ID_LV160T:
-       info->flash_id += FLASH_AM160T;
-       info->sector_count = 35;
-       info->size = 0x00200000;
-       break;              /* => 2 MB      */
-
-    case (FLASH_WORD_SIZE)AMD_ID_LV160B:
-       info->flash_id += FLASH_AM160B;
-       info->sector_count = 35;
-       info->size = 0x00200000;
-       break;              /* => 2 MB      */
-
-    case (FLASH_WORD_SIZE)SST_ID_xF800A:
-       info->flash_id += FLASH_SST800A;
-       info->sector_count = 16;
-       info->size = 0x00100000;
-       break;              /* => 1 MB      */
-
-    case (FLASH_WORD_SIZE)SST_ID_xF160A:
-       info->flash_id += FLASH_SST160A;
-       info->sector_count = 32;
-       info->size = 0x00200000;
-       break;              /* => 2 MB      */
-
-    case (FLASH_WORD_SIZE)AMD_ID_F040B:
-       info->flash_id += FLASH_AM040;
-       info->sector_count = 8;
-       info->size = 0x00080000;
-       break;              /* => 0.5 MB      */
-
-    default:
-       info->flash_id = FLASH_UNKNOWN;
-       return (0);         /* => no or unknown flash */
-
-    }
-
-    printf("flash id %lx; sector count %x, size %lx\n", info->flash_id,info->sector_count,info->size);
-    /* set up sector start address table */
-       if (info->flash_id & FLASH_MAN_SST)
-         {
-           for (i = 0; i < info->sector_count; i++)
-             info->start[i] = base + (i * 0x00010000);
-         }
-       else
-    if (info->flash_id & FLASH_BTYPE) {
-       /* set sector offsets for bottom boot block type    */
-       info->start[0] = base + 0x00000000;
-       info->start[1] = base + 0x00004000;
-       info->start[2] = base + 0x00006000;
-       info->start[3] = base + 0x00008000;
-       for (i = 4; i < info->sector_count; i++) {
-           info->start[i] = base + (i * 0x00010000) - 0x00030000;
-       }
-    } else {
-       /* set sector offsets for top boot block type       */
-       i = info->sector_count - 1;
-       info->start[i--] = base + info->size - 0x00004000;
-       info->start[i--] = base + info->size - 0x00006000;
-       info->start[i--] = base + info->size - 0x00008000;
-       for (; i >= 0; i--) {
-           info->start[i] = base + i * 0x00010000;
-       }
-    }
-
-    /* check for protected sectors */
-    for (i = 0; i < info->sector_count; i++) {
-       /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-       /* D0 = 1 if protected */
-       addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
-               if (info->flash_id & FLASH_MAN_SST)
-                 info->protect[i] = 0;
-               else
-                 info->protect[i] = addr2[2] & 1;
-    }
-
-    /*
-     * Prevent writes to uninitialized FLASH.
-     */
-    if (info->flash_id != FLASH_UNKNOWN) {
-       addr2 = (FLASH_WORD_SIZE *)info->start[0];
-       *addr2 = (FLASH_WORD_SIZE)0x00F000F0;   /* reset bank */
-    }
-
-    return (info->size);
-}
-
-#endif
-
-
-int
-flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-    volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
-    int flag, prot, sect, l_sect;
-    ulong start, now, last;
-    unsigned char sh8b;
-
-    if ((s_first < 0) || (s_first > s_last)) {
-       if (info->flash_id == FLASH_UNKNOWN) {
-           printf ("- missing\n");
-       } else {
-           printf ("- no sectors to erase\n");
-       }
-       return 1;
-    }
-
-    if ((info->flash_id == FLASH_UNKNOWN) ||
-       (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
-       printf ("Can't erase unknown flash type - aborted\n");
-       return 1;
-    }
-
-    prot = 0;
-    for (sect=s_first; sect<=s_last; ++sect) {
-       if (info->protect[sect]) {
-           prot++;
-       }
-    }
-
-    if (prot) {
-       printf ("- Warning: %d protected sectors will not be erased!\n",
-           prot);
-    } else {
-       printf ("\n");
-    }
-
-    l_sect = -1;
-
-    /* Check the ROM CS */
-    if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START))
-      sh8b = 3;
-    else
-      sh8b = 0;
-
-    /* Disable interrupts which might cause a timeout here */
-    flag = disable_interrupts();
-
-    addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-    addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-    addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
-    addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-    addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-
-    /* Start erase on unprotected sectors */
-    for (sect = s_first; sect<=s_last; sect++) {
-       if (info->protect[sect] == 0) { /* not protected */
-           addr = (FLASH_WORD_SIZE *)(info->start[0] + (
-                               (info->start[sect] - info->start[0]) << sh8b));
-                       if (info->flash_id & FLASH_MAN_SST)
-                         {
-                           addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-                           addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-                           addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
-                           addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-                           addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-                           addr[0] = (FLASH_WORD_SIZE)0x00500050;  /* block erase */
-                           udelay(30000);  /* wait 30 ms */
-                         }
-                       else
-                         addr[0] = (FLASH_WORD_SIZE)0x00300030;  /* sector erase */
-           l_sect = sect;
-       }
-    }
-
-    /* re-enable interrupts if necessary */
-    if (flag)
-       enable_interrupts();
-
-    /* wait at least 80us - let's wait 1 ms */
-    udelay (1000);
-
-    /*
-     * We wait for the last triggered sector
-     */
-    if (l_sect < 0)
-       goto DONE;
-
-    start = get_timer (0);
-    last  = start;
-    addr = (FLASH_WORD_SIZE *)(info->start[0] + (
-                       (info->start[l_sect] - info->start[0]) << sh8b));
-    while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
-       if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-           printf ("Timeout\n");
-           return 1;
-       }
-       /* show that we're waiting */
-       if ((now - last) > 1000) {  /* every second */
-           serial_putc ('.');
-           last = now;
-       }
-    }
-
-DONE:
-    /* reset to read mode */
-    addr = (FLASH_WORD_SIZE *)info->start[0];
-    addr[0] = (FLASH_WORD_SIZE)0x00F000F0;  /* reset bank */
-
-    printf (" done\n");
-    return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-    ulong cp, wp, data;
-    int i, l, rc;
-
-    wp = (addr & ~3);   /* get lower word aligned address */
-
-    /*
-     * handle unaligned start bytes
-     */
-    if ((l = addr - wp) != 0) {
-       data = 0;
-       for (i=0, cp=wp; i<l; ++i, ++cp) {
-           data = (data << 8) | (*(uchar *)cp);
-       }
-       for (; i<4 && cnt>0; ++i) {
-           data = (data << 8) | *src++;
-           --cnt;
-           ++cp;
-       }
-       for (; cnt==0 && i<4; ++i, ++cp) {
-           data = (data << 8) | (*(uchar *)cp);
-       }
-
-       if ((rc = write_word(info, wp, data)) != 0) {
-           return (rc);
-       }
-       wp += 4;
-    }
-
-    /*
-     * handle word aligned part
-     */
-    while (cnt >= 4) {
-       data = 0;
-       for (i=0; i<4; ++i) {
-           data = (data << 8) | *src++;
-       }
-       if ((rc = write_word(info, wp, data)) != 0) {
-           return (rc);
-       }
-       wp  += 4;
-       cnt -= 4;
-    }
-
-    if (cnt == 0) {
-       return (0);
-    }
-
-    /*
-     * handle unaligned tail bytes
-     */
-    data = 0;
-    for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-       data = (data << 8) | *src++;
-       --cnt;
-    }
-    for (; i<4; ++i, ++cp) {
-       data = (data << 8) | (*(uchar *)cp);
-    }
-
-    return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)info->start[0];
-       volatile FLASH_WORD_SIZE *dest2;
-       volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
-    ulong start;
-    int flag;
-       int i;
-    unsigned char sh8b;
-
-    /* Check the ROM CS */
-    if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START))
-      sh8b = 3;
-    else
-      sh8b = 0;
-
-    dest2 = (FLASH_WORD_SIZE *)(((dest - info->start[0]) << sh8b) +
-                               info->start[0]);
-
-    /* Check if Flash is (sufficiently) erased */
-    if ((*dest2 & (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
-       return (2);
-    }
-    /* Disable interrupts which might cause a timeout here */
-    flag = disable_interrupts();
-
-       for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++)
-         {
-           addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-           addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-           addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00A000A0;
-
-           dest2[i << sh8b] = data2[i];
-
-           /* re-enable interrupts if necessary */
-           if (flag)
-             enable_interrupts();
-
-           /* data polling for D7 */
-           start = get_timer (0);
-           while ((dest2[i << sh8b] & (FLASH_WORD_SIZE)0x00800080) !=
-                  (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
-             if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-               return (1);
-             }
-           }
-         }
-
-    return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/sandpoint/sandpoint.c b/board/sandpoint/sandpoint.c
deleted file mode 100644 (file)
index 16237bd..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * (C) Copyright 2000
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-#include <netdev.h>
-
-int checkboard (void)
-{
-       /*TODO: Check processor type */
-
-       puts (  "Board: Sandpoint "
-#ifdef CONFIG_MPC8240
-               "8240"
-#endif
-#ifdef CONFIG_MPC8245
-               "8245"
-#endif
-               " Unity ##Test not implemented yet##\n");
-       return 0;
-}
-
-#if 0  /* NOT USED */
-int checkflash (void)
-{
-       /* TODO: XXX XXX XXX */
-       printf ("## Test not implemented yet ##\n");
-
-       return (0);
-}
-#endif
-
-phys_size_t initdram (int board_type)
-{
-       long size;
-       long new_bank0_end;
-       long mear1;
-       long emear1;
-
-       size = get_ram_size(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       new_bank0_end = size - 1;
-       mear1 = mpc824x_mpc107_getreg(MEAR1);
-       emear1 = mpc824x_mpc107_getreg(EMEAR1);
-       mear1 = (mear1  & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
-       emear1 = (emear1 & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
-       mpc824x_mpc107_setreg(MEAR1, mear1);
-       mpc824x_mpc107_setreg(EMEAR1, emear1);
-
-       return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_sandpoint_config_table[] = {
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                      PCI_ENET0_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x10, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
-                                      PCI_ENET1_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-       { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_sandpoint_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
-       pci_mpc824x_init(&hose);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds
deleted file mode 100644 (file)
index cd9f07c..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * (C) Copyright 2001-2007
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc824x/start.o   (.text*)
-    *(.text.v*printf)
-
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o      (.ppcenv*)
-
-    *(.text*)
-    . = ALIGN(16);
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 89da47ed12d0d301f790d02787d05462f78d1798..72786d2ace6516f9ebe251f3bf1371c9107ad00b 100644 (file)
@@ -214,11 +214,13 @@ void sdram_init(void)
 #endif
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
index d584276253a5e33414a085d2e5414844cfd11a94..25329e44736eba2b47f18c8505b9ca0351866152 100644 (file)
@@ -301,12 +301,14 @@ int last_stage_init(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
 #ifdef CONFIG_FSL_PCI_INIT
        FT_FSL_PCI_SETUP;
 #endif
+
+       return 0;
 }
 #endif
index 4906be488934d22d67eef6e9d4b6307dd5e7445d..6bdf1a28e97bbea16eff991718df3bad378b0c98 100644 (file)
@@ -173,11 +173,13 @@ void pci_init_board(void)
 
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup (void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
        FT_FSL_PCI_SETUP;
+
+       return 0;
 }
 #endif
 
index e3a582f3dcf9cc0d38c249ef78314f14ecaaa469..73bfa00eed63ac993ede9bb9fc040a4424598223 100644 (file)
@@ -72,8 +72,10 @@ static FLASH_BUS_RET flash_status_reg (void)
 
        FLASH_BUS *addr = (FLASH_BUS *) 0;
 
+       /* cppcheck-suppress nullPointer */
        *addr = FLASH_CMD (CFI_INTEL_CMD_READ_STATUS_REGISTER);
 
+       /* cppcheck-suppress nullPointer */
        return *addr;
 }
 
index a1c383e1b2c4cb6b6d8b9375db2a9894aa23805f..467580c67b965f99fb85e33f9013fe08168c6f2b 100644 (file)
@@ -1,8 +1,5 @@
 if TARGET_SHMIN
 
-config SYS_CPU
-       default "sh3"
-
 config SYS_BOARD
        default "shmin"
 
index 2782bcc2a71febd7c4cc7e507b2d0645883a6dc0..cc0ac6b0bda3eff3f2ffd3b0b1c9cab6ae11b879 100644 (file)
@@ -96,15 +96,6 @@ const struct dpll_params *get_dpll_ddr_params(void)
        return &dpll_ddr;
 }
 
-#ifdef CONFIG_BOARD_LATE_INIT
-int board_late_init(void)
-{
-       omap_nand_switch_ecc(1, 8);
-
-       return 0;
-}
-#endif
-
 #ifndef CONFIG_SPL_BUILD
 #if defined(BOARD_DFU_BUTTON_GPIO)
 /*
index 266dbbbb5f88ae6f64a2fc87f11966cd17bff5fc..7baac3dda6da55777e01b5413d593c11a7cc7628 100644 (file)
@@ -86,6 +86,7 @@ int get_factory_record_val(unsigned char *eeprom_buf, int size,       uchar *record,
        int i, nxt = 0;
        int c;
        unsigned char end = 0xff;
+       unsigned char tmp;
 
        for (i = 0; fact_get_char(i) != end; i = nxt) {
                nxt = i + 1;
@@ -93,6 +94,7 @@ int get_factory_record_val(unsigned char *eeprom_buf, int size,       uchar *record,
                        int pos;
                        int endpos;
                        int z;
+                       int level = 0;
 
                        c = strncmp((char *)&eeprom_buf[i + 1], (char *)record,
                                    strlen((char *)record));
@@ -103,22 +105,30 @@ int get_factory_record_val(unsigned char *eeprom_buf, int size,   uchar *record,
                                /* search for "<" */
                                c = -1;
                                for (z = pos; fact_get_char(z) != end; z++) {
-                                       if ((fact_get_char(z) == '<')  ||
-                                           (fact_get_char(z) == '>')) {
-                                               endpos = z;
-                                               nxt = endpos;
-                                               c = 0;
-                                               break;
+                                       if (fact_get_char(z) == '<') {
+                                               if (level == 0) {
+                                                       endpos = z;
+                                                       nxt = endpos;
+                                                       c = 0;
+                                                       break;
+                                               } else {
+                                                       level--;
+                                               }
                                        }
+                                       if (fact_get_char(z) == '>')
+                                               level++;
                                }
+                       } else {
+                               continue;
                        }
                        if (c == 0) {
                                /* end found -> call get_factory_val */
+                               tmp = eeprom_buf[endpos];
                                eeprom_buf[endpos] = end;
                                ret = get_factory_val(&eeprom_buf[pos],
-                                       size - pos, name, buf, len);
+                                       endpos - pos, name, buf, len);
                                /* fix buffer */
-                               eeprom_buf[endpos] = '<';
+                               eeprom_buf[endpos] = tmp;
                                debug("%s: %s.%s = %s\n",
                                      __func__, record, name, buf);
                                return ret;
@@ -210,15 +220,6 @@ int factoryset_read_eeprom(int i2c_addr)
        printf("DFU USB: VID = 0x%4x, PID = 0x%4x\n", factory_dat.usb_vendor_id,
               factory_dat.usb_product_id);
 #endif
-       if (0 <= get_factory_record_val(cp, size, (uchar *)"DEV",
-                                       (uchar *)"id", buf,
-                                       MAX_STRING_LENGTH)) {
-               if (strncmp((const char *)buf, "PXM50", 5) == 0)
-                       factory_dat.pxm50 = 1;
-               else
-                       factory_dat.pxm50 = 0;
-       }
-       debug("PXM50: %d\n", factory_dat.pxm50);
 #if defined(CONFIG_VIDEO)
        if (0 <= get_factory_record_val(cp, size, (uchar *)"DISP1",
                                        (uchar *)"name", factory_dat.disp_name,
@@ -238,6 +239,23 @@ int factoryset_read_eeprom(int i2c_addr)
                                                            NULL, 16);
                debug("version number: %d\n", factory_dat.version);
        }
+       /* Get ASN from factory set if available */
+       if (0 <= get_factory_record_val(cp, size, (uchar *)"DEV",
+                                       (uchar *)"id", factory_dat.asn,
+                                       MAX_STRING_LENGTH)) {
+               debug("factoryset asn: %s\n", factory_dat.asn);
+       } else {
+               factory_dat.asn[0] = 0;
+       }
+       /* Get COMP/ver from factory set if available */
+       if (0 <= get_factory_record_val(cp, size, (uchar *)"COMP",
+                                       (uchar *)"ver",
+                                       factory_dat.comp_version,
+                                       MAX_STRING_LENGTH)) {
+               debug("factoryset COMP/ver: %s\n", factory_dat.comp_version);
+       } else {
+               strcpy((char *)factory_dat.comp_version, "1.0");
+       }
 
        return 0;
 
index 4d6de10f5237266caada475dc286e0cd281e1024..3f23d5ebf4126fd1eb1f711e45d473bac3d15e71 100644 (file)
@@ -20,6 +20,8 @@ struct factorysetcontainer {
 #endif
        unsigned char serial[MAX_STRING_LENGTH];
        int version;
+       uchar asn[MAX_STRING_LENGTH];
+       uchar comp_version[MAX_STRING_LENGTH];
 };
 
 int factoryset_read_eeprom(int i2c_addr);
index f1e93ef063639bc901da08e82678ca0e171de5da..0a11540cca01d316db4b7eb6f71fd234a2cc9360 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_CMD_NAND
 static void corvus_nand_hw_init(void)
 {
        struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
        struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
        unsigned long csa;
 
        /* Enable CS3 */
@@ -63,22 +61,111 @@ static void corvus_nand_hw_init(void)
               AT91_SMC_MODE_TDF_CYCLE(3),
               &smc->cs[3].mode);
 
-       writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
-
-       /* Configure RDY/BSY */
-       at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+       at91_periph_clk_enable(ATMEL_ID_PIOC);
 
        /* Enable NandFlash */
        at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
 }
+
+#if defined(CONFIG_SPL_BUILD)
+#include <spl.h>
+#include <nand.h>
+
+void at91_spl_board_init(void)
+{
+       /*
+        * For on the sam9m10g45ek board, the chip wm9711 stay in the test
+        * mode, so it need do some action to exit mode.
+        */
+       at91_set_gpio_output(AT91_PIN_PD7, 0);
+       at91_set_gpio_output(AT91_PIN_PD8, 0);
+       at91_set_pio_pullup(AT91_PIO_PORTD, 7, 1);
+       at91_set_pio_pullup(AT91_PIO_PORTD, 8, 1);
+       at91_set_pio_pullup(AT91_PIO_PORTA, 12, 1);
+       at91_set_pio_pullup(AT91_PIO_PORTA, 13, 1);
+       at91_set_pio_pullup(AT91_PIO_PORTA, 15, 1);
+
+       corvus_nand_hw_init();
+
+       /* Configure recovery button PINs */
+       at91_set_gpio_input(AT91_PIN_PB7, 1);
+
+       /* check if button is pressed */
+       if (at91_get_gpio_value(AT91_PIN_PB7) == 0) {
+               u32 boot_device;
+
+               debug("Recovery button pressed\n");
+               boot_device = spl_boot_device();
+               switch (boot_device) {
+#ifdef CONFIG_SPL_NAND_SUPPORT
+               case BOOT_DEVICE_NAND:
+                       nand_init();
+                       spl_nand_erase_one(0, 0);
+                       break;
 #endif
+               }
+       }
+}
 
-#ifdef CONFIG_CMD_USB
-static void taurus_usb_hw_init(void)
+#include <asm/arch/atmel_mpddrc.h>
+static void ddr2_conf(struct atmel_mpddr *ddr2)
+{
+       ddr2->md = (ATMEL_MPDDRC_MD_DBW_16_BITS | ATMEL_MPDDRC_MD_DDR2_SDRAM);
+
+       ddr2->cr = (ATMEL_MPDDRC_CR_NC_COL_10 |
+                   ATMEL_MPDDRC_CR_NR_ROW_14 |
+                   ATMEL_MPDDRC_CR_DIC_DS |
+                   ATMEL_MPDDRC_CR_DQMS_SHARED |
+                   ATMEL_MPDDRC_CR_CAS_DDR_CAS3);
+       ddr2->rtr = 0x24b;
+
+       ddr2->tpr0 = (6 << ATMEL_MPDDRC_TPR0_TRAS_OFFSET |/* 6*7.5 = 45 ns */
+                     2 << ATMEL_MPDDRC_TPR0_TRCD_OFFSET |/* 2*7.5 = 15 ns */
+                     2 << ATMEL_MPDDRC_TPR0_TWR_OFFSET | /* 2*7.5 = 15 ns */
+                     8 << ATMEL_MPDDRC_TPR0_TRC_OFFSET | /* 8*7.5 = 75 ns */
+                     2 << ATMEL_MPDDRC_TPR0_TRP_OFFSET | /* 2*7.5 = 15 ns */
+                     1 << ATMEL_MPDDRC_TPR0_TRRD_OFFSET | /* 1*7.5= 7.5 ns*/
+                     1 << ATMEL_MPDDRC_TPR0_TWTR_OFFSET | /* 1 clk cycle */
+                     2 << ATMEL_MPDDRC_TPR0_TMRD_OFFSET); /* 2 clk cycles */
+
+       ddr2->tpr1 = (2 << ATMEL_MPDDRC_TPR1_TXP_OFFSET | /* 2*7.5 = 15 ns */
+                     200 << ATMEL_MPDDRC_TPR1_TXSRD_OFFSET |
+                     16 << ATMEL_MPDDRC_TPR1_TXSNR_OFFSET |
+                     14 << ATMEL_MPDDRC_TPR1_TRFC_OFFSET);
+
+       ddr2->tpr2 = (1 << ATMEL_MPDDRC_TPR2_TRTP_OFFSET |
+                     0 << ATMEL_MPDDRC_TPR2_TRPA_OFFSET |
+                     7 << ATMEL_MPDDRC_TPR2_TXARDS_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR2_TXARD_OFFSET);
+}
+
+void mem_init(void)
 {
        struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       struct at91_matrix *mat = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+       struct atmel_mpddr ddr2;
+       unsigned long csa;
+
+       ddr2_conf(&ddr2);
 
-       writel(1 << ATMEL_ID_PIODE, &pmc->pcer);
+       /* enable DDR2 clock */
+       writel(0x4, &pmc->scer);
+
+       /* Chip select 1 is for DDR2/SDRAM */
+       csa = readl(&mat->ebicsa);
+       csa |= AT91_MATRIX_EBI_CS1A_SDRAMC;
+       csa &= ~AT91_MATRIX_EBI_VDDIOMSEL_3_3V;
+       writel(csa, &mat->ebicsa);
+
+       /* DDRAM2 Controller initialize */
+       ddr2_init(ATMEL_BASE_CS6, &ddr2);
+}
+#endif
+
+#ifdef CONFIG_CMD_USB
+static void taurus_usb_hw_init(void)
+{
+       at91_periph_clk_enable(ATMEL_ID_PIODE);
 
        at91_set_gpio_output(AT91_PIN_PD1, 0);
        at91_set_gpio_output(AT91_PIN_PD3, 0);
@@ -88,10 +175,8 @@ static void taurus_usb_hw_init(void)
 #ifdef CONFIG_MACB
 static void corvus_macb_hw_init(void)
 {
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
        /* Enable clock */
-       writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+       at91_periph_clk_enable(ATMEL_ID_EMAC);
 
        /*
         * Disable pull-up on:
index 9be2e344f8da37188cfcf12230016b0b91a3883e..ede73baf3e92f90d74fc9ff6f8050aad01e5c725 100644 (file)
@@ -280,4 +280,13 @@ U_BOOT_CMD(
 #endif /* #if defined(CONFIG_DRIVER_TI_CPSW) */
 #endif /* #if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) */
 
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+       omap_nand_switch_ecc(1, 8);
+
+       return 0;
+}
+#endif
+
 #include "../common/board.c"
index 64e69dc93ddc9f9823508f1a0427f5ac25ad8189..264ba025b70987779a1ed8774fbe7b609f87d507 100644 (file)
@@ -229,7 +229,7 @@ int board_eth_init(bd_t *bis)
 #endif /* #ifdef CONFIG_FACTORYSET */
 
        /* Set rgmii mode and enable rmii clock to be sourced from chip */
-       writel(RGMII_MODE_ENABLE , &cdev->miisel);
+       writel(RGMII_MODE_ENABLE  | RGMII_INT_DELAY, &cdev->miisel);
 
        rv = cpsw_register(&cpsw_data);
        if (rv < 0)
@@ -428,4 +428,38 @@ static int board_video_init(void)
        return 0;
 }
 #endif
+
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+       int ret;
+
+       omap_nand_switch_ecc(1, 8);
+
+#ifdef CONFIG_FACTORYSET
+       if (factory_dat.asn[0] != 0) {
+               char tmp[2 * MAX_STRING_LENGTH + 2];
+
+               if (strncmp((const char *)factory_dat.asn, "PXM50", 5) == 0)
+                       factory_dat.pxm50 = 1;
+               else
+                       factory_dat.pxm50 = 0;
+               sprintf(tmp, "%s_%s", factory_dat.asn,
+                       factory_dat.comp_version);
+               ret = setenv("boardid", tmp);
+               if (ret)
+                       printf("error setting board id\n");
+       } else {
+               factory_dat.pxm50 = 1;
+               ret = setenv("boardid", "PXM50_1.0");
+               if (ret)
+                       printf("error setting board id\n");
+       }
+       debug("PXM50: %d\n", factory_dat.pxm50);
+#endif
+
+       return 0;
+}
+#endif
+
 #include "../common/board.c"
index 1752df2c4fba3f33a29f33b8b99c750754bdb686..fb840f7ed2263ad2f96107280d17d759b2aa107f 100644 (file)
@@ -467,4 +467,27 @@ static int board_video_init(void)
        return 0;
 }
 #endif /* ifdef CONFIG_VIDEO */
+
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+       int ret;
+       char tmp[2 * MAX_STRING_LENGTH + 2];
+
+       omap_nand_switch_ecc(1, 8);
+
+       if (factory_dat.asn[0] != 0)
+               sprintf(tmp, "%s_%s", factory_dat.asn,
+                       factory_dat.comp_version);
+       else
+               sprintf(tmp, "QMX7.E38_4.0");
+
+       ret = setenv("boardid", tmp);
+       if (ret)
+               printf("error setting board id\n");
+
+       return 0;
+}
+#endif
+
 #include "../common/board.c"
index 673b3029a66f9e4bcaa8e953ef5bc9be2a057d27..b8ff478110287c89bbd3fa274ff4e3eae28e5298 100644 (file)
 #include <asm/arch/at91_rstc.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/at91sam9_sdramc.h>
+#include <asm/arch/clk.h>
+#include <linux/mtd/nand.h>
 #include <atmel_mci.h>
+#include <asm/arch/at91_spi.h>
+#include <spi.h>
 
 #include <net.h>
 #include <netdev.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_CMD_NAND
 static void taurus_nand_hw_init(void)
 {
        struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
@@ -61,15 +64,77 @@ static void taurus_nand_hw_init(void)
        /* Enable NandFlash */
        at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
 }
+
+#if defined(CONFIG_SPL_BUILD)
+#include <spl.h>
+#include <nand.h>
+
+void matrix_init(void)
+{
+       struct at91_matrix *mat = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+
+       writel((readl(&mat->scfg[3]) & (~AT91_MATRIX_SLOT_CYCLE))
+                       | AT91_MATRIX_SLOT_CYCLE_(0x40),
+                       &mat->scfg[3]);
+}
+
+void at91_spl_board_init(void)
+{
+       taurus_nand_hw_init();
+
+       /* Configure recovery button PINs */
+       at91_set_gpio_input(AT91_PIN_PA31, 1);
+
+       /* check if button is pressed */
+       if (at91_get_gpio_value(AT91_PIN_PA31) == 0) {
+               u32 boot_device;
+
+               debug("Recovery button pressed\n");
+               boot_device = spl_boot_device();
+               switch (boot_device) {
+#ifdef CONFIG_SPL_NAND_SUPPORT
+               case BOOT_DEVICE_NAND:
+                       nand_init();
+                       spl_nand_erase_one(0, 0);
+                       break;
+#endif
+               }
+       }
+}
+
+void mem_init(void)
+{
+       struct at91_matrix *ma = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+       struct sdramc_reg setting;
+
+       at91_sdram_hw_init();
+       setting.cr = (AT91_SDRAMC_NC_9 |
+                     AT91_SDRAMC_NR_13 |
+                     AT91_SDRAMC_CAS_3 |
+                     AT91_SDRAMC_NB_4 |
+                     AT91_SDRAMC_DBW_32 |
+                     AT91_SDRAMC_TWR_VAL(3) |
+                     AT91_SDRAMC_TRC_VAL(9) |
+                     AT91_SDRAMC_TRP_VAL(3) |
+                     AT91_SDRAMC_TRCD_VAL(3) |
+                     AT91_SDRAMC_TRAS_VAL(6) |
+                     AT91_SDRAMC_TXSR_VAL(10));
+       setting.mdr = AT91_SDRAMC_MD_SDRAM;
+       setting.tr = (CONFIG_SYS_MASTER_CLOCK * 7) / 1000000;
+
+
+       writel(readl(&ma->ebicsa) | AT91_MATRIX_CS1A_SDRAMC |
+               AT91_MATRIX_VDDIOMSEL_3_3V | AT91_MATRIX_EBI_IOSR_SEL,
+               &ma->ebicsa);
+       sdramc_initialize(ATMEL_BASE_CS1, &setting);
+}
 #endif
 
 #ifdef CONFIG_MACB
 static void taurus_macb_hw_init(void)
 {
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
        /* Enable EMAC clock */
-       writel(1 << ATMEL_ID_EMAC0, &pmc->pcer);
+       at91_periph_clk_enable(ATMEL_ID_EMAC0);
 
        /*
         * Disable pull-up on:
@@ -117,28 +182,43 @@ int board_mmc_init(bd_t *bd)
 
 int board_early_init_f(void)
 {
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
        /* Enable clocks for all PIOs */
-       writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
-               (1 << ATMEL_ID_PIOC),
-               &pmc->pcer);
+       at91_periph_clk_enable(ATMEL_ID_PIOA);
+       at91_periph_clk_enable(ATMEL_ID_PIOB);
+       at91_periph_clk_enable(ATMEL_ID_PIOC);
+
+       at91_seriald_hw_init();
 
        return 0;
 }
 
+int spi_cs_is_valid(unsigned int bus, unsigned int cs)
+{
+       return bus == 0 && cs == 0;
+}
+
+void spi_cs_activate(struct spi_slave *slave)
+{
+       at91_set_gpio_value(TAURUS_SPI_CS_PIN, 0);
+}
+
+void spi_cs_deactivate(struct spi_slave *slave)
+{
+       at91_set_gpio_value(TAURUS_SPI_CS_PIN, 1);
+}
+
 int board_init(void)
 {
        /* adress of boot parameters */
        gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
-       at91_seriald_hw_init();
 #ifdef CONFIG_CMD_NAND
        taurus_nand_hw_init();
 #endif
 #ifdef CONFIG_MACB
        taurus_macb_hw_init();
 #endif
+       at91_spi0_hw_init(TAURUS_SPI_MASK);
 
        return 0;
 }
index 2caefbbe5844a217b4380160b00044c60b609826..953a43ff3163526b58c993bea7ba46bb9772520a 100644 (file)
@@ -218,8 +218,7 @@ int board_early_init_r (void)
 #endif /* CONFIG_BOARD_EARLY_INIT_R */
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        u32 val[12];
        int rc, i = 0;
@@ -251,6 +250,8 @@ ft_board_setup(void *blob, bd_t *bd)
        if (rc)
                printf("Unable to update localbus ranges, err=%s\n",
                       fdt_strerror(rc));
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
index 6d204b343e58f1088cee7d5ccf032ce7d91cba78..52c384bdd4cf30550200c1db27750c8f9252223c 100644 (file)
@@ -146,7 +146,7 @@ int board_eth_init(bd_t *bis)
 {
        struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
 
-       int ret = enable_fec_anatop_clock(ENET_25MHz);
+       int ret = enable_fec_anatop_clock(ENET_25MHZ);
        if (ret)
                return ret;
 
diff --git a/board/spd8xx/Kconfig b/board/spd8xx/Kconfig
deleted file mode 100644 (file)
index 2430616..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_SPD823TS
-
-config SYS_BOARD
-       default "spd8xx"
-
-config SYS_CONFIG_NAME
-       default "SPD823TS"
-
-endif
diff --git a/board/spd8xx/MAINTAINERS b/board/spd8xx/MAINTAINERS
deleted file mode 100644 (file)
index 7ed9423..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SPD8XX BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/spd8xx/
-F:     include/configs/SPD823TS.h
-F:     configs/SPD823TS_defconfig
diff --git a/board/spd8xx/Makefile b/board/spd8xx/Makefile
deleted file mode 100644 (file)
index c393f06..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = spd8xx.o flash.o
diff --git a/board/spd8xx/flash.c b/board/spd8xx/flash.c
deleted file mode 100644 (file)
index 4a332e0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t    flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       /* All Speech Design board memory (DRAM and EPROM) initialisation is
-       done in dram_init().
-       The caller of ths function here expects the total size and will hang,
-       if we give here back 0. So we return the EPROM size. */
-
-       return (1024 * 1024); /* 1 MB */
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
-       printf("no FLASH memory in MPC823TS board\n");
-       return;
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       return 1;
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/spd8xx/spd8xx.c b/board/spd8xx/spd8xx.c
deleted file mode 100644 (file)
index d3320bb..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Ulrich Lutz, Speech Design GmbH, ulutz@datalab.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sharc_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPM RAM)
-        */
-       0x0FF3FC04, 0x0FF3EC00, 0x7FFFEC04, 0xFFFFEC04,
-       0xFFFFEC05,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Read. (Offset 8 in UPM RAM)
-        */
-       /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPM RAM)
-        */
-       0x0FAFFC04, 0x0FAFEC00, 0x7FFFEC04, 0xFFFFEC04,
-       0xFFFFEC05,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPM RAM)
-        */
-       /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPM RAM)
-        */
-       /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPM RAM)
-        */
-       0x7FFFFC07,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPM RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
-       0x1FF77C47,             /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPM RAM)
-        *
-        * This is no UPM entry point. The following definition uses
-        * the remaining space to establish an initialization
-        * sequence, which is executed by a RUN command.
-        *
-        */
-       0x1FF77C35, 0xEFEABC34, 0x1FB57C35,     /* last */
-       /*
-        * Burst Read. (Offset 8 in UPM RAM)
-        */
-       0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
-       0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPM RAM)
-        */
-       0x1F27FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPM RAM)
-        */
-       0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
-       0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47,     /* last */
-       _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPM RAM)
-        */
-       0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07, /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPM RAM)
-        */
-       0x7FFFFC07,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- */
-
-int checkboard (void)
-{
-       puts ("Board: SPD823TS\n");
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-       long int size_b0;
-
-#if 0
-       /*
-        * Map controller bank 2 to the SRAM bank at preliminary address.
-        */
-       memctl->memc_or2 = CONFIG_SYS_OR2;
-       memctl->memc_br2 = CONFIG_SYS_BR2;
-#endif
-
-       /*
-        * Map controller bank 4 to the PER8 bank.
-        */
-       memctl->memc_or4 = CONFIG_SYS_OR4;
-       memctl->memc_br4 = CONFIG_SYS_BR4;
-
-#if 0
-       /* Configure SHARC at UMA */
-       upmconfig (UPMA, (uint *) sharc_table,
-                  sizeof (sharc_table) / sizeof (uint));
-       /* Map controller bank 5 to the SHARC */
-       memctl->memc_or5 = CONFIG_SYS_OR5;
-       memctl->memc_br5 = CONFIG_SYS_BR5;
-#endif
-
-       memctl->memc_mamr = 0x00001000;
-
-       /* Configure SDRAM at UMB */
-       upmconfig (UPMB, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR_1BK_8K;
-
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller bank 3 to the SDRAM bank at preliminary address.
-        */
-       memctl->memc_or3 = CONFIG_SYS_OR3_PRELIM;
-       memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM;
-
-       memctl->memc_mbmr = CONFIG_SYS_MBMR_8COL;       /* refresh not enabled yet */
-
-       udelay (200);
-       memctl->memc_mcr = 0x80806105;
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;
-       udelay (1);
-       memctl->memc_mcr = 0x80806130;
-       udelay (1);
-       memctl->memc_mcr = 0x80806106;
-
-       memctl->memc_mbmr |= MBMR_PTBE; /* refresh enabled */
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        */
-       size_b0 =
-               dram_size (CONFIG_SYS_MBMR_8COL, SDRAM_BASE3_PRELIM,
-                          SDRAM_MAX_SIZE);
-
-       memctl->memc_mbmr = CONFIG_SYS_MBMR_8COL | MBMR_PTBE;
-
-       return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
-                          long int maxsize)
-{
-       volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-       memctl->memc_mbmr = mamr_value;
-
-       return (get_ram_size (base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy (void)
-{
-       immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       ushort sreg;
-
-       /* Configure extra port pins for NS DP83843 PHY */
-       immr->im_ioport.iop_papar &= ~(PA_ENET_MDC | PA_ENET_MDIO);
-
-       sreg = immr->im_ioport.iop_padir;
-       sreg |= PA_ENET_MDC;    /* Mgmt. Data Clock is Output */
-       sreg &= ~(PA_ENET_MDIO);        /* Mgmt. Data I/O is bidirect. => Input */
-       immr->im_ioport.iop_padir = sreg;
-
-       immr->im_ioport.iop_padat &= ~(PA_ENET_MDC);    /* set MDC = 0 */
-
-       /*
-        * RESET in implemented by a positive pulse of at least 1 us
-        * at the reset pin.
-        *
-        * Configure RESET pins for NS DP83843 PHY, and RESET chip.
-        *
-        * Note: The RESET pin is high active, but there is an
-        *       inverter on the SPD823TS board...
-        */
-       immr->im_ioport.iop_pcpar &= ~(PC_ENET_RESET);
-       immr->im_ioport.iop_pcdir |= PC_ENET_RESET;
-       /* assert RESET signal of PHY */
-       immr->im_ioport.iop_pcdat &= ~(PC_ENET_RESET);
-       udelay (10);
-       /* de-assert RESET signal of PHY */
-       immr->im_ioport.iop_pcdat |= PC_ENET_RESET;
-       udelay (10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-void ide_set_reset (int on)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-
-       /*
-        * Configure PC for IDE Reset Pin
-        */
-       if (on) {               /* assert RESET */
-               immr->im_ioport.iop_pcdat &= ~(CONFIG_SYS_PC_IDE_RESET);
-       } else {                /* release RESET */
-               immr->im_ioport.iop_pcdat |= CONFIG_SYS_PC_IDE_RESET;
-       }
-
-       /* program port pin as GPIO output */
-       immr->im_ioport.iop_pcpar &= ~(CONFIG_SYS_PC_IDE_RESET);
-       immr->im_ioport.iop_pcso &= ~(CONFIG_SYS_PC_IDE_RESET);
-       immr->im_ioport.iop_pcdir |= CONFIG_SYS_PC_IDE_RESET;
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds
deleted file mode 100644 (file)
index 463af7e..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text*)
-    arch/powerpc/cpu/mpc8xx/traps.o    (.text*)
-    net/built-in.o                     (.text*)
-    arch/powerpc/cpu/mpc8xx/built-in.o (.text*)
-    *(.text.v*printf)
-
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o      (.ppcenv*)
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    KEEP(*(.got))
-    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/spd8xx/u-boot.lds.debug b/board/spd8xx/u-boot.lds.debug
deleted file mode 100644 (file)
index 7cfed1f..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/mpc8xx/start.o    (.text)
-    common/dlmalloc.o  (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-    arch/powerpc/lib/extable.o (.text)
-
-    . = env_offset;
-    common/env_embedded.o(.text)
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FFF) & 0xFFFFF000;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-
-  . = ALIGN(4);
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(4096);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/st/stv0991/Kconfig b/board/st/stv0991/Kconfig
new file mode 100644 (file)
index 0000000..007712f
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_STV0991
+
+config SYS_BOARD
+       default "stv0991"
+
+config SYS_VENDOR
+       default "st"
+
+config SYS_SOC
+       default "stv0991"
+
+config SYS_CONFIG_NAME
+       default "stv0991"
+
+endif
diff --git a/board/st/stv0991/MAINTAINERS b/board/st/stv0991/MAINTAINERS
new file mode 100644 (file)
index 0000000..e7a2cca
--- /dev/null
@@ -0,0 +1,6 @@
+STV0991 APPLICATION BOARD
+M:     Vikas Manocha <vikas.manocha@st.com>
+S:     Maintained
+F:     board/st/stv0991/
+F:     include/configs/stv0991.h
+F:     configs/stv0991_defconfig
diff --git a/board/st/stv0991/Makefile b/board/st/stv0991/Makefile
new file mode 100644 (file)
index 0000000..fb5169a
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# (C) Copyright 2014
+# Vikas Manocha, ST Microelectronics, vikas.manocha@stcom
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := stv0991.o
diff --git a/board/st/stv0991/stv0991.c b/board/st/stv0991/stv0991.c
new file mode 100644 (file)
index 0000000..f465699
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <miiphy.h>
+#include <asm/arch/stv0991_periph.h>
+#include <asm/arch/stv0991_defs.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/gpio.h>
+#include <netdev.h>
+#include <asm/io.h>
+#include <dm/platdata.h>
+#include <dm/platform_data/serial_pl01x.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct gpio_regs *const gpioa_regs =
+               (struct gpio_regs *) GPIOA_BASE_ADDR;
+
+static const struct pl01x_serial_platdata serial_platdata = {
+       .base = 0x80406000,
+       .type = TYPE_PL011,
+       .clock = 2700 * 1000,
+};
+
+U_BOOT_DEVICE(stv09911_serials) = {
+       .name = "serial_pl01x",
+       .platdata = &serial_platdata,
+};
+
+#ifdef CONFIG_SHOW_BOOT_PROGRESS
+void show_boot_progress(int progress)
+{
+       printf("%i\n", progress);
+}
+#endif
+
+void enable_eth_phy(void)
+{
+       /* Set GPIOA_06 pad HIGH (Appli board)*/
+       writel(readl(&gpioa_regs->dir) | 0x40, &gpioa_regs->dir);
+       writel(readl(&gpioa_regs->data) | 0x40, &gpioa_regs->data);
+}
+int board_eth_enable(void)
+{
+       stv0991_pinmux_config(ETH_GPIOB_10_31_C_0_4);
+       clock_setup(ETH_CLOCK_CFG);
+       enable_eth_phy();
+       return 0;
+}
+
+/*
+ * Miscellaneous platform dependent initialisations
+ */
+int board_init(void)
+{
+       board_eth_enable();
+       return 0;
+}
+
+int board_uart_init(void)
+{
+       stv0991_pinmux_config(UART_GPIOC_30_31);
+       clock_setup(UART_CLOCK_CFG);
+       return 0;
+}
+
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_early_init_f(void)
+{
+       board_uart_init();
+       return 0;
+}
+#endif
+
+int dram_init(void)
+{
+       gd->ram_size = PHYS_SDRAM_1_SIZE;
+       return 0;
+}
+
+void dram_init_banksize(void)
+{
+       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
+       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
+}
+
+#ifdef CONFIG_CMD_NET
+int board_eth_init(bd_t *bis)
+{
+       int ret = 0;
+
+#if defined(CONFIG_DESIGNWARE_ETH)
+       u32 interface = PHY_INTERFACE_MODE_MII;
+       if (designware_initialize(GMAC_BASE_ADDR, interface) >= 0)
+               ret++;
+#endif
+       return ret;
+}
+#endif
index f5c3d750cee634d9dae12b316ace5260d5a1b87a..6e4eed86a5f3419a54dd5f754df7d7a5591435b4 100644 (file)
@@ -233,9 +233,11 @@ reset_phy(void)
 }
 
 #ifdef CONFIG_OF_BOARD_SETUP
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup (blob, bd);
+
+       return 0;
 }
 #endif /* CONFIG_OF_BOARD_SETUP */
 
index 28df18784042e2b5f6e133b8502afa402dfa90dc..6a4d764b7c9a94eaa4efe0d49f79d2bcbaf23a07 100644 (file)
-if TARGET_SUN4I || TARGET_SUN5I || TARGET_SUN6I || TARGET_SUN7I || TARGET_SUN8I
+if ARCH_SUNXI
+
+choice
+       prompt "Sunxi SoC Variant"
+
+config MACH_SUN4I
+       bool "sun4i (Allwinner A10)"
+       select CPU_V7
+       select SUPPORT_SPL
+
+config MACH_SUN5I
+       bool "sun5i (Allwinner A13)"
+       select CPU_V7
+       select SUPPORT_SPL
+
+config MACH_SUN6I
+       bool "sun6i (Allwinner A31)"
+       select CPU_V7
+       select SUPPORT_SPL
+
+config MACH_SUN7I
+       bool "sun7i (Allwinner A20)"
+       select CPU_V7
+       select CPU_V7_HAS_NONSEC
+       select CPU_V7_HAS_VIRT
+       select SUPPORT_SPL
+       select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+
+config MACH_SUN8I
+       bool "sun8i (Allwinner A23)"
+       select CPU_V7
+       select SUPPORT_SPL
+
+endchoice
+
+if MACH_SUN6I || MACH_SUN8I
+
+config DRAM_CLK
+       int "sun6i dram clock speed"
+       default 312
+       ---help---
+       Set the dram clock speed, valid range 240 - 480, must be a multiple
+       of 24.
+
+config DRAM_ZQ
+       int "sun6i dram zq value"
+       default 123
+       ---help---
+       Set the dram zq value.
+
+endif
 
 config SYS_CONFIG_NAME
-       string
-       default "sun4i" if TARGET_SUN4I
-       default "sun5i" if TARGET_SUN5I
-       default "sun6i" if TARGET_SUN6I
-       default "sun7i" if TARGET_SUN7I
-       default "sun8i" if TARGET_SUN8I
+       default "sun4i" if MACH_SUN4I
+       default "sun5i" if MACH_SUN5I
+       default "sun6i" if MACH_SUN6I
+       default "sun7i" if MACH_SUN7I
+       default "sun8i" if MACH_SUN8I
+
+choice
+       prompt "Board"
+
+config TARGET_A10_OLINUXINO_L
+       bool "A10_OLINUXINO_L"
+       depends on MACH_SUN4I
+
+config TARGET_A10S_OLINUXINO_M
+       bool "A10S_OLINUXINO_M"
+       depends on MACH_SUN5I
+
+config TARGET_A13_OLINUXINOM
+       bool "A13_OLINUXINOM"
+       depends on MACH_SUN5I
+
+config TARGET_A13_OLINUXINO
+       bool "A13_OLINUXINO"
+       depends on MACH_SUN5I
+
+config TARGET_A20_OLINUXINO_L2
+       bool "A20_OLINUXINO_L2"
+       depends on MACH_SUN7I
+
+config TARGET_A20_OLINUXINO_L
+       bool "A20_OLINUXINO_L"
+       depends on MACH_SUN7I
+
+config TARGET_A20_OLINUXINO_M
+       bool "A20_OLINUXINO_M"
+       depends on MACH_SUN7I
+
+config TARGET_AUXTEK_T004
+       bool "AUXTEK_T004"
+       depends on MACH_SUN5I
+
+config TARGET_BANANAPI
+       bool "BANANAPI"
+       depends on MACH_SUN7I
+
+config TARGET_BANANAPRO
+       bool "BANANAPRO"
+       depends on MACH_SUN7I
+
+config TARGET_COLOMBUS
+       bool "COLOMBUS"
+       depends on MACH_SUN6I
+
+config TARGET_CUBIEBOARD2
+       bool "CUBIEBOARD2"
+       depends on MACH_SUN7I
+
+config TARGET_CUBIEBOARD
+       bool "CUBIEBOARD"
+       depends on MACH_SUN4I
+
+config TARGET_CUBIETRUCK
+       bool "CUBIETRUCK"
+       depends on MACH_SUN7I
+
+config TARGET_HUMMINGBIRD_A31
+       bool "HUMMINGBIRD_A31"
+       depends on MACH_SUN6I
+
+config TARGET_IPPO_Q8H_V5
+       bool "IPPO_Q8H_V5"
+       depends on MACH_SUN8I
+
+config TARGET_PCDUINO
+       bool "PCDUINO"
+       depends on MACH_SUN4I
+
+config TARGET_PCDUINO3
+       bool "PCDUINO3"
+       depends on MACH_SUN7I
+
+config TARGET_MELE_A1000G
+       bool "MELE_A1000G"
+       depends on MACH_SUN4I
+
+config TARGET_MELE_A1000
+       bool "MELE_A1000"
+       depends on MACH_SUN4I
+
+config TARGET_MELE_M3
+       bool "MELE_M3"
+       depends on MACH_SUN7I
+
+config TARGET_MELE_M9
+       bool "MELE_M9"
+       depends on MACH_SUN6I
+
+config TARGET_MINI_X_1GB
+       bool "MINI_X_1GB"
+       depends on MACH_SUN4I
+
+config TARGET_MINI_X
+       bool "MINI_X"
+       depends on MACH_SUN4I
+
+config TARGET_MSI_PRIMO73
+       bool "MSI Primo73 (7\" tablet)"
+       depends on MACH_SUN7I
+       ---help---
+       The MSI Primo73 is an A20 based tablet, with 1G RAM, 16G NAND,
+       1024x600 TN LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
+       rear camera, 3000 mAh battery, gt911 touchscreen, mma8452 accelerometer
+       and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
+       (both volume buttons are also connected to the UBOOT_SEL pin). The
+       external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
+       OTG and 3.5mm headphone jack. More details are available at
+           http://linux-sunxi.org/MSI_Primo73
+
+config TARGET_MSI_PRIMO81
+       bool "MSI Primo81 (7.85\" tablet)"
+       depends on MACH_SUN6I
+       ---help---
+       The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
+       1024x768 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
+       rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
+       and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
+       (both volume buttons are also connected to the UBOOT_SEL pin). The
+       external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
+       OTG and 3.5mm headphone jack. More details are available at
+           http://linux-sunxi.org/MSI_Primo81
+
+config TARGET_BA10_TV_BOX
+       bool "BA10_TV_BOX"
+       depends on MACH_SUN4I
+
+config TARGET_I12_TVBOX
+       bool "I12_TVBOX"
+       depends on MACH_SUN7I
+
+config TARGET_QT840A
+       bool "QT840A"
+       depends on MACH_SUN7I
+
+config TARGET_R7DONGLE
+       bool "R7DONGLE"
+       depends on MACH_SUN5I
+
+endchoice
 
 config SYS_BOARD
        default "sunxi"
@@ -14,6 +206,23 @@ config SYS_BOARD
 config SYS_SOC
        default "sunxi"
 
+config SPL_FEL
+       bool "SPL/FEL mode support"
+       depends on SPL
+       default n
+
+config UART0_PORT_F
+       bool "UART0 on MicroSD breakout board"
+       depends on SPL_FEL
+       default n
+       ---help---
+       Repurpose the SD card slot for getting access to the UART0 serial
+       console. Primarily useful only for low level u-boot debugging on
+       tablets, where normal UART0 is difficult to access and requires
+       device disassembly and/or soldering. As the SD card can't be used
+       at the same time, the system can be only booted in the FEL mode.
+       Only enable this if you really know what you are doing.
+
 config FDTFILE
        string "Default fdtfile env setting for this board"
 
@@ -58,4 +267,134 @@ config MMC_SUNXI_SLOT_EXTRA
        slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
        support for this.
 
+config USB0_VBUS_PIN
+       string "Vbus enable pin for usb0 (otg)"
+       default ""
+       ---help---
+       Set the Vbus enable pin for usb0 (otg). This takes a string in the
+       format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
+
+config USB1_VBUS_PIN
+       string "Vbus enable pin for usb1 (ehci0)"
+       default "PH6" if MACH_SUN4I || MACH_SUN7I
+       default "PH27" if MACH_SUN6I
+       ---help---
+       Set the Vbus enable pin for usb1 (ehci0, usb0 is the otg). This takes
+       a string in the format understood by sunxi_name_to_gpio, e.g.
+       PH1 for pin 1 of port H.
+
+config USB2_VBUS_PIN
+       string "Vbus enable pin for usb2 (ehci1)"
+       default "PH3" if MACH_SUN4I || MACH_SUN7I
+       default "PH24" if MACH_SUN6I
+       ---help---
+       See USB1_VBUS_PIN help text.
+
+config VIDEO
+       boolean "Enable graphical uboot console on HDMI, LCD or VGA"
+       default y
+       ---help---
+       Say Y here to add support for using a cfb console on the HDMI, LCD
+       or VGA output found on most sunxi devices. See doc/README.video for
+       info on how to select the video output and mode.
+
+config VIDEO_HDMI
+       boolean "HDMI output support"
+       depends on VIDEO && !MACH_SUN8I
+       default y
+       ---help---
+       Say Y here to add support for outputting video over HDMI.
+
+config VIDEO_VGA
+       boolean "VGA output support"
+       depends on VIDEO && (MACH_SUN4I || MACH_SUN7I)
+       default n
+       ---help---
+       Say Y here to add support for outputting video over VGA.
+
+config VIDEO_VGA_VIA_LCD
+       boolean "VGA via LCD controller support"
+       depends on VIDEO && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
+       default n
+       ---help---
+       Say Y here to add support for external DACs connected to the parallel
+       LCD interface driving a VGA connector, such as found on the
+       Olimex A13 boards.
+
+config VIDEO_VGA_EXTERNAL_DAC_EN
+       string "LCD panel power enable pin"
+       depends on VIDEO_VGA_VIA_LCD
+       default ""
+       ---help---
+       Set the enable pin for the external VGA DAC. This takes a string in the
+       format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
+
+config VIDEO_LCD_MODE
+       string "LCD panel timing details"
+       depends on VIDEO
+       default ""
+       ---help---
+       LCD panel timing details string, leave empty if there is no LCD panel.
+       This is in drivers/video/videomodes.c: video_get_params() format, e.g.
+       x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0
+
+config VIDEO_LCD_POWER
+       string "LCD panel power enable pin"
+       depends on VIDEO
+       default ""
+       ---help---
+       Set the power enable pin for the LCD panel. This takes a string in the
+       format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
+
+config VIDEO_LCD_BL_EN
+       string "LCD panel backlight enable pin"
+       depends on VIDEO
+       default ""
+       ---help---
+       Set the backlight enable pin for the LCD panel. This takes a string in the
+       the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
+       port H.
+
+config VIDEO_LCD_BL_PWM
+       string "LCD panel backlight pwm pin"
+       depends on VIDEO
+       default ""
+       ---help---
+       Set the backlight pwm pin for the LCD panel. This takes a string in the
+       format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
+
+
+# Note only one of these may be selected at a time! But hidden choices are
+# not supported by Kconfig
+config VIDEO_LCD_IF_PARALLEL
+       bool
+
+config VIDEO_LCD_IF_LVDS
+       bool
+
+
+choice
+       prompt "LCD panel support"
+       depends on VIDEO
+       ---help---
+       Select which type of LCD panel to support.
+
+config VIDEO_LCD_PANEL_PARALLEL
+       bool "Generic parallel interface LCD panel"
+       select VIDEO_LCD_IF_PARALLEL
+
+config VIDEO_LCD_PANEL_LVDS
+       bool "Generic lvds interface LCD panel"
+       select VIDEO_LCD_IF_LVDS
+
+endchoice
+
+
+config USB_KEYBOARD
+       boolean "Enable USB keyboard support"
+       default y
+       ---help---
+       Say Y here to add support for using a USB keyboard (typically used
+       in combination with a graphical console).
+
 endif
index febd126cb83bb15518515422ac35e25cba071dfa..3a09be92de553482adc9b44c86b7a600e3911995 100644 (file)
@@ -17,12 +17,19 @@ F:  configs/A13-OLinuXino_defconfig
 F:     configs/A13-OLinuXinoM_defconfig
 F:     configs/Auxtek-T004_defconfig
 F:     configs/r7-tv-dongle_defconfig
+F:     include/configs/sun6i.h
+F:     configs/CSQ_CS908_defconfig
+F:     configs/Mele_M9_defconfig
 F:     include/configs/sun7i.h
 F:     configs/A20-OLinuXino_MICRO_defconfig
 F:     configs/Bananapi_defconfig
+F:     configs/Bananapro_defconfig
 F:     configs/i12-tvbox_defconfig
 F:     configs/Linksprite_pcDuino3_defconfig
+F:     configs/Linksprite_pcDuino3_fdt_defconfig
 F:     configs/qt840a_defconfig
+F:     include/configs/sun8i.h
+F:     configs/Ippo_q8h_v1_2_defconfig
 
 CUBIEBOARD2 BOARD
 M:     Ian Campbell <ijc@hellion.org.uk>
@@ -51,7 +58,27 @@ M:   Maxime Ripard <maxime.ripard@free-electrons.com>
 S:     Maintained
 F:     configs/Colombus_defconfig
 
+HUMMINIGBIRD-A31 BOARD
+M:     Chen-Yu Tsai <wens@csie.org>
+S:     Maintained
+F:     configs/Hummingbird_A31_defconfig
+
 IPPO-Q8H-V5 BOARD
-M:     CHen-Yu Tsai <wens@csie.org>
+M:     Chen-Yu Tsai <wens@csie.org>
 S:     Maintained
 F:     configs/Ippo_q8h_v5_defconfig
+
+MSI-PRIMO73 BOARD
+M:     Siarhei Siamashka <siarhei.siamashka@gmail.com>
+S:     Maintained
+F:     configs/MSI_Primo73_defconfig
+
+MSI-PRIMO81 BOARD
+M:     Siarhei Siamashka <siarhei.siamashka@gmail.com>
+S:     Maintained
+F:     configs/MSI_Primo81_defconfig
+
+LINKSPRITE-PCDUINO BOARD
+M:     Zoltan Herpai <wigyori@uid0.hu>
+S:     Maintained
+F:     configs/Linksprite_pcDuino_defconfig
index 6a2e4c9d5b5553d52a6325277109a201d10a1ca3..fab0877a54df5aa0a73aa578205874e08eb0e464 100644 (file)
 obj-y  += board.o
 obj-$(CONFIG_SUNXI_GMAC)       += gmac.o
 obj-$(CONFIG_SUNXI_AHCI)       += ahci.o
-obj-$(CONFIG_A10_OLINUXINO_L)  += dram_a10_olinuxino_l.o
-obj-$(CONFIG_A10S_OLINUXINO_M) += dram_a10s_olinuxino_m.o
-obj-$(CONFIG_A13_OLINUXINO)    += dram_a13_olinuxino.o
-obj-$(CONFIG_A13_OLINUXINOM)   += dram_a13_oli_micro.o
-obj-$(CONFIG_A20_OLINUXINO_L)  += dram_a20_olinuxino_l.o
-obj-$(CONFIG_A20_OLINUXINO_L2) += dram_a20_olinuxino_l2.o
-obj-$(CONFIG_A20_OLINUXINO_M)  += dram_sun7i_384_1024_iow16.o
+obj-$(CONFIG_TARGET_A10_OLINUXINO_L)   += dram_a10_olinuxino_l.o
+obj-$(CONFIG_TARGET_A10S_OLINUXINO_M)  += dram_a10s_olinuxino_m.o
+obj-$(CONFIG_TARGET_A13_OLINUXINO)     += dram_a13_olinuxino.o
+obj-$(CONFIG_TARGET_A13_OLINUXINOM)    += dram_a13_oli_micro.o
+obj-$(CONFIG_TARGET_A20_OLINUXINO_L)   += dram_a20_olinuxino_l.o
+obj-$(CONFIG_TARGET_A20_OLINUXINO_L2)  += dram_a20_olinuxino_l2.o
+obj-$(CONFIG_TARGET_A20_OLINUXINO_M)   += dram_sun7i_384_1024_iow16.o
 # This is not a typo, uses the same mem settings as the a10s-olinuxino-m
-obj-$(CONFIG_AUXTEK_T004)      += dram_a10s_olinuxino_m.o
-obj-$(CONFIG_BA10_TV_BOX)      += dram_sun4i_384_1024_iow8.o
-obj-$(CONFIG_BANANAPI)         += dram_bananapi.o
-obj-$(CONFIG_CUBIEBOARD)       += dram_cubieboard.o
-obj-$(CONFIG_CUBIEBOARD2)      += dram_cubieboard2.o
-obj-$(CONFIG_CUBIETRUCK)       += dram_cubietruck.o
-obj-$(CONFIG_I12_TVBOX)                += dram_sun7i_384_1024_iow16.o
-obj-$(CONFIG_MELE_A1000)       += dram_sun4i_360_512.o
-obj-$(CONFIG_MELE_A1000G)      += dram_sun4i_360_1024_iow8.o
-obj-$(CONFIG_MELE_M3)          += dram_sun7i_384_1024_iow16.o
-obj-$(CONFIG_MINI_X)           += dram_sun4i_360_512.o
-obj-$(CONFIG_MINI_X_1GB)       += dram_sun4i_360_1024_iow16.o
-obj-$(CONFIG_PCDUINO3)         += dram_linksprite_pcduino3.o
-obj-$(CONFIG_QT840A)           += dram_sun7i_384_512_busw16_iow16.o
-obj-$(CONFIG_R7DONGLE)         += dram_r7dongle.o
+obj-$(CONFIG_TARGET_AUXTEK_T004)       += dram_a10s_olinuxino_m.o
+obj-$(CONFIG_TARGET_BA10_TV_BOX)       += dram_sun4i_384_1024_iow8.o
+obj-$(CONFIG_TARGET_BANANAPI)          += dram_bananapi.o
+obj-$(CONFIG_TARGET_BANANAPRO)         += dram_bananapi.o
+obj-$(CONFIG_TARGET_CUBIEBOARD)                += dram_cubieboard.o
+obj-$(CONFIG_TARGET_CUBIEBOARD2)       += dram_cubieboard2.o
+obj-$(CONFIG_TARGET_CUBIETRUCK)                += dram_cubietruck.o
+obj-$(CONFIG_TARGET_I12_TVBOX)         += dram_sun7i_384_1024_iow16.o
+obj-$(CONFIG_TARGET_MELE_A1000)                += dram_sun4i_360_512.o
+obj-$(CONFIG_TARGET_MELE_A1000G)       += dram_sun4i_360_1024_iow8.o
+obj-$(CONFIG_TARGET_MELE_M3)           += dram_sun7i_384_1024_iow16.o
+obj-$(CONFIG_TARGET_MINI_X)            += dram_sun4i_360_512.o
+obj-$(CONFIG_TARGET_MINI_X_1GB)                += dram_sun4i_360_1024_iow16.o
+obj-$(CONFIG_TARGET_MSI_PRIMO73)       += dram_sun7i_384_1024_iow16.o
+obj-$(CONFIG_TARGET_PCDUINO)           += dram_sun4i_408_1024_iow8.o
+obj-$(CONFIG_TARGET_PCDUINO3)          += dram_linksprite_pcduino3.o
+obj-$(CONFIG_TARGET_QT840A)            += dram_sun7i_384_512_busw16_iow16.o
+obj-$(CONFIG_TARGET_R7DONGLE)          += dram_r7dongle.o
index 0c262eabb754785ca4a53064e47af53feee1d820..b7f0dda2058eecf97547270a2feac54565b5d7b1 100644 (file)
@@ -74,7 +74,10 @@ void scsi_init(void)
 {
        printf("SUNXI SCSI INIT\n");
 #ifdef CONFIG_SATAPWR
+       gpio_request(CONFIG_SATAPWR, "satapwr");
        gpio_direction_output(CONFIG_SATAPWR, 1);
+       /* Give attached sata device time to power-up to avoid link timeouts */
+       mdelay(500);
 #endif
 
        if (sunxi_ahci_phy_init(SUNXI_SATA_BASE) < 0)
index 03890c8c9ceb62c40279c4fb910a56441858ec8a..7d6d075f145ee93d4e3463544b7ccd3694ec9771 100644 (file)
 #ifdef CONFIG_AXP209_POWER
 #include <axp209.h>
 #endif
+#ifdef CONFIG_AXP221_POWER
+#include <axp221.h>
+#endif
 #include <asm/arch/clock.h>
 #include <asm/arch/cpu.h>
+#include <asm/arch/display.h>
 #include <asm/arch/dram.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/mmc.h>
@@ -169,6 +173,23 @@ void sunxi_board_init(void)
        power_failed |= axp209_set_ldo3(2800);
        power_failed |= axp209_set_ldo4(2800);
 #endif
+#ifdef CONFIG_AXP221_POWER
+       power_failed = axp221_init();
+       power_failed |= axp221_set_dcdc1(CONFIG_AXP221_DCDC1_VOLT);
+       power_failed |= axp221_set_dcdc2(1200); /* A31:VDD-GPU, A23:VDD-SYS */
+       power_failed |= axp221_set_dcdc3(1200); /* VDD-CPU */
+#ifdef CONFIG_MACH_SUN6I
+       power_failed |= axp221_set_dcdc4(1200); /* A31:VDD-SYS */
+#else
+       power_failed |= axp221_set_dcdc4(0);    /* A23:unused */
+#endif
+       power_failed |= axp221_set_dcdc5(1500); /* VCC-DRAM */
+       power_failed |= axp221_set_dldo1(CONFIG_AXP221_DLDO1_VOLT);
+       power_failed |= axp221_set_dldo4(CONFIG_AXP221_DLDO4_VOLT);
+       power_failed |= axp221_set_aldo1(CONFIG_AXP221_ALDO1_VOLT);
+       power_failed |= axp221_set_aldo2(CONFIG_AXP221_ALDO2_VOLT);
+       power_failed |= axp221_set_aldo3(CONFIG_AXP221_ALDO3_VOLT);
+#endif
 
        printf("DRAM:");
        ramsize = sunxi_dram_init();
@@ -190,24 +211,31 @@ void sunxi_board_init(void)
 #ifdef CONFIG_MISC_INIT_R
 int misc_init_r(void)
 {
-       if (!getenv("ethaddr")) {
-               uint32_t reg_val = readl(SUNXI_SID_BASE);
+       unsigned int sid[4];
 
-               if (reg_val) {
-                       uint8_t mac_addr[6];
+       if (!getenv("ethaddr") && sunxi_get_sid(sid) == 0 &&
+                       sid[0] != 0 && sid[3] != 0) {
+               uint8_t mac_addr[6];
 
-                       mac_addr[0] = 0x02; /* Non OUI / registered MAC address */
-                       mac_addr[1] = (reg_val >>  0) & 0xff;
-                       reg_val = readl(SUNXI_SID_BASE + 0x0c);
-                       mac_addr[2] = (reg_val >> 24) & 0xff;
-                       mac_addr[3] = (reg_val >> 16) & 0xff;
-                       mac_addr[4] = (reg_val >>  8) & 0xff;
-                       mac_addr[5] = (reg_val >>  0) & 0xff;
+               mac_addr[0] = 0x02; /* Non OUI / registered MAC address */
+               mac_addr[1] = (sid[0] >>  0) & 0xff;
+               mac_addr[2] = (sid[3] >> 24) & 0xff;
+               mac_addr[3] = (sid[3] >> 16) & 0xff;
+               mac_addr[4] = (sid[3] >>  8) & 0xff;
+               mac_addr[5] = (sid[3] >>  0) & 0xff;
 
-                       eth_setenv_enetaddr("ethaddr", mac_addr);
-               }
+               eth_setenv_enetaddr("ethaddr", mac_addr);
        }
 
        return 0;
 }
 #endif
+
+#ifdef CONFIG_OF_BOARD_SETUP
+int ft_board_setup(void *blob, bd_t *bd)
+{
+#ifdef CONFIG_VIDEO_DT_SIMPLEFB
+       return sunxi_simplefb_setup(blob);
+#endif
+}
+#endif /* CONFIG_OF_BOARD_SETUP */
diff --git a/board/sunxi/dram_sun4i_408_1024_iow8.c b/board/sunxi/dram_sun4i_408_1024_iow8.c
new file mode 100644 (file)
index 0000000..c6d87d2
--- /dev/null
@@ -0,0 +1,31 @@
+/* this file is generated, don't edit it yourself */
+
+#include <common.h>
+#include <asm/arch/dram.h>
+
+static struct dram_para dram_para = {
+       .clock = 408,
+       .type = 3,
+       .rank_num = 1,
+       .density = 2048,
+       .io_width = 8,
+       .bus_width = 32,
+       .cas = 6,
+       .zq = 123,
+       .odt_en = 0,
+       .size = 1024,
+       .tpr0 = 0x30926692,
+       .tpr1 = 0x1090,
+       .tpr2 = 0x1a0c8,
+       .tpr3 = 0,
+       .tpr4 = 0,
+       .tpr5 = 0,
+       .emr1 = 0,
+       .emr2 = 0,
+       .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+       return dramc_init(&dram_para);
+}
index 6348d27282748d66cf6d55f484fdefa69d4a0af6..4e4615e12f654fed06c8200ce5061e1ba76e2493 100644 (file)
@@ -13,7 +13,12 @@ int sunxi_gmac_initialize(bd_t *bis)
                (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
 
        /* Set up clock gating */
+#ifndef CONFIG_MACH_SUN6I
        setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);
+#else
+       setbits_le32(&ccm->ahb_reset0_cfg, 0x1 << AHB_RESET_OFFSET_GMAC);
+       setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_GMAC);
+#endif
 
        /* Set MII clock */
 #ifdef CONFIG_RGMII
@@ -29,10 +34,11 @@ int sunxi_gmac_initialize(bd_t *bis)
         * need to set bits 10-12 GTXDC "GMAC Transmit Clock Delay Chain"
         * of the GMAC clk register to 3.
         */
-#ifdef CONFIG_BANANAPI
+#if defined CONFIG_TARGET_BANANAPI || defined CONFIG_TARGET_BANANAPRO
        setbits_le32(&ccm->gmac_clk_cfg, 0x3 << 10);
 #endif
 
+#ifndef CONFIG_MACH_SUN6I
        /* Configure pin mux settings for GMAC */
        for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
 #ifdef CONFIG_RGMII
@@ -43,9 +49,48 @@ int sunxi_gmac_initialize(bd_t *bis)
                sunxi_gpio_set_cfgpin(pin, SUN7I_GPA0_GMAC);
                sunxi_gpio_set_drv(pin, 3);
        }
+#elif defined CONFIG_RGMII
+       /* Configure sun6i RGMII mode pin mux settings */
+       for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++) {
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_drv(pin, 3);
+       }
+       for (pin = SUNXI_GPA(9); pin <= SUNXI_GPA(14); pin++) {
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_drv(pin, 3);
+       }
+       for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(20); pin++) {
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_drv(pin, 3);
+       }
+       for (pin = SUNXI_GPA(25); pin <= SUNXI_GPA(27); pin++) {
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_drv(pin, 3);
+       }
+#elif defined CONFIG_GMII
+       /* Configure sun6i GMII mode pin mux settings */
+       for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(27); pin++) {
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_drv(pin, 2);
+       }
+#else
+       /* Configure sun6i MII mode pin mux settings */
+       for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++)
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+       for (pin = SUNXI_GPA(8); pin <= SUNXI_GPA(9); pin++)
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+       for (pin = SUNXI_GPA(11); pin <= SUNXI_GPA(14); pin++)
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+       for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(24); pin++)
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+       for (pin = SUNXI_GPA(26); pin <= SUNXI_GPA(27); pin++)
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+#endif
 
 #ifdef CONFIG_RGMII
        return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
+#elif defined CONFIG_GMII
+       return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_GMII);
 #else
        return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII);
 #endif
diff --git a/board/tbs/tbs2910/Kconfig b/board/tbs/tbs2910/Kconfig
new file mode 100644 (file)
index 0000000..84b243e
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_TBS2910
+
+config SYS_BOARD
+       default "tbs2910"
+
+config SYS_VENDOR
+       default "tbs"
+
+config SYS_SOC
+       default "mx6"
+
+config SYS_CONFIG_NAME
+       default "tbs2910"
+
+endif
diff --git a/board/tbs/tbs2910/MAINTAINERS b/board/tbs/tbs2910/MAINTAINERS
new file mode 100644 (file)
index 0000000..bf17655
--- /dev/null
@@ -0,0 +1,6 @@
+TBS2910 BOARD
+M:     Soeren Moch <smoch@web.de>
+S:     Maintained
+F:     board/tbs/tbs2910/
+F:     configs/tbs2910_defconfig
+F:     include/configs/tbs2910.h
diff --git a/board/tbs/tbs2910/Makefile b/board/tbs/tbs2910/Makefile
new file mode 100644 (file)
index 0000000..9d9eb87
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (C) 2014 Soeren Moch <smoch@web.de>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := tbs2910.o
diff --git a/board/tbs/tbs2910/tbs2910.c b/board/tbs/tbs2910/tbs2910.c
new file mode 100644 (file)
index 0000000..dfa430e
--- /dev/null
@@ -0,0 +1,397 @@
+/*
+ * Copyright (C) 2014 Soeren Moch <smoch@web.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mx6-pins.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <asm/imx-common/mxc_i2c.h>
+#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/sata.h>
+#include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/video.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <i2c.h>
+DECLARE_GLOBAL_DATA_PTR;
+
+#define WEAK_PULLUP    (PAD_CTL_PUS_47K_UP |                   \
+       PAD_CTL_SPEED_LOW | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
+       PAD_CTL_SRE_SLOW)
+
+#define UART_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm |                 \
+       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP |                   \
+       PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm |                 \
+       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
+
+#define I2C_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                   \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
+       PAD_CTL_ODE | PAD_CTL_SRE_FAST)
+
+#define I2C_PAD MUX_PAD_CTRL(I2C_PAD_CTRL)
+
+#ifdef CONFIG_SYS_I2C
+/* I2C1, SGTL5000 */
+static struct i2c_pads_info i2c_pad_info0 = {
+       .scl = {
+               .i2c_mode = MX6_PAD_CSI0_DAT9__I2C1_SCL | I2C_PAD,
+               .gpio_mode = MX6_PAD_CSI0_DAT9__GPIO5_IO27 | I2C_PAD,
+               .gp = IMX_GPIO_NR(5, 27)
+       },
+       .sda = {
+               .i2c_mode = MX6_PAD_CSI0_DAT8__I2C1_SDA | I2C_PAD,
+               .gpio_mode = MX6_PAD_CSI0_DAT8__GPIO5_IO26 | I2C_PAD,
+               .gp = IMX_GPIO_NR(5, 26)
+       }
+};
+
+/* I2C2 HDMI */
+static struct i2c_pads_info i2c_pad_info1 = {
+       .scl = {
+               .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL | I2C_PAD,
+               .gpio_mode = MX6_PAD_KEY_COL3__GPIO4_IO12 | I2C_PAD,
+               .gp = IMX_GPIO_NR(4, 12)
+       },
+       .sda = {
+               .i2c_mode = MX6_PAD_KEY_ROW3__I2C2_SDA | I2C_PAD,
+               .gpio_mode = MX6_PAD_KEY_ROW3__GPIO4_IO13 | I2C_PAD,
+               .gp = IMX_GPIO_NR(4, 13)
+       }
+};
+
+/* I2C3, CON11, DS1307, PCIe_SMB */
+static struct i2c_pads_info i2c_pad_info2 = {
+       .scl = {
+               .i2c_mode = MX6_PAD_GPIO_3__I2C3_SCL | I2C_PAD,
+               .gpio_mode = MX6_PAD_GPIO_3__GPIO1_IO03 | I2C_PAD,
+               .gp = IMX_GPIO_NR(1, 3)
+       },
+       .sda = {
+               .i2c_mode = MX6_PAD_GPIO_6__I2C3_SDA | I2C_PAD,
+               .gpio_mode = MX6_PAD_GPIO_6__GPIO1_IO06 | I2C_PAD,
+               .gp = IMX_GPIO_NR(1, 6)
+       }
+};
+#endif /* CONFIG_SYS_I2C */
+
+static iomux_v3_cfg_t const uart1_pads[] = {
+       MX6_PAD_CSI0_DAT10__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_CSI0_DAT11__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const uart2_pads[] = {
+       MX6_PAD_EIM_D26__UART2_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_EIM_D27__UART2_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const enet_pads[] = {
+       MX6_PAD_ENET_MDIO__ENET_MDIO            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_MDC__ENET_MDC              | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TXC__RGMII_TXC            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD0__RGMII_TD0            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD1__RGMII_TD1            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD2__RGMII_TD2            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD3__RGMII_TD3            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK       | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RXC__RGMII_RXC            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD0__RGMII_RD0            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD1__RGMII_RD1            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD2__RGMII_RD2            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD3__RGMII_RD3            | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       /* AR8035 PHY Reset */
+       MX6_PAD_ENET_CRS_DV__GPIO1_IO25         | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const pcie_pads[] = {
+       /* W_DISABLE# */
+       MX6_PAD_KEY_COL4__GPIO4_IO14 | MUX_PAD_CTRL(WEAK_PULLUP),
+       /* PERST# */
+       MX6_PAD_GPIO_17__GPIO7_IO12  | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+int dram_init(void)
+{
+       gd->ram_size = 2048ul * 1024 * 1024;
+       return 0;
+}
+
+static void setup_iomux_enet(void)
+{
+       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
+
+       /* Reset AR8035 PHY */
+       gpio_direction_output(IMX_GPIO_NR(1, 25) , 0);
+       udelay(500);
+       gpio_set_value(IMX_GPIO_NR(1, 25), 1);
+}
+
+static void setup_pcie(void)
+{
+       imx_iomux_v3_setup_multiple_pads(pcie_pads, ARRAY_SIZE(pcie_pads));
+}
+
+static void setup_iomux_uart(void)
+{
+       imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
+       imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads));
+}
+
+#ifdef CONFIG_FSL_ESDHC
+static iomux_v3_cfg_t const usdhc2_pads[] = {
+       MX6_PAD_SD2_CLK__SD2_CLK     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_CMD__SD2_CMD     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT0__SD2_DATA0  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT1__SD2_DATA1  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT2__SD2_DATA2  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT3__SD2_DATA3  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NANDF_D2__GPIO2_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+static iomux_v3_cfg_t const usdhc3_pads[] = {
+       MX6_PAD_SD3_CLK__SD3_CLK     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_CMD__SD3_CMD     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT0__SD3_DATA0  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT1__SD3_DATA1  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT2__SD3_DATA2  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT3__SD3_DATA3  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NANDF_D0__GPIO2_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+static iomux_v3_cfg_t const usdhc4_pads[] = {
+       MX6_PAD_SD4_CLK__SD4_CLK    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_CMD__SD4_CMD    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT0__SD4_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT1__SD4_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT2__SD4_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT3__SD4_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT4__SD4_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT5__SD4_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT6__SD4_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT7__SD4_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+static struct fsl_esdhc_cfg usdhc_cfg[3] = {
+       {USDHC2_BASE_ADDR},
+       {USDHC3_BASE_ADDR},
+       {USDHC4_BASE_ADDR},
+};
+
+#define USDHC2_CD_GPIO IMX_GPIO_NR(2, 2)
+#define USDHC3_CD_GPIO IMX_GPIO_NR(2, 0)
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+       int ret = 0;
+
+       switch (cfg->esdhc_base) {
+       case USDHC2_BASE_ADDR:
+               ret = !gpio_get_value(USDHC2_CD_GPIO);
+               break;
+       case USDHC3_BASE_ADDR:
+               ret = !gpio_get_value(USDHC3_CD_GPIO);
+               break;
+       case USDHC4_BASE_ADDR:
+               ret = 1; /* eMMC/uSDHC4 is always present */
+               break;
+       }
+       return ret;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       /*
+        * (U-boot device node)    (Physical Port)
+        * mmc0                    SD2
+        * mmc1                    SD3
+        * mmc2                    eMMC
+        */
+       int i, ret;
+       for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
+               switch (i) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+                       gpio_direction_input(USDHC2_CD_GPIO);
+                       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+                       gpio_direction_input(USDHC3_CD_GPIO);
+                       usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+                       break;
+               case 2:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+                       usdhc_cfg[2].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                              "(%d) then supported by the board (%d)\n",
+                              i + 1, CONFIG_SYS_FSL_USDHC_NUM);
+                       return -EINVAL;
+               }
+               ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+               if (ret)
+                       return ret;
+       }
+       return 0;
+}
+#endif /* CONFIG_FSL_ESDHC */
+
+#ifdef CONFIG_VIDEO_IPUV3
+static void do_enable_hdmi(struct display_info_t const *dev)
+{
+       imx_enable_hdmi_phy();
+}
+
+struct display_info_t const displays[] = {{
+       .bus    = -1,
+       .addr   = 0,
+       .pixfmt = IPU_PIX_FMT_RGB24,
+       .detect = detect_hdmi,
+       .enable = do_enable_hdmi,
+       .mode   = {
+               .name           = "HDMI",
+               /* 1024x768@60Hz (VESA)*/
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15384,
+               .left_margin    = 160,
+               .right_margin   = 24,
+               .upper_margin   = 29,
+               .lower_margin   = 3,
+               .hsync_len      = 136,
+               .vsync_len      = 6,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED
+} } };
+size_t display_count = ARRAY_SIZE(displays);
+
+static void setup_display(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int reg;
+       s32 timeout = 100000;
+
+       enable_ipu_clock();
+       imx_setup_hdmi();
+
+       /* set video pll to 455MHz (24MHz * (37+11/12) / 2) */
+       reg = readl(&ccm->analog_pll_video);
+       reg |= BM_ANADIG_PLL_VIDEO_POWERDOWN;
+       writel(reg, &ccm->analog_pll_video);
+
+       reg &= ~BM_ANADIG_PLL_VIDEO_DIV_SELECT;
+       reg |= BF_ANADIG_PLL_VIDEO_DIV_SELECT(37);
+       reg &= ~BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
+       reg |= BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(1);
+       writel(reg, &ccm->analog_pll_video);
+
+       writel(BF_ANADIG_PLL_VIDEO_NUM_A(11), &ccm->analog_pll_video_num);
+       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(12), &ccm->analog_pll_video_denom);
+
+       reg &= ~BM_ANADIG_PLL_VIDEO_POWERDOWN;
+       writel(reg, &ccm->analog_pll_video);
+
+       while (timeout--)
+               if (readl(&ccm->analog_pll_video) & BM_ANADIG_PLL_VIDEO_LOCK)
+                       break;
+       if (timeout < 0)
+               printf("Warning: video pll lock timeout!\n");
+
+       reg = readl(&ccm->analog_pll_video);
+       reg |= BM_ANADIG_PLL_VIDEO_ENABLE;
+       reg &= ~BM_ANADIG_PLL_VIDEO_BYPASS;
+       writel(reg, &ccm->analog_pll_video);
+
+       /* select video pll for ldb_di0_clk */
+       reg = readl(&ccm->cs2cdr);
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK);
+       writel(reg, &ccm->cs2cdr);
+
+       /* select ldb_di0_clk / 7 for ldb_di0_ipu_clk */
+       reg = readl(&ccm->cscmr2);
+       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
+       writel(reg, &ccm->cscmr2);
+
+       /* select ldb_di0_ipu_clk for ipu1_di0_clk -> 65MHz pixclock */
+       reg = readl(&ccm->chsccdr);
+       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
+               << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
+       writel(reg, &ccm->chsccdr);
+}
+#endif /* CONFIG_VIDEO_IPUV3 */
+
+int board_eth_init(bd_t *bis)
+{
+       setup_iomux_enet();
+       setup_pcie();
+       return cpu_eth_init(bis);
+}
+
+int board_early_init_f(void)
+{
+       setup_iomux_uart();
+       return 0;
+}
+
+#ifdef CONFIG_CMD_BMODE
+static const struct boot_mode board_boot_modes[] = {
+       /* 4 bit bus width */
+       {"sd2",  MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
+       {"sd3",  MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
+       /* 8 bit bus width */
+       {"emmc", MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00)},
+       {NULL,   0},
+};
+#endif
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+#ifdef CONFIG_VIDEO_IPUV3
+       setup_display();
+#endif
+#ifdef CONFIG_SYS_I2C
+       setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info0);
+       setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
+       setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
+#endif
+#ifdef CONFIG_DWC_AHSATA
+       setup_sata();
+#endif
+#ifdef CONFIG_CMD_BMODE
+       add_board_boot_modes(board_boot_modes);
+#endif
+       return 0;
+}
+
+int checkboard(void)
+{
+       puts("Board: TBS2910 Matrix ARM mini PC\n");
+       return 0;
+}
index 44a82406aa985ac500691c2ed75d473545bd611a..744ff44008316af6af39e597d26b6a4033d3d724 100644 (file)
@@ -188,6 +188,13 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
+
 #if defined(CONFIG_USB_EHCI) && !defined(CONFIG_SPL_BUILD)
 /* Call usb_stop() before starting the kernel */
 void show_boot_progress(int val)
index b9f6bd712290058d4826d09286c496ea85dd50f5..1ddbb2c67c17961dc1072418418bb89475be441b 100644 (file)
@@ -22,4 +22,19 @@ config CONS_INDEX
          board you may want something other than UART0 as for example the IDK
          uses UART3 so enter 4 here.
 
+config NOR
+       bool "Support for NOR flash"
+       help
+         The AM335x SoC supports having a NOR flash connected to the GPMC.
+         In practice this is seen as a NOR flash module connected to the
+         "memory cape" for the BeagleBone family.
+
+config NOR_BOOT
+       bool "Support for booting from NOR flash"
+       depends on NOR
+       help
+         Enabling this will make a U-Boot binary that is capable of being
+         booted via NOR.  In this case we will enable certain pinmux early
+         as the ROM only partially sets up pinmux.  We also default to using
+         NOR for environment.
 endif
index 947305b58debfad2e2b02cc2ea7e5ee537785c20..19e0eccbac931d6ff73b6908f7783725c0636f0b 100644 (file)
@@ -86,9 +86,9 @@ Step-3: Set BOOTSEL pin to select NAND boot, and POR the device.
 NOR
 ===
 
-The Beaglebone White can be equiped with a "memory cape" that in turn can
+The Beaglebone White can be equipped with a "memory cape" that in turn can
 have a NOR module plugged into it.  In this case it is then possible to
-program and boot from NOR.  Note that due to how U-Boot is architectured we
+program and boot from NOR.  Note that due to how U-Boot is designed we
 must build a specific version of U-Boot that knows we have NOR flash.  This
 build is named 'am335x_evm_nor'.  Further, we have a 'am335x_evm_norboot'
 build that will assume that the environment is on NOR rather than NAND.  In
@@ -193,7 +193,7 @@ Falcon Mode: NAND
 
 In this case the additional data is written to another partition of the
 NAND.  In this example we assume that the uImage and device tree to be are
-already located on the NAND somewhere (such as fileystem or mtd partition)
+already located on the NAND somewhere (such as filesystem or mtd partition)
 along with a Falcon Mode aware MLO written to the correct locations for
 booting and mtdparts have been configured correctly for the board:
 
index 4c5e38136fd55c542c52379285d0e42237e2cda2..7b37fbe299e58bb9aa9f3552f49e42d06b75d8c9 100644 (file)
@@ -534,6 +534,13 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
+
 #if defined(CONFIG_USB_EHCI) && !defined(CONFIG_SPL_BUILD)
 /* Call usb_stop() before starting the kernel */
 void show_boot_progress(int val)
diff --git a/board/ti/beagle_x15/Kconfig b/board/ti/beagle_x15/Kconfig
new file mode 100644 (file)
index 0000000..a305ff1
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_BEAGLE_X15
+
+config SYS_BOARD
+       default "beagle_x15"
+
+config SYS_VENDOR
+       default "ti"
+
+config SYS_CONFIG_NAME
+       default "beagle_x15"
+
+endif
diff --git a/board/ti/beagle_x15/MAINTAINERS b/board/ti/beagle_x15/MAINTAINERS
new file mode 100644 (file)
index 0000000..3f84def
--- /dev/null
@@ -0,0 +1,6 @@
+BEAGLE X15
+M:     Felipe Balbi <balbi@ti.com>
+S:     Maintained
+F:     board/ti/beagle_x15/
+F:     include/configs/beagle_x15.h
+F:     configs/beagle_x15_defconfig
diff --git a/board/ti/beagle_x15/Makefile b/board/ti/beagle_x15/Makefile
new file mode 100644 (file)
index 0000000..5cd6873
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# (C) Copyright 2014
+# Texas Instruments, <www.ti.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := board.o
diff --git a/board/ti/beagle_x15/board.c b/board/ti/beagle_x15/board.c
new file mode 100644 (file)
index 0000000..db96e34
--- /dev/null
@@ -0,0 +1,395 @@
+/*
+ * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com
+ *
+ * Author: Felipe Balbi <balbi@ti.com>
+ *
+ * Based on board/ti/dra7xx/evm.c
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <palmas.h>
+#include <sata.h>
+#include <usb.h>
+#include <asm/omap_common.h>
+#include <asm/emif.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/sata.h>
+#include <asm/arch/gpio.h>
+#include <environment.h>
+
+#include "mux_data.h"
+
+#ifdef CONFIG_DRIVER_TI_CPSW
+#include <cpsw.h>
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+const struct omap_sysinfo sysinfo = {
+       "Board: BeagleBoard x15\n"
+};
+
+static const struct dmm_lisa_map_regs beagle_x15_lisa_regs = {
+       .dmm_lisa_map_3 = 0x80740300,
+       .is_ma_present  = 0x1
+};
+
+void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)
+{
+       *dmm_lisa_regs = &beagle_x15_lisa_regs;
+}
+
+static const struct emif_regs beagle_x15_emif1_ddr3_532mhz_emif_regs = {
+       .sdram_config_init      = 0x61851b32,
+       .sdram_config           = 0x61851b32,
+       .sdram_config2          = 0x00000000,
+       .ref_ctrl               = 0x00001035,
+       .sdram_tim1             = 0xceef266b,
+       .sdram_tim2             = 0x328f7fda,
+       .sdram_tim3             = 0x027f88a8,
+       .read_idle_ctrl         = 0x00050001,
+       .zq_config              = 0x0007190b,
+       .temp_alert_config      = 0x00000000,
+       .emif_ddr_phy_ctlr_1_init = 0x0e24400a,
+       .emif_ddr_phy_ctlr_1    = 0x0e24400a,
+       .emif_ddr_ext_phy_ctrl_1 = 0x10040100,
+       .emif_ddr_ext_phy_ctrl_2 = 0x00740074,
+       .emif_ddr_ext_phy_ctrl_3 = 0x00780078,
+       .emif_ddr_ext_phy_ctrl_4 = 0x007c007c,
+       .emif_ddr_ext_phy_ctrl_5 = 0x007b007b,
+       .emif_rd_wr_lvl_rmp_win = 0x00000000,
+       .emif_rd_wr_lvl_rmp_ctl = 0x00000000,
+       .emif_rd_wr_lvl_ctl     = 0x00000000,
+       .emif_rd_wr_exec_thresh = 0x00000305
+};
+
+static const u32 beagle_x15_emif1_ddr3_ext_phy_ctrl_const_regs[] = {
+       0x00800080,
+       0x00360036,
+       0x00340034,
+       0x00360036,
+       0x00350035,
+       0x00350035,
+
+       0x01ff01ff,
+       0x01ff01ff,
+       0x01ff01ff,
+       0x01ff01ff,
+       0x01ff01ff,
+
+       0x00430043,
+       0x003e003e,
+       0x004a004a,
+       0x00470047,
+       0x00400040,
+
+       0x00000000,
+       0x00600020,
+       0x40010080,
+       0x08102040,
+
+       0x00400040,
+       0x00400040,
+       0x00400040,
+       0x00400040,
+       0x00400040
+};
+
+static const struct emif_regs beagle_x15_emif2_ddr3_532mhz_emif_regs = {
+       .sdram_config_init      = 0x61851b32,
+       .sdram_config           = 0x61851b32,
+       .sdram_config2          = 0x00000000,
+       .ref_ctrl               = 0x00001035,
+       .sdram_tim1             = 0xceef266b,
+       .sdram_tim2             = 0x328f7fda,
+       .sdram_tim3             = 0x027f88a8,
+       .read_idle_ctrl         = 0x00050001,
+       .zq_config              = 0x0007190b,
+       .temp_alert_config      = 0x00000000,
+       .emif_ddr_phy_ctlr_1_init = 0x0e24400a,
+       .emif_ddr_phy_ctlr_1    = 0x0e24400a,
+       .emif_ddr_ext_phy_ctrl_1 = 0x10040100,
+       .emif_ddr_ext_phy_ctrl_2 = 0x00820082,
+       .emif_ddr_ext_phy_ctrl_3 = 0x008b008b,
+       .emif_ddr_ext_phy_ctrl_4 = 0x00800080,
+       .emif_ddr_ext_phy_ctrl_5 = 0x007e007e,
+       .emif_rd_wr_lvl_rmp_win = 0x00000000,
+       .emif_rd_wr_lvl_rmp_ctl = 0x00000000,
+       .emif_rd_wr_lvl_ctl     = 0x00000000,
+       .emif_rd_wr_exec_thresh = 0x00000305
+};
+
+static const u32 beagle_x15_emif2_ddr3_ext_phy_ctrl_const_regs[] = {
+       0x00800080,
+       0x00370037,
+       0x00390039,
+       0x00360036,
+       0x00370037,
+       0x00350035,
+       0x01ff01ff,
+       0x01ff01ff,
+       0x01ff01ff,
+       0x01ff01ff,
+       0x01ff01ff,
+       0x00540054,
+       0x00540054,
+       0x004e004e,
+       0x004c004c,
+       0x00400040,
+
+       0x00000000,
+       0x00600020,
+       0x40010080,
+       0x08102040,
+
+       0x00400040,
+       0x00400040,
+       0x00400040,
+       0x00400040,
+       0x00400040
+};
+
+void emif_get_reg_dump(u32 emif_nr, const struct emif_regs **regs)
+{
+       switch (emif_nr) {
+       case 1:
+               *regs = &beagle_x15_emif1_ddr3_532mhz_emif_regs;
+               break;
+       case 2:
+               *regs = &beagle_x15_emif2_ddr3_532mhz_emif_regs;
+               break;
+       }
+}
+
+void emif_get_ext_phy_ctrl_const_regs(u32 emif_nr, const u32 **regs, u32 *size)
+{
+       switch (emif_nr) {
+       case 1:
+               *regs = beagle_x15_emif1_ddr3_ext_phy_ctrl_const_regs;
+               *size = ARRAY_SIZE(beagle_x15_emif1_ddr3_ext_phy_ctrl_const_regs);
+               break;
+       case 2:
+               *regs = beagle_x15_emif2_ddr3_ext_phy_ctrl_const_regs;
+               *size = ARRAY_SIZE(beagle_x15_emif2_ddr3_ext_phy_ctrl_const_regs);
+               break;
+       }
+}
+
+struct vcores_data beagle_x15_volts = {
+       .mpu.value              = VDD_MPU_DRA752,
+       .mpu.efuse.reg          = STD_FUSE_OPP_VMIN_MPU_NOM,
+       .mpu.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .mpu.addr               = TPS659038_REG_ADDR_SMPS12,
+       .mpu.pmic               = &tps659038,
+
+       .eve.value              = VDD_EVE_DRA752,
+       .eve.efuse.reg          = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
+       .eve.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .eve.addr               = TPS659038_REG_ADDR_SMPS45,
+       .eve.pmic               = &tps659038,
+
+       .gpu.value              = VDD_GPU_DRA752,
+       .gpu.efuse.reg          = STD_FUSE_OPP_VMIN_GPU_NOM,
+       .gpu.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .gpu.addr               = TPS659038_REG_ADDR_SMPS45,
+       .gpu.pmic               = &tps659038,
+
+       .core.value             = VDD_CORE_DRA752,
+       .core.efuse.reg         = STD_FUSE_OPP_VMIN_CORE_NOM,
+       .core.efuse.reg_bits    = DRA752_EFUSE_REGBITS,
+       .core.addr              = TPS659038_REG_ADDR_SMPS6,
+       .core.pmic              = &tps659038,
+
+       .iva.value              = VDD_IVA_DRA752,
+       .iva.efuse.reg          = STD_FUSE_OPP_VMIN_IVA_NOM,
+       .iva.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .iva.addr               = TPS659038_REG_ADDR_SMPS45,
+       .iva.pmic               = &tps659038,
+};
+
+void hw_data_init(void)
+{
+       *prcm = &dra7xx_prcm;
+       *dplls_data = &dra7xx_dplls;
+       *omap_vcores = &beagle_x15_volts;
+       *ctrl = &dra7xx_ctrl;
+}
+
+int board_init(void)
+{
+       gpmc_init();
+       gd->bd->bi_boot_params = (CONFIG_SYS_SDRAM_BASE + 0x100);
+
+       return 0;
+}
+
+int board_late_init(void)
+{
+       init_sata(0);
+       /*
+        * DEV_CTRL.DEV_ON = 1 please - else palmas switches off in 8 seconds
+        * This is the POWERHOLD-in-Low behavior.
+        */
+       palmas_i2c_write_u8(TPS65903X_CHIP_P1, 0xA0, 0x1);
+       return 0;
+}
+
+static void do_set_mux32(u32 base,
+                        struct pad_conf_entry const *array, int size)
+{
+       int i;
+       struct pad_conf_entry *pad = (struct pad_conf_entry *)array;
+
+       for (i = 0; i < size; i++, pad++)
+               writel(pad->val, base + pad->offset);
+}
+
+void set_muxconf_regs_essential(void)
+{
+       do_set_mux32((*ctrl)->control_padconf_core_base,
+                    core_padconf_array_essential,
+                    sizeof(core_padconf_array_essential) /
+                    sizeof(struct pad_conf_entry));
+}
+
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_GENERIC_MMC)
+int board_mmc_init(bd_t *bis)
+{
+       omap_mmc_init(0, 0, 0, -1, -1);
+       omap_mmc_init(1, 0, 0, -1, -1);
+       return 0;
+}
+#endif
+
+#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_OS_BOOT)
+int spl_start_uboot(void)
+{
+       /* break into full u-boot on 'c' */
+       if (serial_tstc() && serial_getc() == 'c')
+               return 1;
+
+#ifdef CONFIG_SPL_ENV_SUPPORT
+       env_init();
+       env_relocate_spec();
+       if (getenv_yesno("boot_os") != 1)
+               return 1;
+#endif
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_DRIVER_TI_CPSW
+
+/* Delay value to add to calibrated value */
+#define RGMII0_TXCTL_DLY_VAL           ((0x3 << 5) + 0x8)
+#define RGMII0_TXD0_DLY_VAL            ((0x3 << 5) + 0x8)
+#define RGMII0_TXD1_DLY_VAL            ((0x3 << 5) + 0x2)
+#define RGMII0_TXD2_DLY_VAL            ((0x4 << 5) + 0x0)
+#define RGMII0_TXD3_DLY_VAL            ((0x4 << 5) + 0x0)
+#define VIN2A_D13_DLY_VAL              ((0x3 << 5) + 0x8)
+#define VIN2A_D17_DLY_VAL              ((0x3 << 5) + 0x8)
+#define VIN2A_D16_DLY_VAL              ((0x3 << 5) + 0x2)
+#define VIN2A_D15_DLY_VAL              ((0x4 << 5) + 0x0)
+#define VIN2A_D14_DLY_VAL              ((0x4 << 5) + 0x0)
+
+static void cpsw_control(int enabled)
+{
+       /* VTP can be added here */
+}
+
+static struct cpsw_slave_data cpsw_slaves[] = {
+       {
+               .slave_reg_ofs  = 0x208,
+               .sliver_reg_ofs = 0xd80,
+               .phy_addr       = 1,
+       },
+       {
+               .slave_reg_ofs  = 0x308,
+               .sliver_reg_ofs = 0xdc0,
+               .phy_addr       = 2,
+       },
+};
+
+static struct cpsw_platform_data cpsw_data = {
+       .mdio_base              = CPSW_MDIO_BASE,
+       .cpsw_base              = CPSW_BASE,
+       .mdio_div               = 0xff,
+       .channels               = 8,
+       .cpdma_reg_ofs          = 0x800,
+       .slaves                 = 1,
+       .slave_data             = cpsw_slaves,
+       .ale_reg_ofs            = 0xd00,
+       .ale_entries            = 1024,
+       .host_port_reg_ofs      = 0x108,
+       .hw_stats_reg_ofs       = 0x900,
+       .bd_ram_ofs             = 0x2000,
+       .mac_control            = (1 << 5),
+       .control                = cpsw_control,
+       .host_port_num          = 0,
+       .version                = CPSW_CTRL_VERSION_2,
+};
+
+int board_eth_init(bd_t *bis)
+{
+       int ret;
+       uint8_t mac_addr[6];
+       uint32_t mac_hi, mac_lo;
+       uint32_t ctrl_val;
+
+       /* try reading mac address from efuse */
+       mac_lo = readl((*ctrl)->control_core_mac_id_0_lo);
+       mac_hi = readl((*ctrl)->control_core_mac_id_0_hi);
+       mac_addr[0] = (mac_hi & 0xFF0000) >> 16;
+       mac_addr[1] = (mac_hi & 0xFF00) >> 8;
+       mac_addr[2] = mac_hi & 0xFF;
+       mac_addr[3] = (mac_lo & 0xFF0000) >> 16;
+       mac_addr[4] = (mac_lo & 0xFF00) >> 8;
+       mac_addr[5] = mac_lo & 0xFF;
+
+       if (!getenv("ethaddr")) {
+               printf("<ethaddr> not set. Validating first E-fuse MAC\n");
+
+               if (is_valid_ether_addr(mac_addr))
+                       eth_setenv_enetaddr("ethaddr", mac_addr);
+       }
+
+       mac_lo = readl((*ctrl)->control_core_mac_id_1_lo);
+       mac_hi = readl((*ctrl)->control_core_mac_id_1_hi);
+       mac_addr[0] = (mac_hi & 0xFF0000) >> 16;
+       mac_addr[1] = (mac_hi & 0xFF00) >> 8;
+       mac_addr[2] = mac_hi & 0xFF;
+       mac_addr[3] = (mac_lo & 0xFF0000) >> 16;
+       mac_addr[4] = (mac_lo & 0xFF00) >> 8;
+       mac_addr[5] = mac_lo & 0xFF;
+
+       if (!getenv("eth1addr")) {
+               if (is_valid_ether_addr(mac_addr))
+                       eth_setenv_enetaddr("eth1addr", mac_addr);
+       }
+
+       ctrl_val = readl((*ctrl)->control_core_control_io1) & (~0x33);
+       ctrl_val |= 0x22;
+       writel(ctrl_val, (*ctrl)->control_core_control_io1);
+
+       ret = cpsw_register(&cpsw_data);
+       if (ret < 0)
+               printf("Error %d registering CPSW switch\n", ret);
+
+       return ret;
+}
+#endif
+
+#ifdef CONFIG_USB_XHCI_OMAP
+int board_usb_init(int index, enum usb_init_type init)
+{
+       setbits_le32((*prcm)->cm_l3init_usb_otg_ss_clkctrl,
+                       OTG_SS_CLKCTRL_MODULEMODE_HW | OPTFCLKEN_REFCLK960M);
+
+       return 0;
+}
+#endif
diff --git a/board/ti/beagle_x15/mux_data.h b/board/ti/beagle_x15/mux_data.h
new file mode 100644 (file)
index 0000000..2294abe
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com
+ *
+ * Author: Felipe Balbi <balbi@ti.com>
+ *
+ * Based on board/ti/dra7xx/evm.c
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef _MUX_DATA_BEAGLE_X15_H_
+#define _MUX_DATA_BEAGLE_X15_H_
+
+#include <asm/arch/mux_dra7xx.h>
+
+const struct pad_conf_entry core_padconf_array_essential[] = {
+       {MMC1_CLK, (IEN | PTU | PDIS | M0)},    /* MMC1_CLK */
+       {MMC1_CMD, (IEN | PTU | PDIS | M0)},    /* MMC1_CMD */
+       {MMC1_DAT0, (IEN | PTU | PDIS | M0)},   /* MMC1_DAT0 */
+       {MMC1_DAT1, (IEN | PTU | PDIS | M0)},   /* MMC1_DAT1 */
+       {MMC1_DAT2, (IEN | PTU | PDIS | M0)},   /* MMC1_DAT2 */
+       {MMC1_DAT3, (IEN | PTU | PDIS | M0)},   /* MMC1_DAT3 */
+       {MMC1_SDCD, (FSC | IEN | PTU | PDIS | M0)}, /* MMC1_SDCD */
+       {MMC1_SDWP, (FSC | IEN | PTD | PEN | M14)}, /* MMC1_SDWP */
+       {GPMC_A19, (IEN | PTU | PDIS | M1)},    /* mmc2_dat4 */
+       {GPMC_A20, (IEN | PTU | PDIS | M1)},    /* mmc2_dat5 */
+       {GPMC_A21, (IEN | PTU | PDIS | M1)},    /* mmc2_dat6 */
+       {GPMC_A22, (IEN | PTU | PDIS | M1)},    /* mmc2_dat7 */
+       {GPMC_A23, (IEN | PTU | PDIS | M1)},    /* mmc2_clk */
+       {GPMC_A24, (IEN | PTU | PDIS | M1)},    /* mmc2_dat0 */
+       {GPMC_A25, (IEN | PTU | PDIS | M1)},    /* mmc2_dat1 */
+       {GPMC_A26, (IEN | PTU | PDIS | M1)},    /* mmc2_dat2 */
+       {GPMC_A27, (IEN | PTU | PDIS | M1)},    /* mmc2_dat3 */
+       {GPMC_CS1, (IEN | PTU | PDIS | M1)},    /* mmm2_cmd */
+       {UART3_RXD, (FSC | IEN | PTU | PDIS | M0)}, /* UART3_RXD */
+       {UART3_TXD, (FSC | IEN | PTU | PDIS | M0)}, /* UART3_TXD */
+       {I2C1_SDA, (IEN | PTU | PDIS | M0)},    /* I2C1_SDA */
+       {I2C1_SCL, (IEN | PTU | PDIS | M0)},    /* I2C1_SCL */
+       {MDIO_MCLK, (PTU | PEN | M0)},          /* MDIO_MCLK  */
+       {MDIO_D, (IEN | PTU | PEN | M0)},       /* MDIO_D  */
+       {RGMII0_TXC, (M0) },
+       {RGMII0_TXCTL, (M0) },
+       {RGMII0_TXD3, (M0) },
+       {RGMII0_TXD2, (M0) },
+       {RGMII0_TXD1, (M0) },
+       {RGMII0_TXD0, (M0) },
+       {RGMII0_RXC, (IEN | M0) },
+       {RGMII0_RXCTL, (IEN | M0) },
+       {RGMII0_RXD3, (IEN | M0) },
+       {RGMII0_RXD2, (IEN | M0) },
+       {RGMII0_RXD1, (IEN | M0) },
+       {RGMII0_RXD0, (IEN | M0) },
+       {USB1_DRVVBUS, (M0 | FSC) },
+       {SPI1_CS1, (PEN | IDIS | M14) }, /* GPIO7_11 */
+};
+#endif /* _MUX_DATA_BEAGLE_X15_H_ */
index 37df7b2cadf55790f0c9a5101bc297e89677a01b..65222419ebbdb9b0e3a2c120fa27b56a9138a779 100644 (file)
@@ -96,18 +96,6 @@ int board_late_init(void)
        return 0;
 }
 
-/**
- * @brief misc_init_r - Configure EVM board specific configurations
- * such as power configurations, ethernet initialization as phase2 of
- * boot sequence
- *
- * @return 0
- */
-int misc_init_r(void)
-{
-       return 0;
-}
-
 static void do_set_mux32(u32 base,
                         struct pad_conf_entry const *array, int size)
 {
index 7276014f1db90edf08def7277f3df2fde1345d64..48240779c9a98b43f7d1fd23b37e034ab6857c85 100644 (file)
@@ -130,8 +130,8 @@ const struct pad_conf_entry core_padconf_array_essential[] = {
        {GPMC_A13, (IEN | PDIS | M1)},  /* QSPI1_RTCLK */
        {GPMC_A14, (IEN | PDIS | M1)},  /* QSPI1_D[3] */
        {GPMC_A15, (IEN | PDIS | M1)},  /* QSPI1_D[2] */
-       {GPMC_A16, (IEN | PDIS | M1)},  /* QSPI1_D[1] */
-       {GPMC_A17, (IEN | PDIS | M1)},  /* QSPI1_D[0] */
+       {GPMC_A16, (IEN | PDIS | M1)},  /* QSPI1_D[0] */
+       {GPMC_A17, (IEN | PDIS | M1)},  /* QSPI1_D[1] */
        {GPMC_A18, (M1)},  /* QSPI1_SCLK */
        {GPMC_A3, (IEN | PDIS | M1)},   /* QSPI1_CS2 */
        {GPMC_A4, (IEN | PDIS | M1)},   /* QSPI1_CS3 */
index 81dd081d76a98b6f864037367abf05cc12e934d4..3f93d9cbe26bb0d00c922b80ed3728c0b3dcabd0 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/arch/mmc_host_def.h>
 #include <asm/gpio.h>
 #include <i2c.h>
+#include <twl4030.h>
 #include <asm/mach-types.h>
 #include <linux/mtd/nand.h>
 #include "evm.h"
@@ -264,3 +265,10 @@ int board_mmc_init(bd_t *bis)
        return omap_mmc_init(0, 0, 0, -1, -1);
 }
 #endif
+
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
index 96c5f22eadeb544f47b7459356210cb8bea7c6d9..384b175e9cda5c3439f225b86a0a5cf3b163337c 100644 (file)
@@ -27,15 +27,12 @@ endif
 if TARGET_K2L_EVM
 
 config SYS_BOARD
-       string
        default "ks2_evm"
 
 config SYS_VENDOR
-       string
        default "ti"
 
 config SYS_CONFIG_NAME
-       string
        default "k2l_evm"
 
 endif
index a551e2869a3858f17111cb8f5614522c1b24ec97..9ee90a4f9d03165d0f481ac768ccb15b08b4bffe 100644 (file)
@@ -3,10 +3,11 @@ U-Boot port for Texas Instruments Keystone II EVM boards
 
 Author: Murali Karicheri <m-karicheri2@ti.com>
 
-This README has information on the u-boot port for K2HK, K2E boards.
+This README has information on the u-boot port for K2HK, K2E, and K2L EVM boards.
 Documentation for this board can be found at
 http://www.advantech.com/Support/TI-EVM/EVMK2HX_sd.aspx
 https://www.einfochips.com/index.php/partnerships/texas-instruments/k2e-evm.html
+https://www.einfochips.com/index.php/partnerships/texas-instruments/k2l-evm.html
 
 The K2HK board is based on Texas Instruments Keystone2 family of SoCs: K2H, K2K.
 More details on these SoCs are available at company websites
@@ -14,7 +15,10 @@ More details on these SoCs are available at company websites
  K2H: http://www.ti.com/product/tci6638k2h
 
 The K2E SoC details are available at
- K2E http://www.ti.com/lit/ds/symlink/66ak2e05.pdf
+ http://www.ti.com/lit/ds/symlink/66ak2e05.pdf
+
+The K2L SoC details are available at
+ http://www.ti.com/lit/ds/symlink/tci6630k2l.pdf
 
 Board configuration:
 ====================
@@ -25,6 +29,7 @@ Some of the peripherals that are configured by u-boot
 +------+-------+-------+-----------+-----------+-------+-------+----+
 |K2HK  |2      |512MB  |6MB       |4(2)       |2      |3      |3   |
 |K2E   |4      |512MB  |2MB       |8(2)       |2      |3      |3   |
+|K2L   |2      |512MB  |2MB       |4(2)       |4      |3      |3   |
 +------+-------+-------+-----------+-----------+-------+-------+----+
 
 There are only 2 eth port installed on the boards.
@@ -41,10 +46,13 @@ The port related files can be found at following folders
 Board configuration files:
 include/configs/k2hk_evm.h
 include/configs/k2e_evm.h
+include/configs/k2l_evm.h
+include/configs/k2l_evm.h
 
 As u-boot is migrating to Kconfig there is also board defconfig files
 configs/k2e_evm_defconfig
 configs/k2hk_evm_defconfig
+configs/k2l_evm_defconfig
 
 Supported boot modes:
  - SPI NOR boot
@@ -58,7 +66,7 @@ Supported image formats:
 
 Build instructions:
 ===================
-Examples for k2hk, for k2e just replace k2hk prefix accordingly.
+Examples for k2hk, for k2e and k2l just replace k2hk prefix accordingly.
 Don't forget to add ARCH=arm and CROSS_COMPILE.
 
 To build u-boot.bin
@@ -84,6 +92,8 @@ Use u-boot.bin from the build folder for loading and running u-boot binary
 on EVM. Follow instructions at
 K2HK http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup
 K2E  http://processors.wiki.ti.com/index.php/EVMK2E_Hardware_Setup
+K2L  http://processors.wiki.ti.com/index.php/TCIEVMK2L_Hardware_Setup
+
 to configure SW1 dip switch to use "No Boot/JTAG DSP Little Endian Boot Mode"
 and Power ON the EVM.  Follow instructions to connect serial port of EVM to
 PC and start TeraTerm or Hyper Terminal.
@@ -128,8 +138,8 @@ instructions:
 2. Suspend Target. Select Run -> Suspend from top level menu
    CortexA15_1 (Free Running)"
 3. Load u-boot-spi.gph binary from build folder on to DDR address 0x87000000
-   through CCS as described in step 2 of "Load and Run U-Boot on K2HK/K2E EVM
-   using CCS", but using address 0x87000000.
+   through CCS as described in step 2 of "Load and Run U-Boot on K2HK/K2E/K2L
+   EVM using CCS", but using address 0x87000000.
 4. Free Run the target as described earlier (step 4) to get u-boot prompt
 5. At the U-Boot console type following to setup u-boot environment variables.
    setenv addr_uboot 0x87000000
index 40294934525c9b0518d2a53118c45c6da22fdc13..04ec675103630c35af3dd7eaaeaee9f7800b6ab0 100644 (file)
@@ -114,7 +114,7 @@ u32 spl_boot_device(void)
 #endif
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        int lpae;
        char *env;
@@ -122,7 +122,6 @@ void ft_board_setup(void *blob, bd_t *bd)
        int nbanks;
        u64 size[2];
        u64 start[2];
-       char name[32];
        int nodeoffset;
        u32 ddr3a_size;
        int unitrd_fixup = 0;
@@ -158,15 +157,13 @@ void ft_board_setup(void *blob, bd_t *bd)
        }
 
        /* reserve memory at start of bank */
-       sprintf(name, "mem_reserve_head");
-       env = getenv(name);
+       env = getenv("mem_reserve_head");
        if (env) {
                start[0] += ustrtoul(env, &endp, 0);
                size[0] -= ustrtoul(env, &endp, 0);
        }
 
-       sprintf(name, "mem_reserve");
-       env = getenv(name);
+       env = getenv("mem_reserve");
        if (env)
                size[0] -= ustrtoul(env, &endp, 0);
 
@@ -220,6 +217,8 @@ void ft_board_setup(void *blob, bd_t *bd)
                        }
                }
        }
+
+       return 0;
 }
 
 void ft_board_setup_ex(void *blob, bd_t *bd)
index 559d20ca88e5ac451af27b988016754afc0b907a..729a19323957653d777f6f9cb8a7c0f370e726f1 100644 (file)
@@ -10,7 +10,7 @@
 #include <common.h>
 #include <asm/arch/ddr3.h>
 #include <asm/arch/hardware.h>
-#include <asm/ti-common/ti-aemif.h>
+#include <asm/ti-common/keystone_net.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -42,6 +42,44 @@ static struct pll_init_data tetris_pll_config[] = {
 static struct pll_init_data pa_pll_config =
        PASS_PLL_983;
 
+#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
+struct eth_priv_t eth_priv_cfg[] = {
+       {
+               .int_name        = "K2L_EMAC",
+               .rx_flow         = 0,
+               .phy_addr        = 0,
+               .slave_port      = 1,
+               .sgmii_link_type = SGMII_LINK_MAC_PHY,
+       },
+       {
+               .int_name        = "K2L_EMAC1",
+               .rx_flow         = 8,
+               .phy_addr        = 1,
+               .slave_port      = 2,
+               .sgmii_link_type = SGMII_LINK_MAC_PHY,
+       },
+       {
+               .int_name        = "K2L_EMAC2",
+               .rx_flow         = 16,
+               .phy_addr        = 2,
+               .slave_port      = 3,
+               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
+       },
+       {
+               .int_name        = "K2L_EMAC3",
+               .rx_flow         = 32,
+               .phy_addr        = 3,
+               .slave_port      = 4,
+               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
+       },
+};
+
+int get_num_eth_ports(void)
+{
+       return sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t);
+}
+#endif
+
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 int board_early_init_f(void)
 {
index 16368cbb0d9e4cf31b3dacd1cc1259e83f2c290d..783ba3576f792d906644cd99b070c2dbbabcbe15 100644 (file)
@@ -180,6 +180,22 @@ void emif_get_reg_dump(u32 emif_nr, const struct emif_regs **regs)
        else
                *regs = &emif_regs_elpida_400_mhz_1cs;
 }
+
+void emif_get_dmm_regs(const struct dmm_lisa_map_regs
+                                               **dmm_lisa_regs)
+{
+       u32 omap_rev = omap_revision();
+
+       if (omap_rev == OMAP4430_ES1_0)
+               *dmm_lisa_regs = &lisa_map_2G_x_1_x_2;
+       else if (omap_rev == OMAP4430_ES2_3)
+               *dmm_lisa_regs = &lisa_map_2G_x_2_x_2;
+       else if (omap_rev < OMAP4460_ES1_0)
+               *dmm_lisa_regs = &lisa_map_2G_x_2_x_2;
+       else
+               *dmm_lisa_regs = &ma_lisa_map_2G_x_2_x_2;
+}
+
 #endif
 
 /**
index 957940d53fe9789ed6c237f200a71a2124530802..7171363e764cfd5954e711d8c7ce5e61050a68e8 100644 (file)
@@ -195,4 +195,9 @@ int board_mmc_init(bd_t *bis)
 {
        return omap_mmc_init(0, 0, 0, -1, -1);
 }
+
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
 #endif
index bcbee73d5d540f98660fdd3a1485bc88cb02135f..b97804413101f54c64a8009607eaa00b8b629231 100644 (file)
@@ -124,6 +124,13 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_GENERIC_MMC)
+void board_mmc_power_init(void)
+{
+       twl4030_power_mmc_init(0);
+}
+#endif
+
 #if defined(CONFIG_DRIVER_DM9000) & !defined(CONFIG_SPL_BUILD)
 /*
  * Routine: board_eth_init
index b9d694a2688a832db433033a7d1fa9b5ccaef6e6..5d2c024e890b9ffab6401517ce75bd33a759b70a 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include <common.h>
-
+#include <dm.h>
 #include <asm/arch/gp_padctrl.h>
 #include <asm/arch/pinmux.h>
 #include <asm/gpio.h>
@@ -38,23 +38,20 @@ void pinmux_init(void)
 #ifdef CONFIG_PCI_TEGRA
 int tegra_pcie_board_init(void)
 {
-       unsigned int old_bus;
+       struct udevice *dev;
        u8 addr, data[1];
        int err;
 
-       old_bus = i2c_get_bus_num();
-
-       err = i2c_set_bus_num(0);
+       err = i2c_get_chip_for_busnum(0, PMU_I2C_ADDRESS, &dev);
        if (err) {
-               debug("failed to set I2C bus\n");
+               debug("%s: Cannot find PMIC I2C chip\n", __func__);
                return err;
        }
-
        /* TPS659110: VDD2_OP_REG = 1.05V */
        data[0] = 0x27;
        addr = 0x25;
 
-       err = i2c_write(PMU_I2C_ADDRESS, addr, 1, data, 1);
+       err = i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to set VDD supply\n");
                return err;
@@ -64,7 +61,7 @@ int tegra_pcie_board_init(void)
        data[0] = 0x0D;
        addr = 0x24;
 
-       err = i2c_write(PMU_I2C_ADDRESS, addr, 1, data, 1);
+       err = i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to enable VDD supply\n");
                return err;
@@ -74,14 +71,12 @@ int tegra_pcie_board_init(void)
        data[0] = 0x0D;
        addr = 0x35;
 
-       err = i2c_write(PMU_I2C_ADDRESS, addr, 1, data, 1);
+       err = i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to set AVDD supply\n");
                return err;
        }
 
-       i2c_set_bus_num(old_bus);
-
        return 0;
 }
 
index a1f56cde2962a96053a289068c412a37096e0325..e9363ea394823a24b6d4cf9f8007d160f73b7e7d 100644 (file)
@@ -863,12 +863,14 @@ int board_get_height (void)
 #endif /* CONFIG_VIDEO_SM501 */
 
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #if defined(CONFIG_VIDEO)
        fdt_add_edid(blob, "smi,sm501", edid_buf);
 #endif
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
 
index 814fcb26573f61ce4dba176e3c16b3a38afdda5d..d891a3844ca3836284a907faa7e5514840bcdd84 100644 (file)
@@ -414,12 +414,14 @@ static void set_ddr_config(void) {
 }
 
 #ifdef CONFIG_OF_BOARD_SETUP
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif /* CONFIG_PCI */
+
+       return 0;
 }
 #endif /* CONFIG_OF_BOARD_SETUP */
index 926a37afc53cdfe58d72ec4dc91ee040c25aecb0..857fedb8bec944e4718bf625c7257e9b40d6ffe7 100644 (file)
@@ -1,68 +1,3 @@
-if TARGET_FPS850L
-
-config SYS_BOARD
-       default "tqm8xx"
-
-config SYS_VENDOR
-       default "tqc"
-
-config SYS_CONFIG_NAME
-       default "FPS850L"
-
-endif
-
-if TARGET_FPS860L
-
-config SYS_BOARD
-       default "tqm8xx"
-
-config SYS_VENDOR
-       default "tqc"
-
-config SYS_CONFIG_NAME
-       default "FPS860L"
-
-endif
-
-if TARGET_NSCU
-
-config SYS_BOARD
-       default "tqm8xx"
-
-config SYS_VENDOR
-       default "tqc"
-
-config SYS_CONFIG_NAME
-       default "NSCU"
-
-endif
-
-if TARGET_SM850
-
-config SYS_BOARD
-       default "tqm8xx"
-
-config SYS_VENDOR
-       default "tqc"
-
-config SYS_CONFIG_NAME
-       default "SM850"
-
-endif
-
-if TARGET_TK885D
-
-config SYS_BOARD
-       default "tqm8xx"
-
-config SYS_VENDOR
-       default "tqc"
-
-config SYS_CONFIG_NAME
-       default "TK885D"
-
-endif
-
 if TARGET_TQM823L
 
 config SYS_BOARD
@@ -218,16 +153,3 @@ config SYS_CONFIG_NAME
        default "TQM885D"
 
 endif
-
-if TARGET_VIRTLAB2
-
-config SYS_BOARD
-       default "tqm8xx"
-
-config SYS_VENDOR
-       default "tqc"
-
-config SYS_CONFIG_NAME
-       default "virtlab2"
-
-endif
index fe4a21202925c422311fa45c0c6e9e7f3e87fed3..f3ddc6a5304ab87c4e0d7aefecc890f89a2c9f63 100644 (file)
@@ -2,12 +2,6 @@ TQM8XX BOARD
 M:     Wolfgang Denk <wd@denx.de>
 S:     Maintained
 F:     board/tqc/tqm8xx/
-F:     include/configs/FPS850L.h
-F:     configs/FPS850L_defconfig
-F:     include/configs/FPS860L.h
-F:     configs/FPS860L_defconfig
-F:     include/configs/SM850.h
-F:     configs/SM850_defconfig
 F:     include/configs/TQM823L.h
 F:     configs/TQM823L_defconfig
 F:     configs/TQM823L_LCD_defconfig
@@ -34,14 +28,4 @@ F:   configs/TQM866M_defconfig
 F:     include/configs/TQM885D.h
 F:     configs/TQM885D_defconfig
 F:     configs/TTTech_defconfig
-F:     include/configs/virtlab2.h
-F:     configs/virtlab2_defconfig
 F:     configs/wtk_defconfig
-
-NSCU BOARD
-#M:    -
-S:     Maintained
-F:     include/configs/NSCU.h
-F:     configs/NSCU_defconfig
-F:     include/configs/TK885D.h
-F:     configs/TK885D_defconfig
index 9ce2a5739f321b936c884d29f6f7621661fbf4d2..6d17830575f404e852d4b174269f802a8d0ddf50 100644 (file)
@@ -118,9 +118,7 @@ int checkboard (void)
                        break;
                putc (buf[i]);
        }
-#ifdef CONFIG_VIRTLAB2
-       puts (" (Virtlab2)");
-#endif
+
        putc ('\n');
 
        return (0);
@@ -512,14 +510,6 @@ int misc_init_r (void)
        immap->im_ioport.iop_padat &= ~0x0001;  /* turn it off */
 # endif
 
-#ifdef CONFIG_NSCU
-       /* wake up ethernet module */
-       immap->im_ioport.iop_pcpar &= ~0x0004;  /* GPIO pin      */
-       immap->im_ioport.iop_pcdir |= 0x0004;   /* output        */
-       immap->im_ioport.iop_pcso &= ~0x0004;   /* for clarity   */
-       immap->im_ioport.iop_pcdat |= 0x0004;   /* enable        */
-#endif /* CONFIG_NSCU */
-
        return (0);
 }
 #endif /* CONFIG_MISC_INIT_R */
@@ -674,55 +664,11 @@ void ft_blob_update (void *blob, bd_t *bd)
        }
 }
 
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
        ft_blob_update(blob, bd);
-}
-#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
-
-/* ---------------------------------------------------------------------------- */
-/* TK885D specific initializaion                                               */
-/* ---------------------------------------------------------------------------- */
-#ifdef CONFIG_TK885D
-#include <miiphy.h>
-int last_stage_init(void)
-{
-       const unsigned char phy[] = {CONFIG_FEC1_PHY, CONFIG_FEC2_PHY};
-       unsigned short reg;
-       int ret, i = 100;
-       char *s;
-
-       mii_init();
-       /* Without this delay 0xff is read from the UART buffer later in
-        * abortboot() and autoboot is aborted */
-       udelay(10000);
-       while (tstc() && i--)
-               (void)getc();
-
-       /* Check if auto-negotiation is prohibited */
-       s = getenv("phy_auto_nego");
-
-       if (!s || !strcmp(s, "on"))
-               /* Nothing to do - autonegotiation by default */
-               return 0;
-
-       for (i = 0; i < 2; i++) {
-               ret = miiphy_read("FEC", phy[i], MII_BMCR, &reg);
-               if (ret) {
-                       printf("Cannot read BMCR on PHY %d\n", phy[i]);
-                       return 0;
-               }
-               /* Auto-negotiation off, hard set full duplex, 100Mbps */
-               ret = miiphy_write("FEC", phy[i],
-                                  MII_BMCR, (reg | BMCR_SPEED100 |
-                                             BMCR_FULLDPLX) & ~BMCR_ANENABLE);
-               if (ret) {
-                       printf("Cannot write BMCR on PHY %d\n", phy[i]);
-                       return 0;
-               }
-       }
 
        return 0;
 }
-#endif
+#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
index b552bb8d7eee1ff099a973bb2e1e9bfff61c4e32..c9e163e7d5e8e492a5a4e3e04d948031f6808e3e 100644 (file)
@@ -17,6 +17,7 @@
 #include <asm/gpio.h>
 #include <asm/io.h>
 #include <asm/imx-common/mxc_i2c.h>
+#include <asm/imx-common/spi.h>
 #include <common.h>
 #include <fsl_esdhc.h>
 #include <libfdt.h>
@@ -50,7 +51,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 int dram_init(void)
 {
-       gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
+       gd->ram_size = imx_ddr_size();
 
        return 0;
 }
@@ -138,8 +139,10 @@ static iomux_v3_cfg_t const tqma6_ecspi1_pads[] = {
        NEW_PAD_CTRL(MX6_PAD_EIM_D18__ECSPI1_MOSI, SPI_PAD_CTRL),
 };
 
+#define TQMA6_SF_CS_GPIO IMX_GPIO_NR(3, 19)
+
 static unsigned const tqma6_ecspi1_cs[] = {
-       IMX_GPIO_NR(3, 19),
+       TQMA6_SF_CS_GPIO,
 };
 
 static void tqma6_iomuxc_spi(void)
@@ -152,6 +155,12 @@ static void tqma6_iomuxc_spi(void)
                                         ARRAY_SIZE(tqma6_ecspi1_pads));
 }
 
+int board_spi_cs_gpio(unsigned bus, unsigned cs)
+{
+       return ((bus == CONFIG_SF_DEFAULT_BUS) &&
+               (cs == CONFIG_SF_DEFAULT_CS)) ? TQMA6_SF_CS_GPIO : -1;
+}
+
 static struct i2c_pads_info tqma6_i2c3_pads = {
        /* I2C3: on board LM75, M24C64,  */
        .scl = {
@@ -172,8 +181,14 @@ static struct i2c_pads_info tqma6_i2c3_pads = {
 
 static void tqma6_setup_i2c(void)
 {
-       /* use logical index for bus, e.g. I2C1 -> 0 */
-       setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &tqma6_i2c3_pads);
+       int ret;
+       /*
+        * use logical index for bus, e.g. I2C1 -> 0
+        * warn on error
+        */
+       ret = setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &tqma6_i2c3_pads);
+       if (ret)
+               printf("setup I2C3 failed: %d\n", ret);
 }
 
 int board_early_init_f(void)
@@ -251,12 +266,14 @@ int checkboard(void)
  * Device Tree Support
  */
 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        /* bring in eMMC dsr settings */
        do_fixup_by_path_u32(blob,
                             "/soc/aips-bus@02100000/usdhc@02198000",
                             "dsr", tqma6_emmc_dsr, 2);
        tqma6_bb_ft_board_setup(blob, bd);
+
+       return 0;
 }
 #endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
index 9d072d28adf1d85dca144b0d5041380559e6d26e..fb7b4626a1c525ee409d1e6b13ac9b5e1e21a972 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #ifndef __TQMA6_BB__
-#define __TQMA6_BB
+#define __TQMA6_BB__
 
 #include <common.h>
 
index fd592875d8cc51b4f380612e8290392661a23ee7..6f4cffd95ecd3b3dbf1df181f9998f7936a5f570 100644 (file)
@@ -224,8 +224,14 @@ static struct i2c_pads_info mba6_i2c1_pads = {
 
 static void mba6_setup_i2c(void)
 {
-       /* use logical index for bus, e.g. I2C1 -> 0 */
-       setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &mba6_i2c1_pads);
+       int ret;
+       /*
+        * use logical index for bus, e.g. I2C1 -> 0
+        * warn on error
+        */
+       ret = setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &mba6_i2c1_pads);
+       if (ret)
+               printf("setup I2C1 failed: %d\n", ret);
 }
 
 
diff --git a/board/utx8245/Kconfig b/board/utx8245/Kconfig
deleted file mode 100644 (file)
index aec0eb9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_UTX8245
-
-config SYS_BOARD
-       default "utx8245"
-
-config SYS_CONFIG_NAME
-       default "utx8245"
-
-endif
diff --git a/board/utx8245/MAINTAINERS b/board/utx8245/MAINTAINERS
deleted file mode 100644 (file)
index bed69c8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-UTX8245 BOARD
-M:     Greg Allen <gallen@arlut.utexas.edu>
-S:     Maintained
-F:     board/utx8245/
-F:     include/configs/utx8245.h
-F:     configs/utx8245_defconfig
diff --git a/board/utx8245/Makefile b/board/utx8245/Makefile
deleted file mode 100644 (file)
index f12e545..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Gregory E. Allen, gallen@arlut.utexas.edu
-# Matthew E. Karger, karger@arlut.utexas.edu
-# Applied Research Laboratories, The University of Texas at Austin
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = utx8245.o flash.o
diff --git a/board/utx8245/flash.c b/board/utx8245/flash.c
deleted file mode 100644 (file)
index 1dfcb41..0000000
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Gregory E. Allen, gallen@arlut.utexas.edu
- * Matthew E. Karger, karger@arlut.utexas.edu
- * Applied Research Laboratories, The University of Texas at Austin
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#define ROM_CS0_START  0xFF800000
-#define ROM_CS1_START  0xFF000000
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-#define        FLASH_BANK_SIZE ((uint)(16 * 1024 * 1024))      /* max 16Mbyte */
-#define        MAIN_SECT_SIZE  0x10000
-#define        SECT_SIZE_32KB  0x8000
-#define        SECT_SIZE_8KB   0x2000
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-#if 0
-static void write_via_fpu (vu_long * addr, ulong * data);
-#endif
-static __inline__ unsigned long get_msr (void);
-static __inline__ void set_msr (unsigned long msr);
-
-/*flash command address offsets*/
-#define ADDR0          (0x555)
-#define ADDR1          (0xAAA)
-#define ADDR3          (0x001)
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*---------------------------------------------------------------------*/
-/*#define      DEBUG_FLASH     1 */
-
-/*---------------------------------------------------------------------*/
-
-unsigned long flash_init (void)
-{
-       int i;          /* flash bank counter */
-       int j;          /* flash device sector counter */
-       int k;          /* flash size calculation loop counter */
-       int N;          /* pow(2,N) is flash size, but we don't have <math.h> */
-       ulong total_size = 0, device_size = 1;
-       unsigned char manuf_id, device_id;
-
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-               vu_char *addr = (vu_char *) (CONFIG_SYS_FLASH_BASE + i * FLASH_BANK_SIZE);
-
-               addr[0x555] = 0xAA;             /* get manuf/device info command */
-               addr[0x2AA] = 0x55;             /* 3-cycle command */
-               addr[0x555] = 0x90;
-
-               manuf_id = addr[0];             /* read back manuf/device info */
-               device_id = addr[1];
-
-               addr[0x55] = 0x98;              /* CFI command */
-               N = addr[0x27];                 /* read back device_size = pow(2,N) */
-
-               for (k = 0; k < N; k++) /* calculate device_size = pow(2,N) */
-                       device_size *= 2;
-
-               flash_info[i].size = device_size;
-               flash_info[i].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-
-#if defined DEBUG_FLASH
-               printf ("manuf_id = %x, device_id = %x\n", manuf_id, device_id);
-#endif
-               /* find out what kind of flash we are using */
-               if ((manuf_id == (uchar) (AMD_MANUFACT))
-                       && (device_id == AMD_ID_LV033C)) {
-                       flash_info[i].flash_id =
-                                       ((FLASH_MAN_AMD & FLASH_VENDMASK) << 16) |
-                                       (FLASH_AM033C & FLASH_TYPEMASK);
-
-                       /* set individual sector start addresses */
-                       for (j = 0; j < flash_info[i].sector_count; j++) {
-                               flash_info[i].start[j] =
-                                               (CONFIG_SYS_FLASH_BASE + i * FLASH_BANK_SIZE +
-                                                j * MAIN_SECT_SIZE);
-                       }
-               }
-
-               else if ((manuf_id == (uchar) (AMD_MANUFACT)) &&
-                                (device_id == AMD_ID_LV116DT)) {
-                       flash_info[i].flash_id =
-                                       ((FLASH_MAN_AMD & FLASH_VENDMASK) << 16) |
-                                       (FLASH_AM160T & FLASH_TYPEMASK);
-
-                       /* set individual sector start addresses */
-                       for (j = 0; j < flash_info[i].sector_count; j++) {
-                               flash_info[i].start[j] =
-                                               (CONFIG_SYS_FLASH_BASE + i * FLASH_BANK_SIZE +
-                                                j * MAIN_SECT_SIZE);
-
-                               if (j < (CONFIG_SYS_MAX_FLASH_SECT - 3)) {
-                                       flash_info[i].start[j] =
-                                                       (CONFIG_SYS_FLASH_BASE + i * FLASH_BANK_SIZE +
-                                                        j * MAIN_SECT_SIZE);
-                               } else if (j == (CONFIG_SYS_MAX_FLASH_SECT - 3)) {
-                                       flash_info[i].start[j] =
-                                                       (flash_info[i].start[j - 1] + SECT_SIZE_32KB);
-
-                               } else {
-                                       flash_info[i].start[j] =
-                                                       (flash_info[i].start[j - 1] + SECT_SIZE_8KB);
-                               }
-                       }
-               }
-
-               else {
-                       flash_info[i].flash_id = FLASH_UNKNOWN;
-                       addr[0] = 0xFF;
-                       goto Done;
-               }
-
-#if defined DEBUG_FLASH
-               printf ("flash_id = 0x%08lX\n", flash_info[i].flash_id);
-#endif
-
-               addr[0] = 0xFF;
-
-               memset (flash_info[i].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
-
-               total_size += flash_info[i].size;
-       }
-
-       /* Protect monitor and environment sectors
-        */
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       flash_protect (FLAG_PROTECT_SET, CONFIG_SYS_MONITOR_BASE,
-                                  CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                                  &flash_info[0]);
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-       flash_protect (FLAG_PROTECT_SET, CONFIG_ENV_ADDR,
-                       CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
-  Done:
-       return total_size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
-       static const char unk[] = "Unknown";
-       const char *mfct = unk, *type = unk;
-       unsigned int i;
-
-       if (info->flash_id != FLASH_UNKNOWN) {
-               switch (info->flash_id & FLASH_VENDMASK) {
-               case FLASH_MAN_AMD:
-                       mfct = "AMD";
-                       break;
-               case FLASH_MAN_FUJ:
-                       mfct = "FUJITSU";
-                       break;
-               case FLASH_MAN_STM:
-                       mfct = "STM";
-                       break;
-               case FLASH_MAN_SST:
-                       mfct = "SST";
-                       break;
-               case FLASH_MAN_BM:
-                       mfct = "Bright Microelectonics";
-                       break;
-               case FLASH_MAN_INTEL:
-                       mfct = "Intel";
-                       break;
-               }
-
-               switch (info->flash_id & FLASH_TYPEMASK) {
-               case FLASH_AM033C:
-                       type = "AM29LV033C (32 Mbit, uniform sector size)";
-                       break;
-               case FLASH_AM160T:
-                       type = "AM29LV160T (16 Mbit, top boot sector)";
-                       break;
-               case FLASH_AM040:
-                       type = "AM29F040B (512K * 8, uniform sector size)";
-                       break;
-               case FLASH_AM400B:
-                       type = "AM29LV400B (4 Mbit, bottom boot sect)";
-                       break;
-               case FLASH_AM400T:
-                       type = "AM29LV400T (4 Mbit, top boot sector)";
-                       break;
-               case FLASH_AM800B:
-                       type = "AM29LV800B (8 Mbit, bottom boot sect)";
-                       break;
-               case FLASH_AM800T:
-                       type = "AM29LV800T (8 Mbit, top boot sector)";
-                       break;
-               case FLASH_AM320B:
-                       type = "AM29LV320B (32 Mbit, bottom boot sect)";
-                       break;
-               case FLASH_AM320T:
-                       type = "AM29LV320T (32 Mbit, top boot sector)";
-                       break;
-               case FLASH_STM800AB:
-                       type = "M29W800AB (8 Mbit, bottom boot sect)";
-                       break;
-               case FLASH_SST800A:
-                       type = "SST39LF/VF800 (8 Mbit, uniform sector size)";
-                       break;
-               case FLASH_SST160A:
-                       type = "SST39LF/VF160 (16 Mbit, uniform sector size)";
-                       break;
-               }
-       }
-
-       printf ("\n  Brand: %s Type: %s\n"
-                       "  Size: %lu KB in %d Sectors\n",
-                       mfct, type, info->size >> 10, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-
-       for (i = 0; i < info->sector_count; i++) {
-               unsigned long size;
-               unsigned int erased;
-               unsigned long *flash = (unsigned long *) info->start[i];
-
-               /*
-                * Check if whole sector is erased
-                */
-               size = (i != (info->sector_count - 1)) ?
-                               (info->start[i + 1] - info->start[i]) >> 2 :
-                               (info->start[0] + info->size - info->start[i]) >> 2;
-
-               for (flash = (unsigned long *) info->start[i], erased = 1;
-                        (flash != (unsigned long *) info->start[i] + size) && erased;
-                        flash++)
-                       erased = *flash == ~0x0UL;
-
-               printf ("%s %08lX %s %s",
-                               (i % 5) ? "" : "\n   ",
-                               info->start[i],
-                               erased ? "E" : " ", info->protect[i] ? "RO" : "  ");
-       }
-
-       puts ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-       unsigned char sh8b;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) ||
-               (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
-               printf ("Can't erase unknown flash type - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                               prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Check the ROM CS */
-       if ((info->start[0] >= ROM_CS1_START)
-               && (info->start[0] < ROM_CS0_START))
-               sh8b = 3;
-       else
-               sh8b = 0;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts ();
-
-       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
-       addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00800080;
-       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
-       addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr = (FLASH_WORD_SIZE *) (info->start[0] + ((info->
-                                                                                                                  start[sect] -
-                                                                                                                  info->
-                                                                                                                  start[0]) <<
-                                                                                                                 sh8b));
-
-                       if (info->flash_id & FLASH_MAN_SST) {
-                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
-                               addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00800080;
-                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
-                               addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-                               addr[0] = (FLASH_WORD_SIZE) 0x00500050; /* block erase */
-                               udelay (30000); /* wait 30 ms */
-                       } else {
-                               addr[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
-                       }
-
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts ();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last = start;
-       addr = (FLASH_WORD_SIZE *) (info->start[0] + ((info->start[l_sect] -
-                                                                                                  info->
-                                                                                                  start[0]) << sh8b));
-       while ((addr[0] & (FLASH_WORD_SIZE) 0x00800080) !=
-                  (FLASH_WORD_SIZE) 0x00800080) {
-               if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       serial_putc ('.');
-                       last = now;
-               }
-       }
-
-  DONE:
-       /* reset to read mode */
-       addr = (FLASH_WORD_SIZE *) info->start[0];
-       addr[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
-       printf (" done\n");
-       return 0;
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);                       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i = 0, cp = wp; i < l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-               for (; i < 4 && cnt > 0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt == 0 && i < 4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-
-               if ((rc = write_word (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i = 0; i < 4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word (info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i < 4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *) cp);
-       }
-
-       return (write_word (info, wp, data));
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
-       volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) info->start[0];
-       volatile FLASH_WORD_SIZE *dest2;
-       volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
-       ulong start;
-       int flag;
-       int i;
-       unsigned char sh8b;
-
-       /* Check the ROM CS */
-       if ((info->start[0] >= ROM_CS1_START)
-               && (info->start[0] < ROM_CS0_START))
-               sh8b = 3;
-       else
-               sh8b = 0;
-
-       dest2 = (FLASH_WORD_SIZE *) (((dest - info->start[0]) << sh8b) +
-                                                                info->start[0]);
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*dest2 & (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts ();
-
-       for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
-               addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
-               addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-               addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00A000A0;
-
-               dest2[i << sh8b] = data2[i];
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts ();
-
-               /* data polling for D7 */
-               start = get_timer (0);
-               while ((dest2[i << sh8b] & (FLASH_WORD_SIZE) 0x00800080) !=
-                          (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               return (1);
-                       }
-               }
-       }
-
-       return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-#if 0
-static void write_via_fpu (vu_long * addr, ulong * data)
-{
-       __asm__ __volatile__ ("lfd  1, 0(%0)"::"r" (data));
-       __asm__ __volatile__ ("stfd 1, 0(%0)"::"r" (addr));
-}
-#endif
-
-/*-----------------------------------------------------------------------
- */
-static __inline__ unsigned long get_msr (void)
-{
-       unsigned long msr;
-
-       __asm__ __volatile__ ("mfmsr %0":"=r" (msr):);
-
-       return msr;
-}
-
-static __inline__ void set_msr (unsigned long msr)
-{
-       __asm__ __volatile__ ("mtmsr %0"::"r" (msr));
-}
diff --git a/board/utx8245/utx8245.c b/board/utx8245/utx8245.c
deleted file mode 100644 (file)
index 69d19e3..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * (C) Copyright 2002
- * Gregory E. Allen, gallen@arlut.utexas.edu
- * Matthew E. Karger, karger@arlut.utexas.edu
- * Applied Research Laboratories, The University of Texas at Austin
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <asm/mmu.h>
-#include <pci.h>
-#include <netdev.h>
-
-#define        SAVE_SZ 32
-
-
-int checkboard(void)
-{
-       ulong busfreq  = get_bus_freq(0);
-       char  buf[32];
-
-       printf("Board: UTX8245 Local Bus at %s MHz\n", strmhz(buf, busfreq));
-       return 0;
-}
-
-
-phys_size_t initdram(int board_type)
-{
-       long size;
-       long new_bank0_end;
-       long new_bank1_end;
-       long mear1;
-       long emear1;
-
-       size = get_ram_size(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       new_bank0_end = size/2 - 1;
-       new_bank1_end = size - 1;
-       mear1 = mpc824x_mpc107_getreg(MEAR1);
-       emear1 = mpc824x_mpc107_getreg(EMEAR1);
-
-       mear1 = (mear1  & 0xFFFF0000) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) |
-               ((new_bank1_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT << 8);
-       emear1 = (emear1 & 0xFFFF0000) |
-               ((new_bank0_end & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) |
-               ((new_bank1_end & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT << 8);
-
-       mpc824x_mpc107_setreg(MEAR1, mear1);
-       mpc824x_mpc107_setreg(EMEAR1, emear1);
-
-       return (size);
-}
-
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-static struct pci_config_table pci_utx8245_config_table[] = {
-#ifndef CONFIG_PCI_PNP
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0C, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                      PCI_ENET0_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0B, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_FIREWIRE_IOADDR,
-                                      PCI_FIREWIRE_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-#endif /*CONFIG_PCI_PNP*/
-       { }
-};
-
-
-static void pci_utx8245_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
-       if (PCI_DEV(dev) == 11)
-               /* assign serial interrupt line 9 (int25) to FireWire */
-               pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 25);
-
-       else if (PCI_DEV(dev) == 12)
-               /* assign serial interrupt line 8 (int24) to Ethernet */
-               pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 24);
-
-       else if (PCI_DEV(dev) == 14)
-               /* assign serial interrupt line 0 (int16) to PMC slot 0 */
-               pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 16);
-
-       else if (PCI_DEV(dev) == 15)
-               /* assign serial interrupt line 1 (int17) to PMC slot 1 */
-               pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 17);
-}
-
-static struct pci_controller utx8245_hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_utx8245_config_table,
-       fixup_irq: pci_utx8245_fixup_irq,
-       write_byte: pci_hose_write_config_byte
-#endif /*CONFIG_PCI_PNP*/
-};
-
-void pci_init_board (void)
-{
-       pci_mpc824x_init(&utx8245_hose);
-
-       icache_enable();
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
index c4feef8196ec3c979cbd62a4449a1ccf68b5e811..7f24a30688ac2468b1048deae5854502ec736b3d 100644 (file)
@@ -192,11 +192,13 @@ void pci_init_board(void)
 #endif
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
 #ifdef CONFIG_PCI
        ft_pci_setup(blob, bd);
 #endif
+
+       return 0;
 }
 #endif
index 3c8b7a5d2d0a9278158a947f73b143d8713d5989..1075c6589d5d2ecda1a94301ee4d2b6f32eb9434 100644 (file)
@@ -144,7 +144,7 @@ int board_mmc_getcd(struct mmc *mmc)
 
 int board_mmc_init(bd_t *bis)
 {
-       s32 status = 0;
+       int ret;
        u32 index = 0;
 
        /*
@@ -173,13 +173,15 @@ int board_mmc_init(bd_t *bis)
                        printf("Warning: you configured more USDHC controllers"
                               "(%d) then supported by the board (%d)\n",
                               index + 1, CONFIG_SYS_FSL_USDHC_NUM);
-                       return status;
+                       return -EINVAL;
                }
 
-               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               ret = fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+               if (ret)
+                       return ret;
        }
 
-       return status;
+       return 0;
 }
 
 static int mx6_rgmii_rework(struct phy_device *phydev)
index 035cb1499add040467435ce63e4ffaeb777f56d4..26e0acccb056da25a2bf4c87d630171e1895c0af 100644 (file)
@@ -1,5 +1,5 @@
 XPEDITE517X BOARD
-#M:    -
+M:     Peter Tyser <ptyser@xes-inc.com>
 S:     Maintained
 F:     board/xes/xpedite517x/
 F:     include/configs/xpedite517x.h
index b7ad3495025f85a8966c19b219ae65ce01572c0c..0028870db07784a6e417cd4f39b305cbecf33dc2 100644 (file)
@@ -69,11 +69,13 @@ phys_size_t initdram(int board_type)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
 #ifdef CONFIG_PCI
        ft_board_pci_setup(blob, bd);
 #endif
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
index 2fd4ac072d54ae50aab55814f0941979da452c3d..f7bd437cc66d8a3f3e90c9f6b72ab128af785d97 100644 (file)
@@ -1,5 +1,5 @@
 XPEDITE520X BOARD
-#M:    -
+M:     Peter Tyser <ptyser@xes-inc.com>
 S:     Maintained
 F:     board/xes/xpedite520x/
 F:     include/configs/xpedite520x.h
index aa9e99d108ea5dac3d0be1ebff694ea7169715a8..6a3df52391e782007602c093ae5372ed038fff9b 100644 (file)
@@ -70,11 +70,13 @@ int board_early_init_r(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
 #ifdef CONFIG_PCI
        ft_board_pci_setup(blob, bd);
 #endif
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
index 45a420d11ab6da5bf6952cb76526c367fe0899e4..b6123acc0f99c41fa4cc0eeca316456e9fbd0d95 100644 (file)
@@ -1,5 +1,5 @@
 XPEDITE537X BOARD
-#M:    -
+M:     Peter Tyser <ptyser@xes-inc.com>
 S:     Maintained
 F:     board/xes/xpedite537x/
 F:     include/configs/xpedite537x.h
index efd563b266b655885448d95e1943b939ca5f3712..41419feb178a955d2e4b4049f31fb82895e7f0b7 100644 (file)
@@ -72,11 +72,13 @@ int board_early_init_r(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
 #ifdef CONFIG_PCI
        ft_board_pci_setup(blob, bd);
 #endif
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
index b22f0e61738cb0dbc3528f8a3ca87efc9670e2bb..017f3687578b8c2c80e3e4a96b7ddd0cb180606e 100644 (file)
@@ -1,5 +1,5 @@
 XPEDITE550X BOARD
-#M:    -
+M:     Peter Tyser <ptyser@xes-inc.com>
 S:     Maintained
 F:     board/xes/xpedite550x/
 F:     include/configs/xpedite550x.h
index e64d682afe7e7f92ef56df857ec8bb52781123f3..1f05150d0ff245b1fc897aac709e4260645d068c 100644 (file)
@@ -72,11 +72,13 @@ int board_early_init_r(void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, bd_t *bd)
 {
 #ifdef CONFIG_PCI
        ft_board_pci_setup(blob, bd);
 #endif
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
 #endif
index 68b8edd260d01e3dda8c4afc2b23e66a60f849d4..7c36bc963f7a3d0d39ef3398f5921c15d5feb541 100644 (file)
@@ -1 +1,2 @@
 ps7_init.[ch]
+ps7_init_gpl.[ch]
index 71c0c351f929b33ae5b1f5406d8eb81690ca6dd6..3b1eb4f74ad17ee42fc270c24f8bd08253934aa3 100644 (file)
@@ -7,9 +7,11 @@
 
 obj-y  := board.o
 
-# Please copy ps7_init.c/h from hw project to this directory
+# Please copy ps7_init_gpl.c/h from hw project to this directory
 obj-$(CONFIG_SPL_BUILD) += \
-               $(if $(wildcard $(srctree)/$(src)/ps7_init.c), ps7_init.o)
+               $(if $(wildcard $(srctree)/$(src)/ps7_init_gpl.c), ps7_init_gpl.o, \
+                       $(if $(wildcard $(srctree)/$(src)/ps7_init.c), ps7_init.o legacy.o))
 
 # Suppress "warning: function declaration isn't a prototype"
+CFLAGS_REMOVE_ps7_init_gpl.o := -Wstrict-prototypes
 CFLAGS_REMOVE_ps7_init.o := -Wstrict-prototypes
diff --git a/board/xilinx/zynq/legacy.c b/board/xilinx/zynq/legacy.c
new file mode 100644 (file)
index 0000000..4ae913e
--- /dev/null
@@ -0,0 +1,2 @@
+
+#warning usage of ps7_init files is deprecated please use ps7_init_gpl
index e59a977eb17448a81ef2b1b1b82c92a16fa0c558..1eccf8d91d09bcaf728b43448f1b9eba42466383 100644 (file)
@@ -6,7 +6,7 @@
 #define XIL_IO_H
 
 /*
- * This empty file is here because ps7_init.c exported by hw project
+ * This empty file is here because ps7_init_gpl.c exported by hw project
  * has #include "xil_io.h" line.
  */
 
index 216a8debd9afb7021622d70453511ea9f35c9fc2..fd84fa08bd3efc2569ac4200684f26abca5ac205 100644 (file)
 menu "Command line interface"
        depends on !SPL_BUILD
 
+config HUSH_PARSER
+       bool "Use hush shell"
+       select SYS_HUSH_PARSER
+       help
+         This option enables the "hush" shell (from Busybox) as command line
+         interpreter, thus enabling powerful command line syntax like
+         if...then...else...fi conditionals or `&&' and '||'
+         constructs ("shell scripts").
+
+         If disabled, you get the old, much simpler behaviour with a somewhat
+         smaller memory footprint.
+
+config SYS_HUSH_PARSER
+       bool
+       help
+         Backward compatibility.
+
+comment "Commands"
+
+menu "Info commands"
+
+config CMD_BDI
+       bool "bdinfo"
+       help
+         Print board info
+
+config CMD_CONSOLE
+       bool "coninfo"
+       help
+         Print console devices and information.
+
+config CMD_LICENSE
+       bool "license"
+       help
+         Print GPL license text
+
+endmenu
+
+menu "Boot commands"
+
+config CMD_BOOTD
+       bool "bootd"
+       help
+         Run the command stored in the environment "bootcmd", i.e.
+         "bootd" does the same thing as "run bootcmd".
+
 config CMD_BOOTM
-       bool "Enable bootm command"
+       bool "bootm"
        default y
        help
          Boot an application image from the memory.
 
-config CMD_CRC32
-       bool "Enable crc32 command"
+config CMD_GO
+       bool "go"
        default y
        help
-         Compute CRC32.
+         Start an application at a given address.
+
+config CMD_RUN
+       bool "run"
+       help
+         Run the command in the given environment variable.
+
+config CMD_IMI
+       bool "iminfo"
+       help
+         Print header information for application image.
+
+config CMD_IMLS
+       bool "imls"
+       help
+         List all images found in flash
+
+config CMD_XIMG
+       bool "imxtract"
+       help
+         Extract a part of a multi-image.
+
+endmenu
+
+menu "Environment commands"
 
 config CMD_EXPORTENV
-       bool "Enable env export command"
+       bool "env export"
        default y
        help
          Export environments.
 
 config CMD_IMPORTENV
-       bool "Enable env import command"
+       bool "env import"
        default y
        help
          Import environments.
 
-config CMD_GO
-       bool "Enable go command"
+config CMD_EDITENV
+       bool "editenv"
+       help
+         Edit environment variable.
+
+config CMD_SAVEENV
+       bool "saveenv"
+       help
+         Run the command in the given environment variable.
+
+endmenu
+
+menu "Memory commands"
+
+config CMD_MEMORY
+       bool "md, mm, nm, mw, cp, cmp, base, loop"
+       help
+         Memeory commands.
+           md - memory display
+           mm - memory modify (auto-incrementing address)
+           nm - memory modify (constant address)
+           mw - memory write (fill)
+           cp - memory copy
+           cmp - memory compare
+           base - print or set address offset
+           loop - initinite loop on address range
+
+config CMD_CRC32
+       bool "crc32"
        default y
        help
-         Start an application at a given address.
+         Compute CRC32.
+
+config LOOPW
+       bool "loopw"
+       help
+         Infinite write loop on address range
+
+config CMD_MEMTEST
+       bool "crc32"
+       help
+         Simple RAM read/write test.
+
+config CMD_MX_CYCLIC
+       bool "mdc, mwc"
+       help
+         mdc - memory display cyclic
+         mwc - memory write cyclic
+
+config CMD_MEMINFO
+       bool "meminfo"
+       help
+         Display memory information.
+
+endmenu
+
+menu "Device access commands"
+
+config CMD_LOADB
+       bool "loadb"
+       help
+         Load a binary file over serial line.
+
+config CMD_LOADS
+       bool "loads"
+       help
+         Load an S-Record file over serial line
+
+config CMD_FLASH
+       bool "flinfo, erase, protect"
+       help
+         NOR flash support.
+           flinfo - print FLASH memory information
+           erase - FLASH memory
+           protect - enable or disable FLASH write protection
+
+config CMD_NAND
+       bool "nand"
+       help
+         NAND support.
+
+config CMD_SPI
+       bool "sspi"
+       help
+         SPI utility command.
+
+config CMD_I2C
+       bool "i2c"
+       help
+         I2C support.
+
+config CMD_USB
+       bool "usb"
+       help
+         USB support.
+
+config CMD_FPGA
+       bool "fpga"
+       help
+         FPGA support.
+
+endmenu
+
+
+menu "Shell scripting commands"
+
+config CMD_ECHO
+       bool "echo"
+       help
+         Echo args to console
+
+config CMD_ITEST
+       bool "itest"
+       help
+         Return true/false on integer compare.
+
+config CMD_SOURCE
+       bool "source"
+       help
+         Run script from memory
+
+endmenu
+
+menu "Network commands"
+
+config CMD_NET
+       bool "bootp, tftpboot"
+       help
+         Network commands.
+         bootp - boot image via network using BOOTP/TFTP protocol
+         tftpboot - boot image via network using TFTP protocol
+
+config CMD_TFTPPUT
+       bool "tftp put"
+       help
+         TFTP put command, for uploading files to a server
+
+config CMD_TFTPSRV
+       bool "tftpsrv"
+       help
+         Act as a TFTP server and boot the first received file
+
+config CMD_RARP
+       bool "rarpboot"
+       help
+         Boot image via network using RARP/TFTP protocol
+
+config CMD_DHCP
+       bool "dhcp"
+       help
+         Boot image via network using DHCP/TFTP protocol
+
+config CMD_NFS
+       bool "nfs"
+       help
+         Boot image via network using NFS protocol.
+
+config CMD_PING
+       bool "ping"
+       help
+         Send ICMP ECHO_REQUEST to network host
+
+config CMD_CDP
+       bool "cdp"
+       help
+         Perform CDP network configuration
+
+config CMD_SNTP
+       bool "sntp"
+       help
+         Synchronize RTC via network
+
+config CMD_DNS
+       bool "dns"
+       help
+         Lookup the IP of a hostname
+
+config CMD_DNS
+       bool "dns"
+       help
+         Lookup the IP of a hostname
+
+config CMD_LINK_LOCAL
+       bool "linklocal"
+       help
+         Acquire a network IP address using the link-local protocol
+
+endmenu
+
+menu "Misc commands"
+
+config CMD_TIME
+       bool "time"
+       help
+         Run commands and summarize execution time.
+
+# TODO: rename to CMD_SLEEP
+config CMD_MISC
+       bool "sleep"
+       help
+         Delay execution for some time
+
+config CMD_TIMER
+       bool "timer"
+       help
+         Access the system timer.
+
+config CMD_SETGETDCR
+       bool "getdcr, setdcr, getidcr, setidcr"
+       depends on 4xx
+       help
+         getdcr - Get an AMCC PPC 4xx DCR's value
+         setdcr - Set an AMCC PPC 4xx DCR's value
+         getidcr - Get a register value via indirect DCR addressing
+         setidcr - Set a register value via indirect DCR addressing
+
+endmenu
 
 endmenu
index 6cc4de8a73f6ab24a20760ded2d64e395b65a94f..c668a2fd5bceda028b8fb29cf0b5035160b16fbe 100644 (file)
@@ -8,22 +8,12 @@
 # core
 ifndef CONFIG_SPL_BUILD
 obj-y += main.o
-obj-y += command.o
 obj-y += exports.o
 obj-y += hash.o
 ifdef CONFIG_SYS_HUSH_PARSER
 obj-y += cli_hush.o
 endif
 
-# We always have this since drivers/ddr/fs/interactive.c needs it
-obj-y += cli_simple.o
-
-obj-y += cli.o
-obj-y += cli_readline.o
-obj-y += s_record.o
-obj-y += xyzModem.o
-obj-y += cmd_disk.o
-
 # This option is not just y/n - it can have a numeric value
 ifdef CONFIG_BOOTDELAY
 obj-y += autoboot.o
@@ -188,6 +178,7 @@ obj-y += usb.o usb_hub.o
 obj-$(CONFIG_USB_STORAGE) += usb_storage.o
 endif
 obj-$(CONFIG_CMD_FASTBOOT) += cmd_fastboot.o
+obj-$(CONFIG_CMD_FS_UUID) += cmd_fs_uuid.o
 
 obj-$(CONFIG_CMD_USB_MASS_STORAGE) += cmd_usb_mass_storage.o
 obj-$(CONFIG_CMD_THOR_DOWNLOAD) += cmd_thordown.o
@@ -251,6 +242,9 @@ obj-$(CONFIG_BOUNCE_BUFFER) += bouncebuf.o
 obj-y += console.o
 obj-$(CONFIG_CROS_EC) += cros_ec.o
 obj-y += dlmalloc.o
+ifdef CONFIG_SYS_MALLOC_F_LEN
+obj-y += malloc_simple.o
+endif
 obj-y += image.o
 obj-$(CONFIG_ANDROID_BOOT_IMAGE) += image-android.o
 obj-$(CONFIG_OF_LIBFDT) += image-fdt.o
@@ -268,4 +262,14 @@ endif
 
 obj-$(CONFIG_CMD_BLOB) += cmd_blob.o
 
+# We always have this since drivers/ddr/fs/interactive.c needs it
+obj-y += cli_simple.o
+
+obj-y += cli.o
+obj-y += cli_readline.o
+obj-y += command.o
+obj-y += s_record.o
+obj-y += xyzModem.o
+obj-y += cmd_disk.o
+
 CFLAGS_env_embedded.o := -Wa,--no-warn -DENV_CRC=$(shell tools/envcrc 2>/dev/null)
index b5bebc9dc862727b7aa2386f64691ace23475cc0..3a4b32c29dc1dbccb6f181297ce0686b4dcf990b 100644 (file)
@@ -142,17 +142,19 @@ static int init_baud_rate(void)
 static int display_text_info(void)
 {
 #ifndef CONFIG_SANDBOX
-       ulong bss_start, bss_end;
+       ulong bss_start, bss_end, text_base;
 
        bss_start = (ulong)&__bss_start;
        bss_end = (ulong)&__bss_end;
 
-       debug("U-Boot code: %08X -> %08lX  BSS: -> %08lX\n",
 #ifdef CONFIG_SYS_TEXT_BASE
-             CONFIG_SYS_TEXT_BASE, bss_start, bss_end);
+       text_base = CONFIG_SYS_TEXT_BASE;
 #else
-             CONFIG_SYS_MONITOR_BASE, bss_start, bss_end);
+       text_base = CONFIG_SYS_MONITOR_BASE;
 #endif
+
+       debug("U-Boot code: %08lX -> %08lX  BSS: -> %08lX\n",
+               text_base, bss_start, bss_end);
 #endif
 
 #ifdef CONFIG_MODEM_SUPPORT
@@ -285,7 +287,7 @@ static int read_fdt_from_file(void)
        struct sandbox_state *state = state_get_current();
        const char *fname = state->fdt_fname;
        void *blob;
-       ssize_t size;
+       loff_t size;
        int err;
        int fd;
 
@@ -298,10 +300,10 @@ static int read_fdt_from_file(void)
                return -EINVAL;
        }
 
-       size = os_get_filesize(fname);
-       if (size < 0) {
+       err = os_get_filesize(fname, &size);
+       if (err < 0) {
                printf("Failed to file FDT file '%s'\n", fname);
-               return -ENOENT;
+               return err;
        }
        fd = os_open(fname, OS_O_RDONLY);
        if (fd < 0) {
@@ -811,23 +813,19 @@ static init_fnc_t init_sequence_f[] = {
 #endif
        setup_mon_len,
        setup_fdt,
+#ifdef CONFIG_TRACE
        trace_early_init,
+#endif
+       initf_malloc,
 #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
        /* TODO: can this go into arch_cpu_init()? */
        probecpu,
 #endif
        arch_cpu_init,          /* basic arch cpu dependent setup */
-#ifdef CONFIG_X86
-       cpu_init_f,             /* TODO(sjg@chromium.org): remove */
-# ifdef CONFIG_OF_CONTROL
-       find_fdt,               /* TODO(sjg@chromium.org): remove */
-# endif
-#endif
        mark_bootstage,
 #ifdef CONFIG_OF_CONTROL
        fdtdec_check_fdt,
 #endif
-       initf_malloc,
        initf_dm,
 #if defined(CONFIG_BOARD_EARLY_INIT_F)
        board_early_init_f,
@@ -902,14 +900,10 @@ static init_fnc_t init_sequence_f[] = {
 #endif
 #if defined(CONFIG_HARD_SPI)
        init_func_spi,
-#endif
-#ifdef CONFIG_X86
-       dram_init_f,            /* configure available RAM banks */
-       calculate_relocation_address,
 #endif
        announce_dram_init,
        /* TODO: unify all these dram functions? */
-#ifdef CONFIG_ARM
+#if defined(CONFIG_ARM) || defined(CONFIG_X86)
        dram_init,              /* configure available RAM banks */
 #endif
 #if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
@@ -991,6 +985,11 @@ static init_fnc_t init_sequence_f[] = {
        INIT_FUNC_WATCHDOG_RESET
        reloc_fdt,
        setup_reloc,
+#ifdef CONFIG_X86
+       copy_uboot_to_ram,
+       clear_bss,
+       do_elf_reloc_fixups,
+#endif
 #if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
        jump_to_copy,
 #endif
@@ -1050,9 +1049,6 @@ void board_init_f(ulong boot_flags)
  */
 static init_fnc_t init_sequence_f_r[] = {
        init_cache_f_r,
-       copy_uboot_to_ram,
-       clear_bss,
-       do_elf_reloc_fixups,
 
        NULL,
 };
index 7c339008ed2a46b91677d4c4c9e5e97fd58f4a1f..a301cc226f1e69fb4f6229382391c80218f12460 100644 (file)
@@ -99,7 +99,8 @@ static int initr_trace(void)
 
 static int initr_reloc(void)
 {
-       gd->flags |= GD_FLG_RELOC;      /* tell others: relocation done */
+       /* tell others: relocation done */
+       gd->flags |= GD_FLG_RELOC | GD_FLG_FULL_MALLOC_INIT;
        bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
 
        return 0;
@@ -264,6 +265,14 @@ static int initr_malloc(void)
        return 0;
 }
 
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+static int initr_noncached(void)
+{
+       noncached_init();
+       return 0;
+}
+#endif
+
 #ifdef CONFIG_DM
 static int initr_dm(void)
 {
@@ -290,26 +299,14 @@ static int initr_flash(void)
 {
        ulong flash_size = 0;
        bd_t *bd = gd->bd;
-       int ok;
 
        puts("Flash: ");
 
-       if (board_flash_wp_on()) {
+       if (board_flash_wp_on())
                printf("Uninitialized - Write Protect On\n");
-               /* Since WP is on, we can't find real size.  Set to 0 */
-               ok = 1;
-       } else {
+       else
                flash_size = flash_init();
-               ok = flash_size > 0;
-       }
-       if (!ok) {
-               puts("*** failed ***\n");
-#ifdef CONFIG_PPC
-               /* Why does PPC do this? */
-               hang();
-#endif
-               return -1;
-       }
+
        print_size(flash_size, "");
 #ifdef CONFIG_SYS_FLASH_CHECKSUM
        /*
@@ -453,24 +450,6 @@ static int initr_env(void)
        return 0;
 }
 
-#ifdef CONFIG_HERMES
-static int initr_hermes(void)
-{
-       if ((gd->board_type >> 16) == 2)
-               gd->bd->bi_ethspeed = gd->board_type & 0xFFFF;
-       else
-               gd->bd->bi_ethspeed = 0xFFFF;
-       return 0;
-}
-
-static int initr_hermes_start(void)
-{
-       if (gd->bd->bi_ethspeed != 0xFFFF)
-               hermes_start_lxt980((int) gd->bd->bi_ethspeed);
-       return 0;
-}
-#endif
-
 #ifdef CONFIG_SC3
 /* TODO: with new initcalls, move this into the driver */
 extern void sc3_read_eeprom(void);
@@ -716,6 +695,9 @@ init_fnc_t init_sequence_r[] = {
 #endif
        initr_barrier,
        initr_malloc,
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+       initr_noncached,
+#endif
        bootstage_relocate,
 #ifdef CONFIG_DM
        initr_dm,
@@ -774,7 +756,7 @@ init_fnc_t init_sequence_r[] = {
        initr_flash,
 #endif
        INIT_FUNC_WATCHDOG_RESET
-#if defined(CONFIG_PPC) || defined(CONFIG_X86)
+#if defined(CONFIG_PPC)
        /* initialize higher level parts of CPU like time base and timers */
        cpu_init_r,
 #endif
@@ -802,9 +784,6 @@ init_fnc_t init_sequence_r[] = {
 #ifdef CONFIG_SC3
        initr_sc3_read_eeprom,
 #endif
-#ifdef CONFIG_HERMES
-       initr_hermes,
-#endif
 #if defined(CONFIG_ID_EEPROM) || defined(CONFIG_SYS_I2C_MAC_OFFSET)
        mac_read_from_eeprom,
 #endif
@@ -829,19 +808,13 @@ init_fnc_t init_sequence_r[] = {
 #endif
 #ifdef CONFIG_MISC_INIT_R
        misc_init_r,            /* miscellaneous platform-dependent init */
-#endif
-#ifdef CONFIG_HERMES
-       initr_hermes_start,
 #endif
        INIT_FUNC_WATCHDOG_RESET
 #ifdef CONFIG_CMD_KGDB
        initr_kgdb,
-#endif
-#ifdef CONFIG_X86
-       board_early_init_r,
 #endif
        interrupt_init,
-#if defined(CONFIG_ARM) || defined(CONFIG_x86)
+#if defined(CONFIG_ARM)
        initr_enable_interrupts,
 #endif
 #ifdef CONFIG_X86
index 81e32617c30c4f0a329e9f85dfaf85d142c334f8..6b3ea8c61b69c180e146cf5607a7780e2726f996 100644 (file)
@@ -167,7 +167,8 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
        }
 
        /* If we have a valid setup.bin, we will use that for entry (x86) */
-       if (images.os.arch == IH_ARCH_I386) {
+       if (images.os.arch == IH_ARCH_I386 ||
+           images.os.arch == IH_ARCH_X86_64) {
                ulong len;
 
                ret = boot_get_setup(&images, IH_ARCH_I386, &images.ep, &len);
index 2b654b754f5d5423f639014cc8f260fef1ee1871..296542f4c2d62b7094694a40c79c7d2fe9fdf545 100644 (file)
@@ -3162,7 +3162,7 @@ static int parse_stream_outer(struct in_str *inp, int flag)
        o_string temp=NULL_O_STRING;
        int rcode;
 #ifdef __U_BOOT__
-       int code = 0;
+       int code = 1;
 #endif
        do {
                ctx.type = flag;
@@ -3236,8 +3236,10 @@ int parse_string_outer(const char *s, int flag)
 #ifdef __U_BOOT__
        char *p = NULL;
        int rcode;
-       if ( !s || !*s)
+       if (!s)
                return 1;
+       if (!*s)
+               return 0;
        if (!(p = strchr(s, '\n')) || *++p) {
                p = xmalloc(strlen(s) + 2);
                strcpy(p, s);
index 3d37a86a7d550fcb153947cb615588ba5113ac5f..e6d8a7ae2c50715daa03af64934f21d23d4635a7 100644 (file)
@@ -144,9 +144,6 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        print_eth(5);
 #endif
 
-#ifdef CONFIG_HERMES
-       print_mhz("ethspeed",           bd->bi_ethspeed);
-#endif
        printf("IP addr     = %s\n", getenv("ipaddr"));
        printf("baudrate    = %6u bps\n", gd->baudrate);
        print_num("relocaddr", gd->relocaddr);
@@ -518,7 +515,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        return 0;
 }
 
-#elif defined(CONFIG_ARC700)
+#elif defined(CONFIG_ARC)
 
 int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
index 9e020b40be8a853e5e9bfd6a1dfbcd36100ae5b0..e975abebc9a5fbd832a38980999e3d21d3bf44f5 100644 (file)
@@ -38,10 +38,10 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        int controller_index = simple_strtoul(usb_controller, NULL, 0);
        board_usb_init(controller_index, USB_INIT_DEVICE);
-       dfu_clear_detach();
+       g_dnl_clear_detach();
        g_dnl_register("usb_dnl_dfu");
        while (1) {
-               if (dfu_detach()) {
+               if (g_dnl_detach()) {
                        /*
                         * Check if USB bus reset is performed after detach,
                         * which indicates that -R switch has been passed to
@@ -74,7 +74,7 @@ done:
        if (dfu_reset)
                run_command("reset", 0);
 
-       dfu_clear_detach();
+       g_dnl_clear_detach();
 
        return ret;
 }
index 42a52965c2722282c36e6ebeaa0049c8c21b4c9f..58b61c26403b9fe79fe041c7c6cf2b6123309759 100644 (file)
@@ -210,9 +210,9 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
         */
        bootline = getenv("bootargs");
        if (bootline) {
-               memcpy((void *) bootaddr, bootline,
-                       max(strlen(bootline), 255));
-               flush_cache(bootaddr, max(strlen(bootline), 255));
+               memcpy((void *)bootaddr, bootline,
+                      max(strlen(bootline), (size_t)255));
+               flush_cache(bootaddr, max(strlen(bootline), (size_t)255));
        } else {
                sprintf(build_buf, CONFIG_SYS_VXWORKS_BOOT_DEVICE);
                tmp = getenv("bootfile");
@@ -240,9 +240,9 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                         CONFIG_SYS_VXWORKS_ADD_PARAMS);
 #endif
 
-               memcpy((void *) bootaddr, build_buf,
-                       max(strlen(build_buf), 255));
-               flush_cache(bootaddr, max(strlen(build_buf), 255));
+               memcpy((void *)bootaddr, build_buf,
+                      max(strlen(build_buf), (size_t)255));
+               flush_cache(bootaddr, max(strlen(build_buf), (size_t)255));
        }
 
        /*
index ecfc6d3c9bb077fa523ba6c476be388906862fbc..19423d1c81b83aec61545e1c9fb37d006e94806e 100644 (file)
@@ -61,61 +61,16 @@ int do_ext4_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 
 #if defined(CONFIG_CMD_EXT4_WRITE)
 int do_ext4_write(cmd_tbl_t *cmdtp, int flag, int argc,
-                               char *const argv[])
+                 char *const argv[])
 {
-       const char *filename = "/";
-       int dev, part;
-       unsigned long ram_address;
-       unsigned long file_size;
-       disk_partition_t info;
-       block_dev_desc_t *dev_desc;
-
-       if (argc < 6)
-               return cmd_usage(cmdtp);
-
-       part = get_device_and_partition(argv[1], argv[2], &dev_desc, &info, 1);
-       if (part < 0)
-               return 1;
-
-       dev = dev_desc->dev;
-
-       /* get the filename */
-       filename = argv[4];
-
-       /* get the address in hexadecimal format (string to int) */
-       ram_address = simple_strtoul(argv[3], NULL, 16);
-
-       /* get the filesize in hexadecimal format */
-       file_size = simple_strtoul(argv[5], NULL, 16);
-
-       /* set the device as block device */
-       ext4fs_set_blk_dev(dev_desc, &info);
-
-       /* mount the filesystem */
-       if (!ext4fs_mount(info.size)) {
-               printf("Bad ext4 partition %s %d:%d\n", argv[1], dev, part);
-               goto fail;
-       }
-
-       /* start write */
-       if (ext4fs_write(filename, (unsigned char *)ram_address, file_size)) {
-               printf("** Error ext4fs_write() **\n");
-               goto fail;
-       }
-       ext4fs_close();
-
-       return 0;
-
-fail:
-       ext4fs_close();
-
-       return 1;
+       return do_save(cmdtp, flag, argc, argv, FS_TYPE_EXT);
 }
 
-U_BOOT_CMD(ext4write, 6, 1, do_ext4_write,
-       "create a file in the root directory",
-       "<interface> <dev[:part]> <addr> <absolute filename path> [sizebytes]\n"
-       "    - create a file in / directory");
+U_BOOT_CMD(ext4write, 7, 1, do_ext4_write,
+          "create a file in the root directory",
+          "<interface> <dev[:part]> <addr> <absolute filename path>\n"
+          "    [sizebytes] [file offset]\n"
+          "    - create a file in / directory");
 
 #endif
 
@@ -132,7 +87,7 @@ U_BOOT_CMD(ext4ls, 4, 1, do_ext4_ls,
           "<interface> <dev[:part]> [directory]\n"
           "    - list files from 'dev' on 'interface' in a 'directory'");
 
-U_BOOT_CMD(ext4load, 6, 0, do_ext4_load,
+U_BOOT_CMD(ext4load, 7, 0, do_ext4_load,
           "load binary file from a Ext4 filesystem",
           "<interface> [<dev[:part]> [addr [filename [bytes [pos]]]]]\n"
           "    - load binary file 'filename' from 'dev' on 'interface'\n"
index 909616dcb7f3744f6fb5106f519b39b9564bfb04..b72f4f310d83debe00e201c824a71e5018afcd90 100644 (file)
@@ -15,17 +15,21 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 {
        int ret;
 
+       g_dnl_clear_detach();
        ret = g_dnl_register("usb_dnl_fastboot");
        if (ret)
                return ret;
 
        while (1) {
+               if (g_dnl_detach())
+                       break;
                if (ctrlc())
                        break;
                usb_gadget_handle_interrupts();
        }
 
        g_dnl_unregister();
+       g_dnl_clear_detach();
        return CMD_RET_SUCCESS;
 }
 
index 633fbf1d311391bb9aa69fd9ce905013b12e9805..c00fb28b620b6d7108fda494f4e032724e829fe3 100644 (file)
@@ -100,7 +100,8 @@ U_BOOT_CMD(
 static int do_fat_fswrite(cmd_tbl_t *cmdtp, int flag,
                int argc, char * const argv[])
 {
-       long size;
+       loff_t size;
+       int ret;
        unsigned long addr;
        unsigned long count;
        block_dev_desc_t *dev_desc = NULL;
@@ -127,15 +128,15 @@ static int do_fat_fswrite(cmd_tbl_t *cmdtp, int flag,
        count = simple_strtoul(argv[5], NULL, 16);
 
        buf = map_sysmem(addr, count);
-       size = file_fat_write(argv[4], buf, count);
+       ret = file_fat_write(argv[4], buf, 0, count, &size);
        unmap_sysmem(buf);
-       if (size == -1) {
+       if (ret < 0) {
                printf("\n** Unable to write \"%s\" from %s %d:%d **\n",
                        argv[4], argv[1], dev, part);
                return 1;
        }
 
-       printf("%ld bytes written\n", size);
+       printf("%llu bytes written\n", size);
 
        return 0;
 }
index 5640ded296895d8bf2dbd6b1e99ba565d52e1377..dc59fab8280dc57f0ae546ad552215dea0d99774 100644 (file)
@@ -123,7 +123,7 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                if (control)
                        gd->fdt_blob = blob;
                else
-                       set_working_fdt_addr(blob);
+                       set_working_fdt_addr((void *)blob);
 
                if (argc >= 2) {
                        int  len;
@@ -566,8 +566,27 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        }
 #ifdef CONFIG_OF_BOARD_SETUP
        /* Call the board-specific fixup routine */
-       else if (strncmp(argv[1], "boa", 3) == 0)
-               ft_board_setup(working_fdt, gd->bd);
+       else if (strncmp(argv[1], "boa", 3) == 0) {
+               int err = ft_board_setup(working_fdt, gd->bd);
+
+               if (err) {
+                       printf("Failed to update board information in FDT: %s\n",
+                              fdt_strerror(err));
+                       return CMD_RET_FAILURE;
+               }
+       }
+#endif
+#ifdef CONFIG_OF_SYSTEM_SETUP
+       /* Call the board-specific fixup routine */
+       else if (strncmp(argv[1], "sys", 3) == 0) {
+               int err = ft_system_setup(working_fdt, gd->bd);
+
+               if (err) {
+                       printf("Failed to add system information to FDT: %s\n",
+                              fdt_strerror(err));
+                       return CMD_RET_FAILURE;
+               }
+       }
 #endif
        /* Create a chosen node */
        else if (strncmp(argv[1], "cho", 3) == 0) {
@@ -1007,6 +1026,9 @@ static char fdt_help_text[] =
        "addr [-c]  <addr> [<length>]   - Set the [control] fdt location to <addr>\n"
 #ifdef CONFIG_OF_BOARD_SETUP
        "fdt boardsetup                      - Do board-specific set up\n"
+#endif
+#ifdef CONFIG_OF_SYSTEM_SETUP
+       "fdt systemsetup                     - Do system-specific set up\n"
 #endif
        "fdt move   <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active\n"
        "fdt resize                          - Resize fdt to size + padding to 4k addr\n"
index e811473b47e9ca19bf65a37bea2bd99fa88a421f..b0459744d98d075f8257e01bc6683edbc5a5988d 100644 (file)
@@ -1,12 +1,8 @@
-de <net.h>
-
-#if !defined(CONFIG_UPDATE_TFTP)
-#error "CONFIG_UPDATE_TFTP required"
-#endif
-
-static int do_fitupd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong addr = 0Un the root directory of the source tree for details.
+/*
+ * (C) Copyright 2011
+ * Andreas Pretzsch, carpe noctem engineering, apr@cn-eng.de
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
index 1b25ed87475dd9aa7b0023ca0ff1822f2ffa1742..1f1d00f28ac92c352fe345256f29174ead675309 100644 (file)
@@ -31,7 +31,8 @@ int do_fpga_md(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        unsigned int fpga;
        ulong   addr, length;
        int rc = 0;
-       u16     linebuf[DISP_LINE_LEN/sizeof(u16)];
+       u16 linebuf[DISP_LINE_LEN/sizeof(u16)];
+       ulong nbytes;
 
        /*
         * We use the last specified parameters, unless new ones are
@@ -63,13 +64,28 @@ int do_fpga_md(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        length = simple_strtoul(argv[3], NULL, 16);
        }
 
-       /* Print the lines. */
-       for (k = 0; k < DISP_LINE_LEN / sizeof(u16); ++k)
-               fpga_get_reg(fpga, (u16 *)fpga_ptr[fpga] + k, k * sizeof(u16),
-                            &linebuf[k]);
-       print_buffer(addr, (void *)linebuf, sizeof(u16),
-                    length, DISP_LINE_LEN / sizeof(u16));
-       addr += sizeof(u16)*length;
+       nbytes = length * sizeof(u16);
+       do {
+               ulong linebytes = (nbytes > DISP_LINE_LEN) ?
+                                 DISP_LINE_LEN : nbytes;
+
+               for (k = 0; k < linebytes / sizeof(u16); ++k)
+                       fpga_get_reg(fpga,
+                                    (u16 *)fpga_ptr[fpga] + addr
+                                    / sizeof(u16) + k,
+                                    addr + k * sizeof(u16),
+                                    &linebuf[k]);
+               print_buffer(addr, (void *)linebuf, sizeof(u16),
+                            linebytes / sizeof(u16),
+                            DISP_LINE_LEN / sizeof(u16));
+
+               nbytes -= linebytes;
+               addr += linebytes;
+               if (ctrlc()) {
+                       rc = 1;
+                       break;
+               }
+       } while (nbytes > 0);
 
        dp_last_fpga = fpga;
        dp_last_addr = addr;
index 675434078633400ff85866e4c7554458412b7dc1..0d9da113bf0c1305bc64e7e67368d6eba800b5e0 100644 (file)
@@ -51,6 +51,23 @@ U_BOOT_CMD(
        "      If 'pos' is 0 or omitted, the file is read from the start."
 )
 
+static int do_save_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,
+                               char * const argv[])
+{
+       return do_save(cmdtp, flag, argc, argv, FS_TYPE_ANY);
+}
+
+U_BOOT_CMD(
+       save,   7,      0,      do_save_wrapper,
+       "save file to a filesystem",
+       "<interface> <dev[:part]> <addr> <filename> bytes [pos]\n"
+       "    - Save binary file 'filename' to partition 'part' on device\n"
+       "      type 'interface' instance 'dev' from addr 'addr' in memory.\n"
+       "      'bytes' gives the size to save in bytes and is mandatory.\n"
+       "      'pos' gives the file byte position to start writing to.\n"
+       "      If 'pos' is 0 or omitted, the file is written from the start."
+)
+
 static int do_ls_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,
                                char * const argv[])
 {
diff --git a/common/cmd_fs_uuid.c b/common/cmd_fs_uuid.c
new file mode 100644 (file)
index 0000000..613f3a4
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * cmd_fs_uuid.c -- fsuuid command
+ *
+ * Copyright (C) 2014, Bachmann electronic GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <fs.h>
+
+static int do_fs_uuid_wrapper(cmd_tbl_t *cmdtp, int flag,
+       int argc, char * const argv[])
+{
+       return do_fs_uuid(cmdtp, flag, argc, argv, FS_TYPE_ANY);
+}
+
+U_BOOT_CMD(
+       fsuuid, 4, 1, do_fs_uuid_wrapper,
+       "Look up a filesystem UUID",
+       "<interface> <dev>:<part>\n"
+       "    - print filesystem UUID\n"
+       "fsuuid <interface> <dev>:<part> <varname>\n"
+       "    - set environment variable to filesystem UUID\n"
+);
index abab9789b0df4f80c9b723ef0ad03ad04c132732..d4bc0f6c94a17a5e0084dc9ddd7fd5218a7badfc 100644 (file)
@@ -128,7 +128,7 @@ static int do_fuse(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 
 err:
        puts("ERROR\n");
-       return ret;
+       return CMD_RET_FAILURE;
 }
 
 U_BOOT_CMD(
index 90facbbe1ac9d5c5113e92f3c34a8972fe6d1481..704d21ec6d0d8fbf5c2f29f350679697b47cace2 100644 (file)
@@ -18,9 +18,9 @@
 static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        char *s;
-#ifdef CONFIG_HASH_VERIFY
        int flags = HASH_FLAG_ENV;
 
+#ifdef CONFIG_HASH_VERIFY
        if (argc < 4)
                return CMD_RET_USAGE;
        if (!strcmp(argv[1], "-v")) {
@@ -28,8 +28,6 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                argc--;
                argv++;
        }
-#else
-       const int flags = HASH_FLAG_ENV;
 #endif
        /* Move forward to 'algorithm' parameter */
        argc--;
@@ -40,19 +38,19 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 }
 
 #ifdef CONFIG_HASH_VERIFY
-U_BOOT_CMD(
-       hash,   6,      1,      do_hash,
-       "compute hash message digest",
-       "algorithm address count [[*]sum_dest]\n"
-               "    - compute message digest [save to env var / *address]\n"
-       "hash -v algorithm address count [*]sum\n"
-               "    - verify hash of memory area with env var / *address"
-);
+#define HARGS 6
 #else
+#define HARGS 5
+#endif
+
 U_BOOT_CMD(
-       hash,   5,      1,      do_hash,
-       "compute message digest",
-       "algorithm address count [[*]sum_dest]\n"
+       hash,   HARGS,  1,      do_hash,
+       "compute hash message digest",
+       "algorithm address count [[*]hash_dest]\n"
                "    - compute message digest [save to env var / *address]"
-);
+#ifdef CONFIG_HASH_VERIFY
+       "\nhash -v algorithm address count [*]hash\n"
+               "    - verify message digest of memory area to immediate value, \n"
+               "      env var or *address"
 #endif
+);
index 3a75f94ea1ff50c14846998b38282b37c42da09a..22db1bb47c137fd4fe08fc20e3e2f75fba72f16f 100644 (file)
 #include <bootretry.h>
 #include <cli.h>
 #include <command.h>
+#include <dm.h>
 #include <edid.h>
 #include <environment.h>
+#include <errno.h>
 #include <i2c.h>
 #include <malloc.h>
 #include <asm/byteorder.h>
@@ -117,6 +119,60 @@ static uchar i2c_no_probes[] = CONFIG_SYS_I2C_NOPROBES;
 
 #define DISP_LINE_LEN  16
 
+/*
+ * Default for driver model is to use the chip's existing address length.
+ * For legacy code, this is not stored, so we need to use a suitable
+ * default.
+ */
+#ifdef CONFIG_DM_I2C
+#define DEFAULT_ADDR_LEN       (-1)
+#else
+#define DEFAULT_ADDR_LEN       1
+#endif
+
+#ifdef CONFIG_DM_I2C
+static struct udevice *i2c_cur_bus;
+
+static int i2c_set_bus_num(unsigned int busnum)
+{
+       struct udevice *bus;
+       int ret;
+
+       ret = uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus);
+       if (ret) {
+               debug("%s: No bus %d\n", __func__, busnum);
+               return ret;
+       }
+       i2c_cur_bus = bus;
+
+       return 0;
+}
+
+static int i2c_get_cur_bus(struct udevice **busp)
+{
+       if (!i2c_cur_bus) {
+               puts("No I2C bus selected\n");
+               return -ENODEV;
+       }
+       *busp = i2c_cur_bus;
+
+       return 0;
+}
+
+static int i2c_get_cur_bus_chip(uint chip_addr, struct udevice **devp)
+{
+       struct udevice *bus;
+       int ret;
+
+       ret = i2c_get_cur_bus(&bus);
+       if (ret)
+               return ret;
+
+       return i2c_get_chip(bus, chip_addr, devp);
+}
+
+#endif
+
 /**
  * i2c_init_board() - Board-specific I2C bus init
  *
@@ -143,7 +199,7 @@ void i2c_init_board(void)
  *
  * Returns I2C bus speed in Hz.
  */
-#if !defined(CONFIG_SYS_I2C)
+#if !defined(CONFIG_SYS_I2C) && !defined(CONFIG_DM_I2C)
 /*
  * TODO: Implement architecture-specific get/set functions
  * Should go away, if we switched completely to new multibus support
@@ -182,12 +238,12 @@ int i2c_set_bus_speed(unsigned int speed)
  *
  * Returns the address length.
  */
-static uint get_alen(char *arg)
+static uint get_alen(char *arg, int default_len)
 {
        int     j;
        int     alen;
 
-       alen = 1;
+       alen = default_len;
        for (j = 0; j < 8; j++) {
                if (arg[j] == '.') {
                        alen = arg[j+1] - '0';
@@ -198,6 +254,19 @@ static uint get_alen(char *arg)
        return alen;
 }
 
+enum i2c_err_op {
+       I2C_ERR_READ,
+       I2C_ERR_WRITE,
+};
+
+static int i2c_report_err(int ret, enum i2c_err_op op)
+{
+       printf("Error %s the chip: %d\n",
+              op == I2C_ERR_READ ? "reading" : "writing", ret);
+
+       return CMD_RET_FAILURE;
+}
+
 /**
  * do_i2c_read() - Handle the "i2c read" command-line command
  * @cmdtp:     Command data struct pointer
@@ -214,8 +283,13 @@ static uint get_alen(char *arg)
 static int do_i2c_read ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        u_char  chip;
-       uint    devaddr, alen, length;
+       uint    devaddr, length;
+       int alen;
        u_char  *memaddr;
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        if (argc != 5)
                return CMD_RET_USAGE;
@@ -230,7 +304,7 @@ static int do_i2c_read ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
         * 2 bytes long.  Some day it might be 3 bytes long :-).
         */
        devaddr = simple_strtoul(argv[2], NULL, 16);
-       alen = get_alen(argv[2]);
+       alen = get_alen(argv[2], DEFAULT_ADDR_LEN);
        if (alen > 3)
                return CMD_RET_USAGE;
 
@@ -244,18 +318,31 @@ static int do_i2c_read ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
         */
        memaddr = (u_char *)simple_strtoul(argv[4], NULL, 16);
 
-       if (i2c_read(chip, devaddr, alen, memaddr, length) != 0) {
-               puts ("Error reading the chip.\n");
-               return 1;
-       }
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret && alen != -1)
+               ret = i2c_set_chip_offset_len(dev, alen);
+       if (!ret)
+               ret = i2c_read(dev, devaddr, memaddr, length);
+#else
+       ret = i2c_read(chip, devaddr, alen, memaddr, length);
+#endif
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
+
        return 0;
 }
 
 static int do_i2c_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        u_char  chip;
-       uint    devaddr, alen, length;
+       uint    devaddr, length;
+       int alen;
        u_char  *memaddr;
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        if (argc != 5)
                return cmd_usage(cmdtp);
@@ -275,7 +362,7 @@ static int do_i2c_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
         * 2 bytes long.  Some day it might be 3 bytes long :-).
         */
        devaddr = simple_strtoul(argv[3], NULL, 16);
-       alen = get_alen(argv[3]);
+       alen = get_alen(argv[3], DEFAULT_ADDR_LEN);
        if (alen > 3)
                return cmd_usage(cmdtp);
 
@@ -284,11 +371,22 @@ static int do_i2c_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
         */
        length = simple_strtoul(argv[4], NULL, 16);
 
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret && alen != -1)
+               ret = i2c_set_chip_offset_len(dev, alen);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_WRITE);
+#endif
+
        while (length-- > 0) {
-               if (i2c_write(chip, devaddr++, alen, memaddr++, 1) != 0) {
-                       puts("Error writing to the chip.\n");
-                       return 1;
-               }
+#ifdef CONFIG_DM_I2C
+               ret = i2c_write(dev, devaddr++, memaddr++, 1);
+#else
+               ret = i2c_write(chip, devaddr++, alen, memaddr++, 1);
+#endif
+               if (ret)
+                       return i2c_report_err(ret, I2C_ERR_WRITE);
 /*
  * No write delay with FRAM devices.
  */
@@ -299,6 +397,38 @@ static int do_i2c_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
        return 0;
 }
 
+#ifdef CONFIG_DM_I2C
+static int do_i2c_flags(cmd_tbl_t *cmdtp, int flag, int argc,
+                       char *const argv[])
+{
+       struct udevice *dev;
+       uint flags;
+       int chip;
+       int ret;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+
+       chip = simple_strtoul(argv[1], NULL, 16);
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
+
+       if (argc > 2) {
+               flags = simple_strtoul(argv[2], NULL, 16);
+               ret = i2c_set_chip_flags(dev, flags);
+       } else  {
+               ret = i2c_get_chip_flags(dev, &flags);
+               if (!ret)
+                       printf("%x\n", flags);
+       }
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
+
+       return 0;
+}
+#endif
+
 /**
  * do_i2c_md() - Handle the "i2c md" command-line command
  * @cmdtp:     Command data struct pointer
@@ -315,8 +445,13 @@ static int do_i2c_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
 static int do_i2c_md ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        u_char  chip;
-       uint    addr, alen, length;
+       uint    addr, length;
+       int alen;
        int     j, nbytes, linebytes;
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        /* We use the last specified parameters, unless new ones are
         * entered.
@@ -344,7 +479,7 @@ static int do_i2c_md ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
                 * 2 bytes long.  Some day it might be 3 bytes long :-).
                 */
                addr = simple_strtoul(argv[2], NULL, 16);
-               alen = get_alen(argv[2]);
+               alen = get_alen(argv[2], DEFAULT_ADDR_LEN);
                if (alen > 3)
                        return CMD_RET_USAGE;
 
@@ -356,6 +491,14 @@ static int do_i2c_md ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
                        length = simple_strtoul(argv[3], NULL, 16);
        }
 
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret && alen != -1)
+               ret = i2c_set_chip_offset_len(dev, alen);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
+#endif
+
        /*
         * Print the lines.
         *
@@ -369,8 +512,13 @@ static int do_i2c_md ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
 
                linebytes = (nbytes > DISP_LINE_LEN) ? DISP_LINE_LEN : nbytes;
 
-               if (i2c_read(chip, addr, alen, linebuf, linebytes) != 0)
-                       puts ("Error reading the chip.\n");
+#ifdef CONFIG_DM_I2C
+               ret = i2c_read(dev, addr, linebuf, linebytes);
+#else
+               ret = i2c_read(chip, addr, alen, linebuf, linebytes);
+#endif
+               if (ret)
+                       i2c_report_err(ret, I2C_ERR_READ);
                else {
                        printf("%04x:", addr);
                        cp = linebuf;
@@ -417,9 +565,13 @@ static int do_i2c_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
 {
        uchar   chip;
        ulong   addr;
-       uint    alen;
+       int     alen;
        uchar   byte;
        int     count;
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        if ((argc < 4) || (argc > 5))
                return CMD_RET_USAGE;
@@ -433,10 +585,17 @@ static int do_i2c_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
         * Address is always specified.
         */
        addr = simple_strtoul(argv[2], NULL, 16);
-       alen = get_alen(argv[2]);
+       alen = get_alen(argv[2], DEFAULT_ADDR_LEN);
        if (alen > 3)
                return CMD_RET_USAGE;
 
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret && alen != -1)
+               ret = i2c_set_chip_offset_len(dev, alen);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_WRITE);
+#endif
        /*
         * Value to write is always specified.
         */
@@ -451,8 +610,13 @@ static int do_i2c_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
                count = 1;
 
        while (count-- > 0) {
-               if (i2c_write(chip, addr++, alen, &byte, 1) != 0)
-                       puts ("Error writing the chip.\n");
+#ifdef CONFIG_DM_I2C
+               ret = i2c_write(dev, addr++, &byte, 1);
+#else
+               ret = i2c_write(chip, addr++, alen, &byte, 1);
+#endif
+               if (ret)
+                       i2c_report_err(ret, I2C_ERR_WRITE);
                /*
                 * Wait for the write to complete.  The write can take
                 * up to 10mSec (we allow a little more time).
@@ -487,11 +651,15 @@ static int do_i2c_crc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
 {
        uchar   chip;
        ulong   addr;
-       uint    alen;
+       int     alen;
        int     count;
        uchar   byte;
        ulong   crc;
        ulong   err;
+       int ret = 0;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        if (argc < 4)
                return CMD_RET_USAGE;
@@ -505,10 +673,17 @@ static int do_i2c_crc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
         * Address is always specified.
         */
        addr = simple_strtoul(argv[2], NULL, 16);
-       alen = get_alen(argv[2]);
+       alen = get_alen(argv[2], DEFAULT_ADDR_LEN);
        if (alen > 3)
                return CMD_RET_USAGE;
 
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret && alen != -1)
+               ret = i2c_set_chip_offset_len(dev, alen);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
+#endif
        /*
         * Count is always specified
         */
@@ -522,13 +697,18 @@ static int do_i2c_crc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
        crc = 0;
        err = 0;
        while (count-- > 0) {
-               if (i2c_read(chip, addr, alen, &byte, 1) != 0)
+#ifdef CONFIG_DM_I2C
+               ret = i2c_read(dev, addr, &byte, 1);
+#else
+               ret = i2c_read(chip, addr, alen, &byte, 1);
+#endif
+               if (ret)
                        err++;
                crc = crc32 (crc, &byte, 1);
                addr++;
        }
        if (err > 0)
-               puts ("Error reading the chip,\n");
+               i2c_report_err(ret, I2C_ERR_READ);
        else
                printf ("%08lx\n", crc);
 
@@ -556,10 +736,14 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const arg
 {
        uchar   chip;
        ulong   addr;
-       uint    alen;
+       int     alen;
        ulong   data;
        int     size = 1;
        int     nbytes;
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        if (argc != 3)
                return CMD_RET_USAGE;
@@ -589,19 +773,32 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const arg
                 * Address is always specified.
                 */
                addr = simple_strtoul(argv[2], NULL, 16);
-               alen = get_alen(argv[2]);
+               alen = get_alen(argv[2], DEFAULT_ADDR_LEN);
                if (alen > 3)
                        return CMD_RET_USAGE;
        }
 
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret && alen != -1)
+               ret = i2c_set_chip_offset_len(dev, alen);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_WRITE);
+#endif
+
        /*
         * Print the address, followed by value.  Then accept input for
         * the next value.  A non-converted value exits.
         */
        do {
                printf("%08lx:", addr);
-               if (i2c_read(chip, addr, alen, (uchar *)&data, size) != 0)
-                       puts ("\nError reading the chip,\n");
+#ifdef CONFIG_DM_I2C
+               ret = i2c_read(dev, addr, (uchar *)&data, size);
+#else
+               ret = i2c_read(chip, addr, alen, (uchar *)&data, size);
+#endif
+               if (ret)
+                       i2c_report_err(ret, I2C_ERR_READ);
                else {
                        data = cpu_to_be32(data);
                        if (size == 1)
@@ -643,8 +840,15 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const arg
                                 * good enough to not time out
                                 */
                                bootretry_reset_cmd_timeout();
-                               if (i2c_write(chip, addr, alen, (uchar *)&data, size) != 0)
-                                       puts ("Error writing the chip.\n");
+#ifdef CONFIG_DM_I2C
+                               ret = i2c_write(dev, addr, (uchar *)&data,
+                                               size);
+#else
+                               ret = i2c_write(chip, addr, alen,
+                                               (uchar *)&data, size);
+#endif
+                               if (ret)
+                                       i2c_report_err(ret, I2C_ERR_WRITE);
 #ifdef CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS
                                udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
 #endif
@@ -685,6 +889,13 @@ static int do_i2c_probe (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
        int k, skip;
        unsigned int bus = GET_BUS_NUM;
 #endif /* NOPROBES */
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *bus, *dev;
+
+       if (i2c_get_cur_bus(&bus))
+               return CMD_RET_FAILURE;
+#endif
 
        if (argc == 2)
                addr = simple_strtol(argv[1], 0, 16);
@@ -705,7 +916,12 @@ static int do_i2c_probe (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
                if (skip)
                        continue;
 #endif
-               if (i2c_probe(j) == 0) {
+#ifdef CONFIG_DM_I2C
+               ret = i2c_probe(bus, j, 0, &dev);
+#else
+               ret = i2c_probe(j);
+#endif
+               if (ret == 0) {
                        printf(" %02X", j);
                        found++;
                }
@@ -742,11 +958,15 @@ static int do_i2c_probe (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
 static int do_i2c_loop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        u_char  chip;
-       ulong   alen;
+       int alen;
        uint    addr;
        uint    length;
        u_char  bytes[16];
        int     delay;
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        if (argc < 3)
                return CMD_RET_USAGE;
@@ -760,9 +980,16 @@ static int do_i2c_loop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
         * Address is always specified.
         */
        addr = simple_strtoul(argv[2], NULL, 16);
-       alen = get_alen(argv[2]);
+       alen = get_alen(argv[2], DEFAULT_ADDR_LEN);
        if (alen > 3)
                return CMD_RET_USAGE;
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret && alen != -1)
+               ret = i2c_set_chip_offset_len(dev, alen);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_WRITE);
+#endif
 
        /*
         * Length is the number of objects, not number of bytes.
@@ -782,8 +1009,13 @@ static int do_i2c_loop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
         * Run the loop...
         */
        while (1) {
-               if (i2c_read(chip, addr, alen, bytes, length) != 0)
-                       puts ("Error reading the chip.\n");
+#ifdef CONFIG_DM_I2C
+               ret = i2c_read(dev, addr, bytes, length);
+#else
+               ret = i2c_read(chip, addr, alen, bytes, length);
+#endif
+               if (ret)
+                       i2c_report_err(ret, I2C_ERR_READ);
                udelay(delay);
        }
 
@@ -1333,6 +1565,10 @@ int do_edid(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 {
        u_char chip;
        struct edid1_info edid;
+       int ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        if (argc < 2) {
                cmd_usage(cmdtp);
@@ -1340,10 +1576,15 @@ int do_edid(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
        }
 
        chip = simple_strtoul(argv[1], NULL, 16);
-       if (i2c_read(chip, 0, 1, (uchar *)&edid, sizeof(edid)) != 0) {
-               puts("Error reading EDID content.\n");
-               return 1;
-       }
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret)
+               ret = i2c_read(dev, 0, (uchar *)&edid, sizeof(edid));
+#else
+       ret = i2c_read(chip, 0, 1, (uchar *)&edid, sizeof(edid));
+#endif
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
 
        if (edid_check_info(&edid)) {
                puts("Content isn't valid EDID.\n");
@@ -1425,17 +1666,28 @@ static int do_i2c_show_bus(cmd_tbl_t *cmdtp, int flag, int argc,
  * Returns zero on success, CMD_RET_USAGE in case of misuse and negative
  * on error.
  */
-#if defined(CONFIG_SYS_I2C) || defined(CONFIG_I2C_MULTI_BUS)
+#if defined(CONFIG_SYS_I2C) || defined(CONFIG_I2C_MULTI_BUS) || \
+               defined(CONFIG_DM_I2C)
 static int do_i2c_bus_num(cmd_tbl_t *cmdtp, int flag, int argc,
                                char * const argv[])
 {
        int             ret = 0;
-       unsigned int    bus_no;
+       int     bus_no;
 
-       if (argc == 1)
+       if (argc == 1) {
                /* querying current setting */
-               printf("Current bus is %d\n", i2c_get_bus_num());
-       else {
+#ifdef CONFIG_DM_I2C
+               struct udevice *bus;
+
+               if (!i2c_get_cur_bus(&bus))
+                       bus_no = bus->seq;
+               else
+                       bus_no = -1;
+#else
+               bus_no = i2c_get_bus_num();
+#endif
+               printf("Current bus is %d\n", bus_no);
+       } else {
                bus_no = simple_strtoul(argv[1], NULL, 10);
 #if defined(CONFIG_SYS_I2C)
                if (bus_no >= CONFIG_SYS_NUM_I2C_BUSES) {
@@ -1466,13 +1718,28 @@ static int do_i2c_bus_speed(cmd_tbl_t * cmdtp, int flag, int argc, char * const
 {
        int speed, ret=0;
 
-       if (argc == 1)
+#ifdef CONFIG_DM_I2C
+       struct udevice *bus;
+
+       if (i2c_get_cur_bus(&bus))
+               return 1;
+#endif
+       if (argc == 1) {
+#ifdef CONFIG_DM_I2C
+               speed = i2c_get_bus_speed(bus);
+#else
+               speed = i2c_get_bus_speed();
+#endif
                /* querying current speed */
-               printf("Current bus speed=%d\n", i2c_get_bus_speed());
-       else {
+               printf("Current bus speed=%d\n", speed);
+       else {
                speed = simple_strtoul(argv[1], NULL, 10);
                printf("Setting bus speed to %d Hz\n", speed);
+#ifdef CONFIG_DM_I2C
+               ret = i2c_set_bus_speed(bus, speed);
+#else
                ret = i2c_set_bus_speed(speed);
+#endif
                if (ret)
                        printf("Failure changing bus speed (%d)\n", ret);
        }
@@ -1520,7 +1787,16 @@ static int do_i2c_nm(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
  */
 static int do_i2c_reset(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 {
-#if defined(CONFIG_SYS_I2C)
+#if defined(CONFIG_DM_I2C)
+       struct udevice *bus;
+
+       if (i2c_get_cur_bus(&bus))
+               return CMD_RET_FAILURE;
+       if (i2c_deblock(bus)) {
+               printf("Error: Not supported by the driver\n");
+               return CMD_RET_FAILURE;
+       }
+#elif defined(CONFIG_SYS_I2C)
        i2c_init(I2C_ADAP->speed, I2C_ADAP->slaveaddr);
 #else
        i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
@@ -1534,7 +1810,7 @@ static cmd_tbl_t cmd_i2c_sub[] = {
 #endif
        U_BOOT_CMD_MKENT(crc32, 3, 1, do_i2c_crc, "", ""),
 #if defined(CONFIG_SYS_I2C) || \
-       defined(CONFIG_I2C_MULTI_BUS)
+       defined(CONFIG_I2C_MULTI_BUS) || defined(CONFIG_DM_I2C)
        U_BOOT_CMD_MKENT(dev, 1, 1, do_i2c_bus_num, "", ""),
 #endif  /* CONFIG_I2C_MULTI_BUS */
 #if defined(CONFIG_I2C_EDID)
@@ -1548,6 +1824,9 @@ static cmd_tbl_t cmd_i2c_sub[] = {
        U_BOOT_CMD_MKENT(probe, 0, 1, do_i2c_probe, "", ""),
        U_BOOT_CMD_MKENT(read, 5, 1, do_i2c_read, "", ""),
        U_BOOT_CMD_MKENT(write, 5, 0, do_i2c_write, "", ""),
+#ifdef CONFIG_DM_I2C
+       U_BOOT_CMD_MKENT(flags, 2, 1, do_i2c_flags, "", ""),
+#endif
        U_BOOT_CMD_MKENT(reset, 0, 1, do_i2c_reset, "", ""),
 #if defined(CONFIG_CMD_SDRAM)
        U_BOOT_CMD_MKENT(sdram, 1, 1, do_sdram, "", ""),
@@ -1598,7 +1877,7 @@ static char i2c_help_text[] =
 #endif
        "crc32 chip address[.0, .1, .2] count - compute CRC32 checksum\n"
 #if defined(CONFIG_SYS_I2C) || \
-       defined(CONFIG_I2C_MULTI_BUS)
+       defined(CONFIG_I2C_MULTI_BUS) || defined(CONFIG_DM_I2C)
        "i2c dev [dev] - show or set current I2C bus\n"
 #endif  /* CONFIG_I2C_MULTI_BUS */
 #if defined(CONFIG_I2C_EDID)
@@ -1610,8 +1889,11 @@ static char i2c_help_text[] =
        "i2c mw chip address[.0, .1, .2] value [count] - write to I2C device (fill)\n"
        "i2c nm chip address[.0, .1, .2] - write to I2C device (constant address)\n"
        "i2c probe [address] - test for and show device(s) on the I2C bus\n"
-       "i2c read chip address[.0, .1, .2] length memaddress - read to memory \n"
+       "i2c read chip address[.0, .1, .2] length memaddress - read to memory\n"
        "i2c write memaddress chip address[.0, .1, .2] length - write memory to i2c\n"
+#ifdef CONFIG_DM_I2C
+       "i2c flags chip [flags] - set or get chip flags\n"
+#endif
        "i2c reset - re-init the I2C Controller\n"
 #if defined(CONFIG_CMD_SDRAM)
        "i2c sdram chip - print SDRAM configuration information\n"
index 3ac8cc41b1a450edc7f5e489b3a6e9e4c2d14a38..d22ace52206580052e47073eb47d6e59bb9d936c 100644 (file)
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <command.h>
 #include <u-boot/md5.h>
+#include <asm/io.h>
 
 /*
  * Store the resulting sum to an address or variable
@@ -79,6 +80,7 @@ int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        int verify = 0;
        int ac;
        char * const *av;
+       void *buf;
 
        if (argc < 3)
                return CMD_RET_USAGE;
@@ -96,7 +98,9 @@ int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        addr = simple_strtoul(*av++, NULL, 16);
        len = simple_strtoul(*av++, NULL, 16);
 
-       md5_wd((unsigned char *) addr, len, output, CHUNKSZ_MD5);
+       buf = map_sysmem(addr, len);
+       md5_wd(buf, len, output, CHUNKSZ_MD5);
+       unmap_sysmem(buf);
 
        if (!verify) {
                printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - 1);
@@ -135,6 +139,7 @@ static int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        unsigned long addr, len;
        unsigned int i;
        u8 output[16];
+       void *buf;
 
        if (argc < 3)
                return CMD_RET_USAGE;
@@ -142,7 +147,10 @@ static int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        addr = simple_strtoul(argv[1], NULL, 16);
        len = simple_strtoul(argv[2], NULL, 16);
 
-       md5_wd((unsigned char *) addr, len, output, CHUNKSZ_MD5);
+       buf = map_sysmem(addr, len);
+       md5_wd(buf, len, output, CHUNKSZ_MD5);
+       unmap_sysmem(buf);
+
        printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - 1);
        for (i = 0; i < 16; i++)
                printf("%02x", output[i]);
index 0d50dcfe9c1b8083a35f3cc6df5796a12a0149a2..bcb3ee325ac9ceaf217bbbe7f86118b55aa1b116 100644 (file)
@@ -19,6 +19,7 @@
 #include <dataflash.h>
 #endif
 #include <hash.h>
+#include <inttypes.h>
 #include <watchdog.h>
 #include <asm/io.h>
 #include <linux/compiler.h>
@@ -338,7 +339,8 @@ static int do_mem_cmp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                if (word1 != word2) {
                        ulong offset = buf1 - base;
 #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
-                       printf("%s at 0x%p (%#0*llx) != %s at 0x%p (%#0*llx)\n",
+                       printf("%s at 0x%p (%#0*"PRIx64") != %s at 0x%p (%#0*"
+                              PRIx64 ")\n",
                               type, (void *)(addr1 + offset), size, word1,
                               type, (void *)(addr2 + offset), size, word2);
 #else
@@ -1146,7 +1148,7 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[])
                        printf(" %08x", *((u32 *)ptr));
 #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
                else if (size == 8)
-                       printf(" %016llx", *((u64 *)ptr));
+                       printf(" %016" PRIx64, *((u64 *)ptr));
 #endif
                else if (size == 2)
                        printf(" %04x", *((u16 *)ptr));
index 4286e2696363cab44b44772251a4f52c488395a2..96478e45c14039cd88a1a59427d0ec7f1a44d07e 100644 (file)
@@ -90,7 +90,8 @@ static void print_mmcinfo(struct mmc *mmc)
        puts("Capacity: ");
        print_size(mmc->capacity, "\n");
 
-       printf("Bus Width: %d-bit\n", mmc->bus_width);
+       printf("Bus Width: %d-bit%s\n", mmc->bus_width,
+                       mmc->ddr_mode ? " DDR" : "");
 }
 static struct mmc *init_mmc_device(int dev, bool force_init)
 {
index a1ba42e2f3a2c3a4abc625af674a4599af451f38..e3a77e35820cbda7c663f2b737c187ed0f9e2227 100644 (file)
@@ -42,12 +42,16 @@ void pci_header_show_brief(pci_dev_t dev);
  */
 void pciinfo(int BusNum, int ShortPCIListing)
 {
+       struct pci_controller *hose = pci_bus_to_hose(BusNum);
        int Device;
        int Function;
        unsigned char HeaderType;
        unsigned short VendorID;
        pci_dev_t dev;
 
+       if (!hose)
+               return;
+
        printf("Scanning PCI devices on bus %d\n", BusNum);
 
        if (ShortPCIListing) {
@@ -67,6 +71,9 @@ void pciinfo(int BusNum, int ShortPCIListing)
 
                        dev = PCI_BDF(BusNum, Device, Function);
 
+                       if (pci_skip_dev(hose, dev))
+                               continue;
+
                        pci_read_config_word(dev, PCI_VENDOR_ID, &VendorID);
                        if ((VendorID == 0xFFFF) || (VendorID == 0x0000))
                                continue;
index ddc24be7d3d4012a9526a6963befd7a2dfc9b016..682d18f55ddabc8f070e8ba2df1f2ac17ba7ef7d 100644 (file)
@@ -331,11 +331,8 @@ int check_ide_device (int slot)
 
        ide_devices_found |= (1 << slot);
 
-#if CONFIG_CPC45
-#else
        /* set I/O area in config reg -> only valid for ARGOSY D5!!! */
        *((uchar *)(addr + config_base)) = 1;
-#endif
 #if 0
        printf("\n## Config_base = %04x ###\n", config_base);
        printf("Configuration Option Register: %02x @ %x\n", readb(addr + config_base), addr + config_base);
index fc921319667fcef566a84da876586811f79a39d3..51f67033ae32026d973e8944685839587c855e5e 100644 (file)
@@ -48,6 +48,20 @@ int __sata_initialize(void)
 }
 int sata_initialize(void) __attribute__((weak,alias("__sata_initialize")));
 
+__weak int __sata_stop(void)
+{
+       int i, err = 0;
+
+       for (i = 0; i < CONFIG_SYS_SATA_MAX_DEVICE; i++)
+               err |= reset_sata(i);
+
+       if (err)
+               printf("Could not reset some SATA devices\n");
+
+       return err;
+}
+int sata_stop(void) __attribute__((weak, alias("__sata_stop")));
+
 #ifdef CONFIG_PARTITIONS
 block_dev_desc_t *sata_get_dev(int dev)
 {
@@ -59,8 +73,15 @@ static int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        int rc = 0;
 
-       if (argc == 2 && strcmp(argv[1], "init") == 0)
+       if (argc == 2 && strcmp(argv[1], "stop") == 0)
+               return sata_stop();
+
+       if (argc == 2 && strcmp(argv[1], "init") == 0) {
+               if (sata_curr_device != -1)
+                       sata_stop();
+
                return sata_initialize();
+       }
 
        /* If the user has not yet run `sata init`, do it now */
        if (sata_curr_device == -1)
@@ -185,6 +206,7 @@ U_BOOT_CMD(
        sata, 5, 1, do_sata,
        "SATA sub system",
        "init - init SATA sub system\n"
+       "sata stop - disable SATA sub system\n"
        "sata info - show available SATA devices\n"
        "sata device [dev] - show or set current device\n"
        "sata part [dev] - print partition table\n"
index 95a6f89a845da57b5e5430b339dbda12f4d5d354..5c788e96bdb821de3b7cd6f4f6cb8a40a0238cc4 100644 (file)
@@ -18,7 +18,6 @@
 
 static struct spi_flash *flash;
 
-
 /*
  * This function computes the length argument for the erase command.
  * The length on which the command is to operate can be given in two forms:
@@ -71,9 +70,9 @@ static ulong bytes_per_second(unsigned int len, ulong start_ms)
 {
        /* less accurate but avoids overflow */
        if (len >= ((unsigned int) -1) / 1024)
-               return len / (max(get_timer(start_ms) / 1024, 1));
+               return len / (max(get_timer(start_ms) / 1024, 1UL));
        else
-               return 1024 * len / max(get_timer(start_ms), 1);
+               return 1024 * len / max(get_timer(start_ms), 1UL);
 }
 
 static int do_spi_flash_probe(int argc, char * const argv[])
@@ -223,7 +222,7 @@ static int spi_flash_update(struct spi_flash *flash, u32 offset,
                ulong last_update = get_timer(0);
 
                for (; buf < end && !err_oper; buf += todo, offset += todo) {
-                       todo = min(end - buf, flash->sector_size);
+                       todo = min_t(size_t, end - buf, flash->sector_size);
                        if (get_timer(last_update) > 100) {
                                printf("   \rUpdating, %zu%% %lu B/s",
                                       100 - (end - buf) / scale,
@@ -421,7 +420,8 @@ static int spi_flash_test(struct spi_flash *flash, uint8_t *buf, ulong len,
        for (i = 0; i < len; i++) {
                if (vbuf[i] != 0xff) {
                        printf("Check failed at %d\n", i);
-                       print_buffer(i, vbuf + i, 1, min(len - i, 0x40), 0);
+                       print_buffer(i, vbuf + i, 1,
+                                    min_t(uint, len - i, 0x40), 0);
                        return -1;
                }
        }
@@ -443,9 +443,11 @@ static int spi_flash_test(struct spi_flash *flash, uint8_t *buf, ulong len,
        for (i = 0; i < len; i++) {
                if (buf[i] != vbuf[i]) {
                        printf("Verify failed at %d, good data:\n", i);
-                       print_buffer(i, buf + i, 1, min(len - i, 0x40), 0);
+                       print_buffer(i, buf + i, 1,
+                                    min_t(uint, len - i, 0x40), 0);
                        printf("Bad data:\n");
-                       print_buffer(i, vbuf + i, 1, min(len - i, 0x40), 0);
+                       print_buffer(i, vbuf + i, 1,
+                                    min_t(uint, len - i, 0x40), 0);
                        return -1;
                }
        }
index 4695386a332ab867c12df32e938d4976ce7f0115..fc1963b2a978a1be548f07e98108e1b817432e0c 100644 (file)
@@ -125,12 +125,12 @@ static int console_setfile(int file, struct stdio_dev * dev)
                 */
                switch (file) {
                case stdin:
-                       gd->jt[XF_getc] = dev->getc;
-                       gd->jt[XF_tstc] = dev->tstc;
+                       gd->jt[XF_getc] = getc;
+                       gd->jt[XF_tstc] = tstc;
                        break;
                case stdout:
-                       gd->jt[XF_putc] = dev->putc;
-                       gd->jt[XF_puts] = dev->puts;
+                       gd->jt[XF_putc] = putc;
+                       gd->jt[XF_puts] = puts;
                        gd->jt[XF_printf] = printf;
                        break;
                }
@@ -199,6 +199,20 @@ static void console_putc(int file, const char c)
        }
 }
 
+#ifdef CONFIG_PRE_CONSOLE_BUFFER
+static void console_putc_noserial(int file, const char c)
+{
+       int i;
+       struct stdio_dev *dev;
+
+       for (i = 0; i < cd_count[file]; i++) {
+               dev = console_devices[file][i];
+               if (dev->putc != NULL && strcmp(dev->name, "serial") != 0)
+                       dev->putc(dev, c);
+       }
+}
+#endif
+
 static void console_puts(int file, const char *s)
 {
        int i;
@@ -236,6 +250,14 @@ static inline void console_putc(int file, const char c)
        stdio_devices[file]->putc(stdio_devices[file], c);
 }
 
+#ifdef CONFIG_PRE_CONSOLE_BUFFER
+static inline void console_putc_noserial(int file, const char c)
+{
+       if (strcmp(stdio_devices[file]->name, "serial") != 0)
+               stdio_devices[file]->putc(stdio_devices[file], c);
+}
+#endif
+
 static inline void console_puts(int file, const char *s)
 {
        stdio_devices[file]->puts(stdio_devices[file], s);
@@ -382,6 +404,9 @@ int tstc(void)
        return serial_tstc();
 }
 
+#define PRE_CONSOLE_FLUSHPOINT1_SERIAL                 0
+#define PRE_CONSOLE_FLUSHPOINT2_EVERYTHING_BUT_SERIAL  1
+
 #ifdef CONFIG_PRE_CONSOLE_BUFFER
 #define CIRC_BUF_IDX(idx) ((idx) % (unsigned long)CONFIG_PRE_CON_BUF_SZ)
 
@@ -398,7 +423,7 @@ static void pre_console_puts(const char *s)
                pre_console_putc(*s++);
 }
 
-static void print_pre_console_buffer(void)
+static void print_pre_console_buffer(int flushpoint)
 {
        unsigned long i = 0;
        char *buffer = (char *)CONFIG_PRE_CON_BUF_ADDR;
@@ -407,12 +432,20 @@ static void print_pre_console_buffer(void)
                i = gd->precon_buf_idx - CONFIG_PRE_CON_BUF_SZ;
 
        while (i < gd->precon_buf_idx)
-               putc(buffer[CIRC_BUF_IDX(i++)]);
+               switch (flushpoint) {
+               case PRE_CONSOLE_FLUSHPOINT1_SERIAL:
+                       putc(buffer[CIRC_BUF_IDX(i++)]);
+                       break;
+               case PRE_CONSOLE_FLUSHPOINT2_EVERYTHING_BUT_SERIAL:
+                       console_putc_noserial(stdout,
+                                             buffer[CIRC_BUF_IDX(i++)]);
+                       break;
+               }
 }
 #else
 static inline void pre_console_putc(const char c) {}
 static inline void pre_console_puts(const char *s) {}
-static inline void print_pre_console_buffer(void) {}
+static inline void print_pre_console_buffer(int flushpoint) {}
 #endif
 
 void putc(const char c)
@@ -441,6 +474,7 @@ void putc(const char c)
                fputc(stdout, c);
        } else {
                /* Send directly to the handler */
+               pre_console_putc(c);
                serial_putc(c);
        }
 }
@@ -472,6 +506,7 @@ void puts(const char *s)
                fputs(stdout, s);
        } else {
                /* Send directly to the handler */
+               pre_console_puts(s);
                serial_puts(s);
        }
 }
@@ -679,7 +714,7 @@ int console_init_f(void)
                gd->flags |= GD_FLG_SILENT;
 #endif
 
-       print_pre_console_buffer();
+       print_pre_console_buffer(PRE_CONSOLE_FLUSHPOINT1_SERIAL);
 
        return 0;
 }
@@ -794,6 +829,7 @@ done:
        if ((stdio_devices[stdin] == NULL) && (stdio_devices[stdout] == NULL))
                return 0;
 #endif
+       print_pre_console_buffer(PRE_CONSOLE_FLUSHPOINT2_EVERYTHING_BUT_SERIAL);
        return 0;
 }
 
@@ -869,7 +905,7 @@ int console_init_r(void)
        if ((stdio_devices[stdin] == NULL) && (stdio_devices[stdout] == NULL))
                return 0;
 #endif
-
+       print_pre_console_buffer(PRE_CONSOLE_FLUSHPOINT2_EVERYTHING_BUT_SERIAL);
        return 0;
 }
 
index f9873393c183350795ed3ac7c15f5552afb5419b..6453ee9c259fcde7bfbe63099255b9823d5580c2 100644 (file)
@@ -1533,6 +1533,9 @@ void mem_malloc_init(ulong start, ulong size)
        mem_malloc_end = start + size;
        mem_malloc_brk = start;
 
+       debug("using memory %#lx-%#lx for malloc()\n", mem_malloc_start,
+             mem_malloc_end);
+
        memset((void *)mem_malloc_start, 0, size);
 
        malloc_bin_reloc();
@@ -2181,17 +2184,8 @@ Void_t* mALLOc(bytes) size_t bytes;
   INTERNAL_SIZE_T nb;
 
 #ifdef CONFIG_SYS_MALLOC_F_LEN
-       if (!(gd->flags & GD_FLG_RELOC)) {
-               ulong new_ptr;
-               void *ptr;
-
-               new_ptr = gd->malloc_ptr + bytes;
-               if (new_ptr > gd->malloc_limit)
-                       panic("Out of pre-reloc memory");
-               ptr = map_sysmem(gd->malloc_base + gd->malloc_ptr, bytes);
-               gd->malloc_ptr = ALIGN(new_ptr, sizeof(new_ptr));
-               return ptr;
-       }
+       if (gd && !(gd->flags & GD_FLG_FULL_MALLOC_INIT))
+               return malloc_simple(bytes);
 #endif
 
   /* check if mem_malloc_init() was run */
@@ -2459,7 +2453,7 @@ void fREe(mem) Void_t* mem;
 
 #ifdef CONFIG_SYS_MALLOC_F_LEN
        /* free() is a no-op - all the memory will be freed on relocation */
-       if (!(gd->flags & GD_FLG_RELOC))
+       if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT))
                return;
 #endif
 
@@ -2615,7 +2609,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;
   if (oldmem == NULL) return mALLOc(bytes);
 
 #ifdef CONFIG_SYS_MALLOC_F_LEN
-       if (!(gd->flags & GD_FLG_RELOC)) {
+       if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) {
                /* This is harder to support and should not be needed */
                panic("pre-reloc realloc() is not supported");
        }
@@ -2967,7 +2961,7 @@ Void_t* cALLOc(n, elem_size) size_t n; size_t elem_size;
   else
   {
 #ifdef CONFIG_SYS_MALLOC_F_LEN
-       if (!(gd->flags & GD_FLG_RELOC)) {
+       if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) {
                MALLOC_ZERO(mem, sz);
                return mem;
        }
index e66108f24a482b61ae99febd321418e38fe275c3..df797fcdd5bae35e1eaea9c2f6d3d631c0bff73a 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <common.h>
 #include <edid.h>
+#include <errno.h>
 #include <linux/ctype.h>
 #include <linux/string.h>
 
@@ -29,6 +30,17 @@ int edid_check_info(struct edid1_info *edid_info)
        return 0;
 }
 
+int edid_check_checksum(u8 *edid_block)
+{
+       u8 checksum = 0;
+       int i;
+
+       for (i = 0; i < 128; i++)
+               checksum += edid_block[i];
+
+       return (checksum == 0) ? 0 : -EINVAL;
+}
+
 int edid_get_ranges(struct edid1_info *edid, unsigned int *hmin,
                    unsigned int *hmax, unsigned int *vmin,
                    unsigned int *vmax)
index 8db0160ceb0ced4fc703a2a11840d5e6bedde30d..e4c848935ad19d7cac64d07102e7ebe39841b58b 100644 (file)
@@ -41,6 +41,7 @@ int saveenv(void)
        disk_partition_t info;
        int dev, part;
        int err;
+       loff_t size;
 
        err = env_export(&env_new);
        if (err)
@@ -59,7 +60,8 @@ int saveenv(void)
                return 1;
        }
 
-       err = file_fat_write(FAT_ENV_FILE, (void *)&env_new, sizeof(env_t));
+       err = file_fat_write(FAT_ENV_FILE, (void *)&env_new, 0, sizeof(env_t),
+                            &size);
        if (err == -1) {
                printf("\n** Unable to write \"%s\" from %s%d:%d **\n",
                        FAT_ENV_FILE, FAT_ENV_INTERFACE, dev, part);
index 749605fe3fa89ab798a0ebde92f1f90e4a40fb2b..9c9bb82c0faf81f3d6d6295f99ecfcfd3a1cea2b 100644 (file)
@@ -132,7 +132,7 @@ static int writeenv(size_t offset, u_char *buf)
        u_char *char_ptr;
 
        blocksize = nand_info[0].erasesize;
-       len = min(blocksize, CONFIG_ENV_SIZE);
+       len = min(blocksize, (size_t)CONFIG_ENV_SIZE);
 
        while (amount_saved < CONFIG_ENV_SIZE && offset < end) {
                if (nand_block_isbad(&nand_info[0], offset)) {
@@ -244,7 +244,7 @@ static int readenv(size_t offset, u_char *buf)
        if (!blocksize)
                return 1;
 
-       len = min(blocksize, CONFIG_ENV_SIZE);
+       len = min(blocksize, (size_t)CONFIG_ENV_SIZE);
 
        while (amount_loaded < CONFIG_ENV_SIZE && offset < end) {
                if (nand_block_isbad(&nand_info[0], offset)) {
index fb06d8a557fb9bc34f4452b537f93f11624ebf4f..6ea3938d83f29467feb874c8156a200b4641b2a7 100644 (file)
@@ -4,12 +4,17 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#include <config.h>
 #include <common.h>
 #include <fb_mmc.h>
 #include <part.h>
 #include <aboot.h>
 #include <sparse_format.h>
 
+#ifndef CONFIG_FASTBOOT_GPT_NAME
+#define CONFIG_FASTBOOT_GPT_NAME GPT_ENTRY_NAME
+#endif
+
 /* The 64 defined bytes plus the '\0' */
 #define RESPONSE_LEN   (64 + 1)
 
@@ -62,7 +67,6 @@ static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t *info,
 void fb_mmc_flash_write(const char *cmd, void *download_buffer,
                        unsigned int download_bytes, char *response)
 {
-       int ret;
        block_dev_desc_t *dev_desc;
        disk_partition_t info;
 
@@ -76,8 +80,24 @@ void fb_mmc_flash_write(const char *cmd, void *download_buffer,
                return;
        }
 
-       ret = get_partition_info_efi_by_name(dev_desc, cmd, &info);
-       if (ret) {
+       if (strcmp(cmd, CONFIG_FASTBOOT_GPT_NAME) == 0) {
+               printf("%s: updating MBR, Primary and Backup GPT(s)\n",
+                      __func__);
+               if (is_valid_gpt_buf(dev_desc, download_buffer)) {
+                       printf("%s: invalid GPT - refusing to write to flash\n",
+                              __func__);
+                       fastboot_fail("invalid GPT partition");
+                       return;
+               }
+               if (write_mbr_and_gpt_partitions(dev_desc, download_buffer)) {
+                       printf("%s: writing GPT partitions failed\n", __func__);
+                       fastboot_fail("writing GPT partitions failed");
+                       return;
+               }
+               printf("........ success\n");
+               fastboot_okay("");
+               return;
+       } else if (get_partition_info_efi_by_name(dev_desc, cmd, &info)) {
                error("cannot find partition: '%s'\n", cmd);
                fastboot_fail("cannot find partition");
                return;
index 3f641566b977aff76275656c86093051d2b1217c..8266bca7d6489a2ca8fb6f1015064184b137d2dd 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #include <common.h>
+#include <inttypes.h>
 #include <stdio_dev.h>
 #include <linux/ctype.h>
 #include <linux/types.h>
 #include <fdt_support.h>
 #include <exports.h>
 
-/*
- * Get cells len in bytes
- *     if #NNNN-cells property is 2 then len is 8
- *     otherwise len is 4
- */
-static int get_cells_len(const void *fdt, const char *nr_cells_name)
-{
-       const fdt32_t *cell;
-
-       cell = fdt_getprop(fdt, 0, nr_cells_name, NULL);
-       if (cell && fdt32_to_cpu(*cell) == 2)
-               return 8;
-
-       return 4;
-}
-
 /**
  * fdt_getprop_u32_default_node - Return a node's property or a default
  *
@@ -113,7 +98,8 @@ int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
 }
 
 /**
- * fdt_find_or_add_subnode - find or possibly add a subnode of a given node
+ * fdt_find_or_add_subnode() - find or possibly add a subnode of a given node
+ *
  * @fdt: pointer to the device tree blob
  * @parentoffset: structure block offset of a node
  * @name: name of the subnode to locate
@@ -121,8 +107,7 @@ int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
  * fdt_subnode_offset() finds a subnode of the node with a given name.
  * If the subnode does not exist, it will be created.
  */
-static int fdt_find_or_add_subnode(void *fdt, int parentoffset,
-                                  const char *name)
+int fdt_find_or_add_subnode(void *fdt, int parentoffset, const char *name)
 {
        int offset;
 
@@ -246,7 +231,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end)
                return err;
        }
 
-       is_u64 = (get_cells_len(fdt, "#address-cells") == 8);
+       is_u64 = (fdt_address_cells(fdt, 0) == 2);
 
        err = fdt_setprop_uxx(fdt, nodeoffset, "linux,initrd-start",
                              (uint64_t)initrd_start, is_u64);
@@ -382,26 +367,26 @@ void do_fixup_by_compat_u32(void *fdt, const char *compat,
 /*
  * fdt_pack_reg - pack address and size array into the "reg"-suitable stream
  */
-static int fdt_pack_reg(const void *fdt, void *buf, uint64_t *address,
-                       uint64_t *size, int n)
+static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size,
+                       int n)
 {
        int i;
-       int address_len = get_cells_len(fdt, "#address-cells");
-       int size_len = get_cells_len(fdt, "#size-cells");
+       int address_cells = fdt_address_cells(fdt, 0);
+       int size_cells = fdt_size_cells(fdt, 0);
        char *p = buf;
 
        for (i = 0; i < n; i++) {
-               if (address_len == 8)
+               if (address_cells == 2)
                        *(fdt64_t *)p = cpu_to_fdt64(address[i]);
                else
                        *(fdt32_t *)p = cpu_to_fdt32(address[i]);
-               p += address_len;
+               p += 4 * address_cells;
 
-               if (size_len == 8)
+               if (size_cells == 2)
                        *(fdt64_t *)p = cpu_to_fdt64(size[i]);
                else
                        *(fdt32_t *)p = cpu_to_fdt32(size[i]);
-               p += size_len;
+               p += 4 * size_cells;
        }
 
        return p - (char *)buf;
@@ -930,8 +915,6 @@ void fdt_del_node_and_alias(void *blob, const char *alias)
        fdt_delprop(blob, off, alias);
 }
 
-#define PRu64  "%llx"
-
 /* Max address size we deal with */
 #define OF_MAX_ADDR_CELLS      4
 #define OF_BAD_ADDR    ((u64)-1)
@@ -968,13 +951,8 @@ void of_bus_default_count_cells(void *blob, int parentoffset,
 {
        const fdt32_t *prop;
 
-       if (addrc) {
-               prop = fdt_getprop(blob, parentoffset, "#address-cells", NULL);
-               if (prop)
-                       *addrc = be32_to_cpup(prop);
-               else
-                       *addrc = 2;
-       }
+       if (addrc)
+               *addrc = fdt_address_cells(blob, parentoffset);
 
        if (sizec) {
                prop = fdt_getprop(blob, parentoffset, "#size-cells", NULL);
@@ -994,8 +972,8 @@ static u64 of_bus_default_map(fdt32_t *addr, const fdt32_t *range,
        s  = of_read_number(range + na + pna, ns);
        da = of_read_number(addr, na);
 
-       debug("OF: default map, cp="PRu64", s="PRu64", da="PRu64"\n",
-           cp, s, da);
+       debug("OF: default map, cp=%" PRIu64 ", s=%" PRIu64
+             ", da=%" PRIu64 "\n", cp, s, da);
 
        if (da < cp || da >= (cp + s))
                return OF_BAD_ADDR;
@@ -1073,7 +1051,7 @@ static int of_translate_one(void * blob, int parent, struct of_bus *bus,
 
  finish:
        of_dump_addr("OF: parent translation for:", addr, pna);
-       debug("OF: with offset: "PRu64"\n", offset);
+       debug("OF: with offset: %" PRIu64 "\n", offset);
 
        /* Translate it into parent bus space */
        return pbus->translate(addr, offset, pna);
@@ -1199,7 +1177,8 @@ int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
  */
 int fdt_alloc_phandle(void *blob)
 {
-       int offset, phandle = 0;
+       int offset;
+       uint32_t phandle = 0;
 
        for (offset = fdt_next_node(blob, -1, NULL); offset >= 0;
             offset = fdt_next_node(blob, offset, NULL)) {
@@ -1401,9 +1380,9 @@ int fdt_verify_alias_address(void *fdt, int anode, const char *alias, u64 addr)
 
        dt_addr = fdt_translate_address(fdt, node, reg);
        if (addr != dt_addr) {
-               printf("Warning: U-Boot configured device %s at address %llx,\n"
-                      " but the device tree has it address %llx.\n",
-                      alias, addr, dt_addr);
+               printf("Warning: U-Boot configured device %s at address %"
+                      PRIx64 ",\n but the device tree has it address %"
+                      PRIx64 ".\n", alias, addr, dt_addr);
                return 0;
        }
 
@@ -1419,11 +1398,7 @@ u64 fdt_get_base_address(void *fdt, int node)
        u32 naddr;
        const fdt32_t *prop;
 
-       prop = fdt_getprop(fdt, node, "#address-cells", &size);
-       if (prop && size == 4)
-               naddr = be32_to_cpup(prop);
-       else
-               naddr = 2;
+       naddr = fdt_address_cells(fdt, node);
 
        prop = fdt_getprop(fdt, node, "ranges", &size);
 
@@ -1523,3 +1498,65 @@ int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
 
        return 0;
 }
+
+/**
+ * fdt_setup_simplefb_node - Fill and enable a simplefb node
+ *
+ * @fdt: ptr to device tree
+ * @node: offset of the simplefb node
+ * @base_address: framebuffer base address
+ * @width: width in pixels
+ * @height: height in pixels
+ * @stride: bytes per line
+ * @format: pixel format string
+ *
+ * Convenience function to fill and enable a simplefb node.
+ */
+int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
+                           u32 height, u32 stride, const char *format)
+{
+       char name[32];
+       fdt32_t cells[4];
+       int i, addrc, sizec, ret;
+
+       of_bus_default_count_cells(fdt, fdt_parent_offset(fdt, node),
+                                  &addrc, &sizec);
+       i = 0;
+       if (addrc == 2)
+               cells[i++] = cpu_to_fdt32(base_address >> 32);
+       cells[i++] = cpu_to_fdt32(base_address);
+       if (sizec == 2)
+               cells[i++] = 0;
+       cells[i++] = cpu_to_fdt32(height * stride);
+
+       ret = fdt_setprop(fdt, node, "reg", cells, sizeof(cells[0]) * i);
+       if (ret < 0)
+               return ret;
+
+       snprintf(name, sizeof(name), "framebuffer@%llx", base_address);
+       ret = fdt_set_name(fdt, node, name);
+       if (ret < 0)
+               return ret;
+
+       ret = fdt_setprop_u32(fdt, node, "width", width);
+       if (ret < 0)
+               return ret;
+
+       ret = fdt_setprop_u32(fdt, node, "height", height);
+       if (ret < 0)
+               return ret;
+
+       ret = fdt_setprop_u32(fdt, node, "stride", stride);
+       if (ret < 0)
+               return ret;
+
+       ret = fdt_setprop_string(fdt, node, "format", format);
+       if (ret < 0)
+               return ret;
+
+       ret = fdt_setprop_string(fdt, node, "status", "okay");
+       if (ret < 0)
+               return ret;
+
+       return 0;
+}
index f1440c2c18ebd0fd025db45e4385f7eaee19203a..fa33f03d2ed3e285267c2fd1b3f8448b7db59ab6 100644 (file)
@@ -88,7 +88,6 @@ flash_protect (int flag, ulong from, ulong to, flash_info_t *info)
 flash_info_t *
 addr2info (ulong addr)
 {
-#ifndef CONFIG_SPD823TS
        flash_info_t *info;
        int i;
 
@@ -104,7 +103,6 @@ addr2info (ulong addr)
                        return (info);
                }
        }
-#endif /* CONFIG_SPD823TS */
 
        return (NULL);
 }
@@ -125,9 +123,6 @@ addr2info (ulong addr)
 int
 flash_write (char *src, ulong addr, ulong cnt)
 {
-#ifdef CONFIG_SPD823TS
-       return (ERR_TIMOUT);    /* any other error codes are possible as well */
-#else
        int i;
        ulong         end        = addr + cnt - 1;
        flash_info_t *info_first = addr2info (addr);
@@ -181,7 +176,6 @@ flash_write (char *src, ulong addr, ulong cnt)
 #endif /* CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE */
 
        return (ERR_OK);
-#endif /* CONFIG_SPD823TS */
 }
 
 /*-----------------------------------------------------------------------
index 12d67594abe0c6f912f5dcd80f5b0f4d1c3cd867..aceabc5caddb12d1c52d9b4c4028981ff01670b0 100644 (file)
@@ -256,7 +256,7 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str,
                        env_var = 1;
        }
 
-       if (env_var) {
+       if (!env_var) {
                ulong addr;
                void *buf;
 
@@ -347,7 +347,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
 {
        ulong addr, len;
 
-       if (argc < 2)
+       if ((argc < 2) || ((flags & HASH_FLAG_VERIFY) && (argc < 3)))
                return CMD_RET_USAGE;
 
        addr = simple_strtoul(*argv++, NULL, 16);
@@ -380,8 +380,6 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
 #else
                if (0) {
 #endif
-                       if (!argc)
-                               return CMD_RET_USAGE;
                        if (parse_verify_sum(algo, *argv, vsum,
                                        flags & HASH_FLAG_ENV)) {
                                printf("ERROR: %s does not contain a valid "
index a2342fa3dfdd07c1de766200986cfac97579aa4d..e3f06cdd1a28406e8a1a2613d543b71c27d44942 100644 (file)
@@ -237,6 +237,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
        int             fdt_noffset;
 #endif
        const char *select = NULL;
+       int             ok_no_fdt = 0;
 
        *of_flat_tree = NULL;
        *of_size = 0;
@@ -309,7 +310,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                               fdt_addr);
                        fdt_hdr = image_get_fdt(fdt_addr);
                        if (!fdt_hdr)
-                               goto error;
+                               goto no_fdt;
 
                        /*
                         * move image data to the load address,
@@ -379,7 +380,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                        break;
                default:
                        puts("ERROR: Did not find a cmdline Flattened Device Tree\n");
-                       goto error;
+                       goto no_fdt;
                }
 
                printf("   Booting using the fdt blob at %#08lx\n", fdt_addr);
@@ -413,11 +414,11 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                        }
                } else {
                        debug("## No Flattened Device Tree\n");
-                       return 0;
+                       goto no_fdt;
                }
        } else {
                debug("## No Flattened Device Tree\n");
-               return 0;
+               goto no_fdt;
        }
 
        *of_flat_tree = fdt_blob;
@@ -427,9 +428,15 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
 
        return 0;
 
+no_fdt:
+       ok_no_fdt = 1;
 error:
        *of_flat_tree = NULL;
        *of_size = 0;
+       if (!select && ok_no_fdt) {
+               debug("Continuing to boot without FDT\n");
+               return 0;
+       }
        return 1;
 }
 
@@ -460,19 +467,32 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
 {
        ulong *initrd_start = &images->initrd_start;
        ulong *initrd_end = &images->initrd_end;
-       int ret;
+       int ret = -EPERM;
+       int fdt_ret;
 
        if (fdt_chosen(blob) < 0) {
-               puts("ERROR: /chosen node create failed");
-               puts(" - must RESET the board to recover.\n");
-               return -1;
+               printf("ERROR: /chosen node create failed\n");
+               goto err;
        }
        if (arch_fixup_fdt(blob) < 0) {
-               puts("ERROR: arch specific fdt fixup failed");
-               return -1;
+               printf("ERROR: arch-specific fdt fixup failed\n");
+               goto err;
+       }
+       if (IMAGE_OF_BOARD_SETUP) {
+               fdt_ret = ft_board_setup(blob, gd->bd);
+               if (fdt_ret) {
+                       printf("ERROR: board-specific fdt fixup failed: %s\n",
+                              fdt_strerror(fdt_ret));
+                       goto err;
+               }
+       }
+       if (IMAGE_OF_SYSTEM_SETUP) {
+               if (ft_system_setup(blob, gd->bd)) {
+                       printf("ERROR: system-specific fdt fixup failed: %s\n",
+                              fdt_strerror(fdt_ret));
+                       goto err;
+               }
        }
-       if (IMAGE_OF_BOARD_SETUP)
-               ft_board_setup(blob, gd->bd);
        fdt_fixup_ethernet(blob);
 
        /* Delete the old LMB reservation */
@@ -481,7 +501,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
 
        ret = fdt_shrink_to_minimum(blob);
        if (ret < 0)
-               return ret;
+               goto err;
        of_size = ret;
 
        if (*initrd_start && *initrd_end) {
@@ -493,7 +513,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
 
        fdt_initrd(blob, *initrd_start, *initrd_end);
        if (!ft_verify_fdt(blob))
-               return -1;
+               goto err;
 
 #if defined(CONFIG_SOC_KEYSTONE)
        if (IMAGE_OF_BOARD_SETUP)
@@ -501,4 +521,8 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
 #endif
 
        return 0;
+err:
+       printf(" - must RESET the board to recover.\n\n");
+
+       return ret;
 }
index a272ea2e83456d9a50018ffb1752b0e2016ddcf7..4ffc5aaa512cd10528f176dda4f764a8fd85150d 100644 (file)
@@ -1114,7 +1114,8 @@ int fit_image_check_arch(const void *fit, int noffset, uint8_t arch)
 
        if (fit_image_get_arch(fit, noffset, &image_arch))
                return 0;
-       return (arch == image_arch);
+       return (arch == image_arch) ||
+               (arch == IH_ARCH_I386 && image_arch == IH_ARCH_X86_64);
 }
 
 /**
index eb92e6323c03e55ee3e0025a17641bed60b40a59..e691a517894c32d15f5c321711c4f4ddd919f3bd 100644 (file)
@@ -85,6 +85,7 @@ static const table_entry_t uimage_arch[] = {
        {       IH_ARCH_SANDBOX,        "sandbox",      "Sandbox",      },
        {       IH_ARCH_ARM64,          "arm64",        "AArch64",      },
        {       IH_ARCH_ARC,            "arc",          "ARC",          },
+       {       IH_ARCH_X86_64,         "x86_64",       "AMD x86_64",   },
        {       -1,                     "",             "",             },
 };
 
@@ -484,12 +485,22 @@ void memmove_wd(void *to, void *from, size_t len, ulong chunksz)
                return;
 
 #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
+       if (to > from) {
+               from += len;
+               to += len;
+       }
        while (len > 0) {
                size_t tail = (len > chunksz) ? chunksz : len;
                WATCHDOG_RESET();
+               if (to > from) {
+                       to -= tail;
+                       from -= tail;
+               }
                memmove(to, from, tail);
-               to += tail;
-               from += tail;
+               if (to < from) {
+                       to += tail;
+                       from += tail;
+               }
                len -= tail;
        }
 #else  /* !(CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG) */
index 787d80e3cbeb1da848a2ac756a159121eb064b41..3ed504df50df128180211a39186b55f85074de97 100644 (file)
@@ -30,6 +30,7 @@
 #include <splash.h>
 #include <asm/io.h>
 #include <asm/unaligned.h>
+#include <fdt_support.h>
 
 #if defined(CONFIG_CPU_PXA25X) || defined(CONFIG_CPU_PXA27X) || \
        defined(CONFIG_CPU_MONAHANS)
@@ -529,7 +530,7 @@ static int lcd_init(void *lcdbase)
        lcd_ctrl_init(lcdbase);
 
        /*
-        * lcd_ctrl_init() of some drivers (i.e. bcm2835 on rpi_b) ignores
+        * lcd_ctrl_init() of some drivers (i.e. bcm2835 on rpi) ignores
         * the 'lcdbase' argument and uses custom lcd base address
         * by setting up gd->fb_base. Check for this condition and fixup
         * 'lcd_base' address.
@@ -746,7 +747,7 @@ static void splash_align_axis(int *axis, unsigned long panel_size,
        else
                return;
 
-       *axis = max(0, axis_alignment);
+       *axis = max(0, (int)axis_alignment);
 }
 #endif
 
@@ -881,7 +882,7 @@ static void lcd_display_rle8_bitmap(bmp_image_t *bmp, ushort *cmap, uchar *fb,
 }
 #endif
 
-#if defined(CONFIG_MPC823) || defined(CONFIG_MCC200)
+#if defined(CONFIG_MPC823)
 #define FB_PUT_BYTE(fb, from) *(fb)++ = (255 - *(from)++)
 #else
 #define FB_PUT_BYTE(fb, from) *(fb)++ = *(from)++
@@ -906,9 +907,7 @@ static inline void fb_put_word(uchar **fb, uchar **from)
 
 int lcd_display_bitmap(ulong bmp_image, int x, int y)
 {
-#if !defined(CONFIG_MCC200)
        ushort *cmap = NULL;
-#endif
        ushort *cmap_base = NULL;
        ushort i, j;
        uchar *fb;
@@ -956,8 +955,6 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        debug("Display-bmp: %d x %d  with %d colors\n",
                (int)width, (int)height, (int)colors);
 
-#if !defined(CONFIG_MCC200)
-       /* MCC200 LCD doesn't need CMAP, supports 1bpp b&w only */
        if (bmp_bpix == 8) {
                cmap = configuration_get_cmap();
                cmap_base = cmap;
@@ -985,24 +982,6 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
 #endif
                }
        }
-#endif
-       /*
-        *  BMP format for Monochrome assumes that the state of a
-        * pixel is described on a per Bit basis, not per Byte.
-        *  So, in case of Monochrome BMP we should align widths
-        * on a byte boundary and convert them from Bit to Byte
-        * units.
-        *  Probably, PXA250 and MPC823 process 1bpp BMP images in
-        * their own ways, so make the converting to be MCC200
-        * specific.
-        */
-#if defined(CONFIG_MCC200)
-       if (bpix == 1) {
-               width = ((width + 7) & ~7) >> 3;
-               x     = ((x + 7) & ~7) >> 3;
-               pwidth= ((pwidth + 7) & ~7) >> 3;
-       }
-#endif
 
        padded_width = (width & 0x3 ? (width & ~0x3) + 4 : width);
 
@@ -1167,8 +1146,8 @@ U_BOOT_ENV_CALLBACK(splashimage, on_splashimage);
 
 void lcd_position_cursor(unsigned col, unsigned row)
 {
-       console_col = min(col, CONSOLE_COLS - 1);
-       console_row = min(row, CONSOLE_ROWS - 1);
+       console_col = min_t(short, col, CONSOLE_COLS - 1);
+       console_row = min_t(short, row, CONSOLE_ROWS - 1);
 }
 
 int lcd_get_pixel_width(void)
@@ -1194,51 +1173,13 @@ int lcd_get_screen_columns(void)
 #if defined(CONFIG_LCD_DT_SIMPLEFB)
 static int lcd_dt_simplefb_configure_node(void *blob, int off)
 {
-       u32 stride;
-       fdt32_t cells[2];
-       int ret;
-       static const char format[] =
 #if LCD_BPP == LCD_COLOR16
-               "r5g6b5";
+       return fdt_setup_simplefb_node(blob, off, gd->fb_base,
+                                      panel_info.vl_col, panel_info.vl_row,
+                                      panel_info.vl_col * 2, "r5g6b5");
 #else
-               "";
+       return -1;
 #endif
-
-       if (!format[0])
-               return -1;
-
-       stride = panel_info.vl_col * 2;
-
-       cells[0] = cpu_to_fdt32(gd->fb_base);
-       cells[1] = cpu_to_fdt32(stride * panel_info.vl_row);
-       ret = fdt_setprop(blob, off, "reg", cells, sizeof(cells[0]) * 2);
-       if (ret < 0)
-               return -1;
-
-       cells[0] = cpu_to_fdt32(panel_info.vl_col);
-       ret = fdt_setprop(blob, off, "width", cells, sizeof(cells[0]));
-       if (ret < 0)
-               return -1;
-
-       cells[0] = cpu_to_fdt32(panel_info.vl_row);
-       ret = fdt_setprop(blob, off, "height", cells, sizeof(cells[0]));
-       if (ret < 0)
-               return -1;
-
-       cells[0] = cpu_to_fdt32(stride);
-       ret = fdt_setprop(blob, off, "stride", cells, sizeof(cells[0]));
-       if (ret < 0)
-               return -1;
-
-       ret = fdt_setprop(blob, off, "format", format, strlen(format) + 1);
-       if (ret < 0)
-               return -1;
-
-       ret = fdt_delprop(blob, off, "status");
-       if (ret < 0)
-               return -1;
-
-       return 0;
 }
 
 int lcd_dt_simplefb_add_node(void *blob)
diff --git a/common/malloc_simple.c b/common/malloc_simple.c
new file mode 100644 (file)
index 0000000..afdacff
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Simple malloc implementation
+ *
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <asm/io.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void *malloc_simple(size_t bytes)
+{
+       ulong new_ptr;
+       void *ptr;
+
+       new_ptr = gd->malloc_ptr + bytes;
+       if (new_ptr > gd->malloc_limit)
+               panic("Out of pre-reloc memory");
+       ptr = map_sysmem(gd->malloc_base + gd->malloc_ptr, bytes);
+       gd->malloc_ptr = ALIGN(new_ptr, sizeof(new_ptr));
+       return ptr;
+}
+
+#ifdef CONFIG_SYS_MALLOC_SIMPLE
+void *calloc(size_t nmemb, size_t elem_size)
+{
+       size_t size = nmemb * elem_size;
+       void *ptr;
+
+       ptr = malloc(size);
+       memset(ptr, '\0', size);
+
+       return ptr;
+}
+#endif
index d85bab3928cc33693c80e090769fd02eb321403d..1826c47a99c464bd0023f3c173cab788de49acb0 100644 (file)
@@ -7,6 +7,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
+#include <dm.h>
 #include <spl.h>
 #include <asm/u-boot.h>
 #include <nand.h>
@@ -15,6 +16,7 @@
 #include <i2c.h>
 #include <image.h>
 #include <malloc.h>
+#include <dm/root.h>
 #include <linux/compiler.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -62,6 +64,15 @@ __weak void spl_board_prepare_for_linux(void)
        /* Nothing to do! */
 }
 
+void spl_set_header_raw_uboot(void)
+{
+       spl_image.size = CONFIG_SYS_MONITOR_LEN;
+       spl_image.entry_point = CONFIG_SYS_UBOOT_START;
+       spl_image.load_addr = CONFIG_SYS_TEXT_BASE;
+       spl_image.os = IH_OS_U_BOOT;
+       spl_image.name = "U-Boot";
+}
+
 void spl_parse_image_header(const struct image_header *header)
 {
        u32 header_size = sizeof(struct image_header);
@@ -93,11 +104,7 @@ void spl_parse_image_header(const struct image_header *header)
                /* Signature not found - assume u-boot.bin */
                debug("mkimage signature not found - ih_magic = %x\n",
                        header->ih_magic);
-               spl_image.size = CONFIG_SYS_MONITOR_LEN;
-               spl_image.entry_point = CONFIG_SYS_UBOOT_START;
-               spl_image.load_addr = CONFIG_SYS_TEXT_BASE;
-               spl_image.os = IH_OS_U_BOOT;
-               spl_image.name = "U-Boot";
+               spl_set_header_raw_uboot();
        }
 }
 
@@ -134,9 +141,16 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
        u32 boot_device;
        debug(">>spl:board_init_r()\n");
 
-#ifdef CONFIG_SYS_SPL_MALLOC_START
+#if defined(CONFIG_SYS_SPL_MALLOC_START)
        mem_malloc_init(CONFIG_SYS_SPL_MALLOC_START,
                        CONFIG_SYS_SPL_MALLOC_SIZE);
+       gd->flags |= GD_FLG_FULL_MALLOC_INIT;
+#elif defined(CONFIG_SYS_MALLOC_F_LEN)
+       gd->malloc_limit = gd->malloc_base + CONFIG_SYS_MALLOC_F_LEN;
+       gd->malloc_ptr = 0;
+#endif
+#ifdef CONFIG_SPL_DM
+       dm_init_and_scan(true);
 #endif
 
 #ifndef CONFIG_PPC
@@ -216,7 +230,9 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
                break;
 #endif
        default:
-               debug("SPL: Un-supported Boot Device\n");
+#if defined(CONFIG_SPL_SERIAL_SUPPORT) && defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
+               printf("SPL: Unsupported Boot Device %d\n", boot_device);
+#endif
                hang();
        }
 
@@ -233,6 +249,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
        default:
                debug("Unsupported OS image.. Jumping nevertheless..\n");
        }
+#if defined(CONFIG_SYS_MALLOC_F_LEN) && !defined(CONFIG_SYS_SPL_MALLOC_SIZE)
+       debug("SPL malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr,
+             gd->malloc_ptr / 1024);
+#endif
+
        jump_to_image_no_args(&spl_image);
 }
 
index d9eba5aef3a7bfae56ceda43df0a1726639d8804..9d37fd352113dab7459a66fa9a90066bfe08f328 100644 (file)
@@ -15,7 +15,7 @@ int spl_load_image_ext(block_dev_desc_t *block_dev,
 {
        s32 err;
        struct image_header *header;
-       int filelen;
+       loff_t filelen, actlen;
        disk_partition_t part_info = {};
 
        header = (struct image_header *)(CONFIG_SYS_TEXT_BASE -
@@ -37,36 +37,36 @@ int spl_load_image_ext(block_dev_desc_t *block_dev,
                goto end;
        }
 
-       filelen = err = ext4fs_open(filename);
+       err = ext4fs_open(filename, &filelen);
        if (err < 0) {
                puts("spl: ext4fs_open failed\n");
                goto end;
        }
-       err = ext4fs_read((char *)header, sizeof(struct image_header));
-       if (err <= 0) {
+       err = ext4fs_read((char *)header, sizeof(struct image_header), &actlen);
+       if (err < 0) {
                puts("spl: ext4fs_read failed\n");
                goto end;
        }
 
        spl_parse_image_header(header);
 
-       err = ext4fs_read((char *)spl_image.load_addr, filelen);
+       err = ext4fs_read((char *)spl_image.load_addr, filelen, &actlen);
 
 end:
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-       if (err <= 0)
+       if (err < 0)
                printf("%s: error reading image %s, err - %d\n",
                       __func__, filename, err);
 #endif
 
-       return err <= 0;
+       return err < 0;
 }
 
 #ifdef CONFIG_SPL_OS_BOOT
 int spl_load_image_ext_os(block_dev_desc_t *block_dev, int partition)
 {
        int err;
-       int filelen;
+       __maybe_unused loff_t filelen, actlen;
        disk_partition_t part_info = {};
        __maybe_unused char *file;
 
@@ -89,13 +89,13 @@ int spl_load_image_ext_os(block_dev_desc_t *block_dev, int partition)
 #if defined(CONFIG_SPL_ENV_SUPPORT) && defined(CONFIG_SPL_OS_BOOT)
        file = getenv("falcon_args_file");
        if (file) {
-               filelen = err = ext4fs_open(file);
+               err = ext4fs_open(file, &filelen);
                if (err < 0) {
                        puts("spl: ext4fs_open failed\n");
                        goto defaults;
                }
-               err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, filelen);
-               if (err <= 0) {
+               err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, filelen, &actlen);
+               if (err < 0) {
                        printf("spl: error reading image %s, err - %d, falling back to default\n",
                               file, err);
                        goto defaults;
@@ -119,12 +119,12 @@ int spl_load_image_ext_os(block_dev_desc_t *block_dev, int partition)
 defaults:
 #endif
 
-       filelen = err = ext4fs_open(CONFIG_SPL_FS_LOAD_ARGS_NAME);
+       err = ext4fs_open(CONFIG_SPL_FS_LOAD_ARGS_NAME, &filelen);
        if (err < 0)
                puts("spl: ext4fs_open failed\n");
 
-       err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, filelen);
-       if (err <= 0) {
+       err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, filelen, &actlen);
+       if (err < 0) {
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
                printf("%s: error reading image %s, err - %d\n",
                       __func__, CONFIG_SPL_FS_LOAD_ARGS_NAME, err);
index ee71f793a67ff289f7adba10d3db9d83b7d2182f..c2e596be69bc4310790de1160ddaef40f8c02759 100644 (file)
@@ -15,7 +15,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static int mmc_load_image_raw(struct mmc *mmc, unsigned long sector)
+static int mmc_load_image_raw_sector(struct mmc *mmc, unsigned long sector)
 {
        unsigned long err;
        u32 image_size_sectors;
@@ -51,6 +51,22 @@ end:
        return (err == 0);
 }
 
+#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
+static int mmc_load_image_raw_partition(struct mmc *mmc, int partition)
+{
+       disk_partition_t info;
+
+       if (get_partition_info(&mmc->block_dev, partition, &info)) {
+#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
+               printf("spl: partition error\n");
+#endif
+               return -1;
+       }
+
+       return mmc_load_image_raw_sector(mmc, info.start);
+}
+#endif
+
 #ifdef CONFIG_SPL_OS_BOOT
 static int mmc_load_image_raw_os(struct mmc *mmc)
 {
@@ -64,7 +80,8 @@ static int mmc_load_image_raw_os(struct mmc *mmc)
                return -1;
        }
 
-       return mmc_load_image_raw(mmc, CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR);
+       return mmc_load_image_raw_sector(mmc,
+                                               CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR);
 }
 #endif
 
@@ -98,18 +115,24 @@ void spl_mmc_load_image(void)
 #ifdef CONFIG_SPL_OS_BOOT
                if (spl_start_uboot() || mmc_load_image_raw_os(mmc))
 #endif
-               err = mmc_load_image_raw(mmc,
+#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
+               err = mmc_load_image_raw_partition(mmc,
+                       CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION);
+#else
+               err = mmc_load_image_raw_sector(mmc,
                        CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
+#endif
 #if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
-       } else if (boot_mode == MMCSD_MODE_FS) {
+       }
+       if (err || boot_mode == MMCSD_MODE_FS) {
                debug("boot mode - FS\n");
 #ifdef CONFIG_SPL_FAT_SUPPORT
 #ifdef CONFIG_SPL_OS_BOOT
                if (spl_start_uboot() || spl_load_image_fat_os(&mmc->block_dev,
-                                                               CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION))
+                                                               CONFIG_SYS_MMCSD_FS_BOOT_PARTITION))
 #endif
                err = spl_load_image_fat(&mmc->block_dev,
-                                       CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION,
+                                       CONFIG_SYS_MMCSD_FS_BOOT_PARTITION,
                                        CONFIG_SPL_FS_LOAD_PAYLOAD_NAME);
                if(err)
 #endif /* CONFIG_SPL_FAT_SUPPORT */
@@ -117,10 +140,10 @@ void spl_mmc_load_image(void)
 #ifdef CONFIG_SPL_EXT_SUPPORT
 #ifdef CONFIG_SPL_OS_BOOT
                if (spl_start_uboot() || spl_load_image_ext_os(&mmc->block_dev,
-                                                               CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION))
+                                                               CONFIG_SYS_MMCSD_FS_BOOT_PARTITION))
 #endif
                err = spl_load_image_ext(&mmc->block_dev,
-                                       CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION,
+                                       CONFIG_SYS_MMCSD_FS_BOOT_PARTITION,
                                        CONFIG_SPL_FS_LOAD_PAYLOAD_NAME);
 #endif /* CONFIG_SPL_EXT_SUPPORT */
                }
@@ -146,14 +169,27 @@ void spl_mmc_load_image(void)
 #ifdef CONFIG_SPL_OS_BOOT
                if (spl_start_uboot() || mmc_load_image_raw_os(mmc))
 #endif
-               err = mmc_load_image_raw(mmc,
+               err = mmc_load_image_raw_sector(mmc,
                        CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
 #endif
-       } else {
+       }
+
+       switch(boot_mode){
+               case MMCSD_MODE_RAW:
+#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
+               case MMCSD_MODE_FS:
+#endif
+#ifdef CONFIG_SUPPORT_EMMC_BOOT
+               case MMCSD_MODE_EMMCBOOT:
+#endif
+                       /* Boot mode is ok. Nothing to do. */
+                       break;
+               case MMCSD_MODE_UNDEFINED:
+               default:
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-               puts("spl: wrong MMC boot mode\n");
+                       puts("spl: wrong MMC boot mode\n");
 #endif
-               hang();
+                       hang();
        }
 
        if (err)
index 9b200bc4d56dafaf0d7b8ddd131c3598e4d15429..b7801cb4605f16c54c99f65e3e8ed93db5d3e564 100644 (file)
 #include <asm/io.h>
 #include <nand.h>
 
+#if defined(CONFIG_SPL_NAND_RAW_ONLY)
+void spl_nand_load_image(void)
+{
+       nand_init();
+
+       nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
+                           CONFIG_SYS_NAND_U_BOOT_SIZE,
+                           (void *)CONFIG_SYS_NAND_U_BOOT_DST);
+       spl_set_header_raw_uboot();
+       nand_deselect();
+}
+#else
 void spl_nand_load_image(void)
 {
        struct image_header *header;
@@ -82,3 +94,4 @@ void spl_nand_load_image(void)
                spl_image.size, (void *)spl_image.load_addr);
        nand_deselect();
 }
+#endif
index aeea79315e27f6c28da81cc8671f196957dbdeea..d9eb2d6687b3fb8e4bcc66ad3d139e772a29721e 100644 (file)
@@ -13,6 +13,7 @@
 #include <spl.h>
 #include <asm/u-boot.h>
 #include <sata.h>
+#include <scsi.h>
 #include <fat.h>
 #include <version.h>
 #include <image.h>
index 68c595d2d79c292e3ac9b93ae55b0b22bf0e27f0..adbfc890dd4d8ac907cd73b7e9c4a481bda6150a 100644 (file)
@@ -197,6 +197,7 @@ int stdio_deregister_dev(struct stdio_dev *dev, int force)
        }
 
        list_del(&(dev->list));
+       free(dev);
 
        /* reassign Device list */
        list_for_each(pos, &(devs.list)) {
index bd0f8d5d180fb1a72590dd341562cea4056c4253..736cd9f00950929c3a269987d8c9c2e32cc80f7e 100644 (file)
@@ -33,7 +33,6 @@
 #include <linux/ctype.h>
 #include <asm/byteorder.h>
 #include <asm/unaligned.h>
-#include <compiler.h>
 #include <errno.h>
 #include <usb.h>
 #ifdef CONFIG_4xx
@@ -927,7 +926,6 @@ int usb_new_device(struct usb_device *dev)
         * thread_id=5729457&forum_id=5398
         */
        __maybe_unused struct usb_device_descriptor *desc;
-       int port = -1;
        struct usb_device *parent = dev->parent;
        unsigned short portstatus;
 
@@ -965,24 +963,10 @@ int usb_new_device(struct usb_device *dev)
 #endif
 
        if (parent) {
-               int j;
-
-               /* find the port number we're at */
-               for (j = 0; j < parent->maxchild; j++) {
-                       if (parent->children[j] == dev) {
-                               port = j;
-                               break;
-                       }
-               }
-               if (port < 0) {
-                       printf("usb_new_device:cannot locate device's port.\n");
-                       return 1;
-               }
-
                /* reset the port for the second time */
-               err = hub_port_reset(dev->parent, port, &portstatus);
+               err = hub_port_reset(dev->parent, dev->portnr - 1, &portstatus);
                if (err < 0) {
-                       printf("\n     Couldn't reset port %i\n", port);
+                       printf("\n     Couldn't reset port %i\n", dev->portnr);
                        return 1;
                }
        }
index c416e5e0b31790e2bc7570fd113f7b52bb2a4502..66b4a725d1b3c1d2caf0fe005fe40e036b9b251f 100644 (file)
@@ -86,49 +86,10 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
        int i;
        struct usb_device *dev;
        unsigned pgood_delay = hub->desc.bPwrOn2PwrGood * 2;
-       ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);
-       unsigned short portstatus;
-       int ret;
 
        dev = hub->pusb_dev;
 
-       /*
-        * Enable power to the ports:
-        * Here we Power-cycle the ports: aka,
-        * turning them off and turning on again.
-        */
        debug("enabling power on all ports\n");
-       for (i = 0; i < dev->maxchild; i++) {
-               usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_POWER);
-               debug("port %d returns %lX\n", i + 1, dev->status);
-       }
-
-       /* Wait at least 2*bPwrOn2PwrGood for PP to change */
-       mdelay(pgood_delay);
-
-       for (i = 0; i < dev->maxchild; i++) {
-               ret = usb_get_port_status(dev, i + 1, portsts);
-               if (ret < 0) {
-                       debug("port %d: get_port_status failed\n", i + 1);
-                       continue;
-               }
-
-               /*
-                * Check to confirm the state of Port Power:
-                * xHCI says "After modifying PP, s/w shall read
-                * PP and confirm that it has reached the desired state
-                * before modifying it again, undefined behavior may occur
-                * if this procedure is not followed".
-                * EHCI doesn't say anything like this, but no harm in keeping
-                * this.
-                */
-               portstatus = le16_to_cpu(portsts->wPortStatus);
-               if (portstatus & (USB_PORT_STAT_POWER << 1)) {
-                       debug("port %d: Port power change failed\n", i + 1);
-                       continue;
-               }
-       }
-
        for (i = 0; i < dev->maxchild; i++) {
                usb_set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER);
                debug("port %d returns %lX\n", i + 1, dev->status);
@@ -339,7 +300,8 @@ static int usb_hub_configure(struct usb_device *dev)
        }
        descriptor = (struct usb_hub_descriptor *)buffer;
 
-       length = min(descriptor->bLength, sizeof(struct usb_hub_descriptor));
+       length = min_t(int, descriptor->bLength,
+                      sizeof(struct usb_hub_descriptor));
 
        if (usb_get_hub_descriptor(dev, buffer, length) < 0) {
                debug("usb_hub_configure: failed to get hub " \
index fdc083c70cf9952ec000429355b605b2ec4ff43c..bc7145ea79d38b87ce173b2b14dc9bf444f40826 100644 (file)
@@ -99,6 +99,11 @@ static const unsigned char usb_kbd_arrow[] = {
 #define USB_KBD_BOOT_REPORT_SIZE 8
 
 struct usb_kbd_pdata {
+       unsigned long   intpipe;
+       int             intpktsize;
+       int             intinterval;
+       struct int_queue *intq;
+
        uint32_t        repeat_delay;
 
        uint32_t        usb_in_pointer;
@@ -116,32 +121,6 @@ extern int __maybe_unused net_busy_flag;
 /* The period of time between two calls of usb_kbd_testc(). */
 static unsigned long __maybe_unused kbd_testc_tms;
 
-/* Generic keyboard event polling. */
-void usb_kbd_generic_poll(void)
-{
-       struct stdio_dev *dev;
-       struct usb_device *usb_kbd_dev;
-       struct usb_kbd_pdata *data;
-       struct usb_interface *iface;
-       struct usb_endpoint_descriptor *ep;
-       int pipe;
-       int maxp;
-
-       /* Get the pointer to USB Keyboard device pointer */
-       dev = stdio_get_by_name(DEVNAME);
-       usb_kbd_dev = (struct usb_device *)dev->priv;
-       data = usb_kbd_dev->privptr;
-       iface = &usb_kbd_dev->config.if_desc[0];
-       ep = &iface->ep_desc[0];
-       pipe = usb_rcvintpipe(usb_kbd_dev, ep->bEndpointAddress);
-
-       /* Submit a interrupt transfer request */
-       maxp = usb_maxpacket(usb_kbd_dev, pipe);
-       usb_submit_int_msg(usb_kbd_dev, pipe, data->new,
-               min(maxp, USB_KBD_BOOT_REPORT_SIZE),
-               ep->bInterval);
-}
-
 /* Puts character in the queue and sets up the in and out pointer. */
 static void usb_kbd_put_queue(struct usb_kbd_pdata *data, char c)
 {
@@ -331,23 +310,11 @@ static int usb_kbd_irq(struct usb_device *dev)
 static inline void usb_kbd_poll_for_event(struct usb_device *dev)
 {
 #if    defined(CONFIG_SYS_USB_EVENT_POLL)
-       struct usb_interface *iface;
-       struct usb_endpoint_descriptor *ep;
-       struct usb_kbd_pdata *data;
-       int pipe;
-       int maxp;
-
-       /* Get the pointer to USB Keyboard device pointer */
-       data = dev->privptr;
-       iface = &dev->config.if_desc[0];
-       ep = &iface->ep_desc[0];
-       pipe = usb_rcvintpipe(dev, ep->bEndpointAddress);
+       struct usb_kbd_pdata *data = dev->privptr;
 
        /* Submit a interrupt transfer request */
-       maxp = usb_maxpacket(dev, pipe);
-       usb_submit_int_msg(dev, pipe, &data->new[0],
-               min(maxp, USB_KBD_BOOT_REPORT_SIZE),
-               ep->bInterval);
+       usb_submit_int_msg(dev, data->intpipe, &data->new[0], data->intpktsize,
+                          data->intinterval);
 
        usb_kbd_irq_worker(dev);
 #elif  defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP)
@@ -358,6 +325,15 @@ static inline void usb_kbd_poll_for_event(struct usb_device *dev)
                       1, 0, data->new, USB_KBD_BOOT_REPORT_SIZE);
        if (memcmp(data->old, data->new, USB_KBD_BOOT_REPORT_SIZE))
                usb_kbd_irq_worker(dev);
+#elif  defined(CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE)
+       struct usb_kbd_pdata *data = dev->privptr;
+       if (poll_int_queue(dev, data->intq)) {
+               usb_kbd_irq_worker(dev);
+               /* We've consumed all queued int packets, create new */
+               destroy_int_queue(dev, data->intq);
+               data->intq = create_int_queue(dev, data->intpipe, 1,
+                                     USB_KBD_BOOT_REPORT_SIZE, data->new);
+       }
 #endif
 }
 
@@ -415,7 +391,6 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
        struct usb_interface *iface;
        struct usb_endpoint_descriptor *ep;
        struct usb_kbd_pdata *data;
-       int pipe, maxp;
 
        if (dev->descriptor.bNumConfigurations != 1)
                return 0;
@@ -464,8 +439,10 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
        /* Set IRQ handler */
        dev->irq_handle = usb_kbd_irq;
 
-       pipe = usb_rcvintpipe(dev, ep->bEndpointAddress);
-       maxp = usb_maxpacket(dev, pipe);
+       data->intpipe = usb_rcvintpipe(dev, ep->bEndpointAddress);
+       data->intpktsize = min(usb_maxpacket(dev, data->intpipe),
+                              USB_KBD_BOOT_REPORT_SIZE);
+       data->intinterval = ep->bInterval;
 
        /* We found a USB Keyboard, install it. */
        usb_set_protocol(dev, iface->desc.bInterfaceNumber, 0);
@@ -474,9 +451,14 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
        usb_set_idle(dev, iface->desc.bInterfaceNumber, REPEAT_RATE, 0);
 
        debug("USB KBD: enable interrupt pipe...\n");
-       if (usb_submit_int_msg(dev, pipe, data->new,
-                              min(maxp, USB_KBD_BOOT_REPORT_SIZE),
-                              ep->bInterval) < 0) {
+#ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
+       data->intq = create_int_queue(dev, data->intpipe, 1,
+                                     USB_KBD_BOOT_REPORT_SIZE, data->new);
+       if (!data->intq) {
+#else
+       if (usb_submit_int_msg(dev, data->intpipe, data->new, data->intpktsize,
+                              data->intinterval) < 0) {
+#endif
                printf("Failed to get keyboard state from device %04x:%04x\n",
                       dev->descriptor.idVendor, dev->descriptor.idProduct);
                /* Abort, we don't want to use that non-functional keyboard. */
@@ -550,9 +532,22 @@ int drv_usb_kbd_init(void)
 int usb_kbd_deregister(int force)
 {
 #ifdef CONFIG_SYS_STDIO_DEREGISTER
-       int ret = stdio_deregister(DEVNAME, force);
-       if (ret && ret != -ENODEV)
-               return ret;
+       struct stdio_dev *dev;
+       struct usb_device *usb_kbd_dev;
+       struct usb_kbd_pdata *data;
+
+       dev = stdio_get_by_name(DEVNAME);
+       if (dev) {
+               usb_kbd_dev = (struct usb_device *)dev->priv;
+               data = usb_kbd_dev->privptr;
+               if (stdio_deregister_dev(dev, force) != 0)
+                       return 1;
+#ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
+               destroy_int_queue(usb_kbd_dev, data->intq);
+#endif
+               free(data->new);
+               free(data);
+       }
 
        return 0;
 #else
index eb7706c100c402a696a4ae57a2dae9bf3b2d2119..1411737bed8912180810c0e9cb239f4602a52bfa 100644 (file)
@@ -1351,8 +1351,11 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,
        perq = usb_stor_buf[0];
        modi = usb_stor_buf[1];
 
-       if ((perq & 0x1f) == 0x1f) {
-               /* skip unknown devices */
+       /*
+        * Skip unknown devices (0x1f) and enclosure service devices (0x0d),
+        * they would not respond to test_unit_ready .
+        */
+       if (((perq & 0x1f) == 0x1f) || ((perq & 0x1f) == 0x0d)) {
                return 0;
        }
        if ((modi&0x80) == 0x80) {
index f9922936ab17e724dab24db292d5b76b36fb9889..f0cbf21025afefaecc05eb2af5527dfae1b0e61d 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="A10_OLINUXINO_L,AXP209_POWER,SUNXI_EMAC,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
 CONFIG_FDTFILE="sun4i-a10-olinuxino-lime.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN4I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_A10_OLINUXINO_L=y
index 2aad834fa840c5b1390c3621442e9ab444240349..94fafa6b97c2edfdab573279fcf877f7df385648 100644 (file)
@@ -1,8 +1,11 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="A10S_OLINUXINO_M,AXP152_POWER,SUNXI_EMAC,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPB(10)"
+CONFIG_SYS_EXTRA_OPTIONS="AXP152_POWER,SUNXI_EMAC,USB_EHCI"
 CONFIG_FDTFILE="sun5i-a10s-olinuxino-micro.dtb"
 CONFIG_MMC_SUNXI_SLOT_EXTRA=1
+CONFIG_USB1_VBUS_PIN="PB10"
 +S:CONFIG_MMC0_CD_PIN="PG1"
 +S:CONFIG_MMC1_CD_PIN="PG13"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN5I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN5I=y
++S:CONFIG_TARGET_A10S_OLINUXINO_M=y
index 9ae7b128517b1cfc3339c189f8216a97b1b7b49c..1a994180b5427b6ed099de520962d5a985d1b20d 100644 (file)
@@ -1,5 +1,15 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="A13_OLINUXINOM,CONS_INDEX=2,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(11)"
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2,USB_EHCI"
 CONFIG_FDTFILE="sun5i-a13-olinuxino-micro.dtb"
+CONFIG_USB1_VBUS_PIN="PG11"
+CONFIG_VIDEO_HDMI=n
+CONFIG_VIDEO_VGA_VIA_LCD=y
+# For use with the Olimex 7" LCD module, adjust timings for other displays
+# Set video-mode=sunxi:800x600-24@60,monitor=lcd in the env. to enable
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PB10"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN5I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN5I=y
++S:CONFIG_TARGET_A13_OLINUXINOM=y
index 2c726f308a2b67d9ec2403acebcefec83426a89a..7df69517f6b26cc7191845004cfe13ff82fca4ca 100644 (file)
@@ -1,5 +1,15 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="A13_OLINUXINO,CONS_INDEX=2,AXP209_POWER,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(11)"
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2,AXP209_POWER,USB_EHCI"
 CONFIG_FDTFILE="sun5i-a13-olinuxino.dtb"
+CONFIG_USB1_VBUS_PIN="PG11"
+CONFIG_VIDEO_HDMI=n
+CONFIG_VIDEO_VGA_VIA_LCD=y
+# For use with the Olimex 7" LCD module, adjust timings for other displays
+# Set video-mode=sunxi:800x600-24@60,monitor=lcd in the env. to enable
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="AXP0-0"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN5I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN5I=y
++S:CONFIG_TARGET_A13_OLINUXINO=y
index 75ef87278026650dae58b97eedc16e153b1e2b28..f80b98ae90a2d37df500d941fc402b4e5f01ca83 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="A20_OLINUXINO_L2,AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-olinuxino-lime2.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_A20_OLINUXINO_L2=y
index ca79fd58aa6f8ab3252cc8666ffdcccacbcd7079..d9e66b715514830da86073f7316f2c846482810f 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="A20_OLINUXINO_L,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-olinuxino-lime.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_A20_OLINUXINO_L=y
index 0e0a7def2de600f0fc06aaf6898f3644fdd4243e..1c5a6f7a9faf1703a8d9d04dce5201647d2dc0db 100644 (file)
@@ -1,8 +1,11 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="A20_OLINUXINO_M,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-olinuxino-micro.dtb"
 CONFIG_MMC_SUNXI_SLOT_EXTRA=3
+CONFIG_VIDEO_VGA=y
 +S:CONFIG_MMC0_CD_PIN="PH1"
 +S:CONFIG_MMC3_CD_PIN="PH11"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_A20_OLINUXINO_M=y
diff --git a/configs/A3000_defconfig b/configs/A3000_defconfig
deleted file mode 100644 (file)
index e1923de..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_A3000=y
diff --git a/configs/APC405_defconfig b/configs/APC405_defconfig
deleted file mode 100644 (file)
index d9da49b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_APC405=y
diff --git a/configs/AR405_defconfig b/configs/AR405_defconfig
deleted file mode 100644 (file)
index be65ab7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_AR405=y
diff --git a/configs/ASH405_defconfig b/configs/ASH405_defconfig
deleted file mode 100644 (file)
index ee094cb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_ASH405=y
index ed06f5700c36b3bb2cfe2794453bb93812e86554..7fe9059179eb88116caa659e9033a221316a1029 100644 (file)
@@ -1,5 +1,8 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="AUXTEK_T004,AXP152_POWER,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(13)"
+CONFIG_SYS_EXTRA_OPTIONS="AXP152_POWER,USB_EHCI"
 CONFIG_FDTFILE="sun5i-a10s-auxtek-t004.dtb"
+CONFIG_USB1_VBUS_PIN="PG13"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN5I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN5I=y
++S:CONFIG_TARGET_AUXTEK_T004=y
index d59cf72eaac604ef4e39fcdeb0100d85ddc4c73e..196f6824cb422c6f43c137fb10baf0fd83fec61a 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="BANANAPI,AXP209_POWER,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPH(23),AHCI,USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPH(23),AHCI,USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-bananapi.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_BANANAPI=y
diff --git a/configs/Bananapro_defconfig b/configs/Bananapro_defconfig
new file mode 100644 (file)
index 0000000..7f9ce13
--- /dev/null
@@ -0,0 +1,9 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPH(23),AHCI,USB_EHCI"
+CONFIG_FDTFILE="sun7i-a20-bananapro.dtb"
+CONFIG_USB1_VBUS_PIN="PH0"
+CONFIG_USB2_VBUS_PIN="PH1"
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_BANANAPRO=y
diff --git a/configs/CMS700_defconfig b/configs/CMS700_defconfig
deleted file mode 100644 (file)
index dd21223..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_CMS700=y
diff --git a/configs/CPC45_ROMBOOT_defconfig b/configs/CPC45_ROMBOOT_defconfig
deleted file mode 100644 (file)
index 4aae7f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM"
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_CPC45=y
diff --git a/configs/CPC45_defconfig b/configs/CPC45_defconfig
deleted file mode 100644 (file)
index 77ae66c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_CPC45=y
diff --git a/configs/CPCI405AB_defconfig b/configs/CPCI405AB_defconfig
deleted file mode 100644 (file)
index 6550fd1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_CPCI405AB=y
diff --git a/configs/CPCI405DT_defconfig b/configs/CPCI405DT_defconfig
deleted file mode 100644 (file)
index b61f65c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_CPCI405DT=y
diff --git a/configs/CPCI405_defconfig b/configs/CPCI405_defconfig
deleted file mode 100644 (file)
index 1638e2b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_CPCI405=y
diff --git a/configs/CPCIISER4_defconfig b/configs/CPCIISER4_defconfig
deleted file mode 100644 (file)
index 2a7566d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_CPCIISER4=y
diff --git a/configs/CPU86_ROMBOOT_defconfig b/configs/CPU86_ROMBOOT_defconfig
deleted file mode 100644 (file)
index 41aa7df..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_CPU86=y
diff --git a/configs/CPU86_defconfig b/configs/CPU86_defconfig
deleted file mode 100644 (file)
index f0a4049..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_CPU86=y
diff --git a/configs/CPU87_ROMBOOT_defconfig b/configs/CPU87_ROMBOOT_defconfig
deleted file mode 100644 (file)
index ba13b40..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_CPU87=y
diff --git a/configs/CPU87_defconfig b/configs/CPU87_defconfig
deleted file mode 100644 (file)
index 86a5737..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_CPU87=y
diff --git a/configs/CSQ_CS908_defconfig b/configs/CSQ_CS908_defconfig
new file mode 100644 (file)
index 0000000..1b6cdbf
--- /dev/null
@@ -0,0 +1,16 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="USB_EHCI,SUNXI_GMAC"
+CONFIG_FDTFILE="sun6i-a31s-cs908.dtb"
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN6I=y
++S:CONFIG_TARGET_CSQ_CS908=y
++S:CONFIG_DRAM_CLK=432
++S:CONFIG_DRAM_ZQ=123
+# Ethernet phy power
++S:CONFIG_AXP221_DLDO1_VOLT=3300
+# Wifi power
++S:CONFIG_AXP221_ALDO1_VOLT=3300
+# No Vbus gpio for either usb
++S:CONFIG_USB1_VBUS_PIN=""
++S:CONFIG_USB2_VBUS_PIN=""
diff --git a/configs/CU824_defconfig b/configs/CU824_defconfig
deleted file mode 100644 (file)
index 0f22188..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_CU824=y
index 16800de2bcd3154b320d6761478cf6101e552927..f42ae5222e17022a6ccddd604c4915a0fe25df37 100644 (file)
@@ -1,4 +1,13 @@
-CONFIG_SYS_EXTRA_OPTIONS="COLOMBUS"
-CONFIG_ARM=y
-CONFIG_TARGET_SUN6I=y
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="USB_EHCI,SUNXI_GMAC"
 CONFIG_FDTFILE="sun6i-a31-colombus.dtb"
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN6I=y
++S:CONFIG_TARGET_COLOMBUS=y
++S:CONFIG_DRAM_CLK=240
++S:CONFIG_DRAM_ZQ=251
+# Wifi power
++S:CONFIG_AXP221_ALDO1_VOLT=3300
+# No Vbus gpio for usb1
++S:CONFIG_USB1_VBUS_PIN=""
diff --git a/configs/Cubieboard2_FEL_defconfig b/configs/Cubieboard2_FEL_defconfig
deleted file mode 100644 (file)
index 353b04a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD2,SPL_FEL,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
-CONFIG_FDTFILE="sun7i-a20-cubieboard2.dtb"
-+S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
index 11a0c5ff376f8747b9d89574f472c1e4ef50648c..7e7a1ca3981cd4edeca132a71a9c1716fc011149 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD2,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-cubieboard2.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_CUBIEBOARD2=y
index 8c1ff9584eadc5464056f7b534bbd0ff146c5cbc..0bc45fd2cb28af8c559d68371e1e3b82b821be9d 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD,AXP209_POWER,SUNXI_EMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
 CONFIG_FDTFILE="sun4i-a10-cubieboard.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN4I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_CUBIEBOARD=y
diff --git a/configs/Cubietruck_FEL_defconfig b/configs/Cubietruck_FEL_defconfig
deleted file mode 100644 (file)
index 23c5efb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="CUBIETRUCK,SPL_FEL,AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPH(12),USB_EHCI"
-CONFIG_FDTFILE="sun7i-a20-cubietruck.dtb"
-+S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
index 1389f2138bbd08a3cc817864d22b03f94ed08a2e..bc4441082b379669cb5edbd8a5b972de8ac92f19 100644 (file)
@@ -1,5 +1,8 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="CUBIETRUCK,AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPH(12),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPH(12),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-cubietruck.dtb"
+CONFIG_VIDEO_VGA=y
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_CUBIETRUCK=y
diff --git a/configs/DP405_defconfig b/configs/DP405_defconfig
deleted file mode 100644 (file)
index 4d48276..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_DP405=y
diff --git a/configs/DU405_defconfig b/configs/DU405_defconfig
deleted file mode 100644 (file)
index fdfe41b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_DU405=y
diff --git a/configs/DU440_defconfig b/configs/DU440_defconfig
deleted file mode 100644 (file)
index 59891fe..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_DU440=y
diff --git a/configs/ELPT860_defconfig b/configs/ELPT860_defconfig
deleted file mode 100644 (file)
index d02b313..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_ELPT860=y
diff --git a/configs/ESTEEM192E_defconfig b/configs/ESTEEM192E_defconfig
deleted file mode 100644 (file)
index e6279b8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_ESTEEM192E=y
diff --git a/configs/FPS850L_defconfig b/configs/FPS850L_defconfig
deleted file mode 100644 (file)
index e72ccdd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_FPS850L=y
diff --git a/configs/FPS860L_defconfig b/configs/FPS860L_defconfig
deleted file mode 100644 (file)
index 643da6a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_FPS860L=y
diff --git a/configs/G2000_defconfig b/configs/G2000_defconfig
deleted file mode 100644 (file)
index a01bc0f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_G2000=y
diff --git a/configs/HH405_defconfig b/configs/HH405_defconfig
deleted file mode 100644 (file)
index 1571f32..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_HH405=y
diff --git a/configs/HUB405_defconfig b/configs/HUB405_defconfig
deleted file mode 100644 (file)
index a39712e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_HUB405=y
diff --git a/configs/Hummingbird_A31_defconfig b/configs/Hummingbird_A31_defconfig
new file mode 100644 (file)
index 0000000..8896999
--- /dev/null
@@ -0,0 +1,17 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="USB_EHCI,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPA(21)"
+CONFIG_FDTFILE="sun6i-a31-hummingbird.dtb"
+CONFIG_VIDEO_VGA_VIA_LCD=y
+CONFIG_VIDEO_VGA_EXTERNAL_DAC_EN="PH25"
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN6I=y
++S:CONFIG_TARGET_HUMMINGBIRD_A31=y
++S:CONFIG_DRAM_CLK=312
++S:CONFIG_DRAM_ZQ=251
+# Wifi power
++S:CONFIG_AXP221_ALDO1_VOLT=3300
+# Vbus gpio for usb1
++S:CONFIG_USB1_VBUS_PIN="PH24"
+# No Vbus gpio for usb2
++S:CONFIG_USB2_VBUS_PIN=""
diff --git a/configs/IP860_defconfig b/configs/IP860_defconfig
deleted file mode 100644 (file)
index feb243d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_IP860=y
diff --git a/configs/IPHASE4539_defconfig b/configs/IPHASE4539_defconfig
deleted file mode 100644 (file)
index d49ea52..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_IPHASE4539=y
diff --git a/configs/IVML24_128_defconfig b/configs/IVML24_128_defconfig
deleted file mode 100644 (file)
index f0850f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="IVML24_32M"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_IVML24=y
diff --git a/configs/IVML24_256_defconfig b/configs/IVML24_256_defconfig
deleted file mode 100644 (file)
index 9c241c2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="IVML24_64M"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_IVML24=y
diff --git a/configs/IVML24_defconfig b/configs/IVML24_defconfig
deleted file mode 100644 (file)
index 0f85d43..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="IVML24_16M"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_IVML24=y
diff --git a/configs/IVMS8_128_defconfig b/configs/IVMS8_128_defconfig
deleted file mode 100644 (file)
index 685d76f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="IVMS8_32M"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_IVMS8=y
diff --git a/configs/IVMS8_256_defconfig b/configs/IVMS8_256_defconfig
deleted file mode 100644 (file)
index 63435d2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="IVMS8_64M"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_IVMS8=y
diff --git a/configs/IVMS8_defconfig b/configs/IVMS8_defconfig
deleted file mode 100644 (file)
index 3f4087b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="IVMS8_16M"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_IVMS8=y
diff --git a/configs/Ippo_q8h_defconfig b/configs/Ippo_q8h_defconfig
deleted file mode 100644 (file)
index 781f137..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="IPPO_Q8H_V5,CONS_INDEX=5"
-CONFIG_ARM=y
-CONFIG_TARGET_SUN8I=y
-CONFIG_DEFAULT_DEVICE_TREE="sun8i-a23-ippo-q8h-v5.dtb"
diff --git a/configs/Ippo_q8h_v1_2_defconfig b/configs/Ippo_q8h_v1_2_defconfig
new file mode 100644 (file)
index 0000000..0447b06
--- /dev/null
@@ -0,0 +1,18 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5"
+CONFIG_FDTFILE="sun8i-a23-ippo-q8h-v1.2.dtb"
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:167,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PH7"
+CONFIG_VIDEO_LCD_BL_EN="PH6"
+CONFIG_VIDEO_LCD_BL_PWM="PH0"
+CONFIG_USB_KEYBOARD=n
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN8I=y
++S:CONFIG_DRAM_CLK=432
+# zq = 0xf74a
++S:CONFIG_DRAM_ZQ=63306
+# Wifi power
++S:CONFIG_AXP221_DLDO1_VOLT=3300
+# aldo1 is connected to VCC-IO, VCC-PD, VCC-USB and VCC-HP
++S:CONFIG_AXP221_ALDO1_VOLT=3000
diff --git a/configs/Ippo_q8h_v5_defconfig b/configs/Ippo_q8h_v5_defconfig
new file mode 100644 (file)
index 0000000..4e82bf9
--- /dev/null
@@ -0,0 +1,19 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5"
+CONFIG_FDTFILE="sun8i-a23-ippo-q8h-v5.dtb"
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:168,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PH7"
+CONFIG_VIDEO_LCD_BL_EN="PH6"
+CONFIG_VIDEO_LCD_BL_PWM="PH0"
+CONFIG_USB_KEYBOARD=n
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN8I=y
++S:CONFIG_TARGET_IPPO_Q8H_V5=y
++S:CONFIG_DRAM_CLK=480
+# zq = 0xf777
++S:CONFIG_DRAM_ZQ=63351
+# Wifi power
++S:CONFIG_AXP221_DLDO1_VOLT=3300
+# aldo1 is connected to VCC-IO, VCC-PD, VCC-USB and VCC-HP
++S:CONFIG_AXP221_ALDO1_VOLT=3000
diff --git a/configs/KUP4K_defconfig b/configs/KUP4K_defconfig
deleted file mode 100644 (file)
index 8e9e26d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_KUP4K=y
diff --git a/configs/KUP4X_defconfig b/configs/KUP4X_defconfig
deleted file mode 100644 (file)
index 29520c9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_KUP4X=y
index efc53017897970912ff7a282dbec9b4aa83d7242..a26ff0a70f40efcb2fc9cdac035d49465c0f90c9 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="PCDUINO3,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPH(2),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPH(2),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-pcduino3.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_PCDUINO3=y
diff --git a/configs/Linksprite_pcDuino3_fdt_defconfig b/configs/Linksprite_pcDuino3_fdt_defconfig
new file mode 100644 (file)
index 0000000..a33f3a7
--- /dev/null
@@ -0,0 +1,11 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPH(2),USB_EHCI"
+CONFIG_FDTFILE="sun7i-a20-pcduino3.dtb"
+CONFIG_DM=y
+CONFIG_DEFAULT_DEVICE_TREE="sun7i-a20-pcduino3"
+CONFIG_OF_CONTROL=y
+CONFIG_OF_SEPARATE=y
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_PCDUINO3=y
diff --git a/configs/Linksprite_pcDuino_defconfig b/configs/Linksprite_pcDuino_defconfig
new file mode 100644 (file)
index 0000000..f5b0ca9
--- /dev/null
@@ -0,0 +1,7 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,USB_EHCI"
+CONFIG_FDTFILE="sun4i-a10-pcduino.dtb"
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_PCDUINO=y
diff --git a/configs/MPC8266ADS_defconfig b/configs/MPC8266ADS_defconfig
deleted file mode 100644 (file)
index 485c842..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_MPC8266ADS=y
diff --git a/configs/MSI_Primo73_defconfig b/configs/MSI_Primo73_defconfig
new file mode 100644 (file)
index 0000000..ef1adc5
--- /dev/null
@@ -0,0 +1,12 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
+CONFIG_FDTFILE="sun7i-a20-primo73.dtb"
+CONFIG_VIDEO_LCD_MODE="x:1024,y:600,depth:18,pclk_khz:60000,le:60,ri:160,up:13,lo:12,hs:100,vs:10,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PH8"
+CONFIG_VIDEO_LCD_BL_EN="PH7"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
+CONFIG_USB_KEYBOARD=n
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_MSI_PRIMO73=y
diff --git a/configs/MSI_Primo81_defconfig b/configs/MSI_Primo81_defconfig
new file mode 100644 (file)
index 0000000..b4b0f6d
--- /dev/null
@@ -0,0 +1,12 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS=""
+CONFIG_FDTFILE="sun6i-a31s-primo81.dtb"
+CONFIG_USB_KEYBOARD=n
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN6I=y
++S:CONFIG_TARGET_MSI_PRIMO81=y
++S:CONFIG_DRAM_CLK=360
++S:CONFIG_DRAM_ZQ=122
+# Wifi power
++S:CONFIG_AXP221_DLDO1_VOLT=3300
diff --git a/configs/MUSENKI_defconfig b/configs/MUSENKI_defconfig
deleted file mode 100644 (file)
index 586364c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_MUSENKI=y
diff --git a/configs/MVBLUE_defconfig b/configs/MVBLUE_defconfig
deleted file mode 100644 (file)
index f979983..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_MVBLUE=y
index 06c4cacc53b0b5cbb14fe5f549dac25a134df5e2..9cb3285a71a714eb09944cf7d7aa92eb3c446a14 100644 (file)
@@ -1,5 +1,8 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="MELE_A1000G,AXP209_POWER,SUNXI_EMAC,MACPWR=SUNXI_GPH(15),AHCI,USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,MACPWR=SUNXI_GPH(15),AHCI,USB_EHCI"
 CONFIG_FDTFILE="sun4i-a10-a1000.dtb"
+CONFIG_VIDEO_VGA=y
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN4I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_MELE_A1000G=y
index d386c79e04870c12947644d35c8d759738a0f28f..97d94542d348efa2138116e309e0339909cf326b 100644 (file)
@@ -1,5 +1,8 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="MELE_A1000,AXP209_POWER,SUNXI_EMAC,MACPWR=SUNXI_GPH(15),AHCI,USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,MACPWR=SUNXI_GPH(15),AHCI,USB_EHCI"
 CONFIG_FDTFILE="sun4i-a10-a1000.dtb"
+CONFIG_VIDEO_VGA=y
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN4I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_MELE_A1000=y
index a043ad277d79efd5546e223b57664dc8413958bb..141d565cf8cfa6e1aa25224f562431fb2669c024 100644 (file)
@@ -1,7 +1,10 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="MELE_M3,AXP209_POWER,SUNXI_GMAC,USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-m3.dtb"
+CONFIG_VIDEO_VGA=y
 +S:CONFIG_MMC_SUNXI_SLOT_EXTRA=2
 +S:CONFIG_MMC0_CD_PIN="PH1"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_MELE_M3=y
diff --git a/configs/Mele_M9_defconfig b/configs/Mele_M9_defconfig
new file mode 100644 (file)
index 0000000..e5ab0ec
--- /dev/null
@@ -0,0 +1,21 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="USB_EHCI,SUNXI_GMAC"
+CONFIG_FDTFILE="sun6i-a31-m9.dtb"
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN6I=y
++S:CONFIG_TARGET_MELE_M9=y
++S:CONFIG_DRAM_CLK=312
++S:CONFIG_DRAM_ZQ=120
+# The Mele M9 uses 3.3V for general IO
++S:CONFIG_AXP221_DCDC1_VOLT=3300
+# Ethernet phy power
++S:CONFIG_AXP221_DLDO1_VOLT=3300
+# USB hub power
++S:CONFIG_AXP221_DLDO4_VOLT=3300
+# Wifi power
++S:CONFIG_AXP221_ALDO1_VOLT=3300
+# Vbus gpio for usb1
++S:CONFIG_USB1_VBUS_PIN="PC27"
+# No Vbus gpio for usb2
++S:CONFIG_USB2_VBUS_PIN=""
index 5db4aa3a1478077d0ec52ad17d4535a9943ce8da..b8fea0124572a7aafd878e7200e641d1570e0032 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="MINI_X_1GB,AXP209_POWER,USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,USB_EHCI"
 CONFIG_FDTFILE="sun4i-a10-mini-xplus.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN4I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_MINI_X_1GB=y
index 6718dcb68cf588ad27d11c84b5ef5b81f96cc8a5..0f6bbe06b2c5d09585a334403b3dd97e91594dd3 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="MINI_X,AXP209_POWER,USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,USB_EHCI"
 CONFIG_FDTFILE="sun4i-a10-mini-xplus.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN4I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_MINI_X=y
diff --git a/configs/NETVIA_V2_defconfig b/configs/NETVIA_V2_defconfig
deleted file mode 100644 (file)
index 2715910..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="NETVIA_VERSION=2"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_NETVIA=y
diff --git a/configs/NETVIA_defconfig b/configs/NETVIA_defconfig
deleted file mode 100644 (file)
index 27c8f2b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="NETVIA_VERSION=1"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_NETVIA=y
diff --git a/configs/NSCU_defconfig b/configs/NSCU_defconfig
deleted file mode 100644 (file)
index be96cbd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_NSCU=y
diff --git a/configs/OCRTC_defconfig b/configs/OCRTC_defconfig
deleted file mode 100644 (file)
index f2fd0c5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_OCRTC=y
diff --git a/configs/PCI405_defconfig b/configs/PCI405_defconfig
deleted file mode 100644 (file)
index 48f19fe..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_PCI405=y
diff --git a/configs/PM825_BIGFLASH_defconfig b/configs/PM825_BIGFLASH_defconfig
deleted file mode 100644 (file)
index 75efcdd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PCI,FLASH_32MB,SYS_TEXT_BASE=0x40000000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM825_ROMBOOT_BIGFLASH_defconfig b/configs/PM825_ROMBOOT_BIGFLASH_defconfig
deleted file mode 100644 (file)
index 28ff17f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PCI,BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM825_ROMBOOT_defconfig b/configs/PM825_ROMBOOT_defconfig
deleted file mode 100644 (file)
index f5233fa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM825_defconfig b/configs/PM825_defconfig
deleted file mode 100644 (file)
index 459cdba..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PCI,SYS_TEXT_BASE=0xFF000000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_BIGFLASH_defconfig b/configs/PM826_BIGFLASH_defconfig
deleted file mode 100644 (file)
index 0acf9d2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="FLASH_32MB,SYS_TEXT_BASE=0x40000000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_ROMBOOT_BIGFLASH_defconfig b/configs/PM826_ROMBOOT_BIGFLASH_defconfig
deleted file mode 100644 (file)
index af8d4c9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_ROMBOOT_defconfig b/configs/PM826_ROMBOOT_defconfig
deleted file mode 100644 (file)
index 7d3e1c3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_defconfig b/configs/PM826_defconfig
deleted file mode 100644 (file)
index b2f9d34..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF000000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM826=y
diff --git a/configs/PM828_PCI_defconfig b/configs/PM828_PCI_defconfig
deleted file mode 100644 (file)
index 9b68562..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PCI"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM828=y
diff --git a/configs/PM828_ROMBOOT_PCI_defconfig b/configs/PM828_ROMBOOT_PCI_defconfig
deleted file mode 100644 (file)
index 8120058..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM828=y
diff --git a/configs/PM828_ROMBOOT_defconfig b/configs/PM828_ROMBOOT_defconfig
deleted file mode 100644 (file)
index 7c8980e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM828=y
diff --git a/configs/PM828_defconfig b/configs/PM828_defconfig
deleted file mode 100644 (file)
index 15887ca..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PM828=y
diff --git a/configs/PMC405_defconfig b/configs/PMC405_defconfig
deleted file mode 100644 (file)
index d82117c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_PMC405=y
diff --git a/configs/R360MPI_defconfig b/configs/R360MPI_defconfig
deleted file mode 100644 (file)
index 290f694..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_R360MPI=y
diff --git a/configs/RRvision_LCD_defconfig b/configs/RRvision_LCD_defconfig
deleted file mode 100644 (file)
index 4d61187..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="LCD,SHARP_LQ104V7DS01"
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_RRVISION=y
diff --git a/configs/RRvision_defconfig b/configs/RRvision_defconfig
deleted file mode 100644 (file)
index bdb4d7a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_RRVISION=y
diff --git a/configs/SM850_defconfig b/configs/SM850_defconfig
deleted file mode 100644 (file)
index 6a50316..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_SM850=y
diff --git a/configs/SPD823TS_defconfig b/configs/SPD823TS_defconfig
deleted file mode 100644 (file)
index 1b218c6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_SPD823TS=y
diff --git a/configs/Sandpoint8240_defconfig b/configs/Sandpoint8240_defconfig
deleted file mode 100644 (file)
index 332e4c0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_SANDPOINT8240=y
diff --git a/configs/Sandpoint8245_defconfig b/configs/Sandpoint8245_defconfig
deleted file mode 100644 (file)
index b36757c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_SANDPOINT8245=y
diff --git a/configs/T1024QDS_D4_SECURE_BOOT_defconfig b/configs/T1024QDS_D4_SECURE_BOOT_defconfig
new file mode 100644 (file)
index 0000000..d86ae05
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T102XQDS=y
diff --git a/configs/T1024QDS_NAND_defconfig b/configs/T1024QDS_NAND_defconfig
new file mode 100644 (file)
index 0000000..acbbe43
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T102XQDS=y
diff --git a/configs/T1024QDS_SDCARD_defconfig b/configs/T1024QDS_SDCARD_defconfig
new file mode 100644 (file)
index 0000000..82c6e19
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T102XQDS=y
diff --git a/configs/T1024QDS_SECURE_BOOT_defconfig b/configs/T1024QDS_SECURE_BOOT_defconfig
new file mode 100644 (file)
index 0000000..b932619
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T102XQDS=y
diff --git a/configs/T1024QDS_SPIFLASH_defconfig b/configs/T1024QDS_SPIFLASH_defconfig
new file mode 100644 (file)
index 0000000..52aeac7
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T102XQDS=y
diff --git a/configs/T1024RDB_NAND_defconfig b/configs/T1024RDB_NAND_defconfig
new file mode 100644 (file)
index 0000000..73d14ab
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T102XRDB=y
diff --git a/configs/T1024RDB_SDCARD_defconfig b/configs/T1024RDB_SDCARD_defconfig
new file mode 100644 (file)
index 0000000..3599f1d
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T102XRDB=y
diff --git a/configs/T1024RDB_SECURE_BOOT_defconfig b/configs/T1024RDB_SECURE_BOOT_defconfig
new file mode 100644 (file)
index 0000000..8377260
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T102XRDB=y
diff --git a/configs/T1024RDB_SPIFLASH_defconfig b/configs/T1024RDB_SPIFLASH_defconfig
new file mode 100644 (file)
index 0000000..c8ea985
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T102XRDB=y
diff --git a/configs/T1024RDB_defconfig b/configs/T1024RDB_defconfig
new file mode 100644 (file)
index 0000000..e19e404
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T102XRDB=y
diff --git a/configs/TASREG_defconfig b/configs/TASREG_defconfig
deleted file mode 100644 (file)
index 2bb0421..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_M68K=y
-CONFIG_TARGET_TASREG=y
diff --git a/configs/TK885D_defconfig b/configs/TK885D_defconfig
deleted file mode 100644 (file)
index 01bc6dc..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_TK885D=y
diff --git a/configs/VOH405_defconfig b/configs/VOH405_defconfig
deleted file mode 100644 (file)
index 1fbe91a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_VOH405=y
diff --git a/configs/VoVPN-GW_66MHz_defconfig b/configs/VoVPN-GW_66MHz_defconfig
deleted file mode 100644 (file)
index 4eb931e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="CLKIN_66MHz"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_VOVPN_GW=y
diff --git a/configs/WUH405_defconfig b/configs/WUH405_defconfig
deleted file mode 100644 (file)
index dadea20..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_WUH405=y
index 0655e60372adb4a29802f9f4a5636b78729a5f40..d722306d4dcc4ee0dabef281d5b9d7421236d51e 100644 (file)
@@ -1,3 +1,3 @@
 CONFIG_ARM=y
-+S:CONFIG_RMOBILE=y
+CONFIG_RMOBILE=y
 CONFIG_TARGET_ALT=y
index 41f31cc02e90ad9f59ffbe28875e1cd7c97c76b5..be901633acd3ea868fa98804920347cde559336f 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="NAND,NOR"
+CONFIG_SYS_EXTRA_OPTIONS="NAND"
 CONFIG_CONS_INDEX=1
 +S:CONFIG_ARM=y
 +S:CONFIG_TARGET_AM335X_EVM=y
+CONFIG_NOR=y
index 7dbfa277e0a289ed04faf729ae6d2fea059268a4..47ff6cdb16dc4adeebe5e2ae7f1285318036f4ad 100644 (file)
@@ -1,4 +1,5 @@
-CONFIG_SYS_EXTRA_OPTIONS="NOR,NOR_BOOT"
 CONFIG_CONS_INDEX=1
 CONFIG_ARM=y
 CONFIG_TARGET_AM335X_EVM=y
+CONFIG_NOR=y
+CONFIG_NOR_BOOT=y
index 9b17895623b4e9337829a6080f3e7596543f6ea1..22dc1f8a4175ddeacdfc14711c064ff48d4a31a5 100644 (file)
@@ -1,3 +1,3 @@
 CONFIG_ARM=y
-+S:CONFIG_RMOBILE=y
+CONFIG_RMOBILE=y
 CONFIG_TARGET_ARMADILLO_800EVA=y
diff --git a/configs/atc_defconfig b/configs/atc_defconfig
deleted file mode 100644 (file)
index 967be47..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_ATC=y
index 6f64875b4a2021bf3f6963b48cfb1dc37bbb1f7e..6ca7c57186af556755b8293dbab6640ce3a30933 100644 (file)
@@ -1,5 +1,8 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="BA10_TV_BOX,AXP209_POWER,SUNXI_EMAC,USB_EHCI,SUNXI_USB_VBUS1_GPIO=SUNXI_GPH(12)"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,USB_EHCI"
 CONFIG_FDTFILE="sun4i-a10-ba10-tvbox.dtb"
+CONFIG_USB1_VBUS_PIN="PH12"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN4I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN4I=y
++S:CONFIG_TARGET_BA10_TV_BOX=y
diff --git a/configs/bcm11130_defconfig b/configs/bcm11130_defconfig
new file mode 100644 (file)
index 0000000..f8c9f03
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_MMC_ENV_DEV=0"
+CONFIG_ARM=y
+CONFIG_TARGET_BCM28155_AP=y
diff --git a/configs/bcm11130_nand_defconfig b/configs/bcm11130_nand_defconfig
new file mode 100644 (file)
index 0000000..39cb709
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ARM=y
+CONFIG_TARGET_BCM28155_AP=y
diff --git a/configs/bcm911360_entphn-ns_defconfig b/configs/bcm911360_entphn-ns_defconfig
new file mode 100644 (file)
index 0000000..6f5c154
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x20000000,ARMV7_NONSEC"
+CONFIG_ARM=y
+CONFIG_TARGET_BCMCYGNUS=y
diff --git a/configs/bcm911360_entphn_defconfig b/configs/bcm911360_entphn_defconfig
new file mode 100644 (file)
index 0000000..37b5846
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x20000000"
+CONFIG_ARM=y
+CONFIG_TARGET_BCMCYGNUS=y
diff --git a/configs/bcm911360k_defconfig b/configs/bcm911360k_defconfig
new file mode 100644 (file)
index 0000000..527e407
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000"
+CONFIG_ARM=y
+CONFIG_TARGET_BCMCYGNUS=y
diff --git a/configs/bcm958300k-ns_defconfig b/configs/bcm958300k-ns_defconfig
new file mode 100644 (file)
index 0000000..0e3aaa7
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000,ARMV7_NONSEC"
+CONFIG_ARM=y
+CONFIG_TARGET_BCMCYGNUS=y
index 066739db8bf0781be5745ee2c3f4f1fc702f1f27..527e4072c9211496231017dce134b5f9f31ac8ea 100644 (file)
@@ -1,3 +1,3 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x20000000"
+CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000"
 CONFIG_ARM=y
-CONFIG_TARGET_BCM958300K=y
+CONFIG_TARGET_BCMCYGNUS=y
diff --git a/configs/bcm958305k_defconfig b/configs/bcm958305k_defconfig
new file mode 100644 (file)
index 0000000..527e407
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000"
+CONFIG_ARM=y
+CONFIG_TARGET_BCMCYGNUS=y
index 8a45e515fbbe8b2b441fd7c4dd0e3599c02c6398..7c8630096822986c6cc968312b682bfd69deb97d 100644 (file)
@@ -1,3 +1,3 @@
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x01000000"
 CONFIG_ARM=y
-CONFIG_TARGET_BCM958622HR=y
+CONFIG_TARGET_BCMNSP=y
diff --git a/configs/beagle_x15_defconfig b/configs/beagle_x15_defconfig
new file mode 100644 (file)
index 0000000..872ab63
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=3"
++S:CONFIG_ARM=y
++S:CONFIG_OMAP54XX=y
++S:CONFIG_TARGET_BEAGLE_X15=y
diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
new file mode 100644 (file)
index 0000000..e956835
--- /dev/null
@@ -0,0 +1,11 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xfff00000"
+CONFIG_X86=y
+CONFIG_TARGET_CHROMEBOOK_LINK=y
+CONFIG_OF_CONTROL=y
+CONFIG_OF_SEPARATE=y
+CONFIG_DEFAULT_DEVICE_TREE="chromebook_link"
+CONFIG_HAVE_MRC=y
+CONFIG_SMM_TSEG_SIZE=0x800000
+CONFIG_VIDEO_X86=y
+CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
+CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
index 50c06f7feb78bd6336bcb6906baa4c244c697898..3c0d64fecbc6dcbfcdb21afe4330afd86f490b66 100644 (file)
@@ -1,4 +1,4 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/compulab/cm_fx6/imximage.cfg,MX6QDL,SPL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL,SPL"
 +S:CONFIG_ARM=y
 +S:CONFIG_TARGET_CM_FX6=y
diff --git a/configs/cm_t3517_defconfig b/configs/cm_t3517_defconfig
new file mode 100644 (file)
index 0000000..4000d2c
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SPL=n
++S:CONFIG_ARM=y
++S:CONFIG_OMAP34XX=y
++S:CONFIG_TARGET_CM_T3517=y
diff --git a/configs/cogent_mpc8260_defconfig b/configs/cogent_mpc8260_defconfig
deleted file mode 100644 (file)
index dc297f1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_COGENT_MPC8260=y
diff --git a/configs/cogent_mpc8xx_defconfig b/configs/cogent_mpc8xx_defconfig
deleted file mode 100644 (file)
index 2fe7a5a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_COGENT_MPC8XX=y
index 6249db7cb0cb0909cfd3129b8592719d8f392473..3cc034a98bbb7508cb95d722036ccb57782321f9 100644 (file)
@@ -2,4 +2,3 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x01110000"
 CONFIG_X86=y
 CONFIG_TARGET_COREBOOT=y
 CONFIG_OF_CONTROL=y
-CONFIG_DEFAULT_DEVICE_TREE="link"
index 3fc8edb777e4c878e26b69678ce710efe528e030..5d60847523487cac5e2e9421d9e6c6ff3fa2ce9e 100644 (file)
@@ -1,3 +1,4 @@
+CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,SYS_USE_NANDFLASH"
-CONFIG_ARM=y
-CONFIG_TARGET_CORVUS=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_CORVUS=y
diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
new file mode 100644 (file)
index 0000000..ce90553
--- /dev/null
@@ -0,0 +1,6 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xfff00000"
+CONFIG_X86=y
+CONFIG_TARGET_CROWNBAY=y
+CONFIG_OF_CONTROL=y
+CONFIG_OF_SEPARATE=y
+CONFIG_DEFAULT_DEVICE_TREE="crownbay"
index 7c95629cfb4f2c8b5dd4fde1bff9c877fe1b2d83..aa4d338d435f99acb91468e6c493154d17715be2 100644 (file)
@@ -1,3 +1,4 @@
 CONFIG_SYS_EXTRA_OPTIONS="DBAU1000"
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
+CONFIG_SYS_BIG_ENDIAN=y
index 506f5da8cac13d97c4b05e3ffb8fad399c459d1f..aac9f032b02ee3740d09dbf4d856ed17182042f1 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="DBAU1100"
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_DBAU1100=y
index 5a02a78610ed0e2947c3deed0202127c9236d2f6..d96de13ff991eba3dd0eb3c357ce128e47405387 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="DBAU1500"
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_DBAU1500=y
index 90150235244414e671185a8586e0152a2279b73e..a2dfe18c784d85ae50d1848c8042ece1ed3318c4 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="DBAU1550"
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_DBAU1550=y
index 53b35ce60f58d68008f9eea00e3d925cfb7c08ab..767326f6d46207b93a70f42e2576976c184c9dac 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="DBAU1550,SYS_LITTLE_ENDIAN"
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
+CONFIG_SYS_LITTLE_ENDIAN=y
+CONFIG_DBAU1550=y
diff --git a/configs/eXalion_defconfig b/configs/eXalion_defconfig
deleted file mode 100644 (file)
index 9d7e090..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_EXALION=y
diff --git a/configs/ep8260_defconfig b/configs/ep8260_defconfig
deleted file mode 100644 (file)
index 1cce900..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_EP8260=y
diff --git a/configs/ep82xxm_defconfig b/configs/ep82xxm_defconfig
deleted file mode 100644 (file)
index 0842d2d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_EP82XXM=y
diff --git a/configs/gose_defconfig b/configs/gose_defconfig
new file mode 100644 (file)
index 0000000..54a56f5
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_ARM=y
+CONFIG_RMOBILE=y
+CONFIG_TARGET_GOSE=y
index 6eb02ad12319dab508d72e859fc65e21c8108758..b59d07772fcaac177fa7553dd2fcca79e10d0d6f 100644 (file)
@@ -1,2 +1,3 @@
+CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_SPARC=y
 CONFIG_TARGET_GR_CPCI_AX2000=y
index 6e1eb83c770696c8043a9a1dbfa03eed35810194..2c69efa60524e487bb035235f5522c611625c06f 100644 (file)
@@ -1,2 +1,3 @@
+CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_SPARC=y
 CONFIG_TARGET_GR_EP2S60=y
index da846db371b42a9ece42d6280374f20d97fcb858..fecdd2507c21132cf5650d653ab2d892d661db2e 100644 (file)
@@ -1,2 +1,3 @@
+CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_SPARC=y
 CONFIG_TARGET_GR_XC3S_1500=y
index 2a7e8e70575876f6a1a76cba367e1e159cc092f4..e3ffd69f194363b5d2069d1c63e3fb5b42718370 100644 (file)
@@ -1,2 +1,3 @@
+CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_SPARC=y
 CONFIG_TARGET_GRSIM=y
index e91eb968fecee18ef9fcb35183d1633374841948..6090e34e67780fc3f37293bd84b2e66a06f889bc 100644 (file)
@@ -1,2 +1,3 @@
+CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_SPARC=y
 CONFIG_TARGET_GRSIM_LEON2=y
diff --git a/configs/gw8260_defconfig b/configs/gw8260_defconfig
deleted file mode 100644 (file)
index a59ec3a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_GW8260=y
index f18532938f3ec2320d2148a69d8340572622985d..4cddbdd65535657f8ca7d7d2cb41cccea0c4952f 100644 (file)
@@ -1,4 +1,4 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
 +S:CONFIG_ARM=y
 +S:CONFIG_TARGET_GW_VENTANA=y
diff --git a/configs/hermes_defconfig b/configs/hermes_defconfig
deleted file mode 100644 (file)
index a923a61..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_HERMES=y
diff --git a/configs/hmi1001_defconfig b/configs/hmi1001_defconfig
deleted file mode 100644 (file)
index a351dbe..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_HMI1001=y
diff --git a/configs/hrcon_defconfig b/configs/hrcon_defconfig
new file mode 100644 (file)
index 0000000..69c65ba
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_HRCON=y
index 2ef0f9182871542210e8e832683e6a20d4ba9a5f..5f5037e6982e8a095e2fe1b8e4702ed10ff7a0bb 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="I12_TVBOX,AXP209_POWER,SUNXI_GMAC,MACPWR=SUNXI_GPH(21),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,MACPWR=SUNXI_GPH(21),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-i12-tvbox.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_I12_TVBOX=y
index d59ff3dcdeef0143ff40661488272d1c345e27e6..35f605cb74075a6b0761351329b19e197952a769 100644 (file)
@@ -1,3 +1,3 @@
 CONFIG_ARM=y
-+S:CONFIG_RMOBILE=y
+CONFIG_RMOBILE=y
 CONFIG_TARGET_KOELSCH=y
index d4d340f4bd96031a1a187bd7c60987b434ad5f73..20656dd61dd10e35656f0690df3157cdbbd8156f 100644 (file)
@@ -1,3 +1,3 @@
 CONFIG_ARM=y
-+S:CONFIG_RMOBILE=y
+CONFIG_RMOBILE=y
 CONFIG_TARGET_KZM9G=y
index 9a32d6b16894cdd26fb2f2bd8a6f7c334596090b..8b4aeea9a893fda0217271dbd506a22f08d15c80 100644 (file)
@@ -1,3 +1,3 @@
 CONFIG_ARM=y
-+S:CONFIG_RMOBILE=y
+CONFIG_RMOBILE=y
 CONFIG_TARGET_LAGER=y
diff --git a/configs/ls1021aqds_nand_defconfig b/configs/ls1021aqds_nand_defconfig
new file mode 100644 (file)
index 0000000..dad5274
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_LS1021AQDS=y
diff --git a/configs/ls1021aqds_qspi_defconfig b/configs/ls1021aqds_qspi_defconfig
new file mode 100644 (file)
index 0000000..05ec8e6
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_LS1021AQDS=y
diff --git a/configs/ls1021aqds_sdcard_defconfig b/configs/ls1021aqds_sdcard_defconfig
new file mode 100644 (file)
index 0000000..e03c3b4
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_LS1021AQDS=y
diff --git a/configs/ls1021atwr_qspi_defconfig b/configs/ls1021atwr_qspi_defconfig
new file mode 100644 (file)
index 0000000..611f6e8
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_LS1021ATWR=y
diff --git a/configs/ls1021atwr_sdcard_defconfig b/configs/ls1021atwr_sdcard_defconfig
new file mode 100644 (file)
index 0000000..0eb556a
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_LS1021ATWR=y
diff --git a/configs/lwmon_defconfig b/configs/lwmon_defconfig
deleted file mode 100644 (file)
index 128ff5f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_LWMON=y
index f3788b6db1fdd17a4ea2e8409503cbabdd86f01d..5a178a76b31a6cf709cd0af3844894caa9a8e14d 100644 (file)
@@ -1,3 +1,3 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_BIG_ENDIAN"
 CONFIG_MIPS=y
 CONFIG_TARGET_MALTA=y
+CONFIG_SYS_BIG_ENDIAN=y
index 97d0e899da345d3e574ccc6bd87171ed0de42f09..011525fc2b5344dbbcacceda08427736bf47fd3e 100644 (file)
@@ -1,3 +1,3 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_LITTLE_ENDIAN"
 CONFIG_MIPS=y
 CONFIG_TARGET_MALTA=y
+CONFIG_SYS_LITTLE_ENDIAN=y
diff --git a/configs/mcc200_COM12_SDRAM_defconfig b/configs/mcc200_COM12_SDRAM_defconfig
deleted file mode 100644 (file)
index be6dbd7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12,MCC200_SDRAM"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_COM12_defconfig b/configs/mcc200_COM12_defconfig
deleted file mode 100644 (file)
index 6ed8635..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_COM12_highboot_SDRAM_defconfig b/configs/mcc200_COM12_highboot_SDRAM_defconfig
deleted file mode 100644 (file)
index 5f93702..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_COM12_highboot_defconfig b/configs/mcc200_COM12_highboot_defconfig
deleted file mode 100644 (file)
index 7abb0a4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_SDRAM_defconfig b/configs/mcc200_SDRAM_defconfig
deleted file mode 100644 (file)
index 37761b5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="MCC200_SDRAM"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_defconfig b/configs/mcc200_defconfig
deleted file mode 100644 (file)
index b6aafec..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_highboot_SDRAM_defconfig b/configs/mcc200_highboot_SDRAM_defconfig
deleted file mode 100644 (file)
index 94d33e5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_highboot_defconfig b/configs/mcc200_highboot_defconfig
deleted file mode 100644 (file)
index f863dd9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFFF00000"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/muas3001_defconfig b/configs/muas3001_defconfig
deleted file mode 100644 (file)
index e1056bd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_MUAS3001=y
diff --git a/configs/muas3001_dev_defconfig b/configs/muas3001_dev_defconfig
deleted file mode 100644 (file)
index a62019c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="MUAS_DEV_BOARD"
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_MUAS3001=y
diff --git a/configs/mucmc52_defconfig b/configs/mucmc52_defconfig
deleted file mode 100644 (file)
index 1e49695..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MUCMC52=y
diff --git a/configs/mx6sabresd_spl_defconfig b/configs/mx6sabresd_spl_defconfig
new file mode 100644 (file)
index 0000000..12e7844
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6Q"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX6SABRESD=y
+
diff --git a/configs/mx6slevk_spinor_defconfig b/configs/mx6slevk_spinor_defconfig
new file mode 100644 (file)
index 0000000..93efe73
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL,SYS_BOOT_SPINOR"
+CONFIG_ARM=y
+CONFIG_TARGET_MX6SLEVK=y
diff --git a/configs/novena_defconfig b/configs/novena_defconfig
new file mode 100644 (file)
index 0000000..b8fd97f
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_KOSAGI_NOVENA=y
diff --git a/configs/nyan-big_defconfig b/configs/nyan-big_defconfig
new file mode 100644 (file)
index 0000000..ec79b5b
--- /dev/null
@@ -0,0 +1,5 @@
++S:CONFIG_ARM=y
++S:CONFIG_TEGRA=y
++S:CONFIG_TEGRA124=y
++S:CONFIG_TARGET_NYAN_BIG=y
+CONFIG_DEFAULT_DEVICE_TREE="tegra124-nyan-big"
diff --git a/configs/odroid-xu3_defconfig b/configs/odroid-xu3_defconfig
new file mode 100644 (file)
index 0000000..74aa0cf
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_ARM=y
+CONFIG_ARCH_EXYNOS=y
+CONFIG_TARGET_ODROID_XU3=y
+CONFIG_DEFAULT_DEVICE_TREE="exynos5422-odroidxu3"
index e226358fe2d32ad68bc94c0de270cff97af83ad4..72c22a0876b10c2c5432d952f3b298bbbfb79af5 100644 (file)
@@ -1,3 +1,4 @@
 CONFIG_SYS_EXTRA_OPTIONS="PB1000"
 CONFIG_MIPS=y
 CONFIG_TARGET_PB1X00=y
+CONFIG_SYS_LITTLE_ENDIAN=y
diff --git a/configs/peach-pi_defconfig b/configs/peach-pi_defconfig
new file mode 100644 (file)
index 0000000..8ada0db
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_ARCH_EXYNOS=y
++S:CONFIG_TARGET_PEACH_PI=y
+CONFIG_DEFAULT_DEVICE_TREE="exynos5800-peach-pi"
index e6aba422f811940b81784c591201b5e743240d4f..2e9dd00c1d8baef2c5dc0e9fcc94f11130b8211f 100644 (file)
@@ -1,11 +1,40 @@
-CONFIG_SPL=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_UNIPHIER=y
 +S:CONFIG_MACH_PH1_LD4=y
++S:CONFIG_DCC_MICRO_SUPPORT_CARD=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BDI=y
+CONFIG_CMD_CONSOLE=y
+CONFIG_CMD_BOOTD=y
+CONFIG_CMD_RUN=y
+CONFIG_CMD_IMI=y
+CONFIG_CMD_IMLS=y
+CONFIG_CMD_EDITENV=y
+CONFIG_CMD_SAVEENV=y
+CONFIG_CMD_MEMORY=y
+CONFIG_CMD_LOADB=y
+CONFIG_CMD_LOADS=y
+CONFIG_CMD_FLASH=y
+CONFIG_CMD_NAND=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_ECHO=y
+CONFIG_CMD_ITEST=y
+CONFIG_CMD_SOURCE=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_NFS=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_TIME=y
+CONFIG_DEFAULT_DEVICE_TREE="uniphier-ph1-ld4-ref"
 CONFIG_DM=y
 CONFIG_NAND_DENALI=y
 CONFIG_SYS_NAND_DENALI_64BIT=y
 CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES=8
 CONFIG_DM_SERIAL=y
 CONFIG_UNIPHIER_SERIAL=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
 S:CONFIG_SPL_NAND_DENALI=y
index 334ec4bbdff8ff9af4724770dc19d9a66524a711..5dca64bf88ea42472d07cd352b02a05ee2acb31c 100644 (file)
@@ -1,11 +1,40 @@
-CONFIG_SPL=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_UNIPHIER=y
 +S:CONFIG_MACH_PH1_PRO4=y
++S:CONFIG_DCC_MICRO_SUPPORT_CARD=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BDI=y
+CONFIG_CMD_CONSOLE=y
+CONFIG_CMD_BOOTD=y
+CONFIG_CMD_RUN=y
+CONFIG_CMD_IMI=y
+CONFIG_CMD_IMLS=y
+CONFIG_CMD_EDITENV=y
+CONFIG_CMD_SAVEENV=y
+CONFIG_CMD_MEMORY=y
+CONFIG_CMD_LOADB=y
+CONFIG_CMD_LOADS=y
+CONFIG_CMD_FLASH=y
+CONFIG_CMD_NAND=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_ECHO=y
+CONFIG_CMD_ITEST=y
+CONFIG_CMD_SOURCE=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_NFS=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_TIME=y
+CONFIG_DEFAULT_DEVICE_TREE="uniphier-ph1-pro4-ref"
 CONFIG_DM=y
 CONFIG_NAND_DENALI=y
 CONFIG_SYS_NAND_DENALI_64BIT=y
 CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES=8
 CONFIG_DM_SERIAL=y
 CONFIG_UNIPHIER_SERIAL=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
 S:CONFIG_SPL_NAND_DENALI=y
index 4e8f354c9b596a30fe5eba2429477e1ef0d9b17a..2a6e334506a6e84722e7fac1cab8cb424b7b0248 100644 (file)
@@ -1,11 +1,40 @@
-CONFIG_SPL=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_UNIPHIER=y
 +S:CONFIG_MACH_PH1_SLD8=y
++S:CONFIG_DCC_MICRO_SUPPORT_CARD=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BDI=y
+CONFIG_CMD_CONSOLE=y
+CONFIG_CMD_BOOTD=y
+CONFIG_CMD_RUN=y
+CONFIG_CMD_IMI=y
+CONFIG_CMD_IMLS=y
+CONFIG_CMD_EDITENV=y
+CONFIG_CMD_SAVEENV=y
+CONFIG_CMD_MEMORY=y
+CONFIG_CMD_LOADB=y
+CONFIG_CMD_LOADS=y
+CONFIG_CMD_FLASH=y
+CONFIG_CMD_NAND=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_ECHO=y
+CONFIG_CMD_ITEST=y
+CONFIG_CMD_SOURCE=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_NFS=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_TIME=y
+CONFIG_DEFAULT_DEVICE_TREE="uniphier-ph1-sld8-ref"
 CONFIG_DM=y
 CONFIG_NAND_DENALI=y
 CONFIG_SYS_NAND_DENALI_64BIT=y
 CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES=8
 CONFIG_DM_SERIAL=y
 CONFIG_UNIPHIER_SERIAL=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
 S:CONFIG_SPL_NAND_DENALI=y
diff --git a/configs/ppmc8260_defconfig b/configs/ppmc8260_defconfig
deleted file mode 100644 (file)
index e8eb4f7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_PPMC8260=y
diff --git a/configs/prs200_DDR_defconfig b/configs/prs200_DDR_defconfig
deleted file mode 100644 (file)
index 541fb99..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PRS200"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/prs200_defconfig b/configs/prs200_defconfig
deleted file mode 100644 (file)
index a094a08..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PRS200,MCC200_SDRAM"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/prs200_highboot_DDR_defconfig b/configs/prs200_highboot_DDR_defconfig
deleted file mode 100644 (file)
index b8eb8d4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PRS200,SYS_TEXT_BASE=0xFFF00000"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
diff --git a/configs/prs200_highboot_defconfig b/configs/prs200_highboot_defconfig
deleted file mode 100644 (file)
index 8d68cc0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_SYS_EXTRA_OPTIONS="PRS200,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM"
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_MCC200=y
index 2948355769870d02a60d3d9befe81c5084e85032..3608bbe5524b81780c34865bdb20184cea867438 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_BIG_ENDIAN"
 CONFIG_MIPS=y
-CONFIG_TARGET_QEMU_MIPS64=y
+CONFIG_TARGET_QEMU_MIPS=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_CPU_MIPS64_R1=y
index 13a039f0b81d9ea468f5738c008ca46004a921f7..a9ebd7b5ff203332141e0e0edc75c6ffb75a60fd 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_LITTLE_ENDIAN"
 CONFIG_MIPS=y
-CONFIG_TARGET_QEMU_MIPS64=y
+CONFIG_TARGET_QEMU_MIPS=y
+CONFIG_SYS_LITTLE_ENDIAN=y
+CONFIG_CPU_MIPS64_R1=y
index 6b2c0290e97102d44a433ec8c689a92f990cfe22..f58dd2200ad5a74f84f1554850d85d1ef281d736 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_BIG_ENDIAN"
 CONFIG_MIPS=y
 CONFIG_TARGET_QEMU_MIPS=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_CPU_MIPS32_R2=y
index 57c87016c4d9b3f302d77213fc5b5a8b21d48765..84a45116fade481378cb687f3dfeda1e89ed6146 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="SYS_LITTLE_ENDIAN"
 CONFIG_MIPS=y
 CONFIG_TARGET_QEMU_MIPS=y
+CONFIG_SYS_LITTLE_ENDIAN=y
+CONFIG_CPU_MIPS32_R2=y
index a8d4bb8845f882810643adac4027f1700b0428a7..70f8159b39cfc8e2b4841e4dc88545ae6fcc7619 100644 (file)
@@ -1,5 +1,7 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="QT840A,AXP209_POWER,SUNXI_GMAC,MACPWR=SUNXI_GPH(21),USB_EHCI"
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,MACPWR=SUNXI_GPH(21),USB_EHCI"
 CONFIG_FDTFILE="sun7i-a20-i12-tvbox.dtb"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN7I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN7I=y
++S:CONFIG_TARGET_QT840A=y
index 6aba94201e836619c7bfe04dcebe1d14e2cfc42c..b9fd59c16a70aafcebbe64e44218c83e65758356 100644 (file)
@@ -1,5 +1,8 @@
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="R7DONGLE,AXP152_POWER,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(13)"
+CONFIG_SYS_EXTRA_OPTIONS="AXP152_POWER,USB_EHCI"
 CONFIG_FDTFILE="sun5i-a10s-r7-tv-dongle.dtb"
+CONFIG_USB1_VBUS_PIN="PG13"
 +S:CONFIG_ARM=y
-+S:CONFIG_TARGET_SUN5I=y
++S:CONFIG_ARCH_SUNXI=y
++S:CONFIG_MACH_SUN5I=y
++S:CONFIG_TARGET_R7DONGLE=y
diff --git a/configs/rpi_b_defconfig b/configs/rpi_b_defconfig
deleted file mode 100644 (file)
index 9a4705e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_RPI_B=y
diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig
new file mode 100644 (file)
index 0000000..9379cf0
--- /dev/null
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_RPI=y
diff --git a/configs/sacsng_defconfig b/configs/sacsng_defconfig
deleted file mode 100644 (file)
index 91cca23..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC8260=y
-CONFIG_TARGET_SACSNG=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
new file mode 100644 (file)
index 0000000..3720f3c
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D4_XPLAINED=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
new file mode 100644 (file)
index 0000000..5e13da7
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D4_XPLAINED=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
new file mode 100644 (file)
index 0000000..3a4607c
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D4_XPLAINED=y
diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
new file mode 100644 (file)
index 0000000..16a5ed7
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D4EK=y
diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
new file mode 100644 (file)
index 0000000..8b7fbc3
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D4EK=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
new file mode 100644 (file)
index 0000000..63e9b6c
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D4EK=y
index 124154cc96237ca966ebf9e196c2889eda121720..1f7c6d02845c3f67d03f8499a2245e0d3b1aa189 100644 (file)
@@ -1,2 +1,3 @@
 CONFIG_SH=y
+CONFIG_SH_32BIT=y
 CONFIG_TARGET_SH7752EVB=y
index 9ff41218b9bcef5ad18dcfaae8943d1d6c724ed0..35809e9530d52e62ecc06b21ccc20430e9d3f5e0 100644 (file)
@@ -1,2 +1,3 @@
 CONFIG_SH=y
+CONFIG_SH_32BIT=y
 CONFIG_TARGET_SH7753EVB=y
index 3066d97f84f6449f9b898e7c64aa6d39c65b96c0..ffcf961bb5532b7a95186fc657d193269a9b6bbd 100644 (file)
@@ -1,2 +1,3 @@
 CONFIG_SH=y
+CONFIG_SH_32BIT=y
 CONFIG_TARGET_SH7757LCR=y
index 7cf93b47edf1a93f0c90310c978a716b08411f12..31b84ff35276c6c335f4b3e26ca35cca58d122e8 100644 (file)
@@ -1,3 +1,3 @@
-CONFIG_SYS_EXTRA_OPTIONS="SH_32BIT=1"
 CONFIG_SH=y
+CONFIG_SH_32BIT=y
 CONFIG_TARGET_SH7785LCR=y
diff --git a/configs/socfpga_socrates_defconfig b/configs/socfpga_socrates_defconfig
new file mode 100644 (file)
index 0000000..0f3896d
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SOCFPGA_CYCLONE5=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_socrates"
diff --git a/configs/stv0991_defconfig b/configs/stv0991_defconfig
new file mode 100644 (file)
index 0000000..a05e991
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="stv0991"
+CONFIG_ARM=y
+CONFIG_TARGET_STV0991=y
index 98700487f38f554481cc1a5491ad437d28c2b127..438e25d84f9e5400d679bc94712a6db5df8f8e3c 100644 (file)
@@ -1,3 +1,4 @@
+CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS"
-CONFIG_ARM=y
-CONFIG_TARGET_TAURUS=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TAURUS=y
diff --git a/configs/tbs2910_defconfig b/configs/tbs2910_defconfig
new file mode 100644 (file)
index 0000000..602d691
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q"
+CONFIG_ARM=y
+CONFIG_TARGET_TBS2910=y
diff --git a/configs/uc100_defconfig b/configs/uc100_defconfig
deleted file mode 100644 (file)
index 76eeb11..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_UC100=y
diff --git a/configs/uc101_defconfig b/configs/uc101_defconfig
deleted file mode 100644 (file)
index b365bff..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC5xxx=y
-CONFIG_TARGET_UC101=y
diff --git a/configs/utx8245_defconfig b/configs/utx8245_defconfig
deleted file mode 100644 (file)
index c2107cc..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC824X=y
-CONFIG_TARGET_UTX8245=y
index 9ff8b684214c534fe89d3c005e1331537d77bf69..32e9e8cc6d7cc3410cefa7a18381a8d490d34c2c 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUM=y
index f33c97dc8f2a79fc1b8794991aafe1033a7a92dc..4346518a18a29cfddb30afdce3da4f488ec3ec4e 100644 (file)
@@ -1,3 +1,5 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM,VCT_ONENAND"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUM=y
+CONFIG_VCT_ONENAND=y
index 58c79955abf9d6de359e681a2c5b08d57fb9368e..fd5228296686aa6a66f1bfe3ef19d6a6fee0bd64 100644 (file)
@@ -1,4 +1,7 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM,VCT_ONENAND,VCT_SMALL_IMAGE"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUM=y
+CONFIG_VCT_ONENAND=y
+CONFIG_VCT_SMALL_IMAGE=y
 # CONFIG_CMD_CRC32 is not set
index f4f56c4f4cb03ce9352d9a902e11d513cce498a8..58f956d7dbb13f14ab5a16b478bdc08202f39acb 100644 (file)
@@ -1,4 +1,6 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM,VCT_SMALL_IMAGE"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUM=y
+CONFIG_VCT_SMALL_IMAGE=y
 # CONFIG_CMD_CRC32 is not set
index 8aaac56e3defb262519e6405982c9dcfe8216168..732565cb96887b260af26da8c6eb633f00b7f996 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUMAVC=y
index 926c6e40504b118b9dc1bae07628cea42c42bf8f..670e7f92daa93b3004b16663af970195d571202c 100644 (file)
@@ -1,3 +1,5 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC,VCT_ONENAND"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUMAVC=y
+CONFIG_VCT_ONENAND=y
index 31b4c9a8d616fa80a30c64b8b156b3fc7d5b5674..31a4948e709761157fe885830c30add9e8ff9c49 100644 (file)
@@ -1,4 +1,7 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC,VCT_ONENAND,VCT_SMALL_IMAGE"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUMAVC=y
+CONFIG_VCT_ONENAND=y
+CONFIG_VCT_SMALL_IMAGE=y
 # CONFIG_CMD_CRC32 is not set
index 23f6561b34ea846b18a9bf4a713075ae23804006..ce00a6c0f194c84760ec5655753d66a4ac0d83cc 100644 (file)
@@ -1,4 +1,6 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC,VCT_SMALL_IMAGE"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PLATINUMAVC=y
+CONFIG_VCT_SMALL_IMAGE=y
 # CONFIG_CMD_CRC32 is not set
index 0e16ff9cacda499476e3b644f93189a1337de0c9..a19e65d7e6fe90b75e2acb199b292d0f1a63944d 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PREMIUM=y
index 29734b82749f725125638051f86db1d2eeea8e40..092d0f79d339bbfb8bae4fef57bc07e613c9e98a 100644 (file)
@@ -1,3 +1,5 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM,VCT_ONENAND"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PREMIUM=y
+CONFIG_VCT_ONENAND=y
index 354793edc858e089721cb27bf24818e99fbd95f6..eabfb88e0c3ecd1d094dfd2ac797d60e00c67f55 100644 (file)
@@ -1,4 +1,7 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM,VCT_ONENAND,VCT_SMALL_IMAGE"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PREMIUM=y
+CONFIG_VCT_ONENAND=y
+CONFIG_VCT_SMALL_IMAGE=y
 # CONFIG_CMD_CRC32 is not set
index a23ddb7e21351b5f718d2501679fa9a753e9ce1a..1ce0efd2734747e1499bbef1a2d27c9b5db137ab 100644 (file)
@@ -1,4 +1,6 @@
-CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM,VCT_SMALL_IMAGE"
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
+CONFIG_SYS_BIG_ENDIAN=y
+CONFIG_VCT_PREMIUM=y
+CONFIG_VCT_SMALL_IMAGE=y
 # CONFIG_CMD_CRC32 is not set
diff --git a/configs/virtlab2_defconfig b/configs/virtlab2_defconfig
deleted file mode 100644 (file)
index 3eb3993..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PPC=y
-CONFIG_8xx=y
-CONFIG_TARGET_VIRTLAB2=y
diff --git a/configs/zynq_zybo_defconfig b/configs/zynq_zybo_defconfig
new file mode 100644 (file)
index 0000000..12311cd
--- /dev/null
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_ZYNQ=y
++S:CONFIG_TARGET_ZYNQ_ZYBO=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="zynq-zybo"
index 612f0926b62bbceb8b35ef9fc6aa259145c35c95..5856f9321118da1be38015d4bce89e8e498f1683 100644 (file)
@@ -14,6 +14,7 @@
 #include <common.h>
 #include <command.h>
 #include <ide.h>
+#include <inttypes.h>
 #include <malloc.h>
 #include <part_efi.h>
 #include <linux/ctype.h>
@@ -68,6 +69,107 @@ static inline int is_bootable(gpt_entry *p)
                        sizeof(efi_guid_t));
 }
 
+static int validate_gpt_header(gpt_header *gpt_h, lbaint_t lba,
+               lbaint_t lastlba)
+{
+       uint32_t crc32_backup = 0;
+       uint32_t calc_crc32;
+
+       /* Check the GPT header signature */
+       if (le64_to_cpu(gpt_h->signature) != GPT_HEADER_SIGNATURE) {
+               printf("%s signature is wrong: 0x%llX != 0x%llX\n",
+                      "GUID Partition Table Header",
+                      le64_to_cpu(gpt_h->signature),
+                      GPT_HEADER_SIGNATURE);
+               return -1;
+       }
+
+       /* Check the GUID Partition Table CRC */
+       memcpy(&crc32_backup, &gpt_h->header_crc32, sizeof(crc32_backup));
+       memset(&gpt_h->header_crc32, 0, sizeof(gpt_h->header_crc32));
+
+       calc_crc32 = efi_crc32((const unsigned char *)gpt_h,
+               le32_to_cpu(gpt_h->header_size));
+
+       memcpy(&gpt_h->header_crc32, &crc32_backup, sizeof(crc32_backup));
+
+       if (calc_crc32 != le32_to_cpu(crc32_backup)) {
+               printf("%s CRC is wrong: 0x%x != 0x%x\n",
+                      "GUID Partition Table Header",
+                      le32_to_cpu(crc32_backup), calc_crc32);
+               return -1;
+       }
+
+       /*
+        * Check that the my_lba entry points to the LBA that contains the GPT
+        */
+       if (le64_to_cpu(gpt_h->my_lba) != lba) {
+               printf("GPT: my_lba incorrect: %llX != " LBAF "\n",
+                      le64_to_cpu(gpt_h->my_lba),
+                      lba);
+               return -1;
+       }
+
+       /*
+        * Check that the first_usable_lba and that the last_usable_lba are
+        * within the disk.
+        */
+       if (le64_to_cpu(gpt_h->first_usable_lba) > lastlba) {
+               printf("GPT: first_usable_lba incorrect: %llX > " LBAF "\n",
+                      le64_to_cpu(gpt_h->first_usable_lba), lastlba);
+               return -1;
+       }
+       if (le64_to_cpu(gpt_h->last_usable_lba) > lastlba) {
+               printf("GPT: last_usable_lba incorrect: %llX > " LBAF "\n",
+                      le64_to_cpu(gpt_h->last_usable_lba), lastlba);
+               return -1;
+       }
+
+       debug("GPT: first_usable_lba: %llX last_usable_lba: %llX last lba: "
+             LBAF "\n", le64_to_cpu(gpt_h->first_usable_lba),
+             le64_to_cpu(gpt_h->last_usable_lba), lastlba);
+
+       return 0;
+}
+
+static int validate_gpt_entries(gpt_header *gpt_h, gpt_entry *gpt_e)
+{
+       uint32_t calc_crc32;
+
+       /* Check the GUID Partition Table Entry Array CRC */
+       calc_crc32 = efi_crc32((const unsigned char *)gpt_e,
+               le32_to_cpu(gpt_h->num_partition_entries) *
+               le32_to_cpu(gpt_h->sizeof_partition_entry));
+
+       if (calc_crc32 != le32_to_cpu(gpt_h->partition_entry_array_crc32)) {
+               printf("%s: 0x%x != 0x%x\n",
+                      "GUID Partition Table Entry Array CRC is wrong",
+                      le32_to_cpu(gpt_h->partition_entry_array_crc32),
+                      calc_crc32);
+               return -1;
+       }
+
+       return 0;
+}
+
+static void prepare_backup_gpt_header(gpt_header *gpt_h)
+{
+       uint32_t calc_crc32;
+       uint64_t val;
+
+       /* recalculate the values for the Backup GPT Header */
+       val = le64_to_cpu(gpt_h->my_lba);
+       gpt_h->my_lba = gpt_h->alternate_lba;
+       gpt_h->alternate_lba = cpu_to_le64(val);
+       gpt_h->partition_entry_lba =
+                       cpu_to_le64(le64_to_cpu(gpt_h->last_usable_lba) + 1);
+       gpt_h->header_crc32 = 0;
+
+       calc_crc32 = efi_crc32((const unsigned char *)gpt_h,
+                              le32_to_cpu(gpt_h->header_size));
+       gpt_h->header_crc32 = cpu_to_le32(calc_crc32);
+}
+
 #ifdef CONFIG_EFI_PARTITION
 /*
  * Public Functions (include/part.h)
@@ -240,7 +342,7 @@ static int set_protective_mbr(block_dev_desc_t *dev_desc)
        p_mbr->signature = MSDOS_MBR_SIGNATURE;
        p_mbr->partition_record[0].sys_ind = EFI_PMBR_OSTYPE_EFI_GPT;
        p_mbr->partition_record[0].start_sect = 1;
-       p_mbr->partition_record[0].nr_sects = (u32) dev_desc->lba;
+       p_mbr->partition_record[0].nr_sects = (u32) dev_desc->lba - 1;
 
        /* Write MBR sector to the MMC device */
        if (dev_desc->block_write(dev_desc->dev, 0, 1, p_mbr) != 1) {
@@ -258,7 +360,6 @@ int write_gpt_table(block_dev_desc_t *dev_desc,
        const int pte_blk_cnt = BLOCK_CNT((gpt_h->num_partition_entries
                                           * sizeof(gpt_entry)), dev_desc);
        u32 calc_crc32;
-       u64 val;
 
        debug("max lba: %x\n", (u32) dev_desc->lba);
        /* Setup the Protective MBR */
@@ -283,15 +384,7 @@ int write_gpt_table(block_dev_desc_t *dev_desc,
            != pte_blk_cnt)
                goto err;
 
-       /* recalculate the values for the Backup GPT Header */
-       val = le64_to_cpu(gpt_h->my_lba);
-       gpt_h->my_lba = gpt_h->alternate_lba;
-       gpt_h->alternate_lba = cpu_to_le64(val);
-       gpt_h->header_crc32 = 0;
-
-       calc_crc32 = efi_crc32((const unsigned char *)gpt_h,
-                             le32_to_cpu(gpt_h->header_size));
-       gpt_h->header_crc32 = cpu_to_le32(calc_crc32);
+       prepare_backup_gpt_header(gpt_h);
 
        if (dev_desc->block_write(dev_desc->dev,
                                  (lbaint_t)le64_to_cpu(gpt_h->last_usable_lba)
@@ -454,6 +547,97 @@ err:
        free(gpt_h);
        return ret;
 }
+
+int is_valid_gpt_buf(block_dev_desc_t *dev_desc, void *buf)
+{
+       gpt_header *gpt_h;
+       gpt_entry *gpt_e;
+
+       /* determine start of GPT Header in the buffer */
+       gpt_h = buf + (GPT_PRIMARY_PARTITION_TABLE_LBA *
+                      dev_desc->blksz);
+       if (validate_gpt_header(gpt_h, GPT_PRIMARY_PARTITION_TABLE_LBA,
+                               dev_desc->lba))
+               return -1;
+
+       /* determine start of GPT Entries in the buffer */
+       gpt_e = buf + (le64_to_cpu(gpt_h->partition_entry_lba) *
+                      dev_desc->blksz);
+       if (validate_gpt_entries(gpt_h, gpt_e))
+               return -1;
+
+       return 0;
+}
+
+int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf)
+{
+       gpt_header *gpt_h;
+       gpt_entry *gpt_e;
+       int gpt_e_blk_cnt;
+       lbaint_t lba;
+       int cnt;
+
+       if (is_valid_gpt_buf(dev_desc, buf))
+               return -1;
+
+       /* determine start of GPT Header in the buffer */
+       gpt_h = buf + (GPT_PRIMARY_PARTITION_TABLE_LBA *
+                      dev_desc->blksz);
+
+       /* determine start of GPT Entries in the buffer */
+       gpt_e = buf + (le64_to_cpu(gpt_h->partition_entry_lba) *
+                      dev_desc->blksz);
+       gpt_e_blk_cnt = BLOCK_CNT((le32_to_cpu(gpt_h->num_partition_entries) *
+                                  le32_to_cpu(gpt_h->sizeof_partition_entry)),
+                                 dev_desc);
+
+       /* write MBR */
+       lba = 0;        /* MBR is always at 0 */
+       cnt = 1;        /* MBR (1 block) */
+       if (dev_desc->block_write(dev_desc->dev, lba, cnt, buf) != cnt) {
+               printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
+                      __func__, "MBR", cnt, lba);
+               return 1;
+       }
+
+       /* write Primary GPT */
+       lba = GPT_PRIMARY_PARTITION_TABLE_LBA;
+       cnt = 1;        /* GPT Header (1 block) */
+       if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_h) != cnt) {
+               printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
+                      __func__, "Primary GPT Header", cnt, lba);
+               return 1;
+       }
+
+       lba = le64_to_cpu(gpt_h->partition_entry_lba);
+       cnt = gpt_e_blk_cnt;
+       if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_e) != cnt) {
+               printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
+                      __func__, "Primary GPT Entries", cnt, lba);
+               return 1;
+       }
+
+       prepare_backup_gpt_header(gpt_h);
+
+       /* write Backup GPT */
+       lba = le64_to_cpu(gpt_h->partition_entry_lba);
+       cnt = gpt_e_blk_cnt;
+       if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_e) != cnt) {
+               printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
+                      __func__, "Backup GPT Entries", cnt, lba);
+               return 1;
+       }
+
+       lba = le64_to_cpu(gpt_h->my_lba);
+       cnt = 1;        /* GPT Header (1 block) */
+       if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_h) != cnt) {
+               printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
+                      __func__, "Backup GPT Header", cnt, lba);
+               return 1;
+       }
+
+       return 0;
+}
 #endif
 
 /*
@@ -510,10 +694,6 @@ static int is_pmbr_valid(legacy_mbr * mbr)
 static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
                        gpt_header *pgpt_head, gpt_entry **pgpt_pte)
 {
-       u32 crc32_backup = 0;
-       u32 calc_crc32;
-       u64 lastlba;
-
        if (!dev_desc || !pgpt_head) {
                printf("%s: Invalid Argument(s)\n", __func__);
                return 0;
@@ -526,55 +706,8 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
                return 0;
        }
 
-       /* Check the GPT header signature */
-       if (le64_to_cpu(pgpt_head->signature) != GPT_HEADER_SIGNATURE) {
-               printf("GUID Partition Table Header signature is wrong:"
-                       "0x%llX != 0x%llX\n",
-                       le64_to_cpu(pgpt_head->signature),
-                       GPT_HEADER_SIGNATURE);
-               return 0;
-       }
-
-       /* Check the GUID Partition Table CRC */
-       memcpy(&crc32_backup, &pgpt_head->header_crc32, sizeof(crc32_backup));
-       memset(&pgpt_head->header_crc32, 0, sizeof(pgpt_head->header_crc32));
-
-       calc_crc32 = efi_crc32((const unsigned char *)pgpt_head,
-               le32_to_cpu(pgpt_head->header_size));
-
-       memcpy(&pgpt_head->header_crc32, &crc32_backup, sizeof(crc32_backup));
-
-       if (calc_crc32 != le32_to_cpu(crc32_backup)) {
-               printf("GUID Partition Table Header CRC is wrong:"
-                       "0x%x != 0x%x\n",
-                      le32_to_cpu(crc32_backup), calc_crc32);
-               return 0;
-       }
-
-       /* Check that the my_lba entry points to the LBA that contains the GPT */
-       if (le64_to_cpu(pgpt_head->my_lba) != lba) {
-               printf("GPT: my_lba incorrect: %llX != %llX\n",
-                       le64_to_cpu(pgpt_head->my_lba),
-                       lba);
+       if (validate_gpt_header(pgpt_head, (lbaint_t)lba, dev_desc->lba))
                return 0;
-       }
-
-       /* Check the first_usable_lba and last_usable_lba are within the disk. */
-       lastlba = (u64)dev_desc->lba;
-       if (le64_to_cpu(pgpt_head->first_usable_lba) > lastlba) {
-               printf("GPT: first_usable_lba incorrect: %llX > %llX\n",
-                       le64_to_cpu(pgpt_head->first_usable_lba), lastlba);
-               return 0;
-       }
-       if (le64_to_cpu(pgpt_head->last_usable_lba) > lastlba) {
-               printf("GPT: last_usable_lba incorrect: %llX > %llX\n",
-                       le64_to_cpu(pgpt_head->last_usable_lba), lastlba);
-               return 0;
-       }
-
-       debug("GPT: first_usable_lba: %llX last_usable_lba %llX last lba %llX\n",
-               le64_to_cpu(pgpt_head->first_usable_lba),
-               le64_to_cpu(pgpt_head->last_usable_lba), lastlba);
 
        /* Read and allocate Partition Table Entries */
        *pgpt_pte = alloc_read_gpt_entries(dev_desc, pgpt_head);
@@ -583,17 +716,7 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
                return 0;
        }
 
-       /* Check the GUID Partition Table Entry Array CRC */
-       calc_crc32 = efi_crc32((const unsigned char *)*pgpt_pte,
-               le32_to_cpu(pgpt_head->num_partition_entries) *
-               le32_to_cpu(pgpt_head->sizeof_partition_entry));
-
-       if (calc_crc32 != le32_to_cpu(pgpt_head->partition_entry_array_crc32)) {
-               printf("GUID Partition Table Entry Array CRC is wrong:"
-                       "0x%x != 0x%x\n",
-                       le32_to_cpu(pgpt_head->partition_entry_array_crc32),
-                       calc_crc32);
-
+       if (validate_gpt_entries(pgpt_head, *pgpt_pte)) {
                free(*pgpt_pte);
                return 0;
        }
index 52495d311677f79e5961acfa42aa8e7cd30f6a39..fe36909449cb3a9625a7eba5dfaf8fae75523f72 100644 (file)
@@ -28,7 +28,7 @@ sudo apt-get install clang
 
 To compile U-Boot with clang on linux without IAS use e.g.:
 export TRIPLET=arm-linux-gnueabi && export CROSS_COMPILE="$TRIPLET-"
-make HOSTCC=clang CC="clang -target $TRIPLET -mllvm -arm-use-movt=0 -no-integrated-as" rpi_b_defconfig
+make HOSTCC=clang CC="clang -target $TRIPLET -mllvm -arm-use-movt=0 -no-integrated-as" rpi_defconfig
 make HOSTCC=clang CC="clang -target $TRIPLET -mllvm -arm-use-movt=0 -no-integrated-as" all V=1 -j8
 
 FreeBSD 11 (Current):
@@ -42,7 +42,7 @@ ln -s /usr/local/bin/arm-gnueabi-freebsd-as /usr/bin/arm-freebsd-eabi-as
 # The following commands compile U-Boot using the clang xdev toolchain.
 # NOTE: CROSS_COMPILE and target differ on purpose!
 export CROSS_COMPILE=arm-gnueabi-freebsd-
-gmake CC="clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd -no-integrated-as -mllvm -arm-use-movt=0" rpi_b_defconfig
+gmake CC="clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd -no-integrated-as -mllvm -arm-use-movt=0" rpi_defconfig
 gmake CC="clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd -no-integrated-as -mllvm -arm-use-movt=0" -j8
 
 Given that u-boot will default to gcc, above commands can be
diff --git a/doc/README.fsl-dpaa b/doc/README.fsl-dpaa
new file mode 100644 (file)
index 0000000..0d8d4f6
--- /dev/null
@@ -0,0 +1,10 @@
+This file documents Freescale DPAA-specific options.
+
+FMan (Frame Manager)
+  - CONFIG_FSL_FM_10GEC_REGULAR_NOTATION
+       on SoCs earlier(e.g. T4240, T2080), the notation between 10GEC and MAC as below:
+               10GEC1->MAC9, 10GEC2->MAC10, 10GEC3->MAC1, 10GEC4->MAC2
+       on SoCs later(e.g. T1024, etc), the notation between 10GEC and MAC as below:
+               10GEC1->MAC1, 10GEC2->MAC2
+       so we introduce CONFIG_FSL_FM_10GEC_REGULAR_NOTATION to identify the new SoCs on
+       which 10GEC enumeration is consistent with MAC enumeration.
index 13f6f92f68e2138cde58af8d974ff29b2ca2f8df..762b2e3acb71e08f9335baa72a67759a1f5bbd1d 100644 (file)
@@ -30,10 +30,10 @@ kwbimage support available with mkimage utility will generate kirkwood boot
 image that can be flashed on the board NAND/SPI flash.  The make target
 which uses mkimage to produce such an image is "u-boot.kwb".  For example:
 
-  export BUILD_DIR=/tmp/build
+  export KBUILD_OUTPUT=/tmp/build
   make distclean
   make yourboard_config
-  make $BUILD_DIR/u-boot.kwb
+  make u-boot.kwb
 
 
 Board specific configuration file specifications:
index 0d31cba1fb5a3ed7b6d0a12000bb2bc9e0d9e4ab..c3975ee5e66246a3a27c3b1b45ae8a0371d071ff 100644 (file)
@@ -27,7 +27,7 @@ These semantics and rules will be outlined now.
 - Each line of the configuration file contains exactly one instruction.
 - Every numeric value must be encoded in hexadecimal and in format 0xabcdef12 .
 - The configuration file is a concatenation of blocks called "sections" and
-  optionally "DCD blocks" (see below).
+  optionally "DCD blocks" (see below), and optional flags lines.
   - Each "section" is started by the "SECTION" instruction.
   - The "SECTION" instruction has the following semantics:
 
@@ -139,9 +139,14 @@ These semantics and rules will be outlined now.
        NOOP
        - This instruction does nothing.
 
-- If the verbose output from the BootROM is enabled, the BootROM will produce a
-  letter on the Debug UART for each instruction it started processing. Here is a
-  mapping between the above instructions and the BootROM verbose output:
+  - An optional flags lines can be one of the following:
+
+       DISPLAYPROGRESS
+       - Enable boot progress output form the BootROM.
+
+- If the boot progress output from the BootROM is enabled, the BootROM will
+  produce a letter on the Debug UART for each instruction it started processing.
+  Here is a mapping between the above instructions and the BootROM output:
 
    H -- SB Image header loaded
    T -- TAG instruction
index 528bb952795b5ea55a68338bdf9100d8e14e4dd2..8a004ca6ba6b9c55e5407b3c9abbdc2b5e62cdaf 100644 (file)
@@ -1,28 +1,39 @@
- U-boot for Odroid X2/U3
+ U-boot for Odroid X2/U3/XU3
 ========================
 
 1. Summary
 ==========
-This is a quick instruction for setup Odroid boards based on Exynos4412.
-Board config: odroid_config
+This is a quick instruction for setup Odroid boards.
+Board config: odroid_config for X2/U3
+Board config: odroid-xu3_config for XU3
 
 2. Supported devices
 ====================
-This U-BOOT config can be used on two boards:
+This U-BOOT config can be used on three boards:
 - Odroid U3
 - Odroid X2
 with CPU Exynos 4412 rev 2.0 and 2GB of RAM
+- Odroid XU3
+with CPU Exynos5422 and 2GB of RAM
 
 3. Boot sequence
 ================
 iROM->BL1->(BL2 + TrustZone)->U-BOOT
 
-This version of U-BOOT doesn't implement SPL but it is required(BL2)
-and can be found in "boot.tar.gz" from here:
+This version of U-BOOT doesn't implement SPL. So, BL1, BL2, and TrustZone
+binaries are needed to boot up.
+
+<< X2/U3 >>
+It can be found in "boot.tar.gz" from here:
 http://dev.odroid.com/projects/4412boot/wiki/FrontPage?action=download&value=boot.tar.gz
 or here:
 http://odroid.in/guides/ubuntu-lfs/boot.tar.gz
 
+<< XU3 >>
+It can be downloaded from:
+https://github.com/hardkernel/u-boot/tree/odroidxu3-v2012.07/sd_fuse/hardkernel
+
+
 4. Boot media layout
 ====================
 The table below shows SD/eMMC cards layout for U-boot.
@@ -35,18 +46,20 @@ The block offset is starting from 0 and the block size is 512B.
 | Bl2       | 31   | 30   |  1 (boot) |
 | U-boot    | 63   | 62   |  1 (boot) |
 | Tzsw      | 2111 | 2110 |  1 (boot) |
-| Uboot Env | 2500 | 2500 |  0 (user) |
+| Uboot Env | 2560 | 2560 |  0 (user) |
  -------------------------------------
 
 5. Prepare the SD boot card - with SD card reader
 =================================================
 To prepare bootable media you need boot binaries provided by hardkernel.
-File "boot.tar.gz" (link in point 3.) contains:
-- E4412_S.bl1.HardKernel.bin
-- E4412_S.tzsw.signed.bin
-- bl2.signed.bin
+From the downloaded files, You can find:
+- bl1.bin
+- tzsw.bin
+- bl2.bin
 - sd_fusing.sh
 - u-boot.bin
+(The file names can be slightly different, but you can distinguish what they are
+without problem)
 
 This is all you need to boot this board. But if you want to use your custom
 u-boot then you need to change u-boot.bin with your own u-boot binary*
@@ -56,7 +69,7 @@ and run the script "sd_fusing.sh" - this script is valid only for SD card.
 The proper binary file of current U-boot is u-boot-dtb.bin.
 
 quick steps for Linux:
-- extract boot.tar.gz
+- Download all files from the link at point 3 and extract it if needed.
 - put any SD card into the SD reader
 - check the device with "dmesg"
 - run ./sd_fusing.sh /dev/sdX - where X is SD card device (but not a partition)
@@ -66,7 +79,7 @@ Check if Hardkernel U-boot is booting, and next do the same with your U-boot.
    with a eMMC card reader (boot from eMMC card slot)
 =====================================================
 To boot the device from the eMMC slot you should use a special card reader
-which supports eMMC partiion switch. All of the boot binaries are stored
+which supports eMMC partition switch. All of the boot binaries are stored
 on the eMMC boot partition which is normally hidden.
 
 The "sd_fusing.sh" script can be used after updating offsets of binaries
@@ -81,8 +94,8 @@ But then the device can boot only from the SD card slot.
 
 8. Prepare the boot media using Hardkernel U-boot
 =================================================
-You can update the U-boot to the custom one if you have an working bootloader
-delivered with the board on a eMMC/SD card. Then follow the steps:
+You can update the U-boot to the custom one if you have a working bootloader
+delivered with the board on the eMMC/SD card. Then follow the steps:
 - install the android fastboot tool
 - connect a micro usb cable to the board
 - on the U-boot prompt, run command: fastboot (as a root)
@@ -91,7 +104,7 @@ delivered with the board on a eMMC/SD card. Then follow the steps:
 
 9. Partition layout
 ====================
-Default U-boot environment is setup for fixed partiion layout.
+Default U-boot environment is setup for fixed partition layout.
 
 Partition table: MSDOS. Disk layout and files as listed in the table below.
  ----- ------ ------ ------ -------- ---------------------------------
@@ -106,6 +119,7 @@ Partition table: MSDOS. Disk layout and files as listed in the table below.
 Supported fdt files are:
 - exynos4412-odroidx2.dtb
 - exynos4412-odroidu3.dtb
+- exynos5422-odroidxu3.dtb
 
 Supported kernel files are:
 - Image.itb
@@ -141,3 +155,173 @@ And the boot sequence is:
 - boot_fit - if "Image.itb" exists
 - boot_zimg - if "zImage" exists
 - boot_uimg - if "uImage" exists
+
+11. USB host support
+====================
+NOTE: This section is only for Odroid X2/U3.
+
+The ethernet can be accessed after starting the USB subsystem in U-Boot.
+The adapter does not come with a preconfigured MAC address, and hence it needs
+to be set before starting USB.
+setenv usbethaddr 02:DE:AD:BE:EF:FF
+
+Note that in this example a locally managed MAC address is chosen. Care should
+be taken to make these MAC addresses unique within the same subnet.
+
+Start the USB subsystem:
+Odroid # setenv usbethaddr 02:DE:AD:BE:EF:FF
+Odroid # usb start
+(Re)start USB...
+USB0:   USB EHCI 1.00
+scanning bus 0 for devices... 4 USB Device(s) found
+       scanning usb for storage devices... 1 Storage Device(s) found
+       scanning usb for ethernet devices... 1 Ethernet Device(s) found
+Odroid #
+
+Automatic IP assignment:
+------------------------
+If the ethernet is connected to a DHCP server (router maybe with DHCP enabled),
+then the below will automatically assign an ip address through DHCP.
+setenv autoload no
+dhcp
+
+Odroid # setenv autoload no
+Odroid # dhcp
+Waiting for Ethernet connection... done.
+BOOTP broadcast 1
+DHCP client bound to address 192.168.1.10 (524 ms)
+Odroid #
+
+Note that this automatically sets the many IP address related variables in
+U-Boot that is obtained from the DHCP server.
+
+Odroid # printenv ipaddr netmask gatewayip dnsip
+ipaddr=192.168.1.10
+netmask=255.255.255.0
+gatewayip=192.168.1.1
+dnsip=192.168.1.1
+
+Ping example:
+The ping command can be used a test to check connectivity. In this example,
+192.168.1.27 is a pingable server in the network.
+Odroid # ping 192.168.1.27
+Waiting for Ethernet connection... done.
+Using sms0 device
+host 192.168.1.27 is alive
+Odroid #
+
+Static IP assignment:
+---------------------
+In the case where there are no DHCP servers in the network, or you want to
+set the IP address statically, it can be done by:
+Odroid # setenv ipaddr 192.168.1.10
+Odroid # ping 192.168.1.27
+Waiting for Ethernet connection... done.
+Using sms0 device
+host 192.168.1.27 is alive
+
+TFTP booting:
+-------------
+Say there exists a tftp server in the network with address 192.168.1.27 and
+it serves a kernel image (zImage.3.17) and a DTB blob (exynos4412-odroidu3.dtb)
+that needs to be loaded and booted. It can be accomplished as below:
+(Assumes that you have setenv usbethaddr, and have not set autoload to no)
+
+Odroid # setenv serverip 192.168.1.27
+Odroid # tftpboot 0x40080000 zImage.3.17
+Waiting for Ethernet connection... done.
+Using sms0 device
+TFTP from server 192.168.1.27; our IP address is 192.168.1.10
+Filename 'zImage.3.17'.
+Load address: 0x40080000
+Loading: #################################################################
+        #################################################################
+        #################################################################
+        #######################
+        52.7 KiB/s
+done
+Bytes transferred = 3194200 (30bd58 hex)
+Odroid # tftpboot 0x42000000 exynos4412-odroidu3.dtb
+Waiting for Ethernet connection... done.
+Using sms0 device
+TFTP from server 192.168.1.27; our IP address is 192.168.1.10
+Filename 'exynos4412-odroidu3.dtb'.
+Load address: 0x42000000
+Loading: ####
+        40 KiB/s
+done
+Bytes transferred = 46935 (b757 hex)
+Odroid # printenv bootargs
+bootargs=Please use defined boot
+Odroid # setenv bootargs console=ttySAC1,115200n8 root=/dev/mmcblk0p2 rootwait
+Odroid # bootz 40080000 - 42000000
+Kernel image @ 0x40080000 [ 0x000000 - 0x30bd58 ]
+## Flattened Device Tree blob at 42000000
+   Booting using the fdt blob at 0x42000000
+   Loading Device Tree to 4fff1000, end 4ffff756 ... OK
+
+Starting kernel ...
+
+[    0.000000] Booting Linux on physical CPU 0xa00
+... etc ...
+
+In the above example you can substitute 'dhcp' for 'tftpboot' as well.
+
+USB Storage booting:
+--------------------
+Similarly we can use the USB storage to load the kernel image/initrd/fdt etc
+and boot. For this example, there is a USB drive plugged in. It has a FAT
+1st partition and an EXT 2nd partition. Using the generic FS (ls/load) makes
+it even easier to work with FAT/EXT file systems.
+For this example the second EXT partition is used for booting and as rootfs.
+The boot files - kernel and the dtb are present in the /boot directory of the
+second partition.
+
+Odroid # usb start
+(Re)start USB...
+USB0:   USB EHCI 1.00
+scanning bus 0 for devices... 4 USB Device(s) found
+       scanning usb for storage devices... 1 Storage Device(s) found
+       scanning usb for ethernet devices...
+Error: sms0 address not set.           <----- Note the error as usbethaddr
+Warning: failed to set MAC address     <----- is not set.
+1 Ethernet Device(s) found
+Odroid # usb part 0
+
+Partition Map for USB device 0  --   Partition Type: DOS
+
+Part   Start Sector    Num Sectors     UUID            Type
+  1    3072            263168          000c4046-01     06
+  2    266240          13457408        000c4046-02     83
+
+Odroid # ls usb 0:2 /boot
+<DIR>       4096 .
+<DIR>       4096 ..
+             353 boot.scr
+             281 boot.txt
+          101420 config-3.8.13.23
+         2127254 initrd.img-3.8.13.23
+         2194825 uInitrd
+         2194825 uInitrd-3.8.13.23
+         2453112 zImage
+          101448 config-3.8.13.26
+         2127670 uInitrd-3.8.13.26
+         2127606 initrd.img-3.8.13.26
+         3194200 zImage.3.17                    <--- Kernel
+           46935 exynos4412-odroidu3.dtb        <--- DTB
+Odroid # load usb 0:2 40080000 /boot/zImage.3.17
+3194200 bytes read in 471 ms (6.5 MiB/s)
+Odroid # load usb 0:2 42000000 /boot/exynos4412-odroidu3.dtb
+46935 bytes read in 233 ms (196.3 KiB/s)
+Odroid # setenv bootargs console=ttySAC1,115200n8 root=/dev/sda2 rootwait
+Odroid # bootz 40080000 - 42000000
+Kernel image @ 0x40080000 [ 0x000000 - 0x30bd58 ]
+## Flattened Device Tree blob at 42000000
+   Booting using the fdt blob at 0x42000000
+   Loading Device Tree to 4fff1000, end 4ffff756 ... OK
+
+Starting kernel ...
+
+[    0.000000] Booting Linux on physical CPU 0xa00
+
+Please refer to README.usb for additional information.
index bd4dd3c8299723182d4988ae1b0fb0a509c9d58d..e1a81d3fd3da152e300d021a23078c752ae4dc16 100644 (file)
@@ -12,9 +12,80 @@ The list should be sorted in reverse chronological order.
 
 Board            Arch        CPU            Commit      Removed     Last known maintainer/contact
 =================================================================================================
-TOP5200                 powerpc     mpc5200        -           -           Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-TOP860          powerpc     mpc860         -           -           Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-TOP9000                 arm         at91sam9xeXXX  -           -           Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+CPCI405          ppc4xx      405gp          5f1459dc    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+CPCI405DT        ppc4xx      405gpr         5f1459dc    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+CPCI405AB        ppc4xx      405gpr         5f1459dc    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+G2000            ppc4xx      405ep          5f8f6294    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+WUH405           ppc4xx      405ep          fc88a5bf    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+VOH405           ppc4xx      405ep          807db88b    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+PMC405           ppc4xx      405gp          d5263304    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+PCI405           ppc4xx      405gp          dbe7bb0d    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+OCRTC            ppc4xx      405gpr         cc6e715f    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+HUB405           ppc4xx      405ep          e434d5d7    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+HH405            ppc4xx      405ep          843125da    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+DU440            ppc4xx      440epx         7ac9d47a    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+DU405            ppc4xx      405gpr         bc114076    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+DP405            ppc4xx      405ep          9a4018e0    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+CPCIISER4        ppc4xx      405gp          37057260    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+CMS700           ppc4xx      405ep          2404124c    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+ASH405           ppc4xx      405ep          b5e7c84f    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+AR405            ppc4xx      405gpr         61b57c4a    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+APC405           ppc4xx      405gpr         2b8a04e5    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+TASREG           m68k        mcf52x2        cbdc662a    2015-01-13  Matthias Fuchs <matthias.fuchs@esd.eu>
+A3000            powerpc     mpc824x        d622ac39    2015-01-05
+CPC45            powerpc     mpc824x        d622ac39    2015-01-05  Josef Wagner <Wagner@Microsys.de>
+CU824            powerpc     mpc824x        d622ac39    2015-01-05  Wolfgang Denk <wd@denx.de>
+eXalion          powerpc     mpc824x        d622ac39    2015-01-05  Torsten Demke <torsten.demke@fci.com>
+MVBLUE           powerpc     mpc824x        d622ac39    2015-01-05
+MUSENKI          powerpc     mpc824x        d622ac39    2015-01-05  Jim Thompson <jim@musenki.com>
+Sandpoint8240    powerpc     mpc824x        d622ac39    2015-01-05  Wolfgang Denk <wd@denx.de>
+Sandpoint8245    powerpc     mpc824x        d622ac39    2015-01-05  Jim Thompson <jim@musenki.com>
+utx8245          powerpc     mpc824x        d622ac39    2015-01-05  Greg Allen <gallen@arlut.utexas.edu>
+atc              powerpc     mpc8260        9067b300    2015-01-05  Wolfgang Denk <wd@denx.de>
+CPU86            powerpc     mpc8260        f7e1af86    2015-01-05  Wolfgang Denk <wd@denx.de>
+CPU87            powerpc     mpc8260        f7e1af86    2015-01-05
+ep82xxm          powerpc     mpc8260        e2b19629    2015-01-05
+gw8260           powerpc     mpc8260        8eecbaf3    2015-01-05  Oliver Brown <obrown@adventnetworks.com>
+IPHASE4539       powerpc     mpc8260        87882f57    2015-01-05  Wolfgang Grandegger <wg@denx.de>
+muas3001         powerpc     mpc8260        d2fd1d66    2015-01-05  Heiko Schocher <hs@denx.de>
+PM825            powerpc     mpc8260        dc0b2fb4    2015-01-05  Wolfgang Denk <wd@denx.de>
+PM826            powerpc     mpc8260        dc0b2fb4    2015-01-05  Wolfgang Denk <wd@denx.de>
+PM828            powerpc     mpc8260        dc0b2fb4    2015-01-05
+MPC8266ADS       powerpc     mpc8260        b3a2bbe1    2015-01-05  Rune Torgersen <runet@innovsys.com>
+VoVPN-GW         powerpc     mpc8260        cc90905f    2015-01-05
+ep8260           powerpc     mpc8260        4ad015ba    2015-01-05  Frank Panno <fpanno@delphintech.com>
+ppmc8260         powerpc     mpc8260        793116d2    2015-01-05  Brad Kemp <Brad.Kemp@seranoa.com>
+sacsng           powerpc     mpc8260        b35c0ad6    2015-01-05  Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
+cogent_mpc8260   powerpc     mpc8260        d19f6a60    2015-01-05  Murray Jensen <Murray.Jensen@csiro.au>
+cogent_8xx       powerpc     mpc8xx         d19f6a60    2015-01-05  Murray Jensen <Murray.Jensen@csiro.au>
+ESTEEM192E       powerpc     mpc8xx         af0e3514    2015-01-05  Conn Clark <clark@esteem.com>
+IP860            powerpc     mpc8xx         5ec71100    2015-01-05  Wolfgang Denk <wd@denx.de>
+IVML24           powerpc     mpc8xx         ca620cd1    2015-01-05  Wolfgang Denk <wd@denx.de>
+IVMS8            powerpc     mpc8xx         ca620cd1    2015-01-05  Wolfgang Denk <wd@denx.de>
+lwmon            powerpc     mpc8xx         acc2372d    2015-01-05  Wolfgang Denk <wd@denx.de>
+NETVIA           powerpc     mpc8xx         f017cd7f    2015-01-05  Pantelis Antoniou <panto@intracom.gr>
+R360MPI          powerpc     mpc8xx         79cbecb8    2015-01-05  Wolfgang Denk <wd@denx.de>
+RRvision         powerpc     mpc8xx         8737fc75    2015-01-05  Wolfgang Denk <wd@denx.de>
+SPD823TS         powerpc     mpc8xx         72ba368f    2015-01-05  Wolfgang Denk <wd@denx.de>
+KUP4K            powerpc     mpc8xx         4317d070    2015-01-05  Klaus Heydeck <heydeck@kieback-peter.de>
+KUP4X            powerpc     mpc8xx         4317d070    2015-01-05  Klaus Heydeck <heydeck@kieback-peter.de>
+ELPT860          powerpc     mpc8xx         3c5b20f1    2015-01-05  The LEOX team <team@leox.org>
+hmi1001          powerpc     mpc5xxx        ceaf499b    2015-01-05
+mucmc52          powerpc     mpc5xxx        ceaf499b    2015-01-05  Heiko Schocher <hs@denx.de>
+uc101            powerpc     mpc5xxx        ceaf499b    2015-01-05  Heiko Schocher <hs@denx.de>
+uc100            powerpc     mpc8xx         ceaf499b    2015-01-05  Stefan Roese <sr@denx.de>
+FPS850L          powerpc     mpc8xx         5d2a5ef7    2015-01-05  Wolfgang Denk <wd@denx.de>
+FPS860L          powerpc     mpc8xx         5d2a5ef7    2015-01-05  Wolfgang Denk <wd@denx.de>
+NSCU             powerpc     mpc8xx         5d2a5ef7    2015-01-05
+SM850            powerpc     mpc8xx         5d2a5ef7    2015-01-05  Wolfgang Denk <wd@denx.de>
+TK885D           powerpc     mpc8xx         5d2a5ef7    2015-01-05
+virtlab2         powerpc     mpc8xx         5d2a5ef7    2015-01-05  Wolfgang Denk <wd@denx.de>
+hermes           powerpc     mpc8xx         36da51e     2014-12-08  Wolfgang Denk <wd@denx.de>
+PRS200          powerpc     mpc5200        ecfdcee     2014-11-12
+MCC200          powerpc     mpc5200        ecfdcee     2014-11-12
+TOP5200                 powerpc     mpc5200        d58a945     2014-10-28  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+TOP860          powerpc     mpc860         d58a945     2014-10-28  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+TOP9000                 arm         at91sam9xeXXX  d58a945     2014-10-28  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
 TQM8272          powerpc     mpc8260        f06f9a1     2014-10-27  Wolfgang Denk <wd@denx.de>
 TQM8260          powerpc     mpc8260        ccc1950     2014-10-27  Wolfgang Denk <wd@denx.de>
 IDS8247          powerpc     mpc8260        6afb357     2014-10-27  Heiko Schocher <hs@denx.de>
index dadbfcd2fdc8934d8f09a7d1b17c66dc9863a06d..d0a3ad6e8d455f52843778a93aa7a760f66c1b65 100644 (file)
@@ -5,15 +5,8 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-U-Boot MPC8xx video controller driver
-======================================
-
-The driver has been tested with the following configurations:
-
-- MPC823FADS with AD7176 on a PAL TV (YCbYCr)  - arsenio@tin.it
-
 "video-mode" environment variable
-===============================
+=================================
 
 The 'video-mode' environment variable can be used to enable and configure
 some video drivers.  The format matches the video= command-line option used
@@ -28,4 +21,50 @@ for Linux:
        <freq>          The frequency (in Hz) to use.
        <options>       A comma-separated list of device-specific options
 
+
+U-Boot MPC8xx video controller driver
+=====================================
+
+The driver has been tested with the following configurations:
+
+- MPC823FADS with AD7176 on a PAL TV (YCbYCr)  - arsenio@tin.it
+
 Example: video-mode=fslfb:1280x1024-32@60,monitor=dvi
+
+
+U-boot sunxi video controller driver
+====================================
+
+U-boot supports hdmi and lcd output on Allwinner sunxi SoCs, lcd output
+requires the CONFIG_VIDEO_LCD_MODE Kconfig value to be set.
+
+The sunxi u-boot driver supports the following video-mode options:
+
+- monitor=[none|dvi|hdmi|lcd] - Select the video output to use
+ none:     Disable video output.
+ dvi/hdmi: Selects output over the hdmi connector with dvi resp. hdmi output
+           format, if edid is used the format is automatically selected.
+ lcd:      Selects video output to a LCD screen.
+ vga:      Selects bideo output over the VGA connector.
+ Defaults to monitor=dvi.
+
+- hpd=[0|1] - Enable use of the hdmi HotPlug Detect feature
+ 0: Disabled. Configure dvi/hdmi output even if no cable is detected
+ 1: Enabled.  Fallback to the lcd / vga / none in that order (if available)
+ Defaults to hpd=1.
+
+- hpd_delay=<int> - How long to wait for the hdmi HPD signal in milliseconds
+ When the monitor and the board power up at the same time, it may take some
+ time for the monitor to assert the HPD signal. This configures how long to
+ wait for the HPD signal before assuming no cable is connected.
+ Defaults to hpd_delay=500.
+
+- edid=[0|1] - Enable use of DDC + EDID to get monitor info
+ 0: Disabled.
+ 1: Enabled. If valid EDID info was read from the monitor the EDID info will
+    overrides the xres, yres and refresh from the video-mode env. variable.
+ Defaults to edid=1.
+
+For example to always use the hdmi connector, even if no cable is inserted,
+using edid info when available and otherwise initalizing it at 1024x768@60Hz,
+use: "setenv video-mode sunxi:1024x768-24@60,monitor=dvi,hpd=0,edid=1".
diff --git a/doc/README.x86 b/doc/README.x86
new file mode 100644 (file)
index 0000000..7df8cc5
--- /dev/null
@@ -0,0 +1,177 @@
+#
+# Copyright (C) 2014, Simon Glass <sjg@chromium.org>
+# Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+U-Boot on x86
+=============
+
+This document describes the information about U-Boot running on x86 targets,
+including supported boards, build instructions, todo list, etc.
+
+Status
+------
+U-Boot supports running as a coreboot [1] payload on x86. So far only Link
+(Chromebook Pixel) has been tested, but it should work with minimal adjustments
+on other x86 boards since coreboot deals with most of the low-level details.
+
+U-Boot also supports booting directly from x86 reset vector without coreboot,
+aka raw support or bare support. Currently Link and Intel Crown Bay board
+support running U-Boot 'bare metal'.
+
+As for loading OS, U-Boot supports directly booting a 32-bit or 64-bit Linux
+kernel as part of a FIT image. It also supports a compressed zImage.
+
+Build Instructions
+------------------
+Building U-Boot as a coreboot payload is just like building U-Boot for targets
+on other architectures, like below:
+
+$ make coreboot-x86_defconfig
+$ make all
+
+Note this default configuration will build a U-Boot payload for the Link board.
+To build a coreboot payload against another board, you can change the build
+configuration during the 'make menuconfig' process.
+
+x86 architecture  --->
+       ...
+       (chromebook_link) Board configuration file
+       (chromebook_link) Board Device Tree Source (dts) file
+       (0x19200000) Board specific Cache-As-RAM (CAR) address
+       (0x4000) Board specific Cache-As-RAM (CAR) size
+
+Change the 'Board configuration file' and 'Board Device Tree Source (dts) file'
+to point to a new board. You can also change the Cache-As-RAM (CAR) related
+settings here if the default values do not fit your new board.
+
+Building ROM version of U-Boot (hereafter referred to as u-boot.rom) is a
+little bit tricky, as generally it requires several binary blobs which are not
+shipped in the U-Boot source tree. Due to this reason, the u-boot.rom build is
+not turned on by default in the U-Boot source tree. Firstly, you need turn it
+on by uncommenting the following line in the main U-Boot Makefile:
+
+# ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom
+
+Link-specific instructions:
+
+First, you need the following binary blobs:
+
+* descriptor.bin - Intel flash descriptor
+* me.bin - Intel Management Engine
+* mrc.bin - Memory Reference Code, which sets up SDRAM
+* video ROM - sets up the display
+
+You can get these binary blobs by:
+
+$ git clone http://review.coreboot.org/p/blobs.git
+$ cd blobs
+
+Find the following files:
+
+* ./mainboard/google/link/descriptor.bin
+* ./mainboard/google/link/me.bin
+* ./northbridge/intel/sandybridge/systemagent-ivybridge.bin
+
+The 3rd one should be renamed to mrc.bin.
+As for the video ROM, you can get it here [2].
+Make sure all these binary blobs are put in the board directory.
+
+Now you can build U-Boot and obtain u-boot.rom:
+
+$ make chromebook_link_defconfig
+$ make all
+
+Intel Crown Bay specific instructions:
+
+U-Boot support of Intel Crown Bay board [3] relies on a binary blob called
+Firmware Support Package [4] to perform all the necessary initialization steps
+as documented in the BIOS Writer Guide, including initialization of the CPU,
+memory controller, chipset and certain bus interfaces.
+
+Download the Intel FSP for Atom E6xx series and Platform Controller Hub EG20T,
+install it on your host and locate the FSP binary blob. Note this platform
+also requires a Chipset Micro Code (CMC) state machine binary to be present in
+the SPI flash where u-boot.rom resides, and this CMC binary blob can be found
+in this FSP package too.
+
+* ./FSP/QUEENSBAY_FSP_GOLD_001_20-DECEMBER-2013.fd
+* ./Microcode/C0_22211.BIN
+
+Rename the first one to fsp.bin and second one to cmc.bin and put them in the
+board directory.
+
+Now you can build U-Boot and obtain u-boot.rom
+
+$ make crownbay_defconfig
+$ make all
+
+Test with coreboot
+------------------
+For testing U-Boot as the coreboot payload, there are things that need be paid
+attention to. coreboot supports loading an ELF executable and a 32-bit plain
+binary, as well as other supported payloads. With the default configuration,
+U-Boot is set up to use a separate Device Tree Blob (dtb). As of today, the
+generated u-boot-dtb.bin needs to be packaged by the cbfstool utility (a tool
+provided by coreboot) manually as coreboot's 'make menuconfig' does not provide
+this capability yet. The command is as follows:
+
+# in the coreboot root directory
+$ ./build/util/cbfstool/cbfstool build/coreboot.rom add-flat-binary \
+  -f u-boot-dtb.bin -n fallback/payload -c lzma -l 0x1110000 -e 0x1110015
+
+Make sure 0x1110000 matches CONFIG_SYS_TEXT_BASE and 0x1110015 matches the
+symbol address of _start (in arch/x86/cpu/start.S).
+
+If you want to use ELF as the coreboot payload, change U-Boot configuration to
+use CONFIG_OF_EMBED.
+
+CPU Microcode
+-------------
+Modern CPU usually requires a special bit stream called microcode [5] to be
+loaded on the processor after power up in order to function properly. U-Boot
+has already integrated these as hex dumps in the source tree.
+
+Driver Model
+------------
+x86 has been converted to use driver model for serial and GPIO.
+
+Device Tree
+-----------
+x86 uses device tree to configure the board thus requires CONFIG_OF_CONTROL to
+be turned on. Not every device on the board is configured via device tree, but
+more and more devices will be added as time goes by. Check out the directory
+arch/x86/dts/ for these device tree source files.
+
+Useful Commands
+---------------
+
+In keeping with the U-Boot philosophy of providing functions to check and
+adjust internal settings, there are several x86-specific commands that may be
+useful:
+
+hob  - Display information about Firmware Support Package (FSP) Hand-off
+        Block. This is only available on platforms which use FSP, mostly
+        Atom.
+iod  - Display I/O memory
+iow  - Write I/O memory
+mtrr - List and set the Memory Type Range Registers (MTRR). These are used to
+        tell the CPU whether memory is cacheable and if so the cache write
+        mode to use. U-Boot sets up some reasonable values but you can
+        adjust then with this command.
+
+TODO List
+---------
+- Audio
+- Chrome OS verified boot
+- SMI and ACPI support, to provide platform info and facilities to Linux
+
+References
+----------
+[1] http://www.coreboot.org
+[2] http://www.coreboot.org/~stepan/pci8086,0166.rom
+[3] http://www.intel.com/content/www/us/en/embedded/design-tools/evaluation-platforms/atom-e660-eg20t-development-kit.html
+[4] http://www.intel.com/fsp
+[5] http://en.wikipedia.org/wiki/Microcode
diff --git a/doc/SPI/README.altera_spi b/doc/SPI/README.altera_spi
new file mode 100644 (file)
index 0000000..b07449f
--- /dev/null
@@ -0,0 +1,6 @@
+SoCFPGA EPCS/EPCQx1 mini howto:
+- Instantiate EPCS/EPCQx1 Serial flash controller in QSys and rebuild
+- The controller base address is the "Base" in QSys + 0x400
+- Set MSEL[4:0]=10010 (AS Standard)
+- Load the bitstream into FPGA, enable bridges
+- Only then will the driver work
diff --git a/doc/device-tree-bindings/ata/intel-sata.txt b/doc/device-tree-bindings/ata/intel-sata.txt
new file mode 100644 (file)
index 0000000..5e4da83
--- /dev/null
@@ -0,0 +1,26 @@
+Intel Pantherpoint SATA Device Binding
+======================================
+
+The device tree node which describes the operation of the Intel Pantherpoint
+SATA device is as follows:
+
+Required properties :
+- compatible = "intel,pantherpoint-ahci"
+- intel,sata-mode : string, one of:
+     "ahci" : Use AHCI mode (default)
+     "combined" : Use combined IDE + legacy mode
+     "plain-ide" : Use plain IDE mode
+- intel,sata-port-map : Which SATA ports are enabled, bit 0=enable first port,
+    bit 1=enable second port, etc.
+- intel,sata-port0-gen3-tx : Value for the IOBP_SP0G3IR register
+- intel,sata-port1-gen3-tx : Value for the IOBP_SP1G3IR register
+
+Example
+-------
+
+sata {
+       compatible = "intel,pantherpoint-ahci";
+       intel,sata-mode = "ahci";
+       intel,sata-port-map = <1>;
+       intel,sata-port0-gen3-tx = <0x00880a7f>;
+};
index 31182760780215d0f009582411a7ff494e6e782a..0f6355ce39b511e15bfa62b8897548793e5becb1 100644 (file)
@@ -1,45 +1,38 @@
-CROS_EC Keyboard
+ChromeOS EC Keyboard
 
-The CROS_EC (Matrix Keyboard Protocol) allows communcation with a secondary
-micro used for keyboard, and possible other features.
+Google's ChromeOS EC Keyboard is a simple matrix keyboard implemented on
+a separate EC (Embedded Controller) device. It provides a message for reading
+key scans from the EC. These are then converted into keycodes for processing
+by the kernel.
 
-The CROS_EC keyboard uses this protocol to receive key scans and produce input
-in U-Boot.
+This binding is based on matrix-keymap.txt and extends/modifies it as follows:
 
-Required properties :
-- compatible : "google,cros-ec-keyb"
-- google,key-rows : Number of key rows
-- google,key-columns : Number of key columns
+Required properties:
+- compatible: "google,cros-ec-keyb"
 
-Optional properties, in addition to those specified by the shared
-matrix-keyboard bindings:
+Optional properties:
+- google,needs-ghost-filter: True to enable a ghost filter for the matrix
+keyboard. This is recommended if the EC does not have its own logic or
+hardware for this.
 
-- linux,fn-keymap: a second keymap, same specification as the
-  matrix-keyboard-controller spec but to be used when the KEY_FN modifier
-  key is pressed.
-- google,repeat-delay-ms : delay in milliseconds before repeat starts
-- google,repeat-rate-ms : delay between each subsequent key press
-- google,ghost-filter : enable ghost filtering for this device
 
-Example, taken from daisy:
+Example:
 
 cros-ec-keyb {
        compatible = "google,cros-ec-keyb";
-       google,key-rows = <8>;
-       google,key-columns = <13>;
-       google,ghost-filter;
-       google,repeat-delay-ms = <240>;
-       google,repeat-rate-ms = <30>;
+       keypad,num-rows = <8>;
+       keypad,num-columns = <13>;
+       google,needs-ghost-filter;
        /*
-               * Keymap entries take the form of 0xRRCCKKKK where
-               * RR=Row CC=Column KKKK=Key Code
-               * The values below are for a US keyboard layout and
-               * are taken from the Linux driver. Note that the
-               * 102ND key is not used for US keyboards.
-               */
+        * Keymap entries take the form of 0xRRCCKKKK where
+        * RR=Row CC=Column KKKK=Key Code
+        * The values below are for a US keyboard layout and
+        * are taken from the Linux driver. Note that the
+        * 102ND key is not used for US keyboards.
+        */
        linux,keymap = <
                /* CAPSLCK F1         B          F10     */
-               0x0001003a 0x0002003c 0x00030030 0x00040044
+               0x0001003a 0x0002003b 0x00030030 0x00040044
                /* N       =          R_ALT      ESC     */
                0x00060031 0x0008000d 0x000a0064 0x01010001
                /* F4      G          F7         H       */
diff --git a/doc/device-tree-bindings/misc/intel-lpc.txt b/doc/device-tree-bindings/misc/intel-lpc.txt
new file mode 100644 (file)
index 0000000..ba6ca9d
--- /dev/null
@@ -0,0 +1,64 @@
+Intel LPC Device Binding
+========================
+
+The device tree node which describes the operation of the Intel Low Pin
+Count device is as follows:
+
+Required properties :
+- compatible = "intel,lpc"
+- intel,alt-gp-smi-enable : Enable SMI sources. This cell is written to the
+    ALT_GP_SMI_EN register
+- intel,gen-dec : Specifies the values for the gen-dec registers. Up to four
+   cell pairs can be provided - the first of each pair is the base address and
+   the second is the size. These are written into the GENx_DEC registers of
+   the LPC device
+- intel,gpi-routing : Specifies the GPI routing. There are 16 cells, valid
+   values are:
+     0 No effect (default)
+     1 SMI# (if corresponding ALT_GPI_SMI_EN bit is also set)
+     2 SCI (if corresponding GPIO_EN bit is also set)
+- intel,pirq-routing : Speciffies the routing IRQ number for each of PIRQA-H,
+   one cell for each.
+     0x00 - 0000 = Reserved
+     0x01 - 0001 = Reserved
+     0x02 - 0010 = Reserved
+     0x03 - 0011 = IRQ3
+     0x04 - 0100 = IRQ4
+     0x05 - 0101 = IRQ5
+     0x06 - 0110 = IRQ6
+     0x07 - 0111 = IRQ7
+     0x08 - 1000 = Reserved
+     0x09 - 1001 = IRQ9
+     0x0A - 1010 = IRQ10
+     0x0B - 1011 = IRQ11
+     0x0C - 1100 = IRQ12
+     0x0D - 1101 = Reserved
+     0x0E - 1110 = IRQ14
+     0x0F - 1111 = IRQ15
+     PIRQ[n]_ROUT[7] - PIRQ Routing Control
+     0x80 - The PIRQ is not routed.
+
+
+Example
+-------
+
+lpc {
+       compatible = "intel,lpc";
+       #address-cells = <1>;
+       #size-cells = <1>;
+       intel,gen-dec = <0x800 0xfc 0x900 0xfc>;
+
+       intel,pirq-routing = <0x8b 0x8a 0x8b 0x8b
+                               0x80 0x80 0x80 0x80>;
+       /*
+               * GPI routing
+               * 0 No effect (default)
+               * 1 SMI# (if corresponding ALT_GPI_SMI_EN bit is
+               *       also set)
+               * 2 SCI (if corresponding GPIO_EN bit is also set)
+               */
+       intel,gpi-routing = <0 0 0 0 0 0 0 2
+                               1 0 0 0 0 0 0 0>;
+       /* Enable EC SMI source */
+       intel,alt-gp-smi-enable = <0x0100>;
+};
diff --git a/doc/device-tree-bindings/video/intel-gma.txt b/doc/device-tree-bindings/video/intel-gma.txt
new file mode 100644 (file)
index 0000000..914be4f
--- /dev/null
@@ -0,0 +1,40 @@
+Intel GMA Bindings
+==================
+
+This is the Intel Graphics Media Accelerator. This binding supports selection
+of display parameters only.
+
+
+Required properties:
+ - compatible : "intel,gma";
+
+Optional properties:
+ - intel,dp-hotplug : values for digital port hotplug, one cell per value for
+     ports B, C and D
+  - intel,panel-port-select : output port to use: 0=LVDS 1=DP_B 2=DP_C 3=DP_D
+  - intel,panel-power-cycle-delay : T4 time sequence (6 = 500ms)
+
+  The following delays are in units of 0.1ms:
+  - intel,panel-power-up-delay : T1+T2 time sequence
+  - intel,panel-power-down-delay : T3 time sequence
+  - intel,panel-power-backlight-on-delay : T5 time sequence
+  - intel,panel-power-backlight-off-delay : Tx time sequence
+
+  - intel,cpu-backlight : Value for CPU Backlight PWM
+  - intel,pch-backlight : Value for PCH Backlight PWM
+
+Example
+-------
+
+gma {
+       compatible = "intel,gma";
+       intel,dp_hotplug = <0 0 0x06>;
+       intel,panel-port-select = <1>;
+       intel,panel-power-cycle-delay = <6>;
+       intel,panel-power-up-delay = <2000>;
+       intel,panel-power-down-delay = <500>;
+       intel,panel-power-backlight-on-delay = <2000>;
+       intel,panel-power-backlight-off-delay = <2000>;
+       intel,cpu-backlight = <0x00000200>;
+       intel,pch-backlight = <0x04000000>;
+};
index 0278dda4d77045a7dbcc8400b1d5593252b4f514..eafa825ab44a00969f27dd805a4a504b59b74720 100644 (file)
@@ -36,9 +36,9 @@ How to try it
 
 Build U-Boot sandbox and run it:
 
-   make sandbox_config
+   make sandbox_defconfig
    make
-   ./u-boot
+   ./u-boot -d u-boot.dtb
 
    (type 'reset' to exit U-Boot)
 
@@ -750,19 +750,43 @@ device pointers, but this is not currently implemented (the root device
 pointer is saved but not made available through the driver model API).
 
 
-Things to punt for later
-------------------------
+SPL Support
+-----------
+
+Driver model can operate in SPL. Its efficient implementation and small code
+size provide for a small overhead which is acceptable for all but the most
+constrained systems.
+
+To enable driver model in SPL, define CONFIG_SPL_DM. You might want to
+consider the following option also. See the main README for more details.
+
+   - CONFIG_SYS_MALLOC_SIMPLE
+   - CONFIG_DM_WARN
+   - CONFIG_DM_DEVICE_REMOVE
+   - CONFIG_DM_STDIO
 
-- SPL support - this will have to be present before many drivers can be
-converted, but it seems like we can add it once we are happy with the
-core implementation.
 
-That is not to say that no thinking has gone into this - in fact there
-is quite a lot there. However, getting these right is non-trivial and
-there is a high cost associated with going down the wrong path.
+Enabling Driver Model
+---------------------
 
-For SPL, it may be possible to fit in a simplified driver model with only
-bind and probe methods, to reduce size.
+Driver model is being brought into U-Boot gradually. As each subsystems gets
+support, a uclass is created and a CONFIG to enable use of driver model for
+that subsystem.
+
+For example CONFIG_DM_SERIAL enables driver model for serial. With that
+defined, the old serial support is not enabled, and your serial driver must
+conform to driver model. With that undefined, the old serial support is
+enabled and driver model is not available for serial. This means that when
+you convert a driver, you must either convert all its boards, or provide for
+the driver to be compiled both with and without driver model (generally this
+is not very hard).
+
+See the main README for full details of the available driver model CONFIG
+options.
+
+
+Things to punt for later
+------------------------
 
 Uclasses are statically numbered at compile time. It would be possible to
 change this to dynamic numbering, but then we would require some sort of
index ad22763960cdc57c0892d23fa5f31a24750169ad..d90793a6a64ec00c48f0db269d16e16719fef764 100644 (file)
@@ -14,16 +14,20 @@ alias aaribaud       Albert Aribaud <albert.u.boot@aribaud.net>
 alias abiessmann     Andreas Bießmann <andreas.devel@googlemail.com>
 alias afleming       Andy Fleming <afleming@gmail.com>
 alias ag             Anatolij Gustschin <agust@denx.de>
+alias alisonwang     Alison Wang <alison.wang@freescale.com>
+alias angelo_ts      Angelo Dureghello <angelo@sysam.it>
+alias danielschwierzeck Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
 alias galak          Kumar Gala <galak@kernel.crashing.org>
 alias gruss          Graeme Russ <graeme.russ@gmail.com>
 alias hs             Heiko Schocher <hs@denx.de>
 alias ijc            Ian Campbell <ijc+uboot@hellion.org.uk>
 alias iwamatsu       Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-alias jagan         Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
+alias jagan          Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
 alias jasonjin       Jason Jin <jason.jin@freescale.com>
 alias jhersh         Joe Hershberger <joe.hershberger@gmail.com>
 alias jwrdegoede     Hans de Goede <hdegoede@redhat.com>
 alias kimphill       Kim Phillips <kim.phillips@freescale.com>
+alias luka           Luka Perkov <luka.perkov@sartura.hr>
 alias lukma          Lukasz Majewski <l.majewski@samsung.com>
 alias macpaul        Macpaul Lin <macpaul@andestech.com>
 alias marex          Marek Vasut <marex@denx.de>
@@ -53,7 +57,7 @@ alias arm            uboot, aaribaud
 alias at91           uboot, abiessmann
 alias davinci        ti
 alias imx            uboot, sbabic
-alias kirkwood       uboot, prafulla
+alias kirkwood       uboot, prafulla, luka
 alias omap           ti
 alias pxa            uboot, marex
 alias rmobile        uboot, iwamatsu
@@ -72,13 +76,13 @@ alias avr32          uboot, abiessmann
 alias bfin           uboot, vapier, sonic
 alias blackfin       bfin
 
-alias m68k           uboot, jasonjin
+alias m68k           uboot, alisonwang, angelo_ts
 alias coldfire       m68k
 
 alias microblaze     uboot, monstr
 alias mb             microblaze
 
-alias mips           uboot, Shinya Kuribayashi <skuribay@pobox.com>
+alias mips           uboot, danielschwierzeck
 
 alias nds32          uboot, macpaul
 
@@ -118,7 +122,8 @@ alias kconfig        uboot, masahiro
 alias mmc            uboot, panto
 alias nand           uboot, scottwood
 alias net            uboot, jhersh
-alias spi           uboot, jagan
+alias spi            uboot, jagan
+alias ubi            uboot, hs
 alias usb            uboot, marex
 alias video          uboot, ag
 alias patman         uboot, sjg
index 14374da88af0fff839ce105f5e25e9849e7baec9..b48f70bb3cc7a0222d8a21d9d1122e69af2ddf4f 100644 (file)
@@ -115,7 +115,7 @@ FIT image.
 .TP
 .BI "\-F"
 Indicates that an existing FIT image should be modified. No dtc
-compilation is performed and the -f flag should not be given.
+compilation is performed and the \-f flag should not be given.
 This can be used to sign images with additional keys after initial image
 creation.
 
@@ -163,7 +163,8 @@ Create FIT image with compressed kernel and sign it with keys in the
 skipping those for which keys cannot be found. Also add a comment.
 .nf
 .B mkimage -f kernel.its -k /public/signing-keys -K u-boot.dtb \\\\
--c "Kernel 3.8 image for production devices" kernel.itb
+.br
+.B -c "Kernel 3.8 image for production devices" kernel.itb
 .fi
 
 .P
@@ -173,7 +174,8 @@ with keys that are available in the new directory. Images that request signing
 with unavailable keys are skipped.
 .nf
 .B mkimage -F -k /secret/signing-keys -K u-boot.dtb \\\\
--c "Kernel 3.8 image for production devices" kernel.itb
+.br
+.B -c "Kernel 3.8 image for production devices" kernel.itb
 .fi
 
 .SH HOMEPAGE
index 33227c8bd6de003d170962e7f7778ed1b091c460..5ef58c051e7f969c0f1c25a247a933975fa129e3 100644 (file)
@@ -16,8 +16,10 @@ obj-y += twserial/
 obj-y += video/
 obj-y += watchdog/
 obj-$(CONFIG_QE) += qe/
+obj-$(CONFIG_U_QE) += qe/
 obj-y += memory/
 obj-y += pwm/
 obj-y += input/
 # SOC specific infrastructure drivers.
 obj-y += soc/
+obj-y += thermal/
index e56356ee867f7b9d3e4ffffebe69941bd3118054..2ba43ac731842f0f1367ba5d604e1ba58f32c798 100644 (file)
@@ -9,4 +9,4 @@ obj-y = atibios.o biosemu.o besys.o bios.o \
        $(X86DIR)/debug.o
 
 ccflags-y := -I$(srctree)/$(src) -I$(srctree)/$(src)/include \
-       -D__PPC__  -D__BIG_ENDIAN__
+       $(if $(CONFIG_PPC),-D__PPC__  -D__BIG_ENDIAN__)
index 3b2ed6e109b645359c0edb9e0fe0f1ddd0b7c507..93b815ccb497d7c81eb0491a441fa082e3c703f6 100644 (file)
 *              BIOS in u-boot.
 ****************************************************************************/
 #include <common.h>
-#include "biosemui.h"
+#include <bios_emul.h>
+#include <errno.h>
 #include <malloc.h>
+#include <vbe.h>
+#include "biosemui.h"
 
 /* Length of the BIOS image */
 #define MAX_BIOSLEN        (128 * 1024L)
@@ -59,17 +62,54 @@ static u32 saveBaseAddress14;
 static u32 saveBaseAddress18;
 static u32 saveBaseAddress20;
 
+static void atibios_set_vesa_mode(RMREGS *regs, int vesa_mode,
+                                 struct vbe_mode_info *mode_info)
+{
+       debug("VBE: Setting VESA mode %#04x\n", vesa_mode);
+       /* request linear framebuffer mode */
+       vesa_mode |= (1 << 14);
+       /* request clearing of framebuffer */
+       vesa_mode &= ~(1 << 15);
+       regs->e.eax = VESA_SET_MODE;
+       regs->e.ebx = vesa_mode;
+       BE_int86(0x10, regs, regs);
+
+       int offset = 0x2000;
+       void *buffer = (void *)(M.mem_base + offset);
+
+       u16 buffer_seg = (((unsigned long)offset) >> 4) & 0xff00;
+       u16 buffer_adr = ((unsigned long)offset) & 0xffff;
+       regs->e.eax = VESA_GET_MODE_INFO;
+       regs->e.ebx = 0;
+       regs->e.ecx = vesa_mode;
+       regs->e.edx = 0;
+       regs->e.esi = buffer_seg;
+       regs->e.edi = buffer_adr;
+       BE_int86(0x10, regs, regs);
+       memcpy(mode_info->mode_info_block, buffer,
+              sizeof(struct vbe_mode_info));
+       mode_info->valid = true;
+
+       vesa_mode |= (1 << 14);
+       /* request clearing of framebuffer */
+       vesa_mode &= ~(1 << 15);
+       regs->e.eax = VESA_SET_MODE;
+       regs->e.ebx = vesa_mode;
+       BE_int86(0x10, regs, regs);
+}
+
 /****************************************************************************
 PARAMETERS:
 pcidev - PCI device info for the video card on the bus to boot
-VGAInfo - BIOS emulator VGA info structure
+vga_info - BIOS emulator VGA info structure
 
 REMARKS:
 This function executes the BIOS POST code on the controller. We assume that
 at this stage the controller has its I/O and memory space enabled and
 that all other controllers are in a disabled state.
 ****************************************************************************/
-static void PCI_doBIOSPOST(pci_dev_t pcidev, BE_VGAInfo * VGAInfo)
+static void PCI_doBIOSPOST(pci_dev_t pcidev, BE_VGAInfo *vga_info,
+                          int vesa_mode, struct vbe_mode_info *mode_info)
 {
        RMREGS regs;
        RMSREGS sregs;
@@ -84,13 +124,16 @@ static void PCI_doBIOSPOST(pci_dev_t pcidev, BE_VGAInfo * VGAInfo)
            ((int)PCI_DEV(pcidev) << 3) | (int)PCI_FUNC(pcidev);
 
        /*Setup the X86 emulator for the VGA BIOS*/
-       BE_setVGA(VGAInfo);
+       BE_setVGA(vga_info);
 
        /*Execute the BIOS POST code*/
        BE_callRealMode(0xC000, 0x0003, &regs, &sregs);
 
        /*Cleanup and exit*/
-       BE_getVGA(VGAInfo);
+       BE_getVGA(vga_info);
+
+       if (vesa_mode != -1)
+               atibios_set_vesa_mode(&regs, vesa_mode, mode_info);
 }
 
 /****************************************************************************
@@ -244,60 +287,61 @@ REMARKS:
 Loads and POST's the display controllers BIOS, directly from the BIOS
 image we can extract over the PCI bus.
 ****************************************************************************/
-static int PCI_postController(pci_dev_t pcidev, BE_VGAInfo * VGAInfo)
+static int PCI_postController(pci_dev_t pcidev, uchar *bios_rom, int bios_len,
+                             BE_VGAInfo *vga_info, int vesa_mode,
+                             struct vbe_mode_info *mode_info)
 {
-       u32 BIOSImageLen;
-       uchar *mappedBIOS;
-       uchar *copyOfBIOS;
-
-       /*Allocate memory to store copy of BIOS from display controller*/
-       if ((mappedBIOS = PCI_mapBIOSImage(pcidev)) == NULL) {
-               printf("videoboot: Video ROM failed to map!\n");
-               return false;
-       }
+       u32 bios_image_len;
+       uchar *mapped_bios;
+       uchar *copy_of_bios;
+
+       if (bios_rom) {
+               copy_of_bios = bios_rom;
+               bios_image_len = bios_len;
+       } else {
+               /*
+                * Allocate memory to store copy of BIOS from display
+                * controller
+                */
+               mapped_bios = PCI_mapBIOSImage(pcidev);
+               if (mapped_bios == NULL) {
+                       printf("videoboot: Video ROM failed to map!\n");
+                       return false;
+               }
 
-       BIOSImageLen = mappedBIOS[2] * 512;
+               bios_image_len = mapped_bios[2] * 512;
 
-       if ((copyOfBIOS = malloc(BIOSImageLen)) == NULL) {
-               printf("videoboot: Out of memory!\n");
-               return false;
+               copy_of_bios = malloc(bios_image_len);
+               if (copy_of_bios == NULL) {
+                       printf("videoboot: Out of memory!\n");
+                       return false;
+               }
+               memcpy(copy_of_bios, mapped_bios, bios_image_len);
+               PCI_unmapBIOSImage(pcidev, mapped_bios);
        }
-       memcpy(copyOfBIOS, mappedBIOS, BIOSImageLen);
 
-       PCI_unmapBIOSImage(pcidev, mappedBIOS);
-
-       /*Save information in VGAInfo structure*/
-       VGAInfo->function = PCI_FUNC(pcidev);
-       VGAInfo->device = PCI_DEV(pcidev);
-       VGAInfo->bus = PCI_BUS(pcidev);
-       VGAInfo->pcidev = pcidev;
-       VGAInfo->BIOSImage = copyOfBIOS;
-       VGAInfo->BIOSImageLen = BIOSImageLen;
+       /*Save information in vga_info structure*/
+       vga_info->function = PCI_FUNC(pcidev);
+       vga_info->device = PCI_DEV(pcidev);
+       vga_info->bus = PCI_BUS(pcidev);
+       vga_info->pcidev = pcidev;
+       vga_info->BIOSImage = copy_of_bios;
+       vga_info->BIOSImageLen = bios_image_len;
 
        /*Now execute the BIOS POST for the device*/
-       if (copyOfBIOS[0] != 0x55 || copyOfBIOS[1] != 0xAA) {
+       if (copy_of_bios[0] != 0x55 || copy_of_bios[1] != 0xAA) {
                printf("videoboot: Video ROM image is invalid!\n");
                return false;
        }
 
-       PCI_doBIOSPOST(pcidev, VGAInfo);
+       PCI_doBIOSPOST(pcidev, vga_info, vesa_mode, mode_info);
 
        /*Reset the size of the BIOS image to the final size*/
-       VGAInfo->BIOSImageLen = copyOfBIOS[2] * 512;
+       vga_info->BIOSImageLen = copy_of_bios[2] * 512;
        return true;
 }
 
-/****************************************************************************
-PARAMETERS:
-pcidev     - PCI device info for the video card on the bus to boot
-pVGAInfo    - Place to return VGA info structure is requested
-cleanUp            - true to clean up on exit, false to leave emulator active
-
-REMARKS:
-Boots the PCI/AGP video card on the bus using the Video ROM BIOS image
-and the X86 BIOS emulator module.
-****************************************************************************/
-int BootVideoCardBIOS(pci_dev_t pcidev, BE_VGAInfo ** pVGAInfo, int cleanUp)
+int biosemu_setup(pci_dev_t pcidev, BE_VGAInfo **vga_infop)
 {
        BE_VGAInfo *VGAInfo;
 
@@ -307,28 +351,70 @@ int BootVideoCardBIOS(pci_dev_t pcidev, BE_VGAInfo ** pVGAInfo, int cleanUp)
        /*Initialise the x86 BIOS emulator*/
        if ((VGAInfo = malloc(sizeof(*VGAInfo))) == NULL) {
                printf("videoboot: Out of memory!\n");
-               return false;
+               return -ENOMEM;
        }
        memset(VGAInfo, 0, sizeof(*VGAInfo));
        BE_init(0, 65536, VGAInfo, 0);
+       *vga_infop = VGAInfo;
 
-       /*Post all the display controller BIOS'es*/
-       if (!PCI_postController(pcidev, VGAInfo))
-               return false;
+       return 0;
+}
 
-       /*Cleanup and exit the emulator if requested. If the BIOS emulator
-       is needed after booting the card, we will not call BE_exit and
-       leave it enabled for further use (ie: VESA driver etc).
+void biosemu_set_interrupt_handler(int intnum, int (*int_func)(void))
+{
+       X86EMU_setupIntrFunc(intnum, (X86EMU_intrFuncs)int_func);
+}
+
+int biosemu_run(pci_dev_t pcidev, uchar *bios_rom, int bios_len,
+               BE_VGAInfo *vga_info, int clean_up, int vesa_mode,
+               struct vbe_mode_info *mode_info)
+{
+       /*Post all the display controller BIOS'es*/
+       if (!PCI_postController(pcidev, bios_rom, bios_len, vga_info,
+                               vesa_mode, mode_info))
+               return -EINVAL;
+
+       /*
+        * Cleanup and exit the emulator if requested. If the BIOS emulator
+        * is needed after booting the card, we will not call BE_exit and
+        * leave it enabled for further use (ie: VESA driver etc).
        */
-       if (cleanUp) {
+       if (clean_up) {
                BE_exit();
-               if (VGAInfo->BIOSImage)
-                       free(VGAInfo->BIOSImage);
-               free(VGAInfo);
-               VGAInfo = NULL;
+               if (vga_info->BIOSImage)
+                       free(vga_info->BIOSImage);
+               free(vga_info);
+               vga_info = NULL;
        }
-       /*Return VGA info pointer if the caller requested it*/
+
+       return 0;
+}
+
+/****************************************************************************
+PARAMETERS:
+pcidev     - PCI device info for the video card on the bus to boot
+pVGAInfo    - Place to return VGA info structure is requested
+cleanUp            - true to clean up on exit, false to leave emulator active
+
+REMARKS:
+Boots the PCI/AGP video card on the bus using the Video ROM BIOS image
+and the X86 BIOS emulator module.
+****************************************************************************/
+int BootVideoCardBIOS(pci_dev_t pcidev, BE_VGAInfo **pVGAInfo, int clean_up)
+{
+       BE_VGAInfo *VGAInfo;
+       int ret;
+
+       ret = biosemu_setup(pcidev, &VGAInfo);
+       if (ret)
+               return false;
+       ret = biosemu_run(pcidev, NULL, 0, VGAInfo, clean_up, -1, NULL);
+       if (ret)
+               return false;
+
+       /* Return VGA info pointer if the caller requested it*/
        if (pVGAInfo)
                *pVGAInfo = VGAInfo;
+
        return true;
 }
index ad88a53f0c435683dd4bd521e1df26aab9c917d9..02c4286a854c11adf16040c7c90e06dda0efe857 100644 (file)
 ****************************************************************************/
 
 #define __io
-#include <asm/io.h>
 #include <common.h>
+#include <asm/io.h>
 #include "biosemui.h"
 
 /*------------------------- Global Variables ------------------------------*/
 
-#ifndef __i386__
+#ifndef CONFIG_X86EMU_RAW_IO
 static char *BE_biosDate = "08/14/99";
 static u8 BE_model = 0xFC;
 static u8 BE_submodel = 0x00;
 #endif
 
+#undef DEBUG_IO_ACCESS
+
+#ifdef DEBUG_IO_ACCESS
+#define debug_io(fmt, ...)     printf(fmt, ##__VA_ARGS__)
+#else
+#define debug_io(x, b...)
+#endif
+
 /*----------------------------- Implementation ----------------------------*/
 
 /****************************************************************************
@@ -80,38 +88,40 @@ static u8 *BE_memaddr(u32 addr)
        if (addr >= 0xC0000 && addr <= _BE_env.biosmem_limit) {
                return (u8*)(_BE_env.biosmem_base + addr - 0xC0000);
        } else if (addr > _BE_env.biosmem_limit && addr < 0xD0000) {
-               DB(printf("BE_memaddr: address %#lx may be invalid!\n", addr);)
-               return M.mem_base;
+               DB(printf("BE_memaddr: address %#lx may be invalid!\n",
+                         (ulong)addr);)
+               return (u8 *)M.mem_base;
        } else if (addr >= 0xA0000 && addr <= 0xBFFFF) {
                return (u8*)(_BE_env.busmem_base + addr - 0xA0000);
        }
-#ifdef __i386__
+#ifdef CONFIG_X86EMU_RAW_IO
        else if (addr >= 0xD0000 && addr <= 0xFFFFF) {
                /* We map the real System BIOS directly on real PC's */
-               DB(printf("BE_memaddr: System BIOS address %#lx\n", addr);)
-                   return _BE_env.busmem_base + addr - 0xA0000;
+               DB(printf("BE_memaddr: System BIOS address %#lx\n",
+                         (ulong)addr);)
+                   return (u8 *)_BE_env.busmem_base + addr - 0xA0000;
        }
 #else
        else if (addr >= 0xFFFF5 && addr < 0xFFFFE) {
                /* Return a faked BIOS date string for non-x86 machines */
-               DB(printf("BE_memaddr - Returning BIOS date\n");)
+               debug_io("BE_memaddr - Returning BIOS date\n");
                return (u8 *)(BE_biosDate + addr - 0xFFFF5);
        } else if (addr == 0xFFFFE) {
                /* Return system model identifier for non-x86 machines */
-               DB(printf("BE_memaddr - Returning model\n");)
+               debug_io("BE_memaddr - Returning model\n");
                return &BE_model;
        } else if (addr == 0xFFFFF) {
                /* Return system submodel identifier for non-x86 machines */
-               DB(printf("BE_memaddr - Returning submodel\n");)
+               debug_io("BE_memaddr - Returning submodel\n");
                return &BE_submodel;
        }
 #endif
        else if (addr > M.mem_size - 1) {
                HALT_SYS();
-               return M.mem_base;
+               return (u8 *)M.mem_base;
        }
 
-       return M.mem_base + addr;
+       return (u8 *)(M.mem_base + addr);
 }
 
 /****************************************************************************
@@ -230,7 +240,7 @@ void X86API BE_wrl(u32 addr, u32 val)
        }
 }
 
-#if defined(DEBUG) || !defined(__i386__)
+#if !defined(CONFIG_X86EMU_RAW_IO)
 
 /* For Non-Intel machines we may need to emulate some I/O port accesses that
  * the BIOS may try to access, such as the PCI config registers.
@@ -258,6 +268,7 @@ static u8 VGA_inpb (const int port)
 {
        u8 val = 0xff;
 
+       debug_io("vga_inb.%04X -> ", (u16) port);
        switch (port) {
        case 0x3C0:
                /* 3C0 has funky characteristics because it can act as either
@@ -560,7 +571,7 @@ u8 X86API BE_inb(X86EMU_pioAddr port)
 {
        u8 val = 0;
 
-#if defined(DEBUG) || !defined(__i386__)
+#if !defined(CONFIG_X86EMU_RAW_IO)
        if (IS_VGA_PORT(port)){
                /*seems reading port 0x3c3 return the high 16 bit of io port*/
                if(port == 0x3c3)
@@ -581,7 +592,12 @@ u8 X86API BE_inb(X86EMU_pioAddr port)
                val = LOG_inpb(port);
        } else
 #endif
+       {
+               debug_io("inb.%04X -> ", (u16) port);
                val = LOG_inpb(port);
+               debug_io("%02X\n", val);
+       }
+
        return val;
 }
 
@@ -601,7 +617,7 @@ u16 X86API BE_inw(X86EMU_pioAddr port)
 {
        u16 val = 0;
 
-#if defined(DEBUG) || !defined(__i386__)
+#if !defined(CONFIG_X86EMU_RAW_IO)
        if (IS_PCI_PORT(port))
                val = PCI_inp(port, REG_READ_WORD);
        else if (port < 0x100) {
@@ -609,7 +625,12 @@ u16 X86API BE_inw(X86EMU_pioAddr port)
                val = LOG_inpw(port);
        } else
 #endif
+       {
+               debug_io("inw.%04X -> ", (u16) port);
                val = LOG_inpw(port);
+               debug_io("%04X\n", val);
+       }
+
        return val;
 }
 
@@ -629,14 +650,19 @@ u32 X86API BE_inl(X86EMU_pioAddr port)
 {
        u32 val = 0;
 
-#if defined(DEBUG) || !defined(__i386__)
+#if !defined(CONFIG_X86EMU_RAW_IO)
        if (IS_PCI_PORT(port))
                val = PCI_inp(port, REG_READ_DWORD);
        else if (port < 0x100) {
                val = LOG_inpd(port);
        } else
 #endif
+       {
+               debug_io("inl.%04X -> ", (u16) port);
                val = LOG_inpd(port);
+               debug_io("%08X\n", val);
+       }
+
        return val;
 }
 
@@ -652,7 +678,7 @@ through to the real hardware if we don't need to special case it.
 ****************************************************************************/
 void X86API BE_outb(X86EMU_pioAddr port, u8 val)
 {
-#if defined(DEBUG) || !defined(__i386__)
+#if !defined(CONFIG_X86EMU_RAW_IO)
        if (IS_VGA_PORT(port))
                VGA_outpb(port, val);
        else if (IS_TIMER_PORT(port))
@@ -668,7 +694,11 @@ void X86API BE_outb(X86EMU_pioAddr port, u8 val)
                LOG_outpb(port, val);
        } else
 #endif
+       {
+               debug_io("outb.%04X <- %02X", (u16) port, val);
                LOG_outpb(port, val);
+               debug_io("\n");
+       }
 }
 
 /****************************************************************************
@@ -683,19 +713,23 @@ through to the real hardware if we don't need to special case it.
 ****************************************************************************/
 void X86API BE_outw(X86EMU_pioAddr port, u16 val)
 {
-#if defined(DEBUG) || !defined(__i386__)
-               if (IS_VGA_PORT(port)) {
-                       VGA_outpb(port, val);
-                       VGA_outpb(port + 1, val >> 8);
-               } else if (IS_PCI_PORT(port))
-                       PCI_outp(port, val, REG_WRITE_WORD);
-               else if (port < 0x100) {
-                       DB(printf("WARN: MAybe INVALID outw.%04X <- %04X\n", (u16) port,
-                              val);)
-                       LOG_outpw(port, val);
-               } else
+#if !defined(CONFIG_X86EMU_RAW_IO)
+       if (IS_VGA_PORT(port)) {
+               VGA_outpb(port, val);
+               VGA_outpb(port + 1, val >> 8);
+       } else if (IS_PCI_PORT(port)) {
+               PCI_outp(port, val, REG_WRITE_WORD);
+       } else if (port < 0x100) {
+               DB(printf("WARN: MAybe INVALID outw.%04X <- %04X\n", (u16)port,
+                         val);)
+               LOG_outpw(port, val);
+       } else
 #endif
-                       LOG_outpw(port, val);
+       {
+               debug_io("outw.%04X <- %04X", (u16) port, val);
+               LOG_outpw(port, val);
+               debug_io("\n");
+       }
 }
 
 /****************************************************************************
@@ -710,13 +744,17 @@ through to the real hardware if we don't need to special case it.
 ****************************************************************************/
 void X86API BE_outl(X86EMU_pioAddr port, u32 val)
 {
-#if defined(DEBUG) || !defined(__i386__)
-       if (IS_PCI_PORT(port))
+#if !defined(CONFIG_X86EMU_RAW_IO)
+       if (IS_PCI_PORT(port)) {
                PCI_outp(port, val, REG_WRITE_DWORD);
-       else if (port < 0x100) {
+       else if (port < 0x100) {
                DB(printf("WARN: INVALID outl.%04X <- %08X\n", (u16) port,val);)
                LOG_outpd(port, val);
        } else
 #endif
+       {
+               debug_io("outl.%04X <- %08X", (u16) port, val);
                LOG_outpd(port, val);
+               debug_io("\n");
+       }
 }
index bcc192fb2e3f1c7201c96d970b0daa00bd39fb21..dd4c0a4f322fbdf4d7d81df090084143e9bfb956 100644 (file)
@@ -42,8 +42,8 @@
 ****************************************************************************/
 
 #define __io
-#include <asm/io.h>
 #include <common.h>
+#include <asm/io.h>
 #include "biosemui.h"
 
 /*----------------------------- Implementation ----------------------------*/
@@ -84,14 +84,14 @@ static void X86API int42(int intno)
                        PM_outpb(0x3c2, PM_inpb(0x3cc) & (u8) ~ 0x02);
                        return;
                }
-#ifdef  DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
                else {
                        printf("int42: unknown function AH=0x12, BL=0x32, AL=%#02x\n",
                             M.x86.R_AL);
                }
 #endif
        }
-#ifdef  DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
        else {
                printf("int42: unknown function AH=%#02x, AL=%#02x, BL=%#02x\n",
                     M.x86.R_AH, M.x86.R_AL, M.x86.R_BL);
index 8c1f111fc83cd809b0dc6da3f9dcb10be7d60164..7853015c1e2ef83b57b207299cdc603312e15ece 100644 (file)
@@ -48,7 +48,7 @@
 #include <asm/io.h>
 /*---------------------- Macros and type definitions ----------------------*/
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 #define DB(x)  x
 #else
 #define DB(x)  do{}while(0);
index e92e96e82b6876dd1fde3f1c268cbe2b5d1466ed..124d79d80e1c60869f225e8c0308ce374a4f4a80 100644 (file)
@@ -43,6 +43,8 @@
 #ifndef __BIOSEMU_H
 #define __BIOSEMU_H
 
+#include <bios_emul.h>
+
 #ifdef __KERNEL__
 #include "x86emu.h"
 #else
 
 #pragma pack(1)
 
-#ifndef __KERNEL__
-/****************************************************************************
-REMARKS:
-Data structure used to describe the details specific to a particular VGA
-controller. This information is used to allow the VGA controller to be
-swapped on the fly within the BIOS emulator.
-
-HEADER:
-biosemu.h
-
-MEMBERS:
-pciInfo         - PCI device information block for the controller
-BIOSImage       - Pointer to a read/write copy of the BIOS image
-BIOSImageLen    - Length of the BIOS image
-LowMem          - Copy of key low memory areas
-****************************************************************************/
-typedef struct {
-       PCIDeviceInfo *pciInfo;
-       void *BIOSImage;
-       ulong BIOSImageLen;
-       uchar LowMem[1536];
-} BE_VGAInfo;
-#else
-/****************************************************************************
-REMARKS:
-Data structure used to describe the details for the BIOS emulator system
-environment as used by the X86 emulator library.
-
-HEADER:
-biosemu.h
-
-MEMBERS:
-vgaInfo         - VGA BIOS information structure
-biosmem_base    - Base of the BIOS image
-biosmem_limit   - Limit of the BIOS image
-busmem_base     - Base of the VGA bus memory
-****************************************************************************/
-typedef struct {
-       int function;
-       int device;
-       int bus;
-       u32 VendorID;
-       u32 DeviceID;
-       pci_dev_t pcidev;
-       void *BIOSImage;
-       u32 BIOSImageLen;
-       u8 LowMem[1536];
-} BE_VGAInfo;
-
-#endif                         /* __KERNEL__ */
-
 #define CRT_C   24             /* 24  CRT Controller Registers             */
 #define ATT_C   21             /* 21  Attribute Controller Registers       */
 #define GRA_C   9              /* 9   Graphics Controller Registers        */
index a70a76874b3587a8c38b18e785a49bc056699172..b28cdc6b8cadcffd319ed5929313b5132419b978 100644 (file)
@@ -53,9 +53,9 @@ typedef u16 X86EMU_pioAddr;
 
 /*---------------------- Macros and type definitions ----------------------*/
 
-#if defined (CONFIG_ARM)
+#if defined(CONFIG_ARM)
 #define GAS_LINE_COMMENT       "@"
-#elif defined(CONFIG_MIPS) || defined(CONFIG_PPC)
+#elif defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_X86)
 #define GAS_LINE_COMMENT       "#"
 #elif defined (CONFIG_SH)
 #define GAS_LINE_COMMENT       "!"
@@ -153,6 +153,7 @@ extern "C" {                        /* Use "C" linkage when in C++ mode */
        void X86EMU_setupMemFuncs(X86EMU_memFuncs * funcs);
        void X86EMU_setupPioFuncs(X86EMU_pioFuncs * funcs);
        void X86EMU_setupIntrFuncs(X86EMU_intrFuncs funcs[]);
+       void X86EMU_setupIntrFunc(int intnum, X86EMU_intrFuncs func);
        void X86EMU_prepareForInt(int num);
 
 /* decode.c */
@@ -160,7 +161,7 @@ extern "C" {                        /* Use "C" linkage when in C++ mode */
        void X86EMU_exec(void);
        void X86EMU_halt_sys(void);
 
-#ifdef  DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 #define HALT_SYS()  \
     printf("halt_sys: file %s, line %d\n", __FILE__, __LINE__), \
     X86EMU_halt_sys()
index 268c9d391e239a1ebdc4a61d369fa287d9722d96..304b2bf007095aa8a926965c73d1e4dabcfd86d3 100644 (file)
@@ -48,7 +48,7 @@
 #define CHECK_MEM_ACCESS_F             0x4     /*using regular linear pointer */
 #define CHECK_DATA_ACCESS_F            0x8     /*using segment:offset */
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 # define CHECK_IP_FETCH()              (M.x86.check & CHECK_IP_FETCH_F)
 # define CHECK_SP_ACCESS()             (M.x86.check & CHECK_SP_ACCESS_F)
 # define CHECK_MEM_ACCESS()            (M.x86.check & CHECK_MEM_ACCESS_F)
@@ -60,7 +60,7 @@
 # define CHECK_DATA_ACCESS()
 #endif
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 # define DEBUG_INSTRUMENT()    (M.x86.debug & DEBUG_INSTRUMENT_F)
 # define DEBUG_DECODE()                (M.x86.debug & DEBUG_DECODE_F)
 # define DEBUG_TRACE()         (M.x86.debug & DEBUG_TRACE_F)
 # define DEBUG_DECODE_NOPRINT() 0
 #endif
 
-#ifdef DEBUG
+# define ERR_PRINTF(x)         printf(x)
+# define ERR_PRINTF2(x, y)     printf(x, y)
+
+#ifdef CONFIG_X86EMU_DEBUG103
+
 
 # define DECODE_PRINTF(x)      if (DEBUG_DECODE()) \
                                    x86emu_decode_printf(x)
 # define SAVE_IP_CS(x,y)
 #endif
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 #define TRACE_REGS()                                       \
     if (DEBUG_DISASSEMBLE()) {                             \
        x86emu_just_disassemble();                          \
 # define TRACE_REGS()
 #endif
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 # define SINGLE_STEP()     if (DEBUG_STEP()) x86emu_single_step()
 #else
 # define SINGLE_STEP()
     TRACE_REGS();          \
     SINGLE_STEP()
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 # define START_OF_INSTR()
 # define END_OF_INSTR()            EndOfTheInstructionProcedure: x86emu_end_instr();
 # define END_OF_INSTR_NO_TRACE()    x86emu_end_instr();
 # define END_OF_INSTR_NO_TRACE()
 #endif
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 # define  CALL_TRACE(u,v,w,x,s)                                        \
     if (DEBUG_TRACECALLREGS())                                 \
        x86emu_dump_regs();                                     \
 # define RETURN_TRACE(n,u,v)
 #endif
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 #define DB(x)  x
 #else
 #define DB(x)
index a7fedd2f6ca1caa7d56de1cf54bec54300bdb872..29341297d96608e0a50fed2f00de9ce89a458a31 100644 (file)
@@ -282,7 +282,7 @@ typedef struct {
        u8 intno;
        volatile int intr;      /* mask of pending interrupts */
        int debug;
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
        int check;
        u16 saved_ip;
        u16 saved_cs;
index 2fa8050f6a52535fdf47d1f0680b626df2f382a8..27e90e441aa44c710226695bbac7f4e9c9c4f9c1 100644 (file)
@@ -44,7 +44,7 @@
 
 /*----------------------------- Implementation ----------------------------*/
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 
 static void print_encoded_bytes(u16 s, u16 o);
 static void print_decoded_instruction(void);
@@ -211,9 +211,7 @@ void X86EMU_dump_memory(u16 seg, u16 off, u32 amt)
        u32 start = off & 0xfffffff0;
        u32 end = (off + 16) & 0xfffffff0;
        u32 i;
-       u32 current;
 
-       current = start;
        while (end <= off + amt) {
                printk("%04x:%04x ", seg, start);
                for (i = start; i < off; i++)
@@ -229,7 +227,7 @@ void X86EMU_dump_memory(u16 seg, u16 off, u32 amt)
 void x86emu_single_step(void)
 {
        char s[1024];
-       int ps[10];
+        int ps[10];
        int ntok;
        int cmd;
        int done;
@@ -238,8 +236,6 @@ void x86emu_single_step(void)
        static int breakpoint;
        static int noDecode = 1;
 
-       char *p;
-
        if (DEBUG_BREAK()) {
                if (M.x86.saved_ip != breakpoint) {
                        return;
@@ -255,6 +251,8 @@ void x86emu_single_step(void)
        offset = M.x86.saved_ip;
        while (!done) {
                printk("-");
+               ps[1] = 0; /* Avoid dodgy compiler warnings */
+               ps[2] = 0;
                cmd = x86emu_parse_line(s, ps, &ntok);
                switch (cmd) {
                case 'u':
index a782b817b707fe95c46dfac1d4e874c16db912b9..da44c3d8d9f53798d6554e302df4535852e31d97 100644 (file)
@@ -303,7 +303,7 @@ NOTE: Do not inline this function as (*sys_rdX) is already inline!
 u8 fetch_data_byte(
     uint offset)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access((u16)get_data_segment(), offset);
 #endif
@@ -322,7 +322,7 @@ NOTE: Do not inline this function as (*sys_rdX) is already inline!
 u16 fetch_data_word(
     uint offset)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access((u16)get_data_segment(), offset);
 #endif
@@ -341,7 +341,7 @@ NOTE: Do not inline this function as (*sys_rdX) is already inline!
 u32 fetch_data_long(
     uint offset)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access((u16)get_data_segment(), offset);
 #endif
@@ -362,7 +362,7 @@ u8 fetch_data_byte_abs(
     uint segment,
     uint offset)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access(segment, offset);
 #endif
@@ -383,7 +383,7 @@ u16 fetch_data_word_abs(
     uint segment,
     uint offset)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access(segment, offset);
 #endif
@@ -404,7 +404,7 @@ u32 fetch_data_long_abs(
     uint segment,
     uint offset)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access(segment, offset);
 #endif
@@ -426,7 +426,7 @@ void store_data_byte(
     uint offset,
     u8 val)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access((u16)get_data_segment(), offset);
 #endif
@@ -448,7 +448,7 @@ void store_data_word(
     uint offset,
     u16 val)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access((u16)get_data_segment(), offset);
 #endif
@@ -470,7 +470,7 @@ void store_data_long(
     uint offset,
     u32 val)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access((u16)get_data_segment(), offset);
 #endif
@@ -493,7 +493,7 @@ void store_data_byte_abs(
     uint offset,
     u8 val)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access(segment, offset);
 #endif
@@ -516,7 +516,7 @@ void store_data_word_abs(
     uint offset,
     u16 val)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access(segment, offset);
 #endif
@@ -539,7 +539,7 @@ void store_data_long_abs(
     uint offset,
     u32 val)
 {
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (CHECK_DATA_ACCESS())
        x86emu_check_data_access(segment, offset);
 #endif
index f8e093d751ae59adbeed9329b09cf9dc8ee1e2f5..2bb5e2d9d508112124275397cd48d41e3fc845fc 100644 (file)
@@ -79,7 +79,7 @@
 
 /* constant arrays to do several instructions in just one function */
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 static char *x86emu_GenOpName[8] = {
     "ADD", "OR", "ADC", "SBB", "AND", "SUB", "XOR", "CMP"};
 #endif
@@ -160,7 +160,7 @@ static u32 (*opcD1_long_operation[])(u32 s, u8 d) =
     sar_long,
 };
 
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
 
 static char *opF6_names[8] =
   { "TEST\t", "", "NOT\t", "NEG\t", "MUL\t", "IMUL\t", "DIV\t", "IDIV\t" };
@@ -179,7 +179,7 @@ void x86emuOp_illegal_op(
 {
     START_OF_INSTR();
     if (M.x86.R_SP != 0) {
-       DECODE_PRINTF("ILLEGAL X86 OPCODE\n");
+       ERR_PRINTF("ILLEGAL X86 OPCODE\n");
        TRACE_REGS();
        DB( printk("%04x:%04x: %02X ILLEGAL X86 OPCODE!\n",
            M.x86.R_CS, M.x86.R_IP-1,op1));
@@ -1281,7 +1281,7 @@ void x86emuOp_opc80_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -1359,7 +1359,7 @@ void x86emuOp_opc81_word_RM_IMM(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -1475,7 +1475,7 @@ void x86emuOp_opc82_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -1551,7 +1551,7 @@ void x86emuOp_opc83_word_RM_IMM(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -2148,7 +2148,7 @@ void x86emuOp_pop_RM(u8 X86EMU_UNUSED(op1))
     DECODE_PRINTF("POP\t");
     FETCH_DECODE_MODRM(mod, rh, rl);
     if (rh != 0) {
-       DECODE_PRINTF("ILLEGAL DECODE OF OPCODE 8F\n");
+       ERR_PRINTF("ILLEGAL DECODE OF OPCODE 8F\n");
        HALT_SYS();
     }
     if (mod < 3) {
@@ -3083,7 +3083,7 @@ void x86emuOp_opcC0_byte_RM_MEM(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -3158,7 +3158,7 @@ void x86emuOp_opcC1_word_RM_MEM(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -3347,7 +3347,7 @@ void x86emuOp_mov_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
     DECODE_PRINTF("MOV\t");
     FETCH_DECODE_MODRM(mod, rh, rl);
     if (rh != 0) {
-       DECODE_PRINTF("ILLEGAL DECODE OF OPCODE c6\n");
+       ERR_PRINTF("ILLEGAL DECODE OF OPCODE c6\n");
        HALT_SYS();
     }
     if (mod < 3) {
@@ -3381,7 +3381,7 @@ void x86emuOp_mov_word_RM_IMM(u8 X86EMU_UNUSED(op1))
     DECODE_PRINTF("MOV\t");
     FETCH_DECODE_MODRM(mod, rh, rl);
     if (rh != 0) {
-       DECODE_PRINTF("ILLEGAL DECODE OF OPCODE 8F\n");
+       ERR_PRINTF("ILLEGAL DECODE OF OPCODE 8F\n");
        HALT_SYS();
     }
     if (mod < 3) {
@@ -3630,7 +3630,7 @@ void x86emuOp_opcD0_byte_RM_1(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -3701,7 +3701,7 @@ void x86emuOp_opcD1_word_RM_1(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -3803,7 +3803,7 @@ void x86emuOp_opcD2_byte_RM_CL(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -3876,7 +3876,7 @@ void x86emuOp_opcD3_word_RM_CL(u8 X86EMU_UNUSED(op1))
      */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -3968,7 +3968,7 @@ void x86emuOp_aam(u8 X86EMU_UNUSED(op1))
     DECODE_PRINTF("AAM\n");
     a = fetch_byte_imm();      /* this is a stupid encoding. */
     if (a != 10) {
-       DECODE_PRINTF("ERROR DECODING AAM\n");
+       ERR_PRINTF("ERROR DECODING AAM\n");
        TRACE_REGS();
        HALT_SYS();
     }
@@ -4443,7 +4443,7 @@ void x86emuOp_opcF6_byte_RM(u8 X86EMU_UNUSED(op1))
            test_byte(destval, srcval);
            break;
        case 1:
-           DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
+           ERR_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
            HALT_SYS();
            break;
        case 2:
@@ -4490,7 +4490,7 @@ void x86emuOp_opcF6_byte_RM(u8 X86EMU_UNUSED(op1))
            test_byte(*destreg, srcval);
            break;
        case 1:
-           DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
+           ERR_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
            HALT_SYS();
            break;
        case 2:
@@ -4559,7 +4559,7 @@ void x86emuOp_opcF7_word_RM(u8 X86EMU_UNUSED(op1))
                test_long(destval, srcval);
                break;
            case 1:
-               DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F7\n");
+               ERR_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F7\n");
                HALT_SYS();
                break;
            case 2:
@@ -4611,7 +4611,7 @@ void x86emuOp_opcF7_word_RM(u8 X86EMU_UNUSED(op1))
                test_word(destval, srcval);
                break;
            case 1:
-               DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F7\n");
+               ERR_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F7\n");
                HALT_SYS();
                break;
            case 2:
@@ -4666,7 +4666,7 @@ void x86emuOp_opcF7_word_RM(u8 X86EMU_UNUSED(op1))
                test_long(*destreg, srcval);
                break;
            case 1:
-               DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
+               ERR_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
                HALT_SYS();
                break;
            case 2:
@@ -4715,7 +4715,7 @@ void x86emuOp_opcF7_word_RM(u8 X86EMU_UNUSED(op1))
                test_word(*destreg, srcval);
                break;
            case 1:
-               DECODE_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
+               ERR_PRINTF("ILLEGAL OP MOD=00 RH=01 OP=F6\n");
                HALT_SYS();
                break;
            case 2:
@@ -4859,7 +4859,7 @@ void x86emuOp_opcFE_byte_RM(u8 X86EMU_UNUSED(op1))
     /* Yet another special case instruction. */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -4879,7 +4879,7 @@ void x86emuOp_opcFE_byte_RM(u8 X86EMU_UNUSED(op1))
        case 5:
        case 6:
        case 7:
-           DECODE_PRINTF2("ILLEGAL OP MAJOR OP 0xFE MINOR OP %x \n", mod);
+           ERR_PRINTF2("ILLEGAL OP MAJOR OP 0xFE MINOR OP %x\n", mod);
            HALT_SYS();
            break;
        }
@@ -4923,7 +4923,7 @@ void x86emuOp_opcFF_word_RM(u8 X86EMU_UNUSED(op1))
     /* Yet another special case instruction. */
     START_OF_INSTR();
     FETCH_DECODE_MODRM(mod, rh, rl);
-#ifdef DEBUG
+#ifdef CONFIG_X86EMU_DEBUG
     if (DEBUG_DECODE()) {
        /* XXX DECODE_PRINTF may be changed to something more
           general, so that it is important to leave the strings
@@ -4961,7 +4961,7 @@ void x86emuOp_opcFF_word_RM(u8 X86EMU_UNUSED(op1))
            DECODE_PRINTF("PUSH\t");
            break;
        case 7:
-           DECODE_PRINTF("ILLEGAL DECODING OF OPCODE FF\t");
+           ERR_PRINTF("ILLEGAL DECODING OF OPCODE FF\t");
            HALT_SYS();
            break;
        }
@@ -5092,7 +5092,7 @@ void x86emuOp_opcFF_word_RM(u8 X86EMU_UNUSED(op1))
            M.x86.R_IP = *destreg;
            break;
        case 3:         /* jmp far ptr ... */
-           DECODE_PRINTF("OPERATION UNDEFINED 0XFF \n");
+           ERR_PRINTF("OPERATION UNDEFINED 0XFF\n");
            TRACE_AND_STEP();
            HALT_SYS();
            break;
@@ -5104,7 +5104,7 @@ void x86emuOp_opcFF_word_RM(u8 X86EMU_UNUSED(op1))
            M.x86.R_IP = (u16) (*destreg);
            break;
        case 5:         /* jmp far ptr ... */
-           DECODE_PRINTF("OPERATION UNDEFINED 0XFF \n");
+           ERR_PRINTF("OPERATION UNDEFINED 0XFF\n");
            TRACE_AND_STEP();
            HALT_SYS();
            break;
index 59dbb422dd40d28595e0f77eef264e3a742f9b40..be4ef364432018d371218a76979c0ea3ec5f400c 100644 (file)
@@ -58,7 +58,7 @@ void x86emuOp2_illegal_op(
     u8 op2)
 {
     START_OF_INSTR();
-    DECODE_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n");
+    ERR_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n");
     TRACE_REGS();
     printk("%04x:%04x: %02X ILLEGAL EXTENDED X86 OPCODE!\n",
        M.x86.R_CS, M.x86.R_IP-2,op2);
@@ -1089,7 +1089,7 @@ void x86emuOp2_btX_I(u8 X86EMU_UNUSED(op2))
        DECODE_PRINTF("BTC\t");
        break;
     default:
-       DECODE_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n");
+       ERR_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n");
        TRACE_REGS();
        printk("%04x:%04x: %02X%02X ILLEGAL EXTENDED X86 OPCODE EXTENSION!\n",
                M.x86.R_CS, M.x86.R_IP-3,op2, (mod<<6)|(rh<<3)|rl);
index 21f9730bece4f8e783c84768cc80130cedc0555c..0ba9c0c105dd14cd2c17614da5ff71e84efca7c1 100644 (file)
@@ -273,6 +273,11 @@ void X86EMU_setupPioFuncs(X86EMU_pioFuncs * funcs)
        sys_outl = funcs->outl;
 }
 
+void X86EMU_setupIntrFunc(int intnum, X86EMU_intrFuncs func)
+{
+       _X86EMU_intrTab[intnum] = func;
+}
+
 /****************************************************************************
 PARAMETERS:
 funcs   - New interrupt vector table to make active
index a93a8e1c04b797fe4d8cce58b3e232721c886519..37d2d2a28eef53bbd2477b7bb06b37f415e68735 100644 (file)
@@ -137,6 +137,33 @@ static void sunxi_dma_init(volatile u8 *port_mmio)
 }
 #endif
 
+int ahci_reset(u32 base)
+{
+       int i = 1000;
+       u32 host_ctl_reg = base + HOST_CTL;
+       u32 tmp = readl(host_ctl_reg); /* global controller reset */
+
+       if ((tmp & HOST_RESET) == 0)
+               writel_with_flush(tmp | HOST_RESET, host_ctl_reg);
+
+       /*
+        * reset must complete within 1 second, or
+        * the hardware should be considered fried.
+        */
+       do {
+               udelay(1000);
+               tmp = readl(host_ctl_reg);
+               i--;
+       } while ((i > 0) && (tmp & HOST_RESET));
+
+       if (i == 0) {
+               printf("controller reset failed (0x%x)\n", tmp);
+               return -1;
+       }
+
+       return 0;
+}
+
 static int ahci_host_init(struct ahci_probe_ent *probe_ent)
 {
 #ifndef CONFIG_SCSI_AHCI_PLAT
@@ -156,23 +183,9 @@ static int ahci_host_init(struct ahci_probe_ent *probe_ent)
        cap_save &= ((1 << 28) | (1 << 17));
        cap_save |= (1 << 27);  /* Staggered Spin-up. Not needed. */
 
-       /* global controller reset */
-       tmp = readl(mmio + HOST_CTL);
-       if ((tmp & HOST_RESET) == 0)
-               writel_with_flush(tmp | HOST_RESET, mmio + HOST_CTL);
-
-       /* reset must complete within 1 second, or
-        * the hardware should be considered fried.
-        */
-       i = 1000;
-       do {
-               udelay(1000);
-               tmp = readl(mmio + HOST_CTL);
-               if (!i--) {
-                       debug("controller reset failed (0x%x)\n", tmp);
-                       return -1;
-               }
-       } while (tmp & HOST_RESET);
+       ret = ahci_reset(probe_ent->mmio_base);
+       if (ret)
+               return ret;
 
        writel_with_flush(HOST_AHCI_EN, mmio + HOST_CTL);
        writel(cap_save, mmio + HOST_CAP);
@@ -730,7 +743,7 @@ static int ata_scsiop_read_write(ccb *pccb, u8 is_write)
                u16 now_blocks; /* number of blocks per iteration */
                u32 transfer_size; /* number of bytes per iteration */
 
-               now_blocks = min(MAX_SATA_BLOCKS_READ_WRITE, blocks);
+               now_blocks = min((u16)MAX_SATA_BLOCKS_READ_WRITE, blocks);
 
                transfer_size = ATA_SECT_SIZE * now_blocks;
                if (transfer_size > user_buffer_size) {
@@ -997,12 +1010,11 @@ static int ata_io_flush(u8 port)
 }
 
 
-void scsi_bus_reset(void)
+__weak void scsi_bus_reset(void)
 {
        /*Not implement*/
 }
 
-
 void scsi_print_error(ccb * pccb)
 {
        /*The ahci error info can be read in the ahci driver*/
index 5cf91ade8d2cb343a42898306d951b9e4d913155..30426842cc40e31be5e0a2ef3e8dac931463eef9 100644 (file)
@@ -192,6 +192,11 @@ int init_sata(int dev)
        return 0;
 }
 
+int reset_sata(int dev)
+{
+       return 0;
+}
+
 static inline u8 sata_inb(unsigned long ioaddr)
 {
        return inb(ioaddr);
index c68fd2f256541403a97f840599353dbadf7ec6df..01a4148a5201ebe4738fdd399d5354068e4c614c 100644 (file)
@@ -592,6 +592,29 @@ int init_sata(int dev)
        return 0;
 }
 
+int reset_sata(int dev)
+{
+       struct ahci_probe_ent *probe_ent;
+       struct sata_host_regs *host_mmio;
+
+       if (dev < 0 || dev > (CONFIG_SYS_SATA_MAX_DEVICE - 1)) {
+               printf("The sata index %d is out of ranges\n\r", dev);
+               return -1;
+       }
+
+       probe_ent = (struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+       if (NULL == probe_ent)
+               /* not initialized, so nothing to reset */
+               return 0;
+
+       host_mmio = (struct sata_host_regs *)probe_ent->mmio_base;
+       setbits_le32(&host_mmio->ghc, SATA_HOST_GHC_HR);
+       while (readl(&host_mmio->ghc) & SATA_HOST_GHC_HR)
+               udelay(100);
+
+       return 0;
+}
+
 static void dwc_ahsata_print_info(int dev)
 {
        block_dev_desc_t *pdev = &(sata_dev_desc[dev]);
index ebd626178d098ce2beb4a00221997dc585feb10a..71d7cec7bdd2256877105555b9e4904b1438cc93 100644 (file)
@@ -255,6 +255,11 @@ int init_sata(int dev)
        return 0;
 }
 
+int reset_sata(int dev)
+{
+       return 0;
+}
+
 static void fsl_sata_dump_regs(fsl_sata_reg_t __iomem *reg)
 {
        printf("\n\rSATA:           %08x\n\r", (u32)reg);
index b7fd1cd634486639647bec5c9988001ca17993c1..c2673bd05dc6873eb9fa891eaeceb97460d83986 100644 (file)
@@ -1009,6 +1009,11 @@ int init_sata(int dev)
        return res;
 }
 
+int reset_sata(int dev)
+{
+       return 0;
+}
+
 /* Read up to 255 sectors
  *
  * Returns sectors read
index 2093cf06b4bbda0a3693982499933563e1fc0156..b678f60b2d763df43cf5152215210ebd7b9213b9 100644 (file)
@@ -43,7 +43,6 @@ struct ata_port {
 
 #define DRV_NAME               "pata-bfin"
 #define DRV_VERSION            "0.9"
-#define __iomem
 
 #define ATA_REG_CTRL           0x0E
 #define ATA_REG_ALTSTATUS      ATA_REG_CTRL
index efca5eaba424478490fdf5382255f689e84261b1..9e8b067cdc890ca77f653173455ab3006501ccca 100644 (file)
@@ -423,6 +423,11 @@ int init_sata(int dev)
        return rc;
 }
 
+int reset_sata(int dev)
+{
+       return 0;
+}
+
 static u8 ata_check_altstatus(struct ata_port *ap)
 {
        u8 val = 0;
index 1f510cd265c0b42657fc74b28253965bea1c3de0..daff7d4ab57a7d0d6aefde5ef5af8f944a096e43 100644 (file)
@@ -519,7 +519,7 @@ int init_sata(int dev)
        u16 word;
 
        if (init_done == 1 && dev < sata_info.maxport)
-               return 1;
+               return 0;
 
        init_done = 1;
 
@@ -571,6 +571,11 @@ int init_sata(int dev)
        return 0;
 }
 
+int reset_sata(int dev)
+{
+       return 0;
+}
+
 /*
  * SATA interface between low level driver and command layer
  */
index 3aa6fc9839e95eda30f372bfe2cceac60c1ad6a9..61ffb66a7711db09f72b37cf3dc76001e409a333 100644 (file)
@@ -702,6 +702,11 @@ int init_sata (int dev)
        return res;
 }
 
+int reset_sata(int dev)
+{
+       return 0;
+}
+
 /* Check if device is connected to port */
 int sata_bus_probe (int portno)
 {
index 151c2398a4d47fce304d43a6ae775befd379baa2..f14695b2d6eae985d366827d69bcedda1ce1e2ce 100644 (file)
@@ -4,5 +4,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y := device.o lists.o root.o uclass.o util.o
+obj-$(CONFIG_DM)       += device.o lists.o root.o uclass.o util.o
 obj-$(CONFIG_OF_CONTROL) += simple-bus.o
+obj-$(CONFIG_DM_DEVICE_REMOVE) += device-remove.o
diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c
new file mode 100644 (file)
index 0000000..8fc6b71
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * Device manager
+ *
+ * Copyright (c) 2014 Google, Inc
+ *
+ * (C) Copyright 2012
+ * Pavel Herrmann <morpheus.ibis@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <malloc.h>
+#include <dm/device.h>
+#include <dm/device-internal.h>
+#include <dm/uclass.h>
+#include <dm/uclass-internal.h>
+#include <dm/util.h>
+
+/**
+ * device_chld_unbind() - Unbind all device's children from the device
+ *
+ * On error, the function continues to unbind all children, and reports the
+ * first error.
+ *
+ * @dev:       The device that is to be stripped of its children
+ * @return 0 on success, -ve on error
+ */
+static int device_chld_unbind(struct udevice *dev)
+{
+       struct udevice *pos, *n;
+       int ret, saved_ret = 0;
+
+       assert(dev);
+
+       list_for_each_entry_safe(pos, n, &dev->child_head, sibling_node) {
+               ret = device_unbind(pos);
+               if (ret && !saved_ret)
+                       saved_ret = ret;
+       }
+
+       return saved_ret;
+}
+
+/**
+ * device_chld_remove() - Stop all device's children
+ * @dev:       The device whose children are to be removed
+ * @return 0 on success, -ve on error
+ */
+static int device_chld_remove(struct udevice *dev)
+{
+       struct udevice *pos, *n;
+       int ret;
+
+       assert(dev);
+
+       list_for_each_entry_safe(pos, n, &dev->child_head, sibling_node) {
+               ret = device_remove(pos);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
+int device_unbind(struct udevice *dev)
+{
+       struct driver *drv;
+       int ret;
+
+       if (!dev)
+               return -EINVAL;
+
+       if (dev->flags & DM_FLAG_ACTIVATED)
+               return -EINVAL;
+
+       drv = dev->driver;
+       assert(drv);
+
+       if (drv->unbind) {
+               ret = drv->unbind(dev);
+               if (ret)
+                       return ret;
+       }
+
+       ret = device_chld_unbind(dev);
+       if (ret)
+               return ret;
+
+       ret = uclass_unbind_device(dev);
+       if (ret)
+               return ret;
+
+       if (dev->parent)
+               list_del(&dev->sibling_node);
+       free(dev);
+
+       return 0;
+}
+
+/**
+ * device_free() - Free memory buffers allocated by a device
+ * @dev:       Device that is to be started
+ */
+void device_free(struct udevice *dev)
+{
+       int size;
+
+       if (dev->driver->priv_auto_alloc_size) {
+               free(dev->priv);
+               dev->priv = NULL;
+       }
+       if (dev->flags & DM_FLAG_ALLOC_PDATA) {
+               free(dev->platdata);
+               dev->platdata = NULL;
+       }
+       size = dev->uclass->uc_drv->per_device_auto_alloc_size;
+       if (size) {
+               free(dev->uclass_priv);
+               dev->uclass_priv = NULL;
+       }
+       if (dev->parent) {
+               size = dev->parent->driver->per_child_auto_alloc_size;
+               if (size) {
+                       free(dev->parent_priv);
+                       dev->parent_priv = NULL;
+               }
+       }
+}
+
+int device_remove(struct udevice *dev)
+{
+       struct driver *drv;
+       int ret;
+
+       if (!dev)
+               return -EINVAL;
+
+       if (!(dev->flags & DM_FLAG_ACTIVATED))
+               return 0;
+
+       drv = dev->driver;
+       assert(drv);
+
+       ret = uclass_pre_remove_device(dev);
+       if (ret)
+               return ret;
+
+       ret = device_chld_remove(dev);
+       if (ret)
+               goto err;
+
+       if (drv->remove) {
+               ret = drv->remove(dev);
+               if (ret)
+                       goto err_remove;
+       }
+
+       if (dev->parent && dev->parent->driver->child_post_remove) {
+               ret = dev->parent->driver->child_post_remove(dev);
+               if (ret) {
+                       dm_warn("%s: Device '%s' failed child_post_remove()",
+                               __func__, dev->name);
+               }
+       }
+
+       device_free(dev);
+
+       dev->seq = -1;
+       dev->flags &= ~DM_FLAG_ACTIVATED;
+
+       return ret;
+
+err_remove:
+       /* We can't put the children back */
+       dm_warn("%s: Device '%s' failed to remove, but children are gone\n",
+               __func__, dev->name);
+err:
+       ret = uclass_post_probe_device(dev);
+       if (ret) {
+               dm_warn("%s: Device '%s' failed to post_probe on error path\n",
+                       __func__, dev->name);
+       }
+
+       return ret;
+}
index 49faa29dc1a0eecaa84e76371b8301c2eef14d7b..963b16f26f0dc015a7f676891e0d845b42ec6594 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/**
- * device_chld_unbind() - Unbind all device's children from the device
- *
- * On error, the function continues to unbind all children, and reports the
- * first error.
- *
- * @dev:       The device that is to be stripped of its children
- * @return 0 on success, -ve on error
- */
-static int device_chld_unbind(struct udevice *dev)
-{
-       struct udevice *pos, *n;
-       int ret, saved_ret = 0;
-
-       assert(dev);
-
-       list_for_each_entry_safe(pos, n, &dev->child_head, sibling_node) {
-               ret = device_unbind(pos);
-               if (ret && !saved_ret)
-                       saved_ret = ret;
-       }
-
-       return saved_ret;
-}
-
-/**
- * device_chld_remove() - Stop all device's children
- * @dev:       The device whose children are to be removed
- * @return 0 on success, -ve on error
- */
-static int device_chld_remove(struct udevice *dev)
-{
-       struct udevice *pos, *n;
-       int ret;
-
-       assert(dev);
-
-       list_for_each_entry_safe(pos, n, &dev->child_head, sibling_node) {
-               ret = device_remove(pos);
-               if (ret)
-                       return ret;
-       }
-
-       return 0;
-}
-
 int device_bind(struct udevice *parent, struct driver *drv, const char *name,
                void *platdata, int of_offset, struct udevice **devp)
 {
@@ -167,71 +121,6 @@ int device_bind_by_name(struct udevice *parent, bool pre_reloc_only,
                           -1, devp);
 }
 
-int device_unbind(struct udevice *dev)
-{
-       struct driver *drv;
-       int ret;
-
-       if (!dev)
-               return -EINVAL;
-
-       if (dev->flags & DM_FLAG_ACTIVATED)
-               return -EINVAL;
-
-       drv = dev->driver;
-       assert(drv);
-
-       if (drv->unbind) {
-               ret = drv->unbind(dev);
-               if (ret)
-                       return ret;
-       }
-
-       ret = device_chld_unbind(dev);
-       if (ret)
-               return ret;
-
-       ret = uclass_unbind_device(dev);
-       if (ret)
-               return ret;
-
-       if (dev->parent)
-               list_del(&dev->sibling_node);
-       free(dev);
-
-       return 0;
-}
-
-/**
- * device_free() - Free memory buffers allocated by a device
- * @dev:       Device that is to be started
- */
-static void device_free(struct udevice *dev)
-{
-       int size;
-
-       if (dev->driver->priv_auto_alloc_size) {
-               free(dev->priv);
-               dev->priv = NULL;
-       }
-       if (dev->flags & DM_FLAG_ALLOC_PDATA) {
-               free(dev->platdata);
-               dev->platdata = NULL;
-       }
-       size = dev->uclass->uc_drv->per_device_auto_alloc_size;
-       if (size) {
-               free(dev->uclass_priv);
-               dev->uclass_priv = NULL;
-       }
-       if (dev->parent) {
-               size = dev->parent->driver->per_child_auto_alloc_size;
-               if (size) {
-                       free(dev->parent_priv);
-                       dev->parent_priv = NULL;
-               }
-       }
-}
-
 int device_probe_child(struct udevice *dev, void *parent_priv)
 {
        struct driver *drv;
@@ -342,67 +231,10 @@ int device_probe(struct udevice *dev)
        return device_probe_child(dev, NULL);
 }
 
-int device_remove(struct udevice *dev)
-{
-       struct driver *drv;
-       int ret;
-
-       if (!dev)
-               return -EINVAL;
-
-       if (!(dev->flags & DM_FLAG_ACTIVATED))
-               return 0;
-
-       drv = dev->driver;
-       assert(drv);
-
-       ret = uclass_pre_remove_device(dev);
-       if (ret)
-               return ret;
-
-       ret = device_chld_remove(dev);
-       if (ret)
-               goto err;
-
-       if (drv->remove) {
-               ret = drv->remove(dev);
-               if (ret)
-                       goto err_remove;
-       }
-
-       if (dev->parent && dev->parent->driver->child_post_remove) {
-               ret = dev->parent->driver->child_post_remove(dev);
-               if (ret) {
-                       dm_warn("%s: Device '%s' failed child_post_remove()",
-                               __func__, dev->name);
-               }
-       }
-
-       device_free(dev);
-
-       dev->seq = -1;
-       dev->flags &= ~DM_FLAG_ACTIVATED;
-
-       return ret;
-
-err_remove:
-       /* We can't put the children back */
-       dm_warn("%s: Device '%s' failed to remove, but children are gone\n",
-               __func__, dev->name);
-err:
-       ret = uclass_post_probe_device(dev);
-       if (ret) {
-               dm_warn("%s: Device '%s' failed to post_probe on error path\n",
-                       __func__, dev->name);
-       }
-
-       return ret;
-}
-
 void *dev_get_platdata(struct udevice *dev)
 {
        if (!dev) {
-               dm_warn("%s: null device", __func__);
+               dm_warn("%s: null device\n", __func__);
                return NULL;
        }
 
@@ -412,7 +244,7 @@ void *dev_get_platdata(struct udevice *dev)
 void *dev_get_priv(struct udevice *dev)
 {
        if (!dev) {
-               dm_warn("%s: null device", __func__);
+               dm_warn("%s: null device\n", __func__);
                return NULL;
        }
 
@@ -422,7 +254,7 @@ void *dev_get_priv(struct udevice *dev)
 void *dev_get_parentdata(struct udevice *dev)
 {
        if (!dev) {
-               dm_warn("%s: null device", __func__);
+               dm_warn("%s: null device\n", __func__);
                return NULL;
        }
 
@@ -548,3 +380,13 @@ int device_find_next_child(struct udevice **devp)
 
        return 0;
 }
+
+struct udevice *dev_get_parent(struct udevice *child)
+{
+       return child->parent;
+}
+
+ulong dev_get_of_data(struct udevice *dev)
+{
+       return dev->of_id->data;
+}
index 3a1ea8565449699a39ba5684dbecfbf71e30780b..ff115c4723e7135986daced0f08dede34379838f 100644 (file)
@@ -25,9 +25,6 @@ struct driver *lists_driver_lookup_name(const char *name)
        const int n_ents = ll_entry_count(struct driver, driver);
        struct driver *entry;
 
-       if (!drv || !n_ents)
-               return NULL;
-
        for (entry = drv; entry != drv + n_ents; entry++) {
                if (!strcmp(name, entry->name))
                        return entry;
@@ -44,9 +41,6 @@ struct uclass_driver *lists_uclass_lookup(enum uclass_id id)
        const int n_ents = ll_entry_count(struct uclass_driver, uclass);
        struct uclass_driver *entry;
 
-       if ((id == UCLASS_INVALID) || !uclass)
-               return NULL;
-
        for (entry = uclass; entry != uclass + n_ents; entry++) {
                if (entry->id == id)
                        return entry;
@@ -77,34 +71,60 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only)
        return result;
 }
 
+int device_bind_driver(struct udevice *parent, const char *drv_name,
+                      const char *dev_name, struct udevice **devp)
+{
+       struct driver *drv;
+       int ret;
+
+       drv = lists_driver_lookup_name(drv_name);
+       if (!drv) {
+               printf("Cannot find driver '%s'\n", drv_name);
+               return -ENOENT;
+       }
+       ret = device_bind(parent, drv, dev_name, NULL, -1, devp);
+       if (ret) {
+               printf("Cannot create device named '%s' (err=%d)\n",
+                      dev_name, ret);
+               return ret;
+       }
+
+       return 0;
+}
+
 #ifdef CONFIG_OF_CONTROL
 /**
  * driver_check_compatible() - Check if a driver is compatible with this node
  *
  * @param blob:                Device tree pointer
  * @param offset:      Offset of node in device tree
- * @param of_matchL    List of compatible strings to match
+ * @param of_match:    List of compatible strings to match
+ * @param of_idp:      Returns the match that was found
  * @return 0 if there is a match, -ENOENT if no match, -ENODEV if the node
  * does not have a compatible string, other error <0 if there is a device
  * tree error
  */
 static int driver_check_compatible(const void *blob, int offset,
-                                  const struct udevice_id *of_match)
+                                  const struct udevice_id *of_match,
+                                  const struct udevice_id **of_idp)
 {
        int ret;
 
+       *of_idp = NULL;
        if (!of_match)
                return -ENOENT;
 
        while (of_match->compatible) {
                ret = fdt_node_check_compatible(blob, offset,
                                                of_match->compatible);
-               if (!ret)
+               if (!ret) {
+                       *of_idp = of_match;
                        return 0;
-               else if (ret == -FDT_ERR_NOTFOUND)
+               } else if (ret == -FDT_ERR_NOTFOUND) {
                        return -ENODEV;
-               else if (ret < 0)
+               } else if (ret < 0) {
                        return -EINVAL;
+               }
                of_match++;
        }
 
@@ -116,6 +136,7 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
 {
        struct driver *driver = ll_entry_start(struct driver, driver);
        const int n_ents = ll_entry_count(struct driver, driver);
+       const struct udevice_id *id;
        struct driver *entry;
        struct udevice *dev;
        bool found = false;
@@ -127,7 +148,8 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
        if (devp)
                *devp = NULL;
        for (entry = driver; entry != driver + n_ents; entry++) {
-               ret = driver_check_compatible(blob, offset, entry->of_match);
+               ret = driver_check_compatible(blob, offset, entry->of_match,
+                                             &id);
                name = fdt_get_name(blob, offset, NULL);
                if (ret == -ENOENT) {
                        continue;
@@ -136,8 +158,7 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
                        break;
                } else if (ret) {
                        dm_warn("Device tree error at offset %d\n", offset);
-                       if (!result || ret != -ENOENT)
-                               result = ret;
+                       result = ret;
                        break;
                }
 
@@ -147,6 +168,7 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
                        dm_warn("Error binding driver '%s'\n", entry->name);
                        return ret;
                } else {
+                       dev->of_id = id;
                        found = true;
                        if (devp)
                                *devp = dev;
index a328a4876f13ad68df6d5fddd8817df622d0195d..47b3acfbe981da9fcfe5ca6d7c20e60dd63b0285 100644 (file)
@@ -73,10 +73,8 @@ int dm_scan_platdata(bool pre_reloc_only)
                dm_warn("Some drivers were not found\n");
                ret = 0;
        }
-       if (ret)
-               return ret;
 
-       return 0;
+       return ret;
 }
 
 #ifdef CONFIG_OF_CONTROL
index 29681e18a6d0398558382e3944d063a0912db3d8..f9d493883452016f59e2669495fb35295bca2f5a 100644 (file)
@@ -246,7 +246,7 @@ int run_descriptor_jr(uint32_t *desc)
        struct result op;
        int ret = 0;
 
-       memset(&op, sizeof(op), 0);
+       memset(&op, 0, sizeof(op));
 
        ret = jr_enqueue(desc, desc_done, &op);
        if (ret) {
index 59f2fd661096964a79c4edcc302084c39a7adf80..c139da6da94de92e6df54b0dbf71c0730ea9432c 100644 (file)
@@ -92,7 +92,6 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        ddr_out32(&ddr->timing_cfg_0, regs->timing_cfg_0);
        ddr_out32(&ddr->timing_cfg_1, regs->timing_cfg_1);
        ddr_out32(&ddr->timing_cfg_2, regs->timing_cfg_2);
-       ddr_out32(&ddr->sdram_cfg_2, regs->ddr_sdram_cfg_2);
        ddr_out32(&ddr->sdram_mode, regs->ddr_sdram_mode);
        ddr_out32(&ddr->sdram_mode_2, regs->ddr_sdram_mode_2);
        ddr_out32(&ddr->sdram_mode_3, regs->ddr_sdram_mode_3);
@@ -105,9 +104,6 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        ddr_out32(&ddr->sdram_interval, regs->ddr_sdram_interval);
        ddr_out32(&ddr->sdram_data_init, regs->ddr_data_init);
        ddr_out32(&ddr->sdram_clk_cntl, regs->ddr_sdram_clk_cntl);
-       ddr_out32(&ddr->init_addr, regs->ddr_init_addr);
-       ddr_out32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
-
        ddr_out32(&ddr->timing_cfg_4, regs->timing_cfg_4);
        ddr_out32(&ddr->timing_cfg_5, regs->timing_cfg_5);
        ddr_out32(&ddr->ddr_zq_cntl, regs->ddr_zq_cntl);
@@ -128,7 +124,24 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        ddr_out32(&ddr->ddr_sdram_rcw_1, regs->ddr_sdram_rcw_1);
        ddr_out32(&ddr->ddr_sdram_rcw_2, regs->ddr_sdram_rcw_2);
        ddr_out32(&ddr->ddr_cdr1, regs->ddr_cdr1);
-       ddr_out32(&ddr->ddr_cdr2, regs->ddr_cdr2);
+#ifdef CONFIG_DEEP_SLEEP
+       if (is_warm_boot()) {
+               ddr_out32(&ddr->sdram_cfg_2,
+                         regs->ddr_sdram_cfg_2 & ~SDRAM_CFG2_D_INIT);
+               ddr_out32(&ddr->init_addr, CONFIG_SYS_SDRAM_BASE);
+               ddr_out32(&ddr->init_ext_addr, DDR_INIT_ADDR_EXT_UIA);
+
+               /* DRAM VRef will not be trained */
+               ddr_out32(&ddr->ddr_cdr2,
+                         regs->ddr_cdr2 & ~DDR_CDR2_VREF_TRAIN_EN);
+       } else
+#endif
+       {
+               ddr_out32(&ddr->sdram_cfg_2, regs->ddr_sdram_cfg_2);
+               ddr_out32(&ddr->init_addr, regs->ddr_init_addr);
+               ddr_out32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
+               ddr_out32(&ddr->ddr_cdr2, regs->ddr_cdr2);
+       }
        ddr_out32(&ddr->err_disable, regs->err_disable);
        ddr_out32(&ddr->err_int_en, regs->err_int_en);
        for (i = 0; i < 32; i++) {
@@ -167,8 +180,20 @@ step2:
        udelay(500);
        asm volatile("dsb sy;isb");
 
+#ifdef CONFIG_DEEP_SLEEP
+       if (is_warm_boot()) {
+               /* enter self-refresh */
+               temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg_2);
+               temp_sdram_cfg |= SDRAM_CFG2_FRC_SR;
+               ddr_out32(&ddr->sdram_cfg_2, temp_sdram_cfg);
+               /* do board specific memory setup */
+               board_mem_sleep_setup();
+
+               temp_sdram_cfg = (ddr_in32(&ddr->sdram_cfg) | SDRAM_CFG_BI);
+       } else
+#endif
+               temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI;
        /* Let the controller go */
-       temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI;
        ddr_out32(&ddr->sdram_cfg, temp_sdram_cfg | SDRAM_CFG_MEM_EN);
        asm volatile("dsb sy;isb");
 
@@ -211,4 +236,12 @@ step2:
 
        if (timeout <= 0)
                printf("Waiting for D_INIT timeout. Memory may not work.\n");
+#ifdef CONFIG_DEEP_SLEEP
+       if (is_warm_boot()) {
+               /* exit self-refresh */
+               temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg_2);
+               temp_sdram_cfg &= ~SDRAM_CFG2_FRC_SR;
+               ddr_out32(&ddr->sdram_cfg_2, temp_sdram_cfg);
+       }
+#endif
 }
index 9a156bfd5e18c41d9ddcdfb4add0f63937808e11..03d7ff17dd196563b987f398e939d0d58fd6530d 100644 (file)
@@ -253,22 +253,30 @@ static void set_csn_config_2(int i, fsl_ddr_cfg_regs_t *ddr)
 /* -3E = 667 CL5, -25 = CL6 800, -25E = CL5 800 */
 
 #if !defined(CONFIG_SYS_FSL_DDR1)
+/*
+ * Check DIMM configuration, return 2 if quad-rank or two dual-rank
+ * Return 1 if other two slots configuration. Return 0 if single slot.
+ */
 static inline int avoid_odt_overlap(const dimm_params_t *dimm_params)
 {
 #if CONFIG_DIMM_SLOTS_PER_CTLR == 1
        if (dimm_params[0].n_ranks == 4)
-               return 1;
+               return 2;
 #endif
 
 #if CONFIG_DIMM_SLOTS_PER_CTLR == 2
        if ((dimm_params[0].n_ranks == 2) &&
                (dimm_params[1].n_ranks == 2))
-               return 1;
+               return 2;
 
 #ifdef CONFIG_FSL_DDR_FIRST_SLOT_QUAD_CAPABLE
        if (dimm_params[0].n_ranks == 4)
-               return 1;
+               return 2;
 #endif
+
+       if ((dimm_params[0].n_ranks != 0) &&
+           (dimm_params[2].n_ranks != 0))
+               return 1;
 #endif
        return 0;
 }
@@ -303,7 +311,7 @@ static void set_timing_cfg_0(fsl_ddr_cfg_regs_t *ddr,
 
 #ifdef CONFIG_SYS_FSL_DDR4
        /* tXP=max(4nCK, 6ns) */
-       int txp = max(mclk_ps * 4, 6000); /* unit=ps */
+       int txp = max((int)mclk_ps * 4, 6000); /* unit=ps */
        trwt_mclk = 2;
        twrt_mclk = 1;
        act_pd_exit_mclk = picos_to_mclk(txp);
@@ -312,10 +320,12 @@ static void set_timing_cfg_0(fsl_ddr_cfg_regs_t *ddr,
         * MRS_CYC = max(tMRD, tMOD)
         * tMRD = 8nCK, tMOD = max(24nCK, 15ns)
         */
-       tmrd_mclk = max(24, picos_to_mclk(15000));
+       tmrd_mclk = max(24U, picos_to_mclk(15000));
 #elif defined(CONFIG_SYS_FSL_DDR3)
        unsigned int data_rate = get_ddr_freq(0);
        int txp;
+       unsigned int ip_rev;
+       int odt_overlap;
        /*
         * (tXARD and tXARDS). Empirical?
         * The DDR3 spec has not tXARD,
@@ -325,19 +335,47 @@ static void set_timing_cfg_0(fsl_ddr_cfg_regs_t *ddr,
         * spec has not the tAXPD, we use
         * tAXPD=1, need design to confirm.
         */
-       txp = max(mclk_ps * 3, (mclk_ps > 1540 ? 7500 : 6000));
+       txp = max((int)mclk_ps * 3, (mclk_ps > 1540 ? 7500 : 6000));
+
+       ip_rev = fsl_ddr_get_version();
+       if (ip_rev >= 0x40700) {
+               /*
+                * MRS_CYC = max(tMRD, tMOD)
+                * tMRD = 4nCK (8nCK for RDIMM)
+                * tMOD = max(12nCK, 15ns)
+                */
+               tmrd_mclk = max((unsigned int)12, picos_to_mclk(15000));
+       } else {
+               /*
+                * MRS_CYC = tMRD
+                * tMRD = 4nCK (8nCK for RDIMM)
+                */
+               if (popts->registered_dimm_en)
+                       tmrd_mclk = 8;
+               else
+                       tmrd_mclk = 4;
+       }
 
-       tmrd_mclk = 4;
        /* set the turnaround time */
 
        /*
-        * for single quad-rank DIMM and two dual-rank DIMMs
+        * for single quad-rank DIMM and two-slot DIMMs
         * to avoid ODT overlap
         */
-       if (avoid_odt_overlap(dimm_params)) {
+       odt_overlap = avoid_odt_overlap(dimm_params);
+       switch (odt_overlap) {
+       case 2:
                twwt_mclk = 2;
                trrt_mclk = 1;
+               break;
+       case 1:
+               twwt_mclk = 1;
+               trrt_mclk = 0;
+               break;
+       default:
+               break;
        }
+
        /* for faster clock, need more time for data setup */
        trwt_mclk = (data_rate/1000000 > 1800) ? 2 : 1;
 
@@ -383,7 +421,7 @@ static void set_timing_cfg_0(fsl_ddr_cfg_regs_t *ddr,
                );
        debug("FSLDDR: timing_cfg_0 = 0x%08x\n", ddr->timing_cfg_0);
 }
-#endif /* defined(CONFIG_SYS_FSL_DDR2) */
+#endif /* !defined(CONFIG_SYS_FSL_DDR1) */
 
 /* DDR SDRAM Timing Configuration 3 (TIMING_CFG_3) */
 static void set_timing_cfg_3(fsl_ddr_cfg_regs_t *ddr,
@@ -511,8 +549,8 @@ static void set_timing_cfg_1(fsl_ddr_cfg_regs_t *ddr,
 #ifdef CONFIG_SYS_FSL_DDR4
        refrec_ctrl = picos_to_mclk(common_dimm->trfc1_ps) - 8;
        wrrec_mclk = picos_to_mclk(common_dimm->twr_ps);
-       acttoact_mclk = max(picos_to_mclk(common_dimm->trrds_ps), 4);
-       wrtord_mclk = max(2, picos_to_mclk(2500));
+       acttoact_mclk = max(picos_to_mclk(common_dimm->trrds_ps), 4U);
+       wrtord_mclk = max(2U, picos_to_mclk(2500));
        if ((wrrec_mclk < 1) || (wrrec_mclk > 24))
                printf("Error: WRREC doesn't support %d clocks\n", wrrec_mclk);
        else
@@ -627,14 +665,14 @@ static void set_timing_cfg_2(fsl_ddr_cfg_regs_t *ddr,
        wr_data_delay = popts->write_data_delay;
 #ifdef CONFIG_SYS_FSL_DDR4
        cpo = 0;
-       cke_pls = max(3, picos_to_mclk(5000));
+       cke_pls = max(3U, picos_to_mclk(5000));
 #elif defined(CONFIG_SYS_FSL_DDR3)
        /*
         * cke pulse = max(3nCK, 7.5ns) for DDR3-800
         *             max(3nCK, 5.625ns) for DDR3-1066, 1333
         *             max(3nCK, 5ns) for DDR3-1600, 1866, 2133
         */
-       cke_pls = max(3, picos_to_mclk(mclk_ps > 1870 ? 7500 :
+       cke_pls = max(3U, picos_to_mclk(mclk_ps > 1870 ? 7500 :
                                       (mclk_ps > 1245 ? 5625 : 5000)));
 #else
        cke_pls = FSL_DDR_MIN_TCKE_PULSE_WIDTH_DDR;
@@ -1810,9 +1848,9 @@ static void set_timing_cfg_7(fsl_ddr_cfg_regs_t *ddr,
        unsigned int txpr, tcksre, tcksrx;
        unsigned int cke_rst, cksre, cksrx, par_lat, cs_to_cmd;
 
-       txpr = max(5, picos_to_mclk(common_dimm->trfc1_ps + 10000));
-       tcksre = max(5, picos_to_mclk(10000));
-       tcksrx = max(5, picos_to_mclk(10000));
+       txpr = max(5U, picos_to_mclk(common_dimm->trfc1_ps + 10000));
+       tcksre = max(5U, picos_to_mclk(10000));
+       tcksrx = max(5U, picos_to_mclk(10000));
        par_lat = 0;
        cs_to_cmd = 0;
 
@@ -1877,7 +1915,7 @@ static void set_timing_cfg_8(fsl_ddr_cfg_regs_t *ddr,
        }
 
        acttoact_bg = picos_to_mclk(common_dimm->trrdl_ps);
-       wrtord_bg = max(4, picos_to_mclk(7500));
+       wrtord_bg = max(4U, picos_to_mclk(7500));
        if (popts->otf_burst_chop_en)
                wrtord_bg += 2;
 
index 2418dca6ab9468c729ecd3bcccf81d1d69f05a31..aaddc8fa087d8583b81ce495f2a103ebd07e6845 100644 (file)
@@ -126,6 +126,12 @@ ddr_compute_dimm_parameters(const generic_spd_eeprom_t *spd,
 {
        unsigned int retval;
        int i;
+       const u8 udimm_rc_e_dq[18] = {
+               0x0c, 0x2c, 0x15, 0x35, 0x15, 0x35, 0x0b, 0x2c, 0x15,
+               0x35, 0x0b, 0x35, 0x0b, 0x2c, 0x0b, 0x35, 0x15, 0x36
+       };
+       int spd_error = 0;
+       u8 *ptr;
 
        if (spd->mem_type) {
                if (spd->mem_type != SPD_MEMTYPE_DDR4) {
@@ -179,6 +185,22 @@ ddr_compute_dimm_parameters(const generic_spd_eeprom_t *spd,
                /* Unbuffered DIMMs */
                if (spd->mod_section.unbuffered.addr_mapping & 0x1)
                        pdimm->mirrored_dimm = 1;
+               if ((spd->mod_section.unbuffered.mod_height & 0xe0) == 0 &&
+                   (spd->mod_section.unbuffered.ref_raw_card == 0x04)) {
+                       /* Fix SPD error found on DIMMs with raw card E0 */
+                       for (i = 0; i < 18; i++) {
+                               if (spd->mapping[i] == udimm_rc_e_dq[i])
+                                       continue;
+                               spd_error = 1;
+                               debug("SPD byte %d: 0x%x, should be 0x%x\n",
+                                     60 + i, spd->mapping[i],
+                                     udimm_rc_e_dq[i]);
+                               ptr = (u8 *)&spd->mapping[i];
+                               *ptr = udimm_rc_e_dq[i];
+                       }
+                       if (spd_error)
+                               puts("SPD DQ mapping error fixed\n");
+               }
                break;
 
        default:
index e024db9ee2ab4ee0bf3cee26d221a1928c1090f2..a3c01e7f1e2ffa5e977a9d8c3b77c6d033467b44 100644 (file)
@@ -103,7 +103,6 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        ddr_out32(&ddr->dq_map_1, regs->dq_map_1);
        ddr_out32(&ddr->dq_map_2, regs->dq_map_2);
        ddr_out32(&ddr->dq_map_3, regs->dq_map_3);
-       ddr_out32(&ddr->sdram_cfg_2, regs->ddr_sdram_cfg_2);
        ddr_out32(&ddr->sdram_cfg_3, regs->ddr_sdram_cfg_3);
        ddr_out32(&ddr->sdram_mode, regs->ddr_sdram_mode);
        ddr_out32(&ddr->sdram_mode_2, regs->ddr_sdram_mode_2);
@@ -124,8 +123,6 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        ddr_out32(&ddr->sdram_md_cntl, regs->ddr_sdram_md_cntl);
        ddr_out32(&ddr->sdram_interval, regs->ddr_sdram_interval);
        ddr_out32(&ddr->sdram_data_init, regs->ddr_data_init);
-       ddr_out32(&ddr->init_addr, regs->ddr_init_addr);
-       ddr_out32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
        ddr_out32(&ddr->ddr_wrlvl_cntl, regs->ddr_wrlvl_cntl);
 #ifndef CONFIG_SYS_FSL_DDR_EMU
        /*
@@ -147,7 +144,24 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        ddr_out32(&ddr->ddr_sdram_rcw_5, regs->ddr_sdram_rcw_5);
        ddr_out32(&ddr->ddr_sdram_rcw_6, regs->ddr_sdram_rcw_6);
        ddr_out32(&ddr->ddr_cdr1, regs->ddr_cdr1);
-       ddr_out32(&ddr->ddr_cdr2, regs->ddr_cdr2);
+#ifdef CONFIG_DEEP_SLEEP
+       if (is_warm_boot()) {
+               ddr_out32(&ddr->sdram_cfg_2,
+                         regs->ddr_sdram_cfg_2 & ~SDRAM_CFG2_D_INIT);
+               ddr_out32(&ddr->init_addr, CONFIG_SYS_SDRAM_BASE);
+               ddr_out32(&ddr->init_ext_addr, DDR_INIT_ADDR_EXT_UIA);
+
+               /* DRAM VRef will not be trained */
+               ddr_out32(&ddr->ddr_cdr2,
+                         regs->ddr_cdr2 & ~DDR_CDR2_VREF_TRAIN_EN);
+       } else
+#endif
+       {
+               ddr_out32(&ddr->sdram_cfg_2, regs->ddr_sdram_cfg_2);
+               ddr_out32(&ddr->init_addr, regs->ddr_init_addr);
+               ddr_out32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
+               ddr_out32(&ddr->ddr_cdr2, regs->ddr_cdr2);
+       }
        ddr_out32(&ddr->err_disable, regs->err_disable);
        ddr_out32(&ddr->err_int_en, regs->err_int_en);
        for (i = 0; i < 32; i++) {
@@ -187,8 +201,20 @@ step2:
        mb();
        isb();
 
+#ifdef CONFIG_DEEP_SLEEP
+       if (is_warm_boot()) {
+               /* enter self-refresh */
+               temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg_2);
+               temp_sdram_cfg |= SDRAM_CFG2_FRC_SR;
+               ddr_out32(&ddr->sdram_cfg_2, temp_sdram_cfg);
+               /* do board specific memory setup */
+               board_mem_sleep_setup();
+
+               temp_sdram_cfg = (ddr_in32(&ddr->sdram_cfg) | SDRAM_CFG_BI);
+       } else
+#endif
+               temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI;
        /* Let the controller go */
-       temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI;
        ddr_out32(&ddr->sdram_cfg, temp_sdram_cfg | SDRAM_CFG_MEM_EN);
        mb();
        isb();
@@ -233,4 +259,12 @@ step2:
 
        if (timeout <= 0)
                printf("Waiting for D_INIT timeout. Memory may not work.\n");
+#ifdef CONFIG_DEEP_SLEEP
+       if (is_warm_boot()) {
+               /* exit self-refresh */
+               temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg_2);
+               temp_sdram_cfg &= ~SDRAM_CFG2_FRC_SR;
+               ddr_out32(&ddr->sdram_cfg_2, temp_sdram_cfg);
+       }
+#endif
 }
index 05a24dd6efdba2658cfcf68898dd7f7948edb922..73db4446153a213f127dfa31bb0bf8bd9ef74c04 100644 (file)
@@ -289,48 +289,58 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
                 * Find minimum tckmax_ps to find fastest slow speed,
                 * i.e., this is the slowest the whole system can go.
                 */
-               tckmax_ps = min(tckmax_ps, dimm_params[i].tckmax_ps);
+               tckmax_ps = min(tckmax_ps,
+                               (unsigned int)dimm_params[i].tckmax_ps);
 #if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
-               taamin_ps = max(taamin_ps, dimm_params[i].taa_ps);
+               taamin_ps = max(taamin_ps,
+                               (unsigned int)dimm_params[i].taa_ps);
 #endif
-               tckmin_x_ps = max(tckmin_x_ps, dimm_params[i].tckmin_x_ps);
-               trcd_ps = max(trcd_ps, dimm_params[i].trcd_ps);
-               trp_ps = max(trp_ps, dimm_params[i].trp_ps);
-               tras_ps = max(tras_ps, dimm_params[i].tras_ps);
+               tckmin_x_ps = max(tckmin_x_ps,
+                                 (unsigned int)dimm_params[i].tckmin_x_ps);
+               trcd_ps = max(trcd_ps, (unsigned int)dimm_params[i].trcd_ps);
+               trp_ps = max(trp_ps, (unsigned int)dimm_params[i].trp_ps);
+               tras_ps = max(tras_ps, (unsigned int)dimm_params[i].tras_ps);
 #ifdef CONFIG_SYS_FSL_DDR4
-               trfc1_ps = max(trfc1_ps, dimm_params[i].trfc1_ps);
-               trfc2_ps = max(trfc2_ps, dimm_params[i].trfc2_ps);
-               trfc4_ps = max(trfc4_ps, dimm_params[i].trfc4_ps);
-               trrds_ps = max(trrds_ps, dimm_params[i].trrds_ps);
-               trrdl_ps = max(trrdl_ps, dimm_params[i].trrdl_ps);
-               tccdl_ps = max(tccdl_ps, dimm_params[i].tccdl_ps);
+               trfc1_ps = max(trfc1_ps,
+                              (unsigned int)dimm_params[i].trfc1_ps);
+               trfc2_ps = max(trfc2_ps,
+                              (unsigned int)dimm_params[i].trfc2_ps);
+               trfc4_ps = max(trfc4_ps,
+                              (unsigned int)dimm_params[i].trfc4_ps);
+               trrds_ps = max(trrds_ps,
+                              (unsigned int)dimm_params[i].trrds_ps);
+               trrdl_ps = max(trrdl_ps,
+                              (unsigned int)dimm_params[i].trrdl_ps);
+               tccdl_ps = max(tccdl_ps,
+                              (unsigned int)dimm_params[i].tccdl_ps);
 #else
-               twr_ps = max(twr_ps, dimm_params[i].twr_ps);
-               twtr_ps = max(twtr_ps, dimm_params[i].twtr_ps);
-               trfc_ps = max(trfc_ps, dimm_params[i].trfc_ps);
-               trrd_ps = max(trrd_ps, dimm_params[i].trrd_ps);
-               trtp_ps = max(trtp_ps, dimm_params[i].trtp_ps);
+               twr_ps = max(twr_ps, (unsigned int)dimm_params[i].twr_ps);
+               twtr_ps = max(twtr_ps, (unsigned int)dimm_params[i].twtr_ps);
+               trfc_ps = max(trfc_ps, (unsigned int)dimm_params[i].trfc_ps);
+               trrd_ps = max(trrd_ps, (unsigned int)dimm_params[i].trrd_ps);
+               trtp_ps = max(trtp_ps, (unsigned int)dimm_params[i].trtp_ps);
 #endif
-               trc_ps = max(trc_ps, dimm_params[i].trc_ps);
+               trc_ps = max(trc_ps, (unsigned int)dimm_params[i].trc_ps);
 #if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
-               tis_ps = max(tis_ps, dimm_params[i].tis_ps);
-               tih_ps = max(tih_ps, dimm_params[i].tih_ps);
-               tds_ps = max(tds_ps, dimm_params[i].tds_ps);
-               tdh_ps = max(tdh_ps, dimm_params[i].tdh_ps);
-               tqhs_ps = max(tqhs_ps, dimm_params[i].tqhs_ps);
+               tis_ps = max(tis_ps, (unsigned int)dimm_params[i].tis_ps);
+               tih_ps = max(tih_ps, (unsigned int)dimm_params[i].tih_ps);
+               tds_ps = max(tds_ps, (unsigned int)dimm_params[i].tds_ps);
+               tdh_ps = max(tdh_ps, (unsigned int)dimm_params[i].tdh_ps);
+               tqhs_ps = max(tqhs_ps, (unsigned int)dimm_params[i].tqhs_ps);
                /*
                 * Find maximum tdqsq_max_ps to find slowest.
                 *
                 * FIXME: is finding the slowest value the correct
                 * strategy for this parameter?
                 */
-               tdqsq_max_ps = max(tdqsq_max_ps, dimm_params[i].tdqsq_max_ps);
+               tdqsq_max_ps = max(tdqsq_max_ps,
+                                  (unsigned int)dimm_params[i].tdqsq_max_ps);
 #endif
                refresh_rate_ps = max(refresh_rate_ps,
-                                     dimm_params[i].refresh_rate_ps);
+                                     (unsigned int)dimm_params[i].refresh_rate_ps);
                /* extended_op_srt is either 0 or 1, 0 having priority */
                extended_op_srt = min(extended_op_srt,
-                                     dimm_params[i].extended_op_srt);
+                                     (unsigned int)dimm_params[i].extended_op_srt);
        }
 
        outpdimm->ndimms_present = number_of_dimms - temp1;
index b43b669e41ffc9be2b1bf812de30fa1eb714d6ff..6f291ebc03222c7a72f18a417f73554412b796ef 100644 (file)
@@ -106,7 +106,8 @@ static void __get_spd(generic_spd_eeprom_t *spd, u8 i2c_address)
                i2c_write(SPD_SPA1_ADDRESS, 0, 1, &dummy, 1);
                ret = i2c_read(i2c_address, 0, 1,
                               (uchar *)((ulong)spd + 256),
-                              min(256, sizeof(generic_spd_eeprom_t) - 256));
+                              min(256,
+                                  (int)sizeof(generic_spd_eeprom_t) - 256));
        }
 #else
        ret = i2c_read(i2c_address, 0, 1, (uchar *)spd,
index 4d5572ef21b65b0d68c3524bc8f48038b0a261cc..8f4d01ad856b22a269e0c6df363429e605cf7877 100644 (file)
@@ -15,8 +15,6 @@
 #error Invalid setting for CONFIG_CHIP_SELECTS_PER_CTRL
 #endif
 
-DECLARE_GLOBAL_DATA_PTR;
-
 /*
  * regs has the to-be-set values for DDR controller registers
  * ctrl_num is the DDR controller number
@@ -44,16 +42,6 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        u32 save1, save2;
 #endif
 
-#ifdef CONFIG_DEEP_SLEEP
-       const ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
-       bool sleep_flag = 0;
-#endif
-
-#ifdef CONFIG_DEEP_SLEEP
-       if (in_be32(&gur->scrtsr[0]) & (1 << 3))
-               sleep_flag = 1;
-#endif
-
        switch (ctrl_num) {
        case 0:
                ddr = (void *)CONFIG_SYS_FSL_DDR_ADDR;
@@ -130,13 +118,6 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        out_be32(&ddr->timing_cfg_0, regs->timing_cfg_0);
        out_be32(&ddr->timing_cfg_1, regs->timing_cfg_1);
        out_be32(&ddr->timing_cfg_2, regs->timing_cfg_2);
-#ifdef CONFIG_DEEP_SLEEP
-       if (sleep_flag)
-               out_be32(&ddr->sdram_cfg_2,
-                        regs->ddr_sdram_cfg_2 & ~SDRAM_CFG2_D_INIT);
-       else
-#endif
-               out_be32(&ddr->sdram_cfg_2, regs->ddr_sdram_cfg_2);
        out_be32(&ddr->sdram_mode, regs->ddr_sdram_mode);
        out_be32(&ddr->sdram_mode_2, regs->ddr_sdram_mode_2);
        out_be32(&ddr->sdram_mode_3, regs->ddr_sdram_mode_3);
@@ -149,17 +130,6 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        out_be32(&ddr->sdram_interval, regs->ddr_sdram_interval);
        out_be32(&ddr->sdram_data_init, regs->ddr_data_init);
        out_be32(&ddr->sdram_clk_cntl, regs->ddr_sdram_clk_cntl);
-#ifdef CONFIG_DEEP_SLEEP
-       if (sleep_flag) {
-               out_be32(&ddr->init_addr, 0);
-               out_be32(&ddr->init_ext_addr, (1 << 31));
-       } else
-#endif
-       {
-               out_be32(&ddr->init_addr, regs->ddr_init_addr);
-               out_be32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
-       }
-
        out_be32(&ddr->timing_cfg_4, regs->timing_cfg_4);
        out_be32(&ddr->timing_cfg_5, regs->timing_cfg_5);
        out_be32(&ddr->ddr_zq_cntl, regs->ddr_zq_cntl);
@@ -180,7 +150,24 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        out_be32(&ddr->ddr_sdram_rcw_1, regs->ddr_sdram_rcw_1);
        out_be32(&ddr->ddr_sdram_rcw_2, regs->ddr_sdram_rcw_2);
        out_be32(&ddr->ddr_cdr1, regs->ddr_cdr1);
-       out_be32(&ddr->ddr_cdr2, regs->ddr_cdr2);
+#ifdef CONFIG_DEEP_SLEEP
+       if (is_warm_boot()) {
+               out_be32(&ddr->sdram_cfg_2,
+                        regs->ddr_sdram_cfg_2 & ~SDRAM_CFG2_D_INIT);
+               out_be32(&ddr->init_addr, CONFIG_SYS_SDRAM_BASE);
+               out_be32(&ddr->init_ext_addr, DDR_INIT_ADDR_EXT_UIA);
+
+               /* DRAM VRef will not be trained */
+               out_be32(&ddr->ddr_cdr2,
+                        regs->ddr_cdr2 & ~DDR_CDR2_VREF_TRAIN_EN);
+       } else
+#endif
+       {
+               out_be32(&ddr->sdram_cfg_2, regs->ddr_sdram_cfg_2);
+               out_be32(&ddr->init_addr, regs->ddr_init_addr);
+               out_be32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
+               out_be32(&ddr->ddr_cdr2, regs->ddr_cdr2);
+       }
        out_be32(&ddr->err_disable, regs->err_disable);
        out_be32(&ddr->err_int_en, regs->err_int_en);
        for (i = 0; i < 32; i++) {
@@ -400,21 +387,17 @@ step2:
        asm volatile("sync;isync");
 
 #ifdef CONFIG_DEEP_SLEEP
-       if (sleep_flag) {
+       if (is_warm_boot()) {
                /* enter self-refresh */
-               setbits_be32(&ddr->sdram_cfg_2, (1 << 31));
+               setbits_be32(&ddr->sdram_cfg_2, SDRAM_CFG2_FRC_SR);
                /* do board specific memory setup */
                board_mem_sleep_setup();
-       }
-#endif
-
-       /* Let the controller go */
-#ifdef CONFIG_DEEP_SLEEP
-       if (sleep_flag)
                temp_sdram_cfg = (in_be32(&ddr->sdram_cfg) | SDRAM_CFG_BI);
-       else
+       else
 #endif
                temp_sdram_cfg = (in_be32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI);
+
+       /* Let the controller go */
        out_be32(&ddr->sdram_cfg, temp_sdram_cfg | SDRAM_CFG_MEM_EN);
        asm volatile("sync;isync");
 
@@ -566,8 +549,8 @@ step2:
        }
 #endif /* CONFIG_SYS_FSL_ERRATUM_DDR111_DDR134 */
 #ifdef CONFIG_DEEP_SLEEP
-       if (sleep_flag)
+       if (is_warm_boot())
                /* exit self-refresh */
-               clrbits_be32(&ddr->sdram_cfg_2, (1 << 31));
+               clrbits_be32(&ddr->sdram_cfg_2, SDRAM_CFG2_FRC_SR);
 #endif
 }
index 55e6a83b9ad6956ccc1013bdb227d99d5f9ddfbc..ad0a7e7c25f9f4cd5f6c543cdb3deab56d97ceca 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/list.h>
 #include <linux/compiler.h>
 
-static bool dfu_detach_request;
 static LIST_HEAD(dfu_list);
 static int dfu_alt_num;
 static int alt_num_cnt;
@@ -39,21 +38,6 @@ __weak bool dfu_usb_get_reset(void)
        return true;
 }
 
-bool dfu_detach(void)
-{
-       return dfu_detach_request;
-}
-
-void dfu_trigger_detach(void)
-{
-       dfu_detach_request = true;
-}
-
-void dfu_clear_detach(void)
-{
-       dfu_detach_request = false;
-}
-
 static int dfu_find_alt_num(const char *s)
 {
        int i = 0;
@@ -111,8 +95,12 @@ unsigned char *dfu_get_buf(struct dfu_entity *dfu)
                return dfu_buf;
 
        s = getenv("dfu_bufsiz");
-       dfu_buf_size = s ? (unsigned long)simple_strtol(s, NULL, 16) :
-                       CONFIG_SYS_DFU_DATA_BUF_SIZE;
+       if (s)
+               dfu_buf_size = (unsigned long)simple_strtol(s, NULL, 0);
+
+       if (!s || !dfu_buf_size)
+               dfu_buf_size = CONFIG_SYS_DFU_DATA_BUF_SIZE;
+
        if (dfu->max_buf_size && dfu_buf_size > dfu->max_buf_size)
                dfu_buf_size = dfu->max_buf_size;
 
@@ -289,7 +277,7 @@ static int dfu_read_buffer_fill(struct dfu_entity *dfu, void *buf, int size)
        readn = 0;
        while (size > 0) {
                /* get chunk that can be read */
-               chunk = min(size, dfu->b_left);
+               chunk = min((long)size, dfu->b_left);
                /* consume */
                if (chunk > 0) {
                        memcpy(buf, dfu->i_buf, chunk);
@@ -544,10 +532,35 @@ struct dfu_entity *dfu_get_entity(int alt)
 int dfu_get_alt(char *name)
 {
        struct dfu_entity *dfu;
+       char *str;
 
        list_for_each_entry(dfu, &dfu_list, list) {
-               if (!strncmp(dfu->name, name, strlen(dfu->name)))
-                       return dfu->alt;
+               if (dfu->name[0] != '/') {
+                       if (!strncmp(dfu->name, name, strlen(dfu->name)))
+                               return dfu->alt;
+               } else {
+                       /*
+                        * One must also consider absolute path
+                        * (/boot/bin/uImage) available at dfu->name when
+                        * compared "plain" file name (uImage)
+                        *
+                        * It is the case for e.g. thor gadget where lthor SW
+                        * sends only the file name, so only the very last part
+                        * of path must be checked for equality
+                        */
+
+                       str = strstr(dfu->name, name);
+                       if (!str)
+                               continue;
+
+                       /*
+                        * Check if matching substring is the last element of
+                        * dfu->name (uImage)
+                        */
+                       if (strlen(dfu->name) ==
+                           ((str - dfu->name) + strlen(name)))
+                               return dfu->alt;
+               }
        }
 
        return -ENODEV;
index 72fa03eedaecd3700fea7d4ed4e277fad2112ce5..62d72fe4c69a3843974a353f28885fd8661c640e 100644 (file)
@@ -40,10 +40,16 @@ static int mmc_access_part(struct dfu_entity *dfu, struct mmc *mmc, int part)
 static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
                        u64 offset, void *buf, long *len)
 {
-       struct mmc *mmc = find_mmc_device(dfu->data.mmc.dev_num);
+       struct mmc *mmc;
        u32 blk_start, blk_count, n = 0;
        int ret, part_num_bkp = 0;
 
+       mmc = find_mmc_device(dfu->data.mmc.dev_num);
+       if (!mmc) {
+               error("Device MMC %d - not found!", dfu->data.mmc.dev_num);
+               return -ENODEV;
+       }
+
        /*
         * We must ensure that we work in lba_blk_size chunks, so ALIGN
         * this value.
index 77707c21098f45ca1c33d42470416717f8851f62..dfca75abdcb7c864317d0d41be0b79e59ec5c8a3 100644 (file)
@@ -81,9 +81,6 @@ void qm_close(void)
 {
        u32     j;
 
-       if (qm_cfg == NULL)
-               return;
-
        queue_close(qm_cfg->qpool_num);
 
        qm_cfg->mngr_cfg->link_ram_base0        = 0;
@@ -105,9 +102,6 @@ void qm_push(struct qm_host_desc *hd, u32 qnum)
 {
        u32 regd;
 
-       if (!qm_cfg)
-               return;
-
        cpu_to_bus((u32 *)hd, sizeof(struct qm_host_desc)/4);
        regd = (u32)hd | ((sizeof(struct qm_host_desc) >> 4) - 1);
        writel(regd, &qm_cfg->queue[qnum].ptr_size_thresh);
@@ -127,9 +121,6 @@ struct qm_host_desc *qm_pop(u32 qnum)
 {
        u32 uhd;
 
-       if (!qm_cfg)
-               return NULL;
-
        uhd = readl(&qm_cfg->queue[qnum].ptr_size_thresh) & ~0xf;
        if (uhd)
                cpu_to_bus((u32 *)uhd, sizeof(struct qm_host_desc)/4);
@@ -139,9 +130,6 @@ struct qm_host_desc *qm_pop(u32 qnum)
 
 struct qm_host_desc *qm_pop_from_free_pool(void)
 {
-       if (!qm_cfg)
-               return NULL;
-
        return qm_pop(qm_cfg->qpool_num);
 }
 
index 68fe0f3b03afb99085fada927806cbe7afca6407..6a74f8961063c278a4088616e0a512ff75ddbeaa 100644 (file)
@@ -406,8 +406,8 @@ static int zynq_loadfs(xilinx_desc *desc, const void *buf, size_t bsize,
        unsigned long ts; /* Timestamp */
        u32 isr_status, swap;
        u32 partialbit = 0;
-       u32 blocksize;
-       u32 pos = 0;
+       loff_t blocksize, actread;
+       loff_t pos = 0;
        int fstype;
        char *interface, *dev_part, *filename;
 
@@ -420,7 +420,7 @@ static int zynq_loadfs(xilinx_desc *desc, const void *buf, size_t bsize,
        if (fs_set_blk_dev(interface, dev_part, fstype))
                return FPGA_FAIL;
 
-       if (fs_read(filename, (u32) buf, pos, blocksize) < 0)
+       if (fs_read(filename, (u32) buf, pos, blocksize, &actread) < 0)
                return FPGA_FAIL;
 
        if (zynq_validate_bitstream(desc, buf, bsize, blocksize, &swap,
@@ -443,10 +443,10 @@ static int zynq_loadfs(xilinx_desc *desc, const void *buf, size_t bsize,
                        return FPGA_FAIL;
 
                if (bsize > blocksize) {
-                       if (fs_read(filename, (u32) buf, pos, blocksize) < 0)
+                       if (fs_read(filename, (u32) buf, pos, blocksize, &actread) < 0)
                                return FPGA_FAIL;
                } else {
-                       if (fs_read(filename, (u32) buf, pos, bsize) < 0)
+                       if (fs_read(filename, (u32) buf, pos, bsize, &actread) < 0)
                                return FPGA_FAIL;
                }
        } while (bsize > blocksize);
index 6517af162815ea8e5715dabb390ed46de12f4617..6129c020ea163fb2baa43b211285cad349f29038 100644 (file)
 
 #include <config.h>
 #include <common.h>
+#include <dm.h>
 #include <asm/io.h>
 #include <linux/sizes.h>
+#include <asm/gpio.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/at91_pio.h>
-#include <asm/arch/gpio.h>
+
+#define GPIO_PER_BANK  32
 
 static struct at91_port *at91_pio_get_port(unsigned port)
 {
@@ -39,19 +42,25 @@ static struct at91_port *at91_pio_get_port(unsigned port)
        }
 }
 
+static void at91_set_port_pullup(struct at91_port *at91_port, unsigned offset,
+                                int use_pullup)
+{
+       u32 mask;
+
+       mask = 1 << offset;
+       if (use_pullup)
+               writel(mask, &at91_port->puer);
+       else
+               writel(mask, &at91_port->pudr);
+       writel(mask, &at91_port->per);
+}
+
 int at91_set_pio_pullup(unsigned port, unsigned pin, int use_pullup)
 {
        struct at91_port *at91_port = at91_pio_get_port(port);
-       u32 mask;
 
-       if (at91_port && (pin < 32)) {
-               mask = 1 << pin;
-               if (use_pullup)
-                       writel(1 << pin, &at91_port->puer);
-               else
-                       writel(1 << pin, &at91_port->pudr);
-               writel(mask, &at91_port->per);
-       }
+       if (at91_port && (pin < GPIO_PER_BANK))
+               at91_set_port_pullup(at91_port, pin, use_pullup);
 
        return 0;
 }
@@ -64,7 +73,7 @@ int at91_set_pio_periph(unsigned port, unsigned pin, int use_pullup)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                writel(mask, &at91_port->idr);
                at91_set_pio_pullup(port, pin, use_pullup);
@@ -82,7 +91,7 @@ int at91_set_a_periph(unsigned port, unsigned pin, int use_pullup)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                writel(mask, &at91_port->idr);
                at91_set_pio_pullup(port, pin, use_pullup);
@@ -108,7 +117,7 @@ int at91_set_b_periph(unsigned port, unsigned pin, int use_pullup)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                writel(mask, &at91_port->idr);
                at91_set_pio_pullup(port, pin, use_pullup);
@@ -135,7 +144,7 @@ int at91_set_c_periph(unsigned port, unsigned pin, int use_pullup)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                writel(mask, &at91_port->idr);
                at91_set_pio_pullup(port, pin, use_pullup);
@@ -157,7 +166,7 @@ int at91_set_d_periph(unsigned port, unsigned pin, int use_pullup)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                writel(mask, &at91_port->idr);
                at91_set_pio_pullup(port, pin, use_pullup);
@@ -172,6 +181,29 @@ int at91_set_d_periph(unsigned port, unsigned pin, int use_pullup)
 }
 #endif
 
+#ifdef CONFIG_DM_GPIO
+static bool at91_get_port_output(struct at91_port *at91_port, int offset)
+{
+       u32 mask, val;
+
+       mask = 1 << offset;
+       val = readl(&at91_port->osr);
+       return val & mask;
+}
+#endif
+
+static void at91_set_port_input(struct at91_port *at91_port, int offset,
+                               int use_pullup)
+{
+       u32 mask;
+
+       mask = 1 << offset;
+       writel(mask, &at91_port->idr);
+       at91_set_port_pullup(at91_port, offset, use_pullup);
+       writel(mask, &at91_port->odr);
+       writel(mask, &at91_port->per);
+}
+
 /*
  * mux the pin to the gpio controller (instead of "A" or "B" peripheral), and
  * configure it for an input.
@@ -179,19 +211,29 @@ int at91_set_d_periph(unsigned port, unsigned pin, int use_pullup)
 int at91_set_pio_input(unsigned port, u32 pin, int use_pullup)
 {
        struct at91_port *at91_port = at91_pio_get_port(port);
-       u32 mask;
 
-       if (at91_port && (pin < 32)) {
-               mask = 1 << pin;
-               writel(mask, &at91_port->idr);
-               at91_set_pio_pullup(port, pin, use_pullup);
-               writel(mask, &at91_port->odr);
-               writel(mask, &at91_port->per);
-       }
+       if (at91_port && (pin < GPIO_PER_BANK))
+               at91_set_port_input(at91_port, pin, use_pullup);
 
        return 0;
 }
 
+static void at91_set_port_output(struct at91_port *at91_port, int offset,
+                                int value)
+{
+       u32 mask;
+
+       mask = 1 << offset;
+       writel(mask, &at91_port->idr);
+       writel(mask, &at91_port->pudr);
+       if (value)
+               writel(mask, &at91_port->sodr);
+       else
+               writel(mask, &at91_port->codr);
+       writel(mask, &at91_port->oer);
+       writel(mask, &at91_port->per);
+}
+
 /*
  * mux the pin to the gpio controller (instead of "A" or "B" peripheral),
  * and configure it for an output.
@@ -199,19 +241,9 @@ int at91_set_pio_input(unsigned port, u32 pin, int use_pullup)
 int at91_set_pio_output(unsigned port, u32 pin, int value)
 {
        struct at91_port *at91_port = at91_pio_get_port(port);
-       u32 mask;
 
-       if (at91_port && (port < ATMEL_PIO_PORTS) && (pin < 32)) {
-               mask = 1 << pin;
-               writel(mask, &at91_port->idr);
-               writel(mask, &at91_port->pudr);
-               if (value)
-                       writel(mask, &at91_port->sodr);
-               else
-                       writel(mask, &at91_port->codr);
-               writel(mask, &at91_port->oer);
-               writel(mask, &at91_port->per);
-       }
+       if (at91_port && (pin < GPIO_PER_BANK))
+               at91_set_port_output(at91_port, pin, value);
 
        return 0;
 }
@@ -224,7 +256,7 @@ int at91_set_pio_deglitch(unsigned port, unsigned pin, int is_on)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                if (is_on) {
 #if defined(CPU_HAS_PIO3)
@@ -248,7 +280,7 @@ int at91_set_pio_debounce(unsigned port, unsigned pin, int is_on, int div)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                if (is_on) {
                        writel(mask, &at91_port->ifscer);
@@ -271,7 +303,7 @@ int at91_set_pio_pulldown(unsigned port, unsigned pin, int is_on)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                writel(mask, &at91_port->pudr);
                if (is_on)
@@ -291,7 +323,7 @@ int at91_set_pio_disable_schmitt_trig(unsigned port, unsigned pin)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                writel(readl(&at91_port->schmitt) | mask,
                       &at91_port->schmitt);
@@ -310,7 +342,7 @@ int at91_set_pio_multi_drive(unsigned port, unsigned pin, int is_on)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if (at91_port && (pin < 32)) {
+       if (at91_port && (pin < GPIO_PER_BANK)) {
                mask = 1 << pin;
                if (is_on)
                        writel(mask, &at91_port->mder);
@@ -321,41 +353,54 @@ int at91_set_pio_multi_drive(unsigned port, unsigned pin, int is_on)
        return 0;
 }
 
+static void at91_set_port_value(struct at91_port *at91_port, int offset,
+                               int value)
+{
+       u32 mask;
+
+       mask = 1 << offset;
+       if (value)
+               writel(mask, &at91_port->sodr);
+       else
+               writel(mask, &at91_port->codr);
+}
+
 /*
  * assuming the pin is muxed as a gpio output, set its value.
  */
 int at91_set_pio_value(unsigned port, unsigned pin, int value)
 {
        struct at91_port *at91_port = at91_pio_get_port(port);
-       u32 mask;
 
-       if (at91_port && (pin < 32)) {
-               mask = 1 << pin;
-               if (value)
-                       writel(mask, &at91_port->sodr);
-               else
-                       writel(mask, &at91_port->codr);
-       }
+       if (at91_port && (pin < GPIO_PER_BANK))
+               at91_set_port_value(at91_port, pin, value);
 
        return 0;
 }
 
+static int at91_get_port_value(struct at91_port *at91_port, int offset)
+{
+       u32 pdsr = 0, mask;
+
+       mask = 1 << offset;
+       pdsr = readl(&at91_port->pdsr) & mask;
+
+       return pdsr != 0;
+}
 /*
  * read the pin's value (works even if it's not muxed as a gpio).
  */
 int at91_get_pio_value(unsigned port, unsigned pin)
 {
        struct at91_port *at91_port = at91_pio_get_port(port);
-       u32 pdsr = 0, mask;
 
-       if (at91_port && (pin < 32)) {
-               mask = 1 << pin;
-               pdsr = readl(&at91_port->pdsr) & mask;
-       }
+       if (at91_port && (pin < GPIO_PER_BANK))
+               return at91_get_port_value(at91_port, pin);
 
-       return pdsr != 0;
+       return 0;
 }
 
+#ifndef CONFIG_DM_GPIO
 /* Common GPIO API */
 
 int gpio_request(unsigned gpio, const char *label)
@@ -395,3 +440,91 @@ int gpio_set_value(unsigned gpio, int value)
 
        return 0;
 }
+#endif
+
+#ifdef CONFIG_DM_GPIO
+
+struct at91_port_priv {
+       struct at91_port *regs;
+};
+
+/* set GPIO pin 'gpio' as an input */
+static int at91_gpio_direction_input(struct udevice *dev, unsigned offset)
+{
+       struct at91_port_priv *port = dev_get_platdata(dev);
+
+       at91_set_port_input(port->regs, offset, 0);
+
+       return 0;
+}
+
+/* set GPIO pin 'gpio' as an output, with polarity 'value' */
+static int at91_gpio_direction_output(struct udevice *dev, unsigned offset,
+                                      int value)
+{
+       struct at91_port_priv *port = dev_get_platdata(dev);
+
+       at91_set_port_output(port->regs, offset, value);
+
+       return 0;
+}
+
+/* read GPIO IN value of pin 'gpio' */
+static int at91_gpio_get_value(struct udevice *dev, unsigned offset)
+{
+       struct at91_port_priv *port = dev_get_platdata(dev);
+
+       return at91_get_port_value(port->regs, offset);
+}
+
+/* write GPIO OUT value to pin 'gpio' */
+static int at91_gpio_set_value(struct udevice *dev, unsigned offset,
+                              int value)
+{
+       struct at91_port_priv *port = dev_get_platdata(dev);
+
+       at91_set_port_value(port->regs, offset, value);
+
+       return 0;
+}
+
+static int at91_gpio_get_function(struct udevice *dev, unsigned offset)
+{
+       struct at91_port_priv *port = dev_get_platdata(dev);
+
+       /* GPIOF_FUNC is not implemented yet */
+       if (at91_get_port_output(port->regs, offset))
+               return GPIOF_OUTPUT;
+       else
+               return GPIOF_INPUT;
+}
+
+static const struct dm_gpio_ops gpio_at91_ops = {
+       .direction_input        = at91_gpio_direction_input,
+       .direction_output       = at91_gpio_direction_output,
+       .get_value              = at91_gpio_get_value,
+       .set_value              = at91_gpio_set_value,
+       .get_function           = at91_gpio_get_function,
+};
+
+static int at91_gpio_probe(struct udevice *dev)
+{
+       struct at91_port_priv *port = dev_get_priv(dev);
+       struct at91_port_platdata *plat = dev_get_platdata(dev);
+       struct gpio_dev_priv *uc_priv = dev->uclass_priv;
+
+       uc_priv->bank_name = plat->bank_name;
+       uc_priv->gpio_count = GPIO_PER_BANK;
+       port->regs = (struct at91_port *)plat->base_addr;
+
+       return 0;
+}
+
+U_BOOT_DRIVER(gpio_at91) = {
+       .name   = "gpio_at91",
+       .id     = UCLASS_GPIO,
+       .ops    = &gpio_at91_ops,
+       .probe  = at91_gpio_probe,
+       .priv_auto_alloc_size = sizeof(struct at91_port_priv),
+};
+#endif
index 45e9a5ad2278378814b7351c5d70dd5c53fbf287..255700ab18d2d93cf107fcbf3b5a10b2e66e855f 100644 (file)
@@ -390,6 +390,25 @@ int gpio_get_status(struct udevice *dev, int offset, char *buf, int buffsize)
        return 0;
 }
 
+/*
+ * get a number comprised of multiple GPIO values. gpio_num_array points to
+ * the array of gpio pin numbers to scan, terminated by -1.
+ */
+unsigned gpio_get_values_as_int(const int *gpio_num_array)
+{
+       int gpio;
+       unsigned bitmask = 1;
+       unsigned vector = 0;
+
+       while (bitmask &&
+              ((gpio = *gpio_num_array++) != -1)) {
+               if (gpio_get_value(gpio))
+                       vector |= bitmask;
+               bitmask <<= 1;
+       }
+       return vector;
+}
+
 /* We need to renumber the GPIOs when any driver is probed/removed */
 static int gpio_renumber(struct udevice *removed_dev)
 {
index d3381b0369c1a4122f30c0e80aecd154d4e4e896..7720cc3dadfbc1d32a4f2a298243e66e7d438cf4 100644 (file)
 #include <pci.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
+#include <asm/pci.h>
 
 #define GPIO_PER_BANK  32
 
-/* Where in config space is the register that points to the GPIO registers? */
-#define PCI_CFG_GPIOBASE 0x48
-
 struct ich6_bank_priv {
        /* These are I/O addresses */
-       uint32_t use_sel;
-       uint32_t io_sel;
-       uint32_t lvl;
+       uint16_t use_sel;
+       uint16_t io_sel;
+       uint16_t lvl;
 };
 
+/* TODO: Move this to device tree, or platform data */
+void ich_gpio_set_gpio_map(const struct pch_gpio_map *map)
+{
+       gd->arch.gpio_map = map;
+}
+
 static int gpio_ich6_ofdata_to_platdata(struct udevice *dev)
 {
        struct ich6_bank_platdata *plat = dev_get_platdata(dev);
@@ -53,20 +57,20 @@ static int gpio_ich6_ofdata_to_platdata(struct udevice *dev)
        u8 tmpbyte;
        u16 tmpword;
        u32 tmplong;
-       u32 gpiobase;
+       u16 gpiobase;
        int offset;
 
        /* Where should it be? */
        pci_dev = PCI_BDF(0, 0x1f, 0);
 
        /* Is the device present? */
-       pci_read_config_word(pci_dev, PCI_VENDOR_ID, &tmpword);
+       tmpword = pci_read_config16(pci_dev, PCI_VENDOR_ID);
        if (tmpword != PCI_VENDOR_ID_INTEL) {
                debug("%s: wrong VendorID\n", __func__);
                return -ENODEV;
        }
 
-       pci_read_config_word(pci_dev, PCI_DEVICE_ID, &tmpword);
+       tmpword = pci_read_config16(pci_dev, PCI_DEVICE_ID);
        debug("Found %04x:%04x\n", PCI_VENDOR_ID_INTEL, tmpword);
        /*
         * We'd like to validate the Device ID too, but pretty much any
@@ -76,34 +80,34 @@ static int gpio_ich6_ofdata_to_platdata(struct udevice *dev)
         */
 
        /* I/O should already be enabled (it's a RO bit). */
-       pci_read_config_word(pci_dev, PCI_COMMAND, &tmpword);
+       tmpword = pci_read_config16(pci_dev, PCI_COMMAND);
        if (!(tmpword & PCI_COMMAND_IO)) {
                debug("%s: device IO not enabled\n", __func__);
                return -ENODEV;
        }
 
        /* Header Type must be normal (bits 6-0 only; see spec.) */
-       pci_read_config_byte(pci_dev, PCI_HEADER_TYPE, &tmpbyte);
+       tmpbyte = pci_read_config8(pci_dev, PCI_HEADER_TYPE);
        if ((tmpbyte & 0x7f) != PCI_HEADER_TYPE_NORMAL) {
                debug("%s: invalid Header type\n", __func__);
                return -ENODEV;
        }
 
        /* Base Class must be a bridge device */
-       pci_read_config_byte(pci_dev, PCI_CLASS_CODE, &tmpbyte);
+       tmpbyte = pci_read_config8(pci_dev, PCI_CLASS_CODE);
        if (tmpbyte != PCI_CLASS_CODE_BRIDGE) {
                debug("%s: invalid class\n", __func__);
                return -ENODEV;
        }
        /* Sub Class must be ISA */
-       pci_read_config_byte(pci_dev, PCI_CLASS_SUB_CODE, &tmpbyte);
+       tmpbyte = pci_read_config8(pci_dev, PCI_CLASS_SUB_CODE);
        if (tmpbyte != PCI_CLASS_SUB_CODE_BRIDGE_ISA) {
                debug("%s: invalid subclass\n", __func__);
                return -ENODEV;
        }
 
        /* Programming Interface must be 0x00 (no others exist) */
-       pci_read_config_byte(pci_dev, PCI_CLASS_PROG, &tmpbyte);
+       tmpbyte = pci_read_config8(pci_dev, PCI_CLASS_PROG);
        if (tmpbyte != 0x00) {
                debug("%s: invalid interface type\n", __func__);
                return -ENODEV;
@@ -112,11 +116,15 @@ static int gpio_ich6_ofdata_to_platdata(struct udevice *dev)
        /*
         * GPIOBASE moved to its current offset with ICH6, but prior to
         * that it was unused (or undocumented). Check that it looks
-        * okay: not all ones or zeros, and mapped to I/O space (bit 0).
+        * okay: not all ones or zeros.
+        *
+        * Note we don't need check bit0 here, because the Tunnel Creek
+        * GPIO base address register bit0 is reserved (read returns 0),
+        * while on the Ivybridge the bit0 is used to indicate it is an
+        * I/O space.
         */
-       pci_read_config_dword(pci_dev, PCI_CFG_GPIOBASE, &tmplong);
-       if (tmplong == 0x00000000 || tmplong == 0xffffffff ||
-           !(tmplong & 0x00000001)) {
+       tmplong = pci_read_config32(pci_dev, PCI_CFG_GPIOBASE);
+       if (tmplong == 0x00000000 || tmplong == 0xffffffff) {
                debug("%s: unexpected GPIOBASE value\n", __func__);
                return -ENODEV;
        }
@@ -127,7 +135,7 @@ static int gpio_ich6_ofdata_to_platdata(struct udevice *dev)
         * at the offset that we just read. Bit 0 indicates that it's
         * an I/O address, not a memory address, so mask that off.
         */
-       gpiobase = tmplong & 0xfffffffe;
+       gpiobase = tmplong & 0xfffe;
        offset = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "reg", -1);
        if (offset == -1) {
                debug("%s: Invalid register offset %d\n", __func__, offset);
@@ -140,12 +148,17 @@ static int gpio_ich6_ofdata_to_platdata(struct udevice *dev)
        return 0;
 }
 
-int ich6_gpio_probe(struct udevice *dev)
+static int ich6_gpio_probe(struct udevice *dev)
 {
        struct ich6_bank_platdata *plat = dev_get_platdata(dev);
        struct gpio_dev_priv *uc_priv = dev->uclass_priv;
        struct ich6_bank_priv *bank = dev_get_priv(dev);
 
+       if (gd->arch.gpio_map) {
+               setup_pch_gpios(plat->base_addr, gd->arch.gpio_map);
+               gd->arch.gpio_map = NULL;
+       }
+
        uc_priv->gpio_count = GPIO_PER_BANK;
        uc_priv->bank_name = plat->bank_name;
        bank->use_sel = plat->base_addr;
@@ -155,7 +168,8 @@ int ich6_gpio_probe(struct udevice *dev)
        return 0;
 }
 
-int ich6_gpio_request(struct udevice *dev, unsigned offset, const char *label)
+static int ich6_gpio_request(struct udevice *dev, unsigned offset,
+                            const char *label)
 {
        struct ich6_bank_priv *bank = dev_get_priv(dev);
        u32 tmplong;
@@ -192,6 +206,8 @@ static int ich6_gpio_direction_output(struct udevice *dev, unsigned offset,
        struct ich6_bank_priv *bank = dev_get_priv(dev);
        u32 tmplong;
 
+       gpio_set_value(offset, value);
+
        tmplong = inl(bank->io_sel);
        tmplong &= ~(1UL << offset);
        outl(bank->io_sel, tmplong);
index 0c50a8f332684b27194a9985ab2a180780bdab2b..62960929ade9cca68185f758d482928aef0fec4f 100644 (file)
  */
 
 #include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <malloc.h>
 #include <asm/io.h>
 #include <asm/gpio.h>
+#include <dm/device-internal.h>
+#ifdef CONFIG_AXP209_POWER
+#include <axp209.h>
+#endif
 
+DECLARE_GLOBAL_DATA_PTR;
+
+#define SUNXI_GPIOS_PER_BANK   SUNXI_GPIO_A_NR
+
+struct sunxi_gpio_platdata {
+       struct sunxi_gpio *regs;
+       const char *bank_name;  /* Name of bank, e.g. "B" */
+       int gpio_count;
+};
+
+#ifndef CONFIG_DM_GPIO
 static int sunxi_gpio_output(u32 pin, u32 val)
 {
        u32 dat;
@@ -57,13 +76,22 @@ int gpio_free(unsigned gpio)
 
 int gpio_direction_input(unsigned gpio)
 {
+#ifdef AXP_GPIO
+       if (gpio >= SUNXI_GPIO_AXP0_START)
+               return axp_gpio_direction_input(gpio - SUNXI_GPIO_AXP0_START);
+#endif
        sunxi_gpio_set_cfgpin(gpio, SUNXI_GPIO_INPUT);
 
-       return sunxi_gpio_input(gpio);
+       return 0;
 }
 
 int gpio_direction_output(unsigned gpio, int value)
 {
+#ifdef AXP_GPIO
+       if (gpio >= SUNXI_GPIO_AXP0_START)
+               return axp_gpio_direction_output(gpio - SUNXI_GPIO_AXP0_START,
+                                                value);
+#endif
        sunxi_gpio_set_cfgpin(gpio, SUNXI_GPIO_OUTPUT);
 
        return sunxi_gpio_output(gpio, value);
@@ -71,11 +99,19 @@ int gpio_direction_output(unsigned gpio, int value)
 
 int gpio_get_value(unsigned gpio)
 {
+#ifdef AXP_GPIO
+       if (gpio >= SUNXI_GPIO_AXP0_START)
+               return axp_gpio_get_value(gpio - SUNXI_GPIO_AXP0_START);
+#endif
        return sunxi_gpio_input(gpio);
 }
 
 int gpio_set_value(unsigned gpio, int value)
 {
+#ifdef AXP_GPIO
+       if (gpio >= SUNXI_GPIO_AXP0_START)
+               return axp_gpio_set_value(gpio - SUNXI_GPIO_AXP0_START, value);
+#endif
        return sunxi_gpio_output(gpio, value);
 }
 
@@ -85,6 +121,16 @@ int sunxi_name_to_gpio(const char *name)
        int groupsize = 9 * 32;
        long pin;
        char *eptr;
+
+#ifdef AXP_GPIO
+       if (strncasecmp(name, "AXP0-", 5) == 0) {
+               name += 5;
+               pin = simple_strtol(name, &eptr, 10);
+               if (!*name || *eptr)
+                       return -1;
+               return SUNXI_GPIO_AXP0_START + pin;
+       }
+#endif
        if (*name == 'P' || *name == 'p')
                name++;
        if (*name >= 'A') {
@@ -100,3 +146,157 @@ int sunxi_name_to_gpio(const char *name)
                return -1;
        return group * 32 + pin;
 }
+#endif
+
+#ifdef CONFIG_DM_GPIO
+static int sunxi_gpio_direction_input(struct udevice *dev, unsigned offset)
+{
+       struct sunxi_gpio_platdata *plat = dev_get_platdata(dev);
+
+       sunxi_gpio_set_cfgbank(plat->regs, offset, SUNXI_GPIO_INPUT);
+
+       return 0;
+}
+
+static int sunxi_gpio_direction_output(struct udevice *dev, unsigned offset,
+                                      int value)
+{
+       struct sunxi_gpio_platdata *plat = dev_get_platdata(dev);
+       u32 num = GPIO_NUM(offset);
+
+       sunxi_gpio_set_cfgbank(plat->regs, offset, SUNXI_GPIO_OUTPUT);
+       clrsetbits_le32(&plat->regs->dat, 1 << num, value ? (1 << num) : 0);
+
+       return 0;
+}
+
+static int sunxi_gpio_get_value(struct udevice *dev, unsigned offset)
+{
+       struct sunxi_gpio_platdata *plat = dev_get_platdata(dev);
+       u32 num = GPIO_NUM(offset);
+       unsigned dat;
+
+       dat = readl(&plat->regs->dat);
+       dat >>= num;
+
+       return dat & 0x1;
+}
+
+static int sunxi_gpio_set_value(struct udevice *dev, unsigned offset,
+                               int value)
+{
+       struct sunxi_gpio_platdata *plat = dev_get_platdata(dev);
+       u32 num = GPIO_NUM(offset);
+
+       clrsetbits_le32(&plat->regs->dat, 1 << num, value ? (1 << num) : 0);
+       return 0;
+}
+
+static int sunxi_gpio_get_function(struct udevice *dev, unsigned offset)
+{
+       struct sunxi_gpio_platdata *plat = dev_get_platdata(dev);
+       int func;
+
+       func = sunxi_gpio_get_cfgbank(plat->regs, offset);
+       if (func == SUNXI_GPIO_OUTPUT)
+               return GPIOF_OUTPUT;
+       else if (func == SUNXI_GPIO_INPUT)
+               return GPIOF_INPUT;
+       else
+               return GPIOF_FUNC;
+}
+
+static const struct dm_gpio_ops gpio_sunxi_ops = {
+       .direction_input        = sunxi_gpio_direction_input,
+       .direction_output       = sunxi_gpio_direction_output,
+       .get_value              = sunxi_gpio_get_value,
+       .set_value              = sunxi_gpio_set_value,
+       .get_function           = sunxi_gpio_get_function,
+};
+
+/**
+ * Returns the name of a GPIO bank
+ *
+ * GPIO banks are named A, B, C, ...
+ *
+ * @bank:      Bank number (0, 1..n-1)
+ * @return allocated string containing the name
+ */
+static char *gpio_bank_name(int bank)
+{
+       char *name;
+
+       name = malloc(2);
+       if (name) {
+               name[0] = 'A' + bank;
+               name[1] = '\0';
+       }
+
+       return name;
+}
+
+static int gpio_sunxi_probe(struct udevice *dev)
+{
+       struct sunxi_gpio_platdata *plat = dev_get_platdata(dev);
+       struct gpio_dev_priv *uc_priv = dev->uclass_priv;
+
+       /* Tell the uclass how many GPIOs we have */
+       if (plat) {
+               uc_priv->gpio_count = plat->gpio_count;
+               uc_priv->bank_name = plat->bank_name;
+       }
+
+       return 0;
+}
+/**
+ * We have a top-level GPIO device with no actual GPIOs. It has a child
+ * device for each Sunxi bank.
+ */
+static int gpio_sunxi_bind(struct udevice *parent)
+{
+       struct sunxi_gpio_platdata *plat = parent->platdata;
+       struct sunxi_gpio_reg *ctlr;
+       int bank;
+       int ret;
+
+       /* If this is a child device, there is nothing to do here */
+       if (plat)
+               return 0;
+
+       ctlr = (struct sunxi_gpio_reg *)fdtdec_get_addr(gd->fdt_blob,
+                                                  parent->of_offset, "reg");
+       for (bank = 0; bank < SUNXI_GPIO_BANKS; bank++) {
+               struct sunxi_gpio_platdata *plat;
+               struct udevice *dev;
+
+               plat = calloc(1, sizeof(*plat));
+               if (!plat)
+                       return -ENOMEM;
+               plat->regs = &ctlr->gpio_bank[bank];
+               plat->bank_name = gpio_bank_name(bank);
+               plat->gpio_count = SUNXI_GPIOS_PER_BANK;
+
+               ret = device_bind(parent, parent->driver,
+                                       plat->bank_name, plat, -1, &dev);
+               if (ret)
+                       return ret;
+               dev->of_offset = parent->of_offset;
+       }
+
+       return 0;
+}
+
+static const struct udevice_id sunxi_gpio_ids[] = {
+       { .compatible = "allwinner,sun7i-a20-pinctrl" },
+       { }
+};
+
+U_BOOT_DRIVER(gpio_sunxi) = {
+       .name   = "gpio_sunxi",
+       .id     = UCLASS_GPIO,
+       .ops    = &gpio_sunxi_ops,
+       .of_match = sunxi_gpio_ids,
+       .bind   = gpio_sunxi_bind,
+       .probe  = gpio_sunxi_probe,
+};
+#endif
index d067897244bafa9fa4ff58065f382249b63094b4..6f3c86c03859171f940305801f564ff0c2b9e1cd 100644 (file)
@@ -4,8 +4,9 @@
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
+obj-$(CONFIG_DM_I2C) += i2c-uclass.o
 
-obj-$(CONFIG_BFIN_TWI_I2C) += bfin-twi_i2c.o
+obj-$(CONFIG_SYS_I2C_ADI) += adi_i2c.o
 obj-$(CONFIG_I2C_MV) += mv_i2c.o
 obj-$(CONFIG_PCA9564_I2C) += pca9564_i2c.o
 obj-$(CONFIG_TSI108_I2C) += tsi108_i2c.o
@@ -26,6 +27,7 @@ obj-$(CONFIG_SYS_I2C_OMAP34XX) += omap24xx_i2c.o
 obj-$(CONFIG_SYS_I2C_PPC4XX) += ppc4xx_i2c.o
 obj-$(CONFIG_SYS_I2C_RCAR) += rcar_i2c.o
 obj-$(CONFIG_SYS_I2C_S3C24X0) += s3c24x0_i2c.o
+obj-$(CONFIG_SYS_I2C_SANDBOX) += sandbox_i2c.o i2c-emul-uclass.o
 obj-$(CONFIG_SYS_I2C_SH) += sh_i2c.o
 obj-$(CONFIG_SYS_I2C_SOFT) += soft_i2c.o
 obj-$(CONFIG_SYS_I2C_TEGRA) += tegra_i2c.o
diff --git a/drivers/i2c/adi_i2c.c b/drivers/i2c/adi_i2c.c
new file mode 100644 (file)
index 0000000..20495b1
--- /dev/null
@@ -0,0 +1,305 @@
+/*
+ * i2c.c - driver for ADI TWI/I2C
+ *
+ * Copyright (c) 2006-2014 Analog Devices Inc.
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#include <common.h>
+#include <i2c.h>
+
+#include <asm/clock.h>
+#include <asm/twi.h>
+#include <asm/io.h>
+
+static struct twi_regs *i2c_get_base(struct i2c_adapter *adap);
+
+/* Every register is 32bit aligned, but only 16bits in size */
+#define ureg(name) u16 name; u16 __pad_##name;
+struct twi_regs {
+       ureg(clkdiv);
+       ureg(control);
+       ureg(slave_ctl);
+       ureg(slave_stat);
+       ureg(slave_addr);
+       ureg(master_ctl);
+       ureg(master_stat);
+       ureg(master_addr);
+       ureg(int_stat);
+       ureg(int_mask);
+       ureg(fifo_ctl);
+       ureg(fifo_stat);
+       char __pad[0x50];
+       ureg(xmt_data8);
+       ureg(xmt_data16);
+       ureg(rcv_data8);
+       ureg(rcv_data16);
+};
+#undef ureg
+
+#ifdef TWI_CLKDIV
+#define TWI0_CLKDIV TWI_CLKDIV
+# ifdef CONFIG_SYS_MAX_I2C_BUS
+# undef CONFIG_SYS_MAX_I2C_BUS
+# endif
+#define CONFIG_SYS_MAX_I2C_BUS 1
+#endif
+
+/*
+ * The way speed is changed into duty often results in integer truncation
+ * with 50% duty, so we'll force rounding up to the next duty by adding 1
+ * to the max.  In practice this will get us a speed of something like
+ * 385 KHz.  The other limit is easy to handle as it is only 8 bits.
+ */
+#define I2C_SPEED_MAX             400000
+#define I2C_SPEED_TO_DUTY(speed)  (5000000 / (speed))
+#define I2C_DUTY_MAX              (I2C_SPEED_TO_DUTY(I2C_SPEED_MAX) + 1)
+#define I2C_DUTY_MIN              0xff /* 8 bit limited */
+#define SYS_I2C_DUTY              I2C_SPEED_TO_DUTY(CONFIG_SYS_I2C_SPEED)
+/* Note: duty is inverse of speed, so the comparisons below are correct */
+#if SYS_I2C_DUTY < I2C_DUTY_MAX || SYS_I2C_DUTY > I2C_DUTY_MIN
+# error "The I2C hardware can only operate 20KHz - 400KHz"
+#endif
+
+/* All transfers are described by this data structure */
+struct i2c_msg {
+       u8 flags;
+#define I2C_M_COMBO            0x4
+#define I2C_M_STOP             0x2
+#define I2C_M_READ             0x1
+       int len;                /* msg length */
+       u8 *buf;                /* pointer to msg data */
+       int alen;               /* addr length */
+       u8 *abuf;               /* addr buffer */
+};
+
+/* Allow msec timeout per ~byte transfer */
+#define I2C_TIMEOUT 10
+
+/**
+ * wait_for_completion - manage the actual i2c transfer
+ *     @msg: the i2c msg
+ */
+static int wait_for_completion(struct twi_regs *twi, struct i2c_msg *msg)
+{
+       u16 int_stat, ctl;
+       ulong timebase = get_timer(0);
+
+       do {
+               int_stat = readw(&twi->int_stat);
+
+               if (int_stat & XMTSERV) {
+                       writew(XMTSERV, &twi->int_stat);
+                       if (msg->alen) {
+                               writew(*(msg->abuf++), &twi->xmt_data8);
+                               --msg->alen;
+                       } else if (!(msg->flags & I2C_M_COMBO) && msg->len) {
+                               writew(*(msg->buf++), &twi->xmt_data8);
+                               --msg->len;
+                       } else {
+                               ctl = readw(&twi->master_ctl);
+                               if (msg->flags & I2C_M_COMBO)
+                                       writew(ctl | RSTART | MDIR,
+                                                       &twi->master_ctl);
+                               else
+                                       writew(ctl | STOP, &twi->master_ctl);
+                       }
+               }
+               if (int_stat & RCVSERV) {
+                       writew(RCVSERV, &twi->int_stat);
+                       if (msg->len) {
+                               *(msg->buf++) = readw(&twi->rcv_data8);
+                               --msg->len;
+                       } else if (msg->flags & I2C_M_STOP) {
+                               ctl = readw(&twi->master_ctl);
+                               writew(ctl | STOP, &twi->master_ctl);
+                       }
+               }
+               if (int_stat & MERR) {
+                       writew(MERR, &twi->int_stat);
+                       return msg->len;
+               }
+               if (int_stat & MCOMP) {
+                       writew(MCOMP, &twi->int_stat);
+                       if (msg->flags & I2C_M_COMBO && msg->len) {
+                               ctl = readw(&twi->master_ctl);
+                               ctl = (ctl & ~RSTART) |
+                                       (min(msg->len, 0xff) << 6) | MEN | MDIR;
+                               writew(ctl, &twi->master_ctl);
+                       } else
+                               break;
+               }
+
+               /* If we were able to do something, reset timeout */
+               if (int_stat)
+                       timebase = get_timer(0);
+
+       } while (get_timer(timebase) < I2C_TIMEOUT);
+
+       return msg->len;
+}
+
+static int i2c_transfer(struct i2c_adapter *adap, uint8_t chip, uint addr,
+                       int alen, uint8_t *buffer, int len, uint8_t flags)
+{
+       struct twi_regs *twi = i2c_get_base(adap);
+       int ret;
+       u16 ctl;
+       uchar addr_buffer[] = {
+               (addr >>  0),
+               (addr >>  8),
+               (addr >> 16),
+       };
+       struct i2c_msg msg = {
+               .flags = flags | (len >= 0xff ? I2C_M_STOP : 0),
+               .buf   = buffer,
+               .len   = len,
+               .abuf  = addr_buffer,
+               .alen  = alen,
+       };
+
+       /* wait for things to settle */
+       while (readw(&twi->master_stat) & BUSBUSY)
+               if (ctrlc())
+                       return 1;
+
+       /* Set Transmit device address */
+       writew(chip, &twi->master_addr);
+
+       /* Clear the FIFO before starting things */
+       writew(XMTFLUSH | RCVFLUSH, &twi->fifo_ctl);
+       writew(0, &twi->fifo_ctl);
+
+       /* prime the pump */
+       if (msg.alen) {
+               len = (msg.flags & I2C_M_COMBO) ? msg.alen : msg.alen + len;
+               writew(*(msg.abuf++), &twi->xmt_data8);
+               --msg.alen;
+       } else if (!(msg.flags & I2C_M_READ) && msg.len) {
+               writew(*(msg.buf++), &twi->xmt_data8);
+               --msg.len;
+       }
+
+       /* clear int stat */
+       writew(-1, &twi->master_stat);
+       writew(-1, &twi->int_stat);
+       writew(0, &twi->int_mask);
+
+       /* Master enable */
+       ctl = readw(&twi->master_ctl);
+       ctl = (ctl & FAST) | (min(len, 0xff) << 6) | MEN |
+               ((msg.flags & I2C_M_READ) ? MDIR : 0);
+       writew(ctl, &twi->master_ctl);
+
+       /* process the rest */
+       ret = wait_for_completion(twi, &msg);
+
+       if (ret) {
+               ctl = readw(&twi->master_ctl) & ~MEN;
+               writew(ctl, &twi->master_ctl);
+               ctl = readw(&twi->control) & ~TWI_ENA;
+               writew(ctl, &twi->control);
+               ctl = readw(&twi->control) | TWI_ENA;
+               writew(ctl, &twi->control);
+       }
+
+       return ret;
+}
+
+static uint adi_i2c_setspeed(struct i2c_adapter *adap, uint speed)
+{
+       struct twi_regs *twi = i2c_get_base(adap);
+       u16 clkdiv = I2C_SPEED_TO_DUTY(speed);
+
+       /* Set TWI interface clock */
+       if (clkdiv < I2C_DUTY_MAX || clkdiv > I2C_DUTY_MIN)
+               return -1;
+       clkdiv = (clkdiv << 8) | (clkdiv & 0xff);
+       writew(clkdiv, &twi->clkdiv);
+
+       /* Don't turn it on */
+       writew(speed > 100000 ? FAST : 0, &twi->master_ctl);
+
+       return 0;
+}
+
+static void adi_i2c_init(struct i2c_adapter *adap, int speed, int slaveaddr)
+{
+       struct twi_regs *twi = i2c_get_base(adap);
+       u16 prescale = ((get_i2c_clk() / 1000 / 1000 + 5) / 10) & 0x7F;
+
+       /* Set TWI internal clock as 10MHz */
+       writew(prescale, &twi->control);
+
+       /* Set TWI interface clock as specified */
+       i2c_set_bus_speed(speed);
+
+       /* Enable it */
+       writew(TWI_ENA | prescale, &twi->control);
+}
+
+static int adi_i2c_read(struct i2c_adapter *adap, uint8_t chip,
+                       uint addr, int alen, uint8_t *buffer, int len)
+{
+       return i2c_transfer(adap, chip, addr, alen, buffer,
+                       len, alen ? I2C_M_COMBO : I2C_M_READ);
+}
+
+static int adi_i2c_write(struct i2c_adapter *adap, uint8_t chip,
+                       uint addr, int alen, uint8_t *buffer, int len)
+{
+       return i2c_transfer(adap, chip, addr, alen, buffer, len, 0);
+}
+
+static int adi_i2c_probe(struct i2c_adapter *adap, uint8_t chip)
+{
+       u8 byte;
+       return adi_i2c_read(adap, chip, 0, 0, &byte, 1);
+}
+
+static struct twi_regs *i2c_get_base(struct i2c_adapter *adap)
+{
+       switch (adap->hwadapnr) {
+#if CONFIG_SYS_MAX_I2C_BUS > 2
+       case 2:
+               return (struct twi_regs *)TWI2_CLKDIV;
+#endif
+#if CONFIG_SYS_MAX_I2C_BUS > 1
+       case 1:
+               return (struct twi_regs *)TWI1_CLKDIV;
+#endif
+       case 0:
+               return (struct twi_regs *)TWI0_CLKDIV;
+
+       default:
+               printf("wrong hwadapnr: %d\n", adap->hwadapnr);
+       }
+
+       return NULL;
+}
+
+U_BOOT_I2C_ADAP_COMPLETE(adi_i2c0, adi_i2c_init, adi_i2c_probe,
+                        adi_i2c_read, adi_i2c_write,
+                        adi_i2c_setspeed,
+                        CONFIG_SYS_I2C_SPEED,
+                        0,
+                        0)
+
+#if CONFIG_SYS_MAX_I2C_BUS > 1
+U_BOOT_I2C_ADAP_COMPLETE(adi_i2c1, adi_i2c_init, adi_i2c_probe,
+                        adi_i2c_read, adi_i2c_write,
+                        adi_i2c_setspeed,
+                        CONFIG_SYS_I2C_SPEED,
+                        0,
+                        1)
+#endif
+
+#if CONFIG_SYS_MAX_I2C_BUS > 2
+U_BOOT_I2C_ADAP_COMPLETE(adi_i2c2, adi_i2c_init, adi_i2c_probe,
+                        adi_i2c_read, adi_i2c_write,
+                        adi_i2c_setspeed,
+                        CONFIG_SYS_I2C_SPEED,
+                        0,
+                        2)
+#endif
diff --git a/drivers/i2c/bfin-twi_i2c.c b/drivers/i2c/bfin-twi_i2c.c
deleted file mode 100644 (file)
index cfab064..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * i2c.c - driver for Blackfin on-chip TWI/I2C
- *
- * Copyright (c) 2006-2010 Analog Devices Inc.
- *
- * Licensed under the GPL-2 or later.
- */
-
-#include <common.h>
-#include <i2c.h>
-
-#include <asm/blackfin.h>
-#include <asm/clock.h>
-#include <asm/mach-common/bits/twi.h>
-
-/* Every register is 32bit aligned, but only 16bits in size */
-#define ureg(name) u16 name; u16 __pad_##name;
-struct twi_regs {
-       ureg(clkdiv);
-       ureg(control);
-       ureg(slave_ctl);
-       ureg(slave_stat);
-       ureg(slave_addr);
-       ureg(master_ctl);
-       ureg(master_stat);
-       ureg(master_addr);
-       ureg(int_stat);
-       ureg(int_mask);
-       ureg(fifo_ctl);
-       ureg(fifo_stat);
-       char __pad[0x50];
-       ureg(xmt_data8);
-       ureg(xmt_data16);
-       ureg(rcv_data8);
-       ureg(rcv_data16);
-};
-#undef ureg
-
-/* U-Boot I2C framework allows only one active device at a time.  */
-#ifdef TWI_CLKDIV
-#define TWI0_CLKDIV TWI_CLKDIV
-#endif
-static volatile struct twi_regs *twi = (void *)TWI0_CLKDIV;
-
-#ifdef DEBUG
-# define dmemset(s, c, n) memset(s, c, n)
-#else
-# define dmemset(s, c, n)
-#endif
-#define debugi(fmt, args...) \
-       debug( \
-               "MSTAT:0x%03x FSTAT:0x%x ISTAT:0x%02x\t%-20s:%-3i: " fmt "\n", \
-               twi->master_stat, twi->fifo_stat, twi->int_stat, \
-               __func__, __LINE__, ## args)
-
-#ifdef CONFIG_TWICLK_KHZ
-# error do not define CONFIG_TWICLK_KHZ ... use CONFIG_SYS_I2C_SPEED
-#endif
-
-/*
- * The way speed is changed into duty often results in integer truncation
- * with 50% duty, so we'll force rounding up to the next duty by adding 1
- * to the max.  In practice this will get us a speed of something like
- * 385 KHz.  The other limit is easy to handle as it is only 8 bits.
- */
-#define I2C_SPEED_MAX             400000
-#define I2C_SPEED_TO_DUTY(speed)  (5000000 / (speed))
-#define I2C_DUTY_MAX              (I2C_SPEED_TO_DUTY(I2C_SPEED_MAX) + 1)
-#define I2C_DUTY_MIN              0xff /* 8 bit limited */
-#define SYS_I2C_DUTY              I2C_SPEED_TO_DUTY(CONFIG_SYS_I2C_SPEED)
-/* Note: duty is inverse of speed, so the comparisons below are correct */
-#if SYS_I2C_DUTY < I2C_DUTY_MAX || SYS_I2C_DUTY > I2C_DUTY_MIN
-# error "The Blackfin I2C hardware can only operate 20KHz - 400KHz"
-#endif
-
-/* All transfers are described by this data structure */
-struct i2c_msg {
-       u8 flags;
-#define I2C_M_COMBO            0x4
-#define I2C_M_STOP             0x2
-#define I2C_M_READ             0x1
-       int len;                /* msg length */
-       u8 *buf;                /* pointer to msg data */
-       int alen;               /* addr length */
-       u8 *abuf;               /* addr buffer */
-};
-
-/* Allow msec timeout per ~byte transfer */
-#define I2C_TIMEOUT 10
-
-/**
- * wait_for_completion - manage the actual i2c transfer
- *     @msg: the i2c msg
- */
-static int wait_for_completion(struct i2c_msg *msg)
-{
-       uint16_t int_stat;
-       ulong timebase = get_timer(0);
-
-       do {
-               int_stat = twi->int_stat;
-
-               if (int_stat & XMTSERV) {
-                       debugi("processing XMTSERV");
-                       twi->int_stat = XMTSERV;
-                       SSYNC();
-                       if (msg->alen) {
-                               twi->xmt_data8 = *(msg->abuf++);
-                               --msg->alen;
-                       } else if (!(msg->flags & I2C_M_COMBO) && msg->len) {
-                               twi->xmt_data8 = *(msg->buf++);
-                               --msg->len;
-                       } else {
-                               twi->master_ctl |= (msg->flags & I2C_M_COMBO) ? RSTART | MDIR : STOP;
-                               SSYNC();
-                       }
-               }
-               if (int_stat & RCVSERV) {
-                       debugi("processing RCVSERV");
-                       twi->int_stat = RCVSERV;
-                       SSYNC();
-                       if (msg->len) {
-                               *(msg->buf++) = twi->rcv_data8;
-                               --msg->len;
-                       } else if (msg->flags & I2C_M_STOP) {
-                               twi->master_ctl |= STOP;
-                               SSYNC();
-                       }
-               }
-               if (int_stat & MERR) {
-                       debugi("processing MERR");
-                       twi->int_stat = MERR;
-                       SSYNC();
-                       return msg->len;
-               }
-               if (int_stat & MCOMP) {
-                       debugi("processing MCOMP");
-                       twi->int_stat = MCOMP;
-                       SSYNC();
-                       if (msg->flags & I2C_M_COMBO && msg->len) {
-                               twi->master_ctl = (twi->master_ctl & ~RSTART) |
-                                       (min(msg->len, 0xff) << 6) | MEN | MDIR;
-                               SSYNC();
-                       } else
-                               break;
-               }
-
-               /* If we were able to do something, reset timeout */
-               if (int_stat)
-                       timebase = get_timer(0);
-
-       } while (get_timer(timebase) < I2C_TIMEOUT);
-
-       return msg->len;
-}
-
-/**
- * i2c_transfer - setup an i2c transfer
- *     @return: 0 if things worked, non-0 if things failed
- *
- *     Here we just get the i2c stuff all prepped and ready, and then tail off
- *     into wait_for_completion() for all the bits to go.
- */
-static int i2c_transfer(uchar chip, uint addr, int alen, uchar *buffer, int len, u8 flags)
-{
-       uchar addr_buffer[] = {
-               (addr >>  0),
-               (addr >>  8),
-               (addr >> 16),
-       };
-       struct i2c_msg msg = {
-               .flags = flags | (len >= 0xff ? I2C_M_STOP : 0),
-               .buf   = buffer,
-               .len   = len,
-               .abuf  = addr_buffer,
-               .alen  = alen,
-       };
-       int ret;
-
-       dmemset(buffer, 0xff, len);
-       debugi("chip=0x%x addr=0x%02x alen=%i buf[0]=0x%02x len=%i flags=0x%02x[%s] ",
-               chip, addr, alen, buffer[0], len, flags, (flags & I2C_M_READ ? "rd" : "wr"));
-
-       /* wait for things to settle */
-       while (twi->master_stat & BUSBUSY)
-               if (ctrlc())
-                       return 1;
-
-       /* Set Transmit device address */
-       twi->master_addr = chip;
-
-       /* Clear the FIFO before starting things */
-       twi->fifo_ctl = XMTFLUSH | RCVFLUSH;
-       SSYNC();
-       twi->fifo_ctl = 0;
-       SSYNC();
-
-       /* prime the pump */
-       if (msg.alen) {
-               len = (msg.flags & I2C_M_COMBO) ? msg.alen : msg.alen + len;
-               debugi("first byte=0x%02x", *msg.abuf);
-               twi->xmt_data8 = *(msg.abuf++);
-               --msg.alen;
-       } else if (!(msg.flags & I2C_M_READ) && msg.len) {
-               debugi("first byte=0x%02x", *msg.buf);
-               twi->xmt_data8 = *(msg.buf++);
-               --msg.len;
-       }
-
-       /* clear int stat */
-       twi->master_stat = -1;
-       twi->int_stat = -1;
-       twi->int_mask = 0;
-       SSYNC();
-
-       /* Master enable */
-       twi->master_ctl =
-                       (twi->master_ctl & FAST) |
-                       (min(len, 0xff) << 6) | MEN |
-                       ((msg.flags & I2C_M_READ) ? MDIR : 0);
-       SSYNC();
-       debugi("CTL=0x%04x", twi->master_ctl);
-
-       /* process the rest */
-       ret = wait_for_completion(&msg);
-       debugi("ret=%d", ret);
-
-       if (ret) {
-               twi->master_ctl &= ~MEN;
-               twi->control &= ~TWI_ENA;
-               SSYNC();
-               twi->control |= TWI_ENA;
-               SSYNC();
-       }
-
-       return ret;
-}
-
-/**
- * i2c_set_bus_speed - set i2c bus speed
- *     @speed: bus speed (in HZ)
- */
-int i2c_set_bus_speed(unsigned int speed)
-{
-       u16 clkdiv = I2C_SPEED_TO_DUTY(speed);
-
-       /* Set TWI interface clock */
-       if (clkdiv < I2C_DUTY_MAX || clkdiv > I2C_DUTY_MIN)
-               return -1;
-       twi->clkdiv = (clkdiv << 8) | (clkdiv & 0xff);
-
-       /* Don't turn it on */
-       twi->master_ctl = (speed > 100000 ? FAST : 0);
-
-       return 0;
-}
-
-/**
- * i2c_get_bus_speed - get i2c bus speed
- *     @speed: bus speed (in HZ)
- */
-unsigned int i2c_get_bus_speed(void)
-{
-       /* 10 MHz / (2 * CLKDIV) -> 5 MHz / CLKDIV */
-       return 5000000 / (twi->clkdiv & 0xff);
-}
-
-/**
- * i2c_init - initialize the i2c bus
- *     @speed: bus speed (in HZ)
- *     @slaveaddr: address of device in slave mode (0 - not slave)
- *
- *     Slave mode isn't actually implemented.  It'll stay that way until
- *     we get a real request for it.
- */
-void i2c_init(int speed, int slaveaddr)
-{
-       uint8_t prescale = ((get_i2c_clk() / 1000 / 1000 + 5) / 10) & 0x7F;
-
-       /* Set TWI internal clock as 10MHz */
-       twi->control = prescale;
-
-       /* Set TWI interface clock as specified */
-       i2c_set_bus_speed(speed);
-
-       /* Enable it */
-       twi->control = TWI_ENA | prescale;
-       SSYNC();
-
-       debugi("CONTROL:0x%04x CLKDIV:0x%04x", twi->control, twi->clkdiv);
-
-#if CONFIG_SYS_I2C_SLAVE
-# error I2C slave support not tested/supported
-       /* If they want us as a slave, do it */
-       if (slaveaddr) {
-               twi->slave_addr = slaveaddr;
-               twi->slave_ctl = SEN;
-       }
-#endif
-}
-
-/**
- * i2c_probe - test if a chip exists at a given i2c address
- *     @chip: i2c chip addr to search for
- *     @return: 0 if found, non-0 if not found
- */
-int i2c_probe(uchar chip)
-{
-       u8 byte;
-       return i2c_read(chip, 0, 0, &byte, 1);
-}
-
-/**
- * i2c_read - read data from an i2c device
- *     @chip: i2c chip addr
- *     @addr: memory (register) address in the chip
- *     @alen: byte size of address
- *     @buffer: buffer to store data read from chip
- *     @len: how many bytes to read
- *     @return: 0 on success, non-0 on failure
- */
-int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)
-{
-       return i2c_transfer(chip, addr, alen, buffer, len, (alen ? I2C_M_COMBO : I2C_M_READ));
-}
-
-/**
- * i2c_write - write data to an i2c device
- *     @chip: i2c chip addr
- *     @addr: memory (register) address in the chip
- *     @alen: byte size of address
- *     @buffer: buffer holding data to write to chip
- *     @len: how many bytes to write
- *     @return: 0 on success, non-0 on failure
- */
-int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)
-{
-       return i2c_transfer(chip, addr, alen, buffer, len, 0);
-}
-
-/**
- * i2c_set_bus_num - change active I2C bus
- *     @bus: bus index, zero based
- *     @returns: 0 on success, non-0 on failure
- */
-int i2c_set_bus_num(unsigned int bus)
-{
-       switch (bus) {
-#if CONFIG_SYS_MAX_I2C_BUS > 0
-               case 0: twi = (void *)TWI0_CLKDIV; return 0;
-#endif
-#if CONFIG_SYS_MAX_I2C_BUS > 1
-               case 1: twi = (void *)TWI1_CLKDIV; return 0;
-#endif
-#if CONFIG_SYS_MAX_I2C_BUS > 2
-               case 2: twi = (void *)TWI2_CLKDIV; return 0;
-#endif
-               default: return -1;
-       }
-}
-
-/**
- * i2c_get_bus_num - returns index of active I2C bus
- */
-unsigned int i2c_get_bus_num(void)
-{
-       switch ((unsigned long)twi) {
-#if CONFIG_SYS_MAX_I2C_BUS > 0
-               case TWI0_CLKDIV: return 0;
-#endif
-#if CONFIG_SYS_MAX_I2C_BUS > 1
-               case TWI1_CLKDIV: return 1;
-#endif
-#if CONFIG_SYS_MAX_I2C_BUS > 2
-               case TWI2_CLKDIV: return 2;
-#endif
-               default: return -1;
-       }
-}
index 811033b0b83757815208dc88c2ab7b9ce165ad90..ff7f25a0ef7cdf2ce46cecc7954e654bc0d0d853 100644 (file)
@@ -38,7 +38,7 @@
  * generic value.
  */
 #ifndef CONFIG_I2C_TIMEOUT
-#define CONFIG_I2C_TIMEOUT     10000
+#define CONFIG_I2C_TIMEOUT     100000
 #endif
 
 #define I2C_READ_BIT  1
@@ -127,7 +127,7 @@ static const struct {
 static unsigned int set_i2c_bus_speed(const struct fsl_i2c *dev,
        unsigned int i2c_clk, unsigned int speed)
 {
-       unsigned short divider = min(i2c_clk / speed, (unsigned short) -1);
+       unsigned short divider = min(i2c_clk / speed, (unsigned int)USHRT_MAX);
 
        /*
         * We want to choose an FDR/DFSR that generates an I2C bus speed that
diff --git a/drivers/i2c/i2c-emul-uclass.c b/drivers/i2c/i2c-emul-uclass.c
new file mode 100644 (file)
index 0000000..aa89f95
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <i2c.h>
+
+UCLASS_DRIVER(i2c_emul) = {
+       .id             = UCLASS_I2C_EMUL,
+       .name           = "i2c_emul",
+};
diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
new file mode 100644 (file)
index 0000000..005bf86
--- /dev/null
@@ -0,0 +1,466 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <i2c.h>
+#include <malloc.h>
+#include <dm/device-internal.h>
+#include <dm/lists.h>
+#include <dm/root.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define I2C_MAX_OFFSET_LEN     4
+
+/**
+ * i2c_setup_offset() - Set up a new message with a chip offset
+ *
+ * @chip:      Chip to use
+ * @offset:    Byte offset within chip
+ * @offset_buf:        Place to put byte offset
+ * @msg:       Message buffer
+ * @return 0 if OK, -EADDRNOTAVAIL if the offset length is 0. In that case the
+ * message is still set up but will not contain an offset.
+ */
+static int i2c_setup_offset(struct dm_i2c_chip *chip, uint offset,
+                           uint8_t offset_buf[], struct i2c_msg *msg)
+{
+       int offset_len;
+
+       msg->addr = chip->chip_addr;
+       msg->flags = chip->flags & DM_I2C_CHIP_10BIT ? I2C_M_TEN : 0;
+       msg->len = chip->offset_len;
+       msg->buf = offset_buf;
+       if (!chip->offset_len)
+               return -EADDRNOTAVAIL;
+       assert(chip->offset_len <= I2C_MAX_OFFSET_LEN);
+       offset_len = chip->offset_len;
+       while (offset_len--)
+               *offset_buf++ = offset >> (8 * offset_len);
+
+       return 0;
+}
+
+static int i2c_read_bytewise(struct udevice *dev, uint offset,
+                            uint8_t *buffer, int len)
+{
+       struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+       struct udevice *bus = dev_get_parent(dev);
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       struct i2c_msg msg[2], *ptr;
+       uint8_t offset_buf[I2C_MAX_OFFSET_LEN];
+       int ret;
+       int i;
+
+       for (i = 0; i < len; i++) {
+               if (i2c_setup_offset(chip, offset + i, offset_buf, msg))
+                       return -EINVAL;
+               ptr = msg + 1;
+               ptr->addr = chip->chip_addr;
+               ptr->flags = msg->flags | I2C_M_RD;
+               ptr->len = 1;
+               ptr->buf = &buffer[i];
+               ptr++;
+
+               ret = ops->xfer(bus, msg, ptr - msg);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
+static int i2c_write_bytewise(struct udevice *dev, uint offset,
+                            const uint8_t *buffer, int len)
+{
+       struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+       struct udevice *bus = dev_get_parent(dev);
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       struct i2c_msg msg[1];
+       uint8_t buf[I2C_MAX_OFFSET_LEN + 1];
+       int ret;
+       int i;
+
+       for (i = 0; i < len; i++) {
+               if (i2c_setup_offset(chip, offset + i, buf, msg))
+                       return -EINVAL;
+               buf[msg->len++] = buffer[i];
+
+               ret = ops->xfer(bus, msg, 1);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
+int i2c_read(struct udevice *dev, uint offset, uint8_t *buffer, int len)
+{
+       struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+       struct udevice *bus = dev_get_parent(dev);
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       struct i2c_msg msg[2], *ptr;
+       uint8_t offset_buf[I2C_MAX_OFFSET_LEN];
+       int msg_count;
+
+       if (!ops->xfer)
+               return -ENOSYS;
+       if (chip->flags & DM_I2C_CHIP_RD_ADDRESS)
+               return i2c_read_bytewise(dev, offset, buffer, len);
+       ptr = msg;
+       if (!i2c_setup_offset(chip, offset, offset_buf, ptr))
+               ptr++;
+
+       if (len) {
+               ptr->addr = chip->chip_addr;
+               ptr->flags = chip->flags & DM_I2C_CHIP_10BIT ? I2C_M_TEN : 0;
+               ptr->flags |= I2C_M_RD;
+               ptr->len = len;
+               ptr->buf = buffer;
+               ptr++;
+       }
+       msg_count = ptr - msg;
+
+       return ops->xfer(bus, msg, msg_count);
+}
+
+int i2c_write(struct udevice *dev, uint offset, const uint8_t *buffer, int len)
+{
+       struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+       struct udevice *bus = dev_get_parent(dev);
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       struct i2c_msg msg[1];
+
+       if (!ops->xfer)
+               return -ENOSYS;
+
+       if (chip->flags & DM_I2C_CHIP_WR_ADDRESS)
+               return i2c_write_bytewise(dev, offset, buffer, len);
+       /*
+        * The simple approach would be to send two messages here: one to
+        * set the offset and one to write the bytes. However some drivers
+        * will not be expecting this, and some chips won't like how the
+        * driver presents this on the I2C bus.
+        *
+        * The API does not support separate offset and data. We could extend
+        * it with a flag indicating that there is data in the next message
+        * that needs to be processed in the same transaction. We could
+        * instead add an additional buffer to each message. For now, handle
+        * this in the uclass since it isn't clear what the impact on drivers
+        * would be with this extra complication. Unfortunately this means
+        * copying the message.
+        *
+        * Use the stack for small messages, malloc() for larger ones. We
+        * need to allow space for the offset (up to 4 bytes) and the message
+        * itself.
+        */
+       if (len < 64) {
+               uint8_t buf[I2C_MAX_OFFSET_LEN + len];
+
+               i2c_setup_offset(chip, offset, buf, msg);
+               msg->len += len;
+               memcpy(buf + chip->offset_len, buffer, len);
+
+               return ops->xfer(bus, msg, 1);
+       } else {
+               uint8_t *buf;
+               int ret;
+
+               buf = malloc(I2C_MAX_OFFSET_LEN + len);
+               if (!buf)
+                       return -ENOMEM;
+               i2c_setup_offset(chip, offset, buf, msg);
+               msg->len += len;
+               memcpy(buf + chip->offset_len, buffer, len);
+
+               ret = ops->xfer(bus, msg, 1);
+               free(buf);
+               return ret;
+       }
+}
+
+/**
+ * i2c_probe_chip() - probe for a chip on a bus
+ *
+ * @bus:       Bus to probe
+ * @chip_addr: Chip address to probe
+ * @flags:     Flags for the chip
+ * @return 0 if found, -ENOSYS if the driver is invalid, -EREMOTEIO if the chip
+ * does not respond to probe
+ */
+static int i2c_probe_chip(struct udevice *bus, uint chip_addr,
+                         enum dm_i2c_chip_flags chip_flags)
+{
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       struct i2c_msg msg[1];
+       int ret;
+
+       if (ops->probe_chip) {
+               ret = ops->probe_chip(bus, chip_addr, chip_flags);
+               if (!ret || ret != -ENOSYS)
+                       return ret;
+       }
+
+       if (!ops->xfer)
+               return -ENOSYS;
+
+       /* Probe with a zero-length message */
+       msg->addr = chip_addr;
+       msg->flags = chip_flags & DM_I2C_CHIP_10BIT ? I2C_M_TEN : 0;
+       msg->len = 0;
+       msg->buf = NULL;
+
+       return ops->xfer(bus, msg, 1);
+}
+
+static int i2c_bind_driver(struct udevice *bus, uint chip_addr,
+                          struct udevice **devp)
+{
+       struct dm_i2c_chip chip;
+       char name[30], *str;
+       struct udevice *dev;
+       int ret;
+
+       snprintf(name, sizeof(name), "generic_%x", chip_addr);
+       str = strdup(name);
+       ret = device_bind_driver(bus, "i2c_generic_chip_drv", str, &dev);
+       debug("%s:  device_bind_driver: ret=%d\n", __func__, ret);
+       if (ret)
+               goto err_bind;
+
+       /* Tell the device what we know about it */
+       memset(&chip, '\0', sizeof(chip));
+       chip.chip_addr = chip_addr;
+       chip.offset_len = 1;    /* we assume */
+       ret = device_probe_child(dev, &chip);
+       debug("%s:  device_probe_child: ret=%d\n", __func__, ret);
+       if (ret)
+               goto err_probe;
+
+       *devp = dev;
+       return 0;
+
+err_probe:
+       device_unbind(dev);
+err_bind:
+       free(str);
+       return ret;
+}
+
+int i2c_get_chip(struct udevice *bus, uint chip_addr, struct udevice **devp)
+{
+       struct udevice *dev;
+
+       debug("%s: Searching bus '%s' for address %02x: ", __func__,
+             bus->name, chip_addr);
+       for (device_find_first_child(bus, &dev); dev;
+                       device_find_next_child(&dev)) {
+               struct dm_i2c_chip store;
+               struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+               int ret;
+
+               if (!chip) {
+                       chip = &store;
+                       i2c_chip_ofdata_to_platdata(gd->fdt_blob,
+                                                   dev->of_offset, chip);
+               }
+               if (chip->chip_addr == chip_addr) {
+                       ret = device_probe(dev);
+                       debug("found, ret=%d\n", ret);
+                       if (ret)
+                               return ret;
+                       *devp = dev;
+                       return 0;
+               }
+       }
+       debug("not found\n");
+       return i2c_bind_driver(bus, chip_addr, devp);
+}
+
+int i2c_get_chip_for_busnum(int busnum, int chip_addr, struct udevice **devp)
+{
+       struct udevice *bus;
+       int ret;
+
+       ret = uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus);
+       if (ret) {
+               debug("Cannot find I2C bus %d\n", busnum);
+               return ret;
+       }
+       ret = i2c_get_chip(bus, chip_addr, devp);
+       if (ret) {
+               debug("Cannot find I2C chip %02x on bus %d\n", chip_addr,
+                     busnum);
+               return ret;
+       }
+
+       return 0;
+}
+
+int i2c_probe(struct udevice *bus, uint chip_addr, uint chip_flags,
+             struct udevice **devp)
+{
+       int ret;
+
+       *devp = NULL;
+
+       /* First probe that chip */
+       ret = i2c_probe_chip(bus, chip_addr, chip_flags);
+       debug("%s: bus='%s', address %02x, ret=%d\n", __func__, bus->name,
+             chip_addr, ret);
+       if (ret)
+               return ret;
+
+       /* The chip was found, see if we have a driver, and probe it */
+       ret = i2c_get_chip(bus, chip_addr, devp);
+       debug("%s:  i2c_get_chip: ret=%d\n", __func__, ret);
+
+       return ret;
+}
+
+int i2c_set_bus_speed(struct udevice *bus, unsigned int speed)
+{
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       struct dm_i2c_bus *i2c = bus->uclass_priv;
+       int ret;
+
+       /*
+        * If we have a method, call it. If not then the driver probably wants
+        * to deal with speed changes on the next transfer. It can easily read
+        * the current speed from this uclass
+        */
+       if (ops->set_bus_speed) {
+               ret = ops->set_bus_speed(bus, speed);
+               if (ret)
+                       return ret;
+       }
+       i2c->speed_hz = speed;
+
+       return 0;
+}
+
+/*
+ * i2c_get_bus_speed:
+ *
+ *  Returns speed of selected I2C bus in Hz
+ */
+int i2c_get_bus_speed(struct udevice *bus)
+{
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       struct dm_i2c_bus *i2c = bus->uclass_priv;
+
+       if (!ops->get_bus_speed)
+               return i2c->speed_hz;
+
+       return ops->get_bus_speed(bus);
+}
+
+int i2c_set_chip_flags(struct udevice *dev, uint flags)
+{
+       struct udevice *bus = dev->parent;
+       struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+       int ret;
+
+       if (ops->set_flags) {
+               ret = ops->set_flags(dev, flags);
+               if (ret)
+                       return ret;
+       }
+       chip->flags = flags;
+
+       return 0;
+}
+
+int i2c_get_chip_flags(struct udevice *dev, uint *flagsp)
+{
+       struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+
+       *flagsp = chip->flags;
+
+       return 0;
+}
+
+int i2c_set_chip_offset_len(struct udevice *dev, uint offset_len)
+{
+       struct dm_i2c_chip *chip = dev_get_parentdata(dev);
+
+       if (offset_len > I2C_MAX_OFFSET_LEN)
+               return -EINVAL;
+       chip->offset_len = offset_len;
+
+       return 0;
+}
+
+int i2c_deblock(struct udevice *bus)
+{
+       struct dm_i2c_ops *ops = i2c_get_ops(bus);
+
+       /*
+        * We could implement a software deblocking here if we could get
+        * access to the GPIOs used by I2C, and switch them to GPIO mode
+        * and then back to I2C. This is somewhat beyond our powers in
+        * driver model at present, so for now just fail.
+        *
+        * See https://patchwork.ozlabs.org/patch/399040/
+        */
+       if (!ops->deblock)
+               return -ENOSYS;
+
+       return ops->deblock(bus);
+}
+
+int i2c_chip_ofdata_to_platdata(const void *blob, int node,
+                               struct dm_i2c_chip *chip)
+{
+       chip->offset_len = 1;   /* default */
+       chip->flags = 0;
+       chip->chip_addr = fdtdec_get_int(gd->fdt_blob, node, "reg", -1);
+       if (chip->chip_addr == -1) {
+               debug("%s: I2C Node '%s' has no 'reg' property\n", __func__,
+                     fdt_get_name(blob, node, NULL));
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+static int i2c_post_probe(struct udevice *dev)
+{
+       struct dm_i2c_bus *i2c = dev->uclass_priv;
+
+       i2c->speed_hz = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
+                                    "clock-frequency", 100000);
+
+       return i2c_set_bus_speed(dev, i2c->speed_hz);
+}
+
+int i2c_post_bind(struct udevice *dev)
+{
+       /* Scan the bus for devices */
+       return dm_scan_fdt_node(dev, gd->fdt_blob, dev->of_offset, false);
+}
+
+UCLASS_DRIVER(i2c) = {
+       .id             = UCLASS_I2C,
+       .name           = "i2c",
+       .per_device_auto_alloc_size = sizeof(struct dm_i2c_bus),
+       .post_bind      = i2c_post_bind,
+       .post_probe     = i2c_post_probe,
+};
+
+UCLASS_DRIVER(i2c_generic) = {
+       .id             = UCLASS_I2C_GENERIC,
+       .name           = "i2c_generic",
+};
+
+U_BOOT_DRIVER(i2c_generic_chip_drv) = {
+       .name           = "i2c_generic_chip_drv",
+       .id             = UCLASS_I2C_GENERIC,
+};
index 18d6736601c161f45cb7d81b5eae53bdeaaf6b0b..41cc3b8fa43b270de0253fe74036f013efd9125d 100644 (file)
@@ -174,11 +174,11 @@ static int i2c_mux_set_all(void)
        return 0;
 }
 
-static int i2c_mux_disconnet_all(void)
+static int i2c_mux_disconnect_all(void)
 {
        struct  i2c_bus_hose *i2c_bus_tmp = &i2c_bus[I2C_BUS];
        int     i;
-       uint8_t buf;
+       uint8_t buf = 0;
 
        if (I2C_ADAP->init_done == 0)
                return 0;
@@ -197,7 +197,7 @@ static int i2c_mux_disconnet_all(void)
 
                        ret = I2C_ADAP->write(I2C_ADAP, chip, 0, 0, &buf, 1);
                        if (ret != 0) {
-                               printf("i2c: mux diconnect error\n");
+                               printf("i2c: mux disconnect error\n");
                                return ret;
                        }
                } while (i > 0);
@@ -229,11 +229,9 @@ static void i2c_init_bus(unsigned int bus_no, int speed, int slaveaddr)
 }
 
 /* implement possible board specific board init */
-static void __def_i2c_init_board(void)
+__weak void i2c_init_board(void)
 {
 }
-void i2c_init_board(void)
-       __attribute__((weak, alias("__def_i2c_init_board")));
 
 /*
  * i2c_init_all():
@@ -295,7 +293,7 @@ int i2c_set_bus_num(unsigned int bus)
        }
 
 #ifndef CONFIG_SYS_I2C_DIRECT_BUS
-       i2c_mux_disconnet_all();
+       i2c_mux_disconnect_all();
 #endif
 
        gd->cur_i2c_bus = bus;
@@ -395,9 +393,7 @@ void i2c_reg_write(uint8_t addr, uint8_t reg, uint8_t val)
        i2c_write(addr, reg, 1, &val, 1);
 }
 
-void __i2c_init(int speed, int slaveaddr)
+__weak void i2c_init(int speed, int slaveaddr)
 {
        i2c_init_bus(i2c_get_bus_num(), speed, slaveaddr);
 }
-void i2c_init(int speed, int slaveaddr)
-       __attribute__((weak, alias("__i2c_init")));
index 021b2fe511d26c9e35b617c60a35d8725e1f3d07..fc5ee35a1ad9ec421de06ae6ba854289eac0bc52 100644 (file)
@@ -402,17 +402,6 @@ int bus_i2c_write(void *base, uchar chip, uint addr, int alen,
        return ret;
 }
 
-struct i2c_parms {
-       void *base;
-       void *idle_bus_data;
-       int (*idle_bus_fn)(void *p);
-};
-
-struct sram_data {
-       unsigned curr_i2c_bus;
-       struct i2c_parms i2c_data[3];
-};
-
 static void * const i2c_bases[] = {
 #if defined(CONFIG_MX25)
        (void *)IMX_I2C_BASE,
@@ -439,6 +428,17 @@ static void * const i2c_bases[] = {
 #endif
 };
 
+struct i2c_parms {
+       void *base;
+       void *idle_bus_data;
+       int (*idle_bus_fn)(void *p);
+};
+
+struct sram_data {
+       unsigned curr_i2c_bus;
+       struct i2c_parms i2c_data[ARRAY_SIZE(i2c_bases)];
+};
+
 void *i2c_get_base(struct i2c_adapter *adap)
 {
        return i2c_bases[adap->hwadapnr];
index e7a15ba6448a7600ac5f8a077840e2e98533d2e3..df8888550bb0e2010db25362ca9695b4ac7a293e 100644 (file)
@@ -158,8 +158,7 @@ static void ppc4xx_i2c_init(struct i2c_adapter *adap, int speed, int slaveaddr)
  *
  * Typical case is a Write of an addr followd by a Read. The
  * IBM FAQ does not cover this. On the last byte of the write
- * we don't set the creg CHT bit, and on the first bytes of the
- * read we set the RPST bit.
+ * we don't set the creg CHT bit but the RPST bit.
  *
  * It does not support address only transfers, there must be
  * a data part. If you want to write the address yourself, put
@@ -247,6 +246,10 @@ static int _i2c_transfer(struct i2c_adapter *adap,
                if ((!cmd_type && (ptr == addr)) || ((tran + bc) != cnt))
                        creg |= IIC_CNTL_CHT;
 
+               /* last part of address, prepare for repeated start on read */
+               if (cmd_type && (ptr == addr) && ((tran + bc) == cnt))
+                       creg |= IIC_CNTL_RPST;
+
                if (reading) {
                        creg |= IIC_CNTL_READ;
                } else {
@@ -286,6 +289,27 @@ static int _i2c_transfer(struct i2c_adapter *adap,
                        /* Transfer aborted? */
                        if (status & IIC_EXTSTS_XFRA)
                                result = IIC_NOK_XFRA;
+                       /* Is bus free?
+                        * If error happened during combined xfer
+                        * IIC interface is usually stuck in some strange
+                        * state without a valid stop condition.
+                        * Brute, but working: generate stop, then soft reset.
+                        */
+                       if ((status & IIC_EXTSTS_BCS_MASK)
+                           != IIC_EXTSTS_BCS_FREE){
+                               u8 mdcntl = in_8(&i2c->mdcntl);
+
+                               /* Generate valid stop condition */
+                               out_8(&i2c->xtcntlss, IIC_XTCNTLSS_SRST);
+                               out_8(&i2c->directcntl, IIC_DIRCNTL_SCC);
+                               udelay(10);
+                               out_8(&i2c->directcntl,
+                                     IIC_DIRCNTL_SCC | IIC_DIRCNTL_SDAC);
+                               out_8(&i2c->xtcntlss, 0);
+
+                               ppc4xx_i2c_init(adap, (mdcntl & IIC_MDCNTL_FSM)
+                                               ? 400000 : 100000, 0);
+                       }
                } else if ( status & IIC_STS_PT) {
                        result = IIC_NOK_TOUT;
                }
@@ -314,8 +338,6 @@ static int _i2c_transfer(struct i2c_adapter *adap,
                        cnt = data_len;
                        tran = 0;
                        reading = cmd_type;
-                       if (reading)
-                               creg = IIC_CNTL_RPST;
                }
        }
        return result;
index 50cebd622b74702ecd4af14821f302f3d391ef84..90ad116a982e7c10618280b33b47a8057eab9445 100644 (file)
@@ -119,10 +119,10 @@ rcar_i2c_raw_read(struct rcar_i2c *dev, u8 chip, uint addr)
 
        /* set slave address, receive */
        writel((chip << 1) | 1, &dev->icmar);
-       /* clear status */
-       writel(0, &dev->icmsr);
        /* start master receive */
        writel(MCR_MDBS | MCR_MIE | MCR_ESG, &dev->icmcr);
+       /* clear status */
+       writel(0, &dev->icmsr);
 
        while ((readl(&dev->icmsr) & (MSR_MAT | MSR_MDR))
                != (MSR_MAT | MSR_MDR))
diff --git a/drivers/i2c/sandbox_i2c.c b/drivers/i2c/sandbox_i2c.c
new file mode 100644 (file)
index 0000000..f0e9f51
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Simulate an I2C port
+ *
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <i2c.h>
+#include <asm/test.h>
+#include <dm/lists.h>
+#include <dm/device-internal.h>
+#include <dm/root.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct dm_sandbox_i2c_emul_priv {
+       struct udevice *emul;
+};
+
+static int get_emul(struct udevice *dev, struct udevice **devp,
+                   struct dm_i2c_ops **opsp)
+{
+       struct dm_i2c_chip *priv;
+       int ret;
+
+       *devp = NULL;
+       *opsp = NULL;
+       priv = dev_get_parentdata(dev);
+       if (!priv->emul) {
+               ret = dm_scan_fdt_node(dev, gd->fdt_blob, dev->of_offset,
+                                      false);
+               if (ret)
+                       return ret;
+
+               ret = device_get_child(dev, 0, &priv->emul);
+               if (ret)
+                       return ret;
+       }
+       *devp = priv->emul;
+       *opsp = i2c_get_ops(priv->emul);
+
+       return 0;
+}
+
+static int sandbox_i2c_xfer(struct udevice *bus, struct i2c_msg *msg,
+                           int nmsgs)
+{
+       struct dm_i2c_bus *i2c = bus->uclass_priv;
+       struct dm_i2c_ops *ops;
+       struct udevice *emul, *dev;
+       bool is_read;
+       int ret;
+
+       /* Special test code to return success but with no emulation */
+       if (msg->addr == SANDBOX_I2C_TEST_ADDR)
+               return 0;
+
+       ret = i2c_get_chip(bus, msg->addr, &dev);
+       if (ret)
+               return ret;
+
+       ret = get_emul(dev, &emul, &ops);
+       if (ret)
+               return ret;
+
+       /*
+        * For testing, don't allow writing above 100KHz for writes and
+        * 400KHz for reads
+        */
+       is_read = nmsgs > 1;
+       if (i2c->speed_hz > (is_read ? 400000 : 100000))
+               return -EINVAL;
+       return ops->xfer(emul, msg, nmsgs);
+}
+
+static const struct dm_i2c_ops sandbox_i2c_ops = {
+       .xfer           = sandbox_i2c_xfer,
+};
+
+static int sandbox_i2c_child_pre_probe(struct udevice *dev)
+{
+       struct dm_i2c_chip *i2c_chip = dev_get_parentdata(dev);
+
+       /* Ignore our test address */
+       if (i2c_chip->chip_addr == SANDBOX_I2C_TEST_ADDR)
+               return 0;
+       if (dev->of_offset == -1)
+               return 0;
+
+       return i2c_chip_ofdata_to_platdata(gd->fdt_blob, dev->of_offset,
+                                          i2c_chip);
+}
+
+static const struct udevice_id sandbox_i2c_ids[] = {
+       { .compatible = "sandbox,i2c" },
+       { }
+};
+
+U_BOOT_DRIVER(i2c_sandbox) = {
+       .name   = "i2c_sandbox",
+       .id     = UCLASS_I2C,
+       .of_match = sandbox_i2c_ids,
+       .per_child_auto_alloc_size = sizeof(struct dm_i2c_chip),
+       .child_pre_probe = sandbox_i2c_child_pre_probe,
+       .ops    = &sandbox_i2c_ops,
+};
index 562211e7deb6504b65a0a3a088ea7572e5cc93b0..87290c3127612c3369f8e98c383118f0e3229563 100644 (file)
@@ -7,6 +7,8 @@
  */
 
 #include <common.h>
+#include <dm.h>
+#include <errno.h>
 #include <fdtdec.h>
 #include <i2c.h>
 #include <asm/io.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+enum i2c_type {
+       TYPE_114,
+       TYPE_STD,
+       TYPE_DVC,
+};
+
 /* Information about i2c controller */
 struct i2c_bus {
        int                     id;
@@ -27,20 +35,17 @@ struct i2c_bus {
        int                     pinmux_config;
        struct i2c_control      *control;
        struct i2c_ctlr         *regs;
-       int                     is_dvc; /* DVC type, rather than I2C */
-       int                     is_scs; /* single clock source (T114+) */
+       enum i2c_type           type;
        int                     inited; /* bus is inited */
 };
 
-static struct i2c_bus i2c_controllers[TEGRA_I2C_NUM_CONTROLLERS];
-
 static void set_packet_mode(struct i2c_bus *i2c_bus)
 {
        u32 config;
 
        config = I2C_CNFG_NEW_MASTER_FSM_MASK | I2C_CNFG_PACKET_MODE_MASK;
 
-       if (i2c_bus->is_dvc) {
+       if (i2c_bus->type == TYPE_DVC) {
                struct dvc_ctlr *dvc = (struct dvc_ctlr *)i2c_bus->regs;
 
                writel(config, &dvc->cnfg);
@@ -65,6 +70,9 @@ static void i2c_reset_controller(struct i2c_bus *i2c_bus)
 
 static void i2c_init_controller(struct i2c_bus *i2c_bus)
 {
+       if (!i2c_bus->speed)
+               return;
+       debug("%s: speed=%d\n", __func__, i2c_bus->speed);
        /*
         * Use PLLP - DP-04508-001_v06 datasheet indicates a divisor of 8
         * here, in section 23.3.1, but in fact we seem to need a factor of
@@ -73,7 +81,7 @@ static void i2c_init_controller(struct i2c_bus *i2c_bus)
        clock_start_periph_pll(i2c_bus->periph_id, CLOCK_ID_PERIPH,
                i2c_bus->speed * 2 * 8);
 
-       if (i2c_bus->is_scs) {
+       if (i2c_bus->type == TYPE_114) {
                /*
                 * T114 I2C went to a single clock source for standard/fast and
                 * HS clock speeds. The new clock rate setting calculation is:
@@ -98,7 +106,7 @@ static void i2c_init_controller(struct i2c_bus *i2c_bus)
        i2c_reset_controller(i2c_bus);
 
        /* Configure I2C controller. */
-       if (i2c_bus->is_dvc) {  /* only for DVC I2C */
+       if (i2c_bus->type == TYPE_DVC) {        /* only for DVC I2C */
                struct dvc_ctlr *dvc = (struct dvc_ctlr *)i2c_bus->regs;
 
                setbits_le32(&dvc->ctrl3, DVC_CTRL_REG3_I2C_HW_SW_PROG_MASK);
@@ -272,7 +280,7 @@ exit:
        return error;
 }
 
-static int tegra_i2c_write_data(struct i2c_bus *bus, u32 addr, u8 *data,
+static int tegra_i2c_write_data(struct i2c_bus *i2c_bus, u32 addr, u8 *data,
                                u32 len, bool end_with_repeated_start)
 {
        int error;
@@ -286,14 +294,14 @@ static int tegra_i2c_write_data(struct i2c_bus *bus, u32 addr, u8 *data,
        trans_info.num_bytes = len;
        trans_info.is_10bit_address = 0;
 
-       error = send_recv_packets(bus, &trans_info);
+       error = send_recv_packets(i2c_bus, &trans_info);
        if (error)
                debug("tegra_i2c_write_data: Error (%d) !!!\n", error);
 
        return error;
 }
 
-static int tegra_i2c_read_data(struct i2c_bus *bus, u32 addr, u8 *data,
+static int tegra_i2c_read_data(struct i2c_bus *i2c_bus, u32 addr, u8 *data,
                               u32 len)
 {
        int error;
@@ -305,52 +313,32 @@ static int tegra_i2c_read_data(struct i2c_bus *bus, u32 addr, u8 *data,
        trans_info.num_bytes = len;
        trans_info.is_10bit_address = 0;
 
-       error = send_recv_packets(bus, &trans_info);
+       error = send_recv_packets(i2c_bus, &trans_info);
        if (error)
                debug("tegra_i2c_read_data: Error (%d) !!!\n", error);
 
        return error;
 }
 
-#ifndef CONFIG_OF_CONTROL
-#error "Please enable device tree support to use this driver"
-#endif
-
-/**
- * Check that a bus number is valid and return a pointer to it
- *
- * @param bus_num      Bus number to check / return
- * @return pointer to bus, if valid, else NULL
- */
-static struct i2c_bus *tegra_i2c_get_bus(struct i2c_adapter *adap)
+static int tegra_i2c_set_bus_speed(struct udevice *dev, unsigned int speed)
 {
-       struct i2c_bus *bus;
+       struct i2c_bus *i2c_bus = dev_get_priv(dev);
 
-       bus = &i2c_controllers[adap->hwadapnr];
-       if (!bus->inited) {
-               debug("%s: Bus %u not available\n", __func__, adap->hwadapnr);
-               return NULL;
-       }
-
-       return bus;
-}
-
-static unsigned int tegra_i2c_set_bus_speed(struct i2c_adapter *adap,
-                       unsigned int speed)
-{
-       struct i2c_bus *bus;
-
-       bus = tegra_i2c_get_bus(adap);
-       if (!bus)
-               return 0;
-       bus->speed = speed;
-       i2c_init_controller(bus);
+       i2c_bus->speed = speed;
+       i2c_init_controller(i2c_bus);
 
        return 0;
 }
 
-static int i2c_get_config(const void *blob, int node, struct i2c_bus *i2c_bus)
+static int tegra_i2c_probe(struct udevice *dev)
 {
+       struct i2c_bus *i2c_bus = dev_get_priv(dev);
+       const void *blob = gd->fdt_blob;
+       int node = dev->of_offset;
+       bool is_dvc;
+
+       i2c_bus->id = dev->seq;
+       i2c_bus->type = dev_get_of_data(dev);
        i2c_bus->regs = (struct i2c_ctlr *)fdtdec_get_addr(blob, node, "reg");
 
        /*
@@ -358,7 +346,6 @@ static int i2c_get_config(const void *blob, int node, struct i2c_bus *i2c_bus)
         * far no one needs anything other than the default.
         */
        i2c_bus->pinmux_config = FUNCMUX_DEFAULT;
-       i2c_bus->speed = fdtdec_get_int(blob, node, "clock-frequency", 0);
        i2c_bus->periph_id = clock_decode_periph_id(blob, node);
 
        /*
@@ -371,107 +358,25 @@ static int i2c_get_config(const void *blob, int node, struct i2c_bus *i2c_bus)
         *              i2c_bus->pinmux_config = FUNCMUX_I2C2_PTA;
         */
        if (i2c_bus->periph_id == -1)
-               return -FDT_ERR_NOTFOUND;
+               return -EINVAL;
 
-       return 0;
-}
-
-/*
- * Process a list of nodes, adding them to our list of I2C ports.
- *
- * @param blob         fdt blob
- * @param node_list    list of nodes to process (any <=0 are ignored)
- * @param count                number of nodes to process
- * @param is_dvc       1 if these are DVC ports, 0 if standard I2C
- * @param is_scs       1 if this HW uses a single clock source (T114+)
- * @return 0 if ok, -1 on error
- */
-static int process_nodes(const void *blob, int node_list[], int count,
-                        int is_dvc, int is_scs)
-{
-       struct i2c_bus *i2c_bus;
-       int i;
-
-       /* build the i2c_controllers[] for each controller */
-       for (i = 0; i < count; i++) {
-               int node = node_list[i];
-
-               if (node <= 0)
-                       continue;
-
-               i2c_bus = &i2c_controllers[i];
-               i2c_bus->id = i;
-
-               if (i2c_get_config(blob, node, i2c_bus)) {
-                       printf("i2c_init_board: failed to decode bus %d\n", i);
-                       return -1;
-               }
-
-               i2c_bus->is_scs = is_scs;
-
-               i2c_bus->is_dvc = is_dvc;
-               if (is_dvc) {
-                       i2c_bus->control =
-                               &((struct dvc_ctlr *)i2c_bus->regs)->control;
-               } else {
-                       i2c_bus->control = &i2c_bus->regs->control;
-               }
-               debug("%s: controller bus %d at %p, periph_id %d, speed %d: ",
-                     is_dvc ? "dvc" : "i2c", i, i2c_bus->regs,
-                     i2c_bus->periph_id, i2c_bus->speed);
-               i2c_init_controller(i2c_bus);
-               debug("ok\n");
-               i2c_bus->inited = 1;
-
-               /* Mark position as used */
-               node_list[i] = -1;
+       is_dvc = dev_get_of_data(dev) == TYPE_DVC;
+       if (is_dvc) {
+               i2c_bus->control =
+                       &((struct dvc_ctlr *)i2c_bus->regs)->control;
+       } else {
+               i2c_bus->control = &i2c_bus->regs->control;
        }
+       i2c_init_controller(i2c_bus);
+       debug("%s: controller bus %d at %p, periph_id %d, speed %d: ",
+             is_dvc ? "dvc" : "i2c", dev->seq, i2c_bus->regs,
+             i2c_bus->periph_id, i2c_bus->speed);
 
        return 0;
 }
 
-/* Sadly there is no error return from this function */
-void i2c_init_board(void)
-{
-       int node_list[TEGRA_I2C_NUM_CONTROLLERS];
-       const void *blob = gd->fdt_blob;
-       int count;
-
-       /* First check for newer (T114+) I2C ports */
-       count = fdtdec_find_aliases_for_id(blob, "i2c",
-                       COMPAT_NVIDIA_TEGRA114_I2C, node_list,
-                       TEGRA_I2C_NUM_CONTROLLERS);
-       if (process_nodes(blob, node_list, count, 0, 1))
-               return;
-
-       /* Now get the older (T20/T30) normal I2C ports */
-       count = fdtdec_find_aliases_for_id(blob, "i2c",
-                       COMPAT_NVIDIA_TEGRA20_I2C, node_list,
-                       TEGRA_I2C_NUM_CONTROLLERS);
-       if (process_nodes(blob, node_list, count, 0, 0))
-               return;
-
-       /* Now look for dvc ports */
-       count = fdtdec_add_aliases_for_id(blob, "i2c",
-                       COMPAT_NVIDIA_TEGRA20_DVC, node_list,
-                       TEGRA_I2C_NUM_CONTROLLERS);
-       if (process_nodes(blob, node_list, count, 1, 0))
-               return;
-}
-
-static void tegra_i2c_init(struct i2c_adapter *adap, int speed, int slaveaddr)
-{
-       /* No i2c support prior to relocation */
-       if (!(gd->flags & GD_FLG_RELOC))
-               return;
-
-       /* This will override the speed selected in the fdt for that port */
-       debug("i2c_init(speed=%u, slaveaddr=0x%x)\n", speed, slaveaddr);
-       i2c_set_bus_speed(speed);
-}
-
 /* i2c write version without the register address */
-static int i2c_write_data(struct i2c_bus *bus, uchar chip, uchar *buffer,
+static int i2c_write_data(struct i2c_bus *i2c_bus, uchar chip, uchar *buffer,
                          int len, bool end_with_repeated_start)
 {
        int rc;
@@ -484,7 +389,7 @@ static int i2c_write_data(struct i2c_bus *bus, uchar chip, uchar *buffer,
        debug("\n");
 
        /* Shift 7-bit address over for lower-level i2c functions */
-       rc = tegra_i2c_write_data(bus, chip << 1, buffer, len,
+       rc = tegra_i2c_write_data(i2c_bus, chip << 1, buffer, len,
                                  end_with_repeated_start);
        if (rc)
                debug("i2c_write_data(): rc=%d\n", rc);
@@ -493,14 +398,14 @@ static int i2c_write_data(struct i2c_bus *bus, uchar chip, uchar *buffer,
 }
 
 /* i2c read version without the register address */
-static int i2c_read_data(struct i2c_bus *bus, uchar chip, uchar *buffer,
-                               int len)
+static int i2c_read_data(struct i2c_bus *i2c_bus, uchar chip, uchar *buffer,
+                        int len)
 {
        int rc;
 
        debug("inside i2c_read_data():\n");
        /* Shift 7-bit address over for lower-level i2c functions */
-       rc = tegra_i2c_read_data(bus, chip << 1, buffer, len);
+       rc = tegra_i2c_read_data(i2c_bus, chip << 1, buffer, len);
        if (rc) {
                debug("i2c_read_data(): rc=%d\n", rc);
                return rc;
@@ -516,132 +421,99 @@ static int i2c_read_data(struct i2c_bus *bus, uchar chip, uchar *buffer,
 }
 
 /* Probe to see if a chip is present. */
-static int tegra_i2c_probe(struct i2c_adapter *adap, uchar chip)
+static int tegra_i2c_probe_chip(struct udevice *bus, uint chip_addr,
+                               uint chip_flags)
 {
-       struct i2c_bus *bus;
+       struct i2c_bus *i2c_bus = dev_get_priv(bus);
        int rc;
-       uchar reg;
-
-       debug("i2c_probe: addr=0x%x\n", chip);
-       bus = tegra_i2c_get_bus(adap);
-       if (!bus)
-               return 1;
-       reg = 0;
-       rc = i2c_write_data(bus, chip, &reg, 1, false);
-       if (rc) {
-               debug("Error probing 0x%x.\n", chip);
-               return 1;
-       }
-       return 0;
-}
+       u8 reg;
 
-static int i2c_addr_ok(const uint addr, const int alen)
-{
-       /* We support 7 or 10 bit addresses, so one or two bytes each */
-       return alen == 1 || alen == 2;
+       /* Shift 7-bit address over for lower-level i2c functions */
+       rc = tegra_i2c_write_data(i2c_bus, chip_addr << 1, &reg, sizeof(reg),
+                                 false);
+
+       return rc;
 }
 
-/* Read bytes */
-static int tegra_i2c_read(struct i2c_adapter *adap, uchar chip, uint addr,
-                       int alen, uchar *buffer, int len)
+static int tegra_i2c_xfer(struct udevice *bus, struct i2c_msg *msg,
+                         int nmsgs)
 {
-       struct i2c_bus *bus;
-       uint offset;
-       int i;
-
-       debug("i2c_read: chip=0x%x, addr=0x%x, alen=0x%x len=0x%x\n",
-             chip, addr, alen, len);
-       bus = tegra_i2c_get_bus(adap);
-       if (!bus)
-               return 1;
-       if (!i2c_addr_ok(addr, alen)) {
-               debug("i2c_read: Bad address %x.%d.\n", addr, alen);
-               return 1;
-       }
-       for (offset = 0; offset < len; offset++) {
-               if (alen) {
-                       uchar data[alen];
-                       for (i = 0; i < alen; i++) {
-                               data[alen - i - 1] =
-                                       (addr + offset) >> (8 * i);
-                       }
-                       if (i2c_write_data(bus, chip, data, alen, true)) {
-                               debug("i2c_read: error sending (0x%x)\n",
-                                       addr);
-                               return 1;
-                       }
+       struct i2c_bus *i2c_bus = dev_get_priv(bus);
+       int ret;
+
+       debug("i2c_xfer: %d messages\n", nmsgs);
+       for (; nmsgs > 0; nmsgs--, msg++) {
+               bool next_is_read = nmsgs > 1 && (msg[1].flags & I2C_M_RD);
+
+               debug("i2c_xfer: chip=0x%x, len=0x%x\n", msg->addr, msg->len);
+               if (msg->flags & I2C_M_RD) {
+                       ret = i2c_read_data(i2c_bus, msg->addr, msg->buf,
+                                           msg->len);
+               } else {
+                       ret = i2c_write_data(i2c_bus, msg->addr, msg->buf,
+                                            msg->len, next_is_read);
                }
-               if (i2c_read_data(bus, chip, buffer + offset, 1)) {
-                       debug("i2c_read: error reading (0x%x)\n", addr);
-                       return 1;
+               if (ret) {
+                       debug("i2c_write: error sending\n");
+                       return -EREMOTEIO;
                }
        }
 
        return 0;
 }
 
-/* Write bytes */
-static int tegra_i2c_write(struct i2c_adapter *adap, uchar chip, uint addr,
-                       int alen, uchar *buffer, int len)
+int tegra_i2c_get_dvc_bus(struct udevice **busp)
 {
-       struct i2c_bus *bus;
-       uint offset;
-       int i;
-
-       debug("i2c_write: chip=0x%x, addr=0x%x, alen=0x%x len=0x%x\n",
-             chip, addr, alen, len);
-       bus = tegra_i2c_get_bus(adap);
-       if (!bus)
-               return 1;
-       if (!i2c_addr_ok(addr, alen)) {
-               debug("i2c_write: Bad address %x.%d.\n", addr, alen);
-               return 1;
-       }
-       for (offset = 0; offset < len; offset++) {
-               uchar data[alen + 1];
-               for (i = 0; i < alen; i++)
-                       data[alen - i - 1] = (addr + offset) >> (8 * i);
-               data[alen] = buffer[offset];
-               if (i2c_write_data(bus, chip, data, alen + 1, false)) {
-                       debug("i2c_write: error sending (0x%x)\n", addr);
-                       return 1;
+       struct udevice *bus;
+
+       for (uclass_first_device(UCLASS_I2C, &bus);
+            bus;
+            uclass_next_device(&bus)) {
+               if (dev_get_of_data(bus) == TYPE_DVC) {
+                       *busp = bus;
+                       return 0;
                }
        }
 
-       return 0;
+       return -ENODEV;
 }
 
-int tegra_i2c_get_dvc_bus_num(void)
-{
-       int i;
+static const struct dm_i2c_ops tegra_i2c_ops = {
+       .xfer           = tegra_i2c_xfer,
+       .probe_chip     = tegra_i2c_probe_chip,
+       .set_bus_speed  = tegra_i2c_set_bus_speed,
+};
 
-       for (i = 0; i < TEGRA_I2C_NUM_CONTROLLERS; i++) {
-               struct i2c_bus *bus = &i2c_controllers[i];
+static int tegra_i2c_child_pre_probe(struct udevice *dev)
+{
+       struct dm_i2c_chip *i2c_chip = dev_get_parentdata(dev);
 
-               if (bus->inited && bus->is_dvc)
-                       return i;
-       }
+       if (dev->of_offset == -1)
+               return 0;
+       return i2c_chip_ofdata_to_platdata(gd->fdt_blob, dev->of_offset,
+                                          i2c_chip);
+}
 
-       return -1;
+static int tegra_i2c_ofdata_to_platdata(struct udevice *dev)
+{
+       return 0;
 }
 
-/*
- * Register soft i2c adapters
- */
-U_BOOT_I2C_ADAP_COMPLETE(tegra0, tegra_i2c_init, tegra_i2c_probe,
-                        tegra_i2c_read, tegra_i2c_write,
-                        tegra_i2c_set_bus_speed, 100000, 0, 0)
-U_BOOT_I2C_ADAP_COMPLETE(tegra1, tegra_i2c_init, tegra_i2c_probe,
-                        tegra_i2c_read, tegra_i2c_write,
-                        tegra_i2c_set_bus_speed, 100000, 0, 1)
-U_BOOT_I2C_ADAP_COMPLETE(tegra2, tegra_i2c_init, tegra_i2c_probe,
-                        tegra_i2c_read, tegra_i2c_write,
-                        tegra_i2c_set_bus_speed, 100000, 0, 2)
-U_BOOT_I2C_ADAP_COMPLETE(tegra3, tegra_i2c_init, tegra_i2c_probe,
-                        tegra_i2c_read, tegra_i2c_write,
-                        tegra_i2c_set_bus_speed, 100000, 0, 3)
-#if TEGRA_I2C_NUM_CONTROLLERS > 4
-U_BOOT_I2C_ADAP_COMPLETE(tegra4, tegra_i2c_init, tegra_i2c_probe,
-                        tegra_i2c_read, tegra_i2c_write,
-                        tegra_i2c_set_bus_speed, 100000, 0, 4)
-#endif
+static const struct udevice_id tegra_i2c_ids[] = {
+       { .compatible = "nvidia,tegra114-i2c", .data = TYPE_114 },
+       { .compatible = "nvidia,tegra20-i2c", .data = TYPE_STD },
+       { .compatible = "nvidia,tegra20-i2c-dvc", .data = TYPE_DVC },
+       { }
+};
+
+U_BOOT_DRIVER(i2c_tegra) = {
+       .name   = "i2c_tegra",
+       .id     = UCLASS_I2C,
+       .of_match = tegra_i2c_ids,
+       .ofdata_to_platdata = tegra_i2c_ofdata_to_platdata,
+       .probe  = tegra_i2c_probe,
+       .per_child_auto_alloc_size = sizeof(struct dm_i2c_chip),
+       .child_pre_probe = tegra_i2c_child_pre_probe,
+       .priv_auto_alloc_size = sizeof(struct i2c_bus),
+       .ops    = &tegra_i2c_ops,
+};
index 47502b176310f2b4ba84185b26301aeb1cafec72..49ee7b2c9b635733174d635c087013acb1c95618 100644 (file)
@@ -18,6 +18,8 @@ DECLARE_GLOBAL_DATA_PTR;
 
 enum {
        KBC_MAX_KEYS            = 8,    /* Maximum keys held down at once */
+       KBC_REPEAT_RATE_MS      = 30,
+       KBC_REPEAT_DELAY_MS     = 240,
 };
 
 static struct keyb {
@@ -26,8 +28,6 @@ static struct keyb {
        struct key_matrix matrix;       /* The key matrix layer */
        int key_rows;                   /* Number of keyboard rows */
        int key_cols;                   /* Number of keyboard columns */
-       unsigned int repeat_delay_ms;   /* Time before autorepeat starts */
-       unsigned int repeat_rate_ms;    /* Autorepeat rate in ms */
        int ghost_filter;               /* 1 to enable ghost filter, else 0 */
        int inited;                     /* 1 if keyboard is ready */
 } config;
@@ -188,8 +188,8 @@ static int cros_ec_keyb_decode_fdt(const void *blob, int node,
         * Get keyboard rows and columns - at present we are limited to
         * 8 columns by the protocol (one byte per row scan)
         */
-       config->key_rows = fdtdec_get_int(blob, node, "google,key-rows", 0);
-       config->key_cols = fdtdec_get_int(blob, node, "google,key-columns", 0);
+       config->key_rows = fdtdec_get_int(blob, node, "keypad,num-rows", 0);
+       config->key_cols = fdtdec_get_int(blob, node, "keypad,num-columns", 0);
        if (!config->key_rows || !config->key_cols ||
                        config->key_rows * config->key_cols / 8
                                > CROS_EC_KEYSCAN_COLS) {
@@ -197,10 +197,6 @@ static int cros_ec_keyb_decode_fdt(const void *blob, int node,
                      config->key_rows, config->key_cols);
                return -1;
        }
-       config->repeat_delay_ms = fdtdec_get_int(blob, node,
-                                                "google,repeat-delay-ms", 0);
-       config->repeat_rate_ms = fdtdec_get_int(blob, node,
-                                               "google,repeat-rate-ms", 0);
        config->ghost_filter = fdtdec_get_bool(blob, node,
                                               "google,ghost-filter");
        return 0;
@@ -232,8 +228,8 @@ static int cros_ec_init_keyboard(struct stdio_dev *dev)
        }
        if (cros_ec_keyb_decode_fdt(blob, node, &config))
                return -1;
-       input_set_delays(&config.input, config.repeat_delay_ms,
-                        config.repeat_rate_ms);
+       input_set_delays(&config.input, KBC_REPEAT_DELAY_MS,
+                        KBC_REPEAT_RATE_MS);
        if (key_matrix_init(&config.matrix, config.key_rows,
                        config.key_cols, config.ghost_filter)) {
                debug("%s: cannot init key matrix\n", __func__);
index 2f2e48f9790484b9be39a83138f502dd7ebf9877..a34972df4ee14e5db82b68b82a32d8a9653b2266 100644 (file)
@@ -15,11 +15,16 @@ obj-$(CONFIG_CROS_EC_SANDBOX) += cros_ec_sandbox.o
 obj-$(CONFIG_CROS_EC_SPI) += cros_ec_spi.o
 obj-$(CONFIG_FSL_IIM) += fsl_iim.o
 obj-$(CONFIG_GPIO_LED) += gpio_led.o
+obj-$(CONFIG_I2C_EEPROM) += i2c_eeprom.o
 obj-$(CONFIG_FSL_MC9SDZ60) += mc9sdz60.o
 obj-$(CONFIG_MXC_OCOTP) += mxc_ocotp.o
 obj-$(CONFIG_MXS_OCOTP) += mxs_ocotp.o
 obj-$(CONFIG_NS87308) += ns87308.o
 obj-$(CONFIG_PDSP188x) += pdsp188x.o
+ifdef CONFIG_DM_I2C
+obj-$(CONFIG_SANDBOX) += i2c_eeprom_emul.o
+endif
+obj-$(CONFIG_SMSC_LPC47M) += smsc_lpc47m.o
 obj-$(CONFIG_STATUS_LED) += status_led.o
 obj-$(CONFIG_TWL4030_LED) += twl4030_led.o
 obj-$(CONFIG_FSL_IFC) += fsl_ifc.o
index 521edfd5de5cf5698ff98c1627e30703c3649282..9b4effb2fb56cda2fcba39d1a5ee80fe084384b8 100644 (file)
@@ -701,6 +701,7 @@ static int cros_ec_check_version(struct cros_ec_dev *dev)
 
        /* Try sending a version 3 packet */
        dev->protocol_version = 3;
+       req.in_data = 0;
        if (ec_command_inptr(dev, EC_CMD_HELLO, 0, &req, sizeof(req),
                             (uint8_t **)&resp, sizeof(*resp)) > 0) {
                return 0;
index e403664bb561755184c60e9020e028b84169d40f..e6dba298b1e9f2a37b31b4511cf9c8902c9ff227 100644 (file)
@@ -143,7 +143,7 @@ int cros_ec_spi_command(struct cros_ec_dev *dev, uint8_t cmd, int cmd_version,
                return -1;
        }
 
-       len = min(p[1], din_len);
+       len = min((int)p[1], din_len);
        cros_ec_dump_data("in", -1, p, len + 3);
 
        /* Response code is first byte of message */
diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c
new file mode 100644 (file)
index 0000000..814134a
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <dm.h>
+#include <i2c.h>
+#include <i2c_eeprom.h>
+
+static int i2c_eeprom_read(struct udevice *dev, int offset, uint8_t *buf,
+                          int size)
+{
+       return -ENODEV;
+}
+
+static int i2c_eeprom_write(struct udevice *dev, int offset,
+                           const uint8_t *buf, int size)
+{
+       return -ENODEV;
+}
+
+struct i2c_eeprom_ops i2c_eeprom_std_ops = {
+       .read   = i2c_eeprom_read,
+       .write  = i2c_eeprom_write,
+};
+
+int i2c_eeprom_std_probe(struct udevice *dev)
+{
+       return 0;
+}
+
+static const struct udevice_id i2c_eeprom_std_ids[] = {
+       { .compatible = "i2c-eeprom" },
+       { }
+};
+
+U_BOOT_DRIVER(i2c_eeprom_std) = {
+       .name           = "i2c_eeprom",
+       .id             = UCLASS_I2C_EEPROM,
+       .of_match       = i2c_eeprom_std_ids,
+       .probe          = i2c_eeprom_std_probe,
+       .priv_auto_alloc_size = sizeof(struct i2c_eeprom),
+       .ops            = &i2c_eeprom_std_ops,
+};
+
+UCLASS_DRIVER(i2c_eeprom) = {
+       .id             = UCLASS_I2C_EEPROM,
+       .name           = "i2c_eeprom",
+};
diff --git a/drivers/misc/i2c_eeprom_emul.c b/drivers/misc/i2c_eeprom_emul.c
new file mode 100644 (file)
index 0000000..7343445
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+ * Simulate an I2C eeprom
+ *
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <fdtdec.h>
+#include <i2c.h>
+#include <malloc.h>
+#include <asm/test.h>
+
+#ifdef DEBUG
+#define debug_buffer print_buffer
+#else
+#define debug_buffer(x, ...)
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct sandbox_i2c_flash_plat_data {
+       enum sandbox_i2c_eeprom_test_mode test_mode;
+       const char *filename;
+       int offset_len;         /* Length of an offset in bytes */
+       int size;               /* Size of data buffer */
+};
+
+struct sandbox_i2c_flash {
+       uint8_t *data;
+};
+
+void sandbox_i2c_eeprom_set_test_mode(struct udevice *dev,
+                                     enum sandbox_i2c_eeprom_test_mode mode)
+{
+       struct sandbox_i2c_flash_plat_data *plat = dev_get_platdata(dev);
+
+       plat->test_mode = mode;
+}
+
+void sandbox_i2c_eeprom_set_offset_len(struct udevice *dev, int offset_len)
+{
+       struct sandbox_i2c_flash_plat_data *plat = dev_get_platdata(dev);
+
+       plat->offset_len = offset_len;
+}
+
+static int sandbox_i2c_eeprom_xfer(struct udevice *emul, struct i2c_msg *msg,
+                                 int nmsgs)
+{
+       struct sandbox_i2c_flash *priv = dev_get_priv(emul);
+       uint offset = 0;
+
+       debug("\n%s\n", __func__);
+       debug_buffer(0, priv->data, 1, 16, 0);
+       for (; nmsgs > 0; nmsgs--, msg++) {
+               struct sandbox_i2c_flash_plat_data *plat =
+                               dev_get_platdata(emul);
+               int len;
+               u8 *ptr;
+
+               if (!plat->size)
+                       return -ENODEV;
+               if (msg->addr + msg->len > plat->size) {
+                       debug("%s: Address %x, len %x is outside range 0..%x\n",
+                             __func__, msg->addr, msg->len, plat->size);
+                       return -EINVAL;
+               }
+               len = msg->len;
+               debug("   %s: msg->len=%d",
+                     msg->flags & I2C_M_RD ? "read" : "write",
+                     msg->len);
+               if (msg->flags & I2C_M_RD) {
+                       if (plat->test_mode == SIE_TEST_MODE_SINGLE_BYTE)
+                               len = 1;
+                       debug(", offset %x, len %x: ", offset, len);
+                       memcpy(msg->buf, priv->data + offset, len);
+                       memset(msg->buf + len, '\xff', msg->len - len);
+                       debug_buffer(0, msg->buf, 1, msg->len, 0);
+               } else if (len >= plat->offset_len) {
+                       int i;
+
+                       ptr = msg->buf;
+                       for (i = 0; i < plat->offset_len; i++, len--)
+                               offset = (offset << 8) | *ptr++;
+                       debug(", set offset %x: ", offset);
+                       debug_buffer(0, msg->buf, 1, msg->len, 0);
+                       if (plat->test_mode == SIE_TEST_MODE_SINGLE_BYTE)
+                               len = min(len, 1);
+
+                       /* For testing, map offsets into our limited buffer */
+                       for (i = 24; i > 0; i -= 8) {
+                               if (offset > (1 << i)) {
+                                       offset = (offset >> i) |
+                                               (offset & ((1 << i) - 1));
+                                       offset += i;
+                               }
+                       }
+                       memcpy(priv->data + offset, ptr, len);
+               }
+       }
+       debug_buffer(0, priv->data, 1, 16, 0);
+
+       return 0;
+}
+
+struct dm_i2c_ops sandbox_i2c_emul_ops = {
+       .xfer = sandbox_i2c_eeprom_xfer,
+};
+
+static int sandbox_i2c_eeprom_ofdata_to_platdata(struct udevice *dev)
+{
+       struct sandbox_i2c_flash_plat_data *plat = dev_get_platdata(dev);
+
+       plat->size = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
+                                   "sandbox,size", 32);
+       plat->filename = fdt_getprop(gd->fdt_blob, dev->of_offset,
+                                    "sandbox,filename", NULL);
+       if (!plat->filename) {
+               debug("%s: No filename for device '%s'\n", __func__,
+                     dev->name);
+               return -EINVAL;
+       }
+       plat->test_mode = SIE_TEST_MODE_NONE;
+       plat->offset_len = 1;
+
+       return 0;
+}
+
+static int sandbox_i2c_eeprom_probe(struct udevice *dev)
+{
+       struct sandbox_i2c_flash_plat_data *plat = dev_get_platdata(dev);
+       struct sandbox_i2c_flash *priv = dev_get_priv(dev);
+
+       priv->data = calloc(1, plat->size);
+       if (!priv->data)
+               return -ENOMEM;
+
+       return 0;
+}
+
+static int sandbox_i2c_eeprom_remove(struct udevice *dev)
+{
+       struct sandbox_i2c_flash *priv = dev_get_priv(dev);
+
+       free(priv->data);
+
+       return 0;
+}
+
+static const struct udevice_id sandbox_i2c_ids[] = {
+       { .compatible = "sandbox,i2c-eeprom" },
+       { }
+};
+
+U_BOOT_DRIVER(sandbox_i2c_emul) = {
+       .name           = "sandbox_i2c_eeprom_emul",
+       .id             = UCLASS_I2C_EMUL,
+       .of_match       = sandbox_i2c_ids,
+       .ofdata_to_platdata = sandbox_i2c_eeprom_ofdata_to_platdata,
+       .probe          = sandbox_i2c_eeprom_probe,
+       .remove         = sandbox_i2c_eeprom_remove,
+       .priv_auto_alloc_size = sizeof(struct sandbox_i2c_flash),
+       .platdata_auto_alloc_size = sizeof(struct sandbox_i2c_flash_plat_data),
+       .ops            = &sandbox_i2c_emul_ops,
+};
index 3de1245699626aa4429dba9462ef398ef77bd63c..d92044eeda227a7eba57bdb6b8a7b72ce1fdf80f 100644 (file)
@@ -81,8 +81,6 @@ static int finish_access(struct ocotp_regs *regs, const char *caller)
        err = !!(readl(&regs->ctrl) & BM_CTRL_ERROR);
        clear_error(regs);
 
-       enable_ocotp_clk(0);
-
        if (err) {
                printf("mxc_ocotp %s(): Access protect error\n", caller);
                return -EIO;
@@ -122,8 +120,8 @@ static void set_timing(struct ocotp_regs *regs)
        relax = DIV_ROUND_UP(ipg_clk * BV_TIMING_RELAX_NS, 1000000000) - 1;
        strobe_read = DIV_ROUND_UP(ipg_clk * BV_TIMING_STROBE_READ_NS,
                                        1000000000) + 2 * (relax + 1) - 1;
-       strobe_prog = DIV_ROUND(ipg_clk * BV_TIMING_STROBE_PROG_US, 1000000) +
-                       2 * (relax + 1) - 1;
+       strobe_prog = DIV_ROUND_CLOSEST(ipg_clk * BV_TIMING_STROBE_PROG_US,
+                                               1000000) + 2 * (relax + 1) - 1;
 
        timing = BF(strobe_read, TIMING_STROBE_READ) |
                        BF(relax, TIMING_RELAX) |
index 545d3ebf520ee2bd1934460ef7c6626ad95a0de0..6f0a1d3e6da836c84ef59abc7644ca9adfda3830 100644 (file)
@@ -187,6 +187,8 @@ static int mxs_ocotp_write_fuse(uint32_t addr, uint32_t mask)
        uint32_t hclk_val, vddio_val;
        int ret;
 
+       mxs_ocotp_clear_error();
+
        /* Make sure the banks are closed for reading. */
        ret = mxs_ocotp_read_bank_open(0);
        if (ret) {
@@ -221,13 +223,17 @@ static int mxs_ocotp_write_fuse(uint32_t addr, uint32_t mask)
                goto fail;
        }
 
+       /* Check for errors */
+       if (readl(&ocotp_regs->hw_ocotp_ctrl) & OCOTP_CTRL_ERROR) {
+               puts("Failed writing fuses!\n");
+               ret = -EPERM;
+               goto fail;
+       }
+
 fail:
        mxs_ocotp_scale_vddio(0, &vddio_val);
-       ret = mxs_ocotp_scale_hclk(0, &hclk_val);
-       if (ret) {
+       if (mxs_ocotp_scale_hclk(0, &hclk_val))
                puts("Failed scaling up the HCLK!\n");
-               return ret;
-       }
 
        return ret;
 }
diff --git a/drivers/misc/smsc_lpc47m.c b/drivers/misc/smsc_lpc47m.c
new file mode 100644 (file)
index 0000000..d51f8e3
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/pnp_def.h>
+
+static void pnp_enter_conf_state(u16 dev)
+{
+       u16 port = dev >> 8;
+
+       outb(0x55, port);
+}
+
+static void pnp_exit_conf_state(u16 dev)
+{
+       u16 port = dev >> 8;
+
+       outb(0xaa, port);
+}
+
+void lpc47m_enable_serial(u16 dev, u16 iobase)
+{
+       pnp_enter_conf_state(dev);
+       pnp_set_logical_device(dev);
+       pnp_set_enable(dev, 0);
+       pnp_set_iobase(dev, PNP_IDX_IO0, iobase);
+       pnp_set_enable(dev, 1);
+       pnp_exit_conf_state(dev);
+}
index 464cee16d1174e2cd1512b99f5680fdaa90aef1d..461d7d8ec1c1d626d977e18166a6fbd9cee663c6 100644 (file)
@@ -5,37 +5,39 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+obj-$(CONFIG_ARM_PL180_MMCI) += arm_pl180_mmci.o
+obj-$(CONFIG_BCM2835_SDHCI) += bcm2835_sdhci.o
 obj-$(CONFIG_BFIN_SDH) += bfin_sdh.o
 obj-$(CONFIG_DAVINCI_MMC) += davinci_mmc.o
+obj-$(CONFIG_DWMMC) += dw_mmc.o
+obj-$(CONFIG_EXYNOS_DWMMC) += exynos_dw_mmc.o
 obj-$(CONFIG_FSL_ESDHC) += fsl_esdhc.o
 obj-$(CONFIG_FTSDC010) += ftsdc010_mci.o
 obj-$(CONFIG_FTSDC021) += ftsdc021_sdhci.o
 obj-$(CONFIG_GENERIC_MMC) += mmc.o
 obj-$(CONFIG_GENERIC_ATMEL_MCI) += gen_atmel_mci.o
+obj-$(CONFIG_KONA_SDHCI) += kona_sdhci.o
 obj-$(CONFIG_MMC_SPI) += mmc_spi.o
-obj-$(CONFIG_ARM_PL180_MMCI) += arm_pl180_mmci.o
+obj-$(CONFIG_MMC_SUNXI) += sunxi_mmc.o
 obj-$(CONFIG_MV_SDHCI) += mv_sdhci.o
+obj-$(CONFIG_MVEBU_MMC) += mvebu_mmc.o
 obj-$(CONFIG_MXC_MMC) += mxcmmc.o
 obj-$(CONFIG_MXS_MMC) += mxsmmc.o
 obj-$(CONFIG_OMAP_HSMMC) += omap_hsmmc.o
 obj-$(CONFIG_PXA_MMC_GENERIC) += pxa_mmc_gen.o
-obj-$(CONFIG_SDHCI) += sdhci.o
-obj-$(CONFIG_BCM2835_SDHCI) += bcm2835_sdhci.o
-obj-$(CONFIG_KONA_SDHCI) += kona_sdhci.o
+obj-$(CONFIG_SUPPORT_EMMC_RPMB) += rpmb.o
 obj-$(CONFIG_S3C_SDI) += s3c_sdi.o
 obj-$(CONFIG_S5P_SDHCI) += s5p_sdhci.o
+obj-$(CONFIG_SDHCI) += sdhci.o
 obj-$(CONFIG_SH_MMCIF) += sh_mmcif.o
+obj-$(CONFIG_SOCFPGA_DWMMC) += socfpga_dw_mmc.o
 obj-$(CONFIG_SPEAR_SDHCI) += spear_sdhci.o
 obj-$(CONFIG_TEGRA_MMC) += tegra_mmc.o
-obj-$(CONFIG_DWMMC) += dw_mmc.o
-obj-$(CONFIG_EXYNOS_DWMMC) += exynos_dw_mmc.o
-obj-$(CONFIG_MMC_SUNXI) += sunxi_mmc.o
 obj-$(CONFIG_ZYNQ_SDHCI) += zynq_sdhci.o
-obj-$(CONFIG_SOCFPGA_DWMMC) += socfpga_dw_mmc.o
-obj-$(CONFIG_SUPPORT_EMMC_RPMB) += rpmb.o
+
 ifdef CONFIG_SPL_BUILD
 obj-$(CONFIG_SPL_MMC_BOOT) += fsl_esdhc_spl.o
 else
 obj-$(CONFIG_GENERIC_MMC) += mmc_write.o
 endif
-obj-$(CONFIG_MVEBU_MMC) += mvebu_mmc.o
+
index 785eed567c3f370e45fb3fc2febd6887750acaa7..b18c75dee2c815a7a9ddd82eac826109544cc3c0 100644 (file)
@@ -318,7 +318,7 @@ static void dwmci_set_ios(struct mmc *mmc)
        dwmci_writel(host, DWMCI_CTYPE, ctype);
 
        regs = dwmci_readl(host, DWMCI_UHS_REG);
-       if (mmc->card_caps & MMC_MODE_DDR_52MHz)
+       if (mmc->ddr_mode)
                regs |= DWMCI_DDR_MODE;
        else
                regs &= DWMCI_DDR_MODE;
index d96dfe16a538bba12a83b679608a3472e3c56e3d..dfa209bdeda0e39e0e95b513627f71107d14e25f 100644 (file)
@@ -101,7 +101,7 @@ static int exynos_dwmci_core_init(struct dwmci_host *host, int index)
        host->get_mmc_clk = exynos_dwmci_get_clk;
        /* Add the mmc channel to be registered with mmc core */
        if (add_dwmci(host, DWMMC_MAX_FREQ, DWMMC_MIN_FREQ)) {
-               debug("dwmmc%d registration failed\n", index);
+               printf("DWMMC%d registration failed\n", index);
                return -1;
        }
        return 0;
@@ -146,7 +146,7 @@ static int do_dwmci_init(struct dwmci_host *host)
        flag = host->buswidth == 8 ? PINMUX_FLAG_8BIT_MODE : PINMUX_FLAG_NONE;
        err = exynos_pinmux_config(host->dev_id, flag);
        if (err) {
-               debug("DWMMC not configure\n");
+               printf("DWMMC%d not configure\n", index);
                return err;
        }
 
@@ -162,21 +162,22 @@ static int exynos_dwmci_get_config(const void *blob, int node,
        /* Extract device id for each mmc channel */
        host->dev_id = pinmux_decode_periph_id(blob, node);
 
+       host->dev_index = fdtdec_get_int(blob, node, "index", host->dev_id);
+       if (host->dev_index == host->dev_id)
+               host->dev_index = host->dev_id - PERIPH_ID_SDMMC0;
+
+
        /* Get the bus width from the device node */
        host->buswidth = fdtdec_get_int(blob, node, "samsung,bus-width", 0);
        if (host->buswidth <= 0) {
-               debug("DWMMC: Can't get bus-width\n");
+               printf("DWMMC%d: Can't get bus-width\n", host->dev_index);
                return -EINVAL;
        }
 
-       host->dev_index = fdtdec_get_int(blob, node, "index", host->dev_id);
-       if (host->dev_index == host->dev_id)
-               host->dev_index = host->dev_id - PERIPH_ID_SDMMC0;
-
        /* Set the base address from the device node */
        base = fdtdec_get_addr(blob, node, "reg");
        if (!base) {
-               debug("DWMMC: Can't get base address\n");
+               printf("DWMMC%d: Can't get base address\n", host->dev_index);
                return -EINVAL;
        }
        host->ioaddr = (void *)base;
@@ -184,7 +185,8 @@ static int exynos_dwmci_get_config(const void *blob, int node,
        /* Extract the timing info from the node */
        err =  fdtdec_get_int_array(blob, node, "samsung,timing", timing, 3);
        if (err) {
-               debug("Can't get sdr-timings for devider\n");
+               printf("DWMMC%d: Can't get sdr-timings for devider\n",
+                               host->dev_index);
                return -EINVAL;
        }
 
@@ -214,7 +216,7 @@ static int exynos_dwmci_process_node(const void *blob,
                host = &dwmci_host[i];
                err = exynos_dwmci_get_config(blob, node, host);
                if (err) {
-                       debug("%s: failed to decode dev %d\n", __func__, i);
+                       printf("%s: failed to decode dev %d\n", __func__, i);
                        return err;
                }
 
index 26406072482f202a8ca6e2fa6cd8a54c87fbea4c..c55eb28217bc5920c3137016dc71b8a6cd58b4b4 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#define SDHCI_IRQ_EN_BITS              (IRQSTATEN_CC | IRQSTATEN_TC | \
+                               IRQSTATEN_CINT | \
+                               IRQSTATEN_CTOE | IRQSTATEN_CCE | IRQSTATEN_CEBE | \
+                               IRQSTATEN_CIE | IRQSTATEN_DTOE | IRQSTATEN_DCE | \
+                               IRQSTATEN_DEBE | IRQSTATEN_BRR | IRQSTATEN_BWR | \
+                               IRQSTATEN_DINT)
+
 struct fsl_esdhc {
        uint    dsaddr;         /* SDMA system address register */
        uint    blkattr;        /* Block attributes register */
@@ -558,6 +565,7 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg)
        esdhc_setbits32(&regs->sysctl, SYSCTL_PEREN | SYSCTL_HCKEN
                                | SYSCTL_IPGEN | SYSCTL_CKEN);
 
+       writel(SDHCI_IRQ_EN_BITS, &regs->irqstaten);
        memset(&cfg->cfg, 0, sizeof(cfg->cfg));
 
        voltage_caps = 0;
@@ -610,7 +618,7 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg)
 #endif
 
        cfg->cfg.f_min = 400000;
-       cfg->cfg.f_max = min(gd->arch.sdhc_clk, 52000000);
+       cfg->cfg.f_max = min(cfg->sdhc_clk, (u32)52000000);
 
        cfg->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
 
index 44a4feb96e0446c2c65df569afb2b3c0294817de..1eb9c2733948bf954aa00414824aa491adc4a4e3 100644 (file)
@@ -159,7 +159,7 @@ int mmc_set_blocklen(struct mmc *mmc, int len)
 {
        struct mmc_cmd cmd;
 
-       if (mmc->card_caps & MMC_MODE_DDR_52MHz)
+       if (mmc->ddr_mode)
                return 0;
 
        cmd.cmdidx = MMC_CMD_SET_BLOCKLEN;
@@ -486,7 +486,7 @@ static int mmc_change_freq(struct mmc *mmc)
        char cardtype;
        int err;
 
-       mmc->card_caps = 0;
+       mmc->card_caps = MMC_MODE_4BIT | MMC_MODE_8BIT;
 
        if (mmc_host_is_spi(mmc))
                return 0;
@@ -519,7 +519,7 @@ static int mmc_change_freq(struct mmc *mmc)
 
        /* High Speed is set, there are two types: 52MHz and 26MHz */
        if (cardtype & EXT_CSD_CARD_TYPE_52) {
-               if (cardtype & EXT_CSD_CARD_TYPE_DDR_52)
+               if (cardtype & EXT_CSD_CARD_TYPE_DDR_1_8V)
                        mmc->card_caps |= MMC_MODE_DDR_52MHz;
                mmc->card_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS;
        } else {
@@ -1001,6 +1001,9 @@ static int mmc_startup(struct mmc *mmc)
                case 6:
                        mmc->version = MMC_VERSION_4_5;
                        break;
+               case 7:
+                       mmc->version = MMC_VERSION_5_0;
+                       break;
                }
 
                /*
@@ -1022,6 +1025,21 @@ static int mmc_startup(struct mmc *mmc)
                        mmc->erase_grp_size =
                                ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] *
                                        MMC_MAX_BLOCK_LEN * 1024;
+                       /*
+                        * if high capacity and partition setting completed
+                        * SEC_COUNT is valid even if it is smaller than 2 GiB
+                        * JEDEC Standard JESD84-B45, 6.2.4
+                        */
+                       if (mmc->high_capacity &&
+                           (ext_csd[EXT_CSD_PARTITION_SETTING] &
+                            EXT_CSD_PARTITION_SETTING_COMPLETED)) {
+                               capacity = (ext_csd[EXT_CSD_SEC_CNT]) |
+                                       (ext_csd[EXT_CSD_SEC_CNT + 1] << 8) |
+                                       (ext_csd[EXT_CSD_SEC_CNT + 2] << 16) |
+                                       (ext_csd[EXT_CSD_SEC_CNT + 3] << 24);
+                               capacity *= MMC_MAX_BLOCK_LEN;
+                               mmc->capacity_user = capacity;
+                       }
                } else {
                        /* Calculate the group size from the csd value. */
                        int erase_gsz, erase_gmul;
@@ -1103,8 +1121,10 @@ static int mmc_startup(struct mmc *mmc)
 
                /* An array to map CSD bus widths to host cap bits */
                static unsigned ext_to_hostcaps[] = {
-                       [EXT_CSD_DDR_BUS_WIDTH_4] = MMC_MODE_DDR_52MHz,
-                       [EXT_CSD_DDR_BUS_WIDTH_8] = MMC_MODE_DDR_52MHz,
+                       [EXT_CSD_DDR_BUS_WIDTH_4] =
+                               MMC_MODE_DDR_52MHz | MMC_MODE_4BIT,
+                       [EXT_CSD_DDR_BUS_WIDTH_8] =
+                               MMC_MODE_DDR_52MHz | MMC_MODE_8BIT,
                        [EXT_CSD_BUS_WIDTH_4] = MMC_MODE_4BIT,
                        [EXT_CSD_BUS_WIDTH_8] = MMC_MODE_8BIT,
                };
@@ -1116,13 +1136,13 @@ static int mmc_startup(struct mmc *mmc)
 
                for (idx=0; idx < ARRAY_SIZE(ext_csd_bits); idx++) {
                        unsigned int extw = ext_csd_bits[idx];
+                       unsigned int caps = ext_to_hostcaps[extw];
 
                        /*
-                        * Check to make sure the controller supports
-                        * this bus width, if it's more than 1
+                        * Check to make sure the card and controller support
+                        * these capabilities
                         */
-                       if (extw != EXT_CSD_BUS_WIDTH_1 &&
-                                       !(mmc->cfg->host_caps & ext_to_hostcaps[extw]))
+                       if ((mmc->card_caps & caps) != caps)
                                continue;
 
                        err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL,
@@ -1131,26 +1151,33 @@ static int mmc_startup(struct mmc *mmc)
                        if (err)
                                continue;
 
+                       mmc->ddr_mode = (caps & MMC_MODE_DDR_52MHz) ? 1 : 0;
                        mmc_set_bus_width(mmc, widths[idx]);
 
                        err = mmc_send_ext_csd(mmc, test_csd);
+
+                       if (err)
+                               continue;
+
                        /* Only compare read only fields */
-                       if (!err && ext_csd[EXT_CSD_PARTITIONING_SUPPORT] \
-                                   == test_csd[EXT_CSD_PARTITIONING_SUPPORT]
-                                && ext_csd[EXT_CSD_HC_WP_GRP_SIZE] \
-                                   == test_csd[EXT_CSD_HC_WP_GRP_SIZE] \
-                                && ext_csd[EXT_CSD_REV] \
-                                   == test_csd[EXT_CSD_REV]
-                                && ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] \
-                                   == test_csd[EXT_CSD_HC_ERASE_GRP_SIZE]
-                                && memcmp(&ext_csd[EXT_CSD_SEC_CNT], \
-                                       &test_csd[EXT_CSD_SEC_CNT], 4) == 0) {
-
-                               mmc->card_caps |= ext_to_hostcaps[extw];
+                       if (ext_csd[EXT_CSD_PARTITIONING_SUPPORT]
+                               == test_csd[EXT_CSD_PARTITIONING_SUPPORT] &&
+                           ext_csd[EXT_CSD_HC_WP_GRP_SIZE]
+                               == test_csd[EXT_CSD_HC_WP_GRP_SIZE] &&
+                           ext_csd[EXT_CSD_REV]
+                               == test_csd[EXT_CSD_REV] &&
+                           ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE]
+                               == test_csd[EXT_CSD_HC_ERASE_GRP_SIZE] &&
+                           memcmp(&ext_csd[EXT_CSD_SEC_CNT],
+                                  &test_csd[EXT_CSD_SEC_CNT], 4) == 0)
                                break;
-                       }
+                       else
+                               err = SWITCH_ERR;
                }
 
+               if (err)
+                       return err;
+
                if (mmc->card_caps & MMC_MODE_HS) {
                        if (mmc->card_caps & MMC_MODE_HS_52MHz)
                                mmc->tran_speed = 52000000;
@@ -1161,6 +1188,12 @@ static int mmc_startup(struct mmc *mmc)
 
        mmc_set_clock(mmc, mmc->tran_speed);
 
+       /* Fix the block length for DDR mode */
+       if (mmc->ddr_mode) {
+               mmc->read_bl_len = MMC_MAX_BLOCK_LEN;
+               mmc->write_bl_len = MMC_MAX_BLOCK_LEN;
+       }
+
        /* fill in device description */
        mmc->block_dev.lun = 0;
        mmc->block_dev.type = 0;
@@ -1277,6 +1310,11 @@ block_dev_desc_t *mmc_get_dev(int dev)
 }
 #endif
 
+/* board-specific MMC power initializations. */
+__weak void board_mmc_power_init(void)
+{
+}
+
 int mmc_start_init(struct mmc *mmc)
 {
        int err;
@@ -1293,12 +1331,15 @@ int mmc_start_init(struct mmc *mmc)
        if (mmc->has_init)
                return 0;
 
+       board_mmc_power_init();
+
        /* made sure it's not NULL earlier */
        err = mmc->cfg->ops->init(mmc);
 
        if (err)
                return err;
 
+       mmc->ddr_mode = 0;
        mmc_set_bus_width(mmc, 1);
        mmc_set_clock(mmc, 1);
 
@@ -1401,8 +1442,11 @@ void print_mmc_devices(char separator)
 
                printf("%s: %d", m->cfg->name, m->block_dev.dev);
 
-               if (entry->next != &mmc_devices)
-                       printf("%c ", separator);
+               if (entry->next != &mmc_devices) {
+                       printf("%c", separator);
+                       if (separator != '\n')
+                               puts (" ");
+               }
        }
 
        printf("\n");
index 9f98c3f37c9790858a873b90fdcf27845fce15bc..8ca09042d8d9280c94b9f5620b8e8a10ae8862a8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Marvell MMC/SD/SDIO driver
  *
- * (C) Copyright 2012
+ * (C) Copyright 2012-2014
  * Marvell Semiconductor <www.marvell.com>
  * Written-by: Maen Suleiman, Gerald Kerma
  *
@@ -23,6 +23,8 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #define MVEBU_TARGET_DRAM 0
 
+#define TIMEOUT_DELAY  5*CONFIG_SYS_HZ         /* wait 5 seconds */
+
 static void mvebu_mmc_write(u32 offs, u32 val)
 {
        writel(val, CONFIG_SYS_MMC_BASE + (offs));
@@ -63,37 +65,47 @@ static int mvebu_mmc_setup_data(struct mmc_data *data)
 static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
                              struct mmc_data *data)
 {
-       int timeout = 10;
+       ulong start;
        ushort waittype = 0;
        ushort resptype = 0;
        ushort xfertype = 0;
        ushort resp_indx = 0;
 
-       debug("cmdidx [0x%x] resp_type[0x%x] cmdarg[0x%x]\n",
-             cmd->cmdidx, cmd->resp_type, cmd->cmdarg);
-
-       udelay(10*1000);
+       debug("%s: cmdidx [0x%x] resp_type[0x%x] cmdarg[0x%x]\n",
+             DRIVER_NAME, cmd->cmdidx, cmd->resp_type, cmd->cmdarg);
 
        debug("%s: cmd %d (hw state 0x%04x)\n", DRIVER_NAME,
              cmd->cmdidx, mvebu_mmc_read(SDIO_HW_STATE));
 
-       /* Checking if card is busy */
-       while ((mvebu_mmc_read(SDIO_HW_STATE) & CARD_BUSY)) {
-               if (timeout == 0) {
-                       printf("%s: card busy!\n", DRIVER_NAME);
-                       return -1;
-               }
-               timeout--;
-               udelay(1000);
+       /*
+        * Hardware weirdness.  The FIFO_EMPTY bit of the HW_STATE
+        * register is sometimes not set before a while when some
+        * "unusual" data block sizes are used (such as with the SWITCH
+        * command), even despite the fact that the XFER_DONE interrupt
+        * was raised.  And if another data transfer starts before
+        * this bit comes to good sense (which eventually happens by
+        * itself) then the new transfer simply fails with a timeout.
+        */
+       if (!(mvebu_mmc_read(SDIO_HW_STATE) & CMD_FIFO_EMPTY)) {
+               ushort hw_state, count = 0;
+
+               start = get_timer(0);
+               do {
+                       hw_state = mvebu_mmc_read(SDIO_HW_STATE);
+                       if ((get_timer(0) - start) > TIMEOUT_DELAY) {
+                               printf("%s : FIFO_EMPTY bit missing\n",
+                                      DRIVER_NAME);
+                               break;
+                       }
+                       count++;
+               } while (!(hw_state & CMD_FIFO_EMPTY));
+               debug("%s *** wait for FIFO_EMPTY bit (hw=0x%04x, count=%d, jiffies=%ld)\n",
+                     DRIVER_NAME, hw_state, count, (get_timer(0) - (start)));
        }
 
-       /* Set up for a data transfer if we have one */
-       if (data) {
-               int err = mvebu_mmc_setup_data(data);
-
-               if (err)
-                       return err;
-       }
+       /* Clear status */
+       mvebu_mmc_write(SDIO_NOR_INTR_STATUS, SDIO_POLL_MASK);
+       mvebu_mmc_write(SDIO_ERR_INTR_STATUS, SDIO_POLL_MASK);
 
        resptype = SDIO_CMD_INDEX(cmd->cmdidx);
 
@@ -119,6 +131,14 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
        }
 
        if (data) {
+               int err = mvebu_mmc_setup_data(data);
+
+               if (err) {
+                       debug("%s: command DATA error :%x\n",
+                             DRIVER_NAME, err);
+                       return err;
+               }
+
                resptype |= SDIO_CMD_DATA_PRESENT | SDIO_CMD_CHECK_DATACRC16;
                xfertype |= SDIO_XFER_MODE_HW_WR_DATA_EN;
                if (data->flags & MMC_DATA_READ) {
@@ -138,17 +158,10 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
        /* Setting Xfer mode */
        mvebu_mmc_write(SDIO_XFER_MODE, xfertype);
 
-       mvebu_mmc_write(SDIO_NOR_INTR_STATUS, ~SDIO_NOR_CARD_INT);
-       mvebu_mmc_write(SDIO_ERR_INTR_STATUS, SDIO_POLL_MASK);
-
        /* Sending command */
        mvebu_mmc_write(SDIO_CMD, resptype);
 
-       mvebu_mmc_write(SDIO_NOR_INTR_EN, SDIO_POLL_MASK);
-       mvebu_mmc_write(SDIO_ERR_INTR_EN, SDIO_POLL_MASK);
-
-       /* Waiting for completion */
-       timeout = 1000000;
+       start = get_timer(0);
 
        while (!((mvebu_mmc_read(SDIO_NOR_INTR_STATUS)) & waittype)) {
                if (mvebu_mmc_read(SDIO_NOR_INTR_STATUS) & SDIO_NOR_ERROR) {
@@ -156,21 +169,20 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
                              DRIVER_NAME, cmd->cmdidx,
                              mvebu_mmc_read(SDIO_ERR_INTR_STATUS));
                        if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
-                               (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
+                           (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT)) {
+                               debug("%s: command READ timed out\n",
+                                     DRIVER_NAME);
                                return TIMEOUT;
+                       }
+                       debug("%s: command READ error\n", DRIVER_NAME);
                        return COMM_ERR;
                }
 
-               timeout--;
-               udelay(1);
-               if (timeout <= 0) {
-                       printf("%s: command timed out\n", DRIVER_NAME);
+               if ((get_timer(0) - start) > TIMEOUT_DELAY) {
+                       debug("%s: command timed out\n", DRIVER_NAME);
                        return TIMEOUT;
                }
        }
-       if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
-               (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
-               return TIMEOUT;
 
        /* Handling response */
        if (cmd->resp_type & MMC_RSP_136) {
@@ -204,6 +216,11 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
                cmd->response[1] =      ((response[0] & 0xfc00) >> 10);
                cmd->response[2] =      0;
                cmd->response[3] =      0;
+       } else {
+               cmd->response[0] =      0;
+               cmd->response[1] =      0;
+               cmd->response[2] =      0;
+               cmd->response[3] =      0;
        }
 
        debug("%s: resp[0x%x] ", DRIVER_NAME, cmd->resp_type);
@@ -213,6 +230,10 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
        debug("[0x%x] ", cmd->response[3]);
        debug("\n");
 
+       if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
+               (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
+               return TIMEOUT;
+
        return 0;
 }
 
@@ -251,9 +272,8 @@ static void mvebu_mmc_set_clk(unsigned int clock)
                if (m > MVEBU_MMC_BASE_DIV_MAX)
                        m = MVEBU_MMC_BASE_DIV_MAX;
                mvebu_mmc_write(SDIO_CLK_DIV, m & MVEBU_MMC_BASE_DIV_MAX);
+               debug("%s: clock (%d) div : %d\n", DRIVER_NAME, clock, m);
        }
-
-       udelay(10*1000);
 }
 
 static void mvebu_mmc_set_bus(unsigned int bus)
@@ -293,7 +313,6 @@ static void mvebu_mmc_set_bus(unsigned int bus)
              "high-speed" : "");
 
        mvebu_mmc_write(SDIO_HOST_CTRL, ctrl_reg);
-       udelay(10*1000);
 }
 
 static void mvebu_mmc_set_ios(struct mmc *mmc)
@@ -355,7 +374,7 @@ static void mvebu_window_setup(void)
 
 static int mvebu_mmc_initialize(struct mmc *mmc)
 {
-       debug("%s: mvebu_mmc_initialize", DRIVER_NAME);
+       debug("%s: mvebu_mmc_initialize\n", DRIVER_NAME);
 
        /*
         * Setting host parameters
@@ -384,8 +403,6 @@ static int mvebu_mmc_initialize(struct mmc *mmc)
        /* SW reset */
        mvebu_mmc_write(SDIO_SW_RESET, SDIO_SW_RESET_NOW);
 
-       udelay(10*1000);
-
        return 0;
 }
 
index ef2cbf9e2fa574cd2846c280149cca2cf1dbc28b..c880cedb0addce6761aa67797bf19ed785a93031 100644 (file)
@@ -135,12 +135,7 @@ static unsigned char mmc_board_init(struct mmc *mmc)
        pbias_lite = readl(&t2_base->pbias_lite);
        pbias_lite &= ~(PBIASLITEPWRDNZ1 | PBIASLITEPWRDNZ0);
        writel(pbias_lite, &t2_base->pbias_lite);
-#endif
-#if defined(CONFIG_TWL4030_POWER)
-       twl4030_power_mmc_init();
-       mdelay(100);    /* ramp-up delay from Linux code */
-#endif
-#if defined(CONFIG_OMAP34XX)
+
        writel(pbias_lite | PBIASLITEPWRDNZ1 |
                PBIASSPEEDCTRL0 | PBIASLITEPWRDNZ0,
                &t2_base->pbias_lite);
@@ -611,7 +606,8 @@ static int omap_hsmmc_getcd(struct mmc *mmc)
        if (cd_gpio < 0)
                return 1;
 
-       return gpio_get_value(cd_gpio);
+       /* NOTE: assumes card detect signal is active-low */
+       return !gpio_get_value(cd_gpio);
 }
 
 static int omap_hsmmc_getwp(struct mmc *mmc)
@@ -624,6 +620,7 @@ static int omap_hsmmc_getwp(struct mmc *mmc)
        if (wp_gpio < 0)
                return 0;
 
+       /* NOTE: assumes write protect signal is active-high */
        return gpio_get_value(wp_gpio);
 }
 #endif
@@ -661,7 +658,8 @@ int omap_mmc_init(int dev_index, uint host_caps_mask, uint f_max, int cd_gpio,
        case 1:
                priv_data->base_addr = (struct hsmmc *)OMAP_HSMMC2_BASE;
 #if (defined(CONFIG_OMAP44XX) || defined(CONFIG_OMAP54XX) || \
-     defined(CONFIG_DRA7XX)) && defined(CONFIG_HSMMC2_8BIT)
+     defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)) && \
+               defined(CONFIG_HSMMC2_8BIT)
                /* Enable 8-bit interface for eMMC on OMAP4/5 or DRA7XX */
                host_caps_val |= MMC_MODE_8BIT;
 #endif
@@ -670,7 +668,7 @@ int omap_mmc_init(int dev_index, uint host_caps_mask, uint f_max, int cd_gpio,
 #ifdef OMAP_HSMMC3_BASE
        case 2:
                priv_data->base_addr = (struct hsmmc *)OMAP_HSMMC3_BASE;
-#if defined(CONFIG_DRA7XX) && defined(CONFIG_HSMMC3_8BIT)
+#if (defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)) && defined(CONFIG_HSMMC3_8BIT)
                /* Enable 8-bit interface for eMMC on DRA7XX */
                host_caps_val |= MMC_MODE_8BIT;
 #endif
index 1f297571e563c7c69bf653f574c890ea916ac69b..25ab0b1fc8e19b5d8213b835e3cb438f6042d2dd 100644 (file)
@@ -197,7 +197,7 @@ static int pxa_mmc_do_read_xfer(struct mmc *mmc, struct mmc_data *data)
        while (len) {
                /* The controller has data ready */
                if (readl(&regs->i_reg) & MMC_I_REG_RXFIFO_RD_REQ) {
-                       size = min(len, PXAMMC_FIFO_SIZE);
+                       size = min(len, (uint32_t)PXAMMC_FIFO_SIZE);
                        len -= size;
                        size /= 4;
 
@@ -233,14 +233,14 @@ static int pxa_mmc_do_write_xfer(struct mmc *mmc, struct mmc_data *data)
        while (len) {
                /* The controller is ready to receive data */
                if (readl(&regs->i_reg) & MMC_I_REG_TXFIFO_WR_REQ) {
-                       size = min(len, PXAMMC_FIFO_SIZE);
+                       size = min(len, (uint32_t)PXAMMC_FIFO_SIZE);
                        len -= size;
                        size /= 4;
 
                        while (size--)
                                writel(*buf++, &regs->txfifo);
 
-                       if (min(len, PXAMMC_FIFO_SIZE) < 32)
+                       if (min(len, (uint32_t)PXAMMC_FIFO_SIZE) < 32)
                                writel(MMC_PRTBUF_BUF_PART_FULL, &regs->prtbuf);
                }
 
index ed83a14c2defe1a28d291539aa695920149393ad..76ba93b81d4f42e4307aaeca3213e956eef58462 100644 (file)
@@ -103,20 +103,18 @@ static int mmcif_wait_interrupt_flag(struct sh_mmcif_host *host)
 
 static void sh_mmcif_clock_control(struct sh_mmcif_host *host, unsigned int clk)
 {
-       int i;
-
        sh_mmcif_bitclr(CLK_ENABLE, &host->regs->ce_clk_ctrl);
        sh_mmcif_bitclr(CLK_CLEAR, &host->regs->ce_clk_ctrl);
 
        if (!clk)
                return;
-       if (clk == CLKDEV_EMMC_DATA) {
+
+       if (clk == CLKDEV_EMMC_DATA)
                sh_mmcif_bitset(CLK_PCLK, &host->regs->ce_clk_ctrl);
-       } else {
-               for (i = 1; (unsigned int)host->clk / (1 << i) >= clk; i++)
-                       ;
-               sh_mmcif_bitset((i - 1) << 16, &host->regs->ce_clk_ctrl);
-       }
+       else
+               sh_mmcif_bitset((fls(DIV_ROUND_UP(host->clk,
+                                                 clk) - 1) - 1) << 16,
+                               &host->regs->ce_clk_ctrl);
        sh_mmcif_bitset(CLK_ENABLE, &host->regs->ce_clk_ctrl);
 }
 
@@ -581,8 +579,6 @@ static struct mmc_config sh_mmcif_cfg = {
        .host_caps      = MMC_MODE_HS | MMC_MODE_HS_52MHz | MMC_MODE_4BIT |
                          MMC_MODE_8BIT | MMC_MODE_HC,
        .voltages       = MMC_VDD_32_33 | MMC_VDD_33_34,
-       .f_min          = CLKDEV_MMC_INIT,
-       .f_max          = CLKDEV_EMMC_DATA,
        .b_max          = CONFIG_SYS_MMC_MAX_BLK_COUNT,
 };
 
@@ -599,6 +595,9 @@ int mmcif_mmc_init(void)
        host->regs = (struct sh_mmcif_regs *)CONFIG_SH_MMCIF_ADDR;
        host->clk = CONFIG_SH_MMCIF_CLK;
 
+       sh_mmcif_cfg.f_min = MMC_CLK_DIV_MIN(host->clk);
+       sh_mmcif_cfg.f_max = MMC_CLK_DIV_MAX(host->clk);
+
        mmc = mmc_create(&sh_mmcif_cfg, host);
        if (mmc == NULL) {
                free(host);
index bd6fbf7c62e60788bf98da96271efbc4fcf84633..4b6752f7f98a581dd56cfdda46a74c97eee25642 100644 (file)
@@ -199,7 +199,13 @@ struct sh_mmcif_regs {
 #define SOFT_RST_OFF           (0 << 31)
 
 #define CLKDEV_EMMC_DATA       52000000        /* 52MHz */
-#define        CLKDEV_MMC_INIT         400000          /* 100 - 400 KHz */
+#ifdef CONFIG_RMOBILE
+#define MMC_CLK_DIV_MIN(clk)   (clk / (1 << 9))
+#define MMC_CLK_DIV_MAX(clk)   (clk / (1 << 1))
+#else
+#define MMC_CLK_DIV_MIN(clk)   (clk / (1 << 8))
+#define MMC_CLK_DIV_MAX(clk)   CLKDEV_EMMC_DATA
+#endif
 
 #define MMC_BUS_WIDTH_1                0
 #define MMC_BUS_WIDTH_4                2
index 16592e3d7cf2454e00013181576dcb0ea437822e..623498187ef0255e6fd5a647819a7bdf4477f8e3 100644 (file)
@@ -22,7 +22,6 @@ struct sunxi_mmc_host {
        unsigned mmc_no;
        uint32_t *mclkreg;
        unsigned fatal_err;
-       unsigned mod_clk;
        struct sunxi_mmc *reg;
        struct mmc_config cfg;
 };
@@ -30,10 +29,22 @@ struct sunxi_mmc_host {
 /* support 4 mmc hosts */
 struct sunxi_mmc_host mmc_host[4];
 
+static int sunxi_mmc_getcd_gpio(int sdc_no)
+{
+       switch (sdc_no) {
+       case 0: return sunxi_name_to_gpio(CONFIG_MMC0_CD_PIN);
+       case 1: return sunxi_name_to_gpio(CONFIG_MMC1_CD_PIN);
+       case 2: return sunxi_name_to_gpio(CONFIG_MMC2_CD_PIN);
+       case 3: return sunxi_name_to_gpio(CONFIG_MMC3_CD_PIN);
+       }
+       return -1;
+}
+
 static int mmc_resource_init(int sdc_no)
 {
        struct sunxi_mmc_host *mmchost = &mmc_host[sdc_no];
        struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       int cd_pin, ret = 0;
 
        debug("init mmc %d resource\n", sdc_no);
 
@@ -60,13 +71,73 @@ static int mmc_resource_init(int sdc_no)
        }
        mmchost->mmc_no = sdc_no;
 
+       cd_pin = sunxi_mmc_getcd_gpio(sdc_no);
+       if (cd_pin != -1) {
+               ret = gpio_request(cd_pin, "mmc_cd");
+               if (!ret)
+                       ret = gpio_direction_input(cd_pin);
+       }
+
+       return ret;
+}
+
+static int mmc_set_mod_clk(struct sunxi_mmc_host *mmchost, unsigned int hz)
+{
+       unsigned int pll, pll_hz, div, n, oclk_dly, sclk_dly;
+
+       if (hz <= 24000000) {
+               pll = CCM_MMC_CTRL_OSCM24;
+               pll_hz = 24000000;
+       } else {
+               pll = CCM_MMC_CTRL_PLL6;
+               pll_hz = clock_get_pll6();
+       }
+
+       div = pll_hz / hz;
+       if (pll_hz % hz)
+               div++;
+
+       n = 0;
+       while (div > 16) {
+               n++;
+               div = (div + 1) / 2;
+       }
+
+       if (n > 3) {
+               printf("mmc %u error cannot set clock to %u\n",
+                      mmchost->mmc_no, hz);
+               return -1;
+       }
+
+       /* determine delays */
+       if (hz <= 400000) {
+               oclk_dly = 0;
+               sclk_dly = 7;
+       } else if (hz <= 25000000) {
+               oclk_dly = 0;
+               sclk_dly = 5;
+       } else if (hz <= 50000000) {
+               oclk_dly = 3;
+               sclk_dly = 5;
+       } else {
+               /* hz > 50000000 */
+               oclk_dly = 2;
+               sclk_dly = 4;
+       }
+
+       writel(CCM_MMC_CTRL_ENABLE | pll | CCM_MMC_CTRL_SCLK_DLY(sclk_dly) |
+              CCM_MMC_CTRL_N(n) | CCM_MMC_CTRL_OCLK_DLY(oclk_dly) |
+              CCM_MMC_CTRL_M(div), mmchost->mclkreg);
+
+       debug("mmc %u set mod-clk req %u parent %u n %u m %u rate %u\n",
+             mmchost->mmc_no, hz, pll_hz, 1u << n, div,
+             pll_hz / (1u << n) / div);
+
        return 0;
 }
 
 static int mmc_clk_io_on(int sdc_no)
 {
-       unsigned int pll_clk;
-       unsigned int divider;
        struct sunxi_mmc_host *mmchost = &mmc_host[sdc_no];
        struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
 
@@ -75,20 +146,12 @@ static int mmc_clk_io_on(int sdc_no)
        /* config ahb clock */
        setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_MMC(sdc_no));
 
-#if defined(CONFIG_SUN6I) || defined(CONFIG_SUN8I)
+#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN8I)
        /* unassert reset */
        setbits_le32(&ccm->ahb_reset0_cfg, 1 << AHB_RESET_OFFSET_MMC(sdc_no));
 #endif
 
-       /* config mod clock */
-       pll_clk = clock_get_pll6();
-       /* should be close to 100 MHz but no more, so round up */
-       divider = ((pll_clk + 99999999) / 100000000) - 1;
-       writel(CCM_MMC_CTRL_ENABLE | CCM_MMC_CTRL_PLL6 | divider,
-              mmchost->mclkreg);
-       mmchost->mod_clk = pll_clk / (divider + 1);
-
-       return 0;
+       return mmc_set_mod_clk(mmchost, 24000000);
 }
 
 static int mmc_update_clk(struct mmc *mmc)
@@ -113,7 +176,7 @@ static int mmc_update_clk(struct mmc *mmc)
        return 0;
 }
 
-static int mmc_config_clock(struct mmc *mmc, unsigned div)
+static int mmc_config_clock(struct mmc *mmc)
 {
        struct sunxi_mmc_host *mmchost = mmc->priv;
        unsigned rval = readl(&mmchost->reg->clkcr);
@@ -124,16 +187,17 @@ static int mmc_config_clock(struct mmc *mmc, unsigned div)
        if (mmc_update_clk(mmc))
                return -1;
 
-       /* Change Divider Factor */
+       /* Set mod_clk to new rate */
+       if (mmc_set_mod_clk(mmchost, mmc->clock))
+               return -1;
+
+       /* Clear internal divider */
        rval &= ~SUNXI_MMC_CLK_DIVIDER_MASK;
-       rval |= div;
        writel(rval, &mmchost->reg->clkcr);
-       if (mmc_update_clk(mmc))
-               return -1;
+
        /* Re-enable Clock */
        rval |= SUNXI_MMC_CLK_ENABLE;
        writel(rval, &mmchost->reg->clkcr);
-
        if (mmc_update_clk(mmc))
                return -1;
 
@@ -143,18 +207,14 @@ static int mmc_config_clock(struct mmc *mmc, unsigned div)
 static void mmc_set_ios(struct mmc *mmc)
 {
        struct sunxi_mmc_host *mmchost = mmc->priv;
-       unsigned int clkdiv = 0;
 
-       debug("set ios: bus_width: %x, clock: %d, mod_clk: %d\n",
-             mmc->bus_width, mmc->clock, mmchost->mod_clk);
+       debug("set ios: bus_width: %x, clock: %d\n",
+             mmc->bus_width, mmc->clock);
 
        /* Change clock first */
-       clkdiv = (mmchost->mod_clk + (mmc->clock >> 1)) / mmc->clock / 2;
-       if (mmc->clock) {
-               if (mmc_config_clock(mmc, clkdiv)) {
-                       mmchost->fatal_err = 1;
-                       return;
-               }
+       if (mmc->clock && mmc_config_clock(mmc) != 0) {
+               mmchost->fatal_err = 1;
+               return;
        }
 
        /* Change bus width */
@@ -351,19 +411,13 @@ out:
 static int sunxi_mmc_getcd(struct mmc *mmc)
 {
        struct sunxi_mmc_host *mmchost = mmc->priv;
-       int cd_pin = -1;
-
-       switch (mmchost->mmc_no) {
-       case 0: cd_pin = sunxi_name_to_gpio(CONFIG_MMC0_CD_PIN); break;
-       case 1: cd_pin = sunxi_name_to_gpio(CONFIG_MMC1_CD_PIN); break;
-       case 2: cd_pin = sunxi_name_to_gpio(CONFIG_MMC2_CD_PIN); break;
-       case 3: cd_pin = sunxi_name_to_gpio(CONFIG_MMC3_CD_PIN); break;
-       }
+       int cd_pin;
 
+       cd_pin = sunxi_mmc_getcd_gpio(mmchost->mmc_no);
        if (cd_pin == -1)
                return 1;
 
-       return !gpio_direction_input(cd_pin);
+       return !gpio_get_value(cd_pin);
 }
 
 static const struct mmc_ops sunxi_mmc_ops = {
@@ -385,7 +439,7 @@ struct mmc *sunxi_mmc_init(int sdc_no)
        cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
        cfg->host_caps = MMC_MODE_4BIT;
        cfg->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS;
-#if defined(CONFIG_SUN6I) || defined(CONFIG_SUN7I) || defined(CONFIG_SUN8I)
+#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || defined(CONFIG_MACH_SUN8I)
        cfg->host_caps |= MMC_MODE_HC;
 #endif
        cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
@@ -393,7 +447,9 @@ struct mmc *sunxi_mmc_init(int sdc_no)
        cfg->f_min = 400000;
        cfg->f_max = 52000000;
 
-       mmc_resource_init(sdc_no);
+       if (mmc_resource_init(sdc_no) != 0)
+               return NULL;
+
        mmc_clk_io_on(sdc_no);
 
        return mmc_create(cfg, &mmc_host[sdc_no]);
index ac805ff1e9c7b91f87097d97c8f4e578a06fec3d..709a48642d6056ef66feafa6bb6af84e2df49387 100644 (file)
@@ -226,6 +226,7 @@ int cfi_mtd_init(void)
                mtd->flags              = MTD_CAP_NORFLASH;
                mtd->size               = fi->size;
                mtd->writesize          = 1;
+               mtd->writebufsize       = mtd->writesize;
 
                mtd->_erase             = cfi_mtd_erase;
                mtd->_read              = cfi_mtd_read;
index 593b9b8433a43fd03b197efce4abdf5bb0b42326..ce9af8f2541210e5964073652044cd5604580c66 100644 (file)
@@ -332,6 +332,57 @@ static const struct amd_flash_info jedec_table[] = {
                        ERASEINFO(0x10000, 15),
                }
        },
+       {
+               .mfr_id         = (u16)AMD_MANUFACT,
+               .dev_id         = AM29LV800BT,
+               .name           = "AMD AM29LV800BT",
+               .uaddr          = {
+                       [1] = MTD_UADDR_0x0555_0x02AA /* x16 */
+               },
+               .DevSize        = SIZE_1MiB,
+               .CmdSet         = CFI_CMDSET_AMD_LEGACY,
+               .NumEraseRegions= 4,
+               .regions        = {
+                       ERASEINFO(0x10000, 15),
+                       ERASEINFO(0x08000, 1),
+                       ERASEINFO(0x02000, 2),
+                       ERASEINFO(0x04000, 1),
+               }
+       },
+       {
+               .mfr_id         = (u16)MX_MANUFACT,
+               .dev_id         = AM29LV800BT,
+               .name           = "MXIC MX29LV800BT",
+               .uaddr          = {
+                       [1] = MTD_UADDR_0x0555_0x02AA /* x16 */
+               },
+               .DevSize        = SIZE_1MiB,
+               .CmdSet         = CFI_CMDSET_AMD_LEGACY,
+               .NumEraseRegions= 4,
+               .regions        = {
+                       ERASEINFO(0x10000, 15),
+                       ERASEINFO(0x08000, 1),
+                       ERASEINFO(0x02000, 2),
+                       ERASEINFO(0x04000, 1),
+               }
+       },
+       {
+               .mfr_id         = (u16)EON_ALT_MANU,
+               .dev_id         = AM29LV800BT,
+               .name           = "EON EN29LV800BT",
+               .uaddr          = {
+                       [1] = MTD_UADDR_0x0555_0x02AA /* x16 */
+               },
+               .DevSize        = SIZE_1MiB,
+               .CmdSet         = CFI_CMDSET_AMD_LEGACY,
+               .NumEraseRegions= 4,
+               .regions        = {
+                       ERASEINFO(0x10000, 15),
+                       ERASEINFO(0x08000, 1),
+                       ERASEINFO(0x02000, 2),
+                       ERASEINFO(0x04000, 1),
+               }
+       },
        {
                .mfr_id         = (u16)STM_MANUFACT,
                .dev_id         = STM29F400BB,
index 75c2c065c891e42028d0ce6fea80785f6e28b6d4..c24221499bfb6cd47f272cd5e71839d7296cf4ea 100644 (file)
@@ -1,9 +1,16 @@
 menu "NAND Device Support"
 
+config SYS_NAND_SELF_INIT
+       bool
+       help
+         This option, if enabled, provides more flexible and linux-like
+         NAND initialization process.
+
 if !SPL_BUILD
 
 config NAND_DENALI
        bool "Support Denali NAND controller"
+       select SYS_NAND_SELF_INIT
        help
          Enable support for the Denali NAND controller.
 
index 9114a86da2bb0ee379739693e19308937516b44e..620b6e8ff9a4cfac6745eb6477718ce14a93d05f 100644 (file)
@@ -18,6 +18,7 @@
 #include <malloc.h>
 #include <nand.h>
 #include <watchdog.h>
+#include <linux/mtd/nand_ecc.h>
 
 #ifdef CONFIG_ATMEL_NAND_HWECC
 
@@ -762,6 +763,62 @@ static int pmecc_choose_ecc(struct atmel_nand_host *host,
 }
 #endif
 
+#if defined(NO_GALOIS_TABLE_IN_ROM)
+static uint16_t *pmecc_galois_table;
+static inline int deg(unsigned int poly)
+{
+       /* polynomial degree is the most-significant bit index */
+       return fls(poly) - 1;
+}
+
+static int build_gf_tables(int mm, unsigned int poly,
+                          int16_t *index_of, int16_t *alpha_to)
+{
+       unsigned int i, x = 1;
+       const unsigned int k = 1 << deg(poly);
+       unsigned int nn = (1 << mm) - 1;
+
+       /* primitive polynomial must be of degree m */
+       if (k != (1u << mm))
+               return -EINVAL;
+
+       for (i = 0; i < nn; i++) {
+               alpha_to[i] = x;
+               index_of[x] = i;
+               if (i && (x == 1))
+                       /* polynomial is not primitive (a^i=1 with 0<i<2^m-1) */
+                       return -EINVAL;
+               x <<= 1;
+               if (x & k)
+                       x ^= poly;
+       }
+
+       alpha_to[nn] = 1;
+       index_of[0] = 0;
+
+       return 0;
+}
+
+static uint16_t *create_lookup_table(int sector_size)
+{
+       int degree = (sector_size == 512) ?
+                       PMECC_GF_DIMENSION_13 :
+                       PMECC_GF_DIMENSION_14;
+       unsigned int poly = (sector_size == 512) ?
+                       PMECC_GF_13_PRIMITIVE_POLY :
+                       PMECC_GF_14_PRIMITIVE_POLY;
+       int table_size = (sector_size == 512) ?
+                       PMECC_INDEX_TABLE_SIZE_512 :
+                       PMECC_INDEX_TABLE_SIZE_1024;
+
+       int16_t *addr = kzalloc(2 * table_size * sizeof(uint16_t), GFP_KERNEL);
+       if (addr && build_gf_tables(degree, poly, addr, addr + table_size))
+               return NULL;
+
+       return (uint16_t *)addr;
+}
+#endif
+
 static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
                struct mtd_info *mtd)
 {
@@ -809,11 +866,18 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
        sector_size = host->pmecc_sector_size;
 
        /* TODO: need check whether cap & sector_size is validate */
-
+#if defined(NO_GALOIS_TABLE_IN_ROM)
+       /*
+        * As pmecc_rom_base is the begin of the gallois field table, So the
+        * index offset just set as 0.
+        */
+       host->pmecc_index_table_offset = 0;
+#else
        if (host->pmecc_sector_size == 512)
                host->pmecc_index_table_offset = ATMEL_PMECC_INDEX_OFFSET_512;
        else
                host->pmecc_index_table_offset = ATMEL_PMECC_INDEX_OFFSET_1024;
+#endif
 
        MTDDEBUG(MTD_DEBUG_LEVEL1,
                "Initialize PMECC params, cap: %d, sector: %d\n",
@@ -822,7 +886,17 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
        host->pmecc = (struct pmecc_regs __iomem *) ATMEL_BASE_PMECC;
        host->pmerrloc = (struct pmecc_errloc_regs __iomem *)
                        ATMEL_BASE_PMERRLOC;
+#if defined(NO_GALOIS_TABLE_IN_ROM)
+       pmecc_galois_table = create_lookup_table(host->pmecc_sector_size);
+       if (!pmecc_galois_table) {
+               dev_err(host->dev, "out of memory\n");
+               return -ENOMEM;
+       }
+
+       host->pmecc_rom_base = (void __iomem *)pmecc_galois_table;
+#else
        host->pmecc_rom_base = (void __iomem *) ATMEL_BASE_ROM;
+#endif
 
        /* ECC is calculated for the whole page (1 step) */
        nand->ecc.size = mtd->writesize;
@@ -1187,7 +1261,7 @@ static int nand_command(int block, int page, uint32_t offs, u8 cmd)
        void (*hwctrl)(struct mtd_info *mtd, int cmd,
                        unsigned int ctrl) = this->cmd_ctrl;
 
-       while (this->dev_ready(&mtd))
+       while (!this->dev_ready(&mtd))
                ;
 
        if (cmd == NAND_CMD_READOOB) {
@@ -1212,7 +1286,7 @@ static int nand_command(int block, int page, uint32_t offs, u8 cmd)
        hwctrl(&mtd, NAND_CMD_READSTART, NAND_CTRL_CLE | NAND_CTRL_CHANGE);
        hwctrl(&mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
 
-       while (this->dev_ready(&mtd))
+       while (!this->dev_ready(&mtd))
                ;
 
        return 0;
@@ -1273,6 +1347,39 @@ static int nand_read_page(int block, int page, void *dst)
 
        return 0;
 }
+
+int spl_nand_erase_one(int block, int page)
+{
+       struct nand_chip *this = mtd.priv;
+       void (*hwctrl)(struct mtd_info *mtd, int cmd,
+                       unsigned int ctrl) = this->cmd_ctrl;
+       int page_addr;
+
+       if (nand_chip.select_chip)
+               nand_chip.select_chip(&mtd, 0);
+
+       page_addr = page + block * CONFIG_SYS_NAND_PAGE_COUNT;
+       hwctrl(&mtd, NAND_CMD_ERASE1, NAND_CTRL_CLE | NAND_CTRL_CHANGE);
+       /* Row address */
+       hwctrl(&mtd, (page_addr & 0xff), NAND_CTRL_ALE | NAND_CTRL_CHANGE);
+       hwctrl(&mtd, ((page_addr >> 8) & 0xff),
+              NAND_CTRL_ALE | NAND_CTRL_CHANGE);
+#ifdef CONFIG_SYS_NAND_5_ADDR_CYCLE
+       /* One more address cycle for devices > 128MiB */
+       hwctrl(&mtd, (page_addr >> 16) & 0x0f,
+              NAND_CTRL_ALE | NAND_CTRL_CHANGE);
+#endif
+
+       hwctrl(&mtd, NAND_CMD_ERASE2, NAND_CTRL_CLE | NAND_CTRL_CHANGE);
+       udelay(2000);
+
+       while (!this->dev_ready(&mtd))
+               ;
+
+       nand_deselect();
+
+       return 0;
+}
 #else
 static int nand_read_page(int block, int page, void *dst)
 {
@@ -1319,7 +1426,7 @@ int at91_nand_wait_ready(struct mtd_info *mtd)
 
        udelay(this->chip_delay);
 
-       return 0;
+       return 1;
 }
 
 int board_nand_init(struct nand_chip *nand)
index 92d4ec59fd29f38bf02491f0bdb137dcbc7961de..eac860d13ca73638131f175fd28d6a38e47d738b 100644 (file)
@@ -141,6 +141,10 @@ struct pmecc_errloc_regs {
 #define PMECC_GF_DIMENSION_13                  13
 #define PMECC_GF_DIMENSION_14                  14
 
+/* Primitive Polynomial used by PMECC */
+#define PMECC_GF_13_PRIMITIVE_POLY             0x201b
+#define PMECC_GF_14_PRIMITIVE_POLY             0x4443
+
 #define PMECC_INDEX_TABLE_SIZE_512             0x2000
 #define PMECC_INDEX_TABLE_SIZE_1024            0x4000
 
index 308b7845f122e49b47ba46bc178824a746a9abfd..9e0429aa198949903a6ddc0dbb32fa4e2125a247 100644 (file)
@@ -44,7 +44,7 @@ static int onfi_timing_mode = NAND_DEFAULT_TIMINGS;
  * this macro allows us to convert from an MTD structure to our own
  * device context (denali) structure.
  */
-#define mtd_to_denali(m) (((struct nand_chip *)mtd->priv)->priv)
+#define mtd_to_denali(m) container_of(m->priv, struct denali_nand_info, nand)
 
 /* These constants are defined by the driver to enable common driver
  * configuration options. */
@@ -1144,70 +1144,128 @@ static void denali_hw_init(struct denali_nand_info *denali)
 
 static struct nand_ecclayout nand_oob;
 
-static int denali_nand_init(struct nand_chip *nand)
+static int denali_init(struct denali_nand_info *denali)
 {
-       struct denali_nand_info *denali;
+       int ret;
 
-       denali = malloc(sizeof(*denali));
-       if (!denali)
-               return -ENOMEM;
+       denali_hw_init(denali);
 
-       nand->priv = denali;
+       denali->mtd->name = "denali-nand";
+       denali->mtd->owner = THIS_MODULE;
+       denali->mtd->priv = &denali->nand;
 
-       denali->flash_reg = (void  __iomem *)CONFIG_SYS_NAND_REGS_BASE;
-       denali->flash_mem = (void  __iomem *)CONFIG_SYS_NAND_DATA_BASE;
+       /* register the driver with the NAND core subsystem */
+       denali->nand.select_chip = denali_select_chip;
+       denali->nand.cmdfunc = denali_cmdfunc;
+       denali->nand.read_byte = denali_read_byte;
+       denali->nand.read_buf = denali_read_buf;
+       denali->nand.waitfunc = denali_waitfunc;
+
+       /*
+        * scan for NAND devices attached to the controller
+        * this is the first stage in a two step process to register
+        * with the nand subsystem
+        */
+       if (nand_scan_ident(denali->mtd, denali->max_banks, NULL)) {
+               ret = -ENXIO;
+               goto fail;
+       }
 
 #ifdef CONFIG_SYS_NAND_USE_FLASH_BBT
        /* check whether flash got BBT table (located at end of flash). As we
         * use NAND_BBT_NO_OOB, the BBT page will start with
         * bbt_pattern. We will have mirror pattern too */
-       nand->bbt_options |= NAND_BBT_USE_FLASH;
+       denali->nand.bbt_options |= NAND_BBT_USE_FLASH;
        /*
         * We are using main + spare with ECC support. As BBT need ECC support,
         * we need to ensure BBT code don't write to OOB for the BBT pattern.
         * All BBT info will be stored into data area with ECC support.
         */
-       nand->bbt_options |= NAND_BBT_NO_OOB;
+       denali->nand.bbt_options |= NAND_BBT_NO_OOB;
 #endif
 
-       nand->ecc.mode = NAND_ECC_HW;
-       nand->ecc.size = CONFIG_NAND_DENALI_ECC_SIZE;
-       nand->ecc.read_oob = denali_read_oob;
-       nand->ecc.write_oob = denali_write_oob;
-       nand->ecc.read_page = denali_read_page;
-       nand->ecc.read_page_raw = denali_read_page_raw;
-       nand->ecc.write_page = denali_write_page;
-       nand->ecc.write_page_raw = denali_write_page_raw;
+       denali->nand.ecc.mode = NAND_ECC_HW;
+       denali->nand.ecc.size = CONFIG_NAND_DENALI_ECC_SIZE;
+
        /*
         * Tell driver the ecc strength. This register may be already set
         * correctly. So we read this value out.
         */
-       nand->ecc.strength = readl(denali->flash_reg + ECC_CORRECTION);
-       switch (nand->ecc.size) {
+       denali->nand.ecc.strength = readl(denali->flash_reg + ECC_CORRECTION);
+       switch (denali->nand.ecc.size) {
        case 512:
-               nand->ecc.bytes = (nand->ecc.strength * 13 + 15) / 16 * 2;
+               denali->nand.ecc.bytes =
+                       (denali->nand.ecc.strength * 13 + 15) / 16 * 2;
                break;
        case 1024:
-               nand->ecc.bytes = (nand->ecc.strength * 14 + 15) / 16 * 2;
+               denali->nand.ecc.bytes =
+                       (denali->nand.ecc.strength * 14 + 15) / 16 * 2;
                break;
        default:
                pr_err("Unsupported ECC size\n");
-               return -EINVAL;
+               ret = -EINVAL;
+               goto fail;
        }
-       nand_oob.eccbytes = nand->ecc.bytes;
-       nand->ecc.layout = &nand_oob;
-
-       /* Set address of hardware control function */
-       nand->cmdfunc = denali_cmdfunc;
-       nand->read_byte = denali_read_byte;
-       nand->read_buf = denali_read_buf;
-       nand->select_chip = denali_select_chip;
-       nand->waitfunc = denali_waitfunc;
-       denali_hw_init(denali);
-       return 0;
+       nand_oob.eccbytes = denali->nand.ecc.bytes;
+       denali->nand.ecc.layout = &nand_oob;
+
+       writel(denali->mtd->erasesize / denali->mtd->writesize,
+              denali->flash_reg + PAGES_PER_BLOCK);
+       writel(denali->nand.options & NAND_BUSWIDTH_16 ? 1 : 0,
+              denali->flash_reg + DEVICE_WIDTH);
+       writel(denali->mtd->writesize,
+              denali->flash_reg + DEVICE_MAIN_AREA_SIZE);
+       writel(denali->mtd->oobsize,
+              denali->flash_reg + DEVICE_SPARE_AREA_SIZE);
+       if (readl(denali->flash_reg + DEVICES_CONNECTED) == 0)
+               writel(1, denali->flash_reg + DEVICES_CONNECTED);
+
+       /* override the default operations */
+       denali->nand.ecc.read_page = denali_read_page;
+       denali->nand.ecc.read_page_raw = denali_read_page_raw;
+       denali->nand.ecc.write_page = denali_write_page;
+       denali->nand.ecc.write_page_raw = denali_write_page_raw;
+       denali->nand.ecc.read_oob = denali_read_oob;
+       denali->nand.ecc.write_oob = denali_write_oob;
+
+       if (nand_scan_tail(denali->mtd)) {
+               ret = -ENXIO;
+               goto fail;
+       }
+
+       ret = nand_register(0);
+
+fail:
+       return ret;
+}
+
+static int __board_nand_init(void)
+{
+       struct denali_nand_info *denali;
+
+       denali = kzalloc(sizeof(*denali), GFP_KERNEL);
+       if (!denali)
+               return -ENOMEM;
+
+       /*
+        * If CONFIG_SYS_NAND_SELF_INIT is defined, each driver is responsible
+        * for instantiating struct nand_chip, while drivers/mtd/nand/nand.c
+        * still provides a "struct mtd_info nand_info" instance.
+        */
+       denali->mtd = &nand_info[0];
+
+       /*
+        * In the future, these base addresses should be taken from
+        * Device Tree or platform data.
+        */
+       denali->flash_reg = (void  __iomem *)CONFIG_SYS_NAND_REGS_BASE;
+       denali->flash_mem = (void  __iomem *)CONFIG_SYS_NAND_DATA_BASE;
+
+       return denali_init(denali);
 }
 
-int board_nand_init(struct nand_chip *chip)
+void board_nand_init(void)
 {
-       return denali_nand_init(chip);
+       if (__board_nand_init() < 0)
+               pr_warn("Failed to initialize Denali NAND controller.\n");
 }
index 3277da71e1bb0645fde46c9488a07ec9b8bdaec2..a258df00fda2d0f4a5126adbfbcadc9987a4048a 100644 (file)
@@ -434,9 +434,8 @@ struct nand_buf {
 #define DT             3
 
 struct denali_nand_info {
-       struct mtd_info mtd;
-       struct nand_chip *nand;
-
+       struct mtd_info *mtd;
+       struct nand_chip nand;
        int flash_bank; /* currently selected chip */
        int status;
        int platform;
index 65fdde8a65290eeb062f479a10ae26449d55703a..e98f537c2c36fa1d8035b4cfbc91ed2c6c0a98ee 100644 (file)
@@ -203,7 +203,7 @@ int nand_spl_load_image(uint32_t offs, unsigned int size, void *dst)
                        if (ret < 0)
                                return ret;
 
-                       readlen = min(page_size - column, size);
+                       readlen = min(page_size - column, (int)size);
                        memcpy(dst, page_buffer, readlen);
 
                        column = 0;
index 81b5070b54dcaac7913d5005190cec9f52a67775..b283eaea345be2826d802aa9a164ee3b866fa90d 100644 (file)
@@ -292,7 +292,7 @@ static int fsl_ifc_run_command(struct mtd_info *mtd)
        struct fsl_ifc *ifc = ctrl->regs;
        u32 timeo = (CONFIG_SYS_HZ * 10) / 1000;
        u32 time_start;
-       u32 eccstat[4];
+       u32 eccstat[4] = {0};
        int i;
 
        /* set the chip select for NAND Transaction */
index e336cb1c94b2c9a7d37a2ba168c45d5790f57b0b..fb827c5e74e096a37f71dcbdade8a5a350be6aaf 100644 (file)
@@ -254,3 +254,13 @@ void nand_boot(void)
        uboot = (void *)CONFIG_SYS_NAND_U_BOOT_START;
        uboot();
 }
+
+#ifndef CONFIG_SPL_NAND_INIT
+void nand_init(void)
+{
+}
+
+void nand_deselect(void)
+{
+}
+#endif
index 036c113ad3e93ad6ffaa8a637d6e042fe2758a94..7a064ab1bf945a2e5724ce9a9bf4e6ad403e1c81 100644 (file)
@@ -146,8 +146,13 @@ static uint32_t mxs_nand_aux_status_offset(void)
 static inline uint32_t mxs_nand_get_ecc_strength(uint32_t page_data_size,
                                                uint32_t page_oob_size)
 {
-       if (page_data_size == 2048)
-               return 8;
+       if (page_data_size == 2048) {
+               if (page_oob_size == 64)
+                       return 8;
+
+               if (page_oob_size == 112)
+                       return 14;
+       }
 
        if (page_data_size == 4096) {
                if (page_oob_size == 128)
index 0b6e7ee385c8da9bc5e5ad1f08c5e274e73edd15..63bdf65f82c46949bce9fc975a469d3cda86311a 100644 (file)
@@ -634,6 +634,12 @@ static int nand_block_checkbad(struct mtd_info *mtd, loff_t ofs, int getchip,
 {
        struct nand_chip *chip = mtd->priv;
 
+       if (!(chip->options & NAND_SKIP_BBTSCAN) &&
+           !(chip->options & NAND_BBT_SCANNED)) {
+               chip->options |= NAND_BBT_SCANNED;
+               chip->scan_bbt(mtd);
+       }
+
        if (!chip->bbt)
                return chip->block_bad(mtd, ofs, getchip);
 
@@ -2900,7 +2906,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
                WATCHDOG_RESET();
 
                /* Check if we have a bad block, we do not erase bad blocks! */
-               if (nand_block_checkbad(mtd, ((loff_t) page) <<
+               if (!instr->scrub && nand_block_checkbad(mtd, ((loff_t) page) <<
                                        chip->page_shift, 0, allowbbt)) {
                        pr_warn("%s: attempt to erase a bad block at page 0x%08x\n",
                                    __func__, page);
@@ -4320,12 +4326,7 @@ int nand_scan_tail(struct mtd_info *mtd)
        if (!mtd->bitflip_threshold)
                mtd->bitflip_threshold = mtd->ecc_strength;
 
-       /* Check, if we should skip the bad block table scan */
-       if (chip->options & NAND_SKIP_BBTSCAN)
-               return 0;
-
-       /* Build bad block table */
-       return chip->scan_bbt(mtd);
+       return 0;
 }
 EXPORT_SYMBOL(nand_scan_tail);
 
index 024f6fb4402485bc6337a00af308e1eeb5a3e013..afdd160d816a8935671ed5db51ce61424e60b8dd 100644 (file)
@@ -91,6 +91,7 @@ int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts)
                        kfree(chip->bbt);
                }
                chip->bbt = NULL;
+               chip->options &= ~NAND_BBT_SCANNED;
        }
 
        for (erased_length = 0;
@@ -179,9 +180,6 @@ int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts)
        if (!opts->quiet)
                printf("\n");
 
-       if (opts->scrub)
-               chip->scan_bbt(meminfo);
-
        return 0;
 }
 
index 40d670563c1e447c172f075eabda3d304433f693..459904d81c21a2356e353c642ef065151006c257 100644 (file)
@@ -73,14 +73,11 @@ static void omap_nand_hwcontrol(struct mtd_info *mtd, int32_t cmd,
                writeb(cmd, this->IO_ADDR_W);
 }
 
-#ifdef CONFIG_SPL_BUILD
 /* Check wait pin as dev ready indicator */
-static int omap_spl_dev_ready(struct mtd_info *mtd)
+static int omap_dev_ready(struct mtd_info *mtd)
 {
        return gpmc_cfg->status & (1 << 8);
 }
-#endif
-
 
 /*
  * gen_true_ecc - This function will generate true ECC value, which
@@ -371,8 +368,9 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
        uint32_t error_loc[ELM_MAX_ERROR_COUNT];
        enum bch_level bch_type;
        uint32_t i, ecc_flag = 0;
-       uint8_t count, err = 0;
+       uint8_t count;
        uint32_t byte_pos, bit_pos;
+       int err = 0;
 
        /* check calculated ecc */
        for (i = 0; i < ecc->bytes && !ecc_flag; i++) {
@@ -887,7 +885,9 @@ int board_nand_init(struct nand_chip *nand)
                nand->read_buf = nand_read_buf16;
        else
                nand->read_buf = nand_read_buf;
-       nand->dev_ready = omap_spl_dev_ready;
 #endif
+
+       nand->dev_ready = omap_dev_ready;
+
        return 0;
 }
index db87d07269b0bbe46911144f03edb101e95aded1..b3a2a60bb268f26740b60fc968af6870405e2ceb 100644 (file)
@@ -38,10 +38,10 @@ static void nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 }
 #endif
 
-static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
+static void s3c24x0_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
        struct nand_chip *chip = mtd->priv;
-       struct s3c2410_nand *nand = s3c2410_get_base_nand();
+       struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
 
        debug("hwcontrol(): 0x%02x 0x%02x\n", cmd, ctrl);
 
@@ -67,35 +67,35 @@ static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
                writeb(cmd, chip->IO_ADDR_W);
 }
 
-static int s3c2410_dev_ready(struct mtd_info *mtd)
+static int s3c24x0_dev_ready(struct mtd_info *mtd)
 {
-       struct s3c2410_nand *nand = s3c2410_get_base_nand();
+       struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
        debug("dev_ready\n");
        return readl(&nand->nfstat) & 0x01;
 }
 
 #ifdef CONFIG_S3C2410_NAND_HWECC
-void s3c2410_nand_enable_hwecc(struct mtd_info *mtd, int mode)
+void s3c24x0_nand_enable_hwecc(struct mtd_info *mtd, int mode)
 {
-       struct s3c2410_nand *nand = s3c2410_get_base_nand();
-       debug("s3c2410_nand_enable_hwecc(%p, %d)\n", mtd, mode);
+       struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
+       debug("s3c24x0_nand_enable_hwecc(%p, %d)\n", mtd, mode);
        writel(readl(&nand->nfconf) | S3C2410_NFCONF_INITECC, &nand->nfconf);
 }
 
-static int s3c2410_nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
+static int s3c24x0_nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
                                      u_char *ecc_code)
 {
-       struct s3c2410_nand *nand = s3c2410_get_base_nand();
+       struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
        ecc_code[0] = readb(&nand->nfecc);
        ecc_code[1] = readb(&nand->nfecc + 1);
        ecc_code[2] = readb(&nand->nfecc + 2);
-       debug("s3c2410_nand_calculate_hwecc(%p,): 0x%02x 0x%02x 0x%02x\n",
-              mtd , ecc_code[0], ecc_code[1], ecc_code[2]);
+       debug("s3c24x0_nand_calculate_hwecc(%p,): 0x%02x 0x%02x 0x%02x\n",
+             mtd , ecc_code[0], ecc_code[1], ecc_code[2]);
 
        return 0;
 }
 
-static int s3c2410_nand_correct_data(struct mtd_info *mtd, u_char *dat,
+static int s3c24x0_nand_correct_data(struct mtd_info *mtd, u_char *dat,
                                     u_char *read_ecc, u_char *calc_ecc)
 {
        if (read_ecc[0] == calc_ecc[0] &&
@@ -103,7 +103,7 @@ static int s3c2410_nand_correct_data(struct mtd_info *mtd, u_char *dat,
            read_ecc[2] == calc_ecc[2])
                return 0;
 
-       printf("s3c2410_nand_correct_data: not implemented\n");
+       printf("s3c24x0_nand_correct_data: not implemented\n");
        return -1;
 }
 #endif
@@ -113,7 +113,7 @@ int board_nand_init(struct nand_chip *nand)
        u_int32_t cfg;
        u_int8_t tacls, twrph0, twrph1;
        struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power();
-       struct s3c2410_nand *nand_reg = s3c2410_get_base_nand();
+       struct s3c24x0_nand *nand_reg = s3c24x0_get_base_nand();
 
        debug("board_nand_init()\n");
 
@@ -149,14 +149,14 @@ int board_nand_init(struct nand_chip *nand)
 #endif
 
        /* hwcontrol always must be implemented */
-       nand->cmd_ctrl = s3c2410_hwcontrol;
+       nand->cmd_ctrl = s3c24x0_hwcontrol;
 
-       nand->dev_ready = s3c2410_dev_ready;
+       nand->dev_ready = s3c24x0_dev_ready;
 
 #ifdef CONFIG_S3C2410_NAND_HWECC
-       nand->ecc.hwctl = s3c2410_nand_enable_hwecc;
-       nand->ecc.calculate = s3c2410_nand_calculate_ecc;
-       nand->ecc.correct = s3c2410_nand_correct_data;
+       nand->ecc.hwctl = s3c24x0_nand_enable_hwecc;
+       nand->ecc.calculate = s3c24x0_nand_calculate_ecc;
+       nand->ecc.correct = s3c24x0_nand_correct_data;
        nand->ecc.mode = NAND_ECC_HW;
        nand->ecc.size = CONFIG_SYS_NAND_ECCSIZE;
        nand->ecc.bytes = CONFIG_SYS_NAND_ECCBYTES;
index 7feb3a7b1e78c30251c3df480fbaf164ba9732e8..928d58b3a732894bcf7fe143da3ef821d6caf0bb 100644 (file)
@@ -611,6 +611,9 @@ static int vf610_nfc_nand_init(int devnum, void __iomem *addr)
                vf610_nfc_clear(mtd, NFC_FLASH_CONFIG, CONFIG_16BIT);
        }
 
+       /* Disable subpage writes as we do not provide ecc->hwctl */
+       chip->options |= NAND_NO_SUBPAGE_WRITE;
+
        chip->dev_ready = vf610_nfc_dev_ready;
        chip->cmdfunc = vf610_nfc_command;
        chip->read_byte = vf610_nfc_read_byte;
index 15789a07d8f674786e201581784a7ffb9c37bfed..c61b784e178cf2488ee28ce0857fbe8a478827fb 100644 (file)
@@ -17,6 +17,5 @@ obj-$(CONFIG_SPI_FLASH) += sf_probe.o
 #endif
 obj-$(CONFIG_CMD_SF) += sf.o
 obj-$(CONFIG_SPI_FLASH) += sf_ops.o sf_params.o
-obj-$(CONFIG_SPI_FRAM_RAMTRON) += ramtron.o
 obj-$(CONFIG_SPI_FLASH_SANDBOX) += sandbox.o
 obj-$(CONFIG_SPI_M95XXX) += eeprom_m95xxx.o
diff --git a/drivers/mtd/spi/ramtron.c b/drivers/mtd/spi/ramtron.c
deleted file mode 100644 (file)
index a23032c..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * (C) Copyright 2010
- * Reinhard Meyer, EMK Elektronik, reinhard.meyer@emk-elektronik.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Note: RAMTRON SPI FRAMs are ferroelectric, nonvolatile RAMs
- * with an interface identical to SPI flash devices.
- * However since they behave like RAM there are no delays or
- * busy polls required. They can sustain read or write at the
- * allowed SPI bus speed, which can be 40 MHz for some devices.
- *
- * Unfortunately some RAMTRON devices do not have a means of
- * identifying them. They will leave the SO line undriven when
- * the READ-ID command is issued. It is therefore mandatory
- * that the MISO line has a proper pull-up, so that READ-ID
- * will return a row of 0xff. This 0xff pseudo-id will cause
- * probes by all vendor specific functions that are designed
- * to handle it. If the MISO line is not pulled up, READ-ID
- * could return any random noise, even mimicking another
- * device.
- *
- * We use CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC
- * to define which device will be assumed after a simple status
- * register verify. This method is prone to false positive
- * detection and should therefore be the last to be tried.
- * Enter it in the last position in the table in spi_flash.c!
- *
- * The define CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC both activates
- * compilation of the special handler and defines the device
- * to assume.
- */
-
-#include <common.h>
-#include <malloc.h>
-#include <spi.h>
-#include <spi_flash.h>
-#include "sf_internal.h"
-
-/*
- * Properties of supported FRAMs
- * Note: speed is currently not used because we have no method to deliver that
- * value to the upper layers
- */
-struct ramtron_spi_fram_params {
-       u32     size;           /* size in bytes */
-       u8      addr_len;       /* number of address bytes */
-       u8      merge_cmd;      /* some address bits are in the command byte */
-       u8      id1;            /* device ID 1 (family, density) */
-       u8      id2;            /* device ID 2 (sub, rev, rsvd) */
-       u32     speed;          /* max. SPI clock in Hz */
-       const char *name;       /* name for display and/or matching */
-};
-
-struct ramtron_spi_fram {
-       struct spi_flash flash;
-       const struct ramtron_spi_fram_params *params;
-};
-
-static inline struct ramtron_spi_fram *to_ramtron_spi_fram(struct spi_flash
-                                                            *flash)
-{
-       return container_of(flash, struct ramtron_spi_fram, flash);
-}
-
-/*
- * table describing supported FRAM chips:
- * chips without RDID command must have the values 0xff for id1 and id2
- */
-static const struct ramtron_spi_fram_params ramtron_spi_fram_table[] = {
-       {
-               .size = 32*1024,
-               .addr_len = 2,
-               .merge_cmd = 0,
-               .id1 = 0x22,
-               .id2 = 0x00,
-               .speed = 40000000,
-               .name = "FM25V02",
-       },
-       {
-               .size = 32*1024,
-               .addr_len = 2,
-               .merge_cmd = 0,
-               .id1 = 0x22,
-               .id2 = 0x01,
-               .speed = 40000000,
-               .name = "FM25VN02",
-       },
-       {
-               .size = 64*1024,
-               .addr_len = 2,
-               .merge_cmd = 0,
-               .id1 = 0x23,
-               .id2 = 0x00,
-               .speed = 40000000,
-               .name = "FM25V05",
-       },
-       {
-               .size = 64*1024,
-               .addr_len = 2,
-               .merge_cmd = 0,
-               .id1 = 0x23,
-               .id2 = 0x01,
-               .speed = 40000000,
-               .name = "FM25VN05",
-       },
-       {
-               .size = 128*1024,
-               .addr_len = 3,
-               .merge_cmd = 0,
-               .id1 = 0x24,
-               .id2 = 0x00,
-               .speed = 40000000,
-               .name = "FM25V10",
-       },
-       {
-               .size = 128*1024,
-               .addr_len = 3,
-               .merge_cmd = 0,
-               .id1 = 0x24,
-               .id2 = 0x01,
-               .speed = 40000000,
-               .name = "FM25VN10",
-       },
-#ifdef CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC
-       {
-               .size = 256*1024,
-               .addr_len = 3,
-               .merge_cmd = 0,
-               .id1 = 0xff,
-               .id2 = 0xff,
-               .speed = 40000000,
-               .name = "FM25H20",
-       },
-#endif
-};
-
-static int ramtron_common(struct spi_flash *flash,
-               u32 offset, size_t len, void *buf, u8 command)
-{
-       struct ramtron_spi_fram *sn = to_ramtron_spi_fram(flash);
-       u8 cmd[4];
-       int cmd_len;
-       int ret;
-
-       if (sn->params->addr_len == 3 && sn->params->merge_cmd == 0) {
-               cmd[0] = command;
-               cmd[1] = offset >> 16;
-               cmd[2] = offset >> 8;
-               cmd[3] = offset;
-               cmd_len = 4;
-       } else if (sn->params->addr_len == 2 && sn->params->merge_cmd == 0) {
-               cmd[0] = command;
-               cmd[1] = offset >> 8;
-               cmd[2] = offset;
-               cmd_len = 3;
-       } else {
-               printf("SF: unsupported addr_len or merge_cmd\n");
-               return -1;
-       }
-
-       /* claim the bus */
-       ret = spi_claim_bus(flash->spi);
-       if (ret) {
-               debug("SF: Unable to claim SPI bus\n");
-               return ret;
-       }
-
-       if (command == CMD_PAGE_PROGRAM) {
-               /* send WREN */
-               ret = spi_flash_cmd_write_enable(flash);
-               if (ret < 0) {
-                       debug("SF: Enabling Write failed\n");
-                       goto releasebus;
-               }
-       }
-
-       /* do the transaction */
-       if (command == CMD_PAGE_PROGRAM)
-               ret = spi_flash_cmd_write(flash->spi, cmd, cmd_len, buf, len);
-       else
-               ret = spi_flash_cmd_read(flash->spi, cmd, cmd_len, buf, len);
-       if (ret < 0)
-               debug("SF: Transaction failed\n");
-
-releasebus:
-       /* release the bus */
-       spi_release_bus(flash->spi);
-       return ret;
-}
-
-static int ramtron_read(struct spi_flash *flash,
-               u32 offset, size_t len, void *buf)
-{
-       return ramtron_common(flash, offset, len, buf,
-               CMD_READ_ARRAY_SLOW);
-}
-
-static int ramtron_write(struct spi_flash *flash,
-               u32 offset, size_t len, const void *buf)
-{
-       return ramtron_common(flash, offset, len, (void *)buf,
-               CMD_PAGE_PROGRAM);
-}
-
-static int ramtron_erase(struct spi_flash *flash, u32 offset, size_t len)
-{
-       debug("SF: Erase of RAMTRON FRAMs is pointless\n");
-       return -1;
-}
-
-/*
- * nore: we are called here with idcode pointing to the first non-0x7f byte
- * already!
- */
-static struct spi_flash *spi_fram_probe_ramtron(struct spi_slave *spi,
-               u8 *idcode)
-{
-       const struct ramtron_spi_fram_params *params;
-       struct ramtron_spi_fram *sn;
-       unsigned int i;
-#ifdef CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC
-       int ret;
-       u8 sr;
-#endif
-
-       /* NOTE: the bus has been claimed before this function is called! */
-       switch (idcode[0]) {
-       case 0xc2:
-               /* JEDEC conformant RAMTRON id */
-               for (i = 0; i < ARRAY_SIZE(ramtron_spi_fram_table); i++) {
-                       params = &ramtron_spi_fram_table[i];
-                       if (idcode[1] == params->id1 &&
-                           idcode[2] == params->id2)
-                               goto found;
-               }
-               break;
-#ifdef CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC
-       case 0xff:
-               /*
-                * probably open MISO line, pulled up.
-                * We COULD have a non JEDEC conformant FRAM here,
-                * read the status register to verify
-                */
-               ret = spi_flash_cmd(spi, CMD_READ_STATUS, &sr, 1);
-               if (ret)
-                       return NULL;
-
-               /* Bits 5,4,0 are fixed 0 for all devices */
-               if ((sr & 0x31) != 0x00)
-                       return NULL;
-               /* now find the device */
-               for (i = 0; i < ARRAY_SIZE(ramtron_spi_fram_table); i++) {
-                       params = &ramtron_spi_fram_table[i];
-                       if (!strcmp(params->name,
-                                   CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC))
-                               goto found;
-               }
-               debug("SF: Unsupported non-JEDEC RAMTRON device "
-                       CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC "\n");
-               break;
-#endif
-       default:
-               break;
-       }
-
-       /* arriving here means no method has found a device we can handle */
-       debug("SF/ramtron: unsupported device id0=%02x id1=%02x id2=%02x\n",
-             idcode[0], idcode[1], idcode[2]);
-       return NULL;
-
-found:
-       sn = malloc(sizeof(*sn));
-       if (!sn) {
-               debug("SF: Failed to allocate memory\n");
-               return NULL;
-       }
-
-       sn->params = params;
-
-       sn->flash.write = ramtron_write;
-       sn->flash.read = ramtron_read;
-       sn->flash.erase = ramtron_erase;
-       sn->flash.size = params->size;
-
-       return &sn->flash;
-}
-
-/*
- * The following table holds all device probe functions
- * (All flashes are removed and implemented a common probe at
- *  spi_flash_probe.c)
- *
- * shift:  number of continuation bytes before the ID
- * idcode: the expected IDCODE or 0xff for non JEDEC devices
- * probe:  the function to call
- *
- * Non JEDEC devices should be ordered in the table such that
- * the probe functions with best detection algorithms come first.
- *
- * Several matching entries are permitted, they will be tried
- * in sequence until a probe function returns non NULL.
- *
- * IDCODE_CONT_LEN may be redefined if a device needs to declare a
- * larger "shift" value.  IDCODE_PART_LEN generally shouldn't be
- * changed.  This is the max number of bytes probe functions may
- * examine when looking up part-specific identification info.
- *
- * Probe functions will be given the idcode buffer starting at their
- * manu id byte (the "idcode" in the table below).  In other words,
- * all of the continuation bytes will be skipped (the "shift" below).
- */
-#define IDCODE_CONT_LEN 0
-#define IDCODE_PART_LEN 5
-static const struct {
-       const u8 shift;
-       const u8 idcode;
-       struct spi_flash *(*probe) (struct spi_slave *spi, u8 *idcode);
-} flashes[] = {
-       /* Keep it sorted by define name */
-#ifdef CONFIG_SPI_FRAM_RAMTRON
-       { 6, 0xc2, spi_fram_probe_ramtron, },
-# undef IDCODE_CONT_LEN
-# define IDCODE_CONT_LEN 6
-#endif
-#ifdef CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC
-       { 0, 0xff, spi_fram_probe_ramtron, },
-#endif
-};
-#define IDCODE_LEN (IDCODE_CONT_LEN + IDCODE_PART_LEN)
-
-struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
-               unsigned int max_hz, unsigned int spi_mode)
-{
-       struct spi_slave *spi;
-       struct spi_flash *flash = NULL;
-       int ret, i, shift;
-       u8 idcode[IDCODE_LEN], *idp;
-
-       spi = spi_setup_slave(bus, cs, max_hz, spi_mode);
-       if (!spi) {
-               printf("SF: Failed to set up slave\n");
-               return NULL;
-       }
-
-       ret = spi_claim_bus(spi);
-       if (ret) {
-               debug("SF: Failed to claim SPI bus: %d\n", ret);
-               goto err_claim_bus;
-       }
-
-       /* Read the ID codes */
-       ret = spi_flash_cmd(spi, CMD_READ_ID, idcode, sizeof(idcode));
-       if (ret)
-               goto err_read_id;
-
-#ifdef DEBUG
-       printf("SF: Got idcodes\n");
-       print_buffer(0, idcode, 1, sizeof(idcode), 0);
-#endif
-
-       /* count the number of continuation bytes */
-       for (shift = 0, idp = idcode;
-            shift < IDCODE_CONT_LEN && *idp == 0x7f;
-            ++shift, ++idp)
-               continue;
-
-       /* search the table for matches in shift and id */
-       for (i = 0; i < ARRAY_SIZE(flashes); ++i)
-               if (flashes[i].shift == shift && flashes[i].idcode == *idp) {
-                       /* we have a match, call probe */
-                       flash = flashes[i].probe(spi, idp);
-                       if (flash)
-                               break;
-               }
-
-       if (!flash) {
-               printf("SF: Unsupported manufacturer %02x\n", *idp);
-               goto err_manufacturer_probe;
-       }
-
-       printf("SF: Detected %s with total size ", flash->name);
-       print_size(flash->size, "");
-       puts("\n");
-
-       spi_release_bus(spi);
-
-       return flash;
-
-err_manufacturer_probe:
-err_read_id:
-       spi_release_bus(spi);
-err_claim_bus:
-       spi_free_slave(spi);
-       return NULL;
-}
-
-void spi_flash_free(struct spi_flash *flash)
-{
-       spi_free_slave(flash->spi);
-       free(flash);
-}
index 1cf2f98310a17493a5a99cce29caa652cb9aabd1..3024b988fef904884f4d6e4920d98859714f115c 100644 (file)
@@ -315,7 +315,7 @@ int sandbox_erase_part(struct sandbox_spi_flash *sbsf, int size)
        int ret;
 
        while (size > 0) {
-               todo = min(size, sizeof(sandbox_sf_0xff));
+               todo = min(size, (int)sizeof(sandbox_sf_0xff));
                ret = os_write(sbsf->fd, sandbox_sf_0xff, todo);
                if (ret != todo)
                        return ret;
@@ -602,14 +602,14 @@ static int sandbox_sf_bind_bus_cs(struct sandbox_state *state, int busnum,
                       spec, ret);
                return ret;
        }
-       ret = device_find_child_by_seq(bus, cs, true, &slave);
+       ret = spi_find_chip_select(bus, cs, &slave);
        if (!ret) {
                printf("Chip select %d already exists for spec '%s'\n", cs,
                       spec);
                return -EEXIST;
        }
 
-       ret = spi_bind_device(bus, cs, "spi_flash_std", spec, &slave);
+       ret = device_bind_driver(bus, "spi_flash_std", spec, &slave);
        if (ret)
                return ret;
 
index 5b7670c9aaf1219e841cd2dfc5096bb62e7e3390..785f7a96fed28d8d7cb8297fa009705e183c9290 100644 (file)
@@ -23,13 +23,16 @@ enum spi_dual_flash {
 /* Enum list - Full read commands */
 enum spi_read_cmds {
        ARRAY_SLOW              = 1 << 0,
-       DUAL_OUTPUT_FAST        = 1 << 1,
-       DUAL_IO_FAST            = 1 << 2,
-       QUAD_OUTPUT_FAST        = 1 << 3,
-       QUAD_IO_FAST            = 1 << 4,
+       ARRAY_FAST              = 1 << 1,
+       DUAL_OUTPUT_FAST        = 1 << 2,
+       DUAL_IO_FAST            = 1 << 3,
+       QUAD_OUTPUT_FAST        = 1 << 4,
+       QUAD_IO_FAST            = 1 << 5,
 };
 
-#define RD_EXTN        (ARRAY_SLOW | DUAL_OUTPUT_FAST | DUAL_IO_FAST)
+/* Normal - Extended - Full command set */
+#define RD_NORM        (ARRAY_SLOW | ARRAY_FAST)
+#define RD_EXTN        (RD_NORM | DUAL_OUTPUT_FAST | DUAL_IO_FAST)
 #define RD_FULL        (RD_EXTN | QUAD_OUTPUT_FAST | QUAD_IO_FAST)
 
 /* sf param flags */
@@ -37,9 +40,13 @@ enum {
        SECT_4K         = 1 << 0,
        SECT_32K        = 1 << 1,
        E_FSR           = 1 << 2,
-       WR_QPP          = 1 << 3,
+       SST_BP          = 1 << 3,
+       SST_WP          = 1 << 4,
+       WR_QPP          = 1 << 5,
 };
 
+#define SST_WR         (SST_BP | SST_WP)
+
 #define SPI_FLASH_3B_ADDR_LEN          3
 #define SPI_FLASH_CMD_LEN              (1 + SPI_FLASH_3B_ADDR_LEN)
 #define SPI_FLASH_16MB_BOUN            0x1000000
@@ -101,12 +108,13 @@ enum {
 
 /* SST specific */
 #ifdef CONFIG_SPI_FLASH_SST
-# define SST_WP                0x01    /* Supports AAI word program */
 # define CMD_SST_BP            0x02    /* Byte Program */
 # define CMD_SST_AAI_WP        0xAD    /* Auto Address Incr Word Program */
 
 int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
                const void *buf);
+int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
+               const void *buf);
 #endif
 
 /**
index 85cf22d42ecd08761a149639ddbc2dda47ea590a..34bc54e73e1f7b74d58d1d47fe87b56471371081 100644 (file)
@@ -313,10 +313,11 @@ int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset,
                        return ret;
 #endif
                byte_addr = offset % page_size;
-               chunk_len = min(len - actual, page_size - byte_addr);
+               chunk_len = min(len - actual, (size_t)(page_size - byte_addr));
 
                if (flash->spi->max_write_size)
-                       chunk_len = min(chunk_len, flash->spi->max_write_size);
+                       chunk_len = min(chunk_len,
+                                       (size_t)flash->spi->max_write_size);
 
                spi_flash_addr(write_addr, cmd);
 
@@ -516,4 +517,35 @@ int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
        spi_release_bus(flash->spi);
        return ret;
 }
+
+int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
+               const void *buf)
+{
+       size_t actual;
+       int ret;
+
+       ret = spi_claim_bus(flash->spi);
+       if (ret) {
+               debug("SF: Unable to claim SPI bus\n");
+               return ret;
+       }
+
+       for (actual = 0; actual < len; actual++) {
+               ret = sst_byte_write(flash, offset, buf + actual);
+               if (ret) {
+                       debug("SF: sst byte program failed\n");
+                       break;
+               }
+               offset++;
+       }
+
+       if (!ret)
+               ret = spi_flash_cmd_write_disable(flash);
+
+       debug("SF: sst: program %s %zu bytes @ 0x%zx\n",
+             ret ? "failure" : "success", len, offset - actual);
+
+       spi_release_bus(flash->spi);
+       return ret;
+}
 #endif
index 61545cacaabe8415bf7a1a1fa35d2e7e8294e2b9..c12e8c6fe7eda06939b685583c3c1b21778e0cf8 100644 (file)
 /* SPI/QSPI flash device params structure */
 const struct spi_flash_params spi_flash_params_table[] = {
 #ifdef CONFIG_SPI_FLASH_ATMEL          /* ATMEL */
-       {"AT45DB011D",     0x1f2200, 0x0,       64 * 1024,     4,       0,                  SECT_4K},
-       {"AT45DB021D",     0x1f2300, 0x0,       64 * 1024,     8,       0,                  SECT_4K},
-       {"AT45DB041D",     0x1f2400, 0x0,       64 * 1024,     8,       0,                  SECT_4K},
-       {"AT45DB081D",     0x1f2500, 0x0,       64 * 1024,    16,       0,                  SECT_4K},
-       {"AT45DB161D",     0x1f2600, 0x0,       64 * 1024,    32,       0,                  SECT_4K},
-       {"AT45DB321D",     0x1f2700, 0x0,       64 * 1024,    64,       0,                  SECT_4K},
-       {"AT45DB641D",     0x1f2800, 0x0,       64 * 1024,   128,       0,                  SECT_4K},
-       {"AT25DF321",      0x1f4701, 0x0,       64 * 1024,    64,       0,                  SECT_4K},
+       {"AT45DB011D",     0x1f2200, 0x0,       64 * 1024,     4, RD_NORM,                  SECT_4K},
+       {"AT45DB021D",     0x1f2300, 0x0,       64 * 1024,     8, RD_NORM,                  SECT_4K},
+       {"AT45DB041D",     0x1f2400, 0x0,       64 * 1024,     8, RD_NORM,                  SECT_4K},
+       {"AT45DB081D",     0x1f2500, 0x0,       64 * 1024,    16, RD_NORM,                  SECT_4K},
+       {"AT45DB161D",     0x1f2600, 0x0,       64 * 1024,    32, RD_NORM,                  SECT_4K},
+       {"AT45DB321D",     0x1f2700, 0x0,       64 * 1024,    64, RD_NORM,                  SECT_4K},
+       {"AT45DB641D",     0x1f2800, 0x0,       64 * 1024,   128, RD_NORM,                  SECT_4K},
+       {"AT25DF321",      0x1f4701, 0x0,       64 * 1024,    64, RD_NORM,                  SECT_4K},
 #endif
 #ifdef CONFIG_SPI_FLASH_EON            /* EON */
-       {"EN25Q32B",       0x1c3016, 0x0,       64 * 1024,    64,       0,                        0},
-       {"EN25Q64",        0x1c3017, 0x0,       64 * 1024,   128,       0,                  SECT_4K},
-       {"EN25Q128B",      0x1c3018, 0x0,       64 * 1024,   256,       0,                        0},
-       {"EN25S64",        0x1c3817, 0x0,       64 * 1024,   128,       0,                        0},
+       {"EN25Q32B",       0x1c3016, 0x0,       64 * 1024,    64, RD_NORM,                        0},
+       {"EN25Q64",        0x1c3017, 0x0,       64 * 1024,   128, RD_NORM,                  SECT_4K},
+       {"EN25Q128B",      0x1c3018, 0x0,       64 * 1024,   256, RD_NORM,                        0},
+       {"EN25S64",        0x1c3817, 0x0,       64 * 1024,   128, RD_NORM,                        0},
 #endif
 #ifdef CONFIG_SPI_FLASH_GIGADEVICE     /* GIGADEVICE */
-       {"GD25Q64B",       0xc84017, 0x0,       64 * 1024,   128,       0,                  SECT_4K},
-       {"GD25LQ32",       0xc86016, 0x0,       64 * 1024,    64,       0,                  SECT_4K},
+       {"GD25Q64B",       0xc84017, 0x0,       64 * 1024,   128, RD_NORM,                  SECT_4K},
+       {"GD25LQ32",       0xc86016, 0x0,       64 * 1024,    64, RD_NORM,                  SECT_4K},
 #endif
 #ifdef CONFIG_SPI_FLASH_MACRONIX       /* MACRONIX */
-       {"MX25L2006E",     0xc22012, 0x0,       64 * 1024,     4,       0,                        0},
-       {"MX25L4005",      0xc22013, 0x0,       64 * 1024,     8,       0,                        0},
-       {"MX25L8005",      0xc22014, 0x0,       64 * 1024,    16,       0,                        0},
-       {"MX25L1605D",     0xc22015, 0x0,       64 * 1024,    32,       0,                        0},
-       {"MX25L3205D",     0xc22016, 0x0,       64 * 1024,    64,       0,                        0},
-       {"MX25L6405D",     0xc22017, 0x0,       64 * 1024,   128,       0,                        0},
+       {"MX25L2006E",     0xc22012, 0x0,       64 * 1024,     4, RD_NORM,                        0},
+       {"MX25L4005",      0xc22013, 0x0,       64 * 1024,     8, RD_NORM,                        0},
+       {"MX25L8005",      0xc22014, 0x0,       64 * 1024,    16, RD_NORM,                        0},
+       {"MX25L1605D",     0xc22015, 0x0,       64 * 1024,    32, RD_NORM,                        0},
+       {"MX25L3205D",     0xc22016, 0x0,       64 * 1024,    64, RD_NORM,                        0},
+       {"MX25L6405D",     0xc22017, 0x0,       64 * 1024,   128, RD_NORM,                        0},
        {"MX25L12805",     0xc22018, 0x0,       64 * 1024,   256, RD_FULL,                   WR_QPP},
        {"MX25L25635F",    0xc22019, 0x0,       64 * 1024,   512, RD_FULL,                   WR_QPP},
        {"MX25L51235F",    0xc2201a, 0x0,       64 * 1024,  1024, RD_FULL,                   WR_QPP},
        {"MX25L12855E",    0xc22618, 0x0,       64 * 1024,   256, RD_FULL,                   WR_QPP},
 #endif
 #ifdef CONFIG_SPI_FLASH_SPANSION       /* SPANSION */
-       {"S25FL008A",      0x010213, 0x0,       64 * 1024,    16,       0,                        0},
-       {"S25FL016A",      0x010214, 0x0,       64 * 1024,    32,       0,                        0},
-       {"S25FL032A",      0x010215, 0x0,       64 * 1024,    64,       0,                        0},
-       {"S25FL064A",      0x010216, 0x0,       64 * 1024,   128,       0,                        0},
+       {"S25FL008A",      0x010213, 0x0,       64 * 1024,    16, RD_NORM,                        0},
+       {"S25FL016A",      0x010214, 0x0,       64 * 1024,    32, RD_NORM,                        0},
+       {"S25FL032A",      0x010215, 0x0,       64 * 1024,    64, RD_NORM,                        0},
+       {"S25FL064A",      0x010216, 0x0,       64 * 1024,   128, RD_NORM,                        0},
+       {"S25FL116K",      0x014015, 0x0,       64 * 1024,   128, RD_NORM,                        0},
+       {"S25FL164K",      0x014017, 0x0140,    64 * 1024,   128, RD_NORM,                        0},
        {"S25FL128P_256K", 0x012018, 0x0300,   256 * 1024,    64, RD_FULL,                   WR_QPP},
        {"S25FL128P_64K",  0x012018, 0x0301,    64 * 1024,   256, RD_FULL,                   WR_QPP},
        {"S25FL032P",      0x010215, 0x4d00,    64 * 1024,    64, RD_FULL,                   WR_QPP},
@@ -64,17 +66,17 @@ const struct spi_flash_params spi_flash_params_table[] = {
        {"S25FL512S_512K", 0x010220, 0x4f00,   256 * 1024,   256, RD_FULL,                   WR_QPP},
 #endif
 #ifdef CONFIG_SPI_FLASH_STMICRO                /* STMICRO */
-       {"M25P10",         0x202011, 0x0,       32 * 1024,     4,       0,                        0},
-       {"M25P20",         0x202012, 0x0,       64 * 1024,     4,       0,                        0},
-       {"M25P40",         0x202013, 0x0,       64 * 1024,     8,       0,                        0},
-       {"M25P80",         0x202014, 0x0,       64 * 1024,    16,       0,                        0},
-       {"M25P16",         0x202015, 0x0,       64 * 1024,    32,       0,                        0},
-       {"M25PE16",        0x208015, 0x1000,    64 * 1024,    32,       0,                        0},
+       {"M25P10",         0x202011, 0x0,       32 * 1024,     4, RD_NORM,                        0},
+       {"M25P20",         0x202012, 0x0,       64 * 1024,     4, RD_NORM,                        0},
+       {"M25P40",         0x202013, 0x0,       64 * 1024,     8, RD_NORM,                        0},
+       {"M25P80",         0x202014, 0x0,       64 * 1024,    16, RD_NORM,                        0},
+       {"M25P16",         0x202015, 0x0,       64 * 1024,    32, RD_NORM,                        0},
+       {"M25PE16",        0x208015, 0x1000,    64 * 1024,    32, RD_NORM,                        0},
        {"M25PX16",        0x207115, 0x1000,    64 * 1024,    32, RD_EXTN,                        0},
-       {"M25P32",         0x202016, 0x0,       64 * 1024,    64,       0,                        0},
-       {"M25P64",         0x202017, 0x0,       64 * 1024,   128,       0,                        0},
-       {"M25P128",        0x202018, 0x0,      256 * 1024,    64,       0,                        0},
-       {"M25PX64",        0x207117, 0x0,       64 * 1024,   128,       0,                  SECT_4K},
+       {"M25P32",         0x202016, 0x0,       64 * 1024,    64, RD_NORM,                        0},
+       {"M25P64",         0x202017, 0x0,       64 * 1024,   128, RD_NORM,                        0},
+       {"M25P128",        0x202018, 0x0,      256 * 1024,    64, RD_NORM,                        0},
+       {"M25PX64",        0x207117, 0x0,       64 * 1024,   128, RD_NORM,                  SECT_4K},
        {"N25Q32",         0x20ba16, 0x0,       64 * 1024,    64, RD_FULL,         WR_QPP | SECT_4K},
        {"N25Q32A",        0x20bb16, 0x0,       64 * 1024,    64, RD_FULL,         WR_QPP | SECT_4K},
        {"N25Q64",         0x20ba17, 0x0,       64 * 1024,   128, RD_FULL,         WR_QPP | SECT_4K},
@@ -89,25 +91,26 @@ const struct spi_flash_params spi_flash_params_table[] = {
        {"N25Q1024A",      0x20bb21, 0x0,       64 * 1024,  2048, RD_FULL, WR_QPP | E_FSR | SECT_4K},
 #endif
 #ifdef CONFIG_SPI_FLASH_SST            /* SST */
-       {"SST25VF040B",    0xbf258d, 0x0,       64 * 1024,     8,       0,          SECT_4K | SST_WP},
-       {"SST25VF080B",    0xbf258e, 0x0,       64 * 1024,    16,       0,          SECT_4K | SST_WP},
-       {"SST25VF016B",    0xbf2541, 0x0,       64 * 1024,    32,       0,          SECT_4K | SST_WP},
-       {"SST25VF032B",    0xbf254a, 0x0,       64 * 1024,    64,       0,          SECT_4K | SST_WP},
-       {"SST25VF064C",    0xbf254b, 0x0,       64 * 1024,   128,       0,                   SECT_4K},
-       {"SST25WF512",     0xbf2501, 0x0,       64 * 1024,     1,       0,          SECT_4K | SST_WP},
-       {"SST25WF010",     0xbf2502, 0x0,       64 * 1024,     2,       0,          SECT_4K | SST_WP},
-       {"SST25WF020",     0xbf2503, 0x0,       64 * 1024,     4,       0,          SECT_4K | SST_WP},
-       {"SST25WF040",     0xbf2504, 0x0,       64 * 1024,     8,       0,          SECT_4K | SST_WP},
-       {"SST25WF080",     0xbf2505, 0x0,       64 * 1024,    16,       0,          SECT_4K | SST_WP},
+       {"SST25VF040B",    0xbf258d, 0x0,       64 * 1024,     8, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25VF080B",    0xbf258e, 0x0,       64 * 1024,    16, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25VF016B",    0xbf2541, 0x0,       64 * 1024,    32, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25VF032B",    0xbf254a, 0x0,       64 * 1024,    64, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25VF064C",    0xbf254b, 0x0,       64 * 1024,   128, RD_NORM,                   SECT_4K},
+       {"SST25WF512",     0xbf2501, 0x0,       64 * 1024,     1, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25WF010",     0xbf2502, 0x0,       64 * 1024,     2, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25WF020",     0xbf2503, 0x0,       64 * 1024,     4, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25WF040",     0xbf2504, 0x0,       64 * 1024,     8, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25WF040B",    0x621613, 0x0,       64 * 1024,     8, RD_NORM,          SECT_4K | SST_WR},
+       {"SST25WF080",     0xbf2505, 0x0,       64 * 1024,    16, RD_NORM,          SECT_4K | SST_WR},
 #endif
 #ifdef CONFIG_SPI_FLASH_WINBOND                /* WINBOND */
-       {"W25P80",         0xef2014, 0x0,       64 * 1024,    16,       0,                         0},
-       {"W25P16",         0xef2015, 0x0,       64 * 1024,    32,       0,                         0},
-       {"W25P32",         0xef2016, 0x0,       64 * 1024,    64,       0,                         0},
-       {"W25X40",         0xef3013, 0x0,       64 * 1024,     8,       0,                   SECT_4K},
-       {"W25X16",         0xef3015, 0x0,       64 * 1024,    32,       0,                   SECT_4K},
-       {"W25X32",         0xef3016, 0x0,       64 * 1024,    64,       0,                   SECT_4K},
-       {"W25X64",         0xef3017, 0x0,       64 * 1024,   128,       0,                   SECT_4K},
+       {"W25P80",         0xef2014, 0x0,       64 * 1024,    16, RD_NORM,                         0},
+       {"W25P16",         0xef2015, 0x0,       64 * 1024,    32, RD_NORM,                         0},
+       {"W25P32",         0xef2016, 0x0,       64 * 1024,    64, RD_NORM,                         0},
+       {"W25X40",         0xef3013, 0x0,       64 * 1024,     8, RD_NORM,                   SECT_4K},
+       {"W25X16",         0xef3015, 0x0,       64 * 1024,    32, RD_NORM,                   SECT_4K},
+       {"W25X32",         0xef3016, 0x0,       64 * 1024,    64, RD_NORM,                   SECT_4K},
+       {"W25X64",         0xef3017, 0x0,       64 * 1024,   128, RD_NORM,                   SECT_4K},
        {"W25Q80BL",       0xef4014, 0x0,       64 * 1024,    16, RD_FULL,          WR_QPP | SECT_4K},
        {"W25Q16CL",       0xef4015, 0x0,       64 * 1024,    32, RD_FULL,          WR_QPP | SECT_4K},
        {"W25Q32BV",       0xef4016, 0x0,       64 * 1024,    64, RD_FULL,          WR_QPP | SECT_4K},
index 26364269be1a5e823efc99bd498262bd1a9d3393..ce9987fd1a8770aeb8d948030a792553b511ed80 100644 (file)
@@ -24,6 +24,7 @@ DECLARE_GLOBAL_DATA_PTR;
 /* Read commands array */
 static u8 spi_read_cmds_array[] = {
        CMD_READ_ARRAY_SLOW,
+       CMD_READ_ARRAY_FAST,
        CMD_READ_DUAL_OUTPUT_FAST,
        CMD_READ_DUAL_IO_FAST,
        CMD_READ_QUAD_OUTPUT_FAST,
@@ -135,8 +136,12 @@ static int spi_flash_validate_params(struct spi_slave *spi, u8 *idcode,
 #ifndef CONFIG_DM_SPI_FLASH
        flash->write = spi_flash_cmd_write_ops;
 #if defined(CONFIG_SPI_FLASH_SST)
-       if (params->flags & SST_WP)
-               flash->write = sst_write_wp;
+       if (params->flags & SST_WR) {
+               if (flash->spi->op_mode_tx & SPI_OPM_TX_BP)
+                       flash->write = sst_write_bp;
+               else
+                       flash->write = sst_write_wp;
+       }
 #endif
        flash->erase = spi_flash_cmd_erase_ops;
        flash->read = spi_flash_cmd_read_ops;
index 5ae3b167a93d681fed0b929972966da805174328..d052fcb372cbf590fa7c45bc1c23ee117300f459 100644 (file)
@@ -28,6 +28,8 @@ obj-$(CONFIG_PPC_T1040) += t1040.o
 obj-$(CONFIG_PPC_T1042)        += t1040.o
 obj-$(CONFIG_PPC_T1020)        += t1040.o
 obj-$(CONFIG_PPC_T1022)        += t1040.o
+obj-$(CONFIG_PPC_T1023) += t1024.o
+obj-$(CONFIG_PPC_T1024) += t1024.o
 obj-$(CONFIG_PPC_T2080) += t2080.o
 obj-$(CONFIG_PPC_T2081) += t2080.o
 obj-$(CONFIG_PPC_T4240) += t4240.o
index 373cc4f4242cd28ee55512786adb139a4f807b66..eb058c9c3d6d26a905a49a7895b22baf1e32fd9f 100644 (file)
@@ -10,6 +10,7 @@
 #include <asm/io.h>
 #include <asm/immap_85xx.h>
 #include <asm/fsl_serdes.h>
+#include <hwconfig.h>
 
 u32 port_to_devdisr[] = {
        [FM1_DTSEC1] = FSL_CORENET_DEVDISR2_DTSEC1_1,
@@ -46,15 +47,76 @@ void fman_enable_port(enum fm_port port)
 
 phy_interface_t fman_port_enet_if(enum fm_port port)
 {
+#if defined(CONFIG_B4860QDS)
+       u32 serdes2_prtcl;
+       char buffer[HWCONFIG_BUFFER_SIZE];
+       char *buf = NULL;
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+#endif
+
        if (is_device_disabled(port))
                return PHY_INTERFACE_MODE_NONE;
 
        /*B4860 has two 10Gig Mac*/
        if ((port == FM1_10GEC1 || port == FM1_10GEC2)  &&
            ((is_serdes_configured(XAUI_FM1_MAC9))      ||
-           (is_serdes_configured(XAUI_FM1_MAC10))))
+            #if !defined(CONFIG_B4860QDS)
+            (is_serdes_configured(XFI_FM1_MAC9))       ||
+            (is_serdes_configured(XFI_FM1_MAC10))      ||
+            #endif
+            (is_serdes_configured(XAUI_FM1_MAC10))
+            ))
                return PHY_INTERFACE_MODE_XGMII;
 
+#if defined(CONFIG_B4860QDS)
+       serdes2_prtcl = in_be32(&gur->rcwsr[4]) &
+                       FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
+
+       if (serdes2_prtcl) {
+               serdes2_prtcl >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
+               switch (serdes2_prtcl) {
+               case 0x80:
+               case 0x81:
+               case 0x82:
+               case 0x83:
+               case 0x84:
+               case 0x85:
+               case 0x86:
+               case 0x87:
+               case 0x88:
+               case 0x89:
+               case 0x8a:
+               case 0x8b:
+               case 0x8c:
+               case 0x8d:
+               case 0x8e:
+               case 0xb1:
+               case 0xb2:
+                       /*
+                        * Extract hwconfig from environment since environment
+                        * is not setup yet
+                        */
+                       getenv_f("hwconfig", buffer, sizeof(buffer));
+                       buf = buffer;
+
+                       /* check if XFI interface enable in hwconfig for 10g */
+                       if (hwconfig_subarg_cmp_f("fsl_b4860_serdes2",
+                                                 "sfp_amc", "sfp", buf)) {
+                               if ((port == FM1_10GEC1 ||
+                                    port == FM1_10GEC2) &&
+                                   ((is_serdes_configured(XFI_FM1_MAC9)) ||
+                                   (is_serdes_configured(XFI_FM1_MAC10))))
+                                       return PHY_INTERFACE_MODE_XGMII;
+                               else if ((port == FM1_DTSEC1) ||
+                                        (port == FM1_DTSEC2) ||
+                                        (port == FM1_DTSEC3) ||
+                                        (port == FM1_DTSEC4))
+                                       return PHY_INTERFACE_MODE_NONE;
+                       }
+               }
+       }
+#endif
+
        /* Fix me need to handle RGMII here first */
 
        switch (port) {
index 218a5ed17509a6d2d50eb83cbebabd55fe110a53..f1e39b982a2a01091715581ac7280370a8a41c03 100644 (file)
@@ -39,9 +39,14 @@ static void dtsec_configure_serdes(struct fm_eth *priv)
        u32 value;
        struct mii_dev bus;
        bus.priv = priv->mac->phyregs;
+       bool sgmii_2500 = (priv->enet_if ==
+                       PHY_INTERFACE_MODE_SGMII_2500) ? true : false;
+
+       /* SGMII IF mode + AN enable only for 1G SGMII, not for 2.5G */
+       value = PHY_SGMII_IF_MODE_SGMII;
+       if (!sgmii_2500)
+               value |= PHY_SGMII_IF_MODE_AN;
 
-       /* SGMII IF mode + AN enable */
-       value = PHY_SGMII_IF_MODE_AN | PHY_SGMII_IF_MODE_SGMII;
        memac_mdio_write(&bus, 0, MDIO_DEVAD_NONE, 0x14, value);
 
        /* Dev ability according to SGMII specification */
@@ -54,7 +59,9 @@ static void dtsec_configure_serdes(struct fm_eth *priv)
        memac_mdio_write(&bus, 0, MDIO_DEVAD_NONE, 0x12, 0xd40);
 
        /* Restart AN */
-       value = PHY_SGMII_CR_DEF_VAL | PHY_SGMII_CR_RESET_AN;
+       value = PHY_SGMII_CR_DEF_VAL;
+       if (!sgmii_2500)
+               value |= PHY_SGMII_CR_RESET_AN;
        memac_mdio_write(&bus, 0, MDIO_DEVAD_NONE, 0, value);
 #else
        struct dtsec *regs = priv->mac->base;
@@ -83,7 +90,8 @@ static void dtsec_init_phy(struct eth_device *dev)
        out_be32(&regs->tbipa, CONFIG_SYS_TBIPA_VALUE);
 #endif
 
-       if (fm_eth->enet_if == PHY_INTERFACE_MODE_SGMII)
+       if (fm_eth->enet_if == PHY_INTERFACE_MODE_SGMII ||
+           fm_eth->enet_if == PHY_INTERFACE_MODE_SGMII_2500)
                dtsec_configure_serdes(fm_eth);
 }
 
@@ -557,9 +565,11 @@ static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg)
        num = fm_eth->num;
 
 #ifdef CONFIG_SYS_FMAN_V3
+#ifndef CONFIG_FSL_FM_10GEC_REGULAR_NOTATION
        if (fm_eth->type == FM_ETH_10G_E) {
-               /* 10GEC1/10GEC2 use mEMAC9/mEMAC10
-                * 10GEC3/10GEC4 use mEMAC1/mEMAC2
+               /* 10GEC1/10GEC2 use mEMAC9/mEMAC10 on T2080/T4240.
+                * 10GEC3/10GEC4 use mEMAC1/mEMAC2 on T2080.
+                * 10GEC1 uses mEMAC1 on T1024.
                 * so it needs to change the num.
                 */
                if (fm_eth->num >= 2)
@@ -567,6 +577,7 @@ static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg)
                else
                        num += 8;
        }
+#endif
        base = &reg->memac[num].fm_memac;
        phyregs = &reg->memac[num].fm_memac_mdio;
 #else
index 6cf21c6f652f84c08a3f7d59774e7e52b4ca0e4d..9a8a007861435872ca883e087c03284574425b7f 100644 (file)
@@ -247,10 +247,12 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
        }
 
 #ifdef CONFIG_SYS_FMAN_V3
+#ifndef CONFIG_FSL_FM_10GEC_REGULAR_NOTATION
        /*
-        * Physically FM1_DTSEC9 and FM1_10GEC1 use the same dual-role MAC, when
-        * FM1_10GEC1 is enabled and  FM1_DTSEC9 is disabled, ensure that the
-        * dual-role MAC is not disabled, ditto for other dual-role MACs.
+        * On T2/T4 SoCs, physically FM1_DTSEC9 and FM1_10GEC1 use the same
+        * dual-role MAC, when FM1_10GEC1 is enabled and  FM1_DTSEC9
+        * is disabled, ensure that the dual-role MAC is not disabled,
+        * ditto for other dual-role MACs.
         */
        if (((info->port == FM1_DTSEC9) && (PORT_IS_ENABLED(FM1_10GEC1)))  ||
            ((info->port == FM1_DTSEC10) && (PORT_IS_ENABLED(FM1_10GEC2))) ||
@@ -266,6 +268,17 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
            ((info->port == FM2_DTSEC10) && (PORT_IS_ENABLED(FM2_10GEC2)))      ||
            ((info->port == FM2_10GEC1) && (PORT_IS_ENABLED(FM2_DTSEC9)))       ||
            ((info->port == FM2_10GEC2) && (PORT_IS_ENABLED(FM2_DTSEC10)))
+#endif
+#else
+       /* FM1_DTSECx and FM1_10GECx use the same dual-role MAC */
+       if (((info->port == FM1_DTSEC1) && (PORT_IS_ENABLED(FM1_10GEC1)))  ||
+           ((info->port == FM1_DTSEC2) && (PORT_IS_ENABLED(FM1_10GEC2)))  ||
+           ((info->port == FM1_DTSEC3) && (PORT_IS_ENABLED(FM1_10GEC3)))  ||
+           ((info->port == FM1_DTSEC4) && (PORT_IS_ENABLED(FM1_10GEC4)))  ||
+           ((info->port == FM1_10GEC1) && (PORT_IS_ENABLED(FM1_DTSEC1)))  ||
+           ((info->port == FM1_10GEC2) && (PORT_IS_ENABLED(FM1_DTSEC2)))  ||
+           ((info->port == FM1_10GEC3) && (PORT_IS_ENABLED(FM1_DTSEC3)))  ||
+           ((info->port == FM1_10GEC4) && (PORT_IS_ENABLED(FM1_DTSEC4)))
 #endif
        )
                return;
index 9499290bba8b453f0172e354f9a8065569163af9..60e898cd7c34f0f4e29c09159be1bc292cf8e27b 100644 (file)
@@ -37,7 +37,8 @@ static void memac_enable_mac(struct fsl_enet_mac *mac)
 {
        struct memac *regs = mac->base;
 
-       setbits_be32(&regs->command_config, MEMAC_CMD_CFG_RXTX_EN);
+       setbits_be32(&regs->command_config,
+                    MEMAC_CMD_CFG_RXTX_EN | MEMAC_CMD_CFG_NO_LEN_CHK);
 }
 
 static void memac_disable_mac(struct fsl_enet_mac *mac)
@@ -93,11 +94,16 @@ static void memac_set_interface_mode(struct fsl_enet_mac *mac,
                if_mode &= ~IF_MODE_MASK;
                if_mode |= (IF_MODE_GMII);
                break;
+       case PHY_INTERFACE_MODE_XGMII:
+               if_mode &= ~IF_MODE_MASK;
+               if_mode |= IF_MODE_XGMII;
+               break;
        default:
                break;
        }
-       /* Enable automatic speed selection */
-       if_mode |= IF_MODE_EN_AUTO;
+       /* Enable automatic speed selection for Non-XGMII */
+       if (type != PHY_INTERFACE_MODE_XGMII)
+               if_mode |= IF_MODE_EN_AUTO;
 
        if (type == PHY_INTERFACE_MODE_RGMII) {
                if_mode &= ~IF_MODE_EN_AUTO;
index 5f910c2cdd3025086aba99a15e14118134d7de69..a155d8930b38761969b7dff7c12f7b1376193eea 100644 (file)
@@ -71,6 +71,8 @@ int memac_mdio_read(struct mii_dev *bus, int port_addr, int dev_addr,
        u32 c45 = 1;
 
        if (dev_addr == MDIO_DEVAD_NONE) {
+               if (!strcmp(bus->name, DEFAULT_FM_TGEC_MDIO_NAME))
+                       return 0xffff;
                c45 = 0; /* clause 22 */
                dev_addr = regnum & 0x1f;
                clrbits_be32(&regs->mdio_stat, MDIO_STAT_ENC);
@@ -137,9 +139,12 @@ int fm_memac_mdio_init(bd_t *bis, struct memac_mdio_info *info)
         * is zero, so MDIO clock is disabled.
         * So, for proper functioning of MDIO, MDIO_CLK_DIV bits needs to
         * be properly initialized.
+        * NEG bit default should be '1' as per FMAN-v3 RM, but on platform
+        * like T2080QDS, this bit default is '0', which leads to MDIO failure
+        * on XAUI PHY, so set this bit definitely.
         */
        setbits_be32(&((struct memac_mdio_controller *)info->regs)->mdio_stat,
-                    MDIO_STAT_CLKDIV(258));
+                    MDIO_STAT_CLKDIV(258) | MDIO_STAT_NEG);
 
        return mdio_register(bus);
 }
diff --git a/drivers/net/fm/t1024.c b/drivers/net/fm/t1024.c
new file mode 100644 (file)
index 0000000..9b31173
--- /dev/null
@@ -0,0 +1,88 @@
+/* Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * Shengzhou Liu <Shengzhou.Liu@freescale.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <phy.h>
+#include <fm_eth.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_serdes.h>
+
+u32 port_to_devdisr[] = {
+       [FM1_DTSEC1] = FSL_CORENET_DEVDISR2_DTSEC1_1,
+       [FM1_DTSEC2] = FSL_CORENET_DEVDISR2_DTSEC1_2,
+       [FM1_DTSEC3] = FSL_CORENET_DEVDISR2_DTSEC1_3,
+       [FM1_DTSEC4] = FSL_CORENET_DEVDISR2_DTSEC1_4,
+       [FM1_10GEC1] = FSL_CORENET_DEVDISR2_10GEC1_1, /* MAC1 */
+};
+
+static int is_device_disabled(enum fm_port port)
+{
+       ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 devdisr2 = in_be32(&gur->devdisr2);
+
+       return port_to_devdisr[port] & devdisr2;
+}
+
+void fman_disable_port(enum fm_port port)
+{
+       ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+
+       setbits_be32(&gur->devdisr2, port_to_devdisr[port]);
+}
+
+phy_interface_t fman_port_enet_if(enum fm_port port)
+{
+       ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 rcwsr13 = in_be32(&gur->rcwsr[13]);
+
+       if (is_device_disabled(port))
+               return PHY_INTERFACE_MODE_NONE;
+
+       if ((port == FM1_10GEC1) && (is_serdes_configured(XFI_FM1_MAC1)))
+               return PHY_INTERFACE_MODE_XGMII;
+
+       if ((port == FM1_DTSEC3) && ((rcwsr13 & FSL_CORENET_RCWSR13_EC2) ==
+               FSL_CORENET_RCWSR13_EC2_RGMII) &&
+                                       (!is_serdes_configured(QSGMII_FM1_A)))
+               return PHY_INTERFACE_MODE_RGMII;
+
+       if ((port == FM1_DTSEC4) && ((rcwsr13 & FSL_CORENET_RCWSR13_EC1) ==
+               FSL_CORENET_RCWSR13_EC1_RGMII) &&
+                                       (!is_serdes_configured(QSGMII_FM1_A)))
+               return PHY_INTERFACE_MODE_RGMII;
+
+       /* handle SGMII */
+       switch (port) {
+       case FM1_DTSEC1:
+       case FM1_DTSEC2:
+       case FM1_DTSEC3:
+               if (is_serdes_configured(SGMII_FM1_DTSEC1 + port - FM1_DTSEC1))
+                       return PHY_INTERFACE_MODE_SGMII;
+               else if (is_serdes_configured(SGMII_2500_FM1_DTSEC1
+                        + port - FM1_DTSEC1))
+                       return PHY_INTERFACE_MODE_SGMII_2500;
+               break;
+       default:
+               break;
+       }
+
+       /* handle QSGMII */
+       switch (port) {
+       case FM1_DTSEC1:
+       case FM1_DTSEC2:
+       case FM1_DTSEC3:
+       case FM1_DTSEC4:
+               /* check lane A on SerDes1 */
+               if (is_serdes_configured(QSGMII_FM1_A))
+                       return PHY_INTERFACE_MODE_QSGMII;
+               break;
+       default:
+               break;
+       }
+
+       return PHY_INTERFACE_MODE_NONE;
+}
index 4cce46d7f85014a510db7f8007a5539958f3db0a..d2a097e0e55d0facd9ed1e1e290f27cc60a4cb09 100644 (file)
@@ -25,8 +25,6 @@ phy_interface_t fman_port_enet_if(enum fm_port port)
                else if ((rcwsr13 & FSL_CORENET_RCWSR13_EC1) ==
                                FSL_CORENET_RCWSR13_EC1_FM1_DTSEC4_MII)
                        return PHY_INTERFACE_MODE_MII;
-               else
-                       return PHY_INTERFACE_MODE_NONE;
        }
 
        if ((port == FM1_DTSEC4) &&
@@ -38,8 +36,6 @@ phy_interface_t fman_port_enet_if(enum fm_port port)
                else if ((rcwsr13 & FSL_CORENET_RCWSR13_EC1) ==
                                FSL_CORENET_RCWSR13_EC1_FM1_DTSEC4_MII)
                        return PHY_INTERFACE_MODE_MII;
-               else
-                       return PHY_INTERFACE_MODE_NONE;
        }
 
        if (port == FM1_DTSEC5) {
index c8681d02234b3b7d692d57c416328d83ce72790e..bedab1d606863494956c99eaca130b3357f57677 100644 (file)
@@ -315,7 +315,7 @@ int mac_sl_config(u_int16_t port, struct mac_sl_cfg *cfg)
        writel(cfg->max_rx_len, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_MAXLEN);
        writel(cfg->ctl, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_CTL);
 
-#ifdef CONFIG_K2E_EVM
+#if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
        /* Map RX packet flow priority to 0 */
        writel(0, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RX_PRI_MAP);
 #endif
@@ -400,6 +400,9 @@ static int keystone2_eth_open(struct eth_device *dev, bd_t *bis)
 
        keystone2_net_serdes_setup();
 
+       if (sys_has_mdio)
+               keystone2_mdio_reset(mdio_bus);
+
        keystone_sgmii_config(phy_dev, eth_priv->slave_port - 1,
                              eth_priv->sgmii_link_type);
 
@@ -582,7 +585,7 @@ static void keystone2_net_serdes_setup(void)
                        &ks2_serdes_sgmii_156p25mhz,
                        CONFIG_KSNET_SERDES_LANES_PER_SGMII);
 
-#ifdef CONFIG_SOC_K2E
+#if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
        ks2_serdes_init(CONFIG_KSNET_SERDES_SGMII2_BASE,
                        &ks2_serdes_sgmii_156p25mhz,
                        CONFIG_KSNET_SERDES_LANES_PER_SGMII);
index 375c8a4454a77c3af61321a55a2fa1f2098a9cbb..9c2ff487a709f57eae7caa6df51a8dce7292f2cd 100644 (file)
@@ -525,6 +525,7 @@ static int macb_phy_init(struct macb_device *macb)
        return 1;
 }
 
+static int macb_write_hwaddr(struct eth_device *dev);
 static int macb_init(struct eth_device *netdev, bd_t *bd)
 {
        struct macb_device *macb = to_macb(netdev);
@@ -565,7 +566,13 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
        macb_writel(macb, TBQP, macb->tx_ring_dma);
 
        if (macb_is_gem(macb)) {
-#ifdef CONFIG_RGMII
+               /*
+                * When the GMAC IP with GE feature, this bit is used to
+                * select interface between RGMII and GMII.
+                * When the GMAC IP without GE feature, this bit is used
+                * to select interface between RMII and MII.
+                */
+#if defined(CONFIG_RGMII) || defined(CONFIG_RMII)
                gem_writel(macb, UR, GEM_BIT(RGMII));
 #else
                gem_writel(macb, UR, 0);
@@ -587,6 +594,14 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
 #endif /* CONFIG_RMII */
        }
 
+       /* update the ethaddr */
+       if (is_valid_ether_addr(netdev->enetaddr)) {
+               macb_write_hwaddr(netdev);
+       } else {
+               printf("%s: mac address is not valid\n", netdev->name);
+               return -1;
+       }
+
        if (!macb_phy_init(macb))
                return -1;
 
index 1093ba59dac1e4d4ffd7228573315e88814224a7..d9d6f4f28b932ca0c8664867a3e7155c20d42af6 100644 (file)
@@ -476,11 +476,6 @@ static int mpc5xxx_fec_init_phy(struct eth_device *dev, bd_t * bis)
                miiphy_write(dev->name, phyAddr, 0x0, 0x8000);
                udelay(1000);
 
-#if defined(CONFIG_UC101) || defined(CONFIG_MUCMC52)
-               /* Set the LED configuration Register for the UC101
-                  and MUCMC52 Board */
-               miiphy_write(dev->name, phyAddr, 0x14, 0x4122);
-#endif
                if (fec->xcv_type == MII10) {
                        /*
                         * Force 10Base-T, FDX operation
index 623f7492c753652a8f0736658965756bd2e82438..677c89f0486f2a19f334db02b45a58a443b3e2da 100644 (file)
@@ -256,7 +256,7 @@ static void nc_puts(struct stdio_dev *dev, const char *s)
 
        len = strlen(s);
        while (len) {
-               int send_len = min(len, sizeof(input_buffer));
+               int send_len = min(len, (int)sizeof(input_buffer));
                nc_send_packet(s, send_len);
                len -= send_len;
                s += send_len;
index 9556536b77be8d31fa150a8875bd88d787a447af..f46bf00abe459bc726eaca97b963c7dc84ec3107 100644 (file)
@@ -13,6 +13,7 @@ obj-$(CONFIG_PHYLIB) += phy.o
 obj-$(CONFIG_PHYLIB_10G) += generic_10g.o
 obj-$(CONFIG_PHY_ATHEROS) += atheros.o
 obj-$(CONFIG_PHY_BROADCOM) += broadcom.o
+obj-$(CONFIG_PHY_CORTINA) += cortina.o
 obj-$(CONFIG_PHY_DAVICOM) += davicom.o
 obj-$(CONFIG_PHY_ET1011C) += et1011c.o
 obj-$(CONFIG_PHY_LXT) += lxt.o
diff --git a/drivers/net/phy/cortina.c b/drivers/net/phy/cortina.c
new file mode 100644 (file)
index 0000000..254f056
--- /dev/null
@@ -0,0 +1,333 @@
+/*
+ * Cortina CS4315/CS4340 10G PHY drivers
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ *
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ */
+
+#include <config.h>
+#include <common.h>
+#include <malloc.h>
+#include <linux/ctype.h>
+#include <linux/string.h>
+#include <linux/err.h>
+#include <phy.h>
+#include <cortina.h>
+#ifdef CONFIG_SYS_CORTINA_FW_IN_NAND
+#include <nand.h>
+#elif defined(CONFIG_SYS_CORTINA_FW_IN_SPIFLASH)
+#include <spi_flash.h>
+#elif defined(CONFIG_SYS_CORTINA_FW_IN_MMC)
+#include <mmc.h>
+#endif
+
+#ifndef CONFIG_PHYLIB_10G
+#error The Cortina PHY needs 10G support
+#endif
+
+struct cortina_reg_config cortina_reg_cfg[] = {
+       /* CS4315_enable_sr_mode */
+       {VILLA_GLOBAL_MSEQCLKCTRL, 0x8004},
+       {VILLA_MSEQ_OPTIONS, 0xf},
+       {VILLA_MSEQ_PC, 0x0},
+       {VILLA_MSEQ_BANKSELECT,    0x4},
+       {VILLA_LINE_SDS_COMMON_SRX0_RX_CPA, 0x55},
+       {VILLA_LINE_SDS_COMMON_SRX0_RX_LOOP_FILTER, 0x30},
+       {VILLA_DSP_SDS_SERDES_SRX_DFE0_SELECT, 0x1},
+       {VILLA_DSP_SDS_DSP_COEF_DFE0_SELECT, 0x2},
+       {VILLA_LINE_SDS_COMMON_SRX0_RX_CPB, 0x2003},
+       {VILLA_DSP_SDS_SERDES_SRX_FFE_DELAY_CTRL, 0xF047},
+       {VILLA_MSEQ_ENABLE_MSB, 0x0000},
+       {VILLA_MSEQ_SPARE21_LSB, 0x6},
+       {VILLA_MSEQ_RESET_COUNT_LSB, 0x0},
+       {VILLA_MSEQ_SPARE12_MSB, 0x0000},
+       /*
+        * to invert the receiver path, uncomment the next line
+        * write (VILLA_MSEQ_SPARE12_MSB, 0x4000)
+        *
+        * SPARE2_LSB is used to configure the device while in sr mode to
+        * enable power savings and to use the optical module LOS signal.
+        * in power savings mode, the internal prbs checker can not be used.
+        * if the optical module LOS signal is used as an input to the micro
+        * code, then the micro code will wait until the optical module
+        * LOS = 0 before turning on the adaptive equalizer.
+        * Setting SPARE2_LSB bit 0 to 1 places the devie in power savings mode
+        * while setting bit 0 to 0 disables power savings mode.
+        * Setting SPARE2_LSB bit 2 to 0 configures the device to use the
+        * optical module LOS signal while setting bit 2 to 1 configures the
+        * device so that it will ignore the optical module LOS SPARE2_LSB = 0
+        */
+
+       /* enable power savings, ignore optical module LOS */
+       {VILLA_MSEQ_SPARE2_LSB, 0x5},
+
+       {VILLA_MSEQ_SPARE7_LSB, 0x1e},
+       {VILLA_MSEQ_BANKSELECT, 0x4},
+       {VILLA_MSEQ_SPARE9_LSB, 0x2},
+       {VILLA_MSEQ_SPARE3_LSB, 0x0F53},
+       {VILLA_MSEQ_SPARE3_MSB, 0x2006},
+       {VILLA_MSEQ_SPARE8_LSB, 0x3FF7},
+       {VILLA_MSEQ_SPARE8_MSB, 0x0A46},
+       {VILLA_MSEQ_COEF8_FFE0_LSB, 0xD500},
+       {VILLA_MSEQ_COEF8_FFE1_LSB, 0x0200},
+       {VILLA_MSEQ_COEF8_FFE2_LSB, 0xBA00},
+       {VILLA_MSEQ_COEF8_FFE3_LSB, 0x0100},
+       {VILLA_MSEQ_COEF8_FFE4_LSB, 0x0300},
+       {VILLA_MSEQ_COEF8_FFE5_LSB, 0x0300},
+       {VILLA_MSEQ_COEF8_DFE0_LSB, 0x0700},
+       {VILLA_MSEQ_COEF8_DFE0N_LSB, 0x0E00},
+       {VILLA_MSEQ_COEF8_DFE1_LSB, 0x0B00},
+       {VILLA_DSP_SDS_DSP_COEF_LARGE_LEAK, 0x2},
+       {VILLA_DSP_SDS_SERDES_SRX_DAC_ENABLEB_LSB, 0xD000},
+       {VILLA_MSEQ_POWER_DOWN_LSB, 0xFFFF},
+       {VILLA_MSEQ_POWER_DOWN_MSB, 0x0},
+       {VILLA_MSEQ_CAL_RX_SLICER, 0x80},
+       {VILLA_DSP_SDS_SERDES_SRX_DAC_BIAS_SELECT1_MSB, 0x3f},
+       {VILLA_GLOBAL_MSEQCLKCTRL, 0x4},
+       {VILLA_MSEQ_OPTIONS, 0x7},
+
+       /* set up min value for ffe1 */
+       {VILLA_MSEQ_COEF_INIT_SEL, 0x2},
+       {VILLA_DSP_SDS_DSP_PRECODEDINITFFE21, 0x41},
+
+       /* CS4315_sr_rx_pre_eq_set_4in */
+       {VILLA_GLOBAL_MSEQCLKCTRL, 0x8004},
+       {VILLA_MSEQ_OPTIONS, 0xf},
+       {VILLA_MSEQ_BANKSELECT, 0x4},
+       {VILLA_MSEQ_PC, 0x0},
+
+       /* for lengths from 3.5 to 4.5inches */
+       {VILLA_MSEQ_SERDES_PARAM_LSB, 0x0306},
+       {VILLA_MSEQ_SPARE25_LSB, 0x0306},
+       {VILLA_MSEQ_SPARE21_LSB, 0x2},
+       {VILLA_MSEQ_SPARE23_LSB, 0x2},
+       {VILLA_MSEQ_CAL_RX_DFE_EQ, 0x0},
+
+       {VILLA_GLOBAL_MSEQCLKCTRL, 0x4},
+       {VILLA_MSEQ_OPTIONS, 0x7},
+
+       /* CS4315_rx_drive_4inch */
+       /* for length  4inches */
+       {VILLA_GLOBAL_VILLA2_COMPATIBLE, 0x0000},
+       {VILLA_HOST_SDS_COMMON_STX0_TX_OUTPUT_CTRLA, 0x3023},
+       {VILLA_LINE_SDS_COMMON_STX0_TX_OUTPUT_CTRLB, 0xc01E},
+
+       /* CS4315_tx_drive_4inch */
+       /* for length  4inches */
+       {VILLA_GLOBAL_VILLA2_COMPATIBLE, 0x0000},
+       {VILLA_LINE_SDS_COMMON_STX0_TX_OUTPUT_CTRLA, 0x3023},
+       {VILLA_LINE_SDS_COMMON_STX0_TX_OUTPUT_CTRLB, 0xc01E},
+};
+
+void cs4340_upload_firmware(struct phy_device *phydev)
+{
+       char line_temp[0x50] = {0};
+       char reg_addr[0x50] = {0};
+       char reg_data[0x50] = {0};
+       int i, line_cnt = 0, column_cnt = 0;
+       struct cortina_reg_config fw_temp;
+       char *addr = NULL;
+
+#if defined(CONFIG_SYS_CORTINA_FW_IN_NOR) || \
+       defined(CONFIG_SYS_CORTINA_FW_IN_REMOTE)
+
+       addr = (char *)CONFIG_CORTINA_FW_ADDR;
+#elif defined(CONFIG_SYS_CORTINA_FW_IN_NAND)
+       int ret;
+       size_t fw_length = CONFIG_CORTINA_FW_LENGTH;
+
+       addr = malloc(CONFIG_CORTINA_FW_LENGTH);
+       ret = nand_read(&nand_info[0], (loff_t)CONFIG_CORTINA_FW_ADDR,
+                      &fw_length, (u_char *)addr);
+       if (ret == -EUCLEAN) {
+               printf("NAND read of Cortina firmware at 0x%x failed %d\n",
+                      CONFIG_CORTINA_FW_ADDR, ret);
+       }
+#elif defined(CONFIG_SYS_CORTINA_FW_IN_SPIFLASH)
+       int ret;
+       struct spi_flash *ucode_flash;
+
+       addr = malloc(CONFIG_CORTINA_FW_LENGTH);
+       ucode_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
+                               CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
+       if (!ucode_flash) {
+               puts("SF: probe for Cortina ucode failed\n");
+       } else {
+               ret = spi_flash_read(ucode_flash, CONFIG_CORTINA_FW_ADDR,
+                                    CONFIG_CORTINA_FW_LENGTH, addr);
+               if (ret)
+                       puts("SF: read for Cortina ucode failed\n");
+               spi_flash_free(ucode_flash);
+       }
+#elif defined(CONFIG_SYS_CORTINA_FW_IN_MMC)
+       int dev = CONFIG_SYS_MMC_ENV_DEV;
+       u32 cnt = CONFIG_CORTINA_FW_LENGTH / 512;
+       u32 blk = CONFIG_CORTINA_FW_ADDR / 512;
+       struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
+
+       if (!mmc) {
+               puts("Failed to find MMC device for Cortina ucode\n");
+       } else {
+               addr = malloc(CONFIG_CORTINA_FW_LENGTH);
+               printf("MMC read: dev # %u, block # %u, count %u ...\n",
+                      dev, blk, cnt);
+               mmc_init(mmc);
+               (void)mmc->block_dev.block_read(dev, blk, cnt, addr);
+               /* flush cache after read */
+               flush_cache((ulong)addr, cnt * 512);
+       }
+#endif
+
+       while (*addr != 'Q') {
+               i = 0;
+
+               while (*addr != 0x0a) {
+                       line_temp[i++] = *addr++;
+                       if (0x50 < i) {
+                               printf("Not found Cortina PHY ucode at 0x%x\n",
+                                      CONFIG_CORTINA_FW_ADDR);
+                               return;
+                       }
+               }
+
+               addr++;  /* skip '\n' */
+               line_cnt++;
+               column_cnt = i;
+               line_temp[column_cnt] = '\0';
+
+               if (CONFIG_CORTINA_FW_LENGTH < line_cnt)
+                       return;
+
+               for (i = 0; i < column_cnt; i++) {
+                       if (isspace(line_temp[i++]))
+                               break;
+               }
+
+               memcpy(reg_addr, line_temp, i);
+               memcpy(reg_data, &line_temp[i], column_cnt - i);
+               strim(reg_addr);
+               strim(reg_data);
+               fw_temp.reg_addr = (simple_strtoul(reg_addr, NULL, 0)) & 0xffff;
+               fw_temp.reg_value = (simple_strtoul(reg_data, NULL, 0)) &
+                                    0xffff;
+               phy_write(phydev, 0x00, fw_temp.reg_addr, fw_temp.reg_value);
+       }
+}
+
+int cs4340_phy_init(struct phy_device *phydev)
+{
+       int timeout = 100;  /* 100ms */
+       int reg_value;
+
+       /* step1: BIST test */
+       phy_write(phydev, 0x00, VILLA_GLOBAL_MSEQCLKCTRL,     0x0004);
+       phy_write(phydev, 0x00, VILLA_GLOBAL_LINE_SOFT_RESET, 0x0000);
+       phy_write(phydev, 0x00, VILLA_GLOBAL_BIST_CONTROL,    0x0001);
+       while (--timeout) {
+               reg_value = phy_read(phydev, 0x00, VILLA_GLOBAL_BIST_STATUS);
+               if (reg_value & mseq_edc_bist_done) {
+                       if (0 == (reg_value & mseq_edc_bist_fail))
+                               break;
+               }
+               udelay(1000);
+       }
+
+       if (!timeout) {
+               printf("%s BIST mseq_edc_bist_done timeout!\n", __func__);
+               return -1;
+       }
+
+       /* setp2: upload ucode */
+       cs4340_upload_firmware(phydev);
+       reg_value = phy_read(phydev, 0x00, VILLA_GLOBAL_DWNLD_CHECKSUM_STATUS);
+       if (reg_value) {
+               debug("%s checksum status failed.\n", __func__);
+               return -1;
+       }
+
+       return 0;
+}
+
+int cs4340_config(struct phy_device *phydev)
+{
+       cs4340_phy_init(phydev);
+       return 0;
+}
+
+int cs4340_startup(struct phy_device *phydev)
+{
+       phydev->link = 1;
+
+       /* For now just lie and say it's 10G all the time */
+       phydev->speed = SPEED_10000;
+       phydev->duplex = DUPLEX_FULL;
+       return 0;
+}
+
+struct phy_driver cs4340_driver = {
+       .name = "Cortina CS4315/CS4340",
+       .uid = PHY_UID_CS4340,
+       .mask = 0xfffffff0,
+       .features = PHY_10G_FEATURES,
+       .mmds = (MDIO_DEVS_PMAPMD | MDIO_DEVS_PCS |
+                MDIO_DEVS_PHYXS | MDIO_DEVS_AN |
+                MDIO_DEVS_VEND1 | MDIO_DEVS_VEND2),
+       .config = &cs4340_config,
+       .startup = &cs4340_startup,
+       .shutdown = &gen10g_shutdown,
+};
+
+int phy_cortina_init(void)
+{
+       phy_register(&cs4340_driver);
+       return 0;
+}
+
+int get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id)
+{
+       int phy_reg;
+       bool is_cortina_phy = false;
+
+       switch (addr) {
+#ifdef CORTINA_PHY_ADDR1
+       case CORTINA_PHY_ADDR1:
+#endif
+#ifdef CORTINA_PHY_ADDR2
+       case CORTINA_PHY_ADDR2:
+#endif
+#ifdef CORTINA_PHY_ADDR3
+       case CORTINA_PHY_ADDR3:
+#endif
+#ifdef CORTINA_PHY_ADDR4
+       case CORTINA_PHY_ADDR4:
+#endif
+               is_cortina_phy = true;
+               break;
+       default:
+               break;
+       }
+
+       /* Cortina PHY has non-standard offset of PHY ID registers */
+       if (is_cortina_phy)
+               phy_reg = bus->read(bus, addr, 0, VILLA_GLOBAL_CHIP_ID_LSB);
+       else
+               phy_reg = bus->read(bus, addr, devad, MII_PHYSID1);
+
+       if (phy_reg < 0)
+               return -EIO;
+
+       *phy_id = (phy_reg & 0xffff) << 16;
+       if (is_cortina_phy)
+               phy_reg = bus->read(bus, addr, 0, VILLA_GLOBAL_CHIP_ID_MSB);
+       else
+               phy_reg = bus->read(bus, addr, devad, MII_PHYSID2);
+
+       if (phy_reg < 0)
+               return -EIO;
+
+       *phy_id |= (phy_reg & 0xffff);
+
+       return 0;
+}
index d2ecadc8905862dc75999381ae7fec66bc7daa78..9437c3bbccd3bdc1695441673c289cc975445751 100644 (file)
@@ -276,6 +276,57 @@ static int m88e1111s_config(struct phy_device *phydev)
        return 0;
 }
 
+/**
+ * m88e1518_phy_writebits - write bits to a register
+ */
+void m88e1518_phy_writebits(struct phy_device *phydev,
+                  u8 reg_num, u16 offset, u16 len, u16 data)
+{
+       u16 reg, mask;
+
+       if ((len + offset) >= 16)
+               mask = 0 - (1 << offset);
+       else
+               mask = (1 << (len + offset)) - (1 << offset);
+
+       reg = phy_read(phydev, MDIO_DEVAD_NONE, reg_num);
+
+       reg &= ~mask;
+       reg |= data << offset;
+
+       phy_write(phydev, MDIO_DEVAD_NONE, reg_num, reg);
+}
+
+static int m88e1518_config(struct phy_device *phydev)
+{
+       /*
+        * As per Marvell Release Notes - Alaska 88E1510/88E1518/88E1512
+        * /88E1514 Rev A0, Errata Section 3.1
+        */
+       if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {
+               phy_write(phydev, MDIO_DEVAD_NONE, 22, 0x00ff); /* page 0xff */
+               phy_write(phydev, MDIO_DEVAD_NONE, 17, 0x214B);
+               phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2144);
+               phy_write(phydev, MDIO_DEVAD_NONE, 17, 0x0C28);
+               phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2146);
+               phy_write(phydev, MDIO_DEVAD_NONE, 17, 0xB233);
+               phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x214D);
+               phy_write(phydev, MDIO_DEVAD_NONE, 17, 0xCC0C);
+               phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2159);
+               phy_write(phydev, MDIO_DEVAD_NONE, 22, 0x0000); /* reg page 0 */
+               phy_write(phydev, MDIO_DEVAD_NONE, 22, 18);    /* reg page 18 */
+               /* Write HWCFG_MODE = SGMII to Copper */
+               m88e1518_phy_writebits(phydev, 20, 0, 3, 1);
+
+               /* Phy reset */
+               m88e1518_phy_writebits(phydev, 20, 15, 1, 1);
+               phy_write(phydev, MDIO_DEVAD_NONE, 22, 0);     /* reg page 18 */
+               udelay(100);
+       }
+
+       return m88e1111s_config(phydev);
+}
+
 /* Marvell 88E1118 */
 static int m88e1118_config(struct phy_device *phydev)
 {
@@ -493,7 +544,7 @@ static struct phy_driver M88E1518_driver = {
        .uid = 0x1410dd1,
        .mask = 0xffffff0,
        .features = PHY_GBIT_FEATURES,
-       .config = &m88e1111s_config,
+       .config = &m88e1518_config,
        .startup = &m88e1011s_startup,
        .shutdown = &genphy_shutdown,
 };
index 467c97224313328e2aa7e2f04edabc15def84792..5b04c85939040c27b832194a32f171686d6b88f6 100644 (file)
@@ -448,6 +448,9 @@ int phy_init(void)
 #ifdef CONFIG_PHY_BROADCOM
        phy_broadcom_init();
 #endif
+#ifdef CONFIG_PHY_CORTINA
+       phy_cortina_init();
+#endif
 #ifdef CONFIG_PHY_DAVICOM
        phy_davicom_init();
 #endif
index 2b29cd89f84d179c08de40620eccdd01d94bb250..20a67466a7c36db297d563531e41b5e465b36f8d 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Vitesse PHY drivers
  *
- * Copyright 2010-2012 Freescale Semiconductor, Inc.
- * Author: Andy Fleming
+ * Copyright 2010-2014 Freescale Semiconductor, Inc.
+ * Original Author: Andy Fleming
  * Add vsc8662 phy support - Priyanka Jain
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -50,6 +50,7 @@
 #define MIIM_VSC8574_18G_CMDSTAT       0x8000
 
 /* Vitesse VSC8514 control register */
+#define MIIM_VSC8514_MAC_SERDES_CON     0x10
 #define MIIM_VSC8514_GENERAL18         0x12
 #define MIIM_VSC8514_GENERAL19         0x13
 #define MIIM_VSC8514_GENERAL23         0x17
@@ -246,6 +247,14 @@ static int vsc8514_config(struct phy_device *phydev)
        val = (val & 0xf8ff);
        phy_write(phydev, MDIO_DEVAD_NONE, MIIM_VSC8514_GENERAL23, val);
 
+       /* Enable Serdes Auto-negotiation */
+       phy_write(phydev, MDIO_DEVAD_NONE, PHY_EXT_PAGE_ACCESS,
+                 PHY_EXT_PAGE_ACCESS_EXTENDED3);
+       val = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_VSC8514_MAC_SERDES_CON);
+       val = val | MIIM_VSC8574_MAC_SERDES_ANEG;
+       phy_write(phydev, MDIO_DEVAD_NONE, MIIM_VSC8514_MAC_SERDES_CON, val);
+       phy_write(phydev, MDIO_DEVAD_NONE, PHY_EXT_PAGE_ACCESS, 0);
+
        genphy_config_aneg(phydev);
 
        return 0;
index c3ce17516c7407b0f189084bda4cbecb515122ac..cea6701203815e05f37d46040b3fb76d18bed5bf 100644 (file)
@@ -41,6 +41,7 @@
  * Modified to use le32_to_cpu and cpu_to_le32 properly
  */
 #include <common.h>
+#include <errno.h>
 #include <malloc.h>
 #include <net.h>
 #include <netdev.h>
@@ -79,7 +80,11 @@ static int media[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 };
 #define InterFrameGap  0x03    /* 3 means InterFrameGap = the shortest one */
 
 #define NUM_TX_DESC    1       /* Number of Tx descriptor registers */
-#define NUM_RX_DESC    4       /* Number of Rx descriptor registers */
+#ifdef CONFIG_SYS_RX_ETH_BUFFER
+  #define NUM_RX_DESC  CONFIG_SYS_RX_ETH_BUFFER
+#else
+  #define NUM_RX_DESC  4       /* Number of Rx descriptor registers */
+#endif
 #define RX_BUF_SIZE    1536    /* Rx Buffer size */
 #define RX_BUF_LEN     8192
 
@@ -248,6 +253,7 @@ static struct {
        {"RTL-8168b/8111sb",    0x38, 0xff7e1880,},
        {"RTL-8168d/8111d",     0x28, 0xff7e1880,},
        {"RTL-8168evl/8111evl", 0x2e, 0xff7e1880,},
+       {"RTL-8168/8111g",      0x4c, 0xff7e1880,},
        {"RTL-8101e",           0x34, 0xff7e1880,},
        {"RTL-8100e",           0x32, 0xff7e1880,},
 };
@@ -273,23 +279,40 @@ struct RxDesc {
        u32 buf_Haddr;
 };
 
-/* Define the TX Descriptor */
-static u8 tx_ring[NUM_TX_DESC * sizeof(struct TxDesc) + 256];
-/*     __attribute__ ((aligned(256))); */
+#define RTL8169_DESC_SIZE 16
 
-/* Create a static buffer of size RX_BUF_SZ for each
-TX Descriptor. All descriptors point to a
-part of this buffer */
-static unsigned char txb[NUM_TX_DESC * RX_BUF_SIZE];
+#if ARCH_DMA_MINALIGN > 256
+#  define RTL8169_ALIGN ARCH_DMA_MINALIGN
+#else
+#  define RTL8169_ALIGN 256
+#endif
 
-/* Define the RX Descriptor */
-static u8 rx_ring[NUM_RX_DESC * sizeof(struct TxDesc) + 256];
-  /*  __attribute__ ((aligned(256))); */
+/*
+ * Warn if the cache-line size is larger than the descriptor size. In such
+ * cases the driver will likely fail because the CPU needs to flush the cache
+ * when requeuing RX buffers, therefore descriptors written by the hardware
+ * may be discarded.
+ *
+ * This can be fixed by defining CONFIG_SYS_NONCACHED_MEMORY which will cause
+ * the driver to allocate descriptors from a pool of non-cached memory.
+ */
+#if RTL8169_DESC_SIZE < ARCH_DMA_MINALIGN
+#if !defined(CONFIG_SYS_NONCACHED_MEMORY) && !defined(CONFIG_SYS_DCACHE_OFF)
+#warning cache-line size is larger than descriptor size
+#endif
+#endif
 
-/* Create a static buffer of size RX_BUF_SZ for each
-RX Descriptor  All descriptors point to a
-part of this buffer */
-static unsigned char rxb[NUM_RX_DESC * RX_BUF_SIZE];
+/*
+ * Create a static buffer of size RX_BUF_SZ for each TX Descriptor. All
+ * descriptors point to a part of this buffer.
+ */
+DEFINE_ALIGN_BUFFER(u8, txb, NUM_TX_DESC * RX_BUF_SIZE, RTL8169_ALIGN);
+
+/*
+ * Create a static buffer of size RX_BUF_SZ for each RX Descriptor. All
+ * descriptors point to a part of this buffer.
+ */
+DEFINE_ALIGN_BUFFER(u8, rxb, NUM_RX_DESC * RX_BUF_SIZE, RTL8169_ALIGN);
 
 struct rtl8169_private {
        void *mmio_addr;        /* memory map physical address */
@@ -297,8 +320,6 @@ struct rtl8169_private {
        unsigned long cur_rx;   /* Index into the Rx descriptor buffer of next Rx pkt. */
        unsigned long cur_tx;   /* Index into the Tx descriptor buffer of next Rx pkt. */
        unsigned long dirty_tx;
-       unsigned char *TxDescArrays;    /* Index of Tx Descriptor buffer */
-       unsigned char *RxDescArrays;    /* Index of Rx Descriptor buffer */
        struct TxDesc *TxDescArray;     /* Index of 256-alignment Tx Descriptor buffer */
        struct RxDesc *RxDescArray;     /* Index of 256-alignment Rx Descriptor buffer */
        unsigned char *RxBufferRings;   /* Index of Rx Buffer  */
@@ -397,6 +418,35 @@ match:
        return 0;
 }
 
+/*
+ * TX and RX descriptors are 16 bytes. This causes problems with the cache
+ * maintenance on CPUs where the cache-line size exceeds the size of these
+ * descriptors. What will happen is that when the driver receives a packet
+ * it will be immediately requeued for the hardware to reuse. The CPU will
+ * therefore need to flush the cache-line containing the descriptor, which
+ * will cause all other descriptors in the same cache-line to be flushed
+ * along with it. If one of those descriptors had been written to by the
+ * device those changes (and the associated packet) will be lost.
+ *
+ * To work around this, we make use of non-cached memory if available. If
+ * descriptors are mapped uncached there's no need to manually flush them
+ * or invalidate them.
+ *
+ * Note that this only applies to descriptors. The packet data buffers do
+ * not have the same constraints since they are 1536 bytes large, so they
+ * are unlikely to share cache-lines.
+ */
+static void *rtl_alloc_descs(unsigned int num)
+{
+       size_t size = num * RTL8169_DESC_SIZE;
+
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+       return (void *)noncached_alloc(size, RTL8169_ALIGN);
+#else
+       return memalign(RTL8169_ALIGN, size);
+#endif
+}
+
 /*
  * Cache maintenance functions. These are simple wrappers around the more
  * general purpose flush_cache() and invalidate_dcache_range() functions.
@@ -404,28 +454,36 @@ match:
 
 static void rtl_inval_rx_desc(struct RxDesc *desc)
 {
+#ifndef CONFIG_SYS_NONCACHED_MEMORY
        unsigned long start = (unsigned long)desc & ~(ARCH_DMA_MINALIGN - 1);
        unsigned long end = ALIGN(start + sizeof(*desc), ARCH_DMA_MINALIGN);
 
        invalidate_dcache_range(start, end);
+#endif
 }
 
 static void rtl_flush_rx_desc(struct RxDesc *desc)
 {
+#ifndef CONFIG_SYS_NONCACHED_MEMORY
        flush_cache((unsigned long)desc, sizeof(*desc));
+#endif
 }
 
 static void rtl_inval_tx_desc(struct TxDesc *desc)
 {
+#ifndef CONFIG_SYS_NONCACHED_MEMORY
        unsigned long start = (unsigned long)desc & ~(ARCH_DMA_MINALIGN - 1);
        unsigned long end = ALIGN(start + sizeof(*desc), ARCH_DMA_MINALIGN);
 
        invalidate_dcache_range(start, end);
+#endif
 }
 
 static void rtl_flush_tx_desc(struct TxDesc *desc)
 {
+#ifndef CONFIG_SYS_NONCACHED_MEMORY
        flush_cache((unsigned long)desc, sizeof(*desc));
+#endif
 }
 
 static void rtl_inval_buffer(void *buf, size_t size)
@@ -707,16 +765,6 @@ static int rtl_reset(struct eth_device *dev, bd_t *bis)
        printf ("%s\n", __FUNCTION__);
 #endif
 
-       tpc->TxDescArrays = tx_ring;
-       /* Tx Desscriptor needs 256 bytes alignment; */
-       tpc->TxDescArray = (struct TxDesc *) ((unsigned long)(tpc->TxDescArrays +
-                                                             255) & ~255);
-
-       tpc->RxDescArrays = rx_ring;
-       /* Rx Desscriptor needs 256 bytes alignment; */
-       tpc->RxDescArray = (struct RxDesc *) ((unsigned long)(tpc->RxDescArrays +
-                                                             255) & ~255);
-
        rtl8169_init_ring(dev);
        rtl8169_hw_start(dev);
        /* Construct a perfect filter frame with the mac address as first match
@@ -758,10 +806,6 @@ static void rtl_halt(struct eth_device *dev)
 
        RTL_W32(RxMissed, 0);
 
-       tpc->TxDescArrays = NULL;
-       tpc->RxDescArrays = NULL;
-       tpc->TxDescArray = NULL;
-       tpc->RxDescArray = NULL;
        for (i = 0; i < NUM_RX_DESC; i++) {
                tpc->RxBufferRing[i] = NULL;
        }
@@ -906,7 +950,16 @@ static int rtl_init(struct eth_device *dev, bd_t *bis)
 #endif
        }
 
-       return 1;
+
+       tpc->RxDescArray = rtl_alloc_descs(NUM_RX_DESC);
+       if (!tpc->RxDescArray)
+               return -ENOMEM;
+
+       tpc->TxDescArray = rtl_alloc_descs(NUM_TX_DESC);
+       if (!tpc->TxDescArray)
+               return -ENOMEM;
+
+       return 0;
 }
 
 int rtl8169_initialize(bd_t *bis)
@@ -920,6 +973,7 @@ int rtl8169_initialize(bd_t *bis)
        while(1){
                unsigned int region;
                u16 device;
+               int err;
 
                /* Find RTL8169 */
                if ((devno = pci_find_devices(supported, idx++)) < 0)
@@ -958,9 +1012,14 @@ int rtl8169_initialize(bd_t *bis)
                dev->send = rtl_send;
                dev->recv = rtl_recv;
 
-               eth_register (dev);
+               err = rtl_init(dev, bis);
+               if (err < 0) {
+                       printf(pr_fmt("failed to initialize card: %d\n"), err);
+                       free(dev);
+                       continue;
+               }
 
-               rtl_init(dev, bis);
+               eth_register (dev);
 
                card_number++;
        }
index 451c33e1a199ad7ce98ee82b0140116c1e8b5d03..4bf493ed4532688bd5c8f40cd80e04b1cea4bc4e 100644 (file)
@@ -2,9 +2,9 @@
  * sh_eth.c - Driver for Renesas ethernet controler.
  *
  * Copyright (C) 2008, 2011 Renesas Solutions Corp.
- * Copyright (c) 2008, 2011 Nobuhiro Iwamatsu
+ * Copyright (c) 2008, 2011, 2014 2014 Nobuhiro Iwamatsu
  * Copyright (c) 2007 Carlos Munoz <carlos@kenati.com>
- * Copyright (C) 2013  Renesas Electronics Corporation
+ * Copyright (C) 2013, 2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -83,6 +83,8 @@ int sh_eth_send(struct eth_device *dev, void *packet, int len)
        else
                port_info->tx_desc_cur->td0 = TD_TACT | TD_TFP;
 
+       flush_cache_wback(port_info->tx_desc_cur, sizeof(struct tx_desc_s));
+
        /* Restart the transmitter if disabled */
        if (!(sh_eth_read(eth, EDTRR) & EDTRR_TRNS))
                sh_eth_write(eth, EDTRR_TRNS, EDTRR);
@@ -133,6 +135,10 @@ int sh_eth_recv(struct eth_device *dev)
                        port_info->rx_desc_cur->rd0 = RD_RACT | RD_RDLE;
                else
                        port_info->rx_desc_cur->rd0 = RD_RACT;
+
+               flush_cache_wback(port_info->rx_desc_cur,
+                                 sizeof(struct rx_desc_s));
+
                /* Point to the next descriptor */
                port_info->rx_desc_cur++;
                if (port_info->rx_desc_cur >=
@@ -181,27 +187,27 @@ static int sh_eth_reset(struct sh_eth_dev *eth)
 static int sh_eth_tx_desc_init(struct sh_eth_dev *eth)
 {
        int port = eth->port, i, ret = 0;
-       u32 tmp_addr;
+       u32 alloc_desc_size = NUM_TX_DESC * sizeof(struct tx_desc_s);
        struct sh_eth_info *port_info = &eth->port_info[port];
        struct tx_desc_s *cur_tx_desc;
 
        /*
-        * Allocate tx descriptors. They must be TX_DESC_SIZE bytes aligned
+        * Allocate rx descriptors. They must be aligned to size of struct
+        * tx_desc_s.
         */
-       port_info->tx_desc_malloc = malloc(NUM_TX_DESC *
-                                                sizeof(struct tx_desc_s) +
-                                                TX_DESC_SIZE - 1);
-       if (!port_info->tx_desc_malloc) {
-               printf(SHETHER_NAME ": malloc failed\n");
+       port_info->tx_desc_alloc =
+               memalign(sizeof(struct tx_desc_s), alloc_desc_size);
+       if (!port_info->tx_desc_alloc) {
+               printf(SHETHER_NAME ": memalign failed\n");
                ret = -ENOMEM;
                goto err;
        }
 
-       tmp_addr = (u32) (((int)port_info->tx_desc_malloc + TX_DESC_SIZE - 1) &
-                         ~(TX_DESC_SIZE - 1));
-       flush_cache_wback(tmp_addr, NUM_TX_DESC * sizeof(struct tx_desc_s));
+       flush_cache_wback((u32)port_info->tx_desc_alloc, alloc_desc_size);
+
        /* Make sure we use a P2 address (non-cacheable) */
-       port_info->tx_desc_base = (struct tx_desc_s *)ADDR_TO_P2(tmp_addr);
+       port_info->tx_desc_base =
+               (struct tx_desc_s *)ADDR_TO_P2((u32)port_info->tx_desc_alloc);
        port_info->tx_desc_cur = port_info->tx_desc_base;
 
        /* Initialize all descriptors */
@@ -232,47 +238,44 @@ err:
 static int sh_eth_rx_desc_init(struct sh_eth_dev *eth)
 {
        int port = eth->port, i , ret = 0;
+       u32 alloc_desc_size = NUM_RX_DESC * sizeof(struct rx_desc_s);
        struct sh_eth_info *port_info = &eth->port_info[port];
        struct rx_desc_s *cur_rx_desc;
-       u32 tmp_addr;
        u8 *rx_buf;
 
        /*
-        * Allocate rx descriptors. They must be RX_DESC_SIZE bytes aligned
+        * Allocate rx descriptors. They must be aligned to size of struct
+        * rx_desc_s.
         */
-       port_info->rx_desc_malloc = malloc(NUM_RX_DESC *
-                                                sizeof(struct rx_desc_s) +
-                                                RX_DESC_SIZE - 1);
-       if (!port_info->rx_desc_malloc) {
-               printf(SHETHER_NAME ": malloc failed\n");
+       port_info->rx_desc_alloc =
+               memalign(sizeof(struct rx_desc_s), alloc_desc_size);
+       if (!port_info->rx_desc_alloc) {
+               printf(SHETHER_NAME ": memalign failed\n");
                ret = -ENOMEM;
                goto err;
        }
 
-       tmp_addr = (u32) (((int)port_info->rx_desc_malloc + RX_DESC_SIZE - 1) &
-                         ~(RX_DESC_SIZE - 1));
-       flush_cache_wback(tmp_addr, NUM_RX_DESC * sizeof(struct rx_desc_s));
+       flush_cache_wback(port_info->rx_desc_alloc, alloc_desc_size);
+
        /* Make sure we use a P2 address (non-cacheable) */
-       port_info->rx_desc_base = (struct rx_desc_s *)ADDR_TO_P2(tmp_addr);
+       port_info->rx_desc_base =
+               (struct rx_desc_s *)ADDR_TO_P2((u32)port_info->rx_desc_alloc);
 
        port_info->rx_desc_cur = port_info->rx_desc_base;
 
        /*
-        * Allocate rx data buffers. They must be 32 bytes aligned  and in
-        * P2 area
+        * Allocate rx data buffers. They must be RX_BUF_ALIGNE_SIZE bytes
+        * aligned and in P2 area.
         */
-       port_info->rx_buf_malloc = malloc(
-               NUM_RX_DESC * MAX_BUF_SIZE + RX_BUF_ALIGNE_SIZE - 1);
-       if (!port_info->rx_buf_malloc) {
-               printf(SHETHER_NAME ": malloc failed\n");
+       port_info->rx_buf_alloc =
+               memalign(RX_BUF_ALIGNE_SIZE, NUM_RX_DESC * MAX_BUF_SIZE);
+       if (!port_info->rx_buf_alloc) {
+               printf(SHETHER_NAME ": alloc failed\n");
                ret = -ENOMEM;
-               goto err_buf_malloc;
+               goto err_buf_alloc;
        }
 
-       tmp_addr = (u32)(((int)port_info->rx_buf_malloc
-                         + (RX_BUF_ALIGNE_SIZE - 1)) &
-                         ~(RX_BUF_ALIGNE_SIZE - 1));
-       port_info->rx_buf_base = (u8 *)ADDR_TO_P2(tmp_addr);
+       port_info->rx_buf_base = (u8 *)ADDR_TO_P2((u32)port_info->rx_buf_alloc);
 
        /* Initialize all descriptors */
        for (cur_rx_desc = port_info->rx_desc_base,
@@ -297,9 +300,9 @@ static int sh_eth_rx_desc_init(struct sh_eth_dev *eth)
 
        return ret;
 
-err_buf_malloc:
-       free(port_info->rx_desc_malloc);
-       port_info->rx_desc_malloc = NULL;
+err_buf_alloc:
+       free(port_info->rx_desc_alloc);
+       port_info->rx_desc_alloc = NULL;
 
 err:
        return ret;
@@ -310,9 +313,9 @@ static void sh_eth_tx_desc_free(struct sh_eth_dev *eth)
        int port = eth->port;
        struct sh_eth_info *port_info = &eth->port_info[port];
 
-       if (port_info->tx_desc_malloc) {
-               free(port_info->tx_desc_malloc);
-               port_info->tx_desc_malloc = NULL;
+       if (port_info->tx_desc_alloc) {
+               free(port_info->tx_desc_alloc);
+               port_info->tx_desc_alloc = NULL;
        }
 }
 
@@ -321,14 +324,14 @@ static void sh_eth_rx_desc_free(struct sh_eth_dev *eth)
        int port = eth->port;
        struct sh_eth_info *port_info = &eth->port_info[port];
 
-       if (port_info->rx_desc_malloc) {
-               free(port_info->rx_desc_malloc);
-               port_info->rx_desc_malloc = NULL;
+       if (port_info->rx_desc_alloc) {
+               free(port_info->rx_desc_alloc);
+               port_info->rx_desc_alloc = NULL;
        }
 
-       if (port_info->rx_buf_malloc) {
-               free(port_info->rx_buf_malloc);
-               port_info->rx_buf_malloc = NULL;
+       if (port_info->rx_buf_alloc) {
+               free(port_info->rx_buf_alloc);
+               port_info->rx_buf_alloc = NULL;
        }
 }
 
@@ -414,7 +417,7 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
 #if defined(CONFIG_CPU_SH7734) || defined(CONFIG_R8A7740)
        sh_eth_write(eth, CONFIG_SH_ETHER_SH7734_MII, RMII_MII);
 #elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
-       defined(CONFIG_R8A7794)
+       defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
        sh_eth_write(eth, sh_eth_read(eth, RMIIMR) | 0x1, RMIIMR);
 #endif
        /* Configure phy */
@@ -440,7 +443,8 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
 #elif defined(CONFIG_CPU_SH7757) || defined(CONFIG_CPU_SH7752)
                sh_eth_write(eth, 1, RTRATE);
 #elif defined(CONFIG_CPU_SH7724) || defined(CONFIG_R8A7790) || \
-               defined(CONFIG_R8A7791) || defined(CONFIG_R8A7794)
+               defined(CONFIG_R8A7791) || defined(CONFIG_R8A7793) || \
+               defined(CONFIG_R8A7794)
                val = ECMR_RTM;
 #endif
        } else if (phy->speed == 10) {
index e325a39aac04fdecf919cdf8918a40776de2d874..5cb520c63ec76c4d95bf5954cfc606868c9e0244 100644 (file)
@@ -51,8 +51,6 @@
 /* The size of the tx descriptor is determined by how much padding is used.
    4, 20, or 52 bytes of padding can be used */
 #define TX_DESC_PADDING        (CONFIG_SH_ETHER_ALIGNE_SIZE - 12)
-/* same as CONFIG_SH_ETHER_ALIGNE_SIZE */
-#define TX_DESC_SIZE   (12 + TX_DESC_PADDING)
 
 /* Tx descriptor. We always use 3 bytes of padding */
 struct tx_desc_s {
@@ -68,8 +66,6 @@ struct tx_desc_s {
 /* The size of the rx descriptor is determined by how much padding is used.
    4, 20, or 52 bytes of padding can be used */
 #define RX_DESC_PADDING        (CONFIG_SH_ETHER_ALIGNE_SIZE - 12)
-/* same as CONFIG_SH_ETHER_ALIGNE_SIZE */
-#define RX_DESC_SIZE           (12 + RX_DESC_PADDING)
 /* aligned cache line size */
 #define RX_BUF_ALIGNE_SIZE     (CONFIG_SH_ETHER_ALIGNE_SIZE > 32 ? 64 : 32)
 
@@ -82,13 +78,13 @@ struct rx_desc_s {
 };
 
 struct sh_eth_info {
-       struct tx_desc_s *tx_desc_malloc;
+       struct tx_desc_s *tx_desc_alloc;
        struct tx_desc_s *tx_desc_base;
        struct tx_desc_s *tx_desc_cur;
-       struct rx_desc_s *rx_desc_malloc;
+       struct rx_desc_s *rx_desc_alloc;
        struct rx_desc_s *rx_desc_base;
        struct rx_desc_s *rx_desc_cur;
-       u8 *rx_buf_malloc;
+       u8 *rx_buf_alloc;
        u8 *rx_buf_base;
        u8 mac_addr[6];
        u8 phy_addr;
@@ -359,7 +355,7 @@ static const u16 sh_eth_offset_fast_sh4[SH_ETH_MAX_REGISTER_OFFSET] = {
 #define SH_ETH_TYPE_GETHER
 #define BASE_IO_ADDR   0xE9A00000
 #elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
-       defined(CONFIG_R8A7794)
+       defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
 #define SH_ETH_TYPE_ETHER
 #define BASE_IO_ADDR   0xEE700200
 #elif defined(CONFIG_R7S72100)
@@ -571,7 +567,7 @@ enum FELIC_MODE_BIT {
 #ifdef CONFIG_CPU_SH7724
        ECMR_RTM = 0x00000010,
 #elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
-       defined(CONFIG_R8A7794)
+       defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
        ECMR_RTM = 0x00000004,
 #endif
 
index b097c1a56fb157804e7cafdd54eaa8ec04fd73cc..5959672370efb063d9e23c80bb038fd630224b85 100644 (file)
@@ -187,6 +187,7 @@ static int smc911x_send(struct eth_device *dev, void *packet, int length)
 static void smc911x_halt(struct eth_device *dev)
 {
        smc911x_reset(dev);
+       smc911x_handle_mac_address(dev);
 }
 
 static int smc911x_rx(struct eth_device *dev)
index 538f11e3ebaed699ae8443ddbb27ada04e2a5e22..9526faa4affdf08ddaa0b7652dd1e108d032ec17 100644 (file)
@@ -548,7 +548,7 @@ static int uli526x_rx_packet(struct eth_device *dev)
 
        rdes0 = le32_to_cpu(rxptr->rdes0);
 #ifdef RX_DEBUG
-       printf("%s(): rxptr->rdes0=%x:%x\n", __FUNCTION__, rxptr->rdes0);
+       printf("%s(): rxptr->rdes0=%x\n", __FUNCTION__, rxptr->rdes0);
 #endif
        if (!(rdes0 & 0x80000000)) {    /* packet owner check */
                if ((rdes0 & 0x300) != 0x300) {
index e73a4986198372fb94c5bfff51e04d62ba055d28..50b7be53cae82268bb561d1f8fcbba059d29831a 100644 (file)
@@ -6,7 +6,7 @@
 #
 
 obj-$(CONFIG_FSL_PCI_INIT) += fsl_pci_init.o
-obj-$(CONFIG_PCI) += pci.o pci_auto.o
+obj-$(CONFIG_PCI) += pci.o pci_auto.o pci_rom.o
 obj-$(CONFIG_PCI_INDIRECT_BRIDGE) += pci_indirect.o
 obj-$(CONFIG_PCI_GT64120) += pci_gt64120.o
 obj-$(CONFIG_PCI_MSC01) += pci_msc01.o
@@ -15,5 +15,7 @@ obj-$(CONFIG_FTPCI100) += pci_ftpci100.o
 obj-$(CONFIG_SH4_PCI) += pci_sh4.o
 obj-$(CONFIG_SH7751_PCI) +=pci_sh7751.o
 obj-$(CONFIG_SH7780_PCI) +=pci_sh7780.o
+obj-$(CONFIG_PCI_TEGRA) += pci_tegra.o
 obj-$(CONFIG_TSI108_PCI) += tsi108_pci.o
 obj-$(CONFIG_WINBOND_83C553) += w83c553f.o
+obj-$(CONFIG_PCIE_LAYERSCAPE) += pcie_layerscape.o
index 60c333e2c0191d5ef8753075669a7edc3af95532..83fd9a068f3635510c6596dfc45e3debc5c48e42 100644 (file)
@@ -19,6 +19,8 @@
 #include <asm/io.h>
 #include <pci.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define PCI_HOSE_OP(rw, size, type)                                    \
 int pci_hose_##rw##_config_##size(struct pci_controller *hose,         \
                                  pci_dev_t dev,                        \
@@ -123,6 +125,14 @@ void *pci_map_bar(pci_dev_t pdev, int bar, int flags)
 
 static struct pci_controller* hose_head;
 
+struct pci_controller *pci_get_hose_head(void)
+{
+       if (gd->hose)
+               return gd->hose;
+
+       return hose_head;
+}
+
 void pci_register_hose(struct pci_controller* hose)
 {
        struct pci_controller **phose = &hose_head;
@@ -139,7 +149,7 @@ struct pci_controller *pci_bus_to_hose(int bus)
 {
        struct pci_controller *hose;
 
-       for (hose = hose_head; hose; hose = hose->next) {
+       for (hose = pci_get_hose_head(); hose; hose = hose->next) {
                if (bus >= hose->first_busno && bus <= hose->last_busno)
                        return hose;
        }
@@ -152,7 +162,7 @@ struct pci_controller *find_hose_by_cfg_addr(void *cfg_addr)
 {
        struct pci_controller *hose;
 
-       for (hose = hose_head; hose; hose = hose->next) {
+       for (hose = pci_get_hose_head(); hose; hose = hose->next) {
                if (hose->cfg_addr == cfg_addr)
                        return hose;
        }
@@ -162,7 +172,7 @@ struct pci_controller *find_hose_by_cfg_addr(void *cfg_addr)
 
 int pci_last_busno(void)
 {
-       struct pci_controller *hose = hose_head;
+       struct pci_controller *hose = pci_get_hose_head();
 
        if (!hose)
                return -1;
@@ -181,7 +191,7 @@ pci_dev_t pci_find_devices(struct pci_device_id *ids, int index)
        pci_dev_t bdf;
        int i, bus, found_multi = 0;
 
-       for (hose = hose_head; hose; hose = hose->next) {
+       for (hose = pci_get_hose_head(); hose; hose = hose->next) {
 #ifdef CONFIG_SYS_SCSI_SCAN_BUS_REVERSE
                for (bus = hose->last_busno; bus >= hose->first_busno; bus--)
 #else
@@ -195,6 +205,9 @@ pci_dev_t pci_find_devices(struct pci_device_id *ids, int index)
                             bdf < PCI_BDF(bus + 1, 0, 0);
 #endif
                             bdf += PCI_BDF(0, 0, 1)) {
+                               if (pci_skip_dev(hose, bdf))
+                                       continue;
+
                                if (!PCI_FUNC(bdf)) {
                                        pci_read_config_byte(bdf,
                                                             PCI_HEADER_TYPE,
@@ -230,7 +243,7 @@ pci_dev_t pci_find_devices(struct pci_device_id *ids, int index)
 
 pci_dev_t pci_find_device(unsigned int vendor, unsigned int device, int index)
 {
-       static struct pci_device_id ids[2] = {{}, {0, 0}};
+       struct pci_device_id ids[2] = { {}, {0, 0} };
 
        ids[0].vendor = vendor;
        ids[0].device = device;
@@ -363,9 +376,27 @@ phys_addr_t pci_hose_bus_to_phys(struct pci_controller* hose,
        return phys_addr;
 }
 
-/*
- *
- */
+void pci_write_bar32(struct pci_controller *hose, pci_dev_t dev, int barnum,
+                    u32 addr_and_ctrl)
+{
+       int bar;
+
+       bar = PCI_BASE_ADDRESS_0 + barnum * 4;
+       pci_hose_write_config_dword(hose, dev, bar, addr_and_ctrl);
+}
+
+u32 pci_read_bar32(struct pci_controller *hose, pci_dev_t dev, int barnum)
+{
+       u32 addr;
+       int bar;
+
+       bar = PCI_BASE_ADDRESS_0 + barnum * 4;
+       pci_hose_read_config_dword(hose, dev, bar, &addr);
+       if (addr & PCI_BASE_ADDRESS_SPACE_IO)
+               return addr & PCI_BASE_ADDRESS_IO_MASK;
+       else
+               return addr & PCI_BASE_ADDRESS_MEM_MASK;
+}
 
 int pci_hose_config_device(struct pci_controller *hose,
                           pci_dev_t dev,
@@ -662,13 +693,15 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 #endif
 
 #ifdef CONFIG_PCI_PNP
-               sub_bus = max(pciauto_config_device(hose, dev), sub_bus);
+               sub_bus = max((unsigned int)pciauto_config_device(hose, dev),
+                             sub_bus);
 #else
                cfg = pci_find_config(hose, class, vendor, device,
                                      PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev));
                if (cfg) {
                        cfg->config_device(hose, dev, cfg);
-                       sub_bus = max(sub_bus, hose->current_busno);
+                       sub_bus = max(sub_bus,
+                                     (unsigned int)hose->current_busno);
                }
 #endif
 
@@ -686,11 +719,10 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 int pci_hose_scan(struct pci_controller *hose)
 {
 #if defined(CONFIG_PCI_BOOTDELAY)
-       static int pcidelay_done;
        char *s;
        int i;
 
-       if (!pcidelay_done) {
+       if (!gd->pcidelay_done) {
                /* wait "pcidelay" ms (if defined)... */
                s = getenv("pcidelay");
                if (s) {
@@ -698,7 +730,7 @@ int pci_hose_scan(struct pci_controller *hose)
                        for (i = 0; i < val; i++)
                                udelay(1000);
                }
-               pcidelay_done = 1;
+               gd->pcidelay_done = 1;
        }
 #endif /* CONFIG_PCI_BOOTDELAY */
 
index 86ba6b523c11da2f7eb5ed47fe31b7798d1f59d1..44470fa812b0ed42ca475bb27262d1b7be0fb733 100644 (file)
@@ -387,7 +387,7 @@ int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev)
                n = pci_hose_scan_bus(hose, hose->current_busno);
 
                /* figure out the deepest we've gone for this leg */
-               sub_bus = max(n, sub_bus);
+               sub_bus = max((unsigned int)n, sub_bus);
                pciauto_postscan_setup_bridge(hose, dev, sub_bus);
 
                sub_bus = hose->current_busno;
diff --git a/drivers/pci/pci_rom.c b/drivers/pci/pci_rom.c
new file mode 100644 (file)
index 0000000..7d25cc9
--- /dev/null
@@ -0,0 +1,281 @@
+/*
+ * Copyright (C) 2014 Google, Inc
+ *
+ * From coreboot, originally based on the Linux kernel (drivers/pci/pci.c).
+ *
+ * Modifications are:
+ * Copyright (C) 2003-2004 Linux Networx
+ * (Written by Eric Biederman <ebiederman@lnxi.com> for Linux Networx)
+ * Copyright (C) 2003-2006 Ronald G. Minnich <rminnich@gmail.com>
+ * Copyright (C) 2004-2005 Li-Ta Lo <ollie@lanl.gov>
+ * Copyright (C) 2005-2006 Tyan
+ * (Written by Yinghai Lu <yhlu@tyan.com> for Tyan)
+ * Copyright (C) 2005-2009 coresystems GmbH
+ * (Written by Stefan Reinauer <stepan@coresystems.de> for coresystems GmbH)
+ *
+ * PCI Bus Services, see include/linux/pci.h for further explanation.
+ *
+ * Copyright 1993 -- 1997 Drew Eckhardt, Frederic Potter,
+ * David Mosberger-Tang
+ *
+ * Copyright 1997 -- 1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <bios_emul.h>
+#include <errno.h>
+#include <malloc.h>
+#include <pci.h>
+#include <pci_rom.h>
+#include <vbe.h>
+#include <video_fb.h>
+
+#ifdef CONFIG_HAVE_ACPI_RESUME
+#include <asm/acpi.h>
+#endif
+
+__weak bool board_should_run_oprom(pci_dev_t dev)
+{
+       return true;
+}
+
+static bool should_load_oprom(pci_dev_t dev)
+{
+#ifdef CONFIG_HAVE_ACPI_RESUME
+       if (acpi_get_slp_type() == 3)
+               return false;
+#endif
+       if (IS_ENABLED(CONFIG_ALWAYS_LOAD_OPROM))
+               return 1;
+       if (board_should_run_oprom(dev))
+               return 1;
+
+       return 0;
+}
+
+__weak uint32_t board_map_oprom_vendev(uint32_t vendev)
+{
+       return vendev;
+}
+
+static int pci_rom_probe(pci_dev_t dev, uint class,
+                        struct pci_rom_header **hdrp)
+{
+       struct pci_rom_header *rom_header;
+       struct pci_rom_data *rom_data;
+       u16 vendor, device;
+       u32 vendev;
+       u32 mapped_vendev;
+       u32 rom_address;
+
+       pci_read_config_word(dev, PCI_VENDOR_ID, &vendor);
+       pci_read_config_word(dev, PCI_DEVICE_ID, &device);
+       vendev = vendor << 16 | device;
+       mapped_vendev = board_map_oprom_vendev(vendev);
+       if (vendev != mapped_vendev)
+               debug("Device ID mapped to %#08x\n", mapped_vendev);
+
+#ifdef CONFIG_X86_OPTION_ROM_ADDR
+       rom_address = CONFIG_X86_OPTION_ROM_ADDR;
+#else
+       pci_write_config_dword(dev, PCI_ROM_ADDRESS, (u32)PCI_ROM_ADDRESS_MASK);
+       pci_read_config_dword(dev, PCI_ROM_ADDRESS, &rom_address);
+       if (rom_address == 0x00000000 || rom_address == 0xffffffff) {
+               debug("%s: rom_address=%x\n", __func__, rom_address);
+               return -ENOENT;
+       }
+
+       /* Enable expansion ROM address decoding. */
+       pci_write_config_dword(dev, PCI_ROM_ADDRESS,
+                              rom_address | PCI_ROM_ADDRESS_ENABLE);
+#endif
+       debug("Option ROM address %x\n", rom_address);
+       rom_header = (struct pci_rom_header *)rom_address;
+
+       debug("PCI expansion ROM, signature %#04x, INIT size %#04x, data ptr %#04x\n",
+             le32_to_cpu(rom_header->signature),
+             rom_header->size * 512, le32_to_cpu(rom_header->data));
+
+       if (le32_to_cpu(rom_header->signature) != PCI_ROM_HDR) {
+               printf("Incorrect expansion ROM header signature %04x\n",
+                      le32_to_cpu(rom_header->signature));
+               return -EINVAL;
+       }
+
+       rom_data = (((void *)rom_header) + le32_to_cpu(rom_header->data));
+
+       debug("PCI ROM image, vendor ID %04x, device ID %04x,\n",
+             rom_data->vendor, rom_data->device);
+
+       /* If the device id is mapped, a mismatch is expected */
+       if ((vendor != rom_data->vendor || device != rom_data->device) &&
+           (vendev == mapped_vendev)) {
+               printf("ID mismatch: vendor ID %04x, device ID %04x\n",
+                      rom_data->vendor, rom_data->device);
+               return -EPERM;
+       }
+
+       debug("PCI ROM image, Class Code %04x%02x, Code Type %02x\n",
+             rom_data->class_hi, rom_data->class_lo, rom_data->type);
+
+       if (class != ((rom_data->class_hi << 8) | rom_data->class_lo)) {
+               debug("Class Code mismatch ROM %08x, dev %08x\n",
+                     (rom_data->class_hi << 8) | rom_data->class_lo,
+                     class);
+       }
+       *hdrp = rom_header;
+
+       return 0;
+}
+
+int pci_rom_load(uint16_t class, struct pci_rom_header *rom_header,
+                struct pci_rom_header **ram_headerp)
+{
+       struct pci_rom_data *rom_data;
+       unsigned int rom_size;
+       unsigned int image_size = 0;
+       void *target;
+
+       do {
+               /* Get next image, until we see an x86 version */
+               rom_header = (struct pci_rom_header *)((void *)rom_header +
+                                                           image_size);
+
+               rom_data = (struct pci_rom_data *)((void *)rom_header +
+                               le32_to_cpu(rom_header->data));
+
+               image_size = le32_to_cpu(rom_data->ilen) * 512;
+       } while ((rom_data->type != 0) && (rom_data->indicator != 0));
+
+       if (rom_data->type != 0)
+               return -EACCES;
+
+       rom_size = rom_header->size * 512;
+
+       target = (void *)PCI_VGA_RAM_IMAGE_START;
+       if (target != rom_header) {
+               ulong start = get_timer(0);
+
+               debug("Copying VGA ROM Image from %p to %p, 0x%x bytes\n",
+                     rom_header, target, rom_size);
+               memcpy(target, rom_header, rom_size);
+               if (memcmp(target, rom_header, rom_size)) {
+                       printf("VGA ROM copy failed\n");
+                       return -EFAULT;
+               }
+               debug("Copy took %lums\n", get_timer(start));
+       }
+       *ram_headerp = target;
+
+       return 0;
+}
+
+static struct vbe_mode_info mode_info;
+
+int vbe_get_video_info(struct graphic_device *gdev)
+{
+#ifdef CONFIG_FRAMEBUFFER_SET_VESA_MODE
+       struct vesa_mode_info *vesa = &mode_info.vesa;
+
+       gdev->winSizeX = vesa->x_resolution;
+       gdev->winSizeY = vesa->y_resolution;
+
+       gdev->plnSizeX = vesa->x_resolution;
+       gdev->plnSizeY = vesa->y_resolution;
+
+       gdev->gdfBytesPP = vesa->bits_per_pixel / 8;
+
+       switch (vesa->bits_per_pixel) {
+       case 24:
+               gdev->gdfIndex = GDF_32BIT_X888RGB;
+               break;
+       case 16:
+               gdev->gdfIndex = GDF_16BIT_565RGB;
+               break;
+       default:
+               gdev->gdfIndex = GDF__8BIT_INDEX;
+               break;
+       }
+
+       gdev->isaBase = CONFIG_SYS_ISA_IO_BASE_ADDRESS;
+       gdev->pciBase = vesa->phys_base_ptr;
+
+       gdev->frameAdrs = vesa->phys_base_ptr;
+       gdev->memSize = vesa->bytes_per_scanline * vesa->y_resolution;
+
+       gdev->vprBase = vesa->phys_base_ptr;
+       gdev->cprBase = vesa->phys_base_ptr;
+
+       return gdev->winSizeX ? 0 : -ENOSYS;
+#else
+       return -ENOSYS;
+#endif
+}
+
+int pci_run_vga_bios(pci_dev_t dev, int (*int15_handler)(void), bool emulate)
+{
+       struct pci_rom_header *rom, *ram;
+       int vesa_mode = -1;
+       uint16_t class;
+       int ret;
+
+       /* Only execute VGA ROMs */
+       pci_read_config_word(dev, PCI_CLASS_DEVICE, &class);
+       if ((class ^ PCI_CLASS_DISPLAY_VGA) & 0xff00) {
+               debug("%s: Class %#x, should be %#x\n", __func__, class,
+                     PCI_CLASS_DISPLAY_VGA);
+               return -ENODEV;
+       }
+
+       if (!should_load_oprom(dev))
+               return -ENXIO;
+
+       ret = pci_rom_probe(dev, class, &rom);
+       if (ret)
+               return ret;
+
+       ret = pci_rom_load(class, rom, &ram);
+       if (ret)
+               return ret;
+
+       if (!board_should_run_oprom(dev))
+               return -ENXIO;
+
+#if defined(CONFIG_FRAMEBUFFER_SET_VESA_MODE) && \
+               defined(CONFIG_FRAMEBUFFER_VESA_MODE)
+       vesa_mode = CONFIG_FRAMEBUFFER_VESA_MODE;
+#endif
+       debug("Selected vesa mode %#x\n", vesa_mode);
+       if (emulate) {
+#ifdef CONFIG_BIOSEMU
+               BE_VGAInfo *info;
+
+               ret = biosemu_setup(dev, &info);
+               if (ret)
+                       return ret;
+               biosemu_set_interrupt_handler(0x15, int15_handler);
+               ret = biosemu_run(dev, (uchar *)ram, 1 << 16, info, true,
+                                 vesa_mode, &mode_info);
+               if (ret)
+                       return ret;
+#else
+               printf("BIOS emulation not available - see CONFIG_BIOSEMU\n");
+               return -ENOSYS;
+#endif
+       } else {
+#ifdef CONFIG_X86
+               bios_set_interrupt_handler(0x15, int15_handler);
+
+               bios_run_on_x86(dev, (unsigned long)ram, vesa_mode,
+                               &mode_info);
+#else
+               printf("BIOS native execution is only available on x86\n");
+               return -ENOSYS;
+#endif
+       }
+       debug("Final vesa mode %#x\n", mode_info.video_mode);
+
+       return 0;
+}
diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c
new file mode 100644 (file)
index 0000000..f9e05ad
--- /dev/null
@@ -0,0 +1,1144 @@
+/*
+ * Copyright (c) 2010, CompuLab, Ltd.
+ * Author: Mike Rapoport <mike@compulab.co.il>
+ *
+ * Based on NVIDIA PCIe driver
+ * Copyright (c) 2008-2009, NVIDIA Corporation.
+ *
+ * Copyright (c) 2013-2014, NVIDIA Corporation.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#define DEBUG
+#define pr_fmt(fmt) "tegra-pcie: " fmt
+
+#include <common.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <malloc.h>
+#include <pci.h>
+
+#include <asm/io.h>
+#include <asm/gpio.h>
+
+#include <asm/arch/clock.h>
+#include <asm/arch/powergate.h>
+#include <asm/arch-tegra/xusb-padctl.h>
+
+#include <linux/list.h>
+
+#include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define AFI_AXI_BAR0_SZ        0x00
+#define AFI_AXI_BAR1_SZ        0x04
+#define AFI_AXI_BAR2_SZ        0x08
+#define AFI_AXI_BAR3_SZ        0x0c
+#define AFI_AXI_BAR4_SZ        0x10
+#define AFI_AXI_BAR5_SZ        0x14
+
+#define AFI_AXI_BAR0_START     0x18
+#define AFI_AXI_BAR1_START     0x1c
+#define AFI_AXI_BAR2_START     0x20
+#define AFI_AXI_BAR3_START     0x24
+#define AFI_AXI_BAR4_START     0x28
+#define AFI_AXI_BAR5_START     0x2c
+
+#define AFI_FPCI_BAR0  0x30
+#define AFI_FPCI_BAR1  0x34
+#define AFI_FPCI_BAR2  0x38
+#define AFI_FPCI_BAR3  0x3c
+#define AFI_FPCI_BAR4  0x40
+#define AFI_FPCI_BAR5  0x44
+
+#define AFI_CACHE_BAR0_SZ      0x48
+#define AFI_CACHE_BAR0_ST      0x4c
+#define AFI_CACHE_BAR1_SZ      0x50
+#define AFI_CACHE_BAR1_ST      0x54
+
+#define AFI_MSI_BAR_SZ         0x60
+#define AFI_MSI_FPCI_BAR_ST    0x64
+#define AFI_MSI_AXI_BAR_ST     0x68
+
+#define AFI_CONFIGURATION              0xac
+#define  AFI_CONFIGURATION_EN_FPCI     (1 << 0)
+
+#define AFI_FPCI_ERROR_MASKS   0xb0
+
+#define AFI_INTR_MASK          0xb4
+#define  AFI_INTR_MASK_INT_MASK        (1 << 0)
+#define  AFI_INTR_MASK_MSI_MASK        (1 << 8)
+
+#define AFI_SM_INTR_ENABLE     0xc4
+#define  AFI_SM_INTR_INTA_ASSERT       (1 << 0)
+#define  AFI_SM_INTR_INTB_ASSERT       (1 << 1)
+#define  AFI_SM_INTR_INTC_ASSERT       (1 << 2)
+#define  AFI_SM_INTR_INTD_ASSERT       (1 << 3)
+#define  AFI_SM_INTR_INTA_DEASSERT     (1 << 4)
+#define  AFI_SM_INTR_INTB_DEASSERT     (1 << 5)
+#define  AFI_SM_INTR_INTC_DEASSERT     (1 << 6)
+#define  AFI_SM_INTR_INTD_DEASSERT     (1 << 7)
+
+#define AFI_AFI_INTR_ENABLE            0xc8
+#define  AFI_INTR_EN_INI_SLVERR                (1 << 0)
+#define  AFI_INTR_EN_INI_DECERR                (1 << 1)
+#define  AFI_INTR_EN_TGT_SLVERR                (1 << 2)
+#define  AFI_INTR_EN_TGT_DECERR                (1 << 3)
+#define  AFI_INTR_EN_TGT_WRERR         (1 << 4)
+#define  AFI_INTR_EN_DFPCI_DECERR      (1 << 5)
+#define  AFI_INTR_EN_AXI_DECERR                (1 << 6)
+#define  AFI_INTR_EN_FPCI_TIMEOUT      (1 << 7)
+#define  AFI_INTR_EN_PRSNT_SENSE       (1 << 8)
+
+#define AFI_PCIE_CONFIG                                        0x0f8
+#define  AFI_PCIE_CONFIG_PCIE_DISABLE(x)               (1 << ((x) + 1))
+#define  AFI_PCIE_CONFIG_PCIE_DISABLE_ALL              0xe
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_MASK      (0xf << 20)
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_SINGLE    (0x0 << 20)
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_420       (0x0 << 20)
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_X2_X1     (0x0 << 20)
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_DUAL      (0x1 << 20)
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_222       (0x1 << 20)
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_X4_X1     (0x1 << 20)
+#define  AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_411       (0x2 << 20)
+
+#define AFI_FUSE                       0x104
+#define  AFI_FUSE_PCIE_T0_GEN2_DIS     (1 << 2)
+
+#define AFI_PEX0_CTRL                  0x110
+#define AFI_PEX1_CTRL                  0x118
+#define AFI_PEX2_CTRL                  0x128
+#define  AFI_PEX_CTRL_RST              (1 << 0)
+#define  AFI_PEX_CTRL_CLKREQ_EN                (1 << 1)
+#define  AFI_PEX_CTRL_REFCLK_EN                (1 << 3)
+#define  AFI_PEX_CTRL_OVERRIDE_EN      (1 << 4)
+
+#define AFI_PLLE_CONTROL               0x160
+#define  AFI_PLLE_CONTROL_BYPASS_PADS2PLLE_CONTROL (1 << 9)
+#define  AFI_PLLE_CONTROL_PADS2PLLE_CONTROL_EN (1 << 1)
+
+#define AFI_PEXBIAS_CTRL_0             0x168
+
+#define PADS_CTL_SEL           0x0000009C
+
+#define PADS_CTL               0x000000A0
+#define  PADS_CTL_IDDQ_1L      (1 <<  0)
+#define  PADS_CTL_TX_DATA_EN_1L        (1 <<  6)
+#define  PADS_CTL_RX_DATA_EN_1L        (1 << 10)
+
+#define PADS_PLL_CTL_TEGRA20                   0x000000B8
+#define PADS_PLL_CTL_TEGRA30                   0x000000B4
+#define  PADS_PLL_CTL_RST_B4SM                 (0x1 <<  1)
+#define  PADS_PLL_CTL_LOCKDET                  (0x1 <<  8)
+#define  PADS_PLL_CTL_REFCLK_MASK              (0x3 << 16)
+#define  PADS_PLL_CTL_REFCLK_INTERNAL_CML      (0x0 << 16)
+#define  PADS_PLL_CTL_REFCLK_INTERNAL_CMOS     (0x1 << 16)
+#define  PADS_PLL_CTL_REFCLK_EXTERNAL          (0x2 << 16)
+#define  PADS_PLL_CTL_TXCLKREF_MASK            (0x1 << 20)
+#define  PADS_PLL_CTL_TXCLKREF_DIV10           (0x0 << 20)
+#define  PADS_PLL_CTL_TXCLKREF_DIV5            (0x1 << 20)
+#define  PADS_PLL_CTL_TXCLKREF_BUF_EN          (0x1 << 22)
+
+#define PADS_REFCLK_CFG0                       0x000000C8
+#define PADS_REFCLK_CFG1                       0x000000CC
+
+/*
+ * Fields in PADS_REFCLK_CFG*. Those registers form an array of 16-bit
+ * entries, one entry per PCIe port. These field definitions and desired
+ * values aren't in the TRM, but do come from NVIDIA.
+ */
+#define PADS_REFCLK_CFG_TERM_SHIFT             2  /* 6:2 */
+#define PADS_REFCLK_CFG_E_TERM_SHIFT           7
+#define PADS_REFCLK_CFG_PREDI_SHIFT            8  /* 11:8 */
+#define PADS_REFCLK_CFG_DRVI_SHIFT             12 /* 15:12 */
+
+/* Default value provided by HW engineering is 0xfa5c */
+#define PADS_REFCLK_CFG_VALUE \
+       ( \
+               (0x17 << PADS_REFCLK_CFG_TERM_SHIFT)   | \
+               (0    << PADS_REFCLK_CFG_E_TERM_SHIFT) | \
+               (0xa  << PADS_REFCLK_CFG_PREDI_SHIFT)  | \
+               (0xf  << PADS_REFCLK_CFG_DRVI_SHIFT)     \
+       )
+
+#define RP_VEND_XP     0x00000F00
+#define  RP_VEND_XP_DL_UP      (1 << 30)
+
+#define RP_PRIV_MISC   0x00000FE0
+#define  RP_PRIV_MISC_PRSNT_MAP_EP_PRSNT (0xE << 0)
+#define  RP_PRIV_MISC_PRSNT_MAP_EP_ABSNT (0xF << 0)
+
+#define RP_LINK_CONTROL_STATUS                 0x00000090
+#define  RP_LINK_CONTROL_STATUS_DL_LINK_ACTIVE 0x20000000
+#define  RP_LINK_CONTROL_STATUS_LINKSTAT_MASK  0x3fff0000
+
+struct tegra_pcie;
+
+struct tegra_pcie_port {
+       struct tegra_pcie *pcie;
+
+       struct fdt_resource regs;
+       unsigned int num_lanes;
+       unsigned int index;
+
+       struct list_head list;
+};
+
+struct tegra_pcie_soc {
+       unsigned int num_ports;
+       unsigned long pads_pll_ctl;
+       unsigned long tx_ref_sel;
+       bool has_pex_clkreq_en;
+       bool has_pex_bias_ctrl;
+       bool has_cml_clk;
+       bool has_gen2;
+};
+
+struct tegra_pcie {
+       struct pci_controller hose;
+
+       struct fdt_resource pads;
+       struct fdt_resource afi;
+       struct fdt_resource cs;
+
+       struct fdt_resource prefetch;
+       struct fdt_resource mem;
+       struct fdt_resource io;
+
+       struct list_head ports;
+       unsigned long xbar;
+
+       const struct tegra_pcie_soc *soc;
+       struct tegra_xusb_phy *phy;
+};
+
+static inline struct tegra_pcie *to_tegra_pcie(struct pci_controller *hose)
+{
+       return container_of(hose, struct tegra_pcie, hose);
+}
+
+static void afi_writel(struct tegra_pcie *pcie, unsigned long value,
+                      unsigned long offset)
+{
+       writel(value, pcie->afi.start + offset);
+}
+
+static unsigned long afi_readl(struct tegra_pcie *pcie, unsigned long offset)
+{
+       return readl(pcie->afi.start + offset);
+}
+
+static void pads_writel(struct tegra_pcie *pcie, unsigned long value,
+                       unsigned long offset)
+{
+       writel(value, pcie->pads.start + offset);
+}
+
+static unsigned long pads_readl(struct tegra_pcie *pcie, unsigned long offset)
+{
+       return readl(pcie->pads.start + offset);
+}
+
+static unsigned long rp_readl(struct tegra_pcie_port *port,
+                             unsigned long offset)
+{
+       return readl(port->regs.start + offset);
+}
+
+static void rp_writel(struct tegra_pcie_port *port, unsigned long value,
+                     unsigned long offset)
+{
+       writel(value, port->regs.start + offset);
+}
+
+static unsigned long tegra_pcie_conf_offset(pci_dev_t bdf, int where)
+{
+       return ((where & 0xf00) << 16) | (PCI_BUS(bdf) << 16) |
+              (PCI_DEV(bdf) << 11) | (PCI_FUNC(bdf) << 8) |
+              (where & 0xfc);
+}
+
+static int tegra_pcie_conf_address(struct tegra_pcie *pcie, pci_dev_t bdf,
+                                  int where, unsigned long *address)
+{
+       unsigned int bus = PCI_BUS(bdf);
+
+       if (bus == 0) {
+               unsigned int dev = PCI_DEV(bdf);
+               struct tegra_pcie_port *port;
+
+               list_for_each_entry(port, &pcie->ports, list) {
+                       if (port->index + 1 == dev) {
+                               *address = port->regs.start + (where & ~3);
+                               return 0;
+                       }
+               }
+       } else {
+               *address = pcie->cs.start + tegra_pcie_conf_offset(bdf, where);
+               return 0;
+       }
+
+       return -1;
+}
+
+static int tegra_pcie_read_conf(struct pci_controller *hose, pci_dev_t bdf,
+                               int where, u32 *value)
+{
+       struct tegra_pcie *pcie = to_tegra_pcie(hose);
+       unsigned long address;
+       int err;
+
+       err = tegra_pcie_conf_address(pcie, bdf, where, &address);
+       if (err < 0) {
+               *value = 0xffffffff;
+               return 1;
+       }
+
+       *value = readl(address);
+
+       /* fixup root port class */
+       if (PCI_BUS(bdf) == 0) {
+               if (where == PCI_CLASS_REVISION) {
+                       *value &= ~0x00ff0000;
+                       *value |= PCI_CLASS_BRIDGE_PCI << 16;
+               }
+       }
+
+       return 0;
+}
+
+static int tegra_pcie_write_conf(struct pci_controller *hose, pci_dev_t bdf,
+                                int where, u32 value)
+{
+       struct tegra_pcie *pcie = to_tegra_pcie(hose);
+       unsigned long address;
+       int err;
+
+       err = tegra_pcie_conf_address(pcie, bdf, where, &address);
+       if (err < 0)
+               return 1;
+
+       writel(value, address);
+
+       return 0;
+}
+
+static int tegra_pcie_port_parse_dt(const void *fdt, int node,
+                                   struct tegra_pcie_port *port)
+{
+       const u32 *addr;
+       int len;
+
+       addr = fdt_getprop(fdt, node, "assigned-addresses", &len);
+       if (!addr) {
+               error("property \"assigned-addresses\" not found");
+               return -FDT_ERR_NOTFOUND;
+       }
+
+       port->regs.start = fdt32_to_cpu(addr[2]);
+       port->regs.end = port->regs.start + fdt32_to_cpu(addr[4]);
+
+       return 0;
+}
+
+static int tegra_pcie_get_xbar_config(const void *fdt, int node, u32 lanes,
+                                     unsigned long *xbar)
+{
+       enum fdt_compat_id id = fdtdec_lookup(fdt, node);
+
+       switch (id) {
+       case COMPAT_NVIDIA_TEGRA20_PCIE:
+               switch (lanes) {
+               case 0x00000004:
+                       debug("single-mode configuration\n");
+                       *xbar = AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_SINGLE;
+                       return 0;
+
+               case 0x00000202:
+                       debug("dual-mode configuration\n");
+                       *xbar = AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_DUAL;
+                       return 0;
+               }
+               break;
+
+       case COMPAT_NVIDIA_TEGRA30_PCIE:
+               switch (lanes) {
+               case 0x00000204:
+                       debug("4x1, 2x1 configuration\n");
+                       *xbar = AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_420;
+                       return 0;
+
+               case 0x00020202:
+                       debug("2x3 configuration\n");
+                       *xbar = AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_222;
+                       return 0;
+
+               case 0x00010104:
+                       debug("4x1, 1x2 configuration\n");
+                       *xbar = AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_411;
+                       return 0;
+               }
+               break;
+
+       case COMPAT_NVIDIA_TEGRA124_PCIE:
+               switch (lanes) {
+               case 0x0000104:
+                       debug("4x1, 1x1 configuration\n");
+                       *xbar = AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_X4_X1;
+                       return 0;
+
+               case 0x0000102:
+                       debug("2x1, 1x1 configuration\n");
+                       *xbar = AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_X2_X1;
+                       return 0;
+               }
+               break;
+
+       default:
+               break;
+       }
+
+       return -FDT_ERR_NOTFOUND;
+}
+
+static int tegra_pcie_parse_dt_ranges(const void *fdt, int node,
+                                     struct tegra_pcie *pcie)
+{
+       const u32 *ptr, *end;
+       int len;
+
+       ptr = fdt_getprop(fdt, node, "ranges", &len);
+       if (!ptr) {
+               error("missing \"ranges\" property");
+               return -FDT_ERR_NOTFOUND;
+       }
+
+       end = ptr + len / 4;
+
+       while (ptr < end) {
+               struct fdt_resource *res = NULL;
+               u32 space = fdt32_to_cpu(*ptr);
+
+               switch ((space >> 24) & 0x3) {
+               case 0x01:
+                       res = &pcie->io;
+                       break;
+
+               case 0x02: /* 32 bit */
+               case 0x03: /* 64 bit */
+                       if (space & (1 << 30))
+                               res = &pcie->prefetch;
+                       else
+                               res = &pcie->mem;
+
+                       break;
+               }
+
+               if (res) {
+                       res->start = fdt32_to_cpu(ptr[3]);
+                       res->end = res->start + fdt32_to_cpu(ptr[5]);
+               }
+
+               ptr += 3 + 1 + 2;
+       }
+
+       debug("PCI regions:\n");
+       debug("  I/O: %#x-%#x\n", pcie->io.start, pcie->io.end);
+       debug("  non-prefetchable memory: %#x-%#x\n", pcie->mem.start,
+             pcie->mem.end);
+       debug("  prefetchable memory: %#x-%#x\n", pcie->prefetch.start,
+             pcie->prefetch.end);
+
+       return 0;
+}
+
+static int tegra_pcie_parse_port_info(const void *fdt, int node,
+                                     unsigned int *index,
+                                     unsigned int *lanes)
+{
+       struct fdt_pci_addr addr;
+       pci_dev_t bdf;
+       int err;
+
+       err = fdtdec_get_int(fdt, node, "nvidia,num-lanes", 0);
+       if (err < 0) {
+               error("failed to parse \"nvidia,num-lanes\" property");
+               return err;
+       }
+
+       *lanes = err;
+
+       err = fdtdec_get_pci_bdf(fdt, node, &addr, &bdf);
+       if (err < 0) {
+               error("failed to parse \"reg\" property");
+               return err;
+       }
+
+       *index = PCI_DEV(bdf) - 1;
+
+       return 0;
+}
+
+static int tegra_pcie_parse_dt(const void *fdt, int node,
+                              struct tegra_pcie *pcie)
+{
+       int err, subnode;
+       u32 lanes = 0;
+
+       err = fdt_get_named_resource(fdt, node, "reg", "reg-names", "pads",
+                                    &pcie->pads);
+       if (err < 0) {
+               error("resource \"pads\" not found");
+               return err;
+       }
+
+       err = fdt_get_named_resource(fdt, node, "reg", "reg-names", "afi",
+                                    &pcie->afi);
+       if (err < 0) {
+               error("resource \"afi\" not found");
+               return err;
+       }
+
+       err = fdt_get_named_resource(fdt, node, "reg", "reg-names", "cs",
+                                    &pcie->cs);
+       if (err < 0) {
+               error("resource \"cs\" not found");
+               return err;
+       }
+
+       pcie->phy = tegra_xusb_phy_get(TEGRA_XUSB_PADCTL_PCIE);
+       if (pcie->phy) {
+               err = tegra_xusb_phy_prepare(pcie->phy);
+               if (err < 0) {
+                       error("failed to prepare PHY: %d", err);
+                       return err;
+               }
+       }
+
+       err = tegra_pcie_parse_dt_ranges(fdt, node, pcie);
+       if (err < 0) {
+               error("failed to parse \"ranges\" property");
+               return err;
+       }
+
+       fdt_for_each_subnode(fdt, subnode, node) {
+               unsigned int index = 0, num_lanes = 0;
+               struct tegra_pcie_port *port;
+
+               err = tegra_pcie_parse_port_info(fdt, subnode, &index,
+                                                &num_lanes);
+               if (err < 0) {
+                       error("failed to obtain root port info");
+                       continue;
+               }
+
+               lanes |= num_lanes << (index << 3);
+
+               if (!fdtdec_get_is_enabled(fdt, subnode))
+                       continue;
+
+               port = malloc(sizeof(*port));
+               if (!port)
+                       continue;
+
+               memset(port, 0, sizeof(*port));
+               port->num_lanes = num_lanes;
+               port->index = index;
+
+               err = tegra_pcie_port_parse_dt(fdt, subnode, port);
+               if (err < 0) {
+                       free(port);
+                       continue;
+               }
+
+               list_add_tail(&port->list, &pcie->ports);
+               port->pcie = pcie;
+       }
+
+       err = tegra_pcie_get_xbar_config(fdt, node, lanes, &pcie->xbar);
+       if (err < 0) {
+               error("invalid lane configuration");
+               return err;
+       }
+
+       return 0;
+}
+
+int __weak tegra_pcie_board_init(void)
+{
+       return 0;
+}
+
+static int tegra_pcie_power_on(struct tegra_pcie *pcie)
+{
+       const struct tegra_pcie_soc *soc = pcie->soc;
+       unsigned long value;
+       int err;
+
+       /* reset PCIEXCLK logic, AFI controller and PCIe controller */
+       reset_set_enable(PERIPH_ID_PCIEXCLK, 1);
+       reset_set_enable(PERIPH_ID_AFI, 1);
+       reset_set_enable(PERIPH_ID_PCIE, 1);
+
+       err = tegra_powergate_power_off(TEGRA_POWERGATE_PCIE);
+       if (err < 0) {
+               error("failed to power off PCIe partition: %d", err);
+               return err;
+       }
+
+       tegra_pcie_board_init();
+
+       err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_PCIE,
+                                               PERIPH_ID_PCIE);
+       if (err < 0) {
+               error("failed to power up PCIe partition: %d", err);
+               return err;
+       }
+
+       /* take AFI controller out of reset */
+       reset_set_enable(PERIPH_ID_AFI, 0);
+
+       /* enable AFI clock */
+       clock_enable(PERIPH_ID_AFI);
+
+       if (soc->has_cml_clk) {
+               /* enable CML clock */
+               value = readl(NV_PA_CLK_RST_BASE + 0x48c);
+               value |= (1 << 0);
+               value &= ~(1 << 1);
+               writel(value, NV_PA_CLK_RST_BASE + 0x48c);
+       }
+
+       err = tegra_plle_enable();
+       if (err < 0) {
+               error("failed to enable PLLE: %d\n", err);
+               return err;
+       }
+
+       return 0;
+}
+
+static int tegra_pcie_pll_wait(struct tegra_pcie *pcie, unsigned long timeout)
+{
+       const struct tegra_pcie_soc *soc = pcie->soc;
+       unsigned long start = get_timer(0);
+       u32 value;
+
+       while (get_timer(start) < timeout) {
+               value = pads_readl(pcie, soc->pads_pll_ctl);
+               if (value & PADS_PLL_CTL_LOCKDET)
+                       return 0;
+       }
+
+       return -ETIMEDOUT;
+}
+
+static int tegra_pcie_phy_enable(struct tegra_pcie *pcie)
+{
+       const struct tegra_pcie_soc *soc = pcie->soc;
+       u32 value;
+       int err;
+
+       /* initialize internal PHY, enable up to 16 PCIe lanes */
+       pads_writel(pcie, 0, PADS_CTL_SEL);
+
+       /* override IDDQ to 1 on all 4 lanes */
+       value = pads_readl(pcie, PADS_CTL);
+       value |= PADS_CTL_IDDQ_1L;
+       pads_writel(pcie, value, PADS_CTL);
+
+       /*
+        * Set up PHY PLL inputs select PLLE output as refclock, set TX
+        * ref sel to div10 (not div5).
+        */
+       value = pads_readl(pcie, soc->pads_pll_ctl);
+       value &= ~(PADS_PLL_CTL_REFCLK_MASK | PADS_PLL_CTL_TXCLKREF_MASK);
+       value |= PADS_PLL_CTL_REFCLK_INTERNAL_CML | soc->tx_ref_sel;
+       pads_writel(pcie, value, soc->pads_pll_ctl);
+
+       /* reset PLL */
+       value = pads_readl(pcie, soc->pads_pll_ctl);
+       value &= ~PADS_PLL_CTL_RST_B4SM;
+       pads_writel(pcie, value, soc->pads_pll_ctl);
+
+       udelay(20);
+
+       /* take PLL out of reset */
+       value = pads_readl(pcie, soc->pads_pll_ctl);
+       value |= PADS_PLL_CTL_RST_B4SM;
+       pads_writel(pcie, value, soc->pads_pll_ctl);
+
+       /* configure the reference clock driver */
+       value = PADS_REFCLK_CFG_VALUE | (PADS_REFCLK_CFG_VALUE << 16);
+       pads_writel(pcie, value, PADS_REFCLK_CFG0);
+
+       if (soc->num_ports > 2)
+               pads_writel(pcie, PADS_REFCLK_CFG_VALUE, PADS_REFCLK_CFG1);
+
+       /* wait for the PLL to lock */
+       err = tegra_pcie_pll_wait(pcie, 500);
+       if (err < 0) {
+               error("PLL failed to lock: %d", err);
+               return err;
+       }
+
+       /* turn off IDDQ override */
+       value = pads_readl(pcie, PADS_CTL);
+       value &= ~PADS_CTL_IDDQ_1L;
+       pads_writel(pcie, value, PADS_CTL);
+
+       /* enable TX/RX data */
+       value = pads_readl(pcie, PADS_CTL);
+       value |= PADS_CTL_TX_DATA_EN_1L | PADS_CTL_RX_DATA_EN_1L;
+       pads_writel(pcie, value, PADS_CTL);
+
+       return 0;
+}
+
+static int tegra_pcie_enable_controller(struct tegra_pcie *pcie)
+{
+       const struct tegra_pcie_soc *soc = pcie->soc;
+       struct tegra_pcie_port *port;
+       u32 value;
+       int err;
+
+       if (pcie->phy) {
+               value = afi_readl(pcie, AFI_PLLE_CONTROL);
+               value &= ~AFI_PLLE_CONTROL_BYPASS_PADS2PLLE_CONTROL;
+               value |= AFI_PLLE_CONTROL_PADS2PLLE_CONTROL_EN;
+               afi_writel(pcie, value, AFI_PLLE_CONTROL);
+       }
+
+       if (soc->has_pex_bias_ctrl)
+               afi_writel(pcie, 0, AFI_PEXBIAS_CTRL_0);
+
+       value = afi_readl(pcie, AFI_PCIE_CONFIG);
+       value &= ~AFI_PCIE_CONFIG_SM2TMS0_XBAR_CONFIG_MASK;
+       value |= AFI_PCIE_CONFIG_PCIE_DISABLE_ALL | pcie->xbar;
+
+       list_for_each_entry(port, &pcie->ports, list)
+               value &= ~AFI_PCIE_CONFIG_PCIE_DISABLE(port->index);
+
+       afi_writel(pcie, value, AFI_PCIE_CONFIG);
+
+       value = afi_readl(pcie, AFI_FUSE);
+
+       if (soc->has_gen2)
+               value &= ~AFI_FUSE_PCIE_T0_GEN2_DIS;
+       else
+               value |= AFI_FUSE_PCIE_T0_GEN2_DIS;
+
+       afi_writel(pcie, value, AFI_FUSE);
+
+       if (pcie->phy)
+               err = tegra_xusb_phy_enable(pcie->phy);
+       else
+               err = tegra_pcie_phy_enable(pcie);
+
+       if (err < 0) {
+               error("failed to power on PHY: %d\n", err);
+               return err;
+       }
+
+       /* take the PCIEXCLK logic out of reset */
+       reset_set_enable(PERIPH_ID_PCIEXCLK, 0);
+
+       /* finally enable PCIe */
+       value = afi_readl(pcie, AFI_CONFIGURATION);
+       value |= AFI_CONFIGURATION_EN_FPCI;
+       afi_writel(pcie, value, AFI_CONFIGURATION);
+
+       /* disable all interrupts */
+       afi_writel(pcie, 0, AFI_AFI_INTR_ENABLE);
+       afi_writel(pcie, 0, AFI_SM_INTR_ENABLE);
+       afi_writel(pcie, 0, AFI_INTR_MASK);
+       afi_writel(pcie, 0, AFI_FPCI_ERROR_MASKS);
+
+       return 0;
+}
+
+static void tegra_pcie_setup_translations(struct tegra_pcie *pcie)
+{
+       unsigned long fpci, axi, size;
+
+       /* BAR 0: type 1 extended configuration space */
+       fpci = 0xfe100000;
+       size = fdt_resource_size(&pcie->cs);
+       axi = pcie->cs.start;
+
+       afi_writel(pcie, axi, AFI_AXI_BAR0_START);
+       afi_writel(pcie, size >> 12, AFI_AXI_BAR0_SZ);
+       afi_writel(pcie, fpci, AFI_FPCI_BAR0);
+
+       /* BAR 1: downstream I/O */
+       fpci = 0xfdfc0000;
+       size = fdt_resource_size(&pcie->io);
+       axi = pcie->io.start;
+
+       afi_writel(pcie, axi, AFI_AXI_BAR1_START);
+       afi_writel(pcie, size >> 12, AFI_AXI_BAR1_SZ);
+       afi_writel(pcie, fpci, AFI_FPCI_BAR1);
+
+       /* BAR 2: prefetchable memory */
+       fpci = (((pcie->prefetch.start >> 12) & 0x0fffffff) << 4) | 0x1;
+       size = fdt_resource_size(&pcie->prefetch);
+       axi = pcie->prefetch.start;
+
+       afi_writel(pcie, axi, AFI_AXI_BAR2_START);
+       afi_writel(pcie, size >> 12, AFI_AXI_BAR2_SZ);
+       afi_writel(pcie, fpci, AFI_FPCI_BAR2);
+
+       /* BAR 3: non-prefetchable memory */
+       fpci = (((pcie->mem.start >> 12) & 0x0fffffff) << 4) | 0x1;
+       size = fdt_resource_size(&pcie->mem);
+       axi = pcie->mem.start;
+
+       afi_writel(pcie, axi, AFI_AXI_BAR3_START);
+       afi_writel(pcie, size >> 12, AFI_AXI_BAR3_SZ);
+       afi_writel(pcie, fpci, AFI_FPCI_BAR3);
+
+       /* NULL out the remaining BARs as they are not used */
+       afi_writel(pcie, 0, AFI_AXI_BAR4_START);
+       afi_writel(pcie, 0, AFI_AXI_BAR4_SZ);
+       afi_writel(pcie, 0, AFI_FPCI_BAR4);
+
+       afi_writel(pcie, 0, AFI_AXI_BAR5_START);
+       afi_writel(pcie, 0, AFI_AXI_BAR5_SZ);
+       afi_writel(pcie, 0, AFI_FPCI_BAR5);
+
+       /* map all upstream transactions as uncached */
+       afi_writel(pcie, NV_PA_SDRAM_BASE, AFI_CACHE_BAR0_ST);
+       afi_writel(pcie, 0, AFI_CACHE_BAR0_SZ);
+       afi_writel(pcie, 0, AFI_CACHE_BAR1_ST);
+       afi_writel(pcie, 0, AFI_CACHE_BAR1_SZ);
+
+       /* MSI translations are setup only when needed */
+       afi_writel(pcie, 0, AFI_MSI_FPCI_BAR_ST);
+       afi_writel(pcie, 0, AFI_MSI_BAR_SZ);
+       afi_writel(pcie, 0, AFI_MSI_AXI_BAR_ST);
+       afi_writel(pcie, 0, AFI_MSI_BAR_SZ);
+}
+
+static unsigned long tegra_pcie_port_get_pex_ctrl(struct tegra_pcie_port *port)
+{
+       unsigned long ret = 0;
+
+       switch (port->index) {
+       case 0:
+               ret = AFI_PEX0_CTRL;
+               break;
+
+       case 1:
+               ret = AFI_PEX1_CTRL;
+               break;
+
+       case 2:
+               ret = AFI_PEX2_CTRL;
+               break;
+       }
+
+       return ret;
+}
+
+static void tegra_pcie_port_reset(struct tegra_pcie_port *port)
+{
+       unsigned long ctrl = tegra_pcie_port_get_pex_ctrl(port);
+       unsigned long value;
+
+       /* pulse reset signel */
+       value = afi_readl(port->pcie, ctrl);
+       value &= ~AFI_PEX_CTRL_RST;
+       afi_writel(port->pcie, value, ctrl);
+
+       udelay(2000);
+
+       value = afi_readl(port->pcie, ctrl);
+       value |= AFI_PEX_CTRL_RST;
+       afi_writel(port->pcie, value, ctrl);
+}
+
+static void tegra_pcie_port_enable(struct tegra_pcie_port *port)
+{
+       unsigned long ctrl = tegra_pcie_port_get_pex_ctrl(port);
+       unsigned long value;
+
+       /* enable reference clock */
+       value = afi_readl(port->pcie, ctrl);
+       value |= AFI_PEX_CTRL_REFCLK_EN;
+
+       if (port->pcie->soc->has_pex_clkreq_en)
+               value |= AFI_PEX_CTRL_CLKREQ_EN;
+
+       value |= AFI_PEX_CTRL_OVERRIDE_EN;
+
+       afi_writel(port->pcie, value, ctrl);
+
+       tegra_pcie_port_reset(port);
+}
+
+static bool tegra_pcie_port_check_link(struct tegra_pcie_port *port)
+{
+       unsigned int retries = 3;
+       unsigned long value;
+
+       value = rp_readl(port, RP_PRIV_MISC);
+       value &= ~RP_PRIV_MISC_PRSNT_MAP_EP_ABSNT;
+       value |= RP_PRIV_MISC_PRSNT_MAP_EP_PRSNT;
+       rp_writel(port, value, RP_PRIV_MISC);
+
+       do {
+               unsigned int timeout = 200;
+
+               do {
+                       value = rp_readl(port, RP_VEND_XP);
+                       if (value & RP_VEND_XP_DL_UP)
+                               break;
+
+                       udelay(2000);
+               } while (--timeout);
+
+               if (!timeout) {
+                       debug("link %u down, retrying\n", port->index);
+                       goto retry;
+               }
+
+               timeout = 200;
+
+               do {
+                       value = rp_readl(port, RP_LINK_CONTROL_STATUS);
+                       if (value & RP_LINK_CONTROL_STATUS_DL_LINK_ACTIVE)
+                               return true;
+
+                       udelay(2000);
+               } while (--timeout);
+
+retry:
+               tegra_pcie_port_reset(port);
+       } while (--retries);
+
+       return false;
+}
+
+static void tegra_pcie_port_disable(struct tegra_pcie_port *port)
+{
+       unsigned long ctrl = tegra_pcie_port_get_pex_ctrl(port);
+       unsigned long value;
+
+       /* assert port reset */
+       value = afi_readl(port->pcie, ctrl);
+       value &= ~AFI_PEX_CTRL_RST;
+       afi_writel(port->pcie, value, ctrl);
+
+       /* disable reference clock */
+       value = afi_readl(port->pcie, ctrl);
+       value &= ~AFI_PEX_CTRL_REFCLK_EN;
+       afi_writel(port->pcie, value, ctrl);
+}
+
+static void tegra_pcie_port_free(struct tegra_pcie_port *port)
+{
+       list_del(&port->list);
+       free(port);
+}
+
+static int tegra_pcie_enable(struct tegra_pcie *pcie)
+{
+       struct tegra_pcie_port *port, *tmp;
+
+       list_for_each_entry_safe(port, tmp, &pcie->ports, list) {
+               debug("probing port %u, using %u lanes\n", port->index,
+                     port->num_lanes);
+
+               tegra_pcie_port_enable(port);
+
+               if (tegra_pcie_port_check_link(port))
+                       continue;
+
+               debug("link %u down, ignoring\n", port->index);
+
+               tegra_pcie_port_disable(port);
+               tegra_pcie_port_free(port);
+       }
+
+       return 0;
+}
+
+static const struct tegra_pcie_soc tegra20_pcie_soc = {
+       .num_ports = 2,
+       .pads_pll_ctl = PADS_PLL_CTL_TEGRA20,
+       .tx_ref_sel = PADS_PLL_CTL_TXCLKREF_DIV10,
+       .has_pex_clkreq_en = false,
+       .has_pex_bias_ctrl = false,
+       .has_cml_clk = false,
+       .has_gen2 = false,
+};
+
+static const struct tegra_pcie_soc tegra30_pcie_soc = {
+       .num_ports = 3,
+       .pads_pll_ctl = PADS_PLL_CTL_TEGRA30,
+       .tx_ref_sel = PADS_PLL_CTL_TXCLKREF_BUF_EN,
+       .has_pex_clkreq_en = true,
+       .has_pex_bias_ctrl = true,
+       .has_cml_clk = true,
+       .has_gen2 = false,
+};
+
+static const struct tegra_pcie_soc tegra124_pcie_soc = {
+       .num_ports = 2,
+       .pads_pll_ctl = PADS_PLL_CTL_TEGRA30,
+       .tx_ref_sel = PADS_PLL_CTL_TXCLKREF_BUF_EN,
+       .has_pex_clkreq_en = true,
+       .has_pex_bias_ctrl = true,
+       .has_cml_clk = true,
+       .has_gen2 = true,
+};
+
+static int process_nodes(const void *fdt, int nodes[], unsigned int count)
+{
+       unsigned int i;
+
+       for (i = 0; i < count; i++) {
+               const struct tegra_pcie_soc *soc;
+               struct tegra_pcie *pcie;
+               enum fdt_compat_id id;
+               int err;
+
+               if (!fdtdec_get_is_enabled(fdt, nodes[i]))
+                       continue;
+
+               id = fdtdec_lookup(fdt, nodes[i]);
+               switch (id) {
+               case COMPAT_NVIDIA_TEGRA20_PCIE:
+                       soc = &tegra20_pcie_soc;
+                       break;
+
+               case COMPAT_NVIDIA_TEGRA30_PCIE:
+                       soc = &tegra30_pcie_soc;
+                       break;
+
+               case COMPAT_NVIDIA_TEGRA124_PCIE:
+                       soc = &tegra124_pcie_soc;
+                       break;
+
+               default:
+                       error("unsupported compatible: %s",
+                             fdtdec_get_compatible(id));
+                       continue;
+               }
+
+               pcie = malloc(sizeof(*pcie));
+               if (!pcie) {
+                       error("failed to allocate controller");
+                       continue;
+               }
+
+               memset(pcie, 0, sizeof(*pcie));
+               pcie->soc = soc;
+
+               INIT_LIST_HEAD(&pcie->ports);
+
+               err = tegra_pcie_parse_dt(fdt, nodes[i], pcie);
+               if (err < 0) {
+                       free(pcie);
+                       continue;
+               }
+
+               err = tegra_pcie_power_on(pcie);
+               if (err < 0) {
+                       error("failed to power on");
+                       continue;
+               }
+
+               err = tegra_pcie_enable_controller(pcie);
+               if (err < 0) {
+                       error("failed to enable controller");
+                       continue;
+               }
+
+               tegra_pcie_setup_translations(pcie);
+
+               err = tegra_pcie_enable(pcie);
+               if (err < 0) {
+                       error("failed to enable PCIe");
+                       continue;
+               }
+
+               pcie->hose.first_busno = 0;
+               pcie->hose.current_busno = 0;
+               pcie->hose.last_busno = 0;
+
+               pci_set_region(&pcie->hose.regions[0], NV_PA_SDRAM_BASE,
+                              NV_PA_SDRAM_BASE, gd->ram_size,
+                              PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
+
+               pci_set_region(&pcie->hose.regions[1], pcie->io.start,
+                              pcie->io.start, fdt_resource_size(&pcie->io),
+                              PCI_REGION_IO);
+
+               pci_set_region(&pcie->hose.regions[2], pcie->mem.start,
+                              pcie->mem.start, fdt_resource_size(&pcie->mem),
+                              PCI_REGION_MEM);
+
+               pci_set_region(&pcie->hose.regions[3], pcie->prefetch.start,
+                              pcie->prefetch.start,
+                              fdt_resource_size(&pcie->prefetch),
+                              PCI_REGION_MEM | PCI_REGION_PREFETCH);
+
+               pcie->hose.region_count = 4;
+
+               pci_set_ops(&pcie->hose,
+                           pci_hose_read_config_byte_via_dword,
+                           pci_hose_read_config_word_via_dword,
+                           tegra_pcie_read_conf,
+                           pci_hose_write_config_byte_via_dword,
+                           pci_hose_write_config_word_via_dword,
+                           tegra_pcie_write_conf);
+
+               pci_register_hose(&pcie->hose);
+
+#ifdef CONFIG_PCI_SCAN_SHOW
+               printf("PCI: Enumerating devices...\n");
+               printf("---------------------------------------\n");
+               printf("  Device        ID          Description\n");
+               printf("  ------        --          -----------\n");
+#endif
+
+               pcie->hose.last_busno = pci_hose_scan(&pcie->hose);
+       }
+
+       return 0;
+}
+
+void pci_init_board(void)
+{
+       const void *fdt = gd->fdt_blob;
+       int count, nodes[1];
+
+       count = fdtdec_find_aliases_for_id(fdt, "pcie-controller",
+                                          COMPAT_NVIDIA_TEGRA124_PCIE,
+                                          nodes, ARRAY_SIZE(nodes));
+       if (process_nodes(fdt, nodes, count))
+               return;
+
+       count = fdtdec_find_aliases_for_id(fdt, "pcie-controller",
+                                          COMPAT_NVIDIA_TEGRA30_PCIE,
+                                          nodes, ARRAY_SIZE(nodes));
+       if (process_nodes(fdt, nodes, count))
+               return;
+
+       count = fdtdec_find_aliases_for_id(fdt, "pcie-controller",
+                                          COMPAT_NVIDIA_TEGRA20_PCIE,
+                                          nodes, ARRAY_SIZE(nodes));
+       if (process_nodes(fdt, nodes, count))
+               return;
+}
+
+int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
+{
+       if (PCI_BUS(dev) != 0 && PCI_DEV(dev) > 0)
+               return 1;
+
+       return 0;
+}
diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
new file mode 100644 (file)
index 0000000..291c249
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ * Layerscape PCIe driver
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/fsl_serdes.h>
+#include <pci.h>
+#include <asm/io.h>
+#include <asm/pcie_layerscape.h>
+
+#ifdef CONFIG_OF_BOARD_SETUP
+#include <libfdt.h>
+#include <fdt_support.h>
+
+static void ft_pcie_ls_setup(void *blob, const char *pci_compat,
+                            unsigned long ctrl_addr, enum srds_prtcl dev)
+{
+       int off;
+
+       off = fdt_node_offset_by_compat_reg(blob, pci_compat,
+                                           (phys_addr_t)ctrl_addr);
+       if (off < 0)
+               return;
+
+       if (!is_serdes_configured(dev))
+               fdt_set_node_status(blob, off, FDT_STATUS_DISABLED, 0);
+}
+
+void ft_pcie_setup(void *blob, bd_t *bd)
+{
+       #ifdef CONFIG_PCIE1
+       ft_pcie_ls_setup(blob, FSL_PCIE_COMPAT, CONFIG_SYS_PCIE1_ADDR, PCIE1);
+       #endif
+
+       #ifdef CONFIG_PCIE2
+       ft_pcie_ls_setup(blob, FSL_PCIE_COMPAT, CONFIG_SYS_PCIE2_ADDR, PCIE2);
+       #endif
+}
+
+#else
+void ft_pcie_setup(void *blob, bd_t *bd)
+{
+}
+#endif
+
+void pci_init_board(void)
+{
+}
index 91821f4c7701797e7f1e6a173e45f3709ddb7000..c506f796fa1c78cb898dfa53b9b24fe7ca206846 100644 (file)
@@ -5,7 +5,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_I82365) += i82365.o
 obj-$(CONFIG_8xx) += mpc8xx_pcmcia.o
 obj-$(CONFIG_IDE_TI_CARDBUS) += ti_pci1410a.o
 obj-y += tqm8xx_pcmcia.o
diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
deleted file mode 100644 (file)
index 84a3d2e..0000000
+++ /dev/null
@@ -1,989 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- ********************************************************************
- *
- * Lots of code copied from:
- *
- * i82365.c 1.352 - Linux driver for Intel 82365 and compatible
- * PC Card controllers, and Yenta-compatible PCI-to-CardBus controllers.
- * (C) 1999 David A. Hinds <dahinds@users.sourceforge.net>
- */
-
-#include <common.h>
-
-#include <command.h>
-#include <pci.h>
-#include <pcmcia.h>
-#include <asm/io.h>
-
-#include <pcmcia/ss.h>
-#include <pcmcia/i82365.h>
-#include <pcmcia/yenta.h>
-#ifdef CONFIG_CPC45
-#include <pcmcia/cirrus.h>
-#else
-#include <pcmcia/ti113x.h>
-#endif
-
-static struct pci_device_id supported[] = {
-#ifdef CONFIG_CPC45
-       {PCI_VENDOR_ID_CIRRUS, PCI_DEVICE_ID_CIRRUS_6729},
-#else
-       {PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1510},
-#endif
-       {0, 0}
-};
-
-#define CYCLE_TIME     120
-
-#ifdef CONFIG_CPC45
-extern int SPD67290Init (void);
-#endif
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev);
-#endif
-
-typedef struct socket_info_t {
-       pci_dev_t       dev;
-       u_short         bcr;
-       u_char          pci_lat, cb_lat, sub_bus, cache;
-       u_int           cb_phys;
-
-       socket_cap_t    cap;
-       u_short         type;
-       u_int           flags;
-#ifdef CONFIG_CPC45
-       cirrus_state_t  c_state;
-#else
-       ti113x_state_t  state;
-#endif
-} socket_info_t;
-
-#ifdef CONFIG_CPC45
-/* These definitions must match the pcic table! */
-typedef enum pcic_id {
-       IS_PD6710, IS_PD672X, IS_VT83C469
-} pcic_id;
-
-typedef struct pcic_t {
-       char *name;
-} pcic_t;
-
-static pcic_t pcic[] = {
-       {" Cirrus PD6710: "},
-       {" Cirrus PD672x: "},
-       {" VIA VT83C469: "},
-};
-#endif
-
-static socket_info_t socket;
-static socket_state_t state;
-static struct pccard_mem_map mem;
-static struct pccard_io_map io;
-
-/*====================================================================*/
-
-/* Some PCI shortcuts */
-
-static int pci_readb (socket_info_t * s, int r, u_char * v)
-{
-       return pci_read_config_byte (s->dev, r, v);
-}
-static int pci_writeb (socket_info_t * s, int r, u_char v)
-{
-       return pci_write_config_byte (s->dev, r, v);
-}
-static int pci_readw (socket_info_t * s, int r, u_short * v)
-{
-       return pci_read_config_word (s->dev, r, v);
-}
-static int pci_writew (socket_info_t * s, int r, u_short v)
-{
-       return pci_write_config_word (s->dev, r, v);
-}
-#ifndef CONFIG_CPC45
-static int pci_readl (socket_info_t * s, int r, u_int * v)
-{
-       return pci_read_config_dword (s->dev, r, v);
-}
-static int pci_writel (socket_info_t * s, int r, u_int v)
-{
-       return pci_write_config_dword (s->dev, r, v);
-}
-#endif /* !CONFIG_CPC45 */
-
-/*====================================================================*/
-
-#ifdef CONFIG_CPC45
-
-#define cb_readb(s)            readb((s)->cb_phys + 1)
-#define cb_writeb(s, v)                writeb(v, (s)->cb_phys)
-#define cb_writeb2(s, v)       writeb(v, (s)->cb_phys + 1)
-#define cb_readl(s, r)         readl((s)->cb_phys + (r))
-#define cb_writel(s, r, v)     writel(v, (s)->cb_phys + (r))
-
-
-static u_char i365_get (socket_info_t * s, u_short reg)
-{
-       u_char val;
-#ifdef CONFIG_PCMCIA_SLOT_A
-       int slot = 0;
-#else
-       int slot = 1;
-#endif
-
-       val = I365_REG (slot, reg);
-
-       cb_writeb (s, val);
-       val = cb_readb (s);
-
-       debug ("i365_get slot:%x reg: %x val: %x\n", slot, reg, val);
-       return val;
-}
-
-static void i365_set (socket_info_t * s, u_short reg, u_char data)
-{
-#ifdef CONFIG_PCMCIA_SLOT_A
-       int slot = 0;
-#else
-       int slot = 1;
-#endif
-       u_char val;
-
-       val = I365_REG (slot, reg);
-
-       cb_writeb (s, val);
-       cb_writeb2 (s, data);
-
-       debug ("i365_set slot:%x reg: %x data:%x\n", slot, reg, data);
-}
-
-#else  /* ! CONFIG_CPC45 */
-
-#define cb_readb(s, r)         readb((s)->cb_phys + (r))
-#define cb_readl(s, r)         readl((s)->cb_phys + (r))
-#define cb_writeb(s, r, v)     writeb(v, (s)->cb_phys + (r))
-#define cb_writel(s, r, v)     writel(v, (s)->cb_phys + (r))
-
-static u_char i365_get (socket_info_t * s, u_short reg)
-{
-       return cb_readb (s, 0x0800 + reg);
-}
-
-static void i365_set (socket_info_t * s, u_short reg, u_char data)
-{
-       cb_writeb (s, 0x0800 + reg, data);
-}
-#endif /* CONFIG_CPC45 */
-
-static void i365_bset (socket_info_t * s, u_short reg, u_char mask)
-{
-       i365_set (s, reg, i365_get (s, reg) | mask);
-}
-
-static void i365_bclr (socket_info_t * s, u_short reg, u_char mask)
-{
-       i365_set (s, reg, i365_get (s, reg) & ~mask);
-}
-
-#if 0  /* not used */
-static void i365_bflip (socket_info_t * s, u_short reg, u_char mask, int b)
-{
-       u_char d = i365_get (s, reg);
-
-       i365_set (s, reg, (b) ? (d | mask) : (d & ~mask));
-}
-
-static u_short i365_get_pair (socket_info_t * s, u_short reg)
-{
-       return (i365_get (s, reg) + (i365_get (s, reg + 1) << 8));
-}
-#endif /* not used */
-
-static void i365_set_pair (socket_info_t * s, u_short reg, u_short data)
-{
-       i365_set (s, reg, data & 0xff);
-       i365_set (s, reg + 1, data >> 8);
-}
-
-#ifdef CONFIG_CPC45
-/*======================================================================
-
-    Code to save and restore global state information for Cirrus
-    PD67xx controllers, and to set and report global configuration
-    options.
-
-======================================================================*/
-
-#define flip(v,b,f) (v = ((f)<0) ? v : ((f) ? ((v)|(b)) : ((v)&(~b))))
-
-static void cirrus_get_state (socket_info_t * s)
-{
-       int i;
-       cirrus_state_t *p = &s->c_state;
-
-       p->misc1 = i365_get (s, PD67_MISC_CTL_1);
-       p->misc1 &= (PD67_MC1_MEDIA_ENA | PD67_MC1_INPACK_ENA);
-       p->misc2 = i365_get (s, PD67_MISC_CTL_2);
-       for (i = 0; i < 6; i++)
-               p->timer[i] = i365_get (s, PD67_TIME_SETUP (0) + i);
-
-}
-
-static void cirrus_set_state (socket_info_t * s)
-{
-       int i;
-       u_char misc;
-       cirrus_state_t *p = &s->c_state;
-
-       misc = i365_get (s, PD67_MISC_CTL_2);
-       i365_set (s, PD67_MISC_CTL_2, p->misc2);
-       if (misc & PD67_MC2_SUSPEND)
-               udelay (50000);
-       misc = i365_get (s, PD67_MISC_CTL_1);
-       misc &= ~(PD67_MC1_MEDIA_ENA | PD67_MC1_INPACK_ENA);
-       i365_set (s, PD67_MISC_CTL_1, misc | p->misc1);
-       for (i = 0; i < 6; i++)
-               i365_set (s, PD67_TIME_SETUP (0) + i, p->timer[i]);
-}
-
-static u_int cirrus_set_opts (socket_info_t * s)
-{
-       cirrus_state_t *p = &s->c_state;
-       u_int mask = 0xffff;
-       char buf[200] = {0};
-
-       if (has_ring == -1)
-               has_ring = 1;
-       flip (p->misc2, PD67_MC2_IRQ15_RI, has_ring);
-       flip (p->misc2, PD67_MC2_DYNAMIC_MODE, dynamic_mode);
-#if DEBUG
-       if (p->misc2 & PD67_MC2_IRQ15_RI)
-               strcat (buf, " [ring]");
-       if (p->misc2 & PD67_MC2_DYNAMIC_MODE)
-               strcat (buf, " [dyn mode]");
-       if (p->misc1 & PD67_MC1_INPACK_ENA)
-               strcat (buf, " [inpack]");
-#endif
-
-       if (p->misc2 & PD67_MC2_IRQ15_RI)
-               mask &= ~0x8000;
-       if (has_led > 0) {
-#if DEBUG
-               strcat (buf, " [led]");
-#endif
-               mask &= ~0x1000;
-       }
-       if (has_dma > 0) {
-#if DEBUG
-               strcat (buf, " [dma]");
-#endif
-               mask &= ~0x0600;
-               flip (p->misc2, PD67_MC2_FREQ_BYPASS, freq_bypass);
-#if DEBUG
-               if (p->misc2 & PD67_MC2_FREQ_BYPASS)
-                       strcat (buf, " [freq bypass]");
-#endif
-       }
-
-       if (setup_time >= 0)
-               p->timer[0] = p->timer[3] = setup_time;
-       if (cmd_time > 0) {
-               p->timer[1] = cmd_time;
-               p->timer[4] = cmd_time * 2 + 4;
-       }
-       if (p->timer[1] == 0) {
-               p->timer[1] = 6;
-               p->timer[4] = 16;
-               if (p->timer[0] == 0)
-                       p->timer[0] = p->timer[3] = 1;
-       }
-       if (recov_time >= 0)
-               p->timer[2] = p->timer[5] = recov_time;
-
-       debug ("i82365 Opt: %s [%d/%d/%d] [%d/%d/%d]\n",
-               buf,
-               p->timer[0], p->timer[1], p->timer[2],
-               p->timer[3], p->timer[4], p->timer[5]);
-
-       return mask;
-}
-
-#else  /* !CONFIG_CPC45 */
-
-/*======================================================================
-
-    Code to save and restore global state information for TI 1130 and
-    TI 1131 controllers, and to set and report global configuration
-    options.
-
-======================================================================*/
-
-static void ti113x_get_state (socket_info_t * s)
-{
-       ti113x_state_t *p = &s->state;
-
-       pci_readl (s, TI113X_SYSTEM_CONTROL, &p->sysctl);
-       pci_readb (s, TI113X_CARD_CONTROL, &p->cardctl);
-       pci_readb (s, TI113X_DEVICE_CONTROL, &p->devctl);
-       pci_readb (s, TI1250_DIAGNOSTIC, &p->diag);
-       pci_readl (s, TI12XX_IRQMUX, &p->irqmux);
-}
-
-static void ti113x_set_state (socket_info_t * s)
-{
-       ti113x_state_t *p = &s->state;
-
-       pci_writel (s, TI113X_SYSTEM_CONTROL, p->sysctl);
-       pci_writeb (s, TI113X_CARD_CONTROL, p->cardctl);
-       pci_writeb (s, TI113X_DEVICE_CONTROL, p->devctl);
-       pci_writeb (s, TI1250_MULTIMEDIA_CTL, 0);
-       pci_writeb (s, TI1250_DIAGNOSTIC, p->diag);
-       pci_writel (s, TI12XX_IRQMUX, p->irqmux);
-       i365_set_pair (s, TI113X_IO_OFFSET (0), 0);
-       i365_set_pair (s, TI113X_IO_OFFSET (1), 0);
-}
-
-static u_int ti113x_set_opts (socket_info_t * s)
-{
-       ti113x_state_t *p = &s->state;
-       u_int mask = 0xffff;
-
-       p->cardctl &= ~TI113X_CCR_ZVENABLE;
-       p->cardctl |= TI113X_CCR_SPKROUTEN;
-
-       return mask;
-}
-#endif /* CONFIG_CPC45 */
-
-/*======================================================================
-
-    Routines to handle common CardBus options
-
-======================================================================*/
-
-/* Default settings for PCI command configuration register */
-#define CMD_DFLT (PCI_COMMAND_IO|PCI_COMMAND_MEMORY| \
-                 PCI_COMMAND_MASTER|PCI_COMMAND_WAIT)
-
-static void cb_get_state (socket_info_t * s)
-{
-       pci_readb (s, PCI_CACHE_LINE_SIZE, &s->cache);
-       pci_readb (s, PCI_LATENCY_TIMER, &s->pci_lat);
-       pci_readb (s, CB_LATENCY_TIMER, &s->cb_lat);
-       pci_readb (s, CB_CARDBUS_BUS, &s->cap.cardbus);
-       pci_readb (s, CB_SUBORD_BUS, &s->sub_bus);
-       pci_readw (s, CB_BRIDGE_CONTROL, &s->bcr);
-}
-
-static void cb_set_state (socket_info_t * s)
-{
-#ifndef CONFIG_CPC45
-       pci_writel (s, CB_LEGACY_MODE_BASE, 0);
-       pci_writel (s, PCI_BASE_ADDRESS_0, s->cb_phys);
-#endif
-       pci_writew (s, PCI_COMMAND, CMD_DFLT);
-       pci_writeb (s, PCI_CACHE_LINE_SIZE, s->cache);
-       pci_writeb (s, PCI_LATENCY_TIMER, s->pci_lat);
-       pci_writeb (s, CB_LATENCY_TIMER, s->cb_lat);
-       pci_writeb (s, CB_CARDBUS_BUS, s->cap.cardbus);
-       pci_writeb (s, CB_SUBORD_BUS, s->sub_bus);
-       pci_writew (s, CB_BRIDGE_CONTROL, s->bcr);
-}
-
-static void cb_set_opts (socket_info_t * s)
-{
-#ifndef CONFIG_CPC45
-       if (s->cache == 0)
-               s->cache = 8;
-       if (s->pci_lat == 0)
-               s->pci_lat = 0xa8;
-       if (s->cb_lat == 0)
-               s->cb_lat = 0xb0;
-#endif
-}
-
-/*======================================================================
-
-    Power control for Cardbus controllers: used both for 16-bit and
-    Cardbus cards.
-
-======================================================================*/
-
-static int cb_set_power (socket_info_t * s, socket_state_t * state)
-{
-       u_int reg = 0;
-
-#ifdef CONFIG_CPC45
-
-       reg = I365_PWR_NORESET;
-       if (state->flags & SS_PWR_AUTO)
-               reg |= I365_PWR_AUTO;
-       if (state->flags & SS_OUTPUT_ENA)
-               reg |= I365_PWR_OUT;
-       if (state->Vpp != 0) {
-               if (state->Vpp == 120) {
-                       reg |= I365_VPP1_12V;
-                       puts (" 12V card found: ");
-               } else if (state->Vpp == state->Vcc) {
-                       reg |= I365_VPP1_5V;
-               } else {
-                       puts (" power not found: ");
-                       return -1;
-               }
-       }
-       if (state->Vcc != 0) {
-               reg |= I365_VCC_5V;
-               if (state->Vcc == 33) {
-                       puts (" 3.3V card found: ");
-                       i365_bset (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               } else if (state->Vcc == 50) {
-                       puts (" 5V card found: ");
-                       i365_bclr (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               } else {
-                       puts (" power not found: ");
-                       return -1;
-               }
-       }
-
-       if (reg != i365_get (s, I365_POWER)) {
-               reg = (I365_PWR_OUT | I365_PWR_NORESET | I365_VCC_5V | I365_VPP1_5V);
-               i365_set (s, I365_POWER, reg);
-       }
-
-#else  /* ! CONFIG_CPC45 */
-
-       /* restart card voltage detection if it seems appropriate */
-       if ((state->Vcc == 0) && (state->Vpp == 0) &&
-          !(cb_readl (s, CB_SOCKET_STATE) & CB_SS_VSENSE))
-               cb_writel (s, CB_SOCKET_FORCE, CB_SF_CVSTEST);
-       switch (state->Vcc) {
-       case 0:
-               reg = 0;
-               break;
-       case 33:
-               reg = CB_SC_VCC_3V;
-               break;
-       case 50:
-               reg = CB_SC_VCC_5V;
-               break;
-       default:
-               return -1;
-       }
-       switch (state->Vpp) {
-       case 0:
-               break;
-       case 33:
-               reg |= CB_SC_VPP_3V;
-               break;
-       case 50:
-               reg |= CB_SC_VPP_5V;
-               break;
-       case 120:
-               reg |= CB_SC_VPP_12V;
-               break;
-       default:
-               return -1;
-       }
-       if (reg != cb_readl (s, CB_SOCKET_CONTROL))
-               cb_writel (s, CB_SOCKET_CONTROL, reg);
-#endif /* CONFIG_CPC45 */
-       return 0;
-}
-
-/*======================================================================
-
-    Generic routines to get and set controller options
-
-======================================================================*/
-
-static void get_bridge_state (socket_info_t * s)
-{
-#ifdef CONFIG_CPC45
-       cirrus_get_state (s);
-#else
-       ti113x_get_state (s);
-#endif
-       cb_get_state (s);
-}
-
-static void set_bridge_state (socket_info_t * s)
-{
-       cb_set_state (s);
-       i365_set (s, I365_GBLCTL, 0x00);
-       i365_set (s, I365_GENCTL, 0x00);
-#ifdef CONFIG_CPC45
-       cirrus_set_state (s);
-#else
-       ti113x_set_state (s);
-#endif
-}
-
-static void set_bridge_opts (socket_info_t * s)
-{
-#ifdef CONFIG_CPC45
-       cirrus_set_opts (s);
-#else
-       ti113x_set_opts (s);
-#endif
-       cb_set_opts (s);
-}
-
-/*====================================================================*/
-#define PD67_EXT_INDEX         0x2e    /* Extension index */
-#define PD67_EXT_DATA          0x2f    /* Extension data */
-#define PD67_EXD_VS1(s)                (0x01 << ((s)<<1))
-
-#define pd67_ext_get(s, r) \
-    (i365_set(s, PD67_EXT_INDEX, r), i365_get(s, PD67_EXT_DATA))
-
-static int i365_get_status (socket_info_t * s, u_int * value)
-{
-       u_int status;
-#ifdef CONFIG_CPC45
-       u_char val;
-       u_char power, vcc, vpp;
-       u_int powerstate;
-#endif
-
-       status = i365_get (s, I365_IDENT);
-       status = i365_get (s, I365_STATUS);
-       *value = ((status & I365_CS_DETECT) == I365_CS_DETECT) ? SS_DETECT : 0;
-       if (i365_get (s, I365_INTCTL) & I365_PC_IOCARD) {
-               *value |= (status & I365_CS_STSCHG) ? 0 : SS_STSCHG;
-       } else {
-               *value |= (status & I365_CS_BVD1) ? 0 : SS_BATDEAD;
-               *value |= (status & I365_CS_BVD2) ? 0 : SS_BATWARN;
-       }
-       *value |= (status & I365_CS_WRPROT) ? SS_WRPROT : 0;
-       *value |= (status & I365_CS_READY) ? SS_READY : 0;
-       *value |= (status & I365_CS_POWERON) ? SS_POWERON : 0;
-
-#ifdef CONFIG_CPC45
-       /* Check for Cirrus CL-PD67xx chips */
-       i365_set (s, PD67_CHIP_INFO, 0);
-       val = i365_get (s, PD67_CHIP_INFO);
-       s->type = -1;
-       if ((val & PD67_INFO_CHIP_ID) == PD67_INFO_CHIP_ID) {
-               val = i365_get (s, PD67_CHIP_INFO);
-               if ((val & PD67_INFO_CHIP_ID) == 0) {
-                       s->type = (val & PD67_INFO_SLOTS) ? IS_PD672X : IS_PD6710;
-                       i365_set (s, PD67_EXT_INDEX, 0xe5);
-                       if (i365_get (s, PD67_EXT_INDEX) != 0xe5)
-                               s->type = IS_VT83C469;
-               }
-       } else {
-               printf ("no Cirrus Chip found\n");
-               *value = 0;
-               return -1;
-       }
-
-       power = i365_get (s, I365_POWER);
-       state.flags |= (power & I365_PWR_AUTO) ? SS_PWR_AUTO : 0;
-       state.flags |= (power & I365_PWR_OUT) ? SS_OUTPUT_ENA : 0;
-       vcc = power & I365_VCC_MASK;
-       vpp = power & I365_VPP1_MASK;
-       state.Vcc = state.Vpp = 0;
-       if((vcc== 0) || (vpp == 0)) {
-               /*
-                * On the Cirrus we get the info which card voltage
-                * we have in EXTERN DATA and write it to MISC_CTL1
-                */
-               powerstate = pd67_ext_get(s, PD67_EXTERN_DATA);
-               if (powerstate & PD67_EXD_VS1(0)) {
-                       /* 5V Card */
-                       i365_bclr (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               } else {
-                       /* 3.3V Card */
-                       i365_bset (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
-               }
-               i365_set (s, I365_POWER, (I365_PWR_OUT | I365_PWR_NORESET | I365_VCC_5V | I365_VPP1_5V));
-               power = i365_get (s, I365_POWER);
-       }
-       if (power & I365_VCC_5V) {
-               state.Vcc = (i365_get(s, PD67_MISC_CTL_1) & PD67_MC1_VCC_3V) ? 33 : 50;
-       }
-
-       if (power == I365_VPP1_12V)
-               state.Vpp = 120;
-
-       /* IO card, RESET flags, IO interrupt */
-       power = i365_get (s, I365_INTCTL);
-       state.flags |= (power & I365_PC_RESET) ? 0 : SS_RESET;
-       if (power & I365_PC_IOCARD)
-               state.flags |= SS_IOCARD;
-       state.io_irq = power & I365_IRQ_MASK;
-
-       /* Card status change mask */
-       power = i365_get (s, I365_CSCINT);
-       state.csc_mask = (power & I365_CSC_DETECT) ? SS_DETECT : 0;
-       if (state.flags & SS_IOCARD)
-               state.csc_mask |= (power & I365_CSC_STSCHG) ? SS_STSCHG : 0;
-       else {
-               state.csc_mask |= (power & I365_CSC_BVD1) ? SS_BATDEAD : 0;
-               state.csc_mask |= (power & I365_CSC_BVD2) ? SS_BATWARN : 0;
-               state.csc_mask |= (power & I365_CSC_READY) ? SS_READY : 0;
-       }
-       debug ("i82365: GetStatus(0) = flags %#3.3x, Vcc %d, Vpp %d, "
-               "io_irq %d, csc_mask %#2.2x\n", state.flags,
-               state.Vcc, state.Vpp, state.io_irq, state.csc_mask);
-
-#else  /* !CONFIG_CPC45 */
-
-       status = cb_readl (s, CB_SOCKET_STATE);
-       *value |= (status & CB_SS_32BIT) ? SS_CARDBUS : 0;
-       *value |= (status & CB_SS_3VCARD) ? SS_3VCARD : 0;
-       *value |= (status & CB_SS_XVCARD) ? SS_XVCARD : 0;
-       *value |= (status & CB_SS_VSENSE) ? 0 : SS_PENDING;
-       /* For now, ignore cards with unsupported voltage keys */
-       if (*value & SS_XVCARD)
-               *value &= ~(SS_DETECT | SS_3VCARD | SS_XVCARD);
-#endif /* CONFIG_CPC45 */
-       return 0;
-}      /* i365_get_status */
-
-static int i365_set_socket (socket_info_t * s, socket_state_t * state)
-{
-       u_char reg;
-
-       set_bridge_state (s);
-
-       /* IO card, RESET flag */
-       reg = 0;
-       reg |= (state->flags & SS_RESET) ? 0 : I365_PC_RESET;
-       reg |= (state->flags & SS_IOCARD) ? I365_PC_IOCARD : 0;
-       i365_set (s, I365_INTCTL, reg);
-
-#ifdef CONFIG_CPC45
-       cb_set_power (s, state);
-
-#if 0
-       /* Card status change interrupt mask */
-       reg = s->cs_irq << 4;
-       if (state->csc_mask & SS_DETECT)
-               reg |= I365_CSC_DETECT;
-       if (state->flags & SS_IOCARD) {
-               if (state->csc_mask & SS_STSCHG)
-                       reg |= I365_CSC_STSCHG;
-       } else {
-               if (state->csc_mask & SS_BATDEAD)
-                       reg |= I365_CSC_BVD1;
-               if (state->csc_mask & SS_BATWARN)
-                       reg |= I365_CSC_BVD2;
-               if (state->csc_mask & SS_READY)
-                       reg |= I365_CSC_READY;
-       }
-       i365_set (s, I365_CSCINT, reg);
-       i365_get (s, I365_CSC);
-#endif /* 0 */
-
-#else  /* !CONFIG_CPC45 */
-
-       reg = I365_PWR_NORESET;
-       if (state->flags & SS_PWR_AUTO)
-               reg |= I365_PWR_AUTO;
-       if (state->flags & SS_OUTPUT_ENA)
-               reg |= I365_PWR_OUT;
-
-       cb_set_power (s, state);
-       reg |= i365_get (s, I365_POWER) & (I365_VCC_MASK | I365_VPP1_MASK);
-
-       if (reg != i365_get (s, I365_POWER))
-               i365_set (s, I365_POWER, reg);
-#endif /* CONFIG_CPC45 */
-
-       return 0;
-}      /* i365_set_socket */
-
-/*====================================================================*/
-
-static int i365_set_mem_map (socket_info_t * s, struct pccard_mem_map *mem)
-{
-       u_short base, i;
-       u_char map;
-
-       debug ("i82365: SetMemMap(%d, %#2.2x, %d ns, %#5.5lx-%#5.5lx, %#5.5x)\n",
-               mem->map, mem->flags, mem->speed,
-               mem->sys_start, mem->sys_stop, mem->card_start);
-
-       map = mem->map;
-       if ((map > 4) ||
-           (mem->card_start > 0x3ffffff) ||
-           (mem->sys_start > mem->sys_stop) ||
-           (mem->speed > 1000)) {
-               return -1;
-       }
-
-       /* Turn off the window before changing anything */
-       if (i365_get (s, I365_ADDRWIN) & I365_ENA_MEM (map))
-               i365_bclr (s, I365_ADDRWIN, I365_ENA_MEM (map));
-
-       /* Take care of high byte, for PCI controllers */
-       i365_set (s, CB_MEM_PAGE (map), mem->sys_start >> 24);
-
-       base = I365_MEM (map);
-       i = (mem->sys_start >> 12) & 0x0fff;
-       if (mem->flags & MAP_16BIT)
-               i |= I365_MEM_16BIT;
-       if (mem->flags & MAP_0WS)
-               i |= I365_MEM_0WS;
-       i365_set_pair (s, base + I365_W_START, i);
-
-       i = (mem->sys_stop >> 12) & 0x0fff;
-       switch (mem->speed / CYCLE_TIME) {
-       case 0:
-               break;
-       case 1:
-               i |= I365_MEM_WS0;
-               break;
-       case 2:
-               i |= I365_MEM_WS1;
-               break;
-       default:
-               i |= I365_MEM_WS1 | I365_MEM_WS0;
-               break;
-       }
-       i365_set_pair (s, base + I365_W_STOP, i);
-
-#ifdef CONFIG_CPC45
-       i = 0;
-#else
-       i = ((mem->card_start - mem->sys_start) >> 12) & 0x3fff;
-#endif
-       if (mem->flags & MAP_WRPROT)
-               i |= I365_MEM_WRPROT;
-       if (mem->flags & MAP_ATTRIB)
-               i |= I365_MEM_REG;
-       i365_set_pair (s, base + I365_W_OFF, i);
-
-#ifdef CONFIG_CPC45
-       /* set System Memory map Upper Adress */
-       i365_set(s, PD67_EXT_INDEX, PD67_MEM_PAGE(map));
-       i365_set(s, PD67_EXT_DATA, ((mem->sys_start >> 24) & 0xff));
-#endif
-
-       /* Turn on the window if necessary */
-       if (mem->flags & MAP_ACTIVE)
-               i365_bset (s, I365_ADDRWIN, I365_ENA_MEM (map));
-       return 0;
-}      /* i365_set_mem_map */
-
-static int i365_set_io_map (socket_info_t * s, struct pccard_io_map *io)
-{
-       u_char map, ioctl;
-
-       map = io->map;
-       /* comment out: comparison is always false due to limited range of data type */
-       if ((map > 1) || /* (io->start > 0xffff) || (io->stop > 0xffff) || */
-           (io->stop < io->start))
-               return -1;
-       /* Turn off the window before changing anything */
-       if (i365_get (s, I365_ADDRWIN) & I365_ENA_IO (map))
-               i365_bclr (s, I365_ADDRWIN, I365_ENA_IO (map));
-       i365_set_pair (s, I365_IO (map) + I365_W_START, io->start);
-       i365_set_pair (s, I365_IO (map) + I365_W_STOP, io->stop);
-       ioctl = i365_get (s, I365_IOCTL) & ~I365_IOCTL_MASK (map);
-       if (io->speed)
-               ioctl |= I365_IOCTL_WAIT (map);
-       if (io->flags & MAP_0WS)
-               ioctl |= I365_IOCTL_0WS (map);
-       if (io->flags & MAP_16BIT)
-               ioctl |= I365_IOCTL_16BIT (map);
-       if (io->flags & MAP_AUTOSZ)
-               ioctl |= I365_IOCTL_IOCS16 (map);
-       i365_set (s, I365_IOCTL, ioctl);
-       /* Turn on the window if necessary */
-       if (io->flags & MAP_ACTIVE)
-               i365_bset (s, I365_ADDRWIN, I365_ENA_IO (map));
-       return 0;
-}      /* i365_set_io_map */
-
-/*====================================================================*/
-
-int i82365_init (void)
-{
-       u_int val;
-       int i;
-
-#ifdef CONFIG_CPC45
-       if (SPD67290Init () != 0)
-               return 1;
-#endif
-       if ((socket.dev = pci_find_devices (supported, 0)) < 0) {
-               /* Controller not found */
-               return 1;
-       }
-       debug ("i82365 Device Found!\n");
-
-       pci_read_config_dword (socket.dev, PCI_BASE_ADDRESS_0, &socket.cb_phys);
-       socket.cb_phys &= ~0xf;
-
-#ifdef CONFIG_CPC45
-       /* + 0xfe000000 see MPC 8245 Users Manual Adress Map B */
-       socket.cb_phys += 0xfe000000;
-#endif
-
-       get_bridge_state (&socket);
-       set_bridge_opts (&socket);
-
-       i = i365_get_status (&socket, &val);
-
-#ifdef CONFIG_CPC45
-       if (i > -1) {
-               puts (pcic[socket.type].name);
-       } else {
-               printf ("i82365: Controller not found.\n");
-               return 1;
-       }
-       if((val & SS_DETECT) != SS_DETECT){
-               puts ("No card\n");
-               return 1;
-       }
-#else  /* !CONFIG_CPC45 */
-       if (val & SS_DETECT) {
-               if (val & SS_3VCARD) {
-                       state.Vcc = state.Vpp = 33;
-                       puts (" 3.3V card found: ");
-               } else if (!(val & SS_XVCARD)) {
-                       state.Vcc = state.Vpp = 50;
-                       puts (" 5.0V card found: ");
-               } else {
-                       puts ("i82365: unsupported voltage key\n");
-                       state.Vcc = state.Vpp = 0;
-               }
-       } else {
-               /* No card inserted */
-               puts ("No card\n");
-               return 1;
-       }
-#endif /* CONFIG_CPC45 */
-
-#ifdef CONFIG_CPC45
-       state.flags |= SS_OUTPUT_ENA;
-#else
-       state.flags = SS_IOCARD | SS_OUTPUT_ENA;
-       state.csc_mask = 0;
-       state.io_irq = 0;
-#endif
-
-       i365_set_socket (&socket, &state);
-
-       for (i = 500; i; i--) {
-               if ((i365_get (&socket, I365_STATUS) & I365_CS_READY))
-                       break;
-               udelay (1000);
-       }
-
-       if (i == 0) {
-               /* PC Card not ready for data transfer */
-               puts ("i82365 PC Card not ready for data transfer\n");
-               return 1;
-       }
-       debug (" PC Card ready for data transfer: ");
-
-       mem.map = 0;
-       mem.flags = MAP_ATTRIB | MAP_ACTIVE;
-       mem.speed = 300;
-       mem.sys_start = CONFIG_SYS_PCMCIA_MEM_ADDR;
-       mem.sys_stop = CONFIG_SYS_PCMCIA_MEM_ADDR + CONFIG_SYS_PCMCIA_MEM_SIZE - 1;
-       mem.card_start = 0;
-       i365_set_mem_map (&socket, &mem);
-
-#ifdef CONFIG_CPC45
-       mem.map = 1;
-       mem.flags = MAP_ACTIVE;
-       mem.speed = 300;
-       mem.sys_start = CONFIG_SYS_PCMCIA_MEM_ADDR + CONFIG_SYS_PCMCIA_MEM_SIZE;
-       mem.sys_stop = CONFIG_SYS_PCMCIA_MEM_ADDR + (2 * CONFIG_SYS_PCMCIA_MEM_SIZE) - 1;
-       mem.card_start = 0;
-       i365_set_mem_map (&socket, &mem);
-
-#else  /* !CONFIG_CPC45 */
-
-       io.map = 0;
-       io.flags = MAP_AUTOSZ | MAP_ACTIVE;
-       io.speed = 0;
-       io.start = 0x0100;
-       io.stop = 0x010F;
-       i365_set_io_map (&socket, &io);
-
-#endif /* CONFIG_CPC45 */
-
-#ifdef DEBUG
-       i82365_dump_regions (socket.dev);
-#endif
-
-       return 0;
-}
-
-void i82365_exit (void)
-{
-       io.map = 0;
-       io.flags = 0;
-       io.speed = 0;
-       io.start = 0;
-       io.stop = 0x1;
-
-       i365_set_io_map (&socket, &io);
-
-       mem.map = 0;
-       mem.flags = 0;
-       mem.speed = 0;
-       mem.sys_start = 0;
-       mem.sys_stop = 0x1000;
-       mem.card_start = 0;
-
-       i365_set_mem_map (&socket, &mem);
-
-#ifdef CONFIG_CPC45
-       mem.map = 1;
-       mem.flags = 0;
-       mem.speed = 0;
-       mem.sys_start = 0;
-       mem.sys_stop = 0x1000;
-       mem.card_start = 0;
-
-       i365_set_mem_map (&socket, &mem);
-#else  /* !CONFIG_CPC45 */
-       socket.state.sysctl &= 0xFFFF00FF;
-#endif
-       state.Vcc = state.Vpp = 0;
-
-       i365_set_socket (&socket, &state);
-}
-
-/*======================================================================
-
-    Debug stuff
-
-======================================================================*/
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev)
-{
-       u_int tmp[2];
-       u_int *mem = (void *) socket.cb_phys;
-       u_char *cis = (void *) CONFIG_SYS_PCMCIA_MEM_ADDR;
-       u_char *ide = (void *) (CONFIG_SYS_ATA_BASE_ADDR + CONFIG_SYS_ATA_REG_OFFSET);
-
-       pci_read_config_dword (dev, 0x00, tmp + 0);
-       pci_read_config_dword (dev, 0x80, tmp + 1);
-
-       printf ("PCI CONF: %08X ... %08X\n",
-               tmp[0], tmp[1]);
-       printf ("PCI MEM:  ... %08X ... %08X\n",
-               mem[0x8 / 4], mem[0x800 / 4]);
-       printf ("CIS:      ...%c%c%c%c%c%c%c%c...\n",
-               cis[0x38], cis[0x3a], cis[0x3c], cis[0x3e],
-               cis[0x40], cis[0x42], cis[0x44], cis[0x48]);
-       printf ("CIS CONF: %02X %02X %02X ...\n",
-               cis[0x200], cis[0x202], cis[0x204]);
-       printf ("IDE:      %02X %02X %02X %02X %02X %02X %02X %02X\n",
-               ide[0], ide[1], ide[2], ide[3],
-               ide[4], ide[5], ide[6], ide[7]);
-}
-#endif /* DEBUG */
index af774260ee368dbf9925f546a3b67d06318849ed..1b41e391583d16d76db701076c0a94f5394acae9 100644 (file)
@@ -58,15 +58,9 @@ static const u_int m8xx_size_to_gray[M8XX_SIZES_NO] =
 
 /* -------------------------------------------------------------------- */
 
-#if    defined(CONFIG_LWMON) || defined(CONFIG_NSCU)
-#define        CONFIG_SYS_PCMCIA_TIMING        (       PCMCIA_SHT(9)   \
-                               |       PCMCIA_SST(3)   \
-                               |       PCMCIA_SL(12))
-#else
 #define        CONFIG_SYS_PCMCIA_TIMING        (       PCMCIA_SHT(2)   \
                                |       PCMCIA_SST(4)   \
                                |       PCMCIA_SL(9))
-#endif
 
 /* -------------------------------------------------------------------- */
 
index 8b7447853bf7de655dfdcc62bec75cc1f82e0d4f..45dcb54d71de9231ee6bde55a631eb6f5b87c5c2 100644 (file)
 #if    defined(CONFIG_PCMCIA)  \
        && defined(CONFIG_TQM8xxL)
 
-#if    defined(CONFIG_VIRTLAB2)
-#define        PCMCIA_BOARD_MSG        "Virtlab2"
-#elif  defined(CONFIG_TQM8xxL)
+#if    defined(CONFIG_TQM8xxL)
 #define        PCMCIA_BOARD_MSG        "TQM8xxL"
 #endif
 
-#if    defined(CONFIG_NSCU)
-
-static inline void power_config(int slot) {}
-static inline void power_off(int slot) {}
-static inline void power_on_5_0(int slot) {}
-static inline void power_on_3_3(int slot) {}
-
-#elif  defined(CONFIG_VIRTLAB2)
-
-static inline void power_config(int slot) {}
-
-static inline void power_off(int slot)
-{
-       volatile unsigned __iomem *addr;
-       addr = (volatile unsigned __iomem *)PCMCIA_CTRL;
-
-       out_be32(addr, 0);
-}
-
-static inline void power_on_5_0(int slot)
-{
-       volatile unsigned __iomem *addr;
-       addr = (volatile unsigned __iomem *)PCMCIA_CTRL;
-
-       /* Enable 5V Vccout */
-       out_be32(addr, 2);
-}
-
-static inline void power_on_3_3(int slot)
-{
-       volatile unsigned __iomem *addr;
-       addr = (volatile unsigned __iomem *)PCMCIA_CTRL;
-
-       /* Enable 3.3V Vccout */
-       out_be32(addr, 1);
-}
-
-#else
-
 static inline void power_config(int slot)
 {
        immap_t *immap = (immap_t *)CONFIG_SYS_IMMR;
@@ -98,8 +57,6 @@ static inline void power_on_3_3(int slot)
        setbits_be16(&immap->im_ioport.iop_pcdir, 0x0002 | 0x0004);
 }
 
-#endif
-
 /*
  * Function to retrieve the PIPR register, used for debuging purposes.
  */
@@ -121,11 +78,7 @@ static inline int check_card_is_absent(int slot)
        return pipr & (0x18000000 >> (slot << 4));
 }
 
-#ifdef NSCU_OE_INV
-#define        NSCU_GCRX_CXOE  0
-#else
 #define        NSCU_GCRX_CXOE  __MY_PCMCIA_GCRX_CXOE
-#endif
 
 int pcmcia_hardware_enable(int slot)
 {
@@ -243,7 +196,6 @@ int pcmcia_hardware_disable(int slot)
 
 int pcmcia_voltage_set(int slot, int vcc, int vpp)
 {
-#ifndef CONFIG_NSCU
        u_long reg;
        uint32_t pipr = 0;
 
@@ -296,7 +248,6 @@ done:
        udelay(500);
 
        debug("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n", slot+'A');
-#endif /* CONFIG_NSCU */
        return 0;
 }
 
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e68e16b3211757271a27e99d0089fbf4b29fc83f 100644 (file)
@@ -0,0 +1,65 @@
+config AXP221_POWER
+       boolean "axp221 / axp223 pmic support"
+       depends on MACH_SUN6I || MACH_SUN8I
+       default y
+       ---help---
+       Say y here to enable support for the axp221 / axp223 pmic found on most
+       sun6i (A31) / sun8i (A23) boards.
+
+config AXP221_DCDC1_VOLT
+       int "axp221 dcdc1 voltage"
+       depends on AXP221_POWER
+       default 3000
+       ---help---
+       Set the voltage (mV) to program the axp221 dcdc1 at, set to 0 to
+       disable dcdc1. This is typically used as generic 3.3V IO voltage for
+       things like GPIO-s, sdcard interfaces, etc. On most boards this is
+       undervolted to 3.0V to safe battery.
+
+config AXP221_DLDO1_VOLT
+       int "axp221 dldo1 voltage"
+       depends on AXP221_POWER
+       default 0
+       ---help---
+       Set the voltage (mV) to program the axp221 dldo1 at, set to 0 to
+       disable dldo1. On sun6i (A31) boards with ethernet this is often used
+       to power the ethernet phy. On sun8i (A23) boards this is often used to
+       power the wifi.
+
+config AXP221_DLDO4_VOLT
+       int "axp221 dldo4 voltage"
+       depends on AXP221_POWER
+       default 0
+       ---help---
+       Set the voltage (mV) to program the axp221 dldo4 at, set to 0 to
+       disable dldo4.
+
+config AXP221_ALDO1_VOLT
+       int "axp221 aldo1 voltage"
+       depends on AXP221_POWER
+       default 0
+       ---help---
+       Set the voltage (mV) to program the axp221 aldo1 at, set to 0 to
+       disable aldo1. On sun6i (A31) boards which have a wifi module this is
+       often used to power the wifi module.
+
+config AXP221_ALDO2_VOLT
+       int "axp221 aldo2 voltage"
+       depends on AXP221_POWER
+       default 0 if MACH_SUN6I
+       default 2500 if MACH_SUN8I
+       ---help---
+       Set the voltage (mV) to program the axp221 aldo2 at, set to 0 to
+       disable aldo2. On sun6i (A31) boards this is typically unused and
+       should be disabled, if it is used for LPDDR2 it should be set to 1.8V.
+       On sun8i (A23) this is typically connected to VDD-DLL and must be set
+       to 2.5V.
+
+config AXP221_ALDO3_VOLT
+       int "axp221 aldo3 voltage"
+       depends on AXP221_POWER
+       default 3000
+       ---help---
+       Set the voltage (mV) to program the axp221 aldo3 at, set to 0 to
+       disable aldo3. This is typically connected to VCC-PLL and AVCC and
+       must be set to 3V.
index dc64e4d32bffb6d56e679620e229caa1f9f14909..214565241ed31aa9d185d0a7579f8e2cefee41dd 100644 (file)
@@ -5,8 +5,10 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+obj-$(CONFIG_AS3722_POWER)     += as3722.o
 obj-$(CONFIG_AXP152_POWER)     += axp152.o
 obj-$(CONFIG_AXP209_POWER)     += axp209.o
+obj-$(CONFIG_AXP221_POWER)     += axp221.o
 obj-$(CONFIG_EXYNOS_TMU)       += exynos-tmu.o
 obj-$(CONFIG_FTPMU010_POWER)   += ftpmu010.o
 obj-$(CONFIG_TPS6586X_POWER)   += tps6586x.o
diff --git a/drivers/power/as3722.c b/drivers/power/as3722.c
new file mode 100644 (file)
index 0000000..4c6de79
--- /dev/null
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2014 NVIDIA Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#define pr_fmt(fmt) "as3722: " fmt
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <i2c.h>
+
+#include <power/as3722.h>
+
+#define AS3722_SD_VOLTAGE(n) (0x00 + (n))
+#define AS3722_GPIO_CONTROL(n) (0x08 + (n))
+#define  AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH (1 << 0)
+#define  AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDL (7 << 0)
+#define  AS3722_GPIO_CONTROL_INVERT (1 << 7)
+#define AS3722_LDO_VOLTAGE(n) (0x10 + (n))
+#define AS3722_GPIO_SIGNAL_OUT 0x20
+#define AS3722_SD_CONTROL 0x4d
+#define AS3722_LDO_CONTROL 0x4e
+#define AS3722_ASIC_ID1 0x90
+#define  AS3722_DEVICE_ID 0x0c
+#define AS3722_ASIC_ID2 0x91
+
+static int as3722_read(struct udevice *pmic, u8 reg, u8 *value)
+{
+       int err;
+
+       err = i2c_read(pmic, reg, value, 1);
+       if (err < 0)
+               return err;
+
+       return 0;
+}
+
+static int as3722_write(struct udevice *pmic, u8 reg, u8 value)
+{
+       int err;
+
+       err = i2c_write(pmic, reg, &value, 1);
+       if (err < 0)
+               return err;
+
+       return 0;
+}
+
+static int as3722_read_id(struct udevice *pmic, u8 *id, u8 *revision)
+{
+       int err;
+
+       err = as3722_read(pmic, AS3722_ASIC_ID1, id);
+       if (err) {
+               error("failed to read ID1 register: %d", err);
+               return err;
+       }
+
+       err = as3722_read(pmic, AS3722_ASIC_ID2, revision);
+       if (err) {
+               error("failed to read ID2 register: %d", err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_sd_enable(struct udevice *pmic, unsigned int sd)
+{
+       u8 value;
+       int err;
+
+       if (sd > 6)
+               return -EINVAL;
+
+       err = as3722_read(pmic, AS3722_SD_CONTROL, &value);
+       if (err) {
+               error("failed to read SD control register: %d", err);
+               return err;
+       }
+
+       value |= 1 << sd;
+
+       err = as3722_write(pmic, AS3722_SD_CONTROL, value);
+       if (err < 0) {
+               error("failed to write SD control register: %d", err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_sd_set_voltage(struct udevice *pmic, unsigned int sd, u8 value)
+{
+       int err;
+
+       if (sd > 6)
+               return -EINVAL;
+
+       err = as3722_write(pmic, AS3722_SD_VOLTAGE(sd), value);
+       if (err < 0) {
+               error("failed to write SD%u voltage register: %d", sd, err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_ldo_enable(struct udevice *pmic, unsigned int ldo)
+{
+       u8 value;
+       int err;
+
+       if (ldo > 11)
+               return -EINVAL;
+
+       err = as3722_read(pmic, AS3722_LDO_CONTROL, &value);
+       if (err) {
+               error("failed to read LDO control register: %d", err);
+               return err;
+       }
+
+       value |= 1 << ldo;
+
+       err = as3722_write(pmic, AS3722_LDO_CONTROL, value);
+       if (err < 0) {
+               error("failed to write LDO control register: %d", err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_ldo_set_voltage(struct udevice *pmic, unsigned int ldo, u8 value)
+{
+       int err;
+
+       if (ldo > 11)
+               return -EINVAL;
+
+       err = as3722_write(pmic, AS3722_LDO_VOLTAGE(ldo), value);
+       if (err < 0) {
+               error("failed to write LDO%u voltage register: %d", ldo,
+                     err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_gpio_configure(struct udevice *pmic, unsigned int gpio,
+                         unsigned long flags)
+{
+       u8 value = 0;
+       int err;
+
+       if (flags & AS3722_GPIO_OUTPUT_VDDH)
+               value |= AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH;
+
+       if (flags & AS3722_GPIO_INVERT)
+               value |= AS3722_GPIO_CONTROL_INVERT;
+
+       err = as3722_write(pmic, AS3722_GPIO_CONTROL(gpio), value);
+       if (err) {
+               error("failed to configure GPIO#%u: %d", gpio, err);
+               return err;
+       }
+
+       return 0;
+}
+
+static int as3722_gpio_set(struct udevice *pmic, unsigned int gpio,
+                          unsigned int level)
+{
+       const char *l;
+       u8 value;
+       int err;
+
+       if (gpio > 7)
+               return -EINVAL;
+
+       err = as3722_read(pmic, AS3722_GPIO_SIGNAL_OUT, &value);
+       if (err < 0) {
+               error("failed to read GPIO signal out register: %d", err);
+               return err;
+       }
+
+       if (level == 0) {
+               value &= ~(1 << gpio);
+               l = "low";
+       } else {
+               value |= 1 << gpio;
+               l = "high";
+       }
+
+       err = as3722_write(pmic, AS3722_GPIO_SIGNAL_OUT, value);
+       if (err) {
+               error("failed to set GPIO#%u %s: %d", gpio, l, err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_gpio_direction_output(struct udevice *pmic, unsigned int gpio,
+                                unsigned int level)
+{
+       u8 value;
+       int err;
+
+       if (gpio > 7)
+               return -EINVAL;
+
+       if (level == 0)
+               value = AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDL;
+       else
+               value = AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH;
+
+       err = as3722_write(pmic, AS3722_GPIO_CONTROL(gpio), value);
+       if (err) {
+               error("failed to configure GPIO#%u as output: %d", gpio, err);
+               return err;
+       }
+
+       err = as3722_gpio_set(pmic, gpio, level);
+       if (err < 0) {
+               error("failed to set GPIO#%u high: %d", gpio, err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_init(struct udevice **devp)
+{
+       struct udevice *pmic;
+       u8 id, revision;
+       const unsigned int bus = 0;
+       const unsigned int address = 0x40;
+       int err;
+
+       err = i2c_get_chip_for_busnum(bus, address, &pmic);
+       if (err)
+               return err;
+       err = as3722_read_id(pmic, &id, &revision);
+       if (err < 0) {
+               error("failed to read ID: %d", err);
+               return err;
+       }
+
+       if (id != AS3722_DEVICE_ID) {
+               error("unknown device");
+               return -ENOENT;
+       }
+
+       debug("AS3722 revision %#x found on I2C bus %u, address %#x\n",
+             revision, bus, address);
+       *devp = pmic;
+
+       return 0;
+}
index 9798e5bf7c621ebdba0c27b10f92e43796347609..3b1a6a73aed8ecfd8f748c1ffc37db8fff747e2e 100644 (file)
@@ -18,6 +18,11 @@ enum axp209_reg {
        AXP209_LDO3_VOLTAGE = 0x29,
        AXP209_IRQ_STATUS5 = 0x4c,
        AXP209_SHUTDOWN = 0x32,
+       AXP209_GPIO0_CTRL = 0x90,
+       AXP209_GPIO1_CTRL = 0x92,
+       AXP209_GPIO2_CTRL = 0x93,
+       AXP209_GPIO_STATE = 0x94,
+       AXP209_GPIO3_CTRL = 0x95,
 };
 
 #define AXP209_POWER_STATUS_ON_BY_DC   (1 << 0)
@@ -27,6 +32,15 @@ enum axp209_reg {
 
 #define AXP209_POWEROFF                        (1 << 7)
 
+#define AXP209_GPIO_OUTPUT_LOW         0x00 /* Drive pin low */
+#define AXP209_GPIO_OUTPUT_HIGH                0x01 /* Drive pin high */
+#define AXP209_GPIO_INPUT              0x02 /* Float pin */
+
+/* GPIO3 is different from the others */
+#define AXP209_GPIO3_OUTPUT_LOW                0x00 /* Drive pin low, Output mode */
+#define AXP209_GPIO3_OUTPUT_HIGH       0x02 /* Float pin, Output mode */
+#define AXP209_GPIO3_INPUT             0x06 /* Float pin, Input mode */
+
 static int axp209_write(enum axp209_reg reg, u8 val)
 {
        return i2c_write(0x34, reg, 1, &val, 1);
@@ -165,3 +179,61 @@ int axp209_power_button(void)
 
        return v & AXP209_IRQ5_PEK_DOWN;
 }
+
+static u8 axp209_get_gpio_ctrl_reg(unsigned int pin)
+{
+       switch (pin) {
+       case 0: return AXP209_GPIO0_CTRL;
+       case 1: return AXP209_GPIO1_CTRL;
+       case 2: return AXP209_GPIO2_CTRL;
+       case 3: return AXP209_GPIO3_CTRL;
+       }
+       return 0;
+}
+
+int axp_gpio_direction_input(unsigned int pin)
+{
+       u8 reg = axp209_get_gpio_ctrl_reg(pin);
+       /* GPIO3 is "special" */
+       u8 val = (pin == 3) ? AXP209_GPIO3_INPUT : AXP209_GPIO_INPUT;
+
+       return axp209_write(reg, val);
+}
+
+int axp_gpio_direction_output(unsigned int pin, unsigned int val)
+{
+       u8 reg = axp209_get_gpio_ctrl_reg(pin);
+
+       if (val) {
+               val = (pin == 3) ? AXP209_GPIO3_OUTPUT_HIGH :
+                                  AXP209_GPIO_OUTPUT_HIGH;
+       } else {
+               val = (pin == 3) ? AXP209_GPIO3_OUTPUT_LOW :
+                                  AXP209_GPIO_OUTPUT_LOW;
+       }
+
+       return axp209_write(reg, val);
+}
+
+int axp_gpio_get_value(unsigned int pin)
+{
+       u8 val, mask;
+       int rc;
+
+       if (pin == 3) {
+               rc = axp209_read(AXP209_GPIO3_CTRL, &val);
+               mask = 1;
+       } else {
+               rc = axp209_read(AXP209_GPIO_STATE, &val);
+               mask = 1 << (pin + 4);
+       }
+       if (rc)
+               return rc;
+
+       return (val & mask) ? 1 : 0;
+}
+
+int axp_gpio_set_value(unsigned int pin, unsigned int val)
+{
+       return axp_gpio_direction_output(pin, val);
+}
diff --git a/drivers/power/axp221.c b/drivers/power/axp221.c
new file mode 100644 (file)
index 0000000..4c86f09
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ * AXP221 and AXP223 driver
+ *
+ * IMPORTANT when making changes to this file check that the registers
+ * used are the same for the axp221 and axp223.
+ *
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ * (C) Copyright 2013 Oliver Schinagl <oliver@schinagl.nl>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <asm/arch/p2wi.h>
+#include <asm/arch/rsb.h>
+#include <axp221.h>
+
+/*
+ * The axp221 uses the p2wi bus, the axp223 is identical (for all registers
+ * used sofar) but uses the rsb bus. These functions abstract this.
+ */
+static int pmic_bus_init(void)
+{
+#ifdef CONFIG_MACH_SUN6I
+       p2wi_init();
+       return p2wi_change_to_p2wi_mode(AXP221_CHIP_ADDR, AXP221_CTRL_ADDR,
+                                       AXP221_INIT_DATA);
+#else
+       int ret;
+
+       rsb_init();
+
+       ret = rsb_set_device_mode(AXP223_DEVICE_MODE_DATA);
+       if (ret)
+               return ret;
+
+       return rsb_set_device_address(AXP223_DEVICE_ADDR, AXP223_RUNTIME_ADDR);
+#endif
+}
+
+static int pmic_bus_read(const u8 addr, u8 *data)
+{
+#ifdef CONFIG_MACH_SUN6I
+       return p2wi_read(addr, data);
+#else
+       return rsb_read(AXP223_RUNTIME_ADDR, addr, data);
+#endif
+}
+
+static int pmic_bus_write(const u8 addr, u8 data)
+{
+#ifdef CONFIG_MACH_SUN6I
+       return p2wi_write(addr, data);
+#else
+       return rsb_write(AXP223_RUNTIME_ADDR, addr, data);
+#endif
+}
+
+static u8 axp221_mvolt_to_cfg(int mvolt, int min, int max, int div)
+{
+       if (mvolt < min)
+               mvolt = min;
+       else if (mvolt > max)
+               mvolt = max;
+
+       return (mvolt - min) / div;
+}
+
+static int axp221_setbits(u8 reg, u8 bits)
+{
+       int ret;
+       u8 val;
+
+       ret = pmic_bus_read(reg, &val);
+       if (ret)
+               return ret;
+
+       val |= bits;
+       return pmic_bus_write(reg, val);
+}
+
+static int axp221_clrbits(u8 reg, u8 bits)
+{
+       int ret;
+       u8 val;
+
+       ret = pmic_bus_read(reg, &val);
+       if (ret)
+               return ret;
+
+       val &= ~bits;
+       return pmic_bus_write(reg, val);
+}
+
+int axp221_set_dcdc1(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 1600, 3400, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL1,
+                                     AXP221_OUTPUT_CTRL1_DCDC1_EN);
+
+       ret = pmic_bus_write(AXP221_DCDC1_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       ret = axp221_setbits(AXP221_OUTPUT_CTRL2,
+                            AXP221_OUTPUT_CTRL2_DCDC1SW_EN);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL1,
+                             AXP221_OUTPUT_CTRL1_DCDC1_EN);
+}
+
+int axp221_set_dcdc2(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 600, 1540, 20);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL1,
+                                     AXP221_OUTPUT_CTRL1_DCDC2_EN);
+
+       ret = pmic_bus_write(AXP221_DCDC2_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL1,
+                             AXP221_OUTPUT_CTRL1_DCDC2_EN);
+}
+
+int axp221_set_dcdc3(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 600, 1860, 20);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL1,
+                                     AXP221_OUTPUT_CTRL1_DCDC3_EN);
+
+       ret = pmic_bus_write(AXP221_DCDC3_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL1,
+                             AXP221_OUTPUT_CTRL1_DCDC3_EN);
+}
+
+int axp221_set_dcdc4(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 600, 1540, 20);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL1,
+                                     AXP221_OUTPUT_CTRL1_DCDC4_EN);
+
+       ret = pmic_bus_write(AXP221_DCDC4_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL1,
+                             AXP221_OUTPUT_CTRL1_DCDC4_EN);
+}
+
+int axp221_set_dcdc5(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 1000, 2550, 50);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL1,
+                                     AXP221_OUTPUT_CTRL1_DCDC5_EN);
+
+       ret = pmic_bus_write(AXP221_DCDC5_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL1,
+                             AXP221_OUTPUT_CTRL1_DCDC5_EN);
+}
+
+int axp221_set_dldo1(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL2,
+                                     AXP221_OUTPUT_CTRL2_DLDO1_EN);
+
+       ret = pmic_bus_write(AXP221_DLDO1_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL2,
+                             AXP221_OUTPUT_CTRL2_DLDO1_EN);
+}
+
+int axp221_set_dldo2(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL2,
+                                     AXP221_OUTPUT_CTRL2_DLDO2_EN);
+
+       ret = pmic_bus_write(AXP221_DLDO2_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL2,
+                             AXP221_OUTPUT_CTRL2_DLDO2_EN);
+}
+
+int axp221_set_dldo3(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL2,
+                                     AXP221_OUTPUT_CTRL2_DLDO3_EN);
+
+       ret = pmic_bus_write(AXP221_DLDO3_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL2,
+                             AXP221_OUTPUT_CTRL2_DLDO3_EN);
+}
+
+int axp221_set_dldo4(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL2,
+                                     AXP221_OUTPUT_CTRL2_DLDO4_EN);
+
+       ret = pmic_bus_write(AXP221_DLDO4_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL2,
+                             AXP221_OUTPUT_CTRL2_DLDO4_EN);
+}
+
+int axp221_set_aldo1(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL1,
+                                     AXP221_OUTPUT_CTRL1_ALDO1_EN);
+
+       ret = pmic_bus_write(AXP221_ALDO1_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL1,
+                             AXP221_OUTPUT_CTRL1_ALDO1_EN);
+}
+
+int axp221_set_aldo2(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL1,
+                                     AXP221_OUTPUT_CTRL1_ALDO2_EN);
+
+       ret = pmic_bus_write(AXP221_ALDO2_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL1,
+                             AXP221_OUTPUT_CTRL1_ALDO2_EN);
+}
+
+int axp221_set_aldo3(unsigned int mvolt)
+{
+       int ret;
+       u8 cfg = axp221_mvolt_to_cfg(mvolt, 700, 3300, 100);
+
+       if (mvolt == 0)
+               return axp221_clrbits(AXP221_OUTPUT_CTRL3,
+                                     AXP221_OUTPUT_CTRL3_ALDO3_EN);
+
+       ret = pmic_bus_write(AXP221_ALDO3_CTRL, cfg);
+       if (ret)
+               return ret;
+
+       return axp221_setbits(AXP221_OUTPUT_CTRL3,
+                             AXP221_OUTPUT_CTRL3_ALDO3_EN);
+}
+
+int axp221_init(void)
+{
+       /* This cannot be 0 because it is used in SPL before BSS is ready */
+       static int needs_init = 1;
+       u8 axp_chip_id;
+       int ret;
+
+       if (!needs_init)
+               return 0;
+
+       ret = pmic_bus_init();
+       if (ret)
+               return ret;
+
+       ret = pmic_bus_read(AXP221_CHIP_ID, &axp_chip_id);
+       if (ret)
+               return ret;
+
+       if (!(axp_chip_id == 0x6 || axp_chip_id == 0x7 || axp_chip_id == 0x17))
+               return -ENODEV;
+
+       needs_init = 0;
+       return 0;
+}
+
+int axp221_get_sid(unsigned int *sid)
+{
+       u8 *dest = (u8 *)sid;
+       int i, ret;
+
+       ret = axp221_init();
+       if (ret)
+               return ret;
+
+       ret = pmic_bus_write(AXP221_PAGE, 1);
+       if (ret)
+               return ret;
+
+       for (i = 0; i < 16; i++) {
+               ret = pmic_bus_read(AXP221_SID + i, &dest[i]);
+               if (ret)
+                       return ret;
+       }
+
+       pmic_bus_write(AXP221_PAGE, 0);
+
+       for (i = 0; i < 4; i++)
+               sid[i] = be32_to_cpu(sid[i]);
+
+       return 0;
+}
+
+static int axp_drivebus_setup(void)
+{
+       int ret;
+
+       ret = axp221_init();
+       if (ret)
+               return ret;
+
+       /* Set N_VBUSEN pin to output / DRIVEBUS function */
+       return axp221_clrbits(AXP221_MISC_CTRL, AXP221_MISC_CTRL_N_VBUSEN_FUNC);
+}
+
+int axp_drivebus_enable(void)
+{
+       int ret;
+
+       ret = axp_drivebus_setup();
+       if (ret)
+               return ret;
+
+       /* Set DRIVEBUS high */
+       return axp221_setbits(AXP221_VBUS_IPSOUT, AXP221_VBUS_IPSOUT_DRIVEBUS);
+}
+
+int axp_drivebus_disable(void)
+{
+       int ret;
+
+       ret = axp_drivebus_setup();
+       if (ret)
+               return ret;
+
+       /* Set DRIVEBUS low */
+       return axp221_clrbits(AXP221_VBUS_IPSOUT, AXP221_VBUS_IPSOUT_DRIVEBUS);
+}
index cfbc9dc52208c3434f5e062acd9c14d11ecae334..6430fe004d57af8509538f6fec9713f0c8e3ee4a 100644 (file)
@@ -27,7 +27,7 @@ int palmas_mmc1_poweron_ldo(void)
 {
        u8 val = 0;
 
-#if defined(CONFIG_DRA7XX)
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
        /*
         * Currently valid for the dra7xx_evm board:
         * Set TPS659038 LDO1 to 3.0 V
index df1fd91de385ebbdd8c4f066f4ec960275ad4f94..95b1a57ca2bf10829befad0022948d608bfe39b3 100644 (file)
@@ -42,11 +42,30 @@ static unsigned int max77686_ldo_volt2hex(int ldo, ulong uV)
        return 0;
 }
 
+static int max77686_buck_volt2hex(int buck, ulong uV)
+{
+       int hex = 0;
+
+       if (buck < 5 || buck > 9) {
+               debug("%s: buck %d is not supported\n", __func__, buck);
+               return -EINVAL;
+       }
+
+       hex = (uV - 750000) / 50000;
+
+       if (hex >= 0 && hex <= MAX77686_BUCK_VOLT_MAX_HEX)
+               return hex;
+
+       debug("%s: %ld is wrong voltage value for BUCK%d\n",
+             __func__, uV, buck);
+       return -EINVAL;
+}
+
 int max77686_set_ldo_voltage(struct pmic *p, int ldo, ulong uV)
 {
        unsigned int val, ret, hex, adr;
 
-       if (ldo < 1 && ldo > 26) {
+       if (ldo < 1 || ldo > 26) {
                printf("%s: %d is wrong ldo number\n", __func__, ldo);
                return -1;
        }
@@ -68,11 +87,38 @@ int max77686_set_ldo_voltage(struct pmic *p, int ldo, ulong uV)
        return ret;
 }
 
+int max77686_set_buck_voltage(struct pmic *p, int buck, ulong uV)
+{
+       unsigned int val, adr;
+       int hex, ret;
+
+       if (buck < 5 || buck > 9) {
+               printf("%s: %d is an unsupported bucket number\n",
+                      __func__, buck);
+               return -EINVAL;
+       }
+
+       adr = max77686_buck_addr[buck] + 1;
+       hex = max77686_buck_volt2hex(buck, uV);
+
+       if (hex < 0)
+               return hex;
+
+       ret = pmic_reg_read(p, adr, &val);
+       if (ret)
+               return ret;
+
+       val &= ~MAX77686_BUCK_VOLT_MASK;
+       ret |= pmic_reg_write(p, adr, val | hex);
+
+       return ret;
+}
+
 int max77686_set_ldo_mode(struct pmic *p, int ldo, char opmode)
 {
        unsigned int val, ret, adr, mode;
 
-       if (ldo < 1 && 26 < ldo) {
+       if (ldo < 1 || 26 < ldo) {
                printf("%s: %d is wrong ldo number\n", __func__, ldo);
                return -1;
        }
@@ -157,7 +203,7 @@ int max77686_set_buck_mode(struct pmic *p, int buck, char opmode)
        /* mode */
        switch (opmode) {
        case OPMODE_OFF:
-               mode = MAX77686_BUCK_MODE_OFF;
+               mode = MAX77686_BUCK_MODE_OFF << mode_shift;
                break;
        case OPMODE_STANDBY:
                switch (buck) {
index 594cd11725e982c9bea441effb1a0c25f3028745..0dcf9fe9187307c4240153c6bada20a808ebdf6c 100644 (file)
@@ -14,7 +14,7 @@
 #include <linux/types.h>
 #include <power/pmic.h>
 #include <i2c.h>
-#include <compiler.h>
+#include <linux/compiler.h>
 
 int pmic_reg_write(struct pmic *p, u32 reg, u32 val)
 {
index fb455a00617835ff6861756d92d416118b66c167..1e554461f30706f091d788a1032f56808154c54d 100644 (file)
 
 static struct spi_slave *slave;
 
-void pmic_spi_free(struct spi_slave *slave)
-{
-       if (slave)
-               spi_free_slave(slave);
-}
-
-struct spi_slave *pmic_spi_probe(struct pmic *p)
-{
-       return spi_setup_slave(p->bus,
-               p->hw.spi.cs,
-               p->hw.spi.clk,
-               p->hw.spi.mode);
-}
-
 static u32 pmic_reg(struct pmic *p, u32 reg, u32 *val, u32 write)
 {
        u32 pmic_tx, pmic_rx;
        u32 tmp;
 
        if (!slave) {
-               slave = pmic_spi_probe(p);
+               slave = spi_setup_slave(p->bus, p->hw.spi.cs, p->hw.spi.clk,
+                                       p->hw.spi.mode);
 
                if (!slave)
                        return -1;
@@ -54,25 +41,25 @@ static u32 pmic_reg(struct pmic *p, u32 reg, u32 *val, u32 write)
        tmp = cpu_to_be32(pmic_tx);
 
        if (spi_xfer(slave, pmic_spi_bitlen, &tmp, &pmic_rx,
-                       pmic_spi_flags)) {
-               spi_release_bus(slave);
-               return -1;
-       }
+                       pmic_spi_flags))
+               goto err;
 
        if (write) {
                pmic_tx = p->hw.spi.prepare_tx(reg, val, 0);
                tmp = cpu_to_be32(pmic_tx);
                if (spi_xfer(slave, pmic_spi_bitlen, &tmp, &pmic_rx,
-                       pmic_spi_flags)) {
-                       spi_release_bus(slave);
-                       return -1;
-               }
+                       pmic_spi_flags))
+                       goto err;
        }
 
        spi_release_bus(slave);
        *val = cpu_to_be32(pmic_rx);
 
        return 0;
+
+err:
+       spi_release_bus(slave);
+       return -1;
 }
 
 int pmic_reg_write(struct pmic *p, u32 reg, u32 val)
index d29d969533d53cfd4841ac2195508e21392f7b42..29bab4cc00dc7683121fc3302d65c660b9190a3f 100644 (file)
@@ -10,9 +10,7 @@
 #include <asm/io.h>
 #include <i2c.h>
 
-static int bus_num;            /* I2C bus we are on */
-#define I2C_ADDRESS            0x34    /* chip requires this address */
-static char inited;            /* 1 if we have been inited */
+static struct udevice *tps6586x_dev;
 
 enum {
        /* Registers that we access */
@@ -37,13 +35,9 @@ static int tps6586x_read(int reg)
        int     i;
        uchar   data;
        int     retval = -1;
-       int     old_bus_num;
-
-       old_bus_num = i2c_get_bus_num();
-       i2c_set_bus_num(bus_num);
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (!i2c_read(I2C_ADDRESS, reg, 1, &data, 1)) {
+               if (!i2c_read(tps6586x_dev, reg,  &data, 1)) {
                        retval = (int)data;
                        goto exit;
                }
@@ -53,7 +47,6 @@ static int tps6586x_read(int reg)
        }
 
 exit:
-       i2c_set_bus_num(old_bus_num);
        debug("pmu_read %x=%x\n", reg, retval);
        if (retval < 0)
                debug("%s: failed to read register %#x: %d\n", __func__, reg,
@@ -65,13 +58,9 @@ static int tps6586x_write(int reg, uchar *data, uint len)
 {
        int     i;
        int     retval = -1;
-       int     old_bus_num;
-
-       old_bus_num = i2c_get_bus_num();
-       i2c_set_bus_num(bus_num);
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (!i2c_write(I2C_ADDRESS, reg, 1, data, len)) {
+               if (!i2c_write(tps6586x_dev, reg, data, len)) {
                        retval = 0;
                        goto exit;
                }
@@ -81,7 +70,6 @@ static int tps6586x_write(int reg, uchar *data, uint len)
        }
 
 exit:
-       i2c_set_bus_num(old_bus_num);
        debug("pmu_write %x=%x: ", reg, retval);
        for (i = 0; i < len; i++)
                debug("%x ", data[i]);
@@ -163,7 +151,7 @@ int tps6586x_set_pwm_mode(int mask)
        uchar val;
        int ret;
 
-       assert(inited);
+       assert(tps6586x_dev);
        ret = tps6586x_read(PFM_MODE);
        if (ret != -1) {
                val = (uchar)ret;
@@ -184,7 +172,7 @@ int tps6586x_adjust_sm0_sm1(int sm0_target, int sm1_target, int step, int rate,
        int sm0, sm1;
        int bad;
 
-       assert(inited);
+       assert(tps6586x_dev);
 
        /* get current voltage settings */
        if (read_voltages(&sm0, &sm1)) {
@@ -255,10 +243,9 @@ int tps6586x_adjust_sm0_sm1(int sm0_target, int sm1_target, int step, int rate,
        return bad ? -1 : 0;
 }
 
-int tps6586x_init(int bus)
+int tps6586x_init(struct udevice *dev)
 {
-       bus_num = bus;
-       inited = 1;
+       tps6586x_dev = dev;
 
        return 0;
 }
index 3e50310464a3fe658b31920e49e4aa0b00c955a1..7f1fdd1534c079638d16f2e8967ad0b4571276e0 100644 (file)
@@ -91,11 +91,23 @@ void twl4030_power_init(void)
                                TWL4030_PM_RECEIVER_DEV_GRP_P1);
 }
 
-void twl4030_power_mmc_init(void)
+void twl4030_power_mmc_init(int dev_index)
 {
-       /* Set VMMC1 to 3.15 Volts */
-       twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VMMC1_DEDICATED,
-                               TWL4030_PM_RECEIVER_VMMC1_VSEL_32,
-                               TWL4030_PM_RECEIVER_VMMC1_DEV_GRP,
-                               TWL4030_PM_RECEIVER_DEV_GRP_P1);
+       if (dev_index == 0) {
+               /* Set VMMC1 to 3.15 Volts */
+               twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VMMC1_DEDICATED,
+                                       TWL4030_PM_RECEIVER_VMMC1_VSEL_32,
+                                       TWL4030_PM_RECEIVER_VMMC1_DEV_GRP,
+                                       TWL4030_PM_RECEIVER_DEV_GRP_P1);
+
+               mdelay(100);    /* ramp-up delay from Linux code */
+       } else if (dev_index == 1) {
+               /* Set VMMC2 to 3.15 Volts */
+               twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VMMC2_DEDICATED,
+                                       TWL4030_PM_RECEIVER_VMMC2_VSEL_32,
+                                       TWL4030_PM_RECEIVER_VMMC2_DEV_GRP,
+                                       TWL4030_PM_RECEIVER_DEV_GRP_P1);
+
+               mdelay(100);    /* ramp-up delay from Linux code */
+       }
 }
index 7f1bd06922f4995b446581713c589d5b30ba670f..8fa48667ec7153d67a409f568f81c77e485c6b62 100644 (file)
@@ -4,5 +4,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y := qe.o uccf.o uec.o uec_phy.o
+obj-$(CONFIG_QE) += qe.o uccf.o uec.o uec_phy.o
+obj-$(CONFIG_U_QE) += qe.o
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
index d9a7d8206ffa8e2a9304b028f0d9c19093d3337d..dfae4bf64defd63349833462d878027294e06afe 100644 (file)
@@ -12,6 +12,7 @@
 #include <fdt_support.h>
 #include "qe.h"
 
+#ifdef CONFIG_QE
 DECLARE_GLOBAL_DATA_PTR;
 
 /*
@@ -72,3 +73,4 @@ void ft_qe_setup(void *blob)
                "clock-frequency", gd->arch.qe_clk / 2, 1);
        fdt_fixup_qe_firmware(blob);
 }
+#endif
index 4358a91adb5300911753416852654b63a1cc6faf..d24651b5ba2b786e2a050cb3d98204d130365d6c 100644 (file)
@@ -13,6 +13,9 @@
 #include "asm/io.h"
 #include "linux/immap_qe.h"
 #include "qe.h"
+#ifdef CONFIG_LS102XA
+#include <asm/arch/immap_ls102xa.h>
+#endif
 
 #define MPC85xx_DEVDISR_QE_DISABLE     0x1
 
@@ -40,6 +43,7 @@ void qe_issue_cmd(uint cmd, uint sbc, u8 mcn, u32 cmd_data)
        return;
 }
 
+#ifdef CONFIG_QE
 uint qe_muram_alloc(uint size, uint align)
 {
        uint    retloc;
@@ -70,6 +74,7 @@ uint qe_muram_alloc(uint size, uint align)
 
        return retloc;
 }
+#endif
 
 void *qe_muram_addr(uint offset)
 {
@@ -180,6 +185,17 @@ void qe_init(uint qe_base)
        qe_snums_init();
 }
 
+#ifdef CONFIG_U_QE
+void u_qe_init(void)
+{
+       uint qe_base = CONFIG_SYS_IMMR + 0x01400000; /* QE immr base */
+       qe_immr = (qe_map_t *)qe_base;
+
+       u_qe_upload_firmware((const void *)CONFIG_SYS_QE_FW_ADDR);
+       out_be32(&qe_immr->iram.iready, QE_IRAM_READY);
+}
+#endif
+
 void qe_reset(void)
 {
        qe_issue_cmd(QE_RESET, QE_CR_SUBBLOCK_INVALID,
@@ -212,6 +228,7 @@ void qe_assign_page(uint snum, uint para_ram_base)
 
 #define BRG_CLK                (gd->arch.brg_clk)
 
+#ifdef CONFIG_QE
 int qe_set_brg(uint brg, uint rate)
 {
        volatile uint   *bp;
@@ -239,6 +256,7 @@ int qe_set_brg(uint brg, uint rate)
 
        return 0;
 }
+#endif
 
 /* Set ethernet MII clock master
 */
@@ -320,7 +338,11 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
        size_t length;
        const struct qe_header *hdr;
 #ifdef CONFIG_DEEP_SLEEP
+#ifdef CONFIG_LS102XA
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
+#else
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+#endif
 #endif
        if (!firmware) {
                printf("Invalid address\n");
@@ -429,6 +451,135 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
        return 0;
 }
 
+#ifdef CONFIG_U_QE
+/*
+ * Upload a microcode to the I-RAM at a specific address.
+ *
+ * See docs/README.qe_firmware for information on QE microcode uploading.
+ *
+ * Currently, only version 1 is supported, so the 'version' field must be
+ * set to 1.
+ *
+ * The SOC model and revision are not validated, they are only displayed for
+ * informational purposes.
+ *
+ * 'calc_size' is the calculated size, in bytes, of the firmware structure and
+ * all of the microcode structures, minus the CRC.
+ *
+ * 'length' is the size that the structure says it is, including the CRC.
+ */
+int u_qe_upload_firmware(const struct qe_firmware *firmware)
+{
+       unsigned int i;
+       unsigned int j;
+       u32 crc;
+       size_t calc_size = sizeof(struct qe_firmware);
+       size_t length;
+       const struct qe_header *hdr;
+#ifdef CONFIG_DEEP_SLEEP
+#ifdef CONFIG_LS102XA
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
+#else
+       ccsr_gur_t __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+#endif
+#endif
+       if (!firmware) {
+               printf("Invalid address\n");
+               return -EINVAL;
+       }
+
+       hdr = &firmware->header;
+       length = be32_to_cpu(hdr->length);
+
+       /* Check the magic */
+       if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') ||
+           (hdr->magic[2] != 'F')) {
+               printf("Not a microcode\n");
+#ifdef CONFIG_DEEP_SLEEP
+               setbits_be32(&gur->devdisr, MPC85xx_DEVDISR_QE_DISABLE);
+#endif
+               return -EPERM;
+       }
+
+       /* Check the version */
+       if (hdr->version != 1) {
+               printf("Unsupported version\n");
+               return -EPERM;
+       }
+
+       /* Validate some of the fields */
+       if ((firmware->count < 1) || (firmware->count > MAX_QE_RISC)) {
+               printf("Invalid data\n");
+               return -EINVAL;
+       }
+
+       /* Validate the length and check if there's a CRC */
+       calc_size += (firmware->count - 1) * sizeof(struct qe_microcode);
+
+       for (i = 0; i < firmware->count; i++)
+               /*
+                * For situations where the second RISC uses the same microcode
+                * as the first, the 'code_offset' and 'count' fields will be
+                * zero, so it's okay to add those.
+                */
+               calc_size += sizeof(u32) *
+                       be32_to_cpu(firmware->microcode[i].count);
+
+       /* Validate the length */
+       if (length != calc_size + sizeof(u32)) {
+               printf("Invalid length\n");
+               return -EPERM;
+       }
+
+       /*
+        * Validate the CRC.  We would normally call crc32_no_comp(), but that
+        * function isn't available unless you turn on JFFS support.
+        */
+       crc = be32_to_cpu(*(u32 *)((void *)firmware + calc_size));
+       if (crc != (crc32(-1, (const void *)firmware, calc_size) ^ -1)) {
+               printf("Firmware CRC is invalid\n");
+               return -EIO;
+       }
+
+       /*
+        * If the microcode calls for it, split the I-RAM.
+        */
+       if (!firmware->split) {
+               out_be16(&qe_immr->cp.cercr,
+                        in_be16(&qe_immr->cp.cercr) | QE_CP_CERCR_CIR);
+       }
+
+       if (firmware->soc.model)
+               printf("Firmware '%s' for %u V%u.%u\n",
+                      firmware->id, be16_to_cpu(firmware->soc.model),
+                      firmware->soc.major, firmware->soc.minor);
+       else
+               printf("Firmware '%s'\n", firmware->id);
+
+       /* Loop through each microcode. */
+       for (i = 0; i < firmware->count; i++) {
+               const struct qe_microcode *ucode = &firmware->microcode[i];
+
+               /* Upload a microcode if it's present */
+               if (ucode->code_offset)
+                       qe_upload_microcode(firmware, ucode);
+
+               /* Program the traps for this processor */
+               for (j = 0; j < 16; j++) {
+                       u32 trap = be32_to_cpu(ucode->traps[j]);
+
+                       if (trap)
+                               out_be32(&qe_immr->rsp[i].tibcr[j], trap);
+               }
+
+               /* Enable traps */
+               out_be32(&qe_immr->rsp[i].eccr, be32_to_cpu(ucode->eccr));
+       }
+
+       return 0;
+}
+#endif
+
 struct qe_firmware_info *qe_get_firmware_info(void)
 {
        return qe_firmware_uploaded ? &qe_firmware_info : NULL;
index ebb7c5f12463239476167299e47756b88cbf2387..33878f897b0177d87578092af1edceb08883e674 100644 (file)
@@ -285,4 +285,9 @@ void ft_qe_setup(void *blob);
 void qe_init(uint qe_base);
 void qe_reset(void);
 
+#ifdef CONFIG_U_QE
+void u_qe_init(void);
+int u_qe_upload_firmware(const struct qe_firmware *firmware);
+#endif
+
 #endif /* __QE_H__ */
index 43f85460a395b40d324472fd2e378c76cb213568..fdcbc002953f4ea8f2a531b8dea3b63ed29c524e 100644 (file)
@@ -11,7 +11,6 @@ obj-$(CONFIG_RTC_AT91SAM9_RTT) += at91sam9_rtt.o
 obj-$(CONFIG_RTC_BFIN) += bfin_rtc.o
 obj-y += date.o
 obj-$(CONFIG_RTC_DAVINCI) += davinci.o
-obj-$(CONFIG_RTC_DS12887) += ds12887.o
 obj-$(CONFIG_RTC_DS1302) += ds1302.o
 obj-$(CONFIG_RTC_DS1306) += ds1306.o
 obj-$(CONFIG_RTC_DS1307) += ds1307.o
index 21a2189e2753b8d2fffceecc41a5e3c2b4c780e6..4cf2d834b219683c1839a4d51a79f5b71641657b 100644 (file)
@@ -27,7 +27,7 @@
 #define NUM_SECS_IN_DAY   DAYS_TO_SECS(1)
 
 /* Enable the RTC prescaler enable register */
-static void rtc_init(void)
+void rtc_init(void)
 {
        if (!(bfin_read_RTC_PREN() & 0x1))
                bfin_write_RTC_PREN(0x1);
diff --git a/drivers/rtc/ds12887.c b/drivers/rtc/ds12887.c
deleted file mode 100644 (file)
index d8a519b..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * (C) Copyright 2003
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Date & Time support for the DS12887 RTC
- */
-
-#undef RTC_DEBUG
-
-#include <common.h>
-#include <command.h>
-#include <config.h>
-#include <rtc.h>
-
-#if defined(CONFIG_CMD_DATE)
-
-#define RTC_SECONDS                    0x00
-#define RTC_SECONDS_ALARM              0x01
-#define RTC_MINUTES                    0x02
-#define RTC_MINUTES_ALARM              0x03
-#define RTC_HOURS                      0x04
-#define RTC_HOURS_ALARM                        0x05
-#define RTC_DAY_OF_WEEK                        0x06
-#define RTC_DATE_OF_MONTH              0x07
-#define RTC_MONTH                      0x08
-#define RTC_YEAR                       0x09
-#define RTC_CONTROL_A                  0x0A
-#define RTC_CONTROL_B                  0x0B
-#define RTC_CONTROL_C                  0x0C
-#define RTC_CONTROL_D                  0x0D
-
-#define RTC_CA_UIP                     0x80
-#define RTC_CB_DM                      0x04
-#define RTC_CB_24_12                   0x02
-#define RTC_CB_SET                     0x80
-
-#if defined(CONFIG_ATC)
-
-static uchar rtc_read (uchar reg)
-{
-       uchar val;
-
-       *(volatile unsigned char*)(RTC_PORT_ADDR) = reg;
-       __asm__ __volatile__ ("sync");
-
-       val = *(volatile unsigned char*)(RTC_PORT_DATA);
-       return (val);
-}
-
-static void rtc_write (uchar reg, uchar val)
-{
-       *(volatile unsigned char*)(RTC_PORT_ADDR) = reg;
-       __asm__ __volatile__ ("sync");
-
-       *(volatile unsigned char*)(RTC_PORT_DATA) = val;
-       __asm__ __volatile__ ("sync");
-}
-
-#else
-# error Board specific rtc access functions should be supplied
-#endif
-
-int rtc_get (struct rtc_time *tmp)
-{
-       uchar sec, min, hour, mday, wday, mon, year;
-
-       /* check if rtc is available for access */
-       while( rtc_read(RTC_CONTROL_A) & RTC_CA_UIP)
-               ;
-
-       sec  = rtc_read(RTC_SECONDS);
-       min  = rtc_read(RTC_MINUTES);
-       hour = rtc_read(RTC_HOURS);
-       mday = rtc_read(RTC_DATE_OF_MONTH);
-       wday = rtc_read(RTC_DAY_OF_WEEK);
-       mon  = rtc_read(RTC_MONTH);
-       year = rtc_read(RTC_YEAR);
-
-#ifdef RTC_DEBUG
-       printf( "Get RTC year: %d; mon: %d; mday: %d; wday: %d; "
-               "hr: %d; min: %d; sec: %d\n",
-               year, mon, mday, wday, hour, min, sec );
-
-       printf ( "Alarms: hour: %02x min: %02x sec: %02x\n",
-                rtc_read (RTC_HOURS_ALARM),
-                rtc_read (RTC_MINUTES_ALARM),
-                rtc_read (RTC_SECONDS_ALARM) );
-#endif
-
-       if( !(rtc_read(RTC_CONTROL_B) & RTC_CB_DM))
-       {           /* Information is in BCD format */
-printf(" Get: Convert BSD to BIN\n");
-               tmp->tm_sec  = bcd2bin (sec  & 0x7F);
-               tmp->tm_min  = bcd2bin (min  & 0x7F);
-               tmp->tm_hour = bcd2bin (hour & 0x3F);
-               tmp->tm_mday = bcd2bin (mday & 0x3F);
-               tmp->tm_mon  = bcd2bin (mon & 0x1F);
-               tmp->tm_year = bcd2bin (year);
-               tmp->tm_wday = bcd2bin (wday & 0x07);
-       }
-else
-       {
-               tmp->tm_sec  = sec  & 0x7F;
-               tmp->tm_min  = min  & 0x7F;
-               tmp->tm_hour = hour & 0x3F;
-               tmp->tm_mday = mday & 0x3F;
-               tmp->tm_mon  = mon & 0x1F;
-               tmp->tm_year = year;
-               tmp->tm_wday = wday & 0x07;
-       }
-
-
-       if(tmp->tm_year<70)
-               tmp->tm_year+=2000;
-       else
-               tmp->tm_year+=1900;
-
-       tmp->tm_yday = 0;
-       tmp->tm_isdst= 0;
-#ifdef RTC_DEBUG
-       printf ( "Get DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",
-               tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
-               tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
-#endif
-
-       return 0;
-}
-
-int rtc_set (struct rtc_time *tmp)
-{
-       uchar save_ctrl_b;
-       uchar sec, min, hour, mday, wday, mon, year;
-
-#ifdef RTC_DEBUG
-       printf ( "Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",
-               tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
-               tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
-#endif
-
-       if( !(rtc_read(RTC_CONTROL_B) & RTC_CB_DM))
-       {           /* Information is in BCD format */
-               year = bin2bcd(tmp->tm_year % 100);
-               mon  = bin2bcd(tmp->tm_mon);
-               wday = bin2bcd(tmp->tm_wday);
-               mday = bin2bcd(tmp->tm_mday);
-               hour = bin2bcd(tmp->tm_hour);
-               min  = bin2bcd(tmp->tm_min);
-               sec  = bin2bcd(tmp->tm_sec);
-       }
-       else
-       {
-               year = tmp->tm_year % 100;
-               mon  = tmp->tm_mon;
-               wday = tmp->tm_wday;
-               mday = tmp->tm_mday;
-               hour = tmp->tm_hour;
-               min  = tmp->tm_min;
-               sec  = tmp->tm_sec;
-       }
-
-       /* disables the RTC to update the regs */
-       save_ctrl_b = rtc_read(RTC_CONTROL_B);
-       save_ctrl_b |= RTC_CB_SET;
-       rtc_write(RTC_CONTROL_B, save_ctrl_b);
-
-       rtc_write (RTC_YEAR, year);
-       rtc_write (RTC_MONTH, mon);
-       rtc_write (RTC_DAY_OF_WEEK, wday);
-       rtc_write (RTC_DATE_OF_MONTH, mday);
-       rtc_write (RTC_HOURS, hour);
-       rtc_write (RTC_MINUTES, min);
-       rtc_write (RTC_SECONDS, sec);
-
-       /* enables the RTC to update the regs */
-       save_ctrl_b &= ~RTC_CB_SET;
-       rtc_write(RTC_CONTROL_B, save_ctrl_b);
-
-       return 0;
-}
-
-void rtc_reset (void)
-{
-       struct rtc_time tmp;
-       uchar ctrl_rg;
-
-       ctrl_rg = RTC_CB_SET;
-       rtc_write(RTC_CONTROL_B,ctrl_rg);
-
-       tmp.tm_year = 1970 % 100;
-       tmp.tm_mon = 1;
-       tmp.tm_mday= 1;
-       tmp.tm_hour = 0;
-       tmp.tm_min = 0;
-       tmp.tm_sec = 0;
-
-#ifdef RTC_DEBUG
-       printf ( "RTC:   %4d-%02d-%02d %2d:%02d:%02d UTC\n",
-                   tmp.tm_year, tmp.tm_mon, tmp.tm_mday,
-                   tmp.tm_hour, tmp.tm_min, tmp.tm_sec);
-#endif
-
-       ctrl_rg = RTC_CB_SET | RTC_CB_24_12 | RTC_CB_DM;
-       rtc_write(RTC_CONTROL_B,ctrl_rg);
-       rtc_set(&tmp);
-
-       rtc_write(RTC_HOURS_ALARM, 0),
-       rtc_write(RTC_MINUTES_ALARM, 0),
-       rtc_write(RTC_SECONDS_ALARM, 0);
-
-       ctrl_rg = RTC_CB_24_12 | RTC_CB_DM;
-       rtc_write(RTC_CONTROL_B,ctrl_rg);
-}
-
-#endif
index f7cf1064f9052de9b2e56fcc7de3d53544826efa..39e6041be365ccdb9089d21ee302c9de76d429cf 100644 (file)
@@ -14,6 +14,7 @@
 #include <common.h>
 #include <command.h>
 #include <rtc.h>
+#include <version.h>
 
 #if defined(__I386__) || defined(CONFIG_MALTA)
 #include <asm/io.h>
@@ -23,6 +24,9 @@
 
 #if defined(CONFIG_CMD_DATE)
 
+/* Set this to 1 to clear the CMOS RAM */
+#define CLEAR_CMOS 0
+
 static uchar rtc_read  (uchar reg);
 static void  rtc_write (uchar reg, uchar val);
 
@@ -41,7 +45,14 @@ static void  rtc_write (uchar reg, uchar val);
 #define RTC_CONFIG_B           0x0B
 #define RTC_CONFIG_C           0x0C
 #define RTC_CONFIG_D           0x0D
+#define RTC_REG_SIZE           0x80
+
+#define RTC_CONFIG_A_REF_CLCK_32KHZ    (1 << 5)
+#define RTC_CONFIG_A_RATE_1024HZ       6
 
+#define RTC_CONFIG_B_24H               (1 << 1)
+
+#define RTC_CONFIG_D_VALID_RAM_AND_TIME        0x80
 
 /* ------------------------------------------------------------------------- */
 
@@ -128,25 +139,49 @@ void rtc_reset (void)
  */
 static uchar rtc_read (uchar reg)
 {
-       return(in8(CONFIG_SYS_RTC_REG_BASE_ADDR+reg));
+       return in8(CONFIG_SYS_RTC_REG_BASE_ADDR + reg);
 }
 
 static void rtc_write (uchar reg, uchar val)
 {
-       out8(CONFIG_SYS_RTC_REG_BASE_ADDR+reg, val);
+       out8(CONFIG_SYS_RTC_REG_BASE_ADDR + reg, val);
 }
 #else
 static uchar rtc_read (uchar reg)
 {
        out8(RTC_PORT_MC146818,reg);
-       return(in8(RTC_PORT_MC146818+1));
+       return in8(RTC_PORT_MC146818 + 1);
 }
 
 static void rtc_write (uchar reg, uchar val)
 {
        out8(RTC_PORT_MC146818,reg);
-       out8(RTC_PORT_MC146818+1,val);
+       out8(RTC_PORT_MC146818+1, val);
 }
 #endif
 
+void rtc_init(void)
+{
+#if CLEAR_CMOS
+       int i;
+
+       rtc_write(RTC_SECONDS_ALARM, 0);
+       rtc_write(RTC_MINUTES_ALARM, 0);
+       rtc_write(RTC_HOURS_ALARM, 0);
+       for (i = RTC_CONFIG_A; i < RTC_REG_SIZE; i++)
+               rtc_write(i, 0);
+       printf("RTC: zeroing CMOS RAM\n");
+#endif
+
+       /* Setup the real time clock */
+       rtc_write(RTC_CONFIG_B, RTC_CONFIG_B_24H);
+       /* Setup the frequency it operates at */
+       rtc_write(RTC_CONFIG_A, RTC_CONFIG_A_REF_CLCK_32KHZ |
+                 RTC_CONFIG_A_RATE_1024HZ);
+       /* Ensure all reserved bits are 0 in register D */
+       rtc_write(RTC_CONFIG_D, RTC_CONFIG_D_VALID_RAM_AND_TIME);
+
+       /* Clear any pending interrupts */
+       rtc_read(RTC_CONFIG_C);
+}
 #endif
index ebddc124c3dae96195f31eca4bab99f60bc5204a..424743c9906dc5eaa9ab0ef4a10d035bc556c717 100644 (file)
@@ -13,7 +13,7 @@
 #define _MVRTC_H_
 
 #include <asm/arch/soc.h>
-#include <compiler.h>
+#include <linux/compiler.h>
 
 /* RTC registers */
 struct mvrtc_registers {
index 2c19ebc2885e90c77b58302e989527a162d9c517..4cc00cd2f84ef2c8cfff3e5c2c0a022d870ceaea 100644 (file)
@@ -19,6 +19,7 @@ obj-$(CONFIG_ALTERA_UART) += altera_uart.o
 obj-$(CONFIG_ALTERA_JTAG_UART) += altera_jtag_uart.o
 obj-$(CONFIG_ARM_DCC) += arm_dcc.o
 obj-$(CONFIG_ATMEL_USART) += atmel_usart.o
+obj-$(CONFIG_DW_SERIAL) += serial_dw.o
 obj-$(CONFIG_LPC32XX_HSUART) += lpc32xx_hsuart.o
 obj-$(CONFIG_MCFUART) += mcfuart.o
 obj-$(CONFIG_OPENCORES_YANU) += opencores_yanu.o
@@ -42,7 +43,7 @@ obj-$(CONFIG_ARC_SERIAL) += serial_arc.o
 obj-$(CONFIG_TEGRA_SERIAL) += serial_tegra.o
 obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o
 obj-$(CONFIG_OMAP_SERIAL) += serial_omap.o
-obj-$(CONFIG_COREBOOT_SERIAL) += serial_coreboot.o
+obj-$(CONFIG_X86_SERIAL) += serial_x86.o
 
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_USB_TTY) += usbtty.o
index 8f0e3489a0e59287c60a2e3b34cc1fdc69eb91d7..4fe992bf2bf38dc9d53359dac9212efdf1246e0d 100644 (file)
@@ -7,11 +7,16 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
+#include <dm.h>
+#include <errno.h>
 #include <watchdog.h>
 #include <serial.h>
 #include <linux/compiler.h>
 
 #include <asm/io.h>
+#ifdef CONFIG_DM_SERIAL
+#include <asm/arch/atmel_serial.h>
+#endif
 #include <asm/arch/clk.h>
 #include <asm/arch/hardware.h>
 
@@ -19,9 +24,9 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static void atmel_serial_setbrg(void)
+static void atmel_serial_setbrg_internal(atmel_usart3_t *usart, int id,
+                                        int baudrate)
 {
-       atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
        unsigned long divisor;
        unsigned long usart_hz;
 
@@ -30,15 +35,13 @@ static void atmel_serial_setbrg(void)
         * Baud Rate = --------------
         *                16 * CD
         */
-       usart_hz = get_usart_clk_rate(CONFIG_USART_ID);
-       divisor = (usart_hz / 16 + gd->baudrate / 2) / gd->baudrate;
+       usart_hz = get_usart_clk_rate(id);
+       divisor = (usart_hz / 16 + baudrate / 2) / baudrate;
        writel(USART3_BF(CD, divisor), &usart->brgr);
 }
 
-static int atmel_serial_init(void)
+static void atmel_serial_init_internal(atmel_usart3_t *usart)
 {
-       atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
-
        /*
         * Just in case: drain transmitter register
         * 1000us is enough for baudrate >= 9600
@@ -47,9 +50,10 @@ static int atmel_serial_init(void)
                __udelay(1000);
 
        writel(USART3_BIT(RSTRX) | USART3_BIT(RSTTX), &usart->cr);
+}
 
-       serial_setbrg();
-
+static void atmel_serial_activate(atmel_usart3_t *usart)
+{
        writel((USART3_BF(USART_MODE, USART3_USART_MODE_NORMAL)
                           | USART3_BF(USCLKS, USART3_USCLKS_MCK)
                           | USART3_BF(CHRL, USART3_CHRL_8)
@@ -59,6 +63,22 @@ static int atmel_serial_init(void)
        writel(USART3_BIT(RXEN) | USART3_BIT(TXEN), &usart->cr);
        /* 100us is enough for the new settings to be settled */
        __udelay(100);
+}
+
+#ifndef CONFIG_DM_SERIAL
+static void atmel_serial_setbrg(void)
+{
+       atmel_serial_setbrg_internal((atmel_usart3_t *)CONFIG_USART_BASE,
+                                    CONFIG_USART_ID, gd->baudrate);
+}
+
+static int atmel_serial_init(void)
+{
+       atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
+
+       atmel_serial_init_internal(usart);
+       serial_setbrg();
+       atmel_serial_activate(usart);
 
        return 0;
 }
@@ -109,3 +129,81 @@ __weak struct serial_device *default_serial_console(void)
 {
        return &atmel_serial_drv;
 }
+#endif
+
+#ifdef CONFIG_DM_SERIAL
+
+struct atmel_serial_priv {
+       atmel_usart3_t *usart;
+};
+
+int atmel_serial_setbrg(struct udevice *dev, int baudrate)
+{
+       struct atmel_serial_priv *priv = dev_get_priv(dev);
+
+       atmel_serial_setbrg_internal(priv->usart, 0 /* ignored */, baudrate);
+       atmel_serial_activate(priv->usart);
+
+       return 0;
+}
+
+static int atmel_serial_getc(struct udevice *dev)
+{
+       struct atmel_serial_priv *priv = dev_get_priv(dev);
+
+       if (!(readl(&priv->usart->csr) & USART3_BIT(RXRDY)))
+               return -EAGAIN;
+
+       return readl(&priv->usart->rhr);
+}
+
+static int atmel_serial_putc(struct udevice *dev, const char ch)
+{
+       struct atmel_serial_priv *priv = dev_get_priv(dev);
+
+       if (!(readl(&priv->usart->csr) & USART3_BIT(TXRDY)))
+               return -EAGAIN;
+
+       writel(ch, &priv->usart->thr);
+
+       return 0;
+}
+
+static int atmel_serial_pending(struct udevice *dev, bool input)
+{
+       struct atmel_serial_priv *priv = dev_get_priv(dev);
+       uint32_t csr = readl(&priv->usart->csr);
+
+       if (input)
+               return csr & USART3_BIT(RXRDY) ? 1 : 0;
+       else
+               return csr & USART3_BIT(TXEMPTY) ? 0 : 1;
+}
+
+static const struct dm_serial_ops atmel_serial_ops = {
+       .putc = atmel_serial_putc,
+       .pending = atmel_serial_pending,
+       .getc = atmel_serial_getc,
+       .setbrg = atmel_serial_setbrg,
+};
+
+static int atmel_serial_probe(struct udevice *dev)
+{
+       struct atmel_serial_platdata *plat = dev->platdata;
+       struct atmel_serial_priv *priv = dev_get_priv(dev);
+
+       priv->usart = (atmel_usart3_t *)plat->base_addr;
+       atmel_serial_init_internal(priv->usart);
+
+       return 0;
+}
+
+U_BOOT_DRIVER(serial_atmel) = {
+       .name   = "serial_atmel",
+       .id     = UCLASS_SERIAL,
+       .probe = atmel_serial_probe,
+       .ops    = &atmel_serial_ops,
+       .flags = DM_FLAG_PRE_RELOC,
+       .priv_auto_alloc_size   = sizeof(struct atmel_serial_priv),
+};
+#endif
index 8f051914f54a37539d5768dd9d8ed90ff34adcf0..70c946249f0b729277e210509c1d622904ccec40 100644 (file)
@@ -132,11 +132,12 @@ static void NS16550_setbrg(NS16550_t com_port, int baud_divisor)
 
 void NS16550_init(NS16550_t com_port, int baud_divisor)
 {
-#if (defined(CONFIG_SPL_BUILD) && defined(CONFIG_OMAP34XX))
+#if (defined(CONFIG_SPL_BUILD) && \
+               (defined(CONFIG_OMAP34XX) || defined(CONFIG_OMAP44XX)))
        /*
-        * On some OMAP3 devices when UART3 is configured for boot mode before
-        * SPL starts only THRE bit is set. We have to empty the transmitter
-        * before initialization starts.
+        * On some OMAP3/OMAP4 devices when UART3 is configured for boot mode
+        * before SPL starts only THRE bit is set. We have to empty the
+        * transmitter before initialization starts.
         */
        if ((serial_in(&com_port->lsr) & (UART_LSR_TEMT | UART_LSR_THRE))
             == UART_LSR_THRE) {
@@ -288,7 +289,38 @@ int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
        struct ns16550_platdata *plat = dev->platdata;
        fdt_addr_t addr;
 
+       /* try Processor Local Bus device first */
        addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
+#ifdef CONFIG_PCI
+       if (addr == FDT_ADDR_T_NONE) {
+               /* then try pci device */
+               struct fdt_pci_addr pci_addr;
+               u32 bar;
+               int ret;
+
+               /* we prefer to use a memory-mapped register */
+               ret = fdtdec_get_pci_addr(gd->fdt_blob, dev->of_offset,
+                                         FDT_PCI_SPACE_MEM32, "reg",
+                                         &pci_addr);
+               if (ret) {
+                       /* try if there is any i/o-mapped register */
+                       ret = fdtdec_get_pci_addr(gd->fdt_blob,
+                                                 dev->of_offset,
+                                                 FDT_PCI_SPACE_IO,
+                                                 "reg", &pci_addr);
+                       if (ret)
+                               return ret;
+               }
+
+               ret = fdtdec_get_pci_bar32(gd->fdt_blob, dev->of_offset,
+                                          &pci_addr, &bar);
+               if (ret)
+                       return ret;
+
+               addr = bar;
+       }
+#endif
+
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;
 
index 71f1a5cb91024e9fc473e2a5e61f0deb82efd3c1..d1b5777cecda13be6191404cefe6dcf82a92f564 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <dm.h>
+#include <environment.h>
 #include <errno.h>
 #include <fdtdec.h>
 #include <os.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/* The currently-selected console serial device */
-struct udevice *cur_dev __attribute__ ((section(".data")));
+/*
+ * Table with supported baudrates (defined in config_xyz.h)
+ */
+static const unsigned long baudrate_table[] = CONFIG_SYS_BAUDRATE_TABLE;
 
 #ifndef CONFIG_SYS_MALLOC_F_LEN
 #error "Serial is required before relocation - define CONFIG_SYS_MALLOC_F_LEN to make this work"
@@ -28,25 +31,30 @@ struct udevice *cur_dev __attribute__ ((section(".data")));
 
 static void serial_find_console_or_panic(void)
 {
+       struct udevice *dev;
+
 #ifdef CONFIG_OF_CONTROL
        int node;
 
        /* Check for a chosen console */
        node = fdtdec_get_chosen_node(gd->fdt_blob, "stdout-path");
        if (node < 0)
-               node = fdtdec_get_alias_node(gd->fdt_blob, "console");
-       if (!uclass_get_device_by_of_offset(UCLASS_SERIAL, node, &cur_dev))
+               node = fdt_path_offset(gd->fdt_blob, "console");
+       if (!uclass_get_device_by_of_offset(UCLASS_SERIAL, node, &dev)) {
+               gd->cur_serial_dev = dev;
                return;
+       }
 
        /*
         * If the console is not marked to be bound before relocation, bind
         * it anyway.
         */
        if (node > 0 &&
-           !lists_bind_fdt(gd->dm_root, gd->fdt_blob, node, &cur_dev)) {
-               if (!device_probe(cur_dev))
+           !lists_bind_fdt(gd->dm_root, gd->fdt_blob, node, &dev)) {
+               if (!device_probe(dev)) {
+                       gd->cur_serial_dev = dev;
                        return;
-               cur_dev = NULL;
+               }
        }
 #endif
        /*
@@ -61,11 +69,12 @@ static void serial_find_console_or_panic(void)
 #else
 #define INDEX 0
 #endif
-       if (uclass_get_device_by_seq(UCLASS_SERIAL, INDEX, &cur_dev) &&
-           uclass_get_device(UCLASS_SERIAL, INDEX, &cur_dev) &&
-           (uclass_first_device(UCLASS_SERIAL, &cur_dev) || !cur_dev))
+       if (uclass_get_device_by_seq(UCLASS_SERIAL, INDEX, &dev) &&
+           uclass_get_device(UCLASS_SERIAL, INDEX, &dev) &&
+           (uclass_first_device(UCLASS_SERIAL, &dev) || !dev))
                panic("No serial driver found");
 #undef INDEX
+       gd->cur_serial_dev = dev;
 }
 
 /* Called prior to relocation */
@@ -127,40 +136,42 @@ static int _serial_tstc(struct udevice *dev)
 
 void serial_putc(char ch)
 {
-       _serial_putc(cur_dev, ch);
+       _serial_putc(gd->cur_serial_dev, ch);
 }
 
 void serial_puts(const char *str)
 {
-       _serial_puts(cur_dev, str);
+       _serial_puts(gd->cur_serial_dev, str);
 }
 
 int serial_getc(void)
 {
-       return _serial_getc(cur_dev);
+       return _serial_getc(gd->cur_serial_dev);
 }
 
 int serial_tstc(void)
 {
-       return _serial_tstc(cur_dev);
+       return _serial_tstc(gd->cur_serial_dev);
 }
 
 void serial_setbrg(void)
 {
-       struct dm_serial_ops *ops = serial_get_ops(cur_dev);
+       struct dm_serial_ops *ops = serial_get_ops(gd->cur_serial_dev);
 
        if (ops->setbrg)
-               ops->setbrg(cur_dev, gd->baudrate);
+               ops->setbrg(gd->cur_serial_dev, gd->baudrate);
 }
 
 void serial_stdio_init(void)
 {
 }
 
+#ifdef CONFIG_DM_STDIO
 static void serial_stub_putc(struct stdio_dev *sdev, const char ch)
 {
        _serial_putc(sdev->priv, ch);
 }
+#endif
 
 void serial_stub_puts(struct stdio_dev *sdev, const char *str)
 {
@@ -177,11 +188,74 @@ int serial_stub_tstc(struct stdio_dev *sdev)
        return _serial_tstc(sdev->priv);
 }
 
+/**
+ * on_baudrate() - Update the actual baudrate when the env var changes
+ *
+ * This will check for a valid baudrate and only apply it if valid.
+ */
+static int on_baudrate(const char *name, const char *value, enum env_op op,
+       int flags)
+{
+       int i;
+       int baudrate;
+
+       switch (op) {
+       case env_op_create:
+       case env_op_overwrite:
+               /*
+                * Switch to new baudrate if new baudrate is supported
+                */
+               baudrate = simple_strtoul(value, NULL, 10);
+
+               /* Not actually changing */
+               if (gd->baudrate == baudrate)
+                       return 0;
+
+               for (i = 0; i < ARRAY_SIZE(baudrate_table); ++i) {
+                       if (baudrate == baudrate_table[i])
+                               break;
+               }
+               if (i == ARRAY_SIZE(baudrate_table)) {
+                       if ((flags & H_FORCE) == 0)
+                               printf("## Baudrate %d bps not supported\n",
+                                      baudrate);
+                       return 1;
+               }
+               if ((flags & H_INTERACTIVE) != 0) {
+                       printf("## Switch baudrate to %d bps and press ENTER ...\n",
+                              baudrate);
+                       udelay(50000);
+               }
+
+               gd->baudrate = baudrate;
+
+               serial_setbrg();
+
+               udelay(50000);
+
+               if ((flags & H_INTERACTIVE) != 0)
+                       while (1) {
+                               if (getc() == '\r')
+                                       break;
+                       }
+
+               return 0;
+       case env_op_delete:
+               printf("## Baudrate may not be deleted\n");
+               return 1;
+       default:
+               return 0;
+       }
+}
+U_BOOT_ENV_CALLBACK(baudrate, on_baudrate);
+
 static int serial_post_probe(struct udevice *dev)
 {
-       struct stdio_dev sdev;
        struct dm_serial_ops *ops = serial_get_ops(dev);
+#ifdef CONFIG_DM_STDIO
        struct serial_dev_priv *upriv = dev->uclass_priv;
+       struct stdio_dev sdev;
+#endif
        int ret;
 
        /* Set the baud rate */
@@ -191,9 +265,9 @@ static int serial_post_probe(struct udevice *dev)
                        return ret;
        }
 
+#ifdef CONFIG_DM_STDIO
        if (!(gd->flags & GD_FLG_RELOC))
                return 0;
-
        memset(&sdev, '\0', sizeof(sdev));
 
        strncpy(sdev.name, dev->name, sizeof(sdev.name));
@@ -204,7 +278,7 @@ static int serial_post_probe(struct udevice *dev)
        sdev.getc = serial_stub_getc;
        sdev.tstc = serial_stub_tstc;
        stdio_register_dev(&sdev, &upriv->sdev);
-
+#endif
        return 0;
 }
 
index 18e41b2302a2181ba6f38c53ecc71c682fb5cad0..95c992a5a30d0493669598d533e20dac2332b2c6 100644 (file)
@@ -109,54 +109,54 @@ U_BOOT_ENV_CALLBACK(baudrate, on_baudrate);
        void name(void)                                         \
                __attribute__((weak, alias("serial_null")));
 
-serial_initfunc(mpc8xx_serial_initialize);
-serial_initfunc(ns16550_serial_initialize);
-serial_initfunc(pxa_serial_initialize);
-serial_initfunc(s3c24xx_serial_initialize);
-serial_initfunc(s5p_serial_initialize);
-serial_initfunc(zynq_serial_initialize);
-serial_initfunc(bfin_serial_initialize);
-serial_initfunc(bfin_jtag_initialize);
-serial_initfunc(mpc512x_serial_initialize);
-serial_initfunc(uartlite_serial_initialize);
-serial_initfunc(au1x00_serial_initialize);
-serial_initfunc(asc_serial_initialize);
-serial_initfunc(jz_serial_initialize);
-serial_initfunc(mpc5xx_serial_initialize);
-serial_initfunc(mpc8260_scc_serial_initialize);
-serial_initfunc(mpc8260_smc_serial_initialize);
-serial_initfunc(mpc85xx_serial_initialize);
-serial_initfunc(iop480_serial_initialize);
-serial_initfunc(leon2_serial_initialize);
-serial_initfunc(leon3_serial_initialize);
-serial_initfunc(marvell_serial_initialize);
+serial_initfunc(altera_jtag_serial_initialize);
+serial_initfunc(altera_serial_initialize);
 serial_initfunc(amirix_serial_initialize);
+serial_initfunc(arc_serial_initialize);
+serial_initfunc(arm_dcc_initialize);
+serial_initfunc(asc_serial_initialize);
+serial_initfunc(atmel_serial_initialize);
+serial_initfunc(au1x00_serial_initialize);
+serial_initfunc(bfin_jtag_initialize);
+serial_initfunc(bfin_serial_initialize);
 serial_initfunc(bmw_serial_initialize);
+serial_initfunc(clps7111_serial_initialize);
 serial_initfunc(cogent_serial_initialize);
 serial_initfunc(cpci750_serial_initialize);
 serial_initfunc(evb64260_serial_initialize);
-serial_initfunc(ml2_serial_initialize);
-serial_initfunc(sconsole_serial_initialize);
-serial_initfunc(p3mx_serial_initialize);
-serial_initfunc(altera_jtag_serial_initialize);
-serial_initfunc(altera_serial_initialize);
-serial_initfunc(atmel_serial_initialize);
-serial_initfunc(lpc32xx_serial_initialize);
-serial_initfunc(mcf_serial_initialize);
-serial_initfunc(oc_serial_initialize);
-serial_initfunc(sandbox_serial_initialize);
-serial_initfunc(clps7111_serial_initialize);
 serial_initfunc(imx_serial_initialize);
+serial_initfunc(iop480_serial_initialize);
+serial_initfunc(jz_serial_initialize);
 serial_initfunc(ks8695_serial_initialize);
+serial_initfunc(leon2_serial_initialize);
+serial_initfunc(leon3_serial_initialize);
 serial_initfunc(lh7a40x_serial_initialize);
+serial_initfunc(lpc32xx_serial_initialize);
+serial_initfunc(marvell_serial_initialize);
 serial_initfunc(max3100_serial_initialize);
+serial_initfunc(mcf_serial_initialize);
+serial_initfunc(ml2_serial_initialize);
+serial_initfunc(mpc512x_serial_initialize);
+serial_initfunc(mpc5xx_serial_initialize);
+serial_initfunc(mpc8260_scc_serial_initialize);
+serial_initfunc(mpc8260_smc_serial_initialize);
+serial_initfunc(mpc85xx_serial_initialize);
+serial_initfunc(mpc8xx_serial_initialize);
 serial_initfunc(mxc_serial_initialize);
+serial_initfunc(mxs_auart_initialize);
+serial_initfunc(ns16550_serial_initialize);
+serial_initfunc(oc_serial_initialize);
+serial_initfunc(p3mx_serial_initialize);
 serial_initfunc(pl01x_serial_initialize);
+serial_initfunc(pxa_serial_initialize);
+serial_initfunc(s3c24xx_serial_initialize);
+serial_initfunc(s5p_serial_initialize);
 serial_initfunc(sa1100_serial_initialize);
+serial_initfunc(sandbox_serial_initialize);
+serial_initfunc(sconsole_serial_initialize);
 serial_initfunc(sh_serial_initialize);
-serial_initfunc(arm_dcc_initialize);
-serial_initfunc(mxs_auart_initialize);
-serial_initfunc(arc_serial_initialize);
+serial_initfunc(uartlite_serial_initialize);
+serial_initfunc(zynq_serial_initialize);
 
 /**
  * serial_register() - Register serial driver with serial driver core
@@ -202,54 +202,54 @@ void serial_register(struct serial_device *dev)
  */
 void serial_initialize(void)
 {
-       mpc8xx_serial_initialize();
-       ns16550_serial_initialize();
-       pxa_serial_initialize();
-       s3c24xx_serial_initialize();
-       s5p_serial_initialize();
-       mpc512x_serial_initialize();
-       bfin_serial_initialize();
-       bfin_jtag_initialize();
-       uartlite_serial_initialize();
-       zynq_serial_initialize();
-       au1x00_serial_initialize();
-       asc_serial_initialize();
-       jz_serial_initialize();
-       mpc5xx_serial_initialize();
-       mpc8260_scc_serial_initialize();
-       mpc8260_smc_serial_initialize();
-       mpc85xx_serial_initialize();
-       iop480_serial_initialize();
-       leon2_serial_initialize();
-       leon3_serial_initialize();
-       marvell_serial_initialize();
+       altera_jtag_serial_initialize();
+       altera_serial_initialize();
        amirix_serial_initialize();
+       arc_serial_initialize();
+       arm_dcc_initialize();
+       asc_serial_initialize();
+       atmel_serial_initialize();
+       au1x00_serial_initialize();
+       bfin_jtag_initialize();
+       bfin_serial_initialize();
        bmw_serial_initialize();
+       clps7111_serial_initialize();
        cogent_serial_initialize();
        cpci750_serial_initialize();
        evb64260_serial_initialize();
-       ml2_serial_initialize();
-       sconsole_serial_initialize();
-       p3mx_serial_initialize();
-       altera_jtag_serial_initialize();
-       altera_serial_initialize();
-       atmel_serial_initialize();
-       lpc32xx_serial_initialize();
-       mcf_serial_initialize();
-       oc_serial_initialize();
-       sandbox_serial_initialize();
-       clps7111_serial_initialize();
        imx_serial_initialize();
+       iop480_serial_initialize();
+       jz_serial_initialize();
        ks8695_serial_initialize();
+       leon2_serial_initialize();
+       leon3_serial_initialize();
        lh7a40x_serial_initialize();
+       lpc32xx_serial_initialize();
+       marvell_serial_initialize();
        max3100_serial_initialize();
+       mcf_serial_initialize();
+       ml2_serial_initialize();
+       mpc512x_serial_initialize();
+       mpc5xx_serial_initialize();
+       mpc8260_scc_serial_initialize();
+       mpc8260_smc_serial_initialize();
+       mpc85xx_serial_initialize();
+       mpc8xx_serial_initialize();
        mxc_serial_initialize();
+       mxs_auart_initialize();
+       ns16550_serial_initialize();
+       oc_serial_initialize();
+       p3mx_serial_initialize();
        pl01x_serial_initialize();
+       pxa_serial_initialize();
+       s3c24xx_serial_initialize();
+       s5p_serial_initialize();
        sa1100_serial_initialize();
+       sandbox_serial_initialize();
+       sconsole_serial_initialize();
        sh_serial_initialize();
-       arm_dcc_initialize();
-       mxs_auart_initialize();
-       arc_serial_initialize();
+       uartlite_serial_initialize();
+       zynq_serial_initialize();
 
        serial_assign(default_serial_console()->name);
 }
similarity index 64%
rename from drivers/serial/serial_coreboot.c
rename to drivers/serial/serial_dw.c
index 5c6a76c59c0af23bd482434464d2428f827c2c48..a348f2956acbd96c5b099eb2dc1df36539823f66 100644 (file)
@@ -9,12 +9,12 @@
 #include <ns16550.h>
 #include <serial.h>
 
-static const struct udevice_id coreboot_serial_ids[] = {
-       { .compatible = "coreboot-uart" },
+static const struct udevice_id dw_serial_ids[] = {
+       { .compatible = "snps,dw-apb-uart" },
        { }
 };
 
-static int coreboot_serial_ofdata_to_platdata(struct udevice *dev)
+static int dw_serial_ofdata_to_platdata(struct udevice *dev)
 {
        struct ns16550_platdata *plat = dev_get_platdata(dev);
        int ret;
@@ -22,15 +22,16 @@ static int coreboot_serial_ofdata_to_platdata(struct udevice *dev)
        ret = ns16550_serial_ofdata_to_platdata(dev);
        if (ret)
                return ret;
-       plat->clock = 1843200;
+       plat->clock = CONFIG_SYS_NS16550_CLK;
 
        return 0;
 }
+
 U_BOOT_DRIVER(serial_ns16550) = {
-       .name   = "serial_coreboot",
+       .name   = "serial_dw",
        .id     = UCLASS_SERIAL,
-       .of_match = coreboot_serial_ids,
-       .ofdata_to_platdata = coreboot_serial_ofdata_to_platdata,
+       .of_match = dw_serial_ids,
+       .ofdata_to_platdata = dw_serial_ofdata_to_platdata,
        .platdata_auto_alloc_size = sizeof(struct ns16550_platdata),
        .priv_auto_alloc_size = sizeof(struct NS16550),
        .probe = ns16550_serial_probe,
index 38dda910217652ecf167ad52bbc53af3559e2722..75eb6bd729e1614033f1bd110fb602358cfb5e46 100644 (file)
@@ -72,30 +72,39 @@ static int pl01x_tstc(struct pl01x_regs *regs)
 static int pl01x_generic_serial_init(struct pl01x_regs *regs,
                                     enum pl01x_type type)
 {
-       unsigned int lcr;
-
+       switch (type) {
+       case TYPE_PL010:
+               /* disable everything */
+               writel(0, &regs->pl010_cr);
+               break;
+       case TYPE_PL011:
 #ifdef CONFIG_PL011_SERIAL_FLUSH_ON_INIT
-       if (type == TYPE_PL011) {
                /* Empty RX fifo if necessary */
                if (readl(&regs->pl011_cr) & UART_PL011_CR_UARTEN) {
                        while (!(readl(&regs->fr) & UART_PL01x_FR_RXFE))
                                readl(&regs->dr);
                }
-       }
 #endif
+               /* disable everything */
+               writel(0, &regs->pl011_cr);
+               break;
+       default:
+               return -EINVAL;
+       }
 
-       /* First, disable everything */
-       writel(0, &regs->pl010_cr);
+       return 0;
+}
 
-       /* Set the UART to be 8 bits, 1 stop bit, no parity, fifo enabled */
+static int set_line_control(struct pl01x_regs *regs)
+{
+       unsigned int lcr;
+       /*
+        * Internal update of baud rate register require line
+        * control register write
+        */
        lcr = UART_PL011_LCRH_WLEN_8 | UART_PL011_LCRH_FEN;
-       writel(lcr, &regs->pl011_lcrh);
-
-       switch (type) {
-       case TYPE_PL010:
-               break;
-       case TYPE_PL011: {
 #ifdef CONFIG_PL011_SERIAL_RLCR
+       {
                int i;
 
                /*
@@ -107,15 +116,9 @@ static int pl01x_generic_serial_init(struct pl01x_regs *regs,
                        writel(lcr, &regs->fr);
 
                writel(lcr, &regs->pl011_rlcr);
-               /* lcrh needs to be set again for change to be effective */
-               writel(lcr, &regs->pl011_lcrh);
-#endif
-               break;
-       }
-       default:
-               return -EINVAL;
        }
-
+#endif
+       writel(lcr, &regs->pl011_lcrh);
        return 0;
 }
 
@@ -175,6 +178,7 @@ static int pl01x_generic_setbrg(struct pl01x_regs *regs, enum pl01x_type type,
                writel(divider, &regs->pl011_ibrd);
                writel(fraction, &regs->pl011_fbrd);
 
+               set_line_control(regs);
                /* Finally, enable the UART */
                writel(UART_PL011_CR_UARTEN | UART_PL011_CR_TXE |
                       UART_PL011_CR_RXE | UART_PL011_CR_RTS, &regs->pl011_cr);
@@ -201,7 +205,7 @@ static void pl01x_serial_init_baud(int baudrate)
        base_regs = (struct pl01x_regs *)port[CONFIG_CONS_INDEX];
 
        pl01x_generic_serial_init(base_regs, pl01x_type);
-       pl01x_generic_setbrg(base_regs, TYPE_PL010, clock, baudrate);
+       pl01x_generic_setbrg(base_regs, pl01x_type, clock, baudrate);
 }
 
 /*
@@ -344,6 +348,7 @@ U_BOOT_DRIVER(serial_pl01x) = {
        .probe = pl01x_serial_probe,
        .ops    = &pl01x_serial_ops,
        .flags = DM_FLAG_PRE_RELOC,
+       .priv_auto_alloc_size = sizeof(struct pl01x_priv),
 };
 
 #endif
index fe8cde4dedb5ffe3ea9c33779841038cbc9e90d6..ef88c8f27338acc2c3dc8ddd2c3381b0d84ac1f6 100644 (file)
@@ -227,7 +227,7 @@ struct uart_port {
 # define SCIF_ORER 0x0001              /* Overrun error bit */
 # define SCSCR_INIT(port)      0x38    /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
 #elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
-       defined(CONFIG_R8A7794)
+       defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
 # define SCIF_ORER     0x0001
 # define SCSCR_INIT(port)      0x32    /* TIE=0,RIE=0,TE=1,RE=1,REIE=0, */
 #else
@@ -304,7 +304,8 @@ struct uart_port {
 /* SH7763 SCIF2 support */
 # define SCIF2_RFDC_MASK 0x001f
 # define SCIF2_TXROOM_MAX 16
-#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
+#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
+       defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
 # define SCIF_ERRORS (SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK)
 # define SCIF_RFDC_MASK        0x003f
 #else
@@ -432,7 +433,7 @@ static inline void sci_##name##_out(struct uart_port *port,\
                SCI_OUT(sci_size, sci_offset, value);\
        }
 
-#if defined(CONFIG_SH3) || \
+#if defined(CONFIG_CPU_SH3) || \
        defined(CONFIG_ARCH_SH7367) || \
        defined(CONFIG_ARCH_SH7377) || \
        defined(CONFIG_ARCH_SH7372) || \
@@ -589,7 +590,7 @@ SCIF_FNS(SCSPTR,                        0,  0, 0, 0)
 SCIF_FNS(SCSPTR,                        0,  0, 0x20, 16)
 #endif
 #if defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
-       defined(CONFIG_R8A7794)
+       defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
 SCIF_FNS(DL,                           0,  0, 0x30, 16)
 SCIF_FNS(CKS,                          0,  0, 0x34, 16)
 #endif
@@ -734,7 +735,8 @@ static inline int scbrr_calc(struct uart_port port, int bps, int clk)
 #define SCBRR_VALUE(bps, clk) scbrr_calc(sh_sci, bps, clk)
 #elif defined(__H8300H__) || defined(__H8300S__)
 #define SCBRR_VALUE(bps, clk) (((clk*1000/32)/bps)-1)
-#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
+#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
+       defined(CONFIG_R8A7793) || defined(CONFIG_R8A7794)
 #define DL_VALUE(bps, clk) (clk / bps / 16) /* External Clock */
 #define SCBRR_VALUE(bps, clk) ((clk+16*bps)/(32*bps)-1) /* Internal Clock */
 #else /* Generic SH */
index 7eb70e1de135eb18c9342fbabeb29ecb469406a0..b9227f05633c358a5c3918bec488a277d803601f 100644 (file)
@@ -9,6 +9,7 @@
 #include <ns16550.h>
 #include <serial.h>
 
+#ifdef CONFIG_OF_CONTROL
 static const struct udevice_id tegra_serial_ids[] = {
        { .compatible = "nvidia,tegra20-uart" },
        { }
@@ -26,13 +27,28 @@ static int tegra_serial_ofdata_to_platdata(struct udevice *dev)
 
        return 0;
 }
+#else
+struct ns16550_platdata tegra_serial = {
+       .base = CONFIG_SYS_NS16550_COM1,
+       .reg_shift = 2,
+       .clock = V_NS16550_CLK,
+};
+
+U_BOOT_DEVICE(ns16550_serial) = {
+       "serial_tegra20", &tegra_serial
+};
+#endif
+
 U_BOOT_DRIVER(serial_ns16550) = {
        .name   = "serial_tegra20",
        .id     = UCLASS_SERIAL,
+#ifdef CONFIG_OF_CONTROL
        .of_match = tegra_serial_ids,
        .ofdata_to_platdata = tegra_serial_ofdata_to_platdata,
        .platdata_auto_alloc_size = sizeof(struct ns16550_platdata),
+#endif
        .priv_auto_alloc_size = sizeof(struct NS16550),
        .probe = ns16550_serial_probe,
        .ops    = &ns16550_serial_ops,
+       .flags  = DM_FLAG_PRE_RELOC,
 };
index 9114b3ed6002a1a0d9e3c6303ad07993060b07f9..e8a1608b9988c193c1c860795730ecced5b4c107 100644 (file)
@@ -5,12 +5,13 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <common.h>
+#include <linux/serial_reg.h>
 #include <asm/io.h>
 #include <asm/errno.h>
 #include <dm/device.h>
 #include <dm/platform_data/serial-uniphier.h>
 #include <serial.h>
+#include <fdtdec.h>
 
 #define UART_REG(x)                                    \
        u8 x;                                           \
@@ -37,17 +38,6 @@ struct uniphier_serial {
 
 #define thr rbr
 
-/*
- * These are the definitions for the Line Control Register
- */
-#define UART_LCR_WLS_8 0x03            /* 8 bit character length */
-
-/*
- * These are the definitions for the Line Status Register
- */
-#define UART_LSR_DR    0x01            /* Data ready */
-#define UART_LSR_THRE  0x20            /* Xmit holding register empty */
-
 struct uniphier_serial_private_data {
        struct uniphier_serial __iomem *membase;
 };
@@ -55,14 +45,14 @@ struct uniphier_serial_private_data {
 #define uniphier_serial_port(dev)      \
        ((struct uniphier_serial_private_data *)dev_get_priv(dev))->membase
 
-int uniphier_serial_setbrg(struct udevice *dev, int baudrate)
+static int uniphier_serial_setbrg(struct udevice *dev, int baudrate)
 {
        struct uniphier_serial_platform_data *plat = dev_get_platdata(dev);
        struct uniphier_serial __iomem *port = uniphier_serial_port(dev);
        const unsigned int mode_x_div = 16;
        unsigned int divisor;
 
-       writeb(UART_LCR_WLS_8, &port->lcr);
+       writeb(UART_LCR_WLEN8, &port->lcr);
 
        divisor = DIV_ROUND_CLOSEST(plat->uartclk, mode_x_div * baudrate);
 
@@ -93,7 +83,17 @@ static int uniphier_serial_putc(struct udevice *dev, const char c)
        return 0;
 }
 
-int uniphier_serial_probe(struct udevice *dev)
+static int uniphier_serial_pending(struct udevice *dev, bool input)
+{
+       struct uniphier_serial __iomem *port = uniphier_serial_port(dev);
+
+       if (input)
+               return readb(&port->lsr) & UART_LSR_DR;
+       else
+               return !(readb(&port->lsr) & UART_LSR_THRE);
+}
+
+static int uniphier_serial_probe(struct udevice *dev)
 {
        struct uniphier_serial_private_data *priv = dev_get_priv(dev);
        struct uniphier_serial_platform_data *plat = dev_get_platdata(dev);
@@ -106,7 +106,7 @@ int uniphier_serial_probe(struct udevice *dev)
        return 0;
 }
 
-int uniphier_serial_remove(struct udevice *dev)
+static int uniphier_serial_remove(struct udevice *dev)
 {
        unmap_sysmem(uniphier_serial_port(dev));
 
@@ -114,19 +114,21 @@ int uniphier_serial_remove(struct udevice *dev)
 }
 
 #ifdef CONFIG_OF_CONTROL
-static const struct udevice_id uniphier_uart_of_match = {
-       { .compatible = "panasonic,uniphier-uart"},
+static const struct udevice_id uniphier_uart_of_match[] = {
+       { .compatible = "panasonic,uniphier-uart" },
        {},
 };
 
 static int uniphier_serial_ofdata_to_platdata(struct udevice *dev)
 {
-       /*
-        * TODO: Masahiro Yamada (yamada.m@jp.panasonic.com)
-        *
-        * Implement conversion code from DTB to platform data
-        * when supporting CONFIG_OF_CONTROL on UniPhir platform.
-        */
+       struct uniphier_serial_platform_data *plat = dev_get_platdata(dev);
+       DECLARE_GLOBAL_DATA_PTR;
+
+       plat->base = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
+       plat->uartclk = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
+                                      "clock-frequency", 0);
+
+       return 0;
 }
 #endif
 
@@ -134,6 +136,7 @@ static const struct dm_serial_ops uniphier_serial_ops = {
        .setbrg = uniphier_serial_setbrg,
        .getc = uniphier_serial_getc,
        .putc = uniphier_serial_putc,
+       .pending = uniphier_serial_pending,
 };
 
 U_BOOT_DRIVER(uniphier_serial) = {
diff --git a/drivers/serial/serial_x86.c b/drivers/serial/serial_x86.c
new file mode 100644 (file)
index 0000000..4bf6062
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <fdtdec.h>
+#include <ns16550.h>
+#include <serial.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static const struct udevice_id x86_serial_ids[] = {
+       { .compatible = "x86-uart" },
+       { }
+};
+
+static int x86_serial_ofdata_to_platdata(struct udevice *dev)
+{
+       struct ns16550_platdata *plat = dev_get_platdata(dev);
+       int ret;
+
+       ret = ns16550_serial_ofdata_to_platdata(dev);
+       if (ret)
+               return ret;
+
+       plat->clock = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
+                                    "clock-frequency", 1843200);
+
+       return 0;
+}
+
+U_BOOT_DRIVER(serial_ns16550) = {
+       .name   = "serial_x86",
+       .id     = UCLASS_SERIAL,
+       .of_match = x86_serial_ids,
+       .ofdata_to_platdata = x86_serial_ofdata_to_platdata,
+       .platdata_auto_alloc_size = sizeof(struct ns16550_platdata),
+       .priv_auto_alloc_size = sizeof(struct NS16550),
+       .probe = ns16550_serial_probe,
+       .ops    = &ns16550_serial_ops,
+};
index 7fb0b92078d327782e18f2004ea12b6808f35f91..75f0ec31bbfb9a6faedeaf9cf137ea1212ceefd5 100644 (file)
@@ -882,7 +882,7 @@ static int write_buffer (circbuf_t * buf)
                        space_avail =
                                current_urb->buffer_length -
                                current_urb->actual_length;
-                       popnum = min(space_avail, buf->size);
+                       popnum = min(space_avail, (int)buf->size);
                        if (popnum == 0)
                                break;
 
index eabbf27d4d0449cf0ed93d3983479cb629fd1108..edbd5201411cd12c109fe190f033b6d66f0c3b28 100644 (file)
@@ -23,9 +23,11 @@ obj-$(CONFIG_ATMEL_DATAFLASH_SPI) += atmel_dataflash_spi.o
 obj-$(CONFIG_ATMEL_SPI) += atmel_spi.o
 obj-$(CONFIG_BFIN_SPI) += bfin_spi.o
 obj-$(CONFIG_BFIN_SPI6XX) += bfin_spi6xx.o
+obj-$(CONFIG_CADENCE_QSPI) += cadence_qspi.o cadence_qspi_apb.o
 obj-$(CONFIG_CF_SPI) += cf_spi.o
 obj-$(CONFIG_CF_QSPI) += cf_qspi.o
 obj-$(CONFIG_DAVINCI_SPI) += davinci_spi.o
+obj-$(CONFIG_DESIGNWARE_SPI) += designware_spi.o
 obj-$(CONFIG_EXYNOS_SPI) += exynos_spi.o
 obj-$(CONFIG_FTSSP010_SPI) += ftssp010_spi.o
 obj-$(CONFIG_ICH_SPI) +=  ich.o
index 5accbb5c22c1e88cd829078c7ad914584020e38d..a4d03d97cfcff6aff2d20718f40ec83090384545 100644 (file)
 #include <malloc.h>
 #include <spi.h>
 
-#define ALTERA_SPI_RXDATA      0
-#define ALTERA_SPI_TXDATA      4
-#define ALTERA_SPI_STATUS      8
-#define ALTERA_SPI_CONTROL     12
-#define ALTERA_SPI_SLAVE_SEL   20
-
-#define ALTERA_SPI_STATUS_ROE_MSK      (0x8)
-#define ALTERA_SPI_STATUS_TOE_MSK      (0x10)
-#define ALTERA_SPI_STATUS_TMT_MSK      (0x20)
-#define ALTERA_SPI_STATUS_TRDY_MSK     (0x40)
-#define ALTERA_SPI_STATUS_RRDY_MSK     (0x80)
-#define ALTERA_SPI_STATUS_E_MSK        (0x100)
-
-#define ALTERA_SPI_CONTROL_IROE_MSK    (0x8)
-#define ALTERA_SPI_CONTROL_ITOE_MSK    (0x10)
-#define ALTERA_SPI_CONTROL_ITRDY_MSK   (0x40)
-#define ALTERA_SPI_CONTROL_IRRDY_MSK   (0x80)
-#define ALTERA_SPI_CONTROL_IE_MSK      (0x100)
-#define ALTERA_SPI_CONTROL_SSO_MSK     (0x400)
+#ifndef CONFIG_ALTERA_SPI_IDLE_VAL
+#define CONFIG_ALTERA_SPI_IDLE_VAL 0xff
+#endif
 
 #ifndef CONFIG_SYS_ALTERA_SPI_LIST
 #define CONFIG_SYS_ALTERA_SPI_LIST { CONFIG_SYS_SPI_BASE }
 #endif
 
+struct altera_spi_regs {
+       u32     rxdata;
+       u32     txdata;
+       u32     status;
+       u32     control;
+       u32     _reserved;
+       u32     slave_sel;
+};
+
+#define ALTERA_SPI_STATUS_ROE_MSK      (1 << 3)
+#define ALTERA_SPI_STATUS_TOE_MSK      (1 << 4)
+#define ALTERA_SPI_STATUS_TMT_MSK      (1 << 5)
+#define ALTERA_SPI_STATUS_TRDY_MSK     (1 << 6)
+#define ALTERA_SPI_STATUS_RRDY_MSK     (1 << 7)
+#define ALTERA_SPI_STATUS_E_MSK                (1 << 8)
+
+#define ALTERA_SPI_CONTROL_IROE_MSK    (1 << 3)
+#define ALTERA_SPI_CONTROL_ITOE_MSK    (1 << 4)
+#define ALTERA_SPI_CONTROL_ITRDY_MSK   (1 << 6)
+#define ALTERA_SPI_CONTROL_IRRDY_MSK   (1 << 7)
+#define ALTERA_SPI_CONTROL_IE_MSK      (1 << 8)
+#define ALTERA_SPI_CONTROL_SSO_MSK     (1 << 10)
+
 static ulong altera_spi_base_list[] = CONFIG_SYS_ALTERA_SPI_LIST;
 
 struct altera_spi_slave {
-       struct spi_slave slave;
-       ulong base;
+       struct spi_slave        slave;
+       struct altera_spi_regs  *regs;
 };
 #define to_altera_spi_slave(s) container_of(s, struct altera_spi_slave, slave)
 
-__attribute__((weak))
-int spi_cs_is_valid(unsigned int bus, unsigned int cs)
+__weak int spi_cs_is_valid(unsigned int bus, unsigned int cs)
 {
        return bus < ARRAY_SIZE(altera_spi_base_list) && cs < 32;
 }
 
-__attribute__((weak))
-void spi_cs_activate(struct spi_slave *slave)
+__weak void spi_cs_activate(struct spi_slave *slave)
 {
        struct altera_spi_slave *altspi = to_altera_spi_slave(slave);
-       writel(1 << slave->cs, altspi->base + ALTERA_SPI_SLAVE_SEL);
-       writel(ALTERA_SPI_CONTROL_SSO_MSK, altspi->base + ALTERA_SPI_CONTROL);
+       writel(1 << slave->cs, &altspi->regs->slave_sel);
+       writel(ALTERA_SPI_CONTROL_SSO_MSK, &altspi->regs->control);
 }
 
-__attribute__((weak))
-void spi_cs_deactivate(struct spi_slave *slave)
+__weak void spi_cs_deactivate(struct spi_slave *slave)
 {
        struct altera_spi_slave *altspi = to_altera_spi_slave(slave);
-       writel(0, altspi->base + ALTERA_SPI_CONTROL);
-       writel(0, altspi->base + ALTERA_SPI_SLAVE_SEL);
+       writel(0, &altspi->regs->control);
+       writel(0, &altspi->regs->slave_sel);
 }
 
 void spi_init(void)
@@ -87,9 +91,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        if (!altspi)
                return NULL;
 
-       altspi->base = altera_spi_base_list[bus];
-       debug("%s: bus:%i cs:%i base:%lx\n", __func__,
-               bus, cs, altspi->base);
+       altspi->regs = (struct altera_spi_regs *)altera_spi_base_list[bus];
+       debug("%s: bus:%i cs:%i base:%p\n", __func__, bus, cs, altspi->regs);
 
        return &altspi->slave;
 }
@@ -105,8 +108,8 @@ int spi_claim_bus(struct spi_slave *slave)
        struct altera_spi_slave *altspi = to_altera_spi_slave(slave);
 
        debug("%s: bus:%i cs:%i\n", __func__, slave->bus, slave->cs);
-       writel(0, altspi->base + ALTERA_SPI_CONTROL);
-       writel(0, altspi->base + ALTERA_SPI_SLAVE_SEL);
+       writel(0, &altspi->regs->control);
+       writel(0, &altspi->regs->slave_sel);
        return 0;
 }
 
@@ -115,24 +118,22 @@ void spi_release_bus(struct spi_slave *slave)
        struct altera_spi_slave *altspi = to_altera_spi_slave(slave);
 
        debug("%s: bus:%i cs:%i\n", __func__, slave->bus, slave->cs);
-       writel(0, altspi->base + ALTERA_SPI_SLAVE_SEL);
+       writel(0, &altspi->regs->slave_sel);
 }
 
-#ifndef CONFIG_ALTERA_SPI_IDLE_VAL
-# define CONFIG_ALTERA_SPI_IDLE_VAL 0xff
-#endif
-
 int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
             void *din, unsigned long flags)
 {
        struct altera_spi_slave *altspi = to_altera_spi_slave(slave);
        /* assume spi core configured to do 8 bit transfers */
-       uint bytes = bitlen / 8;
-       const uchar *txp = dout;
-       uchar *rxp = din;
+       unsigned int bytes = bitlen / 8;
+       const unsigned char *txp = dout;
+       unsigned char *rxp = din;
+       uint32_t reg, data, start;
 
        debug("%s: bus:%i cs:%i bitlen:%i bytes:%i flags:%lx\n", __func__,
-               slave->bus, slave->cs, bitlen, bytes, flags);
+             slave->bus, slave->cs, bitlen, bytes, flags);
+
        if (bitlen == 0)
                goto done;
 
@@ -142,25 +143,40 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
        }
 
        /* empty read buffer */
-       if (readl(altspi->base + ALTERA_SPI_STATUS) &
-           ALTERA_SPI_STATUS_RRDY_MSK)
-               readl(altspi->base + ALTERA_SPI_RXDATA);
+       if (readl(&altspi->regs->status) & ALTERA_SPI_STATUS_RRDY_MSK)
+               readl(&altspi->regs->rxdata);
+
        if (flags & SPI_XFER_BEGIN)
                spi_cs_activate(slave);
 
        while (bytes--) {
-               uchar d = txp ? *txp++ : CONFIG_ALTERA_SPI_IDLE_VAL;
-               debug("%s: tx:%x ", __func__, d);
-               writel(d, altspi->base + ALTERA_SPI_TXDATA);
-               while (!(readl(altspi->base + ALTERA_SPI_STATUS) &
-                        ALTERA_SPI_STATUS_RRDY_MSK))
-                       ;
-               d = readl(altspi->base + ALTERA_SPI_RXDATA);
+               if (txp)
+                       data = *txp++;
+               else
+                       data = CONFIG_ALTERA_SPI_IDLE_VAL;
+
+               debug("%s: tx:%x ", __func__, data);
+               writel(data, &altspi->regs->txdata);
+
+               start = get_timer(0);
+               while (1) {
+                       reg = readl(&altspi->regs->status);
+                       if (reg & ALTERA_SPI_STATUS_RRDY_MSK)
+                               break;
+                       if (get_timer(start) > (CONFIG_SYS_HZ / 1000)) {
+                               printf("%s: Transmission timed out!\n", __func__);
+                               goto done;
+                       }
+               }
+
+               data = readl(&altspi->regs->rxdata);
                if (rxp)
-                       *rxp++ = d;
-               debug("rx:%x\n", d);
+                       *rxp++ = data & 0xff;
+
+               debug("rx:%x\n", data);
        }
- done:
+
+done:
        if (flags & SPI_XFER_END)
                spi_cs_deactivate(slave);
 
index d2409454f9f9af025678142cd0ab5274546d26e8..1538a235a5fdef73fc01e3e773112dc6d83bce48 100644 (file)
@@ -94,3 +94,7 @@ static inline struct atmel_spi_slave *to_atmel_spi(struct spi_slave *slave)
        readl(as->regs + ATMEL_SPI_##reg)
 #define spi_writel(as, reg, value)                             \
        writel(value, as->regs + ATMEL_SPI_##reg)
+
+#if !defined(CONFIG_SYS_SPI_WRITE_TOUT)
+#define CONFIG_SYS_SPI_WRITE_TOUT      (5 * CONFIG_SYS_HZ)
+#endif
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c
new file mode 100644 (file)
index 0000000..98ae3b8
--- /dev/null
@@ -0,0 +1,345 @@
+/*
+ * Copyright (C) 2012
+ * Altera Corporation <www.altera.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <fdtdec.h>
+#include <malloc.h>
+#include <spi.h>
+#include <asm/errno.h>
+#include "cadence_qspi.h"
+
+#define CQSPI_STIG_READ                        0
+#define CQSPI_STIG_WRITE               1
+#define CQSPI_INDIRECT_READ            2
+#define CQSPI_INDIRECT_WRITE           3
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static int cadence_spi_write_speed(struct udevice *bus, uint hz)
+{
+       struct cadence_spi_platdata *plat = bus->platdata;
+       struct cadence_spi_priv *priv = dev_get_priv(bus);
+
+       cadence_qspi_apb_config_baudrate_div(priv->regbase,
+                                            CONFIG_CQSPI_REF_CLK, hz);
+
+       /* Reconfigure delay timing if speed is changed. */
+       cadence_qspi_apb_delay(priv->regbase, CONFIG_CQSPI_REF_CLK, hz,
+                              plat->tshsl_ns, plat->tsd2d_ns,
+                              plat->tchsh_ns, plat->tslch_ns);
+
+       return 0;
+}
+
+/* Calibration sequence to determine the read data capture delay register */
+static int spi_calibration(struct udevice *bus)
+{
+       struct cadence_spi_platdata *plat = bus->platdata;
+       struct cadence_spi_priv *priv = dev_get_priv(bus);
+       void *base = priv->regbase;
+       u8 opcode_rdid = 0x9F;
+       unsigned int idcode = 0, temp = 0;
+       int err = 0, i, range_lo = -1, range_hi = -1;
+
+       /* start with slowest clock (1 MHz) */
+       cadence_spi_write_speed(bus, 1000000);
+
+       /* configure the read data capture delay register to 0 */
+       cadence_qspi_apb_readdata_capture(base, 1, 0);
+
+       /* Enable QSPI */
+       cadence_qspi_apb_controller_enable(base);
+
+       /* read the ID which will be our golden value */
+       err = cadence_qspi_apb_command_read(base, 1, &opcode_rdid,
+               3, (u8 *)&idcode);
+       if (err) {
+               puts("SF: Calibration failed (read)\n");
+               return err;
+       }
+
+       /* use back the intended clock and find low range */
+       cadence_spi_write_speed(bus, plat->max_hz);
+       for (i = 0; i < CQSPI_READ_CAPTURE_MAX_DELAY; i++) {
+               /* Disable QSPI */
+               cadence_qspi_apb_controller_disable(base);
+
+               /* reconfigure the read data capture delay register */
+               cadence_qspi_apb_readdata_capture(base, 1, i);
+
+               /* Enable back QSPI */
+               cadence_qspi_apb_controller_enable(base);
+
+               /* issue a RDID to get the ID value */
+               err = cadence_qspi_apb_command_read(base, 1, &opcode_rdid,
+                       3, (u8 *)&temp);
+               if (err) {
+                       puts("SF: Calibration failed (read)\n");
+                       return err;
+               }
+
+               /* search for range lo */
+               if (range_lo == -1 && temp == idcode) {
+                       range_lo = i;
+                       continue;
+               }
+
+               /* search for range hi */
+               if (range_lo != -1 && temp != idcode) {
+                       range_hi = i - 1;
+                       break;
+               }
+               range_hi = i;
+       }
+
+       if (range_lo == -1) {
+               puts("SF: Calibration failed (low range)\n");
+               return err;
+       }
+
+       /* Disable QSPI for subsequent initialization */
+       cadence_qspi_apb_controller_disable(base);
+
+       /* configure the final value for read data capture delay register */
+       cadence_qspi_apb_readdata_capture(base, 1, (range_hi + range_lo) / 2);
+       debug("SF: Read data capture delay calibrated to %i (%i - %i)\n",
+             (range_hi + range_lo) / 2, range_lo, range_hi);
+
+       /* just to ensure we do once only when speed or chip select change */
+       priv->qspi_calibrated_hz = plat->max_hz;
+       priv->qspi_calibrated_cs = spi_chip_select(bus);
+
+       return 0;
+}
+
+static int cadence_spi_set_speed(struct udevice *bus, uint hz)
+{
+       struct cadence_spi_platdata *plat = bus->platdata;
+       struct cadence_spi_priv *priv = dev_get_priv(bus);
+       int err;
+
+       /* Disable QSPI */
+       cadence_qspi_apb_controller_disable(priv->regbase);
+
+       cadence_spi_write_speed(bus, hz);
+
+       /* Calibration required for different SCLK speed or chip select */
+       if (priv->qspi_calibrated_hz != plat->max_hz ||
+           priv->qspi_calibrated_cs != spi_chip_select(bus)) {
+               err = spi_calibration(bus);
+               if (err)
+                       return err;
+       }
+
+       /* Enable QSPI */
+       cadence_qspi_apb_controller_enable(priv->regbase);
+
+       debug("%s: speed=%d\n", __func__, hz);
+
+       return 0;
+}
+
+static int cadence_spi_probe(struct udevice *bus)
+{
+       struct cadence_spi_platdata *plat = bus->platdata;
+       struct cadence_spi_priv *priv = dev_get_priv(bus);
+
+       priv->regbase = plat->regbase;
+       priv->ahbbase = plat->ahbbase;
+
+       if (!priv->qspi_is_init) {
+               cadence_qspi_apb_controller_init(plat);
+               priv->qspi_is_init = 1;
+       }
+
+       return 0;
+}
+
+static int cadence_spi_set_mode(struct udevice *bus, uint mode)
+{
+       struct cadence_spi_priv *priv = dev_get_priv(bus);
+       unsigned int clk_pol = (mode & SPI_CPOL) ? 1 : 0;
+       unsigned int clk_pha = (mode & SPI_CPHA) ? 1 : 0;
+
+       /* Disable QSPI */
+       cadence_qspi_apb_controller_disable(priv->regbase);
+
+       /* Set SPI mode */
+       cadence_qspi_apb_set_clk_mode(priv->regbase, clk_pol, clk_pha);
+
+       /* Enable QSPI */
+       cadence_qspi_apb_controller_enable(priv->regbase);
+
+       return 0;
+}
+
+static int cadence_spi_xfer(struct udevice *dev, unsigned int bitlen,
+                           const void *dout, void *din, unsigned long flags)
+{
+       struct udevice *bus = dev->parent;
+       struct cadence_spi_platdata *plat = bus->platdata;
+       struct cadence_spi_priv *priv = dev_get_priv(bus);
+       void *base = priv->regbase;
+       u8 *cmd_buf = priv->cmd_buf;
+       size_t data_bytes;
+       int err = 0;
+       u32 mode = CQSPI_STIG_WRITE;
+
+       if (flags & SPI_XFER_BEGIN) {
+               /* copy command to local buffer */
+               priv->cmd_len = bitlen / 8;
+               memcpy(cmd_buf, dout, priv->cmd_len);
+       }
+
+       if (flags == (SPI_XFER_BEGIN | SPI_XFER_END)) {
+               /* if start and end bit are set, the data bytes is 0. */
+               data_bytes = 0;
+       } else {
+               data_bytes = bitlen / 8;
+       }
+       debug("%s: len=%d [bytes]\n", __func__, data_bytes);
+
+       /* Set Chip select */
+       cadence_qspi_apb_chipselect(base, spi_chip_select(dev),
+                                   CONFIG_CQSPI_DECODER);
+
+       if ((flags & SPI_XFER_END) || (flags == 0)) {
+               if (priv->cmd_len == 0) {
+                       printf("QSPI: Error, command is empty.\n");
+                       return -1;
+               }
+
+               if (din && data_bytes) {
+                       /* read */
+                       /* Use STIG if no address. */
+                       if (!CQSPI_IS_ADDR(priv->cmd_len))
+                               mode = CQSPI_STIG_READ;
+                       else
+                               mode = CQSPI_INDIRECT_READ;
+               } else if (dout && !(flags & SPI_XFER_BEGIN)) {
+                       /* write */
+                       if (!CQSPI_IS_ADDR(priv->cmd_len))
+                               mode = CQSPI_STIG_WRITE;
+                       else
+                               mode = CQSPI_INDIRECT_WRITE;
+               }
+
+               switch (mode) {
+               case CQSPI_STIG_READ:
+                       err = cadence_qspi_apb_command_read(
+                               base, priv->cmd_len, cmd_buf,
+                               data_bytes, din);
+
+               break;
+               case CQSPI_STIG_WRITE:
+                       err = cadence_qspi_apb_command_write(base,
+                               priv->cmd_len, cmd_buf,
+                               data_bytes, dout);
+               break;
+               case CQSPI_INDIRECT_READ:
+                       err = cadence_qspi_apb_indirect_read_setup(plat,
+                               priv->cmd_len, cmd_buf);
+                       if (!err) {
+                               err = cadence_qspi_apb_indirect_read_execute
+                               (plat, data_bytes, din);
+                       }
+               break;
+               case CQSPI_INDIRECT_WRITE:
+                       err = cadence_qspi_apb_indirect_write_setup
+                               (plat, priv->cmd_len, cmd_buf);
+                       if (!err) {
+                               err = cadence_qspi_apb_indirect_write_execute
+                               (plat, data_bytes, dout);
+                       }
+               break;
+               default:
+                       err = -1;
+                       break;
+               }
+
+               if (flags & SPI_XFER_END) {
+                       /* clear command buffer */
+                       memset(cmd_buf, 0, sizeof(priv->cmd_buf));
+                       priv->cmd_len = 0;
+               }
+       }
+
+       return err;
+}
+
+static int cadence_spi_ofdata_to_platdata(struct udevice *bus)
+{
+       struct cadence_spi_platdata *plat = bus->platdata;
+       const void *blob = gd->fdt_blob;
+       int node = bus->of_offset;
+       int subnode;
+       u32 data[4];
+       int ret;
+
+       /* 2 base addresses are needed, lets get them from the DT */
+       ret = fdtdec_get_int_array(blob, node, "reg", data, ARRAY_SIZE(data));
+       if (ret) {
+               printf("Error: Can't get base addresses (ret=%d)!\n", ret);
+               return -ENODEV;
+       }
+
+       plat->regbase = (void *)data[0];
+       plat->ahbbase = (void *)data[2];
+
+       /* Use 500KHz as a suitable default */
+       plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
+                                     500000);
+
+       /* All other paramters are embedded in the child node */
+       subnode = fdt_first_subnode(blob, node);
+       if (subnode < 0) {
+               printf("Error: subnode with SPI flash config missing!\n");
+               return -ENODEV;
+       }
+
+       /* Read other parameters from DT */
+       plat->page_size = fdtdec_get_int(blob, subnode, "page-size", 256);
+       plat->block_size = fdtdec_get_int(blob, subnode, "block-size", 16);
+       plat->tshsl_ns = fdtdec_get_int(blob, subnode, "tshsl-ns", 200);
+       plat->tsd2d_ns = fdtdec_get_int(blob, subnode, "tsd2d-ns", 255);
+       plat->tchsh_ns = fdtdec_get_int(blob, subnode, "tchsh-ns", 20);
+       plat->tslch_ns = fdtdec_get_int(blob, subnode, "tslch-ns", 20);
+
+       debug("%s: regbase=%p ahbbase=%p max-frequency=%d page-size=%d\n",
+             __func__, plat->regbase, plat->ahbbase, plat->max_hz,
+             plat->page_size);
+
+       return 0;
+}
+
+static const struct dm_spi_ops cadence_spi_ops = {
+       .xfer           = cadence_spi_xfer,
+       .set_speed      = cadence_spi_set_speed,
+       .set_mode       = cadence_spi_set_mode,
+       /*
+        * cs_info is not needed, since we require all chip selects to be
+        * in the device tree explicitly
+        */
+};
+
+static const struct udevice_id cadence_spi_ids[] = {
+       { .compatible = "cadence,qspi" },
+       { }
+};
+
+U_BOOT_DRIVER(cadence_spi) = {
+       .name = "cadence_spi",
+       .id = UCLASS_SPI,
+       .of_match = cadence_spi_ids,
+       .ops = &cadence_spi_ops,
+       .ofdata_to_platdata = cadence_spi_ofdata_to_platdata,
+       .platdata_auto_alloc_size = sizeof(struct cadence_spi_platdata),
+       .priv_auto_alloc_size = sizeof(struct cadence_spi_priv),
+       .per_child_auto_alloc_size = sizeof(struct spi_slave),
+       .probe = cadence_spi_probe,
+};
diff --git a/drivers/spi/cadence_qspi.h b/drivers/spi/cadence_qspi.h
new file mode 100644 (file)
index 0000000..c9a6142
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2012
+ * Altera Corporation <www.altera.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CADENCE_QSPI_H__
+#define __CADENCE_QSPI_H__
+
+#define CQSPI_IS_ADDR(cmd_len)         (cmd_len > 1 ? 1 : 0)
+
+#define CQSPI_NO_DECODER_MAX_CS                4
+#define CQSPI_DECODER_MAX_CS           16
+#define CQSPI_READ_CAPTURE_MAX_DELAY   16
+
+struct cadence_spi_platdata {
+       unsigned int    max_hz;
+       void            *regbase;
+       void            *ahbbase;
+
+       u32             page_size;
+       u32             block_size;
+       u32             tshsl_ns;
+       u32             tsd2d_ns;
+       u32             tchsh_ns;
+       u32             tslch_ns;
+};
+
+struct cadence_spi_priv {
+       void            *regbase;
+       void            *ahbbase;
+       size_t          cmd_len;
+       u8              cmd_buf[32];
+       size_t          data_len;
+
+       int             qspi_is_init;
+       unsigned int    qspi_calibrated_hz;
+       unsigned int    qspi_calibrated_cs;
+};
+
+/* Functions call declaration */
+void cadence_qspi_apb_controller_init(struct cadence_spi_platdata *plat);
+void cadence_qspi_apb_controller_enable(void *reg_base_addr);
+void cadence_qspi_apb_controller_disable(void *reg_base_addr);
+
+int cadence_qspi_apb_command_read(void *reg_base_addr,
+       unsigned int cmdlen, const u8 *cmdbuf, unsigned int rxlen, u8 *rxbuf);
+int cadence_qspi_apb_command_write(void *reg_base_addr,
+       unsigned int cmdlen, const u8 *cmdbuf,
+       unsigned int txlen,  const u8 *txbuf);
+
+int cadence_qspi_apb_indirect_read_setup(struct cadence_spi_platdata *plat,
+       unsigned int cmdlen, const u8 *cmdbuf);
+int cadence_qspi_apb_indirect_read_execute(struct cadence_spi_platdata *plat,
+       unsigned int rxlen, u8 *rxbuf);
+int cadence_qspi_apb_indirect_write_setup(struct cadence_spi_platdata *plat,
+       unsigned int cmdlen, const u8 *cmdbuf);
+int cadence_qspi_apb_indirect_write_execute(struct cadence_spi_platdata *plat,
+       unsigned int txlen, const u8 *txbuf);
+
+void cadence_qspi_apb_chipselect(void *reg_base,
+       unsigned int chip_select, unsigned int decoder_enable);
+void cadence_qspi_apb_set_clk_mode(void *reg_base_addr,
+       unsigned int clk_pol, unsigned int clk_pha);
+void cadence_qspi_apb_config_baudrate_div(void *reg_base,
+       unsigned int ref_clk_hz, unsigned int sclk_hz);
+void cadence_qspi_apb_delay(void *reg_base,
+       unsigned int ref_clk, unsigned int sclk_hz,
+       unsigned int tshsl_ns, unsigned int tsd2d_ns,
+       unsigned int tchsh_ns, unsigned int tslch_ns);
+void cadence_qspi_apb_enter_xip(void *reg_base, char xip_dummy);
+void cadence_qspi_apb_readdata_capture(void *reg_base,
+       unsigned int bypass, unsigned int delay);
+
+#endif /* __CADENCE_QSPI_H__ */
diff --git a/drivers/spi/cadence_qspi_apb.c b/drivers/spi/cadence_qspi_apb.c
new file mode 100644 (file)
index 0000000..00a115f
--- /dev/null
@@ -0,0 +1,898 @@
+/*
+ * Copyright (C) 2012 Altera Corporation <www.altera.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of the Altera Corporation nor the
+ *    names of its contributors may be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL ALTERA CORPORATION BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/errno.h>
+#include "cadence_qspi.h"
+
+#define CQSPI_REG_POLL_US                      (1) /* 1us */
+#define CQSPI_REG_RETRY                                (10000)
+#define CQSPI_POLL_IDLE_RETRY                  (3)
+
+#define CQSPI_FIFO_WIDTH                       (4)
+
+/* Controller sram size in word */
+#define CQSPI_REG_SRAM_SIZE_WORD               (128)
+#define CQSPI_REG_SRAM_RESV_WORDS              (2)
+#define CQSPI_REG_SRAM_PARTITION_WR            (1)
+#define CQSPI_REG_SRAM_PARTITION_RD            \
+       (CQSPI_REG_SRAM_SIZE_WORD - CQSPI_REG_SRAM_RESV_WORDS)
+#define CQSPI_REG_SRAM_THRESHOLD_WORDS         (50)
+
+/* Transfer mode */
+#define CQSPI_INST_TYPE_SINGLE                 (0)
+#define CQSPI_INST_TYPE_DUAL                   (1)
+#define CQSPI_INST_TYPE_QUAD                   (2)
+
+#define CQSPI_STIG_DATA_LEN_MAX                        (8)
+#define CQSPI_INDIRECTTRIGGER_ADDR_MASK                (0xFFFFF)
+
+#define CQSPI_DUMMY_CLKS_PER_BYTE              (8)
+#define CQSPI_DUMMY_BYTES_MAX                  (4)
+
+
+#define CQSPI_REG_SRAM_FILL_THRESHOLD  \
+       ((CQSPI_REG_SRAM_SIZE_WORD / 2) * CQSPI_FIFO_WIDTH)
+/****************************************************************************
+ * Controller's configuration and status register (offset from QSPI_BASE)
+ ****************************************************************************/
+#define        CQSPI_REG_CONFIG                        0x00
+#define        CQSPI_REG_CONFIG_CLK_POL_LSB            1
+#define        CQSPI_REG_CONFIG_CLK_PHA_LSB            2
+#define        CQSPI_REG_CONFIG_ENABLE_MASK            (1 << 0)
+#define        CQSPI_REG_CONFIG_DIRECT_MASK            (1 << 7)
+#define        CQSPI_REG_CONFIG_DECODE_MASK            (1 << 9)
+#define        CQSPI_REG_CONFIG_XIP_IMM_MASK           (1 << 18)
+#define        CQSPI_REG_CONFIG_CHIPSELECT_LSB         10
+#define        CQSPI_REG_CONFIG_BAUD_LSB               19
+#define        CQSPI_REG_CONFIG_IDLE_LSB               31
+#define        CQSPI_REG_CONFIG_CHIPSELECT_MASK        0xF
+#define        CQSPI_REG_CONFIG_BAUD_MASK              0xF
+
+#define        CQSPI_REG_RD_INSTR                      0x04
+#define        CQSPI_REG_RD_INSTR_OPCODE_LSB           0
+#define        CQSPI_REG_RD_INSTR_TYPE_INSTR_LSB       8
+#define        CQSPI_REG_RD_INSTR_TYPE_ADDR_LSB        12
+#define        CQSPI_REG_RD_INSTR_TYPE_DATA_LSB        16
+#define        CQSPI_REG_RD_INSTR_MODE_EN_LSB          20
+#define        CQSPI_REG_RD_INSTR_DUMMY_LSB            24
+#define        CQSPI_REG_RD_INSTR_TYPE_INSTR_MASK      0x3
+#define        CQSPI_REG_RD_INSTR_TYPE_ADDR_MASK       0x3
+#define        CQSPI_REG_RD_INSTR_TYPE_DATA_MASK       0x3
+#define        CQSPI_REG_RD_INSTR_DUMMY_MASK           0x1F
+
+#define        CQSPI_REG_WR_INSTR                      0x08
+#define        CQSPI_REG_WR_INSTR_OPCODE_LSB           0
+
+#define        CQSPI_REG_DELAY                         0x0C
+#define        CQSPI_REG_DELAY_TSLCH_LSB               0
+#define        CQSPI_REG_DELAY_TCHSH_LSB               8
+#define        CQSPI_REG_DELAY_TSD2D_LSB               16
+#define        CQSPI_REG_DELAY_TSHSL_LSB               24
+#define        CQSPI_REG_DELAY_TSLCH_MASK              0xFF
+#define        CQSPI_REG_DELAY_TCHSH_MASK              0xFF
+#define        CQSPI_REG_DELAY_TSD2D_MASK              0xFF
+#define        CQSPI_REG_DELAY_TSHSL_MASK              0xFF
+
+#define        CQSPI_READLCAPTURE                      0x10
+#define        CQSPI_READLCAPTURE_BYPASS_LSB           0
+#define        CQSPI_READLCAPTURE_DELAY_LSB            1
+#define        CQSPI_READLCAPTURE_DELAY_MASK           0xF
+
+#define        CQSPI_REG_SIZE                          0x14
+#define        CQSPI_REG_SIZE_ADDRESS_LSB              0
+#define        CQSPI_REG_SIZE_PAGE_LSB                 4
+#define        CQSPI_REG_SIZE_BLOCK_LSB                16
+#define        CQSPI_REG_SIZE_ADDRESS_MASK             0xF
+#define        CQSPI_REG_SIZE_PAGE_MASK                0xFFF
+#define        CQSPI_REG_SIZE_BLOCK_MASK               0x3F
+
+#define        CQSPI_REG_SRAMPARTITION                 0x18
+#define        CQSPI_REG_INDIRECTTRIGGER               0x1C
+
+#define        CQSPI_REG_REMAP                         0x24
+#define        CQSPI_REG_MODE_BIT                      0x28
+
+#define        CQSPI_REG_SDRAMLEVEL                    0x2C
+#define        CQSPI_REG_SDRAMLEVEL_RD_LSB             0
+#define        CQSPI_REG_SDRAMLEVEL_WR_LSB             16
+#define        CQSPI_REG_SDRAMLEVEL_RD_MASK            0xFFFF
+#define        CQSPI_REG_SDRAMLEVEL_WR_MASK            0xFFFF
+
+#define        CQSPI_REG_IRQSTATUS                     0x40
+#define        CQSPI_REG_IRQMASK                       0x44
+
+#define        CQSPI_REG_INDIRECTRD                    0x60
+#define        CQSPI_REG_INDIRECTRD_START_MASK         (1 << 0)
+#define        CQSPI_REG_INDIRECTRD_CANCEL_MASK        (1 << 1)
+#define        CQSPI_REG_INDIRECTRD_INPROGRESS_MASK    (1 << 2)
+#define        CQSPI_REG_INDIRECTRD_DONE_MASK          (1 << 5)
+
+#define        CQSPI_REG_INDIRECTRDWATERMARK           0x64
+#define        CQSPI_REG_INDIRECTRDSTARTADDR           0x68
+#define        CQSPI_REG_INDIRECTRDBYTES               0x6C
+
+#define        CQSPI_REG_CMDCTRL                       0x90
+#define        CQSPI_REG_CMDCTRL_EXECUTE_MASK          (1 << 0)
+#define        CQSPI_REG_CMDCTRL_INPROGRESS_MASK       (1 << 1)
+#define        CQSPI_REG_CMDCTRL_DUMMY_LSB             7
+#define        CQSPI_REG_CMDCTRL_WR_BYTES_LSB          12
+#define        CQSPI_REG_CMDCTRL_WR_EN_LSB             15
+#define        CQSPI_REG_CMDCTRL_ADD_BYTES_LSB         16
+#define        CQSPI_REG_CMDCTRL_ADDR_EN_LSB           19
+#define        CQSPI_REG_CMDCTRL_RD_BYTES_LSB          20
+#define        CQSPI_REG_CMDCTRL_RD_EN_LSB             23
+#define        CQSPI_REG_CMDCTRL_OPCODE_LSB            24
+#define        CQSPI_REG_CMDCTRL_DUMMY_MASK            0x1F
+#define        CQSPI_REG_CMDCTRL_WR_BYTES_MASK         0x7
+#define        CQSPI_REG_CMDCTRL_ADD_BYTES_MASK        0x3
+#define        CQSPI_REG_CMDCTRL_RD_BYTES_MASK         0x7
+#define        CQSPI_REG_CMDCTRL_OPCODE_MASK           0xFF
+
+#define        CQSPI_REG_INDIRECTWR                    0x70
+#define        CQSPI_REG_INDIRECTWR_START_MASK         (1 << 0)
+#define        CQSPI_REG_INDIRECTWR_CANCEL_MASK        (1 << 1)
+#define        CQSPI_REG_INDIRECTWR_INPROGRESS_MASK    (1 << 2)
+#define        CQSPI_REG_INDIRECTWR_DONE_MASK          (1 << 5)
+
+#define        CQSPI_REG_INDIRECTWRWATERMARK           0x74
+#define        CQSPI_REG_INDIRECTWRSTARTADDR           0x78
+#define        CQSPI_REG_INDIRECTWRBYTES               0x7C
+
+#define        CQSPI_REG_CMDADDRESS                    0x94
+#define        CQSPI_REG_CMDREADDATALOWER              0xA0
+#define        CQSPI_REG_CMDREADDATAUPPER              0xA4
+#define        CQSPI_REG_CMDWRITEDATALOWER             0xA8
+#define        CQSPI_REG_CMDWRITEDATAUPPER             0xAC
+
+#define CQSPI_REG_IS_IDLE(base)                                        \
+       ((readl(base + CQSPI_REG_CONFIG) >>             \
+               CQSPI_REG_CONFIG_IDLE_LSB) & 0x1)
+
+#define CQSPI_CAL_DELAY(tdelay_ns, tref_ns, tsclk_ns)          \
+       ((((tdelay_ns) - (tsclk_ns)) / (tref_ns)))
+
+#define CQSPI_GET_RD_SRAM_LEVEL(reg_base)                      \
+       (((readl(reg_base + CQSPI_REG_SDRAMLEVEL)) >>   \
+       CQSPI_REG_SDRAMLEVEL_RD_LSB) & CQSPI_REG_SDRAMLEVEL_RD_MASK)
+
+#define CQSPI_GET_WR_SRAM_LEVEL(reg_base)                      \
+       (((readl(reg_base + CQSPI_REG_SDRAMLEVEL)) >>   \
+       CQSPI_REG_SDRAMLEVEL_WR_LSB) & CQSPI_REG_SDRAMLEVEL_WR_MASK)
+
+static unsigned int cadence_qspi_apb_cmd2addr(const unsigned char *addr_buf,
+       unsigned int addr_width)
+{
+       unsigned int addr;
+
+       addr = (addr_buf[0] << 16) | (addr_buf[1] << 8) | addr_buf[2];
+
+       if (addr_width == 4)
+               addr = (addr << 8) | addr_buf[3];
+
+       return addr;
+}
+
+static void cadence_qspi_apb_read_fifo_data(void *dest,
+       const void *src_ahb_addr, unsigned int bytes)
+{
+       unsigned int temp;
+       int remaining = bytes;
+       unsigned int *dest_ptr = (unsigned int *)dest;
+       unsigned int *src_ptr = (unsigned int *)src_ahb_addr;
+
+       while (remaining > 0) {
+               if (remaining >= CQSPI_FIFO_WIDTH) {
+                       *dest_ptr = readl(src_ptr);
+                       remaining -= CQSPI_FIFO_WIDTH;
+               } else {
+                       /* dangling bytes */
+                       temp = readl(src_ptr);
+                       memcpy(dest_ptr, &temp, remaining);
+                       break;
+               }
+               dest_ptr++;
+       }
+
+       return;
+}
+
+static void cadence_qspi_apb_write_fifo_data(const void *dest_ahb_addr,
+       const void *src, unsigned int bytes)
+{
+       unsigned int temp;
+       int remaining = bytes;
+       unsigned int *dest_ptr = (unsigned int *)dest_ahb_addr;
+       unsigned int *src_ptr = (unsigned int *)src;
+
+       while (remaining > 0) {
+               if (remaining >= CQSPI_FIFO_WIDTH) {
+                       writel(*src_ptr, dest_ptr);
+                       remaining -= sizeof(unsigned int);
+               } else {
+                       /* dangling bytes */
+                       memcpy(&temp, src_ptr, remaining);
+                       writel(temp, dest_ptr);
+                       break;
+               }
+               src_ptr++;
+       }
+
+       return;
+}
+
+/* Read from SRAM FIFO with polling SRAM fill level. */
+static int qspi_read_sram_fifo_poll(const void *reg_base, void *dest_addr,
+                       const void *src_addr,  unsigned int num_bytes)
+{
+       unsigned int remaining = num_bytes;
+       unsigned int retry;
+       unsigned int sram_level = 0;
+       unsigned char *dest = (unsigned char *)dest_addr;
+
+       while (remaining > 0) {
+               retry = CQSPI_REG_RETRY;
+               while (retry--) {
+                       sram_level = CQSPI_GET_RD_SRAM_LEVEL(reg_base);
+                       if (sram_level)
+                               break;
+                       udelay(1);
+               }
+
+               if (!retry) {
+                       printf("QSPI: No receive data after polling for %d times\n",
+                              CQSPI_REG_RETRY);
+                       return -1;
+               }
+
+               sram_level *= CQSPI_FIFO_WIDTH;
+               sram_level = sram_level > remaining ? remaining : sram_level;
+
+               /* Read data from FIFO. */
+               cadence_qspi_apb_read_fifo_data(dest, src_addr, sram_level);
+               dest += sram_level;
+               remaining -= sram_level;
+               udelay(1);
+       }
+       return 0;
+}
+
+/* Write to SRAM FIFO with polling SRAM fill level. */
+static int qpsi_write_sram_fifo_push(struct cadence_spi_platdata *plat,
+                               const void *src_addr, unsigned int num_bytes)
+{
+       const void *reg_base = plat->regbase;
+       void *dest_addr = plat->ahbbase;
+       unsigned int retry = CQSPI_REG_RETRY;
+       unsigned int sram_level;
+       unsigned int wr_bytes;
+       unsigned char *src = (unsigned char *)src_addr;
+       int remaining = num_bytes;
+       unsigned int page_size = plat->page_size;
+       unsigned int sram_threshold_words = CQSPI_REG_SRAM_THRESHOLD_WORDS;
+
+       while (remaining > 0) {
+               retry = CQSPI_REG_RETRY;
+               while (retry--) {
+                       sram_level = CQSPI_GET_WR_SRAM_LEVEL(reg_base);
+                       if (sram_level <= sram_threshold_words)
+                               break;
+               }
+               if (!retry) {
+                       printf("QSPI: SRAM fill level (0x%08x) not hit lower expected level (0x%08x)",
+                              sram_level, sram_threshold_words);
+                       return -1;
+               }
+               /* Write a page or remaining bytes. */
+               wr_bytes = (remaining > page_size) ?
+                                       page_size : remaining;
+
+               cadence_qspi_apb_write_fifo_data(dest_addr, src, wr_bytes);
+               src += wr_bytes;
+               remaining -= wr_bytes;
+       }
+
+       return 0;
+}
+
+void cadence_qspi_apb_controller_enable(void *reg_base)
+{
+       unsigned int reg;
+       reg = readl(reg_base + CQSPI_REG_CONFIG);
+       reg |= CQSPI_REG_CONFIG_ENABLE_MASK;
+       writel(reg, reg_base + CQSPI_REG_CONFIG);
+       return;
+}
+
+void cadence_qspi_apb_controller_disable(void *reg_base)
+{
+       unsigned int reg;
+       reg = readl(reg_base + CQSPI_REG_CONFIG);
+       reg &= ~CQSPI_REG_CONFIG_ENABLE_MASK;
+       writel(reg, reg_base + CQSPI_REG_CONFIG);
+       return;
+}
+
+/* Return 1 if idle, otherwise return 0 (busy). */
+static unsigned int cadence_qspi_wait_idle(void *reg_base)
+{
+       unsigned int start, count = 0;
+       /* timeout in unit of ms */
+       unsigned int timeout = 5000;
+
+       start = get_timer(0);
+       for ( ; get_timer(start) < timeout ; ) {
+               if (CQSPI_REG_IS_IDLE(reg_base))
+                       count++;
+               else
+                       count = 0;
+               /*
+                * Ensure the QSPI controller is in true idle state after
+                * reading back the same idle status consecutively
+                */
+               if (count >= CQSPI_POLL_IDLE_RETRY)
+                       return 1;
+       }
+
+       /* Timeout, still in busy mode. */
+       printf("QSPI: QSPI is still busy after poll for %d times.\n",
+              CQSPI_REG_RETRY);
+       return 0;
+}
+
+void cadence_qspi_apb_readdata_capture(void *reg_base,
+                               unsigned int bypass, unsigned int delay)
+{
+       unsigned int reg;
+       cadence_qspi_apb_controller_disable(reg_base);
+
+       reg = readl(reg_base + CQSPI_READLCAPTURE);
+
+       if (bypass)
+               reg |= (1 << CQSPI_READLCAPTURE_BYPASS_LSB);
+       else
+               reg &= ~(1 << CQSPI_READLCAPTURE_BYPASS_LSB);
+
+       reg &= ~(CQSPI_READLCAPTURE_DELAY_MASK
+               << CQSPI_READLCAPTURE_DELAY_LSB);
+
+       reg |= ((delay & CQSPI_READLCAPTURE_DELAY_MASK)
+               << CQSPI_READLCAPTURE_DELAY_LSB);
+
+       writel(reg, reg_base + CQSPI_READLCAPTURE);
+
+       cadence_qspi_apb_controller_enable(reg_base);
+       return;
+}
+
+void cadence_qspi_apb_config_baudrate_div(void *reg_base,
+       unsigned int ref_clk_hz, unsigned int sclk_hz)
+{
+       unsigned int reg;
+       unsigned int div;
+
+       cadence_qspi_apb_controller_disable(reg_base);
+       reg = readl(reg_base + CQSPI_REG_CONFIG);
+       reg &= ~(CQSPI_REG_CONFIG_BAUD_MASK << CQSPI_REG_CONFIG_BAUD_LSB);
+
+       div = ref_clk_hz / sclk_hz;
+
+       if (div > 32)
+               div = 32;
+
+       /* Check if even number. */
+       if ((div & 1)) {
+               div = (div / 2);
+       } else {
+               if (ref_clk_hz % sclk_hz)
+                       /* ensure generated SCLK doesn't exceed user
+                       specified sclk_hz */
+                       div = (div / 2);
+               else
+                       div = (div / 2) - 1;
+       }
+
+       debug("%s: ref_clk %dHz sclk %dHz Div 0x%x\n", __func__,
+             ref_clk_hz, sclk_hz, div);
+
+       div = (div & CQSPI_REG_CONFIG_BAUD_MASK) << CQSPI_REG_CONFIG_BAUD_LSB;
+       reg |= div;
+       writel(reg, reg_base + CQSPI_REG_CONFIG);
+
+       cadence_qspi_apb_controller_enable(reg_base);
+       return;
+}
+
+void cadence_qspi_apb_set_clk_mode(void *reg_base,
+       unsigned int clk_pol, unsigned int clk_pha)
+{
+       unsigned int reg;
+
+       cadence_qspi_apb_controller_disable(reg_base);
+       reg = readl(reg_base + CQSPI_REG_CONFIG);
+       reg &= ~(1 <<
+               (CQSPI_REG_CONFIG_CLK_POL_LSB | CQSPI_REG_CONFIG_CLK_PHA_LSB));
+
+       reg |= ((clk_pol & 0x1) << CQSPI_REG_CONFIG_CLK_POL_LSB);
+       reg |= ((clk_pha & 0x1) << CQSPI_REG_CONFIG_CLK_PHA_LSB);
+
+       writel(reg, reg_base + CQSPI_REG_CONFIG);
+
+       cadence_qspi_apb_controller_enable(reg_base);
+       return;
+}
+
+void cadence_qspi_apb_chipselect(void *reg_base,
+       unsigned int chip_select, unsigned int decoder_enable)
+{
+       unsigned int reg;
+
+       cadence_qspi_apb_controller_disable(reg_base);
+
+       debug("%s : chipselect %d decode %d\n", __func__, chip_select,
+             decoder_enable);
+
+       reg = readl(reg_base + CQSPI_REG_CONFIG);
+       /* docoder */
+       if (decoder_enable) {
+               reg |= CQSPI_REG_CONFIG_DECODE_MASK;
+       } else {
+               reg &= ~CQSPI_REG_CONFIG_DECODE_MASK;
+               /* Convert CS if without decoder.
+                * CS0 to 4b'1110
+                * CS1 to 4b'1101
+                * CS2 to 4b'1011
+                * CS3 to 4b'0111
+                */
+               chip_select = 0xF & ~(1 << chip_select);
+       }
+
+       reg &= ~(CQSPI_REG_CONFIG_CHIPSELECT_MASK
+                       << CQSPI_REG_CONFIG_CHIPSELECT_LSB);
+       reg |= (chip_select & CQSPI_REG_CONFIG_CHIPSELECT_MASK)
+                       << CQSPI_REG_CONFIG_CHIPSELECT_LSB;
+       writel(reg, reg_base + CQSPI_REG_CONFIG);
+
+       cadence_qspi_apb_controller_enable(reg_base);
+       return;
+}
+
+void cadence_qspi_apb_delay(void *reg_base,
+       unsigned int ref_clk, unsigned int sclk_hz,
+       unsigned int tshsl_ns, unsigned int tsd2d_ns,
+       unsigned int tchsh_ns, unsigned int tslch_ns)
+{
+       unsigned int ref_clk_ns;
+       unsigned int sclk_ns;
+       unsigned int tshsl, tchsh, tslch, tsd2d;
+       unsigned int reg;
+
+       cadence_qspi_apb_controller_disable(reg_base);
+
+       /* Convert to ns. */
+       ref_clk_ns = (1000000000) / ref_clk;
+
+       /* Convert to ns. */
+       sclk_ns = (1000000000) / sclk_hz;
+
+       /* Plus 1 to round up 1 clock cycle. */
+       tshsl = CQSPI_CAL_DELAY(tshsl_ns, ref_clk_ns, sclk_ns) + 1;
+       tchsh = CQSPI_CAL_DELAY(tchsh_ns, ref_clk_ns, sclk_ns) + 1;
+       tslch = CQSPI_CAL_DELAY(tslch_ns, ref_clk_ns, sclk_ns) + 1;
+       tsd2d = CQSPI_CAL_DELAY(tsd2d_ns, ref_clk_ns, sclk_ns) + 1;
+
+       reg = ((tshsl & CQSPI_REG_DELAY_TSHSL_MASK)
+                       << CQSPI_REG_DELAY_TSHSL_LSB);
+       reg |= ((tchsh & CQSPI_REG_DELAY_TCHSH_MASK)
+                       << CQSPI_REG_DELAY_TCHSH_LSB);
+       reg |= ((tslch & CQSPI_REG_DELAY_TSLCH_MASK)
+                       << CQSPI_REG_DELAY_TSLCH_LSB);
+       reg |= ((tsd2d & CQSPI_REG_DELAY_TSD2D_MASK)
+                       << CQSPI_REG_DELAY_TSD2D_LSB);
+       writel(reg, reg_base + CQSPI_REG_DELAY);
+
+       cadence_qspi_apb_controller_enable(reg_base);
+       return;
+}
+
+void cadence_qspi_apb_controller_init(struct cadence_spi_platdata *plat)
+{
+       unsigned reg;
+
+       cadence_qspi_apb_controller_disable(plat->regbase);
+
+       /* Configure the device size and address bytes */
+       reg = readl(plat->regbase + CQSPI_REG_SIZE);
+       /* Clear the previous value */
+       reg &= ~(CQSPI_REG_SIZE_PAGE_MASK << CQSPI_REG_SIZE_PAGE_LSB);
+       reg &= ~(CQSPI_REG_SIZE_BLOCK_MASK << CQSPI_REG_SIZE_BLOCK_LSB);
+       reg |= (plat->page_size << CQSPI_REG_SIZE_PAGE_LSB);
+       reg |= (plat->block_size << CQSPI_REG_SIZE_BLOCK_LSB);
+       writel(reg, plat->regbase + CQSPI_REG_SIZE);
+
+       /* Configure the remap address register, no remap */
+       writel(0, plat->regbase + CQSPI_REG_REMAP);
+
+       /* Disable all interrupts */
+       writel(0, plat->regbase + CQSPI_REG_IRQMASK);
+
+       cadence_qspi_apb_controller_enable(plat->regbase);
+       return;
+}
+
+static int cadence_qspi_apb_exec_flash_cmd(void *reg_base,
+       unsigned int reg)
+{
+       unsigned int retry = CQSPI_REG_RETRY;
+
+       /* Write the CMDCTRL without start execution. */
+       writel(reg, reg_base + CQSPI_REG_CMDCTRL);
+       /* Start execute */
+       reg |= CQSPI_REG_CMDCTRL_EXECUTE_MASK;
+       writel(reg, reg_base + CQSPI_REG_CMDCTRL);
+
+       while (retry--) {
+               reg = readl(reg_base + CQSPI_REG_CMDCTRL);
+               if ((reg & CQSPI_REG_CMDCTRL_INPROGRESS_MASK) == 0)
+                       break;
+               udelay(1);
+       }
+
+       if (!retry) {
+               printf("QSPI: flash command execution timeout\n");
+               return -EIO;
+       }
+
+       /* Polling QSPI idle status. */
+       if (!cadence_qspi_wait_idle(reg_base))
+               return -EIO;
+
+       return 0;
+}
+
+/* For command RDID, RDSR. */
+int cadence_qspi_apb_command_read(void *reg_base,
+       unsigned int cmdlen, const u8 *cmdbuf, unsigned int rxlen,
+       u8 *rxbuf)
+{
+       unsigned int reg;
+       unsigned int read_len;
+       int status;
+
+       if (!cmdlen || rxlen > CQSPI_STIG_DATA_LEN_MAX || rxbuf == NULL) {
+               printf("QSPI: Invalid input arguments cmdlen %d rxlen %d\n",
+                      cmdlen, rxlen);
+               return -EINVAL;
+       }
+
+       reg = cmdbuf[0] << CQSPI_REG_CMDCTRL_OPCODE_LSB;
+
+       reg |= (0x1 << CQSPI_REG_CMDCTRL_RD_EN_LSB);
+
+       /* 0 means 1 byte. */
+       reg |= (((rxlen - 1) & CQSPI_REG_CMDCTRL_RD_BYTES_MASK)
+               << CQSPI_REG_CMDCTRL_RD_BYTES_LSB);
+       status = cadence_qspi_apb_exec_flash_cmd(reg_base, reg);
+       if (status != 0)
+               return status;
+
+       reg = readl(reg_base + CQSPI_REG_CMDREADDATALOWER);
+
+       /* Put the read value into rx_buf */
+       read_len = (rxlen > 4) ? 4 : rxlen;
+       memcpy(rxbuf, &reg, read_len);
+       rxbuf += read_len;
+
+       if (rxlen > 4) {
+               reg = readl(reg_base + CQSPI_REG_CMDREADDATAUPPER);
+
+               read_len = rxlen - read_len;
+               memcpy(rxbuf, &reg, read_len);
+       }
+       return 0;
+}
+
+/* For commands: WRSR, WREN, WRDI, CHIP_ERASE, BE, etc. */
+int cadence_qspi_apb_command_write(void *reg_base, unsigned int cmdlen,
+       const u8 *cmdbuf, unsigned int txlen,  const u8 *txbuf)
+{
+       unsigned int reg = 0;
+       unsigned int addr_value;
+       unsigned int wr_data;
+       unsigned int wr_len;
+
+       if (!cmdlen || cmdlen > 5 || txlen > 8 || cmdbuf == NULL) {
+               printf("QSPI: Invalid input arguments cmdlen %d txlen %d\n",
+                      cmdlen, txlen);
+               return -EINVAL;
+       }
+
+       reg |= cmdbuf[0] << CQSPI_REG_CMDCTRL_OPCODE_LSB;
+
+       if (cmdlen == 4 || cmdlen == 5) {
+               /* Command with address */
+               reg |= (0x1 << CQSPI_REG_CMDCTRL_ADDR_EN_LSB);
+               /* Number of bytes to write. */
+               reg |= ((cmdlen - 2) & CQSPI_REG_CMDCTRL_ADD_BYTES_MASK)
+                       << CQSPI_REG_CMDCTRL_ADD_BYTES_LSB;
+               /* Get address */
+               addr_value = cadence_qspi_apb_cmd2addr(&cmdbuf[1],
+                       cmdlen >= 5 ? 4 : 3);
+
+               writel(addr_value, reg_base + CQSPI_REG_CMDADDRESS);
+       }
+
+       if (txlen) {
+               /* writing data = yes */
+               reg |= (0x1 << CQSPI_REG_CMDCTRL_WR_EN_LSB);
+               reg |= ((txlen - 1) & CQSPI_REG_CMDCTRL_WR_BYTES_MASK)
+                       << CQSPI_REG_CMDCTRL_WR_BYTES_LSB;
+
+               wr_len = txlen > 4 ? 4 : txlen;
+               memcpy(&wr_data, txbuf, wr_len);
+               writel(wr_data, reg_base +
+                       CQSPI_REG_CMDWRITEDATALOWER);
+
+               if (txlen > 4) {
+                       txbuf += wr_len;
+                       wr_len = txlen - wr_len;
+                       memcpy(&wr_data, txbuf, wr_len);
+                       writel(wr_data, reg_base +
+                               CQSPI_REG_CMDWRITEDATAUPPER);
+               }
+       }
+
+       /* Execute the command */
+       return cadence_qspi_apb_exec_flash_cmd(reg_base, reg);
+}
+
+/* Opcode + Address (3/4 bytes) + dummy bytes (0-4 bytes) */
+int cadence_qspi_apb_indirect_read_setup(struct cadence_spi_platdata *plat,
+       unsigned int cmdlen, const u8 *cmdbuf)
+{
+       unsigned int reg;
+       unsigned int rd_reg;
+       unsigned int addr_value;
+       unsigned int dummy_clk;
+       unsigned int dummy_bytes;
+       unsigned int addr_bytes;
+
+       /*
+        * Identify addr_byte. All NOR flash device drivers are using fast read
+        * which always expecting 1 dummy byte, 1 cmd byte and 3/4 addr byte.
+        * With that, the length is in value of 5 or 6. Only FRAM chip from
+        * ramtron using normal read (which won't need dummy byte).
+        * Unlikely NOR flash using normal read due to performance issue.
+        */
+       if (cmdlen >= 5)
+               /* to cater fast read where cmd + addr + dummy */
+               addr_bytes = cmdlen - 2;
+       else
+               /* for normal read (only ramtron as of now) */
+               addr_bytes = cmdlen - 1;
+
+       /* Setup the indirect trigger address */
+       writel(((u32)plat->ahbbase & CQSPI_INDIRECTTRIGGER_ADDR_MASK),
+              plat->regbase + CQSPI_REG_INDIRECTTRIGGER);
+
+       /* Configure SRAM partition for read. */
+       writel(CQSPI_REG_SRAM_PARTITION_RD, plat->regbase +
+              CQSPI_REG_SRAMPARTITION);
+
+       /* Configure the opcode */
+       rd_reg = cmdbuf[0] << CQSPI_REG_RD_INSTR_OPCODE_LSB;
+
+#if (CONFIG_SPI_FLASH_QUAD == 1)
+       /* Instruction and address at DQ0, data at DQ0-3. */
+       rd_reg |= CQSPI_INST_TYPE_QUAD << CQSPI_REG_RD_INSTR_TYPE_DATA_LSB;
+#endif
+
+       /* Get address */
+       addr_value = cadence_qspi_apb_cmd2addr(&cmdbuf[1], addr_bytes);
+       writel(addr_value, plat->regbase + CQSPI_REG_INDIRECTRDSTARTADDR);
+
+       /* The remaining lenght is dummy bytes. */
+       dummy_bytes = cmdlen - addr_bytes - 1;
+       if (dummy_bytes) {
+               if (dummy_bytes > CQSPI_DUMMY_BYTES_MAX)
+                       dummy_bytes = CQSPI_DUMMY_BYTES_MAX;
+
+               rd_reg |= (1 << CQSPI_REG_RD_INSTR_MODE_EN_LSB);
+#if defined(CONFIG_SPL_SPI_XIP) && defined(CONFIG_SPL_BUILD)
+               writel(0x0, plat->regbase + CQSPI_REG_MODE_BIT);
+#else
+               writel(0xFF, plat->regbase + CQSPI_REG_MODE_BIT);
+#endif
+
+               /* Convert to clock cycles. */
+               dummy_clk = dummy_bytes * CQSPI_DUMMY_CLKS_PER_BYTE;
+               /* Need to minus the mode byte (8 clocks). */
+               dummy_clk -= CQSPI_DUMMY_CLKS_PER_BYTE;
+
+               if (dummy_clk)
+                       rd_reg |= (dummy_clk & CQSPI_REG_RD_INSTR_DUMMY_MASK)
+                               << CQSPI_REG_RD_INSTR_DUMMY_LSB;
+       }
+
+       writel(rd_reg, plat->regbase + CQSPI_REG_RD_INSTR);
+
+       /* set device size */
+       reg = readl(plat->regbase + CQSPI_REG_SIZE);
+       reg &= ~CQSPI_REG_SIZE_ADDRESS_MASK;
+       reg |= (addr_bytes - 1);
+       writel(reg, plat->regbase + CQSPI_REG_SIZE);
+       return 0;
+}
+
+int cadence_qspi_apb_indirect_read_execute(struct cadence_spi_platdata *plat,
+       unsigned int rxlen, u8 *rxbuf)
+{
+       unsigned int reg;
+
+       writel(rxlen, plat->regbase + CQSPI_REG_INDIRECTRDBYTES);
+
+       /* Start the indirect read transfer */
+       writel(CQSPI_REG_INDIRECTRD_START_MASK,
+              plat->regbase + CQSPI_REG_INDIRECTRD);
+
+       if (qspi_read_sram_fifo_poll(plat->regbase, (void *)rxbuf,
+                                    (const void *)plat->ahbbase, rxlen))
+               goto failrd;
+
+       /* Check flash indirect controller */
+       reg = readl(plat->regbase + CQSPI_REG_INDIRECTRD);
+       if (!(reg & CQSPI_REG_INDIRECTRD_DONE_MASK)) {
+               reg = readl(plat->regbase + CQSPI_REG_INDIRECTRD);
+               printf("QSPI: indirect completion status error with reg 0x%08x\n",
+                      reg);
+               goto failrd;
+       }
+
+       /* Clear indirect completion status */
+       writel(CQSPI_REG_INDIRECTRD_DONE_MASK,
+              plat->regbase + CQSPI_REG_INDIRECTRD);
+       return 0;
+
+failrd:
+       /* Cancel the indirect read */
+       writel(CQSPI_REG_INDIRECTRD_CANCEL_MASK,
+              plat->regbase + CQSPI_REG_INDIRECTRD);
+       return -1;
+}
+
+/* Opcode + Address (3/4 bytes) */
+int cadence_qspi_apb_indirect_write_setup(struct cadence_spi_platdata *plat,
+       unsigned int cmdlen, const u8 *cmdbuf)
+{
+       unsigned int reg;
+       unsigned int addr_bytes = cmdlen > 4 ? 4 : 3;
+
+       if (cmdlen < 4 || cmdbuf == NULL) {
+               printf("QSPI: iInvalid input argument, len %d cmdbuf 0x%08x\n",
+                      cmdlen, (unsigned int)cmdbuf);
+               return -EINVAL;
+       }
+       /* Setup the indirect trigger address */
+       writel(((u32)plat->ahbbase & CQSPI_INDIRECTTRIGGER_ADDR_MASK),
+              plat->regbase + CQSPI_REG_INDIRECTTRIGGER);
+
+       writel(CQSPI_REG_SRAM_PARTITION_WR,
+              plat->regbase + CQSPI_REG_SRAMPARTITION);
+
+       /* Configure the opcode */
+       reg = cmdbuf[0] << CQSPI_REG_WR_INSTR_OPCODE_LSB;
+       writel(reg, plat->regbase + CQSPI_REG_WR_INSTR);
+
+       /* Setup write address. */
+       reg = cadence_qspi_apb_cmd2addr(&cmdbuf[1], addr_bytes);
+       writel(reg, plat->regbase + CQSPI_REG_INDIRECTWRSTARTADDR);
+
+       reg = readl(plat->regbase + CQSPI_REG_SIZE);
+       reg &= ~CQSPI_REG_SIZE_ADDRESS_MASK;
+       reg |= (addr_bytes - 1);
+       writel(reg, plat->regbase + CQSPI_REG_SIZE);
+       return 0;
+}
+
+int cadence_qspi_apb_indirect_write_execute(struct cadence_spi_platdata *plat,
+       unsigned int txlen, const u8 *txbuf)
+{
+       unsigned int reg = 0;
+       unsigned int retry;
+
+       /* Configure the indirect read transfer bytes */
+       writel(txlen, plat->regbase + CQSPI_REG_INDIRECTWRBYTES);
+
+       /* Start the indirect write transfer */
+       writel(CQSPI_REG_INDIRECTWR_START_MASK,
+              plat->regbase + CQSPI_REG_INDIRECTWR);
+
+       if (qpsi_write_sram_fifo_push(plat, (const void *)txbuf, txlen))
+               goto failwr;
+
+       /* Wait until last write is completed (FIFO empty) */
+       retry = CQSPI_REG_RETRY;
+       while (retry--) {
+               reg = CQSPI_GET_WR_SRAM_LEVEL(plat->regbase);
+               if (reg == 0)
+                       break;
+
+               udelay(1);
+       }
+
+       if (reg != 0) {
+               printf("QSPI: timeout for indirect write\n");
+               goto failwr;
+       }
+
+       /* Check flash indirect controller status */
+       retry = CQSPI_REG_RETRY;
+       while (retry--) {
+               reg = readl(plat->regbase + CQSPI_REG_INDIRECTWR);
+               if (reg & CQSPI_REG_INDIRECTWR_DONE_MASK)
+                       break;
+               udelay(1);
+       }
+
+       if (!(reg & CQSPI_REG_INDIRECTWR_DONE_MASK)) {
+               printf("QSPI: indirect completion status error with reg 0x%08x\n",
+                      reg);
+               goto failwr;
+       }
+
+       /* Clear indirect completion status */
+       writel(CQSPI_REG_INDIRECTWR_DONE_MASK,
+              plat->regbase + CQSPI_REG_INDIRECTWR);
+       return 0;
+
+failwr:
+       /* Cancel the indirect write */
+       writel(CQSPI_REG_INDIRECTWR_CANCEL_MASK,
+              plat->regbase + CQSPI_REG_INDIRECTWR);
+       return -1;
+}
+
+void cadence_qspi_apb_enter_xip(void *reg_base, char xip_dummy)
+{
+       unsigned int reg;
+
+       /* enter XiP mode immediately and enable direct mode */
+       reg = readl(reg_base + CQSPI_REG_CONFIG);
+       reg |= CQSPI_REG_CONFIG_ENABLE_MASK;
+       reg |= CQSPI_REG_CONFIG_DIRECT_MASK;
+       reg |= CQSPI_REG_CONFIG_XIP_IMM_MASK;
+       writel(reg, reg_base + CQSPI_REG_CONFIG);
+
+       /* keep the XiP mode */
+       writel(xip_dummy, reg_base + CQSPI_REG_MODE_BIT);
+
+       /* Enable mode bit at devrd */
+       reg = readl(reg_base + CQSPI_REG_RD_INSTR);
+       reg |= (1 << CQSPI_REG_RD_INSTR_MODE_EN_LSB);
+       writel(reg, reg_base + CQSPI_REG_RD_INSTR);
+}
diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
new file mode 100644 (file)
index 0000000..700f616
--- /dev/null
@@ -0,0 +1,426 @@
+/*
+ * Designware master SPI core controller driver
+ *
+ * Copyright (C) 2014 Stefan Roese <sr@denx.de>
+ *
+ * Very loosely based on the Linux driver:
+ * drivers/spi/spi-dw.c, which is:
+ * Copyright (c) 2009, Intel Corporation.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <malloc.h>
+#include <spi.h>
+#include <fdtdec.h>
+#include <linux/compat.h>
+#include <asm/io.h>
+#include <asm/arch/clock_manager.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* Register offsets */
+#define DW_SPI_CTRL0                   0x00
+#define DW_SPI_CTRL1                   0x04
+#define DW_SPI_SSIENR                  0x08
+#define DW_SPI_MWCR                    0x0c
+#define DW_SPI_SER                     0x10
+#define DW_SPI_BAUDR                   0x14
+#define DW_SPI_TXFLTR                  0x18
+#define DW_SPI_RXFLTR                  0x1c
+#define DW_SPI_TXFLR                   0x20
+#define DW_SPI_RXFLR                   0x24
+#define DW_SPI_SR                      0x28
+#define DW_SPI_IMR                     0x2c
+#define DW_SPI_ISR                     0x30
+#define DW_SPI_RISR                    0x34
+#define DW_SPI_TXOICR                  0x38
+#define DW_SPI_RXOICR                  0x3c
+#define DW_SPI_RXUICR                  0x40
+#define DW_SPI_MSTICR                  0x44
+#define DW_SPI_ICR                     0x48
+#define DW_SPI_DMACR                   0x4c
+#define DW_SPI_DMATDLR                 0x50
+#define DW_SPI_DMARDLR                 0x54
+#define DW_SPI_IDR                     0x58
+#define DW_SPI_VERSION                 0x5c
+#define DW_SPI_DR                      0x60
+
+/* Bit fields in CTRLR0 */
+#define SPI_DFS_OFFSET                 0
+
+#define SPI_FRF_OFFSET                 4
+#define SPI_FRF_SPI                    0x0
+#define SPI_FRF_SSP                    0x1
+#define SPI_FRF_MICROWIRE              0x2
+#define SPI_FRF_RESV                   0x3
+
+#define SPI_MODE_OFFSET                        6
+#define SPI_SCPH_OFFSET                        6
+#define SPI_SCOL_OFFSET                        7
+
+#define SPI_TMOD_OFFSET                        8
+#define SPI_TMOD_MASK                  (0x3 << SPI_TMOD_OFFSET)
+#define        SPI_TMOD_TR                     0x0             /* xmit & recv */
+#define SPI_TMOD_TO                    0x1             /* xmit only */
+#define SPI_TMOD_RO                    0x2             /* recv only */
+#define SPI_TMOD_EPROMREAD             0x3             /* eeprom read mode */
+
+#define SPI_SLVOE_OFFSET               10
+#define SPI_SRL_OFFSET                 11
+#define SPI_CFS_OFFSET                 12
+
+/* Bit fields in SR, 7 bits */
+#define SR_MASK                                0x7f            /* cover 7 bits */
+#define SR_BUSY                                (1 << 0)
+#define SR_TF_NOT_FULL                 (1 << 1)
+#define SR_TF_EMPT                     (1 << 2)
+#define SR_RF_NOT_EMPT                 (1 << 3)
+#define SR_RF_FULL                     (1 << 4)
+#define SR_TX_ERR                      (1 << 5)
+#define SR_DCOL                                (1 << 6)
+
+#define RX_TIMEOUT                     1000            /* timeout in ms */
+
+struct dw_spi_platdata {
+       s32 frequency;          /* Default clock frequency, -1 for none */
+       void __iomem *regs;
+};
+
+struct dw_spi_priv {
+       void __iomem *regs;
+       unsigned int freq;              /* Default frequency */
+       unsigned int mode;
+
+       int bits_per_word;
+       u8 cs;                  /* chip select pin */
+       u8 tmode;               /* TR/TO/RO/EEPROM */
+       u8 type;                /* SPI/SSP/MicroWire */
+       int len;
+
+       u32 fifo_len;           /* depth of the FIFO buffer */
+       void *tx;
+       void *tx_end;
+       void *rx;
+       void *rx_end;
+};
+
+static inline u32 dw_readl(struct dw_spi_priv *priv, u32 offset)
+{
+       return __raw_readl(priv->regs + offset);
+}
+
+static inline void dw_writel(struct dw_spi_priv *priv, u32 offset, u32 val)
+{
+       __raw_writel(val, priv->regs + offset);
+}
+
+static inline u16 dw_readw(struct dw_spi_priv *priv, u32 offset)
+{
+       return __raw_readw(priv->regs + offset);
+}
+
+static inline void dw_writew(struct dw_spi_priv *priv, u32 offset, u16 val)
+{
+       __raw_writew(val, priv->regs + offset);
+}
+
+static int dw_spi_ofdata_to_platdata(struct udevice *bus)
+{
+       struct dw_spi_platdata *plat = bus->platdata;
+       const void *blob = gd->fdt_blob;
+       int node = bus->of_offset;
+
+       plat->regs = (struct dw_spi *)fdtdec_get_addr(blob, node, "reg");
+
+       /* Use 500KHz as a suitable default */
+       plat->frequency = fdtdec_get_int(blob, node, "spi-max-frequency",
+                                       500000);
+       debug("%s: regs=%p max-frequency=%d\n", __func__, plat->regs,
+             plat->frequency);
+
+       return 0;
+}
+
+static inline void spi_enable_chip(struct dw_spi_priv *priv, int enable)
+{
+       dw_writel(priv, DW_SPI_SSIENR, (enable ? 1 : 0));
+}
+
+/* Restart the controller, disable all interrupts, clean rx fifo */
+static void spi_hw_init(struct dw_spi_priv *priv)
+{
+       spi_enable_chip(priv, 0);
+       dw_writel(priv, DW_SPI_IMR, 0xff);
+       spi_enable_chip(priv, 1);
+
+       /*
+        * Try to detect the FIFO depth if not set by interface driver,
+        * the depth could be from 2 to 256 from HW spec
+        */
+       if (!priv->fifo_len) {
+               u32 fifo;
+
+               for (fifo = 2; fifo <= 256; fifo++) {
+                       dw_writew(priv, DW_SPI_TXFLTR, fifo);
+                       if (fifo != dw_readw(priv, DW_SPI_TXFLTR))
+                               break;
+               }
+
+               priv->fifo_len = (fifo == 2) ? 0 : fifo - 1;
+               dw_writew(priv, DW_SPI_TXFLTR, 0);
+       }
+       debug("%s: fifo_len=%d\n", __func__, priv->fifo_len);
+}
+
+static int dw_spi_probe(struct udevice *bus)
+{
+       struct dw_spi_platdata *plat = dev_get_platdata(bus);
+       struct dw_spi_priv *priv = dev_get_priv(bus);
+
+       priv->regs = plat->regs;
+       priv->freq = plat->frequency;
+
+       /* Currently only bits_per_word == 8 supported */
+       priv->bits_per_word = 8;
+
+       priv->tmode = 0; /* Tx & Rx */
+
+       /* Basic HW init */
+       spi_hw_init(priv);
+
+       return 0;
+}
+
+/* Return the max entries we can fill into tx fifo */
+static inline u32 tx_max(struct dw_spi_priv *priv)
+{
+       u32 tx_left, tx_room, rxtx_gap;
+
+       tx_left = (priv->tx_end - priv->tx) / (priv->bits_per_word >> 3);
+       tx_room = priv->fifo_len - dw_readw(priv, DW_SPI_TXFLR);
+
+       /*
+        * Another concern is about the tx/rx mismatch, we
+        * thought about using (priv->fifo_len - rxflr - txflr) as
+        * one maximum value for tx, but it doesn't cover the
+        * data which is out of tx/rx fifo and inside the
+        * shift registers. So a control from sw point of
+        * view is taken.
+        */
+       rxtx_gap = ((priv->rx_end - priv->rx) - (priv->tx_end - priv->tx)) /
+               (priv->bits_per_word >> 3);
+
+       return min3(tx_left, tx_room, (u32)(priv->fifo_len - rxtx_gap));
+}
+
+/* Return the max entries we should read out of rx fifo */
+static inline u32 rx_max(struct dw_spi_priv *priv)
+{
+       u32 rx_left = (priv->rx_end - priv->rx) / (priv->bits_per_word >> 3);
+
+       return min_t(u32, rx_left, dw_readw(priv, DW_SPI_RXFLR));
+}
+
+static void dw_writer(struct dw_spi_priv *priv)
+{
+       u32 max = tx_max(priv);
+       u16 txw = 0;
+
+       while (max--) {
+               /* Set the tx word if the transfer's original "tx" is not null */
+               if (priv->tx_end - priv->len) {
+                       if (priv->bits_per_word == 8)
+                               txw = *(u8 *)(priv->tx);
+                       else
+                               txw = *(u16 *)(priv->tx);
+               }
+               dw_writew(priv, DW_SPI_DR, txw);
+               debug("%s: tx=0x%02x\n", __func__, txw);
+               priv->tx += priv->bits_per_word >> 3;
+       }
+}
+
+static int dw_reader(struct dw_spi_priv *priv)
+{
+       unsigned start = get_timer(0);
+       u32 max;
+       u16 rxw;
+
+       /* Wait for rx data to be ready */
+       while (rx_max(priv) == 0) {
+               if (get_timer(start) > RX_TIMEOUT)
+                       return -ETIMEDOUT;
+       }
+
+       max = rx_max(priv);
+
+       while (max--) {
+               rxw = dw_readw(priv, DW_SPI_DR);
+               debug("%s: rx=0x%02x\n", __func__, rxw);
+
+               /*
+                * Care about rx only if the transfer's original "rx" is
+                * not null
+                */
+               if (priv->rx_end - priv->len) {
+                       if (priv->bits_per_word == 8)
+                               *(u8 *)(priv->rx) = rxw;
+                       else
+                               *(u16 *)(priv->rx) = rxw;
+               }
+               priv->rx += priv->bits_per_word >> 3;
+       }
+
+       return 0;
+}
+
+static int poll_transfer(struct dw_spi_priv *priv)
+{
+       int ret;
+
+       do {
+               dw_writer(priv);
+               ret = dw_reader(priv);
+               if (ret < 0)
+                       return ret;
+       } while (priv->rx_end > priv->rx);
+
+       return 0;
+}
+
+static int dw_spi_xfer(struct udevice *dev, unsigned int bitlen,
+                      const void *dout, void *din, unsigned long flags)
+{
+       struct udevice *bus = dev->parent;
+       struct dw_spi_priv *priv = dev_get_priv(bus);
+       const u8 *tx = dout;
+       u8 *rx = din;
+       int ret = 0;
+       u32 cr0 = 0;
+       u32 cs;
+
+       /* spi core configured to do 8 bit transfers */
+       if (bitlen % 8) {
+               debug("Non byte aligned SPI transfer.\n");
+               return -1;
+       }
+
+       cr0 = (priv->bits_per_word - 1) | (priv->type << SPI_FRF_OFFSET) |
+               (priv->mode << SPI_MODE_OFFSET) |
+               (priv->tmode << SPI_TMOD_OFFSET);
+
+       if (rx && tx)
+               priv->tmode = SPI_TMOD_TR;
+       else if (rx)
+               priv->tmode = SPI_TMOD_RO;
+       else
+               priv->tmode = SPI_TMOD_TO;
+
+       cr0 &= ~SPI_TMOD_MASK;
+       cr0 |= (priv->tmode << SPI_TMOD_OFFSET);
+
+       priv->len = bitlen >> 3;
+       debug("%s: rx=%p tx=%p len=%d [bytes]\n", __func__, rx, tx, priv->len);
+
+       priv->tx = (void *)tx;
+       priv->tx_end = priv->tx + priv->len;
+       priv->rx = rx;
+       priv->rx_end = priv->rx + priv->len;
+
+       /* Disable controller before writing control registers */
+       spi_enable_chip(priv, 0);
+
+       debug("%s: cr0=%08x\n", __func__, cr0);
+       /* Reprogram cr0 only if changed */
+       if (dw_readw(priv, DW_SPI_CTRL0) != cr0)
+               dw_writew(priv, DW_SPI_CTRL0, cr0);
+
+       /*
+        * Configure the desired SS (slave select 0...3) in the controller
+        * The DW SPI controller will activate and deactivate this CS
+        * automatically. So no cs_activate() etc is needed in this driver.
+        */
+       cs = spi_chip_select(dev);
+       dw_writel(priv, DW_SPI_SER, 1 << cs);
+
+       /* Enable controller after writing control registers */
+       spi_enable_chip(priv, 1);
+
+       /* Start transfer in a polling loop */
+       ret = poll_transfer(priv);
+
+       return ret;
+}
+
+static int dw_spi_set_speed(struct udevice *bus, uint speed)
+{
+       struct dw_spi_platdata *plat = bus->platdata;
+       struct dw_spi_priv *priv = dev_get_priv(bus);
+       u16 clk_div;
+
+       if (speed > plat->frequency)
+               speed = plat->frequency;
+
+       /* Disable controller before writing control registers */
+       spi_enable_chip(priv, 0);
+
+       /* clk_div doesn't support odd number */
+       clk_div = cm_get_spi_controller_clk_hz() / speed;
+       clk_div = (clk_div + 1) & 0xfffe;
+       dw_writel(priv, DW_SPI_BAUDR, clk_div);
+
+       /* Enable controller after writing control registers */
+       spi_enable_chip(priv, 1);
+
+       priv->freq = speed;
+       debug("%s: regs=%p speed=%d clk_div=%d\n", __func__, priv->regs,
+             priv->freq, clk_div);
+
+       return 0;
+}
+
+static int dw_spi_set_mode(struct udevice *bus, uint mode)
+{
+       struct dw_spi_priv *priv = dev_get_priv(bus);
+
+       /*
+        * Can't set mode yet. Since this depends on if rx, tx, or
+        * rx & tx is requested. So we have to defer this to the
+        * real transfer function.
+        */
+       priv->mode = mode;
+       debug("%s: regs=%p, mode=%d\n", __func__, priv->regs, priv->mode);
+
+       return 0;
+}
+
+static const struct dm_spi_ops dw_spi_ops = {
+       .xfer           = dw_spi_xfer,
+       .set_speed      = dw_spi_set_speed,
+       .set_mode       = dw_spi_set_mode,
+       /*
+        * cs_info is not needed, since we require all chip selects to be
+        * in the device tree explicitly
+        */
+};
+
+static const struct udevice_id dw_spi_ids[] = {
+       { .compatible = "snps,dw-apb-ssi" },
+       { }
+};
+
+U_BOOT_DRIVER(dw_spi) = {
+       .name = "dw_spi",
+       .id = UCLASS_SPI,
+       .of_match = dw_spi_ids,
+       .ops = &dw_spi_ops,
+       .ofdata_to_platdata = dw_spi_ofdata_to_platdata,
+       .platdata_auto_alloc_size = sizeof(struct dw_spi_platdata),
+       .priv_auto_alloc_size = sizeof(struct dw_spi_priv),
+       .per_child_auto_alloc_size = sizeof(struct spi_slave),
+       .probe = dw_spi_probe,
+};
index ae0fe58f2c06400e2cebfbd3b9bc680354ae99be..375dc07f5f47f521d51544dd337a058873809a59 100644 (file)
@@ -273,7 +273,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *data_out,
                        spi_cs_deactivate(slave);
                        return 0;
                }
-               buf_len = 2 * cmd_len + min(data_len, max_tran_len);
+               buf_len = 2 * cmd_len + min(data_len, (size_t)max_tran_len);
                len = cmd_len + data_len;
                rx_offset = cmd_len;
                buffer = (unsigned char *)malloc(buf_len);
@@ -306,7 +306,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *data_out,
                if (data_in)
                        din = buffer + rx_offset;
                dout = buffer;
-               tran_len = min(data_len , max_tran_len);
+               tran_len = min(data_len, (size_t)max_tran_len);
                num_blks = DIV_ROUND_UP(tran_len + cmd_len, 4);
                num_bytes = (tran_len + cmd_len) % 4;
                fsl->data_len = tran_len + cmd_len;
index ba20beff4f988adfeadbb8c799372da546440878..5e0b0692747cb7791c38e33783c515629f8ba6ff 100644 (file)
 #include "fsl_qspi.h"
 
 #define RX_BUFFER_SIZE         0x80
+#ifdef CONFIG_MX6SX
+#define TX_BUFFER_SIZE         0x200
+#else
 #define TX_BUFFER_SIZE         0x40
+#endif
 
 #define OFFSET_BITS_MASK       0x00ffffff
 
 #define SEQID_CHIP_ERASE       5
 #define SEQID_PP               6
 #define SEQID_RDID             7
+#define SEQID_BE_4K            8
+#ifdef CONFIG_SPI_FLASH_BAR
+#define SEQID_BRRD             9
+#define SEQID_BRWR             10
+#define SEQID_RDEAR            11
+#define SEQID_WREAR            12
+#endif
 
-/* Flash opcodes */
-#define OPCODE_PP              0x02    /* Page program (up to 256 bytes) */
-#define OPCODE_RDSR            0x05    /* Read status register */
-#define OPCODE_WREN            0x06    /* Write enable */
-#define OPCODE_FAST_READ       0x0b    /* Read data bytes (high frequency) */
-#define OPCODE_CHIP_ERASE      0xc7    /* Erase whole flash chip */
-#define OPCODE_SE              0xd8    /* Sector erase (usually 64KiB) */
-#define OPCODE_RDID            0x9f    /* Read JEDEC ID */
-
-/* 4-byte address opcodes - used on Spansion and some Macronix flashes */
-#define OPCODE_FAST_READ_4B    0x0c    /* Read data bytes (high frequency) */
-#define OPCODE_PP_4B           0x12    /* Page program (up to 256 bytes) */
-#define OPCODE_SE_4B           0xdc    /* Sector erase (usually 64KiB) */
+/* QSPI CMD */
+#define QSPI_CMD_PP            0x02    /* Page program (up to 256 bytes) */
+#define QSPI_CMD_RDSR          0x05    /* Read status register */
+#define QSPI_CMD_WREN          0x06    /* Write enable */
+#define QSPI_CMD_FAST_READ     0x0b    /* Read data bytes (high frequency) */
+#define QSPI_CMD_BE_4K         0x20    /* 4K erase */
+#define QSPI_CMD_CHIP_ERASE    0xc7    /* Erase whole flash chip */
+#define QSPI_CMD_SE            0xd8    /* Sector erase (usually 64KiB) */
+#define QSPI_CMD_RDID          0x9f    /* Read JEDEC ID */
+
+/* Used for Micron, winbond and Macronix flashes */
+#define        QSPI_CMD_WREAR          0xc5    /* EAR register write */
+#define        QSPI_CMD_RDEAR          0xc8    /* EAR reigster read */
+
+/* Used for Spansion flashes only. */
+#define        QSPI_CMD_BRRD           0x16    /* Bank register read */
+#define        QSPI_CMD_BRWR           0x17    /* Bank register write */
+
+/* 4-byte address QSPI CMD - used on Spansion and some Macronix flashes */
+#define QSPI_CMD_FAST_READ_4B  0x0c    /* Read data bytes (high frequency) */
+#define QSPI_CMD_PP_4B         0x12    /* Page program (up to 256 bytes) */
+#define QSPI_CMD_SE_4B         0xdc    /* Sector erase (usually 64KiB) */
 
 #ifdef CONFIG_SYS_FSL_QSPI_LE
 #define qspi_read32            in_le32
 
 static unsigned long spi_bases[] = {
        QSPI0_BASE_ADDR,
+#ifdef CONFIG_MX6SX
+       QSPI1_BASE_ADDR,
+#endif
 };
 
 static unsigned long amba_bases[] = {
        QSPI0_AMBA_BASE,
+#ifdef CONFIG_MX6SX
+       QSPI1_AMBA_BASE,
+#endif
 };
 
 struct fsl_qspi {
@@ -94,7 +120,7 @@ static void qspi_set_lut(struct fsl_qspi *qspi)
 
        /* Write Enable */
        lut_base = SEQID_WREN * 4;
-       qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_WREN) |
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_WREN) |
                PAD0(LUT_PAD1) | INSTR0(LUT_CMD));
        qspi_write32(&regs->lut[lut_base + 1], 0);
        qspi_write32(&regs->lut[lut_base + 2], 0);
@@ -102,14 +128,22 @@ static void qspi_set_lut(struct fsl_qspi *qspi)
 
        /* Fast Read */
        lut_base = SEQID_FAST_READ * 4;
+#ifdef CONFIG_SPI_FLASH_BAR
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_FAST_READ) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
+#else
        if (FSL_QSPI_FLASH_SIZE  <= SZ_16M)
-               qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_FAST_READ) |
+               qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_FAST_READ) |
                        PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
                        PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
        else
-               qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_FAST_READ_4B) |
-                       PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR32BIT) |
-                       PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
+               qspi_write32(&regs->lut[lut_base],
+                            OPRND0(QSPI_CMD_FAST_READ_4B) |
+                            PAD0(LUT_PAD1) | INSTR0(LUT_CMD) |
+                            OPRND1(ADDR32BIT) | PAD1(LUT_PAD1) |
+                            INSTR1(LUT_ADDR));
+#endif
        qspi_write32(&regs->lut[lut_base + 1], OPRND0(8) | PAD0(LUT_PAD1) |
                INSTR0(LUT_DUMMY) | OPRND1(RX_BUFFER_SIZE) | PAD1(LUT_PAD1) |
                INSTR1(LUT_READ));
@@ -118,7 +152,7 @@ static void qspi_set_lut(struct fsl_qspi *qspi)
 
        /* Read Status */
        lut_base = SEQID_RDSR * 4;
-       qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_RDSR) |
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_RDSR) |
                PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(1) |
                PAD1(LUT_PAD1) | INSTR1(LUT_READ));
        qspi_write32(&regs->lut[lut_base + 1], 0);
@@ -127,21 +161,27 @@ static void qspi_set_lut(struct fsl_qspi *qspi)
 
        /* Erase a sector */
        lut_base = SEQID_SE * 4;
+#ifdef CONFIG_SPI_FLASH_BAR
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_SE) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
+#else
        if (FSL_QSPI_FLASH_SIZE  <= SZ_16M)
-               qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_SE) |
+               qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_SE) |
                        PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
                        PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
        else
-               qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_SE_4B) |
+               qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_SE_4B) |
                        PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR32BIT) |
                        PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
+#endif
        qspi_write32(&regs->lut[lut_base + 1], 0);
        qspi_write32(&regs->lut[lut_base + 2], 0);
        qspi_write32(&regs->lut[lut_base + 3], 0);
 
        /* Erase the whole chip */
        lut_base = SEQID_CHIP_ERASE * 4;
-       qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_CHIP_ERASE) |
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_CHIP_ERASE) |
                PAD0(LUT_PAD1) | INSTR0(LUT_CMD));
        qspi_write32(&regs->lut[lut_base + 1], 0);
        qspi_write32(&regs->lut[lut_base + 2], 0);
@@ -149,33 +189,184 @@ static void qspi_set_lut(struct fsl_qspi *qspi)
 
        /* Page Program */
        lut_base = SEQID_PP * 4;
+#ifdef CONFIG_SPI_FLASH_BAR
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_PP) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
+#else
        if (FSL_QSPI_FLASH_SIZE  <= SZ_16M)
-               qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_PP) |
+               qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_PP) |
                        PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
                        PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
        else
-               qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_PP_4B) |
+               qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_PP_4B) |
                        PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR32BIT) |
                        PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
+#endif
+#ifdef CONFIG_MX6SX
+       /*
+        * To MX6SX, OPRND0(TX_BUFFER_SIZE) can not work correctly.
+        * So, Use IDATSZ in IPCR to determine the size and here set 0.
+        */
+       qspi_write32(&regs->lut[lut_base + 1], OPRND0(0) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_WRITE));
+#else
        qspi_write32(&regs->lut[lut_base + 1], OPRND0(TX_BUFFER_SIZE) |
                PAD0(LUT_PAD1) | INSTR0(LUT_WRITE));
+#endif
        qspi_write32(&regs->lut[lut_base + 2], 0);
        qspi_write32(&regs->lut[lut_base + 3], 0);
 
        /* READ ID */
        lut_base = SEQID_RDID * 4;
-       qspi_write32(&regs->lut[lut_base], OPRND0(OPCODE_RDID) |
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_RDID) |
                PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(8) |
                PAD1(LUT_PAD1) | INSTR1(LUT_READ));
        qspi_write32(&regs->lut[lut_base + 1], 0);
        qspi_write32(&regs->lut[lut_base + 2], 0);
        qspi_write32(&regs->lut[lut_base + 3], 0);
 
+       /* SUB SECTOR 4K ERASE */
+       lut_base = SEQID_BE_4K * 4;
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_BE_4K) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
+
+#ifdef CONFIG_SPI_FLASH_BAR
+       /*
+        * BRRD BRWR RDEAR WREAR are all supported, because it is hard to
+        * dynamically check whether to set BRRD BRWR or RDEAR WREAR during
+        * initialization.
+        */
+       lut_base = SEQID_BRRD * 4;
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_BRRD) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(1) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_READ));
+
+       lut_base = SEQID_BRWR * 4;
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_BRWR) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(1) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_WRITE));
+
+       lut_base = SEQID_RDEAR * 4;
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_RDEAR) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(1) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_READ));
+
+       lut_base = SEQID_WREAR * 4;
+       qspi_write32(&regs->lut[lut_base], OPRND0(QSPI_CMD_WREAR) |
+                    PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(1) |
+                    PAD1(LUT_PAD1) | INSTR1(LUT_WRITE));
+#endif
        /* Lock the LUT */
        qspi_write32(&regs->lutkey, LUT_KEY_VALUE);
        qspi_write32(&regs->lckcr, QSPI_LCKCR_LOCK);
 }
 
+#if defined(CONFIG_SYS_FSL_QSPI_AHB)
+/*
+ * If we have changed the content of the flash by writing or erasing,
+ * we need to invalidate the AHB buffer. If we do not do so, we may read out
+ * the wrong data. The spec tells us reset the AHB domain and Serial Flash
+ * domain at the same time.
+ */
+static inline void qspi_ahb_invalid(struct fsl_qspi *q)
+{
+       struct fsl_qspi_regs *regs = (struct fsl_qspi_regs *)q->reg_base;
+       u32 reg;
+
+       reg = qspi_read32(&regs->mcr);
+       reg |= QSPI_MCR_SWRSTHD_MASK | QSPI_MCR_SWRSTSD_MASK;
+       qspi_write32(&regs->mcr, reg);
+
+       /*
+        * The minimum delay : 1 AHB + 2 SFCK clocks.
+        * Delay 1 us is enough.
+        */
+       udelay(1);
+
+       reg &= ~(QSPI_MCR_SWRSTHD_MASK | QSPI_MCR_SWRSTSD_MASK);
+       qspi_write32(&regs->mcr, reg);
+}
+
+/* Read out the data from the AHB buffer. */
+static inline void qspi_ahb_read(struct fsl_qspi *q, u8 *rxbuf, int len)
+{
+       struct fsl_qspi_regs *regs = (struct fsl_qspi_regs *)q->reg_base;
+       u32 mcr_reg;
+
+       mcr_reg = qspi_read32(&regs->mcr);
+
+       qspi_write32(&regs->mcr, QSPI_MCR_CLR_RXF_MASK | QSPI_MCR_CLR_TXF_MASK |
+                    QSPI_MCR_RESERVED_MASK | QSPI_MCR_END_CFD_LE);
+
+       /* Read out the data directly from the AHB buffer. */
+       memcpy(rxbuf, (u8 *)(q->amba_base + q->sf_addr), len);
+
+       qspi_write32(&regs->mcr, mcr_reg);
+}
+
+static void qspi_enable_ddr_mode(struct fsl_qspi_regs *regs)
+{
+       u32 reg, reg2;
+
+       reg = qspi_read32(&regs->mcr);
+       /* Disable the module */
+       qspi_write32(&regs->mcr, reg | QSPI_MCR_MDIS_MASK);
+
+       /* Set the Sampling Register for DDR */
+       reg2 = qspi_read32(&regs->smpr);
+       reg2 &= ~QSPI_SMPR_DDRSMP_MASK;
+       reg2 |= (2 << QSPI_SMPR_DDRSMP_SHIFT);
+       qspi_write32(&regs->smpr, reg2);
+
+       /* Enable the module again (enable the DDR too) */
+       reg |= QSPI_MCR_DDR_EN_MASK;
+       /* Enable bit 29 for imx6sx */
+       reg |= (1 << 29);
+
+       qspi_write32(&regs->mcr, reg);
+}
+
+/*
+ * There are two different ways to read out the data from the flash:
+ *  the "IP Command Read" and the "AHB Command Read".
+ *
+ * The IC guy suggests we use the "AHB Command Read" which is faster
+ * then the "IP Command Read". (What's more is that there is a bug in
+ * the "IP Command Read" in the Vybrid.)
+ *
+ * After we set up the registers for the "AHB Command Read", we can use
+ * the memcpy to read the data directly. A "missed" access to the buffer
+ * causes the controller to clear the buffer, and use the sequence pointed
+ * by the QUADSPI_BFGENCR[SEQID] to initiate a read from the flash.
+ */
+static void qspi_init_ahb_read(struct fsl_qspi_regs *regs)
+{
+       /* AHB configuration for access buffer 0/1/2 .*/
+       qspi_write32(&regs->buf0cr, QSPI_BUFXCR_INVALID_MSTRID);
+       qspi_write32(&regs->buf1cr, QSPI_BUFXCR_INVALID_MSTRID);
+       qspi_write32(&regs->buf2cr, QSPI_BUFXCR_INVALID_MSTRID);
+       qspi_write32(&regs->buf3cr, QSPI_BUF3CR_ALLMST_MASK |
+                    (0x80 << QSPI_BUF3CR_ADATSZ_SHIFT));
+
+       /* We only use the buffer3 */
+       qspi_write32(&regs->buf0ind, 0);
+       qspi_write32(&regs->buf1ind, 0);
+       qspi_write32(&regs->buf2ind, 0);
+
+       /*
+        * Set the default lut sequence for AHB Read.
+        * Parallel mode is disabled.
+        */
+       qspi_write32(&regs->bfgencr,
+                    SEQID_FAST_READ << QSPI_BFGENCR_SEQID_SHIFT);
+
+       /*Enable DDR Mode*/
+       qspi_enable_ddr_mode(regs);
+}
+#endif
+
 void spi_init()
 {
        /* do nothing */
@@ -186,18 +377,28 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 {
        struct fsl_qspi *qspi;
        struct fsl_qspi_regs *regs;
-       u32 reg_val, smpr_val;
-       u32 total_size, seq_id;
+       u32 smpr_val;
+       u32 total_size;
 
        if (bus >= ARRAY_SIZE(spi_bases))
                return NULL;
 
+       if (cs >= FSL_QSPI_FLASH_NUM)
+               return NULL;
+
        qspi = spi_alloc_slave(struct fsl_qspi, bus, cs);
        if (!qspi)
                return NULL;
 
        qspi->reg_base = spi_bases[bus];
-       qspi->amba_base = amba_bases[bus];
+       /*
+        * According cs, use different amba_base to choose the
+        * corresponding flash devices.
+        *
+        * If not, only one flash device is used even if passing
+        * different cs using `sf probe`
+        */
+       qspi->amba_base = amba_bases[bus] + cs * FSL_QSPI_FLASH_SIZE;
 
        qspi->slave.max_write_size = TX_BUFFER_SIZE;
 
@@ -210,10 +411,20 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        qspi_write32(&regs->mcr, QSPI_MCR_RESERVED_MASK);
 
        total_size = FSL_QSPI_FLASH_SIZE * FSL_QSPI_FLASH_NUM;
-       qspi_write32(&regs->sfa1ad, FSL_QSPI_FLASH_SIZE | qspi->amba_base);
-       qspi_write32(&regs->sfa2ad, FSL_QSPI_FLASH_SIZE | qspi->amba_base);
-       qspi_write32(&regs->sfb1ad, total_size | qspi->amba_base);
-       qspi_write32(&regs->sfb2ad, total_size | qspi->amba_base);
+       /*
+        * Any read access to non-implemented addresses will provide
+        * undefined results.
+        *
+        * In case single die flash devices, TOP_ADDR_MEMA2 and
+        * TOP_ADDR_MEMB2 should be initialized/programmed to
+        * TOP_ADDR_MEMA1 and TOP_ADDR_MEMB1 respectively - in effect,
+        * setting the size of these devices to 0.  This would ensure
+        * that the complete memory map is assigned to only one flash device.
+        */
+       qspi_write32(&regs->sfa1ad, FSL_QSPI_FLASH_SIZE | amba_bases[bus]);
+       qspi_write32(&regs->sfa2ad, FSL_QSPI_FLASH_SIZE | amba_bases[bus]);
+       qspi_write32(&regs->sfb1ad, total_size | amba_bases[bus]);
+       qspi_write32(&regs->sfb2ad, total_size | amba_bases[bus]);
 
        qspi_set_lut(qspi);
 
@@ -222,13 +433,9 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        qspi_write32(&regs->smpr, smpr_val);
        qspi_write32(&regs->mcr, QSPI_MCR_RESERVED_MASK);
 
-       seq_id = 0;
-       reg_val = qspi_read32(&regs->bfgencr);
-       reg_val &= ~QSPI_BFGENCR_SEQID_MASK;
-       reg_val |= (seq_id << QSPI_BFGENCR_SEQID_SHIFT);
-       reg_val &= ~QSPI_BFGENCR_PAR_EN_MASK;
-       qspi_write32(&regs->bfgencr, reg_val);
-
+#ifdef CONFIG_SYS_FSL_QSPI_AHB
+       qspi_init_ahb_read(regs);
+#endif
        return &qspi->slave;
 }
 
@@ -244,6 +451,47 @@ int spi_claim_bus(struct spi_slave *slave)
        return 0;
 }
 
+#ifdef CONFIG_SPI_FLASH_BAR
+/* Bank register read/write, EAR register read/write */
+static void qspi_op_rdbank(struct fsl_qspi *qspi, u8 *rxbuf, u32 len)
+{
+       struct fsl_qspi_regs *regs = (struct fsl_qspi_regs *)qspi->reg_base;
+       u32 reg, mcr_reg, data, seqid;
+
+       mcr_reg = qspi_read32(&regs->mcr);
+       qspi_write32(&regs->mcr, QSPI_MCR_CLR_RXF_MASK | QSPI_MCR_CLR_TXF_MASK |
+                    QSPI_MCR_RESERVED_MASK | QSPI_MCR_END_CFD_LE);
+       qspi_write32(&regs->rbct, QSPI_RBCT_RXBRD_USEIPS);
+
+       qspi_write32(&regs->sfar, qspi->amba_base);
+
+       if (qspi->cur_seqid == QSPI_CMD_BRRD)
+               seqid = SEQID_BRRD;
+       else
+               seqid = SEQID_RDEAR;
+
+       qspi_write32(&regs->ipcr, (seqid << QSPI_IPCR_SEQID_SHIFT) | len);
+
+       /* Wait previous command complete */
+       while (qspi_read32(&regs->sr) & QSPI_SR_BUSY_MASK)
+               ;
+
+       while (1) {
+               reg = qspi_read32(&regs->rbsr);
+               if (reg & QSPI_RBSR_RDBFL_MASK) {
+                       data = qspi_read32(&regs->rbdr[0]);
+                       data = qspi_endian_xchg(data);
+                       memcpy(rxbuf, &data, len);
+                       qspi_write32(&regs->mcr, qspi_read32(&regs->mcr) |
+                                    QSPI_MCR_CLR_RXF_MASK);
+                       break;
+               }
+       }
+
+       qspi_write32(&regs->mcr, mcr_reg);
+}
+#endif
+
 static void qspi_op_rdid(struct fsl_qspi *qspi, u32 *rxbuf, u32 len)
 {
        struct fsl_qspi_regs *regs = (struct fsl_qspi_regs *)qspi->reg_base;
@@ -278,6 +526,8 @@ static void qspi_op_rdid(struct fsl_qspi *qspi, u32 *rxbuf, u32 len)
        qspi_write32(&regs->mcr, mcr_reg);
 }
 
+#ifndef CONFIG_SYS_FSL_QSPI_AHB
+/* If not use AHB read, read data from ip interface */
 static void qspi_op_read(struct fsl_qspi *qspi, u32 *rxbuf, u32 len)
 {
        struct fsl_qspi_regs *regs = (struct fsl_qspi_regs *)qspi->reg_base;
@@ -321,11 +571,12 @@ static void qspi_op_read(struct fsl_qspi *qspi, u32 *rxbuf, u32 len)
 
        qspi_write32(&regs->mcr, mcr_reg);
 }
+#endif
 
-static void qspi_op_pp(struct fsl_qspi *qspi, u32 *txbuf, u32 len)
+static void qspi_op_write(struct fsl_qspi *qspi, u8 *txbuf, u32 len)
 {
        struct fsl_qspi_regs *regs = (struct fsl_qspi_regs *)qspi->reg_base;
-       u32 mcr_reg, data, reg, status_reg;
+       u32 mcr_reg, data, reg, status_reg, seqid;
        int i, size, tx_size;
        u32 to_or_from = 0;
 
@@ -355,22 +606,39 @@ static void qspi_op_pp(struct fsl_qspi *qspi, u32 *txbuf, u32 len)
                        qspi_read32(&regs->mcr) | QSPI_MCR_CLR_RXF_MASK);
        }
 
+       /* Default is page programming */
+       seqid = SEQID_PP;
+#ifdef CONFIG_SPI_FLASH_BAR
+       if (qspi->cur_seqid == QSPI_CMD_BRWR)
+               seqid = SEQID_BRWR;
+       else if (qspi->cur_seqid == QSPI_CMD_WREAR)
+               seqid = SEQID_WREAR;
+#endif
+
        to_or_from = qspi->sf_addr + qspi->amba_base;
+
        qspi_write32(&regs->sfar, to_or_from);
 
        tx_size = (len > TX_BUFFER_SIZE) ?
                TX_BUFFER_SIZE : len;
 
-       size = (tx_size + 3) / 4;
-
+       size = tx_size / 4;
        for (i = 0; i < size; i++) {
-               data = qspi_endian_xchg(*txbuf);
+               memcpy(&data, txbuf, 4);
+               data = qspi_endian_xchg(data);
                qspi_write32(&regs->tbdr, data);
-               txbuf++;
+               txbuf += 4;
        }
 
-       qspi_write32(&regs->ipcr,
-               (SEQID_PP << QSPI_IPCR_SEQID_SHIFT) | tx_size);
+       size = tx_size % 4;
+       if (size) {
+               data = 0;
+               memcpy(&data, txbuf, size);
+               data = qspi_endian_xchg(data);
+               qspi_write32(&regs->tbdr, data);
+       }
+
+       qspi_write32(&regs->ipcr, (seqid << QSPI_IPCR_SEQID_SHIFT) | tx_size);
        while (qspi_read32(&regs->sr) & QSPI_SR_BUSY_MASK)
                ;
 
@@ -409,7 +677,7 @@ static void qspi_op_rdsr(struct fsl_qspi *qspi, u32 *rxbuf)
        qspi_write32(&regs->mcr, mcr_reg);
 }
 
-static void qspi_op_se(struct fsl_qspi *qspi)
+static void qspi_op_erase(struct fsl_qspi *qspi)
 {
        struct fsl_qspi_regs *regs = (struct fsl_qspi_regs *)qspi->reg_base;
        u32 mcr_reg;
@@ -428,8 +696,13 @@ static void qspi_op_se(struct fsl_qspi *qspi)
        while (qspi_read32(&regs->sr) & QSPI_SR_BUSY_MASK)
                ;
 
-       qspi_write32(&regs->ipcr,
-               (SEQID_SE << QSPI_IPCR_SEQID_SHIFT) | 0);
+       if (qspi->cur_seqid == QSPI_CMD_SE) {
+               qspi_write32(&regs->ipcr,
+                            (SEQID_SE << QSPI_IPCR_SEQID_SHIFT) | 0);
+       } else if (qspi->cur_seqid == QSPI_CMD_BE_4K) {
+               qspi_write32(&regs->ipcr,
+                            (SEQID_BE_4K << QSPI_IPCR_SEQID_SHIFT) | 0);
+       }
        while (qspi_read32(&regs->sr) & QSPI_SR_BUSY_MASK)
                ;
 
@@ -441,38 +714,67 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
 {
        struct fsl_qspi *qspi = to_qspi_spi(slave);
        u32 bytes = DIV_ROUND_UP(bitlen, 8);
-       static u32 pp_sfaddr;
+       static u32 wr_sfaddr;
        u32 txbuf;
 
        if (dout) {
-               memcpy(&txbuf, dout, 4);
-               qspi->cur_seqid = *(u8 *)dout;
+               if (flags & SPI_XFER_BEGIN) {
+                       qspi->cur_seqid = *(u8 *)dout;
+                       memcpy(&txbuf, dout, 4);
+               }
 
                if (flags == SPI_XFER_END) {
-                       qspi->sf_addr = pp_sfaddr;
-                       qspi_op_pp(qspi, (u32 *)dout, bytes);
+                       qspi->sf_addr = wr_sfaddr;
+                       qspi_op_write(qspi, (u8 *)dout, bytes);
                        return 0;
                }
 
-               if (qspi->cur_seqid == OPCODE_FAST_READ) {
+               if (qspi->cur_seqid == QSPI_CMD_FAST_READ) {
                        qspi->sf_addr = swab32(txbuf) & OFFSET_BITS_MASK;
-               } else if (qspi->cur_seqid == OPCODE_SE) {
+               } else if ((qspi->cur_seqid == QSPI_CMD_SE) ||
+                          (qspi->cur_seqid == QSPI_CMD_BE_4K)) {
                        qspi->sf_addr = swab32(txbuf) & OFFSET_BITS_MASK;
-                       qspi_op_se(qspi);
-               } else if (qspi->cur_seqid == OPCODE_PP) {
-                       pp_sfaddr = swab32(txbuf) & OFFSET_BITS_MASK;
+                       qspi_op_erase(qspi);
+               } else if (qspi->cur_seqid == QSPI_CMD_PP)
+                       wr_sfaddr = swab32(txbuf) & OFFSET_BITS_MASK;
+#ifdef CONFIG_SPI_FLASH_BAR
+               else if ((qspi->cur_seqid == QSPI_CMD_BRWR) ||
+                        (qspi->cur_seqid == QSPI_CMD_WREAR)) {
+                       wr_sfaddr = 0;
                }
+#endif
        }
 
        if (din) {
-               if (qspi->cur_seqid == OPCODE_FAST_READ)
+               if (qspi->cur_seqid == QSPI_CMD_FAST_READ) {
+#ifdef CONFIG_SYS_FSL_QSPI_AHB
+                       qspi_ahb_read(qspi, din, bytes);
+#else
                        qspi_op_read(qspi, din, bytes);
-               else if (qspi->cur_seqid == OPCODE_RDID)
+#endif
+               }
+               else if (qspi->cur_seqid == QSPI_CMD_RDID)
                        qspi_op_rdid(qspi, din, bytes);
-               else if (qspi->cur_seqid == OPCODE_RDSR)
+               else if (qspi->cur_seqid == QSPI_CMD_RDSR)
                        qspi_op_rdsr(qspi, din);
+#ifdef CONFIG_SPI_FLASH_BAR
+               else if ((qspi->cur_seqid == QSPI_CMD_BRRD) ||
+                        (qspi->cur_seqid == QSPI_CMD_RDEAR)) {
+                       qspi->sf_addr = 0;
+                       qspi_op_rdbank(qspi, din, bytes);
+               }
+#endif
        }
 
+#ifdef CONFIG_SYS_FSL_QSPI_AHB
+       if ((qspi->cur_seqid == QSPI_CMD_SE) ||
+           (qspi->cur_seqid == QSPI_CMD_PP) ||
+           (qspi->cur_seqid == QSPI_CMD_BE_4K) ||
+           (qspi->cur_seqid == QSPI_CMD_WREAR) ||
+           (qspi->cur_seqid == QSPI_CMD_BRWR))
+               qspi_ahb_invalid(qspi);
+#endif
+
        return 0;
 }
 
index db400e66b50161281467babc506ce31bb9385cd4..6cb361018b46f783bf03afbdb29dbe0da0300ebf 100644 (file)
@@ -58,7 +58,12 @@ struct fsl_qspi_regs {
 
 #define QSPI_MCR_END_CFD_SHIFT         2
 #define QSPI_MCR_END_CFD_MASK          (3 << QSPI_MCR_END_CFD_SHIFT)
+#ifdef CONFIG_SYS_FSL_QSPI_AHB
+/* AHB needs 64bit operation */
+#define QSPI_MCR_END_CFD_LE            (3 << QSPI_MCR_END_CFD_SHIFT)
+#else
 #define QSPI_MCR_END_CFD_LE            (1 << QSPI_MCR_END_CFD_SHIFT)
+#endif
 #define QSPI_MCR_DDR_EN_SHIFT          7
 #define QSPI_MCR_DDR_EN_MASK           (1 << QSPI_MCR_DDR_EN_SHIFT)
 #define QSPI_MCR_CLR_RXF_SHIFT         10
@@ -69,6 +74,10 @@ struct fsl_qspi_regs {
 #define QSPI_MCR_MDIS_MASK             (1 << QSPI_MCR_MDIS_SHIFT)
 #define QSPI_MCR_RESERVED_SHIFT                16
 #define QSPI_MCR_RESERVED_MASK         (0xf << QSPI_MCR_RESERVED_SHIFT)
+#define QSPI_MCR_SWRSTHD_SHIFT         1
+#define QSPI_MCR_SWRSTHD_MASK          (1 << QSPI_MCR_SWRSTHD_SHIFT)
+#define QSPI_MCR_SWRSTSD_SHIFT         0
+#define QSPI_MCR_SWRSTSD_MASK          (1 << QSPI_MCR_SWRSTSD_SHIFT)
 
 #define QSPI_SMPR_HSENA_SHIFT          0
 #define QSPI_SMPR_HSENA_MASK           (1 << QSPI_SMPR_HSENA_SHIFT)
@@ -79,6 +88,12 @@ struct fsl_qspi_regs {
 #define QSPI_SMPR_DDRSMP_SHIFT         16
 #define QSPI_SMPR_DDRSMP_MASK          (7 << QSPI_SMPR_DDRSMP_SHIFT)
 
+#define QSPI_BUFXCR_INVALID_MSTRID     0xe
+#define QSPI_BUF3CR_ALLMST_SHIFT       31
+#define QSPI_BUF3CR_ALLMST_MASK                (1 << QSPI_BUF3CR_ALLMST_SHIFT)
+#define QSPI_BUF3CR_ADATSZ_SHIFT       8
+#define QSPI_BUF3CR_ADATSZ_MASK                (0xFF << QSPI_BUF3CR_ADATSZ_SHIFT)
+
 #define QSPI_BFGENCR_SEQID_SHIFT       12
 #define QSPI_BFGENCR_SEQID_MASK                (0xf << QSPI_BFGENCR_SEQID_SHIFT)
 #define QSPI_BFGENCR_PAR_EN_SHIFT      16
index aa3b5a01cdf3160f44b1e171b29fca752c2f43c6..267e4d83bd0ea0e51af933a010cb6345c67b87e8 100644 (file)
@@ -169,61 +169,49 @@ static int get_spi_gpio(int bus, struct ftssp010_gpio *chip)
 static int ftssp010_wait(struct ftssp010_spi *chip)
 {
        struct ftssp010_regs *regs = chip->regs;
-       int ret = -1;
        ulong t;
 
        /* wait until device idle */
        for (t = get_timer(0); get_timer(t) < CONFIG_FTSSP010_TIMEOUT; ) {
-               if (readl(&regs->sr) & SR_BUSY)
-                       continue;
-               ret = 0;
-               break;
+               if (!(readl(&regs->sr) & SR_BUSY))
+                       return 0;
        }
 
-       if (ret)
-               puts("ftspi010: busy timeout\n");
+       puts("ftspi010: busy timeout\n");
 
-       return ret;
+       return -1;
 }
 
 static int ftssp010_wait_tx(struct ftssp010_spi *chip)
 {
        struct ftssp010_regs *regs = chip->regs;
-       int ret = -1;
        ulong t;
 
        /* wait until tx fifo not full */
        for (t = get_timer(0); get_timer(t) < CONFIG_FTSSP010_TIMEOUT; ) {
-               if (!(readl(&regs->sr) & SR_TFNF))
-                       continue;
-               ret = 0;
-               break;
+               if (readl(&regs->sr) & SR_TFNF)
+                       return 0;
        }
 
-       if (ret)
-               puts("ftssp010: tx timeout\n");
+       puts("ftssp010: tx timeout\n");
 
-       return ret;
+       return -1;
 }
 
 static int ftssp010_wait_rx(struct ftssp010_spi *chip)
 {
        struct ftssp010_regs *regs = chip->regs;
-       int ret = -1;
        ulong t;
 
        /* wait until rx fifo not empty */
        for (t = get_timer(0); get_timer(t) < CONFIG_FTSSP010_TIMEOUT; ) {
-               if (!SR_RFVE(readl(&regs->sr)))
-                       continue;
-               ret = 0;
-               break;
+               if (SR_RFVE(readl(&regs->sr)))
+                       return 0;
        }
 
-       if (ret)
-               puts("ftssp010: rx timeout\n");
+       puts("ftssp010: rx timeout\n");
 
-       return ret;
+       return -1;
 }
 
 static int ftssp010_spi_work_transfer_v2(struct ftssp010_spi *chip,
index f5c6f3e7d29071704cd8baa541f88808d5cbfabb..0379444872e73ed413cc03ff029b08dad30d1f37 100644 (file)
@@ -141,6 +141,15 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        ich->slave.max_write_size = ctlr.databytes;
        ich->speed = max_hz;
 
+       /*
+        * ICH 7 SPI controller only supports array read command
+        * and byte program command for SST flash
+        */
+       if (ctlr.ich_version == 7) {
+               ich->slave.op_mode_rx = SPI_OPM_RX_AS;
+               ich->slave.op_mode_tx = SPI_OPM_TX_BP;
+       }
+
        return &ich->slave;
 }
 
@@ -158,7 +167,8 @@ void spi_free_slave(struct spi_slave *slave)
  */
 static int get_ich_version(uint16_t device_id)
 {
-       if (device_id == PCI_DEVICE_ID_INTEL_TGP_LPC)
+       if (device_id == PCI_DEVICE_ID_INTEL_TGP_LPC ||
+           device_id == PCI_DEVICE_ID_INTEL_ITC_LPC)
                return 7;
 
        if ((device_id >= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN &&
@@ -483,8 +493,6 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
        struct spi_trans *trans = &ich->trans;
        unsigned type = flags & (SPI_XFER_BEGIN | SPI_XFER_END);
        int using_cmd = 0;
-       /* Align read transactions to 64-byte boundaries */
-       char buff[ctlr.databytes];
 
        /* Ee don't support writing partial bytes. */
        if (bitlen % 8) {
@@ -632,14 +640,9 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
         */
        while (trans->bytesout || trans->bytesin) {
                uint32_t data_length;
-               uint32_t aligned_offset;
-               uint32_t diff;
-
-               aligned_offset = trans->offset & ~(ctlr.databytes - 1);
-               diff = trans->offset - aligned_offset;
 
                /* SPI addresses are 24 bit only */
-               ich_writel(aligned_offset & 0x00FFFFFF, ctlr.addr);
+               ich_writel(trans->offset & 0x00FFFFFF, ctlr.addr);
 
                if (trans->bytesout)
                        data_length = min(trans->bytesout, ctlr.databytes);
@@ -673,13 +676,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
                }
 
                if (trans->bytesin) {
-                       if (diff) {
-                               data_length -= diff;
-                               read_reg(ctlr.data, buff, ctlr.databytes);
-                               memcpy(trans->in, buff + diff, data_length);
-                       } else {
-                               read_reg(ctlr.data, trans->in, data_length);
-                       }
+                       read_reg(ctlr.data, trans->in, data_length);
                        spi_use_in(trans, data_length);
                        if (with_address)
                                trans->offset += data_length;
index be102692d446450528886c998440ecefc8a32fbf..08815994fe5d21d0effd00394cea05ce6698508c 100644 (file)
@@ -49,6 +49,8 @@ struct mxc_spi_slave {
 #endif
        int             gpio;
        int             ss_pol;
+       unsigned int    max_hz;
+       unsigned int    mode;
 };
 
 static inline struct mxc_spi_slave *to_mxc_spi_slave(struct spi_slave *slave)
@@ -83,12 +85,13 @@ u32 get_cspi_div(u32 div)
 }
 
 #ifdef MXC_CSPI
-static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
-               unsigned int max_hz, unsigned int mode)
+static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs)
 {
        unsigned int ctrl_reg;
        u32 clk_src;
        u32 div;
+       unsigned int max_hz = mxcs->max_hz;
+       unsigned int mode = mxcs->mode;
 
        clk_src = mxc_get_clock(MXC_CSPI_CLK);
 
@@ -120,19 +123,15 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
 #endif
 
 #ifdef MXC_ECSPI
-static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
-               unsigned int max_hz, unsigned int mode)
+static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs)
 {
        u32 clk_src = mxc_get_clock(MXC_CSPI_CLK);
        s32 reg_ctrl, reg_config;
        u32 ss_pol = 0, sclkpol = 0, sclkpha = 0, sclkctl = 0;
        u32 pre_div = 0, post_div = 0;
        struct cspi_regs *regs = (struct cspi_regs *)mxcs->base;
-
-       if (max_hz == 0) {
-               printf("Error: desired clock is 0\n");
-               return -1;
-       }
+       unsigned int max_hz = mxcs->max_hz;
+       unsigned int mode = mxcs->mode;
 
        /*
         * Reset SPI and set all CSs to master mode, if toggling
@@ -169,9 +168,6 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
        reg_ctrl = (reg_ctrl & ~MXC_CSPICTRL_POSTDIV(0x0F)) |
                MXC_CSPICTRL_POSTDIV(post_div);
 
-       /* We need to disable SPI before changing registers */
-       reg_ctrl &= ~MXC_CSPICTRL_EN;
-
        if (mode & SPI_CS_HIGH)
                ss_pol = 1;
 
@@ -319,7 +315,7 @@ int spi_xchg_single(struct spi_slave *slave, unsigned int bitlen,
                tmp = reg_read(&regs->rxdata);
                data = cpu_to_be32(tmp);
                debug("SPI Rx: 0x%x 0x%x\n", tmp, data);
-               cnt = min(nbytes, sizeof(data));
+               cnt = min_t(u32, nbytes, sizeof(data));
                if (din) {
                        memcpy(din, &data, cnt);
                        din += cnt;
@@ -412,6 +408,11 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        if (bus >= ARRAY_SIZE(spi_bases))
                return NULL;
 
+       if (max_hz == 0) {
+               printf("Error: desired clock is 0\n");
+               return NULL;
+       }
+
        mxcs = spi_alloc_slave(struct mxc_spi_slave, bus, cs);
        if (!mxcs) {
                puts("mxc_spi: SPI Slave not allocated !\n");
@@ -427,13 +428,9 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        }
 
        mxcs->base = spi_bases[bus];
+       mxcs->max_hz = max_hz;
+       mxcs->mode = mode;
 
-       ret = spi_cfg_mxc(mxcs, cs, max_hz, mode);
-       if (ret) {
-               printf("mxc_spi: cannot setup SPI controller\n");
-               free(mxcs);
-               return NULL;
-       }
        return &mxcs->slave;
 }
 
@@ -446,12 +443,17 @@ void spi_free_slave(struct spi_slave *slave)
 
 int spi_claim_bus(struct spi_slave *slave)
 {
+       int ret;
        struct mxc_spi_slave *mxcs = to_mxc_spi_slave(slave);
        struct cspi_regs *regs = (struct cspi_regs *)mxcs->base;
 
        reg_write(&regs->rxdata, 1);
        udelay(1);
-       reg_write(&regs->ctrl, mxcs->ctrl_reg);
+       ret = spi_cfg_mxc(mxcs, slave->cs);
+       if (ret) {
+               printf("mxc_spi: cannot setup SPI controller\n");
+               return ret;
+       }
        reg_write(&regs->period, MXC_CSPIPERIOD_32KHZ);
        reg_write(&regs->intr, 0);
 
index 13c6b77d73df350f943b1dd3c77ce8c7e0fef0c3..7a57bceb260f1c3e79fc9ed4d735f1b27c45160b 100644 (file)
@@ -57,7 +57,7 @@ int spi_claim_bus(struct spi_slave *slave)
        speed = slave->max_hz;
        if (spi->max_hz) {
                if (speed)
-                       speed = min(speed, spi->max_hz);
+                       speed = min(speed, (int)spi->max_hz);
                else
                        speed = spi->max_hz;
        }
@@ -115,16 +115,7 @@ int spi_chip_select(struct udevice *dev)
        return slave ? slave->cs : -ENOENT;
 }
 
-/**
- * spi_find_chip_select() - Find the slave attached to chip select
- *
- * @bus:       SPI bus to search
- * @cs:                Chip select to look for
- * @devp:      Returns the slave device if found
- * @return 0 if found, -ENODEV on error
- */
-static int spi_find_chip_select(struct udevice *bus, int cs,
-                               struct udevice **devp)
+int spi_find_chip_select(struct udevice *bus, int cs, struct udevice **devp)
 {
        struct udevice *dev;
 
@@ -197,27 +188,6 @@ int spi_cs_info(struct udevice *bus, uint cs, struct spi_cs_info *info)
        return -ENODEV;
 }
 
-int spi_bind_device(struct udevice *bus, int cs, const char *drv_name,
-                   const char *dev_name, struct udevice **devp)
-{
-       struct driver *drv;
-       int ret;
-
-       drv = lists_driver_lookup_name(drv_name);
-       if (!drv) {
-               printf("Cannot find driver '%s'\n", drv_name);
-               return -ENOENT;
-       }
-       ret = device_bind(bus, drv, dev_name, NULL, -1, devp);
-       if (ret) {
-               printf("Cannot create device named '%s' (err=%d)\n",
-                      dev_name, ret);
-               return ret;
-       }
-
-       return 0;
-}
-
 int spi_find_bus_and_cs(int busnum, int cs, struct udevice **busp,
                        struct udevice **devp)
 {
@@ -264,7 +234,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
        if (ret == -ENODEV && drv_name) {
                debug("%s: Binding new device '%s', busnum=%d, cs=%d, driver=%s\n",
                      __func__, dev_name, busnum, cs, drv_name);
-               ret = spi_bind_device(bus, cs, drv_name, dev_name, &dev);
+               ret = device_bind_driver(bus, drv_name, dev_name, &dev);
                if (ret)
                        return ret;
                created = true;
index fd7fea8df5b12623c5cba84296e1c3a302619072..857b60455a94d3b3e0c66f7c3093329ee6d166b3 100644 (file)
@@ -102,7 +102,7 @@ static void ti_spi_setup_spi_register(struct ti_qspi_slave *qslave)
        struct spi_slave *slave = &qslave->slave;
        u32 memval = 0;
 
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
        slave->memory_map = (void *)MMAP_START_ADDR_DRA;
 #else
        slave->memory_map = (void *)MMAP_START_ADDR_AM43x;
@@ -244,7 +244,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
        uint status;
        int timeout;
 
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
        int val;
 #endif
 
@@ -254,7 +254,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
        /* Setup mmap flags */
        if (flags & SPI_XFER_MMAP) {
                writel(MM_SWITCH, &qslave->base->memswitch);
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
                val = readl(CORE_CTRL_IO);
                val |= MEM_CS;
                writel(val, CORE_CTRL_IO);
@@ -262,7 +262,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
                return 0;
        } else if (flags & SPI_XFER_MMAP_END) {
                writel(~MM_SWITCH, &qslave->base->memswitch);
-#ifdef CONFIG_DRA7XX
+#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
                val = readl(CORE_CTRL_IO);
                val &= MEM_CS_UNSELECT;
                writel(val, CORE_CTRL_IO);
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
new file mode 100644 (file)
index 0000000..6d4cacd
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# (C) Copyright 2014 Freescale Semiconductor, Inc.
+# Author: Nitin Garg <nitin.garg@freescale.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-$(CONFIG_DM_THERMAL) += thermal-uclass.o
+obj-$(CONFIG_IMX6_THERMAL) += imx_thermal.o
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
new file mode 100644 (file)
index 0000000..0bd9cfd
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * (C) Copyright 2014 Freescale Semiconductor, Inc.
+ * Author: Nitin Garg <nitin.garg@freescale.com>
+ *             Ye Li <Ye.Li@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <common.h>
+#include <div64.h>
+#include <fuse.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <dm.h>
+#include <errno.h>
+#include <malloc.h>
+#include <thermal.h>
+#include <imx_thermal.h>
+
+#define TEMPERATURE_MIN                -40
+#define TEMPERATURE_HOT                80
+#define TEMPERATURE_MAX                125
+#define FACTOR0                        10000000
+#define FACTOR1                        15976
+#define FACTOR2                        4297157
+#define MEASURE_FREQ           327
+
+#define TEMPSENSE0_TEMP_CNT_SHIFT      8
+#define TEMPSENSE0_TEMP_CNT_MASK       (0xfff << TEMPSENSE0_TEMP_CNT_SHIFT)
+#define TEMPSENSE0_FINISHED            (1 << 2)
+#define TEMPSENSE0_MEASURE_TEMP                (1 << 1)
+#define TEMPSENSE0_POWER_DOWN          (1 << 0)
+#define MISC0_REFTOP_SELBIASOFF                (1 << 3)
+#define TEMPSENSE1_MEASURE_FREQ                0xffff
+
+static int read_cpu_temperature(struct udevice *dev)
+{
+       int temperature;
+       unsigned int reg, n_meas;
+       const struct imx_thermal_plat *pdata = dev_get_platdata(dev);
+       struct anatop_regs *anatop = (struct anatop_regs *)pdata->regs;
+       unsigned int *priv = dev_get_priv(dev);
+       u32 fuse = *priv;
+       int t1, n1;
+       u32 c1, c2;
+       u64 temp64;
+
+       /*
+        * Sensor data layout:
+        *   [31:20] - sensor value @ 25C
+        * We use universal formula now and only need sensor value @ 25C
+        * slope = 0.4297157 - (0.0015976 * 25C fuse)
+        */
+       n1 = fuse >> 20;
+       t1 = 25; /* t1 always 25C */
+
+       /*
+        * Derived from linear interpolation:
+        * slope = 0.4297157 - (0.0015976 * 25C fuse)
+        * slope = (FACTOR2 - FACTOR1 * n1) / FACTOR0
+        * (Nmeas - n1) / (Tmeas - t1) = slope
+        * We want to reduce this down to the minimum computation necessary
+        * for each temperature read.  Also, we want Tmeas in millicelsius
+        * and we don't want to lose precision from integer division. So...
+        * Tmeas = (Nmeas - n1) / slope + t1
+        * milli_Tmeas = 1000 * (Nmeas - n1) / slope + 1000 * t1
+        * milli_Tmeas = -1000 * (n1 - Nmeas) / slope + 1000 * t1
+        * Let constant c1 = (-1000 / slope)
+        * milli_Tmeas = (n1 - Nmeas) * c1 + 1000 * t1
+        * Let constant c2 = n1 *c1 + 1000 * t1
+        * milli_Tmeas = c2 - Nmeas * c1
+        */
+       temp64 = FACTOR0;
+       temp64 *= 1000;
+       do_div(temp64, FACTOR1 * n1 - FACTOR2);
+       c1 = temp64;
+       c2 = n1 * c1 + 1000 * t1;
+
+       /*
+        * now we only use single measure, every time we read
+        * the temperature, we will power on/down anadig thermal
+        * module
+        */
+       writel(TEMPSENSE0_POWER_DOWN, &anatop->tempsense0_clr);
+       writel(MISC0_REFTOP_SELBIASOFF, &anatop->ana_misc0_set);
+
+       /* setup measure freq */
+       reg = readl(&anatop->tempsense1);
+       reg &= ~TEMPSENSE1_MEASURE_FREQ;
+       reg |= MEASURE_FREQ;
+       writel(reg, &anatop->tempsense1);
+
+       /* start the measurement process */
+       writel(TEMPSENSE0_MEASURE_TEMP, &anatop->tempsense0_clr);
+       writel(TEMPSENSE0_FINISHED, &anatop->tempsense0_clr);
+       writel(TEMPSENSE0_MEASURE_TEMP, &anatop->tempsense0_set);
+
+       /* make sure that the latest temp is valid */
+       while ((readl(&anatop->tempsense0) &
+               TEMPSENSE0_FINISHED) == 0)
+               udelay(10000);
+
+       /* read temperature count */
+       reg = readl(&anatop->tempsense0);
+       n_meas = (reg & TEMPSENSE0_TEMP_CNT_MASK)
+               >> TEMPSENSE0_TEMP_CNT_SHIFT;
+       writel(TEMPSENSE0_FINISHED, &anatop->tempsense0_clr);
+
+       /* milli_Tmeas = c2 - Nmeas * c1 */
+       temperature = (c2 - n_meas * c1)/1000;
+
+       /* power down anatop thermal sensor */
+       writel(TEMPSENSE0_POWER_DOWN, &anatop->tempsense0_set);
+       writel(MISC0_REFTOP_SELBIASOFF, &anatop->ana_misc0_clr);
+
+       return temperature;
+}
+
+int imx_thermal_get_temp(struct udevice *dev, int *temp)
+{
+       int cpu_tmp = 0;
+
+       cpu_tmp = read_cpu_temperature(dev);
+       while (cpu_tmp > TEMPERATURE_MIN && cpu_tmp < TEMPERATURE_MAX) {
+               if (cpu_tmp >= TEMPERATURE_HOT) {
+                       printf("CPU Temperature is %d C, too hot to boot, waiting...\n",
+                              cpu_tmp);
+                       udelay(5000000);
+                       cpu_tmp = read_cpu_temperature(dev);
+               } else {
+                       break;
+               }
+       }
+
+       *temp = cpu_tmp;
+
+       return 0;
+}
+
+static const struct dm_thermal_ops imx_thermal_ops = {
+       .get_temp       = imx_thermal_get_temp,
+};
+
+static int imx_thermal_probe(struct udevice *dev)
+{
+       unsigned int fuse = ~0;
+
+       const struct imx_thermal_plat *pdata = dev_get_platdata(dev);
+       unsigned int *priv = dev_get_priv(dev);
+
+       /* Read Temperature calibration data fuse */
+       fuse_read(pdata->fuse_bank, pdata->fuse_word, &fuse);
+
+       /* Check for valid fuse */
+       if (fuse == 0 || fuse == ~0) {
+               printf("CPU:   Thermal invalid data, fuse: 0x%x\n", fuse);
+               return -EPERM;
+       }
+
+       *priv = fuse;
+
+       enable_thermal_clk();
+
+       return 0;
+}
+
+U_BOOT_DRIVER(imx_thermal) = {
+       .name   = "imx_thermal",
+       .id     = UCLASS_THERMAL,
+       .ops    = &imx_thermal_ops,
+       .probe  = imx_thermal_probe,
+       .priv_auto_alloc_size = sizeof(unsigned int),
+       .flags  = DM_FLAG_PRE_RELOC,
+};
diff --git a/drivers/thermal/thermal-uclass.c b/drivers/thermal/thermal-uclass.c
new file mode 100644 (file)
index 0000000..3bee1a7
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * (C) Copyright 2014 Freescale Semiconductor, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <thermal.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <malloc.h>
+#include <asm/io.h>
+#include <linux/list.h>
+
+
+int thermal_get_temp(struct udevice *dev, int *temp)
+{
+       const struct dm_thermal_ops *ops = device_get_ops(dev);
+
+       if (!ops->get_temp)
+               return -ENOSYS;
+
+       return ops->get_temp(dev, temp);
+}
+
+UCLASS_DRIVER(thermal) = {
+       .id             = UCLASS_THERMAL,
+       .name           = "thermal",
+};
index bc0f9645b591e9460a74ccdfee947b49338684ba..31761ec33814878f85d817ea4611e3efd2d28089 100644 (file)
@@ -34,7 +34,7 @@
 
 #include <config.h>
 #include <common.h>
-#include <compiler.h>
+#include <linux/compiler.h>
 #include <fdtdec.h>
 #include <i2c.h>
 #include <tpm.h>
index 2dd8501f92d127125dec36d09f9af25a2ecac87b..c1bbed4eb5833054c53db2a9b927e9e3144cd6f8 100644 (file)
@@ -38,7 +38,7 @@
 
 #include <common.h>
 #include <fdtdec.h>
-#include <compiler.h>
+#include <linux/compiler.h>
 #include <i2c.h>
 #include <tpm.h>
 #include <asm-generic/errno.h>
index eecf18cbf920ebe7721bea11178b5dbf5068b095..d09f8cee05b0940ea32c7707e5aeb4a1e6d2e90e 100644 (file)
@@ -274,7 +274,7 @@ static u32 tis_senddata(const u8 * const data, u32 len)
                 * changes to zero exactly after the last byte is fed into the
                 * FIFO.
                 */
-               count = min(burst, len - offset - 1);
+               count = min((u32)burst, len - offset - 1);
                while (count--)
                        tpm_write_byte(data[offset++],
                                  &lpc_tpm_dev[locality].data);
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b4a94427034c2cdb03aadeb6aa8dcac1894528f8 100644 (file)
@@ -0,0 +1,46 @@
+config USB_ARCH_HAS_HCD
+       def_bool y
+
+config USB
+       bool "Support for Host-side USB"
+       depends on USB_ARCH_HAS_HCD
+       ---help---
+         Universal Serial Bus (USB) is a specification for a serial bus
+         subsystem which offers higher speeds and more features than the
+         traditional PC serial port.  The bus supplies power to peripherals
+         and allows for hot swapping.  Up to 127 USB peripherals can be
+         connected to a single USB host in a tree structure.
+
+         The USB host is the root of the tree, the peripherals are the
+         leaves and the inner nodes are special USB devices called hubs.
+         Most PCs now have USB host ports, used to connect peripherals
+         such as scanners, keyboards, mice, modems, cameras, disks,
+         flash memory, network links, and printers to the PC.
+
+         Say Y here if your computer has a host-side USB port and you want
+         to use USB devices.  You then need to say Y to at least one of the
+         Host Controller Driver (HCD) options below.  Choose a USB 1.1
+         controller, such as "UHCI HCD support" or "OHCI HCD support",
+         and "EHCI HCD (USB 2.0) support" except for older systems that
+         do not have USB 2.0 support.  It doesn't normally hurt to select
+         them all if you are not certain.
+
+         If your system has a device-side USB port, used in the peripheral
+         side of the USB protocol, see the "USB Gadget" framework instead.
+
+         After choosing your HCD, then select drivers for the USB peripherals
+         you'll be using.  You may want to check out the information provided
+         in <file:Documentation/usb/> and especially the links given in
+         <file:Documentation/usb/usb-help.txt>.
+
+if USB
+
+source "drivers/usb/host/Kconfig"
+
+config USB_STORAGE
+       bool "USB Mass Storage support"
+       ---help---
+         Say Y here if you want to connect USB mass storage devices to your
+         board's USB port.
+
+endif
index 94551c4c0c9a4cbdaaf498708276c673f847bdcb..c92d2b02d261e4254772e7e547c2874a83150815 100644 (file)
@@ -5,8 +5,7 @@
 
 # new USB host ethernet layer dependencies
 obj-$(CONFIG_USB_HOST_ETHER) += usb_ether.o
-ifdef CONFIG_USB_ETHER_ASIX
-obj-y += asix.o
-endif
+obj-$(CONFIG_USB_ETHER_ASIX) += asix.o
+obj-$(CONFIG_USB_ETHER_ASIX88179) += asix88179.o
 obj-$(CONFIG_USB_ETHER_MCS7830) += mcs7830.o
 obj-$(CONFIG_USB_ETHER_SMSC95XX) += smsc95xx.o
diff --git a/drivers/usb/eth/asix88179.c b/drivers/usb/eth/asix88179.c
new file mode 100644 (file)
index 0000000..b8ca720
--- /dev/null
@@ -0,0 +1,700 @@
+/*
+ * Copyright (c) 2014 Rene Griessl <rgriessl@cit-ec.uni-bielefeld.de>
+ * based on the U-Boot Asix driver as well as information
+ * from the Linux AX88179_178a driver
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <usb.h>
+#include <net.h>
+#include <linux/mii.h>
+#include "usb_ether.h"
+#include <malloc.h>
+#include <errno.h>
+
+/* ASIX AX88179 based USB 3.0 Ethernet Devices */
+#define AX88179_PHY_ID                         0x03
+#define AX_EEPROM_LEN                          0x100
+#define AX88179_EEPROM_MAGIC                   0x17900b95
+#define AX_MCAST_FLTSIZE                       8
+#define AX_MAX_MCAST                           64
+#define AX_INT_PPLS_LINK                       (1 << 16)
+#define AX_RXHDR_L4_TYPE_MASK                  0x1c
+#define AX_RXHDR_L4_TYPE_UDP                   4
+#define AX_RXHDR_L4_TYPE_TCP                   16
+#define AX_RXHDR_L3CSUM_ERR                    2
+#define AX_RXHDR_L4CSUM_ERR                    1
+#define AX_RXHDR_CRC_ERR                       (1 << 29)
+#define AX_RXHDR_DROP_ERR                      (1 << 31)
+#define AX_ENDPOINT_INT                                0x01
+#define AX_ENDPOINT_IN                         0x02
+#define AX_ENDPOINT_OUT                                0x03
+#define AX_ACCESS_MAC                          0x01
+#define AX_ACCESS_PHY                          0x02
+#define AX_ACCESS_EEPROM                       0x04
+#define AX_ACCESS_EFUS                         0x05
+#define AX_PAUSE_WATERLVL_HIGH                 0x54
+#define AX_PAUSE_WATERLVL_LOW                  0x55
+
+#define PHYSICAL_LINK_STATUS                   0x02
+       #define AX_USB_SS               (1 << 2)
+       #define AX_USB_HS               (1 << 1)
+
+#define GENERAL_STATUS                         0x03
+       #define AX_SECLD                (1 << 2)
+
+#define AX_SROM_ADDR                           0x07
+#define AX_SROM_CMD                            0x0a
+       #define EEP_RD                  (1 << 2)
+       #define EEP_BUSY                (1 << 4)
+
+#define AX_SROM_DATA_LOW                       0x08
+#define AX_SROM_DATA_HIGH                      0x09
+
+#define AX_RX_CTL                              0x0b
+       #define AX_RX_CTL_DROPCRCERR    (1 << 8)
+       #define AX_RX_CTL_IPE           (1 << 9)
+       #define AX_RX_CTL_START         (1 << 7)
+       #define AX_RX_CTL_AP            (1 << 5)
+       #define AX_RX_CTL_AM            (1 << 4)
+       #define AX_RX_CTL_AB            (1 << 3)
+       #define AX_RX_CTL_AMALL         (1 << 1)
+       #define AX_RX_CTL_PRO           (1 << 0)
+       #define AX_RX_CTL_STOP          0
+
+#define AX_NODE_ID                             0x10
+#define AX_MULFLTARY                           0x16
+
+#define AX_MEDIUM_STATUS_MODE                  0x22
+       #define AX_MEDIUM_GIGAMODE      (1 << 0)
+       #define AX_MEDIUM_FULL_DUPLEX   (1 << 1)
+       #define AX_MEDIUM_EN_125MHZ     (1 << 3)
+       #define AX_MEDIUM_RXFLOW_CTRLEN (1 << 4)
+       #define AX_MEDIUM_TXFLOW_CTRLEN (1 << 5)
+       #define AX_MEDIUM_RECEIVE_EN    (1 << 8)
+       #define AX_MEDIUM_PS            (1 << 9)
+       #define AX_MEDIUM_JUMBO_EN      0x8040
+
+#define AX_MONITOR_MOD                         0x24
+       #define AX_MONITOR_MODE_RWLC    (1 << 1)
+       #define AX_MONITOR_MODE_RWMP    (1 << 2)
+       #define AX_MONITOR_MODE_PMEPOL  (1 << 5)
+       #define AX_MONITOR_MODE_PMETYPE (1 << 6)
+
+#define AX_GPIO_CTRL                           0x25
+       #define AX_GPIO_CTRL_GPIO3EN    (1 << 7)
+       #define AX_GPIO_CTRL_GPIO2EN    (1 << 6)
+       #define AX_GPIO_CTRL_GPIO1EN    (1 << 5)
+
+#define AX_PHYPWR_RSTCTL                       0x26
+       #define AX_PHYPWR_RSTCTL_BZ     (1 << 4)
+       #define AX_PHYPWR_RSTCTL_IPRL   (1 << 5)
+       #define AX_PHYPWR_RSTCTL_AT     (1 << 12)
+
+#define AX_RX_BULKIN_QCTRL                     0x2e
+#define AX_CLK_SELECT                          0x33
+       #define AX_CLK_SELECT_BCS       (1 << 0)
+       #define AX_CLK_SELECT_ACS       (1 << 1)
+       #define AX_CLK_SELECT_ULR       (1 << 3)
+
+#define AX_RXCOE_CTL                           0x34
+       #define AX_RXCOE_IP             (1 << 0)
+       #define AX_RXCOE_TCP            (1 << 1)
+       #define AX_RXCOE_UDP            (1 << 2)
+       #define AX_RXCOE_TCPV6          (1 << 5)
+       #define AX_RXCOE_UDPV6          (1 << 6)
+
+#define AX_TXCOE_CTL                           0x35
+       #define AX_TXCOE_IP             (1 << 0)
+       #define AX_TXCOE_TCP            (1 << 1)
+       #define AX_TXCOE_UDP            (1 << 2)
+       #define AX_TXCOE_TCPV6          (1 << 5)
+       #define AX_TXCOE_UDPV6          (1 << 6)
+
+#define AX_LEDCTRL                             0x73
+
+#define GMII_PHY_PHYSR                         0x11
+       #define GMII_PHY_PHYSR_SMASK    0xc000
+       #define GMII_PHY_PHYSR_GIGA     (1 << 15)
+       #define GMII_PHY_PHYSR_100      (1 << 14)
+       #define GMII_PHY_PHYSR_FULL     (1 << 13)
+       #define GMII_PHY_PHYSR_LINK     (1 << 10)
+
+#define GMII_LED_ACT                           0x1a
+       #define GMII_LED_ACTIVE_MASK    0xff8f
+       #define GMII_LED0_ACTIVE        (1 << 4)
+       #define GMII_LED1_ACTIVE        (1 << 5)
+       #define GMII_LED2_ACTIVE        (1 << 6)
+
+#define GMII_LED_LINK                          0x1c
+       #define GMII_LED_LINK_MASK      0xf888
+       #define GMII_LED0_LINK_10       (1 << 0)
+       #define GMII_LED0_LINK_100      (1 << 1)
+       #define GMII_LED0_LINK_1000     (1 << 2)
+       #define GMII_LED1_LINK_10       (1 << 4)
+       #define GMII_LED1_LINK_100      (1 << 5)
+       #define GMII_LED1_LINK_1000     (1 << 6)
+       #define GMII_LED2_LINK_10       (1 << 8)
+       #define GMII_LED2_LINK_100      (1 << 9)
+       #define GMII_LED2_LINK_1000     (1 << 10)
+       #define LED0_ACTIVE             (1 << 0)
+       #define LED0_LINK_10            (1 << 1)
+       #define LED0_LINK_100           (1 << 2)
+       #define LED0_LINK_1000          (1 << 3)
+       #define LED0_FD                 (1 << 4)
+       #define LED0_USB3_MASK          0x001f
+       #define LED1_ACTIVE             (1 << 5)
+       #define LED1_LINK_10            (1 << 6)
+       #define LED1_LINK_100           (1 << 7)
+       #define LED1_LINK_1000          (1 << 8)
+       #define LED1_FD                 (1 << 9)
+       #define LED1_USB3_MASK          0x03e0
+       #define LED2_ACTIVE             (1 << 10)
+       #define LED2_LINK_1000          (1 << 13)
+       #define LED2_LINK_100           (1 << 12)
+       #define LED2_LINK_10            (1 << 11)
+       #define LED2_FD                 (1 << 14)
+       #define LED_VALID               (1 << 15)
+       #define LED2_USB3_MASK          0x7c00
+
+#define GMII_PHYPAGE                           0x1e
+#define GMII_PHY_PAGE_SELECT                   0x1f
+       #define GMII_PHY_PGSEL_EXT      0x0007
+       #define GMII_PHY_PGSEL_PAGE0    0x0000
+
+/* local defines */
+#define ASIX_BASE_NAME "axg"
+#define USB_CTRL_SET_TIMEOUT 5000
+#define USB_CTRL_GET_TIMEOUT 5000
+#define USB_BULK_SEND_TIMEOUT 5000
+#define USB_BULK_RECV_TIMEOUT 5000
+
+#define AX_RX_URB_SIZE 1024 * 0x12
+#define BLK_FRAME_SIZE 0x200
+#define PHY_CONNECT_TIMEOUT 5000
+
+#define TIMEOUT_RESOLUTION 50  /* ms */
+
+#define FLAG_NONE                      0
+#define FLAG_TYPE_AX88179      (1U << 0)
+#define FLAG_TYPE_AX88178a     (1U << 1)
+#define FLAG_TYPE_DLINK_DUB1312        (1U << 2)
+#define FLAG_TYPE_SITECOM      (1U << 3)
+#define FLAG_TYPE_SAMSUNG      (1U << 4)
+#define FLAG_TYPE_LENOVO       (1U << 5)
+
+/* local vars */
+static const struct {
+       unsigned char ctrl, timer_l, timer_h, size, ifg;
+} AX88179_BULKIN_SIZE[] =      {
+       {7, 0x4f, 0,    0x02, 0xff},
+       {7, 0x20, 3,    0x03, 0xff},
+       {7, 0xae, 7,    0x04, 0xff},
+       {7, 0xcc, 0x4c, 0x04, 8},
+};
+
+static int curr_eth_dev; /* index for name of next device detected */
+
+/* driver private */
+struct asix_private {
+       int flags;
+       int rx_urb_size;
+       int maxpacketsize;
+};
+
+/*
+ * Asix infrastructure commands
+ */
+static int asix_write_cmd(struct ueth_data *dev, u8 cmd, u16 value, u16 index,
+                            u16 size, void *data)
+{
+       int len;
+       ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buf, size);
+
+       debug("asix_write_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
+             cmd, value, index, size);
+
+       memcpy(buf, data, size);
+
+       len = usb_control_msg(
+               dev->pusb_dev,
+               usb_sndctrlpipe(dev->pusb_dev, 0),
+               cmd,
+               USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
+               value,
+               index,
+               buf,
+               size,
+               USB_CTRL_SET_TIMEOUT);
+
+       return len == size ? 0 : ECOMM;
+}
+
+static int asix_read_cmd(struct ueth_data *dev, u8 cmd, u16 value, u16 index,
+                           u16 size, void *data)
+{
+       int len;
+       ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buf, size);
+
+       debug("asix_read_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
+             cmd, value, index, size);
+
+       len = usb_control_msg(
+               dev->pusb_dev,
+               usb_rcvctrlpipe(dev->pusb_dev, 0),
+               cmd,
+               USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
+               value,
+               index,
+               buf,
+               size,
+               USB_CTRL_GET_TIMEOUT);
+
+       memcpy(data, buf, size);
+
+       return len == size ? 0 : ECOMM;
+}
+
+static int asix_read_mac(struct eth_device *eth)
+{
+       struct ueth_data *dev = (struct ueth_data *)eth->priv;
+       u8 buf[ETH_ALEN];
+
+       asix_read_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, 6, 6, buf);
+       debug("asix_read_mac() returning %02x:%02x:%02x:%02x:%02x:%02x\n",
+             buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
+
+       memcpy(eth->enetaddr, buf, ETH_ALEN);
+
+       return 0;
+}
+
+static int asix_basic_reset(struct ueth_data *dev)
+{
+       struct asix_private *dev_priv = (struct asix_private *)dev->dev_priv;
+       u8 buf[5];
+       u16 *tmp16;
+       u8 *tmp;
+
+       tmp16 = (u16 *)buf;
+       tmp = (u8 *)buf;
+
+       /* Power up ethernet PHY */
+       *tmp16 = 0;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16);
+
+       *tmp16 = AX_PHYPWR_RSTCTL_IPRL;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16);
+       mdelay(200);
+
+       *tmp = AX_CLK_SELECT_ACS | AX_CLK_SELECT_BCS;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, tmp);
+       mdelay(200);
+
+       /* RX bulk configuration */
+       memcpy(tmp, &AX88179_BULKIN_SIZE[0], 5);
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_RX_BULKIN_QCTRL, 5, 5, tmp);
+
+       dev_priv->rx_urb_size = 128 * 20;
+
+       /* Water Level configuration */
+       *tmp = 0x34;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_PAUSE_WATERLVL_LOW, 1, 1, tmp);
+
+       *tmp = 0x52;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_PAUSE_WATERLVL_HIGH, 1, 1, tmp);
+
+       /* Enable checksum offload */
+       *tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP |
+              AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_RXCOE_CTL, 1, 1, tmp);
+
+       *tmp = AX_TXCOE_IP | AX_TXCOE_TCP | AX_TXCOE_UDP |
+              AX_TXCOE_TCPV6 | AX_TXCOE_UDPV6;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_TXCOE_CTL, 1, 1, tmp);
+
+       /* Configure RX control register => start operation */
+       *tmp16 = AX_RX_CTL_DROPCRCERR | AX_RX_CTL_IPE | AX_RX_CTL_START |
+                AX_RX_CTL_AP | AX_RX_CTL_AMALL | AX_RX_CTL_AB;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, tmp16);
+
+       *tmp = AX_MONITOR_MODE_PMETYPE | AX_MONITOR_MODE_PMEPOL |
+              AX_MONITOR_MODE_RWMP;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_MONITOR_MOD, 1, 1, tmp);
+
+       /* Configure default medium type => giga */
+       *tmp16 = AX_MEDIUM_RECEIVE_EN | AX_MEDIUM_TXFLOW_CTRLEN |
+                AX_MEDIUM_RXFLOW_CTRLEN | AX_MEDIUM_FULL_DUPLEX |
+                AX_MEDIUM_GIGAMODE | AX_MEDIUM_JUMBO_EN;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE, 2, 2, tmp16);
+
+       u16 adv = 0;
+       adv = ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_LPACK |
+             ADVERTISE_NPAGE | ADVERTISE_PAUSE_ASYM | ADVERTISE_PAUSE_CAP;
+       asix_write_cmd(dev, AX_ACCESS_PHY, 0x03, MII_ADVERTISE, 2, &adv);
+
+       adv = ADVERTISE_1000FULL;
+       asix_write_cmd(dev, AX_ACCESS_PHY, 0x03, MII_CTRL1000, 2, &adv);
+
+       return 0;
+}
+
+static int asix_wait_link(struct ueth_data *dev)
+{
+       int timeout = 0;
+       int link_detected;
+       u8 buf[2];
+       u16 *tmp16;
+
+       tmp16 = (u16 *)buf;
+
+       do {
+               asix_read_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
+                             MII_BMSR, 2, buf);
+               link_detected = *tmp16 & BMSR_LSTATUS;
+               if (!link_detected) {
+                       if (timeout == 0)
+                               printf("Waiting for Ethernet connection... ");
+                       mdelay(TIMEOUT_RESOLUTION);
+                       timeout += TIMEOUT_RESOLUTION;
+               }
+       } while (!link_detected && timeout < PHY_CONNECT_TIMEOUT);
+
+       if (link_detected) {
+               if (timeout > 0)
+                       printf("done.\n");
+               return 0;
+       } else {
+               printf("unable to connect.\n");
+               return -ENETUNREACH;
+       }
+}
+
+/*
+ * Asix callbacks
+ */
+static int asix_init(struct eth_device *eth, bd_t *bd)
+{
+       struct ueth_data *dev = (struct ueth_data *)eth->priv;
+       struct asix_private *dev_priv = (struct asix_private *)dev->dev_priv;
+       u8 buf[2], tmp[5], link_sts;
+       u16 *tmp16, mode;
+
+
+       tmp16 = (u16 *)buf;
+
+       debug("** %s()\n", __func__);
+
+       /* Configure RX control register => start operation */
+       *tmp16 = AX_RX_CTL_DROPCRCERR | AX_RX_CTL_IPE | AX_RX_CTL_START |
+                AX_RX_CTL_AP | AX_RX_CTL_AMALL | AX_RX_CTL_AB;
+       if (asix_write_cmd(dev, AX_ACCESS_MAC, AX_RX_CTL, 2, 2, tmp16) != 0)
+               goto out_err;
+
+       if (asix_wait_link(dev) != 0) {
+               /*reset device and try again*/
+               printf("Reset Ethernet Device\n");
+               asix_basic_reset(dev);
+               if (asix_wait_link(dev) != 0)
+                       goto out_err;
+       }
+
+       /* Configure link */
+       mode = AX_MEDIUM_RECEIVE_EN | AX_MEDIUM_TXFLOW_CTRLEN |
+              AX_MEDIUM_RXFLOW_CTRLEN;
+
+       asix_read_cmd(dev, AX_ACCESS_MAC, PHYSICAL_LINK_STATUS,
+                     1, 1, &link_sts);
+
+       asix_read_cmd(dev, AX_ACCESS_PHY, AX88179_PHY_ID,
+                     GMII_PHY_PHYSR, 2, tmp16);
+
+       if (!(*tmp16 & GMII_PHY_PHYSR_LINK)) {
+               return 0;
+       } else if (GMII_PHY_PHYSR_GIGA == (*tmp16 & GMII_PHY_PHYSR_SMASK)) {
+               mode |= AX_MEDIUM_GIGAMODE | AX_MEDIUM_EN_125MHZ |
+                       AX_MEDIUM_JUMBO_EN;
+
+               if (link_sts & AX_USB_SS)
+                       memcpy(tmp, &AX88179_BULKIN_SIZE[0], 5);
+               else if (link_sts & AX_USB_HS)
+                       memcpy(tmp, &AX88179_BULKIN_SIZE[1], 5);
+               else
+                       memcpy(tmp, &AX88179_BULKIN_SIZE[3], 5);
+       } else if (GMII_PHY_PHYSR_100 == (*tmp16 & GMII_PHY_PHYSR_SMASK)) {
+               mode |= AX_MEDIUM_PS;
+
+               if (link_sts & (AX_USB_SS | AX_USB_HS))
+                       memcpy(tmp, &AX88179_BULKIN_SIZE[2], 5);
+               else
+                       memcpy(tmp, &AX88179_BULKIN_SIZE[3], 5);
+       } else {
+               memcpy(tmp, &AX88179_BULKIN_SIZE[3], 5);
+       }
+
+       /* RX bulk configuration */
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_RX_BULKIN_QCTRL, 5, 5, tmp);
+
+       dev_priv->rx_urb_size = (1024 * (tmp[3] + 2));
+       if (*tmp16 & GMII_PHY_PHYSR_FULL)
+               mode |= AX_MEDIUM_FULL_DUPLEX;
+       asix_write_cmd(dev, AX_ACCESS_MAC, AX_MEDIUM_STATUS_MODE,
+                      2, 2, &mode);
+
+       return 0;
+out_err:
+       return -1;
+}
+
+static int asix_send(struct eth_device *eth, void *packet, int length)
+{
+       struct ueth_data *dev = (struct ueth_data *)eth->priv;
+       struct asix_private *dev_priv = (struct asix_private *)dev->dev_priv;
+
+       int err;
+       u32 packet_len, tx_hdr2;
+       int actual_len, framesize;
+       ALLOC_CACHE_ALIGN_BUFFER(unsigned char, msg,
+                                PKTSIZE + (2 * sizeof(packet_len)));
+
+       debug("** %s(), len %d\n", __func__, length);
+
+       packet_len = length;
+       cpu_to_le32s(&packet_len);
+
+       memcpy(msg, &packet_len, sizeof(packet_len));
+       framesize = dev_priv->maxpacketsize;
+       tx_hdr2 = 0;
+       if (((length + 8) % framesize) == 0)
+               tx_hdr2 |= 0x80008000;  /* Enable padding */
+
+       cpu_to_le32s(&tx_hdr2);
+
+       memcpy(msg + sizeof(packet_len), &tx_hdr2, sizeof(tx_hdr2));
+
+       memcpy(msg + sizeof(packet_len) + sizeof(tx_hdr2),
+              (void *)packet, length);
+
+       err = usb_bulk_msg(dev->pusb_dev,
+                               usb_sndbulkpipe(dev->pusb_dev, dev->ep_out),
+                               (void *)msg,
+                               length + sizeof(packet_len) + sizeof(tx_hdr2),
+                               &actual_len,
+                               USB_BULK_SEND_TIMEOUT);
+       debug("Tx: len = %u, actual = %u, err = %d\n",
+             length + sizeof(packet_len), actual_len, err);
+
+       return err;
+}
+
+static int asix_recv(struct eth_device *eth)
+{
+       struct ueth_data *dev = (struct ueth_data *)eth->priv;
+       struct asix_private *dev_priv = (struct asix_private *)dev->dev_priv;
+
+       u16 frame_pos;
+       int err;
+       int actual_len;
+
+       int pkt_cnt;
+       u32 rx_hdr;
+       u16 hdr_off;
+       u32 *pkt_hdr;
+       ALLOC_CACHE_ALIGN_BUFFER(u8, recv_buf, dev_priv->rx_urb_size);
+
+       actual_len = -1;
+
+       debug("** %s()\n", __func__);
+
+       err = usb_bulk_msg(dev->pusb_dev,
+                               usb_rcvbulkpipe(dev->pusb_dev, dev->ep_in),
+                               (void *)recv_buf,
+                               dev_priv->rx_urb_size,
+                               &actual_len,
+                               USB_BULK_RECV_TIMEOUT);
+       debug("Rx: len = %u, actual = %u, err = %d\n", dev_priv->rx_urb_size,
+             actual_len, err);
+
+       if (err != 0) {
+               debug("Rx: failed to receive\n");
+               return -ECOMM;
+       }
+       if (actual_len > dev_priv->rx_urb_size) {
+               debug("Rx: received too many bytes %d\n", actual_len);
+               return -EMSGSIZE;
+       }
+
+
+       rx_hdr = *(u32 *)(recv_buf + actual_len - 4);
+       le32_to_cpus(&pkt_hdr);
+
+       pkt_cnt = (u16)rx_hdr;
+       hdr_off = (u16)(rx_hdr >> 16);
+       pkt_hdr = (u32 *)(recv_buf + hdr_off);
+
+
+       frame_pos = 0;
+
+       while (pkt_cnt--) {
+               u16 pkt_len;
+
+               le32_to_cpus(pkt_hdr);
+               pkt_len = (*pkt_hdr >> 16) & 0x1fff;
+
+               frame_pos += 2;
+
+               NetReceive(recv_buf + frame_pos, pkt_len);
+
+               pkt_hdr++;
+               frame_pos += ((pkt_len + 7) & 0xFFF8)-2;
+
+               if (pkt_cnt == 0)
+                       return 0;
+       }
+       return err;
+}
+
+static void asix_halt(struct eth_device *eth)
+{
+       debug("** %s()\n", __func__);
+}
+
+/*
+ * Asix probing functions
+ */
+void ax88179_eth_before_probe(void)
+{
+       curr_eth_dev = 0;
+}
+
+struct asix_dongle {
+       unsigned short vendor;
+       unsigned short product;
+       int flags;
+};
+
+static const struct asix_dongle asix_dongles[] = {
+       { 0x0b95, 0x1790, FLAG_TYPE_AX88179 },
+       { 0x0b95, 0x178a, FLAG_TYPE_AX88178a },
+       { 0x2001, 0x4a00, FLAG_TYPE_DLINK_DUB1312 },
+       { 0x0df6, 0x0072, FLAG_TYPE_SITECOM },
+       { 0x04e8, 0xa100, FLAG_TYPE_SAMSUNG },
+       { 0x17ef, 0x304b, FLAG_TYPE_LENOVO },
+       { 0x0000, 0x0000, FLAG_NONE }   /* END - Do not remove */
+};
+
+/* Probe to see if a new device is actually an asix device */
+int ax88179_eth_probe(struct usb_device *dev, unsigned int ifnum,
+                     struct ueth_data *ss)
+{
+       struct usb_interface *iface;
+       struct usb_interface_descriptor *iface_desc;
+       struct asix_private *dev_priv;
+       int ep_in_found = 0, ep_out_found = 0;
+       int i;
+
+       /* let's examine the device now */
+       iface = &dev->config.if_desc[ifnum];
+       iface_desc = &dev->config.if_desc[ifnum].desc;
+
+       for (i = 0; asix_dongles[i].vendor != 0; i++) {
+               if (dev->descriptor.idVendor == asix_dongles[i].vendor &&
+                   dev->descriptor.idProduct == asix_dongles[i].product)
+                       /* Found a supported dongle */
+                       break;
+       }
+
+       if (asix_dongles[i].vendor == 0)
+               return 0;
+
+       memset(ss, 0, sizeof(struct ueth_data));
+
+       /* At this point, we know we've got a live one */
+       debug("\n\nUSB Ethernet device detected: %#04x:%#04x\n",
+             dev->descriptor.idVendor, dev->descriptor.idProduct);
+
+       /* Initialize the ueth_data structure with some useful info */
+       ss->ifnum = ifnum;
+       ss->pusb_dev = dev;
+       ss->subclass = iface_desc->bInterfaceSubClass;
+       ss->protocol = iface_desc->bInterfaceProtocol;
+
+       /* alloc driver private */
+       ss->dev_priv = calloc(1, sizeof(struct asix_private));
+       if (!ss->dev_priv)
+               return 0;
+       dev_priv = ss->dev_priv;
+       dev_priv->flags = asix_dongles[i].flags;
+
+       /*
+        * We are expecting a minimum of 3 endpoints - in, out (bulk), and
+        * int. We will ignore any others.
+        */
+       for (i = 0; i < iface_desc->bNumEndpoints; i++) {
+               /* is it an interrupt endpoint? */
+               if ((iface->ep_desc[i].bmAttributes &
+                   USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) {
+                       ss->ep_int = iface->ep_desc[i].bEndpointAddress &
+                               USB_ENDPOINT_NUMBER_MASK;
+                       ss->irqinterval = iface->ep_desc[i].bInterval;
+                       continue;
+               }
+
+               /* is it an BULK endpoint? */
+               if (!((iface->ep_desc[i].bmAttributes &
+                    USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK))
+                       continue;
+
+               u8 ep_addr = iface->ep_desc[i].bEndpointAddress;
+               if ((ep_addr & USB_DIR_IN) && !ep_in_found) {
+                       ss->ep_in = ep_addr &
+                               USB_ENDPOINT_NUMBER_MASK;
+                       ep_in_found = 1;
+               }
+               if (!(ep_addr & USB_DIR_IN) && !ep_out_found) {
+                       ss->ep_out = ep_addr &
+                               USB_ENDPOINT_NUMBER_MASK;
+                       dev_priv->maxpacketsize =
+                               dev->epmaxpacketout[AX_ENDPOINT_OUT];
+                       ep_out_found = 1;
+               }
+       }
+       debug("Endpoints In %d Out %d Int %d\n",
+             ss->ep_in, ss->ep_out, ss->ep_int);
+
+       /* Do some basic sanity checks, and bail if we find a problem */
+       if (usb_set_interface(dev, iface_desc->bInterfaceNumber, 0) ||
+           !ss->ep_in || !ss->ep_out || !ss->ep_int) {
+               debug("Problems with device\n");
+               return 0;
+       }
+       dev->privptr = (void *)ss;
+       return 1;
+}
+
+int ax88179_eth_get_info(struct usb_device *dev, struct ueth_data *ss,
+                               struct eth_device *eth)
+{
+       if (!eth) {
+               debug("%s: missing parameter.\n", __func__);
+               return 0;
+       }
+       sprintf(eth->name, "%s%d", ASIX_BASE_NAME, curr_eth_dev++);
+       eth->init = asix_init;
+       eth->send = asix_send;
+       eth->recv = asix_recv;
+       eth->halt = asix_halt;
+       eth->priv = ss;
+
+       if (asix_basic_reset(ss))
+               return 0;
+
+       /* Get the MAC address */
+       if (asix_read_mac(eth))
+               return 0;
+       debug("MAC %pM\n", eth->enetaddr);
+
+       return 1;
+}
index 1dda54c2f116cffc8d6dc59c6bf8ac12128a3715..7cb96e3bf60aa854f767be401cf448d8c99756c3 100644 (file)
@@ -30,6 +30,13 @@ static const struct usb_eth_prob_dev prob_dev[] = {
                .get_info = asix_eth_get_info,
        },
 #endif
+#ifdef CONFIG_USB_ETHER_ASIX88179
+       {
+               .before_probe = ax88179_eth_before_probe,
+               .probe = ax88179_eth_probe,
+               .get_info = ax88179_eth_get_info,
+       },
+#endif
 #ifdef CONFIG_USB_ETHER_MCS7830
        {
                .before_probe = mcs7830_eth_before_probe,
index 2efd5a4d5b31969bf23a958f7d5dfb3b5b714bed..70bb550fa470a1799f81b1aeb6c7112e8e931a10 100644 (file)
@@ -12,6 +12,7 @@ obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o usbstring.o
 ifdef CONFIG_USB_GADGET
 obj-$(CONFIG_USB_GADGET_ATMEL_USBA) += atmel_usba_udc.o
 obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG) += s3c_udc_otg.o
+obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG_PHY) += s3c_udc_otg_phy.o
 obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o
 obj-$(CONFIG_CI_UDC)   += ci_udc.o
 obj-$(CONFIG_THOR_FUNCTION) += f_thor.o
index 12628effe8bb978fe308352631c88f4ede7ec1f0..fbc74f3bed829a8bc2c8b6c88cf44306c415f5bc 100644 (file)
@@ -1062,7 +1062,6 @@ static void usba_ep_irq(struct usba_udc *udc, struct usba_ep *ep)
        if ((epstatus & epctrl) & USBA_RX_BK_RDY) {
                DBG(DBG_BUS, "%s: RX data ready\n", ep->ep.name);
                receive_data(ep);
-               usba_ep_writel(ep, CLR_STA, USBA_RX_BK_RDY);
        }
 }
 
index 7bd25629c8ca5124b009df2b06dd423334ed7898..a4c5606527a824bca5f53a5c7514d38e2d530f8b 100644 (file)
@@ -743,8 +743,8 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
                        if (!gadget_is_dualspeed(gadget))
                                break;
                        device_qual(cdev);
-                       value = min(w_length,
-                               sizeof(struct usb_qualifier_descriptor));
+                       value = min_t(int, w_length,
+                                     sizeof(struct usb_qualifier_descriptor));
                        break;
                case USB_DT_OTHER_SPEED_CONFIG:
                        if (!gadget_is_dualspeed(gadget))
index 3559400b284778d838f20cedc9043a29767e26c6..0db7a3b6c15566b65b4d7260603a30c59284b43f 100644 (file)
@@ -269,8 +269,8 @@ static void dw_write_noniso_tx_fifo(struct usb_endpoint_instance
                UDCDBGA("urb->buffer %p, buffer_length %d, actual_length %d",
                        urb->buffer, urb->buffer_length, urb->actual_length);
 
-               last = min(urb->actual_length - endpoint->sent,
-                          endpoint->tx_packetSize);
+               last = min_t(u32, urb->actual_length - endpoint->sent,
+                            endpoint->tx_packetSize);
 
                if (last) {
                        u8 *cp = urb->buffer + endpoint->sent;
index d0dd29ffb25d9493efd0dc1a3eb96248c0a66f5e..ba442d5ed529bb04a88a41e630477b4a46b32d46 100644 (file)
@@ -852,30 +852,6 @@ DEFINE_CACHE_ALIGN_BUFFER(u8, control_req, USB_BUFSIZ);
 DEFINE_CACHE_ALIGN_BUFFER(u8, status_req, STATUS_BYTECOUNT);
 #endif
 
-
-/**
- * strlcpy - Copy a %NUL terminated string into a sized buffer
- * @dest: Where to copy the string to
- * @src: Where to copy the string from
- * @size: size of destination buffer
- *
- * Compatible with *BSD: the result is always a valid
- * NUL-terminated string that fits in the buffer (unless,
- * of course, the buffer size is zero). It does not pad
- * out the result like strncpy() does.
- */
-size_t strlcpy(char *dest, const char *src, size_t size)
-{
-       size_t ret = strlen(src);
-
-       if (size) {
-               size_t len = (ret >= size) ? size - 1 : ret;
-               memcpy(dest, src, len);
-               dest[len] = '\0';
-       }
-       return ret;
-}
-
 /*============================================================================*/
 
 /*
index 16fc9ddf82bd766bacb9d441428fb794c1c6d612..ead71eba6b136db95c9cd4b017ef2da6827872a4 100644 (file)
@@ -366,7 +366,7 @@ static int state_dfu_idle(struct f_dfu *f_dfu,
                to_runtime_mode(f_dfu);
                f_dfu->dfu_state = DFU_STATE_appIDLE;
 
-               dfu_trigger_detach();
+               g_dnl_trigger_detach();
                break;
        default:
                f_dfu->dfu_state = DFU_STATE_dfuERROR;
index 71b62e5005a12915a164acb74335b4cad6828e4b..310175acfed369a76e0dacd61b6f5b76f0e714e6 100644 (file)
@@ -480,6 +480,17 @@ static void cb_boot(struct usb_ep *ep, struct usb_request *req)
        fastboot_tx_write_str("OKAY");
 }
 
+static void do_exit_on_complete(struct usb_ep *ep, struct usb_request *req)
+{
+       g_dnl_trigger_detach();
+}
+
+static void cb_continue(struct usb_ep *ep, struct usb_request *req)
+{
+       fastboot_func->in_req->complete = do_exit_on_complete;
+       fastboot_tx_write_str("OKAY");
+}
+
 #ifdef CONFIG_FASTBOOT_FLASH
 static void cb_flash(struct usb_ep *ep, struct usb_request *req)
 {
@@ -520,6 +531,9 @@ static const struct cmd_dispatch_info cmd_dispatch_info[] = {
        }, {
                .cmd = "boot",
                .cb = cb_boot,
+       }, {
+               .cmd = "continue",
+               .cb = cb_continue,
        },
 #ifdef CONFIG_FASTBOOT_FLASH
        {
index 78519fa41ff4c7b8cea414179d77e1e6fd3beec4..2d0410d795677c3925f739811cc671efa633e37f 100644 (file)
@@ -205,12 +205,24 @@ static long long int download_head(unsigned long long total,
 
 static int download_tail(long long int left, int cnt)
 {
-       struct dfu_entity *dfu_entity = dfu_get_entity(alt_setting_num);
-       void *transfer_buffer = dfu_get_buf(dfu_entity);
+       struct dfu_entity *dfu_entity;
+       void *transfer_buffer;
        int ret;
 
        debug("%s: left: %llu cnt: %d\n", __func__, left, cnt);
 
+       dfu_entity = dfu_get_entity(alt_setting_num);
+       if (!dfu_entity) {
+               error("Alt setting: %d entity not found!\n", alt_setting_num);
+               return -ENOENT;
+       }
+
+       transfer_buffer = dfu_get_buf(dfu_entity);
+       if (!transfer_buffer) {
+               error("Transfer buffer not allocated!");
+               return -ENXIO;
+       }
+
        if (left) {
                ret = dfu_write(dfu_entity, transfer_buffer, left, cnt++);
                if (ret) {
index 25611acd607f21a39010a3c207ba70f39463c0c2..ee52a294679ad5b98de1e81f01b790306ae00f99 100644 (file)
@@ -163,6 +163,23 @@ __weak int g_dnl_board_usb_cable_connected(void)
        return -EOPNOTSUPP;
 }
 
+static bool g_dnl_detach_request;
+
+bool g_dnl_detach(void)
+{
+       return g_dnl_detach_request;
+}
+
+void g_dnl_trigger_detach(void)
+{
+       g_dnl_detach_request = true;
+}
+
+void g_dnl_clear_detach(void)
+{
+       g_dnl_detach_request = false;
+}
+
 static int g_dnl_get_bcd_device_number(struct usb_composite_dev *cdev)
 {
        struct usb_gadget *gadget = cdev->gadget;
index efd5c7fda146177cb521dd819fcae332679a60bb..942355528084b0022c475b5e35d3b136f6957e2c 100644 (file)
@@ -65,7 +65,8 @@ static int udc_write_urb(struct usb_endpoint_instance *endpoint)
        if (!urb || !urb->actual_length)
                return -1;
 
-       n = min(urb->actual_length - endpoint->sent, endpoint->tx_packetSize);
+       n = min_t(unsigned int, urb->actual_length - endpoint->sent,
+                 endpoint->tx_packetSize);
        if (n <= 0)
                return -1;
 
index b9816dfe30a55b495b3d715328eccd6c3f56ccf0..7653f03949a114c1d32274a6cd1ff41b32b48c93 100644 (file)
@@ -31,7 +31,6 @@
 #include <asm/io.h>
 
 #include <asm/mach-types.h>
-#include <asm/arch/gpio.h>
 
 #include "regs-otg.h"
 #include <usb/lin_gadget_compat.h>
@@ -105,7 +104,7 @@ static void stop_activity(struct s3c_udc *dev,
                          struct usb_gadget_driver *driver);
 static int udc_enable(struct s3c_udc *dev);
 static void udc_set_address(struct s3c_udc *dev, unsigned char address);
-static void reconfig_usbd(void);
+static void reconfig_usbd(struct s3c_udc *dev);
 static void set_max_pktsize(struct s3c_udc *dev, enum usb_device_speed speed);
 static void nuke(struct s3c_ep *ep, int status);
 static int s3c_udc_set_halt(struct usb_ep *_ep, int value);
@@ -146,68 +145,14 @@ static struct usb_ep_ops s3c_ep_ops = {
 
 void __iomem           *regs_otg;
 struct s3c_usbotg_reg *reg;
-struct s3c_usbotg_phy *phy;
-static unsigned int usb_phy_ctrl;
 
 bool dfu_usb_get_reset(void)
 {
        return !!(readl(&reg->gintsts) & INT_RESET);
 }
 
-void otg_phy_init(struct s3c_udc *dev)
-{
-       dev->pdata->phy_control(1);
-
-       /*USB PHY0 Enable */
-       printf("USB PHY0 Enable\n");
-
-       /* Enable PHY */
-       writel(readl(usb_phy_ctrl) | USB_PHY_CTRL_EN0, usb_phy_ctrl);
-
-       if (dev->pdata->usb_flags == PHY0_SLEEP) /* C210 Universal */
-               writel((readl(&phy->phypwr)
-                       &~(PHY_0_SLEEP | OTG_DISABLE_0 | ANALOG_PWRDOWN)
-                       &~FORCE_SUSPEND_0), &phy->phypwr);
-       else /* C110 GONI */
-               writel((readl(&phy->phypwr) &~(OTG_DISABLE_0 | ANALOG_PWRDOWN)
-                       &~FORCE_SUSPEND_0), &phy->phypwr);
-
-       if (s5p_cpu_id == 0x4412)
-               writel((readl(&phy->phyclk) & ~(EXYNOS4X12_ID_PULLUP0 |
-                       EXYNOS4X12_COMMON_ON_N0)) | EXYNOS4X12_CLK_SEL_24MHZ,
-                      &phy->phyclk); /* PLL 24Mhz */
-       else
-               writel((readl(&phy->phyclk) & ~(ID_PULLUP0 | COMMON_ON_N0)) |
-                      CLK_SEL_24MHZ, &phy->phyclk); /* PLL 24Mhz */
-
-       writel((readl(&phy->rstcon) &~(LINK_SW_RST | PHYLNK_SW_RST))
-              | PHY_SW_RST0, &phy->rstcon);
-       udelay(10);
-       writel(readl(&phy->rstcon)
-              &~(PHY_SW_RST0 | LINK_SW_RST | PHYLNK_SW_RST), &phy->rstcon);
-       udelay(10);
-}
-
-void otg_phy_off(struct s3c_udc *dev)
-{
-       /* reset controller just in case */
-       writel(PHY_SW_RST0, &phy->rstcon);
-       udelay(20);
-       writel(readl(&phy->phypwr) &~PHY_SW_RST0, &phy->rstcon);
-       udelay(20);
-
-       writel(readl(&phy->phypwr) | OTG_DISABLE_0 | ANALOG_PWRDOWN
-              | FORCE_SUSPEND_0, &phy->phypwr);
-
-       writel(readl(usb_phy_ctrl) &~USB_PHY_CTRL_EN0, usb_phy_ctrl);
-
-       writel((readl(&phy->phyclk) & ~(ID_PULLUP0 | COMMON_ON_N0)),
-             &phy->phyclk);
-
-       udelay(10000);
-
-       dev->pdata->phy_control(0);
-}
+__weak void otg_phy_init(struct s3c_udc *dev) {}
+__weak void otg_phy_off(struct s3c_udc *dev) {}
 
 /***********************************************************/
 
@@ -270,7 +215,7 @@ static int udc_enable(struct s3c_udc *dev)
        debug_cond(DEBUG_SETUP != 0, "%s: %p\n", __func__, dev);
 
        otg_phy_init(dev);
-       reconfig_usbd();
+       reconfig_usbd(dev);
 
        debug_cond(DEBUG_SETUP != 0,
                   "S3C USB 2.0 OTG Controller Core Initialized : 0x%x\n",
@@ -451,15 +396,17 @@ static void stop_activity(struct s3c_udc *dev,
        udc_reinit(dev);
 }
 
-static void reconfig_usbd(void)
+static void reconfig_usbd(struct s3c_udc *dev)
 {
        /* 2. Soft-reset OTG Core and then unreset again. */
        int i;
        unsigned int uTemp = writel(CORE_SOFT_RESET, &reg->grstctl);
+       uint32_t dflt_gusbcfg;
 
        debug("Reseting OTG controller\n");
 
-       writel(0<<15            /* PHY Low Power Clock sel*/
+       dflt_gusbcfg =
+               0<<15           /* PHY Low Power Clock sel*/
                |1<<14          /* Non-Periodic TxFIFO Rewind Enable*/
                |0x5<<10        /* Turnaround time*/
                |0<<9 | 0<<8    /* [0:HNP disable,1:HNP enable][ 0:SRP disable*/
@@ -468,8 +415,12 @@ static void reconfig_usbd(void)
                |0<<6           /* 0: high speed utmi+, 1: full speed serial*/
                |0<<4           /* 0: utmi+, 1:ulpi*/
                |1<<3           /* phy i/f  0:8bit, 1:16bit*/
-               |0x7<<0,        /* HS/FS Timeout**/
-               &reg->gusbcfg);
+               |0x7<<0;        /* HS/FS Timeout**/
+
+       if (dev->pdata->usb_gusbcfg)
+               dflt_gusbcfg = dev->pdata->usb_gusbcfg;
+
+       writel(dflt_gusbcfg, &reg->gusbcfg);
 
        /* 3. Put the OTG device core in the disconnected state.*/
        uTemp = readl(&reg->dctl);
@@ -854,9 +805,7 @@ int s3c_udc_probe(struct s3c_plat_otg_data *pdata)
 
        dev->pdata = pdata;
 
-       phy = (struct s3c_usbotg_phy *)pdata->regs_phy;
        reg = (struct s3c_usbotg_reg *)pdata->regs_otg;
-       usb_phy_ctrl = pdata->usb_phy_ctrl;
 
        /* regs_otg = (void *)pdata->regs_otg; */
 
diff --git a/drivers/usb/gadget/s3c_udc_otg_phy.c b/drivers/usb/gadget/s3c_udc_otg_phy.c
new file mode 100644 (file)
index 0000000..f13cb89
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * drivers/usb/gadget/s3c_udc_otg.c
+ * Samsung S3C on-chip full/high speed USB OTG 2.0 device controllers
+ *
+ * Copyright (C) 2008 for Samsung Electronics
+ *
+ * BSP Support for Samsung's UDC driver
+ * available at:
+ * git://git.kernel.org/pub/scm/linux/kernel/git/kki_ap/linux-2.6-samsung.git
+ *
+ * State machine bugfixes:
+ * Marek Szyprowski <m.szyprowski@samsung.com>
+ *
+ * Ported to u-boot:
+ * Marek Szyprowski <m.szyprowski@samsung.com>
+ * Lukasz Majewski <l.majewski@samsumg.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/errno.h>
+#include <linux/list.h>
+#include <malloc.h>
+
+#include <linux/usb/ch9.h>
+#include <linux/usb/gadget.h>
+
+#include <asm/byteorder.h>
+#include <asm/unaligned.h>
+#include <asm/io.h>
+
+#include <asm/mach-types.h>
+
+#include "regs-otg.h"
+#include <usb/lin_gadget_compat.h>
+
+#include <usb/s3c_udc.h>
+
+void otg_phy_init(struct s3c_udc *dev)
+{
+       unsigned int usb_phy_ctrl = dev->pdata->usb_phy_ctrl;
+       struct s3c_usbotg_phy *phy =
+               (struct s3c_usbotg_phy *)dev->pdata->regs_phy;
+
+       dev->pdata->phy_control(1);
+
+       /* USB PHY0 Enable */
+       printf("USB PHY0 Enable\n");
+
+       /* Enable PHY */
+       writel(readl(usb_phy_ctrl) | USB_PHY_CTRL_EN0, usb_phy_ctrl);
+
+       if (dev->pdata->usb_flags == PHY0_SLEEP) /* C210 Universal */
+               writel((readl(&phy->phypwr)
+                       &~(PHY_0_SLEEP | OTG_DISABLE_0 | ANALOG_PWRDOWN)
+                       &~FORCE_SUSPEND_0), &phy->phypwr);
+       else /* C110 GONI */
+               writel((readl(&phy->phypwr) &~(OTG_DISABLE_0 | ANALOG_PWRDOWN)
+                       &~FORCE_SUSPEND_0), &phy->phypwr);
+
+       if (s5p_cpu_id == 0x4412)
+               writel((readl(&phy->phyclk) & ~(EXYNOS4X12_ID_PULLUP0 |
+                       EXYNOS4X12_COMMON_ON_N0)) | EXYNOS4X12_CLK_SEL_24MHZ,
+                      &phy->phyclk); /* PLL 24Mhz */
+       else
+               writel((readl(&phy->phyclk) & ~(ID_PULLUP0 | COMMON_ON_N0)) |
+                      CLK_SEL_24MHZ, &phy->phyclk); /* PLL 24Mhz */
+
+       writel((readl(&phy->rstcon) &~(LINK_SW_RST | PHYLNK_SW_RST))
+              | PHY_SW_RST0, &phy->rstcon);
+       udelay(10);
+       writel(readl(&phy->rstcon)
+              &~(PHY_SW_RST0 | LINK_SW_RST | PHYLNK_SW_RST), &phy->rstcon);
+       udelay(10);
+}
+
+void otg_phy_off(struct s3c_udc *dev)
+{
+       unsigned int usb_phy_ctrl = dev->pdata->usb_phy_ctrl;
+       struct s3c_usbotg_phy *phy =
+               (struct s3c_usbotg_phy *)dev->pdata->regs_phy;
+
+       /* reset controller just in case */
+       writel(PHY_SW_RST0, &phy->rstcon);
+       udelay(20);
+       writel(readl(&phy->phypwr) &~PHY_SW_RST0, &phy->rstcon);
+       udelay(20);
+
+       writel(readl(&phy->phypwr) | OTG_DISABLE_0 | ANALOG_PWRDOWN
+              | FORCE_SUSPEND_0, &phy->phypwr);
+
+       writel(readl(usb_phy_ctrl) &~USB_PHY_CTRL_EN0, usb_phy_ctrl);
+
+       writel((readl(&phy->phyclk) & ~(ID_PULLUP0 | COMMON_ON_N0)),
+             &phy->phyclk);
+
+       udelay(10000);
+
+       dev->pdata->phy_control(0);
+}
index 4f69b22a254ceaa8586955337e90b018943aac63..7e7a2c2d906d73ec7f9a4753e9731955c191c2f9 100644 (file)
@@ -97,8 +97,8 @@ static int setdma_rx(struct s3c_ep *ep, struct s3c_request *req)
        u32 ep_num = ep_index(ep);
 
        buf = req->req.buf + req->req.actual;
-       length = min(req->req.length - req->req.actual,
-                    ep_num ? DMA_BUFFER_SIZE : ep->ep.maxpacket);
+       length = min_t(u32, req->req.length - req->req.actual,
+                      ep_num ? DMA_BUFFER_SIZE : ep->ep.maxpacket);
 
        ep->len = length;
        ep->dma_buf = buf;
@@ -551,7 +551,7 @@ static int s3c_udc_irq(int irq, void *_dev)
                                debug_cond(DEBUG_ISR,
                                        "\t\tOTG core got reset (%d)!!\n",
                                        reset_available);
-                               reconfig_usbd();
+                               reconfig_usbd(dev);
                                dev->ep0state = WAIT_FOR_SETUP;
                                reset_available = 0;
                                s3c_udc_pre_setup();
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
new file mode 100644 (file)
index 0000000..30d1457
--- /dev/null
@@ -0,0 +1,56 @@
+#
+# USB Host Controller Drivers
+#
+comment "USB Host Controller Drivers"
+
+config USB_XHCI_HCD
+       bool "xHCI HCD (USB 3.0) support"
+       ---help---
+         The eXtensible Host Controller Interface (xHCI) is standard for USB 3.0
+         "SuperSpeed" host controller hardware.
+
+config USB_XHCI
+       bool
+       default USB_XHCI_HCD
+       ---help---
+         TODO: rename after most boards switch to Kconfig
+
+if USB_XHCI_HCD
+
+endif
+
+config USB_EHCI_HCD
+       bool "EHCI HCD (USB 2.0) support"
+       ---help---
+         The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0
+         "high speed" (480 Mbit/sec, 60 Mbyte/sec) host controller hardware.
+         If your USB host controller supports USB 2.0, you will likely want to
+         configure this Host Controller Driver.
+
+         EHCI controllers are packaged with "companion" host controllers (OHCI
+         or UHCI) to handle USB 1.1 devices connected to root hub ports.  Ports
+         will connect to EHCI if the device is high speed, otherwise they
+         connect to a companion controller.  If you configure EHCI, you should
+         probably configure the OHCI (for NEC and some other vendors) USB Host
+         Controller Driver or UHCI (for Via motherboards) Host Controller
+         Driver too.
+
+         You may want to read <file:Documentation/usb/ehci.txt>.
+
+config USB_EHCI
+       bool
+       default USB_EHCI_HCD
+       ---help---
+         TODO: rename after most boards switch to Kconfig
+
+if USB_EHCI_HCD
+
+config USB_EHCI_UNIPHIER
+       bool "Support for Panasonic UniPhier on-chip EHCI USB controller"
+       depends on ARCH_UNIPHIER
+       default y
+       ---help---
+         Enables support for the on-chip EHCI controller on Panasonic
+         UniPhier SoCs.
+
+endif
index 1c3592914dcf363c71de68f05a69cf5b21b5d845..c11b551620e79a8666ef0b70eef55b6b79b45594 100644 (file)
@@ -37,6 +37,7 @@ obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o
 obj-$(CONFIG_USB_EHCI_SPEAR) += ehci-spear.o
 obj-$(CONFIG_USB_EHCI_SUNXI) += ehci-sunxi.o
 obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o
+obj-$(CONFIG_USB_EHCI_UNIPHIER) += ehci-uniphier.o
 obj-$(CONFIG_USB_EHCI_VCT) += ehci-vct.o
 obj-$(CONFIG_USB_EHCI_RMOBILE) += ehci-rmobile.o
 obj-$(CONFIG_USB_EHCI_ZYNQ) += ehci-zynq.o
index 2a5bbf5ac0e9be839f19a7cb7149927e0e9a1f30..e8142ac0922f1974c2b36c00de24eaa223d11215 100644 (file)
@@ -503,23 +503,23 @@ static int dwc_otg_submit_rh_msg_in_descriptor(struct usb_device *dev,
        case 0:
                switch (wValue & 0xff00) {
                case 0x0100:    /* device descriptor */
-                       len = min3(txlen, sizeof(root_hub_dev_des), wLength);
+                       len = min3(txlen, (int)sizeof(root_hub_dev_des), (int)wLength);
                        memcpy(buffer, root_hub_dev_des, len);
                        break;
                case 0x0200:    /* configuration descriptor */
-                       len = min3(txlen, sizeof(root_hub_config_des), wLength);
+                       len = min3(txlen, (int)sizeof(root_hub_config_des), (int)wLength);
                        memcpy(buffer, root_hub_config_des, len);
                        break;
                case 0x0300:    /* string descriptors */
                        switch (wValue & 0xff) {
                        case 0x00:
-                               len = min3(txlen, sizeof(root_hub_str_index0),
-                                          wLength);
+                               len = min3(txlen, (int)sizeof(root_hub_str_index0),
+                                          (int)wLength);
                                memcpy(buffer, root_hub_str_index0, len);
                                break;
                        case 0x01:
-                               len = min3(txlen, sizeof(root_hub_str_index1),
-                                          wLength);
+                               len = min3(txlen, (int)sizeof(root_hub_str_index1),
+                                          (int)wLength);
                                memcpy(buffer, root_hub_str_index1, len);
                                break;
                        }
@@ -556,7 +556,7 @@ static int dwc_otg_submit_rh_msg_in_descriptor(struct usb_device *dev,
                        data[10] = data[9];
                }
 
-               len = min3(txlen, data[0], wLength);
+               len = min3(txlen, (int)data[0], (int)wLength);
                memcpy(buffer, data, len);
                break;
        default:
index edd91a84a7e78ec97f37a5a27e82826a06eadb2c..6fdbf5724f4a6527757d8cec692c9a59c7529b6a 100644 (file)
@@ -85,15 +85,10 @@ static int exynos_usb_parse_dt(const void *blob, struct exynos_ehci *exynos)
 }
 #endif
 
-/* Setup the EHCI host controller. */
-static void setup_usb_phy(struct exynos_usb_phy *usb)
+static void exynos5_setup_usb_phy(struct exynos_usb_phy *usb)
 {
        u32 hsic_ctrl;
 
-       set_usbhost_mode(USB20_PHY_CFG_HOST_LINK_EN);
-
-       set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_EN);
-
        clrbits_le32(&usb->usbphyctrl0,
                        HOST_CTRL0_FSEL_MASK |
                        HOST_CTRL0_COMMONON_N |
@@ -150,8 +145,34 @@ static void setup_usb_phy(struct exynos_usb_phy *usb)
                        EHCICTRL_ENAINCR16);
 }
 
-/* Reset the EHCI host controller. */
-static void reset_usb_phy(struct exynos_usb_phy *usb)
+static void exynos4412_setup_usb_phy(struct exynos4412_usb_phy *usb)
+{
+       writel(CLK_24MHZ, &usb->usbphyclk);
+
+       clrbits_le32(&usb->usbphyctrl, (PHYPWR_NORMAL_MASK_HSIC0 |
+               PHYPWR_NORMAL_MASK_HSIC1 | PHYPWR_NORMAL_MASK_PHY1 |
+               PHYPWR_NORMAL_MASK_PHY0));
+
+       setbits_le32(&usb->usbphyrstcon, (RSTCON_HOSTPHY_SWRST | RSTCON_SWRST));
+       udelay(10);
+       clrbits_le32(&usb->usbphyrstcon, (RSTCON_HOSTPHY_SWRST | RSTCON_SWRST));
+}
+
+static void setup_usb_phy(struct exynos_usb_phy *usb)
+{
+       set_usbhost_mode(USB20_PHY_CFG_HOST_LINK_EN);
+
+       set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_EN);
+
+       if (cpu_is_exynos5())
+               exynos5_setup_usb_phy(usb);
+       else if (cpu_is_exynos4())
+               if (proid_is_exynos4412())
+                       exynos4412_setup_usb_phy((struct exynos4412_usb_phy *)
+                                                usb);
+}
+
+static void exynos5_reset_usb_phy(struct exynos_usb_phy *usb)
 {
        u32 hsic_ctrl;
 
@@ -171,6 +192,24 @@ static void reset_usb_phy(struct exynos_usb_phy *usb)
 
        setbits_le32(&usb->hsicphyctrl1, hsic_ctrl);
        setbits_le32(&usb->hsicphyctrl2, hsic_ctrl);
+}
+
+static void exynos4412_reset_usb_phy(struct exynos4412_usb_phy *usb)
+{
+       setbits_le32(&usb->usbphyctrl, (PHYPWR_NORMAL_MASK_HSIC0 |
+               PHYPWR_NORMAL_MASK_HSIC1 | PHYPWR_NORMAL_MASK_PHY1 |
+               PHYPWR_NORMAL_MASK_PHY0));
+}
+
+/* Reset the EHCI host controller. */
+static void reset_usb_phy(struct exynos_usb_phy *usb)
+{
+       if (cpu_is_exynos5())
+               exynos5_reset_usb_phy(usb);
+       else if (cpu_is_exynos4())
+               if (proid_is_exynos4412())
+                       exynos4412_reset_usb_phy((struct exynos4412_usb_phy *)
+                                                usb);
 
        set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
 }
index 45062e699bd7c38793e9bd6a5a3142e263c16f84..5d4288d38f086c7967f8388bde7bf8423afdcc47 100644 (file)
 #include <asm/io.h>
 #include <usb/ehci-fsl.h>
 #include <hwconfig.h>
-#include <asm/fsl_errata.h>
+#include <fsl_usb.h>
+#include <fdt_support.h>
 
 #include "ehci.h"
 
+#ifndef CONFIG_USB_MAX_CONTROLLER_COUNT
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 1
+#endif
+
 static void set_txfifothresh(struct usb_ehci *, u32);
 
 /* Check USB PHY clock valid */
@@ -130,8 +135,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 
        in_le32(&ehci->usbmode);
 
-       if (SVR_SOC_VER(get_svr()) == SVR_T4240 &&
-           IS_SVR_REV(get_svr(), 2, 0))
+       if (has_erratum_a007798())
                set_txfifothresh(ehci, TXFIFOTHRESH);
 
        return 0;
@@ -159,3 +163,184 @@ static void set_txfifothresh(struct usb_ehci *ehci, u32 txfifo_thresh)
        cmd |= TXFIFO_THRESH(txfifo_thresh);
        ehci_writel(&ehci->txfilltuning, cmd);
 }
+
+#if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB)
+static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
+                                      const char *phy_type, int start_offset)
+{
+       const char *compat_dr = "fsl-usb2-dr";
+       const char *compat_mph = "fsl-usb2-mph";
+       const char *prop_mode = "dr_mode";
+       const char *prop_type = "phy_type";
+       const char *node_type = NULL;
+       int node_offset;
+       int err;
+
+       node_offset = fdt_node_offset_by_compatible(blob,
+                                                   start_offset, compat_mph);
+       if (node_offset < 0) {
+               node_offset = fdt_node_offset_by_compatible(blob,
+                                                           start_offset,
+                                                           compat_dr);
+               if (node_offset < 0) {
+                       printf("WARNING: could not find compatible node: %s",
+                              fdt_strerror(node_offset));
+                       return -1;
+               }
+               node_type = compat_dr;
+       } else {
+               node_type = compat_mph;
+       }
+
+       if (mode) {
+               err = fdt_setprop(blob, node_offset, prop_mode, mode,
+                                 strlen(mode) + 1);
+               if (err < 0)
+                       printf("WARNING: could not set %s for %s: %s.\n",
+                              prop_mode, node_type, fdt_strerror(err));
+       }
+
+       if (phy_type) {
+               err = fdt_setprop(blob, node_offset, prop_type, phy_type,
+                                 strlen(phy_type) + 1);
+               if (err < 0)
+                       printf("WARNING: could not set %s for %s: %s.\n",
+                              prop_type, node_type, fdt_strerror(err));
+       }
+
+       return node_offset;
+}
+
+static const char *fdt_usb_get_node_type(void *blob, int start_offset,
+                                        int *node_offset)
+{
+       const char *compat_dr = "fsl-usb2-dr";
+       const char *compat_mph = "fsl-usb2-mph";
+       const char *node_type = NULL;
+
+       *node_offset = fdt_node_offset_by_compatible(blob, start_offset,
+                                                    compat_mph);
+       if (*node_offset < 0) {
+               *node_offset = fdt_node_offset_by_compatible(blob,
+                                                            start_offset,
+                                                            compat_dr);
+               if (*node_offset < 0) {
+                       printf("ERROR: could not find compatible node: %s\n",
+                              fdt_strerror(*node_offset));
+               } else {
+                       node_type = compat_dr;
+               }
+       } else {
+               node_type = compat_mph;
+       }
+
+       return node_type;
+}
+
+static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum,
+                                int start_offset)
+{
+       int node_offset, err;
+       const char *node_type = NULL;
+
+       node_type = fdt_usb_get_node_type(blob, start_offset, &node_offset);
+       if (!node_type)
+               return -1;
+
+       err = fdt_setprop(blob, node_offset, prop_erratum, NULL, 0);
+       if (err < 0) {
+               printf("ERROR: could not set %s for %s: %s.\n",
+                      prop_erratum, node_type, fdt_strerror(err));
+       }
+
+       return node_offset;
+}
+
+void fdt_fixup_dr_usb(void *blob, bd_t *bd)
+{
+       static const char * const modes[] = { "host", "peripheral", "otg" };
+       static const char * const phys[] = { "ulpi", "utmi" };
+       int usb_erratum_a006261_off = -1;
+       int usb_erratum_a007075_off = -1;
+       int usb_erratum_a007792_off = -1;
+       int usb_mode_off = -1;
+       int usb_phy_off = -1;
+       char str[5];
+       int i, j;
+
+       for (i = 1; i <= CONFIG_USB_MAX_CONTROLLER_COUNT; i++) {
+               const char *dr_mode_type = NULL;
+               const char *dr_phy_type = NULL;
+               int mode_idx = -1, phy_idx = -1;
+
+               snprintf(str, 5, "%s%d", "usb", i);
+               if (hwconfig(str)) {
+                       for (j = 0; j < ARRAY_SIZE(modes); j++) {
+                               if (hwconfig_subarg_cmp(str, "dr_mode",
+                                                       modes[j])) {
+                                       mode_idx = j;
+                                       break;
+                               }
+                       }
+
+                       for (j = 0; j < ARRAY_SIZE(phys); j++) {
+                               if (hwconfig_subarg_cmp(str, "phy_type",
+                                                       phys[j])) {
+                                       phy_idx = j;
+                                       break;
+                               }
+                       }
+
+                       if (mode_idx < 0 && phy_idx < 0) {
+                               printf("WARNING: invalid phy or mode\n");
+                               return;
+                       }
+
+                       if (mode_idx > -1)
+                               dr_mode_type = modes[mode_idx];
+
+                       if (phy_idx > -1)
+                               dr_phy_type = phys[phy_idx];
+               }
+
+               usb_mode_off = fdt_fixup_usb_mode_phy_type(blob,
+                                                          dr_mode_type, NULL,
+                                                          usb_mode_off);
+
+               if (usb_mode_off < 0)
+                       return;
+
+               usb_phy_off = fdt_fixup_usb_mode_phy_type(blob,
+                                                         NULL, dr_phy_type,
+                                                         usb_phy_off);
+
+               if (usb_phy_off < 0)
+                       return;
+
+               if (has_erratum_a006261()) {
+                       usb_erratum_a006261_off =  fdt_fixup_usb_erratum
+                                                  (blob,
+                                                   "fsl,usb-erratum-a006261",
+                                                   usb_erratum_a006261_off);
+                       if (usb_erratum_a006261_off < 0)
+                               return;
+               }
+               if (has_erratum_a007075()) {
+                       usb_erratum_a007075_off =  fdt_fixup_usb_erratum
+                                                  (blob,
+                                                   "fsl,usb-erratum-a007075",
+                                                   usb_erratum_a007075_off);
+                       if (usb_erratum_a007075_off < 0)
+                               return;
+               }
+               if (has_erratum_a007792()) {
+                       usb_erratum_a007792_off =  fdt_fixup_usb_erratum
+                                                  (blob,
+                                                   "fsl,usb-erratum-a007792",
+                                                   usb_erratum_a007792_off);
+                       if (usb_erratum_a007792_off < 0)
+                               return;
+               }
+       }
+}
+#endif
index 936d006ba414ca2bfea76ac5ab0b0d5dccc944ab..bc7606646bbcf9ac76ab679a8f85405ceaa6d45a 100644 (file)
@@ -910,7 +910,7 @@ ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer,
        }
 
        mdelay(1);
-       len = min3(srclen, le16_to_cpu(req->length), length);
+       len = min3(srclen, (int)le16_to_cpu(req->length), length);
        if (srcptr != NULL && len > 0)
                memcpy(buffer, srcptr, len);
        else
@@ -971,7 +971,6 @@ int usb_lowlevel_init(int index, enum usb_init_type init, void **controller)
        qh_list->qh_link = cpu_to_hc32((uint32_t)qh_list | QH_LINK_TYPE_QH);
        qh_list->qh_endpt1 = cpu_to_hc32(QH_ENDPT1_H(1) |
                                                QH_ENDPT1_EPS(USB_SPEED_HIGH));
-       qh_list->qh_curtd = cpu_to_hc32(QT_NEXT_TERMINATE);
        qh_list->qh_overlay.qt_next = cpu_to_hc32(QT_NEXT_TERMINATE);
        qh_list->qh_overlay.qt_altnext = cpu_to_hc32(QT_NEXT_TERMINATE);
        qh_list->qh_overlay.qt_token =
@@ -1097,6 +1096,7 @@ submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
 }
 
 struct int_queue {
+       int elementsize;
        struct QH *first;
        struct QH *current;
        struct QH *last;
@@ -1154,6 +1154,23 @@ create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
        struct int_queue *result = NULL;
        int i;
 
+       /*
+        * Interrupt transfers requiring several transactions are not supported
+        * because bInterval is ignored.
+        *
+        * Also, ehci_submit_async() relies on wMaxPacketSize being a power of 2
+        * <= PKT_ALIGN if several qTDs are required, while the USB
+        * specification does not constrain this for interrupt transfers. That
+        * means that ehci_submit_async() would support interrupt transfers
+        * requiring several transactions only as long as the transfer size does
+        * not require more than a single qTD.
+        */
+       if (elementsize > usb_maxpacket(dev, pipe)) {
+               printf("%s: xfers requiring several transactions are not supported.\n",
+                      __func__);
+               return NULL;
+       }
+
        debug("Enter create_int_queue\n");
        if (usb_pipetype(pipe) != PIPE_INTERRUPT) {
                debug("non-interrupt pipe (type=%lu)", usb_pipetype(pipe));
@@ -1174,6 +1191,7 @@ create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
                debug("ehci intr queue: out of memory\n");
                goto fail1;
        }
+       result->elementsize = elementsize;
        result->first = memalign(USB_DMA_MINALIGN,
                                 sizeof(struct QH) * queuesize);
        if (!result->first) {
@@ -1249,9 +1267,11 @@ create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
                           ALIGN_END_ADDR(struct qTD, result->tds,
                                          queuesize));
 
-       if (disable_periodic(ctrl) < 0) {
-               debug("FATAL: periodic should never fail, but did");
-               goto fail3;
+       if (ctrl->periodic_schedules > 0) {
+               if (disable_periodic(ctrl) < 0) {
+                       debug("FATAL: periodic should never fail, but did");
+                       goto fail3;
+               }
        }
 
        /* hook up to periodic list */
@@ -1308,13 +1328,18 @@ void *poll_int_queue(struct usb_device *dev, struct int_queue *queue)
                queue->current++;
        else
                queue->current = NULL;
+
+       invalidate_dcache_range((uint32_t)cur->buffer,
+                               ALIGN_END_ADDR(char, cur->buffer,
+                                              queue->elementsize));
+
        debug("Exit poll_int_queue with completed intr transfer. token is %x at %p (first at %p)\n",
              hc32_to_cpu(cur_td->qt_token), cur, queue->first);
        return cur->buffer;
 }
 
 /* Do not free buffers associated with QHs, they're owned by someone else */
-static int
+int
 destroy_int_queue(struct usb_device *dev, struct int_queue *queue)
 {
        struct ehci_ctrl *ctrl = dev->controller;
@@ -1373,24 +1398,9 @@ submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
        debug("dev=%p, pipe=%lu, buffer=%p, length=%d, interval=%d",
              dev, pipe, buffer, length, interval);
 
-       /*
-        * Interrupt transfers requiring several transactions are not supported
-        * because bInterval is ignored.
-        *
-        * Also, ehci_submit_async() relies on wMaxPacketSize being a power of 2
-        * <= PKT_ALIGN if several qTDs are required, while the USB
-        * specification does not constrain this for interrupt transfers. That
-        * means that ehci_submit_async() would support interrupt transfers
-        * requiring several transactions only as long as the transfer size does
-        * not require more than a single qTD.
-        */
-       if (length > usb_maxpacket(dev, pipe)) {
-               printf("%s: Interrupt transfers requiring several "
-                       "transactions are not supported.\n", __func__);
-               return -1;
-       }
-
        queue = create_int_queue(dev, pipe, 1, length, buffer);
+       if (!queue)
+               return -1;
 
        timeout = get_timer(0) + USB_TIMEOUT_MS(pipe);
        while ((backbuffer = poll_int_queue(dev, queue)) == NULL)
@@ -1406,9 +1416,6 @@ submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
                return -EINVAL;
        }
 
-       invalidate_dcache_range((uint32_t)buffer,
-                               ALIGN_END_ADDR(char, buffer, length));
-
        ret = destroy_int_queue(dev, queue);
        if (ret < 0)
                return ret;
index 9ec5a0a53948031a7a5d867dad502c54cac59304..951dd3b25f2cf766df706a4fdbf86366dbff4e05 100644 (file)
@@ -160,7 +160,7 @@ static int usb_phy_enable(int index, struct usb_ehci *ehci)
        val |= (USBPHY_CTRL_ENUTMILEVEL2 | USBPHY_CTRL_ENUTMILEVEL3);
        __raw_writel(val, phy_ctrl);
 
-       return val & USBPHY_CTRL_OTG_ID;
+       return 0;
 }
 
 /* Base address for this IP block is 0x02184800 */
@@ -193,6 +193,28 @@ static void usb_oc_config(int index)
        __raw_writel(val, ctrl);
 }
 
+int usb_phy_mode(int port)
+{
+       void __iomem *phy_reg;
+       void __iomem *phy_ctrl;
+       u32 val;
+
+       phy_reg = (void __iomem *)phy_bases[port];
+       phy_ctrl = (void __iomem *)(phy_reg + USBPHY_CTRL);
+
+       val = __raw_readl(phy_ctrl);
+
+       if (val & USBPHY_CTRL_OTG_ID)
+               return USB_INIT_DEVICE;
+       else
+               return USB_INIT_HOST;
+}
+
+int __weak board_usb_phy_mode(int port)
+{
+       return usb_phy_mode(port);
+}
+
 int __weak board_ehci_hcd_init(int port)
 {
        return 0;
@@ -221,7 +243,8 @@ int ehci_hcd_init(int index, enum usb_init_type init,
        usb_power_config(index);
        usb_oc_config(index);
        usb_internal_phy_clock_gate(index, 1);
-       type = usb_phy_enable(index, ehci) ? USB_INIT_DEVICE : USB_INIT_HOST;
+       usb_phy_enable(index, ehci);
+       type = board_usb_phy_mode(index);
 
        *hccr = (struct ehci_hccr *)((uint32_t)&ehci->caplength);
        *hcor = (struct ehci_hcor *)((uint32_t)*hccr +
index 0d1a726d35ff6e4df02c44791c66257bd089b6db..7fe79efc1776574dba202ec5fc4e737b6d2d9d6b 100644 (file)
 #include "ehci.h"
 
 #if defined(CONFIG_R8A7740)
-static u32 usb_base_address[CONFIG_USB_MAX_CONTROLLER_COUNT] = {
+static u32 usb_base_address[] = {
        0xC6700000
 };
 #elif defined(CONFIG_R8A7790)
-static u32 usb_base_address[CONFIG_USB_MAX_CONTROLLER_COUNT] = {
+static u32 usb_base_address[] = {
        0xEE080000,     /* USB0 (EHCI) */
        0xEE0A0000,     /* USB1 */
        0xEE0C0000,     /* USB2 */
 };
-#elif defined(CONFIG_R8A7791)
-static u32 usb_base_address[CONFIG_USB_MAX_CONTROLLER_COUNT] = {
-       0xEE080000,     /* USB0 (EHCI) */
-       0xEE0C0000,     /* USB1 */
-};
-#elif defined(CONFIG_R8A7794)
-static u32 usb_base_address[CONFIG_USB_MAX_CONTROLLER_COUNT] = {
+#elif defined(CONFIG_R8A7791) || defined(CONFIG_R8A7793) || \
+       defined(CONFIG_R8A7794)
+static u32 usb_base_address[] = {
        0xEE080000,     /* USB0 (EHCI) */
        0xEE0C0000,     /* USB1 */
 };
@@ -57,7 +53,7 @@ int ehci_hcd_stop(int index)
        if (!i)
                printf("error : ehci(%d) reset failed.\n", index);
 
-       if (index == (CONFIG_USB_MAX_CONTROLLER_COUNT - 1))
+       if (index == (ARRAY_SIZE(usb_base_address) - 1))
                setbits_le32(SMSTPCR7, SMSTPCR703);
 
        return 0;
index 23617b7adc131a8770ba8715bccffc04e261eafa..eda9f698d9bc767f1d4a67b48d57d5288a002afa 100644 (file)
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <asm/arch/clock.h>
-#include <asm/gpio.h>
-#include <asm/io.h>
+#include <asm/arch/usbc.h>
 #include <common.h>
 #include "ehci.h"
 
-#define SUNXI_USB1_IO_BASE             0x01c14000
-#define SUNXI_USB2_IO_BASE             0x01c1c000
-
-#define SUNXI_USB_PMU_IRQ_ENABLE       0x800
-#define SUNXI_USB_CSR                  0x01c13404
-#define SUNXI_USB_PASSBY_EN            1
-
-#define SUNXI_EHCI_AHB_ICHR8_EN                (1 << 10)
-#define SUNXI_EHCI_AHB_INCR4_BURST_EN  (1 << 9)
-#define SUNXI_EHCI_AHB_INCRX_ALIGN_EN  (1 << 8)
-#define SUNXI_EHCI_ULPI_BYPASS_EN      (1 << 0)
-
-static struct sunxi_ehci_hcd {
-       struct usb_hcd *hcd;
-       int usb_rst_mask;
-       int ahb_clk_mask;
-       int gpio_vbus;
-       void *csr;
-       int irq;
-       int id;
-} sunxi_echi_hcd[] = {
-       {
-               .usb_rst_mask = CCM_USB_CTRL_PHY1_RST,
-               .ahb_clk_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0,
-               .gpio_vbus = CONFIG_SUNXI_USB_VBUS0_GPIO,
-               .csr = (void *)SUNXI_USB_CSR,
-               .irq = 39,
-               .id = 1,
-       },
-#if (CONFIG_USB_MAX_CONTROLLER_COUNT > 1)
-       {
-               .usb_rst_mask = CCM_USB_CTRL_PHY2_RST,
-               .ahb_clk_mask = 1 << AHB_GATE_OFFSET_USB_EHCI1,
-               .gpio_vbus = CONFIG_SUNXI_USB_VBUS1_GPIO,
-               .csr = (void *)SUNXI_USB_CSR,
-               .irq = 40,
-               .id = 2,
-       }
-#endif
-};
-
-static int enabled_hcd_count;
-
-static void *get_io_base(int hcd_id)
-{
-       if (hcd_id == 1)
-               return (void *)SUNXI_USB1_IO_BASE;
-       else if (hcd_id == 2)
-               return (void *)SUNXI_USB2_IO_BASE;
-       else
-               return NULL;
-}
-
-static void usb_phy_write(struct sunxi_ehci_hcd *sunxi_ehci, int addr,
-                         int data, int len)
-{
-       int j = 0, usbc_bit = 0;
-       void *dest = sunxi_ehci->csr;
-
-       usbc_bit = 1 << (sunxi_ehci->id * 2);
-       for (j = 0; j < len; j++) {
-               /* set the bit address to be written */
-               clrbits_le32(dest, 0xff << 8);
-               setbits_le32(dest, (addr + j) << 8);
-
-               clrbits_le32(dest, usbc_bit);
-               /* set data bit */
-               if (data & 0x1)
-                       setbits_le32(dest, 1 << 7);
-               else
-                       clrbits_le32(dest, 1 << 7);
-
-               setbits_le32(dest, usbc_bit);
-
-               clrbits_le32(dest, usbc_bit);
-
-               data >>= 1;
-       }
-}
-
-static void sunxi_usb_phy_init(struct sunxi_ehci_hcd *sunxi_ehci)
-{
-       /* The following comments are machine
-        * translated from Chinese, you have been warned!
-        */
-
-       /* adjust PHY's magnitude and rate */
-       usb_phy_write(sunxi_ehci, 0x20, 0x14, 5);
-
-       /* threshold adjustment disconnect */
-#ifdef CONFIG_SUN4I
-       usb_phy_write(sunxi_ehci, 0x2a, 3, 2);
-#else
-       usb_phy_write(sunxi_ehci, 0x2a, 2, 2);
-#endif
-
-       return;
-}
-
-static void sunxi_usb_passby(struct sunxi_ehci_hcd *sunxi_ehci, int enable)
-{
-       unsigned long bits = 0;
-       void *addr = get_io_base(sunxi_ehci->id) + SUNXI_USB_PMU_IRQ_ENABLE;
-
-       bits = SUNXI_EHCI_AHB_ICHR8_EN |
-               SUNXI_EHCI_AHB_INCR4_BURST_EN |
-               SUNXI_EHCI_AHB_INCRX_ALIGN_EN |
-               SUNXI_EHCI_ULPI_BYPASS_EN;
-
-       if (enable)
-               setbits_le32(addr, bits);
-       else
-               clrbits_le32(addr, bits);
-
-       return;
-}
-
-static void sunxi_ehci_enable(struct sunxi_ehci_hcd *sunxi_ehci)
-{
-       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
-
-       setbits_le32(&ccm->usb_clk_cfg, sunxi_ehci->usb_rst_mask);
-       setbits_le32(&ccm->ahb_gate0, sunxi_ehci->ahb_clk_mask);
-
-       sunxi_usb_phy_init(sunxi_ehci);
-
-       sunxi_usb_passby(sunxi_ehci, SUNXI_USB_PASSBY_EN);
-
-       gpio_direction_output(sunxi_ehci->gpio_vbus, 1);
-}
-
-static void sunxi_ehci_disable(struct sunxi_ehci_hcd *sunxi_ehci)
-{
-       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
-
-       gpio_direction_output(sunxi_ehci->gpio_vbus, 0);
-
-       sunxi_usb_passby(sunxi_ehci, !SUNXI_USB_PASSBY_EN);
-
-       clrbits_le32(&ccm->ahb_gate0, sunxi_ehci->ahb_clk_mask);
-       clrbits_le32(&ccm->usb_clk_cfg, sunxi_ehci->usb_rst_mask);
-}
-
 int ehci_hcd_init(int index, enum usb_init_type init, struct ehci_hccr **hccr,
                struct ehci_hcor **hcor)
 {
-       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
-       struct sunxi_ehci_hcd *sunxi_ehci = &sunxi_echi_hcd[index];
+       int err;
 
-       /* enable common PHY only once */
-       if (index == 0)
-               setbits_le32(&ccm->usb_clk_cfg, CCM_USB_CTRL_PHYGATE);
+       err = sunxi_usbc_request_resources(index + 1);
+       if (err)
+               return err;
 
-       sunxi_ehci_enable(sunxi_ehci);
+       sunxi_usbc_enable(index + 1);
+       sunxi_usbc_vbus_enable(index + 1);
 
-       *hccr = get_io_base(sunxi_ehci->id);
+       *hccr = sunxi_usbc_get_io_base(index + 1);
 
        *hcor = (struct ehci_hcor *)((uint32_t) *hccr
                                + HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
@@ -179,23 +34,13 @@ int ehci_hcd_init(int index, enum usb_init_type init, struct ehci_hccr **hccr,
              (uint32_t)*hccr, (uint32_t)*hcor,
              (uint32_t)HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
 
-       enabled_hcd_count++;
-
        return 0;
 }
 
 int ehci_hcd_stop(int index)
 {
-       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
-       struct sunxi_ehci_hcd *sunxi_ehci = &sunxi_echi_hcd[index];
-
-       sunxi_ehci_disable(sunxi_ehci);
-
-       /* disable common PHY only once, for the last enabled hcd */
-       if (enabled_hcd_count == 1)
-               clrbits_le32(&ccm->usb_clk_cfg, CCM_USB_CTRL_PHYGATE);
+       sunxi_usbc_vbus_disable(index + 1);
+       sunxi_usbc_disable(index + 1);
 
-       enabled_hcd_count--;
-
-       return 0;
+       return sunxi_usbc_free_resources(index + 1);
 }
diff --git a/drivers/usb/host/ehci-uniphier.c b/drivers/usb/host/ehci-uniphier.c
new file mode 100644 (file)
index 0000000..32a4375
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2014 Panasonic Corporation
+ *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <usb.h>
+#include <asm/arch/ehci-uniphier.h>
+#include "ehci.h"
+
+#ifdef CONFIG_OF_CONTROL
+#include <fdtdec.h>
+DECLARE_GLOBAL_DATA_PTR;
+
+#define FDT            gd->fdt_blob
+#define COMPAT         "panasonic,uniphier-ehci"
+
+static int get_uniphier_ehci_base(int index, struct ehci_hccr **base)
+{
+       int offset;
+
+       for (offset = fdt_node_offset_by_compatible(FDT, 0, COMPAT);
+            offset >= 0;
+            offset = fdt_node_offset_by_compatible(FDT, offset, COMPAT)) {
+               if (index == 0) {
+                       *base = (struct ehci_hccr *)
+                                       fdtdec_get_addr(FDT, offset, "reg");
+                       return 0;
+               }
+               index--;
+       }
+
+       return -ENODEV; /* not found */
+}
+#else
+static int get_uniphier_ehci_base(int index, struct ehci_hccr **base)
+{
+       *base = (struct ehci_hccr *)uniphier_ehci_platdata[index].base;
+       return 0;
+}
+#endif
+
+/*
+ * Create the appropriate control structures to manage
+ * a new EHCI host controller.
+ */
+int ehci_hcd_init(int index, enum usb_init_type init, struct ehci_hccr **hccr,
+                 struct ehci_hcor **hcor)
+{
+       int ret;
+       struct ehci_hccr *cr;
+       struct ehci_hcor *or;
+
+       uniphier_ehci_reset(index, 0);
+
+       ret = get_uniphier_ehci_base(index, &cr);
+       if (ret < 0)
+               return ret;
+       or = (void *)cr + HC_LENGTH(ehci_readl(&cr->cr_capbase));
+
+       *hccr = cr;
+       *hcor = or;
+
+       return 0;
+}
+
+int ehci_hcd_stop(int index)
+{
+       uniphier_ehci_reset(index, 1);
+
+       return 0;
+}
index 433e703da82b16bdb3d9334e0286ffc4e5275654..79aecd414e08c6d81f36cafb3fbcea91efd43fc5 100644 (file)
@@ -47,9 +47,9 @@ struct ehci_hcor {
        uint32_t or_usbcmd;
 #define CMD_PARK       (1 << 11)               /* enable "park" */
 #define CMD_PARK_CNT(c)        (((c) >> 8) & 3)        /* how many transfers to park */
-#define CMD_ASE                (1 << 5)                /* async schedule enable */
 #define CMD_LRESET     (1 << 7)                /* partial reset */
-#define CMD_IAAD       (1 << 5)                /* "doorbell" interrupt */
+#define CMD_IAAD       (1 << 6)                /* "doorbell" interrupt */
+#define CMD_ASE                (1 << 5)                /* async schedule enable */
 #define CMD_PSE                (1 << 4)                /* periodic schedule enable */
 #define CMD_RESET      (1 << 1)                /* reset HC not bus */
 #define CMD_RUN                (1 << 0)                /* start/stop HC */
index 46e4cee1d04c9dd3af28bdaa09b121f11e056719..0556f328e459b7d23b95b20a260b56c0a74ad33a 100644 (file)
@@ -103,12 +103,6 @@ static int rh_devnum;              /* address of Root Hub endpoint */
 
 /* ------------------------------------------------------------------------- */
 
-#define ALIGN(x,a)     (((x)+(a)-1UL)&~((a)-1UL))
-#define min_t(type,x,y)        \
-       ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; })
-
-/* ------------------------------------------------------------------------- */
-
 static int isp116x_reset(struct isp116x *isp116x);
 
 /* --- Debugging functions ------------------------------------------------- */
index dc0a4e31796356d818aa959acf52bf49ee002eae..97a7edeb53998713985a626faac565779d89b985 100644 (file)
@@ -47,7 +47,7 @@
 #include <asm/arch/hardware.h> /* needed for AT91_USB_HOST_BASE */
 #endif
 
-#if defined(CONFIG_ARM920T) || \
+#if defined(CONFIG_CPU_ARM920T) || \
     defined(CONFIG_S3C24X0) || \
     defined(CONFIG_440EP) || \
     defined(CONFIG_PCI_OHCI) || \
@@ -65,9 +65,6 @@
 #define OHCI_CONTROL_INIT \
        (OHCI_CTRL_CBSR & 0x3) | OHCI_CTRL_IE | OHCI_CTRL_PLE
 
-#define min_t(type, x, y) \
-                   ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
-
 #ifdef CONFIG_PCI_OHCI
 static struct pci_device_id ohci_pci_ids[] = {
        {0x10b9, 0x5237},       /* ULI1575 PCI OHCI module ids */
index 3c659c60c97a5893309c3861ff75a06d1aefa2a8..8bb2275c09473a6e9a8e15486ea44e9849d05633 100644 (file)
@@ -35,9 +35,6 @@
 #define        OHCI_CONTROL_INIT \
        (OHCI_CTRL_CBSR & 0x3) | OHCI_CTRL_IE | OHCI_CTRL_PLE
 
-#define min_t(type, x, y) \
-       ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; })
-
 #undef DEBUG
 #ifdef DEBUG
 #define dbg(format, arg...) printf("DEBUG: " format "\n", ## arg)
index 511454479b109d3f303116e910b6d6722582d0bf..6f33456c90d0130fe6be40e2265bf21954a6e050 100644 (file)
@@ -550,9 +550,6 @@ static int check_usb_device_connecting(struct r8a66597 *r8a66597)
        return -1;      /* fail */
 }
 
-/* based on usb_ohci.c */
-#define min_t(type, x, y) \
-               ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; })
 /*-------------------------------------------------------------------------*
  * Virtual Root Hub
  *-------------------------------------------------------------------------*/
index 19c3ec62118d95c77957679de5cca93368ab24a3..b5aade988d484691d61065de2af4040e8739ed53 100644 (file)
@@ -511,7 +511,7 @@ static void record_transfer_result(struct usb_device *udev,
                                   union xhci_trb *event, int length)
 {
        udev->act_len = min(length, length -
-               EVENT_TRB_LEN(le32_to_cpu(event->trans_event.transfer_len)));
+               (int)EVENT_TRB_LEN(le32_to_cpu(event->trans_event.transfer_len)));
 
        switch (GET_COMP_CODE(le32_to_cpu(event->trans_event.transfer_len))) {
        case COMP_SUCCESS:
index 59dc096b0c3200c14c6cc39e9465c9af8e4b7578..87f2972cb266593fd6001c6be8aa9aefa37cfd97 100644 (file)
@@ -829,7 +829,7 @@ static int xhci_submit_root(struct usb_device *udev, unsigned long pipe,
        debug("scrlen = %d\n req->length = %d\n",
                srclen, le16_to_cpu(req->length));
 
-       len = min(srclen, le16_to_cpu(req->length));
+       len = min(srclen, (int)le16_to_cpu(req->length));
 
        if (srcptr != NULL && len > 0)
                memcpy(buffer, srcptr, len);
index 02b9adcbe4efb8d813654741de318b4bc7c31e0d..0c8e75d46c1e0b1a493eefe2807ac9173b874dcc 100644 (file)
@@ -37,9 +37,6 @@ extern unsigned char new[];
        ((readb(&musbr->power) & MUSB_POWER_HSMODE) \
                >> MUSB_POWER_HSMODE_SHIFT)
 
-#define min_t(type, x, y)      \
-       ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; })
-
 /* USB HUB CONSTANTS (not OHCI-specific; see hub.h) */
 
 /* destination of request */
index f78d53296685e49b6c7b51cb950ba76385bdf501..52a3664b99ba43d862e57552c1d1db663a09c031 100644 (file)
@@ -118,7 +118,6 @@ void usb_phy_power(int on)
 void omap_usb3_phy_init(struct omap_usb3_phy *phy_regs)
 {
        omap_usb_dpll_lock(phy_regs);
-
        usb3_phy_partial_powerup(phy_regs);
        /*
         * Give enough time for the PHY to partially power-up before
@@ -126,7 +125,6 @@ void omap_usb3_phy_init(struct omap_usb3_phy *phy_regs)
         * team.
         */
        mdelay(100);
-       usb3_phy_power(1);
 }
 
 static void omap_enable_usb3_phy(struct omap_xhci *omap)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fdbf3f64f28fee2479ab7dca441508858b430f1e 100644 (file)
@@ -0,0 +1,8 @@
+config VIDEO_X86
+       bool "Enable x86 video driver support"
+       depends on X86
+       default n
+       help
+         Turn on this option to enable a very simple driver which uses vesa
+         to discover the video mode and then provides a frame buffer for use
+         by U-Boot.
index 14a6781edca17c9bd830c6b714a081b133030d80..42b1eaaf760c9323210dfabf2a0ca939d3c04e28 100644 (file)
@@ -39,8 +39,10 @@ obj-$(CONFIG_VIDEO_SANDBOX_SDL) += sandbox_sdl.o
 obj-$(CONFIG_VIDEO_SED13806) += sed13806.o
 obj-$(CONFIG_VIDEO_SM501) += sm501.o
 obj-$(CONFIG_VIDEO_SMI_LYNXEM) += smiLynxEM.o videomodes.o
+obj-$(CONFIG_VIDEO_SUNXI) += sunxi_display.o videomodes.o
 obj-$(CONFIG_VIDEO_TEGRA) += tegra.o
 obj-$(CONFIG_VIDEO_VCXK) += bus_vcxk.o
+obj-$(CONFIG_VIDEO_X86) += x86_fb.o
 obj-$(CONFIG_FORMIKE) += formike.o
 obj-$(CONFIG_AM335X_LCD) += am335x-fb.o
 obj-$(CONFIG_VIDEO_PARADE) += parade.o
index 38d2eb107ecd15c2d245968da5b920e551842492..574895155d1053cc9d87cb942b9d4821c60c98b2 100644 (file)
@@ -19,6 +19,7 @@
 #include <common.h>
 
 #include <command.h>
+#include <bios_emul.h>
 #include <pci.h>
 #include <asm/processor.h>
 #include <asm/errno.h>
 #define DPRINT(x...) do{}while(0)
 #endif
 
-#ifndef min_t
-#define min_t(type,x,y) \
-       ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
-#endif
-
 #define MAX_MAPPED_VRAM        (2048*2048*4)
 #define MIN_MAPPED_VRAM        (1024*768*1)
 
@@ -549,7 +545,6 @@ void radeon_setmode_9200(int vesa_idx, int bpp)
 }
 
 #include "../bios_emulator/include/biosemu.h"
-extern int BootVideoCardBIOS(pci_dev_t pcidev, BE_VGAInfo ** pVGAInfo, int cleanUp);
 
 int radeon_probe(struct radeonfb_info *rinfo)
 {
index 6aa50cb4f966c70d3495ea5588db8b42bb40bcd7..a653bb4168551b78272f8f4f6ee087d63c7fec4b 100644 (file)
@@ -1160,10 +1160,19 @@ static void video_putc(struct stdio_dev *dev, const char c)
 
 static void video_puts(struct stdio_dev *dev, const char *s)
 {
+       int flush = cfb_do_flush_cache;
        int count = strlen(s);
 
+       /* temporarily disable cache flush */
+       cfb_do_flush_cache = 0;
+
        while (count--)
                video_putc(dev, *s++);
+
+       if (flush) {
+               cfb_do_flush_cache = flush;
+               flush_cache(VIDEO_FB_ADRS, VIDEO_SIZE);
+       }
 }
 
 /*
@@ -1532,14 +1541,14 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
 
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
        if (x == BMP_ALIGN_CENTER)
-               x = max(0, (VIDEO_VISIBLE_COLS - width) / 2);
+               x = max(0, (int)(VIDEO_VISIBLE_COLS - width) / 2);
        else if (x < 0)
-               x = max(0, VIDEO_VISIBLE_COLS - width + x + 1);
+               x = max(0, (int)(VIDEO_VISIBLE_COLS - width + x + 1));
 
        if (y == BMP_ALIGN_CENTER)
-               y = max(0, (VIDEO_VISIBLE_ROWS - height) / 2);
+               y = max(0, (int)(VIDEO_VISIBLE_ROWS - height) / 2);
        else if (y < 0)
-               y = max(0, VIDEO_VISIBLE_ROWS - height + y + 1);
+               y = max(0, (int)(VIDEO_VISIBLE_ROWS - height + y + 1));
 #endif /* CONFIG_SPLASH_SCREEN_ALIGN */
 
        /*
@@ -1865,14 +1874,14 @@ static void plot_logo_or_black(void *screen, int width, int x, int y, int black)
 
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
        if (x == BMP_ALIGN_CENTER)
-               x = max(0, (VIDEO_VISIBLE_COLS - VIDEO_LOGO_WIDTH) / 2);
+               x = max(0, (int)(VIDEO_VISIBLE_COLS - VIDEO_LOGO_WIDTH) / 2);
        else if (x < 0)
-               x = max(0, VIDEO_VISIBLE_COLS - VIDEO_LOGO_WIDTH + x + 1);
+               x = max(0, (int)(VIDEO_VISIBLE_COLS - VIDEO_LOGO_WIDTH + x + 1));
 
        if (y == BMP_ALIGN_CENTER)
-               y = max(0, (VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT) / 2);
+               y = max(0, (int)(VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT) / 2);
        else if (y < 0)
-               y = max(0, VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT + y + 1);
+               y = max(0, (int)(VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT + y + 1));
 #endif /* CONFIG_SPLASH_SCREEN_ALIGN */
 
        dest = (unsigned char *)screen + (y * width  + x) * VIDEO_PIXEL_SIZE;
@@ -2019,7 +2028,7 @@ static void *video_logo(void)
                 * we need to adjust the logo height
                 */
                if (video_logo_ypos == BMP_ALIGN_CENTER)
-                       video_logo_height += max(0, (VIDEO_VISIBLE_ROWS - \
+                       video_logo_height += max(0, (int)(VIDEO_VISIBLE_ROWS -
                                                     VIDEO_LOGO_HEIGHT) / 2);
                else if (video_logo_ypos > 0)
                        video_logo_height += video_logo_ypos;
index 2bc3ceb418bdf3c12aae70b280ea723777608502..50eed89d0925e51e7bb231c7652880697b992019 100644 (file)
@@ -412,59 +412,6 @@ void lcd_enable (void)
        /* Enable the LCD panel */
        immr->im_siu_conf.sc_sdcr |= (1 << (31 - 25));          /* LAM = 1 */
        lcdp->lcd_lccr |= LCCR_PON;
-
-#if defined(CONFIG_LWMON)
-    {  uchar c = pic_read (0x60);
-#if defined(CONFIG_LCD) && defined(CONFIG_LWMON) && (CONFIG_POST & CONFIG_SYS_POST_SYSMON)
-       /* Enable LCD later in sysmon test, only if temperature is OK */
-#else
-       c |= 0x07;      /* Power on CCFL, Enable CCFL, Chip Enable LCD */
-#endif
-       pic_write (0x60, c);
-    }
-#endif /* CONFIG_LWMON */
-
-#if defined(CONFIG_R360MPI)
-    {
-       extern void r360_i2c_lcd_write (uchar data0, uchar data1);
-       unsigned long bgi, ctr;
-       char *p;
-
-       if ((p = getenv("lcdbgi")) != NULL) {
-               bgi = simple_strtoul (p, 0, 10) & 0xFFF;
-       } else {
-               bgi = 0xFFF;
-       }
-
-       if ((p = getenv("lcdctr")) != NULL) {
-               ctr = simple_strtoul (p, 0, 10) & 0xFFF;
-       } else {
-               ctr=0x7FF;
-       }
-
-       r360_i2c_lcd_write(0x10, 0x01);
-       r360_i2c_lcd_write(0x20, 0x01);
-       r360_i2c_lcd_write(0x30 | ((bgi>>8) & 0xF), bgi & 0xFF);
-       r360_i2c_lcd_write(0x40 | ((ctr>>8) & 0xF), ctr & 0xFF);
-    }
-#endif /* CONFIG_R360MPI */
-#ifdef CONFIG_RRVISION
-       debug ("PC4->Output(1): enable LVDS\n");
-       debug ("PC5->Output(0): disable PAL clock\n");
-       immr->im_ioport.iop_pddir |=  0x1000;
-       immr->im_ioport.iop_pcpar &= ~(0x0C00);
-       immr->im_ioport.iop_pcdir |=   0x0C00 ;
-       immr->im_ioport.iop_pcdat |=   0x0800 ;
-       immr->im_ioport.iop_pcdat &= ~(0x0400);
-       debug ("PDPAR=0x%04X PDDIR=0x%04X PDDAT=0x%04X\n",
-              immr->im_ioport.iop_pdpar,
-              immr->im_ioport.iop_pddir,
-              immr->im_ioport.iop_pddat);
-       debug ("PCPAR=0x%04X PCDIR=0x%04X PCDAT=0x%04X\n",
-              immr->im_ioport.iop_pcpar,
-              immr->im_ioport.iop_pcdir,
-              immr->im_ioport.iop_pcdat);
-#endif
 }
 
 /************************************************************************/
index 614bcb3c92c2948f47184640d08d285d0148f181..1880cccac2618b816fb650ae0c744acd3a5943c7 100644 (file)
@@ -131,9 +131,6 @@ static char SMI_PCR [] = {
 };
 static char SMI_MCR[] = {
        0x60, 0x01, 0x61, 0x00,
-#ifdef CONFIG_HMI1001
-       0x62, 0x74, /* Memory type is not configured by pins on HMI1001 */
-#endif
 };
 
 static char SMI_HCR[] = {
diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
new file mode 100644 (file)
index 0000000..d92dfa8
--- /dev/null
@@ -0,0 +1,1074 @@
+/*
+ * Display driver for Allwinner SoCs.
+ *
+ * (C) Copyright 2013-2014 Luc Verhaegen <libv@skynet.be>
+ * (C) Copyright 2014 Hans de Goede <hdegoede@redhat.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+
+#include <asm/arch/clock.h>
+#include <asm/arch/display.h>
+#include <asm/arch/gpio.h>
+#include <asm/global_data.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <fdt_support.h>
+#include <video_fb.h>
+#include "videomodes.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+enum sunxi_monitor {
+       sunxi_monitor_none,
+       sunxi_monitor_dvi,
+       sunxi_monitor_hdmi,
+       sunxi_monitor_lcd,
+       sunxi_monitor_vga,
+};
+#define SUNXI_MONITOR_LAST sunxi_monitor_vga
+
+struct sunxi_display {
+       GraphicDevice graphic_device;
+       enum sunxi_monitor monitor;
+       unsigned int depth;
+} sunxi_display;
+
+#ifdef CONFIG_VIDEO_HDMI
+
+/*
+ * Wait up to 200ms for value to be set in given part of reg.
+ */
+static int await_completion(u32 *reg, u32 mask, u32 val)
+{
+       unsigned long tmo = timer_get_us() + 200000;
+
+       while ((readl(reg) & mask) != val) {
+               if (timer_get_us() > tmo) {
+                       printf("DDC: timeout reading EDID\n");
+                       return -ETIME;
+               }
+       }
+       return 0;
+}
+
+static int sunxi_hdmi_hpd_detect(int hpd_delay)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+       unsigned long tmo = timer_get_us() + hpd_delay * 1000;
+
+       /* Set pll3 to 300MHz */
+       clock_set_pll3(300000000);
+
+       /* Set hdmi parent to pll3 */
+       clrsetbits_le32(&ccm->hdmi_clk_cfg, CCM_HDMI_CTRL_PLL_MASK,
+                       CCM_HDMI_CTRL_PLL3);
+
+       /* Set ahb gating to pass */
+#ifdef CONFIG_MACH_SUN6I
+       setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_HDMI);
+#endif
+       setbits_le32(&ccm->ahb_gate1, 1 << AHB_GATE_OFFSET_HDMI);
+
+       /* Clock on */
+       setbits_le32(&ccm->hdmi_clk_cfg, CCM_HDMI_CTRL_GATE);
+
+       writel(SUNXI_HDMI_CTRL_ENABLE, &hdmi->ctrl);
+       writel(SUNXI_HDMI_PAD_CTRL0_HDP, &hdmi->pad_ctrl0);
+
+       while (timer_get_us() < tmo) {
+               if (readl(&hdmi->hpd) & SUNXI_HDMI_HPD_DETECT)
+                       return 1;
+       }
+
+       return 0;
+}
+
+static void sunxi_hdmi_shutdown(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+
+       clrbits_le32(&hdmi->ctrl, SUNXI_HDMI_CTRL_ENABLE);
+       clrbits_le32(&ccm->hdmi_clk_cfg, CCM_HDMI_CTRL_GATE);
+       clrbits_le32(&ccm->ahb_gate1, 1 << AHB_GATE_OFFSET_HDMI);
+#ifdef CONFIG_MACH_SUN6I
+       clrbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_HDMI);
+#endif
+       clock_set_pll3(0);
+}
+
+static int sunxi_hdmi_ddc_do_command(u32 cmnd, int offset, int n)
+{
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+
+       setbits_le32(&hdmi->ddc_fifo_ctrl, SUNXI_HDMI_DDC_FIFO_CTRL_CLEAR);
+       writel(SUNXI_HMDI_DDC_ADDR_EDDC_SEGMENT(offset >> 8) |
+              SUNXI_HMDI_DDC_ADDR_EDDC_ADDR |
+              SUNXI_HMDI_DDC_ADDR_OFFSET(offset) |
+              SUNXI_HMDI_DDC_ADDR_SLAVE_ADDR, &hdmi->ddc_addr);
+#ifndef CONFIG_MACH_SUN6I
+       writel(n, &hdmi->ddc_byte_count);
+       writel(cmnd, &hdmi->ddc_cmnd);
+#else
+       writel(n << 16 | cmnd, &hdmi->ddc_cmnd);
+#endif
+       setbits_le32(&hdmi->ddc_ctrl, SUNXI_HMDI_DDC_CTRL_START);
+
+       return await_completion(&hdmi->ddc_ctrl, SUNXI_HMDI_DDC_CTRL_START, 0);
+}
+
+static int sunxi_hdmi_ddc_read(int offset, u8 *buf, int count)
+{
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+       int i, n;
+
+       while (count > 0) {
+               if (count > 16)
+                       n = 16;
+               else
+                       n = count;
+
+               if (sunxi_hdmi_ddc_do_command(
+                               SUNXI_HDMI_DDC_CMND_EXPLICIT_EDDC_READ,
+                               offset, n))
+                       return -ETIME;
+
+               for (i = 0; i < n; i++)
+                       *buf++ = readb(&hdmi->ddc_fifo_data);
+
+               offset += n;
+               count -= n;
+       }
+
+       return 0;
+}
+
+static int sunxi_hdmi_edid_get_block(int block, u8 *buf)
+{
+       int r, retries = 2;
+
+       do {
+               r = sunxi_hdmi_ddc_read(block * 128, buf, 128);
+               if (r)
+                       continue;
+               r = edid_check_checksum(buf);
+               if (r) {
+                       printf("EDID block %d: checksum error%s\n",
+                              block, retries ? ", retrying" : "");
+               }
+       } while (r && retries--);
+
+       return r;
+}
+
+static int sunxi_hdmi_edid_get_mode(struct ctfb_res_modes *mode)
+{
+       struct edid1_info edid1;
+       struct edid_cea861_info cea681[4];
+       struct edid_detailed_timing *t =
+               (struct edid_detailed_timing *)edid1.monitor_details.timing;
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       int i, r, ext_blocks = 0;
+
+       /* SUNXI_HDMI_CTRL_ENABLE & PAD_CTRL0 are already set by hpd_detect */
+       writel(SUNXI_HDMI_PAD_CTRL1 | SUNXI_HDMI_PAD_CTRL1_HALVE,
+              &hdmi->pad_ctrl1);
+       writel(SUNXI_HDMI_PLL_CTRL | SUNXI_HDMI_PLL_CTRL_DIV(15),
+              &hdmi->pll_ctrl);
+       writel(SUNXI_HDMI_PLL_DBG0_PLL3, &hdmi->pll_dbg0);
+
+       /* Reset i2c controller */
+       setbits_le32(&ccm->hdmi_clk_cfg, CCM_HDMI_CTRL_DDC_GATE);
+       writel(SUNXI_HMDI_DDC_CTRL_ENABLE |
+              SUNXI_HMDI_DDC_CTRL_SDA_ENABLE |
+              SUNXI_HMDI_DDC_CTRL_SCL_ENABLE |
+              SUNXI_HMDI_DDC_CTRL_RESET, &hdmi->ddc_ctrl);
+       if (await_completion(&hdmi->ddc_ctrl, SUNXI_HMDI_DDC_CTRL_RESET, 0))
+               return -EIO;
+
+       writel(SUNXI_HDMI_DDC_CLOCK, &hdmi->ddc_clock);
+#ifndef CONFIG_MACH_SUN6I
+       writel(SUNXI_HMDI_DDC_LINE_CTRL_SDA_ENABLE |
+              SUNXI_HMDI_DDC_LINE_CTRL_SCL_ENABLE, &hdmi->ddc_line_ctrl);
+#endif
+
+       r = sunxi_hdmi_edid_get_block(0, (u8 *)&edid1);
+       if (r == 0) {
+               r = edid_check_info(&edid1);
+               if (r) {
+                       printf("EDID: invalid EDID data\n");
+                       r = -EINVAL;
+               }
+       }
+       if (r == 0) {
+               ext_blocks = edid1.extension_flag;
+               if (ext_blocks > 4)
+                       ext_blocks = 4;
+               for (i = 0; i < ext_blocks; i++) {
+                       if (sunxi_hdmi_edid_get_block(1 + i,
+                                               (u8 *)&cea681[i]) != 0) {
+                               ext_blocks = i;
+                               break;
+                       }
+               }
+       }
+
+       /* Disable DDC engine, no longer needed */
+       clrbits_le32(&hdmi->ddc_ctrl, SUNXI_HMDI_DDC_CTRL_ENABLE);
+       clrbits_le32(&ccm->hdmi_clk_cfg, CCM_HDMI_CTRL_DDC_GATE);
+
+       if (r)
+               return r;
+
+       /* We want version 1.3 or 1.2 with detailed timing info */
+       if (edid1.version != 1 || (edid1.revision < 3 &&
+                       !EDID1_INFO_FEATURE_PREFERRED_TIMING_MODE(edid1))) {
+               printf("EDID: unsupported version %d.%d\n",
+                      edid1.version, edid1.revision);
+               return -EINVAL;
+       }
+
+       /* Take the first usable detailed timing */
+       for (i = 0; i < 4; i++, t++) {
+               r = video_edid_dtd_to_ctfb_res_modes(t, mode);
+               if (r == 0)
+                       break;
+       }
+       if (i == 4) {
+               printf("EDID: no usable detailed timing found\n");
+               return -ENOENT;
+       }
+
+       /* Check for basic audio support, if found enable hdmi output */
+       sunxi_display.monitor = sunxi_monitor_dvi;
+       for (i = 0; i < ext_blocks; i++) {
+               if (cea681[i].extension_tag != EDID_CEA861_EXTENSION_TAG ||
+                   cea681[i].revision < 2)
+                       continue;
+
+               if (EDID_CEA861_SUPPORTS_BASIC_AUDIO(cea681[i]))
+                       sunxi_display.monitor = sunxi_monitor_hdmi;
+       }
+
+       return 0;
+}
+
+#endif /* CONFIG_VIDEO_HDMI */
+
+/*
+ * This is the entity that mixes and matches the different layers and inputs.
+ * Allwinner calls it the back-end, but i like composer better.
+ */
+static void sunxi_composer_init(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       struct sunxi_de_be_reg * const de_be =
+               (struct sunxi_de_be_reg *)SUNXI_DE_BE0_BASE;
+       int i;
+
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+       /* Reset off */
+       setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_DE_BE0);
+#endif
+
+       /* Clocks on */
+       setbits_le32(&ccm->ahb_gate1, 1 << AHB_GATE_OFFSET_DE_BE0);
+       setbits_le32(&ccm->dram_clk_gate, 1 << CCM_DRAM_GATE_OFFSET_DE_BE0);
+       clock_set_de_mod_clock(&ccm->be0_clk_cfg, 300000000);
+
+       /* Engine bug, clear registers after reset */
+       for (i = 0x0800; i < 0x1000; i += 4)
+               writel(0, SUNXI_DE_BE0_BASE + i);
+
+       setbits_le32(&de_be->mode, SUNXI_DE_BE_MODE_ENABLE);
+}
+
+static void sunxi_composer_mode_set(const struct ctfb_res_modes *mode,
+                                   unsigned int address)
+{
+       struct sunxi_de_be_reg * const de_be =
+               (struct sunxi_de_be_reg *)SUNXI_DE_BE0_BASE;
+
+       writel(SUNXI_DE_BE_HEIGHT(mode->yres) | SUNXI_DE_BE_WIDTH(mode->xres),
+              &de_be->disp_size);
+       writel(SUNXI_DE_BE_HEIGHT(mode->yres) | SUNXI_DE_BE_WIDTH(mode->xres),
+              &de_be->layer0_size);
+       writel(SUNXI_DE_BE_LAYER_STRIDE(mode->xres), &de_be->layer0_stride);
+       writel(address << 3, &de_be->layer0_addr_low32b);
+       writel(address >> 29, &de_be->layer0_addr_high4b);
+       writel(SUNXI_DE_BE_LAYER_ATTR1_FMT_XRGB8888, &de_be->layer0_attr1_ctrl);
+
+       setbits_le32(&de_be->mode, SUNXI_DE_BE_MODE_LAYER0_ENABLE);
+}
+
+static void sunxi_composer_enable(void)
+{
+       struct sunxi_de_be_reg * const de_be =
+               (struct sunxi_de_be_reg *)SUNXI_DE_BE0_BASE;
+
+       setbits_le32(&de_be->reg_ctrl, SUNXI_DE_BE_REG_CTRL_LOAD_REGS);
+       setbits_le32(&de_be->mode, SUNXI_DE_BE_MODE_START);
+}
+
+/*
+ * LCDC, what allwinner calls a CRTC, so timing controller and serializer.
+ */
+static void sunxi_lcdc_pll_set(int tcon, int dotclock,
+                              int *clk_div, int *clk_double)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       int value, n, m, min_m, max_m, diff;
+       int best_n = 0, best_m = 0, best_diff = 0x0FFFFFFF;
+       int best_double = 0;
+
+       if (tcon == 0) {
+#ifdef CONFIG_VIDEO_LCD_IF_PARALLEL
+               min_m = 6;
+               max_m = 127;
+#endif
+#ifdef CONFIG_VIDEO_LCD_IF_LVDS
+               min_m = max_m = 7;
+#endif
+       } else {
+               min_m = 1;
+               max_m = 15;
+       }
+
+       /*
+        * Find the lowest divider resulting in a matching clock, if there
+        * is no match, pick the closest lower clock, as monitors tend to
+        * not sync to higher frequencies.
+        */
+       for (m = min_m; m <= max_m; m++) {
+               n = (m * dotclock) / 3000;
+
+               if ((n >= 9) && (n <= 127)) {
+                       value = (3000 * n) / m;
+                       diff = dotclock - value;
+                       if (diff < best_diff) {
+                               best_diff = diff;
+                               best_m = m;
+                               best_n = n;
+                               best_double = 0;
+                       }
+               }
+
+               /* These are just duplicates */
+               if (!(m & 1))
+                       continue;
+
+               n = (m * dotclock) / 6000;
+               if ((n >= 9) && (n <= 127)) {
+                       value = (6000 * n) / m;
+                       diff = dotclock - value;
+                       if (diff < best_diff) {
+                               best_diff = diff;
+                               best_m = m;
+                               best_n = n;
+                               best_double = 1;
+                       }
+               }
+       }
+
+       debug("dotclock: %dkHz = %dkHz: (%d * 3MHz * %d) / %d\n",
+             dotclock, (best_double + 1) * 3000 * best_n / best_m,
+             best_double + 1, best_n, best_m);
+
+       clock_set_pll3(best_n * 3000000);
+
+       if (tcon == 0) {
+               writel(CCM_LCD_CH0_CTRL_GATE | CCM_LCD_CH0_CTRL_RST |
+                      (best_double ? CCM_LCD_CH0_CTRL_PLL3_2X :
+                                     CCM_LCD_CH0_CTRL_PLL3),
+                      &ccm->lcd0_ch0_clk_cfg);
+       } else {
+               writel(CCM_LCD_CH1_CTRL_GATE |
+                      (best_double ? CCM_LCD_CH1_CTRL_PLL3_2X :
+                                     CCM_LCD_CH1_CTRL_PLL3) |
+                      CCM_LCD_CH1_CTRL_M(best_m), &ccm->lcd0_ch1_clk_cfg);
+       }
+
+       *clk_div = best_m;
+       *clk_double = best_double;
+}
+
+static void sunxi_lcdc_init(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       struct sunxi_lcdc_reg * const lcdc =
+               (struct sunxi_lcdc_reg *)SUNXI_LCD0_BASE;
+
+       /* Reset off */
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+       setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_LCD0);
+#else
+       setbits_le32(&ccm->lcd0_ch0_clk_cfg, CCM_LCD_CH0_CTRL_RST);
+#endif
+
+       /* Clock on */
+       setbits_le32(&ccm->ahb_gate1, 1 << AHB_GATE_OFFSET_LCD0);
+#ifdef CONFIG_VIDEO_LCD_IF_LVDS
+       setbits_le32(&ccm->lvds_clk_cfg, CCM_LVDS_CTRL_RST);
+#endif
+
+       /* Init lcdc */
+       writel(0, &lcdc->ctrl); /* Disable tcon */
+       writel(0, &lcdc->int0); /* Disable all interrupts */
+
+       /* Disable tcon0 dot clock */
+       clrbits_le32(&lcdc->tcon0_dclk, SUNXI_LCDC_TCON0_DCLK_ENABLE);
+
+       /* Set all io lines to tristate */
+       writel(0xffffffff, &lcdc->tcon0_io_tristate);
+       writel(0xffffffff, &lcdc->tcon1_io_tristate);
+}
+
+static void sunxi_lcdc_enable(void)
+{
+       struct sunxi_lcdc_reg * const lcdc =
+               (struct sunxi_lcdc_reg *)SUNXI_LCD0_BASE;
+
+       setbits_le32(&lcdc->ctrl, SUNXI_LCDC_CTRL_TCON_ENABLE);
+#ifdef CONFIG_VIDEO_LCD_IF_LVDS
+       setbits_le32(&lcdc->tcon0_lvds_intf, SUNXI_LCDC_TCON0_LVDS_INTF_ENABLE);
+       setbits_le32(&lcdc->lvds_ana0, SUNXI_LCDC_LVDS_ANA0);
+       setbits_le32(&lcdc->lvds_ana0, SUNXI_LCDC_LVDS_ANA0_UPDATE);
+       udelay(2); /* delay at least 1200 ns */
+       setbits_le32(&lcdc->lvds_ana1, SUNXI_LCDC_LVDS_ANA1_INIT1);
+       udelay(1); /* delay at least 120 ns */
+       setbits_le32(&lcdc->lvds_ana1, SUNXI_LCDC_LVDS_ANA1_INIT2);
+       setbits_le32(&lcdc->lvds_ana0, SUNXI_LCDC_LVDS_ANA0_UPDATE);
+#endif
+}
+
+static void sunxi_lcdc_panel_enable(void)
+{
+       int pin;
+
+       /*
+        * Start with backlight disabled to avoid the screen flashing to
+        * white while the lcd inits.
+        */
+       pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_EN);
+       if (pin != -1) {
+               gpio_request(pin, "lcd_backlight_enable");
+               gpio_direction_output(pin, 0);
+       }
+
+       pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_PWM);
+       if (pin != -1) {
+               gpio_request(pin, "lcd_backlight_pwm");
+               /* backlight pwm is inverted, set to 1 to disable backlight */
+               gpio_direction_output(pin, 1);
+       }
+
+       /* Give the backlight some time to turn off and power up the panel. */
+       mdelay(40);
+       pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_POWER);
+       if (pin != -1) {
+               gpio_request(pin, "lcd_power");
+               gpio_direction_output(pin, 1);
+       }
+}
+
+static void sunxi_lcdc_backlight_enable(void)
+{
+       int pin;
+
+       /*
+        * We want to have scanned out at least one frame before enabling the
+        * backlight to avoid the screen flashing to white when we enable it.
+        */
+       mdelay(40);
+
+       pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_EN);
+       if (pin != -1)
+               gpio_direction_output(pin, 1);
+
+       pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_PWM);
+       if (pin != -1) {
+               /* backlight pwm is inverted, set to 0 to enable backlight */
+               gpio_direction_output(pin, 0);
+       }
+}
+
+static int sunxi_lcdc_get_clk_delay(const struct ctfb_res_modes *mode)
+{
+       int delay;
+
+       delay = mode->lower_margin + mode->vsync_len + mode->upper_margin - 2;
+       return (delay > 30) ? 30 : delay;
+}
+
+static void sunxi_lcdc_tcon0_mode_set(const struct ctfb_res_modes *mode)
+{
+       struct sunxi_lcdc_reg * const lcdc =
+               (struct sunxi_lcdc_reg *)SUNXI_LCD0_BASE;
+       int bp, clk_delay, clk_div, clk_double, pin, total, val;
+
+       for (pin = SUNXI_GPD(0); pin <= SUNXI_GPD(27); pin++)
+#ifdef CONFIG_VIDEO_LCD_IF_PARALLEL
+               sunxi_gpio_set_cfgpin(pin, SUNXI_GPD0_LCD0);
+#endif
+#ifdef CONFIG_VIDEO_LCD_IF_LVDS
+               sunxi_gpio_set_cfgpin(pin, SUNXI_GPD0_LVDS0);
+#endif
+
+       sunxi_lcdc_pll_set(0, mode->pixclock_khz, &clk_div, &clk_double);
+
+       /* Use tcon0 */
+       clrsetbits_le32(&lcdc->ctrl, SUNXI_LCDC_CTRL_IO_MAP_MASK,
+                       SUNXI_LCDC_CTRL_IO_MAP_TCON0);
+
+       clk_delay = sunxi_lcdc_get_clk_delay(mode);
+       writel(SUNXI_LCDC_TCON0_CTRL_ENABLE |
+              SUNXI_LCDC_TCON0_CTRL_CLK_DELAY(clk_delay), &lcdc->tcon0_ctrl);
+
+       writel(SUNXI_LCDC_TCON0_DCLK_ENABLE |
+              SUNXI_LCDC_TCON0_DCLK_DIV(clk_div), &lcdc->tcon0_dclk);
+
+       writel(SUNXI_LCDC_X(mode->xres) | SUNXI_LCDC_Y(mode->yres),
+              &lcdc->tcon0_timing_active);
+
+       bp = mode->hsync_len + mode->left_margin;
+       total = mode->xres + mode->right_margin + bp;
+       writel(SUNXI_LCDC_TCON0_TIMING_H_TOTAL(total) |
+              SUNXI_LCDC_TCON0_TIMING_H_BP(bp), &lcdc->tcon0_timing_h);
+
+       bp = mode->vsync_len + mode->upper_margin;
+       total = mode->yres + mode->lower_margin + bp;
+       writel(SUNXI_LCDC_TCON0_TIMING_V_TOTAL(total) |
+              SUNXI_LCDC_TCON0_TIMING_V_BP(bp), &lcdc->tcon0_timing_v);
+
+#ifdef CONFIG_VIDEO_LCD_IF_PARALLEL
+       writel(SUNXI_LCDC_X(mode->hsync_len) | SUNXI_LCDC_Y(mode->vsync_len),
+              &lcdc->tcon0_timing_sync);
+
+       writel(0, &lcdc->tcon0_hv_intf);
+       writel(0, &lcdc->tcon0_cpu_intf);
+#endif
+#ifdef CONFIG_VIDEO_LCD_IF_LVDS
+       val = (sunxi_display.depth == 18) ? 1 : 0;
+       writel(SUNXI_LCDC_TCON0_LVDS_INTF_BITWIDTH(val), &lcdc->tcon0_lvds_intf);
+#endif
+
+       if (sunxi_display.depth == 18 || sunxi_display.depth == 16) {
+               writel(SUNXI_LCDC_TCON0_FRM_SEED, &lcdc->tcon0_frm_seed[0]);
+               writel(SUNXI_LCDC_TCON0_FRM_SEED, &lcdc->tcon0_frm_seed[1]);
+               writel(SUNXI_LCDC_TCON0_FRM_SEED, &lcdc->tcon0_frm_seed[2]);
+               writel(SUNXI_LCDC_TCON0_FRM_SEED, &lcdc->tcon0_frm_seed[3]);
+               writel(SUNXI_LCDC_TCON0_FRM_SEED, &lcdc->tcon0_frm_seed[4]);
+               writel(SUNXI_LCDC_TCON0_FRM_SEED, &lcdc->tcon0_frm_seed[5]);
+               writel(SUNXI_LCDC_TCON0_FRM_TAB0, &lcdc->tcon0_frm_table[0]);
+               writel(SUNXI_LCDC_TCON0_FRM_TAB1, &lcdc->tcon0_frm_table[1]);
+               writel(SUNXI_LCDC_TCON0_FRM_TAB2, &lcdc->tcon0_frm_table[2]);
+               writel(SUNXI_LCDC_TCON0_FRM_TAB3, &lcdc->tcon0_frm_table[3]);
+               writel(((sunxi_display.depth == 18) ?
+                       SUNXI_LCDC_TCON0_FRM_CTRL_RGB666 :
+                       SUNXI_LCDC_TCON0_FRM_CTRL_RGB565),
+                      &lcdc->tcon0_frm_ctrl);
+       }
+
+#ifdef CONFIG_VIDEO_LCD_IF_PARALLEL
+       val = SUNXI_LCDC_TCON0_IO_POL_DCLK_PHASE0;
+#endif
+#ifdef CONFIG_VIDEO_LCD_IF_LVDS
+       val = SUNXI_LCDC_TCON0_IO_POL_DCLK_PHASE60;
+#endif
+       if (!(mode->sync & FB_SYNC_HOR_HIGH_ACT))
+               val |= SUNXI_LCDC_TCON_HSYNC_MASK;
+       if (!(mode->sync & FB_SYNC_VERT_HIGH_ACT))
+               val |= SUNXI_LCDC_TCON_VSYNC_MASK;
+       writel(val, &lcdc->tcon0_io_polarity);
+
+       writel(0, &lcdc->tcon0_io_tristate);
+}
+
+#if defined CONFIG_VIDEO_HDMI || defined CONFIG_VIDEO_VGA
+static void sunxi_lcdc_tcon1_mode_set(const struct ctfb_res_modes *mode,
+                                     int *clk_div, int *clk_double,
+                                     bool use_portd_hvsync)
+{
+       struct sunxi_lcdc_reg * const lcdc =
+               (struct sunxi_lcdc_reg *)SUNXI_LCD0_BASE;
+       int bp, clk_delay, total, val;
+
+       /* Use tcon1 */
+       clrsetbits_le32(&lcdc->ctrl, SUNXI_LCDC_CTRL_IO_MAP_MASK,
+                       SUNXI_LCDC_CTRL_IO_MAP_TCON1);
+
+       clk_delay = sunxi_lcdc_get_clk_delay(mode);
+       writel(SUNXI_LCDC_TCON1_CTRL_ENABLE |
+              SUNXI_LCDC_TCON1_CTRL_CLK_DELAY(clk_delay), &lcdc->tcon1_ctrl);
+
+       writel(SUNXI_LCDC_X(mode->xres) | SUNXI_LCDC_Y(mode->yres),
+              &lcdc->tcon1_timing_source);
+       writel(SUNXI_LCDC_X(mode->xres) | SUNXI_LCDC_Y(mode->yres),
+              &lcdc->tcon1_timing_scale);
+       writel(SUNXI_LCDC_X(mode->xres) | SUNXI_LCDC_Y(mode->yres),
+              &lcdc->tcon1_timing_out);
+
+       bp = mode->hsync_len + mode->left_margin;
+       total = mode->xres + mode->right_margin + bp;
+       writel(SUNXI_LCDC_TCON1_TIMING_H_TOTAL(total) |
+              SUNXI_LCDC_TCON1_TIMING_H_BP(bp), &lcdc->tcon1_timing_h);
+
+       bp = mode->vsync_len + mode->upper_margin;
+       total = mode->yres + mode->lower_margin + bp;
+       writel(SUNXI_LCDC_TCON1_TIMING_V_TOTAL(total) |
+              SUNXI_LCDC_TCON1_TIMING_V_BP(bp), &lcdc->tcon1_timing_v);
+
+       writel(SUNXI_LCDC_X(mode->hsync_len) | SUNXI_LCDC_Y(mode->vsync_len),
+              &lcdc->tcon1_timing_sync);
+
+       if (use_portd_hvsync) {
+               sunxi_gpio_set_cfgpin(SUNXI_GPD(26), SUNXI_GPD0_LCD0);
+               sunxi_gpio_set_cfgpin(SUNXI_GPD(27), SUNXI_GPD0_LCD0);
+
+               val = 0;
+               if (mode->sync & FB_SYNC_HOR_HIGH_ACT)
+                       val |= SUNXI_LCDC_TCON_HSYNC_MASK;
+               if (mode->sync & FB_SYNC_VERT_HIGH_ACT)
+                       val |= SUNXI_LCDC_TCON_VSYNC_MASK;
+               writel(val, &lcdc->tcon1_io_polarity);
+
+               clrbits_le32(&lcdc->tcon1_io_tristate,
+                            SUNXI_LCDC_TCON_VSYNC_MASK |
+                            SUNXI_LCDC_TCON_HSYNC_MASK);
+       }
+       sunxi_lcdc_pll_set(1, mode->pixclock_khz, clk_div, clk_double);
+}
+#endif /* CONFIG_VIDEO_HDMI || defined CONFIG_VIDEO_VGA */
+
+#ifdef CONFIG_VIDEO_HDMI
+
+static void sunxi_hdmi_setup_info_frames(const struct ctfb_res_modes *mode)
+{
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+       u8 checksum = 0;
+       u8 avi_info_frame[17] = {
+               0x82, 0x02, 0x0d, 0x00, 0x12, 0x00, 0x88, 0x00,
+               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+               0x00
+       };
+       u8 vendor_info_frame[19] = {
+               0x81, 0x01, 0x06, 0x29, 0x03, 0x0c, 0x00, 0x40,
+               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+               0x00, 0x00, 0x00
+       };
+       int i;
+
+       if (mode->pixclock_khz <= 27000)
+               avi_info_frame[5] = 0x40; /* SD-modes, ITU601 colorspace */
+       else
+               avi_info_frame[5] = 0x80; /* HD-modes, ITU709 colorspace */
+
+       if (mode->xres * 100 / mode->yres < 156)
+               avi_info_frame[5] |= 0x18; /* 4 : 3 */
+       else
+               avi_info_frame[5] |= 0x28; /* 16 : 9 */
+
+       for (i = 0; i < ARRAY_SIZE(avi_info_frame); i++)
+               checksum += avi_info_frame[i];
+
+       avi_info_frame[3] = 0x100 - checksum;
+
+       for (i = 0; i < ARRAY_SIZE(avi_info_frame); i++)
+               writeb(avi_info_frame[i], &hdmi->avi_info_frame[i]);
+
+       writel(SUNXI_HDMI_QCP_PACKET0, &hdmi->qcp_packet0);
+       writel(SUNXI_HDMI_QCP_PACKET1, &hdmi->qcp_packet1);
+
+       for (i = 0; i < ARRAY_SIZE(vendor_info_frame); i++)
+               writeb(vendor_info_frame[i], &hdmi->vendor_info_frame[i]);
+
+       writel(SUNXI_HDMI_PKT_CTRL0, &hdmi->pkt_ctrl0);
+       writel(SUNXI_HDMI_PKT_CTRL1, &hdmi->pkt_ctrl1);
+
+       setbits_le32(&hdmi->video_ctrl, SUNXI_HDMI_VIDEO_CTRL_HDMI);
+}
+
+static void sunxi_hdmi_mode_set(const struct ctfb_res_modes *mode,
+                               int clk_div, int clk_double)
+{
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+       int x, y;
+
+       /* Write clear interrupt status bits */
+       writel(SUNXI_HDMI_IRQ_STATUS_BITS, &hdmi->irq);
+
+       if (sunxi_display.monitor == sunxi_monitor_hdmi)
+               sunxi_hdmi_setup_info_frames(mode);
+
+       /* Set input sync enable */
+       writel(SUNXI_HDMI_UNKNOWN_INPUT_SYNC, &hdmi->unknown);
+
+       /* Init various registers, select pll3 as clock source */
+       writel(SUNXI_HDMI_VIDEO_POL_TX_CLK, &hdmi->video_polarity);
+       writel(SUNXI_HDMI_PAD_CTRL0_RUN, &hdmi->pad_ctrl0);
+       writel(SUNXI_HDMI_PAD_CTRL1, &hdmi->pad_ctrl1);
+       writel(SUNXI_HDMI_PLL_CTRL, &hdmi->pll_ctrl);
+       writel(SUNXI_HDMI_PLL_DBG0_PLL3, &hdmi->pll_dbg0);
+
+       /* Setup clk div and doubler */
+       clrsetbits_le32(&hdmi->pll_ctrl, SUNXI_HDMI_PLL_CTRL_DIV_MASK,
+                       SUNXI_HDMI_PLL_CTRL_DIV(clk_div));
+       if (!clk_double)
+               setbits_le32(&hdmi->pad_ctrl1, SUNXI_HDMI_PAD_CTRL1_HALVE);
+
+       /* Setup timing registers */
+       writel(SUNXI_HDMI_Y(mode->yres) | SUNXI_HDMI_X(mode->xres),
+              &hdmi->video_size);
+
+       x = mode->hsync_len + mode->left_margin;
+       y = mode->vsync_len + mode->upper_margin;
+       writel(SUNXI_HDMI_Y(y) | SUNXI_HDMI_X(x), &hdmi->video_bp);
+
+       x = mode->right_margin;
+       y = mode->lower_margin;
+       writel(SUNXI_HDMI_Y(y) | SUNXI_HDMI_X(x), &hdmi->video_fp);
+
+       x = mode->hsync_len;
+       y = mode->vsync_len;
+       writel(SUNXI_HDMI_Y(y) | SUNXI_HDMI_X(x), &hdmi->video_spw);
+
+       if (mode->sync & FB_SYNC_HOR_HIGH_ACT)
+               setbits_le32(&hdmi->video_polarity, SUNXI_HDMI_VIDEO_POL_HOR);
+
+       if (mode->sync & FB_SYNC_VERT_HIGH_ACT)
+               setbits_le32(&hdmi->video_polarity, SUNXI_HDMI_VIDEO_POL_VER);
+}
+
+static void sunxi_hdmi_enable(void)
+{
+       struct sunxi_hdmi_reg * const hdmi =
+               (struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
+
+       udelay(100);
+       setbits_le32(&hdmi->video_ctrl, SUNXI_HDMI_VIDEO_CTRL_ENABLE);
+}
+
+#endif /* CONFIG_VIDEO_HDMI */
+
+#ifdef CONFIG_VIDEO_VGA
+
+static void sunxi_vga_mode_set(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       struct sunxi_tve_reg * const tve =
+               (struct sunxi_tve_reg *)SUNXI_TVE0_BASE;
+
+       /* Clock on */
+       setbits_le32(&ccm->ahb_gate1, 1 << AHB_GATE_OFFSET_TVE0);
+
+       /* Set TVE in VGA mode */
+       writel(SUNXI_TVE_GCTRL_DAC_INPUT(0, 1) |
+              SUNXI_TVE_GCTRL_DAC_INPUT(1, 2) |
+              SUNXI_TVE_GCTRL_DAC_INPUT(2, 3), &tve->gctrl);
+       writel(SUNXI_TVE_GCTRL_CFG0_VGA, &tve->cfg0);
+       writel(SUNXI_TVE_GCTRL_DAC_CFG0_VGA, &tve->dac_cfg0);
+       writel(SUNXI_TVE_GCTRL_UNKNOWN1_VGA, &tve->unknown1);
+}
+
+static void sunxi_vga_enable(void)
+{
+       struct sunxi_tve_reg * const tve =
+               (struct sunxi_tve_reg *)SUNXI_TVE0_BASE;
+
+       setbits_le32(&tve->gctrl, SUNXI_TVE_GCTRL_ENABLE);
+}
+
+#endif /* CONFIG_VIDEO_VGA */
+
+static void sunxi_drc_init(void)
+{
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* On sun6i the drc must be clocked even when in pass-through mode */
+       setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_DRC0);
+       clock_set_de_mod_clock(&ccm->iep_drc0_clk_cfg, 300000000);
+#endif
+}
+
+#ifdef CONFIG_VIDEO_VGA_VIA_LCD
+static void sunxi_vga_external_dac_enable(void)
+{
+       int pin;
+
+       pin = sunxi_name_to_gpio(CONFIG_VIDEO_VGA_EXTERNAL_DAC_EN);
+       if (pin != -1) {
+               gpio_request(pin, "vga_enable");
+               gpio_direction_output(pin, 1);
+       }
+}
+#endif /* CONFIG_VIDEO_VGA_VIA_LCD */
+
+static void sunxi_engines_init(void)
+{
+       sunxi_composer_init();
+       sunxi_lcdc_init();
+       sunxi_drc_init();
+}
+
+static void sunxi_mode_set(const struct ctfb_res_modes *mode,
+                          unsigned int address)
+{
+       int __maybe_unused clk_div, clk_double;
+
+       switch (sunxi_display.monitor) {
+       case sunxi_monitor_none:
+               break;
+       case sunxi_monitor_dvi:
+       case sunxi_monitor_hdmi:
+#ifdef CONFIG_VIDEO_HDMI
+               sunxi_composer_mode_set(mode, address);
+               sunxi_lcdc_tcon1_mode_set(mode, &clk_div, &clk_double, 0);
+               sunxi_hdmi_mode_set(mode, clk_div, clk_double);
+               sunxi_composer_enable();
+               sunxi_lcdc_enable();
+               sunxi_hdmi_enable();
+#endif
+               break;
+       case sunxi_monitor_lcd:
+               sunxi_lcdc_panel_enable();
+               sunxi_composer_mode_set(mode, address);
+               sunxi_lcdc_tcon0_mode_set(mode);
+               sunxi_composer_enable();
+               sunxi_lcdc_enable();
+               sunxi_lcdc_backlight_enable();
+               break;
+       case sunxi_monitor_vga:
+#ifdef CONFIG_VIDEO_VGA
+               sunxi_composer_mode_set(mode, address);
+               sunxi_lcdc_tcon1_mode_set(mode, &clk_div, &clk_double, 1);
+               sunxi_vga_mode_set();
+               sunxi_composer_enable();
+               sunxi_lcdc_enable();
+               sunxi_vga_enable();
+#elif defined CONFIG_VIDEO_VGA_VIA_LCD
+               sunxi_composer_mode_set(mode, address);
+               sunxi_lcdc_tcon0_mode_set(mode);
+               sunxi_composer_enable();
+               sunxi_lcdc_enable();
+               sunxi_vga_external_dac_enable();
+#endif
+               break;
+       }
+}
+
+static const char *sunxi_get_mon_desc(enum sunxi_monitor monitor)
+{
+       switch (monitor) {
+       case sunxi_monitor_none:        return "none";
+       case sunxi_monitor_dvi:         return "dvi";
+       case sunxi_monitor_hdmi:        return "hdmi";
+       case sunxi_monitor_lcd:         return "lcd";
+       case sunxi_monitor_vga:         return "vga";
+       }
+       return NULL; /* never reached */
+}
+
+void *video_hw_init(void)
+{
+       static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
+       const struct ctfb_res_modes *mode;
+       struct ctfb_res_modes custom;
+       const char *options;
+#ifdef CONFIG_VIDEO_HDMI
+       int ret, hpd, hpd_delay, edid;
+#endif
+       char mon[16];
+       char *lcd_mode = CONFIG_VIDEO_LCD_MODE;
+       int i;
+
+       memset(&sunxi_display, 0, sizeof(struct sunxi_display));
+
+       printf("Reserved %dkB of RAM for Framebuffer.\n",
+              CONFIG_SUNXI_FB_SIZE >> 10);
+       gd->fb_base = gd->ram_top;
+
+       video_get_ctfb_res_modes(RES_MODE_1024x768, 24, &mode,
+                                &sunxi_display.depth, &options);
+#ifdef CONFIG_VIDEO_HDMI
+       hpd = video_get_option_int(options, "hpd", 1);
+       hpd_delay = video_get_option_int(options, "hpd_delay", 500);
+       edid = video_get_option_int(options, "edid", 1);
+       sunxi_display.monitor = sunxi_monitor_dvi;
+#elif defined CONFIG_VIDEO_VGA_VIA_LCD
+       sunxi_display.monitor = sunxi_monitor_vga;
+#else
+       sunxi_display.monitor = sunxi_monitor_lcd;
+#endif
+       video_get_option_string(options, "monitor", mon, sizeof(mon),
+                               sunxi_get_mon_desc(sunxi_display.monitor));
+       for (i = 0; i <= SUNXI_MONITOR_LAST; i++) {
+               if (strcmp(mon, sunxi_get_mon_desc(i)) == 0) {
+                       sunxi_display.monitor = i;
+                       break;
+               }
+       }
+       if (i > SUNXI_MONITOR_LAST)
+               printf("Unknown monitor: '%s', falling back to '%s'\n",
+                      mon, sunxi_get_mon_desc(sunxi_display.monitor));
+
+#ifdef CONFIG_VIDEO_HDMI
+       /* If HDMI/DVI is selected do HPD & EDID, and handle fallback */
+       if (sunxi_display.monitor == sunxi_monitor_dvi ||
+           sunxi_display.monitor == sunxi_monitor_hdmi) {
+               /* Always call hdp_detect, as it also enables clocks, etc. */
+               ret = sunxi_hdmi_hpd_detect(hpd_delay);
+               if (ret) {
+                       printf("HDMI connected: ");
+                       if (edid && sunxi_hdmi_edid_get_mode(&custom) == 0)
+                               mode = &custom;
+               } else if (hpd) {
+                       sunxi_hdmi_shutdown();
+                       /* Fallback to lcd / vga / none */
+                       if (lcd_mode[0]) {
+                               sunxi_display.monitor = sunxi_monitor_lcd;
+                       } else {
+#if defined CONFIG_VIDEO_VGA_VIA_LCD || defined CONFIG_VIDEO_VGA
+                               sunxi_display.monitor = sunxi_monitor_vga;
+#else
+                               sunxi_display.monitor = sunxi_monitor_none;
+#endif
+                       }
+               } /* else continue with hdmi/dvi without a cable connected */
+       }
+#endif
+
+       switch (sunxi_display.monitor) {
+       case sunxi_monitor_none:
+               return NULL;
+       case sunxi_monitor_dvi:
+       case sunxi_monitor_hdmi:
+#ifdef CONFIG_VIDEO_HDMI
+               break;
+#else
+               printf("HDMI/DVI not supported on this board\n");
+               sunxi_display.monitor = sunxi_monitor_none;
+               return NULL;
+#endif
+       case sunxi_monitor_lcd:
+               if (lcd_mode[0]) {
+                       sunxi_display.depth = video_get_params(&custom, lcd_mode);
+                       mode = &custom;
+                       break;
+               }
+               printf("LCD not supported on this board\n");
+               sunxi_display.monitor = sunxi_monitor_none;
+               return NULL;
+       case sunxi_monitor_vga:
+#if defined CONFIG_VIDEO_VGA_VIA_LCD || defined CONFIG_VIDEO_VGA
+               sunxi_display.depth = 18;
+               break;
+#else
+               printf("VGA not supported on this board\n");
+               sunxi_display.monitor = sunxi_monitor_none;
+               return NULL;
+#endif
+       }
+
+       if (mode->vmode != FB_VMODE_NONINTERLACED) {
+               printf("Only non-interlaced modes supported, falling back to 1024x768\n");
+               mode = &res_mode_init[RES_MODE_1024x768];
+       } else {
+               printf("Setting up a %dx%d %s console\n", mode->xres,
+                      mode->yres, sunxi_get_mon_desc(sunxi_display.monitor));
+       }
+
+       sunxi_engines_init();
+       sunxi_mode_set(mode, gd->fb_base - CONFIG_SYS_SDRAM_BASE);
+
+       /*
+        * These are the only members of this structure that are used. All the
+        * others are driver specific. There is nothing to decribe pitch or
+        * stride, but we are lucky with our hw.
+        */
+       graphic_device->frameAdrs = gd->fb_base;
+       graphic_device->gdfIndex = GDF_32BIT_X888RGB;
+       graphic_device->gdfBytesPP = 4;
+       graphic_device->winSizeX = mode->xres;
+       graphic_device->winSizeY = mode->yres;
+
+       return graphic_device;
+}
+
+/*
+ * Simplefb support.
+ */
+#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_VIDEO_DT_SIMPLEFB)
+int sunxi_simplefb_setup(void *blob)
+{
+       static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
+       int offset, ret;
+       const char *pipeline = NULL;
+
+       switch (sunxi_display.monitor) {
+       case sunxi_monitor_none:
+               return 0;
+       case sunxi_monitor_dvi:
+       case sunxi_monitor_hdmi:
+               pipeline = "de_be0-lcd0-hdmi";
+               break;
+       case sunxi_monitor_lcd:
+               pipeline = "de_be0-lcd0";
+               break;
+       case sunxi_monitor_vga:
+#ifdef CONFIG_VIDEO_VGA
+               pipeline = "de_be0-lcd0-tve0";
+#elif defined CONFIG_VIDEO_VGA_VIA_LCD
+               pipeline = "de_be0-lcd0";
+#endif
+               break;
+       }
+
+       /* Find a prefilled simpefb node, matching out pipeline config */
+       offset = fdt_node_offset_by_compatible(blob, -1,
+                                              "allwinner,simple-framebuffer");
+       while (offset >= 0) {
+               ret = fdt_find_string(blob, offset, "allwinner,pipeline",
+                                     pipeline);
+               if (ret == 0)
+                       break;
+               offset = fdt_node_offset_by_compatible(blob, offset,
+                                              "allwinner,simple-framebuffer");
+       }
+       if (offset < 0) {
+               eprintf("Cannot setup simplefb: node not found\n");
+               return 0; /* Keep older kernels working */
+       }
+
+       ret = fdt_setup_simplefb_node(blob, offset, gd->fb_base,
+                       graphic_device->winSizeX, graphic_device->winSizeY,
+                       graphic_device->winSizeX * graphic_device->gdfBytesPP,
+                       "x8r8g8b8");
+       if (ret)
+               eprintf("Cannot setup simplefb: Error setting properties\n");
+
+       return ret;
+}
+#endif /* CONFIG_OF_BOARD_SETUP && CONFIG_VIDEO_DT_SIMPLEFB */
index 18c1f3d8acc0e90d27a90a3460bb2758827a3f58..cf71ad120ecef3ab2fe49ff4fdb09db5123fdcae 100644 (file)
@@ -58,6 +58,8 @@
 ****************************************************************************/
 
 #include <common.h>
+#include <edid.h>
+#include <errno.h>
 #include <linux/ctype.h>
 
 #include "videomodes.h"
@@ -84,13 +86,26 @@ const struct ctfb_vesa_modes vesa_modes[VESA_MODES_COUNT] = {
        {0x31B, RES_MODE_1280x1024, 24},
 };
 const struct ctfb_res_modes res_mode_init[RES_MODES_COUNT] = {
-       /* x     y pixclk   le  ri  up  lo   hs vs  s  vmode */
-       {640, 480, 39721, 40, 24, 32, 11, 96, 2, 0, FB_VMODE_NONINTERLACED},
-       {800, 600, 27778, 64, 24, 22, 1, 72, 2, 0, FB_VMODE_NONINTERLACED},
-       {1024, 768, 15384, 168, 8, 29, 3, 144, 4, 0, FB_VMODE_NONINTERLACED},
-       {960, 720, 13100, 160, 40, 32, 8, 80, 4, 0, FB_VMODE_NONINTERLACED},
-       {1152, 864, 12004, 200, 64, 32, 16, 80, 4, 0, FB_VMODE_NONINTERLACED},
-       {1280, 1024, 9090, 200, 48, 26, 1, 184, 3, 0, FB_VMODE_NONINTERLACED},
+       /*  x     y  hz  pixclk ps/kHz   le   ri  up  lo   hs vs  s  vmode */
+#ifndef CONFIG_VIDEO_STD_TIMINGS
+       { 640,  480, 60, 39721,  25180,  40,  24, 32, 11,  96, 2, 0, FB_VMODE_NONINTERLACED},
+       { 800,  600, 60, 27778,  36000,  64,  24, 22,  1,  72, 2, 0, FB_VMODE_NONINTERLACED},
+       {1024,  768, 60, 15384,  65000, 168,   8, 29,  3, 144, 4, 0, FB_VMODE_NONINTERLACED},
+       { 960,  720, 80, 13100,  76335, 160,  40, 32,  8,  80, 4, 0, FB_VMODE_NONINTERLACED},
+       {1152,  864, 60, 12004,  83300, 200,  64, 32, 16,  80, 4, 0, FB_VMODE_NONINTERLACED},
+       {1280, 1024, 60,  9090, 110000, 200,  48, 26,  1, 184, 3, 0, FB_VMODE_NONINTERLACED},
+#else
+       { 640,  480, 60, 39683,  25200,  48,  16, 33, 10,  96, 2, 0, FB_VMODE_NONINTERLACED},
+       { 800,  600, 60, 25000,  40000,  88,  40, 23,  1, 128, 4, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED},
+       {1024,  768, 60, 15384,  65000, 160,  24, 29,  3, 136, 6, 0, FB_VMODE_NONINTERLACED},
+       { 960,  720, 75, 13468,  74250, 176,  72, 27,  1, 112, 2, 0, FB_VMODE_NONINTERLACED},
+       {1152,  864, 75,  9259, 108000, 256,  64, 32,  1, 128, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED},
+       {1280, 1024, 60,  9259, 108000, 248,  48, 38,  1, 112, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED},
+#endif
+       {1280,  720, 60, 13468,  74250, 220, 110, 20,  5,  40, 5, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED},
+       {1360,  768, 60, 11696,  85500, 256,  64, 17,  3, 112, 7, 0, FB_VMODE_NONINTERLACED},
+       {1920, 1080, 60,  6734, 148500, 148,  88, 36,  4,  44, 5, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED},
+       {1920, 1200, 60,  6494, 154000,  80,  48, 26,  3,  32, 6, FB_SYNC_HOR_HIGH_ACT, FB_VMODE_NONINTERLACED},
 };
 
 /************************************************************************
@@ -100,7 +115,7 @@ const struct ctfb_res_modes res_mode_init[RES_MODES_COUNT] = {
  * returns the length to the next seperator
  */
 static int
-video_get_param_len (char *start, char sep)
+video_get_param_len(const char *start, char sep)
 {
        int i = 0;
        while ((*start != 0) && (*start != sep)) {
@@ -183,6 +198,7 @@ int video_get_params (struct ctfb_res_modes *pPar, char *penv)
        while ((i = video_get_param_len (p, ',')) != 0) {
                GET_OPTION ("x:", pPar->xres)
                        GET_OPTION ("y:", pPar->yres)
+                       GET_OPTION ("refresh:", pPar->refresh)
                        GET_OPTION ("le:", pPar->left_margin)
                        GET_OPTION ("ri:", pPar->right_margin)
                        GET_OPTION ("up:", pPar->upper_margin)
@@ -192,6 +208,7 @@ int video_get_params (struct ctfb_res_modes *pPar, char *penv)
                        GET_OPTION ("sync:", pPar->sync)
                        GET_OPTION ("vmode:", pPar->vmode)
                        GET_OPTION ("pclk:", pPar->pixclock)
+                       GET_OPTION ("pclk_khz:", pPar->pixclock_khz)
                        GET_OPTION ("depth:", bpp)
                        p += i;
                if (*p != 0)
@@ -260,3 +277,171 @@ int video_get_video_mode(unsigned int *xres, unsigned int *yres,
 
        return 1;
 }
+
+/*
+ * Parse the 'video-mode' environment variable using video_get_video_mode()
+ * and lookup the matching ctfb_res_modes in res_mode_init.
+ *
+ * @default_mode: RES_MODE_##x## define for the mode to store in mode_ret
+ *   when 'video-mode' is not set or does not contain a valid mode
+ * @default_depth: depth to set when 'video-mode' is not set
+ * @mode_ret: pointer where the mode will be stored
+ * @depth_ret: pointer where the depth will be stored
+ * @options: pointer to any remaining options, or NULL
+ */
+void video_get_ctfb_res_modes(int default_mode, unsigned int default_depth,
+                             const struct ctfb_res_modes **mode_ret,
+                             unsigned int *depth_ret,
+                             const char **options)
+{
+       unsigned int i, xres, yres, depth, refresh;
+
+       *mode_ret = &res_mode_init[default_mode];
+       *depth_ret = default_depth;
+       *options = NULL;
+
+       if (!video_get_video_mode(&xres, &yres, &depth, &refresh, options))
+               return;
+
+       for (i = 0; i < RES_MODES_COUNT; i++) {
+               if (res_mode_init[i].xres == xres &&
+                   res_mode_init[i].yres == yres &&
+                   res_mode_init[i].refresh == refresh) {
+                       *mode_ret = &res_mode_init[i];
+                       *depth_ret = depth;
+                       return;
+               }
+       }
+
+       printf("video-mode %dx%d-%d@%d not available, falling back to %dx%d-%d@%d\n",
+              xres, yres, depth, refresh, (*mode_ret)->xres,
+              (*mode_ret)->yres, *depth_ret, (*mode_ret)->refresh);
+}
+
+/*
+ * Find the named string option within the ',' separated options string, and
+ * store its value in dest.
+ *
+ * @options: ',' separated options string
+ * @name: name of the option to look for
+ * @dest: destination buffer to store the value of the option in
+ * @dest_len: length of dest
+ * @def: value to store in dest if the option is not present in options
+ */
+void video_get_option_string(const char *options, const char *name,
+                            char *dest, int dest_len, const char *def)
+{
+       const char *p = options;
+       const int name_len = strlen(name);
+       int i, len;
+
+       while (p && (i = video_get_param_len(p, ',')) != 0) {
+               if (strncmp(p, name, name_len) == 0 && p[name_len] == '=') {
+                       len = i - (name_len + 1);
+                       if (len >= dest_len)
+                               len = dest_len - 1;
+                       memcpy(dest, &p[name_len + 1], len);
+                       dest[len] = 0;
+                       return;
+               }
+               p += i;
+               if (*p != 0)
+                       p++;    /* skip ',' */
+       }
+       strcpy(dest, def);
+}
+
+/*
+ * Find the named integer option within the ',' separated options string, and
+ * return its value.
+ *
+ * @options: ',' separated options string
+ * @name: name of the option to look for
+ * @def: value to return if the option is not present in options
+ */
+int video_get_option_int(const char *options, const char *name, int def)
+{
+       const char *p = options;
+       const int name_len = strlen(name);
+       int i;
+
+       while (p && (i = video_get_param_len(p, ',')) != 0) {
+               if (strncmp(p, name, name_len) == 0 && p[name_len] == '=')
+                       return simple_strtoul(&p[name_len + 1], NULL, 10);
+
+               p += i;
+               if (*p != 0)
+                       p++;    /* skip ',' */
+       }
+       return def;
+}
+
+/**
+ * Convert an EDID detailed timing to a struct ctfb_res_modes
+ *
+ * @param t            The EDID detailed timing to be converted
+ * @param mode         Returns the converted timing
+ *
+ * @return 0 on success, or a negative errno on error
+ */
+int video_edid_dtd_to_ctfb_res_modes(struct edid_detailed_timing *t,
+                                    struct ctfb_res_modes *mode)
+{
+       int margin, h_total, v_total;
+
+       /* Check all timings are non 0 */
+       if (EDID_DETAILED_TIMING_PIXEL_CLOCK(*t) == 0 ||
+           EDID_DETAILED_TIMING_HORIZONTAL_ACTIVE(*t) == 0 ||
+           EDID_DETAILED_TIMING_HORIZONTAL_BLANKING(*t) == 0 ||
+           EDID_DETAILED_TIMING_VERTICAL_ACTIVE(*t) == 0 ||
+           EDID_DETAILED_TIMING_VERTICAL_BLANKING(*t) == 0 ||
+           EDID_DETAILED_TIMING_HSYNC_OFFSET(*t) == 0 ||
+           EDID_DETAILED_TIMING_HSYNC_PULSE_WIDTH(*t) == 0 ||
+           EDID_DETAILED_TIMING_VSYNC_OFFSET(*t) == 0 ||
+           EDID_DETAILED_TIMING_VSYNC_PULSE_WIDTH(*t) == 0 ||
+           /* 3d formats are not supported*/
+           EDID_DETAILED_TIMING_FLAG_STEREO(*t) != 0)
+               return -EINVAL;
+
+       mode->xres = EDID_DETAILED_TIMING_HORIZONTAL_ACTIVE(*t);
+       mode->yres = EDID_DETAILED_TIMING_VERTICAL_ACTIVE(*t);
+
+       h_total = mode->xres + EDID_DETAILED_TIMING_HORIZONTAL_BLANKING(*t);
+       v_total = mode->yres + EDID_DETAILED_TIMING_VERTICAL_BLANKING(*t);
+       mode->refresh = EDID_DETAILED_TIMING_PIXEL_CLOCK(*t) /
+                       (h_total * v_total);
+
+       mode->pixclock_khz = EDID_DETAILED_TIMING_PIXEL_CLOCK(*t) / 1000;
+       mode->pixclock = 1000000000L / mode->pixclock_khz;
+
+       mode->right_margin = EDID_DETAILED_TIMING_HSYNC_OFFSET(*t);
+       mode->hsync_len = EDID_DETAILED_TIMING_HSYNC_PULSE_WIDTH(*t);
+       margin = EDID_DETAILED_TIMING_HORIZONTAL_BLANKING(*t) -
+                       (mode->right_margin + mode->hsync_len);
+       if (margin <= 0)
+               return -EINVAL;
+
+       mode->left_margin = margin;
+
+       mode->lower_margin = EDID_DETAILED_TIMING_VSYNC_OFFSET(*t);
+       mode->vsync_len = EDID_DETAILED_TIMING_VSYNC_PULSE_WIDTH(*t);
+       margin = EDID_DETAILED_TIMING_VERTICAL_BLANKING(*t) -
+                       (mode->lower_margin + mode->vsync_len);
+       if (margin <= 0)
+               return -EINVAL;
+
+       mode->upper_margin = margin;
+
+       mode->sync = 0;
+       if (EDID_DETAILED_TIMING_FLAG_HSYNC_POLARITY(*t))
+               mode->sync |= FB_SYNC_HOR_HIGH_ACT;
+       if (EDID_DETAILED_TIMING_FLAG_VSYNC_POLARITY(*t))
+               mode->sync |= FB_SYNC_VERT_HIGH_ACT;
+
+       if (EDID_DETAILED_TIMING_FLAG_INTERLACED(*t))
+               mode->vmode = FB_VMODE_INTERLACED;
+       else
+               mode->vmode = FB_VMODE_NONINTERLACED;
+
+       return 0;
+}
index d83993a563ae1bf062c38ded938d6b92de922686..82190a2aecf7c6f7db378bef113f3eb0fe2aad5f 100644 (file)
@@ -5,6 +5,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#include <edid.h>
 
 #ifndef CONFIG_SYS_DEFAULT_VIDEO_MODE
 #define CONFIG_SYS_DEFAULT_VIDEO_MODE  0x301
 struct ctfb_res_modes {
        int xres;               /* visible resolution           */
        int yres;
+       int refresh;            /* vertical refresh rate in hz  */
        /* Timing: All values in pixclocks, except pixclock (of course) */
        int pixclock;           /* pixel clock in ps (pico seconds) */
+       int pixclock_khz;       /* pixel clock in kHz           */
        int left_margin;        /* time from sync to picture    */
        int right_margin;       /* time from picture to sync    */
        int upper_margin;       /* time from sync to picture    */
@@ -62,7 +65,11 @@ struct ctfb_vesa_modes {
 #define RES_MODE_960_720       3
 #define RES_MODE_1152x864      4
 #define RES_MODE_1280x1024     5
-#define RES_MODES_COUNT                6
+#define RES_MODE_1280x720      6
+#define RES_MODE_1360x768      7
+#define RES_MODE_1920x1080     8
+#define RES_MODE_1920x1200     9
+#define RES_MODES_COUNT                10
 
 #define VESA_MODES_COUNT 19
 
@@ -73,3 +80,16 @@ int video_get_params (struct ctfb_res_modes *pPar, char *penv);
 
 int video_get_video_mode(unsigned int *xres, unsigned int *yres,
        unsigned int *depth, unsigned int *freq, const char **options);
+
+void video_get_ctfb_res_modes(int default_mode, unsigned int default_depth,
+                             const struct ctfb_res_modes **mode_ret,
+                             unsigned int *depth_ret,
+                             const char **options);
+
+void video_get_option_string(const char *options, const char *name,
+                            char *dest, int dest_len, const char *def);
+
+int video_get_option_int(const char *options, const char *name, int def);
+
+int video_edid_dtd_to_ctfb_res_modes(struct edid_detailed_timing *t,
+                                    struct ctfb_res_modes *mode);
diff --git a/drivers/video/x86_fb.c b/drivers/video/x86_fb.c
new file mode 100644 (file)
index 0000000..6641033
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ *
+ * Vesa frame buffer driver for x86
+ *
+ * Copyright (C) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <video_fb.h>
+#include <vbe.h>
+#include "videomodes.h"
+
+/*
+ * The Graphic Device
+ */
+GraphicDevice ctfb;
+
+void *video_hw_init(void)
+{
+       GraphicDevice *gdev = &ctfb;
+       int bits_per_pixel;
+
+       printf("Video: ");
+       if (vbe_get_video_info(gdev)) {
+               printf("No video mode configured\n");
+               return NULL;
+       }
+
+       bits_per_pixel = gdev->gdfBytesPP * 8;
+       sprintf(gdev->modeIdent, "%dx%dx%d", gdev->winSizeX, gdev->winSizeY,
+               bits_per_pixel);
+       printf("%s\n", gdev->modeIdent);
+       debug("Frame buffer at %x\n", gdev->frameAdrs);
+
+       return (void *)gdev;
+}
index 4a16ffb22dc93b07fe641613874c407afcfddaf0..f2fdbf19dcba1ccc35caa463d961a21d8755e07e 100644 (file)
 */
 #define TEST_FLASH_ADDR        0x40100000
 
-/* Define GPIO ports to signal start of burst transfers and errors */
-#ifdef CONFIG_LWMON
-/* Use PD.8 to signal start of burst transfers */
-#define GPIO1_DAT      (((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pddat)
-#define GPIO1_BIT      0x0080
-/* Configure PD.8 as general purpose output */
-#define GPIO1_INIT \
-       ((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdpar &= ~GPIO1_BIT; \
-       ((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pddir |=  GPIO1_BIT;
-/* Use PD.9 to signal error */
-#define GPIO2_DAT      (((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pddat)
-#define GPIO2_BIT      0x0040
-/* Configure PD.9 as general purpose output */
-#define GPIO2_INIT \
-       ((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdpar &= ~GPIO2_BIT; \
-       ((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pddir |=  GPIO2_BIT;
-#endif /* CONFIG_LWMON */
-
-
 static void test_prepare (void);
 static int test_burst_start (unsigned long size, unsigned long pattern);
 static void test_map_8M (unsigned long paddr, unsigned long vaddr, int cached);
index e0b513a4efb9f595ccec817bd5cce5c2c7b9ff6b..c77c02cdfce262cdb6910a4746b149f2b9f0d07f 100644 (file)
@@ -73,6 +73,7 @@ int ext4fs_devread(lbaint_t sector, int byte_offset, int byte_len, char *buf)
        debug(" <" LBAFU ", %d, %d>\n", sector, byte_offset, byte_len);
 
        if (byte_offset != 0) {
+               int readlen;
                /* read first part which isn't aligned with start of sector */
                if (ext4fs_block_dev_desc->
                    block_read(ext4fs_block_dev_desc->dev,
@@ -81,13 +82,11 @@ int ext4fs_devread(lbaint_t sector, int byte_offset, int byte_len, char *buf)
                        printf(" ** ext2fs_devread() read error **\n");
                        return 0;
                }
-               memcpy(buf, sec_buf + byte_offset,
-                       min(ext4fs_block_dev_desc->blksz
-                           - byte_offset, byte_len));
-               buf += min(ext4fs_block_dev_desc->blksz
-                          - byte_offset, byte_len);
-               byte_len -= min(ext4fs_block_dev_desc->blksz
-                               - byte_offset, byte_len);
+               readlen = min((int)ext4fs_block_dev_desc->blksz - byte_offset,
+                             byte_len);
+               memcpy(buf, sec_buf + byte_offset, readlen);
+               buf += readlen;
+               byte_len -= readlen;
                sector++;
        }
 
index cccc06a8889c59b780c7378340497d6815151ab2..cab5465b9d4f9e99158dbdc8cd2f704e090c9b4b 100644 (file)
@@ -1892,6 +1892,7 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
 {
        unsigned int fpos = 0;
        int status;
+       loff_t actread;
        struct ext2fs_node *diro = (struct ext2fs_node *) dir;
 
 #ifdef DEBUG
@@ -1909,8 +1910,8 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
 
                status = ext4fs_read_file(diro, fpos,
                                           sizeof(struct ext2_dirent),
-                                          (char *) &dirent);
-               if (status < 1)
+                                          (char *)&dirent, &actread);
+               if (status < 0)
                        return 0;
 
                if (dirent.namelen != 0) {
@@ -1921,8 +1922,9 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
                        status = ext4fs_read_file(diro,
                                                  fpos +
                                                  sizeof(struct ext2_dirent),
-                                                 dirent.namelen, filename);
-                       if (status < 1)
+                                                 dirent.namelen, filename,
+                                                 &actread);
+                       if (status < 0)
                                return 0;
 
                        fdiro = zalloc(sizeof(struct ext2fs_node));
@@ -2004,8 +2006,8 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
                                        printf("< ? > ");
                                        break;
                                }
-                               printf("%10d %s\n",
-                                       __le32_to_cpu(fdiro->inode.size),
+                               printf("%10u %s\n",
+                                      __le32_to_cpu(fdiro->inode.size),
                                        filename);
                        }
                        free(fdiro);
@@ -2020,6 +2022,7 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node)
        char *symlink;
        struct ext2fs_node *diro = node;
        int status;
+       loff_t actread;
 
        if (!diro->inode_read) {
                status = ext4fs_read_inode(diro->data, diro->ino, &diro->inode);
@@ -2036,7 +2039,7 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node)
        } else {
                status = ext4fs_read_file(diro, 0,
                                           __le32_to_cpu(diro->inode.size),
-                                          symlink);
+                                          symlink, &actread);
                if (status == 0) {
                        free(symlink);
                        return 0;
@@ -2170,11 +2173,10 @@ int ext4fs_find_file(const char *path, struct ext2fs_node *rootnode,
        return 1;
 }
 
-int ext4fs_open(const char *filename)
+int ext4fs_open(const char *filename, loff_t *len)
 {
        struct ext2fs_node *fdiro = NULL;
        int status;
-       int len;
 
        if (ext4fs_root == NULL)
                return -1;
@@ -2191,10 +2193,10 @@ int ext4fs_open(const char *filename)
                if (status == 0)
                        goto fail;
        }
-       len = __le32_to_cpu(fdiro->inode.size);
+       *len = __le32_to_cpu(fdiro->inode.size);
        ext4fs_file = fdiro;
 
-       return len;
+       return 0;
 fail:
        ext4fs_free_node(fdiro, &ext4fs_root->diropen);
 
index 5fa1719f2eebdcaf5107690040d909ee56e1e566..48fd2ac51dbb2761f233122ba7c801e946c94ef2 100644 (file)
@@ -50,8 +50,8 @@ static inline void *zalloc(size_t size)
 
 int ext4fs_read_inode(struct ext2_data *data, int ino,
                      struct ext2_inode *inode);
-int ext4fs_read_file(struct ext2fs_node *node, int pos,
-               unsigned int len, char *buf);
+int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, loff_t len,
+                    char *buf, loff_t *actread);
 int ext4fs_find_file(const char *path, struct ext2fs_node *rootnode,
                        struct ext2fs_node **foundnode, int expecttype);
 int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
index 648a59672c31eec1fcd0b409a185eb079670004a..f7c52cc4cc1493c81d4a2467a67196a3df6eaf07 100644 (file)
@@ -975,3 +975,35 @@ fail:
 
        return -1;
 }
+
+int ext4_write_file(const char *filename, void *buf, loff_t offset,
+                   loff_t len, loff_t *actwrite)
+{
+       int ret;
+
+       if (offset != 0) {
+               printf("** Cannot support non-zero offset **\n");
+               return -1;
+       }
+
+       /* mount the filesystem */
+       if (!ext4fs_mount(0)) {
+               printf("** Error Bad ext4 partition **\n");
+               goto fail;
+       }
+
+       ret = ext4fs_write(filename, buf, len);
+
+       if (ret) {
+               printf("** Error ext4fs_write() **\n");
+               goto fail;
+       }
+       ext4fs_close();
+
+       return 0;
+
+fail:
+       ext4fs_close();
+
+       return -1;
+}
index cbdc22026deb63a24968cbd3c0078407940bc5a2..258b93791b642e66a791467898e83f12b7a8c832 100644 (file)
@@ -25,6 +25,7 @@
 #include <ext_common.h>
 #include <ext4fs.h>
 #include "ext4_common.h"
+#include <div64.h>
 
 int ext4fs_symlinknest;
 struct ext_filesystem ext_fs;
@@ -45,8 +46,8 @@ void ext4fs_free_node(struct ext2fs_node *node, struct ext2fs_node *currroot)
  * Optimized read file API : collects and defers contiguous sector
  * reads into one potentially more efficient larger sequential read action
  */
-int ext4fs_read_file(struct ext2fs_node *node, int pos,
-               unsigned int len, char *buf)
+int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,
+               loff_t len, char *buf, loff_t *actread)
 {
        struct ext_filesystem *fs = get_fs();
        int i;
@@ -67,11 +68,11 @@ int ext4fs_read_file(struct ext2fs_node *node, int pos,
        if (len > filesize)
                len = filesize;
 
-       blockcnt = ((len + pos) + blocksize - 1) / blocksize;
+       blockcnt = lldiv(((len + pos) + blocksize - 1), blocksize);
 
-       for (i = pos / blocksize; i < blockcnt; i++) {
+       for (i = lldiv(pos, blocksize); i < blockcnt; i++) {
                lbaint_t blknr;
-               int blockoff = pos % blocksize;
+               int blockoff = pos - (blocksize * i);
                int blockend = blocksize;
                int skipfirst = 0;
                blknr = read_allocated_block(&(node->inode), i);
@@ -82,7 +83,7 @@ int ext4fs_read_file(struct ext2fs_node *node, int pos,
 
                /* Last block.  */
                if (i == blockcnt - 1) {
-                       blockend = (len + pos) % blocksize;
+                       blockend = (len + pos) - (blocksize * i);
 
                        /* The last portion is exactly blocksize. */
                        if (!blockend)
@@ -90,7 +91,7 @@ int ext4fs_read_file(struct ext2fs_node *node, int pos,
                }
 
                /* First block. */
-               if (i == pos / blocksize) {
+               if (i == lldiv(pos, blocksize)) {
                        skipfirst = blockoff;
                        blockend -= skipfirst;
                }
@@ -150,7 +151,8 @@ int ext4fs_read_file(struct ext2fs_node *node, int pos,
                previous_block_number = -1;
        }
 
-       return len;
+       *actread  = len;
+       return 0;
 }
 
 int ext4fs_ls(const char *dirname)
@@ -176,23 +178,24 @@ int ext4fs_ls(const char *dirname)
 
 int ext4fs_exists(const char *filename)
 {
-       int file_len;
+       loff_t file_len;
+       int ret;
 
-       file_len = ext4fs_open(filename);
-       return file_len >= 0;
+       ret = ext4fs_open(filename, &file_len);
+       return ret == 0;
 }
 
-int ext4fs_size(const char *filename)
+int ext4fs_size(const char *filename, loff_t *size)
 {
-       return ext4fs_open(filename);
+       return ext4fs_open(filename, size);
 }
 
-int ext4fs_read(char *buf, unsigned len)
+int ext4fs_read(char *buf, loff_t len, loff_t *actread)
 {
        if (ext4fs_root == NULL || ext4fs_file == NULL)
                return 0;
 
-       return ext4fs_read_file(ext4fs_file, 0, len, buf);
+       return ext4fs_read_file(ext4fs_file, 0, len, buf, actread);
 }
 
 int ext4fs_probe(block_dev_desc_t *fs_dev_desc,
@@ -208,18 +211,19 @@ int ext4fs_probe(block_dev_desc_t *fs_dev_desc,
        return 0;
 }
 
-int ext4_read_file(const char *filename, void *buf, int offset, int len)
+int ext4_read_file(const char *filename, void *buf, loff_t offset, loff_t len,
+                  loff_t *len_read)
 {
-       int file_len;
-       int len_read;
+       loff_t file_len;
+       int ret;
 
        if (offset != 0) {
                printf("** Cannot support non-zero offset **\n");
                return -1;
        }
 
-       file_len = ext4fs_open(filename);
-       if (file_len < 0) {
+       ret = ext4fs_open(filename, &file_len);
+       if (ret < 0) {
                printf("** File not found %s **\n", filename);
                return -1;
        }
@@ -227,7 +231,20 @@ int ext4_read_file(const char *filename, void *buf, int offset, int len)
        if (len == 0)
                len = file_len;
 
-       len_read = ext4fs_read(buf, len);
+       return ext4fs_read(buf, len, len_read);
+}
 
-       return len_read;
+int ext4fs_uuid(char *uuid_str)
+{
+       if (ext4fs_root == NULL)
+               return -1;
+
+#ifdef CONFIG_LIB_UUID
+       uuid_bin_to_str((unsigned char *)ext4fs_root->sblock.unique_id,
+                       uuid_str, UUID_STR_FORMAT_STD);
+
+       return 0;
+#else
+       return -ENOSYS;
+#endif
 }
index 561921fa2d364e548629fe8152cb953861699b3f..bccc3e3ed8fd0929c7f1adf33b2125178be75ccb 100644 (file)
@@ -317,32 +317,32 @@ get_cluster(fsdata *mydata, __u32 clustnum, __u8 *buffer, unsigned long size)
 /*
  * Read at most 'maxsize' bytes from 'pos' in the file associated with 'dentptr'
  * into 'buffer'.
- * Return the number of bytes read or -1 on fatal errors.
+ * Update the number of bytes read in *gotsize or return -1 on fatal errors.
  */
 __u8 get_contents_vfatname_block[MAX_CLUSTSIZE]
        __aligned(ARCH_DMA_MINALIGN);
 
-static long
-get_contents(fsdata *mydata, dir_entry *dentptr, unsigned long pos,
-            __u8 *buffer, unsigned long maxsize)
+static int get_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos,
+                       __u8 *buffer, loff_t maxsize, loff_t *gotsize)
 {
-       unsigned long filesize = FAT2CPU32(dentptr->size), gotsize = 0;
+       loff_t filesize = FAT2CPU32(dentptr->size);
        unsigned int bytesperclust = mydata->clust_size * mydata->sect_size;
        __u32 curclust = START(dentptr);
        __u32 endclust, newclust;
-       unsigned long actsize;
+       loff_t actsize;
 
-       debug("Filesize: %ld bytes\n", filesize);
+       *gotsize = 0;
+       debug("Filesize: %llu bytes\n", filesize);
 
        if (pos >= filesize) {
-               debug("Read position past EOF: %lu\n", pos);
-               return gotsize;
+               debug("Read position past EOF: %llu\n", pos);
+               return 0;
        }
 
        if (maxsize > 0 && filesize > pos + maxsize)
                filesize = pos + maxsize;
 
-       debug("%ld bytes\n", filesize);
+       debug("%llu bytes\n", filesize);
 
        actsize = bytesperclust;
 
@@ -352,7 +352,7 @@ get_contents(fsdata *mydata, dir_entry *dentptr, unsigned long pos,
                if (CHECK_CLUST(curclust, mydata->fatsize)) {
                        debug("curclust: 0x%x\n", curclust);
                        debug("Invalid FAT entry\n");
-                       return gotsize;
+                       return 0;
                }
                actsize += bytesperclust;
        }
@@ -364,7 +364,7 @@ get_contents(fsdata *mydata, dir_entry *dentptr, unsigned long pos,
 
        /* align to beginning of next cluster if any */
        if (pos) {
-               actsize = min(filesize, bytesperclust);
+               actsize = min(filesize, (loff_t)bytesperclust);
                if (get_cluster(mydata, curclust, get_contents_vfatname_block,
                                (int)actsize) != 0) {
                        printf("Error reading cluster\n");
@@ -373,16 +373,16 @@ get_contents(fsdata *mydata, dir_entry *dentptr, unsigned long pos,
                filesize -= actsize;
                actsize -= pos;
                memcpy(buffer, get_contents_vfatname_block + pos, actsize);
-               gotsize += actsize;
+               *gotsize += actsize;
                if (!filesize)
-                       return gotsize;
+                       return 0;
                buffer += actsize;
 
                curclust = get_fatent(mydata, curclust);
                if (CHECK_CLUST(curclust, mydata->fatsize)) {
                        debug("curclust: 0x%x\n", curclust);
                        debug("Invalid FAT entry\n");
-                       return gotsize;
+                       return 0;
                }
        }
 
@@ -398,7 +398,7 @@ get_contents(fsdata *mydata, dir_entry *dentptr, unsigned long pos,
                        if (CHECK_CLUST(newclust, mydata->fatsize)) {
                                debug("curclust: 0x%x\n", newclust);
                                debug("Invalid FAT entry\n");
-                               return gotsize;
+                               return 0;
                        }
                        endclust = newclust;
                        actsize += bytesperclust;
@@ -410,14 +410,14 @@ get_contents(fsdata *mydata, dir_entry *dentptr, unsigned long pos,
                        printf("Error reading cluster\n");
                        return -1;
                }
-               gotsize += actsize;
-               return gotsize;
+               *gotsize += actsize;
+               return 0;
 getit:
                if (get_cluster(mydata, curclust, buffer, (int)actsize) != 0) {
                        printf("Error reading cluster\n");
                        return -1;
                }
-               gotsize += (int)actsize;
+               *gotsize += (int)actsize;
                filesize -= actsize;
                buffer += actsize;
 
@@ -425,7 +425,7 @@ getit:
                if (CHECK_CLUST(curclust, mydata->fatsize)) {
                        debug("curclust: 0x%x\n", curclust);
                        printf("Invalid FAT entry\n");
-                       return gotsize;
+                       return 0;
                }
                actsize = bytesperclust;
                endclust = curclust;
@@ -633,8 +633,8 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
                                                }
                                                if (doit) {
                                                        if (dirc == ' ') {
-                                                               printf(" %8ld   %s%c\n",
-                                                                       (long)FAT2CPU32(dentptr->size),
+                                                               printf(" %8u   %s%c\n",
+                                                                      FAT2CPU32(dentptr->size),
                                                                        l_name,
                                                                        dirc);
                                                        } else {
@@ -690,8 +690,8 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
 
                                if (doit) {
                                        if (dirc == ' ') {
-                                               printf(" %8ld   %s%c\n",
-                                                       (long)FAT2CPU32(dentptr->size),
+                                               printf(" %8u   %s%c\n",
+                                                      FAT2CPU32(dentptr->size),
                                                        s_name, dirc);
                                        } else {
                                                printf("            %s%c\n",
@@ -806,9 +806,8 @@ exit:
 __u8 do_fat_read_at_block[MAX_CLUSTSIZE]
        __aligned(ARCH_DMA_MINALIGN);
 
-long
-do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
-              unsigned long maxsize, int dols, int dogetsize)
+int do_fat_read_at(const char *filename, loff_t pos, void *buffer,
+                  loff_t maxsize, int dols, int dogetsize, loff_t *size)
 {
        char fnamecopy[2048];
        boot_sector bs;
@@ -821,11 +820,14 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
        __u32 cursect;
        int idx, isdir = 0;
        int files = 0, dirs = 0;
-       long ret = -1;
+       int ret = -1;
        int firsttime;
        __u32 root_cluster = 0;
+       __u32 read_blk;
        int rootdir_size = 0;
-       int j;
+       int buffer_blk_cnt;
+       int do_read;
+       __u8 *dir_ptr;
 
        if (read_bootsectandvi(&bs, &volinfo, &mydata->fatsize)) {
                debug("Error: reading boot sector\n");
@@ -910,24 +912,54 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
                isdir = 1;
        }
 
-       j = 0;
+       buffer_blk_cnt = 0;
+       firsttime = 1;
        while (1) {
                int i;
 
-               if (j == 0) {
-                       debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%zd\n",
-                               cursect, mydata->clust_size, DIRENTSPERBLOCK);
+               if (mydata->fatsize == 32 || firsttime) {
+                       dir_ptr = do_fat_read_at_block;
+                       firsttime = 0;
+               } else {
+                       /**
+                        * FAT16 sector buffer modification:
+                        * Each loop, the second buffered block is moved to
+                        * the buffer begin, and two next sectors are read
+                        * next to the previously moved one. So the sector
+                        * buffer keeps always 3 sectors for fat16.
+                        * And the current sector is the buffer second sector
+                        * beside the "firsttime" read, when it is the first one.
+                        *
+                        * PREFETCH_BLOCKS is 2 for FAT16 == loop[0:1]
+                        * n = computed root dir sector
+                        * loop |  cursect-1  | cursect    | cursect+1  |
+                        *   0  |  sector n+0 | sector n+1 | none       |
+                        *   1  |  none       | sector n+0 | sector n+1 |
+                        *   0  |  sector n+1 | sector n+2 | sector n+3 |
+                        *   1  |  sector n+3 | ...
+                       */
+                       dir_ptr = (do_fat_read_at_block + mydata->sect_size);
+                       memcpy(do_fat_read_at_block, dir_ptr, mydata->sect_size);
+               }
+
+               do_read = 1;
+
+               if (mydata->fatsize == 32 && buffer_blk_cnt)
+                       do_read = 0;
+
+               if (do_read) {
+                       read_blk = (mydata->fatsize == 32) ?
+                                   mydata->clust_size : PREFETCH_BLOCKS;
 
-                       if (disk_read(cursect,
-                                       (mydata->fatsize == 32) ?
-                                       (mydata->clust_size) :
-                                       PREFETCH_BLOCKS,
-                                       do_fat_read_at_block) < 0) {
+                       debug("FAT read(sect=%d, cnt:%d), clust_size=%d, DIRENTSPERBLOCK=%zd\n",
+                               cursect, read_blk, mydata->clust_size, DIRENTSPERBLOCK);
+
+                       if (disk_read(cursect, read_blk, dir_ptr) < 0) {
                                debug("Error: reading rootdir block\n");
                                goto exit;
                        }
 
-                       dentptr = (dir_entry *) do_fat_read_at_block;
+                       dentptr = (dir_entry *)dir_ptr;
                }
 
                for (i = 0; i < DIRENTSPERBLOCK; i++) {
@@ -952,7 +984,7 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
 
                                        get_vfatname(mydata,
                                                     root_cluster,
-                                                    do_fat_read_at_block,
+                                                    dir_ptr,
                                                     dentptr, l_name);
 
                                        if (dols == LS_ROOT) {
@@ -974,8 +1006,8 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
                                                }
                                                if (doit) {
                                                        if (dirc == ' ') {
-                                                               printf(" %8ld   %s%c\n",
-                                                                       (long)FAT2CPU32(dentptr->size),
+                                                               printf(" %8u   %s%c\n",
+                                                                      FAT2CPU32(dentptr->size),
                                                                        l_name,
                                                                        dirc);
                                                        } else {
@@ -1032,8 +1064,8 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
                                }
                                if (doit) {
                                        if (dirc == ' ') {
-                                               printf(" %8ld   %s%c\n",
-                                                       (long)FAT2CPU32(dentptr->size),
+                                               printf(" %8u   %s%c\n",
+                                                      FAT2CPU32(dentptr->size),
                                                        s_name, dirc);
                                        } else {
                                                printf("            %s%c\n",
@@ -1063,7 +1095,7 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
 
                        goto rootdir_done;      /* We got a match */
                }
-               debug("END LOOP: j=%d   clust_size=%d\n", j,
+               debug("END LOOP: buffer_blk_cnt=%d   clust_size=%d\n", buffer_blk_cnt,
                       mydata->clust_size);
 
                /*
@@ -1071,10 +1103,10 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
                 * root directory clusters when a cluster has been
                 * completely processed.
                 */
-               ++j;
+               ++buffer_blk_cnt;
                int rootdir_end = 0;
                if (mydata->fatsize == 32) {
-                       if (j == mydata->clust_size) {
+                       if (buffer_blk_cnt == mydata->clust_size) {
                                int nxtsect = 0;
                                int nxt_clust = 0;
 
@@ -1087,11 +1119,11 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
                                root_cluster = nxt_clust;
 
                                cursect = nxtsect;
-                               j = 0;
+                               buffer_blk_cnt = 0;
                        }
                } else {
-                       if (j == PREFETCH_BLOCKS)
-                               j = 0;
+                       if (buffer_blk_cnt == PREFETCH_BLOCKS)
+                               buffer_blk_cnt = 0;
 
                        rootdir_end = (++cursect - mydata->rootdir_sect >=
                                       rootdir_size);
@@ -1102,7 +1134,7 @@ do_fat_read_at(const char *filename, unsigned long pos, void *buffer,
                        if (dols == LS_ROOT) {
                                printf("\n%d file(s), %d dir(s)\n\n",
                                       files, dirs);
-                               ret = 0;
+                               *size = 0;
                        }
                        goto exit;
                }
@@ -1141,7 +1173,7 @@ rootdir_done:
                if (get_dentfromdir(mydata, startsect, subname, dentptr,
                                     isdir ? 0 : dols) == NULL) {
                        if (dols && !isdir)
-                               ret = 0;
+                               *size = 0;
                        goto exit;
                }
 
@@ -1152,21 +1184,23 @@ rootdir_done:
                        subname = nextname;
        }
 
-       if (dogetsize)
-               ret = FAT2CPU32(dentptr->size);
-       else
-               ret = get_contents(mydata, dentptr, pos, buffer, maxsize);
-       debug("Size: %d, got: %ld\n", FAT2CPU32(dentptr->size), ret);
+       if (dogetsize) {
+               *size = FAT2CPU32(dentptr->size);
+               ret = 0;
+       } else {
+               ret = get_contents(mydata, dentptr, pos, buffer, maxsize, size);
+       }
+       debug("Size: %u, got: %llu\n", FAT2CPU32(dentptr->size), *size);
 
 exit:
        free(mydata->fatbuf);
        return ret;
 }
 
-long
-do_fat_read(const char *filename, void *buffer, unsigned long maxsize, int dols)
+int do_fat_read(const char *filename, void *buffer, loff_t maxsize, int dols,
+               loff_t *actread)
 {
-       return do_fat_read_at(filename, 0, buffer, maxsize, dols, 0);
+       return do_fat_read_at(filename, 0, buffer, maxsize, dols, 0, actread);
 }
 
 int file_fat_detectfs(void)
@@ -1233,44 +1267,55 @@ int file_fat_detectfs(void)
 
 int file_fat_ls(const char *dir)
 {
-       return do_fat_read(dir, NULL, 0, LS_YES);
+       loff_t size;
+
+       return do_fat_read(dir, NULL, 0, LS_YES, &size);
 }
 
 int fat_exists(const char *filename)
 {
-       int sz;
-       sz = do_fat_read_at(filename, 0, NULL, 0, LS_NO, 1);
-       return sz >= 0;
+       int ret;
+       loff_t size;
+
+       ret = do_fat_read_at(filename, 0, NULL, 0, LS_NO, 1, &size);
+       return ret == 0;
 }
 
-int fat_size(const char *filename)
+int fat_size(const char *filename, loff_t *size)
 {
-       return do_fat_read_at(filename, 0, NULL, 0, LS_NO, 1);
+       return do_fat_read_at(filename, 0, NULL, 0, LS_NO, 1, size);
 }
 
-long file_fat_read_at(const char *filename, unsigned long pos, void *buffer,
-                     unsigned long maxsize)
+int file_fat_read_at(const char *filename, loff_t pos, void *buffer,
+                    loff_t maxsize, loff_t *actread)
 {
        printf("reading %s\n", filename);
-       return do_fat_read_at(filename, pos, buffer, maxsize, LS_NO, 0);
+       return do_fat_read_at(filename, pos, buffer, maxsize, LS_NO, 0,
+                             actread);
 }
 
-long file_fat_read(const char *filename, void *buffer, unsigned long maxsize)
+int file_fat_read(const char *filename, void *buffer, int maxsize)
 {
-       return file_fat_read_at(filename, 0, buffer, maxsize);
+       loff_t actread;
+       int ret;
+
+       ret =  file_fat_read_at(filename, 0, buffer, maxsize, &actread);
+       if (ret)
+               return ret;
+       else
+               return actread;
 }
 
-int fat_read_file(const char *filename, void *buf, int offset, int len)
+int fat_read_file(const char *filename, void *buf, loff_t offset, loff_t len,
+                 loff_t *actread)
 {
-       int len_read;
+       int ret;
 
-       len_read = file_fat_read_at(filename, offset, buf, len);
-       if (len_read == -1) {
+       ret = file_fat_read_at(filename, offset, buf, len, actread);
+       if (ret)
                printf("** Unable to read file %s **\n", filename);
-               return -1;
-       }
 
-       return len_read;
+       return ret;
 }
 
 void fat_close(void)
index 24ed5d371502e651f2c5a3a41b0cb90e1ffc11b2..98b88add83c507116bfa05a7927983c785a13a2c 100644 (file)
@@ -13,6 +13,8 @@
 #include <asm/byteorder.h>
 #include <part.h>
 #include <linux/ctype.h>
+#include <div64.h>
+#include <linux/math64.h>
 #include "fat.c"
 
 static void uppercase(char *str, int len)
@@ -660,24 +662,26 @@ static int clear_fatent(fsdata *mydata, __u32 entry)
 /*
  * Write at most 'maxsize' bytes from 'buffer' into
  * the file associated with 'dentptr'
- * Return the number of bytes read or -1 on fatal errors.
+ * Update the number of bytes written in *gotsize and return 0
+ * or return -1 on fatal errors.
  */
 static int
 set_contents(fsdata *mydata, dir_entry *dentptr, __u8 *buffer,
-             unsigned long maxsize)
+             loff_t maxsize, loff_t *gotsize)
 {
-       unsigned long filesize = FAT2CPU32(dentptr->size), gotsize = 0;
+       loff_t filesize = FAT2CPU32(dentptr->size);
        unsigned int bytesperclust = mydata->clust_size * mydata->sect_size;
        __u32 curclust = START(dentptr);
        __u32 endclust = 0, newclust = 0;
-       unsigned long actsize;
+       loff_t actsize;
 
-       debug("Filesize: %ld bytes\n", filesize);
+       *gotsize = 0;
+       debug("Filesize: %llu bytes\n", filesize);
 
        if (maxsize > 0 && filesize > maxsize)
                filesize = maxsize;
 
-       debug("%ld bytes\n", filesize);
+       debug("%llu bytes\n", filesize);
 
        actsize = bytesperclust;
        endclust = curclust;
@@ -692,7 +696,7 @@ set_contents(fsdata *mydata, dir_entry *dentptr, __u8 *buffer,
                        if (CHECK_CLUST(newclust, mydata->fatsize)) {
                                debug("curclust: 0x%x\n", newclust);
                                debug("Invalid FAT entry\n");
-                               return gotsize;
+                               return 0;
                        }
                        endclust = newclust;
                        actsize += bytesperclust;
@@ -706,7 +710,7 @@ set_contents(fsdata *mydata, dir_entry *dentptr, __u8 *buffer,
                }
 
                /* set remaining bytes */
-               gotsize += (int)actsize;
+               *gotsize += actsize;
                filesize -= actsize;
                buffer += actsize;
                actsize = filesize;
@@ -715,7 +719,7 @@ set_contents(fsdata *mydata, dir_entry *dentptr, __u8 *buffer,
                        debug("error: writing cluster\n");
                        return -1;
                }
-               gotsize += actsize;
+               *gotsize += actsize;
 
                /* Mark end of file in FAT */
                if (mydata->fatsize == 16)
@@ -724,20 +728,20 @@ set_contents(fsdata *mydata, dir_entry *dentptr, __u8 *buffer,
                        newclust = 0xfffffff;
                set_fatent_value(mydata, endclust, newclust);
 
-               return gotsize;
+               return 0;
 getit:
                if (set_cluster(mydata, curclust, buffer, (int)actsize) != 0) {
                        debug("error: writing cluster\n");
                        return -1;
                }
-               gotsize += (int)actsize;
+               *gotsize += actsize;
                filesize -= actsize;
                buffer += actsize;
 
                if (CHECK_CLUST(curclust, mydata->fatsize)) {
                        debug("curclust: 0x%x\n", curclust);
                        debug("Invalid FAT entry\n");
-                       return gotsize;
+                       return 0;
                }
                actsize = bytesperclust;
                curclust = endclust = newclust;
@@ -766,9 +770,9 @@ static void fill_dentry(fsdata *mydata, dir_entry *dentptr,
  * exceed the size of the block device
  * Return -1 when overflow occurs, otherwise return 0
  */
-static int check_overflow(fsdata *mydata, __u32 clustnum, unsigned long size)
+static int check_overflow(fsdata *mydata, __u32 clustnum, loff_t size)
 {
-       __u32 startsect, sect_num;
+       __u32 startsect, sect_num, offset;
 
        if (clustnum > 0) {
                startsect = mydata->data_begin +
@@ -777,13 +781,13 @@ static int check_overflow(fsdata *mydata, __u32 clustnum, unsigned long size)
                startsect = mydata->rootdir_sect;
        }
 
-       sect_num = size / mydata->sect_size;
-       if (size % mydata->sect_size)
+       sect_num = div_u64_rem(size, mydata->sect_size, &offset);
+
+       if (offset != 0)
                sect_num++;
 
        if (startsect + sect_num > cur_part_info.start + total_sector)
                return -1;
-
        return 0;
 }
 
@@ -923,8 +927,8 @@ static dir_entry *find_directory_entry(fsdata *mydata, int startsect,
        return NULL;
 }
 
-static int do_fat_write(const char *filename, void *buffer,
-       unsigned long size)
+static int do_fat_write(const char *filename, void *buffer, loff_t size,
+                       loff_t *actwrite)
 {
        dir_entry *dentptr, *retdent;
        __u32 startsect;
@@ -936,8 +940,8 @@ static int do_fat_write(const char *filename, void *buffer,
        int cursect;
        int ret = -1, name_len;
        char l_filename[VFAT_MAXLEN_BYTES];
-       int write_size = size;
 
+       *actwrite = size;
        dir_curclust = 0;
 
        if (read_bootsectandvi(&bs, &volinfo, &mydata->fatsize)) {
@@ -1015,7 +1019,7 @@ static int do_fat_write(const char *filename, void *buffer,
 
                ret = check_overflow(mydata, start_cluster, size);
                if (ret) {
-                       printf("Error: %ld overflow\n", size);
+                       printf("Error: %llu overflow\n", size);
                        goto exit;
                }
 
@@ -1025,13 +1029,12 @@ static int do_fat_write(const char *filename, void *buffer,
                        goto exit;
                }
 
-               ret = set_contents(mydata, retdent, buffer, size);
+               ret = set_contents(mydata, retdent, buffer, size, actwrite);
                if (ret < 0) {
                        printf("Error: writing contents\n");
                        goto exit;
                }
-               write_size = ret;
-               debug("attempt to write 0x%x bytes\n", write_size);
+               debug("attempt to write 0x%llx bytes\n", *actwrite);
 
                /* Flush fat buffer */
                ret = flush_fat_buffer(mydata);
@@ -1061,7 +1064,7 @@ static int do_fat_write(const char *filename, void *buffer,
 
                ret = check_overflow(mydata, start_cluster, size);
                if (ret) {
-                       printf("Error: %ld overflow\n", size);
+                       printf("Error: %llu overflow\n", size);
                        goto exit;
                }
 
@@ -1069,13 +1072,13 @@ static int do_fat_write(const char *filename, void *buffer,
                fill_dentry(mydata, empty_dentptr, filename,
                        start_cluster, size, 0x20);
 
-               ret = set_contents(mydata, empty_dentptr, buffer, size);
+               ret = set_contents(mydata, empty_dentptr, buffer, size,
+                                  actwrite);
                if (ret < 0) {
                        printf("Error: writing contents\n");
                        goto exit;
                }
-               write_size = ret;
-               debug("attempt to write 0x%x bytes\n", write_size);
+               debug("attempt to write 0x%llx bytes\n", *actwrite);
 
                /* Flush fat buffer */
                ret = flush_fat_buffer(mydata);
@@ -1096,11 +1099,17 @@ static int do_fat_write(const char *filename, void *buffer,
 
 exit:
        free(mydata->fatbuf);
-       return ret < 0 ? ret : write_size;
+       return ret;
 }
 
-int file_fat_write(const char *filename, void *buffer, unsigned long maxsize)
+int file_fat_write(const char *filename, void *buffer, loff_t offset,
+                  loff_t maxsize, loff_t *actwrite)
 {
+       if (offset != 0) {
+               printf("Error: non zero offset is currently not suported.\n");
+               return -1;
+       }
+
        printf("writing %s\n", filename);
-       return do_fat_write(filename, buffer, maxsize);
+       return do_fat_write(filename, buffer, maxsize, actwrite);
 }
index d910c46ddb159d5cf43a009f0d9248b5cd9768b2..89706117b9410c1be7363f268881e75640b36b2a 100644 (file)
@@ -162,8 +162,7 @@ file_ls(const char *dir)
        return filesystems[current_filesystem].ls(arg);
 }
 
-long
-file_read(const char *filename, void *buffer, unsigned long maxsize)
+int file_read(const char *filename, void *buffer, int maxsize)
 {
        char fullpath[1024];
        const char *arg;
diff --git a/fs/fs.c b/fs/fs.c
index dd680f39c9ca60472ea91f37a7a325f95da3b672..ddd751c9cccc1d4c30ed6d29bf1d55581e208ab7 100644 (file)
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -15,6 +15,7 @@
  */
 
 #include <config.h>
+#include <errno.h>
 #include <common.h>
 #include <part.h>
 #include <ext4fs.h>
@@ -22,6 +23,8 @@
 #include <fs.h>
 #include <sandboxfs.h>
 #include <asm/io.h>
+#include <div64.h>
+#include <linux/math64.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -46,19 +49,21 @@ static inline int fs_exists_unsupported(const char *filename)
        return 0;
 }
 
-static inline int fs_size_unsupported(const char *filename)
+static inline int fs_size_unsupported(const char *filename, loff_t *size)
 {
        return -1;
 }
 
 static inline int fs_read_unsupported(const char *filename, void *buf,
-                                     int offset, int len)
+                                     loff_t offset, loff_t len,
+                                     loff_t *actread)
 {
        return -1;
 }
 
 static inline int fs_write_unsupported(const char *filename, void *buf,
-                                     int offset, int len)
+                                     loff_t offset, loff_t len,
+                                     loff_t *actwrite)
 {
        return -1;
 }
@@ -67,6 +72,11 @@ static inline void fs_close_unsupported(void)
 {
 }
 
+static inline int fs_uuid_unsupported(char *uuid_str)
+{
+       return -1;
+}
+
 struct fstype_info {
        int fstype;
        /*
@@ -82,10 +92,13 @@ struct fstype_info {
                     disk_partition_t *fs_partition);
        int (*ls)(const char *dirname);
        int (*exists)(const char *filename);
-       int (*size)(const char *filename);
-       int (*read)(const char *filename, void *buf, int offset, int len);
-       int (*write)(const char *filename, void *buf, int offset, int len);
+       int (*size)(const char *filename, loff_t *size);
+       int (*read)(const char *filename, void *buf, loff_t offset,
+                   loff_t len, loff_t *actread);
+       int (*write)(const char *filename, void *buf, loff_t offset,
+                    loff_t len, loff_t *actwrite);
        void (*close)(void);
+       int (*uuid)(char *uuid_str);
 };
 
 static struct fstype_info fstypes[] = {
@@ -99,7 +112,12 @@ static struct fstype_info fstypes[] = {
                .exists = fat_exists,
                .size = fat_size,
                .read = fat_read_file,
+#ifdef CONFIG_FAT_WRITE
+               .write = file_fat_write,
+#else
                .write = fs_write_unsupported,
+#endif
+               .uuid = fs_uuid_unsupported,
        },
 #endif
 #ifdef CONFIG_FS_EXT4
@@ -112,7 +130,12 @@ static struct fstype_info fstypes[] = {
                .exists = ext4fs_exists,
                .size = ext4fs_size,
                .read = ext4_read_file,
+#ifdef CONFIG_CMD_EXT4_WRITE
+               .write = ext4_write_file,
+#else
                .write = fs_write_unsupported,
+#endif
+               .uuid = ext4fs_uuid,
        },
 #endif
 #ifdef CONFIG_SANDBOX
@@ -126,6 +149,7 @@ static struct fstype_info fstypes[] = {
                .size = sandbox_fs_size,
                .read = fs_read_sandbox,
                .write = fs_write_sandbox,
+               .uuid = fs_uuid_unsupported,
        },
 #endif
        {
@@ -138,6 +162,7 @@ static struct fstype_info fstypes[] = {
                .size = fs_size_unsupported,
                .read = fs_read_unsupported,
                .write = fs_write_unsupported,
+               .uuid = fs_uuid_unsupported,
        },
 };
 
@@ -206,6 +231,13 @@ static void fs_close(void)
        fs_type = FS_TYPE_ANY;
 }
 
+int fs_uuid(char *uuid_str)
+{
+       struct fstype_info *info = fs_get_info(fs_type);
+
+       return info->uuid(uuid_str);
+}
+
 int fs_ls(const char *dirname)
 {
        int ret;
@@ -233,20 +265,21 @@ int fs_exists(const char *filename)
        return ret;
 }
 
-int fs_size(const char *filename)
+int fs_size(const char *filename, loff_t *size)
 {
        int ret;
 
        struct fstype_info *info = fs_get_info(fs_type);
 
-       ret = info->size(filename);
+       ret = info->size(filename, size);
 
        fs_close();
 
        return ret;
 }
 
-int fs_read(const char *filename, ulong addr, int offset, int len)
+int fs_read(const char *filename, ulong addr, loff_t offset, loff_t len,
+           loff_t *actread)
 {
        struct fstype_info *info = fs_get_info(fs_type);
        void *buf;
@@ -257,11 +290,11 @@ int fs_read(const char *filename, ulong addr, int offset, int len)
         * means read the whole file.
         */
        buf = map_sysmem(addr, len);
-       ret = info->read(filename, buf, offset, len);
+       ret = info->read(filename, buf, offset, len, actread);
        unmap_sysmem(buf);
 
        /* If we requested a specific number of bytes, check we got it */
-       if (ret >= 0 && len && ret != len) {
+       if (ret == 0 && len && *actread != len) {
                printf("** Unable to read file %s **\n", filename);
                ret = -1;
        }
@@ -270,17 +303,18 @@ int fs_read(const char *filename, ulong addr, int offset, int len)
        return ret;
 }
 
-int fs_write(const char *filename, ulong addr, int offset, int len)
+int fs_write(const char *filename, ulong addr, loff_t offset, loff_t len,
+            loff_t *actwrite)
 {
        struct fstype_info *info = fs_get_info(fs_type);
        void *buf;
        int ret;
 
        buf = map_sysmem(addr, len);
-       ret = info->write(filename, buf, offset, len);
+       ret = info->write(filename, buf, offset, len, actwrite);
        unmap_sysmem(buf);
 
-       if (ret >= 0 && ret != len) {
+       if (ret < 0 && len != *actwrite) {
                printf("** Unable to write file %s **\n", filename);
                ret = -1;
        }
@@ -292,7 +326,7 @@ int fs_write(const char *filename, ulong addr, int offset, int len)
 int do_size(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
                int fstype)
 {
-       int size;
+       loff_t size;
 
        if (argc != 4)
                return CMD_RET_USAGE;
@@ -300,8 +334,7 @@ int do_size(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
        if (fs_set_blk_dev(argv[1], argv[2], fstype))
                return 1;
 
-       size = fs_size(argv[3]);
-       if (size < 0)
+       if (fs_size(argv[3], &size) < 0)
                return CMD_RET_FAILURE;
 
        setenv_hex("filesize", size);
@@ -315,9 +348,10 @@ int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
        unsigned long addr;
        const char *addr_str;
        const char *filename;
-       unsigned long bytes;
-       unsigned long pos;
-       int len_read;
+       loff_t bytes;
+       loff_t pos;
+       loff_t len_read;
+       int ret;
        unsigned long time;
        char *ep;
 
@@ -359,15 +393,15 @@ int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
                pos = 0;
 
        time = get_timer(0);
-       len_read = fs_read(filename, addr, pos, bytes);
+       ret = fs_read(filename, addr, pos, bytes, &len_read);
        time = get_timer(time);
-       if (len_read <= 0)
+       if (ret < 0)
                return 1;
 
-       printf("%d bytes read in %lu ms", len_read, time);
+       printf("%llu bytes read in %lu ms", len_read, time);
        if (time > 0) {
                puts(" (");
-               print_size(len_read / time * 1000, "/s");
+               print_size(div_u64(len_read, time) * 1000, "/s");
                puts(")");
        }
        puts("\n");
@@ -408,9 +442,10 @@ int do_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
 {
        unsigned long addr;
        const char *filename;
-       unsigned long bytes;
-       unsigned long pos;
-       int len;
+       loff_t bytes;
+       loff_t pos;
+       loff_t len;
+       int ret;
        unsigned long time;
 
        if (argc < 6 || argc > 7)
@@ -419,8 +454,8 @@ int do_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
        if (fs_set_blk_dev(argv[1], argv[2], fstype))
                return 1;
 
-       filename = argv[3];
-       addr = simple_strtoul(argv[4], NULL, 16);
+       addr = simple_strtoul(argv[3], NULL, 16);
+       filename = argv[4];
        bytes = simple_strtoul(argv[5], NULL, 16);
        if (argc >= 7)
                pos = simple_strtoul(argv[6], NULL, 16);
@@ -428,18 +463,43 @@ int do_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
                pos = 0;
 
        time = get_timer(0);
-       len = fs_write(filename, addr, pos, bytes);
+       ret = fs_write(filename, addr, pos, bytes, &len);
        time = get_timer(time);
-       if (len <= 0)
+       if (ret < 0)
                return 1;
 
-       printf("%d bytes written in %lu ms", len, time);
+       printf("%llu bytes written in %lu ms", len, time);
        if (time > 0) {
                puts(" (");
-               print_size(len / time * 1000, "/s");
+               print_size(div_u64(len, time) * 1000, "/s");
                puts(")");
        }
        puts("\n");
 
        return 0;
 }
+
+int do_fs_uuid(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
+               int fstype)
+{
+       int ret;
+       char uuid[37];
+       memset(uuid, 0, sizeof(uuid));
+
+       if (argc < 3 || argc > 4)
+               return CMD_RET_USAGE;
+
+       if (fs_set_blk_dev(argv[1], argv[2], fstype))
+               return 1;
+
+       ret = fs_uuid(uuid);
+       if (ret)
+               return CMD_RET_FAILURE;
+
+       if (argc == 4)
+               setenv(argv[3], uuid);
+       else
+               printf("%s\n", uuid);
+
+       return CMD_RET_SUCCESS;
+}
index ba6402c81c0a5a16ac10838cf0c5981331e9031c..a920bc087712ff289c65eec948f0f234229f9f5c 100644 (file)
@@ -13,10 +13,10 @@ int sandbox_fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info)
        return 0;
 }
 
-long sandbox_fs_read_at(const char *filename, unsigned long pos,
-                            void *buffer, unsigned long maxsize)
+int sandbox_fs_read_at(const char *filename, loff_t pos, void *buffer,
+                      loff_t maxsize, loff_t *actread)
 {
-       ssize_t size;
+       loff_t size;
        int fd, ret;
 
        fd = os_open(filename, OS_O_RDONLY);
@@ -27,16 +27,31 @@ long sandbox_fs_read_at(const char *filename, unsigned long pos,
                os_close(fd);
                return ret;
        }
-       if (!maxsize)
-               maxsize = os_get_filesize(filename);
+       if (!maxsize) {
+               ret = os_get_filesize(filename, &size);
+               if (ret) {
+                       os_close(fd);
+                       return ret;
+               }
+
+               maxsize = size;
+       }
+
        size = os_read(fd, buffer, maxsize);
        os_close(fd);
 
-       return size;
+       if (size < 0) {
+               ret = -1;
+       } else {
+               ret = 0;
+               *actread = size;
+       }
+
+       return ret;
 }
 
-long sandbox_fs_write_at(const char *filename, unsigned long pos,
-                        void *buffer, unsigned long towrite)
+int sandbox_fs_write_at(const char *filename, loff_t pos, void *buffer,
+                       loff_t towrite, loff_t *actwrite)
 {
        ssize_t size;
        int fd, ret;
@@ -52,7 +67,14 @@ long sandbox_fs_write_at(const char *filename, unsigned long pos,
        size = os_write(fd, buffer, towrite);
        os_close(fd);
 
-       return size;
+       if (size == -1) {
+               ret = -1;
+       } else {
+               ret = 0;
+               *actwrite = size;
+       }
+
+       return ret;
 }
 
 int sandbox_fs_ls(const char *dirname)
@@ -74,43 +96,42 @@ int sandbox_fs_ls(const char *dirname)
 
 int sandbox_fs_exists(const char *filename)
 {
-       ssize_t sz;
+       loff_t size;
+       int ret;
 
-       sz = os_get_filesize(filename);
-       return sz >= 0;
+       ret = os_get_filesize(filename, &size);
+       return ret == 0;
 }
 
-int sandbox_fs_size(const char *filename)
+int sandbox_fs_size(const char *filename, loff_t *size)
 {
-       return os_get_filesize(filename);
+       return os_get_filesize(filename, size);
 }
 
 void sandbox_fs_close(void)
 {
 }
 
-int fs_read_sandbox(const char *filename, void *buf, int offset, int len)
+int fs_read_sandbox(const char *filename, void *buf, loff_t offset, loff_t len,
+                   loff_t *actread)
 {
-       int len_read;
+       int ret;
 
-       len_read = sandbox_fs_read_at(filename, offset, buf, len);
-       if (len_read == -1) {
+       ret = sandbox_fs_read_at(filename, offset, buf, len, actread);
+       if (ret)
                printf("** Unable to read file %s **\n", filename);
-               return -1;
-       }
 
-       return len_read;
+       return ret;
 }
 
-int fs_write_sandbox(const char *filename, void *buf, int offset, int len)
+int fs_write_sandbox(const char *filename, void *buf, loff_t offset,
+                    loff_t len, loff_t *actwrite)
 {
-       int len_written;
+       int ret;
 
-       len_written = sandbox_fs_write_at(filename, offset, buf, len);
-       if (len_written == -1) {
+       ret = sandbox_fs_write_at(filename, offset, buf, len, actwrite);
+       if (ret)
                printf("** Unable to write file %s **\n", filename);
-               return -1;
-       }
 
-       return len_written;
+       return ret;
 }
index 0ce2475e0b8e9a9c95650837d20fef9adbc5415b..c12026147fc5635512482a8814abc43e17448d78 100644 (file)
@@ -476,10 +476,6 @@ struct file {
 #define MAX_LFS_FILESIZE       0x7fffffffffffffffUL
 #endif
 
-#define INT_MAX                ((int)(~0U>>1))
-#define INT_MIN                (-INT_MAX - 1)
-#define LLONG_MAX      ((long long)(~0ULL>>1))
-
 /*
  * These are the fs-independent mount-flags: up to 32 flags are supported
  */
index 818d3d926d2a3a349ac2e96bef28bc93e24b49cf..fb2b3ee089ecadb8c82cb35bc7912ffce9cbf65d 100644 (file)
@@ -736,7 +736,7 @@ zap_hash(uint64_t salt, const char *name)
        uint64_t crc = salt;
 
        if (table[128] == 0) {
-               uint64_t *ct;
+               uint64_t *ct = NULL;
                int i, j;
                for (i = 0; i < 256; i++) {
                        for (ct = table + i, *ct = i, j = 8; j > 0; j--)
@@ -1060,6 +1060,7 @@ zap_lookup(dnode_end_t *zap_dnode, char *name, uint64_t *val,
        }
 
        printf("unknown ZAP type\n");
+       free(zapbuf);
        return ZFS_ERR_BAD_FS;
 }
 
@@ -1094,6 +1095,7 @@ zap_iterate(dnode_end_t *zap_dnode,
                return ret;
        }
        printf("unknown ZAP type\n");
+       free(zapbuf);
        return 0;
 }
 
@@ -1865,6 +1867,7 @@ zfs_mount(device_t dev)
 
        ubbest = malloc(sizeof(*ubbest));
        if (!ubbest) {
+               free(ub_array);
                zfs_unmount(data);
                return 0;
        }
@@ -1953,6 +1956,7 @@ zfs_mount(device_t dev)
        if (err) {
                printf("couldn't zio_read object directory\n");
                zfs_unmount(data);
+               free(osp);
                free(ubbest);
                return 0;
        }
@@ -2052,6 +2056,9 @@ zfs_open(struct zfs_file *file, const char *fsfilename)
 
                hdrsize = SA_HDR_SIZE(((sa_hdr_phys_t *) sahdrp));
                file->size = *(uint64_t *) ((char *) sahdrp + hdrsize + SA_SIZE_OFFSET);
+               if ((data->dnode.dn.dn_bonuslen == 0) &&
+                       (data->dnode.dn.dn_flags & DNODE_FLAG_SPILL_BLKPTR))
+                       free(sahdrp);
        } else {
                file->size = zfs_to_cpu64(((znode_phys_t *) DN_BONUS(&data->dnode.dn))->zp_size, data->dnode.endian);
        }
index 35b8a8c09b1879530e971f9583e40e253a980f9a..e8dee5357514c1cb33140da968626d8217f145ba 100644 (file)
@@ -161,5 +161,6 @@ struct ahci_probe_ent {
 };
 
 int ahci_init(u32 base);
+int ahci_reset(u32 base);
 
 #endif
index 74df21003363305e98a7b84d27275612df1a98fe..3d14d5f11746680256ffbfb053da8d4c2bbcb3d6 100644 (file)
@@ -91,6 +91,13 @@ typedef struct global_data {
        unsigned long malloc_limit;     /* limit address */
        unsigned long malloc_ptr;       /* current address */
 #endif
+#ifdef CONFIG_PCI
+       struct pci_controller *hose;    /* PCI hose for early use */
+#endif
+#ifdef CONFIG_PCI_BOOTDELAY
+       int pcidelay_done;
+#endif
+       struct udevice *cur_serial_dev; /* current serial device */
        struct arch_global_data arch;   /* architecture-specific data */
 } gd_t;
 #endif
@@ -107,5 +114,6 @@ typedef struct global_data {
 #define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out)      */
 #define GD_FLG_ENV_READY       0x00080 /* Env. imported into hash table   */
 #define GD_FLG_SERIAL_READY    0x00100 /* Pre-reloc serial console ready  */
+#define GD_FLG_FULL_MALLOC_INIT        0x00200 /* Full malloc() is ready          */
 
 #endif /* __ASM_GENERIC_GBL_DATA_H */
index f81b51aa301feec3f13dc787c95626c2f84012a8..36a36c64b8a6a19879e5236eb85af2fd5960a43d 100644 (file)
@@ -257,6 +257,15 @@ const char *gpio_get_bank_info(struct udevice *dev, int *offset_count);
 int gpio_lookup_name(const char *name, struct udevice **devp,
                     unsigned int *offsetp, unsigned int *gpiop);
 
-int name_to_gpio(const char *name);
+/**
+ * get_gpios() - Turn the values of a list of GPIOs into an integer
+ *
+ * This puts the value of the first GPIO into bit 0, the second into bit 1,
+ * etc. then returns the resulting integer.
+ *
+ * @gpio_list: List of GPIOs to collect
+ * @return resulting integer value
+ */
+unsigned gpio_get_values_as_int(const int *gpio_list);
 
 #endif /* _ASM_GENERIC_GPIO_H_ */
index 21efce64bb85721e1b5686cf199bd21ffda7b38f..043624953add783369ae90e86beffb1e5e4a6d3a 100644 (file)
@@ -4,6 +4,8 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#define AXP_GPIO
+
 extern int axp209_set_dcdc2(int mvolt);
 extern int axp209_set_dcdc3(int mvolt);
 extern int axp209_set_ldo2(int mvolt);
@@ -12,3 +14,8 @@ extern int axp209_set_ldo4(int mvolt);
 extern int axp209_init(void);
 extern int axp209_poweron_by_dc(void);
 extern int axp209_power_button(void);
+
+extern int axp_gpio_direction_input(unsigned int pin);
+extern int axp_gpio_direction_output(unsigned int pin, unsigned int val);
+extern int axp_gpio_get_value(unsigned int pin);
+extern int axp_gpio_set_value(unsigned int pin, unsigned int val);
diff --git a/include/axp221.h b/include/axp221.h
new file mode 100644 (file)
index 0000000..e6639f1
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * (C) Copyright 2013 Oliver Schinagl <oliver@schinagl.nl>
+ *
+ * X-Powers AXP221 Power Management IC driver
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#define AXP221_CHIP_ADDR 0x68
+#define AXP221_CTRL_ADDR 0x3e
+#define AXP221_INIT_DATA 0x3e
+
+#define AXP223_DEVICE_ADDR 0x3a3
+#define AXP223_RUNTIME_ADDR 0x2d
+#define AXP223_DEVICE_MODE_DATA 0x7c3e00
+
+/* Page 0 addresses */
+#define AXP221_CHIP_ID         0x03
+#define AXP221_OUTPUT_CTRL1    0x10
+#define AXP221_OUTPUT_CTRL1_DCDC0_EN   (1 << 0)
+#define AXP221_OUTPUT_CTRL1_DCDC1_EN   (1 << 1)
+#define AXP221_OUTPUT_CTRL1_DCDC2_EN   (1 << 2)
+#define AXP221_OUTPUT_CTRL1_DCDC3_EN   (1 << 3)
+#define AXP221_OUTPUT_CTRL1_DCDC4_EN   (1 << 4)
+#define AXP221_OUTPUT_CTRL1_DCDC5_EN   (1 << 5)
+#define AXP221_OUTPUT_CTRL1_ALDO1_EN   (1 << 6)
+#define AXP221_OUTPUT_CTRL1_ALDO2_EN   (1 << 7)
+#define AXP221_OUTPUT_CTRL2    0x12
+#define AXP221_OUTPUT_CTRL2_DLDO1_EN   (1 << 3)
+#define AXP221_OUTPUT_CTRL2_DLDO2_EN   (1 << 4)
+#define AXP221_OUTPUT_CTRL2_DLDO3_EN   (1 << 5)
+#define AXP221_OUTPUT_CTRL2_DLDO4_EN   (1 << 6)
+#define AXP221_OUTPUT_CTRL2_DCDC1SW_EN (1 << 7)
+#define AXP221_OUTPUT_CTRL3    0x13
+#define AXP221_OUTPUT_CTRL3_ALDO3_EN   (1 << 7)
+#define AXP221_DLDO1_CTRL      0x15
+#define AXP221_DLDO2_CTRL      0x16
+#define AXP221_DLDO3_CTRL      0x17
+#define AXP221_DLDO4_CTRL      0x18
+#define AXP221_DCDC1_CTRL      0x21
+#define AXP221_DCDC2_CTRL      0x22
+#define AXP221_DCDC3_CTRL      0x23
+#define AXP221_DCDC4_CTRL      0x24
+#define AXP221_DCDC5_CTRL      0x25
+#define AXP221_ALDO1_CTRL      0x28
+#define AXP221_ALDO2_CTRL      0x29
+#define AXP221_ALDO3_CTRL      0x2a
+#define AXP221_VBUS_IPSOUT     0x30
+#define AXP221_VBUS_IPSOUT_DRIVEBUS    (1 << 2)
+#define AXP221_MISC_CTRL       0x8f
+#define AXP221_MISC_CTRL_N_VBUSEN_FUNC (1 << 4)
+#define AXP221_PAGE            0xff
+
+/* Page 1 addresses */
+#define AXP221_SID             0x20
+
+/* We support drivebus control */
+#define AXP_DRIVEBUS
+
+int axp221_set_dcdc1(unsigned int mvolt);
+int axp221_set_dcdc2(unsigned int mvolt);
+int axp221_set_dcdc3(unsigned int mvolt);
+int axp221_set_dcdc4(unsigned int mvolt);
+int axp221_set_dcdc5(unsigned int mvolt);
+int axp221_set_dldo1(unsigned int mvolt);
+int axp221_set_dldo2(unsigned int mvolt);
+int axp221_set_dldo3(unsigned int mvolt);
+int axp221_set_dldo4(unsigned int mvolt);
+int axp221_set_aldo1(unsigned int mvolt);
+int axp221_set_aldo2(unsigned int mvolt);
+int axp221_set_aldo3(unsigned int mvolt);
+int axp221_init(void);
+int axp221_get_sid(unsigned int *sid);
+int axp_drivebus_enable(void);
+int axp_drivebus_disable(void);
diff --git a/include/bios_emul.h b/include/bios_emul.h
new file mode 100644 (file)
index 0000000..3643b82
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 1996-1999 SciTech Software, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _BIOS_EMUL_H
+#define _BIOS_EMUL_H
+
+/* Include the register header directly here */
+#include "../drivers/bios_emulator/include/x86emu/regs.h"
+#include <pci.h>
+
+/****************************************************************************
+REMARKS:
+Data structure used to describe the details for the BIOS emulator system
+environment as used by the X86 emulator library.
+
+HEADER:
+biosemu.h
+
+MEMBERS:
+vgaInfo         - VGA BIOS information structure
+biosmem_base    - Base of the BIOS image
+biosmem_limit   - Limit of the BIOS image
+busmem_base     - Base of the VGA bus memory
+****************************************************************************/
+typedef struct {
+       int function;
+       int device;
+       int bus;
+       u32 VendorID;
+       u32 DeviceID;
+       pci_dev_t pcidev;
+       void *BIOSImage;
+       u32 BIOSImageLen;
+       u8 LowMem[1536];
+} BE_VGAInfo;
+
+struct vbe_mode_info;
+
+int BootVideoCardBIOS(pci_dev_t pcidev, BE_VGAInfo **pVGAInfo, int cleanUp);
+
+/* Run a BIOS ROM natively (only supported on x86 machines) */
+void bios_run_on_x86(pci_dev_t pcidev, unsigned long addr, int vesa_mode,
+                    struct vbe_mode_info *mode_info);
+
+/**
+ * bios_set_interrupt_handler() - Install an interrupt handler for the BIOS
+ *
+ * This installs an interrupt handler that the BIOS will call when needed.
+ *
+ * @intnum:            Interrupt number to install a handler for
+ * @int_handler_func:  Function to call to handle interrupt
+ */
+void bios_set_interrupt_handler(int intnum, int (*int_handler_func)(void));
+
+void biosemu_set_interrupt_handler(int intnum, int (*int_func)(void));
+
+int biosemu_setup(pci_dev_t pcidev, BE_VGAInfo **pVGAInfo);
+
+int biosemu_run(pci_dev_t pcidev, uchar *bios_rom, int bios_len,
+               BE_VGAInfo *vga_info, int clean_up, int vesa_mode,
+               struct vbe_mode_info *mode_info);
+
+#endif
index ecf7fcaf7b65f2cb98be8ae822474e21628e454e..29350e45568a01ded9961062ab3319ac18a11fef 100644 (file)
@@ -23,6 +23,7 @@ typedef volatile unsigned char        vu_char;
 #include <linux/stringify.h>
 #include <asm/ptrace.h>
 #include <stdarg.h>
+#include <linux/kernel.h>
 #if defined(CONFIG_PCI) && defined(CONFIG_4xx)
 #include <pci.h>
 #endif
@@ -69,9 +70,6 @@ typedef volatile unsigned char        vu_char;
 #ifdef CONFIG_4xx
 #include <asm/ppc4xx.h>
 #endif
-#ifdef CONFIG_ARM
-#define asmlinkage     /* nothing */
-#endif
 #ifdef CONFIG_BLACKFIN
 #include <asm/blackfin.h>
 #endif
@@ -96,15 +94,19 @@ typedef volatile unsigned char      vu_char;
 #define _DEBUG 0
 #endif
 
+#ifndef pr_fmt
+#define pr_fmt(fmt) fmt
+#endif
+
 /*
  * Output a debug text when condition "cond" is met. The "cond" should be
  * computed by a preprocessor in the best case, allowing for the best
  * optimization.
  */
-#define debug_cond(cond, fmt, args...)         \
-       do {                                    \
-               if (cond)                       \
-                       printf(fmt, ##args);    \
+#define debug_cond(cond, fmt, args...)                 \
+       do {                                            \
+               if (cond)                               \
+                       printf(pr_fmt(fmt), ##args);    \
        } while (0)
 
 #define debug(fmt, args...)                    \
@@ -126,7 +128,7 @@ void __assert_fail(const char *assertion, const char *file, unsigned line,
                __assert_fail(#x, __FILE__, __LINE__, __func__); })
 
 #define error(fmt, args...) do {                                       \
-               printf("ERROR: " fmt "\nat %s:%d/%s()\n",               \
+               printf("ERROR: " pr_fmt(fmt) "\nat %s:%d/%s()\n",       \
                        ##args, __FILE__, __LINE__, __func__);          \
 } while (0)
 
@@ -168,58 +170,6 @@ typedef void (interrupt_handler_t)(void *);
 # endif
 #endif
 
-/*
- * General Purpose Utilities
- */
-#define min(X, Y)                              \
-       ({ typeof(X) __x = (X);                 \
-               typeof(Y) __y = (Y);            \
-               (__x < __y) ? __x : __y; })
-
-#define max(X, Y)                              \
-       ({ typeof(X) __x = (X);                 \
-               typeof(Y) __y = (Y);            \
-               (__x > __y) ? __x : __y; })
-
-#define min3(X, Y, Z)                          \
-       ({ typeof(X) __x = (X);                 \
-               typeof(Y) __y = (Y);            \
-               typeof(Z) __z = (Z);            \
-               __x < __y ? (__x < __z ? __x : __z) :   \
-               (__y < __z ? __y : __z); })
-
-#define max3(X, Y, Z)                          \
-       ({ typeof(X) __x = (X);                 \
-               typeof(Y) __y = (Y);            \
-               typeof(Z) __z = (Z);            \
-               __x > __y ? (__x > __z ? __x : __z) :   \
-               (__y > __z ? __y : __z); })
-
-/*
- * Return the absolute value of a number.
- *
- * This handles unsigned and signed longs, ints, shorts and chars.  For all
- * input types abs() returns a signed long.
- *
- * For 64-bit types, use abs64()
- */
-#define abs(x) ({                                              \
-               long ret;                                       \
-               if (sizeof(x) == sizeof(long)) {                \
-                       long __x = (x);                         \
-                       ret = (__x < 0) ? -__x : __x;           \
-               } else {                                        \
-                       int __x = (x);                          \
-                       ret = (__x < 0) ? -__x : __x;           \
-               }                                               \
-               ret;                                            \
-       })
-
-#define abs64(x) ({                            \
-               s64 __x = (x);                  \
-               (__x < 0) ? -__x : __x;         \
-       })
-
 #if defined(CONFIG_ENV_IS_EMBEDDED)
 #define TOTAL_MALLOC_LEN       CONFIG_SYS_MALLOC_LEN
 #elif ( ((CONFIG_ENV_ADDR+CONFIG_ENV_SIZE) < CONFIG_SYS_MONITOR_BASE) || \
@@ -230,17 +180,6 @@ typedef void (interrupt_handler_t)(void *);
 #define        TOTAL_MALLOC_LEN        CONFIG_SYS_MALLOC_LEN
 #endif
 
-/**
- * container_of - cast a member of a structure out to the containing structure
- * @ptr:       the pointer to the member.
- * @type:      the type of the container struct this is embedded in.
- * @member:    the name of the member within the struct.
- *
- */
-#define container_of(ptr, type, member) ({                     \
-       const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
-       (type *)( (char *)__mptr - offsetof(type,member) );})
-
 /*
  * Function Prototypes
  */
@@ -476,10 +415,6 @@ int  eeprom_probe (unsigned dev_addr, unsigned offset);
 #endif
 int  eeprom_read  (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt);
 int  eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt);
-#ifdef CONFIG_LWMON
-extern uchar pic_read  (uchar reg);
-extern void  pic_write (uchar reg, uchar val);
-#endif
 
 /*
  * Set this up regardless of board
@@ -500,11 +435,6 @@ extern ssize_t spi_read     (uchar *, int, uchar *, int);
 extern ssize_t spi_write (uchar *, int, uchar *, int);
 #endif
 
-#ifdef CONFIG_HERMES
-/* $(BOARD)/hermes.c */
-void hermes_start_lxt980 (int speed);
-#endif
-
 #ifdef CONFIG_EVB64260
 void  evb64260_init(void);
 void  debug_led(int, int);
@@ -947,31 +877,7 @@ static inline phys_addr_t map_to_sysmem(const void *ptr)
 #error Read section CONFIG_SKIP_LOWLEVEL_INIT in README.
 #endif
 
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
 #define ROUND(a,b)             (((a) + (b) - 1) & ~((b) - 1))
-#define DIV_ROUND(n,d)         (((n) + ((d)/2)) / (d))
-#define DIV_ROUND_UP(n,d)      (((n) + (d) - 1) / (d))
-#define roundup(x, y)          ((((x) + ((y) - 1)) / (y)) * (y))
-
-/*
- * Divide positive or negative dividend by positive divisor and round
- * to closest integer. Result is undefined for negative divisors and
- * for negative dividends if the divisor variable type is unsigned.
- */
-#define DIV_ROUND_CLOSEST(x, divisor)(                 \
-{                                                      \
-       typeof(x) __x = x;                              \
-       typeof(divisor) __d = divisor;                  \
-       (((typeof(x))-1) > 0 ||                         \
-        ((typeof(divisor))-1) > 0 || (__x) > 0) ?      \
-               (((__x) + ((__d) / 2)) / (__d)) :       \
-               (((__x) - ((__d) / 2)) / (__d));        \
-}                                                      \
-)
-
-#define ALIGN(x,a)             __ALIGN_MASK((x),(typeof(x))(a)-1)
-#define __ALIGN_MASK(x,mask)   (((x)+(mask))&~(mask))
 
 /*
  * ARCH_DMA_MINALIGN is defined in asm/cache.h for each architecture.  It
@@ -1053,7 +959,7 @@ static inline phys_addr_t map_to_sysmem(const void *ptr)
  * Usage of this macro shall be avoided or used with extreme care!
  */
 #define DEFINE_ALIGN_BUFFER(type, name, size, align)                   \
-       static char __##name[roundup(size * sizeof(type), align)]       \
+       static char __##name[ALIGN(size * sizeof(type), align)] \
                        __aligned(align);                               \
                                                                        \
        static type *name = (type *)__##name
index d78ab0081c2e7e724891f29a780c04a817f5fe82..9582746153a78a19aeab7cd39b636452518568dd 100644 (file)
@@ -456,228 +456,6 @@ typedef struct scc_enet {
 #define SICR_ENET_CLKRT        ((uint)0x00002c00)
 #endif /* CONFIG_BSEIP */
 
-/***  ELPT860 *********************************************************/
-
-#ifdef CONFIG_ELPT860
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC1 use.
- */
-#  define PROFF_ENET        PROFF_SCC1
-#  define CPM_CR_ENET       CPM_CR_CH_SCC1
-#  define SCC_ENET          0
-
-#  define PA_ENET_RXD       ((ushort)0x0001)   /* PA 15 */
-#  define PA_ENET_TXD       ((ushort)0x0002)   /* PA 14 */
-#  define PA_ENET_RCLK      ((ushort)0x0100)   /* PA  7 */
-#  define PA_ENET_TCLK      ((ushort)0x0200)   /* PA  6 */
-
-#  define PC_ENET_TENA      ((ushort)0x0001)   /* PC 15 */
-#  define PC_ENET_CLSN      ((ushort)0x0010)   /* PC 11 */
-#  define PC_ENET_RENA      ((ushort)0x0020)   /* PC 10 */
-
-/* Control bits in the SICR to route TCLK (CLK2) and RCLK (CLK1) to
- * SCC1.  Also, make sure GR1 (bit 24) and SC1 (bit 25) are zero.
- */
-#  define SICR_ENET_MASK    ((uint)0x000000FF)
-#  define SICR_ENET_CLKRT   ((uint)0x00000025)
-#endif /* CONFIG_ELPT860 */
-
-/***  ESTEEM 192E  **************************************************/
-#ifdef CONFIG_ESTEEM192E
-/* ESTEEM192E
- * This ENET stuff is for the MPC850 with ethernet on SCC2. This
- * is very similar to the RPX-Lite configuration.
- * Note TENA , LOOPBACK , FDPLEX_DIS on Port B.
- */
-
-#define        PROFF_ENET      PROFF_SCC2
-#define        CPM_CR_ENET     CPM_CR_CH_SCC2
-#define        SCC_ENET        1
-
-#define PA_ENET_RXD    ((ushort)0x0004)
-#define PA_ENET_TXD    ((ushort)0x0008)
-#define PA_ENET_TCLK   ((ushort)0x0200)
-#define PA_ENET_RCLK   ((ushort)0x0800)
-#define PB_ENET_TENA   ((uint)0x00002000)
-#define PC_ENET_CLSN   ((ushort)0x0040)
-#define PC_ENET_RENA   ((ushort)0x0080)
-
-#define SICR_ENET_MASK ((uint)0x0000ff00)
-#define SICR_ENET_CLKRT        ((uint)0x00003d00)
-
-#define PB_ENET_LOOPBACK ((uint)0x00004000)
-#define PB_ENET_FDPLEX_DIS ((uint)0x00008000)
-
-#endif
-
-/***  FPS850L, FPS860L  ************************************************/
-
-#if defined(CONFIG_FPS850L) || defined(CONFIG_FPS860L)
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC2 use.
- */
-#define        PROFF_ENET      PROFF_SCC2
-#define        CPM_CR_ENET     CPM_CR_CH_SCC2
-#define        SCC_ENET        1
-#define PA_ENET_RXD    ((ushort)0x0004)        /* PA 13 */
-#define PA_ENET_TXD    ((ushort)0x0008)        /* PA 12 */
-#define PA_ENET_RCLK   ((ushort)0x0100)        /* PA  7 */
-#define PA_ENET_TCLK   ((ushort)0x0400)        /* PA  5 */
-
-#define PC_ENET_TENA   ((ushort)0x0002)        /* PC 14 */
-#define PC_ENET_CLSN   ((ushort)0x0040)        /* PC  9 */
-#define PC_ENET_RENA   ((ushort)0x0080)        /* PC  8 */
-
-/* Control bits in the SICR to route TCLK (CLK2) and RCLK (CLK4) to
- * SCC2.  Also, make sure GR2 (bit 16) and SC2 (bit 17) are zero.
- */
-#define SICR_ENET_MASK ((uint)0x0000ff00)
-#define SICR_ENET_CLKRT        ((uint)0x00002600)
-#endif /* CONFIG_FPS850L, CONFIG_FPS860L */
-
-/*** HERMES-PRO ******************************************************/
-
-/* The HERMES-PRO uses the FEC on a MPC860T for Ethernet */
-
-#ifdef CONFIG_HERMES
-
-#define        FEC_ENET        /* use FEC for EThernet */
-#undef SCC_ENET
-
-
-#define PD_MII_TXD1    ((ushort)0x1000)        /* PD  3 */
-#define PD_MII_TXD2    ((ushort)0x0800)        /* PD  4 */
-#define PD_MII_TXD3    ((ushort)0x0400)        /* PD  5 */
-#define PD_MII_RX_DV   ((ushort)0x0200)        /* PD  6 */
-#define PD_MII_RX_ERR  ((ushort)0x0100)        /* PD  7 */
-#define PD_MII_RX_CLK  ((ushort)0x0080)        /* PD  8 */
-#define PD_MII_TXD0    ((ushort)0x0040)        /* PD  9 */
-#define PD_MII_RXD0    ((ushort)0x0020)        /* PD 10 */
-#define PD_MII_TX_ERR  ((ushort)0x0010)        /* PD 11 */
-#define PD_MII_MDC     ((ushort)0x0008)        /* PD 12 */
-#define PD_MII_RXD1    ((ushort)0x0004)        /* PD 13 */
-#define PD_MII_RXD2    ((ushort)0x0002)        /* PD 14 */
-#define PD_MII_RXD3    ((ushort)0x0001)        /* PD 15 */
-
-#define PD_MII_MASK    ((ushort)0x1FFF)        /* PD 3...15 */
-
-#endif /* CONFIG_HERMES */
-
-/***  IP860  **********************************************************/
-
-#if defined(CONFIG_IP860)
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC1 use.
- */
-#define        PROFF_ENET      PROFF_SCC1
-#define        CPM_CR_ENET     CPM_CR_CH_SCC1
-#define        SCC_ENET        0
-#define PA_ENET_RXD    ((ushort)0x0001)        /* PA 15 */
-#define PA_ENET_TXD    ((ushort)0x0002)        /* PA 14 */
-#define PA_ENET_RCLK   ((ushort)0x0200)        /* PA  6 */
-#define PA_ENET_TCLK   ((ushort)0x0100)        /* PA  7 */
-
-#define PC_ENET_TENA   ((ushort)0x0001)        /* PC 15 */
-#define PC_ENET_CLSN   ((ushort)0x0010)        /* PC 11 */
-#define PC_ENET_RENA   ((ushort)0x0020)        /* PC 10 */
-
-#define PB_ENET_RESET  (uint)0x00000008        /* PB 28 */
-#define PB_ENET_JABD   (uint)0x00000004        /* PB 29 */
-
-/* Control bits in the SICR to route TCLK (CLK1) and RCLK (CLK2) to
- * SCC1.  Also, make sure GR1 (bit 24) and SC1 (bit 25) are zero.
- */
-#define SICR_ENET_MASK ((uint)0x000000ff)
-#define SICR_ENET_CLKRT        ((uint)0x0000002C)
-#endif /* CONFIG_IP860 */
-
-/*** IVMS8  **********************************************************/
-
-/* The IVMS8 uses the FEC on a MPC860T for Ethernet */
-
-#if defined(CONFIG_IVMS8) || defined(CONFIG_IVML24)
-
-#define        FEC_ENET        /* use FEC for EThernet */
-#undef SCC_ENET
-
-#define        PB_ENET_POWER   ((uint)0x00010000)      /* PB 15 */
-
-#define PC_ENET_RESET  ((ushort)0x0010)        /* PC 11 */
-
-#define PD_MII_TXD1    ((ushort)0x1000)        /* PD  3 */
-#define PD_MII_TXD2    ((ushort)0x0800)        /* PD  4 */
-#define PD_MII_TXD3    ((ushort)0x0400)        /* PD  5 */
-#define PD_MII_RX_DV   ((ushort)0x0200)        /* PD  6 */
-#define PD_MII_RX_ERR  ((ushort)0x0100)        /* PD  7 */
-#define PD_MII_RX_CLK  ((ushort)0x0080)        /* PD  8 */
-#define PD_MII_TXD0    ((ushort)0x0040)        /* PD  9 */
-#define PD_MII_RXD0    ((ushort)0x0020)        /* PD 10 */
-#define PD_MII_TX_ERR  ((ushort)0x0010)        /* PD 11 */
-#define PD_MII_MDC     ((ushort)0x0008)        /* PD 12 */
-#define PD_MII_RXD1    ((ushort)0x0004)        /* PD 13 */
-#define PD_MII_RXD2    ((ushort)0x0002)        /* PD 14 */
-#define PD_MII_RXD3    ((ushort)0x0001)        /* PD 15 */
-
-#define PD_MII_MASK    ((ushort)0x1FFF)        /* PD 3...15 */
-
-#endif /* CONFIG_IVMS8, CONFIG_IVML24 */
-
-/***  KUP4K, KUP4X ****************************************************/
-/* The KUP4 boards uses the FEC on a MPC8xx for Ethernet */
-
-#if defined(CONFIG_KUP4K) || defined(CONFIG_KUP4X)
-
-#define        FEC_ENET        /* use FEC for EThernet */
-#undef SCC_ENET
-
-#define        PB_ENET_POWER   ((uint)0x00010000)      /* PB 15 */
-
-#define PC_ENET_RESET  ((ushort)0x0010)        /* PC 11 */
-
-#define PD_MII_TXD1    ((ushort)0x1000)        /* PD  3 */
-#define PD_MII_TXD2    ((ushort)0x0800)        /* PD  4 */
-#define PD_MII_TXD3    ((ushort)0x0400)        /* PD  5 */
-#define PD_MII_RX_DV   ((ushort)0x0200)        /* PD  6 */
-#define PD_MII_RX_ERR  ((ushort)0x0100)        /* PD  7 */
-#define PD_MII_RX_CLK  ((ushort)0x0080)        /* PD  8 */
-#define PD_MII_TXD0    ((ushort)0x0040)        /* PD  9 */
-#define PD_MII_RXD0    ((ushort)0x0020)        /* PD 10 */
-#define PD_MII_TX_ERR  ((ushort)0x0010)        /* PD 11 */
-#define PD_MII_MDC     ((ushort)0x0008)        /* PD 12 */
-#define PD_MII_RXD1    ((ushort)0x0004)        /* PD 13 */
-#define PD_MII_RXD2    ((ushort)0x0002)        /* PD 14 */
-#define PD_MII_RXD3    ((ushort)0x0001)        /* PD 15 */
-
-#define PD_MII_MASK    ((ushort)0x1FFF)        /* PD 3...15 */
-
-#endif /* CONFIG_KUP4K */
-
-/***  LWMON  **********************************************************/
-
-#if defined(CONFIG_LWMON)
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC2 use.
- */
-#define        PROFF_ENET      PROFF_SCC2
-#define        CPM_CR_ENET     CPM_CR_CH_SCC2
-#define        SCC_ENET        1
-#define PA_ENET_RXD    ((ushort)0x0004)        /* PA 13 */
-#define PA_ENET_TXD    ((ushort)0x0008)        /* PA 12 */
-#define PA_ENET_RCLK   ((ushort)0x0800)        /* PA  4 */
-#define PA_ENET_TCLK   ((ushort)0x0400)        /* PA  5 */
-
-#define PB_ENET_TENA   ((uint)0x00002000)      /* PB 18 */
-
-#define PC_ENET_CLSN   ((ushort)0x0040)        /* PC  9 */
-#define PC_ENET_RENA   ((ushort)0x0080)        /* PC  8 */
-
-/* Control bits in the SICR to route TCLK (CLK3) and RCLK (CLK4) to
- * SCC2.  Also, make sure GR2 (bit 16) and SC2 (bit 17) are zero.
- */
-#define SICR_ENET_MASK ((uint)0x0000ff00)
-#define SICR_ENET_CLKRT        ((uint)0x00003E00)
-#endif /* CONFIG_LWMON */
-
 /***  KM8XX  *********************************************************/
 
 /* The KM8XX Service Module uses SCC3 for Ethernet */
@@ -703,111 +481,19 @@ typedef struct scc_enet {
 #define SICR_ENET_CLKRT        ((uint)0x00250000)
 #endif /* CONFIG_KM8XX */
 
-/***  NETVIA  *******************************************************/
-
-#if defined(CONFIG_NETVIA)
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC2 use.
- */
-#define        PROFF_ENET      PROFF_SCC2
-#define        CPM_CR_ENET     CPM_CR_CH_SCC2
-#define        SCC_ENET        1
-#define PA_ENET_RXD    ((ushort)0x0004)        /* PA 13 */
-#define PA_ENET_TXD    ((ushort)0x0008)        /* PA 12 */
-#define PA_ENET_RCLK   ((ushort)0x0200)        /* PA  6 */
-#define PA_ENET_TCLK   ((ushort)0x0800)        /* PA  4 */
-
-#if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1
-# define PB_ENET_PDN   ((ushort)0x4000)        /* PB 17 */
-#elif CONFIG_NETVIA_VERSION >= 2
-# define PC_ENET_PDN   ((ushort)0x0008)        /* PC 12 */
-#endif
-
-#define PB_ENET_TENA   ((ushort)0x2000)        /* PB 18 */
-
-#define PC_ENET_CLSN   ((ushort)0x0040)        /* PC  9 */
-#define PC_ENET_RENA   ((ushort)0x0080)        /* PC  8 */
-
-/* Control bits in the SICR to route TCLK (CLK3) and RCLK (CLK1) to
- * SCC2.  Also, make sure GR2 (bit 16) and SC2 (bit 17) are zero.
- */
-#define SICR_ENET_MASK ((uint)0x0000ff00)
-#define SICR_ENET_CLKRT        ((uint)0x00002f00)
-
-#endif /* CONFIG_NETVIA */
-
-/***  SM850  *********************************************************/
-
-/* The SM850 Service Module uses SCC2 for IrDA and SCC3 for Ethernet */
-
-#ifdef CONFIG_SM850
-#define PROFF_ENET     PROFF_SCC3              /* Ethernet on SCC3 */
-#define CPM_CR_ENET    CPM_CR_CH_SCC3
-#define SCC_ENET       2
-#define PB_ENET_RXD    ((uint)0x00000004)      /* PB 29 */
-#define PB_ENET_TXD    ((uint)0x00000002)      /* PB 30 */
-#define PA_ENET_RCLK   ((ushort)0x0100)        /* PA  7 */
-#define PA_ENET_TCLK   ((ushort)0x0400)        /* PA  5 */
-
-#define PC_ENET_LBK    ((ushort)0x0008)        /* PC 12 */
-#define PC_ENET_TENA   ((ushort)0x0004)        /* PC 13 */
-
-#define PC_ENET_RENA   ((ushort)0x0800)        /* PC  4 */
-#define PC_ENET_CLSN   ((ushort)0x0400)        /* PC  5 */
-
-/* Control bits in the SICR to route TCLK (CLK3) and RCLK (CLK1) to
- * SCC3.  Also, make sure GR3 (bit 8) and SC3 (bit 9) are zero.
- */
-#define SICR_ENET_MASK ((uint)0x00FF0000)
-#define SICR_ENET_CLKRT        ((uint)0x00260000)
-#endif /* CONFIG_SM850 */
-
-/***  SPD823TS  ******************************************************/
-
-#ifdef CONFIG_SPD823TS
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC2 use.
- */
-#define        PROFF_ENET      PROFF_SCC2              /* Ethernet on SCC2 */
-#define CPM_CR_ENET     CPM_CR_CH_SCC2
-#define        SCC_ENET        1
-#define PA_ENET_MDC    ((ushort)0x0001)        /* PA 15 !!! */
-#define PA_ENET_MDIO   ((ushort)0x0002)        /* PA 14 !!! */
-#define PA_ENET_RXD    ((ushort)0x0004)        /* PA 13 */
-#define PA_ENET_TXD    ((ushort)0x0008)        /* PA 12 */
-#define PA_ENET_RCLK   ((ushort)0x0200)        /* PA  6 */
-#define PA_ENET_TCLK   ((ushort)0x0400)        /* PA  5 */
-
-#define PB_ENET_TENA   ((uint)0x00002000)      /* PB 18 */
-
-#define PC_ENET_CLSN   ((ushort)0x0040)        /* PC  9 */
-#define PC_ENET_RENA   ((ushort)0x0080)        /* PC  8 */
-#define        PC_ENET_RESET   ((ushort)0x0100)        /* PC  7 !!! */
-
-/* Control bits in the SICR to route TCLK (CLK3) and RCLK (CLK2) to
- * SCC2.  Also, make sure GR2 (bit 16) and SC2 (bit 17) are zero.
- */
-#define SICR_ENET_MASK ((uint)0x0000ff00)
-#define SICR_ENET_CLKRT        ((uint)0x00002E00)
-#endif /* CONFIG_SPD823TS */
-
 /***  MVS1, TQM823L/M, TQM850L/M, TQM885D, R360MPI  **********/
 
 #if (defined(CONFIG_MVS) && CONFIG_MVS < 2) || \
-    defined(CONFIG_R360MPI) || \
-    defined(CONFIG_RRVISION)|| defined(CONFIG_TQM823L) || \
+    defined(CONFIG_TQM823L) || \
     defined(CONFIG_TQM823M) || defined(CONFIG_TQM850L) || \
-    defined(CONFIG_TQM850M) || defined(CONFIG_TQM885D) || \
-    defined(CONFIG_RRVISION)|| defined(CONFIG_VIRTLAB2)
+    defined(CONFIG_TQM850M) || defined(CONFIG_TQM885D)
 
 /* Bits in parallel I/O port registers that have to be set/cleared
  * to configure the pins for SCC2 use.
  */
 #define        PROFF_ENET      PROFF_SCC2
 #define        CPM_CR_ENET     CPM_CR_CH_SCC2
-#if (!defined(CONFIG_TK885D))  /* TK885D does not use SCC Ethernet */
 #define        SCC_ENET        1
-#endif
 #define PA_ENET_RXD    ((ushort)0x0004)        /* PA 13 */
 #define PA_ENET_TXD    ((ushort)0x0008)        /* PA 12 */
 #define PA_ENET_RCLK   ((ushort)0x0100)        /* PA  7 */
@@ -817,9 +503,6 @@ typedef struct scc_enet {
 
 #define PC_ENET_CLSN   ((ushort)0x0040)        /* PC  9 */
 #define PC_ENET_RENA   ((ushort)0x0080)        /* PC  8 */
-#if defined(CONFIG_R360MPI)
-#define PC_ENET_LBK    ((ushort)0x0008)        /* PC 12 */
-#endif   /* CONFIG_R360MPI */
 
 /* Control bits in the SICR to route TCLK (CLK3) and RCLK (CLK1) to
  * SCC2.  Also, make sure GR2 (bit 16) and SC2 (bit 17) are zero.
index ad08c1d335d3ba29fd75dcab99f948a5c6a7e278..4d493150444f3f8827df51f9593d3ac4ed76aec0 100644 (file)
 #define CONFIG_ZLIB 1
 #define CONFIG_PARTITIONS 1
 
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_DM_WARN
+#define CONFIG_DM_DEVICE_REMOVE
+#define CONFIG_DM_STDIO
+#endif
+
 #endif
index 7d8daa2b8e5332f421b9bb616812d494927f1c71..ddfe0450d21c780e44cacf4f26b91d1e15a059a9 100644 (file)
 #define CONFIG_SYS_PROMPT      "=> "
 #endif
 
+#ifndef CONFIG_SYS_PBSIZE
+#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + 128)
+#endif
+
 #ifndef CONFIG_FIT_SIGNATURE
 #define CONFIG_IMAGE_FORMAT_LEGACY
 #endif
 #undef CONFIG_IMAGE_FORMAT_LEGACY
 #endif
 
+#ifdef CONFIG_DM_I2C
+# ifdef CONFIG_SYS_I2C
+#  error "Cannot define CONFIG_SYS_I2C when CONFIG_DM_I2C is used"
+# endif
+#endif
+
 #endif /* __CONFIG_FALLBACKS_H */
diff --git a/include/configs/A3000.h b/include/configs/A3000.h
deleted file mode 100644 (file)
index 35e3e6f..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * (C) Copyright 2001, 2002, 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* ------------------------------------------------------------------------- */
-/*
- * Configuration settings for the A-3000 board (Artis Microsystems Inc.).
- * http://artismicro.com
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8245         1
-#define CONFIG_A3000           1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                9600
-
-#define CONFIG_BOOTDELAY       5
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-
-/*
- * Miscellaneous configurable options
- */
-#undef CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#define CONFIG_SYS_PROMPT      "A3000> "               /* Monitor Command Prompt       */
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-
-/* Print Buffer Size
- */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     8               /* Max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x00400000      /* Default load address         */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_HARD_I2C                1               /* To enable I2C support */
-#undef CONFIG_SYS_I2C_SOFT                     /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SPEED           400000          /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#undef CONFIG_PCI_PNP
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-
-
-/* #define CONFIG_TULIP */
-/* #define CONFIG_EEPRO100 */
-#define CONFIG_NATSEMI
-
-#define PCI_ENET0_IOADDR               0x80000000
-#define PCI_ENET0_MEMADDR              0x80000000
-#define PCI_ENET1_IOADDR               0x81000000
-#define PCI_ENET1_MEMADDR              0x81000000
-#define PCI_ENET2_IOADDR               0x82000000
-#define PCI_ENET2_MEMADDR              0x82000000
-#define PCI_ENET3_IOADDR               0x83000000
-#define PCI_ENET3_MEMADDR              0x83000000
-
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE                  0x00000000
-
-#define CONFIG_SYS_FLASH_BASE0_PRELIM          0xFF000000      /* FLASH bank on RCS#0 */
-#define CONFIG_SYS_FLASH_BASE1_PRELIM          0xFF000000      /* FLASH bank on RCS#1 */
-#define CONFIG_SYS_FLASH_BASE                  CONFIG_SYS_FLASH_BASE0_PRELIM
-#define CONFIG_SYS_FLASH_BANKS                 { CONFIG_SYS_FLASH_BASE0_PRELIM }
-
-/* even though FLASHP_BASE is FF800000, with 4MB is RCS0, the
- * reset vector is actually located at FFB00100, but the 8245
- * takes care of us.
- */
-#define CONFIG_SYS_RESET_ADDRESS   0xFFF00100
-
-#define CONFIG_SYS_EUMB_ADDR       0xFC000000
-
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN     (256 << 10) /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN      (128 << 10) /* Reserve 128 kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START   0x00004000  /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END     0x02000000  /* 0 ... 32 MB in DRAM          */
-
-       /* Maximum amount of RAM.
-        */
-#define CONFIG_SYS_MAX_RAM_SIZE    0x04000000  /* 0 .. 128 MB of (S)DRAM */
-
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-#undef CONFIG_SYS_RAMBOOT
-#else
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_EUMB_ADDR + 0x4500)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_EUMB_ADDR + 0x4600)
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- */
-
-/* #define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE */
-#define CONFIG_SYS_INIT_RAM_ADDR     0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE      0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET  (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- * For the detail description refer to the MPC8240 user's manual.
- */
-
-#define CONFIG_SYS_CLK_FREQ  33333333  /* external frequency to pll */
-
-       /* Bit-field values for MCCR1.
-        */
-#define CONFIG_SYS_ROMNAL          7
-#define CONFIG_SYS_ROMFAL          11
-#define CONFIG_SYS_DBUS_SIZE       0x3
-
-       /* Bit-field values for MCCR2.
-        */
-#define CONFIG_SYS_TSWAIT          0x5             /* Transaction Start Wait States timer */
-#define CONFIG_SYS_REFINT          0x400           /* Refresh interval FIXME: was 0t430                */
-
-       /* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4.
-        */
-#define CONFIG_SYS_BSTOPRE         121
-
-       /* Bit-field values for MCCR3.
-        */
-#define CONFIG_SYS_REFREC          8       /* Refresh to activate interval */
-
-       /* Bit-field values for MCCR4.
-        */
-#define CONFIG_SYS_PRETOACT        3       /* Precharge to activate interval FIXME: was 2      */
-#define CONFIG_SYS_ACTTOPRE        5       /* Activate to Precharge interval FIXME: was 5      */
-#define CONFIG_SYS_ACTORW          3           /* FIXME was 2 */
-#define CONFIG_SYS_SDMODE_CAS_LAT  3       /* SDMODE CAS latancy */
-#define CONFIG_SYS_SDMODE_WRAP     0       /* SDMODE wrap type */
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER 1
-#define CONFIG_SYS_EXTROM          1
-#define CONFIG_SYS_REGDIMM         0
-
-#define CONFIG_SYS_PGMAX           0x32 /* how long the 8240 reatins the currently accessed page in memory FIXME: was 0x32*/
-
-#define CONFIG_SYS_SDRAM_DSCD  0x20    /* SDRAM data in sample clock delay - note bottom 3 bits MUST be 0 */
-
-/* Memory bank settings.
- * Only bits 20-29 are actually used from these vales to set the
- * start/end addresses. The upper two bits will always be 0, and the lower
- * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
- * address. Refer to the MPC8240 book.
- */
-
-#define CONFIG_SYS_BANK0_START     0x00000000
-#define CONFIG_SYS_BANK0_END       (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE    1
-#define CONFIG_SYS_BANK1_START     0x3ff00000
-#define CONFIG_SYS_BANK1_END       0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE    0
-#define CONFIG_SYS_BANK2_START     0x3ff00000
-#define CONFIG_SYS_BANK2_END       0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE    0
-#define CONFIG_SYS_BANK3_START     0x3ff00000
-#define CONFIG_SYS_BANK3_END       0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE    0
-#define CONFIG_SYS_BANK4_START     0x3ff00000
-#define CONFIG_SYS_BANK4_END       0x3fffffff
-#define CONFIG_SYS_BANK4_ENABLE    0
-#define CONFIG_SYS_BANK5_START     0x3ff00000
-#define CONFIG_SYS_BANK5_END       0x3fffffff
-#define CONFIG_SYS_BANK5_ENABLE    0
-#define CONFIG_SYS_BANK6_START     0x3ff00000
-#define CONFIG_SYS_BANK6_END       0x3fffffff
-#define CONFIG_SYS_BANK6_ENABLE    0
-#define CONFIG_SYS_BANK7_START     0x3ff00000
-#define CONFIG_SYS_BANK7_END       0x3fffffff
-#define CONFIG_SYS_BANK7_ENABLE    0
-
-#define CONFIG_SYS_ODCR            0xff
-
-#define CONFIG_SYS_IBAT0L  (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U  (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT3L  (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U  (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L  CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U  CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L  CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U  CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L  CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U  CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ       (8 << 20)   /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* Max number of flash banks            */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* Max number of sectors per flash      */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms) */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms) */
-
-
-       /* Warining: environment is not EMBEDDED in the U-Boot code.
-        * It's stored in flash separately.
-        */
-#define CONFIG_ENV_IS_IN_FLASH     1
-#define CONFIG_ENV_ADDR                0xFFFE0000
-#define CONFIG_ENV_SIZE                0x00020000 /* Size of the Environment           */
-#define CONFIG_ENV_SECT_SIZE   0x00020000 /* Size of the Environment Sector    */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value        */
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/APC405.h b/include/configs/APC405.h
deleted file mode 100644 (file)
index 2678f50..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * (C) Copyright 2005-2008
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- *
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_APCG405         1       /* ...on a APC405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF80000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_BOARD_EARLY_INIT_R 1
-#define CONFIG_MISC_INIT_R      1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ     33333400 /* external frequency to pll   */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_BAUDRATE                115200
-#define CONFIG_BOOTDELAY       1       /* autoboot after 3 seconds     */
-#define CONFIG_BOOTCOUNT_LIMIT 1
-
-#undef CONFIG_BOOTARGS
-
-#define CONFIG_SYS_USB_LOAD_COMMAND    "fatload usb 0 200000 pImage;"          \
-                               "fatload usb 0 300000 pImage.initrd"
-#define CONFIG_SYS_USB_SELF_COMMAND    "usb start;run usb_load;usb stop;"      \
-                               "run ramargs addip addcon usbargs;"     \
-                               "bootm 200000 300000"
-#define CONFIG_SYS_USB_ARGS            "setenv bootargs $(bootargs) usbboot=1"
-#define CONFIG_SYS_BOOTLIMIT           "3"
-#define CONFIG_SYS_ALT_BOOTCOMMAND     "run usb_self;reset"
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "hostname=abg405\0"                                             \
-       "bd_type=abg405\0"                                              \
-       "serial#=AA0000\0"                                              \
-       "kernel_addr=fe000000\0"                                        \
-       "ramdisk_addr=fe100000\0"                                       \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-       "nfsroot=$(serverip):$(rootpath)\0"                             \
-       "addip=setenv bootargs $(bootargs) "                            \
-               "ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask)"      \
-               ":$(hostname)::off panic=1\0"                           \
-       "addcon=setenv bootargs $(bootargs) console=ttyS0,$(baudrate)"  \
-               " $(optargs)\0"                                         \
-       "flash_self=run ramargs addip addcon;"                          \
-               "bootm $(kernel_addr) $(ramdisk_addr)\0"                \
-       "net_nfs=tftp 200000 $(img);run nfsargs addip addcon;"          \
-               "bootm\0"                                               \
-       "rootpath=/tftpboot/abg405/target_root\0"                       \
-       "img=/tftpboot/abg405/pImage\0"                                 \
-       "load=tftp 100000 /tftpboot/abg405/u-boot.bin\0"                \
-       "update=protect off fff80000 ffffffff;era fff80000 ffffffff;"   \
-               "cp.b 100000 fff80000 80000\0"                          \
-       "ipaddr=10.0.111.111\0"                                         \
-       "netmask=255.255.0.0\0"                                         \
-       "serverip=10.0.0.190\0"                                         \
-       "splashimage=ffe80000\0"                                        \
-       "usb_load="CONFIG_SYS_USB_LOAD_COMMAND"\0"                              \
-       "usb_self="CONFIG_SYS_USB_SELF_COMMAND"\0"                              \
-       "usbargs="CONFIG_SYS_USB_ARGS"\0"                                       \
-       "bootlimit="CONFIG_SYS_BOOTLIMIT"\0"                                    \
-       "altbootcmd="CONFIG_SYS_ALT_BOOTCOMMAND"\0"                             \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self;reset"
-
-#define CONFIG_ETHADDR         00:02:27:8e:00:00
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP 1
-#define CONFIG_RESET_PHY_R     1       /* use reset_phy() */
-
-#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ /* 66 MHz OPB clock*/
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SOURCE
-#define CONFIG_CMD_USB
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define CONFIG_SUPPORT_VFAT
-
-#define CONFIG_AUTO_UPDATE     1       /* autoupdate via CF or USB */
-
-#undef  CONFIG_WATCHDOG                        /* watchdog disabled */
-
-#define CONFIG_RTC_MC146818            /* DS1685 is MC146818 compatible*/
-#define CONFIG_SYS_RTC_REG_BASE_ADDR 0xF0000500 /* RTC Base Address */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0 */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#define CONFIG_SYS_EXT_SERIAL_CLOCK    14745600 /* use external serial clock   */
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-/* Only interrupt boot if space is pressed */
-/* If a long serial cable is connected but */
-/* other end is dead, garbage will be read */
-#define CONFIG_AUTOBOOT_KEYED  1
-#define CONFIG_AUTOBOOT_PROMPT \
-       "Press SPACE to abort autoboot in %d seconds\n", bootdelay
-#undef CONFIG_AUTOBOOT_DELAY_STR
-#define CONFIG_AUTOBOOT_STOP_STR " "
-
-#define CONFIG_VERSION_VARIABLE        1       /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*
- * PCI stuff
- */
-#define PCI_HOST_ADAPTER       0       /* configure as pci adapter     */
-#define PCI_HOST_FORCE         1       /* configure as pci host        */
-#define PCI_HOST_AUTO          2       /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-#define CONFIG_PCI_SKIP_HOST_BRIDGE 1
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*
- * IDE/ATA stuff
- */
-#undef  CONFIG_IDE_8xx_DIRECT          /* no pcmcia interface required */
-#undef  CONFIG_IDE_LED                 /* no led for ide supported */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported */
-
-#define CONFIG_SYS_IDE_MAXBUS          1               /* max. 1 IDE busses */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS) /* max. 1 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000  /* Offset for normal register access */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0000  /* Offset for alternate registers */
-
-/*
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MONITOR_BASE        0xFFF80000
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)    /* Reserve 512 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (2*1024*1024)   /* Reserve 2MB for malloc() */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Init. Memory map for Linux */
-
-/*
- * FLASH organization
- */
-#define CONFIG_SYS_FLASH_BASE          0xFE000000
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max num of sects on one chip */
-#define CONFIG_SYS_MAX_FLASH_BANKS_DETECT 2
-#define CONFIG_SYS_FLASH_QUIET_TEST    1
-#define CONFIG_SYS_FLASH_INCREMENT     0x01000000
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware protection */
-#define CONFIG_SYS_FLASH_AUTOPROTECT_LIST { \
-                               {0xfe000000, 0x500000}, \
-                               {0xffe80000, 0x180000} \
-                               }
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster) */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { \
-                               CONFIG_SYS_FLASH_BASE, \
-                               CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_INCREMENT \
-                               }
-#define CONFIG_SYS_FLASH_EMPTY_INFO    /* print 'E' for empty sector on flinfo */
-
-/*
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the */
-                                       /* beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x800   /* 2048 bytes may be used for env vars*/
-#define CONFIG_ENV_OVERWRITE   1       /* allow overwriting vendor vars */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xF0000500      /* NVRAM base address */
-#define CONFIG_SYS_NVRAM_SIZE          242             /* NVRAM size */
-
-/*
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08 */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address */
-/* mask of address bits that overflow into the "EEPROM chip address" */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10 /* and takes up to 10 msec */
-
-/*
- * External Bus Controller (EBC) Setup
- */
-#define FLASH0_BA       (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_INCREMENT) /* FLASH 0 BA */
-#define FLASH1_BA       CONFIG_SYS_FLASH_BASE      /* FLASH 1 Base Address          */
-#define CAN_BA          0xF0000000          /* CAN Base Address              */
-#define DUART0_BA       0xF0000400          /* DUART Base Address            */
-#define DUART1_BA       0xF0000408          /* DUART Base Address            */
-#define RTC_BA          0xF0000500          /* RTC Base Address              */
-#define PS2_BA          0xF0000600          /* PS/2 Base Address             */
-#define CF_BA           0xF0100000          /* CompactFlash Base Address     */
-#define FPGA_BA         0xF0100100          /* FPGA internal Base Address    */
-#define FUJI_BA         0xF0100200          /* Fuji internal Base Address    */
-#define PCMCIA1_BA      0x20000000          /* PCMCIA Slot 1 Base Address    */
-#define PCMCIA2_BA      0x28000000          /* PCMCIA Slot 2 Base Address    */
-#define VGA_BA          0xF1000000          /* Epson VGA Base Address        */
-
-#define CONFIG_SYS_FPGA_BASE_ADDR      FPGA_BA     /* FPGA internal Base Address    */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                               */
-#define CONFIG_SYS_EBC_PB0AP   0x92015480
-#define CONFIG_SYS_EBC_PB0CR   FLASH0_BA | 0x9A000 /* BAS=0xFF0,BS=16MB,BU=R/W,BW=16bit*/
-#define CONFIG_SYS_EBC_PB0AP_HWREV8 CONFIG_SYS_EBC_PB0AP
-#define CONFIG_SYS_EBC_PB0CR_HWREV8 FLASH1_BA | 0xBA000 /* BS=32MB */
-
-/* Memory Bank 1 (Flash Bank 1) initialization                               */
-#define CONFIG_SYS_EBC_PB1AP   0x92015480
-#define CONFIG_SYS_EBC_PB1CR   FLASH1_BA | 0x9A000 /* BAS=0xFE0,BS=16MB,BU=R/W,BW=16bit*/
-
-/* Memory Bank 2 (CAN0, 1, RTC, Duart) initialization                           */
-#define CONFIG_SYS_EBC_PB2AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR   CAN_BA | 0x18000    /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (CompactFlash IDE, FPGA internal) initialization               */
-#define CONFIG_SYS_EBC_PB3AP   0x010059C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR   CF_BA | 0x1A000     /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 4 (PCMCIA Slot 1) initialization                                 */
-#define CONFIG_SYS_EBC_PB4AP   0x050007C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB4CR   PCMCIA1_BA | 0xFA000 /*BAS=0x200,BS=128MB,BU=R/W,BW=16bit*/
-
-/* Memory Bank 5 (Epson VGA) initialization                                     */
-#define CONFIG_SYS_EBC_PB5AP   0x03805380   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=0 */
-#define CONFIG_SYS_EBC_PB5CR   VGA_BA | 0x5A000    /* BAS=0xF10,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 6 (PCMCIA Slot 2) initialization                                 */
-#define CONFIG_SYS_EBC_PB6AP   0x050007C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB6CR   PCMCIA2_BA | 0xFA000 /*BAS=0x280,BS=128MB,BU=R/W,BW=16bit*/
-
-/*
- * FPGA stuff
- */
-
-/* FPGA internal regs */
-#define CONFIG_SYS_FPGA_CTRL           0x008
-#define CONFIG_SYS_FPGA_CTRL2          0x00a
-
-/* FPGA Control Reg */
-#define CONFIG_SYS_FPGA_CTRL_CF_RESET  0x0001
-#define CONFIG_SYS_FPGA_CTRL_WDI       0x0002
-#define CONFIG_SYS_FPGA_CTRL_PS2_RESET 0x0020
-
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       80*1024     /* 80kByte is enough for XC2S50  */
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*
- * LCD Setup
- */
-#define CONFIG_SYS_LCD_BIG_MEM         (VGA_BA + 0x200000) /* S1D13806 Mem Base */
-#define CONFIG_SYS_LCD_BIG_REG         VGA_BA /* S1D13806 Reg Base */
-
-#define CONFIG_LCD_BIG         2 /* Epson S1D13806 used */
-
-/* Image information... */
-#define CONFIG_LCD_USED                CONFIG_LCD_BIG
-
-#define CONFIG_SYS_LCD_MEM             CONFIG_SYS_LCD_BIG_MEM
-#define CONFIG_SYS_LCD_REG             CONFIG_SYS_LCD_BIG_REG
-
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1 << 20)
-
-/*
- * Definitions for initial stack pointer and data area (in data cache)
- */
-
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM      1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-/* reserve some memory for BOOT limit info */
-#define CONFIG_SYS_INIT_SP_OFFSET      (CONFIG_SYS_GBL_DATA_OFFSET - 16)
-
-#ifdef CONFIG_BOOTCOUNT_LIMIT /* reserve 2 word for bootcount limit */
-#define CONFIG_SYS_BOOTCOUNT_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 8)
-#endif
-
-/*
- * PCI OHCI controller
- */
-#define CONFIG_USB_OHCI_NEW    1
-#define CONFIG_PCI_OHCI                1
-#define CONFIG_SYS_OHCI_SWAP_REG_ACCESS 1
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 15
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME  "ohci_pci"
-#define CONFIG_USB_STORAGE     1
-#define CONFIG_SYS_USB_OHCI_BOARD_INIT 1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/AR405.h b/include/configs/AR405.h
deleted file mode 100644 (file)
index 45dd46a..0000000
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405GP CPU       */
-#define CONFIG_AR405           1       /* ...on a AR405 board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFA0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-
-#define CONFIG_SYS_CLK_FREQ    33000000 /* external frequency to pll   */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#if 1
-#define CONFIG_BOOTCOMMAND     "bootm fff00000" /* autoboot command    */
-#else
-#define CONFIG_BOOTCOMMAND     "bootp" /* autoboot command             */
-#endif
-
-#if 0
-#define CONFIG_BOOTARGS                "root=/dev/nfs "                        \
-    "ip=192.168.2.176:192.168.2.190:192.168.2.79:255.255.255.0 "       \
-    "nfsroot=192.168.2.190:/home/stefan/cpci405/target_ftest4"
-#else
-#define CONFIG_BOOTARGS                "root=/dev/hda1 "                       \
-    "ip=192.168.2.176:192.168.2.190:192.168.2.79:255.255.255.0"
-
-#endif
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_MII
-#undef CONFIG_CMD_NFS
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_BSP
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_MX_CYCLIC        1       /* enable mdc/mwc commands      */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#define CONFIG_SYS_EXT_SERIAL_CLOCK    14745600 /* use external serial clock   */
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure ar pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1 /* don't skip host bridge config*/
-
-#define CONFIG_PCI_BOOTDELAY   0       /* enable pci bootdelay variable*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0403  /* PCI Device ID: ARISTO405     */
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0x80000001      /* 2GB, enable hard-wired to 1  */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xfff00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xfff00001      /* 1MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_MONITOR_BASE
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (~(CONFIG_SYS_TEXT_BASE) + 1)
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SECT_SIZE   0x10000 /* see README - env sector total size   */
-#define CONFIG_ENV_SIZE                0x04000         /* Size of Environment          */
-
-#define CONFIG_ENV_ADDR_REDUND  (CONFIG_ENV_ADDR - CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (CAN0, 1, 2, 3) initialization                                        */
-#define CONFIG_SYS_EBC_PB1AP           0x01000380  /* enable Ready, BEM=0              */
-#define CONFIG_SYS_EBC_PB1CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (Expension Bus) initialization                                        */
-#define CONFIG_SYS_EBC_PB2AP           0x01000280  /* disable Ready, BEM=0             */
-#define CONFIG_SYS_EBC_PB2CR           0xF0118000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (16552) initialization                                                */
-#define CONFIG_SYS_EBC_PB3AP           0x01000380  /* enable Ready, BEM=0              */
-#define CONFIG_SYS_EBC_PB3CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 4 (FPGA regs) initialization                                    */
-#define CONFIG_SYS_EBC_PB4AP           0x01005380  /* enable Ready, BEM=0              */
-#define CONFIG_SYS_EBC_PB4CR           0xF031C000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=32bit */
-
-/* Memory Bank 5 (Flash Bank 1/DUMMY) initialization                           */
-#define CONFIG_SYS_EBC_PB5AP           0x92015480
-#define CONFIG_SYS_EBC_PB5CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-#define CONFIG_SYS_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */
-
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000  /* use data cache                  */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000  /* Size of used area in RAM            */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/ASH405.h b/include/configs/ASH405.h
deleted file mode 100644 (file)
index 2ff9b59..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_ASH405          1       /* ...on a ASH405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33333300 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef  CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-
-#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ /* 66 MHz OPB clock*/
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_EEPROM
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_RTC_MC146818            /* DS1685 is MC146818 compatible*/
-#define CONFIG_SYS_RTC_REG_BASE_ADDR    0xF0000500 /* RTC Base Address         */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1         /* Max number of NAND devices */
-#define NAND_BIG_DELAY_US      25
-
-#define CONFIG_SYS_NAND_CE             (0x80000000 >> 1)   /* our CE is GPIO1  */
-#define CONFIG_SYS_NAND_RDY            (0x80000000 >> 4)   /* our RDY is GPIO4 */
-#define CONFIG_SYS_NAND_CLE            (0x80000000 >> 2)   /* our CLE is GPIO2 */
-#define CONFIG_SYS_NAND_ALE            (0x80000000 >> 3)   /* our ALE is GPIO3 */
-
-#define CONFIG_SYS_NAND_SKIP_BAD_DOT_I 1       /* ".i" read skips bad blocks   */
-#define CONFIG_SYS_NAND_QUIET          1
-#define CONFIG_SYS_NAND_MAX_OOBFREE    2
-#define CONFIG_SYS_NAND_MAX_ECCPOS     56
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure as pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_HOST  /* select pci host function     */
-#undef CONFIG_PCI_PNP                  /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#undef CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFC0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)    /* Reserve 256 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000    /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#if 0 /* test-only */
-#define CONFIG_SYS_JFFS2_FIRST_BANK    0           /* use for JFFS2 */
-#define CONFIG_SYS_JFFS2_NUM_BANKS     1           /* ! second bank contains U-Boot */
-#endif
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xF0000500              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          242                     /* NVRAM size           */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-/*#define CONFIG_SYS_EBC_PB0AP           0x08055880  /XXX* TWT=16,CSN=1,OEN=1,WBN=1,WBF=1,TH=4,SOR=1 */
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1, NAND-FLASH) initialization                     */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xF4018000  /* BAS=0xF40,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (8 Bit Peripheral: CAN, UART, RTC) initialization             */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (16 Bit Peripheral: FPGA internal, dig. IO) initialization    */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-#define CAN_BA         0xF0000000          /* CAN Base Address                 */
-#define DUART0_BA      0xF0000400          /* DUART Base Address               */
-#define DUART1_BA      0xF0000408          /* DUART Base Address               */
-#define DUART2_BA      0xF0000410          /* DUART Base Address               */
-#define DUART3_BA      0xF0000418          /* DUART Base Address               */
-#define RTC_BA         0xF0000500          /* RTC Base Address                 */
-#define CONFIG_SYS_NAND_BASE   0xF4000000
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       128*1024    /* 128kByte is enough for XC2S50E*/
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]    - External Bus Controller BLAST output
- * GPIO0[1-9]  - Instruction trace outputs -> GPIO
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- */
-#define CONFIG_SYS_GPIO0_OSRL          0x40000550
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000
-#define CONFIG_SYS_GPIO0_ISR1H         0x15555445
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000
-#define CONFIG_SYS_GPIO0_TCR           0xF7FE0014
-
-#define CONFIG_SYS_DUART_RST           (0x80000000 >> 14)
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_266_133_66_33
-#define PLLMR1_DEFAULT  PLLMR1_266_133_66_33
-#endif
-#if 1
-#define PLLMR0_DEFAULT  PLLMR0_200_100_50_33
-#define PLLMR1_DEFAULT  PLLMR1_200_100_50_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT  PLLMR1_133_66_66_33
-#endif
-
-#endif /* __CONFIG_H */
index dc1a9bc1ef98d9bc2d78ea88a550f17054b4110a..838a0b18c38608c65b6b94b28797ce300e544d4d 100644 (file)
@@ -641,6 +641,14 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_BMAN_MEM_PHYS       CONFIG_SYS_BMAN_MEM_BASE
 #endif
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE   0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE   0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE      CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE      (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE      (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE      (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    25
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #ifdef CONFIG_PHYS_64BIT
@@ -649,6 +657,14 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_QMAN_MEM_PHYS       CONFIG_SYS_QMAN_MEM_BASE
 #endif
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 
@@ -713,8 +729,8 @@ unsigned long get_board_ddr_clk(void);
 #endif /* CONFIG_PCI */
 
 #ifdef CONFIG_FMAN_ENET
-#define CONFIG_SYS_FM1_DTSEC5_PHY_ADDR 0x10
-#define CONFIG_SYS_FM1_DTSEC6_PHY_ADDR 0x11
+#define CONFIG_SYS_FM1_ONBOARD_PHY1_ADDR 0x10
+#define CONFIG_SYS_FM1_ONBOARD_PHY2_ADDR 0x11
 
 /*B4860 QDS AMC2PEX-2S default PHY_ADDR */
 #define CONFIG_SYS_FM1_10GEC1_PHY_ADDR 0x7      /*SLOT 1*/
@@ -731,6 +747,8 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_PHY_GIGE                /* Include GbE speed/duplex detection */
 #endif
 
+#define CONFIG_SYS_FSL_B4860QDS_XFI_ERR
+
 /*
  * Environment
  */
index bc5af526c5f7eb55df3d424268980c372fe13d48..eeb0671ddb310df1c24414579200b51af395cee1 100644 (file)
@@ -11,6 +11,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifdef CONFIG_BSC9131RDB
 #define CONFIG_BSC9131
 #define CONFIG_NAND_FSL_IFC
@@ -399,6 +402,23 @@ extern unsigned long get_sdram_size(void);
 #define CONFIG_HAS_FSL_DR_USB
 #endif
 
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define MTDIDS_DEFAULT "nand0=ff800000.flash,"
+#define MTDPARTS_DEFAULT "mtdparts=ff800000.flash:1m(uboot)," \
+                       "8m(kernel),512k(dtb),-(fs)"
+/*
+ * Override partitions in device tree using info
+ * in "mtdparts" environment variable
+ */
+#ifdef CONFIG_CMD_MTDPARTS
+#define CONFIG_FDT_FIXUP_PARTITIONS
+#endif
+
 /*
  * Environment Configuration
  */
index 989363c0fbc0def810b96a73ae07889382205656..e8a8d299cd9d4c8d0c9e17e79ba6ff17e315406e 100644 (file)
@@ -11,6 +11,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifdef CONFIG_BSC9132QDS
 #define CONFIG_BSC9132
 #endif
@@ -636,6 +639,27 @@ combinations. this should be removed later
 #define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
 #endif
 
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#ifndef CONFIG_SYS_NO_FLASH
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#define MTDIDS_DEFAULT "nor0=88000000.nor,nand0=ff800000.flash,"
+#define MTDPARTS_DEFAULT "mtdparts=88000000.nor:256k(dtb),7m(kernel)," \
+                       "55m(fs),1m(uboot);ff800000.flash:1m(uboot)," \
+                       "8m(kernel),512k(dtb),-(fs)"
+#endif
+/*
+ * Override partitions in device tree using info
+ * in "mtdparts" environment variable
+ */
+#ifdef CONFIG_CMD_MTDPARTS
+#define CONFIG_FDT_FIXUP_PARTITIONS
+#endif
+
 /*
  * Environment Configuration
  */
index 5d11278f036c01382a2bb6a77f3e1cdd377cb46b..ecb3d7b25fd710f6ac8d4abfeb24af901987a11c 100644 (file)
@@ -12,6 +12,8 @@
 #define __CONFIG_H
 
 #define CONFIG_PHYS_64BIT
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #ifdef CONFIG_C29XPCIE
 #define CONFIG_PPC_C29X
diff --git a/include/configs/CMS700.h b/include/configs/CMS700.h
deleted file mode 100644 (file)
index 5b872f6..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * (C) Copyright 2005
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * CMS700.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_VOM405          1       /* ...on a VOM405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC8000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33330000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef  CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_EEPROM
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-#undef  CONFIG_PRAM                    /* no "protected RAM"           */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      2       /* Use UART1                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * RTC stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_RTC_DS1337
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1         /* Max number of NAND devices */
-#define NAND_BIG_DELAY_US      25
-
-#define CONFIG_SYS_NAND_CE             (0x80000000 >> 1)   /* our CE is GPIO1  */
-#define CONFIG_SYS_NAND_RDY            (0x80000000 >> 4)   /* our RDY is GPIO4 */
-#define CONFIG_SYS_NAND_CLE            (0x80000000 >> 2)   /* our CLE is GPIO2 */
-#define CONFIG_SYS_NAND_ALE            (0x80000000 >> 3)   /* our ALE is GPIO3 */
-
-#define CONFIG_SYS_NAND_SKIP_BAD_DOT_I 1       /* ".i" read skips bad blocks   */
-#define CONFIG_SYS_NAND_QUIET          1
-
-#define CONFIG_SYS_NAND_MAX_OOBFREE    2
-#define CONFIG_SYS_NAND_MAX_ECCPOS     48
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000    /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_MONITOR_BASE
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (~(CONFIG_SYS_TEXT_BASE) + 1)
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)
-
-#if (CONFIG_SYS_MONITOR_BASE < FLASH_BASE0_PRELIM)
-# define CONFIG_SYS_RAMBOOT            1
-#else
-# undef CONFIG_SYS_RAMBOOT
-#endif
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-#define CONFIG_SYS_EEPROM_WREN         1
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-#define CONFIG_SYS_PLD_BASE            0xf0000000
-#define CONFIG_SYS_NAND_BASE           0xF4000000  /* NAND FLASH Base Address          */
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1, NAND-FLASH) initialization                     */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xF4018000  /* BAS=0xF40,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (8 Bit Peripheral: CAN, UART, RTC) initialization             */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-#define CONFIG_SYS_XSVF_DEFAULT_ADDR   0xfffc0000
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* JTAG TMS pin (ppc output)     */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* JTAG TCK pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* JTAG TDO->TDI data pin (ppc output) */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* unused (ppc input)            */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* JTAG TDI->TDO pin (ppc input) */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]    - External Bus Controller BLAST output
- * GPIO0[1-9]  - Instruction trace outputs -> GPIO
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- */
-/* GPIO Input:         OSR=00, ISR=00, TSR=00, TCR=0 */
-/* GPIO Output:                OSR=00, ISR=00, TSR=00, TCR=1 */
-/* Alt. Funtion Input: OSR=00, ISR=01, TSR=00, TCR=0 */
-/* Alt. Funtion Output: OSR=01, ISR=00, TSR=00, TCR=1 */
-#define CONFIG_SYS_GPIO0_OSRL          0x40000500  /*  0 ... 15 */
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110  /* 16 ... 31 */
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000  /*  0 ... 15 */
-#define CONFIG_SYS_GPIO0_ISR1H         0x14000045  /* 16 ... 31 */
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000  /*  0 ... 15 */
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000  /* 16 ... 31 */
-#define CONFIG_SYS_GPIO0_TCR           0xF7FE0014  /*  0 ... 31 */
-
-#define CONFIG_SYS_EEPROM_WP           (0x80000000 >> 8)    /* GPIO8 */
-#define CONFIG_SYS_PLD_RESET           (0x80000000 >> 12)   /* GPIO12 */
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#define PLLMR0_DEFAULT  PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT  PLLMR1_133_66_66_33
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/CPC45.h b/include/configs/CPC45.h
deleted file mode 100644 (file)
index a75c52f..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- *
- * Configuration settings for the CPC45 board.
- *
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8245         1
-#define CONFIG_CPC45           1
-
-#define CONFIG_SYS_TEXT_BASE   0xFFF00000
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                9600
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#define CONFIG_BOOTDELAY       5
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_FLASH
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_SNTP
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-
-#if 1
-#define CONFIG_SYS_HUSH_PARSER         1       /* use "hush" command parser    */
-#endif
-
-/* Print Buffer Size
- */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x00100000      /* Default load address         */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-
-#if defined(CONFIG_BOOT_ROM)
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#else
-#define CONFIG_SYS_FLASH_BASE          0xFF800000
-#endif
-
-#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
-
-#define CONFIG_SYS_EUMB_ADDR           0xFCE00000
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START       0x00004000      /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END         0x02000000      /* 0 ... 32 MB in DRAM          */
-
-/* Maximum amount of RAM.
- */
-#define CONFIG_SYS_MAX_RAM_SIZE        0x10000000
-
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-#undef CONFIG_SYS_RAMBOOT
-#else
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- */
-
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_EUMB_ADDR + 0x4500)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_EUMB_ADDR + 0x4600)
-#define DUART_DCR              (CONFIG_SYS_EUMB_ADDR + 0x4511)
-
-/*
- * I2C configuration
- */
-#define CONFIG_HARD_I2C                1       /* I2C with hardware support */
-
-#define CONFIG_SYS_I2C_SPEED           100000 /* 100 kHz */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/*
- * RTC configuration
- */
-#define CONFIG_RTC_PCF8563
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51
-
-/*
- * EEPROM configuration
- */
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x58
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- * For the detail description refer to the MPC8240 user's manual.
- */
-
-#define CONFIG_SYS_CLK_FREQ    33000000
-
-
-/* Bit-field values for MCCR1.
- */
-#define CONFIG_SYS_ROMNAL              0
-#define CONFIG_SYS_ROMFAL              8
-
-#define CONFIG_SYS_BANK0_ROW           0       /* SDRAM bank 7-0 row address */
-#define CONFIG_SYS_BANK1_ROW           0
-#define CONFIG_SYS_BANK2_ROW           0
-#define CONFIG_SYS_BANK3_ROW           0
-#define CONFIG_SYS_BANK4_ROW           0
-#define CONFIG_SYS_BANK5_ROW           0
-#define CONFIG_SYS_BANK6_ROW           0
-#define CONFIG_SYS_BANK7_ROW           0
-
-/* Bit-field values for MCCR2.
- */
-
-#define CONFIG_SYS_REFINT              0x2ec
-
-/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4.
- */
-#define CONFIG_SYS_BSTOPRE             160
-
-/* Bit-field values for MCCR3.
- */
-#define CONFIG_SYS_REFREC              2       /* Refresh to activate interval         */
-#define CONFIG_SYS_RDLAT               0       /* Data latancy from read command       */
-
-/* Bit-field values for MCCR4.
- */
-#define CONFIG_SYS_PRETOACT            2       /* Precharge to activate interval       */
-#define CONFIG_SYS_ACTTOPRE            5       /* Activate to Precharge interval       */
-#define CONFIG_SYS_SDMODE_CAS_LAT      2       /* SDMODE CAS latancy                   */
-#define CONFIG_SYS_SDMODE_WRAP         0       /* SDMODE wrap type                     */
-#define CONFIG_SYS_SDMODE_BURSTLEN     2       /* SDMODE Burst length                  */
-#define CONFIG_SYS_ACTORW              2
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER 1
-#define CONFIG_SYS_EXTROM              0
-#define CONFIG_SYS_REGDIMM             0
-
-/* Memory bank settings.
- * Only bits 20-29 are actually used from these vales to set the
- * start/end addresses. The upper two bits will always be 0, and the lower
- * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
- * address. Refer to the MPC8240 book.
- */
-
-#define CONFIG_SYS_BANK0_START         0x00000000
-#define CONFIG_SYS_BANK0_END           (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE        1
-#define CONFIG_SYS_BANK1_START         0x3ff00000
-#define CONFIG_SYS_BANK1_END           0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE        0
-#define CONFIG_SYS_BANK2_START         0x3ff00000
-#define CONFIG_SYS_BANK2_END           0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE        0
-#define CONFIG_SYS_BANK3_START         0x3ff00000
-#define CONFIG_SYS_BANK3_END           0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE        0
-#define CONFIG_SYS_BANK4_START         0x3ff00000
-#define CONFIG_SYS_BANK4_END           0x3fffffff
-#define CONFIG_SYS_BANK4_ENABLE        0
-#define CONFIG_SYS_BANK5_START         0x3ff00000
-#define CONFIG_SYS_BANK5_END           0x3fffffff
-#define CONFIG_SYS_BANK5_ENABLE        0
-#define CONFIG_SYS_BANK6_START         0x3ff00000
-#define CONFIG_SYS_BANK6_END           0x3fffffff
-#define CONFIG_SYS_BANK6_ENABLE        0
-#define CONFIG_SYS_BANK7_START         0x3ff00000
-#define CONFIG_SYS_BANK7_END           0x3fffffff
-#define CONFIG_SYS_BANK7_ENABLE        0
-
-#define CONFIG_SYS_ODCR                0xff
-#define CONFIG_SYS_PGMAX               0x32    /* how long the 8240 retains the        */
-                                       /* currently accessed page in memory    */
-                                       /* see 8240 book for details            */
-
-#define CONFIG_SYS_IBAT0L  (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U  (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT3L  (0xFC000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U  (0xFC000000 | BATU_BL_64M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L  CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U  CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L  CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U  CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L  CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U  CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* Max number of flash banks            */
-#define CONFIG_SYS_MAX_FLASH_SECT      39      /* Max number of sectors in one bank    */
-#define INTEL_ID_28F160F3T     0x88F388F3      /*  16M = 1M x 16 top boot sector       */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-       /* Warining: environment is not EMBEDDED in the ppcboot code.
-        * It's stored in flash separately.
-        */
-#define CONFIG_ENV_IS_IN_FLASH     1
-
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + 0x7F8000)
-#define CONFIG_ENV_SIZE                0x4000  /* Size of the Environment              */
-#define CONFIG_ENV_OFFSET              0       /* starting right at the beginning      */
-#define CONFIG_ENV_SECT_SIZE   0x8000 /* Size of the Environment Sector        */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value        */
-#endif
-
-/*----------------------------------------------------------------------*/
-/* CPC45 Memory Map                                                    */
-/*----------------------------------------------------------------------*/
-#define SRAM_BASE      0x80000000      /* SRAM base address            */
-#define SRAM_END       0x801FFFFF
-#define ST16552_A_BASE 0x80200000      /* ST16552 channel A            */
-#define ST16552_B_BASE 0x80400000      /* ST16552 channel A            */
-#define BCSR_BASE      0x80600000      /* board control / status registers */
-#define DISPLAY_BASE   0x80600040      /* DISPLAY base                 */
-#define PCMCIA_MEM_BASE 0x83000000     /* PCMCIA memory window base    */
-#define PCMCIA_IO_BASE 0xFE000000      /* PCMCIA IO window base        */
-
-#define        CONFIG_SYS_SRAM_BASE    SRAM_BASE
-#define        CONFIG_SYS_SRAM_SIZE    (SRAM_END - SRAM_BASE + 1)
-
-/*---------------------------------------------------------------------*/
-/* CPC45 Control/Status Registers                                     */
-/*---------------------------------------------------------------------*/
-#define IRQ_ENA_1              *((volatile uchar*)(BCSR_BASE + 0x00))
-#define IRQ_STAT_1             *((volatile uchar*)(BCSR_BASE + 0x01))
-#define IRQ_ENA_2              *((volatile uchar*)(BCSR_BASE + 0x02))
-#define IRQ_STAT_2             *((volatile uchar*)(BCSR_BASE + 0x03))
-#define BOARD_CTRL             *((volatile uchar*)(BCSR_BASE + 0x04))
-#define BOARD_STAT             *((volatile uchar*)(BCSR_BASE + 0x05))
-#define WDG_START              *((volatile uchar*)(BCSR_BASE + 0x06))
-#define WDG_PRESTOP            *((volatile uchar*)(BCSR_BASE + 0x06))
-#define WDG_STOP               *((volatile uchar*)(BCSR_BASE + 0x06))
-#define BOARD_REV              *((volatile uchar*)(BCSR_BASE + 0x07))
-
-/* IRQ_ENA_1 bit definitions */
-#define I_ENA_1_IERA   0x80            /* INTA enable                  */
-#define I_ENA_1_IERB   0x40            /* INTB enable                  */
-#define I_ENA_1_IERC   0x20            /* INTC enable                  */
-#define I_ENA_1_IERD   0x10            /* INTD enable                  */
-
-/* IRQ_STAT_1 bit definitions */
-#define I_STAT_1_INTA  0x80            /* INTA status                  */
-#define I_STAT_1_INTB  0x40            /* INTB status                  */
-#define I_STAT_1_INTC  0x20            /* INTC status                  */
-#define I_STAT_1_INTD  0x10            /* INTD status                  */
-
-/* IRQ_ENA_2 bit definitions */
-#define I_ENA_2_IEAB   0x80            /* ABORT IRQ enable             */
-#define I_ENA_2_IEK1   0x40            /* KEY1 IRQ enable              */
-#define I_ENA_2_IEK2   0x20            /* KEY2 IRQ enable              */
-#define I_ENA_2_IERT   0x10            /* RTC IRQ enable               */
-#define I_ENA_2_IESM   0x08            /* LM81 IRQ enable              */
-#define I_ENA_2_IEDG   0x04            /* DEGENERATING IRQ enable      */
-#define I_ENA_2_IES2   0x02            /* ST16552/B IRQ enable         */
-#define I_ENA_2_IES1   0x01            /* ST16552/A IRQ enable         */
-
-/* IRQ_STAT_2 bit definitions */
-#define I_STAT_2_ABO   0x80            /* ABORT IRQ status             */
-#define I_STAT_2_KY1   0x40            /* KEY1 IRQ status              */
-#define I_STAT_2_KY2   0x20            /* KEY2 IRQ status              */
-#define I_STAT_2_RTC   0x10            /* RTC IRQ status               */
-#define I_STAT_2_SMN   0x08            /* LM81 IRQ status              */
-#define I_STAT_2_DEG   0x04            /* DEGENERATING IRQ status      */
-#define I_STAT_2_SIO2  0x02            /* ST16552/B IRQ status         */
-#define I_STAT_2_SIO1  0x01            /* ST16552/A IRQ status         */
-
-/* BOARD_CTRL bit definitions */
-#define USER_LEDS              2                       /* 2 user LEDs  */
-
-#if (USER_LEDS == 4)
-#define B_CTRL_WRSE            0x80
-#define B_CTRL_KRSE            0x40
-#define B_CTRL_FWRE            0x20            /* Flash write enable           */
-#define B_CTRL_FWPT            0x10            /* Flash write protect          */
-#define B_CTRL_LED3            0x08            /* LED 3 control                */
-#define B_CTRL_LED2            0x04            /* LED 2 control                */
-#define B_CTRL_LED1            0x02            /* LED 1 control                */
-#define B_CTRL_LED0            0x01            /* LED 0 control                */
-#else
-#define B_CTRL_WRSE            0x80
-#define B_CTRL_KRSE            0x40
-#define B_CTRL_FWRE_1          0x20            /* Flash write enable           */
-#define B_CTRL_FWPT_1          0x10            /* Flash write protect          */
-#define B_CTRL_LED1            0x08            /* LED 1 control                */
-#define B_CTRL_LED0            0x04            /* LED 0 control                */
-#define B_CTRL_FWRE_0          0x02            /* Flash write enable           */
-#define B_CTRL_FWPT_0          0x01            /* Flash write protect          */
-#endif
-
-/* BOARD_STAT bit definitions */
-#define B_STAT_WDGE            0x80
-#define B_STAT_WDGS            0x40
-#define B_STAT_WRST            0x20
-#define B_STAT_KRST            0x10
-#define B_STAT_CSW3            0x08            /* sitch bit 3 status           */
-#define B_STAT_CSW2            0x04            /* sitch bit 2 status           */
-#define B_STAT_CSW1            0x02            /* sitch bit 1 status           */
-#define B_STAT_CSW0            0x01            /* sitch bit 0 status           */
-
-/*---------------------------------------------------------------------*/
-/* Display addresses                                                  */
-/*---------------------------------------------------------------------*/
-#define DISP_UDC_RAM   (DISPLAY_BASE + 0x08)   /* UDC RAM             */
-#define DISP_CHR_RAM   (DISPLAY_BASE + 0x18)   /* character Ram       */
-#define DISP_FLASH     (DISPLAY_BASE + 0x20)   /* Flash Ram           */
-
-#define DISP_UDC_ADR   *((volatile uchar*)(DISPLAY_BASE + 0x00))       /* UDC Address Reg.    */
-#define DISP_CWORD     *((volatile uchar*)(DISPLAY_BASE + 0x10))       /* Control Word Reg.   */
-
-#define DISP_DIG0      *((volatile uchar*)(DISP_CHR_RAM + 0x00))       /* Digit 0 address     */
-#define DISP_DIG1      *((volatile uchar*)(DISP_CHR_RAM + 0x01))       /* Digit 0 address     */
-#define DISP_DIG2      *((volatile uchar*)(DISP_CHR_RAM + 0x02))       /* Digit 0 address     */
-#define DISP_DIG3      *((volatile uchar*)(DISP_CHR_RAM + 0x03))       /* Digit 0 address     */
-#define DISP_DIG4      *((volatile uchar*)(DISP_CHR_RAM + 0x04))       /* Digit 0 address     */
-#define DISP_DIG5      *((volatile uchar*)(DISP_CHR_RAM + 0x05))       /* Digit 0 address     */
-#define DISP_DIG6      *((volatile uchar*)(DISP_CHR_RAM + 0x06))       /* Digit 0 address     */
-#define DISP_DIG7      *((volatile uchar*)(DISP_CHR_RAM + 0x07))       /* Digit 0 address     */
-
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                     /* include pci support                  */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_SYS_EARLY_PCI_INIT
-#undef CONFIG_PCI_PNP
-#undef CONFIG_PCI_SCAN_SHOW
-
-
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8       /* use 8 rx buffer on eepro100  */
-
-#define PCI_ENET0_IOADDR       0x82000000
-#define PCI_ENET0_MEMADDR      0x82000000
-#define PCI_PLX9030_IOADDR     0x82100000
-#define PCI_PLX9030_MEMADDR    0x82100000
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_I82365
-
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     PCMCIA_MEM_BASE
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     0x1000
-
-#define CONFIG_PCMCIA_SLOT_A
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define        CONFIG_IDE_8xx_PCCARD   1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_RESET                /* reset for IDE not supported  */
-#define        CONFIG_IDE_LED                  /* LED   for IDE is  supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     CONFIG_SYS_PCMCIA_MEM_SIZE
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x400)
-
-#define CONFIG_DOS_PARTITION
-
-#endif /* __CONFIG_H */
index 05106cde90acd83879a4efe27746a155dcf004e2..845ed81a46d37de86873a1a1d1be6d70ae5366c4 100644 (file)
@@ -20,6 +20,8 @@
 #define CONFIG_405GP           1       /* This is a PPC405 CPU         */
 
 #define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
 
diff --git a/include/configs/CPCI405.h b/include/configs/CPCI405.h
deleted file mode 100644 (file)
index 34252d4..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_CPCI405         1       /* ...on a CPCI405 board        */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R      1      /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33000000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-
-#undef  CONFIG_HAS_ETH1
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_EEPROM
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define CONFIG_SUPPORT_VFAT
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */
-#define PCI_HOST_FORCE  1               /* configure as pci host        */
-#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST        PCI_HOST_AUTO   /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1 /* don't skip host bridge config*/
-
-#define CONFIG_PCI_BOOTDELAY    0       /* enable pci bootdelay variable*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID2 0x0406 /* PCI Device ID: CPCI-405-A    */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  (bd->bi_memstart) /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  (~(bd->bi_memsize - 1) | 1) /* memsize, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI (bd->bi_memsize) /* host use this pci address */
-
-#define CONFIG_PCI_4xx_PTM_OVERWRITE   1 /* overwrite PTMx settings by env */
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#undef CONFIG_IDE_8xx_DIRECT               /* no pcmcia interface required */
-#undef CONFIG_IDE_LED                  /* no led for ide supported     */
-#undef CONFIG_IDE_RESET                /* no reset for ide supported   */
-
-#define CONFIG_SYS_IDE_MAXBUS          1               /* max. 1 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0000  /* Offset for alternate registers       */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (~(CONFIG_SYS_TEXT_BASE) + 1)
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xf0200000              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          (32*1024)               /* NVRAM size           */
-#define CONFIG_SYS_VXWORKS_MAC_PTR     (CONFIG_SYS_NVRAM_BASE_ADDR+0x6900) /* VxWorks eth-addr*/
-
-#if 1 /* Use NVRAM for environment variables */
-/*-----------------------------------------------------------------------
- * NVRAM organization
- */
-#define CONFIG_ENV_IS_IN_NVRAM 1       /* use NVRAM for environment vars       */
-#define CONFIG_ENV_SIZE                0x1000          /* Size of Environment vars     */
-#define CONFIG_ENV_ADDR                \
-       (CONFIG_SYS_NVRAM_BASE_ADDR+CONFIG_SYS_NVRAM_SIZE-CONFIG_ENV_SIZE)      /* Env  */
-
-#else /* Use EEPROM for environment variables */
-
-#define CONFIG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE            0x400   /* 1024 bytes may be used for env vars */
-                                  /* total size of a CAT24WC08 is 1024 bytes */
-#endif
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC08) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF800000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFFC00000      /* FLASH bank #1        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1) initialization                                 */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 2 (CAN0, 1, 2, Codeswitch) initialization                       */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (CompactFlash IDE) initialization                             */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 4 (NVRAM) initialization                                                */
-#define CONFIG_SYS_EBC_PB4AP           0x01005280  /* TWT=2,WBN=1,WBF=1,TH=1,SOR=1     */
-#define CONFIG_SYS_EBC_PB4CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 5 (Quart) initialization                                                */
-#define CONFIG_SYS_EBC_PB5AP           0x04005B80  /* TWT=8,WBN=1,WBF=1,TH=5,RE=1,SOR=1*/
-#define CONFIG_SYS_EBC_PB5CR           0xF0318000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=8bit  */
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00400000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00800000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-#if 1 /* test-only */
-#define CONFIG_SYS_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */
-
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000  /* use data cache                  */
-#else
-#define CONFIG_SYS_INIT_RAM_ADDR       0x00df0000 /* inside of SDRAM                   */
-#endif
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000  /* Size of used area in RAM            */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
index bf85439802a5727b1544f19f9040856a0b628999..ceddd7accc85540d4fa2d2a5f34df4e6526a4802 100644 (file)
@@ -23,6 +23,8 @@
 #undef  CONFIG_CPCI405_6U               /* enable this for 6U boards    */
 
 #define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
 #define CONFIG_MISC_INIT_R      1      /* call misc_init_r()           */
diff --git a/include/configs/CPCI405AB.h b/include/configs/CPCI405AB.h
deleted file mode 100644 (file)
index 7d58e9d..0000000
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_CPCI405         1       /* ...on a CPCI405 board        */
-#define CONFIG_CPCI405_VER2    1       /* ...version 2                 */
-#define CONFIG_CPCI405AB       1       /* ...and special AB version    */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R      1      /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33330000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#undef CONFIG_LOADS_ECHO               /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_RTC_M48T35A     1               /* ST Electronics M48 timekeeper */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_EEPROM
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define CONFIG_SUPPORT_VFAT
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_CMDLINE_EDITING         /* add command line history     */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_AUTOBOOT_KEYED  1
-#define CONFIG_AUTOBOOT_PROMPT \
-       "Press SPACE to abort autoboot in %d seconds\n", bootdelay
-#undef CONFIG_AUTOBOOT_DELAY_STR
-#define CONFIG_AUTOBOOT_STOP_STR " "
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure as pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_AUTO  /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1 /* don't skip host bridge config*/
-
-#define CONFIG_PCI_BOOTDELAY   0       /* enable pci bootdelay variable*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID2 0x0406 /* PCI Device ID: CPCI-405-A    */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  (bd->bi_memstart) /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  (~(bd->bi_memsize - 1) | 1) /* memsize, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI (bd->bi_memsize) /* host use this pci address */
-
-#define CONFIG_PCI_4xx_PTM_OVERWRITE   1 /* overwrite PTMx settings by env */
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#undef CONFIG_IDE_8xx_DIRECT               /* no pcmcia interface required */
-#undef CONFIG_IDE_LED                  /* no led for ide supported     */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported      */
-
-#define CONFIG_SYS_IDE_MAXBUS          1               /* max. 1 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0000  /* Offset for alternate registers       */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFC0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)    /* Reserve 256 kB for malloc()  */
-
-#define CONFIG_PRAM            0       /* use pram variable to overwrite */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-#define CONFIG_OF_LIBFDT
-#define CONFIG_OF_BOARD_SETUP
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC32) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC32             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x01
-#define CONFIG_SYS_I2C_MULTI_EEPROMS   1       /* more than one eeprom used!   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 5    /* The Catalyst CAT24WC32 has   */
-                                       /* 32 byte page write mode using*/
-                                       /* last 5 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/* Use EEPROM for environment variables */
-
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x800   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC32 is 4096 bytes */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xf0200000              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          (32*1024)               /* NVRAM size           */
-#define CONFIG_SYS_VXWORKS_MAC_PTR     (CONFIG_SYS_NVRAM_BASE_ADDR+0x6900) /* VxWorks eth-addr*/
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF800000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFFC00000      /* FLASH bank #1        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1) initialization                                 */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 2 (CAN0, 1) initialization                                      */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-#define CONFIG_SYS_LED_ADDR            0xF0000380
-
-/* Memory Bank 3 (CompactFlash IDE) initialization                             */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 4 (NVRAM/RTC) initialization                                    */
-/*#define CONFIG_SYS_EBC_PB4AP           0x01805280  / * TWT=3,WBN=1,WBF=1,TH=1,SOR=1     */
-#define CONFIG_SYS_EBC_PB4AP           0x01805680  /* TWT=3,WBN=1,WBF=1,TH=3,SOR=1     */
-#define CONFIG_SYS_EBC_PB4CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 5 (optional Quart) initialization                               */
-#define CONFIG_SYS_EBC_PB5AP           0x04005B80  /* TWT=8,WBN=1,WBF=1,TH=5,RE=1,SOR=1*/
-#define CONFIG_SYS_EBC_PB5CR           0xF0318000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 6 (FPGA internal) initialization                                        */
-#define CONFIG_SYS_EBC_PB6AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB6CR           0xF041A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-#define CONFIG_SYS_FPGA_BASE_ADDR      0xF0400000
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-/* FPGA internal regs */
-#define CONFIG_SYS_FPGA_MODE           0x00
-#define CONFIG_SYS_FPGA_STATUS         0x02
-#define CONFIG_SYS_FPGA_TS             0x04
-#define CONFIG_SYS_FPGA_TS_LOW         0x06
-#define CONFIG_SYS_FPGA_TS_CAP0        0x10
-#define CONFIG_SYS_FPGA_TS_CAP0_LOW    0x12
-#define CONFIG_SYS_FPGA_TS_CAP1        0x14
-#define CONFIG_SYS_FPGA_TS_CAP1_LOW    0x16
-#define CONFIG_SYS_FPGA_TS_CAP2        0x18
-#define CONFIG_SYS_FPGA_TS_CAP2_LOW    0x1a
-#define CONFIG_SYS_FPGA_TS_CAP3        0x1c
-#define CONFIG_SYS_FPGA_TS_CAP3_LOW    0x1e
-
-/* FPGA Mode Reg */
-#define CONFIG_SYS_FPGA_MODE_CF_RESET      0x0001
-#define CONFIG_SYS_FPGA_MODE_DUART_RESET   0x0002
-#define CONFIG_SYS_FPGA_MODE_ENABLE_OUTPUT 0x0004     /* only set on CPCI-405 Ver 3 */
-#define CONFIG_SYS_FPGA_MODE_1WIRE_DIR     0x0100     /* dir=1 -> output */
-#define CONFIG_SYS_FPGA_MODE_SIM_OK_DIR    0x0200
-#define CONFIG_SYS_FPGA_MODE_TESTRIG_FAIL_DIR 0x0400
-#define CONFIG_SYS_FPGA_MODE_1WIRE         0x1000
-#define CONFIG_SYS_FPGA_MODE_SIM_OK        0x2000     /* wired-or net from all devices */
-#define CONFIG_SYS_FPGA_MODE_TESTRIG_FAIL  0x4000
-
-/* FPGA Status Reg */
-#define CONFIG_SYS_FPGA_STATUS_DIP0    0x0001
-#define CONFIG_SYS_FPGA_STATUS_DIP1    0x0002
-#define CONFIG_SYS_FPGA_STATUS_DIP2    0x0004
-#define CONFIG_SYS_FPGA_STATUS_FLASH   0x0008
-#define CONFIG_SYS_FPGA_STATUS_1WIRE   0x1000
-#define CONFIG_SYS_FPGA_STATUS_SIM_OK  0x2000
-
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       128*1024    /* 128kByte is enough for XC2S30 */
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-#define CONFIG_SYS_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */
-
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000  /* use data cache                  */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000  /* Size of used area in RAM            */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/CPCI405DT.h b/include/configs/CPCI405DT.h
deleted file mode 100644 (file)
index c2598a3..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_CPCI405         1       /* ...on a CPCI405 board        */
-#define CONFIG_CPCI405_VER2    1       /* ...version 2                 */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R      1      /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33330000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_RTC_M48T35A     1               /* ST Electronics M48 timekeeper */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_EEPROM
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define CONFIG_SUPPORT_VFAT
-
-#undef  CONFIG_AUTO_UPDATE              /* autoupdate via compactflash  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-/* Only interrupt boot if special string is typed */
-#define CONFIG_AUTOBOOT_KEYED  1
-#define CONFIG_AUTOBOOT_PROMPT         \
-       "Autobooting in %d seconds\n", bootdelay
-#undef  CONFIG_AUTOBOOT_DELAY_STR
-#undef  CONFIG_AUTOBOOT_STOP_STR        /* defined via environment var  */
-#define CONFIG_AUTOBOOT_STOP_STR2 "esdesd" /* esd special for esd access*/
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */
-#define PCI_HOST_FORCE  1               /* configure as pci host        */
-#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST        PCI_HOST_AUTO   /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1 /* don't skip host bridge config*/
-
-#define CONFIG_PCI_BOOTDELAY    0       /* enable pci bootdelay variable*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID2 0x0406 /* PCI Device ID: CPCI-405-A    */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  (bd->bi_memstart) /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  (~(bd->bi_memsize - 1) | 1) /* memsize, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI (bd->bi_memsize) /* host use this pci address */
-
-#define CONFIG_PCI_4xx_PTM_OVERWRITE   1 /* overwrite PTMx settings by env */
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#undef CONFIG_IDE_8xx_DIRECT               /* no pcmcia interface required */
-#undef CONFIG_IDE_LED                  /* no led for ide supported     */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported      */
-
-#define CONFIG_SYS_IDE_MAXBUS          1               /* max. 1 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0000  /* Offset for alternate registers       */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFC0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#if 0 /* Use NVRAM for environment variables */
-/*-----------------------------------------------------------------------
- * NVRAM organization
- */
-#define CONFIG_ENV_IS_IN_NVRAM 1       /* use NVRAM for environment vars       */
-#define CONFIG_ENV_SIZE                0x0ff8          /* Size of Environment vars     */
-#define CONFIG_ENV_ADDR                \
-       (CONFIG_SYS_NVRAM_BASE_ADDR+CONFIG_SYS_NVRAM_SIZE-(CONFIG_ENV_SIZE+8))  /* Env  */
-
-#else /* Use EEPROM for environment variables */
-
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x800   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-#endif
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xf0200000              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          (32*1024)               /* NVRAM size           */
-#define CONFIG_SYS_VXWORKS_MAC_PTR     (CONFIG_SYS_NVRAM_BASE_ADDR+0x6900) /* VxWorks eth-addr*/
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF800000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFFC00000      /* FLASH bank #1        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1) initialization                                 */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 2 (CAN0, 1) initialization                                      */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-#define CONFIG_SYS_LED_ADDR            0xF0000380
-
-/* Memory Bank 3 (CompactFlash IDE) initialization                             */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 4 (NVRAM/RTC) initialization                                    */
-/*#define CONFIG_SYS_EBC_PB4AP           0x01805280  / * TWT=3,WBN=1,WBF=1,TH=1,SOR=1     */
-#define CONFIG_SYS_EBC_PB4AP           0x01805680  /* TWT=3,WBN=1,WBF=1,TH=3,SOR=1     */
-#define CONFIG_SYS_EBC_PB4CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 5 (optional Quart) initialization                               */
-#define CONFIG_SYS_EBC_PB5AP           0x04005B80  /* TWT=8,WBN=1,WBF=1,TH=5,RE=1,SOR=1*/
-#define CONFIG_SYS_EBC_PB5CR           0xF0318000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 6 (FPGA internal) initialization                                        */
-#define CONFIG_SYS_EBC_PB6AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB6CR           0xF041A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-#define CONFIG_SYS_FPGA_BASE_ADDR      0xF0400000
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-/* FPGA internal regs */
-#define CONFIG_SYS_FPGA_MODE           0x00
-#define CONFIG_SYS_FPGA_STATUS         0x02
-#define CONFIG_SYS_FPGA_TS             0x04
-#define CONFIG_SYS_FPGA_TS_LOW         0x06
-#define CONFIG_SYS_FPGA_TS_CAP0        0x10
-#define CONFIG_SYS_FPGA_TS_CAP0_LOW    0x12
-#define CONFIG_SYS_FPGA_TS_CAP1        0x14
-#define CONFIG_SYS_FPGA_TS_CAP1_LOW    0x16
-#define CONFIG_SYS_FPGA_TS_CAP2        0x18
-#define CONFIG_SYS_FPGA_TS_CAP2_LOW    0x1a
-#define CONFIG_SYS_FPGA_TS_CAP3        0x1c
-#define CONFIG_SYS_FPGA_TS_CAP3_LOW    0x1e
-
-/* FPGA Mode Reg */
-#define CONFIG_SYS_FPGA_MODE_CF_RESET      0x0001
-#define CONFIG_SYS_FPGA_MODE_DUART_RESET   0x0002
-#define CONFIG_SYS_FPGA_MODE_ENABLE_OUTPUT 0x0004     /* only set on CPCI-405 Ver 3 */
-#define CONFIG_SYS_FPGA_MODE_TS_IRQ_ENABLE 0x0100
-#define CONFIG_SYS_FPGA_MODE_TS_IRQ_CLEAR  0x1000
-#define CONFIG_SYS_FPGA_MODE_TS_CLEAR      0x2000
-
-/* FPGA Status Reg */
-#define CONFIG_SYS_FPGA_STATUS_DIP0    0x0001
-#define CONFIG_SYS_FPGA_STATUS_DIP1    0x0002
-#define CONFIG_SYS_FPGA_STATUS_DIP2    0x0004
-#define CONFIG_SYS_FPGA_STATUS_FLASH   0x0008
-#define CONFIG_SYS_FPGA_STATUS_TS_IRQ  0x1000
-
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       32*1024     /* 32kByte is enough for XC2S15  */
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-#define CONFIG_SYS_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */
-
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000  /* use data cache                  */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000  /* Size of used area in RAM            */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/CPCIISER4.h b/include/configs/CPCIISER4.h
deleted file mode 100644 (file)
index 25365f7..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_CPCIISER4       1       /* ...on a CPCIISER4 board      */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-
-#define CONFIG_SYS_CLK_FREQ    25000000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND     "bootm fff00000"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_EEPROM
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#define CONFIG_SYS_EXT_SERIAL_CLOCK    1843200  /* use external serial clock   */
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure ar pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_AUTO  /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0404  /* PCI Device ID: CPCI-ISER4    */
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xff000001      /* 16MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffe00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffe00001      /* 2MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFC0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC08) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x300   /* 768 bytes may be used for env vars */
-                                  /* total size of a CAT24WC08 is 1024 bytes */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFFF00000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0               /* FLASH bank #1        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Uart 8bit) initialization                                    */
-#define CONFIG_SYS_EBC_PB1AP           0x01000480  /* TWT=2,TH=2,no Ready,BEM=0,SOR=1  */
-#define CONFIG_SYS_EBC_PB1CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (Uart 32bit) initialization                                   */
-#define CONFIG_SYS_EBC_PB2AP           0x000004c0  /* no Ready, BEM=1                  */
-#define CONFIG_SYS_EBC_PB2CR           0xF011C000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=32bit */
-
-/* Memory Bank 3 (FPGA Reset) initialization                                   */
-#define CONFIG_SYS_EBC_PB3AP           0x010004C0  /* no Ready, BEM=1                  */
-#define CONFIG_SYS_EBC_PB3CR           0xF021A000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=16bit */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000  /* use data cache                  */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000  /* Size of used area in RAM            */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/CPU86.h b/include/configs/CPU86.h
deleted file mode 100644 (file)
index 7be83b0..0000000
+++ /dev/null
@@ -1,629 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_CPU86           1       /* ...on a CPU86 board  */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#ifdef CONFIG_BOOT_ROM
-#define CONFIG_SYS_TEXT_BASE   0xFF800000
-#else
-#define        CONFIG_SYS_TEXT_BASE    0xFF000000
-#endif
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#undef  CONFIG_CONS_ON_SMC             /* define if console on SMC */
-#define CONFIG_CONS_ON_SCC             /* define if console on SCC */
-#undef  CONFIG_CONS_NONE               /* define if console on something else*/
-#define CONFIG_CONS_INDEX      1       /* which serial channel for console */
-
-#if defined(CONFIG_CONS_NONE) || defined(CONFIG_CONS_USE_EXTC)
-#define CONFIG_BAUDRATE                230400
-#else
-#define CONFIG_BAUDRATE                9600
-#endif
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC       */
-#define        CONFIG_ETHER_ON_FCC             /* define if ether on FCC       */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-#define        CONFIG_ETHER_INDEX      1       /* which SCC/FCC channel for ethernet */
-
-#if defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 1)
-
-/*
- * - Rx-CLK is CLK11
- * - Tx-CLK is CLK12
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK1       (CMXFCR_FC1|CMXFCR_RF1CS_MSK|CMXFCR_TF1CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE1      (CMXFCR_RF1CS_CLK11|CMXFCR_TF1CS_CLK12)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-#elif defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 2)
-
-/*
- * - Rx-CLK is CLK13
- * - Tx-CLK is CLK14
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-#endif /* CONFIG_ETHER_ON_FCC, CONFIG_ETHER_INDEX */
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#define CONFIG_8260_CLKIN      64000000        /* in Hz */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_PREBOOT                                                         \
-       "echo; "                                                                \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS; "   \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp; "                                                               \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-/*-----------------------------------------------------------------------
- * I2C/EEPROM/RTC configuration
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT                    /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
-#define I2C_READ       ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00010000; \
-                       else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00020000; \
-                       else    iop->pdat &= ~0x00020000
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-
-#define CONFIG_RTC_PCF8563
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configuration options
- */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END 0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR    0x100000        /* default load address */
-
-#define        CONFIG_SYS_RESET_ADDRESS 0xFFF00100     /* "bad" address                */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * Flash configuration
- */
-
-#define CONFIG_SYS_BOOTROM_BASE        0xFF800000
-#define CONFIG_SYS_BOOTROM_SIZE        0x00080000
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#define CONFIG_SYS_FLASH_SIZE          0x00800000
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max num of memory banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max num of sects on one chip */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000  /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-/*-----------------------------------------------------------------------
- * Other areas to be mapped
- */
-
-/* CS3: Dual ported SRAM */
-#define CONFIG_SYS_DPSRAM_BASE         0x40000000
-#define CONFIG_SYS_DPSRAM_SIZE         0x00020000
-
-/* CS4: DiskOnChip */
-#define CONFIG_SYS_DOC_BASE            0xF4000000
-#define CONFIG_SYS_DOC_SIZE            0x00100000
-
-/* CS5: FDC37C78 controller */
-#define CONFIG_SYS_FDC37C78_BASE       0xF1000000
-#define CONFIG_SYS_FDC37C78_SIZE       0x00100000
-
-/* CS6: Board configuration registers */
-#define CONFIG_SYS_BCRS_BASE           0xF2000000
-#define CONFIG_SYS_BCRS_SIZE           0x00010000
-
-/* CS7: VME Extended Access Range */
-#define CONFIG_SYS_VMEEAR_BASE         0x80000000
-#define CONFIG_SYS_VMEEAR_SIZE         0x01000000
-
-/* CS8: VME Standard Access Range */
-#define CONFIG_SYS_VMESAR_BASE         0xFE000000
-#define CONFIG_SYS_VMESAR_SIZE         0x01000000
-
-/* CS9: VME Short I/O Access Range */
-#define CONFIG_SYS_VMESIOAR_BASE       0xFD000000
-#define CONFIG_SYS_VMESIOAR_SIZE       0x01000000
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- *
- * if you change bits in the HRCW, you must also change the CONFIG_SYS_*
- * defines for the various registers affected by the HRCW e.g. changing
- * HRCW_DPPCxx requires you to also change CONFIG_SYS_SIUMCR.
- */
-#if defined(CONFIG_BOOT_ROM)
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_CIP | HRCW_ISB100 | HRCW_BMS | \
-                                HRCW_BPS01 | HRCW_CS10PC01)
-#else
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_CIP | HRCW_ISB100 | HRCW_BMS | HRCW_CS10PC01)
-#endif
-
-/* no slaves so just fill with zeros */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- *
- * 60x SDRAM is mapped at CONFIG_SYS_SDRAM_BASE.
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_SDRAM_MAX_SIZE      0x08000000      /* max. 128 MB          */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()*/
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-# define CONFIG_SYS_RAMBOOT
-#endif
-
-#if 0
-/* environment is in Flash */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#ifdef CONFIG_BOOT_ROM
-# define CONFIG_ENV_ADDR               (CONFIG_SYS_FLASH_BASE+0x70000)
-# define CONFIG_ENV_SIZE               0x10000
-# define CONFIG_ENV_SECT_SIZE  0x10000
-#endif
-#else
-/* environment is in EEPROM */
-#define CONFIG_ENV_IS_IN_EEPROM        1
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x58    /* EEPROM X24C16                */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-/* mask of address bits that overflow into the "EEPROM chip address"    */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-#define CONFIG_ENV_OFFSET              512
-#define CONFIG_ENV_SIZE                (2048 - 512)
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU              */
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                    2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE|HID0_DCE|HID0_ICFI|\
-                        HID0_DCI|HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL  (HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                     5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         RMR_CSRE
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                       4-25
- *-----------------------------------------------------------------------
- */
-#define BCR_APD01      0x10000000
-#define CONFIG_SYS_BCR         (BCR_APD01|BCR_ETM|BCR_LETM)    /* 8260 mode */
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                             4-31
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_BBD|SIUMCR_DPPC00|SIUMCR_APPC10|\
-                        SIUMCR_CS10PC01|SIUMCR_BCTLC10)
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                             4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                     4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                 4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                   9-8
- *-----------------------------------------------------------------------
- * Ensure DFBRG is Divide by 16
- */
-#define CONFIG_SYS_SCCR        SCCR_DFBRG01
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                         13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-#define CONFIG_SYS_MIN_AM_MASK 0xC0000000
-/*-----------------------------------------------------------------------
- * MPTPR - Memory Refresh Timer Prescaler Register              10-18
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_MPTPR       0x1F00
-
-/*-----------------------------------------------------------------------
- * PSRT - Refresh Timer Register                                10-16
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_PSRT        0x0f
-
-/*-----------------------------------------------------------------------
- * PSRT - SDRAM Mode Register                                   10-10
- *-----------------------------------------------------------------------
- */
-
-       /* SDRAM initialization values for 8-column chips
-        */
-#define CONFIG_SYS_OR2_8COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A9             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_8COL  (PSDMR_SDAM_A13_IS_A5           |\
-                        PSDMR_BSMA_A14_A16             |\
-                        PSDMR_SDA10_PBI0_A10           |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_1W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-       /* SDRAM initialization values for 9-column chips
-        */
-#define CONFIG_SYS_OR2_9COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A7             |\
-                        ORxS_NUMR_13)
-
-#define CONFIG_SYS_PSDMR_9COL  (PSDMR_SDAM_A14_IS_A5           |\
-                        PSDMR_BSMA_A13_A15             |\
-                        PSDMR_SDA10_PBI0_A9            |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_1W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-/*
- * Init Memory Controller:
- *
- * Bank Bus     Machine PortSz  Device
- * ---- ---     ------- ------  ------
- *  0   60x     GPCM    8  bit  Boot ROM
- *  1   60x     GPCM    64 bit  FLASH
- *  2   60x     SDRAM   64 bit  SDRAM
- *
- */
-
-#define CONFIG_SYS_MRS_OFFS    0x00000000
-
-#ifdef CONFIG_BOOT_ROM
-/* Bank 0 - Boot ROM
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_BOOTROM_BASE & BRx_BA_MSK)|\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BOOTROM_SIZE)   |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 1 - FLASH
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)     |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-#else /* CONFIG_BOOT_ROM */
-/* Bank 0 - FLASH
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)     |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 1 - Boot ROM
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_BOOTROM_BASE & BRx_BA_MSK)|\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BOOTROM_SIZE)   |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-#endif /* CONFIG_BOOT_ROM */
-
-
-/* Bank 2 - 60x bus SDRAM
- */
-#ifndef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR2_PRELIM   CONFIG_SYS_OR2_9COL
-
-#define CONFIG_SYS_PSDMR        CONFIG_SYS_PSDMR_9COL
-#endif /* CONFIG_SYS_RAMBOOT */
-
-/* Bank 3 - Dual Ported SRAM
- */
-#define CONFIG_SYS_BR3_PRELIM  ((CONFIG_SYS_DPSRAM_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR3_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_DPSRAM_SIZE)    |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_SETA)
-
-/* Bank 4 - DiskOnChip
- */
-#define CONFIG_SYS_BR4_PRELIM  ((CONFIG_SYS_DOC_BASE & BRx_BA_MSK)    |\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR4_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_DOC_SIZE)       |\
-                        ORxG_ACS_DIV2                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 5 - FDC37C78 controller
- */
-#define CONFIG_SYS_BR5_PRELIM  ((CONFIG_SYS_FDC37C78_BASE & BRx_BA_MSK) |\
-                        BRx_PS_8                         |\
-                        BRx_MS_GPCM_P                    |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR5_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FDC37C78_SIZE)    |\
-                        ORxG_ACS_DIV2                    |\
-                        ORxG_SCY_8_CLK                   |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 6 - Board control registers
- */
-#define CONFIG_SYS_BR6_PRELIM  ((CONFIG_SYS_BCRS_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR6_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BCRS_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_SCY_5_CLK)
-
-/* Bank 7 - VME Extended Access Range
- */
-#define CONFIG_SYS_BR7_PRELIM  ((CONFIG_SYS_VMEEAR_BASE & BRx_BA_MSK) |\
-                        BRx_PS_32                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR7_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_VMEEAR_SIZE)    |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_SETA)
-
-/* Bank 8 - VME Standard Access Range
- */
-#define CONFIG_SYS_BR8_PRELIM  ((CONFIG_SYS_VMESAR_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR8_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_VMESAR_SIZE)    |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_SETA)
-
-/* Bank 9 - VME Short I/O Access Range
- */
-#define CONFIG_SYS_BR9_PRELIM  ((CONFIG_SYS_VMESIOAR_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16                        |\
-                        BRx_MS_GPCM_P                    |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR9_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_VMESIOAR_SIZE)    |\
-                        ORxG_CSNT                        |\
-                        ORxG_ACS_DIV1                    |\
-                        ORxG_SCY_5_CLK                   |\
-                        ORxG_SETA)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/CPU87.h b/include/configs/CPU87.h
deleted file mode 100644 (file)
index d3a59e8..0000000
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_CPU87           1       /* ...on a CPU87 board  */
-#define CONFIG_PCI
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#ifdef CONFIG_BOOT_ROM
-#define CONFIG_SYS_TEXT_BASE   0xFF800000
-#else
-#define        CONFIG_SYS_TEXT_BASE    0xFF000000
-#endif
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#undef CONFIG_CONS_ON_SMC              /* define if console on SMC */
-#define CONFIG_CONS_ON_SCC             /* define if console on SCC */
-#undef CONFIG_CONS_NONE                /* define if console on something else*/
-#define CONFIG_CONS_INDEX      1       /* which serial channel for console */
-
-#if defined(CONFIG_CONS_NONE) || defined(CONFIG_CONS_USE_EXTC)
-#define CONFIG_BAUDRATE                230400
-#else
-#define CONFIG_BAUDRATE                9600
-#endif
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC       */
-#define CONFIG_ETHER_ON_FCC            /* define if ether on FCC       */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-#define CONFIG_ETHER_INDEX     1       /* which SCC/FCC channel for ethernet */
-
-#define        CONFIG_HAS_ETH1         1
-#define        CONFIG_HAS_ETH2         1
-
-#if defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 1)
-
-/*
- * - Rx-CLK is CLK11
- * - Tx-CLK is CLK12
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK1       (CMXFCR_FC1|CMXFCR_RF1CS_MSK|CMXFCR_TF1CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE1      (CMXFCR_RF1CS_CLK11|CMXFCR_TF1CS_CLK12)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-#elif defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 2)
-
-/*
- * - Rx-CLK is CLK13
- * - Tx-CLK is CLK14
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-#endif /* CONFIG_ETHER_ON_FCC, CONFIG_ETHER_INDEX */
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#define CONFIG_8260_CLKIN      100000000       /* in Hz */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_PREBOOT                                                         \
-       "echo; "                                                                \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS; "   \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp; "                                                               \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-/*-----------------------------------------------------------------------
- * I2C/EEPROM/RTC configuration
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
-#define I2C_READ       ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00010000; \
-                       else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00020000; \
-                       else    iop->pdat &= ~0x00020000
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-
-#define CONFIG_RTC_PCF8563
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*-----------------------------------------------------------------------
- * Disk-On-Chip configuration
- */
-
-#define CONFIG_SYS_MAX_DOC_DEVICE      1       /* Max number of DOC devices    */
-
-#define CONFIG_SYS_DOC_SUPPORT_2000
-#define CONFIG_SYS_DOC_SUPPORT_MILLENNIUM
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configuration options
- */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-
-#ifdef CONFIG_PCI
-#define CONFIG_PCI_INDIRECT_BRIDGE
-    #define CONFIG_CMD_PCI
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END 0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-
-#define CONFIG_SYS_RESET_ADDRESS 0xFFF00100    /* "bad" address                */
-
-#define CONFIG_LOOPW
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * Flash configuration
- */
-
-#define CONFIG_SYS_BOOTROM_BASE        0xFF800000
-#define CONFIG_SYS_BOOTROM_SIZE        0x00080000
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#define CONFIG_SYS_FLASH_SIZE          0x00800000
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max num of memory banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      135     /* max num of sects on one chip */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000  /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-/*-----------------------------------------------------------------------
- * Other areas to be mapped
- */
-
-/* CS3: Dual ported SRAM */
-#define CONFIG_SYS_DPSRAM_BASE         0x40000000
-#define CONFIG_SYS_DPSRAM_SIZE         0x00100000
-
-/* CS4: DiskOnChip */
-#define CONFIG_SYS_DOC_BASE            0xF4000000
-#define CONFIG_SYS_DOC_SIZE            0x00100000
-
-/* CS5: FDC37C78 controller */
-#define CONFIG_SYS_FDC37C78_BASE       0xF1000000
-#define CONFIG_SYS_FDC37C78_SIZE       0x00100000
-
-/* CS6: Board configuration registers */
-#define CONFIG_SYS_BCRS_BASE           0xF2000000
-#define CONFIG_SYS_BCRS_SIZE           0x00010000
-
-/* CS7: VME Extended Access Range */
-#define CONFIG_SYS_VMEEAR_BASE         0x60000000
-#define CONFIG_SYS_VMEEAR_SIZE         0x01000000
-
-/* CS8: VME Standard Access Range */
-#define CONFIG_SYS_VMESAR_BASE         0xFE000000
-#define CONFIG_SYS_VMESAR_SIZE         0x01000000
-
-/* CS9: VME Short I/O Access Range */
-#define CONFIG_SYS_VMESIOAR_BASE       0xFD000000
-#define CONFIG_SYS_VMESIOAR_SIZE       0x01000000
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- *
- * if you change bits in the HRCW, you must also change the CONFIG_SYS_*
- * defines for the various registers affected by the HRCW e.g. changing
- * HRCW_DPPCxx requires you to also change CONFIG_SYS_SIUMCR.
- */
-#if defined(CONFIG_BOOT_ROM)
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_CIP | HRCW_ISB100 | HRCW_BMS | \
-                                HRCW_BPS01 | HRCW_CS10PC01)
-#else
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_CIP | HRCW_ISB100 | HRCW_BMS | HRCW_CS10PC01)
-#endif
-
-/* no slaves so just fill with zeros */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- *
- * 60x SDRAM is mapped at CONFIG_SYS_SDRAM_BASE.
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_SDRAM_MAX_SIZE      0x08000000      /* max. 128 MB          */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()*/
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-# define CONFIG_SYS_RAMBOOT
-#endif
-
-#ifdef CONFIG_PCI
-#define CONFIG_PCI_PNP
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8               /* use 8 rx buffer on eepro100  */
-#endif
-
-#if 0
-/* environment is in Flash */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#ifdef CONFIG_BOOT_ROM
-# define CONFIG_ENV_ADDR               (CONFIG_SYS_FLASH_BASE+0x70000)
-# define CONFIG_ENV_SIZE               0x10000
-# define CONFIG_ENV_SECT_SIZE  0x10000
-#endif
-#else
-/* environment is in EEPROM */
-#define CONFIG_ENV_IS_IN_EEPROM        1
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x58    /* EEPROM X24C16                */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-#define CONFIG_ENV_OFFSET              512
-#define CONFIG_ENV_SIZE                (2048 - 512)
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU              */
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                   2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE|HID0_DCE|HID0_ICFI|\
-                        HID0_DCI|HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL  (HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                    5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         RMR_CSRE
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                      4-25
- *-----------------------------------------------------------------------
- */
-#define BCR_APD01      0x10000000
-#define CONFIG_SYS_BCR         (BCR_APD01|BCR_ETM|BCR_LETM)    /* 8260 mode */
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                            4-31
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_BBD|SIUMCR_DPPC00|SIUMCR_APPC10|\
-                        SIUMCR_CS10PC01|SIUMCR_BCTLC10)
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                            4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                    4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                  9-8
- *-----------------------------------------------------------------------
- * Ensure DFBRG is Divide by 16
- */
-#define CONFIG_SYS_SCCR        SCCR_DFBRG01
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                                13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-#define CONFIG_SYS_MIN_AM_MASK 0xC0000000
-
-/*
- * we use the same values for 32 MB, 128 MB and 256 MB SDRAM
- * refresh rate = 7.68 uS (100 MHz Bus Clock)
- */
-
-/*-----------------------------------------------------------------------
- * MPTPR - Memory Refresh Timer Prescaler Register             10-18
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_MPTPR       0x2000
-
-/*-----------------------------------------------------------------------
- * PSRT - Refresh Timer Register                               10-16
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_PSRT        0x16
-
-/*-----------------------------------------------------------------------
- * PSRT - SDRAM Mode Register                                  10-10
- *-----------------------------------------------------------------------
- */
-
-       /* SDRAM initialization values for 8-column chips
-        */
-#define CONFIG_SYS_OR2_8COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A9             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_8COL  (PSDMR_SDAM_A13_IS_A5           |\
-                        PSDMR_BSMA_A14_A16             |\
-                        PSDMR_SDA10_PBI0_A10           |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_2W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-       /* SDRAM initialization values for 9-column chips
-        */
-#define CONFIG_SYS_OR2_9COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A7             |\
-                        ORxS_NUMR_13)
-
-#define CONFIG_SYS_PSDMR_9COL  (PSDMR_SDAM_A14_IS_A5           |\
-                        PSDMR_BSMA_A13_A15             |\
-                        PSDMR_SDA10_PBI0_A9            |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_2W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-       /* SDRAM initialization values for 10-column chips
-        */
-#define CONFIG_SYS_OR2_10COL   (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI1_A4             |\
-                        ORxS_NUMR_13)
-
-#define CONFIG_SYS_PSDMR_10COL (PSDMR_PBI                      |\
-                        PSDMR_SDAM_A17_IS_A5           |\
-                        PSDMR_BSMA_A13_A15             |\
-                        PSDMR_SDA10_PBI1_A6            |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_2W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-/*
- * Init Memory Controller:
- *
- * Bank Bus    Machine PortSz  Device
- * ---- ---    ------- ------  ------
- *  0  60x     GPCM    8  bit  Boot ROM
- *  1  60x     GPCM    64 bit  FLASH
- *  2  60x     SDRAM   64 bit  SDRAM
- *
- */
-
-#define CONFIG_SYS_MRS_OFFS    0x00000000
-
-#ifdef CONFIG_BOOT_ROM
-/* Bank 0 - Boot ROM
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_BOOTROM_BASE & BRx_BA_MSK)|\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BOOTROM_SIZE)    |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 1 - FLASH
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-#else /* CONFIG_BOOT_ROM */
-/* Bank 0 - FLASH
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 1 - Boot ROM
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_BOOTROM_BASE & BRx_BA_MSK)|\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BOOTROM_SIZE)    |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-#endif /* CONFIG_BOOT_ROM */
-
-
-/* Bank 2 - 60x bus SDRAM
- */
-#ifndef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR2_PRELIM   CONFIG_SYS_OR2_8COL
-
-#define CONFIG_SYS_PSDMR        CONFIG_SYS_PSDMR_8COL
-#endif /* CONFIG_SYS_RAMBOOT */
-
-/* Bank 3 - Dual Ported SRAM
- */
-#define CONFIG_SYS_BR3_PRELIM  ((CONFIG_SYS_DPSRAM_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR3_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_DPSRAM_SIZE)     |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_7_CLK                 |\
-                        ORxG_SETA)
-
-/* Bank 4 - DiskOnChip
- */
-#define CONFIG_SYS_BR4_PRELIM  ((CONFIG_SYS_DOC_BASE & BRx_BA_MSK)     |\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR4_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_DOC_SIZE)        |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV2                  |\
-                        ORxG_SCY_9_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 5 - FDC37C78 controller
- */
-#define CONFIG_SYS_BR5_PRELIM  ((CONFIG_SYS_FDC37C78_BASE & BRx_BA_MSK) |\
-                        BRx_PS_8                         |\
-                        BRx_MS_GPCM_P                    |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR5_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FDC37C78_SIZE)     |\
-                        ORxG_ACS_DIV2                    |\
-                        ORxG_SCY_10_CLK                  |\
-                        ORxU_EHTR_8IDLE)
-
-/* Bank 6 - Board control registers
- */
-#define CONFIG_SYS_BR6_PRELIM  ((CONFIG_SYS_BCRS_BASE & BRx_BA_MSK)    |\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR6_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BCRS_SIZE)       |\
-                        ORxG_CSNT                      |\
-                        ORxG_SCY_7_CLK)
-
-/* Bank 7 - VME Extended Access Range
- */
-#define CONFIG_SYS_BR7_PRELIM  ((CONFIG_SYS_VMEEAR_BASE & BRx_BA_MSK) |\
-                        BRx_PS_32                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR7_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_VMEEAR_SIZE)     |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_7_CLK                 |\
-                        ORxG_SETA)
-
-/* Bank 8 - VME Standard Access Range
- */
-#define CONFIG_SYS_BR8_PRELIM  ((CONFIG_SYS_VMESAR_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR8_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_VMESAR_SIZE)     |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_7_CLK                 |\
-                        ORxG_SETA)
-
-/* Bank 9 - VME Short I/O Access Range
- */
-#define CONFIG_SYS_BR9_PRELIM  ((CONFIG_SYS_VMESIOAR_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16                        |\
-                        BRx_MS_GPCM_P                    |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR9_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_VMESIOAR_SIZE)     |\
-                        ORxG_CSNT                        |\
-                        ORxG_ACS_DIV1                    |\
-                        ORxG_SCY_7_CLK                   |\
-                        ORxG_SETA)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/CU824.h b/include/configs/CU824.h
deleted file mode 100644 (file)
index dc98a56..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- *
- * Configuration settings for the CU824 board.
- *
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8240         1
-#define CONFIG_CU824           1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                9600
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#define CONFIG_BOOTCOMMAND     "bootm FE020000"        /* autoboot command     */
-#define CONFIG_BOOTDELAY       5
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define        CONFIG_TIMESTAMP                /* Print image info with timestamp */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-
-#if 1
-#define        CONFIG_SYS_HUSH_PARSER          1       /* use "hush" command parser    */
-#endif
-
-/* Print Buffer Size
- */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x00100000      /* Default load address         */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE      0x00000000
-#define CONFIG_SYS_FLASH_BASE      0xFF000000
-
-#define CONFIG_SYS_RESET_ADDRESS   0xFFF00100
-
-#define CONFIG_SYS_EUMB_ADDR       0xFCE00000
-
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE
-
-#define CONFIG_SYS_MONITOR_LEN     (256 << 10) /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN      (128 << 10) /* Reserve 128 kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START   0x00004000  /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END     0x02000000  /* 0 ... 32 MB in DRAM          */
-
-       /* Maximum amount of RAM.
-        */
-#define CONFIG_SYS_MAX_RAM_SIZE    0x10000000
-
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-#undef CONFIG_SYS_RAMBOOT
-#else
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- */
-
-#define CONFIG_SYS_INIT_RAM_ADDR     0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE      0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET  (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    4
-
-#define CONFIG_SYS_NS16550_CLK         (14745600 / 2)
-
-#define CONFIG_SYS_NS16550_COM1        0xFE800080
-#define CONFIG_SYS_NS16550_COM2        0xFE8000C0
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- * For the detail description refer to the MPC8240 user's manual.
- */
-
-#define CONFIG_SYS_CLK_FREQ  33000000
-
-       /* Bit-field values for MCCR1.
-        */
-#define CONFIG_SYS_ROMNAL          0
-#define CONFIG_SYS_ROMFAL          7
-
-       /* Bit-field values for MCCR2.
-        */
-#define CONFIG_SYS_REFINT          430     /* Refresh interval                 */
-
-       /* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4.
-        */
-#define CONFIG_SYS_BSTOPRE         192
-
-       /* Bit-field values for MCCR3.
-        */
-#define CONFIG_SYS_REFREC          2       /* Refresh to activate interval     */
-#define CONFIG_SYS_RDLAT           3       /* Data latancy from read command   */
-
-       /* Bit-field values for MCCR4.
-        */
-#define CONFIG_SYS_PRETOACT        2       /* Precharge to activate interval   */
-#define CONFIG_SYS_ACTTOPRE        5       /* Activate to Precharge interval   */
-#define CONFIG_SYS_SDMODE_CAS_LAT  2       /* SDMODE CAS latancy               */
-#define CONFIG_SYS_SDMODE_WRAP     0       /* SDMODE wrap type                 */
-#define CONFIG_SYS_SDMODE_BURSTLEN 2       /* SDMODE Burst length              */
-#define CONFIG_SYS_ACTORW          2
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER 1
-
-/* Memory bank settings.
- * Only bits 20-29 are actually used from these vales to set the
- * start/end addresses. The upper two bits will always be 0, and the lower
- * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
- * address. Refer to the MPC8240 book.
- */
-
-#define CONFIG_SYS_BANK0_START     0x00000000
-#define CONFIG_SYS_BANK0_END       (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE    1
-#define CONFIG_SYS_BANK1_START     0x3ff00000
-#define CONFIG_SYS_BANK1_END       0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE    0
-#define CONFIG_SYS_BANK2_START     0x3ff00000
-#define CONFIG_SYS_BANK2_END       0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE    0
-#define CONFIG_SYS_BANK3_START     0x3ff00000
-#define CONFIG_SYS_BANK3_END       0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE    0
-#define CONFIG_SYS_BANK4_START     0x3ff00000
-#define CONFIG_SYS_BANK4_END       0x3fffffff
-#define CONFIG_SYS_BANK4_ENABLE    0
-#define CONFIG_SYS_BANK5_START     0x3ff00000
-#define CONFIG_SYS_BANK5_END       0x3fffffff
-#define CONFIG_SYS_BANK5_ENABLE    0
-#define CONFIG_SYS_BANK6_START     0x3ff00000
-#define CONFIG_SYS_BANK6_END       0x3fffffff
-#define CONFIG_SYS_BANK6_ENABLE    0
-#define CONFIG_SYS_BANK7_START     0x3ff00000
-#define CONFIG_SYS_BANK7_END       0x3fffffff
-#define CONFIG_SYS_BANK7_ENABLE    0
-
-#define CONFIG_SYS_ODCR            0xff
-
-#define CONFIG_SYS_IBAT0L  (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U  (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT3L  (0xFC000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U  (0xFC000000 | BATU_BL_64M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L  CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U  CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L  CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U  CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L  CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U  CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ       (8 << 20)   /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* Max number of flash banks            */
-#define CONFIG_SYS_MAX_FLASH_SECT      39      /* Max number of sectors in one bank    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-       /* Warining: environment is not EMBEDDED in the U-Boot code.
-        * It's stored in flash separately.
-        */
-#define CONFIG_ENV_IS_IN_FLASH     1
-#if 0
-#define CONFIG_ENV_ADDR                0xFF008000
-#define CONFIG_ENV_SIZE                0x8000  /* Size of the Environment Sector       */
-#else
-#define CONFIG_ENV_ADDR                0xFFFC0000
-#define CONFIG_ENV_SIZE                0x4000  /* Size of the Environment              */
-#define CONFIG_ENV_OFFSET              0       /* starting right at the beginning      */
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* Size of the Environment Sector       */
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                     /* include pci support                  */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#undef CONFIG_PCI_PNP
-
-
-#define CONFIG_TULIP
-#define CONFIG_TULIP_USE_IO
-
-#define CONFIG_SYS_ETH_DEV_FN       0x7800
-#define CONFIG_SYS_ETH_IOBASE       0x00104000
-
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8               /* use 8 rx buffer on eepro100  */
-#define PCI_ENET0_IOADDR       0x00104000
-#define PCI_ENET0_MEMADDR      0x80000000
-#endif /* __CONFIG_H */
diff --git a/include/configs/DP405.h b/include/configs/DP405.h
deleted file mode 100644 (file)
index 68e4a7f..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_DP405           1       /* ...on a DP405 board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFD0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33333300 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef  CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_EEPROM
-
-#undef CONFIG_CMD_NET
-#undef CONFIG_CMD_NFS
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-#define CONFIG_PRAM            2       /* reserve 2 kB "protected RAM" */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000    /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_MONITOR_BASE
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (~(CONFIG_SYS_TEXT_BASE) + 1)
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)
-
-#if (CONFIG_SYS_MONITOR_BASE < FLASH_BASE0_PRELIM)
-# define CONFIG_SYS_RAMBOOT            1
-#else
-# undef CONFIG_SYS_RAMBOOT
-#endif
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-#define CAN_BA         0xF0000000          /* CAN Base Address                 */
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 2 (8 Bit Peripheral: CAN, UART, RTC) initialization             */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* JTAG TMS pin (ppc output)     */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* JTAG TCK pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* JTAG TDO->TDI data pin (ppc output) */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* unused (ppc input)            */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* JTAG TDI->TDO pin (ppc input) */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]    - External Bus Controller BLAST output
- * GPIO0[1-9]  - Instruction trace outputs -> GPIO
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- */
-/* GPIO Input:         OSR=00, ISR=00, TSR=00, TCR=0 */
-/* GPIO Output:                OSR=00, ISR=00, TSR=00, TCR=1 */
-/* Alt. Funtion Input: OSR=00, ISR=01, TSR=00, TCR=0 */
-/* Alt. Funtion Output: OSR=01, ISR=00, TSR=00, TCR=1 */
-#define CONFIG_SYS_GPIO0_OSRL          0x40000540  /*  0 ... 15 */
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110  /* 16 ... 31 */
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000  /*  0 ... 15 */
-#define CONFIG_SYS_GPIO0_ISR1H         0x14000045  /* 16 ... 31 */
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000  /*  0 ... 15 */
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000  /* 16 ... 31 */
-#define CONFIG_SYS_GPIO0_TCR           0xB7FE0014  /*  0 ... 31 */
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#define PLLMR0_DEFAULT  PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT  PLLMR1_133_66_66_33
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/DU405.h b/include/configs/DU405.h
deleted file mode 100644 (file)
index 9be2310..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_DU405           1       /* ...on a DU405 board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFD0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R      1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    25000000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND     "bootm fff00000"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-#undef  CONFIG_HAS_ETH1
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#undef CONFIG_CMD_NFS
-#undef CONFIG_CMD_EDITENV
-#undef CONFIG_CMD_IMLS
-#undef CONFIG_CMD_CONSOLE
-#undef CONFIG_CMD_LOADB
-#undef CONFIG_CMD_LOADS
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_RTC_MC146818            /* BQ3285 is MC146818 compatible*/
-#define CONFIG_SYS_RTC_REG_BASE_ADDR    0xF0000080 /* RTC Base Address         */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#define CONFIG_SYS_EXT_SERIAL_CLOCK    11059200  /* use external serial clock  */
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#undef CONFIG_IDE_8xx_DIRECT           /* no pcmcia interface required */
-#undef CONFIG_IDE_LED                  /* no led for ide supported     */
-#undef CONFIG_IDE_RESET                /* no reset for ide supported   */
-
-#define CONFIG_SYS_IDE_MAXBUS          1               /* max. 1 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0000  /* Offset for alternate registers       */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFD0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (192 * 1024)    /* Reserve 192 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC08) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x400   /* 1024 bytes may be used for env vars */
-                                  /* total size of a CAT24WC08 is 1024 bytes */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF800000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFFC00000      /* FLASH bank #1        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-#define FLASH0_BA      0xFFC00000          /* FLASH 0 Base Address             */
-#define FLASH1_BA      0xFF800000          /* FLASH 1 Base Address             */
-#define CAN_BA         0xF0000000          /* CAN Base Address                 */
-#define DUART_BA       0xF0300000          /* DUART Base Address               */
-#define CF_BA          0xF0100000          /* CompactFlash Base Address        */
-#define SRAM_BA                0xF0200000          /* SRAM Base Address                */
-#define DURAG_IO_BA    0xF0400000          /* DURAG Bus IO Base Address        */
-#define DURAG_MEM_BA   0xF0500000          /* DURAG Bus Mem Base Address       */
-
-#define FPGA_MODE_REG  (DUART_BA+0x80)     /* FPGA Mode Register               */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP   0x92015480
-#define CONFIG_SYS_EBC_PB0CR   FLASH0_BA | 0x5A000 /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1) initialization                                 */
-#define CONFIG_SYS_EBC_PB1AP   0x92015480
-#define CONFIG_SYS_EBC_PB1CR   FLASH1_BA | 0x5A000 /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 2 (CAN0) initialization                                         */
-#define CONFIG_SYS_EBC_PB2AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR   CAN_BA | 0x18000    /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (DUART) initialization                                                */
-#define CONFIG_SYS_EBC_PB3AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR   DUART_BA | 0x18000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 4 (CompactFlash IDE) initialization                             */
-#define CONFIG_SYS_EBC_PB4AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB4CR   CF_BA | 0x1A000     /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 5 (SRAM) initialization                                         */
-#define CONFIG_SYS_EBC_PB5AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB5CR   SRAM_BA | 0x1A000   /* BAS=0xF02,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 6 (DURAG Bus IO Space) initialization                           */
-#define CONFIG_SYS_EBC_PB6AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB6CR   DURAG_IO_BA | 0x18000 /* BAS=0xF04,BS=1MB,BU=R/W,BW=8bit*/
-
-/* Memory Bank 7 (DURAG Bus Mem Space) initialization                          */
-#define CONFIG_SYS_EBC_PB7AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB7CR   DURAG_MEM_BA | 0x18000 /* BAS=0xF05,BS=1MB,BU=R/W,BW=8bit */
-
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/DU440.h b/include/configs/DU440.h
deleted file mode 100644 (file)
index be5494b..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- * (C) Copyright 2008
- * Matthias Fuchs, esd gmbh, matthias.fuchs@esd-electronics.com
- *
- * based on the Sequoia board configuration by
- * Stefan Roese, Jacqueline Pira-Ferriol and Alain Saurel
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- **********************************************************************
- * DU440.h - configuration for esd's DU440 board (Power PC440EPx)
- **********************************************************************
- */
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- */
-#define CONFIG_DU440           1               /* Board is esd DU440   */
-#define CONFIG_440EPX          1               /* Specific PPC440EPx   */
-#define CONFIG_SYS_CLK_FREQ    33333400        /* external freq to pll */
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xFFFA0000
-#endif
-
-#define CONFIG_BOARD_EARLY_INIT_F 1            /* Call board_early_init_f */
-#define CONFIG_MISC_INIT_R     1               /* Call misc_init_r     */
-#define CONFIG_LAST_STAGE_INIT  1               /* last_stage_init      */
-
-/*
- * Base addresses -- Note these are effective addresses where the
- * actual resources get mapped (not physical addresses)
- */
-#define CONFIG_SYS_MONITOR_LEN         (384 * 1024)    /* Reserve 384 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (8 << 20)       /* Reserve 8 MB for malloc()  */
-
-#define CONFIG_SYS_BOOT_BASE_ADDR      0xf0000000
-#define CONFIG_SYS_SDRAM_BASE          0x00000000      /* _must_ be 0          */
-#define CONFIG_SYS_FLASH_BASE          0xfc000000      /* start of FLASH       */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_NAND0_ADDR          0xd0000000      /* NAND Flash           */
-#define CONFIG_SYS_NAND1_ADDR          0xd0100000      /* NAND Flash           */
-#define CONFIG_SYS_OCM_BASE            0xe0010000      /* ocm                  */
-#define CONFIG_SYS_PCI_BASE            0xe0000000      /* Internal PCI regs    */
-#define CONFIG_SYS_PCI_MEMBASE         0x80000000      /* mapped pci memory    */
-#define CONFIG_SYS_PCI_MEMBASE1        CONFIG_SYS_PCI_MEMBASE  + 0x10000000
-#define CONFIG_SYS_PCI_MEMBASE2        CONFIG_SYS_PCI_MEMBASE1 + 0x10000000
-#define CONFIG_SYS_PCI_MEMBASE3        CONFIG_SYS_PCI_MEMBASE2 + 0x10000000
-#define CONFIG_SYS_PCI_IOBASE          0xe8000000
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID PCI_VENDOR_ID_ESDGMBH
-#define CONFIG_SYS_PCI_SUBSYS_ID       0x0444          /* device ID for DU440 */
-
-#define CONFIG_SYS_USB2D0_BASE         0xe0000100
-#define CONFIG_SYS_USB_DEVICE          0xe0000000
-#define CONFIG_SYS_USB_HOST            0xe0000400
-
-/*
- * Initial RAM & stack pointer
- */
-/* 440EPx/440GRx have 16KB of internal SRAM, so no need for D-Cache    */
-#define CONFIG_SYS_INIT_RAM_OCM        1               /* OCM as init ram      */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_BASE     /* OCM                  */
-
-#define CONFIG_SYS_INIT_RAM_SIZE       (4 << 10)
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*
- * Serial Port
- */
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_SYS_BAUDRATE_TABLE                                              \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
-/*
- * Video Port
- */
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_SMI_LYNXEM
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-#define CONFIG_SPLASH_SCREEN
-#define CONFIG_SPLASH_SCREEN_ALIGN
-#define CONFIG_VIDEO_BMP_GZIP              /* gzip compressed bmp images */
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (4 << 20)  /* for decompressed img */
-#define CONFIG_SYS_DEFAULT_VIDEO_MODE 0x31a       /* 1280x1024,16bpp */
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_SYS_ISA_IO CONFIG_SYS_PCI_IOBASE
-
-/*
- * Environment
- */
-#define CONFIG_ENV_IS_IN_EEPROM    1   /* use FLASH for environment vars */
-
-/*
- * FLASH related
- */
-#define CONFIG_SYS_FLASH_CFI                   /* The flash is CFI compatible */
-#define CONFIG_FLASH_CFI_DRIVER                /* Use common CFI driver       */
-
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks         */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max number of sectors on one chip  */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)    */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)    */
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)   */
-/* CFI_FLASH_PROTECTION make flash_protect hang sometimes -> disabled */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protection      */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_QUIET_TEST    1       /* don't warn upon unknown flash      */
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* size of one complete sector        */
-#define CONFIG_ENV_ADDR                ((-CONFIG_SYS_MONITOR_LEN)-CONFIG_ENV_SECT_SIZE)
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector   */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR-CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_EEPROM
-#define CONFIG_ENV_OFFSET              0       /* environment starts at */
-                                       /* the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x1000 /* 4096 bytes may be used for env vars */
-#endif
-
-/*
- * DDR SDRAM
- */
-#define CONFIG_SYS_MBYTES_SDRAM        (1024)  /* 512 MiB      TODO: remove    */
-#define CONFIG_DDR_DATA_EYE            /* use DDR2 optimization        */
-#define CONFIG_SYS_MEM_TOP_HIDE        (4 << 10) /* don't use last 4kbytes     */
-                                       /* 440EPx errata CHIP 11        */
-#define CONFIG_SPD_EEPROM              /* Use SPD EEPROM for setup     */
-#define CONFIG_DDR_ECC                 /* Use ECC when available       */
-#define SPD_EEPROM_ADDRESS     {0x50}
-#define CONFIG_PROG_SDRAM_TLB
-
-/*
- * I2C
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-#define CONFIG_SYS_I2C_PPC4XX_CH1
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_1          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_1          0x7F
-
-#define CONFIG_SYS_SPD_BUS_NUM         0
-#define IIC1_MCP3021_ADDR      0x4d
-#define IIC1_USB2507_ADDR      0x2c
-#define CONFIG_SYS_I2C_NOPROBES                { {1, IIC1_USB2507_ADDR} }
-
-#define CONFIG_SYS_I2C_MULTI_EEPROMS
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x54
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 5
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW 0x01
-
-#define CONFIG_SYS_EEPROM_WREN         1
-#define CONFIG_SYS_I2C_BOOT_EEPROM_ADDR 0x52
-
-/*
- * standard dtt sensor configuration - bottom bit will determine local or
- * remote sensor of the TMP401
- */
-#define CONFIG_DTT_SENSORS             { 0, 1 }
-
-/*
- * The PMC440 uses a TI TMP401 temperature sensor. This part
- * is basically compatible to the ADM1021 that is supported
- * by U-Boot.
- *
- * - i2c addr 0x4c
- * - conversion rate 0x02 = 0.25 conversions/second
- * - ALERT ouput disabled
- * - local temp sensor enabled, min set to 0 deg, max set to 70 deg
- * - remote temp sensor enabled, min set to 0 deg, max set to 70 deg
- */
-#define CONFIG_DTT_ADM1021
-#define CONFIG_SYS_DTT_ADM1021         { { 0x4c, 0x02, 0, 1, 70, 0, 1, 70, 0} }
-
-/*
- * RTC stuff
- */
-#define CONFIG_RTC_DS1338
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "ethrotate=no\0"                                                \
-       "hostname=du440\0"                                              \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "flash_self=run ramargs addip addtty optargs;"                  \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${img};run nfsargs addip addtty optargs;"  \
-               "bootm\0"                                               \
-       "rootpath=/tftpboot/du440/target_root_du440\0"                  \
-       "img=/tftpboot/du440/uImage\0"                                  \
-       "kernel_addr=FFC00000\0"                                        \
-       "ramdisk_addr=FFE00000\0"                                       \
-       "initrd_high=30000000\0"                                        \
-       "load=tftp 100000 /tftpboot/du440/u-boot.bin\0"                 \
-       "update=protect off FFFA0000 FFFFFFFF;era FFFA0000 FFFFFFFF;"   \
-               "cp.b 100000 FFFA0000 60000\0"                          \
-       ""
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_BOOTDELAY       3       /* autoboot after 5 seconds     */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#ifndef __ASSEMBLY__
-int du440_phy_addr(int devnum);
-#endif
-
-#define CONFIG_PPC4xx_EMAC
-#define        CONFIG_IBM_EMAC4_V4     1
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                du440_phy_addr(0) /* PHY address        */
-
-#define CONFIG_PHY_RESET        1      /* reset phy upon startup       */
-#undef CONFIG_PHY_GIGE                 /* no GbE detection             */
-
-#define CONFIG_HAS_ETH0
-#define CONFIG_SYS_RX_ETH_BUFFER       128
-
-#define CONFIG_HAS_ETH1                1       /* add support for "eth1addr"   */
-#define CONFIG_PHY1_ADDR       du440_phy_addr(1)
-
-/*
- * USB
- */
-#define CONFIG_USB_OHCI_NEW
-#define CONFIG_USB_STORAGE
-#define CONFIG_SYS_OHCI_BE_CONTROLLER
-
-#define CONFIG_SYS_USB_OHCI_CPU_INIT   1
-#define CONFIG_SYS_USB_OHCI_REGS_BASE  CONFIG_SYS_USB_HOST
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME  "du440"
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     15
-
-/* Comment this out to enable USB 1.1 device */
-#define USB_2_0_DEVICE
-
-/* Partitions */
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-#define CONFIG_ISO_PARTITION
-
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_BMP
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_DTT
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_SOURCE
-#define CONFIG_CMD_USB
-
-#define CONFIG_SUPPORT_VFAT
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
-#endif
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size  */
-
-#define CONFIG_SYS_MEMTEST_START       0x00400000 /* memtest works on          */
-#define CONFIG_SYS_MEMTEST_END         0x3f000000 /* 4 ... < 1GB DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000  /* default load address       */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_MX_CYCLIC        1       /* enable mdc/mwc commands      */
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_AUTOBOOT_KEYED  1
-#define CONFIG_AUTOBOOT_PROMPT \
-       "Press SPACE to abort autoboot in %d seconds\n", bootdelay
-#define CONFIG_AUTOBOOT_DELAY_STR "d"
-#define CONFIG_AUTOBOOT_STOP_STR " "
-
-/*
- * PCI stuff
- */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_PNP                 /* do (not) pci plug-and-play   */
-#define CONFIG_PCI_SCAN_SHOW           /* show pci devices on startup  */
-#define CONFIG_SYS_PCI_TARGBASE       0x80000000 /* PCIaddr mapped to CONFIG_SYS_PCI_MEMBASE*/
-
-/* Board-specific PCI */
-#define CONFIG_SYS_PCI_TARGET_INIT
-#define CONFIG_SYS_PCI_MASTER_INIT
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)     /* Initial Memory map for Linux */
-
-/*
- * External Bus Controller (EBC) Setup
- */
-#define CONFIG_SYS_FLASH               CONFIG_SYS_FLASH_BASE
-
-#define CONFIG_SYS_CPLD_BASE           0xC0000000
-#define CONFIG_SYS_CPLD_RANGE          0x00000010
-#define CONFIG_SYS_DUMEM_BASE          0xC0100000
-#define CONFIG_SYS_DUMEM_RANGE         0x00100000
-#define CONFIG_SYS_DUIO_BASE           0xC0200000
-#define CONFIG_SYS_DUIO_RANGE          0x00010000
-
-#define CONFIG_SYS_NAND0_CS            2               /* NAND chip connected to CSx */
-#define CONFIG_SYS_NAND1_CS            3               /* NAND chip connected to CSx */
-/* Memory Bank 0 (NOR-FLASH) initialization */
-#define CONFIG_SYS_EBC_PB0AP           0x04017200
-#define CONFIG_SYS_EBC_PB0CR           (CONFIG_SYS_FLASH_BASE | 0xda000)
-
-/* Memory Bank 1 (CPLD, 16 bytes needed, but 1MB is minimum) */
-#define CONFIG_SYS_EBC_PB1AP           0x018003c0
-#define CONFIG_SYS_EBC_PB1CR           (CONFIG_SYS_CPLD_BASE | 0x18000)
-
-/* Memory Bank 2 (NAND-FLASH) initialization */
-#define CONFIG_SYS_EBC_PB2AP           0x018003c0
-#define CONFIG_SYS_EBC_PB2CR           (CONFIG_SYS_NAND0_ADDR | 0x1c000)
-
-/* Memory Bank 3 (NAND-FLASH) initialization */
-#define CONFIG_SYS_EBC_PB3AP           0x018003c0
-#define CONFIG_SYS_EBC_PB3CR           (CONFIG_SYS_NAND1_ADDR | 0x1c000)
-
-/* Memory Bank 4 (DUMEM, 1MB) initialization */
-#define CONFIG_SYS_EBC_PB4AP           0x018053c0
-#define CONFIG_SYS_EBC_PB4CR           (CONFIG_SYS_DUMEM_BASE | 0x18000)
-
-/* Memory Bank 5 (DUIO, 64KB needed, but 1MB is minimum) */
-#define CONFIG_SYS_EBC_PB5AP           0x018053c0
-#define CONFIG_SYS_EBC_PB5CR           (CONFIG_SYS_DUIO_BASE | 0x18000)
-
-/*
- * NAND FLASH
- */
-#define CONFIG_SYS_MAX_NAND_DEVICE     2
-#define CONFIG_SYS_NAND_SELECT_DEVICE  1       /* nand driver supports mutipl. chips */
-#define CONFIG_SYS_NAND_BASE_LIST      {CONFIG_SYS_NAND0_ADDR + CONFIG_SYS_NAND0_CS, \
-                                CONFIG_SYS_NAND1_ADDR + CONFIG_SYS_NAND1_CS}
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-#define CONFIG_SOURCE          1
-
-#define CONFIG_OF_LIBFDT
-#define CONFIG_OF_BOARD_SETUP
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/ELPT860.h b/include/configs/ELPT860.h
deleted file mode 100644 (file)
index a9d62c8..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-**   for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
- * SPDX-License-Identifier:    GPL-2.0+
-**
-**=====================================================================
-*/
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1       /* It's a MPC860, in fact a 860T CPU */
-#define CONFIG_MPC860T         1
-#define CONFIG_ELPT860         1       /* ...on a LEOX's ELPT860 CPU board */
-
-#define CONFIG_SYS_TEXT_BASE   0x02000000
-
-#define CONFIG_8xx_CONS_SMC1   1       /* Console is on SMC1               */
-#undef   CONFIG_8xx_CONS_SMC2
-#undef   CONFIG_8xx_CONS_NONE
-
-#define CONFIG_CLOCKS_IN_MHZ   1  /* Clock passed to Linux (<2.4.5) in MHz */
-#define CONFIG_8xx_GCLK_FREQ   50000000       /* MPC860T runs at 50MHz */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f      */
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-/* BOOT arguments */
-#define CONFIG_PREBOOT                                                    \
-     "echo;"                                                              \
-     "echo Type \"run nfsboot\" to mount root filesystem over NFS;"       \
-     "echo"
-
-#undef   CONFIG_BOOTARGS
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-    "ramargs=setenv bootargs root=/dev/ram rw\0"                       \
-    "rootargs=setenv rootpath /tftp/${ipaddr}\0"                       \
-    "nfsargs=setenv bootargs root=/dev/nfs rw "                                \
-       "nfsroot=${serverip}:${rootpath}\0"                             \
-    "addip=setenv bootargs ${bootargs} "                               \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"              \
-       ":${hostname}:eth0:off panic=1\0"                               \
-    "ramboot=tftp 400000 /home/paugaml/pMulti;"                                \
-       "run ramargs;bootm\0"                                           \
-    "nfsboot=tftp 400000 /home/paugaml/uImage;"                                \
-       "run rootargs;run nfsargs;run addip;bootm\0"                    \
-    ""
-#define CONFIG_BOOTCOMMAND     "run ramboot"
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#undef   CONFIG_WATCHDOG               /* watchdog disabled            */
-#undef   CONFIG_CAN_DRIVER             /* CAN Driver support disabled  */
-#undef   CONFIG_RTC_MPC8xx             /* internal RTC MPC8xx unused   */
-#define CONFIG_RTC_DS164x      1       /* RTC is a Dallas DS1646       */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef   CONFIG_SYS_LOADS_BAUD_CHANGE          /* don't allow baudrate change  */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#define CONFIG_SYS_PROMPT     "LEOX_elpt860: " /* Monitor Command Prompt       */
-
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CBSIZE    1024            /* Console I/O Buffer Size      */
-#else
-#  define CONFIG_SYS_CBSIZE     256            /* Console I/O Buffer Size      */
-#endif
-
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS       16            /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE      CONFIG_SYS_CBSIZE     /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00C00000      /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address */
-
-/*
- * Environment Variables and Storages
- */
-#define CONFIG_ENV_OVERWRITE   1  /* Allow Overwrite of serial# & ethaddr */
-
-#undef   CONFIG_ENV_IS_IN_NVRAM               /* Environment is in NVRAM       */
-#undef   CONFIG_ENV_IS_IN_EEPROM              /* Environment is in I2C EEPROM  */
-#define CONFIG_ENV_IS_IN_FLASH 1      /* Environment is in FLASH       */
-
-#define CONFIG_BAUDRATE                9600   /* console baudrate = 9600 bps   */
-
-#define CONFIG_ETHADDR         00:01:77:00:60:40
-#define CONFIG_IPADDR          192.168.0.30
-#define CONFIG_NETMASK         255.255.255.0
-
-#define CONFIG_SERVERIP                192.168.0.1
-#define CONFIG_GATEWAYIP       192.168.0.1
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFF000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x02000000
-#define CONFIG_SYS_NVRAM_BASE          0x03000000
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-#  if defined(DEBUG)
-#    define CONFIG_SYS_MONITOR_LEN     (320 << 10)  /* Reserve 320 kB for Monitor  */
-#  else
-#    define CONFIG_SYS_MONITOR_LEN     (256 << 10)  /* Reserve 256 kB for Monitor  */
-#  endif
-#else
-#  if defined(DEBUG)
-#    define CONFIG_SYS_MONITOR_LEN     (256 << 10)  /* Reserve 256 kB for Monitor  */
-#  else
-#    define CONFIG_SYS_MONITOR_LEN     (192 << 10)  /* Reserve 192 kB for Monitor  */
-#  endif
-#endif
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)  /* Reserve 128 kB for malloc() */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)    /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks        */
-#define CONFIG_SYS_MAX_FLASH_SECT      8       /* max number of sectors on one chip */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)   */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)   */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-#  define CONFIG_ENV_OFFSET    0x10000 /* Offset   of Environment Sector    */
-#  define CONFIG_ENV_SIZE              0x10000 /* Total Size of Environment Sector  */
-#endif
-
-/*-----------------------------------------------------------------------
- * NVRAM organization
- */
-#define CONFIG_SYS_NVRAM_BASE_ADDR     CONFIG_SYS_NVRAM_BASE /* Base address of NVRAM area */
-#define CONFIG_SYS_NVRAM_SIZE          ((128*1024)-8) /* clock regs resident in the */
-                                              /*   8 top NVRAM locations    */
-
-#if defined(CONFIG_ENV_IS_IN_NVRAM)
-#  define CONFIG_ENV_ADDR              CONFIG_SYS_NVRAM_BASE /* Base address of NVRAM area */
-#  define CONFIG_ENV_SIZE              0x4000  /* Total Size of Environment Sector  */
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs               */
-
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT    4      /* log base 2 of the above value     */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#  define CONFIG_SYS_SYPCR     (SYPCR_SWTC | SYPCR_BMT  | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI | SYPCR_SWP)
-#else
-#  define CONFIG_SYS_SYPCR     (SYPCR_SWTC | SYPCR_BMT  | SYPCR_BME | SYPCR_SWF | \
-                                                  SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SUMCR - SIU Module Configuration                            11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- * Once-per-Second Interrupt, Alarm Interrupt, RTC freezing enabled, RTC
- *  enabled
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit - leave PLL multiplication factor unchanged !
- */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK       SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * Chip Selects + SDRAM timings + Memory Periodic Timer Prescaler
- *-----------------------------------------------------------------------
- *
- */
-#ifdef DEBUG
-#  define CONFIG_SYS_DER               0xFFE7400F      /* Debug Enable Register */
-#else
-#  define CONFIG_SYS_DER               0
-#endif
-
-/*
- * Init Memory Controller:
- * ~~~~~~~~~~~~~~~~~~~~~~
- *
- * BR0 and OR0 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     CONFIG_SYS_FLASH_BASE   /* FLASH bank #0          */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFF000000      /* 16 MB between each CSx */
-
-/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 0, SCY = 8, EHTR = 0         */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV2 | OR_BI | OR_SCY_8_CLK)
-
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR1 and OR1 (SDRAM)
- *
- */
-#define SDRAM_BASE1_PRELIM     CONFIG_SYS_SDRAM_BASE   /* SDRAM bank #0        */
-#define SDRAM_MAX_SIZE         0x02000000      /* 32 MB MAX for CS1    */
-
-/* SDRAM timing:                                                       */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000000
-
-#define CONFIG_SYS_OR1_PRELIM  ((2 * CONFIG_SYS_PRELIM_OR_AM) | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR1_PRELIM  ((SDRAM_BASE1_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/*
- * BR2 and OR2 (NVRAM)
- *
- */
-#define NVRAM_BASE1_PRELIM     CONFIG_SYS_NVRAM_BASE   /* NVRAM bank #0        */
-#define NVRAM_MAX_SIZE         0x00020000      /* 128 KB MAX for CS2   */
-
-#define CONFIG_SYS_OR2_PRELIM          0xFFF80160
-#define CONFIG_SYS_BR2_PRELIM  ((NVRAM_BASE1_PRELIM & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA            97     /* start with divider for 100 MHz */
-
-/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16   /* setting for 2 banks */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32   /* setting for 1 bank  */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit         */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8    /* setting for 2 banks */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16   /* setting for 1 bank  */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       | \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 | \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       | \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 | \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/ESTEEM192E.h b/include/configs/ESTEEM192E.h
deleted file mode 100644 (file)
index 347f8b6..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC850          1       /* This is a MPC850 CPU         */
-#define CONFIG_ESTEEM192E      1       /* ...on a EST ESTEEM192E       */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define CONFIG_FLASH_16BIT     1       /* Rom 16 bit data bus          */
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef  CONFIG_8xx_CONS_NONE
-
-#define MPC8XX_FACT    10              /* Multiply by 10               */
-#define MPC8XX_XIN     4915200 /* 4.915200 MHz in      - ??? - XXX     */
-#define CONFIG_SYS_PLPRCR_MF   ((MPC8XX_FACT-1) << 20)
-#define MPC8XX_HZ ((MPC8XX_XIN) * (MPC8XX_FACT)) /* 49,152,000 Hz      */
-
-#define CONFIG_8xx_GCLK_FREQ   MPC8XX_HZ       /* Force it - dont measure it */
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#define CONFIG_BAUDRATE                9600
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_BOOTCOMMAND     "bootm 40030000" /* autoboot command    */
-
-#define CONFIG_BOOTARGS                "root=/dev/ram rw ramdisk=8192 "                        \
-                               "ip=100.100.100.21:100.100.100.14:100.100.100.1:255.0.0.0 "
-/*
- * Miscellaneous configurable options
- */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#define        CONFIG_SYS_PROMPT       "BOOT: "        /* Monitor Command Prompt       */
-#define        CONFIG_SYS_CBSIZE       256                     /* Console I/O Buffer Size      */
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      8                       /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFF000000
-
-  /*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#ifdef DEBUG
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (128 << 10)     /* Reserve 128 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      71      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x8000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-
-/*-----------------------------------------------------------------------
- * SUMCR - SIU Module Configuration                            11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01) /* DBGC00 */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF | TBSCR_TBE)
-
-/* (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF) */
-
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit - leave PLL multiplication factor unchanged !
- */
-#define CONFIG_SYS_PLPRCR      (CONFIG_SYS_PLPRCR_MF | PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-#define CONFIG_SYS_PCMCIA_INTERRUPT    SIU_LEVEL6
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-/*#define      CONFIG_SYS_DER  0x2002000F*/
-#define CONFIG_SYS_DER 0
-/*#define CONFIG_SYS_DER       0x02002000 */
-
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1       */
-#define CONFIG_SYS_OR_TIMING_FLASH     0x00000160
-                               /*(OR_CSNT_SAM  | OR_ACS_DIV2 | OR_BI | \
-                                OR_SCY_5_CLK | OR_EHTR) */
-
-#define CONFIG_SYS_OR0_REMAP   0x80000160     /*(CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)*/
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ( FLASH_BASE0_PRELIM | 0x00000801 )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ( FLASH_BASE1_PRELIM | 0x00000801 )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x04000000      /* SDRAM bank #1        */
-#define        SDRAM_MAX_SIZE          0x02000000      /* max 32 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  0xFC000E00
-#define CONFIG_SYS_BR2_PRELIM  (SDRAM_BASE2_PRELIM | 0x00000081)
-
-#define        CONFIG_SYS_OR3_PRELIM   CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  (SDRAM_BASE3_PRELIM | 0x00000081)
-
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA    97              /* start with divider for 100 MHz       */
-
-/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit    */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   0x18803112
-#define CONFIG_SYS_MAMR_9COL   0x18803112      /* same as 8 column because its just easier to port with*/
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/FPS850L.h b/include/configs/FPS850L.h
deleted file mode 100644 (file)
index 4ea24a6..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * (C) Copyright 2000-2008
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC850          1       /* This is a MPC850 CPU         */
-#define CONFIG_FPS850L         1       /* ...on a FingerPrint Sensor   */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define        CONFIG_8xx_CONS_SMC2    1       /* Console is on SMC2           */
-#define CONFIG_SYS_SMC_RXBUFLEN        128
-#define CONFIG_SYS_MAXIDLE     10
-#define CONFIG_BAUDRATE                115200
-
-#define        CONFIG_BOOTCOUNT_LIMIT
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "flash_nfs=run nfsargs addip;"                                  \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip;"                                 \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip;bootm\0"     \
-       "rootpath=/opt/eldk/ppc_8xx\0"                                  \
-       "hostname=FPS850L\0"                                            \
-       "bootfile=FPS850L/uImage\0"                                     \
-       "fdt_addr=40040000\0"                                           \
-       "kernel_addr=40060000\0"                                        \
-       "ramdisk_addr=40200000\0"                                       \
-       "u-boot=FPS850L/u-image.bin\0"                                  \
-       "load=tftp 200000 ${u-boot}\0"                                  \
-       "update=prot off 40000000 +${filesize};"                        \
-               "era 40000000 +${filesize};"                            \
-               "cp.b 200000 40000000 ${filesize};"                     \
-               "sete filesize;save\0"                                  \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_NISDOMAIN
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_BOOTP_NTPSERVER
-#define CONFIG_BOOTP_TIMEOFFSET
-
-#define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-
-#define CONFIG_NETCONSOLE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_SYS_HUSH_PARSER         1       /* Use the HUSH parser          */
-
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-
-/* use CFI flash driver */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE+flash_info[0].size }
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT      71      /* max number of sectors on one chip */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x8000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET+CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-#define        CONFIG_SYS_USE_PPCENV                   /* Environment embedded in sect .ppcenv */
-
-#define CONFIG_MISC_INIT_R             /* Make sure to remap flashes correctly */
-
-/*-----------------------------------------------------------------------
- * Dynamic MTD partition support
- */
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
-#define CONFIG_FLASH_CFI_MTD
-#define MTDIDS_DEFAULT         "nor0=TQM8xxL-0"
-
-#define MTDPARTS_DEFAULT       "mtdparts=TQM8xxL-0:256k(u-boot),"      \
-                                               "128k(dtb),"            \
-                                               "1664k(kernel),"        \
-                                               "2m(rootfs),"           \
-                                               "4m(data)"
-
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#define CONFIG_SYS_HWINFO_OFFSET       0x0003FFC0      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000040      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x54514D38      /* 'TQM8' */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit - leave PLL multiplication factor unchanged !
- */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \
-                                OR_SCY_3_CLK | OR_EHTR | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_V )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x20000000      /* SDRAM bank #1        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-#define        CONFIG_SYS_OR3_PRELIM   CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096  Rows from SDRAM example configuration
- * 1000  factor s -> ms
- *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4  Number of refresh cycles per period
- *   64  Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- * 50 MHz => 50.000.000 / Divider =  98
- * 66 Mhz => 66.000.000 / Divider = 129
- * 80 Mhz => 80.000.000 / Divider = 156
- */
-
-#define CONFIG_SYS_PTA_PER_CLK ((4096 * 32 * 1000) / (4 * 64))
-#define CONFIG_SYS_MAMR_PTA    98
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-#define CONFIG_HWCONFIG                1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/FPS860L.h b/include/configs/FPS860L.h
deleted file mode 100644 (file)
index c368861..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- * (C) Copyright 2000-2008
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1       /* This is a MPC860 CPU         */
-#define CONFIG_FPS860L         1       /* ...on a FingerPrint Sensor   */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define        CONFIG_8xx_CONS_SMC2    1       /* Console is on SMC2           */
-#define CONFIG_SYS_SMC_RXBUFLEN        128
-#define CONFIG_SYS_MAXIDLE     10
-#define CONFIG_BAUDRATE                115200
-
-#define        CONFIG_BOOTCOUNT_LIMIT
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "flash_nfs=run nfsargs addip;"                                  \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip;"                                 \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip;bootm\0"     \
-       "rootpath=/opt/eldk/ppc_8xx\0"                                  \
-       "hostname=FPS860L\0"                                            \
-       "bootfile=FPS860L/uImage\0"                                     \
-       "fdt_addr=40040000\0"                                           \
-       "kernel_addr=40060000\0"                                        \
-       "ramdisk_addr=40200000\0"                                       \
-       "u-boot=FPS860L/u-image.bin\0"                                  \
-       "load=tftp 200000 ${u-boot}\0"                                  \
-       "update=prot off 40000000 +${filesize};"                        \
-               "era 40000000 +${filesize};"                            \
-               "cp.b 200000 40000000 ${filesize};"                     \
-               "sete filesize;save\0"                                  \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_NISDOMAIN
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_BOOTP_NTPSERVER
-#define CONFIG_BOOTP_TIMEOFFSET
-
-#define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-
-#define CONFIG_NETCONSOLE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_SYS_HUSH_PARSER         1       /* Use the HUSH parser          */
-
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-
-/* use CFI flash driver */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE+flash_info[0].size }
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT      71      /* max number of sectors on one chip */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x8000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET+CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-#define        CONFIG_SYS_USE_PPCENV                   /* Environment embedded in sect .ppcenv */
-
-#define CONFIG_MISC_INIT_R             /* Make sure to remap flashes correctly */
-
-/*-----------------------------------------------------------------------
- * Dynamic MTD partition support
- */
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
-#define CONFIG_FLASH_CFI_MTD
-#define MTDIDS_DEFAULT         "nor0=TQM8xxL-0"
-
-#define MTDPARTS_DEFAULT       "mtdparts=TQM8xxL-0:256k(u-boot),"      \
-                                               "128k(dtb),"            \
-                                               "1664k(kernel),"        \
-                                               "2m(rootfs),"           \
-                                               "4m(data)"
-
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#define CONFIG_SYS_HWINFO_OFFSET       0x0003FFC0      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000040      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x54514D38      /* 'TQM8' */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit - leave PLL multiplication factor unchanged !
- */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \
-                                OR_SCY_3_CLK | OR_EHTR | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_V )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x20000000      /* SDRAM bank #1        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-#define        CONFIG_SYS_OR3_PRELIM   CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096  Rows from SDRAM example configuration
- * 1000  factor s -> ms
- *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4  Number of refresh cycles per period
- *   64  Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- * 50 MHz => 50.000.000 / Divider =  98
- * 66 Mhz => 66.000.000 / Divider = 129
- * 80 Mhz => 80.000.000 / Divider = 156
- */
-
-#define CONFIG_SYS_PTA_PER_CLK ((4096 * 32 * 1000) / (4 * 64))
-#define CONFIG_SYS_MAMR_PTA    98
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-#define CONFIG_SCC1_ENET
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-#define CONFIG_HWCONFIG                1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/G2000.h b/include/configs/G2000.h
deleted file mode 100644 (file)
index 0c66092..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_G2000           1       /* ...on a PLU405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ     33333333 /* external frequency to pll   */
-
-#if 0 /* test-only */
-#define CONFIG_BAUDRATE                115200
-#else
-#define CONFIG_BAUDRATE                9600
-#endif
-
-#define CONFIG_PREBOOT
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off\0"                          \
-       "addmisc=setenv bootargs ${bootargs} "                          \
-               "console=ttyS0,${baudrate} "                            \
-               "panic=1\0"                                             \
-       "flash_nfs=run nfsargs addip addmisc;"                          \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip addmisc;"                         \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};"                              \
-               "run nfsargs addip addmisc;bootm\0"                     \
-       "rootpath=/opt/eldk/ppc_4xx\0"                                  \
-       "bootfile=/tftpboot/g2000/pImage\0"                             \
-       "kernel_addr=ff800000\0"                                        \
-       "ramdisk_addr=ff900000\0"                                       \
-       "pciconfighost=yes\0"                                           \
-       ""
-#define CONFIG_BOOTCOMMAND     "run net_nfs"
-
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_PHY1_ADDR       1       /* PHY address                  */
-
-#if 0 /* test-only */
-#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ /* 66 MHz OPB clock*/
-#endif
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_EEPROM
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#if 0 /* test-only */
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*----------------------------------------------------------------------------*/
-/* adding Ethernet setting:  FTS OUI 00:11:0B */
-/*----------------------------------------------------------------------------*/
-#define CONFIG_ETHADDR          00:11:0B:00:00:01
-#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR         00:11:0B:00:00:02
-#define CONFIG_IPADDR          10.48.8.178
-#define CONFIG_IP1ADDR         10.48.8.188
-#define CONFIG_NETMASK         255.255.255.128
-#define CONFIG_SERVERIP                10.48.8.138
-
-/*-----------------------------------------------------------------------
- * RTC stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_RTC_DS1337
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-
-#if 0 /* test-only */
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_MAX_NAND_DEVICE     1       /* Max number of NAND devices           */
-
-#define CONFIG_SYS_NAND_CE  (0x80000000 >> 1)  /* our CE is GPIO1 */
-#define CONFIG_SYS_NAND_CLE (0x80000000 >> 2)  /* our CLE is GPIO2 */
-#define CONFIG_SYS_NAND_ALE (0x80000000 >> 3)  /* our ALE is GPIO3 */
-#define CONFIG_SYS_NAND_RDY (0x80000000 >> 4)  /* our RDY is GPIO4 */
-
-#endif
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */
-#define PCI_HOST_FORCE  1               /* configure as pci host        */
-#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST        PCI_HOST_HOST   /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1 /* don't skip host bridge config*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#if 0 /* APC405 */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant              */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max number of sectors on one chip    */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#undef CONFIG_SYS_FLASH_PROTECTION             /* don't use hardware protection        */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_BASE          0xFE000000 /* test-only...*/
-#define CONFIG_SYS_FLASH_INCREMENT     0x01000000 /* test-only */
-#else /* G2000 */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant              */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max number of sectors on one chip    */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#undef CONFIG_SYS_FLASH_PROTECTION             /* don't use hardware protection        */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_BASE          0xFF800000 /* test-only...*/
-#define CONFIG_SYS_FLASH_INCREMENT     0x01000000 /* test-only */
-#endif
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#define CONFIG_SYS_JFFS2_FIRST_BANK    0           /* use for JFFS2 */
-#define CONFIG_SYS_JFFS2_NUM_BANKS     1           /* ! second bank contains u-boot    */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MONITOR_BASE        0xFFFC0000
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)    /* Reserve 256 kB for malloc()  */
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#if 1 /* test-only */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-#else  /* DEFAULT: environment in flash, using redundand flash sectors */
-
-#define CONFIG_ENV_IS_IN_FLASH 1       /* use FLASH for environment vars */
-#define CONFIG_ENV_ADDR                0xFFFA0000 /* environment starts before u-boot */
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128k bytes may be used for env vars*/
-
-#endif
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT24WC08             */
-/* CAT24WC08/16... */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Intel Strata Flash) initialization                            */
-#define CONFIG_SYS_EBC_PB0AP   0x92015480
-#define CONFIG_SYS_EBC_PB0CR   0xFF87A000          /* BAS=0xFF8,BS=08MB,BU=R/W,BW=16bit*/
-
-/* Memory Bank 1 ( Power TAU) initialization               */
-/* #define CONFIG_SYS_EBC_PB1AP           0x04041000 */
-/* #define CONFIG_SYS_EBC_PB1CR           0xF0018000   */  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-#define CONFIG_SYS_EBC_PB1AP           0x00000000
-#define CONFIG_SYS_EBC_PB1CR           0x00000000
-
-/* Memory Bank 2 (Intel Flash) initialization                 */
-#define CONFIG_SYS_EBC_PB2AP           0x00000000
-#define CONFIG_SYS_EBC_PB2CR           0x00000000
-
-/* Memory Bank 3 (NAND) initialization                        */
-#define CONFIG_SYS_EBC_PB3AP           0x92015480
-#define CONFIG_SYS_EBC_PB3CR           0xF40B8000  /*addr 0xF40, BS=32M,BU=R/W, BW=8bit */
-
-/* Memory Bank 4 (FPGA regs) initialization                                     */
-#define CONFIG_SYS_EBC_PB4AP           0x00000000
-#define CONFIG_SYS_EBC_PB4CR           0x00000000  /* leave it blank  */
-
-#define CONFIG_SYS_NAND_BASE   0xF4000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]     - External Bus Controller BLAST output
- * GPIO0[1-9]   - Instruction trace outputs
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- *
- * following GPIO setting changed for G20000, 080304
- */
-#define CONFIG_SYS_GPIO0_OSRL          0x40005555
-#define CONFIG_SYS_GPIO0_OSRH          0x40000110
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000
-#define CONFIG_SYS_GPIO0_ISR1H         0x15555445
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000
-#define CONFIG_SYS_GPIO0_TCR           0xF7FF8014
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#if 1
-#define PLLMR0_DEFAULT  PLLMR0_266_66_33_33
-#define PLLMR1_DEFAULT  PLLMR1_266_66_33_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_266_133_66_33
-#define PLLMR1_DEFAULT  PLLMR1_266_133_66_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_200_100_50_33
-#define PLLMR1_DEFAULT  PLLMR1_200_100_50_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT  PLLMR1_133_66_66_33
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/HH405.h b/include/configs/HH405.h
deleted file mode 100644 (file)
index 033dcbf..0000000
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2006
- * Matthias Fuchs, esd GmbH, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_HH405           1       /* ...on a HH405 board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF80000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R      1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ     33333400 /* external frequency to pll   */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT         "autoupd"
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "pciconfighost=1\0"                                             \
-       ""
-
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-
-#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ /* 66 MHz OPB clock*/
-
-/*
- * Video console
- */
-#define CONFIG_VIDEO                   /* for sm501 video support      */
-
-#ifdef CONFIG_VIDEO
-#define CONFIG_VIDEO_SM501
-#if 0
-#define CONFIG_VIDEO_SM501_32BPP
-#else
-#define CONFIG_VIDEO_SM501_16BPP
-#endif
-#define CONFIG_VIDEO_SM501_FBMEM_OFFSET 0x10000
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-#define CONFIG_CONSOLE_EXTRA_INFO
-#define CONFIG_VIDEO_SW_CURSOR
-#define CONFIG_SPLASH_SCREEN
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_SPLASH_SCREEN
-#define CONFIG_VIDEO_BMP_GZIP          /* gzip compressed bmp images   */
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (2 << 20)       /* for decompressed img */
-
-#endif /* CONFIG_VIDEO */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_EEPROM
-
-#ifdef CONFIG_VIDEO
-#define CONFIG_CMD_BMP
-#endif
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define CONFIG_SUPPORT_VFAT
-
-#define CONFIG_AUTO_UPDATE      1       /* autoupdate via compactflash  */
-#undef CONFIG_AUTO_UPDATE_SHOW          /* use board show routine       */
-
-#undef  CONFIG_BZIP2    /* include support for bzip2 compressed images */
-#undef  CONFIG_WATCHDOG                        /* watchdog disabled            */
-
-#define        CONFIG_SDRAM_BANK0      1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#undef  CONFIG_SYS_CONSOLE_INFO_QUIET          /* print console @ startup      */
-
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      2       /* Use UART1                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef  CONFIG_SYS_EXT_SERIAL_CLOCK           /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE        1       /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * RTC stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_RTC_DS1338
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1         /* Max number of NAND devices */
-#define NAND_BIG_DELAY_US      25
-
-#define CONFIG_SYS_NAND_CE             (0x80000000 >> 1)   /* our CE is GPIO1  */
-#define CONFIG_SYS_NAND_RDY            (0x80000000 >> 4)   /* our RDY is GPIO4 */
-#define CONFIG_SYS_NAND_CLE            (0x80000000 >> 2)   /* our CLE is GPIO2 */
-#define CONFIG_SYS_NAND_ALE            (0x80000000 >> 3)   /* our ALE is GPIO3 */
-
-#define CONFIG_SYS_NAND_SKIP_BAD_DOT_I 1       /* ".i" read skips bad blocks   */
-#define CONFIG_SYS_NAND_QUIET          1
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */
-#define PCI_HOST_FORCE  1               /* configure as pci host        */
-#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST        PCI_HOST_HOST   /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1 /* don't skip host bridge config*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#undef  CONFIG_IDE_8xx_DIRECT               /* no pcmcia interface required */
-#undef  CONFIG_IDE_LED                  /* no led for ide supported     */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported      */
-
-#define        CONFIG_SYS_IDE_MAXBUS           1               /* max. 1 IDE busses    */
-#define        CONFIG_SYS_IDE_MAXDEVICE        (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
-
-#define        CONFIG_SYS_ATA_BASE_ADDR        0xF0100000
-#define        CONFIG_SYS_ATA_IDE0_OFFSET      0x0000
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define        CONFIG_SYS_ATA_REG_OFFSET       0x0000  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0000  /* Offset for alternate registers       */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000    /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#if 0 /* test-only */
-#define CONFIG_SYS_JFFS2_FIRST_BANK    0           /* use for JFFS2 */
-#define CONFIG_SYS_JFFS2_NUM_BANKS     1           /* ! second bank contains U-Boot */
-#endif
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFF80000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)    /* Reserve 512 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (4 << 20)       /* Reserve 4 MB for malloc()    */
-
-#if (CONFIG_SYS_MONITOR_BASE < FLASH_BASE0_PRELIM)
-# define CONFIG_SYS_RAMBOOT            1
-#else
-# undef CONFIG_SYS_RAMBOOT
-#endif
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET          0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE            0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xF4080000              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          0x8000                  /* NVRAM size           */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#if 0 /* test-only */
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#else
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#endif
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT24WC08             */
-#define CONFIG_SYS_EEPROM_WREN         1
-
-#if 1 /* test-only */
-/* CAT24WC08/16... */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"    */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#else
-/* CAT24WC32/64... */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"    */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x01
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 5    /* The Catalyst CAT24WC32 has   */
-                                       /* 32 byte page write mode using*/
-                                       /* last 5 bits of the address   */
-#endif
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-#define CAN_BA          0xF0000000          /* CAN Base Address                 */
-#define LCD_BA          0xF1000000          /* Epson LCD Base Address           */
-#define CONFIG_SYS_NAND_BASE   0xF4000000          /* NAND FLASH Base Address          */
-#define CONFIG_SYS_NVRAM_BASE  0xF4080000          /* NVRAM Base Address               */
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                       */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1, NAND-FLASH & NVRAM) initialization              */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xF4018000  /* BAS=0xF40,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (8 Bit Peripheral: CAN, UART, RTC) initialization              */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (16 Bit Peripheral: FPGA internal, dig. IO) initialization     */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 4 (Epson LCD) initialization                                     */
-#define CONFIG_SYS_EBC_PB4AP   0x03805380   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=0 */
-#define CONFIG_SYS_EBC_PB4CR   LCD_BA | 0x7A000    /* BAS=0xF10,BS=8MB,BU=R/W,BW=16bit */
-
-/*-----------------------------------------------------------------------
- * LCD Setup
- */
-
-#define CONFIG_SYS_LCD_BIG_MEM         0xF1200000  /* Epson S1D13806 Mem Base Address  */
-#define CONFIG_SYS_LCD_BIG_REG         0xF1000000  /* Epson S1D13806 Reg Base Address  */
-#define CONFIG_SYS_LCD_SMALL_MEM       0xF1400000  /* Epson S1D13704 Mem Base Address  */
-#define CONFIG_SYS_LCD_SMALL_REG       0xF140FFE0  /* Epson S1D13704 Reg Base Address  */
-
-/*-----------------------------------------------------------------------
- * Universal Interrupt Controller (UIC) Setup
- */
-
-/*
- * define UIC_EXT0 ... UIC_EXT6 if external interrupt is active high
- */
-#define CONFIG_SYS_UIC0_POLARITY       (0xFFFFFF80 | UIC_MASK(VECNUM_EIRQ6))
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-
-#define CONFIG_SYS_FPGA_BASE_ADDR 0xF0100100       /* FPGA internal Base Address       */
-
-#define LCD_CLK_OFF             0x0000      /* Off                           */
-#define LCD_CLK_02083           0x1000      /* 2.083 MHz                     */
-#define LCD_CLK_03135           0x2000      /* 3.135 MHz                     */
-#define LCD_CLK_04165           0x3000      /* 4.165 MHz                     */
-#define LCD_CLK_06250           0x4000      /* 6.250 MHz                     */
-#define LCD_CLK_08330           0x5000      /* 8.330 MHz                     */
-#define LCD_CLK_12500           0x6000      /* 12.50 MHz                     */
-#define LCD_CLK_25000           0x7000      /* 25.00 MHz                     */
-
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       128*1024    /* 128kByte is enough for XC2S50E*/
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]     - External Bus Controller BLAST output
- * GPIO0[1-9]   - Instruction trace outputs -> GPIO
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- */
-#define CONFIG_SYS_GPIO0_OSRL          0x40000550
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000
-#define CONFIG_SYS_GPIO0_ISR1H         0x15555440
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000
-#define CONFIG_SYS_GPIO0_TCR           0xF7FE0017
-
-#define CONFIG_SYS_LCD_ENDIAN          (0x80000000 >> 7)
-#define CONFIG_SYS_EEPROM_WP           (0x80000000 >> 8)   /* GPIO8 */
-#define CONFIG_SYS_TOUCH_RST           (0x80000000 >> 9)   /* GPIO9 */
-#define CONFIG_SYS_LCD0_RST            (0x80000000 >> 30)
-#define CONFIG_SYS_LCD1_RST            (0x80000000 >> 31)
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#if 0
-#define PLLMR0_DEFAULT   PLLMR0_266_133_66_33
-#define PLLMR1_DEFAULT   PLLMR1_266_133_66_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT   PLLMR0_200_100_50_33
-#define PLLMR1_DEFAULT   PLLMR1_200_100_50_33
-#endif
-#if 1
-#define PLLMR0_DEFAULT   PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT   PLLMR1_133_66_66_33
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/HUB405.h b/include/configs/HUB405.h
deleted file mode 100644 (file)
index 1783b9f..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_HUB405          1       /* ...on a HUB405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33330000 /* external frequency to pll   */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef  CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-
-#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ /* 66 MHz OPB clock*/
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_EEPROM
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/* Ethernet stuff */
-#define CONFIG_ENV_OVERWRITE /* Let the user to change the Ethernet MAC addresses */
-#define CONFIG_ETHADDR 00:50:C2:1E:AF:FE
-#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:50:C2:1E:AF:FD
-
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1         /* Max number of NAND devices */
-#define NAND_BIG_DELAY_US      25
-
-#define CONFIG_SYS_NAND_CE             (0x80000000 >> 1)   /* our CE is GPIO1  */
-#define CONFIG_SYS_NAND_RDY            (0x80000000 >> 4)   /* our RDY is GPIO4 */
-#define CONFIG_SYS_NAND_CLE            (0x80000000 >> 2)   /* our CLE is GPIO2 */
-#define CONFIG_SYS_NAND_ALE            (0x80000000 >> 3)   /* our ALE is GPIO3 */
-
-#define CONFIG_SYS_NAND_SKIP_BAD_DOT_I 1       /* ".i" read skips bad blocks   */
-#define CONFIG_SYS_NAND_QUIET          1
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure as pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#undef CONFIG_PCI                      /* include pci support          */
-#define CONFIG_PCI_HOST PCI_HOST_HOST  /* select pci host function     */
-#undef CONFIG_PCI_PNP                  /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#undef CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFC0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)    /* Reserve 256 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000    /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#if 0 /* test-only */
-#define CONFIG_SYS_JFFS2_FIRST_BANK    0           /* use for JFFS2 */
-#define CONFIG_SYS_JFFS2_NUM_BANKS     1           /* ! second bank contains U-Boot */
-#endif
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xF0000500              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          242                     /* NVRAM size           */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-/*#define CONFIG_SYS_EBC_PB0AP           0x08055880  /XXX* TWT=16,CSN=1,OEN=1,WBN=1,WBF=1,TH=4,SOR=1 */
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1, NAND-FLASH) initialization                     */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xF4018000  /* BAS=0xF40,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (8 Bit Peripheral: UART) initialization                       */
-#if 0
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-#else
-#define CONFIG_SYS_EBC_PB2AP           0x92015480
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-#endif
-
-#define DUART0_BA      0xF0000000          /* DUART Base Address               */
-#define DUART1_BA      0xF0000008          /* DUART Base Address               */
-#define DUART2_BA      0xF0000010          /* DUART Base Address               */
-#define DUART3_BA      0xF0000018          /* DUART Base Address               */
-#define CONFIG_SYS_NAND_BASE   0xF4000000
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       128*1024    /* 128kByte is enough for XC2S50E*/
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]    - External Bus Controller BLAST output
- * GPIO0[1-9]  - Instruction trace outputs -> GPIO
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- */
-#define CONFIG_SYS_GPIO0_OSRL          0x40000550
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000
-#define CONFIG_SYS_GPIO0_ISR1H         0x15555445
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000
-#define CONFIG_SYS_GPIO0_TCR           0xF7FE0014
-
-#define CONFIG_SYS_DUART_RST           (0x80000000 >> 14)
-#define CONFIG_SYS_UART2_RS232         (0x80000000 >> 5)
-#define CONFIG_SYS_UART3_RS232         (0x80000000 >> 6)
-#define CONFIG_SYS_UART4_RS232         (0x80000000 >> 7)
-#define CONFIG_SYS_UART5_RS232         (0x80000000 >> 8)
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_266_133_66_33
-#define PLLMR1_DEFAULT  PLLMR1_266_133_66_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_200_100_50_33
-#define PLLMR1_DEFAULT  PLLMR1_200_100_50_33
-#endif
-#if 1
-#define PLLMR0_DEFAULT  PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT  PLLMR1_133_66_66_33
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/IP860.h b/include/configs/IP860.h
deleted file mode 100644 (file)
index 97eda58..0000000
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1       /* This is a MPC860 CPU         */
-#define CONFIG_IP860           1       /* ...on a IP860 board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0x10000000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f      */
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo" \
-"\0load=tftp \"/tftpboot/u-boot.bin\"\0update=protect off 1:0;era 1:0;cp.b 100000 10000000 ${filesize}\0"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp; "                                                               \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL         0x00000020      /* PB 26 */
-#define PB_SDA         0x00000010      /* PB 27 */
-
-#define I2C_INIT       (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE     (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE   (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ       ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-
-# define CONFIG_SYS_I2C_EEPROM_ADDR    0x50    /* EEPROM X24C16                */
-# define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1      /* bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"    */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* takes up to 10 msec */
-
-#define        CONFIG_TIMESTAMP                /* Print image info with timestamp */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00F00000      /* 1 ... 15MB in DRAM   */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x00100000      /* default load address */
-
-#define        CONFIG_SYS_PIO_MODE             0       /* IDE interface in PIO Mode 0  */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF1000000      /* Non-standard value!! */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x10000000
-#ifdef DEBUG
-#define        CONFIG_SYS_MONITOR_LEN          (512 << 10)     /* Reserve 512 kB for Monitor   */
-#else
-#if 0 /* need more space for I2C tests */
-#define        CONFIG_SYS_MONITOR_LEN          (128 << 10)     /* Reserve 128 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)
-#endif
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      124     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#undef CONFIG_ENV_IS_IN_FLASH
-#undef CONFIG_ENV_IS_IN_NVRAM
-#undef  CONFIG_ENV_IS_IN_NVRAM
-#undef DEBUG_I2C
-#define        CONFIG_ENV_IS_IN_EEPROM
-
-#ifdef CONFIG_ENV_IS_IN_NVRAM
-#define CONFIG_ENV_ADDR                0x20000000      /* use SRAM     */
-#define CONFIG_ENV_SIZE                (16<<10)        /* use 16 kB    */
-#endif /* CONFIG_ENV_IS_IN_NVRAM */
-
-#ifdef CONFIG_ENV_IS_IN_EEPROM
-#define CONFIG_ENV_OFFSET               512    /* Leave 512 bytes free for other data  */
-#define CONFIG_ENV_SIZE                1536    /* Use remaining space                  */
-#endif /* CONFIG_ENV_IS_IN_EEPROM */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-#define CONFIG_SYS_DELAYED_ICACHE      1       /* enable ICache not before
-                                                * running in RAM.
-                                                */
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- * +0x0004
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * +0x0000 => 0x80600800
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_EARB   | SIUMCR_EARP0 | \
-                        SIUMCR_DBGC11 | SIUMCR_MLRC10)
-
-/*-----------------------------------------------------------------------
- * Clock Setting - get clock frequency from Board Revision Register
- *-----------------------------------------------------------------------
- */
-#ifndef __ASSEMBLY__
-extern  unsigned long           ip860_get_clk_freq (void);
-#endif
-#define        CONFIG_8xx_GCLK_FREQ    ip860_get_clk_freq()
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- * +0x0200 => 0x00C2
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- * +0x0240 => 0x0082
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit, set PLL multiplication factor !
- */
-/* +0x0286 => was: 0x0000D000 */
-#define CONFIG_SYS_PLPRCR                                                      \
-               (       PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST |    \
-                       /*PLPRCR_CSRC|*/ PLPRCR_LPM_NORMAL |            \
-                       PLPRCR_CSR   | PLPRCR_LOLRE /*|PLPRCR_FIOPD*/   \
-               )
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_COM00     |   SCCR_TBS      |     \
-                        SCCR_RTDIV     |   SCCR_RTSEL    |     \
-                        /*SCCR_CRQEN|*/  /*SCCR_PRQEN|*/       \
-                        SCCR_EBDF00    |   SCCR_DFSYNC00 |     \
-                        SCCR_DFBRG00   |   SCCR_DFNL000  |     \
-                        SCCR_DFNH000)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-/* +0x0220 => 0x00C3 */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration Register               19-4
- *-----------------------------------------------------------------------
- */
-/* +0x09C4 => TIMEP=1 */
-#define CONFIG_SYS_RCCR 0x0100
-
-/*-----------------------------------------------------------------------
- * RMDS - RISC Microcode Development Support Control Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMDS 0
-
-/*-----------------------------------------------------------------------
- * DER - Debug Event Register
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- */
-
-/*
- * MAMR settings for SDRAM     - 16-14
- * => 0xC3804114
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA    0xC3
-
-#define CONFIG_SYS_MAMR        ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/*
- * BR1 and OR1 (FLASH)
- */
-#define FLASH_BASE             0x10000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-/* allow for max 8 MB of Flash */
-#define CONFIG_SYS_REMAP_OR_AM         0xFF800000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFF800000      /* OR addr mask */
-
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM | OR_ACS_DIV2 | OR_BI | OR_SCY_6_CLK)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-/* 16 bit, bank valid */
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE & BR_BA_MSK) | BR_PS_32 | BR_V )
-
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  CONFIG_SYS_BR0_PRELIM
-
-/*
- * BR2/OR2 - SDRAM
- */
-#define SDRAM_BASE             0x00000000      /* SDRAM bank */
-#define SDRAM_PRELIM_OR_AM     0xF8000000      /* map max. 128 MB */
-#define SDRAM_TIMING           0x00000A00      /* SDRAM-Timing */
-
-#define SDRAM_MAX_SIZE         0x04000000      /* max 64 MB SDRAM */
-
-#define CONFIG_SYS_OR2         (SDRAM_PRELIM_OR_AM | SDRAM_TIMING )
-#define CONFIG_SYS_BR2         ((SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/*
- * BR3/OR3 - SRAM (16 bit)
- */
-#define        SRAM_BASE       0x20000000
-#define CONFIG_SYS_OR3         0xFFF00130              /* BI/SCY = 5/TRLX (internal) */
-#define CONFIG_SYS_BR3         ((SRAM_BASE & BR_BA_MSK) | BR_PS_16 | BR_V)
-#define SRAM_SIZE      (1 + (~(CONFIG_SYS_OR3 & BR_BA_MSK)))
-#define CONFIG_SYS_OR3_PRELIM  CONFIG_SYS_OR3                  /* Make sure to map early */
-#define CONFIG_SYS_BR3_PRELIM  CONFIG_SYS_BR3                  /* in case it's used for ENV */
-#define        CONFIG_SYS_SRAM_BASE    SRAM_BASE
-#define        CONFIG_SYS_SRAM_SIZE    SRAM_SIZE
-
-/*
- * BR4/OR4 - Board Control & Status (8 bit)
- */
-#define        BCSR_BASE       0xFC000000
-#define CONFIG_SYS_OR4         0xFFFF0120              /* BI (internal) */
-#define CONFIG_SYS_BR4         ((BCSR_BASE & BR_BA_MSK) | BR_PS_8 | BR_V)
-
-/*
- * BR5/OR5 - IP Slot A/B (16 bit)
- */
-#define        IP_SLOT_BASE    0x40000000
-#define CONFIG_SYS_OR5         0xFE00010C              /* SETA/TRLX/BI/ SCY=0 (external) */
-#define CONFIG_SYS_BR5         ((IP_SLOT_BASE & BR_BA_MSK) | BR_PS_16 | BR_V)
-
-/*
- * BR6/OR6 - VME STD  (16 bit)
- */
-#define        VME_STD_BASE    0xFE000000
-#define CONFIG_SYS_OR6         0xFF00010C              /* SETA/TRLX/BI/SCY=0  (external) */
-#define CONFIG_SYS_BR6         ((VME_STD_BASE & BR_BA_MSK) | BR_PS_16 | BR_V)
-
-/*
- * BR7/OR7 - SHORT I/O + RTC + IACK  (16 bit)
- */
-#define VME_SHORT_BASE 0xFF000000
-#define CONFIG_SYS_OR7         0xFF00010C              /* SETA/TRLX/BI/ SCY=0 (external) */
-#define CONFIG_SYS_BR7         ((VME_SHORT_BASE & BR_BA_MSK) | BR_PS_16 | BR_V)
-
-/*-----------------------------------------------------------------------
- * Board Control and Status Region:
- *-----------------------------------------------------------------------
- */
-#ifndef __ASSEMBLY__
-typedef        struct ip860_bcsr_s {
-       unsigned char   shmem_addr;     /* +00 shared memory address register   */
-       unsigned char   reserved0;
-       unsigned char   mbox_addr;      /* +02 mailbox address register         */
-       unsigned char   reserved1;
-       unsigned char   vme_int_mask;   /* +04 VME Bus interrupt mask register  */
-       unsigned char   reserved2;
-       unsigned char   vme_int_pend;   /* +06 VME interrupt pending register   */
-       unsigned char   reserved3;
-       unsigned char   bd_int_mask;    /* +08 board interrupt mask register    */
-       unsigned char   reserved4;
-       unsigned char   bd_int_pend;    /* +0A board interrupt pending register */
-       unsigned char   reserved5;
-       unsigned char   bd_ctrl;        /* +0C board control register           */
-       unsigned char   reserved6;
-       unsigned char   bd_status;      /* +0E board status  register           */
-       unsigned char   reserved7;
-       unsigned char   vme_irq;        /* +10 VME interrupt request register   */
-       unsigned char   reserved8;
-       unsigned char   vme_ivec;       /* +12 VME interrupt vector register    */
-       unsigned char   reserved9;
-       unsigned char   cli_mbox;       /* +14 clear mailbox irq                */
-       unsigned char   reservedA;
-       unsigned char   rtc;            /* +16 RTC control register             */
-       unsigned char   reservedB;
-       unsigned char   mbox_data;      /* +18 mailbox read/write register      */
-       unsigned char   reservedC;
-       unsigned char   wd_trigger;     /* +1A Watchdog trigger register        */
-       unsigned char   reservedD;
-       unsigned char   rmw_req;        /* +1C RMW request register             */
-       unsigned char   reservedE;
-       unsigned char   bd_rev;         /* +1E Board Revision register          */
-} ip860_bcsr_t;
-#endif /* __ASSEMBLY__ */
-
-/*-----------------------------------------------------------------------
- * Board Control Register: bd_ctrl (Offset 0x0C)
- *-----------------------------------------------------------------------
- */
-#define BD_CTRL_IPLSE  0x80    /* IP Slot Long Select Enable           */
-#define BD_CTRL_WDOGE  0x40    /* Watchdog Enable                      */
-#define BD_CTRL_FLWE   0x20    /* Flash Write Enable                   */
-#define BD_CTRL_RWDN   0x10    /* VMEBus Requester Release When Done Enable */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/IPHASE4539.h b/include/configs/IPHASE4539.h
deleted file mode 100644 (file)
index e402075..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * (C) Copyright 2002 Wolfgang Grandegger <wg@denx.de>
- *
- * This file is based on similar values for other boards found in
- * other U-Boot config files, mainly tqm8260.h and mpc8260ads.h.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Config header file for a Interphase 4539 PMC, 64 MB SDRAM, 4MB Flash.
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*-----------------------------------------------------------------------
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_IPHASE4539      1       /* ...on a Interphase 4539 PMC */
-
-#define        CONFIG_SYS_TEXT_BASE    0xffb00000
-
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-/*-----------------------------------------------------------------------
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#define        CONFIG_CONS_ON_SMC              /* define if console on SMC */
-#undef CONFIG_CONS_ON_SCC              /* define if console on SCC */
-#undef CONFIG_CONS_NONE                /* define if console on something else */
-#define CONFIG_CONS_INDEX      1       /* which serial channel for console */
-
-/*-----------------------------------------------------------------------
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC   */
-#define CONFIG_ETHER_ON_FCC            /* define if ether on FCC   */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-#define CONFIG_ETHER_INDEX     3       /* which channel for ether  */
-
-#if defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 3)
-
-/*-----------------------------------------------------------------------
- * - Rx-CLK is CLK14
- * - Tx-CLK is CLK16
- * - Select bus for bd/buffers (see 28-13)
- * - Half duplex
- */
-# define CONFIG_SYS_CMXFCR_MASK3       (CMXFCR_FC3 | CMXFCR_RF3CS_MSK | CMXFCR_TF3CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE3      (CMXFCR_RF3CS_CLK14 | CMXFCR_TF3CS_CLK16)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-#endif /* CONFIG_ETHER_ON_FCC, CONFIG_ETHER_INDEX */
-
-/* other options */
-
-#define CONFIG_8260_CLKIN      66666666        /* in Hz */
-#define CONFIG_BAUDRATE                19200
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-/*
- * select i2c support configuration
- *
- * Supported configurations are {none, software, hardware} drivers.
- * If the software driver is chosen, there are some additional
- * configuration items that the driver uses to drive the port pins.
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      400000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0x7F
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
-#define I2C_READ       ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00010000; \
-                       else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00020000; \
-                       else    iop->pdat &= ~0x00020000
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
-#define CONFIG_BOOTCOMMAND     "bootm 100000"  /* autoboot command */
-#define CONFIG_BOOTARGS                "root=/dev/ram rw"
-
-#if defined(CONFIG_CMD_KGDB)
-#undef CONFIG_KGDB_ON_SMC              /* define if kgdb on SMC */
-#define CONFIG_KGDB_ON_SCC             /* define if kgdb on SCC */
-#undef CONFIG_KGDB_NONE                /* define if kgdb on something else */
-#define CONFIG_KGDB_INDEX      2       /* which serial channel for kgdb */
-#define CONFIG_KGDB_BAUDRATE   115200  /* speed to run kgdb serial port at */
-#endif
-
-#undef CONFIG_WATCHDOG                 /* disable platform specific watchdog */
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)  /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00F00000      /* 1 ... 15 MB in DRAM  */
-
-#define CONFIG_CLOCKS_IN_MHZ   1       /* clocks passed to Linux in MHz */
-                                       /* for versions < 2.4.5-pre5     */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-
-#define CONFIG_SYS_RESET_ADDRESS       0x04400000
-
-#define CONFIG_MISC_INIT_R     1       /* We need misc_init_r()        */
-
-/*-----------------------------------------------------------------------
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration (Setup by the
- * startup code). Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0.
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFF800000
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor  */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc() */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of memory banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      64      /* max num of sects on one chip */
-#define CONFIG_SYS_MAX_FLASH_SIZE      (CONFIG_SYS_MAX_FLASH_SECT * 0x10000)   /* 4 MB */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    2400000 /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-/* Environment in FLASH, there is little space left in Serial EEPROM */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_SECT_SIZE   0x10000 /* We use one complete sector   */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + 0x10000) /* 2. sector */
-
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- *
- * if you change bits in the HRCW, you must also change the CONFIG_SYS_*
- * defines for the various registers affected by the HRCW e.g. changing
- * HRCW_DPPCxx requires you to also change CONFIG_SYS_SIUMCR.
- */
-#define CONFIG_SYS_HRCW_MASTER ( ( HRCW_BPS01 | HRCW_EBM )             |\
-                         ( HRCW_L2CPC10 | HRCW_ISB110 )        |\
-                         ( HRCW_MMR11 | HRCW_APPC10 )          |\
-                         ( HRCW_CS10PC01 | HRCW_MODCK_H0101 )   \
-                       ) /* 0x14863245 */
-
-/* no slaves */
-#define CONFIG_SYS_HRCW_SLAVE1 0
-#define CONFIG_SYS_HRCW_SLAVE2 0
-#define CONFIG_SYS_HRCW_SLAVE3 0
-#define CONFIG_SYS_HRCW_SLAVE4 0
-#define CONFIG_SYS_HRCW_SLAVE5 0
-#define CONFIG_SYS_HRCW_SLAVE6 0
-#define CONFIG_SYS_HRCW_SLAVE7 0
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFF000000 /* We keep original value */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32     /* For MPC8260 CPU               */
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5      /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers          2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI|\
-                        HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL  (HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                    5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         RMR_CSRE
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                      4-25
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_BCR         0xA01C0000
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                            4-31
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SIUMCR      0X4205C000
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                            4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined (CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                    4-40
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                  9-8
- *-----------------------------------------------------------------------
- * Ensure DFBRG is Divide by 16
- */
-#define CONFIG_SYS_SCCR        0
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                                13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*-----------------------------------------------------------------------
- * Init Memory Controller:
- *
- * Bank Bus    Machine PortSz  Device
- * ---- ---    ------- ------  ------
- *  0  60x     GPCM    64 bit  FLASH
- *  1  60x     SDRAM   64 bit  SDRAM
- */
-
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK) | 0x0801)
-#define CONFIG_SYS_OR0_PRELIM  0xFF800882
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK) | 0x0041)
-#define CONFIG_SYS_OR1_PRELIM  0xF8002CD0
-
-#define CONFIG_SYS_PSDMR       0x404A241A
-#define CONFIG_SYS_MPTPR       0x00007400
-#define CONFIG_SYS_PSRT        0x00000007
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/IVML24.h b/include/configs/IVML24.h
deleted file mode 100644 (file)
index 8aa4ac2..0000000
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1       /* This is a MPC860 CPU         */
-#define CONFIG_IVML24          1       /* ...on a IVML24 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFF000000
-
-#if defined (CONFIG_IVML24_16M)
-# define CONFIG_IDENT_STRING     " IVML24"
-#elif defined (CONFIG_IVML24_32M)
-# define CONFIG_IDENT_STRING     " IVML24_128"
-#elif defined (CONFIG_IVML24_64M)
-# define CONFIG_IDENT_STRING     " IVML24_256"
-#endif
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-#define CONFIG_8xx_GCLK_FREQ    50331648
-
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-#define        CONFIG_SHOW_BOOT_PROGRESS 1     /* Show boot progress on LEDs   */
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_BOOTCOMMAND     "bootp" /* autoboot command             */
-
-#define CONFIG_BOOTARGS                "root=/dev/nfs rw "                     \
-                               "nfsroot=10.0.0.2:/opt/eldk/ppc_8xx "   \
-                               "nfsaddrs=10.0.0.99:10.0.0.2"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define        CONFIG_STATUS_LED       1       /* Status LED enabled           */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_IDE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00F00000      /* 1 ... 15MB in DRAM   */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x00100000      /* default load address */
-
-#define        CONFIG_SYS_PIO_MODE             0       /* IDE interface in PIO Mode 0  */
-
-#define CONFIG_SYS_PB_12V_ENABLE       0x00002000              /* PB 18        */
-#define CONFIG_SYS_PB_ILOCK_SWITCH     0x00004000              /* PB 17        */
-#define CONFIG_SYS_PB_SDRAM_CLKE       0x00008000              /* PB 16        */
-#define CONFIG_SYS_PB_ETH_POWERDOWN    0x00010000              /* PB 15        */
-#define CONFIG_SYS_PB_IDE_MOTOR        0x00020000              /* PB 14        */
-
-#define CONFIG_SYS_PC_ETH_RESET        ((ushort)0x0010)        /* PC 11        */
-#define CONFIG_SYS_PC_IDE_RESET        ((ushort)0x0020)        /* PC 10        */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000 /* was: 0xFF000000 */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-
-#if defined (CONFIG_IVML24_16M)
-# define       CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#elif defined (CONFIG_IVML24_32M)
-# define       CONFIG_SYS_INIT_RAM_SIZE        0x3000  /* Size of used area in DPRAM   */
-#elif defined (CONFIG_IVML24_64M)
-# define       CONFIG_SYS_INIT_RAM_SIZE        0x3000  /* Size of used area in DPRAM   */
-#endif
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#ifdef DEBUG
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (192 << 10)     /* Reserve 192 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x7A000 /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-
-# if defined (CONFIG_IVML24_16M)
-#  define CONFIG_SYS_SYPCR     (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-# elif defined (CONFIG_IVML24_32M)
-#  define CONFIG_SYS_SYPCR     (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWP)
-# elif defined (CONFIG_IVML24_64M)
-#  define CONFIG_SYS_SYPCR     (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWP)
-# endif
-
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-/* EARB, DBGC and DBPC are initialised by the HCW */
-/* => 0x000000C0 */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_BSC | SIUMCR_GB5E)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit, set PLL multiplication factor !
- */
-/* 0x00B0C0C0 */
-#define CONFIG_SYS_PLPRCR                                                      \
-               (       (11 << PLPRCR_MF_SHIFT) |                       \
-                       PLPRCR_SPLSS | PLPRCR_TEXPS | /*PLPRCR_TMIST|*/ \
-                       /*PLPRCR_CSRC|*/ PLPRCR_LPM_NORMAL |            \
-                       PLPRCR_CSR   | PLPRCR_LOLRE /*|PLPRCR_FIOPD*/   \
-               )
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-/* 0x01800014 */
-#define CONFIG_SYS_SCCR        (SCCR_COM01     | /*SCCR_TBS|*/         \
-                        SCCR_RTDIV     |   SCCR_RTSEL    |     \
-                        /*SCCR_CRQEN|*/  /*SCCR_PRQEN|*/       \
-                        SCCR_EBDF00    |   SCCR_DFSYNC00 |     \
-                        SCCR_DFBRG00   |   SCCR_DFNL000  |     \
-                        SCCR_DFNH000   |   SCCR_DFLCD101 |     \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-/* 0x00C3 */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration Register               19-4
- *-----------------------------------------------------------------------
- */
-/* TIMEP=2 */
-#define CONFIG_SYS_RCCR 0x0200
-
-/*-----------------------------------------------------------------------
- * RMDS - RISC Microcode Development Support Control Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMDS 0
-
-/*-----------------------------------------------------------------------
- *
- * Interrupt Levels
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_CPM_INTERRUPT       13      /* SIU_LEVEL6   */
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_INIT_POSTRESET      1       /* Use postreset IDE hook */
-#define CONFIG_IDE_8xx_DIRECT  1       /* PCMCIA interface required    */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported      */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* The IVML24 has only 1 IDE bus*/
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /*    ... and only 1 IDE device */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xFE100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-#undef CONFIG_SYS_ATA_IDE1_OFFSET              /* only one IDE bus available   */
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0080  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100  /* Offset for alternate registers       */
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0 and OR0 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-/* EPROMs are 512kb */
-#define CONFIG_SYS_REMAP_OR_AM         0xFFF80000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFFF80000      /* OR addr mask */
-
-/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_SCY_5_CLK | OR_EHTR)
-
-#define CONFIG_SYS_OR0_REMAP   ( CONFIG_SYS_REMAP_OR_AM | OR_ACS_DIV4 | OR_BI | \
-                               CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | OR_ACS_DIV4 | OR_BI | \
-                               CONFIG_SYS_OR_TIMING_FLASH)
-/* 16 bit, bank valid */
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-/*
- * BR1/OR1 - ELIC SACCO bank  @ 0xFE000000
- *
- * AM=0xFFFF8 ATM=0 CSNT/SAM=1 ACS/G5LA/G5LS=3 BIH=1 SCY=2 SETA=0 TRLX=1 EHTR=1
- */
-#define ELIC_SACCO_BASE                0xFE000000
-#define ELIC_SACCO_OR_AM       0xFFFF8000
-#define ELIC_SACCO_TIMING      (OR_SCY_2_CLK | OR_TRLX | OR_EHTR)
-
-#define CONFIG_SYS_OR1 (ELIC_SACCO_OR_AM | OR_CSNT_SAM | OR_ACS_DIV2 | OR_BI | \
-                       ELIC_SACCO_TIMING)
-#define CONFIG_SYS_BR1 ((ELIC_SACCO_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR2/OR2 - ELIC EPIC bank   @ 0xFE008000
- *
- * AM=0xFFFF8 ATM=0 CSNT/SAM=1 ACS/G5LA/G5LS=3 BIH=1 SCY=2 SETA=0 TRLX=1 EHTR=1
- */
-#define ELIC_EPIC_BASE         0xFE008000
-#define ELIC_EPIC_OR_AM                0xFFFF8000
-#define ELIC_EPIC_TIMING       (OR_SCY_2_CLK | OR_TRLX | OR_EHTR)
-
-#define CONFIG_SYS_OR2 (ELIC_EPIC_OR_AM | OR_CSNT_SAM | OR_ACS_DIV2 | OR_BI | \
-                       ELIC_EPIC_TIMING)
-#define CONFIG_SYS_BR2 ((ELIC_EPIC_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR3/OR3: SDRAM
- *
- * Multiplexed addresses, GPL5 output to GPL5_A (don't care)
- */
-#define SDRAM_BASE3_PRELIM     0x00000000      /* SDRAM bank */
-#define SDRAM_PRELIM_OR_AM     0xF8000000      /* map max. 128 MB */
-#define SDRAM_TIMING           OR_SCY_0_CLK    /* SDRAM-Timing */
-
-#define SDRAM_MAX_SIZE         0x04000000      /* max 64 MB SDRAM */
-
-#define CONFIG_SYS_OR3_PRELIM  (SDRAM_PRELIM_OR_AM | OR_CSNT_SAM | OR_G5LS | SDRAM_TIMING )
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMB | BR_V )
-
-/*
- * BR4/OR4 - HDLC Address
- *
- *  AM=0xFFFF8 ATM=0 CSNT/SAM=0 ACS/G5LA/G5LS=0 BIH=1 SCY=1 SETA=0 TRLX=0 EHTR=0
- */
-#define HDLC_ADDR_BASE         0xFE108000      /* HDLC Address area */
-#define HDLC_ADDR_OR_AM                0xFFFF8000
-#define HDLC_ADDR_TIMING       OR_SCY_1_CLK
-
-#define CONFIG_SYS_OR4 (HDLC_ADDR_OR_AM | OR_BI | HDLC_ADDR_TIMING)
-#define CONFIG_SYS_BR4 ((HDLC_ADDR_BASE & BR_BA_MSK) | BR_PS_8 | BR_WP | BR_V )
-
-/*
- * BR5/OR5: SHARC ADSP-2165L
- *
- * AM=0xFFC00 ATM=0 CSNT/SAM=0 ACS/G5LA/G5LS=3 BIH=1 SCY=0 SETA=0 TRLX=0 EHTR=0
- */
-#define SHARC_BASE             0xFE400000
-#define SHARC_OR_AM            0xFFC00000
-#define SHARC_TIMING           OR_SCY_0_CLK
-
-#define CONFIG_SYS_OR5 (SHARC_OR_AM | OR_ACS_DIV2 | OR_BI | SHARC_TIMING )
-#define CONFIG_SYS_BR5 ((SHARC_BASE & BR_BA_MSK) | BR_PS_32 | BR_MS_UPMA | BR_V )
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MBMR_PTB    204
-
-/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit    */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-
-#if defined (CONFIG_IVML24_16M)
-# define CONFIG_SYS_MPTPR_1BK_8K       MPTPR_PTP_DIV16         /* setting for 1 bank   */
-#elif defined (CONFIG_IVML24_32M)
-# define CONFIG_SYS_MPTPR_1BK_8K       MPTPR_PTP_DIV16         /* setting for 1 bank   */
-#elif defined (CONFIG_IVML24_64M)
-# define CONFIG_SYS_MPTPR_1BK_8K       MPTPR_PTP_DIV8          /* setting for 1 bank   */
-#endif
-
-
-/*
- * MBMR settings for SDRAM
- */
-
-#if defined (CONFIG_IVML24_16M)
- /* 8 column SDRAM */
-# define CONFIG_SYS_MBMR_8COL  ((CONFIG_SYS_MBMR_PTB << MBMR_PTB_SHIFT)  | \
-                        MBMR_AMB_TYPE_0 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A11 |   \
-                        MBMR_RLFB_1X    | MBMR_WLFB_1X    | MBMR_TLFB_4X)
-#elif defined (CONFIG_IVML24_32M)
-/* 128 MBit SDRAM */
-# define CONFIG_SYS_MBMR_8COL  ((CONFIG_SYS_MBMR_PTB << MBMR_PTB_SHIFT)  | \
-                        MBMR_AMB_TYPE_1 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A10 |   \
-                        MBMR_RLFB_1X    | MBMR_WLFB_1X    | MBMR_TLFB_4X)
-#elif defined (CONFIG_IVML24_64M)
-/* 128 MBit SDRAM */
-# define CONFIG_SYS_MBMR_8COL  ((CONFIG_SYS_MBMR_PTB << MBMR_PTB_SHIFT)  | \
-                        MBMR_AMB_TYPE_1 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A10 |   \
-                        MBMR_RLFB_1X    | MBMR_WLFB_1X    | MBMR_TLFB_4X)
-#endif
-#endif /* __CONFIG_H */
diff --git a/include/configs/IVMS8.h b/include/configs/IVMS8.h
deleted file mode 100644 (file)
index 0b54af5..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1       /* This is a MPC860 CPU         */
-#define CONFIG_IVMS8           1       /* ...on a IVMS8 board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFF000000
-
-#if defined (CONFIG_IVMS8_16M)
-# define CONFIG_IDENT_STRING     " IVMS8"
-#elif defined (CONFIG_IVMS8_32M)
-# define CONFIG_IDENT_STRING     " IVMS8_128"
-#elif defined (CONFIG_IVMS8_64M)
-# define CONFIG_IDENT_STRING     " IVMS8_256"
-#endif
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-#define CONFIG_8xx_GCLK_FREQ    50331648
-
-#define        CONFIG_SHOW_BOOT_PROGRESS 1     /* Show boot progress on LEDs   */
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_BOOTCOMMAND     "bootp" /* autoboot command             */
-
-#define CONFIG_BOOTARGS                "root=/dev/nfs rw "                     \
-                               "nfsroot=10.0.0.2:/opt/eldk/ppc_8xx "   \
-                               "nfsaddrs=10.0.0.99:10.0.0.2"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define        CONFIG_STATUS_LED       1       /* Status LED enabled           */
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_IDE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00F00000      /* 1 ... 15MB in DRAM   */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x00100000      /* default load address */
-
-#define        CONFIG_SYS_PIO_MODE             0       /* IDE interface in PIO Mode 0  */
-
-#define CONFIG_SYS_PB_SDRAM_CLKE       0x00008000              /* PB 16        */
-#define CONFIG_SYS_PB_ETH_POWERDOWN    0x00010000              /* PB 15        */
-#define CONFIG_SYS_PB_IDE_MOTOR        0x00020000              /* PB 14        */
-
-#define CONFIG_SYS_PC_ETH_RESET        ((ushort)0x0010)        /* PC 11        */
-#define CONFIG_SYS_PC_IDE_RESET        ((ushort)0x0020)        /* PC 10        */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000 /* was: 0xFF000000 */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#if defined (CONFIG_IVMS8_16M)
-# define       CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#elif defined (CONFIG_IVMS8_32M)
-# define       CONFIG_SYS_INIT_RAM_SIZE        0x3000  /* Size of used area in DPRAM   */
-#elif defined (CONFIG_IVMS8_64M)
-# define       CONFIG_SYS_INIT_RAM_SIZE        0x3000  /* Size of used area in DPRAM   */
-#endif
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#ifdef DEBUG
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (192 << 10)     /* Reserve 192 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x7A000 /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-# if defined (CONFIG_IVMS8_16M)
-#   define CONFIG_SYS_SYPCR    (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#  elif defined (CONFIG_IVMS8_32M)
-#   define CONFIG_SYS_SYPCR    (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWP)
-#  elif defined (CONFIG_IVMS8_64M)
-#   define CONFIG_SYS_SYPCR    (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWP)
-#  endif
-#else
-# define CONFIG_SYS_SYPCR      (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-/* EARB, DBGC and DBPC are initialised by the HCW */
-/* => 0x000000C0 */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_BSC | SIUMCR_GB5E)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit, set PLL multiplication factor !
- */
-/* 0x00B0C0C0 */
-#define CONFIG_SYS_PLPRCR                                                      \
-               (       (11 << PLPRCR_MF_SHIFT) |                       \
-                       PLPRCR_SPLSS | PLPRCR_TEXPS | /*PLPRCR_TMIST|*/ \
-                       /*PLPRCR_CSRC|*/ PLPRCR_LPM_NORMAL |            \
-                       PLPRCR_CSR   | PLPRCR_LOLRE /*|PLPRCR_FIOPD*/   \
-               )
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-/* 0x01800014 */
-#define CONFIG_SYS_SCCR        (SCCR_COM01     | /*SCCR_TBS|*/         \
-                        SCCR_RTDIV     |   SCCR_RTSEL    |     \
-                        /*SCCR_CRQEN|*/  /*SCCR_PRQEN|*/       \
-                        SCCR_EBDF00    |   SCCR_DFSYNC00 |     \
-                        SCCR_DFBRG00   |   SCCR_DFNL000  |     \
-                        SCCR_DFNH000   |   SCCR_DFLCD101 |     \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-/* 0x00C3 */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration Register               19-4
- *-----------------------------------------------------------------------
- */
-/* TIMEP=2 */
-#define CONFIG_SYS_RCCR 0x0200
-
-/*-----------------------------------------------------------------------
- * RMDS - RISC Microcode Development Support Control Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMDS 0
-
-/*-----------------------------------------------------------------------
- *
- * Interrupt Levels
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_CPM_INTERRUPT       13      /* SIU_LEVEL6   */
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_INIT_POSTRESET      1       /* Use postreset IDE hook */
-#define CONFIG_IDE_8xx_DIRECT  1       /* PCMCIA interface required    */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported      */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* The IVMS8 has only 1 IDE bus */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /*    ... and only 1 IDE device */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xFE100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-#undef CONFIG_SYS_ATA_IDE1_OFFSET              /* only one IDE bus available   */
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0080  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100  /* Offset for alternate registers       */
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0 and OR0 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-/* EPROMs are 512kb */
-#define CONFIG_SYS_REMAP_OR_AM         0xFFF80000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFFF80000      /* OR addr mask */
-
-/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (/* OR_CSNT_SAM | */ OR_ACS_DIV4 | OR_BI | \
-                                OR_SCY_5_CLK | OR_EHTR)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-/* 16 bit, bank valid */
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-/*
- * BR1/OR1 - ELIC SACCO bank  @ 0xFE000000
- *
- * AM=0xFFFF8 ATM=0 CSNT/SAM=1 ACS/G5LA/G5LS=3 BIH=1 SCY=2 SETA=0 TRLX=1 EHTR=1
- */
-#define ELIC_SACCO_BASE                0xFE000000
-#define ELIC_SACCO_OR_AM       0xFFFF8000
-#define ELIC_SACCO_TIMING      0x00000F26
-
-#define CONFIG_SYS_OR1 (ELIC_SACCO_OR_AM | ELIC_SACCO_TIMING)
-#define CONFIG_SYS_BR1 ((ELIC_SACCO_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR2/OR2 - ELIC EPIC bank   @ 0xFE008000
- *
- * AM=0xFFFF8 ATM=0 CSNT/SAM=1 ACS/G5LA/G5LS=3 BIH=1 SCY=2 SETA=0 TRLX=1 EHTR=1
- */
-#define ELIC_EPIC_BASE         0xFE008000
-#define ELIC_EPIC_OR_AM                0xFFFF8000
-#define ELIC_EPIC_TIMING       0x00000F26
-
-#define CONFIG_SYS_OR2 (ELIC_EPIC_OR_AM | ELIC_EPIC_TIMING)
-#define CONFIG_SYS_BR2 ((ELIC_EPIC_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR3/OR3: SDRAM
- *
- * Multiplexed addresses, GPL5 output to GPL5_A (don't care)
- */
-#define SDRAM_BASE3_PRELIM     0x00000000      /* SDRAM bank */
-#define SDRAM_PRELIM_OR_AM     0xF8000000      /* map max. 128 MB */
-#define SDRAM_TIMING           0x00000A00      /* SDRAM-Timing */
-
-#define SDRAM_MAX_SIZE         0x04000000      /* max 64 MB SDRAM */
-
-#define CONFIG_SYS_OR3_PRELIM  (SDRAM_PRELIM_OR_AM | SDRAM_TIMING )
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMB | BR_V )
-
-/*
- * BR4/OR4: not used
- */
-
-/*
- * BR5/OR5: SHARC ADSP-2165L
- *
- * AM=0xFFC00 ATM=0 CSNT/SAM=0 ACS/G5LA/G5LS=3 BIH=1 SCY=0 SETA=0 TRLX=0 EHTR=0
- */
-#define SHARC_BASE             0xFE400000
-#define SHARC_OR_AM            0xFFC00000
-#define SHARC_TIMING           0x00000700
-
-#define CONFIG_SYS_OR5 (SHARC_OR_AM | SHARC_TIMING )
-#define CONFIG_SYS_BR5 ((SHARC_BASE & BR_BA_MSK) | BR_PS_32 | BR_MS_UPMA | BR_V )
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MBMR_PTB    204
-
-/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit    */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#if defined (CONFIG_IVMS8_16M)
- #define CONFIG_SYS_MPTPR_1BK_8K       MPTPR_PTP_DIV16         /* setting for 1 bank   */
-#elif defined (CONFIG_IVMS8_32M)
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-#elif defined (CONFIG_IVMS8_64M)
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV8          /* setting for 1 bank   */
-#endif
-
-
-/*
- * MBMR settings for SDRAM
- */
-
-#if defined (CONFIG_IVMS8_16M)
- /* 8 column SDRAM */
-# define CONFIG_SYS_MBMR_8COL  ((CONFIG_SYS_MBMR_PTB << MBMR_PTB_SHIFT)  | \
-                        MBMR_AMB_TYPE_0 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A11 |   \
-                        MBMR_RLFB_1X    | MBMR_WLFB_1X    | MBMR_TLFB_4X)
-#elif defined (CONFIG_IVMS8_32M)
-/* 128 MBit SDRAM */
-#define CONFIG_SYS_MBMR_8COL   ((CONFIG_SYS_MBMR_PTB << MBMR_PTB_SHIFT)  | \
-                        MBMR_AMB_TYPE_1 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A10 |   \
-                        MBMR_RLFB_1X    | MBMR_WLFB_1X    | MBMR_TLFB_4X)
-#elif defined (CONFIG_IVMS8_64M)
-/* 128 MBit SDRAM */
-#define CONFIG_SYS_MBMR_8COL   ((CONFIG_SYS_MBMR_PTB << MBMR_PTB_SHIFT)  | \
-                        MBMR_AMB_TYPE_1 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A10 |   \
-                        MBMR_RLFB_1X    | MBMR_WLFB_1X    | MBMR_TLFB_4X)
-
-#endif
-#endif /* __CONFIG_H */
diff --git a/include/configs/KUP4K.h b/include/configs/KUP4K.h
deleted file mode 100644 (file)
index 7cf09d0..0000000
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
-  * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- * Derived from ../tqm8xx/tqm8xx.c
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC855          1       /* This is a MPC855 CPU         */
-#define CONFIG_KUP4K           1       /* ...on a KUP4K module */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define CONFIG_8xx_CONS_SMC1   1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200  /* console baudrate             */
-#define CONFIG_BOOTDELAY       1       /* autoboot after 1 second      */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#undef CONFIG_BOOTARGS
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                              \
-"slot_a_boot=setenv bootargs root=/dev/sda2 ip=off;"                           \
- "run addhw; mw.b 400000 00 80; diskboot 400000 0:1; bootm 400000\0"           \
-"slot_b_boot=setenv bootargs root=/dev/sda2 ip=off;"                           \
- "run addhw; mw.b 400000 00 80; diskboot 400000 2:1; bootm 400000\0"           \
-"nfs_boot=mw.b 400000 00 80; dhcp; run nfsargs addip addhw; bootm 400000\0"    \
-"fat_boot=mw.b 400000 00 80; fatload ide 2:1 400000 st.bin; run addhw;         \
- bootm 400000 \0"                                                              \
-"panic_boot=echo No Bootdevice !!! reset\0"                                    \
-"nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${rootpath}\0"               \
-"ramargs=setenv bootargs root=/dev/ram rw\0"                                   \
-"addip=setenv bootargs ${bootargs} ip=${ipaddr}::${gatewayip}"                 \
- ":${netmask}:${hostname}:${netdev}:off\0"                                     \
-"addhw=setenv bootargs ${bootargs} ${mtdparts} console=${console} ${debug}     \
- hw=${hw} key1=${key1} panic=1 mem=${mem}\0"                                   \
-"console=ttyCPM0,115200\0"                                                     \
-"netdev=eth0\0"                                                                        \
-"contrast=20\0"                                                                        \
-"silent=1\0"                                                                   \
-"mtdparts=" MTDPARTS_DEFAULT "\0"                                              \
-"load=tftp 200000 bootloader-4k.bitmap;tftp 100000 bootloader-4k.bin\0"                \
-"update=protect off 1:0-9;era 1:0-9;cp.b 100000 40000000 ${filesize};"         \
- "cp.b 200000 40050000 14000\0"
-
-#define CONFIG_BOOTCOMMAND  \
-    "run fat_boot;run slot_b_boot;run slot_a_boot;run nfs_boot;run panic_boot"
-
-#define CONFIG_PREBOOT "setenv preboot; saveenv"
-
-#define CONFIG_MISC_INIT_R     1
-#define CONFIG_MISC_INIT_F     1
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE    /* don't allow baudrate change  */
-
-#define        CONFIG_WATCHDOG 1               /* watchdog enabled             */
-
-#define CONFIG_STATUS_LED      1       /* Status LED enabled           */
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-/*
- * enable I2C and select the hardware/software driver
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      93000   /* 93 kHz is supposed to work */
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL         0x00000020      /* PB 26 */
-#define PB_SDA         0x00000010      /* PB 27 */
-
-#define I2C_INIT       (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE     (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE   (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ       ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-
-/*-----------------------------------------------------------------------
- * I2C Configuration
- */
-
-#define CONFIG_SYS_I2C_PICIO_ADDR      0x21    /* PCF8574 IO Expander */
-#define CONFIG_SYS_I2C_RTC_ADDR                0x51    /* PCF8563 RTC */
-
-/* List of I2C addresses to be verified by POST */
-
-#define CONFIG_SYS_POST_I2C_ADDRS      {CONFIG_SYS_I2C_PICIO_ADDR,     \
-                                        CONFIG_SYS_I2C_RTC_ADDR,       \
-                                       }
-
-#define CONFIG_RTC_PCF8563             /* use Philips PCF8563 RTC      */
-
-#define CONFIG_SYS_DISCOVER_PHY
-#define CONFIG_MII
-
-/* Define to allow the user to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_SNTP
-
-#ifdef CONFIG_POST
-    #define CONFIG_CMD_DIAG
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      512             /* Console I/O Buffer Size      */
-#endif
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x000400000     /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x005C00000     /* 4 ... 92 MB in DRAM  */
-#define CONFIG_SYS_ALT_MEMTEST 1
-#define CONFIG_SYS_MEMTEST_SCRATCH     0x90000200      /* using latch as scratch register */
-
-#define CONFIG_SYS_LOAD_ADDR           0x400000        /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 115200 }
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET 1
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define CONFIG_SYS_MONITOR_LEN         (192 << 10)     /* Reserve 192 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      19      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0x40000 /*   Offset   of Environment Sector     */
-#define CONFIG_ENV_SIZE                0x1000  /* Total Size of Environment Sector     */
-#define CONFIG_ENV_SECT_SIZE   0x10000
-
-/*-----------------------------------------------------------------------
- * Dynamic MTD partition support
- */
-#define MTDPARTS_DEFAULT       "mtdparts=40000000.flash:256k(u-boot)," \
-                                               "64k(env),"             \
-                                               "128k(splash),"         \
-                                               "512k(etc),"            \
-                                               "64k(hw-info)"
-
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#define CONFIG_SYS_HWINFO_OFFSET       0x000F0000      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000100      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x4B26500D              /* 'K&P<CR>' */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC00)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- *
- * If this is a 80 MHz CPU, set PLL multiplication factor to 5 (5*16=80)!
- */
-#define CONFIG_SYS_PLPRCR ( (5-1)<<PLPRCR_MF_SHIFT | PLPRCR_TEXPS | PLPRCR_TMIST )
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF00
-#define CONFIG_SYS_SCCR        (SCCR_TBS | SCCR_EBDF01 |  \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-
-/* KUP4K use both slots, SLOT_A as "primary". */
-#define CONFIG_PCMCIA_SLOT_A 1
-
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-#define PCMCIA_SOCKETS_NO 2
-#define PCMCIA_MEM_WIN_NO 8
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_8xx_PCCARD  1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#define CONFIG_IDE_LED         1       /* LED   for ide supported      */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          2
-#define CONFIG_SYS_IDE_MAXDEVICE       4
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_IDE1_OFFSET     (4 * CONFIG_SYS_PCMCIA_MEM_SIZE)
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV2  | OR_CSNT_SAM | \
-                                OR_SCY_5_CLK | OR_EHTR | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP \
-       (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM \
-       (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM \
-       ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096         Rows from SDRAM example configuration
- * 1000         factor s -> ms
- *   32         PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4         Number of refresh cycles per period
- *   64         Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- * 50 MHz => 50.000.000 / Divider =  98
- * 66 Mhz => 66.000.000 / Divider = 129
- * 80 Mhz => 80.000.000 / Divider = 156
- */
-#if   defined(CONFIG_80MHz)
-#define CONFIG_SYS_MAMR_PTA            156
-#elif defined(CONFIG_66MHz)
-#define CONFIG_SYS_MAMR_PTA            129
-#else          /*   50 MHz */
-#define CONFIG_SYS_MAMR_PTA             98
-#endif /*CONFIG_??MHz */
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR 0x400
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL 0x68802114
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL 0x68904114
-
-/*
- * Chip Selects
- */
-#define CONFIG_SYS_OR0
-#define CONFIG_SYS_BR0
-
-#define CONFIG_SYS_OR1_8COL 0xFF000A00
-#define CONFIG_SYS_BR1_8COL 0x00000081
-#define CONFIG_SYS_OR2_8COL 0xFE000A00
-#define CONFIG_SYS_BR2_8COL 0x01000081
-#define CONFIG_SYS_OR3_8COL 0xFC000A00
-#define CONFIG_SYS_BR3_8COL 0x02000081
-
-#define CONFIG_SYS_OR1_9COL 0xFE000A00
-#define CONFIG_SYS_BR1_9COL 0x00000081
-#define CONFIG_SYS_OR2_9COL 0xFE000A00
-#define CONFIG_SYS_BR2_9COL 0x02000081
-#define CONFIG_SYS_OR3_9COL 0xFE000A00
-#define CONFIG_SYS_BR3_9COL 0x04000081
-
-#define CONFIG_SYS_OR4 0xFFFF8926
-#define CONFIG_SYS_BR4 0x90000401
-
-#define CONFIG_SYS_OR5 0xFFC007F0  /* EPSON: 4 MB  17 WS or externel TA */
-#define CONFIG_SYS_BR5 0x80080801  /* Start at 0x80080000 */
-
-#define LATCH_ADDR 0x90000200
-
-#define CONFIG_AUTOBOOT_KEYED          /* use key strings to stop autoboot */
-#define CONFIG_AUTOBOOT_STOP_STR       "."
-#define CONFIG_SILENT_CONSOLE          1
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* enble null device            */
-#define CONFIG_VERSION_VARIABLE                1
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/KUP4X.h b/include/configs/KUP4X.h
deleted file mode 100644 (file)
index 47d1623..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- * Derived from ../tqm8xx/tqm8xx.c
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC859T         1       /* This is a MPC859T CPU        */
-#define CONFIG_KUP4X           1       /* ...on a KUP4X module         */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define CONFIG_8xx_CONS_SMC1   1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200  /* console baudrate             */
-
-#define CONFIG_BOOTDELAY       1       /* autoboot after 1 second      */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_SYS_8XX_FACT            8       /* Multiply by 8        */
-#define CONFIG_SYS_8XX_XIN             16000000        /* 16 MHz in    */
-
-
-#define MPC8XX_HZ ((CONFIG_SYS_8XX_XIN) * (CONFIG_SYS_8XX_FACT))
-
-/* should ALWAYS define this, measure_gclk in speed.c is unreliable */
-/* in general, we always know this for FADS+new ADS anyway */
-#define CONFIG_8xx_GCLK_FREQ    MPC8XX_HZ
-
-
-#undef CONFIG_BOOTARGS
-
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                              \
-"slot_a_boot=setenv bootargs root=/dev/hda2 ip=off;"                           \
-  "run addhw;diskboot 200000 0:1;bootm 200000\0"                               \
-"usb_boot=setenv bootargs root=/dev/sda2 ip=off;                               \
- run addhw; sleep 2; usb reset; usb scan; usbboot 200000 0:1;                  \
- usb stop; bootm 200000\0"                                                     \
-"nfs_boot=dhcp;run nfsargs addip addhw;bootm 200000\0"                         \
-"panic_boot=echo No Bootdevice !!! reset\0"                                    \
-"nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath}\0"   \
-"ramargs=setenv bootargs root=/dev/ram rw\0"                                   \
-"addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}"      \
- ":${netmask}:${hostname}:${netdev}:off\0"                                     \
-"addhw=setenv bootargs ${bootargs} hw=${hw} key1=${key1} panic=1\0"            \
-"netdev=eth0\0"                                                                        \
-"silent=1\0"                                                                   \
-"load=tftp 200000 bootloader-4x.bitmap;tftp 100000 bootloader-4x.bin\0"                \
-"update=protect off 1:0-5;era 1:0-5;cp.b 100000 40000000 ${filesize};"         \
- "cp.b 200000 40040000 14000\0"
-
-#define CONFIG_BOOTCOMMAND  \
-    "run usb_boot;run slot_a_boot;run nfs_boot;run panic_boot"
-
-
-#define CONFIG_MISC_INIT_R     1
-#define CONFIG_MISC_INIT_F     1
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE    /* don't allow baudrate change  */
-
-#define        CONFIG_WATCHDOG         1       /* watchdog enabled             */
-
-#define CONFIG_STATUS_LED      1       /* Status LED enabled           */
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-/*
- * enable I2C and select the hardware/software driver
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-
-#ifdef CONFIG_SYS_I2C_SOFT
-#define CONFIG_SYS_I2C_SOFT_SPEED      93000   /* 93 kHz is supposed to work */
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL         0x00000020      /* PB 26 */
-#define PB_SDA         0x00000010      /* PB 27 */
-
-#define I2C_INIT       (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE     (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE   (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ       ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SYS_I2C_SOFT */
-
-
-/*-----------------------------------------------------------------------
- * I2C Configuration
- */
-
-#define CONFIG_SYS_I2C_PICIO_ADDR      0x21    /* PCF8574 IO Expander  */
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51    /* PCF8563 RTC                  */
-
-
-/* List of I2C addresses to be verified by POST */
-
-#define CONFIG_SYS_POST_I2C_ADDRS      {CONFIG_SYS_I2C_PICIO_ADDR,     \
-                                        CONFIG_SYS_I2C_RTC_ADDR,       \
-                                       }
-
-
-#define CONFIG_RTC_PCF8563             /* use Philips PCF8563 RTC      */
-
-#define CONFIG_SYS_DISCOVER_PHY
-#define CONFIG_MII
-
-#undef CONFIG_KUP4K_LOGO
-
-/* Define to allow the user to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-
-/* POST support */
-#define CONFIG_POST            (CONFIG_SYS_POST_CPU       | \
-                                CONFIG_SYS_POST_RTC       | \
-                                CONFIG_SYS_POST_I2C)
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-#define CONFIG_CMD_USB
-
-#ifdef CONFIG_POST
-    #define CONFIG_CMD_DIAG
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x000400000     /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x003C00000     /* 4 ... 60 MB in DRAM  */
-#define CONFIG_SYS_LOAD_ADDR           0x200000        /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 115200 }
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET 1
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define CONFIG_SYS_MONITOR_LEN         (192 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      19      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0x40000 /*   Offset   of Environment Sector     */
-#define CONFIG_ENV_SIZE                0x1000  /* Total Size of Environment Sector     */
-#define CONFIG_ENV_SECT_SIZE   0x10000
-
-/* Address and size of Redundant Environment Sector    */
-#if 0
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET+CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-#endif
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#if 1
-#define CONFIG_SYS_HWINFO_OFFSET       0x000F0000      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000100      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x4B26500D      /* 'K&P<CR>' */
-#endif
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if 0 && defined(CONFIG_WATCHDOG)       /* KUP uses external TPS3705 WD */
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC00)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register 15-30
- *-----------------------------------------------------------------------
- * set the PLL, the low-power modes and the reset control (15-29)
- */
-#define CONFIG_SYS_PLPRCR      ((CONFIG_SYS_8XX_FACT << PLPRCR_MFI_SHIFT) |    \
-                               PLPRCR_SPLSS | PLPRCR_TEXPS)
-
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF00
-#define CONFIG_SYS_SCCR        (SCCR_TBS | SCCR_EBDF01 |  \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-
-/* KUP4K use both slots, SLOT_A as "primary". */
-#define CONFIG_PCMCIA_SLOT_A 1
-
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-#define PCMCIA_SOCKETS_NO 1
-#define PCMCIA_MEM_WIN_NO 8
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_8xx_PCCARD  1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#define CONFIG_IDE_LED                 1   /* LED   for ide supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1
-#define CONFIG_SYS_IDE_MAXDEVICE       2
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_IDE1_OFFSET     (4 * CONFIG_SYS_PCMCIA_MEM_SIZE)
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \
-                                OR_SCY_2_CLK | OR_EHTR | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP \
-               (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM \
-               (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM \
-               ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-
-#define CONFIG_SYS_MPTPR 0x400
-
-/*
- * MAMR settings for SDRAM
- */
-#define CONFIG_SYS_MAMR 0x80802114
-
-
-/*
- * Chip Selects
- */
-
-#define CONFIG_SYS_OR4 0xFFFF8926
-#define CONFIG_SYS_BR4 0x90000401
-
-#define LATCH_ADDR 0x90000200
-
-#define CONFIG_AUTOBOOT_KEYED          /* use key strings to stop autoboot     */
-
-#define CONFIG_AUTOBOOT_STOP_STR       "."     /* easy to stop for now         */
-#define CONFIG_SILENT_CONSOLE  1
-
-#define CONFIG_USB_STORAGE     1
-#define CONFIG_USB_SL811HS     1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/MPC8266ADS.h b/include/configs/MPC8266ADS.h
deleted file mode 100644 (file)
index 8d9c8fb..0000000
+++ /dev/null
@@ -1,563 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stuart Hughes <stuarth@lineo.com>
- * This file is based on similar values for other boards found in other
- * U-Boot config files, and some that I found in the mpc8260ads manual.
- *
- * Note: my board is a PILOT rev.
- * Note: the mpc8260ads doesn't come with a proper Ethernet MAC address.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Config header file for a MPC8266ADS Pilot 16M Ram Simm, 8Mbytes Flash Simm
- */
-
-/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-   !!                                                                !!
-   !!  This configuration requires JP3 to be in position 1-2 to work  !!
-   !!  To make it work for the default, the CONFIG_SYS_TEXT_BASE define in           !!
-   !!  board/mpc8266ads/config.mk must be changed from 0xfe000000 to  !!
-   !!  0xfff00000                                                    !!
-   !!  The CONFIG_SYS_HRCW_MASTER define below must also be changed to match !!
-   !!                                                                !!
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8266ADS      1       /* ...on motorola ADS board     */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#define        CONFIG_SYS_TEXT_BASE    0xfe000000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f      */
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-/* allow serial and ethaddr to be overwritten */
-#define CONFIG_ENV_OVERWRITE
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#undef CONFIG_CONS_ON_SMC              /* define if console on SMC */
-#define CONFIG_CONS_ON_SCC             /* define if console on SCC */
-#undef CONFIG_CONS_NONE                /* define if console on something else */
-#define CONFIG_CONS_INDEX      1       /* which serial channel for console */
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC   */
-#define CONFIG_ETHER_ON_FCC            /* define if ether on FCC   */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-#define CONFIG_ETHER_INDEX     2       /* which channel for ether  */
-#define CONFIG_MII                     /* MII PHY management           */
-#define CONFIG_BITBANGMII              /* bit-bang MII PHY management  */
-/*
- * Port pins used for bit-banged MII communictions (if applicable).
- */
-#define MDIO_PORT      2       /* Port C */
-#define MDIO_DECLARE   volatile ioport_t *iop = ioport_addr ( \
-                               (immap_t *) CONFIG_SYS_IMMR, MDIO_PORT )
-#define MDC_DECLARE    MDIO_DECLARE
-
-#define MDIO_ACTIVE    (iop->pdir |=  0x00400000)
-#define MDIO_TRISTATE  (iop->pdir &= ~0x00400000)
-#define MDIO_READ      ((iop->pdat &  0x00400000) != 0)
-
-#define MDIO(bit)      if(bit) iop->pdat |=  0x00400000; \
-                       else    iop->pdat &= ~0x00400000
-
-#define MDC(bit)       if(bit) iop->pdat |=  0x00200000; \
-                       else    iop->pdat &= ~0x00200000
-
-#define MIIDELAY       udelay(1)
-
-#if (CONFIG_ETHER_INDEX == 2)
-
-/*
- * - Rx-CLK is CLK13
- * - Tx-CLK is CLK14
- * - Select bus for bd/buffers (see 28-13)
- * - Half duplex
- */
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2 | CMXFCR_RF2CS_MSK | CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13 | CMXFCR_TF2CS_CLK14)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE | FCC_PSMR_LPB)
-
-#endif /* CONFIG_ETHER_INDEX */
-
-/* other options */
-#define CONFIG_HARD_I2C                1       /* To enable I2C support        */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-
-/* PCI */
-#define CONFIG_PCI
-#define CONFIG_PCI_INDIRECT_BRIDGE
-#define CONFIG_PCI_PNP
-#define CONFIG_PCI_BOOTDELAY 0
-#undef CONFIG_PCI_SCAN_SHOW
-
-/*-----------------------------------------------------------------------
- * Definitions for Serial Presence Detect EEPROM address
- * (to get SDRAM settings)
- */
-#define SPD_EEPROM_ADDRESS     0x50
-
-#define CONFIG_8260_CLKIN      66000000        /* in Hz */
-#define CONFIG_BAUDRATE                115200
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-/* Commands we want, that are not part of default set */
-#define CONFIG_CMD_ASKENV      /* ask for env variable         */
-#define CONFIG_CMD_CACHE       /* icache, dcache               */
-#define CONFIG_CMD_DHCP                /* DHCP Support                 */
-#define CONFIG_CMD_DIAG                /* Diagnostics                  */
-#define CONFIG_CMD_IMMAP       /* IMMR dump support            */
-#define CONFIG_CMD_IRQ         /* irqinfo                      */
-#define CONFIG_CMD_MII         /* MII support                  */
-#define CONFIG_CMD_PCI         /* pciinfo                      */
-#define CONFIG_CMD_PING                /* ping support                 */
-#define CONFIG_CMD_PORTIO      /* Port I/O                     */
-#define CONFIG_CMD_REGINFO     /* Register dump                */
-#define CONFIG_CMD_SAVES       /* save S record dump           */
-#define CONFIG_CMD_SDRAM       /* SDRAM DIMM SPD info printout */
-
-/* Commands from default set we don't need */
-#undef CONFIG_CMD_FPGA         /* FPGA configuration Support   */
-#undef CONFIG_CMD_SETGETDCR    /* DCR support on 4xx           */
-
-/* Define a command string that is automatically executed when no character
- * is read on the console interface withing "Boot Delay" after reset.
- */
-#undef CONFIG_BOOT_ROOT_INITRD         /* Use ram disk for the root file system */
-#define CONFIG_BOOT_ROOT_NFS           /* Use a NFS mounted root file system */
-
-#ifdef CONFIG_BOOT_ROOT_INITRD
-#define CONFIG_BOOTCOMMAND \
-       "version;" \
-       "echo;" \
-       "bootp;" \
-       "setenv bootargs root=/dev/ram0 rw " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
-       "bootm"
-#endif /* CONFIG_BOOT_ROOT_INITRD */
-
-#ifdef CONFIG_BOOT_ROOT_NFS
-#define CONFIG_BOOTCOMMAND \
-       "version;" \
-       "echo;" \
-       "bootp;" \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
-       "bootm"
-#endif /* CONFIG_BOOT_ROOT_NFS */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_DNS
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
-
-#if defined(CONFIG_CMD_KGDB)
-#undef CONFIG_KGDB_ON_SMC              /* define if kgdb on SMC */
-#define CONFIG_KGDB_ON_SCC             /* define if kgdb on SCC */
-#undef CONFIG_KGDB_NONE                /* define if kgdb on something else */
-#define CONFIG_KGDB_INDEX      2       /* which serial channel for kgdb */
-#define CONFIG_KGDB_BAUDRATE   115200  /* speed to run kgdb serial port at */
-#endif
-
-#undef CONFIG_WATCHDOG                 /* disable platform specific watchdog */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory     */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size  */
-#else
-#define CONFIG_SYS_CBSIZE      256                     /* Console I/O Buffer Size  */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16                      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x00f00000      /* 1 ... 15 MB in DRAM  */
-
-#undef CONFIG_CLOCKS_IN_MHZ            /* clocks passsed to Linux in MHz */
-                                       /* for versions < 2.4.5-pre5    */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-#define CONFIG_SYS_FLASH_BASE          0xFE000000
-#define FLASH_BASE             0xFE000000
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of memory banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      32      /* max num of sects on one chip */
-#define CONFIG_SYS_FLASH_SIZE          8
-#define CONFIG_SYS_FLASH_ERASE_TOUT    8000    /* Timeout for Flash Erase (in ms)    */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    5       /* Timeout for Flash Write (in ms)    */
-
-#undef CONFIG_SYS_FLASH_CHECKSUM
-
-/* this is stuff came out of the Motorola docs */
-/* Only change this if you also change the Hardware configuration Word */
-#define CONFIG_SYS_DEFAULT_IMMR        0x0F010000
-
-/* Set IMMR to 0xF0000000 or above to boot Linux  */
-#define CONFIG_SYS_IMMR                0xF0000000
-#define CONFIG_SYS_BCSR                0xF8000000
-#define CONFIG_SYS_PCI_INT             0xF8200000      /* PCI interrupt controller */
-
-/* Define CONFIG_VERY_BIG_RAM to allow use of SDRAMs larger than 256MBytes
- */
-/*#define CONFIG_VERY_BIG_RAM  1*/
-
-/* What should be the base address of SDRAM DIMM and how big is
- * it (in Mbytes)?  This will normally auto-configure via the SPD.
-*/
-#define CONFIG_SYS_SDRAM_BASE 0x00000000
-#define CONFIG_SYS_SDRAM_SIZE 16
-
-#define SDRAM_SPD_ADDR 0x50
-
-/*-----------------------------------------------------------------------
- * BR2,BR3 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR2,OR3 - Option Register
- *     Ref: Section 10.3.2 on page 10-16
- *-----------------------------------------------------------------------
- */
-
-/* Bank 2,3 - SDRAM DIMM
- */
-
-/* The BR2 is configured as follows:
- *
- *     - Base address of 0x00000000
- *     - 64 bit port size (60x bus only)
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - SDRAM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_BR3_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-/* With a 64 MB DIMM, the OR2 is configured as follows:
- *
- *     - 64 MB
- *     - 4 internal banks per device
- *     - Row start address bit is A8 with PSDMR[PBI] = 0
- *     - 12 row address lines
- *     - Back-to-back page mode
- *     - Internal bank interleaving within save device enabled
- */
-#if (CONFIG_SYS_SDRAM_SIZE == 64)
-#define CONFIG_SYS_OR2_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM_SIZE)       |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A8             |\
-                        ORxS_NUMR_12)
-#elif (CONFIG_SYS_SDRAM_SIZE == 16)
-#define CONFIG_SYS_OR2_PRELIM  (0xFF000C80)
-#else
-#error "INVALID SDRAM CONFIGURATION"
-#endif
-
-/*-----------------------------------------------------------------------
- * PSDMR - 60x Bus SDRAM Mode Register
- *     Ref: Section 10.3.3 on page 10-21
- *-----------------------------------------------------------------------
- */
-
-#if (CONFIG_SYS_SDRAM_SIZE == 64)
-/* With a 64 MB DIMM, the PSDMR is configured as follows:
- *
- *     - Bank Based Interleaving,
- *     - Refresh Enable,
- *     - Address Multiplexing where A5 is output on A14 pin
- *      (A6 on A15, and so on),
- *     - use address pins A14-A16 as bank select,
- *     - A9 is output on SDA10 during an ACTIVATE command,
- *     - earliest timing for ACTIVATE command after REFRESH command is 7 clocks,
- *     - earliest timing for ACTIVATE or REFRESH command after PRECHARGE command
- *      is 3 clocks,
- *     - earliest timing for READ/WRITE command after ACTIVATE command is
- *      2 clocks,
- *     - earliest timing for PRECHARGE after last data was read is 1 clock,
- *     - earliest timing for PRECHARGE after last data was written is 1 clock,
- *     - CAS Latency is 2.
- */
-#define CONFIG_SYS_PSDMR       (PSDMR_RFEN           |\
-                        PSDMR_SDAM_A14_IS_A5 |\
-                        PSDMR_BSMA_A14_A16   |\
-                        PSDMR_SDA10_PBI0_A9  |\
-                        PSDMR_RFRC_7_CLK     |\
-                        PSDMR_PRETOACT_3W    |\
-                        PSDMR_ACTTORW_2W     |\
-                        PSDMR_LDOTOPRE_1C    |\
-                        PSDMR_WRC_1C         |\
-                        PSDMR_CL_2)
-#elif (CONFIG_SYS_SDRAM_SIZE == 16)
-/* With a 16 MB DIMM, the PSDMR is configured as follows:
- *
- *   configuration parameters found in Motorola documentation
- */
-#define CONFIG_SYS_PSDMR       (0x016EB452)
-#else
-#error "INVALID SDRAM CONFIGURATION"
-#endif
-
-#define RS232EN_1              0x02000002
-#define RS232EN_2              0x01000001
-#define FETHIEN                        0x08000008
-#define FETH_RST               0x04000004
-
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/* Use this HRCW for booting from address 0xfe00000 (JP3 in setting 1-2)  */
-/* 0x0EB2B645 */
-#define CONFIG_SYS_HRCW_MASTER (( HRCW_BPS11 | HRCW_CIP )                              |\
-                        ( HRCW_L2CPC10 | HRCW_DPPC11 | HRCW_ISB010 )           |\
-                        ( HRCW_BMS | HRCW_MMR11 | HRCW_LBPC01 | HRCW_APPC10 )  |\
-                        ( HRCW_CS10PC01 | HRCW_MODCK_H0101 )                   \
-                       )
-
-/* Use this HRCW for booting from address 0xfff0000 (JP3 in setting 2-3)  */
-/* #define CONFIG_SYS_HRCW_MASTER 0x0cb23645 */
-
-/* This value should actually be situated in the first 256 bytes of the FLASH
-       which on the standard MPC8266ADS board is at address 0xFF800000
-       The linker script places it at 0xFFF00000 instead.
-
-       It still works, however, as long as the ADS board jumper JP3 is set to
-       position 2-3 so the board is using the BCSR as Hardware Configuration Word
-
-       If you want to use the one defined here instead, ust copy the first 256 bytes from
-       0xfff00000 to 0xff800000  (for 8MB flash)
-
-       - Rune
-
-*/
-
-/* no slaves */
-#define CONFIG_SYS_HRCW_SLAVE1 0
-#define CONFIG_SYS_HRCW_SLAVE2 0
-#define CONFIG_SYS_HRCW_SLAVE3 0
-#define CONFIG_SYS_HRCW_SLAVE4 0
-#define CONFIG_SYS_HRCW_SLAVE5 0
-#define CONFIG_SYS_HRCW_SLAVE6 0
-#define CONFIG_SYS_HRCW_SLAVE7 0
-
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#   define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-#ifndef CONFIG_SYS_RAMBOOT
-#  define CONFIG_ENV_IS_IN_FLASH       1
-#    define CONFIG_ENV_ADDR    (CONFIG_SYS_MONITOR_BASE + 0x40000)
-#    define CONFIG_ENV_SECT_SIZE       0x40000
-#else
-#  define CONFIG_ENV_IS_IN_NVRAM       1
-#  define CONFIG_ENV_ADDR              (CONFIG_SYS_MONITOR_BASE - 0x1000)
-#  define CONFIG_ENV_SIZE              0x200
-#endif /* CONFIG_SYS_RAMBOOT */
-
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                   2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-/*#define CONFIG_SYS_HID0_INIT         0 */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE  |\
-                        HID0_DCE  |\
-                        HID0_ICFI |\
-                        HID0_DCI  |\
-                        HID0_IFEM |\
-                        HID0_ABE)
-
-#define CONFIG_SYS_HID0_FINAL          (HID0_ICE | HID0_IFEM | HID0_ABE )
-
-#define CONFIG_SYS_HID2                0
-
-#define CONFIG_SYS_SYPCR               0xFFFFFFC3
-#define CONFIG_SYS_BCR                 0x004C0000
-#define CONFIG_SYS_SIUMCR              0x4E64C000
-#define CONFIG_SYS_SCCR                0x00000000
-
-/*     local bus memory map
- *
- *     0x00000000-0x03FFFFFF    64MB   SDRAM
- *     0x80000000-0x9FFFFFFF   512MB   outbound prefetchable PCI memory window
- *     0xA0000000-0xBFFFFFFF   512MB   outbound non-prefetchable PCI memory window
- *     0xF0000000-0xF001FFFF   128KB   MPC8266 internal memory
- *     0xF4000000-0xF7FFFFFF    64MB   outbound PCI I/O window
- *     0xF8000000-0xF8007FFF    32KB   BCSR
- *     0xF8100000-0xF8107FFF    32KB   ATM UNI
- *     0xF8200000-0xF8207FFF    32KB   PCI interrupt controller
- *     0xF8300000-0xF8307FFF    32KB   EEPROM
- *     0xFE000000-0xFFFFFFFF    32MB   flash
- */
-#define CONFIG_SYS_BR0_PRELIM  0xFE001801              /* flash */
-#define CONFIG_SYS_OR0_PRELIM  0xFE000836
-#define CONFIG_SYS_BR1_PRELIM  (CONFIG_SYS_BCSR | 0x1801)      /* BCSR */
-#define CONFIG_SYS_OR1_PRELIM  0xFFFF8010
-#define CONFIG_SYS_BR4_PRELIM  0xF8300801              /* EEPROM */
-#define CONFIG_SYS_OR4_PRELIM  0xFFFF8846
-#define CONFIG_SYS_BR5_PRELIM  0xF8100801              /* PM5350 ATM UNI */
-#define CONFIG_SYS_OR5_PRELIM  0xFFFF8E36
-#define CONFIG_SYS_BR8_PRELIM  (CONFIG_SYS_PCI_INT | 0x1801)   /* PCI interrupt controller */
-#define CONFIG_SYS_OR8_PRELIM  0xFFFF8010
-
-#define CONFIG_SYS_RMR                 0x0001
-#define CONFIG_SYS_TMCNTSC             (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-#define CONFIG_SYS_PISCR               (PISCR_PS|PISCR_PTF|PISCR_PTE)
-#define CONFIG_SYS_RCCR                0
-#define CONFIG_SYS_MPTPR               0x00001900
-#define CONFIG_SYS_PSRT                0x00000021
-
-/* This address must not exist */
-#define CONFIG_SYS_RESET_ADDRESS       0xFCFFFF00
-
-/* PCI Memory map (if different from default map */
-#define CONFIG_SYS_PCI_SLV_MEM_LOCAL   CONFIG_SYS_SDRAM_BASE           /* Local base */
-#define CONFIG_SYS_PCI_SLV_MEM_BUS             0x00000000              /* PCI base */
-#define CONFIG_SYS_PICMR0_MASK_ATTRIB  (PICMR_MASK_512MB | PICMR_ENABLE | \
-                                PICMR_PREFETCH_EN)
-
-/*
- * These are the windows that allow the CPU to access PCI address space.
- * All three PCI master windows, which allow the CPU to access PCI
- * prefetch, non prefetch, and IO space (see below), must all fit within
- * these windows.
- */
-
-/* PCIBR0 */
-#define CONFIG_SYS_PCI_MSTR0_LOCAL             0x80000000              /* Local base */
-#define CONFIG_SYS_PCIMSK0_MASK                PCIMSK_1GB              /* Size of window */
-/* PCIBR1 */
-#define CONFIG_SYS_PCI_MSTR1_LOCAL             0xF4000000              /* Local base */
-#define CONFIG_SYS_PCIMSK1_MASK                PCIMSK_64MB             /* Size of window */
-
-/*
- * Master window that allows the CPU to access PCI Memory (prefetch).
- * This window will be setup with the first set of Outbound ATU registers
- * in the bridge.
- */
-
-#define CONFIG_SYS_PCI_MSTR_MEM_LOCAL  0x80000000                      /* Local base */
-#define CONFIG_SYS_PCI_MSTR_MEM_BUS    0x80000000                      /* PCI base   */
-#define CONFIG_SYS_CPU_PCI_MEM_START   PCI_MSTR_MEM_LOCAL
-#define CONFIG_SYS_PCI_MSTR_MEM_SIZE   0x20000000                      /* 512MB */
-#define CONFIG_SYS_POCMR0_MASK_ATTRIB  (POCMR_MASK_512MB | POCMR_ENABLE | POCMR_PREFETCH_EN)
-
-/*
- * Master window that allows the CPU to access PCI Memory (non-prefetch).
- * This window will be setup with the second set of Outbound ATU registers
- * in the bridge.
- */
-
-#define CONFIG_SYS_PCI_MSTR_MEMIO_LOCAL    0xA0000000                  /* Local base */
-#define CONFIG_SYS_PCI_MSTR_MEMIO_BUS      0xA0000000                  /* PCI base   */
-#define CONFIG_SYS_CPU_PCI_MEMIO_START     PCI_MSTR_MEMIO_LOCAL
-#define CONFIG_SYS_PCI_MSTR_MEMIO_SIZE     0x20000000                  /* 512MB */
-#define CONFIG_SYS_POCMR1_MASK_ATTRIB      (POCMR_MASK_512MB | POCMR_ENABLE)
-
-/*
- * Master window that allows the CPU to access PCI IO space.
- * This window will be setup with the third set of Outbound ATU registers
- * in the bridge.
- */
-
-#define CONFIG_SYS_PCI_MSTR_IO_LOCAL       0xF4000000                  /* Local base */
-#define CONFIG_SYS_PCI_MSTR_IO_BUS         0xF4000000                  /* PCI base   */
-#define CONFIG_SYS_CPU_PCI_IO_START        PCI_MSTR_IO_LOCAL
-#define CONFIG_SYS_PCI_MSTR_IO_SIZE        0x04000000                  /* 64MB */
-#define CONFIG_SYS_POCMR2_MASK_ATTRIB      (POCMR_MASK_64MB | POCMR_ENABLE | POCMR_PCI_IO)
-
-/*
- * JFFS2 partitions
- *
- */
-/* No command line, one static partition, whole device */
-#undef CONFIG_CMD_MTDPARTS
-#define CONFIG_JFFS2_DEV               "nor0"
-#define CONFIG_JFFS2_PART_SIZE         0xFFFFFFFF
-#define CONFIG_JFFS2_PART_OFFSET       0x00000000
-
-/* mtdparts command line support */
-/*
-#define CONFIG_CMD_MTDPARTS
-#define MTDIDS_DEFAULT         ""
-#define MTDPARTS_DEFAULT       ""
-*/
-
-#endif /* __CONFIG_H */
index 695e47bf07f46589befccee6028c8ab4ce1e6b27..832c10f5c016c7b4d0f1b0eeecdfd318ae0b8d52 100644 (file)
@@ -387,6 +387,11 @@ extern int board_pci_host_broken(void);
 #define CONFIG_PQ_MDS_PIB      1 /* PQ MDS Platform IO Board */
 
 #define CONFIG_HAS_FSL_DR_USB  1 /* fixup device tree for the DR USB */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 
 #define CONFIG_PCI_PNP         /* do pci plug-and-play */
 
index 1d1f4c0e2224b29769ee462d1bca7af325809a76..8ed0f7c21afee03ee22fb1ab50c4e93860a8cf6e 100644 (file)
 #define CONFIG_ENV_OVERWRITE
 
 #define CONFIG_HAS_FSL_DR_USB
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 
 #define CONFIG_NETDEV          "eth1"
 
diff --git a/include/configs/MUSENKI.h b/include/configs/MUSENKI.h
deleted file mode 100644 (file)
index c5c9290..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- *
- * Configuration settings for the MUSENKI board.
- *
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8245         1
-#define CONFIG_MUSENKI         1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                9600
-
-#define CONFIG_BOOTDELAY       5
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-
-/*
- * Miscellaneous configurable options
- */
-#undef CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-
-/* Print Buffer Size
- */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     8               /* Max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x00100000      /* Default load address         */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#undef CONFIG_PCI_PNP
-
-
-#define CONFIG_TULIP
-
-#define PCI_ENET0_IOADDR               0x80000000
-#define PCI_ENET0_MEMADDR              0x80000000
-#define PCI_ENET1_IOADDR               0x81000000
-#define PCI_ENET1_MEMADDR              0x81000000
-
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE      0x00000000
-
-#define CONFIG_SYS_FLASH_BASE0_PRELIM      0xFF800000      /* FLASH bank on RCS#0 */
-#define CONFIG_SYS_FLASH_BASE1_PRELIM      0xFF000000      /* FLASH bank on RCS#1 */
-#define CONFIG_SYS_FLASH_BASE  CONFIG_SYS_FLASH_BASE0_PRELIM
-
-/* even though FLASHP_BASE is FF800000, with 4MB is RCS0, the
- * reset vector is actually located at FFB00100, but the 8245
- * takes care of us.
- */
-#define CONFIG_SYS_RESET_ADDRESS   0xFFF00100
-
-#define CONFIG_SYS_EUMB_ADDR       0xFC000000
-
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN     (256 << 10) /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN      (128 << 10) /* Reserve 128 kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START   0x00004000  /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END     0x02000000  /* 0 ... 32 MB in DRAM          */
-
-       /* Maximum amount of RAM.
-        */
-#define CONFIG_SYS_MAX_RAM_SIZE    0x08000000  /* 0 .. 128 MB of (S)DRAM */
-
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-#undef CONFIG_SYS_RAMBOOT
-#else
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_EUMB_ADDR + 0x4500)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_EUMB_ADDR + 0x4600)
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- */
-
-/* #define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE */
-#define CONFIG_SYS_INIT_RAM_ADDR     0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE      0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET  (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- * For the detail description refer to the MPC8240 user's manual.
- */
-
-#define CONFIG_SYS_CLK_FREQ  33333333  /* external frequency to pll */
-
-       /* Bit-field values for MCCR1.
-        */
-#define CONFIG_SYS_ROMNAL          7
-#define CONFIG_SYS_ROMFAL          11
-#define CONFIG_SYS_DBUS_SIZE       0x3
-
-       /* Bit-field values for MCCR2.
-        */
-#define CONFIG_SYS_TSWAIT          0x5             /* Transaction Start Wait States timer */
-#define CONFIG_SYS_REFINT          0x400           /* Refresh interval FIXME: was 0t430                */
-
-       /* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4.
-        */
-#define CONFIG_SYS_BSTOPRE         121
-
-       /* Bit-field values for MCCR3.
-        */
-#define CONFIG_SYS_REFREC          8       /* Refresh to activate interval */
-
-       /* Bit-field values for MCCR4.
-        */
-#define CONFIG_SYS_PRETOACT        3       /* Precharge to activate interval FIXME: was 2      */
-#define CONFIG_SYS_ACTTOPRE        5       /* Activate to Precharge interval FIXME: was 5      */
-#define CONFIG_SYS_ACTORW          3           /* FIXME was 2 */
-#define CONFIG_SYS_SDMODE_CAS_LAT  3       /* SDMODE CAS latancy */
-#define CONFIG_SYS_SDMODE_WRAP     0       /* SDMODE wrap type */
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER 1
-#define CONFIG_SYS_EXTROM          1
-#define CONFIG_SYS_REGDIMM         0
-
-#define CONFIG_SYS_PGMAX           0x32 /* how long the 8240 reatins the currently accessed page in memory FIXME: was 0x32*/
-
-#define CONFIG_SYS_SDRAM_DSCD  0x20    /* SDRAM data in sample clock delay - note bottom 3 bits MUST be 0 */
-
-/* Memory bank settings.
- * Only bits 20-29 are actually used from these vales to set the
- * start/end addresses. The upper two bits will always be 0, and the lower
- * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
- * address. Refer to the MPC8240 book.
- */
-
-#define CONFIG_SYS_BANK0_START     0x00000000
-#define CONFIG_SYS_BANK0_END       (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE    1
-#define CONFIG_SYS_BANK1_START     0x3ff00000
-#define CONFIG_SYS_BANK1_END       0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE    0
-#define CONFIG_SYS_BANK2_START     0x3ff00000
-#define CONFIG_SYS_BANK2_END       0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE    0
-#define CONFIG_SYS_BANK3_START     0x3ff00000
-#define CONFIG_SYS_BANK3_END       0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE    0
-#define CONFIG_SYS_BANK4_START     0x3ff00000
-#define CONFIG_SYS_BANK4_END       0x3fffffff
-#define CONFIG_SYS_BANK4_ENABLE    0
-#define CONFIG_SYS_BANK5_START     0x3ff00000
-#define CONFIG_SYS_BANK5_END       0x3fffffff
-#define CONFIG_SYS_BANK5_ENABLE    0
-#define CONFIG_SYS_BANK6_START     0x3ff00000
-#define CONFIG_SYS_BANK6_END       0x3fffffff
-#define CONFIG_SYS_BANK6_ENABLE    0
-#define CONFIG_SYS_BANK7_START     0x3ff00000
-#define CONFIG_SYS_BANK7_END       0x3fffffff
-#define CONFIG_SYS_BANK7_ENABLE    0
-
-#define CONFIG_SYS_ODCR            0xff
-
-#define CONFIG_SYS_IBAT0L  (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U  (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT3L  (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U  (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L  CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U  CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L  CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U  CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L  CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U  CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ       (8 << 20)   /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* Max number of flash banks            */
-#define CONFIG_SYS_MAX_FLASH_SECT      64      /* Max number of sectors per flash      */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms) */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms) */
-
-
-       /* Warining: environment is not EMBEDDED in the U-Boot code.
-        * It's stored in flash separately.
-        */
-#define CONFIG_ENV_IS_IN_FLASH     1
-#define CONFIG_ENV_ADDR                0xFFFF0000
-#define CONFIG_ENV_SIZE                0x00010000 /* Size of the Environment           */
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* Size of the Environment Sector       */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value        */
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/MVBLUE.h b/include/configs/MVBLUE.h
deleted file mode 100644 (file)
index aa2d9c0..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define MV_VERSION     "v0.2.0"
-
-/* LED0 = Power , LED1 = Error , LED2-5 = error code, LED6-7=00 -->PPCBoot error */
-#define ERR_NONE               0
-#define ERR_ENV                        1
-#define ERR_BOOTM_BADMAGIC     2
-#define ERR_BOOTM_BADCRC       3
-#define ERR_BOOTM_GUNZIP       4
-#define ERR_BOOTP_TIMEOUT      5
-#define ERR_DHCP               6
-#define ERR_TFTP               7
-#define ERR_NOLAN              8
-#define ERR_LANDRV             9
-
-#define CONFIG_BOARD_TYPES     1
-#define MVBLUE_BOARD_BOX       1
-#define MVBLUE_BOARD_LYNX      2
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-#define CONFIG_SYS_LDSCRIPT    "board/mvblue/u-boot.lds"
-
-#if 0
-#define ERR_LED(code)  do { if (code) \
-               *(volatile char *)(0xff000003) = ( 3 | (code<<4) ) & 0xf3; \
-       else \
-               *(volatile char *)(0xff000003) = ( 1 ); \
-} while(0)
-#else
-#define ERR_LED(code)
-#endif
-
-#define CONFIG_MPC8245         1
-#define CONFIG_MVBLUE          1
-
-#define CONFIG_CLOCKS_IN_MHZ   1
-
-#define CONFIG_BOARD_TYPES     1
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOT_RETRY_TIME -1
-
-#define CONFIG_AUTOBOOT_KEYED
-#define CONFIG_AUTOBOOT_PROMPT         \
-       "autoboot in %d seconds (stop with 's')...\n", bootdelay
-#define CONFIG_AUTOBOOT_STOP_STR       "s"
-#define CONFIG_ZERO_BOOTDELAY_CHECK
-#define CONFIG_RESET_TO_RETRY          60
-
-
-/*
- * Command line configuration.
- */
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_BOOTD
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ECHO
-#define CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_FLASH
-#define CONFIG_CMD_IMI
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_RUN
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_NISDOMAIN
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_BOOTP_NTPSERVER
-#define CONFIG_BOOTP_TIMEOFFSET
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     16              /* Max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x00100000      /* Default load address                 */
-
-#define CONFIG_BOOTCOMMAND     "run nfsboot"
-#define CONFIG_BOOTARGS                        "root=/dev/mtdblock5 ro rootfstype=jffs2"
-
-#define CONFIG_NFSBOOTCOMMAND  "bootp; run nfsargs addcons;bootm"
-
-#define CONFIG_EXTRA_ENV_SETTINGS                      \
-       "console_nr=0\0"                                \
-    "dhcp_client_id=mvBOX-XP\0"                                \
-    "dhcp_vendor-class-identifier=mvBOX\0"             \
-    "adminboot=setenv bootargs root=/dev/mtdblock5 rw rootfstype=jffs2;run addcons;bootm ffc00000\0"   \
-    "flashboot=setenv bootargs root=/dev/mtdblock5 ro rootfstype=jffs2;run addcons;bootm ffc00000\0"   \
-    "safeboot=setenv bootargs root=/dev/mtdblock2 rw rootfstype=cramfs;run addcons;bootm ffc00000\0"   \
-    "hdboot=setenv bootargs root=/dev/hda1;run addcons;bootm ffc00000\0"       \
-       "nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-                       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off\0"   \
-       "addcons=setenv bootargs ${bootargs} console=ttyS${console_nr},${baudrate}N8\0" \
-    "mv_version=" MV_VERSION "\0"      \
-       "bootretry=30\0"
-
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_PCI
-#define CONFIG_PCI_INDIRECT_BRIDGE
-#define CONFIG_PCI_PNP
-#define CONFIG_PCI_SCAN_SHOW
-
-#define CONFIG_NET_RETRY_COUNT         5
-
-#define CONFIG_TULIP
-#define CONFIG_TULIP_FIX_DAVICOM       1
-#define CONFIG_ETHADDR                 b6:b4:45:eb:fb:c0
-
-#define CONFIG_HW_WATCHDOG
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE      0x00000000
-
-#define CONFIG_SYS_FLASH_BASE      0xFFF00000
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE
-
-#define CONFIG_SYS_RESET_ADDRESS   0xFFF00100
-#define CONFIG_SYS_EUMB_ADDR       0xFC000000
-
-#define CONFIG_SYS_MONITOR_LEN     0x00100000
-#define CONFIG_SYS_MALLOC_LEN      (512 << 10) /* Reserve some kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START   0x00100000  /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END     0x00800000  /* 1M ... 8M in DRAM            */
-
-/* Maximum amount of RAM.  */
-#define CONFIG_SYS_MAX_RAM_SIZE    0x10000000  /* 0 .. 256MB of (S)DRAM */
-
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-#undef CONFIG_SYS_RAMBOOT
-#else
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_SYS_ISA_IO      0xFE000000
-
-/*
- * serial configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#define CONFIG_SYS_NS16550_CLK     get_bus_freq(0)
-
-#define CONFIG_SYS_NS16550_COM1    (CONFIG_SYS_EUMB_ADDR + 0x4500)
-#define CONFIG_SYS_NS16550_COM2    (CONFIG_SYS_EUMB_ADDR + 0x4600)
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- */
-#define CONFIG_SYS_INIT_RAM_ADDR     0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE      0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET   (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- * For the detail description refer to the MPC8240 user's manual.
- */
-
-#define CONFIG_SYS_CLK_FREQ  33000000
-
-/* Bit-field values for MCCR1.  */
-#define CONFIG_SYS_ROMNAL      7
-#define CONFIG_SYS_ROMFAL      11
-
-/* Bit-field values for MCCR2.  */
-#define CONFIG_SYS_TSWAIT      0x5
-#define CONFIG_SYS_REFINT      430
-
-/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4.  */
-#define CONFIG_SYS_BSTOPRE     121
-
-/* Bit-field values for MCCR3.  */
-#define CONFIG_SYS_REFREC      8
-
-/* Bit-field values for MCCR4.  */
-#define CONFIG_SYS_PRETOACT    3
-#define CONFIG_SYS_ACTTOPRE    5
-#define CONFIG_SYS_ACTORW      3
-#define CONFIG_SYS_SDMODE_CAS_LAT  3
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER 1
-#define CONFIG_SYS_EXTROM      1
-#define CONFIG_SYS_REGDIMM     0
-#define CONFIG_SYS_DBUS_SIZE2  1
-#define CONFIG_SYS_SDMODE_WRAP 0
-
-#define CONFIG_SYS_PGMAX       0x32
-#define CONFIG_SYS_SDRAM_DSCD  0x20
-
-/* Memory bank settings.
- * Only bits 20-29 are actually used from these vales to set the
- * start/end addresses. The upper two bits will always be 0, and the lower
- * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
- * address. Refer to the MPC8240 book.
- */
-
-#define CONFIG_SYS_BANK0_START     0x00000000
-#define CONFIG_SYS_BANK0_END       (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE    1
-#define CONFIG_SYS_BANK1_START     0x3ff00000
-#define CONFIG_SYS_BANK1_END       0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE    0
-#define CONFIG_SYS_BANK2_START     0x3ff00000
-#define CONFIG_SYS_BANK2_END       0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE    0
-#define CONFIG_SYS_BANK3_START     0x3ff00000
-#define CONFIG_SYS_BANK3_END       0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE    0
-#define CONFIG_SYS_BANK4_START     0x3ff00000
-#define CONFIG_SYS_BANK4_END       0x3fffffff
-#define CONFIG_SYS_BANK4_ENABLE    0
-#define CONFIG_SYS_BANK5_START     0x3ff00000
-#define CONFIG_SYS_BANK5_END       0x3fffffff
-#define CONFIG_SYS_BANK5_ENABLE    0
-#define CONFIG_SYS_BANK6_START     0x3ff00000
-#define CONFIG_SYS_BANK6_END       0x3fffffff
-#define CONFIG_SYS_BANK6_ENABLE    0
-#define CONFIG_SYS_BANK7_START     0x3ff00000
-#define CONFIG_SYS_BANK7_END       0x3fffffff
-#define CONFIG_SYS_BANK7_ENABLE    0
-
-#define CONFIG_SYS_ODCR            0xff
-
-#define CONFIG_SYS_IBAT0L  (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U  (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_IBAT3L  (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U  (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L  CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U  CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L  CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U  CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L  CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U  CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ       (8 << 20)   /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#undef  CONFIG_SYS_FLASH_PROTECTION
-#define CONFIG_SYS_MAX_FLASH_BANKS             1       /* Max number of flash banks            */
-#define CONFIG_SYS_MAX_FLASH_SECT              63      /* Max number of sectors per flash      */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    12000
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000
-
-
-#define CONFIG_ENV_IS_IN_FLASH
-
-#define CONFIG_ENV_OFFSET              0x00010000
-#define CONFIG_ENV_SIZE                0x00010000
-#define CONFIG_ENV_SECT_SIZE   0x00010000
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     5       /* log base 2 of the above value        */
-#endif
-#endif /* __CONFIG_H */
diff --git a/include/configs/NETVIA.h b/include/configs/NETVIA.h
deleted file mode 100644 (file)
index 4a0fa9e..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * U-Boot port on NetVia board
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC850          1       /* This is a MPC850 CPU         */
-#define CONFIG_NETVIA          1       /* ...on a NetVia board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#else
-#define CONFIG_8xx_CONS_NONE
-#define CONFIG_MAX3100_SERIAL
-#endif
-
-#define CONFIG_BAUDRATE                115200  /* console baudrate = 115kbps   */
-
-#define CONFIG_XIN             10000000
-#define CONFIG_8xx_GCLK_FREQ   80000000
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-#undef CONFIG_CLOCKS_IN_MHZ    /* clocks NOT passsed to Linux in MHz */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "tftpboot; "                                                            \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-#define CONFIG_LOADS_ECHO      0       /* echo off for serial download */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define        CONFIG_STATUS_LED       1       /* Status LED enabled           */
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-#define CONFIG_BOARD_SPECIFIC_LED      /* version has board specific leds */
-#endif
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_NISDOMAIN
-
-
-#undef CONFIG_MAC_PARTITION
-#undef CONFIG_DOS_PARTITION
-
-#define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PING
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-/* #define CONFIG_CMD_NAND */ /* disabled */
-#endif
-
-
-#define CONFIG_BOARD_EARLY_INIT_F 1
-#define CONFIG_MISC_INIT_R
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0300000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0700000       /* 3 ... 7 MB in DRAM   */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFF000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x3000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#if defined(DEBUG)
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (192 << 10)     /* Reserve 192 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      8       /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_SECT_SIZE   0x10000
-
-#define        CONFIG_ENV_ADDR         (CONFIG_SYS_FLASH_BASE + 0x60000)
-#define        CONFIG_ENV_SIZE         0x4000
-
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_SYS_FLASH_BASE + 0x70000)
-#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#ifndef        CONFIG_CAN_DRIVER
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01 | SIUMCR_FRC)
-#else  /* we must activate GPL5 in the SIUMCR for CAN */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01 | SIUMCR_FRC)
-#endif /* CONFIG_CAN_DRIVER */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- *
- *
- *-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-
-#define SCCR_MASK      SCCR_EBDF11
-
-#if CONFIG_8xx_GCLK_FREQ == 50000000
-
-#define CONFIG_SYS_PLPRCR      ( ((5 - 1) << PLPRCR_MF_SHIFT) | PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-#elif CONFIG_8xx_GCLK_FREQ == 80000000
-
-#define CONFIG_SYS_PLPRCR      ( ((8 - 1) << PLPRCR_MF_SHIFT) | PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00 | SCCR_EBDF01)
-
-#endif
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-/*#define      CONFIG_SYS_DER  0x2002000F*/
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM  | OR_BI | OR_SCY_5_CLK | OR_TRLX)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR3 and OR3 (SDRAM)
- *
- */
-#define SDRAM_BASE3_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     (OR_CSNT_SAM | OR_G5LS)
-
-#define CONFIG_SYS_OR3_PRELIM  ((0xFFFFFFFFLU & ~(SDRAM_MAX_SIZE - 1)) | CONFIG_SYS_OR_TIMING_SDRAM)
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_PS_32 | BR_V)
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA    208
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-/* Ethernet at SCC2 */
-#define CONFIG_SCC2_ENET
-
-/****************************************************************/
-
-#define DSP_SIZE       0x00010000      /* 64K */
-#define FPGA_SIZE      0x00010000      /* 64K */
-
-#define DSP0_BASE      0xF1000000
-#define DSP1_BASE      (DSP0_BASE + DSP_SIZE)
-#define FPGA_BASE      (DSP1_BASE + DSP_SIZE)
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-
-#define ER_SIZE                0x00010000      /* 64K */
-#define ER_BASE                (FPGA_BASE + FPGA_SIZE)
-
-#define NAND_SIZE      0x00010000      /* 64K */
-#define NAND_BASE      (ER_BASE + ER_SIZE)
-
-#endif
-
-/****************************************************************/
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-
-#define STATUS_LED_BIT         0x00000001              /* bit 31 */
-#define STATUS_LED_PERIOD      (CONFIG_SYS_HZ / 2)
-#define STATUS_LED_STATE       STATUS_LED_BLINKING
-
-#define STATUS_LED_BIT1                0x00000002              /* bit 30 */
-#define STATUS_LED_PERIOD1     (CONFIG_SYS_HZ / 2)
-#define STATUS_LED_STATE1      STATUS_LED_OFF
-
-#define STATUS_LED_ACTIVE      0               /* LED on for bit == 0  */
-#define STATUS_LED_BOOT                0               /* LED 0 used for boot status */
-
-#endif
-
-
-/*****************************************************************************/
-
-#ifndef __ASSEMBLY__
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-
-/* LEDs */
-
-/* last value written to the external register; we cannot read back */
-extern unsigned int last_er_val;
-
-/* led_id_t is unsigned long mask */
-typedef unsigned int led_id_t;
-
-static inline void __led_init(led_id_t mask, int state)
-{
-       unsigned int new_er_val;
-
-       if (state)
-               new_er_val = last_er_val & ~mask;
-       else
-               new_er_val = last_er_val |  mask;
-
-       *(volatile unsigned int *)ER_BASE = new_er_val;
-       last_er_val = new_er_val;
-}
-
-static inline void __led_toggle(led_id_t mask)
-{
-       unsigned int new_er_val;
-
-       new_er_val = last_er_val ^ mask;
-       *(volatile unsigned int *)ER_BASE = new_er_val;
-       last_er_val = new_er_val;
-}
-
-static inline void __led_set(led_id_t mask, int state)
-{
-       unsigned int new_er_val;
-
-       if (state)
-               new_er_val = last_er_val & ~mask;
-       else
-               new_er_val = last_er_val |  mask;
-
-       *(volatile unsigned int *)ER_BASE = new_er_val;
-       last_er_val = new_er_val;
-}
-
-/* MAX3100 console */
-#define MAX3100_SPI_RXD_PORT   (((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbdat)
-#define MAX3100_SPI_RXD_BIT    0x00000008
-
-#define MAX3100_SPI_TXD_PORT   (((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbdat)
-#define MAX3100_SPI_TXD_BIT    0x00000004
-
-#define MAX3100_SPI_CLK_PORT   (((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbdat)
-#define MAX3100_SPI_CLK_BIT    0x00000002
-
-#define MAX3100_CS_PORT                (((volatile immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pddat)
-#define MAX3100_CS_BIT         0x0010
-
-#endif
-
-#endif
-
-/*************************************************************************************************/
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/NSCU.h b/include/configs/NSCU.h
deleted file mode 100644 (file)
index a9c649a..0000000
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
- * (C) Copyright 2000-2008
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC855          1       /* This is a MPC855 CPU         */
-#define CONFIG_TQM855M         1       /* ...on a TQM8xxM module       */
-#define CONFIG_NSCU            1
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define        CONFIG_8xx_CONS_SCC1    1       /* Console is on SMC1           */
-#define CONFIG_SYS_SMC_RXBUFLEN        128
-#define CONFIG_SYS_MAXIDLE     10
-
-#define        CONFIG_66MHz            1       /* running at 66 MHz, 1:1 clock */
-
-#define CONFIG_BAUDRATE                115200  /* console baudrate = 115kbps   */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "flash_nfs=run nfsargs addip;"                                  \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip;"                                 \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip;bootm\0"     \
-       "rootpath=/opt/eldk/ppc_8xx\0"                                  \
-       "hostname=NSCU\0"                                               \
-       "bootfile=${hostname}/uImage\0"                                 \
-       "kernel_addr=40080000\0"                                        \
-       "ramdisk_addr=40180000\0"                                       \
-       "u-boot=${hostname}/u-image.bin\0"                              \
-       "load=tftp 200000 ${u-boot}\0"                                  \
-       "update=prot off 40000000 +${filesize};"                        \
-               "era 40000000 +${filesize};"                            \
-               "cp.b 200000 40000000 ${filesize};"                     \
-               "sete filesize;save\0"                                  \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_MISC_INIT_R       1
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define        CONFIG_STATUS_LED       1       /* Status LED enabled           */
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
-
-#define        CONFIG_ISP1362_USB              /* ISP1362 USB OTG controller   */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-
-#define CONFIG_NETCONSOLE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history
-*/
-#define        CONFIG_SYS_HUSH_PARSER          1       /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE               1024    /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE               256     /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS              16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-
-/* use CFI flash driver */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE+flash_info[0].size }
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT      71      /* max number of sectors on one chip */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x8000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET+CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-#define        CONFIG_SYS_USE_PPCENV                   /* Environment embedded in sect .ppcenv */
-
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#define CONFIG_SYS_HWINFO_OFFSET       0x0003FFC0      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000040      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x54514D38      /* 'TQM8' */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#ifndef        CONFIG_CAN_DRIVER
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#else  /* we must activate GPL5 in the SIUMCR for CAN */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#endif /* CONFIG_CAN_DRIVER */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-/* NSCU use both slots, SLOT_A as "primary". */
-#define        CONFIG_PCMCIA_SLOT_A 1
-
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-#define PCMCIA_MEM_WIN_NO      8 /* override default 4 in pcmcia.h */
-#define        PCMCIA_SOCKETS_NO       2 /* we have two sockets */
-#undef NSCU_OE_INV             /* PCMCIA_GCRX_CXOE was inverted on early boards */
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define        CONFIG_IDE_8xx_PCCARD   1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          2       /* max. 2 IDE buses             */
-#define CONFIG_SYS_IDE_MAXDEVICE       4       /* max. 2 drives per IDE bus    */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-#define CONFIG_SYS_ATA_IDE1_OFFSET     (4 * CONFIG_SYS_PCMCIA_MEM_SIZE) /* starts @ 4th window */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \
-                                OR_SCY_3_CLK | OR_EHTR | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_V )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x20000000      /* SDRAM bank #1        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-#ifndef        CONFIG_CAN_DRIVER
-#define        CONFIG_SYS_OR3_PRELIM   CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-#else  /* CAN uses CS3#, so we can have only one SDRAM bank anyway */
-#define        CONFIG_SYS_CAN_BASE             0xC0000000      /* CAN mapped at 0xC0000000     */
-#define CONFIG_SYS_CAN_OR_AM           0xFFFF8000      /* 32 kB address mask           */
-#define CONFIG_SYS_OR3_CAN             (CONFIG_SYS_CAN_OR_AM | OR_G5LA | OR_BI)
-#define CONFIG_SYS_BR3_CAN             ((CONFIG_SYS_CAN_BASE & BR_BA_MSK) | \
-                                       BR_PS_8 | BR_MS_UPMB | BR_V )
-#endif /* CONFIG_CAN_DRIVER */
-
-#ifdef CONFIG_ISP1362_USB
-#define        CONFIG_SYS_ISP1362_BASE 0xD0000000      /* ISP1362 mapped at 0xD0000000 */
-#define CONFIG_SYS_ISP1362_OR_AM       0xFFFF8000      /* 32 kB address mask           */
-#define CONFIG_SYS_OR5_ISP1362         (CONFIG_SYS_ISP1362_OR_AM | OR_CSNT_SAM | \
-                                OR_ACS_DIV2       | OR_BI       | OR_SCY_5_CLK)
-#define CONFIG_SYS_BR5_ISP1362         ((CONFIG_SYS_ISP1362_BASE & BR_BA_MSK) | \
-                                BR_PS_16          | BR_MS_GPCM | BR_V )
-#endif /* CONFIG_ISP1362_USB */
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096  Rows from SDRAM example configuration
- * 1000  factor s -> ms
- *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4  Number of refresh cycles per period
- *   64  Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- * 50 MHz => 50.000.000 / Divider =  98
- * 66 Mhz => 66.000.000 / Divider = 129
- * 80 Mhz => 80.000.000 / Divider = 156
- */
-
-#define CONFIG_SYS_PTA_PER_CLK ((4096 * 32 * 1000) / (4 * 64))
-#define CONFIG_SYS_MAMR_PTA    98
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-#undef CONFIG_SCC1_ENET
-#define CONFIG_FEC_ENET
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-#define CONFIG_HWCONFIG                1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/OCRTC.h b/include/configs/OCRTC.h
deleted file mode 100644 (file)
index 4680afe..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_OCRTC           1       /* ...on a OCRTC board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFD0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-
-#define CONFIG_SYS_CLK_FREQ    33000000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND "go fff00100"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_EEPROM
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure as pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_AUTO  /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-
-#define CONFIG_PCI_BOOTDELAY   1       /* enable pci bootdelay variable*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0410  /* PCI Device ID: OCRTC         */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFD0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (192 * 1024)    /* Reserve 192 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#if 0 /* Use NVRAM for environment variables */
-/*-----------------------------------------------------------------------
- * NVRAM organization
- */
-#define CONFIG_ENV_IS_IN_NVRAM 1       /* use NVRAM for environment vars       */
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xf0200000              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          (32*1024)               /* NVRAM size           */
-#define CONFIG_ENV_SIZE                0x1000          /* Size of Environment vars     */
-#define CONFIG_ENV_ADDR                \
-       (CONFIG_SYS_NVRAM_BASE_ADDR+CONFIG_SYS_NVRAM_SIZE-CONFIG_ENV_SIZE)      /* Env  */
-#define CONFIG_SYS_NVRAM_VXWORKS_OFFS  0x6900          /* Offset for VxWorks eth-addr  */
-
-#else /* Use EEPROM for environment variables */
-
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x300   /* 768 bytes may be used for env vars */
-                                  /* total size of a CAT24WC08 is 1024 bytes */
-#endif
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC08) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF800000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFFC00000      /* FLASH bank #1        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1) initialization                                 */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 2 (PLD - FPGA-boot) initialization                              */
-#define CONFIG_SYS_EBC_PB2AP           0x02015480  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */
-                                           /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x0,SOR=0x1,BEM=0x0,PEN=0x0*/
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (PLD - OSL) initialization                                    */
-#define CONFIG_SYS_EBC_PB3AP           0x02015480  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */
-                                           /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x0,SOR=0x1,BEM=0x0,PEN=0x0*/
-#define CONFIG_SYS_EBC_PB3CR           0xF0118000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 4 (Spartan2 1) initialization                                   */
-#define CONFIG_SYS_EBC_PB4AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */
-                                           /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/
-#define CONFIG_SYS_EBC_PB4CR           0xF209C000  /* BAS=0xF20,BS=16MB,BU=R/W,BW=32bit*/
-
-/* Memory Bank 5 (Spartan2 2) initialization                                   */
-#define CONFIG_SYS_EBC_PB5AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */
-                                           /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/
-#define CONFIG_SYS_EBC_PB5CR           0xF309C000  /* BAS=0xF30,BS=16MB,BU=R/W,BW=32bit*/
-
-/* Memory Bank 6 (Virtex 1) initialization                                     */
-#define CONFIG_SYS_EBC_PB6AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */
-                                           /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/
-#define CONFIG_SYS_EBC_PB6CR           0xF409A000  /* BAS=0xF40,BS=16MB,BU=R/W,BW=16bit*/
-
-/* Memory Bank 7 (Virtex 2) initialization                                     */
-#define CONFIG_SYS_EBC_PB7AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */
-                                           /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/
-#define CONFIG_SYS_EBC_PB7CR           0xF509A000  /* BAS=0xF50,BS=16MB,BU=R/W,BW=16bit*/
-
-
-#define CONFIG_SYS_VXWORKS_MAC_PTR     0x00000000      /* Pass Ethernet MAC to VxWorks */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
index d378dbd1a1e2ccb4537257a329e4ced51cc01599..cd6a39c65714825c3224f267c346c5f2a25ff378 100644 (file)
@@ -14,6 +14,8 @@
 #ifdef CONFIG_36BIT
 #define CONFIG_PHYS_64BIT
 #endif
+#define        CONFIG_SYS_GENERIC_BOARD
+#define        CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_P1010
 #define CONFIG_E500                    /* BOOKE e500 family */
index 54e2569ac8bba3fc5fa65e976a87cb337a8055d7..437111070da8076af46cbf610e7022cba8ad519f 100644 (file)
@@ -11,6 +11,9 @@
 
 #include "../board/freescale/common/ics307_clk.h"
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifdef CONFIG_36BIT
 #define CONFIG_PHYS_64BIT
 #endif
 #define CONFIG_PHY_GIGE                /* Include GbE speed/duplex detection */
 #endif
 
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#ifdef CONFIG_PHYS_64BIT
+#define MTDIDS_DEFAULT "nor0=fe8000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=fe8000000.nor:48m(ramdisk)," \
+                       "14m(diagnostic),2m(dink),6m(kernel),58112k(fs)," \
+                       "512k(dtb),768k(u-boot)"
+#else
+#define MTDIDS_DEFAULT "nor0=e8000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=e8000000.nor:48m(ramdisk)," \
+                       "14m(diagnostic),2m(dink),6m(kernel),58112k(fs)," \
+                       "512k(dtb),768k(u-boot)"
+#endif
+
 /*
  * Environment
  */
index ba3da06dfb062f1bd24697132131efc8890e6c6e..a8b7817a8ef7c78926be217f4c6653f796fb06bb 100644 (file)
@@ -10,6 +10,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xeff40000
 #endif
@@ -344,9 +347,25 @@ extern unsigned long get_clock_freq(void);
 #define CONFIG_SYS_QMAN_MEM_BASE       0xff000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       CONFIG_SYS_QMAN_MEM_BASE
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 #define CONFIG_SYS_BMAN_MEM_BASE       0xff200000
 #define CONFIG_SYS_BMAN_MEM_PHYS       CONFIG_SYS_BMAN_MEM_BASE
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
 
 /* For FM */
 #define CONFIG_SYS_DPAA_FMAN
@@ -374,6 +393,49 @@ extern unsigned long get_clock_freq(void);
 #endif
 
 #define CONFIG_EXTRA_ENV_SETTINGS      \
+       "netdev=eth0\0"                                         \
+       "uboot=" __stringify(CONFIG_UBOOTPATH) "\0"             \
+       "loadaddr=1000000\0"                                    \
+       "ubootaddr=" __stringify(CONFIG_SYS_TEXT_BASE) "\0"     \
+       "tftpflash=tftpboot $loadaddr $uboot; "                 \
+               "protect off $ubootaddr +$filesize; "           \
+               "erase $ubootaddr +$filesize; "                 \
+               "cp.b $loadaddr $ubootaddr $filesize; "         \
+               "protect on $ubootaddr +$filesize; "            \
+               "cmp.b $loadaddr $ubootaddr $filesize\0"        \
+       "consoledev=ttyS0\0"                                    \
+       "ramdiskaddr=2000000\0"                                 \
+       "ramdiskfile=rootfs.ext2.gz.uboot\0"                    \
+       "fdtaddr=c00000\0"                                      \
+       "fdtfile=p1023rdb.dtb\0"                                \
+       "othbootargs=ramdisk_size=600000\0"                     \
+       "bdev=sda1\0"                                           \
        "hwconfig=usb1:dr_mode=host,phy_type=ulpi\0"
 
+#define CONFIG_HDBOOT                                  \
+       "setenv bootargs root=/dev/$bdev rw "           \
+       "console=$consoledev,$baudrate $othbootargs;"   \
+       "tftp $loadaddr $bootfile;"                     \
+       "tftp $fdtaddr $fdtfile;"                       \
+       "bootm $loadaddr - $fdtaddr"
+
+#define CONFIG_NFSBOOTCOMMAND                                          \
+       "setenv bootargs root=/dev/nfs rw "                             \
+       "nfsroot=$serverip:$rootpath "                                  \
+       "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
+       "console=$consoledev,$baudrate $othbootargs;"                   \
+       "tftp $loadaddr $bootfile;"                                     \
+       "tftp $fdtaddr $fdtfile;"                                       \
+       "bootm $loadaddr - $fdtaddr"
+
+#define CONFIG_RAMBOOTCOMMAND                                          \
+       "setenv bootargs root=/dev/ram rw "                             \
+       "console=$consoledev,$baudrate $othbootargs;"                   \
+       "tftp $ramdiskaddr $ramdiskfile;"                               \
+       "tftp $loadaddr $bootfile;"                                     \
+       "tftp $fdtaddr $fdtfile;"                                       \
+       "bootm $loadaddr $ramdiskaddr $fdtaddr"
+
+#define CONFIG_BOOTCOMMAND             CONFIG_RAMBOOTCOMMAND
+
 #endif /* __CONFIG_H */
index 2e11aaa13cd35156e605cf29723b6f6a6ff2d9cb..d8d30bb2805d3f949e3c261d2d3b875b6a5a5523 100644 (file)
@@ -13,6 +13,8 @@
 
 #define CONFIG_P2041RDB
 #define CONFIG_PHYS_64BIT
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 #define CONFIG_PPC_P2041
 
 #ifdef CONFIG_RAMBOOT_PBL
@@ -489,6 +491,14 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_BMAN_MEM_PHYS       CONFIG_SYS_BMAN_MEM_BASE
 #endif
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    10
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf4200000
 #ifdef CONFIG_PHYS_64BIT
@@ -497,6 +507,14 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_QMAN_MEM_PHYS       CONFIG_SYS_QMAN_MEM_BASE
 #endif
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
index 371485fec0dd327c6eb88706356bfd7ea5397a12..e4a031aefadffbbcb11c06f2c3ba3a6871db72cf 100644 (file)
@@ -17,6 +17,7 @@
 #define CONFIG_MMC
 #define CONFIG_NAND_FSL_ELBC
 #define CONFIG_PCIE3
+#define CONFIG_FSL_SATA_V2
 #define CONFIG_SYS_FSL_RAID_ENGINE
 
 #define CONFIG_ICS307_REFCLK_HZ                25000000  /* ICS307 ref clk freq */
diff --git a/include/configs/PCI405.h b/include/configs/PCI405.h
deleted file mode 100644 (file)
index 0989407..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * (C) Copyright 2007
- * Matthias Fuchs, esd gmbh, matthias.fuchs@esd-electronics.com
- *
- * (C) Copyright 2001-2004
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_PCI405          1       /* ...on a PCI405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFD0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r() on init   */
-
-#define CONFIG_SYS_CLK_FREQ    25000000 /* external frequency to pll   */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_BAUDRATE                115200
-#define CONFIG_BOOTDELAY       0       /* autoboot after 0 seconds     */
-
-#undef CONFIG_BOOTARGS
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "mem_linux=14336k\0"                                            \
-       "optargs=panic=0\0"                                             \
-       "ramargs=setenv bootargs mem=$mem_linux root=/dev/ram rw\0"     \
-       "addcons=setenv bootargs $bootargs console=ttyS0,$baudrate $optargs\0" \
-       ""
-#define        CONFIG_BOOTCOMMAND      "run ramargs;run addcons;loadpci"
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#undef CONFIG_CMD_IMLS
-#undef CONFIG_CMD_ITEST
-#undef CONFIG_CMD_LOADB
-#undef CONFIG_CMD_LOADS
-#undef CONFIG_CMD_NET
-#undef CONFIG_CMD_NFS
-
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_EEPROM
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-#define CONFIG_PRAM            2048    /* reserve 2 MB "protected RAM" */
-
-/*
- * Miscellaneous configurable options
- */
-
-#define CONFIG_SYS_HUSH_PARSER                 /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#undef CONFIG_ZERO_BOOTDELAY_CHECK     /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure as pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_ADAPTER /* select pci host function   */
-#undef CONFIG_PCI_PNP                  /* no pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0407  /* PCI Device ID: PCI-405       */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0280  /* PCI Class Code: Network/Other*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xff000001      /* 16MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-
-#define CONFIG_SYS_PCI_PTM2LA  0xef600000      /* point to internal regs       */
-#define CONFIG_SYS_PCI_PTM2MS  0xffe00001      /* 2MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x00000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFD0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (192 * 1024)    /* Reserve 196 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x400   /* 1024 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC08 is 1024 bytes */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xf0200000              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          (32*1024)               /* NVRAM size           */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFFE00000      /* FLASH bank #0        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (NVRAM/RTC) initialization                                    */
-#define CONFIG_SYS_EBC_PB1AP           0x01005280  /* TWT=2,WBN=1,WBF=1,TH=1,SOR=1     */
-#define CONFIG_SYS_EBC_PB1CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (CAN0, 1) initialization                                      */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-/*#define CONFIG_SYS_EBC_PB2AP           0x038056C0  / * BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (FPGA internal) initialization                                        */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF041C000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=32bit */
-#define CONFIG_SYS_FPGA_BASE_ADDR      0xF0400000
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-/* FPGA internal regs */
-#define CONFIG_SYS_FPGA_MODE           0x00
-#define CONFIG_SYS_FPGA_STATUS         0x02
-#define CONFIG_SYS_FPGA_TS             0x04
-#define CONFIG_SYS_FPGA_TS_LOW         0x06
-#define CONFIG_SYS_FPGA_TS_CAP0        0x10
-#define CONFIG_SYS_FPGA_TS_CAP0_LOW    0x12
-#define CONFIG_SYS_FPGA_TS_CAP1        0x14
-#define CONFIG_SYS_FPGA_TS_CAP1_LOW    0x16
-#define CONFIG_SYS_FPGA_TS_CAP2        0x18
-#define CONFIG_SYS_FPGA_TS_CAP2_LOW    0x1a
-#define CONFIG_SYS_FPGA_TS_CAP3        0x1c
-#define CONFIG_SYS_FPGA_TS_CAP3_LOW    0x1e
-
-/* FPGA Mode Reg */
-#define CONFIG_SYS_FPGA_MODE_CF_RESET  0x0001
-#define CONFIG_SYS_FPGA_MODE_TS_IRQ_ENABLE 0x0100
-#define CONFIG_SYS_FPGA_MODE_TS_IRQ_CLEAR  0x1000
-#define CONFIG_SYS_FPGA_MODE_TS_CLEAR  0x2000
-
-/* FPGA Status Reg */
-#define CONFIG_SYS_FPGA_STATUS_DIP0    0x0001
-#define CONFIG_SYS_FPGA_STATUS_DIP1    0x0002
-#define CONFIG_SYS_FPGA_STATUS_DIP2    0x0004
-#define CONFIG_SYS_FPGA_STATUS_FLASH   0x0008
-#define CONFIG_SYS_FPGA_STATUS_TS_IRQ  0x1000
-
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       32*1024     /* 32kByte is enough for XC2S15  */
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00400000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00800000  /* FPGA done pin (ppc input)     */
-/* new INIT and DONE pins since board revision 1.2 (for PPC405GPr support)   */
-#define CONFIG_SYS_FPGA_INIT_V12       0x00008000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE_V12       0x00010000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
index 8705161158d6e6c80931927b857e9612c96037ad..a236e117a03bc2209c3967c8f30ef87bf6aeb5e0 100644 (file)
@@ -21,6 +21,8 @@
 #define CONFIG_PLU405          1       /* ...on a PLU405 board         */
 
 #define        CONFIG_SYS_TEXT_BASE    0xFFF80000
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
 #define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
diff --git a/include/configs/PM826.h b/include/configs/PM826.h
deleted file mode 100644 (file)
index 6416ad5..0000000
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#undef CONFIG_SYS_RAMBOOT
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_PM826           1       /* ...on a PM8260 module        */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xFF000000      /* Standard: boot 64-bit flash */
-#endif
-
-#undef CONFIG_DB_CR826_J30x_ON         /* J30x jumpers on D.B. carrier */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp; "                                                               \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
-#define I2C_READ       ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00010000; \
-                       else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00020000; \
-                       else    iop->pdat &= ~0x00020000
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-
-
-#define CONFIG_RTC_PCF8563
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#define CONFIG_CONS_ON_SMC             /* define if console on SMC */
-#undef  CONFIG_CONS_ON_SCC             /* define if console on SCC */
-#undef  CONFIG_CONS_NONE               /* define if console on something else*/
-#define CONFIG_CONS_INDEX      2       /* which serial channel for console */
-
-/*
- * select ethernet configuration
- *
- * if CONFIG_ETHER_ON_SCC is selected, then
- *   - CONFIG_ETHER_INDEX must be set to the channel number (1-4)
- *
- * if CONFIG_ETHER_ON_FCC is selected, then
- *   - one or more CONFIG_ETHER_ON_FCCx (x=1,2,3) must also be selected
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC       */
-#define        CONFIG_ETHER_INDEX    1         /* which SCC channel for ethernet */
-
-#define        CONFIG_ETHER_ON_FCC             /* define if ether on FCC       */
-/*
- * - Rx-CLK is CLK11
- * - Tx-CLK is CLK10
- */
-#define        CONFIG_ETHER_ON_FCC1
-# define CONFIG_SYS_CMXFCR_MASK1       (CMXFCR_FC1|CMXFCR_RF1CS_MSK|CMXFCR_TF1CS_MSK)
-#ifndef CONFIG_DB_CR826_J30x_ON
-# define CONFIG_SYS_CMXFCR_VALUE1      (CMXFCR_RF1CS_CLK11|CMXFCR_TF1CS_CLK10)
-#else
-# define CONFIG_SYS_CMXFCR_VALUE1      (CMXFCR_RF1CS_CLK11|CMXFCR_TF1CS_CLK12)
-#endif
-/*
- * - Rx-CLK is CLK15
- * - Tx-CLK is CLK14
- */
-#define        CONFIG_ETHER_ON_FCC2
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-/*
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#define CONFIG_8260_CLKIN      64000000        /* in Hz */
-
-#if defined(CONFIG_CONS_NONE) || defined(CONFIG_CONS_USE_EXTC)
-#define CONFIG_BAUDRATE                230400
-#else
-#define CONFIG_BAUDRATE                9600
-#endif
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-#ifdef CONFIG_PCI
-#define CONFIG_PCI_INDIRECT_BRIDGE
-#define CONFIG_CMD_PCI
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END 0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR    0x100000        /* default load address */
-
-#define        CONFIG_SYS_RESET_ADDRESS 0xFDFFFFFC     /* "bad" address                */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ        (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * Flash and Boot ROM mapping
- */
-#ifdef CONFIG_FLASH_32MB
-#define        CONFIG_SYS_FLASH0_BASE          0x40000000
-#define        CONFIG_SYS_FLASH0_SIZE          0x02000000
-#else
-#define        CONFIG_SYS_FLASH0_BASE          0xFF000000
-#define        CONFIG_SYS_FLASH0_SIZE          0x00800000
-#endif
-#define        CONFIG_SYS_BOOTROM_BASE 0xFF800000
-#define        CONFIG_SYS_BOOTROM_SIZE 0x00080000
-#define CONFIG_SYS_DOC_BASE            0xFF800000
-#define CONFIG_SYS_DOC_SIZE            0x00100000
-
-/* Flash bank size (for preliminary settings)
- */
-#define CONFIG_SYS_FLASH_SIZE CONFIG_SYS_FLASH0_SIZE
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of memory banks      */
-#ifdef CONFIG_FLASH_32MB
-#define CONFIG_SYS_MAX_FLASH_SECT      135     /* max num of sects on one chip */
-#else
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max num of sects on one chip */
-#endif
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000  /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-#if 0
-/* Start port with environment in flash; switch to EEPROM later */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE+0x40000)
-#define CONFIG_ENV_SIZE                0x40000
-#define CONFIG_ENV_SECT_SIZE   0x40000
-#else
-/* Final version: environment in EEPROM */
-#define CONFIG_ENV_IS_IN_EEPROM        1
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x58
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-#define CONFIG_ENV_OFFSET              512
-#define CONFIG_ENV_SIZE                (2048 - 512)
-#endif
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- *
- * if you change bits in the HRCW, you must also change the CONFIG_SYS_*
- * defines for the various registers affected by the HRCW e.g. changing
- * HRCW_DPPCxx requires you to also change CONFIG_SYS_SIUMCR.
- */
-#if defined(CONFIG_BOOT_ROM)
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_BPS01 | HRCW_CIP | HRCW_ISB100 | HRCW_BMS)
-#else
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_CIP | HRCW_ISB100 | HRCW_BMS)
-#endif
-
-/* no slaves so just fill with zeros */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- *
- * 60x SDRAM is mapped at CONFIG_SYS_SDRAM_BASE, local SDRAM
- * is mapped at SDRAM_BASE2_PRELIM.
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_FLASH0_BASE
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()*/
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-# define CONFIG_SYS_RAMBOOT
-#endif
-
-#ifdef CONFIG_PCI
-#define CONFIG_PCI_PNP
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8               /* use 8 rx buffer on eepro100  */
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU              */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                    2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI|\
-                               HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL  (HID0_ICE|HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                     5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         RMR_CSRE
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                       4-25
- *-----------------------------------------------------------------------
- */
-
-#define BCR_APD01       0x10000000
-#define CONFIG_SYS_BCR         (BCR_APD01|BCR_ETM|BCR_LETM)    /* 8260 mode */
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                             4-31
- *-----------------------------------------------------------------------
- */
-#if 0
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DPPC00|SIUMCR_APPC10|SIUMCR_CS10PC01)
-#else
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DPPC10|SIUMCR_APPC10)
-#endif
-
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                             4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                     4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                 4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                   9-8
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SCCR        (SCCR_DFBRG00)
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                         13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*
- * Init Memory Controller:
- *
- * Bank Bus     Machine PortSz  Device
- * ---- ---     ------- ------  ------
- *  0   60x     GPCM    64 bit  FLASH
- *  1   60x     SDRAM   64 bit  SDRAM
- *
- */
-
-       /* Initialize SDRAM on local bus
-        */
-#define CONFIG_SYS_INIT_LOCAL_SDRAM
-
-
-/* Minimum mask to separate preliminary
- * address ranges for CS[0:2]
- */
-#define CONFIG_SYS_MIN_AM_MASK 0xC0000000
-
-/*
- * we use the same values for 32 MB and 128 MB SDRAM
- * refresh rate = 7.73 uS (64 MHz Bus Clock)
- */
-#define CONFIG_SYS_MPTPR       0x2000
-#define CONFIG_SYS_PSRT        0x0E
-
-#define CONFIG_SYS_MRS_OFFS    0x00000000
-
-
-#if defined(CONFIG_BOOT_ROM)
-/*
- * Bank 0 - Boot ROM (8 bit wide)
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_BOOTROM_BASE & BRx_BA_MSK)|\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BOOTROM_SIZE)    |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-/*
- * Bank 1 - Flash (64 bit wide)
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-#else  /* ! CONFIG_BOOT_ROM */
-
-/*
- * Bank 0 - Flash (64 bit wide)
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-/*
- * Bank 1 - Disk-On-Chip
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_DOC_BASE & BRx_BA_MSK)     |\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_DOC_SIZE)        |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-#endif /* CONFIG_BOOT_ROM */
-
-/* Bank 2 - SDRAM
- */
-
-#ifndef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-       /* SDRAM initialization values for 8-column chips
-        */
-#define CONFIG_SYS_OR2_8COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A9             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_8COL  (PSDMR_SDAM_A13_IS_A5           |\
-                        PSDMR_BSMA_A14_A16             |\
-                        PSDMR_SDA10_PBI0_A10           |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_1W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-       /* SDRAM initialization values for 9-column chips
-        */
-#define CONFIG_SYS_OR2_9COL    (CONFIG_SYS_MIN_AM_MASK                |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A7             |\
-                        ORxS_NUMR_13)
-
-#define CONFIG_SYS_PSDMR_9COL  (PSDMR_SDAM_A14_IS_A5           |\
-                        PSDMR_BSMA_A13_A15             |\
-                        PSDMR_SDA10_PBI0_A9            |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_1W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-#define CONFIG_SYS_OR2_PRELIM   CONFIG_SYS_OR2_9COL
-#define CONFIG_SYS_PSDMR        CONFIG_SYS_PSDMR_9COL
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/PM828.h b/include/configs/PM828.h
deleted file mode 100644 (file)
index e17fbfb..0000000
+++ /dev/null
@@ -1,528 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#undef CONFIG_SYS_RAMBOOT
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_PM828           1       /* ...on a PM828 module */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0x40000000      /* Standard: boot 64-bit flash */
-#endif
-
-#undef CONFIG_DB_CR826_J30x_ON         /* J30x jumpers on D.B. carrier */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp;"                                                                \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;"    \
-       "bootm"
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
-#define I2C_READ       ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00010000; \
-                       else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00020000; \
-                       else    iop->pdat &= ~0x00020000
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-
-
-#define CONFIG_RTC_PCF8563
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#define CONFIG_CONS_ON_SMC             /* define if console on SMC */
-#undef CONFIG_CONS_ON_SCC              /* define if console on SCC */
-#undef CONFIG_CONS_NONE                /* define if console on something else*/
-#define CONFIG_CONS_INDEX      2       /* which serial channel for console */
-
-/*
- * select ethernet configuration
- *
- * if CONFIG_ETHER_ON_SCC is selected, then
- *   - CONFIG_ETHER_INDEX must be set to the channel number (1-4)
- *
- * if CONFIG_ETHER_ON_FCC is selected, then
- *   - one or more CONFIG_ETHER_ON_FCCx (x=1,2,3) must also be selected
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC       */
-#define CONFIG_ETHER_INDEX    1                /* which SCC channel for ethernet */
-
-#define CONFIG_ETHER_ON_FCC            /* define if ether on FCC       */
-/*
- * - Rx-CLK is CLK11
- * - Tx-CLK is CLK10
- */
-#define CONFIG_ETHER_ON_FCC1
-# define CONFIG_SYS_CMXFCR_MASK1       (CMXFCR_FC1|CMXFCR_RF1CS_MSK|CMXFCR_TF1CS_MSK)
-#ifndef CONFIG_DB_CR826_J30x_ON
-# define CONFIG_SYS_CMXFCR_VALUE1      (CMXFCR_RF1CS_CLK11|CMXFCR_TF1CS_CLK10)
-#else
-# define CONFIG_SYS_CMXFCR_VALUE1      (CMXFCR_RF1CS_CLK11|CMXFCR_TF1CS_CLK12)
-#endif
-/*
- * - Rx-CLK is CLK15
- * - Tx-CLK is CLK14
- */
-#define CONFIG_ETHER_ON_FCC2
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-/*
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#define CONFIG_8260_CLKIN      100000000       /* in Hz */
-
-#if defined(CONFIG_CONS_NONE) || defined(CONFIG_CONS_USE_EXTC)
-#define CONFIG_BAUDRATE                230400
-#else
-#define CONFIG_BAUDRATE                9600
-#endif
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-#ifdef CONFIG_PCI
-#define CONFIG_PCI_INDIRECT_BRIDGE
-#define CONFIG_CMD_PCI
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END 0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-
-#define CONFIG_SYS_RESET_ADDRESS 0xFDFFFFFC    /* "bad" address                */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ        (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * Flash and Boot ROM mapping
- */
-
-#define CONFIG_SYS_BOOTROM_BASE        0xFF800000
-#define CONFIG_SYS_BOOTROM_SIZE        0x00080000
-#define CONFIG_SYS_FLASH0_BASE         0x40000000
-#define CONFIG_SYS_FLASH0_SIZE         0x02000000
-#define CONFIG_SYS_DOC_BASE            0xFF800000
-#define CONFIG_SYS_DOC_SIZE            0x00100000
-
-
-/* Flash bank size (for preliminary settings)
- */
-#define CONFIG_SYS_FLASH_SIZE CONFIG_SYS_FLASH0_SIZE
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of memory banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      135     /* max num of sects on one chip */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000  /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-#if 0
-/* Start port with environment in flash; switch to EEPROM later */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE+0x40000)
-#define CONFIG_ENV_SIZE                0x40000
-#define CONFIG_ENV_SECT_SIZE   0x40000
-#else
-/* Final version: environment in EEPROM */
-#define CONFIG_ENV_IS_IN_EEPROM        1
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x58
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-#define CONFIG_ENV_OFFSET              512
-#define CONFIG_ENV_SIZE                (2048 - 512)
-#endif
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- *
- * if you change bits in the HRCW, you must also change the CONFIG_SYS_*
- * defines for the various registers affected by the HRCW e.g. changing
- * HRCW_DPPCxx requires you to also change CONFIG_SYS_SIUMCR.
- */
-#if defined(CONFIG_BOOT_ROM)
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_BPS01 | HRCW_CIP | HRCW_ISB100 | HRCW_BMS)
-#else
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_CIP | HRCW_ISB100 | HRCW_BMS)
-#endif
-
-/* no slaves so just fill with zeros */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- *
- * 60x SDRAM is mapped at CONFIG_SYS_SDRAM_BASE, local SDRAM
- * is mapped at SDRAM_BASE2_PRELIM.
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_FLASH0_BASE
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()*/
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-# define CONFIG_SYS_RAMBOOT
-#endif
-
-#ifdef CONFIG_PCI
-#define CONFIG_PCI_PNP
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8               /* use 8 rx buffer on eepro100  */
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU              */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                   2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI|\
-                               HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL  (HID0_ICE|HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                    5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         RMR_CSRE
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                      4-25
- *-----------------------------------------------------------------------
- */
-
-#define BCR_APD01      0x10000000
-#define CONFIG_SYS_BCR         (BCR_APD01|BCR_ETM|BCR_LETM)    /* 8260 mode */
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                            4-31
- *-----------------------------------------------------------------------
- */
-#if 0
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DPPC00|SIUMCR_APPC10|SIUMCR_CS10PC01)
-#else
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DPPC10|SIUMCR_APPC10)
-#endif
-
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                            4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                    4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                  9-8
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SCCR        (SCCR_DFBRG00)
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                                13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*
- * Init Memory Controller:
- *
- * Bank Bus    Machine PortSz  Device
- * ---- ---    ------- ------  ------
- *  0  60x     GPCM    64 bit  FLASH
- *  1  60x     SDRAM   64 bit  SDRAM
- *
- */
-
-       /* Initialize SDRAM on local bus
-        */
-#define CONFIG_SYS_INIT_LOCAL_SDRAM
-
-
-/* Minimum mask to separate preliminary
- * address ranges for CS[0:2]
- */
-#define CONFIG_SYS_MIN_AM_MASK 0xC0000000
-
-/*
- * we use the same values for 32 MB and 128 MB SDRAM
- * refresh rate = 7.68 uS (100 MHz Bus Clock)
- */
-#define CONFIG_SYS_MPTPR       0x2000
-#define CONFIG_SYS_PSRT        0x16
-
-#define CONFIG_SYS_MRS_OFFS    0x00000000
-
-
-#if defined(CONFIG_BOOT_ROM)
-/*
- * Bank 0 - Boot ROM (8 bit wide)
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_BOOTROM_BASE & BRx_BA_MSK)|\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_BOOTROM_SIZE)    |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-/*
- * Bank 1 - Flash (64 bit wide)
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-#else  /* ! CONFIG_BOOT_ROM */
-
-/*
- * Bank 0 - Flash (64 bit wide)
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_64                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-/*
- * Bank 1 - Disk-On-Chip
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_DOC_BASE & BRx_BA_MSK)     |\
-                        BRx_PS_8                       |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_DOC_SIZE)        |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_EHTR                      |\
-                        ORxG_TRLX)
-
-#endif /* CONFIG_BOOT_ROM */
-
-/* Bank 2 - SDRAM
- */
-
-#ifndef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-       /* SDRAM initialization values for 8-column chips
-        */
-#define CONFIG_SYS_OR2_8COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A9             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_8COL  (PSDMR_SDAM_A13_IS_A5           |\
-                        PSDMR_BSMA_A14_A16             |\
-                        PSDMR_SDA10_PBI0_A10           |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_2W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-       /* SDRAM initialization values for 9-column chips
-        */
-#define CONFIG_SYS_OR2_9COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A7             |\
-                        ORxS_NUMR_13)
-
-#define CONFIG_SYS_PSDMR_9COL  (PSDMR_SDAM_A14_IS_A5           |\
-                        PSDMR_BSMA_A13_A15             |\
-                        PSDMR_SDA10_PBI0_A9            |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_2W              |\
-                        PSDMR_ACTTORW_2W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-#define CONFIG_SYS_OR2_PRELIM   CONFIG_SYS_OR2_9COL
-#define CONFIG_SYS_PSDMR        CONFIG_SYS_PSDMR_9COL
-
-#endif /* CONFIG_SYS_RAMBOOT */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/PMC405.h b/include/configs/PMC405.h
deleted file mode 100644 (file)
index c68d9a6..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_PMC405          1       /* ...on a PMC405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF80000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33330000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-/* Only interrupt boot if space is pressed. */
-#define CONFIG_AUTOBOOT_KEYED 1
-#define CONFIG_AUTOBOOT_PROMPT \
-       "Press SPACE to abort autoboot in %d seconds\n", bootdelay
-#undef CONFIG_AUTOBOOT_DELAY_STR
-#define CONFIG_AUTOBOOT_STOP_STR " "
-
-#undef CONFIG_BOOTARGS
-#undef CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                 /* enable preboot variable      */
-
-#define CFG_BOOTM_LEN          0x1000000 /* support booting of huge images */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE 1 /* allow baudrate change        */
-
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP 1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R     1       /* use reset_phy()              */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_UNIVERSE
-#define CONFIG_CMD_EEPROM
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_RTC_MC146818            /* DS1685 is MC146818 compatible */
-#define CONFIG_SYS_RTC_REG_BASE_ADDR   0xF0000500 /* RTC Base Address */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size */
-#else
-#define CONFIG_SYS_CBSIZE      512             /* Console I/O Buffer Size */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Argument Buffer Sz */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console info */
-
-#define CONFIG_AUTO_COMPLETE           1       /* add autocompletion support */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK             /* no external serial clock */
-#define CONFIG_SYS_BASE_BAUD   806400
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history */
-#define CONFIG_LOOPW           1       /* enable loopw command */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16
-
-/*
- * PCI stuff
- */
-#define PCI_HOST_ADAPTER       0       /* configure as pci adapter     */
-#define PCI_HOST_FORCE         1       /* configure as pci host        */
-#define PCI_HOST_AUTO          2       /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST        PCI_HOST_AUTO   /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1        /* don't skip host bridge config */
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID_NONMONARCH 0x0408 /* PCI Device ID */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID_MONARCH 0x0409 /* PCI Device ID */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID pmc405_pci_subsys_deviceid()
-
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20 /* Processor/PPC */
-
-#define CONFIG_SYS_PCI_PTM1LA  (bd->bi_memstart) /* point to sdram     */
-#define CONFIG_SYS_PCI_PTM1MS  (~(bd->bi_memsize - 1) | 1) /* memsize, enable */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address */
-#define CONFIG_SYS_PCI_PTM2LA  0xef000000      /* point to internal regs */
-#define CONFIG_SYS_PCI_PTM2MS  0xff000001      /* 16MB, enable */
-#define CONFIG_SYS_PCI_PTM2PCI 0x00000000      /* Host: use this pci address */
-
-#define CONFIG_PCI_4xx_PTM_OVERWRITE   1 /* overwrite PTMx settings by env */
-
-/*
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (~(CONFIG_SYS_TEXT_BASE) + 1)
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024) /* 128 kB for malloc() */
-
-#define CONFIG_PRAM                    0 /* use pram variable to overwrite */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ   (8 << 20) /* Initial Memory map for Linux */
-
-/*
- * FLASH organization
- */
-#define CONFIG_SYS_FLASH_BASE          0xFE000000
-#define CONFIG_SYS_FLASH_INCREMENT     0x01000000
-
-#define CONFIG_SYS_FLASH_CFI           1 /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER                1 /* Use the common driver */
-#define CONFIG_SYS_FLASH_PROTECTION    1 /* don't use hardware protection */
-#define CONFIG_SYS_FLASH_AUTOPROTECT_LIST {{0xfff80000, 0x80000}}
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1 /* use buffered writes (faster) */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2 /* max num of flash banks */
-#define CONFIG_SYS_FLASH_BANKS_LIST    {CONFIG_SYS_FLASH_BASE, \
-                       CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_INCREMENT}
-#define CONFIG_SYS_MAX_FLASH_SECT      128 /* max num of sects on one chip */
-#define CONFIG_SYS_FLASH_EMPTY_INFO    /* print 'E' for empty sector on fli */
-
-/*
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-
-/* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_OFFSET      0x000
-#define CONFIG_ENV_SIZE                0x800 /* 2048 bytes may be used for env vars */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xF0000500      /* NVRAM base address */
-#define CONFIG_SYS_NVRAM_SIZE          242             /* NVRAM size */
-
-/*
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT24W16 */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address */
-/* mask of address bits that overflow into the "EEPROM chip address" */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24W16 has */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address */
-
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10 /* and takes up to 10 msec */
-
-/*
- * External Bus Controller (EBC) Setup
- */
-#define FLASH0_BA      0xFF000000      /* FLASH 0 Base Address */
-#define FLASH1_BA      0xFE000000      /* FLASH 1 Base Address */
-#define CAN_BA         0xF0000000      /* CAN Base Addres      */
-#define RTC_BA         0xF0000500      /* RTC Base Address     */
-#define NVRAM_BA       0xF0200000      /* NVRAM Base Address   */
-
-/* Memory Bank 0 (Flash Bank 0) initialization */
-#define CONFIG_SYS_EBC_PB0AP   0x92015480
-/* BAS=0xFF0,BS=16MB,BU=R/W,BW=16bit */
-#define CONFIG_SYS_EBC_PB0CR   (FLASH0_BA | 0x9A000)
-
-/* Memory Bank 1 (Flash Bank 1) initialization */
-#define CONFIG_SYS_EBC_PB1AP   0x92015480
-/* BAS=0xFE0,BS=16MB,BU=R/W,BW=16bit*/
-#define CONFIG_SYS_EBC_PB1CR   (FLASH1_BA | 0x9A000)
-
-/* Memory Bank 2 (CAN0, 1, RTC) initialization */
-/* TWT=5,TH=2,CSN=0,OEN=0,WBN=0,WBF=0      */
-#define CONFIG_SYS_EBC_PB2AP   0x03000440
-/* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit */
-#define CONFIG_SYS_EBC_PB2CR   (CAN_BA | 0x18000)
-
-/* Memory Bank 3 -> unused */
-
-/* Memory Bank 4 (NVRAM) initialization */
-/* TWT=5,TH=2,CSN=0,OEN=0,WBN=0,WBF=0 */
-#define CONFIG_SYS_EBC_PB4AP   0x03000440
-/* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit */
-#define CONFIG_SYS_EBC_PB4CR   (NVRAM_BA | 0x18000)
-
-/*
- * FPGA stuff
- */
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000 /* JTAG TMS pin (output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000 /* JTAG TCK pin (output) */
-#define CONFIG_SYS_FPGA_DATA           0x01000000 /* JTAG TDO pin (output) */
-#define CONFIG_SYS_FPGA_INIT           0x00010000 /* unused (ppc input) */
-#define CONFIG_SYS_FPGA_DONE           0x00008000 /* JTAG TDI pin (input) */
-
-/* pass Ethernet MAC to VxWorks */
-#define CONFIG_SYS_VXWORKS_MAC_PTR     0x00000000
-
-/*
- * GPIOs
- */
-#define CONFIG_SYS_VPEN                        (0x80000000 >>  3) /* GPIO3 */
-#define CONFIG_SYS_NONMONARCH          (0x80000000 >> 14) /* GPIO14 */
-#define CONFIG_SYS_XEREADY             (0x80000000 >> 15) /* GPIO15 */
-#define CONFIG_SYS_INTA_FAKE           (0x80000000 >> 19) /* GPIO19 */
-#define CONFIG_SYS_SELF_RST            (0x80000000 >> 21) /* GPIO21 */
-#define CONFIG_SYS_REV1_2              (0x80000000 >> 23) /* GPIO23 */
-
-/*
- * Definitions for initial stack pointer and data area (in data cache)
- */
-
-/* use on chip memory (OCM) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM      1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-
-/* inside of SDRAM */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR
-
-/* End of used area in RAM */
-#define CONFIG_SYS_INIT_RAM_SIZE               CONFIG_SYS_OCM_DATA_SIZE
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_OF_LIBFDT
-#define CONFIG_OF_BOARD_SETUP
-
-#endif /* __CONFIG_H */
index 94b95475a8b01b303a95d88ea95ed48e74c4c4b6..f7d28e39ddc8a230dd465920329056fd5ec135a5 100644 (file)
@@ -12,6 +12,8 @@
 #define CONFIG_PMC405DE                1       /* ...on a PMC405DE board       */
 
 #define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
 #define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
diff --git a/include/configs/R360MPI.h b/include/configs/R360MPI.h
deleted file mode 100644 (file)
index 009d1cf..0000000
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC823          1       /* This is a MPC823 CPU         */
-#define CONFIG_R360MPI         1
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define CONFIG_LCD
-#define CONFIG_MPC8XX_LCD
-#undef  CONFIG_EDT32F10
-#define CONFIG_SHARP_LQ057Q3DC02
-
-#define        CONFIG_SPLASH_SCREEN
-
-#define MPC8XX_FACT             1              /* Multiply by 1        */
-#define MPC8XX_XIN              50000000       /* 50 MHz in            */
-#define CONFIG_8xx_GCLK_FREQ    50000000 /* define if can't use get_gclk_freq */
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200  /* console baudrate in bps      */
-#if 0
-#define CONFIG_BOOTDELAY       0       /* immediate boot               */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp; "                                                               \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-#undef CONFIG_SCC1_ENET
-#define        CONFIG_SCC2_ENET
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#define        CONFIG_MISC_INIT_R              /* have misc_init_r() function  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define        CONFIG_CAN_DRIVER               /* CAN Driver support enabled   */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
-
-#define CONFIG_HARD_I2C                1       /* To I2C with hardware support */
-#undef CONFIG_SYS_I2C_SOFT             /* To I2C with software support */
-#define CONFIG_SYS_I2C_SPEED           4700    /* I2C speed and slave address */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-#if defined(CONFIG_SYS_I2C_SOFT)
-#define CONFIG_SYS_SYS_I2C_SOFT_SPEED  4700 /* I2C speed and slave address */
-#define CONFIG_SYS_SYS_I2C_SOFT_SLAVE  0x7F
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL                 0x00000020      /* PB 26 */
-#define PB_SDA                 0x00000010      /* PB 27 */
-
-#define I2C_INIT               (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE             (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE           (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ               ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)           if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                               else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)           if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                               else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY              udelay(50)
-#endif /* #define(CONFIG_SYS_I2C_SOFT) */
-
-#define CONFIG_SYS_I2C_LCD_ADDR        0x8     /* LCD Control */
-#define CONFIG_SYS_I2C_KEY_ADDR        0x9     /* Keyboard coprocessor */
-#define CONFIG_SYS_I2C_TEM_ADDR        0x49    /* Temperature Sensors */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BMP
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PCMCIA
-#define CONFIG_CMD_SNTP
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* we need the null device      */
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV   1       /* must set console from env    */
-
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * JFFS2 partitions
- */
-/* No command line, one static partition
- * use all the space starting at offset 3MB*/
-#undef CONFIG_CMD_MTDPARTS
-#define CONFIG_JFFS2_DEV               "nor0"
-#define CONFIG_JFFS2_PART_SIZE         0xFFFFFFFF
-#define CONFIG_JFFS2_PART_OFFSET       0x00300000
-
-/* mtdparts command line support */
-/*
-#define CONFIG_CMD_MTDPARTS
-#define MTDIDS_DEFAULT         "nor0=r360-0"
-#define MTDPARTS_DEFAULT       "mtdparts=r360-0:-@3m(user)"
-*/
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFF000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#if defined(DEBUG)
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (192 << 10)     /* Reserve 192 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x40000 /* Offset of Environment                */
-#define        CONFIG_ENV_SECT_SIZE    0x20000 /* Total Size of Environment sector     */
-#define        CONFIG_ENV_SIZE         0x4000  /* Used Size of Environment sector      */
-#define        CONFIG_SYS_USE_PPCENV                   /* Environment embedded in sect .ppcenv */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBE)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- *
- * If this is a 80 MHz CPU, set PLL multiplication factor to 5 (5*16=80)!
- */
-#ifdef CONFIG_80MHz    /* for 80 MHz, we use a 16 MHz clock * 5 */
-#define CONFIG_SYS_PLPRCR                                                      \
-               ( (5-1)<<PLPRCR_MF_SHIFT | PLPRCR_TEXPS | PLPRCR_TMIST )
-#else                  /* up to 50 MHz we use a 1:1 clock */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-#endif /* CONFIG_80MHz */
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#if 1
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define        CONFIG_IDE_8xx_PCCARD   1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-#endif
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFF000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV1 | OR_SCY_7_CLK | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-
-/*
- * BR2 and OR2 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-#define CONFIG_SYS_PRELIM_OR2_AM       0xF8000000      /* OR addr mask */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     (OR_ACS_DIV1  | OR_CSNT_SAM | \
-                                OR_SCY_0_CLK | OR_G5LS)
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR2_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/*
- * BR3 and OR3 (CAN Controller)
- */
-#ifdef CONFIG_CAN_DRIVER
-#define CONFIG_SYS_CAN_BASE            0xC0000000      /* CAN base address   */
-#define CONFIG_SYS_CAN_OR_AM           0xFFFF8000      /* 32 kB address mask */
-#define CONFIG_SYS_OR3_CAN             (CONFIG_SYS_CAN_OR_AM | OR_G5LA |OR_BI)
-#define CONFIG_SYS_BR3_CAN             ((CONFIG_SYS_CAN_BASE & BR_BA_MSK) | \
-                                BR_PS_8 | BR_MS_UPMB | BR_V)
-#endif /* CONFIG_CAN_DRIVER */
-
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096  Rows from SDRAM example configuration
- * 1000  factor s -> ms
- *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4  Number of refresh cycles per period
- *   64  Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- * 50 MHz => 50.000.000 / Divider =  98
- * 66 Mhz => 66.000.000 / Divider = 129
- * 80 Mhz => 80.000.000 / Divider = 156
- */
-#if   defined(CONFIG_80MHz)
-#define CONFIG_SYS_MAMR_PTA            156
-#elif defined(CONFIG_66MHz)
-#define CONFIG_SYS_MAMR_PTA            129
-#else          /*   50 MHz */
-#define CONFIG_SYS_MAMR_PTA             98
-#endif /*CONFIG_??MHz */
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/RRvision.h b/include/configs/RRvision.h
deleted file mode 100644 (file)
index 97f7798..0000000
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * (C) Copyright 2000, 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC823          1       /* This is a MPC823 CPU         */
-#define CONFIG_RRVISION                1       /* ...on a RRvision board       */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define CONFIG_8xx_GCLK_FREQ 64000000
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200  /* console baudrate = 115kbps   */
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       3       /* autoboot after 5 seconds     */
-#endif
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#define CONFIG_PREBOOT "setenv stdout serial"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_ETHADDR                00:50:C2:00:E0:70
-#define CONFIG_OVERWRITE_ETHADDR_ONCE 1
-#define CONFIG_IPADDR                 10.0.0.5
-#define CONFIG_SERVERIP               10.0.0.2
-#define CONFIG_NETMASK                255.0.0.0
-#define CONFIG_ROOTPATH               "/opt/eldk/ppc_8xx"
-#define CONFIG_BOOTCOMMAND            "run flash_self"
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}"    \
-               ":${gatewayip}:${netmask}:${hostname}:${netdev}:off\0"  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "load=tftp 100000 /tftpboot/u-boot.bin\0"                       \
-       "update=protect off 1:0-8;era 1:0-8;"                           \
-               "cp.b 100000 40000000 ${filesize};"                     \
-               "setenv filesize;saveenv\0"                             \
-       "kernel_addr=40040000\0"                                        \
-       "ramdisk_addr=40100000\0"                                       \
-       "kernel_img=/tftpboot/uImage\0"                                 \
-       "kernel_load=tftp 200000 ${kernel_img}\0"                       \
-       "net_nfs=run kernel_load nfsargs addip addtty;bootm\0"          \
-       "flash_nfs=run nfsargs addip addtty;bootm ${kernel_addr}\0"     \
-       "flash_self=run ramargs addip addtty;"                          \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"
-
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#undef CONFIG_STATUS_LED               /* disturbs display             */
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
-
-
-#ifdef CONFIG_LCD
-#define CONFIG_MPC8XX_LCD
-#else
-#define CONFIG_VIDEO           1       /* To enable the video initialization */
-
-/* Video related */
-#define CONFIG_VIDEO_LOGO                      1       /* Show the logo */
-#define CONFIG_VIDEO_ENCODER_AD7179            1       /* Enable this encoder */
-#define CONFIG_VIDEO_ENCODER_AD7179_ADDR       0x2A    /* ALSB to ground */
-#endif
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL         0x00000020      /* PB 26 */
-#define PB_SDA         0x00000010      /* PB 27 */
-
-#define I2C_INIT       (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE     (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE   (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ       ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY      udelay(1)       /* 1/4 I2C clock duration */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_DATE
-
-#undef CONFIG_CMD_PCMCIA
-#undef CONFIG_CMD_IDE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      71      /* max number of sectors on one chip    */
-
-/* timeout values are in ticks = ms */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (120*CONFIG_SYS_HZ)     /* Timeout for Flash Erase      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (1 * CONFIG_SYS_HZ)     /* Timeout for Flash Write      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x8000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET+CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-#define        CONFIG_SYS_USE_PPCENV                   /* Environment embedded in sect .ppcenv */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#ifndef        CONFIG_CAN_DRIVER
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#else  /* we must activate GPL5 in the SIUMCR for CAN */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#endif /* CONFIG_CAN_DRIVER */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF | PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- */
-
-/* for 64 MHz, we use a 16 MHz clock * 4 */
-#define CONFIG_SYS_PLPRCR ( (4-1)<<PLPRCR_MF_SHIFT | PLPRCR_TEXPS | PLPRCR_TMIST )
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (/* SCCR_TBS  | */ SCCR_RTSEL | SCCR_RTDIV    | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define        CONFIG_IDE_8xx_PCCARD   1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-/*#define      CONFIG_SYS_DER  0x2002000F*/
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-/* 66 MHz CPU - 66 MHz bus: ACS = 00, TRLX = 1, CSNT = 1, SCY = 3, EHTR = 1 */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \
-                                OR_SCY_3_CLK | OR_EHTR | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x20000000      /* SDRAM bank #1        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-#ifndef        CONFIG_CAN_DRIVER
-#define        CONFIG_SYS_OR3_PRELIM   CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-#else  /* CAN uses CS3#, so we can have only one SDRAM bank anyway */
-#define        CONFIG_SYS_CAN_BASE             0xC0000000      /* CAN mapped at 0xC0000000     */
-#define CONFIG_SYS_CAN_OR_AM           0xFFFF8000      /* 32 kB address mask           */
-#define CONFIG_SYS_OR3_CAN             (CONFIG_SYS_CAN_OR_AM | OR_G5LA | OR_BI)
-#define CONFIG_SYS_BR3_CAN             ((CONFIG_SYS_CAN_BASE & BR_BA_MSK) | \
-                                       BR_PS_8 | BR_MS_UPMB | BR_V )
-#endif /* CONFIG_CAN_DRIVER */
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096  Rows from SDRAM example configuration
- * 1000  factor s -> ms
- *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4  Number of refresh cycles per period
- *   64  Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- * 50 MHz => 50.000.000 / Divider =  98
- * 66 Mhz => 66.000.000 / Divider = 129
- * 80 Mhz => 80.000.000 / Divider = 156
- */
-#define CONFIG_SYS_MAMR_PTA            129
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/SM850.h b/include/configs/SM850.h
deleted file mode 100644 (file)
index a7e4464..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * (C) Copyright 2000-2008
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#undef TQM8xxL_80MHz   /*      1       / * define for 80 MHz CPU only  */
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC850          1       /* This is a MPC850 CPU         */
-#define CONFIG_SM850           1       /*...on a MPC850 Service Module */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define        CONFIG_8xx_CONS_SMC2    1       /* Console is on SMC2           */
-#define CONFIG_SYS_SMC_RXBUFLEN        128
-#define CONFIG_SYS_MAXIDLE     10
-#define CONFIG_BAUDRATE                115200
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp; "                                                               \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#undef CONFIG_STATUS_LED               /* Status LED not enabled       */
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_RTC_MPC8xx              /* use internal RTC of MPC8xx   */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DATE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB) && defined(KGDB_DEBUG)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#if defined(DEBUG)
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (192 << 10)     /* Reserve 192 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-/* use CFI flash driver */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE+flash_info[0].size }
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      71      /* max number of sectors on one chip */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET       0x8000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-
-#define CONFIG_MISC_INIT_R             /* Make sure to remap flashes correctly */
-
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#define CONFIG_SYS_HWINFO_OFFSET       0x0003FFC0      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000040      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x54514D38      /* 'TQM8' */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#ifndef CONFIG_CAN_DRIVER
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#else  /* we must activate GPL5 in the SIUMCR for CAN */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#endif /* CONFIG_CAN_DRIVER */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- *
- * If this is a 80 MHz CPU, set PLL multiplication factor to 5 (5*16=80)!
- */
-#ifdef TQM8xxL_80MHz   /* for 80 MHz, we use a 16 MHz clock * 5 */
-#define CONFIG_SYS_PLPRCR                                                      \
-               ( (5-1)<<PLPRCR_MF_SHIFT | PLPRCR_TEXPS | PLPRCR_TMIST )
-#else
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-#endif /* TQM8xxL_80MHz */
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#ifdef TQM8xxL_80MHz   /* for 80 MHz, we use a 16 MHz clock * 5 */
-#define CONFIG_SYS_SCCR        (/* SCCR_TBS  | */ \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-#else                  /* up to 50 MHz we use a 1:1 clock */
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-#endif /* TQM8xxL_80MHz */
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM  | OR_ACS_DIV2 | OR_BI | \
-                                OR_SCY_5_CLK | OR_EHTR)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_V )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x20000000      /* SDRAM bank #1        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-#ifndef        CONFIG_CAN_DRIVER
-#define        CONFIG_SYS_OR3_PRELIM   CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-#else  /* CAN uses CS3#, so we can have only one SDRAM bank anyway */
-#define CONFIG_SYS_CAN_BASE            0xC0000000      /* CAN mapped at 0xC0000000     */
-#define CONFIG_SYS_CAN_OR_AM           0xFFFF8000      /* 32 kB address mask           */
-#define CONFIG_SYS_OR3_CAN             (CONFIG_SYS_CAN_OR_AM | OR_G5LA | OR_BI)
-#define CONFIG_SYS_BR3_CAN             ((CONFIG_SYS_CAN_BASE & BR_BA_MSK) | \
-                                       BR_PS_8 | BR_MS_UPMB | BR_V )
-#endif /* CONFIG_CAN_DRIVER */
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA    97              /* start with divider for 100 MHz       */
-
-/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit    */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-#define CONFIG_HWCONFIG                1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/SPD823TS.h b/include/configs/SPD823TS.h
deleted file mode 100644 (file)
index a8b4fbb..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC823          1       /* This is a MPC823 CPU         */
-#define CONFIG_SPD823TS                1       /* ...on a SPD823TS board       */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFF000000
-
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-#define CONFIG_8xx_CONS_SMC1   1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#define CONFIG_BOOTCOMMAND     "bootp" /* autoboot command             */
-
-#define CONFIG_BOOTARGS                "root=/dev/nfs rw "                     \
-                               "nfsroot=10.0.0.2:/opt/eldk/ppc_8xx "   \
-                               "nfsaddrs=10.0.0.99:10.0.0.2"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_IDE
-
-#undef CONFIG_CMD_SAVEENV
-#undef CONFIG_CMD_FLASH
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*----------------------------------------------------------------------*/
-#define CONFIG_ETHADDR         00:D0:93:00:01:CB
-#define CONFIG_IPADDR          10.0.0.98
-#define CONFIG_SERVERIP                10.0.0.1
-#undef CONFIG_BOOTCOMMAND
-#define CONFIG_BOOTCOMMAND     "tftp 200000 uImage;bootm 200000"
-/*----------------------------------------------------------------------*/
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00F00000      /* 1 ... 15MB in DRAM   */
-
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address */
-
-#define CONFIG_SYS_PIO_MODE            0       /* IDE interface in PIO Mode 0  */
-
-#define CONFIG_SYS_PC_IDE_RESET        ((ushort)0x0008)        /* PC 12        */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000 /* was: 0xFF000000 */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#ifdef DEBUG
-#define CONFIG_SYS_MONITOR_LEN         (512 << 10)     /* Reserve 512 kB for Monitor   */
-#else
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     0       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      0       /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    0       /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    0       /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_OFFSET              0x8000  /*   Offset   of Environment Sector     */
-#define CONFIG_ENV_SIZE                0x0800  /* Total Size of Environment Sector     */
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-/* 0x00000040 */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC00 | SIUMCR_GB5E)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit, set PLL multiplication factor !
- */
-/* 0x00b0c0c0 */
-#define CONFIG_SYS_PLPRCR                                                      \
-               (       (11 << PLPRCR_MF_SHIFT) |                       \
-                       PLPRCR_SPLSS | PLPRCR_TEXPS | /*PLPRCR_TMIST|*/ \
-                       /*PLPRCR_CSRC|*/ PLPRCR_LPM_NORMAL |            \
-                       PLPRCR_CSR   | PLPRCR_LOLRE /*|PLPRCR_FIOPD*/   \
-               )
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-/* 0x01800014 */
-#define CONFIG_SYS_SCCR        (SCCR_COM00     | /*SCCR_TBS|*/         \
-                        SCCR_RTDIV     |   SCCR_RTSEL    |     \
-                        /*SCCR_CRQEN|*/  /*SCCR_PRQEN|*/       \
-                        SCCR_EBDF00    |   SCCR_DFSYNC00 |     \
-                        SCCR_DFBRG00   |   SCCR_DFNL000  |     \
-                        SCCR_DFNH000   |   SCCR_DFLCD101 |     \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register
- *-----------------------------------------------------------------------
- */
-/* 0x00C3 */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration Register
- *-----------------------------------------------------------------------
- */
-/* TIMEP=2 */
-#define CONFIG_SYS_RCCR 0x0200
-
-/*-----------------------------------------------------------------------
- * RMDS - RISC Microcode Development Support Control Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMDS 0
-
-/*-----------------------------------------------------------------------
- * SDSR - SDMA Status Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SDSR ((u_char)0x83)
-
-/*-----------------------------------------------------------------------
- * SDMR - SDMA Mask Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SDMR ((u_char)0x00)
-
-/*-----------------------------------------------------------------------
- *
- * Interrupt Levels
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_CPM_INTERRUPT       13      /* SIU_LEVEL6   */
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_INIT_POSTRESET      1       /* Use postreset IDE hook */
-#define CONFIG_IDE_8xx_DIRECT  1       /* PCMCIA interface required    */
-#define CONFIG_IDE_LED         1       /* LED   for ide supported      */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported      */
-
-#define CONFIG_SYS_IDE_MAXBUS          2       /* max. 2 IDE busses            */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xFE100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-#define CONFIG_SYS_ATA_IDE1_OFFSET     0x0C00
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0080  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100  /* Offset for alternate registers       */
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFF000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFF080000      /* FLASH bank #1        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-/* EPROMs are 512kb */
-#define CONFIG_SYS_REMAP_OR_AM         0xFFF80000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFFF80000      /* OR addr mask */
-
-/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (/* OR_CSNT_SAM | */ OR_ACS_DIV4 | OR_BI | \
-                                OR_SCY_5_CLK | OR_EHTR)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-/* 16 bit, bank valid */
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-/* 16 bit, bank valid */
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-/*
- * BR2-5 and OR2-5 (SRAM/SDRAM/PER8/SHARC)
- *
- */
-#define SRAM_BASE      0xFE200000      /* SRAM bank */
-#define SRAM_OR_AM     0xFFE00000      /* SRAM is 2 MB */
-
-#define SDRAM_BASE3_PRELIM     0x00000000      /* SDRAM bank */
-#define SDRAM_PRELIM_OR_AM     0xF8000000      /* map max. 128 MB */
-#define SDRAM_MAX_SIZE         0x04000000      /* max 64 MB SDRAM */
-
-#define PER8_BASE      0xFE000000      /* PER8 bank */
-#define PER8_OR_AM     0xFFF00000      /* PER8 is 1 MB */
-
-#define SHARC_BASE     0xFE400000      /* SHARC bank */
-#define SHARC_OR_AM    0xFFC00000      /* SHARC is 4 MB */
-
-/* SRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)      */
-
-#define CONFIG_SYS_OR_TIMING_SRAM      0x00000D42      /* SRAM-Timing */
-#define CONFIG_SYS_OR2 (SRAM_OR_AM | CONFIG_SYS_OR_TIMING_SRAM )
-#define CONFIG_SYS_BR2 ((SRAM_BASE & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00      /* SDRAM-Timing */
-#define CONFIG_SYS_OR3_PRELIM  (SDRAM_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMB | BR_V )
-
-#define CONFIG_SYS_OR_TIMING_PER8      0x00000F32      /* PER8-Timing */
-#define CONFIG_SYS_OR4 (PER8_OR_AM | CONFIG_SYS_OR_TIMING_PER8 )
-#define CONFIG_SYS_BR4 ((PER8_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-#define CONFIG_SYS_OR_TIMING_SHARC     0x00000700      /* SHARC-Timing */
-#define CONFIG_SYS_OR5 (SHARC_OR_AM | CONFIG_SYS_OR_TIMING_SHARC )
-#define CONFIG_SYS_BR5 ((SHARC_BASE & BR_BA_MSK) | BR_PS_32 | BR_MS_UPMA | BR_V )
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MBMR_PTB    204
-
-/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit    */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MBMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MBMR_8COL   ((CONFIG_SYS_MBMR_PTB << MBMR_PTB_SHIFT)  | \
-                        MBMR_AMB_TYPE_0 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A11 |   \
-                        MBMR_RLFB_1X    | MBMR_WLFB_1X    | MBMR_TLFB_4X)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/Sandpoint8240.h b/include/configs/Sandpoint8240.h
deleted file mode 100644 (file)
index 2c0cb89..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8240         1
-#define CONFIG_SANDPOINT       1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-#define CONFIG_SYS_LDSCRIPT    "board/sandpoint/u-boot.lds"
-
-#if 0
-#define USE_DINK32             1
-#else
-#undef USE_DINK32
-#endif
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                9600
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define        CONFIG_TIMESTAMP                /* Print image info with timestamp */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \"run net_nfs\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "net_self=tftp ${kernel_addr} ${bootfile};"                     \
-               "tftp ${ramdisk_addr} ${ramdisk};"                      \
-               "run ramargs addip;"                                    \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp ${kernel_addr} ${bootfile};"                      \
-               "run nfsargs addip;bootm\0"                             \
-       "rootpath=/opt/eldk/ppc_82xx\0"                                 \
-       "bootfile=/tftpboot/SP8240/uImage\0"                            \
-       "ramdisk=/tftpboot/SP8240/uRamdisk\0"                           \
-       "kernel_addr=200000\0"                                          \
-       "ramdisk_addr=400000\0"                                         \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_SNTP
-
-
-#define CONFIG_DRAM_SPEED      100             /* MHz                          */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP            1               /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size    */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address         */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                             /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#undef CONFIG_PCI_PNP
-
-
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8               /* use 8 rx buffer on eepro100  */
-
-#define PCI_ENET0_IOADDR       0x80000000
-#define PCI_ENET0_MEMADDR      0x80000000
-#define        PCI_ENET1_IOADDR        0x81000000
-#define        PCI_ENET1_MEMADDR       0x81000000
-
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MAX_RAM_SIZE        0x10000000
-
-#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
-
-#if defined (USE_DINK32)
-#define CONFIG_SYS_MONITOR_LEN         0x00030000
-#define CONFIG_SYS_MONITOR_BASE        0x00090000
-#define CONFIG_SYS_RAMBOOT             1
-#define CONFIG_SYS_INIT_RAM_ADDR       (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_SYS_INIT_RAM_SIZE       0x10000
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-#else
-#undef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_MONITOR_LEN         0x00030000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-
-
-#define CONFIG_SYS_INIT_RAM_ADDR     0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE      0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET  (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-#endif
-
-#define CONFIG_SYS_FLASH_BASE          0xFFF00000
-#if 0
-#define CONFIG_SYS_FLASH_SIZE          (512 * 1024)    /* sandpoint has tiny eeprom    */
-#else
-#define CONFIG_SYS_FLASH_SIZE          (1024 * 1024)   /* Unity has onboard 1MByte flash */
-#endif
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0x00004000      /* Offset of Environment Sector */
-#define CONFIG_ENV_SIZE                0x00002000      /* Total Size of Environment Sector */
-
-#define CONFIG_SYS_MALLOC_LEN          (512 << 10)     /* Reserve 512 kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START       0x00000000      /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END         0x04000000      /* 0 ... 32 MB in DRAM          */
-
-#define CONFIG_SYS_EUMB_ADDR           0xFC000000
-
-#define CONFIG_SYS_ISA_MEM             0xFD000000
-#define CONFIG_SYS_ISA_IO              0xFE000000
-
-#define CONFIG_SYS_FLASH_RANGE_BASE    0xFF000000      /* flash memory address range   */
-#define CONFIG_SYS_FLASH_RANGE_SIZE    0x01000000
-#define FLASH_BASE0_PRELIM     0xFFF00000      /* sandpoint flash              */
-#define FLASH_BASE1_PRELIM     0xFF000000      /* PMC onboard flash            */
-
-/*
- * select i2c support configuration
- *
- * Supported configurations are {none, software, hardware} drivers.
- * If the software driver is chosen, there are some additional
- * configuration items that the driver uses to drive the port pins.
- */
-#define CONFIG_HARD_I2C                1               /* To enable I2C support */
-#undef  CONFIG_SYS_I2C_SOFT
-#define CONFIG_SYS_I2C_SLAVE   0x7F
-#define CONFIG_SYS_I2C_SPEED   400000
-
-#ifdef CONFIG_SYS_I2C_SOFT
-#error "Soft I2C is not configured properly.  Please review!"
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-#define I2C_PORT               3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE             (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE           (iop->pdir &= ~0x00010000)
-#define I2C_READ               ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)           if(bit) iop->pdat |=  0x00010000; \
-                               else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)           if(bit) iop->pdat |=  0x00020000; \
-                               else    iop->pdat &= ~0x00020000
-#define I2C_DELAY              udelay(5)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SYS_I2C_SOFT */
-
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x57            /* EEPROM IS24C02               */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1               /* Bytes of address             */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3       /* write page size              */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* takes up to 10 msec          */
-
-
-#define CONFIG_SYS_FLASH_BANKS         { FLASH_BASE0_PRELIM , FLASH_BASE1_PRELIM }
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-
-
-/* #define CONFIG_WINBOND_83C553       1       / *has a winbond bridge                 */
-#define CONFIG_SYS_USE_WINBOND_IDE     0       /*use winbond 83c553 internal IDE ctrlr */
-#define CONFIG_SYS_WINBOND_ISA_CFG_ADDR    0x80005800  /*pci-isa bridge config addr    */
-#define CONFIG_SYS_WINBOND_IDE_CFG_ADDR    0x80005900  /*ide config addr               */
-
-#define CONFIG_SYS_IDE_MAXBUS          2   /* max. 2 IDE busses        */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */
-
-/*
- * NS87308 Configuration
- */
-#define CONFIG_NS87308                 /* Nat Semi super-io controller on ISA bus */
-
-#define CONFIG_SYS_NS87308_BADDR_10    1
-
-#define CONFIG_SYS_NS87308_DEVS        ( CONFIG_SYS_NS87308_UART1   | \
-                                 CONFIG_SYS_NS87308_UART2   | \
-                                 CONFIG_SYS_NS87308_POWRMAN | \
-                                 CONFIG_SYS_NS87308_RTC_APC )
-
-#undef  CONFIG_SYS_NS87308_PS2MOD
-
-#define CONFIG_SYS_NS87308_CS0_BASE    0x0076
-#define CONFIG_SYS_NS87308_CS0_CONF    0x30
-#define CONFIG_SYS_NS87308_CS1_BASE    0x0075
-#define CONFIG_SYS_NS87308_CS1_CONF    0x30
-#define CONFIG_SYS_NS87308_CS2_BASE    0x0074
-#define CONFIG_SYS_NS87308_CS2_CONF    0x30
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#define CONFIG_SYS_NS16550_CLK         1843200
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_ISA_IO + CONFIG_SYS_NS87308_UART1_BASE)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_ISA_IO + CONFIG_SYS_NS87308_UART2_BASE)
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_CLK_FREQ  33000000  /* external frequency to pll */
-#define CONFIG_PLL_PCI_TO_MEM_MULTIPLIER  1
-
-#define CONFIG_SYS_ROMNAL              7       /*rom/flash next access time            */
-#define CONFIG_SYS_ROMFAL              11      /*rom/flash access time                 */
-
-#define CONFIG_SYS_REFINT      430     /* no of clock cycles between CBR refresh cycles */
-
-/* the following are for SDRAM only*/
-#define CONFIG_SYS_BSTOPRE     121     /* Burst To Precharge, sets open page interval */
-#define CONFIG_SYS_REFREC              8       /* Refresh to activate interval         */
-#define CONFIG_SYS_RDLAT               4       /* data latency from read command       */
-#define CONFIG_SYS_PRETOACT            3       /* Precharge to activate interval       */
-#define CONFIG_SYS_ACTTOPRE            5       /* Activate to Precharge interval       */
-#define CONFIG_SYS_ACTORW              3       /* Activate to R/W                      */
-#define CONFIG_SYS_SDMODE_CAS_LAT      3       /* SDMODE CAS latency                   */
-#define CONFIG_SYS_SDMODE_WRAP         0       /* SDMODE wrap type                     */
-#define CONFIG_SYS_SDMODE_BURSTLEN     2       /* SDMODE Burst length 2=4, 3=8         */
-
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER   1
-
-/* memory bank settings*/
-/*
- * only bits 20-29 are actually used from these vales to set the
- * start/end address the upper two bits will be 0, and the lower 20
- * bits will be set to 0x00000 for a start address, or 0xfffff for an
- * end address
- */
-#define CONFIG_SYS_BANK0_START         0x00000000
-#define CONFIG_SYS_BANK0_END           (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE        1
-#define CONFIG_SYS_BANK1_START         0x3ff00000
-#define CONFIG_SYS_BANK1_END           0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE        0
-#define CONFIG_SYS_BANK2_START         0x3ff00000
-#define CONFIG_SYS_BANK2_END           0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE        0
-#define CONFIG_SYS_BANK3_START         0x3ff00000
-#define CONFIG_SYS_BANK3_END           0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE        0
-#define CONFIG_SYS_BANK4_START         0x00000000
-#define CONFIG_SYS_BANK4_END           0x00000000
-#define CONFIG_SYS_BANK4_ENABLE        0
-#define CONFIG_SYS_BANK5_START         0x00000000
-#define CONFIG_SYS_BANK5_END           0x00000000
-#define CONFIG_SYS_BANK5_ENABLE        0
-#define CONFIG_SYS_BANK6_START         0x00000000
-#define CONFIG_SYS_BANK6_END           0x00000000
-#define CONFIG_SYS_BANK6_ENABLE        0
-#define CONFIG_SYS_BANK7_START         0x00000000
-#define CONFIG_SYS_BANK7_END           0x00000000
-#define CONFIG_SYS_BANK7_ENABLE        0
-/*
- * Memory bank enable bitmask, specifying which of the banks defined above
- are actually present. MSB is for bank #7, LSB is for bank #0.
- */
-#define CONFIG_SYS_BANK_ENABLE         0x01
-
-#define CONFIG_SYS_ODCR                0xff    /* configures line driver impedances,   */
-                                       /* see 8240 book for bit definitions    */
-#define CONFIG_SYS_PGMAX               0x32    /* how long the 8240 retains the        */
-                                       /* currently accessed page in memory    */
-                                       /* see 8240 book for details            */
-
-/* SDRAM 0 - 256MB */
-#define CONFIG_SYS_IBAT0L      (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U      (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* stack in DCACHE @ 1GB (no backing mem) */
-#if defined(USE_DINK32)
-#define CONFIG_SYS_IBAT1L      (0x40000000 | BATL_PP_00 )
-#define CONFIG_SYS_IBAT1U      (0x40000000 | BATU_BL_128K )
-#else
-#define CONFIG_SYS_IBAT1L      (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U      (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-#endif
-
-/* PCI memory */
-#define CONFIG_SYS_IBAT2L      (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U      (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* Flash, config addrs, etc */
-#define CONFIG_SYS_IBAT3L      (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U      (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L      CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U      CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L      CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U      CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L      CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U      CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L      CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U      CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      20      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8240 CPU                      */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-/* values according to the manual */
-
-#define CONFIG_DRAM_50MHZ      1
-#define CONFIG_SDRAM_50MHZ
-
-#undef NR_8259_INTS
-#define NR_8259_INTS           1
-
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/Sandpoint8245.h b/include/configs/Sandpoint8245.h
deleted file mode 100644 (file)
index 2664d5b..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8245         1
-#define CONFIG_SANDPOINT       1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-#define CONFIG_SYS_LDSCRIPT    "board/sandpoint/u-boot.lds"
-
-#if 0
-#define USE_DINK32             1
-#else
-#undef USE_DINK32
-#endif
-
-#define CONFIG_CONS_INDEX     3               /* set to '3' for on-chip DUART */
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_DRAM_SPEED      100             /* MHz                          */
-
-#define        CONFIG_TIMESTAMP                /* Print image info with timestamp */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_SNTP
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP            1               /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size    */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address         */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                             /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#undef CONFIG_PCI_PNP
-
-
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8               /* use 8 rx buffer on eepro100  */
-#define CONFIG_NATSEMI
-#define CONFIG_NS8382X
-
-#define PCI_ENET0_IOADDR       0x80000000
-#define PCI_ENET0_MEMADDR      0x80000000
-#define        PCI_ENET1_IOADDR        0x81000000
-#define        PCI_ENET1_MEMADDR       0x81000000
-
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MAX_RAM_SIZE        0x10000000
-
-#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
-
-#if defined (USE_DINK32)
-#define CONFIG_SYS_MONITOR_LEN         0x00030000
-#define CONFIG_SYS_MONITOR_BASE        0x00090000
-#define CONFIG_SYS_RAMBOOT             1
-#define CONFIG_SYS_INIT_RAM_ADDR       (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_SYS_INIT_RAM_SIZE       0x10000
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-#else
-#undef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_MONITOR_LEN         0x00030000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-
-
-#define CONFIG_SYS_INIT_RAM_ADDR     0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE      0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET  (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-#endif
-
-#define CONFIG_SYS_FLASH_BASE          0xFFF00000
-#if 0
-#define CONFIG_SYS_FLASH_SIZE          (512 * 1024)    /* sandpoint has tiny eeprom    */
-#else
-#define CONFIG_SYS_FLASH_SIZE          (1024 * 1024)   /* Unity has onboard 1MByte flash */
-#endif
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0x00004000      /* Offset of Environment Sector */
-#define CONFIG_ENV_SIZE                0x00002000      /* Total Size of Environment Sector */
-
-#define CONFIG_SYS_MALLOC_LEN          (512 << 10)     /* Reserve 512 kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START       0x00000000      /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END         0x04000000      /* 0 ... 32 MB in DRAM          */
-
-#define CONFIG_SYS_EUMB_ADDR           0xFC000000
-
-#define CONFIG_SYS_ISA_MEM             0xFD000000
-#define CONFIG_SYS_ISA_IO              0xFE000000
-
-#define CONFIG_SYS_FLASH_RANGE_BASE    0xFF000000      /* flash memory address range   */
-#define CONFIG_SYS_FLASH_RANGE_SIZE    0x01000000
-#define FLASH_BASE0_PRELIM     0xFFF00000      /* sandpoint flash              */
-#define FLASH_BASE1_PRELIM     0xFF000000      /* PMC onboard flash            */
-
-/*
- * select i2c support configuration
- *
- * Supported configurations are {none, software, hardware} drivers.
- * If the software driver is chosen, there are some additional
- * configuration items that the driver uses to drive the port pins.
- */
-#define CONFIG_HARD_I2C                1               /* To enable I2C support */
-#undef  CONFIG_SYS_I2C_SOFT
-#define CONFIG_SYS_I2C_SPEED   400000
-#define CONFIG_SYS_I2C_SLAVE   0x7F
-
-#ifdef CONFIG_SYS_I2C_SOFT
-#error "Soft I2C is not configured properly.  Please review!"
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-#define I2C_PORT               3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE             (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE           (iop->pdir &= ~0x00010000)
-#define I2C_READ               ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)           if(bit) iop->pdat |=  0x00010000; \
-                               else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)           if(bit) iop->pdat |=  0x00020000; \
-                               else    iop->pdat &= ~0x00020000
-#define I2C_DELAY              udelay(5)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SYS_I2C_SOFT */
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x57            /* EEPROM IS24C02               */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1               /* Bytes of address             */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-
-#define CONFIG_SYS_FLASH_BANKS         { FLASH_BASE0_PRELIM , FLASH_BASE1_PRELIM }
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-
-
-/* #define CONFIG_WINBOND_83C553       1       / *has a winbond bridge                 */
-#define CONFIG_SYS_USE_WINBOND_IDE     0       /*use winbond 83c553 internal IDE ctrlr */
-#define CONFIG_SYS_WINBOND_ISA_CFG_ADDR    0x80005800  /*pci-isa bridge config addr    */
-#define CONFIG_SYS_WINBOND_IDE_CFG_ADDR    0x80005900  /*ide config addr               */
-
-#define CONFIG_SYS_IDE_MAXBUS          2   /* max. 2 IDE busses        */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */
-
-/*
- * NS87308 Configuration
- */
-#define CONFIG_NS87308                 /* Nat Semi super-io controller on ISA bus */
-
-#define CONFIG_SYS_NS87308_BADDR_10    1
-
-#define CONFIG_SYS_NS87308_DEVS        ( CONFIG_SYS_NS87308_UART1   | \
-                                 CONFIG_SYS_NS87308_UART2   | \
-                                 CONFIG_SYS_NS87308_POWRMAN | \
-                                 CONFIG_SYS_NS87308_RTC_APC )
-
-#undef  CONFIG_SYS_NS87308_PS2MOD
-
-#define CONFIG_SYS_NS87308_CS0_BASE    0x0076
-#define CONFIG_SYS_NS87308_CS0_CONF    0x30
-#define CONFIG_SYS_NS87308_CS1_BASE    0x0075
-#define CONFIG_SYS_NS87308_CS1_CONF    0x30
-#define CONFIG_SYS_NS87308_CS2_BASE    0x0074
-#define CONFIG_SYS_NS87308_CS2_CONF    0x30
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#if (CONFIG_CONS_INDEX > 2)
-#define CONFIG_SYS_NS16550_CLK         CONFIG_DRAM_SPEED*1000000
-#else
-#define CONFIG_SYS_NS16550_CLK         1843200
-#endif
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_ISA_IO + CONFIG_SYS_NS87308_UART1_BASE)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_ISA_IO + CONFIG_SYS_NS87308_UART2_BASE)
-#define CONFIG_SYS_NS16550_COM3        (CONFIG_SYS_EUMB_ADDR + 0x4500)
-#define CONFIG_SYS_NS16550_COM4        (CONFIG_SYS_EUMB_ADDR + 0x4600)
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_CLK_FREQ  33333333  /* external frequency to pll */
-
-#define CONFIG_SYS_ROMNAL              7       /*rom/flash next access time            */
-#define CONFIG_SYS_ROMFAL              11      /*rom/flash access time                 */
-
-#define CONFIG_SYS_REFINT      430     /* no of clock cycles between CBR refresh cycles */
-
-/* the following are for SDRAM only*/
-#define CONFIG_SYS_BSTOPRE     121     /* Burst To Precharge, sets open page interval */
-#define CONFIG_SYS_REFREC              8       /* Refresh to activate interval         */
-#define CONFIG_SYS_RDLAT               4       /* data latency from read command       */
-#define CONFIG_SYS_PRETOACT            3       /* Precharge to activate interval       */
-#define CONFIG_SYS_ACTTOPRE            5       /* Activate to Precharge interval       */
-#define CONFIG_SYS_ACTORW              3       /* Activate to R/W                      */
-#define CONFIG_SYS_SDMODE_CAS_LAT      3       /* SDMODE CAS latency                   */
-#define CONFIG_SYS_SDMODE_WRAP         0       /* SDMODE wrap type                     */
-#if 0
-#define CONFIG_SYS_SDMODE_BURSTLEN     2       /* OBSOLETE!  SDMODE Burst length 2=4, 3=8              */
-#endif
-
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER   1
-#define CONFIG_SYS_EXTROM 1
-#define CONFIG_SYS_REGDIMM 0
-
-
-/* memory bank settings*/
-/*
- * only bits 20-29 are actually used from these vales to set the
- * start/end address the upper two bits will be 0, and the lower 20
- * bits will be set to 0x00000 for a start address, or 0xfffff for an
- * end address
- */
-#define CONFIG_SYS_BANK0_START         0x00000000
-#define CONFIG_SYS_BANK0_END           (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE        1
-#define CONFIG_SYS_BANK1_START         0x3ff00000
-#define CONFIG_SYS_BANK1_END           0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE        0
-#define CONFIG_SYS_BANK2_START         0x3ff00000
-#define CONFIG_SYS_BANK2_END           0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE        0
-#define CONFIG_SYS_BANK3_START         0x3ff00000
-#define CONFIG_SYS_BANK3_END           0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE        0
-#define CONFIG_SYS_BANK4_START         0x00000000
-#define CONFIG_SYS_BANK4_END           0x00000000
-#define CONFIG_SYS_BANK4_ENABLE        0
-#define CONFIG_SYS_BANK5_START         0x00000000
-#define CONFIG_SYS_BANK5_END           0x00000000
-#define CONFIG_SYS_BANK5_ENABLE        0
-#define CONFIG_SYS_BANK6_START         0x00000000
-#define CONFIG_SYS_BANK6_END           0x00000000
-#define CONFIG_SYS_BANK6_ENABLE        0
-#define CONFIG_SYS_BANK7_START         0x00000000
-#define CONFIG_SYS_BANK7_END           0x00000000
-#define CONFIG_SYS_BANK7_ENABLE        0
-/*
- * Memory bank enable bitmask, specifying which of the banks defined above
- are actually present. MSB is for bank #7, LSB is for bank #0.
- */
-#define CONFIG_SYS_BANK_ENABLE         0x01
-
-#define CONFIG_SYS_ODCR                0xff    /* configures line driver impedances,   */
-                                       /* see 8240 book for bit definitions    */
-#define CONFIG_SYS_PGMAX               0x32    /* how long the 8240 retains the        */
-                                       /* currently accessed page in memory    */
-                                       /* see 8240 book for details            */
-
-/* SDRAM 0 - 256MB */
-#define CONFIG_SYS_IBAT0L      (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U      (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* stack in DCACHE @ 1GB (no backing mem) */
-#if defined(USE_DINK32)
-#define CONFIG_SYS_IBAT1L      (0x40000000 | BATL_PP_00 )
-#define CONFIG_SYS_IBAT1U      (0x40000000 | BATU_BL_128K )
-#else
-#define CONFIG_SYS_IBAT1L      (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U      (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-#endif
-
-/* PCI memory */
-#define CONFIG_SYS_IBAT2L      (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U      (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* Flash, config addrs, etc */
-#define CONFIG_SYS_IBAT3L      (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U      (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L      CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U      CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L      CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U      CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L      CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U      CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L      CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U      CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      20      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8240 CPU                      */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-/* values according to the manual */
-
-#define CONFIG_DRAM_50MHZ      1
-#define CONFIG_SDRAM_50MHZ
-
-#undef NR_8259_INTS
-#define NR_8259_INTS           1
-
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/T102xQDS.h b/include/configs/T102xQDS.h
new file mode 100644 (file)
index 0000000..c2bdbb9
--- /dev/null
@@ -0,0 +1,955 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+/*
+ * T1024/T1023 QDS board configuration file
+ */
+
+#ifndef __T1024QDS_H
+#define __T1024QDS_H
+
+/* High Level Configuration Options */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_BOOKE
+#define CONFIG_E500                    /* BOOKE e500 family */
+#define CONFIG_E500MC                  /* BOOKE e500mc family */
+#define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
+#define CONFIG_MP                      /* support multiple processors */
+#define CONFIG_PHYS_64BIT
+#define CONFIG_ENABLE_36BIT_PHYS
+
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_ADDR_MAP                1
+#define CONFIG_SYS_NUM_ADDR_MAP        64      /* number of TLB1 entries */
+#endif
+
+#define CONFIG_SYS_FSL_CPC             /* Corenet Platform Cache */
+#define CONFIG_SYS_NUM_CPC             CONFIG_NUM_DDR_CONTROLLERS
+#define CONFIG_FSL_IFC                 /* Enable IFC Support */
+
+#define CONFIG_FSL_LAW                 /* Use common FSL init code */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_DEEP_SLEEP
+#define CONFIG_SILENT_CONSOLE
+
+#ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_SYS_FSL_PBL_PBI board/freescale/t102xqds/t1024_pbi.cfg
+#define CONFIG_SYS_FSL_PBL_RCW board/freescale/t102xqds/t1024_rcw.cfg
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_FLUSH_IMAGE
+#define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_I2C_SUPPORT
+#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
+#define CONFIG_FSL_LAW                 /* Use common FSL init code */
+#define CONFIG_SYS_TEXT_BASE           0x00201000
+#define CONFIG_SPL_TEXT_BASE           0xFFFD8000
+#define CONFIG_SPL_PAD_TO              0x40000
+#define CONFIG_SPL_MAX_SIZE            0x28000
+#define RESET_VECTOR_OFFSET            0x27FFC
+#define BOOT_PAGE_OFFSET               0x27000
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SPL_SKIP_RELOCATE
+#define CONFIG_SPL_COMMON_INIT_DDR
+#define CONFIG_SYS_CCSR_DO_NOT_RELOCATE
+#define CONFIG_SYS_NO_FLASH
+#endif
+
+#ifdef CONFIG_NAND
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    (768 << 10)
+#define CONFIG_SYS_NAND_U_BOOT_DST     0x00200000
+#define CONFIG_SYS_NAND_U_BOOT_START   0x00200000
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    (256 << 10)
+#define CONFIG_SYS_LDSCRIPT    "arch/powerpc/cpu/mpc85xx/u-boot-nand.lds"
+#define CONFIG_SPL_NAND_BOOT
+#endif
+
+#ifdef CONFIG_SPIFLASH
+#define CONFIG_RESET_VECTOR_ADDRESS            0x200FFC
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_MINIMAL
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE       (768 << 10)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_DST                (0x00200000)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_START      (0x00200000)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS       (256 << 10)
+#define CONFIG_SYS_LDSCRIPT            "arch/powerpc/cpu/mpc85xx/u-boot.lds"
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+#endif
+#define CONFIG_SPL_SPI_BOOT
+#endif
+
+#ifdef CONFIG_SDCARD
+#define CONFIG_RESET_VECTOR_ADDRESS            0x200FFC
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SPL_MMC_MINIMAL
+#define CONFIG_SYS_MMC_U_BOOT_SIZE     (768 << 10)
+#define CONFIG_SYS_MMC_U_BOOT_DST      (0x00200000)
+#define CONFIG_SYS_MMC_U_BOOT_START    (0x00200000)
+#define CONFIG_SYS_MMC_U_BOOT_OFFS     (260 << 10)
+#define CONFIG_SYS_LDSCRIPT            "arch/powerpc/cpu/mpc85xx/u-boot.lds"
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+#endif
+#define CONFIG_SPL_MMC_BOOT
+#endif
+
+#endif /* CONFIG_RAMBOOT_PBL */
+
+#ifndef CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_TEXT_BASE   0xeff40000
+#endif
+
+#ifndef CONFIG_RESET_VECTOR_ADDRESS
+#define CONFIG_RESET_VECTOR_ADDRESS    0xeffffffc
+#endif
+
+#ifndef CONFIG_SYS_NO_FLASH
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+#endif
+
+/* PCIe Boot - Master */
+#define CONFIG_SRIO_PCIE_BOOT_MASTER
+/*
+ * for slave u-boot IMAGE instored in master memory space,
+ * PHYS must be aligned based on the SIZE
+ */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE     0x100000 /* 1M */
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
+#else
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xef200000
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0xfff00000
+#endif
+/*
+ * for slave UCODE and ENV instored in master memory space,
+ * PHYS must be aligned based on the SIZE
+ */
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_PHYS 0xfef100000ull
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS         0x3ffe00000ull
+#else
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_PHYS 0xef100000
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS  0xffe00000
+#endif
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE     0x40000 /* 256K */
+/* slave core release by master*/
+#define CONFIG_SRIO_PCIE_BOOT_BRR_OFFSET 0xe00e4
+#define CONFIG_SRIO_PCIE_BOOT_RELEASE_MASK 0x00000001 /* release core 0 */
+
+/* PCIe Boot - Slave */
+#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
+#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR 0xFFE00000
+#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR_PHYS \
+               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR)
+/* Set 1M boot space for PCIe boot */
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR (CONFIG_SYS_TEXT_BASE & 0xfff00000)
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR_PHYS       \
+               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR)
+#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
+#define CONFIG_SYS_NO_FLASH
+#endif
+
+#if defined(CONFIG_SPIFLASH)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SPI_BUS             0
+#define CONFIG_ENV_SPI_CS              0
+#define CONFIG_ENV_SPI_MAX_HZ          10000000
+#define CONFIG_ENV_SPI_MODE            0
+#define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
+#define CONFIG_ENV_OFFSET              0x100000        /* 1MB */
+#define CONFIG_ENV_SECT_SIZE           0x10000
+#elif defined(CONFIG_SDCARD)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_ENV_OFFSET              (512 * 0x800)
+#elif defined(CONFIG_NAND)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_ENV_OFFSET              (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+#define CONFIG_ENV_IS_IN_REMOTE
+#define CONFIG_ENV_ADDR                0xffe20000
+#define CONFIG_ENV_SIZE                0x2000
+#elif defined(CONFIG_ENV_IS_NOWHERE)
+#define CONFIG_ENV_SIZE                0x2000
+#else
+#define CONFIG_ENV_IS_IN_FLASH
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
+#endif
+
+
+#ifndef __ASSEMBLY__
+unsigned long get_board_sys_clk(void);
+unsigned long get_board_ddr_clk(void);
+#endif
+
+#define CONFIG_SYS_CLK_FREQ    get_board_sys_clk()
+#define CONFIG_DDR_CLK_FREQ    get_board_ddr_clk()
+
+/*
+ * These can be toggled for performance analysis, otherwise use default.
+ */
+#define CONFIG_SYS_CACHE_STASHING
+#define CONFIG_BACKSIDE_L2_CACHE
+#define CONFIG_SYS_INIT_L2CSR0         L2CSR0_L2E
+#define CONFIG_BTB                     /* toggle branch predition */
+#define CONFIG_DDR_ECC
+#ifdef CONFIG_DDR_ECC
+#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER
+#define CONFIG_MEM_INIT_VALUE          0xdeadbeef
+#endif
+
+#define CONFIG_SYS_MEMTEST_START       0x00200000 /* memtest works on */
+#define CONFIG_SYS_MEMTEST_END         0x00400000
+#define CONFIG_SYS_ALT_MEMTEST
+#define CONFIG_PANIC_HANG      /* do not reset board on panic */
+
+/*
+ *  Config the L3 Cache as L3 SRAM
+ */
+#define CONFIG_SYS_INIT_L3_ADDR                0xFFFC0000
+#define CONFIG_SYS_L3_SIZE             (256 << 10)
+#define CONFIG_SPL_GD_ADDR             (CONFIG_SYS_INIT_L3_ADDR + 32 * 1024)
+#ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_ENV_ADDR                        (CONFIG_SPL_GD_ADDR + 4 * 1024)
+#endif
+#define CONFIG_SPL_RELOC_MALLOC_ADDR   (CONFIG_SPL_GD_ADDR + 12 * 1024)
+#define CONFIG_SPL_RELOC_MALLOC_SIZE   (30 << 10)
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SPL_GD_ADDR + 64 * 1024)
+#define CONFIG_SPL_RELOC_STACK_SIZE    (22 << 10)
+
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_DCSRBAR             0xf0000000
+#define CONFIG_SYS_DCSRBAR_PHYS                0xf00000000ull
+#endif
+
+/* EEPROM */
+#define CONFIG_ID_EEPROM
+#define CONFIG_SYS_I2C_EEPROM_NXID
+#define CONFIG_SYS_EEPROM_BUS_NUM      0
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x57
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5
+
+/*
+ * DDR Setup
+ */
+#define CONFIG_VERY_BIG_RAM
+#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000
+#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
+#define CONFIG_DIMM_SLOTS_PER_CTLR     1
+#define CONFIG_CHIP_SELECTS_PER_CTRL   (4 * CONFIG_DIMM_SLOTS_PER_CTLR)
+#define CONFIG_DDR_SPD
+#ifndef CONFIG_SYS_FSL_DDR4
+#define CONFIG_SYS_FSL_DDR3
+#endif
+
+#define CONFIG_SYS_SPD_BUS_NUM 0
+#define SPD_EEPROM_ADDRESS     0x51
+
+#define CONFIG_SYS_SDRAM_SIZE  4096    /* for fixed parameter use */
+
+/*
+ * IFC Definitions
+ */
+#define CONFIG_SYS_FLASH_BASE  0xe0000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_FLASH_BASE_PHYS     (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
+#else
+#define CONFIG_SYS_FLASH_BASE_PHYS     CONFIG_SYS_FLASH_BASE
+#endif
+
+#define CONFIG_SYS_NOR0_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NOR0_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS \
+                               + 0x8000000) | \
+                               CSPR_PORT_SIZE_16 | \
+                               CSPR_MSEL_NOR | \
+                               CSPR_V)
+#define CONFIG_SYS_NOR1_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NOR1_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | \
+                               CSPR_PORT_SIZE_16 | \
+                               CSPR_MSEL_NOR | \
+                               CSPR_V)
+#define CONFIG_SYS_NOR_AMASK   IFC_AMASK(128*1024*1024)
+/* NOR Flash Timing Params */
+#define CONFIG_SYS_NOR_CSOR    CSOR_NAND_TRHZ_80
+#define CONFIG_SYS_NOR_FTIM0   (FTIM0_NOR_TACSE(0x4) | \
+                               FTIM0_NOR_TEADC(0x5) | \
+                               FTIM0_NOR_TEAHC(0x5))
+#define CONFIG_SYS_NOR_FTIM1   (FTIM1_NOR_TACO(0x35) | \
+                               FTIM1_NOR_TRAD_NOR(0x1A) |\
+                               FTIM1_NOR_TSEQRAD_NOR(0x13))
+#define CONFIG_SYS_NOR_FTIM2   (FTIM2_NOR_TCS(0x4) | \
+                               FTIM2_NOR_TCH(0x4) | \
+                               FTIM2_NOR_TWPH(0x0E) | \
+                               FTIM2_NOR_TWP(0x1c))
+#define CONFIG_SYS_NOR_FTIM3   0x0
+
+#define CONFIG_SYS_FLASH_QUIET_TEST
+#define CONFIG_FLASH_SHOW_PROGRESS     45 /* count down from 45/5: 9..1 */
+
+#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* number of banks */
+#define CONFIG_SYS_MAX_FLASH_SECT      1024    /* sectors per device */
+#define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* Flash Erase Timeout (ms) */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (ms) */
+
+#define CONFIG_SYS_FLASH_EMPTY_INFO
+#define CONFIG_SYS_FLASH_BANKS_LIST    {CONFIG_SYS_FLASH_BASE_PHYS \
+                                       + 0x8000000, CONFIG_SYS_FLASH_BASE_PHYS}
+#define CONFIG_FSL_QIXIS       /* use common QIXIS code */
+#define QIXIS_BASE             0xffdf0000
+#ifdef CONFIG_PHYS_64BIT
+#define QIXIS_BASE_PHYS                (0xf00000000ull | QIXIS_BASE)
+#else
+#define QIXIS_BASE_PHYS                QIXIS_BASE
+#endif
+#define QIXIS_LBMAP_SWITCH             0x06
+#define QIXIS_LBMAP_MASK               0x0f
+#define QIXIS_LBMAP_SHIFT              0
+#define QIXIS_LBMAP_DFLTBANK           0x00
+#define QIXIS_LBMAP_ALTBANK            0x04
+#define QIXIS_RST_CTL_RESET            0x31
+#define QIXIS_RCFG_CTL_RECONFIG_IDLE   0x20
+#define QIXIS_RCFG_CTL_RECONFIG_START  0x21
+#define QIXIS_RCFG_CTL_WATCHDOG_ENBLE  0x08
+#define        QIXIS_RST_FORCE_MEM             0x01
+
+#define CONFIG_SYS_CSPR3_EXT   (0xf)
+#define CONFIG_SYS_CSPR3       (CSPR_PHYS_ADDR(QIXIS_BASE_PHYS) \
+                               | CSPR_PORT_SIZE_8 \
+                               | CSPR_MSEL_GPCM \
+                               | CSPR_V)
+#define CONFIG_SYS_AMASK3      IFC_AMASK(4*1024)
+#define CONFIG_SYS_CSOR3       0x0
+/* QIXIS Timing parameters for IFC CS3 */
+#define CONFIG_SYS_CS3_FTIM0           (FTIM0_GPCM_TACSE(0x0e) | \
+                                       FTIM0_GPCM_TEADC(0x0e) | \
+                                       FTIM0_GPCM_TEAHC(0x0e))
+#define CONFIG_SYS_CS3_FTIM1           (FTIM1_GPCM_TACO(0xff) | \
+                                       FTIM1_GPCM_TRAD(0x3f))
+#define CONFIG_SYS_CS3_FTIM2           (FTIM2_GPCM_TCS(0x0e) | \
+                                       FTIM2_GPCM_TCH(0x8) | \
+                                       FTIM2_GPCM_TWP(0x1f))
+#define CONFIG_SYS_CS3_FTIM3           0x0
+
+#define CONFIG_NAND_FSL_IFC
+#define CONFIG_SYS_NAND_BASE           0xff800000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_NAND_BASE_PHYS      (0xf00000000ull | CONFIG_SYS_NAND_BASE)
+#else
+#define CONFIG_SYS_NAND_BASE_PHYS       CONFIG_SYS_NAND_BASE
+#endif
+#define CONFIG_SYS_NAND_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NAND_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
+                               | CSPR_PORT_SIZE_8 /* Port Size = 8 bit */ \
+                               | CSPR_MSEL_NAND        /* MSEL = NAND */ \
+                               | CSPR_V)
+#define CONFIG_SYS_NAND_AMASK  IFC_AMASK(64*1024)
+
+#define CONFIG_SYS_NAND_CSOR    (CSOR_NAND_ECC_ENC_EN   /* ECC on encode */ \
+                               | CSOR_NAND_ECC_DEC_EN  /* ECC on decode */ \
+                               | CSOR_NAND_ECC_MODE_4  /* 4-bit ECC */ \
+                               | CSOR_NAND_RAL_3       /* RAL = 3Byes */ \
+                               | CSOR_NAND_PGS_2K      /* Page Size = 2K */ \
+                               | CSOR_NAND_SPRZ_64/* Spare size = 64 */ \
+                               | CSOR_NAND_PB(64))     /*Pages Per Block = 64*/
+
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+
+/* ONFI NAND Flash mode0 Timing Params */
+#define CONFIG_SYS_NAND_FTIM0          (FTIM0_NAND_TCCST(0x07) | \
+                                       FTIM0_NAND_TWP(0x18)   | \
+                                       FTIM0_NAND_TWCHT(0x07) | \
+                                       FTIM0_NAND_TWH(0x0a))
+#define CONFIG_SYS_NAND_FTIM1          (FTIM1_NAND_TADLE(0x32) | \
+                                       FTIM1_NAND_TWBE(0x39)  | \
+                                       FTIM1_NAND_TRR(0x0e)   | \
+                                       FTIM1_NAND_TRP(0x18))
+#define CONFIG_SYS_NAND_FTIM2          (FTIM2_NAND_TRAD(0x0f) | \
+                                       FTIM2_NAND_TREH(0x0a) | \
+                                       FTIM2_NAND_TWHRE(0x1e))
+#define CONFIG_SYS_NAND_FTIM3          0x0
+
+#define CONFIG_SYS_NAND_DDR_LAW                11
+#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_MTD_NAND_VERIFY_WRITE
+#define CONFIG_CMD_NAND
+
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
+
+#if defined(CONFIG_NAND)
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
+#define CONFIG_SYS_CSPR1_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR1               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK1              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR1               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS1_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS1_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NOR_FTIM3
+#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NOR1_CSPR_EXT
+#define CONFIG_SYS_CSPR2               CONFIG_SYS_NOR1_CSPR
+#define CONFIG_SYS_AMASK2              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR2               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NOR_FTIM3
+#else
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NOR_FTIM3
+#define CONFIG_SYS_CSPR1_EXT           CONFIG_SYS_NOR1_CSPR_EXT
+#define CONFIG_SYS_CSPR1               CONFIG_SYS_NOR1_CSPR
+#define CONFIG_SYS_AMASK1              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR1               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS1_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS1_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NOR_FTIM3
+#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR2               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK2              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR2               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NAND_FTIM3
+#endif
+
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SPL_TEXT_BASE
+#else
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+#endif
+
+#if defined(CONFIG_RAMBOOT_PBL)
+#define CONFIG_SYS_RAMBOOT
+#endif
+
+#define CONFIG_BOARD_EARLY_INIT_R
+#define CONFIG_MISC_INIT_R
+
+#define CONFIG_HWCONFIG
+
+/* define to use L1 as initial stack */
+#define CONFIG_L1_INIT_RAM
+#define CONFIG_SYS_INIT_RAM_LOCK
+#define CONFIG_SYS_INIT_RAM_ADDR       0xfdd00000      /* Initial L1 address */
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0xf
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe0ec000
+/* The assembler doesn't like typecast */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
+       ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
+         CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
+#else
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe0ec000 /* Initial L1 address */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW CONFIG_SYS_INIT_RAM_ADDR_PHYS
+#endif
+#define CONFIG_SYS_INIT_RAM_SIZE               0x00004000
+
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
+                                       GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
+
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
+
+/* Serial Port */
+#define CONFIG_CONS_INDEX      1
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE    1
+#define CONFIG_SYS_NS16550_CLK         (get_bus_freq(0)/2)
+
+#define CONFIG_SYS_BAUDRATE_TABLE      \
+       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
+
+#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_CCSRBAR+0x11C500)
+#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_CCSRBAR+0x11C600)
+#define CONFIG_SYS_NS16550_COM3        (CONFIG_SYS_CCSRBAR+0x11D500)
+#define CONFIG_SYS_NS16550_COM4        (CONFIG_SYS_CCSRBAR+0x11D600)
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV   /* determine from environment */
+
+/* Use the HUSH parser */
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
+
+/* Video */
+#ifdef CONFIG_PPC_T1024                /* no DIU on T1023 */
+#define CONFIG_FSL_DIU_FB
+#ifdef CONFIG_FSL_DIU_FB
+#define CONFIG_FSL_DIU_CH7301
+#define CONFIG_SYS_DIU_ADDR    (CONFIG_SYS_CCSRBAR + 0x180000)
+#define CONFIG_VIDEO
+#define CONFIG_CMD_BMP
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_SW_CURSOR
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VIDEO_BMP_LOGO
+#define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
+/*
+ * With CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS, flash I/O is really slow, so
+ * disable empty flash sector detection, which is I/O-intensive.
+ */
+#undef CONFIG_SYS_FLASH_EMPTY_INFO
+#endif
+#endif
+
+/* pass open firmware flat tree */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+#define CONFIG_OF_STDOUT_VIA_ALIAS
+
+/* new uImage format support */
+#define CONFIG_FIT
+#define CONFIG_FIT_VERBOSE     /* enable fit_format_{error,warning}() */
+
+/* I2C */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_FSL             /* Use FSL common I2C driver */
+#define CONFIG_SYS_FSL_I2C_SPEED       50000   /* I2C speed in Hz */
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C2_SPEED      50000   /* I2C speed in Hz */
+#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x118000
+#define CONFIG_SYS_FSL_I2C2_OFFSET     0x118100
+
+#define I2C_MUX_PCA_ADDR               0x77
+#define I2C_MUX_PCA_ADDR_PRI           0x77 /* Primary Mux*/
+#define I2C_MUX_PCA_ADDR_SEC            0x76 /* Secondary multiplexer */
+#define I2C_RETIMER_ADDR               0x18
+
+/* I2C bus multiplexer */
+#define I2C_MUX_CH_DEFAULT      0x8
+#define I2C_MUX_CH_DIU         0xC
+#define I2C_MUX_CH5            0xD
+#define I2C_MUX_CH7            0xF
+
+/* LDI/DVI Encoder for display */
+#define CONFIG_SYS_I2C_LDI_ADDR         0x38
+#define CONFIG_SYS_I2C_DVI_ADDR         0x75
+
+/*
+ * RTC configuration
+ */
+#define RTC
+#define CONFIG_RTC_DS3231      1
+#define CONFIG_SYS_I2C_RTC_ADDR        0x68
+
+/*
+ * eSPI - Enhanced SPI
+ */
+#define CONFIG_FSL_ESPI
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_STMICRO
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SPI_FLASH_SST
+#define CONFIG_SPI_FLASH_EON
+#endif
+#define CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SF_DEFAULT_SPEED         10000000
+#define CONFIG_SF_DEFAULT_MODE   0
+
+/*
+ * General PCIe
+ * Memory space is mapped 1-1, but I/O space must start from 0.
+ */
+#define CONFIG_PCI             /* Enable PCI/PCIE */
+#define CONFIG_PCIE1           /* PCIE controler 1 */
+#define CONFIG_PCIE2           /* PCIE controler 2 */
+#define CONFIG_PCIE3           /* PCIE controler 3 */
+#define CONFIG_FSL_PCI_INIT    /* Use common FSL init code */
+#define CONFIG_SYS_PCI_64BIT   /* enable 64-bit PCI resources */
+#define CONFIG_PCI_INDIRECT_BRIDGE
+
+#ifdef CONFIG_PCI
+/* controller 1, direct to uli, tgtid 3, Base address 20000 */
+#ifdef CONFIG_PCIE1
+#define        CONFIG_SYS_PCIE1_MEM_VIRT       0x80000000
+#ifdef CONFIG_PHYS_64BIT
+#define        CONFIG_SYS_PCIE1_MEM_BUS        0xe0000000
+#define        CONFIG_SYS_PCIE1_MEM_PHYS       0xc00000000ull
+#else
+#define CONFIG_SYS_PCIE1_MEM_BUS       0x80000000
+#define CONFIG_SYS_PCIE1_MEM_PHYS      0x80000000
+#endif
+#define CONFIG_SYS_PCIE1_MEM_SIZE      0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE1_IO_VIRT       0xf8000000
+#define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xff8000000ull
+#else
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xf8000000
+#endif
+#define CONFIG_SYS_PCIE1_IO_SIZE       0x00010000      /* 64k */
+#endif
+
+/* controller 2, Slot 2, tgtid 2, Base address 201000 */
+#ifdef CONFIG_PCIE2
+#define CONFIG_SYS_PCIE2_MEM_VIRT      0x90000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE2_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE2_MEM_PHYS      0xc10000000ull
+#else
+#define CONFIG_SYS_PCIE2_MEM_BUS       0x90000000
+#define CONFIG_SYS_PCIE2_MEM_PHYS      0x90000000
+#endif
+#define CONFIG_SYS_PCIE2_MEM_SIZE      0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE2_IO_VIRT       0xf8010000
+#define CONFIG_SYS_PCIE2_IO_BUS                0x00000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE2_IO_PHYS       0xff8010000ull
+#else
+#define CONFIG_SYS_PCIE2_IO_PHYS       0xf8010000
+#endif
+#define CONFIG_SYS_PCIE2_IO_SIZE       0x00010000      /* 64k */
+#endif
+
+/* controller 3, Slot 1, tgtid 1, Base address 202000 */
+#ifdef CONFIG_PCIE3
+#define CONFIG_SYS_PCIE3_MEM_VIRT      0xa0000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE3_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE3_MEM_PHYS      0xc20000000ull
+#else
+#define CONFIG_SYS_PCIE3_MEM_BUS       0xa0000000
+#define CONFIG_SYS_PCIE3_MEM_PHYS      0xa0000000
+#endif
+#define CONFIG_SYS_PCIE3_MEM_SIZE      0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE3_IO_VIRT       0xf8020000
+#define CONFIG_SYS_PCIE3_IO_BUS                0x00000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE3_IO_PHYS       0xff8020000ull
+#else
+#define CONFIG_SYS_PCIE3_IO_PHYS       0xf8020000
+#endif
+#define CONFIG_SYS_PCIE3_IO_SIZE       0x00010000      /* 64k */
+#endif
+
+#define CONFIG_PCI_PNP                 /* do pci plug-and-play */
+#define CONFIG_E1000
+#define CONFIG_PCI_SCAN_SHOW           /* show pci devices on startup */
+#define CONFIG_DOS_PARTITION
+#endif /* CONFIG_PCI */
+
+/*
+ *SATA
+ */
+#define CONFIG_FSL_SATA_V2
+#ifdef CONFIG_FSL_SATA_V2
+#define CONFIG_LIBATA
+#define CONFIG_FSL_SATA
+#define CONFIG_SYS_SATA_MAX_DEVICE     1
+#define CONFIG_SATA1
+#define CONFIG_SYS_SATA1               CONFIG_SYS_MPC85xx_SATA1_ADDR
+#define CONFIG_SYS_SATA1_FLAGS         FLAGS_DMA
+#define CONFIG_LBA48
+#define CONFIG_CMD_SATA
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_EXT2
+#endif
+
+/*
+ * USB
+ */
+#define CONFIG_HAS_FSL_DR_USB
+
+#ifdef CONFIG_HAS_FSL_DR_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_CMD_EXT2
+#endif
+
+/*
+ * SDHC
+ */
+#define CONFIG_MMC
+#ifdef CONFIG_MMC
+#define CONFIG_FSL_ESDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      CONFIG_SYS_MPC85xx_ESDHC_ADDR
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
+/* Qman/Bman */
+#ifndef CONFIG_NOBQFMAN
+#define CONFIG_SYS_DPAA_QBMAN          /* Support Q/Bman */
+#define CONFIG_SYS_BMAN_NUM_PORTALS    10
+#define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
+#else
+#define CONFIG_SYS_BMAN_MEM_PHYS       CONFIG_SYS_BMAN_MEM_BASE
+#endif
+#define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
+#define CONFIG_SYS_QMAN_NUM_PORTALS    10
+#define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
+#else
+#define CONFIG_SYS_QMAN_MEM_PHYS       CONFIG_SYS_QMAN_MEM_BASE
+#endif
+#define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
+
+#define CONFIG_SYS_DPAA_FMAN
+
+#define CONFIG_QE
+#define CONFIG_U_QE
+/* Default address of microcode for the Linux FMan driver */
+#if defined(CONFIG_SPIFLASH)
+/*
+ * env is stored at 0x100000, sector size is 0x10000, ucode is stored after
+ * env, so we got 0x110000.
+ */
+#define CONFIG_SYS_QE_FW_IN_SPIFLASH
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
+#define CONFIG_SYS_QE_FW_ADDR  0x130000
+#elif defined(CONFIG_SDCARD)
+/*
+ * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
+ * about 1MB (2048 blocks), Env is stored after the image, and the env size is
+ * 0x2000 (16 blocks), 8 + 2048 + 16 = 2072, enlarge it to 2080(0x820).
+ */
+#define CONFIG_SYS_QE_FMAN_FW_IN_MMC
+#define CONFIG_SYS_FMAN_FW_ADDR                (512 * 0x820)
+#define CONFIG_SYS_QE_FW_ADDR          (512 * 0x920)
+#elif defined(CONFIG_NAND)
+#define CONFIG_SYS_QE_FMAN_FW_IN_NAND
+#define CONFIG_SYS_FMAN_FW_ADDR                (11 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_QE_FW_ADDR          (12 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+/*
+ * Slave has no ucode locally, it can fetch this from remote. When implementing
+ * in two corenet boards, slave's ucode could be stored in master's memory
+ * space, the address can be mapped from slave TLB->slave LAW->
+ * slave SRIO or PCIE outbound window->master inbound window->
+ * master LAW->the ucode address in master's memory space.
+ */
+#define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
+#define CONFIG_SYS_FMAN_FW_ADDR 0xFFE00000
+#else
+#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
+#define CONFIG_SYS_QE_FW_ADDR          0xEFE00000
+#endif
+#define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
+#define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
+#endif /* CONFIG_NOBQFMAN */
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+#define CONFIG_FMAN_ENET
+#define CONFIG_PHYLIB_10G
+#define CONFIG_PHY_VITESSE
+#define CONFIG_PHY_REALTEK
+#define CONFIG_PHY_TERANETICS
+#define RGMII_PHY1_ADDR                0x1
+#define RGMII_PHY2_ADDR                0x2
+#define SGMII_CARD_AQ_PHY_ADDR_S3 0x3
+#define SGMII_CARD_AQ_PHY_ADDR_S4 0x4
+#define SGMII_CARD_AQ_PHY_ADDR_S5 0x5
+#define SGMII_CARD_PORT1_PHY_ADDR 0x1C
+#define SGMII_CARD_PORT2_PHY_ADDR 0x1D
+#define SGMII_CARD_PORT3_PHY_ADDR 0x1E
+#define SGMII_CARD_PORT4_PHY_ADDR 0x1F
+#endif
+
+#ifdef CONFIG_FMAN_ENET
+#define CONFIG_MII             /* MII PHY management */
+#define CONFIG_ETHPRIME                "FM1@DTSEC4"
+#define CONFIG_PHY_GIGE                /* Include GbE speed/duplex detection */
+#endif
+
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#ifndef CONFIG_SYS_NO_FLASH
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#define MTDIDS_DEFAULT    "nor0=fe8000000.nor,nand0=fff800000.flash," \
+                         "spi0=spife110000.0"
+#define MTDPARTS_DEFAULT  "mtdparts=fe8000000.nor:1m(uboot),5m(kernel)," \
+                         "128k(dtb),96m(fs),-(user);"\
+                         "fff800000.flash:2m(uboot),9m(kernel),"\
+                         "128k(dtb),96m(fs),-(user);spife110000.0:" \
+                         "2m(uboot),9m(kernel),128k(dtb),-(user)"
+#endif
+
+/*
+ * Environment
+ */
+#define CONFIG_LOADS_ECHO              /* echo on for serial download */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE   /* allow baudrate change */
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_DATE
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_ERRATA
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_REGINFO
+#define CONFIG_CMD_SETEXPR
+
+#ifdef CONFIG_PCI
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_NET
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
+#define CONFIG_CMDLINE_EDITING                 /* Command-line editing */
+#define CONFIG_AUTO_COMPLETE                   /* add autocompletion support */
+#define CONFIG_SYS_LOAD_ADDR   0x2000000       /* default load address */
+#define CONFIG_SYS_PROMPT      "=> "           /* Monitor Command Prompt */
+#ifdef CONFIG_CMD_KGDB
+#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size */
+#else
+#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size */
+#endif
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
+#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
+#define CONFIG_SYS_BARGSIZE  CONFIG_SYS_CBSIZE  /* Boot Argument Buffer Size */
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 64 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ   (64 << 20)      /* Initial map for Linux*/
+#define CONFIG_SYS_BOOTM_LEN   (64 << 20)      /* Increase max gunzip size */
+
+#ifdef CONFIG_CMD_KGDB
+#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
+#endif
+
+/*
+ * Environment Configuration
+ */
+#define CONFIG_ROOTPATH                "/opt/nfsroot"
+#define CONFIG_BOOTFILE                "uImage"
+#define CONFIG_UBOOTPATH       "u-boot.bin" /* U-Boot image on TFTP server */
+#define CONFIG_LOADADDR                1000000 /* default location for tftp, bootm */
+#define CONFIG_BOOTDELAY       10      /* -1 disables auto-boot */
+#define CONFIG_BAUDRATE                115200
+#define __USB_PHY_TYPE         utmi
+
+
+#define        CONFIG_EXTRA_ENV_SETTINGS                               \
+       "hwconfig=fsl_ddr:ctlr_intlv=cacheline,bank_intlv=cs0_cs1;\0"  \
+       "usb1:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) "\0" \
+       "bootargs=root=/dev/ram rw console=ttyS0,115200\0" \
+       "ramdiskfile=t1024qds/ramdisk.uboot\0"                  \
+       "fdtfile=t1024qds/t1024qds.dtb\0"                       \
+       "netdev=eth0\0"                                         \
+       "video-mode=fslfb:1024x768-32@60,monitor=dvi\0"         \
+       "uboot=" __stringify(CONFIG_UBOOTPATH) "\0"             \
+       "ubootaddr=" __stringify(CONFIG_SYS_TEXT_BASE) "\0"     \
+       "tftpflash=tftpboot $loadaddr $uboot && "               \
+       "protect off $ubootaddr +$filesize && "                 \
+       "erase $ubootaddr +$filesize && "                       \
+       "cp.b $loadaddr $ubootaddr $filesize && "               \
+       "protect on $ubootaddr +$filesize && "                  \
+       "cmp.b $loadaddr $ubootaddr $filesize\0"                \
+       "consoledev=ttyS0\0"                                    \
+       "ramdiskaddr=2000000\0"                                 \
+       "fdtaddr=d00000\0"                                      \
+       "bdev=sda3\0"
+
+#define CONFIG_LINUX                                   \
+       "setenv bootargs root=/dev/ram rw "             \
+       "console=$consoledev,$baudrate $othbootargs;"   \
+       "setenv ramdiskaddr 0x02000000;"                \
+       "setenv fdtaddr 0x00c00000;"                    \
+       "setenv loadaddr 0x1000000;"                    \
+       "bootm $loadaddr $ramdiskaddr $fdtaddr"
+
+#define CONFIG_NFSBOOTCOMMAND                  \
+       "setenv bootargs root=/dev/nfs rw "     \
+       "nfsroot=$serverip:$rootpath "          \
+       "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
+       "console=$consoledev,$baudrate $othbootargs;"   \
+       "tftp $loadaddr $bootfile;"             \
+       "tftp $fdtaddr $fdtfile;"               \
+       "bootm $loadaddr - $fdtaddr"
+
+#define CONFIG_BOOTCOMMAND     CONFIG_LINUX
+
+#ifdef CONFIG_SECURE_BOOT
+#include <asm/fsl_secure_boot.h>
+#endif
+
+#endif /* __T1024QDS_H */
diff --git a/include/configs/T102xRDB.h b/include/configs/T102xRDB.h
new file mode 100644 (file)
index 0000000..82b669b
--- /dev/null
@@ -0,0 +1,912 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+/*
+ * T1024/T1023 RDB board configuration file
+ */
+
+#ifndef __T1024RDB_H
+#define __T1024RDB_H
+
+/* High Level Configuration Options */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_BOOKE
+#define CONFIG_E500                    /* BOOKE e500 family */
+#define CONFIG_E500MC                  /* BOOKE e500mc family */
+#define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
+#define CONFIG_MP                      /* support multiple processors */
+#define CONFIG_PHYS_64BIT
+#define CONFIG_ENABLE_36BIT_PHYS
+
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_ADDR_MAP                1
+#define CONFIG_SYS_NUM_ADDR_MAP        64      /* number of TLB1 entries */
+#endif
+
+#define CONFIG_SYS_FSL_CPC             /* Corenet Platform Cache */
+#define CONFIG_SYS_NUM_CPC             CONFIG_NUM_DDR_CONTROLLERS
+#define CONFIG_FSL_IFC                 /* Enable IFC Support */
+
+#define CONFIG_FSL_LAW                 /* Use common FSL init code */
+#define CONFIG_ENV_OVERWRITE
+
+/* support deep sleep */
+#define CONFIG_DEEP_SLEEP
+#define CONFIG_SILENT_CONSOLE
+
+#ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_SYS_FSL_PBL_PBI board/freescale/t102xrdb/t1024_pbi.cfg
+#define CONFIG_SYS_FSL_PBL_RCW board/freescale/t102xrdb/t1024_rcw.cfg
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_FLUSH_IMAGE
+#define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_I2C_SUPPORT
+#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
+#define CONFIG_FSL_LAW                 /* Use common FSL init code */
+#define CONFIG_SYS_TEXT_BASE           0x00201000
+#define CONFIG_SPL_TEXT_BASE           0xFFFD8000
+#define CONFIG_SPL_PAD_TO              0x40000
+#define CONFIG_SPL_MAX_SIZE            0x28000
+#define RESET_VECTOR_OFFSET            0x27FFC
+#define BOOT_PAGE_OFFSET               0x27000
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SPL_SKIP_RELOCATE
+#define CONFIG_SPL_COMMON_INIT_DDR
+#define CONFIG_SYS_CCSR_DO_NOT_RELOCATE
+#define CONFIG_SYS_NO_FLASH
+#endif
+
+#ifdef CONFIG_NAND
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    (768 << 10)
+#define CONFIG_SYS_NAND_U_BOOT_DST     0x00200000
+#define CONFIG_SYS_NAND_U_BOOT_START   0x00200000
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    (256 << 10)
+#define CONFIG_SYS_LDSCRIPT    "arch/powerpc/cpu/mpc85xx/u-boot-nand.lds"
+#define CONFIG_SPL_NAND_BOOT
+#endif
+
+#ifdef CONFIG_SPIFLASH
+#define CONFIG_RESET_VECTOR_ADDRESS            0x200FFC
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_MINIMAL
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE       (768 << 10)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_DST                (0x00200000)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_START      (0x00200000)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS       (256 << 10)
+#define CONFIG_SYS_LDSCRIPT            "arch/powerpc/cpu/mpc85xx/u-boot.lds"
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+#endif
+#define CONFIG_SPL_SPI_BOOT
+#endif
+
+#ifdef CONFIG_SDCARD
+#define CONFIG_RESET_VECTOR_ADDRESS    0x200FFC
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SPL_MMC_MINIMAL
+#define CONFIG_SYS_MMC_U_BOOT_SIZE     (768 << 10)
+#define CONFIG_SYS_MMC_U_BOOT_DST      (0x00200000)
+#define CONFIG_SYS_MMC_U_BOOT_START    (0x00200000)
+#define CONFIG_SYS_MMC_U_BOOT_OFFS     (260 << 10)
+#define CONFIG_SYS_LDSCRIPT            "arch/powerpc/cpu/mpc85xx/u-boot.lds"
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+#endif
+#define CONFIG_SPL_MMC_BOOT
+#endif
+
+#endif /* CONFIG_RAMBOOT_PBL */
+
+#ifndef CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_TEXT_BASE   0xeff40000
+#endif
+
+#ifndef CONFIG_RESET_VECTOR_ADDRESS
+#define CONFIG_RESET_VECTOR_ADDRESS    0xeffffffc
+#endif
+
+#ifndef CONFIG_SYS_NO_FLASH
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+#endif
+
+/* PCIe Boot - Master */
+#define CONFIG_SRIO_PCIE_BOOT_MASTER
+/*
+ * for slave u-boot IMAGE instored in master memory space,
+ * PHYS must be aligned based on the SIZE
+ */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE     0x100000 /* 1M */
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
+#else
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xef200000
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0xfff00000
+#endif
+/*
+ * for slave UCODE and ENV instored in master memory space,
+ * PHYS must be aligned based on the SIZE
+ */
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_PHYS 0xfef100000ull
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS         0x3ffe00000ull
+#else
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_PHYS 0xef100000
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS  0xffe00000
+#endif
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE   0x40000 /* 256K */
+/* slave core release by master*/
+#define CONFIG_SRIO_PCIE_BOOT_BRR_OFFSET       0xe00e4
+#define CONFIG_SRIO_PCIE_BOOT_RELEASE_MASK     0x00000001 /* release core 0 */
+
+/* PCIe Boot - Slave */
+#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
+#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR 0xFFE00000
+#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR_PHYS \
+               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR)
+/* Set 1M boot space for PCIe boot */
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR (CONFIG_SYS_TEXT_BASE & 0xfff00000)
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR_PHYS      \
+               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR)
+#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
+#define CONFIG_SYS_NO_FLASH
+#endif
+
+#if defined(CONFIG_SPIFLASH)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SPI_BUS             0
+#define CONFIG_ENV_SPI_CS              0
+#define CONFIG_ENV_SPI_MAX_HZ          10000000
+#define CONFIG_ENV_SPI_MODE            0
+#define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
+#define CONFIG_ENV_OFFSET              0x100000        /* 1MB */
+#define CONFIG_ENV_SECT_SIZE           0x10000
+#elif defined(CONFIG_SDCARD)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_ENV_OFFSET              (512 * 0x800)
+#elif defined(CONFIG_NAND)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_ENV_OFFSET              (2 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+#define CONFIG_ENV_IS_IN_REMOTE
+#define CONFIG_ENV_ADDR                0xffe20000
+#define CONFIG_ENV_SIZE                0x2000
+#elif defined(CONFIG_ENV_IS_NOWHERE)
+#define CONFIG_ENV_SIZE                0x2000
+#else
+#define CONFIG_ENV_IS_IN_FLASH
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
+#endif
+
+
+#ifndef __ASSEMBLY__
+unsigned long get_board_sys_clk(void);
+unsigned long get_board_ddr_clk(void);
+#endif
+
+#define CONFIG_SYS_CLK_FREQ    100000000
+#define CONFIG_DDR_CLK_FREQ    66660000
+
+/*
+ * These can be toggled for performance analysis, otherwise use default.
+ */
+#define CONFIG_SYS_CACHE_STASHING
+#define CONFIG_BACKSIDE_L2_CACHE
+#define CONFIG_SYS_INIT_L2CSR0         L2CSR0_L2E
+#define CONFIG_BTB                     /* toggle branch predition */
+#define CONFIG_DDR_ECC
+#ifdef CONFIG_DDR_ECC
+#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER
+#define CONFIG_MEM_INIT_VALUE          0xdeadbeef
+#endif
+
+#define CONFIG_SYS_MEMTEST_START       0x00200000 /* memtest works on */
+#define CONFIG_SYS_MEMTEST_END         0x00400000
+#define CONFIG_SYS_ALT_MEMTEST
+#define CONFIG_PANIC_HANG      /* do not reset board on panic */
+
+/*
+ *  Config the L3 Cache as L3 SRAM
+ */
+#define CONFIG_SYS_INIT_L3_ADDR                0xFFFC0000
+#define CONFIG_SYS_L3_SIZE             (256 << 10)
+#define CONFIG_SPL_GD_ADDR             (CONFIG_SYS_INIT_L3_ADDR + 32 * 1024)
+#ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_ENV_ADDR                        (CONFIG_SPL_GD_ADDR + 4 * 1024)
+#endif
+#define CONFIG_SPL_RELOC_MALLOC_ADDR   (CONFIG_SPL_GD_ADDR + 12 * 1024)
+#define CONFIG_SPL_RELOC_MALLOC_SIZE   (30 << 10)
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SPL_GD_ADDR + 64 * 1024)
+#define CONFIG_SPL_RELOC_STACK_SIZE    (22 << 10)
+
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_DCSRBAR             0xf0000000
+#define CONFIG_SYS_DCSRBAR_PHYS                0xf00000000ull
+#endif
+
+/* EEPROM */
+#define CONFIG_ID_EEPROM
+#define CONFIG_SYS_I2C_EEPROM_NXID
+#define CONFIG_SYS_EEPROM_BUS_NUM      0
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5
+
+/*
+ * DDR Setup
+ */
+#define CONFIG_VERY_BIG_RAM
+#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000
+#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
+#define CONFIG_DIMM_SLOTS_PER_CTLR     1
+#define CONFIG_CHIP_SELECTS_PER_CTRL   (4 * CONFIG_DIMM_SLOTS_PER_CTLR)
+#define CONFIG_DDR_SPD
+#define CONFIG_SYS_FSL_DDR3
+
+#define CONFIG_SYS_SPD_BUS_NUM 0
+#define SPD_EEPROM_ADDRESS     0x51
+
+#define CONFIG_SYS_SDRAM_SIZE  4096    /* for fixed parameter use */
+
+/*
+ * IFC Definitions
+ */
+#define CONFIG_SYS_FLASH_BASE  0xe8000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_FLASH_BASE_PHYS     (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
+#else
+#define CONFIG_SYS_FLASH_BASE_PHYS     CONFIG_SYS_FLASH_BASE
+#endif
+
+#define CONFIG_SYS_NOR0_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NOR0_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | \
+                               CSPR_PORT_SIZE_16 | \
+                               CSPR_MSEL_NOR | \
+                               CSPR_V)
+#define CONFIG_SYS_NOR_AMASK   IFC_AMASK(128*1024*1024)
+
+/* NOR Flash Timing Params */
+#define CONFIG_SYS_NOR_CSOR    CSOR_NAND_TRHZ_80
+#define CONFIG_SYS_NOR_FTIM0   (FTIM0_NOR_TACSE(0x4) | \
+                               FTIM0_NOR_TEADC(0x5) | \
+                               FTIM0_NOR_TEAHC(0x5))
+#define CONFIG_SYS_NOR_FTIM1   (FTIM1_NOR_TACO(0x35) | \
+                               FTIM1_NOR_TRAD_NOR(0x1A) |\
+                               FTIM1_NOR_TSEQRAD_NOR(0x13))
+#define CONFIG_SYS_NOR_FTIM2   (FTIM2_NOR_TCS(0x4) | \
+                               FTIM2_NOR_TCH(0x4) | \
+                               FTIM2_NOR_TWPH(0x0E) | \
+                               FTIM2_NOR_TWP(0x1c))
+#define CONFIG_SYS_NOR_FTIM3   0x0
+
+#define CONFIG_SYS_FLASH_QUIET_TEST
+#define CONFIG_FLASH_SHOW_PROGRESS     45 /* count down from 45/5: 9..1 */
+
+#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* number of banks */
+#define CONFIG_SYS_MAX_FLASH_SECT      1024    /* sectors per device */
+#define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* Flash Erase Timeout (ms) */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (ms) */
+
+#define CONFIG_SYS_FLASH_EMPTY_INFO
+#define CONFIG_SYS_FLASH_BANKS_LIST    {CONFIG_SYS_FLASH_BASE_PHYS}
+
+/* CPLD on IFC */
+#define CONFIG_SYS_CPLD_BASE           0xffdf0000
+#define CONFIG_SYS_CPLD_BASE_PHYS      (0xf00000000ull | CONFIG_SYS_CPLD_BASE)
+#define CONFIG_SYS_CSPR2_EXT           (0xf)
+#define CONFIG_SYS_CSPR2               (CSPR_PHYS_ADDR(CONFIG_SYS_CPLD_BASE) \
+                                               | CSPR_PORT_SIZE_8 \
+                                               | CSPR_MSEL_GPCM \
+                                               | CSPR_V)
+#define CONFIG_SYS_AMASK2              IFC_AMASK(64*1024)
+#define CONFIG_SYS_CSOR2               0x0
+
+/* CPLD Timing parameters for IFC CS2 */
+#define CONFIG_SYS_CS2_FTIM0           (FTIM0_GPCM_TACSE(0x0e) | \
+                                               FTIM0_GPCM_TEADC(0x0e) | \
+                                               FTIM0_GPCM_TEAHC(0x0e))
+#define CONFIG_SYS_CS2_FTIM1           (FTIM1_GPCM_TACO(0x0e) | \
+                                               FTIM1_GPCM_TRAD(0x1f))
+#define CONFIG_SYS_CS2_FTIM2           (FTIM2_GPCM_TCS(0x0e) | \
+                                               FTIM2_GPCM_TCH(0x8) | \
+                                               FTIM2_GPCM_TWP(0x1f))
+#define CONFIG_SYS_CS2_FTIM3           0x0
+
+/* NAND Flash on IFC */
+#define CONFIG_NAND_FSL_IFC
+#define CONFIG_SYS_NAND_BASE           0xff800000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_NAND_BASE_PHYS      (0xf00000000ull | CONFIG_SYS_NAND_BASE)
+#else
+#define CONFIG_SYS_NAND_BASE_PHYS      CONFIG_SYS_NAND_BASE
+#endif
+#define CONFIG_SYS_NAND_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NAND_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
+                               | CSPR_PORT_SIZE_8 /* Port Size = 8 bit */ \
+                               | CSPR_MSEL_NAND        /* MSEL = NAND */ \
+                               | CSPR_V)
+#define CONFIG_SYS_NAND_AMASK  IFC_AMASK(64*1024)
+
+#define CONFIG_SYS_NAND_CSOR   (CSOR_NAND_ECC_ENC_EN   /* ECC on encode */ \
+                               | CSOR_NAND_ECC_DEC_EN  /* ECC on decode */ \
+                               | CSOR_NAND_ECC_MODE_4  /* 4-bit ECC */ \
+                               | CSOR_NAND_RAL_3       /* RAL = 3Byes */ \
+                               | CSOR_NAND_PGS_4K      /* Page Size = 4K */ \
+                               | CSOR_NAND_SPRZ_224    /* Spare size = 224 */ \
+                               | CSOR_NAND_PB(64))     /*Pages Per Block = 64*/
+
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+
+/* ONFI NAND Flash mode0 Timing Params */
+#define CONFIG_SYS_NAND_FTIM0          (FTIM0_NAND_TCCST(0x07) | \
+                                       FTIM0_NAND_TWP(0x18)   | \
+                                       FTIM0_NAND_TWCHT(0x07) | \
+                                       FTIM0_NAND_TWH(0x0a))
+#define CONFIG_SYS_NAND_FTIM1          (FTIM1_NAND_TADLE(0x32) | \
+                                       FTIM1_NAND_TWBE(0x39)  | \
+                                       FTIM1_NAND_TRR(0x0e)   | \
+                                       FTIM1_NAND_TRP(0x18))
+#define CONFIG_SYS_NAND_FTIM2          (FTIM2_NAND_TRAD(0x0f) | \
+                                       FTIM2_NAND_TREH(0x0a) | \
+                                       FTIM2_NAND_TWHRE(0x1e))
+#define CONFIG_SYS_NAND_FTIM3          0x0
+
+#define CONFIG_SYS_NAND_DDR_LAW                11
+#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_MTD_NAND_VERIFY_WRITE
+#define CONFIG_CMD_NAND
+
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (512 * 1024)
+
+#if defined(CONFIG_NAND)
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
+#define CONFIG_SYS_CSPR1_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR1               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK1              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR1               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS1_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS1_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NOR_FTIM3
+#else
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NOR_FTIM3
+#define CONFIG_SYS_CSPR1_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR1               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK1              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR1               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS1_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS1_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NAND_FTIM3
+#endif
+
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SPL_TEXT_BASE
+#else
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+#endif
+
+#if defined(CONFIG_RAMBOOT_PBL)
+#define CONFIG_SYS_RAMBOOT
+#endif
+
+#define CONFIG_BOARD_EARLY_INIT_R
+#define CONFIG_MISC_INIT_R
+
+#define CONFIG_HWCONFIG
+
+/* define to use L1 as initial stack */
+#define CONFIG_L1_INIT_RAM
+#define CONFIG_SYS_INIT_RAM_LOCK
+#define CONFIG_SYS_INIT_RAM_ADDR       0xfdd00000      /* Initial L1 address */
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0xf
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe0ec000
+/* The assembler doesn't like typecast */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
+       ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
+         CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
+#else
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe0ec000 /* Initial L1 address */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW CONFIG_SYS_INIT_RAM_ADDR_PHYS
+#endif
+#define CONFIG_SYS_INIT_RAM_SIZE               0x00004000
+
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
+                                       GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
+
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
+
+/* Serial Port */
+#define CONFIG_CONS_INDEX      1
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE    1
+#define CONFIG_SYS_NS16550_CLK         (get_bus_freq(0)/2)
+
+#define CONFIG_SYS_BAUDRATE_TABLE      \
+       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
+
+#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_CCSRBAR+0x11C500)
+#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_CCSRBAR+0x11C600)
+#define CONFIG_SYS_NS16550_COM3        (CONFIG_SYS_CCSRBAR+0x11D500)
+#define CONFIG_SYS_NS16550_COM4        (CONFIG_SYS_CCSRBAR+0x11D600)
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV   /* determine from environment */
+
+/* Use the HUSH parser */
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
+
+/* Video */
+#undef CONFIG_FSL_DIU_FB       /* RDB doesn't support DIU */
+#ifdef CONFIG_FSL_DIU_FB
+#define CONFIG_SYS_DIU_ADDR    (CONFIG_SYS_CCSRBAR + 0x180000)
+#define CONFIG_VIDEO
+#define CONFIG_CMD_BMP
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_SW_CURSOR
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VIDEO_BMP_LOGO
+#define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
+/*
+ * With CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS, flash I/O is really slow, so
+ * disable empty flash sector detection, which is I/O-intensive.
+ */
+#undef CONFIG_SYS_FLASH_EMPTY_INFO
+#endif
+
+/* pass open firmware flat tree */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+#define CONFIG_OF_STDOUT_VIA_ALIAS
+
+/* new uImage format support */
+#define CONFIG_FIT
+#define CONFIG_FIT_VERBOSE     /* enable fit_format_{error,warning}() */
+
+/* I2C */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_FSL             /* Use FSL common I2C driver */
+#define CONFIG_SYS_FSL_I2C_SPEED       50000   /* I2C speed in Hz */
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C2_SPEED      50000   /* I2C speed in Hz */
+#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x118000
+#define CONFIG_SYS_FSL_I2C2_OFFSET     0x118100
+
+#define I2C_MUX_PCA_ADDR               0x77
+#define I2C_MUX_PCA_ADDR_PRI           0x77 /* Primary Mux*/
+
+
+/* I2C bus multiplexer */
+#define I2C_MUX_CH_DEFAULT     0x8
+
+/*
+ * RTC configuration
+ */
+#define RTC
+#define CONFIG_RTC_DS1337      1
+#define CONFIG_SYS_I2C_RTC_ADDR        0x68
+
+/*
+ * eSPI - Enhanced SPI
+ */
+#define CONFIG_FSL_ESPI
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SF_DEFAULT_SPEED        10000000
+#define CONFIG_SF_DEFAULT_MODE 0
+
+/*
+ * General PCIe
+ * Memory space is mapped 1-1, but I/O space must start from 0.
+ */
+#define CONFIG_PCI             /* Enable PCI/PCIE */
+#define CONFIG_PCIE1           /* PCIE controler 1 */
+#define CONFIG_PCIE2           /* PCIE controler 2 */
+#define CONFIG_PCIE3           /* PCIE controler 3 */
+#ifdef CONFIG_PPC_T1040
+#define CONFIG_PCIE4           /* PCIE controler 4 */
+#endif
+#define CONFIG_FSL_PCI_INIT    /* Use common FSL init code */
+#define CONFIG_SYS_PCI_64BIT   /* enable 64-bit PCI resources */
+#define CONFIG_PCI_INDIRECT_BRIDGE
+
+#ifdef CONFIG_PCI
+/* controller 1, direct to uli, tgtid 3, Base address 20000 */
+#ifdef CONFIG_PCIE1
+#define        CONFIG_SYS_PCIE1_MEM_VIRT       0x80000000
+#ifdef CONFIG_PHYS_64BIT
+#define        CONFIG_SYS_PCIE1_MEM_BUS        0xe0000000
+#define        CONFIG_SYS_PCIE1_MEM_PHYS       0xc00000000ull
+#else
+#define CONFIG_SYS_PCIE1_MEM_BUS       0x80000000
+#define CONFIG_SYS_PCIE1_MEM_PHYS      0x80000000
+#endif
+#define CONFIG_SYS_PCIE1_MEM_SIZE      0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE1_IO_VIRT       0xf8000000
+#define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xff8000000ull
+#else
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xf8000000
+#endif
+#define CONFIG_SYS_PCIE1_IO_SIZE       0x00010000      /* 64k */
+#endif
+
+/* controller 2, Slot 2, tgtid 2, Base address 201000 */
+#ifdef CONFIG_PCIE2
+#define CONFIG_SYS_PCIE2_MEM_VIRT      0x90000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE2_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE2_MEM_PHYS      0xc10000000ull
+#else
+#define CONFIG_SYS_PCIE2_MEM_BUS       0x90000000
+#define CONFIG_SYS_PCIE2_MEM_PHYS      0x90000000
+#endif
+#define CONFIG_SYS_PCIE2_MEM_SIZE      0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE2_IO_VIRT       0xf8010000
+#define CONFIG_SYS_PCIE2_IO_BUS                0x00000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE2_IO_PHYS       0xff8010000ull
+#else
+#define CONFIG_SYS_PCIE2_IO_PHYS       0xf8010000
+#endif
+#define CONFIG_SYS_PCIE2_IO_SIZE       0x00010000      /* 64k */
+#endif
+
+/* controller 3, Slot 1, tgtid 1, Base address 202000 */
+#ifdef CONFIG_PCIE3
+#define CONFIG_SYS_PCIE3_MEM_VIRT      0xa0000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE3_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE3_MEM_PHYS      0xc20000000ull
+#else
+#define CONFIG_SYS_PCIE3_MEM_BUS       0xa0000000
+#define CONFIG_SYS_PCIE3_MEM_PHYS      0xa0000000
+#endif
+#define CONFIG_SYS_PCIE3_MEM_SIZE      0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE3_IO_VIRT       0xf8020000
+#define CONFIG_SYS_PCIE3_IO_BUS                0x00000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE3_IO_PHYS       0xff8020000ull
+#else
+#define CONFIG_SYS_PCIE3_IO_PHYS       0xf8020000
+#endif
+#define CONFIG_SYS_PCIE3_IO_SIZE       0x00010000      /* 64k */
+#endif
+
+/* controller 4, Base address 203000, to be removed */
+#ifdef CONFIG_PCIE4
+#define CONFIG_SYS_PCIE4_MEM_VIRT       0xb0000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE4_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE4_MEM_PHYS       0xc30000000ull
+#else
+#define CONFIG_SYS_PCIE4_MEM_BUS       0xb0000000
+#define CONFIG_SYS_PCIE4_MEM_PHYS      0xb0000000
+#endif
+#define CONFIG_SYS_PCIE4_MEM_SIZE       0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE4_IO_VIRT       0xf8030000
+#define CONFIG_SYS_PCIE4_IO_BUS                0x00000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_PCIE4_IO_PHYS       0xff8030000ull
+#else
+#define CONFIG_SYS_PCIE4_IO_PHYS       0xf8030000
+#endif
+#define CONFIG_SYS_PCIE4_IO_SIZE       0x00010000      /* 64k */
+#endif
+
+#define CONFIG_PCI_PNP                 /* do pci plug-and-play */
+#define CONFIG_E1000
+#define CONFIG_PCI_SCAN_SHOW           /* show pci devices on startup */
+#define CONFIG_DOS_PARTITION
+#endif /* CONFIG_PCI */
+
+/*
+ * USB
+ */
+#define CONFIG_HAS_FSL_DR_USB
+
+#ifdef CONFIG_HAS_FSL_DR_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_CMD_EXT2
+#endif
+
+/*
+ * SDHC
+ */
+#define CONFIG_MMC
+#ifdef CONFIG_MMC
+#define CONFIG_FSL_ESDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      CONFIG_SYS_MPC85xx_ESDHC_ADDR
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
+/* Qman/Bman */
+#ifndef CONFIG_NOBQFMAN
+#define CONFIG_SYS_DPAA_QBMAN          /* Support Q/Bman */
+#define CONFIG_SYS_BMAN_NUM_PORTALS    10
+#define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
+#else
+#define CONFIG_SYS_BMAN_MEM_PHYS       CONFIG_SYS_BMAN_MEM_BASE
+#endif
+#define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
+#define CONFIG_SYS_QMAN_NUM_PORTALS    10
+#define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
+#ifdef CONFIG_PHYS_64BIT
+#define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
+#else
+#define CONFIG_SYS_QMAN_MEM_PHYS       CONFIG_SYS_QMAN_MEM_BASE
+#endif
+#define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
+
+#define CONFIG_SYS_DPAA_FMAN
+
+#define CONFIG_QE
+#define CONFIG_U_QE
+/* Default address of microcode for the Linux FMan driver */
+#if defined(CONFIG_SPIFLASH)
+/*
+ * env is stored at 0x100000, sector size is 0x10000, ucode is stored after
+ * env, so we got 0x110000.
+ */
+#define CONFIG_SYS_QE_FW_IN_SPIFLASH
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
+#define CONFIG_SYS_QE_FW_ADDR  0x130000
+#elif defined(CONFIG_SDCARD)
+/*
+ * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
+ * about 1MB (2048 blocks), Env is stored after the image, and the env size is
+ * 0x2000 (16 blocks), 8 + 2048 + 16 = 2072, enlarge it to 2080(0x820).
+ */
+#define CONFIG_SYS_QE_FMAN_FW_IN_MMC
+#define CONFIG_SYS_FMAN_FW_ADDR                (512 * 0x820)
+#define CONFIG_SYS_QE_FW_ADDR          (512 * 0x920)
+#elif defined(CONFIG_NAND)
+#define CONFIG_SYS_QE_FMAN_FW_IN_NAND
+#define CONFIG_SYS_FMAN_FW_ADDR                (3 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_QE_FW_ADDR          (4 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+/*
+ * Slave has no ucode locally, it can fetch this from remote. When implementing
+ * in two corenet boards, slave's ucode could be stored in master's memory
+ * space, the address can be mapped from slave TLB->slave LAW->
+ * slave SRIO or PCIE outbound window->master inbound window->
+ * master LAW->the ucode address in master's memory space.
+ */
+#define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
+#define CONFIG_SYS_FMAN_FW_ADDR                0xFFE00000
+#else
+#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
+#define CONFIG_SYS_QE_FW_ADDR          0xEFE00000
+#endif
+#define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
+#define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
+#endif /* CONFIG_NOBQFMAN */
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+#define CONFIG_FMAN_ENET
+#define CONFIG_PHYLIB_10G
+#define CONFIG_PHY_REALTEK
+#define RGMII_PHY1_ADDR                0x2
+#define RGMII_PHY2_ADDR                0x6
+#define FM1_10GEC1_PHY_ADDR    0x1
+#endif
+
+#ifdef CONFIG_FMAN_ENET
+#define CONFIG_MII             /* MII PHY management */
+#define CONFIG_ETHPRIME                "FM1@DTSEC4"
+#define CONFIG_PHY_GIGE                /* Include GbE speed/duplex detection */
+#endif
+
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#ifndef CONFIG_SYS_NO_FLASH
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#define MTDIDS_DEFAULT "nor0=fe8000000.nor,nand0=fff800000.flash," \
+                       "spi0=spife110000.1"
+#define MTDPARTS_DEFAULT "mtdparts=fe8000000.nor:1m(uboot),5m(kernel)," \
+                       "128k(dtb),96m(fs),-(user);fff800000.flash:1m(uboot)," \
+                       "5m(kernel),128k(dtb),96m(fs),-(user);spife110000.0:" \
+                       "1m(uboot),5m(kernel),128k(dtb),-(user)"
+#endif
+
+/*
+ * Environment
+ */
+#define CONFIG_LOADS_ECHO              /* echo on for serial download */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE   /* allow baudrate change */
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_DATE
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_ERRATA
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_ECHO
+#define CONFIG_CMD_REGINFO
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_CMD_BDI
+
+#ifdef CONFIG_PCI
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_NET
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
+#define CONFIG_CMDLINE_EDITING                 /* Command-line editing */
+#define CONFIG_AUTO_COMPLETE                   /* add autocompletion support */
+#define CONFIG_SYS_LOAD_ADDR   0x2000000       /* default load address */
+#define CONFIG_SYS_PROMPT      "=> "           /* Monitor Command Prompt */
+#ifdef CONFIG_CMD_KGDB
+#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size */
+#else
+#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size */
+#endif
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
+#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
+#define CONFIG_SYS_BARGSIZE  CONFIG_SYS_CBSIZE  /* Boot Argument Buffer Size */
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 64 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ   (64 << 20)      /* Initial map for Linux*/
+#define CONFIG_SYS_BOOTM_LEN   (64 << 20)      /* Increase max gunzip size */
+
+#ifdef CONFIG_CMD_KGDB
+#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
+#endif
+
+/*
+ * Environment Configuration
+ */
+#define CONFIG_ROOTPATH                "/opt/nfsroot"
+#define CONFIG_BOOTFILE                "uImage"
+#define CONFIG_UBOOTPATH       "u-boot.bin" /* U-Boot image on TFTP server */
+#define CONFIG_LOADADDR                1000000 /* default location for tftp, bootm */
+#define CONFIG_BOOTDELAY       10      /* -1 disables auto-boot */
+#define CONFIG_BAUDRATE                115200
+#define __USB_PHY_TYPE         utmi
+
+#ifdef CONFIG_PPC_T1024
+#define CONFIG_BOARDNAME "t1024rdb"
+#else
+#define CONFIG_BOARDNAME "t1023rdb"
+#endif
+
+#define        CONFIG_EXTRA_ENV_SETTINGS                               \
+       "hwconfig=fsl_ddr:ctlr_intlv=cacheline,"                \
+       "bank_intlv=cs0_cs1\0"                                  \
+       "usb1:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) "\0"  \
+       "ramdiskfile=" __stringify(CONFIG_BOARDNAME) "/ramdisk.uboot\0" \
+       "fdtfile=" __stringify(CONFIG_BOARDNAME) "/"            \
+       __stringify(CONFIG_BOARDNAME) ".dtb\0"                  \
+       "uboot=" __stringify(CONFIG_UBOOTPATH) "\0"             \
+       "ubootaddr=" __stringify(CONFIG_SYS_TEXT_BASE) "\0"     \
+       "bootargs=root=/dev/ram rw console=ttyS0,115200\0" \
+       "netdev=eth0\0"                                         \
+       "tftpflash=tftpboot $loadaddr $uboot && "               \
+       "protect off $ubootaddr +$filesize && "                 \
+       "erase $ubootaddr +$filesize && "                       \
+       "cp.b $loadaddr $ubootaddr $filesize && "               \
+       "protect on $ubootaddr +$filesize && "                  \
+       "cmp.b $loadaddr $ubootaddr $filesize\0"                \
+       "consoledev=ttyS0\0"                                    \
+       "ramdiskaddr=2000000\0"                                 \
+       "fdtaddr=c00000\0"                                      \
+       "bdev=sda3\0"
+
+#define CONFIG_LINUX                                   \
+       "setenv bootargs root=/dev/ram rw "             \
+       "console=$consoledev,$baudrate $othbootargs;"   \
+       "setenv ramdiskaddr 0x02000000;"                \
+       "setenv fdtaddr 0x00c00000;"                    \
+       "setenv loadaddr 0x1000000;"                    \
+       "bootm $loadaddr $ramdiskaddr $fdtaddr"
+
+
+#define CONFIG_NFSBOOTCOMMAND                  \
+       "setenv bootargs root=/dev/nfs rw "     \
+       "nfsroot=$serverip:$rootpath "          \
+       "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
+       "console=$consoledev,$baudrate $othbootargs;"   \
+       "tftp $loadaddr $bootfile;"             \
+       "tftp $fdtaddr $fdtfile;"               \
+       "bootm $loadaddr - $fdtaddr"
+
+#define CONFIG_BOOTCOMMAND     CONFIG_LINUX
+
+#ifdef CONFIG_SECURE_BOOT
+#include <asm/fsl_secure_boot.h>
+#endif
+
+#endif /* __T1024RDB_H */
index 1d0664ddf6e828b01a2801a96f73becd06d34036..b70bdfe5e79f63dcd371a1b7fe314c9498c3188a 100644 (file)
@@ -28,6 +28,8 @@
  */
 #define CONFIG_T1040QDS
 #define CONFIG_PHYS_64BIT
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #ifdef CONFIG_RAMBOOT_PBL
 #define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
@@ -176,8 +178,8 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_DDR_SPD
 #ifndef CONFIG_SYS_FSL_DDR4
 #define CONFIG_SYS_FSL_DDR3
-#define CONFIG_FSL_DDR_INTERACTIVE
 #endif
+#define CONFIG_FSL_DDR_INTERACTIVE
 
 #define CONFIG_SYS_SPD_BUS_NUM 0
 #define SPD_EEPROM_ADDRESS     0x51
@@ -603,14 +605,30 @@ unsigned long get_board_ddr_clk(void);
 /* Qman/Bman */
 #ifndef CONFIG_NOBQFMAN
 #define CONFIG_SYS_DPAA_QBMAN          /* Support Q/Bman */
-#define CONFIG_SYS_BMAN_NUM_PORTALS    25
+#define CONFIG_SYS_BMAN_NUM_PORTALS    10
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
-#define CONFIG_SYS_QMAN_NUM_PORTALS    25
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
+#define CONFIG_SYS_QMAN_NUM_PORTALS    10
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
@@ -730,7 +748,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_CMDLINE_EDITING                 /* Command-line editing */
 #define CONFIG_AUTO_COMPLETE                   /* add autocompletion support */
 #define CONFIG_SYS_LOAD_ADDR   0x2000000       /* default load address */
-#define CONFIG_SYS_PROMPT      "=> "           /* Monitor Command Prompt */
 #ifdef CONFIG_CMD_KGDB
 #define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size */
 #else
@@ -769,8 +786,7 @@ unsigned long get_board_ddr_clk(void);
 #define __USB_PHY_TYPE utmi
 
 #define        CONFIG_EXTRA_ENV_SETTINGS                               \
-       "hwconfig=fsl_ddr:ctlr_intlv=cacheline,"                \
-       "bank_intlv=cs0_cs1;"                                   \
+       "hwconfig=fsl_ddr:bank_intlv=auto;"                     \
        "usb1:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) "\0"\
        "netdev=eth0\0"                                         \
        "video-mode=fslfb:1024x768-32@60,monitor=dvi\0"         \
index 2bb86e40caf97b742f8ad39fe152a8b3b7c9dd08..57cdf7213c4c6b3fa4233f36e02eb9ac50ebef23 100644 (file)
  */
 #define CONFIG_T104xRDB
 #define CONFIG_PHYS_64BIT
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
+#define CONFIG_E500                    /* BOOKE e500 family */
+#include <asm/config_mpc85xx.h>
 
 #ifdef CONFIG_RAMBOOT_PBL
 #define CONFIG_SYS_FSL_PBL_PBI $(SRCTREE)/board/freescale/t104xrdb/t104x_pbi.cfg
 
 /* High Level Configuration Options */
 #define CONFIG_BOOKE
-#define CONFIG_E500                    /* BOOKE e500 family */
 #define CONFIG_E500MC                  /* BOOKE e500mc family */
 #define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
 #define CONFIG_MP                      /* support multiple processors */
 
 /* support deep sleep */
 #define CONFIG_DEEP_SLEEP
+#if defined(CONFIG_DEEP_SLEEP)
+#define CONFIG_BOARD_EARLY_INIT_F
 #define CONFIG_SILENT_CONSOLE
+#endif
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xeff40000
 #define CONFIG_SYS_RAMBOOT
 #endif
 
+#ifdef CONFIG_SYS_FSL_ERRATUM_A008044
+#if defined(CONFIG_NAND)
+#define CONFIG_A008044_WORKAROUND
+#endif
+#endif
+
 #define CONFIG_BOARD_EARLY_INIT_R
 #define CONFIG_MISC_INIT_R
 
 /* Qman/Bman */
 #ifndef CONFIG_NOBQFMAN
 #define CONFIG_SYS_DPAA_QBMAN          /* Support Q/Bman */
-#define CONFIG_SYS_BMAN_NUM_PORTALS    25
+#define CONFIG_SYS_BMAN_NUM_PORTALS    10
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
-#define CONFIG_SYS_QMAN_NUM_PORTALS    25
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
+#define CONFIG_SYS_QMAN_NUM_PORTALS    10
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
 #define CONFIG_CMDLINE_EDITING                 /* Command-line editing */
 #define CONFIG_AUTO_COMPLETE                   /* add autocompletion support */
 #define CONFIG_SYS_LOAD_ADDR   0x2000000       /* default load address */
-#define CONFIG_SYS_PROMPT      "=> "           /* Monitor Command Prompt */
 #ifdef CONFIG_CMD_KGDB
 #define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size */
 #else
index 27333589afe4f092214acd94ef6e93e3d696058a..ff6d2c1d37e41d6c625bd722d2bb35eb11bc39a0 100644 (file)
@@ -234,7 +234,7 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_FSL_DDR_FIRST_SLOT_QUAD_CAPABLE
 #define CONFIG_DDR_SPD
 #define CONFIG_SYS_FSL_DDR3
-#undef CONFIG_FSL_DDR_INTERACTIVE
+#define CONFIG_FSL_DDR_INTERACTIVE
 #define CONFIG_SYS_SPD_BUS_NUM 0
 #define CONFIG_SYS_SDRAM_SIZE  2048    /* for fixed parameter use */
 #define SPD_EEPROM_ADDRESS1    0x51
@@ -494,6 +494,23 @@ unsigned long get_board_ddr_clk(void);
 #define I2C_MUX_PCA_ADDR_SEC2  0x76 /* I2C bus multiplexer,secondary 2 */
 #define I2C_MUX_CH_DEFAULT     0x8
 
+#define I2C_MUX_CH_VOL_MONITOR 0xa
+
+/* Voltage monitor on channel 2*/
+#define I2C_VOL_MONITOR_ADDR           0x40
+#define I2C_VOL_MONITOR_BUS_V_OFFSET   0x2
+#define I2C_VOL_MONITOR_BUS_V_OVF      0x1
+#define I2C_VOL_MONITOR_BUS_V_SHIFT    3
+
+#define CONFIG_VID_FLS_ENV             "t208xqds_vdd_mv"
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_VID
+#endif
+#define CONFIG_VOL_MONITOR_IR36021_SET
+#define CONFIG_VOL_MONITOR_IR36021_READ
+/* The lowest and highest voltage allowed for T208xQDS */
+#define VDD_MV_MIN                     819
+#define VDD_MV_MAX                     1212
 
 /*
  * RapidIO
@@ -617,10 +634,26 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG    0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    18
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
@@ -791,7 +824,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_CMDLINE_EDITING         /* Command-line editing */
 #define CONFIG_AUTO_COMPLETE           /* add autocompletion support */
 #define CONFIG_SYS_LOAD_ADDR   0x2000000 /* default load address */
-#define CONFIG_SYS_PROMPT      "=> "     /* Monitor Command Prompt */
 #ifdef CONFIG_CMD_KGDB
 #define CONFIG_SYS_CBSIZE      1024      /* Console I/O Buffer Size */
 #else
index 400d979643caaf7cdaddc8ddfdae5dbf87a6169a..db6b42ea0f1cf3681fe2fda1f16268a53f4a9ee3 100644 (file)
@@ -567,10 +567,26 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    18
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
@@ -750,7 +766,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_CMDLINE_EDITING         /* Command-line editing */
 #define CONFIG_AUTO_COMPLETE           /* add autocompletion support */
 #define CONFIG_SYS_LOAD_ADDR   0x2000000 /* default load address */
-#define CONFIG_SYS_PROMPT      "=> "     /* Monitor Command Prompt */
 #ifdef CONFIG_CMD_KGDB
 #define CONFIG_SYS_CBSIZE      1024      /* Console I/O Buffer Size */
 #else
index 53c69b03dbdfcb29fe6945b8de807757c7c2086e..e8ba5d6b26b866b1847715c5cb0eb9b5fe9c9a85 100644 (file)
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG    0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    50
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
index 1e0f5ece092067afcce0ae74cedc14e86f4c2b96..dd7d52f293aed134ca979acb2f9edbcd6296377b 100644 (file)
@@ -417,10 +417,26 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG    0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    50
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
index 13f4bd3c539fae5629ec1adc374f875ec0417bdc..b644a6ce8be5f9697d768504d554d74cd8695b08 100644 (file)
@@ -12,6 +12,8 @@
 
 #define CONFIG_T4240RDB
 #define CONFIG_PHYS_64BIT
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_FSL_SATA_V2
 #define CONFIG_PCIE4
@@ -514,6 +516,29 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NOR_FTIM2
 #define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NOR_FTIM3
 
+/* CPLD on IFC */
+#define CONFIG_SYS_CPLD_BASE   0xffdf0000
+#define CONFIG_SYS_CPLD_BASE_PHYS      (0xf00000000ull | CONFIG_SYS_CPLD_BASE)
+#define CONFIG_SYS_CSPR3_EXT   (0xf)
+#define CONFIG_SYS_CSPR3       (CSPR_PHYS_ADDR(CONFIG_SYS_CPLD_BASE_PHYS) \
+                               | CSPR_PORT_SIZE_8 \
+                               | CSPR_MSEL_GPCM \
+                               | CSPR_V)
+
+#define CONFIG_SYS_AMASK3      IFC_AMASK(4*1024)
+#define CONFIG_SYS_CSOR3       0x0
+
+/* CPLD Timing parameters for IFC CS3 */
+#define CONFIG_SYS_CS3_FTIM0           (FTIM0_GPCM_TACSE(0x0e) | \
+                                       FTIM0_GPCM_TEADC(0x0e) | \
+                                       FTIM0_GPCM_TEAHC(0x0e))
+#define CONFIG_SYS_CS3_FTIM1           (FTIM1_GPCM_TACO(0x0e) | \
+                                       FTIM1_GPCM_TRAD(0x1f))
+#define CONFIG_SYS_CS3_FTIM2           (FTIM2_GPCM_TCS(0x0e) | \
+                                       FTIM2_GPCM_TCH(0x8) | \
+                                       FTIM2_GPCM_TWP(0x1f))
+#define CONFIG_SYS_CS3_FTIM3           0x0
+
 #if defined(CONFIG_RAMBOOT_PBL)
 #define CONFIG_SYS_RAMBOOT
 #endif
@@ -554,10 +579,26 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG    0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    50
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
@@ -667,6 +708,7 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_CMD_EXT2
 #define CONFIG_CMD_FAT
 #define CONFIG_DOS_PARTITION
+#define CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33
 #endif
 
 /* Hash command with SHA acceleration supported in hardware */
diff --git a/include/configs/TASREG.h b/include/configs/TASREG.h
deleted file mode 100644 (file)
index 5ad9383..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Configuation settings for the esd TASREG board.
- *
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef _TASREG_H
-#define _TASREG_H
-
-#ifndef __ASSEMBLY__
-#include <asm/m5249.h>
-#endif
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_MCF52x2                 /* define processor family */
-#define CONFIG_M5249                   /* define processor type */
-
-#define CONFIG_MISC_INIT_R      1       /* call misc_init_r()           */
-
-#define CONFIG_MCFTMR
-
-#define CONFIG_MCFUART
-#define CONFIG_SYS_UART_PORT           (0)
-#define CONFIG_BAUDRATE                19200
-
-#undef  CONFIG_WATCHDOG
-
-#undef CONFIG_MONITOR_IS_IN_RAM                      /* no pre-loader required!!! ;-) */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-
-#undef CONFIG_CMD_NET
-
-
-#define CONFIG_BOOTDELAY       3
-
-#define CONFIG_SYS_LONGHELP                            /* undef to save memory         */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_MX_CYCLIC        1       /* enable mdc/mwc commands      */
-
-#define CONFIG_SYS_LOAD_ADDR           0x200000        /* default load address */
-
-#define CONFIG_SYS_MEMTEST_START       0x400
-#define CONFIG_SYS_MEMTEST_END         0x380000
-
-/*
- * Clock configuration: enable only one of the following options
- */
-
-#if 0 /* this setting will run the cpu at 11MHz */
-#define CONFIG_SYS_PLL_BYPASS          1                /* bypass PLL for test purpose */
-#undef  CONFIG_SYS_FAST_CLK                             /* MCF5249 can run at 140MHz   */
-#define CONFIG_SYS_CLK                 11289600         /* PLL bypass                  */
-#endif
-
-#if 0 /* this setting will run the cpu at 70MHz */
-#undef  CONFIG_SYS_PLL_BYPASS                           /* bypass PLL for test purpose */
-#undef  CONFIG_SYS_FAST_CLK                             /* MCF5249 can run at 140MHz   */
-#define CONFIG_SYS_CLK                 72185018         /* The next lower speed        */
-#endif
-
-#if 1 /* this setting will run the cpu at 140MHz */
-#undef  CONFIG_SYS_PLL_BYPASS                           /* bypass PLL for test purpose */
-#define CONFIG_SYS_FAST_CLK            1                /* MCF5249 can run at 140MHz   */
-#define        CONFIG_SYS_CLK                  132025600        /* MCF5249 can run at 140MHz   */
-#endif
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_MBAR                0x10000000      /* Register Base Addrs */
-#define        CONFIG_SYS_MBAR2                0x80000000
-
-/*-----------------------------------------------------------------------
- * I2C
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      100000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0x7F
-
-#if 0 /* push-pull */
-#define        SDA             0x00800000
-#define        SCL             0x00000008
-#define DIR0            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO_EN))
-#define DIR1            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO1_EN))
-#define OUT0           *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO_OUT))
-#define OUT1           *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO1_OUT))
-#define IN0            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO_READ))
-#define IN1            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO1_READ))
-#define        I2C_INIT        {OUT1|=SDA;OUT0|=SCL;}
-#define        I2C_READ        ((IN1&SDA)?1:0)
-#define        I2C_SDA(x)      {if(x)OUT1|=SDA;else OUT1&=~SDA;}
-#define        I2C_SCL(x)      {if(x)OUT0|=SCL;else OUT0&=~SCL;}
-#define        I2C_DELAY       {udelay(5);}
-#define        I2C_ACTIVE      {DIR1|=SDA;}
-#define        I2C_TRISTATE    {DIR1&=~SDA;}
-#else /* open-collector */
-#define        SDA             0x00800000
-#define        SCL             0x00000008
-#define DIR0            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO_EN))
-#define DIR1            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO1_EN))
-#define OUT0           *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO_OUT))
-#define OUT1           *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO1_OUT))
-#define IN0            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO_READ))
-#define IN1            *((volatile ulong*)(CONFIG_SYS_MBAR2+MCFSIM_GPIO1_READ))
-#define        I2C_INIT        {DIR1&=~SDA;DIR0&=~SCL;OUT1&=~SDA;OUT0&=~SCL;}
-#define        I2C_READ        ((IN1&SDA)?1:0)
-#define        I2C_SDA(x)      {if(x)DIR1&=~SDA;else DIR1|=SDA;}
-#define        I2C_SCL(x)      {if(x)DIR0&=~SCL;else DIR0|=SCL;}
-#define        I2C_DELAY       {udelay(5);}
-#define        I2C_ACTIVE      {DIR1|=SDA;}
-#define        I2C_TRISTATE    {DIR1&=~SDA;}
-#endif
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC32     */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2       /* Bytes of address     */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x01
-/*
- * The Catalyst CAT24WC32 has 32 byte page write mode using
- * last 5 bits of the address
- */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 5
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10 /* and takes up to 10 msec */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       0x20000000
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000  /* Size of used area in internal SRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                0xFFC40000      /* Address of Environment Sector*/
-#define CONFIG_ENV_SIZE                0x10000 /* Total Size of Environment Sector     */
-#define CONFIG_ENV_SECT_SIZE   0x10000 /* see README - env sector total size   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_SDRAM_SIZE          16              /* SDRAM size in MB */
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_CS0_BASE
-
-#if 0 /* test-only */
-#define CONFIG_PRAM             512 /* test-only for SDRAM problem!!!!!!!!!!!!!!!!!!!! */
-#endif
-
-#define CONFIG_SYS_MONITOR_BASE        (CONFIG_SYS_FLASH_BASE + 0x400)
-
-#define CONFIG_SYS_MONITOR_LEN         0x20000
-#define CONFIG_SYS_MALLOC_LEN          (1 * 1024*1024) /* Reserve 1 MB for malloc()    */
-#define CONFIG_SYS_BOOTPARAMS_LEN      64*1024
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization ??
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16
-
-#define ICACHE_STATUS                  (CONFIG_SYS_INIT_RAM_ADDR + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - 8)
-#define DCACHE_STATUS                  (CONFIG_SYS_INIT_RAM_ADDR + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - 4)
-#define CONFIG_SYS_ICACHE_INV          (CF_CACR_DCM)
-#define CONFIG_SYS_CACHE_ACR1          (CONFIG_SYS_SDRAM_BASE | \
-                                        CF_ADDRMASK(CONFIG_SYS_SDRAM_SIZE) | \
-                                        CF_ACR_EN | CF_ACR_SM_ALL)
-#define CONFIG_SYS_CACHE_ICACR         (CF_CACR_CENB | CF_CACR_CEIB | \
-                                        CF_CACR_DBWE)
-
-/*-----------------------------------------------------------------------
- * Memory bank definitions
- */
-
-/* CS0 - AMD Flash, address 0xffc00000 */
-#define        CONFIG_SYS_CS0_BASE             0xffc00000
-#define        CONFIG_SYS_CS0_CTRL             0x00001980      /* WS=0110, AA=1, PS=10         */
-/** Note: There is a CSMR0/DRAM vector problem, need to disable C/I ***/
-#define        CONFIG_SYS_CS0_MASK             0x003f0021      /* 4MB, AA=0, WP=0, C/I=1, V=1  */
-
-/* CS1 - FPGA, address 0xe0000000 */
-#define        CONFIG_SYS_CS1_BASE             0xe0000000
-#define        CONFIG_SYS_CS1_CTRL             0x00000d80      /* WS=0011, AA=1, PS=10         */
-#define        CONFIG_SYS_CS1_MASK             0x00010001      /* 128kB, AA=0, WP=0, C/I=0, V=1*/
-
-/*-----------------------------------------------------------------------
- * Port configuration
- */
-#define        CONFIG_SYS_GPIO_FUNC           0x00000008      /* Set gpio pins: none          */
-#define        CONFIG_SYS_GPIO1_FUNC          0x00df00f0      /* 36-39(SWITCH),48-52(FPGAs),54*/
-#define        CONFIG_SYS_GPIO_EN             0x00000008      /* Set gpio output enable       */
-#define        CONFIG_SYS_GPIO1_EN            0x00c70000      /* Set gpio output enable       */
-#define        CONFIG_SYS_GPIO_OUT            0x00000008      /* Set outputs to default state */
-#define        CONFIG_SYS_GPIO1_OUT           0x00c70000      /* Set outputs to default state */
-
-#define CONFIG_SYS_GPIO1_LED           0x00400000      /* user led                     */
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       512*1024    /* 512kByte is enough for XC2S200*/
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x00010000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x00040000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x00020000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00080000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00100000  /* FPGA done pin (ppc input)     */
-
-#endif /* _TASREG_H */
diff --git a/include/configs/TK885D.h b/include/configs/TK885D.h
deleted file mode 100644 (file)
index 5e1c52d..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2006
- * Martin Krause, TQ-Systems GmBH, martin.krause@tqs.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC885          1       /* This is a MPC885 CPU         */
-#define CONFIG_TQM885D         1       /* ...on a TQM88D module        */
-#define CONFIG_TK885D          1       /* ...in a TK885D base board    */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define CONFIG_8xx_OSCLK               10000000        /*  10 MHz - PLL input clock    */
-#define CONFIG_SYS_8xx_CPUCLK_MIN              15000000        /*  15 MHz - CPU minimum clock  */
-#define CONFIG_SYS_8xx_CPUCLK_MAX              133000000       /* 133 MHz - CPU maximum clock  */
-#define CONFIG_8xx_CPUCLK_DEFAULT      66000000        /*  66 MHz - CPU default clock  */
-                                               /* (it will be used if there is no      */
-                                               /* 'cpuclk' variable with valid value)  */
-
-#define CONFIG_8xx_CONS_SMC1   1       /* Console is on SMC1           */
-#define CONFIG_SYS_SMC_RXBUFLEN        128
-#define CONFIG_SYS_MAXIDLE     10
-#define CONFIG_BAUDRATE                115200  /* console baudrate = 115kbps   */
-
-#define CONFIG_BOOTCOUNT_LIMIT
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "ethprime=FEC\0"                                                \
-       "ethact=FEC\0"                                                  \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "flash_nfs=run nfsargs addip;"                                  \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip;"                                 \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip;bootm\0"     \
-       "rootpath=/opt/eldk/ppc_8xx\0"                                  \
-       "bootfile=/tftpboot/tk885d/uImage\0"                            \
-       "u-boot=/tftpboot/tk885d/u-boot.bin\0"                          \
-       "kernel_addr=40080000\0"                                        \
-       "ramdisk_addr=40180000\0"                                       \
-       "load=tftp 200000 ${u-boot}\0"                                  \
-       "update=protect off 40000000 +${filesize};"                     \
-               "erase 40000000 +${filesize};"                          \
-               "cp.b 200000 40000000 ${filesize};"                     \
-               "protect on 40000000 +${filesize}\0"                    \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_STATUS_LED      1       /* Status LED enabled           */
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT                    /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      93000   /* 93 kHz is supposed to work */
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL         0x00000020      /* PB 26 */
-#define PB_SDA         0x00000010      /* PB 27 */
-
-#define I2C_INIT       (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE     (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE   (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ       ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50            /* EEPROM AT24C??       */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2               /* two byte address     */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-
-# define CONFIG_RTC_DS1337 1
-# define CONFIG_SYS_I2C_RTC_ADDR 0x68
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#undef CONFIG_RTC_MPC8xx               /* MPC885 does not support RTC  */
-
-#define        CONFIG_TIMESTAMP                /* but print image timestmps    */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PING
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_SYS_HUSH_PARSER         1       /* Use the HUSH parser          */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0100000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0300000       /* 1 ... 3 MB in DRAM   */
-#define CONFIG_SYS_ALT_MEMTEST                         /* alternate, more extensive
-                                                  memory test.*/
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-
-/*
- * Enable loopw command.
- */
-#define CONFIG_LOOPW
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MALLOC_LEN          (256 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-
-/* use CFI flash driver */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip */
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0x40000 /*   Offset   of Environment Sector     */
-#define CONFIG_ENV_SIZE                0x08000 /* Total Size of Environment            */
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET+CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#define CONFIG_SYS_HWINFO_OFFSET       0x0003FFC0      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000040      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x54514D38      /* 'TQM8' */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#ifndef CONFIG_CAN_DRIVER
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#else  /* we must activate GPL5 in the SIUMCR for CAN */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#endif /* CONFIG_CAN_DRIVER */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_8xx_PCCARD  1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing: Default value of OR0 after reset
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM | OR_ACS_MSK | OR_BI | \
-                                OR_SCY_6_CLK | OR_TRLX)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_V )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x20000000      /* SDRAM bank #1        */
-#define SDRAM_MAX_SIZE         (256 << 20)     /* max 256 MB per bank  */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-#ifndef CONFIG_CAN_DRIVER
-#define CONFIG_SYS_OR3_PRELIM  CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-#else  /* CAN uses CS3#, so we can have only one SDRAM bank anyway */
-#define CONFIG_SYS_CAN_BASE            0xC0000000      /* CAN mapped at 0xC0000000     */
-#define CONFIG_SYS_CAN_OR_AM           0xFFFF8000      /* 32 kB address mask           */
-#define CONFIG_SYS_OR3_CAN             (CONFIG_SYS_CAN_OR_AM | OR_G5LA | OR_BI)
-#define CONFIG_SYS_BR3_CAN             ((CONFIG_SYS_CAN_BASE & BR_BA_MSK) | \
-                                       BR_PS_8 | BR_MS_UPMB | BR_V )
-#endif /* CONFIG_CAN_DRIVER */
-
-/*
- * 4096        Rows from SDRAM example configuration
- * 1000        factor s -> ms
- * 64  PTP (pre-divider from MPTPR) from SDRAM example configuration
- * 4   Number of refresh cycles per period
- * 64  Refresh cycle in ms per number of rows
- */
-#define CONFIG_SYS_PTA_PER_CLK ((4096 * 64 * 1000) / (4 * 64))
-
-/*
- * Periodic timer (MAMR[PTx]) for 4 * 7.8 us refresh (= 31.2 us per quad)
- *
- *                        CPUclock(MHz) * 31.2
- * CONFIG_SYS_MAMR_PTA = -----------------------------------     with DFBRG = 0
- *                2^(2*SCCR[DFBRG]) * MPTPR_PTP_DIV16
- *
- * CPU clock =  15 MHz:  CONFIG_SYS_MAMR_PTA =  29   ->  4 * 7.73 us
- * CPU clock =  50 MHz:  CONFIG_SYS_MAMR_PTA =  97   ->  4 * 7.76 us
- * CPU clock =  66 MHz:  CONFIG_SYS_MAMR_PTA = 128   ->  4 * 7.75 us
- * CPU clock = 133 MHz:  CONFIG_SYS_MAMR_PTA = 255   ->  4 * 7.67 us
- *
- * Value 97 is for 4 * 7.8 us at 50 MHz. So the refresh cycle requirement will
- * be met also in the default configuration, i.e. if environment variable
- * 'cpuclk' is not set.
- */
-#define CONFIG_SYS_MAMR_PTA            128
-
-/*
- * Memory Periodic Timer Prescaler Register (MPTPR) values.
- */
-/* 4 * 7.8 us refresh (= 31.2 us per quad) at 50 MHz and PTA = 97 */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16
-/* 4 * 3.9 us refresh (= 15.6 us per quad) at 50 MHz and PTA = 97 */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 10 column SDRAM */
-#define CONFIG_SYS_MAMR_10COL  ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_2 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A9  |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-/*
- * Network configuration
- */
-#define CONFIG_FEC_ENET                        /* enable ethernet on FEC */
-#define CONFIG_ETHER_ON_FEC1           /* ... for FEC1 */
-#define CONFIG_ETHER_ON_FEC2           /* ... for FEC2 */
-
-#define CONFIG_LAST_STAGE_INIT         1 /* Have to configure PHYs for Linux */
-
-/* CONFIG_SYS_DISCOVER_PHY only works with FEC if only one interface is enabled */
-#if (!defined(CONFIG_ETHER_ON_FEC1) || !defined(CONFIG_ETHER_ON_FEC2))
-#define CONFIG_SYS_DISCOVER_PHY
-#endif
-
-#ifndef CONFIG_SYS_DISCOVER_PHY
-/* PHY addresses - hard wired in hardware */
-#define CONFIG_FEC1_PHY        1
-#define CONFIG_FEC2_PHY        2
-#endif
-
-#define CONFIG_MII_INIT        1
-
-#define CONFIG_NET_RETRY_COUNT 3
-#define CONFIG_ETHPRIME                "FEC"
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-#define CONFIG_HWCONFIG                1
-
-#endif /* __CONFIG_H */
index 69c0336caee61093557d42b798b3186b823b234b..cdccbef1f637b9d8b93c346bf1d007d38fe5eaa2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2003-2005
+ * (C) Copyright 2003-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * (C) Copyright 2004-2006
@@ -19,6 +19,8 @@
 #define CONFIG_MPC5200         1       /* This is an MPC5200 CPU               */
 #define CONFIG_TQM5200         1       /* ... on TQM5200 module                */
 #undef CONFIG_TQM5200_REV100           /*  define for revision 100 modules     */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 /*
  * Valid values for CONFIG_SYS_TEXT_BASE are:
index cc2204586ece53897d01827bec98c6aeef74de91..0d5a2b96f155f476d17a2d56be7b22c165af2a04 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC823          1       /* This is a MPC823 CPU         */
 #define CONFIG_TQM823L         1       /* ...on a TQM8xxL module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index 4fd070f27d56cd8046df61a914ad1b95e837a9f5..e765a03cfb0c81c2e6c32714147ad062f462429d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC823          1       /* This is a MPC823 CPU         */
 #define CONFIG_TQM823M         1       /* ...on a TQM8xxM module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index ca3750d40752aacd632393e5b7545811fa1fdaac..bbdc3f81fc4b428c7c34e85615bb35472c758ee2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC850          1       /* This is a MPC850 CPU         */
 #define CONFIG_TQM850L         1       /* ...on a TQM8xxL module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index 659c9ad1c3775d385d3172837f2454b72f920d6a..5fc87f2138d64d21ce323be2d2b3f68e5a9025a2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC850          1       /* This is a MPC850 CPU         */
 #define CONFIG_TQM850M         1       /* ...on a TQM8xxM module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index 906d79b0c8737f8079883f5375c3df9cb4704164..589d168eba0e02407f74490ddb7a79635d379d4a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC855          1       /* This is a MPC855 CPU         */
 #define CONFIG_TQM855L         1       /* ...on a TQM8xxL module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index 44d456e165a88d1624d9cfd99a2bf3ae5885e723..60acb564e8703905df4743130c75693e74f565fa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC855          1       /* This is a MPC855 CPU         */
 #define CONFIG_TQM855M         1       /* ...on a TQM8xxM module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index 855b0cddc4b5185231b3975341708b639e1cebba..ebc55716322de1ee0c593f9640c8a74d433c397e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC860          1       /* This is a MPC860 CPU         */
 #define CONFIG_TQM860L         1       /* ...on a TQM8xxL module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index 8109379ae9b36ed16ddaee7481b563cb9b4974ec..f4ce07f20e37d0f893b3efa424ae76d72d030b78 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC860          1       /* This is a MPC860 CPU         */
 #define CONFIG_TQM860M         1       /* ...on a TQM8xxM module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index da4af93d2515d79c513535cd263b05b0ea4e7c4a..97db519d5302440c1fbb01b5a5899db37ef2ad79 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -20,6 +20,8 @@
 #define CONFIG_MPC860          1
 #define CONFIG_MPC860T         1
 #define CONFIG_MPC862          1
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_TQM862L         1       /* ...on a TQM8xxL module       */
 
index ec3a57b9618b89aee7836fb0b211ef86aa8da082..25d60a74ef40dab64f87a8e2d24edf6bcb541601 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -20,6 +20,8 @@
 #define CONFIG_MPC860          1
 #define CONFIG_MPC860T         1
 #define CONFIG_MPC862          1
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_TQM862M         1       /* ...on a TQM8xxM module       */
 
index cb8b84d3a1780d01e893ddbf6029e9d77d117131..928b87960913c2a9e79a3bec1a3f3596c1076739 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2008
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -19,6 +19,8 @@
 
 #define CONFIG_MPC866          1       /* This is a MPC866 CPU         */
 #define CONFIG_TQM866M         1       /* ...on a TQM8xxM module       */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index d1e6c5b2bb2cf7adb9f0478a2b86e962324ae65a..598020c8676705c281f81577263a2ccc7931789d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000-2005
+ * (C) Copyright 2000-2014
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * (C) Copyright 2006
@@ -22,6 +22,8 @@
 
 #define CONFIG_MPC885          1       /* This is a MPC885 CPU         */
 #define CONFIG_TQM885D         1       /* ...on a TQM88D module        */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0x40000000
 
index a97f5faae4a47a8ed5ca210d5c722859858ce6e7..94078f548196a1075ebc0658910506fa1b45d631 100644 (file)
@@ -20,8 +20,7 @@
  * High Level Configuration Options
  * (easy to change)
  */
-#define CONFIG_ARM920T         /* This is an ARM920T Core */
-#define CONFIG_S3C24X0         /* in a SAMSUNG S3C24x0-type SoC */
+#define CONFIG_S3C24X0         /* This is a SAMSUNG S3C24x0-type SoC */
 #define CONFIG_S3C2410         /* specifically a SAMSUNG S3C2410 SoC */
 #define CONFIG_VCMA9           /* on a MPL VCMA9 Board  */
 #define CONFIG_MACH_TYPE       MACH_TYPE_MPL_VCMA9 /* Machine type */
diff --git a/include/configs/VOH405.h b/include/configs/VOH405.h
deleted file mode 100644 (file)
index d4a4b68..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_VOH405          1       /* ...on a VOH405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF80000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ     33333400 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#undef  CONFIG_HAS_ETH1
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-#define CONFIG_RESET_PHY_R      1       /* use reset_phy() to disable phy sleep mode */
-
-#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ /* 66 MHz OPB clock*/
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_EEPROM
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define CONFIG_SUPPORT_VFAT
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_RTC_MC146818            /* DS1685 is MC146818 compatible*/
-#define CONFIG_SYS_RTC_REG_BASE_ADDR    0xF0000500 /* RTC Base Address         */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      2       /* Use UART1                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef  CONFIG_SYS_EXT_SERIAL_CLOCK           /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1         /* Max number of NAND devices */
-#define NAND_BIG_DELAY_US      25
-
-#define CONFIG_SYS_NAND_CE             (0x80000000 >> 1)   /* our CE is GPIO1  */
-#define CONFIG_SYS_NAND_RDY            (0x80000000 >> 4)   /* our RDY is GPIO4 */
-#define CONFIG_SYS_NAND_CLE            (0x80000000 >> 2)   /* our CLE is GPIO2 */
-#define CONFIG_SYS_NAND_ALE            (0x80000000 >> 3)   /* our ALE is GPIO3 */
-
-#define CONFIG_SYS_NAND_SKIP_BAD_DOT_I 1       /* ".i" read skips bad blocks   */
-#define CONFIG_SYS_NAND_QUIET          1
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */
-#define PCI_HOST_FORCE  1               /* configure as pci host        */
-#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST        PCI_HOST_HOST   /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_PCI_CONFIG_HOST_BRIDGE 1 /* don't skip host bridge config*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#undef CONFIG_IDE_8xx_DIRECT               /* no pcmcia interface required */
-#undef CONFIG_IDE_LED                  /* no led for ide supported     */
-#define CONFIG_IDE_RESET       1       /* reset for ide supported      */
-
-#define CONFIG_SYS_IDE_MAXBUS          2               /* max. 2 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0100000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-#define CONFIG_SYS_ATA_IDE1_OFFSET     0x0010
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000  /* Offset for data I/O                  */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000  /* Offset for normal register accesses  */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0000  /* Offset for alternate registers       */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000    /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFF80000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)    /* Reserve 512 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (2 * 1024*1024) /* Reserve 2 MB for malloc()    */
-
-#if (CONFIG_SYS_MONITOR_BASE < FLASH_BASE0_PRELIM)
-# define CONFIG_SYS_RAMBOOT            1
-#else
-# undef CONFIG_SYS_RAMBOOT
-#endif
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xF0000500              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          242                     /* NVRAM size           */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT24WC08             */
-#define CONFIG_SYS_EEPROM_WREN         1
-
-/* CAT24WC32/64... */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x01
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 5    /* The Catalyst CAT24WC32 has   */
-                                       /* 32 byte page write mode using*/
-                                       /* last 5 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-#define CAN_BA         0xF0000000          /* CAN Base Address                 */
-#define DUART0_BA      0xF0000400          /* DUART Base Address               */
-#define DUART1_BA      0xF0000408          /* DUART Base Address               */
-#define RTC_BA         0xF0000500          /* RTC Base Address                 */
-#define VGA_BA         0xF1000000          /* Epson VGA Base Address           */
-#define CONFIG_SYS_NAND_BASE   0xF4000000          /* NAND FLASH Base Address          */
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-/*#define CONFIG_SYS_EBC_PB0AP           0x08055880  /XXX* TWT=16,CSN=1,OEN=1,WBN=1,WBF=1,TH=4,SOR=1 */
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1, NAND-FLASH) initialization                     */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xF4018000  /* BAS=0xF40,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (8 Bit Peripheral: CAN, UART, RTC) initialization             */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (16 Bit Peripheral: FPGA internal, dig. IO) initialization    */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 4 (Epson VGA) initialization                                    */
-#define CONFIG_SYS_EBC_PB4AP   0x03805380   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=0 */
-#define CONFIG_SYS_EBC_PB4CR   VGA_BA | 0x7A000    /* BAS=0xF10,BS=8MB,BU=R/W,BW=16bit */
-
-/*-----------------------------------------------------------------------
- * LCD Setup
- */
-
-#define CONFIG_SYS_LCD_BIG_MEM         0xF1200000  /* Epson S1D13806 Mem Base Address  */
-#define CONFIG_SYS_LCD_BIG_REG         0xF1000000  /* Epson S1D13806 Reg Base Address  */
-#define CONFIG_SYS_LCD_SMALL_MEM       0xF1400000  /* Epson S1D13704 Mem Base Address  */
-#define CONFIG_SYS_LCD_SMALL_REG       0xF140FFE0  /* Epson S1D13704 Reg Base Address  */
-
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1 << 20)
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-
-#define CONFIG_SYS_FPGA_BASE_ADDR 0xF0100100       /* FPGA internal Base Address       */
-
-/* FPGA internal regs */
-#define CONFIG_SYS_FPGA_CTRL           0x000
-
-/* FPGA Control Reg */
-#define CONFIG_SYS_FPGA_CTRL_CF_RESET  0x0001
-#define CONFIG_SYS_FPGA_CTRL_WDI       0x0002
-#define CONFIG_SYS_FPGA_CTRL_PS2_RESET 0x0020
-
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       128*1024    /* 128kByte is enough for XC2S50E*/
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]    - External Bus Controller BLAST output
- * GPIO0[1-9]  - Instruction trace outputs -> GPIO
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs -> GPIO
- */
-#define CONFIG_SYS_GPIO0_OSRL          0x00000550
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000
-#define CONFIG_SYS_GPIO0_ISR1H         0x15555440
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000
-#define CONFIG_SYS_GPIO0_TCR           0x777E0017
-
-#define CONFIG_SYS_DUART_RST           (0x80000000 >> 14)
-#define CONFIG_SYS_LCD_ENDIAN          (0x80000000 >> 7)
-#define CONFIG_SYS_IIC_ON              (0x80000000 >> 8)
-#define CONFIG_SYS_LCD0_RST            (0x80000000 >> 30)
-#define CONFIG_SYS_LCD1_RST            (0x80000000 >> 31)
-#define CONFIG_SYS_EEPROM_WP           (0x80000000 >> 0)
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#if 1
-#define PLLMR0_DEFAULT  PLLMR0_266_133_66_33
-#define PLLMR1_DEFAULT  PLLMR1_266_133_66_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_200_100_50_33
-#define PLLMR1_DEFAULT  PLLMR1_200_100_50_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT  PLLMR1_133_66_66_33
-#endif
-
-#endif /* __CONFIG_H */
index c06897b893090fc0482821d268cf37ecc96eda83..e229256730a3549c864413744e797130aba38cac 100644 (file)
@@ -19,6 +19,8 @@
 #define CONFIG_VOM405          1       /* ...on a VOM405 board         */
 
 #define        CONFIG_SYS_TEXT_BASE    0xFFFC8000
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
 #define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
diff --git a/include/configs/VoVPN-GW.h b/include/configs/VoVPN-GW.h
deleted file mode 100644 (file)
index 1ceef11..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* define cpu used */
-#define        CONFIG_MPC8272                  1
-
-/* define busmode: 8260 */
-#undef CONFIG_BUSMODE_60x
-
-#define        CONFIG_SYS_TEXT_BASE            0xfff00000
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#ifdef CONFIG_CLKIN_66MHz
-#define        CONFIG_8260_CLKIN               66666666        /* in Hz */
-#else
-#define        CONFIG_8260_CLKIN               100000000       /* in Hz */
-#endif
-
-/* call board_early_init_f */
-#define        CONFIG_BOARD_EARLY_INIT_F       1
-
-/* have misc_init_r() function */
-#define CONFIG_MISC_INIT_R             1
-
-/* have reset_phy_r() function */
-#define CONFIG_RESET_PHY_R             1
-
-/* have special reset function */
-#define        CONFIG_HAVE_OWN_RESET           1
-
-/* allow serial and ethaddr to be overwritten */
-#define        CONFIG_ENV_OVERWRITE
-
-/* watchdog disabled */
-#undef CONFIG_WATCHDOG
-
-/* include support for bzip2 compressed images */
-#undef CONFIG_BZIP2
-
-/* status led */
-#undef CONFIG_STATUS_LED               /* XXX jse */
-
-/* vendor parameter protection */
-#define CONFIG_ENV_OVERWRITE
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- */
-#define        CONFIG_CONS_ON_SMC
-#undef CONFIG_CONS_ON_SCC
-#undef CONFIG_CONS_NONE
-#define        CONFIG_CONS_INDEX               1
-
-/* serial port default baudrate */
-#define CONFIG_BAUDRATE                        115200
-
-/* echo on for serial download */
-#define CONFIG_LOADS_ECHO              1
-
-/* don't allow baudrate change */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC
-#define        CONFIG_ETHER_ON_FCC
-#undef CONFIG_ETHER_NONE
-
-#ifdef CONFIG_ETHER_ON_FCC
-
-/* which SCC/FCC channel for ethernet */
-#define        CONFIG_ETHER_INDEX              1
-
-/* Marvell Switch SMI base addr */
-#define CONFIG_SYS_PHY_ADDR                    0x10
-
-/* FCC1 RMII REFCLK is CLK10 */
-#define CONFIG_SYS_CMXFCR_VALUE                CMXFCR_TF1CS_CLK10
-#define CONFIG_SYS_CMXFCR_MASK                 (CMXFCR_FC1|CMXFCR_TF1CS_MSK)
-
-/* BDs and buffers on 60x bus */
-#define CONFIG_SYS_CPMFCR_RAMTYPE              0
-
-/* Local Protect, Full duplex, Flowcontrol, RMII */
-#define CONFIG_SYS_FCC_PSMR                    (FCC_PSMR_LPB|FCC_PSMR_FDE|\
-                                        FCC_PSMR_FCE|FCC_PSMR_RMII)
-
-/* bit-bang MII PHY management */
-#define CONFIG_BITBANGMII
-
-#define MDIO_PORT                      1               /* Port B */
-
-#define MDIO_DECLARE           volatile ioport_t *iop = ioport_addr ( \
-                                       (immap_t *) CONFIG_SYS_IMMR, MDIO_PORT )
-#define MDC_DECLARE            MDIO_DECLARE
-
-#define CONFIG_SYS_MDIO_PIN                    0x00002000      /* PB18 */
-#define CONFIG_SYS_MDC_PIN                     0x00001000      /* PB19 */
-#define MDIO_ACTIVE                    (iop->pdir |=  CONFIG_SYS_MDIO_PIN)
-#define MDIO_TRISTATE                  (iop->pdir &= ~CONFIG_SYS_MDIO_PIN)
-#define MDIO_READ                      ((iop->pdat &  CONFIG_SYS_MDIO_PIN) != 0)
-#define MDIO(bit)                      if(bit) iop->pdat |=  CONFIG_SYS_MDIO_PIN; \
-                                       else    iop->pdat &= ~CONFIG_SYS_MDIO_PIN
-#define MDC(bit)                       if(bit) iop->pdat |=  CONFIG_SYS_MDC_PIN; \
-                                       else    iop->pdat &= ~CONFIG_SYS_MDC_PIN
-#define MIIDELAY                       udelay(1)
-
-#endif
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-
-#define CONFIG_CMD_BDI
-#define CONFIG_CMD_CONSOLE
-#define CONFIG_CMD_ECHO
-#define CONFIG_CMD_FLASH
-#define CONFIG_CMD_IMI
-#define CONFIG_CMD_IMLS
-#define CONFIG_CMD_LOADB
-#define CONFIG_CMD_MEMORY
-#define CONFIG_CMD_MISC
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_RUN
-#define CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_SOURCE
-
-
-/*
- * boot options & environment
- */
-#define CONFIG_BOOTDELAY               3
-#define CONFIG_BOOTCOMMAND             "run flash_self"
-#undef  CONFIG_BOOTARGS
-#define        CONFIG_EXTRA_ENV_SETTINGS       \
-"clean_nv=erase fff20000 ffffffff\0" \
-"update_boss=tftp 100000 PPC/logic157.bin; protect off fff00000 ffffffff; erase fff00000 ffffffff; cp.b 100000 fff00000 ${filesize}; tftp 100000 PPC/bootmon157.bin; cp.b 100000 fff20000 ${filesize}\0" \
-"update_lx=tftp 100000 ${kernel}; erase ${kernel_addr} ffefffff; cp.b 100000 ${kernel_addr} ${filesize}\0" \
-"update_fs=tftp 100000 ${fs}.${fstype}; erase ff840000 ffdfffff; cp.b 100000 ff840000 ${filesize}\0" \
-"update_ub=tftp 100000 ${uboot}; protect off fff00000 fff1ffff; erase fff00000 fff1ffff; cp.b 100000 fff00000 ${filesize}; protect off ff820000 ff83ffff; erase ff820000 ff83ffff\0" \
-"flashargs=setenv bootargs root=${rootdev} rw rootfstype=${fstype}\0" \
-"nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath}\0" \
-"addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off\0" \
-"addmisc=setenv bootargs ${bootargs} console=${console},${baudrate} ethaddr=${ethaddr} panic=1\0" \
-"net_nfs=tftpboot 400000 ${kernel}; run nfsargs addip addmisc; bootm\0" \
-"net_self=tftpboot 400000 ${kernel}; run flashargs addmisc; bootm\0" \
-"flash_self=run flashargs addmisc; bootm ${kernel_addr}\0" \
-"flash_nfs=run nfsargs addip addmisc; bootm ${kernel_addr}\0" \
-"fstype=cramfs\0" \
-"rootpath=/root_fs\0" \
-"uboot=PPC/u-boot.bin\0" \
-"kernel=PPC/uImage\0" \
-"kernel_addr=ffe00000\0" \
-"fs=PPC/root_fs\0" \
-"console=ttyS0\0" \
-"netdev=eth0\0" \
-"rootdev=31:3\0" \
-"ethaddr=00:09:4f:01:02:03\0" \
-"ipaddr=10.0.0.201\0" \
-"netmask=255.255.255.0\0" \
-"serverip=10.0.0.136\0" \
-"gatewayip=10.0.0.10\0" \
-"hostname=bastard\0" \
-""
-
-
-/*
- * miscellaneous configurable options
- */
-
-/* undef to save memory */
-#define        CONFIG_SYS_LONGHELP
-
-/* monitor command prompt */
-
-/* console i/o buffer size */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE                       1024
-#else
-#define        CONFIG_SYS_CBSIZE                       256
-#endif
-
-/* print buffer size */
-#define        CONFIG_SYS_PBSIZE                       (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-
-/* max number of command args */
-#define        CONFIG_SYS_MAXARGS                      16
-
-/* boot argument buffer size */
-#define CONFIG_SYS_BARGSIZE                    CONFIG_SYS_CBSIZE
-
-/* memtest works on */
-#define CONFIG_SYS_MEMTEST_START               0x00100000
-/* 1 ... 15 MB in DRAM */
-#define CONFIG_SYS_MEMTEST_END                 0x00f00000
-/* full featured memtest */
-#define CONFIG_SYS_ALT_MEMTEST
-
-/* default load address */
-#define        CONFIG_SYS_LOAD_ADDR                    0x00100000
-
-/* decrementer freq: 1 ms ticks        */
-
-/* configure flash */
-#define CONFIG_SYS_FLASH_BASE                  0xff800000
-#define CONFIG_SYS_MAX_FLASH_BANKS             1
-#define CONFIG_SYS_MAX_FLASH_SECT              64
-#define CONFIG_SYS_FLASH_SIZE                  8
-#undef CONFIG_SYS_FLASH_16BIT
-#define CONFIG_SYS_FLASH_ERASE_TOUT            240000
-#define CONFIG_SYS_FLASH_WRITE_TOUT            500
-#define CONFIG_SYS_FLASH_LOCK_TOUT             500
-#define CONFIG_SYS_FLASH_UNLOCK_TOUT           10000
-#define CONFIG_SYS_FLASH_PROTECTION
-
-/* monitor in flash */
-#define CONFIG_SYS_MONITOR_OFFSET              0x00700000
-
-/* environment in flash */
-#define CONFIG_ENV_IS_IN_FLASH         1
-#define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x00020000)
-#define CONFIG_ENV_SIZE                        0x00020000
-#define CONFIG_ENV_SECT_SIZE           0x00020000
-
-/*
- * Initial memory map for linux
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ                   (8 << 20)
-
-/* hard reset configuration words */
-#ifdef CONFIG_CLKIN_66MHz
-#define CONFIG_SYS_HRCW_MASTER                 0x04643050
-#else
-#error NO HRCW FOR 100MHZ SPECIFIED !!!
-#endif
-#define CONFIG_SYS_HRCW_SLAVE1                 0x00000000
-#define CONFIG_SYS_HRCW_SLAVE2                 0x00000000
-#define CONFIG_SYS_HRCW_SLAVE3                 0x00000000
-#define CONFIG_SYS_HRCW_SLAVE4                 0x00000000
-#define CONFIG_SYS_HRCW_SLAVE5                 0x00000000
-#define CONFIG_SYS_HRCW_SLAVE6                 0x00000000
-#define CONFIG_SYS_HRCW_SLAVE7                 0x00000000
-
-/* internal memory mapped register */
-#define CONFIG_SYS_IMMR                        0xF0000000
-
-/* definitions for initial stack pointer and data area (in DPRAM) */
-#define CONFIG_SYS_INIT_RAM_ADDR               CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE               0x2000
-#define CONFIG_SYS_GBL_DATA_OFFSET             (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET              CONFIG_SYS_GBL_DATA_OFFSET
-
-/*
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE                  0x00000000
-#define CONFIG_SYS_SDRAM_SIZE                  (32*1024*1024)
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_FLASH               (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_OFFSET)
-#define CONFIG_SYS_MONITOR_LEN                 0x00020000
-#define CONFIG_SYS_MALLOC_LEN                  0x00020000
-
-/* cache configuration */
-#define CONFIG_SYS_CACHELINE_SIZE              32      /* for MPC8260 */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT             5       /* log base 2 of above */
-#endif
-
-/*
- * HIDx - Hardware Implementation-dependent Registers
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT                   (HID0_ICE|HID0_DCE|\
-                                        HID0_ICFI|HID0_DCI|HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL                  (HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2                        0
-
-/* RMR - reset mode register - turn on checkstop reset enable */
-#define CONFIG_SYS_RMR                         RMR_CSRE
-
-/* BCR - bus configuration */
-#define CONFIG_SYS_BCR                         0x00000000
-
-/* SIUMCR - siu module configuration */
-#define CONFIG_SYS_SIUMCR                      0x4905c000
-
-/* SYPCR - system protection control */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR                       0xffffff87
-#else
-#define CONFIG_SYS_SYPCR                       0xffffff83
-#endif
-
-/* TMCNTSC - time counter status and control */
-/* clear interrupts XXX jse */
-/*#define CONFIG_SYS_TMCNTSC                   (TMCNTSC_SEC|TMCNTSC_ALR) */
-#define CONFIG_SYS_TMCNTSC                     (TMCNTSC_SEC|TMCNTSC_ALR|\
-                                        TMCNTSC_TCF|TMCNTSC_TCE)
-
-/* PISCR - periodic interrupt status and control */
-/* clear interrupts XXX jse */
-/*#define CONFIG_SYS_PISCR                     (PISCR_PS) */
-#define CONFIG_SYS_PISCR                       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/* SCCR - system clock control */
-#define CONFIG_SYS_SCCR                        0x000001a9
-
-/* RCCR - risc controller configuration */
-#define CONFIG_SYS_RCCR                        0
-
-/*
- * MEMORY MAP
- * ----------
- * CS0 - FLASH    8MB/8Bit     base=0xff800000 (boot: 0xfe000000, 8x mirrored)
- * CS1 - SDRAM   32MB/64Bit    base=0x00000000
- * CS2 - DSP/SL1  1MB/16Bit    base=0xf0100000
- * CS3 - DSP/SL2  1MB/16Bit    base=0xf0200000
- * CS4 - DSP/SL3  1MB/16Bit    base=0xf0300000
- * CS5 - DSP/SL4  1MB/16Bit    base=0xf0400000
- * CS7 - DPRAM    1KB/8Bit     base=0xf0500000, size=32KB (32x mirrored)
- *  x  - IMMR     384KB                base=0xf0000000
- */
-/* XXX jse 100MHz TODO */
-#define CONFIG_SYS_BR0_PRELIM                  0xff800801
-#define CONFIG_SYS_OR0_PRELIM                  0xff801e44
-#define CONFIG_SYS_BR1_PRELIM                  0x00000041
-#define CONFIG_SYS_OR1_PRELIM                  0xfe002ec0
-#if 1
-#define CONFIG_SYS_BR2_PRELIM                  0xf0101001
-#define CONFIG_SYS_OR2_PRELIM                  0xfff00ef4
-#define CONFIG_SYS_BR3_PRELIM                  0xf0201001
-#define CONFIG_SYS_OR3_PRELIM                  0xfff00ef4
-#define CONFIG_SYS_BR4_PRELIM                  0xf0301001
-#define CONFIG_SYS_OR4_PRELIM                  0xfff00ef4
-#define CONFIG_SYS_BR5_PRELIM                  0xf0401001
-#define CONFIG_SYS_OR5_PRELIM                  0xfff00ef4
-#else
-#define CONFIG_SYS_BR2_PRELIM                  0xf0101081
-#define CONFIG_SYS_OR2_PRELIM                  0xfff00104
-#define CONFIG_SYS_BR3_PRELIM                  0xf0201081
-#define CONFIG_SYS_OR3_PRELIM                  0xfff00104
-#define CONFIG_SYS_BR4_PRELIM                  0xf0301081
-#define CONFIG_SYS_OR4_PRELIM                  0xfff00104
-#define CONFIG_SYS_BR5_PRELIM                  0xf0401081
-#define CONFIG_SYS_OR5_PRELIM                  0xfff00104
-#endif
-#define CONFIG_SYS_BR7_PRELIM                  0xf0500881
-#define CONFIG_SYS_OR7_PRELIM                  0xffff8104
-#define CONFIG_SYS_MPTPR                       0x2700
-#define CONFIG_SYS_PSDMR                       0x822a2452      /* optimal */
-/*#define CONFIG_SYS_PSDMR                     0x822a48a3 */   /* relaxed */
-#define CONFIG_SYS_PSRT                        0x1a
-
-/* "bad" address */
-#define        CONFIG_SYS_RESET_ADDRESS                0x40000000
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/WUH405.h b/include/configs/WUH405.h
deleted file mode 100644 (file)
index e4f0d19..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_IDENT_STRING     " $Name:  $"
-
-#define CONFIG_405EP           1       /* This is a PPC405 CPU         */
-#define CONFIG_WUH405          1       /* ...on a WUH405 board         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33333300 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_BOOTDELAY       3       /* autoboot after 3 seconds     */
-
-#undef CONFIG_BOOTARGS
-#undef  CONFIG_BOOTCOMMAND
-
-#define CONFIG_PREBOOT                  /* enable preboot variable      */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_LXT971_NO_SLEEP  1       /* disable sleep mode in LXT971 */
-
-#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ /* 66 MHz OPB clock*/
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_EEPROM
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_RTC_MC146818            /* DS1685 is MC146818 compatible*/
-#define CONFIG_SYS_RTC_REG_BASE_ADDR    0xF0000500 /* RTC Base Address         */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_DEVICE_NULLDEV      1       /* include nulldev device       */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      2       /* Use UART1                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD       691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1         /* Max number of NAND devices */
-#define NAND_BIG_DELAY_US      25
-
-#define CONFIG_SYS_NAND_CE             (0x80000000 >> 1)   /* our CE is GPIO1  */
-#define CONFIG_SYS_NAND_RDY            (0x80000000 >> 4)   /* our RDY is GPIO4 */
-#define CONFIG_SYS_NAND_CLE            (0x80000000 >> 2)   /* our CLE is GPIO2 */
-#define CONFIG_SYS_NAND_ALE            (0x80000000 >> 3)   /* our ALE is GPIO3 */
-
-#define CONFIG_SYS_NAND_SKIP_BAD_DOT_I      1  /* ".i" read skips bad blocks   */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER 0             /* configure as pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST PCI_HOST_HOST  /* select pci host function     */
-#undef CONFIG_PCI_PNP                  /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#undef CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFFFC0000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)    /* Reserve 256 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1000    /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#if 0 /* test-only */
-#define CONFIG_SYS_JFFS2_FIRST_BANK    0           /* use for JFFS2 */
-#define CONFIG_SYS_JFFS2_NUM_BANKS     1           /* ! second bank contains U-Boot */
-#endif
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x100   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x700   /* 2048 bytes may be used for env vars*/
-                                  /* total size of a CAT24WC16 is 2048 bytes */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xF0000500              /* NVRAM base address   */
-#define CONFIG_SYS_NVRAM_SIZE          242                     /* NVRAM size           */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC16) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4    /* The Catalyst CAT24WC08 has   */
-                                       /* 16 byte page write mode using*/
-                                       /* last 4 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-/*#define CONFIG_SYS_EBC_PB0AP           0x08055880  /XXX* TWT=16,CSN=1,OEN=1,WBN=1,WBF=1,TH=4,SOR=1 */
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1, NAND-FLASH) initialization                     */
-#define CONFIG_SYS_EBC_PB1AP           0x92015480
-#define CONFIG_SYS_EBC_PB1CR           0xF4018000  /* BAS=0xF40,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (8 Bit Peripheral: CAN, UART, RTC) initialization             */
-#define CONFIG_SYS_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (16 Bit Peripheral: FPGA internal, dig. IO) initialization    */
-#define CONFIG_SYS_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */
-#define CONFIG_SYS_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */
-
-#define CAN_BA         0xF0000000          /* CAN Base Address                 */
-#define DUART0_BA      0xF0000400          /* DUART Base Address               */
-#define DUART1_BA      0xF0000408          /* DUART Base Address               */
-#define DUART2_BA      0xF0000410          /* DUART Base Address               */
-#define DUART3_BA      0xF0000418          /* DUART Base Address               */
-#define RTC_BA         0xF0000500          /* RTC Base Address                 */
-#define CONFIG_SYS_NAND_BASE   0xF4000000
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- */
-#define CONFIG_SYS_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */
-#define CONFIG_SYS_FPGA_MAX_SIZE       128*1024    /* 128kByte is enough for XC2S50E*/
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */
-#define CONFIG_SYS_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */
-#define CONFIG_SYS_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */
-#define CONFIG_SYS_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */
-#define CONFIG_SYS_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM        1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]    - External Bus Controller BLAST output
- * GPIO0[1-9]  - Instruction trace outputs -> GPIO
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs -> GPIO
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- */
-#define CONFIG_SYS_GPIO0_OSRL          0x40000550
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110
-#define CONFIG_SYS_GPIO0_ISR1L         0x00000000
-#define CONFIG_SYS_GPIO0_ISR1H         0x15555445
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000
-#define CONFIG_SYS_GPIO0_TCR           0xF7FE0014
-
-#define CONFIG_SYS_DUART_RST           (0x80000000 >> 14)
-
-/*
- * Default speed selection (cpu_plb_opb_ebc) in mhz.
- * This value will be set if iic boot eprom is disabled.
- */
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_266_133_66_33
-#define PLLMR1_DEFAULT  PLLMR1_266_133_66_33
-#endif
-#if 1
-#define PLLMR0_DEFAULT  PLLMR0_200_100_50_33
-#define PLLMR1_DEFAULT  PLLMR1_200_100_50_33
-#endif
-#if 0
-#define PLLMR0_DEFAULT  PLLMR0_133_66_66_33
-#define PLLMR1_DEFAULT  PLLMR1_133_66_66_33
-#endif
-
-#endif /* __CONFIG_H */
index a4050f34cc01782e0a640de42052e00b05a0db9e..d23d2c4cc5dafd9ebb61f981e056c4d5339fd786 100644 (file)
@@ -14,6 +14,8 @@
 
 #define CONFIG_MPC5200
 #define CONFIG_A3M071                  /* A3M071 board */
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_SYS_GENERIC_BOARD
 
 #define        CONFIG_SYS_TEXT_BASE    0x01000000      /* boot low for 32 MiB boards */
 
 #define CONFIG_SPL_BOARD_INIT
 #define CONFIG_SPL_NOR_SUPPORT
 #define CONFIG_SPL_TEXT_BASE   0xfc000000
-#define        CONFIG_SPL_START_S_PATH "arch/powerpc/cpu/mpc5xxx"
-#define CONFIG_SPL_LDSCRIPT    "arch/powerpc/cpu/mpc5xxx/u-boot-spl.lds"
 #define CONFIG_SPL_LIBCOMMON_SUPPORT   /* image.c */
 #define CONFIG_SPL_LIBGENERIC_SUPPORT  /* string.c */
 #define CONFIG_SPL_SERIAL_SUPPORT
index cc88ac1618a3c4b7bed4806120274cb3466d3419..3c6765560e8cbdea6222b11f503078d77d9ca086 100644 (file)
@@ -19,6 +19,8 @@
 #define CONFIG_MPC5200         1       /* This is a MPC5200 CPU */
 #define CONFIG_A4M072          1       /* ... on A4M072 board */
 #define CONFIG_MPC5200_DDR     1       /* ... use DDR RAM */
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_SYS_GENERIC_BOARD
 
 #define CONFIG_SYS_TEXT_BASE   0xFE000000
 
index 14bac155a355e1570032ae7dedd8bc714a615306..932a3090b409b032b345260e60989a7c8c60a9bf 100644 (file)
@@ -77,7 +77,6 @@
 /* DataFlash */
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5 * CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         2
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1    0xD0000000      /* CS1 */
index 7238f68820e8678b3bec66efe22ad3ccbc531b4b..58eac3135870ddec0a7ffb71978106ac595878da 100644 (file)
 #define __ALT_H
 
 #undef DEBUG
-#define CONFIG_ARMV7
 #define CONFIG_R8A7794
 #define CONFIG_RMOBILE_BOARD_STRING "Alt"
-#define CONFIG_SH_GPIO_PFC
-
-#include <asm/arch/rmobile.h>
-
-#define        CONFIG_CMD_EDITENV
-#define        CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_MEMORY
-#define CONFIG_CMD_DFL
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_RUN
-#define CONFIG_CMD_LOADS
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_BOOTZ
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_SPI
 
-#define CONFIG_SYS_TEXT_BASE   0xE6304000
-#define CONFIG_SYS_THUMB_BUILD
-#define CONFIG_SYS_GENERIC_BOARD
-
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-#define        CONFIG_INITRD_TAG
-#define        CONFIG_CMDLINE_EDITING
-
-#define CONFIG_OF_LIBFDT
-#define BOARD_LATE_INIT
-
-#define CONFIG_BAUDRATE                38400
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTARGS                ""
-
-#define CONFIG_VERSION_VARIABLE
-#undef CONFIG_SHOW_BOOT_PROGRESS
+#include "rcar-gen2-common.h"
 
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_TMU_TIMER
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_TEXT_BASE   0x70000000
+#else
+#define CONFIG_SYS_TEXT_BASE   0xE6304000
+#endif
 
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_INIT_SP_ADDR                0x7003FFFC
+#else
 #define CONFIG_SYS_INIT_SP_ADDR                0xE633FFFC
+#endif
 #define STACK_AREA_SIZE                        0xC000
 #define LOW_LEVEL_MERAM_STACK \
                (CONFIG_SYS_INIT_SP_ADDR + STACK_AREA_SIZE - 4)
 
 /* MEMORY */
-#define ALT_SDRAM_BASE         0x40000000
-#define ALT_SDRAM_SIZE         (1024u * 1024 * 1024)
-#define ALT_UBOOT_SDRAM_SIZE   (512 * 1024 * 1024)
-
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_SYS_CBSIZE              256
-#define CONFIG_SYS_PBSIZE              256
-#define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_BARGSIZE            512
-#define CONFIG_SYS_BAUDRATE_TABLE      { 38400, 115200 }
+#define RCAR_GEN2_SDRAM_BASE           0x40000000
+#define RCAR_GEN2_SDRAM_SIZE           (1024u * 1024 * 1024)
+#define RCAR_GEN2_UBOOT_SDRAM_SIZE     (512 * 1024 * 1024)
 
 /* SCIF */
 #define CONFIG_SCIF_CONSOLE
 #define CONFIG_CONS_SCIF2
-#undef CONFIG_SYS_CONSOLE_INFO_QUIET
-#undef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
-#undef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
-
-#define CONFIG_SYS_MEMTEST_START       (ALT_SDRAM_BASE)
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + \
-                                        504 * 1024 * 1024)
-#undef CONFIG_SYS_ALT_MEMTEST
-#undef CONFIG_SYS_MEMTEST_SCRATCH
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE
-
-#define CONFIG_SYS_SDRAM_BASE          (ALT_SDRAM_BASE)
-#define CONFIG_SYS_SDRAM_SIZE          (ALT_UBOOT_SDRAM_SIZE)
-#define CONFIG_SYS_LOAD_ADDR           (CONFIG_SYS_SDRAM_BASE + 0x7fc0)
-#define CONFIG_NR_DRAM_BANKS           1
-
-#define CONFIG_SYS_MONITOR_BASE                0x00000000
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)
-#define CONFIG_SYS_MALLOC_LEN          (1 * 1024 * 1024)
-#define CONFIG_SYS_BOOTMAPSZ           (8 * 1024 * 1024)
+#define CONFIG_SCIF_USE_EXT_CLK
 
 /* FLASH */
 #define CONFIG_SPI
 #define CONFIG_SPI_FLASH_QUAD
 #define CONFIG_SYS_NO_FLASH
 
-/* ENV setting */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_SECT_SIZE   (256 * 1024)
-#define CONFIG_ENV_ADDR                0xC0000
-#define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
-#define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "bootm_low=0x40e00000\0" \
-       "bootm_size=0x100000\0" \
-
 /* SH Ether */
 #define        CONFIG_NET_MULTI
 #define CONFIG_SH_ETHER
 #define CONFIG_SH_TMU_CLK_FREQ  (CONFIG_SYS_CLK_FREQ / 2) /* EXT / 2 */
 #define CONFIG_PLL1_CLK_FREQ    (CONFIG_SYS_CLK_FREQ * 156 / 2)
 #define CONFIG_P_CLK_FREQ      (CONFIG_PLL1_CLK_FREQ / 24)
-#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_P_CLK_FREQ
+#define CONFIG_SH_SCIF_CLK_FREQ        14745600 /* External Clock */
 
 #define CONFIG_SYS_TMU_CLK_DIV  4
 
 #define CONFIG_SYS_I2C_SH
 #define CONFIG_SYS_I2C_SLAVE           0x7F
 #define CONFIG_SYS_I2C_SH_NUM_CONTROLLERS       3
-#define CONFIG_SYS_I2C_SH_BASE0                0xE6500000
 #define CONFIG_SYS_I2C_SH_SPEED0       400000
-#define CONFIG_SYS_I2C_SH_BASE1                0xE6510000
 #define CONFIG_SYS_I2C_SH_SPEED1       400000
-#define CONFIG_SYS_I2C_SH_BASE2                0xE60B0000
 #define CONFIG_SYS_I2C_SH_SPEED2       400000
 #define CONFIG_SH_I2C_DATA_HIGH                4
 #define CONFIG_SH_I2C_DATA_LOW         5
 
 #define CONFIG_SYS_I2C_POWERIC_ADDR 0x58 /* da9063 */
 
+/* USB */
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_RMOBILE
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+
+/* MMCIF */
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_MMC
+
+#define CONFIG_SH_MMCIF
+#define CONFIG_SH_MMCIF_ADDR           0xee200000
+#define CONFIG_SH_MMCIF_CLK            48000000
+
+/* Module stop status bits */
+/* INTC-RT */
+#define CONFIG_SMSTP0_ENA      0x00400000
+/* MSIF */
+#define CONFIG_SMSTP2_ENA      0x00002000
+/* INTC-SYS, IRQC */
+#define CONFIG_SMSTP4_ENA      0x00000180
+/* SCIF2 */
+#define CONFIG_SMSTP7_ENA      0x00080000
+
 #endif /* __ALT_H */
index 1ec783daf4f9b69c3d51d4ad4784175eaa262be0..000475051812a2846bfd8b0625945cabfd315168 100644 (file)
@@ -47,8 +47,6 @@
 /* Enhance our eMMC support / experience. */
 #define CONFIG_CMD_GPT
 #define CONFIG_EFI_PARTITION
-#define CONFIG_PARTITION_UUIDS
-#define CONFIG_CMD_PART
 
 #ifdef CONFIG_NAND
 #define NANDARGS \
 #define CONFIG_AM335X_USB1
 #define CONFIG_AM335X_USB1_MODE MUSB_HOST
 
+#ifndef CONFIG_SPL_USBETH_SUPPORT
+/* Fastboot */
+#define CONFIG_CMD_FASTBOOT
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_USB_FASTBOOT_BUF_ADDR   CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE   0x07000000
+
+/* To support eMMC booting */
+#define CONFIG_STORAGE_EMMC
+#define CONFIG_FASTBOOT_FLASH_MMC_DEV   1
+#endif
+
 #ifdef CONFIG_MUSB_HOST
 #define CONFIG_CMD_USB
 #define CONFIG_USB_STORAGE
 #define CONFIG_USBNET_HOST_ADDR        "de:ad:be:af:00:00"
 
 /* USB TI's IDs */
-#define CONFIG_G_DNL_VENDOR_NUM 0x0403
-#define CONFIG_G_DNL_PRODUCT_NUM 0xBD00
+#define CONFIG_G_DNL_VENDOR_NUM 0x0451
+#define CONFIG_G_DNL_PRODUCT_NUM 0xD022
 #define CONFIG_G_DNL_MANUFACTURER "Texas Instruments"
 #endif /* CONFIG_MUSB_GADGET */
 
index 0fbfa3fb4c42a6d2ef41ac94abf47467b9aa620a..09ee10c0590b48c1260ff9846486dea9ca9504c6 100644 (file)
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
index 8719f763dd4e195412241bad594ce9b41a25c463..190ef0e71bfbeaf9441e701cd65146ddc6e5b4f0 100644 (file)
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
index 4472c3e5558065d6efe33eb0cfd4a48126914ee3..b00585c47b041ad4f8710e84011c3512edd0aeae 100644 (file)
 /* Enhance our eMMC support / experience. */
 #define CONFIG_CMD_GPT
 #define CONFIG_EFI_PARTITION
-#define CONFIG_PARTITION_UUIDS
-#define CONFIG_CMD_PART
 
 #ifndef CONFIG_SPL_BUILD
 #define CONFIG_EXTRA_ENV_SETTINGS \
index 3cde923b5f952d42623ea45fd4e9ee75e2f6748c..61809fcdbea79f0b75fc7b3c0ca1aa3d8f9eca9c 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
index 4424c3044195ddb444891efd6e87a5e441569742..403692d51702f5be822a4e495bedf1ae18d29d77 100644 (file)
@@ -18,8 +18,7 @@
 /*
  * SoC configurations
  */
-#define CONFIG_ARM926EJS               /* this is an ARM926EJS CPU */
-#define CONFIG_MX27                    /* in a Freescale i.MX27 Chip */
+#define CONFIG_MX27                    /* This is a Freescale i.MX27 Chip */
 #define CONFIG_MACH_TYPE       1698    /* APF27 */
 #define CONFIG_SYS_GENERIC_BOARD
 
index 20aea8572de12e985906d3a5fa4f729b731c4a27..e6a08df4ba7de13082e4df476120b3743a5a6a51 100644 (file)
@@ -77,7 +77,7 @@
 #define CONFIG_SPI_FLASH_STMICRO
 #define CONFIG_MXC_SPI
 #define CONFIG_SF_DEFAULT_BUS          3
-#define CONFIG_SF_DEFAULT_CS           (0|(IMX_GPIO_NR(3, 20)<<8))
+#define CONFIG_SF_DEFAULT_CS           0
 #define CONFIG_SF_DEFAULT_SPEED                20000000
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
 #define CONFIG_SYS_SPI_ST_ENABLE_WP_PIN
index b073b97bae5e0ee2d5876877572abb11c4e967c0..72469f35b2d9edc6eadf28eb85df4c067ea3efe6 100644 (file)
@@ -10,7 +10,6 @@
 #define __ARMADILLO_800EVA_H
 
 #undef DEBUG
-#define CONFIG_ARMV7
 #define CONFIG_R8A7740
 #define CONFIG_RMOBILE_BOARD_STRING "Armadillo-800EVA Board\n"
 #define CONFIG_SH_GPIO_PFC
index f9ee40fa7eef1605c39647eabf55ce4d3afd37d8..d68993bb1f7301c1384caaed9185524f7a2e3ea6 100644 (file)
@@ -9,6 +9,9 @@
 #ifndef __CONFIG_ARNDALE_H
 #define __CONFIG_ARNDALE_H
 
+#define EXYNOS_FDTFILE_SETTING \
+       "fdtfile=exynos5250-arndale.dtb\0"
+
 #include "exynos5250-common.h"
 
 /* SD/MMC configuration */
@@ -17,8 +20,6 @@
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
 
-#define CONFIG_CMD_EXT2
-
 /* USB */
 #define CONFIG_USB_EHCI
 #define CONFIG_USB_EHCI_EXYNOS
@@ -26,6 +27,7 @@
 #define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_ETHER_ASIX88179
 
 /* MMC SPL */
 #define CONFIG_EXYNOS_SPL
@@ -60,6 +62,4 @@
 /* The PERIPHBASE in the CBAR register is wrong on the Arndale, so override it */
 #define CONFIG_ARM_GIC_BASE_ADDRESS    0x10480000
 
-#define CONFIG_ARMV7_VIRT
-
 #endif /* __CONFIG_H */
index a30c016b41cd4f6d74bf655e7897d33c308a0039..735c82aa8d735e536faedebc09a96150864fd643 100644 (file)
@@ -61,6 +61,8 @@
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_OF_LIBFDT
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /*
  * Memory Configuration
  */
index 73917b0ec17b878c4f46dc488b36e4cf06a038cb..a6a80de88af419c1da403b7d96a8d4b746ecec59 100644 (file)
@@ -48,6 +48,8 @@
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_OF_LIBFDT
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* general purpose I/O */
 #define CONFIG_ATMEL_LEGACY            /* required until (g)pio is fixed */
 #define CONFIG_AT91_GPIO
 #ifndef CONFIG_AT91SAM9G20EK_2MMC
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH           1
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5*CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         2
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1    0xD0000000      /* CS1 */
index 226f8c1612a0c7c43e0166f72113f04268c41b66..407a53e55596a4e397ad3221f484c1d24dde3948 100644 (file)
@@ -33,6 +33,8 @@
 
 #define CONFIG_OF_LIBFDT
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #define CONFIG_ATMEL_LEGACY
 #define CONFIG_SYS_TEXT_BASE           0x21f00000
 
 /* DataFlash */
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5*CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         2
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3    0xD0000000      /* CS3 */
index b666d9494ddfc50469c85f743b064a676a87efb4..fa19e8bcc801d55a475a143727c2b02ffc2b470b 100644 (file)
 /* DataFlash */
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH           1
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5*CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         1
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define AT91_SPI_CLK                   15000000
index b8d5dd156f9f75a61ea7d921ff74b694dcc1d59b..d5f0197466176a7958c29b66cc361fcefadc4b5b 100644 (file)
 /* DataFlash */
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH                   1
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5*CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         1
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define AT91_SPI_CLK                           15000000
diff --git a/include/configs/atc.h b/include/configs/atc.h
deleted file mode 100644 (file)
index 77fa79a..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_ATC             1       /* ...on a ATC board    */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFF000000
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#define  CONFIG_CONS_ON_SMC            /* define if console on SMC */
-#undef CONFIG_CONS_ON_SCC              /* define if console on SCC */
-#undef  CONFIG_CONS_NONE               /* define if console on something else*/
-#define CONFIG_CONS_INDEX      2       /* which serial channel for console */
-
-#define CONFIG_BAUDRATE                115200
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC       */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-#define CONFIG_ETHER_ON_FCC
-
-#define CONFIG_ETHER_ON_FCC2
-
-/*
- * - Rx-CLK is CLK13
- * - Tx-CLK is CLK14
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-#define CONFIG_ETHER_ON_FCC3
-
-/*
- * - Rx-CLK is CLK15
- * - Tx-CLK is CLK16
- * - RAM for BD/Buffers is on the local Bus (see 28-13)
- * - Enable Half Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK3       (CMXFCR_FC3|CMXFCR_RF3CS_MSK|CMXFCR_TF3CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE3      (CMXFCR_RF3CS_CLK15|CMXFCR_TF3CS_CLK16)
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#define CONFIG_8260_CLKIN      64000000        /* in Hz */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#undef CONFIG_CLOCKS_IN_MHZ            /* clocks passsed to Linux in Hz */
-
-#define CONFIG_PREBOOT                                                 \
-       "echo;"                                                         \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;"\
-       "echo"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                             \
-       "bootp;"                                                        \
-       "setenv bootargs root=/dev/nfs rw "                             \
-       "nfsroot=${serverip}:${rootpath} "                              \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;"\
-       "bootm"
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configuration options
- */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_PCMCIA
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_IDE
-
-
-#define CONFIG_DOS_PARTITION
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END 0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR    0x100000        /* default load address */
-
-#define CONFIG_SYS_PIO_MODE            0       /* IDE interface in PIO Mode 0  */
-
-#define        CONFIG_SYS_RESET_ADDRESS 0xFFF00100     /* "bad" address                */
-
-#define CONFIG_SYS_ALLOC_DPRAM
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SPI
-
-#define CONFIG_RTC_DS12887
-
-#define RTC_BASE_ADDR          0xF5000000
-#define RTC_PORT_ADDR          RTC_BASE_ADDR + 0x800
-#define RTC_PORT_DATA          RTC_BASE_ADDR + 0x808
-
-#define CONFIG_MISC_INIT_R
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * Flash configuration
- */
-
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#define CONFIG_SYS_FLASH_SIZE          0x00800000
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of memory banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max num of sects on one chip */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000  /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-#define CONFIG_FLASH_16BIT
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- *
- * if you change bits in the HRCW, you must also change the CONFIG_SYS_*
- * defines for the various registers affected by the HRCW e.g. changing
- * HRCW_DPPCxx requires you to also change CONFIG_SYS_SIUMCR.
- */
-#define CONFIG_SYS_HRCW_MASTER         (HRCW_CIP | HRCW_ISB100 | HRCW_BMS | \
-                                HRCW_BPS10 |\
-                                HRCW_APPC10)
-
-/* no slaves so just fill with zeros */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2F00  /* Size of used area in DPRAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- *
- * 60x SDRAM is mapped at CONFIG_SYS_SDRAM_BASE.
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_SDRAM_MAX_SIZE      0x08000000      /* max. 128 MB          */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (192 << 10)     /* Reserve 192 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()*/
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-# define CONFIG_SYS_RAMBOOT
-#endif
-
-#define        CONFIG_PCI
-#define CONFIG_PCI_INDIRECT_BRIDGE
-#define        CONFIG_PCI_PNP
-#define        CONFIG_SYS_PCI_MSTR_IO_BUS      0x00000000      /* PCI base   */
-
-#if 1
-/* environment is in Flash */
-#define CONFIG_ENV_IS_IN_FLASH 1
-# define CONFIG_ENV_ADDR               (CONFIG_SYS_FLASH_BASE+0x30000)
-# define CONFIG_ENV_SIZE               0x10000
-# define CONFIG_ENV_SECT_SIZE  0x10000
-#else
-#define CONFIG_ENV_IS_IN_EEPROM        1
-#define CONFIG_ENV_OFFSET              0
-#define CONFIG_ENV_SIZE                2048
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4       /* 16-byte page size    */
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU              */
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                    2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE|HID0_DCE|HID0_ICFI|\
-                        HID0_DCI|HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL  (HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                     5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         RMR_CSRE
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                       4-25
- *-----------------------------------------------------------------------
- */
-#define BCR_APD01      0x10000000
-#define CONFIG_SYS_BCR         (BCR_APD01|BCR_ETM|BCR_LETM)    /* 8260 mode */
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                             4-31
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_BBD|SIUMCR_APPC10|\
-                        SIUMCR_CS10PC00|SIUMCR_BCTLC10)
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                             4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                     4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                 4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                   9-8
- *-----------------------------------------------------------------------
- * Ensure DFBRG is Divide by 16
- */
-#define CONFIG_SYS_SCCR        SCCR_DFBRG01
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                         13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-#define CONFIG_SYS_MIN_AM_MASK 0xC0000000
-/*-----------------------------------------------------------------------
- * MPTPR - Memory Refresh Timer Prescaler Register              10-18
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_MPTPR       0x1F00
-
-/*-----------------------------------------------------------------------
- * PSRT - Refresh Timer Register                                10-16
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_PSRT        0x0f
-
-/*-----------------------------------------------------------------------
- * PSRT - SDRAM Mode Register                                   10-10
- *-----------------------------------------------------------------------
- */
-
-       /* SDRAM initialization values for 8-column chips
-        */
-#define CONFIG_SYS_OR2_8COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI1_A7             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_8COL  (PSDMR_PBI                      |\
-                        PSDMR_SDAM_A15_IS_A5           |\
-                        PSDMR_BSMA_A15_A17             |\
-                        PSDMR_SDA10_PBI1_A7            |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_3W              |\
-                        PSDMR_ACTTORW_2W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-       /* SDRAM initialization values for 9-column chips
-        */
-#define CONFIG_SYS_OR2_9COL    (CONFIG_SYS_MIN_AM_MASK         |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI1_A6             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_9COL  (PSDMR_PBI                      |\
-                        PSDMR_SDAM_A16_IS_A5           |\
-                        PSDMR_BSMA_A15_A17             |\
-                        PSDMR_SDA10_PBI1_A6            |\
-                        PSDMR_RFRC_7_CLK               |\
-                        PSDMR_PRETOACT_3W              |\
-                        PSDMR_ACTTORW_2W               |\
-                        PSDMR_LDOTOPRE_1C              |\
-                        PSDMR_WRC_1C                   |\
-                        PSDMR_CL_2)
-
-/*
- * Init Memory Controller:
- *
- * Bank Bus     Machine PortSz  Device
- * ---- ---     ------- ------  ------
- *  0   60x     GPCM    8  bit  Boot ROM
- *  1   60x     GPCM    64 bit  FLASH
- *  2   60x     SDRAM   64 bit  SDRAM
- *
- */
-
-#define CONFIG_SYS_MRS_OFFS    0x00000000
-
-/* Bank 0 - FLASH
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_16                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_FLASH_SIZE)     |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_3_CLK                 |\
-                        ORxU_EHTR_8IDLE)
-
-
-/* Bank 2 - 60x bus SDRAM
- */
-#ifndef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR2_PRELIM   CONFIG_SYS_OR2_8COL
-
-#define CONFIG_SYS_PSDMR        CONFIG_SYS_PSDMR_8COL
-#endif /* CONFIG_SYS_RAMBOOT */
-
-#define CONFIG_SYS_BR4_PRELIM  ((RTC_BASE_ADDR & BRx_BA_MSK)   |\
-                        BRx_PS_8                       |\
-                        BRx_MS_UPMA                    |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR4_PRELIM  (ORxU_AM_MSK | ORxU_BI)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_I82365
-
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     0x81000000
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     0x1000
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_8xx_PCCARD  1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xa0000000
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x100
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x100
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x108
-
-#endif /* __CONFIG_H */
index bf09939c8174ffc17c5a9d03b173948676e66a53..104577995e5f2c683cd0b58d50508871e93edc6f 100644 (file)
@@ -10,8 +10,7 @@
 #include <linux/sizes.h>
 #include <asm/arch/sysmap.h>
 
-/* Architecture, CPU, chip, mach, etc */
-#define CONFIG_ARMV7
+/* CPU, chip, mach, etc */
 #define CONFIG_KONA
 #define CONFIG_SKIP_LOWLEVEL_INIT
 #define CONFIG_SYS_GENERIC_BOARD
index 827844e9d9449c7499fb07411f3c3fb8ed06ad8c..fb85c7263b19103d405ace79b92bb9e0b4940977 100644 (file)
@@ -9,8 +9,6 @@
 
 #include <asm/arch/configs.h>
 
-/* Architecture, CPU, chip, etc */
-#define CONFIG_ARMV7
 #define CONFIG_SKIP_LOWLEVEL_INIT
 
 #define CONFIG_SYS_GENERIC_BOARD
index d0828d5f5c107b9bb1aa943f45f80706e333c20a..39982ef72cf1c6fc25a6d24c96f178da8d624700 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
diff --git a/include/configs/beagle_x15.h b/include/configs/beagle_x15.h
new file mode 100644 (file)
index 0000000..c7719f3
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated.
+ * Felipe Balbi <balbi@ti.com>
+ *
+ * Configuration settings for the TI Beagle x15 board.
+ * See ti_omap5_common.h for omap5 common settings.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_BEAGLE_X15_H
+#define __CONFIG_BEAGLE_X15_H
+
+#define CONFIG_AM57XX
+
+#define CONFIG_NR_DRAM_BANKS           2
+
+#define CONFIG_ENV_SIZE                        (64 << 10)
+#define CONFIG_ENV_IS_IN_FAT
+#define FAT_ENV_INTERFACE              "mmc"
+#define FAT_ENV_DEVICE_AND_PART                "0:1"
+#define FAT_ENV_FILE                   "uboot.env"
+
+#define CONFIG_CMD_SAVEENV
+
+#define CONSOLEDEV                     "ttyO2"
+#define CONFIG_SYS_NS16550_COM1                UART1_BASE      /* Base EVM has UART0 */
+#define CONFIG_SYS_NS16550_COM2                UART2_BASE      /* UART2 */
+#define CONFIG_SYS_NS16550_COM3                UART3_BASE      /* UART3 */
+#define CONFIG_BAUDRATE                        115200
+
+#define CONFIG_SYS_OMAP_ABE_SYSCK
+
+/* Define the default GPT table for eMMC */
+#define PARTS_DEFAULT \
+       "uuid_disk=${uuid_gpt_disk};" \
+       "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}"
+
+#include <configs/ti_omap5_common.h>
+
+/* Enhance our eMMC support / experience. */
+#define CONFIG_CMD_GPT
+#define CONFIG_EFI_PARTITION
+
+/* CPSW Ethernet */
+#define CONFIG_CMD_NFS
+#define CONFIG_CMD_NET                 /* 'bootp' and 'tftp' */
+#define CONFIG_CMD_DHCP
+#define CONFIG_BOOTP_DNS               /* Configurable parts of CMD_DHCP */
+#define CONFIG_BOOTP_DNS2
+#define CONFIG_BOOTP_SEND_HOSTNAME
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_SUBNETMASK
+#define CONFIG_NET_RETRY_COUNT         10
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_MII
+#define CONFIG_DRIVER_TI_CPSW          /* Driver for IP block */
+#define CONFIG_MII                     /* Required in net/eth.c */
+#define CONFIG_PHY_GIGE                        /* per-board part of CPSW */
+#define CONFIG_PHYLIB
+
+#define CONFIG_SUPPORT_EMMC_BOOT
+
+/* USB xHCI HOST */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_HOST
+#define CONFIG_USB_XHCI
+#define CONFIG_USB_XHCI_OMAP
+#define CONFIG_USB_STORAGE
+#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
+
+#define CONFIG_OMAP_USB_PHY
+#define CONFIG_OMAP_USB3PHY1_HOST
+
+/* SATA */
+#define CONFIG_BOARD_LATE_INIT
+#define CONFIG_CMD_SCSI
+#define CONFIG_LIBATA
+#define CONFIG_SCSI_AHCI
+#define CONFIG_SCSI_AHCI_PLAT
+#define CONFIG_SYS_SCSI_MAX_SCSI_ID    1
+#define CONFIG_SYS_SCSI_MAX_LUN                1
+#define CONFIG_SYS_SCSI_MAX_DEVICE     (CONFIG_SYS_SCSI_MAX_SCSI_ID * \
+                                               CONFIG_SYS_SCSI_MAX_LUN)
+
+#endif /* __CONFIG_BEAGLE_X5_H */
index 164b2dd9518ecd3b8f8aaad30be083ac3740bc18..5df460c96b1d0072b36e06c1e8c74b8b58f5f891 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_ASIX
 
+/* PCI host support */
+#define CONFIG_PCI
+#define CONFIG_PCI_TEGRA
+#define CONFIG_PCI_PNP
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_PCI_ENUM
+
+/* PCI networking support */
+#define CONFIG_RTL8169
+
 /* General networking support */
 #define CONFIG_CMD_NET
 #define CONFIG_CMD_DHCP
index 20f6ed1992f82055736ba4a1f0ecdd7a4986bee3..50e85ca93c1126eca7094bdec57bceb3e3c9d0f8 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index c33d035022843fd3fa5072bd4ace9e5bde7f4dbe..7fc882a133b4e3c4b622dd8031e0dc9b3c0c5bc1 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index b497f26773808ee598f40b5589e0cd75be69cecd..c2958e834e8cfc054aaa9d8343d1cc0ea4d20cd4 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 0bca53f2a69c7427e2068b5051ea950ff8b40263..79e440a0be4780bb05181f735c328508ae7b8dba 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 9d43b811e3e9e0fac993ee5fafa8956e10e3d4f2..b374ab57725e73f97bdf0a30907b453cf0411d8d 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 3bc364ccfdfb32c056b133e73fb1458a1a6b92ed..6df89af402985004962cbdac8b147c9f4c05900e 100644 (file)
 /*
  * I2C settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 #define CONFIG_SYS_I2C_SPEED           50000
 #define CONFIG_SYS_I2C_SLAVE           0
 
index ba74a695f88b03d8ab6c06481e8702e452de97b7..4f2b2cbf296a8fe25e124caa99f2de4fec07b63c 100644 (file)
 /*
  * I2C settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 0b723cf934e00b42d5b2dab7a21c32f81810f6dc..d01d88f3b47cc673af67f5dd079fe8cad2ff76e1 100644 (file)
 /*
  * I2C settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 #define CONFIG_SYS_I2C_SPEED           50000
 #define CONFIG_SYS_I2C_SLAVE           0
 
index 29f9316067dda1b205d8dc7ac9b0eb04440e5806..7b5a5a7f71dfb3c4a71e817f49c024cf7e1ab69d 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index a65528246d68b15fbbd2c25471f22424cbc698bb..e60558e1b62f838b524c663d4253606559ad486c 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index da5f0294351c0c5f3288d9fc935d17e395ba1af5..e71e6d324cda769a743a4d3b01bef34c956031be 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 12192ffb5d7d5a227b50936221a9a334619738f7..878009ff6615a2e4f2e6aa8c4b75ec8d785e2311 100644 (file)
@@ -81,8 +81,8 @@
 #define CONFIG_PHYLIB
 
 /* i2c Settings */
-#define CONFIG_BFIN_TWI_I2C
-#define CONFIG_HARD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 /*
  * Flash Settings
index ea9acf69d1c0342da838f14cadc42ce7d8564138..143d3ddd2d8e699af12dc585ce606fecae20e5ee 100644 (file)
@@ -39,6 +39,7 @@
 #  define CONFIG_CMD_FAT
 #  define CONFIG_CMD_MMC
 #  define CONFIG_DOS_PARTITION
+#  define CONFIG_SYS_MMC_MAX_BLK_COUNT 127
 # endif
 # ifdef CONFIG_MMC_SPI
 #  define CONFIG_CMD_MMC_SPI
@@ -72,7 +73,7 @@
 # ifdef CONFIG_SPI_FLASH
 #  define CONFIG_CMD_SF
 # endif
-# if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C_SOFT)
+# if defined(CONFIG_SYS_I2C) || defined(CONFIG_SYS_I2C_SOFT)
 #  define CONFIG_CMD_I2C
 #  define CONFIG_SOFT_I2C_READ_REPEATED_START
 # endif
 /*
  * I2C Settings
  */
-#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C_SOFT)
+#if defined(CONFIG_SYS_I2C) || defined(CONFIG_SYS_I2C_SOFT)
 # ifndef CONFIG_SYS_I2C_SPEED
 #  define CONFIG_SYS_I2C_SPEED 50000
 # endif
index 3f240085e3f22b3b7d3d70fb963c7afad84b18e8..48cf184826d979b0e93f796faf999b97ac0db92b 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C
-#define CONFIG_HARD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index b27f973896decb8040f99ec2779175c5aa35e30b..44c947f61869a0df9541df69263f760826a4ec49 100644 (file)
@@ -24,7 +24,6 @@
  * SoC Configuration
  */
 #define CONFIG_MACH_DAVINCI_CALIMAIN
-#define CONFIG_ARM926EJS               /* arm926ejs CPU core */
 #define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
 #define CONFIG_SOC_DA850               /* TI DA850 SoC */
 #define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
index 5f30279fe66c50b89ec683c1ff43de640f2bca77..f8785dbafcf9f968460df4fba471b3658279db54 100644 (file)
@@ -14,7 +14,6 @@
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
 
 /* SoC Configuration */
-#define CONFIG_ARM926EJS                               /* arm926ejs CPU */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            24000000        /* timer0 freq */
 #define CONFIG_SOC_DM365
index 09129c77673a9b98dfe47d63fde1307279fd8afa..5e13b655c28788b9cfdf65a699c8e65929fb78ee 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_SYS_MAX_I2C_BUS         TEGRA_I2C_NUM_CONTROLLERS
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_ASIX
 
+/* PCI host support */
+#define CONFIG_PCI
+#define CONFIG_PCI_TEGRA
+#define CONFIG_PCI_PNP
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_PCI_ENUM
+
+/* PCI networking support */
+#define CONFIG_RTL8169
+
 /* General networking support */
 #define CONFIG_CMD_NET
 #define CONFIG_CMD_DHCP
diff --git a/include/configs/chromebook_link.h b/include/configs/chromebook_link.h
new file mode 100644 (file)
index 0000000..7e6d239
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2008
+ * Graeme Russ, graeme.russ@gmail.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * board/config.h - configuration options, board specific
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <configs/x86-common.h>
+
+
+#define CONFIG_SYS_MONITOR_LEN                 (1 << 20)
+
+#define CONFIG_DCACHE_RAM_MRC_VAR_SIZE         0x4000
+#define CONFIG_BOARD_EARLY_INIT_F
+
+#define CONFIG_NR_DRAM_BANKS                   8
+#define CONFIG_X86_MRC_ADDR                    0xfffa0000
+#define CONFIG_CACHE_MRC_SIZE_KB               512
+
+#define CONFIG_X86_SERIAL
+
+#define CONFIG_SCSI_DEV_LIST           {PCI_VENDOR_ID_INTEL, \
+                       PCI_DEVICE_ID_INTEL_NM10_AHCI},       \
+       {PCI_VENDOR_ID_INTEL,           \
+                       PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_MOBILE}, \
+       {PCI_VENDOR_ID_INTEL, \
+                       PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_SERIES6}, \
+       {PCI_VENDOR_ID_INTEL,           \
+                       PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE}
+
+#define CONFIG_X86_OPTION_ROM_FILE             pci8086,0166.bin
+#define CONFIG_X86_OPTION_ROM_ADDR             0xfff90000
+
+#define CONFIG_PCI_MEM_BUS     0xe0000000
+#define CONFIG_PCI_MEM_PHYS    CONFIG_PCI_MEM_BUS
+#define CONFIG_PCI_MEM_SIZE    0x10000000
+
+#define CONFIG_PCI_PREF_BUS    0xd0000000
+#define CONFIG_PCI_PREF_PHYS   CONFIG_PCI_PREF_BUS
+#define CONFIG_PCI_PREF_SIZE   0x10000000
+
+#define CONFIG_PCI_IO_BUS      0x1000
+#define CONFIG_PCI_IO_PHYS     CONFIG_PCI_IO_BUS
+#define CONFIG_PCI_IO_SIZE     0xefff
+
+#define CONFIG_SYS_EARLY_PCI_INIT
+#define CONFIG_PCI_PNP
+
+#define CONFIG_BIOSEMU
+#define VIDEO_IO_OFFSET                                0
+#define CONFIG_X86EMU_RAW_IO
+
+#define CONFIG_CROS_EC
+#define CONFIG_CROS_EC_LPC
+#define CONFIG_CMD_CROS_EC
+#define CONFIG_ARCH_EARLY_INIT_R
+
+#define CONFIG_STD_DEVICES_SETTINGS     "stdin=usbkbd,vga,serial\0" \
+                                       "stdout=vga,serial\0" \
+                                       "stderr=vga,serial\0"
+
+#endif /* __CONFIG_H */
index f5351ad2643d5c37855d48ab0b42a2aa6e1e77c6..643c8379aad6207877321826ef5fecd74a341206 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 1729b44a1bf308d92baa33782f4a11532f30564d..e05956846c92436ae2281605807fc068d9e8b0b8 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 272aa744a95cc9065d23eac4cf2d2760f77fc09d..1f26457a955abc3ec96c3c2f5814d477fd4924b7 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 7f27eda416da7ecf3e4a8de60434f798cab8bf0f..72eafc5699b57f5dc578fad441a733f4a66b21e5 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 7c693d62d1d3ad948ab6dc3212c20a2dd7f4afb9..93938642fa07c2e7fa92efa56a0ab93a5ac96795 100644 (file)
@@ -8,6 +8,11 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
+
 /*
  * High Level Configuration Options
  */
index 1919cde79fce50b8f08981e2cb936fdd570da03f..9767512a5cf03771a5008932433b417cdacfbe56 100644 (file)
@@ -25,6 +25,7 @@
 #define CONFIG_CMD_GPIO
 #define CONFIG_CM_T3X  /* working with CM-T35 and CM-T3730 */
 #define CONFIG_OMAP_COMMON
+#define CONFIG_SYS_GENERIC_BOARD
 
 #define CONFIG_SDRC    /* The chip has SDRC controller */
 
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 #define CONFIG_SPL_BOARD_INIT
diff --git a/include/configs/cm_t3517.h b/include/configs/cm_t3517.h
new file mode 100644 (file)
index 0000000..918032b
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ * (C) Copyright 2013 CompuLab, Ltd.
+ * Author: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * Configuration settings for the CompuLab CM-T3517 board
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_OMAP    /* in a TI OMAP core */
+#define CONFIG_CM_T3517        /* working with CM-T3517 */
+#define CONFIG_OMAP_COMMON
+#define CONFIG_SYS_GENERIC_BOARD
+
+#define CONFIG_SYS_TEXT_BASE   0x80008000
+
+/*
+ * This is needed for the DMA stuff.
+ * Although the default iss 64, we still define it
+ * to be on the safe side once the default is changed.
+ */
+#define CONFIG_SYS_CACHELINE_SIZE      64
+
+#define CONFIG_EMIF4   /* The chip has EMIF4 controller */
+
+#include <asm/arch/cpu.h>              /* get chip and board defs */
+#include <asm/arch/omap3.h>
+
+/*
+ * Display CPU and Board information
+ */
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+/* Clock Defines */
+#define V_OSCK                 26000000        /* Clock output from T2 */
+#define V_SCLK                 (V_OSCK >> 1)
+
+#define CONFIG_MISC_INIT_R
+
+#define CONFIG_OF_LIBFDT
+/*
+ * The early kernel mapping on ARM currently only maps from the base of DRAM
+ * to the end of the kernel image.  The kernel is loaded at DRAM base + 0x8000.
+ * The early kernel pagetable uses DRAM base + 0x4000 to DRAM base + 0x8000,
+ * so that leaves DRAM base to DRAM base + 0x4000 available.
+ */
+#define CONFIG_SYS_BOOTMAPSZ           0x4000
+
+#define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+#define CONFIG_REVISION_TAG
+#define CONFIG_SERIAL_TAG
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
+#define CONFIG_SYS_MALLOC_LEN  (CONFIG_ENV_SIZE + (128 << 10))
+
+/*
+ * Hardware drivers
+ */
+
+/*
+ * NS16550 Configuration
+ */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE    (-4)
+#define CONFIG_SYS_NS16550_CLK         48000000        /* 48MHz (APLL96/2) */
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_CONS_INDEX              3
+#define CONFIG_SYS_NS16550_COM3                OMAP34XX_UART3
+#define CONFIG_SERIAL3                 3       /* UART3 */
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_BAUDRATE                        115200
+#define CONFIG_SYS_BAUDRATE_TABLE      {4800, 9600, 19200, 38400, 57600,\
+                                       115200}
+
+#define CONFIG_OMAP_GPIO
+
+#define CONFIG_GENERIC_MMC
+#define CONFIG_MMC
+#define CONFIG_OMAP_HSMMC
+#define CONFIG_DOS_PARTITION
+
+/* USB */
+#define CONFIG_USB_MUSB_AM35X
+
+#ifndef CONFIG_USB_MUSB_AM35X
+#define CONFIG_USB_OMAP3
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_OMAP
+#define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 146
+#define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 147
+#else /* !CONFIG_USB_MUSB_AM35X */
+#define CONFIG_MUSB_HOST
+#define CONFIG_MUSB_PIO_ONLY
+#endif /* CONFIG_USB_MUSB_AM35X */
+
+#define CONFIG_USB_STORAGE
+#define CONFIG_CMD_USB
+
+/* commands to include */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_EXT2                /* EXT2 Support                 */
+#define CONFIG_CMD_FAT         /* FAT support                  */
+#define CONFIG_CMD_MTDPARTS    /* Enable MTD parts commands */
+#define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
+#define CONFIG_MTD_PARTITIONS
+#define MTDIDS_DEFAULT         "nand0=nand"
+#define MTDPARTS_DEFAULT       "mtdparts=nand:512k(x-loader),"\
+                               "1920k(u-boot),256k(u-boot-env),"\
+                               "4m(kernel),-(fs)"
+
+#define CONFIG_CMD_I2C         /* I2C serial bus support       */
+#define CONFIG_CMD_MMC         /* MMC support                  */
+#define CONFIG_CMD_NAND                /* NAND support                 */
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_GPIO
+
+#undef CONFIG_CMD_FLASH                /* flinfo, erase, protect       */
+#undef CONFIG_CMD_FPGA         /* FPGA configuration Support   */
+#undef CONFIG_CMD_IMLS         /* List all found images        */
+
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_OMAP24_I2C_SPEED    400000
+#define CONFIG_SYS_OMAP24_I2C_SLAVE    1
+#define CONFIG_SYS_I2C_OMAP34XX
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+#define CONFIG_SYS_I2C_EEPROM_BUS      0
+#define CONFIG_I2C_MULTI_BUS
+
+/*
+ * Board NAND Info.
+ */
+#define CONFIG_SYS_NAND_QUIET_TEST
+#define CONFIG_NAND_OMAP_GPMC
+#define CONFIG_SYS_NAND_ADDR           NAND_BASE       /* physical address */
+                                                       /* to access nand */
+#define CONFIG_SYS_NAND_BASE           NAND_BASE       /* physical address */
+                                                       /* to access nand at */
+                                                       /* CS0 */
+#define CONFIG_SYS_MAX_NAND_DEVICE     1               /* Max number of NAND */
+                                                       /* devices */
+
+/* Environment information */
+#define CONFIG_BOOTDELAY               3
+#define CONFIG_ZERO_BOOTDELAY_CHECK
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "loadaddr=0x82000000\0" \
+       "baudrate=115200\0" \
+       "console=ttyO2,115200n8\0" \
+       "mpurate=auto\0" \
+       "vram=12M\0" \
+       "dvimode=1024x768MR-16@60\0" \
+       "defaultdisplay=dvi\0" \
+       "mmcdev=0\0" \
+       "mmcroot=/dev/mmcblk0p2 rw rootwait\0" \
+       "mmcrootfstype=ext4\0" \
+       "nandroot=/dev/mtdblock4 rw\0" \
+       "nandrootfstype=ubifs\0" \
+       "mmcargs=setenv bootargs console=${console} " \
+               "mpurate=${mpurate} " \
+               "vram=${vram} " \
+               "omapfb.mode=dvi:${dvimode} " \
+               "omapdss.def_disp=${defaultdisplay} " \
+               "root=${mmcroot} " \
+               "rootfstype=${mmcrootfstype}\0" \
+       "nandargs=setenv bootargs console=${console} " \
+               "mpurate=${mpurate} " \
+               "vram=${vram} " \
+               "omapfb.mode=dvi:${dvimode} " \
+               "omapdss.def_disp=${defaultdisplay} " \
+               "root=${nandroot} " \
+               "rootfstype=${nandrootfstype}\0" \
+       "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source ${loadaddr}\0" \
+       "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "bootm ${loadaddr}\0" \
+       "nandboot=echo Booting from nand ...; " \
+               "run nandargs; " \
+               "nand read ${loadaddr} 2a0000 400000; " \
+               "bootm ${loadaddr}\0" \
+
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_BOOTCOMMAND \
+       "mmc dev ${mmcdev}; if mmc rescan; then " \
+               "if run loadbootscript; then " \
+                       "run bootscript; " \
+               "else " \
+                       "if run loaduimage; then " \
+                               "run mmcboot; " \
+                       "else run nandboot; " \
+                       "fi; " \
+               "fi; " \
+       "else run nandboot; fi"
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_TIMESTAMP
+#define CONFIG_SYS_AUTOLOAD            "no"
+#define CONFIG_SYS_LONGHELP            /* undef to save memory */
+#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
+#define CONFIG_SYS_PROMPT              "CM-T3517 # "
+#define CONFIG_SYS_CBSIZE              512     /* Console I/O Buffer Size */
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
+                                       sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS             32      /* max number of command args */
+/* Boot Argument Buffer Size */
+#define CONFIG_SYS_BARGSIZE            (CONFIG_SYS_CBSIZE)
+
+#define CONFIG_SYS_LOAD_ADDR           (OMAP34XX_SDRC_CS0 + 0x02000000)
+
+/*
+ * AM3517 has 12 GP timers, they can be driven by the system clock
+ * (12/13/16.8/19.2/38.4MHz) or by 32KHz clock. We use 13MHz (V_SCLK).
+ * This rate is divided by a local divisor.
+ */
+#define CONFIG_SYS_TIMERBASE           (OMAP34XX_GPT2)
+#define CONFIG_SYS_PTV                 2       /* Divisor: 2^(PTV+1) => 8 */
+#define CONFIG_SYS_HZ                  1000
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS   1       /* CM-T3517 DRAM is only on CS0 */
+#define PHYS_SDRAM_1           OMAP34XX_SDRC_CS0
+#define CONFIG_SYS_CS0_SIZE            (256 << 20)
+
+/*-----------------------------------------------------------------------
+ * FLASH and environment organization
+ */
+
+/* **** PISMO SUPPORT *** */
+/* Monitor at start of flash */
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
+#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 2 sectors */
+
+#define CONFIG_ENV_IS_IN_NAND
+#define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
+#define CONFIG_ENV_OFFSET              SMNAND_ENV_OFFSET
+#define CONFIG_ENV_ADDR                        SMNAND_ENV_OFFSET
+
+#if defined(CONFIG_CMD_NET)
+#define CONFIG_DRIVER_TI_EMAC
+#define CONFIG_DRIVER_TI_EMAC_USE_RMII
+#define CONFIG_MII
+#define CONFIG_SMC911X
+#define CONFIG_SMC911X_32_BIT
+#define CONFIG_SMC911X_BASE    (0x2C000000 + (16 << 20))
+#endif /* CONFIG_CMD_NET */
+
+/* additions for new relocation code, must be added to all boards */
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
+#define CONFIG_SYS_INIT_RAM_ADDR       0x4020f800
+#define CONFIG_SYS_INIT_RAM_SIZE       0x800
+#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR +     \
+                                        CONFIG_SYS_INIT_RAM_SIZE -     \
+                                        GENERATED_GBL_DATA_SIZE)
+
+/* Status LED */
+#define CONFIG_STATUS_LED              /* Status LED enabled */
+#define CONFIG_BOARD_SPECIFIC_LED
+#define CONFIG_GPIO_LED
+#define GREEN_LED_GPIO                 186 /* CM-T3517 Green LED is GPIO186 */
+#define GREEN_LED_DEV                  0
+#define STATUS_LED_BIT                 GREEN_LED_GPIO
+#define STATUS_LED_STATE               STATUS_LED_ON
+#define STATUS_LED_PERIOD              (CONFIG_SYS_HZ / 2)
+#define STATUS_LED_BOOT                        GREEN_LED_DEV
+
+/* GPIO banks */
+#ifdef CONFIG_STATUS_LED
+#define CONFIG_OMAP3_GPIO_6    /* GPIO186 is in GPIO bank 6  */
+#endif
+
+/* Display Configuration */
+#define CONFIG_OMAP3_GPIO_2
+#define CONFIG_OMAP3_GPIO_5
+#define CONFIG_VIDEO_OMAP3
+#define LCD_BPP                LCD_COLOR16
+
+#define CONFIG_LCD
+#define CONFIG_SPLASH_SCREEN
+#define CONFIG_SPLASHIMAGE_GUARD
+#define CONFIG_CMD_BMP
+#define CONFIG_BMP_16BPP
+#define CONFIG_SCF0403_LCD
+
+#define CONFIG_OMAP3_SPI
+
+#endif /* __CONFIG_H */
index 641ab48c2c81d5fd7203905d18c6efec619d05d5..0cd4aec7e2f89a6343e7d1e4b56d7126a8818cc8 100644 (file)
@@ -16,7 +16,6 @@
 
 #include <configs/ti_omap5_common.h>
 
-#undef CONFIG_MISC_INIT_R
 #undef CONFIG_SPL_OS_BOOT
 
 /* Enable Generic board */
 #define CONFIG_HSMMC2_8BIT
 #define CONFIG_SUPPORT_EMMC_BOOT
 
+/* SATA Boot related defines */
+#define CONFIG_SPL_SATA_SUPPORT
+#define CONFIG_SPL_SATA_BOOT_DEVICE            0
+#define CONFIG_SYS_SATA_FAT_BOOT_PARTITION     1
+
+#define CONFIG_CMD_SCSI
+#define CONFIG_LIBATA
+#define CONFIG_SCSI_AHCI
+#define CONFIG_SCSI_AHCI_PLAT
+#define CONFIG_SYS_SCSI_MAX_SCSI_ID    1
+#define CONFIG_SYS_SCSI_MAX_LUN                1
+#define CONFIG_SYS_SCSI_MAX_DEVICE     (CONFIG_SYS_SCSI_MAX_SCSI_ID * \
+                                               CONFIG_SYS_SCSI_MAX_LUN)
 /* USB UHH support options */
 #define CONFIG_CMD_USB
 #define CONFIG_USB_HOST
diff --git a/include/configs/cogent_common.h b/include/configs/cogent_common.h
deleted file mode 100644 (file)
index 1b5d6a5..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * (C) Copyright 2000
- * Murray Jensen, CSIRO-MST
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _CONFIG_COGENT_COMMON_H
-#define _CONFIG_COGENT_COMMON_H
-
-/*
- * Cogent Motherboard Capabilities
- */
-#define CMA_MB_CAP_SERPAR      0x0001  /* has dual serial+parallel (16C552) */
-#define CMA_MB_CAP_LCD         0x0002  /* has LCD display (HD44780) */
-#define CMA_MB_CAP_FLASH       0x0004  /* has flash (E28F800B or AM29F800BB) */
-#define CMA_MB_CAP_RTC         0x0008  /* has RTC+NVRAM (MK48T02) */
-#define CMA_MB_CAP_ETHER       0x0010  /* has Ethernet (MB86964) */
-#define CMA_MB_CAP_SLOT1       0x0020  /* has CMABus slot 1 */
-#define CMA_MB_CAP_SLOT2       0x0040  /* has CMABus slot 2 */
-#define CMA_MB_CAP_SLOT3       0x0080  /* has CMABus slot 3 */
-#define CMA_MB_CAP_KBM         0x0100  /* has PS/2 keyboard+mouse (HT6542B) */
-#define CMA_MB_CAP_SER2                0x0200  /* has 2nd dual serial (16C2552) */
-#define CMA_MB_CAP_PCI         0x0400  /* has pci bridge (V360EPC) */
-#define CMA_MB_CAP_PCI_EXT     0x0800  /* can access extended pci space  */
-#define CMA_MB_CAP_PCI_ETHER   0x1000  /* has 10/100 ether on PCI (GD82559) */
-#define CMA_MB_CAP_PCI_VIDEO   0x2000  /* has video int'face on PCI (B69000) */
-#define CMA_MB_CAP_PCI_CARDBUS 0x4000  /* has Cardbus Ctlr on PCI (PD6832) */
-
-/*
- * Cogent option sanity checking
- */
-
-#if defined(CONFIG_MPC821) || defined(CONFIG_MPC823) || \
-      defined(CONFIG_MPC850) || defined(CONFIG_MPC860)
-
-/*
- * check a PowerPC 8xx cpu module has been selected
- */
-
-# if defined(CONFIG_CMA286_21)
-
-#  define COGENT_CPU_MODULE    "CMA286-21"
-
-# elif defined(CONFIG_CMA286_60_OLD)
-
-#  define COGENT_CPU_MODULE    "CMA286-60 (old)"
-
-# elif defined(CONFIG_CMA286_60)
-
-#  define COGENT_CPU_MODULE    "CMA286-60"
-
-# elif defined(CONFIG_CMA286_60P)
-
-#  define COGENT_CPU_MODULE    "CMA286-60P"
-
-# elif defined(CONFIG_CMA287_21)
-
-#  define COGENT_CPU_MODULE    "CMA287-21"
-
-# elif defined(CONFIG_CMA287_50)
-
-#  define COGENT_CPU_MODULE    "CMA287-50"
-
-# else
-
-#  error Cogent CPU Module must be a PowerPC MPC8xx module
-
-# endif
-
-#elif defined(CONFIG_MPC8260)
-
-/*
- * check a PowerPC 8260 cpu module has been selected
- */
-
-# if defined(CONFIG_CMA282)
-
-#  define COGENT_CPU_MODULE    "CMA282"
-
-# else
-
-#  error Cogent CPU Module must be a PowerPC MPC8260 module
-
-# endif
-
-#else
-
-# error CPU type must be PowerPC 8xx or 8260
-
-#endif
-
-/*
- * check a motherboard has been selected
- * define the motherboard capabilities while we're at it
- */
-
-#if defined(CONFIG_CMA101)
-
-# define COGENT_MOTHERBOARD    "CMA101"
-# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
-                                CMA_MB_CAP_RTC | CMA_MB_CAP_ETHER | \
-                                CMA_MB_CAP_SLOT1 | CMA_MB_CAP_SLOT2 | \
-                                CMA_MB_CAP_SLOT3)
-# define CMA_MB_NSLOTS         3
-
-#elif defined(CONFIG_CMA102)
-
-# define COGENT_MOTHERBOARD    "CMA102"
-# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
-                                CMA_MB_CAP_RTC | CMA_MB_CAP_SLOT1 | \
-                                CMA_MB_CAP_SLOT2 | CMA_MB_CAP_SLOT3)
-# define CMA_MB_NSLOTS         3
-
-#elif defined(CONFIG_CMA110)
-
-# define COGENT_MOTHERBOARD    "CMA110"
-# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
-                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
-                                CMA_MB_CAP_KBM | CMA_MB_CAP_PCI)
-# define CMA_MB_NSLOTS         0
-
-#elif defined(CONFIG_CMA111)
-
-# define COGENT_MOTHERBOARD    "CMA111"
-# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
-                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
-                                CMA_MB_CAP_SLOT1 | CMA_MB_CAP_KBM | \
-                                CMA_MB_CAP_PCI | CMA_MB_CAP_PCI_EXT | \
-                                CMA_MB_CAP_PCI_ETHER)
-# define CMA_MB_NSLOTS         1
-
-#elif defined(CONFIG_CMA120)
-
-# define COGENT_MOTHERBOARD    "CMA120"
-# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
-                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
-                                CMA_MB_CAP_SLOT1 | CMA_MB_CAP_KBM | \
-                                CMA_MB_CAP_SER2 | CMA_MB_CAP_PCI | \
-                                CMA_MB_CAP_PCI_EXT | CMA_MB_CAP_PCI_ETHER | \
-                                CMA_MB_CAP_PCI_VIDEO | CMA_MB_CAP_PCI_CARDBUS)
-# define CMA_MB_NSLOTS         1
-
-#elif defined(CONFIG_CMA150)
-
-# define COGENT_MOTHERBOARD    "CMA150"
-# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
-                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
-                                CMA_MB_CAP_KBM)
-# define CMA_MB_NSLOTS         0
-
-#else
-
-# error Cogent Motherboard either unsupported or undefined
-
-#endif
-
-/*
- * check a flash i/o module has been selected if no flash on m/b
- */
-
-#if defined(CONFIG_CMA302)
-
-# define COGENT_FLASH_MODULE   "CMA302"
-
-#elif (CMA_MB_CAPS & CMA_MB_CAP_FLASH) == 0
-
-# error Cogent Flash I/O module (e.g. CMA302) is required with this Motherboard
-
-#endif
-
-/*
- * some further sanity checks
- */
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI) && (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
-#error Cogent Sanity Check: Both Slot2 and PCI are defined
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI_EXT) && !(CMA_MB_CAPS & CMA_MB_CAP_PCI)
-#error Extended PCI capability defined without PCI capability
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI_ETHER) && !(CMA_MB_CAPS & CMA_MB_CAP_PCI)
-#error Motherboard ethernet capability defined without PCI capability
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SER2) && !(CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
-#error 2nd dual serial capability defined without serial/parallel capability
-#endif
-#include "../board/cogent/mb.h"
-#endif /* _CONFIG_COGENT_COMMON_H */
diff --git a/include/configs/cogent_mpc8260.h b/include/configs/cogent_mpc8260.h
deleted file mode 100644 (file)
index 02b25c6..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * (C) Copyright 2000
- * Murray Jensen <Murray.Jensen@cmst.csiro.au>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Config header file for Cogent platform using an MPC8xx CPU module
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8260         1       /* This is an MPC8260 CPU       */
-#define CONFIG_COGENT          1       /* using Cogent Modular Architecture */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#define        CONFIG_SYS_TEXT_BASE    0xfff00000
-
-#define        CONFIG_MISC_INIT_F      1       /* Use misc_init_f()            */
-#define        CONFIG_MISC_INIT_R              /* Use misc_init_r()            */
-
-/* Cogent Modular Architecture options */
-#define CONFIG_CMA282          1       /* ...on a CMA282 CPU module    */
-#define CONFIG_CMA111          1       /* ...on a CMA111 motherboard   */
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere (for example, on the cogent platform, there are serial
- * ports on the motherboard which are used for the serial console - see
- * cogent/cma101/serial.[ch]).
- */
-#define        CONFIG_CONS_ON_SMC              /* define if console on SMC */
-#undef CONFIG_CONS_ON_SCC              /* define if console on SCC */
-#undef CONFIG_CONS_NONE                /* define if console on something else*/
-#define CONFIG_CONS_INDEX      1       /* which serial channel for console */
-#undef CONFIG_CONS_USE_EXTC            /* SMC/SCC use ext clock not brg_clk */
-#define        CONFIG_CONS_EXTC_RATE   3686400 /* SMC/SCC ext clk rate in Hz */
-#define        CONFIG_CONS_EXTC_PINSEL 0       /* pin select 0=CLK3/CLK9,1=CLK5/CLK15*/
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* define if ether on SCC       */
-#undef CONFIG_ETHER_ON_FCC             /* define if ether on FCC       */
-#define        CONFIG_ETHER_NONE               /* define if ether on something else */
-#define CONFIG_ETHER_INDEX     1       /* which channel for ether      */
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#define CONFIG_8260_CLKIN      66666666        /* in Hz */
-
-#if defined(CONFIG_CONS_NONE) || defined(CONFIG_CONS_USE_EXTC)
-#define CONFIG_BAUDRATE                230400
-#else
-#define CONFIG_BAUDRATE                9600
-#endif
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_KGDB
-
-#undef CONFIG_CMD_NET
-#undef CONFIG_CMD_NFS
-
-#ifdef DEBUG
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_BOOTCOMMAND     "bootm 04080000 04200000" /* autoboot command*/
-
-#define CONFIG_BOOTARGS                "root=/dev/ram rw"
-
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_KGDB_ON_SMC              /* define if kgdb on SMC */
-#undef CONFIG_KGDB_ON_SCC              /* define if kgdb on SCC */
-#undef CONFIG_KGDB_NONE                /* define if kgdb on something else */
-#define CONFIG_KGDB_INDEX      2       /* which serial channel for kgdb */
-#define        CONFIG_KGDB_USE_EXTC            /* SMC/SCC use ext clock not brg_clk */
-#define        CONFIG_KGDB_EXTC_RATE   3686400 /* serial ext clk rate in Hz */
-#define        CONFIG_KGDB_EXTC_PINSEL 0       /* pin select 0=CLK3/CLK9,1=CLK5/CLK15*/
-# if defined(CONFIG_KGDB_NONE) || defined(CONFIG_KGDB_USE_EXTC)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port at */
-# else
-#define CONFIG_KGDB_BAUDRATE   9600    /* speed to run kgdb serial port at */
-# endif
-#endif
-
-#undef CONFIG_WATCHDOG                 /* disable platform specific watchdog */
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x01c00000      /* 4 ... 28 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-/*-----------------------------------------------------------------------
- * Low Level Cogent settings
- * if CONFIG_SYS_CMA_CONS_SERIAL is defined, make sure the 8260 CPM serial is not.
- * also, make sure CONFIG_CONS_INDEX is still defined - the index will be
- * 1 for serialA, 2 for serialB, 3 for ser2A, 4 for ser2B
- * (second 2 for CMA120 only)
- */
-#define CONFIG_SYS_CMA_MB_BASE         0x00000000      /* base of m/b address space */
-
-#include <configs/cogent_common.h>
-
-#ifdef CONFIG_CONS_NONE
-#define CONFIG_SYS_CMA_CONS_SERIAL     /* use Cogent motherboard serial for console */
-#endif
-#define CONFIG_SYS_CMA_LCD_HEARTBEAT   /* define for sec rotator in lcd corner */
-#define CONFIG_SHOW_ACTIVITY
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-/*
- * flash exists on the motherboard
- * set these four according to TOP dipsw:
- * TOP on  => ..._FLLOW_...    (boot EPROM space is high so FLASH is low )
- * TOP off => ..._FLHIGH_...   (boot EPROM space is low  so FLASH is high)
- */
-#define CMA_MB_FLASH_EXEC_BASE CMA_MB_FLLOW_EXEC_BASE
-#define CMA_MB_FLASH_EXEC_SIZE CMA_MB_FLLOW_EXEC_SIZE
-#define CMA_MB_FLASH_RDWR_BASE CMA_MB_FLLOW_RDWR_BASE
-#define CMA_MB_FLASH_RDWR_SIZE CMA_MB_FLLOW_RDWR_SIZE
-#endif
-#define CMA_MB_FLASH_BASE      CMA_MB_FLASH_EXEC_BASE
-#define CMA_MB_FLASH_SIZE      CMA_MB_FLASH_EXEC_SIZE
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- *
- * if you change bits in the HRCW, you must also change the CONFIG_SYS_*
- * defines for the various registers affected by the HRCW e.g. changing
- * HRCW_DPPCxx requires you to also change CONFIG_SYS_SIUMCR.
- */
-#define CONFIG_SYS_HRCW_MASTER (HRCW_EBM|HRCW_BPS10|HRCW_L2CPC10|HRCW_DPPC11|\
-                        HRCW_ISB100|HRCW_MMR11|HRCW_MODCK_H0101)
-/* no slaves so just duplicate the master hrcw */
-#define CONFIG_SYS_HRCW_SLAVE1 CONFIG_SYS_HRCW_MASTER
-#define CONFIG_SYS_HRCW_SLAVE2 CONFIG_SYS_HRCW_MASTER
-#define CONFIG_SYS_HRCW_SLAVE3 CONFIG_SYS_HRCW_MASTER
-#define CONFIG_SYS_HRCW_SLAVE4 CONFIG_SYS_HRCW_MASTER
-#define CONFIG_SYS_HRCW_SLAVE5 CONFIG_SYS_HRCW_MASTER
-#define CONFIG_SYS_HRCW_SLAVE6 CONFIG_SYS_HRCW_MASTER
-#define CONFIG_SYS_HRCW_SLAVE7 CONFIG_SYS_HRCW_MASTER
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x4000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           CMA_MB_RAM_BASE
-#ifdef CONFIG_CMA302
-#define CONFIG_SYS_FLASH_BASE          CMA_MB_SLOT2_BASE       /* cma302 in slot 2 */
-#else
-#define CONFIG_SYS_FLASH_BASE          CMA_MB_FLASH_BASE       /* flash on m/b */
-#endif
-#define        CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()*/
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Mem map for Linux*/
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max num of memory banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      67      /* max num of sects on one chip */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_ADDR                CONFIG_SYS_FLASH_BASE /* Addr of Environment Sector */
-#ifdef CONFIG_CMA302
-#define        CONFIG_ENV_SIZE         0x1000  /* Total Size of Environment Sector */
-#define CONFIG_ENV_SECT_SIZE   (512*1024) /* see README - env sect real size */
-#else
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector */
-#endif
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU              */
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5       /* log base 2 of the above value*/
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                   2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE|HID0_DCE|HID0_ICFI|HID0_DCI|\
-                               HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID0_FINAL  (HID0_ICE|HID0_IFEM|HID0_ABE)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                    5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         RMR_CSRE
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                      4-25
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_BCR         BCR_EBM
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                            4-31
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DPPC11|SIUMCR_L2CPC10|SIUMCR_MMR11)
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                            4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                    4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                  9-8
- *-----------------------------------------------------------------------
- * Ensure DFBRG is Divide by 16
- */
-#define CONFIG_SYS_SCCR        (SCCR_DFBRG01)
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                                13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-#if defined(CONFIG_CMA282)
-
-/*
- * Init Memory Controller:
- *
- * According to the Cogent manual, only CS0 and CS2 are used - CS0 for EPROM
- * and CS2 for (optional) local bus RAM on the CPU module.
- *
- * Note the motherboard address space (256 Mbyte in size) is connected
- * to the 60x Bus and is located starting at address 0. The Hard Reset
- * Configuration Word should put the 60x Bus into External Bus Mode, since
- * we dont set up any memory controller maps for it (see BCR[EBM], 4-26).
- *
- * (the *_SIZE vars must be a power of 2)
- */
-
-#define CONFIG_SYS_CMA_CS0_BASE        CONFIG_SYS_TEXT_BASE    /* EPROM */
-#define CONFIG_SYS_CMA_CS0_SIZE        (1 << 20)
-#if 0
-#define CONFIG_SYS_CMA_CS2_BASE        0x10000000      /* Local Bus SDRAM */
-#define CONFIG_SYS_CMA_CS2_SIZE        (16 << 20)
-#endif
-
-/*
- * CS0 maps the EPROM on the cpu module
- * Set it for 10 wait states, address CONFIG_SYS_MONITOR_BASE and size 1M
- *
- * Note: We must have already transferred control to the final location
- * of the EPROM before these are used, because when BR0/OR0 are set, the
- * mirror of the eprom at any other addresses will disappear.
- */
-
-/* base address = CONFIG_SYS_CMA_CS0_BASE, 16-bit, no parity, r/o, gpcm (60x bus) */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_CMA_CS0_BASE&BRx_BA_MSK)|BRx_PS_16|BRx_WP|BRx_V)
-/* mask size CONFIG_SYS_CMA_CS0_SIZE, csneg 1/4 early, adr-to-cs 1/2, 10-wait states */
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(CONFIG_SYS_CMA_CS0_SIZE)|\
-                               ORxG_CSNT|ORxG_ACS_DIV2|ORxG_SCY_10_CLK)
-
-/*
- * CS2 enables the Local Bus SDRAM on the CPU Module
- *
- * Will leave this unset for the moment, because a) my CPU module has no
- * SDRAM installed (it is optional); and b) it will require programming
- * one of the UPMs in SDRAM mode - not a trivial job, and hard to get right
- * if you can't test it.
- */
-
-#if 0
-/* base address = CONFIG_SYS_CMA_CS2_BASE, 32-bit, no parity, ??? */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_CMA_CS2_BASE&BRx_BA_MSK)|BRx_PS_32|/*???*/|BRx_V)
-/* mask size CONFIG_SYS_CMA_CS2_SIZE, CS time normal, ??? */
-#define CONFIG_SYS_OR2_PRELIM  ((~(CONFIG_SYS_CMA_CS2_SIZE-1)&ORx_AM_MSK)|/*???*/)
-#endif
-
-#endif
-#endif /* __CONFIG_H */
diff --git a/include/configs/cogent_mpc8xx.h b/include/configs/cogent_mpc8xx.h
deleted file mode 100644 (file)
index c98b687..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * (C) Copyright 2000-2010
- * Murray Jensen <Murray.Jensen@cmst.csiro.au>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Config header file for Cogent platform using an MPC8xx CPU module
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1       /* This is an MPC860 CPU        */
-#define CONFIG_COGENT          1       /* using Cogent Modular Architecture */
-
-#define        CONFIG_SYS_TEXT_BASE    0xfff00000
-
-#define        CONFIG_MISC_INIT_F      1       /* Use misc_init_f()            */
-#define        CONFIG_MISC_INIT_R              /* Use misc_init_r()            */
-
-/* Cogent Modular Architecture options */
-#define CONFIG_CMA286_60_OLD   1       /* ...on an old CMA286-60 CPU module */
-#define CONFIG_CMA102          1       /* ...on a CMA102 motherboard   */
-#define CONFIG_CMA302          1       /* ...with a CMA302 flash I/O module */
-
-/* serial console configuration */
-#undef CONFIG_8xx_CONS_SMC1
-#undef CONFIG_8xx_CONS_SMC2
-#define CONFIG_8xx_CONS_NONE   /* not on 8xx serial ports (eg on cogent m/b) */
-
-#if defined(CONFIG_CMA286_60_OLD)
-#define CONFIG_8xx_GCLK_FREQ   33333000 /* define if cant use get_gclk_freq */
-#endif
-
-#define CONFIG_BAUDRATE                230400
-
-#define CONFIG_HARD_I2C                /* I2C with hardware support */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_KGDB
-#define CONFIG_CMD_I2C
-
-#undef CONFIG_CMD_NET
-#undef CONFIG_CMD_NFS
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_BOOTCOMMAND     "bootm 04080000 04200000" /* autoboot command*/
-
-#define CONFIG_BOOTARGS                "root=/dev/ram rw"
-
-#if defined(CONFIG_CMD_KGDB)
-#undef CONFIG_KGDB_ON_SMC              /* define if kgdb on SMC */
-#undef CONFIG_KGDB_ON_SCC              /* define if kgdb on SCC */
-#define        CONFIG_KGDB_NONE                /* define if kgdb on something else */
-#define CONFIG_KGDB_INDEX      2       /* which SMC/SCC channel for kgdb */
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-#define CONFIG_WATCHDOG                        /* turn on platform specific watchdog */
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x01c00000      /* 4 ... 28 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-#define CONFIG_SYS_ALLOC_DPRAM
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-/*-----------------------------------------------------------------------
- * Low Level Cogent settings
- * if CONFIG_SYS_CMA_CONS_SERIAL is defined, make sure the 8xx CPM serial is not.
- * also, make sure CONFIG_CONS_INDEX is still defined - the index will be
- * 1 for serialA, 2 for serialB, 3 for ser2A, 4 for ser2B
- * (second 2 for CMA120 only)
- */
-#define CONFIG_SYS_CMA_MB_BASE         0x00000000      /* base of m/b address space */
-
-#include <configs/cogent_common.h>
-
-#define CONFIG_SYS_CMA_CONS_SERIAL     /* use Cogent motherboard serial for console */
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_SYS_CMA_LCD_HEARTBEAT   /* define for sec rotator in lcd corner */
-#define CONFIG_SHOW_ACTIVITY
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-/*
- * flash exists on the motherboard
- * set these four according to TOP dipsw:
- * TOP on  => ..._FLLOW_...    (boot EPROM space is high so FLASH is low )
- * TOP off => ..._FLHIGH_...   (boot EPROM space is low  so FLASH is high)
- */
-#define CMA_MB_FLASH_EXEC_BASE CMA_MB_FLLOW_EXEC_BASE
-#define CMA_MB_FLASH_EXEC_SIZE CMA_MB_FLLOW_EXEC_SIZE
-#define CMA_MB_FLASH_RDWR_BASE CMA_MB_FLLOW_RDWR_BASE
-#define CMA_MB_FLASH_RDWR_SIZE CMA_MB_FLLOW_RDWR_SIZE
-#endif
-#define CMA_MB_FLASH_BASE      CMA_MB_FLASH_EXEC_BASE
-#define CMA_MB_FLASH_SIZE      CMA_MB_FLASH_EXEC_SIZE
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFF000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           CMA_MB_RAM_BASE
-#ifdef CONFIG_CMA302
-#define CONFIG_SYS_FLASH_BASE          CMA_MB_SLOT2_BASE       /* cma302 in slot 2 */
-#else
-#define CONFIG_SYS_FLASH_BASE          CMA_MB_FLASH_BASE       /* flash on m/b */
-#endif
-#define        CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
-#define        CONFIG_SYS_MONITOR_LEN          (128 << 10)     /* Reserve 128 kB for Monitor   */
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      67      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_ADDR                CONFIG_SYS_FLASH_BASE /* Addr of Environment Sector */
-#ifdef CONFIG_CMA302
-#define        CONFIG_ENV_SIZE         0x1000  /* Total Size of Environment Sector     */
-#define CONFIG_ENV_SECT_SIZE   (512*1024) /* see README - env sect real size */
-#else
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-#endif
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit - leave PLL multiplication factor unchanged !
- */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | SCCR_RTDIV    | SCCR_RTSEL    | \
-                        SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-/*#define      CONFIG_SYS_DER  0x2002000F*/
-#define CONFIG_SYS_DER 0
-
-#if defined(CONFIG_CMA286_60_OLD)
-
-/*
- * Init Memory Controller:
- *
- * NOTE: although the names (CONFIG_SYS_xRn_PRELIM) suggest preliminary settings,
- * they are actually the final settings for this cpu/board, because the
- * flash and RAM are on the motherboard, accessed via the CMAbus, and the
- * mappings are pretty much fixed.
- *
- * (the *_SIZE vars must be a power of 2)
- */
-
-#define CONFIG_SYS_CMA_CS0_BASE        CONFIG_SYS_TEXT_BASE            /* EPROM */
-#define CONFIG_SYS_CMA_CS0_SIZE        (1 << 20)
-#define CONFIG_SYS_CMA_CS1_BASE        CMA_MB_RAM_BASE         /* RAM + I/O SLOT 1 */
-#define CONFIG_SYS_CMA_CS1_SIZE        (64 << 20)
-#define CONFIG_SYS_CMA_CS2_BASE        CMA_MB_SLOT2_BASE       /* I/O SLOTS 2 + 3 */
-#define CONFIG_SYS_CMA_CS2_SIZE        (64 << 20)
-#define CONFIG_SYS_CMA_CS3_BASE        CMA_MB_ROMLOW_BASE      /* M/B I/O */
-#define CONFIG_SYS_CMA_CS3_SIZE        (32 << 20)
-
-/*
- * CS0 maps the EPROM on the cpu module
- * Set it for 4 wait states, address CONFIG_SYS_MONITOR_BASE and size 1M
- *
- * Note: We must have already transferred control to the final location
- * of the EPROM before these are used, because when BR0/OR0 are set, the
- * mirror of the eprom at any other addresses will disappear.
- */
-
-/* base address = CONFIG_SYS_CMA_CS0_BASE, 16-bit, no parity, r/o, gpcm */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_CMA_CS0_BASE&BR_BA_MSK)|BR_PS_16|BR_WP|BR_V)
-/* mask size CONFIG_SYS_CMA_CS0_SIZE, CS time normal, burst inhibit, 4-wait states */
-#define CONFIG_SYS_OR0_PRELIM  ((~(CONFIG_SYS_CMA_CS0_SIZE-1)&OR_AM_MSK)|OR_BI|OR_SCY_4_CLK)
-
-/*
- * CS1 maps motherboard DRAM and motherboard I/O slot 1
- * (each 32Mbyte in size)
- */
-
-/* base address = CONFIG_SYS_CMA_CS1_BASE, 32-bit, no parity, r/w, gpcm */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_CMA_CS1_BASE&BR_BA_MSK)|BR_V)
-/* mask size CONFIG_SYS_CMA_CS1_SIZE, CS time normal, burst ok, ext xfer ack */
-#define CONFIG_SYS_OR1_PRELIM  ((~(CONFIG_SYS_CMA_CS1_SIZE-1)&OR_AM_MSK)|OR_SETA)
-
-/*
- * CS2 maps motherboard I/O slots 2 and 3
- * (each 32Mbyte in size)
- */
-
-/* base address = CONFIG_SYS_CMA_CS2_BASE, 32-bit, no parity, r/w, gpcm */
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_CMA_CS2_BASE&BR_BA_MSK)|BR_V)
-/* mask size CONFIG_SYS_CMA_CS2_SIZE, CS time normal, burst ok, ext xfer ack */
-#define CONFIG_SYS_OR2_PRELIM  ((~(CONFIG_SYS_CMA_CS2_SIZE-1)&OR_AM_MSK)|OR_SETA)
-
-/*
- * CS3 maps motherboard I/O
- * (32Mbyte in size)
- */
-
-/* base address = CONFIG_SYS_CMA_CS3_BASE, 32-bit, no parity, r/w, gpcm */
-#define CONFIG_SYS_BR3_PRELIM  ((CONFIG_SYS_CMA_CS3_BASE&BR_BA_MSK)|BR_V)
-/* mask size CONFIG_SYS_CMA_CS3_SIZE, CS time normal, burst inhibit, ext xfer ack */
-#define CONFIG_SYS_OR3_PRELIM  ((~(CONFIG_SYS_CMA_CS3_SIZE-1)&OR_AM_MSK)|OR_BI|OR_SETA)
-
-#endif
-#endif /* __CONFIG_H */
index a582e255169c8188cdcd3aac8416b530191bf2c3..ce6f23b8c4f12ee73e2164357b3f2c7fdab17bd6 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
index 72b7efa5092c51cc00016ba5777c66e647952ec7..225ffdd0a5bc18992fabd62bd8ed2c211f962780 100644 (file)
 #define CONFIG_SYS_BMAN_MEM_PHYS       CONFIG_SYS_BMAN_MEM_BASE
 #endif
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    10
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf4200000
 #ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_QMAN_MEM_PHYS       CONFIG_SYS_QMAN_MEM_BASE
 #endif
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
index eb1584d3cc6a6038a7da0bc6540883635d8606b0..5b50c1d6dd5c459b0328da23eec806fd09342461 100644 (file)
@@ -19,7 +19,6 @@
 #define MACH_TYPE_CORVUS               2066
 
 #define CONFIG_SYS_GENERIC_BOARD
-
 /*
  * Warning: changing CONFIG_SYS_TEXT_BASE requires
  * adapting the initial boot program.
@@ -27,7 +26,7 @@
  * hex number here!
  */
 
-#define CONFIG_SYS_TEXT_BASE  0x73f00000
+#define CONFIG_SYS_TEXT_BASE  0x72000000
 
 #define CONFIG_ATMEL_LEGACY            /* required until (g)pio is fixed */
 
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE               (1 << 22)
 #define CONFIG_SYS_NAND_ENABLE_PIN             AT91_PIN_PC14
-#define CONFIG_SYS_NAND_READY_PIN              AT91_PIN_PC8
-
 #endif
 
 /* Ethernet */
  */
 #define CONFIG_SYS_MALLOC_LEN  ROUND(3 * CONFIG_ENV_SIZE + \
                                128*1024, 0x1000)
+/* Defines for SPL */
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_TEXT_BASE           0x300000
+#define CONFIG_SPL_MAX_SIZE            (12 * 1024)
+#define CONFIG_SPL_STACK               (16 * 1024)
+
+#define CONFIG_SPL_BSS_START_ADDR      CONFIG_SPL_MAX_SIZE
+#define CONFIG_SPL_BSS_MAX_SIZE                (2 * 1024)
+
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+
+#define CONFIG_SPL_BOARD_INIT
+#define CONFIG_SPL_GPIO_SUPPORT
+#define CONFIG_SYS_NAND_ENABLE_PIN_SPL (2*32 + 14)
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SPL_NAND_DRIVERS
+#define CONFIG_SPL_NAND_BASE
+#define CONFIG_SPL_NAND_ECC
+#define CONFIG_SPL_NAND_RAW_ONLY
+#define CONFIG_SPL_NAND_SOFTECC
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    0x20000
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    0x80000
+#define        CONFIG_SYS_NAND_U_BOOT_START    CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_U_BOOT_DST     CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+
+#define CONFIG_SYS_NAND_SIZE           (256*1024*1024)
+#define CONFIG_SYS_NAND_PAGE_SIZE      2048
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (128*1024)
+#define CONFIG_SYS_NAND_PAGE_COUNT     (CONFIG_SYS_NAND_BLOCK_SIZE / \
+                                        CONFIG_SYS_NAND_PAGE_SIZE)
+#define CONFIG_SYS_NAND_BAD_BLOCK_POS  NAND_LARGE_BADBLOCK_POS
+#define CONFIG_SYS_NAND_ECCSIZE                256
+#define CONFIG_SYS_NAND_ECCBYTES       3
+#define CONFIG_SYS_NAND_OOBSIZE                64
+#define CONFIG_SYS_NAND_ECCPOS         { 40, 41, 42, 43, 44, 45, 46, 47, \
+                                         48, 49, 50, 51, 52, 53, 54, 55, \
+                                         56, 57, 58, 59, 60, 61, 62, 63, }
+
+#define CONFIG_SPL_ATMEL_SIZE
+#define CONFIG_SYS_MASTER_CLOCK                132096000
+#define AT91_PLL_LOCK_TIMEOUT          1000000
+#define CONFIG_SYS_AT91_PLLA           0x20c73f03
+#define CONFIG_SYS_MCKR                        0x1301
+#define CONFIG_SYS_MCKR_CSS            0x1302
+
+#define ATMEL_BASE_MPDDRC              ATMEL_BASE_DDRSDRC0
 
 #endif
index ce521012f220d3105599f974b465ae33b0c3abb0..8c7d97a18e35ce06601029ba6427f24765ec38dc 100644 (file)
@@ -26,7 +26,6 @@
 #define AT91C_MASTER_CLOCK             (AT91C_MAIN_CLOCK / 3)
 #define CONFIG_SYS_HZ_CLOCK            (AT91C_MASTER_CLOCK / 2)
 
-#define CONFIG_ARM920T
 #define CONFIG_AT91RM9200
 #define CONFIG_CPUAT91
 #define USE_920T_MMU
diff --git a/include/configs/crownbay.h b/include/configs/crownbay.h
new file mode 100644 (file)
index 0000000..b927b1c
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * board/config.h - configuration options, board specific
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <configs/x86-common.h>
+
+#define CONFIG_SYS_MONITOR_LEN         (1 << 20)
+#define CONFIG_BOARD_EARLY_INIT_F
+
+#define CONFIG_NR_DRAM_BANKS           1
+
+#define CONFIG_X86_SERIAL
+#define CONFIG_SMSC_LPC47M
+
+#define CONFIG_PCI_MEM_BUS             0x40000000
+#define CONFIG_PCI_MEM_PHYS            CONFIG_PCI_MEM_BUS
+#define CONFIG_PCI_MEM_SIZE            0x80000000
+
+#define CONFIG_PCI_PREF_BUS            0xc0000000
+#define CONFIG_PCI_PREF_PHYS           CONFIG_PCI_PREF_BUS
+#define CONFIG_PCI_PREF_SIZE           0x20000000
+
+#define CONFIG_PCI_IO_BUS              0x2000
+#define CONFIG_PCI_IO_PHYS             CONFIG_PCI_IO_BUS
+#define CONFIG_PCI_IO_SIZE             0xe000
+
+#define CONFIG_SYS_EARLY_PCI_INIT
+#define CONFIG_PCI_PNP
+#define CONFIG_E1000
+
+#define CONFIG_STD_DEVICES_SETTINGS     "stdin=serial\0" \
+                                       "stdout=serial\0" \
+                                       "stderr=serial\0"
+
+#define CONFIG_SCSI_DEV_LIST            \
+       {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TCF_SATA}
+
+#define CONFIG_SPI_FLASH_SST
+
+#define CONFIG_MMC
+#define CONFIG_SDHCI
+#define CONFIG_GENERIC_MMC
+#define CONFIG_MMC_SDMA
+#define CONFIG_CMD_MMC
+
+/* Video is not supported */
+#undef CONFIG_VIDEO
+#undef CONFIG_CFB_CONSOLE
+
+#endif /* __CONFIG_H */
index 27171950a6c0e5673193e966a4981166d2475a7a..0bdcef7006dfb87c760b3bfd8969be1dbb0cc70d 100644 (file)
@@ -21,7 +21,6 @@
  * SoC Configuration
  */
 #define CONFIG_MACH_DAVINCI_DA830_EVM
-#define CONFIG_ARM926EJS               /* arm926ejs CPU core */
 #define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
 #define CONFIG_SOC_DA830               /* TI DA830 SoC */
 #define CONFIG_SYS_CLK_FREQ            clk_get(DAVINCI_ARM_CLKID)
index 5f857557375232948f9c4b26e23a08013483cb1c..e5a612cfc6772614c9794b61b6ca62e23a7b4aab 100644 (file)
@@ -25,7 +25,6 @@
  * SoC Configuration
  */
 #define CONFIG_MACH_DAVINCI_DA850_EVM
-#define CONFIG_ARM926EJS               /* arm926ejs CPU core */
 #define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
 #define CONFIG_SOC_DA850               /* TI DA850 SoC */
 #define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
 #define CONFIG_SPL_SPI_FLASH_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     0x8000
-#define CONFIG_SYS_SPI_U_BOOT_SIZE     0x30000
+#define CONFIG_SYS_SPI_U_BOOT_SIZE     0x40000
 #endif
 
 /*
 #undef CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        (64 << 10)
-#define CONFIG_ENV_OFFSET              (256 << 10)
+#define CONFIG_ENV_OFFSET              (512 << 10)
 #define CONFIG_ENV_SECT_SIZE           (64 << 10)
 #define CONFIG_SYS_NO_FLASH
 #endif
 /*
  * U-Boot general configuration
  */
+#define CONFIG_SYS_GENERIC_BOARD
 #define CONFIG_MISC_INIT_R
 #define CONFIG_BOARD_EARLY_INIT_F
 #define CONFIG_BOOTFILE                "uImage" /* Boot file name */
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CRC32_VERIFY
 #define CONFIG_MX_CYCLIC
+#define CONFIG_OF_LIBFDT
 
 /*
  * Linux Information
index ff7ec4a93bb79b0b9de7229b6f864dc314828c23..0b04ee67b36acbba63b0c3b64095da78acf8c1d7 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_SYS_MAX_I2C_BUS         TEGRA_I2C_NUM_CONTROLLERS
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
index c2e187e3de2826f4cdf0cf8aa67fa9d8a53282eb..16b901b01b758c303c2227cef5fcb58b538a2eec 100644 (file)
@@ -15,7 +15,6 @@
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
 
 /* SoC Configuration */
-#define CONFIG_ARM926EJS                               /* arm926ejs CPU */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            24000000        /* timer0 freq */
 #define CONFIG_SOC_DM355
index 5188fdf8785b91efcc5489126753c8dff119ebda..4eed72292dfab33feb7618da0eebad272480f343 100644 (file)
@@ -14,7 +14,6 @@
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
 
 /* SoC Configuration */
-#define CONFIG_ARM926EJS                               /* arm926ejs CPU */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            24000000        /* timer0 freq */
 #define CONFIG_SOC_DM355                               /* DM355 based board */
index c4fccfd39a4593a4a58b5ea484df0e77d3e8ecf5..c50c059f65140eb7afe6385ad83c8de75a99617a 100644 (file)
@@ -15,7 +15,6 @@
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
 
 /* SoC Configuration */
-#define CONFIG_ARM926EJS                               /* arm926ejs CPU */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            24000000        /* timer0 freq */
 #define CONFIG_SOC_DM365
index b1b18ad04127463a2886f5d9a2df9f4f263a0dce..2c5a837f6665c97240cb4a47a6dbbd404b112d83 100644 (file)
@@ -15,7 +15,6 @@
 #define CONFIG_SKIP_LOWLEVEL_INIT
 
 /* SoC Configuration */
-#define CONFIG_ARM926EJS                               /* arm926ejs CPU */
 
 /* Clock rates detection */
 #ifndef __ASSEMBLY__
index 9b3d0febc01eea814d0d815cd350da1abad4e275..2467f70522bed0a920f7351ed7dabe798949310d 100644 (file)
@@ -41,7 +41,6 @@
 /*===================*/
 /* SoC Configuration */
 /*===================*/
-#define CONFIG_ARM926EJS                       /* arm926ejs CPU core */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
 #define CONFIG_SOC_DM644X
index 96c8fe2a4d419c240640c1117fbfadaa5f388734..2505465242128abdbc609805e2cab91a8beeeb2b 100644 (file)
@@ -19,7 +19,6 @@
 /*===================*/
 /* SoC Configuration */
 /*===================*/
-#define CONFIG_ARM926EJS                       /* arm926ejs CPU core */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
 #define CONFIG_SOC_DM644X
index 6e07cce766e28ce3c63df02243c062e795bed399..e773835dd97fdaa51052b6f901d50e359d5bcaa4 100644 (file)
@@ -16,7 +16,6 @@
 #define CONFIG_SYS_USE_NAND
 #define CONFIG_SYS_USE_DSPLINK         /* don't power up the DSP. */
 /* SoC Configuration */
-#define CONFIG_ARM926EJS                       /* arm926ejs CPU core */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
 #define CONFIG_SOC_DM644X
index cd23aaca209b7589e210f22fb9f75f6d3e8964f1..dae37cdaf639bdb749203199b566d84267b7afbe 100644 (file)
@@ -43,7 +43,6 @@
 /*===================*/
 /* SoC Configuration */
 /*===================*/
-#define CONFIG_ARM926EJS                       /* arm926ejs CPU core */
 #define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
 #define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
 #define CONFIG_SOC_DM644X
index e0bf3dc61e6c0260e61a9cf01132f9e92decee05..8a7447dcd3d73d773b86921b691a76a18b540c32 100644 (file)
@@ -15,6 +15,9 @@
 #define CONFIG_DBAU1X00                1
 #define CONFIG_SOC_AU1X00      1  /* alchemy series cpu */
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifdef CONFIG_DBAU1000
 /* Also known as Merlot */
 #define CONFIG_SOC_AU1000      1
index ca624619a0c2a4e9e678e4d7c5d2be0d2658743d..77e2f587bde69c02014415a01eacad4ba01bec08 100644 (file)
@@ -21,6 +21,7 @@
 #define CONFIG_MACH_TYPE       MACH_TYPE_DEVKIT8000
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
+#define CONFIG_SYS_GENERIC_BOARD
 
 /*
  * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM
 #define CONFIG_SPL_FAT_SUPPORT
 #define CONFIG_SPL_LDSCRIPT            "$(CPUDIR)/omap-common/u-boot-spl.lds"
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
 
 #define CONFIG_SPL_TEXT_BASE           0x40200000 /*CONFIG_SYS_SRAM_START*/
index af0d60249ac28cf28741146add2b35ae20f21c04..a9cfc10d0c0a249b15a9c3a6f543ea914e1d58c6 100644 (file)
@@ -35,6 +35,7 @@
 /* new uImage format support */
 #define CONFIG_FIT
 #define CONFIG_FIT_VERBOSE     /* enable fit_format_{error,warning}() */
+#define CONFIG_FIT_DISABLE_SHA256
 
 #define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environment vars */
 
 /*
  * Commands additional to the ones defined in amcc-common.h
  */
-#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_DTT
+#undef CONFIG_CMD_DHCP
+#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
+#undef CONFIG_CMD_ELF
+#undef CONFIG_CMD_I2C
+#undef CONFIG_CMD_IRQ
+#undef CONFIG_CMD_NFS
 
 /*
  * SDRAM configuration (please see cpu/ppc/sdram.[ch])
index eaf8c855818823e67321785c8cd50e94476220e6..379e6c79b8e4f93207e05728436c27f9cf81d724 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2011
- * Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+ * Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
  *
  * Based on Kirkwood support:
  * (C) Copyright 2009
@@ -26,6 +26,7 @@
 #define CONFIG_FEROCEON_88FR131                /* CPU Core subversion */
 #define CONFIG_KW88F6281               /* SOC Name */
 #define CONFIG_SKIP_LOWLEVEL_INIT      /* disable board lowlevel_init */
+#define CONFIG_SYS_GENERIC_BOARD
 
 /*
  * Commands configuration
index 2eaabdefeea6b791fc8f4cee5e72b220a47773c7..dee2b11056e79d1f42d219f997e4c0416393c22a 100644 (file)
@@ -48,8 +48,7 @@
 /* Enhance our eMMC support / experience. */
 #define CONFIG_CMD_GPT
 #define CONFIG_EFI_PARTITION
-#define CONFIG_PARTITION_UUIDS
-#define CONFIG_CMD_PART
+#define CONFIG_HSMMC2_8BIT
 
 /* CPSW Ethernet */
 #define CONFIG_CMD_NET                 /* 'bootp' and 'tftp' */
diff --git a/include/configs/eXalion.h b/include/configs/eXalion.h
deleted file mode 100644 (file)
index 940be1f..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-/* #define CONFIG_MPC8240         1 */
-#define CONFIG_MPC8245         1
-#define CONFIG_EXALION         1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-
-#if defined (CONFIG_MPC8240)
-    /* #warning         ---------- eXalion with MPC8240 --------------- */
-#elif defined (CONFIG_MPC8245)
-    /* #warning         ++++++++++ eXalion with MPC8245 +++++++++++++++ */
-#elif defined (CONFIG_MPC8245) && defined (CONFIG_MPC8245)
-#error #### Both types of MPC824x defined (CONFIG_8240 and CONFIG_8245)
-#else
-#error #### Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-/* older kernels need clock in MHz newer in Hz */
-                                       /* #define CONFIG_CLOCKS_IN_MHZ 1 */ /* clocks passsed to Linux in MHz      */
-#undef CONFIG_CLOCKS_IN_MHZ
-
-#define CONFIG_BOOTDELAY       10
-
-
-                                                   /*#define CONFIG_DRAM_SPEED       66   */ /* MHz                         */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_FLASH
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_PCI
-
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP            1       /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size    */
-#define CONFIG_SYS_MAXARGS             8       /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address         */
-#define CONFIG_MISC_INIT_R     1
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MAX_RAM_SIZE        0x10000000      /* 1 GBytes - initdram() will      */
-                                            /* return real value.              */
-
-#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
-
-#undef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor       */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- */
-#define CONFIG_SYS_INIT_DATA_SIZE      128
-
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000
-#define CONFIG_SYS_INIT_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - CONFIG_SYS_INIT_DATA_SIZE)
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-
-#if defined (CONFIG_MPC8240)
-#define CONFIG_SYS_FLASH_BASE      0xFFE00000
-#define CONFIG_SYS_FLASH_SIZE      (2 * 1024 * 1024)   /* onboard 2MByte flash     */
-#elif defined (CONFIG_MPC8245)
-#define CONFIG_SYS_FLASH_BASE      0xFFC00000
-#define CONFIG_SYS_FLASH_SIZE      (4 * 1024 * 1024)   /* onboard 4MByte flash     */
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* Size of one Flash sector */
-#define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE    /* Use one Flash sector for environment */
-#define CONFIG_ENV_ADDR                0xFFFC0000
-#define CONFIG_ENV_OFFSET              0       /* starting right at the beginning  */
-
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-#define CONFIG_SYS_ALT_MEMTEST         1       /* use real memory test     */
-#define CONFIG_SYS_MEMTEST_START       0x00004000      /* memtest works on         */
-#define CONFIG_SYS_MEMTEST_END         0x02000000      /* 0 ... 32 MB in DRAM      */
-
-#define CONFIG_SYS_EUMB_ADDR           0xFC000000
-
-/* #define CONFIG_SYS_ISA_MEM             0xFD000000 */
-#define CONFIG_SYS_ISA_IO              0xFE000000
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* Max number of flash banks        */
-#define CONFIG_SYS_MAX_FLASH_SECT      64      /* Max number of sectors per flash  */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms) */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms) */
-
-#define FLASH_BASE0_PRELIM     CONFIG_SYS_FLASH_BASE
-#define FLASH_BASE1_PRELIM     0
-
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant              */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver                */
-#define CONFIG_SYS_MAX_FLASH_SECT      64      /* max number of sectors on one chip    */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_FLASH_INCREMENT     0       /* there is only one bank               */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware protection              */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- */
-#define CONFIG_PCI             1       /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE 1   /* indirect PCI bridge support */
-#undef CONFIG_PCI_PNP
-
-
-#define CONFIG_EEPRO100                1
-
-#define PCI_ENET0_MEMADDR      0x80000000      /* Intel 82559ER */
-#define PCI_ENET0_IOADDR       0x80000000
-#define PCI_ENET1_MEMADDR      0x81000000      /* Intel 82559ER */
-#define PCI_ENET1_IOADDR       0x81000000
-#define PCI_ENET2_MEMADDR      0x82000000      /* Broadcom BCM569xx */
-#define PCI_ENET2_IOADDR       0x82000000
-#define PCI_ENET3_MEMADDR      0x83000000      /* Broadcom BCM56xx */
-#define PCI_ENET3_IOADDR       0x83000000
-
-/*-----------------------------------------------------------------------
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550             1
-#define CONFIG_SYS_NS16550_SERIAL      1
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                38400
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#if (CONFIG_CONS_INDEX == 1)
-#define CONFIG_SYS_NS16550_CLK         1843200 /* COM1 only !  */
-#else
-#define CONFIG_SYS_NS16550_CLK ({ extern ulong get_bus_freq (ulong); get_bus_freq (0); })
-#endif
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_ISA_IO + 0x3F8)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_EUMB_ADDR + 0x4500)
-#define CONFIG_SYS_NS16550_COM3        (CONFIG_SYS_EUMB_ADDR + 0x4600)
-
-/*-----------------------------------------------------------------------
- * select i2c support configuration
- *
- * Supported configurations are {none, software, hardware} drivers.
- * If the software driver is chosen, there are some additional
- * configuration items that the driver uses to drive the port pins.
- */
-#define CONFIG_HARD_I2C                1       /* To enable I2C support        */
-#undef CONFIG_SYS_I2C_SOFT             /* I2C bit-banged               */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/*-----------------------------------------------------------------------
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_CLK_FREQ    33333333        /* external frequency to pll    */
-#define CONFIG_PLL_PCI_TO_MEM_MULTIPLIER  2    /* for MPC8240 only             */
-
-                                      /*#define CONFIG_133MHZ_DRAM      1 */ /* For 133 MHZ DRAM only !!!!!!!!!!!    */
-
-#if defined (CONFIG_MPC8245)
-/* Bit-field values for PMCR2.                                                 */
-#if defined (CONFIG_133MHZ_DRAM)
-#define CONFIG_SYS_DLL_EXTEND          0x80    /* use DLL extended range - 133MHz only */
-#define CONFIG_SYS_PCI_HOLD_DEL        0x20    /* delay and hold timing - 133MHz only  */
-#endif
-
-/* Bit-field values for MIOCR1.                                                        */
-#if !defined (CONFIG_133MHZ_DRAM)
-#define CONFIG_SYS_DLL_MAX_DELAY       0x04    /*  longer DLL delay line - 66MHz only  */
-#endif
-/* Bit-field values for MIOCR2.                                                        */
-#define CONFIG_SYS_SDRAM_DSCD          0x20    /* SDRAM data in sample clock delay     */
-                                       /*      - note bottom 3 bits MUST be 0  */
-#endif
-
-/* Bit-field values for MCCR1.                                                 */
-#define CONFIG_SYS_ROMNAL              7       /*rom/flash next access time            */
-#define CONFIG_SYS_ROMFAL             11       /*rom/flash access time                 */
-
-/* Bit-field values for MCCR2.                                                 */
-#define CONFIG_SYS_TSWAIT              0x5     /* Transaction Start Wait States timer  */
-#if defined (CONFIG_133MHZ_DRAM)
-#define CONFIG_SYS_REFINT              1300    /* no of clock cycles between CBR       */
-#else  /* refresh cycles */
-#define CONFIG_SYS_REFINT              750
-#endif
-
-/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4.               */
-#if defined (CONFIG_133MHZ_DRAM)
-#define CONFIG_SYS_BSTOPRE             1023
-#else
-#define CONFIG_SYS_BSTOPRE             250
-#endif
-
-/* Bit-field values for MCCR3.                                                 */
-/* the following are for SDRAM only                                            */
-
-#if defined (CONFIG_133MHZ_DRAM)
-#define CONFIG_SYS_REFREC              9       /* Refresh to activate interval         */
-#else
-#define CONFIG_SYS_REFREC              5       /* Refresh to activate interval         */
-#endif
-#if defined (CONFIG_MPC8240)
-#define CONFIG_SYS_RDLAT               2       /* data latency from read command       */
-#endif
-
-/* Bit-field values for MCCR4. */
-#if defined (CONFIG_133MHZ_DRAM)
-#define CONFIG_SYS_PRETOACT            3       /* Precharge to activate interval       */
-#define CONFIG_SYS_ACTTOPRE            7       /* Activate to Precharge interval       */
-#define CONFIG_SYS_ACTORW              5       /* Activate to R/W                      */
-#define CONFIG_SYS_SDMODE_CAS_LAT      3       /* SDMODE CAS latency                   */
-#else
-#if 0
-#define CONFIG_SYS_PRETOACT            2       /* Precharge to activate interval       */
-#define CONFIG_SYS_ACTTOPRE            3       /* Activate to Precharge interval       */
-#define CONFIG_SYS_ACTORW              3       /* Activate to R/W                      */
-#define CONFIG_SYS_SDMODE_CAS_LAT      2       /* SDMODE CAS latency                   */
-#endif
-#define CONFIG_SYS_PRETOACT            2       /* Precharge to activate interval       */
-#define CONFIG_SYS_ACTTOPRE            5       /* Activate to Precharge interval       */
-#define CONFIG_SYS_ACTORW              3       /* Activate to R/W                      */
-#define CONFIG_SYS_SDMODE_CAS_LAT      3       /* SDMODE CAS latency                   */
-#endif
-#define CONFIG_SYS_SDMODE_WRAP         0       /* SDMODE wrap type                     */
-#define CONFIG_SYS_SDMODE_BURSTLEN     2       /* SDMODE Burst length 2=4, 3=8         */
-#define CONFIG_SYS_REGDIMM             0
-#if defined (CONFIG_MPC8240)
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER   0
-#elif defined (CONFIG_MPC8245)
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER   1
-#define CONFIG_SYS_EXTROM                  0
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-
-
-/*-----------------------------------------------------------------------
- memory bank settings
- * only bits 20-29 are actually used from these vales to set the
- * start/end address the upper two bits will be 0, and the lower 20
- * bits will be set to 0x00000 for a start address, or 0xfffff for an
- * end address
- */
-#define CONFIG_SYS_BANK0_START         0x00000000
-#define CONFIG_SYS_BANK0_END           (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK0_ENABLE        1
-#define CONFIG_SYS_BANK1_START         0x3ff00000
-#define CONFIG_SYS_BANK1_END           0x3fffffff
-#define CONFIG_SYS_BANK1_ENABLE        0
-#define CONFIG_SYS_BANK2_START         0x3ff00000
-#define CONFIG_SYS_BANK2_END           0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE        0
-#define CONFIG_SYS_BANK3_START         0x3ff00000
-#define CONFIG_SYS_BANK3_END           0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE        0
-#define CONFIG_SYS_BANK4_START         0x00000000
-#define CONFIG_SYS_BANK4_END           0x00000000
-#define CONFIG_SYS_BANK4_ENABLE        0
-#define CONFIG_SYS_BANK5_START         0x00000000
-#define CONFIG_SYS_BANK5_END           0x00000000
-#define CONFIG_SYS_BANK5_ENABLE        0
-#define CONFIG_SYS_BANK6_START         0x00000000
-#define CONFIG_SYS_BANK6_END           0x00000000
-#define CONFIG_SYS_BANK6_ENABLE        0
-#define CONFIG_SYS_BANK7_START         0x00000000
-#define CONFIG_SYS_BANK7_END           0x00000000
-#define CONFIG_SYS_BANK7_ENABLE        0
-
-/*-----------------------------------------------------------------------
- * Memory bank enable bitmask, specifying which of the banks defined above
- are actually present. MSB is for bank #7, LSB is for bank #0.
- */
-#define CONFIG_SYS_BANK_ENABLE         0x01
-
-#if defined (CONFIG_MPC8240)
-#define CONFIG_SYS_ODCR                0xDF    /* configures line driver impedances,   */
-                                       /* see 8240 book for bit definitions    */
-#elif defined (CONFIG_MPC8245)
-#if defined (CONFIG_133MHZ_DRAM)
-#define CONFIG_SYS_ODCR                0xFE    /* configures line driver impedances - 133MHz   */
-#else
-#define CONFIG_SYS_ODCR                0xDE    /* configures line driver impedances - 66MHz    */
-#endif
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-
-#define CONFIG_SYS_PGMAX               0x32    /* how long the 8240 retains the        */
-                                       /* currently accessed page in memory    */
-                                       /* see 8240 book for details            */
-
-/*-----------------------------------------------------------------------
- * Block Address Translation (BAT) register settings.
- */
-/* SDRAM 0 - 256MB */
-#define CONFIG_SYS_IBAT0L      (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U      (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* stack in DCACHE @ 1GB (no backing mem) */
-#define CONFIG_SYS_IBAT1L      (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U      (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-
-/* PCI memory */
-#define CONFIG_SYS_IBAT2L      (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U      (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* Flash, config addrs, etc */
-#define CONFIG_SYS_IBAT3L      (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U      (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L      CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U      CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L      CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U      CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L      CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U      CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L      CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U      CONFIG_SYS_IBAT3U
-
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-/* values according to the manual */
-#define CONFIG_DRAM_50MHZ      1
-#define CONFIG_SDRAM_50MHZ
-
-#undef NR_8259_INTS
-#define NR_8259_INTS           1
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- */
-#define CONFIG_SYS_IDE_MAXBUS      1   /* max. 2 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE   (CONFIG_SYS_IDE_MAXBUS*1)   /* max. 2 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR   CONFIG_SYS_ISA_IO   /* base address */
-#define CONFIG_SYS_ATA_IDE0_OFFSET 0x01F0      /* ide0 offste */
-#define CONFIG_SYS_ATA_IDE1_OFFSET 0x0170      /* ide1 offset */
-#define CONFIG_SYS_ATA_DATA_OFFSET 0   /* data reg offset  */
-#define CONFIG_SYS_ATA_REG_OFFSET  0   /* reg offset */
-#define CONFIG_SYS_ATA_ALT_OFFSET  0x200       /* alternate register offset */
-
-#define CONFIG_ATAPI
-
-#undef CONFIG_IDE_8xx_DIRECT   /* no pcmcia interface required */
-#undef CONFIG_IDE_LED          /* no led for ide supported     */
-#undef CONFIG_IDE_RESET        /* reset for ide supported...    */
-#undef CONFIG_IDE_RESET_ROUTINE        /* with a special reset function */
-
-/*-----------------------------------------------------------------------
- * DISK Partition support
- */
-#define CONFIG_DOS_PARTITION
-
-/*-----------------------------------------------------------------------
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-#endif /* __CONFIG_H */
index 1d50a37d2fc8be63be197af9a8aebb8defc715f2..ae89368bfba18b9738976e74fd85401b4b328e43 100644 (file)
@@ -28,7 +28,6 @@
  * SoC Configuration
  */
 #define CONFIG_MACH_DAVINCI_DA850_EVM
-#define CONFIG_ARM926EJS               /* arm926ejs CPU core */
 #define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
 #define CONFIG_SOC_DA850               /* TI DA850 SoC */
 #define CONFIG_SYS_CLK_FREQ            clk_get(DAVINCI_ARM_CLKID)
index 47a8420f42d37cf8a9d9d4614a25b255254e1c82..a82e8bcadc034f3a1e5b54b0631101e051f32096 100644 (file)
@@ -85,8 +85,7 @@
 #endif
 
 /* High-level configuration options */
-#define CONFIG_ARM920T         1               /* This is an ARM920T core... */
-#define CONFIG_EP93XX          1               /* in a Cirrus Logic 93xx SoC */
+#define CONFIG_EP93XX          1               /* This is a Cirrus Logic 93xx SoC */
 
 #define CONFIG_SYS_CLK_FREQ    14745600        /* EP93xx has a 14.7456 clock */
 #undef CONFIG_USE_IRQ                          /* Don't need IRQ/FIQ */
index 1df4fc198624e41cbc128279019dfd231ebf1f2b..70a698ab328e6392f73cac47a00a4ed3981de3a0 100644 (file)
@@ -23,7 +23,6 @@
  */
 
 #define CONFIG_MARVELL         1
-#define CONFIG_ARM926EJS       1       /* Basic Architecture */
 #define CONFIG_FEROCEON                1       /* CPU Core subversion */
 #define CONFIG_88F5182         1       /* SOC Name */
 #define CONFIG_MACH_EDMINIV2   1       /* Machine type */
index 185edbe7fea538995c92c090f7bd4af07860fcc3..b4b3ae842f75b6aa71b8e15781db7ebf5a8afc2c 100644 (file)
 #define CONFIG_CMD_MMC
 #define CONFIG_GENERIC_MMC
 #define CONFIG_BOUNCE_BUFFER
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_DOS_PARTITION
-
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NET
+
 #define CONFIG_FEC_MXC
 #define CONFIG_MII
 #define IMX_FEC_BASE                   ENET_BASE_ADDR
 
 /* Command definition */
 #include <config_cmd_default.h>
+#undef CONFIG_CMD_FPGA
 
 #define CONFIG_CMD_BMODE
-#define CONFIG_CMD_BOOTZ
 #define CONFIG_CMD_SETEXPR
 #undef CONFIG_CMD_IMLS
 
-#define CONFIG_BOOTDELAY               1
-
 #define CONFIG_LOADADDR                        0x12000000
 #define CONFIG_SYS_TEXT_BASE           0x17800000
 
-#ifdef CONFIG_SUPPORT_EMMC_BOOT
-#define EMMC_ENV \
-       "emmcdev=2\0" \
-       "update_emmc_firmware=" \
-               "if test ${ip_dyn} = yes; then " \
-                       "setenv get_cmd dhcp; " \
-               "else " \
-                       "setenv get_cmd tftp; " \
-               "fi; " \
-               "if ${get_cmd} ${update_sd_firmware_filename}; then " \
-                       "if mmc dev ${emmcdev}; then "  \
-                               "setexpr fw_sz ${filesize} / 0x200; " \
-                               "setexpr fw_sz ${fw_sz} + 1; "  \
-                               "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
-                       "fi; "  \
-               "fi\0"
-#else
-#define EMMC_ENV ""
-#endif
-
-#ifdef CONFIG_CMD_SF
-#define SF_ENV \
-       "update_spi_firmware=" \
-               "if test ${ip_dyn} = yes; then " \
-                       "setenv get_cmd dhcp; " \
-               "else " \
-                       "setenv get_cmd tftp; " \
-               "fi; " \
-               "if ${get_cmd} ${update_spi_firmware_filename}; then " \
-                       "if sf probe; then "    \
-                               "sf erase 0 0xc0000; " \
-                               "sf write ${loadaddr} 0x400 ${filesize}; " \
-                       "fi; "  \
-               "fi\0"
-#else
-#define SF_ENV ""
-#endif
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "script=boot.scr\0" \
-       "image=zImage\0" \
-       "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
-       "fdt_addr=0x18000000\0" \
-       "boot_fdt=try\0" \
-       "ip_dyn=yes\0" \
-       "console=" CONFIG_CONSOLE_DEV "\0" \
-       "fdt_high=0xffffffff\0"   \
-       "initrd_high=0xffffffff\0" \
-       "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
-       "mmcpart=1\0" \
-       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
-       "update_sd_firmware=" \
-               "if test ${ip_dyn} = yes; then " \
-                       "setenv get_cmd dhcp; " \
-               "else " \
-                       "setenv get_cmd tftp; " \
-               "fi; " \
-               "if mmc dev ${mmcdev}; then "   \
-                       "if ${get_cmd} ${update_sd_firmware_filename}; then " \
-                               "setexpr fw_sz ${filesize} / 0x200; " \
-                               "setexpr fw_sz ${fw_sz} + 1; "  \
-                               "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
-                       "fi; "  \
-               "fi\0" \
-       EMMC_ENV          \
-       SF_ENV    \
-       "mmcargs=setenv bootargs console=${console},${baudrate} " \
-               "root=${mmcroot}\0" \
-       "loadbootscript=" \
-               "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
-       "bootscript=echo Running bootscript from mmc ...; " \
-               "source\0" \
-       "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
-       "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
-       "mmcboot=echo Booting from mmc ...; " \
-               "run mmcargs; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if run loadfdt; then " \
-                               "bootz ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootz; " \
-                               "else " \
-                                       "echo WARN: Cannot load the DT; " \
-                               "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootz; " \
-               "fi;\0" \
-       "netargs=setenv bootargs console=${console},${baudrate} " \
-               "root=/dev/nfs " \
-               "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
-       "netboot=echo Booting from net ...; " \
-               "run netargs; " \
-               "if test ${ip_dyn} = yes; then " \
-                       "setenv get_cmd dhcp; " \
-               "else " \
-                       "setenv get_cmd tftp; " \
-               "fi; " \
-               "${get_cmd} ${image}; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
-                               "bootz ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootz; " \
-                               "else " \
-                                       "echo WARN: Cannot load the DT; " \
-                               "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootz; " \
-               "fi;\0"
-
-#define CONFIG_BOOTCOMMAND \
-       "mmc dev ${mmcdev};" \
-       "if mmc rescan; then " \
-               "if run loadbootscript; then " \
-               "run bootscript; " \
-               "else " \
-                       "if run loadimage; then " \
-                               "run mmcboot; " \
-                       "else run netboot; " \
-                       "fi; " \
-               "fi; " \
-       "else run netboot; fi"
-
 #define CONFIG_ARP_TIMEOUT     200UL
 
 /* Miscellaneous configurable options */
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_SYS_HUSH_PARSER
 #define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
-#define CONFIG_AUTO_COMPLETE
 #define CONFIG_SYS_CBSIZE              256
 
 /* Print Buffer Size */
 
 #define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
 
-#define CONFIG_CMDLINE_EDITING
 #define CONFIG_STACKSIZE               (128 * 1024)
 
 /* Physical Memory Map */
 
 #if defined(CONFIG_ENV_IS_IN_MMC)
 /* RiOTboard */
-#define CONFIG_DEFAULT_FDT_FILE        "imx6dl-riotboard.dtb"
+#define CONFIG_FDTFILE "imx6dl-riotboard.dtb"
 #define CONFIG_SYS_FSL_USDHC_NUM       3
 #define CONFIG_SYS_MMC_ENV_DEV         2       /* SDHC4 */
 #define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
 #define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
 #elif defined(CONFIG_ENV_IS_IN_SPI_FLASH)
 /* MarSBoard */
-#define CONFIG_DEFAULT_FDT_FILE        "imx6q-marsboard.dtb"
+#define CONFIG_FDTFILE "imx6q-marsboard.dtb"
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 #define CONFIG_ENV_SECT_SIZE           (8 * 1024)
 #define CONFIG_ENV_SPI_MAX_HZ          CONFIG_SF_DEFAULT_SPEED
 #endif
 
-#define CONFIG_OF_LIBFDT
-
 #ifndef CONFIG_SYS_DCACHE_OFF
 #define CONFIG_CMD_CACHE
 #endif
 #define CONFIG_IMX_HDMI
 #define CONFIG_IMX_VIDEO_SKIP
 
+#include <config_distro_defaults.h>
+
+/* 256M RAM (minimum), 32M uncompressed kernel, 16M compressed kernel, 1M fdt,
+ * 1M script, 1M pxe and the ramdisk at the end */
+#define MEM_LAYOUT_ENV_SETTINGS \
+       "bootm_size=0x10000000\0" \
+       "kernel_addr_r=0x12000000\0" \
+       "fdt_addr_r=0x13000000\0" \
+       "scriptaddr=0x13100000\0" \
+       "pxefile_addr_r=0x13200000\0" \
+       "ramdisk_addr_r=0x13300000\0"
+
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(MMC, mmc, 1) \
+       func(MMC, mmc, 2) \
+       func(USB, usb, 0) \
+       func(PXE, pxe, na) \
+       func(DHCP, dhcp, na)
+
+#include <config_distro_bootcmd.h>
+
+#define CONSOLE_STDIN_SETTINGS \
+       "stdin=serial\0"
+
+#define CONSOLE_STDOUT_SETTINGS \
+       "stdout=serial\0" \
+       "stderr=serial\0"
+
+#define CONSOLE_ENV_SETTINGS \
+       CONSOLE_STDIN_SETTINGS \
+       CONSOLE_STDOUT_SETTINGS
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       CONSOLE_ENV_SETTINGS \
+       MEM_LAYOUT_ENV_SETTINGS \
+       "fdtfile=" CONFIG_FDTFILE "\0" \
+       BOOTENV
+
 #endif                         /* __RIOTBOARD_CONFIG_H */
index 30ca95f02d5c9a4cf2bf29a840d82899eb54a8c1..cdea4a854656aeabf1c70e6cf67306d66b86942d 100644 (file)
@@ -25,7 +25,6 @@
 /*
  * SoC Configuration
  */
-#define CONFIG_ARM926EJS               /* arm926ejs CPU core */
 #define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
 #define CONFIG_SOC_DA850               /* TI DA850 SoC */
 #define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
diff --git a/include/configs/ep8260.h b/include/configs/ep8260.h
deleted file mode 100644 (file)
index 9cd3054..0000000
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
- * (C) Copyright 2002
- * Frank Panno <fpanno@delphintech.com>, Delphin Technology AG
- *
- * This file is based on similar values for other boards found in other
- * U-Boot config files, and some that I found in the EP8260 manual.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- *
- * "EP8260 H, V.1.1"
- *     - 64M 60x Bus SDRAM
- *     - 32M Local Bus SDRAM
- *     - 16M Flash (4 x AM29DL323DB90WDI)
- *     - 128k NVRAM with RTC
- *
- * "EP8260 H2, V.1.3" (CONFIG_SYS_EP8260_H2)
- *     - 300MHz/133MHz/66MHz
- *     - 64M 60x Bus SDRAM
- *     - 32M Local Bus SDRAM
- *     - 32M Flash
- *     - 128k NVRAM with RTC
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* Define this to enable support the EP8260 H2 version */
-#define CONFIG_SYS_EP8260_H2   1
-/* #undef CONFIG_SYS_EP8260_H2  */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-/* What is the oscillator's (UX2) frequency in Hz? */
-#define CONFIG_8260_CLKIN  (66 * 1000 * 1000)
-
-/*-----------------------------------------------------------------------
- * MODCK_H & MODCLK[1-3] - Ref: Section 9.2 in MPC8206 User Manual
- *-----------------------------------------------------------------------
- * What should MODCK_H be? It is dependent on the oscillator
- * frequency, MODCK[1-3], and desired CPM and core frequencies.
- * Here are some example values (all frequencies are in MHz):
- *
- * MODCK_H   MODCK[1-3]         Osc    CPM    Core
- * -------   ----------         ---    ---    ----
- * 0x2      0x2         33     133    133
- * 0x2      0x3         33     133    166
- * 0x2      0x4         33     133    200
- * 0x2      0x5         33     133    233
- * 0x2      0x6         33     133    266
- *
- * 0x5      0x5         66     133    133
- * 0x5      0x6         66     133    166
- * 0x5      0x7         66     133    200 *
- * 0x6      0x0         66     133    233
- * 0x6      0x1         66     133    266
- * 0x6      0x2         66     133    300
- */
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_SYS_SBC_MODCK_H  (HRCW_MODCK_H0110)
-#else
-#define CONFIG_SYS_SBC_MODCK_H  (HRCW_MODCK_H0110)
-#endif
-
-/* Define this if you want to boot from 0x00000100. If you don't define
- * this, you will need to program the bootloader to 0xfff00000, and
- * get the hardware reset config words at 0xfe000000. The simplest
- * way to do that is to program the bootloader at both addresses.
- * It is suggested that you just let U-Boot live at 0x00000000.
- */
-/* #define CONFIG_SYS_SBC_BOOT_LOW 1 */        /* only for HRCW */
-/* #undef CONFIG_SYS_SBC_BOOT_LOW */
-
-/* The reset command will not work as expected if the reset address does
- * not point to the correct address.
- */
-
-#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
-
-/* What should the base address of the main FLASH be and how big is
- * it (in MBytes)? This must contain CONFIG_SYS_TEXT_BASE from board/ep8260/config.mk
- * The main FLASH is whichever is connected to *CS0. U-Boot expects
- * this to be the SIMM.
- */
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_SYS_FLASH0_BASE 0xFE000000
-#define CONFIG_SYS_FLASH0_SIZE 32
-#else
-#define CONFIG_SYS_FLASH0_BASE 0xFF000000
-#define CONFIG_SYS_FLASH0_SIZE 16
-#endif
-
-/* What should the base address of the secondary FLASH be and how big
- * is it (in Mbytes)? The secondary FLASH is whichever is connected
- * to *CS6. U-Boot expects this to be the on board FLASH. If you don't
- * want it enabled, don't define these constants.
- */
-#define CONFIG_SYS_FLASH1_BASE 0
-#define CONFIG_SYS_FLASH1_SIZE 0
-#undef CONFIG_SYS_FLASH1_BASE
-#undef CONFIG_SYS_FLASH1_SIZE
-
-/* What should be the base address of SDRAM DIMM (60x bus) and how big is
- * it (in Mbytes)?
-*/
-#define CONFIG_SYS_SDRAM0_BASE 0x00000000
-#define CONFIG_SYS_SDRAM0_SIZE 64
-
-/* define CONFIG_SYS_LSDRAM if you want to enable the 32M SDRAM on the
- * local bus (8260 local bus is NOT cacheable!)
-*/
-/* #define CONFIG_SYS_LSDRAM */
-#undef CONFIG_SYS_LSDRAM
-
-#ifdef CONFIG_SYS_LSDRAM
-/* What should be the base address of SDRAM DIMM (local bus) and how big is
- * it (in Mbytes)?
-*/
-  #define CONFIG_SYS_SDRAM1_BASE 0x04000000
-  #define CONFIG_SYS_SDRAM1_SIZE 32
-#else
-  #define CONFIG_SYS_SDRAM1_BASE 0
-  #define CONFIG_SYS_SDRAM1_SIZE 0
-  #undef CONFIG_SYS_SDRAM1_BASE
-  #undef CONFIG_SYS_SDRAM1_SIZE
-#endif /* CONFIG_SYS_LSDRAM */
-
-/* What should be the base address of NVRAM and how big is
- * it (in Bytes)
- */
-#define CONFIG_SYS_NVRAM_BASE_ADDR  0xFA080000
-#define CONFIG_SYS_NVRAM_SIZE       (128*1024)-16
-
-/* The RTC is a Dallas DS1556
- */
-#define CONFIG_RTC_DS1556
-
-/* What should be the base address of the LEDs and switch S0?
- * If you don't want them enabled, don't define this.
- */
-#define CONFIG_SYS_LED_BASE 0x00000000
-#undef CONFIG_SYS_LED_BASE
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere.
- */
-#define CONFIG_CONS_ON_SMC          /* define if console on SMC */
-#undef  CONFIG_CONS_ON_SCC          /* define if console on SCC */
-#undef  CONFIG_CONS_NONE            /* define if console on neither */
-#define CONFIG_CONS_INDEX    1      /* which SMC/SCC channel for console */
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-#undef  CONFIG_ETHER_ON_SCC           /* define if ethernet on SCC    */
-#define CONFIG_ETHER_ON_FCC           /* define if ethernet on FCC    */
-#undef  CONFIG_ETHER_NONE             /* define if ethernet on neither */
-#define CONFIG_ETHER_INDEX      3     /* which SCC/FCC channel for ethernet */
-
-#if ( CONFIG_ETHER_INDEX == 3 )
-
-/*
- * - Rx-CLK is CLK15
- * - Tx-CLK is CLK16
- * - RAM for BD/Buffers is on the local Bus (see 28-13)
- * - Enable Half Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK3       (CMXFCR_FC3|CMXFCR_RF3CS_MSK|CMXFCR_TF3CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE3      (CMXFCR_RF3CS_CLK15|CMXFCR_TF3CS_CLK16)
-
-/*
- * - RAM for BD/Buffers is on the local Bus (see 28-13)
- */
-#ifdef CONFIG_SYS_LSDRAM
-  #define CONFIG_SYS_CPMFCR_RAMTYPE    3
-#else /* CONFIG_SYS_LSDRAM */
-  #define CONFIG_SYS_CPMFCR_RAMTYPE    0
-#endif /* CONFIG_SYS_LSDRAM */
-
-/* - Enable Half Duplex in FSMR */
-/* # define CONFIG_SYS_FCC_PSMR                (FCC_PSMR_FDE|FCC_PSMR_LPB) */
-# define CONFIG_SYS_FCC_PSMR           0
-
-#else /* CONFIG_ETHER_INDEX */
-# error "on EP8260 ethernet must be FCC3"
-#endif /* CONFIG_ETHER_INDEX */
-
-/*
- * select i2c support configuration
- *
- * Supported configurations are {none, software, hardware} drivers.
- * If the software driver is chosen, there are some additional
- * configuration items that the driver uses to drive the port pins.
- */
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F    /* This is for HARD, must go */
-
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#ifdef CONFIG_SYS_I2C_SOFT
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-#define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
-#define I2C_READ       ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00010000; \
-                       else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00020000; \
-                       else    iop->pdat &= ~0x00020000
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SYS_I2C_SOFT */
-
-/* #define CONFIG_RTC_DS174x */
-
-/* Define this to reserve an entire FLASH sector (256 KB) for
- * environment variables. Otherwise, the environment will be
- * put in the same sector as U-Boot, and changing variables
- * will erase U-Boot temporarily
- */
-#define CONFIG_ENV_IN_OWN_SECT
-
-/* Define to allow the user to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-/* What should the console's baud rate be? */
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_BAUDRATE         9600
-#else
-#define CONFIG_BAUDRATE         115200
-#endif
-
-/* Ethernet MAC address */
-#define CONFIG_ETHADDR          00:10:EC:00:30:8C
-
-#define CONFIG_IPADDR          192.168.254.130
-#define CONFIG_SERVERIP         192.168.254.49
-
-/* Set to a positive value to delay for running BOOTCOMMAND */
-#define CONFIG_BOOTDELAY        -1
-
-/* undef this to save memory */
-#define CONFIG_SYS_LONGHELP
-
-/* Monitor Command Prompt       */
-
-/* Define this variable to enable the "hush" shell (from
-   Busybox) as command line interpreter, thus enabling
-   powerful command line syntax like
-   if...then...else...fi conditionals or `&&' and '||'
-   constructs ("shell scripts").
-   If undefined, you get the old, much simpler behaviour
-   with a somewhat smapper memory footprint.
-*/
-#define CONFIG_SYS_HUSH_PARSER
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_CDP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IMMAP
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_PORTIO
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_SNTP
-
-#undef CONFIG_CMD_XIMG
-
-/* Where do the internal registers live? */
-#define CONFIG_SYS_IMMR               0xF0000000
-#define CONFIG_SYS_DEFAULT_IMMR       0x00010000
-
-/* Where do the on board registers (CS4) live? */
-#define CONFIG_SYS_REGS_BASE          0xFA000000
-
-/*****************************************************************************
- *
- * You should not have to modify any of the following settings
- *
- *****************************************************************************/
-
-#define CONFIG_EP8260           11      /* on an Embedded Planet EP8260 Board, Rev. 11 */
-
-#define CONFIG_BOARD_EARLY_INIT_F 1        /* Call board_early_init_f  */
-
-/*
- * Miscellaneous configurable options
- */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CBSIZE              1024       /* Console I/O Buffer Size      */
-#else
-#  define CONFIG_SYS_CBSIZE              256        /* Console I/O Buffer Size      */
-#endif
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE        (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT)+16)
-
-#define CONFIG_SYS_MAXARGS       8            /* max number of command args   */
-
-#define CONFIG_SYS_BARGSIZE      CONFIG_SYS_CBSIZE   /* Boot Argument Buffer Size    */
-
-#ifdef CONFIG_SYS_LSDRAM
-  #define CONFIG_SYS_MEMTEST_START 0x04000000   /* memtest works on  */
-  #define CONFIG_SYS_MEMTEST_END   0x06000000   /* 64-96 MB in SDRAM */
-#else
-  #define CONFIG_SYS_MEMTEST_START 0x00000000   /* memtest works on  */
-  #define CONFIG_SYS_MEMTEST_END   0x02000000   /* 0-32 MB in SDRAM */
-#endif /* CONFIG_SYS_LSDRAM */
-
-#define        CONFIG_CLOCKS_IN_MHZ    1      /* clocks passsed to Linux in MHz */
-
-#define CONFIG_SYS_LOAD_ADDR     0x00100000   /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_FLASH_BASE    CONFIG_SYS_FLASH0_BASE
-#define CONFIG_SYS_SDRAM_BASE    CONFIG_SYS_SDRAM0_BASE
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- */
-
-#if defined(CONFIG_SYS_SBC_BOOT_LOW)
-#  define  CONFIG_SYS_SBC_HRCW_BOOT_FLAGS  (HRCW_CIP | HRCW_BMS)
-#else
-#  define  CONFIG_SYS_SBC_HRCW_BOOT_FLAGS  (0x00000000)
-#endif /* defined(CONFIG_SYS_SBC_BOOT_LOW) */
-
-#ifdef CONFIG_SYS_EP8260_H2
-/* get the HRCW ISB field from CONFIG_SYS_DEFAULT_IMMR */
-#define CONFIG_SYS_SBC_HRCW_IMMR ( ((CONFIG_SYS_DEFAULT_IMMR & 0x10000000) >> 10) |\
-                           ((CONFIG_SYS_DEFAULT_IMMR & 0x01000000) >> 7)  |\
-                           ((CONFIG_SYS_DEFAULT_IMMR & 0x00100000) >> 4) )
-
-#define CONFIG_SYS_HRCW_MASTER (HRCW_EBM                |\
-                        HRCW_L2CPC01            |\
-                        CONFIG_SYS_SBC_HRCW_IMMR       |\
-                        HRCW_APPC10             |\
-                        HRCW_CS10PC01           |\
-                        CONFIG_SYS_SBC_MODCK_H  |\
-                        CONFIG_SYS_SBC_HRCW_BOOT_FLAGS)
-#else
-#define CONFIG_SYS_HRCW_MASTER 0x10400245
-#endif
-
-/* no slaves */
-#define CONFIG_SYS_HRCW_SLAVE1 0
-#define CONFIG_SYS_HRCW_SLAVE2 0
-#define CONFIG_SYS_HRCW_SLAVE3 0
-#define CONFIG_SYS_HRCW_SLAVE4 0
-#define CONFIG_SYS_HRCW_SLAVE5 0
-#define CONFIG_SYS_HRCW_SLAVE6 0
-#define CONFIG_SYS_HRCW_SLAVE7 0
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE        0x4000  /* Size of used area in DPRAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- * Note also that the logic that sets CONFIG_SYS_RAMBOOT is platform dependent.
- */
-#define CONFIG_SYS_MONITOR_BASE          CONFIG_SYS_TEXT_BASE
-
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#  define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN      (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN       (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ        (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS   1       /* max number of memory banks         */
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_SYS_MAX_FLASH_SECT    128      /* max number of sectors on one chip  */
-#else
-#define CONFIG_SYS_MAX_FLASH_SECT    71      /* max number of sectors on one chip  */
-#endif
-
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_SYS_FLASH_ERASE_TOUT  240000  /* Timeout for Flash Erase (in ms)    */
-#define CONFIG_SYS_FLASH_WRITE_TOUT  500     /* Timeout for Flash Write (in ms)    */
-#else
-#define CONFIG_SYS_FLASH_ERASE_TOUT  8000    /* Timeout for Flash Erase (in ms)    */
-#define CONFIG_SYS_FLASH_WRITE_TOUT  1       /* Timeout for Flash Write (in ms)    */
-#endif
-
-#ifndef CONFIG_SYS_RAMBOOT
-#  define CONFIG_ENV_IS_IN_FLASH  1
-
-#  ifdef CONFIG_ENV_IN_OWN_SECT
-#    define CONFIG_ENV_ADDR       (CONFIG_SYS_MONITOR_BASE + 0x40000)
-#    define CONFIG_ENV_SECT_SIZE  0x40000
-#  else
-#    define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN - CONFIG_ENV_SECT_SIZE)
-#    define CONFIG_ENV_SIZE       0x1000  /* Total Size of Environment Sector */
-#    define CONFIG_ENV_SECT_SIZE  0x10000 /* see README - env sect real size */
-#  endif /* CONFIG_ENV_IN_OWN_SECT */
-#else
-#  define CONFIG_ENV_IS_IN_NVRAM  1
-#  define CONFIG_ENV_ADDR         (CONFIG_SYS_MONITOR_BASE - 0x1000)
-#  define CONFIG_ENV_SIZE         0x200
-#endif /* CONFIG_SYS_RAMBOOT */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU */
-
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT     5     /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                    2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE  |\
-                        HID0_DCE  |\
-                        HID0_ICFI |\
-                        HID0_DCI  |\
-                        HID0_IFEM |\
-                        HID0_ABE)
-#ifdef CONFIG_SYS_LSDRAM
-/* 8260 local bus is NOT cacheable */
-#define CONFIG_SYS_HID0_FINAL  (/*HID0_ICE  |*/\
-                        HID0_IFEM |\
-                        HID0_ABE  |\
-                        HID0_EMCP)
-#else /* !CONFIG_SYS_LSDRAM */
-#define CONFIG_SYS_HID0_FINAL  (HID0_ICE  |\
-                        HID0_IFEM |\
-                        HID0_ABE  |\
-                        HID0_EMCP)
-#endif /* CONFIG_SYS_LSDRAM */
-
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMR         0
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                       4-25
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_BCR         (BCR_EBM   |\
-                        BCR_PLDP  |\
-                        BCR_EAV   |\
-                        BCR_NPQM0)
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                             4-31
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_L2CPC01 |\
-                        SIUMCR_APPC10  |\
-                        SIUMCR_CS10PC01)
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                            11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#ifdef CONFIG_SYS_EP8260_H2
-/* TBD: Find out why setting the BMT to 0xff causes the FCC to
- * generate TX buffer underrun errors for large packets under
- * Linux
- */
-#define CONFIG_SYS_SYPCR_BMT   0x00000600
-#else
-#define CONFIG_SYS_SYPCR_BMT   SYPCR_BMT
-#endif
-
-#ifdef CONFIG_SYS_LSDRAM
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC |\
-                        CONFIG_SYS_SYPCR_BMT  |\
-                        SYPCR_PBME |\
-                        SYPCR_LBME |\
-                        SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC |\
-                        CONFIG_SYS_SYPCR_BMT  |\
-                        SYPCR_PBME |\
-                        SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                     4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC |\
-                        TMCNTSC_ALR |\
-                        TMCNTSC_TCF |\
-                        TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                 4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_SYS_PISCR       (PISCR_PS  |\
-                        PISCR_PTF |\
-                        PISCR_PTE)
-#else
-#define CONFIG_SYS_PISCR       0
-#endif
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                   9-8
- *-----------------------------------------------------------------------
- */
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_SYS_SCCR        (SCCR_DFBRG00)
-#else
-#define CONFIG_SYS_SCCR        (SCCR_DFBRG01)
-#endif
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                         13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*-----------------------------------------------------------------------
- * MPTPR - Memory Refresh Timer Prescale Register               10-32
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_MPTPR       (0x0A00 & MPTPR_PTP_MSK)
-
-/*
- * Init Memory Controller:
- *
- * Bank Bus     Machine PortSz  Device
- * ---- ---     ------- ------  ------
- *  0   60x     GPCM    64 bit  FLASH (BGA - 16MB AMD AM29DL323DB90WDI)
- *  1   60x     SDRAM   64 bit  SDRAM (BGA - 64MB Micron 48LC8M16A2TG)
- *  2   Local   SDRAM   32 bit  SDRAM (BGA - 32MB Micron 48LC8M16A2TG)
- *  3   unused
- *  4   60x     GPCM     8 bit  Board Regs, NVRTC
- *  5   unused
- *  6   unused
- *  7   unused
- *  8   PCMCIA
- *  9   unused
- * 10   unused
- * 11   unused
-*/
-
-/*-----------------------------------------------------------------------
- * BRx - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * ORx - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-
-/* Bank 0 - FLASH
- *
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH0_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_DECC_NONE                  |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM  (MEG_TO_AM(CONFIG_SYS_FLASH0_SIZE)     |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_8_CLK                 |\
-                        ORxG_EHTR)
-
-/* Bank 1 - SDRAM
- * PSDRAM
- */
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_SDRAM0_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM0_SIZE)     |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI1_A6             |\
-                        ORxS_NUMR_12)
-
-#ifdef CONFIG_SYS_EP8260_H2
-#define CONFIG_SYS_PSDMR       0xC34E246E
-#else
-#define CONFIG_SYS_PSDMR       0xC34E2462
-#endif
-
-#define CONFIG_SYS_PSRT        0x64
-
-#ifdef CONFIG_SYS_LSDRAM
-/* Bank 2 - SDRAM
- * LSDRAM
- */
-
-  #define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM1_BASE & BRx_BA_MSK) |\
-                          BRx_PS_32                      |\
-                          BRx_MS_SDRAM_L                 |\
-                          BRx_V)
-
-  #define CONFIG_SYS_OR2_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM1_SIZE)     |\
-                          ORxS_BPD_4                     |\
-                          ORxS_ROWST_PBI0_A9             |\
-                          ORxS_NUMR_12)
-
-  #define CONFIG_SYS_LSDMR      0x416A2562
-  #define CONFIG_SYS_LSRT      0x64
-#else
-  #define CONFIG_SYS_LSRT      0x0
-#endif /* CONFIG_SYS_LSDRAM */
-
-/* Bank 4 - On board registers
- * NVRTC and BCSR
- */
-#define CONFIG_SYS_BR4_PRELIM   ((CONFIG_SYS_REGS_BASE & BRx_BA_MSK)  |\
-                          BRx_PS_8                     |\
-                          BRx_MS_GPCM_P                |\
-                          BRx_V)
-/*
-#define CONFIG_SYS_OR4_PRELIM    (ORxG_AM_MSK                 |\
-                          ORxG_CSNT                   |\
-                          ORxG_ACS_DIV1               |\
-                          ORxG_SCY_10_CLK              |\
-                          ORxG_TRLX)
-*/
-#define CONFIG_SYS_OR4_PRELIM 0xfff00854
-
-#ifdef _NOT_USED_SINCE_NOT_WORKING_
-/* Bank 8 - On board registers
- * PCMCIA (currently not working!)
- */
-#define CONFIG_SYS_BR8_PRELIM   ((CONFIG_SYS_REGS_BASE & BRx_BA_MSK)  |\
-                          BRx_PS_16                     |\
-                          BRx_MS_GPCM_P                |\
-                          BRx_V)
-
-#define CONFIG_SYS_OR8_PRELIM    (ORxG_AM_MSK                 |\
-                          ORxG_CSNT                   |\
-                          ORxG_ACS_DIV1               |\
-                          ORxG_SETA                   |\
-                          ORxG_SCY_10_CLK)
-#endif
-
-/*
- * JFFS2 partitions
- *
- */
-/* No command line, one static partition, whole device */
-#undef CONFIG_CMD_MTDPARTS
-#define CONFIG_JFFS2_DEV               "nor0"
-#define CONFIG_JFFS2_PART_SIZE         0xFFFFFFFF
-#define CONFIG_JFFS2_PART_OFFSET       0x00000000
-
-/* mtdparts command line support */
-/* Note: fake mtd_id used, no linux mtd map file */
-/*
-#define CONFIG_CMD_MTDPARTS
-#define MTDIDS_DEFAULT         ""
-#define MTDPARTS_DEFAULT       ""
-*/
-
-#endif  /* __CONFIG_H */
diff --git a/include/configs/ep82xxm.h b/include/configs/ep82xxm.h
deleted file mode 100644 (file)
index cf31f0f..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Copyright (C) 2006 Embedded Planet, LLC.
- *
- * U-Boot configuration for Embedded Planet EP82xxM boards.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define CPU_ID_STR             "MPC8270"
-
-#define CONFIG_EP82XXM /* Embedded Planet EP82xxM H 1.0 board */
-                       /* 256MB SDRAM / 64MB FLASH */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f */
-
-/* Allow serial number (serial#) and MAC address (ethaddr) to be overwritten */
-#define CONFIG_ENV_OVERWRITE
-
-/*
- * Select serial console configuration
- *
- * If either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- */
-#define        CONFIG_CONS_ON_SMC              /* Console is on SMC         */
-#undef  CONFIG_CONS_ON_SCC             /* It's not on SCC           */
-#undef CONFIG_CONS_NONE                /* It's not on external UART */
-#define CONFIG_CONS_INDEX      1       /* SMC1 is used for console  */
-
-#define CONFIG_SYS_BCSR                0xFA000000
-
-/*
- * Select ethernet configuration
- *
- * If either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected,
- * then CONFIG_ETHER_INDEX must be set to the channel number (1-4 for
- * SCC, 1-3 for FCC)
- *
- * If CONFIG_ETHER_NONE is defined, then either the ethernet routines
- * must be defined elsewhere (as for the console), or CONFIG_CMD_NET
- * must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* Ethernet is not on SCC */
-#define CONFIG_ETHER_ON_FCC            /* Ethernet is on FCC     */
-#undef CONFIG_ETHER_NONE               /* No external Ethernet   */
-
-
-#define CONFIG_ETHER_ON_FCC2
-#define CONFIG_ETHER_ON_FCC3
-
-#define CONFIG_SYS_CMXFCR_MASK3        (CMXFCR_FC3 | CMXFCR_RF3CS_MSK | CMXFCR_TF3CS_MSK)
-#define CONFIG_SYS_CMXFCR_VALUE3       (CMXFCR_RF3CS_CLK15 | CMXFCR_TF3CS_CLK16)
-#define CONFIG_SYS_CMXFCR_MASK2        (CMXFCR_FC2 | CMXFCR_RF2CS_MSK | CMXFCR_TF2CS_MSK)
-#define CONFIG_SYS_CMXFCR_VALUE2       (CMXFCR_RF2CS_CLK13 | CMXFCR_TF2CS_CLK14)
-
-#define CONFIG_SYS_CPMFCR_RAMTYPE      0
-#define CONFIG_SYS_FCC_PSMR            (FCC_PSMR_FDE | FCC_PSMR_LPB)
-
-#define CONFIG_MII                     /* MII PHY management        */
-#define CONFIG_BITBANGMII              /* Bit-banged MDIO interface */
-
-/*
- * GPIO pins used for bit-banged MII communications
- */
-#define MDIO_PORT              0       /* Not used - implemented in BCSR */
-
-#define MDIO_ACTIVE            (*(vu_char *)(CONFIG_SYS_BCSR + 8) &= 0xFB)
-#define MDIO_TRISTATE          (*(vu_char *)(CONFIG_SYS_BCSR + 8) |= 0x04)
-#define MDIO_READ              (*(vu_char *)(CONFIG_SYS_BCSR + 8) & 1)
-
-#define MDIO(bit)              if(bit) *(vu_char *)(CONFIG_SYS_BCSR + 8) |= 0x01; \
-                               else    *(vu_char *)(CONFIG_SYS_BCSR + 8) &= 0xFE
-
-#define MDC(bit)               if(bit) *(vu_char *)(CONFIG_SYS_BCSR + 8) |= 0x02; \
-                               else    *(vu_char *)(CONFIG_SYS_BCSR + 8) &= 0xFD
-
-#define MIIDELAY               udelay(1)
-
-
-#ifndef CONFIG_8260_CLKIN
-#define CONFIG_8260_CLKIN      66000000 /* in Hz */
-#endif
-
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_SYS_VXWORKS_MAC_PTR 0x4300 /* Pass Ethernet MAC to VxWorks */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ECHO
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IMMAP
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DTT
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_DIAG
-
-
-#define CONFIG_ETHADDR         00:10:EC:00:88:65
-#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR                00:10:EC:80:88:65
-#define CONFIG_IPADDR          10.0.0.245
-#define CONFIG_HOSTNAME                EP82xxM
-#define CONFIG_SERVERIP                10.0.0.26
-#define CONFIG_GATEWAYIP       10.0.0.1
-#define CONFIG_NETMASK         255.255.255.0
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
-#define CONFIG_ENV_IN_OWN_SECT 1
-#define CONFIG_AUTO_COMPLETE   1
-#define        CONFIG_EXTRA_ENV_SETTINGS       "ethprime=FCC3"
-
-#if defined(CONFIG_CMD_KGDB)
-#undef CONFIG_KGDB_ON_SMC              /* define if kgdb on SMC */
-#define CONFIG_KGDB_ON_SCC             /* define if kgdb on SCC */
-#undef CONFIG_KGDB_NONE                /* define if kgdb on something else */
-#define CONFIG_KGDB_INDEX      1       /* which serial channel for kgdb */
-#define CONFIG_KGDB_BAUDRATE   115200  /* speed to run kgdb serial port at */
-#endif
-
-#define CONFIG_BZIP2   /* include support for bzip2 compressed images */
-#undef CONFIG_WATCHDOG                 /* disable platform specific watchdog */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory     */
-#define CONFIG_SYS_PROMPT              "ep82xxm=> "    /* Monitor Command Prompt   */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size  */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size  */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size  */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size  */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x00f00000      /* 1 ... 15 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-/*-----------------------------------------------------------------------
- * Environment
- *----------------------------------------------------------------------*/
-/*
- * Define here the location of the environment variables (FLASH or EEPROM).
- * Note: DENX encourages to use redundant environment in FLASH.
- */
-#if 1
-#define CONFIG_ENV_IS_IN_FLASH     1   /* use FLASH for environment vars       */
-#else
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars      */
-#endif
-
-/*-----------------------------------------------------------------------
- * FLASH related
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_FLASH_BASE          0xFC000000
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of flash banks       */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max num of sects on one chip */
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector in flinfo */
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SECT_SIZE   0x20000
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#endif /* CONFIG_ENV_IS_IN_FLASH */
-
-/*-----------------------------------------------------------------------
- * I2C
- *----------------------------------------------------------------------*/
-/* EEPROM Configuration */
-#define CONFIG_SYS_EEPROM_SIZE 0x1000
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x54
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10
-
-#ifdef CONFIG_ENV_IS_IN_EEPROM
-#define CONFIG_ENV_SIZE                0x200       /* Size of Environment vars */
-#define CONFIG_ENV_OFFSET              0x0
-#endif /* CONFIG_ENV_IS_IN_EEPROM */
-
-/* RTC Configuration */
-#define CONFIG_RTC_M41T11      1       /* uses a M41T81 */
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-#define CONFIG_M41T11_BASE_YEAR        1900
-
-/* I2C SYSMON (LM75) */
-#define CONFIG_DTT_LM75                1
-#define CONFIG_DTT_SENSORS     {0}
-#define CONFIG_SYS_DTT_MAX_TEMP        70
-#define CONFIG_SYS_DTT_LOW_TEMP        -30
-#define        CONFIG_SYS_DTT_HYSTERESIS       3
-
-/*-----------------------------------------------------------------------
- * NVRAM Configuration
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_NVRAM_BASE_ADDR     0xFA080000
-#define CONFIG_SYS_NVRAM_SIZE          (128*1024)-16
-
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-/* General PCI */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play   */
-#define CONFIG_PCI_SCAN_SHOW            /* show pci devices on startup  */
-#define CONFIG_PCI_BOOTDELAY   0
-
-/* PCI Memory map (if different from default map */
-#define CONFIG_SYS_PCI_SLV_MEM_LOCAL   CONFIG_SYS_SDRAM_BASE           /* Local base */
-#define CONFIG_SYS_PCI_SLV_MEM_BUS             0x00000000      /* PCI base */
-#define CONFIG_SYS_PICMR0_MASK_ATTRIB  (PICMR_MASK_512MB | PICMR_ENABLE | \
-                                PICMR_PREFETCH_EN)
-
-/*
- * These are the windows that allow the CPU to access PCI address space.
- * All three PCI master windows, which allow the CPU to access PCI
- * prefetch, non prefetch, and IO space (see below), must all fit within
- * these windows.
- */
-
-/*
- * Master window that allows the CPU to access PCI Memory (prefetch).
- * This window will be setup with the second set of Outbound ATU registers
- * in the bridge.
- */
-
-#define CONFIG_SYS_PCI_MSTR_MEM_LOCAL  0x80000000          /* Local base */
-#define CONFIG_SYS_PCI_MSTR_MEM_BUS    0x80000000          /* PCI base   */
-#define        CONFIG_SYS_CPU_PCI_MEM_START    PCI_MSTR_MEM_LOCAL
-#define CONFIG_SYS_PCI_MSTR_MEM_SIZE   0x20000000          /* 512MB */
-#define CONFIG_SYS_POCMR0_MASK_ATTRIB  (POCMR_MASK_512MB | POCMR_ENABLE | POCMR_PREFETCH_EN)
-
-/*
- * Master window that allows the CPU to access PCI Memory (non-prefetch).
- * This window will be setup with the second set of Outbound ATU registers
- * in the bridge.
- */
-
-#define CONFIG_SYS_PCI_MSTR_MEMIO_LOCAL    0xA0000000          /* Local base */
-#define CONFIG_SYS_PCI_MSTR_MEMIO_BUS      0xA0000000          /* PCI base   */
-#define CONFIG_SYS_CPU_PCI_MEMIO_START     PCI_MSTR_MEMIO_LOCAL
-#define CONFIG_SYS_PCI_MSTR_MEMIO_SIZE     0x20000000          /* 512MB */
-#define CONFIG_SYS_POCMR1_MASK_ATTRIB      (POCMR_MASK_512MB | POCMR_ENABLE)
-
-/*
- * Master window that allows the CPU to access PCI IO space.
- * This window will be setup with the first set of Outbound ATU registers
- * in the bridge.
- */
-
-#define CONFIG_SYS_PCI_MSTR_IO_LOCAL       0xF6000000          /* Local base */
-#define CONFIG_SYS_PCI_MSTR_IO_BUS         0x00000000          /* PCI base   */
-#define CONFIG_SYS_CPU_PCI_IO_START        PCI_MSTR_IO_LOCAL
-#define CONFIG_SYS_PCI_MSTR_IO_SIZE        0x02000000          /* 64MB */
-#define CONFIG_SYS_POCMR2_MASK_ATTRIB      (POCMR_MASK_32MB | POCMR_ENABLE | POCMR_PCI_IO)
-
-
-/* PCIBR0 - for PCI IO*/
-#define CONFIG_SYS_PCI_MSTR0_LOCAL             CONFIG_SYS_PCI_MSTR_IO_LOCAL            /* Local base */
-#define CONFIG_SYS_PCIMSK0_MASK                ~(CONFIG_SYS_PCI_MSTR_IO_SIZE - 1U)     /* Size of window */
-/* PCIBR1 - prefetch and non-prefetch regions joined together */
-#define CONFIG_SYS_PCI_MSTR1_LOCAL             CONFIG_SYS_PCI_MSTR_MEM_LOCAL
-#define CONFIG_SYS_PCIMSK1_MASK                ~(CONFIG_SYS_PCI_MSTR_MEM_SIZE + CONFIG_SYS_PCI_MSTR_MEMIO_SIZE - 1U)
-
-
-#define        CONFIG_SYS_DIRECT_FLASH_TFTP
-
-#if defined(CONFIG_CMD_JFFS2)
-#define CONFIG_SYS_JFFS2_FIRST_BANK    0
-#define CONFIG_SYS_JFFS2_NUM_BANKS     CONFIG_SYS_MAX_FLASH_BANKS
-#define CONFIG_SYS_JFFS2_FIRST_SECTOR  0
-#define CONFIG_SYS_JFFS2_LAST_SECTOR   62
-#define CONFIG_SYS_JFFS2_SORT_FRAGMENTS
-#define CONFIG_SYS_JFFS_CUSTOM_PART
-#endif
-
-#if defined(CONFIG_CMD_I2C)
-#define CONFIG_HARD_I2C                1       /* To enable I2C support        */
-#define CONFIG_SYS_I2C_SPEED           100000  /* I2C speed                    */
-#define CONFIG_SYS_I2C_SLAVE           0x7F    /* I2C slave address            */
-#endif
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN         (512 << 10)     /* Reserve 256KB for Monitor */
-
-#define CONFIG_SYS_DEFAULT_IMMR        0x00010000
-#define CONFIG_SYS_IMMR                0xF0000000
-
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-
-/* Hard reset configuration word */
-#define CONFIG_SYS_HRCW_MASTER         0 /*0x1C800641*/  /* Not used - provided by CPLD */
-/* No slaves */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-#define CONFIG_SYS_MALLOC_LEN          (4096 << 10)    /* Reserve 4 MB for malloc()    */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPUs */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     5       /* log base 2 of the above value */
-#endif
-
-#define CONFIG_SYS_HID0_INIT           0
-#define CONFIG_SYS_HID0_FINAL          0
-
-#define CONFIG_SYS_HID2                0
-
-#define CONFIG_SYS_SIUMCR              0x02610000
-#define CONFIG_SYS_SYPCR               0xFFFF0689
-#define CONFIG_SYS_BCR                 0x8080E000
-#define CONFIG_SYS_SCCR                0x00000001
-
-#define CONFIG_SYS_RMR                 0
-#define CONFIG_SYS_TMCNTSC             0x000000C3
-#define CONFIG_SYS_PISCR               0x00000083
-#define CONFIG_SYS_RCCR                0
-
-#define CONFIG_SYS_MPTPR               0x0A00
-#define CONFIG_SYS_PSDMR               0xC432246E
-#define CONFIG_SYS_PSRT                0x32
-
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_SDRAM_BR            (CONFIG_SYS_SDRAM_BASE | 0x00000041)
-#define CONFIG_SYS_SDRAM_OR            0xF0002900
-
-#define CONFIG_SYS_BR0_PRELIM          (CONFIG_SYS_FLASH_BASE | 0x00001801)
-#define CONFIG_SYS_OR0_PRELIM          0xFC000882
-#define CONFIG_SYS_BR4_PRELIM          (CONFIG_SYS_BCSR | 0x00001001)
-#define CONFIG_SYS_OR4_PRELIM          0xFFF00050
-
-#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
-
-#endif /* __CONFIG_H */
index 4c69af6af3f30da2d60994a3559e95426b8e3468..ce61a1621c08fe4c67c5c0694658afad099945d4 100644 (file)
@@ -78,7 +78,6 @@
 
 /* SPI */
 #define CONFIG_ATMEL_SPI
-#define CONFIG_SYS_SPI_WRITE_TOUT      (5 * CONFIG_SYS_HZ)
 #define AT91_SPI_CLK                   15000000
 
 /* Serial port */
index b258cb93c454c7f44f85f535067a6f042776a5f7..1f3ee55098fc8f8289cd882eceecbfa66b8147d6 100644 (file)
@@ -30,9 +30,6 @@
 #define CONFIG_SKIP_LOWLEVEL_INIT
 #define CONFIG_BOARD_EARLY_INIT_F
 
-/* Enable fdt support */
-#define CONFIG_OF_LIBFDT
-
 /* Keep L2 Cache Disabled */
 #define CONFIG_CMD_CACHE
 
@@ -42,7 +39,6 @@
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_INITRD_TAG
-#define CONFIG_CMDLINE_EDITING
 #define CONFIG_ENV_OVERWRITE
 
 /* Size of malloc() pool before and after relocation */
@@ -61,7 +57,6 @@
 #define CONFIG_EXYNOS_DWMMC
 #define CONFIG_BOUNCE_BUFFER
 
-#define CONFIG_BOOTDELAY               3
 #define CONFIG_ZERO_BOOTDELAY_CHECK
 
 /* PWM */
 #include <config_cmd_default.h>
 
 #define CONFIG_CMD_MMC
-#define CONFIG_CMD_EXT4
 #define CONFIG_CMD_EXT4_WRITE
-#define CONFIG_CMD_FAT
 #define CONFIG_FAT_WRITE
 #define CONFIG_CMD_FS_GENERIC
 
-#define CONFIG_DOS_PARTITION
-#define CONFIG_EFI_PARTITION
 #define CONFIG_CMD_PART
 #define CONFIG_PARTITION_UUIDS
 
 /* Miscellaneous configurable options */
-#define CONFIG_SYS_LONGHELP            /* undef to save memory */
-#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser    */
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
-#define CONFIG_SYS_PBSIZE              384     /* Print Buffer Size */
+#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size */
+#define CONFIG_SYS_PBSIZE              1024    /* Print Buffer Size */
 #define CONFIG_SYS_MAXARGS             16      /* max number of command args */
 
 /* Boot Argument Buffer Size */
@@ -96,4 +85,6 @@
 #define CONFIG_SYS_NO_FLASH
 #undef CONFIG_CMD_IMLS
 
+#include <config_distro_defaults.h>
+
 #endif /* __CONFIG_H */
index 89ba14e05dd86f42a6176e99622a413754a00171..41631c72e97f497a080dd8a28cd16fa58bde1c5c 100644 (file)
@@ -59,6 +59,7 @@
 
 #define CONFIG_USB_GADGET
 #define CONFIG_USB_GADGET_S3C_UDC_OTG
+#define CONFIG_USB_GADGET_S3C_UDC_OTG_PHY
 #define CONFIG_USB_GADGET_DUALSPEED
 #define CONFIG_USB_GADGET_VBUS_DRAW    2
 
index ba591e7c1ec9435b0b03b6c888735805b5a15173..ad63f3c5496d39e0be23c35d2a1d29c92edf8c11 100644 (file)
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV
 #define CONFIG_CONSOLE_MUX
 
-#define EXYNOS_DEVICE_SETTINGS \
-               "stdin=serial\0" \
-               "stdout=serial\0" \
-               "stderr=serial\0"
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       EXYNOS_DEVICE_SETTINGS
-
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_NET
 #define CONFIG_CMD_HASH
 
 /* Thermal Management Unit */
 #define CONFIG_ENV_SROM_BANK           1
 #endif /*CONFIG_CMD_NET*/
 
-/* Enable PXE Support */
-#ifdef CONFIG_CMD_NET
-#define CONFIG_CMD_PXE
-#define CONFIG_MENU
-#endif
-
 /* SHA hashing */
 #define CONFIG_CMD_HASH
 #define CONFIG_HASH_VERIFY
 /* Enable Time Command */
 #define CONFIG_CMD_TIME
 
-#define CONFIG_CMD_BOOTZ
-
 #define CONFIG_CMD_GPIO
 
+/* USB */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
+#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
+
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_ETHER_SMSC95XX
+
 /* USB boot mode */
 #define CONFIG_USB_BOOTING
 #define EXYNOS_COPY_USB_FNPTR_ADDR     0x02020070
 #define CONFIG_FIT
 #define CONFIG_FIT_BEST_MATCH
 
+
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 1) \
+       func(MMC, mmc, 0) \
+       func(PXE, pxe, na) \
+       func(DHCP, dhcp, na)
+
+#include <config_distro_bootcmd.h>
+
+#ifndef MEM_LAYOUT_ENV_SETTINGS
+/* 2GB RAM, bootm size of 256M, load scripts after that */
+#define MEM_LAYOUT_ENV_SETTINGS \
+       "bootm_size=0x10000000\0" \
+       "kernel_addr_r=0x42000000\0" \
+       "fdt_addr_r=0x43000000\0" \
+       "ramdisk_addr_r=0x43300000\0" \
+       "scriptaddr=0x50000000\0" \
+       "pxefile_addr_r=0x51000000\0"
+#endif
+
+#ifndef EXYNOS_DEVICE_SETTINGS
+#define EXYNOS_DEVICE_SETTINGS \
+       "stdin=serial\0" \
+       "stdout=serial\0" \
+       "stderr=serial\0"
+#endif
+
+#ifndef EXYNOS_FDTFILE_SETTING
+#define EXYNOS_FDTFILE_SETTING
+#endif
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       EXYNOS_DEVICE_SETTINGS \
+       EXYNOS_FDTFILE_SETTING \
+       MEM_LAYOUT_ENV_SETTINGS \
+       BOOTENV
+
 #endif /* __CONFIG_EXYNOS5_COMMON_H */
index 66547fa34efe44ba756b67613b857cc039107333..9cef0b0a38f799527ef14693e371417b07bb0a74 100644 (file)
@@ -9,6 +9,13 @@
 #ifndef __CONFIG_EXYNOS5_DT_COMMON_H
 #define __CONFIG_EXYNOS5_DT_COMMON_H
 
+/* Console configuration */
+#undef EXYNOS_DEVICE_SETTINGS
+#define EXYNOS_DEVICE_SETTINGS \
+               "stdin=serial,cros-ec-keyb\0" \
+               "stdout=serial,lcd\0" \
+               "stderr=serial,lcd\0"
+
 #include "exynos5-common.h"
 
 /* PMIC */
 #define CONFIG_CMD_CROS_EC
 #define CONFIG_KEYBOARD
 
-/* Console configuration */
-#undef EXYNOS_DEVICE_SETTINGS
-#define EXYNOS_DEVICE_SETTINGS \
-               "stdin=serial,cros-ec-keyb\0" \
-               "stdout=serial,lcd\0" \
-               "stderr=serial,lcd\0"
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       EXYNOS_DEVICE_SETTINGS
-
 #endif
index 713614f3adcf3f7a1b67078ce4ab6fa1d09e0223..671431397fc02598316a9da65e170cd9196c5df8 100644 (file)
 
 #define CONFIG_SPL_MAX_FOOTPRINT       (14 * 1024)
 
-/* USB */
-#define CONFIG_CMD_USB
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
-#define CONFIG_USB_STORAGE
-
 #define CONFIG_SPL_TEXT_BASE   0x02023400
 
-#define CONFIG_BOOTCOMMAND     "mmc read 40007000 451 2000; bootm 40007000"
-
 #define CONFIG_IRAM_STACK      0x02050000
 
 #define CONFIG_SYS_INIT_SP_ADDR        CONFIG_IRAM_STACK
index b0f940cd164a81dd2031e4d04e40b08847fa2645..fe72bd0d3bc7d05b02fdb33e130e0b58c1d03362 100644 (file)
 #define __CONFIG_EXYNOS5420_H
 
 #define CONFIG_EXYNOS5420
-
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_SPI_FLASH
-#define CONFIG_ENV_SPI_BASE    0x12D30000
-#define FLASH_SIZE             (0x4 << 20)
-#define CONFIG_ENV_OFFSET      (FLASH_SIZE - CONFIG_BL2_SIZE)
-#define CONFIG_SPI_BOOTING
+/* A variant of Exynos5420 (Exynos5 Family) */
+#define CONFIG_EXYNOS5800
 
 #include <configs/exynos5-common.h>
 
@@ -27,8 +22,6 @@
 
 #define CONFIG_VAR_SIZE_SPL
 
-#define CONFIG_SYS_SDRAM_BASE          0x20000000
-#define CONFIG_SYS_TEXT_BASE           0x23E00000
 #ifdef CONFIG_VAR_SIZE_SPL
 #define CONFIG_SPL_TEXT_BASE           0x02024410
 #else
 
 #define CONFIG_SPL_MAX_FOOTPRINT       (30 * 1024)
 
-#define CONFIG_DEVICE_TREE_LIST "exynos5420-peach-pit exynos5420-smdk5420"
+#define CONFIG_DEVICE_TREE_LIST "exynos5800-peach-pi"  \
+                               "exynos5420-peach-pit exynos5420-smdk5420"
 
 #define CONFIG_MAX_I2C_NUM     11
 
 #define CONFIG_BOARD_REV_GPIO_COUNT    2
 
-#define CONFIG_BOOTCOMMAND     "mmc read 20007000 451 2000; bootm 20007000"
-
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
-
-/*
- * Put the initial stack pointer 1KB below this to allow room for the
- * SPL marker. This value is arbitrary, but gd_t is placed starting here.
- */
-#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_IRAM_TOP - 0x800)
-
-/* DRAM Memory Banks */
-#define CONFIG_NR_DRAM_BANKS   7
-#define SDRAM_BANK_SIZE                (512UL << 20UL) /* 512 MB */
-
-/* Miscellaneous configurable options */
-#define CONFIG_DEFAULT_CONSOLE         "console=ttySAC1,115200n8\0"
-
 #endif /* __CONFIG_EXYNOS5420_H */
index 84175676c25505b3d4db84507ca5c785bfc98f25..bf02829cde58f856efcf01647989fe3cdc9f603f 100644 (file)
@@ -16,7 +16,6 @@
 #include <asm/arch/imx-regs.h>
 
  /* High Level Configuration Options */
-#define CONFIG_ARM1136 /* This is an arm1136 CPU core */
 #define CONFIG_MX35
 
 #define CONFIG_SYS_DCACHE_OFF
diff --git a/include/configs/gose.h b/include/configs/gose.h
new file mode 100644 (file)
index 0000000..44c8a30
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * include/configs/gose.h
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#ifndef __GOSE_H
+#define __GOSE_H
+
+#undef DEBUG
+#define CONFIG_R8A7793
+#define CONFIG_RMOBILE_BOARD_STRING "Gose"
+
+#include "rcar-gen2-common.h"
+
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_TEXT_BASE   0x70000000
+#else
+#define CONFIG_SYS_TEXT_BASE   0xE6304000
+#endif
+
+/* STACK */
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_INIT_SP_ADDR                0x7003FFFC
+#else
+#define CONFIG_SYS_INIT_SP_ADDR                0xE633FFFC
+#endif
+
+#define STACK_AREA_SIZE                        0xC000
+#define LOW_LEVEL_MERAM_STACK  \
+       (CONFIG_SYS_INIT_SP_ADDR + STACK_AREA_SIZE - 4)
+
+/* MEMORY */
+#define RCAR_GEN2_SDRAM_BASE           0x40000000
+#define RCAR_GEN2_SDRAM_SIZE           0x40000000
+#define RCAR_GEN2_UBOOT_SDRAM_SIZE     0x20000000
+
+/* SCIF */
+#define CONFIG_SCIF_CONSOLE
+#define CONFIG_CONS_SCIF0
+#define CONFIG_SCIF_USE_EXT_CLK
+
+/* FLASH */
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_SPI
+#define CONFIG_SH_QSPI
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_FLASH_SPANSION
+
+/* SH Ether */
+#define        CONFIG_NET_MULTI
+#define CONFIG_SH_ETHER
+#define CONFIG_SH_ETHER_USE_PORT       0
+#define CONFIG_SH_ETHER_PHY_ADDR       0x1
+#define CONFIG_SH_ETHER_PHY_MODE PHY_INTERFACE_MODE_RMII
+#define CONFIG_SH_ETHER_CACHE_WRITEBACK
+#define CONFIG_SH_ETHER_CACHE_INVALIDATE
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_MICREL
+#define CONFIG_BITBANGMII
+#define CONFIG_BITBANGMII_MULTI
+#define CONFIG_SH_ETHER_ALIGNE_SIZE    64
+
+/* Board Clock */
+#define RMOBILE_XTAL_CLK       20000000u
+#define CONFIG_SYS_CLK_FREQ    RMOBILE_XTAL_CLK
+#define CONFIG_SH_TMU_CLK_FREQ (CONFIG_SYS_CLK_FREQ / 2)
+#define CONFIG_SH_SCIF_CLK_FREQ        14745600
+#define CONFIG_SYS_TMU_CLK_DIV 4
+
+/* I2C */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_SH
+#define CONFIG_SYS_I2C_SLAVE   0x7F
+#define CONFIG_SYS_I2C_SH_NUM_CONTROLLERS      3
+#define CONFIG_SYS_I2C_SH_SPEED0       400000
+#define CONFIG_SYS_I2C_SH_SPEED1       400000
+#define CONFIG_SYS_I2C_SH_SPEED2       400000
+#define CONFIG_SH_I2C_DATA_HIGH        4
+#define CONFIG_SH_I2C_DATA_LOW 5
+#define CONFIG_SH_I2C_CLOCK    10000000
+
+#define CONFIG_SYS_I2C_POWERIC_ADDR 0x58 /* da9063 */
+
+/* USB */
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_RMOBILE
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+
+/* Module stop status bits */
+/* INTC-RT */
+#define CONFIG_SMSTP0_ENA      0x00400000
+/* MSIF */
+#define CONFIG_SMSTP2_ENA      0x00002000
+/* INTC-SYS, IRQC */
+#define CONFIG_SMSTP4_ENA      0x00000180
+/* SCIF0 */
+#define CONFIG_SMSTP7_ENA      0x00200000
+
+#endif /* __GOSE_H */
diff --git a/include/configs/gw8260.h b/include/configs/gw8260.h
deleted file mode 100644 (file)
index 262c9e9..0000000
+++ /dev/null
@@ -1,800 +0,0 @@
-/*
- * (C) Copyright 2000
- * Murray Jensen <Murray.Jensen@cmst.csiro.au>
- *
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jmonkman@adventnetworks.com>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Oliver Brown <obrown@adventnetworks.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*********************************************************************/
-/* DESCRIPTION:
- *   This file contains the board configuartion for the GW8260 board.
- *
- * MODULE DEPENDENCY:
- *   None
- *
- * RESTRICTIONS/LIMITATIONS:
- *   None
- *
- * Copyright (c) 2001, Advent Networks, Inc.
- */
-/*********************************************************************/
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-/* Enable debug prints */
-#undef DEBUG_BOOTP_EXT        /* Debug received vendor fields */
-
-/* What is the oscillator's (UX2) frequency in Hz? */
-#define CONFIG_8260_CLKIN  (66 * 1000 * 1000)
-
-/*-----------------------------------------------------------------------
- * MODCK_H & MODCLK[1-3] - Ref: Section 9.2 in MPC8206 User Manual
- *-----------------------------------------------------------------------
- * What should MODCK_H be? It is dependent on the oscillator
- * frequency, MODCK[1-3], and desired CPM and core frequencies.
- * Here are some example values (all frequencies are in MHz):
- *
- * MODCK_H   MODCK[1-3]  Osc    CPM    Core  S2-6   S2-7   S2-8
- * -------   ----------  ---    ---    ----  -----  -----  -----
- * 0x5       0x5     66 133     133    Open  Close  Open
- * 0x5       0x6     66 133     166    Open  Open   Close
- * 0x5       0x7     66 133     200    Open  Open   Open
- * 0x6       0x0     66 133     233    Close Close  Close
- * 0x6       0x1     66 133     266    Close Close  Open
- * 0x6       0x2     66 133     300    Close Open   Close
- */
-#define CONFIG_SYS_SBC_MODCK_H 0x05
-
-/* Define this if you want to boot from 0x00000100. If you don't define
- * this, you will need to program the bootloader to 0xfff00000, and
- * get the hardware reset config words at 0xfe000000. The simplest
- * way to do that is to program the bootloader at both addresses.
- * It is suggested that you just let U-Boot live at 0x00000000.
- */
-#define CONFIG_SYS_SBC_BOOT_LOW 1
-
-/* What should the base address of the main FLASH be and how big is
- * it (in MBytes)? This must contain CONFIG_SYS_TEXT_BASE.
- * The main FLASH is whichever is connected to *CS0. U-Boot expects
- * this to be the SIMM.
- */
-#define CONFIG_SYS_FLASH0_BASE 0x40000000
-#define CONFIG_SYS_FLASH0_SIZE 8
-
-/* Define CONFIG_SYS_FLASH_CHECKSUM to enable flash checksum during boot.
- * Note: the 'flashchecksum' environment variable must also be set to 'y'.
- */
-#define CONFIG_SYS_FLASH_CHECKSUM
-
-/* What should be the base address of SDRAM DIMM and how big is
- * it (in Mbytes)?
- */
-#define CONFIG_SYS_SDRAM0_BASE 0x00000000
-#define CONFIG_SYS_SDRAM0_SIZE 64
-
-/*
- * DRAM tests
- *   CONFIG_SYS_DRAM_TEST - enables the following tests.
- *
- *   CONFIG_SYS_DRAM_TEST_DATA - Enables test for shorted or open data lines
- *                        Environment variable 'test_dram_data' must be
- *                        set to 'y'.
- *   CONFIG_SYS_DRAM_TEST_DATA - Enables test to verify that each word is uniquely
- *                        addressable. Environment variable
- *                        'test_dram_address' must be set to 'y'.
- *   CONFIG_SYS_DRAM_TEST_WALK - Enables test a 64-bit walking ones pattern test.
- *                        This test takes about 6 minutes to test 64 MB.
- *                        Environment variable 'test_dram_walk' must be
- *                        set to 'y'.
- */
-#define CONFIG_SYS_DRAM_TEST
-#if defined(CONFIG_SYS_DRAM_TEST)
-#define CONFIG_SYS_DRAM_TEST_DATA
-#define CONFIG_SYS_DRAM_TEST_ADDRESS
-#define CONFIG_SYS_DRAM_TEST_WALK
-#endif /* CONFIG_SYS_DRAM_TEST */
-
-/*
- * GW8260 with 16 MB DIMM:
- *
- *     0x0000 0000     Exception Vector code, 8k
- *           :
- *     0x0000 1FFF
- *     0x0000 2000     Free for Application Use
- *           :
- *           :
- *
- *           :
- *           :
- *     0x00F5 FF30     Monitor Stack (Growing downward)
- *                     Monitor Stack Buffer (0x80)
- *     0x00F5 FFB0     Board Info Data
- *     0x00F6 0000     Malloc Arena
- *           :          CONFIG_ENV_SECT_SIZE, 256k
- *           :          CONFIG_SYS_MALLOC_LEN,    128k
- *     0x00FC 0000     RAM Copy of Monitor Code
- *           :              CONFIG_SYS_MONITOR_LEN,   256k
- *     0x00FF FFFF     [End of RAM], CONFIG_SYS_SDRAM_SIZE - 1
- */
-
-/*
- * GW8260 with 64 MB DIMM:
- *
- *     0x0000 0000     Exception Vector code, 8k
- *           :
- *     0x0000 1FFF
- *     0x0000 2000     Free for Application Use
- *           :
- *           :
- *
- *           :
- *           :
- *     0x03F5 FF30     Monitor Stack (Growing downward)
- *                     Monitor Stack Buffer (0x80)
- *     0x03F5 FFB0     Board Info Data
- *     0x03F6 0000     Malloc Arena
- *           :          CONFIG_ENV_SECT_SIZE, 256k
- *           :          CONFIG_SYS_MALLOC_LEN,    128k
- *     0x03FC 0000     RAM Copy of Monitor Code
- *           :              CONFIG_SYS_MONITOR_LEN,   256k
- *     0x03FF FFFF     [End of RAM], CONFIG_SYS_SDRAM_SIZE - 1
- */
-
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere.
- */
-#define CONFIG_CONS_ON_SMC  1   /* define if console on SMC */
-#undef  CONFIG_CONS_ON_SCC      /* define if console on SCC */
-#undef  CONFIG_CONS_NONE        /* define if console on neither */
-#define CONFIG_CONS_INDEX   1   /* which SMC/SCC channel for console */
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-
-#undef  CONFIG_ETHER_ON_SCC
-#define CONFIG_ETHER_ON_FCC
-#undef  CONFIG_ETHER_NONE       /* define if ethernet on neither */
-
-#ifdef  CONFIG_ETHER_ON_SCC
-#define CONFIG_ETHER_INDEX  1   /* which SCC/FCC channel for ethernet */
-#endif  /* CONFIG_ETHER_ON_SCC */
-
-#ifdef  CONFIG_ETHER_ON_FCC
-#define CONFIG_ETHER_INDEX  2   /* which SCC/FCC channel for ethernet */
-#define CONFIG_MII              /* MII PHY management           */
-#define CONFIG_BITBANGMII       /* bit-bang MII PHY management  */
-/*
- * Port pins used for bit-banged MII communictions (if applicable).
- */
-#define MDIO_PORT   2       /* Port C */
-
-#define MDIO_DECLARE   volatile ioport_t *iop = ioport_addr ( \
-                               (immap_t *) CONFIG_SYS_IMMR, MDIO_PORT )
-#define MDC_DECLARE    MDIO_DECLARE
-
-#define MDIO_ACTIVE    (iop->pdir |=  0x00400000)
-#define MDIO_TRISTATE  (iop->pdir &= ~0x00400000)
-#define MDIO_READ     ((iop->pdat &  0x00400000) != 0)
-
-#define MDIO(bit)   if(bit) iop->pdat |=  0x00400000; \
-           else            iop->pdat &= ~0x00400000
-
-#define MDC(bit)    if(bit) iop->pdat |=  0x00200000; \
-           else    iop->pdat &= ~0x00200000
-
-#define MIIDELAY    udelay(1)
-#endif  /* CONFIG_ETHER_ON_FCC */
-
-#if defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 2)
-
-/*
- * - Rx-CLK is CLK13
- * - Tx-CLK is CLK14
- * - Select bus for bd/buffers (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE | FCC_PSMR_LPB)
-
-#elif defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 3)
-
-/*
- * - Rx-CLK is CLK15
- * - Tx-CLK is CLK16
- * - Select bus for bd/buffers (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK3       (CMXFCR_FC3|CMXFCR_RF3CS_MSK|CMXFCR_TF3CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE3      (CMXFCR_RF3CS_CLK15|CMXFCR_TF3CS_CLK16)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE | FCC_PSMR_LPB)
-
-#endif /* CONFIG_ETHER_ON_FCC, CONFIG_ETHER_INDEX */
-
-/* Define this to reserve an entire FLASH sector (256 KB) for
- * environment variables. Otherwise, the environment will be
- * put in the same sector as U-Boot, and changing variables
- * will erase U-Boot temporarily
- */
-#define CONFIG_ENV_IN_OWN_SECT
-
-/* Define to allow the user to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-/* What should the console's baud rate be? */
-#define CONFIG_BAUDRATE     115200
-
-/* Ethernet MAC address - This is set to all zeros to force an
- *                        an error if we use BOOTP without setting
- *                        the MAC address
- */
-#define CONFIG_ETHADDR      00:00:00:00:00:00
-
-/* Set to a positive value to delay for running BOOTCOMMAND */
-#define CONFIG_BOOTDELAY    5   /* autoboot after 5 seconds */
-
-/* Be selective on what keys can delay or stop the autoboot process
- *     To stop  use: " "
- */
-#define CONFIG_AUTOBOOT_KEYED
-#define CONFIG_AUTOBOOT_PROMPT \
-       "Autobooting in %d seconds, press \" \" to stop\n", bootdelay
-#define CONFIG_AUTOBOOT_STOP_STR    " "
-#undef  CONFIG_AUTOBOOT_DELAY_STR
-#define DEBUG_BOOTKEYS      0
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_DNS
-
-/* undef this to save memory */
-#define CONFIG_SYS_LONGHELP
-
-/* Monitor Command Prompt */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_IMMAP
-#define CONFIG_CMD_MII
-
-#undef CONFIG_CMD_KGDB
-
-
-/* Where do the internal registers live? */
-#define CONFIG_SYS_IMMR        0xf0000000
-
-/* Use the HUSH parser */
-#define CONFIG_SYS_HUSH_PARSER
-#ifdef  CONFIG_SYS_HUSH_PARSER
-#endif
-
-/* What is the address of IO controller */
-#define CONFIG_SYS_IO_BASE 0xe0000000
-
-/*****************************************************************************
- *
- * You should not have to modify any of the following settings
- *
- *****************************************************************************/
-
-#define CONFIG_GW8260       1   /* on an GW8260 Board  */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-/*
- * Miscellaneous configurable options
- */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CBSIZE        1024    /* Console I/O Buffer Size       */
-#else
-#  define CONFIG_SYS_CBSIZE        256     /* Console I/O Buffer Size       */
-#endif
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE    (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT)+16)
-
-#define CONFIG_SYS_MAXARGS     8          /* max number of command args   */
-
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size    */
-
-/* Convert clocks to MHZ when passing board info to kernel.
- * This must be defined for eariler 2.4 kernels (~2.4.4).
- */
-#define CONFIG_CLOCKS_IN_MHZ
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000 /* default load address */
-
-
-/* memtest works from the end of the exception vector table
- * to the end of the DRAM less monitor and malloc area
- */
-#define CONFIG_SYS_MEMTEST_START   0x2000
-
-#define CONFIG_SYS_STACK_USAGE     0x10000 /* Reserve 64k for the stack usage */
-
-#define CONFIG_SYS_MEM_END_USAGE   ( CONFIG_SYS_MONITOR_LEN \
-                           + CONFIG_SYS_MALLOC_LEN \
-                           + CONFIG_ENV_SECT_SIZE \
-                           + CONFIG_SYS_STACK_USAGE )
-
-#define CONFIG_SYS_MEMTEST_END     ( CONFIG_SYS_SDRAM_SIZE * 1024 * 1024 \
-                           - CONFIG_SYS_MEM_END_USAGE )
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_FLASH_BASE  CONFIG_SYS_FLASH0_BASE
-#define CONFIG_SYS_FLASH_SIZE  CONFIG_SYS_FLASH0_SIZE
-#define CONFIG_SYS_SDRAM_BASE  CONFIG_SYS_SDRAM0_BASE
-#define CONFIG_SYS_SDRAM_SIZE  CONFIG_SYS_SDRAM0_SIZE
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- */
-#if defined(CONFIG_SYS_SBC_BOOT_LOW)
-#  define  CONFIG_SYS_SBC_HRCW_BOOT_FLAGS  (HRCW_CIP | HRCW_BMS)
-#else
-#  define  CONFIG_SYS_SBC_HRCW_BOOT_FLAGS  (0)
-#endif /* defined(CONFIG_SYS_SBC_BOOT_LOW) */
-
-/* get the HRCW ISB field from CONFIG_SYS_IMMR */
-#define CONFIG_SYS_SBC_HRCW_IMMR   ( ((CONFIG_SYS_IMMR & 0x10000000) >> 10) | \
-                 ((CONFIG_SYS_IMMR & 0x01000000) >>  7) | \
-                 ((CONFIG_SYS_IMMR & 0x00100000) >>  4) )
-
-#define CONFIG_SYS_HRCW_MASTER     ( HRCW_BPS11                | \
-                 HRCW_DPPC11               | \
-                 CONFIG_SYS_SBC_HRCW_IMMR         | \
-                 HRCW_MMR00                | \
-                 HRCW_LBPC11               | \
-                 HRCW_APPC10               | \
-                 HRCW_CS10PC00             | \
-                 (CONFIG_SYS_SBC_MODCK_H & HRCW_MODCK_H1111)  | \
-                 CONFIG_SYS_SBC_HRCW_BOOT_FLAGS )
-
-/* no slaves */
-#define CONFIG_SYS_HRCW_SLAVE1     0
-#define CONFIG_SYS_HRCW_SLAVE2     0
-#define CONFIG_SYS_HRCW_SLAVE3     0
-#define CONFIG_SYS_HRCW_SLAVE4     0
-#define CONFIG_SYS_HRCW_SLAVE5     0
-#define CONFIG_SYS_HRCW_SLAVE6     0
-#define CONFIG_SYS_HRCW_SLAVE7     0
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR    CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE     0x4000  /* Size of used area in DPRAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET   CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- * Note also that the logic that sets CONFIG_SYS_RAMBOOT is platform dependent.
- */
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_FLASH0_BASE
-
-#define CONFIG_SYS_MONITOR_LEN     (256 * 1024) /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN      (128 * 1024) /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ       (8 * 1024 * 1024) /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS   1    /* max number of memory banks        */
-#define CONFIG_SYS_MAX_FLASH_SECT    32   /* max number of sectors on one chip */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT  8000 /* Timeout for Flash Erase (in ms)   */
-#define CONFIG_SYS_FLASH_WRITE_TOUT  1    /* Timeout for Flash Write (in ms)   */
-
-#define CONFIG_ENV_IS_IN_FLASH   1
-
-#ifdef CONFIG_ENV_IN_OWN_SECT
-#  define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE +  (256 * 1024))
-#  define CONFIG_ENV_SECT_SIZE   (256 * 1024)
-#else
-#  define CONFIG_ENV_SIZE        (16 * 1024)/* Size of Environment Sector  */
-#  define CONFIG_ENV_ADD  ((CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) - CONFIG_ENV_SIZE)
-#  define CONFIG_ENV_SECT_SIZE (256 * 1024)/* see README - env sect real size  */
-#endif /* CONFIG_ENV_IN_OWN_SECT */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE  32      /* For MPC8260 CPU */
-
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5   /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers            2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE  |\
-                        HID0_DCE  |\
-                        HID0_ICFI |\
-                        HID0_DCI  |\
-                        HID0_IFEM |\
-                        HID0_ABE)
-
-#define CONFIG_SYS_HID0_FINAL  (HID0_ICE  |\
-                        HID0_IFEM |\
-                        HID0_ABE  |\
-                        HID0_EMCP)
-#define CONFIG_SYS_HID2    0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMR     0
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                           4-25
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_BCR     (BCR_ETM)
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                 4-31
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SIUMCR  (SIUMCR_DPPC11  |\
-                    SIUMCR_L2CPC00 |\
-                    SIUMCR_APPC10  |\
-                    SIUMCR_MMR00)
-
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#define CONFIG_SYS_SYPCR   (SYPCR_SWTC |\
-                    SYPCR_BMT  |\
-                    SYPCR_PBME |\
-                    SYPCR_LBME |\
-                    SYPCR_SWRI |\
-                    SYPCR_SWP)
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control             4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC (TMCNTSC_SEC |\
-                    TMCNTSC_ALR |\
-                    TMCNTSC_TCF |\
-                    TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control         4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR   (PISCR_PS  |\
-                    PISCR_PTF |\
-                    PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                           9-8
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SCCR    0
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                 13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR    0
-
-/*
- * Initialize Memory Controller:
- *
- * Bank Bus   Machine PortSz  Device
- * ---- ---   ------- ------  ------
- *  0   60x   GPCM    32 bit  FLASH (SIMM - 4MB)
- *  1   60x   GPCM    32 bit  unused
- *  2   60x   SDRAM   64 bit  SDRAM (DIMM - 16MB or 64MB)
- *  3   60x   SDRAM   64 bit  unused
- *  4   Local GPCM     8 bit  IO    (on board - 64k)
- *  5   60x   GPCM     8 bit  unused
- *  6   60x   GPCM     8 bit  unused
- *  7   60x   GPCM     8 bit  unused
- *
- */
-
-/*-----------------------------------------------------------------------
- * BR0 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR0 - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-
-/* Bank 0,1 - FLASH SIMM
- *
- * This expects the FLASH SIMM to be connected to *CS0
- * It consists of 4 AM29F016D parts.
- *
- * Note: For the 8 MB SIMM, *CS1 is unused.
- */
-
-/* BR0 is configured as follows:
- *
- *     - Base address of 0x40000000
- *     - 32 bit port size
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - GPCM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH0_BASE & BRx_BA_MSK) |\
-                         BRx_PS_32                     |\
-                         BRx_MS_GPCM_P                 |\
-                         BRx_V)
-
-/* OR0 is configured as follows:
- *
- *     - 8 MB
- *     - *BCTL0 is asserted upon access to the current memory bank
- *     - *CW / *WE are negated a quarter of a clock earlier
- *     - *CS is output at the same time as the address lines
- *     - Uses a clock cycle length of 5
- *     - *PSDVAL is generated internally by the memory controller
- *       unless *GTA is asserted earlier externally.
- *     - Relaxed timing is generated by the GPCM for accesses
- *       initiated to this memory region.
- *     - One idle clock is inserted between a read access from the
- *       current bank and the next access.
- */
-#define CONFIG_SYS_OR0_PRELIM  (MEG_TO_AM(CONFIG_SYS_FLASH0_SIZE) |\
-                        ORxG_CSNT          |\
-                        ORxG_ACS_DIV1      |\
-                        ORxG_SCY_5_CLK     |\
-                        ORxG_TRLX          |\
-                        ORxG_EHTR)
-
-/*-----------------------------------------------------------------------
- * BR2 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR2 - Option Register
- *     Ref: Section 10.3.2 on page 10-16
- *-----------------------------------------------------------------------
- */
-
-/* Bank 2 - SDRAM DIMM
- *
- *     16MB DIMM: P/N
- *     64MB DIMM: P/N  1W-8864X8-4-P1-EST or
- *                     MT4LSDT864AG-10EB1 (Micron)
- *
- * Note: *CS3 is unused for this DIMM
- */
-
-/* With a 16 MB or 64 MB DIMM, the BR2 is configured as follows:
- *
- *     - Base address of 0x00000000
- *     - 64 bit port size (60x bus only)
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - SDRAM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM0_BASE & BRx_BA_MSK) |\
-                         BRx_PS_64          |\
-                         BRx_MS_SDRAM_P     |\
-                         BRx_V)
-
-/* With a 16 MB DIMM, the OR2 is configured as follows:
- *
- *     - 16 MB
- *     - 2 internal banks per device
- *     - Row start address bit is A9 with PSDMR[PBI] = 0
- *     - 11 row address lines
- *     - Back-to-back page mode
- *     - Internal bank interleaving within save device enabled
- */
-#if (CONFIG_SYS_SDRAM0_SIZE == 16)
-#define CONFIG_SYS_OR2_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM0_SIZE) |\
-                        ORxS_BPD_2         |\
-                        ORxS_ROWST_PBI0_A9 |\
-                        ORxS_NUMR_11)
-
-/* With a 16 MB DIMM, the PSDMR is configured as follows:
- *
- *     - Page Based Interleaving,
- *     - Refresh Enable,
- *     - Address Multiplexing where A5 is output on A14 pin
- *       (A6 on A15, and so on),
- *     - use address pins A16-A18 as bank select,
- *     - A9 is output on SDA10 during an ACTIVATE command,
- *     - earliest timing for ACTIVATE command after REFRESH command is 7 clocks,
- *     - earliest timing for ACTIVATE or REFRESH command after PRECHARGE command
- *       is 3 clocks,
- *     - earliest timing for READ/WRITE command after ACTIVATE command is
- *       2 clocks,
- *     - earliest timing for PRECHARGE after last data was read is 1 clock,
- *     - earliest timing for PRECHARGE after last data was written is 1 clock,
- *     - CAS Latency is 2.
- */
-
-/*-----------------------------------------------------------------------
- * PSDMR - 60x Bus SDRAM Mode Register
- *     Ref: Section 10.3.3 on page 10-21
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_PSDMR   (PSDMR_RFEN       |\
-                    PSDMR_SDAM_A14_IS_A5 |\
-                    PSDMR_BSMA_A16_A18   |\
-                    PSDMR_SDA10_PBI0_A9  |\
-                    PSDMR_RFRC_7_CLK     |\
-                    PSDMR_PRETOACT_3W    |\
-                    PSDMR_ACTTORW_2W     |\
-                    PSDMR_LDOTOPRE_1C    |\
-                    PSDMR_WRC_1C         |\
-                    PSDMR_CL_2)
-#endif /* (CONFIG_SYS_SDRAM0_SIZE == 16) */
-
-/* With a 64 MB DIMM, the OR2 is configured as follows:
- *
- *     - 64 MB
- *     - 4 internal banks per device
- *     - Row start address bit is A8 with PSDMR[PBI] = 0
- *     - 12 row address lines
- *     - Back-to-back page mode
- *     - Internal bank interleaving within save device enabled
- */
-#if (CONFIG_SYS_SDRAM0_SIZE == 64)
-#define CONFIG_SYS_OR2_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM0_SIZE) |\
-            ORxS_BPD_4         |\
-            ORxS_ROWST_PBI0_A8     |\
-            ORxS_NUMR_12)
-
-/* With a 64 MB DIMM, the PSDMR is configured as follows:
- *
- *     - Page Based Interleaving,
- *     - Refresh Enable,
- *     - Address Multiplexing where A5 is output on A14 pin
- *       (A6 on A15, and so on),
- *     - use address pins A14-A16 as bank select,
- *     - A9 is output on SDA10 during an ACTIVATE command,
- *     - earliest timing for ACTIVATE command after REFRESH command is 7 clocks,
- *     - earliest timing for ACTIVATE or REFRESH command after PRECHARGE command
- *       is 3 clocks,
- *     - earliest timing for READ/WRITE command after ACTIVATE command is
- *       2 clocks,
- *     - earliest timing for PRECHARGE after last data was read is 1 clock,
- *     - earliest timing for PRECHARGE after last data was written is 1 clock,
- *     - CAS Latency is 2.
- */
-
-/*-----------------------------------------------------------------------
- * PSDMR - 60x Bus SDRAM Mode Register
- *     Ref: Section 10.3.3 on page 10-21
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_PSDMR   (PSDMR_RFEN       |\
-                    PSDMR_SDAM_A14_IS_A5 |\
-                    PSDMR_BSMA_A14_A16   |\
-                    PSDMR_SDA10_PBI0_A9  |\
-                    PSDMR_RFRC_7_CLK     |\
-                    PSDMR_PRETOACT_3W    |\
-                    PSDMR_ACTTORW_2W     |\
-                    PSDMR_LDOTOPRE_1C    |\
-                    PSDMR_WRC_1C         |\
-                    PSDMR_CL_2)
-#endif  /* (CONFIG_SYS_SDRAM0_SIZE == 64) */
-
-#define CONFIG_SYS_PSRT    0x0e
-#define CONFIG_SYS_MPTPR   MPTPR_PTP_DIV32
-
-
-/*-----------------------------------------------------------------------
- * BR4 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR4 - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-/* Bank 4 - Onboard Memory Mapped IO controller
- *
- * This expects the onboard IO controller to connected to *CS4 and
- * the local bus.
- *     - Base address of 0xe0000000
- *     - 8 bit port size (local bus only)
- *     - Read and write access
- *     - GPCM local bus
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- *     - extended hold time
- *     - 11 wait states
- */
-
-#ifdef CONFIG_SYS_IO_BASE
-#  define CONFIG_SYS_BR4_PRELIM  ((CONFIG_SYS_IO_BASE & BRx_BA_MSK)  |\
-                           BRx_PS_8                   |\
-                           BRx_MS_GPCM_L              |\
-                           BRx_V)
-
-#  define CONFIG_SYS_OR4_PRELIM   (ORxG_AM_MSK                |\
-                           ORxG_SCY_11_CLK            |\
-                           ORxG_EHTR)
-#endif /* CONFIG_SYS_IO_BASE */
-#endif  /* __CONFIG_H */
index 620f9501d255741c921d699713fd779a3e9b4774..4f137fc96bf677f471adc0a9fe8a2fb1d2425d03 100644 (file)
@@ -39,6 +39,7 @@
 
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
+#define CONFIG_SYS_MALLOC_F_LEN                (1 << 10)
 
 /* Init Functions */
 #define CONFIG_BOARD_EARLY_INIT_F
index 8188c7b788237fbcba017138bb4a29202909cc0e..1d78e725e3cf407aabca1eb34c166e066035b0db 100644 (file)
@@ -20,7 +20,6 @@
  * SoC Configuration
  */
 #define CONFIG_MACH_DAVINCI_HAWK
-#define CONFIG_ARM926EJS               /* arm926ejs CPU core */
 #define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
 #define CONFIG_SOC_DA850               /* TI DA850 SoC */
 #define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
diff --git a/include/configs/hermes.h b/include/configs/hermes.h
deleted file mode 100644 (file)
index 736ffb6..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1       /* This is a MPC860T CPU        */
-#define CONFIG_HERMES          1       /* ...on a HERMES-PRO board     */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFE000000
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                9600
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define        CONFIG_SHOW_BOOT_PROGRESS 1     /* Show boot progress on LEDs   */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                     \
-       "bootp; "                                                               \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "   \
-       "bootm"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE       1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE       256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00F00000      /* 1 ... 15MB in DRAM   */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x00100000      /* default load address */
-
-#define        CONFIG_SYS_PIO_MODE             0       /* IDE interface in PIO Mode 0  */
-
-#define        CONFIG_SYS_ALLOC_DPRAM          1       /* use allocation routines      */
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFF000000      /* Non-Standard value!  */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFE000000
-#ifdef DEBUG
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (128 << 10)     /* Reserve 128 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      124     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x4000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- * +0x0004
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * +0x0000 => 0x000000C0
- */
-#define CONFIG_SYS_SIUMCR      0
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- * +0x0200 => 0x00C2
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- * +0x0240 => 0x0082
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit, set PLL multiplication factor !
- */
-/* +0x0286 => 0x00B0D0C0 */
-#define CONFIG_SYS_PLPRCR                                                      \
-               (       (11 << PLPRCR_MF_SHIFT) |                       \
-                       PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST |    \
-                       /*PLPRCR_CSRC|*/ PLPRCR_LPM_NORMAL |            \
-                       PLPRCR_CSR   | PLPRCR_LOLRE /*|PLPRCR_FIOPD*/   \
-               )
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-/* +0x0282 => 0x03800000 */
-#define CONFIG_SYS_SCCR        (SCCR_COM00     |   SCCR_TBS      |     \
-                        SCCR_RTDIV     |   SCCR_RTSEL    |     \
-                        /*SCCR_CRQEN|*/  /*SCCR_PRQEN|*/       \
-                        SCCR_EBDF00    |   SCCR_DFSYNC00 |     \
-                        SCCR_DFBRG00   |   SCCR_DFNL000  |     \
-                        SCCR_DFNH000)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-/* +0x0220 => 0x00C3 */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration Register               19-4
- *-----------------------------------------------------------------------
- */
-/* +0x09C4 => TIMEP=1 */
-#define CONFIG_SYS_RCCR 0x0100
-
-/*-----------------------------------------------------------------------
- * RMDS - RISC Microcode Development Support Control Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMDS 0
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0 and OR0 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFE000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-/* allow for max 4 MB of Flash */
-#define CONFIG_SYS_REMAP_OR_AM         0xFFC00000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFFC00000      /* OR addr mask */
-
-/* FLASH timing: ACS = 11, TRLX = 1, CSNT = 1, SCY = 5, EHTR = 0       */
-#define CONFIG_SYS_OR_TIMING_FLASH     ( OR_CSNT_SAM | /*OR_ACS_DIV4 |*/ OR_BI | \
-                                OR_SCY_5_CLK | OR_TRLX)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-/* 8 bit, bank valid */
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR1/OR1 - SDRAM
- *
- * Multiplexed addresses, GPL5 output to GPL5_A (don't care)
- */
-#define SDRAM_BASE_PRELIM      0x00000000      /* SDRAM bank */
-#define SDRAM_PRELIM_OR_AM     0xF8000000      /* map max. 128 MB */
-#define SDRAM_TIMING           0x00000A00      /* SDRAM-Timing */
-
-#define SDRAM_MAX_SIZE         0x04000000      /* max 64 MB SDRAM */
-
-#define CONFIG_SYS_OR1_PRELIM  (SDRAM_PRELIM_OR_AM | SDRAM_TIMING )
-#define CONFIG_SYS_BR1_PRELIM  ((SDRAM_BASE_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/*
- * BR2/OR2 - HPRO2: PEB2256   @ 0xE0000000, 8 Bit wide
- */
-#define HPRO2_BASE             0xE0000000
-#define HPRO2_OR_AM            0xFFFF8000
-#define HPRO2_TIMING           0x00000934
-
-#define CONFIG_SYS_OR2 (HPRO2_OR_AM | HPRO2_TIMING)
-#define CONFIG_SYS_BR2 ((HPRO2_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
-
-/*
- * BR3/OR3: not used
- * BR4/OR4: not used
- * BR5/OR5: not used
- * BR6/OR6: not used
- * BR7/OR7: not used
- */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA    97              /* start with divider for 100 MHz       */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-#endif /* __CONFIG_H */
diff --git a/include/configs/hmi1001.h b/include/configs/hmi1001.h
deleted file mode 100644 (file)
index a1a88b5..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC5200         1       /* This is an MPC5200 CPU       */
-#define CONFIG_HMI1001         1       /* HMI1001 board                */
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xFFF00000
-#endif
-
-#define CONFIG_SYS_MPC5XXX_CLKIN       33000000 /* ... running at 33.000000MHz         */
-
-#define CONFIG_BOARD_EARLY_INIT_R
-
-#define CONFIG_HIGH_BATS       1       /* High BATs supported                  */
-
-/*
- * Serial console configuration
- */
-#define CONFIG_PSC_CONSOLE     1       /* console is on PSC1   */
-#define CONFIG_BAUDRATE                115200  /* ... at 115200 bps    */
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-/* Partitions */
-#define CONFIG_DOS_PARTITION
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DISPLAY
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_SNTP
-
-
-#define        CONFIG_TIMESTAMP        1       /* Print image info with timestamp */
-
-#if (CONFIG_SYS_TEXT_BASE == 0xFFF00000) /* Boot low */
-#   define CONFIG_SYS_LOWBOOT          1
-#endif
-
-/*
- * Autobooting
- */
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "flash_nfs=run nfsargs addip;"                                  \
-               "bootm ${kernel_addr}\0"                                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip;bootm\0"     \
-       "rootpath=/opt/eldk/ppc_82xx\0"                                 \
-       ""
-
-#define CONFIG_BOOTCOMMAND     "run net_nfs"
-
-#define CONFIG_MISC_INIT_R     1
-
-/*
- * IPB Bus clocking configuration.
- */
-#undef CONFIG_SYS_IPBCLK_EQUALS_XLBCLK         /* define for 133MHz speed */
-
-/*
- * I2C configuration
- */
-#define CONFIG_HARD_I2C                1       /* I2C with hardware support */
-#define CONFIG_SYS_I2C_MODULE          2       /* Select I2C module #1 or #2 */
-
-#define CONFIG_SYS_I2C_SPEED           100000 /* 100 kHz */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/*
- * EEPROM configuration
- */
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x58
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10
-
-/*
- * RTC configuration
- */
-#define CONFIG_RTC_PCF8563
-#define CONFIG_SYS_I2C_RTC_ADDR                0x51
-
-/*
- * Flash configuration
- */
-#define CONFIG_SYS_FLASH_BASE          0xFF800000
-
-#define CONFIG_SYS_FLASH_SIZE          0x00800000 /* 8 MByte */
-#define CONFIG_SYS_MAX_FLASH_SECT      67      /* max num of sects on one chip */
-
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_TEXT_BASE+0x40000) /* second sector */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of flash banks
-                                          (= chip selects) */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000  /* Flash Erase Timeout (in ms)  */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)  */
-
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_CFI_AMD_RESET
-
-/*
- * Environment settings
- */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_SIZE                0x4000
-#define CONFIG_ENV_SECT_SIZE   0x20000
-#define CONFIG_ENV_OFFSET_REDUND   (CONFIG_ENV_OFFSET+CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND     (CONFIG_ENV_SIZE)
-
-/*
- * Memory map
- */
-#define CONFIG_SYS_MBAR                0xF0000000
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_DEFAULT_MBAR        0x80000000
-#define CONFIG_SYS_DISPLAY_BASE        0x80600000
-#define CONFIG_SYS_STATUS1_BASE        0x80600200
-#define CONFIG_SYS_STATUS2_BASE        0x80600300
-
-/* Settings for XLB = 132 MHz */
-#define SDRAM_DDR       1
-#define SDRAM_MODE      0x018D0000
-#define SDRAM_EMODE     0x40090000
-#define SDRAM_CONTROL   0x714f0f00
-#define SDRAM_CONFIG1   0x73722930
-#define SDRAM_CONFIG2   0x47770000
-#define SDRAM_TAPDELAY  0x10000000
-
-/* Use ON-Chip SRAM until RAM will be available */
-#define CONFIG_SYS_INIT_RAM_ADDR       MPC5XXX_SRAM
-
-/* preserve space for the post_word at end of on-chip SRAM */
-#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4)
-
-#ifdef CONFIG_POST
-#define CONFIG_SYS_INIT_RAM_SIZE       MPC5XXX_SRAM_POST_SIZE
-#else
-#define CONFIG_SYS_INIT_RAM_SIZE       MPC5XXX_SRAM_SIZE
-#endif
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#   define CONFIG_SYS_RAMBOOT          1
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN         (192 << 10)     /* Reserve 192 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (512 << 10)     /* Reserve 128 kB for malloc()  */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*
- * Ethernet configuration
- */
-#define CONFIG_MPC5xxx_FEC     1
-#define CONFIG_MPC5xxx_FEC_MII100
-#define CONFIG_PHY_ADDR                0x00
-#define CONFIG_MII             1               /* MII PHY management           */
-
-/*
- * GPIO configuration
- */
-#define CONFIG_SYS_GPS_PORT_CONFIG     0x01051004
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory     */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size  */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size  */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC5xxx CPUs                     */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value        */
-#endif
-
-/* Enable an alternate, more extensive memory test */
-#define CONFIG_SYS_ALT_MEMTEST
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x00f00000      /* 1 ... 15 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-
-/*
- * Enable loopw command.
- */
-#define CONFIG_LOOPW
-
-/*
- * Various low-level settings
- */
-#define CONFIG_SYS_HID0_INIT           HID0_ICE | HID0_ICFI
-#define CONFIG_SYS_HID0_FINAL          HID0_ICE
-
-#define CONFIG_SYS_BOOTCS_START        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_BOOTCS_SIZE         CONFIG_SYS_FLASH_SIZE
-#define CONFIG_SYS_BOOTCS_CFG          0x0004FB00
-#define CONFIG_SYS_CS0_START           CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_CS0_SIZE            CONFIG_SYS_FLASH_SIZE
-
-/* 8Mbit SRAM @0x80100000 */
-#define CONFIG_SYS_CS1_START           0x80100000
-#define CONFIG_SYS_CS1_SIZE            0x00100000
-#define CONFIG_SYS_CS1_CFG             0x19B00
-
-/* FRAM 32Kbyte @0x80700000 */
-#define CONFIG_SYS_CS2_START           0x80700000
-#define CONFIG_SYS_CS2_SIZE            0x00008000
-#define CONFIG_SYS_CS2_CFG             0x19800
-
-/* Display H1, Status Inputs, EPLD @0x80600000 */
-#define CONFIG_SYS_CS3_START           0x80600000
-#define CONFIG_SYS_CS3_SIZE            0x00100000
-#define CONFIG_SYS_CS3_CFG             0x00019800
-
-#define CONFIG_SYS_CS_BURST            0x00000000
-#define CONFIG_SYS_CS_DEADCYCLE        0x33333333
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff Supports IDE harddisk
- *-----------------------------------------------------------------------
- */
-
-#undef  CONFIG_IDE_8xx_PCCARD          /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       2       /* max. 2 drives per IDE bus    */
-
-#define CONFIG_IDE_PREINIT     1
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       MPC5XXX_ATA
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (0x0060)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (CONFIG_SYS_ATA_DATA_OFFSET)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      (0x005C)
-
-/* Interval between registers                                                */
-#define CONFIG_SYS_ATA_STRIDE          4
-
-#define CONFIG_ATAPI            1
-
-#define CONFIG_VIDEO_SMI_LYNXEM
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-#define CONFIG_VIDEO_LOGO
-
-/*
- * PCI Mapping:
- * 0x40000000 - 0x4fffffff - PCI Memory
- * 0x50000000 - 0x50ffffff - PCI IO Space
- */
-#define CONFIG_PCI             1
-#define CONFIG_PCI_PNP         1
-#define CONFIG_PCI_SCAN_SHOW   1
-#define CONFIG_PCIAUTO_SKIP_HOST_BRIDGE        1
-
-#define CONFIG_PCI_MEM_BUS     0x40000000
-#define CONFIG_PCI_MEM_PHYS    CONFIG_PCI_MEM_BUS
-#define CONFIG_PCI_MEM_SIZE    0x10000000
-
-#define CONFIG_PCI_IO_BUS      0x50000000
-#define CONFIG_PCI_IO_PHYS     CONFIG_PCI_IO_BUS
-#define CONFIG_PCI_IO_SIZE     0x01000000
-
-#define CONFIG_SYS_ISA_IO              CONFIG_PCI_IO_BUS
-
-/*---------------------------------------------------------------------*/
-/* Display addresses                                                  */
-/*---------------------------------------------------------------------*/
-
-#define CONFIG_PDSP188x
-#define CONFIG_SYS_DISP_CHR_RAM        (CONFIG_SYS_DISPLAY_BASE + 0x38)
-#define CONFIG_SYS_DISP_CWORD          (CONFIG_SYS_DISPLAY_BASE + 0x30)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/hrcon.h b/include/configs/hrcon.h
new file mode 100644 (file)
index 0000000..e7df9ad
--- /dev/null
@@ -0,0 +1,614 @@
+/*
+ * (C) Copyright 2014
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+ *
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_E300            1 /* E300 family */
+#define CONFIG_MPC83xx         1 /* MPC83xx family */
+#define CONFIG_MPC830x         1 /* MPC830x family */
+#define CONFIG_MPC8308         1 /* MPC8308 CPU specific */
+#define CONFIG_HRCON           1 /* HRCON board specific */
+
+#define        CONFIG_SYS_TEXT_BASE    0xFE000000
+
+#define CONFIG_IDENT_STRING    " hrcon 0.01"
+
+#define CONFIG_SYS_GENERIC_BOARD
+
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_EARLY_INIT_R
+#define CONFIG_LAST_STAGE_INIT
+
+/* new uImage format support */
+#define CONFIG_FIT                     1
+#define CONFIG_FIT_VERBOSE             1
+
+#define CONFIG_MMC
+#define CONFIG_FSL_ESDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      CONFIG_SYS_MPC83xx_ESDHC_ADDR
+#define CONFIG_SYS_FSL_ERRATUM_ESDHC111
+
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_EXT2
+
+#define CONFIG_CMD_FPGAD
+#define CONFIG_CMD_IOLOOP
+
+/*
+ * System Clock Setup
+ */
+#define CONFIG_83XX_CLKIN      33333333 /* in Hz */
+#define CONFIG_SYS_CLK_FREQ    CONFIG_83XX_CLKIN
+
+/*
+ * Hardware Reset Configuration Word
+ * if CLKIN is 66.66MHz, then
+ * CSB = 133MHz, DDRC = 266MHz, LBC = 133MHz
+ * We choose the A type silicon as default, so the core is 400Mhz.
+ */
+#define CONFIG_SYS_HRCW_LOW (\
+       HRCWL_LCL_BUS_TO_SCB_CLK_1X1 |\
+       HRCWL_DDR_TO_SCB_CLK_2X1 |\
+       HRCWL_SVCOD_DIV_2 |\
+       HRCWL_CSB_TO_CLKIN_4X1 |\
+       HRCWL_CORE_TO_CSB_3X1)
+/*
+ * There are neither HRCWH_PCI_HOST nor HRCWH_PCI1_ARBITER_ENABLE bits
+ * in 8308's HRCWH according to the manual, but original Freescale's
+ * code has them and I've expirienced some problems using the board
+ * with BDI3000 attached when I've tried to set these bits to zero
+ * (UART doesn't work after the 'reset run' command).
+ */
+#define CONFIG_SYS_HRCW_HIGH (\
+       HRCWH_PCI_HOST |\
+       HRCWH_PCI1_ARBITER_ENABLE |\
+       HRCWH_CORE_ENABLE |\
+       HRCWH_FROM_0XFFF00100 |\
+       HRCWH_BOOTSEQ_DISABLE |\
+       HRCWH_SW_WATCHDOG_DISABLE |\
+       HRCWH_ROM_LOC_LOCAL_16BIT |\
+       HRCWH_RL_EXT_LEGACY |\
+       HRCWH_TSEC1M_IN_RGMII |\
+       HRCWH_TSEC2M_IN_RGMII |\
+       HRCWH_BIG_ENDIAN)
+
+/*
+ * System IO Config
+ */
+#define CONFIG_SYS_SICRH (\
+       SICRH_ESDHC_A_SD |\
+       SICRH_ESDHC_B_SD |\
+       SICRH_ESDHC_C_SD |\
+       SICRH_GPIO_A_GPIO |\
+       SICRH_GPIO_B_GPIO |\
+       SICRH_IEEE1588_A_GPIO |\
+       SICRH_USB |\
+       SICRH_GTM_GPIO |\
+       SICRH_IEEE1588_B_GPIO |\
+       SICRH_ETSEC2_GPIO |\
+       SICRH_GPIOSEL_1 |\
+       SICRH_TMROBI_V3P3 |\
+       SICRH_TSOBI1_V2P5 |\
+       SICRH_TSOBI2_V2P5)      /* 0x0037f103 */
+#define CONFIG_SYS_SICRL (\
+       SICRL_SPI_PF0 |\
+       SICRL_UART_PF0 |\
+       SICRL_IRQ_PF0 |\
+       SICRL_I2C2_PF0 |\
+       SICRL_ETSEC1_GTX_CLK125)        /* 0x00000000 */
+
+/*
+ * IMMR new address
+ */
+#define CONFIG_SYS_IMMR                0xE0000000
+
+/*
+ * SERDES
+ */
+#define CONFIG_FSL_SERDES
+#define CONFIG_FSL_SERDES1     0xe3000
+
+/*
+ * Arbiter Setup
+ */
+#define CONFIG_SYS_ACR_PIPE_DEP        3 /* Arbiter pipeline depth is 4 */
+#define CONFIG_SYS_ACR_RPTCNT  3 /* Arbiter repeat count is 4 */
+#define CONFIG_SYS_SPCR_TSECEP 3 /* eTSEC emergency priority is highest */
+
+/*
+ * DDR Setup
+ */
+#define CONFIG_SYS_DDR_BASE            0x00000000 /* DDR is system memory */
+#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_BASE
+#define CONFIG_SYS_DDR_SDRAM_BASE      CONFIG_SYS_DDR_BASE
+#define CONFIG_SYS_DDR_SDRAM_CLK_CNTL  DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05
+#define CONFIG_SYS_DDRCDR_VALUE        (DDRCDR_EN \
+                               | DDRCDR_PZ_LOZ \
+                               | DDRCDR_NZ_LOZ \
+                               | DDRCDR_ODT \
+                               | DDRCDR_Q_DRN)
+                               /* 0x7b880001 */
+/*
+ * Manually set up DDR parameters
+ * consist of one chip NT5TU64M16HG from NANYA
+ */
+
+#define CONFIG_SYS_DDR_SIZE            128 /* MB */
+
+#define CONFIG_SYS_DDR_CS0_BNDS        0x00000007
+#define CONFIG_SYS_DDR_CS0_CONFIG      (CSCONFIG_EN \
+                               | CSCONFIG_ODT_RD_NEVER \
+                               | CSCONFIG_ODT_WR_ONLY_CURRENT \
+                               | CSCONFIG_BANK_BIT_3 \
+                               | CSCONFIG_ROW_BIT_13 | CSCONFIG_COL_BIT_10)
+                               /* 0x80010102 */
+#define CONFIG_SYS_DDR_TIMING_3        0
+#define CONFIG_SYS_DDR_TIMING_0        ((0 << TIMING_CFG0_RWT_SHIFT) \
+                               | (0 << TIMING_CFG0_WRT_SHIFT) \
+                               | (0 << TIMING_CFG0_RRT_SHIFT) \
+                               | (0 << TIMING_CFG0_WWT_SHIFT) \
+                               | (2 << TIMING_CFG0_ACT_PD_EXIT_SHIFT) \
+                               | (6 << TIMING_CFG0_PRE_PD_EXIT_SHIFT) \
+                               | (8 << TIMING_CFG0_ODT_PD_EXIT_SHIFT) \
+                               | (2 << TIMING_CFG0_MRS_CYC_SHIFT))
+                               /* 0x00260802 */
+#define CONFIG_SYS_DDR_TIMING_1        ((2 << TIMING_CFG1_PRETOACT_SHIFT) \
+                               | (6 << TIMING_CFG1_ACTTOPRE_SHIFT) \
+                               | (2 << TIMING_CFG1_ACTTORW_SHIFT) \
+                               | (7 << TIMING_CFG1_CASLAT_SHIFT) \
+                               | (9 << TIMING_CFG1_REFREC_SHIFT) \
+                               | (2 << TIMING_CFG1_WRREC_SHIFT) \
+                               | (2 << TIMING_CFG1_ACTTOACT_SHIFT) \
+                               | (2 << TIMING_CFG1_WRTORD_SHIFT))
+                               /* 0x26279222 */
+#define CONFIG_SYS_DDR_TIMING_2        ((0 << TIMING_CFG2_ADD_LAT_SHIFT) \
+                               | (4 << TIMING_CFG2_CPO_SHIFT) \
+                               | (3 << TIMING_CFG2_WR_LAT_DELAY_SHIFT) \
+                               | (2 << TIMING_CFG2_RD_TO_PRE_SHIFT) \
+                               | (2 << TIMING_CFG2_WR_DATA_DELAY_SHIFT) \
+                               | (3 << TIMING_CFG2_CKE_PLS_SHIFT) \
+                               | (5 << TIMING_CFG2_FOUR_ACT_SHIFT))
+                               /* 0x021848c5 */
+#define CONFIG_SYS_DDR_INTERVAL        ((0x0824 << SDRAM_INTERVAL_REFINT_SHIFT) \
+                               | (0x0100 << SDRAM_INTERVAL_BSTOPRE_SHIFT))
+                               /* 0x08240100 */
+#define CONFIG_SYS_DDR_SDRAM_CFG       (SDRAM_CFG_SREN \
+                               | SDRAM_CFG_SDRAM_TYPE_DDR2 \
+                               | SDRAM_CFG_DBW_16)
+                               /* 0x43100000 */
+
+#define CONFIG_SYS_DDR_SDRAM_CFG2      0x00401000 /* 1 posted refresh */
+#define CONFIG_SYS_DDR_MODE            ((0x0440 << SDRAM_MODE_ESD_SHIFT) \
+                               | (0x0242 << SDRAM_MODE_SD_SHIFT))
+                               /* ODT 150ohm CL=4, AL=0 on SDRAM */
+#define CONFIG_SYS_DDR_MODE2           0x00000000
+
+/*
+ * Memory test
+ */
+#define CONFIG_SYS_MEMTEST_START       0x00001000 /* memtest region */
+#define CONFIG_SYS_MEMTEST_END         0x07f00000
+
+/*
+ * The reserved memory
+ */
+#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE /* start of monitor */
+
+#define CONFIG_SYS_MONITOR_LEN (384 * 1024) /* Reserve 384 kB for Mon */
+#define CONFIG_SYS_MALLOC_LEN  (512 * 1024) /* Reserved for malloc */
+
+/*
+ * Initial RAM Base Address Setup
+ */
+#define CONFIG_SYS_INIT_RAM_LOCK       1
+#define CONFIG_SYS_INIT_RAM_ADDR       0xE6000000 /* Initial RAM address */
+#define CONFIG_SYS_INIT_RAM_SIZE       0x1000 /* Size of used area in RAM */
+#define CONFIG_SYS_GBL_DATA_OFFSET     \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+
+/*
+ * Local Bus Configuration & Clock Setup
+ */
+#define CONFIG_SYS_LCRR_DBYP           LCRR_DBYP
+#define CONFIG_SYS_LCRR_CLKDIV         LCRR_CLKDIV_2
+#define CONFIG_SYS_LBC_LBCR            0x00040000
+
+/*
+ * FLASH on the Local Bus
+ */
+#if 1
+#define CONFIG_SYS_FLASH_CFI           /* use the Common Flash Interface */
+#define CONFIG_FLASH_CFI_DRIVER                /* use the CFI driver */
+#define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_16BIT
+#define CONFIG_FLASH_CFI_LEGACY
+#define CONFIG_SYS_FLASH_LEGACY_512Kx16
+#else
+#define CONFIG_SYS_NO_FLASH
+#endif
+
+#define CONFIG_SYS_FLASH_BASE          0xFE000000 /* FLASH base address */
+#define CONFIG_SYS_FLASH_SIZE          8 /* FLASH size is up to 8M */
+#define CONFIG_SYS_FLASH_PROTECTION    1 /* Use h/w Flash protection. */
+
+/* Window base at flash base */
+#define CONFIG_SYS_LBLAWBAR0_PRELIM    CONFIG_SYS_FLASH_BASE
+#define CONFIG_SYS_LBLAWAR0_PRELIM     (LBLAWAR_EN | LBLAWAR_8MB)
+
+#define CONFIG_SYS_BR0_PRELIM  (CONFIG_SYS_FLASH_BASE \
+                               | BR_PS_16      /* 16 bit port */ \
+                               | BR_MS_GPCM    /* MSEL = GPCM */ \
+                               | BR_V)         /* valid */
+#define CONFIG_SYS_OR0_PRELIM  (MEG_TO_AM(CONFIG_SYS_FLASH_SIZE) \
+                               | OR_UPM_XAM \
+                               | OR_GPCM_CSNT \
+                               | OR_GPCM_ACS_DIV2 \
+                               | OR_GPCM_XACS \
+                               | OR_GPCM_SCY_15 \
+                               | OR_GPCM_TRLX_SET \
+                               | OR_GPCM_EHTR_SET)
+
+#define CONFIG_SYS_MAX_FLASH_BANKS     1 /* number of banks */
+#define CONFIG_SYS_MAX_FLASH_SECT      135
+
+#define CONFIG_SYS_FLASH_ERASE_TOUT    60000 /* Flash Erase Timeout (ms) */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500 /* Flash Write Timeout (ms) */
+
+/*
+ * FPGA
+ */
+#define CONFIG_SYS_FPGA0_BASE          0xE0600000
+#define CONFIG_SYS_FPGA0_SIZE          1 /* FPGA size is 1M */
+
+/* Window base at FPGA base */
+#define CONFIG_SYS_LBLAWBAR1_PRELIM    CONFIG_SYS_FPGA0_BASE
+#define CONFIG_SYS_LBLAWAR1_PRELIM     (LBLAWAR_EN | LBLAWAR_1MB)
+
+#define CONFIG_SYS_BR1_PRELIM  (CONFIG_SYS_FPGA0_BASE \
+                               | BR_PS_16      /* 16 bit port */ \
+                               | BR_MS_GPCM    /* MSEL = GPCM */ \
+                               | BR_V)         /* valid */
+#define CONFIG_SYS_OR1_PRELIM  (MEG_TO_AM(CONFIG_SYS_FPGA0_SIZE) \
+                               | OR_UPM_XAM \
+                               | OR_GPCM_CSNT \
+                               | OR_GPCM_ACS_DIV2 \
+                               | OR_GPCM_XACS \
+                               | OR_GPCM_SCY_15 \
+                               | OR_GPCM_TRLX_SET \
+                               | OR_GPCM_EHTR_SET)
+
+#define CONFIG_SYS_FPGA_BASE(k)                CONFIG_SYS_FPGA0_BASE
+#define CONFIG_SYS_FPGA_DONE(k)                0x0010
+
+#define CONFIG_SYS_FPGA_COUNT          1
+
+#define CONFIG_SYS_MCLINK_MAX          3
+
+#define CONFIG_SYS_FPGA_PTR \
+       { (struct ihs_fpga *)CONFIG_SYS_FPGA0_BASE, NULL, NULL, NULL }
+
+/*
+ * Serial Port
+ */
+#define CONFIG_CONS_INDEX      2
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE    1
+#define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
+
+#define CONFIG_SYS_BAUDRATE_TABLE  \
+       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
+
+#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_IMMR + 0x4500)
+#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_IMMR + 0x4600)
+
+/* Use the HUSH parser */
+#define CONFIG_SYS_HUSH_PARSER
+
+/* Pass open firmware flat tree */
+#define CONFIG_OF_LIBFDT               1
+#define CONFIG_OF_BOARD_SETUP          1
+#define CONFIG_OF_STDOUT_VIA_ALIAS     1
+
+/* I2C */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_FSL
+#define CONFIG_SYS_FSL_I2C_SPEED       400000
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
+
+#define CONFIG_PCA953X                 /* NXP PCA9554 */
+#define CONFIG_PCA9698                 /* NXP PCA9698 */
+
+#define CONFIG_SYS_I2C_IHS
+#define CONFIG_SYS_I2C_IHS_CH0
+#define CONFIG_SYS_I2C_IHS_SPEED_0             50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_0             0x7F
+#define CONFIG_SYS_I2C_IHS_CH1
+#define CONFIG_SYS_I2C_IHS_SPEED_1             50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_1             0x7F
+#define CONFIG_SYS_I2C_IHS_CH2
+#define CONFIG_SYS_I2C_IHS_SPEED_2             50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_2             0x7F
+#define CONFIG_SYS_I2C_IHS_CH3
+#define CONFIG_SYS_I2C_IHS_SPEED_3             50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_3             0x7F
+
+/*
+ * Software (bit-bang) I2C driver configuration
+ */
+#define CONFIG_SYS_I2C_SOFT
+#define CONFIG_SYS_I2C_SOFT_SPEED              50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE              0x7F
+#define I2C_SOFT_DECLARATIONS2
+#define CONFIG_SYS_I2C_SOFT_SPEED_2            50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_2            0x7F
+#define I2C_SOFT_DECLARATIONS3
+#define CONFIG_SYS_I2C_SOFT_SPEED_3            50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_3            0x7F
+#define I2C_SOFT_DECLARATIONS4
+#define CONFIG_SYS_I2C_SOFT_SPEED_4            50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_4            0x7F
+
+#define CONFIG_SYS_ICS8N3QV01_I2C              {5, 6, 7, 8}
+#define CONFIG_SYS_CH7301_I2C                  {5, 6, 7, 8}
+#define CONFIG_SYS_DP501_I2C                   {1, 2, 3, 4}
+
+#ifndef __ASSEMBLY__
+void fpga_gpio_set(unsigned int bus, int pin);
+void fpga_gpio_clear(unsigned int bus, int pin);
+int fpga_gpio_get(unsigned int bus, int pin);
+#endif
+
+#define I2C_ACTIVE     { }
+#define I2C_TRISTATE   { }
+#define I2C_READ \
+       (fpga_gpio_get(I2C_ADAP_HWNR, 0x0040) ? 1 : 0)
+#define I2C_SDA(bit) \
+       do { \
+               if (bit) \
+                       fpga_gpio_set(I2C_ADAP_HWNR, 0x0040); \
+               else \
+                       fpga_gpio_clear(I2C_ADAP_HWNR, 0x0040); \
+       } while (0)
+#define I2C_SCL(bit) \
+       do { \
+               if (bit) \
+                       fpga_gpio_set(I2C_ADAP_HWNR, 0x0020); \
+               else \
+                       fpga_gpio_clear(I2C_ADAP_HWNR, 0x0020); \
+       } while (0)
+#define I2C_DELAY      udelay(25)      /* 1/4 I2C clock duration */
+
+/*
+ * Software (bit-bang) MII driver configuration
+ */
+#define CONFIG_BITBANGMII              /* bit-bang MII PHY management */
+#define CONFIG_BITBANGMII_MULTI
+
+/*
+ * OSD Setup
+ */
+#define CONFIG_SYS_OSD_SCREENS         1
+#define CONFIG_SYS_DP501_DIFFERENTIAL
+#define CONFIG_SYS_DP501_VCAPCTRL0     0x01 /* DDR mode 0, DE for H/VSYNC */
+
+/*
+ * General PCI
+ * Addresses are mapped 1-1.
+ */
+#define CONFIG_SYS_PCIE1_BASE          0xA0000000
+#define CONFIG_SYS_PCIE1_MEM_BASE      0xA0000000
+#define CONFIG_SYS_PCIE1_MEM_PHYS      0xA0000000
+#define CONFIG_SYS_PCIE1_MEM_SIZE      0x10000000
+#define CONFIG_SYS_PCIE1_CFG_BASE      0xB0000000
+#define CONFIG_SYS_PCIE1_CFG_SIZE      0x01000000
+#define CONFIG_SYS_PCIE1_IO_BASE       0x00000000
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xB1000000
+#define CONFIG_SYS_PCIE1_IO_SIZE       0x00800000
+
+/* enable PCIE clock */
+#define CONFIG_SYS_SCCR_PCIEXP1CM      1
+
+#define CONFIG_PCI
+#define CONFIG_PCI_INDIRECT_BRIDGE
+#define CONFIG_PCIE
+
+#define CONFIG_PCI_PNP         /* do pci plug-and-play */
+
+#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x1957  /* Freescale */
+#define CONFIG_83XX_GENERIC_PCIE_REGISTER_HOSES 1
+
+/*
+ * TSEC
+ */
+#define CONFIG_TSEC_ENET       /* TSEC ethernet support */
+#define CONFIG_SYS_TSEC1_OFFSET        0x24000
+#define CONFIG_SYS_TSEC1       (CONFIG_SYS_IMMR+CONFIG_SYS_TSEC1_OFFSET)
+
+/*
+ * TSEC ethernet configuration
+ */
+#define CONFIG_MII             1 /* MII PHY management */
+#define CONFIG_TSEC1
+#define CONFIG_TSEC1_NAME      "eTSEC0"
+#define TSEC1_PHY_ADDR         1
+#define TSEC1_PHYIDX           0
+#define TSEC1_FLAGS            TSEC_GIGABIT
+
+/* Options are: eTSEC[0-1] */
+#define CONFIG_ETHPRIME                "eTSEC0"
+
+/*
+ * Environment
+ */
+#if 1
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
+                                CONFIG_SYS_MONITOR_LEN)
+#define CONFIG_ENV_SECT_SIZE   0x10000 /* 64K(one sector) for env */
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE)
+#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
+#else
+#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_SIZE                0x2000          /* 8KB */
+#endif
+
+#define CONFIG_LOADS_ECHO      1       /* echo on for serial download */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change */
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_PING
+
+#define CONFIG_CMDLINE_EDITING 1       /* add command line history */
+#define CONFIG_AUTO_COMPLETE           /* add autocompletion support */
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP            /* undef to save memory */
+#define CONFIG_SYS_LOAD_ADDR           0x2000000 /* default load address */
+#define CONFIG_SYS_PROMPT              "=> "   /* Monitor Command Prompt */
+#define CONFIG_SYS_HZ          1000    /* decrementer freq: 1ms ticks */
+
+#undef CONFIG_ZERO_BOOTDELAY_CHECK     /* ignore keypress on bootdelay==0 */
+#define CONFIG_AUTOBOOT_KEYED          /* use key strings to stop autoboot */
+#define CONFIG_AUTOBOOT_STOP_STR " "
+
+#define CONFIG_SYS_CBSIZE      1024 /* Console I/O Buffer Size */
+
+#define CONFIG_SYS_CONSOLE_INFO_QUIET
+
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS     16      /* max number of command args */
+#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 256 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ   (256 << 20) /* Initial Memory map for Linux */
+
+/*
+ * Core HID Setup
+ */
+#define CONFIG_SYS_HID0_INIT   0x000000000
+#define CONFIG_SYS_HID0_FINAL  (HID0_ENABLE_MACHINE_CHECK | \
+                                HID0_ENABLE_INSTRUCTION_CACHE | \
+                                HID0_ENABLE_DYNAMIC_POWER_MANAGMENT)
+#define CONFIG_SYS_HID2                HID2_HBE
+
+/*
+ * MMU Setup
+ */
+
+/* DDR: cache cacheable */
+#define CONFIG_SYS_IBAT0L      (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | \
+                                       BATL_MEMCOHERENCE)
+#define CONFIG_SYS_IBAT0U      (CONFIG_SYS_SDRAM_BASE | BATU_BL_128M | \
+                                       BATU_VS | BATU_VP)
+#define CONFIG_SYS_DBAT0L      CONFIG_SYS_IBAT0L
+#define CONFIG_SYS_DBAT0U      CONFIG_SYS_IBAT0U
+
+/* IMMRBAR, PCI IO and FPGA: cache-inhibit and guarded */
+#define CONFIG_SYS_IBAT1L      (CONFIG_SYS_IMMR | BATL_PP_RW | \
+                       BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_IBAT1U      (CONFIG_SYS_IMMR | BATU_BL_8M | BATU_VS | \
+                                       BATU_VP)
+#define CONFIG_SYS_DBAT1L      CONFIG_SYS_IBAT1L
+#define CONFIG_SYS_DBAT1U      CONFIG_SYS_IBAT1U
+
+/* FLASH: icache cacheable, but dcache-inhibit and guarded */
+#define CONFIG_SYS_IBAT2L      (CONFIG_SYS_FLASH_BASE | BATL_PP_RW | \
+                                       BATL_MEMCOHERENCE)
+#define CONFIG_SYS_IBAT2U      (CONFIG_SYS_FLASH_BASE | BATU_BL_8M | \
+                                       BATU_VS | BATU_VP)
+#define CONFIG_SYS_DBAT2L      (CONFIG_SYS_FLASH_BASE | BATL_PP_RW | \
+                                       BATL_CACHEINHIBIT | \
+                                       BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_DBAT2U      CONFIG_SYS_IBAT2U
+
+/* Stack in dcache: cacheable, no memory coherence */
+#define CONFIG_SYS_IBAT3L      (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_RW)
+#define CONFIG_SYS_IBAT3U      (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | \
+                                       BATU_VS | BATU_VP)
+#define CONFIG_SYS_DBAT3L      CONFIG_SYS_IBAT3L
+#define CONFIG_SYS_DBAT3U      CONFIG_SYS_IBAT3U
+
+/*
+ * Environment Configuration
+ */
+
+#define CONFIG_ENV_OVERWRITE
+
+#if defined(CONFIG_TSEC_ENET)
+#define CONFIG_HAS_ETH0
+#endif
+
+#define CONFIG_BAUDRATE 115200
+
+#define CONFIG_LOADADDR        800000  /* default location for tftp and bootm */
+
+#define CONFIG_BOOTDELAY       5       /* -1 disables auto-boot */
+
+#define CONFIG_HOSTNAME                hrcon
+#define CONFIG_ROOTPATH                "/opt/nfsroot"
+#define CONFIG_BOOTFILE                "uImage"
+
+#define CONFIG_PREBOOT         /* enable preboot variable */
+
+#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
+       "netdev=eth0\0"                                                 \
+       "consoledev=ttyS1\0"                                            \
+       "u-boot=u-boot.bin\0"                                           \
+       "kernel_addr=1000000\0"                                 \
+       "fdt_addr=C00000\0"                                             \
+       "fdtfile=hrcon.dtb\0"                           \
+       "load=tftp ${loadaddr} ${u-boot}\0"                             \
+       "update=protect off " __stringify(CONFIG_SYS_MONITOR_BASE)      \
+               " +${filesize};era " __stringify(CONFIG_SYS_MONITOR_BASE)\
+               " +${filesize};cp.b ${fileaddr} "                       \
+               __stringify(CONFIG_SYS_MONITOR_BASE) " ${filesize}\0"   \
+       "upd=run load update\0"                                         \
+
+#define CONFIG_NFSBOOTCOMMAND                                          \
+       "setenv bootargs root=/dev/nfs rw "                             \
+       "nfsroot=$serverip:$rootpath "                                  \
+       "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
+       "console=$consoledev,$baudrate $othbootargs;"                   \
+       "tftp ${kernel_addr} $bootfile;"                                \
+       "tftp ${fdt_addr} $fdtfile;"                                    \
+       "bootm ${kernel_addr} - ${fdt_addr}"
+
+#define CONFIG_MMCBOOTCOMMAND                                          \
+       "setenv bootargs root=/dev/mmcblk0p3 rw rootwait "              \
+       "console=$consoledev,$baudrate $othbootargs;"                   \
+       "ext2load mmc 0:2 ${kernel_addr} $bootfile;"                    \
+       "ext2load mmc 0:2 ${fdt_addr} $fdtfile;"                        \
+       "bootm ${kernel_addr} - ${fdt_addr}"
+
+#define CONFIG_BOOTCOMMAND             CONFIG_MMCBOOTCOMMAND
+
+
+#endif /* __CONFIG_H */
index 3e55247465f718338f242e9896348ab24590d941..f08483487d9fc7dc7533076cfa6527127d7d8570 100644 (file)
  * Miscellaneous configurable options
  */
 #define CONFIG_SYS_LONGHELP
-#define CONFIG_SYS_PROMPT              "=> "
 #define CONFIG_SYS_CBSIZE              1024
 #define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE \
                                         + sizeof(CONFIG_SYS_PROMPT)+16)
index 9c25efe851e6ccdda9b406137282f09caa8d3b23..386dbd8895cdf34db16210f59b52c5594701afe3 100644 (file)
@@ -13,7 +13,6 @@
 /*
  * SoC Configuration
  */
-#define CONFIG_ARM926EJS                       /* arm926ejs CPU core */
 #define CONFIG_MX27
 #define CONFIG_MX27_CLK32      32768           /* OSC32K frequency */
 
index 8428d84496ca4f3e40ddb41be0e0c67e58fad2e7..0f2203254545af97739c0adaba8b1d4069de07e5 100644 (file)
@@ -15,8 +15,7 @@
 #include <asm/arch/imx-regs.h>
 
  /* High Level Configuration Options */
-#define CONFIG_ARM1136         1    /* This is an arm1136 CPU core */
-#define CONFIG_MX31            1    /* in a mx31 */
+#define CONFIG_MX31            1    /* This is a mx31 */
 #define CONFIG_MX31_CLK32      32000
 
 #define CONFIG_DISPLAY_CPUINFO
index ffb67c2ebe1f681b21d87cec682b5ee5bffd9f7a..4195fa35330981d97e4831dfb6a8c19b21a7298a 100644 (file)
@@ -15,8 +15,7 @@
 #include <asm/arch/imx-regs.h>
 
 /* High Level Configuration Options */
-#define CONFIG_ARM1136                 /* This is an arm1136 CPU core */
-#define CONFIG_MX31                    /* in a mx31 */
+#define CONFIG_MX31                    /* This is a mx31 */
 #define CONFIG_MX31_CLK32      32000
 
 #define CONFIG_DISPLAY_CPUINFO
index 308e52025284c116e75e7fdbc6160e4d38041fe9..1b9c2773beb8240af44ca465d249f904ac1ae1b2 100644 (file)
@@ -27,8 +27,7 @@
 #define CONFIG_SYS_THUMB_BUILD
 #define CONFIG_SPL_LDSCRIPT    "arch/arm/cpu/armv7/omap-common/u-boot-spl.lds"
 #define CONFIG_SPL_TEXT_BASE           0x00908000
-#define CONFIG_SPL_MAX_SIZE            (64 * 1024)
-#define CONFIG_SPL_START_S_PATH                "arch/arm/cpu/armv7"
+#define CONFIG_SPL_MAX_SIZE            0x10000
 #define CONFIG_SPL_STACK               0x0091FFB8
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
@@ -46,7 +45,7 @@
 #if defined(CONFIG_SPL_MMC_SUPPORT)
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        138 /* offset 69KB */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     800 /* 400 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SYS_MONITOR_LEN  (CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS/2*1024)
 #endif
 
index 98e819bb189e31085086831f282407ecf0efba06..310d5e2106aca2f921fe580143e979e78c98142e 100644 (file)
@@ -25,7 +25,6 @@
  * SoC Configuration
  */
 #define CONFIG_MACH_DAVINCI_DA850_EVM
-#define CONFIG_ARM926EJS               /* arm926ejs CPU core */
 #define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
 #define CONFIG_SOC_DA850               /* TI DA850 SoC */
 #define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
index 759e1129c2814aa6a4cce2cb6ea4c37cbfc61f05..8175621338fd95ea722afcd2a3dcb82691176505 100644 (file)
@@ -14,7 +14,6 @@
 #define CONFIG_MB86R0x_IOCLK   get_bus_freq(0)
 #define CONFIG_SYS_TEXT_BASE   0x10000000
 
-#define CONFIG_ARM926EJS       1       /* This is an ARM926EJS Core    */
 
 #define CONFIG_USE_ARCH_MEMCPY
 #define CONFIG_USE_ARCH_MEMSET
index d67c025b9c61cd75c254ab6fd7cba867da7ae3e6..0a79c7cfc361ead7f91ae7b5d1d9d226d1593dbb 100644 (file)
@@ -10,6 +10,9 @@
 
 #include <linux/sizes.h>
 
+/* enable PMIC */
+#define CONFIG_AS3722_POWER
+
 #include "tegra124-common.h"
 
 /* High-level configuration options */
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_SYS_MAX_I2C_BUS         TEGRA_I2C_NUM_CONTROLLERS
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_ASIX
 
+/* PCI host support */
+#define CONFIG_PCI
+#define CONFIG_PCI_TEGRA
+#define CONFIG_PCI_PNP
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_PCI_ENUM
+
+/* PCI networking support */
+#define CONFIG_RTL8169
+
 /* General networking support */
 #define CONFIG_CMD_NET
 #define CONFIG_CMD_DHCP
index 7c8065ad187e8bc5ed9fac5b19e08ed9c5d8a50d..d83e07e24238bcd1d124c9ddf07371bef6d38171 100644 (file)
 /* U-Boot general configuration */
 #define CONFIG_SYS_PROMPT               "K2E EVM # "
 
-#define KS2_ARGS_UBI   "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
-                      "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"
-
-#define KS2_FDT_NAME   "name_fdt=k2e-evm.dtb\0"
-#define KS2_ADDR_MON   "addr_mon=0x0c140000\0"
-#define KS2_NAME_MON   "name_mon=skern-k2e-evm.bin\0"
-#define NAME_UBOOT     "name_uboot=u-boot-spi-k2e-evm.gph\0"
-#define NAME_UBI       "name_ubi=k2e-evm-ubifs.ubi\0"
+#define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS                            \
+       "addr_mon=0x0c140000\0"                                         \
+       "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "        \
+       "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"           \
+       "name_fdt=uImage-k2e-evm.dtb\0"                                 \
+       "name_mon=skern-k2e-evm.bin\0"                                  \
+       "name_ubi=k2e-evm-ubifs.ubi\0"                                  \
+       "name_uboot=u-boot-spi-k2e-evm.gph\0"                           \
+       "name_fs=arago-console-image-k2e-evm.cpio.gz\0"
 
 #include <configs/ks2_evm.h>
 
 #define CONFIG_SYS_NAND_PAGE_2K
 
 /* Network */
-#define CONFIG_DRIVER_TI_KEYSTONE_NET
-#define CONFIG_TI_KSNAV
-#define CONFIG_KSNAV_PKTDMA_NETCP
 #define CONFIG_KSNET_NETCP_V1_5
 #define CONFIG_KSNET_CPSW_NUM_PORTS    9
 #define CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
 
-/* SerDes */
-#define CONFIG_TI_KEYSTONE_SERDES
-
 #endif /* __CONFIG_K2E_EVM_H */
index 034cbfd4d7815ec283cf4fbeab64fe2fdd40ef13..ffddf1391c435e9fbd5b43e1c6b1d93f2afbf34f 100644 (file)
 /* U-Boot general configuration */
 #define CONFIG_SYS_PROMPT               "K2HK EVM # "
 
-#define KS2_ARGS_UBI   "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
-                      "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"
-
-#define KS2_FDT_NAME   "name_fdt=k2hk-evm.dtb\0"
-#define KS2_ADDR_MON   "addr_mon=0x0c5f0000\0"
-#define KS2_NAME_MON   "name_mon=skern-k2hk-evm.bin\0"
-#define NAME_UBOOT     "name_uboot=u-boot-spi-k2hk-evm.gph\0"
-#define NAME_UBI       "name_ubi=k2hk-evm-ubifs.ubi\0"
+#define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS                            \
+       "addr_mon=0x0c5f0000\0"                                         \
+       "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "        \
+       "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"           \
+       "name_fdt=uImage-k2hk-evm.dtb\0"                                \
+       "name_mon=skern-k2hk-evm.bin\0"                                 \
+       "name_ubi=k2hk-evm-ubifs.ubi\0"                                 \
+       "name_uboot=u-boot-spi-k2hk-evm.gph\0"                          \
+       "name_fs=arago-console-image-k2hk-evm.cpio.gz\0"
 
 #include <configs/ks2_evm.h>
 
 #define CONFIG_SYS_NAND_PAGE_2K
 
 /* Network */
-#define CONFIG_DRIVER_TI_KEYSTONE_NET
-#define CONFIG_TI_KSNAV
-#define CONFIG_KSNAV_PKTDMA_NETCP
 #define CONFIG_KSNET_NETCP_V1_0
 #define CONFIG_KSNET_CPSW_NUM_PORTS    5
 
-/* SerDes */
-#define CONFIG_TI_KEYSTONE_SERDES
-
 #endif /* __CONFIG_K2HK_EVM_H */
index 0e1f7251b3a7dcefaae3ae74986bc01a352b62f9..805164a679defaa67f2f03e19df9b62ca228b2e3 100644 (file)
 /* U-Boot general configuration */
 #define CONFIG_SYS_PROMPT              "K2L EVM # "
 
-#define KS2_ARGS_UBI   "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
-                      "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,4096\0"
-
-#define KS2_FDT_NAME   "name_fdt=k2l-evm.dtb\0"
-#define KS2_ADDR_MON   "addr_mon=0x0c140000\0"
-#define KS2_NAME_MON   "name_mon=skern-k2l-evm.bin\0"
-#define NAME_UBOOT     "name_uboot=u-boot-spi-k2l-evm.gph\0"
-#define NAME_UBI       "name_ubi=k2l-evm-ubifs.ubi\0"
+#define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS                            \
+       "addr_mon=0x0c140000\0"                                         \
+       "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "        \
+       "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,4096\0"           \
+       "name_fdt=uImage-k2l-evm.dtb\0"                                 \
+       "name_mon=skern-k2l-evm.bin\0"                                  \
+       "name_ubi=k2l-evm-ubifs.ubi\0"                                  \
+       "name_uboot=u-boot-spi-k2l-evm.gph\0"                           \
+       "name_fs=arago-console-image-k2l-evm.cpio.gz\0"
 
 #include <configs/ks2_evm.h>
 
@@ -34,4 +35,9 @@
 /* NAND Configuration */
 #define CONFIG_SYS_NAND_PAGE_4K
 
+/* Network */
+#define CONFIG_KSNET_NETCP_V1_5
+#define CONFIG_KSNET_CPSW_NUM_PORTS    5
+#define CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
+
 #endif /* __CONFIG_K2L_EVM_H */
index ae6b6dcf246c27d2bb1837bd21986d88c2784b64..940000ea71292e8f6589a5e4bf127754b2828e08 100644 (file)
@@ -8,6 +8,9 @@
 #ifndef __CONFIG_KM83XX_H
 #define __CONFIG_KM83XX_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* include common defines/options for all Keymile boards */
 #include "keymile-common.h"
 #include "km-powerpc.h"
index d31e674eacb1ee0fe58db2caae3fc0456319ec66..f780f8b5bba61b2e364c3f1880b2e9869327bbdb 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef _CONFIG_KM_ARM_H
 #define _CONFIG_KM_ARM_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* We got removed from Linux mach-types.h */
 #define MACH_TYPE_KM_KIRKWOOD          2255
 
index a0f9d293caa733c44e9082d058a73ebb01edebc7..949b3dadb385faec51c7e2af0d8eeb93897d7e8e 100644 (file)
@@ -11,7 +11,7 @@
 #define CONFIG_PHYS_64BIT
 #define CONFIG_PPC_P2041
 
-#define CONFIG_SYS_TEXT_BASE   0xfff80000
+#define CONFIG_SYS_TEXT_BASE   0xfff40000
 
 #define CONFIG_KM_DEF_NETDEV   "netdev=eth0\0"
 
@@ -21,6 +21,9 @@
 
 #define CONFIG_NAND_ECC_BCH
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* common KM defines */
 #include "keymile-common.h"
 
@@ -235,7 +238,7 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)
 
 /* Serial Port - controlled on board with jumper J8
@@ -336,10 +339,26 @@ int get_scl(void);
 #define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
 #define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
 #define CONFIG_SYS_BMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_BMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_BMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_BMAN_CENA_BASE       CONFIG_SYS_BMAN_MEM_BASE
+#define CONFIG_SYS_BMAN_CENA_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_CINH_BASE       (CONFIG_SYS_BMAN_MEM_BASE + \
+                                       CONFIG_SYS_BMAN_CENA_SIZE)
+#define CONFIG_SYS_BMAN_CINH_SIZE       (CONFIG_SYS_BMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_BMAN_SWP_ISDR_REG   0xE08
 #define CONFIG_SYS_QMAN_NUM_PORTALS    10
 #define CONFIG_SYS_QMAN_MEM_BASE       0xf4200000
 #define CONFIG_SYS_QMAN_MEM_PHYS       0xff4200000ull
 #define CONFIG_SYS_QMAN_MEM_SIZE       0x00200000
+#define CONFIG_SYS_QMAN_SP_CENA_SIZE    0x4000
+#define CONFIG_SYS_QMAN_SP_CINH_SIZE    0x1000
+#define CONFIG_SYS_QMAN_CENA_BASE       CONFIG_SYS_QMAN_MEM_BASE
+#define CONFIG_SYS_QMAN_CENA_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_CINH_BASE       (CONFIG_SYS_QMAN_MEM_BASE + \
+                                       CONFIG_SYS_QMAN_CENA_SIZE)
+#define CONFIG_SYS_QMAN_CINH_SIZE       (CONFIG_SYS_QMAN_MEM_SIZE >> 1)
+#define CONFIG_SYS_QMAN_SWP_ISDR_REG   0xE08
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
index 029c348285202404fe57054a3baf16b387c06c48..14fd290be1f3c7a7da01acbcd559fc5852b3fb21 100644 (file)
@@ -29,6 +29,9 @@
 #error ("Board unsupported")
 #endif
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #define        CONFIG_SYS_TEXT_BASE    0xFE000000
 
 /* include common defines/options for all Keymile boards */
        ""
 
 #define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#define CONFIG_SYS_RAMBOOT
-#endif
 
 #define CONFIG_SYS_MONITOR_LEN         (768 << 10)
 
index e015e9091be2ad3a65433db8f020ea9d44c31f16..c14889ce309d5aac9038fedd9940b7ac08f849ef 100644 (file)
 #define __KOELSCH_H
 
 #undef DEBUG
-#define CONFIG_ARMV7
 #define CONFIG_R8A7791
 #define CONFIG_RMOBILE_BOARD_STRING "Koelsch"
-#define CONFIG_SH_GPIO_PFC
-
-#include <asm/arch/rmobile.h>
-
-#define CONFIG_CMD_EDITENV
-#define CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_MEMORY
-#define CONFIG_CMD_DFL
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_RUN
-#define CONFIG_CMD_LOADS
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_BOOTZ
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_SPI
-
-#define CONFIG_FAT_WRITE
-#define CONFIG_EXT4_WRITE
 
-#define CONFIG_SYS_TEXT_BASE   0xE6304000
-#define CONFIG_SYS_THUMB_BUILD
-#define CONFIG_SYS_GENERIC_BOARD
-
-/* Support File sytems */
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SUPPORT_VFAT
-
-
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-#define        CONFIG_INITRD_TAG
-#define        CONFIG_CMDLINE_EDITING
-
-#define CONFIG_OF_LIBFDT
-#define BOARD_LATE_INIT
-
-#define CONFIG_BAUDRATE                38400
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTARGS                ""
-
-#define CONFIG_VERSION_VARIABLE
-#undef CONFIG_SHOW_BOOT_PROGRESS
+#include "rcar-gen2-common.h"
 
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_TMU_TIMER
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_TEXT_BASE   0x70000000
+#else
+#define CONFIG_SYS_TEXT_BASE   0xE6304000
+#endif
 
 /* STACK */
-#define CONFIG_SYS_INIT_SP_ADDR                0xE633fffc
-#define STACK_AREA_SIZE                                0xC000
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_INIT_SP_ADDR                0x7003FFFC
+#else
+#define CONFIG_SYS_INIT_SP_ADDR                0xE633fffC
+#endif
+
+#define STACK_AREA_SIZE                        0xC000
 #define LOW_LEVEL_MERAM_STACK  \
                (CONFIG_SYS_INIT_SP_ADDR + STACK_AREA_SIZE - 4)
 
 /* MEMORY */
-#define KOELSCH_SDRAM_BASE     0x40000000
-#define KOELSCH_SDRAM_SIZE     (2048u * 1024 * 1024)
-#define KOELSCH_UBOOT_SDRAM_SIZE       (512 * 1024 * 1024)
-
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_SYS_CBSIZE              256
-#define CONFIG_SYS_PBSIZE              256
-#define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_BARGSIZE            512
-#define CONFIG_SYS_BAUDRATE_TABLE      { 38400, 115200 }
+#define RCAR_GEN2_SDRAM_BASE           0x40000000
+#define RCAR_GEN2_SDRAM_SIZE           (2048u * 1024 * 1024)
+#define RCAR_GEN2_UBOOT_SDRAM_SIZE     (512 * 1024 * 1024)
 
 /* SCIF */
 #define CONFIG_SCIF_CONSOLE
 #define CONFIG_CONS_SCIF0
 #define CONFIG_SCIF_USE_EXT_CLK
-#undef CONFIG_SYS_CONSOLE_INFO_QUIET
-#undef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
-#undef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
-
-#define CONFIG_SYS_MEMTEST_START       (KOELSCH_SDRAM_BASE)
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + \
-                                        504 * 1024 * 1024)
-#undef CONFIG_SYS_ALT_MEMTEST
-#undef CONFIG_SYS_MEMTEST_SCRATCH
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE
-
-#define CONFIG_SYS_SDRAM_BASE          (KOELSCH_SDRAM_BASE)
-#define CONFIG_SYS_SDRAM_SIZE          (KOELSCH_UBOOT_SDRAM_SIZE)
-#define CONFIG_SYS_LOAD_ADDR           (CONFIG_SYS_SDRAM_BASE + 0x7fc0)
-#define CONFIG_NR_DRAM_BANKS           1
-
-#define CONFIG_SYS_MONITOR_BASE                0x00000000
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)
-#define CONFIG_SYS_MALLOC_LEN          (1 * 1024 * 1024)
-#define CONFIG_SYS_BOOTMAPSZ           (8 * 1024 * 1024)
 
 /* FLASH */
 #define CONFIG_SYS_NO_FLASH
 #define CONFIG_SPI_FLASH
 #define CONFIG_SPI_FLASH_BAR
 #define CONFIG_SPI_FLASH_SPANSION
-/* ENV setting */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_ADDR        0xC0000
-
-/* Common ENV setting */
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_SECT_SIZE   (256 * 1024)
-#define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
-#define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_SYS_MONITOR_LEN)
 
 /* SH Ether */
 #define        CONFIG_NET_MULTI
 #define CONFIG_SYS_I2C_SH
 #define CONFIG_SYS_I2C_SLAVE   0x7F
 #define CONFIG_SYS_I2C_SH_NUM_CONTROLLERS      3
-#define CONFIG_SYS_I2C_SH_BASE0                0xE6500000
 #define CONFIG_SYS_I2C_SH_SPEED0       400000
-#define CONFIG_SYS_I2C_SH_BASE1                0xE6510000
 #define CONFIG_SYS_I2C_SH_SPEED1       400000
-#define CONFIG_SYS_I2C_SH_BASE2                0xE60B0000
 #define CONFIG_SYS_I2C_SH_SPEED2       400000
 #define CONFIG_SH_I2C_DATA_HIGH        4
 #define CONFIG_SH_I2C_DATA_LOW 5
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        2
 #define CONFIG_USB_STORAGE
 
+
+/* Module stop status bits */
+/* INTC-RT */
+#define CONFIG_SMSTP0_ENA      0x00400000
+/* MSIF*/
+#define CONFIG_SMSTP2_ENA      0x00002000
+/* INTC-SYS, IRQC */
+#define CONFIG_SMSTP4_ENA      0x00000180
+/* SCIF0 */
+#define CONFIG_SMSTP7_ENA      0x00200000
+
 #endif /* __KOELSCH_H */
index b0c91d8dcb599a6f91ff0b32ba4b968e68aed0cb..42280ca0a505834d8e61e2e2c8c28f25802c65f9 100644 (file)
@@ -20,7 +20,6 @@
 #define CONFIG_SYS_THUMB_BUILD
 
 /* SoC Configuration */
-#define CONFIG_ARMV7
 #define CONFIG_ARCH_CPU_INIT
 #define CONFIG_SYS_ARCH_TIMER
 #define CONFIG_SYS_TEXT_BASE           0x0c001000
 #define CONFIG_SYS_SGMII_RATESCALE     2
 
 /* Keyston Navigator Configuration */
+#define CONFIG_TI_KSNAV
 #define CONFIG_KSNAV_QM_BASE_ADDRESS           KS2_QM_BASE_ADDRESS
 #define CONFIG_KSNAV_QM_CONF_BASE              KS2_QM_CONF_BASE
 #define CONFIG_KSNAV_QM_DESC_SETUP_BASE                KS2_QM_DESC_SETUP_BASE
 #define CONFIG_KSNAV_QM_QPOOL_NUM              KS2_QM_QPOOL_NUM
 
 /* NETCP pktdma */
+#define CONFIG_KSNAV_PKTDMA_NETCP
 #define CONFIG_KSNAV_NETCP_PDMA_CTRL_BASE      KS2_NETCP_PDMA_CTRL_BASE
 #define CONFIG_KSNAV_NETCP_PDMA_TX_BASE                KS2_NETCP_PDMA_TX_BASE
 #define CONFIG_KSNAV_NETCP_PDMA_TX_CH_NUM      KS2_NETCP_PDMA_TX_CH_NUM
 #define CONFIG_KSNAV_NETCP_PDMA_TX_SND_QUEUE   KS2_NETCP_PDMA_TX_SND_QUEUE
 
 /* Keystone net */
+#define CONFIG_DRIVER_TI_KEYSTONE_NET
 #define CONFIG_KSNET_MAC_ID_BASE               KS2_MAC_ID_BASE_ADDR
 #define CONFIG_KSNET_NETCP_BASE                        KS2_NETCP_BASE
 #define CONFIG_KSNET_SERDES_SGMII_BASE         KS2_SGMII_SERDES_BASE
 #define CONFIG_KSNET_SERDES_SGMII2_BASE                KS2_SGMII_SERDES2_BASE
 #define CONFIG_KSNET_SERDES_LANES_PER_SGMII    KS2_LANES_PER_SGMII_SERDES
 
+/* SerDes */
+#define CONFIG_TI_KEYSTONE_SERDES
+
 /* AEMIF */
 #define CONFIG_TI_AEMIF
 #define CONFIG_AEMIF_CNTRL_BASE                KS2_AEMIF_CNTRL_BASE
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_EEPROM
 #define CONFIG_CMD_USB
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_FS_GENERIC
 
 /* U-Boot general configuration */
 #define CONFIG_SYS_GENERIC_BOARD
 #define CONFIG_BOOTDELAY               3
 #define CONFIG_BOOTFILE                        "uImage"
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "boot=ramfs\0"                                                  \
+       CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS                             \
+       "boot=ubi\0"                                                    \
        "tftp_root=/\0"                                                 \
        "nfs_root=/export\0"                                            \
        "mem_lpae=1\0"                                                  \
        "mem_reserve=512M\0"                                            \
        "addr_fdt=0x87000000\0"                                         \
        "addr_kern=0x88000000\0"                                        \
-       KS2_ADDR_MON                                                    \
        "addr_uboot=0x87000000\0"                                       \
        "addr_fs=0x82000000\0"                                          \
        "addr_ubi=0x82000000\0"                                         \
        "addr_secdb_key=0xc000000\0"                                    \
        "fdt_high=0xffffffff\0"                                         \
-       KS2_FDT_NAME                                                    \
-       "name_fs=arago-console-image.cpio.gz\0"                         \
-       "name_kern=uImage\0"                                            \
-       KS2_NAME_MON                                                    \
-       NAME_UBOOT                                                      \
-       NAME_UBI                                                        \
+       "name_kern=uImage-keystone-evm.bin\0"                           \
        "run_mon=mon_install ${addr_mon}\0"                             \
        "run_kern=bootm ${addr_kern} - ${addr_fdt}\0"                   \
        "init_net=run args_all args_net\0"                              \
        "init_ubi=run args_all args_ubi; "                              \
-               "ubi part ubifs; ubifsmount boot;"                      \
+               "ubi part ubifs; ubifsmount ubi:boot;"                  \
                "ubifsload ${addr_secdb_key} securedb.key.bin;\0"       \
        "get_fdt_net=dhcp ${addr_fdt} ${tftp_root}/${name_fdt}\0"       \
        "get_fdt_ubi=ubifsload ${addr_fdt} ${name_fdt}\0"               \
        "burn_uboot_nand=nand erase 0 0x100000; "                       \
                "nand write ${addr_uboot} 0 ${filesize}\0"              \
        "args_all=setenv bootargs console=ttyS0,115200n8 rootwait=1\0"  \
-       KS2_ARGS_UBI                                                    \
        "args_net=setenv bootargs ${bootargs} rootfstype=nfs "          \
                "root=/dev/nfs rw nfsroot=${serverip}:${nfs_root},"     \
                "${nfs_options} ip=dhcp\0"                              \
index 699135fc0e3611bf2b616c2f09025c430cf7024c..291267f0f0a704ee5df97e3036b2b7ed9da31a14 100644 (file)
@@ -2,7 +2,7 @@
  * include/configs/lager.h
  *     This file is lager board configuration.
  *
- * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013, 2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier: GPL-2.0
  */
 #define __LAGER_H
 
 #undef DEBUG
-#define CONFIG_ARMV7
 #define CONFIG_R8A7790
 #define CONFIG_RMOBILE_BOARD_STRING "Lager"
-#define CONFIG_SH_GPIO_PFC
-
-#include <asm/arch/rmobile.h>
-
-#define        CONFIG_CMD_EDITENV
-#define        CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_MEMORY
-#define CONFIG_CMD_DFL
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_RUN
-#define CONFIG_CMD_LOADS
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_BOOTZ
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_SPI
-
-#define CONFIG_FAT_WRITE
-#define CONFIG_EXT4_WRITE
 
-#define CONFIG_SYS_TEXT_BASE   0xE8080000
-#define CONFIG_SYS_THUMB_BUILD
-#define CONFIG_SYS_GENERIC_BOARD
-
-/* Support File sytems */
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SUPPORT_VFAT
-
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-#define        CONFIG_INITRD_TAG
-#define        CONFIG_CMDLINE_EDITING
-#define        CONFIG_OF_LIBFDT
-
-/* #define CONFIG_OF_LIBFDT */
-#define BOARD_LATE_INIT
-
-#define CONFIG_BAUDRATE                38400
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTARGS                ""
-
-#define CONFIG_VERSION_VARIABLE
-#undef CONFIG_SHOW_BOOT_PROGRESS
+#include "rcar-gen2-common.h"
 
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_TMU_TIMER
+#if defined(CONFIG_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_TEXT_BASE   0xB0000000
+#else
+#define CONFIG_SYS_TEXT_BASE   0xE8080000
+#endif
 
 /* STACK */
-#define CONFIG_SYS_INIT_SP_ADDR                0xE827fffc
-#define STACK_AREA_SIZE                                0xC000
+#if defined(CONFIGF_RMOBILE_EXTRAM_BOOT)
+#define CONFIG_SYS_INIT_SP_ADDR                0xB003FFFC
+#else
+#define CONFIG_SYS_INIT_SP_ADDR                0xE827FFFC
+#endif
+#define STACK_AREA_SIZE                        0xC000
 #define LOW_LEVEL_MERAM_STACK  \
                (CONFIG_SYS_INIT_SP_ADDR + STACK_AREA_SIZE - 4)
 
 /* MEMORY */
-#define LAGER_SDRAM_BASE       0x40000000
-#define LAGER_SDRAM_SIZE       (2048u * 1024 * 1024)
-#define LAGER_UBOOT_SDRAM_SIZE (512 * 1024 * 1024)
-
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_SYS_CBSIZE              256
-#define CONFIG_SYS_PBSIZE              256
-#define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_BARGSIZE            512
-#define CONFIG_SYS_BAUDRATE_TABLE      { 38400, 115200 }
+#define RCAR_GEN2_SDRAM_BASE           0x40000000
+#define RCAR_GEN2_SDRAM_SIZE           (2048u * 1024 * 1024)
+#define RCAR_GEN2_UBOOT_SDRAM_SIZE     (512 * 1024 * 1024)
 
 /* SCIF */
 #define CONFIG_SCIF_CONSOLE
 #define CONFIG_CONS_SCIF0
 #define CONFIG_SCIF_USE_EXT_CLK
-#undef CONFIG_SYS_CONSOLE_INFO_QUIET
-#undef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
-#undef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
-
-#define CONFIG_SYS_MEMTEST_START       (LAGER_SDRAM_BASE)
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + \
-                                        504 * 1024 * 1024)
-#undef CONFIG_SYS_ALT_MEMTEST
-#undef CONFIG_SYS_MEMTEST_SCRATCH
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE
-
-#define CONFIG_SYS_SDRAM_BASE          (LAGER_SDRAM_BASE)
-#define CONFIG_SYS_SDRAM_SIZE          (LAGER_UBOOT_SDRAM_SIZE)
-#define CONFIG_SYS_LOAD_ADDR           (CONFIG_SYS_SDRAM_BASE + 0x7fc0)
-#define CONFIG_NR_DRAM_BANKS           1
-
-#define CONFIG_SYS_MONITOR_BASE                0x00000000
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)
-#define CONFIG_SYS_MALLOC_LEN          (1 * 1024 * 1024)
-#define CONFIG_SYS_BOOTMAPSZ           (8 * 1024 * 1024)
-
-/* USE SPI */
+
+/* SPI */
 #define CONFIG_SPI
 #define CONFIG_SPI_FLASH_BAR
 #define CONFIG_SH_QSPI
 #define CONFIG_SPI_FLASH_SPANSION
 #define CONFIG_SYS_NO_FLASH
 
-/* ENV setting */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_ADDR        0xC0000
-
-/* Common ENV setting */
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_SECT_SIZE   (256 * 1024)
-#define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
-#define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_SYS_MONITOR_LEN)
-
 /* SH Ether */
 #define        CONFIG_NET_MULTI
 #define CONFIG_SH_ETHER
 /* I2C */
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_I2C_RCAR
-#define CONFIG_SYS_RCAR_I2C0_BASE      0xE6508000
 #define CONFIG_SYS_RCAR_I2C0_SPEED     400000
-#define CONFIG_SYS_RCAR_I2C1_BASE      0xE6518000
 #define CONFIG_SYS_RCAR_I2C1_SPEED     400000
-#define CONFIG_SYS_RCAR_I2C2_BASE      0xE6530000
 #define CONFIG_SYS_RCAR_I2C2_SPEED     400000
-#define CONFIG_SYS_RCAR_I2C3_BASE      0xE6540000
 #define CONFIG_SYS_RCAR_I2C3_SPEED     400000
 #define CONFIF_SYS_RCAR_I2C_NUM_CONTROLLERS    4
 
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        3
 #define CONFIG_USB_STORAGE
 
+/* MMC */
+#define CONFIG_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+
+#define CONFIG_SH_MMCIF
+#define CONFIG_SH_MMCIF_ADDR           0xEE220000
+#define CONFIG_SH_MMCIF_CLK            97500000
+
+/* Module stop status bits */
+/* INTC-RT */
+#define CONFIG_SMSTP0_ENA      0x00400000
+/* MSIF */
+#define CONFIG_SMSTP2_ENA      0x00002000
+/* INTC-SYS, IRQC */
+#define CONFIG_SMSTP4_ENA      0x00000180
+/* SCIF0 */
+#define CONFIG_SMSTP7_ENA      0x00200000
+
 #endif /* __LAGER_H */
index d1f6ea7e7b0e6d5f1efcda54eca34af3cd3d3b3c..8dc04f2e574bd40eee24a31605a245b0373a4a16 100644 (file)
@@ -37,8 +37,85 @@ unsigned long get_board_sys_clk(void);
 unsigned long get_board_ddr_clk(void);
 #endif
 
+#ifdef CONFIG_QSPI_BOOT
+#define CONFIG_SYS_CLK_FREQ            100000000
+#define CONFIG_DDR_CLK_FREQ            100000000
+#define CONFIG_QIXIS_I2C_ACCESS
+#else
 #define CONFIG_SYS_CLK_FREQ            get_board_sys_clk()
 #define CONFIG_DDR_CLK_FREQ            get_board_ddr_clk()
+#endif
+
+#ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_SYS_FSL_PBL_PBI board/freescale/ls1021aqds/ls102xa_pbi.cfg
+#endif
+
+#ifdef CONFIG_SD_BOOT
+#define CONFIG_SYS_FSL_PBL_RCW board/freescale/ls1021aqds/ls102xa_rcw_sd.cfg
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_LDSCRIPT    "arch/$(ARCH)/cpu/u-boot-spl.lds"
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_I2C_SUPPORT
+#define CONFIG_SPL_WATCHDOG_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR                0xe8
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS             0x400
+
+#define CONFIG_SPL_TEXT_BASE           0x10000000
+#define CONFIG_SPL_MAX_SIZE            0x1a000
+#define CONFIG_SPL_STACK               0x1001d000
+#define CONFIG_SPL_PAD_TO              0x1c000
+#define CONFIG_SYS_TEXT_BASE           0x82000000
+
+#define CONFIG_SYS_SPL_MALLOC_START    0x80200000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     0x100000
+#define CONFIG_SPL_BSS_START_ADDR      0x80100000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x80000
+#define CONFIG_SYS_MONITOR_LEN         0x80000
+#endif
+
+#ifdef CONFIG_QSPI_BOOT
+#define CONFIG_SYS_TEXT_BASE           0x40010000
+#define CONFIG_SYS_NO_FLASH
+#endif
+
+#ifdef CONFIG_NAND_BOOT
+#define CONFIG_SYS_FSL_PBL_RCW board/freescale/ls1021aqds/ls102xa_rcw_nand.cfg
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_LDSCRIPT    "arch/$(ARCH)/cpu/u-boot-spl.lds"
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_I2C_SUPPORT
+#define CONFIG_SPL_WATCHDOG_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
+
+#define CONFIG_SPL_TEXT_BASE           0x10000000
+#define CONFIG_SPL_MAX_SIZE            0x1a000
+#define CONFIG_SPL_STACK               0x1001d000
+#define CONFIG_SPL_PAD_TO              0x1c000
+#define CONFIG_SYS_TEXT_BASE           0x82000000
+
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    (400 << 10)
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    CONFIG_SPL_PAD_TO
+#define CONFIG_SYS_NAND_PAGE_SIZE      2048
+#define CONFIG_SYS_NAND_U_BOOT_DST     CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_TEXT_BASE
+
+#define CONFIG_SYS_SPL_MALLOC_START    0x80200000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     0x100000
+#define CONFIG_SPL_BSS_START_ADDR      0x80100000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x80000
+#define CONFIG_SYS_MONITOR_LEN         0x80000
+#endif
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE           0x67f80000
@@ -70,9 +147,16 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_HAS_SERDES
 
 #define CONFIG_FSL_CAAM                        /* Enable CAAM */
+
+#if !defined(CONFIG_SD_BOOT) && !defined(CONFIG_NAND_BOOT) && \
+       !defined(CONFIG_QSPI_BOOT)
+#define CONFIG_U_QE
+#endif
+
 /*
  * IFC Definitions
  */
+#ifndef CONFIG_QSPI_BOOT
 #define CONFIG_FSL_IFC
 #define CONFIG_SYS_FLASH_BASE          0x60000000
 #define CONFIG_SYS_FLASH_BASE_PHYS     CONFIG_SYS_FLASH_BASE
@@ -110,6 +194,7 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_FLASH_QUIET_TEST
 #define CONFIG_FLASH_SHOW_PROGRESS     45
 #define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
+#define CONFIG_SYS_WRITE_SWAPPED_DATA
 
 #define CONFIG_SYS_MAX_FLASH_BANKS     2       /* number of banks */
 #define CONFIG_SYS_MAX_FLASH_SECT      1024    /* sectors per device */
@@ -164,6 +249,7 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_CMD_NAND
 
 #define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
+#endif
 
 /*
  * QIXIS Definitions
@@ -208,6 +294,40 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_FPGA_FTIM3          0x0
 #endif
 
+#if defined(CONFIG_NAND_BOOT)
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
+#define CONFIG_SYS_CSPR1_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR1               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK1              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR1               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS1_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS1_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NOR_FTIM3
+#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NOR1_CSPR_EXT
+#define CONFIG_SYS_CSPR2               CONFIG_SYS_NOR1_CSPR
+#define CONFIG_SYS_AMASK2              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR2               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NOR_FTIM3
+#define CONFIG_SYS_CSPR3_EXT           CONFIG_SYS_FPGA_CSPR_EXT
+#define CONFIG_SYS_CSPR3               CONFIG_SYS_FPGA_CSPR
+#define CONFIG_SYS_AMASK3              CONFIG_SYS_FPGA_AMASK
+#define CONFIG_SYS_CSOR3               CONFIG_SYS_FPGA_CSOR
+#define CONFIG_SYS_CS3_FTIM0           CONFIG_SYS_FPGA_FTIM0
+#define CONFIG_SYS_CS3_FTIM1           CONFIG_SYS_FPGA_FTIM1
+#define CONFIG_SYS_CS3_FTIM2           CONFIG_SYS_FPGA_FTIM2
+#define CONFIG_SYS_CS3_FTIM3           CONFIG_SYS_FPGA_FTIM3
+#else
 #define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NOR0_CSPR_EXT
 #define CONFIG_SYS_CSPR0               CONFIG_SYS_NOR0_CSPR
 #define CONFIG_SYS_AMASK0              CONFIG_SYS_NOR_AMASK
@@ -240,6 +360,7 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_CS3_FTIM1           CONFIG_SYS_FPGA_FTIM1
 #define CONFIG_SYS_CS3_FTIM2           CONFIG_SYS_FPGA_FTIM2
 #define CONFIG_SYS_CS3_FTIM3           CONFIG_SYS_FPGA_FTIM3
+#endif
 
 /*
  * Serial Port
@@ -273,6 +394,38 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_FSL_ESDHC
 #define CONFIG_GENERIC_MMC
 
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+
+/* QSPI */
+#ifdef CONFIG_QSPI_BOOT
+#define CONFIG_FSL_QSPI
+#define QSPI0_AMBA_BASE                        0x40000000
+#define FSL_QSPI_FLASH_SIZE            (1 << 24)
+#define FSL_QSPI_FLASH_NUM             2
+
+#define CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_SPANSION
+#endif
+
+/*
+ * USB
+ */
+#define CONFIG_HAS_FSL_DR_USB
+
+#ifdef CONFIG_HAS_FSL_DR_USB
+#define CONFIG_USB_EHCI
+
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_CMD_EXT2
+#endif
+#endif
+
 /*
  * eTSEC
  */
@@ -318,6 +471,14 @@ unsigned long get_board_ddr_clk(void);
 #endif
 
 #endif
+
+/* PCIe */
+#define CONFIG_PCI             /* Enable PCI/PCIE */
+#define CONFIG_PCIE1           /* PCIE controler 1 */
+#define CONFIG_PCIE2           /* PCIE controler 2 */
+#define CONFIG_PCIE_LAYERSCAPE /* Use common FSL Layerscape PCIe code */
+#define FSL_PCIE_COMPAT "fsl,ls1021a-pcie"
+
 #define CONFIG_CMD_PING
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_MII
@@ -325,13 +486,28 @@ unsigned long get_board_ddr_clk(void);
 
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_CMDLINE_EDITING
+
+#ifdef CONFIG_QSPI_BOOT
+#undef CONFIG_CMD_IMLS
+#else
 #define CONFIG_CMD_IMLS
+#endif
+
+#define CONFIG_ARMV7_NONSEC
+#define CONFIG_ARMV7_VIRT
+#define CONFIG_PEN_ADDR_BIG_ENDIAN
+#define CONFIG_LS102XA_NS_ACCESS
+#define CONFIG_SMP_PEN_ADDR            0x01ee0200
+#define CONFIG_TIMER_CLK_FREQ          12500000
+#define CONFIG_ARMV7_SECURE_BASE       OCRAM_BASE_S_ADDR
 
 #define CONFIG_HWCONFIG
 #define HWCONFIG_BUFFER_SIZE           128
 
 #define CONFIG_BOOTDELAY               3
 
+#define CONFIG_SYS_QE_FW_ADDR     0x67f40000
+
 #define CONFIG_EXTRA_ENV_SETTINGS      \
        "bootargs=root=/dev/ram0 rw console=ttyS0,115200\0" \
        "fdt_high=0xcfffffff\0"         \
@@ -344,7 +520,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_LONGHELP            /* undef to save memory */
 #define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
 #define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
-#define CONFIG_SYS_PROMPT              "=> "
 #define CONFIG_AUTO_COMPLETE
 #define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
 #define CONFIG_SYS_PBSIZE              \
@@ -361,6 +536,8 @@ unsigned long get_board_ddr_clk(void);
 
 #define CONFIG_SYS_LOAD_ADDR           0x82000000
 
+#define CONFIG_LS102XA_STREAM_ID
+
 /*
  * Stack sizes
  * The stack sizes are set up in start.S using the settings below
@@ -372,17 +549,37 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_INIT_SP_ADDR \
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MONITOR_BASE CONFIG_SPL_TEXT_BASE
+#else
 #define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE    /* start of monitor */
+#endif
 
 /*
  * Environment
  */
 #define CONFIG_ENV_OVERWRITE
 
+#if defined(CONFIG_SD_BOOT)
+#define CONFIG_ENV_OFFSET              0x100000
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_ENV_SIZE                        0x2000
+#elif defined(CONFIG_QSPI_BOOT)
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
+#define CONFIG_ENV_OFFSET              0x100000        /* 1MB */
+#define CONFIG_ENV_SECT_SIZE           0x10000
+#elif defined(CONFIG_NAND_BOOT)
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_ENV_OFFSET              (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#else
 #define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_SECT_SIZE           0x20000 /* 128K (one sector) */
+#endif
 
 #define CONFIG_OF_LIBFDT
 #define CONFIG_OF_BOARD_SETUP
index 3c73af8ac39dc6663fa0db3ed5d91eb9c3601618..66954d0a401aee4e97be648cd5566c4c6b9d6194 100644 (file)
 #define CONFIG_SYS_CLK_FREQ            100000000
 #define CONFIG_DDR_CLK_FREQ            100000000
 
+#ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_SYS_FSL_PBL_PBI board/freescale/ls1021atwr/ls102xa_pbi.cfg
+#endif
+
+#ifdef CONFIG_SD_BOOT
+#define CONFIG_SYS_FSL_PBL_RCW board/freescale/ls1021atwr/ls102xa_rcw_sd.cfg
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_LDSCRIPT    "arch/$(ARCH)/cpu/u-boot-spl.lds"
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_I2C_SUPPORT
+#define CONFIG_SPL_WATCHDOG_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR                0xe8
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS             0x400
+
+#define CONFIG_SPL_TEXT_BASE           0x10000000
+#define CONFIG_SPL_MAX_SIZE            0x1a000
+#define CONFIG_SPL_STACK               0x1001d000
+#define CONFIG_SPL_PAD_TO              0x1c000
+#define CONFIG_SYS_TEXT_BASE           0x82000000
+
+#define CONFIG_SYS_SPL_MALLOC_START    0x80200000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     0x100000
+#define CONFIG_SPL_BSS_START_ADDR      0x80100000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x80000
+#define CONFIG_SYS_MONITOR_LEN         0x80000
+#endif
+
+#ifdef CONFIG_QSPI_BOOT
+#define CONFIG_SYS_TEXT_BASE           0x40010000
+#define CONFIG_SYS_NO_FLASH
+#endif
+
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE           0x67f80000
 #endif
 
 #define CONFIG_FSL_CAAM                        /* Enable CAAM */
 
+#if !defined(CONFIG_SD_BOOT) && !defined(CONFIG_NAND_BOOT) && \
+       !defined(CONFIG_QSPI_BOOT)
+#define CONFIG_U_QE
+#endif
+
 /*
  * IFC Definitions
  */
+#ifndef CONFIG_QSPI_BOOT
 #define CONFIG_FSL_IFC
 #define CONFIG_SYS_FLASH_BASE          0x60000000
 #define CONFIG_SYS_FLASH_BASE_PHYS     CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE_PHYS }
 
 #define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
+#define CONFIG_SYS_WRITE_SWAPPED_DATA
+#endif
 
 /* CPLD */
 
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_I2C_MXC
 
+/* EEPROM */
+#ifndef CONFIG_SD_BOOT
+#define CONFIG_ID_EEPROM
+#define CONFIG_SYS_I2C_EEPROM_NXID
+#define CONFIG_SYS_EEPROM_BUS_NUM              1
+#define CONFIG_SYS_I2C_EEPROM_ADDR             0x53
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         1
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  5
+#endif
+
 /*
  * MMC
  */
 #define CONFIG_FSL_ESDHC
 #define CONFIG_GENERIC_MMC
 
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+
+/* QSPI */
+#ifdef CONFIG_QSPI_BOOT
+#define CONFIG_FSL_QSPI
+#define QSPI0_AMBA_BASE                        0x40000000
+#define FSL_QSPI_FLASH_SIZE            (1 << 24)
+#define FSL_QSPI_FLASH_NUM             2
+
+#define CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_STMICRO
+#endif
+
 /*
  * Video
  */
 #define CONFIG_HAS_ETH2
 #endif
 
+/* PCIe */
+#define CONFIG_PCI             /* Enable PCI/PCIE */
+#define CONFIG_PCIE1           /* PCIE controler 1 */
+#define CONFIG_PCIE2           /* PCIE controler 2 */
+#define CONFIG_PCIE_LAYERSCAPE /* Use common FSL Layerscape PCIe code */
+#define FSL_PCIE_COMPAT "fsl,ls1021a-pcie"
+
 #define CONFIG_CMD_PING
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_MII
 
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_CMDLINE_EDITING
+
+#ifdef CONFIG_QSPI_BOOT
+#undef CONFIG_CMD_IMLS
+#else
 #define CONFIG_CMD_IMLS
+#endif
+
+#define CONFIG_ARMV7_NONSEC
+#define CONFIG_ARMV7_VIRT
+#define CONFIG_PEN_ADDR_BIG_ENDIAN
+#define CONFIG_LS102XA_NS_ACCESS
+#define CONFIG_SMP_PEN_ADDR            0x01ee0200
+#define CONFIG_TIMER_CLK_FREQ          12500000
+#define CONFIG_ARMV7_SECURE_BASE       OCRAM_BASE_S_ADDR
 
 #define CONFIG_HWCONFIG
 #define HWCONFIG_BUFFER_SIZE           128
 #define CONFIG_SYS_LONGHELP            /* undef to save memory */
 #define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
 #define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
-#define CONFIG_SYS_PROMPT              "=> "
 #define CONFIG_AUTO_COMPLETE
 #define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
 #define CONFIG_SYS_PBSIZE              \
 
 #define CONFIG_SYS_LOAD_ADDR           0x82000000
 
+#define CONFIG_LS102XA_STREAM_ID
+
 /*
  * Stack sizes
  * The stack sizes are set up in start.S using the settings below
 #define CONFIG_SYS_INIT_SP_ADDR \
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MONITOR_BASE CONFIG_SPL_TEXT_BASE
+#else
 #define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE    /* start of monitor */
+#endif
+
+#define CONFIG_SYS_QE_FW_ADDR     0x67f40000
 
 /*
  * Environment
  */
 #define CONFIG_ENV_OVERWRITE
 
+#if defined(CONFIG_SD_BOOT)
+#define CONFIG_ENV_OFFSET              0x100000
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_ENV_SIZE                        0x20000
+#elif defined(CONFIG_QSPI_BOOT)
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_ENV_OFFSET              0x100000
+#define CONFIG_ENV_SECT_SIZE           0x10000
+#else
 #define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                        0x20000
 #define CONFIG_ENV_SECT_SIZE           0x20000 /* 128K (one sector) */
+#endif
 
 #define CONFIG_OF_LIBFDT
 #define CONFIG_OF_BOARD_SETUP
diff --git a/include/configs/lwmon.h b/include/configs/lwmon.h
deleted file mode 100644 (file)
index f204587..0000000
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* External logbuffer support */
-#define CONFIG_LOGBUFFER
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC823          1       /* This is a MPC823E CPU        */
-#define CONFIG_LWMON           1       /* ...on a LWMON board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-/* Default Ethernet MAC address */
-#define CONFIG_ETHADDR          00:11:B0:00:00:00
-
-/* The default Ethernet MAC address can be overwritten just once */
-#ifdef CONFIG_ETHADDR
-#define CONFIG_OVERWRITE_ETHADDR_ONCE   1
-#endif
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f()    */
-#define CONFIG_BOARD_POSTCLK_INIT 1    /* Call board_postclk_init()    */
-#define CONFIG_MISC_INIT_R     1       /* Call misc_init_r()           */
-
-#define CONFIG_LCD             1       /* use LCD controller ...       */
-#define CONFIG_MPC8XX_LCD
-#define CONFIG_HLD1045         1       /* ... with a HLD1045 display   */
-
-#define CONFIG_LCD_LOGO                1       /* print our logo on the LCD    */
-#define CONFIG_LCD_INFO                1       /* ... and some board info      */
-#define        CONFIG_SPLASH_SCREEN            /* ... with splashscreen support*/
-
-#define CONFIG_8xx_CONS_SMC2   1       /* Console is on SMC2           */
-#define CONFIG_8xx_CONS_SCC2   1       /* Console is on SCC2           */
-
-#define CONFIG_BAUDRATE                115200  /* with watchdog >= 38400 needed */
-
-#define CONFIG_BOOTDELAY       1       /* autoboot after 1 second      */
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-/* pre-boot commands */
-#define        CONFIG_PREBOOT          "setenv bootdelay 15"
-
-#undef CONFIG_BOOTARGS
-
-/* POST support */
-#define CONFIG_POST            (CONFIG_SYS_POST_CACHE     | \
-                                CONFIG_SYS_POST_WATCHDOG | \
-                                CONFIG_SYS_POST_RTC       | \
-                                CONFIG_SYS_POST_MEMORY   | \
-                                CONFIG_SYS_POST_CPU       | \
-                                CONFIG_SYS_POST_UART      | \
-                                CONFIG_SYS_POST_ETHER    | \
-                                CONFIG_SYS_POST_I2C       | \
-                                CONFIG_SYS_POST_SPI       | \
-                                CONFIG_SYS_POST_USB       | \
-                                CONFIG_SYS_POST_SPR       | \
-                                CONFIG_SYS_POST_SYSMON)
-
-/*
- * Keyboard commands:
- * # = 0x28 = ENTER :          enable bootmessages on LCD
- * 2 = 0x3A+0x3C = F1 + F3 :   enable update mode
- * 3 = 0x3C+0x3F = F3 + F6 :   enable test mode
- */
-
-#define CONFIG_BOOTCOMMAND "source 40040000;saveenv"
-
-/*     "gatewayip=10.8.211.250\0"                                      \ */
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "kernel_addr=40080000\0"                                        \
-       "ramdisk_addr=40280000\0"                                       \
-       "netmask=255.255.192.0\0"                                       \
-       "serverip=10.8.2.101\0"                                         \
-       "ipaddr=10.8.57.0\0"                                            \
-       "magic_keys=#23\0"                                              \
-       "key_magic#=28\0"                                               \
-       "key_cmd#=setenv addfb setenv 'bootargs $bootargs console=tty0'\0" \
-       "key_magic2=3A+3C\0"                                            \
-       "key_cmd2=echo *** Entering Update Mode ***;"                   \
-               "if fatload ide 0:3 10000 update.scr;"                  \
-                       "then source 10000;"                            \
-                       "else echo *** UPDATE FAILED ***;"              \
-               "fi\0"                                                  \
-       "key_magic3=3C+3F\0"                                            \
-       "key_cmd3=echo *** Entering Test Mode ***;"                     \
-               "setenv add_misc 'setenv bootargs $bootargs testmode'\0" \
-       "nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath\0" \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addfb=setenv bootargs $bootargs console=ttyS1,$baudrate\0"     \
-       "addip=setenv bootargs $bootargs "                              \
-               "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname::off " \
-               "panic=1\0"                                             \
-       "add_wdt=setenv bootargs $bootargs $wdt_args\0"                 \
-       "add_misc=setenv bootargs $bootargs runmode\0"                  \
-       "flash_nfs=run nfsargs addip add_wdt addfb add_misc;"           \
-               "bootm $kernel_addr\0"                                  \
-       "flash_self=run ramargs addip add_wdt addfb add_misc;"          \
-               "bootm $kernel_addr $ramdisk_addr\0"                    \
-       "net_nfs=tftp 100000 /tftpboot/uImage.lwmon;"                   \
-               "run nfsargs addip add_wdt addfb;bootm\0"               \
-       "rootpath=/opt/eldk/ppc_8xx\0"                                  \
-       "load=tftp 100000 /tftpboot/u-boot.bin\0"                       \
-       "update=protect off 1:0;era 1:0;cp.b 100000 40000000 $filesize\0" \
-       "wdt_args=wdt_8xx=off\0"                                        \
-       "verify=no"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#define        CONFIG_WATCHDOG         1       /* watchdog enabled             */
-#define        CONFIG_SYS_WATCHDOG_FREQ       (CONFIG_SYS_HZ / 20)
-
-#undef CONFIG_STATUS_LED               /* Status LED disabled          */
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      93000   /* 93 kHz is supposed to work */
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL         0x00000020      /* PB 26 */
-#define PB_SDA         0x00000010      /* PB 27 */
-
-#define I2C_INIT       (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE     (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE   (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ       ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-
-
-#define CONFIG_RTC_PCF8563             /* use Philips PCF8563 RTC      */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_BMP
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-#ifdef CONFIG_POST
-#define CONFIG_CMD_DIAG
-#endif
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#define        CONFIG_SYS_HUSH_PARSER          1       /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00F00000      /* 1 ... 15MB in DRAM   */
-
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address */
-
-#define CONFIG_SYS_PIO_MODE            0       /* IDE interface in PIO Mode 0  */
-
-/*
- * When the watchdog is enabled, output must be fast enough in Linux.
- */
-#ifdef CONFIG_WATCHDOG
-#define CONFIG_SYS_BAUDRATE_TABLE      {               38400, 57600, 115200 }
-#endif
-
-/*----------------------------------------------------------------------*/
-#define CONFIG_MODEM_SUPPORT   1       /* enable modem initialization stuff */
-#undef CONFIG_MODEM_SUPPORT_DEBUG
-
-#define        CONFIG_MODEM_KEY_MAGIC  "3C+3D" /* press F3 + F4 keys to enable modem */
-#define        CONFIG_POST_KEY_MAGIC   "3C+3E" /* press F3 + F5 keys to force POST */
-#if 0
-#define        CONFIG_AUTOBOOT_KEYED           /* Enable "password" protection */
-#define CONFIG_AUTOBOOT_PROMPT \
-       "\nEnter password - autoboot in %d sec...\n", bootdelay
-#define CONFIG_AUTOBOOT_DELAY_STR      "  "    /* "password"   */
-#endif
-/*----------------------------------------------------------------------*/
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#if defined(DEBUG) || defined(CONFIG_CMD_IDE)
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define CONFIG_SYS_MONITOR_LEN         (128 << 10)     /* Reserve 128 kB for Monitor   */
-#endif
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    180000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    600     /* Timeout for Flash Write (in ms)      */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-#define CONFIG_SYS_FLASH_BUFFER_WRITE_TOUT     2048    /* Timeout for Flash Buffer Write (in ms)       */
-/* Buffer size.
-   We have two flash devices connected in parallel.
-   Each device incorporates a Write Buffer of 32 bytes.
- */
-#define CONFIG_SYS_FLASH_BUFFER_SIZE   (2*32)
-
-/* Put environment in flash which is much faster to boot than using the EEPROM */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR            0x40040000  /* Address    of Environment Sector     */
-#define CONFIG_ENV_SIZE                0x2000  /* Total Size of Environment            */
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* we have BIG sectors only :-(         */
-
-/*-----------------------------------------------------------------------
- * I2C/EEPROM Configuration
- */
-
-#define CONFIG_SYS_I2C_AUDIO_ADDR      0x28    /* Audio volume control                 */
-#define CONFIG_SYS_I2C_SYSMON_ADDR     0x2E    /* LM87 System Monitor                  */
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51    /* PCF8563 RTC                          */
-#define CONFIG_SYS_I2C_POWER_A_ADDR    0x52    /* PCMCIA/USB power switch, channel A   */
-#define CONFIG_SYS_I2C_POWER_B_ADDR    0x53    /* PCMCIA/USB power switch, channel B   */
-#define CONFIG_SYS_I2C_KEYBD_ADDR      0x56    /* PIC LWE keyboard                     */
-#define CONFIG_SYS_I2C_PICIO_ADDR      0x57    /* PIC IO Expander                      */
-
-#undef CONFIG_USE_FRAM                 /* Use FRAM instead of EEPROM   */
-
-#ifdef CONFIG_USE_FRAM /* use FRAM */
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x55    /* FRAM FM24CL64                */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
-#else                  /* use EEPROM */
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x58    /* EEPROM AT24C164              */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* takes up to 10 msec  */
-#endif /* CONFIG_USE_FRAM */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-
-/* List of I2C addresses to be verified by POST */
-#ifdef CONFIG_USE_FRAM
-#define CONFIG_SYS_POST_I2C_ADDRS      {/* CONFIG_SYS_I2C_AUDIO_ADDR, */ \
-                                        CONFIG_SYS_I2C_SYSMON_ADDR,    \
-                                        CONFIG_SYS_I2C_RTC_ADDR,       \
-                                        CONFIG_SYS_I2C_POWER_A_ADDR,   \
-                                        CONFIG_SYS_I2C_POWER_B_ADDR,   \
-                                        CONFIG_SYS_I2C_KEYBD_ADDR,     \
-                                        CONFIG_SYS_I2C_PICIO_ADDR,     \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR,    \
-                                       }
-#else  /* Use EEPROM - which show up on 8 consequtive addresses */
-#define CONFIG_SYS_POST_I2C_ADDRS      {/* CONFIG_SYS_I2C_AUDIO_ADDR, */ \
-                                        CONFIG_SYS_I2C_SYSMON_ADDR,    \
-                                        CONFIG_SYS_I2C_RTC_ADDR,       \
-                                        CONFIG_SYS_I2C_POWER_A_ADDR,   \
-                                        CONFIG_SYS_I2C_POWER_B_ADDR,   \
-                                        CONFIG_SYS_I2C_KEYBD_ADDR,     \
-                                        CONFIG_SYS_I2C_PICIO_ADDR,     \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+0,  \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+1,  \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+2,  \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+3,  \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+4,  \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+5,  \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+6,  \
-                                        CONFIG_SYS_I2C_EEPROM_ADDR+7,  \
-                                       }
-#endif /* CONFIG_USE_FRAM */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if 0 && defined(CONFIG_WATCHDOG)      /* LWMON uses external MAX706TESA WD */
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-/* EARB, DBGC and DBPC are initialised by the HCW */
-/* => 0x000000C0 */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_GB5E)
-/*#define CONFIG_SYS_SIUMCR    (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01) */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit, set PLL multiplication factor !
- */
-/* 0x00405000 */
-#define CONFIG_SYS_PLPRCR_MF   4       /* (4+1) * 13.2 = 66 MHz Clock */
-#define CONFIG_SYS_PLPRCR                                                      \
-               (       (CONFIG_SYS_PLPRCR_MF << PLPRCR_MF_SHIFT) |             \
-                       PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST |    \
-                       /*PLPRCR_CSRC|*/ PLPRCR_LPM_NORMAL |            \
-                       PLPRCR_CSR    /*| PLPRCR_LOLRE|PLPRCR_FIOPD*/   \
-               )
-
-#define CONFIG_8xx_GCLK_FREQ   ((CONFIG_SYS_PLPRCR_MF+1)*13200000)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-/* 0x01800000 */
-#define CONFIG_SYS_SCCR        (SCCR_COM00     | /*SCCR_TBS|*/         \
-                        SCCR_RTDIV     |   SCCR_RTSEL    |     \
-                        /*SCCR_CRQEN|*/  /*SCCR_PRQEN|*/       \
-                        SCCR_EBDF00 |   SCCR_DFSYNC00 |        \
-                        SCCR_DFBRG00   |   SCCR_DFNL000  |     \
-                        SCCR_DFNH000   |   SCCR_DFLCD100 |     \
-                        SCCR_DFALCD01)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-/* 0x00C3 => 0x0003 */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration Register               19-4
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR 0x0000
-
-/*-----------------------------------------------------------------------
- * RMDS - RISC Microcode Development Support Control Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMDS 0
-
-/*-----------------------------------------------------------------------
- *
- * Interrupt Levels
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_CPM_INTERRUPT       13      /* SIU_LEVEL6   */
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0x50000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0x54000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0x58000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0x5C000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define CONFIG_IDE_8xx_PCCARD  1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-#define CONFIG_SUPPORT_VFAT            /* enable VFAT support */
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH) - second Flash bank optional
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x41000000      /* FLASH bank #1        */
-
-/* used to re-map FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0xFF000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFF000000      /* OR addr mask */
-
-/* FLASH timing: ACS = 00, TRLX = 0, CSNT = 1, SCY = 8, EHTR = 0       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_SCY_8_CLK)
-
-#define CONFIG_SYS_OR0_REMAP   ( CONFIG_SYS_REMAP_OR_AM | OR_CSNT_SAM | OR_ACS_DIV1 | OR_BI | \
-                               CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | OR_ACS_DIV1 | OR_BI | \
-                               CONFIG_SYS_OR_TIMING_FLASH)
-/* 16 bit, bank valid */
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_32 | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_PS_32 | BR_V )
-
-/*
- * BR3/OR3: SDRAM
- *
- * Multiplexed addresses, GPL5 output to GPL5_A (don't care)
- */
-#define SDRAM_BASE3_PRELIM     0x00000000      /* SDRAM bank */
-#define SDRAM_PRELIM_OR_AM     0xF0000000      /* map 256 MB (>SDRAM_MAX_SIZE!) */
-#define SDRAM_TIMING           OR_SCY_0_CLK    /* SDRAM-Timing */
-
-#define SDRAM_MAX_SIZE         0x08000000      /* max 128 MB SDRAM */
-
-#define CONFIG_SYS_OR3_PRELIM  (SDRAM_PRELIM_OR_AM | OR_CSNT_SAM | OR_G5LS | SDRAM_TIMING )
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/*
- * BR5/OR5: Touch Panel
- *
- * AM=0xFFC00 ATM=0 CSNT/SAM=0 ACS/G5LA/G5LS=3 BIH=1 SCY=0 SETA=0 TRLX=0 EHTR=0
- */
-#define TOUCHPNL_BASE          0x20000000
-#define TOUCHPNL_OR_AM         0xFFFF8000
-#define TOUCHPNL_TIMING                OR_SCY_0_CLK
-
-#define CONFIG_SYS_OR5_PRELIM  (TOUCHPNL_OR_AM | OR_CSNT_SAM | OR_ACS_DIV1 | OR_BI | \
-                        TOUCHPNL_TIMING )
-#define CONFIG_SYS_BR5_PRELIM  ((TOUCHPNL_BASE & BR_BA_MSK) | BR_PS_32 | BR_V )
-
-#define        CONFIG_SYS_MEMORY_75
-#undef CONFIG_SYS_MEMORY_7E
-#undef CONFIG_SYS_MEMORY_8E
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MPTPR       0x200
-
-/*
- * MAMR settings for SDRAM
- */
-
-#define CONFIG_SYS_MAMR_8COL   0x80802114
-#define CONFIG_SYS_MAMR_9COL   0x80904114
-
-/*
- * MAR setting for SDRAM
- */
-#define CONFIG_SYS_MAR         0x00000088
-
-#endif /* __CONFIG_H */
index 58e72956908188b0c98991af83d7519e12f7782b..d43db5288e76c6a822087c7b10ae4a9e538848fd 100644 (file)
 #define CONFIG_SPL_TEXT_BASE           0xffff0000 /* last 64 KiB for SPL */
 #define CONFIG_SYS_SPL_MAX_LEN         (64 << 10)
 #define CONFIG_UBOOT_PAD_TO            458752  /* decimal for 'dd' */
-#define        CONFIG_SPL_START_S_PATH "arch/powerpc/cpu/ppc4xx"
-#define CONFIG_SPL_LDSCRIPT    "arch/powerpc/cpu/ppc4xx/u-boot-spl.lds"
 #define CONFIG_SPL_LIBCOMMON_SUPPORT   /* image.c */
 #define CONFIG_SPL_LIBGENERIC_SUPPORT  /* string.c */
 #define CONFIG_SPL_SERIAL_SUPPORT
index efe770b81b394dad46a2498e9c4574c273477ed9..5c209913e544e01ff713c1ee98c15d7e3acf638e 100644 (file)
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
        "consdev=ttyAMA0\0"                                             \
        "baudrate=115200\0"                                             \
+       "bootscript=boot.scr\0"                                         \
        "bootdev=/dev/mmcblk0p2\0"                                      \
        "rootdev=/dev/mmcblk0p3\0"                                      \
        "netdev=eth0\0"                                                 \
diff --git a/include/configs/mcc200.h b/include/configs/mcc200.h
deleted file mode 100644 (file)
index a317782..0000000
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * (C) Copyright 2006-2008
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC5200
-#define CONFIG_MCC200          1       /* MCC200 board */
-
-/*
- * Valid values for CONFIG_SYS_TEXT_BASE are:
- * 0xFC000000  boot low (standard configuration)
- * 0xFFF00000  boot high
- * 0x00100000  boot from RAM (for testing only)
- */
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xFC000000
-#endif
-
-#define CONFIG_SYS_MPC5XXX_CLKIN       33000000 /* ... running at 33MHz                */
-
-#define CONFIG_MISC_INIT_R
-
-#define CONFIG_HIGH_BATS       1       /* High BATs supported                  */
-
-/*
- * Serial console configuration
- *
- *  To select console on the one of 8 external UARTs,
- * define CONFIG_QUART_CONSOLE as 1, 2, 3, or 4 for the first Quad UART,
- * or as 5, 6, 7, or 8 for the second Quad UART.
- * COM11, COM12, COM13, COM14 are located on the second Quad UART.
- *
- *  CONFIG_PSC_CONSOLE must be undefined in this case.
- */
-#if !defined(CONFIG_PRS200)
-/* MCC200 configuration: */
-#ifdef CONFIG_CONSOLE_COM12
-#define CONFIG_QUART_CONSOLE   6       /* console is on UARTF of QUART2        */
-#else
-#define CONFIG_QUART_CONSOLE   8       /* console is on UARTH of QUART2        */
-#endif
-#else
-/* PRS200 configuration: */
-#undef CONFIG_QUART_CONSOLE
-#endif /* CONFIG_PRS200 */
-/*
- *  To select console on PSC1, define CONFIG_PSC_CONSOLE as 1
- * and undefine CONFIG_QUART_CONSOLE.
- */
-#if !defined(CONFIG_PRS200)
-/* MCC200 configuration: */
-#define CONFIG_PSC_CONSOLE     1       /* PSC1 may be COM */
-#define CONFIG_PSC_CONSOLE2    2       /* PSC2 is PSoC */
-#else
-/* PRS200 configuration: */
-#define CONFIG_PSC_CONSOLE     1       /* console is on PSC1           */
-#endif
-#define CONFIG_BAUDRATE                115200
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-#define CONFIG_MII             1
-
-#define CONFIG_DOS_PARTITION
-
-/* USB */
-#define CONFIG_USB_OHCI
-#define CONFIG_USB_STORAGE
-/* automatic software updates (see board/mcc200/auto_update.c) */
-#define CONFIG_AUTO_UPDATE 1
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_USB
-
-#undef CONFIG_CMD_NET
-#undef CONFIG_CMD_NFS
-
-/*
- * Autobooting
- */
-#define CONFIG_BOOTDELAY       1       /* autoboot after 1 second */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#ifdef CONFIG_PRS200
-# define CONFIG_SYS__BOARDNAME         "prs200"
-# define CONFIG_SYS__LINUX_CONSOLE     "ttyS0"
-#else
-# define CONFIG_SYS__BOARDNAME         "mcc200"
-# define CONFIG_SYS__LINUX_CONSOLE     "ttyEU5"
-#endif
-
-/* Network */
-#define CONFIG_ETHADDR 00:17:17:ff:00:00
-#define CONFIG_IPADDR  10.76.9.29
-#define CONFIG_SERVERIP        10.76.9.1
-
-#include <version.h> /* For U-Boot version */
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "ubootver=" U_BOOT_VERSION "\0"                                 \
-       "netdev=eth0\0"                                                 \
-       "hostname=" CONFIG_SYS__BOARDNAME "\0"                          \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/mtdblock2 "                  \
-               "rootfstype=cramfs\0"                                   \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addcons=setenv bootargs ${bootargs} "                          \
-               "console=${console},${baudrate} "                       \
-               "ubootver=${ubootver} board=${board}\0"                 \
-       "flash_nfs=run nfsargs addip addcons;"                          \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip addcons;"                         \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};"                              \
-               "run nfsargs addip addcons;bootm\0"                     \
-       "console=" CONFIG_SYS__LINUX_CONSOLE "\0"                               \
-       "rootpath=/opt/eldk/ppc_6xx\0"                                  \
-       "bootfile=/tftpboot/" CONFIG_SYS__BOARDNAME "/uImage\0"         \
-       "load=tftp 200000 /tftpboot/" CONFIG_SYS__BOARDNAME "/u-boot.bin\0"     \
-       "text_base=" __stringify(CONFIG_SYS_TEXT_BASE) "\0"             \
-       "kernel_addr=0xFC0C0000\0"                                      \
-       "update=protect off ${text_base} +${filesize};"                 \
-               "era ${text_base} +${filesize};"                        \
-               "cp.b 200000 ${text_base} ${filesize}\0"                \
-       "unlock=yes\0"                                                  \
-       ""
-
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_SYS_HUSH_PARSER         1       /* use "hush" command parser    */
-
-/*
- * IPB Bus clocking configuration.
- */
-#define CONFIG_SYS_IPBCLK_EQUALS_XLBCLK                /* define for 133MHz speed */
-
-/*
- * I2C configuration
- */
-#define CONFIG_HARD_I2C                1       /* I2C with hardware support */
-#define CONFIG_SYS_I2C_MODULE          2       /* Select I2C module #1 or #2 */
-
-#define CONFIG_SYS_I2C_SPEED           100000 /* 100 kHz */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/*
- * Flash configuration (8,16 or 32 MB)
- * TEXT base always at 0xFFF00000
- * ENV_ADDR always at  0xFFF40000
- * FLASH_BASE at 0xFC000000 for 64 MB (only 32MB are supported, not enough addr lines!!!)
- *              0xFE000000 for 32 MB
- *              0xFF000000 for 16 MB
- *              0xFF800000 for  8 MB
- */
-#define CONFIG_SYS_FLASH_BASE          0xfc000000
-#define CONFIG_SYS_FLASH_SIZE          0x04000000
-
-#define CONFIG_SYS_FLASH_CFI                           /* The flash is CFI compatible  */
-#define CONFIG_FLASH_CFI_DRIVER                        /* Use common CFI driver        */
-
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* hardware flash protection            */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-#define CONFIG_SYS_FLASH_QUIET_TEST    1       /* don't warn upon unknown flash        */
-
-#define CONFIG_ENV_IS_IN_FLASH 1       /* use FLASH for environment vars       */
-
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* size of one complete sector  */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-#define CONFIG_ENV_OVERWRITE   1       /* allow modification of vendor params */
-
-#if CONFIG_SYS_TEXT_BASE == CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_LOWBOOT     1
-#endif
-
-/*
- * Memory map
- */
-#define CONFIG_SYS_MBAR                0xf0000000
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_DEFAULT_MBAR        0x80000000
-
-/* Use SRAM until RAM will be available */
-#define CONFIG_SYS_INIT_RAM_ADDR       MPC5XXX_SRAM
-#define CONFIG_SYS_INIT_RAM_SIZE       MPC5XXX_SRAM_SIZE       /* Size of used area in DPRAM */
-
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#   define CONFIG_SYS_RAMBOOT          1
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (512 << 10)     /* Reserve 512 kB for malloc()  */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*
- * Ethernet configuration
- */
-/* #define CONFIG_MPC5xxx_FEC  1 */
-/* #define CONFIG_MPC5xxx_FEC_MII100 */
-/*
- * Define CONFIG_MPC5xxx_FEC_MII10 to force FEC at 10Mb
- */
-/* #define CONFIG_MPC5xxx_FEC_MII10 */
-#define CONFIG_PHY_ADDR                1
-
-/*
- * LCD Splash Screen
- */
-#if !defined(CONFIG_PRS200)
-#define CONFIG_LCD             1
-#define CONFIG_PROGRESSBAR 1
-#endif
-
-#if defined(CONFIG_LCD)
-#define CONFIG_SPLASH_SCREEN   1
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV   1
-#define LCD_BPP                        LCD_MONOCHROME
-#endif
-
-/*
- * GPIO configuration
- */
-/* 0x10000004 = 32MB SDRAM */
-/* 0x90000004 = 64MB SDRAM */
-#if defined(CONFIG_LCD)
-/* set PSC2 in UART mode */
-#define CONFIG_SYS_GPS_PORT_CONFIG     0x00000044
-#else
-#define CONFIG_SYS_GPS_PORT_CONFIG     0x00000004
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size    */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00f00000      /* 1 ... 15 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC5xxx CPUs                     */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value        */
-#endif
-
-/*
- * Various low-level settings
- */
-#define CONFIG_SYS_HID0_INIT           HID0_ICE | HID0_ICFI
-#define CONFIG_SYS_HID0_FINAL          HID0_ICE
-
-#define CONFIG_SYS_BOOTCS_START        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_BOOTCS_SIZE         CONFIG_SYS_FLASH_SIZE
-#define CONFIG_SYS_BOOTCS_CFG          0x0004fb00
-#define CONFIG_SYS_CS0_START           CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_CS0_SIZE            CONFIG_SYS_FLASH_SIZE
-
-/* Quad UART @0x80000000 (MBAR is relocated to 0xF0000000) */
-#define CONFIG_SYS_CS2_START           0x80000000
-#define CONFIG_SYS_CS2_SIZE            0x00001000
-#define CONFIG_SYS_CS2_CFG             0x1d300
-
-/* Second Quad UART @0x80010000 */
-#define CONFIG_SYS_CS1_START           0x80010000
-#define CONFIG_SYS_CS1_SIZE            0x00001000
-#define CONFIG_SYS_CS1_CFG             0x1d300
-
-/* Leica - build revision resistors */
-/*
-#define CONFIG_SYS_CS3_START           0x80020000
-#define CONFIG_SYS_CS3_SIZE            0x00000004
-#define CONFIG_SYS_CS3_CFG             0x1d300
-*/
-
-/*
- *  Select one of quarts as a default
- * console. If undefined - PSC console
- * wil be default
- */
-#define CONFIG_SYS_CS_BURST            0x00000000
-#define CONFIG_SYS_CS_DEADCYCLE        0x33333333
-
-#define CONFIG_SYS_RESET_ADDRESS       0xff000000
-
-/*
- * QUART Expanders support
- */
-#if defined(CONFIG_QUART_CONSOLE)
-/*
- * We'll use NS16550 chip routines,
- */
-#define CONFIG_SYS_NS16550             1
-#define CONFIG_SYS_NS16550_SERIAL      1
-#define CONFIG_CONS_INDEX      1
-/*
- *  To achieve necessary offset on SC16C554
- * A0-A2 (register select) pins with NS16550
- * functions (in struct NS16550), REG_SIZE
- * should be 4, because A0-A2 pins are connected
- * to DA2-DA4 address bus lines.
- */
-#define CONFIG_SYS_NS16550_REG_SIZE    4
-/*
- * LocalPlus Bus already inited in cpu_init_f(),
- * so can work with QUART's chip selects.
- * One of four SC16C554 UARTs is selected with
- * A3-A4 (DA5-DA6) lines.
- */
-#if (CONFIG_QUART_CONSOLE > 0) && (CONFIG_QUART_CONSOLE < 5) && !defined(CONFIG_PRS200)
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_CS2_START | (CONFIG_QUART_CONSOLE - 1)<<5)
-#elif (CONFIG_QUART_CONSOLE > 4) && (CONFIG_QUART_CONSOLE < 9)
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_CS1_START | (CONFIG_QUART_CONSOLE - 5)<<5)
-#else
-#error "Wrong QUART expander number."
-#endif
-
-/*
- * SC16C554 chip's external crystal oscillator frequency
- * is 7.3728 MHz
- */
-#define CONFIG_SYS_NS16550_CLK         7372800
-#endif /* CONFIG_QUART_CONSOLE */
-/*-----------------------------------------------------------------------
- * USB stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_USB_CLOCK       0x0001BBBB
-#define CONFIG_USB_CONFIG      0x00005000
-
-#define CONFIG_AUTOBOOT_KEYED          /* use key strings to stop autoboot     */
-#define CONFIG_AUTOBOOT_STOP_STR       "432"
-#define CONFIG_SILENT_CONSOLE  1
-
-#endif /* __CONFIG_H */
index b775ebd0edef662ed6dbf87143f02151edab372a..26eb2203540f350b608e392817dc115f8844af28 100644 (file)
 #define CONFIG_SPL_BSS_MAX_SIZE                0x80000
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 /* NAND boot config */
index 86ce5f2397e0d515dee632b2e93bac9c78d029db..955d0e278ac6af19b86a72847a87358478ccee39 100644 (file)
 #ifdef CONFIG_SYS_USE_DATAFLASH
 # define CONFIG_ATMEL_DATAFLASH_SPI
 # define CONFIG_HAS_DATAFLASH
-# define CONFIG_SYS_SPI_WRITE_TOUT             (5 * CONFIG_SYS_HZ)
 # define CONFIG_SYS_MAX_DATAFLASH_BANKS                1
 # define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0   0xC0000000      /* CS0 */
 # define AT91_SPI_CLK                          15000000
diff --git a/include/configs/muas3001.h b/include/configs/muas3001.h
deleted file mode 100644 (file)
index 7343c94..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * (C) Copyright 2008
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MUAS3001                1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFF000000
-
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-/* Do boardspecific init */
-#define CONFIG_BOARD_EARLY_INIT_R       1
-
-/* enable Watchdog */
-#define CONFIG_WATCHDOG                1
-
-/*
- * Select serial console configuration
- *
- * If either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- */
-#define        CONFIG_CONS_ON_SMC              /* Console is on SMC         */
-#undef  CONFIG_CONS_ON_SCC             /* It's not on SCC           */
-#undef CONFIG_CONS_NONE                /* It's not on external UART */
-#if defined(CONFIG_MUAS_DEV_BOARD)
-#define CONFIG_CONS_INDEX      2       /* SMC2 is used for console  */
-#else
-#define CONFIG_CONS_INDEX      1       /* SMC1 is used for console  */
-#endif
-
-/*
- * Select ethernet configuration
- *
- * If either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected,
- * then CONFIG_ETHER_INDEX must be set to the channel number (1-4 for
- * SCC, 1-3 for FCC)
- *
- * If CONFIG_ETHER_NONE is defined, then either the ethernet routines
- * must be defined elsewhere (as for the console), or CONFIG_CMD_NET
- * must be unset.
- */
-#undef CONFIG_ETHER_ON_SCC             /* Ethernet is not on SCC */
-#define        CONFIG_ETHER_ON_FCC             /* Ethernet is on FCC     */
-#undef CONFIG_ETHER_NONE               /* No external Ethernet   */
-
-#define CONFIG_ETHER_INDEX     1
-#define CONFIG_ETHER_ON_FCC1
-#define CONFIG_HAS_ETH0
-#define FCC_ENET
-
-/*
- * - Rx-CLK is CLK11
- * - Tx-CLK is CLK12
- */
-# define CONFIG_SYS_CMXFCR_VALUE1      (CMXFCR_RF1CS_CLK11 | CMXFCR_TF1CS_CLK12)
-# define CONFIG_SYS_CMXFCR_MASK1       (CMXFCR_FC1 | CMXFCR_RF1CS_MSK | CMXFCR_TF1CS_MSK)
-/*
- * - RAM for BD/Buffers is on the 60x Bus (see 28-13)
- */
-# define CONFIG_SYS_CPMFCR_RAMTYPE     (0)
-/* know on local Bus */
-/* define CONFIG_SYS_CPMFCR_RAMTYPE    (CPMFCR_DTB | CPMFCR_BDB) */
-/*
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE|FCC_PSMR_LPB)
-
-#define CONFIG_MII                     /* MII PHY management           */
-#define CONFIG_BITBANGMII              /* bit-bang MII PHY management  */
-# define CONFIG_SYS_PHY_ADDR           1
-/*
- * GPIO pins used for bit-banged MII communications
- */
-#define MDIO_PORT      0               /* Port A */
-#define MDIO_DECLARE   volatile ioport_t *iop = ioport_addr ( \
-                               (immap_t *) CONFIG_SYS_IMMR, MDIO_PORT )
-#define MDC_DECLARE    MDIO_DECLARE
-
-
-#define CONFIG_SYS_MDIO_PIN    0x00200000      /* PA10 */
-#define CONFIG_SYS_MDC_PIN     0x00400000      /* PA9  */
-
-#define MDIO_ACTIVE    (iop->pdir |=  CONFIG_SYS_MDIO_PIN)
-#define MDIO_TRISTATE  (iop->pdir &= ~CONFIG_SYS_MDIO_PIN)
-#define MDIO_READ      ((iop->pdat &  CONFIG_SYS_MDIO_PIN) != 0)
-
-#define MDIO(bit)      if(bit) iop->pdat |=  CONFIG_SYS_MDIO_PIN; \
-                       else    iop->pdat &= ~CONFIG_SYS_MDIO_PIN
-
-#define MDC(bit)       if(bit) iop->pdat |=  CONFIG_SYS_MDC_PIN; \
-                       else    iop->pdat &= ~CONFIG_SYS_MDC_PIN
-
-#define MIIDELAY       udelay(1)
-
-#ifndef CONFIG_8260_CLKIN
-#define CONFIG_8260_CLKIN      66000000        /* in Hz */
-#endif
-
-#define CONFIG_BAUDRATE                115200
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DTT
-#define CONFIG_CMD_ECHO
-#define CONFIG_CMD_IMMAP
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_I2C
-
-/*
- * Default environment settings
- */
-#define CONFIG_EXTRA_ENV_SETTINGS                                              \
-       "netdev=eth0\0"                                                         \
-       "u-boot_addr_r=100000\0"                                                \
-       "kernel_addr_r=200000\0"                                                \
-       "fdt_addr_r=400000\0"                                                   \
-       "rootpath=/opt/eldk/ppc_6xx\0"                                          \
-       "u-boot=muas3001/u-boot.bin\0"                                          \
-       "bootfile=muas3001/uImage\0"                                            \
-       "fdt_file=muas3001/muas3001.dtb\0"                                      \
-       "ramdisk_file=uRamdisk\0"                                               \
-       "load=tftp ${u-boot_addr_r} ${u-boot}\0"                                \
-       "update=prot off ff000000 ff03ffff; era ff000000 ff03ffff; "            \
-               "cp.b ${u-boot_addr_r} ff000000 ${filesize};"                   \
-               "prot on ff000000 ff03ffff\0"                                   \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                            \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                             \
-               "nfsroot=${serverip}:${rootpath}\0"                             \
-       "addcons=setenv bootargs ${bootargs} console=ttyCPM0,${baudrate}\0"     \
-       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"                      \
-       "addip=setenv bootargs ${bootargs} "                                    \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:"                        \
-               "${netmask}:${hostname}:${netdev}:off panic=1\0"                \
-       "net_nfs=tftp ${kernel_addr_r} ${bootfile}; "                           \
-               "tftp ${fdt_addr_r} ${fdt_file}; run nfsargs addip addcons;"    \
-               "bootm ${kernel_addr_r} - ${fdt_addr_r}\0"                      \
-       "net_self=tftp ${kernel_addr_r} ${bootfile}; "                          \
-               "tftp ${fdt_addr_r} ${fdt_file}; "                              \
-               "tftp ${ramdisk_addr} ${ramdisk_file}; "                        \
-               "run ramargs addip; "                                           \
-               "bootm ${kernel_addr_r} ${ramdisk_addr} ${fdt_addr_r}\0"        \
-       "ramdisk_addr=ff210000\0"                                               \
-       "kernel_addr=ff050000\0"                                                \
-       "fdt_addr=ff200000\0"                                                   \
-       "flash_self=run ramargs addip addcons;bootm ${kernel_addr}"             \
-       " ${ramdisk_addr} ${fdt_addr}\0"                                        \
-       "updateramdisk=era ${ramdisk_addr} +1f0000;tftpb ${kernel_addr_r}"      \
-       " ${ramdisk_file};"                                                     \
-       "cp.b ${kernel_addr_r} ${ramdisk_addr} ${filesize}\0"                   \
-       "updatekernel=era ${kernel_addr} +1b0000;tftpb ${kernel_addr_r}"        \
-       " ${bootfile};"                                                         \
-       "cp.b ${kernel_addr_r} ${kernel_addr} ${filesize}\0"                    \
-       "updatefdt=era ${fdt_addr} +10000;tftpb ${fdt_addr_r} ${fdt_file};"     \
-       "cp.b ${fdt_addr_r} ${fdt_addr} ${filesize}\0"                          \
-       ""
-
-#define CONFIG_BOOTCOMMAND     "run net_nfs"
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory     */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size  */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size  */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size  */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size  */
-
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x00f00000      /* 1 ... 15 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#define CONFIG_SYS_FLASH_SIZE          32
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max num of flash banks       */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max num of sects on one chip */
-
-#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256KB for Monitor */
-
-#define CONFIG_ENV_IS_IN_FLASH
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SECT_SIZE   0x10000
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#endif /* CONFIG_ENV_IS_IN_FLASH */
-
-/*
- * I2C Bus
- */
-#define CONFIG_HARD_I2C                1       /* To enable I2C support        */
-#define CONFIG_SYS_I2C_SPEED           100000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-#define        CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
-/* I2C SYSMON (LM75, AD7414 is almost compatible)                       */
-#define        CONFIG_DTT_LM75         1       /* ON Semi's LM75               */
-#define        CONFIG_DTT_SENSORS      {0}     /* Sensor addresses             */
-#define        CONFIG_SYS_DTT_MAX_TEMP 70
-#define        CONFIG_SYS_DTT_LOW_TEMP -30
-#define        CONFIG_SYS_DTT_HYSTERESIS       3
-
-#define CONFIG_SYS_IMMR                0xF0000000
-#define CONFIG_SYS_DEFAULT_IMMR        0x0F010000
-
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/* Hard reset configuration word */
-#define CONFIG_SYS_HRCW_MASTER         0x0E028200      /* BPS=11 CIP=1 ISB=010 BMS=1 */
-
-/* No slaves */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-#define CONFIG_SYS_MALLOC_LEN          (4096 << 10)    /* Reserve 4 MB for malloc()    */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPUs */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-#define CONFIG_SYS_HID0_INIT           0
-#define CONFIG_SYS_HID0_FINAL          (HID0_ICE | HID0_IFEM | HID0_ABE)
-
-#define CONFIG_SYS_HID2                0
-
-#define CONFIG_SYS_SIUMCR              0x00200000
-#define CONFIG_SYS_BCR                 0x004c0000
-#define CONFIG_SYS_SCCR                0x0
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                             4-35
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP|SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC|SYPCR_BMT|SYPCR_PBME|SYPCR_LBME|\
-                        SYPCR_SWRI|SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register                                     5-5
- *-----------------------------------------------------------------------
- * turn on Checkstop Reset Enable
- */
-#define CONFIG_SYS_RMR         0
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                     4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC|TMCNTSC_ALR|TMCNTSC_TCF|TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                 4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS|PISCR_PTF|PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                         13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*
- * Init Memory Controller:
- *
- * Bank Bus     Machine PortSz  Device
- * ---- ---     ------- ------  ------
- *  0   60x     GPCM    32 bit  FLASH
- *  1   60x     SDRAM   64 bit  SDRAM
- *  4   60x     GPCM    16 bit  I/O Ctrl
- *
- */
-/* Bank 0 - FLASH
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH_BASE & BRx_BA_MSK)   |\
-                        BRx_PS_32                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR0_PRELIM (0xff000020)
-
-/* Bank 1 - 60x bus SDRAM
- */
-#define CONFIG_SYS_GLOBAL_SDRAM_LIMIT  (256 << 20)     /* less than 256 MB */
-
-#define CONFIG_SYS_MPTPR       0x2800
-
-/*-----------------------------------------------------------------------------
- * Address for Mode Register Set (MRS) command
- *-----------------------------------------------------------------------------
- */
-#define CONFIG_SYS_MRS_OFFS    0x00000110
-#define CONFIG_SYS_PSRT        0x13
-
-#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_SDRAM_BASE & BRx_BA_MSK)  |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR1_LITTLE
-
-/* SDRAM initialization values
-*/
-#define CONFIG_SYS_OR1_LITTLE  ((~(CONFIG_SYS_GLOBAL_SDRAM_LIMIT-1) & ORxS_SDAM_MSK) |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI1_A7             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_LITTLE        0x004b36a3
-
-#define CONFIG_SYS_OR1_BIG     ((~(CONFIG_SYS_GLOBAL_SDRAM_LIMIT-1) & ORxS_SDAM_MSK) |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI1_A4             |\
-                        ORxS_NUMR_12)
-
-#define CONFIG_SYS_PSDMR_BIG           0x014f36a3
-
-/* IO on CS4 initialization values
-*/
-#define CONFIG_SYS_IO_BASE     0xc0000000
-#define CONFIG_SYS_IO_SIZE     1
-
-#define CONFIG_SYS_BR4_PRELIM  ((CONFIG_SYS_IO_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16 | BRx_MS_GPCM_L | BRx_V)
-
-#define CONFIG_SYS_OR4_PRELIM  (0xfff80020)
-
-#define        CONFIG_SYS_RESET_ADDRESS 0xFDFFFFFC     /* "bad" address                */
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-
-#define OF_TBCLK               (bd->bi_busfreq / 4)
-#if defined(CONFIG_MUAS_DEV_BOARD)
-#define OF_STDOUT_PATH         "/soc/cpm/serial@11a90"
-#else
-#define OF_STDOUT_PATH         "/soc/cpm/serial@11a80"
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/mucmc52.h b/include/configs/mucmc52.h
deleted file mode 100644 (file)
index ff75ead..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (C) Copyright 2008-2009
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * (C) Copyright 2003-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define        CONFIG_MUCMC52          1       /* MUCMC52 board        */
-#define        CONFIG_HOSTNAME         mucmc52
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xFFF00000
-#endif
-
-#include "manroland/common.h"
-#include "manroland/mpc5200-common.h"
-
-#define        CONFIG_LAST_STAGE_INIT
-/*
- * Serial console configuration
- */
-#define        CONFIG_BAUDRATE         38400   /* ... at 38400 bps     */
-
-#define        CONFIG_CMD_PCI
-
-/*
- * Flash configuration
- */
-#define        CONFIG_SYS_MAX_FLASH_SECT       67
-
-/*
- * Environment settings
- */
-#define        CONFIG_ENV_SECT_SIZE    0x20000
-
-/*
- * Memory map
- */
-#define        CONFIG_SYS_STATUS1_BASE 0x80600200
-#define        CONFIG_SYS_STATUS2_BASE 0x80600300
-#define        CONFIG_SYS_PMI_UNI_BASE 0x80800000
-#define        CONFIG_SYS_PMI_BROAD_BASE       0x80810000
-
-/*
- * GPIO configuration
- */
-#define        CONFIG_SYS_GPS_PORT_CONFIG      0x8D550644
-
-#define        CONFIG_SYS_MEMTEST_START        0x00100000
-#define        CONFIG_SYS_MEMTEST_END          0x00f00000
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000
-
-#define        CONFIG_SYS_BOOTCS_CFG           0x0004FB00
-
-/* 8Mbit SRAM @0x80100000 */
-#define        CONFIG_SYS_CS1_SIZE             0x00100000
-#define        CONFIG_SYS_CS1_CFG              0x00019B00
-
-#define CONFIG_SYS_SRAM_SIZE           CONFIG_SYS_CS1_SIZE
-
-/* FRAM 32Kbyte @0x80700000 */
-#define        CONFIG_SYS_CS2_START            0x80700000
-#define        CONFIG_SYS_CS2_SIZE             0x00008000
-#define        CONFIG_SYS_CS2_CFG              0x00019800
-
-/* Display H1, Status Inputs, EPLD @0x80600000 */
-#define        CONFIG_SYS_CS3_START            0x80600000
-#define        CONFIG_SYS_CS3_SIZE             0x00100000
-#define        CONFIG_SYS_CS3_CFG              0x00019800
-
-/* PMI Unicast 32Kbyte @0x80800000 */
-#define        CONFIG_SYS_CS6_START            CONFIG_SYS_PMI_UNI_BASE
-#define        CONFIG_SYS_CS6_SIZE             0x00008000
-#define        CONFIG_SYS_CS6_CFG              0xFFFFF930
-
-/* PMI Broadcast 32Kbyte @0x80810000 */
-#define        CONFIG_SYS_CS7_START            CONFIG_SYS_PMI_BROAD_BASE
-#define        CONFIG_SYS_CS7_SIZE             0x00008000
-#define        CONFIG_SYS_CS7_CFG              0xFF00F930
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff Supports IDE harddisk
- *-----------------------------------------------------------------------
- */
-#define        CONFIG_SYS_IDE_MAXDEVICE        1       /* max. 2 drives per IDE bus    */
-
-/*
- * PCI Mapping:
- * 0x40000000 - 0x4fffffff - PCI Memory
- * 0x50000000 - 0x50ffffff - PCI IO Space
- */
-#define        CONFIG_PCI              1
-#define        CONFIG_PCI_PNP          1
-#define        CONFIG_PCI_SCAN_SHOW    1
-#define        CONFIG_PCIAUTO_SKIP_HOST_BRIDGE 1
-
-#define        CONFIG_PCI_MEM_BUS      0x40000000
-#define        CONFIG_PCI_MEM_PHYS     CONFIG_PCI_MEM_BUS
-#define        CONFIG_PCI_MEM_SIZE     0x10000000
-
-#define        CONFIG_PCI_IO_BUS       0x50000000
-#define        CONFIG_PCI_IO_PHYS      CONFIG_PCI_IO_BUS
-#define        CONFIG_PCI_IO_SIZE      0x01000000
-
-#define        CONFIG_SYS_ISA_IO               CONFIG_PCI_IO_BUS
-
-/*---------------------------------------------------------------------*/
-/* Display addresses                                                  */
-/*---------------------------------------------------------------------*/
-
-#define        CONFIG_SYS_DISP_CHR_RAM (CONFIG_SYS_DISPLAY_BASE + 0x38)
-#define        CONFIG_SYS_DISP_CWORD           (CONFIG_SYS_DISPLAY_BASE + 0x30)
-
-#endif /* __CONFIG_H */
index 51b1a141eb225d7d9bf67a6205820cec88d8fc74..0f4bd91c645d0be4177fa7cf5855710b1e46cce1 100644 (file)
@@ -12,8 +12,7 @@
 #include <asm/arch/imx-regs.h>
 
  /* High Level Configuration Options */
-#define CONFIG_ARM1136         1               /* This is an arm1136 CPU core */
-#define CONFIG_MX31            1               /* in a mx31 */
+#define CONFIG_MX31            1               /* This is a mx31 */
 
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
index bc4583baee6227e555ae203823dc8c3ffce962c6..2a3e53c7928ca8d32950df854307330026dce538 100644 (file)
@@ -17,8 +17,7 @@
 #include <asm/arch/imx-regs.h>
 
 /* High Level Configuration Options */
-#define CONFIG_ARM1136                 /* This is an arm1136 CPU core */
-#define CONFIG_MX31                    /* in a mx31 */
+#define CONFIG_MX31                    /* This is a mx31 */
 
 #define CONFIG_SYS_GENERIC_BOARD
 
index ab481441b296d45a60509e5bd6cc68fa0476a8ef..a145f0812f39803a5572fcdb62427a4963961743 100644 (file)
@@ -16,7 +16,6 @@
 #include <asm/arch/imx-regs.h>
 
  /* High Level Configuration Options */
-#define CONFIG_ARM1136 /* This is an arm1136 CPU core */
 #define CONFIG_MX35
 
 #define CONFIG_DISPLAY_CPUINFO
index a74508c5e81849055d20399f1887b7ddd4f73a42..42bc3c869f82b3d0b0c2ee0159c9f8a760561a3e 100644 (file)
@@ -94,6 +94,7 @@
 /* Command definition */
 #include <config_cmd_default.h>
 #define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
 
 #undef CONFIG_CMD_IMLS
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "script=boot.scr\0" \
        "image=zImage\0" \
-       "fdt_file=imx53-qsb.dtb\0" \
        "fdt_addr=0x71000000\0" \
        "boot_fdt=try\0" \
        "ip_dyn=yes\0" \
index 135a3f51f069940a12ff4f983e34344d1d829ce4..e0528ce4b928839ce1619d6694e3b08f9be58f57 100644 (file)
@@ -29,5 +29,6 @@
 #endif
 
 #define CONFIG_MP
+#define CONFIG_MXC_GPT_HCLK
 
 #endif
index 6e01fa0435a09087ee57bd54b611a6fb6dece922..76cfef123cd13d5adc5f2b51579eb5023980c3c4 100644 (file)
 #define CONFIG_OF_LIBFDT
 #define CONFIG_CMD_BOOTZ
 
+/* USB Configs */
+#define CONFIG_CMD_USB
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_STORAGE
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS           0
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        1
+#endif
+
 #endif                         /* __CONFIG_H */
index 0ab31279ccd6e5888ddfa28153ffcc13e5b834fd..51042ca72e54b7b8e2e1084ac2e96ed9da9615ff 100644 (file)
 #define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
 #define CONFIG_MXC_USB_FLAGS   0
 
+#define CONFIG_PCA953X
+#define CONFIG_SYS_I2C_PCA953X_WIDTH   { {0x30, 8}, {0x32, 8}, {0x34, 8} }
+
 #include "mx6sabre_common.h"
 
+#undef CONFIG_SYS_NO_FLASH
+#define CONFIG_SYS_FLASH_BASE           WEIM_ARB_BASE_ADDR
+#define CONFIG_SYS_FLASH_SECT_SIZE      (128 * 1024)
+#define CONFIG_SYS_MAX_FLASH_BANKS 1    /* max number of memory banks */
+#define CONFIG_SYS_MAX_FLASH_SECT 256   /* max number of sectors on one chip */
+#define CONFIG_SYS_FLASH_CFI            /* Flash memory is CFI compliant */
+#define CONFIG_FLASH_CFI_DRIVER         /* Use drivers/cfi_flash.c */
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE /* Use buffered writes*/
+#define CONFIG_SYS_FLASH_EMPTY_INFO
+
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 #if defined(CONFIG_ENV_IS_IN_MMC)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_I2C_MXC
 #define CONFIG_SYS_I2C_SPEED           100000
 
+/* NAND flash command */
+#define CONFIG_CMD_NAND
+#define CONFIG_CMD_NAND_TRIMFFS
+
+/* NAND stuff */
+#define CONFIG_NAND_MXS
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_SYS_NAND_BASE           0x40000000
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+
+/* DMA stuff, needed for GPMI/MXS NAND support */
+#define CONFIG_APBH_DMA
+#define CONFIG_APBH_DMA_BURST
+#define CONFIG_APBH_DMA_BURST8
+
+/* PMIC */
+#define CONFIG_POWER
+#define CONFIG_POWER_I2C
+#define CONFIG_POWER_PFUZE100
+#define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08
+
 #endif                         /* __MX6QSABREAUTO_CONFIG_H */
index c81e9e9747fdceed70fd9a977458e7dd41f97985..f0f721e9b7ef586ed0a0776167e17365529c047c 100644 (file)
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_DM
+#define CONFIG_DM_THERMAL
+#define CONFIG_SYS_MALLOC_F_LEN        (1 << 10)
+#define CONFIG_IMX6_THERMAL
+
 #define CONFIG_SYS_GENERIC_BOARD
 
 /* Size of malloc() pool */
@@ -37,7 +42,7 @@
 #define CONFIG_MXC_UART
 
 #define CONFIG_CMD_FUSE
-#ifdef CONFIG_CMD_FUSE
+#if defined(CONFIG_CMD_FUSE) || defined(CONFIG_IMX6_THERMAL)
 #define CONFIG_MXC_OCOTP
 #endif
 
 #define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
 #define CONFIG_AUTO_COMPLETE
 #define CONFIG_SYS_CBSIZE              256
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_MAXARGS             16
 #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
 
 #define CONFIG_ENV_IS_IN_MMC
 
 #if defined(CONFIG_ENV_IS_IN_MMC)
-#define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
+#define CONFIG_ENV_OFFSET              (8 * 64 * 1024)
 #endif
 
 #define CONFIG_OF_LIBFDT
index 938030d56d69d989f5e79bb295257d9cd77d568e..99d9d4d7cfbf5a5c54de344f7fec4ec84c92fa89 100644 (file)
 #include <asm/arch/imx-regs.h>
 #include <asm/imx-common/gpio.h>
 
+#ifdef CONFIG_SPL
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+#include "imx6_spl.h"
+#endif
+
 #define CONFIG_MACH_TYPE       3980
 #define CONFIG_MXC_UART_BASE   UART1_BASE
 #define CONFIG_CONSOLE_DEV             "ttymxc0"
 #define CONFIG_POWER_PFUZE100
 #define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08
 
+/* USB Configs */
+#define CONFIG_CMD_USB
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_STORAGE
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS           0
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        1 /* Enabled USB controller number */
+#endif
+
 #endif                         /* __MX6QSABRESD_CONFIG_H */
index fddedf1a8eb28c87ce4490407ec43144fc350a5e..e6c41306a36001a52ef62e96704253eb283dd376 100644 (file)
@@ -87,7 +87,7 @@
        "fdt_addr=0x88000000\0" \
        "boot_fdt=try\0" \
        "ip_dyn=yes\0" \
-       "mmcdev=0\0" \
+       "mmcdev=1\0" \
        "mmcpart=1\0" \
        "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
        "mmcargs=setenv bootargs console=${console},${baudrate} " \
 /* FLASH and environment organization */
 #define CONFIG_SYS_NO_FLASH
 
-#define CONFIG_ENV_OFFSET              (6 * SZ_64K)
 #define CONFIG_ENV_SIZE                        SZ_8K
+
+#if defined CONFIG_SYS_BOOT_SPINOR
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_OFFSET               (768 * 1024)
+#define CONFIG_ENV_SECT_SIZE            (64 * 1024)
+#define CONFIG_ENV_SPI_BUS              CONFIG_SF_DEFAULT_BUS
+#define CONFIG_ENV_SPI_CS               CONFIG_SF_DEFAULT_CS
+#define CONFIG_ENV_SPI_MODE             CONFIG_SF_DEFAULT_MODE
+#define CONFIG_ENV_SPI_MAX_HZ           CONFIG_SF_DEFAULT_SPEED
+#else
+#define CONFIG_ENV_OFFSET              (6 * SZ_64K)
 #define CONFIG_ENV_IS_IN_MMC
-#define CONFIG_SYS_MMC_ENV_DEV         0
+#endif
 
 #define CONFIG_OF_LIBFDT
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
 #endif
 
+/* USB Configs */
+#define CONFIG_CMD_USB
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_STORAGE
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS           0
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+#endif
+
+#define CONFIG_SYS_FSL_USDHC_NUM       3
+#if defined(CONFIG_ENV_IS_IN_MMC)
+#define CONFIG_SYS_MMC_ENV_DEV         1       /* SDHC2*/
+#endif
+
 #endif                         /* __CONFIG_H */
index e02ea18a6467e82762f4a7c128f94aa3af8cc403..fbaae3f505b577d9ce124dc21d1da4215eff12a0 100644 (file)
@@ -59,7 +59,7 @@
        "fdt_addr=0x88000000\0" \
        "boot_fdt=try\0" \
        "ip_dyn=yes\0" \
-       "mmcdev=0\0" \
+       "mmcdev=2\0" \
        "mmcpart=1\0" \
        "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
        "mmcargs=setenv bootargs console=${console},${baudrate} " \
 #define CONFIG_PHYLIB
 #define CONFIG_PHY_ATHEROS
 
+
+#define CONFIG_CMD_USB
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_STORAGE
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS   0
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+#endif
+
 #define CONFIG_CMD_PCI
 #ifdef CONFIG_CMD_PCI
 #define CONFIG_PCI
 #define CONFIG_PCIE_IMX_POWER_GPIO     IMX_GPIO_NR(2, 1)
 #endif
 
+#define CONFIG_DM
+#define CONFIG_DM_THERMAL
+#define CONFIG_SYS_MALLOC_F_LEN        (1 << 10)
+#define CONFIG_IMX6_THERMAL
+
+#define CONFIG_CMD_FUSE
+#if defined(CONFIG_CMD_FUSE) || defined(CONFIG_IMX6_THERMAL)
+#define CONFIG_MXC_OCOTP
+#endif
+
 /* FLASH and environment organization */
 #define CONFIG_SYS_NO_FLASH
 
+#define CONFIG_CMD_TIME
+
+#define CONFIG_FSL_QSPI
+
+#ifdef CONFIG_FSL_QSPI
+#define CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_FLASH_SPANSION
+#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_SYS_FSL_QSPI_LE
+#define CONFIG_SYS_FSL_QSPI_AHB
+#ifdef CONFIG_MX6SX_SABRESD_REVA
+#define FSL_QSPI_FLASH_SIZE            SZ_16M
+#else
+#define FSL_QSPI_FLASH_SIZE            SZ_32M
+#endif
+#define FSL_QSPI_FLASH_NUM             2
+#endif
+
 #define CONFIG_ENV_OFFSET              (6 * SZ_64K)
 #define CONFIG_ENV_SIZE                        SZ_8K
 #define CONFIG_ENV_IS_IN_MMC
-#define CONFIG_SYS_MMC_ENV_DEV         0
 
 #define CONFIG_OF_LIBFDT
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_CMD_CACHE
 #endif
 
+#define CONFIG_SYS_FSL_USDHC_NUM       3
+#if defined(CONFIG_ENV_IS_IN_MMC)
+#define CONFIG_SYS_MMC_ENV_DEV         2  /*USDHC4*/
+#endif
+
 #endif                         /* __CONFIG_H */
index 5419f551d316f3c23141bf5009eda1b3c0491a32..52cde4110c1c1125e0c4f32c1ca63c9221436fc2 100644 (file)
@@ -12,7 +12,6 @@
 
 #include <nomadik.h>
 
-#define CONFIG_ARM926EJS
 #define CONFIG_NOMADIK_8815    /* cpu variant */
 
 #define CONFIG_SKIP_LOWLEVEL_INIT /* we have already been loaded to RAM */
diff --git a/include/configs/novena.h b/include/configs/novena.h
new file mode 100644 (file)
index 0000000..ea75d2c
--- /dev/null
@@ -0,0 +1,299 @@
+/*
+ * Configuration settings for the Novena U-boot.
+ *
+ * Copyright (C) 2014 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/* System configurations */
+#define CONFIG_MX6
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_LATE_INIT
+#define CONFIG_MISC_INIT_R
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DOS_PARTITION
+#define CONFIG_FAT_WRITE
+#define CONFIG_FIT
+#define CONFIG_KEYBOARD
+#define CONFIG_MXC_GPIO
+#define CONFIG_OF_LIBFDT
+#define CONFIG_REGEX
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_SYS_NO_FLASH
+
+#include "configs/mx6_common.h"
+#include <asm/arch/imx-regs.h>
+#include <asm/imx-common/gpio.h>
+#include <config_cmd_default.h>
+
+/* U-Boot Commands */
+#define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_BMODE
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_FUSE
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_MMC
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_SATA
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_CMD_TIME
+#define CONFIG_CMD_USB
+#define CONFIG_VIDEO
+
+/* U-Boot general configurations */
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_CBSIZE      1024            /* Console I/O buffer size */
+#define CONFIG_SYS_PBSIZE      \
+       (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+                                               /* Print buffer size */
+#define CONFIG_SYS_MAXARGS     32              /* Max number of command args */
+#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE
+                                               /* Boot argument buffer size */
+#define CONFIG_VERSION_VARIABLE                        /* U-BOOT version */
+#define CONFIG_AUTO_COMPLETE                   /* Command auto complete */
+#define CONFIG_CMDLINE_EDITING                 /* Command history etc */
+#define CONFIG_SYS_HUSH_PARSER
+
+/* U-Boot environment */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_ENV_SIZE                        (16 * 1024)
+/*
+ * Environment is on MMC, starting at offset 512KiB from start of the card.
+ * Please place first partition at offset 1MiB from the start of the card
+ * as recommended by GNU/fdisk. See below for details:
+ * http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/disc-partition-alignment.html
+ */
+#ifdef CONFIG_CMD_MMC
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_ENV_OFFSET              (512 * 1024)
+#define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
+#define CONFIG_ENV_OFFSET_REDUND       \
+               (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
+#else
+#define CONFIG_ENV_IS_NOWHERE
+#endif
+
+/* Booting Linux */
+#define CONFIG_BOOTDELAY               5
+#define CONFIG_BOOTFILE                        "fitImage"
+#define CONFIG_BOOTARGS                        "console=ttymxc1,115200 "
+#define CONFIG_BOOTCOMMAND             "run net_nfs"
+#define CONFIG_LOADADDR                        0x18000000
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+#define CONFIG_HOSTNAME                        novena
+
+/* Physical Memory Map */
+#define CONFIG_NR_DRAM_BANKS           1
+#define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
+#define PHYS_SDRAM_SIZE                        0xF0000000
+
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM
+#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
+#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
+
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+#define CONFIG_SYS_MEMTEST_START       0x10000000
+#define CONFIG_SYS_MEMTEST_END         0x20000000
+
+#define CONFIG_SYS_MALLOC_LEN          (64 * 1024 * 1024)
+#define CONFIG_SYS_MALLOC_F_LEN                (1 << 10)
+
+/* SPL */
+#define CONFIG_SPL_FAT_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+#include "imx6_spl.h"                  /* common IMX6 SPL configuration */
+
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+#define CONFIG_REVISION_TAG
+
+/* Ethernet Configuration */
+#ifdef CONFIG_CMD_NET
+#define CONFIG_FEC_MXC
+#define CONFIG_MII
+#define IMX_FEC_BASE                   ENET_BASE_ADDR
+#define CONFIG_FEC_XCV_TYPE            RGMII
+#define CONFIG_ETHPRIME                        "FEC"
+#define CONFIG_FEC_MXC_PHYADDR         0x7
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_MICREL
+#define CONFIG_PHY_MICREL_KSZ9021
+#define CONFIG_ARP_TIMEOUT             200UL
+#endif
+
+/* I2C */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MXC
+#define CONFIG_I2C_MULTI_BUS
+#define CONFIG_I2C_MXC
+#define CONFIG_SYS_I2C_SPEED           100000
+
+/* I2C EEPROM */
+#ifdef CONFIG_CMD_EEPROM
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_SPD_BUS_NUM         2
+#endif
+
+/* MMC Configs */
+#ifdef CONFIG_CMD_MMC
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_BOUNCE_BUFFER
+#define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_USDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      0
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+#endif
+
+/* OCOTP Configs */
+#ifdef CONFIG_CMD_FUSE
+#define CONFIG_MXC_OCOTP
+#endif
+
+/* PCI express */
+#ifdef CONFIG_CMD_PCI
+#define CONFIG_PCI
+#define CONFIG_PCI_PNP
+#define CONFIG_PCI_SCAN_SHOW
+#define CONFIG_PCIE_IMX
+#define CONFIG_PCIE_IMX_PERST_GPIO     IMX_GPIO_NR(3, 29)
+#define CONFIG_PCIE_IMX_POWER_GPIO     IMX_GPIO_NR(7, 12)
+#endif
+
+/* PMIC */
+#define CONFIG_POWER
+#define CONFIG_POWER_I2C
+#define CONFIG_POWER_PFUZE100
+#define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08
+
+/* SATA Configs */
+#ifdef CONFIG_CMD_SATA
+#define CONFIG_DWC_AHSATA
+#define CONFIG_SYS_SATA_MAX_DEVICE     1
+#define CONFIG_DWC_AHSATA_PORT_ID      0
+#define CONFIG_DWC_AHSATA_BASE_ADDR    SATA_ARB_BASE_ADDR
+#define CONFIG_LBA48
+#define CONFIG_LIBATA
+#endif
+
+/* UART */
+#define CONFIG_MXC_UART
+#define CONFIG_MXC_UART_BASE           UART2_BASE
+#define CONFIG_BAUDRATE                        115200
+#define CONFIG_CONS_INDEX              1
+
+/* USB Configs */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_KEYBOARD
+#define CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_ETHER_SMSC95XX
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS           0
+/* Gadget part */
+#define CONFIG_CI_UDC
+#define CONFIG_USBD_HS
+#define CONFIG_USB_GADGET_DUALSPEED
+#define CONFIG_USB_ETHER
+#define CONFIG_USB_ETH_CDC
+#define CONFIG_NETCONSOLE
+#endif
+
+/* Video output */
+#ifdef CONFIG_VIDEO
+#define CONFIG_VIDEO_IPUV3
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+#define CONFIG_VIDEO_BMP_RLE8
+#define CONFIG_SPLASH_SCREEN
+#define CONFIG_BMP_16BPP
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_IPUV3_CLK               260000000
+#define CONFIG_CMD_HDMIDETECT
+#define CONFIG_CONSOLE_MUX
+#define CONFIG_IMX_HDMI
+#define CONFIG_IMX_VIDEO_SKIP
+#endif
+
+/* Extra U-Boot environment. */
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "fdt_high=0xffffffff\0"                                         \
+       "initrd_high=0xffffffff\0"                                      \
+       "consdev=ttymxc1\0"                                             \
+       "baudrate=115200\0"                                             \
+       "bootdev=/dev/mmcblk0p1\0"                                      \
+       "rootdev=/dev/mmcblk0p2\0"                                      \
+       "netdev=eth0\0"                                                 \
+       "kernel_addr_r=0x18000000\0"                                    \
+       "addcons="                                                      \
+               "setenv bootargs ${bootargs} "                          \
+               "console=${consdev},${baudrate}\0"                      \
+       "addip="                                                        \
+               "setenv bootargs ${bootargs} "                          \
+               "ip=${ipaddr}:${serverip}:${gatewayip}:"                \
+                       "${netmask}:${hostname}:${netdev}:off\0"        \
+       "addmisc="                                                      \
+               "setenv bootargs ${bootargs} ${miscargs}\0"             \
+       "addargs=run addcons addmisc\0"                                 \
+       "mmcload="                                                      \
+               "mmc rescan ; "                                         \
+               "ext4load mmc 0:1 ${kernel_addr_r} ${bootfile}\0"       \
+       "netload="                                                      \
+               "tftp ${kernel_addr_r} ${hostname}/${bootfile}\0"       \
+       "miscargs=nohlt panic=1\0"                                      \
+       "mmcargs=setenv bootargs root=${rootdev} rw rootwait\0"         \
+       "nfsargs="                                                      \
+               "setenv bootargs root=/dev/nfs rw "                     \
+                       "nfsroot=${serverip}:${rootpath},v3,tcp\0"      \
+       "mmc_mmc="                                                      \
+               "run mmcload mmcargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "mmc_nfs="                                                      \
+               "run mmcload nfsargs addip addargs ; "                  \
+               "bootm ${kernel_addr_r}\0"                              \
+       "net_mmc="                                                      \
+               "run netload mmcargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "net_nfs="                                                      \
+               "run netload nfsargs addip addargs ; "                  \
+               "bootm ${kernel_addr_r}\0"                              \
+       "update_sd_spl_filename=SPL\0"                                  \
+       "update_sd_uboot_filename=u-boot.img\0"                         \
+       "update_sd_firmware="   /* Update the SD firmware partition */  \
+               "if mmc rescan ; then "                                 \
+               "if dhcp ${update_sd_spl_filename} ; then "             \
+               "mmc write ${loadaddr} 2 0x200 ; "                      \
+               "fi ; "                                                 \
+               "if dhcp ${update_sd_uboot_filename} ; then "           \
+               "fatwrite mmc 0:1 ${loadaddr} u-boot.img ${filesize} ; "\
+               "fi ; "                                                 \
+               "fi\0"                                                  \
+
+#endif                         /* __CONFIG_H */
diff --git a/include/configs/nyan-big.h b/include/configs/nyan-big.h
new file mode 100644 (file)
index 0000000..cf331ab
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * (C) Copyright 2014
+ * NVIDIA Corporation <www.nvidia.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <linux/sizes.h>
+
+#include "tegra124-common.h"
+
+/* High-level configuration options */
+#define V_PROMPT                       "Tegra124 (Nyan-big) # "
+#define CONFIG_TEGRA_BOARD_STRING      "Google/NVIDIA Nyan-big"
+
+/* Board-specific serial config */
+#define CONFIG_SERIAL_MULTI
+#define CONFIG_TEGRA_ENABLE_UARTA
+#define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTA_BASE
+
+#define CONFIG_BOARD_EARLY_INIT_F
+
+/* I2C */
+#define CONFIG_SYS_I2C_TEGRA
+#define CONFIG_CMD_I2C
+
+/* SD/MMC */
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_TEGRA_MMC
+#define CONFIG_CMD_MMC
+
+/* Environment in eMMC, at the end of 2nd "boot sector" */
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_SYS_MMC_ENV_PART                2
+#define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
+
+/* SPI */
+#define CONFIG_TEGRA114_SPI            /* Compatible w/ Tegra114 SPI */
+#define CONFIG_TEGRA114_SPI_CTRLS      6
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_WINBOND
+#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
+#define CONFIG_SF_DEFAULT_SPEED        24000000
+#define CONFIG_CMD_SPI
+#define CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH_SIZE          (4 << 20)
+
+/* USB Host support */
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_TEGRA
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+#define CONFIG_USB_STORAGE
+#define CONFIG_CMD_USB
+
+/* USB networking support */
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+
+/* General networking support */
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_DHCP
+
+#define CONFIG_FIT
+#define CONFIG_OF_LIBFDT
+
+#include "tegra-common-usb-gadget.h"
+#include "tegra-common-post.h"
+
+#endif /* __CONFIG_H */
index 183c4492848dd78787d29f6e30f9e2d4b35c4b81..18388d150b65ee51a94c47d996abcc0ed110fa8a 100644 (file)
@@ -17,6 +17,8 @@
  * High Level Configuration Options
  */
 #define CONFIG_MPC5200
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_SYS_GENERIC_BOARD
 
 #define CONFIG_SYS_MPC5XXX_CLKIN       33000000 /* running at 33.000000MHz */
 
index b928af839e839c3070b3d2f391e80fd18a5170a0..807e96bbaab9f676bb13f4cacb38ddb5a1af05b0 100644 (file)
 
 #define CONFIG_CMD_GPIO
 
+/* USB */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_EXYNOS
+#define CONFIG_USB_STORAGE
+
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_SMSC95XX
+
 /*
  * Supported Odroid boards: X3, U3
  * TODO: Add Odroid X support
diff --git a/include/configs/odroid_xu3.h b/include/configs/odroid_xu3.h
new file mode 100644 (file)
index 0000000..9fa8660
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2013 Samsung Electronics
+ * Hyungwon Hwang <human.hwang@samsung.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIG_ODROID_XU3_H
+#define __CONFIG_ODROID_XU3_H
+
+#include "exynos5420-common.h"
+
+#define CONFIG_SYS_PROMPT              "ODROID-XU3 # "
+#define CONFIG_IDENT_STRING            " for ODROID-XU3"
+
+#define CONFIG_BOARD_COMMON
+
+#define CONFIG_SYS_SDRAM_BASE          0x40000000
+#define CONFIG_SYS_TEXT_BASE           0x43E00000
+
+/* select serial console configuration */
+#define CONFIG_SERIAL2                 /* use SERIAL 2 */
+
+#define TZPC_BASE_OFFSET               0x10000
+
+#define CONFIG_CMD_MMC
+
+/*
+ * FIXME: The number of bank is actually 8. But there is no way to reserve the
+ * last 16 Mib in the last bank now. So I just excluded the last bank
+ * temporally.
+ */
+#define CONFIG_NR_DRAM_BANKS   7
+#define SDRAM_BANK_SIZE                (256UL << 20UL) /* 256 MB */
+
+#define CONFIG_ENV_IS_IN_MMC
+
+#undef CONFIG_ENV_SIZE
+#undef CONFIG_ENV_OFFSET
+#define CONFIG_ENV_SIZE                        4096
+#define CONFIG_ENV_OFFSET              (SZ_1K * 1280) /* 1.25 MiB offset */
+
+#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_SYS_LOAD_ADDR - 0x1000000)
+
+#define CONFIG_DEFAULT_CONSOLE         "console=ttySAC2,115200n8\0"
+
+/* USB */
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_EXYNOS
+
+/* FIXME: MUST BE REMOVED AFTER TMU IS TURNED ON */
+#undef CONFIG_EXYNOS_TMU
+#undef CONFIG_TMU_CMD_DTT
+
+#endif /* __CONFIG_H */
index 27bf89c114c12c5c61bb1f2bc224d4be3216bdff..8bdc08f5864c7f6bf27afaeabec0bbba6c4fa820 100644 (file)
@@ -75,7 +75,7 @@
 #define CONFIG_SPL_FAT_SUPPORT
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 /* Partition tables */
index 2daf13c642202da1461510127f98ca4a908ab3fa..1185f425501f8b5e6b39b03341be104df1345fde 100644 (file)
@@ -87,7 +87,7 @@
 #define CONFIG_SPL_FAT_SUPPORT
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 #endif /* __OMAP3_EVM_QUICK_MMC_H */
index 006c9a9c0daa29422af9485ad0b7ab1c69f29081..b2b3750c1eb3c4faaee98be9ac63f57b43c8cbe4 100644 (file)
@@ -29,8 +29,6 @@
 
 #define CONFIG_REVISION_TAG            1
 
-#define CONFIG_SUPPORT_RAW_INITRD
-
 /* define to enable boot progress via leds */
 #if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) || \
     (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030)
index f3c21c4580aa5c067d0de68b3cdb0a302bdc3876..bf1d34dedb4dd475db9d04431dc627330e12400a 100644 (file)
@@ -18,7 +18,6 @@
 /*
  * High Level Configuration Options
  */
-#define CONFIG_ARMV7           1       /* This is an ARM V7 CPU core */
 #define CONFIG_OMAP            1       /* in a TI OMAP core */
 #define CONFIG_MVBLX           1       /* working with mvBlueLYNX-X */
 #define CONFIG_MACH_TYPE       MACH_TYPE_MVBLX
index e8dc462f146653fcf5acfbb8013e76caed83786e..0ca4e82e0f153f33071b927dcf826ba50b614505 100644 (file)
@@ -23,6 +23,7 @@
 #define CONFIG_SYS_NS16550_COM3                UART3_BASE
 #define CONFIG_BAUDRATE                        115200
 
+#define CONFIG_MISC_INIT_R
 /* MMC ENV related defines */
 #define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1       /* SLOT2: eMMC(1) */
@@ -35,8 +36,6 @@
 /* Enhance our eMMC support / experience. */
 #define CONFIG_CMD_GPT
 #define CONFIG_EFI_PARTITION
-#define CONFIG_PARTITION_UUIDS
-#define CONFIG_CMD_PART
 #define CONFIG_HSMMC2_8BIT
 #define CONFIG_SUPPORT_EMMC_BOOT
 
index da9d6a1ee1e5cae2613eb1eade2f9864b741305b..8f1e25696e8b419ad93b31d0109f85c09952ece2 100644 (file)
 #undef CONFIG_CMD_PING
 #define CONFIG_CMD_ELF
 #define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
 #undef CONFIG_CMD_NET
 #undef CONFIG_CMD_NFS
 
 #define COPY_BL2_FNPTR_ADDR    0x02020030
 #define CONFIG_SPL_TEXT_BASE   0x02021410
 
-#define CONFIG_BOOTCOMMAND     "fatload mmc 0 40007000 uImage; bootm 40007000"
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "loadaddr=0x40007000\0" \
+       "rdaddr=0x48000000\0" \
+       "kerneladdr=0x40007000\0" \
+       "ramdiskaddr=0x48000000\0" \
+       "console=ttySAC2,115200n8\0" \
+       "mmcdev=0\0" \
+       "bootenv=uEnv.txt\0" \
+       "loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
+       "importbootenv=echo Importing environment from mmc ...; " \
+               "env import -t $loadaddr $filesize\0" \
+        "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+        "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
+                "source ${loadaddr}\0"
+#define CONFIG_BOOTCOMMAND \
+       "if mmc rescan; then " \
+               "echo SD/MMC found on device ${mmcdev};" \
+               "if run loadbootenv; then " \
+                       "echo Loaded environment from ${bootenv};" \
+                       "run importbootenv;" \
+               "fi;" \
+               "if test -n $uenvcmd; then " \
+                       "echo Running uenvcmd ...;" \
+                       "run uenvcmd;" \
+               "fi;" \
+               "if run loadbootscript; then " \
+                       "run bootscript; " \
+               "fi; " \
+       "fi;" \
+       "load mmc ${mmcdev} ${loadaddr} uImage; bootm ${loadaddr} "
 
 #define CONFIG_IDENT_STRING            " for ORIGEN"
 
index d7696bd203c622f8ec56e5a70cd210eddb6e2089..255c933baa4be2a2440e831f7fdbe97ee32627bd 100644 (file)
 #define CONFIG_GENERIC_MMC
 #define CONFIG_BOUNCE_BUFFER
 
+/* USB Configs */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_MXC_USB_PORTSC   (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+
 #ifdef CONFIG_MX6Q
 #define CONFIG_CMD_SATA
 #endif
 #define CONFIG_CMD_EXT4
 #define CONFIG_DOS_PARTITION
 #define CONFIG_CMD_FS_GENERIC
+#define CONFIG_LIB_UUID
+#define CONFIG_CMD_FS_UUID
 
 #define CONFIG_BOOTP_SERVERIP
 #define CONFIG_BOOTP_BOOTFILE
index 629967d05499c6996fa628ad1b84afbb1f4e86c7..2390bebf917db6c075d1ce56dd5a806cbffe7738 100644 (file)
 #ifdef CONFIG_SYS_USE_DATAFLASH
 # define CONFIG_ATMEL_DATAFLASH_SPI
 # define CONFIG_HAS_DATAFLASH
-# define CONFIG_SYS_SPI_WRITE_TOUT             (5 * CONFIG_SYS_HZ)
 # define CONFIG_SYS_MAX_DATAFLASH_BANKS                1
 # define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0   0xC0000000      /* CS0 */
 # define AT91_SPI_CLK                          15000000
index 9b5895093daa255193ee36f1dce1744aee9f09f2..5f27c2a41a89651e2c1426f527d485db607812a8 100644 (file)
 #define __SW_BOOT_NAND         0x44
 #define __SW_BOOT_PCIE         0x74
 #define CONFIG_SYS_L2_SIZE     (256 << 10)
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#define MTDIDS_DEFAULT "nor0=ec000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=ec000000.nor:128k(dtb),6016k(kernel)," \
+                       "57088k(fs),1m(vsc7385-firmware),1280k(u-boot)"
 #endif
 
 #if defined(CONFIG_P1021RDB)
 #define __SW_BOOT_NAND         0xec
 #define __SW_BOOT_PCIE         0x6c
 #define CONFIG_SYS_L2_SIZE     (256 << 10)
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#ifdef CONFIG_PHYS_64BIT
+#define MTDIDS_DEFAULT "nor0=fef000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=fef000000.nor:256k(vsc7385-firmware)," \
+                       "256k(dtb),4608k(kernel),9728k(fs)," \
+                       "256k(qe-ucode-firmware),1280k(u-boot)"
+#else
+#define MTDIDS_DEFAULT "nor0=ef000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=ef000000.nor:256k(vsc7385-firmware)," \
+                       "256k(dtb),4608k(kernel),9728k(fs)," \
+                       "256k(qe-ucode-firmware),1280k(u-boot)"
+#endif
 #endif
 
 #if defined(CONFIG_P1024RDB)
 #define __SW_BOOT_NAND         0xe8
 #define __SW_BOOT_PCIE         0xa8
 #define CONFIG_SYS_L2_SIZE     (512 << 10)
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#ifdef CONFIG_PHYS_64BIT
+#define MTDIDS_DEFAULT "nor0=fef000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=fef000000.nor:256k(vsc7385-firmware)," \
+                       "256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
+#else
+#define MTDIDS_DEFAULT "nor0=ef000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=ef000000.nor:256k(vsc7385-firmware)," \
+                       "256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
+#endif
 #endif
 
 #ifdef CONFIG_SDCARD
index 911203d85c17aad983ab51421cab3ba01b8ab7e7..9864c15d837cf2515c18c64db02923f2b0664bd9 100644 (file)
@@ -10,6 +10,8 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define        CONFIG_SYS_GENERIC_BOARD
+#define        CONFIG_DISPLAY_BOARDINFO
 #if defined(CONFIG_TWR_P1025)
 #define CONFIG_BOARDNAME "TWR-P1025"
 #define CONFIG_P1025
@@ -388,6 +390,18 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #endif /* CONFIG_UEC_ETH5 */
 #endif /* CONFIG_TWR-P1025 */
 
+/*
+ * Dynamic MTD Partition support with mtdparts
+ */
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#define MTDIDS_DEFAULT "nor0=ec000000.nor"
+#define MTDPARTS_DEFAULT "mtdparts=ec000000.nor:256k(vsc7385-firmware)," \
+                       "256k(dtb),5632k(kernel),57856k(fs)," \
+                       "256k(qe-ucode-firmware),1280k(u-boot)"
+
 /*
  * Environment
  */
index f92496571bae610ab6b20bdce9086f6672e6f924..61e6af384d4b21d5a957aa668d0bceed05566eef 100644 (file)
@@ -15,6 +15,9 @@
 #define CONFIG_PB1X00          1
 #define CONFIG_SOC_AU1X00      1  /* alchemy series cpu */
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifdef CONFIG_PB1000
 #define CONFIG_SOC_AU1000      1
 #else
@@ -29,8 +32,6 @@
 #endif
 #endif
 
-#define CONFIG_SYS_LITTLE_ENDIAN
-
 #define CONFIG_ETHADDR         DE:AD:BE:EF:01:01    /* Ethernet address */
 
 #define CONFIG_BOOTDELAY       2       /* autoboot after 2 seconds     */
diff --git a/include/configs/peach-pi.h b/include/configs/peach-pi.h
new file mode 100644 (file)
index 0000000..a1c980d
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2014 Samsung Electronics
+ *
+ * Configuration settings for the SAMSUNG/GOOGLE PEACH-PI board.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_PEACH_PI_H
+#define __CONFIG_PEACH_PI_H
+
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_SPI_FLASH
+#define CONFIG_ENV_SPI_BASE    0x12D30000
+#define FLASH_SIZE             (0x4 << 20)
+#define CONFIG_ENV_OFFSET      (FLASH_SIZE - CONFIG_BL2_SIZE)
+#define CONFIG_SPI_BOOTING
+
+#include <configs/exynos5420-common.h>
+#include <configs/exynos5-dt-common.h>
+
+#define CONFIG_BOARD_COMMON
+
+#define CONFIG_SYS_SDRAM_BASE  0x20000000
+#define CONFIG_SYS_TEXT_BASE   0x23E00000
+#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_IRAM_TOP - 0x800)
+
+/* select serial console configuration */
+#define CONFIG_SERIAL3         /* use SERIAL 3 */
+#define CONFIG_DEFAULT_CONSOLE "console=ttySAC1,115200n8\0"
+
+#define CONFIG_SYS_PROMPT      "Peach-Pi # "
+#define CONFIG_IDENT_STRING    " for Peach-Pi"
+
+#define CONFIG_VIDEO_PARADE
+
+/* Display */
+#define CONFIG_LCD
+#ifdef CONFIG_LCD
+#define CONFIG_EXYNOS_FB
+#define CONFIG_EXYNOS_DP
+#define LCD_BPP                        LCD_COLOR16
+#endif
+
+#define CONFIG_POWER_TPS65090_EC
+#define CONFIG_CROS_EC_SPI             /* Support CROS_EC over SPI */
+#define CONFIG_DM_CROS_EC
+
+#define CONFIG_USB_XHCI
+#define CONFIG_USB_XHCI_EXYNOS
+
+/* DRAM Memory Banks */
+#define CONFIG_NR_DRAM_BANKS   7
+#define SDRAM_BANK_SIZE                (512UL << 20UL) /* 512 MB */
+
+#endif /* __CONFIG_PEACH_PI_H */
index 91bd37d6bca60fb9dfa9bc88ff61da2fad4bf8df..6516a727642f3afaad3c8c04249e75d1eabbcdf2 100644 (file)
 #define CONFIG_ENV_SPI_BASE    0x12D30000
 #define FLASH_SIZE             (0x4 << 20)
 #define CONFIG_ENV_OFFSET      (FLASH_SIZE - CONFIG_BL2_SIZE)
+#define CONFIG_SPI_BOOTING
 
 #include <configs/exynos5420-common.h>
 #include <configs/exynos5-dt-common.h>
 
 #define CONFIG_BOARD_COMMON
 
+#define CONFIG_SYS_SDRAM_BASE  0x20000000
+#define CONFIG_SYS_TEXT_BASE   0x23E00000
+#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_IRAM_TOP - 0x800)
+
 /* select serial console configuration */
 #define CONFIG_SERIAL3         /* use SERIAL 3 */
+#define CONFIG_DEFAULT_CONSOLE "console=ttySAC1,115200n8\0"
 
-#define CONFIG_SYS_PROMPT      "Peach # "
-#define CONFIG_IDENT_STRING    " for Peach"
+#define CONFIG_SYS_PROMPT      "Peach-Pit # "
+#define CONFIG_IDENT_STRING    " for Peach-Pit"
 
 #define CONFIG_VIDEO_PARADE
 
@@ -43,4 +49,8 @@
 #define CONFIG_USB_XHCI
 #define CONFIG_USB_XHCI_EXYNOS
 
+/* DRAM Memory Banks */
+#define CONFIG_NR_DRAM_BANKS   4
+#define SDRAM_BANK_SIZE                (512UL << 20UL) /* 512 MB */
+
 #endif /* __CONFIG_PEACH_PIT_H */
diff --git a/include/configs/ph1_ld4.h b/include/configs/ph1_ld4.h
deleted file mode 100644 (file)
index 005a853..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2012-2014 Panasonic Corporation
- *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __PH1_XXX_H
-#define __PH1_XXX_H
-
-/*
- * Support Card Select
- *
- *  CONFIG_PFC_MICRO_SUPPORT_CARD - Original Micro Support Card made by PFC.
- *  CONFIG_DCC_MICRO_SUPPORT_CARD - DCC version Micro Support Card.
- *                       CPLD is re-programmed for ARIMA board compatibility.
- *  No define                     - No support card.
- */
-
-#if 0
-#define CONFIG_PFC_MICRO_SUPPORT_CARD
-#else
-#define CONFIG_DCC_MICRO_SUPPORT_CARD
-#endif
-
-/*
- * Serial Configuration
- *   SoC UART     : enable CONFIG_UNIPHIER_SERIAL
- *   On-board UART: enable CONFIG_SYS_NS16550_SERIAL
- */
-#if 0
-#define CONFIG_SYS_NS16550_SERIAL
-#endif
-
-#define CONFIG_SMC911X
-
-#define CONFIG_DDR_NUM_CH0 1
-#define CONFIG_DDR_NUM_CH1 1
-
-#define CONFIG_DDR_FREQ 1600
-
-/*
- * Memory Size & Mapping
- */
-/* Physical start address of SDRAM */
-#define CONFIG_SDRAM0_BASE     0x80000000
-#define CONFIG_SDRAM0_SIZE     0x10000000
-#define CONFIG_SDRAM1_BASE     0x90000000
-#define CONFIG_SDRAM1_SIZE     0x10000000
-
-#define CONFIG_SPL_TEXT_BASE 0x40000
-
-#include "uniphier-common.h"
-
-#endif /* __PH1_XXX_H */
diff --git a/include/configs/ph1_pro4.h b/include/configs/ph1_pro4.h
deleted file mode 100644 (file)
index 7dd6fd2..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2012-2014 Panasonic Corporation
- *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __PH1_XXX_H
-#define __PH1_XXX_H
-
-/*
- * Support Card Select
- *
- *  CONFIG_PFC_MICRO_SUPPORT_CARD - Original Micro Support Card made by PFC.
- *  CONFIG_DCC_MICRO_SUPPORT_CARD - DCC version Micro Support Card.
- *                       CPLD is re-programmed for ARIMA board compatibility.
- *  No define                     - No support card.
- */
-
-#if 0
-#define CONFIG_PFC_MICRO_SUPPORT_CARD
-#else
-#define CONFIG_DCC_MICRO_SUPPORT_CARD
-#endif
-
-/*
- * Serial Configuration
- *   SoC UART     : enable CONFIG_UNIPHIER_SERIAL
- *   On-board UART: enable CONFIG_SYS_NS16550_SERIAL
- */
-#if 0
-#define CONFIG_SYS_NS16550_SERIAL
-#endif
-
-#define CONFIG_SMC911X
-
-#define CONFIG_DDR_NUM_CH0 2
-#define CONFIG_DDR_NUM_CH1 2
-
-#define CONFIG_DDR_FREQ 1600
-
-#define CONFIG_UNIPHIER_SMP
-
-/*
- * Memory Size & Mapping
- */
-/* Physical start address of SDRAM */
-#define CONFIG_SDRAM0_BASE     0x80000000
-#define CONFIG_SDRAM0_SIZE     0x20000000
-#define CONFIG_SDRAM1_BASE     0xa0000000
-#define CONFIG_SDRAM1_SIZE     0x20000000
-
-#define CONFIG_SPL_TEXT_BASE 0x100000
-
-#include "uniphier-common.h"
-
-#endif /* __PH1_XXX_H */
diff --git a/include/configs/ph1_sld8.h b/include/configs/ph1_sld8.h
deleted file mode 100644 (file)
index 1062aac..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2012-2014 Panasonic Corporation
- *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __PH1_XXX_H
-#define __PH1_XXX_H
-
-/*
- * Support Card Select
- *
- *  CONFIG_PFC_MICRO_SUPPORT_CARD - Original Micro Support Card made by PFC.
- *  CONFIG_DCC_MICRO_SUPPORT_CARD - DCC version Micro Support Card.
- *                       CPLD is re-programmed for ARIMA board compatibility.
- *  No define                     - No support card.
- */
-
-#if 0
-#define CONFIG_PFC_MICRO_SUPPORT_CARD
-#else
-#define CONFIG_DCC_MICRO_SUPPORT_CARD
-#endif
-
-/*
- * Serial Configuration
- *   SoC UART     : enable CONFIG_UNIPHIER_SERIAL
- *   On-board UART: enable CONFIG_SYS_NS16550_SERIAL
- */
-#if 0
-#define CONFIG_SYS_NS16550_SERIAL
-#endif
-
-#define CONFIG_SMC911X
-
-#define CONFIG_DDR_NUM_CH0 1
-#define CONFIG_DDR_NUM_CH1 1
-
-#define CONFIG_DDR_FREQ 1333
-
-/* #define CONFIG_DDR_STANDARD */
-
-/*
- * Memory Size & Mapping
- */
-/* Physical start address of SDRAM */
-#define CONFIG_SDRAM0_BASE     0x80000000
-#define CONFIG_SDRAM0_SIZE     0x10000000
-#define CONFIG_SDRAM1_BASE     0x90000000
-#define CONFIG_SDRAM1_SIZE     0x10000000
-
-#define CONFIG_SPL_TEXT_BASE 0x40000
-
-#include "uniphier-common.h"
-
-#endif /* __PH1_XXX_H */
index 4a71927217c67a83a3dcdabfd068f4ac4d27b458..10415d31a5e7191eb2f0ea46d2426b27e7bc5c6b 100644 (file)
@@ -20,6 +20,8 @@
 #include <asm/hardware.h>
 /* ARM asynchronous clock */
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #define CONFIG_DISPLAY_BOARDINFO
 
 #define MASTER_PLL_DIV         15
 /* DataFlash */
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5 * CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         1
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3    0xD0000000      /* CS3 */
index d9c04d14b96c027510dc61fb2b4f247b35ff4962..f6aebf4e4a7a4c1e17cc304663dd03a022cd2c76 100644 (file)
@@ -18,6 +18,8 @@
  */
 #include <asm/hardware.h>
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* ARM asynchronous clock */
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 /* DataFlash */
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH                   1
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5 * CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         1
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define AT91_SPI_CLK                           15000000
index f78e0ec173e0f1fecf09eed1f1420810ee0b6922..a8dc0f0b032692b594190579500642369cdd6238 100644 (file)
@@ -22,6 +22,8 @@
  */
 #include <asm/hardware.h>
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #define CONFIG_PM9G45          1       /* It's an Ronetix PM9G45 */
 #define CONFIG_SYS_AT91_CPU_NAME       "AT91SAM9G45"
 
diff --git a/include/configs/ppmc8260.h b/include/configs/ppmc8260.h
deleted file mode 100644 (file)
index 5dcd9cc..0000000
+++ /dev/null
@@ -1,986 +0,0 @@
-/*
- * (C) Copyright 2000
- * Murray Jensen <Murray.Jensen@cmst.csiro.au>
- *
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.com>
- *
- * Configuation settings for the WindRiver PPMC8260 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        CONFIG_SYS_TEXT_BASE    0xfe000000
-
-/*****************************************************************************
- *
- * These settings must match the way _your_ board is set up
- *
- *****************************************************************************/
-
-/* What is the oscillator's (UX2) frequency in Hz? */
-#define CONFIG_8260_CLKIN  (66 * 1000 * 1000)
-
-/*-----------------------------------------------------------------------
- * MODCK_H & MODCLK[1-3] - Ref: Section 9.2 in MPC8206 User Manual
- *-----------------------------------------------------------------------
- * What should MODCK_H be? It is dependent on the oscillator
- * frequency, MODCK[1-3], and desired CPM and core frequencies.
- * Here are some example values (all frequencies are in MHz):
- *
- * MODCK_H   MODCK[1-3]         Osc    CPM    Core  S2-6   S2-7   S2-8
- * -------   ----------         ---    ---    ----  -----  -----  -----
- * 0x2      0x2         33     133    133   Close  Open   Close
- * 0x2      0x3         33     133    166   Close  Open   Open
- * 0x2      0x4         33     133    200   Open   Close  Close
- * 0x2      0x5         33     133    233   Open   Close  Open
- * 0x2      0x6         33     133    266   Open   Open   Close
- *
- * 0x5      0x5         66     133    133   Open   Close  Open
- * 0x5      0x6         66     133    166   Open   Open   Close
- * 0x5      0x7         66     133    200   Open   Open   Open
- * 0x6      0x0         66     133    233   Close  Close  Close
- * 0x6      0x1         66     133    266   Close  Close  Open
- * 0x6      0x2         66     133    300   Close  Open   Close
- */
-#define CONFIG_SYS_PPMC_MODCK_H 0x05
-
-/* Define this if you want to boot from 0x00000100. If you don't define
- * this, you will need to program the bootloader to 0xfff00000, and
- * get the hardware reset config words at 0xfe000000. The simplest
- * way to do that is to program the bootloader at both addresses.
- * It is suggested that you just let U-Boot live at 0x00000000.
- */
-#define CONFIG_SYS_PPMC_BOOT_LOW 1
-
-/* What should the base address of the main FLASH be and how big is
- * it (in MBytes)? This must contain CONFIG_SYS_TEXT_BASE from board/ppmc8260/config.mk
- * The main FLASH is whichever is connected to *CS0. U-Boot expects
- * this to be the SIMM.
- */
-#define CONFIG_SYS_FLASH0_BASE 0xFE000000
-#define CONFIG_SYS_FLASH0_SIZE 16
-
-/* What should be the base address of the first SDRAM DIMM and how big is
- * it (in Mbytes)?
-*/
-#define CONFIG_SYS_SDRAM0_BASE 0x00000000
-#define CONFIG_SYS_SDRAM0_SIZE 128
-
-/* What should be the base address of the second SDRAM DIMM and how big is
- * it (in Mbytes)?
-*/
-#define CONFIG_SYS_SDRAM1_BASE 0x08000000
-#define CONFIG_SYS_SDRAM1_SIZE 128
-
-/* What should be the base address of the on board SDRAM and how big is
- * it (in Mbytes)?
-*/
-#define CONFIG_SYS_SDRAM2_BASE 0x38000000
-#define CONFIG_SYS_SDRAM2_SIZE 16
-
-/* What should be the base address of the MAILBOX  and how big is it
- * (in Bytes)
- * The eeprom lives at CONFIG_SYS_MAILBOX_BASE + 0x80000000
- */
-#define CONFIG_SYS_MAILBOX_BASE 0x32000000
-#define CONFIG_SYS_MAILBOX_SIZE 8192
-
-/* What is the base address of the I/O select lines and how big is it
- * (In Mbytes)?
- */
-
-#define CONFIG_SYS_IOSELECT_BASE 0xE0000000
-#define CONFIG_SYS_IOSELECT_SIZE 32
-
-
-/* What should be the base address of the LEDs and switch S0?
- * If you don't want them enabled, don't define this.
- */
-#define CONFIG_SYS_LED_BASE 0xF1000000
-
-/*
- * PPMC8260 with 256 16 MB DIMM:
- *
- *     0x0000 0000     Exception Vector code, 8k
- *          :
- *     0x0000 1FFF
- *     0x0000 2000     Free for Application Use
- *          :
- *          :
- *
- *          :
- *          :
- *     0x0FF5 FF30     Monitor Stack (Growing downward)
- *                    Monitor Stack Buffer (0x80)
- *     0x0FF5 FFB0     Board Info Data
- *     0x0FF6 0000     Malloc Arena
- *          :              CONFIG_ENV_SECT_SIZE, 256k
- *          :              CONFIG_SYS_MALLOC_LEN,    128k
- *     0x0FFC 0000     RAM Copy of Monitor Code
- *          :              CONFIG_SYS_MONITOR_LEN,   256k
- *     0x0FFF FFFF     [End of RAM], CONFIG_SYS_SDRAM_SIZE - 1
- */
-
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere.
- * The console can be on SMC1 or SMC2
- */
-#define CONFIG_CONS_ON_SMC     1       /* define if console on SMC */
-#undef CONFIG_CONS_ON_SCC              /* define if console on SCC */
-#undef CONFIG_CONS_NONE                /* define if console on neither */
-#define CONFIG_CONS_INDEX      1       /* which SMC/SCC channel for console */
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-
-#undef CONFIG_ETHER_ON_SCC             /* define if ethernet on SCC    */
-#define CONFIG_ETHER_ON_FCC            /* define if ethernet on FCC    */
-#undef CONFIG_ETHER_NONE               /* define if ethernet on neither */
-#define CONFIG_ETHER_INDEX     2       /* which SCC/FCC channel for ethernet */
-#define CONFIG_MII                     /* MII PHY management   */
-#define CONFIG_BITBANGMII              /* bit-bang MII PHY management  */
-/*
- * Port pins used for bit-banged MII communictions (if applicable).
- */
-#define MDIO_PORT      2       /* Port C */
-#define MDIO_DECLARE   volatile ioport_t *iop = ioport_addr ( \
-                               (immap_t *) CONFIG_SYS_IMMR, MDIO_PORT )
-#define MDC_DECLARE    MDIO_DECLARE
-
-#define MDIO_ACTIVE    (iop->pdir |=  0x00400000)
-#define MDIO_TRISTATE  (iop->pdir &= ~0x00400000)
-#define MDIO_READ      ((iop->pdat &  0x00400000) != 0)
-
-#define MDIO(bit)      if(bit) iop->pdat |=  0x00400000; \
-                       else    iop->pdat &= ~0x00400000
-
-#define MDC(bit)       if(bit) iop->pdat |=  0x00200000; \
-                       else    iop->pdat &= ~0x00200000
-
-#define MIIDELAY       udelay(1)
-
-
-/* Define this to reserve an entire FLASH sector (256 KB) for
- * environment variables. Otherwise, the environment will be
- * put in the same sector as U-Boot, and changing variables
- * will erase U-Boot temporarily
- */
-#define CONFIG_ENV_IN_OWN_SECT 1
-
-/* Define to allow the user to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-/* What should the console's baud rate be? */
-#define CONFIG_BAUDRATE                9600
-
-/* Ethernet MAC address */
-
-#define CONFIG_ETHADDR         00:a0:1e:90:2b:00
-
-/* Define this to set the last octet of the ethernet address
- * from the DS0-DS7 switch and light the leds with the result
- * The DS0-DS7 switch and the leds are backwards with respect
- * to each other. DS7 is on the board edge side of both the
- * led strip and the DS0-DS7 switch.
- */
-#define CONFIG_MISC_INIT_R
-
-/* Set to a positive value to delay for running BOOTCOMMAND */
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
-
-#if 0
-/* Be selective on what keys can delay or stop the autoboot process
- *     To stop use: " "
- */
-# define CONFIG_AUTOBOOT_KEYED
-# define CONFIG_AUTOBOOT_PROMPT \
-       "Autobooting in %d seconds, press \" \" to stop\n", bootdelay
-# define CONFIG_AUTOBOOT_STOP_STR      " "
-# undef CONFIG_AUTOBOOT_DELAY_STR
-# define DEBUG_BOOTKEYS                0
-#endif
-
-/* Define a command string that is automatically executed when no character
- * is read on the console interface withing "Boot Delay" after reset.
- */
-#undef CONFIG_BOOT_ROOT_INITRD         /* Use ram disk for the root file system */
-#define        CONFIG_BOOT_ROOT_NFS            /* Use a NFS mounted root file system */
-
-#ifdef CONFIG_BOOT_ROOT_INITRD
-#define CONFIG_BOOTCOMMAND \
-       "version;" \
-       "echo;" \
-       "bootp;" \
-       "setenv bootargs root=/dev/ram0 rw " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
-       "bootm"
-#endif /* CONFIG_BOOT_ROOT_INITRD */
-
-#ifdef CONFIG_BOOT_ROOT_NFS
-#define CONFIG_BOOTCOMMAND \
-       "version;" \
-       "echo;" \
-       "bootp;" \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
-       "bootm"
-#endif /* CONFIG_BOOT_ROOT_NFS */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_DNS
-
-
-/* undef this to save memory */
-#define CONFIG_SYS_LONGHELP
-
-/* Monitor Command Prompt */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_MEMTEST
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_IMMAP
-
-#undef CONFIG_CMD_KGDB
-
-
-/* Where do the internal registers live? */
-#define CONFIG_SYS_IMMR                0xf0000000
-
-/*****************************************************************************
- *
- * You should not have to modify any of the following settings
- *
- *****************************************************************************/
-
-#define CONFIG_PPMC8260                1       /* on an Wind River PPMC8260 Board  */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-/*
- * Miscellaneous configurable options
- */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CBSIZE            1024    /* Console I/O Buffer Size           */
-#else
-#  define CONFIG_SYS_CBSIZE            256     /* Console I/O Buffer Size           */
-#endif
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE        (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT)+16)
-
-#define CONFIG_SYS_MAXARGS             32      /* max number of command args   */
-
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size     */
-
-#define CONFIG_SYS_LOAD_ADDR           0x140000   /* default load address */
-
-#define CONFIG_SYS_MEMTEST_START       0x2000  /* memtest works from the end of */
-                                       /* the exception vector table */
-                                       /* to the end of the DRAM  */
-                                       /* less monitor and malloc area */
-#define CONFIG_SYS_STACK_USAGE         0x10000 /* Reserve 64k for the stack usage */
-#define CONFIG_SYS_MEM_END_USAGE       ( CONFIG_SYS_MONITOR_LEN \
-                               + CONFIG_SYS_MALLOC_LEN \
-                               + CONFIG_ENV_SECT_SIZE \
-                               + CONFIG_SYS_STACK_USAGE )
-
-#define CONFIG_SYS_MEMTEST_END         ( CONFIG_SYS_SDRAM_SIZE * 1024 * 1024 \
-                               - CONFIG_SYS_MEM_END_USAGE )
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#if defined(CONFIG_ETHER_ON_SCC) && (CONFIG_ETHER_INDEX == 1)
-/*
- *  Attention: This is board specific
- *  - RX clk is CLK11
- *  - TX clk is CLK12
- */
-#define CONFIG_SYS_CMXSCR_VALUE       (CMXSCR_RS1CS_CLK11  |\
-                               CMXSCR_TS1CS_CLK12)
-
-#elif defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 2)
-/*
- * Attention: this is board-specific
- * - Rx-CLK is CLK13
- * - Tx-CLK is CLK14
- * - Select bus for bd/buffers (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-#define CONFIG_SYS_CMXFCR_MASK2                (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-#define CONFIG_SYS_CMXFCR_VALUE2       (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-#define CONFIG_SYS_CPMFCR_RAMTYPE      0
-#define CONFIG_SYS_FCC_PSMR            (FCC_PSMR_FDE | FCC_PSMR_LPB)
-#endif /* CONFIG_ETHER_INDEX */
-
-#define CONFIG_SYS_FLASH_BASE  CONFIG_SYS_FLASH0_BASE
-#define CONFIG_SYS_FLASH_SIZE  CONFIG_SYS_FLASH0_SIZE
-#define CONFIG_SYS_SDRAM_BASE  CONFIG_SYS_SDRAM0_BASE
-#define CONFIG_SYS_SDRAM_SIZE  (CONFIG_SYS_SDRAM0_SIZE + CONFIG_SYS_SDRAM1_SIZE)
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- */
-#if defined(CONFIG_SYS_PPMC_BOOT_LOW)
-#  define  CONFIG_SYS_PPMC_HRCW_BOOT_FLAGS  (HRCW_CIP | HRCW_BMS)
-#else
-#  define  CONFIG_SYS_PPMC_HRCW_BOOT_FLAGS  (0)
-#endif /* defined(CONFIG_SYS_PPMC_BOOT_LOW) */
-
-/* get the HRCW ISB field from CONFIG_SYS_IMMR */
-#define CONFIG_SYS_PPMC_HRCW_IMMR      ( ((CONFIG_SYS_IMMR & 0x10000000) >> 10) | \
-                                 ((CONFIG_SYS_IMMR & 0x01000000) >>  7) | \
-                                 ((CONFIG_SYS_IMMR & 0x00100000) >>  4) )
-
-#define CONFIG_SYS_HRCW_MASTER         ( HRCW_EBM                              | \
-                                 HRCW_BPS11                            | \
-                                 HRCW_L2CPC10                          | \
-                                 HRCW_DPPC00                           | \
-                                 CONFIG_SYS_PPMC_HRCW_IMMR                     | \
-                                 HRCW_MMR00                            | \
-                                 HRCW_LBPC00                           | \
-                                 HRCW_APPC10                           | \
-                                 HRCW_CS10PC00                         | \
-                                 (CONFIG_SYS_PPMC_MODCK_H & HRCW_MODCK_H1111) | \
-                                 CONFIG_SYS_PPMC_HRCW_BOOT_FLAGS )
-
-/* no slaves */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- * Note also that the logic that sets CONFIG_SYS_RAMBOOT is platform dependent.
- */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH0_BASE
-
-#ifndef CONFIG_SYS_MONITOR_BASE
-#define CONFIG_SYS_MONITOR_BASE        0x0ff80000
-#endif
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#  define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 374 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant              */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver                */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max number of sectors on one chip    */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_FLASH_INCREMENT     0       /* there is only one bank               */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware protection              */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-
-
-#ifndef CONFIG_SYS_RAMBOOT
-
-#  define CONFIG_ENV_IS_IN_FLASH       1
-#  ifdef CONFIG_ENV_IN_OWN_SECT
-#    define CONFIG_ENV_ADDR    (CONFIG_SYS_MONITOR_BASE + 0x40000)
-#    define CONFIG_ENV_SECT_SIZE       0x40000
-#  else
-#    define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN - CONFIG_ENV_SECT_SIZE)
-#    define CONFIG_ENV_SIZE    0x1000  /* Total Size of Environment Sector     */
-#    define CONFIG_ENV_SECT_SIZE       0x40000 /* see README - env sect real size      */
-#  endif /* CONFIG_ENV_IN_OWN_SECT */
-
-#else
-#  define CONFIG_ENV_IS_IN_FLASH       1
-#  define CONFIG_ENV_ADDR              (CONFIG_SYS_FLASH_BASE + 0x40000)
-#define CONFIG_ENV_SIZE                0x1000
-#  define CONFIG_ENV_SECT_SIZE 0x40000
-#endif /* CONFIG_SYS_RAMBOOT */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU */
-
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                   2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE  |\
-                        HID0_DCE  |\
-                        HID0_ICFI |\
-                        HID0_DCI  |\
-                        HID0_IFEM |\
-                        HID0_ABE)
-
-#define CONFIG_SYS_HID0_FINAL  (HID0_ICE  |\
-                        HID0_IFEM |\
-                        HID0_ABE  |\
-                        HID0_EMCP)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMR         0
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                      4-25
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_BCR         (BCR_EBM      |\
-                        0x30000000)
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                            4-31
- * Ref Section 4.3.2.6 page 4-31
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_SYS_SIUMCR      (SIUMCR_ESE      |\
-                        SIUMCR_DPPC00   |\
-                        SIUMCR_L2CPC10  |\
-                        SIUMCR_LBPC00   |\
-                        SIUMCR_APPC10   |\
-                        SIUMCR_CS10PC00 |\
-                        SIUMCR_BCTLC00  |\
-                        SIUMCR_MMR00)
-
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC |\
-                        SYPCR_BMT  |\
-                        SYPCR_PBME |\
-                        SYPCR_LBME |\
-                        SYPCR_SWRI |\
-                        SYPCR_SWP)
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                    4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC |\
-                        TMCNTSC_ALR |\
-                        TMCNTSC_TCF |\
-                        TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS  |\
-                        PISCR_PTF |\
-                        PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                  9-8
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SCCR        0
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                                13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*
- * Initialize Memory Controller:
- *
- * Bank Bus    Machine PortSz  Device
- * ---- ---    ------- ------  ------
- *  0  60x     GPCM    32 bit  FLASH (SIMM - 32MB) *
- *  1  unused
- *  2  60x     SDRAM   64 bit  SDRAM (DIMM - 128MB)
- *  3  60x     SDRAM   64 bit  SDRAM (DIMM - 128MB)
- *  4  Local   SDRAM   32 bit  SDRAM (on board - 16MB)
- *  5  60x     GPCM     8 bit  Mailbox/EEPROM (8KB)
- *  6  60x     GPCM     8 bit  FLASH  (on board - 2MB) *
- *  7  60x     GPCM     8 bit  LEDs, switches
- *
- *  (*) This configuration requires the PPMC8260 be configured
- *     so that *CS0 goes to the FLASH SIMM, and *CS6 goes to
- *     the on board FLASH. In other words, JP24 should have
- *     pins 1 and 2 jumpered and pins 3 and 4 jumpered.
- *
- */
-
-/*-----------------------------------------------------------------------
- * BR0,BR1 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR0,OR1 - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-
-/* Bank 0,1 - FLASH SIMM
- *
- * This expects the FLASH SIMM to be connected to *CS0
- * It consists of 4 AM29F080B parts.
- *
- * Note: For the 4 MB SIMM, *CS1 is unused.
- */
-
-/* BR0 is configured as follows:
- *
- *     - Base address of 0xFE000000
- *     - 32 bit port size
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - GPCM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH0_BASE & BRx_BA_MSK) |\
-                        BRx_PS_32                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-/* OR0 is configured as follows:
- *
- *     - 32 MB
- *     - *BCTL0 is asserted upon access to the current memory bank
- *     - *CW / *WE are negated a quarter of a clock earlier
- *     - *CS is output at the same time as the address lines
- *     - Uses a clock cycle length of 5
- *     - *PSDVAL is generated internally by the memory controller
- *      unless *GTA is asserted earlier externally.
- *     - Relaxed timing is generated by the GPCM for accesses
- *      initiated to this memory region.
- *     - One idle clock is inserted between a read access from the
- *      current bank and the next access.
- */
-#define CONFIG_SYS_OR0_PRELIM  (MEG_TO_AM(CONFIG_SYS_FLASH0_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_TRLX                      |\
-                        ORxG_EHTR)
-
-/*-----------------------------------------------------------------------
- * BR2,BR3 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR2,OR3 - Option Register
- *     Ref: Section 10.3.2 on page 10-16
- *-----------------------------------------------------------------------
- */
-
-/*
- * Bank 2,3 - 128 MB SDRAM DIMM
- */
-
-/* With a 128 MB DIMM, the BR2 is configured as follows:
- *
- *     - Base address of 0x00000000/0x08000000
- *     - 64 bit port size (60x bus only)
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - SDRAM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM0_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_BR3_PRELIM  ((CONFIG_SYS_SDRAM1_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-/* With a 128 MB DIMM, the OR2 is configured as follows:
- *
- *     - 128 MB
- *     - 4 internal banks per device
- *     - Row start address bit is A8 with PSDMR[PBI] = 0
- *     - 13 row address lines
- *     - Back-to-back page mode
- *     - Internal bank interleaving within save device enabled
- */
-
-#define CONFIG_SYS_OR2_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM0_SIZE)      |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A7             |\
-                        ORxS_NUMR_13)
-
-#define CONFIG_SYS_OR3_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM1_SIZE)      |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A7             |\
-                        ORxS_NUMR_13)
-
-
-/*-----------------------------------------------------------------------
- * PSDMR - 60x Bus SDRAM Mode Register
- *     Ref: Section 10.3.3 on page 10-21
- *-----------------------------------------------------------------------
- */
-
-/* With a 128 MB DIMM, the PSDMR is configured as follows:
- *
- *     - Page Based Interleaving,
- *     - Refresh Enable,
- *     - Normal Operation
- *     - Address Multiplexing where A5 is output on A14 pin
- *      (A6 on A15, and so on),
- *     - use address pins A13-A15 as bank select,
- *     - A9 is output on SDA10 during an ACTIVATE command,
- *     - earliest timing for ACTIVATE command after REFRESH command is 7 clocks,
- *     - earliest timing for ACTIVATE or REFRESH command after PRECHARGE command
- *      is 3 clocks,
- *     - earliest timing for READ/WRITE command after ACTIVATE command is
- *      2 clocks,
- *     - earliest timing for PRECHARGE after last data was read is 1 clock,
- *     - earliest timing for PRECHARGE after last data was written is 1 clock,
- *     - External Address Multiplexing enabled
- *     - CAS Latency is 2.
- */
-#define CONFIG_SYS_PSDMR       (PSDMR_RFEN           |\
-                        PSDMR_SDAM_A14_IS_A5 |\
-                        PSDMR_BSMA_A13_A15   |\
-                        PSDMR_SDA10_PBI0_A9  |\
-                        PSDMR_RFRC_7_CLK     |\
-                        PSDMR_PRETOACT_3W    |\
-                        PSDMR_ACTTORW_2W     |\
-                        PSDMR_LDOTOPRE_1C    |\
-                        PSDMR_WRC_1C         |\
-                        PSDMR_EAMUX          |\
-                        PSDMR_CL_2)
-
-
-#define CONFIG_SYS_PSRT        0x0e
-#define CONFIG_SYS_MPTPR       MPTPR_PTP_DIV32
-
-
-/*-----------------------------------------------------------------------
- * BR4 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR4 - Option Register
- *     Ref: Section 10.3.2 on page 10-16
- *-----------------------------------------------------------------------
- */
-
-/*
- * Bank 4 - On board SDRAM
- *
- */
-/* With 16 MB of onboard SDRAM BR4 is configured as follows
- *
- *     - Base address 0x38000000
- *     - 32 bit port size
- *     - Data error checking disabled
- *     - Read/Write access
- *     - SDRAM local bus
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- *
- */
-
-#define CONFIG_SYS_BR4_PRELIM  ((CONFIG_SYS_SDRAM2_BASE & BRx_BA_MSK) |\
-                        BRx_PS_32                      |\
-                        BRx_DECC_NONE                  |\
-                        BRx_MS_SDRAM_L                 |\
-                        BRx_V)
-
-/*
- * With 16MB SDRAM, OR4 is configured as follows
- *     - 4 internal banks per device
- *     - Row start address bit is A10 with LSDMR[PBI] = 0
- *     - 12 row address lines
- *     - Back-to-back page mode
- *     - Internal bank interleaving within save device enabled
- */
-
-#define CONFIG_SYS_OR4_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM2_SIZE)      |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A10            |\
-                        ORxS_NUMR_12)
-
-
-/*-----------------------------------------------------------------------
- * LSDMR - Local Bus SDRAM Mode Register
- *     Ref: Section 10.3.4 on page 10-24
- *-----------------------------------------------------------------------
- */
-
-/* With a 16 MB onboard SDRAM, the LSDMR is configured as follows:
- *
- *     - Page Based Interleaving,
- *     - Refresh Enable,
- *     - Normal Operation
- *     - Address Multiplexing where A5 is output on A13 pin
- *      (A6 on A15, and so on),
- *     - use address pins A15-A17 as bank select,
- *     - A11 is output on SDA10 during an ACTIVATE command,
- *     - earliest timing for ACTIVATE command after REFRESH command is 7 clocks,
- *     - earliest timing for ACTIVATE or REFRESH command after PRECHARGE command
- *      is 2 clocks,
- *     - earliest timing for READ/WRITE command after ACTIVATE command is
- *      2 clocks,
- *     - SDRAM burst length is 8
- *     - earliest timing for PRECHARGE after last data was read is 1 clock,
- *     - earliest timing for PRECHARGE after last data was written is 1 clock,
- *     - External Address Multiplexing disabled
- *     - CAS Latency is 2.
- */
-#define CONFIG_SYS_LSDMR       (PSDMR_RFEN           |\
-                        PSDMR_SDAM_A13_IS_A5 |\
-                        PSDMR_BSMA_A15_A17   |\
-                        PSDMR_SDA10_PBI0_A11 |\
-                        PSDMR_RFRC_7_CLK     |\
-                        PSDMR_PRETOACT_2W    |\
-                        PSDMR_ACTTORW_2W     |\
-                        PSDMR_BL             |\
-                        PSDMR_LDOTOPRE_1C    |\
-                        PSDMR_WRC_1C         |\
-                        PSDMR_CL_2)
-
-#define CONFIG_SYS_LSRT        0x0e
-
-/*-----------------------------------------------------------------------
- * BR5 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR5 - Option Register
- *     Ref: Section 10.3.2 on page 10-16
- *-----------------------------------------------------------------------
- */
-
-/*
- * Bank 5 EEProm and Mailbox
- *
- * The EEPROM and mailbox live on the same chip select.
- * the eeprom is selected if the MSb of the address is set and the mailbox is
- * selected if the MSb of the address is clear.
- *
- */
-
-/* BR5 is configured as follows:
- *
- *     - Base address of 0x32000000/0xF2000000
- *     - 8 bit
- *     - Data error checking disabled
- *     - Read/Write access
- *     - GPCM 60x Bus
- *     - SDRAM local bus
- *     - No data pipelining is done
- *     - Valid
- */
-
-#define CONFIG_SYS_BR5_PRELIM  ((CONFIG_SYS_MAILBOX_BASE & BRx_BA_MSK) |\
-                        BRx_PS_8                        |\
-                        BRx_DECC_NONE                   |\
-                        BRx_MS_GPCM_P                   |\
-                        BRx_V)
-/* OR5 is configured as follows
- *     - buffer control enabled
- *     - chip select negated normally
- *     - CS output 1/2 clock after address
- *     - 15 wait states
- *     - *PSDVAL is generated internally by the memory controller
- *      unless *GTA is asserted earlier externally.
- *     - Relaxed timing is generated by the GPCM for accesses
- *      initiated to this memory region.
- *     - One idle clock is inserted between a read access from the
- *      current bank and the next access.
- */
-
-#define CONFIG_SYS_OR5_PRELIM ((P2SZ_TO_AM(CONFIG_SYS_MAILBOX_SIZE) & ~0x80000000) |\
-                        ORxG_ACS_DIV2                               |\
-                        ORxG_SCY_15_CLK                             |\
-                        ORxG_TRLX                                   |\
-                        ORxG_EHTR)
-
-/*-----------------------------------------------------------------------
- * BR6 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR6 - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-
-/* Bank 6 - I/O select
- *
- */
-
-/* BR6 is configured as follows:
- *
- *     - Base address of 0xE0000000
- *     - 16 bit port size
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - GPCM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR6_PRELIM  ((CONFIG_SYS_IOSELECT_BASE & BRx_BA_MSK) |\
-                          BRx_PS_16                      |\
-                          BRx_MS_GPCM_P                  |\
-                          BRx_V)
-
-/* OR6 is configured as follows
- *     - buffer control enabled
- *     - chip select negated normally
- *     - CS output 1/2 clock after address
- *     - 15 wait states
- *     - *PSDVAL is generated internally by the memory controller
- *      unless *GTA is asserted earlier externally.
- *     - Relaxed timing is generated by the GPCM for accesses
- *      initiated to this memory region.
- *     - One idle clock is inserted between a read access from the
- *      current bank and the next access.
- */
-
-#define CONFIG_SYS_OR6_PRELIM (MEG_TO_AM(CONFIG_SYS_IOSELECT_SIZE) |\
-                        ORxG_ACS_DIV2               |\
-                        ORxG_SCY_15_CLK             |\
-                        ORxG_TRLX                   |\
-                        ORxG_EHTR)
-
-
-/*-----------------------------------------------------------------------
- * BR7 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR7 - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-
-/* Bank 7 - LEDs and switches
- *
- *  LEDs     are at 0x00001 (write only)
- *  switches are at 0x00001 (read only)
- */
-#ifdef CONFIG_SYS_LED_BASE
-
-/* BR7 is configured as follows:
- *
- *     - Base address of 0xA0000000
- *     - 8 bit port size
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - GPCM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR7_PRELIM  ((CONFIG_SYS_LED_BASE & BRx_BA_MSK)      |\
-                          BRx_PS_8                      |\
-                          BRx_DECC_NONE                 |\
-                          BRx_MS_GPCM_P                 |\
-                          BRx_V)
-
-/* OR7 is configured as follows:
- *
- *     - 1 byte
- *     - *BCTL0 is asserted upon access to the current memory bank
- *     - *CW / *WE are negated a quarter of a clock earlier
- *     - *CS is output at the same time as the address lines
- *     - Uses a clock cycle length of 15
- *     - *PSDVAL is generated internally by the memory controller
- *      unless *GTA is asserted earlier externally.
- *     - Relaxed timing is generated by the GPCM for accesses
- *      initiated to this memory region.
- *     - One idle clock is inserted between a read access from the
- *      current bank and the next access.
- */
-#define CONFIG_SYS_OR7_PRELIM  (ORxG_AM_MSK                   |\
-                        ORxG_CSNT                     |\
-                        ORxG_ACS_DIV1                 |\
-                        ORxG_SCY_15_CLK               |\
-                        ORxG_TRLX                     |\
-                        ORxG_EHTR)
-#endif /* CONFIG_SYS_LED_BASE */
-#endif /* __CONFIG_H */
index 0f57e868a5d6d94c0364096204960d99f781c3c8..13fb675a5fdc9033123ebb4bb585eb0d98a9590a 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C
-#define CONFIG_HARD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index d75d5629639e71756c263d813534f410081bdabf..946b2c85e9dd4d04e68051b6b34875cb06f1b398 100644 (file)
 #define CONFIG_SYS_CONSOLE_FG_COL      0x00
 #endif
 
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_FIT
+#endif
+
 #endif /* ! __CONFIG_PXM2_H */
index 98ed8bc97f12c30ef146ee2895ff3503e7e0a324..1548d3e682d99bdb64a59d3b2475468e7ef69a0e 100644 (file)
@@ -13,6 +13,9 @@
 #define __CONFIG_H
 
 #define CONFIG_QEMU_MIPS
+
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 #define CONFIG_MISC_INIT_R
 
 #define CONFIG_BOOTDELAY       10      /* autoboot after 10 seconds */
index e8f5a4c9e8bdb21c48df7e7c0828b881ef81e87e..61cafadd7cf47872cbdc026c861109ff43a6d558 100644 (file)
@@ -13,6 +13,9 @@
 #define __CONFIG_H
 
 #define CONFIG_QEMU_MIPS
+
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 #define CONFIG_MISC_INIT_R
 
 #define CONFIG_BOOTDELAY       10      /* autoboot after 10 seconds */
index f9d6642cc49998217588132b4897eadf44865e29..d383fe878f547ecc58a206ba7b60e6037ca206ef 100644 (file)
@@ -12,8 +12,7 @@
 #include <asm/arch/imx-regs.h>
 
 /* High Level Configuration Options */
-#define CONFIG_ARM1136                 /* This is an arm1136 CPU core */
-#define CONFIG_MX31                    /* in a mx31 */
+#define CONFIG_MX31                    /* This is a mx31 */
 #define CONFIG_QONG
 
 #define CONFIG_DISPLAY_CPUINFO
diff --git a/include/configs/rcar-gen2-common.h b/include/configs/rcar-gen2-common.h
new file mode 100644 (file)
index 0000000..c33f1cb
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * include/configs/rcar-gen2-common.h
+ *
+ * Copyright (C) 2013,2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#ifndef __RCAR_GEN2_COMMON_H
+#define __RCAR_GEN2_COMMON_H
+
+#include <asm/arch/rmobile.h>
+
+#define CONFIG_CMD_EDITENV
+#define CONFIG_CMD_SAVEENV
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_DFL
+#define CONFIG_CMD_SDRAM
+#define CONFIG_CMD_RUN
+#define CONFIG_CMD_LOADS
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_NFS
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_SF
+#define CONFIG_CMD_SPI
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+
+#define CONFIG_SYS_THUMB_BUILD
+#define CONFIG_SYS_GENERIC_BOARD
+
+/* Support File sytems */
+#define CONFIG_FAT_WRITE
+#define CONFIG_DOS_PARTITION
+#define CONFIG_SUPPORT_VFAT
+#define CONFIG_FS_EXT4
+#define CONFIG_EXT4_WRITE
+
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_OF_LIBFDT
+
+#define CONFIG_BAUDRATE                38400
+#define CONFIG_BOOTDELAY       3
+#define CONFIG_BOOTARGS                ""
+
+#define CONFIG_VERSION_VARIABLE
+#undef CONFIG_SHOW_BOOT_PROGRESS
+
+#define CONFIG_ARCH_CPU_INIT
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_BOARD_EARLY_INIT_F
+
+#define CONFIG_TMU_TIMER
+#define CONFIG_SH_GPIO_PFC
+
+/* console */
+#undef  CONFIG_SYS_CONSOLE_INFO_QUIET
+#undef  CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
+#undef  CONFIG_SYS_CONSOLE_ENV_OVERWRITE
+
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_CBSIZE              256
+#define CONFIG_SYS_PBSIZE              256
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_BARGSIZE            512
+#define CONFIG_SYS_BAUDRATE_TABLE      { 38400, 115200 }
+
+#define CONFIG_SYS_SDRAM_BASE          (RCAR_GEN2_SDRAM_BASE)
+#define CONFIG_SYS_SDRAM_SIZE          (RCAR_GEN2_UBOOT_SDRAM_SIZE)
+#define CONFIG_SYS_LOAD_ADDR           (CONFIG_SYS_SDRAM_BASE + 0x7fc0)
+#define CONFIG_NR_DRAM_BANKS           1
+
+#define CONFIG_SYS_MONITOR_BASE                0x00000000
+#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (1 * 1024 * 1024)
+#define CONFIG_SYS_BOOTMAPSZ           (8 * 1024 * 1024)
+
+/* ENV setting */
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_ADDR        0xC0000
+
+/* Common ENV setting */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_ENV_SECT_SIZE   (256 * 1024)
+#define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
+#define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
+#define CONFIG_ENV_SIZE_REDUND (CONFIG_SYS_MONITOR_LEN)
+
+#endif /* __RCAR_GEN2_COMMON_H */
similarity index 93%
rename from include/configs/rpi_b.h
rename to include/configs/rpi.h
index ca27f9ad787008c507241464aadbbf191286a83f..c94f4112026e890f1e668356dda86fc7d9b15dfd 100644 (file)
@@ -21,7 +21,6 @@
 
 /* Architecture, CPU, etc.*/
 #define CONFIG_SYS_GENERIC_BOARD
-#define CONFIG_ARM1176
 #define CONFIG_BCM2835
 #define CONFIG_ARCH_CPU_INIT
 #define CONFIG_SYS_DCACHE_OFF
@@ -35,6 +34,7 @@
 #define CONFIG_DM
 #define CONFIG_CMD_DM
 #define CONFIG_DM_GPIO
+#define CONFIG_DM_SERIAL
 
 /* Memory layout */
 #define CONFIG_NR_DRAM_BANKS           1
@@ -52,6 +52,7 @@
                                         CONFIG_SYS_SDRAM_SIZE - \
                                         GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_MALLOC_LEN          SZ_4M
+#define CONFIG_SYS_MALLOC_F_LEN                (1 << 10)
 #define CONFIG_SYS_MEMTEST_START       0x00100000
 #define CONFIG_SYS_MEMTEST_END         0x00200000
 #define CONFIG_LOADADDR                        0x00200000
@@ -93,9 +94,7 @@
 #endif
 
 /* Console UART */
-#define CONFIG_PL011_SERIAL
-#define CONFIG_PL011_CLOCK             3000000
-#define CONFIG_PL01x_PORTS             { (void *)0x20201000 }
+#define CONFIG_PL01X_SERIAL
 #define CONFIG_CONS_INDEX              0
 #define CONFIG_BAUDRATE                        115200
 
 
 /* Environment */
 #define CONFIG_ENV_SIZE                        SZ_16K
-#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_IS_IN_FAT
+#define FAT_ENV_INTERFACE              "mmc"
+#define FAT_ENV_DEVICE_AND_PART                "0:1"
+#define FAT_ENV_FILE                   "uboot.env"
+#define CONFIG_FAT_WRITE
 #define CONFIG_ENV_VARS_UBOOT_CONFIG
 #define CONFIG_SYS_LOAD_ADDR           0x1000000
 #define CONFIG_CONSOLE_MUX
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_PREBOOT \
-       "if load mmc 0:1 ${loadaddr} /uEnv.txt; then " \
-               "env import -t -r ${loadaddr} ${filesize}; " \
-       "fi"
 
 /* Shell */
 #define CONFIG_SYS_MAXARGS             8
 
 /* Some things don't make sense on this HW or yet */
 #undef CONFIG_CMD_FPGA
-#undef CONFIG_CMD_SAVEENV
 
 /* Environment */
 #define ENV_DEVICE_SETTINGS \
        "pxefile_addr_r=0x00100000\0" \
        "kernel_addr_r=0x01000000\0" \
        "fdt_addr_r=0x02000000\0" \
-       "fdtfile=bcm2835-rpi-b.dtb\0" \
        "ramdisk_addr_r=0x02100000\0" \
 
 #define BOOT_TARGET_DEVICES(func) \
index 5436324580384065e8760f06e4fa0114bd8642e0..e7f73872eedd00bfda45bb8557df7a2b5b0e1df5 100644 (file)
@@ -11,7 +11,6 @@
 #define __RSK7203_H
 
 #undef DEBUG
-#define CONFIG_SH2A            1
 #define CONFIG_CPU_SH7203      1
 #define CONFIG_RSK7203 1
 
index 4aaa3ef74b73ba036b6879db26797866ce39c70a..2ecf785082623c06abe71b92365650243dceced2 100644 (file)
@@ -12,7 +12,6 @@
 #define __RSK7264_H
 
 #undef DEBUG
-#define CONFIG_SH2A            1
 #define CONFIG_CPU_SH7264      1
 #define CONFIG_RSK7264         1
 
index 11fc231fa675419b5b64ca678e04387a50e13aa0..14c1da774d070231997d4cf2bdced0f455972ff4 100644 (file)
@@ -11,7 +11,6 @@
 #define __RSK7269_H
 
 #undef DEBUG
-#define CONFIG_SH2A            1
 #define CONFIG_CPU_SH7269      1
 #define CONFIG_RSK7269         1
 
index 6bddededaeb782954b1617155f310063bba56676..0067ea46e0ccbfe8a0a319fbd991b96833d5b587 100644 (file)
 #define CONFIG_SYS_CONSOLE_FG_COL      0x00
 #endif
 
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_FIT
+#endif
+
 #endif /* ! __CONFIG_RUT_H */
index 3633a355bd7f83b04bb65a30b731029376b5bff9..dfa2e079480ed37a032e153fd1e5fd1ffb72a354 100644 (file)
 #define CONFIG_SYS_MAX_I2C_BUS 7
 #define CONFIG_USB_GADGET
 #define CONFIG_USB_GADGET_S3C_UDC_OTG
+#define CONFIG_USB_GADGET_S3C_UDC_OTG_PHY
 #define CONFIG_USB_GADGET_DUALSPEED
 #define CONFIG_USB_GADGET_VBUS_DRAW 2
 #define CONFIG_CMD_USB_MASS_STORAGE
index 4b30d148c31d4882aee8c544f2d724ca67130245..e7bace4345f919a4b55a016eb68a3f3c09487e6f 100644 (file)
 
 #define CONFIG_USB_GADGET
 #define CONFIG_USB_GADGET_S3C_UDC_OTG
+#define CONFIG_USB_GADGET_S3C_UDC_OTG_PHY
 #define CONFIG_USB_GADGET_DUALSPEED
 
 /*
diff --git a/include/configs/sacsng.h b/include/configs/sacsng.h
deleted file mode 100644 (file)
index 2dee315..0000000
+++ /dev/null
@@ -1,1038 +0,0 @@
-/*
- * (C) Copyright 2000
- * Murray Jensen <Murray.Jensen@cmst.csiro.au>
- *
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.com>
- *
- * Configuration settings for the SACSng 8260 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#undef DEBUG_BOOTP_EXT       /* Debug received vendor fields */
-
-#undef CONFIG_LOGBUFFER       /* External logbuffer support */
-
-/*****************************************************************************
- *
- * These settings must match the way _your_ board is set up
- *
- *****************************************************************************/
-
-/* What is the oscillator's (UX2) frequency in Hz? */
-#define CONFIG_8260_CLKIN  66666600
-
-/*-----------------------------------------------------------------------
- * MODCK_H & MODCLK[1-3] - Ref: Section 9.2 in MPC8206 User Manual
- *-----------------------------------------------------------------------
- * What should MODCK_H be? It is dependent on the oscillator
- * frequency, MODCK[1-3], and desired CPM and core frequencies.
- * Here are some example values (all frequencies are in MHz):
- *
- * MODCK_H   MODCK[1-3]         Osc    CPM    Core  S2-6   S2-7   S2-8
- * -------   ----------         ---    ---    ----  -----  -----  -----
- * 0x1      0x5         33     100    133   Open   Close  Open
- * 0x1      0x6         33     100    166   Open   Open   Close
- * 0x1      0x7         33     100    200   Open   Open   Open
- *
- * 0x2      0x2         33     133    133   Close  Open   Close
- * 0x2      0x3         33     133    166   Close  Open   Open
- * 0x2      0x4         33     133    200   Open   Close  Close
- * 0x2      0x5         33     133    233   Open   Close  Open
- * 0x2      0x6         33     133    266   Open   Open   Close
- *
- * 0x5      0x5         66     133    133   Open   Close  Open
- * 0x5      0x6         66     133    166   Open   Open   Close
- * 0x5      0x7         66     133    200   Open   Open   Open
- * 0x6      0x0         66     133    233   Close  Close  Close
- * 0x6      0x1         66     133    266   Close  Close  Open
- * 0x6      0x2         66     133    300   Close  Open   Close
- */
-#define CONFIG_SYS_SBC_MODCK_H 0x05
-
-/* Define this if you want to boot from 0x00000100. If you don't define
- * this, you will need to program the bootloader to 0xfff00000, and
- * get the hardware reset config words at 0xfe000000. The simplest
- * way to do that is to program the bootloader at both addresses.
- * It is suggested that you just let U-Boot live at 0x00000000.
- */
-#define CONFIG_SYS_SBC_BOOT_LOW 1
-
-/* What should the base address of the main FLASH be and how big is
- * it (in MBytes)?  This must contain CONFIG_SYS_TEXT_BASE from board/sacsng/config.mk
- * The main FLASH is whichever is connected to *CS0.
- */
-#define CONFIG_SYS_FLASH0_BASE 0x40000000
-#define CONFIG_SYS_FLASH0_SIZE 2
-
-/* What should the base address of the secondary FLASH be and how big
- * is it (in Mbytes)?  The secondary FLASH is whichever is connected
- * to *CS6.
- */
-#define CONFIG_SYS_FLASH1_BASE 0x60000000
-#define CONFIG_SYS_FLASH1_SIZE 2
-
-/* Define CONFIG_VERY_BIG_RAM to allow use of SDRAMs larger than 256MBytes
- */
-#define CONFIG_VERY_BIG_RAM    1
-
-/* What should be the base address of SDRAM DIMM and how big is
- * it (in Mbytes)?  This will normally auto-configure via the SPD.
-*/
-#define CONFIG_SYS_SDRAM0_BASE 0x00000000
-#define CONFIG_SYS_SDRAM0_SIZE 64
-
-/*
- * Memory map example with 64 MB DIMM:
- *
- *     0x0000 0000     Exception Vector code, 8k
- *          :
- *     0x0000 1FFF
- *     0x0000 2000     Free for Application Use
- *          :
- *          :
- *
- *          :
- *          :
- *     0x03F5 FF30     Monitor Stack (Growing downward)
- *                    Monitor Stack Buffer (0x80)
- *     0x03F5 FFB0     Board Info Data
- *     0x03F6 0000     Malloc Arena
- *          :              CONFIG_ENV_SECT_SIZE, 16k
- *          :              CONFIG_SYS_MALLOC_LEN,    128k
- *     0x03FC 0000     RAM Copy of Monitor Code
- *          :              CONFIG_SYS_MONITOR_LEN,   256k
- *     0x03FF FFFF     [End of RAM], CONFIG_SYS_SDRAM_SIZE - 1
- */
-
-#define CONFIG_POST            (CONFIG_SYS_POST_MEMORY | \
-                                CONFIG_SYS_POST_CPU)
-
-
-/*
- * select serial console configuration
- *
- * if either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
- * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
- * for SCC).
- *
- * if CONFIG_CONS_NONE is defined, then the serial console routines must
- * defined elsewhere.
- */
-#define CONFIG_CONS_ON_SMC     1       /* define if console on SMC */
-#undef CONFIG_CONS_ON_SCC              /* define if console on SCC */
-#undef CONFIG_CONS_NONE                /* define if console on neither */
-#define CONFIG_CONS_INDEX      1       /* which SMC/SCC channel for console */
-
-/*
- * select ethernet configuration
- *
- * if either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected, then
- * CONFIG_ETHER_INDEX must be set to the channel number (1-4 for SCC, 1-3
- * for FCC)
- *
- * if CONFIG_ETHER_NONE is defined, then either the ethernet routines must be
- * defined elsewhere (as for the console), or CONFIG_CMD_NET must be unset.
- */
-
-#undef CONFIG_ETHER_ON_SCC
-#define CONFIG_ETHER_ON_FCC
-#undef CONFIG_ETHER_NONE               /* define if ethernet on neither */
-
-#ifdef CONFIG_ETHER_ON_SCC
-#define CONFIG_ETHER_INDEX     1       /* which SCC/FCC channel for ethernet */
-#endif /* CONFIG_ETHER_ON_SCC */
-
-#ifdef CONFIG_ETHER_ON_FCC
-#define CONFIG_ETHER_INDEX     2       /* which SCC/FCC channel for ethernet */
-#undef  CONFIG_ETHER_LOOPBACK_TEST      /* Ethernet external loopback test */
-#define CONFIG_MII                     /* MII PHY management           */
-#define CONFIG_BITBANGMII              /* bit-bang MII PHY management  */
-/*
- * Port pins used for bit-banged MII communictions (if applicable).
- */
-
-#define MDIO_PORT      2               /* Port A=0, B=1, C=2, D=3 */
-#define MDIO_DECLARE   volatile ioport_t *iop = ioport_addr ( \
-                               (immap_t *) CONFIG_SYS_IMMR, MDIO_PORT )
-#define MDC_DECLARE    MDIO_DECLARE
-
-#define MDIO_ACTIVE    (iop->pdir |=  0x40000000)
-#define MDIO_TRISTATE  (iop->pdir &= ~0x40000000)
-#define MDIO_READ      ((iop->pdat &  0x40000000) != 0)
-
-#define MDIO(bit)      if(bit) iop->pdat |=  0x40000000; \
-                       else    iop->pdat &= ~0x40000000
-
-#define MDC(bit)       if(bit) iop->pdat |=  0x80000000; \
-                       else    iop->pdat &= ~0x80000000
-
-#define MIIDELAY       udelay(50)
-#endif /* CONFIG_ETHER_ON_FCC */
-
-#if defined(CONFIG_ETHER_ON_SCC) && (CONFIG_ETHER_INDEX == 1)
-
-/*
- *  - RX clk is CLK11
- *  - TX clk is CLK12
- */
-# define CONFIG_SYS_CMXSCR_VALUE1      (CMXSCR_RS1CS_CLK11  | CMXSCR_TS1CS_CLK12)
-
-#elif defined(CONFIG_ETHER_ON_FCC) && (CONFIG_ETHER_INDEX == 2)
-
-/*
- * - Rx-CLK is CLK13
- * - Tx-CLK is CLK14
- * - Select bus for bd/buffers (see 28-13)
- * - Enable Full Duplex in FSMR
- */
-# define CONFIG_SYS_CMXFCR_MASK2       (CMXFCR_FC2|CMXFCR_RF2CS_MSK|CMXFCR_TF2CS_MSK)
-# define CONFIG_SYS_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13|CMXFCR_TF2CS_CLK14)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-# define CONFIG_SYS_FCC_PSMR           (FCC_PSMR_FDE | FCC_PSMR_LPB)
-
-#endif /* CONFIG_ETHER_ON_FCC, CONFIG_ETHER_INDEX */
-
-#define CONFIG_SHOW_BOOT_PROGRESS 1    /* boot progress enabled        */
-
-/*
- * Configure for RAM tests.
- */
-#undef  CONFIG_SYS_DRAM_TEST                   /* calls other tests in board.c */
-
-
-/*
- * Status LED for power up status feedback.
- */
-#define CONFIG_STATUS_LED      1       /* Status LED enabled           */
-
-#define STATUS_LED_PAR         im_ioport.iop_ppara
-#define STATUS_LED_DIR         im_ioport.iop_pdira
-#define STATUS_LED_ODR         im_ioport.iop_podra
-#define STATUS_LED_DAT         im_ioport.iop_pdata
-
-#define STATUS_LED_BIT         0x00000800      /* LED 0 is on PA.20    */
-#define STATUS_LED_PERIOD      (CONFIG_SYS_HZ)
-#define STATUS_LED_STATE       STATUS_LED_OFF
-#define STATUS_LED_BIT1                0x00001000      /* LED 1 is on PA.19    */
-#define STATUS_LED_PERIOD1     (CONFIG_SYS_HZ)
-#define STATUS_LED_STATE1      STATUS_LED_OFF
-#define STATUS_LED_BIT2                0x00002000      /* LED 2 is on PA.18    */
-#define STATUS_LED_PERIOD2     (CONFIG_SYS_HZ/2)
-#define STATUS_LED_STATE2      STATUS_LED_ON
-
-#define STATUS_LED_ACTIVE      0               /* LED on for bit == 0  */
-
-#define STATUS_LED_YELLOW      0
-#define STATUS_LED_GREEN       1
-#define STATUS_LED_RED         2
-#define STATUS_LED_BOOT                1
-
-
-/*
- * Select SPI support configuration
- */
-#define CONFIG_SOFT_SPI                /* Enable SPI driver */
-#define MAX_SPI_BYTES   4      /* Maximum number of bytes we can handle */
-#undef  DEBUG_SPI               /* Disable SPI debugging */
-
-/*
- * Software (bit-bang) SPI driver configuration
- */
-#ifdef CONFIG_SOFT_SPI
-
-/*
- * Software (bit-bang) SPI driver configuration
- */
-#define I2C_SCLK       0x00002000      /* PD 18: Shift clock */
-#define I2C_MOSI       0x00004000      /* PD 17: Master Out, Slave In */
-#define I2C_MISO       0x00008000      /* PD 16: Master In, Slave Out */
-
-#define SPI_READ        ((immr->im_ioport.iop_pdatd & I2C_MISO) != 0)
-#define SPI_SDA(bit)    do {                                           \
-                       if(bit) immr->im_ioport.iop_pdatd |=  I2C_MOSI; \
-                       else    immr->im_ioport.iop_pdatd &= ~I2C_MOSI; \
-                       } while (0)
-#define SPI_SCL(bit)    do {                                           \
-                       if(bit) immr->im_ioport.iop_pdatd |=  I2C_SCLK; \
-                       else    immr->im_ioport.iop_pdatd &= ~I2C_SCLK; \
-                       } while (0)
-#define SPI_DELAY                       /* No delay is needed */
-#endif /* CONFIG_SOFT_SPI */
-
-
-/*
- * select I2C support configuration
- *
- * Supported configurations are {none, software, hardware} drivers.
- * If the software driver is chosen, there are some additional
- * configuration items that the driver uses to drive the port pins.
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      400000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0x7F
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define I2C_PORT       3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00010000)
-#define I2C_READ       ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00010000; \
-                       else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00020000; \
-                       else    iop->pdat &= ~0x00020000
-#define I2C_DELAY      udelay(20)      /* 1/4 I2C clock duration */
-
-/* Define this to reserve an entire FLASH sector for
- * environment variables. Otherwise, the environment will be
- * put in the same sector as U-Boot, and changing variables
- * will erase U-Boot temporarily
- */
-#define CONFIG_ENV_IN_OWN_SECT 1
-
-/* Define this to contain any number of null terminated strings that
- * will be part of the default environment compiled into the boot image.
- */
-#define CONFIG_EXTRA_ENV_SETTINGS \
-"quiet=0\0" \
-"serverip=192.168.123.205\0" \
-"ipaddr=192.168.123.203\0" \
-"checkhostname=VR8500\0" \
-"reprog="\
-    "bootp; " \
-    "tftpboot 0x140000 /bdi2000/u-boot.bin; " \
-    "protect off 60000000 6003FFFF; " \
-    "erase 60000000 6003FFFF; " \
-    "cp.b 140000 60000000 ${filesize}; " \
-    "protect on 60000000 6003FFFF\0" \
-"copyenv="\
-    "protect off 60040000 6004FFFF; " \
-    "erase 60040000 6004FFFF; " \
-    "cp.b 40040000 60040000 10000; " \
-    "protect on 60040000 6004FFFF\0" \
-"copyprog="\
-    "protect off 60000000 6003FFFF; " \
-    "erase 60000000 6003FFFF; " \
-    "cp.b 40000000 60000000 40000; " \
-    "protect on 60000000 6003FFFF\0" \
-"zapenv="\
-    "protect off 40040000 4004FFFF; " \
-    "erase 40040000 4004FFFF; " \
-    "protect on 40040000 4004FFFF\0" \
-"zapotherenv="\
-    "protect off 60040000 6004FFFF; " \
-    "erase 60040000 6004FFFF; " \
-    "protect on 60040000 6004FFFF\0" \
-"root-on-initrd="\
-    "setenv bootcmd "\
-    "version\\;" \
-    "echo\\;" \
-    "bootp\\;" \
-    "setenv bootargs root=/dev/ram0 rw quiet " \
-    "ip=\\${ipaddr}:\\${serverip}:\\${gatewayip}:\\${netmask}:\\${hostname}::off\\;" \
-    "run boot-hook\\;" \
-    "bootm\0" \
-"root-on-initrd-debug="\
-    "setenv bootcmd "\
-    "version\\;" \
-    "echo\\;" \
-    "bootp\\;" \
-    "setenv bootargs root=/dev/ram0 rw debug " \
-    "ip=\\${ipaddr}:\\${serverip}:\\${gatewayip}:\\${netmask}:\\${hostname}::off\\;" \
-    "run debug-hook\\;" \
-    "run boot-hook\\;" \
-    "bootm\0" \
-"root-on-nfs="\
-    "setenv bootcmd "\
-    "version\\;" \
-    "echo\\;" \
-    "bootp\\;" \
-    "setenv bootargs root=/dev/nfs rw quiet " \
-    "nfsroot=\\${serverip}:\\${rootpath} " \
-    "ip=\\${ipaddr}:\\${serverip}:\\${gatewayip}:\\${netmask}:\\${hostname}::off\\;" \
-    "run boot-hook\\;" \
-    "bootm\0" \
-"root-on-nfs-debug="\
-    "setenv bootcmd "\
-    "version\\;" \
-    "echo\\;" \
-    "bootp\\;" \
-    "setenv bootargs root=/dev/nfs rw debug " \
-    "nfsroot=\\${serverip}:\\${rootpath} " \
-    "ip=\\${ipaddr}:\\${serverip}:\\${gatewayip}:\\${netmask}:\\${hostname}::off\\;" \
-    "run debug-hook\\;" \
-    "run boot-hook\\;" \
-    "bootm\0" \
-"debug-checkout="\
-    "setenv checkhostname;" \
-    "setenv ethaddr 00:09:70:00:00:01;" \
-    "bootp;" \
-    "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} debug " \
-    "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
-    "run debug-hook;" \
-    "run boot-hook;" \
-    "bootm\0" \
-"debug-hook="\
-    "echo ipaddr    ${ipaddr};" \
-    "echo serverip  ${serverip};" \
-    "echo gatewayip ${gatewayip};" \
-    "echo netmask   ${netmask};" \
-    "echo hostname  ${hostname}\0" \
-"ana=run adc ; run dac\0" \
-"adc=run adc-12 ; run adc-34\0" \
-"adc-12=echo ### ADC-12 ; i2c md e 81 e\0" \
-"adc-34=echo ### ADC-34 ; i2c md f 81 e\0" \
-"dac=echo ### DAC ; i2c md 11 81 5\0" \
-"boot-hook=echo\0"
-
-/* What should the console's baud rate be? */
-#define CONFIG_BAUDRATE                9600
-
-/* Ethernet MAC address */
-#define CONFIG_ETHADDR         00:09:70:00:00:00
-
-/* The default Ethernet MAC address can be overwritten just once  */
-#ifdef  CONFIG_ETHADDR
-#define CONFIG_OVERWRITE_ETHADDR_ONCE 1
-#endif
-
-/*
- * Define this to do some miscellaneous board-specific initialization.
- */
-#define CONFIG_MISC_INIT_R
-
-/* Set to a positive value to delay for running BOOTCOMMAND */
-#define CONFIG_BOOTDELAY       1       /* autoboot after 1 second */
-
-/* Be selective on what keys can delay or stop the autoboot process
- *     To stop use: " "
- */
-#define CONFIG_AUTOBOOT_KEYED
-#define CONFIG_AUTOBOOT_PROMPT "Autobooting...\n"
-#define CONFIG_AUTOBOOT_STOP_STR       " "
-#undef  CONFIG_AUTOBOOT_DELAY_STR
-#define CONFIG_ZERO_BOOTDELAY_CHECK
-#define DEBUG_BOOTKEYS         0
-
-/* Define a command string that is automatically executed when no character
- * is read on the console interface withing "Boot Delay" after reset.
- */
-#undef CONFIG_BOOT_ROOT_INITRD         /* Use ram disk for the root file system */
-#define        CONFIG_BOOT_ROOT_NFS            /* Use a NFS mounted root file system */
-
-#ifdef CONFIG_BOOT_ROOT_INITRD
-#define CONFIG_BOOTCOMMAND \
-       "version;" \
-       "echo;" \
-       "bootp;" \
-       "setenv bootargs root=/dev/ram0 rw quiet " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
-       "run boot-hook;" \
-       "bootm"
-#endif /* CONFIG_BOOT_ROOT_INITRD */
-
-#ifdef CONFIG_BOOT_ROOT_NFS
-#define CONFIG_BOOTCOMMAND \
-       "version;" \
-       "echo;" \
-       "bootp;" \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} quiet " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
-       "run boot-hook;" \
-       "bootm"
-#endif /* CONFIG_BOOT_ROOT_NFS */
-
-#define CONFIG_BOOTP_RANDOM_DELAY       /* Randomize the BOOTP retry delay */
-#define CONFIG_LIB_RAND
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define  CONFIG_BOOTP_DNS
-#define  CONFIG_BOOTP_DNS2
-#define  CONFIG_BOOTP_SEND_HOSTNAME
-
-
-/* undef this to save memory */
-#define CONFIG_SYS_LONGHELP
-
-/* Monitor Command Prompt */
-
-#undef  CONFIG_SYS_HUSH_PARSER
-#ifdef  CONFIG_SYS_HUSH_PARSER
-#endif
-
-/* When CONFIG_TIMESTAMP is selected, the timestamp (date and time)
- * of an image is printed by image commands like bootm or iminfo.
- */
-#define CONFIG_TIMESTAMP
-
-/* If this variable is defined, an environment variable named "ver"
- * is created by U-Boot showing the U-Boot version.
- */
-#define CONFIG_VERSION_VARIABLE
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_SPI
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_IMMAP
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_PING
-
-#undef CONFIG_CMD_KGDB
-
-#ifdef CONFIG_ETHER_ON_FCC
-#define CONFIG_CMD_MII
-#endif
-
-
-/* Where do the internal registers live? */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-#undef CONFIG_WATCHDOG                 /* disable the watchdog */
-
-/*****************************************************************************
- *
- * You should not have to modify any of the following settings
- *
- *****************************************************************************/
-
-#define CONFIG_SACSng          1       /* munged for the SACSng */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_BOOTM_HEADER_QUIET 1        /* Suppress the image header dump    */
-                                       /* in the bootm command.             */
-#define CONFIG_SYS_BOOTM_PROGESS_QUIET 1       /* Suppress the progress displays,   */
-                                       /* "## <message>" from the bootm cmd */
-#define CONFIG_SYS_BOOTP_CHECK_HOSTNAME 1      /* If checkhostname environment is   */
-                                       /* defined, then the hostname param  */
-                                       /* validated against checkhostname.  */
-#define CONFIG_SYS_BOOTP_RETRY_COUNT 0x40000000 /* # of timeouts before giving up   */
-#define CONFIG_SYS_BOOTP_SHORT_RANDOM_DELAY 1  /* Use a short random delay value    */
-                                       /* (limited to maximum of 1024 msec) */
-#define CONFIG_SYS_CHK_FOR_ABORT_AT_LEAST_ONCE 1
-                                       /* Check for abort key presses       */
-                                       /* at least once in dependent of the */
-                                       /* CONFIG_BOOTDELAY value.           */
-#define CONFIG_SYS_CONSOLE_INFO_QUIET 1        /* Don't print console @ startup     */
-#define CONFIG_SYS_FAULT_ECHO_LINK_DOWN 1      /* Echo the inverted Ethernet link   */
-                                       /* state to the fault LED.           */
-#define CONFIG_SYS_FAULT_MII_ADDR 0x02         /* MII addr of the PHY to check for  */
-                                       /* the Ethernet link state.          */
-#define CONFIG_SYS_STATUS_FLASH_UNTIL_TFTP_OK 1 /* Keeping the status LED flashing  */
-                                       /* until the TFTP is successful.     */
-#define CONFIG_SYS_STATUS_OFF_AFTER_NETBOOT 1  /* After a successful netboot,       */
-                                       /* turn off the STATUS LEDs.         */
-#define CONFIG_SYS_TFTP_BLINK_STATUS_ON_DATA_IN 1 /* Blink status LED based on      */
-                                       /* incoming data.                    */
-#define CONFIG_SYS_TFTP_BLOCKS_PER_HASH 100    /* For every XX blocks, output a '#' */
-                                       /* to signify that tftp is moving.   */
-#define CONFIG_SYS_TFTP_HASHES_PER_FLASH 200   /* For every '#' hashes,             */
-                                       /* flash the status LED.             */
-#define CONFIG_SYS_TFTP_HASHES_PER_LINE 65     /* Only output XX '#'s per line      */
-                                       /* during the tftp file transfer.    */
-#define CONFIG_SYS_TFTP_PROGESS_QUIET 1        /* Suppress the progress displays    */
-                                       /* '#'s from the tftp command.       */
-#define CONFIG_SYS_TFTP_STATUS_QUIET 1         /* Suppress the status displays      */
-                                       /* issued during the tftp command.   */
-#define CONFIG_SYS_TFTP_TIMEOUT_COUNT 5        /* How many timeouts TFTP will allow */
-                                       /* before it gives up.               */
-
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CBSIZE            1024    /* Console I/O Buffer Size           */
-#else
-#  define CONFIG_SYS_CBSIZE            256     /* Console I/O Buffer Size           */
-#endif
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE        (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT)+16)
-
-#define CONFIG_SYS_MAXARGS             32      /* max number of command args   */
-
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size     */
-
-#define CONFIG_SYS_LOAD_ADDR           0x400000   /* default load address */
-
-#define CONFIG_SYS_ALT_MEMTEST                 /* Select full-featured memory test */
-#define CONFIG_SYS_MEMTEST_START       0x2000  /* memtest works from the end of */
-                                       /* the exception vector table */
-                                       /* to the end of the DRAM  */
-                                       /* less monitor and malloc area */
-#define CONFIG_SYS_STACK_USAGE         0x10000 /* Reserve 64k for the stack usage */
-#define CONFIG_SYS_MEM_END_USAGE       ( CONFIG_SYS_MONITOR_LEN \
-                               + CONFIG_SYS_MALLOC_LEN \
-                               + CONFIG_ENV_SECT_SIZE \
-                               + CONFIG_SYS_STACK_USAGE )
-
-#define CONFIG_SYS_MEMTEST_END         ( CONFIG_SYS_SDRAM_SIZE * 1024 * 1024 \
-                               - CONFIG_SYS_MEM_END_USAGE )
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_FLASH_BASE  CONFIG_SYS_FLASH0_BASE
-#define CONFIG_SYS_FLASH_SIZE  CONFIG_SYS_FLASH0_SIZE
-#define CONFIG_SYS_SDRAM_BASE  CONFIG_SYS_SDRAM0_BASE
-#define CONFIG_SYS_SDRAM_SIZE  CONFIG_SYS_SDRAM0_SIZE
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- */
-#if defined(CONFIG_SYS_SBC_BOOT_LOW)
-#  define  CONFIG_SYS_SBC_HRCW_BOOT_FLAGS  (HRCW_CIP | HRCW_BMS)
-#else
-#  define  CONFIG_SYS_SBC_HRCW_BOOT_FLAGS  (0)
-#endif /* defined(CONFIG_SYS_SBC_BOOT_LOW) */
-
-/* get the HRCW ISB field from CONFIG_SYS_IMMR */
-#define CONFIG_SYS_SBC_HRCW_IMMR       ( ((CONFIG_SYS_IMMR & 0x10000000) >> 10) | \
-                                 ((CONFIG_SYS_IMMR & 0x01000000) >>  7) | \
-                                 ((CONFIG_SYS_IMMR & 0x00100000) >>  4) )
-
-#define CONFIG_SYS_HRCW_MASTER         ( HRCW_BPS10                            | \
-                                 HRCW_DPPC11                           | \
-                                 CONFIG_SYS_SBC_HRCW_IMMR                      | \
-                                 HRCW_MMR00                            | \
-                                 HRCW_LBPC11                           | \
-                                 HRCW_APPC10                           | \
-                                 HRCW_CS10PC00                         | \
-                                 (CONFIG_SYS_SBC_MODCK_H & HRCW_MODCK_H1111)   | \
-                                 CONFIG_SYS_SBC_HRCW_BOOT_FLAGS )
-
-/* no slaves */
-#define CONFIG_SYS_HRCW_SLAVE1         0
-#define CONFIG_SYS_HRCW_SLAVE2         0
-#define CONFIG_SYS_HRCW_SLAVE3         0
-#define CONFIG_SYS_HRCW_SLAVE4         0
-#define CONFIG_SYS_HRCW_SLAVE5         0
-#define CONFIG_SYS_HRCW_SLAVE6         0
-#define CONFIG_SYS_HRCW_SLAVE7         0
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- * Note also that the logic that sets CONFIG_SYS_RAMBOOT is platform dependent.
- */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH0_BASE
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#  define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant              */
-#undef  CONFIG_SYS_FLASH_PROTECTION            /* use hardware protection              */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      (64+4)  /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    8000    /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    1       /* Timeout for Flash Write (in ms)      */
-
-#ifndef CONFIG_SYS_RAMBOOT
-#  define CONFIG_ENV_IS_IN_FLASH       1
-
-#  ifdef CONFIG_ENV_IN_OWN_SECT
-#    define CONFIG_ENV_ADDR    (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#    define CONFIG_ENV_SECT_SIZE       0x10000
-#  else
-#    define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN - CONFIG_ENV_SECT_SIZE)
-#    define CONFIG_ENV_SIZE    0x1000  /* Total Size of Environment Sector     */
-#    define CONFIG_ENV_SECT_SIZE       0x10000 /* see README - env sect real size      */
-#  endif /* CONFIG_ENV_IN_OWN_SECT */
-
-#else
-#  define CONFIG_ENV_IS_IN_NVRAM       1
-#  define CONFIG_ENV_ADDR              (CONFIG_SYS_MONITOR_BASE - 0x1000)
-#  define CONFIG_ENV_SIZE              0x200
-#endif /* CONFIG_SYS_RAMBOOT */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8260 CPU */
-
-#if defined(CONFIG_CMD_KGDB)
-# define CONFIG_SYS_CACHELINE_SHIFT    5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * HIDx - Hardware Implementation-dependent Registers                   2-11
- *-----------------------------------------------------------------------
- * HID0 also contains cache control - initially enable both caches and
- * invalidate contents, then the final state leaves only the instruction
- * cache enabled. Note that Power-On and Hard reset invalidate the caches,
- * but Soft reset does not.
- *
- * HID1 has only read-only information - nothing to set.
- */
-#define CONFIG_SYS_HID0_INIT   (HID0_ICE  |\
-                        HID0_DCE  |\
-                        HID0_ICFI |\
-                        HID0_DCI  |\
-                        HID0_IFEM |\
-                        HID0_ABE)
-
-#define CONFIG_SYS_HID0_FINAL  (HID0_ICE  |\
-                        HID0_IFEM |\
-                        HID0_ABE  |\
-                        HID0_EMCP)
-#define CONFIG_SYS_HID2        0
-
-/*-----------------------------------------------------------------------
- * RMR - Reset Mode Register
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RMR         0
-
-/*-----------------------------------------------------------------------
- * BCR - Bus Configuration                                      4-25
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_BCR         (BCR_ETM)
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                            4-31
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DPPC11  |\
-                        SIUMCR_L2CPC00 |\
-                        SIUMCR_APPC10  |\
-                        SIUMCR_MMR00)
-
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC |\
-                        SYPCR_BMT  |\
-                        SYPCR_PBME |\
-                        SYPCR_LBME |\
-                        SYPCR_SWRI |\
-                        SYPCR_SWP  |\
-                        SYPCR_SWE)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC |\
-                        SYPCR_BMT  |\
-                        SYPCR_PBME |\
-                        SYPCR_LBME |\
-                        SYPCR_SWRI |\
-                        SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TMCNTSC - Time Counter Status and Control                    4-40
- *-----------------------------------------------------------------------
- * Clear once per Second and Alarm Interrupt Status, Set 32KHz timersclk,
- * and enable Time Counter
- */
-#define CONFIG_SYS_TMCNTSC     (TMCNTSC_SEC |\
-                        TMCNTSC_ALR |\
-                        TMCNTSC_TCF |\
-                        TMCNTSC_TCE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control                4-42
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Set 32KHz timersclk, and enable
- * Periodic timer
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS  |\
-                        PISCR_PTF |\
-                        PISCR_PTE)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock Control                                  9-8
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_SCCR        0
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                                13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*
- * Initialize Memory Controller:
- *
- * Bank Bus    Machine PortSz  Device
- * ---- ---    ------- ------  ------
- *  0  60x     GPCM    16 bit  FLASH (primary flash - 2MB)
- *  1  60x     GPCM    -- bit  (Unused)
- *  2  60x     SDRAM   64 bit  SDRAM (DIMM)
- *  3  60x     SDRAM   64 bit  SDRAM (DIMM)
- *  4  60x     GPCM    -- bit  (Unused)
- *  5  60x     GPCM    -- bit  (Unused)
- *  6  60x     GPCM    16 bit  FLASH  (secondary flash - 2MB)
- */
-
-/*-----------------------------------------------------------------------
- * BR0,BR1 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR0,OR1 - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-
-/* Bank 0 - Primary FLASH
- */
-
-/* BR0 is configured as follows:
- *
- *     - Base address of 0x40000000
- *     - 16 bit port size
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - GPCM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR0_PRELIM  ((CONFIG_SYS_FLASH0_BASE & BRx_BA_MSK) |\
-                        BRx_PS_16                      |\
-                        BRx_MS_GPCM_P                  |\
-                        BRx_V)
-
-/* OR0 is configured as follows:
- *
- *     - 4 MB
- *     - *BCTL0 is asserted upon access to the current memory bank
- *     - *CW / *WE are negated a quarter of a clock earlier
- *     - *CS is output at the same time as the address lines
- *     - Uses a clock cycle length of 5
- *     - *PSDVAL is generated internally by the memory controller
- *      unless *GTA is asserted earlier externally.
- *     - Relaxed timing is generated by the GPCM for accesses
- *      initiated to this memory region.
- *     - One idle clock is inserted between a read access from the
- *      current bank and the next access.
- */
-#define CONFIG_SYS_OR0_PRELIM  (MEG_TO_AM(CONFIG_SYS_FLASH0_SIZE)      |\
-                        ORxG_CSNT                      |\
-                        ORxG_ACS_DIV1                  |\
-                        ORxG_SCY_5_CLK                 |\
-                        ORxG_TRLX                      |\
-                        ORxG_EHTR)
-
-/*-----------------------------------------------------------------------
- * BR2,BR3 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR2,OR3 - Option Register
- *     Ref: Section 10.3.2 on page 10-16
- *-----------------------------------------------------------------------
- */
-
-/* Bank 2,3 - SDRAM DIMM
- */
-
-/* The BR2 is configured as follows:
- *
- *     - Base address of 0x00000000
- *     - 64 bit port size (60x bus only)
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - SDRAM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_SDRAM0_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-#define CONFIG_SYS_BR3_PRELIM  ((CONFIG_SYS_SDRAM0_BASE & BRx_BA_MSK) |\
-                        BRx_PS_64                      |\
-                        BRx_MS_SDRAM_P                 |\
-                        BRx_V)
-
-/* With a 64 MB DIMM, the OR2 is configured as follows:
- *
- *     - 64 MB
- *     - 4 internal banks per device
- *     - Row start address bit is A8 with PSDMR[PBI] = 0
- *     - 12 row address lines
- *     - Back-to-back page mode
- *     - Internal bank interleaving within save device enabled
- */
-#if (CONFIG_SYS_SDRAM0_SIZE == 64)
-#define CONFIG_SYS_OR2_PRELIM  (MEG_TO_AM(CONFIG_SYS_SDRAM0_SIZE)      |\
-                        ORxS_BPD_4                     |\
-                        ORxS_ROWST_PBI0_A8             |\
-                        ORxS_NUMR_12)
-#else
-#error "INVALID SDRAM CONFIGURATION"
-#endif
-
-/*-----------------------------------------------------------------------
- * PSDMR - 60x Bus SDRAM Mode Register
- *     Ref: Section 10.3.3 on page 10-21
- *-----------------------------------------------------------------------
- */
-
-/* Address that the DIMM SPD memory lives at.
- */
-#define SDRAM_SPD_ADDR 0x50
-
-#if (CONFIG_SYS_SDRAM0_SIZE == 64)
-/* With a 64 MB DIMM, the PSDMR is configured as follows:
- *
- *     - Bank Based Interleaving,
- *     - Refresh Enable,
- *     - Address Multiplexing where A5 is output on A14 pin
- *      (A6 on A15, and so on),
- *     - use address pins A14-A16 as bank select,
- *     - A9 is output on SDA10 during an ACTIVATE command,
- *     - earliest timing for ACTIVATE command after REFRESH command is 7 clocks,
- *     - earliest timing for ACTIVATE or REFRESH command after PRECHARGE command
- *      is 3 clocks,
- *     - earliest timing for READ/WRITE command after ACTIVATE command is
- *      2 clocks,
- *     - earliest timing for PRECHARGE after last data was read is 1 clock,
- *     - earliest timing for PRECHARGE after last data was written is 1 clock,
- *     - CAS Latency is 2.
- */
-#define CONFIG_SYS_PSDMR       (PSDMR_RFEN           |\
-                        PSDMR_SDAM_A14_IS_A5 |\
-                        PSDMR_BSMA_A14_A16   |\
-                        PSDMR_SDA10_PBI0_A9  |\
-                        PSDMR_RFRC_7_CLK     |\
-                        PSDMR_PRETOACT_3W    |\
-                        PSDMR_ACTTORW_2W     |\
-                        PSDMR_LDOTOPRE_1C    |\
-                        PSDMR_WRC_1C         |\
-                        PSDMR_CL_2)
-#else
-#error "INVALID SDRAM CONFIGURATION"
-#endif
-
-/*
- * Shoot for approximately 1MHz on the prescaler.
- */
-#if (CONFIG_8260_CLKIN >= (60 * 1000 * 1000))
-#define CONFIG_SYS_MPTPR       MPTPR_PTP_DIV64
-#elif (CONFIG_8260_CLKIN >= (30 * 1000 * 1000))
-#define CONFIG_SYS_MPTPR       MPTPR_PTP_DIV32
-#else
-#warning "Unconfigured bus clock freq: check CONFIG_SYS_MPTPR and CONFIG_SYS_PSRT are OK"
-#define CONFIG_SYS_MPTPR       MPTPR_PTP_DIV32
-#endif
-#define CONFIG_SYS_PSRT        14
-
-
-/*-----------------------------------------------------------------------
- * BR6 - Base Register
- *     Ref: Section 10.3.1 on page 10-14
- * OR6 - Option Register
- *     Ref: Section 10.3.2 on page 10-18
- *-----------------------------------------------------------------------
- */
-
-/* Bank 6 - Secondary FLASH
- *
- * The secondary FLASH is connected to *CS6
- */
-#if (defined(CONFIG_SYS_FLASH1_BASE) && defined(CONFIG_SYS_FLASH1_SIZE))
-
-/* BR6 is configured as follows:
- *
- *     - Base address of 0x60000000
- *     - 16 bit port size
- *     - Data errors checking is disabled
- *     - Read and write access
- *     - GPCM 60x bus
- *     - Access are handled by the memory controller according to MSEL
- *     - Not used for atomic operations
- *     - No data pipelining is done
- *     - Valid
- */
-#  define CONFIG_SYS_BR6_PRELIM  ((CONFIG_SYS_FLASH1_BASE & BRx_BA_MSK) |\
-                          BRx_PS_16                      |\
-                          BRx_MS_GPCM_P                  |\
-                          BRx_V)
-
-/* OR6 is configured as follows:
- *
- *     - 2 MB
- *     - *BCTL0 is asserted upon access to the current memory bank
- *     - *CW / *WE are negated a quarter of a clock earlier
- *     - *CS is output at the same time as the address lines
- *     - Uses a clock cycle length of 5
- *     - *PSDVAL is generated internally by the memory controller
- *      unless *GTA is asserted earlier externally.
- *     - Relaxed timing is generated by the GPCM for accesses
- *      initiated to this memory region.
- *     - One idle clock is inserted between a read access from the
- *      current bank and the next access.
- */
-#  define CONFIG_SYS_OR6_PRELIM  (MEG_TO_AM(CONFIG_SYS_FLASH1_SIZE)  |\
-                          ORxG_CSNT                   |\
-                          ORxG_ACS_DIV1               |\
-                          ORxG_SCY_5_CLK              |\
-                          ORxG_TRLX                   |\
-                          ORxG_EHTR)
-#endif /* (defined(CONFIG_SYS_FLASH1_BASE) && defined(CONFIG_SYS_FLASH1_SIZE)) */
-
-#endif /* __CONFIG_H */
index 5b77db269857468cb42cc27a1aeb030e31d6178c..d5588b12414c54c3dadba4d86ecc450223169695 100644 (file)
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x400
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x200
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 #define CONFIG_SPL_FAT_SUPPORT
 #define CONFIG_SPL_LIBDISK_SUPPORT
index dfbf3cb78611ccfc0c7d3659de498e8d34e67973..f2849d794e7fcab4e068ba736654c008b1e3614c 100644 (file)
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x400
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x200
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 #define CONFIG_SPL_FAT_SUPPORT
 #define CONFIG_SPL_LIBDISK_SUPPORT
diff --git a/include/configs/sama5d4_xplained.h b/include/configs/sama5d4_xplained.h
new file mode 100644 (file)
index 0000000..104edef
--- /dev/null
@@ -0,0 +1,216 @@
+/*
+ * Configuration settings for the SAMA5D4 Xplained ultra board.
+ *
+ * Copyright (C) 2014 Atmel
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <asm/hardware.h>
+
+#define CONFIG_SYS_TEXT_BASE           0x26f00000
+
+/* ARM asynchronous clock */
+#define CONFIG_SYS_AT91_SLOW_CLOCK      32768
+#define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
+
+#define CONFIG_ARCH_CPU_INIT
+
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_DISPLAY_CPUINFO
+
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_OF_LIBFDT               /* Device Tree support */
+
+#define CONFIG_SYS_GENERIC_BOARD
+
+/* general purpose I/O */
+#define CONFIG_AT91_GPIO
+
+/* serial console */
+#define CONFIG_ATMEL_USART
+#define CONFIG_USART_BASE              ATMEL_BASE_USART3
+#define CONFIG_USART_ID                        ATMEL_ID_USART3
+
+#define CONFIG_BOOTDELAY               3
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+
+/* No NOR flash */
+#define CONFIG_SYS_NO_FLASH
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_IMI
+#undef CONFIG_CMD_LOADS
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_SETEXPR
+
+/* SDRAM */
+#define CONFIG_NR_DRAM_BANKS           1
+#define CONFIG_SYS_SDRAM_BASE           ATMEL_BASE_DDRCS
+#define CONFIG_SYS_SDRAM_SIZE          0x20000000
+
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - GENERATED_GBL_DATA_SIZE)
+
+#define CONFIG_SYS_LOAD_ADDR           0x22000000 /* load address */
+
+/* SerialFlash */
+#define CONFIG_CMD_SF
+
+#ifdef CONFIG_CMD_SF
+#define CONFIG_ATMEL_SPI
+#define CONFIG_ATMEL_SPI0
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_ATMEL
+#define CONFIG_SF_DEFAULT_BUS          0
+#define CONFIG_SF_DEFAULT_CS           0
+#define CONFIG_SF_DEFAULT_SPEED                30000000
+#endif
+
+/* NAND flash */
+#define CONFIG_CMD_NAND
+
+#ifdef CONFIG_CMD_NAND
+#define CONFIG_NAND_ATMEL
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_SYS_NAND_BASE           ATMEL_BASE_CS3
+/* our ALE is AD21 */
+#define CONFIG_SYS_NAND_MASK_ALE       (1 << 21)
+/* our CLE is AD22 */
+#define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+/* PMECC & PMERRLOC */
+#define CONFIG_ATMEL_NAND_HWECC
+#define CONFIG_ATMEL_NAND_HW_PMECC
+#endif
+
+/* MMC */
+#define CONFIG_CMD_MMC
+
+#ifdef CONFIG_CMD_MMC
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_GENERIC_ATMEL_MCI
+#define ATMEL_BASE_MMCI                        ATMEL_BASE_MCI1
+#endif
+
+/* USB */
+#define CONFIG_CMD_USB
+
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_ATMEL
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
+#define CONFIG_USB_STORAGE
+#endif
+
+#if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC)
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
+/* Ethernet Hardware */
+#define CONFIG_MACB
+#define CONFIG_RMII
+#define CONFIG_NET_RETRY_COUNT         20
+#define CONFIG_MACB_SEARCH_PHY
+
+/* LCD */
+/* #define CONFIG_LCD */
+#ifdef CONFIG_LCD
+#define LCD_BPP                                LCD_COLOR16
+#define LCD_OUTPUT_BPP                  24
+#define CONFIG_LCD_LOGO
+#define CONFIG_LCD_INFO
+#define CONFIG_LCD_INFO_BELOW_LOGO
+#define CONFIG_SYS_WHITE_ON_BLACK
+#define CONFIG_ATMEL_HLCD
+#define CONFIG_ATMEL_LCD_RGB565
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+#endif
+
+#ifdef CONFIG_SYS_USE_SERIALFLASH
+/* bootstrap + u-boot + env + linux in serial flash */
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SPI_BUS     CONFIG_SF_DEFAULT_BUS
+#define CONFIG_ENV_SPI_CS      CONFIG_SF_DEFAULT_CS
+#define CONFIG_ENV_OFFSET       0x10000
+#define CONFIG_ENV_SIZE         0x10000
+#define CONFIG_ENV_SECT_SIZE    0x1000
+#define CONFIG_BOOTCOMMAND      "sf probe 0; " \
+                               "sf read 0x21000000 0xa0000 0x60000; " \
+                               "sf read 0x22000000 0x100000 0x300000; " \
+                               "bootz 0x22000000 - 0x21000000"
+#elif CONFIG_SYS_USE_NANDFLASH
+/* bootstrap + u-boot + env in nandflash */
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET              0xc0000
+#define CONFIG_ENV_OFFSET_REDUND       0x100000
+#define CONFIG_ENV_SIZE                        0x20000
+#define CONFIG_BOOTCOMMAND     "nand read 0x21000000 0x180000 0x80000;" \
+                               "nand read 0x22000000 0x200000 0x600000;" \
+                               "bootz 0x22000000 - 0x21000000"
+#elif CONFIG_SYS_USE_MMC
+/* bootstrap + u-boot + env in sd card */
+#define CONFIG_ENV_IS_IN_FAT
+#define CONFIG_FAT_WRITE
+#define FAT_ENV_INTERFACE      "mmc"
+/*
+ * We don't specify the part number, if device 0 has partition table, it means
+ * the first partition; it no partition table, then take whole device as a
+ * FAT file system.
+ */
+#define FAT_ENV_DEVICE_AND_PART        "0"
+#define FAT_ENV_FILE           "uboot.env"
+#define CONFIG_ENV_SIZE                0x4000
+#define CONFIG_BOOTCOMMAND     "fatload mmc 0:1 0x21000000 at91-sama5d4_xplained.dtb; " \
+                               "fatload mmc 0:1 0x22000000 zImage; " \
+                               "bootz 0x22000000 - 0x21000000"
+#endif
+
+#ifdef CONFIG_SYS_USE_MMC
+#define CONFIG_BOOTARGS                                                        \
+       "console=ttyS0,115200 earlyprintk "                             \
+       "root=/dev/mmcblk0p2 rw rootwait"
+#else
+#define CONFIG_BOOTARGS                                                        \
+       "console=ttyS0,115200 earlyprintk "                             \
+       "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,"          \
+       "256K(env),256k(evn_redundent),256k(spare),"                    \
+       "512k(dtb),6M(kernel)ro,-(rootfs) "                             \
+       "rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs"
+#endif
+
+#define CONFIG_BAUDRATE                        115200
+
+#define CONFIG_SYS_PROMPT              "U-Boot> "
+#define CONFIG_SYS_CBSIZE              256
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
+                                       sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_HUSH_PARSER
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
+
+#endif
diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
new file mode 100644 (file)
index 0000000..cbdb3a2
--- /dev/null
@@ -0,0 +1,214 @@
+/*
+ * Configuration settings for the SAMA5D4EK board.
+ *
+ * Copyright (C) 2014 Atmel
+ *                   Bo Shen <voice.shen@atmel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <asm/hardware.h>
+
+#define CONFIG_SYS_TEXT_BASE           0x26f00000
+
+/* ARM asynchronous clock */
+#define CONFIG_SYS_AT91_SLOW_CLOCK      32768
+#define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
+
+#define CONFIG_ARCH_CPU_INIT
+
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_DISPLAY_CPUINFO
+
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_OF_LIBFDT               /* Device Tree support */
+
+#define CONFIG_SYS_GENERIC_BOARD
+
+/* general purpose I/O */
+#define CONFIG_AT91_GPIO
+
+/* serial console */
+#define CONFIG_ATMEL_USART
+#define CONFIG_USART_BASE              ATMEL_BASE_USART3
+#define        CONFIG_USART_ID                 ATMEL_ID_USART3
+
+#define CONFIG_BOOTDELAY               3
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+
+/* No NOR flash */
+#define CONFIG_SYS_NO_FLASH
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_IMI
+#undef CONFIG_CMD_LOADS
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_SETEXPR
+
+/* SDRAM */
+#define CONFIG_NR_DRAM_BANKS           1
+#define CONFIG_SYS_SDRAM_BASE           ATMEL_BASE_DDRCS
+#define CONFIG_SYS_SDRAM_SIZE          0x20000000
+
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - GENERATED_GBL_DATA_SIZE)
+
+#define CONFIG_SYS_LOAD_ADDR           0x22000000 /* load address */
+
+/* SerialFlash */
+#define CONFIG_CMD_SF
+
+#ifdef CONFIG_CMD_SF
+#define CONFIG_ATMEL_SPI
+#define CONFIG_ATMEL_SPI0
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_ATMEL
+#define CONFIG_SF_DEFAULT_BUS          0
+#define CONFIG_SF_DEFAULT_CS           0
+#define CONFIG_SF_DEFAULT_SPEED                30000000
+#endif
+
+/* NAND flash */
+#define CONFIG_CMD_NAND
+
+#ifdef CONFIG_CMD_NAND
+#define CONFIG_NAND_ATMEL
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_SYS_NAND_BASE           ATMEL_BASE_CS3
+/* our ALE is AD21 */
+#define CONFIG_SYS_NAND_MASK_ALE       (1 << 21)
+/* our CLE is AD22 */
+#define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+/* PMECC & PMERRLOC */
+#define CONFIG_ATMEL_NAND_HWECC
+#define CONFIG_ATMEL_NAND_HW_PMECC
+#endif
+
+/* MMC */
+#define CONFIG_CMD_MMC
+
+#ifdef CONFIG_CMD_MMC
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_GENERIC_ATMEL_MCI
+#define ATMEL_BASE_MMCI                        ATMEL_BASE_MCI1
+#endif
+
+/* USB */
+#define CONFIG_CMD_USB
+
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_ATMEL
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
+#define CONFIG_USB_STORAGE
+#endif
+
+#if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC)
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
+/* Ethernet Hardware */
+#define CONFIG_MACB
+#define CONFIG_RMII
+#define CONFIG_NET_RETRY_COUNT         20
+#define CONFIG_MACB_SEARCH_PHY
+
+/* LCD */
+#define CONFIG_LCD
+#define LCD_BPP                                LCD_COLOR16
+#define LCD_OUTPUT_BPP                  18
+#define CONFIG_LCD_LOGO
+#define CONFIG_LCD_INFO
+#define CONFIG_LCD_INFO_BELOW_LOGO
+#define CONFIG_SYS_WHITE_ON_BLACK
+#define CONFIG_ATMEL_HLCD
+#define CONFIG_ATMEL_LCD_RGB565
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+
+#ifdef CONFIG_SYS_USE_SERIALFLASH
+/* bootstrap + u-boot + env + linux in serial flash */
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SPI_BUS     CONFIG_SF_DEFAULT_BUS
+#define CONFIG_ENV_SPI_CS      CONFIG_SF_DEFAULT_CS
+#define CONFIG_ENV_OFFSET       0x10000
+#define CONFIG_ENV_SIZE         0x10000
+#define CONFIG_ENV_SECT_SIZE    0x1000
+#define CONFIG_BOOTCOMMAND      "sf probe 0; " \
+                               "sf read 0x21000000 0xa0000 0x60000; " \
+                               "sf read 0x22000000 0x100000 0x300000; " \
+                               "bootz 0x22000000 - 0x21000000"
+#elif CONFIG_SYS_USE_NANDFLASH
+/* bootstrap + u-boot + env in nandflash */
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET              0xc0000
+#define CONFIG_ENV_OFFSET_REDUND       0x100000
+#define CONFIG_ENV_SIZE                        0x20000
+#define CONFIG_BOOTCOMMAND     "nand read 0x21000000 0x180000 0x80000;" \
+                               "nand read 0x22000000 0x200000 0x600000;" \
+                               "bootz 0x22000000 - 0x21000000"
+#elif CONFIG_SYS_USE_MMC
+/* bootstrap + u-boot + env in sd card */
+#define CONFIG_ENV_IS_IN_FAT
+#define CONFIG_FAT_WRITE
+#define FAT_ENV_INTERFACE      "mmc"
+/*
+ * We don't specify the part number, if device 0 has partition table, it means
+ * the first partition; it no partition table, then take whole device as a
+ * FAT file system.
+ */
+#define FAT_ENV_DEVICE_AND_PART        "0"
+#define FAT_ENV_FILE           "uboot.env"
+#define CONFIG_ENV_SIZE                0x4000
+#define CONFIG_BOOTCOMMAND     "fatload mmc 0:1 0x21000000 sama5d4ek.dtb; " \
+                               "fatload mmc 0:1 0x22000000 zImage; " \
+                               "bootz 0x22000000 - 0x21000000"
+#endif
+
+#ifdef CONFIG_SYS_USE_MMC
+#define CONFIG_BOOTARGS                                                        \
+       "console=ttyS0,115200 earlyprintk "                             \
+       "root=/dev/mmcblk0p2 rw rootwait"
+#else
+#define CONFIG_BOOTARGS                                                        \
+       "console=ttyS0,115200 earlyprintk "                             \
+       "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,"          \
+       "256K(env),256k(evn_redundent),256k(spare),"                    \
+       "512k(dtb),6M(kernel)ro,-(rootfs) "                             \
+       "rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs"
+#endif
+
+#define CONFIG_BAUDRATE                        115200
+
+#define CONFIG_SYS_PROMPT              "U-Boot> "
+#define CONFIG_SYS_CBSIZE              256
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
+                                       sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_HUSH_PARSER
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
+
+#endif
index ee4b24473cd27b37f803f10a4b3efccd0a000d8c..657f751f3c21bb9c4de81c996695a7371fd3427d 100644 (file)
@@ -48,6 +48,7 @@
 #define CONFIG_ANDROID_BOOT_IMAGE
 
 #define CONFIG_FS_FAT
+#define CONFIG_FAT_WRITE
 #define CONFIG_FS_EXT4
 #define CONFIG_EXT4_WRITE
 #define CONFIG_CMD_FAT
@@ -57,6 +58,7 @@
 #define CONFIG_DOS_PARTITION
 #define CONFIG_HOST_MAX_DEVICES 4
 #define CONFIG_CMD_FS_GENERIC
+#define CONFIG_CMD_MD5SUM
 
 #define CONFIG_SYS_VSNPRINTF
 
 #define CONFIG_SPI_FLASH_STMICRO
 #define CONFIG_SPI_FLASH_WINBOND
 
+#define CONFIG_DM_I2C
+#define CONFIG_CMD_I2C
+#define CONFIG_SYS_I2C_SANDBOX
+#define CONFIG_I2C_EDID
+#define CONFIG_I2C_EEPROM
+
 /* Memory things - we don't really want a memory test */
 #define CONFIG_SYS_LOAD_ADDR           0x00000000
 #define CONFIG_SYS_MEMTEST_START       0x00100000
index a1b5751d09573e33732c4fc397499d4dcaf53e60..e7c35eca39cd42c009864af4700958bed462cec4 100644 (file)
@@ -80,7 +80,6 @@
 #define CONFIG_SPI
 #define CONFIG_CMD_SPI
 #define CONFIG_ATMEL_SPI
-#define CONFIG_SYS_SPI_WRITE_TOUT      (5 * CONFIG_SYS_HZ)
 
 #define CONFIG_CMD_EEPROM
 #define CONFIG_SPI_M95XXX
index f28f350fcc86923545139a94501dfcbcde7e6246..aee0d9e273097b7a92bd43c4aa72a5b6d1f5f87b 100644 (file)
@@ -13,6 +13,8 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /*
  * Top level Makefile configuration choices
  */
index e6d272dd1f53c4d7b1b71e006c0cc8b1f2a64ac1..f4a40bb9324717e8b83501b09bb3183a976f587a 100644 (file)
@@ -10,8 +10,7 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-#define CONFIG_ARM920T         1     /* this is an ARM920T CPU     */
-#define CONFIG_IMX             1     /* in a Motorola MC9328MXL Chip */
+#define CONFIG_IMX             1     /* This is a Motorola MC9328MXL Chip */
 #define CONFIG_SCB9328         1     /* on a scb9328tronix board */
 
 #define CONFIG_IMX_SERIAL
index 04e4f82759fb780150958033fc3eadd2bc19026c..5f77051d13f889c117f5cf4d180548eeb2c95eaa 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
index f06abbca0c210deec791eb36701a074f25f4f703..2d509a9b9c3b69f692c9abaf3a4bb80cb5a33543 100644 (file)
@@ -10,7 +10,6 @@
 #define __SH7752EVB_H
 
 #undef DEBUG
-#define CONFIG_SH_32BIT                1
 #define CONFIG_CPU_SH7752      1
 #define CONFIG_SH7752EVB       1
 
index e400db08ad9b4667d3c34c8c613081b6b9cd23f7..c31dd7a17472d6a5d6100656bf8eec422625456c 100644 (file)
@@ -10,7 +10,6 @@
 #define __SH7753EVB_H
 
 #undef DEBUG
-#define CONFIG_SH_32BIT                1
 #define CONFIG_CPU_SH7753      1
 #define CONFIG_SH7753EVB       1
 
index 08bff1da3fa227b012eca0b96a1ecf685d7afa15..36afd5f70a5f947ac8f8f0f1868dc7199c23dcb2 100644 (file)
@@ -10,7 +10,6 @@
 #define __SH7757LCR_H
 
 #undef DEBUG
-#define CONFIG_SH_32BIT                1
 #define CONFIG_CPU_SH7757      1
 #define CONFIG_SH7757LCR       1
 #define CONFIG_SH7757LCR_DDR_ECC       1
index 0d5dba18b1f5972155633071ec0b8d9e94011b87..21e13e54730e35294b88043c26fd31ac25983d16 100644 (file)
 #define CONFIG_SPL_BSS_MAX_SIZE                0x80000         /* 512 KB */
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SPL_FAT_SUPPORT
index d4ae19f96cec077c4c92e176cbd8eeafc07ffe39..71eb81c2f726792ae4a61513d57ee144462c430d 100644 (file)
  * High Level Configuration Options
  * (easy to change)
  */
-#define CONFIG_ARM920T         /* This is an ARM920T Core */
-#define CONFIG_S3C24X0         /* in a SAMSUNG S3C24x0-type SoC */
+#define CONFIG_S3C24X0         /* This is a SAMSUNG S3C24x0-type SoC */
 #define CONFIG_S3C2410         /* specifically a SAMSUNG S3C2410 SoC */
 #define CONFIG_SMDK2410                /* on a SAMSUNG SMDK2410 Board */
 
 #define CONFIG_SYS_TEXT_BASE   0x0
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #define CONFIG_SYS_ARM_CACHE_WRITETHROUGH
 
 /* input clock of PLL (the SMDK2410 has 12MHz input clock) */
index fd2d482e4ae912c1a8f58cfd26ba798cd14938fa..61f582f37516b57cc1d38de64635a7b65ea69aa4 100644 (file)
@@ -9,18 +9,37 @@
 #ifndef __CONFIG_SMDK5420_H
 #define __CONFIG_SMDK5420_H
 
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_SPI_FLASH
+#define CONFIG_ENV_SPI_BASE    0x12D30000
+#define FLASH_SIZE             (0x4 << 20)
+#define CONFIG_ENV_OFFSET      (FLASH_SIZE - CONFIG_BL2_SIZE)
+#define CONFIG_SPI_BOOTING
+
 #include <configs/exynos5420-common.h>
 
 #define CONFIG_BOARD_COMMON
 
 #define CONFIG_SMDK5420                        /* which is in a SMDK5420 */
 
+#define CONFIG_SYS_SDRAM_BASE  0x20000000
+#define CONFIG_SYS_TEXT_BASE   0x23E00000
+#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_IRAM_TOP - 0x800)
 
 /* select serial console configuration */
 #define CONFIG_SERIAL3         /* use SERIAL 3 */
+#define CONFIG_DEFAULT_CONSOLE "console=ttySAC1,115200n8\0"
 
 #define CONFIG_SYS_PROMPT      "SMDK5420 # "
 #define CONFIG_IDENT_STRING    " for SMDK5420"
 #define CONFIG_DEFAULT_CONSOLE         "console=ttySAC1,115200n8\0"
 
+/* USB */
+#define CONFIG_USB_XHCI
+#define CONFIG_USB_XHCI_EXYNOS
+
+/* DRAM Memory Banks */
+#define CONFIG_NR_DRAM_BANKS   7
+#define SDRAM_BANK_SIZE                (512UL << 20UL) /* 512 MB */
+
 #endif /* __CONFIG_SMDK5420_H */
index a2469eb60c91c4729e5db269416ff67c5afba7f3..655025c9129faafbe3078e076743042197be71ec 100644 (file)
@@ -14,6 +14,7 @@
 #undef CONFIG_BOARD_COMMON
 #undef CONFIG_USB_GADGET
 #undef CONFIG_USB_GADGET_S3C_UDC_OTG
+#undef CONFIG_USB_GADGET_S3C_UDC_OTG_PHY
 #undef CONFIG_CMD_USB_MASS_STORAGE
 #undef CONFIG_REVISION_TAG
 #undef CONFIG_CMD_THOR_DOWNLOAD
index 1ebee714ba3e5c568c86c99b937b7d5a2c645644..942af2e7f6244a59c2f3463b8d24dd539ea5baa7 100644 (file)
 #include <asm/hardware.h>
 #include <linux/sizes.h>
 
-#define CONFIG_SYS_TEXT_BASE           0x20000000
+#define CONFIG_SYS_TEXT_BASE           0x21f00000
 
 /* ARM asynchronous clock */
 #define CONFIG_SYS_AT91_MAIN_CLOCK     18432000 /* External Crystal, in Hz */
 #define CONFIG_SYS_AT91_SLOW_CLOCK     32768
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DM
+#define CONFIG_CMD_DM
+#define CONFIG_DM_GPIO
+#define CONFIG_DM_SERIAL
+#define CONFIG_SYS_MALLOC_F_LEN                (1 << 10)
 
 /* CPU */
 #define CONFIG_ARCH_CPU_INIT
 
 /* UARTs/Serial console */
 #define CONFIG_ATMEL_USART
+#ifndef CONFIG_DM_SERIAL
 #define CONFIG_USART_BASE              ATMEL_BASE_DBGU
 #define CONFIG_USART_ID                        ATMEL_ID_SYS
+#endif
 #define CONFIG_BAUDRATE                        115200
 #define CONFIG_SYS_PROMPT              "Snapper> "
 
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_FAT
 #define CONFIG_CMD_I2C
-#undef CONFIG_CMD_GPIO
+#define CONFIG_CMD_GPIO
 #define CONFIG_CMD_USB
 #define CONFIG_CMD_MII
 #define CONFIG_CMD_NAND
index 83a1bcdfbe34354980713f7e1c01e2c2ec788c7e..6b1f967c44eb2068ecac0cc2270c46485e705654 100644 (file)
@@ -11,7 +11,6 @@
 /* Virtual target or real hardware */
 #undef CONFIG_SOCFPGA_VIRTUAL_TARGET
 
-#define CONFIG_ARMV7
 #define CONFIG_SYS_THUMB_BUILD
 
 #define CONFIG_SOCFPGA
@@ -37,7 +36,7 @@
  */
 #define CONFIG_NR_DRAM_BANKS           1
 #define PHYS_SDRAM_1                   0x0
-#define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (64 * 1024 * 1024)
 #define CONFIG_SYS_MEMTEST_START       PHYS_SDRAM_1
 #define CONFIG_SYS_MEMTEST_END         PHYS_SDRAM_1_SIZE
 
 #define CONFIG_SYS_L2_PL310
 #define CONFIG_SYS_PL310_BASE          SOCFPGA_MPUL2_ADDRESS
 
+/*
+ * EPCS/EPCQx1 Serial Flash Controller
+ */
+#ifdef CONFIG_ALTERA_SPI
+#define CONFIG_CMD_SPI
+#define CONFIG_CMD_SF
+#define CONFIG_SF_DEFAULT_SPEED                30000000
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_SPI_FLASH_BAR
+/*
+ * The base address is configurable in QSys, each board must specify the
+ * base address based on it's particular FPGA configuration. Please note
+ * that the address here is incremented by  0x400  from the Base address
+ * selected in QSys, since the SPI registers are at offset +0x400.
+ * #define CONFIG_SYS_SPI_BASE         0xff240400
+ */
+#endif
+
 /*
  * Ethernet on SoC (EMAC)
  */
 #define CONFIG_DESIGNWARE_WATCHDOG
 #define CONFIG_DW_WDT_BASE             SOCFPGA_L4WD0_ADDRESS
 #define CONFIG_DW_WDT_CLOCK_KHZ                25000
-#define CONFIG_HW_WATCHDOG_TIMEOUT_MS  12000
+#define CONFIG_HW_WATCHDOG_TIMEOUT_MS  30000
 #endif
 
 /*
 #define CONFIG_SYS_MMC_MAX_BLK_COUNT   256     /* FIXME -- SPL only? */
 #endif
 
+/*
+ * I2C support
+ */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_DW
+#define CONFIG_SYS_I2C_BUS_MAX         4
+#define CONFIG_SYS_I2C_BASE            SOCFPGA_I2C0_ADDRESS
+#define CONFIG_SYS_I2C_BASE1           SOCFPGA_I2C1_ADDRESS
+#define CONFIG_SYS_I2C_BASE2           SOCFPGA_I2C2_ADDRESS
+#define CONFIG_SYS_I2C_BASE3           SOCFPGA_I2C3_ADDRESS
+/* Using standard mode which the speed up to 100Kb/s */
+#define CONFIG_SYS_I2C_SPEED           100000
+#define CONFIG_SYS_I2C_SPEED1          100000
+#define CONFIG_SYS_I2C_SPEED2          100000
+#define CONFIG_SYS_I2C_SPEED3          100000
+/* Address of device when used as slave */
+#define CONFIG_SYS_I2C_SLAVE           0x02
+#define CONFIG_SYS_I2C_SLAVE1          0x02
+#define CONFIG_SYS_I2C_SLAVE2          0x02
+#define CONFIG_SYS_I2C_SLAVE3          0x02
+#ifndef __ASSEMBLY__
+/* Clock supplied to I2C controller in unit of MHz */
+unsigned int cm_get_l4_sp_clk_hz(void);
+#define IC_CLK                         (cm_get_l4_sp_clk_hz() / 1000000)
+#endif
+#define CONFIG_CMD_I2C
+
+/*
+ * QSPI support
+ */
+#ifdef CONFIG_OF_CONTROL       /* QSPI is controlled via DT */
+#define CONFIG_CMD_DM
+#define CONFIG_DM
+#define CONFIG_DM_SPI
+#define CONFIG_DM_SPI_FLASH
+#define CONFIG_CADENCE_QSPI
+/* Enable multiple SPI NOR flash manufacturers */
+#define CONFIG_SPI_FLASH               /* SPI flash subsystem */
+#define CONFIG_SPI_FLASH_STMICRO       /* Micron/Numonyx flash */
+#define CONFIG_SPI_FLASH_SPANSION      /* Spansion flash */
+#define CONFIG_SPI_FLASH_MTD
+/* QSPI reference clock */
+#ifndef __ASSEMBLY__
+unsigned int cm_get_qspi_controller_clk_hz(void);
+#define CONFIG_CQSPI_REF_CLK           cm_get_qspi_controller_clk_hz()
+#endif
+#define CONFIG_CQSPI_DECODER           0
+#define CONFIG_CMD_SF
+#endif
+
+#ifdef CONFIG_OF_CONTROL       /* DW SPI is controlled via DT */
+#define CONFIG_CMD_DM
+#define CONFIG_DM
+#define CONFIG_DM_SPI
+#define CONFIG_DESIGNWARE_SPI
+#define CONFIG_CMD_SPI
+#endif
+
 /*
  * Serial Driver
  */
  */
 #endif
 
+/*
+ * USB Gadget (DFU, UMS)
+ */
+#if defined(CONFIG_CMD_DFU) || defined(CONFIG_CMD_USB_MASS_STORAGE)
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_S3C_UDC_OTG
+#define CONFIG_USB_GADGET_DUALSPEED
+#define CONFIG_USB_GADGET_VBUS_DRAW    2
+
+/* USB Composite download gadget - g_dnl */
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_USB_GADGET_MASS_STORAGE
+
+#define CONFIG_DFU_FUNCTION
+#define CONFIG_DFU_MMC
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE   (32 * 1024 * 1024)
+#define DFU_DEFAULT_POLL_TIMEOUT       300
+
+/* USB IDs */
+#define CONFIG_G_DNL_VENDOR_NUM                0x0525  /* NetChip */
+#define CONFIG_G_DNL_PRODUCT_NUM       0xA4A5  /* Linux-USB File-backed Storage Gadget */
+#define CONFIG_G_DNL_UMS_VENDOR_NUM    CONFIG_G_DNL_VENDOR_NUM
+#define CONFIG_G_DNL_UMS_PRODUCT_NUM   CONFIG_G_DNL_PRODUCT_NUM
+#ifndef CONFIG_G_DNL_MANUFACTURER
+#define CONFIG_G_DNL_MANUFACTURER      "Altera"
+#endif
+#endif
+
 /*
  * U-Boot environment
  */
index 942738c138bef60597e12fcefb5b70c90d18a109..c3d958cb3077ddf1211c8aa57efd46edfcbfaf94 100644 (file)
@@ -42,7 +42,7 @@
 /* Booting Linux */
 #define CONFIG_BOOTDELAY       3
 #define CONFIG_BOOTFILE                "zImage"
-#define CONFIG_BOOTARGS                "console=ttyS0" __stringify(CONFIG_BAUDRATE)
+#define CONFIG_BOOTARGS                "console=ttyS0," __stringify(CONFIG_BAUDRATE)
 #ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET
 #define CONFIG_BOOTCOMMAND     "run ramboot"
 #else
diff --git a/include/configs/stv0991.h b/include/configs/stv0991.h
new file mode 100644 (file)
index 0000000..fd9bd63
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * (C) Copyright 2014
+ * Vikas Manocha, STMicroelectronics, <vikas.manocha@st.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_STV0991_H
+#define __CONFIG_STV0991_H
+#define CONFIG_SYS_DCACHE_OFF
+#define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
+#define CONFIG_BOARD_EARLY_INIT_F
+
+#define CONFIG_SYS_CORTEX_R4
+
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_SYS_NO_FLASH
+
+/* ram memory-related information */
+#define CONFIG_NR_DRAM_BANKS                   1
+#define PHYS_SDRAM_1                           0x00000000
+#define CONFIG_SYS_SDRAM_BASE                  PHYS_SDRAM_1
+#define PHYS_SDRAM_1_SIZE                      0x00198000
+
+#define CONFIG_ENV_SIZE                                0x10000
+#define CONFIG_ENV_IS_IN_FLASH
+#define CONFIG_ENV_ADDR                                \
+       (PHYS_SDRAM_1_SIZE - CONFIG_ENV_SIZE)
+#define CONFIG_SYS_MAXARGS                     16
+#define CONFIG_SYS_MALLOC_LEN                  (CONFIG_ENV_SIZE + 16 * 1024)
+#define CONFIG_SYS_MALLOC_F_LEN                        0x2000
+
+#define CONFIG_DM
+/* serial port (PL011) configuration */
+#define CONFIG_BAUDRATE                                115200
+#ifdef CONFIG_DM
+#define CONFIG_DM_SERIAL
+#define CONFIG_PL01X_SERIAL
+#else
+#define CONFIG_SYS_SERIAL0                     0x80406000
+#define CONFIG_CONS_INDEX                      0
+#define CONFIG_PL011_SERIAL
+#define CONFIG_PL01x_PORTS                     {(void *)CONFIG_SYS_SERIAL0}
+#define CONFIG_PL011_CLOCK                     (2700 * 1000)
+#endif
+
+/* user interface */
+#define CONFIG_SYS_PROMPT                      "STV0991> "
+#define CONFIG_SYS_CBSIZE                      1024
+#define CONFIG_SYS_PBSIZE                      (CONFIG_SYS_CBSIZE \
+                                               +sizeof(CONFIG_SYS_PROMPT) + 16)
+
+/* MISC */
+#define CONFIG_SYS_LOAD_ADDR                   0x00000000
+#define CONFIG_SYS_INIT_RAM_SIZE               0x8000
+#define CONFIG_SYS_INIT_RAM_ADDR               0x00190000
+#define CONFIG_SYS_INIT_SP_OFFSET              \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+/* U-boot Load Address */
+#define CONFIG_SYS_TEXT_BASE                   0x00010000
+#define CONFIG_SYS_INIT_SP_ADDR                        \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+/* GMAC related configs */
+
+#define CONFIG_MII
+#define CONFIG_PHYLIB
+#define CONFIG_CMD_NET
+#define CONFIG_DESIGNWARE_ETH
+#define CONFIG_DW_ALTDESCRIPTOR
+#define CONFIG_PHY_MICREL
+
+/* Command support defines */
+#define CONFIG_CMD_PING
+#define CONFIG_PHY_RESET_DELAY                 10000           /* in usec */
+
+#include "config_cmd_default.h"
+#undef CONFIG_CMD_SAVEENV
+
+#define CONFIG_SYS_MEMTEST_START               0x0000
+#define CONFIG_SYS_MEMTEST_END                 1024*1024
+#define CONFIG_CMD_MEMTEST
+
+/* Misc configuration */
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CMDLINE_EDITING
+
+#define CONFIG_BOOTDELAY                       3
+#define CONFIG_BOOTCOMMAND                     "go 0x40040000"
+#define CONFIG_AUTOBOOT_KEYED
+#define CONFIG_AUTOBOOT_STOP_STR               " "
+#define CONFIG_AUTOBOOT_PROMPT                 \
+       "Hit SPACE in %d seconds to stop autoboot.\n", bootdelay
+
+#endif /* __CONFIG_H */
index d0191a32b1a6d99807cf75becf4821f2e6879cfd..7b857405e9e7839a27a7905b136a5677ec535b08 100644 (file)
@@ -11,7 +11,6 @@
 /*
  * A10 specific configuration
  */
-#define CONFIG_SUN4I           /* sun4i SoC generation */
 #define CONFIG_CLK_FULL_SPEED          1008000000
 
 #define CONFIG_SYS_PROMPT              "sun4i# "
 
 #ifdef CONFIG_USB_EHCI
 #define CONFIG_USB_EHCI_SUNXI
-
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        2
-#ifndef CONFIG_SUNXI_USB_VBUS0_GPIO
-#define CONFIG_SUNXI_USB_VBUS0_GPIO    SUNXI_GPH(6)
-#endif
-#ifndef CONFIG_SUNXI_USB_VBUS1_GPIO
-#define CONFIG_SUNXI_USB_VBUS1_GPIO    SUNXI_GPH(3)
-#endif
 #endif
 
 /*
index 7b683e9c8908394e56072d545f873d0e5f798c6a..09f7533575c83518c43c040ecf944a787aab4fba 100644 (file)
@@ -11,7 +11,6 @@
 /*
  * High Level Configuration Options
  */
-#define CONFIG_SUN5I           /* sun5i SoC generation */
 #define CONFIG_CLK_FULL_SPEED          1008000000
 
 #define CONFIG_SYS_PROMPT              "sun5i# "
index 93a1d965ca4e680e27f24ff7fd8efac3f154faf6..1b738527990972e112a487e9e02ab3031625a6ae 100644 (file)
 /*
  * A31 specific configuration
  */
-#define CONFIG_SUN6I           /* sun6i SoC generation */
+#define CONFIG_CLK_FULL_SPEED          1008000000
 
 #define CONFIG_SYS_PROMPT              "sun6i# "
 
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_SUNXI
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+#endif
+
 /*
  * Include common sunxi configuration where most the settings are
  */
index 966cbd8e83f6cb2659f64798cfeb502a1b5e6aa4..ccec50c328171d9fe4f11a1a1c3f67a287f52267 100644 (file)
@@ -12,7 +12,6 @@
 /*
  * A20 specific configuration
  */
-#define CONFIG_SUN7I           /* sun7i SoC generation */
 #define CONFIG_CLK_FULL_SPEED          912000000
 
 #define CONFIG_SYS_PROMPT              "sun7i# "
 
 #ifdef CONFIG_USB_EHCI
 #define CONFIG_USB_EHCI_SUNXI
-
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        2
-#ifndef CONFIG_SUNXI_USB_VBUS0_GPIO
-#define CONFIG_SUNXI_USB_VBUS0_GPIO    SUNXI_GPH(6)
-#endif
-#ifndef CONFIG_SUNXI_USB_VBUS1_GPIO
-#define CONFIG_SUNXI_USB_VBUS1_GPIO    SUNXI_GPH(3)
-#endif
 #endif
 
-#define CONFIG_ARMV7_VIRT              1
-#define CONFIG_ARMV7_NONSEC            1
 #define CONFIG_ARMV7_PSCI              1
-#define CONFIG_ARMV7_PSCI_NR_CPUS      2
 #define CONFIG_ARMV7_SECURE_BASE       SUNXI_SRAM_B_BASE
 #define CONFIG_SYS_CLK_FREQ            24000000
+#define CONFIG_TIMER_CLK_FREQ          CONFIG_SYS_CLK_FREQ
 
 /*
  * Include common sunxi configuration where most the settings are
index 1c1a7cde5ec1762d6a1702ed5a295c17c4696459..f16e60b576427574eff1e2f7f26595a0912a9e18 100644 (file)
 /*
  * A23 specific configuration
  */
-#define CONFIG_SUN8I           /* sun8i SoC generation */
+#define CONFIG_CLK_FULL_SPEED  1008000000
+
 #define CONFIG_SYS_PROMPT      "sun8i# "
 
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_SUNXI
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        1
+#endif
+
 /*
  * Include common sunxi configuration where most the settings are
  */
index cc450e02e67e041b248a47c84c05aa1a5325c57b..e839053e2ba995ca3388f251fdb6e0f8bf886a9f 100644 (file)
 
 #define CONFIG_SYS_TEXT_BASE           0x4a000000
 
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_DM)
+# define CONFIG_CMD_DM
+# define CONFIG_DM_GPIO
+# define CONFIG_DM_SERIAL
+# define CONFIG_DW_SERIAL
+# define CONFIG_SYS_MALLOC_F_LEN       (1 << 10)
+#endif
+
 /*
  * Display CPU information
  */
 #define CONFIG_SYS_NS16550
 #define CONFIG_SYS_NS16550_SERIAL
 /* ns16550 reg in the low bits of cpu reg */
-#define CONFIG_SYS_NS16550_REG_SIZE    -4
 #define CONFIG_SYS_NS16550_CLK         24000000
-#define CONFIG_SYS_NS16550_COM1                SUNXI_UART0_BASE
-#define CONFIG_SYS_NS16550_COM2                SUNXI_UART1_BASE
-#define CONFIG_SYS_NS16550_COM3                SUNXI_UART2_BASE
-#define CONFIG_SYS_NS16550_COM4                SUNXI_UART3_BASE
-#define CONFIG_SYS_NS16550_COM5                SUNXI_R_UART_BASE
+#ifndef CONFIG_DM_SERIAL
+# define CONFIG_SYS_NS16550_REG_SIZE   -4
+# define CONFIG_SYS_NS16550_COM1               SUNXI_UART0_BASE
+# define CONFIG_SYS_NS16550_COM2               SUNXI_UART1_BASE
+# define CONFIG_SYS_NS16550_COM3               SUNXI_UART2_BASE
+# define CONFIG_SYS_NS16550_COM4               SUNXI_UART3_BASE
+# define CONFIG_SYS_NS16550_COM5               SUNXI_R_UART_BASE
+#endif
 
 /* DRAM Base */
 #define CONFIG_SYS_SDRAM_BASE          0x40000000
 #define CONFIG_SPL_MAX_SIZE            0x5fe0          /* 24KB on sun4i/sun7i */
 
 #define CONFIG_SPL_LIBDISK_SUPPORT
+
+#if !defined(CONFIG_UART0_PORT_F)
 #define CONFIG_SPL_MMC_SUPPORT
+#endif
 
 #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/sunxi/u-boot-spl.lds"
 
 #define CONFIG_SPL_GPIO_SUPPORT
 #define CONFIG_CMD_GPIO
 
+#ifdef CONFIG_VIDEO
+/*
+ * The amount of RAM that is reserved for the FB. This will not show up as
+ * RAM to the kernel, but will be reclaimed by a KMS driver in future.
+ */
+#define CONFIG_SUNXI_FB_SIZE (9 << 20)
+
+/* Do we want to initialize a simple FB? */
+#define CONFIG_VIDEO_DT_SIMPLEFB
+
+#define CONFIG_VIDEO_SUNXI
+
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VIDEO_SW_CURSOR
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VIDEO_STD_TIMINGS
+#define CONFIG_I2C_EDID
+
+/* allow both serial and cfb console. */
+#define CONFIG_CONSOLE_MUX
+/* stop x86 thinking in cfbconsole from trying to init a pc keyboard */
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
+#define CONFIG_SYS_MEM_TOP_HIDE ((CONFIG_SUNXI_FB_SIZE + 0xFFF) & ~0xFFF)
+
+/* To be able to hook simplefb into dt */
+#ifdef CONFIG_VIDEO_DT_SIMPLEFB
+#define CONFIG_OF_BOARD_SETUP
+#endif
+
+#endif /* CONFIG_VIDEO */
+
 /* Ethernet support */
 #ifdef CONFIG_SUNXI_EMAC
 #define CONFIG_MII                     /* MII PHY management           */
 #define CONFIG_USB_STORAGE
 #endif
 
+#ifdef CONFIG_USB_KEYBOARD
+#define CONFIG_CONSOLE_MUX
+#define CONFIG_PREBOOT
+#define CONFIG_SYS_STDIO_DEREGISTER
+#define CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
+#endif
+
 #if !defined CONFIG_ENV_IS_IN_MMC && \
     !defined CONFIG_ENV_IS_IN_NAND && \
     !defined CONFIG_ENV_IS_IN_FAT && \
 #endif
 
 #define CONFIG_MISC_INIT_R
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
 
 #ifndef CONFIG_SPL_BUILD
 #include <config_distro_defaults.h>
 
-/* 256M RAM (minimum), 32M uncompressed kernel, 16M compressed kernel, 1M fdt,
- * 1M script, 1M pxe and the ramdisk at the end */
+/* Enable pre-console buffer to get complete log on the VGA console */
+#define CONFIG_PRE_CONSOLE_BUFFER
+#define CONFIG_PRE_CON_BUF_SZ          (1024 * 1024)
+/* Use the room between the end of bootm_size and the framebuffer */
+#define CONFIG_PRE_CON_BUF_ADDR                0x4f000000
+
+/*
+ * 240M RAM (256M minimum minus space for the framebuffer),
+ * 32M uncompressed kernel, 16M compressed kernel, 1M fdt,
+ * 1M script, 1M pxe and the ramdisk at the end.
+ */
 #define MEM_LAYOUT_ENV_SETTINGS \
-       "bootm_size=0x10000000\0" \
+       "bootm_size=0xf000000\0" \
        "kernel_addr_r=0x42000000\0" \
        "fdt_addr_r=0x43000000\0" \
        "scriptaddr=0x43100000\0" \
 
 #include <config_distro_bootcmd.h>
 
+#ifdef CONFIG_USB_KEYBOARD
+#define CONSOLE_STDIN_SETTINGS \
+       "preboot=usb start\0" \
+       "stdin=serial,usbkbd\0"
+#else
+#define CONSOLE_STDIN_SETTINGS \
+       "stdin=serial\0"
+#endif
+
+#ifdef CONFIG_VIDEO
+#define CONSOLE_STDOUT_SETTINGS \
+       "stdout=serial,vga\0" \
+       "stderr=serial,vga\0"
+#else
+#define CONSOLE_STDOUT_SETTINGS \
+       "stdout=serial\0" \
+       "stderr=serial\0"
+#endif
+
+#define CONSOLE_ENV_SETTINGS \
+       CONSOLE_STDIN_SETTINGS \
+       CONSOLE_STDOUT_SETTINGS
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
+       CONSOLE_ENV_SETTINGS \
        MEM_LAYOUT_ENV_SETTINGS \
        "fdtfile=" CONFIG_FDTFILE "\0" \
        "console=ttyS0,115200\0" \
index d687717dfb8823323713ba2fe79d275ebb198f03..7d2c0d2fa75c2e87b49a2d2bb4d6bd6f15e4a95f 100644 (file)
@@ -16,7 +16,6 @@
 /*
  * High Level Configuration Options
  */
-#define CONFIG_ARMV7                   /* This is an ARM V7 CPU core */
 #define CONFIG_OMAP                    /* in a TI OMAP core */
 
 #define CONFIG_OMAP_GPIO
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 #define CONFIG_SPL_BOARD_INIT
index aadf4cd2f8907356ec533261f33fac02b578fe6f..20194aebb504d215b6aad4d336eb83c9a7406eae 100644 (file)
@@ -34,7 +34,7 @@
  */
 
 
-#define CONFIG_SYS_TEXT_BASE           0x23f00000
+#define CONFIG_SYS_TEXT_BASE           0x21000000
 
 /* ARM asynchronous clock */
 #define CONFIG_SYS_AT91_SLOW_CLOCK     32768           /* slow clock xtal */
 #define CONFIG_USB_STORAGE
 #endif
 
+/* SPI EEPROM */
+#define CONFIG_SPI
+#define CONFIG_CMD_SPI
+#define CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH
+#define CONFIG_ATMEL_SPI
+#define CONFIG_SPI_FLASH_STMICRO
+#define TAURUS_SPI_MASK (1 << 4)
+#define TAURUS_SPI_CS_PIN      AT91_PIN_PA3
+
 /* load address */
 #define CONFIG_SYS_LOAD_ADDR                   0x22000000
 
 #define CONFIG_SYS_MALLOC_LEN \
        ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)
 
+/* Defines for SPL */
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_TEXT_BASE           0x0
+#define CONFIG_SPL_MAX_SIZE            (11 * 1024)
+#define CONFIG_SPL_STACK               (16 * 1024)
+
+#define CONFIG_SPL_BSS_START_ADDR      CONFIG_SPL_MAX_SIZE
+#define CONFIG_SPL_BSS_MAX_SIZE                (3 * 1024)
+
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+
+#define CONFIG_SPL_BOARD_INIT
+#define CONFIG_SPL_GPIO_SUPPORT
+#define CONFIG_SYS_NAND_ENABLE_PIN_SPL (2*32 + 14)
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SYS_USE_NANDFLASH       1
+#define CONFIG_SPL_NAND_DRIVERS
+#define CONFIG_SPL_NAND_BASE
+#define CONFIG_SPL_NAND_ECC
+#define CONFIG_SPL_NAND_RAW_ONLY
+#define CONFIG_SPL_NAND_SOFTECC
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    0x20000
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    0x80000
+#define        CONFIG_SYS_NAND_U_BOOT_START    CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_U_BOOT_DST     CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+
+#define CONFIG_SYS_NAND_SIZE           (256*1024*1024)
+#define CONFIG_SYS_NAND_PAGE_SIZE      2048
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (128*1024)
+#define CONFIG_SYS_NAND_PAGE_COUNT     (CONFIG_SYS_NAND_BLOCK_SIZE / \
+                                        CONFIG_SYS_NAND_PAGE_SIZE)
+#define CONFIG_SYS_NAND_BAD_BLOCK_POS  NAND_LARGE_BADBLOCK_POS
+#define CONFIG_SYS_NAND_ECCSIZE                256
+#define CONFIG_SYS_NAND_ECCBYTES       3
+#define CONFIG_SYS_NAND_OOBSIZE                64
+#define CONFIG_SYS_NAND_ECCPOS         { 40, 41, 42, 43, 44, 45, 46, 47, \
+                                         48, 49, 50, 51, 52, 53, 54, 55, \
+                                         56, 57, 58, 59, 60, 61, 62, 63, }
+
+
+#define CONFIG_SPL_ATMEL_SIZE
+#define CONFIG_SYS_MASTER_CLOCK                132096000
+#define AT91_PLL_LOCK_TIMEOUT          1000000
+#define CONFIG_SYS_AT91_PLLA           0x202A3F01
+#define CONFIG_SYS_MCKR                        0x1300
+#define CONFIG_SYS_MCKR_CSS            (0x02 | CONFIG_SYS_MCKR)
+#define CONFIG_SYS_AT91_PLLB           0x10193F05
 #endif
diff --git a/include/configs/tbs2910.h b/include/configs/tbs2910.h
new file mode 100644 (file)
index 0000000..c097b98
--- /dev/null
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2014 Soeren Moch <smoch@web.de>
+ *
+ * Configuration settings for the TBS2910 MatrixARM board.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __TBS2910_CONFIG_H
+#define __TBS2910_CONFIG_H
+
+#include "mx6_common.h"
+#include <asm/arch/imx-regs.h>
+#include <asm/imx-common/gpio.h>
+
+/* General configuration */
+#define CONFIG_MX6
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO_LATE
+#define CONFIG_SYS_THUMB_BUILD
+
+#define CONFIG_MACH_TYPE               3980
+
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+#define CONFIG_REVISION_TAG
+#define CONFIG_SYS_GENERIC_BOARD
+
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_MXC_GPIO
+#define CONFIG_CMD_GPIO
+
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT              "Matrix U-Boot> "
+#define CONFIG_BOOTDELAY               3
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_CBSIZE              1024
+#define CONFIG_SYS_PBSIZE \
+       (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_HZ                  1000
+
+/* Physical Memory Map */
+#define CONFIG_NR_DRAM_BANKS           1
+#define CONFIG_SYS_SDRAM_BASE          MMDC0_ARB_BASE_ADDR
+
+#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
+#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+#define CONFIG_SYS_MALLOC_LEN          (128 * 1024 * 1024)
+
+#define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
+#define CONFIG_SYS_MEMTEST_END \
+       (CONFIG_SYS_MEMTEST_START + 500 * 1024 * 1024)
+
+#define CONFIG_SYS_TEXT_BASE           0x80000000
+#define CONFIG_SYS_BOOTMAPSZ           0x6C000000
+#define CONFIG_SYS_LOAD_ADDR           0x10800000
+
+/* Serial console */
+#define CONFIG_MXC_UART
+#define CONFIG_MXC_UART_BASE           UART1_BASE /* select UART1/UART2 */
+#define CONFIG_BAUDRATE                        115200
+
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+#define CONFIG_CONSOLE_MUX
+#define CONFIG_CONS_INDEX              1
+
+/* *** Command definition *** */
+#include <config_cmd_default.h>
+
+#undef CONFIG_CMD_IMLS
+
+#define CONFIG_CMD_BMODE
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_CMD_MEMTEST
+#define CONFIG_CMD_TIME
+
+/* Filesystems / image support */
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#define CONFIG_EFI_PARTITION
+#define CONFIG_CMD_FS_GENERIC
+
+#define CONFIG_OF_LIBFDT
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_FIT
+
+/* MMC */
+#define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_USDHC
+#define CONFIG_SYS_FSL_USDHC_NUM       3
+#define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC4_BASE_ADDR
+
+#define CONFIG_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_BOUNCE_BUFFER
+
+/* Ethernet */
+#define CONFIG_FEC_MXC
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_FEC_MXC
+#define CONFIG_MII
+#define IMX_FEC_BASE                   ENET_BASE_ADDR
+#define CONFIG_FEC_XCV_TYPE            RGMII
+#define CONFIG_ETHPRIME                        "FEC"
+#define CONFIG_FEC_MXC_PHYADDR         4
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_ATHEROS
+
+/* Framebuffer */
+#define CONFIG_VIDEO
+#ifdef CONFIG_VIDEO
+#define CONFIG_VIDEO_IPUV3
+#define CONFIG_IPUV3_CLK               260000000
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_CFB_CONSOLE_ANSI
+#define CONFIG_VIDEO_SW_CURSOR
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+#define CONFIG_VIDEO_BMP_RLE8
+#define CONFIG_IMX_HDMI
+#define CONFIG_IMX_VIDEO_SKIP
+#define CONFIG_CMD_HDMIDETECT
+#endif
+
+/* PCI */
+#define CONFIG_CMD_PCI
+#ifdef CONFIG_CMD_PCI
+#define CONFIG_PCI
+#define CONFIG_PCI_PNP
+#define CONFIG_PCI_SCAN_SHOW
+#define CONFIG_PCIE_IMX
+#define CONFIG_PCIE_IMX_PERST_GPIO     IMX_GPIO_NR(7, 12)
+#endif
+
+/* SATA */
+#define CONFIG_CMD_SATA
+#ifdef CONFIG_CMD_SATA
+#define CONFIG_DWC_AHSATA
+#define CONFIG_SYS_SATA_MAX_DEVICE     1
+#define CONFIG_DWC_AHSATA_PORT_ID      0
+#define CONFIG_DWC_AHSATA_BASE_ADDR    SATA_ARB_BASE_ADDR
+#define CONFIG_LBA48
+#define CONFIG_LIBATA
+#endif
+
+/* USB */
+#define CONFIG_CMD_USB
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_KEYBOARD
+#ifdef CONFIG_USB_KEYBOARD
+#define CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
+#define CONFIG_SYS_STDIO_DEREGISTER
+#define CONFIG_PREBOOT "if hdmidet; then usb start; fi"
+#endif /* CONFIG_USB_KEYBOARD */
+#endif /* CONFIG_CMD_USB      */
+
+/* RTC */
+#define CONFIG_CMD_DATE
+#ifdef CONFIG_CMD_DATE
+#define CONFIG_CMD_I2C
+#define CONFIG_RTC_DS1307
+#define CONFIG_SYS_RTC_BUS_NUM         2
+#endif
+
+/* I2C */
+#define CONFIG_CMD_I2C
+#ifdef CONFIG_CMD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MXC
+#define CONFIG_SYS_I2C_SPEED           100000
+#define CONFIG_I2C_EDID
+#endif
+
+/* Fuses */
+#define CONFIG_CMD_FUSE
+#ifdef CONFIG_CMD_FUSE
+#define CONFIG_MXC_OCOTP
+#endif
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+#define CONFIG_CMD_CACHE
+#endif
+
+/* Flash and environment organization */
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         2
+#define CONFIG_SYS_MMC_ENV_PART                1
+#define CONFIG_ENV_SIZE                        (8 * 1024)
+#define CONFIG_ENV_OFFSET              (384 * 1024)
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "bootargs_mmc1=console=ttymxc0,115200 di0_primary console=tty1\0" \
+       "bootargs_mmc2=video=mxcfb0:dev=hdmi,1920x1080M@60 " \
+                       "video=mxcfb1:off video=mxcfb2:off fbmem=28M\0" \
+       "bootargs_mmc3=root=/dev/mmcblk0p1 rootwait consoleblank=0 quiet\0" \
+       "bootargs_mmc=setenv bootargs ${bootargs_mmc1} ${bootargs_mmc2} " \
+                       "${bootargs_mmc3}\0" \
+       "bootargs_upd=setenv bootargs console=ttymxc0,115200 " \
+                       "rdinit=/sbin/init enable_wait_mode=off\0" \
+       "bootcmd_mmc=run bootargs_mmc; mmc dev 2; " \
+                       "mmc read 0x10800000 0x800 0x4000; bootm\0" \
+       "bootcmd_up1=load mmc 1 0x10800000 uImage\0" \
+       "bootcmd_up2=load mmc 1 0x10d00000 uramdisk.img; " \
+                       "run bootargs_upd; " \
+                       "bootm 0x10800000 0x10d00000\0" \
+       "console=ttymxc0\0" \
+       "fan=gpio set 92\0" \
+       "stdin=serial,usbkbd\0" \
+       "stdout=serial,vga\0" \
+       "stderr=serial,vga\0"
+
+#define CONFIG_BOOTCOMMAND \
+       "mmc rescan; " \
+       "if run bootcmd_up1; then " \
+               "run bootcmd_up2; " \
+       "else " \
+               "run bootcmd_mmc; " \
+       "fi"
+
+#endif                        /* __TBS2910_CONFIG_H * */
index 66730267a33432c10f08321c2a4cfb26781e0b0d..e96a7427e5864c64280e0c3dc2eb38f0645ef484 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 999834351f3404ab3d0b4a8801163fe9509a7fa4..42129fb7d8419e83ca2eb3883c5e6cd31a60ba39 100644 (file)
 /*
  * I2C Settings
  */
-#define CONFIG_BFIN_TWI_I2C    1
-#define CONFIG_HARD_I2C                1
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_ADI
 
 
 /*
index 51f87dacdbedf826119c24d8a8435223a7938021..e37b23359b544147f9798d46823c5c5b8b3c2b37 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_SYS_MAX_I2C_BUS         TEGRA_I2C_NUM_CONTROLLERS
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
index 5d2b12a11d1ef1e1494fa76ae14f5eeae8401797..8f1e3709155f476e47f51860369b130df1c67a5a 100644 (file)
@@ -26,6 +26,7 @@
 #endif
 #define CONFIG_DM_SPI
 #define CONFIG_DM_SPI_FLASH
+#define CONFIG_DM_I2C
 
 #define CONFIG_SYS_TIMER_RATE          1000000
 #define CONFIG_SYS_TIMER_COUNTER       NV_PA_TMRUS_BASE
@@ -46,7 +47,9 @@
  * Size of malloc() pool
  */
 #define CONFIG_SYS_MALLOC_LEN          (4 << 20)       /* 4MB  */
-#define CONFIG_SYS_MALLOC_F_LEN        (1 << 10)
+#define CONFIG_SYS_MALLOC_F_LEN                (1 << 10)
+
+#define CONFIG_SYS_NONCACHED_MEMORY    (1 << 20)       /* 1 MiB */
 
 /*
  * NS16550 Configuration
 #define CONFIG_SYS_MEMTEST_START       (NV_PA_SDRC_CS0 + 0x600000)
 #define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + 0x100000)
 
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_USE_ARCH_MEMCPY
+#endif
 
 /*-----------------------------------------------------------------------
  * Physical Memory Map
index 555c237cbf1c56bd29ed4283b5cb8391a841ba7b..9eba5d517db7b3f926ee25d7cffc85ae9c87ff93 100644 (file)
@@ -76,9 +76,6 @@
 #define CONFIG_SYS_SPL_MALLOC_START    0x80090000
 #define CONFIG_SPL_STACK               0x800ffffc
 
-/* Total I2C ports on Tegra114 */
-#define TEGRA_I2C_NUM_CONTROLLERS      5
-
 /* For USB EHCI controller */
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  0x10
index 61e50265740dfd2d6d8f662c787865d531353121..f2b3774da8ff5c90394735faab4db308a9b34a1b 100644 (file)
@@ -68,9 +68,6 @@
 #define CONFIG_SYS_SPL_MALLOC_START    0x80090000
 #define CONFIG_SPL_STACK               0x800ffffc
 
-/* Total I2C ports on Tegra124 */
-#define TEGRA_I2C_NUM_CONTROLLERS      5
-
 /* For USB EHCI controller */
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  0x10
index 21bf9771742424dcf4da509e8550a2964b585b0a..6330281df71b6db51f9c04962915bb3ba42c44b9 100644 (file)
@@ -97,9 +97,6 @@
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
 
-/* Total I2C ports on Tegra20 */
-#define TEGRA_I2C_NUM_CONTROLLERS      4
-
 #define CONFIG_SYS_NAND_SELF_INIT
 #define CONFIG_SYS_NAND_ONFI_DETECTION
 
index 443c842240ede89b0e7cba4fd51b278877e95886..bfdbeb70d296691c2f3c087eca4e74f40aa4a04a 100644 (file)
@@ -73,9 +73,6 @@
 #define CONFIG_SYS_SPL_MALLOC_START    0x80090000
 #define CONFIG_SPL_STACK               0x800ffffc
 
-/* Total I2C ports on Tegra30 */
-#define TEGRA_I2C_NUM_CONTROLLERS      5
-
 /* For USB EHCI controller */
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  0x10
index 2fddef3cab7b5206f3c4f630b56c4360357549dd..deb6bb2b8f643f4e92cc3bf8ce8ff151cb99c822 100644 (file)
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS      0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SPL_FAT_SUPPORT
index aeabb1b7d5f4ceba8f1d8da8c695fd051bd2d752..87a4efcd5a89377dbe72b91c861d40ee5f9beb88 100644 (file)
 
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS      0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SPL_FAT_SUPPORT
index 4b9b62969245757e23b76f71a00427392607a6f9..2bd116477c07e01a9c81827189c3fa0fb643eeac 100644 (file)
 #define CONFIG_CMD_ASKENV
 #define CONFIG_CMD_ECHO
 #define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
 
 /*
  * Common filesystems support.  When we have removable storage we
 #define CONFIG_CMD_EXT2
 #define CONFIG_CMD_EXT4
 #define CONFIG_CMD_FS_GENERIC
+#define CONFIG_PARTITION_UUIDS
+#define CONFIG_CMD_PART
 #endif
 
 /*
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
 
 /* FAT sd card locations. */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
 
 #ifdef CONFIG_SPL_OS_BOOT
index 3166392c780e7423df87e048c479c83dbe42b918..c47651d79620c3c1431437d444f3c285b714cf00 100644 (file)
@@ -19,7 +19,6 @@
 
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
-#define CONFIG_MISC_INIT_R
 #define CONFIG_ARCH_CPU_INIT
 
 #define CONFIG_SYS_CACHELINE_SIZE      64
@@ -79,7 +78,7 @@
        "partitions=" PARTS_DEFAULT "\0" \
        "optargs=\0" \
        "mmcdev=0\0" \
-       "mmcroot=/dev/mmcblk1p2 rw\0" \
+       "mmcroot=/dev/mmcblk0p2 rw\0" \
        "mmcrootfstype=ext4 rootwait\0" \
        "mmcargs=setenv bootargs console=${console} " \
                "${optargs} " \
                        "setenv fdtfile dra7-evm.dtb; fi;" \
                "if test $board_name = dra72x; then " \
                        "setenv fdtfile dra72-evm.dtb; fi;" \
+               "if test $board_name = beagle_x15; then " \
+                       "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \
                "if test $fdtfile = undefined; then " \
                        "echo WARNING: Could not determine device tree to use; fi; \0" \
        "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};\0" \
index 162826f7d354ec423c7f0d41c64cdb0ff400a86c..00a1a9e00269a8bc711c72d4b3f34ae848ddf6d8 100644 (file)
@@ -16,7 +16,6 @@
 #include <asm/arch/clock.h>
 
 /* Architecture, CPU, etc */
-#define CONFIG_ARM1176
 #define CONFIG_TNETV107X
 #define CONFIG_TNETV107X_EVM
 #define CONFIG_TNETV107X_WATCHDOG
index 32f6b00bbf9b6e236e35263636b8de0e9b06be98..79c7fc51293c4984c77004214b1349494ff5cbfc 100644 (file)
@@ -85,7 +85,6 @@
 #define CONFIG_SPI
 #define CONFIG_CMD_SPI
 #define CONFIG_ATMEL_SPI
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5 * CONFIG_SYS_HZ)
 
 #define CONFIG_CMD_EEPROM
 #define CONFIG_SPI_M95XXX
index d97a9613ae5f3c83f56f246467a51ba1ea767f83..a099687d4636ac4821da9213fe7c58eff8345827 100644 (file)
@@ -9,13 +9,26 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_MX6
+
+/* SPL */
+/* #if defined(CONFIG_SPL_BUILD) */
+
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_FAT_SUPPORT
+#define CONFIG_SPL_EXT_SUPPORT
+
+/* common IMX6 SPL configuration */
+#include "imx6_spl.h"
+
+/* #endif */
+
 #include "mx6_common.h"
 #include <asm/arch/imx-regs.h>
 #include <asm/imx-common/gpio.h>
 #include <linux/sizes.h>
 
-#define CONFIG_MX6
-
 #if defined(CONFIG_MX6DL) || defined(CONFIG_MX6S)
 #define PHYS_SDRAM_SIZE                        (512u * SZ_1M)
 #elif defined(CONFIG_MX6Q) || defined(CONFIG_MX6D)
 #define CONFIG_SPI_FLASH
 #define CONFIG_SPI_FLASH_STMICRO
 
+#define TQMA6_SPI_FLASH_SECTOR_SIZE    SZ_64K
+
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_BUS  0
-#define CONFIG_SF_DEFAULT_CS   (0 | (IMX_GPIO_NR(3, 19) << 8))
+#define CONFIG_SF_DEFAULT_CS   0
 #define CONFIG_SF_DEFAULT_SPEED        50000000
 #define CONFIG_SF_DEFAULT_MODE (SPI_MODE_0)
 
 
 #elif defined(CONFIG_TQMA6X_SPI_BOOT)
 
-#define CONFIG_FLASH_SECTOR_SIZE       0x10000
-
 #define TQMA6_UBOOT_OFFSET             0x400
 #define TQMA6_UBOOT_SECTOR_START       0x0
 /* max u-boot size: 512k */
-#define TQMA6_UBOOT_SECTOR_SIZE                CONFIG_FLASH_SECTOR_SIZE
+#define TQMA6_UBOOT_SECTOR_SIZE                TQMA6_SPI_FLASH_SECTOR_SIZE
 #define TQMA6_UBOOT_SECTOR_COUNT       0x8
 #define TQMA6_UBOOT_SIZE               (TQMA6_UBOOT_SECTOR_SIZE * \
                                         TQMA6_UBOOT_SECTOR_COUNT)
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_OFFSET              (TQMA6_UBOOT_SIZE)
-#define CONFIG_ENV_SECT_SIZE           CONFIG_FLASH_SECTOR_SIZE
+#define CONFIG_ENV_SECT_SIZE           TQMA6_SPI_FLASH_SECTOR_SIZE
 #define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + \
                                         CONFIG_ENV_SECT_SIZE)
 
 
 #define TQMA6_FDT_OFFSET               (CONFIG_ENV_OFFSET_REDUND + \
                                         CONFIG_ENV_SECT_SIZE)
-#define TQMA6_FDT_SECT_SIZE            (CONFIG_FLASH_SECTOR_SIZE)
+#define TQMA6_FDT_SECT_SIZE            (TQMA6_SPI_FLASH_SECTOR_SIZE)
 
 #define TQMA6_FDT_SECTOR_START         0x0a /* 8 Sector u-boot, 2 Sector env */
 #define TQMA6_FDT_SECTOR_COUNT         0x01
                        "setexpr blkc ${filesize} + "                          \
                                __stringify(TQMA6_UBOOT_OFFSET) "; "           \
                        "setexpr size ${uboot_sectors} * "                     \
-                               __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "      \
+                               __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "   \
                        "if itest ${blkc} <= ${size}; then "                   \
                                "sf probe; "                                   \
                                "sf erase 0 ${size}; "                         \
        "update_kernel=run kernel_name; if tftp ${kernel}; then "              \
                "if itest ${filesize} > 0; then "                              \
                        "setexpr size ${kernel_sectors} * "                    \
-                               __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "      \
+                               __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "   \
                        "setexpr offset ${kernel_start} * "                    \
-                               __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "      \
+                               __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "   \
                        "if itest ${filesize} <= ${size}; then "               \
                                "sf probe; "                                   \
                                "sf erase ${offset} ${size}; "                 \
        "update_fdt=if tftp ${fdt_file}; then "                                \
                "if itest ${filesize} > 0; then "                              \
                        "setexpr size ${fdt_sectors} * "                       \
-                               __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "      \
+                               __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "   \
                        "setexpr offset ${fdt_start} * "                       \
-                               __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "      \
+                               __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "   \
                        "if itest ${filesize} <= ${size}; then "               \
                                "sf probe; "                                   \
                                "sf erase ${offset} ${size}; "                 \
                "setenv filesize 0; setenv size ; setenv offset\0"             \
        "loadimage=sf probe; "                                                 \
                "setexpr size ${kernel_sectors} * "                            \
-                       __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "              \
+                       __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "           \
                "setexpr offset ${kernel_start} * "                            \
-                       __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "              \
+                       __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "           \
                "sf read ${loadaddr} ${offset} ${size}; "                      \
                "setenv size ; setenv offset\0"                                \
        "loadfdt=sf probe; "                                                   \
                "setexpr size ${fdt_sectors} * "                               \
-                       __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "              \
+                       __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "           \
                "setexpr offset ${fdt_start} * "                               \
-                       __stringify(CONFIG_FLASH_SECTOR_SIZE)"; "              \
+                       __stringify(TQMA6_SPI_FLASH_SECTOR_SIZE)"; "           \
                "sf read ${${fdt_addr}} ${offset} ${size}; "                   \
                "setenv size ; setenv offset\0"                                \
 
index 6e7a7fbf28f1d7727d0529dfcad6e19dae21766b..36621a553cdf961ccd677c7b1194d86029567ada 100644 (file)
 #define CONFIG_SPL_FAT_SUPPORT
 #define CONFIG_SPL_LDSCRIPT            "$(CPUDIR)/omap-common/u-boot-spl.lds"
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME        "u-boot.img"
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
 
 #define CONFIG_SPL_TEXT_BASE           0x40200000 /*CONFIG_SYS_SRAM_START*/
index 7c0064267dabec1f53beaa14c12fd0d4998b5d32..59f4f6767b76a62cf100f15b1c207b5c303f96b6 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_ASIX
 
+/* PCI host support */
+#define CONFIG_PCI
+#define CONFIG_PCI_TEGRA
+#define CONFIG_PCI_PNP
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_PCI_ENUM
+
+/* PCI networking support */
+#define CONFIG_RTL8169
+
 /* General networking support */
 #define CONFIG_CMD_NET
 #define CONFIG_CMD_DHCP
index 0937653fc239a9a04d6cba5c900f6e5b305cf0c9..cf169a4c893ab77d2c1452d134862bab3511f65e 100644 (file)
@@ -13,7 +13,6 @@
 #include <asm/arch/imx-regs.h>
 
 /* High Level Configuration Options */
-#define CONFIG_ARM1136
 #define CONFIG_MX31
 
 #define CONFIG_DISPLAY_CPUINFO
diff --git a/include/configs/uc100.h b/include/configs/uc100.h
deleted file mode 100644 (file)
index cad897f..0000000
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860          1
-#define CONFIG_MPC860T         1
-#define CONFIG_MPC862          1       /* enable 862 since the         */
-#define CONFIG_MPC857          1       /* 857 is a variant of the 862  */
-
-#define CONFIG_UC100           1       /* ...on a UC100 module         */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40700000
-
-#define MPC8XX_FACT            4               /* Multiply by 4        */
-#define MPC8XX_XIN             25000000        /* 25.0 MHz in          */
-#define CONFIG_8xx_GCLK_FREQ   (MPC8XX_FACT * MPC8XX_XIN)
-                                   /* define if cant' use get_gclk_freq */
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_BAUDRATE                115200  /* console baudrate = 115kbps   */
-
-#define        CONFIG_BOOTCOUNT_LIMIT
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "flash_nfs=run nfsargs addip addtty;"                           \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip addtty;"                          \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;"     \
-               "bootm\0"                                               \
-       "rootpath=/opt/eldk/ppc_8xx\0"                                  \
-       "bootfile=/tftpboot/uc100/uImage\0"                             \
-       "kernel_addr=40000000\0"                                        \
-       "ramdisk_addr=40100000\0"                                       \
-       "load=tftp 100000 /tftpboot/uc100/u-boot.bin\0"                 \
-       "update=protect off 40700000 4073ffff;era 40700000 4073ffff;"   \
-               "cp.b 100000 40700000 ${filesize};"                     \
-               "setenv filesize;saveenv\0"                             \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#undef CONFIG_STATUS_LED                /* no status-led                */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#undef CONFIG_RTC_MPC8xx
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51    /* PCF8563 RTC                  */
-#define CONFIG_RTC_PCF8563             /* use Philips PCF8563 RTC      */
-
-/*
- * Power On Self Test support
- */
-#define CONFIG_POST          ( CONFIG_SYS_POST_CACHE           | \
-                               CONFIG_SYS_POST_MEMORY          | \
-                               CONFIG_SYS_POST_CPU             | \
-                               CONFIG_SYS_POST_UART            | \
-                               CONFIG_SYS_POST_SPR )
-#undef  CONFIG_POST
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SNTP
-
-#ifdef CONFIG_POST
-#define CONFIG_CMD_DIAG
-#endif
-
-
-#define CONFIG_NETCONSOLE
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-
-#if 0
-#define        CONFIG_SYS_HUSH_PARSER          1       /* use "hush" command parser    */
-#endif
-
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE               1024    /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE               256     /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS              16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xF0000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        (CONFIG_SYS_FLASH_BASE+0x00700000) /* resetvec fff00100*/
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*-----------------------------------------------------------------------
- * Address accessed to reset the board - must not be mapped/assigned
- */
-#define CONFIG_SYS_RESET_ADDRESS       0x90000000
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_FLASH_CFI                           /* The flash is CFI compatible  */
-#define CONFIG_FLASH_CFI_DRIVER                        /* Use common CFI driver        */
-#define CONFIG_SYS_FLASH_CFI_AMD_RESET 1               /* AMD RESET for STM 29W320DB!  */
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE+CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* size of one complete sector          */
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_FRC | SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- */
-#define CONFIG_SYS_PLPRCR      (((MPC8XX_FACT-1) << PLPRCR_MF_SHIFT) | \
-                               PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      0x00000000
-#define CONFIG_SYS_SCCR        (SCCR_EBDF11)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define        CONFIG_IDE_8xx_PCCARD   1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFF800000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (0x00000d24)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-#define CONFIG_SYS_BR1_PRELIM  0x00000081  /* Chip select for SDRAM (32 Bit, UPMA) */
-#define CONFIG_SYS_OR1_PRELIM  0xfc000a00
-#define CONFIG_SYS_BR2_PRELIM  0x80000001  /* Chip select for SRAM (32 Bit, GPCM) */
-#define CONFIG_SYS_OR2_PRELIM  0xfff00d24
-#define CONFIG_SYS_BR3_PRELIM  0x80600401  /* Chip select for Display (8 Bit, GPCM) */
-#define CONFIG_SYS_OR3_PRELIM  0xffff8f44
-#define CONFIG_SYS_BR4_PRELIM  0xc05108c1  /* Chip select for Interbus MPM (16 Bit, UPMB) */
-#define CONFIG_SYS_OR4_PRELIM  0xffff0300
-#define CONFIG_SYS_BR5_PRELIM  0xc0500401  /* Chip select for Interbus Status (8 Bit, GPCM) */
-#define CONFIG_SYS_OR5_PRELIM  0xffff8db0
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096  Rows from SDRAM example configuration
- * 1000  factor s -> ms
- *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4  Number of refresh cycles per period
- *   64  Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- *  50 MHz =>  50.000.000 / Divider =  98
- *  66 Mhz =>  66.000.000 / Divider = 129
- *  80 Mhz =>  80.000.000 / Divider = 156
- * 100 Mhz => 100.000.000 / Divider = 195
- */
-
-#define CONFIG_SYS_PTA_PER_CLK ((4096 * 32 * 1000) / (4 * 64))
-#define CONFIG_SYS_MAMR_PTA    98
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-#define        CONFIG_SYS_MAMR_VAL     0x30904114      /* for SDRAM */
-#define        CONFIG_SYS_MBMR_VAL     0xff001111      /* for Interbus-MPM */
-
-/*-----------------------------------------------------------------------
- * I2C stuff
- */
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      93000 /* 93 kHz is supposed to work */
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define PB_SCL         0x00000020      /* PB 26 */
-#define PB_SDA         0x00000010      /* PB 27 */
-
-#define I2C_INIT       (immr->im_cpm.cp_pbdir |=  PB_SCL)
-#define I2C_ACTIVE     (immr->im_cpm.cp_pbdir |=  PB_SDA)
-#define I2C_TRISTATE   (immr->im_cpm.cp_pbdir &= ~PB_SDA)
-#define I2C_READ       ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
-#define I2C_SDA(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SDA
-#define I2C_SCL(bit)   if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
-                       else    immr->im_cpm.cp_pbdat &= ~PB_SCL
-#define I2C_DELAY      udelay(2)       /* 1/4 I2C clock duration */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (24C164)
- */
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x58    /* EEPROM AT24C164              */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* takes up to 10 msec  */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      4
-
-#define        CONFIG_FEC_ENET         1       /* use FEC ethernet  */
-#define FEC_ENET
-#define CONFIG_MII
-#define CONFIG_MII_INIT                1
-#define CONFIG_SYS_DISCOVER_PHY        1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/uc101.h b/include/configs/uc101.h
deleted file mode 100644 (file)
index f93dea7..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * (C) Copyright 2003-2009
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_UC101           1       /* UC101 board          */
-#define CONFIG_HOSTNAME                uc101
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xFFF00000
-#endif
-#define CONFIG_SYS_LDSCRIPT    "arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds"
-
-#include "manroland/common.h"
-#include "manroland/mpc5200-common.h"
-
-/*
- * Serial console configuration
- */
-#define CONFIG_BAUDRATE                115200  /* ... at 115200 bps    */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Flash configuration
- */
-#define CONFIG_SYS_MAX_FLASH_SECT      140
-
-/*
- * Environment settings
- */
-#define CONFIG_ENV_SECT_SIZE   0x10000
-
-/*
- * Memory map
- */
-#define        CONFIG_SYS_IB_MASTER            0xc0510000      /* CS 6 */
-#define CONFIG_SYS_IB_EPLD             0xc0500000      /* CS 7 */
-
-/* SRAM */
-#define CONFIG_SYS_SRAM_SIZE   0x200000
-
-/*
- * GPIO configuration
- */
-#define CONFIG_SYS_GPS_PORT_CONFIG     0x4d558044
-
-#define CONFIG_SYS_MEMTEST_START       0x00300000
-#define CONFIG_SYS_MEMTEST_END         0x00f00000
-
-#define CONFIG_SYS_LOAD_ADDR           0x300000
-
-#define CONFIG_SYS_BOOTCS_CFG          0x00045D00
-
-/* 8Mbit SRAM @0x80100000 */
-#define CONFIG_SYS_CS1_SIZE            0x00200000
-#define CONFIG_SYS_CS1_CFG             0x21D00
-
-/* Display H1, Status Inputs, EPLD @0x80600000 8 Bit */
-#define CONFIG_SYS_CS3_START           CONFIG_SYS_DISPLAY_BASE
-#define CONFIG_SYS_CS3_SIZE            0x00000100
-#define CONFIG_SYS_CS3_CFG             0x00081802
-
-/* Interbus Master 16 Bit */
-#define CONFIG_SYS_CS6_START           CONFIG_SYS_IB_MASTER
-#define CONFIG_SYS_CS6_SIZE            0x00010000
-#define CONFIG_SYS_CS6_CFG             0x00FF3500
-
-/* Interbus EPLD 8 Bit */
-#define CONFIG_SYS_CS7_START           CONFIG_SYS_IB_EPLD
-#define CONFIG_SYS_CS7_SIZE            0x00010000
-#define CONFIG_SYS_CS7_CFG             0x00081800
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff Supports IDE harddisk
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 2 drives per IDE bus*/
-
-/*---------------------------------------------------------------------*/
-/* Display addresses                                                  */
-/*---------------------------------------------------------------------*/
-#define CONFIG_SYS_DISP_CHR_RAM        (CONFIG_SYS_DISPLAY_BASE + 0x38)
-#define CONFIG_SYS_DISP_CWORD          (CONFIG_SYS_DISPLAY_BASE + 0x30)
-
-#endif /* __CONFIG_H */
index 700e9c1b23c85de05ff73a510da31cd65a309d72..b4a62453625bbffd1a5ebc50a681497e943d08ed 100644 (file)
 /* Miscellaneous configurable options */
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_PROMPT             "=> "
 #define CONFIG_AUTO_COMPLETE
 #define CONFIG_SYS_CBSIZE              256
 
similarity index 81%
rename from include/configs/uniphier-common.h
rename to include/configs/uniphier.h
index b18ae6dfaeb3551573ae9810fd4ef817428e209f..5a53c506c35f50be969b4e5188d002206910ccfc 100644 (file)
 #ifndef __CONFIG_UNIPHIER_COMMON_H__
 #define __CONFIG_UNIPHIER_COMMON_H__
 
-#if defined(CONFIG_PFC_MICRO_SUPPORT_CARD) &&  \
-                               defined(CONFIG_DCC_MICRO_SUPPORT_CARD)
-# error "Both CONFIG_PFC_MICRO_SUPPORT_CARD and CONFIG_DCC_MICRO_SUPPORT_CARD \
-are defined. Select only one of them."
+#if defined(CONFIG_MACH_PH1_PRO4)
+#define CONFIG_DDR_NUM_CH0 2
+#define CONFIG_DDR_NUM_CH1 2
+
+/* Physical start address of SDRAM */
+#define CONFIG_SDRAM0_BASE     0x80000000
+#define CONFIG_SDRAM0_SIZE     0x20000000
+#define CONFIG_SDRAM1_BASE     0xa0000000
+#define CONFIG_SDRAM1_SIZE     0x20000000
+#endif
+
+#if defined(CONFIG_MACH_PH1_LD4)
+#define CONFIG_DDR_NUM_CH0 1
+#define CONFIG_DDR_NUM_CH1 1
+
+/* Physical start address of SDRAM */
+#define CONFIG_SDRAM0_BASE     0x80000000
+#define CONFIG_SDRAM0_SIZE     0x10000000
+#define CONFIG_SDRAM1_BASE     0x90000000
+#define CONFIG_SDRAM1_SIZE     0x10000000
+#endif
+
+#if defined(CONFIG_MACH_PH1_SLD8)
+#define CONFIG_DDR_NUM_CH0 1
+#define CONFIG_DDR_NUM_CH1 1
+
+/* Physical start address of SDRAM */
+#define CONFIG_SDRAM0_BASE     0x80000000
+#define CONFIG_SDRAM0_SIZE     0x10000000
+#define CONFIG_SDRAM1_BASE     0x90000000
+#define CONFIG_SDRAM1_SIZE     0x10000000
 #endif
 
 /*
@@ -40,10 +67,17 @@ are defined. Select only one of them."
 #define CONFIG_SYS_NS16550_REG_SIZE    -2
 #endif
 
+/* TODO: move to Kconfig and device tree */
+#if 0
+#define CONFIG_SYS_NS16550_SERIAL
+#endif
+
+#define CONFIG_SMC911X
+
 #define CONFIG_SMC911X_BASE            CONFIG_SUPPORT_CARD_ETHER_BASE
 #define CONFIG_SMC911X_32_BIT
 
-#define CONFIG_SYS_MALLOC_F_LEN  0x7000
+#define CONFIG_SYS_MALLOC_F_LEN  0x2000
 
 /*-----------------------------------------------------------------------
  * MMU and Cache Setting
@@ -58,6 +92,7 @@ are defined. Select only one of them."
 
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_BOARD_EARLY_INIT_R
 #define CONFIG_BOARD_LATE_INIT
 
 #define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
@@ -87,17 +122,7 @@ are defined. Select only one of them."
 
 #define CONFIG_FLASH_SHOW_PROGRESS     45 /* count down from 45/5: 9..1 */
 
-#if defined(CONFIG_PFC_MICRO_SUPPORT_CARD)
-# define CONFIG_SYS_MAX_FLASH_BANKS    1
-# define CONFIG_SYS_FLASH_BANKS_LIST   {0x00000000}
-# define CONFIG_SYS_FLASH_BANKS_SIZES  {0x02000000}
-#endif
-
-#if defined(CONFIG_DCC_MICRO_SUPPORT_CARD)
-# define CONFIG_SYS_MAX_FLASH_BANKS    1
-# define CONFIG_SYS_FLASH_BANKS_LIST   {0x04000000}
-# define CONFIG_SYS_FLASH_BANKS_SIZES  {0x04000000}
-#endif
+#define CONFIG_SYS_MAX_FLASH_BANKS_DETECT 2
 
 /* serial console configuration */
 #define CONFIG_BAUDRATE                        115200
@@ -112,7 +137,6 @@ are defined. Select only one of them."
 #define CONFIG_SYS_LONGHELP            /* undef to save memory */
 
 #define CONFIG_CMDLINE_EDITING         /* add command line history     */
-#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
 #define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size */
 /* Print Buffer Size */
 #define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
@@ -143,15 +167,6 @@ are defined. Select only one of them."
  */
 #define CONFIG_ARP_TIMEOUT     500UL  /* 0.5 msec */
 
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_TIME
-#define CONFIG_CMD_NAND                /* NAND flash suppport */
-
 #define CONFIG_SYS_MAX_NAND_DEVICE                     1
 #define CONFIG_SYS_NAND_MAX_CHIPS                      2
 #define CONFIG_SYS_NAND_ONFI_DETECTION
@@ -166,6 +181,14 @@ are defined. Select only one of them."
 #define CONFIG_SYS_NAND_USE_FLASH_BBT
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS                  0
 
+/* USB */
+#define CONFIG_USB_MAX_CONTROLLER_COUNT                2
+#define CONFIG_CMD_FAT
+#define CONFIG_FAT_WRITE
+#define CONFIG_DOS_PARTITION
+
+#define CONFIG_CMD_DM
+
 /* memtest works on */
 #define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
 #define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_SDRAM_BASE + 0x01000000)
@@ -209,7 +232,6 @@ are defined. Select only one of them."
        "image_offset=0x00080000\0"             \
        "image_size=0x00f00000\0"               \
        "verify=n\0"                            \
-       "autostart=yes\0"                       \
        "norboot=run add_default_bootargs;"                             \
                "bootm $image_offset\0"                                 \
        "nandboot=run add_default_bootargs;"                            \
@@ -218,10 +240,6 @@ are defined. Select only one of them."
        "add_default_bootargs=setenv bootargs $bootargs"                \
                " console=ttyS0,$baudrate\0"                            \
 
-/* FIT support */
-#define CONFIG_FIT
-#define CONFIG_FIT_VERBOSE     1 /* enable fit_format_{error,warning}() */
-
 /* Open Firmware flat tree */
 #define CONFIG_OF_LIBFDT
 
@@ -241,16 +259,27 @@ are defined. Select only one of them."
 
 #define CONFIG_SYS_TEXT_BASE           0x84000000
 
-#if defined(CONFIG_SPL_BUILD)
+#if defined(CONFIG_MACH_PH1_LD4) || defined(CONFIG_MACH_PH1_SLD8)
+#define CONFIG_SPL_TEXT_BASE           0x00040000
+#endif
+#if defined(CONFIG_MACH_PH1_PRO4)
+#define CONFIG_SPL_TEXT_BASE           0x00100000
+#endif
+
 #define CONFIG_BOARD_POSTCLK_INIT
-#else
+
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_SKIP_LOWLEVEL_INIT
 #endif
 
 #define CONFIG_SYS_SPL_MALLOC_START    (0x0ff00000)
 #define CONFIG_SYS_SPL_MALLOC_SIZE     (0x00004000)
 
+#ifdef CONFIG_SPL_BUILD
 #define CONFIG_SYS_INIT_SP_ADDR                (0x0ff08000)
+#else
+#define CONFIG_SYS_INIT_SP_ADDR                ((CONFIG_SYS_TEXT_BASE) - 0x00001000)
+#endif
 
 #define CONFIG_SPL_FRAMEWORK
 #define CONFIG_SPL_NAND_SUPPORT
index 3c54870783d2cb78f252fbe25a2dd9938913cf9e..84571f6e938261bdc2eadca9035cc3e3187f7bb1 100644 (file)
@@ -85,7 +85,6 @@
 /* DataFlash */
 #define CONFIG_ATMEL_DATAFLASH_SPI
 #define CONFIG_HAS_DATAFLASH
-#define CONFIG_SYS_SPI_WRITE_TOUT              (5*CONFIG_SYS_HZ)
 #define CONFIG_SYS_MAX_DATAFLASH_BANKS         1
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000
 #define AT91_SPI_CLK                           8000000
diff --git a/include/configs/utx8245.h b/include/configs/utx8245.h
deleted file mode 100644 (file)
index 5be62ec..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Gregory E. Allen, gallen@arlut.utexas.edu
- * Matthew E. Karger, karger@arlut.utexas.edu
- * Applied Research Laboratories, The University of Texas at Austin
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- *
- * Configuration settings for the utx8245 board.
- *
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC8245         1
-#define CONFIG_UTX8245         1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-
-#define DEBUG                          1
-
-#define CONFIG_IDENT_STRING     " [UTX5] "
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                57600
-
-#define CONFIG_BOOTDELAY       2
-#define CONFIG_AUTOBOOT_PROMPT "autoboot in %d seconds\n", bootdelay
-#define CONFIG_BOOTCOMMAND     "run nfsboot"   /* autoboot command     */
-#define CONFIG_BOOTARGS                "root=/dev/ram console=ttyS0,57600" /* RAMdisk */
-#define CONFIG_ETHADDR         00:AA:00:14:00:05       /* UTX5 */
-#define CONFIG_SERVERIP                10.8.17.105     /* Spree */
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "kernel_addr=FFA00000\0" \
-       "ramdisk_addr=FF800000\0" \
-       "u-boot_startaddr=FFB00000\0" \
-       "u-boot_endaddr=FFB2FFFF\0" \
-       "nfsargs=setenv bootargs console=ttyS0,${baudrate} root=/dev/nfs rw \
-nfsroot=${nfsrootip}:${rootpath} ip=dhcp\0" \
-       "ramargs=setenv bootargs console=ttyS0,${baudrate} root=/dev/ram0\0" \
-       "smargs=setenv bootargs console=ttyS0,${baudrate} root=/dev/mtdblock1 ro\0" \
-       "fwargs=setenv bootargs console=ttyS0,${baudrate} root=/dev/sda2 ro\0" \
-       "nfsboot=run nfsargs;bootm ${kernel_addr}\0" \
-       "ramboot=run ramargs;bootm ${kernel_addr} ${ramdisk_addr}\0" \
-       "smboot=run smargs;bootm ${kernel_addr} ${ramdisk_addr}\0" \
-       "fwboot=run fwargs;bootm ${kernel_addr} ${ramdisk_addr}\0" \
-       "update_u-boot=tftp ${loadaddr} /bdi2000/u-boot.bin;protect off \
-${u-boot_startaddr} ${u-boot_endaddr};era ${u-boot_startaddr} \
-${u-boot_endaddr};cp.b ${loadaddr} ${u-boot_startaddr} ${filesize};\
-protect on ${u-boot_startaddr} ${u-boot_endaddr}"
-
-#define CONFIG_ENV_OVERWRITE
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_BDI
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_FLASH
-#define CONFIG_CMD_MEMORY
-#define CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_CONSOLE
-#define CONFIG_CMD_LOADS
-#define CONFIG_CMD_LOADB
-#define CONFIG_CMD_IMI
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_DATE
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                            /* undef to save memory         */
-#define CONFIG_SYS_CBSIZE      256                             /* Console I/O Buffer Size      */
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-
-#define        CONFIG_SYS_MAXARGS      16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x00100000      /* Default load address         */
-
-
-/*-----------------------------------------------------------------------
- * PCI configuration
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                             /* include pci support          */
-#define        CONFIG_PCI_INDIRECT_BRIDGE 1    /* indirect PCI bridge support */
-#undef CONFIG_PCI_PNP
-#define CONFIG_PCI_SCAN_SHOW
-#define CONFIG_EEPRO100
-#define CONFIG_SYS_RX_ETH_BUFFER       8               /* use 8 rx buffer on eepro100  */
-#define CONFIG_EEPRO100_SROM_WRITE
-
-#define PCI_ENET0_IOADDR       0xF0000000
-#define PCI_ENET0_MEMADDR      0xF0000000
-
-#define PCI_FIREWIRE_IOADDR            0xF1000000
-#define PCI_FIREWIRE_MEMADDR   0xF1000000
-/*
-#define PCI_ENET0_IOADDR       0xFE000000
-#define PCI_ENET0_MEMADDR      0x80000000
-
-#define PCI_FIREWIRE_IOADDR    0x81000000
-#define PCI_FIREWIRE_MEMADDR   0x81000000
-*/
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE      0x00000000
-#define CONFIG_SYS_MAX_RAM_SIZE    0x10000000  /* 256MB  */
-/*#define CONFIG_SYS_VERY_BIG_RAM      1 */
-
-/* FLASH_BASE is FF800000, with 4MB on RCS0, but the reset vector
- * is actually located at FFF00100.  Therefore, U-Boot is
- * physically located at 0xFFB0_0000, but is also mirrored at
- * 0xFFF0_0000.
- */
-#define CONFIG_SYS_RESET_ADDRESS   0xFFF00100
-
-#define CONFIG_SYS_EUMB_ADDR       0xFC000000
-
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE
-
-#define CONFIG_SYS_MONITOR_LEN     (256 << 10) /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN      (128 << 10) /* Reserve 128 kB for malloc()  */
-
-/*#define CONFIG_SYS_DRAM_TEST         1 */
-#define CONFIG_SYS_MEMTEST_START   0x00003000  /* memtest works on     0...256 MB      */
-#define CONFIG_SYS_MEMTEST_END     0x0ff8ffa7  /* in SDRAM, skips exception */
-                                                                               /* vectors and U-Boot */
-
-
-/*--------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- *------------------------------------------------------------------*/
-#define CONFIG_SYS_INIT_DATA_SIZE    128       /* Size in bytes reserved for */
-                                                                       /* initial data */
-#define CONFIG_SYS_INIT_RAM_ADDR     0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE      0x1000
-#define CONFIG_SYS_INIT_DATA_OFFSET  (CONFIG_SYS_INIT_RAM_SIZE - CONFIG_SYS_INIT_DATA_SIZE)
-#define CONFIG_SYS_GBL_DATA_OFFSET  (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-/*--------------------------------------------------------------------
- * NS16550 Configuration
- *------------------------------------------------------------------*/
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#if (CONFIG_CONS_INDEX == 1 || CONFIG_CONS_INDEX == 2)
-#      define CONFIG_SYS_NS16550_CLK           get_bus_freq(0)
-#else
-#      define CONFIG_SYS_NS16550_CLK 33000000
-#endif
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_EUMB_ADDR + 0x4500)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_EUMB_ADDR + 0x4600)
-#define CONFIG_SYS_NS16550_COM3        0xFF000000
-#define CONFIG_SYS_NS16550_COM4        0xFF000008
-
-/*--------------------------------------------------------------------
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- * For the detail description refer to the MPC8240 user's manual.
- *------------------------------------------------------------------*/
-
-#define CONFIG_SYS_CLK_FREQ  33000000
-
-/*#define CONFIG_SYS_ETH_DEV_FN             0x7800 */
-/*#define CONFIG_SYS_ETH_IOBASE             0x00104000 */
-
-/*--------------------------------------------------------------------
- * I2C Configuration
- *------------------------------------------------------------------*/
-#if 1
-#define CONFIG_HARD_I2C                1               /* To enable I2C support        */
-#define CONFIG_SYS_I2C_SPEED           400000
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-#endif
-
-#define CONFIG_RTC_PCF8563     1               /* enable I2C support for */
-                                                                       /* Philips PCF8563 RTC */
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51    /* Philips PCF8563 RTC address */
-
-/*--------------------------------------------------------------------
- *     Memory Control Configuration Register values
- *     - see sec. 4.12 of MPC8245 UM
- *------------------------------------------------------------------*/
-
-/**** MCCR1 ****/
-#define CONFIG_SYS_ROMNAL          0
-#define CONFIG_SYS_ROMFAL          10          /* (tacc=70ns)*mem_freq - 2,
-                                                                       mem_freq = 100MHz */
-
-#define CONFIG_SYS_BANK7_ROW   0               /* SDRAM bank 7-0 row address */
-#define CONFIG_SYS_BANK6_ROW   0               /*      bit count */
-#define CONFIG_SYS_BANK5_ROW   0
-#define CONFIG_SYS_BANK4_ROW   0
-#define CONFIG_SYS_BANK3_ROW   0
-#define CONFIG_SYS_BANK2_ROW   0
-#define CONFIG_SYS_BANK1_ROW   2
-#define CONFIG_SYS_BANK0_ROW   2
-
-/**** MCCR2, refresh interval clock cycles ****/
-#define CONFIG_SYS_REFINT          480     /* 33 MHz SDRAM clock was 480 */
-
-/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4. */
-#define CONFIG_SYS_BSTOPRE         1023        /* burst to precharge[0..9], */
-                                                               /* sets open page interval */
-
-/**** MCCR3 ****/
-#define CONFIG_SYS_REFREC          7       /* Refresh to activate interval, trc */
-
-/**** MCCR4 ****/
-#define CONFIG_SYS_PRETOACT        2       /* trp */
-#define CONFIG_SYS_ACTTOPRE        7       /* trcd + (burst length - 1) + trdl */
-#define CONFIG_SYS_SDMODE_CAS_LAT  3       /* SDMODE CAS latancy */
-#define CONFIG_SYS_SDMODE_WRAP     0       /* SDMODE wrap type, sequential */
-#define CONFIG_SYS_ACTORW              2               /* trcd min */
-#define CONFIG_SYS_DBUS_SIZE2          1               /* set for 8-bit RCS1, clear for 32,64 */
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER 1
-#define CONFIG_SYS_EXTROM          0                   /* we don't need extended ROM space */
-#define CONFIG_SYS_REGDIMM         0
-
-/* calculate according to formula in sec. 6-22 of 8245 UM */
-#define CONFIG_SYS_PGMAX           50          /* how long the 8245 retains the */
-                                                                       /* currently accessed page in memory */
-                                                                       /* was 45 */
-
-#define CONFIG_SYS_SDRAM_DSCD  0x20    /* SDRAM data in sample clock delay - note */
-                                                               /* bits 7,6, and 3-0 MUST be 0 */
-
-#if 0
-#define CONFIG_SYS_DLL_MAX_DELAY       0x04
-#else
-#define CONFIG_SYS_DLL_MAX_DELAY       0
-#endif
-#if 0                                                  /* need for 33MHz SDRAM */
-#define CONFIG_SYS_DLL_EXTEND  0x80
-#else
-#define CONFIG_SYS_DLL_EXTEND  0
-#endif
-#define CONFIG_SYS_PCI_HOLD_DEL 0x20
-
-
-/* Memory bank settings.
- * Only bits 20-29 are actually used from these values to set the
- * start/end addresses. The upper two bits will always be 0, and the lower
- * 20 bits will be 0x00000 for a start address, or 0xfffff for an end
- * address. Refer to the MPC8245 user manual.
- */
-
-#define CONFIG_SYS_BANK0_START     0x00000000
-#define CONFIG_SYS_BANK0_END       (CONFIG_SYS_MAX_RAM_SIZE/2 - 1)
-#define CONFIG_SYS_BANK0_ENABLE    1
-#define CONFIG_SYS_BANK1_START     CONFIG_SYS_MAX_RAM_SIZE/2
-#define CONFIG_SYS_BANK1_END       (CONFIG_SYS_MAX_RAM_SIZE - 1)
-#define CONFIG_SYS_BANK1_ENABLE    1
-#define CONFIG_SYS_BANK2_START     0x3ff00000          /* not available in this design */
-#define CONFIG_SYS_BANK2_END       0x3fffffff
-#define CONFIG_SYS_BANK2_ENABLE    0
-#define CONFIG_SYS_BANK3_START     0x3ff00000
-#define CONFIG_SYS_BANK3_END       0x3fffffff
-#define CONFIG_SYS_BANK3_ENABLE    0
-#define CONFIG_SYS_BANK4_START     0x3ff00000
-#define CONFIG_SYS_BANK4_END       0x3fffffff
-#define CONFIG_SYS_BANK4_ENABLE    0
-#define CONFIG_SYS_BANK5_START     0x3ff00000
-#define CONFIG_SYS_BANK5_END       0x3fffffff
-#define CONFIG_SYS_BANK5_ENABLE    0
-#define CONFIG_SYS_BANK6_START     0x3ff00000
-#define CONFIG_SYS_BANK6_END       0x3fffffff
-#define CONFIG_SYS_BANK6_ENABLE    0
-#define CONFIG_SYS_BANK7_START     0x3ff00000
-#define CONFIG_SYS_BANK7_END       0x3fffffff
-#define CONFIG_SYS_BANK7_ENABLE    0
-
-/*--------------------------------------------------------------------*/
-/* 4.4 - Output Driver Control Register */
-/*--------------------------------------------------------------------*/
-#define CONFIG_SYS_ODCR            0xe5
-
-/*--------------------------------------------------------------------*/
-/* 4.8 - Error Handling Registers */
-/*-------------------------------CONFIG_SYS_SDMODE_BURSTLEN-------------------------------------*/
-#define CONFIG_SYS_ERRENR1     0x11    /* enable SDRAM refresh overflow error */
-
-/* SDRAM 0-256 MB */
-#define CONFIG_SYS_IBAT0L  (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-/*#define CONFIG_SYS_IBAT0L  (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_CACHEINHIBIT) */
-#define CONFIG_SYS_IBAT0U  (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* stack in dcache */
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-
-
-#define CONFIG_SYS_IBAT2L  (CONFIG_SYS_SDRAM_BASE + 0x10000000 | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT2U  (CONFIG_SYS_SDRAM_BASE + 0x10000000| BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* PCI memory */
-/*#define CONFIG_SYS_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) */
-/*#define CONFIG_SYS_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) */
-
-/*Flash, config addrs, etc. */
-#define CONFIG_SYS_IBAT3L  (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U  (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L  CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U  CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L  CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U  CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L  CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U  CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ       (8 << 20)   /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_FLASH_BASE      0xFF800000
-#define CONFIG_SYS_MAX_FLASH_BANKS     1                       /* Max number of flash banks */
-
-/*     NOTE: environment is not EMBEDDED in the u-boot code.
-       It's stored in flash in its own separate sector.  */
-#define CONFIG_ENV_IS_IN_FLASH     1
-
-#if 1  /* AMD AM29LV033C */
-#define CONFIG_SYS_MAX_FLASH_SECT      64              /* Max number of sectors in one bank */
-#define CONFIG_ENV_ADDR                0xFFBF0000      /* flash sector SA63 */
-#define CONFIG_ENV_SECT_SIZE   (64*1024)       /* Size of the Environment Sector */
-#else  /* AMD AM29LV116D */
-#define CONFIG_SYS_MAX_FLASH_SECT      35      /* Max number of sectors in one bank */
-#define CONFIG_ENV_ADDR                0xFF9FA000      /* flash sector SA33 */
-#define CONFIG_ENV_SECT_SIZE   (8*1024)        /* Size of the Environment Sector */
-#endif /* #if */
-
-#define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE            /* Size of the Environment */
-#define CONFIG_ENV_OFFSET              0                       /* starting right at the beginning */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500             /* Timeout for Flash Write (in ms)      */
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-#undef CONFIG_SYS_RAMBOOT
-#else
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value        */
-#endif
-
-#endif /* __CONFIG_H */
index 217ba2fbd9b22bfb68433fce18578b959ad7d246..83e4163e3f897e802443416ed8e9b155dd101178 100644 (file)
@@ -25,6 +25,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #define CPU_CLOCK_RATE                 324000000 /* Clock for the MIPS core */
 #define CONFIG_SYS_MIPS_TIMER_FREQ     (CPU_CLOCK_RATE / 2)
 
index 6897aa8aa3d81bfe780ffdbf1999ccad2b1c1e97..8880de86c42d7c6eb128e68cd7a0a2a74930ef7b 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_SYS_MAX_I2C_BUS         TEGRA_I2C_NUM_CONTROLLERS
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
index 29c32fee5178060965cd87992c178ec7ccaad7b2..900b89c997807a70968f9b0d1d7fa61c2bf1cd51 100644 (file)
@@ -19,8 +19,7 @@
  * High Level Configuration Options
  * (easy to change)
  */
-#define CONFIG_ARM926EJS       1       /* This is an arm926ejs CPU core */
-#define CONFIG_VERSATILE       1       /* in Versatile Platform Board  */
+#define CONFIG_VERSATILE       1       /* This is Versatile Platform Board     */
 #define CONFIG_ARCH_VERSATILE  1       /* Specifically, a Versatile    */
 
 #define CONFIG_SYS_MEMTEST_START       0x100000
index f3af971214a53813be6f3c84bada20d81595faed..027d78b59171901274da4e46c0da576c128c6415 100644 (file)
@@ -8,6 +8,9 @@
 #ifndef __VEXPRESS_AEMV8A_H
 #define __VEXPRESS_AEMV8A_H
 
+/* We use generic board for v8 Versatile Express */
+#define CONFIG_SYS_GENERIC_BOARD
+
 #ifdef CONFIG_BASE_FVP
 #ifndef CONFIG_SEMIHOSTING
 #error CONFIG_BASE_FVP requires CONFIG_SEMIHOSTING
@@ -25,8 +28,6 @@
 
 /*#define CONFIG_ARMV8_SWITCH_TO_EL1*/
 
-/*#define CONFIG_SYS_GENERIC_BOARD*/
-
 #define CONFIG_SYS_NO_FLASH
 
 #define CONFIG_SUPPORT_RAW_INITRD
index 982f4a75ef6775e99f08c16ed6515501d490fbab..b43afa29387df23fa5bccc37d734e83b2600406a 100644 (file)
@@ -18,6 +18,4 @@
 #define CONFIG_SYSFLAGS_ADDR   0x1c010030
 #define CONFIG_SMP_PEN_ADDR    CONFIG_SYSFLAGS_ADDR
 
-#define CONFIG_ARMV7_VIRT
-
 #endif
index 6fd0b173ebb9a1a45f2a514bdb9b6eff3eee8b45..bd79e810627c4ae7085567afd04e0f385096ec23 100644 (file)
 #define CONFIG_BOOTDELAY               3
 
 #define CONFIG_LOADADDR                        0x82000000
-#define CONFIG_SYS_TEXT_BASE           0x3f008000
+
+/* We boot from the gfxRAM area of the OCRAM. */
+#define CONFIG_SYS_TEXT_BASE           0x3f408000
+#define CONFIG_BOARD_SIZE_LIMIT                524288
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "script=boot.scr\0" \
diff --git a/include/configs/virtlab2.h b/include/configs/virtlab2.h
deleted file mode 100644 (file)
index 0457cdf..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * (C) Copyright 2006-2008
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC823          1       /* This is a MPC823 CPU         */
-#define CONFIG_VIRTLAB2                1       /* ...on a virtlab2 module      */
-#define        CONFIG_TQM8xxL          1
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#define CONFIG_SYS_SMC_RXBUFLEN        128
-#define CONFIG_SYS_MAXIDLE     10
-#define CONFIG_BAUDRATE                115200  /* console baudrate = 115kbps   */
-
-#define        CONFIG_BOOTCOUNT_LIMIT
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BOARD_TYPES     1       /* support board types          */
-
-#define CONFIG_PREBOOT "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "flash_nfs=run nfsargs addip;"                                  \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip;"                                 \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip;bootm\0"     \
-       "rootpath=/opt/eldk/ppc_8xx\0"                                  \
-       "hostname=virtlab2\0"                                           \
-       "bootfile=virtlab2/uImage\0"                                    \
-       "fdt_addr=40040000\0"                                           \
-       "kernel_addr=40060000\0"                                        \
-       "ramdisk_addr=40200000\0"                                       \
-       "u-boot=virtlab2/u-image.bin\0"                                 \
-       "load=tftp 200000 ${u-boot}\0"                                  \
-       "update=prot off 40000000 +${filesize};"                        \
-               "era 40000000 +${filesize};"                            \
-               "cp.b 200000 40000000 ${filesize};"                     \
-               "sete filesize;save\0"                                  \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#undef CONFIG_SYS_LOADS_BAUD_CHANGE            /* don't allow baudrate change  */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#if defined(CONFIG_LCD)
-# undef         CONFIG_STATUS_LED              /* disturbs display             */
-#else
-# define CONFIG_STATUS_LED     1       /* Status LED enabled           */
-#endif /* CONFIG_LCD */
-
-#undef CONFIG_CAN_DRIVER               /* CAN Driver support disabled  */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-
-#define        CONFIG_RTC_MPC8xx               /* use internal RTC of MPC8xx   */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_SNTP
-
-#if defined(CONFIG_SPLASH_SCREEN)
-    #define CONFIG_CMD_BMP
-#endif
-
-
-#define CONFIG_NETCONSOLE
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define        CONFIG_SYS_HUSH_PARSER          1       /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE               1024    /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE               256     /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS              16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address */
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                0xFFF00000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_IMMR
-#define        CONFIG_SYS_INIT_RAM_SIZE        0x2F00  /* Size of used area in DPRAM   */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x40000000
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MALLOC_LEN           (128 << 10)     /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-
-/* use CFI flash driver */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use the common driver */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE+flash_info[0].size }
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT      71      /* max number of sectors on one chip */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x8000  /*   Offset   of Environment Sector     */
-#define        CONFIG_ENV_SIZE         0x4000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET+CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-#define        CONFIG_SYS_USE_PPCENV                   /* Environment embedded in sect .ppcenv */
-
-#define CONFIG_MISC_INIT_R             /* Make sure to remap flashes correctly */
-
-/*-----------------------------------------------------------------------
- * Dynamic MTD partition support
- */
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
-#define CONFIG_FLASH_CFI_MTD
-#define MTDIDS_DEFAULT         "nor0=TQM8xxL-0"
-
-#define MTDPARTS_DEFAULT       "mtdparts=TQM8xxL-0:256k(u-boot),"      \
-                                               "128k(dtb),"            \
-                                               "1664k(kernel),"        \
-                                               "2m(rootfs),"           \
-                                               "4m(data)"
-
-/*-----------------------------------------------------------------------
- * Hardware Information Block
- */
-#define CONFIG_SYS_HWINFO_OFFSET       0x0003FFC0      /* offset of HW Info block */
-#define CONFIG_SYS_HWINFO_SIZE         0x00000040      /* size   of HW Info block */
-#define CONFIG_SYS_HWINFO_MAGIC        0x54514D38      /* 'TQM8' */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      16      /* For all MPC8xx CPUs                  */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     4       /* log base 2 of the above value        */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control                           11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#ifndef        CONFIG_CAN_DRIVER
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#else  /* we must activate GPL5 in the SIUMCR for CAN */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-#endif /* CONFIG_CAN_DRIVER */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         15-30
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF11
-#define CONFIG_SYS_SCCR        (SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \
-                        SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \
-                        SCCR_DFALCD00)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     (0xE0000000)
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_DMA_ADDR     (0xE4000000)
-#define CONFIG_SYS_PCMCIA_DMA_SIZE     ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_ATTRB_ADDR   (0xE8000000)
-#define CONFIG_SYS_PCMCIA_ATTRB_SIZE   ( 64 << 20 )
-#define CONFIG_SYS_PCMCIA_IO_ADDR      (0xEC000000)
-#define CONFIG_SYS_PCMCIA_IO_SIZE      ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter)
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_IDE_PREINIT     1       /* Use preinit IDE hook */
-#define        CONFIG_IDE_8xx_PCCARD   1       /* Use IDE with PC Card Adapter */
-
-#undef CONFIG_IDE_8xx_DIRECT           /* Direct IDE    not supported  */
-#undef CONFIG_IDE_LED                  /* LED   for ide not supported  */
-#undef CONFIG_IDE_RESET                /* reset for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 1 drive per IDE bus     */
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_PCMCIA_MEM_ADDR
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     (CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (2 * CONFIG_SYS_PCMCIA_MEM_SIZE + 0x320)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x0100
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x40000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x60000000      /* FLASH bank #0        */
-
-/* used to re-map FLASH both when starting from SRAM or FLASH:
- * restrict access enough to keep SRAM working (if any)
- * but not too much to meddle with FLASH accesses
- */
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xE0000000      /* OR addr mask */
-
-/*
- * FLASH timing:
- */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \
-                                OR_SCY_3_CLK | OR_EHTR | OR_BI)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  CONFIG_SYS_OR0_PRELIM
-#define CONFIG_SYS_BR1_PRELIM  ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_V )
-
-/*
- * BR2/3 and OR2/3 (SDRAM)
- *
- */
-#define SDRAM_BASE2_PRELIM     0x00000000      /* SDRAM bank #0        */
-#define SDRAM_BASE3_PRELIM     0x20000000      /* SDRAM bank #1        */
-#define        SDRAM_MAX_SIZE          0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define CONFIG_SYS_OR2_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-#ifndef        CONFIG_CAN_DRIVER
-#define        CONFIG_SYS_OR3_PRELIM   CONFIG_SYS_OR2_PRELIM
-#define CONFIG_SYS_BR3_PRELIM  ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-#else  /* CAN uses CS3#, so we can have only one SDRAM bank anyway */
-#define        CONFIG_SYS_CAN_BASE             0xC0000000      /* CAN mapped at 0xC0000000     */
-#define CONFIG_SYS_CAN_OR_AM           0xFFFF8000      /* 32 kB address mask           */
-#define CONFIG_SYS_OR3_CAN             (CONFIG_SYS_CAN_OR_AM | OR_G5LA | OR_BI)
-#define CONFIG_SYS_BR3_CAN             ((CONFIG_SYS_CAN_BASE & BR_BA_MSK) | \
-                                       BR_PS_8 | BR_MS_UPMB | BR_V )
-#endif /* CONFIG_CAN_DRIVER */
-
-/*
- * Memory Periodic Timer Prescaler
- *
- * The Divider for PTA (refresh timer) configuration is based on an
- * example SDRAM configuration (64 MBit, one bank). The adjustment to
- * the number of chip selects (NCS) and the actually needed refresh
- * rate is done by setting MPTPR.
- *
- * PTA is calculated from
- *     PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS)
- *
- *     gclk      CPU clock (not bus clock!)
- *     Trefresh  Refresh cycle * 4 (four word bursts used)
- *
- * 4096  Rows from SDRAM example configuration
- * 1000  factor s -> ms
- *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration
- *    4  Number of refresh cycles per period
- *   64  Refresh cycle in ms per number of rows
- * --------------------------------------------
- * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000
- *
- * 50 MHz => 50.000.000 / Divider =  98
- * 66 Mhz => 66.000.000 / Divider = 129
- * 80 Mhz => 80.000.000 / Divider = 156
- */
-
-#define CONFIG_SYS_PTA_PER_CLK ((4096 * 32 * 1000) / (4 * 64))
-#define CONFIG_SYS_MAMR_PTA    98
-
-/*
- * For 16 MBit, refresh rates could be 31.3 us
- * (= 64 ms / 2K = 125 / quad bursts).
- * For a simpler initialization, 15.6 us is used instead.
- *
- * #define CONFIG_SYS_MPTPR_2BK_2K     MPTPR_PTP_DIV32         for 2 banks
- * #define CONFIG_SYS_MPTPR_1BK_2K     MPTPR_PTP_DIV64         for 1 bank
- */
-#define CONFIG_SYS_MPTPR_2BK_4K        MPTPR_PTP_DIV16         /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_4K        MPTPR_PTP_DIV32         /* setting for 1 bank   */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit                */
-#define CONFIG_SYS_MPTPR_2BK_8K        MPTPR_PTP_DIV8          /* setting for 2 banks  */
-#define CONFIG_SYS_MPTPR_1BK_8K        MPTPR_PTP_DIV16         /* setting for 1 bank   */
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MAMR_8COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-/* 9 column SDRAM */
-#define CONFIG_SYS_MAMR_9COL   ((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE       |   \
-                        MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |   \
-                        MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X)
-
-/* Map peripheral control registers on CS4 */
-#define CONFIG_SYS_PERIPHERAL_BASE 0xA0000000
-#define CONFIG_SYS_PERIPHERAL_OR_AM 0xFFFF8000 /* 32 kB address mask */
-#define CONFIG_SYS_OR4_PRELIM (CONFIG_SYS_PERIPHERAL_OR_AM | OR_TRLX | OR_CSNT_SAM | \
-                                               OR_SCY_2_CLK)
-#define CONFIG_SYS_BR4_PRELIM ((CONFIG_SYS_PERIPHERAL_BASE & BR_BA_MSK) | BR_PS_8 | BR_V)
-#define PCMCIA_CTRL (CONFIG_SYS_PERIPHERAL_BASE + 0xB00)
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-#define CONFIG_HWCONFIG                1
-
-#endif /* __CONFIG_H */
index 9fb501a3412abd71a1e880fd72e42e90f6f47810..809017c5fe225278c87619e237fd0905b9c1dcf1 100644 (file)
 #define CONFIG_CMD_FAT
 #define CONFIG_DOS_PARTITION
 
+/* USB Configs */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS           0
+
 /* Ethernet Configuration */
 #define CONFIG_CMD_PING
 #define CONFIG_CMD_DHCP
index 10e70d28b1ae3823330e8e7d2a3ff87984b33ba2..e083cbd07f17753fbf734902e03b2607944667d0 100644 (file)
 
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
 
 /* SD/MMC */
 #define CONFIG_MMC
index d3d3e694cdaa3c71f20f29fb6693f75cd8bddd77..c7a17f7a49d3809693e047f4975125f34f1886fe 100644 (file)
@@ -14,7 +14,6 @@
 #include <asm/arch/imx-regs.h>
 
  /* High Level Configuration Options */
-#define CONFIG_ARM1136 /* This is an arm1136 CPU core */
 #define CONFIG_MX35
 #define CONFIG_MX35_HCLK_FREQ  24000000
 
similarity index 71%
rename from include/configs/coreboot.h
rename to include/configs/x86-common.h
index 4b90dc205de82e4130547d1be44defd1ea8c208f..f16ae3291323887671945745dd7cf954c9073ee1 100644 (file)
@@ -7,25 +7,20 @@
  */
 
 #include <asm/ibmpc.h>
-/*
- * board/config.h - configuration options, board specific
- */
 
-#ifndef __CONFIG_H
-#define __CONFIG_H
+#ifndef __CONFIG_X86_COMMON_H
+#define __CONFIG_X86_COMMON_H
 
 /*
  * High Level Configuration Options
  * (easy to change)
  */
-#define CONFIG_SYS_COREBOOT
 #define CONFIG_SHOW_BOOT_PROGRESS
-#define CONFIG_LAST_STAGE_INIT
 #define CONFIG_SYS_VSNPRINTF
 #define CONFIG_ZBOOT_32
 #define CONFIG_PHYSMEM
-#define CONFIG_SYS_EARLY_PCI_INIT
 #define CONFIG_DISPLAY_BOARDINFO_LATE
+#define CONFIG_DISPLAY_CPUINFO
 
 #define CONFIG_DM
 #define CONFIG_CMD_DM
 #define CONFIG_LMB
 #define CONFIG_OF_LIBFDT
 
-#define CONFIG_BOOTSTAGE
-#define CONFIG_BOOTSTAGE_REPORT
-#define CONFIG_BOOTSTAGE_FDT
-#define CONFIG_CMD_BOOTSTAGE
-/* Place to stash bootstage data from first-stage U-Boot */
-#define CONFIG_BOOTSTAGE_STASH         0x0110f000
-#define CONFIG_BOOTSTAGE_STASH_SIZE    0x7fc
-#define CONFIG_BOOTSTAGE_USER_COUNT    60
-
 #define CONFIG_LZO
 #define CONFIG_FIT
 #undef CONFIG_ZLIB
 #undef CONFIG_GZIP
-
-/*-----------------------------------------------------------------------
- * Watchdog Configuration
- */
-#undef CONFIG_WATCHDOG
-#undef CONFIG_HW_WATCHDOG
+#define CONFIG_SYS_BOOTM_LEN           (16 << 20)
 
 /* SATA AHCI storage */
 
 #define CONFIG_SCSI_AHCI
-
+#define CONFIG_SATA_INTEL
 #ifdef CONFIG_SCSI_AHCI
 #define CONFIG_LIBATA
 #define CONFIG_SYS_64BIT_LBA
-#define CONFIG_SATA_INTEL              1
-#define CONFIG_SCSI_DEV_LIST           {PCI_VENDOR_ID_INTEL, \
-                       PCI_DEVICE_ID_INTEL_NM10_AHCI},       \
-       {PCI_VENDOR_ID_INTEL,           \
-                       PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_MOBILE}, \
-       {PCI_VENDOR_ID_INTEL, \
-                       PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_SERIES6}, \
-       {PCI_VENDOR_ID_INTEL,           \
-                       PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE}
 
 #define CONFIG_SYS_SCSI_MAX_SCSI_ID    2
 #define CONFIG_SYS_SCSI_MAX_LUN                1
 /*-----------------------------------------------------------------------
  * Serial Configuration
  */
-#define CONFIG_COREBOOT_SERIAL
 #define CONFIG_SYS_NS16550
 #define CONFIG_BAUDRATE                        115200
 #define CONFIG_SYS_BAUDRATE_TABLE      {300, 600, 1200, 2400, 4800, \
                                         9600, 19200, 38400, 115200}
 #define CONFIG_SYS_NS16550_PORT_MAPPED
 
-#define CONFIG_STD_DEVICES_SETTINGS     "stdin=usbkbd,vga,serial\0" \
-                                       "stdout=vga,serial,cbmem\0" \
-                                       "stderr=vga,serial,cbmem\0"
-
 #define CONFIG_CONSOLE_MUX
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV
 #define CONFIG_SYS_STDIO_DEREGISTER
-#define CONFIG_CBMEM_CONSOLE
 
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_COMMAND_HISTORY
 #define CONFIG_CMD_EXT4_WRITE
 #define CONFIG_PARTITION_UUIDS
 
-/*-----------------------------------------------------------------------
- * Video Configuration
- */
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_COREBOOT
-#define CONFIG_VIDEO_SW_CURSOR
-#define VIDEO_FB_16BPP_WORD_SWAP
-#define CONFIG_I8042_KBD
-#define CONFIG_CFB_CONSOLE
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
 
 /* x86 GPIOs are accessed through a PCI device */
  */
 #include <config_cmd_default.h>
 
-#define CONFIG_TRACE
-#define CONFIG_CMD_TRACE
-#define CONFIG_TRACE_BUFFER_SIZE       (16 << 20)
-#define CONFIG_TRACE_EARLY_SIZE                (8 << 20)
-#define CONFIG_TRACE_EARLY
-#define CONFIG_TRACE_EARLY_ADDR                0x01400000
-
 #define CONFIG_CMD_BDI
 #define CONFIG_CMD_BOOTD
 #define CONFIG_CMD_CONSOLE
 #define CONFIG_CMD_ZBOOT
 #define CONFIG_CMD_ELF
 
-#define CONFIG_BOOTDELAY       2
 #define CONFIG_BOOTARGS                \
        "root=/dev/sdb3 init=/sbin/init rootwait ro"
 #define CONFIG_BOOTCOMMAND     \
        "ext2load scsi 0:3 01000000 /boot/vmlinuz; zboot 01000000"
 
-
 #if defined(CONFIG_CMD_KGDB)
 #define CONFIG_KGDB_BAUDRATE                   115200
 #endif
 
 #define CONFIG_SYS_MEMTEST_START               0x00100000
 #define CONFIG_SYS_MEMTEST_END                 0x01000000
-#define CONFIG_SYS_LOAD_ADDR                   0x02000000
+#define CONFIG_SYS_LOAD_ADDR                   0x20000000
 
 /*-----------------------------------------------------------------------
- * SDRAM Configuration
+ * Video Configuration
  */
-#define CONFIG_NR_DRAM_BANKS                   4
-
-/* CONFIG_SYS_SDRAM_DRCTMCTL Overrides the following*/
-#undef CONFIG_SYS_SDRAM_PRECHARGE_DELAY
-#undef CONFIG_SYS_SDRAM_RAS_CAS_DELAY
-#undef CONFIG_SYS_SDRAM_CAS_LATENCY_2T
-#undef CONFIG_SYS_SDRAM_CAS_LATENCY_3T
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_SW_CURSOR
+#define VIDEO_FB_16BPP_WORD_SWAP
+#define CONFIG_I8042_KBD
+#define CONFIG_CFB_CONSOLE
 
 /*-----------------------------------------------------------------------
  * CPU Features
 #define CONFIG_SYS_PCAT_TIMER
 #define CONFIG_SYS_NUM_IRQS                    16
 
-/*-----------------------------------------------------------------------
- * Memory organization:
- * 32kB Stack
- * 16kB Cache-As-RAM @ 0x19200000
- * 256kB Monitor
- * (128kB + Environment Sector Size) malloc pool
- */
 #define CONFIG_SYS_STACK_SIZE                  (32 * 1024)
-#define CONFIG_SYS_CAR_ADDR                    0x19200000
-#define CONFIG_SYS_CAR_SIZE                    (16 * 1024)
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN                 (256 * 1024)
-#define CONFIG_SYS_MALLOC_LEN                  (0x20000 + 128 * 1024)
-#define CONFIG_SYS_MALLOC_F_LEN                        (1 << 10)
+#define CONFIG_SYS_MALLOC_LEN                  0x200000
+#define CONFIG_SYS_MALLOC_F_LEN                        (2 << 10)
 
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
  */
 #define CONFIG_PCI
 
-#define CONFIG_CROS_EC
-#define CONFIG_CROS_EC_LPC
-#define CONFIG_CMD_CROS_EC
-#define CONFIG_ARCH_EARLY_INIT_R
-
 /*-----------------------------------------------------------------------
  * USB configuration
  */
index ca322b2e829db80d342ba93c7e8393d5293e5d88..15c91765215be267cf580b6496fcb379d1d5cae4 100644 (file)
@@ -22,6 +22,8 @@
 #define CONFIG_440GX           1               /* 440 GX */
 #define CONFIG_BOARD_EARLY_INIT_F 1            /* Call board_pre_init  */
 #define CONFIG_SYS_CLK_FREQ    33333333        /* external freq to pll */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0xFFF80000
 
index cbf4b8e0f70266a0a9d2f1aab68fea6991762695..34142302445e1a378381b902118bb65ca34b1a3e 100644 (file)
@@ -23,6 +23,8 @@
 #define CONFIG_BAT_RW          1       /* Use common BAT rw code */
 #define CONFIG_HIGH_BATS       1       /* High BATs supported and enabled */
 #define CONFIG_ALTIVEC         1
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define        CONFIG_SYS_TEXT_BASE    0xfff00000
 
index baa30395aaf5e95ff884cca5946a8012dbfc5d7e..f966a8ad5e9032e1f8e1bf4764f168948be6a400 100644 (file)
@@ -21,6 +21,8 @@
 #define CONFIG_SYS_BOARD_NAME  "XPedite5200"
 #define CONFIG_SYS_FORM_PMC_XMC        1
 #define CONFIG_BOARD_EARLY_INIT_R      /* Call board_pre_init */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xfff80000
index bdf55763d50c3655fdb34a723d7b8938a506669c..d6b614350064aeabfb7f730a4d3ad113419c5d16 100644 (file)
@@ -21,6 +21,8 @@
 #define CONFIG_SYS_BOARD_NAME  "XPedite5370"
 #define CONFIG_SYS_FORM_3U_VPX 1
 #define CONFIG_BOARD_EARLY_INIT_R      /* Call board_pre_init */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xfff80000
index 0b24f3e8d7938df4b249c3e66ef11b7abc69fe79..4536b94e916f8001e94e42e45be03a6ad9d7ad54 100644 (file)
@@ -22,6 +22,8 @@
 #define CONFIG_SYS_FORM_PMC_XMC        1
 #define CONFIG_PRPMC_PCI_ALIAS "pci0"  /* Processor PMC interface on pci0 */
 #define CONFIG_BOARD_EARLY_INIT_R      /* Call board_pre_init */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xfff80000
index 8ffe6f1e0878c3fd0efe752413e4bcc687e4102e..356ac886f26051d4be4f59ed43b9d9ff045769a3 100644 (file)
@@ -12,7 +12,6 @@
 
 #include <asm/arch/imx-regs.h>
 
-#define CONFIG_ARM926EJS                       /* arm926ejs CPU core */
 #define CONFIG_MX25
 #define CONFIG_SYS_TEXT_BASE           0xA0000000
 
index 2bc1562cecdb130b1fed40f99e5618bffcc9326a..87b4fffeb9fb262143edaae2599220c04255a959 100644 (file)
@@ -10,9 +10,6 @@
 #ifndef __CONFIG_ZYNQ_COMMON_H
 #define __CONFIG_ZYNQ_COMMON_H
 
-/* High Level configuration Options */
-#define CONFIG_ARMV7
-
 /* CPU clock */
 #ifndef CONFIG_CPU_FREQ_HZ
 # define CONFIG_CPU_FREQ_HZ    800000000
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS      0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION    1
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
 #define CONFIG_SPL_LIBDISK_SUPPORT
 #define CONFIG_SPL_FAT_SUPPORT
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME     "u-boot-dtb.img"
diff --git a/include/configs/zynq_zybo.h b/include/configs/zynq_zybo.h
new file mode 100644 (file)
index 0000000..191f2a5
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * (C) Copyright 2012 Xilinx
+ * (C) Copyright 2014 Digilent Inc.
+ *
+ * Configuration for Zynq Development Board - ZYBO
+ * See zynq-common.h for Zynq common configs
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_ZYNQ_ZYBO_H
+#define __CONFIG_ZYNQ_ZYBO_H
+
+#define CONFIG_SYS_SDRAM_SIZE (512 * 1024 * 1024)
+
+#define CONFIG_ZYNQ_SERIAL_UART1
+#define CONFIG_ZYNQ_GEM0
+#define CONFIG_ZYNQ_GEM_PHY_ADDR0      0
+
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_ZYNQ_SDHCI0
+#define CONFIG_ZYNQ_BOOT_FREEBSD
+
+/* Define ZYBO PS Clock Frequency to 50MHz */
+#define CONFIG_ZYNQ_PS_CLK_FREQ        50000000UL
+
+#include <configs/zynq-common.h>
+
+#endif /* __CONFIG_ZYNQ_ZYBO_H */
diff --git a/include/cortina.h b/include/cortina.h
new file mode 100644 (file)
index 0000000..6cadd28
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Cortina PHY drivers
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ *
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ */
+
+#ifndef _CORTINA_H_
+#define _CORTINA_H_
+
+#define VILLA_GLOBAL_CHIP_ID_LSB     0x000
+#define VILLA_GLOBAL_CHIP_ID_MSB     0x001
+#define VILLA_GLOBAL_BIST_CONTROL    0x002
+#define VILLA_GLOBAL_BIST_STATUS     0x003
+#define VILLA_GLOBAL_LINE_SOFT_RESET 0x007
+#define VILLA_GLOBAL_HOST_SOFT_RESET 0x008
+#define VILLA_GLOBAL_DWNLD_CHECKSUM_CTRL 0x00A
+#define VILLA_GLOBAL_DWNLD_CHECKSUM_STATUS 0x00B
+#define VILLA_GLOBAL_MSEQCLKCTRL 0x00E
+#define VILLA_MSEQ_OPTIONS       0x1D0
+#define VILLA_MSEQ_PC           0x1D3
+#define VILLA_MSEQ_BANKSELECT    0x1DF
+#define VILLA_DSP_SDS_DSP_COEF_DFE0_SELECT     0x2DB
+#define VILLA_DSP_SDS_SERDES_SRX_DFE0_SELECT   0x36E
+#define VILLA_LINE_SDS_COMMON_SRX0_RX_LOOP_FILTER   0x403
+#define VILLA_LINE_SDS_COMMON_SRX0_RX_CPA      0x404
+#define VILLA_LINE_SDS_COMMON_SRX0_RX_CPB      0x405
+#define VILLA_DSP_SDS_SERDES_SRX_FFE_DELAY_CTRL        0x369
+#define VILLA_MSEQ_ENABLE_MSB  0x194
+#define VILLA_MSEQ_SPARE21_LSB 0x226
+#define VILLA_MSEQ_RESET_COUNT_LSB  0x1E0
+#define VILLA_MSEQ_SPARE12_MSB  0x215
+#define VILLA_MSEQ_SPARE2_LSB   0x200
+#define VILLA_MSEQ_SPARE7_LSB   0x20A
+#define VILLA_MSEQ_SPARE9_LSB   0x20E
+#define VILLA_MSEQ_SPARE3_LSB   0x202
+#define VILLA_MSEQ_SPARE3_MSB   0x203
+#define VILLA_MSEQ_SPARE8_LSB   0x20C
+#define VILLA_MSEQ_SPARE8_MSB   0x20D
+#define VILLA_MSEQ_COEF8_FFE0_LSB 0x1E2
+#define VILLA_MSEQ_COEF8_FFE1_LSB 0x1E4
+#define VILLA_MSEQ_COEF8_FFE2_LSB 0x1E6
+#define VILLA_MSEQ_COEF8_FFE3_LSB 0x1E8
+#define VILLA_MSEQ_COEF8_FFE4_LSB 0x1EA
+#define VILLA_MSEQ_COEF8_FFE5_LSB 0x1EC
+#define VILLA_MSEQ_COEF8_DFE0_LSB 0x1F0
+#define VILLA_MSEQ_COEF8_DFE0N_LSB 0x1EE
+#define VILLA_MSEQ_COEF8_DFE1_LSB  0x1F2
+#define VILLA_DSP_SDS_DSP_COEF_LARGE_LEAK 0x2E2
+#define VILLA_DSP_SDS_SERDES_SRX_DAC_ENABLEB_LSB 0x360
+#define VILLA_MSEQ_POWER_DOWN_LSB  0x198
+#define VILLA_MSEQ_POWER_DOWN_MSB  0x199
+#define VILLA_MSEQ_CAL_RX_SLICER   0x1B8
+#define VILLA_DSP_SDS_SERDES_SRX_DAC_BIAS_SELECT1_MSB 0x365
+#define VILLA_MSEQ_COEF_INIT_SEL  0x1AE
+#define VILLA_DSP_SDS_DSP_PRECODEDINITFFE21 0x26A
+#define VILLA_MSEQ_SERDES_PARAM_LSB 0x195
+#define VILLA_MSEQ_SPARE25_LSB 0x22E
+#define VILLA_MSEQ_SPARE23_LSB 0x22A
+#define VILLA_MSEQ_CAL_RX_DFE_EQ 0x1BA
+#define VILLA_GLOBAL_VILLA2_COMPATIBLE      0x030
+#define VILLA_HOST_SDS_COMMON_STX0_TX_OUTPUT_CTRLA  0x812
+#define VILLA_HOST_SDS_COMMON_STX0_TX_OUTPUT_CTRLB  0x813
+#define VILLA_LINE_SDS_COMMON_STX0_TX_OUTPUT_CTRLA 0x427
+#define VILLA_LINE_SDS_COMMON_STX0_TX_OUTPUT_CTRLB 0x428
+
+#define mseq_edc_bist_done (0x1<<0)
+#define mseq_edc_bist_fail (0x1<<8)
+
+struct cortina_reg_config {
+       unsigned short reg_addr;
+       unsigned short reg_value;
+};
+#endif
index f1a71c790230e62f2614bc3de43614b5d9ba7243..c27856cb729a3bb4832831b477a03d61c0875bcf 100644 (file)
@@ -150,9 +150,6 @@ struct dfu_entity *dfu_get_entity(int alt);
 char *dfu_extract_token(char** e, int *n);
 void dfu_trigger_reset(void);
 int dfu_get_alt(char *name);
-bool dfu_detach(void);
-void dfu_trigger_detach(void);
-void dfu_clear_detach(void);
 int dfu_init_env_entities(char *interface, char *devstr);
 unsigned char *dfu_get_buf(struct dfu_entity *dfu);
 unsigned char *dfu_free_buf(void);
index 44cb7ef93bfdeea682ea0602d33bf9615260ad9d..f0cc7947505176907677840bd47554b8a22973c6 100644 (file)
@@ -87,7 +87,11 @@ int device_probe_child(struct udevice *dev, void *parent_priv);
  * @dev: Pointer to device to remove
  * @return 0 if OK, -ve on error (an error here is normally a very bad thing)
  */
+#ifdef CONFIG_DM_DEVICE_REMOVE
 int device_remove(struct udevice *dev);
+#else
+static inline int device_remove(struct udevice *dev) { return 0; }
+#endif
 
 /**
  * device_unbind() - Unbind a device, destroying it
@@ -99,6 +103,12 @@ int device_remove(struct udevice *dev);
  */
 int device_unbind(struct udevice *dev);
 
+#ifdef CONFIG_DM_DEVICE_REMOVE
+void device_free(struct udevice *dev);
+#else
+static inline void device_free(struct udevice *dev) {}
+#endif
+
 /* Cast away any volatile pointer */
 #define DM_ROOT_NON_CONST              (((gd_t *)gd)->dm_root)
 #define DM_UCLASS_ROOT_NON_CONST       (((gd_t *)gd)->uclass_root)
index 9ce95a834e75ee54d6d7edefb21ee0f848f97e0f..13598a15b68684ee81b023c30d8ec42e21941c2b 100644 (file)
@@ -47,6 +47,7 @@ struct driver_info;
  * @name: Name of device, typically the FDT node name
  * @platdata: Configuration data for this device
  * @of_offset: Device tree node offset for this device (- for none)
+ * @of_id: Pointer to the udevice_id structure which created the device
  * @parent: Parent of this device, or NULL for the top level device
  * @priv: Private data for this device
  * @uclass: Pointer to uclass for this device
@@ -65,6 +66,7 @@ struct udevice {
        const char *name;
        void *platdata;
        int of_offset;
+       const struct udevice_id *of_id;
        struct udevice *parent;
        void *priv;
        struct uclass *uclass;
@@ -205,6 +207,23 @@ void *dev_get_parentdata(struct udevice *dev);
  */
 void *dev_get_priv(struct udevice *dev);
 
+/**
+ * struct dev_get_parent() - Get the parent of a device
+ *
+ * @child:     Child to check
+ * @return parent of child, or NULL if this is the root device
+ */
+struct udevice *dev_get_parent(struct udevice *child);
+
+/**
+ * dev_get_of_data() - get the device tree data used to bind a device
+ *
+ * When a device is bound using a device tree node, it matches a
+ * particular compatible string as in struct udevice_id. This function
+ * returns the associated data value for that compatible string
+ */
+ulong dev_get_of_data(struct udevice *dev);
+
 /**
  * device_get_child() - Get the child of a device by index
  *
index 704e33e37fb9dadc739f71312e15f79c4f9bb651..1b50af9f23c19af91d8cc61bca853f05ec709982 100644 (file)
@@ -60,4 +60,17 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only);
 int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
                   struct udevice **devp);
 
+/**
+ * device_bind_driver() - bind a device to a driver
+ *
+ * This binds a new device to a driver.
+ *
+ * @parent:    Parent device
+ * @drv_name:  Name of driver to attach to this parent
+ * @dev_name:  Name of the new device thus created
+ * @devp:      Returns the newly bound device
+ */
+int device_bind_driver(struct udevice *parent, const char *drv_name,
+                      const char *dev_name, struct udevice **devp);
+
 #endif
index a8944c97d03a9cfc9162a8c6289b21515862386b..f17c3c2b384dfc8aa782583fa0734cb31a77d222 100644 (file)
@@ -19,6 +19,7 @@ enum uclass_id {
        UCLASS_TEST_FDT,
        UCLASS_TEST_BUS,
        UCLASS_SPI_EMUL,        /* sandbox SPI device emulator */
+       UCLASS_I2C_EMUL,        /* sandbox I2C device emulator */
        UCLASS_SIMPLE_BUS,
 
        /* U-Boot uclasses start here */
@@ -28,6 +29,10 @@ enum uclass_id {
        UCLASS_SPI_GENERIC,     /* Generic SPI flash target */
        UCLASS_SPI_FLASH,       /* SPI flash */
        UCLASS_CROS_EC, /* Chrome OS EC */
+       UCLASS_THERMAL,         /* Thermal sensor */
+       UCLASS_I2C,             /* I2C bus */
+       UCLASS_I2C_GENERIC,     /* Generic I2C device */
+       UCLASS_I2C_EEPROM,      /* I2C EEPROM device */
 
        UCLASS_COUNT,
        UCLASS_INVALID = -1,
index fa9eac0226537a542cc0a711473b9e7f1c5b8c5c..ec6146545b2e371a8b97f2da5615ff7aa8e22ba6 100644 (file)
@@ -89,6 +89,18 @@ void ut_failf(struct dm_test_state *dms, const char *fname, int line,
        }                                                               \
 }
 
+/* Assert that a pointer is not NULL */
+#define ut_assertnonnull(expr) {                                       \
+       const void *val = (expr);                                       \
+                                                                       \
+       if (val == NULL) {                                              \
+               ut_failf(dms, __FILE__, __LINE__, __func__,             \
+                        #expr " = NULL",                               \
+                        "Expected non-null, got NULL");                \
+               return -1;                                              \
+       }                                                               \
+}
+
 /* Assert that an operation succeeds (returns 0) */
 #define ut_assertok(cond)      ut_asserteq(0, cond)
 
index 6ac3a38ef008b686221a5e213e67f5e503233846..0cec17b52a413e8631bd0cc54c08d226e049515b 100644 (file)
@@ -7,7 +7,13 @@
 #ifndef __DM_UTIL_H
 #define __DM_UTIL_H
 
+#ifdef CONFIG_DM_WARN
 void dm_warn(const char *fmt, ...);
+#else
+static inline void dm_warn(const char *fmt, ...)
+{
+}
+#endif
 
 #ifdef DEBUG
 void dm_dbg(const char *fmt, ...);
index 9406207cfac8715b2545a8e77ae8bc7866e838fb..a1ae9a8fdd6c5bbb5bd0472d65791b650b660a6c 100644 (file)
@@ -92,7 +92,7 @@
 #define TEGRA20_CLK_OWR 71
 #define TEGRA20_CLK_AFI 72
 #define TEGRA20_CLK_CSITE 73
-/* 74 */
+#define TEGRA20_CLK_PCIE_XCLK 74
 #define TEGRA20_CLK_AVPUCQ 75
 #define TEGRA20_CLK_LA 76
 /* 77 */
index 889e49ba0aa3de3f3b83ad27b1d0f4b12521a05a..22445820a92925ec1776cf83f8fe3ab9f5a23fa9 100644 (file)
@@ -92,7 +92,7 @@
 #define TEGRA30_CLK_OWR 71
 #define TEGRA30_CLK_AFI 72
 #define TEGRA30_CLK_CSITE 73
-/* 74 */
+#define TEGRA30_CLK_PCIEX 74
 #define TEGRA30_CLK_AVPUCQ 75
 #define TEGRA30_CLK_LA 76
 /* 77 */
diff --git a/include/dt-bindings/input/input.h b/include/dt-bindings/input/input.h
new file mode 100644 (file)
index 0000000..042e7b3
--- /dev/null
@@ -0,0 +1,525 @@
+/*
+ * This header provides constants for most input bindings.
+ *
+ * Most input bindings include key code, matrix key code format.
+ * In most cases, key code and matrix key code format uses
+ * the standard values/macro defined in this header.
+ */
+
+#ifndef _DT_BINDINGS_INPUT_INPUT_H
+#define _DT_BINDINGS_INPUT_INPUT_H
+
+#define KEY_RESERVED           0
+#define KEY_ESC                        1
+#define KEY_1                  2
+#define KEY_2                  3
+#define KEY_3                  4
+#define KEY_4                  5
+#define KEY_5                  6
+#define KEY_6                  7
+#define KEY_7                  8
+#define KEY_8                  9
+#define KEY_9                  10
+#define KEY_0                  11
+#define KEY_MINUS              12
+#define KEY_EQUAL              13
+#define KEY_BACKSPACE          14
+#define KEY_TAB                        15
+#define KEY_Q                  16
+#define KEY_W                  17
+#define KEY_E                  18
+#define KEY_R                  19
+#define KEY_T                  20
+#define KEY_Y                  21
+#define KEY_U                  22
+#define KEY_I                  23
+#define KEY_O                  24
+#define KEY_P                  25
+#define KEY_LEFTBRACE          26
+#define KEY_RIGHTBRACE         27
+#define KEY_ENTER              28
+#define KEY_LEFTCTRL           29
+#define KEY_A                  30
+#define KEY_S                  31
+#define KEY_D                  32
+#define KEY_F                  33
+#define KEY_G                  34
+#define KEY_H                  35
+#define KEY_J                  36
+#define KEY_K                  37
+#define KEY_L                  38
+#define KEY_SEMICOLON          39
+#define KEY_APOSTROPHE         40
+#define KEY_GRAVE              41
+#define KEY_LEFTSHIFT          42
+#define KEY_BACKSLASH          43
+#define KEY_Z                  44
+#define KEY_X                  45
+#define KEY_C                  46
+#define KEY_V                  47
+#define KEY_B                  48
+#define KEY_N                  49
+#define KEY_M                  50
+#define KEY_COMMA              51
+#define KEY_DOT                        52
+#define KEY_SLASH              53
+#define KEY_RIGHTSHIFT         54
+#define KEY_KPASTERISK         55
+#define KEY_LEFTALT            56
+#define KEY_SPACE              57
+#define KEY_CAPSLOCK           58
+#define KEY_F1                 59
+#define KEY_F2                 60
+#define KEY_F3                 61
+#define KEY_F4                 62
+#define KEY_F5                 63
+#define KEY_F6                 64
+#define KEY_F7                 65
+#define KEY_F8                 66
+#define KEY_F9                 67
+#define KEY_F10                        68
+#define KEY_NUMLOCK            69
+#define KEY_SCROLLLOCK         70
+#define KEY_KP7                        71
+#define KEY_KP8                        72
+#define KEY_KP9                        73
+#define KEY_KPMINUS            74
+#define KEY_KP4                        75
+#define KEY_KP5                        76
+#define KEY_KP6                        77
+#define KEY_KPPLUS             78
+#define KEY_KP1                        79
+#define KEY_KP2                        80
+#define KEY_KP3                        81
+#define KEY_KP0                        82
+#define KEY_KPDOT              83
+
+#define KEY_ZENKAKUHANKAKU     85
+#define KEY_102ND              86
+#define KEY_F11                        87
+#define KEY_F12                        88
+#define KEY_RO                 89
+#define KEY_KATAKANA           90
+#define KEY_HIRAGANA           91
+#define KEY_HENKAN             92
+#define KEY_KATAKANAHIRAGANA   93
+#define KEY_MUHENKAN           94
+#define KEY_KPJPCOMMA          95
+#define KEY_KPENTER            96
+#define KEY_RIGHTCTRL          97
+#define KEY_KPSLASH            98
+#define KEY_SYSRQ              99
+#define KEY_RIGHTALT           100
+#define KEY_LINEFEED           101
+#define KEY_HOME               102
+#define KEY_UP                 103
+#define KEY_PAGEUP             104
+#define KEY_LEFT               105
+#define KEY_RIGHT              106
+#define KEY_END                        107
+#define KEY_DOWN               108
+#define KEY_PAGEDOWN           109
+#define KEY_INSERT             110
+#define KEY_DELETE             111
+#define KEY_MACRO              112
+#define KEY_MUTE               113
+#define KEY_VOLUMEDOWN         114
+#define KEY_VOLUMEUP           115
+#define KEY_POWER              116     /* SC System Power Down */
+#define KEY_KPEQUAL            117
+#define KEY_KPPLUSMINUS                118
+#define KEY_PAUSE              119
+#define KEY_SCALE              120     /* AL Compiz Scale (Expose) */
+
+#define KEY_KPCOMMA            121
+#define KEY_HANGEUL            122
+#define KEY_HANGUEL            KEY_HANGEUL
+#define KEY_HANJA              123
+#define KEY_YEN                        124
+#define KEY_LEFTMETA           125
+#define KEY_RIGHTMETA          126
+#define KEY_COMPOSE            127
+
+#define KEY_STOP               128     /* AC Stop */
+#define KEY_AGAIN              129
+#define KEY_PROPS              130     /* AC Properties */
+#define KEY_UNDO               131     /* AC Undo */
+#define KEY_FRONT              132
+#define KEY_COPY               133     /* AC Copy */
+#define KEY_OPEN               134     /* AC Open */
+#define KEY_PASTE              135     /* AC Paste */
+#define KEY_FIND               136     /* AC Search */
+#define KEY_CUT                        137     /* AC Cut */
+#define KEY_HELP               138     /* AL Integrated Help Center */
+#define KEY_MENU               139     /* Menu (show menu) */
+#define KEY_CALC               140     /* AL Calculator */
+#define KEY_SETUP              141
+#define KEY_SLEEP              142     /* SC System Sleep */
+#define KEY_WAKEUP             143     /* System Wake Up */
+#define KEY_FILE               144     /* AL Local Machine Browser */
+#define KEY_SENDFILE           145
+#define KEY_DELETEFILE         146
+#define KEY_XFER               147
+#define KEY_PROG1              148
+#define KEY_PROG2              149
+#define KEY_WWW                        150     /* AL Internet Browser */
+#define KEY_MSDOS              151
+#define KEY_COFFEE             152     /* AL Terminal Lock/Screensaver */
+#define KEY_SCREENLOCK         KEY_COFFEE
+#define KEY_DIRECTION          153
+#define KEY_CYCLEWINDOWS       154
+#define KEY_MAIL               155
+#define KEY_BOOKMARKS          156     /* AC Bookmarks */
+#define KEY_COMPUTER           157
+#define KEY_BACK               158     /* AC Back */
+#define KEY_FORWARD            159     /* AC Forward */
+#define KEY_CLOSECD            160
+#define KEY_EJECTCD            161
+#define KEY_EJECTCLOSECD       162
+#define KEY_NEXTSONG           163
+#define KEY_PLAYPAUSE          164
+#define KEY_PREVIOUSSONG       165
+#define KEY_STOPCD             166
+#define KEY_RECORD             167
+#define KEY_REWIND             168
+#define KEY_PHONE              169     /* Media Select Telephone */
+#define KEY_ISO                        170
+#define KEY_CONFIG             171     /* AL Consumer Control Configuration */
+#define KEY_HOMEPAGE           172     /* AC Home */
+#define KEY_REFRESH            173     /* AC Refresh */
+#define KEY_EXIT               174     /* AC Exit */
+#define KEY_MOVE               175
+#define KEY_EDIT               176
+#define KEY_SCROLLUP           177
+#define KEY_SCROLLDOWN         178
+#define KEY_KPLEFTPAREN                179
+#define KEY_KPRIGHTPAREN       180
+#define KEY_NEW                        181     /* AC New */
+#define KEY_REDO               182     /* AC Redo/Repeat */
+
+#define KEY_F13                        183
+#define KEY_F14                        184
+#define KEY_F15                        185
+#define KEY_F16                        186
+#define KEY_F17                        187
+#define KEY_F18                        188
+#define KEY_F19                        189
+#define KEY_F20                        190
+#define KEY_F21                        191
+#define KEY_F22                        192
+#define KEY_F23                        193
+#define KEY_F24                        194
+
+#define KEY_PLAYCD             200
+#define KEY_PAUSECD            201
+#define KEY_PROG3              202
+#define KEY_PROG4              203
+#define KEY_DASHBOARD          204     /* AL Dashboard */
+#define KEY_SUSPEND            205
+#define KEY_CLOSE              206     /* AC Close */
+#define KEY_PLAY               207
+#define KEY_FASTFORWARD                208
+#define KEY_BASSBOOST          209
+#define KEY_PRINT              210     /* AC Print */
+#define KEY_HP                 211
+#define KEY_CAMERA             212
+#define KEY_SOUND              213
+#define KEY_QUESTION           214
+#define KEY_EMAIL              215
+#define KEY_CHAT               216
+#define KEY_SEARCH             217
+#define KEY_CONNECT            218
+#define KEY_FINANCE            219     /* AL Checkbook/Finance */
+#define KEY_SPORT              220
+#define KEY_SHOP               221
+#define KEY_ALTERASE           222
+#define KEY_CANCEL             223     /* AC Cancel */
+#define KEY_BRIGHTNESSDOWN     224
+#define KEY_BRIGHTNESSUP       225
+#define KEY_MEDIA              226
+
+#define KEY_SWITCHVIDEOMODE    227     /* Cycle between available video
+                                          outputs (Monitor/LCD/TV-out/etc) */
+#define KEY_KBDILLUMTOGGLE     228
+#define KEY_KBDILLUMDOWN       229
+#define KEY_KBDILLUMUP         230
+
+#define KEY_SEND               231     /* AC Send */
+#define KEY_REPLY              232     /* AC Reply */
+#define KEY_FORWARDMAIL                233     /* AC Forward Msg */
+#define KEY_SAVE               234     /* AC Save */
+#define KEY_DOCUMENTS          235
+
+#define KEY_BATTERY            236
+
+#define KEY_BLUETOOTH          237
+#define KEY_WLAN               238
+#define KEY_UWB                        239
+
+#define KEY_UNKNOWN            240
+
+#define KEY_VIDEO_NEXT         241     /* drive next video source */
+#define KEY_VIDEO_PREV         242     /* drive previous video source */
+#define KEY_BRIGHTNESS_CYCLE   243     /* brightness up, after max is min */
+#define KEY_BRIGHTNESS_ZERO    244     /* brightness off, use ambient */
+#define KEY_DISPLAY_OFF                245     /* display device to off state */
+
+#define KEY_WIMAX              246
+#define KEY_RFKILL             247     /* Key that controls all radios */
+
+#define KEY_MICMUTE            248     /* Mute / unmute the microphone */
+
+/* Code 255 is reserved for special needs of AT keyboard driver */
+
+#define BTN_MISC               0x100
+#define BTN_0                  0x100
+#define BTN_1                  0x101
+#define BTN_2                  0x102
+#define BTN_3                  0x103
+#define BTN_4                  0x104
+#define BTN_5                  0x105
+#define BTN_6                  0x106
+#define BTN_7                  0x107
+#define BTN_8                  0x108
+#define BTN_9                  0x109
+
+#define BTN_MOUSE              0x110
+#define BTN_LEFT               0x110
+#define BTN_RIGHT              0x111
+#define BTN_MIDDLE             0x112
+#define BTN_SIDE               0x113
+#define BTN_EXTRA              0x114
+#define BTN_FORWARD            0x115
+#define BTN_BACK               0x116
+#define BTN_TASK               0x117
+
+#define BTN_JOYSTICK           0x120
+#define BTN_TRIGGER            0x120
+#define BTN_THUMB              0x121
+#define BTN_THUMB2             0x122
+#define BTN_TOP                        0x123
+#define BTN_TOP2               0x124
+#define BTN_PINKIE             0x125
+#define BTN_BASE               0x126
+#define BTN_BASE2              0x127
+#define BTN_BASE3              0x128
+#define BTN_BASE4              0x129
+#define BTN_BASE5              0x12a
+#define BTN_BASE6              0x12b
+#define BTN_DEAD               0x12f
+
+#define BTN_GAMEPAD            0x130
+#define BTN_SOUTH              0x130
+#define BTN_A                  BTN_SOUTH
+#define BTN_EAST               0x131
+#define BTN_B                  BTN_EAST
+#define BTN_C                  0x132
+#define BTN_NORTH              0x133
+#define BTN_X                  BTN_NORTH
+#define BTN_WEST               0x134
+#define BTN_Y                  BTN_WEST
+#define BTN_Z                  0x135
+#define BTN_TL                 0x136
+#define BTN_TR                 0x137
+#define BTN_TL2                        0x138
+#define BTN_TR2                        0x139
+#define BTN_SELECT             0x13a
+#define BTN_START              0x13b
+#define BTN_MODE               0x13c
+#define BTN_THUMBL             0x13d
+#define BTN_THUMBR             0x13e
+
+#define BTN_DIGI               0x140
+#define BTN_TOOL_PEN           0x140
+#define BTN_TOOL_RUBBER                0x141
+#define BTN_TOOL_BRUSH         0x142
+#define BTN_TOOL_PENCIL                0x143
+#define BTN_TOOL_AIRBRUSH      0x144
+#define BTN_TOOL_FINGER                0x145
+#define BTN_TOOL_MOUSE         0x146
+#define BTN_TOOL_LENS          0x147
+#define BTN_TOOL_QUINTTAP      0x148   /* Five fingers on trackpad */
+#define BTN_TOUCH              0x14a
+#define BTN_STYLUS             0x14b
+#define BTN_STYLUS2            0x14c
+#define BTN_TOOL_DOUBLETAP     0x14d
+#define BTN_TOOL_TRIPLETAP     0x14e
+#define BTN_TOOL_QUADTAP       0x14f   /* Four fingers on trackpad */
+
+#define BTN_WHEEL              0x150
+#define BTN_GEAR_DOWN          0x150
+#define BTN_GEAR_UP            0x151
+
+#define KEY_OK                 0x160
+#define KEY_SELECT             0x161
+#define KEY_GOTO               0x162
+#define KEY_CLEAR              0x163
+#define KEY_POWER2             0x164
+#define KEY_OPTION             0x165
+#define KEY_INFO               0x166   /* AL OEM Features/Tips/Tutorial */
+#define KEY_TIME               0x167
+#define KEY_VENDOR             0x168
+#define KEY_ARCHIVE            0x169
+#define KEY_PROGRAM            0x16a   /* Media Select Program Guide */
+#define KEY_CHANNEL            0x16b
+#define KEY_FAVORITES          0x16c
+#define KEY_EPG                        0x16d
+#define KEY_PVR                        0x16e   /* Media Select Home */
+#define KEY_MHP                        0x16f
+#define KEY_LANGUAGE           0x170
+#define KEY_TITLE              0x171
+#define KEY_SUBTITLE           0x172
+#define KEY_ANGLE              0x173
+#define KEY_ZOOM               0x174
+#define KEY_MODE               0x175
+#define KEY_KEYBOARD           0x176
+#define KEY_SCREEN             0x177
+#define KEY_PC                 0x178   /* Media Select Computer */
+#define KEY_TV                 0x179   /* Media Select TV */
+#define KEY_TV2                        0x17a   /* Media Select Cable */
+#define KEY_VCR                        0x17b   /* Media Select VCR */
+#define KEY_VCR2               0x17c   /* VCR Plus */
+#define KEY_SAT                        0x17d   /* Media Select Satellite */
+#define KEY_SAT2               0x17e
+#define KEY_CD                 0x17f   /* Media Select CD */
+#define KEY_TAPE               0x180   /* Media Select Tape */
+#define KEY_RADIO              0x181
+#define KEY_TUNER              0x182   /* Media Select Tuner */
+#define KEY_PLAYER             0x183
+#define KEY_TEXT               0x184
+#define KEY_DVD                        0x185   /* Media Select DVD */
+#define KEY_AUX                        0x186
+#define KEY_MP3                        0x187
+#define KEY_AUDIO              0x188   /* AL Audio Browser */
+#define KEY_VIDEO              0x189   /* AL Movie Browser */
+#define KEY_DIRECTORY          0x18a
+#define KEY_LIST               0x18b
+#define KEY_MEMO               0x18c   /* Media Select Messages */
+#define KEY_CALENDAR           0x18d
+#define KEY_RED                        0x18e
+#define KEY_GREEN              0x18f
+#define KEY_YELLOW             0x190
+#define KEY_BLUE               0x191
+#define KEY_CHANNELUP          0x192   /* Channel Increment */
+#define KEY_CHANNELDOWN                0x193   /* Channel Decrement */
+#define KEY_FIRST              0x194
+#define KEY_LAST               0x195   /* Recall Last */
+#define KEY_AB                 0x196
+#define KEY_NEXT               0x197
+#define KEY_RESTART            0x198
+#define KEY_SLOW               0x199
+#define KEY_SHUFFLE            0x19a
+#define KEY_BREAK              0x19b
+#define KEY_PREVIOUS           0x19c
+#define KEY_DIGITS             0x19d
+#define KEY_TEEN               0x19e
+#define KEY_TWEN               0x19f
+#define KEY_VIDEOPHONE         0x1a0   /* Media Select Video Phone */
+#define KEY_GAMES              0x1a1   /* Media Select Games */
+#define KEY_ZOOMIN             0x1a2   /* AC Zoom In */
+#define KEY_ZOOMOUT            0x1a3   /* AC Zoom Out */
+#define KEY_ZOOMRESET          0x1a4   /* AC Zoom */
+#define KEY_WORDPROCESSOR      0x1a5   /* AL Word Processor */
+#define KEY_EDITOR             0x1a6   /* AL Text Editor */
+#define KEY_SPREADSHEET                0x1a7   /* AL Spreadsheet */
+#define KEY_GRAPHICSEDITOR     0x1a8   /* AL Graphics Editor */
+#define KEY_PRESENTATION       0x1a9   /* AL Presentation App */
+#define KEY_DATABASE           0x1aa   /* AL Database App */
+#define KEY_NEWS               0x1ab   /* AL Newsreader */
+#define KEY_VOICEMAIL          0x1ac   /* AL Voicemail */
+#define KEY_ADDRESSBOOK                0x1ad   /* AL Contacts/Address Book */
+#define KEY_MESSENGER          0x1ae   /* AL Instant Messaging */
+#define KEY_DISPLAYTOGGLE      0x1af   /* Turn display (LCD) on and off */
+#define KEY_SPELLCHECK         0x1b0   /* AL Spell Check */
+#define KEY_LOGOFF             0x1b1   /* AL Logoff */
+
+#define KEY_DOLLAR             0x1b2
+#define KEY_EURO               0x1b3
+
+#define KEY_FRAMEBACK          0x1b4   /* Consumer - transport controls */
+#define KEY_FRAMEFORWARD       0x1b5
+#define KEY_CONTEXT_MENU       0x1b6   /* GenDesc - system context menu */
+#define KEY_MEDIA_REPEAT       0x1b7   /* Consumer - transport control */
+#define KEY_10CHANNELSUP       0x1b8   /* 10 channels up (10+) */
+#define KEY_10CHANNELSDOWN     0x1b9   /* 10 channels down (10-) */
+#define KEY_IMAGES             0x1ba   /* AL Image Browser */
+
+#define KEY_DEL_EOL            0x1c0
+#define KEY_DEL_EOS            0x1c1
+#define KEY_INS_LINE           0x1c2
+#define KEY_DEL_LINE           0x1c3
+
+#define KEY_FN                 0x1d0
+#define KEY_FN_ESC             0x1d1
+#define KEY_FN_F1              0x1d2
+#define KEY_FN_F2              0x1d3
+#define KEY_FN_F3              0x1d4
+#define KEY_FN_F4              0x1d5
+#define KEY_FN_F5              0x1d6
+#define KEY_FN_F6              0x1d7
+#define KEY_FN_F7              0x1d8
+#define KEY_FN_F8              0x1d9
+#define KEY_FN_F9              0x1da
+#define KEY_FN_F10             0x1db
+#define KEY_FN_F11             0x1dc
+#define KEY_FN_F12             0x1dd
+#define KEY_FN_1               0x1de
+#define KEY_FN_2               0x1df
+#define KEY_FN_D               0x1e0
+#define KEY_FN_E               0x1e1
+#define KEY_FN_F               0x1e2
+#define KEY_FN_S               0x1e3
+#define KEY_FN_B               0x1e4
+
+#define KEY_BRL_DOT1           0x1f1
+#define KEY_BRL_DOT2           0x1f2
+#define KEY_BRL_DOT3           0x1f3
+#define KEY_BRL_DOT4           0x1f4
+#define KEY_BRL_DOT5           0x1f5
+#define KEY_BRL_DOT6           0x1f6
+#define KEY_BRL_DOT7           0x1f7
+#define KEY_BRL_DOT8           0x1f8
+#define KEY_BRL_DOT9           0x1f9
+#define KEY_BRL_DOT10          0x1fa
+
+#define KEY_NUMERIC_0          0x200   /* used by phones, remote controls, */
+#define KEY_NUMERIC_1          0x201   /* and other keypads */
+#define KEY_NUMERIC_2          0x202
+#define KEY_NUMERIC_3          0x203
+#define KEY_NUMERIC_4          0x204
+#define KEY_NUMERIC_5          0x205
+#define KEY_NUMERIC_6          0x206
+#define KEY_NUMERIC_7          0x207
+#define KEY_NUMERIC_8          0x208
+#define KEY_NUMERIC_9          0x209
+#define KEY_NUMERIC_STAR       0x20a
+#define KEY_NUMERIC_POUND      0x20b
+
+#define KEY_CAMERA_FOCUS       0x210
+#define KEY_WPS_BUTTON         0x211   /* WiFi Protected Setup key */
+
+#define KEY_TOUCHPAD_TOGGLE    0x212   /* Request switch touchpad on or off */
+#define KEY_TOUCHPAD_ON                0x213
+#define KEY_TOUCHPAD_OFF       0x214
+
+#define KEY_CAMERA_ZOOMIN      0x215
+#define KEY_CAMERA_ZOOMOUT     0x216
+#define KEY_CAMERA_UP          0x217
+#define KEY_CAMERA_DOWN                0x218
+#define KEY_CAMERA_LEFT                0x219
+#define KEY_CAMERA_RIGHT       0x21a
+
+#define KEY_ATTENDANT_ON       0x21b
+#define KEY_ATTENDANT_OFF      0x21c
+#define KEY_ATTENDANT_TOGGLE   0x21d   /* Attendant call on or off */
+#define KEY_LIGHTS_TOGGLE      0x21e   /* Reading light on or off */
+
+#define BTN_DPAD_UP            0x220
+#define BTN_DPAD_DOWN          0x221
+#define BTN_DPAD_LEFT          0x222
+#define BTN_DPAD_RIGHT         0x223
+
+#define MATRIX_KEY(row, col, code)     \
+       ((((row) & 0xFF) << 24) | (((col) & 0xFF) << 16) | ((code) & 0xFFFF))
+
+#endif /* _DT_BINDINGS_INPUT_INPUT_H */
diff --git a/include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h b/include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h
new file mode 100644 (file)
index 0000000..914d56d
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H
+#define _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H 1
+
+#define TEGRA_XUSB_PADCTL_PCIE 0
+#define TEGRA_XUSB_PADCTL_SATA 1
+
+#endif /* _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H */
diff --git a/include/dt-bindings/pinctrl/pinctrl-tegra.h b/include/dt-bindings/pinctrl/pinctrl-tegra.h
new file mode 100644 (file)
index 0000000..ebafa49
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * This header provides constants for Tegra pinctrl bindings.
+ *
+ * Copyright (c) 2013, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * Author: Laxman Dewangan <ldewangan@nvidia.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_TEGRA_H
+#define _DT_BINDINGS_PINCTRL_TEGRA_H
+
+/*
+ * Enable/disable for diffeent dt properties. This is applicable for
+ * properties nvidia,enable-input, nvidia,tristate, nvidia,open-drain,
+ * nvidia,lock, nvidia,rcv-sel, nvidia,high-speed-mode, nvidia,schmitt.
+ */
+#define TEGRA_PIN_DISABLE                              0
+#define TEGRA_PIN_ENABLE                               1
+
+#define TEGRA_PIN_PULL_NONE                            0
+#define TEGRA_PIN_PULL_DOWN                            1
+#define TEGRA_PIN_PULL_UP                              2
+
+/* Low power mode driver */
+#define TEGRA_PIN_LP_DRIVE_DIV_8                       0
+#define TEGRA_PIN_LP_DRIVE_DIV_4                       1
+#define TEGRA_PIN_LP_DRIVE_DIV_2                       2
+#define TEGRA_PIN_LP_DRIVE_DIV_1                       3
+
+/* Rising/Falling slew rate */
+#define TEGRA_PIN_SLEW_RATE_FASTEST                    0
+#define TEGRA_PIN_SLEW_RATE_FAST                       1
+#define TEGRA_PIN_SLEW_RATE_SLOW                       2
+#define TEGRA_PIN_SLEW_RATE_SLOWEST                    3
+
+#endif
diff --git a/include/dt-bindings/reset/altr,rst-mgr.h b/include/dt-bindings/reset/altr,rst-mgr.h
new file mode 100644 (file)
index 0000000..351d8cd
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2014, Steffen Trumtrar <s.trumtrar@pengutronix.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _DT_BINDINGS_RESET_ALTR_RST_MGR_H
+#define _DT_BINDINGS_RESET_ALTR_RST_MGR_H
+
+/* MPUMODRST */
+#define CPU0_RESET             0
+#define CPU1_RESET             1
+#define WDS_RESET              2
+#define SCUPER_RESET           3
+#define L2_RESET               4
+
+/* PERMODRST */
+#define EMAC0_RESET            32
+#define EMAC1_RESET            33
+#define USB0_RESET             34
+#define USB1_RESET             35
+#define NAND_RESET             36
+#define QSPI_RESET             37
+#define L4WD0_RESET            38
+#define L4WD1_RESET            39
+#define OSC1TIMER0_RESET       40
+#define OSC1TIMER1_RESET       41
+#define SPTIMER0_RESET         42
+#define SPTIMER1_RESET         43
+#define I2C0_RESET             44
+#define I2C1_RESET             45
+#define I2C2_RESET             46
+#define I2C3_RESET             47
+#define UART0_RESET            48
+#define UART1_RESET            49
+#define SPIM0_RESET            50
+#define SPIM1_RESET            51
+#define SPIS0_RESET            52
+#define SPIS1_RESET            53
+#define SDMMC_RESET            54
+#define CAN0_RESET             55
+#define CAN1_RESET             56
+#define GPIO0_RESET            57
+#define GPIO1_RESET            58
+#define GPIO2_RESET            59
+#define DMA_RESET              60
+#define SDR_RESET              61
+
+/* PER2MODRST */
+#define DMAIF0_RESET           64
+#define DMAIF1_RESET           65
+#define DMAIF2_RESET           66
+#define DMAIF3_RESET           67
+#define DMAIF4_RESET           68
+#define DMAIF5_RESET           69
+#define DMAIF6_RESET           70
+#define DMAIF7_RESET           71
+
+/* BRGMODRST */
+#define HPS2FPGA_RESET         96
+#define LWHPS2FPGA_RESET       97
+#define FPGA2HPS_RESET         98
+
+/* MISCMODRST*/
+#define ROM_RESET              128
+#define OCRAM_RESET            129
+#define SYSMGR_RESET           130
+#define SYSMGRCOLD_RESET       131
+#define FPGAMGR_RESET          132
+#define ACPIDMAP_RESET         133
+#define S2F_RESET              134
+#define S2FCOLD_RESET          135
+#define NRSTPIN_RESET          136
+#define TIMESTAMPCOLD_RESET    137
+#define CLKMGRCOLD_RESET       138
+#define SCANMGR_RESET          139
+#define FRZCTRLCOLD_RESET      140
+#define SYSDBG_RESET           141
+#define DBG_RESET              142
+#define TAPCOLD_RESET          143
+#define SDRCOLD_RESET          144
+
+#endif
index 480a773d0f64f49c9d7148f714fbcfc7b4bb7728..18ec1d5ab0cfb38345905b681e760daba60df112 100644 (file)
@@ -86,6 +86,10 @@ struct edid_detailed_timing {
        GET_BITS((_x).flags, 4, 3)
 #define EDID_DETAILED_TIMING_FLAG_POLARITY(_x) \
        GET_BITS((_x).flags, 2, 1)
+#define EDID_DETAILED_TIMING_FLAG_VSYNC_POLARITY(_x) \
+       GET_BIT((_x).flags, 2)
+#define EDID_DETAILED_TIMING_FLAG_HSYNC_POLARITY(_x) \
+       GET_BIT((_x).flags, 1)
 #define EDID_DETAILED_TIMING_FLAG_INTERLEAVED(_x) \
        GET_BIT((_x).flags, 0)
 } __attribute__ ((__packed__));
@@ -226,6 +230,25 @@ struct edid1_info {
        unsigned char checksum;
 } __attribute__ ((__packed__));
 
+struct edid_cea861_info {
+       unsigned char extension_tag;
+#define EDID_CEA861_EXTENSION_TAG      0x02
+       unsigned char revision;
+       unsigned char dtd_offset;
+       unsigned char dtd_count;
+#define EDID_CEA861_SUPPORTS_UNDERSCAN(_x) \
+       GET_BIT(((_x).dtd_count), 7)
+#define EDID_CEA861_SUPPORTS_BASIC_AUDIO(_x) \
+       GET_BIT(((_x).dtd_count), 6)
+#define EDID_CEA861_SUPPORTS_YUV444(_x) \
+       GET_BIT(((_x).dtd_count), 5)
+#define EDID_CEA861_SUPPORTS_YUV422(_x) \
+       GET_BIT(((_x).dtd_count), 4)
+#define EDID_CEA861_DTD_COUNT(_x) \
+       GET_BITS(((_x).dtd_count), 3, 0)
+       unsigned char data[124];
+} __attribute__ ((__packed__));
+
 /**
  * Print the EDID info.
  *
@@ -241,6 +264,15 @@ void edid_print_info(struct edid1_info *edid_info);
  */
 int edid_check_info(struct edid1_info *info);
 
+/**
+ * Check checksum of a 128 bytes EDID data block
+ *
+ * @param edid_block   EDID block data
+ *
+ * @return 0 on success, or a negative errno on error
+ */
+int edid_check_checksum(u8 *edid_block);
+
 /**
  * Get the horizontal and vertical rate ranges of the monitor.
  *
index e24a33b386fefbbcb0bf24f742cccf32b4adc006..14ac3cb10b00bab70a6916fe15adae6af0b838f3 100644 (file)
@@ -6,4 +6,7 @@ extern int errno;
 
 #define __set_errno(val) do { errno = val; } while (0)
 
+#ifdef CONFIG_ERRNO_STR
+const char *errno_str(int errno);
+#endif
 #endif /* _ERRNO_H */
index 6c419f3a233759c7e0998a1e5a25d7792a00bcfe..6888adc56f406d1c40049e240f8dc727e4e97009 100644 (file)
@@ -125,24 +125,28 @@ int ext4fs_init(void);
 void ext4fs_deinit(void);
 int ext4fs_filename_check(char *filename);
 int ext4fs_write(const char *fname, unsigned char *buffer,
-                               unsigned long sizebytes);
+                unsigned long sizebytes);
+int ext4_write_file(const char *filename, void *buf, loff_t offset, loff_t len,
+                   loff_t *actwrite);
 #endif
 
 struct ext_filesystem *get_fs(void);
-int ext4fs_open(const char *filename);
-int ext4fs_read(char *buf, unsigned len);
+int ext4fs_open(const char *filename, loff_t *len);
+int ext4fs_read(char *buf, loff_t len, loff_t *actread);
 int ext4fs_mount(unsigned part_length);
 void ext4fs_close(void);
 void ext4fs_reinit_global(void);
 int ext4fs_ls(const char *dirname);
 int ext4fs_exists(const char *filename);
-int ext4fs_size(const char *filename);
+int ext4fs_size(const char *filename, loff_t *size);
 void ext4fs_free_node(struct ext2fs_node *node, struct ext2fs_node *currroot);
 int ext4fs_devread(lbaint_t sector, int byte_offset, int byte_len, char *buf);
 void ext4fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info);
 long int read_allocated_block(struct ext2_inode *inode, int fileblock);
 int ext4fs_probe(block_dev_desc_t *fs_dev_desc,
                 disk_partition_t *fs_partition);
-int ext4_read_file(const char *filename, void *buf, int offset, int len);
+int ext4_read_file(const char *filename, void *buf, loff_t offset, loff_t len,
+                  loff_t *actread);
 int ext4_read_superblock(char *buffer);
+int ext4fs_uuid(char *uuid_str);
 #endif
index 20ca3f3dca7df4476c5e94b9925815ba08bb6378..3038bd7e4f6e7133af0c5149395438a810dc719a 100644 (file)
@@ -178,8 +178,8 @@ typedef struct {
 
 typedef int    (file_detectfs_func)(void);
 typedef int    (file_ls_func)(const char *dir);
-typedef long   (file_read_func)(const char *filename, void *buffer,
-                                unsigned long maxsize);
+typedef int    (file_read_func)(const char *filename, void *buffer,
+                                int maxsize);
 
 struct filesystem {
        file_detectfs_func      *detect;
@@ -198,15 +198,17 @@ int file_cd(const char *path);
 int file_fat_detectfs(void);
 int file_fat_ls(const char *dir);
 int fat_exists(const char *filename);
-int fat_size(const char *filename);
-long file_fat_read_at(const char *filename, unsigned long pos, void *buffer,
-                     unsigned long maxsize);
-long file_fat_read(const char *filename, void *buffer, unsigned long maxsize);
+int fat_size(const char *filename, loff_t *size);
+int file_fat_read_at(const char *filename, loff_t pos, void *buffer,
+                    loff_t maxsize, loff_t *actread);
+int file_fat_read(const char *filename, void *buffer, int maxsize);
 const char *file_getfsname(int idx);
 int fat_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info);
 int fat_register_device(block_dev_desc_t *dev_desc, int part_no);
 
-int file_fat_write(const char *filename, void *buffer, unsigned long maxsize);
-int fat_read_file(const char *filename, void *buf, int offset, int len);
+int file_fat_write(const char *filename, void *buf, loff_t offset, loff_t len,
+                  loff_t *actwrite);
+int fat_read_file(const char *filename, void *buf, loff_t offset, loff_t len,
+                 loff_t *actread);
 void fat_close(void);
 #endif /* _FAT_H_ */
index 55cef94358bcd9ed1db349493941addc901d1ff4..1f19fe4c9622a84c365f500ff80b2b72bb61baf1 100644 (file)
@@ -64,7 +64,20 @@ static inline void fdt_fixup_crypto_node(void *blob, int sec_rev) {}
 int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose);
 #endif
 
-void ft_board_setup(void *blob, bd_t *bd);
+int fdt_find_or_add_subnode(void *fdt, int parentoffset, const char *name);
+
+/**
+ * Add board-specific data to the FDT before booting the OS.
+ *
+ * Use CONFIG_SYS_FDT_PAD to ensure there is sufficient space.
+ * This function is called if CONFIG_OF_BOARD_SETUP is defined
+ *
+ * @param blob         FDT blob to update
+ * @param bd_t         Pointer to board data
+ * @return 0 if ok, or -FDT_ERR_... on error
+ */
+int ft_board_setup(void *blob, bd_t *bd);
+
 /*
  * The keystone2 SOC requires all 32 bit aliased addresses to be converted
  * to their 36 physical format. This has to happen after all fdt nodes
@@ -75,6 +88,18 @@ void ft_board_setup_ex(void *blob, bd_t *bd);
 void ft_cpu_setup(void *blob, bd_t *bd);
 void ft_pci_setup(void *blob, bd_t *bd);
 
+/**
+ * Add system-specific data to the FDT before booting the OS.
+ *
+ * Use CONFIG_SYS_FDT_PAD to ensure there is sufficient space.
+ * This function is called if CONFIG_OF_SYSTEM_SETUP is defined
+ *
+ * @param blob         FDT blob to update
+ * @param bd_t         Pointer to board data
+ * @return 0 if ok, or -FDT_ERR_... on error
+ */
+int ft_system_setup(void *blob, bd_t *bd);
+
 void set_working_fdt_addr(void *addr);
 int fdt_shrink_to_minimum(void *blob);
 int fdt_increase_size(void *fdt, int add_len);
@@ -147,6 +172,9 @@ void of_bus_default_count_cells(void *blob, int parentoffset,
 int ft_verify_fdt(void *fdt);
 int arch_fixup_memory_node(void *blob);
 
+int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
+                           u32 height, u32 stride, const char *format);
+
 #endif /* ifdef CONFIG_OF_LIBFDT */
 
 #ifdef USE_HOSTCC
index 4ae77be9ba7c8bf09860606645db711db0911fb2..75af750ee576174a1e135952cae09e6ed4f3e1ca 100644 (file)
@@ -15,6 +15,7 @@
  */
 
 #include <libfdt.h>
+#include <pci.h>
 
 /*
  * A typedef for a physical address. Note that fdt data is always big
@@ -50,6 +51,49 @@ struct fdt_resource {
        fdt_addr_t end;
 };
 
+enum fdt_pci_space {
+       FDT_PCI_SPACE_CONFIG = 0,
+       FDT_PCI_SPACE_IO = 0x01000000,
+       FDT_PCI_SPACE_MEM32 = 0x02000000,
+       FDT_PCI_SPACE_MEM64 = 0x03000000,
+       FDT_PCI_SPACE_MEM32_PREF = 0x42000000,
+       FDT_PCI_SPACE_MEM64_PREF = 0x43000000,
+};
+
+#define FDT_PCI_ADDR_CELLS     3
+#define FDT_PCI_SIZE_CELLS     2
+#define FDT_PCI_REG_SIZE       \
+       ((FDT_PCI_ADDR_CELLS + FDT_PCI_SIZE_CELLS) * sizeof(u32))
+
+/*
+ * The Open Firmware spec defines PCI physical address as follows:
+ *
+ *          bits# 31 .... 24 23 .... 16 15 .... 08 07 .... 00
+ *
+ * phys.hi  cell:  npt000ss   bbbbbbbb   dddddfff   rrrrrrrr
+ * phys.mid cell:  hhhhhhhh   hhhhhhhh   hhhhhhhh   hhhhhhhh
+ * phys.lo  cell:  llllllll   llllllll   llllllll   llllllll
+ *
+ * where:
+ *
+ * n:        is 0 if the address is relocatable, 1 otherwise
+ * p:        is 1 if addressable region is prefetchable, 0 otherwise
+ * t:        is 1 if the address is aliased (for non-relocatable I/O) below 1MB
+ *           (for Memory), or below 64KB (for relocatable I/O)
+ * ss:       is the space code, denoting the address space
+ * bbbbbbbb: is the 8-bit Bus Number
+ * ddddd:    is the 5-bit Device Number
+ * fff:      is the 3-bit Function Number
+ * rrrrrrrr: is the 8-bit Register Number
+ * hhhhhhhh: is a 32-bit unsigned number
+ * llllllll: is a 32-bit unsigned number
+ */
+struct fdt_pci_addr {
+       u32     phys_hi;
+       u32     phys_mid;
+       u32     phys_lo;
+};
+
 /**
  * Compute the size of a resource.
  *
@@ -86,6 +130,11 @@ enum fdt_compat_id {
        COMPAT_NVIDIA_TEGRA20_SFLASH,   /* Tegra 2 SPI flash controller */
        COMPAT_NVIDIA_TEGRA20_SLINK,    /* Tegra 2 SPI SLINK controller */
        COMPAT_NVIDIA_TEGRA114_SPI,     /* Tegra 114 SPI controller */
+       COMPAT_NVIDIA_TEGRA124_PCIE,    /* Tegra 124 PCIe controller */
+       COMPAT_NVIDIA_TEGRA30_PCIE,     /* Tegra 30 PCIe controller */
+       COMPAT_NVIDIA_TEGRA20_PCIE,     /* Tegra 20 PCIe controller */
+       COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL,
+                                       /* Tegra124 XUSB pad controller */
        COMPAT_SMSC_LAN9215,            /* SMSC 10/100 Ethernet LAN9215 */
        COMPAT_SAMSUNG_EXYNOS5_SROMC,   /* Exynos5 SROMC */
        COMPAT_SAMSUNG_S3C2440_I2C,     /* Exynos I2C Controller */
@@ -118,6 +167,12 @@ enum fdt_compat_id {
        COMPAT_SAMSUNG_EXYNOS_SYSMMU,   /* Exynos sysmmu */
        COMPAT_PARADE_PS8625,           /* Parade PS8622 EDP->LVDS bridge */
        COMPAT_INTEL_LPC,               /* Intel Low Pin Count I/F */
+       COMPAT_INTEL_MICROCODE,         /* Intel microcode update */
+       COMPAT_MEMORY_SPD,              /* Memory SPD information */
+       COMPAT_INTEL_PANTHERPOINT_AHCI, /* Intel Pantherpoint AHCI */
+       COMPAT_INTEL_MODEL_206AX,       /* Intel Model 206AX CPU */
+       COMPAT_INTEL_GMA,               /* Intel Graphics Media Accelerator */
+       COMPAT_AMS_AS3722,              /* AMS AS3722 PMIC */
 
        COMPAT_COUNT,
 };
@@ -246,6 +301,60 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,
 fdt_addr_t fdtdec_get_addr_size(const void *blob, int node,
                const char *prop_name, fdt_size_t *sizep);
 
+/**
+ * Look at an address property in a node and return the pci address which
+ * corresponds to the given type in the form of fdt_pci_addr.
+ * The property must hold one fdt_pci_addr with a lengh.
+ *
+ * @param blob         FDT blob
+ * @param node         node to examine
+ * @param type         pci address type (FDT_PCI_SPACE_xxx)
+ * @param prop_name    name of property to find
+ * @param addr         returns pci address in the form of fdt_pci_addr
+ * @return 0 if ok, negative on error
+ */
+int fdtdec_get_pci_addr(const void *blob, int node, enum fdt_pci_space type,
+               const char *prop_name, struct fdt_pci_addr *addr);
+
+/**
+ * Look at the compatible property of a device node that represents a PCI
+ * device and extract pci vendor id and device id from it.
+ *
+ * @param blob         FDT blob
+ * @param node         node to examine
+ * @param vendor       vendor id of the pci device
+ * @param device       device id of the pci device
+ * @return 0 if ok, negative on error
+ */
+int fdtdec_get_pci_vendev(const void *blob, int node,
+               u16 *vendor, u16 *device);
+
+/**
+ * Look at the pci address of a device node that represents a PCI device
+ * and parse the bus, device and function number from it.
+ *
+ * @param blob         FDT blob
+ * @param node         node to examine
+ * @param addr         pci address in the form of fdt_pci_addr
+ * @param bdf          returns bus, device, function triplet
+ * @return 0 if ok, negative on error
+ */
+int fdtdec_get_pci_bdf(const void *blob, int node,
+               struct fdt_pci_addr *addr, pci_dev_t *bdf);
+
+/**
+ * Look at the pci address of a device node that represents a PCI device
+ * and return base address of the pci device's registers.
+ *
+ * @param blob         FDT blob
+ * @param node         node to examine
+ * @param addr         pci address in the form of fdt_pci_addr
+ * @param bar          returns base address of the pci device's registers
+ * @return 0 if ok, negative on error
+ */
+int fdtdec_get_pci_bar32(const void *blob, int node,
+               struct fdt_pci_addr *addr, u32 *bar);
+
 /**
  * Look up a 32-bit integer property in a node and return it. The property
  * must have at least 4 bytes of data. The value of the first cell is
@@ -387,17 +496,6 @@ int fdtdec_add_aliases_for_id(const void *blob, const char *name,
 int fdtdec_get_alias_seq(const void *blob, const char *base, int node,
                         int *seqp);
 
-/**
- * Get the offset of the given alias node
- *
- * This looks up an alias in /aliases then finds the offset of that node.
- *
- * @param blob         Device tree blob (if NULL, then error is returned)
- * @param name         Alias name, e.g. "console"
- * @return Node offset referred to by that alias, or -ve FDT_ERR_...
- */
-int fdtdec_get_alias_node(const void *blob, const char *name);
-
 /**
  * Get the offset of the given chosen node
  *
@@ -444,6 +542,22 @@ int fdtdec_lookup_phandle(const void *blob, int node, const char *prop_name);
 int fdtdec_get_int_array(const void *blob, int node, const char *prop_name,
                u32 *array, int count);
 
+/**
+ * Look up a property in a node and return its contents in an integer
+ * array of given length. The property must exist but may have less data that
+ * expected (4*count bytes). It may have more, but this will be ignored.
+ *
+ * @param blob         FDT blob
+ * @param node         node to examine
+ * @param prop_name    name of property to find
+ * @param array                array to fill with data
+ * @param count                number of array elements
+ * @return number of array elements if ok, or -FDT_ERR_NOTFOUND if the
+ *             property is not found
+ */
+int fdtdec_get_int_array_count(const void *blob, int node,
+                              const char *prop_name, u32 *array, int count);
+
 /**
  * Look up a property in a node and return a pointer to its contents as a
  * unsigned int array of given length. The property must have at least enough
@@ -595,17 +709,33 @@ const u8 *fdtdec_locate_byte_array(const void *blob, int node,
  * @param blob         FDT blob
  * @param node         node to examine
  * @param prop_name    name of property to find
- * @param ptrp         returns pointer to region, or NULL if no address
- * @param size         returns size of region
- * @return 0 if ok, -1 on error (propery not found)
+ * @param basep                Returns base address of region
+ * @param size         Returns size of region
+ * @return 0 if ok, -1 on error (property not found)
  */
-int fdtdec_decode_region(const void *blob, int node,
-               const char *prop_name, void **ptrp, size_t *size);
+int fdtdec_decode_region(const void *blob, int node, const char *prop_name,
+                        fdt_addr_t *basep, fdt_size_t *sizep);
+
+enum fmap_compress_t {
+       FMAP_COMPRESS_NONE,
+       FMAP_COMPRESS_LZO,
+};
+
+enum fmap_hash_t {
+       FMAP_HASH_NONE,
+       FMAP_HASH_SHA1,
+       FMAP_HASH_SHA256,
+};
 
 /* A flash map entry, containing an offset and length */
 struct fmap_entry {
        uint32_t offset;
        uint32_t length;
+       uint32_t used;                  /* Number of bytes used in region */
+       enum fmap_compress_t compress_algo;     /* Compression type */
+       enum fmap_hash_t hash_algo;             /* Hash algorithm */
+       const uint8_t *hash;                    /* Hash value */
+       int hash_size;                          /* Hash size */
 };
 
 /**
@@ -651,14 +781,30 @@ int fdt_get_named_resource(const void *fdt, int node, const char *property,
                           struct fdt_resource *res);
 
 /**
- * Look at the reg property of a device node that represents a PCI device
- * and parse the bus, device and function number from it.
+ * Decode a named region within a memory bank of a given type.
  *
- * @param fdt          FDT blob
- * @param node         node to examine
- * @param bdf          returns bus, device, function triplet
- * @return 0 if ok, negative on error
- */
-int fdtdec_pci_get_bdf(const void *fdt, int node, int *bdf);
-
+ * This function handles selection of a memory region. The region is
+ * specified as an offset/size within a particular type of memory.
+ *
+ * The properties used are:
+ *
+ *     <mem_type>-memory<suffix> for the name of the memory bank
+ *     <mem_type>-offset<suffix> for the offset in that bank
+ *
+ * The property value must have an offset and a size. The function checks
+ * that the region is entirely within the memory bank.5
+ *
+ * @param blob         FDT blob
+ * @param node         Node containing the properties (-1 for /config)
+ * @param mem_type     Type of memory to use, which is a name, such as
+ *                     "u-boot" or "kernel".
+ * @param suffix       String to append to the memory/offset
+ *                     property names
+ * @param basep                Returns base of region
+ * @param sizep                Returns size of region
+ * @return 0 if OK, -ive on error
+ */
+int fdtdec_decode_memory_region(const void *blob, int node,
+                               const char *mem_type, const char *suffix,
+                               fdt_addr_t *basep, fdt_size_t *sizep);
 #endif
index 5454c9ea218e29d27e1a883657bfdf59ba38be22..30aa080b883eb0ec1febcb067965cea758491bfd 100644 (file)
@@ -158,6 +158,7 @@ extern flash_info_t *flash_get_info(ulong base);
 #define EXCEL_MANUFACT 0x004A004A      /* Excel Semiconductor                  */
 #define AMIC_MANUFACT  0x00370037      /* AMIC    manuf. ID in D23..D16, D7..D0 */
 #define WINB_MANUFACT  0x00DA00DA      /* Winbond manuf. ID in D23..D16, D7..D0 */
+#define EON_ALT_MANU   0x001C001C      /* EON     manuf. ID in D23..D16, D7..D0 */
 
 /* Manufacturers inside bank 1 have ids like 0x01xx01xx */
 #define EON_MANUFACT   0x011C011C      /* EON     manuf. ID in D23..D16, D7..D0 */
index e46a684129d66b0f9bca49ede31db5f5088d48bf..3e1b9f4281ada37d9604e376fcc83c236d181bb9 100644 (file)
@@ -75,6 +75,20 @@ enum fm_eth_type {
                                offsetof(struct ccsr_fman, memac[n-1]),\
 }
 
+#ifdef CONFIG_FSL_FM_10GEC_REGULAR_NOTATION
+#define FM_TGEC_INFO_INITIALIZER(idx, n) \
+{                                                                      \
+       FM_ETH_INFO_INITIALIZER(idx, CONFIG_SYS_FM1_TGEC_MDIO_ADDR)     \
+       .index          = idx,                                          \
+       .num            = n - 1,                                        \
+       .type           = FM_ETH_10G_E,                                 \
+       .port           = FM##idx##_10GEC##n,                           \
+       .rx_port_id     = RX_PORT_10G_BASE2 + n - 1,                    \
+       .tx_port_id     = TX_PORT_10G_BASE2 + n - 1,                    \
+       .compat_offset  = CONFIG_SYS_FSL_FM##idx##_OFFSET +             \
+                                offsetof(struct ccsr_fman, memac[n-1]),\
+}
+#else
 #define FM_TGEC_INFO_INITIALIZER(idx, n) \
 {                                                                      \
        FM_ETH_INFO_INITIALIZER(idx, CONFIG_SYS_FM2_TGEC_MDIO_ADDR)     \
@@ -87,6 +101,7 @@ enum fm_eth_type {
        .compat_offset  = CONFIG_SYS_FSL_FM##idx##_OFFSET +             \
                                offsetof(struct ccsr_fman, memac[n-1+8]),\
 }
+#endif
 
 #if (CONFIG_SYS_NUM_FM1_10GEC >= 3)
 #define FM_TGEC_INFO_INITIALIZER2(idx, n) \
index 06a45f2788323b5d0fef4debf677bcf942cebe4d..ffb6ce7ada64f0498b46eac89d6a335bea83c488 100644 (file)
@@ -51,32 +51,41 @@ int fs_ls(const char *dirname);
 int fs_exists(const char *filename);
 
 /*
- * Determine a file's size
+ * fs_size - Determine a file's size
  *
- * Returns the file's size in bytes, or a negative value if it doesn't exist.
+ * @filename: Name of the file
+ * @size: Size of file
+ * @return 0 if ok with valid *size, negative on error
  */
-int fs_size(const char *filename);
+int fs_size(const char *filename, loff_t *size);
 
 /*
- * Read file "filename" from the partition previously set by fs_set_blk_dev(),
- * to address "addr", starting at byte offset "offset", and reading "len"
- * bytes. "offset" may be 0 to read from the start of the file. "len" may be
- * 0 to read the entire file. Note that not all filesystem types support
- * either/both offset!=0 or len!=0.
+ * fs_read - Read file from the partition previously set by fs_set_blk_dev()
+ * Note that not all filesystem types support either/both offset!=0 or len!=0.
  *
- * Returns number of bytes read on success. Returns <= 0 on error.
+ * @filename: Name of file to read from
+ * @addr: The address to read into
+ * @offset: The offset in file to read from
+ * @len: The number of bytes to read. Maybe 0 to read entire file
+ * @actread: Returns the actual number of bytes read
+ * @return 0 if ok with valid *actread, -1 on error conditions
  */
-int fs_read(const char *filename, ulong addr, int offset, int len);
+int fs_read(const char *filename, ulong addr, loff_t offset, loff_t len,
+           loff_t *actread);
 
 /*
- * Write file "filename" to the partition previously set by fs_set_blk_dev(),
- * from address "addr", starting at byte offset "offset", and writing "len"
- * bytes. "offset" may be 0 to write to the start of the file. Note that not
- * all filesystem types support offset!=0.
+ * fs_write - Write file to the partition previously set by fs_set_blk_dev()
+ * Note that not all filesystem types support offset!=0.
  *
- * Returns number of bytes read on success. Returns <= 0 on error.
+ * @filename: Name of file to read from
+ * @addr: The address to read into
+ * @offset: The offset in file to read from. Maybe 0 to write to start of file
+ * @len: The number of bytes to write
+ * @actwrite: Returns the actual number of bytes written
+ * @return 0 if ok with valid *actwrite, -1 on error conditions
  */
-int fs_write(const char *filename, ulong addr, int offset, int len);
+int fs_write(const char *filename, ulong addr, loff_t offset, loff_t len,
+            loff_t *actwrite);
 
 /*
  * Common implementation for various filesystem commands, optionally limited
@@ -93,4 +102,11 @@ int file_exists(const char *dev_type, const char *dev_part, const char *file,
 int do_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
                int fstype);
 
+/*
+ * Determine the UUID of the specified filesystem and print it. Optionally it is
+ * possible to store the UUID directly in env.
+ */
+int do_fs_uuid(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
+               int fstype);
+
 #endif /* _FS_H */
index 5b03c14c55db3f29741a4d7831c6093aa156b1c5..095b33e29ee75086217c443c9f40fef18191dc8e 100644 (file)
@@ -114,6 +114,7 @@ typedef struct ddr4_spd_eeprom_s generic_spd_eeprom_t;
 #define SDRAM_CFG_2T_EN                        0x00008000
 #define SDRAM_CFG_BI                   0x00000001
 
+#define SDRAM_CFG2_FRC_SR              0x80000000
 #define SDRAM_CFG2_D_INIT              0x00000010
 #define SDRAM_CFG2_ODT_CFG_MASK                0x00600000
 #define SDRAM_CFG2_ODT_NEVER           0
@@ -163,6 +164,7 @@ typedef struct ddr4_spd_eeprom_s generic_spd_eeprom_t;
 #define DDR_CDR1_ODT(x) ((x & DDR_CDR1_ODT_MASK) << DDR_CDR1_ODT_SHIFT)
 #define DDR_CDR2_ODT(x) (x & DDR_CDR2_ODT_MASK)
 #define DDR_CDR2_VREF_OVRD(x)  (0x00008080 | ((((x) - 37) & 0x3F) << 8))
+#define DDR_CDR2_VREF_TRAIN_EN 0x00000080
 
 #if (defined(CONFIG_SYS_FSL_DDR_VER) && \
        (CONFIG_SYS_FSL_DDR_VER >= FSL_DDR_VER_4_7))
@@ -202,6 +204,8 @@ typedef struct ddr4_spd_eeprom_s generic_spd_eeprom_t;
 #define DDR_CDR_ODT_120ohm     0x6
 #endif
 
+#define DDR_INIT_ADDR_EXT_UIA  (1 << 31)
+
 /* Record of register values computed */
 typedef struct fsl_ddr_cfg_regs_s {
        struct {
@@ -414,9 +418,11 @@ static int __board_need_mem_reset(void)
 int board_need_mem_reset(void)
        __attribute__((weak, alias("__board_need_mem_reset")));
 
-void __weak board_mem_sleep_setup(void)
-{
-}
+#if defined(CONFIG_DEEP_SLEEP)
+void board_mem_sleep_setup(void);
+bool is_warm_boot(void);
+int fsl_dp_resume(void);
+#endif
 
 /*
  * The 85xx boards have a common prototype for fixed_sdram so put the
index 1a6c9c1636638f3977db5f3dfbc77bc01392f03a..d251f5d4ce17831f715aa2c241c6452576b02ac1 100644 (file)
@@ -85,4 +85,104 @@ struct ccsr_usb_phy {
 #define CONFIG_SYS_FSL_USB_SQUELCH_PROG_MASK 0x07
 #endif
 
+/* USB Erratum Checking code */
+#ifdef CONFIG_PPC
+static inline bool has_erratum_a006261(void)
+{
+       u32 svr = get_svr();
+       u32 soc = SVR_SOC_VER(svr);
+
+       switch (soc) {
+       case SVR_P1010:
+               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
+       case SVR_P2041:
+       case SVR_P2040:
+               return IS_SVR_REV(svr, 1, 0) ||
+                       IS_SVR_REV(svr, 1, 1) || IS_SVR_REV(svr, 2, 1);
+       case SVR_P3041:
+               return IS_SVR_REV(svr, 1, 0) ||
+                       IS_SVR_REV(svr, 1, 1) ||
+                       IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 2, 1);
+       case SVR_P5010:
+       case SVR_P5020:
+       case SVR_P5021:
+               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
+       case SVR_T4240:
+       case SVR_T4160:
+       case SVR_T4080:
+               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
+       case SVR_T1040:
+               return IS_SVR_REV(svr, 1, 0);
+       case SVR_T2080:
+       case SVR_T2081:
+               return IS_SVR_REV(svr, 1, 0);
+       case SVR_P5040:
+               return IS_SVR_REV(svr, 1, 0);
+       }
+
+       return false;
+}
+
+static inline bool has_erratum_a007075(void)
+{
+       u32 svr = get_svr();
+       u32 soc = SVR_SOC_VER(svr);
+
+       switch (soc) {
+       case SVR_B4860:
+       case SVR_B4420:
+               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
+       case SVR_P1010:
+               return IS_SVR_REV(svr, 1, 0);
+       case SVR_P4080:
+               return IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 3, 0);
+       }
+       return false;
+}
+
+static inline bool has_erratum_a007798(void)
+{
+       return SVR_SOC_VER(get_svr()) == SVR_T4240 &&
+               IS_SVR_REV(get_svr(), 2, 0);
+}
+
+static inline bool has_erratum_a007792(void)
+{
+       u32 svr = get_svr();
+       u32 soc = SVR_SOC_VER(svr);
+
+       switch (soc) {
+       case SVR_T4240:
+       case SVR_T4160:
+               return IS_SVR_REV(svr, 2, 0);
+       case SVR_T1040:
+               return IS_SVR_REV(svr, 1, 0);
+       case SVR_T2080:
+       case SVR_T2081:
+               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
+       }
+       return false;
+}
+
+#else
+static inline bool has_erratum_a006261(void)
+{
+       return false;
+}
+
+static inline bool has_erratum_a007075(void)
+{
+       return false;
+}
+
+static inline bool has_erratum_a007798(void)
+{
+       return false;
+}
+
+static inline bool has_erratum_a007792(void)
+{
+       return false;
+}
+#endif
 #endif /*_ASM_FSL_USB_H_ */
index 1b1b35e0e1c5e0813994fa84a77a0462a6b8c053..4eeb5e40702fe97a60a32ee8f227b0097a7a5f6f 100644 (file)
@@ -39,4 +39,8 @@ int g_dnl_register(const char *s);
 void g_dnl_unregister(void);
 void g_dnl_set_serialnumber(char *);
 
+bool g_dnl_detach(void);
+void g_dnl_trigger_detach(void);
+void g_dnl_clear_detach(void);
+
 #endif /* __G_DOWNLOAD_H_ */
index 276a01e744ed8b4914c6dd64130c93212c128abe..8a5efe732ade33db532dab5df0694f9abc24e722 100644 (file)
@@ -61,6 +61,22 @@ struct ihs_osd {
        u16 y_pos;
 };
 
+struct ihs_mdio {
+       u16 control;
+       u16 address_data;
+       u16 rx_data;
+};
+
+struct ihs_io_ep {
+       u16 transmit_data;
+       u16 rx_tx_control;
+       u16 receive_data;
+       u16 rx_tx_status;
+       u16 reserved;
+       u16 device_address;
+       u16 target_address;
+};
+
 #ifdef CONFIG_NEO
 struct ihs_fpga {
        u16 reflection_low;     /* 0x0000 */
@@ -119,12 +135,50 @@ struct ihs_fpga {
        u16 versions;           /* 0x0002 */
        u16 fpga_version;       /* 0x0004 */
        u16 fpga_features;      /* 0x0006 */
-       u16 reserved_0[6];      /* 0x0008 */
+       u16 reserved_0[1];      /* 0x0008 */
+       u16 top_interrupt;      /* 0x000a */
+       u16 reserved_1[4];      /* 0x000c */
+       struct ihs_gpio gpio;   /* 0x0014 */
+       u16 mpc3w_control;      /* 0x001a */
+       u16 reserved_2[2];      /* 0x001c */
+       struct ihs_io_ep ep;    /* 0x0020 */
+       u16 reserved_3[9];      /* 0x002e */
+       struct ihs_i2c i2c;     /* 0x0040 */
+       u16 reserved_4[10];     /* 0x004c */
+       u16 mc_int;             /* 0x0060 */
+       u16 mc_int_en;          /* 0x0062 */
+       u16 mc_status;          /* 0x0064 */
+       u16 mc_control;         /* 0x0066 */
+       u16 mc_tx_data;         /* 0x0068 */
+       u16 mc_tx_address;      /* 0x006a */
+       u16 mc_tx_cmd;          /* 0x006c */
+       u16 mc_res;             /* 0x006e */
+       u16 mc_rx_cmd_status;   /* 0x0070 */
+       u16 mc_rx_data;         /* 0x0072 */
+       u16 reserved_5[69];     /* 0x0074 */
+       u16 reflection_high;    /* 0x00fe */
+       struct ihs_osd osd;     /* 0x0100 */
+       u16 reserved_6[889];    /* 0x010e */
+       u16 videomem[31736];    /* 0x0800 */
+};
+#endif
+
+#ifdef CONFIG_HRCON
+struct ihs_fpga {
+       u16 reflection_low;     /* 0x0000 */
+       u16 versions;           /* 0x0002 */
+       u16 fpga_version;       /* 0x0004 */
+       u16 fpga_features;      /* 0x0006 */
+       u16 reserved_0[1];      /* 0x0008 */
+       u16 top_interrupt;      /* 0x000a */
+       u16 reserved_1[4];      /* 0x000c */
        struct ihs_gpio gpio;   /* 0x0014 */
        u16 mpc3w_control;      /* 0x001a */
-       u16 reserved_1[18];     /* 0x001c */
+       u16 reserved_2[2];      /* 0x001c */
+       struct ihs_io_ep ep;    /* 0x0020 */
+       u16 reserved_3[9];      /* 0x002e */
        struct ihs_i2c i2c;     /* 0x0040 */
-       u16 reserved_2[10];     /* 0x004c */
+       u16 reserved_4[10];     /* 0x004c */
        u16 mc_int;             /* 0x0060 */
        u16 mc_int_en;          /* 0x0062 */
        u16 mc_status;          /* 0x0064 */
@@ -135,10 +189,10 @@ struct ihs_fpga {
        u16 mc_res;             /* 0x006e */
        u16 mc_rx_cmd_status;   /* 0x0070 */
        u16 mc_rx_data;         /* 0x0072 */
-       u16 reserved_3[69];     /* 0x0074 */
+       u16 reserved_5[69];     /* 0x0074 */
        u16 reflection_high;    /* 0x00fe */
        struct ihs_osd osd;     /* 0x0100 */
-       u16 reserved_4[889];    /* 0x010e */
+       u16 reserved_6[889];    /* 0x010e */
        u16 videomem[31736];    /* 0x0800 */
 };
 #endif
index 1b4078ed62fe43c8c3ac37b1ff732da0d431d37f..9c6a60cf9ae89e50e2a4d2dfaa94874a56774e1f 100644 (file)
 #ifndef _I2C_H_
 #define _I2C_H_
 
+/*
+ * For now there are essentially two parts to this file - driver model
+ * here at the top, and the older code below (with CONFIG_SYS_I2C being
+ * most recent). The plan is to migrate everything to driver model.
+ * The driver model structures and API are separate as they are different
+ * enough as to be incompatible for compilation purposes.
+ */
+
+#ifdef CONFIG_DM_I2C
+
+enum dm_i2c_chip_flags {
+       DM_I2C_CHIP_10BIT       = 1 << 0, /* Use 10-bit addressing */
+       DM_I2C_CHIP_RD_ADDRESS  = 1 << 1, /* Send address for each read byte */
+       DM_I2C_CHIP_WR_ADDRESS  = 1 << 2, /* Send address for each write byte */
+};
+
+/**
+ * struct dm_i2c_chip - information about an i2c chip
+ *
+ * An I2C chip is a device on the I2C bus. It sits at a particular address
+ * and normally supports 7-bit or 10-bit addressing.
+ *
+ * To obtain this structure, use dev_get_parentdata(dev) where dev is the
+ * chip to examine.
+ *
+ * @chip_addr: Chip address on bus
+ * @offset_len: Length of offset in bytes. A single byte offset can
+ *             represent up to 256 bytes. A value larger than 1 may be
+ *             needed for larger devices.
+ * @flags:     Flags for this chip (dm_i2c_chip_flags)
+ * @emul: Emulator for this chip address (only used for emulation)
+ */
+struct dm_i2c_chip {
+       uint chip_addr;
+       uint offset_len;
+       uint flags;
+#ifdef CONFIG_SANDBOX
+       struct udevice *emul;
+#endif
+};
+
+/**
+ * struct dm_i2c_bus- information about an i2c bus
+ *
+ * An I2C bus contains 0 or more chips on it, each at its own address. The
+ * bus can operate at different speeds (measured in Hz, typically 100KHz
+ * or 400KHz).
+ *
+ * To obtain this structure, use bus->uclass_priv where bus is the I2C
+ * bus udevice.
+ *
+ * @speed_hz: Bus speed in hertz (typically 100000)
+ */
+struct dm_i2c_bus {
+       int speed_hz;
+};
+
+/**
+ * i2c_read() - read bytes from an I2C chip
+ *
+ * To obtain an I2C device (called a 'chip') given the I2C bus address you
+ * can use i2c_get_chip(). To obtain a bus by bus number use
+ * uclass_get_device_by_seq(UCLASS_I2C, <bus number>).
+ *
+ * To set the address length of a devce use i2c_set_addr_len(). It
+ * defaults to 1.
+ *
+ * @dev:       Chip to read from
+ * @offset:    Offset within chip to start reading
+ * @buffer:    Place to put data
+ * @len:       Number of bytes to read
+ *
+ * @return 0 on success, -ve on failure
+ */
+int i2c_read(struct udevice *dev, uint offset, uint8_t *buffer,
+            int len);
+
+/**
+ * i2c_write() - write bytes to an I2C chip
+ *
+ * See notes for i2c_read() above.
+ *
+ * @dev:       Chip to write to
+ * @offset:    Offset within chip to start writing
+ * @buffer:    Buffer containing data to write
+ * @len:       Number of bytes to write
+ *
+ * @return 0 on success, -ve on failure
+ */
+int i2c_write(struct udevice *dev, uint offset, const uint8_t *buffer,
+             int len);
+
+/**
+ * i2c_probe() - probe a particular chip address
+ *
+ * This can be useful to check for the existence of a chip on the bus.
+ * It is typically implemented by writing the chip address to the bus
+ * and checking that the chip replies with an ACK.
+ *
+ * @bus:       Bus to probe
+ * @chip_addr: 7-bit address to probe (10-bit and others are not supported)
+ * @chip_flags:        Flags for the probe (see enum dm_i2c_chip_flags)
+ * @devp:      Returns the device found, or NULL if none
+ * @return 0 if a chip was found at that address, -ve if not
+ */
+int i2c_probe(struct udevice *bus, uint chip_addr, uint chip_flags,
+             struct udevice **devp);
+
+/**
+ * i2c_set_bus_speed() - set the speed of a bus
+ *
+ * @bus:       Bus to adjust
+ * @speed:     Requested speed in Hz
+ * @return 0 if OK, -EINVAL for invalid values
+ */
+int i2c_set_bus_speed(struct udevice *bus, unsigned int speed);
+
+/**
+ * i2c_get_bus_speed() - get the speed of a bus
+ *
+ * @bus:       Bus to check
+ * @return speed of selected I2C bus in Hz, -ve on error
+ */
+int i2c_get_bus_speed(struct udevice *bus);
+
+/**
+ * i2c_set_chip_flags() - set flags for a chip
+ *
+ * Typically addresses are 7 bits, but for 10-bit addresses you should set
+ * flags to DM_I2C_CHIP_10BIT. All accesses will then use 10-bit addressing.
+ *
+ * @dev:       Chip to adjust
+ * @flags:     New flags
+ * @return 0 if OK, -EINVAL if value is unsupported, other -ve value on error
+ */
+int i2c_set_chip_flags(struct udevice *dev, uint flags);
+
+/**
+ * i2c_get_chip_flags() - get flags for a chip
+ *
+ * @dev:       Chip to check
+ * @flagsp:    Place to put flags
+ * @return 0 if OK, other -ve value on error
+ */
+int i2c_get_chip_flags(struct udevice *dev, uint *flagsp);
+
+/**
+ * i2c_set_offset_len() - set the offset length for a chip
+ *
+ * The offset used to access a chip may be up to 4 bytes long. Typically it
+ * is only 1 byte, which is enough for chips with 256 bytes of memory or
+ * registers. The default value is 1, but you can call this function to
+ * change it.
+ *
+ * @offset_len:        New offset length value (typically 1 or 2)
+ */
+
+int i2c_set_chip_offset_len(struct udevice *dev, uint offset_len);
+/**
+ * i2c_deblock() - recover a bus that is in an unknown state
+ *
+ * See the deblock() method in 'struct dm_i2c_ops' for full information
+ *
+ * @bus:       Bus to recover
+ * @return 0 if OK, -ve on error
+ */
+int i2c_deblock(struct udevice *bus);
+
+/*
+ * Not all of these flags are implemented in the U-Boot API
+ */
+enum dm_i2c_msg_flags {
+       I2C_M_TEN               = 0x0010, /* ten-bit chip address */
+       I2C_M_RD                = 0x0001, /* read data, from slave to master */
+       I2C_M_STOP              = 0x8000, /* send stop after this message */
+       I2C_M_NOSTART           = 0x4000, /* no start before this message */
+       I2C_M_REV_DIR_ADDR      = 0x2000, /* invert polarity of R/W bit */
+       I2C_M_IGNORE_NAK        = 0x1000, /* continue after NAK */
+       I2C_M_NO_RD_ACK         = 0x0800, /* skip the Ack bit on reads */
+       I2C_M_RECV_LEN          = 0x0400, /* length is first received byte */
+};
+
+/**
+ * struct i2c_msg - an I2C message
+ *
+ * @addr:      Slave address
+ * @flags:     Flags (see enum dm_i2c_msg_flags)
+ * @len:       Length of buffer in bytes, may be 0 for a probe
+ * @buf:       Buffer to send/receive, or NULL if no data
+ */
+struct i2c_msg {
+       uint addr;
+       uint flags;
+       uint len;
+       u8 *buf;
+};
+
+/**
+ * struct i2c_msg_list - a list of I2C messages
+ *
+ * This is called i2c_rdwr_ioctl_data in Linux but the name does not seem
+ * appropriate in U-Boot.
+ *
+ * @msg:       Pointer to i2c_msg array
+ * @nmsgs:     Number of elements in the array
+ */
+struct i2c_msg_list {
+       struct i2c_msg *msgs;
+       uint nmsgs;
+};
+
+/**
+ * struct dm_i2c_ops - driver operations for I2C uclass
+ *
+ * Drivers should support these operations unless otherwise noted. These
+ * operations are intended to be used by uclass code, not directly from
+ * other code.
+ */
+struct dm_i2c_ops {
+       /**
+        * xfer() - transfer a list of I2C messages
+        *
+        * @bus:        Bus to read from
+        * @msg:        List of messages to transfer
+        * @nmsgs:      Number of messages in the list
+        * @return 0 if OK, -EREMOTEIO if the slave did not ACK a byte,
+        *      -ECOMM if the speed cannot be supported, -EPROTO if the chip
+        *      flags cannot be supported, other -ve value on some other error
+        */
+       int (*xfer)(struct udevice *bus, struct i2c_msg *msg, int nmsgs);
+
+       /**
+        * probe_chip() - probe for the presense of a chip address
+        *
+        * This function is optional. If omitted, the uclass will send a zero
+        * length message instead.
+        *
+        * @bus:        Bus to probe
+        * @chip_addr:  Chip address to probe
+        * @chip_flags: Probe flags (enum dm_i2c_chip_flags)
+        * @return 0 if chip was found, -EREMOTEIO if not, -ENOSYS to fall back
+        * to default probem other -ve value on error
+        */
+       int (*probe_chip)(struct udevice *bus, uint chip_addr, uint chip_flags);
+
+       /**
+        * set_bus_speed() - set the speed of a bus (optional)
+        *
+        * The bus speed value will be updated by the uclass if this function
+        * does not return an error. This method is optional - if it is not
+        * provided then the driver can read the speed from
+        * bus->uclass_priv->speed_hz
+        *
+        * @bus:        Bus to adjust
+        * @speed:      Requested speed in Hz
+        * @return 0 if OK, -EINVAL for invalid values
+        */
+       int (*set_bus_speed)(struct udevice *bus, unsigned int speed);
+
+       /**
+        * get_bus_speed() - get the speed of a bus (optional)
+        *
+        * Normally this can be provided by the uclass, but if you want your
+        * driver to check the bus speed by looking at the hardware, you can
+        * implement that here. This method is optional. This method would
+        * normally be expected to return bus->uclass_priv->speed_hz.
+        *
+        * @bus:        Bus to check
+        * @return speed of selected I2C bus in Hz, -ve on error
+        */
+       int (*get_bus_speed)(struct udevice *bus);
+
+       /**
+        * set_flags() - set the flags for a chip (optional)
+        *
+        * This is generally implemented by the uclass, but drivers can
+        * check the value to ensure that unsupported options are not used.
+        * This method is optional. If provided, this method will always be
+        * called when the flags change.
+        *
+        * @dev:        Chip to adjust
+        * @flags:      New flags value
+        * @return 0 if OK, -EINVAL if value is unsupported
+        */
+       int (*set_flags)(struct udevice *dev, uint flags);
+
+       /**
+        * deblock() - recover a bus that is in an unknown state
+        *
+        * I2C is a synchronous protocol and resets of the processor in the
+        * middle of an access can block the I2C Bus until a powerdown of
+        * the full unit is done. This is because slaves can be stuck
+        * waiting for addition bus transitions for a transaction that will
+        * never complete. Resetting the I2C master does not help. The only
+        * way is to force the bus through a series of transitions to make
+        * sure that all slaves are done with the transaction. This method
+        * performs this 'deblocking' if support by the driver.
+        *
+        * This method is optional.
+        */
+       int (*deblock)(struct udevice *bus);
+};
+
+#define i2c_get_ops(dev)       ((struct dm_i2c_ops *)(dev)->driver->ops)
+
+/**
+ * i2c_get_chip() - get a device to use to access a chip on a bus
+ *
+ * This returns the device for the given chip address. The device can then
+ * be used with calls to i2c_read(), i2c_write(), i2c_probe(), etc.
+ *
+ * @bus:       Bus to examine
+ * @chip_addr: Chip address for the new device
+ * @devp:      Returns pointer to new device if found or -ENODEV if not
+ *             found
+ */
+int i2c_get_chip(struct udevice *bus, uint chip_addr, struct udevice **devp);
+
+/**
+ * i2c_get_chip() - get a device to use to access a chip on a bus number
+ *
+ * This returns the device for the given chip address on a particular bus
+ * number.
+ *
+ * @busnum:    Bus number to examine
+ * @chip_addr: Chip address for the new device
+ * @devp:      Returns pointer to new device if found or -ENODEV if not
+ *             found
+ */
+int i2c_get_chip_for_busnum(int busnum, int chip_addr, struct udevice **devp);
+
+/**
+ * i2c_chip_ofdata_to_platdata() - Decode standard I2C platform data
+ *
+ * This decodes the chip address from a device tree node and puts it into
+ * its dm_i2c_chip structure. This should be called in your driver's
+ * ofdata_to_platdata() method.
+ *
+ * @blob:      Device tree blob
+ * @node:      Node offset to read from
+ * @spi:       Place to put the decoded information
+ */
+int i2c_chip_ofdata_to_platdata(const void *blob, int node,
+                               struct dm_i2c_chip *chip);
+
+#endif
+
+#ifndef CONFIG_DM_I2C
+
 /*
  * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
  *
@@ -451,4 +800,7 @@ int i2c_get_bus_num_fdt(int node);
  * @return 0 if port was reset, -1 if not found
  */
 int i2c_reset_port_fdt(const void *blob, int node);
+
+#endif /* !CONFIG_DM_I2C */
+
 #endif /* _I2C_H_ */
diff --git a/include/i2c_eeprom.h b/include/i2c_eeprom.h
new file mode 100644 (file)
index 0000000..ea6c962
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __I2C_EEPROM
+#define __I2C_EEPROM
+
+struct i2c_eeprom_ops {
+       int (*read)(struct udevice *dev, int offset, uint8_t *buf, int size);
+       int (*write)(struct udevice *dev, int offset, const uint8_t *buf,
+                    int size);
+};
+
+struct i2c_eeprom {
+};
+
+#endif
index a13a30289f691819c849834a1584c77a438fdc1a..af30d601585e3bf0124b590a41a3cf863e494a31 100644 (file)
@@ -119,6 +119,12 @@ struct lmb;
 # define IMAGE_OF_BOARD_SETUP          0
 #endif
 
+#ifdef CONFIG_OF_SYSTEM_SETUP
+# define IMAGE_OF_SYSTEM_SETUP 1
+#else
+# define IMAGE_OF_SYSTEM_SETUP 0
+#endif
+
 /*
  * Operating System Codes
  */
@@ -173,6 +179,7 @@ struct lmb;
 #define IH_ARCH_OPENRISC        21     /* OpenRISC 1000  */
 #define IH_ARCH_ARM64          22      /* ARM64        */
 #define IH_ARCH_ARC            23      /* Synopsys DesignWare ARC */
+#define IH_ARCH_X86_64         24      /* AMD x86_64, Intel and Via */
 
 /*
  * Image Types
diff --git a/include/imx_thermal.h b/include/imx_thermal.h
new file mode 100644 (file)
index 0000000..be13652
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ *
+ * (C) Copyright 2014 Freescale Semiconductor, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _IMX_THERMAL_H_
+#define _IMX_THERMAL_H_
+
+struct imx_thermal_plat {
+       void *regs;
+       int fuse_bank;
+       int fuse_word;
+};
+
+#endif /* _IMX_THERMAL_H_ */
index ea5860c8619e751dd34679cc8d26d2a757c00368..020d8800e9e6437fb6af4c70f64518c8f9b66e38 100644 (file)
@@ -250,7 +250,7 @@ typedef struct vidinfo {
        void    *priv;          /* Pointer to driver-specific data */
 } vidinfo_t;
 
-#endif /* CONFIG_MPC823, CONFIG_CPU_PXA25X, CONFIG_MCC200, CONFIG_ATMEL_LCD */
+#endif /* CONFIG_MPC823, CONFIG_CPU_PXA25X, CONFIG_ATMEL_LCD */
 
 extern vidinfo_t panel_info;
 
index 7ff6064b187b7b914f27ac8f5e7004a014037130..b40133cb3cd160e66ca66516e1c47e49300a9aff 100644 (file)
@@ -57,17 +57,6 @@ void *kmem_cache_alloc(struct kmem_cache *obj, int flag);
 
 #define KERNEL_VERSION(a,b,c)  (((a) << 16) + ((b) << 8) + (c))
 
-/*
- * ..and if you can't take the strict
- * types, you can specify one yourself.
- *
- * Or not use min/max at all, of course.
- */
-#define min_t(type,x,y) \
-       ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
-#define max_t(type,x,y) \
-       ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
-
 #ifndef BUG
 #define BUG() do { \
        printf("U-Boot BUG at %s:%d!\n", __FILE__, __LINE__); \
@@ -81,24 +70,6 @@ void *kmem_cache_alloc(struct kmem_cache *obj, int flag);
 
 #define PAGE_SIZE      4096
 
-/**
- * upper_32_bits - return MSB bits 32-63 of a number if little endian, or
- * return MSB bits 0-31 of a number if big endian.
- * @n: the number we're accessing
- *
- * A basic shift-right of a 64- or 32-bit quantity.  Use this to suppress
- * the "right shift count >= width of type" warning when that quantity is
- * 32-bits.
- */
-#define upper_32_bits(n) ((u32)(((n) >> 16) >> 16))
-
-/**
- * lower_32_bits - return LSB bits 0-31 of a number if little endian, or
- * return LSB bits 32-63 of a number if big endian.
- * @n: the number we're accessing
- */
-#define lower_32_bits(n) ((u32)(n))
-
 /* drivers/char/random.c */
 #define get_random_bytes(...)
 
@@ -152,17 +123,6 @@ typedef unsigned long blkcnt_t;
 
 #define ENOTSUPP       524     /* Operation is not supported */
 
-/* from include/linux/kernel.h */
-/*
- * This looks more complex than it should be. But we need to
- * get the type for the ~ right in round_down (it needs to be
- * as wide as the result!), and we want to evaluate the macro
- * arguments just once each.
- */
-#define __round_mask(x, y) ((__typeof__(x))((y)-1))
-#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
-#define round_down(x, y) ((x) & ~__round_mask(x, y))
-
 /* module */
 #define THIS_MODULE            0
 #define try_module_get(...)    1
@@ -198,18 +158,6 @@ typedef unsigned long blkcnt_t;
 
 #define blocking_notifier_call_chain(...) 0
 
-/*
- * Multiplies an integer by a fraction, while avoiding unnecessary
- * overflow or loss of precision.
- */
-#define mult_frac(x, numer, denom)(                    \
-{                                                      \
-       typeof(x) quot = (x) / (denom);                 \
-       typeof(x) rem  = (x) % (denom);                 \
-       (quot * (numer)) + ((rem * (numer)) / (denom)); \
-}                                                      \
-)
-
 #define __initdata
 #define late_initcall(...)
 
@@ -267,15 +215,11 @@ typedef int       wait_queue_head_t;
 #define cond_resched()                 do { } while (0)
 #define yield()                                do { } while (0)
 
-#define INT_MAX                                ((int)(~0U>>1))
-
-#define __user
 #define __init
 #define __exit
 #define __devinit
 #define __devinitdata
 #define __devinitconst
-#define __iomem
 
 #define kthread_create(...)    __builtin_return_address(0)
 #define kthread_stop(...)      do { } while (0)
@@ -306,8 +250,6 @@ struct cdev {
 #define cdev_add(...)          0
 #define cdev_del(...)          do { } while (0)
 
-#define MAX_ERRNO              4095
-
 #define prandom_u32(...)       0
 
 typedef struct {
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
new file mode 100644 (file)
index 0000000..0b61671
--- /dev/null
@@ -0,0 +1,247 @@
+#ifndef _LINUX_KERNEL_H
+#define _LINUX_KERNEL_H
+
+
+#include <linux/types.h>
+
+#define USHRT_MAX      ((u16)(~0U))
+#define SHRT_MAX       ((s16)(USHRT_MAX>>1))
+#define SHRT_MIN       ((s16)(-SHRT_MAX - 1))
+#define INT_MAX                ((int)(~0U>>1))
+#define INT_MIN                (-INT_MAX - 1)
+#define UINT_MAX       (~0U)
+#define LONG_MAX       ((long)(~0UL>>1))
+#define LONG_MIN       (-LONG_MAX - 1)
+#define ULONG_MAX      (~0UL)
+#define LLONG_MAX      ((long long)(~0ULL>>1))
+#define LLONG_MIN      (-LLONG_MAX - 1)
+#define ULLONG_MAX     (~0ULL)
+#ifndef SIZE_MAX
+#define SIZE_MAX       (~(size_t)0)
+#endif
+
+#define U8_MAX         ((u8)~0U)
+#define S8_MAX         ((s8)(U8_MAX>>1))
+#define S8_MIN         ((s8)(-S8_MAX - 1))
+#define U16_MAX                ((u16)~0U)
+#define S16_MAX                ((s16)(U16_MAX>>1))
+#define S16_MIN                ((s16)(-S16_MAX - 1))
+#define U32_MAX                ((u32)~0U)
+#define S32_MAX                ((s32)(U32_MAX>>1))
+#define S32_MIN                ((s32)(-S32_MAX - 1))
+#define U64_MAX                ((u64)~0ULL)
+#define S64_MAX                ((s64)(U64_MAX>>1))
+#define S64_MIN                ((s64)(-S64_MAX - 1))
+
+#define STACK_MAGIC    0xdeadbeef
+
+#define REPEAT_BYTE(x) ((~0ul / 0xff) * (x))
+
+#define ALIGN(x,a)             __ALIGN_MASK((x),(typeof(x))(a)-1)
+#define __ALIGN_MASK(x,mask)   (((x)+(mask))&~(mask))
+#define PTR_ALIGN(p, a)                ((typeof(p))ALIGN((unsigned long)(p), (a)))
+#define IS_ALIGNED(x, a)               (((x) & ((typeof(x))(a) - 1)) == 0)
+
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+
+/*
+ * This looks more complex than it should be. But we need to
+ * get the type for the ~ right in round_down (it needs to be
+ * as wide as the result!), and we want to evaluate the macro
+ * arguments just once each.
+ */
+#define __round_mask(x, y) ((__typeof__(x))((y)-1))
+#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
+#define round_down(x, y) ((x) & ~__round_mask(x, y))
+
+#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
+#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
+
+#if BITS_PER_LONG == 32
+# define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP_ULL(ll, d)
+#else
+# define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP(ll,d)
+#endif
+
+/* The `const' in roundup() prevents gcc-3.3 from calling __divdi3 */
+#define roundup(x, y) (                                        \
+{                                                      \
+       const typeof(y) __y = y;                        \
+       (((x) + (__y - 1)) / __y) * __y;                \
+}                                                      \
+)
+#define rounddown(x, y) (                              \
+{                                                      \
+       typeof(x) __x = (x);                            \
+       __x - (__x % (y));                              \
+}                                                      \
+)
+
+/*
+ * Divide positive or negative dividend by positive divisor and round
+ * to closest integer. Result is undefined for negative divisors and
+ * for negative dividends if the divisor variable type is unsigned.
+ */
+#define DIV_ROUND_CLOSEST(x, divisor)(                 \
+{                                                      \
+       typeof(x) __x = x;                              \
+       typeof(divisor) __d = divisor;                  \
+       (((typeof(x))-1) > 0 ||                         \
+        ((typeof(divisor))-1) > 0 || (__x) > 0) ?      \
+               (((__x) + ((__d) / 2)) / (__d)) :       \
+               (((__x) - ((__d) / 2)) / (__d));        \
+}                                                      \
+)
+
+/*
+ * Multiplies an integer by a fraction, while avoiding unnecessary
+ * overflow or loss of precision.
+ */
+#define mult_frac(x, numer, denom)(                    \
+{                                                      \
+       typeof(x) quot = (x) / (denom);                 \
+       typeof(x) rem  = (x) % (denom);                 \
+       (quot * (numer)) + ((rem * (numer)) / (denom)); \
+}                                                      \
+)
+
+/**
+ * upper_32_bits - return bits 32-63 of a number
+ * @n: the number we're accessing
+ *
+ * A basic shift-right of a 64- or 32-bit quantity.  Use this to suppress
+ * the "right shift count >= width of type" warning when that quantity is
+ * 32-bits.
+ */
+#define upper_32_bits(n) ((u32)(((n) >> 16) >> 16))
+
+/**
+ * lower_32_bits - return bits 0-31 of a number
+ * @n: the number we're accessing
+ */
+#define lower_32_bits(n) ((u32)(n))
+
+/*
+ * abs() handles unsigned and signed longs, ints, shorts and chars.  For all
+ * input types abs() returns a signed long.
+ * abs() should not be used for 64-bit types (s64, u64, long long) - use abs64()
+ * for those.
+ */
+#define abs(x) ({                                              \
+               long ret;                                       \
+               if (sizeof(x) == sizeof(long)) {                \
+                       long __x = (x);                         \
+                       ret = (__x < 0) ? -__x : __x;           \
+               } else {                                        \
+                       int __x = (x);                          \
+                       ret = (__x < 0) ? -__x : __x;           \
+               }                                               \
+               ret;                                            \
+       })
+
+#define abs64(x) ({                            \
+               s64 __x = (x);                  \
+               (__x < 0) ? -__x : __x;         \
+       })
+
+/*
+ * min()/max()/clamp() macros that also do
+ * strict type-checking.. See the
+ * "unnecessary" pointer comparison.
+ */
+#define min(x, y) ({                           \
+       typeof(x) _min1 = (x);                  \
+       typeof(y) _min2 = (y);                  \
+       (void) (&_min1 == &_min2);              \
+       _min1 < _min2 ? _min1 : _min2; })
+
+#define max(x, y) ({                           \
+       typeof(x) _max1 = (x);                  \
+       typeof(y) _max2 = (y);                  \
+       (void) (&_max1 == &_max2);              \
+       _max1 > _max2 ? _max1 : _max2; })
+
+#define min3(x, y, z) min((typeof(x))min(x, y), z)
+#define max3(x, y, z) max((typeof(x))max(x, y), z)
+
+/**
+ * min_not_zero - return the minimum that is _not_ zero, unless both are zero
+ * @x: value1
+ * @y: value2
+ */
+#define min_not_zero(x, y) ({                  \
+       typeof(x) __x = (x);                    \
+       typeof(y) __y = (y);                    \
+       __x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); })
+
+/**
+ * clamp - return a value clamped to a given range with strict typechecking
+ * @val: current value
+ * @lo: lowest allowable value
+ * @hi: highest allowable value
+ *
+ * This macro does strict typechecking of lo/hi to make sure they are of the
+ * same type as val.  See the unnecessary pointer comparisons.
+ */
+#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi)
+
+/*
+ * ..and if you can't take the strict
+ * types, you can specify one yourself.
+ *
+ * Or not use min/max/clamp at all, of course.
+ */
+#define min_t(type, x, y) ({                   \
+       type __min1 = (x);                      \
+       type __min2 = (y);                      \
+       __min1 < __min2 ? __min1: __min2; })
+
+#define max_t(type, x, y) ({                   \
+       type __max1 = (x);                      \
+       type __max2 = (y);                      \
+       __max1 > __max2 ? __max1: __max2; })
+
+/**
+ * clamp_t - return a value clamped to a given range using a given type
+ * @type: the type of variable to use
+ * @val: current value
+ * @lo: minimum allowable value
+ * @hi: maximum allowable value
+ *
+ * This macro does no typechecking and uses temporary variables of type
+ * 'type' to make all the comparisons.
+ */
+#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
+
+/**
+ * clamp_val - return a value clamped to a given range using val's type
+ * @val: current value
+ * @lo: minimum allowable value
+ * @hi: maximum allowable value
+ *
+ * This macro does no typechecking and uses temporary variables of whatever
+ * type the input argument 'val' is.  This is useful when val is an unsigned
+ * type and min and max are literals that will otherwise be assigned a signed
+ * integer type.
+ */
+#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
+
+
+/*
+ * swap - swap value of @a and @b
+ */
+#define swap(a, b) \
+       do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
+
+/**
+ * container_of - cast a member of a structure out to the containing structure
+ * @ptr:       the pointer to the member.
+ * @type:      the type of the container struct this is embedded in.
+ * @member:    the name of the member within the struct.
+ *
+ */
+#define container_of(ptr, type, member) ({                     \
+       const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
+       (type *)( (char *)__mptr - offsetof(type,member) );})
+
+#endif
index 7435fcd0262bd4770159e1bd3ebf6d5a9444a54f..5797498adceceb48c5368d91c3155a59daadb094 100644 (file)
@@ -17,7 +17,9 @@
 #define CPP_ASMLINKAGE
 #endif
 
+#ifndef asmlinkage
 #define asmlinkage CPP_ASMLINKAGE
+#endif
 
 #define SYMBOL_NAME_STR(X)     #X
 #define SYMBOL_NAME(X)         X
diff --git a/include/linux/serial_reg.h b/include/linux/serial_reg.h
new file mode 100644 (file)
index 0000000..9214b67
--- /dev/null
@@ -0,0 +1,388 @@
+/*
+ * include/linux/serial_reg.h
+ *
+ * Copyright (C) 1992, 1994 by Theodore Ts'o.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ * 
+ * These are the UART port assignments, expressed as offsets from the base
+ * register.  These assignments should hold for any serial port based on
+ * a 8250, 16450, or 16550(A).
+ */
+
+#ifndef _LINUX_SERIAL_REG_H
+#define _LINUX_SERIAL_REG_H
+
+/*
+ * DLAB=0
+ */
+#define UART_RX                0       /* In:  Receive buffer */
+#define UART_TX                0       /* Out: Transmit buffer */
+
+#define UART_IER       1       /* Out: Interrupt Enable Register */
+#define UART_IER_MSI           0x08 /* Enable Modem status interrupt */
+#define UART_IER_RLSI          0x04 /* Enable receiver line status interrupt */
+#define UART_IER_THRI          0x02 /* Enable Transmitter holding register int. */
+#define UART_IER_RDI           0x01 /* Enable receiver data interrupt */
+/*
+ * Sleep mode for ST16650 and TI16750.  For the ST16650, EFR[4]=1
+ */
+#define UART_IERX_SLEEP                0x10 /* Enable sleep mode */
+
+#define UART_IIR       2       /* In:  Interrupt ID Register */
+#define UART_IIR_NO_INT                0x01 /* No interrupts pending */
+#define UART_IIR_ID            0x0e /* Mask for the interrupt ID */
+#define UART_IIR_MSI           0x00 /* Modem status interrupt */
+#define UART_IIR_THRI          0x02 /* Transmitter holding register empty */
+#define UART_IIR_RDI           0x04 /* Receiver data interrupt */
+#define UART_IIR_RLSI          0x06 /* Receiver line status interrupt */
+
+#define UART_IIR_BUSY          0x07 /* DesignWare APB Busy Detect */
+
+#define UART_IIR_RX_TIMEOUT    0x0c /* OMAP RX Timeout interrupt */
+#define UART_IIR_XOFF          0x10 /* OMAP XOFF/Special Character */
+#define UART_IIR_CTS_RTS_DSR   0x20 /* OMAP CTS/RTS/DSR Change */
+
+#define UART_FCR       2       /* Out: FIFO Control Register */
+#define UART_FCR_ENABLE_FIFO   0x01 /* Enable the FIFO */
+#define UART_FCR_CLEAR_RCVR    0x02 /* Clear the RCVR FIFO */
+#define UART_FCR_CLEAR_XMIT    0x04 /* Clear the XMIT FIFO */
+#define UART_FCR_DMA_SELECT    0x08 /* For DMA applications */
+/*
+ * Note: The FIFO trigger levels are chip specific:
+ *     RX:76 = 00  01  10  11  TX:54 = 00  01  10  11
+ * PC16550D:    1   4   8  14          xx  xx  xx  xx
+ * TI16C550A:   1   4   8  14          xx  xx  xx  xx
+ * TI16C550C:   1   4   8  14          xx  xx  xx  xx
+ * ST16C550:    1   4   8  14          xx  xx  xx  xx
+ * ST16C650:    8  16  24  28          16   8  24  30  PORT_16650V2
+ * NS16C552:    1   4   8  14          xx  xx  xx  xx
+ * ST16C654:    8  16  56  60           8  16  32  56  PORT_16654
+ * TI16C750:    1  16  32  56          xx  xx  xx  xx  PORT_16750
+ * TI16C752:    8  16  56  60           8  16  32  56
+ * Tegra:       1   4   8  14          16   8   4   1  PORT_TEGRA
+ */
+#define UART_FCR_R_TRIG_00     0x00
+#define UART_FCR_R_TRIG_01     0x40
+#define UART_FCR_R_TRIG_10     0x80
+#define UART_FCR_R_TRIG_11     0xc0
+#define UART_FCR_T_TRIG_00     0x00
+#define UART_FCR_T_TRIG_01     0x10
+#define UART_FCR_T_TRIG_10     0x20
+#define UART_FCR_T_TRIG_11     0x30
+
+#define UART_FCR_TRIGGER_MASK  0xC0 /* Mask for the FIFO trigger range */
+#define UART_FCR_TRIGGER_1     0x00 /* Mask for trigger set at 1 */
+#define UART_FCR_TRIGGER_4     0x40 /* Mask for trigger set at 4 */
+#define UART_FCR_TRIGGER_8     0x80 /* Mask for trigger set at 8 */
+#define UART_FCR_TRIGGER_14    0xC0 /* Mask for trigger set at 14 */
+/* 16650 definitions */
+#define UART_FCR6_R_TRIGGER_8  0x00 /* Mask for receive trigger set at 1 */
+#define UART_FCR6_R_TRIGGER_16 0x40 /* Mask for receive trigger set at 4 */
+#define UART_FCR6_R_TRIGGER_24  0x80 /* Mask for receive trigger set at 8 */
+#define UART_FCR6_R_TRIGGER_28 0xC0 /* Mask for receive trigger set at 14 */
+#define UART_FCR6_T_TRIGGER_16 0x00 /* Mask for transmit trigger set at 16 */
+#define UART_FCR6_T_TRIGGER_8  0x10 /* Mask for transmit trigger set at 8 */
+#define UART_FCR6_T_TRIGGER_24  0x20 /* Mask for transmit trigger set at 24 */
+#define UART_FCR6_T_TRIGGER_30 0x30 /* Mask for transmit trigger set at 30 */
+#define UART_FCR7_64BYTE       0x20 /* Go into 64 byte mode (TI16C750) */
+
+#define UART_LCR       3       /* Out: Line Control Register */
+/*
+ * Note: if the word length is 5 bits (UART_LCR_WLEN5), then setting 
+ * UART_LCR_STOP will select 1.5 stop bits, not 2 stop bits.
+ */
+#define UART_LCR_DLAB          0x80 /* Divisor latch access bit */
+#define UART_LCR_SBC           0x40 /* Set break control */
+#define UART_LCR_SPAR          0x20 /* Stick parity (?) */
+#define UART_LCR_EPAR          0x10 /* Even parity select */
+#define UART_LCR_PARITY                0x08 /* Parity Enable */
+#define UART_LCR_STOP          0x04 /* Stop bits: 0=1 bit, 1=2 bits */
+#define UART_LCR_WLEN5         0x00 /* Wordlength: 5 bits */
+#define UART_LCR_WLEN6         0x01 /* Wordlength: 6 bits */
+#define UART_LCR_WLEN7         0x02 /* Wordlength: 7 bits */
+#define UART_LCR_WLEN8         0x03 /* Wordlength: 8 bits */
+
+/*
+ * Access to some registers depends on register access / configuration
+ * mode.
+ */
+#define UART_LCR_CONF_MODE_A   UART_LCR_DLAB   /* Configutation mode A */
+#define UART_LCR_CONF_MODE_B   0xBF            /* Configutation mode B */
+
+#define UART_MCR       4       /* Out: Modem Control Register */
+#define UART_MCR_CLKSEL                0x80 /* Divide clock by 4 (TI16C752, EFR[4]=1) */
+#define UART_MCR_TCRTLR                0x40 /* Access TCR/TLR (TI16C752, EFR[4]=1) */
+#define UART_MCR_XONANY                0x20 /* Enable Xon Any (TI16C752, EFR[4]=1) */
+#define UART_MCR_AFE           0x20 /* Enable auto-RTS/CTS (TI16C550C/TI16C750) */
+#define UART_MCR_LOOP          0x10 /* Enable loopback test mode */
+#define UART_MCR_OUT2          0x08 /* Out2 complement */
+#define UART_MCR_OUT1          0x04 /* Out1 complement */
+#define UART_MCR_RTS           0x02 /* RTS complement */
+#define UART_MCR_DTR           0x01 /* DTR complement */
+
+#define UART_LSR       5       /* In:  Line Status Register */
+#define UART_LSR_FIFOE         0x80 /* Fifo error */
+#define UART_LSR_TEMT          0x40 /* Transmitter empty */
+#define UART_LSR_THRE          0x20 /* Transmit-hold-register empty */
+#define UART_LSR_BI            0x10 /* Break interrupt indicator */
+#define UART_LSR_FE            0x08 /* Frame error indicator */
+#define UART_LSR_PE            0x04 /* Parity error indicator */
+#define UART_LSR_OE            0x02 /* Overrun error indicator */
+#define UART_LSR_DR            0x01 /* Receiver data ready */
+#define UART_LSR_BRK_ERROR_BITS        0x1E /* BI, FE, PE, OE bits */
+
+#define UART_MSR       6       /* In:  Modem Status Register */
+#define UART_MSR_DCD           0x80 /* Data Carrier Detect */
+#define UART_MSR_RI            0x40 /* Ring Indicator */
+#define UART_MSR_DSR           0x20 /* Data Set Ready */
+#define UART_MSR_CTS           0x10 /* Clear to Send */
+#define UART_MSR_DDCD          0x08 /* Delta DCD */
+#define UART_MSR_TERI          0x04 /* Trailing edge ring indicator */
+#define UART_MSR_DDSR          0x02 /* Delta DSR */
+#define UART_MSR_DCTS          0x01 /* Delta CTS */
+#define UART_MSR_ANY_DELTA     0x0F /* Any of the delta bits! */
+
+#define UART_SCR       7       /* I/O: Scratch Register */
+
+/*
+ * DLAB=1
+ */
+#define UART_DLL       0       /* Out: Divisor Latch Low */
+#define UART_DLM       1       /* Out: Divisor Latch High */
+
+/*
+ * LCR=0xBF (or DLAB=1 for 16C660)
+ */
+#define UART_EFR       2       /* I/O: Extended Features Register */
+#define UART_XR_EFR    9       /* I/O: Extended Features Register (XR17D15x) */
+#define UART_EFR_CTS           0x80 /* CTS flow control */
+#define UART_EFR_RTS           0x40 /* RTS flow control */
+#define UART_EFR_SCD           0x20 /* Special character detect */
+#define UART_EFR_ECB           0x10 /* Enhanced control bit */
+/*
+ * the low four bits control software flow control
+ */
+
+/*
+ * LCR=0xBF, TI16C752, ST16650, ST16650A, ST16654
+ */
+#define UART_XON1      4       /* I/O: Xon character 1 */
+#define UART_XON2      5       /* I/O: Xon character 2 */
+#define UART_XOFF1     6       /* I/O: Xoff character 1 */
+#define UART_XOFF2     7       /* I/O: Xoff character 2 */
+
+/*
+ * EFR[4]=1 MCR[6]=1, TI16C752
+ */
+#define UART_TI752_TCR 6       /* I/O: transmission control register */
+#define UART_TI752_TLR 7       /* I/O: trigger level register */
+
+/*
+ * LCR=0xBF, XR16C85x
+ */
+#define UART_TRG       0       /* FCTR bit 7 selects Rx or Tx
+                                * In: Fifo count
+                                * Out: Fifo custom trigger levels */
+/*
+ * These are the definitions for the Programmable Trigger Register
+ */
+#define UART_TRG_1             0x01
+#define UART_TRG_4             0x04
+#define UART_TRG_8             0x08
+#define UART_TRG_16            0x10
+#define UART_TRG_32            0x20
+#define UART_TRG_64            0x40
+#define UART_TRG_96            0x60
+#define UART_TRG_120           0x78
+#define UART_TRG_128           0x80
+
+#define UART_FCTR      1       /* Feature Control Register */
+#define UART_FCTR_RTS_NODELAY  0x00  /* RTS flow control delay */
+#define UART_FCTR_RTS_4DELAY   0x01
+#define UART_FCTR_RTS_6DELAY   0x02
+#define UART_FCTR_RTS_8DELAY   0x03
+#define UART_FCTR_IRDA         0x04  /* IrDa data encode select */
+#define UART_FCTR_TX_INT       0x08  /* Tx interrupt type select */
+#define UART_FCTR_TRGA         0x00  /* Tx/Rx 550 trigger table select */
+#define UART_FCTR_TRGB         0x10  /* Tx/Rx 650 trigger table select */
+#define UART_FCTR_TRGC         0x20  /* Tx/Rx 654 trigger table select */
+#define UART_FCTR_TRGD         0x30  /* Tx/Rx 850 programmable trigger select */
+#define UART_FCTR_SCR_SWAP     0x40  /* Scratch pad register swap */
+#define UART_FCTR_RX           0x00  /* Programmable trigger mode select */
+#define UART_FCTR_TX           0x80  /* Programmable trigger mode select */
+
+/*
+ * LCR=0xBF, FCTR[6]=1
+ */
+#define UART_EMSR      7       /* Extended Mode Select Register */
+#define UART_EMSR_FIFO_COUNT   0x01  /* Rx/Tx select */
+#define UART_EMSR_ALT_COUNT    0x02  /* Alternating count select */
+
+/*
+ * The Intel XScale on-chip UARTs define these bits
+ */
+#define UART_IER_DMAE  0x80    /* DMA Requests Enable */
+#define UART_IER_UUE   0x40    /* UART Unit Enable */
+#define UART_IER_NRZE  0x20    /* NRZ coding Enable */
+#define UART_IER_RTOIE 0x10    /* Receiver Time Out Interrupt Enable */
+
+#define UART_IIR_TOD   0x08    /* Character Timeout Indication Detected */
+
+#define UART_FCR_PXAR1 0x00    /* receive FIFO threshold = 1 */
+#define UART_FCR_PXAR8 0x40    /* receive FIFO threshold = 8 */
+#define UART_FCR_PXAR16        0x80    /* receive FIFO threshold = 16 */
+#define UART_FCR_PXAR32        0xc0    /* receive FIFO threshold = 32 */
+
+/*
+ * Intel MID on-chip HSU (High Speed UART) defined bits
+ */
+#define UART_FCR_HSU_64_1B     0x00    /* receive FIFO treshold = 1 */
+#define UART_FCR_HSU_64_16B    0x40    /* receive FIFO treshold = 16 */
+#define UART_FCR_HSU_64_32B    0x80    /* receive FIFO treshold = 32 */
+#define UART_FCR_HSU_64_56B    0xc0    /* receive FIFO treshold = 56 */
+
+#define UART_FCR_HSU_16_1B     0x00    /* receive FIFO treshold = 1 */
+#define UART_FCR_HSU_16_4B     0x40    /* receive FIFO treshold = 4 */
+#define UART_FCR_HSU_16_8B     0x80    /* receive FIFO treshold = 8 */
+#define UART_FCR_HSU_16_14B    0xc0    /* receive FIFO treshold = 14 */
+
+#define UART_FCR_HSU_64B_FIFO  0x20    /* chose 64 bytes FIFO */
+#define UART_FCR_HSU_16B_FIFO  0x00    /* chose 16 bytes FIFO */
+
+#define UART_FCR_HALF_EMPT_TXI 0x00    /* trigger TX_EMPT IRQ for half empty */
+#define UART_FCR_FULL_EMPT_TXI 0x08    /* trigger TX_EMPT IRQ for full empty */
+
+/*
+ * These register definitions are for the 16C950
+ */
+#define UART_ASR       0x01    /* Additional Status Register */
+#define UART_RFL       0x03    /* Receiver FIFO level */
+#define UART_TFL       0x04    /* Transmitter FIFO level */
+#define UART_ICR       0x05    /* Index Control Register */
+
+/* The 16950 ICR registers */
+#define UART_ACR       0x00    /* Additional Control Register */
+#define UART_CPR       0x01    /* Clock Prescalar Register */
+#define UART_TCR       0x02    /* Times Clock Register */
+#define UART_CKS       0x03    /* Clock Select Register */
+#define UART_TTL       0x04    /* Transmitter Interrupt Trigger Level */
+#define UART_RTL       0x05    /* Receiver Interrupt Trigger Level */
+#define UART_FCL       0x06    /* Flow Control Level Lower */
+#define UART_FCH       0x07    /* Flow Control Level Higher */
+#define UART_ID1       0x08    /* ID #1 */
+#define UART_ID2       0x09    /* ID #2 */
+#define UART_ID3       0x0A    /* ID #3 */
+#define UART_REV       0x0B    /* Revision */
+#define UART_CSR       0x0C    /* Channel Software Reset */
+#define UART_NMR       0x0D    /* Nine-bit Mode Register */
+#define UART_CTR       0xFF
+
+/*
+ * The 16C950 Additional Control Register
+ */
+#define UART_ACR_RXDIS 0x01    /* Receiver disable */
+#define UART_ACR_TXDIS 0x02    /* Transmitter disable */
+#define UART_ACR_DSRFC 0x04    /* DSR Flow Control */
+#define UART_ACR_TLENB 0x20    /* 950 trigger levels enable */
+#define UART_ACR_ICRRD 0x40    /* ICR Read enable */
+#define UART_ACR_ASREN 0x80    /* Additional status enable */
+
+
+
+/*
+ * These definitions are for the RSA-DV II/S card, from
+ *
+ * Kiyokazu SUTO <suto@ks-and-ks.ne.jp>
+ */
+
+#define UART_RSA_BASE (-8)
+
+#define UART_RSA_MSR ((UART_RSA_BASE) + 0) /* I/O: Mode Select Register */
+
+#define UART_RSA_MSR_SWAP (1 << 0) /* Swap low/high 8 bytes in I/O port addr */
+#define UART_RSA_MSR_FIFO (1 << 2) /* Enable the external FIFO */
+#define UART_RSA_MSR_FLOW (1 << 3) /* Enable the auto RTS/CTS flow control */
+#define UART_RSA_MSR_ITYP (1 << 4) /* Level (1) / Edge triger (0) */
+
+#define UART_RSA_IER ((UART_RSA_BASE) + 1) /* I/O: Interrupt Enable Register */
+
+#define UART_RSA_IER_Rx_FIFO_H (1 << 0) /* Enable Rx FIFO half full int. */
+#define UART_RSA_IER_Tx_FIFO_H (1 << 1) /* Enable Tx FIFO half full int. */
+#define UART_RSA_IER_Tx_FIFO_E (1 << 2) /* Enable Tx FIFO empty int. */
+#define UART_RSA_IER_Rx_TOUT (1 << 3) /* Enable char receive timeout int */
+#define UART_RSA_IER_TIMER (1 << 4) /* Enable timer interrupt */
+
+#define UART_RSA_SRR ((UART_RSA_BASE) + 2) /* IN: Status Read Register */
+
+#define UART_RSA_SRR_Tx_FIFO_NEMP (1 << 0) /* Tx FIFO is not empty (1) */
+#define UART_RSA_SRR_Tx_FIFO_NHFL (1 << 1) /* Tx FIFO is not half full (1) */
+#define UART_RSA_SRR_Tx_FIFO_NFUL (1 << 2) /* Tx FIFO is not full (1) */
+#define UART_RSA_SRR_Rx_FIFO_NEMP (1 << 3) /* Rx FIFO is not empty (1) */
+#define UART_RSA_SRR_Rx_FIFO_NHFL (1 << 4) /* Rx FIFO is not half full (1) */
+#define UART_RSA_SRR_Rx_FIFO_NFUL (1 << 5) /* Rx FIFO is not full (1) */
+#define UART_RSA_SRR_Rx_TOUT (1 << 6) /* Character reception timeout occurred (1) */
+#define UART_RSA_SRR_TIMER (1 << 7) /* Timer interrupt occurred */
+
+#define UART_RSA_FRR ((UART_RSA_BASE) + 2) /* OUT: FIFO Reset Register */
+
+#define UART_RSA_TIVSR ((UART_RSA_BASE) + 3) /* I/O: Timer Interval Value Set Register */
+
+#define UART_RSA_TCR ((UART_RSA_BASE) + 4) /* OUT: Timer Control Register */
+
+#define UART_RSA_TCR_SWITCH (1 << 0) /* Timer on */
+
+/*
+ * The RSA DSV/II board has two fixed clock frequencies.  One is the
+ * standard rate, and the other is 8 times faster.
+ */
+#define SERIAL_RSA_BAUD_BASE (921600)
+#define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8)
+
+/*
+ * Extra serial register definitions for the internal UARTs
+ * in TI OMAP processors.
+ */
+#define UART_OMAP_MDR1         0x08    /* Mode definition register */
+#define UART_OMAP_MDR2         0x09    /* Mode definition register 2 */
+#define UART_OMAP_SCR          0x10    /* Supplementary control register */
+#define UART_OMAP_SSR          0x11    /* Supplementary status register */
+#define UART_OMAP_EBLR         0x12    /* BOF length register */
+#define UART_OMAP_OSC_12M_SEL  0x13    /* OMAP1510 12MHz osc select */
+#define UART_OMAP_MVER         0x14    /* Module version register */
+#define UART_OMAP_SYSC         0x15    /* System configuration register */
+#define UART_OMAP_SYSS         0x16    /* System status register */
+#define UART_OMAP_WER          0x17    /* Wake-up enable register */
+
+/*
+ * These are the definitions for the MDR1 register
+ */
+#define UART_OMAP_MDR1_16X_MODE                0x00    /* UART 16x mode */
+#define UART_OMAP_MDR1_SIR_MODE                0x01    /* SIR mode */
+#define UART_OMAP_MDR1_16X_ABAUD_MODE  0x02    /* UART 16x auto-baud */
+#define UART_OMAP_MDR1_13X_MODE                0x03    /* UART 13x mode */
+#define UART_OMAP_MDR1_MIR_MODE                0x04    /* MIR mode */
+#define UART_OMAP_MDR1_FIR_MODE                0x05    /* FIR mode */
+#define UART_OMAP_MDR1_CIR_MODE                0x06    /* CIR mode */
+#define UART_OMAP_MDR1_DISABLE         0x07    /* Disable (default state) */
+
+/*
+ * These are definitions for the Exar XR17V35X and XR17(C|D)15X
+ */
+#define UART_EXAR_8XMODE       0x88    /* 8X sampling rate select */
+#define UART_EXAR_SLEEP                0x8b    /* Sleep mode */
+#define UART_EXAR_DVID         0x8d    /* Device identification */
+
+#define UART_EXAR_FCTR         0x08    /* Feature Control Register */
+#define UART_FCTR_EXAR_IRDA    0x08    /* IrDa data encode select */
+#define UART_FCTR_EXAR_485     0x10    /* Auto 485 half duplex dir ctl */
+#define UART_FCTR_EXAR_TRGA    0x00    /* FIFO trigger table A */
+#define UART_FCTR_EXAR_TRGB    0x60    /* FIFO trigger table B */
+#define UART_FCTR_EXAR_TRGC    0x80    /* FIFO trigger table C */
+#define UART_FCTR_EXAR_TRGD    0xc0    /* FIFO trigger table D programmable */
+
+#define UART_EXAR_TXTRG                0x0a    /* Tx FIFO trigger level write-only */
+#define UART_EXAR_RXTRG                0x0b    /* Rx FIFO trigger level write-only */
+
+#endif /* _LINUX_SERIAL_REG_H */
+
index 96348d617fca34c4abfbf00759a84b8178d8aae9..c7047ba0bca6a8bd191013eae45aea7307b71552 100644 (file)
@@ -30,6 +30,9 @@ extern char * strcpy(char *,const char *);
 #ifndef __HAVE_ARCH_STRNCPY
 extern char * strncpy(char *,const char *, __kernel_size_t);
 #endif
+#ifndef __HAVE_ARCH_STRLCPY
+size_t strlcpy(char *, const char *, size_t);
+#endif
 #ifndef __HAVE_ARCH_STRCAT
 extern char * strcat(char *, const char *);
 #endif
index 82630adc7113b77e1a2a290e86bfcf0a22b6310d..cb166e6a6c62098d8c0edc609ef0198192a8d664 100644 (file)
 #define OMAP_XHCI_BASE 0x488d0000
 #define OMAP_OCP1_SCP_BASE 0x4A081000
 #define OMAP_OTG_WRAPPER_BASE 0x488c0000
+#elif defined CONFIG_AM57XX
+#define OMAP_XHCI_BASE 0x48890000
+#define OMAP_OCP1_SCP_BASE 0x4A084c00
+#define OMAP_OTG_WRAPPER_BASE 0x48880000
 #elif defined CONFIG_AM43XX
 #define OMAP_XHCI_BASE 0x483d0000
 #define OMAP_OCP1_SCP_BASE 0x483E8000
index c33f3b494eb95b4390c5c2192295fa8f85937edb..5df634873f147f93fb444b9621abf07e1e6e21e1 100644 (file)
@@ -872,33 +872,46 @@ extern Void_t*     sbrk();
 
 #else
 
-#ifdef USE_DL_PREFIX
-#define cALLOc         dlcalloc
-#define fREe           dlfree
-#define mALLOc         dlmalloc
-#define mEMALIGn       dlmemalign
-#define rEALLOc                dlrealloc
-#define vALLOc         dlvalloc
-#define pvALLOc                dlpvalloc
-#define mALLINFo       dlmallinfo
-#define mALLOPt                dlmallopt
-#else /* USE_DL_PREFIX */
-#define cALLOc         calloc
-#define fREe           free
-#define mALLOc         malloc
-#define mEMALIGn       memalign
-#define rEALLOc                realloc
-#define vALLOc         valloc
-#define pvALLOc                pvalloc
-#define mALLINFo       mallinfo
-#define mALLOPt                mallopt
-#endif /* USE_DL_PREFIX */
+#ifdef CONFIG_SYS_MALLOC_SIMPLE
+#define malloc malloc_simple
+#define realloc realloc_simple
+#define memalign memalign_simple
+static inline void free(void *ptr) {}
+void *calloc(size_t nmemb, size_t size);
+void *memalign_simple(size_t alignment, size_t bytes);
+void *realloc_simple(void *ptr, size_t size);
+#else
+
+# ifdef USE_DL_PREFIX
+# define cALLOc                dlcalloc
+# define fREe          dlfree
+# define mALLOc                dlmalloc
+# define mEMALIGn      dlmemalign
+# define rEALLOc               dlrealloc
+# define vALLOc                dlvalloc
+# define pvALLOc               dlpvalloc
+# define mALLINFo      dlmallinfo
+# define mALLOPt               dlmallopt
+# else /* USE_DL_PREFIX */
+# define cALLOc                calloc
+# define fREe          free
+# define mALLOc                malloc
+# define mEMALIGn      memalign
+# define rEALLOc               realloc
+# define vALLOc                valloc
+# define pvALLOc               pvalloc
+# define mALLINFo      mallinfo
+# define mALLOPt               mallopt
+# endif /* USE_DL_PREFIX */
 
 #endif
 
 /* Public routines */
 
-#if __STD_C
+/* Simple versions which can be used when space is tight */
+void *malloc_simple(size_t size);
+
+# if __STD_C
 
 Void_t* mALLOc(size_t);
 void    fREe(Void_t*);
@@ -913,7 +926,7 @@ size_t  malloc_usable_size(Void_t*);
 void    malloc_stats(void);
 int     mALLOPt(int, int);
 struct mallinfo mALLINFo(void);
-#else
+# else
 Void_t* mALLOc();
 void    fREe();
 Void_t* rEALLOc();
@@ -927,6 +940,7 @@ size_t  malloc_usable_size();
 void    malloc_stats();
 int     mALLOPt();
 struct mallinfo mALLINFo();
+# endif
 #endif
 
 /*
index d74a190eea066684a072e477a9fe52fb6640b20d..7ec255d882199c88dc7bf79f52857c87a796a46c 100644 (file)
@@ -31,6 +31,7 @@
 #define MMC_VERSION_4_3                (MMC_VERSION_MMC | 0x403)
 #define MMC_VERSION_4_41       (MMC_VERSION_MMC | 0x429)
 #define MMC_VERSION_4_5                (MMC_VERSION_MMC | 0x405)
+#define MMC_VERSION_5_0                (MMC_VERSION_MMC | 0x500)
 
 #define MMC_MODE_HS            (1 << 0)
 #define MMC_MODE_HS_52MHz      (1 << 1)
  * EXT_CSD fields
  */
 #define EXT_CSD_GP_SIZE_MULT           143     /* R/W */
+#define EXT_CSD_PARTITION_SETTING      155     /* R/W */
 #define EXT_CSD_PARTITIONS_ATTRIBUTE   156     /* R/W */
 #define EXT_CSD_PARTITIONING_SUPPORT   160     /* RO */
 #define EXT_CSD_RST_N_FUNCTION         162     /* R/W */
 #define EXT_CSD_BOOT_BUS_WIDTH_RESET(x)        (x << 2)
 #define EXT_CSD_BOOT_BUS_WIDTH_WIDTH(x)        (x)
 
+#define EXT_CSD_PARTITION_SETTING_COMPLETED    (1 << 0)
+
 #define R1_ILLEGAL_COMMAND             (1 << 22)
 #define R1_APP_CMD                     (1 << 5)
 
@@ -314,6 +318,7 @@ struct mmc {
        char init_in_progress;  /* 1 if we have done mmc_start_init() */
        char preinit;           /* start init as early as possible */
        uint op_cond_response;  /* the response byte from the last op_cond */
+       int ddr_mode;
 };
 
 int mmc_register(struct mmc *mmc);
@@ -385,6 +390,7 @@ struct mmc *mmc_spi_init(uint bus, uint cs, uint speed, uint mode);
 int mmc_legacy_init(int verbose);
 #endif
 
+void board_mmc_power_init(void);
 int board_mmc_init(bd_t *bis);
 int cpu_mmc_init(bd_t *bis);
 int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr);
diff --git a/include/mpc824x.h b/include/mpc824x.h
deleted file mode 100644 (file)
index 31d6f69..0000000
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * Copyright Rob Taylor, Flying Pig Systems Ltd. 2000.
- * Copyright (C) 2001, James Dougherty, jfd@cs.stanford.edu
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MPC824X_H__
-#define __MPC824X_H__
-
-#include <config.h>
-
-/* CPU Types */
-#define CPU_TYPE_601           0x01            /* PPC 601       CPU */
-#define CPU_TYPE_602           0x02            /* PPC 602       CPU */
-#define CPU_TYPE_603           0x03            /* PPC 603       CPU */
-#define CPU_TYPE_603E          0x06            /* PPC 603e      CPU */
-#define CPU_TYPE_603P          0x07            /* PPC 603p      CPU */
-#define CPU_TYPE_604           0x04            /* PPC 604       CPU */
-#define CPU_TYPE_604E          0x09            /* PPC 604e      CPU */
-#define CPU_TYPE_604R          0x0a            /* PPC 604r      CPU */
-#define CPU_TYPE_750           0x08            /* PPC 750       CPU */
-#define CPU_TYPE_8240          0x81            /* PPC 8240      CPU */
-#define CPU_TYPE_8245          0x8081          /* PPC 8245/8241 CPU */
-#define _CACHE_ALIGN_SIZE      32              /* cache line size */
-
-/* spr976 - DMISS data tlb miss address register
- * spr977 - DCMP data tlb miss compare register
- * spr978 - HASH1 PTEG1 address register
- * spr980 - HASH2 PTEG2 address register
- * IMISS  - instruction tlb miss address register
- * ICMP          - instruction TLB mis compare register
- * RPA   - real page address register
- * HID0          - hardware implemntation register
- * HID2          - instruction address breakpoint register
- */
-
-/* Kahlua/MPC8240 defines */
-#define VEN_DEV_ID             0x00021057      /* Vendor and Dev. ID for MPC106 */
-#define KAHLUA_ID              0x00031057      /* Vendor & Dev Id for Kahlua's PCI */
-#define KAHLUA2_ID             0x00061057      /* 8245 is aka Kahlua-2 */
-#define BMC_BASE               0x80000000      /* Kahlua ID in PCI Memory space */
-#define CHRP_REG_ADDR          0xfec00000      /* MPC107 Config, Map B */
-#define CHRP_REG_DATA          0xfee00000      /* MPC107 Config, Map B */
-#define CHRP_ISA_MEM_PHYS      0xfd000000
-#define CHRP_ISA_MEM_BUS       0x00000000
-#define CHRP_ISA_MEM_SIZE      0x01000000
-#define CHRP_ISA_IO_PHYS       0xfe000000
-#define CHRP_ISA_IO_BUS                0x00000000
-#define CHRP_ISA_IO_SIZE       0x00800000
-#define CHRP_PCI_IO_PHYS       0xfe800000
-#define CHRP_PCI_IO_BUS                0x00800000
-#define CHRP_PCI_IO_SIZE       0x00400000
-#define CHRP_PCI_MEM_PHYS      0x80000000
-#define CHRP_PCI_MEM_BUS       0x80000000
-#define CHRP_PCI_MEM_SIZE      0x7d000000
-#define        CHRP_PCI_MEMORY_PHYS    0x00000000
-#define        CHRP_PCI_MEMORY_BUS     0x00000000
-#define CHRP_PCI_MEMORY_SIZE   0x40000000
-#define PREP_REG_ADDR          0x80000cf8      /* MPC107 Config, Map A */
-#define PREP_REG_DATA          0x80000cfc      /* MPC107 Config, Map A */
-#define PREP_ISA_IO_PHYS       0x80000000
-#define PREP_ISA_IO_BUS                0x00000000
-#define PREP_ISA_IO_SIZE       0x00800000
-#define PREP_PCI_IO_PHYS       0x81000000
-#define PREP_PCI_IO_BUS                0x01000000
-#define PREP_PCI_IO_SIZE       0x3e800000
-#define PREP_PCI_MEM_PHYS      0xc0000000
-#define PREP_PCI_MEM_BUS       0x00000000
-#define PREP_PCI_MEM_SIZE      0x3f000000
-#define        PREP_PCI_MEMORY_PHYS    0x00000000
-#define        PREP_PCI_MEMORY_BUS     0x80000000
-#define        PREP_PCI_MEMORY_SIZE    0x80000000
-#define MPC107_PCI_CMD         0x80000004      /* MPC107 PCI cmd reg */
-#define MPC107_PCI_STAT                0x80000006      /* MPC107 PCI status reg */
-#define PROC_INT1_ADR          0x800000a8      /* MPC107 Processor i/f cfg1 */
-#define PROC_INT2_ADR          0x800000ac      /* MPC107 Processor i/f cfg2 */
-#define MEM_CONT1_ADR          0x800000f0      /* MPC107 Memory control config. 1 */
-#define MEM_CONT2_ADR          0x800000f4      /* MPC107 Memory control config. 2 */
-#define MEM_CONT3_ADR          0x800000f8      /* MPC107 Memory control config. 3 */
-#define MEM_CONT4_ADR          0x800000fc      /* MPC107 Memory control config. 4 */
-#define MEM_ERREN1_ADR         0x800000c0      /* MPC107 Memory error enable 1 */
-#define MEM_START1_ADR         0x80000080      /* MPC107 Memory starting addr */
-#define MEM_START2_ADR         0x80000084      /* MPC107 Memory starting addr-lo */
-#define XMEM_START1_ADR                0x80000088      /* MPC107 Extended mem. start addr-hi*/
-#define XMEM_START2_ADR                0x8000008c      /* MPC107 Extended mem. start addr-lo*/
-#define MEM_END1_ADR           0x80000090      /* MPC107 Memory ending address */
-#define MEM_END2_ADR           0x80000094      /* MPC107 Memory ending addr-lo */
-#define XMEM_END1_ADR          0x80000098      /* MPC107 Extended mem. end addrs-hi */
-#define XMEM_END2_ADR          0x8000009c      /* MPC107 Extended mem. end addrs-lo*/
-#define OUT_DRV_CONT           0x80000073      /* MPC107 Output Driver Control reg */
-#define MEM_EN_ADR             0x800000a0      /* Memory bank enable */
-#define PAGE_MODE              0x800000a3      /* MPC107 Page Mode Counter/Timer */
-
-/*-----------------------------------------------------------------------
- * Exception offsets (PowerPC standard)
- */
-#define EXC_OFF_RESERVED0      0x0000  /* Reserved */
-#define EXC_OFF_SYS_RESET      0x0100  /* System reset */
-#define EXC_OFF_MACH_CHCK      0x0200  /* Machine Check */
-#define EXC_OFF_DATA_STOR      0x0300  /* Data Storage */
-#define EXC_OFF_INS_STOR       0x0400  /* Instruction Storage */
-#define EXC_OFF_EXTERNAL       0x0500  /* External */
-#define EXC_OFF_ALIGN          0x0600  /* Alignment */
-#define EXC_OFF_PROGRAM                0x0700  /* Program */
-#define EXC_OFF_FPUNAVAIL      0x0800  /* Floating-point Unavailable */
-#define EXC_OFF_DECR           0x0900  /* Decrementer */
-#define EXC_OFF_RESERVED1      0x0A00  /* Reserved */
-#define EXC_OFF_RESERVED2      0x0B00  /* Reserved */
-#define EXC_OFF_SYS_CALL       0x0C00  /* System Call */
-#define EXC_OFF_TRACE          0x0D00  /* Trace */
-#define EXC_OFF_FPUNASSIST     0x0E00  /* Floating-point Assist */
-
-       /* 0x0E10 - 0x0FFF are marked reserved in The PowerPC Architecture book */
-       /* these found in DINK code  - may not apply to 8240*/
-#define EXC_OFF_PMI            0x0F00  /* Performance Monitoring Interrupt */
-#define EXC_OFF_VMXUI          0x0F20  /* VMX (AltiVec) Unavailable Interrupt */
-
-       /* 0x1000 - 0x2FFF are implementation specific */
-       /* these found in DINK code  - may not apply to 8240 */
-#define EXC_OFF_ITME           0x1000  /* Instruction Translation Miss Exception */
-#define EXC_OFF_DLTME          0x1100  /* Data Load Translation Miss Exception */
-#define EXC_OFF_DSTME          0x1200  /* Data Store Translation Miss Exception */
-#define EXC_OFF_IABE           0x1300  /* Instruction Addr Breakpoint Exception */
-#define EXC_OFF_SMIE           0x1400  /* System Management Interrupt Exception */
-#define EXC_OFF_JMDDI          0x1600  /* Java Mode denorm detect Interr -- WTF??*/
-#define EXC_OFF_RMTE           0x2000  /* Run Mode or Trace Exception */
-
-#define _START_OFFSET          EXC_OFF_SYS_RESET
-
-#define MAP_A_CONFIG_ADDR_HIGH 0x8000  /* Upper half of CONFIG_ADDR for Map A */
-#define MAP_A_CONFIG_ADDR_LOW  0x0CF8  /* Lower half of CONFIG_ADDR for Map A */
-#define MAP_A_CONFIG_DATA_HIGH 0x8000  /* Upper half of CONFIG_DAT for Map A */
-#define MAP_A_CONFIG_DATA_LOW  0x0CFC  /* Lower half of CONFIG_DAT for Map A */
-#define MAP_B_CONFIG_ADDR_HIGH 0xfec0  /* Upper half of CONFIG_ADDR for Map B */
-#define MAP_B_CONFIG_ADDR_LOW  0x0000  /* Lower half of CONFIG_ADDR for Map B */
-#define MAP_B_CONFIG_DATA_HIGH 0xfee0  /* Upper half of CONFIG_DAT for Map B */
-#define MAP_B_CONFIG_DATA_LOW  0x0000  /* Lower half of CONFIG_DAT for Map B */
-
-
-#if defined(CONFIG_SYS_ADDR_MAP_A)
-#define CONFIG_ADDR_HIGH    MAP_A_CONFIG_ADDR_HIGH  /* Upper half of CONFIG_ADDR */
-#define CONFIG_ADDR_LOW            MAP_A_CONFIG_ADDR_LOW   /* Lower half of CONFIG_ADDR */
-#define CONFIG_DATA_HIGH    MAP_A_CONFIG_DATA_HIGH  /* Upper half of CONFIG_DAT */
-#define CONFIG_DATA_LOW            MAP_A_CONFIG_DATA_LOW   /* Lower half of CONFIG_DAT */
-#else /* Assume Map B, default */
-#define CONFIG_ADDR_HIGH    MAP_B_CONFIG_ADDR_HIGH  /* Upper half of CONFIG_ADDR */
-#define CONFIG_ADDR_LOW            MAP_B_CONFIG_ADDR_LOW   /* Lower half of CONFIG_ADDR */
-#define CONFIG_DATA_HIGH    MAP_B_CONFIG_DATA_HIGH  /* Upper half of CONFIG_DAT */
-#define CONFIG_DATA_LOW            MAP_B_CONFIG_DATA_LOW   /* Lower half of CONFIG_DAT */
-#endif
-
-#define CONFIG_ADDR    (CONFIG_ADDR_HIGH << 16 | CONFIG_ADDR_LOW)
-
-#define CONFIG_DATA    (CONFIG_DATA_HIGH << 16 | CONFIG_DATA_LOW)
-
-/* Macros to write to config registers. addr should be a constant in all cases */
-
-#define CONFIG_WRITE_BYTE( addr, data ) \
-  __asm__ __volatile__( \
-  " stwbrx %1, 0, %0\n \
-    sync\n \
-    stb %3, %4(%2)\n \
-    sync " \
-  : /* no output */ \
-  : "r" (CONFIG_ADDR), "r" ((addr) & ~3), \
-    "b" (CONFIG_DATA), "r" (data), \
-    "n" ((addr) & 3));
-
-#define CONFIG_WRITE_HALFWORD( addr, data ) \
-  __asm__ __volatile__( \
-  " stwbrx %1, 0, %0\n \
-    sync\n \
-    sthbrx %3, %4, %2\n \
-    sync " \
-  : /* no output */ \
-  : "r" (CONFIG_ADDR), "r" ((addr) & ~3), \
-    "r" (CONFIG_DATA), "r" (data), \
-    "b" ((addr) & 3));
-
-/* this assumes it's writeing on word boundaries*/
-#define CONFIG_WRITE_WORD( addr, data ) \
-  __asm__ __volatile__( \
-  " stwbrx %1, 0, %0\n \
-    sync\n \
-    stwbrx %3, 0, %2\n \
-    sync " \
-  : /* no output */ \
-  : "r" (CONFIG_ADDR), "r" (addr), \
-    "r" (CONFIG_DATA), "r" (data));
-
-/* Configuration register reads*/
-
-#define CONFIG_READ_BYTE( addr, reg ) \
-  __asm__ ( \
-  " stwbrx %1, 0, %2\n \
-    sync\n \
-    lbz          %0, %4(%3)\n \
-    sync " \
-  : "=r" (reg) \
-  : "r" ((addr) & ~3), "r" (CONFIG_ADDR), \
-    "b" (CONFIG_DATA), "n" ((addr) & 3));
-
-
-#define CONFIG_READ_HALFWORD( addr, reg ) \
-  __asm__ ( \
-  " stwbrx %1, 0, %2\n \
-    sync\n \
-    lhbrx %0, %4, %3\n \
-    sync " \
-  : "=r" (reg) \
-  : "r" ((addr) & ~3), "r" (CONFIG_ADDR), \
-    "r" (CONFIG_DATA), \
-    "b" ((addr) & 3));
-
-/* this assumes it's reading on word boundaries*/
-#define CONFIG_READ_WORD( addr, reg ) \
-  __asm__ ( \
-  " stwbrx %1, 0, %2\n \
-    sync\n \
-    lwbrx %0, 0, %3\n \
-    sync " \
-  : "=r" (reg) \
-  : "r" (addr), "r" (CONFIG_ADDR),\
-    "r" (CONFIG_DATA));
-
-/*
- *  configuration register 'addresses'.
- *  These are described in chaper 5 of the 8240 users manual.
- *  Where the register has an abreviation in the manual, this has
- *  been usaed here, otherwise a name in keeping with the norm has
- *  been invented.
- *  Note that some of these registers aren't documented in the manual.
- */
-
-#define PCICR          0x80000004  /* PCI Command Register */
-#define PCISR          0x80000006  /* PCI Status Register */
-#define REVID          0x80000008  /* CPU revision id */
-#define PIR            0x80000009  /* PCI Programming Interface Register */
-#define PBCCR          0x8000000b  /* PCI Base Class Code Register */
-#define PCLSR          0x8000000c  /* Processor Cache Line Size Register */
-#define PLTR           0x8000000d  /* PCI Latancy Timer Register */
-#define PHTR           0x8000000e  /* PCI Header Type Register */
-#define BISTCTRL       0x8000000f  /* BIST Control */
-#define LMBAR          0x80000010  /* Local Base Address Register */
-#define PCSRBAR                0x80000014  /* PCSR Base Address Register */
-#define ILR            0x8000003c  /* PCI Interrupt Line Register */
-#define IPR            0x8000003d  /* Interrupt Pin Register */
-#define MINGNT         0x8000003e  /* MIN GNI */
-#define MAXLAT         0x8000003f  /* MAX LAT */
-#define PCIACR         0x80000046  /* PCI Arbiter Control Register */
-#define PMCR1          0x80000070  /* Power management config. 1 */
-#define PMCR2          0x80000072  /* Power management config. 2 */
-#define ODCR           0x80000073  /* Output Driver Control Register */
-#define CLKDCR         0x80000074  /* CLK Driver Control Register */
-#if defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241)
-#define MIOCR1         0x80000076  /* Miscellaneous I/O Control Register 1 */
-#define MIOCR2         0x80000077  /* Miscellaneous I/O Control Register 2 */
-#endif
-#define EUMBBAR                0x80000078  /* Embedded Utilities Memory Block Base Address Register */
-#define EUMBBAR_VAL    0x80500000  /* PCI Relocation offset for EUMB region */
-#define EUMBSIZE       0x00100000  /* Size of EUMB region */
-
-#define MSAR1          0x80000080  /* Memory Starting Address Register 1 */
-#define MSAR2          0x80000084  /* Memory Starting Address Register 2 */
-#define EMSAR1         0x80000088  /* Extended Memory Starting Address Register 1*/
-#define EMSAR2         0x8000008c  /* Extended Memory Starting Address Register 2*/
-#define MEAR1          0x80000090  /* Memory Ending Address Register 1 */
-#define MEAR2          0x80000094  /* Memory Ending Address Register 2 */
-#define EMEAR1         0x80000098  /* Extended Memory Ending Address Register 1 */
-#define EMEAR2         0x8000009c  /* Extended Memory Ending Address Register 2 */
-#define MBER           0x800000a0  /* Memory bank Enable Register*/
-#define MPMR           0x800000a3  /* Memory Page Mode Register (stores PGMAX) */
-#define PICR1          0x800000a8  /* Processor Interface Configuration Register 1 */
-#define PICR2          0x800000ac  /* Processor Interface Configuration Register 2 */
-#define ECCSBECR       0x800000b8  /* ECC Single-Bit Error Counter Register */
-#define ECCSBETR       0x800000b8  /* ECC Single-Bit Error Trigger Register */
-#define ERRENR1                0x800000c0  /* Error Enableing Register 1 */
-#define ERRENR2                0x800000c4  /* Error Enableing Register 2 */
-#define ERRDR1         0x800000c1  /* Error Detection Register 1 */
-#define IPBESR         0x800000c3  /* Internal Processor Error Status Register */
-#define ERRDR2         0x800000c5  /* Error Detection Register 2 */
-#define PBESR          0x800000c7  /* PCI Bus Error Status Register */
-#define PBEAR          0x800000c8  /* Processor/PCI Bus Error Status Register */
-#define AMBOR          0x800000e0  /* Address Map B Options Register */
-#define PCMBCR         0x800000e1  /* PCI/Memory Buffer Configuration */
-#define MCCR1          0x800000f0  /* Memory Control Configuration Register 1 */
-#define MCCR2          0x800000f4  /* Memory Control Configuration Register 2 */
-#define MCCR3          0x800000f8  /* Memory Control Configuration Register 3 */
-#define MCCR4          0x800000fc  /* Memory Control Configuration Register 4 */
-
-/* some values for some of the above */
-
-#define PICR1_CF_APARK         0x00000008
-#define PICR1_LE_MODE          0x00000020
-#define PICR1_ST_GATH_EN       0x00000040
-#if defined(CONFIG_MPC8240)
-#define PICR1_EN_PCS           0x00000080 /* according to dink code, sets the 8240 to handle pci config space */
-#elif defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241)
-#define PICR1_NO_BUSW_CK       0x00000080 /* no bus width check for flash writes */
-#define PICR1_DEC              0x00000100 /* Time Base enable on 8245/8241 */
-#define ERCR1                  0x800000d0  /* Extended ROM Configuration Register 1 */
-#define ERCR2                  0x800000d4  /* Extended ROM Configuration Register 2 */
-#define ERCR3                  0x800000d8  /* Extended ROM Configuration Register 3 */
-#define ERCR4                  0x800000dc  /* Extended ROM Configuration Register 4 */
-#define MIOCR1                 0x80000076  /* Miscellaneous I/O Control Register 1 */
-#define MIOCR1_ADR_X           0x80000074  /* Miscellaneous I/O Control Register 1 */
-#define MIOCR1_SHIFT           2
-#define MIOCR2                 0x80000077  /* Miscellaneous I/O Control Register 2 */
-#define MIOCR2_ADR_X           0x80000074  /* Miscellaneous I/O Control Register 1 */
-#define MIOCR2_SHIFT           3
-#define ODCR_ADR_X             0x80000070      /* Output Driver Control register */
-#define ODCR_SHIFT              3
-#define PMCR2_ADR              0x80000072      /* Power Mgmnt Cfg 2 register */
-#define PMCR2_ADR_X            0x80000070
-#define PMCR2_SHIFT             3
-#define PMCR1_ADR              0x80000070      /* Power Mgmnt Cfg 1 reister */
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-#define PICR1_CF_DPARK         0x00000200
-#define PICR1_MCP_EN           0x00000800
-#define PICR1_FLASH_WR_EN      0x00001000
-#ifdef CONFIG_MPC8240
-#define PICR1_ADDRESS_MAP      0x00010000
-#define PIRC1_MSK              0xff000000
-#endif
-#define PICR1_PROC_TYPE_MSK    0x00060000
-#define PICR1_PROC_TYPE_603E   0x00040000
-#define PICR1_RCS0             0x00100000
-
-#define PICR2_CF_SNOOP_WS_MASK 0x000c0000
-#define PICR2_CF_SNOOP_WS_0WS  0x00000000
-#define PICR2_CF_SNOOP_WS_1WS  0x00040000
-#define PICR2_CF_SNOOP_WS_2WS  0x00080000
-#define PICR2_CF_SNOOP_WS_3WS  0x000c0000
-#define PICR2_CF_APHASE_WS_MASK 0x0000000c
-#define PICR2_CF_APHASE_WS_0WS 0x00000000
-#define PICR2_CF_APHASE_WS_1WS 0x00000004
-#define PICR2_CF_APHASE_WS_2WS 0x00000008
-#define PICR2_CF_APHASE_WS_3WS 0x0000000c
-
-#define MCCR1_ROMNAL_SHIFT     28
-#define MCCR1_ROMNAL_MSK       0xf0000000
-#define MCCR1_ROMFAL_SHIFT     23
-#define MCCR1_ROMFAL_MSK       0x0f800000
-#define MCCR1_DBUS_SIZE0        0x00400000
-#define MCCR1_BURST            0x00100000
-#define MCCR1_MEMGO            0x00080000
-#define MCCR1_SREN             0x00040000
-#if defined(CONFIG_MPC8240)
-#define MCCR1_RAM_TYPE         0x00020000
-#elif defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241)
-#define MCCR1_SDRAM_EN         0x00020000
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-#define MCCR1_PCKEN            0x00010000
-#define MCCR1_BANK1ROW_SHIFT   2
-#define MCCR1_BANK2ROW_SHIFT   4
-#define MCCR1_BANK3ROW_SHIFT   6
-#define MCCR1_BANK4ROW_SHIFT   8
-#define MCCR1_BANK5ROW_SHIFT   10
-#define MCCR1_BANK6ROW_SHIFT   12
-#define MCCR1_BANK7ROW_SHIFT   14
-
-#define MCCR2_TS_WAIT_TIMER_MSK 0xe0000000
-#define MCCR2_TS_WAIT_TIMER_SHIFT 29
-#define MCCR2_ASRISE_MSK       0x1e000000
-#define MCCR2_ASRISE_SHIFT     25
-#define MCCR2_ASFALL_MSK       0x01e00000
-#define MCCR2_ASFALL_SHIFT     21
-
-#define MCCR2_INLINE_PAR_NOT_ECC    0x00100000
-#define MCCR2_WRITE_PARITY_CHK 0x00080000
-#define MCCR2_INLFRD_PARECC_CHK_EN  0x00040000
-#ifdef CONFIG_MPC8240
-#define MCCR2_ECC_EN           0x00020000
-#define MCCR2_EDO              0x00010000
-#endif
-#define MCCR2_REFINT_MSK       0x0000fffc
-#define MCCR2_REFINT_SHIFT     2
-#define MCCR2_RSV_PG           0x00000002
-#define MCCR2_PMW_PAR          0x00000001
-
-#define MCCR3_BSTOPRE2TO5_MSK  0xf0000000 /*BSTOPRE[2-5]*/
-#define MCCR3_BSTOPRE2TO5_SHIFT 28
-#define MCCR3_REFREC_MSK       0x0f000000
-#define MCCR3_REFREC_SHIFT     24
-#ifdef CONFIG_MPC8240
-#define MCCR3_RDLAT_MSK                0x00f00000
-#define MCCR3_RDLAT_SHIFT      20
-#define MCCR3_CPX              0x00010000
-#define MCCR3_RAS6P_MSK                0x00078000
-#define MCCR3_RAS6P_SHIFT      15
-#define MCCR3_CAS5_MSK         0x00007000
-#define MCCR3_CAS5_SHIFT       12
-#define MCCR3_CP4_MSK          0x00000e00
-#define MCCR3_CP4_SHIFT                9
-#define MCCR3_CAS3_MSK         0x000001c0
-#define MCCR3_CAS3_SHIFT       6
-#define MCCR3_RCD2_MSK         0x00000038
-#define MCCR3_RCD2_SHIFT       3
-#define MCCR3_RP1_MSK          0x00000007
-#define MCCR3_RP1_SHIFT                0
-#endif
-
-#define MCCR4_PRETOACT_MSK     0xf0000000
-#define MCCR4_PRETOACT_SHIFT   28
-#define MCCR4_ACTTOPRE_MSK     0x0f000000
-#define MCCR4_ACTTOPRE_SHIFT   24
-#define MCCR4_WMODE            0x00800000
-#define MCCR4_INLINE           0x00400000
-#if defined(CONFIG_MPC8240)
-#define MCCR4_BIT21            0x00200000 /* this include cos DINK code sets it- unknown function*/
-#elif defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241)
-#define MCCR4_EXTROM           0x00200000 /* enables Extended ROM space */
-#else
-#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
-#endif
-#define MCCR4_REGISTERED       0x00100000
-#define MCCR4_BSTOPRE0TO1_MSK  0x000c0000 /*BSTOPRE[0-1]*/
-#define MCCR4_BSTOPRE0TO1_SHIFT 18
-#define MCCR4_REGDIMM          0x00008000
-#define MCCR4_SDMODE_MSK       0x00007f00
-#define MCCR4_SDMODE_SHIFT     8
-#define MCCR4_ACTTORW_MSK      0x000000f0
-#define MCCR4_ACTTORW_SHIFT    4
-#define MCCR4_BSTOPRE6TO9_MSK  0x0000000f /*BSTOPRE[6-9]*/
-#define MCCR4_BSTOPRE6TO9_SHIFT 0
-#define MCCR4_DBUS_SIZE2_SHIFT 17
-
-#define MICR_ADDR_MASK         0x0ff00000
-#define MICR_ADDR_SHIFT                20
-#define MICR_EADDR_MASK                0x30000000
-#define MICR_EADDR_SHIFT       28
-
-/*eumb and epic config*/
-
-#define EPIC_FPR               0x00041000
-#define EPIC_GCR               0x00041020
-#define EPIC_EICR              0x00041030
-#define EPIC_EVI               0x00041080
-#define EPIC_PI                        0x00041090
-#define EPIC_SVR               0x000410E0
-#define EPIC_TFRR              0x000410F0
-
-/*
- * Note the information for these is rather mangled in the 8240 manual.
- * These are guesses.
- */
-
-#define EPIC_GTCCR0            0x00041100
-#define EPIC_GTCCR1            0x00041140
-#define EPIC_GTCCR2            0x00041180
-#define EPIC_GTCCR3            0x000411C0
-#define EPIC_GTBCR0            0x00041110
-#define EPIC_GTBCR1            0x00041150
-#define EPIC_GTBCR2            0x00041190
-#define EPIC_GTBCR3            0x000411D0
-#define EPIC_GTVPR0            0x00041120
-#define EPIC_GTVPR1            0x00041160
-#define EPIC_GTVPR2            0x000411a0
-#define EPIC_GTVPR3            0x000411e0
-#define EPIC_GTDR0             0x00041130
-#define EPIC_GTDR1             0x00041170
-#define EPIC_GTDR2             0x000411b0
-#define EPIC_GTDR3             0x000411f0
-
-#define EPIC_IVPR0             0x00050200
-#define EPIC_IVPR1             0x00050220
-#define EPIC_IVPR2             0x00050240
-#define EPIC_IVPR3             0x00050260
-#define EPIC_IVPR4             0x00050280
-
-#define EPIC_SVPR0             0x00050200
-#define EPIC_SVPR1             0x00050220
-#define EPIC_SVPR2             0x00050240
-#define EPIC_SVPR3             0x00050260
-#define EPIC_SVPR4             0x00050280
-#define EPIC_SVPR5             0x000502A0
-#define EPIC_SVPR6             0x000502C0
-#define EPIC_SVPR7             0x000502E0
-#define EPIC_SVPR8             0x00050300
-#define EPIC_SVPR9             0x00050320
-#define EPIC_SVPRa             0x00050340
-#define EPIC_SVPRb             0x00050360
-#define EPIC_SVPRc             0x00050380
-#define EPIC_SVPRd             0x000503A0
-#define EPIC_SVPRe             0x000503C0
-#define EPIC_SVPRf             0x000503E0
-
-/* MPC8240 Byte Swap/PCI Support Macros */
-#define BYTE_SWAP_16_BIT(x)    ( (((x) & 0x00ff) << 8) | ( (x) >> 8) )
-#define LONGSWAP(x) ((((x) & 0x000000ff) << 24) | (((x) & 0x0000ff00) << 8)|\
-                    (((x) & 0x00ff0000) >>  8) | (((x) & 0xff000000) >> 24) )
-#define PCISWAP(x)   LONGSWAP(x)
-
-#ifndef __ASSEMBLY__
-
-/*
- * MPC107 Support
- *
- */
-unsigned int mpc824x_mpc107_getreg(unsigned int regNum);
-void mpc824x_mpc107_setreg(unsigned int regNum, unsigned int regVal);
-void mpc824x_mpc107_write8(unsigned int address, unsigned char data);
-void mpc824x_mpc107_write16(unsigned int address, unsigned short data);
-void mpc824x_mpc107_write32(unsigned int address, unsigned int data);
-unsigned char mpc824x_mpc107_read8(unsigned int address);
-unsigned short mpc824x_mpc107_read16(unsigned int address);
-unsigned int mpc824x_mpc107_read32(unsigned int address);
-unsigned int mpc824x_eummbar_read(unsigned int regNum);
-void mpc824x_eummbar_write(unsigned int regNum, unsigned int regVal);
-
-#ifdef CONFIG_PCI
-struct pci_controller;
-void pci_cpm824x_init(struct pci_controller* hose);
-#endif
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* __MPC824X_H__ */
index 28d98fe148a804eb4136f8ee7fae9315c08a0d24..7fb71f721910853969380b6e341b94910d275100 100644 (file)
@@ -79,6 +79,7 @@
 #define CMD_INHIBIT                            (1 << 0)
 #define CMD_TXACTIVE                           (1 << 8)
 #define CMD_RXACTIVE                           (1 << 9)
+#define CMD_FIFO_EMPTY                         (1 << 13)
 #define CMD_AUTOCMD12ACTIVE                    (1 << 14)
 #define CMD_BUS_BUSY                           (CMD_AUTOCMD12ACTIVE |  \
                                                CMD_RXACTIVE |  \
index fc735d1ec4479099b2b1813754596721258d4214..15e31ab538ba5e84c09ae512b7f5a2dad0c21c47 100644 (file)
@@ -167,3 +167,4 @@ __attribute__((noreturn)) void nand_boot(void);
 #define ENV_OFFSET_SIZE 8
 int get_nand_env_oob(nand_info_t *nand, unsigned long *result);
 #endif
+int spl_nand_erase_one(int block, int page);
index 0230a7f40da07893ff2d9d92f1929e7b9cabc1d2..e3645e01169b4a84ae7802ecf95a16298041499a 100644 (file)
@@ -217,9 +217,10 @@ const char *os_dirent_get_typename(enum os_dirent_t type);
  * Get the size of a file
  *
  * @param fname                Filename to check
- * @return size of file, or -1 if an error ocurred
+ * @param size         size of file is returned if no error
+ * @return 0 on success or -1 if an error ocurred
  */
-ssize_t os_get_filesize(const char *fname);
+int os_get_filesize(const char *fname, loff_t *size);
 
 /**
  * Write a character to the controlling OS terminal
diff --git a/include/parade.h b/include/parade.h
new file mode 100644 (file)
index 0000000..887f56d
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * (C) Copyright 2012 Samsung Electronics
+ * Donghwa Lee <dh09.lee@samsung.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __PARADE_H__
+#define __PARADE_H__
+
+/* Initialize the Parade dP<->LVDS bridge if present */
+#ifdef CONFIG_VIDEO_PARADE
+int parade_init(const void *blob);
+#else
+static inline int parade_init(const void *blob) { return -1; }
+#endif
+
+#endif /* __PARADE_H__ */
index a496a4ad4a9061012939a513f1f5298207b5dbba..8ea9b3049a4989daa02fa06dda99f3f00232f47b 100644 (file)
@@ -244,6 +244,26 @@ int gpt_fill_header(block_dev_desc_t *dev_desc, gpt_header *gpt_h,
  */
 int gpt_restore(block_dev_desc_t *dev_desc, char *str_disk_guid,
                disk_partition_t *partitions, const int parts_count);
+
+/**
+ * is_valid_gpt_buf() - Ensure that the Primary GPT information is valid
+ *
+ * @param dev_desc - block device descriptor
+ * @param buf - buffer which contains the MBR and Primary GPT info
+ *
+ * @return - '0' on success, otherwise error
+ */
+int is_valid_gpt_buf(block_dev_desc_t *dev_desc, void *buf);
+
+/**
+ * write_mbr_and_gpt_partitions() - write MBR, Primary GPT and Backup GPT
+ *
+ * @param dev_desc - block device descriptor
+ * @param buf - buffer which contains the MBR and Primary GPT info
+ *
+ * @return - '0' on success, otherwise error
+ */
+int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf);
 #endif
 
 #endif /* _PART_H */
index 2ff73653c5c2382ae654a22c047e743c67b55df1..7f67ca6542652cfdab8beff36494b404d6a211f6 100644 (file)
@@ -623,6 +623,7 @@ extern void pci_register_hose(struct pci_controller* hose);
 extern struct pci_controller* pci_bus_to_hose(int bus);
 extern struct pci_controller *find_hose_by_cfg_addr(void *cfg_addr);
 
+extern int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev);
 extern int pci_hose_scan(struct pci_controller *hose);
 extern int pci_hose_scan_bus(struct pci_controller *hose, int bus);
 
@@ -669,13 +670,32 @@ extern void board_pci_fixup_dev(struct pci_controller *hose, pci_dev_t dev,
 const char * pci_class_str(u8 class);
 int pci_last_busno(void);
 
-#ifdef CONFIG_MPC824X
-extern void pci_mpc824x_init (struct pci_controller *hose);
-#endif
-
 #ifdef CONFIG_MPC85xx
 extern void pci_mpc85xx_init (struct pci_controller *hose);
 #endif
 
+/**
+ * pci_write_bar32() - Write the address of a BAR including control bits
+ *
+ * This writes a raw address (with control bits) to a bar
+ *
+ * @hose:      PCI hose to use
+ * @dev:       PCI device to update
+ * @barnum:    BAR number (0-5)
+ * @addr:      BAR address with control bits
+ */
+void pci_write_bar32(struct pci_controller *hose, pci_dev_t dev, int barnum,
+                    u32 addr_and_ctrl);
+
+/**
+ * pci_read_bar32() - read the address of a bar
+ *
+ * @hose:      PCI hose to use
+ * @dev:       PCI device to inspect
+ * @barnum:    BAR number (0-5)
+ * @return address of the bar, masking out any control bits
+ * */
+u32 pci_read_bar32(struct pci_controller *hose, pci_dev_t dev, int barnum);
+
 #endif /* __ASSEMBLY__ */
 #endif /* _PCI_H */
index f84c13ac6427467e95027e8453bc8a04af2462dc..26f4748685f2f3e87a712d793bde5db58d2062ac 100644 (file)
 #define PCI_DEVICE_ID_AMD_11H_NB_DRAM  0x1302
 #define PCI_DEVICE_ID_AMD_11H_NB_MISC  0x1303
 #define PCI_DEVICE_ID_AMD_11H_NB_LINK  0x1304
-#define PCI_DEVICE_ID_AMD_15H_NB_MISC  0x1603
+#define PCI_DEVICE_ID_AMD_15H_M10H_F3  0x1403
+#define PCI_DEVICE_ID_AMD_15H_M30H_NB_F3 0x141d
+#define PCI_DEVICE_ID_AMD_15H_M30H_NB_F4 0x141e
+#define PCI_DEVICE_ID_AMD_15H_NB_F0    0x1600
+#define PCI_DEVICE_ID_AMD_15H_NB_F1    0x1601
+#define PCI_DEVICE_ID_AMD_15H_NB_F2    0x1602
+#define PCI_DEVICE_ID_AMD_15H_NB_F3    0x1603
+#define PCI_DEVICE_ID_AMD_15H_NB_F4    0x1604
+#define PCI_DEVICE_ID_AMD_15H_NB_F5    0x1605
+#define PCI_DEVICE_ID_AMD_16H_NB_F3    0x1533
+#define PCI_DEVICE_ID_AMD_16H_NB_F4    0x1534
+#define PCI_DEVICE_ID_AMD_16H_M30H_NB_F3 0x1583
+#define PCI_DEVICE_ID_AMD_16H_M30H_NB_F4 0x1584
 #define PCI_DEVICE_ID_AMD_CNB17H_F3    0x1703
 #define PCI_DEVICE_ID_AMD_LANCE                0x2000
 #define PCI_DEVICE_ID_AMD_LANCE_HOME   0x2001
 #define PCI_DEVICE_ID_AMD_CS5536_IDE    0x209A
 #define PCI_DEVICE_ID_AMD_LX_VIDEO  0x2081
 #define PCI_DEVICE_ID_AMD_LX_AES    0x2082
-#define PCI_DEVICE_ID_AMD_HUDSON2_IDE          0x780c
 #define PCI_DEVICE_ID_AMD_HUDSON2_SATA_IDE     0x7800
+#define PCI_DEVICE_ID_AMD_HUDSON2_SMBUS                0x780b
+#define PCI_DEVICE_ID_AMD_HUDSON2_IDE          0x780c
 
 #define PCI_VENDOR_ID_TRIDENT          0x1023
 #define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX        0x2000
 #define PCI_DEVICE_ID_MATROX_G550      0x2527
 #define PCI_DEVICE_ID_MATROX_VIA       0x4536
 
+#define PCI_VENDOR_ID_MOBILITY_ELECTRONICS     0x14f2
+
 #define PCI_VENDOR_ID_CT               0x102c
 #define PCI_DEVICE_ID_CT_69000         0x00c0
 #define PCI_DEVICE_ID_CT_65545         0x00d8
 #define PCI_DEVICE_ID_SI_7018          0x7018
 
 #define PCI_VENDOR_ID_HP               0x103c
+#define PCI_VENDOR_ID_HP_3PAR          0x1590
 #define PCI_DEVICE_ID_HP_VISUALIZE_EG  0x1005
 #define PCI_DEVICE_ID_HP_VISUALIZE_FX6 0x1006
 #define PCI_DEVICE_ID_HP_VISUALIZE_FX4 0x1008
 #define PCI_DEVICE_ID_HP_CISSD         0x3238
 #define PCI_DEVICE_ID_HP_CISSE         0x323a
 #define PCI_DEVICE_ID_HP_CISSF         0x323b
+#define PCI_DEVICE_ID_HP_CISSH         0x323c
+#define PCI_DEVICE_ID_HP_CISSI         0x3239
 #define PCI_DEVICE_ID_HP_ZX2_IOC       0x4031
 
 #define PCI_VENDOR_ID_PCTECH           0x1042
 #define PCI_DEVICE_ID_ELSA_QS3000      0x3000
 
 #define PCI_VENDOR_ID_STMICRO          0x104A
+#define PCI_DEVICE_ID_STMICRO_USB_HOST 0xCC00
+#define PCI_DEVICE_ID_STMICRO_USB_OHCI 0xCC01
+#define PCI_DEVICE_ID_STMICRO_USB_OTG  0xCC02
+#define PCI_DEVICE_ID_STMICRO_UART_HWFC 0xCC03
+#define PCI_DEVICE_ID_STMICRO_UART_NO_HWFC     0xCC04
+#define PCI_DEVICE_ID_STMICRO_SOC_DMA  0xCC05
+#define PCI_DEVICE_ID_STMICRO_SATA     0xCC06
+#define PCI_DEVICE_ID_STMICRO_I2C      0xCC07
+#define PCI_DEVICE_ID_STMICRO_SPI_HS   0xCC08
+#define PCI_DEVICE_ID_STMICRO_MAC      0xCC09
+#define PCI_DEVICE_ID_STMICRO_SDIO_EMMC 0xCC0A
+#define PCI_DEVICE_ID_STMICRO_SDIO     0xCC0B
+#define PCI_DEVICE_ID_STMICRO_GPIO     0xCC0C
+#define PCI_DEVICE_ID_STMICRO_VIP      0xCC0D
+#define PCI_DEVICE_ID_STMICRO_AUDIO_ROUTER_DMA 0xCC0E
+#define PCI_DEVICE_ID_STMICRO_AUDIO_ROUTER_SRCS 0xCC0F
+#define PCI_DEVICE_ID_STMICRO_AUDIO_ROUTER_MSPS 0xCC10
+#define PCI_DEVICE_ID_STMICRO_CAN      0xCC11
+#define PCI_DEVICE_ID_STMICRO_MLB      0xCC12
+#define PCI_DEVICE_ID_STMICRO_DBP      0xCC13
+#define PCI_DEVICE_ID_STMICRO_SATA_PHY 0xCC14
+#define PCI_DEVICE_ID_STMICRO_ESRAM    0xCC15
+#define PCI_DEVICE_ID_STMICRO_VIC      0xCC16
 
 #define PCI_VENDOR_ID_BUSLOGIC               0x104B
 #define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140
 #define PCI_VENDOR_ID_TUNDRA           0x10e3
 #define PCI_DEVICE_ID_TUNDRA_CA91C042  0x0000
 
+#define PCI_VENDOR_ID_AMCC             0x10e8
+
 #define PCI_VENDOR_ID_INTERG           0x10ea
 #define PCI_DEVICE_ID_INTERG_1682      0x1682
 #define PCI_DEVICE_ID_INTERG_2000      0x2000
 #define PCI_SUBDEVICE_ID_CREATIVE_SB08801      0x0041
 #define PCI_SUBDEVICE_ID_CREATIVE_SB08802      0x0042
 #define PCI_SUBDEVICE_ID_CREATIVE_SB08803      0x0043
+#define PCI_SUBDEVICE_ID_CREATIVE_SB1270       0x0062
 #define PCI_SUBDEVICE_ID_CREATIVE_HENDRIX      0x6000
 
 #define PCI_VENDOR_ID_ECTIVA           0x1102 /* duplicate: CREATIVE */
 #define PCI_DEVICE_ID_VIA_CX700_IDE    0x0581
 #define PCI_DEVICE_ID_VIA_VX800                0x8353
 #define PCI_DEVICE_ID_VIA_VX855                0x8409
+#define PCI_DEVICE_ID_VIA_VX900                0x8410
 #define PCI_DEVICE_ID_VIA_8371_1       0x8391
 #define PCI_DEVICE_ID_VIA_82C598_1     0x8598
 #define PCI_DEVICE_ID_VIA_838X_1       0xB188
 #define PCI_DEVICE_ID_RICOH_RL5C476    0x0476
 #define PCI_DEVICE_ID_RICOH_RL5C478    0x0478
 #define PCI_DEVICE_ID_RICOH_R5C822     0x0822
+#define PCI_DEVICE_ID_RICOH_R5CE822    0xe822
+#define PCI_DEVICE_ID_RICOH_R5CE823    0xe823
 #define PCI_DEVICE_ID_RICOH_R5C832     0x0832
 #define PCI_DEVICE_ID_RICOH_R5C843     0x0843
 
 #define PCI_SUBDEVICE_ID_KEYSPAN_SX2   0x5334
 
 #define PCI_VENDOR_ID_MARVELL          0x11ab
+#define PCI_VENDOR_ID_MARVELL_EXT      0x1b4b
 #define PCI_DEVICE_ID_MARVELL_GT64111  0x4146
 #define PCI_DEVICE_ID_MARVELL_GT64260  0x6430
 #define PCI_DEVICE_ID_MARVELL_MV64360  0x6460
 #define PCI_VENDOR_ID_ESDGMBH          0x12fe
 #define PCI_DEVICE_ID_ESDGMBH_CPCIASIO4 0x0111
 
+#define PCI_VENDOR_ID_CB               0x1307  /* Measurement Computing */
+
 #define PCI_VENDOR_ID_SIIG             0x131f
 #define PCI_SUBVENDOR_ID_SIIG          0x131f
 #define PCI_DEVICE_ID_SIIG_1S_10x_550  0x1000
 #define PCI_VENDOR_ID_QUATECH          0x135C
 #define PCI_DEVICE_ID_QUATECH_QSC100   0x0010
 #define PCI_DEVICE_ID_QUATECH_DSC100   0x0020
+#define PCI_DEVICE_ID_QUATECH_DSC200   0x0030
+#define PCI_DEVICE_ID_QUATECH_QSC200   0x0040
 #define PCI_DEVICE_ID_QUATECH_ESC100D  0x0050
 #define PCI_DEVICE_ID_QUATECH_ESC100M  0x0060
+#define PCI_DEVICE_ID_QUATECH_QSCP100  0x0120
+#define PCI_DEVICE_ID_QUATECH_DSCP100  0x0130
+#define PCI_DEVICE_ID_QUATECH_QSCP200  0x0140
+#define PCI_DEVICE_ID_QUATECH_DSCP200  0x0150
+#define PCI_DEVICE_ID_QUATECH_QSCLP100 0x0170
+#define PCI_DEVICE_ID_QUATECH_DSCLP100 0x0180
+#define PCI_DEVICE_ID_QUATECH_DSC100E  0x0181
+#define PCI_DEVICE_ID_QUATECH_SSCLP100 0x0190
+#define PCI_DEVICE_ID_QUATECH_QSCLP200 0x01A0
+#define PCI_DEVICE_ID_QUATECH_DSCLP200 0x01B0
+#define PCI_DEVICE_ID_QUATECH_DSC200E  0x01B1
+#define PCI_DEVICE_ID_QUATECH_SSCLP200 0x01C0
+#define PCI_DEVICE_ID_QUATECH_ESCLP100 0x01E0
 #define PCI_DEVICE_ID_QUATECH_SPPXP_100 0x0278
 
 #define PCI_VENDOR_ID_SEALEVEL         0x135e
 #define PCI_DEVICE_ID_EXAR_XR17C152    0x0152
 #define PCI_DEVICE_ID_EXAR_XR17C154    0x0154
 #define PCI_DEVICE_ID_EXAR_XR17C158    0x0158
+#define PCI_DEVICE_ID_EXAR_XR17V352    0x0352
+#define PCI_DEVICE_ID_EXAR_XR17V354    0x0354
+#define PCI_DEVICE_ID_EXAR_XR17V358    0x0358
 
 #define PCI_VENDOR_ID_MICROGATE                0x13c0
 #define PCI_DEVICE_ID_MICROGATE_USC    0x0010
 #define PCI_DEVICE_ID_CMEDIA_CM8738    0x0111
 #define PCI_DEVICE_ID_CMEDIA_CM8738B   0x0112
 
+#define PCI_VENDOR_ID_ADVANTECH                0x13fe
+
+#define PCI_VENDOR_ID_MEILHAUS         0x1402
+
 #define PCI_VENDOR_ID_LAVA             0x1407
 #define PCI_DEVICE_ID_LAVA_DSERIAL     0x0100 /* 2x 16550 */
 #define PCI_DEVICE_ID_LAVA_QUATRO_A    0x0101 /* 2x 16550, half of 4 port */
 
 #define PCI_VENDOR_ID_CHELSIO          0x1425
 
+#define PCI_VENDOR_ID_ADLINK           0x144a
+
 #define PCI_VENDOR_ID_SAMSUNG          0x144d
 
 #define PCI_VENDOR_ID_GIGABYTE         0x1458
 #define PCI_DEVICE_ID_AFAVLAB_P030     0x2182
 #define PCI_SUBDEVICE_ID_AFAVLAB_P061          0x2150
 
+#define PCI_VENDOR_ID_AMPLICON         0x14dc
+
 #define PCI_VENDOR_ID_BCM_GVC          0x14a4
 #define PCI_VENDOR_ID_BROADCOM         0x14e4
 #define PCI_DEVICE_ID_TIGON3_5752      0x1600
 #define PCI_DEVICE_ID_NX2_57711E       0x1650
 #define PCI_DEVICE_ID_TIGON3_5705      0x1653
 #define PCI_DEVICE_ID_TIGON3_5705_2    0x1654
+#define PCI_DEVICE_ID_TIGON3_5719      0x1657
 #define PCI_DEVICE_ID_TIGON3_5721      0x1659
 #define PCI_DEVICE_ID_TIGON3_5722      0x165a
 #define PCI_DEVICE_ID_TIGON3_5723      0x165b
 #define PCI_DEVICE_ID_TIGON3_5705M     0x165d
 #define PCI_DEVICE_ID_TIGON3_5705M_2   0x165e
+#define PCI_DEVICE_ID_NX2_57712                0x1662
+#define PCI_DEVICE_ID_NX2_57712E       0x1663
+#define PCI_DEVICE_ID_NX2_57712_MF     0x1663
 #define PCI_DEVICE_ID_TIGON3_5714      0x1668
 #define PCI_DEVICE_ID_TIGON3_5714S     0x1669
 #define PCI_DEVICE_ID_TIGON3_5780      0x166a
 #define PCI_DEVICE_ID_TIGON3_5780S     0x166b
 #define PCI_DEVICE_ID_TIGON3_5705F     0x166e
+#define PCI_DEVICE_ID_NX2_57712_VF     0x166f
 #define PCI_DEVICE_ID_TIGON3_5754M     0x1672
 #define PCI_DEVICE_ID_TIGON3_5755M     0x1673
 #define PCI_DEVICE_ID_TIGON3_5756      0x1674
+#define PCI_DEVICE_ID_TIGON3_5750      0x1676
 #define PCI_DEVICE_ID_TIGON3_5751      0x1677
 #define PCI_DEVICE_ID_TIGON3_5715      0x1678
 #define PCI_DEVICE_ID_TIGON3_5715S     0x1679
 #define PCI_DEVICE_ID_TIGON3_5761E     0x1680
 #define PCI_DEVICE_ID_TIGON3_5761      0x1681
 #define PCI_DEVICE_ID_TIGON3_5764      0x1684
+#define PCI_DEVICE_ID_NX2_57800                0x168a
+#define PCI_DEVICE_ID_NX2_57840                0x168d
+#define PCI_DEVICE_ID_NX2_57810                0x168e
 #define PCI_DEVICE_ID_TIGON3_5787M     0x1693
 #define PCI_DEVICE_ID_TIGON3_5782      0x1696
 #define PCI_DEVICE_ID_TIGON3_5784      0x1698
 #define PCI_DEVICE_ID_TIGON3_5787      0x169b
 #define PCI_DEVICE_ID_TIGON3_5788      0x169c
 #define PCI_DEVICE_ID_TIGON3_5789      0x169d
+#define PCI_DEVICE_ID_NX2_57840_4_10   0x16a1
+#define PCI_DEVICE_ID_NX2_57840_2_20   0x16a2
+#define PCI_DEVICE_ID_NX2_57840_MF     0x16a4
+#define PCI_DEVICE_ID_NX2_57800_MF     0x16a5
 #define PCI_DEVICE_ID_TIGON3_5702X     0x16a6
 #define PCI_DEVICE_ID_TIGON3_5703X     0x16a7
 #define PCI_DEVICE_ID_TIGON3_5704S     0x16a8
+#define PCI_DEVICE_ID_NX2_57800_VF     0x16a9
 #define PCI_DEVICE_ID_NX2_5706S                0x16aa
 #define PCI_DEVICE_ID_NX2_5708S                0x16ac
+#define PCI_DEVICE_ID_NX2_57840_VF     0x16ad
+#define PCI_DEVICE_ID_NX2_57810_MF     0x16ae
+#define PCI_DEVICE_ID_NX2_57810_VF     0x16af
 #define PCI_DEVICE_ID_TIGON3_5702A3    0x16c6
 #define PCI_DEVICE_ID_TIGON3_5703A3    0x16c7
 #define PCI_DEVICE_ID_TIGON3_5781      0x16dd
 
 #define PCI_VENDOR_ID_TOPSPIN          0x1867
 
+#define PCI_VENDOR_ID_COMMTECH         0x18f7
+
 #define PCI_VENDOR_ID_SILAN            0x1904
 
 #define PCI_VENDOR_ID_RENESAS          0x1912
 #define PCI_DEVICE_ID_RENESAS_SH7785   0x0007
 #define PCI_DEVICE_ID_RENESAS_SH7786   0x0010
 
+#define PCI_VENDOR_ID_SOLARFLARE       0x1924
+#define PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0    0x0703
+#define PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1    0x6703
+#define PCI_DEVICE_ID_SOLARFLARE_SFC4000B      0x0710
+
 #define PCI_VENDOR_ID_TDI               0x192E
 #define PCI_DEVICE_ID_TDI_EHCI          0x0101
 
 
 #define PCI_VENDOR_ID_AZWAVE           0x1a3b
 
+#define PCI_VENDOR_ID_ASMEDIA          0x1b21
+
+#define PCI_VENDOR_ID_CIRCUITCO                0x1cc8
+#define PCI_SUBSYSTEM_ID_CIRCUITCO_MINNOWBOARD 0x0001
+
 #define PCI_VENDOR_ID_TEKRAM           0x1de1
 #define PCI_DEVICE_ID_TEKRAM_DC290     0xdc29
 
 
 #define PCI_VENDOR_ID_INTEL            0x8086
 #define PCI_DEVICE_ID_INTEL_EESSC      0x0008
+#define PCI_DEVICE_ID_INTEL_SNB_IMC    0x0100
+#define PCI_DEVICE_ID_INTEL_IVB_IMC    0x0154
+#define PCI_DEVICE_ID_INTEL_HSW_IMC    0x0c00
 #define PCI_DEVICE_ID_INTEL_PXHD_0     0x0320
 #define PCI_DEVICE_ID_INTEL_PXHD_1     0x0321
 #define PCI_DEVICE_ID_INTEL_PXH_0      0x0329
 #define PCI_DEVICE_ID_INTEL_MRST_SD2   0x084F
 #define PCI_DEVICE_ID_INTEL_I960       0x0960
 #define PCI_DEVICE_ID_INTEL_I960RM     0x0962
+#define PCI_DEVICE_ID_INTEL_CENTERTON_ILB      0x0c60
 #define PCI_DEVICE_ID_INTEL_82541ER    0x1078
 #define PCI_DEVICE_ID_INTEL_82541GI_LF 0x107c
 #define PCI_DEVICE_ID_INTEL_82542      0x1000
 #define PCI_DEVICE_ID_INTEL_COUGARPOINT_HDA    0x1c20
 #define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS  0x1c22
 #define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN        0x1c41
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_Z68                0x1c44
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_P67                0x1c46
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_UM67       0x1c47
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_HM65       0x1c49
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_H67                0x1c4a
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_HM67       0x1c4b
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_Q65                0x1c4c
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_QS67       0x1c4d
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_Q67                0x1c4e
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_QM67       0x1c4f
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_B65                0x1c50
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_C202       0x1c52
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_C204       0x1c54
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_C206       0x1c56
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_H61                0x1c5c
 #define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX        0x1c5f
-#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE   0x1e03
-#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_HDA   0x1e20
-#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MIN 0x1e41
-#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MAX 0x1e5f
 #define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS     0x1d22
 #define PCI_DEVICE_ID_INTEL_PATSBURG_LPC       0x1d40
+#define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_0     0x1d40
+#define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_1     0x1d41
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE   0x1e03
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_HDA   0x1e20
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI  0x1e31
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MIN       0x1e41
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_B75       0x1e49
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_C216      0x1e53
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_H77       0x1e4A
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_HM70      0x1e5e
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_HM75      0x1e5d
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_HM76      0x1e59
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_HM77      0x1e57
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MBL_SAMPLE 0x1e42
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_NM70      0x1e5f
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_Q75       0x1e48
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_Q77       0x1e47
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_QM77      0x1e55
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_QS77      0x1e56
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_SFF_SAMPLE 0x1e43
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_UM77      0x1e58
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_Z75       0x1e46
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_Z77       0x1e44
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MAX       0x1e5f
+#define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN   0x2310
+#define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX   0x231f
 #define PCI_DEVICE_ID_INTEL_82801AA_0  0x2410
 #define PCI_DEVICE_ID_INTEL_82801AA_1  0x2411
 #define PCI_DEVICE_ID_INTEL_82801AA_3  0x2413
 #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MIN      0x3b00
 #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MAX      0x3b1f
 #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS        0x3b30
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB0  0x3c20
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB1  0x3c21
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB2  0x3c22
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB3  0x3c23
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB4  0x3c24
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB5  0x3c25
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB6  0x3c26
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB7  0x3c27
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB8  0x3c2e
+#define PCI_DEVICE_ID_INTEL_IOAT_SNB9  0x3c2f
+#define PCI_DEVICE_ID_INTEL_UNC_HA     0x3c46
+#define PCI_DEVICE_ID_INTEL_UNC_IMC0   0x3cb0
+#define PCI_DEVICE_ID_INTEL_UNC_IMC1   0x3cb1
+#define PCI_DEVICE_ID_INTEL_UNC_IMC2   0x3cb4
+#define PCI_DEVICE_ID_INTEL_UNC_IMC3   0x3cb5
+#define PCI_DEVICE_ID_INTEL_UNC_QPI0   0x3c41
+#define PCI_DEVICE_ID_INTEL_UNC_QPI1   0x3c42
+#define PCI_DEVICE_ID_INTEL_UNC_R2PCIE 0x3c43
+#define PCI_DEVICE_ID_INTEL_UNC_R3QPI0 0x3c44
+#define PCI_DEVICE_ID_INTEL_UNC_R3QPI1 0x3c45
+#define PCI_DEVICE_ID_INTEL_JAKETOWN_UBOX      0x3ce0
 #define PCI_DEVICE_ID_INTEL_IOAT_SNB   0x402f
 #define PCI_DEVICE_ID_INTEL_5100_16    0x65f0
+#define PCI_DEVICE_ID_INTEL_5100_19    0x65f3
 #define PCI_DEVICE_ID_INTEL_5100_21    0x65f5
 #define PCI_DEVICE_ID_INTEL_5100_22    0x65f6
 #define PCI_DEVICE_ID_INTEL_5400_ERR   0x4030
 #define PCI_DEVICE_ID_INTEL_82372FB_1  0x7601
 #define PCI_DEVICE_ID_INTEL_SCH_LPC    0x8119
 #define PCI_DEVICE_ID_INTEL_SCH_IDE    0x811a
+#define PCI_DEVICE_ID_INTEL_ITC_LPC    0x8186
 #define PCI_DEVICE_ID_INTEL_82454GX    0x84c4
 #define PCI_DEVICE_ID_INTEL_82450GX    0x84c5
 #define PCI_DEVICE_ID_INTEL_82451NX    0x84ca
 #define PCI_DEVICE_ID_INTEL_82454NX     0x84cb
 #define PCI_DEVICE_ID_INTEL_84460GX    0x84ea
 #define PCI_DEVICE_ID_INTEL_IXP4XX     0x8500
+#define PCI_DEVICE_ID_INTEL_TCF_GBE    0x8802
+#define PCI_DEVICE_ID_INTEL_TCF_SDIO_0 0x8809
+#define PCI_DEVICE_ID_INTEL_TCF_SDIO_1 0x880a
+#define PCI_DEVICE_ID_INTEL_TCF_SATA   0x880b
+#define PCI_DEVICE_ID_INTEL_TCF_UART_0 0x8811
+#define PCI_DEVICE_ID_INTEL_TCF_UART_1 0x8812
+#define PCI_DEVICE_ID_INTEL_TCF_UART_2 0x8813
+#define PCI_DEVICE_ID_INTEL_TCF_UART_3 0x8814
 #define PCI_DEVICE_ID_INTEL_IXP2800    0x9004
 #define PCI_DEVICE_ID_INTEL_S21152BB   0xb152
 
 #define PCI_DEVICE_ID_NETMOS_9845      0x9845
 #define PCI_DEVICE_ID_NETMOS_9855      0x9855
 #define PCI_DEVICE_ID_NETMOS_9865      0x9865
+#define PCI_DEVICE_ID_NETMOS_9900      0x9900
 #define PCI_DEVICE_ID_NETMOS_9901      0x9901
+#define PCI_DEVICE_ID_NETMOS_9904      0x9904
+#define PCI_DEVICE_ID_NETMOS_9912      0x9912
+#define PCI_DEVICE_ID_NETMOS_9922      0x9922
 
 #define PCI_VENDOR_ID_3COM_2           0xa727
 
 
 #define PCI_VENDOR_ID_XEN              0x5853
 #define PCI_DEVICE_ID_XEN_PLATFORM     0x0001
+
+#define PCI_VENDOR_ID_OCZ              0x1b85
diff --git a/include/pci_rom.h b/include/pci_rom.h
new file mode 100644 (file)
index 0000000..8b2674c
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * From coreboot file of same name
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _PCI_ROM_H
+#define _PCI_ROM_H
+
+#define PCI_ROM_HDR                    0xaa55
+#define PCI_VGA_RAM_IMAGE_START                0xc0000
+
+struct pci_rom_header {
+       uint16_t signature;
+       uint8_t size;
+       uint8_t init[3];
+       uint8_t reserved[0x12];
+       uint16_t data;
+};
+
+struct pci_rom_data {
+       uint32_t signature;
+       uint16_t vendor;
+       uint16_t device;
+       uint16_t reserved_1;
+       uint16_t dlen;
+       uint8_t drevision;
+       uint8_t class_lo;
+       uint16_t class_hi;
+       uint16_t ilen;
+       uint16_t irevision;
+       uint8_t type;
+       uint8_t indicator;
+       uint16_t reserved_2;
+};
+
+ /**
+ * pci_run_vga_bios() - Run the VGA BIOS in an x86 PC
+ *
+ * @dev:       Video device containing the BIOS
+ * @int15_handler:     Function to call to handle int 0x15
+ * @emulate:   true to use the x86 emulator, false to run native
+ */
+int pci_run_vga_bios(pci_dev_t dev, int (*int15_handler)(void), bool emulate);
+
+/**
+ * board_map_oprom_vendev() - map several PCI IDs to the one the ROM expects
+ *
+ * Some VGA option roms are used for several chipsets but they only have one
+ * PCI ID in their header. If we encounter such an option rom, we need to do
+ * the mapping ourselves.
+ *
+ * @vendev:    Vendor and device for the video device
+ * @return standard vendor and device expected by the ROM
+ */
+uint32_t board_map_oprom_vendev(uint32_t vendev);
+
+#endif
index 00065b2fdde831bc35bf60dfa594569fb0026d4c..c8a730c4d0f4ca232c49fe5334ffc06857303497 100644 (file)
 
 #if defined(CONFIG_TQM8xxL)
 # define       CONFIG_PCMCIA_SLOT_B    /* The TQM8xxL use SLOT_B       */
-#elif defined(CONFIG_SPD823TS)         /* The SPD8xx  use SLOT_B       */
-# define CONFIG_PCMCIA_SLOT_B
-#elif defined(CONFIG_IVMS8) || defined(CONFIG_IVML24)  /* The IVM* use SLOT_A  */
-# define CONFIG_PCMCIA_SLOT_A
-#elif defined(CONFIG_LWMON)            /* The LWMON  use SLOT_B        */
-# define CONFIG_PCMCIA_SLOT_B
-#elif defined(CONFIG_R360MPI)          /* The R360MPI use SLOT_B       */
-# define CONFIG_PCMCIA_SLOT_B
-#elif defined(CONFIG_ATC)              /* The ATC use SLOT_A   */
-# define CONFIG_PCMCIA_SLOT_A
-#elif defined(CONFIG_UC100)            /* The UC100 use SLOT_B         */
-# define CONFIG_PCMCIA_SLOT_B
 #else
 # error "PCMCIA Slot not configured"
 #endif
diff --git a/include/pcmcia/cirrus.h b/include/pcmcia/cirrus.h
deleted file mode 100644 (file)
index cd34dd8..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * cirrus.h 1.4 1999/10/25 20:03:34
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in which
- * case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_CIRRUS_H
-#define _LINUX_CIRRUS_H
-
-#ifndef PCI_VENDOR_ID_CIRRUS
-#define PCI_VENDOR_ID_CIRRUS           0x1013
-#endif
-#ifndef PCI_DEVICE_ID_CIRRUS_6729
-#define PCI_DEVICE_ID_CIRRUS_6729      0x1100
-#endif
-#ifndef PCI_DEVICE_ID_CIRRUS_6832
-#define PCI_DEVICE_ID_CIRRUS_6832      0x1110
-#endif
-
-#define PD67_MISC_CTL_1                0x16    /* Misc control 1 */
-#define PD67_FIFO_CTL          0x17    /* FIFO control */
-#define PD67_MISC_CTL_2                0x1E    /* Misc control 2 */
-#define PD67_CHIP_INFO         0x1f    /* Chip information */
-#define PD67_ATA_CTL           0x026   /* 6730: ATA control */
-#define PD67_EXT_INDEX         0x2e    /* Extension index */
-#define PD67_EXT_DATA          0x2f    /* Extension data */
-
-/* PD6722 extension registers -- indexed in PD67_EXT_INDEX */
-#define PD67_DATA_MASK0                0x01    /* Data mask 0 */
-#define PD67_DATA_MASK1                0x02    /* Data mask 1 */
-#define PD67_DMA_CTL           0x03    /* DMA control */
-
-/* PD6730 extension registers -- indexed in PD67_EXT_INDEX */
-#define PD67_EXT_CTL_1         0x03    /* Extension control 1 */
-#define PD67_MEM_PAGE(n)       ((n)+5) /* PCI window bits 31:24 */
-#define PD67_EXTERN_DATA       0x0a
-#define PD67_MISC_CTL_3                0x25
-#define PD67_SMB_PWR_CTL       0x26
-
-/* I/O window address offset */
-#define PD67_IO_OFF(w)         (0x36+((w)<<1))
-
-/* Timing register sets */
-#define PD67_TIME_SETUP(n)     (0x3a + 3*(n))
-#define PD67_TIME_CMD(n)       (0x3b + 3*(n))
-#define PD67_TIME_RECOV(n)     (0x3c + 3*(n))
-
-/* Flags for PD67_MISC_CTL_1 */
-#define PD67_MC1_5V_DET                0x01    /* 5v detect */
-#define PD67_MC1_MEDIA_ENA     0x01    /* 6730: Multimedia enable */
-#define PD67_MC1_VCC_3V                0x02    /* 3.3v Vcc */
-#define PD67_MC1_PULSE_MGMT    0x04
-#define PD67_MC1_PULSE_IRQ     0x08
-#define PD67_MC1_SPKR_ENA      0x10
-#define PD67_MC1_INPACK_ENA    0x80
-
-/* Flags for PD67_FIFO_CTL */
-#define PD67_FIFO_EMPTY                0x80
-
-/* Flags for PD67_MISC_CTL_2 */
-#define PD67_MC2_FREQ_BYPASS   0x01
-#define PD67_MC2_DYNAMIC_MODE  0x02
-#define PD67_MC2_SUSPEND       0x04
-#define PD67_MC2_5V_CORE       0x08
-#define PD67_MC2_LED_ENA       0x10    /* IRQ 12 is LED enable */
-#define PD67_MC2_FAST_PCI      0x10    /* 6729: PCI bus > 25 MHz */
-#define PD67_MC2_3STATE_BIT7   0x20    /* Floppy change bit */
-#define PD67_MC2_DMA_MODE      0x40
-#define PD67_MC2_IRQ15_RI      0x80    /* IRQ 15 is ring enable */
-
-/* Flags for PD67_CHIP_INFO */
-#define PD67_INFO_SLOTS                0x20    /* 0 = 1 slot, 1 = 2 slots */
-#define PD67_INFO_CHIP_ID      0xc0
-#define PD67_INFO_REV          0x1c
-
-/* Fields in PD67_TIME_* registers */
-#define PD67_TIME_SCALE                0xc0
-#define PD67_TIME_SCALE_1      0x00
-#define PD67_TIME_SCALE_16     0x40
-#define PD67_TIME_SCALE_256    0x80
-#define PD67_TIME_SCALE_4096   0xc0
-#define PD67_TIME_MULT         0x3f
-
-/* Fields in PD67_DMA_CTL */
-#define PD67_DMA_MODE          0xc0
-#define PD67_DMA_OFF           0x00
-#define PD67_DMA_DREQ_INPACK   0x40
-#define PD67_DMA_DREQ_WP       0x80
-#define PD67_DMA_DREQ_BVD2     0xc0
-#define PD67_DMA_PULLUP                0x20    /* Disable socket pullups? */
-
-/* Fields in PD67_EXT_CTL_1 */
-#define PD67_EC1_VCC_PWR_LOCK  0x01
-#define PD67_EC1_AUTO_PWR_CLEAR        0x02
-#define PD67_EC1_LED_ENA       0x04
-#define PD67_EC1_INV_CARD_IRQ  0x08
-#define PD67_EC1_INV_MGMT_IRQ  0x10
-#define PD67_EC1_PULLUP_CTL    0x20
-
-/* Fields in PD67_MISC_CTL_3 */
-#define PD67_MC3_IRQ_MASK      0x03
-#define PD67_MC3_IRQ_PCPCI     0x00
-#define PD67_MC3_IRQ_EXTERN    0x01
-#define PD67_MC3_IRQ_PCIWAY    0x02
-#define PD67_MC3_IRQ_PCI       0x03
-#define PD67_MC3_PWR_MASK      0x0c
-#define PD67_MC3_PWR_SERIAL    0x00
-#define PD67_MC3_PWR_TI2202    0x08
-#define PD67_MC3_PWR_SMB       0x0c
-
-/* Register definitions for Cirrus PD6832 PCI-to-CardBus bridge */
-
-/* PD6832 extension registers -- indexed in PD67_EXT_INDEX */
-#define PD68_EXT_CTL_2                 0x0b
-#define PD68_PCI_SPACE                 0x22
-#define PD68_PCCARD_SPACE              0x23
-#define PD68_WINDOW_TYPE               0x24
-#define PD68_EXT_CSC                   0x2e
-#define PD68_MISC_CTL_4                        0x2f
-#define PD68_MISC_CTL_5                        0x30
-#define PD68_MISC_CTL_6                        0x31
-
-/* Extra flags in PD67_MISC_CTL_3 */
-#define PD68_MC3_HW_SUSP               0x10
-#define PD68_MC3_MM_EXPAND             0x40
-#define PD68_MC3_MM_ARM                        0x80
-
-/* Bridge Control Register */
-#define  PD6832_BCR_MGMT_IRQ_ENA       0x0800
-
-/* Socket Number Register */
-#define PD6832_SOCKET_NUMBER           0x004c  /* 8 bit */
-
-
-typedef struct cirrus_state_t {
-    u_char             misc1, misc2;
-    u_char             timer[6];
-} cirrus_state_t;
-
-/* Cirrus options */
-static int has_dma = -1;
-static int has_led = -1;
-static int has_ring = -1;
-static int dynamic_mode = 0;
-static int freq_bypass = -1;
-#ifdef CONFIG_CPC45
-static int setup_time = 2;
-static int cmd_time = 6;
-static int recov_time = 1;
-#else
-static int setup_time = -1;
-static int cmd_time = -1;
-static int recov_time = -1;
-#endif
-
-
-#endif /* _LINUX_CIRRUS_H */
diff --git a/include/pcmcia/i82365.h b/include/pcmcia/i82365.h
deleted file mode 100644 (file)
index 0b432a8..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * i82365.h 1.21 2001/08/24 12:15:33
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_I82365_H
-#define _LINUX_I82365_H
-
-/* register definitions for the Intel 82365SL PCMCIA controller */
-
-/* Offsets for PCIC registers */
-#define I365_IDENT     0x00    /* Identification and revision */
-#define I365_STATUS    0x01    /* Interface status */
-#define I365_POWER     0x02    /* Power and RESETDRV control */
-#define I365_INTCTL    0x03    /* Interrupt and general control */
-#define I365_CSC       0x04    /* Card status change */
-#define I365_CSCINT    0x05    /* Card status change interrupt control */
-#define I365_ADDRWIN   0x06    /* Address window enable */
-#define I365_IOCTL     0x07    /* I/O control */
-#define I365_GENCTL    0x16    /* Card detect and general control */
-#define I365_GBLCTL    0x1E    /* Global control register */
-
-/* Offsets for I/O and memory window registers */
-#define I365_IO(map)   (0x08+((map)<<2))
-#define I365_MEM(map)  (0x10+((map)<<3))
-#define I365_W_START   0
-#define I365_W_STOP    2
-#define I365_W_OFF     4
-
-/* Flags for I365_STATUS */
-#define I365_CS_BVD1   0x01
-#define I365_CS_STSCHG 0x01
-#define I365_CS_BVD2   0x02
-#define I365_CS_SPKR   0x02
-#define I365_CS_DETECT 0x0C
-#define I365_CS_WRPROT 0x10
-#define I365_CS_READY  0x20    /* Inverted */
-#define I365_CS_POWERON        0x40
-#define I365_CS_GPI    0x80
-
-/* Flags for I365_POWER */
-#define I365_PWR_OFF   0x00    /* Turn off the socket */
-#define I365_PWR_OUT   0x80    /* Output enable */
-#define I365_PWR_NORESET 0x40  /* Disable RESETDRV on resume */
-#define I365_PWR_AUTO  0x20    /* Auto pwr switch enable */
-#define I365_VCC_MASK  0x18    /* Mask for turning off Vcc */
-/* There are different layouts for B-step and DF-step chips: the B
-   step has independent Vpp1/Vpp2 control, and the DF step has only
-   Vpp1 control, plus 3V control */
-#define I365_VCC_5V    0x10    /* Vcc = 5.0v */
-#define I365_VCC_3V    0x18    /* Vcc = 3.3v */
-#define I365_VPP2_MASK 0x0c    /* Mask for turning off Vpp2 */
-#define I365_VPP2_5V   0x04    /* Vpp2 = 5.0v */
-#define I365_VPP2_12V  0x08    /* Vpp2 = 12.0v */
-#define I365_VPP1_MASK 0x03    /* Mask for turning off Vpp1 */
-#define I365_VPP1_5V   0x01    /* Vpp2 = 5.0v */
-#define I365_VPP1_12V  0x02    /* Vpp2 = 12.0v */
-
-/* Flags for I365_INTCTL */
-#define I365_RING_ENA  0x80
-#define I365_PC_RESET  0x40
-#define I365_PC_IOCARD 0x20
-#define I365_INTR_ENA  0x10
-#define I365_IRQ_MASK  0x0F
-
-/* Flags for I365_CSC and I365_CSCINT*/
-#define I365_CSC_BVD1  0x01
-#define I365_CSC_STSCHG        0x01
-#define I365_CSC_BVD2  0x02
-#define I365_CSC_READY 0x04
-#define I365_CSC_DETECT        0x08
-#define I365_CSC_ANY   0x0F
-#define I365_CSC_GPI   0x10
-
-/* Flags for I365_ADDRWIN */
-#define I365_ADDR_MEMCS16      0x20
-#define I365_ENA_IO(map)       (0x40 << (map))
-#define I365_ENA_MEM(map)      (0x01 << (map))
-
-/* Flags for I365_IOCTL */
-#define I365_IOCTL_MASK(map)   (0x0F << (map<<2))
-#define I365_IOCTL_WAIT(map)   (0x08 << (map<<2))
-#define I365_IOCTL_0WS(map)    (0x04 << (map<<2))
-#define I365_IOCTL_IOCS16(map) (0x02 << (map<<2))
-#define I365_IOCTL_16BIT(map)  (0x01 << (map<<2))
-
-/* Flags for I365_GENCTL */
-#define I365_CTL_16DELAY       0x01
-#define I365_CTL_RESET         0x02
-#define I365_CTL_GPI_ENA       0x04
-#define I365_CTL_GPI_CTL       0x08
-#define I365_CTL_RESUME                0x10
-#define I365_CTL_SW_IRQ                0x20
-
-/* Flags for I365_GBLCTL */
-#define I365_GBL_PWRDOWN       0x01
-#define I365_GBL_CSC_LEV       0x02
-#define I365_GBL_WRBACK                0x04
-#define I365_GBL_IRQ_0_LEV     0x08
-#define I365_GBL_IRQ_1_LEV     0x10
-
-/* Flags for memory window registers */
-#define I365_MEM_16BIT 0x8000  /* In memory start high byte */
-#define I365_MEM_0WS   0x4000
-#define I365_MEM_WS1   0x8000  /* In memory stop high byte */
-#define I365_MEM_WS0   0x4000
-#define I365_MEM_WRPROT        0x8000  /* In offset high byte */
-#define I365_MEM_REG   0x4000
-
-#define I365_REG(slot, reg)    (((slot) << 6) | (reg))
-
-/* Default ISA interrupt mask */
-#define I365_ISA_IRQ_MASK      0xdeb8  /* irq's 3-5,7,9-12,14,15 */
-
-/* Device ID's for PCI-to-PCMCIA bridges */
-
-#ifndef PCI_VENDOR_ID_INTEL
-#define PCI_VENDOR_ID_INTEL            0x8086
-#endif
-#ifndef PCI_DEVICE_ID_INTEL_82092AA_0
-#define PCI_DEVICE_ID_INTEL_82092AA_0  0x1221
-#endif
-#ifndef PCI_VENDOR_ID_OMEGA
-#define PCI_VENDOR_ID_OMEGA            0x119b
-#endif
-#ifndef PCI_DEVICE_ID_OMEGA_82C092G
-#define PCI_DEVICE_ID_OMEGA_82C092G    0x1221
-#endif
-
-#endif /* _LINUX_I82365_H */
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h
deleted file mode 100644 (file)
index aafae8a..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * ss.h 1.31 2001/08/24 12:16:13
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_SS_H
-#define _LINUX_SS_H
-
-/* For RegisterCallback */
-typedef struct ss_callback_t {
-    void       (*handler)(void *info, u_int events);
-    void       *info;
-} ss_callback_t;
-
-/* Definitions for card status flags for GetStatus */
-#define SS_WRPROT      0x0001
-#define SS_CARDLOCK    0x0002
-#define SS_EJECTION    0x0004
-#define SS_INSERTION   0x0008
-#define SS_BATDEAD     0x0010
-#define SS_BATWARN     0x0020
-#define SS_READY       0x0040
-#define SS_DETECT      0x0080
-#define SS_POWERON     0x0100
-#define SS_GPI         0x0200
-#define SS_STSCHG      0x0400
-#define SS_CARDBUS     0x0800
-#define SS_3VCARD      0x1000
-#define SS_XVCARD      0x2000
-#define SS_PENDING     0x4000
-
-/* for InquireSocket */
-typedef struct socket_cap_t {
-    u_int      features;
-    u_int      irq_mask;
-    u_int      map_size;
-    u_char     pci_irq;
-    u_char     cardbus;
-    struct pci_bus *cb_bus;
-    struct bus_operations *bus;
-} socket_cap_t;
-
-/* InquireSocket capabilities */
-#define SS_CAP_PAGE_REGS       0x0001
-#define SS_CAP_VIRTUAL_BUS     0x0002
-#define SS_CAP_MEM_ALIGN       0x0004
-#define SS_CAP_STATIC_MAP      0x0008
-#define SS_CAP_PCCARD          0x4000
-#define SS_CAP_CARDBUS         0x8000
-
-/* for GetSocket, SetSocket */
-typedef struct socket_state_t {
-    u_int      flags;
-    u_int      csc_mask;
-    u_char     Vcc, Vpp;
-    u_char     io_irq;
-} socket_state_t;
-
-/* Socket configuration flags */
-#define SS_PWR_AUTO    0x0010
-#define SS_IOCARD      0x0020
-#define SS_RESET       0x0040
-#define SS_DMA_MODE    0x0080
-#define SS_SPKR_ENA    0x0100
-#define SS_OUTPUT_ENA  0x0200
-#define SS_ZVCARD      0x0400
-
-/* Flags for I/O port and memory windows */
-#define MAP_ACTIVE     0x01
-#define MAP_16BIT      0x02
-#define MAP_AUTOSZ     0x04
-#define MAP_0WS                0x08
-#define MAP_WRPROT     0x10
-#define MAP_ATTRIB     0x20
-#define MAP_USE_WAIT   0x40
-#define MAP_PREFETCH   0x80
-
-/* Use this just for bridge windows */
-#define MAP_IOSPACE    0x20
-
-typedef struct pccard_io_map {
-    u_char     map;
-    u_char     flags;
-    u_short    speed;
-    u_short    start, stop;
-} pccard_io_map;
-
-typedef struct pccard_mem_map {
-    u_char     map;
-    u_char     flags;
-    u_short    speed;
-    u_long     sys_start, sys_stop;
-    u_int      card_start;
-} pccard_mem_map;
-
-typedef struct cb_bridge_map {
-    u_char     map;
-    u_char     flags;
-    u_int      start, stop;
-} cb_bridge_map;
-
-enum ss_service {
-    SS_RegisterCallback, SS_InquireSocket,
-    SS_GetStatus, SS_GetSocket, SS_SetSocket,
-    SS_GetIOMap, SS_SetIOMap, SS_GetMemMap, SS_SetMemMap,
-    SS_GetBridge, SS_SetBridge, SS_ProcSetup
-};
-
-#endif /* _LINUX_SS_H */
diff --git a/include/pcmcia/ti113x.h b/include/pcmcia/ti113x.h
deleted file mode 100644 (file)
index 5453588..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * ti113x.h 1.31 2002/05/12 18:19:47
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_TI113X_H
-#define _LINUX_TI113X_H
-
-#ifndef PCI_VENDOR_ID_TI
-#define PCI_VENDOR_ID_TI               0x104c
-#endif
-
-#ifndef PCI_DEVICE_ID_TI_1130
-#define PCI_DEVICE_ID_TI_1130          0xac12
-#endif
-#ifndef PCI_DEVICE_ID_TI_1031
-#define PCI_DEVICE_ID_TI_1031          0xac13
-#endif
-#ifndef PCI_DEVICE_ID_TI_1131
-#define PCI_DEVICE_ID_TI_1131          0xac15
-#endif
-#ifndef PCI_DEVICE_ID_TI_1210
-#define PCI_DEVICE_ID_TI_1210          0xac1a
-#endif
-#ifndef PCI_DEVICE_ID_TI_1211
-#define PCI_DEVICE_ID_TI_1211          0xac1e
-#endif
-#ifndef PCI_DEVICE_ID_TI_1220
-#define PCI_DEVICE_ID_TI_1220          0xac17
-#endif
-#ifndef PCI_DEVICE_ID_TI_1221
-#define PCI_DEVICE_ID_TI_1221          0xac19
-#endif
-#ifndef PCI_DEVICE_ID_TI_1250A
-#define PCI_DEVICE_ID_TI_1250A         0xac16
-#endif
-#ifndef PCI_DEVICE_ID_TI_1225
-#define PCI_DEVICE_ID_TI_1225          0xac1c
-#endif
-#ifndef PCI_DEVICE_ID_TI_1251A
-#define PCI_DEVICE_ID_TI_1251A         0xac1d
-#endif
-#ifndef PCI_DEVICE_ID_TI_1251B
-#define PCI_DEVICE_ID_TI_1251B         0xac1f
-#endif
-#ifndef PCI_DEVICE_ID_TI_1410
-#define PCI_DEVICE_ID_TI_1410          0xac50
-#endif
-#ifndef PCI_DEVICE_ID_TI_1420
-#define PCI_DEVICE_ID_TI_1420          0xac51
-#endif
-#ifndef PCI_DEVICE_ID_TI_1450
-#define PCI_DEVICE_ID_TI_1450          0xac1b
-#endif
-#ifndef PCI_DEVICE_ID_TI_1451
-#define PCI_DEVICE_ID_TI_1451          0xac52
-#endif
-#ifndef PCI_DEVICE_ID_TI_1510
-#define PCI_DEVICE_ID_TI_1510          0xac56
-#endif
-#ifndef PCI_DEVICE_ID_TI_4410
-#define PCI_DEVICE_ID_TI_4410          0xac41
-#endif
-#ifndef PCI_DEVICE_ID_TI_4450
-#define PCI_DEVICE_ID_TI_4450          0xac40
-#endif
-#ifndef PCI_DEVICE_ID_TI_4451
-#define PCI_DEVICE_ID_TI_4451          0xac42
-#endif
-
-/* Register definitions for TI 113X PCI-to-CardBus bridges */
-
-/* System Control Register */
-#define TI113X_SYSTEM_CONTROL          0x80    /* 32 bit */
-#define  TI113X_SCR_SMIROUTE           0x04000000
-#define  TI113X_SCR_SMISTATUS          0x02000000
-#define  TI113X_SCR_SMIENB             0x01000000
-#define  TI113X_SCR_VCCPROT            0x00200000
-#define  TI113X_SCR_REDUCEZV           0x00100000
-#define  TI113X_SCR_CDREQEN            0x00080000
-#define  TI113X_SCR_CDMACHAN           0x00070000
-#define  TI113X_SCR_SOCACTIVE          0x00002000
-#define  TI113X_SCR_PWRSTREAM          0x00000800
-#define  TI113X_SCR_DELAYUP            0x00000400
-#define  TI113X_SCR_DELAYDOWN          0x00000200
-#define  TI113X_SCR_INTERROGATE                0x00000100
-#define  TI113X_SCR_CLKRUN_SEL         0x00000080
-#define  TI113X_SCR_PWRSAVINGS         0x00000040
-#define  TI113X_SCR_SUBSYSRW           0x00000020
-#define  TI113X_SCR_CB_DPAR            0x00000010
-#define  TI113X_SCR_CDMA_EN            0x00000008
-#define  TI113X_SCR_ASYNC_IRQ          0x00000004
-#define  TI113X_SCR_KEEPCLK            0x00000002
-#define  TI113X_SCR_CLKRUN_ENA         0x00000001
-
-#define  TI122X_SCR_SER_STEP           0xc0000000
-#define  TI122X_SCR_INTRTIE            0x20000000
-#define  TI122X_SCR_P2CCLK             0x08000000
-#define  TI122X_SCR_CBRSVD             0x00400000
-#define  TI122X_SCR_MRBURSTDN          0x00008000
-#define  TI122X_SCR_MRBURSTUP          0x00004000
-#define  TI122X_SCR_RIMUX              0x00000001
-
-/* Multimedia Control Register */
-#define TI1250_MULTIMEDIA_CTL          0x84    /* 8 bit */
-#define  TI1250_MMC_ZVOUTEN            0x80
-#define  TI1250_MMC_PORTSEL            0x40
-#define  TI1250_MMC_ZVEN1              0x02
-#define  TI1250_MMC_ZVEN0              0x01
-
-#define TI1250_GENERAL_STATUS          0x85    /* 8 bit */
-#define TI1250_GPIO0_CONTROL           0x88    /* 8 bit */
-#define TI1250_GPIO1_CONTROL           0x89    /* 8 bit */
-#define TI1250_GPIO2_CONTROL           0x8a    /* 8 bit */
-#define TI1250_GPIO3_CONTROL           0x8b    /* 8 bit */
-#define TI12XX_IRQMUX                  0x8c    /* 32 bit */
-
-/* Retry Status Register */
-#define TI113X_RETRY_STATUS            0x90    /* 8 bit */
-#define  TI113X_RSR_PCIRETRY           0x80
-#define  TI113X_RSR_CBRETRY            0x40
-#define  TI113X_RSR_TEXP_CBB           0x20
-#define  TI113X_RSR_MEXP_CBB           0x10
-#define  TI113X_RSR_TEXP_CBA           0x08
-#define  TI113X_RSR_MEXP_CBA           0x04
-#define  TI113X_RSR_TEXP_PCI           0x02
-#define  TI113X_RSR_MEXP_PCI           0x01
-
-/* Card Control Register */
-#define TI113X_CARD_CONTROL            0x91    /* 8 bit */
-#define  TI113X_CCR_RIENB              0x80
-#define  TI113X_CCR_ZVENABLE           0x40
-#define  TI113X_CCR_PCI_IRQ_ENA                0x20
-#define  TI113X_CCR_PCI_IREQ           0x10
-#define  TI113X_CCR_PCI_CSC            0x08
-#define  TI113X_CCR_SPKROUTEN          0x02
-#define  TI113X_CCR_IFG                        0x01
-
-#define  TI1220_CCR_PORT_SEL           0x20
-#define  TI122X_CCR_AUD2MUX            0x04
-
-/* Device Control Register */
-#define TI113X_DEVICE_CONTROL          0x92    /* 8 bit */
-#define  TI113X_DCR_5V_FORCE           0x40
-#define  TI113X_DCR_3V_FORCE           0x20
-#define  TI113X_DCR_IMODE_MASK         0x06
-#define  TI113X_DCR_IMODE_ISA          0x02
-#define  TI113X_DCR_IMODE_SERIAL       0x04
-
-#define  TI12XX_DCR_IMODE_PCI_ONLY     0x00
-#define  TI12XX_DCR_IMODE_ALL_SERIAL   0x06
-
-/* Buffer Control Register */
-#define TI113X_BUFFER_CONTROL          0x93    /* 8 bit */
-#define  TI113X_BCR_CB_READ_DEPTH      0x08
-#define  TI113X_BCR_CB_WRITE_DEPTH     0x04
-#define  TI113X_BCR_PCI_READ_DEPTH     0x02
-#define  TI113X_BCR_PCI_WRITE_DEPTH    0x01
-
-/* Diagnostic Register */
-#define TI1250_DIAGNOSTIC              0x93    /* 8 bit */
-#define  TI1250_DIAG_TRUE_VALUE                0x80
-#define  TI1250_DIAG_PCI_IREQ          0x40
-#define  TI1250_DIAG_PCI_CSC           0x20
-#define  TI1250_DIAG_ASYNC_CSC         0x01
-
-/* DMA Registers */
-#define TI113X_DMA_0                   0x94    /* 32 bit */
-#define TI113X_DMA_1                   0x98    /* 32 bit */
-
-/* ExCA IO offset registers */
-#define TI113X_IO_OFFSET(map)          (0x36+((map)<<1))
-
-/* Data structure for tracking vendor-specific state */
-typedef struct ti113x_state_t {
-    u32                        sysctl;         /* TI113X_SYSTEM_CONTROL */
-    u8                 cardctl;        /* TI113X_CARD_CONTROL */
-    u8                 devctl;         /* TI113X_DEVICE_CONTROL */
-    u8                 diag;           /* TI1250_DIAGNOSTIC */
-    u32                        irqmux;         /* TI12XX_IRQMUX */
-} ti113x_state_t;
-
-#define TI_PCIC_ID \
-    IS_TI1130, IS_TI1131, IS_TI1031, IS_TI1210, IS_TI1211,     \
-    IS_TI1220, IS_TI1221, IS_TI1225, IS_TI1250A, IS_TI1251A,   \
-    IS_TI1251B, IS_TI1410, IS_TI1420, IS_TI1450, IS_TI1451,    \
-    IS_TI1510, IS_TI4410, IS_TI4450, IS_TI4451
-
-#define TI_PCIC_INFO \
-    { "TI 1130",  IS_TI|IS_CARDBUS, ID(TI, 1130) }, \
-    { "TI 1131",  IS_TI|IS_CARDBUS, ID(TI, 1131) }, \
-    { "TI 1031",  IS_TI|IS_CARDBUS, ID(TI, 1031) }, \
-    { "TI 1210",  IS_TI|IS_CARDBUS, ID(TI, 1210) }, \
-    { "TI 1211",  IS_TI|IS_CARDBUS, ID(TI, 1211) }, \
-    { "TI 1220",  IS_TI|IS_CARDBUS, ID(TI, 1220) }, \
-    { "TI 1221",  IS_TI|IS_CARDBUS, ID(TI, 1221) }, \
-    { "TI 1225",  IS_TI|IS_CARDBUS, ID(TI, 1225) }, \
-    { "TI 1250A", IS_TI|IS_CARDBUS, ID(TI, 1250A) }, \
-    { "TI 1251A", IS_TI|IS_CARDBUS, ID(TI, 1251A) }, \
-    { "TI 1251B", IS_TI|IS_CARDBUS, ID(TI, 1251B) }, \
-    { "TI 1410",  IS_TI|IS_CARDBUS, ID(TI, 1410) }, \
-    { "TI 1420",  IS_TI|IS_CARDBUS, ID(TI, 1420) }, \
-    { "TI 1450",  IS_TI|IS_CARDBUS, ID(TI, 1450) }, \
-    { "TI 1451",  IS_TI|IS_CARDBUS, ID(TI, 1451) }, \
-    { "TI 1510",  IS_TI|IS_CARDBUS, ID(TI, 1510) }, \
-    { "TI 4410",  IS_TI|IS_CARDBUS, ID(TI, 4410) }, \
-    { "TI 4450",  IS_TI|IS_CARDBUS, ID(TI, 4450) }, \
-    { "TI 4451",  IS_TI|IS_CARDBUS, ID(TI, 4451) }
-
-#endif /* _LINUX_TI113X_H */
index b4950776977e5440a75873065b753c472798a73e..1e282e2964ec44e5b24fd22b0febd5200dc0df88 100644 (file)
@@ -41,6 +41,7 @@ typedef enum {
        PHY_INTERFACE_MODE_MII,
        PHY_INTERFACE_MODE_GMII,
        PHY_INTERFACE_MODE_SGMII,
+       PHY_INTERFACE_MODE_SGMII_2500,
        PHY_INTERFACE_MODE_QSGMII,
        PHY_INTERFACE_MODE_TBI,
        PHY_INTERFACE_MODE_RMII,
@@ -57,6 +58,7 @@ static const char *phy_interface_strings[] = {
        [PHY_INTERFACE_MODE_MII]                = "mii",
        [PHY_INTERFACE_MODE_GMII]               = "gmii",
        [PHY_INTERFACE_MODE_SGMII]              = "sgmii",
+       [PHY_INTERFACE_MODE_SGMII_2500]         = "sgmii-2500",
        [PHY_INTERFACE_MODE_QSGMII]             = "qsgmii",
        [PHY_INTERFACE_MODE_TBI]                = "tbi",
        [PHY_INTERFACE_MODE_RMII]               = "rmii",
@@ -225,6 +227,7 @@ int gen10g_discover_mmds(struct phy_device *phydev);
 
 int phy_atheros_init(void);
 int phy_broadcom_init(void);
+int phy_cortina_init(void);
 int phy_davicom_init(void);
 int phy_et1011c_init(void);
 int phy_lxt_init(void);
@@ -239,6 +242,7 @@ int phy_vitesse_init(void);
 int board_phy_config(struct phy_device *phydev);
 
 /* PHY UIDs for various PHYs that are referenced in external code */
+#define PHY_UID_CS4340  0x13e51002
 #define PHY_UID_TN2020 0x00a19410
 
 #endif
diff --git a/include/power/as3722.h b/include/power/as3722.h
new file mode 100644 (file)
index 0000000..aa966d2
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2014 NVIDIA Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __POWER_AS3722_H__
+#define __POWER_AS3722_H__
+
+#include <asm/types.h>
+
+#define AS3722_GPIO_OUTPUT_VDDH (1 << 0)
+#define AS3722_GPIO_INVERT (1 << 1)
+
+struct udevice;
+
+int as3722_init(struct udevice **devp);
+int as3722_sd_enable(struct udevice *pmic, unsigned int sd);
+int as3722_sd_set_voltage(struct udevice *pmic, unsigned int sd, u8 value);
+int as3722_ldo_enable(struct udevice *pmic, unsigned int ldo);
+int as3722_ldo_set_voltage(struct udevice *pmic, unsigned int ldo, u8 value);
+int as3722_gpio_configure(struct udevice *pmic, unsigned int gpio,
+                         unsigned long flags);
+int as3722_gpio_direction_output(struct udevice *pmic, unsigned int gpio,
+                                unsigned int level);
+
+#endif /* __POWER_AS3722_H__ */
index c2a772a8951eea4a2373eef22e849bb745d83e90..b0e42550a2a4eb3bfd591aca3de0a67c1c1f4e34 100644 (file)
@@ -150,6 +150,7 @@ enum {
 
 int max77686_set_ldo_voltage(struct pmic *p, int ldo, ulong uV);
 int max77686_set_ldo_mode(struct pmic *p, int ldo, char opmode);
+int max77686_set_buck_voltage(struct pmic *p, int buck, ulong uV);
 int max77686_set_buck_mode(struct pmic *p, int buck, char opmode);
 
 #define MAX77686_LDO_VOLT_MAX_HEX      0x3f
@@ -159,6 +160,8 @@ int max77686_set_buck_mode(struct pmic *p, int buck, char opmode);
 #define MAX77686_LDO_MODE_STANDBY      (0x01 << 0x06)
 #define MAX77686_LDO_MODE_LPM          (0x02 << 0x06)
 #define MAX77686_LDO_MODE_ON           (0x03 << 0x06)
+#define MAX77686_BUCK_VOLT_MAX_HEX     0x3f
+#define MAX77686_BUCK_VOLT_MASK                0x3f
 #define MAX77686_BUCK_MODE_MASK                0x03
 #define MAX77686_BUCK_MODE_SHIFT_1     0x00
 #define MAX77686_BUCK_MODE_SHIFT_2     0x04
index 0002f1e6029c8f58aea69ddfadfdf5e2abde267a..11184893bfb99966e9e6fd089344911175b47ca9 100644 (file)
@@ -37,6 +37,86 @@ enum {
        PMIC_NUM_OF_REGS        = 0x7f,
 };
 
+/*
+ * Buck Regulators
+ */
+
+/* SW1A/B/C Output Voltage Configuration */
+#define SW1x_0_300V 0
+#define SW1x_0_325V 1
+#define SW1x_0_350V 2
+#define SW1x_0_375V 3
+#define SW1x_0_400V 4
+#define SW1x_0_425V 5
+#define SW1x_0_450V 6
+#define SW1x_0_475V 7
+#define SW1x_0_500V 8
+#define SW1x_0_525V 9
+#define SW1x_0_550V 10
+#define SW1x_0_575V 11
+#define SW1x_0_600V 12
+#define SW1x_0_625V 13
+#define SW1x_0_650V 14
+#define SW1x_0_675V 15
+#define SW1x_0_700V 16
+#define SW1x_0_725V 17
+#define SW1x_0_750V 18
+#define SW1x_0_775V 19
+#define SW1x_0_800V 20
+#define SW1x_0_825V 21
+#define SW1x_0_850V 22
+#define SW1x_0_875V 23
+#define SW1x_0_900V 24
+#define SW1x_0_925V 25
+#define SW1x_0_950V 26
+#define SW1x_0_975V 27
+#define SW1x_1_000V 28
+#define SW1x_1_025V 29
+#define SW1x_1_050V 30
+#define SW1x_1_075V 31
+#define SW1x_1_100V 32
+#define SW1x_1_125V 33
+#define SW1x_1_150V 34
+#define SW1x_1_175V 35
+#define SW1x_1_200V 36
+#define SW1x_1_225V 37
+#define SW1x_1_250V 38
+#define SW1x_1_275V 39
+#define SW1x_1_300V 40
+#define SW1x_1_325V 41
+#define SW1x_1_350V 42
+#define SW1x_1_375V 43
+#define SW1x_1_400V 44
+#define SW1x_1_425V 45
+#define SW1x_1_450V 46
+#define SW1x_1_475V 47
+#define SW1x_1_500V 48
+#define SW1x_1_525V 49
+#define SW1x_1_550V 50
+#define SW1x_1_575V 51
+#define SW1x_1_600V 52
+#define SW1x_1_625V 53
+#define SW1x_1_650V 54
+#define SW1x_1_675V 55
+#define SW1x_1_700V 56
+#define SW1x_1_725V 57
+#define SW1x_1_750V 58
+#define SW1x_1_775V 59
+#define SW1x_1_800V 60
+#define SW1x_1_825V 61
+#define SW1x_1_850V 62
+#define SW1x_1_875V 63
+
+#define SW1x_NORMAL_MASK  0x3f
+#define SW1x_STBY_MASK    0x3f
+#define SW1x_OFF_MASK     0x3f
+
+#define SW1xCONF_DVSSPEED_MASK 0xc0
+#define SW1xCONF_DVSSPEED_2US  0x00
+#define SW1xCONF_DVSSPEED_4US  0x40
+#define SW1xCONF_DVSSPEED_8US  0x80
+#define SW1xCONF_DVSSPEED_16US 0xc0
+
 /*
  * LDO Configuration
  */
index 5fcef9cebb48892d46e080aeca59388aca1a18db..36d5975584549aefebd09c84311967ad4ad94c54 100644 (file)
@@ -80,7 +80,7 @@
 #define        r31     31
 
 
-#if defined(CONFIG_8xx) || defined(CONFIG_MPC824X)
+#if defined(CONFIG_8xx)
 
 /* Some special registers */
 
@@ -92,7 +92,7 @@
 #define LCTRL2 157     /* Load/Store Support       (37-41) */
 #define ICTRL  158
 
-#endif /* CONFIG_8xx, CONFIG_MPC824X */
+#endif /* CONFIG_8xx */
 
 
 #if  defined(CONFIG_5xx)
index c0349668bccb805f01bc1c8096ed1491b27f9599..d11aa8baf91b7370bf40a18f5785522448933386 100644 (file)
@@ -50,4 +50,9 @@ void to_tm (int, struct rtc_time *);
 unsigned long mktime (unsigned int, unsigned int, unsigned int,
                      unsigned int, unsigned int, unsigned int);
 
+/**
+ * rtc_init() - Set up the real time clock ready for use
+ */
+void rtc_init(void);
+
 #endif /* _RTC_H_ */
index e7c32623e101e31dde107d94468090dc3f041d4d..4c7745de91002d503640631f234d470c00ada0ee 100644 (file)
 
 int sandbox_fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info);
 
-long sandbox_fs_read_at(const char *filename, unsigned long pos,
-                            void *buffer, unsigned long maxsize);
+int sandbox_fs_read_at(const char *filename, loff_t pos, void *buffer,
+                      loff_t maxsize, loff_t *actread);
+int sandbox_fs_write_at(const char *filename, loff_t pos, void *buffer,
+                       loff_t maxsize, loff_t *actwrite);
 
 void sandbox_fs_close(void);
 int sandbox_fs_ls(const char *dirname);
 int sandbox_fs_exists(const char *filename);
-int sandbox_fs_size(const char *filename);
-int fs_read_sandbox(const char *filename, void *buf, int offset, int len);
-int fs_write_sandbox(const char *filename, void *buf, int offset, int len);
+int sandbox_fs_size(const char *filename, loff_t *size);
+int fs_read_sandbox(const char *filename, void *buf, loff_t offset, loff_t len,
+                   loff_t *actread);
+int fs_write_sandbox(const char *filename, void *buf, loff_t offset,
+                    loff_t len, loff_t *actwrite);
 
 #endif
index 38f4b4acf6ca4e6f0e4804778674c39c42ac5c65..fa61da8ddd0431e7e34c12682a27bb7fc3a585ef 100644 (file)
@@ -3,12 +3,15 @@
 #include <part.h>
 
 int init_sata(int dev);
+int reset_sata(int dev);
 int scan_sata(int dev);
 ulong sata_read(int dev, ulong blknr, lbaint_t blkcnt, void *buffer);
 ulong sata_write(int dev, ulong blknr, lbaint_t blkcnt, const void *buffer);
 
 int sata_initialize(void);
 int __sata_initialize(void);
+int sata_stop(void);
+int __sata_stop(void);
 int sata_port_status(int dev, int port);
 
 extern block_dev_desc_t sata_dev_desc[];
index 8f574e4ef896617caa997f0f99823287f476e40a..66ed12c9c218840afe59631818a58f1bb433279d 100644 (file)
@@ -164,4 +164,53 @@ struct serial_dev_priv {
 /* Access the serial operations for a device */
 #define serial_get_ops(dev)    ((struct dm_serial_ops *)(dev)->driver->ops)
 
+void altera_jtag_serial_initialize(void);
+void altera_serial_initialize(void);
+void amirix_serial_initialize(void);
+void arc_serial_initialize(void);
+void arm_dcc_initialize(void);
+void asc_serial_initialize(void);
+void atmel_serial_initialize(void);
+void au1x00_serial_initialize(void);
+void bfin_jtag_initialize(void);
+void bfin_serial_initialize(void);
+void bmw_serial_initialize(void);
+void clps7111_serial_initialize(void);
+void cogent_serial_initialize(void);
+void cpci750_serial_initialize(void);
+void evb64260_serial_initialize(void);
+void imx_serial_initialize(void);
+void iop480_serial_initialize(void);
+void jz_serial_initialize(void);
+void ks8695_serial_initialize(void);
+void leon2_serial_initialize(void);
+void leon3_serial_initialize(void);
+void lh7a40x_serial_initialize(void);
+void lpc32xx_serial_initialize(void);
+void marvell_serial_initialize(void);
+void max3100_serial_initialize(void);
+void mcf_serial_initialize(void);
+void ml2_serial_initialize(void);
+void mpc512x_serial_initialize(void);
+void mpc5xx_serial_initialize(void);
+void mpc8260_scc_serial_initialize(void);
+void mpc8260_smc_serial_initialize(void);
+void mpc85xx_serial_initialize(void);
+void mpc8xx_serial_initialize(void);
+void mxc_serial_initialize(void);
+void mxs_auart_initialize(void);
+void ns16550_serial_initialize(void);
+void oc_serial_initialize(void);
+void p3mx_serial_initialize(void);
+void pl01x_serial_initialize(void);
+void pxa_serial_initialize(void);
+void s3c24xx_serial_initialize(void);
+void s5p_serial_initialize(void);
+void sa1100_serial_initialize(void);
+void sandbox_serial_initialize(void);
+void sconsole_serial_initialize(void);
+void sh_serial_initialize(void);
+void uartlite_serial_initialize(void);
+void zynq_serial_initialize(void);
+
 #endif
index 61afc7136d7c1ea8c84c7ef17d1b917ac3051a59..97d578dd55ad5ef1f0c8a873eb33386f261cbeb7 100644 (file)
@@ -25,7 +25,7 @@
 
 #include <asm/types.h>
 
-#if defined(CONFIG_SH3)
+#if defined(CONFIG_CPU_SH3)
 struct tmu_regs {
        u8      tocr;
        u8      reserved0;
@@ -45,9 +45,9 @@ struct tmu_regs {
        u16     reserved4;
        u32     tcpr2;
 };
-#endif /* CONFIG_SH3 */
+#endif /* CONFIG_CPU_SH3 */
 
-#if defined(CONFIG_SH4) || defined(CONFIG_RMOBILE)
+#if defined(CONFIG_CPU_SH4) || defined(CONFIG_RMOBILE)
 struct tmu_regs {
        u32 reserved;
        u8  tstr;
@@ -65,7 +65,7 @@ struct tmu_regs {
        u16 tcr2;
        u16 reserved5;
 };
-#endif /* CONFIG_SH4 */
+#endif /* CONFIG_CPU_SH4 */
 
 static inline unsigned long get_tmu0_clk_rate(void)
 {
diff --git a/include/smsc_lpc47m.h b/include/smsc_lpc47m.h
new file mode 100644 (file)
index 0000000..bffd622
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SMSC_LPC47M_H_
+#define _SMSC_LPC47M_H_
+
+/**
+ * Configure the base I/O port of the specified serial device and enable the
+ * serial device.
+ *
+ * @dev: High 8 bits = Super I/O port, low 8 bits = logical device number.
+ * @iobase: Processor I/O port address to assign to this serial device.
+ */
+void lpc47m_enable_serial(u16 dev, u16 iobase);
+
+#endif /* _SMSC_LPC47M_H_ */
index aa0a48ea62710dd019c77c75cc5350a9f61fb14d..ec17bd0bcc8963e4c4e402e57c0003d3b839b568 100644 (file)
@@ -34,6 +34,7 @@
 
 /* SPI TX operation modes */
 #define SPI_OPM_TX_QPP         (1 << 0)
+#define SPI_OPM_TX_BP          (1 << 1)
 
 /* SPI RX operation modes */
 #define SPI_OPM_RX_AS          (1 << 0)
@@ -534,18 +535,14 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
 int spi_chip_select(struct udevice *slave);
 
 /**
- * spi_bind_device() - bind a device to a bus's chip select
- *
- * This binds a new device to an given chip select (which must be unused).
+ * spi_find_chip_select() - Find the slave attached to chip select
  *
  * @bus:       SPI bus to search
- * @cs:                Chip select to attach to
- * @drv_name:  Name of driver to attach to this chip select
- * @dev_name:  Name of the new device thus created
- * @devp:      Returns the newly bound device
+ * @cs:                Chip select to look for
+ * @devp:      Returns the slave device if found
+ * @return 0 if found, -ENODEV on error
  */
-int spi_bind_device(struct udevice *bus, int cs, const char *drv_name,
-                   const char *dev_name, struct udevice **devp);
+int spi_find_chip_select(struct udevice *bus, int cs, struct udevice **devp);
 
 /**
  * spi_ofdata_to_platdata() - decode standard SPI platform data
index 16b3566a947398493fe102afa7e210048e1b2429..b2e5bf726f2b60d7d81d8bafb5a9ec8357749ff4 100644 (file)
@@ -35,6 +35,7 @@ extern struct spl_image_info spl_image;
 void preloader_console_init(void);
 u32 spl_boot_device(void);
 u32 spl_boot_mode(void);
+void spl_set_header_raw_uboot(void);
 void spl_parse_image_header(const struct image_header *header);
 void spl_board_prepare_for_linux(void);
 void __noreturn jump_to_image_linux(void *arg);
index c5de89433247c233fdd68df42a4e94bbfedb77b4..27f4bdfa8773b36233f7bdc57136c655d5908e5c 100644 (file)
@@ -56,64 +56,6 @@ void status_led_set  (int led, int state);
 
 # define STATUS_LED_BOOT       0               /* LED 0 used for boot status */
 
-/*****  IVMS8  **********************************************************/
-#elif defined(CONFIG_IVMS8)
-
-# define STATUS_LED_PAR                im_cpm.cp_pbpar
-# define STATUS_LED_DIR                im_cpm.cp_pbdir
-# define STATUS_LED_ODR                im_cpm.cp_pbodr
-# define STATUS_LED_DAT                im_cpm.cp_pbdat
-
-# define STATUS_LED_BIT                0x00000010      /* LED 0 is on PB.27    */
-# define STATUS_LED_PERIOD     (1 * CONFIG_SYS_HZ)
-# define STATUS_LED_STATE      STATUS_LED_OFF
-# define STATUS_LED_BIT1       0x00000020      /* LED 1 is on PB.26    */
-# define STATUS_LED_PERIOD1    (1 * CONFIG_SYS_HZ)
-# define STATUS_LED_STATE1     STATUS_LED_OFF
-/* IDE LED usable for other purposes, too */
-# define STATUS_LED_BIT2       0x00000008      /* LED 2 is on PB.28    */
-# define STATUS_LED_PERIOD2    (1 * CONFIG_SYS_HZ)
-# define STATUS_LED_STATE2     STATUS_LED_OFF
-
-# define STATUS_LED_ACTIVE     1               /* LED on for bit == 1  */
-
-# define STATUS_ILOCK_SWITCH   0x00800000      /* ILOCK switch in IRQ4 */
-
-# define STATUS_ILOCK_PERIOD   (CONFIG_SYS_HZ / 10)    /* about every 100 ms   */
-
-# define STATUS_LED_YELLOW     0
-# define STATUS_LED_GREEN      1
-# define STATUS_LED_BOOT       2               /* IDE LED used for boot status */
-
-/*****  IVML24  *********************************************************/
-#elif defined(CONFIG_IVML24)
-
-# define STATUS_LED_PAR                im_cpm.cp_pbpar
-# define STATUS_LED_DIR                im_cpm.cp_pbdir
-# define STATUS_LED_ODR                im_cpm.cp_pbodr
-# define STATUS_LED_DAT                im_cpm.cp_pbdat
-
-# define STATUS_LED_BIT                0x00000010      /* LED 0 is on PB.27    */
-# define STATUS_LED_PERIOD     (1 * CONFIG_SYS_HZ)
-# define STATUS_LED_STATE      STATUS_LED_OFF
-# define STATUS_LED_BIT1       0x00000020      /* LED 1 is on PB.26    */
-# define STATUS_LED_PERIOD1    (1 * CONFIG_SYS_HZ)
-# define STATUS_LED_STATE1     STATUS_LED_OFF
-/* IDE LED usable for other purposes, too */
-# define STATUS_LED_BIT2       0x00000008      /* LED 2 is on PB.28    */
-# define STATUS_LED_PERIOD2    (1 * CONFIG_SYS_HZ)
-# define STATUS_LED_STATE2     STATUS_LED_OFF
-
-# define STATUS_LED_ACTIVE     1               /* LED on for bit == 1  */
-
-# define STATUS_ILOCK_SWITCH   0x00004000      /* ILOCK is on PB.17    */
-
-# define STATUS_ILOCK_PERIOD   (CONFIG_SYS_HZ / 10)    /* about every 100 ms   */
-
-# define STATUS_LED_YELLOW     0
-# define STATUS_LED_GREEN      1
-# define STATUS_LED_BOOT       2               /* IDE LED used for boot status */
-
 /*****  Someone else defines these  *************************************/
 #elif defined(STATUS_LED_PAR)
 
@@ -122,29 +64,6 @@ void status_led_set  (int led, int state);
    * filling this file up with lots of custom board stuff.
    */
 
-/*****  NetVia   ********************************************************/
-#elif defined(CONFIG_NETVIA)
-
-#if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1
-
-#define STATUS_LED_PAR         im_ioport.iop_pdpar
-#define STATUS_LED_DIR         im_ioport.iop_pddir
-#undef  STATUS_LED_ODR
-#define STATUS_LED_DAT         im_ioport.iop_pddat
-
-# define STATUS_LED_BIT                0x0080                  /* PD.8 */
-# define STATUS_LED_PERIOD     (CONFIG_SYS_HZ / 2)
-# define STATUS_LED_STATE      STATUS_LED_BLINKING
-
-# define STATUS_LED_BIT1       0x0040                  /* PD.9 */
-# define STATUS_LED_PERIOD1    (CONFIG_SYS_HZ / 2)
-# define STATUS_LED_STATE1     STATUS_LED_OFF
-
-# define STATUS_LED_ACTIVE     0               /* LED on for bit == 0  */
-# define STATUS_LED_BOOT       0               /* LED 0 used for boot status */
-
-#endif
-
 /*****  CMI   ********************************************************/
 #elif defined(CONFIG_CMI)
 # define STATUS_LED_DIR                im_mios.mios_mpiosm32ddr
@@ -158,22 +77,6 @@ void status_led_set  (int led, int state);
 # define STATUS_LED_ACTIVE     1               /* LED on for bit == 0  */
 # define STATUS_LED_BOOT       0               /* LED 0 used for boot status */
 
-/*****  KUP4K, KUP4X  ****************************************************/
-#elif defined(CONFIG_KUP4K) || defined(CONFIG_KUP4X)
-
-# define STATUS_LED_PAR                im_ioport.iop_papar
-# define STATUS_LED_DIR                im_ioport.iop_padir
-# define STATUS_LED_ODR                im_ioport.iop_paodr
-# define STATUS_LED_DAT                im_ioport.iop_padat
-
-# define STATUS_LED_BIT                0x00000300  /*  green + red    PA[8]=yellow,  PA[7]=red,  PA[6]=green */
-# define STATUS_LED_PERIOD     (CONFIG_SYS_HZ / 2)
-# define STATUS_LED_STATE      STATUS_LED_BLINKING
-
-# define STATUS_LED_ACTIVE     1               /* LED on for bit == 1  */
-
-# define STATUS_LED_BOOT       0               /* LED 0 used for boot status */
-
 #elif defined(CONFIG_V38B)
 
 # define STATUS_LED_BIT                0x0010                  /* Timer7 GPIO */
diff --git a/include/thermal.h b/include/thermal.h
new file mode 100644 (file)
index 0000000..5d6101b
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ *
+ * (C) Copyright 2014 Freescale Semiconductor, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _THERMAL_H_
+#define _THERMAL_H_
+
+#include <dm.h>
+
+int thermal_get_temp(struct udevice *dev, int *temp);
+
+/**
+ * struct struct dm_thermal_ops - Driver model Thermal operations
+ *
+ * The uclass interface is implemented by all Thermal devices which use
+ * driver model.
+ */
+struct dm_thermal_ops {
+       /**
+        * Get the current temperature
+        *
+        * The device provided is the slave device. It's parent controller
+        * will be used to provide the communication.
+        *
+        * This must be called before doing any transfers with a Thermal slave.
+        * It will enable and initialize any Thermal hardware as necessary,
+        * and make sure that the SCK line is in the correct idle state. It is
+        * not allowed to claim the same bus for several slaves without
+        * releasing the bus in between.
+        *
+        * @dev:        The Thermal device
+        *
+        * Returns: 0 if the bus was claimed successfully, or a negative value
+        * if it wasn't.
+        */
+       int (*get_temp)(struct udevice *dev, int *temp);
+};
+
+#endif /* _THERMAL_H_ */
index 78ce428767671c43c827828b455b70b969f38ec0..eefc95f22ea688d937b92f959cc9ef9887d6b29c 100644 (file)
@@ -44,9 +44,9 @@ int tps6586x_adjust_sm0_sm1(int sm0_target, int sm1_target, int step, int rate,
  * Set up the TPS6586X I2C bus number. This will be used for all operations
  * on the device. This function must be called before using other functions.
  *
- * @param bus  I2C bus number containing the TPS6586X chip
+ * @param bus  I2C bus containing the TPS6586X chip
  * @return 0 (always succeeds)
  */
-int tps6586x_init(int bus);
+int tps6586x_init(struct udevice *bus);
 
 #endif /* _TPS6586X_H_ */
index 871327fb358a9e894447f99fca22faa2294d31e3..09a38d782fc0287fa2194b47e58f0e1fab22d945 100644 (file)
@@ -89,14 +89,7 @@ int trace_list_calls(void *buff, int buff_size, unsigned int *needed);
  */
 void trace_set_enabled(int enabled);
 
-#ifdef CONFIG_TRACE_EARLY
 int trace_early_init(void);
-#else
-static inline int trace_early_init(void)
-{
-       return 0;
-}
-#endif
 
 /**
  * Init the trace system
index 093c61d6db0c969222b782ed074d0fb00606b74d..50f8da822afd364e987f781191ace7551b8ba713 100644 (file)
 
 /* Voltage Selection in PM Receiver Module */
 #define TWL4030_PM_RECEIVER_VAUX2_VSEL_18              0x05
+#define TWL4030_PM_RECEIVER_VAUX2_VSEL_28              0x09
+#define TWL4030_PM_RECEIVER_VAUX3_VSEL_18              0x01
 #define TWL4030_PM_RECEIVER_VAUX3_VSEL_28              0x03
 #define TWL4030_PM_RECEIVER_VPLL2_VSEL_18              0x05
 #define TWL4030_PM_RECEIVER_VDAC_VSEL_18               0x03
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30              0x02
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32              0x03
+#define TWL4030_PM_RECEIVER_VMMC2_VSEL_30              0x0B
+#define TWL4030_PM_RECEIVER_VMMC2_VSEL_32              0x0C
 #define TWL4030_PM_RECEIVER_VSIM_VSEL_18               0x03
 
 /* Device Selection in PM Receiver Module */
@@ -647,7 +651,7 @@ void twl4030_pmrecv_vsel_cfg(u8 vsel_reg, u8 vsel_val,
 /* For initializing power device */
 void twl4030_power_init(void);
 /* For initializing mmc power */
-void twl4030_power_mmc_init(void);
+void twl4030_power_mmc_init(int dev_index);
 
 /*
  * LED
index 1fd15f43e4ace6318a1c47fc17a7cf66443ade57..324fe720163ac06b84f3fac8803ec863fa5c3200 100644 (file)
 
 #undef CONFIG_MTD_UBI_BLOCK
 
+/* ubi_init() disables returning error codes when built into the Linux
+ * kernel so that it doesn't hang the Linux kernel boot process.  Since
+ * the U-Boot driver code depends on getting valid error codes from this
+ * function we just tell the UBI layer that we are building as a module
+ * (which only enables the additional error reporting).
+ */
+#define CONFIG_MTD_UBI_MODULE
+
 #if !defined(CONFIG_MTD_UBI_BEB_LIMIT)
 #define CONFIG_MTD_UBI_BEB_LIMIT       20
 #endif
index c4a288d5e9f804bbbda4ac9c8c24f13d1bd59c55..d3c741597c64f64c06281f3d3ce807769d91f4e9 100644 (file)
@@ -11,6 +11,8 @@
 
 #include <usb_defs.h>
 #include <linux/usb/ch9.h>
+#include <asm/cache.h>
+#include <part.h>
 
 /*
  * The EHCI spec says that we must align to at least 32 bytes.  However,
@@ -129,6 +131,8 @@ struct usb_device {
        unsigned int slot_id;
 };
 
+struct int_queue;
+
 /*
  * You can initialize platform's USB host or device
  * ports by passing this enum as an argument to
@@ -163,6 +167,13 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
 int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
                        int transfer_len, int interval);
 
+#ifdef CONFIG_USB_EHCI /* Only the ehci code has pollable int support */
+struct int_queue *create_int_queue(struct usb_device *dev, unsigned long pipe,
+       int queuesize, int elementsize, void *buffer);
+int destroy_int_queue(struct usb_device *dev, struct int_queue *queue);
+void *poll_int_queue(struct usb_device *dev, struct int_queue *queue);
+#endif
+
 /* Defines */
 #define USB_UHCI_VEND_ID       0x8086
 #define USB_UHCI_DEV_ID                0x7112
index dd77ad63254f94d03355501c9ed3a21da97826bd..e9349b5c1666db1838ef8da34d194ee5c83bbb16 100644 (file)
 #elif defined(CONFIG_MPC512X)
 #define CONFIG_SYS_FSL_USB1_ADDR CONFIG_SYS_MPC512x_USB1_ADDR
 #define CONFIG_SYS_FSL_USB2_ADDR       0
+#elif defined(CONFIG_LS102XA)
+#define CONFIG_SYS_FSL_USB1_ADDR CONFIG_SYS_LS102XA_USB1_ADDR
+#define CONFIG_SYS_FSL_USB2_ADDR        0
 #endif
 
 /*
@@ -277,7 +280,9 @@ struct usb_ehci {
 #define MXC_EHCI_IPPUE_DOWN            (1 << 10)
 #define MXC_EHCI_IPPUE_UP              (1 << 11)
 
+int usb_phy_mode(int port);
 /* Board-specific initialization */
 int board_ehci_hcd_init(int port);
+int board_usb_phy_mode(int port);
 
 #endif /* _EHCI_FSL_H */
diff --git a/include/usb/omap1510_udc.h b/include/usb/omap1510_udc.h
deleted file mode 100644 (file)
index adfbf54..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * (C) Copyright 2003
- * Gerry Hamel, geh@ti.com, Texas Instruments
- *
- * Based on
- * linux/drivers/usb/device/bi/omap.h
- * Register definitions for TI OMAP1510 USB bus interface driver
- *
- * Author: MontaVista Software, Inc.
- *        source@mvista.com
- *
- * 2003 (c) MontaVista Software, Inc. This file is licensed under
- * the terms of the GNU General Public License version 2. This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- */
-
-#ifndef __USBDCORE_OMAP1510_H__
-#define __USBDCORE_OMAP1510_H__
-
-
-/*
- * 13.2 MPU Register Map
- */
-
-/* Table 13-1. USB Function Module Registers (endpoint) */
-#define UDC_BASE                    0xFFFB4000
-#define UDC_OFFSET(offset)          (UDC_BASE + (offset))
-#define UDC_REV                             UDC_OFFSET(0x0)    /* Revision */
-#define UDC_EP_NUM                  UDC_OFFSET(0x4)    /* Endpoint selection */
-#define UDC_DATA                    UDC_OFFSET(0x08)   /* Data */
-#define UDC_CTRL                    UDC_OFFSET(0x0C)   /* Control */
-#define UDC_STAT_FLG                UDC_OFFSET(0x10)   /* Status flag */
-#define UDC_RXFSTAT                 UDC_OFFSET(0x14)   /* Receive FIFO status */
-#define UDC_SYSCON1                 UDC_OFFSET(0x18)   /* System configuration 1 */
-#define UDC_SYSCON2                 UDC_OFFSET(0x1C)   /* System configuration 2 */
-#define UDC_DEVSTAT                 UDC_OFFSET(0x20)   /* Device status */
-#define UDC_SOF                             UDC_OFFSET(0x24)   /* Start of frame */
-#define UDC_IRQ_EN                  UDC_OFFSET(0x28)   /* Interrupt enable */
-#define UDC_DMA_IRQ_EN              UDC_OFFSET(0x2C)   /* DMA interrupt enable */
-#define UDC_IRQ_SRC                 UDC_OFFSET(0x30)   /* Interrupt source */
-#define UDC_EPN_STAT                UDC_OFFSET(0x34)   /* Endpoint interrupt status */
-#define UDC_DMAN_STAT               UDC_OFFSET(0x3C)   /* DMA endpoint interrupt status */
-
-/* IRQ_EN register fields */
-#define UDC_Sof_IE                  (1 << 7)   /* Start-of-frame interrupt enabled */
-#define UDC_EPn_RX_IE               (1 << 5)   /* Receive endpoint interrupt enabled */
-#define UDC_EPn_TX_IE               (1 << 4)   /* Transmit endpoint interrupt enabled */
-#define UDC_DS_Chg_IE               (1 << 3)   /* Device state changed interrupt enabled */
-#define UDC_EP0_IE                  (1 << 0)   /* EP0 transaction interrupt enabled */
-
-/* IRQ_SRC register fields */
-#define UDC_TXn_Done                (1 << 10)  /* Transmit DMA channel n done */
-#define UDC_RXn_Cnt                 (1 << 9)   /* Receive DMA channel n transactions count */
-#define UDC_RXn_EOT                 (1 << 8)   /* Receive DMA channel n end of transfer */
-#define UDC_SOF_Flg                 (1 << 7)   /* Start-of-frame interrupt flag */
-#define UDC_EPn_RX                  (1 << 5)   /* Endpoint n OUT transaction */
-#define UDC_EPn_TX                  (1 << 4)   /* Endpoint n IN transaction */
-#define UDC_DS_Chg                  (1 << 3)   /* Device state changed */
-#define UDC_Setup                   (1 << 2)   /* Setup transaction */
-#define UDC_EP0_RX                  (1 << 1)   /* EP0 OUT transaction */
-#define UDC_EP0_TX                  (1 << 0)   /* EP0 IN transaction */
-
-/* DEVSTAT register fields, 14.2.9 */
-#define UDC_R_WK_OK                 (1 << 6)   /* Remote wakeup granted */
-#define UDC_USB_Reset               (1 << 5)   /* USB reset signalling is active */
-#define UDC_SUS                             (1 << 4)   /* Suspended state */
-#define UDC_CFG                             (1 << 3)   /* Configured state */
-#define UDC_ADD                             (1 << 2)   /* Addressed state */
-#define UDC_DEF                             (1 << 1)   /* Default state */
-#define UDC_ATT                             (1 << 0)   /* Attached state */
-
-/* SYSCON1 register fields */
-#define UDC_Cfg_Lock                (1 << 8)   /* Device configuration locked */
-#define UDC_Nak_En                  (1 << 4)   /* NAK enable */
-#define UDC_Self_Pwr                (1 << 2)   /* Device is self-powered */
-#define UDC_Soff_Dis                (1 << 1)   /* Shutoff disabled */
-#define UDC_Pullup_En               (1 << 0)   /* External pullup enabled */
-
-/* SYSCON2 register fields */
-#define UDC_Rmt_Wkp                 (1 << 6)   /* Remote wakeup */
-#define UDC_Stall_Cmd               (1 << 5)   /* Stall endpoint */
-#define UDC_Dev_Cfg                 (1 << 3)   /* Device configured */
-#define UDC_Clr_Cfg                 (1 << 2)   /* Clear configured */
-
-/*
- * Select and enable endpoints
- */
-
-/* Table 13-1. USB Function Module Registers (endpoint configuration) */
-#define UDC_EPBASE                  UDC_OFFSET(0x80)   /* Endpoints base address */
-#define UDC_EP0                             UDC_EPBASE /* Control endpoint configuration */
-#define UDC_EP_RX_BASE              UDC_OFFSET(0x84)   /* Receive endpoints base address */
-#define UDC_EP_RX(endpoint)         (UDC_EP_RX_BASE + ((endpoint) - 1) * 4)
-#define UDC_EP_TX_BASE              UDC_OFFSET(0xC4)   /* Transmit endpoints base address */
-#define UDC_EP_TX(endpoint)         (UDC_EP_TX_BASE + ((endpoint) - 1) * 4)
-
-/* EP_NUM register fields */
-#define UDC_Setup_Sel               (1 << 6)   /* Setup FIFO select */
-#define UDC_EP_Sel                  (1 << 5)   /* TX/RX FIFO select */
-#define UDC_EP_Dir                  (1 << 4)   /* Endpoint direction */
-
-/* CTRL register fields */
-#define UDC_Clr_Halt                (1 << 7)   /* Clear halt endpoint */
-#define UDC_Set_Halt                (1 << 6)   /* Set halt endpoint */
-#define UDC_Set_FIFO_En                     (1 << 2)   /* Set FIFO enable */
-#define UDC_Clr_EP                  (1 << 1)   /* Clear endpoint */
-#define UDC_Reset_EP                (1 << 0)   /* Reset endpoint */
-
-/* STAT_FLG register fields */
-#define UDC_Miss_In                 (1 << 14)
-#define UDC_Data_Flush              (1 << 13)
-#define UDC_ISO_Err                 (1 << 12)
-#define UDC_ISO_FIFO_Empty          (1 << 9)
-#define UDC_ISO_FIFO_Full           (1 << 8)
-#define UDC_EP_Halted               (1 << 6)
-#define UDC_STALL                   (1 << 5)
-#define UDC_NAK                             (1 << 4)
-#define UDC_ACK                             (1 << 3)
-#define UDC_FIFO_En                 (1 << 2)
-#define UDC_Non_ISO_FIFO_Empty      (1 << 1)
-#define UDC_Non_ISO_FIFO_Full       (1 << 0)
-
-/* EPn_RX register fields */
-#define UDC_EPn_RX_Valid            (1 << 15)  /* valid */
-#define UDC_EPn_RX_Db               (1 << 14)  /* double-buffer */
-#define UDC_EPn_RX_Iso              (1 << 11)  /* isochronous */
-
-/* EPn_TX register fields */
-#define UDC_EPn_TX_Valid            (1 << 15)  /* valid */
-#define UDC_EPn_TX_Db               (1 << 14)  /* double-buffer */
-#define UDC_EPn_TX_Iso              (1 << 11)  /* isochronous */
-
-#define EP0_PACKETSIZE              0x40
-
-/* physical to logical endpoint mapping
- * Physical endpoints are an index into device->bus->endpoint_array.
- * Logical endpoints are endpoints 0 to 15 IN and OUT as defined in
- * the USB specification.
- *
- *     physical ep     logical ep      direction       endpoint_address
- *     0               0               IN and OUT      0x00
- *     1 to 15         1 to 15         OUT             0x01 to 0x0f
- *     16 to 30        1 to 15         IN              0x81 to 0x8f
- */
-#define PHYS_EP_TO_EP_ADDR(ep) (((ep) < 16) ? (ep) : (((ep) - 15) | 0x80))
-#define EP_ADDR_TO_PHYS_EP(a) (((a) & 0x80) ? (((a) & ~0x80) + 15) : (a))
-
-/* MOD_CONF_CTRL_0 bits (FIXME: move to board hardware.h ?) */
-#define CONF_MOD_USB_W2FC_VBUS_MODE_R (1 << 17)
-
-/* Other registers (may be) related to USB */
-
-#define CLOCK_CTRL         (0xFFFE0830)
-#define APLL_CTRL          (0xFFFE084C)
-#define DPLL_CTRL          (0xFFFE083C)
-#define SOFT_REQ           (0xFFFE0834)
-#define STATUS_REQ         (0xFFFE0840)
-
-/* FUNC_MUX_CTRL_0 bits related to USB */
-#define UDC_VBUS_CTRL      (1 << 19)
-#define UDC_VBUS_MODE      (1 << 18)
-
-/* OMAP Endpoint parameters */
-#define UDC_OUT_PACKET_SIZE    64
-#define UDC_IN_PACKET_SIZE     64
-#define UDC_INT_PACKET_SIZE    16
-#define UDC_BULK_PACKET_SIZE   16
-
-#define UDC_INT_ENDPOINT 5
-#define UDC_OUT_ENDPOINT 2
-#define UDC_IN_ENDPOINT        1
-
-#endif
index 70e48f88ee7386e86bba22a71b903f45c11f9359..7f49a4e2d5cfec88c301a69b264d5e8bd1888938 100644 (file)
@@ -108,5 +108,6 @@ struct s3c_plat_otg_data {
        unsigned int    regs_otg;
        unsigned int    usb_phy_ctrl;
        unsigned int    usb_flags;
+       unsigned int    usb_gusbcfg;
 };
 #endif
index 35700a21b59f857db06c06085e0415e4da1f7fdd..b38d037fbe0f1014305512ae077fa8f72697aa9b 100644 (file)
@@ -49,6 +49,12 @@ int asix_eth_probe(struct usb_device *dev, unsigned int ifnum,
 int asix_eth_get_info(struct usb_device *dev, struct ueth_data *ss,
                      struct eth_device *eth);
 
+void ax88179_eth_before_probe(void);
+int ax88179_eth_probe(struct usb_device *dev, unsigned int ifnum,
+                     struct ueth_data *ss);
+int ax88179_eth_get_info(struct usb_device *dev, struct ueth_data *ss,
+                     struct eth_device *eth);
+
 void mcs7830_eth_before_probe(void);
 int mcs7830_eth_probe(struct usb_device *dev, unsigned int ifnum,
                      struct ueth_data *ss);
diff --git a/include/vbe.h b/include/vbe.h
new file mode 100644 (file)
index 0000000..d405691
--- /dev/null
@@ -0,0 +1,103 @@
+/******************************************************************************
+ * Copyright (c) 2004, 2008 IBM Corporation
+ * Copyright (c) 2009 Pattrick Hueper <phueper@hueper.net>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:    BSD-2-Clause
+ *
+ * Contributors:
+ *     IBM Corporation - initial implementation
+ *****************************************************************************/
+#ifndef _VBE_H
+#define _VBE_H
+
+/* these structs are for input from and output to OF */
+struct __packed screen_info {
+       u8 display_type;        /* 0=NONE, 1= analog, 2=digital */
+       u16 screen_width;
+       u16 screen_height;
+       /* bytes per line in framebuffer, may be more than screen_width */
+       u16 screen_linebytes;
+       u8 color_depth; /* color depth in bits per pixel */
+       u32 framebuffer_address;
+       u8 edid_block_zero[128];
+};
+
+struct __packed screen_info_input {
+       u8 signature[4];
+       u16 size_reserved;
+       u8 monitor_number;
+       u16 max_screen_width;
+       u8 color_depth;
+};
+
+/* these structs only store the required a subset of the VBE-defined fields */
+struct __packed vbe_info {
+       char signature[4];
+       u16 version;
+       u8 *oem_string_ptr;
+       u32 capabilities;
+       u16 video_mode_list[256];
+       u16 total_memory;
+};
+
+struct __packed vesa_mode_info {
+       u16 mode_attributes;    /* 00 */
+       u8 win_a_attributes;    /* 02 */
+       u8 win_b_attributes;    /* 03 */
+       u16 win_granularity;    /* 04 */
+       u16 win_size;           /* 06 */
+       u16 win_a_segment;      /* 08 */
+       u16 win_b_segment;      /* 0a */
+       u32 win_func_ptr;       /* 0c */
+       u16 bytes_per_scanline; /* 10 */
+       u16 x_resolution;       /* 12 */
+       u16 y_resolution;       /* 14 */
+       u8 x_charsize;          /* 16 */
+       u8 y_charsize;          /* 17 */
+       u8 number_of_planes;    /* 18 */
+       u8 bits_per_pixel;      /* 19 */
+       u8 number_of_banks;     /* 20 */
+       u8 memory_model;        /* 21 */
+       u8 bank_size;           /* 22 */
+       u8 number_of_image_pages; /* 23 */
+       u8 reserved_page;
+       u8 red_mask_size;
+       u8 red_mask_pos;
+       u8 green_mask_size;
+       u8 green_mask_pos;
+       u8 blue_mask_size;
+       u8 blue_mask_pos;
+       u8 reserved_mask_size;
+       u8 reserved_mask_pos;
+       u8 direct_color_mode_info;
+       u32 phys_base_ptr;
+       u32 offscreen_mem_offset;
+       u16 offscreen_mem_size;
+       u8 reserved[206];
+};
+
+struct vbe_mode_info {
+       u16 video_mode;
+       bool valid;
+       union {
+               struct vesa_mode_info vesa;
+               u8 mode_info_block[256];
+       };
+};
+
+struct vbe_ddc_info {
+       u8 port_number; /* i.e. monitor number */
+       u8 edid_transfer_time;
+       u8 ddc_level;
+       u8 edid_block_zero[128];
+};
+
+#define VESA_GET_INFO          0x4f00
+#define VESA_GET_MODE_INFO     0x4f01
+#define VESA_SET_MODE          0x4f02
+
+struct graphic_device;
+int vbe_get_video_info(struct graphic_device *gdev);
+
+#endif
diff --git a/include/video_ad7176.h b/include/video_ad7176.h
deleted file mode 100644 (file)
index 6a0230e..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * (C) Copyright 2000
- * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _VIDEO_AD7176_H_
-#define _VIDEO_AD7176_H_
-
-#define VIDEO_ENCODER_NAME     "Analog Devices AD7176"
-
-#define VIDEO_ENCODER_I2C_RATE 100000  /* Max rate is 100 kHz          */
-#define VIDEO_ENCODER_CB_Y_CR_Y                /* Use CB Y CR Y format...      */
-
-#define VIDEO_MODE_YUYV                /* The only mode supported by this encoder */
-#undef VIDEO_MODE_RGB
-#define VIDEO_MODE_BPP         16
-
-#ifdef VIDEO_MODE_PAL
-#define VIDEO_ACTIVE_COLS      720
-#define VIDEO_ACTIVE_ROWS      576
-#define VIDEO_VISIBLE_COLS     640
-#define VIDEO_VISIBLE_ROWS     480
-#endif
-
-#ifdef VIDEO_MODE_NTSC
-#define VIDEO_ACTIVE_COLS      720
-#define VIDEO_ACTIVE_ROWS      525
-#define VIDEO_VISIBLE_COLS     640
-#define VIDEO_VISIBLE_ROWS     400
-#endif
-
-static unsigned char video_encoder_data[] = {
-#ifdef VIDEO_MODE_NTSC
-                                       0x04, /* Mode Register 0        */
-#ifdef VIDEO_DEBUG_COLORBARS
-                                       0x82,
-#else
-                                       0x02, /* Mode Register 1        */
-#endif /* VIDEO_DEBUG_COLORBARS */
-                                       0x16, /* Subcarrier Freq 0      */
-                                       0x7c, /* Subcarrier Freq 1      */
-                                       0xf0, /* Subcarrier Freq 2      */
-                                       0x21, /* Subcarrier Freq 3      */
-                                       0x00, /* Subcarrier phase       */
-                                       0x02, /* Timing Register 0      */
-                                       0x00, /* Extended Captioning 0  */
-                                       0x00, /* Extended Captioning 1  */
-                                       0x00, /* Closed Captioning 0    */
-                                       0x00, /* Closed Captioning 1    */
-                                       0x00, /* Timing Register 1      */
-                                       0x08, /* Mode Register 2        */
-                                       0x00, /* Pedestal Register 0    */
-                                       0x00, /* Pedestal Register 1    */
-                                       0x00, /* Pedestal Register 2    */
-                                       0x00, /* Pedestal Register 3    */
-                                       0x00  /* Mode Register 3        */
-
-#endif /* VIDEO_MODE_NTSC */
-
-#ifdef VIDEO_MODE_PAL
-                                       0x05, /* Mode Register 0        */
-#ifdef VIDEO_DEBUG_COLORBARS
-                                       0x82,
-#else
-                                       0x02, /* Mode Register 1 (2)    */
-#endif /* VIDEO_DEBUG_COLORBARS */
-                                       0xcb, /* Subcarrier Freq 0      */
-                                       0x8a, /* Subcarrier Freq 1      */
-                                       0x09, /* Subcarrier Freq 2      */
-                                       0x2a, /* Subcarrier Freq 3      */
-                                       0x00, /* Subcarrier phase       */
-                                       0x0a, /* Timing Register 0 (a)  */
-                                       0x00, /* Extended Captioning 0  */
-                                       0x00, /* Extended Captioning 1  */
-                                       0x00, /* Closed Captioning 0    */
-                                       0x00, /* Closed Captioning 1    */
-                                       0x00, /* Timing Register 1      */
-                                       0x08, /* Mode Register 2 (8)    */
-                                       0x00, /* Pedestal Register 0    */
-                                       0x00, /* Pedestal Register 1    */
-                                       0x00, /* Pedestal Register 2    */
-                                       0x00, /* Pedestal Register 3    */
-                                       0x00  /* Mode Register 3        */
-#endif /* VIDEO_MODE_PAL */
-} ;
-
-#endif /* _VIDEO_AD7176_H_ */
diff --git a/include/video_ad7177.h b/include/video_ad7177.h
deleted file mode 100644 (file)
index 38436d6..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * (C) Copyright 2000
- * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _VIDEO_AD7177_H_
-#define _VIDEO_AD7177_H_
-
-/* #define VIDEO_DEBUG_DISABLE_COLORS  0 */
-
-#define VIDEO_ENCODER_NAME     "Analog Devices AD7177"
-
-#define VIDEO_ENCODER_I2C_RATE 100000  /* Max rate is 100 kHz          */
-#define VIDEO_ENCODER_CB_Y_CR_Y                /* Use CB Y CR Y format...      */
-
-#define VIDEO_MODE_YUYV                /* The only mode supported by this encoder */
-#undef VIDEO_MODE_RGB
-#define VIDEO_MODE_BPP         16
-
-#ifdef VIDEO_MODE_PAL
-#define VIDEO_ACTIVE_COLS      720
-#define VIDEO_ACTIVE_ROWS      576
-#define VIDEO_VISIBLE_COLS     640
-#define VIDEO_VISIBLE_ROWS     480
-#endif
-
-#ifdef VIDEO_MODE_NTSC
-#define VIDEO_ACTIVE_COLS      720
-#define VIDEO_ACTIVE_ROWS      525
-#define VIDEO_VISIBLE_COLS     640
-#define VIDEO_VISIBLE_ROWS     400
-#endif
-
-static unsigned char
-    video_encoder_data[] = {
-#ifdef VIDEO_MODE_NTSC
-                                       0x04, /* Mode Register 0        */
-#ifdef VIDEO_DEBUG_COLORBARS
-                                       0xc2,
-#else
-                                       0x42, /* Mode Register 1        */
-#endif /* VIDEO_DEBUG_COLORBARS */
-                                       0x16, /* Subcarrier Freq 0      */
-                                       0x7c, /* Subcarrier Freq 1      */
-                                       0xf0, /* Subcarrier Freq 2      */
-                                       0x21, /* Subcarrier Freq 3      */
-                                       0x00, /* Subcarrier phase       */
-                                       0x02, /* Timing Register 0      */
-                                       0x00, /* Extended Captioning 0  */
-                                       0x00, /* Extended Captioning 1  */
-                                       0x00, /* Closed Captioning 0    */
-                                       0x00, /* Closed Captioning 1    */
-                                       0x00, /* Timing Register 1      */
-                                       0x08, /* Mode Register 2        */
-                                       0x00, /* Pedestal Register 0    */
-                                       0x00, /* Pedestal Register 1    */
-                                       0x00, /* Pedestal Register 2    */
-                                       0x00, /* Pedestal Register 3    */
-                                       0x08, /* Mode Register 3        */
-
-#endif /* VIDEO_MODE_NTSC */
-
-#ifdef VIDEO_MODE_PAL
-#ifdef VIDEO_MODE_RGB_OUT
-
-                                       0x69, /* Mode Register 0        */
-#ifdef VIDEO_DEBUG_COLORBARS
-                                       0xc0, /* Mode Register 1 (c0)   */
-#else
-                                       0x40, /* Mode Register 1 (c0)   */
-#endif /* VIDEO_DEBUG_COLORBARS */
-                                       0xcb, /* Subcarrier Freq 0      */
-                                       0x8a, /* Subcarrier Freq 1      */
-                                       0x09, /* Subcarrier Freq 2      */
-                                       0x2a, /* Subcarrier Freq 3      */
-                                       0x00, /* Subcarrier phase       */
-                                       0x02, /* Timing Register 0      */
-                                       0x00, /* Extended Captioning 0  */
-                                       0x00, /* Extended Captioning 1  */
-                                       0x00, /* Closed Captioning 0    */
-                                       0x00, /* Closed Captioning 1    */
-                                       0x00, /* Timing Register 1      */
-                                       0x28, /* Mode Register 2        */
-                                       0x00, /* Pedestal Register 0    */
-                                       0x00, /* Pedestal Register 1    */
-                                       0x00, /* Pedestal Register 2    */
-                                       0x00, /* Pedestal Register 3    */
-                                       0x08, /* Mode Register 3        */
-
-#else  /* ! VIDEO_MODE_RGB_OUT */
-
-                                       0x09, /* Mode Register 0 (was 01) */
-#ifdef VIDEO_DEBUG_COLORBARS
-                                       0xd8, /*                        */
-#else
-                                       0x59, /* Mode Register 1 (was 58) */
-#endif /* VIDEO_DEBUG_COLORBARS */
-                                       0xcb, /* Subcarrier Freq 0      */
-                                       0x8a, /* Subcarrier Freq 1      */
-                                       0x09, /* Subcarrier Freq 2      */
-                                       0x2a, /* Subcarrier Freq 3      */
-                                       0x00, /* Subcarrier phase       */
-                                       0x02, /* Timing Register 0 (was a) */
-                                       0x00, /* Extended Captioning 0  */
-                                       0x00, /* Extended Captioning 1  */
-                                       0x00, /* Closed Captioning 0    */
-                                       0x00, /* Closed Captioning 1    */
-                                       0x00, /* Timing Register 1      */
-#ifdef VIDEO_DEBUG_LOWPOWER
-#ifdef VIDEO_DEBUG_DISABLE_COLORS
-                                       0x98, /* Mode Register 2        */
-#else
-                                       0x88, /* Mode Register 2        */
-#endif /* VIDEO_DEBUG_DISABLE_COLORS */
-#else  /* ! VIDEO_DEBUG_LOWPOWER */
-#ifdef VIDEO_DEBUG_DISABLE_COLORS
-                                       0x18, /* Mode Register 2        */
-#else
-                                       0x08, /* Mode Register 2        */
-#endif /* VIDEO_DEBUG_DISABLE_COLORS */
-#endif /* VIDEO_DEBUG_LOWPOWER */
-                                       0x00, /* Pedestal Register 0    */
-                                       0x00, /* Pedestal Register 1    */
-                                       0x00, /* Pedestal Register 2    */
-                                       0x00, /* Pedestal Register 3    */
-                                       0x08  /* Mode Register 3        */
-#endif /* VIDEO_MODE_RGB_OUT */
-#endif /* VIDEO_MODE_PAL */
-    } ;
-
-#endif /* _VIDEO_AD7177_H_ */
diff --git a/include/video_ad7179.h b/include/video_ad7179.h
deleted file mode 100644 (file)
index 67c1ec0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * (C) Copyright 2003 Wolfgang Grandegger <wg@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _VIDEO_AD7179_H_
-#define _VIDEO_AD7179_H_
-
-/*
- * The video encoder data are board specific now!
- */
-
-#if defined(CONFIG_RRVISION)
-#include "../board/RRvision/video_ad7179.h"
-#else
-#error "Please provide a board-specific video_ad7179.h"
-#endif
-
-#endif /* _VIDEO_AD7179_H_ */
index 6cd4e377c20cc99a066035ead783bb83e8cc59ed..55ec24dbeef33672ba501eba10749f2f82944002 100644 (file)
@@ -40,7 +40,7 @@
 /* Export Graphic Driver Control                                              */
 /******************************************************************************/
 
-typedef struct {
+typedef struct graphic_device {
     unsigned int isaBase;
     unsigned int pciBase;
     unsigned int dprBase;
index 320197a5209ce8fea5a8dc13ba7b1ecf4e730285..07d175f45e87987c659404aba8e5774bccaf2860 100644 (file)
@@ -11,14 +11,12 @@ obj-$(CONFIG_RSA) += rsa/
 obj-$(CONFIG_LZMA) += lzma/
 obj-$(CONFIG_LZO) += lzo/
 obj-$(CONFIG_ZLIB) += zlib/
+obj-$(CONFIG_BZIP2) += bzip2/
 obj-$(CONFIG_TIZEN) += tizen/
+obj-$(CONFIG_OF_LIBFDT) += libfdt/
+obj-$(CONFIG_FIT) += libfdt/
 
 obj-$(CONFIG_AES) += aes.o
-obj-$(CONFIG_BZIP2) += bzlib.o
-obj-$(CONFIG_BZIP2) += bzlib_crctable.o
-obj-$(CONFIG_BZIP2) += bzlib_decompress.o
-obj-$(CONFIG_BZIP2) += bzlib_randtable.o
-obj-$(CONFIG_BZIP2) += bzlib_huffman.o
 obj-$(CONFIG_USB_TTY) += circbuf.o
 obj-y += crc7.o
 obj-y += crc8.o
@@ -53,6 +51,7 @@ endif
 obj-$(CONFIG_ADDR_MAP) += addr_map.o
 obj-y += hashtable.o
 obj-y += errno.o
+obj-$(CONFIG_ERRNO_STR) += errno_str.o
 obj-y += display_options.o
 obj-$(CONFIG_BCH) += bch.o
 obj-y += crc32.o
diff --git a/lib/bzip2/Makefile b/lib/bzip2/Makefile
new file mode 100644 (file)
index 0000000..929c24e
--- /dev/null
@@ -0,0 +1,2 @@
+obj-y += bzlib.o bzlib_crctable.o bzlib_decompress.o \
+       bzlib_randtable.o bzlib_huffman.o
similarity index 100%
rename from lib/bzlib.c
rename to lib/bzip2/bzlib.c
diff --git a/lib/errno_str.c b/lib/errno_str.c
new file mode 100644 (file)
index 0000000..0ba950e
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2014 Samsung Electronics
+ * Przemyslaw Marczak <p.marczak@samsung.com>
+ *
+ * SDPX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <errno.h>
+
+#define ERRNO_MSG(errno, msg)  msg
+#define SAME_AS(x)             (const char *)&errno_message[x]
+
+static const char * const errno_message[] = {
+       ERRNO_MSG(0, "Success"),
+       ERRNO_MSG(EPERM, "Operation not permitted"),
+       ERRNO_MSG(ENOEN, "No such file or directory"),
+       ERRNO_MSG(ESRCH, "No such process"),
+       ERRNO_MSG(EINTR, "Interrupted system call"),
+       ERRNO_MSG(EIO, "I/O error"),
+       ERRNO_MSG(ENXIO, "No such device or address"),
+       ERRNO_MSG(E2BIG, "Argument list too long"),
+       ERRNO_MSG(ENOEXEC, "Exec format error"),
+       ERRNO_MSG(EBADF, "Bad file number"),
+       ERRNO_MSG(ECHILD, "No child processes"),
+       ERRNO_MSG(EAGAIN, "Try again"),
+       ERRNO_MSG(ENOMEM, "Out of memory"),
+       ERRNO_MSG(EACCES, "Permission denied"),
+       ERRNO_MSG(EFAULT, "Bad address"),
+       ERRNO_MSG(ENOTBL, "Block device required"),
+       ERRNO_MSG(EBUSY, "Device or resource busy"),
+       ERRNO_MSG(EEXIST, "File exists"),
+       ERRNO_MSG(EXDEV, "Cross-device link"),
+       ERRNO_MSG(ENODEV, "No such device"),
+       ERRNO_MSG(ENOTDIR, "Not a directory"),
+       ERRNO_MSG(EISDIR, "Is a directory"),
+       ERRNO_MSG(EINVAL, "Invalid argument"),
+       ERRNO_MSG(ENFILE, "File table overflow"),
+       ERRNO_MSG(EMFILE, "Too many open files"),
+       ERRNO_MSG(ENOTTY, "Not a typewriter"),
+       ERRNO_MSG(ETXTBSY, "Text file busy"),
+       ERRNO_MSG(EFBIG, "File too large"),
+       ERRNO_MSG(ENOSPC, "No space left on device"),
+       ERRNO_MSG(ESPIPE, "Illegal seek"),
+       ERRNO_MSG(EROFS, "Read-only file system"),
+       ERRNO_MSG(EMLINK, "Too many links"),
+       ERRNO_MSG(EPIPE, "Broken pipe"),
+       ERRNO_MSG(EDOM, "Math argument out of domain of func"),
+       ERRNO_MSG(ERANGE, "Math result not representable"),
+       ERRNO_MSG(EDEADLK, "Resource deadlock would occur"),
+       ERRNO_MSG(ENAMETOOLONG, "File name too long"),
+       ERRNO_MSG(ENOLCK, "No record locks available"),
+       ERRNO_MSG(ENOSYS, "Function not implemented"),
+       ERRNO_MSG(ENOTEMPTY, "Directory not empty"),
+       ERRNO_MSG(ELOOP, "Too many symbolic links encountered"),
+       ERRNO_MSG(EWOULDBLOCK, SAME_AS(EAGAIN)),
+       ERRNO_MSG(ENOMSG, "No message of desired type"),
+       ERRNO_MSG(EIDRM, "Identifier removed"),
+       ERRNO_MSG(ECHRNG, "Channel number out of range"),
+       ERRNO_MSG(EL2NSYNC, "Level 2 not synchronized"),
+       ERRNO_MSG(EL3HLT, "Level 3 halted"),
+       ERRNO_MSG(EL3RST, "Level 3 reset"),
+       ERRNO_MSG(ELNRNG, "Link number out of range"),
+       ERRNO_MSG(EUNATCH, "Protocol driver not attached"),
+       ERRNO_MSG(ENOCSI, "No CSI structure available"),
+       ERRNO_MSG(EL2HLT, "Level 2 halted"),
+       ERRNO_MSG(EBADE, "Invalid exchange"),
+       ERRNO_MSG(EBADR, "Invalid request descriptor"),
+       ERRNO_MSG(EXFULL, "Exchange full"),
+       ERRNO_MSG(ENOANO, "No anode"),
+       ERRNO_MSG(EBADRQC, "Invalid request code"),
+       ERRNO_MSG(EBADSLT, "Invalid slot"),
+       ERRNO_MSG(EDEADLOCK, SAME_AS(EDEADLK)),
+       ERRNO_MSG(EBFONT, "Bad font file format"),
+       ERRNO_MSG(ENOSTR, "Device not a stream"),
+       ERRNO_MSG(ENODATA, "No data available"),
+       ERRNO_MSG(ETIME, "Timer expired"),
+       ERRNO_MSG(ENOSR, "Out of streams resources"),
+       ERRNO_MSG(ENONET, "Machine is not on the network"),
+       ERRNO_MSG(ENOPKG, "Package not installed"),
+       ERRNO_MSG(EREMOTE, "Object is remote"),
+       ERRNO_MSG(ENOLINK, "Link has been severed"),
+       ERRNO_MSG(EADV, "Advertise error"),
+       ERRNO_MSG(ESRMNT, "Srmount error"),
+       ERRNO_MSG(ECOMM, "Communication error on send"),
+       ERRNO_MSG(EPROTO, "Protocol error"),
+       ERRNO_MSG(EMULTIHOP, "Multihop attempted"),
+       ERRNO_MSG(EDOTDOT, "RFS specific error"),
+       ERRNO_MSG(EBADMSG, "Not a data message"),
+       ERRNO_MSG(EOVERFLOW, "Value too large for defined data type"),
+       ERRNO_MSG(ENOTUNIQ, "Name not unique on network"),
+       ERRNO_MSG(EBADFD, "File descriptor in bad state"),
+       ERRNO_MSG(EREMCHG, "Remote address changed"),
+       ERRNO_MSG(ELIBACC, "Can not access a needed shared library"),
+       ERRNO_MSG(ELIBBAD, "Accessing a corrupted shared library"),
+       ERRNO_MSG(ELIBSCN, ".lib section in a.out corrupted"),
+       ERRNO_MSG(ELIBMAX, "Attempting to link in too many shared libraries"),
+       ERRNO_MSG(ELIBEXEC, "Cannot exec a shared library directly"),
+       ERRNO_MSG(EILSEQ, "Illegal byte sequence"),
+       ERRNO_MSG(ERESTART, "Interrupted system call should be restarted"),
+       ERRNO_MSG(ESTRPIPE, "Streams pipe error"),
+       ERRNO_MSG(EUSERS, "Too many users"),
+       ERRNO_MSG(ENOTSOCK, "Socket operation on non-socket"),
+       ERRNO_MSG(EDESTADDRREQ, "Destination address required"),
+       ERRNO_MSG(EMSGSIZE, "Message too long"),
+       ERRNO_MSG(EPROTOTYPE, "Protocol wrong type for socket"),
+       ERRNO_MSG(ENOPROTOOPT, "Protocol not available"),
+       ERRNO_MSG(EPROTONOSUPPORT, "Protocol not supported"),
+       ERRNO_MSG(ESOCKTNOSUPPORT, "Socket type not supported"),
+       ERRNO_MSG(EOPNOTSUPP, "Operation not supported on transport endpoint"),
+       ERRNO_MSG(EPFNOSUPPORT, "Protocol family not supported"),
+       ERRNO_MSG(AFNOSUPPORT, "Address family not supported by protocol"),
+       ERRNO_MSG(EADDRINUSE, "Address already in use"),
+       ERRNO_MSG(EADDRNOTAVAIL, "Cannot assign requested address"),
+       ERRNO_MSG(ENETDOWN, "Network is down"),
+       ERRNO_MSG(ENETUNREACH, "Network is unreachable"),
+       ERRNO_MSG(ENETRESET, "Network dropped connection because of reset"),
+       ERRNO_MSG(ECONNABORTED, "Software caused connection abort"),
+       ERRNO_MSG(ECONNRESET, "Connection reset by peer"),
+       ERRNO_MSG(ENOBUFS, "No buffer space available"),
+       ERRNO_MSG(EISCONN, "Transport endpoint is already connected"),
+       ERRNO_MSG(ENOTCONN, "Transport endpoint is not connected"),
+       ERRNO_MSG(ESHUTDOWN, "Cannot send after transport endpoint shutdown"),
+       ERRNO_MSG(ETOOMANYREFS, "Too many references: cannot splice"),
+       ERRNO_MSG(ETIMEDOUT, "Connection timed out"),
+       ERRNO_MSG(ECONNREFUSED, "Connection refused"),
+       ERRNO_MSG(EHOSTDOWN, "Host is down"),
+       ERRNO_MSG(EHOSTUNREACH, "No route to host"),
+       ERRNO_MSG(EALREADY, "Operation already in progress"),
+       ERRNO_MSG(EINPROGRESS, "Operation now in progress"),
+       ERRNO_MSG(ESTALE, "Stale NFS file handle"),
+       ERRNO_MSG(EUCLEAN, "Structure needs cleaning"),
+       ERRNO_MSG(ENOTNAM, "Not a XENIX named type file"),
+       ERRNO_MSG(ENAVAIL, "No XENIX semaphores available"),
+       ERRNO_MSG(EISNAM, "Is a named type file"),
+       ERRNO_MSG(EREMOTEIO, "Remote I/O error"),
+       ERRNO_MSG(EDQUOT, "Quota exceeded"),
+       ERRNO_MSG(ENOMEDIUM, "No medium found"),
+       ERRNO_MSG(EMEDIUMTYPE, "Wrong medium type"),
+};
+
+const char *errno_str(int errno)
+{
+       if (errno >= 0)
+               return errno_message[0];
+
+       return errno_message[abs(errno)];
+}
index 9714620ab3e211df006d440dc4f1abb6d03bb9b8..487122eebcf64c9129abb60c91e91d328f207f29 100644 (file)
@@ -41,6 +41,10 @@ static const char * const compat_names[COMPAT_COUNT] = {
        COMPAT(NVIDIA_TEGRA20_SFLASH, "nvidia,tegra20-sflash"),
        COMPAT(NVIDIA_TEGRA20_SLINK, "nvidia,tegra20-slink"),
        COMPAT(NVIDIA_TEGRA114_SPI, "nvidia,tegra114-spi"),
+       COMPAT(NVIDIA_TEGRA124_PCIE, "nvidia,tegra124-pcie"),
+       COMPAT(NVIDIA_TEGRA30_PCIE, "nvidia,tegra30-pcie"),
+       COMPAT(NVIDIA_TEGRA20_PCIE, "nvidia,tegra20-pcie"),
+       COMPAT(NVIDIA_TEGRA124_XUSB_PADCTL, "nvidia,tegra124-xusb-padctl"),
        COMPAT(SMSC_LAN9215, "smsc,lan9215"),
        COMPAT(SAMSUNG_EXYNOS5_SROMC, "samsung,exynos-sromc"),
        COMPAT(SAMSUNG_S3C2440_I2C, "samsung,s3c2440-i2c"),
@@ -73,6 +77,12 @@ static const char * const compat_names[COMPAT_COUNT] = {
        COMPAT(SAMSUNG_EXYNOS_SYSMMU, "samsung,sysmmu-v3.3"),
        COMPAT(PARADE_PS8625, "parade,ps8625"),
        COMPAT(COMPAT_INTEL_LPC, "intel,lpc"),
+       COMPAT(INTEL_MICROCODE, "intel,microcode"),
+       COMPAT(MEMORY_SPD, "memory-spd"),
+       COMPAT(INTEL_PANTHERPOINT_AHCI, "intel,pantherpoint-ahci"),
+       COMPAT(INTEL_MODEL_206AX, "intel,model-206ax"),
+       COMPAT(INTEL_GMA, "intel,gma"),
+       COMPAT(AMS_AS3722, "ams,as3722"),
 };
 
 const char *fdtdec_get_compatible(enum fdt_compat_id id)
@@ -116,6 +126,163 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,
        return fdtdec_get_addr_size(blob, node, prop_name, NULL);
 }
 
+#ifdef CONFIG_PCI
+int fdtdec_get_pci_addr(const void *blob, int node, enum fdt_pci_space type,
+               const char *prop_name, struct fdt_pci_addr *addr)
+{
+       const u32 *cell;
+       int len;
+       int ret = -ENOENT;
+
+       debug("%s: %s: ", __func__, prop_name);
+
+       /*
+        * If we follow the pci bus bindings strictly, we should check
+        * the value of the node's parent node's #address-cells and
+        * #size-cells. They need to be 3 and 2 accordingly. However,
+        * for simplicity we skip the check here.
+        */
+       cell = fdt_getprop(blob, node, prop_name, &len);
+       if (!cell)
+               goto fail;
+
+       if ((len % FDT_PCI_REG_SIZE) == 0) {
+               int num = len / FDT_PCI_REG_SIZE;
+               int i;
+
+               for (i = 0; i < num; i++) {
+                       debug("pci address #%d: %08lx %08lx %08lx\n", i,
+                             (ulong)fdt_addr_to_cpu(cell[0]),
+                             (ulong)fdt_addr_to_cpu(cell[1]),
+                             (ulong)fdt_addr_to_cpu(cell[2]));
+                       if ((fdt_addr_to_cpu(*cell) & type) == type) {
+                               addr->phys_hi = fdt_addr_to_cpu(cell[0]);
+                               addr->phys_mid = fdt_addr_to_cpu(cell[1]);
+                               addr->phys_lo = fdt_addr_to_cpu(cell[2]);
+                               break;
+                       } else {
+                               cell += (FDT_PCI_ADDR_CELLS +
+                                        FDT_PCI_SIZE_CELLS);
+                       }
+               }
+
+               if (i == num)
+                       goto fail;
+
+               return 0;
+       } else {
+               ret = -EINVAL;
+       }
+
+fail:
+       debug("(not found)\n");
+       return ret;
+}
+
+int fdtdec_get_pci_vendev(const void *blob, int node, u16 *vendor, u16 *device)
+{
+       const char *list, *end;
+       int len;
+
+       list = fdt_getprop(blob, node, "compatible", &len);
+       if (!list)
+               return -ENOENT;
+
+       end = list + len;
+       while (list < end) {
+               char *s;
+
+               len = strlen(list);
+               if (len >= strlen("pciVVVV,DDDD")) {
+                       s = strstr(list, "pci");
+
+                       /*
+                        * check if the string is something like pciVVVV,DDDD.RR
+                        * or just pciVVVV,DDDD
+                        */
+                       if (s && s[7] == ',' &&
+                           (s[12] == '.' || s[12] == 0)) {
+                               s += 3;
+                               *vendor = simple_strtol(s, NULL, 16);
+
+                               s += 5;
+                               *device = simple_strtol(s, NULL, 16);
+
+                               return 0;
+                       }
+               } else {
+                       list += (len + 1);
+               }
+       }
+
+       return -ENOENT;
+}
+
+int fdtdec_get_pci_bdf(const void *blob, int node,
+               struct fdt_pci_addr *addr, pci_dev_t *bdf)
+{
+       u16 dt_vendor, dt_device, vendor, device;
+       int ret;
+
+       /* get vendor id & device id from the compatible string */
+       ret = fdtdec_get_pci_vendev(blob, node, &dt_vendor, &dt_device);
+       if (ret)
+               return ret;
+
+       /* extract the bdf from fdt_pci_addr */
+       *bdf = addr->phys_hi & 0xffff00;
+
+       /* read vendor id & device id based on bdf */
+       pci_read_config_word(*bdf, PCI_VENDOR_ID, &vendor);
+       pci_read_config_word(*bdf, PCI_DEVICE_ID, &device);
+
+       /*
+        * Note there are two places in the device tree to fully describe
+        * a pci device: one is via compatible string with a format of
+        * "pciVVVV,DDDD" and the other one is the bdf numbers encoded in
+        * the device node's reg address property. We read the vendor id
+        * and device id based on bdf and compare the values with the
+        * "VVVV,DDDD". If they are the same, then we are good to use bdf
+        * to read device's bar. But if they are different, we have to rely
+        * on the vendor id and device id extracted from the compatible
+        * string and locate the real bdf by pci_find_device(). This is
+        * because normally we may only know device's device number and
+        * function number when writing device tree. The bus number is
+        * dynamically assigned during the pci enumeration process.
+        */
+       if ((dt_vendor != vendor) || (dt_device != device)) {
+               *bdf = pci_find_device(dt_vendor, dt_device, 0);
+               if (*bdf == -1)
+                       return -ENODEV;
+       }
+
+       return 0;
+}
+
+int fdtdec_get_pci_bar32(const void *blob, int node,
+               struct fdt_pci_addr *addr, u32 *bar)
+{
+       pci_dev_t bdf;
+       int barnum;
+       int ret;
+
+       /* get pci devices's bdf */
+       ret = fdtdec_get_pci_bdf(blob, node, addr, &bdf);
+       if (ret)
+               return ret;
+
+       /* extract the bar number from fdt_pci_addr */
+       barnum = addr->phys_hi & 0xff;
+       if ((barnum < PCI_BASE_ADDRESS_0) || (barnum > PCI_CARDBUS_CIS))
+               return -EINVAL;
+
+       barnum = (barnum - PCI_BASE_ADDRESS_0) / 4;
+       *bar = pci_read_bar32(pci_bus_to_hose(PCI_BUS(bdf)), bdf, barnum);
+
+       return 0;
+}
+#endif
+
 uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,
                uint64_t default_val)
 {
@@ -355,9 +522,9 @@ int fdtdec_get_alias_seq(const void *blob, const char *base, int offset,
                slash = strrchr(prop, '/');
                if (strcmp(slash + 1, find_name))
                        continue;
-               for (p = name; *p; p++) {
-                       if (isdigit(*p)) {
-                               *seqp = simple_strtoul(p, NULL, 10);
+               for (p = name + strlen(name) - 1; p > name; p--) {
+                       if (!isdigit(*p)) {
+                               *seqp = simple_strtoul(p + 1, NULL, 10);
                                debug("Found seq %d\n", *seqp);
                                return 0;
                        }
@@ -368,21 +535,6 @@ int fdtdec_get_alias_seq(const void *blob, const char *base, int offset,
        return -ENOENT;
 }
 
-int fdtdec_get_alias_node(const void *blob, const char *name)
-{
-       const char *prop;
-       int alias_node;
-       int len;
-
-       if (!blob)
-               return -FDT_ERR_NOTFOUND;
-       alias_node = fdt_path_offset(blob, "/aliases");
-       prop = fdt_getprop(blob, alias_node, name, &len);
-       if (!prop)
-               return -FDT_ERR_NOTFOUND;
-       return fdt_path_offset(blob, prop);
-}
-
 int fdtdec_get_chosen_node(const void *blob, const char *name)
 {
        const char *prop;
@@ -485,6 +637,26 @@ int fdtdec_get_int_array(const void *blob, int node, const char *prop_name,
        return err;
 }
 
+int fdtdec_get_int_array_count(const void *blob, int node,
+                              const char *prop_name, u32 *array, int count)
+{
+       const u32 *cell;
+       int len, elems;
+       int i;
+
+       debug("%s: %s\n", __func__, prop_name);
+       cell = fdt_getprop(blob, node, prop_name, &len);
+       if (!cell)
+               return -FDT_ERR_NOTFOUND;
+       elems = len / sizeof(u32);
+       if (count > elems)
+               count = elems;
+       for (i = 0; i < count; i++)
+               array[i] = fdt32_to_cpu(cell[i]);
+
+       return count;
+}
+
 const u32 *fdtdec_locate_array(const void *blob, int node,
                               const char *prop_name, int count)
 {
@@ -669,20 +841,25 @@ char *fdtdec_get_config_string(const void *blob, const char *prop_name)
        return (char *)nodep;
 }
 
-int fdtdec_decode_region(const void *blob, int node,
-               const char *prop_name, void **ptrp, size_t *size)
+int fdtdec_decode_region(const void *blob, int node, const char *prop_name,
+                        fdt_addr_t *basep, fdt_size_t *sizep)
 {
        const fdt_addr_t *cell;
        int len;
 
-       debug("%s: %s\n", __func__, prop_name);
+       debug("%s: %s: %s\n", __func__, fdt_get_name(blob, node, NULL),
+             prop_name);
        cell = fdt_getprop(blob, node, prop_name, &len);
-       if (!cell || (len != sizeof(fdt_addr_t) * 2))
+       if (!cell || (len < sizeof(fdt_addr_t) * 2)) {
+               debug("cell=%p, len=%d\n", cell, len);
                return -1;
+       }
+
+       *basep = fdt_addr_to_cpu(*cell);
+       *sizep = fdt_size_to_cpu(cell[1]);
+       debug("%s: base=%08lx, size=%lx\n", __func__, (ulong)*basep,
+             (ulong)*sizep);
 
-       *ptrp = map_sysmem(fdt_addr_to_cpu(*cell), *size);
-       *size = fdt_size_to_cpu(cell[1]);
-       debug("%s: size=%zx\n", __func__, *size);
        return 0;
 }
 
@@ -698,6 +875,7 @@ int fdtdec_decode_region(const void *blob, int node,
 int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
                           struct fmap_entry *entry)
 {
+       const char *prop;
        u32 reg[2];
 
        if (fdtdec_get_int_array(blob, node, "reg", reg, 2)) {
@@ -706,6 +884,13 @@ int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
        }
        entry->offset = reg[0];
        entry->length = reg[1];
+       entry->used = fdtdec_get_int(blob, node, "used", entry->length);
+       prop = fdt_getprop(blob, node, "compress", NULL);
+       entry->compress_algo = prop && !strcmp(prop, "lzo") ?
+               FMAP_COMPRESS_LZO : FMAP_COMPRESS_NONE;
+       prop = fdt_getprop(blob, node, "hash", &entry->hash_size);
+       entry->hash_algo = prop ? FMAP_HASH_SHA256 : FMAP_HASH_NONE;
+       entry->hash = (uint8_t *)prop;
 
        return 0;
 }
@@ -767,16 +952,63 @@ int fdt_get_named_resource(const void *fdt, int node, const char *property,
        return fdt_get_resource(fdt, node, property, index, res);
 }
 
-int fdtdec_pci_get_bdf(const void *fdt, int node, int *bdf)
+int fdtdec_decode_memory_region(const void *blob, int config_node,
+                               const char *mem_type, const char *suffix,
+                               fdt_addr_t *basep, fdt_size_t *sizep)
 {
-       const fdt32_t *prop;
-       int len;
+       char prop_name[50];
+       const char *mem;
+       fdt_size_t size, offset_size;
+       fdt_addr_t base, offset;
+       int node;
 
-       prop = fdt_getprop(fdt, node, "reg", &len);
-       if (!prop)
-               return len;
+       if (config_node == -1) {
+               config_node = fdt_path_offset(blob, "/config");
+               if (config_node < 0) {
+                       debug("%s: Cannot find /config node\n", __func__);
+                       return -ENOENT;
+               }
+       }
+       if (!suffix)
+               suffix = "";
+
+       snprintf(prop_name, sizeof(prop_name), "%s-memory%s", mem_type,
+                suffix);
+       mem = fdt_getprop(blob, config_node, prop_name, NULL);
+       if (!mem) {
+               debug("%s: No memory type for '%s', using /memory\n", __func__,
+                     prop_name);
+               mem = "/memory";
+       }
+
+       node = fdt_path_offset(blob, mem);
+       if (node < 0) {
+               debug("%s: Failed to find node '%s': %s\n", __func__, mem,
+                     fdt_strerror(node));
+               return -ENOENT;
+       }
+
+       /*
+        * Not strictly correct - the memory may have multiple banks. We just
+        * use the first
+        */
+       if (fdtdec_decode_region(blob, node, "reg", &base, &size)) {
+               debug("%s: Failed to decode memory region %s\n", __func__,
+                     mem);
+               return -EINVAL;
+       }
+
+       snprintf(prop_name, sizeof(prop_name), "%s-offset%s", mem_type,
+                suffix);
+       if (fdtdec_decode_region(blob, config_node, prop_name, &offset,
+                                &offset_size)) {
+               debug("%s: Failed to decode memory region '%s'\n", __func__,
+                     prop_name);
+               return -EINVAL;
+       }
 
-       *bdf = fdt32_to_cpu(*prop) & 0xffffff;
+       *basep = base + offset;
+       *sizep = offset_size;
 
        return 0;
 }
index 39f4b3f8ad5ffecc59afa59f9e96a93f4e16fe5c..714274415c9f2e3ab21783f3e0806c466908d84d 100644 (file)
@@ -19,7 +19,11 @@ int initcall_run_list(const init_fnc_t init_sequence[])
 
                if (gd->flags & GD_FLG_RELOC)
                        reloc_ofs = gd->reloc_off;
-               debug("initcall: %p\n", (char *)*init_fnc_ptr - reloc_ofs);
+               debug("initcall: %p", (char *)*init_fnc_ptr - reloc_ofs);
+               if (gd->flags & GD_FLG_RELOC)
+                       debug(" (relocated to %p)\n", (char *)*init_fnc_ptr);
+               else
+                       debug("\n");
                ret = (*init_fnc_ptr)();
                if (ret) {
                        printf("initcall sequence %p failed at call %p (err=%d)\n",
index 6fe79e0b06e9c422b6bfcfffd8fdd968872960dc..2f5413f90d6797122875dfc9d8c547dee5162406 100644 (file)
@@ -5,8 +5,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-COBJS-libfdt += fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_sw.o fdt_wip.o \
+obj-y += fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_sw.o fdt_wip.o \
        fdt_empty_tree.o fdt_addresses.o
-
-obj-$(CONFIG_OF_LIBFDT) += $(COBJS-libfdt)
-obj-$(CONFIG_FIT) += $(COBJS-libfdt)
index 29c2ca7ef6b12688ccfec0c4ec8451ad47f49e1f..87c9a408e625de435c1051ccfaa20074dca0ad15 100644 (file)
@@ -102,6 +102,31 @@ char * strncpy(char * dest,const char *src,size_t count)
 }
 #endif
 
+#ifndef __HAVE_ARCH_STRLCPY
+/**
+ * strlcpy - Copy a C-string into a sized buffer
+ * @dest: Where to copy the string to
+ * @src: Where to copy the string from
+ * @size: size of destination buffer
+ *
+ * Compatible with *BSD: the result is always a valid
+ * NUL-terminated string that fits in the buffer (unless,
+ * of course, the buffer size is zero). It does not pad
+ * out the result like strncpy() does.
+ */
+size_t strlcpy(char *dest, const char *src, size_t size)
+{
+       size_t ret = strlen(src);
+
+       if (size) {
+               size_t len = (ret >= size) ? size - 1 : ret;
+               memcpy(dest, src, len);
+               dest[len] = '\0';
+       }
+       return ret;
+}
+#endif
+
 #ifndef __HAVE_ARCH_STRCAT
 /**
  * strcat - Append one %NUL-terminated string to another
index f9a17727f53b898e307a7b65853c00623f135909..5c16cc4fc7566dcfb7ff0eb6ccaed9074f5ecb4b 100644 (file)
@@ -11,11 +11,11 @@ char *strmhz (char *buf, unsigned long hz)
        long l, n;
        long m;
 
-       n = DIV_ROUND(hz, 1000) / 1000L;
+       n = DIV_ROUND_CLOSEST(hz, 1000) / 1000L;
        l = sprintf (buf, "%ld", n);
 
        hz -= n * 1000000L;
-       m = DIV_ROUND(hz, 1000L);
+       m = DIV_ROUND_CLOSEST(hz, 1000L);
        if (m != 0)
                sprintf (buf + l, ".%03ld", m);
        return (buf);
index b585713b7c55c78a598b165e547352ba7719c182..e0f264850f7fa75bc6cbeaad2537d3fffc4a318d 100644 (file)
@@ -25,9 +25,6 @@
 #include <div64.h>
 #define noinline __attribute__((noinline))
 
-/* some reluctance to put this into a new limits.h, so it is here */
-#define INT_MAX                ((int)(~0U>>1))
-
 unsigned long simple_strtoul(const char *cp, char **endp,
                                unsigned int base)
 {
@@ -518,6 +515,8 @@ static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width,
 static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
                int field_width, int precision, int flags)
 {
+       u64 num = (uintptr_t)ptr;
+
        /*
         * Being a boot loader, we explicitly allow pointers to
         * (physical) address null.
@@ -530,6 +529,17 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
 
 #ifdef CONFIG_CMD_NET
        switch (*fmt) {
+       case 'a':
+               flags |= SPECIAL | ZEROPAD;
+
+               switch (fmt[1]) {
+               case 'p':
+               default:
+                       field_width = sizeof(phys_addr_t) * 2 + 2;
+                       num = *(phys_addr_t *)ptr;
+                       break;
+               }
+               break;
        case 'm':
                flags |= SPECIAL;
                /* Fallthrough */
@@ -555,8 +565,7 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr,
                field_width = 2*sizeof(void *);
                flags |= ZEROPAD;
        }
-       return number(buf, end, (unsigned long)ptr, 16, field_width,
-                     precision, flags);
+       return number(buf, end, num, 16, field_width, precision, flags);
 }
 
 static int vsnprintf_internal(char *buf, size_t size, const char *fmt,
index 556be3275477c3523143d01dd12c0771ddf1fac6..af3703e6d7706b5f2a7e8e6c9e97323ea8a48438 100644 (file)
@@ -3,7 +3,7 @@
 #define __GLUE_ZLIB_H__
 
 #include <common.h>
-#include <compiler.h>
+#include <linux/compiler.h>
 #include <asm/unaligned.h>
 #include <watchdog.h>
 #include "u-boot/zlib.h"
index d4c86cf1794e7d78feafc837195f41a596a7dd6d..81066015f1c2ed28a4fb0ea1ec4bbeecec08047f 100644 (file)
@@ -145,8 +145,6 @@ static void BootpCopyNetParams(struct Bootp_t *bp)
        if (tmp_ip != 0)
                NetCopyIP(&NetServerIP, &bp->bp_siaddr);
        memcpy(NetServerEther, ((struct ethernet_hdr *)NetRxPacket)->et_src, 6);
-#endif
-       NetCopyIP(&NetOurIP, &bp->bp_yiaddr);
        if (strlen(bp->bp_file) > 0)
                copy_filename(BootFile, bp->bp_file, sizeof(BootFile));
 
@@ -158,6 +156,8 @@ static void BootpCopyNetParams(struct Bootp_t *bp)
         */
        if (*BootFile)
                setenv("bootfile", BootFile);
+#endif
+       NetCopyIP(&NetOurIP, &bp->bp_yiaddr);
 }
 
 static int truncate_sz(const char *name, int maxlen, int curlen)
index d94a437440792a94805f50ae05f3d8fccc7ac1d6..d512fa5c0846eeb595fc636c5a836ca26c369ae7 100644 (file)
@@ -170,7 +170,7 @@ DECLARE_GLOBAL_DATA_PTR;
  */
 static void move64(const unsigned long long *src, unsigned long long *dest)
 {
-#if defined(CONFIG_MPC8260) || defined(CONFIG_MPC824X)
+#if defined(CONFIG_MPC8260)
        asm ("lfd  0, 0(3)\n\t" /* fpr0   =  *scr       */
         "stfd 0, 0(4)"         /* *dest  =  fpr0       */
         : : : "fr0" );         /* Clobbers fr0         */
index 4c333599c1fe19e1775d6f5a51d88b7e87c65262..d20f20ae32c9ce34405bc2a244461d972aef4df8 100644 (file)
@@ -177,13 +177,13 @@ ld-ifversion = $(shell [ $(call ld-version) $(1) $(2) ] && echo $(3))
 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
 # Usage:
 # $(Q)$(MAKE) $(build)=dir
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
+build := -f $(srctree)/scripts/Makefile.build obj
 
 ###
 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj=
 # Usage:
 # $(Q)$(MAKE) $(modbuiltin)=dir
-modbuiltin := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.modbuiltin obj
+modbuiltin := -f $(srctree)/scripts/Makefile.modbuiltin obj
 
 # Prefix -I with $(srctree) if it is not an absolute path.
 # skip if -I has no parameter
@@ -221,11 +221,13 @@ else
 arg-check = $(if $(strip $(cmd_$@)),,1)
 endif
 
-# >'< substitution is for echo to work,
-# >$< substitution to preserve $ when reloading .cmd file
-# note: when using inline perl scripts [perl -e '...$$t=1;...']
-# in $(cmd_xxx) double $$ your perl vars
-make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))))
+# Replace >$< with >$$< to preserve $ when reloading the .cmd file
+# (needed for make)
+# Replace >#< with >\#< to avoid starting a comment in the .cmd file
+# (needed for make)
+# Replace >'< with >'\''< to be able to enclose the whole string in '...'
+# (needed for the shell)
+make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1)))))
 
 # Find any prerequisites that is newer than target or that does not exist.
 # PHONY targets skipped in both cases.
@@ -236,7 +238,7 @@ any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
 if_changed = $(if $(strip $(any-prereq) $(arg-check)),                       \
        @set -e;                                                             \
        $(echo-cmd) $(cmd_$(1));                                             \
-       echo 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd)
+       printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd)
 
 # Execute the command and also postprocess generated .d dependencies file.
 if_changed_dep = $(if $(strip $(any-prereq) $(arg-check) ),                  \
index ced2b9a6b0dc6b1dda10508a68010062de5e3a26..8e9d71f89e8aeb55f41f802915716b7027f42179 100644 (file)
@@ -89,9 +89,12 @@ PHONY += create_symlink
 create_symlink:
 ifneq ($(KBUILD_SRC),)
        $(Q)mkdir -p include/asm
+       $(Q)ln -fsn $(KBUILD_SRC)/arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)) \
+               include/asm/arch
+else
+       $(Q)ln -fsn arch-$(if $(SOC),$(SOC),$(CPU)) \
+               arch/$(ARCH)/include/asm/arch
 endif
-       $(Q)ln -fsn $(srctree)/arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)) \
-               $(if $(KBUILD_SRC),,arch/$(ARCH)/)include/asm/arch
 
 PHONY += FORCE
 FORCE:
index 6742ddd0b80fd8bd5f418a148b848fd2199427b0..14cf0925d2fedcdb6d4c6662b7c7fe7f23f1e4a8 100644 (file)
@@ -97,11 +97,11 @@ endif
 
 # ===========================================================================
 
-ifneq ($(strip $(lib-y) $(lib-m) $(lib-n) $(lib-)),)
+ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),)
 lib-target := $(obj)/lib.a
 endif
 
-ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(subdir-m) $(lib-target)),)
+ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),)
 builtin-target := $(obj)/built-in.o
 endif
 
@@ -400,16 +400,14 @@ cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalys
 quiet_cmd_link_multi-m = LD [M]  $@
 cmd_link_multi-m = $(cmd_link_multi-y)
 
-# We would rather have a list of rules like
-#      foo.o: $(foo-objs)
-# but that's not so easy, so we rather make all composite objects depend
-# on the set of all their parts
-$(multi-used-y) : %.o: $(multi-objs-y) FORCE
+$(multi-used-y): FORCE
        $(call if_changed,link_multi-y)
+$(call multi_depend, $(multi-used-y), .o, -objs -y)
 
-$(multi-used-m) : %.o: $(multi-objs-m) FORCE
+$(multi-used-m): FORCE
        $(call if_changed,link_multi-m)
        @{ echo $(@:.o=.ko); echo $(link_multi_deps); } > $(MODVERDIR)/$(@F:.o=.mod)
+$(call multi_depend, $(multi-used-m), .o, -objs -y)
 
 targets += $(multi-used-y) $(multi-used-m)
 
index 88f14e2d8fb4419927d057f325349297fba275f9..21e1f21531fd5b9a496f830ff21fefd2baf2f62b 100644 (file)
@@ -10,7 +10,7 @@ __clean:
 # Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir
 # Usage:
 # $(Q)$(MAKE) $(clean)=dir
-clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
+clean := -f $(srctree)/scripts/Makefile.clean obj
 
 # The filename Kbuild has precedence over Makefile
 kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
@@ -23,15 +23,13 @@ __subdir-y  := $(patsubst %/,%,$(filter %/, $(obj-y)))
 subdir-y       += $(__subdir-y)
 __subdir-m     := $(patsubst %/,%,$(filter %/, $(obj-m)))
 subdir-m       += $(__subdir-m)
-__subdir-n     := $(patsubst %/,%,$(filter %/, $(obj-n)))
-subdir-n       += $(__subdir-n)
 __subdir-      := $(patsubst %/,%,$(filter %/, $(obj-)))
 subdir-                += $(__subdir-)
 
 # Subdirectories we need to descend into
 
 subdir-ym      := $(sort $(subdir-y) $(subdir-m))
-subdir-ymn      := $(sort $(subdir-ym) $(subdir-n) $(subdir-))
+subdir-ymn      := $(sort $(subdir-ym) $(subdir-))
 
 # Add subdir path
 
index 65643506c71c7c03c9f6ad82944f955a14109815..0ec0d24b1c78ef79e0370c4f0863472d9681930c 100644 (file)
@@ -26,16 +26,6 @@ warning-1 += $(call cc-option, -Wmissing-include-dirs)
 warning-1 += $(call cc-option, -Wunused-but-set-variable)
 warning-1 += $(call cc-disable-warning, missing-field-initializers)
 
-# Clang
-warning-1 += $(call cc-disable-warning, initializer-overrides)
-warning-1 += $(call cc-disable-warning, unused-value)
-warning-1 += $(call cc-disable-warning, format)
-warning-1 += $(call cc-disable-warning, unknown-warning-option)
-warning-1 += $(call cc-disable-warning, sign-compare)
-warning-1 += $(call cc-disable-warning, format-zero-length)
-warning-1 += $(call cc-disable-warning, uninitialized)
-warning-1 += $(call cc-option, -fcatch-undefined-behavior)
-
 warning-2 := -Waggregate-return
 warning-2 += -Wcast-align
 warning-2 += -Wdisabled-optimization
index 66893643fd7d14a6f59bb52a17b0393180e7051d..133edfae5b8a8d7a66f59b9c1ef3130cb63eb928 100644 (file)
 # Will compile qconf as a C++ program, and menu as a C program.
 # They are linked as C++ code to the executable qconf
 
-# hostprogs-y := conf
-# conf-objs  := conf.o libkconfig.so
-# libkconfig-objs := expr.o type.o
-# Will create a shared library named libkconfig.so that consists of
-# expr.o and type.o (they are both compiled as C code and the object files
-# are made as position independent code).
-# conf.c is compiled as a C program, and conf.o is linked together with
-# libkconfig.so as the executable conf.
-# Note: Shared libraries consisting of C++ files are not supported
-
 __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
 
 # C code
 # Executables compiled from a single .c file
-host-csingle   := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
+host-csingle   := $(foreach m,$(__hostprogs), \
+                       $(if $($(m)-objs)$($(m)-cxxobjs),,$(m)))
 
 # C executables linked based on several .o files
 host-cmulti    := $(foreach m,$(__hostprogs),\
@@ -44,33 +35,17 @@ host-cmulti := $(foreach m,$(__hostprogs),\
 host-cobjs     := $(sort $(foreach m,$(__hostprogs),$($(m)-objs)))
 
 # C++ code
-# C++ executables compiled from at least on .cc file
+# C++ executables compiled from at least one .cc file
 # and zero or more .c files
 host-cxxmulti  := $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m)))
 
 # C++ Object (.o) files compiled from .cc files
 host-cxxobjs   := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs)))
 
-# Shared libaries (only .c supported)
-# Shared libraries (.so) - all .so files referenced in "xxx-objs"
-host-cshlib    := $(sort $(filter %.so, $(host-cobjs)))
-# Remove .so files from "xxx-objs"
-host-cobjs     := $(filter-out %.so,$(host-cobjs))
-
-#Object (.o) files used by the shared libaries
-host-cshobjs   := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs))))
-
 # output directory for programs/.o files
-# hostprogs-y := tools/build may have been specified. Retrieve directory
-host-objdirs := $(foreach f,$(__hostprogs), $(if $(dir $(f)),$(dir $(f))))
-# directory of .o files from prog-objs notation
-host-objdirs += $(foreach f,$(host-cmulti),                  \
-                    $(foreach m,$($(f)-objs),                \
-                        $(if $(dir $(m)),$(dir $(m)))))
-# directory of .o files from prog-cxxobjs notation
-host-objdirs += $(foreach f,$(host-cxxmulti),                  \
-                    $(foreach m,$($(f)-cxxobjs),                \
-                        $(if $(dir $(m)),$(dir $(m)))))
+# hostprogs-y := tools/build may have been specified.
+# Retrieve also directory of .o files from prog-objs or prog-cxxobjs notation
+host-objdirs := $(dir $(__hostprogs) $(host-cobjs) $(host-cxxobjs))
 
 host-objdirs := $(strip $(sort $(filter-out ./,$(host-objdirs))))
 
@@ -81,8 +56,6 @@ host-cmulti   := $(addprefix $(obj)/,$(host-cmulti))
 host-cobjs     := $(addprefix $(obj)/,$(host-cobjs))
 host-cxxmulti  := $(addprefix $(obj)/,$(host-cxxmulti))
 host-cxxobjs   := $(addprefix $(obj)/,$(host-cxxobjs))
-host-cshlib    := $(addprefix $(obj)/,$(host-cshlib))
-host-cshobjs   := $(addprefix $(obj)/,$(host-cshobjs))
 host-objdirs    := $(addprefix $(obj)/,$(host-objdirs))
 
 obj-dirs += $(host-objdirs)
@@ -123,8 +96,9 @@ quiet_cmd_host-cmulti        = HOSTLD  $@
       cmd_host-cmulti  = $(HOSTCC) $(HOSTLDFLAGS) -o $@ \
                          $(addprefix $(obj)/,$($(@F)-objs)) \
                          $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
-$(host-cmulti): $(obj)/%: $(host-cobjs) $(host-cshlib) FORCE
+$(host-cmulti): FORCE
        $(call if_changed,host-cmulti)
+$(call multi_depend, $(host-cmulti), , -objs)
 
 # Create .o file from a single .c file
 # host-cobjs -> .o
@@ -140,8 +114,9 @@ quiet_cmd_host-cxxmulti     = HOSTLD  $@
                          $(foreach o,objs cxxobjs,\
                          $(addprefix $(obj)/,$($(@F)-$(o)))) \
                          $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
-$(host-cxxmulti): $(obj)/%: $(host-cobjs) $(host-cxxobjs) $(host-cshlib) FORCE
+$(host-cxxmulti): FORCE
        $(call if_changed,host-cxxmulti)
+$(call multi_depend, $(host-cxxmulti), , -objs -cxxobjs)
 
 # Create .o file from a single .cc (C++) file
 quiet_cmd_host-cxxobjs = HOSTCXX $@
@@ -149,21 +124,5 @@ quiet_cmd_host-cxxobjs     = HOSTCXX $@
 $(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE
        $(call if_changed_dep,host-cxxobjs)
 
-# Compile .c file, create position independent .o file
-# host-cshobjs -> .o
-quiet_cmd_host-cshobjs = HOSTCC  -fPIC $@
-      cmd_host-cshobjs = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $<
-$(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE
-       $(call if_changed_dep,host-cshobjs)
-
-# Link a shared library, based on position independent .o files
-# *.o -> .so shared library (host-cshlib)
-quiet_cmd_host-cshlib  = HOSTLLD -shared $@
-      cmd_host-cshlib  = $(HOSTCC) $(HOSTLDFLAGS) -shared -o $@ \
-                         $(addprefix $(obj)/,$($(@F:.so=-objs))) \
-                         $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
-$(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
-       $(call if_changed,host-cshlib)
-
 targets += $(host-csingle)  $(host-cmulti) $(host-cobjs)\
-          $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
+          $(host-cxxmulti) $(host-cxxobjs)
index 072abaafb189b9f512a677e67ca2a571af2ce2c4..13af604e5f600d2cc827d85a499c0286d1afec35 100644 (file)
@@ -160,6 +160,15 @@ dtc_cpp_flags  = -Wp,-MD,$(depfile).pre.tmp -nostdinc                    \
 modname-multi = $(sort $(foreach m,$(multi-used),\
                $(if $(filter $(subst $(obj)/,,$*.o), $($(m:.o=-objs)) $($(m:.o=-y))),$(m:.o=))))
 
+# Useful for describing the dependency of composite objects
+# Usage:
+#   $(call multi_depend, multi_used_targets, suffix_to_remove, suffix_to_add)
+define multi_depend
+$(foreach m, $(notdir $1), \
+       $(eval $(obj)/$m: \
+       $(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s)))))))
+endef
+
 ifdef REGENERATE_PARSERS
 
 # GPERF
@@ -251,11 +260,13 @@ quiet_cmd_dt_S_dtb= DTB     $@
 cmd_dt_S_dtb=                                          \
 (                                                      \
        echo '.section .dtb.init.rodata,"a"';           \
+       echo '.balign 16';                              \
        echo '.global __dtb_$(*F)_begin';               \
        echo '__dtb_$(*F)_begin:';                      \
        echo '.incbin "$<" ';                           \
        echo '__dtb_$(*F)_end:';                        \
        echo '.global __dtb_$(*F)_end';                 \
+       echo '.balign 16';                              \
 ) > $@
 
 $(obj)/%.dtb.S: $(obj)/%.dtb
index 7afe437e62e11b1ed25f13c909fff68263957948..ecf3037cb89b032712f6ba9c9bf673664ed4fa96 100644 (file)
@@ -34,6 +34,7 @@ SPL_BIN := u-boot-spl
 endif
 
 include $(srctree)/config.mk
+include $(srctree)/arch/$(ARCH)/Makefile
 
 # Enable garbage collection of un-used sections for SPL
 KBUILD_CFLAGS += -ffunction-sections -fdata-sections
@@ -45,30 +46,13 @@ cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
 
 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
 
-ifdef  CONFIG_SPL_START_S_PATH
-START_PATH := $(CONFIG_SPL_START_S_PATH:"%"=%)
-else
-START_PATH := $(CPUDIR)
-endif
-
-head-y := $(START_PATH)/start.o
-head-$(CONFIG_X86) += $(START_PATH)/start16.o $(START_PATH)/resetvec.o
-head-$(CONFIG_4xx) += $(START_PATH)/resetvec.o
-head-$(CONFIG_MPC85xx) += $(START_PATH)/resetvec.o
-
-libs-y += arch/$(ARCH)/lib/
-
-libs-y += $(CPUDIR)/
-
-ifdef SOC
-libs-y += $(CPUDIR)/$(SOC)/
-endif
 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
 
 libs-$(CONFIG_SPL_FRAMEWORK) += common/spl/
 libs-$(CONFIG_SPL_LIBCOMMON_SUPPORT) += common/
 libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/
+libs-$(CONFIG_SPL_DM) += drivers/core/
 libs-$(CONFIG_SPL_I2C_SUPPORT) += drivers/i2c/
 libs-$(CONFIG_SPL_GPIO_SUPPORT) += drivers/gpio/
 libs-$(CONFIG_SPL_MMC_SUPPORT) += drivers/mmc/
@@ -80,7 +64,7 @@ libs-y += fs/
 libs-$(CONFIG_SPL_LIBGENERIC_SUPPORT) += lib/
 libs-$(CONFIG_SPL_POWER_SUPPORT) += drivers/power/ drivers/power/pmic/
 libs-$(CONFIG_SPL_MTD_SUPPORT) += drivers/mtd/
-libs-$(if $(CONFIG_CMD_NAND),$(CONFIG_SPL_NAND_SUPPORT)) += drivers/mtd/nand/
+libs-$(CONFIG_SPL_NAND_SUPPORT) += drivers/mtd/nand/
 libs-$(CONFIG_SPL_DRIVERS_MISC_SUPPORT) += drivers/misc/
 libs-$(CONFIG_SPL_ONENAND_SUPPORT) += drivers/mtd/onenand/
 libs-$(CONFIG_SPL_DMA_SUPPORT) += drivers/dma/
@@ -96,13 +80,6 @@ libs-$(CONFIG_SPL_USB_HOST_SUPPORT) += drivers/usb/host/
 libs-$(CONFIG_OMAP_USB_PHY) += drivers/usb/phy/
 libs-$(CONFIG_SPL_SATA_SUPPORT) += drivers/block/
 
-ifneq (,$(CONFIG_MX23)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
-libs-y += arch/$(ARCH)/imx-common/
-endif
-
-libs-$(CONFIG_ARM) += arch/arm/cpu/
-libs-$(CONFIG_PPC) += arch/powerpc/cpu/
-
 head-y         := $(addprefix $(obj)/,$(head-y))
 libs-y         := $(addprefix $(obj)/,$(libs-y))
 u-boot-spl-dirs        := $(patsubst %/,%,$(filter %/, $(libs-y)))
@@ -181,6 +158,10 @@ ALL-y      += $(obj)/sunxi-spl.bin
 endif
 endif
 
+ifeq ($(CONFIG_SYS_SOC),"at91")
+ALL-y  += boot.bin
+endif
+
 all:   $(ALL-y)
 
 ifdef CONFIG_SAMSUNG
old mode 100644 (file)
new mode 100755 (executable)
index d4d9eb4..a343681
@@ -14,7 +14,10 @@ if [ ${#gas} -eq 0 ]; then
        exit 1
 fi
 
-MAJOR=$($gas --version | head -1 | awk '{print $NF}' | cut -d . -f 1)
-MINOR=$($gas --version | head -1 | awk '{print $NF}' | cut -d . -f 2)
+version_string=$($gas --version | head -1 | \
+       sed -e 's/(.*)//; s/[^0-9.]*\([0-9.]*\).*/\1/')
+
+MAJOR=$(echo $version_string | cut -d . -f 1)
+MINOR=$(echo $version_string | cut -d . -f 2)
 
 printf "%02d%02d\\n" $MAJOR $MINOR
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/scripts/fill_scrapyard.py b/scripts/fill_scrapyard.py
new file mode 100755 (executable)
index 0000000..9a94354
--- /dev/null
@@ -0,0 +1,166 @@
+#!/usr/bin/env python2
+#
+# Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+"""
+Fill the "Commit" and "Removed" fields of doc/README.scrapyard
+
+The file doc/README.scrapyard is used to keep track of removed boards.
+
+When we remove support for boards, we are supposed to add entries to
+doc/README.scrapyard leaving "Commit" and "Removed" fields blank.
+
+The "Commit" field is the commit hash in which the board was removed
+and the "Removed" is the date at which the board was removed.  Those
+two are known only after the board removal patch was applied, thus they
+need to be filled in later.
+
+This effectively means that the person who removes other boards is
+supposed to fill in the blank fields before adding new entries to
+doc/README.scrapyard.
+
+That is a really tedious task that should be automated.
+This script fills the blank fields of doc/README.scrapyard for you!
+
+Usage:
+
+The "Commit" and "Removed" fields must be "-".  The other fields should
+have already been filled in by a former commit.
+
+Run
+    scripts/fill_scrapyard.py
+"""
+
+import os
+import subprocess
+import sys
+import tempfile
+
+DOC='doc/README.scrapyard'
+
+def get_last_modify_commit(file, line_num):
+    """Get the commit that last modified the given line.
+
+    This function runs "git blame" against the given line of the given
+    file and returns the commit hash that last modified it.
+
+    Arguments:
+      file: the file to be git-blame'd.
+      line_num: the line number to be git-blame'd.  This line number
+                starts from 1, not 0.
+
+    Returns:
+      Commit hash that last modified the line.  The number of digits is
+      long enough to form a unique commit.
+    """
+    result = subprocess.check_output(['git', 'blame', '-L',
+                                      '%d,%d' % (line_num, line_num), file])
+    commit = result.split()[0]
+
+    if commit[0] == '^':
+        sys.exit('%s: line %d: ' % (file, line_num) +
+                 'this line was modified before the beginning of git history')
+
+    if commit == '0' * len(commit):
+        sys.exit('%s: line %d: locally modified\n' % (file, line_num) +
+                 'Please run this script in a clean repository.')
+
+    return commit
+
+def get_committer_date(commit):
+    """Get the committer date of the given commit.
+
+    This function returns the date when the given commit was applied.
+
+    Arguments:
+      commit: commit-ish object.
+
+    Returns:
+      The committer date of the given commit in the form YY-MM-DD.
+    """
+    committer_date = subprocess.check_output(['git', 'show', '-s',
+                                              '--format=%ci', commit])
+    return committer_date.split()[0]
+
+def move_to_topdir():
+    """Change directory to the top of the git repository.
+
+    Or, exit with an error message if called out of a git repository.
+    """
+    try:
+        toplevel = subprocess.check_output(['git', 'rev-parse',
+                                            '--show-toplevel'])
+    except subprocess.CalledProcessError:
+        sys.exit('Please run in a git repository.')
+
+    # strip '\n'
+    toplevel = toplevel.rstrip()
+
+    # Change the current working directory to the toplevel of the respository
+    # for our easier life.
+    os.chdir(toplevel)
+
+class TmpFile:
+
+    """Useful class to handle a temporary file.
+
+    tempfile.mkstemp() is often used to create a unique temporary file,
+    but what is inconvenient is that the caller is responsible for
+    deleting the file when done with it.
+
+    Even when the caller errors out on the way, the temporary file must
+    be deleted somehow.  The idea here is that we delete the file in
+    the destructor of this class because the destructor is always
+    invoked when the instance of the class is freed.
+    """
+
+    def __init__(self):
+        """Constructor - create a temporary file"""
+        fd, self.filename = tempfile.mkstemp()
+        self.file = os.fdopen(fd, 'w')
+
+    def __del__(self):
+        """Destructor - delete the temporary file"""
+        try:
+            os.remove(self.filename)
+        except:
+            pass
+
+def main():
+    move_to_topdir()
+
+    line_num = 1
+
+    tmpfile = TmpFile()
+    for line in open(DOC):
+        tmp = line.split(None, 5)
+        modified = False
+
+        if len(tmp) >= 5:
+            # fill "Commit" field
+            if tmp[3] == '-':
+                tmp[3] = get_last_modify_commit(DOC, line_num)
+                modified = True
+            # fill "Removed" field
+            if tmp[4] == '-':
+                tmp[4] = get_committer_date(tmp[3])
+            if modified:
+                line  = tmp[0].ljust(17)
+                line += tmp[1].ljust(12)
+                line += tmp[2].ljust(15)
+                line += tmp[3].ljust(12)
+                line += tmp[4].ljust(12)
+                if len(tmp) >= 6:
+                    line += tmp[5]
+                line = line.rstrip() + '\n'
+
+        tmpfile.file.write(line)
+        line_num += 1
+
+    os.rename(tmpfile.filename, DOC)
+
+if __name__ == '__main__':
+    main()
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 7717d689bfc5053d8ecd4318deaae7673fc18f46..368a20e2ccf3aad2ac43eef3847373d36d626f5b 100755 (executable)
@@ -835,8 +835,7 @@ sub top_of_kernel_tree {
     if ($lk_path ne "" && substr($lk_path,length($lk_path)-1,1) ne "/") {
        $lk_path .= "/";
     }
-    if (   (-f "${lk_path}CREDITS")
-       && (-f "${lk_path}Kbuild")
+    if (   (-f "${lk_path}Kbuild")
        && (-f "${lk_path}MAINTAINERS")
        && (-f "${lk_path}Makefile")
        && (-f "${lk_path}README")
index 9c4d2412fb724e8b8d93cd02b70488ba3f779cb9..349f77038e63632270a74dce7d460b6bbb11caa4 100644 (file)
@@ -104,6 +104,23 @@ endif
 %_defconfig: $(obj)/conf
        $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
 
+configfiles=$(wildcard $(srctree)/kernel/configs/$(1).config $(srctree)/arch/$(SRCARCH)/configs/$(1).config)
+
+define mergeconfig
+$(if $(wildcard $(objtree)/.config),, $(error You need an existing .config for this target))
+$(if $(call configfiles,$(1)),, $(error No configuration exists for this target on this architecture))
+$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m -O $(objtree) $(objtree)/.config $(call configfiles,$(1))
+$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig
+endef
+
+PHONY += kvmconfig
+kvmconfig:
+       $(call mergeconfig,kvm_guest)
+
+PHONY += tinyconfig
+tinyconfig: allnoconfig
+       $(call mergeconfig,tiny)
+
 # Help text used by make help
 help:
        @echo  '  config          - Update current config utilising a line-oriented program'
@@ -124,6 +141,8 @@ help:
        @echo  '  randconfig      - New config with random answer to all options'
        @echo  '  listnewconfig   - List new options'
        @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their default value'
+#      @echo  '  kvmconfig       - Enable additional options for guest kernel support'
+#      @echo  '  tinyconfig      - Configure the tiniest possible kernel'
 
 # lxdialog stuff
 check-lxdialog  := $(srctree)/$(src)/lxdialog/check-lxdialog.sh
@@ -157,39 +176,10 @@ qconf-cxxobjs     := qconf.o
 qconf-objs     := zconf.tab.o
 gconf-objs     := gconf.o zconf.tab.o
 
-hostprogs-y := conf
-
-ifeq ($(MAKECMDGOALS),nconfig)
-       hostprogs-y += nconf
-endif
-
-ifeq ($(MAKECMDGOALS),menuconfig)
-       hostprogs-y += mconf
-endif
-
-ifeq ($(MAKECMDGOALS),update-po-config)
-       hostprogs-y += kxgettext
-endif
-
-ifeq ($(MAKECMDGOALS),xconfig)
-       qconf-target := 1
-endif
-ifeq ($(MAKECMDGOALS),gconfig)
-       gconf-target := 1
-endif
-
-
-ifeq ($(qconf-target),1)
-       hostprogs-y += qconf
-endif
-
-ifeq ($(gconf-target),1)
-       hostprogs-y += gconf
-endif
+hostprogs-y := conf nconf mconf kxgettext qconf gconf
 
 clean-files    := qconf.moc .tmp_qtcheck .tmp_gtkcheck
 clean-files    += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h
-clean-files     += mconf qconf gconf nconf
 clean-files     += config.pot linux.pot
 
 # Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
@@ -220,11 +210,12 @@ HOSTCFLAGS_gconf.o        = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
 HOSTLOADLIBES_mconf   = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
 
 HOSTLOADLIBES_nconf    = $(shell \
-                               pkg-config --libs menu panel ncurses 2>/dev/null \
+                               pkg-config --libs menuw panelw ncursesw 2>/dev/null \
+                               || pkg-config --libs menu panel ncurses 2>/dev/null \
                                || echo "-lmenu -lpanel -lncurses"  )
 $(obj)/qconf.o: $(obj)/.tmp_qtcheck
 
-ifeq ($(qconf-target),1)
+ifeq ($(MAKECMDGOALS),xconfig)
 $(obj)/.tmp_qtcheck: $(src)/Makefile
 -include $(obj)/.tmp_qtcheck
 
@@ -281,7 +272,7 @@ endif
 
 $(obj)/gconf.o: $(obj)/.tmp_gtkcheck
 
-ifeq ($(gconf-target),1)
+ifeq ($(MAKECMDGOALS),gconfig)
 -include $(obj)/.tmp_gtkcheck
 
 # GTK needs some extra effort, too...
old mode 100644 (file)
new mode 100755 (executable)
index b4343d384926600329203b846855f940b597b5fd..fcffd5b41fb07bff8cab87c3cdee93c18e884e1b 100644 (file)
@@ -170,7 +170,7 @@ char item_tag(void);
 /* item list manipulation for lxdialog use */
 #define MAXITEMSTR 200
 struct dialog_item {
-       char str[MAXITEMSTR];   /* promtp displayed */
+       char str[MAXITEMSTR];   /* prompt displayed */
        char tag;
        void *data;     /* pointer to menu item - used by menubox+checklist */
        int selected;   /* Set to 1 by dialog_*() function if selected. */
index a26cc5d2a9b0217d9c3d52bf0dab21b7337e95d2..72c9dba84c5dbd46cb8ae2824a85d54603dbaafe 100644 (file)
@@ -548,7 +548,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 {
        int i, j;
        struct menu *submenu[8], *menu, *location = NULL;
-       struct jump_key *jump;
+       struct jump_key *jump = NULL;
 
        str_printf(r, _("Prompt: %s\n"), _(prop->text));
        menu = prop->menu->parent;
@@ -586,7 +586,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
                str_printf(r, _("  Location:\n"));
                for (j = 4; --i >= 0; j += 2) {
                        menu = submenu[i];
-                       if (head && location && menu == location)
+                       if (jump && menu == location)
                                jump->offset = strlen(r->s);
                        str_printf(r, "%*c-> %s", j, ' ',
                                   _(menu_get_prompt(menu)));
old mode 100644 (file)
new mode 100755 (executable)
index c881b8cb3ee0e7887344c2288405885f32752fb6..08a6c768459e006b4b3dedc14b4765733ba9c561 100755 (executable)
@@ -2073,6 +2073,7 @@ sub check_return_section {
 sub dump_function($$) {
     my $prototype = shift;
     my $file = shift;
+    my $noret = 0;
 
     $prototype =~ s/^static +//;
     $prototype =~ s/^extern +//;
@@ -2084,9 +2085,10 @@ sub dump_function($$) {
     $prototype =~ s/^noinline +//;
     $prototype =~ s/__init +//;
     $prototype =~ s/__init_or_module +//;
+    $prototype =~ s/__meminit +//;
     $prototype =~ s/__must_check +//;
     $prototype =~ s/__weak +//;
-    $prototype =~ s/^#\s*define\s+//; #ak added
+    my $define = $prototype =~ s/^#\s*define\s+//; #ak added
     $prototype =~ s/__attribute__\s*\(\([a-z,]*\)\)//;
 
     # Yes, this truly is vile.  We are looking for:
@@ -2105,7 +2107,15 @@ sub dump_function($$) {
     # - atomic_set (macro)
     # - pci_match_device, __copy_to_user (long return type)
 
-    if ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
+    if ($define && $prototype =~ m/^()([a-zA-Z0-9_~:]+)\s+/) {
+        # This is an object-like macro, it has no return type and no parameter
+        # list.
+        # Function-like macros are not allowed to have spaces between
+        # declaration_name and opening parenthesis (notice the \s+).
+        $return_type = $1;
+        $declaration_name = $2;
+        $noret = 1;
+    } elsif ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
        $prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
        $prototype =~ m/^(\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
        $prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
@@ -2140,7 +2150,7 @@ sub dump_function($$) {
         # of warnings goes sufficiently down, the check is only performed in
         # verbose mode.
         # TODO: always perform the check.
-        if ($verbose) {
+        if ($verbose && !$noret) {
                 check_return_section($file, $declaration_name, $return_type);
         }
 
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 3e3040b..366e8fa
@@ -162,6 +162,16 @@ do_defconfig () {
        fi
 }
 
+do_board_felconfig () {
+    do_board_defconfig ${1%%_felconfig}_defconfig
+    if ! grep -q CONFIG_ARCH_SUNXI=y .config || ! grep -q CONFIG_SPL=y .config ; then
+       echo "$progname: Cannot felconfig a non-sunxi or non-SPL platform" >&2
+       exit 1
+    fi
+    sed -i -e 's/\# CONFIG_SPL_FEL is not set/CONFIG_SPL_FEL=y\nCONFIG_UART0_PORT_F=n/g' \
+       .config spl/.config
+}
+
 do_savedefconfig () {
        if [ -r "$KCONFIG_CONFIG" ]; then
                subimages=$(get_enabled_subimages)
@@ -323,6 +333,8 @@ target=$1
 case $target in
 *_defconfig)
        do_board_defconfig $target;;
+*_felconfig)
+       do_board_felconfig $target;;
 *_config)
        # backward compatibility
        do_board_defconfig ${target%_config}_defconfig;;
index e136075541b76c4a21096f4619a6ea0f7a180f69..926573a39543c816281a879922ce9ca4c83dd3b1 100644 (file)
@@ -188,6 +188,11 @@ static int do_ut_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #endif
 #endif
 
+       assert(run_command("", 0) == 0);
+       assert(run_command(" ", 0) == 0);
+
+       assert(run_command("'", 0) == 1);
+
        printf("%s: Everything went swimmingly\n", __func__);
        return 0;
 }
index 75d3d41536bfb47079f37a284beca95bd982b425..612aa957fa2d9ccb832382c6f0e55d3d037b3c67 100644 (file)
@@ -20,4 +20,5 @@ ifneq ($(CONFIG_SANDBOX),)
 obj-$(CONFIG_DM_GPIO) += gpio.o
 obj-$(CONFIG_DM_SPI) += spi.o
 obj-$(CONFIG_DM_SPI_FLASH) += sf.o
+obj-$(CONFIG_DM_I2C) += i2c.o
 endif
index 26980d209f4e8dede78d0d861f95a10ce0dd8232..79a674efcc5bc35559698cad5413723a7308d4dc 100644 (file)
 #include <dm/test.h>
 #include <dm/uclass-internal.h>
 
+static void show_devices(struct udevice *dev, int depth, int last_flag)
+{
+       int i, is_last;
+       struct udevice *child;
+       char class_name[12];
+
+       /* print the first 11 characters to not break the tree-format. */
+       strlcpy(class_name, dev->uclass->uc_drv->name, sizeof(class_name));
+       printf(" %-11s [ %c ]    ", class_name,
+              dev->flags & DM_FLAG_ACTIVATED ? '+' : ' ');
+
+       for (i = depth; i >= 0; i--) {
+               is_last = (last_flag >> i) & 1;
+               if (i) {
+                       if (is_last)
+                               printf("    ");
+                       else
+                               printf("|   ");
+               } else {
+                       if (is_last)
+                               printf("`-- ");
+                       else
+                               printf("|-- ");
+               }
+       }
+
+       printf("%s\n", dev->name);
+
+       list_for_each_entry(child, &dev->child_head, sibling_node) {
+               is_last = list_is_last(&child->sibling_node, &dev->child_head);
+               show_devices(child, depth + 1, (last_flag << 1) | is_last);
+       }
+}
+
+static int do_dm_dump_all(cmd_tbl_t *cmdtp, int flag, int argc,
+                         char * const argv[])
+{
+       struct udevice *root;
+
+       root = dm_root();
+       if (root) {
+               printf(" Class       Probed   Name\n");
+               printf("----------------------------------------\n");
+               show_devices(root, -1, 0);
+       }
+
+       return 0;
+}
+
 /**
  * dm_display_line() - Display information about a single device
  *
  * Displays a single line of information with an option prefix
  *
  * @dev:       Device to display
- * @buf:       Prefix to display at the start of the line
  */
-static void dm_display_line(struct udevice *dev, char *buf)
+static void dm_display_line(struct udevice *dev)
 {
-       printf("%s- %c %s @ %08lx", buf,
+       printf("- %c %s @ %08lx",
               dev->flags & DM_FLAG_ACTIVATED ? '*' : ' ',
               dev->name, (ulong)map_to_sysmem(dev));
        if (dev->req_seq != -1)
@@ -34,53 +82,6 @@ static void dm_display_line(struct udevice *dev, char *buf)
        puts("\n");
 }
 
-static int display_succ(struct udevice *in, char *buf)
-{
-       int len;
-       int ip = 0;
-       char local[16];
-       struct udevice *pos, *n, *prev = NULL;
-
-       dm_display_line(in, buf);
-
-       if (list_empty(&in->child_head))
-               return 0;
-
-       len = strlen(buf);
-       strncpy(local, buf, sizeof(local));
-       snprintf(local + len, 2, "|");
-       if (len && local[len - 1] == '`')
-               local[len - 1] = ' ';
-
-       list_for_each_entry_safe(pos, n, &in->child_head, sibling_node) {
-               if (ip++)
-                       display_succ(prev, local);
-               prev = pos;
-       }
-
-       snprintf(local + len, 2, "`");
-       display_succ(prev, local);
-
-       return 0;
-}
-
-static int dm_dump(struct udevice *dev)
-{
-       if (!dev)
-               return -EINVAL;
-       return display_succ(dev, "");
-}
-
-static int do_dm_dump_all(cmd_tbl_t *cmdtp, int flag, int argc,
-                         char * const argv[])
-{
-       struct udevice *root;
-
-       root = dm_root();
-       printf("ROOT %08lx\n", (ulong)map_to_sysmem(root));
-       return dm_dump(root);
-}
-
 static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc,
                             char * const argv[])
 {
@@ -99,7 +100,7 @@ static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc,
                if (list_empty(&uc->dev_head))
                        continue;
                list_for_each_entry(dev, &uc->dev_head, uclass_node) {
-                       dm_display_line(dev, "");
+                       dm_display_line(dev);
                }
                puts("\n");
        }
diff --git a/test/dm/i2c.c b/test/dm/i2c.c
new file mode 100644 (file)
index 0000000..a53e28d
--- /dev/null
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2013 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Note: Test coverage does not include 10-bit addressing
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <fdtdec.h>
+#include <i2c.h>
+#include <dm/device-internal.h>
+#include <dm/test.h>
+#include <dm/uclass-internal.h>
+#include <dm/ut.h>
+#include <dm/util.h>
+#include <asm/state.h>
+#include <asm/test.h>
+
+static const int busnum;
+static const int chip = 0x2c;
+
+/* Test that we can find buses and chips */
+static int dm_test_i2c_find(struct dm_test_state *dms)
+{
+       struct udevice *bus, *dev;
+       const int no_chip = 0x10;
+
+       ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_I2C, busnum,
+                                                      false, &bus));
+
+       /*
+        * i2c_post_bind() will bind devices to chip selects. Check this then
+        * remove the emulation and the slave device.
+        */
+       ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
+       ut_assertok(i2c_probe(bus, chip, 0, &dev));
+       ut_asserteq(-ENODEV, i2c_probe(bus, no_chip, 0, &dev));
+       ut_asserteq(-ENODEV, uclass_get_device_by_seq(UCLASS_I2C, 1, &bus));
+
+       return 0;
+}
+DM_TEST(dm_test_i2c_find, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+static int dm_test_i2c_read_write(struct dm_test_state *dms)
+{
+       struct udevice *bus, *dev;
+       uint8_t buf[5];
+
+       ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
+       ut_assertok(i2c_get_chip(bus, chip, &dev));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\0\0\0\0", sizeof(buf)));
+       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\0AB\0", sizeof(buf)));
+
+       return 0;
+}
+DM_TEST(dm_test_i2c_read_write, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+static int dm_test_i2c_speed(struct dm_test_state *dms)
+{
+       struct udevice *bus, *dev;
+       uint8_t buf[5];
+
+       ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
+       ut_assertok(i2c_get_chip(bus, chip, &dev));
+       ut_assertok(i2c_set_bus_speed(bus, 100000));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(i2c_set_bus_speed(bus, 400000));
+       ut_asserteq(400000, i2c_get_bus_speed(bus));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_asserteq(-EINVAL, i2c_write(dev, 0, buf, 5));
+
+       return 0;
+}
+DM_TEST(dm_test_i2c_speed, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+static int dm_test_i2c_offset_len(struct dm_test_state *dms)
+{
+       struct udevice *bus, *dev;
+       uint8_t buf[5];
+
+       ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
+       ut_assertok(i2c_get_chip(bus, chip, &dev));
+       ut_assertok(i2c_set_chip_offset_len(dev, 1));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+
+       /* This is not supported by the uclass */
+       ut_asserteq(-EINVAL, i2c_set_chip_offset_len(dev, 5));
+
+       return 0;
+}
+DM_TEST(dm_test_i2c_offset_len, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+static int dm_test_i2c_probe_empty(struct dm_test_state *dms)
+{
+       struct udevice *bus, *dev;
+
+       ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
+       ut_assertok(i2c_probe(bus, SANDBOX_I2C_TEST_ADDR, 0, &dev));
+
+       return 0;
+}
+DM_TEST(dm_test_i2c_probe_empty, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+static int dm_test_i2c_bytewise(struct dm_test_state *dms)
+{
+       struct udevice *bus, *dev;
+       struct udevice *eeprom;
+       uint8_t buf[5];
+
+       ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
+       ut_assertok(i2c_get_chip(bus, chip, &dev));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\0\0\0\0", sizeof(buf)));
+
+       /* Tell the EEPROM to only read/write one register at a time */
+       ut_assertok(uclass_first_device(UCLASS_I2C_EMUL, &eeprom));
+       ut_assertnonnull(eeprom);
+       sandbox_i2c_eeprom_set_test_mode(eeprom, SIE_TEST_MODE_SINGLE_BYTE);
+
+       /* Now we only get the first byte - the rest will be 0xff */
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\xff\xff\xff\xff", sizeof(buf)));
+
+       /* If we do a separate transaction for each byte, it works */
+       ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_RD_ADDRESS));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\0\0\0\0", sizeof(buf)));
+
+       /* This will only write A */
+       ut_assertok(i2c_set_chip_flags(dev, 0));
+       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\xff\xff\xff\xff", sizeof(buf)));
+
+       /* Check that the B was ignored */
+       ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_RD_ADDRESS));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\0A\0\0\0", sizeof(buf)));
+
+       /* Now write it again with the new flags, it should work */
+       ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_WR_ADDRESS));
+       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\xff\xff\xff\xff", sizeof(buf)));
+
+       ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_WR_ADDRESS |
+                                               DM_I2C_CHIP_RD_ADDRESS));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "\0\0AB\0\0", sizeof(buf)));
+
+       /* Restore defaults */
+       sandbox_i2c_eeprom_set_test_mode(eeprom, SIE_TEST_MODE_NONE);
+       ut_assertok(i2c_set_chip_flags(dev, 0));
+
+       return 0;
+}
+DM_TEST(dm_test_i2c_bytewise, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+static int dm_test_i2c_offset(struct dm_test_state *dms)
+{
+       struct udevice *eeprom;
+       struct udevice *dev;
+       uint8_t buf[5];
+
+       ut_assertok(i2c_get_chip_for_busnum(busnum, chip, &dev));
+
+       /* Do a transfer so we can find the emulator */
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(uclass_first_device(UCLASS_I2C_EMUL, &eeprom));
+
+       /* Offset length 0 */
+       sandbox_i2c_eeprom_set_offset_len(eeprom, 0);
+       ut_assertok(i2c_set_chip_offset_len(dev, 0));
+       ut_assertok(i2c_write(dev, 10 /* ignored */, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "AB\0\0\0\0", sizeof(buf)));
+
+       /* Offset length 1 */
+       sandbox_i2c_eeprom_set_offset_len(eeprom, 1);
+       ut_assertok(i2c_set_chip_offset_len(dev, 1));
+       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(memcmp(buf, "ABAB\0", sizeof(buf)));
+
+       /* Offset length 2 */
+       sandbox_i2c_eeprom_set_offset_len(eeprom, 2);
+       ut_assertok(i2c_set_chip_offset_len(dev, 2));
+       ut_assertok(i2c_write(dev, 0x210, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0x210, buf, 5));
+       ut_assertok(memcmp(buf, "AB\0\0\0", sizeof(buf)));
+
+       /* Offset length 3 */
+       sandbox_i2c_eeprom_set_offset_len(eeprom, 2);
+       ut_assertok(i2c_set_chip_offset_len(dev, 2));
+       ut_assertok(i2c_write(dev, 0x410, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0x410, buf, 5));
+       ut_assertok(memcmp(buf, "AB\0\0\0", sizeof(buf)));
+
+       /* Offset length 4 */
+       sandbox_i2c_eeprom_set_offset_len(eeprom, 2);
+       ut_assertok(i2c_set_chip_offset_len(dev, 2));
+       ut_assertok(i2c_write(dev, 0x420, (uint8_t *)"AB", 2));
+       ut_assertok(i2c_read(dev, 0x420, buf, 5));
+       ut_assertok(memcmp(buf, "AB\0\0\0", sizeof(buf)));
+
+       /* Restore defaults */
+       sandbox_i2c_eeprom_set_offset_len(eeprom, 1);
+
+       return 0;
+}
+DM_TEST(dm_test_i2c_offset, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
index 1fba7925642a928fd60f10fd4ed7ee1bcc192890..fb0272a59cd25472b4e733afbe832a35c607d1d8 100644 (file)
                num-gpios = <10>;
        };
 
+       i2c@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+               compatible = "sandbox,i2c";
+               clock-frequency = <100000>;
+               eeprom@2c {
+                       reg = <0x2c>;
+                       compatible = "i2c-eeprom";
+                       emul {
+                               compatible = "sandbox,i2c-eeprom";
+                               sandbox,filename = "i2c.bin";
+                               sandbox,size = <256>;
+                       };
+               };
+       };
+
        spi@0 {
                #address-cells = <1>;
                #size-cells = <0>;
diff --git a/test/fs/fs-test.sh b/test/fs/fs-test.sh
new file mode 100755 (executable)
index 0000000..a4fb055
--- /dev/null
@@ -0,0 +1,561 @@
+#!/bin/bash
+#
+# (C) Copyright 2014 Suriyan Ramasami
+#
+#  SPDX-License-Identifier:    GPL-2.0+
+#
+
+# Invoke this test script from U-Boot base directory as ./test/fs/fs-test.sh
+# It currently tests the fs/sb and native commands for ext4 and fat partitions
+# Expected results are as follows:
+# EXT4 tests:
+# fs-test.sb.ext4.out: Summary: PASS: 17 FAIL: 2
+# fs-test.ext4.out: Summary: PASS: 11 FAIL: 8
+# fs-test.fs.ext4.out: Summary: PASS: 11 FAIL: 8
+# FAT tests:
+# fs-test.sb.fat.out: Summary: PASS: 17 FAIL: 2
+# fs-test.fat.out: Summary: PASS: 19 FAIL: 0
+# fs-test.fs.fat.out: Summary: PASS: 19 FAIL: 0
+# Total Summary: TOTAL PASS: 94 TOTAL FAIL: 20
+
+# pre-requisite binaries list.
+PREREQ_BINS="md5sum mkfs mount umount dd fallocate mkdir"
+
+# All generated output files from this test will be in $OUT_DIR
+# Hence everything is sandboxed.
+OUT_DIR="sandbox/test/fs"
+
+# Location of generated sandbox u-boot
+UBOOT="./sandbox/u-boot"
+
+# Our mount directory will be in the sandbox
+MOUNT_DIR="${OUT_DIR}/mnt"
+
+# The file system image we create will have the $IMG prefix.
+IMG="${OUT_DIR}/3GB"
+
+# $SMALL_FILE is the name of the 1MB file in the file system image
+SMALL_FILE="1MB.file"
+
+# $BIG_FILE is the name of the 2.5GB file in the file system image
+BIG_FILE="2.5GB.file"
+
+# $MD5_FILE will have the expected md5s when we do the test
+# They shall have a suffix which represents their file system (ext4/fat)
+MD5_FILE="${OUT_DIR}/md5s.list"
+
+# $OUT shall be the prefix of the test output. Their suffix will be .out
+OUT="${OUT_DIR}/fs-test"
+
+# Full Path of the 1 MB file that shall be created in the fs image.
+MB1="${MOUNT_DIR}/${SMALL_FILE}"
+GB2p5="${MOUNT_DIR}/${BIG_FILE}"
+
+# ************************
+# * Functions start here *
+# ************************
+
+# Check if the prereq binaries exist, or exit
+function check_prereq() {
+       for prereq in $PREREQ_BINS; do
+               if [ ! -x `which $prereq` ]; then
+                       echo "Missing $prereq binary. Exiting!"
+                       exit
+               fi
+       done
+
+       # We use /dev/urandom to create files. Check if it exists.
+       if [ ! -c /dev/urandom ]; then
+               echo "Missing character special /dev/urandom. Exiting!"
+               exit
+       fi
+}
+
+# If 1st param is "clean", then clean out the generated files and exit
+function check_clean() {
+       if [ "$1" = "clean" ]; then
+               rm -rf "$OUT_DIR"
+               echo "Cleaned up generated files. Exiting"
+               exit
+       fi
+}
+
+# Generate sandbox U-Boot - gleaned from /test/dm/test-dm.sh
+function compile_sandbox() {
+       unset CROSS_COMPILE
+       NUM_CPUS=$(cat /proc/cpuinfo |grep -c processor)
+       make O=sandbox sandbox_config
+       make O=sandbox -s -j${NUM_CPUS}
+
+       # Check if U-Boot exists
+       if [ ! -x "$UBOOT" ]; then
+               echo "$UBOOT does not exist or is not executable"
+               echo "Build error?"
+               echo "Please run this script as ./test/fs/`basename $0`"
+               exit
+       fi
+}
+
+# Clean out all generated files other than the file system images
+# We save time by not deleting and recreating the file system images
+function prepare_env() {
+       rm -f ${MD5_FILE}.* ${OUT}.*
+       mkdir ${OUT_DIR}
+}
+
+# 1st parameter is the name of the image file to be created
+# 2nd parameter is the filesystem - fat ext4 etc
+# -F cant be used with fat as it means something else.
+function create_image() {
+       # Create image if not already present - saves time, while debugging
+       if [ "$2" = "ext4" ]; then
+               MKFS_OPTION="-F"
+       else
+               MKFS_OPTION=""
+       fi
+       if [ ! -f "$1" ]; then
+               fallocate -l 3G "$1" &> /dev/null
+               mkfs -t "$2" $MKFS_OPTION "$1" &> /dev/null
+               if [ $? -ne 0 -a "$2" = "fat" ]; then
+                       # If we fail and we did fat, try vfat.
+                       mkfs -t vfat $MKFS_OPTION "$1" &> /dev/null
+               fi
+       fi
+}
+
+# 1st parameter is the FS type: fat/ext4
+# 2nd parameter is the name of small file
+# Returns filename which can be used for fat or ext4 for writing
+function fname_for_write() {
+       case $1 in
+               ext4)
+                       # ext4 needs absolute path name of file
+                       echo /${2}.w
+                       ;;
+
+               *)
+                       echo ${2}.w
+                       ;;
+       esac
+}
+
+# 1st parameter is image file
+# 2nd parameter is file system type - fat/ext4
+# 3rd parameter is name of small file
+# 4th parameter is name of big file
+# 5th parameter is fs/nonfs/sb - to dictate generic fs commands or
+# otherwise or sb hostfs
+# 6th parameter is the directory path for the files. Its "" for generic
+# fs and ext4/fat and full patch for sb hostfs
+# UBOOT is set in env
+function test_image() {
+       addr="0x01000008"
+       length="0x00100000"
+
+       case "$2" in
+               fat)
+               PREFIX="fat"
+               WRITE="write"
+               ;;
+
+               ext4)
+               PREFIX="ext4"
+               WRITE="write"
+               ;;
+
+               *)
+               echo "Unhandled filesystem $2. Exiting!"
+               exit
+               ;;
+       esac
+
+       case "$5" in
+               fs)
+               PREFIX=""
+               WRITE="save"
+               SUFFIX=" 0:0"
+               ;;
+
+               nonfs)
+               SUFFIX=" 0:0"
+               ;;
+
+               sb)
+               PREFIX="sb "
+               WRITE="save"
+               SUFFIX="fs -"
+               ;;
+
+               *)
+               echo "Unhandled mode $5. Exiting!"
+               exit
+               ;;
+
+       esac
+
+       if [ -z "$6" ]; then
+               FILE_WRITE=`fname_for_write $2 $3`
+               FILE_SMALL=$3
+               FILE_BIG=$4
+       else
+               FILE_WRITE=$6/`fname_for_write $2 $3`
+               FILE_SMALL=$6/$3
+               FILE_BIG=$6/$4
+       fi
+
+       # In u-boot commands, <interface> stands for host or hostfs
+       # hostfs maps to the host fs.
+       # host maps to the "sb bind" that we do
+
+       $UBOOT << EOF
+sb=$5
+setenv bind 'if test "\$sb" != sb; then sb bind 0 "$1"; fi'
+run bind
+# Test Case 1 - ls
+${PREFIX}ls host${SUFFIX} $6
+#
+# We want ${PREFIX}size host 0:0 $3 for host commands and
+# sb size hostfs - $3 for hostfs commands.
+# 1MB is 0x0010 0000
+# Test Case 2 - size of small file
+${PREFIX}size host${SUFFIX} $FILE_SMALL
+printenv filesize
+setenv filesize
+
+# 2.5GB (1024*1024*2500) is 0x9C40 0000
+# Test Case 3 - size of big file
+${PREFIX}size host${SUFFIX} $FILE_BIG
+printenv filesize
+setenv filesize
+
+# Notes about load operation
+# If I use 0x01000000 I get DMA misaligned error message
+# Last two parameters are size and offset.
+
+# Test Case 4a - Read full 1MB of small file
+${PREFIX}load host${SUFFIX} $addr $FILE_SMALL
+printenv filesize
+# Test Case 4b - Read full 1MB of small file
+md5sum $addr \$filesize
+setenv filesize
+
+# Test Case 5a - First 1MB of big file
+${PREFIX}load host${SUFFIX} $addr $FILE_BIG $length 0x0
+printenv filesize
+# Test Case 5b - First 1MB of big file
+md5sum $addr \$filesize
+setenv filesize
+
+# fails for ext as no offset support
+# Test Case 6a - Last 1MB of big file
+${PREFIX}load host${SUFFIX} $addr $FILE_BIG $length 0x9C300000
+printenv filesize
+# Test Case 6b - Last 1MB of big file
+md5sum $addr \$filesize
+setenv filesize
+
+# fails for ext as no offset support
+# Test Case 7a - One from the last 1MB chunk of 2GB
+${PREFIX}load host${SUFFIX} $addr $FILE_BIG $length 0x7FF00000
+printenv filesize
+# Test Case 7b - One from the last 1MB chunk of 2GB
+md5sum $addr \$filesize
+setenv filesize
+
+# fails for ext as no offset support
+# Test Case 8a - One from the start 1MB chunk from 2GB
+${PREFIX}load host${SUFFIX} $addr $FILE_BIG $length 0x80000000
+printenv filesize
+# Test Case 8b - One from the start 1MB chunk from 2GB
+md5sum $addr \$filesize
+setenv filesize
+
+# fails for ext as no offset support
+# Test Case 9a - One 1MB chunk crossing the 2GB boundary
+${PREFIX}load host${SUFFIX} $addr $FILE_BIG $length 0x7FF80000
+printenv filesize
+# Test Case 9b - One 1MB chunk crossing the 2GB boundary
+md5sum $addr \$filesize
+setenv filesize
+
+# Generic failure case
+# Test Case 10 - 2MB chunk from the last 1MB of big file
+${PREFIX}load host${SUFFIX} $addr $FILE_BIG 0x00200000 0x9C300000
+printenv filesize
+#
+
+# Read 1MB from small file
+${PREFIX}load host${SUFFIX} $addr $FILE_SMALL
+# Write it back to test the writes
+# Test Case 11a - Check that the write succeeded
+${PREFIX}${WRITE} host${SUFFIX} $addr $FILE_WRITE \$filesize
+mw.b $addr 00 100
+${PREFIX}load host${SUFFIX} $addr $FILE_WRITE
+# Test Case 11b - Check md5 of written to is same as the one read from
+md5sum $addr \$filesize
+setenv filesize
+#
+reset
+
+EOF
+}
+
+# 1st argument is the name of the image file.
+# 2nd argument is the file where we generate the md5s of the files
+# generated with the appropriate start and length that we use to test.
+# It creates the necessary files in the image to test.
+# $GB2p5 is the path of the big file (2.5 GB)
+# $MB1 is the path of the small file (1 MB)
+# $MOUNT_DIR is the path we can use to mount the image file.
+function create_files() {
+       # Mount the image so we can populate it.
+       mkdir -p "$MOUNT_DIR"
+       sudo mount -o loop,rw "$1" "$MOUNT_DIR"
+
+       # Create big file in this image.
+       # Note that we work only on the start 1MB, couple MBs in the 2GB range
+       # and the last 1 MB of the huge 2.5GB file.
+       # So, just put random values only in those areas.
+       if [ ! -f "${GB2p5}" ]; then
+               sudo dd if=/dev/urandom of="${GB2p5}" bs=1M count=1 \
+                       &> /dev/null
+               sudo dd if=/dev/urandom of="${GB2p5}" bs=1M count=2 seek=2047 \
+                       &> /dev/null
+               sudo dd if=/dev/urandom of="${GB2p5}" bs=1M count=1 seek=2499 \
+                       &> /dev/null
+       fi
+
+       # Create a small file in this image.
+       if [ ! -f "${MB1}" ]; then
+               sudo dd if=/dev/urandom of="${MB1}" bs=1M count=1 \
+                       &> /dev/null
+       fi
+
+       # Delete the small file which possibly is written as part of a
+       # previous test.
+       sudo rm -f "${MB1}.w"
+
+       # Generate the md5sums of reads that we will test against small file
+       dd if="${MB1}" bs=1M skip=0 count=1 2> /dev/null | md5sum > "$2"
+
+       # Generate the md5sums of reads that we will test against big file
+       # One from beginning of file.
+       dd if="${GB2p5}" bs=1M skip=0 count=1 \
+               2> /dev/null | md5sum >> "$2"
+
+       # One from end of file.
+       dd if="${GB2p5}" bs=1M skip=2499 count=1 \
+               2> /dev/null | md5sum >> "$2"
+
+       # One from the last 1MB chunk of 2GB
+       dd if="${GB2p5}" bs=1M skip=2047 count=1 \
+               2> /dev/null | md5sum >> "$2"
+
+       # One from the start 1MB chunk from 2GB
+       dd if="${GB2p5}" bs=1M skip=2048 count=1 \
+               2> /dev/null | md5sum >> "$2"
+
+       # One 1MB chunk crossing the 2GB boundary
+       dd if="${GB2p5}" bs=512K skip=4095 count=2 \
+               2> /dev/null | md5sum >> "$2"
+
+       sync
+       sudo umount "$MOUNT_DIR"
+       rmdir "$MOUNT_DIR"
+}
+
+# 1st parameter is the text to print
+# if $? is 0 its a pass, else a fail
+# As a side effect it shall update env variable PASS and FAIL
+function pass_fail() {
+       if [ $? -eq 0 ]; then
+               echo pass - "$1"
+               PASS=$((PASS + 1))
+       else
+               echo FAIL - "$1"
+               FAIL=$((FAIL + 1))
+       fi
+}
+
+# 1st parameter is the string which leads to an md5 generation
+# 2nd parameter is the file we grep, for that string
+# 3rd parameter is the name of the file which has md5s in it
+# 4th parameter is the line # in the md5 file that we match it against
+# This function checks if the md5 of the file in the sandbox matches
+# that calculated while generating the file
+# 5th parameter is the string to print with the result
+check_md5() {
+       # md5sum in u-boot has output of form:
+       # md5 for 01000008 ... 01100007 ==> <md5>
+       # the 7th field is the actual md5
+       md5_src=`grep -A3 "$1" "$2" | grep "md5 for"`
+       md5_src=($md5_src)
+       md5_src=${md5_src[6]}
+
+       # The md5 list, each line is of the form:
+       # - <md5>
+       # the 2nd field is the actual md5
+       md5_dst=`sed -n $4p $3`
+       md5_dst=($md5_dst)
+       md5_dst=${md5_dst[0]}
+
+       # For a pass they should match.
+       [ "$md5_src" = "$md5_dst" ]
+       pass_fail "$5"
+}
+
+# 1st parameter is the name of the output file to check
+# 2nd parameter is the name of the file containing the md5 expected
+# 3rd parameter is the name of the small file
+# 4th parameter is the name of the big file
+# 5th paramter is the name of the written file
+# This function checks the output file for correct results.
+function check_results() {
+       echo "** Start $1"
+
+       PASS=0
+       FAIL=0
+
+       # Check if the ls is showing correct results for 2.5 gb file
+       grep -A6 "Test Case 1 " "$1" | egrep -iq "2621440000 *$4"
+       pass_fail "TC1: ls of $4"
+
+       # Check if the ls is showing correct results for 1 mb file
+       grep -A6 "Test Case 1 " "$1" | egrep -iq "1048576 *$3"
+       pass_fail "TC1: ls of $3"
+
+       # Check size command on 1MB.file
+       egrep -A3 "Test Case 2 " "$1" | grep -q "filesize=100000"
+       pass_fail "TC2: size of $3"
+
+       # Check size command on 2.5GB.file
+       egrep -A3 "Test Case 3 " "$1" | grep -q "filesize=9c400000"
+       pass_fail "TC3: size of $4"
+
+       # Check read full mb of 1MB.file
+       grep -A6 "Test Case 4a " "$1" | grep -q "filesize=100000"
+       pass_fail "TC4: load of $3 size"
+       check_md5 "Test Case 4b " "$1" "$2" 1 "TC4: load from $3"
+
+       # Check first mb of 2.5GB.file
+       grep -A6 "Test Case 5a " "$1" | grep -q "filesize=100000"
+       pass_fail "TC5: load of 1st MB from $4 size"
+       check_md5 "Test Case 5b " "$1" "$2" 2 "TC5: load of 1st MB from $4"
+
+       # Check last mb of 2.5GB.file
+       grep -A6 "Test Case 6a " "$1" | grep -q "filesize=100000"
+       pass_fail "TC6: load of last MB from $4 size"
+       check_md5 "Test Case 6b " "$1" "$2" 3 "TC6: load of last MB from $4"
+
+       # Check last 1mb chunk of 2gb from 2.5GB file
+       grep -A6 "Test Case 7a " "$1" | grep -q "filesize=100000"
+       pass_fail "TC7: load of last 1mb chunk of 2GB from $4 size"
+       check_md5 "Test Case 7b " "$1" "$2" 4 \
+               "TC7: load of last 1mb chunk of 2GB from $4"
+
+       # Check first 1mb chunk after 2gb from 2.5GB file
+       grep -A6 "Test Case 8a " "$1" | grep -q "filesize=100000"
+       pass_fail "TC8: load 1st MB chunk after 2GB from $4 size"
+       check_md5 "Test Case 8b " "$1" "$2" 5 \
+               "TC8: load 1st MB chunk after 2GB from $4"
+
+       # Check 1mb chunk crossing the 2gb boundary from 2.5GB file
+       grep -A6 "Test Case 9a " "$1" | grep -q "filesize=100000"
+       pass_fail "TC9: load 1MB chunk crossing 2GB boundary from $4 size"
+       check_md5 "Test Case 9b " "$1" "$2" 6 \
+               "TC9: load 1MB chunk crossing 2GB boundary from $4"
+
+       # Check 2mb chunk from the last 1MB of 2.5GB file - generic failure case
+       grep -A6 "Test Case 10 " "$1" | grep -q 'Error: "filesize" not defined'
+       pass_fail "TC10: load 2MB from the last 1MB of $4 - generic fail case"
+
+       # Check 1mb chunk write
+       grep -A3 "Test Case 11a " "$1" | \
+               egrep -q '1048576 bytes written|update journal'
+       pass_fail "TC11: 1MB write to $5 - write succeeded"
+       check_md5 "Test Case 11b " "$1" "$2" 1 \
+               "TC11: 1MB write to $5 - content verified"
+       echo "** End $1"
+}
+
+# Takes in one parameter which is "fs" or "nonfs", which then dictates
+# if a fs test (size/load/save) or a nonfs test (fatread/extread) needs to
+# be performed.
+function test_fs_nonfs() {
+       echo "Creating files in $fs image if not already present."
+       create_files $IMAGE $MD5_FILE_FS
+
+       OUT_FILE="${OUT}.fs.${fs}.out"
+       test_image $IMAGE $fs $SMALL_FILE $BIG_FILE $1 "" \
+               > ${OUT_FILE}
+       check_results $OUT_FILE $MD5_FILE_FS $SMALL_FILE $BIG_FILE \
+               $WRITE_FILE
+       TOTAL_FAIL=$((TOTAL_FAIL + FAIL))
+       TOTAL_PASS=$((TOTAL_PASS + PASS))
+       echo "Summary: PASS: $PASS FAIL: $FAIL"
+       echo "--------------------------------------------"
+}
+
+# ********************
+# * End of functions *
+# ********************
+
+check_clean "$1"
+check_prereq
+compile_sandbox
+prepare_env
+
+# Track TOTAL_FAIL and TOTAL_PASS
+TOTAL_FAIL=0
+TOTAL_PASS=0
+
+# In each loop, for a given file system image, we test both the
+# fs command, like load/size/write, the file system specific command
+# like: ext4load/ext4size/ext4write and the sb load/ls/save commands.
+for fs in ext4 fat; do
+
+       echo "Creating $fs image if not already present."
+       IMAGE=${IMG}.${fs}.img
+       MD5_FILE_FS="${MD5_FILE}.${fs}"
+       create_image $IMAGE $fs
+
+       # sb commands test
+       echo "Creating files in $fs image if not already present."
+       create_files $IMAGE $MD5_FILE_FS
+
+       # Lets mount the image and test sb hostfs commands
+       mkdir -p "$MOUNT_DIR"
+       if [ "$fs" = "fat" ]; then
+               uid="uid=`id -u`"
+       else
+               uid=""
+       fi
+       sudo mount -o loop,rw,$uid "$IMAGE" "$MOUNT_DIR"
+       sudo chmod 777 "$MOUNT_DIR"
+
+       OUT_FILE="${OUT}.sb.${fs}.out"
+       test_image $IMAGE $fs $SMALL_FILE $BIG_FILE sb `pwd`/$MOUNT_DIR \
+               > ${OUT_FILE}
+       sudo umount "$MOUNT_DIR"
+       rmdir "$MOUNT_DIR"
+
+       check_results $OUT_FILE $MD5_FILE_FS $SMALL_FILE $BIG_FILE \
+               $WRITE_FILE
+       TOTAL_FAIL=$((TOTAL_FAIL + FAIL))
+       TOTAL_PASS=$((TOTAL_PASS + PASS))
+       echo "Summary: PASS: $PASS FAIL: $FAIL"
+       echo "--------------------------------------------"
+
+       test_fs_nonfs nonfs
+       test_fs_nonfs fs
+done
+
+echo "Total Summary: TOTAL PASS: $TOTAL_PASS TOTAL FAIL: $TOTAL_FAIL"
+echo "--------------------------------------------"
+if [ $TOTAL_FAIL -eq 0 ]; then
+       echo "PASSED"
+       exit 0
+else
+       echo "FAILED"
+       exit 1
+fi
index 56d46163760a43c160629060bf0627c09be28268..9da486b266ce079cd0b8621c66a8baf4f6b20b7a 100755 (executable)
@@ -11,6 +11,7 @@ clear
 
 COLOUR_RED="\33[31m"
 COLOUR_GREEN="\33[32m"
+COLOUR_ORANGE="\33[33m"
 COLOUR_DEFAULT="\33[0m"
 
 DIR=./
@@ -59,8 +60,15 @@ ums_test_file () {
     fi
 
     cp ./$1 $MNT_DIR
-    umount $MNT_DIR
 
+    while true; do
+       umount $MNT_DIR > /dev/null 2>&1
+       if [ $? -eq 0 ]; then
+           break
+       fi
+       printf "$COLOUR_ORANGE\tSleeping to wait for umount...$COLOUR_DEFAULT\n"
+       sleep 1
+    done
 
     echo -n "TX: "
     calculate_md5sum $1
index e7f0f8ff728f7c254109b2caff6bfeaf6b3dbfd3..9bc9fecf7b52cf5b67dd7b51c20dd34e5f62da4f 100644 (file)
@@ -4,6 +4,7 @@
 /fit_check_sign
 /fit_info
 /gen_eth_addr
+/ifdtool
 /img2srec
 /kwboot
 /dumpimage
index 3b95964fd15cb1494c64ea6de43058b87ebaa584..e549f8e63c9cbe0b1066a659efb16bd641601601 100644 (file)
@@ -126,6 +126,9 @@ hostprogs-$(CONFIG_EXYNOS5250) += mkexynosspl
 hostprogs-$(CONFIG_EXYNOS5420) += mkexynosspl
 HOSTCFLAGS_mkexynosspl.o := -pedantic
 
+ifdtool-objs := $(LIBFDT_OBJS) ifdtool.o
+hostprogs-$(CONFIG_X86) += ifdtool
+
 hostprogs-$(CONFIG_MX23) += mxsboot
 hostprogs-$(CONFIG_MX28) += mxsboot
 HOSTCFLAGS_mxsboot.o := -pedantic
@@ -157,7 +160,7 @@ HOSTCFLAGS_sha256.o := -pedantic
 #HOSTCFLAGS_mpc86x_clk.o := -pedantic
 
 quiet_cmd_wrap = WRAP    $@
-cmd_wrap = echo "\#include <$(srctree)/$(patsubst $(obj)/%,%,$@)>" >$@
+cmd_wrap = echo "\#include <../$(patsubst $(obj)/%,%,$@)>" >$@
 
 $(obj)/lib/%.c $(obj)/common/%.c:
        $(call cmd,wrap)
index 8ba19ec1030d8bf82a10ef1b8534ddb9c849955d..0f8ea200f54980b9f840b3df5b4206a6cd8193ca 100644 (file)
@@ -42,7 +42,7 @@ Theory of Operation
 Buildman is a builder. It is not make, although it runs make. It does not
 produce any useful output on the terminal while building, except for
 progress information (except with -v, see below). All the output (errors,
-warnings and binaries if you are ask for them) is stored in output
+warnings and binaries if you ask for them) is stored in output
 directories, which you can look at while the build is progressing, or when
 it is finished.
 
@@ -85,10 +85,10 @@ branch. Put all your commits in a branch, set the branch's upstream to a
 valid value, and all will be well. Otherwise buildman will perform random
 actions. Use -n to check what the random actions might be.
 
-If you just want to build the current source tree, leave off the -b flag.
-This will display results and errors as they happen. You can still look
-at them later using -s. Note that buildman will assume that the source
-has changed, and will build all specified boards in this case.
+If you just want to build the current source tree, leave off the -b flag
+and add -e. This will display results and errors as they happen. You can
+still look at them later using -se. Note that buildman will assume that the
+source has changed, and will build all specified boards in this case.
 
 Buildman is optimised for building many commits at once, for many boards.
 On multi-core machines, Buildman is fast because it uses most of the
@@ -121,7 +121,7 @@ You can also use -x to specifically exclude some boards. For example:
 means to build all arm boards except nvidia, freescale and anything ending
 with 'ball'.
 
-It is convenient to use the -n option to see whaat will be built based on
+It is convenient to use the -n option to see what will be built based on
 the subset given.
 
 Buildman does not store intermediate object files. It optionally copies
@@ -371,7 +371,7 @@ in an hour and 15 minutes. Use this time to buy a faster computer.
 
 
 To find out how the build went, ask for a summary with -s. You can do this
-either before the build completes (presumably in another terminal) or or
+either before the build completes (presumably in another terminal) or
 afterwards. Let's work through an example of how this is used:
 
 $ ./tools/buildman/buildman -b lcd9b -s
@@ -439,7 +439,7 @@ again.
 
 At commit 16, the error moves - you can see that the old error at line 120
 is fixed, but there is a new one at line 126. This is probably only because
-we added some code and moved the broken line father down the file.
+we added some code and moved the broken line further down the file.
 
 If many boards have the same error, then -e will display the error only
 once. This makes the output as concise as possible. To see which boards have
@@ -647,8 +647,8 @@ This shows that commit 19 has increased text size for arm (although only one
 board was built) and by 96 bytes for powerpc. This increase was offset in both
 cases by reductions in rodata and data/bss.
 
-Shown below the summary lines is the sizes for each board. Below each board
-is the sizes for each function. This information starts with:
+Shown below the summary lines are the sizes for each board. Below each board
+are the sizes for each function. This information starts with:
 
    add - number of functions added / removed
    grow - number of functions which grew / shrunk
@@ -693,9 +693,9 @@ Quick Sanity Check
 ==================
 
 If you have made changes and want to do a quick sanity check of the
-currently-checked-out source, run buildman without the -b flag. This will
-build the selected boards and display build status and errors as it runs
-(i.e. -v amd -e are enabled automatically).
+currently checked-out source, run buildman without the -b flag. This will
+build the selected boards and display build status as it runs (i.e. -v is
+enabled automatically). Use -e to see errors/warnings as well.
 
 
 Other options
@@ -752,7 +752,7 @@ an error and green indicating that a commit fixed an error. Use the -e
 flag to see the full errors and -l to see which boards caused which errors.
 
 If you really want to see build results as they happen, use -v when doing a
-build (-e will be enabled automatically).
+build (and -e to see the errors/warnings too).
 
 You don't need to stick around on that branch while buildman is running. It
 checks out its own copy of the source code, so you can change branches,
@@ -816,11 +816,10 @@ TODO
 
 This has mostly be written in my spare time as a response to my difficulties
 in testing large series of patches. Apart from tidying up there is quite a
-bit of scope for improvement. Things like better error diffs, easier access
-to log files, error display while building. Also it would be nice it buildman
-could 'hunt' for problems, perhaps by building a few boards for each arch,
-or checking commits for changed files and building only boards which use
-those files.
+bit of scope for improvement. Things like better error diffs and easier
+access to log files. Also it would be nice if buildman could 'hunt' for
+problems, perhaps by building a few boards for each arch, or checking
+commits for changed files and building only boards which use those files.
 
 
 Credits
index a9cf68a8016c4ea9c066ea9527986d56f0465266..bc4541cb3eb90b357e4608aca5ceae583eee1c05 100644 (file)
@@ -332,7 +332,7 @@ class BuilderThread(threading.Thread):
 
         # Now write the actual build output
         if keep_outputs:
-            patterns = ['u-boot', '*.bin', 'u-boot.dtb', '*.map',
+            patterns = ['u-boot', '*.bin', 'u-boot.dtb', '*.map', '*.img',
                         'include/autoconf.mk', 'spl/u-boot-spl',
                         'spl/u-boot-spl.bin']
             for pattern in patterns:
index 30d5b037f09b21a252d15ca8fc447c570de43138..1173eea78206dca66942380f49df22aa5004ae48 100644 (file)
@@ -125,7 +125,7 @@ static int get_config (char *);
 #endif
 static inline ulong getenvsize (void)
 {
-       ulong rc = CUR_ENVSIZE - sizeof(long);
+       ulong rc = CUR_ENVSIZE - sizeof(uint32_t);
 
        if (HaveRedundEnv)
                rc -= sizeof (char);
diff --git a/tools/ifdtool.c b/tools/ifdtool.c
new file mode 100644 (file)
index 0000000..590ccc9
--- /dev/null
@@ -0,0 +1,1169 @@
+/*
+ * ifdtool - Manage Intel Firmware Descriptor information
+ *
+ * Copyright 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ *
+ * From Coreboot project, but it got a serious code clean-up
+ * and a few new features
+ */
+
+#include <assert.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <libfdt.h>
+#include "ifdtool.h"
+
+#undef DEBUG
+
+#ifdef DEBUG
+#define debug(fmt, args...)    printf(fmt, ##args)
+#else
+#define debug(fmt, args...)
+#endif
+
+#define FD_SIGNATURE           0x0FF0A55A
+#define FLREG_BASE(reg)                ((reg & 0x00000fff) << 12);
+#define FLREG_LIMIT(reg)       (((reg & 0x0fff0000) >> 4) | 0xfff);
+
+enum input_file_type_t {
+       IF_normal,
+       IF_fdt,
+       IF_uboot,
+};
+
+struct input_file {
+       char *fname;
+       unsigned int addr;
+       enum input_file_type_t type;
+};
+
+/**
+ * find_fd() - Find the flash description in the ROM image
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ * @return pointer to structure, or NULL if not found
+ */
+static struct fdbar_t *find_fd(char *image, int size)
+{
+       uint32_t *ptr, *end;
+
+       /* Scan for FD signature */
+       for (ptr = (uint32_t *)image, end = ptr + size / 4; ptr < end; ptr++) {
+               if (*ptr == FD_SIGNATURE)
+                       break;
+       }
+
+       if (ptr == end) {
+               printf("No Flash Descriptor found in this image\n");
+               return NULL;
+       }
+
+       debug("Found Flash Descriptor signature at 0x%08lx\n",
+             (char *)ptr - image);
+
+       return (struct fdbar_t *)ptr;
+}
+
+/**
+ * get_region() - Get information about the selected region
+ *
+ * @frba:              Flash region list
+ * @region_type:       Type of region (0..MAX_REGIONS-1)
+ * @region:            Region information is written here
+ * @return 0 if OK, else -ve
+ */
+static int get_region(struct frba_t *frba, int region_type,
+                     struct region_t *region)
+{
+       if (region_type >= MAX_REGIONS) {
+               fprintf(stderr, "Invalid region type.\n");
+               return -1;
+       }
+
+       region->base = FLREG_BASE(frba->flreg[region_type]);
+       region->limit = FLREG_LIMIT(frba->flreg[region_type]);
+       region->size = region->limit - region->base + 1;
+
+       return 0;
+}
+
+static const char *region_name(int region_type)
+{
+       static const char *const regions[] = {
+               "Flash Descriptor",
+               "BIOS",
+               "Intel ME",
+               "GbE",
+               "Platform Data"
+       };
+
+       assert(region_type < MAX_REGIONS);
+
+       return regions[region_type];
+}
+
+static const char *region_filename(int region_type)
+{
+       static const char *const region_filenames[] = {
+               "flashregion_0_flashdescriptor.bin",
+               "flashregion_1_bios.bin",
+               "flashregion_2_intel_me.bin",
+               "flashregion_3_gbe.bin",
+               "flashregion_4_platform_data.bin"
+       };
+
+       assert(region_type < MAX_REGIONS);
+
+       return region_filenames[region_type];
+}
+
+static int dump_region(int num, struct frba_t *frba)
+{
+       struct region_t region;
+       int ret;
+
+       ret = get_region(frba, num, &region);
+       if (ret)
+               return ret;
+
+       printf("  Flash Region %d (%s): %08x - %08x %s\n",
+              num, region_name(num), region.base, region.limit,
+              region.size < 1 ? "(unused)" : "");
+
+       return ret;
+}
+
+static void dump_frba(struct frba_t *frba)
+{
+       int i;
+
+       printf("Found Region Section\n");
+       for (i = 0; i < MAX_REGIONS; i++) {
+               printf("FLREG%d:    0x%08x\n", i, frba->flreg[i]);
+               dump_region(i, frba);
+       }
+}
+
+static void decode_spi_frequency(unsigned int freq)
+{
+       switch (freq) {
+       case SPI_FREQUENCY_20MHZ:
+               printf("20MHz");
+               break;
+       case SPI_FREQUENCY_33MHZ:
+               printf("33MHz");
+               break;
+       case SPI_FREQUENCY_50MHZ:
+               printf("50MHz");
+               break;
+       default:
+               printf("unknown<%x>MHz", freq);
+       }
+}
+
+static void decode_component_density(unsigned int density)
+{
+       switch (density) {
+       case COMPONENT_DENSITY_512KB:
+               printf("512KiB");
+               break;
+       case COMPONENT_DENSITY_1MB:
+               printf("1MiB");
+               break;
+       case COMPONENT_DENSITY_2MB:
+               printf("2MiB");
+               break;
+       case COMPONENT_DENSITY_4MB:
+               printf("4MiB");
+               break;
+       case COMPONENT_DENSITY_8MB:
+               printf("8MiB");
+               break;
+       case COMPONENT_DENSITY_16MB:
+               printf("16MiB");
+               break;
+       default:
+               printf("unknown<%x>MiB", density);
+       }
+}
+
+static void dump_fcba(struct fcba_t *fcba)
+{
+       printf("\nFound Component Section\n");
+       printf("FLCOMP     0x%08x\n", fcba->flcomp);
+       printf("  Dual Output Fast Read Support:       %ssupported\n",
+              (fcba->flcomp & (1 << 30)) ? "" : "not ");
+       printf("  Read ID/Read Status Clock Frequency: ");
+       decode_spi_frequency((fcba->flcomp >> 27) & 7);
+       printf("\n  Write/Erase Clock Frequency:         ");
+       decode_spi_frequency((fcba->flcomp >> 24) & 7);
+       printf("\n  Fast Read Clock Frequency:           ");
+       decode_spi_frequency((fcba->flcomp >> 21) & 7);
+       printf("\n  Fast Read Support:                   %ssupported",
+              (fcba->flcomp & (1 << 20)) ? "" : "not ");
+       printf("\n  Read Clock Frequency:                ");
+       decode_spi_frequency((fcba->flcomp >> 17) & 7);
+       printf("\n  Component 2 Density:                 ");
+       decode_component_density((fcba->flcomp >> 3) & 7);
+       printf("\n  Component 1 Density:                 ");
+       decode_component_density(fcba->flcomp & 7);
+       printf("\n");
+       printf("FLILL      0x%08x\n", fcba->flill);
+       printf("  Invalid Instruction 3: 0x%02x\n",
+              (fcba->flill >> 24) & 0xff);
+       printf("  Invalid Instruction 2: 0x%02x\n",
+              (fcba->flill >> 16) & 0xff);
+       printf("  Invalid Instruction 1: 0x%02x\n",
+              (fcba->flill >> 8) & 0xff);
+       printf("  Invalid Instruction 0: 0x%02x\n",
+              fcba->flill & 0xff);
+       printf("FLPB       0x%08x\n", fcba->flpb);
+       printf("  Flash Partition Boundary Address: 0x%06x\n\n",
+              (fcba->flpb & 0xfff) << 12);
+}
+
+static void dump_fpsba(struct fpsba_t *fpsba)
+{
+       int i;
+
+       printf("Found PCH Strap Section\n");
+       for (i = 0; i < MAX_STRAPS; i++)
+               printf("PCHSTRP%-2d:  0x%08x\n", i, fpsba->pchstrp[i]);
+}
+
+static const char *get_enabled(int flag)
+{
+       return flag ? "enabled" : "disabled";
+}
+
+static void decode_flmstr(uint32_t flmstr)
+{
+       printf("  Platform Data Region Write Access: %s\n",
+              get_enabled(flmstr & (1 << 28)));
+       printf("  GbE Region Write Access:           %s\n",
+              get_enabled(flmstr & (1 << 27)));
+       printf("  Intel ME Region Write Access:      %s\n",
+              get_enabled(flmstr & (1 << 26)));
+       printf("  Host CPU/BIOS Region Write Access: %s\n",
+              get_enabled(flmstr & (1 << 25)));
+       printf("  Flash Descriptor Write Access:     %s\n",
+              get_enabled(flmstr & (1 << 24)));
+
+       printf("  Platform Data Region Read Access:  %s\n",
+              get_enabled(flmstr & (1 << 20)));
+       printf("  GbE Region Read Access:            %s\n",
+              get_enabled(flmstr & (1 << 19)));
+       printf("  Intel ME Region Read Access:       %s\n",
+              get_enabled(flmstr & (1 << 18)));
+       printf("  Host CPU/BIOS Region Read Access:  %s\n",
+              get_enabled(flmstr & (1 << 17)));
+       printf("  Flash Descriptor Read Access:      %s\n",
+              get_enabled(flmstr & (1 << 16)));
+
+       printf("  Requester ID:                      0x%04x\n\n",
+              flmstr & 0xffff);
+}
+
+static void dump_fmba(struct fmba_t *fmba)
+{
+       printf("Found Master Section\n");
+       printf("FLMSTR1:   0x%08x (Host CPU/BIOS)\n", fmba->flmstr1);
+       decode_flmstr(fmba->flmstr1);
+       printf("FLMSTR2:   0x%08x (Intel ME)\n", fmba->flmstr2);
+       decode_flmstr(fmba->flmstr2);
+       printf("FLMSTR3:   0x%08x (GbE)\n", fmba->flmstr3);
+       decode_flmstr(fmba->flmstr3);
+}
+
+static void dump_fmsba(struct fmsba_t *fmsba)
+{
+       int i;
+
+       printf("Found Processor Strap Section\n");
+       for (i = 0; i < 4; i++)
+               printf("????:      0x%08x\n", fmsba->data[0]);
+}
+
+static void dump_jid(uint32_t jid)
+{
+       printf("    SPI Component Device ID 1:          0x%02x\n",
+              (jid >> 16) & 0xff);
+       printf("    SPI Component Device ID 0:          0x%02x\n",
+              (jid >> 8) & 0xff);
+       printf("    SPI Component Vendor ID:            0x%02x\n",
+              jid & 0xff);
+}
+
+static void dump_vscc(uint32_t vscc)
+{
+       printf("    Lower Erase Opcode:                 0x%02x\n",
+              vscc >> 24);
+       printf("    Lower Write Enable on Write Status: 0x%02x\n",
+              vscc & (1 << 20) ? 0x06 : 0x50);
+       printf("    Lower Write Status Required:        %s\n",
+              vscc & (1 << 19) ? "Yes" : "No");
+       printf("    Lower Write Granularity:            %d bytes\n",
+              vscc & (1 << 18) ? 64 : 1);
+       printf("    Lower Block / Sector Erase Size:    ");
+       switch ((vscc >> 16) & 0x3) {
+       case 0:
+               printf("256 Byte\n");
+               break;
+       case 1:
+               printf("4KB\n");
+               break;
+       case 2:
+               printf("8KB\n");
+               break;
+       case 3:
+               printf("64KB\n");
+               break;
+       }
+
+       printf("    Upper Erase Opcode:                 0x%02x\n",
+              (vscc >> 8) & 0xff);
+       printf("    Upper Write Enable on Write Status: 0x%02x\n",
+              vscc & (1 << 4) ? 0x06 : 0x50);
+       printf("    Upper Write Status Required:        %s\n",
+              vscc & (1 << 3) ? "Yes" : "No");
+       printf("    Upper Write Granularity:            %d bytes\n",
+              vscc & (1 << 2) ? 64 : 1);
+       printf("    Upper Block / Sector Erase Size:    ");
+       switch (vscc & 0x3) {
+       case 0:
+               printf("256 Byte\n");
+               break;
+       case 1:
+               printf("4KB\n");
+               break;
+       case 2:
+               printf("8KB\n");
+               break;
+       case 3:
+               printf("64KB\n");
+               break;
+       }
+}
+
+static void dump_vtba(struct vtba_t *vtba, int vtl)
+{
+       int i;
+       int num = (vtl >> 1) < 8 ? (vtl >> 1) : 8;
+
+       printf("ME VSCC table:\n");
+       for (i = 0; i < num; i++) {
+               printf("  JID%d:  0x%08x\n", i, vtba->entry[i].jid);
+               dump_jid(vtba->entry[i].jid);
+               printf("  VSCC%d: 0x%08x\n", i, vtba->entry[i].vscc);
+               dump_vscc(vtba->entry[i].vscc);
+       }
+       printf("\n");
+}
+
+static void dump_oem(uint8_t *oem)
+{
+       int i, j;
+       printf("OEM Section:\n");
+       for (i = 0; i < 4; i++) {
+               printf("%02x:", i << 4);
+               for (j = 0; j < 16; j++)
+                       printf(" %02x", oem[(i<<4)+j]);
+               printf("\n");
+       }
+       printf("\n");
+}
+
+/**
+ * dump_fd() - Display a dump of the full flash description
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ * @return 0 if OK, -1 on error
+ */
+static int dump_fd(char *image, int size)
+{
+       struct fdbar_t *fdb = find_fd(image, size);
+
+       if (!fdb)
+               return -1;
+
+       printf("FLMAP0:    0x%08x\n", fdb->flmap0);
+       printf("  NR:      %d\n", (fdb->flmap0 >> 24) & 7);
+       printf("  FRBA:    0x%x\n", ((fdb->flmap0 >> 16) & 0xff) << 4);
+       printf("  NC:      %d\n", ((fdb->flmap0 >> 8) & 3) + 1);
+       printf("  FCBA:    0x%x\n", ((fdb->flmap0) & 0xff) << 4);
+
+       printf("FLMAP1:    0x%08x\n", fdb->flmap1);
+       printf("  ISL:     0x%02x\n", (fdb->flmap1 >> 24) & 0xff);
+       printf("  FPSBA:   0x%x\n", ((fdb->flmap1 >> 16) & 0xff) << 4);
+       printf("  NM:      %d\n", (fdb->flmap1 >> 8) & 3);
+       printf("  FMBA:    0x%x\n", ((fdb->flmap1) & 0xff) << 4);
+
+       printf("FLMAP2:    0x%08x\n", fdb->flmap2);
+       printf("  PSL:     0x%04x\n", (fdb->flmap2 >> 8) & 0xffff);
+       printf("  FMSBA:   0x%x\n", ((fdb->flmap2) & 0xff) << 4);
+
+       printf("FLUMAP1:   0x%08x\n", fdb->flumap1);
+       printf("  Intel ME VSCC Table Length (VTL):        %d\n",
+              (fdb->flumap1 >> 8) & 0xff);
+       printf("  Intel ME VSCC Table Base Address (VTBA): 0x%06x\n\n",
+              (fdb->flumap1 & 0xff) << 4);
+       dump_vtba((struct vtba_t *)
+                       (image + ((fdb->flumap1 & 0xff) << 4)),
+                       (fdb->flumap1 >> 8) & 0xff);
+       dump_oem((uint8_t *)image + 0xf00);
+       dump_frba((struct frba_t *)(image + (((fdb->flmap0 >> 16) & 0xff)
+                       << 4)));
+       dump_fcba((struct fcba_t *)(image + (((fdb->flmap0) & 0xff) << 4)));
+       dump_fpsba((struct fpsba_t *)
+                       (image + (((fdb->flmap1 >> 16) & 0xff) << 4)));
+       dump_fmba((struct fmba_t *)(image + (((fdb->flmap1) & 0xff) << 4)));
+       dump_fmsba((struct fmsba_t *)(image + (((fdb->flmap2) & 0xff) << 4)));
+
+       return 0;
+}
+
+/**
+ * write_regions() - Write each region from an image to its own file
+ *
+ * The filename to use in each case is fixed - see region_filename()
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ * @return 0 if OK, -ve on error
+ */
+static int write_regions(char *image, int size)
+{
+       struct fdbar_t *fdb;
+       struct frba_t *frba;
+       int ret = 0;
+       int i;
+
+       fdb =  find_fd(image, size);
+       if (!fdb)
+               return -1;
+
+       frba = (struct frba_t *)(image + (((fdb->flmap0 >> 16) & 0xff) << 4));
+
+       for (i = 0; i < MAX_REGIONS; i++) {
+               struct region_t region;
+               int region_fd;
+
+               ret = get_region(frba, i, &region);
+               if (ret)
+                       return ret;
+               dump_region(i, frba);
+               if (region.size == 0)
+                       continue;
+               region_fd = open(region_filename(i),
+                                O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR |
+                                S_IWUSR | S_IRGRP | S_IROTH);
+               if (write(region_fd, image + region.base, region.size) !=
+                               region.size) {
+                       perror("Error while writing");
+                       ret = -1;
+               }
+               close(region_fd);
+       }
+
+       return ret;
+}
+
+static int perror_fname(const char *fmt, const char *fname)
+{
+       char msg[strlen(fmt) + strlen(fname) + 1];
+
+       sprintf(msg, fmt, fname);
+       perror(msg);
+
+       return -1;
+}
+
+/**
+ * write_image() - Write the image to a file
+ *
+ * @filename:  Filename to use for the image
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ * @return 0 if OK, -ve on error
+ */
+static int write_image(char *filename, char *image, int size)
+{
+       int new_fd;
+
+       debug("Writing new image to %s\n", filename);
+
+       new_fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR |
+                     S_IWUSR | S_IRGRP | S_IROTH);
+       if (new_fd < 0)
+               return perror_fname("Could not open file '%s'", filename);
+       if (write(new_fd, image, size) != size)
+               return perror_fname("Could not write file '%s'", filename);
+       close(new_fd);
+
+       return 0;
+}
+
+/**
+ * set_spi_frequency() - Set the SPI frequency to use when booting
+ *
+ * Several frequencies are supported, some of which work with fast devices.
+ * For SPI emulators, the slowest (SPI_FREQUENCY_20MHZ) is often used. The
+ * Intel boot system uses this information somehow on boot.
+ *
+ * The image is updated with the supplied value
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ * @freq:      SPI frequency to use
+ */
+static void set_spi_frequency(char *image, int size, enum spi_frequency freq)
+{
+       struct fdbar_t *fdb = find_fd(image, size);
+       struct fcba_t *fcba;
+
+       fcba = (struct fcba_t *)(image + (((fdb->flmap0) & 0xff) << 4));
+
+       /* clear bits 21-29 */
+       fcba->flcomp &= ~0x3fe00000;
+       /* Read ID and Read Status Clock Frequency */
+       fcba->flcomp |= freq << 27;
+       /* Write and Erase Clock Frequency */
+       fcba->flcomp |= freq << 24;
+       /* Fast Read Clock Frequency */
+       fcba->flcomp |= freq << 21;
+}
+
+/**
+ * set_em100_mode() - Set a SPI frequency that will work with Dediprog EM100
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ */
+static void set_em100_mode(char *image, int size)
+{
+       struct fdbar_t *fdb = find_fd(image, size);
+       struct fcba_t *fcba;
+
+       fcba = (struct fcba_t *)(image + (((fdb->flmap0) & 0xff) << 4));
+       fcba->flcomp &= ~(1 << 30);
+       set_spi_frequency(image, size, SPI_FREQUENCY_20MHZ);
+}
+
+/**
+ * lock_descriptor() - Lock the NE descriptor so it cannot be updated
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ */
+static void lock_descriptor(char *image, int size)
+{
+       struct fdbar_t *fdb = find_fd(image, size);
+       struct fmba_t *fmba;
+
+       /*
+        * TODO: Dynamically take Platform Data Region and GbE Region into
+        * account.
+        */
+       fmba = (struct fmba_t *)(image + (((fdb->flmap1) & 0xff) << 4));
+       fmba->flmstr1 = 0x0a0b0000;
+       fmba->flmstr2 = 0x0c0d0000;
+       fmba->flmstr3 = 0x08080118;
+}
+
+/**
+ * unlock_descriptor() - Lock the NE descriptor so it can be updated
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ */
+static void unlock_descriptor(char *image, int size)
+{
+       struct fdbar_t *fdb = find_fd(image, size);
+       struct fmba_t *fmba;
+
+       fmba = (struct fmba_t *)(image + (((fdb->flmap1) & 0xff) << 4));
+       fmba->flmstr1 = 0xffff0000;
+       fmba->flmstr2 = 0xffff0000;
+       fmba->flmstr3 = 0x08080118;
+}
+
+/**
+ * open_for_read() - Open a file for reading
+ *
+ * @fname:     Filename to open
+ * @sizep:     Returns file size in bytes
+ * @return 0 if OK, -1 on error
+ */
+int open_for_read(const char *fname, int *sizep)
+{
+       int fd = open(fname, O_RDONLY);
+       struct stat buf;
+
+       if (fd == -1)
+               return perror_fname("Could not open file '%s'", fname);
+       if (fstat(fd, &buf) == -1)
+               return perror_fname("Could not stat file '%s'", fname);
+       *sizep = buf.st_size;
+       debug("File %s is %d bytes\n", fname, *sizep);
+
+       return fd;
+}
+
+/**
+ * inject_region() - Add a file to an image region
+ *
+ * This puts a file into a particular region of the flash. Several pre-defined
+ * regions are used.
+ *
+ * @image:             Pointer to image
+ * @size:              Size of image in bytes
+ * @region_type:       Region where the file should be added
+ * @region_fname:      Filename to add to the image
+ * @return 0 if OK, -ve on error
+ */
+int inject_region(char *image, int size, int region_type, char *region_fname)
+{
+       struct fdbar_t *fdb = find_fd(image, size);
+       struct region_t region;
+       struct frba_t *frba;
+       int region_size;
+       int offset = 0;
+       int region_fd;
+       int ret;
+
+       if (!fdb)
+               exit(EXIT_FAILURE);
+       frba = (struct frba_t *)(image + (((fdb->flmap0 >> 16) & 0xff) << 4));
+
+       ret = get_region(frba, region_type, &region);
+       if (ret)
+               return -1;
+       if (region.size <= 0xfff) {
+               fprintf(stderr, "Region %s is disabled in target. Not injecting.\n",
+                       region_name(region_type));
+               return -1;
+       }
+
+       region_fd = open_for_read(region_fname, &region_size);
+       if (region_fd < 0)
+               return region_fd;
+
+       if ((region_size > region.size) ||
+           ((region_type != 1) && (region_size > region.size))) {
+               fprintf(stderr, "Region %s is %d(0x%x) bytes. File is %d(0x%x)  bytes. Not injecting.\n",
+                       region_name(region_type), region.size,
+                       region.size, region_size, region_size);
+               return -1;
+       }
+
+       if ((region_type == 1) && (region_size < region.size)) {
+               fprintf(stderr, "Region %s is %d(0x%x) bytes. File is %d(0x%x) bytes. Padding before injecting.\n",
+                       region_name(region_type), region.size,
+                       region.size, region_size, region_size);
+               offset = region.size - region_size;
+               memset(image + region.base, 0xff, offset);
+       }
+
+       if (size < region.base + offset + region_size) {
+               fprintf(stderr, "Output file is too small. (%d < %d)\n",
+                       size, region.base + offset + region_size);
+               return -1;
+       }
+
+       if (read(region_fd, image + region.base + offset, region_size)
+                                                       != region_size) {
+               perror("Could not read file");
+               return -1;
+       }
+
+       close(region_fd);
+
+       debug("Adding %s as the %s section\n", region_fname,
+             region_name(region_type));
+
+       return 0;
+}
+
+/**
+ * write_data() - Write some raw data into a region
+ *
+ * This puts a file into a particular place in the flash, ignoring the
+ * regions. Be careful not to overwrite something important.
+ *
+ * @image:             Pointer to image
+ * @size:              Size of image in bytes
+ * @addr:              x86 ROM address to put file. The ROM ends at
+ *                     0xffffffff so use an address relative to that. For an
+ *                     8MB ROM the start address is 0xfff80000.
+ * @write_fname:       Filename to add to the image
+ * @return number of bytes written if OK, -ve on error
+ */
+static int write_data(char *image, int size, unsigned int addr,
+                     const char *write_fname)
+{
+       int write_fd, write_size;
+       int offset;
+
+       write_fd = open_for_read(write_fname, &write_size);
+       if (write_fd < 0)
+               return write_fd;
+
+       offset = (uint32_t)(addr + size);
+       debug("Writing %s to offset %#x\n", write_fname, offset);
+
+       if (offset < 0 || offset + write_size > size) {
+               fprintf(stderr, "Output file is too small. (%d < %d)\n",
+                       size, offset + write_size);
+               return -1;
+       }
+
+       if (read(write_fd, image + offset, write_size) != write_size) {
+               perror("Could not read file");
+               return -1;
+       }
+
+       close(write_fd);
+
+       return write_size;
+}
+
+/**
+ * write_uboot() - Write U-Boot, device tree and microcode pointer
+ *
+ * This writes U-Boot into a place in the flash, followed by its device tree.
+ * The microcode pointer is written so that U-Boot can find the microcode in
+ * the device tree very early in boot.
+ *
+ * @image:     Pointer to image
+ * @size:      Size of image in bytes
+ * @uboot:     Input file information for u-boot.bin
+ * @fdt:       Input file information for u-boot.dtb
+ * @ucode_ptr: Address in U-Boot where the microcode pointer should be placed
+ * @return 0 if OK, -ve on error
+ */
+static int write_uboot(char *image, int size, struct input_file *uboot,
+                      struct input_file *fdt, unsigned int ucode_ptr)
+{
+       const void *blob;
+       const char *data;
+       int uboot_size;
+       uint32_t *ptr;
+       int data_size;
+       int offset;
+       int node;
+       int ret;
+
+       uboot_size = write_data(image, size, uboot->addr, uboot->fname);
+       if (uboot_size < 0)
+               return uboot_size;
+       fdt->addr = uboot->addr + uboot_size;
+       debug("U-Boot size %#x, FDT at %#x\n", uboot_size, fdt->addr);
+       ret = write_data(image, size, fdt->addr, fdt->fname);
+       if (ret < 0)
+               return ret;
+
+       if (ucode_ptr) {
+               blob = (void *)image + (uint32_t)(fdt->addr + size);
+               debug("DTB at %lx\n", (char *)blob - image);
+               node = fdt_node_offset_by_compatible(blob, 0,
+                                                    "intel,microcode");
+               if (node < 0) {
+                       debug("No microcode found in FDT: %s\n",
+                             fdt_strerror(node));
+                       return -ENOENT;
+               }
+               data = fdt_getprop(blob, node, "data", &data_size);
+               if (!data) {
+                       debug("No microcode data found in FDT: %s\n",
+                             fdt_strerror(data_size));
+                       return -ENOENT;
+               }
+               offset = (uint32_t)(ucode_ptr + size);
+               ptr = (void *)image + offset;
+               ptr[0] = (data - image) - size;
+               ptr[1] = data_size;
+               debug("Wrote microcode pointer at %x: addr=%x, size=%x\n",
+                     ucode_ptr, ptr[0], ptr[1]);
+       }
+
+       return 0;
+}
+
+static void print_version(void)
+{
+       printf("ifdtool v%s -- ", IFDTOOL_VERSION);
+       printf("Copyright (C) 2014 Google Inc.\n\n");
+       printf("SPDX-License-Identifier:        GPL-2.0+\n");
+}
+
+static void print_usage(const char *name)
+{
+       printf("usage: %s [-vhdix?] <filename> [<outfile>]\n", name);
+       printf("\n"
+              "   -d | --dump:                      dump intel firmware descriptor\n"
+              "   -x | --extract:                   extract intel fd modules\n"
+              "   -i | --inject <region>:<module>   inject file <module> into region <region>\n"
+              "   -w | --write <addr>:<file>        write file to appear at memory address <addr>\n"
+              "                                     multiple files can be written simultaneously\n"
+              "   -s | --spifreq <20|33|50>         set the SPI frequency\n"
+              "   -e | --em100                      set SPI frequency to 20MHz and disable\n"
+              "                                     Dual Output Fast Read Support\n"
+              "   -l | --lock                       Lock firmware descriptor and ME region\n"
+              "   -u | --unlock                     Unlock firmware descriptor and ME region\n"
+              "   -r | --romsize                    Specify ROM size\n"
+              "   -D | --write-descriptor <file>    Write descriptor at base\n"
+              "   -c | --create                     Create a new empty image\n"
+              "   -v | --version:                   print the version\n"
+              "   -h | --help:                      print this help\n\n"
+              "<region> is one of Descriptor, BIOS, ME, GbE, Platform\n"
+              "\n");
+}
+
+/**
+ * get_two_words() - Convert a string into two words separated by :
+ *
+ * The supplied string is split at ':', two substrings are allocated and
+ * returned.
+ *
+ * @str:       String to split
+ * @firstp:    Returns first string
+ * @secondp:   Returns second string
+ * @return 0 if OK, -ve if @str does not have a :
+ */
+static int get_two_words(const char *str, char **firstp, char **secondp)
+{
+       const char *p;
+
+       p = strchr(str, ':');
+       if (!p)
+               return -1;
+       *firstp = strdup(str);
+       (*firstp)[p - str] = '\0';
+       *secondp = strdup(p + 1);
+
+       return 0;
+}
+
+int main(int argc, char *argv[])
+{
+       int opt, option_index = 0;
+       int mode_dump = 0, mode_extract = 0, mode_inject = 0;
+       int mode_spifreq = 0, mode_em100 = 0, mode_locked = 0;
+       int mode_unlocked = 0, mode_write = 0, mode_write_descriptor = 0;
+       int create = 0;
+       char *region_type_string = NULL, *inject_fname = NULL;
+       char *desc_fname = NULL, *addr_str = NULL;
+       int region_type = -1, inputfreq = 0;
+       enum spi_frequency spifreq = SPI_FREQUENCY_20MHZ;
+       struct input_file input_file[WRITE_MAX], *ifile, *fdt = NULL;
+       unsigned char wr_idx, wr_num = 0;
+       int rom_size = -1;
+       bool write_it;
+       char *filename;
+       char *outfile = NULL;
+       struct stat buf;
+       int size = 0;
+       unsigned int ucode_ptr = 0;
+       bool have_uboot = false;
+       int bios_fd;
+       char *image;
+       int ret;
+       static struct option long_options[] = {
+               {"create", 0, NULL, 'c'},
+               {"dump", 0, NULL, 'd'},
+               {"descriptor", 1, NULL, 'D'},
+               {"em100", 0, NULL, 'e'},
+               {"extract", 0, NULL, 'x'},
+               {"fdt", 1, NULL, 'f'},
+               {"inject", 1, NULL, 'i'},
+               {"lock", 0, NULL, 'l'},
+               {"microcode", 1, NULL, 'm'},
+               {"romsize", 1, NULL, 'r'},
+               {"spifreq", 1, NULL, 's'},
+               {"unlock", 0, NULL, 'u'},
+               {"uboot", 1, NULL, 'U'},
+               {"write", 1, NULL, 'w'},
+               {"version", 0, NULL, 'v'},
+               {"help", 0, NULL, 'h'},
+               {0, 0, 0, 0}
+       };
+
+       while ((opt = getopt_long(argc, argv, "cdD:ef:hi:lm:r:s:uU:vw:x?",
+                                 long_options, &option_index)) != EOF) {
+               switch (opt) {
+               case 'c':
+                       create = 1;
+                       break;
+               case 'd':
+                       mode_dump = 1;
+                       break;
+               case 'D':
+                       mode_write_descriptor = 1;
+                       desc_fname = optarg;
+                       break;
+               case 'e':
+                       mode_em100 = 1;
+                       break;
+               case 'i':
+                       if (get_two_words(optarg, &region_type_string,
+                                         &inject_fname)) {
+                               print_usage(argv[0]);
+                               exit(EXIT_FAILURE);
+                       }
+                       if (!strcasecmp("Descriptor", region_type_string))
+                               region_type = 0;
+                       else if (!strcasecmp("BIOS", region_type_string))
+                               region_type = 1;
+                       else if (!strcasecmp("ME", region_type_string))
+                               region_type = 2;
+                       else if (!strcasecmp("GbE", region_type_string))
+                               region_type = 3;
+                       else if (!strcasecmp("Platform", region_type_string))
+                               region_type = 4;
+                       if (region_type == -1) {
+                               fprintf(stderr, "No such region type: '%s'\n\n",
+                                       region_type_string);
+                               print_usage(argv[0]);
+                               exit(EXIT_FAILURE);
+                       }
+                       mode_inject = 1;
+                       break;
+               case 'l':
+                       mode_locked = 1;
+                       break;
+               case 'm':
+                       ucode_ptr = strtoul(optarg, NULL, 0);
+                       break;
+               case 'r':
+                       rom_size = strtol(optarg, NULL, 0);
+                       debug("ROM size %d\n", rom_size);
+                       break;
+               case 's':
+                       /* Parse the requested SPI frequency */
+                       inputfreq = strtol(optarg, NULL, 0);
+                       switch (inputfreq) {
+                       case 20:
+                               spifreq = SPI_FREQUENCY_20MHZ;
+                               break;
+                       case 33:
+                               spifreq = SPI_FREQUENCY_33MHZ;
+                               break;
+                       case 50:
+                               spifreq = SPI_FREQUENCY_50MHZ;
+                               break;
+                       default:
+                               fprintf(stderr, "Invalid SPI Frequency: %d\n",
+                                       inputfreq);
+                               print_usage(argv[0]);
+                               exit(EXIT_FAILURE);
+                       }
+                       mode_spifreq = 1;
+                       break;
+               case 'u':
+                       mode_unlocked = 1;
+                       break;
+               case 'v':
+                       print_version();
+                       exit(EXIT_SUCCESS);
+                       break;
+               case 'w':
+               case 'U':
+               case 'f':
+                       ifile = &input_file[wr_num];
+                       mode_write = 1;
+                       if (wr_num < WRITE_MAX) {
+                               if (get_two_words(optarg, &addr_str,
+                                                 &ifile->fname)) {
+                                       print_usage(argv[0]);
+                                       exit(EXIT_FAILURE);
+                               }
+                               ifile->addr = strtol(optarg, NULL, 0);
+                               ifile->type = opt == 'f' ? IF_fdt :
+                                       opt == 'U' ? IF_uboot : IF_normal;
+                               if (ifile->type == IF_fdt)
+                                       fdt = ifile;
+                               else if (ifile->type == IF_uboot)
+                                       have_uboot = true;
+                               wr_num++;
+                       } else {
+                               fprintf(stderr,
+                                       "The number of files to write simultaneously exceeds the limitation (%d)\n",
+                                       WRITE_MAX);
+                       }
+                       break;
+               case 'x':
+                       mode_extract = 1;
+                       break;
+               case 'h':
+               case '?':
+               default:
+                       print_usage(argv[0]);
+                       exit(EXIT_SUCCESS);
+                       break;
+               }
+       }
+
+       if (mode_locked == 1 && mode_unlocked == 1) {
+               fprintf(stderr, "Locking/Unlocking FD and ME are mutually exclusive\n");
+               exit(EXIT_FAILURE);
+       }
+
+       if (mode_inject == 1 && mode_write == 1) {
+               fprintf(stderr, "Inject/Write are mutually exclusive\n");
+               exit(EXIT_FAILURE);
+       }
+
+       if ((mode_dump + mode_extract + mode_inject +
+               (mode_spifreq | mode_em100 | mode_unlocked |
+                mode_locked)) > 1) {
+               fprintf(stderr, "You may not specify more than one mode.\n\n");
+               print_usage(argv[0]);
+               exit(EXIT_FAILURE);
+       }
+
+       if ((mode_dump + mode_extract + mode_inject + mode_spifreq +
+            mode_em100 + mode_locked + mode_unlocked + mode_write +
+            mode_write_descriptor) == 0 && !create) {
+               fprintf(stderr, "You need to specify a mode.\n\n");
+               print_usage(argv[0]);
+               exit(EXIT_FAILURE);
+       }
+
+       if (create && rom_size == -1) {
+               fprintf(stderr, "You need to specify a rom size when creating.\n\n");
+               exit(EXIT_FAILURE);
+       }
+
+       if (optind + 1 != argc) {
+               fprintf(stderr, "You need to specify a file.\n\n");
+               print_usage(argv[0]);
+               exit(EXIT_FAILURE);
+       }
+
+       if (have_uboot && !fdt) {
+               fprintf(stderr,
+                       "You must supply a device tree file for U-Boot\n\n");
+               print_usage(argv[0]);
+               exit(EXIT_FAILURE);
+       }
+
+       filename = argv[optind];
+       if (optind + 2 != argc)
+               outfile = argv[optind + 1];
+
+       if (create)
+               bios_fd = open(filename, O_WRONLY | O_CREAT, 0666);
+       else
+               bios_fd = open(filename, outfile ? O_RDONLY : O_RDWR);
+
+       if (bios_fd == -1) {
+               perror("Could not open file");
+               exit(EXIT_FAILURE);
+       }
+
+       if (!create) {
+               if (fstat(bios_fd, &buf) == -1) {
+                       perror("Could not stat file");
+                       exit(EXIT_FAILURE);
+               }
+               size = buf.st_size;
+       }
+
+       debug("File %s is %d bytes\n", filename, size);
+
+       if (rom_size == -1)
+               rom_size = size;
+
+       image = malloc(rom_size);
+       if (!image) {
+               printf("Out of memory.\n");
+               exit(EXIT_FAILURE);
+       }
+
+       memset(image, '\xff', rom_size);
+       if (!create && read(bios_fd, image, size) != size) {
+               perror("Could not read file");
+               exit(EXIT_FAILURE);
+       }
+       if (size != rom_size) {
+               debug("ROM size changed to %d bytes\n", rom_size);
+               size = rom_size;
+       }
+
+       write_it = true;
+       ret = 0;
+       if (mode_dump) {
+               ret = dump_fd(image, size);
+               write_it = false;
+       }
+
+       if (mode_extract) {
+               ret = write_regions(image, size);
+               write_it = false;
+       }
+
+       if (mode_write_descriptor)
+               ret = write_data(image, size, -size, desc_fname);
+
+       if (mode_inject)
+               ret = inject_region(image, size, region_type, inject_fname);
+
+       if (mode_write) {
+               for (wr_idx = 0; wr_idx < wr_num; wr_idx++) {
+                       ifile = &input_file[wr_idx];
+                       if (ifile->type == IF_fdt) {
+                               continue;
+                       } else if (ifile->type == IF_uboot) {
+                               ret = write_uboot(image, size, ifile, fdt,
+                                                 ucode_ptr);
+                       } else {
+                               ret = write_data(image, size, ifile->addr,
+                                        ifile->fname);
+                       }
+                       if (ret < 0)
+                               break;
+               }
+       }
+
+       if (mode_spifreq)
+               set_spi_frequency(image, size, spifreq);
+
+       if (mode_em100)
+               set_em100_mode(image, size);
+
+       if (mode_locked)
+               lock_descriptor(image, size);
+
+       if (mode_unlocked)
+               unlock_descriptor(image, size);
+
+       if (write_it) {
+               if (outfile) {
+                       ret = write_image(outfile, image, size);
+               } else {
+                       if (lseek(bios_fd, 0, SEEK_SET)) {
+                               perror("Error while seeking");
+                               ret = -1;
+                       }
+                       if (write(bios_fd, image, size) != size) {
+                               perror("Error while writing");
+                               ret = -1;
+                       }
+               }
+       }
+
+       free(image);
+       close(bios_fd);
+
+       return ret < 0 ? 1 : 0;
+}
diff --git a/tools/ifdtool.h b/tools/ifdtool.h
new file mode 100644 (file)
index 0000000..0d0cc36
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * ifdtool - Manage Intel Firmware Descriptor information
+ *
+ * Copyright (C) 2011 The ChromiumOS Authors.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ *
+ * From Coreboot project
+ */
+
+#include <stdint.h>
+
+#define __packed       __attribute__((packed))
+
+#define IFDTOOL_VERSION "1.1-U-Boot"
+
+#define WRITE_MAX      16
+
+enum spi_frequency {
+       SPI_FREQUENCY_20MHZ = 0,
+       SPI_FREQUENCY_33MHZ = 1,
+       SPI_FREQUENCY_50MHZ = 4,
+};
+
+enum component_density {
+       COMPONENT_DENSITY_512KB = 0,
+       COMPONENT_DENSITY_1MB   = 1,
+       COMPONENT_DENSITY_2MB   = 2,
+       COMPONENT_DENSITY_4MB   = 3,
+       COMPONENT_DENSITY_8MB   = 4,
+       COMPONENT_DENSITY_16MB  = 5,
+};
+
+/* flash descriptor */
+struct __packed fdbar_t {
+       uint32_t flvalsig;
+       uint32_t flmap0;
+       uint32_t flmap1;
+       uint32_t flmap2;
+       uint8_t  reserved[0xefc - 0x20];
+       uint32_t flumap1;
+};
+
+#define MAX_REGIONS    5
+
+/* regions */
+struct __packed frba_t {
+       uint32_t flreg[MAX_REGIONS];
+};
+
+/* component section */
+struct __packed fcba_t {
+       uint32_t flcomp;
+       uint32_t flill;
+       uint32_t flpb;
+};
+
+#define MAX_STRAPS     18
+
+/* pch strap */
+struct __packed fpsba_t {
+       uint32_t pchstrp[MAX_STRAPS];
+};
+
+/* master */
+struct __packed fmba_t {
+       uint32_t flmstr1;
+       uint32_t flmstr2;
+       uint32_t flmstr3;
+};
+
+/* processor strap */
+struct __packed fmsba_t {
+       uint32_t data[8];
+};
+
+/* ME VSCC */
+struct vscc_t {
+       uint32_t jid;
+       uint32_t vscc;
+};
+
+struct vtba_t {
+       /* Actual number of entries specified in vtl */
+       struct vscc_t entry[8];
+};
+
+struct region_t {
+       int base, limit, size;
+};
index faba23860f5471ecd1ebdc751c5182984b1beab2..526b7d490d5c38cca59c6abfd12ac3f15f3931ab 100644 (file)
@@ -587,7 +587,7 @@ static void imximage_set_header(void *ptr, struct stat *sbuf, int ifd,
         *
         * The remaining fraction of a block bytes would not be loaded!
         */
-       *header_size_ptr = ROUND(sbuf->st_size, 4096);
+       *header_size_ptr = ROUND((sbuf->st_size + imximage_ivt_offset), 4096);
 
        if (csf_ptr && imximage_csf_size) {
                *csf_ptr = params->ep - imximage_init_loadsize +
index 1120e9b3729024fc851ddba5a3410dcc92cf29d1..807d46668be78ee90b1103b2e5b56460dbc6afe0 100644 (file)
@@ -12,6 +12,7 @@
  */
 
 #include "imagetool.h"
+#include <limits.h>
 #include <image.h>
 #include <stdint.h>
 #include "kwbimage.h"
@@ -324,7 +325,7 @@ static void *image_create_v0(size_t *imagesz, struct image_tool_params *params,
        main_hdr = image;
 
        /* Fill in the main header */
-       main_hdr->blocksize = payloadsz + sizeof(uint32_t);
+       main_hdr->blocksize = payloadsz + sizeof(uint32_t) - headersz;
        main_hdr->srcaddr   = headersz;
        main_hdr->ext       = has_ext;
        main_hdr->destaddr  = params->addr;
@@ -396,13 +397,20 @@ static size_t image_headersz_v1(struct image_tool_params *params,
 
                ret = stat(binarye->binary.file, &s);
                if (ret < 0) {
-                       char *cwd = get_current_dir_name();
+                       char cwd[PATH_MAX];
+                       char *dir = cwd;
+
+                       memset(cwd, 0, sizeof(cwd));
+                       if (!getcwd(cwd, sizeof(cwd))) {
+                               dir = "current working directory";
+                               perror("getcwd() failed");
+                       }
+
                        fprintf(stderr,
                                "Didn't find the file '%s' in '%s' which is mandatory to generate the image\n"
                                "This file generally contains the DDR3 training code, and should be extracted from an existing bootable\n"
                                "image for your board. See 'kwbimage -x' to extract it from an existing image.\n",
-                               binarye->binary.file, cwd);
-                       free(cwd);
+                               binarye->binary.file, dir);
                        return 0;
                }
 
@@ -546,13 +554,14 @@ static int image_create_config_parse_oneline(char *line,
                el->version = atoi(value);
        } else if (!strcmp(keyword, "BOOT_FROM")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
-               el->type = IMAGE_CFG_BOOT_FROM;
-               el->bootfrom = image_boot_mode_id(value);
-               if (el->bootfrom < 0) {
+               int ret = image_boot_mode_id(value);
+               if (ret < 0) {
                        fprintf(stderr,
                                "Invalid boot media '%s'\n", value);
                        return -1;
                }
+               el->type = IMAGE_CFG_BOOT_FROM;
+               el->bootfrom = ret;
        } else if (!strcmp(keyword, "NAND_BLKSZ")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                el->type = IMAGE_CFG_NAND_BLKSZ;
@@ -564,13 +573,14 @@ static int image_create_config_parse_oneline(char *line,
                        strtoul(value, NULL, 16);
        } else if (!strcmp(keyword, "NAND_ECC_MODE")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
-               el->type = IMAGE_CFG_NAND_ECC_MODE;
-               el->nandeccmode = image_nand_ecc_mode_id(value);
-               if (el->nandeccmode < 0) {
+               int ret = image_nand_ecc_mode_id(value);
+               if (ret < 0) {
                        fprintf(stderr,
                                "Invalid NAND ECC mode '%s'\n", value);
                        return -1;
                }
+               el->type = IMAGE_CFG_NAND_ECC_MODE;
+               el->nandeccmode = ret;
        } else if (!strcmp(keyword, "NAND_PAGE_SIZE")) {
                char *value = strtok_r(NULL, deliminiters, &saveptr);
                el->type = IMAGE_CFG_NAND_PAGESZ;
@@ -720,7 +730,7 @@ static void kwbimage_set_header(void *ptr, struct stat *sbuf, int ifd,
        FILE *fcfg;
        void *image = NULL;
        int version;
-       size_t headersz;
+       size_t headersz = 0;
        uint32_t checksum;
        int ret;
        int size;
@@ -752,14 +762,25 @@ static void kwbimage_set_header(void *ptr, struct stat *sbuf, int ifd,
        }
 
        version = image_get_version();
-       /* Fallback to version 0 is no version is provided in the cfg file */
-       if (version == -1)
-               version = 0;
-
-       if (version == 0)
+       switch (version) {
+               /*
+                * Fallback to version 0 if no version is provided in the
+                * cfg file
+                */
+       case -1:
+       case 0:
                image = image_create_v0(&headersz, params, sbuf->st_size);
-       else if (version == 1)
+               break;
+
+       case 1:
                image = image_create_v1(&headersz, params, sbuf->st_size);
+               break;
+
+       default:
+               fprintf(stderr, "Unsupported version %d\n", version);
+               free(image_cfg);
+               exit(EXIT_FAILURE);
+       }
 
        if (!image) {
                fprintf(stderr, "Could not create image\n");
@@ -792,8 +813,8 @@ static void kwbimage_print_header(const void *ptr)
 
        printf("Image Type:   MVEBU Boot from %s Image\n",
               image_boot_mode_name(mhdr->blockid));
-       printf("Data Size:    ");
        printf("Image version:%d\n", image_version((void *)ptr));
+       printf("Data Size:    ");
        genimg_print_size(mhdr->blocksize - sizeof(uint32_t));
        printf("Load Address: %08x\n", mhdr->destaddr);
        printf("Entry Point:  %08x\n", mhdr->execaddr);
@@ -816,7 +837,8 @@ static int kwbimage_verify_header(unsigned char *ptr, int image_size,
 
        main_hdr = (void *)ptr;
        checksum = image_checksum8(ptr,
-                                  sizeof(struct main_hdr_v0));
+                                  sizeof(struct main_hdr_v0)
+                                  - sizeof(uint8_t));
        if (checksum != main_hdr->checksum)
                return -FDT_ERR_BADSTRUCTURE;
 
@@ -824,7 +846,8 @@ static int kwbimage_verify_header(unsigned char *ptr, int image_size,
        if (image_version((void *)ptr) == 0) {
                ext_hdr = (void *)ptr + sizeof(struct main_hdr_v0);
                checksum = image_checksum8(ext_hdr,
-                                          sizeof(struct ext_hdr_v0));
+                                          sizeof(struct ext_hdr_v0)
+                                          - sizeof(uint8_t));
                if (checksum != ext_hdr->checksum)
                        return -FDT_ERR_BADSTRUCTURE;
        }
diff --git a/tools/microcode-tool b/tools/microcode-tool
new file mode 120000 (symlink)
index 0000000..8be8507
--- /dev/null
@@ -0,0 +1 @@
+microcode-tool.py
\ No newline at end of file
diff --git a/tools/microcode-tool.py b/tools/microcode-tool.py
new file mode 100755 (executable)
index 0000000..003716d
--- /dev/null
@@ -0,0 +1,253 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2014 Google, Inc
+#
+# SPDX-License-Identifier:      GPL-2.0+
+#
+# Intel microcode update tool
+
+from optparse import OptionParser
+import os
+import re
+import struct
+import sys
+
+MICROCODE_DIR = 'arch/x86/dts/microcode'
+
+class Microcode:
+    """Holds information about the microcode for a particular model of CPU.
+
+    Attributes:
+        name:  Name of the CPU this microcode is for, including any version
+                   information (e.g. 'm12206a7_00000029')
+        model: Model code string (this is cpuid(1).eax, e.g. '206a7')
+        words: List of hex words containing the microcode. The first 16 words
+                   are the public header.
+    """
+    def __init__(self, name, data):
+        self.name = name
+        # Convert data into a list of hex words
+        self.words = []
+        for value in ''.join(data).split(','):
+            hexval = value.strip()
+            if hexval:
+                self.words.append(int(hexval, 0))
+
+        # The model is in the 4rd hex word
+        self.model = '%x' % self.words[3]
+
+def ParseFile(fname):
+    """Parse a micrcode.dat file and return the component parts
+
+    Args:
+        fname: Filename to parse
+    Returns:
+        3-Tuple:
+            date:         String containing date from the file's header
+            license_text: List of text lines for the license file
+            microcodes:   List of Microcode objects from the file
+    """
+    re_date = re.compile('/\* *(.* [0-9]{4}) *\*/$')
+    re_license = re.compile('/[^-*+] *(.*)$')
+    re_name = re.compile('/\* *(.*)\.inc *\*/', re.IGNORECASE)
+    microcodes = {}
+    license_text = []
+    date = ''
+    data = []
+    name = None
+    with open(fname) as fd:
+        for line in fd:
+            line = line.rstrip()
+            m_date = re_date.match(line)
+            m_license = re_license.match(line)
+            m_name = re_name.match(line)
+            if m_name:
+                if name:
+                    microcodes[name] = Microcode(name, data)
+                name = m_name.group(1).lower()
+                data = []
+            elif m_license:
+                license_text.append(m_license.group(1))
+            elif m_date:
+                date = m_date.group(1)
+            else:
+                data.append(line)
+    if name:
+        microcodes[name] = Microcode(name, data)
+    return date, license_text, microcodes
+
+def List(date, microcodes, model):
+    """List the available microcode chunks
+
+    Args:
+        date:           Date of the microcode file
+        microcodes:     Dict of Microcode objects indexed by name
+        model:          Model string to search for, or None
+    """
+    print 'Date: %s' % date
+    if model:
+        mcode_list, tried = FindMicrocode(microcodes, model.lower())
+        print 'Matching models %s:' % (', '.join(tried))
+    else:
+        print 'All models:'
+        mcode_list = [microcodes[m] for m in microcodes.keys()]
+    for mcode in mcode_list:
+        print '%-20s: model %s' % (mcode.name, mcode.model)
+
+def FindMicrocode(microcodes, model):
+    """Find all the microcode chunks which match the given model.
+
+    This model is something like 306a9 (the value returned in eax from
+    cpuid(1) when running on Intel CPUs). But we allow a partial match,
+    omitting the last 1 or two characters to allow many families to have the
+    same microcode.
+
+    If the model name is ambiguous we return a list of matches.
+
+    Args:
+        microcodes: Dict of Microcode objects indexed by name
+        model:      String containing model name to find
+    Returns:
+        Tuple:
+            List of matching Microcode objects
+            List of abbreviations we tried
+    """
+    # Allow a full name to be used
+    mcode = microcodes.get(model)
+    if mcode:
+        return [mcode], []
+
+    tried = []
+    found = []
+    for i in range(3):
+        abbrev = model[:-i] if i else model
+        tried.append(abbrev)
+        for mcode in microcodes.values():
+            if mcode.model.startswith(abbrev):
+                found.append(mcode)
+        if found:
+            break
+    return found, tried
+
+def CreateFile(date, license_text, mcode, outfile):
+    """Create a microcode file in U-Boot's .dtsi format
+
+    Args:
+        date:       String containing date of original microcode file
+        license:    List of text lines for the license file
+        mcode:      Microcode object to write
+        outfile:    Filename to write to ('-' for stdout)
+    """
+    out = '''/*%s
+ * ---
+ * This is a device tree fragment. Use #include to add these properties to a
+ * node.
+ *
+ * Date: %s
+ */
+
+compatible = "intel,microcode";
+intel,header-version = <%d>;
+intel,update-revision = <%#x>;
+intel,date-code = <%#x>;
+intel,processor-signature = <%#x>;
+intel,checksum = <%#x>;
+intel,loader-revision = <%d>;
+intel,processor-flags = <%#x>;
+
+/* The first 48-bytes are the public header which repeats the above data */
+data = <%s
+\t>;'''
+    words = ''
+    for i in range(len(mcode.words)):
+        if not (i & 3):
+            words += '\n'
+        val = mcode.words[i]
+        # Change each word so it will be little-endian in the FDT
+        # This data is needed before RAM is available on some platforms so we
+        # cannot do an endianness swap on boot.
+        val = struct.unpack("<I", struct.pack(">I", val))[0]
+        words += '\t%#010x' % val
+
+    # Take care to avoid adding a space before a tab
+    text = ''
+    for line in license_text:
+        if line[0] == '\t':
+            text += '\n *' + line
+        else:
+            text += '\n * ' + line
+    args = [text, date]
+    args += [mcode.words[i] for i in range(7)]
+    args.append(words)
+    if outfile == '-':
+        print out % tuple(args)
+    else:
+        if not outfile:
+            if not os.path.exists(MICROCODE_DIR):
+                print >> sys.stderr, "Creating directory '%s'" % MICROCODE_DIR
+                os.makedirs(MICROCODE_DIR)
+            outfile = os.path.join(MICROCODE_DIR, mcode.name + '.dtsi')
+            print >> sys.stderr, "Writing microcode for '%s' to '%s'" % (
+                     mcode.name, outfile)
+        with open(outfile, 'w') as fd:
+            print >> fd, out % tuple(args)
+
+def MicrocodeTool():
+    """Run the microcode tool"""
+    commands = 'create,license,list'.split(',')
+    parser = OptionParser()
+    parser.add_option('-d', '--mcfile', type='string', action='store',
+                    help='Name of microcode.dat file')
+    parser.add_option('-m', '--model', type='string', action='store',
+                    help='Model name to extract')
+    parser.add_option('-o', '--outfile', type='string', action='store',
+                    help='Filename to use for output (- for stdout), default is'
+                    ' %s/<name>.dtsi' % MICROCODE_DIR)
+    parser.usage += """ command
+
+    Process an Intel microcode file (use -h for help). Commands:
+
+       create     Create microcode .dtsi file for a model
+       list       List available models in microcode file
+       license    Print the license
+
+    Typical usage:
+
+       ./tools/microcode-tool -d microcode.dat -m 306a create
+
+    This will find the appropriate file and write it to %s.""" % MICROCODE_DIR
+
+    (options, args) = parser.parse_args()
+    if not args:
+        parser.error('Please specify a command')
+    cmd = args[0]
+    if cmd not in commands:
+        parser.error("Unknown command '%s'" % cmd)
+
+    if not options.mcfile:
+        parser.error('You must specify a microcode file')
+    date, license_text, microcodes = ParseFile(options.mcfile)
+
+    if cmd == 'list':
+        List(date, microcodes, options.model)
+    elif cmd == 'license':
+        print '\n'.join(license_text)
+    elif cmd == 'create':
+        if not options.model:
+            parser.error('You must specify a model to create')
+        model = options.model.lower()
+        mcode_list, tried = FindMicrocode(microcodes, model)
+        if not mcode_list:
+            parser.error("Unknown model '%s' (%s) - try 'list' to list" %
+                        (model, ', '.join(tried)))
+        if len(mcode_list) > 1:
+            parser.error("Ambiguous model '%s' (%s) matched %s - try 'list' "
+                        "to list or specify a particular file" %
+                        (model, ', '.join(tried),
+                        ', '.join([m.name for m in mcode_list])))
+        CreateFile(date, license_text, mcode_list[0], options.outfile)
+    else:
+        parser.error("Unknown command '%s'" % cmd)
+
+if __name__ == "__main__":
+    MicrocodeTool()
index bbd3041e36f4e5a2ac909fbe101ecfdd91b6345b..6971b91314fc1707ef78fc2bf2714d13b8f5cb81 100644 (file)
@@ -37,6 +37,8 @@ static void usage(const char *exec_name)
               "\t\tkey1=value1\n"
               "\t\tkey2=value2\n"
               "\t\t...\n"
+              "\tEmpty lines are skipped, and lines with a # in the first\n"
+              "\tcolumn are treated as comments (also skipped).\n"
               "\t-r : the environment has multiple copies in flash\n"
               "\t-b : the target is big endian (default is little endian)\n"
               "\t-p <byte> : fill the image with <byte> bytes instead of 0xff bytes\n"
@@ -221,10 +223,9 @@ int main(int argc, char **argv)
        /* Replace newlines separating variables with \0 */
        for (fp = 0, ep = 0 ; fp < filesize ; fp++) {
                if (filebuf[fp] == '\n') {
-                       if (ep == 0) {
+                       if (fp == 0 || filebuf[fp-1] == '\n') {
                                /*
-                                * Newlines at the beginning of the file ?
-                                * Ignore them.
+                                * Skip empty lines.
                                 */
                                continue;
                        } else if (filebuf[fp-1] == '\\') {
@@ -240,6 +241,10 @@ int main(int argc, char **argv)
                                /* End of a variable */
                                envptr[ep++] = '\0';
                        }
+               } else if ((fp == 0 || filebuf[fp-1] == '\n') && filebuf[fp] == '#') {
+                       /* Comment, skip the line. */
+                       while (++fp < filesize && filebuf[fp] != '\n')
+                       continue;
                } else {
                        envptr[ep++] = filebuf[fp];
                }
index 81c7f2d4c553f525022613d5a223618e1b5aaf15..04beefe05cbfd87575b9e23816a69034742b505c 100644 (file)
@@ -125,7 +125,7 @@ struct sb_image_ctx {
        unsigned int                    in_section:1;
        unsigned int                    in_dcd:1;
        /* Image configuration */
-       unsigned int                    verbose_boot:1;
+       unsigned int                    display_progress:1;
        unsigned int                    silent_dump:1;
        char                            *input_filename;
        char                            *output_filename;
@@ -1308,8 +1308,8 @@ static int sb_prefill_image_header(struct sb_image_ctx *ictx)
                sizeof(struct sb_sections_header) / SB_BLOCK_SIZE;
        hdr->timestamp_us = sb_get_timestamp() * 1000000;
 
-       /* FIXME -- add proper config option */
-       hdr->flags = ictx->verbose_boot ? SB_IMAGE_FLAG_VERBOSE : 0,
+       hdr->flags = ictx->display_progress ?
+               SB_IMAGE_FLAG_DISPLAY_PROGRESS : 0;
 
        /* FIXME -- We support only default key */
        hdr->key_count = 1;
@@ -1416,7 +1416,7 @@ static int sb_parse_line(struct sb_image_ctx *ictx, struct sb_cmd_list *cmd)
 {
        char *tok;
        char *line = cmd->cmd;
-       char *rptr;
+       char *rptr = NULL;
        int ret;
 
        /* Analyze the identifier on this line first. */
@@ -1428,6 +1428,12 @@ static int sb_parse_line(struct sb_image_ctx *ictx, struct sb_cmd_list *cmd)
 
        cmd->cmd = rptr;
 
+       /* set DISPLAY_PROGRESS flag */
+       if (!strcmp(tok, "DISPLAYPROGRESS")) {
+               ictx->display_progress = 1;
+               return 0;
+       }
+
        /* DCD */
        if (!strcmp(tok, "DCD")) {
                ictx->in_section = 0;
@@ -1681,10 +1687,11 @@ static int sb_verify_image_header(struct sb_image_ctx *ictx,
                 ntohs(hdr->component_version.minor),
                 ntohs(hdr->component_version.revision));
 
-       if (hdr->flags & ~SB_IMAGE_FLAG_VERBOSE)
+       if (hdr->flags & ~SB_IMAGE_FLAGS_MASK)
                ret = -EINVAL;
        soprintf(ictx, "%s Image flags:                  %s\n", stat[!!ret],
-                hdr->flags & SB_IMAGE_FLAG_VERBOSE ? "Verbose_boot" : "");
+                hdr->flags & SB_IMAGE_FLAG_DISPLAY_PROGRESS ?
+                "Display_progress" : "");
        if (ret)
                return ret;
 
@@ -2287,7 +2294,6 @@ static int mxsimage_generate(struct image_tool_params *params,
 
        ctx.cfg_filename = params->imagename;
        ctx.output_filename = params->imagefile;
-       ctx.verbose_boot = 1;
 
        ret = sb_build_tree_from_cfg(&ctx);
        if (ret)
index 6cd59d2dbbef530d2be9ada466d16547a058d45a..88f72eb9d1fd58dd24fa6c5d362cffe3e2dea76e 100644 (file)
@@ -81,8 +81,9 @@ struct sb_boot_image_header {
 #define        SB_VERSION_MAJOR        1
 #define        SB_VERSION_MINOR        1
 
-/* Enable to HTLLC verbose boot report. */
-#define SB_IMAGE_FLAG_VERBOSE  (1 << 0)
+/* Enable to HTLLC boot report. */
+#define SB_IMAGE_FLAG_DISPLAY_PROGRESS (1 << 0)
+#define SB_IMAGE_FLAGS_MASK SB_IMAGE_FLAG_DISPLAY_PROGRESS
 
 struct sb_key_dictionary_key {
        /* The CBC-MAC of image and sections header. */
index 6e6e801314956a28fe3566d535412c2bb2b8a9b2..2a799ab4b64eb9214c1a38b317d782cd5fe1e0ea 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012 Freescale Semiconductor, Inc.
+ * Copyright 2012-2014 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -8,6 +8,10 @@
 #include "pblimage.h"
 #include "pbl_crc32.h"
 
+#define roundup(x, y)          ((((x) + ((y) - 1)) / (y)) * (y))
+#define PBL_ACS_CONT_CMD       0x81000000
+#define PBL_ADDR_24BIT_MASK    0x00ffffff
+
 /*
  * Initialize to an invalid value.
  */
@@ -22,6 +26,13 @@ static int pbl_size;
 static char *fname = "Unknown";
 static int lineno = -1;
 static struct pbl_header pblimage_header;
+static int uboot_size;
+static int arch_flag;
+
+static uint32_t pbl_cmd_initaddr;
+static uint32_t pbi_crc_cmd1;
+static uint32_t pbi_crc_cmd2;
+static uint32_t pbl_end_cmd[4];
 
 static union
 {
@@ -38,20 +49,6 @@ static union
  * start offset by subtracting the size of the u-boot image from the
  * top of the allowable 24-bit range.
  */
-static void init_next_pbl_cmd(FILE *fp_uboot)
-{
-       struct stat st;
-       int fd = fileno(fp_uboot);
-
-       if (fstat(fd, &st) == -1) {
-               printf("Error: Could not determine u-boot image size. %s\n",
-                       strerror(errno));
-               exit(EXIT_FAILURE);
-       }
-
-       next_pbl_cmd = 0x82000000 - st.st_size;
-}
-
 static void generate_pbl_cmd(void)
 {
        uint32_t val = next_pbl_cmd;
@@ -66,11 +63,15 @@ static void generate_pbl_cmd(void)
 
 static void pbl_fget(size_t size, FILE *stream)
 {
-       unsigned char c;
+       unsigned char c = 0xff;
        int c_temp;
 
-       while (size && (c_temp = fgetc(stream)) != EOF) {
-               c = (unsigned char)c_temp;
+       while (size) {
+               c_temp = fgetc(stream);
+               if (c_temp != EOF)
+                       c = (unsigned char)c_temp;
+               else if ((c_temp == EOF) && (arch_flag == IH_ARCH_ARM))
+                       c = 0xff;
                *pmem_buf++ = c;
                pbl_size++;
                size--;
@@ -80,8 +81,8 @@ static void pbl_fget(size_t size, FILE *stream)
 /* load split u-boot with PBI command 81xxxxxx. */
 static void load_uboot(FILE *fp_uboot)
 {
-       init_next_pbl_cmd(fp_uboot);
-       while (next_pbl_cmd < 0x82000000) {
+       next_pbl_cmd = pbl_cmd_initaddr - uboot_size;
+       while (next_pbl_cmd < pbl_cmd_initaddr) {
                generate_pbl_cmd();
                pbl_fget(64, fp_uboot);
        }
@@ -154,8 +155,6 @@ static uint32_t reverse_byte(uint32_t val)
 /* write end command and crc command to memory. */
 static void add_end_cmd(void)
 {
-       uint32_t pbl_end_cmd[4] = {0x09138000, 0x00000000,
-               0x091380c0, 0x00000000};
        uint32_t crc32_pbl;
        int i;
        unsigned char *p = (unsigned char *)&pbl_end_cmd;
@@ -172,8 +171,8 @@ static void add_end_cmd(void)
 
        /* Add PBI CRC command. */
        *pmem_buf++ = 0x08;
-       *pmem_buf++ = 0x13;
-       *pmem_buf++ = 0x80;
+       *pmem_buf++ = pbi_crc_cmd1;
+       *pmem_buf++ = pbi_crc_cmd2;
        *pmem_buf++ = 0x40;
        pbl_size += 4;
 
@@ -184,17 +183,6 @@ static void add_end_cmd(void)
        *pmem_buf++ = (crc32_pbl >> 8) & 0xff;
        *pmem_buf++ = (crc32_pbl) & 0xff;
        pbl_size += 4;
-
-       if ((pbl_size % 16) != 0) {
-               for (i = 0; i < 8; i++) {
-                       *pmem_buf++ = 0x0;
-                       pbl_size++;
-               }
-       }
-       if ((pbl_size % 16 != 0)) {
-               printf("Error: Bad size of image file\n");
-               exit(EXIT_FAILURE);
-       }
 }
 
 void pbl_load_uboot(int ifd, struct image_tool_params *params)
@@ -268,12 +256,64 @@ static void pblimage_set_header(void *ptr, struct stat *sbuf, int ifd,
        /*nothing need to do, pbl_load_uboot takes care of whole file. */
 }
 
+int pblimage_check_params(struct image_tool_params *params)
+{
+       FILE *fp_uboot;
+       int fd;
+       struct stat st;
+
+       if (!params)
+               return EXIT_FAILURE;
+
+       fp_uboot = fopen(params->datafile, "r");
+       if (fp_uboot == NULL) {
+               printf("Error: %s open failed\n", params->datafile);
+               exit(EXIT_FAILURE);
+       }
+       fd = fileno(fp_uboot);
+
+       if (fstat(fd, &st) == -1) {
+               printf("Error: Could not determine u-boot image size. %s\n",
+                      strerror(errno));
+               exit(EXIT_FAILURE);
+       }
+
+       /* For the variable size, we need to pad it to 64 byte boundary */
+       uboot_size = roundup(st.st_size, 64);
+
+       if (params->arch == IH_ARCH_ARM) {
+               arch_flag = IH_ARCH_ARM;
+               pbi_crc_cmd1 = 0x61;
+               pbi_crc_cmd2 = 0;
+               pbl_cmd_initaddr = params->addr & PBL_ADDR_24BIT_MASK;
+               pbl_cmd_initaddr |= PBL_ACS_CONT_CMD;
+               pbl_cmd_initaddr |= uboot_size;
+               pbl_end_cmd[0] = 0x09610000;
+               pbl_end_cmd[1] = 0x00000000;
+               pbl_end_cmd[2] = 0x096100c0;
+               pbl_end_cmd[3] = 0x00000000;
+       } else if (params->arch == IH_ARCH_PPC) {
+               arch_flag = IH_ARCH_PPC;
+               pbi_crc_cmd1 = 0x13;
+               pbi_crc_cmd2 = 0x80;
+               pbl_cmd_initaddr = 0x82000000;
+               pbl_end_cmd[0] = 0x09138000;
+               pbl_end_cmd[1] = 0x00000000;
+               pbl_end_cmd[2] = 0x091380c0;
+               pbl_end_cmd[3] = 0x00000000;
+       }
+
+       next_pbl_cmd = pbl_cmd_initaddr;
+       return 0;
+};
+
 /* pblimage parameters */
 static struct image_type_params pblimage_params = {
        .name           = "Freescale PBL Boot Image support",
        .header_size    = sizeof(struct pbl_header),
        .hdr            = (void *)&pblimage_header,
        .check_image_type = pblimage_check_image_types,
+       .check_params   = pblimage_check_params,
        .verify_header  = pblimage_verify_header,
        .print_header   = pblimage_print_header,
        .set_header     = pblimage_set_header,